ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGFkMTRjMDIuLmJmYWI0YTAgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogZTE5OWEyNzJjY2RhYzVhOGMwNzNkNDY5MGY2MGMxM2UwYjZkODZiMCB2My40LjZyYzEKIDVkNGI2YTU3ZDVmZDc1NjRiZjczZjNkYjBlNDZmZTVlZWIwMGJjZDggdjMuNS4wYTEKIDAzMzdiZDdlYmNiNjU1OWQ2OTY3OWJjNzAyNTA1OWFkMWNlNGY0MzIgdjMuNS4wYTIKQEAgLTE2NywzICsxNjgsMTQgQEAKIDY4ZmVlYzY0ODhiMjYzMjdhODVhNjM0NjA1ZGQyOGVjYTRkYWE1ZjEgdjMuNS4ycmMxCiA0ZGVmMmEyOTAxYTU2MThlYTQ1YmNjOGYyYTE0MTFlZjMzYWYxOGFkIHYzLjUuMgogZGU1MzBkN2YyMWMwMzk4YmIyYTJiNjc3MTZlMDYzOGU1ZmFkZjcyNyB2My41LjNyYzEKKzU4OTZkYTM3MmZiMDQ0ZTM4NTk1ZmI3NDQ5NWRlMWUxZTdjOGZiM2MgdjMuNi4wYTEKKzM3ODg5MzQyMzU1MjIzZTJmYzE0MzhkZTNkYzdmZmNkNjI1YzYwZjcgdjMuNi4wYTIKK2YzZWRmMTNkYzMzOWI4OTQyYWU2YjMwOTc3MWFiMTk3ZGQ4Y2U2ZmEgdjMuNi4wYTMKKzAxN2NmMjYwOTM2YjQ0NDc4OGM5YjY3MWQxOTViN2JmZDgzZGJkMjUgdjMuNi4wYTQKKzViMGNhNGVkNWUyZjA2NjlkNzZlY2U3ZWY5NzVjNTQ0NTgwZjEyYjQgdjMuNi4wYjEKK2I5ZmFkYzdkMWMzZjljM2M3N2YzMmYzNWFmYmUxYTFjYzM4MDcwZTYgdjMuNi4wYjIKKzgzNDVlMDY2YzBlZDcxM2MzZTUxMGNiYzhmYWZjMWMzOGQ2ZDMwNmIgdjMuNi4wYjMKKzE4NDk2YWJkYjNkNWMyNzMwYTY1OWI3NDdhODkyNjFiMjIxOWZlY2YgdjMuNi4wYjQKKzI5YTI3M2VlZTlhNTIzZWUxNzhmNmE2NmM0YWM5ZDMxN2M4ZmM4NGYgdjMuNi4wcmMxCis4MDBhNjdmNzgwNmRlNDVhN2FiZDUyNzMzNTllNzA0YmYxNDdjMDc5IHYzLjYuMHJjMgorNDFkZjc5MjYzYTExZjI0MjlkMWRkMGNmZTEyNTUzZGUzZGNiNTUwOCB2My42LjAKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCAxMGMzMjg4Li45MWY5MzdmIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xNTMsNyArMTUzLDcgQEAKIAljcCAtcFBSIGJ1aWxkL2VwdWIvUHl0aG9uLmVwdWIgZGlzdC9weXRob24tJChESVNUVkVSU0lPTiktZG9jcy5lcHViCiAKIGNoZWNrOgotCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzCisJJChQWVRIT04pIHRvb2xzL3JzdGxpbnQucHkgLWkgdG9vbHMgLWkgdmVudgogCiBzZXJ2ZToKIAkuLi9Ub29scy9zY3JpcHRzL3NlcnZlLnB5IGJ1aWxkL2h0bWwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggMTEyMzk3Mi4uZThlN2UwZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTIyMyw4ICsyMjMsNyBAQAogICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAgd2lsbCB1c2UgdGhpcyBsb2NhdGlvbiBhcyB0aGUgYnVmZmVyIGFuZCBpbnRlcnByZXQgdGhlCiAgICBpbml0aWFsIHZhbHVlIG9mICpcKmJ1ZmZlcl9sZW5ndGgqIGFzIHRoZSBidWZmZXIgc2l6ZS4gIEl0IHdpbGwgdGhlbiBjb3B5IHRoZQogICAgZW5jb2RlZCBkYXRhIGludG8gdGhlIGJ1ZmZlciBhbmQgTlVMLXRlcm1pbmF0ZSBpdC4gIElmIHRoZSBidWZmZXIgaXMgbm90IGxhcmdlCi0gICBlbm91Z2gsIGEgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHNldC4KLSAgIE5vdGU6IHN0YXJ0aW5nIGZyb20gUHl0aG9uIDMuNiBhIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgc2V0LgorICAgZW5vdWdoLCBhIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgc2V0LgogCiAgICBJbiBib3RoIGNhc2VzLCAqXCpidWZmZXJfbGVuZ3RoKiBpcyBzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgZW5jb2RlZCBkYXRhCiAgICB3aXRob3V0IHRoZSB0cmFpbGluZyBOVUwgYnl0ZS4KQEAgLTI2NiwxNSArMjY1LDEyIEBACiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIHdpdGhvdXQKICAgIG92ZXJmbG93IGNoZWNraW5nLgogCi1gYExgYCAoOmNsYXNzOmBpbnRgKSBbUFlfTE9OR19MT05HXQotICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgLiAgVGhpcyBmb3JtYXQgaXMgb25seQotICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgbG9uZyBsb25nYCAob3IgOmM6dHlwZTpgX2ludDY0YCBvbgotICAgV2luZG93cykuCitgYExgYCAoOmNsYXNzOmBpbnRgKSBbbG9uZyBsb25nXQorICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgLgogCi1gYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQorYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIGxvbmcgbG9uZ10KICAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYAotICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4gIFRoaXMgZm9ybWF0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0Ci0gICBzdXBwb3J0IDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICB3aXRob3V0IG92ZXJmbG93IGNoZWNraW5nLgogCiBgYG5gYCAoOmNsYXNzOmBpbnRgKSBbUHlfc3NpemVfdF0KICAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgUHlfc3NpemVfdGAuCkBAIC00MjQsOCArNDIwLDE1IEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjb25zdCBjaGFyICpmb3JtYXQsIGNoYXIgKmtleXdvcmRzW10sIC4uLikKIAogICAgUGFyc2UgdGhlIHBhcmFtZXRlcnMgb2YgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGJvdGggcG9zaXRpb25hbCBhbmQga2V5d29yZAotICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzOyBvbiBmYWlsdXJlLCBpdAotICAgcmV0dXJucyBmYWxzZSBhbmQgcmFpc2VzIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24uCisgICBwYXJhbWV0ZXJzIGludG8gbG9jYWwgdmFyaWFibGVzLiAgVGhlICprZXl3b3JkcyogYXJndW1lbnQgaXMgYQorICAgKk5VTEwqLXRlcm1pbmF0ZWQgYXJyYXkgb2Yga2V5d29yZCBwYXJhbWV0ZXIgbmFtZXMuICBFbXB0eSBuYW1lcyBkZW5vdGUKKyAgIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIDxwb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyPmAuCisgICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBmYWxzZSBhbmQgcmFpc2VzIHRoZQorICAgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgOnJlZjpgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKKyAgICAgIDxwb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyPmAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjb25zdCBjaGFyICpmb3JtYXQsIGNoYXIgKmtleXdvcmRzW10sIHZhX2xpc3QgdmFyZ3MpCkBAIC01ODgsMTUgKzU5MSwxMSBAQAogICAgYGBrYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIGxvbmddCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAotICAgYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuIE9ubHkgYXZhaWxhYmxlCi0gICAgICBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgICAgIFdpbmRvd3MpLgorICAgYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5Ci0gICAgICBhdmFpbGFibGUgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvcgotICAgICAgOmM6dHlwZTpgdW5zaWduZWQgX2ludDY0YCBvbiBXaW5kb3dzKS4KKyAgIGBgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCiAgICBgYG5gYCAoOmNsYXNzOmBpbnRgKSBbUHlfc3NpemVfdF0KICAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgIHRvIGEgUHl0aG9uIGludGVnZXIuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKaW5kZXggYzM4OTg4OC4uMDM3Yjg1YyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdApAQCAtMzA2LDYgKzMwNiwxMyBAQAogICAgOm1vZDpgd2FybmluZ3NgIG1vZHVsZSBhbmQgdGhlIDpvcHRpb246YC1XYCBvcHRpb24gaW4gdGhlIGNvbW1hbmQgbGluZQogICAgZG9jdW1lbnRhdGlvbi4gIFRoZXJlIGlzIG5vIEMgQVBJIGZvciB3YXJuaW5nIGNvbnRyb2wuCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCisKKyAgIE11Y2ggbGlrZSA6YzpmdW5jOmBQeUVycl9TZXRJbXBvcnRFcnJvcmAgYnV0IHRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvcgorICAgc3BlY2lmeWluZyBhIHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCB0byByYWlzZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnkpCiAKQEAgLTMzNCw2ICszNDEsMTQgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfUmVzb3VyY2VXYXJuaW5nKFB5T2JqZWN0ICpzb3VyY2UsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorCisgICBGdW5jdGlvbiBzaW1pbGFyIHRvIDpjOmZ1bmM6YFB5RXJyX1dhcm5Gb3JtYXRgLCBidXQgKmNhdGVnb3J5KiBpcworICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBhbmQgcGFzcyAqc291cmNlKiB0byA6ZnVuYzpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBRdWVyeWluZyB0aGUgZXJyb3IgaW5kaWNhdG9yCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTc3NCw2ICs3ODksOCBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19JbXBvcnRFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRFcnJvcmAgICAgICAgICAgICAgIHwgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yYCAgICAgfCA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19JbmRleEVycm9yYCAgICAgICAgICAgICAgfCA6ZXhjOmBJbmRleEVycm9yYCAgICAgICAgICAgICAgIHwgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwogfCA6YzpkYXRhOmBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yYCAgICAgICAgfCA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCAgICAgICAgIHwgICAgICAgICAgfApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luaXQucnN0IGIvRG9jL2MtYXBpL2luaXQucnN0CmluZGV4IDcwYjk4YWUuLjI5NjViYzkgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbml0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgIHRyaXBsZTogbW9kdWxlOyBzZWFyY2g7IHBhdGgKICAgICAgIHNpbmdsZTogUHlTeXNfU2V0QXJndigpCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3ZFeCgpCi0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAKICAgIEluaXRpYWxpemUgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4gIEluIGFuIGFwcGxpY2F0aW9uIGVtYmVkZGluZyAgUHl0aG9uLCB0aGlzCiAgICBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSB1c2luZyBhbnkgb3RoZXIgUHl0aG9uL0MgQVBJIGZ1bmN0aW9uczsgd2l0aCB0aGUKQEAgLTM0LDcgKzM0LDcgQEAKICAgIG1vZHVsZXMgOm1vZDpgYnVpbHRpbnNgLCA6bW9kOmBfX21haW5fX2AgYW5kIDptb2Q6YHN5c2AuICBJdCBhbHNvIGluaXRpYWxpemVzCiAgICB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoIChgYHN5cy5wYXRoYGApLiBJdCBkb2VzIG5vdCBzZXQgYGBzeXMuYXJndmBgOyB1c2UKICAgIDpjOmZ1bmM6YFB5U3lzX1NldEFyZ3ZFeGAgZm9yIHRoYXQuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kIHRpbWUKLSAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGZpcnN0KS4gIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZTsgaXQgaXMgYQorICAgKHdpdGhvdXQgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKICAgIGZhdGFsIGVycm9yIGlmIHRoZSBpbml0aWFsaXphdGlvbiBmYWlscy4KIAogICAgLi4gbm90ZTo6CkBAIC01MiwxOSArNTIsMjAgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfSXNJbml0aWFsaXplZCgpCiAKICAgIFJldHVybiB0cnVlIChub256ZXJvKSB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGZhbHNlCi0gICAoemVybykgaWYgbm90LiAgQWZ0ZXIgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCisgICAoemVybykgaWYgbm90LiAgQWZ0ZXIgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgaXMgY2FsbGVkLCB0aGlzIHJldHVybnMgZmFsc2UgdW50aWwKICAgIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIGlzIGNhbGxlZCBhZ2Fpbi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0ZpbmFsaXplRXgoKQogCiAgICBVbmRvIGFsbCBpbml0aWFsaXphdGlvbnMgbWFkZSBieSA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQgc3Vic2VxdWVudCB1c2Ugb2YKICAgIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnMsIGFuZCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIChzZWUKICAgIDpjOmZ1bmM6YFB5X05ld0ludGVycHJldGVyYCBiZWxvdykgdGhhdCB3ZXJlIGNyZWF0ZWQgYW5kIG5vdCB5ZXQgZGVzdHJveWVkIHNpbmNlCiAgICB0aGUgbGFzdCBjYWxsIHRvIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLiAgSWRlYWxseSwgdGhpcyBmcmVlcyBhbGwgbWVtb3J5CiAgICBhbGxvY2F0ZWQgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4gIFRoaXMgaXMgYSBuby1vcCB3aGVuIGNhbGxlZCBmb3IgYSBzZWNvbmQKLSAgIHRpbWUgKHdpdGhvdXQgY2FsbGluZyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhZ2FpbiBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4KLSAgIHZhbHVlOyBlcnJvcnMgZHVyaW5nIGZpbmFsaXphdGlvbiBhcmUgaWdub3JlZC4KKyAgIHRpbWUgKHdpdGhvdXQgY2FsbGluZyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhZ2FpbiBmaXJzdCkuICBOb3JtYWxseSB0aGUKKyAgIHJldHVybiB2YWx1ZSBpcyAwLiAgSWYgdGhlcmUgd2VyZSBlcnJvcnMgZHVyaW5nIGZpbmFsaXphdGlvbgorICAgKGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEpLCAtMSBpcyByZXR1cm5lZC4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgYSBudW1iZXIgb2YgcmVhc29ucy4gIEFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbgogICAgbWlnaHQgd2FudCB0byByZXN0YXJ0IFB5dGhvbiB3aXRob3V0IGhhdmluZyB0byByZXN0YXJ0IHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYuCkBAIC04Myw3ICs4NCwxNSBAQAogICAgZnJlZWQuICBTb21lIG1lbW9yeSBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgbWF5IG5vdCBiZSBmcmVlZC4gIFNvbWUKICAgIGV4dGVuc2lvbnMgbWF5IG5vdCB3b3JrIHByb3Blcmx5IGlmIHRoZWlyIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgaXMgY2FsbGVkIG1vcmUKICAgIHRoYW4gb25jZTsgdGhpcyBjYW4gaGFwcGVuIGlmIGFuIGFwcGxpY2F0aW9uIGNhbGxzIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIGFuZAotICAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIG1vcmUgdGhhbiBvbmNlLgorICAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgbW9yZSB0aGFuIG9uY2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0ZpbmFsaXplKCkKKworICAgVGhpcyBpcyBhIGJhY2t3YXJkcy1jb21wYXRpYmxlIHZlcnNpb24gb2YgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgdGhhdAorICAgZGlzcmVnYXJkcyB0aGUgcmV0dXJuIHZhbHVlLgogCiAKIFByb2Nlc3Mtd2lkZSBwYXJhbWV0ZXJzCkBAIC0xMTEsNyArMTIwLDcgQEAKICAgIE5vdGUgdGhhdCA6ZGF0YTpgc3lzLnN0ZGVycmAgYWx3YXlzIHVzZXMgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvcgogICAgaGFuZGxlciwgcmVnYXJkbGVzcyBvZiB0aGlzIChvciBhbnkgb3RoZXIpIHNldHRpbmcuCiAKLSAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBuZWVkIHRvIGJlIGNhbGxlZAorICAgSWYgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKICAgIGFnYWluIGluIG9yZGVyIHRvIGFmZmVjdCBzdWJzZXF1ZW50IGNhbGxzIHRvIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCiAgICBSZXR1cm5zIGBgMGBgIGlmIHN1Y2Nlc3NmdWwsIGEgbm9uemVybyB2YWx1ZSBvbiBlcnJvciAoZS5nLiBjYWxsaW5nIGFmdGVyIHRoZQpAQCAtOTIyLDcgKzkzMSw3IEBACiAgICBlbnRyeS4pCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogUHlfSW5pdGlhbGl6ZSgpCiAKICAgIEV4dGVuc2lvbiBtb2R1bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiAoc3ViLSlpbnRlcnByZXRlcnMgYXMgZm9sbG93czogdGhlIGZpcnN0CkBAIC05MzIsNyArOTQxLDcgQEAKICAgIGFuZCBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBjb3B5OyB0aGUgZXh0ZW5zaW9uJ3MgYGBpbml0YGAgZnVuY3Rpb24gaXMKICAgIG5vdCBjYWxsZWQuICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGhhcHBlbnMgd2hlbiBhbiBleHRlbnNpb24gaXMKICAgIGltcG9ydGVkIGFmdGVyIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkIGJ5IGNhbGxpbmcKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCiAgICBgYGluaXRtb2R1bGVgYCBmdW5jdGlvbiAqaXMqIGNhbGxlZCBhZ2Fpbi4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNsb3NlKCkgKGluIG1vZHVsZSBvcykKQEAgLTk0MCwxNCArOTQ5LDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIAotICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgRGVzdHJveSB0aGUgKHN1Yi0paW50ZXJwcmV0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHRocmVhZCBzdGF0ZS4gVGhlIGdpdmVuCiAgICB0aHJlYWQgc3RhdGUgbXVzdCBiZSB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhyZWFkCiAgICBzdGF0ZXMgYmVsb3cuICBXaGVuIHRoZSBjYWxsIHJldHVybnMsIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSBpcyAqTlVMTCouICBBbGwKICAgIHRocmVhZCBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50ZXJwcmV0ZXIgYXJlIGRlc3Ryb3llZC4gIChUaGUgZ2xvYmFsCiAgICBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBoZWxkCi0gICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CisgICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKICAgIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRlc3Ryb3llZCBhdCB0aGF0IHBvaW50LgogCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbnRyby5yc3QgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CmluZGV4IGJjM2E3NTIuLjc0NjgxZDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbnRyby5yc3QKKysrIGIvRG9jL2MtYXBpL2ludHJvLnJzdApAQCAtNjQsOSArNjQsMTAgQEAKIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yaWVzIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCBhbmQKIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGFuZAogOmVudnZhcjpgZXhlY19wcmVmaXhgIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgdG8gUHl0aG9uJ3MKLTpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzIGBgc3lzLnZlcnNpb25bOjNdYGAuICBPbiBXaW5kb3dzLAotdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMKLXRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgorOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMKK2BgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuICBPbiBXaW5kb3dzLCB0aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkCitpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMgdGhlIGluc3RhbGxhdGlvbgorZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgogCiBUbyBpbmNsdWRlIHRoZSBoZWFkZXJzLCBwbGFjZSBib3RoIGRpcmVjdG9yaWVzIChpZiBkaWZmZXJlbnQpIG9uIHlvdXIgY29tcGlsZXIncwogc2VhcmNoIHBhdGggZm9yIGluY2x1ZGVzLiAgRG8gKm5vdCogcGxhY2UgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBvbiB0aGUgc2VhcmNoCkBAIC01NzgsOSArNTc5LDkgQEAKIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIHN0YXJ0IG92ZXIgKG1ha2UgYW5vdGhlciBjYWxsIHRvCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCkgb3IgdGhlIGFwcGxpY2F0aW9uIGlzIHNpbXBseSBkb25lIHdpdGggaXRzICB1c2Ugb2YKIFB5dGhvbiBhbmQgd2FudHMgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IFB5dGhvbi4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAotYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucworYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCiB0cnVlIGlmIFB5dGhvbiBpcyBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWxpemVkIHN0YXRlLiAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dAotdGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVgCit0aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAogZG9lcyAqbm90KiBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGUuZy4gbWVtb3J5CiBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgY3VycmVudGx5IGNhbm5vdCBiZSByZWxlYXNlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IDY4ZjZhOGUuLmY1OTJjYjYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTYyLDEzICs2MiwxMyBAQAogICAgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwgb3IgKk5VTEwqCiAgICBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLAogICAgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgIG9jY3VycyBzZXQgKlwqb3ZlcmZsb3cqIHRvIGBgMGBgIGFuZCByZXR1cm4gYGAtMWBgIGFzIHVzdWFsLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgIDpjOnR5cGU6YGxvbmdgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqIGlzIG5vdCBhbgogICAgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gIG1ldGhvZApAQCAtMjEwLDE2ICsyMTAsMTYgQEAKICAgIDpjOnR5cGU6YHNpemVfdGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCiAKLSAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4KLSAgICpweWxvbmcqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KKyAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4gICpweWxvbmcqCisgICBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCiAKICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmIHRoZSB2YWx1ZSBvZiAqcHlsb25nKiBpcyBvdXQgb2YgcmFuZ2UgZm9yIGFuCi0gICA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgLgorICAgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEEgbmVnYXRpdmUgKnB5bG9uZyogbm93IHJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgbm90IDpleGM6YFR5cGVFcnJvcmAuCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIHJldHVybiB0aGUgcmVkdWN0aW9uIG9mIHRoYXQgdmFsdWUgbW9kdWxvIGBgVUxPTkdfTUFYICsgMWBgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKm9iaikKIAogICAgUmV0dXJuIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIHJlcHJlc2VudGF0aW9uIG9mICpvYmoqLiAgSWYgKm9iaioKICAgIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgLCBmaXJzdCBjYWxsIGl0cyA6bWV0aDpgX19pbnRfX2AKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9tZW1vcnkucnN0IGIvRG9jL2MtYXBpL21lbW9yeS5yc3QKaW5kZXggMjkwZWYwOS4uM2ZmNTQ1MiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL21lbW9yeS5yc3QKKysrIGIvRG9jL2MtYXBpL21lbW9yeS5yc3QKQEAgLTg1LDkgKzg1LDEyIEBACiAKIC4uIHNlZWFsc286OgogCisgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUKKyAgIHRoZSBtZW1vcnkgYWxsb2NhdG9ycyB1c2VkIGJ5IFB5dGhvbi4KKwogICAgVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ1NUQVRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgdXNlZCB0byBwcmludAotICAgbWVtb3J5IGFsbG9jYXRpb24gc3RhdGlzdGljcyBldmVyeSB0aW1lIGEgbmV3IG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQKLSAgIG9uIHNodXRkb3duLgorICAgc3RhdGlzdGljcyBvZiB0aGUgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YCBldmVyeSB0aW1lIGEKKyAgIG5ldyBweW1hbGxvYyBvYmplY3QgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgogCiAKIFJhdyBNZW1vcnkgSW50ZXJmYWNlCkBAIC0xNjIsMTUgKzE2NSwxNyBAQAogYmVoYXZpb3Igd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMsIGFyZSBhdmFpbGFibGUgZm9yIGFsbG9jYXRpbmcgYW5kIHJlbGVhc2luZwogbWVtb3J5IGZyb20gdGhlIFB5dGhvbiBoZWFwLgogCi1UaGUgZGVmYXVsdCBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKLWBgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgorQnkgZGVmYXVsdCwgdGhlc2UgZnVuY3Rpb25zIHVzZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gLgogCiAuLiB3YXJuaW5nOjoKIAogICAgVGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgbXVzdCBiZSBoZWxkIHdoZW4gdXNpbmcgdGhlc2UKICAgIGZ1bmN0aW9ucy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgVGhlIGRlZmF1bHQgYWxsb2NhdG9yIGlzIG5vdyBweW1hbGxvYyBpbnN0ZWFkIG9mIHN5c3RlbSA6YzpmdW5jOmBtYWxsb2NgLgorCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fTWFsbG9jKHNpemVfdCBuKQogCiAgICBBbGxvY2F0ZXMgKm4qIGJ5dGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciBvZiB0eXBlIDpjOnR5cGU6YHZvaWRcKmAgdG8gdGhlCkBAIC0yOTIsMTUgKzI5NywzMiBAQAogCiAgICBFbnVtIHVzZWQgdG8gaWRlbnRpZnkgYW4gYWxsb2NhdG9yIGRvbWFpbi4gRG9tYWluczoKIAotICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgIGFuZAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU1lbV9GcmVlYAotICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgLCA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgIGFuZAotICAgICA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYAorICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fUkFXCiAKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3RnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fTUVNCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCisKKyAgIC4uIGM6dmFyOjogUFlNRU1fRE9NQUlOX09CSgorCisgICAgICBGdW5jdGlvbnM6CisKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIApAQCAtMzI1LDQzICszNDcsNjIgQEAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiAKLSAgIFNldHVwIGhvb2tzIHRvIGRldGVjdCBidWdzIGluIHRoZSBmb2xsb3dpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKLSAgIGZ1bmN0aW9uczoKLQotICAgLSA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmF3RnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAtIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLCA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYAorICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGZ1bmN0aW9ucy4KIAogICAgTmV3bHkgYWxsb2NhdGVkIG1lbW9yeSBpcyBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4Q0JgYCwgZnJlZWQgbWVtb3J5IGlzCi0gICBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4REJgYC4gQWRkaXRpb25hbCBjaGVja3M6CisgICBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4REJgYC4KIAotICAgLSBkZXRlY3QgQVBJIHZpb2xhdGlvbnMsIGV4OiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBidWZmZXIKKyAgIFJ1bnRpbWUgY2hlY2tzOgorCisgICAtIERldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgogICAgICBhbGxvY2F0ZWQgYnkgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYAotICAgLSBkZXRlY3Qgd3JpdGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93KQotICAgLSBkZXRlY3Qgd3JpdGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3cpCisgICAtIERldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCisgICAtIERldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gQ2hlY2sgdGhhdCB0aGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBpcyBoZWxkIHdoZW4KKyAgICAgYWxsb2NhdG9yIGZ1bmN0aW9ucyBvZiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6CisgICAgIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6CisgICAgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2ApIGRvbWFpbnMgYXJlIGNhbGxlZAogCi0gICBUaGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgY29tcGlsZWQgaXMgZGVidWcgbW9kZS4KKyAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3MgdXNlIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUKKyAgIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLiBUaGUgdHJhY2ViYWNrIGlzIG9ubHkKKyAgIGRpc3BsYXllZCBpZiA6bW9kOmB0cmFjZW1hbGxvY2AgaXMgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIGFuZCB0aGUKKyAgIG1lbW9yeSBibG9jayB3YXMgdHJhY2VkLgorCisgICBUaGVzZSBob29rcyBhcmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIGluIGRlYnVnCisgICBtb2RlLiBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgdXNlZCB0byBpbnN0YWxsCisgICBkZWJ1ZyBob29rcyBvbiBhIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBhbHNvIHdvcmtzIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisgICAgICBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG5vdyB1c2UgOm1vZDpgdHJhY2VtYWxsb2NgIHRvIGdldCB0aGUgdHJhY2ViYWNrCisgICAgICB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLiBUaGUgZGVidWcgaG9va3Mgbm93IGFsc28gY2hlY2sKKyAgICAgIGlmIHRoZSBHSUwgaXMgaGVsZCB3aGVuIGZ1bmN0aW9ucyBvZiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCBhbmQKKyAgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIGRvbWFpbnMgYXJlIGNhbGxlZC4KIAogCi1DdXN0b21pemUgUHlPYmplY3QgQXJlbmEgQWxsb2NhdG9yCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisuLiBfcHltYWxsb2M6CiAKLVB5dGhvbiBoYXMgYSAqcHltYWxsb2MqIGFsbG9jYXRvciBmb3IgYWxsb2NhdGlvbnMgc21hbGxlciB0aGFuIDUxMiBieXRlcy4gVGhpcwotYWxsb2NhdG9yIGlzIG9wdGltaXplZCBmb3Igc21hbGwgb2JqZWN0cyB3aXRoIGEgc2hvcnQgbGlmZXRpbWUuIEl0IHVzZXMgbWVtb3J5Ci1tYXBwaW5ncyBjYWxsZWQgImFyZW5hcyIgd2l0aCBhIGZpeGVkIHNpemUgb2YgMjU2IEtCLiBJdCBmYWxscyBiYWNrIHRvCi06YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYCBmb3IgYWxsb2NhdGlvbnMgbGFyZ2VyCi10aGFuIDUxMiBieXRlcy4gICpweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIHVzZWQgYnkKLTpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AuCitUaGUgcHltYWxsb2MgYWxsb2NhdG9yCis9PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBkZWZhdWx0IGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIG9wdGltaXplZCBmb3Igc21hbGwgb2JqZWN0cyAoc21hbGxlciBvciBlcXVhbAordG8gNTEyIGJ5dGVzKSB3aXRoIGEgc2hvcnQgbGlmZXRpbWUuIEl0IHVzZXMgbWVtb3J5IG1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIgord2l0aCBhIGZpeGVkIHNpemUgb2YgMjU2IEtCLiBJdCBmYWxscyBiYWNrIHRvIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kCis6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYCBmb3IgYWxsb2NhdGlvbnMgbGFyZ2VyIHRoYW4gNTEyIGJ5dGVzLgorCisqcHltYWxsb2MqIGlzIHRoZSBkZWZhdWx0IGFsbG9jYXRvciBvZiB0aGUgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKzpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGRvbWFpbnMuCisKK1RoZSBhcmVuYSBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogKiA6YzpmdW5jOmBWaXJ0dWFsQWxsb2NgIGFuZCA6YzpmdW5jOmBWaXJ0dWFsRnJlZWAgb24gV2luZG93cywKICogOmM6ZnVuYzpgbW1hcGAgYW5kIDpjOmZ1bmM6YG11bm1hcGAgaWYgYXZhaWxhYmxlLAogKiA6YzpmdW5jOmBtYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYCBvdGhlcndpc2UuCiAKK0N1c3RvbWl6ZSBweW1hbGxvYyBBcmVuYSBBbGxvY2F0b3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIC4uIGM6dHlwZTo6IFB5T2JqZWN0QXJlbmFBbGxvY2F0b3IKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdCBiL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAppbmRleCAzZThhOTBjLi44MzdhYzdkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CkBAIC0xNTAsOCArMTUwLDkgQEAKIFRoZSA6YXR0cjpgbWxfZmxhZ3NgIGZpZWxkIGlzIGEgYml0ZmllbGQgd2hpY2ggY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBmbGFncy4KIFRoZSBpbmRpdmlkdWFsIGZsYWdzIGluZGljYXRlIGVpdGhlciBhIGNhbGxpbmcgY29udmVudGlvbiBvciBhIGJpbmRpbmcKIGNvbnZlbnRpb24uICBPZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzLCBvbmx5IDpjb25zdDpgTUVUSF9WQVJBUkdTYCBhbmQKLTpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkLiBBbnkgb2YgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmbGFncwotY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCis6Y29uc3Q6YE1FVEhfS0VZV09SRFNgIGNhbiBiZSBjb21iaW5lZCAoYnV0IG5vdGUgdGhhdCA6Y29uc3Q6YE1FVEhfS0VZV09SRFNgCithbG9uZSBpcyBlcXVpdmFsZW50IHRvIGBgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU2BgKS4gQW55IG9mIHRoZSBjYWxsaW5nCitjb252ZW50aW9uIGZsYWdzIGNhbiBiZSBjb21iaW5lZCB3aXRoIGEgYmluZGluZyBmbGFnLgogCiAKIC4uIGRhdGE6OiBNRVRIX1ZBUkFSR1MKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zeXMucnN0IGIvRG9jL2MtYXBpL3N5cy5yc3QKaW5kZXggM2Q4M2IyNy4uMDM1Y2RjMSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N5cy5yc3QKKysrIGIvRG9jL2MtYXBpL3N5cy5yc3QKQEAgLTUsNiArNSwxNyBAQAogT3BlcmF0aW5nIFN5c3RlbSBVdGlsaXRpZXMKID09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPU19GU1BhdGgoUHlPYmplY3QgKnBhdGgpCisKKyAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb24gZm9yICpwYXRoKi4gSWYgdGhlIG9iamVjdCBpcyBhCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LCB0aGVuIGl0cyByZWZlcmVuY2UgY291bnQgaXMKKyAgIGluY3JlbWVudGVkLiBJZiB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSwKKyAgIHRoZW4gOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBpcyByZXR1cm5lZCBhcyBsb25nIGFzIGl0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuIE90aGVyd2lzZSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZAorICAgYW5kIGBgTlVMTGBgIGlzIHJldHVybmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAKQEAgLTIxMiwyMCArMjIzLDI0IEBACiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9FeGl0KGludCBzdGF0dXMpCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogZXhpdCgpCiAKLSAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGFuZCB0aGVuIGNhbGxzIHRoZQotICAgc3RhbmRhcmQgQyBsaWJyYXJ5IGZ1bmN0aW9uIGBgZXhpdChzdGF0dXMpYGAuCisgICBFeGl0IHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGNhbGxzIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGFuZCB0aGVuIGNhbGxzIHRoZQorICAgc3RhbmRhcmQgQyBsaWJyYXJ5IGZ1bmN0aW9uIGBgZXhpdChzdGF0dXMpYGAuICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAorICAgaW5kaWNhdGVzIGFuIGVycm9yLCB0aGUgZXhpdCBzdGF0dXMgaXMgc2V0IHRvIDEyMC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEVycm9ycyBmcm9tIGZpbmFsaXphdGlvbiBubyBsb25nZXIgaWdub3JlZC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0F0RXhpdCh2b2lkICgqZnVuYykgKCkpCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogY2xlYW51cCBmdW5jdGlvbnMKIAotICAgUmVnaXN0ZXIgYSBjbGVhbnVwIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBieSA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgY2xlYW51cAorICAgUmVnaXN0ZXIgYSBjbGVhbnVwIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBieSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBjbGVhbnVwCiAgICBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgc2hvdWxkIHJldHVybiBubyB2YWx1ZS4gIEF0IG1vc3QKICAgIDMyIGNsZWFudXAgZnVuY3Rpb25zIGNhbiBiZSByZWdpc3RlcmVkLiAgV2hlbiB0aGUgcmVnaXN0cmF0aW9uIGlzIHN1Y2Nlc3NmdWwsCiAgICA6YzpmdW5jOmBQeV9BdEV4aXRgIHJldHVybnMgYGAwYGA7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgYGAtMWBgLiAgVGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS91bmljb2RlLnJzdCBiL0RvYy9jLWFwaS91bmljb2RlLnJzdAppbmRleCAyNTZmZWYzLi4wMmY3YWRhIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKKysrIGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CkBAIC00NDAsNyArNDQwLDYgQEAKICAgIC4uICUgYmVjYXVzZSBub3QgYWxsIGNvbXBpbGVycyBzdXBwb3J0IHRoZSAleiB3aWR0aCBtb2RpZmllciAtLSB3ZSBmYWtlIGl0CiAgICAuLiAlIHdoZW4gbmVjZXNzYXJ5IHZpYSBpbnRlcnBvbGF0aW5nIFBZX0ZPUk1BVF9TSVpFX1QuCiAgICAuLiAlIFNpbWlsYXIgY29tbWVudHMgYXBwbHkgdG8gdGhlICVsbCB3aWR0aCBtb2RpZmllciBhbmQKLSAgIC4uICUgUFlfRk9STUFUX0xPTkdfTE9ORy4KIAogICAgLi4gdGFidWxhcmNvbHVtbnM6OiB8bHxsfEx8CiAKQEAgLTUyNSwxMSArNTI0LDYgQEAKICAgIGNvcGllZCBhcy1pcyB0byB0aGUgcmVzdWx0IHN0cmluZywgYW5kIGFueSBleHRyYSBhcmd1bWVudHMgZGlzY2FyZGVkLgogCiAgICAuLiBub3RlOjoKLQotICAgICAgVGhlIGAiJWxsZCJgIGFuZCBgIiVsbHUiYCBmb3JtYXQgc3BlY2lmaWVycyBhcmUgb25seSBhdmFpbGFibGUKLSAgICAgIHdoZW4gOmNvbnN0OmBIQVZFX0xPTkdfTE9OR2AgaXMgZGVmaW5lZC4KLQotICAgLi4gbm90ZTo6CiAgICAgICBUaGUgd2lkdGggZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gYnl0ZXMuCiAgICAgICBUaGUgcHJlY2lzaW9uIGZvcm1hdHRlciB1bml0IGlzIG51bWJlciBvZiBieXRlcyBmb3IgYGAiJXMiYGAgYW5kCiAgICAgICBgYCIlViJgYCAoaWYgdGhlIGBgUHlPYmplY3QqYGAgYXJndW1lbnQgaXMgTlVMTCksIGFuZCBhIG51bWJlciBvZgpAQCAtODExLDM4ICs4MDUsNDcgQEAKICIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRvIGVuY29kZSBhbmQgZGVjb2RlIGZpbGUgbmFtZXMgYW5kIG90aGVyIGVudmlyb25tZW50IHN0cmluZ3MsCi06YzpkYXRhOmBQeV9GaWxlU3lzdGVtRW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCi1gYCJzdXJyb2dhdGVlc2NhcGUiYGAgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIgKDpwZXA6YDM4M2ApLiBUbwotZW5jb2RlIGZpbGUgbmFtZXMgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYCBjb252ZXJ0ZXIgc2hvdWxkIGJlCi11c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246Cis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZW5jb2RpbmcsIGFuZAorOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlcnJvciBoYW5kbGVyCisoOnBlcDpgMzgzYCBhbmQgOnBlcDpgNTI5YCkuIFRvIGVuY29kZSBmaWxlIG5hbWVzIHRvIDpjbGFzczpgYnl0ZXNgIGR1cmluZworYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUgdXNlZCwgcGFzc2luZworOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoUHlPYmplY3QqIG9iaiwgdm9pZCogcmVzdWx0KQogCi0gICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZW5jb2RlIDpjbGFzczpgc3RyYCBvYmplY3RzIHRvIDpjbGFzczpgYnl0ZXNgIHVzaW5nCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZW5jb2RlIDpjbGFzczpgc3RyYCBvYmplY3RzIC0tIG9idGFpbmVkIGRpcmVjdGx5IG9yCisgICB0aHJvdWdoIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UgLS0gdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgOyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuCiAgICAqcmVzdWx0KiBtdXN0IGJlIGEgOmM6dHlwZTpgUHlCeXRlc09iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQgd2hlbiBpdCBpcwogICAgbm8gbG9uZ2VyIHVzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAotVG8gZGVjb2RlIGZpbGUgbmFtZXMgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYCBjb252ZXJ0ZXIgc2hvdWxkIGJlCi11c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgorVG8gZGVjb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBzdHJgIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAKK2NvbnZlcnRlciBzaG91bGQgYmUgdXNlZCwgcGFzc2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRlNEZWNvZGVyYCBhcyB0aGUKK2NvbnZlcnNpb24gZnVuY3Rpb246CiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBkZWNvZGUgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyB0byA6Y2xhc3M6YHN0cmAgdXNpbmcKLSAgIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgIG9iamVjdHMgYXJlIG91dHB1dAotICAgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaCBtdXN0IGJlIHJlbGVhc2VkCi0gICB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgorICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIC0tIG9idGFpbmVkIGVpdGhlcgorICAgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UgLS0gdG8KKyAgIDpjbGFzczpgc3RyYCB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWA7IDpjbGFzczpgc3RyYAorICAgb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLiAqcmVzdWx0KiBtdXN0IGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0KmAgd2hpY2gKKyAgIG11c3QgYmUgcmVsZWFzZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogCiAgICBEZWNvZGUgYSBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgYW5kIHRoZQotICAgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KQEAgLTg1NiwyOCArODU5LDI4IEBACiAKICAgICAgIFRoZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIGZ1bmN0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjb25zdCBjaGFyICpzKQogCiAgICBEZWNvZGUgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHVzaW5nIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgCi0gICBhbmQgdGhlIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cy4KKyAgIGFuZCB0aGUgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAogICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCBpZiB5b3Uga25vdyB0aGUgc3RyaW5nIGxlbmd0aC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHRvIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHdpdGggdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MsIGFuZCByZXR1cm4KKyAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLCBhbmQgcmV0dXJuCiAgICA6Y2xhc3M6YGJ5dGVzYC4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG1heSBjb250YWluCiAgICBudWxsIGJ5dGVzLgogCkBAIC04OTQsNiArODk3LDggQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIHdjaGFyX3QgU3VwcG9ydAogIiIiIiIiIiIiIiIiIiIiCmRpZmYgLS1naXQgYS9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0IGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdAppbmRleCBlMzg4MTk1Li44YjQ2OWY0IDEwMDY0NAotLS0gYS9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CisrKyBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKQEAgLTkyMSw2ICs5MjEsOSBAQAogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjppbnQ6OjoKIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I6UHlPYmplY3QqOm86MDoKIAorUHlPU19GU1BhdGg6UHlPYmplY3QqOjorMToKK1B5T1NfRlNQYXRoOlB5T2JqZWN0KjpwYXRoOjA6CisKIFB5T2JqZWN0X0NhbGw6UHlPYmplY3QqOjorMToKIFB5T2JqZWN0X0NhbGw6UHlPYmplY3QqOmNhbGxhYmxlX29iamVjdDowOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6YXJnczowOgpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CmluZGV4IDY0MDMzZGMuLmFiMmY2MTYgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKQEAgLTY3LDcgKzY3LDkgQEAKICAgICAgICBQeV9Jbml0aWFsaXplKCk7CiAgICAgICAgUHlSdW5fU2ltcGxlU3RyaW5nKCJmcm9tIHRpbWUgaW1wb3J0IHRpbWUsY3RpbWVcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaW50KCdUb2RheSBpcycsIGN0aW1lKHRpbWUoKSkpXG4iKTsKLSAgICAgICBQeV9GaW5hbGl6ZSgpOworICAgICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgICAgIGV4aXQoMTIwKTsKKyAgICAgICB9CiAgICAgICAgUHlNZW1fUmF3RnJlZShwcm9ncmFtKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KQEAgLTc2LDcgKzc4LDcgQEAKIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIHRvIGluZm9ybSB0aGUgaW50ZXJwcmV0ZXIgYWJvdXQgcGF0aHMgdG8gUHl0aG9uIHJ1bi10aW1lCiBsaWJyYXJpZXMuICBOZXh0LCB0aGUgUHl0aG9uIGludGVycHJldGVyIGlzIGluaXRpYWxpemVkIHdpdGgKIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLCBmb2xsb3dlZCBieSB0aGUgZXhlY3V0aW9uIG9mIGEgaGFyZC1jb2RlZCBQeXRob24gc2NyaXB0Ci10aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgY2FsbCBzaHV0cwordGhhdCBwcmludHMgdGhlIGRhdGUgYW5kIHRpbWUuICBBZnRlcndhcmRzLCB0aGUgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgY2FsbCBzaHV0cwogdGhlIGludGVycHJldGVyIGRvd24sIGZvbGxvd2VkIGJ5IHRoZSBlbmQgb2YgdGhlIHByb2dyYW0uICBJbiBhIHJlYWwgcHJvZ3JhbSwKIHlvdSBtYXkgd2FudCB0byBnZXQgdGhlIFB5dGhvbiBzY3JpcHQgZnJvbSBhbm90aGVyIHNvdXJjZSwgcGVyaGFwcyBhIHRleHQtZWRpdG9yCiByb3V0aW5lLCBhIGZpbGUsIG9yIGEgZGF0YWJhc2UuICBHZXR0aW5nIHRoZSBQeXRob24gY29kZSBmcm9tIGEgZmlsZSBjYW4gYmV0dGVyCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2Rlc2lnbi5yc3QgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKaW5kZXggMTA4ZGY2ZC4uMWJkODAwYiAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9kZXNpZ24ucnN0CisrKyBiL0RvYy9mYXEvZGVzaWduLnJzdApAQCAtMzY2LDMzICszNjYsMTEgQEAKIENhbiBQeXRob24gYmUgY29tcGlsZWQgdG8gbWFjaGluZSBjb2RlLCBDIG9yIHNvbWUgb3RoZXIgbGFuZ3VhZ2U/CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QcmFjdGljYWwgYW5zd2VyOgotCi1gQ3l0aG9uIDxodHRwOi8vY3l0aG9uLm9yZy8+YF8gYW5kIGBQeXJleCA8aHR0cHM6Ly93d3cuY29zYy5jYW50ZXJidXJ5LmFjLm56L2dyZWcuZXdpbmcvcHl0aG9uL1B5cmV4Lz5gXwotY29tcGlsZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgUHl0aG9uIHdpdGggb3B0aW9uYWwgYW5ub3RhdGlvbnMgaW50byBDCi1leHRlbnNpb25zLiAgYFdlYXZlIDxodHRwczovL3NjaXB5LmdpdGh1Yi5pby9kZXZkb2NzL3R1dG9yaWFsL3dlYXZlLmh0bWw+YF8gbWFrZXMgaXQgZWFzeSB0bwotaW50ZXJtaW5nbGUgUHl0aG9uIGFuZCBDIGNvZGUgaW4gdmFyaW91cyB3YXlzIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlLgotYE51aXRrYSA8aHR0cDovL3d3dy5udWl0a2EubmV0Lz5gXyBpcyBhbiB1cC1hbmQtY29taW5nIGNvbXBpbGVyIG9mIFB5dGhvbgotaW50byBDKysgY29kZSwgYWltaW5nIHRvIHN1cHBvcnQgdGhlIGZ1bGwgUHl0aG9uIGxhbmd1YWdlLgotCi1UaGVvcmV0aWNhbCBhbnN3ZXI6Ci0KLSAgIC4uIFhYWCBub3Qgc3VyZSB3aGF0IHRvIG1ha2Ugb2YgdGhpcwotCi1Ob3QgdHJpdmlhbGx5LiAgUHl0aG9uJ3MgaGlnaCBsZXZlbCBkYXRhIHR5cGVzLCBkeW5hbWljIHR5cGluZyBvZiBvYmplY3RzIGFuZAotcnVuLXRpbWUgaW52b2NhdGlvbiBvZiB0aGUgaW50ZXJwcmV0ZXIgKHVzaW5nIDpmdW5jOmBldmFsYCBvciA6ZnVuYzpgZXhlY2ApCi10b2dldGhlciBtZWFuIHRoYXQgYSBuYcOvdmVseSAiY29tcGlsZWQiIFB5dGhvbiBwcm9ncmFtIHdvdWxkIHByb2JhYmx5IGNvbnNpc3QKLW1vc3RseSBvZiBjYWxscyBpbnRvIHRoZSBQeXRob24gcnVuLXRpbWUgc3lzdGVtLCBldmVuIGZvciBzZWVtaW5nbHkgc2ltcGxlCi1vcGVyYXRpb25zIGxpa2UgYGB4KzFgYC4KLQotU2V2ZXJhbCBwcm9qZWN0cyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBuZXdzZ3JvdXAgb3IgYXQgcGFzdCBgUHl0aG9uCi1jb25mZXJlbmNlcyA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvd29ya3Nob3BzLz5gXyBoYXZlIHNob3duIHRoYXQgdGhpcwotYXBwcm9hY2ggaXMgZmVhc2libGUsIGFsdGhvdWdoIHRoZSBzcGVlZHVwcyByZWFjaGVkIHNvIGZhciBhcmUgb25seSBtb2Rlc3QKLShlLmcuIDJ4KS4gIEp5dGhvbiB1c2VzIHRoZSBzYW1lIHN0cmF0ZWd5IGZvciBjb21waWxpbmcgdG8gSmF2YSBieXRlY29kZS4gIChKaW0KLUh1Z3VuaW4gaGFzIGRlbW9uc3RyYXRlZCB0aGF0IGluIGNvbWJpbmF0aW9uIHdpdGggd2hvbGUtcHJvZ3JhbSBhbmFseXNpcywKLXNwZWVkdXBzIG9mIDEwMDB4IGFyZSBmZWFzaWJsZSBmb3Igc21hbGwgZGVtbyBwcm9ncmFtcy4gIFNlZSB0aGUgcHJvY2VlZGluZ3MKLWZyb20gdGhlIGAxOTk3IFB5dGhvbiBjb25mZXJlbmNlCi08aHR0cDovL2xlZ2FjeS5weXRob24ub3JnL3dvcmtzaG9wcy8xOTk3LTEwL3Byb2NlZWRpbmdzLz5gXyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4pCitgQ3l0aG9uIDxodHRwOi8vY3l0aG9uLm9yZy8+YF8gY29tcGlsZXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIFB5dGhvbiB3aXRoCitvcHRpb25hbCBhbm5vdGF0aW9ucyBpbnRvIEMgZXh0ZW5zaW9ucy4gIGBOdWl0a2EgPGh0dHA6Ly93d3cubnVpdGthLm5ldC8+YF8gaXMKK2FuIHVwLWFuZC1jb21pbmcgY29tcGlsZXIgb2YgUHl0aG9uIGludG8gQysrIGNvZGUsIGFpbWluZyB0byBzdXBwb3J0IHRoZSBmdWxsCitQeXRob24gbGFuZ3VhZ2UuIEZvciBjb21waWxpbmcgdG8gSmF2YSB5b3UgY2FuIGNvbnNpZGVyCitgVk9DIDxodHRwczovL3ZvYy5yZWFkdGhlZG9jcy5pbz5gXy4KIAogCiBIb3cgZG9lcyBQeXRob24gbWFuYWdlIG1lbW9yeT8KZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uNDFlZTNkOCAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03NCw2ICs3NCwzNCBAQAogICAgICAgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIHN0YXRlbWVudCBieSBkZWZpbmluZyA6bWV0aDpgX19hZW50ZXJfX2AgYW5kCiAgICAgICA6bWV0aDpgX19hZXhpdF9fYCBtZXRob2RzLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgLgogCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yCisgICAgICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXRlcmF0b3JgLiAgSXQKKyAgICAgIGxvb2tzIGxpa2UgYSBjb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5lZCB3aXRoIDprZXl3b3JkOmBhc3luYyBkZWZgIGV4Y2VwdAorICAgICAgdGhhdCBpdCBjb250YWlucyA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb25zIGZvciBwcm9kdWNpbmcgYSBzZXJpZXMgb2YKKyAgICAgIHZhbHVlcyB1c2FibGUgaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGZvcmAgbG9vcC4KKworICAgICAgVXN1YWxseSByZWZlcnMgdG8gYSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBidXQgbWF5IHJlZmVyIHRvIGFuCisgICAgICAqYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvciogaW4gc29tZSBjb250ZXh0cy4gIEluIGNhc2VzIHdoZXJlIHRoZQorICAgICAgaW50ZW5kZWQgbWVhbmluZyBpc24ndCBjbGVhciwgdXNpbmcgdGhlIGZ1bGwgdGVybXMgYXZvaWRzIGFtYmlndWl0eS4KKworICAgICAgQW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgCisgICAgICBleHByZXNzaW9ucyBhcyB3ZWxsIGFzIDprZXl3b3JkOmBhc3luYyBmb3JgLCBhbmQgOmtleXdvcmQ6YGFzeW5jIHdpdGhgCisgICAgICBzdGF0ZW1lbnRzLgorCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgY3JlYXRlZCBieSBhIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yYCBmdW5jdGlvbi4KKworICAgICAgVGhpcyBpcyBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCB3aGljaCB3aGVuIGNhbGxlZCB1c2luZyB0aGUKKyAgICAgIDptZXRoOmBfX2FuZXh0X19gIG1ldGhvZCByZXR1cm5zIGFuIGF3YWl0YWJsZSBvYmplY3Qgd2hpY2ggd2lsbCBleGVjdXRlCisgICAgICB0aGF0IHRoZSBib2R5IG9mIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHVudGlsIHRoZQorICAgICAgbmV4dCA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24uCisKKyAgICAgIEVhY2ggOmtleXdvcmQ6YHlpZWxkYCB0ZW1wb3JhcmlseSBzdXNwZW5kcyBwcm9jZXNzaW5nLCByZW1lbWJlcmluZyB0aGUKKyAgICAgIGxvY2F0aW9uIGV4ZWN1dGlvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyBhbmQgcGVuZGluZworICAgICAgdHJ5LXN0YXRlbWVudHMpLiAgV2hlbiB0aGUgKmFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXRlcmF0b3IqIGVmZmVjdGl2ZWx5CisgICAgICByZXN1bWVzIHdpdGggYW5vdGhlciBhd2FpdGFibGUgcmV0dXJuZWQgYnkgOm1ldGg6YF9fYW5leHRfX2AsIGl0CisgICAgICBwaWNrcy11cCB3aGVyZSBpdCBsZWZ0LW9mZi4gIFNlZSA6cGVwOmA0OTJgIGFuZCA6cGVwOmA1MjVgLgorCiAgICBhc3luY2hyb25vdXMgaXRlcmFibGUKICAgICAgIEFuIG9iamVjdCwgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiA6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQuCiAgICAgICBNdXN0IHJldHVybiBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBmcm9tIGl0cwpAQCAtNzE4LDYgKzc0Niw4IEBACiAKICAgICAgICAgICAgZGVmIGZ1bmMoZm9vLCBiYXI9Tm9uZSk6IC4uLgogCisgICAgICAuLiBfcG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcjoKKwogICAgICAgKiA6ZGZuOmBwb3NpdGlvbmFsLW9ubHlgOiBzcGVjaWZpZXMgYW4gYXJndW1lbnQgdGhhdCBjYW4gYmUgc3VwcGxpZWQgb25seQogICAgICAgICBieSBwb3NpdGlvbi4gIFB5dGhvbiBoYXMgbm8gc3ludGF4IGZvciBkZWZpbmluZyBwb3NpdGlvbmFsLW9ubHkKICAgICAgICAgcGFyYW1ldGVycy4gIEhvd2V2ZXIsIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIGhhdmUgcG9zaXRpb25hbC1vbmx5CkBAIC03NzYsNiArODA2LDE2IEBACiAgICAgICBPbmUgb2YgdGhlIGRlZmF1bHQgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJzIDxtZXRhIHBhdGggZmluZGVyPmAgd2hpY2gKICAgICAgIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAgZm9yIG1vZHVsZXMuCiAKKyAgIHBhdGgtbGlrZSBvYmplY3QKKyAgICAgIEFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoLiBBIHBhdGgtbGlrZSBvYmplY3QgaXMgZWl0aGVyCisgICAgICBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIGEgcGF0aCwgb3IgYW4gb2JqZWN0CisgICAgICBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIHByb3RvY29sLiBBbiBvYmplY3QgdGhhdCBzdXBwb3J0cworICAgICAgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIHByb3RvY29sIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YHN0cmAgb3IKKyAgICAgIDpjbGFzczpgYnl0ZXNgIGZpbGUgc3lzdGVtIHBhdGggYnkgY2FsbGluZyB0aGUgOmZ1bmM6YG9zLmZzcGF0aGAgZnVuY3Rpb247CisgICAgICA6ZnVuYzpgb3MuZnNkZWNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNlbmNvZGVgIGNhbiBiZSB1c2VkIHRvIGd1YXJhbnRlZSBhCisgICAgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgcmVzdWx0IGluc3RlYWQsIHJlc3BlY3RpdmVseS4gSW50cm9kdWNlZAorICAgICAgYnkgOnBlcDpgNTE5YC4KKwogICAgcG9ydGlvbgogICAgICAgQSBzZXQgb2YgZmlsZXMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IChwb3NzaWJseSBzdG9yZWQgaW4gYSB6aXAgZmlsZSkKICAgICAgIHRoYXQgY29udHJpYnV0ZSB0byBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhcyBkZWZpbmVkIGluIDpwZXA6YDQyMGAuCkBAIC05NTIsMTMgKzk5MiwyNSBAQAogICAgICAgYGAnXHInYGAuICBTZWUgOnBlcDpgMjc4YCBhbmQgOnBlcDpgMzExNmAsIGFzIHdlbGwgYXMKICAgICAgIDpmdW5jOmBieXRlcy5zcGxpdGxpbmVzYCBmb3IgYW4gYWRkaXRpb25hbCB1c2UuCiAKKyAgIHZhcmlhYmxlIGFubm90YXRpb24KKyAgICAgIEEgdHlwZSBtZXRhZGF0YSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBtb2R1bGUgZ2xvYmFsIHZhcmlhYmxlIG9yCisgICAgICBhIGNsYXNzIGF0dHJpYnV0ZS4gSXRzIHN5bnRheCBpcyBleHBsYWluZWQgaW4gc2VjdGlvbiA6cmVmOmBhbm5hc3NpZ25gLgorICAgICAgQW5ub3RhdGlvbnMgYXJlIHN0b3JlZCBpbiB0aGUgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2Agc3BlY2lhbAorICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3Mgb3IgbW9kdWxlIG9iamVjdCBhbmQgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nCisgICAgICA6ZnVuYzpgdHlwaW5nLmdldF90eXBlX2hpbnRzYC4KKworICAgICAgUHl0aG9uIGl0c2VsZiBkb2VzIG5vdCBhc3NpZ24gYW55IHBhcnRpY3VsYXIgbWVhbmluZyB0byB2YXJpYWJsZQorICAgICAgYW5ub3RhdGlvbnMuIFRoZXkgYXJlIGludGVuZGVkIHRvIGJlIGludGVycHJldGVkIGJ5IHRoaXJkLXBhcnR5IGxpYnJhcmllcworICAgICAgb3IgdHlwZSBjaGVja2luZyB0b29scy4gU2VlIDpwZXA6YDUyNmAsIDpwZXA6YDQ4NGAgd2hpY2ggZGVzY3JpYmUKKyAgICAgIHNvbWUgb2YgdGhlaXIgcG90ZW50aWFsIHVzZXMuCisKICAgIHZpcnR1YWwgZW52aXJvbm1lbnQKICAgICAgIEEgY29vcGVyYXRpdmVseSBpc29sYXRlZCBydW50aW1lIGVudmlyb25tZW50IHRoYXQgYWxsb3dzIFB5dGhvbiB1c2VycwogICAgICAgYW5kIGFwcGxpY2F0aW9ucyB0byBpbnN0YWxsIGFuZCB1cGdyYWRlIFB5dGhvbiBkaXN0cmlidXRpb24gcGFja2FnZXMKICAgICAgIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgYmVoYXZpb3VyIG9mIG90aGVyIFB5dGhvbiBhcHBsaWNhdGlvbnMKICAgICAgIHJ1bm5pbmcgb24gdGhlIHNhbWUgc3lzdGVtLgogCi0gICAgICBTZWUgYWxzbyA6cmVmOmBzY3JpcHRzLXB5dmVudmAuCisgICAgICBTZWUgYWxzbyA6bW9kOmB2ZW52YC4KIAogICAgdmlydHVhbCBtYWNoaW5lCiAgICAgICBBIGNvbXB1dGVyIGRlZmluZWQgZW50aXJlbHkgaW4gc29mdHdhcmUuICBQeXRob24ncyB2aXJ0dWFsIG1hY2hpbmUKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CmluZGV4IDNiNzliOTIuLjdlMTYxYTUgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdApAQCAtNTQ3LDcgKzU0Nyw4IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgInByb2cucHkiLCBsaW5lIDExLCBpbiA8bW9kdWxlPgogICAgICAgIGlmIGFyZ3MudmVyYm9zaXR5ID49IDI6Ci0gICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBOb25lVHlwZSgpID49IGludCgpCisgICBUeXBlRXJyb3I6ICc+PScgbm90IHN1cHBvcnRlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiAnTm9uZVR5cGUnIGFuZCAnaW50JworCiAKICogRmlyc3Qgb3V0cHV0IHdlbnQgd2VsbCwgYW5kIGZpeGVzIHRoZSBidWcgd2UgaGFkIGJlZm9yZS4KICAgVGhhdCBpcywgd2Ugd2FudCBhbnkgdmFsdWUgPj0gMiB0byBiZSBhcyB2ZXJib3NlIGFzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QgYi9Eb2MvaG93dG8vY2xpbmljLnJzdAppbmRleCA0OTFjNWEyLi5lYWFiMjBhIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vY2xpbmljLnJzdAorKysgYi9Eb2MvaG93dG8vY2xpbmljLnJzdApAQCAtODM0LDkgKzgzNCw5IEBACiBgYCdpJ2BgICAgICBgYGludGBgCiBgYCdJJ2BgICAgICBgYHVuc2lnbmVkX2ludChiaXR3aXNlPVRydWUpYGAKIGBgJ2snYGAgICAgIGBgdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpYGAKLWBgJ0snYGAgICAgIGBgdW5zaWduZWRfUFlfTE9OR19MT05HKGJpdHdpc2U9VHJ1ZSlgYAorYGAnSydgYCAgICAgYGB1bnNpZ25lZF9sb25nX2xvbmcoYml0d2lzZT1UcnVlKWBgCiBgYCdsJ2BgICAgICBgYGxvbmdgYAotYGAnTCdgYCAgICAgYGBQWV9MT05HX0xPTkdgYAorYGAnTCdgYCAgICAgYGBsb25nIGxvbmdgYAogYGAnbidgYCAgICAgYGBQeV9zc2l6ZV90YGAKIGBgJ08nYGAgICAgIGBgb2JqZWN0YGAKIGBgJ08hJ2BgICAgIGBgb2JqZWN0KHN1YmNsYXNzX29mPScmUHlTb21ldGhpbmdfVHlwZScpYGAKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9pbmRleC5yc3QgYi9Eb2MvaG93dG8vaW5kZXgucnN0CmluZGV4IGRlNjU5NTAuLjU5MzM0MWMgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9pbmRleC5yc3QKKysrIGIvRG9jL2hvd3RvL2luZGV4LnJzdApAQCAtMjgsNCArMjgsNSBAQAogICAgYXJncGFyc2UucnN0CiAgICBpcGFkZHJlc3MucnN0CiAgICBjbGluaWMucnN0CisgICBpbnN0cnVtZW50YXRpb24ucnN0CiAKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9pbnN0cnVtZW50YXRpb24ucnN0IGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjYTlhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9ob3d0by9pbnN0cnVtZW50YXRpb24ucnN0CkBAIC0wLDAgKzEsNDA4IEBACisuLiBoaWdobGlnaHQ6OiBzaGVsbC1zZXNzaW9uCisKKy4uIF9pbnN0cnVtZW50YXRpb246CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbnN0cnVtZW50aW5nIENQeXRob24gd2l0aCBEVHJhY2UgYW5kIFN5c3RlbVRhcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmF1dGhvcjogRGF2aWQgTWFsY29sbQorOmF1dGhvcjogxYF1a2FzeiBMYW5nYQorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBhcmUgbW9uaXRvcmluZyB0b29scywgZWFjaCBwcm92aWRpbmcgYSB3YXkgdG8gaW5zcGVjdAord2hhdCB0aGUgcHJvY2Vzc2VzIG9uIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkb2luZy4gIFRoZXkgYm90aCB1c2UKK2RvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXMgYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHNjcmlwdHMgd2hpY2g6CisKKyAgLSBmaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGFyZSB0byBiZSBvYnNlcnZlZAorICAtIGdhdGhlciBkYXRhIGZyb20gdGhlIHByb2Nlc3NlcyBvZiBpbnRlcmVzdAorICAtIGdlbmVyYXRlIHJlcG9ydHMgb24gdGhlIGRhdGEKKworQXMgb2YgUHl0aG9uIDMuNiwgQ1B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aCBlbWJlZGRlZCAibWFya2VycyIsIGFsc28KK2tub3duIGFzICJwcm9iZXMiLCB0aGF0IGNhbiBiZSBvYnNlcnZlZCBieSBhIERUcmFjZSBvciBTeXN0ZW1UYXAgc2NyaXB0LAorbWFraW5nIGl0IGVhc2llciB0byBtb25pdG9yIHdoYXQgdGhlIENQeXRob24gcHJvY2Vzc2VzIG9uIGEgc3lzdGVtIGFyZQorZG9pbmcuCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRFRyYWNlIG1hcmtlcnMgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIENQeXRob24gaW50ZXJwcmV0ZXIuCisgICBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHByb2JlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucyBvZgorICAgQ1B5dGhvbi4gRFRyYWNlIHNjcmlwdHMgY2FuIHN0b3Agd29ya2luZyBvciB3b3JrIGluY29ycmVjdGx5IHdpdGhvdXQKKyAgIHdhcm5pbmcgd2hlbiBjaGFuZ2luZyBDUHl0aG9uIHZlcnNpb25zLgorCisKK0VuYWJsaW5nIHRoZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21hY09TIGNvbWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgRFRyYWNlLiAgT24gTGludXgsIGluIG9yZGVyIHRvCitidWlsZCBDUHl0aG9uIHdpdGggdGhlIGVtYmVkZGVkIG1hcmtlcnMgZm9yIFN5c3RlbVRhcCwgdGhlIFN5c3RlbVRhcAorZGV2ZWxvcG1lbnQgdG9vbHMgbXVzdCBiZSBpbnN0YWxsZWQuCisKK09uIGEgTGludXggbWFjaGluZSwgdGhpcyBjYW4gYmUgZG9uZSB2aWE6OgorCisgICAkIHl1bSBpbnN0YWxsIHN5c3RlbXRhcC1zZHQtZGV2ZWwKKworb3I6OgorCisgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHN5c3RlbXRhcC1zZHQtZGV2CisKKworQ1B5dGhvbiBtdXN0IHRoZW4gYmUgY29uZmlndXJlZCBgYC0td2l0aC1kdHJhY2VgYDoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UuLi4geWVzCisKK09uIG1hY09TLCB5b3UgY2FuIGxpc3QgYXZhaWxhYmxlIERUcmFjZSBwcm9iZXMgYnkgcnVubmluZyBhIFB5dGhvbgorcHJvY2VzcyBpbiB0aGUgYmFja2dyb3VuZCBhbmQgbGlzdGluZyBhbGwgcHJvYmVzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZQorUHl0aG9uIHByb3ZpZGVyOjoKKworICAgJCBweXRob24zLjYgLXEgJgorICAgJCBzdWRvIGR0cmFjZSAtbCAtUCBweXRob24kISAgIyBvcjogZHRyYWNlIC1sIC1tIHB5dGhvbjMuNgorCisgICAgICBJRCAgIFBST1ZJREVSICAgICAgICAgICAgTU9EVUxFICAgICAgICAgICAgICAgICAgICAgICAgICBGVU5DVElPTiBOQU1FCisgICAyOTU2NCBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1lbnRyeQorICAgMjk1NjUgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY2IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjcgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgIGR0cmFjZV9mdW5jdGlvbl9yZXR1cm4gZnVuY3Rpb24tcmV0dXJuCisgICAyOTU2OCBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBnYy1kb25lCisgICAyOTU2OSBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBnYy1zdGFydAorICAgMjk1NzAgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgbGluZQorICAgMjk1NzEgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgbWF5YmVfZHRyYWNlX2xpbmUgbGluZQorCitPbiBMaW51eCwgeW91IGNhbiB2ZXJpZnkgaWYgdGhlIFN5c3RlbVRhcCBzdGF0aWMgbWFya2VycyBhcmUgcHJlc2VudCBpbgordGhlIGJ1aWx0IGJpbmFyeSBieSBzZWVpbmcgaWYgaXQgY29udGFpbnMgYSAiLm5vdGUuc3RhcHNkdCIgc2VjdGlvbi4KKworOjoKKworICAgJCByZWFkZWxmIC1TIC4vcHl0aG9uIHwgZ3JlcCAubm90ZS5zdGFwc2R0CisgICBbMzBdIC5ub3RlLnN0YXBzZHQgICAgICAgIE5PVEUgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMzA4ZDc4CisKK0lmIHlvdSd2ZSBidWlsdCBQeXRob24gYXMgYSBzaGFyZWQgbGlicmFyeSAod2l0aCAtLWVuYWJsZS1zaGFyZWQpLCB5b3UKK25lZWQgdG8gbG9vayBpbnN0ZWFkIHdpdGhpbiB0aGUgc2hhcmVkIGxpYnJhcnkuICBGb3IgZXhhbXBsZTo6CisKKyAgICQgcmVhZGVsZiAtUyBsaWJweXRob24zLjNkbS5zby4xLjAgfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFsyOV0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzNjViNjgKKworU3VmZmljaWVudGx5IG1vZGVybiByZWFkZWxmIGNhbiBwcmludCB0aGUgbWV0YWRhdGE6OgorCisgICAgJCByZWFkZWxmIC1uIC4vcHl0aG9uCisKKyAgICBEaXNwbGF5aW5nIG5vdGVzIGZvdW5kIGF0IGZpbGUgb2Zmc2V0IDB4MDAwMDAyNTQgd2l0aCBsZW5ndGggMHgwMDAwMDAyMDoKKyAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgIERhdGEgc2l6ZSAgICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgICBHTlUgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwICAgICAgICAgIE5UX0dOVV9BQklfVEFHIChBQkkgdmVyc2lvbiB0YWcpCisgICAgICAgICAgICBPUzogTGludXgsIEFCSTogMi42LjMyCisKKyAgICBEaXNwbGF5aW5nIG5vdGVzIGZvdW5kIGF0IGZpbGUgb2Zmc2V0IDB4MDAwMDAyNzQgd2l0aCBsZW5ndGggMHgwMDAwMDAyNDoKKyAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgIERhdGEgc2l6ZSAgICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgICBHTlUgICAgICAgICAgICAgICAgICAweDAwMDAwMDE0ICAgICAgICAgIE5UX0dOVV9CVUlMRF9JRCAodW5pcXVlIGJ1aWxkIElEIGJpdHN0cmluZykKKyAgICAgICAgICAgIEJ1aWxkIElEOiBkZjkyNGEyYjA4YTdlODlmNmUxMTI1MWQ0NjAyMDIyOTc3YWYyNjcwCisKKyAgICBEaXNwbGF5aW5nIG5vdGVzIGZvdW5kIGF0IGZpbGUgb2Zmc2V0IDB4MDAyZDZjMzAgd2l0aCBsZW5ndGggMHgwMDAwMDE0NDoKKyAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgIERhdGEgc2l6ZSAgICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDMxICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGdjX19zdGFydAorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzFjMywgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmNgorICAgICAgICAgICAgQXJndW1lbnRzOiAtNEAlZWJ4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzAgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX2RvbmUKKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA0Mzc0ZTEsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZjgKKyAgICAgICAgICAgIEFyZ3VtZW50czogLThAJXJheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ1ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19lbnRyeQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDUzZGI2YywgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJlOAorICAgICAgICAgICAgQXJndW1lbnRzOiA4QCVyYnAgOEAlcjEyIC00QCVlYXgKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDA0NiAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBmdW5jdGlvbl9fcmV0dXJuCisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYmE4LCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmVhCisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorCitUaGUgYWJvdmUgbWV0YWRhdGEgY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIFN5c3RlbVRhcCBkZXNjcmliaW5nIGhvdyBpdAorY2FuIHBhdGNoIHN0cmF0ZWdpY2FsbHktcGxhY2VkIG1hY2hpbmUgY29kZSBpbnN0cnVjdGlvbnMgdG8gZW5hYmxlIHRoZQordHJhY2luZyBob29rcyB1c2VkIGJ5IGEgU3lzdGVtVGFwIHNjcmlwdC4KKworCitTdGF0aWMgRFRyYWNlIHByb2JlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIERUcmFjZSBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQsIG9ubHkgdHJhY2luZyB3aXRoaW4gdGhlIGludm9jYXRpb24gb2YKK2EgZnVuY3Rpb24gY2FsbGVkICJzdGFydCIuIEluIG90aGVyIHdvcmRzLCBpbXBvcnQtdGltZSBmdW5jdGlvbgoraW52b2NhdGlvbnMgYXJlIG5vdCBnb2luZyB0byBiZSBsaXN0ZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBzZWxmIGludCBpbmRlbnQ7CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKyAgICAvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCisgICAgeworICAgICAgICAgICAgc2VsZi0+dHJhY2UgPSAxOworICAgIH0KKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9zZWxmLT50cmFjZS8KKyAgICB7CisgICAgICAgICAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICAgICAgICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7CisgICAgICAgICAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworICAgICAgICAgICAgc2VsZi0+aW5kZW50Kys7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorICAgIC9zZWxmLT50cmFjZS8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQtLTsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDA7CisgICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6OgorCisgICQgc3VkbyBkdHJhY2UgLXEgLXMgY2FsbF9zdGFjay5kIC1jICJweXRob24zLjYgc2NyaXB0LnB5IgorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworICAgIDE1NjY0MTM2MDUxODgwNCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgICAgMTU2NjQxMzYwNTMyNzk3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CisgICAgMTU2NjQxMzYwNTQ2ODA3IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDU2MzM2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCisgICAgMTU2NjQxMzYwNTc4MzY1ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKKyAgICAxNTY2NDEzNjA1OTE3NTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA2MDU1NTYgIGZ1bmN0aW9uLWVudHJ5OiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CisgICAgMTU2NjQxMzYwNjE3NDgyIGZ1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2Mjk4MTQgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA2NDIyODUgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NgorICAgIDE1NjY0MTM2MDY1Njc3MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CisgICAgMTU2NjQxMzYwNjY5NzA3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNjg3ODUzICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCisgICAgMTU2NjQxMzYwNzAwNzE5IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CisgICAgMTU2NjQxMzYwNzE5NjQwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4CisgICAgMTU2NjQxMzYwNzMyNTY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjIxCisgICAgMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CisKKworU3RhdGljIFN5c3RlbVRhcCBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGxvdy1sZXZlbCB3YXkgdG8gdXNlIHRoZSBTeXN0ZW1UYXAgaW50ZWdyYXRpb24gaXMgdG8gdXNlIHRoZSBzdGF0aWMKK21hcmtlcnMgZGlyZWN0bHkuICBUaGlzIHJlcXVpcmVzIHlvdSB0byBleHBsaWNpdGx5IHN0YXRlIHRoZSBiaW5hcnkgZmlsZQorY29udGFpbmluZyB0aGVtLgorCitGb3IgZXhhbXBsZSwgdGhpcyBTeXN0ZW1UYXAgc2NyaXB0IGNhbiBiZSB1c2VkIHRvIHNob3cgdGhlIGNhbGwvcmV0dXJuCitoaWVyYXJjaHkgb2YgYSBQeXRob24gc2NyaXB0OgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICBwcm9iZSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisgICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICAgbGluZW5vID0gJGFyZzM7CisKKyAgICAgICAgcHJpbnRmKCIlcyA9PiAlcyBpbiAlczolZFxcbiIsCisgICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KDEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICB9CisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKSB7CisgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgbGluZW5vID0gJGFyZzM7CisKKyAgICAgICBwcmludGYoIiVzIDw9ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgtMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworSXQgY2FuIGJlIGludm9rZWQgbGlrZSB0aGlzOjoKKworICAgJCBzdGFwIFwKKyAgICAgc2hvdy1jYWxsLWhpZXJhcmNoeS5zdHAgXAorICAgICAtYyAiLi9weXRob24gdGVzdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgIDExNDA4IHB5dGhvbig4Mjc0KTogICAgICAgID0+IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjIKKyAgIDExNDE0IHB5dGhvbig4Mjc0KTogICAgICAgICA9PiBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI1CisgICAxMTQxOCBweXRob24oODI3NCk6ICAgICAgICAgID0+IGVuY29kZSBpbiBMaWIvb3MucHk6NDkwCisgICAxMTQyNCBweXRob24oODI3NCk6ICAgICAgICAgIDw9IGVuY29kZSBpbiBMaWIvb3MucHk6NDkzCisgICAxMTQyOCBweXRob24oODI3NCk6ICAgICAgICAgPD0gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNgorICAgMTE0MzMgcHl0aG9uKDgyNzQpOiAgICAgICAgPD0gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2NgorCit3aGVyZSB0aGUgY29sdW1ucyBhcmU6CisKKyAgLSB0aW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBzdGFydCBvZiBzY3JpcHQKKworICAtIG5hbWUgb2YgZXhlY3V0YWJsZQorCisgIC0gUElEIG9mIHByb2Nlc3MKKworYW5kIHRoZSByZW1haW5kZXIgaW5kaWNhdGVzIHRoZSBjYWxsL3JldHVybiBoaWVyYXJjaHkgYXMgdGhlIHNjcmlwdCBleGVjdXRlcy4KKworRm9yIGEgYC0tZW5hYmxlLXNoYXJlZGAgYnVpbGQgb2YgQ1B5dGhvbiwgdGhlIG1hcmtlcnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlCitsaWJweXRob24gc2hhcmVkIGxpYnJhcnksIGFuZCB0aGUgcHJvYmUncyBkb3R0ZWQgcGF0aCBuZWVkcyB0byByZWZsZWN0IHRoaXMuIEZvcgorZXhhbXBsZSwgdGhpcyBsaW5lIGZyb20gdGhlIGFib3ZlIGV4YW1wbGU6OgorCisgICBwcm9iZSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKK3Nob3VsZCBpbnN0ZWFkIHJlYWQ6OgorCisgICBwcm9iZSBwcm9jZXNzKCJweXRob24iKS5saWJyYXJ5KCJsaWJweXRob24zLjZkbS5zby4xLjAiKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKKyhhc3N1bWluZyBhIGRlYnVnIGJ1aWxkIG9mIENQeXRob24gMy42KQorCisKK0F2YWlsYWJsZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIEknbSByZXVzaW5nIHRoZSAiYzpmdW5jdGlvbiIgdHlwZSBmb3IgbWFya2VycworCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX2VudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgZmlsZW5hbWUsIGZ1bmN0aW9uIG5hbWUsIGFuZCBsaW5lIG51bWJlciBhcmUgcHJvdmlkZWQgYmFjayB0byB0aGUKKyAgIHRyYWNpbmcgc2NyaXB0IGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nCisgICBgYCRhcmcxYGAsIGBgJGFyZzJgYCwgYGAkYXJnM2BgOgorCisgICAgICAgKiBgYCRhcmcxYGAgOiBgYChjb25zdCBjaGFyICopYGAgZmlsZW5hbWUsIGFjY2Vzc2libGUgdXNpbmcgYGB1c2VyX3N0cmluZygkYXJnMSlgYAorCisgICAgICAgKiBgYCRhcmcyYGAgOiBgYChjb25zdCBjaGFyICopYGAgZnVuY3Rpb24gbmFtZSwgYWNjZXNzaWJsZSB1c2luZworICAgICAgICAgYGB1c2VyX3N0cmluZygkYXJnMilgYAorCisgICAgICAgKiBgYCRhcmczYGAgOiBgYGludGBgIGxpbmUgbnVtYmVyCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fcmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YCwgYW5kIGluZGljYXRlcyB0aGF0CisgICBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhIGBgcmV0dXJuYGAsIG9yIHZpYSBhbgorICAgZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAKKworLi4gYzpmdW5jdGlvbjo6IGxpbmUoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyBhIFB5dGhvbiBsaW5lIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkLiAgSXQgaXMKKyAgIHRoZSBlcXVpdmFsZW50IG9mIGxpbmUtYnktbGluZSB0cmFjaW5nIHdpdGggYSBQeXRob24gcHJvZmlsZXIuICBJdCBpcworICAgbm90IHRyaWdnZXJlZCB3aXRoaW4gQyBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX3N0YXJ0KGludCBnZW5lcmF0aW9uKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3RhcnRzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLgorICAgYGBhcmcwYGAgaXMgdGhlIGdlbmVyYXRpb24gdG8gc2NhbiwgbGlrZSA6ZnVuYzpgZ2MuY29sbGVjdCgpYC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19kb25lKGxvbmcgY29sbGVjdGVkKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZmluaXNoZXMgYSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgIGN5Y2xlLiBgYGFyZzBgYCBpcyB0aGUgbnVtYmVyIG9mIGNvbGxlY3RlZCBvYmplY3RzLgorCisKK1N5c3RlbVRhcCBUYXBzZXRzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaGlnaGVyLWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgYSAidGFwc2V0IjoKK1N5c3RlbVRhcCdzIGVxdWl2YWxlbnQgb2YgYSBsaWJyYXJ5LCB3aGljaCBoaWRlcyBzb21lIG9mIHRoZSBsb3dlci1sZXZlbAorZGV0YWlscyBvZiB0aGUgc3RhdGljIG1hcmtlcnMuCisKK0hlcmUgaXMgYSB0YXBzZXQgZmlsZSwgYmFzZWQgb24gYSBub24tc2hhcmVkIGJ1aWxkIG9mIENQeXRob246CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICAvKgorICAgICAgIFByb3ZpZGUgYSBoaWdoZXItbGV2ZWwgd3JhcHBpbmcgYXJvdW5kIHRoZSBmdW5jdGlvbl9fZW50cnkgYW5kCisgICAgICAgZnVuY3Rpb25fX3JldHVybiBtYXJrZXJzOgorICAgICBcKi8KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkgPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorCitJZiB0aGlzIGZpbGUgaXMgaW5zdGFsbGVkIGluIFN5c3RlbVRhcCdzIHRhcHNldCBkaXJlY3RvcnkgKGUuZy4KK2BgL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0YGApLCB0aGVuIHRoZXNlIGFkZGl0aW9uYWwgcHJvYmVwb2ludHMgYmVjb21lCithdmFpbGFibGU6CisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24uZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24ucmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgcHl0aG9uLmZ1bmN0aW9uLnJldHVybmAsIGFuZAorICAgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYQorICAgYGByZXR1cm5gYCwgb3IgdmlhIGFuIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24KKyAgIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorVGhpcyBTeXN0ZW1UYXAgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBtb3JlIGNsZWFubHkgaW1wbGVtZW50IHRoZQorZXhhbXBsZSBnaXZlbiBhYm92ZSBvZiB0cmFjaW5nIHRoZSBQeXRob24gZnVuY3Rpb24tY2FsbCBoaWVyYXJjaHksIHdpdGhvdXQKK25lZWRpbmcgdG8gZGlyZWN0bHkgbmFtZSB0aGUgc3RhdGljIG1hcmtlcnM6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuCisgICAgeworICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworCitUaGUgZm9sbG93aW5nIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gcHJvdmlkZSBhIHRvcC1saWtlIHZpZXcgb2YgYWxsCitydW5uaW5nIENQeXRob24gY29kZSwgc2hvd2luZyB0aGUgdG9wIDIwIG1vc3QgZnJlcXVlbnRseS1lbnRlcmVkIGJ5dGVjb2RlCitmcmFtZXMsIGVhY2ggc2Vjb25kLCBhY3Jvc3MgdGhlIHdob2xlIHN5c3RlbToKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIGdsb2JhbCBmbl9jYWxsczsKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgICAgZm5fY2FsbHNbcGlkKCksIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSArPSAxOworICAgIH0KKworICAgIHByb2JlIHRpbWVyLm1zKDEwMDApIHsKKyAgICAgICAgcHJpbnRmKCJcMDMzWzJKXDAzM1sxOzFIIikgLyogY2xlYXIgc2NyZWVuIFwqLworICAgICAgICBwcmludGYoIiU2cyAlODBzICU2cyAlMzBzICU2c1xuIiwKKyAgICAgICAgICAgICAgICJQSUQiLCAiRklMRU5BTUUiLCAiTElORSIsICJGVU5DVElPTiIsICJDQUxMUyIpCisgICAgICAgIGZvcmVhY2ggKFtwaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSBpbiBmbl9jYWxscy0gbGltaXQgMjApIHsKKyAgICAgICAgICAgIHByaW50ZigiJTZkICU4MHMgJTZkICUzMHMgJTZkXG4iLAorICAgICAgICAgICAgICAgIHBpZCwgZmlsZW5hbWUsIGxpbmVubywgZnVuY25hbWUsCisgICAgICAgICAgICAgICAgZm5fY2FsbHNbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10pOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBmbl9jYWxsczsKKyAgICB9CisKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMWY3MjcuLjAwMDAwMDAKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzbXRwbGliCi0KLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCi1mcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCi1mcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCi0KLSMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KLW1zZyA9IEVtYWlsTWVzc2FnZSgpCi1tc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKLW1zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQotbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCi0gICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKLW1zZy5zZXRfY29udGVudCgiIiJcCi1TYWx1dCEKLQotQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi1bMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAotCi0tLVBlcMOpCi0iIiIpCi0KLSMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKLSMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAotIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KLWFzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKLW1zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAotPGh0bWw+Ci0gIDxoZWFkPjwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPHA+U2FsdXQhPFxwPgotICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAotICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgotICAgICAgICAgICAgcmVjaXBpZQotICAgICAgICA8L2E+IGTDqWpldW5lci4KLSAgICA8L3A+Ci0gICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIFw+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCi0jIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgotCi0jIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KLXdpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgotICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKLQotIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgotd2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgotICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKLQotIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDg1MDcwZjMuLjJlMTQyYjEKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpAQCAtMiw0NyArMiw1NSBAQAogCiBpbXBvcnQgc210cGxpYgogCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCiAKLSMgbWUgPT0gbXkgZW1haWwgYWRkcmVzcwotIyB5b3UgPT0gcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwotbWUgPSAibXlAZW1haWwuY29tIgoteW91ID0gInlvdXJAZW1haWwuY29tIgorIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKK21zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgorbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCittc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQorbXNnLnNldF9jb250ZW50KCIiIlwKK1NhbHV0IQogCi0jIENyZWF0ZSBtZXNzYWdlIGNvbnRhaW5lciAtIHRoZSBjb3JyZWN0IE1JTUUgdHlwZSBpcyBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCi1tc2dbJ1N1YmplY3QnXSA9ICJMaW5rIgotbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0geW91CitDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCiAKLSMgQ3JlYXRlIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIChhIHBsYWluLXRleHQgYW5kIGFuIEhUTUwgdmVyc2lvbikuCi10ZXh0ID0gIkhpIVxuSG93IGFyZSB5b3U/XG5IZXJlIGlzIHRoZSBsaW5rIHlvdSB3YW50ZWQ6XG5odHRwczovL3d3dy5weXRob24ub3JnIgotaHRtbCA9ICIiIlwKK1sxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4CisKKy0tUGVww6kKKyIiIikKKworIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQorIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCisjIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgorYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQorbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCiA8aHRtbD4KICAgPGhlYWQ+PC9oZWFkPgogICA8Ym9keT4KLSAgICA8cD5IaSE8YnI+Ci0gICAgICAgSG93IGFyZSB5b3U/PGJyPgotICAgICAgIEhlcmUgaXMgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmciPmxpbms8L2E+IHlvdSB3YW50ZWQuCisgICAgPHA+U2FsdXQhPC9wPgorICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAorICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgorICAgICAgICAgICAgcmVjaXBpZQorICAgICAgICA8L2E+IGTDqWpldW5lci4KICAgICA8L3A+CisgICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIC8+CiAgIDwvYm9keT4KIDwvaHRtbD4KLSIiIgorIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKKyMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCiAKLSMgUmVjb3JkIHRoZSBNSU1FIHR5cGVzIG9mIGJvdGggcGFydHMgLSB0ZXh0L3BsYWluIGFuZCB0ZXh0L2h0bWwuCi1wYXJ0MSA9IE1JTUVUZXh0KHRleHQsICdwbGFpbicpCi1wYXJ0MiA9IE1JTUVUZXh0KGh0bWwsICdodG1sJykKKyMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgord2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6CisgICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQogCi0jIEF0dGFjaCBwYXJ0cyBpbnRvIG1lc3NhZ2UgY29udGFpbmVyLgotIyBBY2NvcmRpbmcgdG8gUkZDIDIwNDYsIHRoZSBsYXN0IHBhcnQgb2YgYSBtdWx0aXBhcnQgbWVzc2FnZSwgaW4gdGhpcyBjYXNlCi0jIHRoZSBIVE1MIG1lc3NhZ2UsIGlzIGJlc3QgYW5kIHByZWZlcnJlZC4KLW1zZy5hdHRhY2gocGFydDEpCi1tc2cuYXR0YWNoKHBhcnQyKQorIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgord2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgorICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKIAogIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi0jIHNlbmRtYWlsIGZ1bmN0aW9uIHRha2VzIDMgYXJndW1lbnRzOiBzZW5kZXIncyBhZGRyZXNzLCByZWNpcGllbnQncyBhZGRyZXNzCi0jIGFuZCBtZXNzYWdlIHRvIHNlbmQgLSBoZXJlIGl0IGlzIHNlbnQgYXMgb25lIHN0cmluZy4KLXMuc2VuZG1haWwobWUsIHlvdSwgbXNnLmFzX3N0cmluZygpKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CmluZGV4IDNjN2M3NzAuLjBkY2ZiZmIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQpAQCAtMywyMiArMywxNCBAQAogIiIiU2VuZCB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYSBNSU1FIG1lc3NhZ2UuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHNtdHBsaWIKICMgRm9yIGd1ZXNzaW5nIE1JTUUgdHlwZSBiYXNlZCBvbiBmaWxlIG5hbWUgZXh0ZW5zaW9uCiBpbXBvcnQgbWltZXR5cGVzCiAKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKLWZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKLWZyb20gZW1haWwubWltZS5hdWRpbyBpbXBvcnQgTUlNRUF1ZGlvCi1mcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKLQotQ09NTUFTUEFDRSA9ICcsICcKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgU01UUAogCiAKIGRlZiBtYWluKCk6CkBAIC00NywxMiArMzksMTIgQEAKICAgICBkaXJlY3RvcnkgPSBhcmdzLmRpcmVjdG9yeQogICAgIGlmIG5vdCBkaXJlY3Rvcnk6CiAgICAgICAgIGRpcmVjdG9yeSA9ICcuJwotICAgICMgQ3JlYXRlIHRoZSBlbmNsb3NpbmcgKG91dGVyKSBtZXNzYWdlCi0gICAgb3V0ZXIgPSBNSU1FTXVsdGlwYXJ0KCkKLSAgICBvdXRlclsnU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQotICAgIG91dGVyWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGFyZ3MucmVjaXBpZW50cykKLSAgICBvdXRlclsnRnJvbSddID0gYXJncy5zZW5kZXIKLSAgICBvdXRlci5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJworICAgICMgQ3JlYXRlIHRoZSBtZXNzYWdlCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2dbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKKyAgICBtc2dbJ1RvJ10gPSAnLCAnLmpvaW4oYXJncy5yZWNpcGllbnRzKQorICAgIG1zZ1snRnJvbSddID0gYXJncy5zZW5kZXIKKyAgICBtc2cucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKIAogICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSkKQEAgLTY3LDMzICs1OSwxOCBAQAogICAgICAgICAgICAgIyB1c2UgYSBnZW5lcmljIGJhZy1vZi1iaXRzIHR5cGUuCiAgICAgICAgICAgICBjdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIG1haW50eXBlLCBzdWJ0eXBlID0gY3R5cGUuc3BsaXQoJy8nLCAxKQotICAgICAgICBpZiBtYWludHlwZSA9PSAndGV4dCc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBOb3RlOiB3ZSBzaG91bGQgaGFuZGxlIGNhbGN1bGF0aW5nIHRoZSBjaGFyc2V0Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdpbWFnZSc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUltYWdlKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnYXVkaW8nOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVBdWRpbyhmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUJhc2UobWFpbnR5cGUsIHN1YnR5cGUpCi0gICAgICAgICAgICAgICAgbXNnLnNldF9wYXlsb2FkKGZwLnJlYWQoKSkKLSAgICAgICAgICAgICMgRW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIEJhc2U2NAotICAgICAgICAgICAgZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NChtc2cpCi0gICAgICAgICMgU2V0IHRoZSBmaWxlbmFtZSBwYXJhbWV0ZXIKLSAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPWZpbGVuYW1lKQotICAgICAgICBvdXRlci5hdHRhY2gobXNnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2cuYWRkX2F0dGFjaG1lbnQoZnAucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlPW1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9c3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKICAgICAjIE5vdyBzZW5kIG9yIHN0b3JlIHRoZSBtZXNzYWdlCi0gICAgY29tcG9zZWQgPSBvdXRlci5hc19zdHJpbmcoKQogICAgIGlmIGFyZ3Mub3V0cHV0OgotICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShjb21wb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKG1zZy5hc19ieXRlcyhwb2xpY3k9U01UUCkpCiAgICAgZWxzZToKICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgICAgICAgICBzLnNlbmRtYWlsKGFyZ3Muc2VuZGVyLCBhcmdzLnJlY2lwaWVudHMsIGNvbXBvc2VkKQorICAgICAgICAgICAgcy5zZW5kX21lc3NhZ2UobXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CmluZGV4IDg5YzhmM2EuLjJjNDIxNDUgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CkBAIC0xLDE4ICsxLDI0IEBACiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgUGFyc2VyCitmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgQnl0ZXNQYXJzZXIsIFBhcnNlcgorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIAogIyBJZiB0aGUgZS1tYWlsIGhlYWRlcnMgYXJlIGluIGEgZmlsZSwgdW5jb21tZW50IHRoZXNlIHR3byBsaW5lczoKLSMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlKSBhcyBmcDoKLSMgICAgIGhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZShmcCkKKyMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlLCAncmInKSBhcyBmcDoKKyMgICAgIGhlYWRlcnMgPSBCeXRlc1BhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2UoZnApCiAKLSMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcsIHVzZToKLWhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZXN0cignRnJvbTogPHVzZXJAZXhhbXBsZS5jb20+XG4nCisjICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nICh0aGlzIGlzIGFuIHVuY29tbW9uIG9wZXJhdGlvbiksIHVzZToKK2hlYWRlcnMgPSBQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlc3RyKAorICAgICAgICAnRnJvbTogRm9vIEJhciA8dXNlckBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1RvOiA8c29tZW9uZV9lbHNlQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnU3ViamVjdDogVGVzdCBtZXNzYWdlXG4nCiAgICAgICAgICdcbicKICAgICAgICAgJ0JvZHkgd291bGQgZ28gaGVyZVxuJykKIAogIyAgTm93IHRoZSBoZWFkZXIgaXRlbXMgY2FuIGJlIGFjY2Vzc2VkIGFzIGEgZGljdGlvbmFyeToKLXByaW50KCdUbzogJXMnICUgaGVhZGVyc1sndG8nXSkKLXByaW50KCdGcm9tOiAlcycgJSBoZWFkZXJzWydmcm9tJ10pCi1wcmludCgnU3ViamVjdDogJXMnICUgaGVhZGVyc1snc3ViamVjdCddKQorcHJpbnQoJ1RvOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10pKQorcHJpbnQoJ0Zyb206IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddKSkKK3ByaW50KCdTdWJqZWN0OiB7fScuZm9ybWF0KGhlYWRlcnNbJ3N1YmplY3QnXSkpCisKKyMgWW91IGNhbiBhbHNvIGFjY2VzcyB0aGUgcGFydHMgb2YgdGhlIGFkZHJlc3NlczoKK3ByaW50KCdSZWNpcGllbnQgdXNlcm5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUpKQorcHJpbnQoJ1NlbmRlciBuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXS5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lKSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKaW5kZXggNjFkMDgzMC4uYzYxMDI0MiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKQEAgLTEsMzAgKzEsMjkgQEAKICMgSW1wb3J0IHNtdHBsaWIgZm9yIHRoZSBhY3R1YWwgc2VuZGluZyBmdW5jdGlvbgogaW1wb3J0IHNtdHBsaWIKIAorIyBBbmQgaW1naGRyIHRvIGZpbmQgdGhlIHR5cGVzIG9mIG91ciBpbWFnZXMKK2ltcG9ydCBpbWdoZHIKKwogIyBIZXJlIGFyZSB0aGUgZW1haWwgcGFja2FnZSBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi1DT01NQVNQQUNFID0gJywgJwotCi0jIENyZWF0ZSB0aGUgY29udGFpbmVyIChvdXRlcikgZW1haWwgbWVzc2FnZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoKQorIyBDcmVhdGUgdGhlIGNvbnRhaW5lciBlbWFpbCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKIG1zZ1snU3ViamVjdCddID0gJ091ciBmYW1pbHkgcmV1bmlvbicKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgZmFtaWx5ID0gdGhlIGxpc3Qgb2YgYWxsIHJlY2lwaWVudHMnIGVtYWlsIGFkZHJlc3NlcwogbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGZhbWlseSkKK21zZ1snVG8nXSA9ICcsICcuam9pbihmYW1pbHkpCiBtc2cucHJlYW1ibGUgPSAnT3VyIGZhbWlseSByZXVuaW9uJwogCi0jIEFzc3VtZSB3ZSBrbm93IHRoYXQgdGhlIGltYWdlIGZpbGVzIGFyZSBhbGwgaW4gUE5HIGZvcm1hdAorIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIFVzZSBpbWdoZHIgdG8gZmlndXJlIG91dCB0aGUKKyMgTUlNRSBzdWJ0eXBlIGZvciBlYWNoIHNwZWNpZmljIGltYWdlLgogZm9yIGZpbGUgaW4gcG5nZmlsZXM6Ci0gICAgIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIExldCB0aGUgTUlNRUltYWdlIGNsYXNzIGF1dG9tYXRpY2FsbHkKLSAgICAjIGd1ZXNzIHRoZSBzcGVjaWZpYyBpbWFnZSB0eXBlLgogICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKLSAgICAgICAgaW1nID0gTUlNRUltYWdlKGZwLnJlYWQoKSkKLSAgICBtc2cuYXR0YWNoKGltZykKKyAgICAgICAgaW1nX2RhdGEgPSBmcC5yZWFkKCkKKyAgICBtc2cuYWRkX2F0dGFjaG1lbnQoaW1nX2RhdGEsIG1haW50eXBlPSdpbWFnZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPWltZ2hkci53aGF0KE5vbmUsIGltZ19kYXRhKSkKIAogIyBTZW5kIHRoZSBlbWFpbCB2aWEgb3VyIG93biBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi1zLnNlbmRfbWVzc2FnZShtc2cpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CnJlbmFtZSB0byBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKaW5kZXggYjliOGI0MS4uZjY5ZWY0MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgc210cGxpYgogCiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLSMgT3BlbiBhIHBsYWluIHRleHQgZmlsZSBmb3IgcmVhZGluZy4gIEZvciB0aGlzIGV4YW1wbGUsIGFzc3VtZSB0aGF0Ci0jIHRoZSB0ZXh0IGZpbGUgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLgorIyBPcGVuIHRoZSBwbGFpbiB0ZXh0IGZpbGUgd2hvc2UgbmFtZSBpcyBpbiB0ZXh0ZmlsZSBmb3IgcmVhZGluZy4KIHdpdGggb3Blbih0ZXh0ZmlsZSkgYXMgZnA6CiAgICAgIyBDcmVhdGUgYSB0ZXh0L3BsYWluIG1lc3NhZ2UKLSAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCkpCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2cuc2V0X2NvbnRlbnQoZnAucmVhZCgpKQogCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIHlvdSA9PSB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKaW5kZXggNTc0YTBiNi4uZTBhN2YwMSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CkBAIC0zLDExICszLDExIEBACiAiIiJVbnBhY2sgYSBNSU1FIG1lc3NhZ2UgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlcy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgZW1haWwKLWltcG9ydCBlcnJubwogaW1wb3J0IG1pbWV0eXBlcwogCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAorCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCiAKQEAgLTIyLDggKzIyLDggQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdtc2dmaWxlJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSkgYXMgZnA6Ci0gICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGZwKQorICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUsICdyYicpIGFzIGZwOgorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIHBvbGljeT1kZWZhdWx0KQogCiAgICAgdHJ5OgogICAgICAgICBvcy5ta2RpcihhcmdzLmRpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggOTg2ZDY3MC4uZWFkN2JkZCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTYzLDYgKzYzLDggQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBcIiVzXCJcbiIsIGFyZ3ZbMV0pOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXR1cm4gMTIwOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5IGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKaW5kZXggN2ViZjQ2YS4uOWU5ZDRhNiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkKKysrIGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKQEAgLTIwNCw3ICsyMDQsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KLVBMQVRfU1BFQyA9ICIlcy0lcyIgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzA6M10pCitQTEFUX1NQRUMgPSAiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiBzcmMgPSBvcy5wYXRoLmpvaW4oImJ1aWxkIiwgImxpYi4lcyIgJSBQTEFUX1NQRUMpCiBzeXMucGF0aC5hcHBlbmQoc3JjKQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5IGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQppbmRleCAzYThjZjQ3Li5hZTVhNTA5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKQEAgLTEsNDYgKzEsMTMgQEAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lLCB0aW1lem9uZQogCiBaRVJPID0gdGltZWRlbHRhKDApCiBIT1VSID0gdGltZWRlbHRhKGhvdXJzPTEpCi0KLSMgQSBVVEMgY2xhc3MuCi0KLWNsYXNzIFVUQyh0emluZm8pOgotICAgICIiIlVUQyIiIgotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuICJVVEMiCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotdXRjID0gVVRDKCkKLQotIyBBIGNsYXNzIGJ1aWxkaW5nIHR6aW5mbyBvYmplY3RzIGZvciBmaXhlZC1vZmZzZXQgdGltZSB6b25lcy4KLSMgTm90ZSB0aGF0IEZpeGVkT2Zmc2V0KDAsICJVVEMiKSBpcyBhIGRpZmZlcmVudCB3YXkgdG8gYnVpbGQgYQotIyBVVEMgdHppbmZvIG9iamVjdC4KLQotY2xhc3MgRml4ZWRPZmZzZXQodHppbmZvKToKLSAgICAiIiJGaXhlZCBvZmZzZXQgaW4gbWludXRlcyBlYXN0IGZyb20gVVRDLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9mZnNldCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX19vZmZzZXQgPSB0aW1lZGVsdGEobWludXRlcz1vZmZzZXQpCi0gICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fb2Zmc2V0Ci0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KK1NFQ09ORCA9IHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKICMgQSBjbGFzcyBjYXB0dXJpbmcgdGhlIHBsYXRmb3JtJ3MgaWRlYSBvZiBsb2NhbCB0aW1lLgotCisjIChNYXkgcmVzdWx0IGluIHdyb25nIHZhbHVlcyBvbiBoaXN0b3JpY2FsIHRpbWVzIGluCisjICB0aW1lem9uZXMgd2hlcmUgVVRDIG9mZnNldCBhbmQvb3IgdGhlIERTVCBydWxlcyBoYWQKKyMgIGNoYW5nZWQgaW4gdGhlIHBhc3QuKQogaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogU1RET0ZGU0VUID0gdGltZWRlbHRhKHNlY29uZHMgPSAtX3RpbWUudGltZXpvbmUpCkBAIC01Myw2ICsyMCwxNiBAQAogCiBjbGFzcyBMb2NhbFRpbWV6b25lKHR6aW5mbyk6CiAKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz1zZWxmKSkgLy8gU0VDT05ECisgICAgICAgIGFyZ3MgPSBfdGltZS5sb2NhbHRpbWUoc3RhbXApWzo2XQorICAgICAgICBkc3RfZGlmZiA9IERTVERJRkYgLy8gU0VDT05ECisgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgZm9sZCA9IChhcmdzID09IF90aW1lLmxvY2FsdGltZShzdGFtcCAtIGRzdF9kaWZmKSkKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKCphcmdzLCBtaWNyb3NlY29uZD1kdC5taWNyb3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz1zZWxmLCBmb2xkPWZvbGQpCisKICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKICAgICAgICAgaWYgc2VsZi5faXNkc3QoZHQpOgogICAgICAgICAgICAgcmV0dXJuIERTVE9GRlNFVApAQCAtOTksMjAgKzc2LDM3IEBACiAjIEluIHRoZSBVUywgc2luY2UgMjAwNywgRFNUIHN0YXJ0cyBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBzZWNvbmQKICMgU3VuZGF5IGluIE1hcmNoLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE1hciA4LgogRFNUU1RBUlRfMjAwNyA9IGRhdGV0aW1lKDEsIDMsIDgsIDIpCi0jIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KLURTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDEpCisjIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgorRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMikKICMgRnJvbSAxOTg3IHRvIDIwMDYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0Ci0jIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAorIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgbGFzdAogIyBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCA0LCAxLCAyKQotRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMSkKK0RTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDIpCiAjIEZyb20gMTk2NyB0byAxOTg2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0Ci0jIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOwotIyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKKyMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpCisjIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CiAjIG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5NjdfMTk4NiA9IGRhdGV0aW1lKDEsIDQsIDI0LCAyKQogRFNURU5EXzE5NjdfMTk4NiA9IERTVEVORF8xOTg3XzIwMDYKIAorZGVmIHVzX2RzdF9yYW5nZSh5ZWFyKToKKyAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgorICAgICMgc3RhcnQgPSBlbmQgZm9yIG5vIERTVC4KKyAgICBpZiAyMDA2IDwgeWVhcjoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3CisgICAgZWxpZiAxOTg2IDwgeWVhciA8IDIwMDc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKKyAgICBlbGlmIDE5NjYgPCB5ZWFyIDwgMTk4NzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeWVhciwgMSwgMSksICkgKiAyCisKKyAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgcmV0dXJuIHN0YXJ0LCBlbmQKKworCiBjbGFzcyBVU1RpbWVab25lKHR6aW5mbyk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKQEAgLTE0MSwyNyArMTM1LDM5IEBACiAgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uKSBwYXNzZXMgYSBkYXRldGltZSB3aXRoIGR0LnR6aW5mbyBpcyBzZWxmLgogICAgICAgICAgICAgcmV0dXJuIFpFUk8KICAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCi0KLSAgICAgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KLSAgICAgICAgIyBaRVJPIGZvciBubyBEU1QuCi0gICAgICAgIGlmIDIwMDYgPCBkdC55ZWFyOgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3Ci0gICAgICAgIGVsaWYgMTk4NiA8IGR0LnllYXIgPCAyMDA3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgotICAgICAgICBlbGlmIDE5NjYgPCBkdC55ZWFyIDwgMTk4NzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCi0KLSAgICAgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLQorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCiAgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQogICAgICAgICAjIGR0IGZpcnN0LgotICAgICAgICBpZiBzdGFydCA8PSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSA8IGVuZDoKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICBpZiBzdGFydCArIEhPVVIgPD0gZHQgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgogICAgICAgICAgICAgcmV0dXJuIEhPVVIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGlmIGVuZCAtIEhPVVIgPD0gZHQgPCBlbmQ6CisgICAgICAgICAgICAjIEZvbGQgKGFuIGFtYmlndW91cyBob3VyKTogdXNlIGR0LmZvbGQgdG8gZGlzYW1iaWd1YXRlLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8gaWYgZHQuZm9sZCBlbHNlIEhPVVIKKyAgICAgICAgaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgICMgRFNUIGlzIG9mZi4KKyAgICAgICAgcmV0dXJuIFpFUk8KKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKKyAgICAgICAgc3RhcnQgPSBzdGFydC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBlbmQgPSBlbmQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgc3RkX3RpbWUgPSBkdCArIHNlbGYuc3Rkb2Zmc2V0CisgICAgICAgIGRzdF90aW1lID0gc3RkX3RpbWUgKyBIT1VSCisgICAgICAgIGlmIGVuZCA8PSBkc3RfdGltZSA8IGVuZCArIEhPVVI6CisgICAgICAgICAgICAjIFJlcGVhdGVkIGhvdXIKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgaWYgc3RkX3RpbWUgPCBzdGFydCBvciBkc3RfdGltZSA+PSBlbmQ6CisgICAgICAgICAgICAjIFN0YW5kYXJkIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZQorICAgICAgICBpZiBzdGFydCA8PSBzdGRfdGltZSA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERheWxpZ2h0IHNhdmluZyB0aW1lCisgICAgICAgICAgICByZXR1cm4gZHN0X3RpbWUKKwogCiBFYXN0ZXJuICA9IFVTVGltZVpvbmUoLTUsICJFYXN0ZXJuIiwgICJFU1QiLCAiRURUIikKIENlbnRyYWwgID0gVVNUaW1lWm9uZSgtNiwgIkNlbnRyYWwiLCAgIkNTVCIsICJDRFQiKQpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0IGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CmluZGV4IDFlZjMxNDkuLmIyMjQ2NWQgMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKQEAgLTIsOSArMiw5IEBACiAKIC4uIF9pbnN0YWxsaW5nLWluZGV4OgogCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICBJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKgorSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcworKioqKioqKioqKioqKioqKioqKioqKioqKgogCiA6RW1haWw6IGRpc3R1dGlscy1zaWdAcHl0aG9uLm9yZwogCkBAIC0zNCwyNCArMzQsMjQgQEAKIAogKiBgYHBpcGBgIGlzIHRoZSBwcmVmZXJyZWQgaW5zdGFsbGVyIHByb2dyYW0uIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKICAgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBQeXRob24gYmluYXJ5IGluc3RhbGxlcnMuCi0qIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCisqIEEgKnZpcnR1YWwgZW52aXJvbm1lbnQqIGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKICAgcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkIGZvciB1c2UgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhhbgotICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUKLSogYGBweXZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKKyAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlLgorKiBgYHZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKICAgYmVlbiBwYXJ0IG9mIFB5dGhvbiBzaW5jZSBQeXRob24gMy4zLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0Ci0gIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzLgogKiBgYHZpcnR1YWxlbnZgYCBpcyBhIHRoaXJkIHBhcnR5IGFsdGVybmF0aXZlIChhbmQgcHJlZGVjZXNzb3IpIHRvCi0gIGBgcHl2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCi0gIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgcHl2ZW52YGAgYXQgYWxsLCBvcgorICBgYHZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKKyAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGB2ZW52YGAgYXQgYWxsLCBvcgogICBhcmVuJ3QgYWJsZSB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYGBwaXBgYCBpbnRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgotKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCisqIFRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKICAgcmVwb3NpdG9yeSBvZiBvcGVuIHNvdXJjZSBsaWNlbnNlZCBwYWNrYWdlcyBtYWRlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5Ci0gIG90aGVyIFB5dGhvbiB1c2VycworICBvdGhlciBQeXRob24gdXNlcnMuCiAqIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBBdXRob3JpdHkKICAgPGh0dHBzOi8vd3d3LnB5cGEuaW8vZW4vbGF0ZXN0Lz5gX18gYXJlIHRoZSBncm91cCBvZgogICBkZXZlbG9wZXJzIGFuZCBkb2N1bWVudGF0aW9uIGF1dGhvcnMgcmVzcG9uc2libGUgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQKICAgZXZvbHV0aW9uIG9mIHRoZSBzdGFuZGFyZCBwYWNrYWdpbmcgdG9vbHMgYW5kIHRoZSBhc3NvY2lhdGVkIG1ldGFkYXRhIGFuZAotICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uCisgIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24sCiAgIGFuZCBpc3N1ZSB0cmFja2VycyBvbiBib3RoIGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhPmBfXyBhbmQKICAgYEJpdEJ1Y2tldCA8aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvPmBfXy4KICogYGBkaXN0dXRpbHNgYCBpcyB0aGUgb3JpZ2luYWwgYnVpbGQgYW5kIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gZmlyc3QgYWRkZWQgdG8KQEAgLTYyLDYgKzYyLDE5IEBACiAgIG9mIHRoZSBtYWlsaW5nIGxpc3QgdXNlZCB0byBjb29yZGluYXRlIFB5dGhvbiBwYWNrYWdpbmcgc3RhbmRhcmRzCiAgIGRldmVsb3BtZW50KS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKwogCiBCYXNpYyB1c2FnZQogPT09PT09PT09PT0KQEAgLTEwMCwxMyArMTEzLDE0IEBACiBNb3JlIGluZm9ybWF0aW9uIGFuZCByZXNvdXJjZXMgcmVnYXJkaW5nIGBgcGlwYGAgYW5kIGl0cyBjYXBhYmlsaXRpZXMgY2FuIGJlCiBmb3VuZCBpbiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZSA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZz5gX18uCiAKLWBgcHl2ZW52YGAgaGFzIGl0cyBvd24gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBzY3JpcHRzLXB5dmVudmAuIEluc3RhbGxpbmcKLWludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24gYWJvdmUuCitDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBkb25lIHRocm91Z2ggdGhlIDptb2Q6YHZlbnZgIG1vZHVsZS4KK0luc3RhbGxpbmcgcGFja2FnZXMgaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93bgorYWJvdmUuCiAKIC4uIHNlZWFsc286OgogCiAgICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBQeXRob24gRGlzdHJpYnV0aW9uIFBhY2thZ2VzCi0gICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvPmBfXworICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvPmBfXwogCiAKIEhvdyBkbyBJIC4uLj8KQEAgLTEyNCw3ICsxMzgsNyBAQAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IFJlcXVpcmVtZW50cyBmb3IgSW5zdGFsbGluZyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KIAogCiAuLiBpbnN0YWxsaW5nLXBlci11c2VyLWluc3RhbGxhdGlvbjoKQEAgLTE0MiwyMCArMTU2LDE5IEBACiBBIG51bWJlciBvZiBzY2llbnRpZmljIFB5dGhvbiBwYWNrYWdlcyBoYXZlIGNvbXBsZXggYmluYXJ5IGRlcGVuZGVuY2llcywgYW5kCiBhcmVuJ3QgY3VycmVudGx5IGVhc3kgdG8gaW5zdGFsbCB1c2luZyBgYHBpcGBgIGRpcmVjdGx5LiBBdCB0aGlzIHBvaW50IGluCiB0aW1lLCBpdCB3aWxsIG9mdGVuIGJlIGVhc2llciBmb3IgdXNlcnMgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcyBieQotYG90aGVyIG1lYW5zCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCitgb3RoZXIgbWVhbnMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGluc3RhbGwgdGhlbSB3aXRoIGBgcGlwYGAuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFNjaWVudGlmaWMgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogCiAKIC4uLiB3b3JrIHdpdGggbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCBpbiBwYXJhbGxlbD8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT24gTGludXgsIE1hYyBPUyBYIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKK09uIExpbnV4LCBNYWMgT1MgWCwgYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcwogaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgIHN3aXRjaCB0byBydW4gdGhlIGFwcHJvcHJpYXRlIGNvcHkgb2YKIGBgcGlwYGA6OgogCkBAIC0xNjQsNyArMTc3LDcgQEAKICAgIHB5dGhvbjMgICAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBkZWZhdWx0IFB5dGhvbiAzCiAgICBweXRob24zLjQgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgc3BlY2lmaWNhbGx5IFB5dGhvbiAzLjQKIAotKGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlKQorQXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiAKIE9uIFdpbmRvd3MsIHVzZSB0aGUgYGBweWBgIFB5dGhvbiBsYXVuY2hlciBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAKIHN3aXRjaDo6CkBAIC0yMTIsMTEgKzIyNSwxMSBAQAogdGhhbiBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gdGhlbXNlbHZlcy4KIAogU29tZSBvZiB0aGUgc29sdXRpb25zIGZvciBpbnN0YWxsaW5nIGBzY2llbnRpZmljIHNvZnR3YXJlCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCi10aGF0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCis8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KK3RoYXQgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCiBvYnRhaW5pbmcgb3RoZXIgYmluYXJ5IGV4dGVuc2lvbnMgd2l0aG91dCBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gbG9jYWxseS4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEJpbmFyeSBFeHRlbnNpb25zCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvZXh0ZW5zaW9ucy8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9leHRlbnNpb25zLz5gX18KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBhZTcyZDI2Li45ZTUxNDE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC05LDYgKzksOSBAQAogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9hc3luY2hhdC5weWAKIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgUGxlYXNlIHVzZSA6bW9kOmBhc3luY2lvYCBpbnN0ZWFkLgorCiAtLS0tLS0tLS0tLS0tLQogCiAuLiBub3RlOjoKQEAgLTU4LDEzICs2MSwxMyBAQAogICAgICAgVGhlIGFzeW5jaHJvbm91cyBvdXRwdXQgYnVmZmVyIHNpemUgKGRlZmF1bHQgYGA0MDk2YGApLgogCiAgICBVbmxpa2UgOmNsYXNzOmBhc3luY29yZS5kaXNwYXRjaGVyYCwgOmNsYXNzOmBhc3luY19jaGF0YCBhbGxvd3MgeW91IHRvCi0gICBkZWZpbmUgYSBmaXJzdC1pbi1maXJzdC1vdXQgcXVldWUgKGZpZm8pIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKKyAgIGRlZmluZSBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUgb2YgKnByb2R1Y2VycyouIEEgcHJvZHVjZXIgbmVlZAogICAgaGF2ZSBvbmx5IG9uZSBtZXRob2QsIDptZXRoOmBtb3JlYCwgd2hpY2ggc2hvdWxkIHJldHVybiBkYXRhIHRvIGJlCiAgICB0cmFuc21pdHRlZCBvbiB0aGUgY2hhbm5lbC4KICAgIFRoZSBwcm9kdWNlciBpbmRpY2F0ZXMgZXhoYXVzdGlvbiAoKmkuZS4qIHRoYXQgaXQgY29udGFpbnMgbm8gbW9yZSBkYXRhKSBieQogICAgaGF2aW5nIGl0cyA6bWV0aDpgbW9yZWAgbWV0aG9kIHJldHVybiB0aGUgZW1wdHkgYnl0ZXMgb2JqZWN0LiBBdCB0aGlzIHBvaW50Ci0gICB0aGUgOmNsYXNzOmBhc3luY19jaGF0YCBvYmplY3QgcmVtb3ZlcyB0aGUgcHJvZHVjZXIgZnJvbSB0aGUgZmlmbyBhbmQgc3RhcnRzCi0gICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBmaWZvIGlzIGVtcHR5IHRoZQorICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIHF1ZXVlIGFuZCBzdGFydHMKKyAgIHVzaW5nIHRoZSBuZXh0IHByb2R1Y2VyLCBpZiBhbnkuIFdoZW4gdGhlIHByb2R1Y2VyIHF1ZXVlIGlzIGVtcHR5IHRoZQogICAgOm1ldGg6YGhhbmRsZV93cml0ZWAgbWV0aG9kIGRvZXMgbm90aGluZy4gWW91IHVzZSB0aGUgY2hhbm5lbCBvYmplY3QncwogICAgOm1ldGg6YHNldF90ZXJtaW5hdG9yYCBtZXRob2QgdG8gZGVzY3JpYmUgaG93IHRvIHJlY29nbml6ZSB0aGUgZW5kIG9mLCBvcgogICAgYW4gaW1wb3J0YW50IGJyZWFrcG9pbnQgaW4sIGFuIGluY29taW5nIHRyYW5zbWlzc2lvbiBmcm9tIHRoZSByZW1vdGUKQEAgLTc4LDggKzgxLDggQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jbG9zZV93aGVuX2RvbmUoKQogCi0gICBQdXNoZXMgYSBgYE5vbmVgYCBvbiB0byB0aGUgcHJvZHVjZXIgZmlmby4gV2hlbiB0aGlzIHByb2R1Y2VyIGlzIHBvcHBlZCBvZmYKLSAgIHRoZSBmaWZvIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCisgICBQdXNoZXMgYSBgYE5vbmVgYCBvbiB0byB0aGUgcHJvZHVjZXIgcXVldWUuIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCisgICB0aGUgcXVldWUgaXQgY2F1c2VzIHRoZSBjaGFubmVsIHRvIGJlIGNsb3NlZC4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmNvbGxlY3RfaW5jb21pbmdfZGF0YShkYXRhKQpAQCAtOTIsNyArOTUsNyBAQAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5kaXNjYXJkX2J1ZmZlcnMoKQogCiAgICBJbiBlbWVyZ2VuY2llcyB0aGlzIG1ldGhvZCB3aWxsIGRpc2NhcmQgYW55IGRhdGEgaGVsZCBpbiB0aGUgaW5wdXQgYW5kL29yCi0gICBvdXRwdXQgYnVmZmVycyBhbmQgdGhlIHByb2R1Y2VyIGZpZm8uCisgICBvdXRwdXQgYnVmZmVycyBhbmQgdGhlIHByb2R1Y2VyIHF1ZXVlLgogCiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZm91bmRfdGVybWluYXRvcigpCkBAIC0xMTAsNyArMTEzLDcgQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5wdXNoKGRhdGEpCiAKLSAgIFB1c2hlcyBkYXRhIG9uIHRvIHRoZSBjaGFubmVsJ3MgZmlmbyB0byBlbnN1cmUgaXRzIHRyYW5zbWlzc2lvbi4KKyAgIFB1c2hlcyBkYXRhIG9uIHRvIHRoZSBjaGFubmVsJ3MgcXVldWUgdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCiAgICBUaGlzIGlzIGFsbCB5b3UgbmVlZCB0byBkbyB0byBoYXZlIHRoZSBjaGFubmVsIHdyaXRlIHRoZSBkYXRhIG91dCB0byB0aGUKICAgIG5ldHdvcmssIGFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB5b3VyIG93biBwcm9kdWNlcnMgaW4gbW9yZSBjb21wbGV4CiAgICBzY2hlbWVzIHRvIGltcGxlbWVudCBlbmNyeXB0aW9uIGFuZCBjaHVua2luZywgZm9yIGV4YW1wbGUuCkBAIC0xMTgsNyArMTIxLDcgQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5wdXNoX3dpdGhfcHJvZHVjZXIocHJvZHVjZXIpCiAKLSAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBmaWZvIGFzc29jaWF0ZWQgd2l0aAorICAgVGFrZXMgYSBwcm9kdWNlciBvYmplY3QgYW5kIGFkZHMgaXQgdG8gdGhlIHByb2R1Y2VyIHF1ZXVlIGFzc29jaWF0ZWQgd2l0aAogICAgdGhlIGNoYW5uZWwuICBXaGVuIGFsbCBjdXJyZW50bHktcHVzaGVkIHByb2R1Y2VycyBoYXZlIGJlZW4gZXhoYXVzdGVkIHRoZQogICAgY2hhbm5lbCB3aWxsIGNvbnN1bWUgdGhpcyBwcm9kdWNlcidzIGRhdGEgYnkgY2FsbGluZyBpdHMgOm1ldGg6YG1vcmVgCiAgICBtZXRob2QgYW5kIHNlbmQgdGhlIGRhdGEgdG8gdGhlIHJlbW90ZSBlbmRwb2ludC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAppbmRleCBkNzIwMTYwLi5mYTZhMjk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CkBAIC04OCw2ICs4OCwyNCBAQAogICAgVGhpcyBpcyBpZGVtcG90ZW50IGFuZCBpcnJldmVyc2libGUuIE5vIG90aGVyIG1ldGhvZHMgc2hvdWxkIGJlIGNhbGxlZCBhZnRlcgogICAgdGhpcyBvbmUuCiAKKworLi4gY29yb3V0aW5lbWV0aG9kOjogQWJzdHJhY3RFdmVudExvb3Auc2h1dGRvd25fYXN5bmNnZW5zKCkKKworICAgU2NoZWR1bGUgYWxsIGN1cnJlbnRseSBvcGVuIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yYCBvYmplY3RzIHRvCisgICBjbG9zZSB3aXRoIGFuIDptZXRoOmB+YWdlbi5hY2xvc2UoKWAgY2FsbC4gIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsCisgICB0aGUgZXZlbnQgbG9vcCB3aWxsIGlzc3VlIGEgd2FybmluZyB3aGVuZXZlciBhIG5ldyBhc3luY2hyb25vdXMgZ2VuZXJhdG9yCisgICBpcyBpdGVyYXRlZC4gIFNob3VsZCBiZSB1c2VkIHRvIGZpbmFsaXplIGFsbCBzY2hlZHVsZWQgYXN5bmNocm9ub3VzCisgICBnZW5lcmF0b3JzIHJlbGlhYmx5LiAgRXhhbXBsZTo6CisKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGxvb3Auc2h1dGRvd25fYXN5bmNnZW5zKCkpCisgICAgICAgIGxvb3AuY2xvc2UoKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBfYXN5bmNpby1wYXNzLWtleXdvcmRzOgogCiBDYWxscwpAQCAtMTEwLDggKzEyOCw5IEBACiAgICBjYWxsZWQgYWZ0ZXIgOm1ldGg6YGNhbGxfc29vbmAgcmV0dXJucywgd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50CiAgICBsb29wLgogCi0gICBUaGlzIG9wZXJhdGVzIGFzIGEgRklGTyBxdWV1ZSwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluCi0gICB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCisgICBUaGlzIG9wZXJhdGVzIGFzIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgY2FsbGJhY2tzCisgICBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjaworICAgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgY2FsbGJhY2sgd2hlbiBpdCBpcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLXByb3RvY29sLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CmluZGV4IGMwMzQyZjcuLjNmYmY1MTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0CkBAIC0yNSw2ICsyNSw5IEBACiAKIFRoZSB0cmFuc3BvcnQgY2xhc3NlcyBhcmUgOnJlZjpgbm90IHRocmVhZCBzYWZlIDxhc3luY2lvLW11bHRpdGhyZWFkaW5nPmAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBUaGUgc29ja2V0IG9wdGlvbiBgYFRDUF9OT0RFTEFZYGAgaXMgbm93IHNldCBieSBkZWZhdWx0LgorCiAKIEJhc2VUcmFuc3BvcnQKIC0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8ucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby5yc3QKaW5kZXggNzZiZDllOS4uYjA3NmI3ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby5yc3QKQEAgLTgsMTMgKzgsNiBAQAogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9hc3luY2lvL2AKIAotLi4gbm90ZTo6Ci0KLSAgIFRoZSBhc3luY2lvIHBhY2thZ2UgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLS0tLS0tLS0tLS0tLS0KIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHdyaXRpbmcgc2luZ2xlLXRocmVhZGVkIGNvbmN1cnJlbnQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAppbmRleCBjODM4YmU3Li4xMWQzNjE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CkBAIC0xMiw2ICsxMiw5IEBACiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2FzeW5jb3JlLnB5YAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBQbGVhc2UgdXNlIDptb2Q6YGFzeW5jaW9gIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIC4uIG5vdGU6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CmluZGV4IDQ5ZGE1OWEuLjA0NzZmNTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKQEAgLTUzLDEzICs1MywxNCBAQAogICAgdGhhbiBvbmUgbGluZSBtYXkgYmUgcGFzc2VkIGF0IGEgdGltZS4KIAogCi0uLiBmdW5jdGlvbjo6IGIyYV9iYXNlNjQoZGF0YSkKKy4uIGZ1bmN0aW9uOjogYjJhX2Jhc2U2NChkYXRhLCBcKiwgbmV3bGluZT1UcnVlKQogCiAgICBDb252ZXJ0IGJpbmFyeSBkYXRhIHRvIGEgbGluZSBvZiBBU0NJSSBjaGFyYWN0ZXJzIGluIGJhc2U2NCBjb2RpbmcuIFRoZSByZXR1cm4KLSAgIHZhbHVlIGlzIHRoZSBjb252ZXJ0ZWQgbGluZSwgaW5jbHVkaW5nIGEgbmV3bGluZSBjaGFyLiAgVGhlIG5ld2xpbmUgaXMKLSAgIGFkZGVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsIHVzZSBjYXNlIGZvciB0aGlzIGZ1bmN0aW9uIHdhcyB0byBmZWVkIGl0IGEKLSAgIHNlcmllcyBvZiA1NyBieXRlIGlucHV0IGxpbmVzIHRvIGdldCBvdXRwdXQgbGluZXMgdGhhdCBjb25mb3JtIHRvIHRoZQotICAgTUlNRS1iYXNlNjQgc3RhbmRhcmQuICBPdGhlcndpc2UgdGhlIG91dHB1dCBjb25mb3JtcyB0byA6cmZjOmAzNTQ4YC4KKyAgIHZhbHVlIGlzIHRoZSBjb252ZXJ0ZWQgbGluZSwgaW5jbHVkaW5nIGEgbmV3bGluZSBjaGFyIGlmICpuZXdsaW5lKiBpcworICAgdHJ1ZS4gIFRoZSBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbiBjb25mb3JtcyB0byA6cmZjOmAzNTQ4YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqbmV3bGluZSogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogYTJiX3FwKGRhdGEsIGhlYWRlcj1GYWxzZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QgYi9Eb2MvbGlicmFyeS9iejIucnN0CmluZGV4IDZjNDlkOWYuLmQ1ZjYyMjUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYnoyLnJzdApAQCAtNjEsNiArNjEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IEJaMkZpbGUoZmlsZW5hbWUsIG1vZGU9J3InLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KQogCkBAIC0xMjgsNiArMTMxLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIEluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKaW5kZXggZTExM2ZmYy4uYzgxOWE2NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdApAQCAtMjUzLDYgKzI1Myw0MCBAQAogCiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50ICplKiwgYXMgYSBmbG9hdC4KIAorLi4gZGF0YTo6IHRhdQorCisgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50ICrPhCosIGFzIGEgZmxvYXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogaW5mCisKKyAgIEZsb2F0aW5nLXBvaW50IHBvc2l0aXZlIGluZmluaXR5LiBFcXVpdmFsZW50IHRvIGBgZmxvYXQoJ2luZicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogaW5magorCisgICBDb21wbGV4IG51bWJlciB3aXRoIHplcm8gcmVhbCBwYXJ0IGFuZCBwb3NpdGl2ZSBpbmZpbml0eSBpbWFnaW5hcnkKKyAgIHBhcnQuIEVxdWl2YWxlbnQgdG8gYGBjb21wbGV4KDAuMCwgZmxvYXQoJ2luZicpKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IG5hbgorCisgICBBIGZsb2F0aW5nLXBvaW50ICJub3QgYSBudW1iZXIiIChOYU4pIHZhbHVlLiAgRXF1aXZhbGVudCB0bworICAgYGBmbG9hdCgnbmFuJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBuYW5qCisKKyAgIENvbXBsZXggbnVtYmVyIHdpdGggemVybyByZWFsIHBhcnQgYW5kIE5hTiBpbWFnaW5hcnkgcGFydC4gRXF1aXZhbGVudCB0bworICAgYGBjb21wbGV4KDAuMCwgZmxvYXQoJ25hbicpKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBpbmRleDo6IG1vZHVsZTogbWF0aAogCiBOb3RlIHRoYXQgdGhlIHNlbGVjdGlvbiBvZiBmdW5jdGlvbnMgaXMgc2ltaWxhciwgYnV0IG5vdCBpZGVudGljYWwsIHRvIHRoYXQgaW4KQEAgLTI3Niw1ICszMTAsMyBAQAogICAgS2FoYW4sIFc6ICBCcmFuY2ggY3V0cyBmb3IgY29tcGxleCBlbGVtZW50YXJ5IGZ1bmN0aW9uczsgb3IsIE11Y2ggYWRvIGFib3V0CiAgICBub3RoaW5nJ3Mgc2lnbiBiaXQuICBJbiBJc2VybGVzLCBBLiwgYW5kIFBvd2VsbCwgTS4gKGVkcy4pLCBUaGUgc3RhdGUgb2YgdGhlIGFydAogICAgaW4gbnVtZXJpY2FsIGFuYWx5c2lzLiBDbGFyZW5kb24gUHJlc3MgKDE5ODcpIHBwMTY1LS0yMTEuCi0KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZS5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdAppbmRleCA0NDNhZjY5Li5lMmM0N2JhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdApAQCAtMzAsMTUgKzMwLDE5IEBACiAgICBgYHN5cy5wczFgYCBhbmQgYGBzeXMucHMyYGAsIGFuZCBpbnB1dCBidWZmZXJpbmcuCiAKIAotLi4gZnVuY3Rpb246OiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcnVuIGEgcmVhZC1ldmFsLXByaW50IGxvb3AuICBUaGlzIGNyZWF0ZXMgYSBuZXcKICAgIGluc3RhbmNlIG9mIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBhbmQgc2V0cyAqcmVhZGZ1bmMqIHRvIGJlIHVzZWQgYXMKICAgIHRoZSA6bWV0aDpgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dGAgbWV0aG9kLCBpZiBwcm92aWRlZC4gIElmICpsb2NhbCogaXMKICAgIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBjb25zdHJ1Y3RvciBmb3IKICAgIHVzZSBhcyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBsb29wLiAgVGhlIDptZXRoOmBpbnRlcmFjdGAKLSAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBwYXNzZWQgYXMgdGhlIGJhbm5lciB0bwotICAgdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQgYWZ0ZXIgdXNlLgorICAgbWV0aG9kIG9mIHRoZSBpbnN0YW5jZSBpcyB0aGVuIHJ1biB3aXRoICpiYW5uZXIqIGFuZCAqZXhpdG1zZyogcGFzc2VkIGFzIHRoZQorICAgYmFubmVyIGFuZCBleGl0IG1lc3NhZ2UgdG8gdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQKKyAgIGFmdGVyIHVzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpleGl0bXNnKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX2NvbW1hbmQoc291cmNlLCBmaWxlbmFtZT0iPGlucHV0PiIsIHN5bWJvbD0ic2luZ2xlIikKQEAgLTEzNiw3ICsxNDAsNyBAQAogaW50ZXJwcmV0ZXIgb2JqZWN0cyBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25zLgogCiAKLS4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSkKKy4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKQogCiAgICBDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBjb25zb2xlLiBUaGUgb3B0aW9uYWwgKmJhbm5lciogYXJndW1lbnQKICAgIHNwZWNpZnkgdGhlIGJhbm5lciB0byBwcmludCBiZWZvcmUgdGhlIGZpcnN0IGludGVyYWN0aW9uOyBieSBkZWZhdWx0IGl0IHByaW50cyBhCkBAIC0xNDQsOSArMTQ4LDE2IEBACiAgICBieSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgY29uc29sZSBvYmplY3QgaW4gcGFyZW50aGVzZXMgKHNvIGFzIG5vdCB0byBjb25mdXNlCiAgICB0aGlzIHdpdGggdGhlIHJlYWwgaW50ZXJwcmV0ZXIgLS0gc2luY2UgaXQncyBzbyBjbG9zZSEpLgogCisgICBUaGUgb3B0aW9uYWwgKmV4aXRtc2cqIGFyZ3VtZW50IHNwZWNpZmllcyBhbiBleGl0IG1lc3NhZ2UgcHJpbnRlZCB3aGVuIGV4aXRpbmcuCisgICBQYXNzIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcHJlc3MgdGhlIGV4aXQgbWVzc2FnZS4gSWYgKmV4aXRtc2cqIGlzIG5vdCBnaXZlbiBvcgorICAgYGBOb25lYGAsIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUbyBzdXBwcmVzcyBwcmludGluZyBhbnkgYmFubmVyLCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByaW50IGFuIGV4aXQgbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVDb25zb2xlLnB1c2gobGluZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggZjM4ZTQxYi4uMGVjZDg5YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC0xMjYzLDEwICsxMjYzLDE2IEBACiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPbmx5IGBgZXJyb3JzPSdzdHJpY3QnYGAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IGlzIHN1cHBvcnRlZC4gICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IG1iY3MgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCBtYmNzICAgICAgICAgICAgICAgfCBhbnNpLCAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IG9lbSAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT0VNIGNvZGVwYWdlIChDUF9PRU1DUCkgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHBhbG1vcyAgICAgICAgICAgICB8ICAgICAgICAgfCBFbmNvZGluZyBvZiBQYWxtT1MgMy41ICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwdW55Y29kZSAgICAgICAgICAgfCAgICAgICAgIHwgSW1wbGVtZW50cyA6cmZjOmAzNDkyYC4gICB8CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCBhZWI2YTczLi41OGIwM2I5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTQxLDEzICs0MSwxNiBAQAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBSZXZlcnNpYmxlYCAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fcmV2ZXJzZWRfX2BgCiA6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCis6Y2xhc3M6YENvbGxlY3Rpb25gICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFJldmVyc2libGVgLCAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCiAKIDpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLApAQCAtNTgsOSArNjEsOSBAQAogOmNsYXNzOmBCeXRlU3RyaW5nYCAgICAgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCkBAIC02OCw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWRkYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgCiAKLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAogOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLApAQCAtODksNiArOTIsNyBAQAogOmNsYXNzOmBDb3JvdXRpbmVgICAgICAgICAgOmNsYXNzOmBBd2FpdGFibGVgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAKIDpjbGFzczpgQXN5bmNJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2FpdGVyX19gYAogOmNsYXNzOmBBc3luY0l0ZXJhdG9yYCAgICAgOmNsYXNzOmBBc3luY0l0ZXJhYmxlYCBgYF9fYW5leHRfX2BgICAgICAgICAgICBgYF9fYWl0ZXJfX2BgCis6Y2xhc3M6YEFzeW5jR2VuZXJhdG9yYCAgICA6Y2xhc3M6YEFzeW5jSXRlcmF0b3JgIGBgYXNlbmRgYCwgYGBhdGhyb3dgYCAgIGBgYWNsb3NlYGAsIGBgX19haXRlcl9fYGAsIGBgX19hbmV4dF9fYGAKID09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKQEAgLTEwNSwxMiArMTA5LDI1IEBACiAgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KICAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCiAKKy4uIGNsYXNzOjogQ29sbGVjdGlvbgorCisgICBBQkMgZm9yIHNpemVkIGl0ZXJhYmxlIGNvbnRhaW5lciBjbGFzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBJdGVyYXRvcgogCiAgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgfml0ZXJhdG9yLl9faXRlcl9fYCBhbmQKICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZHMuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZgogICAgOnRlcm06YGl0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBSZXZlcnNpYmxlCisKKyAgIEFCQyBmb3IgaXRlcmFibGUgY2xhc3NlcyB0aGF0IGFsc28gcHJvdmlkZSB0aGUgOm1ldGg6YF9fcmV2ZXJzZWRfX2AKKyAgIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGNsYXNzOjogR2VuZXJhdG9yCiAKICAgIEFCQyBmb3IgZ2VuZXJhdG9yIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgdGhlIHByb3RvY29sIGRlZmluZWQgaW4KQEAgLTIwNiw2ICsyMjMsMTMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKy4uIGNsYXNzOjogQXN5bmNHZW5lcmF0b3IKKworICAgQUJDIGZvciBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgdGhlIHByb3RvY29sCisgICBkZWZpbmVkIGluIDpwZXA6YDUyNWAgYW5kIDpwZXA6YDQ5MmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIFRoZXNlIEFCQ3MgYWxsb3cgdXMgdG8gYXNrIGNsYXNzZXMgb3IgaW5zdGFuY2VzIGlmIHRoZXkgcHJvdmlkZQogcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZTo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKaW5kZXggZDBhYTYyZS4uOGUyZWI0ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdApAQCAtNzYzLDcgKzc2Myw3IEBACiBzZWxmLWRvY3VtZW50aW5nIGNvZGUuICBUaGV5IGNhbiBiZSB1c2VkIHdoZXJldmVyIHJlZ3VsYXIgdHVwbGVzIGFyZSB1c2VkLCBhbmQKIHRoZXkgYWRkIHRoZSBhYmlsaXR5IHRvIGFjY2VzcyBmaWVsZHMgYnkgbmFtZSBpbnN0ZWFkIG9mIHBvc2l0aW9uIGluZGV4LgogCi0uLiBmdW5jdGlvbjo6IG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpCisuLiBmdW5jdGlvbjo6IG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKQogCiAgICAgUmV0dXJucyBhIG5ldyB0dXBsZSBzdWJjbGFzcyBuYW1lZCAqdHlwZW5hbWUqLiAgVGhlIG5ldyBzdWJjbGFzcyBpcyB1c2VkIHRvCiAgICAgY3JlYXRlIHR1cGxlLWxpa2Ugb2JqZWN0cyB0aGF0IGhhdmUgZmllbGRzIGFjY2Vzc2libGUgYnkgYXR0cmlidXRlIGxvb2t1cCBhcwpAQCAtNzkwLDEyICs3OTAsMjEgQEAKICAgICBidWlsdC4gIFRoaXMgb3B0aW9uIGlzIG91dGRhdGVkOyBpbnN0ZWFkLCBpdCBpcyBzaW1wbGVyIHRvIHByaW50IHRoZQogICAgIDphdHRyOmBfc291cmNlYCBhdHRyaWJ1dGUuCiAKKyAgICBJZiAqbW9kdWxlKiBpcyBkZWZpbmVkLCB0aGUgYGBfX21vZHVsZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBuYW1lZCB0dXBsZSBpcworICAgIHNldCB0byB0aGF0IHZhbHVlLgorCiAgICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCiAgICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KIAogICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgorICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICBUaGUgKnZlcmJvc2UqIGFuZCAqcmVuYW1lKiBwYXJhbWV0ZXJzIGJlY2FtZQorICAgICAgIDpyZWY6YGtleXdvcmQtb25seSBhcmd1bWVudHMgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgQWRkZWQgdGhlICptb2R1bGUqIHBhcmFtZXRlci4KIAogLi4gZG9jdGVzdDo6CiAgICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQpAQCAtODQ2LDcgKzg1NSw5IEBACiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fYXNkaWN0KCkKIAogICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICB2YWx1ZXM6OgorICAgIHZhbHVlczoKKworICAgIC4uIGRvY3Rlc3Q6OgogCiAgICAgICAgID4+PiBwID0gUG9pbnQoeD0xMSwgeT0yMikKICAgICAgICAgPj4+IHAuX2FzZGljdCgpCkBAIC05MDgsNyArOTE5LDkgQEAKIGZ1bmN0aW9uYWxpdHkgd2l0aCBhIHN1YmNsYXNzLiAgSGVyZSBpcyBob3cgdG8gYWRkIGEgY2FsY3VsYXRlZCBmaWVsZCBhbmQKIGEgZml4ZWQtd2lkdGggcHJpbnQgZm9ybWF0OgogCi0gICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKy4uIGRvY3Rlc3Q6OgorCisgICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkpOgogICAgIC4uLiAgICAgX19zbG90c19fID0gKCkKICAgICAuLi4gICAgIEBwcm9wZXJ0eQogICAgIC4uLiAgICAgZGVmIGh5cG90KHNlbGYpOgpAQCAtOTU5LDYgKzk3MiwxMSBAQAogICAgICAgY29uc3RydWN0b3IgdGhhdCBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgbmFtZWQgdHVwbGVzIGFyZSBiZWluZwogICAgICAgc3ViY2xhc3NlZC4KIAorICAgICogU2VlIDptZXRoOmB0eXBlcy5TaW1wbGVOYW1lc3BhY2VgIGZvciBhIG11dGFibGUgbmFtZXNwYWNlIGJhc2VkIG9uIGFuCisgICAgICB1bmRlcmx5aW5nIGRpY3Rpb25hcnkgaW5zdGVhZCBvZiBhIHR1cGxlLgorCisgICAgKiBTZWUgOm1ldGg6YHR5cGluZy5OYW1lZFR1cGxlYCBmb3IgYSB3YXkgdG8gYWRkIHR5cGUgaGludHMgZm9yIG5hbWVkIHR1cGxlcy4KKwogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05ODAsOCArOTk4LDkgQEAKICAgICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKIAogICAgICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCi0gICAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbiBMSUZPIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCi0gICAgICAgIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCisgICAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbgorICAgICAgICA6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKKyAgICAgICAgb3IgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBvcmRlciBpZiBmYWxzZS4KIAogICAgIC4uIG1ldGhvZDo6IG1vdmVfdG9fZW5kKGtleSwgbGFzdD1UcnVlKQogCkBAIC0xMDEwLDE0ICsxMDI5LDE1IEBACiBkaWN0aW9uYXJpZXMuICBUaGlzIGFsbG93cyA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvYmplY3RzIHRvIGJlIHN1YnN0aXR1dGVkCiBhbnl3aGVyZSBhIHJlZ3VsYXIgZGljdGlvbmFyeSBpcyB1c2VkLgogCi1UaGUgOmNsYXNzOmBPcmRlcmVkRGljdGAgY29uc3RydWN0b3IgYW5kIDptZXRoOmB1cGRhdGVgIG1ldGhvZCBib3RoIGFjY2VwdAota2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGVpciBvcmRlciBpcyBsb3N0IGJlY2F1c2UgUHl0aG9uJ3MgZnVuY3Rpb24gY2FsbAotc2VtYW50aWNzIHBhc3MgaW4ga2V5d29yZCBhcmd1bWVudHMgdXNpbmcgYSByZWd1bGFyIHVub3JkZXJlZCBkaWN0aW9uYXJ5LgotCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgVGhlIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8ZGljdGlvbmFyeSB2aWV3PmAKICAgIG9mIDpjbGFzczpgT3JkZXJlZERpY3RgIG5vdyBzdXBwb3J0IHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIDpmdW5jOmByZXZlcnNlZGAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBXaXRoIHRoZSBhY2NlcHRhbmNlIG9mIDpwZXA6YDQ2OGAsIG9yZGVyIGlzIHJldGFpbmVkIGZvciBrZXl3b3JkIGFyZ3VtZW50cworICAgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YE9yZGVyZWREaWN0YCBjb25zdHJ1Y3RvciBhbmQgaXRzIDptZXRoOmB1cGRhdGVgCisgICBtZXRob2QuCisKIDpjbGFzczpgT3JkZXJlZERpY3RgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdCBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CmluZGV4IDUxMWM1ODEuLmMxYWYwMmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CkBAIC0xMDIsNyArMTAyLDggQEAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEsIHdvcmtlcnM9MSkKIAogICAgUmVjdXJzaXZlbHkgZGVzY2VuZCB0aGUgZGlyZWN0b3J5IHRyZWUgbmFtZWQgYnkgKmRpciosIGNvbXBpbGluZyBhbGwgOmZpbGU6YC5weWAKLSAgIGZpbGVzIGFsb25nIHRoZSB3YXkuCisgICBmaWxlcyBhbG9uZyB0aGUgd2F5LiBSZXR1cm4gYSB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LAorICAgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBUaGUgKm1heGxldmVscyogcGFyYW1ldGVyIGlzIHVzZWQgdG8gbGltaXQgdGhlIGRlcHRoIG9mIHRoZSByZWN1cnNpb247IGl0CiAgICBkZWZhdWx0cyB0byBgYDEwYGAuCkBAIC0xNTIsOSArMTUzLDEzIEBACiAgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCiAgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCi0gICBDb21waWxlIHRoZSBmaWxlIHdpdGggcGF0aCAqZnVsbG5hbWUqLgorICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiB0aGUgZmlsZQorICAgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCiAKICAgIElmICpkZGlyKiBpcyBnaXZlbiwgaXQgaXMgcHJlcGVuZGVkIHRvIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNvbXBpbGVkCiAgICBmb3IgdXNlIGluIGNvbXBpbGF0aW9uIHRpbWUgdHJhY2ViYWNrcywgYW5kIGlzIGFsc28gY29tcGlsZWQgaW4gdG8gdGhlCkBAIC0xOTAsOCArMTk1LDEwIEBACiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPVRydWUsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQnl0ZS1jb21waWxlIGFsbCB0aGUgOmZpbGU6YC5weWAgZmlsZXMgZm91bmQgYWxvbmcgYGBzeXMucGF0aGBgLiBJZgotICAgKnNraXBfY3VyZGlyKiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBub3QgaW5jbHVkZWQKKyAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gUmV0dXJuIGEKKyAgIHRydWUgdmFsdWUgaWYgYWxsIHRoZSBmaWxlcyBjb21waWxlZCBzdWNjZXNzZnVsbHksIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KKworICAgSWYgKnNraXBfY3VyZGlyKiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBub3QgaW5jbHVkZWQKICAgIGluIHRoZSBzZWFyY2guICBBbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIHRoZSA6ZnVuYzpgY29tcGlsZV9kaXJgCiAgICBmdW5jdGlvbi4gIE5vdGUgdGhhdCB1bmxpa2UgdGhlIG90aGVyIGNvbXBpbGUgZnVuY3Rpb25zLCBgYG1heGxldmVsc2BgCiAgICBkZWZhdWx0cyB0byBgYDBgYC4KQEAgLTIxNyw2ICsyMjQsOSBAQAogICAgaW1wb3J0IHJlCiAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKCdMaWIvJywgcng9cmUuY29tcGlsZShyJ1svXFxdWy5dc3ZuJyksIGZvcmNlPVRydWUpCiAKKyAgICMgcGF0aGxpYi5QYXRoIG9iamVjdHMgY2FuIGFsc28gYmUgdXNlZC4KKyAgIGltcG9ydCBwYXRobGliCisgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHBhdGhsaWIuUGF0aCgnTGliLycpLCBmb3JjZT1UcnVlKQogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggYWUwM2Y0Yi4uZDg1NTc2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0xMjQsNyArMTI0LDcgQEAKICAgIGV4ZWN1dG9yLnN1Ym1pdCh3YWl0X29uX2Z1dHVyZSkKIAogCi0uLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lKQorLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSwgdGhyZWFkX25hbWVfcHJlZml4PScnKQogCiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IHVzZXMgYSBwb29sIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKgogICAgdGhyZWFkcyB0byBleGVjdXRlIGNhbGxzIGFzeW5jaHJvbm91c2x5LgpAQCAtMTM3LDYgKzEzNywxMCBAQAogICAgICAgc2hvdWxkIGJlIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2Ygd29ya2VycwogICAgICAgZm9yIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlICp0aHJlYWRfbmFtZV9wcmVmaXgqIGFyZ3VtZW50IHdhcyBhZGRlZCB0byBhbGxvdyB1c2VycyB0bworICAgICAgY29udHJvbCB0aGUgdGhyZWFkaW5nLlRocmVhZCBuYW1lcyBmb3Igd29ya2VyIHRocmVhZHMgY3JlYXRlZCBieQorICAgICAgdGhlIHBvb2wgZm9yIGVhc2llciBkZWJ1Z2dpbmcuCiAKIC4uIF90aHJlYWRwb29sZXhlY3V0b3ItZXhhbXBsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKaW5kZXggZDVhMGYwOS4uZjA3NDJjZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CkBAIC0zMywxNiArMzMsMjIgQEAKICAgIChlLmcuIDptZXRoOmBfX2ltdWxfX2AsIDptZXRoOmBfX2lhbmRfX2AsIGV0Yy4pIGZvciB0aGUgc2FtZSBwdXJwb3NlLgogICAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuCiAKLS4uIG5vdGU6OgorICAgLi4gbm90ZTo6CiAKLSAgIFdoZW4gYGBOb3RJbXBsZW1lbnRlZGBgIGlzIHJldHVybmVkLCB0aGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUKLSAgIHJlZmxlY3RlZCBvcGVyYXRpb24gb24gdGhlIG90aGVyIHR5cGUsIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZwotICAgb24gdGhlIG9wZXJhdG9yLiAgSWYgYWxsIGF0dGVtcHRlZCBvcGVyYXRpb25zIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAsIHRoZQotICAgaW50ZXJwcmV0ZXIgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSBleGNlcHRpb24uCisgICAgICBXaGVuIGEgYmluYXJ5IChvciBpbi1wbGFjZSkgbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgIHRoZQorICAgICAgaW50ZXJwcmV0ZXIgd2lsbCB0cnkgdGhlIHJlZmxlY3RlZCBvcGVyYXRpb24gb24gdGhlIG90aGVyIHR5cGUgKG9yIHNvbWUKKyAgICAgIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yKS4gIElmIGFsbCBhdHRlbXB0cyByZXR1cm4KKyAgICAgIGBgTm90SW1wbGVtZW50ZWRgYCwgdGhlIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgSW5jb3JyZWN0bHkgcmV0dXJuaW5nIGBgTm90SW1wbGVtZW50ZWRgYCB3aWxsIHJlc3VsdCBpbiBhIG1pc2xlYWRpbmcKKyAgICAgIGVycm9yIG1lc3NhZ2Ugb3IgdGhlIGBgTm90SW1wbGVtZW50ZWRgYCB2YWx1ZSBiZWluZyByZXR1cm5lZCB0byBQeXRob24gY29kZS4KIAotICAgU2VlCi0gICA6cmVmOmBpbXBsZW1lbnRpbmctdGhlLWFyaXRobWV0aWMtb3BlcmF0aW9uc2AKLSAgIGZvciBtb3JlIGRldGFpbHMuCisgICAgICBTZWUgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgIGZvciBleGFtcGxlcy4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIGBgTm90SW1wbGVudGVkRXJyb3JgYCBhbmQgYGBOb3RJbXBsZW1lbnRlZGBgIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLAorICAgICAgZXZlbiB0aG91Z2ggdGhleSBoYXZlIHNpbWlsYXIgbmFtZXMgYW5kIHB1cnBvc2VzLgorICAgICAgU2VlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGZvciBkZXRhaWxzIG9uIHdoZW4gdG8gdXNlIGl0LgogCiAKIC4uIGRhdGE6OiBFbGxpcHNpcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCBjZjg1ZmNkLi5kZDM0Yzk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMTgsNiArMTgsMTggQEAKIAogRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCisuLiBjbGFzczo6IEFic3RyYWN0Q29udGV4dE1hbmFnZXIKKworICAgQW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50CisgICA6bWV0aDpgb2JqZWN0Ll9fZW50ZXJfX2AgYW5kIDptZXRoOmBvYmplY3QuX19leGl0X19gLiBBIGRlZmF1bHQKKyAgIGltcGxlbWVudGF0aW9uIGZvciA6bWV0aDpgb2JqZWN0Ll9fZW50ZXJfX2AgaXMgcHJvdmlkZWQgd2hpY2ggcmV0dXJucworICAgYGBzZWxmYGAgd2hpbGUgOm1ldGg6YG9iamVjdC5fX2V4aXRfX2AgaXMgYW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIGJ5IGRlZmF1bHQKKyAgIHJldHVybnMgYGBOb25lYGAuIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKwogLi4gZGVjb3JhdG9yOjogY29udGV4dG1hbmFnZXIKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBhIDp0ZXJtOmBkZWNvcmF0b3JgIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgZmFjdG9yeQpAQCAtNDQ3LDkgKzQ1OSw5IEBACiBhY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKIGFuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CiAKLSAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlciwgRXhpdFN0YWNrCiAKLSAgIGNsYXNzIFJlc291cmNlTWFuYWdlcjoKKyAgIGNsYXNzIFJlc291cmNlTWFuYWdlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKICAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQpAQCAtNTc4LDEwICs1OTAsMTAgQEAKICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKIAogICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzogJXMnLCBzZWxmLm5hbWUpCiAKICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6Ci0gICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzogJXMnLCBzZWxmLm5hbWUpCiAKIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggYTIxYzFlNy4uZGJkNDI3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICBBIGxpc3Qgb2YgYXZhaWxhYmxlIHBhc3N3b3JkIGhhc2hpbmcgYWxnb3JpdGhtcywgYXMKICAgIGBgY3J5cHQuTUVUSE9EXypgYCBvYmplY3RzLiAgVGhpcyBsaXN0IGlzIHNvcnRlZCBmcm9tIHN0cm9uZ2VzdCB0bwotICAgd2Vha2VzdCwgYW5kIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhdCBsZWFzdCBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLgorICAgd2Vha2VzdC4KIAogCiBNb2R1bGUgRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAppbmRleCAxZWRkZmRjLi44ZWI0YjgxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKQEAgLTE1LDQgKzE1LDYgQEAKIC4uIHRvY3RyZWU6OgogCiAgICBoYXNobGliLnJzdAorICAgaGFzaGxpYi1ibGFrZTIucnN0CiAgICBobWFjLnJzdAorICAgc2VjcmV0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QgYi9Eb2MvbGlicmFyeS9jc3YucnN0CmluZGV4IDdmYjRmYzguLjUyYThhMzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3N2LnJzdApAQCAtMTQ2LDIxICsxNDYsMjggQEAKIAogVGhlIDptb2Q6YGNzdmAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCi0uLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAorLi4gY2xhc3M6OiBEaWN0UmVhZGVyKGYsIGZpZWxkbmFtZXM9Tm9uZSwgcmVzdGtleT1Ob25lLCByZXN0dmFsPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0PSdleGNlbCcsICphcmdzLCAqKmt3ZHMpCiAKLSAgIENyZWF0ZSBhbiBvYmplY3Qgd2hpY2ggb3BlcmF0ZXMgbGlrZSBhIHJlZ3VsYXIgcmVhZGVyIGJ1dCBtYXBzIHRoZQotICAgaW5mb3JtYXRpb24gcmVhZCBpbnRvIGEgZGljdCB3aG9zZSBrZXlzIGFyZSBnaXZlbiBieSB0aGUgb3B0aW9uYWwKLSAgICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuICBUaGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBhIDptb2Q6YHNlcXVlbmNlCi0gICA8Y29sbGVjdGlvbnMuYWJjPmAgd2hvc2UgZWxlbWVudHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGRzIG9mIHRoZQotICAgaW5wdXQgZGF0YSBpbiBvcmRlci4gVGhlc2UgZWxlbWVudHMgYmVjb21lIHRoZSBrZXlzIG9mIHRoZSByZXN1bHRpbmcKLSAgIGRpY3Rpb25hcnkuICBJZiB0aGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBvbWl0dGVkLCB0aGUgdmFsdWVzIGluIHRoZQotICAgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZSBmaWVsZG5hbWVzLiAgSWYgdGhlIHJvdyByZWFkCi0gICBoYXMgbW9yZSBmaWVsZHMgdGhhbiB0aGUgZmllbGRuYW1lcyBzZXF1ZW5jZSwgdGhlIHJlbWFpbmluZyBkYXRhIGlzIGFkZGVkIGFzCi0gICBhIHNlcXVlbmNlIGtleWVkIGJ5IHRoZSB2YWx1ZSBvZiAqcmVzdGtleSouICBJZiB0aGUgcm93IHJlYWQgaGFzIGZld2VyCi0gICBmaWVsZHMgdGhhbiB0aGUgZmllbGRuYW1lcyBzZXF1ZW5jZSwgdGhlIHJlbWFpbmluZyBrZXlzIHRha2UgdGhlIHZhbHVlIG9mCi0gICB0aGUgb3B0aW9uYWwgKnJlc3R2YWwqIHBhcmFtZXRlci4gIEFueSBvdGhlciBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cwotICAgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YHJlYWRlcmAgaW5zdGFuY2UuCisgICBDcmVhdGUgYW4gb2JqZWN0IHRoYXQgb3BlcmF0ZXMgbGlrZSBhIHJlZ3VsYXIgcmVhZGVyIGJ1dCBtYXBzIHRoZQorICAgaW5mb3JtYXRpb24gaW4gZWFjaCByb3cgdG8gYW4gOm1vZDpgT3JkZXJlZERpY3QgPGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0PmAKKyAgIHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbCAqZmllbGRuYW1lcyogcGFyYW1ldGVyLgorCisgICBUaGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBhIDp0ZXJtOmBzZXF1ZW5jZWAuICBJZiAqZmllbGRuYW1lcyogaXMKKyAgIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IHJvdyBvZiBmaWxlICpmKiB3aWxsIGJlIHVzZWQgYXMgdGhlCisgICBmaWVsZG5hbWVzLiAgUmVnYXJkbGVzcyBvZiBob3cgdGhlIGZpZWxkbmFtZXMgYXJlIGRldGVybWluZWQsIHRoZSBvcmRlcmVkCisgICBkaWN0aW9uYXJ5IHByZXNlcnZlcyB0aGVpciBvcmlnaW5hbCBvcmRlcmluZy4KKworICAgSWYgYSByb3cgaGFzIG1vcmUgZmllbGRzIHRoYW4gZmllbGRuYW1lcywgdGhlIHJlbWFpbmluZyBkYXRhIGlzIHB1dCBpbiBhCisgICBsaXN0IGFuZCBzdG9yZWQgd2l0aCB0aGUgZmllbGRuYW1lIHNwZWNpZmllZCBieSAqcmVzdGtleSogKHdoaWNoIGRlZmF1bHRzCisgICB0byBgYE5vbmVgYCkuICBJZiBhIG5vbi1ibGFuayByb3cgaGFzIGZld2VyIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZQorICAgbWlzc2luZyB2YWx1ZXMgYXJlIGZpbGxlZC1pbiB3aXRoIGBgTm9uZWBgLgorCisgICBBbGwgb3RoZXIgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZworICAgOmNsYXNzOmByZWFkZXJgIGluc3RhbmNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmV0dXJuZWQgcm93cyBhcmUgbm93IG9mIHR5cGUgOmNsYXNzOmBPcmRlcmVkRGljdGAuCiAKICAgIEEgc2hvcnQgdXNhZ2UgZXhhbXBsZTo6CiAKQEAgLTE3MCwzMSArMTc3LDM1IEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKLS4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXAorLi4gY2xhc3M6OiBEaWN0V3JpdGVyKGYsIGZpZWxkbmFtZXMsIHJlc3R2YWw9JycsIGV4dHJhc2FjdGlvbj0ncmFpc2UnLCBcCiAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdD0nZXhjZWwnLCAqYXJncywgKiprd2RzKQogCiAgICBDcmVhdGUgYW4gb2JqZWN0IHdoaWNoIG9wZXJhdGVzIGxpa2UgYSByZWd1bGFyIHdyaXRlciBidXQgbWFwcyBkaWN0aW9uYXJpZXMKICAgIG9udG8gb3V0cHV0IHJvd3MuICBUaGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBhIDptb2Q6YHNlcXVlbmNlCiAgICA8Y29sbGVjdGlvbnMuYWJjPmAgb2Yga2V5cyB0aGF0IGlkZW50aWZ5IHRoZSBvcmRlciBpbiB3aGljaCB2YWx1ZXMgaW4gdGhlCi0gICBkaWN0aW9uYXJ5IHBhc3NlZCB0byB0aGUgOm1ldGg6YHdyaXRlcm93YCBtZXRob2QgYXJlIHdyaXR0ZW4gdG8gdGhlCi0gICAqY3N2ZmlsZSouICBUaGUgb3B0aW9uYWwgKnJlc3R2YWwqIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHZhbHVlIHRvIGJlCisgICBkaWN0aW9uYXJ5IHBhc3NlZCB0byB0aGUgOm1ldGg6YHdyaXRlcm93YCBtZXRob2QgYXJlIHdyaXR0ZW4gdG8gZmlsZQorICAgKmYqLiAgVGhlIG9wdGlvbmFsICpyZXN0dmFsKiBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB2YWx1ZSB0byBiZQogICAgd3JpdHRlbiBpZiB0aGUgZGljdGlvbmFyeSBpcyBtaXNzaW5nIGEga2V5IGluICpmaWVsZG5hbWVzKi4gIElmIHRoZQogICAgZGljdGlvbmFyeSBwYXNzZWQgdG8gdGhlIDptZXRoOmB3cml0ZXJvd2AgbWV0aG9kIGNvbnRhaW5zIGEga2V5IG5vdCBmb3VuZCBpbgogICAgKmZpZWxkbmFtZXMqLCB0aGUgb3B0aW9uYWwgKmV4dHJhc2FjdGlvbiogcGFyYW1ldGVyIGluZGljYXRlcyB3aGF0IGFjdGlvbiB0bwotICAgdGFrZS4gIElmIGl0IGlzIHNldCB0byBgYCdyYWlzZSdgYCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIElmIGl0IGlzCi0gICBzZXQgdG8gYGAnaWdub3JlJ2BgLCBleHRyYSB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQuICBBbnkgb3RoZXIKLSAgIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgOmNsYXNzOmB3cml0ZXJgCi0gICBpbnN0YW5jZS4KKyAgIHRha2UuCisgICBJZiBpdCBpcyBzZXQgdG8gYGAncmFpc2UnYGAsIHRoZSBkZWZhdWx0IHZhbHVlLCBhIDpleGM6YFZhbHVlRXJyb3JgCisgICBpcyByYWlzZWQuCisgICBJZiBpdCBpcyBzZXQgdG8gYGAnaWdub3JlJ2BgLCBleHRyYSB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQuCisgICBBbnkgb3RoZXIgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZworICAgOmNsYXNzOmB3cml0ZXJgIGluc3RhbmNlLgogCiAgICBOb3RlIHRoYXQgdW5saWtlIHRoZSA6Y2xhc3M6YERpY3RSZWFkZXJgIGNsYXNzLCB0aGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlcgogICAgb2YgdGhlIDpjbGFzczpgRGljdFdyaXRlcmAgaXMgbm90IG9wdGlvbmFsLiAgU2luY2UgUHl0aG9uJ3MgOmNsYXNzOmBkaWN0YAogICAgb2JqZWN0cyBhcmUgbm90IG9yZGVyZWQsIHRoZXJlIGlzIG5vdCBlbm91Z2ggaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIGRlZHVjZQotICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSByb3cgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhlICpjc3ZmaWxlKi4KKyAgIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgcm93IHNob3VsZCBiZSB3cml0dGVuIHRvIGZpbGUgKmYqLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCBiMjVmYmJiLi4zODQwOTM1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTEyMzksOSArMTIzOSwxMCBAQAogY29tcGlsaW5nL2xpbmtpbmcgYSBwcm9ncmFtLCBhbmQgd2hlbiB0aGUgcHJvZ3JhbSBpcyBydW4uCiAKIFRoZSBwdXJwb3NlIG9mIHRoZSA6ZnVuYzpgZmluZF9saWJyYXJ5YCBmdW5jdGlvbiBpcyB0byBsb2NhdGUgYSBsaWJyYXJ5IGluIGEgd2F5Ci1zaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwgdmVyc2lvbnMgb2YgYQotc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzIGxpYnJhcnkKLWxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIgZGlyZWN0bHkuCitzaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIG9yIHJ1bnRpbWUgbG9hZGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwKK3ZlcnNpb25zIG9mIGEgc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzCitsaWJyYXJ5IGxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIKK2RpcmVjdGx5LgogCiBUaGUgOm1vZDpgY3R5cGVzLnV0aWxgIG1vZHVsZSBwcm92aWRlcyBhIGZ1bmN0aW9uIHdoaWNoIGNhbiBoZWxwIHRvIGRldGVybWluZQogdGhlIGxpYnJhcnkgdG8gbG9hZC4KQEAgLTEyNTksOCArMTI2MCwxNCBAQAogVGhlIGV4YWN0IGZ1bmN0aW9uYWxpdHkgaXMgc3lzdGVtIGRlcGVuZGVudC4KIAogT24gTGludXgsIDpmdW5jOmBmaW5kX2xpYnJhcnlgIHRyaWVzIHRvIHJ1biBleHRlcm5hbCBwcm9ncmFtcwotKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYW5kIGBgb2JqZHVtcGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuICBJdAotcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4gIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgorKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYGBvYmpkdW1wYGAgYW5kIGBgbGRgYCkgdG8gZmluZCB0aGUgbGlicmFyeSBmaWxlLgorSXQgcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIE9uIExpbnV4LCB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgTERfTElCUkFSWV9QQVRIYGAgaXMgdXNlZAorICAgd2hlbiBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcywgaWYgYSBsaWJyYXJ5IGNhbm5vdCBiZSBmb3VuZCBieSBhbnkgb3RoZXIgbWVhbnMuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgogCiAgICA+Pj4gZnJvbSBjdHlwZXMudXRpbCBpbXBvcnQgZmluZF9saWJyYXJ5CiAgICA+Pj4gZmluZF9saWJyYXJ5KCJtIikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA0ZjNjZmUzLi5jOTMxODU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC01MjIsNyArNTIyLDcgQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogZGF0ZS5yZXBsYWNlKHllYXIsIG1vbnRoLCBkYXkpCisuLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhcj1zZWxmLnllYXIsIG1vbnRoPXNlbGYubW9udGgsIGRheT1zZWxmLmRheSkKIAogICAgUmV0dXJuIGEgZGF0ZSB3aXRoIHRoZSBzYW1lIHZhbHVlLCBleGNlcHQgZm9yIHRob3NlIHBhcmFtZXRlcnMgZ2l2ZW4gbmV3CiAgICB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBGb3IgZXhhbXBsZSwgaWYgYGBkID09CkBAIC02MTAsNyArNjEwLDggQEAKIC4uIG1ldGhvZDo6IGRhdGUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRlLnN0cmZ0aW1lYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQorICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC02ODIsMjIgKzY4MywyNiBAQAogCiBDb25zdHJ1Y3RvcjoKIAotLi4gY2xhc3M6OiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbgogICAgaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsCiAgICBpbiB0aGUgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSYGAKLSAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAKLSAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgCisgICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYCwKKyAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAsCisgICAqIGBgMSA8PSBkYXkgPD0gbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyYGAsCisgICAqIGBgMCA8PSBob3VyIDwgMjRgYCwKKyAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAsCisgICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgLAorICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAsCisgICAqIGBgZm9sZCBpbiBbMCwgMV1gYC4KIAogICAgSWYgYW4gYXJndW1lbnQgb3V0c2lkZSB0aG9zZSByYW5nZXMgaXMgZ2l2ZW4sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCisKIE90aGVyIGNvbnN0cnVjdG9ycywgYWxsIGNsYXNzIG1ldGhvZHM6CiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudG9kYXkoKQpAQCAtNzU3LDYgKzc2Miw4IEBACiAgICAgICBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IgOmM6ZnVuYzpgZ210aW1lYAogICAgICAgZmFpbHVyZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmV0dXJuIGluc3RhbmNlcyB3aXRoIDphdHRyOmAuZm9sZGAgc2V0IHRvIDEuCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKQEAgLTc5MywxNiArODAwLDIzIEBACiAgICBtaWNyb3NlY29uZCBvZiB0aGUgcmVzdWx0IGFyZSBhbGwgMCwgYW5kIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4KIAogCi0uLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLmNvbWJpbmUoZGF0ZSwgdGltZSkKKy4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lLCB0emluZm89c2VsZi50emluZm8pCiAKICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdob3NlIGRhdGUgY29tcG9uZW50cyBhcmUgZXF1YWwgdG8gdGhlCi0gICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AKLSAgIGF0dHJpYnV0ZXMgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gRm9yIGFueQotICAgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCi0gICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1ldHooKSlgYC4gIElmIGRhdGUgaXMgYQorICAgZ2l2ZW4gOmNsYXNzOmBkYXRlYCBvYmplY3QncywgYW5kIHdob3NlIHRpbWUgY29tcG9uZW50cworICAgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gIElmIHRoZSAqdHppbmZvKgorICAgYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyB1c2VkIHRvIHNldCB0aGUgOmF0dHI6YC50emluZm9gIGF0dHJpYnV0ZQorICAgb2YgdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHRoZSA6YXR0cjpgfi50aW1lLnR6aW5mb2AgYXR0cmlidXRlIG9mIHRoZSAqdGltZSogYXJndW1lbnQKKyAgIGlzIHVzZWQuCisKKyAgIEZvciBhbnkgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCisgICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1lKCksIGQudHppbmZvKWBgLiAgSWYgZGF0ZSBpcyBhCiAgICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0LCBpdHMgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlcwogICAgYXJlIGlnbm9yZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnR6aW5mbyogYXJndW1lbnQuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5zdHJwdGltZShkYXRlX3N0cmluZywgZm9ybWF0KQogCkBAIC04NzgsNiArODkyLDE2IEBACiAgICBvciBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogZGF0ZXRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBTdXBwb3J0ZWQgb3BlcmF0aW9uczoKIAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTk2NiwyMyArOTkwLDM0IEBACiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWUoKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCBhbmQgbWljcm9zZWNvbmQuCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgYW5kIGZvbGQuCiAgICA6YXR0cjpgLnR6aW5mb2AgaXMgYGBOb25lYGAuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWV0emAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgZm9sZCB2YWx1ZSBpcyBjb3BpZWQgdG8gdGhlIHJldHVybmVkIDpjbGFzczpgLnRpbWVgIG9iamVjdC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS50aW1ldHooKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGFuZAorICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkLCBhbmQKICAgIHR6aW5mbyBhdHRyaWJ1dGVzLiAgU2VlIGFsc28gbWV0aG9kIDptZXRoOmB0aW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKFt5ZWFyWywgbW9udGhbLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXV1dXSkKKworLi4gbWV0aG9kOjogZGF0ZXRpbWUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5LCBcCisgICBob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIFwKKyAgIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIGRhdGV0aW1lIHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcywgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSBkYXRldGltZSBmcm9tIGFuIGF3YXJlCiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKQEAgLTk5MSwyMyArMTAyNiwyMCBAQAogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKICAgIElmIHByb3ZpZGVkLCAqdHoqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MsIGFuZCBpdHMKLSAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gICpzZWxmKiBtdXN0Ci0gICBiZSBhd2FyZSAoYGBzZWxmLnR6aW5mb2BgIG11c3Qgbm90IGJlIGBgTm9uZWBgLCBhbmQgYGBzZWxmLnV0Y29mZnNldCgpYGAgbXVzdAotICAgbm90IHJldHVybiBgYE5vbmVgYCkuCisgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICBJZiAqc2VsZioKKyAgIGlzIG5haXZlIChgYHNlbGYudHppbmZvIGlzIE5vbmVgYCksIGl0IGlzIHByZXN1bWVkIHRvIHJlcHJlc2VudCB0aW1lIGluIHRoZQorICAgc3lzdGVtIHRpbWV6b25lLgogCiAgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKLSAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQgZm9yIHRoZSB0YXJnZXQgdGltZXpvbmUuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKICAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCiAgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KIAogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCi0gICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKLSAgIGBgYXN0eiA9IGR0LmFzdGltZXpvbmUodHopYGAsIGBgYXN0eiAtIGFzdHoudXRjb2Zmc2V0KClgYCB3aWxsIHVzdWFsbHkgaGF2ZQotICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLiBUaGUgZGlzY3Vzc2lvbgotICAgb2YgY2xhc3MgOmNsYXNzOmB0emluZm9gIGV4cGxhaW5zIHRoZSBjYXNlcyBhdCBEYXlsaWdodCBTYXZpbmcgVGltZSB0cmFuc2l0aW9uCi0gICBib3VuZGFyaWVzIHdoZXJlIHRoaXMgY2Fubm90IGJlIGFjaGlldmVkIChhbiBpc3N1ZSBvbmx5IGlmICp0eiogbW9kZWxzIGJvdGgKLSAgIHN0YW5kYXJkIGFuZCBkYXlsaWdodCB0aW1lKS4KKyAgIHRpbWUgaW4gdGhlIHRpbWV6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgorICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgaGF2ZQorICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLgogCiAgICBJZiB5b3UgbWVyZWx5IHdhbnQgdG8gYXR0YWNoIGEgdGltZSB6b25lIG9iamVjdCAqdHoqIHRvIGEgZGF0ZXRpbWUgKmR0KiB3aXRob3V0CiAgICBhZGp1c3RtZW50IG9mIGRhdGUgYW5kIHRpbWUgZGF0YSwgdXNlIGBgZHQucmVwbGFjZSh0emluZm89dHopYGAuICBJZiB5b3UKQEAgLTEwMjksNiArMTA2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgICp0eiogbm93IGNhbiBiZSBvbWl0dGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmBhc3RpbWV6b25lYCBtZXRob2QgY2FuIG5vdyBiZSBjYWxsZWQgb24gbmFpdmUgaW5zdGFuY2VzIHRoYXQKKyAgICAgIGFyZSBwcmVzdW1lZCB0byByZXByZXNlbnQgc3lzdGVtIGxvY2FsIHRpbWUuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTEwNSw2ICsxMTQxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmB0aW1lc3RhbXBgIG1ldGhvZCB1c2VzIHRoZSA6YXR0cjpgLmZvbGRgIGF0dHJpYnV0ZSB0bworICAgICAgZGlzYW1iaWd1YXRlIHRoZSB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKQEAgLTExMzgsNyArMTE3OCw3IEBACiAgICBgYHNlbGYuZGF0ZSgpLmlzb2NhbGVuZGFyKClgYC4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5pc29mb3JtYXQoc2VwPSdUJykKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGRhdGUgYW5kIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LAogICAgWVlZWS1NTS1ERFRISDpNTTpTUy5tbW1tbW0gb3IsIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKQEAgLTExNTksNiArMTE5OSwzNyBAQAogICAgICAgPj4+IGRhdGV0aW1lKDIwMDIsIDEyLCAyNSwgdHppbmZvPVRaKCkpLmlzb2Zvcm1hdCgnICcpCiAgICAgICAnMjAwMi0xMi0yNSAwMDowMDowMC0wNjozOScKIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgID4+PiBkYXRldGltZS5ub3coKS5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKQorICAgICAgJzIwMDItMTItMjVUMDA6MDAnCisgICAgICA+Pj4gZHQgPSBkYXRldGltZSgyMDE1LCAxLCAxLCAxMiwgMzAsIDU5LCAwKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcyMDE1LTAxLTAxVDEyOjMwOjU5LjAwMDAwMCcKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5fX3N0cl9fKCkKIApAQCAtMTE4NSw3ICsxMjU2LDggQEAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAuZGF0ZXRpbWUuc3RyZnRpbWVgLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtMTMwMiwxNiArMTM3NCwxNyBAQAogQSB0aW1lIG9iamVjdCByZXByZXNlbnRzIGEgKGxvY2FsKSB0aW1lIG9mIGRheSwgaW5kZXBlbmRlbnQgb2YgYW55IHBhcnRpY3VsYXIKIGRheSwgYW5kIHN1YmplY3QgdG8gYWRqdXN0bWVudCB2aWEgYSA6Y2xhc3M6YHR6aW5mb2Agb2JqZWN0LgogCi0uLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKQorLi4gY2xhc3M6OiB0aW1lKGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gICp0emluZm8qIG1heSBiZSBgYE5vbmVgYCwgb3IgYW4gaW5zdGFuY2Ugb2YgYQogICAgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludGVnZXJzLCBpbiB0aGUKICAgIGZvbGxvd2luZyByYW5nZXM6CiAKLSAgICogYGAwIDw9IGhvdXIgPCAyNGBgCi0gICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgCi0gICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgCi0gICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYC4KKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgQWxsCiAgICBkZWZhdWx0IHRvIGBgMGBgIGV4Y2VwdCAqdHppbmZvKiwgd2hpY2ggZGVmYXVsdHMgdG8gOmNvbnN0OmBOb25lYC4KQEAgLTEzNjQsNiArMTQzNywxNyBAQAogICAgYGBOb25lYGAgaWYgbm9uZSB3YXMgcGFzc2VkLgogCiAKKy4uIGF0dHJpYnV0ZTo6IHRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKQEAgLTEzOTksMjEgKzE0ODMsNTggQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKFtob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXSkKKy4uIG1ldGhvZDo6IHRpbWUucmVwbGFjZShob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIFwKKyAgIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIDpjbGFzczpgLnRpbWVgIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgYXR0cmlidXRlcyBnaXZlbgogICAgbmV3IHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIE5vdGUgdGhhdAogICAgYGB0emluZm89Tm9uZWBgIGNhbiBiZSBzcGVjaWZpZWQgdG8gY3JlYXRlIGEgbmFpdmUgOmNsYXNzOmAudGltZWAgZnJvbSBhbgogICAgYXdhcmUgOmNsYXNzOmAudGltZWAsIHdpdGhvdXQgY29udmVyc2lvbiBvZiB0aGUgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KIAotLi4gbWV0aG9kOjogdGltZS5pc29mb3JtYXQoKQorCisuLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTUy5tbW1tbW0gb3IsIGlmCi0gICBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQorICAgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLCBISDpNTTpTUyBJZiA6bWV0aDpgdXRjb2Zmc2V0YCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIGEKICAgIDYtY2hhcmFjdGVyIHN0cmluZyBpcyBhcHBlbmRlZCwgZ2l2aW5nIHRoZSBVVEMgb2Zmc2V0IGluIChzaWduZWQpIGhvdXJzIGFuZAogICAgbWludXRlczogSEg6TU06U1MubW1tbW1tK0hIOk1NIG9yLCBpZiBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTK0hIOk1NCiAKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZXNwZWMqIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSAodGhlIGRlZmF1bHQgaXMgYGAnYXV0bydgYCkuCisgICBJdCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIC0gYGAnYXV0bydgYDogU2FtZSBhcyBgYCdzZWNvbmRzJ2BgIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKKyAgICAgc2FtZSBhcyBgYCdtaWNyb3NlY29uZHMnYGAgb3RoZXJ3aXNlLgorICAgLSBgYCdob3VycydgYDogSW5jbHVkZSB0aGUgOmF0dHI6YGhvdXJgIGluIHRoZSB0d28tZGlnaXQgSEggZm9ybWF0LgorICAgLSBgYCdtaW51dGVzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCBhbmQgOmF0dHI6YG1pbnV0ZWAgaW4gSEg6TU0gZm9ybWF0LgorICAgLSBgYCdzZWNvbmRzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCwgOmF0dHI6YG1pbnV0ZWAsIGFuZCA6YXR0cjpgc2Vjb25kYAorICAgICBpbiBISDpNTTpTUyBmb3JtYXQuCisgICAtIGBgJ21pbGxpc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUsIGJ1dCB0cnVuY2F0ZSBmcmFjdGlvbmFsIHNlY29uZAorICAgICBwYXJ0IHRvIG1pbGxpc2Vjb25kcy4gSEg6TU06U1Muc3NzIGZvcm1hdC4KKyAgIC0gYGAnbWljcm9zZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSBpbiBISDpNTTpTUy5tbW1tbW0gZm9ybWF0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRXhjbHVkZWQgdGltZSBjb21wb25lbnRzIGFyZSB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBvbiBhbiBpbnZhbGlkICp0aW1lc3BlYyogYXJndW1lbnQuCisKKworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWUKKyAgICAgID4+PiB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0xMjM0NTYpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMTI6MzQnCisgICAgICA+Pj4gZHQgPSB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcxMjozNDo1Ni4wMDAwMDAnCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKKyAgICAgICcxMjozNDo1NicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiB0aW1lLl9fc3RyX18oKQogCkBAIC0xNDMwLDcgKzE1NTEsOCBAQAogLi4gbWV0aG9kOjogdGltZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLnRpbWUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nCi0gICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQorICAgZm9yIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xNjgwLDkgKzE4MDIsMTkgQEAKIFdoZW4gRFNUIHN0YXJ0cyAodGhlICJzdGFydCIgbGluZSksIHRoZSBsb2NhbCB3YWxsIGNsb2NrIGxlYXBzIGZyb20gMTo1OSB0bwogMzowMC4gIEEgd2FsbCB0aW1lIG9mIHRoZSBmb3JtIDI6TU0gZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSBvbiB0aGF0IGRheSwgc28KIGBgYXN0aW1lem9uZShFYXN0ZXJuKWBgIHdvbid0IGRlbGl2ZXIgYSByZXN1bHQgd2l0aCBgYGhvdXIgPT0gMmBgIG9uIHRoZSBkYXkgRFNUCi1iZWdpbnMuICBJbiBvcmRlciBmb3IgOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZQotOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0IGNvbnNpZGVyIHRpbWVzIGluIHRoZSAibWlzc2luZyBob3VyIiAoMjpNTSBmb3IKLUVhc3Rlcm4pIHRvIGJlIGluIGRheWxpZ2h0IHRpbWUuCitiZWdpbnMuICBGb3IgZXhhbXBsZSwgYXQgdGhlIFNwcmluZyBmb3J3YXJkIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CisKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAzLCAxMywgNSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSkKKyAgICAuLi4KKyAgICAwNTowMDowMCBVVEMgPSAwMDowMDowMCBFU1QKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QKKyAgICAwNzowMDowMCBVVEMgPSAwMzowMDowMCBFRFQKKyAgICAwODowMDowMCBVVEMgPSAwNDowMDowMCBFRFQKKwogCiBXaGVuIERTVCBlbmRzICh0aGUgImVuZCIgbGluZSksIHRoZXJlJ3MgYSBwb3RlbnRpYWxseSB3b3JzZSBwcm9ibGVtOiB0aGVyZSdzIGFuCiBob3VyIHRoYXQgY2FuJ3QgYmUgc3BlbGxlZCB1bmFtYmlndW91c2x5IGluIGxvY2FsIHdhbGwgdGltZTogdGhlIGxhc3QgaG91ciBvZgpAQCAtMTY5MSwyOCArMTgyMyw0MSBAQAogdG8gMTowMCAoc3RhbmRhcmQgdGltZSkgYWdhaW4uIExvY2FsIHRpbWVzIG9mIHRoZSBmb3JtIDE6TU0gYXJlIGFtYmlndW91cy4KIDptZXRoOmBhc3RpbWV6b25lYCBtaW1pY3MgdGhlIGxvY2FsIGNsb2NrJ3MgYmVoYXZpb3IgYnkgbWFwcGluZyB0d28gYWRqYWNlbnQgVVRDCiBob3VycyBpbnRvIHRoZSBzYW1lIGxvY2FsIGhvdXIgdGhlbi4gIEluIHRoZSBFYXN0ZXJuIGV4YW1wbGUsIFVUQyB0aW1lcyBvZiB0aGUKLWZvcm0gNTpNTSBhbmQgNjpNTSBib3RoIG1hcCB0byAxOk1NIHdoZW4gY29udmVydGVkIHRvIEVhc3Rlcm4uICBJbiBvcmRlciBmb3IKLTptZXRoOmBhc3RpbWV6b25lYCB0byBtYWtlIHRoaXMgZ3VhcmFudGVlLCB0aGUgOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0Ci1jb25zaWRlciB0aW1lcyBpbiB0aGUgInJlcGVhdGVkIGhvdXIiIHRvIGJlIGluIHN0YW5kYXJkIHRpbWUuICBUaGlzIGlzIGVhc2lseQotYXJyYW5nZWQsIGFzIGluIHRoZSBleGFtcGxlLCBieSBleHByZXNzaW5nIERTVCBzd2l0Y2ggdGltZXMgaW4gdGhlIHRpbWUgem9uZSdzCi1zdGFuZGFyZCBsb2NhbCB0aW1lLgorZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybiwgYnV0IGVhcmxpZXIgdGltZXMKK2hhdmUgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIHNldCB0byAwIGFuZCB0aGUgbGF0ZXIgdGltZXMgaGF2ZSBpdCBzZXQgdG8gMS4KK0ZvciBleGFtcGxlLCBhdCB0aGUgRmFsbCBiYWNrIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CiAKLUFwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgc3VjaCBhbWJpZ3VpdGllcyBzaG91bGQgYXZvaWQgdXNpbmcgaHlicmlkCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMTEsIDYsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCksIHQuZm9sZCkKKyAgICAuLi4KKyAgICAwNDowMDowMCBVVEMgPSAwMDowMDowMCBFRFQgMAorICAgIDA1OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVEVCAwCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUIDEKKyAgICAwNzowMDowMCBVVEMgPSAwMjowMDowMCBFU1QgMAorCitOb3RlIHRoYXQgdGhlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyB0aGF0IGRpZmZlciBvbmx5IGJ5IHRoZSB2YWx1ZSBvZiB0aGUKKzphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIGFyZSBjb25zaWRlcmVkIGVxdWFsIGluIGNvbXBhcmlzb25zLgorCitBcHBsaWNhdGlvbnMgdGhhdCBjYW4ndCBiZWFyIHdhbGwtdGltZSBhbWJpZ3VpdGllcyBzaG91bGQgZXhwbGljaXRseSBjaGVjayB0aGUKK3ZhbHVlIG9mIHRoZSA6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBvciBhdm9pZCB1c2luZyBoeWJyaWQKIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzc2VzOyB0aGVyZSBhcmUgbm8gYW1iaWd1aXRpZXMgd2hlbiB1c2luZyA6Y2xhc3M6YHRpbWV6b25lYCwKIG9yIGFueSBvdGhlciBmaXhlZC1vZmZzZXQgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzIChzdWNoIGFzIGEgY2xhc3MgcmVwcmVzZW50aW5nCiBvbmx5IEVTVCAoZml4ZWQgb2Zmc2V0IC01IGhvdXJzKSwgb3Igb25seSBFRFQgKGZpeGVkIG9mZnNldCAtNCBob3VycykpLgogCiAuLiBzZWVhbHNvOjoKIAotICAgYHB5dHogPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ei8+YF8KKyAgIGBkYXRldHVpbC50eiA8aHR0cHM6Ly9kYXRldXRpbC5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvdHouaHRtbD5gXwogICAgICAgVGhlIHN0YW5kYXJkIGxpYnJhcnkgaGFzIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGZvciBoYW5kbGluZyBhcmJpdHJhcnkKICAgICAgIGZpeGVkIG9mZnNldHMgZnJvbSBVVEMgYW5kIDphdHRyOmB0aW1lem9uZS51dGNgIGFzIFVUQyB0aW1lem9uZSBpbnN0YW5jZS4KIAotICAgICAgKnB5dHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCisgICAgICAqZGF0ZXR1aWwudHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCiAgICAgICBPbHNvbiBkYXRhYmFzZSkgdG8gUHl0aG9uIGFuZCBpdHMgdXNhZ2UgaXMgcmVjb21tZW5kZWQuCiAKICAgIGBJQU5BIHRpbWV6b25lIGRhdGFiYXNlIDxodHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzPmBfCi0gICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHogb3Igem9uZWluZm8pIGNvbnRhaW5zIGNvZGUgYW5kCisgICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHosIHR6ZGF0YSBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKICAgICAgIGRhdGEgdGhhdCByZXByZXNlbnQgdGhlIGhpc3Rvcnkgb2YgbG9jYWwgdGltZSBmb3IgbWFueSByZXByZXNlbnRhdGl2ZQogICAgICAgbG9jYXRpb25zIGFyb3VuZCB0aGUgZ2xvYmUuIEl0IGlzIHVwZGF0ZWQgcGVyaW9kaWNhbGx5IHRvIHJlZmxlY3QgY2hhbmdlcwogICAgICAgbWFkZSBieSBwb2xpdGljYWwgYm9kaWVzIHRvIHRpbWUgem9uZSBib3VuZGFyaWVzLCBVVEMgb2Zmc2V0cywgYW5kCkBAIC0xNzMyLDcgKzE4NzcsNyBAQAogbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKLS4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCisuLiBjbGFzczo6IHRpbWV6b25lKG9mZnNldCwgbmFtZT1Ob25lKQogCiAgIFRoZSAqb2Zmc2V0KiBhcmd1bWVudCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIDpjbGFzczpgdGltZWRlbHRhYAogICBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxvY2FsIHRpbWUgYW5kIFVUQy4gIEl0IG11c3QKQEAgLTE3NDEsMTAgKzE4ODYsNyBAQAogICBvdGhlcndpc2UgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgIFRoZSAqbmFtZSogYXJndW1lbnQgaXMgb3B0aW9uYWwuICBJZiBzcGVjaWZpZWQgaXQgbXVzdCBiZSBhIHN0cmluZyB0aGF0Ci0gIGlzIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBgYHR6bmFtZShkdClgYCBtZXRob2QuICBPdGhlcndpc2UsCi0gIGBgdHpuYW1lKGR0KWBgIHJldHVybnMgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAotICBgYG9mZnNldC5taW51dGVzYGAgcmVzcGVjdGl2ZWx5LgorICB3aWxsIGJlIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSA6bWV0aDpgZGF0ZXRpbWUudHpuYW1lYCBtZXRob2QuCiAKICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE3NTcsMTEgKzE4OTksMTkgQEAKIAogLi4gbWV0aG9kOjogdGltZXpvbmUudHpuYW1lKGR0KQogCi0gIFJldHVybiB0aGUgZml4ZWQgdmFsdWUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgdGltZXpvbmVgIGluc3RhbmNlIGlzCi0gIGNvbnN0cnVjdGVkIG9yIGEgc3RyaW5nICdVVENzSEg6TU0nLCB3aGVyZSBzIGlzIHRoZSBzaWduIG9mCi0gICpvZmZzZXQqLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKKyAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UKKyAgaXMgY29uc3RydWN0ZWQuICBJZiAqbmFtZSogaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjb25zdHJ1Y3RvciwgdGhlCisgIG5hbWUgcmV0dXJuZWQgYnkgYGB0em5hbWUoZHQpYGAgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHZhbHVlIG9mIHRoZQorICBgYG9mZnNldGBgIGFzIGZvbGxvd3MuICBJZiAqb2Zmc2V0KiBpcyBgYHRpbWVkZWx0YSgwKWBgLCB0aGUgbmFtZQorICBpcyAiVVRDIiwgb3RoZXJ3aXNlIGl0IGlzIGEgc3RyaW5nICdVVEPCsUhIOk1NJywgd2hlcmUgwrEgaXMgdGhlIHNpZ24KKyAgb2YgYGBvZmZzZXRgYCwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCiAgIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgTmFtZSBnZW5lcmF0ZWQgZnJvbSBgYG9mZnNldD10aW1lZGVsdGEoMClgYCBpcyBub3cgcGxhaW4gJ1VUQycsIG5vdAorICAgICAnVVRDKzAwOjAwJy4KKworCiAuLiBtZXRob2Q6OiB0aW1lem9uZS5kc3QoZHQpCiAKICAgQWx3YXlzIHJldHVybnMgYGBOb25lYGAuCkBAIC0xOTExLDYgKzIwNjEsMzQgQEAKIHwgYGAlJWBgICAgIHwgQSBsaXRlcmFsIGBgJyUnYGAgY2hhcmFjdGVyLiAgIHwgJSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAorU2V2ZXJhbCBhZGRpdGlvbmFsIGRpcmVjdGl2ZXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBDODkgc3RhbmRhcmQgYXJlIGluY2x1ZGVkIGZvcgorY29udmVuaWVuY2UuIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGNvcnJlc3BvbmQgdG8gSVNPIDg2MDEgZGF0ZSB2YWx1ZXMuIFRoZXNlCittYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHdoZW4gdXNlZCB3aXRoIHRoZSA6bWV0aDpgc3RyZnRpbWVgCittZXRob2QuIFRoZSBJU08gODYwMSB5ZWFyIGFuZCBJU08gODYwMSB3ZWVrIGRpcmVjdGl2ZXMgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUKK3dpdGggdGhlIHllYXIgYW5kIHdlZWsgbnVtYmVyIGRpcmVjdGl2ZXMgYWJvdmUuIENhbGxpbmcgOm1ldGg6YHN0cnB0aW1lYCB3aXRoCitpbmNvbXBsZXRlIG9yIGFtYmlndW91cyBJU08gODYwMSBkaXJlY3RpdmVzIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKworKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBEaXJlY3RpdmUgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgICAgIHwgTm90ZXMgfAorKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCVHYGAgICAgfCBJU08gODYwMSB5ZWFyIHdpdGggY2VudHVyeSAgICAgfCAwMDAxLCAwMDAyLCAuLi4sIDIwMTMsIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCByZXByZXNlbnRpbmcgdGhlIHllYXIgdGhhdCAgICAgfCAyMDE0LCAuLi4sIDk5OTgsIDk5OTkgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBjb250YWlucyB0aGUgZ3JlYXRlciBwYXJ0IG9mICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgSVNPIHdlZWsgKGBgJVZgYCkuICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCV1YGAgICAgfCBJU08gODYwMSB3ZWVrZGF5IGFzIGEgZGVjaW1hbCAgfCAxLCAyLCAuLi4sIDcgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2hlcmUgMSBpcyBNb25kYXkuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCVWYGAgICAgfCBJU08gODYwMSB3ZWVrIGFzIGEgZGVjaW1hbCAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2l0aCBNb25kYXkgYXMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBXZWVrIDAxIGlzIHRoZSB3ZWVrIGNvbnRhaW5pbmcgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBKYW4gNC4gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAgd2VyZSBhZGRlZC4KKwogTm90ZXM6CiAKICgxKQpAQCAtMTk3NSw3ICsyMTUzLDE0IEBACiAKICg3KQogICAgV2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJwdGltZWAgbWV0aG9kLCBgYCVVYGAgYW5kIGBgJVdgYCBhcmUgb25seSB1c2VkCi0gICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgorICAgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIGNhbGVuZGFyIHllYXIgKGBgJVlgYCkKKyAgIGFyZSBzcGVjaWZpZWQuCisKKyg4KQorICAgU2ltaWxhciB0byBgYCVVYGAgYW5kIGBgJVdgYCwgYGAlVmBgIGlzIG9ubHkgdXNlZCBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUKKyAgIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIElTTyB5ZWFyIChgYCVHYGApIGFyZSBzcGVjaWZpZWQgaW4gYQorICAgOm1ldGg6YHN0cnB0aW1lYCBmb3JtYXQgc3RyaW5nLiBBbHNvIG5vdGUgdGhhdCBgYCVHYGAgYW5kIGBgJVlgYCBhcmUgbm90CisgICBpbnRlcmNoYW5nZWFibGUuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYm0ucnN0IGIvRG9jL2xpYnJhcnkvZGJtLnJzdAppbmRleCAyYTFkYjkxLi4zMmU4MGIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RibS5yc3QKQEAgLTM1MSw2ICszNTEsMTAgQEAKICAgICAgIDpmdW5jOmAub3BlbmAgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZGF0YWJhc2Ugd2hlbiB0aGUgZmxhZyBoYXMgdGhlIHZhbHVlCiAgICAgICBgYCduJ2BgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjYgMy44CisgICAgICBDcmVhdGluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIGFuZCBgYCd3J2BgIG1vZGVzLiAgTW9kaWZ5aW5nIGRhdGFiYXNlIGluCisgICAgICBgYCdyJ2BgIG1vZGUuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIGNsYXNzLCA6Y2xhc3M6YGR1bWJkYm1gIG9iamVjdHMKICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBiNWNlMGIxLi5lOTg0ZWRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAqdmFsdWUqIGNhbiBiZSBhbiBpbnRlZ2VyLCBzdHJpbmcsIHR1cGxlLCA6Y2xhc3M6YGZsb2F0YCwgb3IgYW5vdGhlciA6Y2xhc3M6YERlY2ltYWxgCiAgICBvYmplY3QuIElmIG5vICp2YWx1ZSogaXMgZ2l2ZW4sIHJldHVybnMgYGBEZWNpbWFsKCcwJylgYC4gIElmICp2YWx1ZSogaXMgYQogICAgc3RyaW5nLCBpdCBzaG91bGQgY29uZm9ybSB0byB0aGUgZGVjaW1hbCBudW1lcmljIHN0cmluZyBzeW50YXggYWZ0ZXIgbGVhZGluZwotICAgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgcmVtb3ZlZDo6CisgICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLCBhcyB3ZWxsIGFzIHVuZGVyc2NvcmVzIHRocm91Z2hvdXQsIGFyZSByZW1vdmVkOjoKIAogICAgICAgc2lnbiAgICAgICAgICAgOjo9ICAnKycgfCAnLScKICAgICAgIGRpZ2l0ICAgICAgICAgIDo6PSAgJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnIHwgJzYnIHwgJzcnIHwgJzgnIHwgJzknCkBAIC0zOTQsNiArMzk0LDEwIEBACiAgICAgICA6Y2xhc3M6YGZsb2F0YCBhcmd1bWVudHMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAKICAgICAgIHRyYXAgaXMgc2V0LiBCeSBkZWZhdWx0IHRoZSB0cmFwIGlzIG9mZi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGZvciBncm91cGluZywgYXMgd2l0aCBpbnRlZ3JhbCBhbmQgZmxvYXRpbmctcG9pbnQKKyAgICAgIGxpdGVyYWxzIGluIGNvZGUuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtNDQ3LDYgKzQ1MSwxOSBAQAogICAgICAgYGBEZWNpbWFsKCczMjFlKzUnKS5hZGp1c3RlZCgpYGAgcmV0dXJucyBzZXZlbi4gIFVzZWQgZm9yIGRldGVybWluaW5nIHRoZQogICAgICAgcG9zaXRpb24gb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgd2l0aCByZXNwZWN0IHRvIHRoZSBkZWNpbWFsIHBvaW50LgogCisgICAuLiBtZXRob2Q6OiBhc19pbnRlZ2VyX3JhdGlvKCkKKworICAgICAgUmV0dXJuIGEgcGFpciBgYChuLCBkKWBgIG9mIGludGVnZXJzIHRoYXQgcmVwcmVzZW50IHRoZSBnaXZlbgorICAgICAgOmNsYXNzOmBEZWNpbWFsYCBpbnN0YW5jZSBhcyBhIGZyYWN0aW9uLCBpbiBsb3dlc3QgdGVybXMgYW5kCisgICAgICB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3I6OgorCisgICAgICAgICAgPj4+IERlY2ltYWwoJy0zLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICAgKC0xNTcsIDUwKQorCisgICAgICBUaGUgY29udmVyc2lvbiBpcyBleGFjdC4gIFJhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgVmFsdWVFcnJvcgorICAgICAgb24gTmFOcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKICAgIC4uIG1ldGhvZDo6IGFzX3R1cGxlKCkKIApAQCAtMTA2Miw4ICsxMDc5LDggQEAKICAgICAgICAgIERlY2ltYWwoJzQuNDQnKQogCiAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZSBJQk0gc3BlY2lmaWNhdGlvbi4KLSAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzCi0gICAgICBwZXJtaXR0ZWQuCisgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBvcgorICAgICAgdW5kZXJzY29yZXMgYXJlIHBlcm1pdHRlZC4KIAogICAgLi4gbWV0aG9kOjogY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChmKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCBmODY3MjViLi5hMTU2OTBiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTMxLDkgKzMxLDkgQEAKIAogICAgPj4+IGRpcy5kaXMobXlmdW5jKQogICAgICAyICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChsZW4pCi0gICAgICAgICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQotICAgICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCi0gICAgICAgICAgICAgICAgIDkgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQorICAgICAgICAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAKIChUaGUgIjIiIGlzIGEgbGluZSBudW1iZXIpLgogCkBAIC02MDcsNiArNjA3LDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBvcGNvZGU6OiBTRVRVUF9BTk5PVEFUSU9OUworCisgICBDaGVja3Mgd2hldGhlciBgYF9fYW5ub3RhdGlvbnNfX2BgIGlzIGRlZmluZWQgaW4gYGBsb2NhbHMoKWBgLCBpZiBub3QgaXQgaXMKKyAgIHNldCB1cCB0byBhbiBlbXB0eSBgYGRpY3RgYC4gVGhpcyBvcGNvZGUgaXMgb25seSBlbWl0dGVkIGlmIGEgY2xhc3MKKyAgIG9yIG1vZHVsZSBib2R5IGNvbnRhaW5zIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gCisgICBzdGF0aWNhbGx5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gb3Bjb2RlOjogSU1QT1JUX1NUQVIKIApAQCAtNjgyLDggKzY5MCw3IEBACiAgICAuLiBYWFggZXhwbGFpbiB0aGUgV0hZIHN0dWZmIQogCiAKLUFsbCBvZiB0aGUgZm9sbG93aW5nIG9wY29kZXMgZXhwZWN0IGFyZ3VtZW50cy4gIEFuIGFyZ3VtZW50IGlzIHR3byBieXRlcywgd2l0aAotdGhlIG1vcmUgc2lnbmlmaWNhbnQgYnl0ZSBsYXN0LgorQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyB1c2UgdGhlaXIgYXJndW1lbnRzLgogCiAuLiBvcGNvZGU6OiBTVE9SRV9OQU1FIChuYW1laSkKIApAQCAtNzY5LDYgKzc3NiwyMyBAQAogICAgdG8gaG9sZCAqY291bnQqIGVudHJpZXMuCiAKIAorLi4gb3Bjb2RlOjogQlVJTERfQ09OU1RfS0VZX01BUCAoY291bnQpCisKKyAgIFRoZSB2ZXJzaW9uIG9mIDpvcGNvZGU6YEJVSUxEX01BUGAgc3BlY2lhbGl6ZWQgZm9yIGNvbnN0YW50IGtleXMuICAqY291bnQqCisgICB2YWx1ZXMgYXJlIGNvbnN1bWVkIGZyb20gdGhlIHN0YWNrLiAgVGhlIHRvcCBlbGVtZW50IG9uIHRoZSBzdGFjayBjb250YWlucworICAgYSB0dXBsZSBvZiBrZXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBvcGNvZGU6OiBCVUlMRF9TVFJJTkcgKGNvdW50KQorCisgICBDb25jYXRlbmF0ZXMgKmNvdW50KiBzdHJpbmdzIGZyb20gdGhlIHN0YWNrIGFuZCBwdXNoZXMgdGhlIHJlc3VsdGluZyBzdHJpbmcKKyAgIG9udG8gdGhlIHN0YWNrLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBMT0FEX0FUVFIgKG5hbWVpKQogCiAgICBSZXBsYWNlcyBUT1Mgd2l0aCBgYGdldGF0dHIoVE9TLCBjb19uYW1lc1tuYW1laV0pYGAuCkBAIC04NzQsNiArODk4LDEzIEBACiAgICBEZWxldGVzIGxvY2FsIGBgY29fdmFybmFtZXNbdmFyX251bV1gYC4KIAogCisuLiBvcGNvZGU6OiBTVE9SRV9BTk5PVEFUSU9OIChuYW1laSkKKworICAgU3RvcmVzIFRPUyBhcyBgYGxvY2FscygpWydfX2Fubm90YXRpb25zX18nXVtjb19uYW1lc1tuYW1laV1dID0gVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQ0xPU1VSRSAoaSkKIAogICAgUHVzaGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBjZWxsIGNvbnRhaW5lZCBpbiBzbG90ICppKiBvZiB0aGUgY2VsbCBhbmQgZnJlZQpAQCAtOTI5LDI3ICs5NjAsMTYgQEAKIC4uIG9wY29kZTo6IE1BS0VfRlVOQ1RJT04gKGFyZ2MpCiAKICAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgRnJvbSBib3R0b20gdG8gdG9wLCB0aGUgY29uc3VtZWQKLSAgIHN0YWNrIG11c3QgY29uc2lzdCBvZgorICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mIHZhbHVlcyBpZiB0aGUgYXJndW1lbnQgY2FycmllcyBhIHNwZWNpZmllZCBmbGFnIHZhbHVlCiAKLSAgICogYGBhcmdjICYgMHhGRmBgIGRlZmF1bHQgYXJndW1lbnQgb2JqZWN0cyBpbiBwb3NpdGlvbmFsIG9yZGVyCi0gICAqIGBgKGFyZ2MgPj4gOCkgJiAweEZGYGAgcGFpcnMgb2YgbmFtZSBhbmQgZGVmYXVsdCBhcmd1bWVudCwgd2l0aCB0aGUgbmFtZQotICAgICBqdXN0IGJlbG93IHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrLCBmb3Iga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMKLSAgICogYGAoYXJnYyA+PiAxNikgJiAweDdGRkZgYCBwYXJhbWV0ZXIgYW5ub3RhdGlvbiBvYmplY3RzCi0gICAqIGEgdHVwbGUgbGlzdGluZyB0aGUgcGFyYW1ldGVyIG5hbWVzIGZvciB0aGUgYW5ub3RhdGlvbnMgKG9ubHkgaWYgdGhlcmUgYXJlCi0gICAgIG9ueSBhbm5vdGF0aW9uIG9iamVjdHMpCisgICAqIGBgMHgwMWBgIGEgdHVwbGUgb2YgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKKyAgICogYGAweDAyYGAgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzJyBkZWZhdWx0IHZhbHVlcworICAgKiBgYDB4MDRgYCBhbiBhbm5vdGF0aW9uIGRpY3Rpb25hcnkKKyAgICogYGAweDA4YGAgYSB0dXBsZSBjb250YWluaW5nIGNlbGxzIGZvciBmcmVlIHZhcmlhYmxlcywgbWFraW5nIGEgY2xvc3VyZQogICAgKiB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uIChhdCBUT1MxKQogICAgKiB0aGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb24gKGF0IFRPUykKIAogCi0uLiBvcGNvZGU6OiBNQUtFX0NMT1NVUkUgKGFyZ2MpCi0KLSAgIENyZWF0ZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LCBzZXRzIGl0cyAqX19jbG9zdXJlX18qIHNsb3QsIGFuZCBwdXNoZXMgaXQgb24KLSAgIHRoZSBzdGFjay4gIFRPUyBpcyB0aGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb24sIFRPUzEgaXMgdGhlCi0gICBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24sIGFuZCBUT1MyIGlzIHRoZSB0dXBsZSBjb250YWluaW5nIGNlbGxzIGZvcgotICAgdGhlIGNsb3N1cmUncyBmcmVlIHZhcmlhYmxlcy4gICphcmdjKiBpcyBpbnRlcnByZXRlZCBhcyBpbiBgYE1BS0VfRlVOQ1RJT05gYDsKLSAgIHRoZSBhbm5vdGF0aW9ucyBhbmQgZGVmYXVsdHMgYXJlIGFsc28gaW4gdGhlIHNhbWUgb3JkZXIgYmVsb3cgVE9TMi4KLQotCiAuLiBvcGNvZGU6OiBCVUlMRF9TTElDRSAoYXJnYykKIAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBzbGljZQpAQCAtOTg5LDYgKzEwMDksMjggQEAKICAgIGFyZ3VtZW50cy4KIAogCisuLiBvcGNvZGU6OiBGT1JNQVRfVkFMVUUgKGZsYWdzKQorCisgICBVc2VkIGZvciBpbXBsZW1lbnRpbmcgZm9ybWF0dGVkIGxpdGVyYWwgc3RyaW5ncyAoZi1zdHJpbmdzKS4gIFBvcHMKKyAgIGFuIG9wdGlvbmFsICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2ssIHRoZW4gYSByZXF1aXJlZCAqdmFsdWUqLgorICAgKmZsYWdzKiBpcyBpbnRlcnByZXRlZCBhcyBmb2xsb3dzOgorCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMGBgOiAqdmFsdWUqIGlzIGZvcm1hdHRlZCBhcy1pcy4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAxYGA6IGNhbGwgOmZ1bmM6YHN0cmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAyYGA6IGNhbGwgOmZ1bmM6YHJlcHJgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwM2BgOiBjYWxsIDpmdW5jOmBhc2NpaWAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDA0KSA9PSAweDA0YGA6IHBvcCAqZm10X3NwZWMqIGZyb20gdGhlIHN0YWNrIGFuZCB1c2UKKyAgICAgaXQsIGVsc2UgdXNlIGFuIGVtcHR5ICpmbXRfc3BlYyouCisKKyAgIEZvcm1hdHRpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIDpjOmZ1bmM6YFB5T2JqZWN0X0Zvcm1hdGAuICBUaGUKKyAgIHJlc3VsdCBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBIQVZFX0FSR1VNRU5UCiAKICAgIFRoaXMgaXMgbm90IHJlYWxseSBhbiBvcGNvZGUuICBJdCBpZGVudGlmaWVzIHRoZSBkaXZpZGluZyBsaW5lIGJldHdlZW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5M2I1Yy4uMDAwMDAwMAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0uLiBfZW1haWwtZXhhbXBsZXM6Ci0KLTptb2Q6YGVtYWlsYDogRXhhbXBsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSGVyZSBhcmUgYSBmZXcgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgdG8gcmVhZCwgd3JpdGUsCi1hbmQgc2VuZCBzaW1wbGUgZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgbW9yZSBjb21wbGV4IE1JTUUgbWVzc2FnZXMuCi0KLUZpcnN0LCBsZXQncyBzZWUgaG93IHRvIGNyZWF0ZSBhbmQgc2VuZCBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2U6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5Ci0KLQotQW5kIHBhcnNpbmcgUkZDODIyIGhlYWRlcnMgY2FuIGVhc2lseSBiZSBkb25lIGJ5IHRoZSBwYXJzZShmaWxlbmFtZSkgb3IKLXBhcnNlc3RyKG1lc3NhZ2VfYXNfc3RyaW5nKSBtZXRob2RzIG9mIHRoZSBQYXJzZXIoKSBjbGFzczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgYSBNSU1FIG1lc3NhZ2UgY29udGFpbmluZyBhIGJ1bmNoIG9mIGZhbWlseQotcGljdHVyZXMgdGhhdCBtYXkgYmUgcmVzaWRpbmcgaW4gYSBkaXJlY3Rvcnk6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtbWltZS5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIHRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYW4gZW1haWwKLW1lc3NhZ2U6IFsxXV8KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1kaXIucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gdW5wYWNrIGEgTUlNRSBtZXNzYWdlIGxpa2UgdGhlIG9uZQotYWJvdmUsIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXM6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5Ci0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KLXRleHQgdmVyc2lvbjogWzJdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5Ci0KLQotLi4gX2VtYWlsLWNvbnRlbnRtYW5hZ2VyLWFwaS1leGFtcGxlczoKLQotRXhhbXBsZXMgdXNpbmcgdGhlIFByb3Zpc2lvbmFsIEFQSQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotSGVyZSBpcyBhIHJld29ya2luZyBvZiB0aGUgbGFzdCBleGFtcGxlIHVzaW5nIHRoZSBwcm92aXNpb25hbCBBUEkuICBUbyBtYWtlCi10aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgd2UgaW5jbHVkZSBhIHJlbGF0ZWQgaW1hZ2UgaW4gdGhlIGh0bWwgcGFydCwgYW5kCi13ZSBzYXZlIGEgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kIHRvIGRpc2ssIGFzIHdlbGwgYXMgc2VuZGluZyBpdC4KLQotVGhpcyBleGFtcGxlIGFsc28gc2hvd3MgaG93IGVhc3kgaXQgaXMgdG8gaW5jbHVkZSBub24tQVNDSUksIGFuZCBzaW1wbGlmaWVzIHRoZQotc2VuZGluZyBvZiB0aGUgbWVzc2FnZSB1c2luZyB0aGUgOm1ldGg6YC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBvZiB0aGUKLTptb2Q6YHNtdHBsaWJgIG1vZHVsZS4KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLUlmIHdlIHdlcmUgaW5zdGVhZCBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUKLXdheSB3ZSBjb3VsZCBwcm9jZXNzIGl0OgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQotCi1VcCB0byB0aGUgcHJvbXB0LCB0aGUgb3V0cHV0IGZyb20gdGhlIGFib3ZlIGlzOgotCi0uLiBjb2RlLWJsb2NrOjogbm9uZQotCi0gICAgVG86IFBlbmVsb3BlIFB1c3N5Y2F0IDxwZW5lbG9wZUBleGFtcGxlLmNvbT4sIEZhYnJldHRlIFB1c3N5Y2F0IDxmYWJyZXR0ZUBleGFtcGxlLmNvbT4KLSAgICBGcm9tOiBQZXDDqSBMZSBQZXcgPHBlcGVAZXhhbXBsZS5jb20+Ci0gICAgU3ViamVjdDogQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIKLQotICAgIFNhbHV0IQotCi0gICAgQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbMV0gVGhhbmtzIHRvIE1hdHRoZXcgRGl4b24gQ293bGVzIGZvciB0aGUgb3JpZ2luYWwgaW5zcGlyYXRpb24gYW5kIGV4YW1wbGVzLgotLi4gWzJdIENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBNYXRlamVrLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdAppbmRleCAxNjFkODZhLi4wNTM0NjNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdApAQCAtOCw2ICs4LDExIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUgbmV3CitBUEkgb25seSB0aGUgYWxpYXNlcyB0YWJsZSBpcyB1c2VkLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgOmNsYXNzOmBDaGFyc2V0YCBmb3IgcmVwcmVzZW50aW5nIGNoYXJhY3RlciBzZXRzCiBhbmQgY2hhcmFjdGVyIHNldCBjb252ZXJzaW9ucyBpbiBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBhIGNoYXJhY3RlciBzZXQKIHJlZ2lzdHJ5IGFuZCBzZXZlcmFsIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIG1hbmlwdWxhdGluZyB0aGlzIHJlZ2lzdHJ5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzY1MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKQEAgLTAsMCArMSw3NTQgQEAKKy4uIF9jb21wYXQzMl9tZXNzYWdlOgorCis6bW9kOmBlbWFpbC5tZXNzYWdlLk1lc3NhZ2VgOiBSZXByZXNlbnRpbmcgYW4gZW1haWwgbWVzc2FnZSB1c2luZyB0aGUgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbW9kdWxlOjogZW1haWwubWVzc2FnZQorICAgOnN5bm9wc2lzOiBUaGUgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgZW1haWwgbWVzc2FnZXMgaW4gYSBmYXNoaW9uCisgICAgICAgICAgICAgIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBweXRob24zLjIKKworCitUaGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MsIHdpdGhvdXQgdGhlIG1ldGhvZHMgYWRkZWQgYnkgdGhhdAorY2xhc3MsIGFuZCB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNlcnRhaW4gb3RoZXIgbWV0aG9kcyBiZWluZyBzbGlnaHRseQorZGlmZmVyZW50LiAgV2UgYWxzbyBkb2N1bWVudCBoZXJlIHNvbWUgbWV0aG9kcyB0aGF0LCB3aGlsZSBzdXBwb3J0ZWQgYnkgdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MsIGFyZSBub3QgcmVjb21tZW5kZWQgdW5sZXNzIHlvdSBhcmUKK2RlYWxpbmcgd2l0aCBsZWdhY3kgY29kZS4KKworVGhlIHBoaWxvc29waHkgYW5kIHN0cnVjdHVyZSBvZiB0aGUgdHdvIGNsYXNzZXMgaXMgb3RoZXJ3aXNlIHRoZSBzYW1lLgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgYmVoYXZpb3IgdW5kZXIgdGhlIGRlZmF1bHQgKGZvciA6Y2xhc3M6YE1lc3NhZ2VgKQorcG9saWN5IDphdHRyOmB+ZW1haWwucG9saWN5LkNvbXBhdDMyYC4gIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIGFub3RoZXIgcG9saWN5LAoreW91IHNob3VsZCBiZSB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGluc3RlYWQuCisKK0FuIGVtYWlsIG1lc3NhZ2UgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCBhICpwYXlsb2FkKi4gIEhlYWRlcnMgbXVzdCBiZQorOnJmYzpgNTIzM2Agc3R5bGUgbmFtZXMgYW5kIHZhbHVlcywgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kIHZhbHVlIGFyZQorc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIHRoZQorZmllbGQgdmFsdWUuICBUaGUgcGF5bG9hZCBtYXkgYmUgYSBzaW1wbGUgdGV4dCBtZXNzYWdlLCBvciBhIGJpbmFyeSBvYmplY3QsIG9yCithIHN0cnVjdHVyZWQgc2VxdWVuY2Ugb2Ygc3ViLW1lc3NhZ2VzIGVhY2ggd2l0aCB0aGVpciBvd24gc2V0IG9mIGhlYWRlcnMgYW5kCit0aGVpciBvd24gcGF5bG9hZC4gIFRoZSBsYXR0ZXIgdHlwZSBvZiBwYXlsb2FkIGlzIGluZGljYXRlZCBieSB0aGUgbWVzc2FnZQoraGF2aW5nIGEgTUlNRSB0eXBlIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG9yCis6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KKworVGhlIGNvbmNlcHR1YWwgbW9kZWwgcHJvdmlkZWQgYnkgYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCBpcyB0aGF0IG9mIGFuCitvcmRlcmVkIGRpY3Rpb25hcnkgb2YgaGVhZGVycyB3aXRoIGFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGJvdGgKK3NwZWNpYWxpemVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGhlYWRlcnMsIGZvciBhY2Nlc3NpbmcgdGhlIHBheWxvYWQsIGZvcgorZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbXNzYWdlLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlcgordGhlIG9iamVjdCB0cmVlLiAgTm90ZSB0aGF0IGR1cGxpY2F0ZSBoZWFkZXJzIGFyZSBzdXBwb3J0ZWQgYnV0IHNwZWNpYWwgbWV0aG9kcworbXVzdCBiZSB1c2VkIHRvIGFjY2VzcyB0aGVtLgorCitUaGUgOmNsYXNzOmBNZXNzYWdlYCBwc3VlZG8tZGljdGlvbmFyeSBpcyBpbmRleGVkIGJ5IHRoZSBoZWFkZXIgbmFtZXMsIHdoaWNoCittdXN0IGJlIEFTQ0lJIHZhbHVlcy4gIFRoZSB2YWx1ZXMgb2YgdGhlIGRpY3Rpb25hcnkgYXJlIHN0cmluZ3MgdGhhdCBhcmUKK3N1cHBvc2VkIHRvIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzOyB0aGVyZSBpcyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yCitub24tQVNDSUkgaW5wdXQsIGJ1dCBpdCBkb2Vzbid0IGFsd2F5cyBwcm9kdWNlIHRoZSBjb3JyZWN0IHJlc3VsdHMuICBIZWFkZXJzCithcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcgZm9ybSwgYnV0IGZpZWxkIG5hbWVzIGFyZSBtYXRjaGVkCitjYXNlLWluc2Vuc2l0aXZlbHkuICBUaGVyZSBtYXkgYWxzbyBiZSBhIHNpbmdsZSBlbnZlbG9wZSBoZWFkZXIsIGFsc28ga25vd24gYXMKK3RoZSAqVW5peC1Gcm9tKiBoZWFkZXIgb3IgdGhlIGBgRnJvbV9gYCBoZWFkZXIuICBUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhCitzdHJpbmcgb3IgYnl0ZXMsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlIG9iamVjdHMsIG9yIGEgbGlzdCBvZgorOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBmb3IgTUlNRSBjb250YWluZXIgZG9jdW1lbnRzIChlLmcuCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKS4KKworSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CisKKworLi4gY2xhc3M6OiBNZXNzYWdlKHBvbGljeT1jb21wYXQzMikKKworICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKKyAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KKyAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCisgICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCisgICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgVGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPTAsIHBvbGljeT1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwgKnVuaXhmcm9tKgorICAgICAgaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eSByZWFzb25zLAorICAgICAgKm1heGhlYWRlcmxlbiogZGVmYXVsdHMgdG8gYGAwYGAsIHNvIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IHZhbHVlIHlvdQorICAgICAgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5ICh0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciAqbWF4X2xpbmVfbGVuZ3RoKiBpbgorICAgICAgdGhlIHBvbGljeSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhpcyBtZXRob2QpLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgYEdlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cworICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCisgICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCisgICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cworICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKKyAgICAgICAgIGZwID0gU3RyaW5nSU8oKQorICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKKyAgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKKyAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCisgICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCisgICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKworICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIGJ5dGVzIG9iamVjdC4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQorICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cworICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCisgICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCisgICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCisgICAgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KKyAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgICAgICAgZnAgPSBCeXRlc0lPKCkKKyAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKKyAgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCisgICAuLiBtZXRob2Q6OiBfX2J5dGVzX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfYnl0ZXMoKWAuICBBbGxvd3MgYGBieXRlcyhtc2cpYGAgdG8gcHJvZHVjZSBhCisgICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IGlzX211bHRpcGFydCgpCisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaXMgYSBsaXN0IG9mIHN1Yi1cCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYEZhbHNlYGAsIHRoZSBwYXlsb2FkIHNob3VsZCBiZSBhIHN0cmluZworICAgICAgb2JqZWN0ICh3aGljaCBtaWdodCBiZSBhIENURSBlbmNvZGVkIGJpbmFyeSBwYXlsb2FkLiAgKE5vdGUgdGhhdAorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAorICAgICAgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsIHJldHVybiB0aGUgYGBUcnVlYGAuCisgICAgICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYCB3aGVuIHRoZQorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisKKworICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQorCisgICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF91bml4ZnJvbSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlci4gIERlZmF1bHRzIHRvIGBgTm9uZWBgIGlmIHRoZQorICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCisKKworICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCisKKyAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKKyAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCisgICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bworICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQorICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGFuZCB0aGUKKyAgICAgIHJlYWx0ZWQgYGBtYWtlYGAgYW5kIGBgYWRkYGAgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGF5bG9hZChpPU5vbmUsIGRlY29kZT1GYWxzZSkKKworICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIHdpbGwgYmUgYSBsaXN0IG9mCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYFRydWVgYCwgb3IgYQorICAgICAgc3RyaW5nIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgLiAgSWYgdGhlIHBheWxvYWQgaXMgYSBsaXN0CisgICAgICBhbmQgeW91IG11dGF0ZSB0aGUgbGlzdCBvYmplY3QsIHlvdSBtb2RpZnkgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHBsYWNlLgorCisgICAgICBXaXRoIG9wdGlvbmFsIGFyZ3VtZW50ICppKiwgOm1ldGg6YGdldF9wYXlsb2FkYCB3aWxsIHJldHVybiB0aGUgKmkqLXRoCisgICAgICBlbGVtZW50IG9mIHRoZSBwYXlsb2FkLCBjb3VudGluZyBmcm9tIHplcm8sIGlmIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzCisgICAgICBgYFRydWVgYC4gIEFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcyBsZXNzIHRoYW4gMCBvcgorICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHBheWxvYWQuICBJZiB0aGUKKyAgICAgIHBheWxvYWQgaXMgYSBzdHJpbmcgKGkuZS4gIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYCkgYW5kICppKiBpcworICAgICAgZ2l2ZW4sIGEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIE9wdGlvbmFsICpkZWNvZGUqIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBheWxvYWQgc2hvdWxkIGJlCisgICAgICBkZWNvZGVkIG9yIG5vdCwgYWNjb3JkaW5nIHRvIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlci4gV2hlbiBgYFRydWVgYCBhbmQgdGhlIG1lc3NhZ2UgaXMgbm90IGEgbXVsdGlwYXJ0LCB0aGUgcGF5bG9hZCB3aWxsCisgICAgICBiZSBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYC4KKyAgICAgIElmIHNvbWUgb3RoZXIgZW5jb2RpbmcgaXMgdXNlZCwgb3IgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICBoZWFkZXIgaXMgbWlzc2luZywgdGhlIHBheWxvYWQgaXMKKyAgICAgIHJldHVybmVkIGFzLWlzICh1bmRlY29kZWQpLiAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBiaW5hcnkKKyAgICAgIGRhdGEuICBJZiB0aGUgbWVzc2FnZSBpcyBhIG11bHRpcGFydCBhbmQgdGhlICpkZWNvZGUqIGZsYWcgaXMgYGBUcnVlYGAsCisgICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90CisgICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0CisgICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncworICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgorCisgICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCisgICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLAorICAgICAgZm9yIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQsIGFuIGF0dGVtcHQgaXMgbWFkZQorICAgICAgdG8gZGVjb2RlIHRoZSBvcmlnaW5hbCBieXRlcyB1c2luZyB0aGUgYGBjaGFyc2V0YGAgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCB1c2luZyB0aGUgYGByZXBsYWNlYGAgZXJyb3IgaGFuZGxlci4KKyAgICAgIElmIG5vIGBgY2hhcnNldGBgIGlzIHNwZWNpZmllZCwgb3IgaWYgdGhlIGBgY2hhcnNldGBgIGdpdmVuIGlzIG5vdAorICAgICAgcmVjb2duaXplZCBieSB0aGUgZW1haWwgcGFja2FnZSwgdGhlIGJvZHkgaXMgZGVjb2RlZCB1c2luZyB0aGUgZGVmYXVsdAorICAgICAgQVNDSUkgY2hhcnNldC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9jb250ZW50YCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3BheWxvYWQocGF5bG9hZCwgY2hhcnNldD1Ob25lKQorCisgICAgICBTZXQgdGhlIGVudGlyZSBtZXNzYWdlIG9iamVjdCdzIHBheWxvYWQgdG8gKnBheWxvYWQqLiAgSXQgaXMgdGhlIGNsaWVudCdzCisgICAgICByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhlIHBheWxvYWQgaW52YXJpYW50cy4gIE9wdGlvbmFsICpjaGFyc2V0KiBzZXRzCisgICAgICB0aGUgbWVzc2FnZSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldDsgc2VlIDptZXRoOmBzZXRfY2hhcnNldGAgZm9yIGRldGFpbHMuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2NoYXJzZXQoY2hhcnNldCkKKworICAgICAgU2V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBwYXlsb2FkIHRvICpjaGFyc2V0Kiwgd2hpY2ggY2FuIGVpdGhlciBiZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIChzZWUgOm1vZDpgZW1haWwuY2hhcnNldGApLCBhCisgICAgICBzdHJpbmcgbmFtaW5nIGEgY2hhcmFjdGVyIHNldCwgb3IgYGBOb25lYGAuICBJZiBpdCBpcyBhIHN0cmluZywgaXQgd2lsbAorICAgICAgYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZS4gIElmICpjaGFyc2V0KgorICAgICAgaXMgYGBOb25lYGAsIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgKHRoZSBtZXNzYWdlIHdpbGwgbm90IGJlIG90aGVyd2lzZQorICAgICAgbW9kaWZpZWQpLiAgQW55dGhpbmcgZWxzZSB3aWxsIGdlbmVyYXRlIGEgOmV4YzpgVHlwZUVycm9yYC4KKworICAgICAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIG9uZSB3aWxsIGJlCisgICAgICBhZGRlZC4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb25lCisgICAgICB3aWxsIGJlIGFkZGVkIHdpdGggYSB2YWx1ZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLiAgV2hldGhlciB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbHJlYWR5IGV4aXN0cyBvciBub3QsIGl0cyBgYGNoYXJzZXRgYAorICAgICAgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHRvICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0Ki4gICBJZgorICAgICAgKmNoYXJzZXQuaW5wdXRfY2hhcnNldCogYW5kICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0KiBkaWZmZXIsIHRoZSBwYXlsb2FkCisgICAgICB3aWxsIGJlIHJlLWVuY29kZWQgdG8gdGhlICpvdXRwdXRfY2hhcnNldCouICBJZiB0aGVyZSBpcyBubyBleGlzdGluZworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciwgdGhlbiB0aGUgcGF5bG9hZCB3aWxsIGJlCisgICAgICB0cmFuc2Zlci1lbmNvZGVkLCBpZiBuZWVkZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAsIGFuZCBhIGhlYWRlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZQorICAgICAgd2lsbCBiZSBhZGRlZC4gIElmIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcgorICAgICAgYWxyZWFkeSBleGlzdHMsIHRoZSBwYXlsb2FkIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBjb3JyZWN0bHkgZW5jb2RlZAorICAgICAgdXNpbmcgdGhhdCA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgYW5kIGlzIG5vdCBtb2RpZmllZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKmNoYXJzZXQqIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptZXRoOmBlbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXQoKQorCisgICAgICBSZXR1cm4gdGhlIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgbWVzc2FnZSdzIHBheWxvYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdCBhbHdheXMgcmV0dXJucworICAgICAgYGBOb25lYGAuCisKKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKKyAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBiZXR3ZWVuIHRoZXNlIG1ldGhvZHMgYW5kIGEgbm9ybWFsIG1hcHBpbmcgKGkuZS4gZGljdGlvbmFyeSkgaW50ZXJmYWNlLiAgRm9yCisgICBleGFtcGxlLCBpbiBhIGRpY3Rpb25hcnkgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzLCBidXQgaGVyZSB0aGVyZSBtYXkgYmUKKyAgIGR1cGxpY2F0ZSBtZXNzYWdlIGhlYWRlcnMuICBBbHNvLCBpbiBkaWN0aW9uYXJpZXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlZAorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCwKKyAgIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUgb3JpZ2luYWwKKyAgIG1lc3NhZ2UsIG9yIHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4KKyAgIHJlLWFkZGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGxpc3QuCisKKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQgbWF4aW1hbAorICAgY29udmVuaWVuY2UuCisKKyAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKKyAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KKworICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgorICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcworICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKKyAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KKworCisgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKKworICAgICAgUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgaGVhZGVycywgaW5jbHVkaW5nIGR1cGxpY2F0ZXMuCisKKworICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKG5hbWUpCisKKyAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgYSBmaWVsZCBuYW1lZCAqbmFtZSouIE1hdGNoaW5nIGlzCisgICAgICBkb25lIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgY29sb24uCisgICAgICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLCBlLmcuOjoKKworICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgorICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKKworCisgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZQorICAgICAgY29sb24gZmllbGQgc2VwYXJhdG9yLiAgSWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBgYE5vbmVgYCBpcyByZXR1cm5lZDsgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgIGlzIG5ldmVyIHJhaXNlZC4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBuYW1lZCBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMsIGV4YWN0bHkgd2hpY2ggb2YgdGhvc2UgZmllbGQgdmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQgaXMKKyAgICAgIHVuZGVmaW5lZC4gIFVzZSB0aGUgOm1ldGg6YGdldF9hbGxgIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlCisgICAgICBleHRhbnQgbmFtZWQgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBfX3NldGl0ZW1fXyhuYW1lLCB2YWwpCisKKyAgICAgIEFkZCBhIGhlYWRlciB0byB0aGUgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqIGFuZCB2YWx1ZSAqdmFsKi4gIFRoZQorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGZpZWxkcy4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyAqbm90KiBvdmVyd3JpdGUgb3IgZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZQorICAgICAgbmFtZS4gIElmIHlvdSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgaGVhZGVyIGlzIHRoZSBvbmx5IG9uZSBwcmVzZW50IGluIHRoZQorICAgICAgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqLCBkZWxldGUgdGhlIGZpZWxkIGZpcnN0LCBlLmcuOjoKKworICAgICAgICAgZGVsIG1zZ1snc3ViamVjdCddCisgICAgICAgICBtc2dbJ3N1YmplY3QnXSA9ICdQeXRob24gcm9vbHohJworCisKKyAgIC4uIG1ldGhvZDo6IF9fZGVsaXRlbV9fKG5hbWUpCisKKyAgICAgIERlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIGZpZWxkIHdpdGggbmFtZSAqbmFtZSogZnJvbSB0aGUgbWVzc2FnZSdzCisgICAgICBoZWFkZXJzLiAgTm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgbmFtZWQgZmllbGQgaXNuJ3QgcHJlc2VudCBpbiB0aGUKKyAgICAgIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjoga2V5cygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBtZXNzYWdlJ3MgaGVhZGVyIGZpZWxkIG5hbWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgdmFsdWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZW1zKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiAyLXR1cGxlcyBjb250YWluaW5nIGFsbCB0aGUgbWVzc2FnZSdzIGZpZWxkIGhlYWRlcnMgYW5kCisgICAgICB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0KG5hbWUsIGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgVGhpcyBpcyBpZGVudGljYWwgdG8KKyAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AgZXhjZXB0IHRoYXQgb3B0aW9uYWwgKmZhaWxvYmoqIGlzIHJldHVybmVkIGlmIHRoZQorICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKworICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9hbGwobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgdmFsdWVzIGZvciB0aGUgZmllbGQgbmFtZWQgKm5hbWUqLiBJZiB0aGVyZSBhcmUKKyAgICAgIG5vIHN1Y2ggbmFtZWQgaGVhZGVycyBpbiB0aGUgbWVzc2FnZSwgKmZhaWxvYmoqIGlzIHJldHVybmVkIChkZWZhdWx0cyB0bworICAgICAgYGBOb25lYGApLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9oZWFkZXIoX25hbWUsIF92YWx1ZSwgKipfcGFyYW1zKQorCisgICAgICBFeHRlbmRlZCBoZWFkZXIgc2V0dGluZy4gIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gOm1ldGg6YF9fc2V0aXRlbV9fYAorICAgICAgZXhjZXB0IHRoYXQgYWRkaXRpb25hbCBoZWFkZXIgcGFyYW1ldGVycyBjYW4gYmUgcHJvdmlkZWQgYXMga2V5d29yZAorICAgICAgYXJndW1lbnRzLiAgKl9uYW1lKiBpcyB0aGUgaGVhZGVyIGZpZWxkIHRvIGFkZCBhbmQgKl92YWx1ZSogaXMgdGhlCisgICAgICAqcHJpbWFyeSogdmFsdWUgZm9yIHRoZSBoZWFkZXIuCisKKyAgICAgIEZvciBlYWNoIGl0ZW0gaW4gdGhlIGtleXdvcmQgYXJndW1lbnQgZGljdGlvbmFyeSAqX3BhcmFtcyosIHRoZSBrZXkgaXMKKyAgICAgIHRha2VuIGFzIHRoZSBwYXJhbWV0ZXIgbmFtZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gZGFzaGVzIChzaW5jZQorICAgICAgZGFzaGVzIGFyZSBpbGxlZ2FsIGluIFB5dGhvbiBpZGVudGlmaWVycykuICBOb3JtYWxseSwgdGhlIHBhcmFtZXRlciB3aWxsCisgICAgICBiZSBhZGRlZCBhcyBgYGtleT0idmFsdWUiYGAgdW5sZXNzIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICBpdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlIGZvcm1hdAorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZyBuYW1pbmcgdGhlCisgICAgICBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbiB1c3VhbGx5IGJlIHNldAorICAgICAgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlciBwb3NzaWJpbGl0aWVzKSwKKyAgICAgIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSSBjb2RlIHBvaW50cy4gIElmCisgICAgICBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQgdXNpbmcgYSBgYENIQVJTRVRgYAorICAgICAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGU6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9J2J1ZC5naWYnKQorCisgICAgICBUaGlzIHdpbGwgYWRkIGEgaGVhZGVyIHRoYXQgbG9va3MgbGlrZSA6OgorCisgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKKworICAgICAgQW4gZXhhbXBsZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKKworICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ2lzby04ODU5LTEnLCAnJywgJ0Z1w59iYWxsZXIucHB0JykpCisKKyAgICAgIFdoaWNoIHByb2R1Y2VzIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj0iaXNvLTg4NTktMScnRnUlREZiYWxsZXIucHB0IgorCisKKyAgIC4uIG1ldGhvZDo6IHJlcGxhY2VfaGVhZGVyKF9uYW1lLCBfdmFsdWUpCisKKyAgICAgIFJlcGxhY2UgYSBoZWFkZXIuICBSZXBsYWNlIHRoZSBmaXJzdCBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UgdGhhdAorICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2UuICBJZiBubworICAgICAgbWF0Y2hpbmcgaGVhZGVyIHdhcyBmb3VuZCwgYSA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3R5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGNvZXJjZWQgdG8KKyAgICAgIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIHdhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHRoZSBkZWZhdWx0IHR5cGUgYXMgZ2l2ZW4KKyAgICAgIGJ5IDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYCB3aWxsIGJlIHJldHVybmVkLiAgU2luY2UgYWNjb3JkaW5nIHRvCisgICAgICA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsIDptZXRoOmBnZXRfY29udGVudF90eXBlYAorICAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuCisKKyAgICAgIDpyZmM6YDIwNDVgIGRlZmluZXMgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAKKyAgICAgIHVubGVzcyBpdCBhcHBlYXJzIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbgorICAgICAgd2hpY2ggY2FzZSBpdCB3b3VsZCBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwKKyAgICAgIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X21haW50eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgbWFpbiBjb250ZW50IHR5cGUuICBUaGlzIGlzIHRoZSA6bWltZXR5cGU6YG1haW50eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9zdWJ0eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3Mgc3ViLWNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgc3VidHlwZWAKKyAgICAgIHBhcnQgb2YgdGhlIHN0cmluZyByZXR1cm5lZCBieSA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2RlZmF1bHRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICBNb3N0IG1lc3NhZ2VzIGhhdmUgYSBkZWZhdWx0IGNvbnRlbnQKKyAgICAgIHR5cGUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCwgZXhjZXB0IGZvciBtZXNzYWdlcyB0aGF0IGFyZSBzdWJwYXJ0cyBvZgorICAgICAgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXJzLiAgU3VjaCBzdWJwYXJ0cyBoYXZlIGEgZGVmYXVsdAorICAgICAgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9kZWZhdWx0X3R5cGUoY3R5cGUpCisKKyAgICAgIFNldCB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICAqY3R5cGUqIHNob3VsZCBlaXRoZXIgYmUKKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90CisgICAgICBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbXMoZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgcGFyYW1ldGVycywgYXMgYSBsaXN0LgorICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCisgICAgICBzcGxpdCBvbiB0aGUgYGAnPSdgYCBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgYCc9J2BgIGlzIHRoZSBrZXksCisgICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGBgJz0nYGAgc2lnbiBpbgorICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhcworICAgICAgZGVzY3JpYmVkIGluIDptZXRoOmBnZXRfcGFyYW1gIGFuZCBpcyB1bnF1b3RlZCBpZiBvcHRpb25hbCAqdW5xdW90ZSogaXMKKyAgICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkuCisKKyAgICAgIE9wdGlvbmFsICpmYWlsb2JqKiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgT3B0aW9uYWwgKmhlYWRlciogaXMgdGhlIGhlYWRlciB0bworICAgICAgc2VhcmNoIGluc3RlYWQgb2YgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpwYXJhbXMqIHByb3BlcnR5IG9mIHRoZSBpbmRpdmlkdWFsIGhlYWRlciBvYmplY3RzCisgICAgICByZXR1cm5lZCBieSB0aGUgaGVhZGVyIGFjY2VzcyBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbShwYXJhbSwgZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyJ3MgcGFyYW1ldGVyCisgICAgICAqcGFyYW0qIGFzIGEgc3RyaW5nLiAgSWYgdGhlIG1lc3NhZ2UgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkCisgICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyKiBpZiBnaXZlbiwgc3BlY2lmaWVzIHRoZSBtZXNzYWdlIGhlYWRlciB0byB1c2UgaW5zdGVhZCBvZgorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKyAgICAgIFBhcmFtZXRlciBrZXlzIGFyZSBhbHdheXMgY29tcGFyZWQgY2FzZSBpbnNlbnNpdGl2ZWx5LiAgVGhlIHJldHVybiB2YWx1ZQorICAgICAgY2FuIGVpdGhlciBiZSBhIHN0cmluZywgb3IgYSAzLXR1cGxlIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIDpyZmM6YDIyMzFgCisgICAgICBlbmNvZGVkLiAgV2hlbiBpdCdzIGEgMy10dXBsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSB2YWx1ZSBhcmUgb2YgdGhlIGZvcm0KKyAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYC4gIE5vdGUgdGhhdCBib3RoIGBgQ0hBUlNFVGBgIGFuZAorICAgICAgYGBMQU5HVUFHRWBgIGNhbiBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB5b3Ugc2hvdWxkIGNvbnNpZGVyIGBgVkFMVUVgYAorICAgICAgdG8gYmUgZW5jb2RlZCBpbiB0aGUgYGB1cy1hc2NpaWBgIGNoYXJzZXQuICBZb3UgY2FuIHVzdWFsbHkgaWdub3JlCisgICAgICBgYExBTkdVQUdFYGAuCisKKyAgICAgIElmIHlvdXIgYXBwbGljYXRpb24gZG9lc24ndCBjYXJlIHdoZXRoZXIgdGhlIHBhcmFtZXRlciB3YXMgZW5jb2RlZCBhcyBpbgorICAgICAgOnJmYzpgMjIzMWAsIHlvdSBjYW4gY29sbGFwc2UgdGhlIHBhcmFtZXRlciB2YWx1ZSBieSBjYWxsaW5nCisgICAgICA6ZnVuYzpgZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZWAsIHBhc3NpbmcgaW4gdGhlIHJldHVybiB2YWx1ZQorICAgICAgZnJvbSA6bWV0aDpgZ2V0X3BhcmFtYC4gIFRoaXMgd2lsbCByZXR1cm4gYSBzdWl0YWJseSBkZWNvZGVkIFVuaWNvZGUKKyAgICAgIHN0cmluZyB3aGVuIHRoZSB2YWx1ZSBpcyBhIHR1cGxlLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVucXVvdGVkIGlmIGl0CisgICAgICBpc24ndC4gIEZvciBleGFtcGxlOjoKKworICAgICAgICAgcmF3cGFyYW0gPSBtc2cuZ2V0X3BhcmFtKCdmb28nKQorICAgICAgICAgcGFyYW0gPSBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlKHJhd3BhcmFtKQorCisgICAgICBJbiBhbnkgY2FzZSwgdGhlIHBhcmFtZXRlciB2YWx1ZSAoZWl0aGVyIHRoZSByZXR1cm5lZCBzdHJpbmcsIG9yIHRoZQorICAgICAgYGBWQUxVRWBgIGl0ZW0gaW4gdGhlIDMtdHVwbGUpIGlzIGFsd2F5cyB1bnF1b3RlZCwgdW5sZXNzICp1bnF1b3RlKiBpcyBzZXQKKyAgICAgIHRvIGBgRmFsc2VgYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3BhcmFtKHBhcmFtLCB2YWx1ZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PU5vbmUsIGxhbmd1YWdlPScnLCByZXBsYWNlPUZhbHNlKQorCisgICAgICBTZXQgYSBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmIHRoZQorICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIGl0cyB2YWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGgKKyAgICAgICp2YWx1ZSouICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFzIG5vdCB5ZXQgYmVlbiBkZWZpbmVkCisgICAgICBmb3IgdGhpcyBtZXNzYWdlLCBpdCB3aWxsIGJlIHNldCB0byA6bWltZXR5cGU6YHRleHQvcGxhaW5gIGFuZCB0aGUgbmV3CisgICAgICBwYXJhbWV0ZXIgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCBhcyBwZXIgOnJmYzpgMjA0NWAuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLCBhbmQgYWxsIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5CisgICAgICB1bmxlc3Mgb3B0aW9uYWwgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLgorCisgICAgICBJZiBvcHRpb25hbCAqY2hhcnNldCogaXMgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgZW5jb2RlZAorICAgICAgYWNjb3JkaW5nIHRvIDpyZmM6YDIyMzFgLiBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgUkZDIDIyMzEKKyAgICAgIGxhbmd1YWdlLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgorICAgICAgc2hvdWxkIGJlIHN0cmluZ3MuCisKKyAgICAgIElmICpyZXBsYWNlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgaGVhZGVyIGlzIG1vdmVkIHRvIHRoZQorICAgICAgZW5kIG9mIHRoZSBsaXN0IG9mIGhlYWRlcnMuICBJZiAqcmVwbGFjZSogaXMgYGBUcnVlYGAsIHRoZSBoZWFkZXIKKyAgICAgIHdpbGwgYmUgdXBkYXRlZCBpbiBwbGFjZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgYGByZXBsYWNlYGAga2V5d29yZCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogZGVsX3BhcmFtKHBhcmFtLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgUmVtb3ZlIHRoZSBnaXZlbiBwYXJhbWV0ZXIgY29tcGxldGVseSBmcm9tIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAgVGhlIGhlYWRlciB3aWxsIGJlIHJlLXdyaXR0ZW4gaW4gcGxhY2Ugd2l0aG91dCB0aGUgcGFyYW1ldGVyIG9yCisgICAgICBpdHMgdmFsdWUuICBBbGwgdmFsdWVzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeSB1bmxlc3MgKnJlcXVvdGUqIGlzCisgICAgICBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbgorICAgICAgYWx0ZXJuYXRpdmUgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3R5cGUodHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpCisKKyAgICAgIFNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlci4gKnR5cGUqIG11c3QgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYCwKKyAgICAgIG90aGVyd2lzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwga2VlcGluZyBhbGwKKyAgICAgIHRoZSBwYXJhbWV0ZXJzIGluIHBsYWNlLiAgSWYgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCwgdGhpcyBsZWF2ZXMgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIncyBxdW90aW5nIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQKKyAgICAgICh0aGUgZGVmYXVsdCkuCisKKyAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAqaGVhZGVyKiBhcmd1bWVudC4gV2hlbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBzZXQgYSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAorICAgICAgaGVhZGVyIGlzIGFsc28gYWRkZWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlIGBgbWFrZV9gYCBhbmQgYGBhZGRfYGAgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBvZiB0aGUgbWVzc2FnZS4gIElmIHRoZSBoZWFkZXIKKyAgICAgIGRvZXMgbm90IGhhdmUgYSBgYGZpbGVuYW1lYGAgcGFyYW1ldGVyLCB0aGlzIG1ldGhvZCBmYWxscyBiYWNrIHRvIGxvb2tpbmcKKyAgICAgIGZvciB0aGUgYGBuYW1lYGAgcGFyYW1ldGVyIG9uIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZgorICAgICAgbmVpdGhlciBpcyBmb3VuZCwgb3IgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KKyAgICAgIFRoZSByZXR1cm5lZCBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyCisgICAgICA6ZnVuYzpgZW1haWwudXRpbHMudW5xdW90ZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2JvdW5kYXJ5KGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgb3IgKmZhaWxvYmoqIGlmIGVpdGhlcgorICAgICAgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBvciBoYXMgbm8gYGBib3VuZGFyeWBgIHBhcmFtZXRlci4gIFRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nIHdpbGwgYWx3YXlzIGJlIHVucXVvdGVkIGFzIHBlciA6ZnVuYzpgZW1haWwudXRpbHMudW5xdW90ZWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2JvdW5kYXJ5KGJvdW5kYXJ5KQorCisgICAgICBTZXQgdGhlIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciB0bworICAgICAgKmJvdW5kYXJ5Ki4gIDptZXRoOmBzZXRfYm91bmRhcnlgIHdpbGwgYWx3YXlzIHF1b3RlICpib3VuZGFyeSogaWYKKyAgICAgIG5lY2Vzc2FyeS4gIEEgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlCisgICAgICBtZXNzYWdlIG9iamVjdCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisgICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCB0aGFuIGRlbGV0aW5nIHRoZSBvbGQKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbmQgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcKKyAgICAgIGJvdW5kYXJ5IHZpYSA6bWV0aDpgYWRkX2hlYWRlcmAsIGJlY2F1c2UgOm1ldGg6YHNldF9ib3VuZGFyeWAgcHJlc2VydmVzCisgICAgICB0aGUgb3JkZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbGlzdCBvZgorICAgICAgaGVhZGVycy4gSG93ZXZlciwgaXQgZG9lcyAqbm90KiBwcmVzZXJ2ZSBhbnkgY29udGludWF0aW9uIGxpbmVzIHdoaWNoIG1heQorICAgICAgaGF2ZSBiZWVuIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwKKyAgICAgIGNvZXJjZWQgdG8gbG93ZXIgY2FzZS4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb3IgaWYKKyAgICAgIHRoYXQgaGVhZGVyIGhhcyBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgZ2V0X2NoYXJzZXRgIHdoaWNoIHJldHVybnMgdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGZvciB0aGUgZGVmYXVsdCBlbmNvZGluZyBvZiB0aGUgbWVzc2FnZSBib2R5LgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0cyhmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIHNldCBuYW1lcyBpbiB0aGUgbWVzc2FnZS4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCwgdGhlbiB0aGUgbGlzdCB3aWxsIGNvbnRhaW4gb25lIGVsZW1lbnQKKyAgICAgIGZvciBlYWNoIHN1YnBhcnQgaW4gdGhlIHBheWxvYWQsIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBhIGxpc3Qgb2YgbGVuZ3RoIDEuCisKKyAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aWxsIGJlIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgIGBgY2hhcnNldGBgIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGZvciB0aGUKKyAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBIb3dldmVyLCBpZiB0aGUgc3VicGFydCBoYXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YKKyAgICAgIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4gTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdAorICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQorCisgICAgICBSZXR1cm4gdGhlIGxvd2VyY2FzZWQgdmFsdWUgKHdpdGhvdXQgcGFyYW1ldGVycykgb2YgdGhlIG1lc3NhZ2UncworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBpZiBpdCBoYXMgb25lLCBvciBgYE5vbmVgYC4gIFRoZQorICAgICAgcG9zc2libGUgdmFsdWVzIGZvciB0aGlzIG1ldGhvZCBhcmUgKmlubGluZSosICphdHRhY2htZW50KiBvciBgYE5vbmVgYAorICAgICAgaWYgdGhlIG1lc3NhZ2UgZm9sbG93cyA6cmZjOmAyMTgzYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKyAgIC4uIG1ldGhvZDo6IHdhbGsoKQorCisgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KKyAgICAgIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHBhcnRzIGFuZCBzdWJwYXJ0cyBvZiBhIG1lc3NhZ2Ugb2JqZWN0IHRyZWUsIGluCisgICAgICBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb3JkZXIuICBZb3Ugd2lsbCB0eXBpY2FsbHkgdXNlIDptZXRoOmB3YWxrYCBhcyB0aGUKKyAgICAgIGl0ZXJhdG9yIGluIGEgYGBmb3JgYCBsb29wOyBlYWNoIGl0ZXJhdGlvbiByZXR1cm5zIHRoZSBuZXh0IHN1YnBhcnQuCisKKyAgICAgIEhlcmUncyBhbiBleGFtcGxlIHRoYXQgcHJpbnRzIHRoZSBNSU1FIHR5cGUgb2YgZXZlcnkgcGFydCBvZiBhIG11bHRpcGFydAorICAgICAgbWVzc2FnZSBzdHJ1Y3R1cmU6CisKKyAgICAgIC4uIHRlc3RzZXR1cDo6CisKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUKKyAgICAgICAgID4+PiB3aXRoIG9wZW4oJ0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTYudHh0JywgJ3JiJykgYXMgZjoKKyAgICAgICAgIC4uLiAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYpCisgICAgICAgICA+Pj4gZnJvbSBlbWFpbC5pdGVyYXRvcnMgaW1wb3J0IF9zdHJ1Y3R1cmUKKworICAgICAgLi4gZG9jdGVzdDo6CisKKyAgICAgICAgID4+PiBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgLi4uICAgICBwcmludChwYXJ0LmdldF9jb250ZW50X3R5cGUoKSkKKyAgICAgICAgIG11bHRpcGFydC9yZXBvcnQKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAgdGV4dC9wbGFpbgorCisgICAgICBgYHdhbGtgYCBpdGVyYXRlcyBvdmVyIHRoZSBzdWJwYXJ0cyBvZiBhbnkgcGFydCB3aGVyZQorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYFRydWVgYCwgZXZlbiB0aG91Z2gKKyAgICAgIGBgbXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCdgYCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4gIFdlCisgICAgICBjYW4gc2VlIHRoaXMgaW4gb3VyIGV4YW1wbGUgYnkgbWFraW5nIHVzZSBvZiB0aGUgYGBfc3RydWN0dXJlYGAgZGVidWcKKyAgICAgIGhlbHBlciBmdW5jdGlvbjoKKworICAgICAgLi4gZG9jdGVzdDo6CisKKyAgICAgICAgID4+PiBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgLi4uICAgICBwcmludChwYXJ0LmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCcpLAorICAgICAgICAgLi4uICAgICAgICAgICBwYXJ0LmlzX211bHRpcGFydCgpKQorICAgICAgICAgVHJ1ZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgPj4+IF9zdHJ1Y3R1cmUobXNnKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorCisgICAgICBIZXJlIHRoZSBgYG1lc3NhZ2VgYCBwYXJ0cyBhcmUgbm90IGBgbXVsdGlwYXJ0c2BgLCBidXQgdGhleSBkbyBjb250YWluCisgICAgICBzdWJwYXJ0cy4gYGBpc19tdWx0aXBhcnQoKWBgIHJldHVybnMgYGBUcnVlYGAgYW5kIGBgd2Fsa2BgIGRlc2NlbmRzCisgICAgICBpbnRvIHRoZSBzdWJwYXJ0cy4KKworCisgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgY2FuIGFsc28gb3B0aW9uYWxseSBjb250YWluIHR3byBpbnN0YW5jZSBhdHRyaWJ1dGVzLAorICAgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBwbGFpbiB0ZXh0IG9mIGEgTUlNRSBtZXNzYWdlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHByZWFtYmxlCisKKyAgICAgIFRoZSBmb3JtYXQgb2YgYSBNSU1FIGRvY3VtZW50IGFsbG93cyBmb3Igc29tZSB0ZXh0IGJldHdlZW4gdGhlIGJsYW5rIGxpbmUKKyAgICAgIGZvbGxvd2luZyB0aGUgaGVhZGVycywgYW5kIHRoZSBmaXJzdCBtdWx0aXBhcnQgYm91bmRhcnkgc3RyaW5nLiBOb3JtYWxseSwKKyAgICAgIHRoaXMgdGV4dCBpcyBuZXZlciB2aXNpYmxlIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlciBiZWNhdXNlIGl0IGZhbGxzCisgICAgICBvdXRzaWRlIHRoZSBzdGFuZGFyZCBNSU1FIGFybW9yLiAgSG93ZXZlciwgd2hlbiB2aWV3aW5nIHRoZSByYXcgdGV4dCBvZgorICAgICAgdGhlIG1lc3NhZ2UsIG9yIHdoZW4gdmlld2luZyB0aGUgbWVzc2FnZSBpbiBhIG5vbi1NSU1FIGF3YXJlIHJlYWRlciwgdGhpcworICAgICAgdGV4dCBjYW4gYmVjb21lIHZpc2libGUuCisKKyAgICAgIFRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSBjb250YWlucyB0aGlzIGxlYWRpbmcgZXh0cmEtYXJtb3IgdGV4dCBmb3IgTUlNRQorICAgICAgZG9jdW1lbnRzLiAgV2hlbiB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgZGlzY292ZXJzIHNvbWUgdGV4dAorICAgICAgYWZ0ZXIgdGhlIGhlYWRlcnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgYm91bmRhcnkgc3RyaW5nLCBpdCBhc3NpZ25zIHRoaXMKKyAgICAgIHRleHQgdG8gdGhlIG1lc3NhZ2UncyAqcHJlYW1ibGUqIGF0dHJpYnV0ZS4gIFdoZW4gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpcyB3cml0aW5nIG91dCB0aGUgcGxhaW4gdGV4dAorICAgICAgcmVwcmVzZW50YXRpb24gb2YgYSBNSU1FIG1lc3NhZ2UsIGFuZCBpdCBmaW5kcyB0aGUKKyAgICAgIG1lc3NhZ2UgaGFzIGEgKnByZWFtYmxlKiBhdHRyaWJ1dGUsIGl0IHdpbGwgd3JpdGUgdGhpcyB0ZXh0IGluIHRoZSBhcmVhCisgICAgICBiZXR3ZWVuIHRoZSBoZWFkZXJzIGFuZCB0aGUgZmlyc3QgYm91bmRhcnkuICBTZWUgOm1vZDpgZW1haWwucGFyc2VyYCBhbmQKKyAgICAgIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgZm9yIGRldGFpbHMuCisKKyAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIG5vIHByZWFtYmxlLCB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUKKyAgICAgIHdpbGwgYmUgYGBOb25lYGAuCisKKworICAgLi4gYXR0cmlidXRlOjogZXBpbG9ndWUKKworICAgICAgVGhlICplcGlsb2d1ZSogYXR0cmlidXRlIGFjdHMgdGhlIHNhbWUgd2F5IGFzIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwKKyAgICAgIGV4Y2VwdCB0aGF0IGl0IGNvbnRhaW5zIHRleHQgdGhhdCBhcHBlYXJzIGJldHdlZW4gdGhlIGxhc3QgYm91bmRhcnkgYW5kCisgICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLgorCisgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBlcGlsb2d1ZSB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIGZvciB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHRvIHByaW50IGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgZmlsZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCisKKyAgICAgIFRoZSAqZGVmZWN0cyogYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIHByb2JsZW1zIGZvdW5kIHdoZW4KKyAgICAgIHBhcnNpbmcgdGhpcyBtZXNzYWdlLiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24KKyAgICAgIG9mIHRoZSBwb3NzaWJsZSBwYXJzaW5nIGRlZmVjdHMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKaW5kZXggYTljMDc4Yi4uNTc3NDNkNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdApAQCAtNywyNTEgKzcsMTIgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKLSAgIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weWAKIAotLi4gbm90ZTo6CistLS0tLS0tLS0tLS0KIAotICAgVGhlIGNvbnRlbnRtYW5hZ2VyIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCi0tLS0tLS0tLS0tLS0tLQotCi1UaGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIHRoYXQgY2FuIHJlcHJlc2VudCBhbgotYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2UuICBUaGF0IGJhc2ljIG1lc3NhZ2UgbW9kZWwgaGFzIGEgdXNlZnVsIGFuZCBmbGV4aWJsZQotQVBJLCBidXQgaXQgcHJvdmlkZXMgb25seSBhIGxvd2VyLWxldmVsIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZ2VuZXJpYwotcGFydHMgb2YgYSBtZXNzYWdlICh0aGUgaGVhZGVycywgZ2VuZXJpYyBoZWFkZXIgcGFyYW1ldGVycywgYW5kIHRoZSBwYXlsb2FkLAotd2hpY2ggbWF5IGJlIGEgbGlzdCBvZiBzdWItcGFydHMpLiAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgdG9vbHMKLXRoYXQgcHJvdmlkZSBhbiBlbmhhbmNlZCBhbmQgZXh0ZW5zaWJsZSBBUEkgZm9yIGRlYWxpbmcgd2l0aCB2YXJpb3VzIHNwZWNpZmljCi10eXBlcyBvZiBjb250ZW50LCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkgdG8gcmV0cmlldmUgdGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UKLWFzIGEgc3BlY2lhbGl6ZWQgb2JqZWN0IHR5cGUgcmF0aGVyIHRoYW4gYXMgYSBzaW1wbGUgYnl0ZXMgb2JqZWN0LiAgVGhlIG1vZHVsZQotYXV0b21hdGljYWxseSB0YWtlcyBjYXJlIG9mIHRoZSBSRkMtc3BlY2lmaWVkIE1JTUUgZGV0YWlscyAocmVxdWlyZWQgaGVhZGVycwotYW5kIHBhcmFtZXRlcnMsIGV0Yy4pIGZvciB0aGUgY2VydGFpbiBjb21tb24gY29udGVudCB0eXBlcyBjb250ZW50IHByb3BlcnRpZXMsCi1hbmQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCB0eXBlcyBjYW4gYmUgYWRkZWQgYnkgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhlCi1leHRlbnNpb24gbWVjaGFuaXNtcy4KLQotVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZXBvbnltb3VzICJDb250ZW50IE1hbmFnZXIiIGNsYXNzZXMuICBUaGUgYmFzZQotOmNsYXNzOmAuQ29udGVudE1hbmFnZXJgIGNsYXNzIGRlZmluZXMgYW4gQVBJIGZvciByZWdpc3RlcmluZyBjb250ZW50Ci1tYW5hZ2VtZW50IGZ1bmN0aW9ucyB3aGljaCBleHRyYWN0IGRhdGEgZnJvbSBgYE1lc3NhZ2VgYCBvYmplY3RzIG9yIGluc2VydCBkYXRhCi1hbmQgaGVhZGVycyBpbnRvIGBgTWVzc2FnZWBgIG9iamVjdHMsIHRodXMgcHJvdmlkaW5nIGEgd2F5IG9mIGNvbnZlcnRpbmcKLWJldHdlZW4gYGBNZXNzYWdlYGAgb2JqZWN0cyBjb250YWluaW5nIGRhdGEgYW5kIG90aGVyIHJlcHJlc2VudGF0aW9ucyBvZiB0aGF0Ci1kYXRhIChQeXRob24gZGF0YSB0eXBlcywgc3BlY2lhbGl6ZWQgUHl0aG9uIG9iamVjdHMsIGV4dGVybmFsIGZpbGVzLCBldGMpLiAgVGhlCi1tb2R1bGUgYWxzbyBkZWZpbmVzIG9uZSBjb25jcmV0ZSBjb250ZW50IG1hbmFnZXI6IDpkYXRhOmByYXdfZGF0YV9tYW5hZ2VyYAotY29udmVydHMgYmV0d2VlbiBNSU1FIGNvbnRlbnQgdHlwZXMgYW5kIGBgc3RyYGAgb3IgYGBieXRlc2BgIGRhdGEuICBJdCBhbHNvCi1wcm92aWRlcyBhIGNvbnZlbmllbnQgQVBJIGZvciBtYW5hZ2luZyB0aGUgTUlNRSBwYXJhbWV0ZXJzIHdoZW4gaW5zZXJ0aW5nCi1jb250ZW50IGludG8gYGBNZXNzYWdlYGBcIHMuICBJdCBhbHNvIGhhbmRsZXMgaW5zZXJ0aW5nIGFuZCBleHRyYWN0aW5nCi1gYE1lc3NhZ2VgYCBvYmplY3RzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgYG1lc3NhZ2UvcmZjODIyYGAgY29udGVudCB0eXBlLgotCi1Bbm90aGVyIHBhcnQgb2YgdGhlIGVuaGFuY2VkIGludGVyZmFjZSBpcyBzdWJjbGFzc2VzIG9mCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHRoYXQgcHJvdmlkZSBuZXcgY29udmVuaWVuY2UgQVBJIGZ1bmN0aW9ucywKLWluY2x1ZGluZyBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBjYWxsaW5nIHRoZSBDb250ZW50IE1hbmFnZXJzIGRlcml2ZWQgZnJvbQotdGhpcyBtb2R1bGUuCi0KLS4uIG5vdGU6OgotCi0gICBBbHRob3VnaCA6Y2xhc3M6YC5FbWFpbE1lc3NhZ2VgIGFuZCA6Y2xhc3M6YC5NSU1FUGFydGAgYXJlIGN1cnJlbnRseQotICAgZG9jdW1lbnRlZCBpbiB0aGlzIG1vZHVsZSBiZWNhdXNlIG9mIHRoZSBwcm92aXNpb25hbCBuYXR1cmUgb2YgdGhlIGNvZGUsIHRoZQotICAgaW1wbGVtZW50YXRpb24gbGl2ZXMgaW4gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4KLQotLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKLQotLi4gY2xhc3M6OiBFbWFpbE1lc3NhZ2UocG9saWN5PWRlZmF1bHQpCi0KLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdWRwYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCi0gICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLnBvbGljeS5kZWZhdWx0YCBwb2xpY3ksIHdoaWNoIGZvbGxvd3MgdGhlIHJ1bGVzIG9mIHRoZSBlbWFpbAotICAgUkZDcyBleGNlcHQgZm9yIGxpbmUgZW5kaW5ncyAoaW5zdGVhZCBvZiB0aGUgUkZDIG1hbmRhdGVkIGBgXHJcbmBgLCBpdCB1c2VzCi0gICB0aGUgUHl0aG9uIHN0YW5kYXJkIGBgXG5gYCBsaW5lIGVuZGluZ3MpLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KLQotICAgVGhpcyBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAuICBJdCBhZGRzCi0gICB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLQotICAgLi4gbWV0aG9kOjogaXNfYXR0YWNobWVudAotCi0gICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlcmUgaXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyCi0gICAgICBhbmQgaXRzIChjYXNlIGluc2Vuc2l0aXZlKSB2YWx1ZSBpcyBgYGF0dGFjaG1lbnRgYCwgYGBGYWxzZWBgIG90aGVyd2lzZS4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMgotICAgICAgICAgaXNfYXR0YWNobWVudCBpcyBub3cgYSBtZXRob2QgaW5zdGVhZCBvZiBhIHByb3BlcnR5LCBmb3IgY29uc2lzdGVuY3kKLSAgICAgICAgIHdpdGggOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfYm9keShwcmVmZXJlbmNlbGlzdD0oJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpKQotCi0gICAgICBSZXR1cm4gdGhlIE1JTUUgcGFydCB0aGF0IGlzIHRoZSBiZXN0IGNhbmRpZGF0ZSB0byBiZSB0aGUgImJvZHkiIG9mIHRoZQotICAgICAgbWVzc2FnZS4KLQotICAgICAgKnByZWZlcmVuY2VsaXN0KiBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBmcm9tIHRoZSBzZXQgYGByZWxhdGVkYGAsCi0gICAgICBgYGh0bWxgYCwgYW5kIGBgcGxhaW5gYCwgYW5kIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBmb3IgdGhlCi0gICAgICBjb250ZW50IHR5cGUgb2YgdGhlIHBhcnQgcmV0dXJuZWQuCi0KLSAgICAgIFN0YXJ0IGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCB0aGUKLSAgICAgIGBgZ2V0X2JvZHlgYCBtZXRob2QgaXMgY2FsbGVkLgotCi0gICAgICBJZiBgYHJlbGF0ZWRgYCBpcyBub3QgaW5jbHVkZWQgaW4gKnByZWZlcmVuY2VsaXN0KiwgY29uc2lkZXIgdGhlIHJvb3QKLSAgICAgIHBhcnQgKG9yIHN1YnBhcnQgb2YgdGhlIHJvb3QgcGFydCkgb2YgYW55IHJlbGF0ZWQgZW5jb3VudGVyZWQgYXMgYQotICAgICAgY2FuZGlkYXRlIGlmIHRoZSAoc3ViLSlwYXJ0IG1hdGNoZXMgYSBwcmVmZXJlbmNlLgotCi0gICAgICBXaGVuIGVuY291bnRlcmluZyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2hlY2sgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIKLSAgICAgIGFuZCBpZiBhIHBhcnQgd2l0aCBhIG1hdGNoaW5nIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBpcyBmb3VuZCwgY29uc2lkZXIKLSAgICAgIG9ubHkgaXQgd2hlbiBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcy4gIE90aGVyd2lzZSBjb25zaWRlciBvbmx5IHRoZQotICAgICAgZmlyc3QgKGRlZmF1bHQgcm9vdCkgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLgotCi0gICAgICBJZiBhIHBhcnQgaGFzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb25seSBjb25zaWRlcgotICAgICAgdGhlIHBhcnQgYSBjYW5kaWRhdGUgbWF0Y2ggaWYgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgYGBpbmxpbmVgYC4KLQotICAgICAgSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBtYXRjaGVzIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMgaW4KLSAgICAgICpwcmVmZXJuZWNsaXN0KiwgcmV0dXJuIGBgTm9uZWBgLgotCi0gICAgICBOb3RlczogKDEpIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGUgb25seSAqcHJlZmVyZW5jZWxpc3QqIGNvbWJpbmF0aW9ucwotICAgICAgdGhhdCByZWFsbHkgbWFrZSBzZW5zZSBhcmUgYGAoJ3BsYWluJywpYGAsIGBgKCdodG1sJywgJ3BsYWluJylgYCwgYW5kIHRoZQotICAgICAgZGVmYXVsdCwgYGAoJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpYGAuICAoMikgQmVjYXVzZSBtYXRjaGluZyBzdGFydHMKLSAgICAgIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCBgYGdldF9ib2R5YGAgaXMgY2FsbGVkLCBjYWxsaW5nIGBgZ2V0X2JvZHlgYCBvbgotICAgICAgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgd2lsbCByZXR1cm4gdGhlIG9iamVjdCBpdHNlbGYgdW5sZXNzCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIGhhcyBhIG5vbi1kZWZhdWx0IHZhbHVlLiAoMykgTWVzc2FnZXMgKG9yIG1lc3NhZ2UgcGFydHMpCi0gICAgICB0aGF0IGRvIG5vdCBzcGVjaWZ5IGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgb3Igd2hvc2UKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBpbnZhbGlkIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiB0aGV5Ci0gICAgICBhcmUgb2YgdHlwZSBgYHRleHQvcGxhaW5gYCwgd2hpY2ggbWF5IG9jY2FzaW9uYWxseSBjYXVzZSBgYGdldF9ib2R5YGAgdG8KLSAgICAgIHJldHVybiB1bmV4cGVjdGVkIHJlc3VsdHMuCi0KLQotICAgLi4gbWV0aG9kOjogaXRlcl9hdHRhY2htZW50cygpCi0KLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgcGFydHMgb2YgdGhlIG1lc3NhZ2UgdGhhdCBhcmUgbm90Ci0gICAgICBjYW5kaWRhdGUgImJvZHkiIHBhcnRzLiAgVGhhdCBpcywgc2tpcCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIG9mCi0gICAgICBgYHRleHQvcGxhaW5gYCwgYGB0ZXh0L2h0bWxgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCAodW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCi0gICAgICBhdHRhY2htZW50cyB2aWEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgKSwgYW5kCi0gICAgICByZXR1cm4gYWxsIHJlbWFpbmluZyBwYXJ0cy4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhCi0gICAgICBgYG11bHRpcGFydC9yZWxhdGVkYGAsIHJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBhbGwgdGhlIHJlbGF0ZWQgcGFydHMKLSAgICAgIGV4Y2VwdCB0aGUgcm9vdCBwYXJ0IChpZTogdGhlIHBhcnQgcG9pbnRlZCB0byBieSB0aGUgYGBzdGFydGBgIHBhcmFtZXRlciwKLSAgICAgIG9yIHRoZSBmaXJzdCBwYXJ0IGlmIHRoZXJlIGlzIG5vIGBgc3RhcnRgYCBwYXJhbWV0ZXIgb3IgdGhlIGBgc3RhcnRgYAotICAgICAgcGFyYW1ldGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBvZiBhbnkgb2YgdGhlCi0gICAgICBwYXJ0cykuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgIG9yIGEKLSAgICAgIG5vbi1gYG11bHRpcGFydGBgLCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IuCi0KLQotICAgLi4gbWV0aG9kOjogaXRlcl9wYXJ0cygpCi0KLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZSwKLSAgICAgIHdoaWNoIHdpbGwgYmUgZW1wdHkgZm9yIGEgbm9uLWBgbXVsdGlwYXJ0YGAuICAoU2VlIGFsc28KLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS53YWxrYC4pCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBDYWxsIHRoZSBgYGdldF9jb250ZW50YGAgbWV0aG9kIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmCi0gICAgICBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMKLSAgICAgIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogc2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBDYWxsIHRoZSBgYHNldF9jb250ZW50YGAgbWV0aG9kIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmCi0gICAgICBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMKLSAgICAgIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9yZWxhdGVkKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBtZXNzYWdlIGludG8gYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgbWVzc2FnZSwKLSAgICAgIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYQotICAgICAgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UKLSAgICAgIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeQotICAgICAgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9hbHRlcm5hdGl2ZShib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgaW50byBhCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAKLSAgICAgIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsCi0gICAgICBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzCi0gICAgICBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfbWl4ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgLCBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IgYQotICAgICAgYGBtdWx0aXBhcnQtYWx0ZXJuYXRpdmVgYCBpbnRvIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgbW92aW5nIGFueSBleGlzdGluZwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZQotICAgICAgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZwotICAgICAgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfcmVsYXRlZCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwKLSAgICAgIGFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKLSAgICAgIHRoZSBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGNhbGwgOm1ldGg6YG1ha2VfcmVsYXRlZGAgYW5kIHRoZW4KLSAgICAgIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcyBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLAotICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLSAgICAgIElmIHRoZSBhZGRlZCBwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLAotICAgICAgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZSBgYGlubGluZWBgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9hbHRlcm5hdGl2ZSgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKLSAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2FsbAotICAgICAgOm1ldGg6YG1ha2VfYWx0ZXJuYXRpdmVgIGFuZCB0aGVuIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcwotICAgICAgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZgotICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAotICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2F0dGFjaG1lbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iamVjdCwKLSAgICAgIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY2FsbCA6bWV0aDpgbWFrZV9taXhlZGAgYW5kIHRoZW4gcHJvY2VlZCBhcwotICAgICAgYWJvdmUuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYAotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLiAgSWYgdGhlIGFkZGVkIHBhcnQKLSAgICAgIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBhZGQgb25lIHdpdGggdGhlIHZhbHVlCi0gICAgICBgYGF0dGFjaG1lbnRgYC4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIGJvdGggZm9yIGV4cGxpY2l0IGF0dGFjaG1lbnRzCi0gICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgIGFuZCBgYGlubGluZWBgIGF0dGFjaG1lbnRzCi0gICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZWApLCBieSBwYXNzaW5nIGFwcHJvcHJpYXRlCi0gICAgICBvcHRpb25zIHRvIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIGhlYWRlcnMuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXJfY29udGVudCgpCi0KLSAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSA6ZXhjOmBDb250ZW50LWAgaGVhZGVycywgbGVhdmluZwotICAgICAgYWxsIG90aGVyIGhlYWRlcnMgaW50YWN0IGFuZCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KLQotCi0uLiBjbGFzczo6IE1JTUVQYXJ0KHBvbGljeT1kZWZhdWx0KQotCi0gICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc3VicGFydCBvZiBhIE1JTUUgbWVzc2FnZS4gIEl0IGlzIGlkZW50aWNhbCB0bwotICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCwgZXhjZXB0IHRoYXQgbm8gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycyBhcmUKLSAgICBhZGRlZCB3aGVuIDptZXRoOmB+RW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBpcyBjYWxsZWQsIHNpbmNlIHN1Yi1wYXJ0cyBkbwotICAgIG5vdCBuZWVkIHRoZWlyIG93biA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLgotCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXwogCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwuY29udGVudG1hbmFnZXIKIAogLi4gY2xhc3M6OiBDb250ZW50TWFuYWdlcigpCiAKQEAgLTM2Miw3ICsxMjMsNyBAQAogICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J2J5dGVzJz4sIG1haW50eXBlLCBzdWJ0eXBlLCBjdGU9ImJhc2U2NCIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uPU5vbmUsIGZpbGVuYW1lPU5vbmUsIGNpZD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lKQotICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J01lc3NhZ2UnPiwgY3RlPU5vbmUsIFwKKyAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdFbWFpbE1lc3NhZ2UnPiwgY3RlPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uPU5vbmUsIGZpbGVuYW1lPU5vbmUsIGNpZD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lKQogICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J2xpc3QnPiwgc3VidHlwZT0nbWl4ZWQnLCBcCkBAIC0zNzgsMTQgKzEzOSwxNCBAQAogICAgICAgICAgICAgIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZCwgb3IgYGBwbGFpbmBgIGlmIGl0IGlzIG5vdC4KICAgICAgICAgICAgKiBGb3IgYGBieXRlc2BgLCB1c2UgdGhlIHNwZWNpZmllZCAqbWFpbnR5cGUqIGFuZCAqc3VidHlwZSosIG9yCiAgICAgICAgICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBtYWludHlwZSB0bwotICAgICAgICAgICAgIGBgbWVzc2FnZWBgLCBhbmQgc2V0IHRoZSBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcyBzcGVjaWZpZWQKLSAgICAgICAgICAgICBvciBgYHJmYzgyMmBgIGlmIGl0IGlzIG5vdC4gIElmICpzdWJ0eXBlKiBpcyBgYHBhcnRpYWxgYCwgcmFpc2UgYW4KLSAgICAgICAgICAgICBlcnJvciAoYGBieXRlc2BgIG9iamVjdHMgbXVzdCBiZSB1c2VkIHRvIGNvbnN0cnVjdAotICAgICAgICAgICAgIGBgbWVzc2FnZS9wYXJ0aWFsYGAgcGFydHMpLgorICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBtYWludHlwZQorICAgICAgICAgICAgIHRvIGBgbWVzc2FnZWBgLCBhbmQgc2V0IHRoZSBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcworICAgICAgICAgICAgIHNwZWNpZmllZCBvciBgYHJmYzgyMmBgIGlmIGl0IGlzIG5vdC4gIElmICpzdWJ0eXBlKiBpcworICAgICAgICAgICAgIGBgcGFydGlhbGBgLCByYWlzZSBhbiBlcnJvciAoYGBieXRlc2BgIG9iamVjdHMgbXVzdCBiZSB1c2VkIHRvCisgICAgICAgICAgICAgY29uc3RydWN0IGBgbWVzc2FnZS9wYXJ0aWFsYGAgcGFydHMpLgogICAgICAgICAgICAqIEZvciAqPCdsaXN0Jz4qLCB3aGljaCBzaG91bGQgYmUgYSBsaXN0IG9mCi0gICAgICAgICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIGBgbWFpbnR5cGVgYCB0bwotICAgICAgICAgICAgIGBgbXVsdGlwYXJ0YGAsIGFuZCB0aGUgYGBzdWJ0eXBlYGAgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgCisgICAgICAgICAgICAgdG8gYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKICAgICAgICAgICAgICBzcGVjaWZpZWQsIGFuZCBgYG1peGVkYGAgaWYgaXQgaXMgbm90LiAgSWYgdGhlIG1lc3NhZ2UgcGFydHMgaW4KICAgICAgICAgICAgICB0aGUgKjwnbGlzdCc+KiBoYXZlIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMsIHJlbW92ZQogICAgICAgICAgICAgIHRoZW0uCkBAIC0zOTcsMzIgKzE1OCwzNSBAQAogCiAgICAgICAgSWYgKmN0ZSogaXMgc2V0LCBlbmNvZGUgdGhlIHBheWxvYWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IHRyYW5zZmVyCiAgICAgICAgZW5jb2RpbmcsIGFuZCBzZXQgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuZGNvZGluZ2AgaGVhZGVyIHRvCi0gICAgICAgdGhhdCB2YWx1ZS4gIEZvciBgYHN0cmBgIG9iamVjdHMsIGlmIGl0IGlzIG5vdCBzZXQgdXNlIGhldXJpc3RpY3MgdG8KLSAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4gIFBvc3NpYmxlIHZhbHVlcyBmb3IgKmN0ZSogYXJlCi0gICAgICAgYGBxdW90ZWQtcHJpbnRhYmxlYGAsIGBgYmFzZTY0YGAsIGBgN2JpdGBgLCBgYDhiaXRgYCwgYW5kIGBgYmluYXJ5YGAuCi0gICAgICAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZSBlbmNvZGVkIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgKGVnOiBgYDdiaXRgYCksCi0gICAgICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLCBwZXIKLSAgICAgICA6cmZjOmAyMDQ2YCwgcmFpc2UgYW4gZXJyb3IgaWYgYSAqY3RlKiBvZiBgYHF1b3RlZC1wcmludGFibGVgYCBvcgotICAgICAgIGBgYmFzZTY0YGAgaXMgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSoKLSAgICAgICBvdGhlciB0aGFuIGBgN2JpdGBgIGZvciAqc3VidHlwZSogYGBleHRlcm5hbC1ib2R5YGAuICBGb3IKLSAgICAgICBgYG1lc3NhZ2UvcmZjODIyYGAsIHVzZSBgYDhiaXRgYCBpZiAqY3RlKiBpcyBub3Qgc3BlY2lmaWVkLiAgRm9yIGFsbAotICAgICAgIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KKyAgICAgICB0aGF0IHZhbHVlLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUgYGBxdW90ZWQtcHJpbnRhYmxlYGAsCisgICAgICAgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4gIElmIHRoZSBpbnB1dCBjYW5ub3QgYmUKKyAgICAgICBlbmNvZGVkIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgKGZvciBleGFtcGxlLCBzcGVjaWZ5aW5nIGEgKmN0ZSogb2YKKyAgICAgICBgYDdiaXRgYCBmb3IgYW4gaW5wdXQgdGhhdCBjb250YWlucyBub24tQVNDSUkgdmFsdWVzKSwgcmFpc2UgYQorICAgICAgIDpleGM6YFZhbHVlRXJyb3JgLgorCisgICAgICAgICAgICAqIEZvciBgYHN0cmBgIG9iamVjdHMsIGlmICpjdGUqIGlzIG5vdCBzZXQgdXNlIGhldXJpc3RpY3MgdG8KKyAgICAgICAgICAgICAgZGV0ZXJtaW5lIHRoZSBtb3N0IGNvbXBhY3QgZW5jb2RpbmcuCisgICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAsIHBlciA6cmZjOmAyMDQ2YCwgcmFpc2UKKyAgICAgICAgICAgICAgYW4gZXJyb3IgaWYgYSAqY3RlKiBvZiBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgIGlzCisgICAgICAgICAgICAgIHJlcXVlc3RlZCBmb3IgKnN1YnR5cGUqIGBgcmZjODIyYGAsIGFuZCBmb3IgYW55ICpjdGUqIG90aGVyIHRoYW4KKyAgICAgICAgICAgICAgYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgorICAgICAgICAgICAgICBgYG1lc3NhZ2UvcmZjODIyYGAsIHVzZSBgYDhiaXRgYCBpZiAqY3RlKiBpcyBub3Qgc3BlY2lmaWVkLiAgRm9yCisgICAgICAgICAgICAgIGFsbCBvdGhlciB2YWx1ZXMgb2YgKnN1YnR5cGUqLCB1c2UgYGA3Yml0YGAuCiAKICAgICAgICAuLiBub3RlOjogQSAqY3RlKiBvZiBgYGJpbmFyeWBgIGRvZXMgbm90IGFjdHVhbGx5IHdvcmsgY29ycmVjdGx5IHlldC4KLSAgICAgICAgICBUaGUgYGBNZXNzYWdlYGAgb2JqZWN0IGFzIG1vZGlmaWVkIGJ5IGBgc2V0X2NvbnRlbnRgYCBpcyBjb3JyZWN0LCBidXQKLSAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGRvZXMgbm90IHNlcmlhbGl6ZSBpdAotICAgICAgICAgIGNvcnJlY3RseS4KKyAgICAgICAgICBUaGUgYGBFbWFpbE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzCisgICAgICAgICAgY29ycmVjdCwgYnV0IDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3QKKyAgICAgICAgICBzZXJpYWxpemUgaXQgY29ycmVjdGx5LgogCiAgICAgICAgSWYgKmRpc3Bvc2l0aW9uKiBpcyBzZXQsIHVzZSBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4gIElmIG5vdCBzcGVjaWZpZWQsIGFuZAogICAgICAgICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCBhZGQgdGhlIGhlYWRlciB3aXRoIHRoZSB2YWx1ZSBgYGF0dGFjaG1lbnRgYC4KLSAgICAgICBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkIGFuZCAqZmlsZW5hbWUqIGlzIGFsc28gbm90IHNwZWNpZmllZCwgZG8gbm90IGFkZAotICAgICAgIHRoZSBoZWFkZXIuICBUaGUgb25seSB2YWxpZCB2YWx1ZXMgZm9yICpkaXNwb3NpdGlvbiogYXJlIGBgYXR0YWNobWVudGBgCi0gICAgICAgYW5kIGBgaW5saW5lYGAuCisgICAgICAgSWYgKmRpc3Bvc2l0aW9uKiBpcyBub3Qgc3BlY2lmaWVkIGFuZCAqZmlsZW5hbWUqIGlzIGFsc28gbm90IHNwZWNpZmllZCwKKyAgICAgICBkbyBub3QgYWRkIHRoZSBoZWFkZXIuICBUaGUgb25seSB2YWxpZCB2YWx1ZXMgZm9yICpkaXNwb3NpdGlvbiogYXJlCisgICAgICAgYGBhdHRhY2htZW50YGAgYW5kIGBgaW5saW5lYGAuCiAKICAgICAgICBJZiAqZmlsZW5hbWUqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUgYGBmaWxlbmFtZWBgCi0gICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgVGhlcmUgaXMgbm8KLSAgICAgICBkZWZhdWx0LgorICAgICAgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KIAogICAgICAgIElmICpjaWQqIGlzIHNwZWNpZmllZCwgYWRkIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGhlYWRlciB3aXRoCiAgICAgICAgKmNpZCogYXMgaXRzIHZhbHVlLgpAQCAtNDM1LDMgKzE5OSw5IEBACiAgICAgICAgYGBoZWFkZXJuYW1lOiBoZWFkZXJ2YWx1ZWBgIG9yIGEgbGlzdCBvZiBgYGhlYWRlcmBgIG9iamVjdHMKICAgICAgICAoZGlzdGluZ3Vpc2hlZCBmcm9tIHN0cmluZ3MgYnkgaGF2aW5nIGEgYGBuYW1lYGAgYXR0cmlidXRlKSwgYWRkIHRoZQogICAgICAgIGhlYWRlcnMgdG8gKm1zZyouCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy40IGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAppbmRleCA5ZDdmOWJmLi5lMjRhYzdiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CkBAIC04LDYgKzgsMTIgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZQorbmV3IEFQSSB0aGUgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSB0aGUgKmN0ZSogcGFyYW1ldGVyIG9mCit0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIFdoZW4gY3JlYXRpbmcgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzIGZyb20gc2NyYXRjaCwgeW91IG9mdGVuCiBuZWVkIHRvIGVuY29kZSB0aGUgcGF5bG9hZHMgZm9yIHRyYW5zcG9ydCB0aHJvdWdoIGNvbXBsaWFudCBtYWlsIHNlcnZlcnMuIFRoaXMKIGlzIGVzcGVjaWFsbHkgdHJ1ZSBmb3IgOm1pbWV0eXBlOmBpbWFnZS9cKmAgYW5kIDptaW1ldHlwZTpgdGV4dC9cKmAgdHlwZSBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKaW5kZXggODQ3MDc4My4uMmQwZDE5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CkBAIC0yMCwzMyArMjAsMjcgQEAKIAogLi4gZXhjZXB0aW9uOjogTWVzc2FnZVBhcnNlRXJyb3IoKQogCi0gICBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAKLSAgIGNsYXNzLiAgSXQgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VFcnJvcmAuCisgICBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLiAgSXQgaXMgZGVyaXZlZCBmcm9tCisgICA6ZXhjOmBNZXNzYWdlRXJyb3JgLiAgVGhpcyBjbGFzcyBpcyBhbHNvIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgcGFyc2VyIHVzZWQKKyAgIGJ5IDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAuCiAKIAogLi4gZXhjZXB0aW9uOjogSGVhZGVyUGFyc2VFcnJvcigpCiAKLSAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmAyODIyYCBoZWFkZXJzIG9mIGEKLSAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gSXQgY2FuIGJlIHJhaXNlZAotICAgZnJvbSB0aGUgOm1ldGg6YFBhcnNlci5wYXJzZSA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZT5gIG9yCi0gICA6bWV0aDpgUGFyc2VyLnBhcnNlc3RyIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlc3RyPmAgbWV0aG9kcy4KLQotICAgU2l0dWF0aW9ucyB3aGVyZSBpdCBjYW4gYmUgcmFpc2VkIGluY2x1ZGUgZmluZGluZyBhbiBlbnZlbG9wZSBoZWFkZXIgYWZ0ZXIgdGhlCi0gICBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UsIGZpbmRpbmcgYSBjb250aW51YXRpb24gbGluZSBiZWZvcmUgdGhlCi0gICBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgaXMgZm91bmQsIG9yIGZpbmRpbmcgYSBsaW5lIGluIHRoZSBoZWFkZXJzIHdoaWNoIGlzCi0gICBuZWl0aGVyIGEgaGVhZGVyIG9yIGEgY29udGludWF0aW9uIGxpbmUuCisgICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiBhCisgICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuICBUaGUKKyAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2JvdW5kYXJ5YCBtZXRob2Qgd2lsbCByYWlzZSB0aGlzCisgICBlcnJvciBpZiB0aGUgY29udGVudCB0eXBlIGlzIHVua25vd24gd2hlbiB0aGUgbWV0aG9kIGlzIGNhbGxlZC4KKyAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG1heSByYWlzZSB0aGlzIGVycm9yIGZvciBjZXJ0YWluIGJhc2U2NAorICAgZGVjb2RpbmcgZXJyb3JzLCBhbmQgd2hlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gY3JlYXRlIGEgaGVhZGVyIHRoYXQgYXBwZWFycworICAgdG8gY29udGFpbiBhbiBlbWJlZGRlZCBoZWFkZXIgKHRoYXQgaXMsIHRoZXJlIGlzIHdoYXQgaXMgc3VwcG9zZWQgdG8gYmUgYQorICAgY29udGludWF0aW9uIGxpbmUgdGhhdCBoYXMgbm8gbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBsb29rcyBsaWtlIGEgaGVhZGVyKS4KIAogCiAuLiBleGNlcHRpb246OiBCb3VuZGFyeUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBub3QgYmVpbmcgYWJsZSB0byBmaW5kIHRoZSBzdGFydGluZyBvcgotICAgdGVybWluYXRpbmcgYm91bmRhcnkgaW4gYSA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgbWVzc2FnZSB3aGVuIHN0cmljdCBwYXJzaW5nCi0gICBpcyB1c2VkLgorICAgRGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHVzZWQuCiAKIAogLi4gZXhjZXB0aW9uOjogTXVsdGlwYXJ0Q29udmVyc2lvbkVycm9yKCkKQEAgLTY0LDE0ICs1OCwxNCBAQAogICAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgKGUuZy4KICAgIDpjbGFzczpgfmVtYWlsLm1pbWUuaW1hZ2UuTUlNRUltYWdlYCkuCiAKLUhlcmUncyB0aGUgbGlzdCBvZiB0aGUgZGVmZWN0cyB0aGF0IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAKKworSGVyZSBpcyB0aGUgbGlzdCBvZiB0aGUgZGVmZWN0cyB0aGF0IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAKIGNhbiBmaW5kIHdoaWxlIHBhcnNpbmcgbWVzc2FnZXMuICBOb3RlIHRoYXQgdGhlIGRlZmVjdHMgYXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlCiB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQsIHNvIGZvciBleGFtcGxlLCBpZiBhIG1lc3NhZ2UgbmVzdGVkIGluc2lkZSBhCiA6bWltZXR5cGU6YG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgaGFkIGEgbWFsZm9ybWVkIGhlYWRlciwgdGhhdCBuZXN0ZWQgbWVzc2FnZQogb2JqZWN0IHdvdWxkIGhhdmUgYSBkZWZlY3QsIGJ1dCB0aGUgY29udGFpbmluZyBtZXNzYWdlcyB3b3VsZCBub3QuCiAKLUFsbCBkZWZlY3QgY2xhc3NlcyBhcmUgc3ViY2xhc3NlZCBmcm9tIDpjbGFzczpgZW1haWwuZXJyb3JzLk1lc3NhZ2VEZWZlY3RgLCBidXQKLXRoaXMgY2xhc3MgaXMgKm5vdCogYW4gZXhjZXB0aW9uIQorQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAuCiAKICogOmNsYXNzOmBOb0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEgbXVsdGlwYXJ0LAogICBidXQgaGFkIG5vIDptaW1ldHlwZTpgYm91bmRhcnlgIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGU5YWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0CkBAIC0wLDAgKzEsNjcgQEAKKy4uIF9lbWFpbC1leGFtcGxlczoKKworOm1vZDpgZW1haWxgOiBFeGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKK2FuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KKworRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZSAoYm90aCB0aGUKK3RleHQgY29udGVudCBhbmQgdGhlIGFkZHJlc3NlcyBtYXkgY29udGFpbiB1bmljb2RlIGNoYXJhY3RlcnMpOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorCisKK1BhcnNpbmcgUkZDODIyIGhlYWRlcnMgY2FuIGVhc2lseSBiZSBkb25lIGJ5IHRoZSB1c2luZyB0aGUgY2xhc3NlcworZnJvbSB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgbW9kdWxlOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5CitwaWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAorbWVzc2FnZTogWzFdXworCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCithYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gY3JlYXRlIGFuIEhUTUwgbWVzc2FnZSB3aXRoIGFuIGFsdGVybmF0aXZlIHBsYWluCit0ZXh0IHZlcnNpb24uICBUbyBtYWtlIHRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZAoraW1hZ2UgaW4gdGhlIGh0bWwgcGFydCwgYW5kIHdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8KK2Rpc2ssIGFzIHdlbGwgYXMgc2VuZGluZyBpdC4KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQorCisKK0lmIHdlIHdlcmUgc2VudCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBsYXN0IGV4YW1wbGUsIGhlcmUgaXMgb25lIHdheSB3ZSBjb3VsZAorcHJvY2VzcyBpdDoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CisKK1VwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgorICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KKyAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgorCisgICAgU2FsdXQhCisKKyAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdAppbmRleCBkNTk2ZWQ4Li5hYjBmYmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKQEAgLTgsMjEwICs4LDI0NCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1PbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IHRleHQgb2YgdGhlIGVtYWlsIG1lc3NhZ2UKLXJlcHJlc2VudGVkIGJ5IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlLiAgWW91IHdpbGwgbmVlZCB0byBkbyB0aGlzIGlmIHlvdSB3YW50Ci10byBzZW5kIHlvdXIgbWVzc2FnZSB2aWEgdGhlIDptb2Q6YHNtdHBsaWJgIG1vZHVsZSBvciB0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLAotb3IgcHJpbnQgdGhlIG1lc3NhZ2Ugb24gdGhlIGNvbnNvbGUuICBUYWtpbmcgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kCi1wcm9kdWNpbmcgYSBmbGF0IHRleHQgZG9jdW1lbnQgaXMgdGhlIGpvYiBvZiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLgorT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB0YXNrcyBpcyB0byBnZW5lcmF0ZSB0aGUgZmxhdCAoc2VyaWFsaXplZCkgdmVyc2lvbiBvZgordGhlIGVtYWlsIG1lc3NhZ2UgcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvCitkbyB0aGlzIGlmIHlvdSB3YW50IHRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSA6bWV0aDpgc210cGxpYi5TTVRQLnNlbmRtYWlsYCBvcgordGhlIDptb2Q6YG5udHBsaWJgIG1vZHVsZSwgb3IgcHJpbnQgdGhlIG1lc3NhZ2Ugb24gdGhlIGNvbnNvbGUuICBUYWtpbmcgYQorbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGFuZCBwcm9kdWNpbmcgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIGlzIHRoZSBqb2IKK29mIHRoZSBnZW5lcmF0b3IgY2xhc3Nlcy4KIAotQWdhaW4sIGFzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlCi1mdW5jdGlvbmFsaXR5IG9mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2gKLXlvdXJzZWxmLiAgSG93ZXZlciB0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYQotc3RhbmRhcmRzLWNvbXBsaWFudCB3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdAotZmluZSwgYW5kIGlzIGRlc2lnbmVkIHNvIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZmxhdCB0ZXh0LCB0byBhIG1lc3NhZ2UKLXN0cnVjdHVyZSB2aWEgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLCBhbmQgYmFjayB0byBmbGF0IHRleHQsCi1pcyBpZGVtcG90ZW50ICh0aGUgaW5wdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvdXRwdXQpIFsjXV8uICBPbiB0aGUgb3RoZXIgaGFuZCwKLXVzaW5nIHRoZSBHZW5lcmF0b3Igb24gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNvbnN0cnVjdGVkIGJ5IHByb2dyYW0KLW1heSByZXN1bHQgaW4gY2hhbmdlcyB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMKLWFyZSBmaWxsZWQgaW4uCitBcyB3aXRoIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwgeW91IGFyZW4ndCBsaW1pdGVkIHRvIHRoZSBmdW5jdGlvbmFsaXR5CitvZiB0aGUgYnVuZGxlZCBnZW5lcmF0b3I7IHlvdSBjb3VsZCB3cml0ZSBvbmUgZnJvbSBzY3JhdGNoIHlvdXJzZWxmLiAgSG93ZXZlcgordGhlIGJ1bmRsZWQgZ2VuZXJhdG9yIGtub3dzIGhvdyB0byBnZW5lcmF0ZSBtb3N0IGVtYWlsIGluIGEgc3RhbmRhcmRzLWNvbXBsaWFudAord2F5LCBzaG91bGQgaGFuZGxlIE1JTUUgYW5kIG5vbi1NSU1FIGVtYWlsIG1lc3NhZ2VzIGp1c3QgZmluZSwgYW5kIGlzIGRlc2lnbmVkCitzbyB0aGF0IHRoZSBieXRlcy1vcmllbnRlZCBwYXJzaW5nIGFuZCBnZW5lcmF0aW9uIG9wZXJhdGlvbnMgYXJlIGludmVyc2VzLAorYXNzdW1pbmcgdGhlIHNhbWUgbm9uLXRyYW5zZm9ybWluZyA6bW9kOmB+ZW1haWwucG9saWN5YCBpcyB1c2VkIGZvciBib3RoLiAgVGhhdAoraXMsIHBhcnNpbmcgdGhlIHNlcmlhbGl6ZWQgYnl0ZSBzdHJlYW0gdmlhIHRoZQorOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcyBhbmQgdGhlbiByZWdlbmVyYXRpbmcgdGhlIHNlcmlhbGl6ZWQKK2J5dGUgc3RyZWFtIHVzaW5nIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBwcm9kdWNlIG91dHB1dCBpZGVudGljYWwgdG8KK3RoZSBpbnB1dCBbI11fLiAgKE9uIHRoZSBvdGhlciBoYW5kLCB1c2luZyB0aGUgZ2VuZXJhdG9yIG9uIGFuCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbSBtYXkgcmVzdWx0IGluCitjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0IGFzIGRlZmF1bHRzIGFyZQorZmlsbGVkIGluLikKIAotOmNsYXNzOmBieXRlc2Agb3V0cHV0IGNhbiBiZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzLgotSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBjb250YWlucyBub24tQVNDSUkgYnl0ZXMsIHRoaXMgZ2VuZXJhdG9yJ3MKLTptZXRoOmB+Qnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIHdpbGwgZW1pdCB0aGUgb3JpZ2luYWwgYnl0ZXMuICBQYXJzaW5nIGEKLWJpbmFyeSBtZXNzYWdlIGFuZCB0aGVuIGZsYXR0ZW5pbmcgaXQgd2l0aCA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBzaG91bGQgYmUKLWlkZW1wb3RlbnQgZm9yIHN0YW5kYXJkcyBjb21wbGlhbnQgbWVzc2FnZXMuCi0KLUhlcmUgYXJlIHRoZSBwdWJsaWMgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZQotOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CitUaGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGZsYXR0ZW4gYSBtZXNzYWdlIGludG8gYSB0ZXh0IChhcworb3Bwb3NlZCB0byBiaW5hcnkpIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24sIGJ1dCBzaW5jZSBVbmljb2RlIGNhbm5vdAorcmVwcmVzZW50IGJpbmFyeSBkYXRhIGRpcmVjdGx5LCB0aGUgbWVzc2FnZSBpcyBvZiBuZWNlc3NpdHkgdHJhbnNmb3JtZWQgaW50bworc29tZXRoaW5nIHRoYXQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLCB1c2luZyB0aGUgc3RhbmRhcmQgZW1haWwgUkZDCitDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIHRlY2huaXF1ZXMgZm9yIGVuY29kaW5nIGVtYWlsIG1lc3NhZ2VzIGZvciB0cmFuc3BvcnQKK292ZXIgY2hhbm5lbHMgdGhhdCBhcmUgbm90ICI4IGJpdCBjbGVhbiIuCiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsICosIHBvbGljeT1Ob25lKQotCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgdGFrZXMgYSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKLSAgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdCBzdXBwb3J0IHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZAotICAgYW5kIGJlIHVzYWJsZSBhcyB0aGUgb3V0cHV0IGZpbGUgZm9yIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgIGNoYXJhY3RlciBpbgotICAgZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwgaS5lLiBgYEZyb21gYAotICAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUgb25seSBndWFyYW50ZWVkCi0gICBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEgVW5peCBtYWlsYm94IGZvcm1hdAotICAgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKLSAgIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4gICptYW5nbGVfZnJvbV8qCi0gICBkZWZhdWx0cyB0byBgYFRydWVgYCwgYnV0IHlvdSBtaWdodCB3YW50IHRvIHNldCB0aGlzIHRvIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdAotICAgd3JpdGluZyBVbml4IG1haWxib3ggZm9ybWF0IGZpbGVzLgotCi0gICBPcHRpb25hbCAqbWF4aGVhZGVybGVuKiBzcGVjaWZpZXMgdGhlIGxvbmdlc3QgbGVuZ3RoIGZvciBhIG5vbi1jb250aW51ZWQgaGVhZGVyLgotICAgV2hlbiBhIGhlYWRlciBsaW5lIGlzIGxvbmdlciB0aGFuICptYXhoZWFkZXJsZW4qIChpbiBjaGFyYWN0ZXJzLCB3aXRoIHRhYnMKLSAgIGV4cGFuZGVkIHRvIDggc3BhY2VzKSwgdGhlIGhlYWRlciB3aWxsIGJlIHNwbGl0IGFzIGRlZmluZWQgaW4gdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBjbGFzcy4gIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgaGVhZGVyIHdyYXBwaW5nLgotICAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieSA6cmZjOmAyODIyYC4KLQotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YEdlbmVyYXRvcmAgbWV0aG9kcyBhcmU6Ci0KLQotICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCi0KLSAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkIGF0Ci0gICAgICAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZQotICAgICAgd2FzIGNyZWF0ZWQuICBTdWJwYXJ0cyBhcmUgdmlzaXRlZCBkZXB0aC1maXJzdCBhbmQgdGhlIHJlc3VsdGluZyB0ZXh0IHdpbGwKLSAgICAgIGJlIHByb3Blcmx5IE1JTUUgZW5jb2RlZC4KLQotICAgICAgT3B0aW9uYWwgKnVuaXhmcm9tKiBpcyBhIGZsYWcgdGhhdCBmb3JjZXMgdGhlIHByaW50aW5nIG9mIHRoZSBlbnZlbG9wZQotICAgICAgaGVhZGVyIGRlbGltaXRlciBiZWZvcmUgdGhlIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgcm9vdCBtZXNzYWdlCi0gICAgICBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzIG5vIGVudmVsb3BlIGhlYWRlciwgYSBzdGFuZGFyZCBvbmUgaXMKLSAgICAgIGNyYWZ0ZWQuICBCeSBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byBgYEZhbHNlYGAgdG8gaW5oaWJpdCB0aGUgcHJpbnRpbmcgb2YKLSAgICAgIHRoZSBlbnZlbG9wZSBkZWxpbWl0ZXIuCi0KLSAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCi0KLSAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIElmIHNwZWNpZmllZCBpdCBvdmVycmlkZXMgdGhlIHZhbHVlCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlICptc2cqXCdzIG9yIGBgR2VuZXJhdG9yYGBcJ3MgYGBwb2xpY3lgYC4KLQotICAgICAgQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgbm9uLUFTQ0lJIGJ5dGVzLCBpZiB0aGUgcG9saWN5IHRoYXQKLSAgICAgIGFwcGxpZXMgd2hlbiBgYGZsYXR0ZW5gYCBpcyBydW4gaGFzIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKLSAgICAgIHNldCB0byBgYDhiaXRgYCwgYGBHZW5lcmF0b3JgYCB3aWxsIG9wZXJhdGUgYXMgaWYgaXQgd2VyZSBzZXQgdG8KLSAgICAgIGBgN2JpdGBgLiAgVGhpcyBtZWFucyB0aGF0IG1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZQotICAgICAgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgd2lsbCBiZSBjb252ZXJ0ZWQKLSAgICAgIHRvIGEgdXNlIGEgYGA3Yml0YGAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIE5vbi1BU0NJSSBieXRlcyBpbiB0aGUKLSAgICAgIGhlYWRlcnMgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkIHdpdGggYSBjaGFyc2V0IG9mIGBgdW5rbm93bi04Yml0YGAuCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyBgYDhiaXRgYCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZQotICAgICAgICAgKmxpbmVzZXAqIGFyZ3VtZW50LgotCi0gICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKLQotICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCi0gICAgICBleGFjdCBzYW1lIG9wdGlvbnMuCi0KLSAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCi0KLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LCBpLmUuICpvdXRmcCogcGFzc2VkIHRvCi0gICAgICA6Y2xhc3M6YEdlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlIEFQSQotICAgICAgZm9yIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZXMgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotQXMgYSBjb252ZW5pZW5jZSwgc2VlIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG1ldGhvZHMKLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgYW5kIGBgc3RyKGFNZXNzYWdlKWBgLCBhLmsuYS4KLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLl9fc3RyX19gLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZiBhCi1mb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQotOm1vZDpgZW1haWwubWVzc2FnZWAuCi0KLS4uIGNsYXNzOjogQnl0ZXNHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsICosIFwKKy4uIGNsYXNzOjogQnl0ZXNHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKIAotICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MgdGFrZXMgYSBiaW5hcnkKLSAgIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3QKLSAgIHN1cHBvcnQgYSA6bWV0aDpgd3JpdGVgIG1ldGhvZCB0aGF0IGFjY2VwdHMgYmluYXJ5IGRhdGEuCisgICBSZXR1cm4gYSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBvYmplY3QgdGhhdCB3aWxsIHdyaXRlIGFueSBtZXNzYWdlIHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YGZsYXR0ZW5gIG1ldGhvZCwgb3IgYW55IHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIHRleHQgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZCwgdG8gdGhlIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCAqb3V0ZnAqLgorICAgKm91dGZwKiBtdXN0IHN1cHBvcnQgYSBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KIAotICAgT3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYSBmbGFnIHRoYXQsIHdoZW4gYGBUcnVlYGAsIHB1dHMgYSBgYD5gYAotICAgY2hhcmFjdGVyIGluIGZyb250IG9mIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIGV4YWN0bHkgYXMgYGBGcm9tYGAsCi0gICBpLmUuIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gIFRoaXMgaXMgdGhlCi0gICBvbmx5IGd1YXJhbnRlZWQgcG9ydGFibGUgd2F5IHRvIGF2b2lkIGhhdmluZyBzdWNoIGxpbmVzIGJlIG1pc3Rha2VuIGZvciBhCi0gICBVbml4IG1haWxib3ggZm9ybWF0IGVudmVsb3BlIGhlYWRlciBzZXBhcmF0b3IgKHNlZSBgV0hZIFRIRSBDT05URU5ULUxFTkdUSAotICAgRk9STUFUIElTIEJBRCA8aHR0cHM6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXyBmb3IgZGV0YWlscykuCi0gICAqbWFuZ2xlX2Zyb21fKiBkZWZhdWx0cyB0byBgYFRydWVgYCwgYnV0IHlvdSBtaWdodCB3YW50IHRvIHNldCB0aGlzIHRvCi0gICBgYEZhbHNlYGAgaWYgeW91IGFyZSBub3Qgd3JpdGluZyBVbml4IG1haWxib3ggZm9ybWF0IGZpbGVzLgorICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCiAKLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZAotICAgaGVhZGVyLiAgV2hlbiBhIGhlYWRlciBsaW5lIGlzIGxvbmdlciB0aGFuICptYXhoZWFkZXJsZW4qIChpbiBjaGFyYWN0ZXJzLAotICAgd2l0aCB0YWJzIGV4cGFuZGVkIHRvIDggc3BhY2VzKSwgdGhlIGhlYWRlciB3aWxsIGJlIHNwbGl0IGFzIGRlZmluZWQgaW4gdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBjbGFzcy4gIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgaGVhZGVyCi0gICB3cmFwcGluZy4gIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkKLSAgIDpyZmM6YDI4MjJgLgorICAgSWYgKm1heGhlYWRlcmxlbiogaXMgbm90IGBgTm9uZWBgLCByZWZvbGQgYW55IGhlYWRlciBsaW5lcyB0aGF0IGFyZSBsb25nZXIKKyAgIHRoYW4gKm1heGhlYWRlcmxlbiosIG9yIGlmIGBgMGBgLCBkbyBub3QgcmV3cmFwIGFueSBoZWFkZXJzLiAgSWYKKyAgICptYW5oZWFkZXJsZW4qIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHdyYXAgaGVhZGVycyBhbmQgb3RoZXIgbWVzc2FnZQorICAgbGluZXMgYWNjb3JkaW5nIHRvIHRoZSAqcG9saWN5KiBzZXR0aW5ncy4KIAorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCB1c2UgdGhhdCBwb2xpY3kgdG8gY29udHJvbCBtZXNzYWdlIGdlbmVyYXRpb24uICBJZgorICAgKnBvbGljeSogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdXNlIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCBwYXNzZWQgdG8gYGBmbGF0dGVuYGAgdG8gY29udHJvbCB0aGUgbWVzc2FnZSBnZW5lcmF0aW9uLiAgU2VlCisgICA6bW9kOmBlbWFpbC5wb2xpY3lgIGZvciBkZXRhaWxzIG9uIHdoYXQgKnBvbGljeSogY29udHJvbHMuCiAKLSAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKLSAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyAqcG9saWN5KiBpcyBzcGVjaWZpZWQsCi0gICB0aGVuIHRoZSAqcG9saWN5KiBhdHRhY2hlZCB0byB0aGUgbWVzc2FnZSBvYmplY3QgcGFzc2VkIHRvIDphdHRyOmBmbGF0dGVuYAotICAgaXMgdXNlZC4KKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSAqbWFuZ2xlX2Zyb21fKgorICAgICAgYW5kICptYXhoZWFkZXJsZW4qIHBhcmFtZXRlcnMgaXMgdG8gZm9sbG93IHRoZSBwb2xpY3kuCiAKIAogICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCiAKICAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCiAgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgCi0gICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0IHdpbGwgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLiAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbgotICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBpcyBgYDhiaXRgYCAodGhlIGRlZmF1bHQpLAotICAgICAgdGhlbiBhbnkgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGluIHRoZSBvcmlnaW5hbCBwYXJzZWQgbWVzc2FnZSB0aGF0Ci0gICAgICBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkIHdpbGwgYmUgY29waWVkIGZhaXRoZnVsbHkgdG8gdGhlIG91dHB1dC4gIElmCi0gICAgICBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAsIHRoZSBieXRlcyB3aWxsIGJlIGNvbnZlcnRlZCBhcyBuZWVkZWQKLSAgICAgIHVzaW5nIGFuIEFTQ0lJLWNvbXBhdGlibGUgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIEluIHBhcnRpY3VsYXIsCi0gICAgICBSRkMtaW52YWxpZCBub24tQVNDSUkgYnl0ZXMgaW4gaGVhZGVycyB3aWxsIGJlIGVuY29kZWQgdXNpbmcgdGhlIE1JTUUKLSAgICAgIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cyByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgorICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCiAKLSAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGEgY29tcGxlbWVudGFyeSBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQwotICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgorICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCAodGhlIGRlZmF1bHQpLCBjb3B5IGFueSBoZWFkZXJzIGluIHRoZSBvcmlnaW5hbCBwYXJzZWQKKyAgICAgIG1lc3NhZ2UgdGhhdCBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkIHRvIHRoZSBvdXRwdXQgd2l0aCBhbnkgYnl0ZXMgd2l0aCB0aGUKKyAgICAgIGhpZ2ggYml0IHNldCByZXByb2R1Y2VkIGFzIGluIHRoZSBvcmlnaW5hbCwgYW5kIHByZXNlcnZlIHRoZSBub24tQVNDSUkKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBhbnkgYm9keSBwYXJ0cyB0aGF0IGhhdmUgdGhlbS4KKyAgICAgIElmIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgY29udmVydCB0aGUgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGFzCisgICAgICBuZWVkZWQgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuCisgICAgICBUaGF0IGlzLCB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkKKyAgICAgIDptYWlsaGVhZGVyOmBDb3RuZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0YCkgdG8gYW4gQVNDSUkgY29tcGF0aWJpbGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCwgYW5kIGVuY29kZSBSRkMtaW52YWxpZCBub24tQVNDSUkKKyAgICAgIGJ5dGVzIGluIGhlYWRlcnMgdXNpbmcgdGhlIE1JTUUgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzCisgICAgICByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgogCi0gICAgICBNZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUgYQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQgd2lsbCBiZSByZWNvbnN0cnVjdGVkCi0gICAgICBhcyA4Yml0IGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBtb2RpZmllZC4KKyAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGFuIG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCisgICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIG9uIGhlYWRlcnMgYnV0IGxlYXZlcyBDVEUgOGJpdCBwYXJ0cyBhbG9uZS4KIAotICAgICAgT3B0aW9uYWwgKnVuaXhmcm9tKiBpcyBhIGZsYWcgdGhhdCBmb3JjZXMgdGhlIHByaW50aW5nIG9mIHRoZSBlbnZlbG9wZQotICAgICAgaGVhZGVyIGRlbGltaXRlciBiZWZvcmUgdGhlIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgcm9vdCBtZXNzYWdlCi0gICAgICBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzIG5vIGVudmVsb3BlIGhlYWRlciwgYSBzdGFuZGFyZCBvbmUgaXMKLSAgICAgIGNyYWZ0ZWQuICBCeSBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byBgYEZhbHNlYGAgdG8gaW5oaWJpdCB0aGUgcHJpbnRpbmcgb2YKLSAgICAgIHRoZSBlbnZlbG9wZSBkZWxpbWl0ZXIuCi0KKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKLSAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIElmIHNwZWNpZmllZCBpdCBvdmVycmlkZXMgdGhlIHZhbHVlCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGBgR2VuZXJhdG9yYGBcIG9yICptc2cqXCAncyBgYHBvbGljeWBgLgorICAgICAgSWYgKmxpbmVzZXAqIGlzIG5vdCBgYE5vbmVgYCwgdXNlIGl0IGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyIGJldHdlZW4KKyAgICAgIGFsbCB0aGUgbGluZXMgb2YgdGhlIGZsYXR0ZW5lZCBtZXNzYWdlLiAgSWYgKmxpbmVzZXAqIGlzIGBgTm9uZWBgICh0aGUKKyAgICAgIGRlZmF1bHQpLCB1c2UgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgKnBvbGljeSouCisKKyAgICAgIC4uIFhYWDogZmxhdHRlbiBzaG91bGQgdGFrZSBhICpwb2xpY3kqIGtleXdvcmQuCisKIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKICAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGgKLSAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuCisgICAgICB0aGUgZXhhY3Qgc2FtZSBvcHRpb24gc2V0dGluZ3MsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKwogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShzKQogCi0gICAgICBXcml0ZSB0aGUgc3RyaW5nICpzKiB0byB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdC4gICpzKiBpcyBlbmNvZGVkIHVzaW5nCi0gICAgICB0aGUgYGBBU0NJSWBgIGNvZGVjIGFuZCB3cml0dGVuIHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgICpvdXRmcCoKLSAgICAgICpvdXRmcCogcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcwotICAgICAgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlIEFQSSBmb3IgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2VzCi0gICAgICB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotVGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBkZXJpdmVkIGNsYXNzLCBjYWxsZWQKLTpjbGFzczpgRGVjb2RlZEdlbmVyYXRvcmAgd2hpY2ggaXMgbGlrZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MsCi1leGNlcHQgdGhhdCBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnRzIGFyZSBzdWJzdGl0dXRlZCB3aXRoIGEgZm9ybWF0IHN0cmluZwotcmVwcmVzZW50aW5nIHRoZSBwYXJ0LgorICAgICAgRW5jb2RlICpzKiB1c2luZyB0aGUgYGBBU0NJSWBgIGNvZGVjIGFuZCB0aGUgYGBzdXJyb2dhdGVlc2NhcGVgYCBlcnJvcgorICAgICAgaGFuZGxlciwgYW5kIHBhc3MgaXQgdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuCiAKIAotLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSkKK0FzIGEgY29udmVuaWVuY2UsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgbWV0aG9kcworOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5hc19ieXRlc2AgYW5kIGBgYnl0ZXMoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX2J5dGVzX19gKSwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YKK2Egc2VyaWFsaXplZCBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KIAotICAgVGhpcyBjbGFzcywgZGVyaXZlZCBmcm9tIDpjbGFzczpgR2VuZXJhdG9yYCB3YWxrcyB0aHJvdWdoIGFsbCB0aGUgc3VicGFydHMgb2YgYQotICAgbWVzc2FnZS4gIElmIHRoZSBzdWJwYXJ0IGlzIG9mIG1haW4gdHlwZSA6bWltZXR5cGU6YHRleHRgLCB0aGVuIGl0IHByaW50cyB0aGUKLSAgIGRlY29kZWQgcGF5bG9hZCBvZiB0aGUgc3VicGFydC4gT3B0aW9uYWwgKl9tYW5nbGVfZnJvbV8qIGFuZCAqbWF4aGVhZGVybGVuKiBhcmUKLSAgIGFzIHdpdGggdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLgogCi0gICBJZiB0aGUgc3VicGFydCBpcyBub3Qgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIG9wdGlvbmFsICpmbXQqIGlzIGEgZm9ybWF0Ci0gICBzdHJpbmcgdGhhdCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG1lc3NhZ2UgcGF5bG9hZC4gKmZtdCogaXMgZXhwYW5kZWQgd2l0aCB0aGUKLSAgIGZvbGxvd2luZyBrZXl3b3JkcywgYGAlKGtleXdvcmQpc2BgIGZvcm1hdDoKK0JlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IGJpbmFyeSBkYXRhLCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIG11c3QKK2NvbnZlcnQgYW55IGJpbmFyeSBkYXRhIGluIGFueSBtZXNzYWdlIGl0IGZsYXR0ZW5zIHRvIGFuIEFTQ0lJIGNvbXBhdGlibGUKK2Zvcm1hdCwgYnkgY29udmVydGluZyB0aGVtIHRvIGFuIEFTQ0lJIGNvbXBhdGlibGUKKzptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyX0VuY29kaW5nYC4gIFVzaW5nIHRoZSB0ZXJtaW5vbG9neSBvZiB0aGUgZW1haWwKK1JGQ3MsIHlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyA6Y2xhc3M6YEdlbmVyYXRvcmAgc2VyaWFsaXppbmcgdG8gYW4gSS9PIHN0cmVhbQordGhhdCBpcyBub3QgIjggYml0IGNsZWFuIi4gIEluIG90aGVyIHdvcmRzLCBtb3N0IGFwcGxpY2F0aW9ucyB3aWxsIHdhbnQKK3RvIGJlIHVzaW5nIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgLCBhbmQgbm90IDpjbGFzczpgR2VuZXJhdG9yYC4KKworLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpCisKKyAgIFJldHVybiBhIDpjbGFzczpgR2VuZXJhdG9yYCBvYmplY3QgdGhhdCB3aWxsIHdyaXRlIGFueSBtZXNzYWdlIHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YGZsYXR0ZW5gIG1ldGhvZCwgb3IgYW55IHRleHQgcHJvdmlkZWQgdG8gdGhlIDptZXRoOmB3cml0ZWAKKyAgIG1ldGhvZCwgdG8gdGhlIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCAqb3V0ZnAqLiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgYQorICAgYGB3cml0ZWBgIG1ldGhvZCB0aGF0IGFjY2VwdHMgc3RyaW5nIGRhdGEuCisKKyAgIElmIG9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGBgVHJ1ZWBgLCBwdXQgYSBgYD5gYCBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YKKyAgIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGV4YWN0IHN0cmluZyBgYCJGcm9tICJgYCwgdGhhdCBpcworICAgYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4gICptYW5nbGVfZnJvbV8qCisgICBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tYW5nbGVfZnJvbV9gCisgICBzZXR0aW5nIG9mIHRoZSAqcG9saWN5KiAod2hpY2ggaXMgYGBUcnVlYGAgZm9yIHRoZQorICAgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSBhbmQgYGBGYWxzZWBgIGZvciBhbGwgb3RoZXJzKS4KKyAgICptYW5nbGVfZnJvbV8qIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHVuaXggbWJveAorICAgZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGAgYW5kIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKKyAgIDxodHRwOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8pLgorCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSAqbWFuZ2xlX2Zyb21fKgorICAgICAgYW5kICptYXhoZWFkZXJsZW4qIHBhcmFtZXRlcnMgaXMgdG8gZm9sbG93IHRoZSBwb2xpY3kuCisKKworICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCisKKyAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCisgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgR2VuZXJhdG9yYAorICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCisKKyAgICAgIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24gOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAorICAgICAgaXMgYGA4Yml0YGAsIGdlbmVyYXRlIHRoZSBtZXNzYWdlIGFzIGlmIHRoZSBvcHRpb24gd2VyZSBzZXQgdG8gYGA3Yml0YGAuCisgICAgICAoVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMuKQorICAgICAgQ29udmVydCBhbnkgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGFzIG5lZWRlZCB1c2luZyBhbgorICAgICAgQVNDSUktY29tcGF0aWJsZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBUaGF0IGlzLAorICAgICAgdHJhbnNmb3JtIHBhcnRzIHdpdGggbm9uLUFTQ0lJIDptYWlsaGVhZGVyOmBDb3RuZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0YCkgdG8gYW4gQVNDSUkgY29tcGF0aWJpbGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCwgYW5kIGVuY29kZSBSRkMtaW52YWxpZCBub24tQVNDSUkKKyAgICAgIGJ5dGVzIGluIGhlYWRlcnMgdXNpbmcgdGhlIE1JTUUgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzCisgICAgICByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgorCisgICAgICBJZiAqdW5peGZyb20qIGlzIGBgVHJ1ZWBgLCBwcmludCB0aGUgZW52ZWxvcGUgaGVhZGVyIGRlbGltaXRlciB1c2VkIGJ5CisgICAgICB0aGUgVW5peCBtYWlsYm94IGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgKSBiZWZvcmUgdGhlIGZpcnN0IG9mIHRoZQorICAgICAgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMKKyAgICAgIG5vIGVudmVsb3BlIGhlYWRlciwgY3JhZnQgYSBzdGFuZGFyZCBvbmUuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgorCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCisgICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCisKKworICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCisKKyAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoIHRoZQorICAgICAgZXhhY3Qgc2FtZSBvcHRpb25zLCBhbmQgKmZwKiBhcyB0aGUgbmV3ICpvdXRmcCouCisKKworICAgLi4gbWV0aG9kOjogd3JpdGUocykKKworICAgICAgV3JpdGUgKnMqIHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgKm91dGZwKiBwYXNzZWQgdG8gdGhlCisgICAgICA6Y2xhc3M6YEdlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlCisgICAgICBBUEkgZm9yIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZXMgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YAorICAgICAgZnVuY3Rpb24uCisKKworQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX3N0cmluZ2AgYW5kIGBgc3RyKGFNZXNzYWdlKWBgIChhLmsuYS4KKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuX19zdHJfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQorOm1vZDpgZW1haWwubWVzc2FnZWAuCisKKworVGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBkZXJpdmVkIGNsYXNzLAorOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCwgd2hpY2ggaXMgbGlrZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MsCitleGNlcHQgdGhhdCBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnRzIGFyZSBub3Qgc2VyaWFsaXplZCwgYnV0IGFyZSBpbnN0ZWFkCityZXByZXNlbnRlZCBpbiB0aGUgb3V0cHV0IHN0cmVhbSBieSBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSB0ZW1wbGF0ZSBmaWxsZWQKK2luIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcnQuCisKKy4uIGNsYXNzOjogRGVjb2RlZEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10PU5vbmUsICosIHBvbGljeT1Ob25lKQorCisgICBBY3QgbGlrZSA6Y2xhc3M6YEdlbmVyYXRvcmAsIGV4Y2VwdCB0aGF0IGZvciBhbnkgc3VicGFydCBvZiB0aGUgbWVzc2FnZQorICAgcGFzc2VkIHRvIDptZXRoOmBHZW5lcmF0b3IuZmxhdHRlbmAsIGlmIHRoZSBzdWJwYXJ0IGlzIG9mIG1haW4gdHlwZQorICAgOm1pbWV0eXBlOmB0ZXh0YCwgcHJpbnQgdGhlIGRlY29kZWQgcGF5bG9hZCBvZiB0aGUgc3VicGFydCwgYW5kIGlmIHRoZSBtYWluCisgICB0eXBlIGlzIG5vdCA6bWltZXR5cGU6YHRleHRgLCBpbnN0ZWFkIG9mIHByaW50aW5nIGl0IGZpbGwgaW4gdGhlIHN0cmluZworICAgKmZtdCogdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFydCBhbmQgcHJpbnQgdGhlIHJlc3VsdGluZworICAgZmlsbGVkLWluIHN0cmluZy4KKworICAgVG8gZmlsbCBpbiAqZm10KiwgZXhlY3V0ZSBgYGZtdCAlIHBhcnRfaW5mb2BgLCB3aGVyZSBgYHBhcnRfaW5mb2BgCisgICBpcyBhIGRpY3Rpb25hcnkgY29tcG9zZWQgb2YgdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6CiAKICAgICogYGB0eXBlYGAgLS0gRnVsbCBNSU1FIHR5cGUgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCkBAIC0yMjUsMTUgKzI1OSwyMSBAQAogCiAgICAqIGBgZW5jb2RpbmdgYCAtLSBDb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIG9mIHRoZSBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnQKIAotICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yICpmbXQqIGlzIGBgTm9uZWBgLCBtZWFuaW5nIDo6CisgICBJZiAqZm10KiBpcyBgYE5vbmVgYCwgdXNlIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCAqZm10KjoKIAotICAgICAgW05vbi10ZXh0ICglKHR5cGUpcykgcGFydCBvZiBtZXNzYWdlIG9taXR0ZWQsIGZpbGVuYW1lICUoZmlsZW5hbWUpc10KKyAgICAgICJbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXSIKKworICAgT3B0aW9uYWwgKl9tYW5nbGVfZnJvbV8qIGFuZCAqbWF4aGVhZGVybGVuKiBhcmUgYXMgd2l0aCB0aGUKKyAgIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLgogCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gVGhpcyBzdGF0ZW1lbnQgYXNzdW1lcyB0aGF0IHlvdSB1c2UgdGhlIGFwcHJvcHJpYXRlIHNldHRpbmcgZm9yIHRoZQotICAgICAgIGBgdW5peGZyb21gYCBhcmd1bWVudCwgYW5kIHRoYXQgeW91IHNldCBtYXhoZWFkZXJsZW49MCAod2hpY2ggd2lsbAotICAgICAgIHByZXNlcnZlIHdoYXRldmVyIHRoZSBpbnB1dCBsaW5lIGxlbmd0aHMgd2VyZSkuICBJdCBpcyBhbHNvIG5vdCBzdHJpY3RseQotICAgICAgIHRydWUsIHNpbmNlIGluIG1hbnkgY2FzZXMgcnVucyBvZiB3aGl0ZXNwYWNlIGluIGhlYWRlcnMgYXJlIGNvbGxhcHNlZAotICAgICAgIGludG8gc2luZ2xlIGJsYW5rcy4gIFRoZSBsYXR0ZXIgaXMgYSBidWcgdGhhdCB3aWxsIGV2ZW50dWFsbHkgYmUgZml4ZWQuCisuLiBbI10gVGhpcyBzdGF0ZW1lbnQgYXNzdW1lcyB0aGF0IHlvdSB1c2UgdGhlIGFwcHJvcHJpYXRlIHNldHRpbmcgZm9yCisgICAgICAgYGB1bml4ZnJvbWBgLCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gOm1vZDpgcG9saWN5YCBzZXR0aW5ncyBjYWxsaW5nIGZvcgorICAgICAgIGF1dG9tYXRpYyBhZGp1c3RtZW50cyAoZm9yIGV4YW1wbGUsCisgICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnJlZm9sZF9zb3VyY2VgIG11c3QgYmUgYGBub25lYGAsIHdoaWNoIGlzCisgICAgICAgKm5vdCogdGhlIGRlZmF1bHQpLiAgSXQgaXMgYWxzbyBub3QgMTAwJSB0cnVlLCBzaW5jZSBpZiB0aGUgbWVzc2FnZQorICAgICAgIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIFJGQyBzdGFuZGFyZHMgb2NjYXNpb25hbGx5IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgIGV4YWN0IG9yaWdpbmFsIHRleHQgaXMgbG9zdCBkdXJpbmcgcGFyc2luZyBlcnJvciByZWNvdmVyeS4gIEl0IGlzIGEgZ29hbAorICAgICAgIHRvIGZpeCB0aGVzZSBsYXR0ZXIgZWRnZSBjYXNlcyB3aGVuIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKaW5kZXggZTk0ODM3Yy4uMDcxNTJjMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CkBAIC04LDYgKzgsMTQgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBjdXJyZW50IEFQSQorZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mIGhlYWRlcnMgaXMgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IHRoZQorZGljdGlvbmFyeS1saWtlIEFQSSBvZiB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLiAgSW4KK2FkZGl0aW9uIHRvIHVzZXMgaW4gbGVnYWN5IGNvZGUsIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VmdWwgaW4gYXBwbGljYXRpb25zIHRoYXQKK25lZWQgdG8gY29tcGxldGVseSBjb250cm9sIHRoZSBjaGFyYWN0ZXIgc2V0cyB1c2VkIHdoZW4gZW5jb2RpbmcgaGVhZGVycy4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiA6cmZjOmAyODIyYCBpcyB0aGUgYmFzZSBzdGFuZGFyZCB0aGF0IGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIGVtYWlsIG1lc3NhZ2VzLgogSXQgZGVyaXZlcyBmcm9tIHRoZSBvbGRlciA6cmZjOmA4MjJgIHN0YW5kYXJkIHdoaWNoIGNhbWUgaW50byB3aWRlc3ByZWFkIHVzZSBhdAogYSB0aW1lIHdoZW4gbW9zdCBlbWFpbCB3YXMgY29tcG9zZWQgb2YgQVNDSUkgY2hhcmFjdGVycyBvbmx5LiAgOnJmYzpgMjgyMmAgaXMgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CmluZGV4IDA3MDdiZDguLjJjODMwY2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKQEAgLTcsMjAgKzcsMTIgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLSAgIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weWAKIAotLi4gbm90ZTo6Ci0KLSAgIFRoZSBoZWFkZXJyZWdpc3RyeSBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KKwogSGVhZGVycyBhcmUgcmVwcmVzZW50ZWQgYnkgY3VzdG9taXplZCBzdWJjbGFzc2VzIG9mIDpjbGFzczpgc3RyYC4gIFRoZQogcGFydGljdWxhciBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhIGdpdmVuIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQogOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnlgIG9mIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBpbgpAQCAtODYsMTAgKzc4LDExIEBACiAgICAuLiBtZXRob2Q6OiBmb2xkKCosIHBvbGljeSkKIAogICAgICAgUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmxpbmVzZXBgCi0gICAgICBjaGFyYWN0ZXJzIGFzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBmb2xkIHRoZSBoZWFkZXIgYWNjb3JkaW5nCi0gICAgICB0byAqcG9saWN5Ki4gIEEgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBvZgotICAgICAgYGA4Yml0YGAgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGA3Yml0YGAsIHNpbmNlIHN0cmluZ3MKLSAgICAgIG1heSBub3QgY29udGFpbiBiaW5hcnkgZGF0YS4KKyAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcgdG8KKyAgICAgICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mIGBgOGJpdGBgIHdpbGwgYmUKKyAgICAgIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2UgaGVhZGVycyBtYXkgbm90IGNvbnRhaW4gYXJiaXRyYXJ5CisgICAgICBiaW5hcnkgZGF0YS4gIElmIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgRmFsc2VgYCwKKyAgICAgIG5vbi1BU0NJSSBkYXRhIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZC4KIAogCiAgICBgYEJhc2VIZWFkZXJgYCBieSBpdHNlbGYgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIGEgaGVhZGVyIG9iamVjdC4gIEl0CkBAIC0xMDYsNyArOTksNyBAQAogICAgdmFsdWVzIGZvciBhdCBsZWFzdCB0aGUga2V5cyBgYGRlY29kZWRgYCBhbmQgYGBkZWZlY3RzYGAuICBgYGRlY29kZWRgYAogICAgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBoZWFkZXIgKHRoYXQgaXMsIHRoZSBoZWFkZXIgdmFsdWUgZnVsbHkKICAgIGRlY29kZWQgdG8gdW5pY29kZSkuICBUaGUgcGFyc2UgbWV0aG9kIHNob3VsZCBhc3N1bWUgdGhhdCAqc3RyaW5nKiBtYXkKLSAgIGNvbnRhaW4gdHJhbnNwb3J0IGVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKKyAgIGNvbnRhaW4gY29udGVudC10cmFuc2Zlci1lbmNvZGVkIHBhcnRzLCBidXQgc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgYWxsIHZhbGlkCiAgICB1bmljb2RlIGNoYXJhY3RlcnMgYXMgd2VsbCBzbyB0aGF0IGl0IGNhbiBwYXJzZSB1bi1lbmNvZGVkIGhlYWRlciB2YWx1ZXMuCiAKICAgIGBgQmFzZUhlYWRlcmBgJ3MgYGBfX25ld19fYGAgdGhlbiBjcmVhdGVzIHRoZSBoZWFkZXIgaW5zdGFuY2UsIGFuZCBjYWxscyBpdHMKQEAgLTEzNSwxMSArMTI4LDEwIEBACiAgICBtZWNoYW5pc20gZm9yIGVuY29kaW5nIG5vbi1BU0NJSSB0ZXh0IGFzIEFTQ0lJIGNoYXJhY3RlcnMgd2l0aGluIGEgaGVhZGVyCiAgICB2YWx1ZS4gIFdoZW4gYSAqdmFsdWUqIGNvbnRhaW5pbmcgZW5jb2RlZCB3b3JkcyBpcyBwYXNzZWQgdG8gdGhlCiAgICBjb25zdHJ1Y3RvciwgdGhlIGBgVW5zdHJ1Y3R1cmVkSGVhZGVyYGAgcGFyc2VyIGNvbnZlcnRzIHN1Y2ggZW5jb2RlZCB3b3JkcwotICAgYmFjayBpbiB0byB0aGUgb3JpZ2luYWwgdW5pY29kZSwgZm9sbG93aW5nIHRoZSA6cmZjOmAyMDQ3YCBydWxlcyBmb3IKLSAgIHVuc3RydWN0dXJlZCB0ZXh0LiAgVGhlIHBhcnNlciB1c2VzIGhldXJpc3RpY3MgdG8gYXR0ZW1wdCB0byBkZWNvZGUgY2VydGFpbgotICAgbm9uLWNvbXBsaWFudCBlbmNvZGVkIHdvcmRzLiAgRGVmZWN0cyBhcmUgcmVnaXN0ZXJlZCBpbiBzdWNoIGNhc2VzLCBhcyB3ZWxsCi0gICBhcyBkZWZlY3RzIGZvciBpc3N1ZXMgc3VjaCBhcyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBlbmNvZGVkIHdvcmRzIG9yCi0gICB0aGUgbm9uLWVuY29kZWQgdGV4dC4KKyAgIGludG8gdW5pY29kZSwgZm9sbG93aW5nIHRoZSA6cmZjOmAyMDQ3YCBydWxlcyBmb3IgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUKKyAgIHBhcnNlciB1c2VzIGhldXJpc3RpY3MgdG8gYXR0ZW1wdCB0byBkZWNvZGUgY2VydGFpbiBub24tY29tcGxpYW50IGVuY29kZWQKKyAgIHdvcmRzLiAgRGVmZWN0cyBhcmUgcmVnaXN0ZXJlZCBpbiBzdWNoIGNhc2VzLCBhcyB3ZWxsIGFzIGRlZmVjdHMgZm9yIGlzc3VlcworICAgc3VjaCBhcyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBlbmNvZGVkIHdvcmRzIG9yIHRoZSBub24tZW5jb2RlZCB0ZXh0LgogCiAgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KIApAQCAtMjEzLDE1ICsyMDUsMTYgQEAKICAgICAgIHRoZSBsaXN0IG9mIGFkZHJlc3NlcyBpcyAiZmxhdHRlbmVkIiBpbnRvIGEgb25lIGRpbWVuc2lvbmFsIGxpc3QpLgogCiAgICBUaGUgYGBkZWNvZGVkYGAgdmFsdWUgb2YgdGhlIGhlYWRlciB3aWxsIGhhdmUgYWxsIGVuY29kZWQgd29yZHMgZGVjb2RlZCB0bwotICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvIHVuaWNvZGUuICBUaGUKLSAgIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZSA6Y2xhc3M6YHN0cmAgdmFsdWUgb2YKLSAgIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsICdgYC4KKyAgIHVuaWNvZGUuICA6Y2xhc3M6YH5lbmNvZGluZ3MuaWRuYWAgZW5jb2RlZCBkb21haW4gbmFtZXMgYXJlIGFsc28gZGVjb2RlZCB0bworICAgdW5pY29kZS4gIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBpcyBzZXQgYnkgOmF0dHI6YH5zdHIuam9pbmBcIGluZyB0aGUKKyAgIDpjbGFzczpgc3RyYCB2YWx1ZSBvZiB0aGUgZWxlbWVudHMgb2YgdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIHdpdGggYGAnLAorICAgJ2BgLgogCiAgICBBIGxpc3Qgb2YgOmNsYXNzOmAuQWRkcmVzc2AgYW5kIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGluIGFueSBjb21iaW5hdGlvbgogICAgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBhbiBhZGRyZXNzIGhlYWRlci4gIGBgR3JvdXBgYCBvYmplY3RzIHdob3NlCiAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIGBgTm9uZWBgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2luZ2xlIGFkZHJlc3Nlcywgd2hpY2gKICAgIGFsbG93cyBhbiBhZGRyZXNzIGxpc3QgdG8gYmUgY29waWVkIHdpdGggZ3JvdXBzIGludGFjdCBieSB1c2luZyB0aGUgbGlzdAotICAgb2J0YWluZWQgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCisgICBvYnRhaW5lZCBmcm9tIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KIAogCiAuLiBjbGFzczo6IFNpbmdsZUFkZHJlc3NIZWFkZXIKQEAgLTI2Nyw3ICsyNjAsNyBAQAogCiAuLiBjbGFzczo6IFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyCiAKLSAgICBNT01FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCisgICAgTUlNRSBoZWFkZXJzIGFsbCBzdGFydCB3aXRoIHRoZSBwcmVmaXggJ0NvbnRlbnQtJy4gIEVhY2ggc3BlY2lmaWMgaGVhZGVyIGhhcwogICAgIGEgY2VydGFpbiB2YWx1ZSwgZGVzY3JpYmVkIHVuZGVyIHRoZSBjbGFzcyBmb3IgdGhhdCBoZWFkZXIuICBTb21lIGNhbgogICAgIGFsc28gdGFrZSBhIGxpc3Qgb2Ygc3VwcGxlbWVudGFsIHBhcmFtZXRlcnMsIHdoaWNoIGhhdmUgYSBjb21tb24gZm9ybWF0LgogICAgIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgYmFzZSBmb3IgYWxsIHRoZSBNSU1FIGhlYWRlcnMgdGhhdCB0YWtlIHBhcmFtZXRlcnMuCkBAIC00NTQsMyArNDQ3LDkgQEAKICAgICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgbm9uZSBhbmQgdGhlcmUgaXMgYSBzaW5nbGUgYGBBZGRyZXNzYGAgaW4gdGhlCiAgICAgICBgYGFkZHJlc3Nlc2BgIGxpc3QsIHRoZSBgYHN0cmBgIHZhbHVlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGBgc3RyYGAgb2YKICAgICAgIHRoYXQgc2luZ2xlIGBgQWRkcmVzc2BgLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CmluZGV4IDI5MDc5NzUuLjMyODUyZTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CkBAIC0zLDkxICszLDEwMiBAQAogCiAuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCiAgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcy4KKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPiwKKyAgICAgICAgICAgICAgICAgICBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+CiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL21lc3NhZ2UucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZSBjZW50cmFsIGNsYXNzIGluIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzcywKLWltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvciB0aGUKLTptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yCi1zZXR0aW5nIGFuZCBxdWVyeWluZyBoZWFkZXIgZmllbGRzLCBhbmQgZm9yIGFjY2Vzc2luZyBtZXNzYWdlIGJvZGllcy4KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLUNvbmNlcHR1YWxseSwgYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kICpwYXlsb2FkcyouCi1IZWFkZXJzIGFyZSA6cmZjOmAyODIyYCBzdHlsZSBmaWVsZCBuYW1lcyBhbmQgdmFsdWVzIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZAotdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uIGlzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZQotb3IgdGhlIGZpZWxkIHZhbHVlLgorVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKK2NsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuICBJdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IKK3RoZSA6bW9kOmBlbWFpbGAgb2JqZWN0IG1vZGVsLiAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBjb3JlCitmdW5jdGlvbmFsaXR5IGZvciBzZXR0aW5nIGFuZCBxdWVyeWluZyBoZWFkZXIgZmllbGRzLCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UKK2JvZGllcywgYW5kIGZvciBjcmVhdGluZyBvciBtb2RpZnlpbmcgc3RydWN0dXJlZCBtZXNzYWdlcy4KIAotSGVhZGVycyBhcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcgZm9ybSBidXQgYXJlIG1hdGNoZWQKLWNhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwotdGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSBwYXlsb2FkIGlzIGVpdGhlciBhIHN0cmluZwotaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cyBvciBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGZvcgotTUlNRSBjb250YWluZXIgZG9jdW1lbnRzIChlLmcuIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQKLTptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKS4KK0FuIGVtYWlsIG1lc3NhZ2UgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCBhICpwYXlsb2FkKiAod2hpY2ggaXMgYWxzbyByZWZlcnJlZAordG8gYXMgdGhlICpjb250ZW50KikuICBIZWFkZXJzIGFyZSA6cmZjOmA1MzIyYCBvciA6cmZjOmA2NTMyYCBzdHlsZSBmaWVsZCBuYW1lcworYW5kIHZhbHVlcywgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kIHZhbHVlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbgoraXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIHRoZSBmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhCitzaW1wbGUgdGV4dCBtZXNzYWdlLCBvciBhIGJpbmFyeSBvYmplY3QsIG9yIGEgc3RydWN0dXJlZCBzZXF1ZW5jZSBvZgorc3ViLW1lc3NhZ2VzIGVhY2ggd2l0aCB0aGVpciBvd24gc2V0IG9mIGhlYWRlcnMgYW5kIHRoZWlyIG93biBwYXlsb2FkLiAgVGhlCitsYXR0ZXIgdHlwZSBvZiBwYXlsb2FkIGlzIGluZGljYXRlZCBieSB0aGUgbWVzc2FnZSBoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcworOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgogCi06Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgcHJvdmlkZSBhIG1hcHBpbmcgc3R5bGUgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCi1tZXNzYWdlIGhlYWRlcnMsIGFuZCBhbiBleHBsaWNpdCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBib3RoIHRoZSBoZWFkZXJzIGFuZAotdGhlIHBheWxvYWQuICBJdCBwcm92aWRlcyBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBnZW5lcmF0aW5nIGEgZmxhdCB0ZXh0Ci1yZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3QgdHJlZSwgZm9yIGFjY2Vzc2luZyBjb21tb25seSB1c2VkIGhlYWRlcgotcGFyYW1ldGVycywgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nIG92ZXIgdGhlIG9iamVjdCB0cmVlLgorVGhlIGNvbmNlcHR1YWwgbW9kZWwgcHJvdmlkZWQgYnkgYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdCBpcyB0aGF0IG9mIGFuCitvcmRlcmVkIGRpY3Rpb25hcnkgb2YgaGVhZGVycyBjb3VwbGVkIHdpdGggYSAqcGF5bG9hZCogdGhhdCByZXByZXNlbnRzIHRoZQorOnJmYzpgNTMyMmAgYm9keSBvZiB0aGUgbWVzc2FnZSwgd2hpY2ggbWlnaHQgYmUgYSBsaXN0IG9mIHN1Yi1gYEVtYWlsTWVzc2FnZWBgCitvYmplY3RzLiAgSW4gYWRkaXRpb24gdG8gdGhlIG5vcm1hbCBkaWN0aW9uYXJ5IG1ldGhvZHMgZm9yIGFjY2Vzc2luZyB0aGUgaGVhZGVyCituYW1lcyBhbmQgdmFsdWVzLCB0aGVyZSBhcmUgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHNwZWNpYWxpemVkIGluZm9ybWF0aW9uIGZyb20KK3RoZSBoZWFkZXJzIChmb3IgZXhhbXBsZSB0aGUgTUlNRSBjb250ZW50IHR5cGUpLCBmb3Igb3BlcmF0aW5nIG9uIHRoZSBwYXlsb2FkLAorZm9yIGdlbmVyYXRpbmcgYSBzZXJpYWxpemVkIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZworb3ZlciB0aGUgb2JqZWN0IHRyZWUuCiAKLUhlcmUgYXJlIHRoZSBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzOgorVGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYCBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlIGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlcgorbmFtZXMsIHdoaWNoIG11c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncword2l0aCBzb21lIGV4dHJhIG1ldGhvZHMuICBIZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZworZm9ybSwgYnV0IGZpZWxkIG5hbWVzIGFyZSBtYXRjaGVkIGNhc2UtaW5zZW5zaXRpdmVseS4gIFVubGlrZSBhIHJlYWwgZGljdCwKK3RoZXJlIGlzIGFuIG9yZGVyaW5nIHRvIHRoZSBrZXlzLCBhbmQgdGhlcmUgY2FuIGJlIGR1cGxpY2F0ZSBrZXlzLiAgQWRkaXRpb25hbAorbWV0aG9kcyBhcmUgcHJvdmlkZWQgZm9yIHdvcmtpbmcgd2l0aCBoZWFkZXJzIHRoYXQgaGF2ZSBkdXBsaWNhdGUga2V5cy4KKworVGhlICpwYXlsb2FkKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCBpbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZQorb2JqZWN0cywgb3IgYSBsaXN0IG9mIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzLCBmb3IgTUlNRSBjb250YWluZXIKK2RvY3VtZW50cyBzdWNoIGFzIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAKK21lc3NhZ2Ugb2JqZWN0cy4KIAogCi0uLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorLi4gY2xhc3M6OiBFbWFpbE1lc3NhZ2UocG9saWN5PWRlZmF1bHQpCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCi0gICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZQorICAgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQorICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCisgICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKKyAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCiAgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSkKIAorICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsCisgICAgICAqdW5peGZyb20qIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkCisgICAgICBzdHJpbmcuICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5CisgICAgICB3aXRoIHRoZSBiYXNlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgKm1heGhlYWRlcmxlbiogaXMKKyAgICAgIGFjY2VwdGVkLCBidXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIHdoaWNoIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGluZQorICAgICAgbGVuZ3RoIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5tYXhfbGluZV9sZW5ndGhgIG9mIHRoZSBwb2xpY3kuICBUaGUKKyAgICAgICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZAorICAgICAgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZQorICAgICAgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUKKyAgICAgIHBhc3NlZCB0byB0aGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAuCiAKLSAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPTAsIHBvbGljeT1Ob25lKQorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCi0gICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCi0gICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCi0gICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91Ci0gICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCi0gICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCi0gICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgotICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCi0gICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBiZSB0aGUKKyAgICAgIG1vc3QgdXNlZnVsIHdheSB0byBzZXJpYWxpemUgbWVzc2FnZXMgaW4geW91ciBhcHBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZgorICAgICAgeW91IGFyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgbWVzc2FnZXMuICBTZWUKKyAgICAgIDpjbGFzczpgZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgZm9yIGEgbW9yZSBmbGV4aWJsZSBBUEkgZm9yCisgICAgICBzZXJpYWxpemluZyBtZXNzYWdlcy4gIE5vdGUgYWxzbyB0aGF0IHRoaXMgbWV0aG9kIGlzIHJlc3RyaWN0ZWQgdG8KKyAgICAgIHByb2R1Y2luZyBtZXNzYWdlcyBzZXJpYWxpemVkIGFzICI3IGJpdCBjbGVhbiIgd2hlbgorICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgotCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKLSAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcwotICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcwotICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKLSAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCi0gICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCi0gICAgICAgICBmcCA9IFN0cmluZ0lPKCkKLSAgICAgICAgIGcgPSBHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCi0gICAgICAgICBnLmZsYXR0ZW4obXNnKQotICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKLQotICAgICAgSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5zIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90IGVuY29kZWQgYWNjb3JkaW5nCi0gICAgICB0byBSRkMgc3RhbmRhcmRzLCB0aGUgbm9uLWNvbXBsaWFudCBkYXRhIHdpbGwgYmUgcmVwbGFjZWQgYnkgdW5pY29kZQotICAgICAgInVua25vd24gY2hhcmFjdGVyIiBjb2RlIHBvaW50cy4gIChTZWUgYWxzbyA6bWV0aDpgLmFzX2J5dGVzYCBhbmQKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuKQotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuICptYXhoZWFkZXJsZW4qCisgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkIHdhcyBjaGFuZ2VkIGZyb20gZGVmYXVsdGluZyB0byAwIHRvIGRlZmF1bHRpbmcKKyAgICAgICAgIHRvIHRoZSB2YWx1ZSBvZiAqbWF4X2xpbmVfbGVuZ3RoKiBmcm9tIHRoZSBwb2xpY3kuCiAKIAogICAgLi4gbWV0aG9kOjogX19zdHJfXygpCiAKLSAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19zdHJpbmcoKWAuICBBbGxvd3MgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorICAgICAgRXF1aXZhbGVudCB0byBgYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpYC4gIEFsbG93cworICAgICAgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGluIGEKKyAgICAgIHJlYWRhYmxlIGZvcm1hdC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlIG1ldGhvZCB3YXMgY2hhbmdlZCB0byB1c2UgYGB1dGY4PVRydWVgYCwKKyAgICAgICAgIHRodXMgcHJvZHVjaW5nIGFuIDpyZmM6YDY1MzFgLWxpa2UgbWVzc2FnZSByZXByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZgorICAgICAgICAgYmVpbmcgYSBkaXJlY3QgYWxpYXMgZm9yIDptZXRoOmBhc19zdHJpbmdgLgogCiAKICAgIC4uIG1ldGhvZDo6IGFzX2J5dGVzKHVuaXhmcm9tPUZhbHNlLCBwb2xpY3k9Tm9uZSkKQEAgLTk4LDUyICsxMDksNDIgQEAKICAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCiAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKICAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUKLSAgICAgIGBgQnl0ZXNHZW5lcmF0b3JgYC4KKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuCiAKLSAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgotICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCi0gICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICAgICBpZiBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYQorICAgICAgc3RyaW5nIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgogCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKLSAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcwotICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcwotICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LgotICAgICAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi0gICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgQnl0ZXNHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gQnl0ZXNJTygpCi0gICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCi0gICAgICAgICBnLmZsYXR0ZW4obXNnKQotICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBiZSB0aGUKKyAgICAgIG1vc3QgdXNlZnVsIHdheSB0byBzZXJpYWxpemUgbWVzc2FnZXMgaW4geW91ciBhcHBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZgorICAgICAgeW91IGFyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgbWVzc2FnZXMuICBTZWUKKyAgICAgIDpjbGFzczpgZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCiAKICAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKLSAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzX211bHRpcGFydCgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaXMgYSBsaXN0IG9mIHN1Yi1cCi0gICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgorICAgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgogICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYEZhbHNlYGAsIHRoZSBwYXlsb2FkIHNob3VsZCBiZSBhIHN0cmluZwotICAgICAgb2JqZWN0LiAgKE5vdGUgdGhhdCA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QKLSAgICAgIG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwKLSAgICAgIHJldHVybiB0aGUgYGBUcnVlYGAuICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAKLSAgICAgIHdoZW4gdGhlIDpjbGFzczpgTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuKQorICAgICAgb2JqZWN0ICh3aGljaCBtaWdodCBiZSBhIENURSBlbmNvZGVkIGJpbmFyeSBwYXlsb2FkKS4gIE5vdGUgdGhhdAorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAorICAgICAgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsIHJldHVybiB0aGUgYGBUcnVlYGAuCisgICAgICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYCB3aGVuIHRoZQorICAgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldF91bml4ZnJvbSh1bml4ZnJvbSkKIAotICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhIHN0cmluZy4KKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYQorICAgICAgc3RyaW5nLiAgKFNlZSA6Y2xhc3M6YH5tYWlsYm94Lm1ib3hNZXNzYWdlYCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbiBvZgorICAgICAgdGhpcyBoZWFkZXIuKQogCiAKICAgIC4uIG1ldGhvZDo6IGdldF91bml4ZnJvbSgpCkBAIC0xNTIsMTA5ICsxNTMsMjMgQEAKICAgICAgIGVudmVsb3BlIGhlYWRlciB3YXMgbmV2ZXIgc2V0LgogCiAKLSAgIC4uIG1ldGhvZDo6IGF0dGFjaChwYXlsb2FkKQotCi0gICAgICBBZGQgdGhlIGdpdmVuICpwYXlsb2FkKiB0byB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCBtdXN0IGJlIGBgTm9uZWBgIG9yCi0gICAgICBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGJlZm9yZSB0aGUgY2FsbC4gQWZ0ZXIgdGhlIGNhbGwsIHRoZQotICAgICAgcGF5bG9hZCB3aWxsIGFsd2F5cyBiZSBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLiAgSWYgeW91IHdhbnQgdG8KLSAgICAgIHNldCB0aGUgcGF5bG9hZCB0byBhIHNjYWxhciBvYmplY3QgKGUuZy4gYSBzdHJpbmcpLCB1c2UKLSAgICAgIDptZXRoOmBzZXRfcGF5bG9hZGAgaW5zdGVhZC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGF5bG9hZChpPU5vbmUsIGRlY29kZT1GYWxzZSkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIHdpbGwgYmUgYSBsaXN0IG9mCi0gICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYFRydWVgYCwgb3IgYQotICAgICAgc3RyaW5nIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgLiAgSWYgdGhlIHBheWxvYWQgaXMgYSBsaXN0Ci0gICAgICBhbmQgeW91IG11dGF0ZSB0aGUgbGlzdCBvYmplY3QsIHlvdSBtb2RpZnkgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHBsYWNlLgotCi0gICAgICBXaXRoIG9wdGlvbmFsIGFyZ3VtZW50ICppKiwgOm1ldGg6YGdldF9wYXlsb2FkYCB3aWxsIHJldHVybiB0aGUgKmkqLXRoCi0gICAgICBlbGVtZW50IG9mIHRoZSBwYXlsb2FkLCBjb3VudGluZyBmcm9tIHplcm8sIGlmIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzCi0gICAgICBgYFRydWVgYC4gIEFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcyBsZXNzIHRoYW4gMCBvcgotICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHBheWxvYWQuICBJZiB0aGUKLSAgICAgIHBheWxvYWQgaXMgYSBzdHJpbmcgKGkuZS4gIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYCkgYW5kICppKiBpcwotICAgICAgZ2l2ZW4sIGEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAgIE9wdGlvbmFsICpkZWNvZGUqIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBheWxvYWQgc2hvdWxkIGJlCi0gICAgICBkZWNvZGVkIG9yIG5vdCwgYWNjb3JkaW5nIHRvIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlci4gV2hlbiBgYFRydWVgYCBhbmQgdGhlIG1lc3NhZ2UgaXMgbm90IGEgbXVsdGlwYXJ0LCB0aGUgcGF5bG9hZCB3aWxsCi0gICAgICBiZSBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYC4KLSAgICAgIElmIHNvbWUgb3RoZXIgZW5jb2RpbmcgaXMgdXNlZCwgb3IgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCi0gICAgICBoZWFkZXIgaXMgbWlzc2luZywgdGhlIHBheWxvYWQgaXMKLSAgICAgIHJldHVybmVkIGFzLWlzICh1bmRlY29kZWQpLiAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBiaW5hcnkKLSAgICAgIGRhdGEuICBJZiB0aGUgbWVzc2FnZSBpcyBhIG11bHRpcGFydCBhbmQgdGhlICpkZWNvZGUqIGZsYWcgaXMgYGBUcnVlYGAsCi0gICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90Ci0gICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0Ci0gICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncwotICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgotCi0gICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCi0gICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLAotICAgICAgZm9yIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQsIGFuIGF0dGVtcHQgaXMgbWFkZQotICAgICAgdG8gZGVjb2RlIHRoZSBvcmlnaW5hbCBieXRlcyB1c2luZyB0aGUgYGBjaGFyc2V0YGAgc3BlY2lmaWVkIGJ5IHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCB1c2luZyB0aGUgYGByZXBsYWNlYGAgZXJyb3IgaGFuZGxlci4KLSAgICAgIElmIG5vIGBgY2hhcnNldGBgIGlzIHNwZWNpZmllZCwgb3IgaWYgdGhlIGBgY2hhcnNldGBgIGdpdmVuIGlzIG5vdAotICAgICAgcmVjb2duaXplZCBieSB0aGUgZW1haWwgcGFja2FnZSwgdGhlIGJvZHkgaXMgZGVjb2RlZCB1c2luZyB0aGUgZGVmYXVsdAotICAgICAgQVNDSUkgY2hhcnNldC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCi0KLSAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKLSAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKLSAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KLQotICAgLi4gbWV0aG9kOjogc2V0X2NoYXJzZXQoY2hhcnNldCkKLQotICAgICAgU2V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBwYXlsb2FkIHRvICpjaGFyc2V0Kiwgd2hpY2ggY2FuIGVpdGhlciBiZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIChzZWUgOm1vZDpgZW1haWwuY2hhcnNldGApLCBhCi0gICAgICBzdHJpbmcgbmFtaW5nIGEgY2hhcmFjdGVyIHNldCwgb3IgYGBOb25lYGAuICBJZiBpdCBpcyBhIHN0cmluZywgaXQgd2lsbAotICAgICAgYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZS4gIElmICpjaGFyc2V0KgotICAgICAgaXMgYGBOb25lYGAsIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgKHRoZSBtZXNzYWdlIHdpbGwgbm90IGJlIG90aGVyd2lzZQotICAgICAgbW9kaWZpZWQpLiAgQW55dGhpbmcgZWxzZSB3aWxsIGdlbmVyYXRlIGEgOmV4YzpgVHlwZUVycm9yYC4KLQotICAgICAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIG9uZSB3aWxsIGJlCi0gICAgICBhZGRlZC4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb25lCi0gICAgICB3aWxsIGJlIGFkZGVkIHdpdGggYSB2YWx1ZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLiAgV2hldGhlciB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbHJlYWR5IGV4aXN0cyBvciBub3QsIGl0cyBgYGNoYXJzZXRgYAotICAgICAgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHRvICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0Ki4gICBJZgotICAgICAgKmNoYXJzZXQuaW5wdXRfY2hhcnNldCogYW5kICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0KiBkaWZmZXIsIHRoZSBwYXlsb2FkCi0gICAgICB3aWxsIGJlIHJlLWVuY29kZWQgdG8gdGhlICpvdXRwdXRfY2hhcnNldCouICBJZiB0aGVyZSBpcyBubyBleGlzdGluZwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciwgdGhlbiB0aGUgcGF5bG9hZCB3aWxsIGJlCi0gICAgICB0cmFuc2Zlci1lbmNvZGVkLCBpZiBuZWVkZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAsIGFuZCBhIGhlYWRlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZQotICAgICAgd2lsbCBiZSBhZGRlZC4gIElmIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcgotICAgICAgYWxyZWFkeSBleGlzdHMsIHRoZSBwYXlsb2FkIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBjb3JyZWN0bHkgZW5jb2RlZAotICAgICAgdXNpbmcgdGhhdCA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgYW5kIGlzIG5vdCBtb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXQoKQotCi0gICAgICBSZXR1cm4gdGhlIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgbWVzc2FnZSdzIHBheWxvYWQuCi0KLSAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCi0gICBtZXNzYWdlJ3MgOnJmYzpgMjgyMmAgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCB0aGUgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKICAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKICAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQogICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCi0gICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAotICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAotICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgotICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKyAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGFuIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgb2JqZWN0LCBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlCisgICBvcmlnaW5hbCBtZXNzYWdlLCBvciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkKKyAgIGhlYWRlciBkZWxldGVkIGFuZCB0aGVuIHJlLWFkZGVkIGlzIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZQorICAgaGVhZGVyIGxpc3QuCiAKLSAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQgbWF4aW1hbAotICAgY29udmVuaWVuY2UuCisgICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkCisgICBjb252ZW5pZW5jZSBpbiB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLgogCiAgICBOb3RlIHRoYXQgaW4gYWxsIGNhc2VzLCBhbnkgZW52ZWxvcGUgaGVhZGVyIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90CiAgICBpbmNsdWRlZCBpbiB0aGUgbWFwcGluZyBpbnRlcmZhY2UuCiAKLSAgIEluIGEgbW9kZWwgZ2VuZXJhdGVkIGZyb20gYnl0ZXMsIGFueSBoZWFkZXIgdmFsdWVzIHRoYXQgKGluIGNvbnRyYXZlbnRpb24gb2YKLSAgIHRoZSBSRkNzKSBjb250YWluIG5vbi1BU0NJSSBieXRlcyB3aWxsLCB3aGVuIHJldHJpZXZlZCB0aHJvdWdoIHRoaXMKLSAgIGludGVyZmFjZSwgYmUgcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0cyB3aXRoCi0gICBhIGNoYXJzZXQgb2YgYHVua25vd24tOGJpdGAuCi0KIAogICAgLi4gbWV0aG9kOjogX19sZW5fXygpCiAKQEAgLTI2NCw4ICsxNzksOCBAQAogICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKG5hbWUpCiAKICAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgYSBmaWVsZCBuYW1lZCAqbmFtZSouIE1hdGNoaW5nIGlzCi0gICAgICBkb25lIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgY29sb24uCi0gICAgICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLCBlLmcuOjoKKyAgICAgIGRvbmUgd2l0aG91dCByZWdhcmQgdG8gY2FzZSBhbmQgKm5hbWUqIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nCisgICAgICBjb2xvbi4gIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IuICBGb3IgZXhhbXBsZTo6CiAKICAgICAgICAgICAgaWYgJ21lc3NhZ2UtaWQnIGluIG15TWVzc2FnZToKICAgICAgICAgICAgICAgcHJpbnQoJ01lc3NhZ2UtSUQ6JywgbXlNZXNzYWdlWydtZXNzYWdlLWlkJ10pCkBAIC0yNzMsMjAgKzE4OCwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQogCi0gICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZQorICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIGRvZXMgbm90IGluY2x1ZGUgdGhlCiAgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCiAgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgogCiAgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncwogICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcwogICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKLSAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorICAgICAgZXh0YW50IGhlYWRlcnMgbmFtZWQgKm5hbWUqLgorCisgICAgICBVc2luZyB0aGUgc3RhbmRhcmQgKG5vbi1gYGNvbXBhdDMyYGApIHBvbGljaWVzLCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYW4KKyAgICAgIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBlbWFpbC5oZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyYC4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3NldGl0ZW1fXyhuYW1lLCB2YWwpCiAKICAgICAgIEFkZCBhIGhlYWRlciB0byB0aGUgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqIGFuZCB2YWx1ZSAqdmFsKi4gIFRoZQotICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGZpZWxkcy4KKyAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBoZWFkZXJzLgogCiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCiAgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCkBAIC0yOTUsNiArMjEzLDEzIEBACiAgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KICAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCiAKKyAgICAgIElmIHRoZSA6bW9kOmBwb2xpY3lgIGRlZmluZXMgY2VydGFpbiBoYWRlcnMgdG8gYmUgdW5pcXVlIChhcyB0aGUgc3RhbmRhcmQKKyAgICAgIHBvbGljaWVzIGRvKSwgdGhpcyBtZXRob2QgbWF5IHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBhbiBhdHRlbXB0CisgICAgICBpcyBtYWRlIHRvIGFzc2lnbiBhIHZhbHVlIHRvIHN1Y2ggYSBoZWFkZXIgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuICBUaGlzCisgICAgICBiZWhhdmlvciBpcyBpbnRlbnRpb25hbCBmb3IgY29uc2lzdGVuY3kncyBzYWtlLCBidXQgZG8gbm90IGRlcGVuZCBvbiBpdAorICAgICAgYXMgd2UgbWF5IGNob29zZSB0byBtYWtlIHN1Y2ggYXNzaWdubWVudHMgZG8gYW4gYXV0b21hdGljIGRlbGV0aW9uIG9mIHRoZQorICAgICAgZXhpc3RpbmcgaGVhZGVyIGluIHRoZSBmdXR1cmUuCisKIAogICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKIApAQCAtMzIzLDkgKzI0OCwxMCBAQAogCiAgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bwogICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCi0gICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKCpmYWlsb2JqKiBkZWZhdWx0cyB0byBgYE5vbmVgYCkuCiAKLSAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgbWV0aG9kczoKKworICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBoZWFkZXIgcmVsYXRlZCBtZXRob2RzOgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9hbGwobmFtZSwgZmFpbG9iaj1Ob25lKQpAQCAtMzQ2LDE3ICsyNzIsMTkgQEAKICAgICAgIHRha2VuIGFzIHRoZSBwYXJhbWV0ZXIgbmFtZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gZGFzaGVzIChzaW5jZQogICAgICAgZGFzaGVzIGFyZSBpbGxlZ2FsIGluIFB5dGhvbiBpZGVudGlmaWVycykuICBOb3JtYWxseSwgdGhlIHBhcmFtZXRlciB3aWxsCiAgICAgICBiZSBhZGRlZCBhcyBgYGtleT0idmFsdWUiYGAgdW5sZXNzIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQotICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCi0gICAgICBpdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlIGZvcm1hdAotICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZyBuYW1pbmcgdGhlCi0gICAgICBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbiB1c3VhbGx5IGJlIHNldAotICAgICAgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlciBwb3NzaWJpbGl0aWVzKSwKLSAgICAgIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSSBjb2RlIHBvaW50cy4gIElmCi0gICAgICBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQgdXNpbmcgYSBgYENIQVJTRVRgYAotICAgICAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKyAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLgogCi0gICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIHRoZSBjaGFyc2V0IGFuZCBsYW5ndWFnZSBtYXkKKyAgICAgIGJlIGV4cGxpY2l0bHkgY29udHJvbGxlZCBieSBzcGVjaWZ5aW5nIHRoZSB2YWx1ZSBhcyBhIHRocmVlIHR1cGxlIGluIHRoZQorICAgICAgZm9ybWF0IGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcKKyAgICAgIG5hbWluZyB0aGUgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4KKyAgICAgIHVzdWFsbHkgYmUgc2V0IHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIKKyAgICAgIHBvc3NpYmlsaXRpZXMpLCBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkKKyAgICAgIGNvZGUgcG9pbnRzLiAgSWYgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMKKyAgICAgIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0CisgICAgICB1c2luZyBhIGBgQ0hBUlNFVGBgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisKKyAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZTo6CiAKICAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCiAKQEAgLTM2NCwzNyArMjkyLDM1IEBACiAKICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgogCi0gICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorICAgICAgQW4gZXhhbXBsZSBvZiB0aGUgZXh0ZW5kZWQgaW50ZXJmYWNlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKIAotICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKLQotICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCi0KIAogICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKIAogICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0Ci0gICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCi0gICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZSBvZiB0aGUKKyAgICAgIG9yaWdpbmFsIGhlYWRlci4gIElmIG5vIG1hdGNoaW5nIGhlYWRlciBpcyBmb3VuZCwgcmFpc2UgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3R5cGUoKQogCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGNvZXJjZWQgdG8KLSAgICAgIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIHdhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHRoZSBkZWZhdWx0IHR5cGUgYXMgZ2l2ZW4KLSAgICAgIGJ5IDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYCB3aWxsIGJlIHJldHVybmVkLiAgU2luY2UgYWNjb3JkaW5nIHRvCi0gICAgICA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsIDptZXRoOmBnZXRfY29udGVudF90eXBlYAotICAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUsIGNvZXJjZWQgdG8gbG93ZXIgY2FzZSBvZiB0aGUgZm9ybQorICAgICAgOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgcmV0dXJuIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorICAgICAgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcworICAgICAgaW52YWxpZCwgcmV0dXJuIGBgdGV4dC9wbGFpbmBgLgogCi0gICAgICA6cmZjOmAyMDQ1YCBkZWZpbmVzIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gCi0gICAgICB1bmxlc3MgaXQgYXBwZWFycyBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4KLSAgICAgIHdoaWNoIGNhc2UgaXQgd291bGQgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sCi0gICAgICA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0IHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4KKyAgICAgIChBY2NvcmRpbmcgdG8gOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLAorICAgICAgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLiAgOnJmYzpgMjA0NWAgZGVmaW5lcworICAgICAgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgdW5sZXNzIGl0IGFwcGVhcnMKKyAgICAgIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkCisgICAgICBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKKyAgICAgIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdAorICAgICAgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLikKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9tYWludHlwZSgpCkBAIC00MjAsODEgKzM0Niw0MSBAQAogICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKIAogICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQotICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKLSAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCi0gICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKLSAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKLSAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCi0gICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCi0gICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcwotICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KLQotICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCi0gICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGFyYW0ocGFyYW0sIGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCi0KLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcidzIHBhcmFtZXRlcgotICAgICAgKnBhcmFtKiBhcyBhIHN0cmluZy4gIElmIHRoZSBtZXNzYWdlIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAotICAgICAgaGVhZGVyIG9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZAotICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlciogaWYgZ2l2ZW4sIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBoZWFkZXIgdG8gdXNlIGluc3RlYWQgb2YKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgotCi0gICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGNhbiBlaXRoZXIgYmUgYSBzdHJpbmcsIG9yIGEgMy10dXBsZSBpZiB0aGUgcGFyYW1ldGVyIHdhcyA6cmZjOmAyMjMxYAotICAgICAgZW5jb2RlZC4gIFdoZW4gaXQncyBhIDMtdHVwbGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIG9mIHRoZSBmb3JtCi0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAuICBOb3RlIHRoYXQgYm90aCBgYENIQVJTRVRgYCBhbmQKLSAgICAgIGBgTEFOR1VBR0VgYCBjYW4gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBgYFZBTFVFYGAKLSAgICAgIHRvIGJlIGVuY29kZWQgaW4gdGhlIGBgdXMtYXNjaWlgYCBjaGFyc2V0LiAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZQotICAgICAgYGBMQU5HVUFHRWBgLgotCi0gICAgICBJZiB5b3VyIGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSB3aGV0aGVyIHRoZSBwYXJhbWV0ZXIgd2FzIGVuY29kZWQgYXMgaW4KLSAgICAgIDpyZmM6YDIyMzFgLCB5b3UgY2FuIGNvbGxhcHNlIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYnkgY2FsbGluZwotICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWVgLCBwYXNzaW5nIGluIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGZyb20gOm1ldGg6YGdldF9wYXJhbWAuICBUaGlzIHdpbGwgcmV0dXJuIGEgc3VpdGFibHkgZGVjb2RlZCBVbmljb2RlCi0gICAgICBzdHJpbmcgd2hlbiB0aGUgdmFsdWUgaXMgYSB0dXBsZSwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bnF1b3RlZCBpZiBpdAotICAgICAgaXNuJ3QuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIHJhd3BhcmFtID0gbXNnLmdldF9wYXJhbSgnZm9vJykKLSAgICAgICAgIHBhcmFtID0gZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShyYXdwYXJhbSkKLQotICAgICAgSW4gYW55IGNhc2UsIHRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUKLSAgICAgIGBgVkFMVUVgYCBpdGVtIGluIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyAqdW5xdW90ZSogaXMgc2V0Ci0gICAgICB0byBgYEZhbHNlYGAuCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzCisgICAgICBub3QgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgc28gaXQgb25seSBhZmZlY3RzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIHRoZSBgYGdldF9jb250ZW50X3R5cGVgYCBtZXRob2RzIHdoZW4gbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBpcyBwcmVzZW50IGluIHRoZSBtZXNzYWdlLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldF9wYXJhbShwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1Ob25lLCBsYW5ndWFnZT0nJywgcmVwbGFjZT1GYWxzZSkKIAogICAgICAgU2V0IGEgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZiB0aGUKLSAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCBpdHMgdmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoCi0gICAgICAqdmFsdWUqLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcyBub3QgeWV0IGJlZW4gZGVmaW5lZAotICAgICAgZm9yIHRoaXMgbWVzc2FnZSwgaXQgd2lsbCBiZSBzZXQgdG8gOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBhbmQgdGhlIG5ldwotICAgICAgcGFyYW1ldGVyIHZhbHVlIHdpbGwgYmUgYXBwZW5kZWQgYXMgcGVyIDpyZmM6YDIwNDVgLgorICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIHJlcGxhY2UgaXRzIHZhbHVlIHdpdGggKnZhbHVlKi4KKyAgICAgIFdoZW4gKmhlYWRlciogaXMgYGBDb250ZW50LVR5cGVgYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGVhZGVyIGRvZXMgbm90CisgICAgICB5ZXQgZXhpc3QgaW4gdGhlIG1lc3NhZ2UsIGFkZCBpdCwgc2V0IGl0cyB2YWx1ZSB0bworICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCwgYW5kIGFwcGVuZCB0aGUgbmV3IHBhcmFtZXRlciB2YWx1ZS4gIE9wdGlvbmFsCisgICAgICAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0gICAgICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCwgYW5kIGFsbCBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeQotICAgICAgdW5sZXNzIG9wdGlvbmFsICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4KLQotICAgICAgSWYgb3B0aW9uYWwgKmNoYXJzZXQqIGlzIHNwZWNpZmllZCwgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGVuY29kZWQKLSAgICAgIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4gT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIFJGQyAyMjMxCi0gICAgICBsYW5ndWFnZSwgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKLSAgICAgIHNob3VsZCBiZSBzdHJpbmdzLgorICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgbWF5CisgICAgICBiZSBleHBsaWNpdHkgc3BlY2lmaWVkIHVzaW5nIHRoZSBvcHRpb25hbCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKKyAgICAgIHBhcmFtZXRlcnMuICBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgOnJmYzpgMjIzMWAgbGFuZ3VhZ2UsCisgICAgICBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKiBzaG91bGQgYmUKKyAgICAgIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGBgdXRmOGBgICpjaGFyc2V0KiBhbmQgYGBOb25lYGAgZm9yCisgICAgICB0aGUgKmxhbmd1YWdlKi4KIAogICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCiAgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgogICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgogCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KKworICAgICAgTm90ZSB0aGF0IGV4aXN0aW5nIHBhcmFtZXRlciB2YWx1ZXMgb2YgaGVhZGVycyBtYXkgYmUgYWNjZXNzZWQgdGhyb3VnaAorICAgICAgdGhlIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5wYXJhbXNgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIGhlYWRlciB2YWx1ZSAoZm9yIGV4YW1wbGUsIGBgbXNnWydDb250ZW50LVR5cGUnXS5wYXJhbXNbJ2NoYXJzZXQnXWBgLgorCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KIAogCkBAIC01MDIsMjUgKzM4OCwxMSBAQAogCiAgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCiAgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKLSAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKLSAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCi0gICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKyAgICAgIGl0cyB2YWx1ZS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCiAKLQotICAgLi4gbWV0aG9kOjogc2V0X3R5cGUodHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpCi0KLSAgICAgIFNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlci4gKnR5cGUqIG11c3QgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYCwKLSAgICAgIG90aGVyd2lzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwga2VlcGluZyBhbGwKLSAgICAgIHRoZSBwYXJhbWV0ZXJzIGluIHBsYWNlLiAgSWYgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCwgdGhpcyBsZWF2ZXMgdGhlCi0gICAgICBleGlzdGluZyBoZWFkZXIncyBxdW90aW5nIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQKLSAgICAgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAqaGVhZGVyKiBhcmd1bWVudC4gV2hlbiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBzZXQgYSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAotICAgICAgaGVhZGVyIGlzIGFsc28gYWRkZWQuCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZmFpbG9iaj1Ob25lKQpAQCAtNTQ5LDEyICs0MjEsMTEgQEAKICAgICAgIG5lY2Vzc2FyeS4gIEEgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlCiAgICAgICBtZXNzYWdlIG9iamVjdCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgogCi0gICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCB0aGFuIGRlbGV0aW5nIHRoZSBvbGQKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gZGVsZXRpbmcgdGhlIG9sZAogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldwogICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKICAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCi0gICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5Ci0gICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorICAgICAgaGVhZGVycy4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmo9Tm9uZSkKQEAgLTU2Myw5ICs0MzQsNiBAQAogICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgogICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgogCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCi0KIAogICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKIApAQCAtNTc1LDEwICs0NDMsMTkgQEAKIAogICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQotICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgotICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0Ci0gICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKyAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBJZiB0aGUgc3VicGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbgorICAgICAgTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdCB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50CisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKKyAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCisgICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQorICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKQEAgLTU5MCw2ICs0NjcsMTEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIHJlbGF0ZSB0byBpbnRlcnJvZ2F0aW5nIGFuZCBtYW5pcHVsYXRpbmcgdGhlIGNvbnRlbnQKKyAgIChwYXlsb2FkKSBvZiB0aGUgbWVzc2FnZS4KKworCiAgICAuLiBtZXRob2Q6OiB3YWxrKCkKIAogICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC02NTEsOCArNTMzLDE2OSBAQAogICAgICAgaW50byB0aGUgc3VicGFydHMuCiAKIAotICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGNhbiBhbHNvIG9wdGlvbmFsbHkgY29udGFpbiB0d28gaW5zdGFuY2UgYXR0cmlidXRlcywKLSAgIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgcGxhaW4gdGV4dCBvZiBhIE1JTUUgbWVzc2FnZS4KKyAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCisKKyAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCisgICAgICBtZXNzYWdlLgorCisgICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKKyAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKKyAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KKworICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQorICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAorICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCisgICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCisKKyAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgorICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgorICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCisgICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCisKKyAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCisgICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgorCisgICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgorICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCisgICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCisgICAgICBkZWZhdWx0IGBgKCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKWBgLiAgKDIpIEJlY2F1c2UgbWF0Y2hpbmcgc3RhcnRzCisgICAgICB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggYGBnZXRfYm9keWBgIGlzIGNhbGxlZCwgY2FsbGluZyBgYGdldF9ib2R5YGAgb24KKyAgICAgIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIHVubGVzcworICAgICAgKnByZWZlcmVuY2VsaXN0KiBoYXMgYSBub24tZGVmYXVsdCB2YWx1ZS4gKDMpIE1lc3NhZ2VzIChvciBtZXNzYWdlIHBhcnRzKQorICAgICAgdGhhdCBkbyBub3Qgc3BlY2lmeSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIG9yIHdob3NlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgaW52YWxpZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleQorICAgICAgYXJlIG9mIHR5cGUgYGB0ZXh0L3BsYWluYGAsIHdoaWNoIG1heSBvY2Nhc2lvbmFsbHkgY2F1c2UgYGBnZXRfYm9keWBgIHRvCisgICAgICByZXR1cm4gdW5leHBlY3RlZCByZXN1bHRzLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfYXR0YWNobWVudHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UKKyAgICAgIHRoYXQgYXJlIG5vdCBjYW5kaWRhdGUgImJvZHkiIHBhcnRzLiAgVGhhdCBpcywgc2tpcCB0aGUgZmlyc3Qgb2NjdXJyZW5jZQorICAgICAgb2YgZWFjaCBvZiBgYHRleHQvcGxhaW5gYCwgYGB0ZXh0L2h0bWxgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCAodW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCisgICAgICBhdHRhY2htZW50cyB2aWEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgKSwgYW5kCisgICAgICByZXR1cm4gYWxsIHJlbWFpbmluZyBwYXJ0cy4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhCisgICAgICBgYG11bHRpcGFydC9yZWxhdGVkYGAsIHJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBhbGwgdGhlIHJlbGF0ZWQgcGFydHMKKyAgICAgIGV4Y2VwdCB0aGUgcm9vdCBwYXJ0IChpZTogdGhlIHBhcnQgcG9pbnRlZCB0byBieSB0aGUgYGBzdGFydGBgIHBhcmFtZXRlciwKKyAgICAgIG9yIHRoZSBmaXJzdCBwYXJ0IGlmIHRoZXJlIGlzIG5vIGBgc3RhcnRgYCBwYXJhbWV0ZXIgb3IgdGhlIGBgc3RhcnRgYAorICAgICAgcGFyYW1ldGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBvZiBhbnkgb2YgdGhlCisgICAgICBwYXJ0cykuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgIG9yIGEKKyAgICAgIG5vbi1gYG11bHRpcGFydGBgLCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IuCisKKworICAgLi4gbWV0aG9kOjogaXRlcl9wYXJ0cygpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZSwKKyAgICAgIHdoaWNoIHdpbGwgYmUgZW1wdHkgZm9yIGEgbm9uLWBgbXVsdGlwYXJ0YGAuICAoU2VlIGFsc28KKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuKQorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5nZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5zZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfcmVsYXRlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgbWVzc2FnZSBpbnRvIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIG1lc3NhZ2UsCisgICAgICBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEKKyAgICAgIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlCisgICAgICBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkKKyAgICAgIHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlCisgICAgICBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfYWx0ZXJuYXRpdmUoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIGludG8gYQorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gCisgICAgICBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKKyAgICAgICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LAorICAgICAgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcworICAgICAgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX21peGVkKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCwgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yIGEKKyAgICAgIGBgbXVsdGlwYXJ0LWFsdGVybmF0aXZlYGAgaW50byBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUKKyAgICAgIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcKKyAgICAgIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseQorICAgICAgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX3JlbGF0ZWQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKKyAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsCisgICAgICBhbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICB0aGUgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBjYWxsIDptZXRoOmBtYWtlX3JlbGF0ZWRgIGFuZCB0aGVuCisgICAgICBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwKKyAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCisgICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisgICAgICBJZiB0aGUgYWRkZWQgcGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwKKyAgICAgIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUgYGBpbmxpbmVgYC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYWx0ZXJuYXRpdmUoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCBvciBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNhbGwKKyAgICAgIDptZXRoOmBtYWtlX2FsdGVybmF0aXZlYCBhbmQgdGhlbiBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMKKyAgICAgIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9hdHRhY2htZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9taXhlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmplY3QsCisgICAgICBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNhbGwgOm1ldGg6YG1ha2VfbWl4ZWRgIGFuZCB0aGVuIHByb2NlZWQgYXMKKyAgICAgIGFib3ZlLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4gIElmIHRoZSBhZGRlZCBwYXJ0CisgICAgICBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZQorICAgICAgYGBhdHRhY2htZW50YGAuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIGZvciBleHBsaWNpdCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCBhbmQgYGBpbmxpbmVgYCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmVgKSwgYnkgcGFzc2luZyBhcHByb3ByaWF0ZQorICAgICAgb3B0aW9ucyB0byB0aGUgYGBjb250ZW50X21hbmFnZXJgYC4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcigpCisKKyAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsZWFyX2NvbnRlbnQoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgOmV4YzpgQ29udGVudC1gIGhlYWRlcnMsIGxlYXZpbmcKKyAgICAgIGFsbCBvdGhlciBoZWFkZXJzIGludGFjdCBhbmQgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCisKKworICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbmNlIGF0dHJpYnV0ZXM6CiAKIAogICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKQEAgLTY4MiwxMSArNzI1LDggQEAKIAogICAgICAgVGhlICplcGlsb2d1ZSogYXR0cmlidXRlIGFjdHMgdGhlIHNhbWUgd2F5IGFzIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwKICAgICAgIGV4Y2VwdCB0aGF0IGl0IGNvbnRhaW5zIHRleHQgdGhhdCBhcHBlYXJzIGJldHdlZW4gdGhlIGxhc3QgYm91bmRhcnkgYW5kCi0gICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLgotCi0gICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBlcGlsb2d1ZSB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIGZvciB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHRvIHByaW50IGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZQotICAgICAgZmlsZS4KKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuICBBcyB3aXRoIHRoZSA6YXR0cjpgfkVtYWlsTWVzc2FnZS5wcmVhbWJsZWAsCisgICAgICBpZiB0aGVyZSBpcyBubyBlcGlsb2cgdGV4dCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGBgTm9uZWBgLgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKQEAgLTY5NCwzICs3MzQsMTggQEAKICAgICAgIFRoZSAqZGVmZWN0cyogYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIHByb2JsZW1zIGZvdW5kIHdoZW4KICAgICAgIHBhcnNpbmcgdGhpcyBtZXNzYWdlLiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24KICAgICAgIG9mIHRoZSBwb3NzaWJsZSBwYXJzaW5nIGRlZmVjdHMuCisKKworLi4gY2xhc3M6OiBNSU1FUGFydChwb2xpY3k9ZGVmYXVsdCkKKworICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHN1YnBhcnQgb2YgYSBNSU1FIG1lc3NhZ2UuICBJdCBpcyBpZGVudGljYWwgdG8KKyAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAsIGV4Y2VwdCB0aGF0IG5vIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMgYXJlCisgICAgYWRkZWQgd2hlbiA6bWV0aDpgfkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgaXMgY2FsbGVkLCBzaW5jZSBzdWItcGFydHMgZG8KKyAgICBub3QgbmVlZCB0aGVpciBvd24gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4gIERvY3MgZm9yIGxlZ2FjeSBtZXNzYWdlIGNsYXNzIG1vdmVkIHRvCisgICAgICAgOnJlZjpgY29tcGF0MzJfbWVzc2FnZWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CmluZGV4IDgyOTdkZWEuLmQ5ZGFlOWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEl0cyBmdW5jdGlvbmFsaXR5CitpcyBwYXJ0aWFsbHkgcmVwbGFjZWQgYnkgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgaW4gdGhlIG5ldyBBUEksIGJ1dAoraW4gY2VydGFpbiBhcHBsaWNhdGlvbnMgdGhlc2UgY2xhc3NlcyBtYXkgc3RpbGwgYmUgdXNlZnVsLCBldmVuIGluIG5vbi1sZWdhY3kKK2NvZGUuCisKIE9yZGluYXJpbHksIHlvdSBnZXQgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYnkgcGFzc2luZyBhIGZpbGUgb3Igc29tZSB0ZXh0IHRvCiBhIHBhcnNlciwgd2hpY2ggcGFyc2VzIHRoZSB0ZXh0IGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSG93ZXZlcgogeW91IGNhbiBhbHNvIGJ1aWxkIGEgY29tcGxldGUgbWVzc2FnZSBzdHJ1Y3R1cmUgZnJvbSBzY3JhdGNoLCBvciBldmVuIGluZGl2aWR1YWwKQEAgLTI1LDcgKzMwLDcgQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYmFzZQogCi0uLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUJhc2UoX21haW50eXBlLCBfc3VidHlwZSwgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5iYXNlYAogCkBAIC00MSwxMCArNDYsMTcgQEAKICAgIGtleS92YWx1ZSBkaWN0aW9uYXJ5IGFuZCBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gOm1ldGg6YE1lc3NhZ2UuYWRkX2hlYWRlcgogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hZGRfaGVhZGVyPmAuCiAKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgKGRlZmF1bHRzIHRvIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5KSBpdCB3aWxsIGJlIHBhc3NlZCB0bworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4KKwogICAgVGhlIDpjbGFzczpgTUlNRUJhc2VgIGNsYXNzIGFsd2F5cyBhZGRzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCiAgICAoYmFzZWQgb24gKl9tYWludHlwZSosICpfc3VidHlwZSosIGFuZCAqX3BhcmFtcyopLCBhbmQgYQogICAgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIChhbHdheXMgc2V0IHRvIGBgMS4wYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KKwogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5ub25tdWx0aXBhcnQKIApAQCAtNjIsNyArNzQsOCBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5tdWx0aXBhcnQKIAotLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVNdWx0aXBhcnQoX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm11bHRpcGFydGAKIApAQCAtODIsMTQgKzk1LDIwIEBACiAgICB0byB0aGUgbWVzc2FnZSBieSB1c2luZyB0aGUgOm1ldGg6YE1lc3NhZ2UuYXR0YWNoCiAgICA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaD5gIG1ldGhvZC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcmUgdGFrZW4gZnJvbQogICAgdGhlIGtleXdvcmQgYXJndW1lbnRzLCBvciBwYXNzZWQgaW50byB0aGUgKl9wYXJhbXMqIGFyZ3VtZW50LCB3aGljaCBpcyBhIGtleXdvcmQKICAgIGRpY3Rpb25hcnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hcHBsaWNhdGlvbgogCi0uLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUFwcGxpY2F0aW9uKF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAKIApAQCAtMTA5LDEyICsxMjgsMTggQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmF1ZGlvCiAKLS4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXVkaW9gCiAKQEAgLTEzNywxMiArMTYyLDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5pbWFnZQogCi0uLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuaW1hZ2VgCiAKQEAgLTE2NSwxMyArMTk2LDE3IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUuYmFzZS5NSU1FQmFzZWAKICAgIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubWVzc2FnZQogCi0uLiBjbGFzczo6IE1JTUVNZXNzYWdlKF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKQorLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJywgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUubWVzc2FnZWAKIApAQCAtMTg0LDEwICsyMTksMTQgQEAKICAgIE9wdGlvbmFsICpfc3VidHlwZSogc2V0cyB0aGUgc3VidHlwZSBvZiB0aGUgbWVzc2FnZTsgaXQgZGVmYXVsdHMgdG8KICAgIDptaW1ldHlwZTpgcmZjODIyYC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS50ZXh0CiAKLS4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCisuLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Y29tcGF0MzIpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0yMTEsNSArMjUwLDEwIEBACiAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZW5jb2RlIHRoZSBuZXcgcGF5bG9hZCAoYW5kIGFkZCBhIG5ldwogICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcikuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKl9jaGFyc2V0KiBhbHNvIGFjY2VwdHMgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKaW5kZXggYjhlYjdjNS4uYzMyM2ViYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CkBAIC04LDE5MCArOCwxNTggQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotTWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBpbiBvbmUgb2YgdHdvIHdheXM6IHRoZXkgY2FuIGJlIGNyZWF0ZWQKLWZyb20gd2hvbGUgY2xvdGggYnkgaW5zdGFudGlhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgYW5kCi1zdHJpbmdpbmcgdGhlbSB0b2dldGhlciB2aWEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBhbmQKLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYCBjYWxscywgb3IgdGhleQotY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIGZsYXQgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW1haWwgbWVzc2FnZS4KK01lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZQorY3JlYXRlZCBmcm9tIHdob2xlIGNsb3RoIGJ5IGNyZWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorb2JqZWN0LCBhZGRpbmcgaGVhZGVycyB1c2luZyB0aGUgZGljdGlvbmFyeSBpbnRlcmZhY2UsIGFuZCBhZGRpbmcgcGF5bG9hZChzKQordXNpbmcgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHJlbGF0ZWQgbWV0aG9kcywgb3IKK3RoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsCittZXNzYWdlLgogCiBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMgYSBzdGFuZGFyZCBwYXJzZXIgdGhhdCB1bmRlcnN0YW5kcyBtb3N0IGVtYWlsCi1kb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhIHN0cmluZwotb3IgYSBmaWxlIG9iamVjdCwgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdG8geW91IHRoZSByb290Ci06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yIHNpbXBsZSwKLW5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYSBzdHJpbmcKLWNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0IHdpbGwKLXJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCwgYW5kCi10aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi1hbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uud2Fsa2AgbWV0aG9kcy4KK2RvY3VtZW50IHN0cnVjdHVyZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4gIFlvdSBjYW4gcGFzcyB0aGUgcGFyc2VyIGEKK2J5dGVzLCBzdHJpbmcgb3IgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yCitzaW1wbGUsIG5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYQorc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0Cit3aWxsIHJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAKK21ldGhvZCwgYW5kIHRoZSBzdWJwYXJ0cyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSBwYXlsb2FkIG1hbmlwdWxhdGlvbiBtZXRob2RzLAorc3VjaCBhcyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9ib2R5YCwKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AsIGFuZAorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS53YWxrYC4KIAotVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgYW5kIHRoZSBpbmNyZW1lbnRhbCA6Y2xhc3M6YEZlZWRQYXJzZXJgIEFQSS4gIFRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGlzIGZpbmUgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeQotYXMgYSBzdHJpbmcsIG9yIGlmIHRoZSBlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLgotOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciB3aGVuIHlvdSdyZSByZWFkaW5nIHRoZSBtZXNzYWdlIGZyb20KLWEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQgKGUuZy4gcmVhZGluZyBhbiBlbWFpbCBtZXNzYWdlCi1mcm9tIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBjb25zdW1lIGFuZCBwYXJzZSB0aGUgbWVzc2FnZQotaW5jcmVtZW50YWxseSwgYW5kIG9ubHkgcmV0dXJucyB0aGUgcm9vdCBvYmplY3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhcnNlciBbI11fLgorVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIDpjbGFzczpgUGFyc2VyYAorQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgOmNsYXNzOmBQYXJzZXJgIEFQSSBpcworbW9zdCB1c2VmdWwgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeSwgb3IgaWYgdGhlCitlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLiAgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlCithcHByb3ByaWF0ZSB3aGVuIHlvdSBhcmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tIGEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrCit3YWl0aW5nIGZvciBtb3JlIGlucHV0IChzdWNoIGFzIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEgc29ja2V0KS4gIFRoZQorOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UgaW5jcmVtZW50YWxseSwgYW5kIG9ubHkKK3JldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIuCiAKIE5vdGUgdGhhdCB0aGUgcGFyc2VyIGNhbiBiZSBleHRlbmRlZCBpbiBsaW1pdGVkIHdheXMsIGFuZCBvZiBjb3Vyc2UgeW91IGNhbgotaW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIFRoZXJlIGlzIG5vIG1hZ2ljYWwKLWNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLCBzbyB5b3VyIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlCi1vYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcyBuZWNlc3NhcnkuCitpbXBsZW1lbnQgeW91ciBvd24gcGFyc2VyIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgQWxsIG9mIHRoZSBsb2dpYyB0aGF0Citjb25uZWN0cyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXMgZW1ib2RpZWQgaW4gdGhlIDptb2Q6YHBvbGljeWAKK2NsYXNzLCBzbyBhIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlIG9iamVjdCB0cmVlcyBhbnkgd2F5IGl0IGZpbmRzCituZWNlc3NhcnkgYnkgaW1wbGVtZW50aW5nIGN1c3RvbSB2ZXJzaW9ucyBvZiB0aGUgYXBwcm9wcmlhdGUgOm1vZDpgcG9saWN5YAorbWV0aG9kcy4KIAogCiBGZWVkUGFyc2VyIEFQSQogXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKLXByb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLCBzdWNoCi1hcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvdXJjZQotdGhhdCBjYW4gYmxvY2sgKGUuZy4gYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIG9mIGNvdXJzZSBiZSB1c2VkCi10byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIHN0cmluZyBvciBhIGZpbGUsIGJ1dCB0aGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBtYXkgYmUgbW9yZSBjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MKLWFuZCByZXN1bHRzIG9mIHRoZSB0d28gcGFyc2VyIEFQSXMgYXJlIGlkZW50aWNhbC4KK1RoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKK3Byb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLAorc3VjaCBhcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhCitzb3VyY2UgdGhhdCBjYW4gYmxvY2sgKHN1Y2ggYXMgYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBjYW4gb2YKK2NvdXJzZSBiZSB1c2VkIHRvIHBhcnNlIGFuIGVtYWlsIG1lc3NhZ2UgZnVsbHkgY29udGFpbmVkIGluIGEgOnRlcm06YGJ5dGVzLWxpa2UKK29iamVjdGAsIHN0cmluZywgb3IgZmlsZSwgYnV0IHRoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUKK2NvbnZlbmllbnQgZm9yIHN1Y2ggdXNlIGNhc2VzLiAgVGhlIHNlbWFudGljcyBhbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlcgorQVBJcyBhcmUgaWRlbnRpY2FsLgogCi1UaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYSBidW5jaAotb2YgdGV4dCB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvIHJldHJpZXZlIHRoZQotcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseSBhY2N1cmF0ZSB3aGVuIHBhcnNpbmcKLXN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBwYXJzaW5nCi1ub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZSB3YXMgZGVlbWVkCi1icm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncyAqZGVmZWN0cyogYXR0cmlidXRlIHdpdGggYSBsaXN0IG9mCi1hbnkgcHJvYmxlbXMgaXQgZm91bmQgaW4gYSBtZXNzYWdlLiAgU2VlIHRoZSA6bW9kOmBlbWFpbC5lcnJvcnNgIG1vZHVsZSBmb3IgdGhlCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgJ3MgQVBJIGlzIHNpbXBsZTsgeW91IGNyZWF0ZSBhbiBpbnN0YW5jZSwgZmVlZCBpdCBhCitidW5jaCBvZiBieXRlcyB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvCityZXRyaWV2ZSB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaXMgZXh0cmVtZWx5CithY2N1cmF0ZSB3aGVuIHBhcnNpbmcgc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcywgYW5kIGl0IGRvZXMgYSB2ZXJ5IGdvb2Qgam9iCitvZiBwYXJzaW5nIG5vbi1jb21wbGlhbnQgbWVzc2FnZXMsIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBob3cgYSBtZXNzYWdlCit3YXMgZGVlbWVkIGJyb2tlbi4gIEl0IHdpbGwgcG9wdWxhdGUgYSBtZXNzYWdlIG9iamVjdCdzCis6YXR0cjpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmRlZmVjdHNgIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZiBhbnkKK3Byb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQogbGlzdCBvZiBkZWZlY3RzIHRoYXQgaXQgY2FuIGZpbmQuCiAKLUhlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmA6CitIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmA6CiAKIAotLi4gY2xhc3M6OiBGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNGZWVkUGFyc2VyKF9mYWN0b3J5PU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKLSAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKLSAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEKKyAgIG5vLWFyZ3VtZW50IGNhbGxhYmxlOyBpZiBub3Qgc3BlY2lmaWVkIHVzZSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgIGZyb20gdGhlICpwb2xpY3kqLiAgQ2FsbAorICAgKl9mYWN0b3J5KiB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZQorICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UgYW5kIHByb3ZpZGVzCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0IGZhY3RvcnkuICBBbGwgb3RoZXIgcG9saWNpZXMKKyAgIHByb3ZpZGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0ICpfZmFjdG9yeSouIEZvcgorICAgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGVsc2UgKnBvbGljeSogY29udHJvbHMsIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCi0KLSAgICAgIEZlZWQgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKLSAgICAgIDpjbGFzczpgRmVlZFBhcnNlcmAgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlCi0gICAgICBsaW5lcyBpbiB0aGUgc3RyaW5nIGNhbiBoYXZlIGFueSBvZiB0aGUgY29tbW9uIHRocmVlIGxpbmUgZW5kaW5ncywKLSAgICAgIGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlCi0gICAgICBtaXhlZCkuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKLQotICAgICAgQ2xvc2luZyBhIDpjbGFzczpgRmVlZFBhcnNlcmAgY29tcGxldGVzIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZAotICAgICAgZGF0YSwgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJdCBpcyB1bmRlZmluZWQgd2hhdCBoYXBwZW5zCi0gICAgICBpZiB5b3UgZmVlZCBtb3JlIGRhdGEgdG8gYSBjbG9zZWQgOmNsYXNzOmBGZWVkUGFyc2VyYC4KLQotCi0uLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCi0KLSAgIFdvcmtzIGV4YWN0bHkgbGlrZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGV4Y2VwdCB0aGF0IHRoZSBpbnB1dCB0byB0aGUKLSAgIDptZXRoOmB+RmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBieXRlcyBhbmQgbm90IHN0cmluZy4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2ZhY3RvcnkqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotUGFyc2VyIGNsYXNzIEFQSQotXl5eXl5eXl5eXl5eXl5eXgogCi1UaGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKKyAgIC4uIG1ldGhvZDo6IGZlZWQoZGF0YSkKKworICAgICAgRmVlZCB0aGUgcGFyc2VyIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIDp0ZXJtOmBieXRlcy1saWtlCisgICAgICBvYmplY3RgIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgbGluZXMuICBUaGUgbGluZXMgY2FuIGJlIHBhcnRpYWwgYW5kIHRoZQorICAgICAgcGFyc2VyIHdpbGwgc3RpdGNoIHN1Y2ggcGFydGlhbCBsaW5lcyB0b2dldGhlciBwcm9wZXJseS4gIFRoZSBsaW5lcyBjYW4KKyAgICAgIGhhdmUgYW55IG9mIHRoZSB0aHJlZSBjb21tb24gbGluZSBlbmRpbmdzOiBjYXJyaWFnZSByZXR1cm4sIG5ld2xpbmUsIG9yCisgICAgICBjYXJyaWFnZSByZXR1cm4gYW5kIG5ld2xpbmUgKHRoZXkgY2FuIGV2ZW4gYmUgbWl4ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKKworICAgICAgQ29tcGxldGUgdGhlIHBhcnNpbmcgb2YgYWxsIHByZXZpb3VzbHkgZmVkIGRhdGEgYW5kIHJldHVybiB0aGUgcm9vdAorICAgICAgbWVzc2FnZSBvYmplY3QuICBJdCBpcyB1bmRlZmluZWQgd2hhdCBoYXBwZW5zIGlmIDptZXRoOmB+ZmVlZGAgaXMgY2FsbGVkCisgICAgICBhZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisKKworLi4gY2xhc3M6OiBGZWVkUGFyc2VyKF9mYWN0b3J5PU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFdvcmtzIGxpa2UgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGV4Y2VwdCB0aGF0IHRoZSBpbnB1dCB0byB0aGUKKyAgIDptZXRoOmB+Qnl0ZXNGZWVkUGFyc2VyLmZlZWRgIG1ldGhvZCBtdXN0IGJlIGEgc3RyaW5nLiAgVGhpcyBpcyBvZiBsaW1pdGVkCisgICB1dGlsaXR5LCBzaW5jZSB0aGUgb25seSB3YXkgZm9yIHN1Y2ggYSBtZXNzYWdlIHRvIGJlIHZhbGlkIGlzIGZvciBpdCB0bworICAgY29udGFpbiBvbmx5IEFTQ0lJIHRleHQgb3IsIGlmIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS51dGY4YCBpcworICAgYGBUcnVlYGAsIG5vIGJpbmFyeSBhdHRhY2htZW50cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworUGFyc2VyIEFQSQorXl5eXl5eXl5eXgorCitUaGUgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLAogcHJvdmlkZXMgYW4gQVBJIHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFyc2UgYSBtZXNzYWdlIHdoZW4gdGhlIGNvbXBsZXRlIGNvbnRlbnRzCi1vZiB0aGUgbWVzc2FnZSBhcmUgYXZhaWxhYmxlIGluIGEgc3RyaW5nIG9yIGZpbGUuICBUaGUgOm1vZDpgZW1haWwucGFyc2VyYAotbW9kdWxlIGFsc28gcHJvdmlkZXMgaGVhZGVyLW9ubHkgcGFyc2VycywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQKLTpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQotaGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAKK29mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIG9yIGZpbGUuICBUaGUKKzptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlIGFsc28gcHJvdmlkZXMgOmNsYXNzOmBQYXJzZXJgIGZvciBwYXJzaW5nIHN0cmluZ3MsCithbmQgaGVhZGVyLW9ubHkgcGFyc2VycywgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAgYW5kCis6Y2xhc3M6YEhlYWRlclBhcnNlcmAsIHdoaWNoIGNhbiBiZSB1c2VkIGlmIHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlCitoZWFkZXJzIG9mIHRoZSBtZXNzYWdlLiAgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAgYW5kIDpjbGFzczpgSGVhZGVyUGFyc2VyYAogY2FuIGJlIG11Y2ggZmFzdGVyIGluIHRoZXNlIHNpdHVhdGlvbnMsIHNpbmNlIHRoZXkgZG8gbm90IGF0dGVtcHQgdG8gcGFyc2UgdGhlCi1tZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkgYXMgYSBzdHJpbmcuICBUaGV5Ci1oYXZlIHRoZSBzYW1lIEFQSSBhcyB0aGUgOmNsYXNzOmBQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBjbGFzc2VzLgotCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLSAgIFRoZSBCeXRlc0hlYWRlclBhcnNlciBjbGFzcy4KK21lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keS4KIAogCi0uLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gY2xhc3M6OiBCeXRlc1BhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50Ci0gICAqX2NsYXNzKi4gIFRoaXMgbXVzdCBiZSBhIGNhbGxhYmxlIGZhY3RvcnkgKHN1Y2ggYXMgYSBmdW5jdGlvbiBvciBhIGNsYXNzKSwgYW5kCi0gICBpdCBpcyB1c2VkIHdoZW5ldmVyIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0IG5lZWRzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0bwotICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCAoc2VlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgKS4gIFRoZSBmYWN0b3J5IHdpbGwKLSAgIGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KKyAgIENyZWF0ZSBhIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGluc3RhbmNlLiAgVGhlICpfY2xhc3MqIGFuZCAqcG9saWN5KgorICAgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhbmQgc2VtYXRuaWNzIGFzIHRoZSAqX2ZhY3RvcnkqCisgICBhbmQgKnBvbGljeSogYXJndW1lbnRzIG9mIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYC4KIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCisgICBOb3RlOiAqKlRoZSBwb2xpY3kga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZCoqOyBUaGUgZGVmYXVsdCB3aWxsCisgICBjaGFuZ2UgdG8gOmRhdGE6YGVtYWlsLnBvbGljeS5kZWZhdWx0YCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50IHRoYXQgd2FzIGRlcHJlY2F0ZWQgaW4gMi40LiAgQWRkZWQgdGhlCiAgICAgICAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9jbGFzcyogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgUGFyc2VyYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCi0KLSAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlIHJlc3VsdGluZwotICAgICAgdGV4dCwgYW5kIHJldHVybiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0IGJvdGggdGhlCi0gICAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgCi0gICAgICBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgotCi0gICAgICBUaGUgdGV4dCBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCi0gICAgICBzdHlsZSBoZWFkZXJzIGFuZCBoZWFkZXIgY29udGludWF0aW9uIGxpbmVzLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGFuCi0gICAgICBlbnZlbG9wZSBoZWFkZXIuICBUaGUgaGVhZGVyIGJsb2NrIGlzIHRlcm1pbmF0ZWQgZWl0aGVyIGJ5IHRoZSBlbmQgb2YgdGhlCi0gICAgICBkYXRhIG9yIGJ5IGEgYmxhbmsgbGluZS4gIEZvbGxvd2luZyB0aGUgaGVhZGVyIGJsb2NrIGlzIHRoZSBib2R5IG9mIHRoZQotICAgICAgbWVzc2FnZSAod2hpY2ggbWF5IGNvbnRhaW4gTUlNRS1lbmNvZGVkIHN1YnBhcnRzKS4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhIGZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIHRvIHN0b3AgcGFyc2luZyBhZnRlcgotICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCi0gICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgotCi0gICAuLiBtZXRob2Q6OiBwYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIHN0cmluZyBvYmplY3QKLSAgICAgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHN0cmluZyBpcyBleGFjdGx5Ci0gICAgICBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLlN0cmluZ0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQKLSAgICAgIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KLQotCi0uLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCi0KLSAgIFRoaXMgY2xhc3MgaXMgZXhhY3RseSBwYXJhbGxlbCB0byA6Y2xhc3M6YFBhcnNlcmAsIGJ1dCBoYW5kbGVzIGJ5dGVzIGlucHV0LgotICAgVGhlICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IKLSAgIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY29uc3RydWN0b3IuCi0KLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAogICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQogCiAgICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBiaW5hcnkgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUKICAgICAgIHJlc3VsdGluZyBieXRlcywgYW5kIHJldHVybiB0aGUgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydAogICAgICAgYm90aCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCisgICAgICBtZXRob2RzLgogCi0gICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmAyODIyYAorICAgICAgVGhlIGJ5dGVzIGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgNTMyMmAKKyAgICAgIChvciwgaWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLCA6cmZjOmA2NTMyYCkKICAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KICAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKICAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCkBAIC0yMDIsNzMgKzE3MCwxMjEgQEAKICAgICAgIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLCBtZWFuaW5nIGl0IHBhcnNlcwogICAgICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KIAotICAgLi4gbWV0aG9kOjogcGFyc2VieXRlcyh0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgLi4gbWV0aG9kOjogcGFyc2VieXRlcyhieXRlcywgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSA6dGVybTpgYnl0ZXMtbGlrZQotICAgICAgb2JqZWN0YCBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudAotICAgICAgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uQnl0ZXNJT2AgaW5zdGFuY2UgZmlyc3QgYW5kIGNhbGxpbmcKLSAgICAgIDptZXRoOmBwYXJzZWAuCisgICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhCisgICAgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKmJ5dGVzKiBpbiBhCisgICAgICA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgogCiAgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjbGFzczo6IEJ5dGVzSGVhZGVyUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBFeGFjdGx5IGxpa2UgOmNsYXNzOmBCeXRlc1BhcnNlcmAsIGV4Y2VwdCB0aGF0ICpoZWFkZXJzb25seSoKKyAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgVGhpcyBjbGFzcyBpcyBwYXJhbGxlbCB0byA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgYnV0IGhhbmRsZXMgc3RyaW5nIGlucHV0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfY2xhc3MqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIHRleHQtbW9kZSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQorICAgICAgcmVzdWx0aW5nIHRleHQsIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydAorICAgICAgYm90aCB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlCisgICAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKworICAgICAgT3RoZXIgdGhhbiB0aGUgdGV4dCBtb2RlIHJlcXVpcmVtZW50LCB0aGlzIG1ldGhvZCBvcGVyYXRlcyBsaWtlCisgICAgICA6bWV0aDpgQnl0ZXNQYXJzZXIucGFyc2VgLgorCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAorICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzCisgICAgICBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLlN0cmluZ0lPYCBpbnN0YW5jZSBmaXJzdAorICAgICAgYW5kIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KKworCisuLiBjbGFzczo6IEhlYWRlclBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgRXhhY3RseSBsaWtlIDpjbGFzczpgUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKwogU2luY2UgY3JlYXRpbmcgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZyBvciBhIGZpbGUgb2JqZWN0IGlzIHN1Y2gKIGEgY29tbW9uIHRhc2ssIGZvdXIgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlLiAgVGhleSBhcmUgYXZhaWxhYmxlCiBpbiB0aGUgdG9wLWxldmVsIDptb2Q6YGVtYWlsYCBwYWNrYWdlIG5hbWVzcGFjZS4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4gIFRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAorICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kCisgICAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcworICAgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgYGBQYXJzZXIoKS5wYXJzZXN0cihzKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcwogICAgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkKLSAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAotICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqCi0gICBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZQorICAgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9jbGFzcyogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIGJpbmFyeSA6dGVybTpgZmlsZQotICAgb2JqZWN0YC4gIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZShmcClgYC4KLSAgICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSB0aGlzIGF0IGFuIGludGVyYWN0aXZlIFB5dGhvbiBwcm9tcHQ6OgorSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtaWdodCB1c2UgOmZ1bmM6YG1lc3NhZ2VfZnJvbV9ieXRlc2AgYXQgYW4KK2ludGVyYWN0aXZlIFB5dGhvbiBwcm9tcHQ6OgogCiAgICA+Pj4gaW1wb3J0IGVtYWlsCi0gICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhteVN0cmluZykgICMgZG9jdGVzdDogK1NLSVAKKyAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMobXlCeXRlcykgICMgZG9jdGVzdDogK1NLSVAKIAogCiBBZGRpdGlvbmFsIG5vdGVzCkBAIC0yNzgsMzUgKzI5NCwyNyBAQAogCiAqIE1vc3Qgbm9uLVwgOm1pbWV0eXBlOmBtdWx0aXBhcnRgIHR5cGUgbWVzc2FnZXMgYXJlIHBhcnNlZCBhcyBhIHNpbmdsZSBtZXNzYWdlCiAgIG9iamVjdCB3aXRoIGEgc3RyaW5nIHBheWxvYWQuICBUaGVzZSBvYmplY3RzIHdpbGwgcmV0dXJuIGBgRmFsc2VgYCBmb3IKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4gIFRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2Qgd2lsbCByZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAsIGFuZAorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgIHdpbGwgeWllbGQgYW4gZW1wdHkgbGlzdC4KIAogKiBBbGwgOm1pbWV0eXBlOmBtdWx0aXBhcnRgIHR5cGUgbWVzc2FnZXMgd2lsbCBiZSBwYXJzZWQgYXMgYSBjb250YWluZXIgbWVzc2FnZQogICBvYmplY3Qgd2l0aCBhIGxpc3Qgb2Ygc3ViLW1lc3NhZ2Ugb2JqZWN0cyBmb3IgdGhlaXIgcGF5bG9hZC4gIFRoZSBvdXRlcgogICBjb250YWluZXIgbWVzc2FnZSB3aWxsIHJldHVybiBgYFRydWVgYCBmb3IKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBhbmQgdGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgbGlzdCBvZgotICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHN1YnBhcnRzLgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAsIGFuZAorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgIHdpbGwgeWllbGQgYSBsaXN0IG9mIHN1YnBhcnRzLgogCi0qIE1vc3QgbWVzc2FnZXMgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvXCpgIChlLmcuCi0gIDptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkgd2lsbCBhbHNvIGJlCi0gIHBhcnNlZCBhcyBjb250YWluZXIgb2JqZWN0IGNvbnRhaW5pbmcgYSBsaXN0IHBheWxvYWQgb2YgbGVuZ3RoIDEuICBUaGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCB3aWxsIHJldHVybiBgYFRydWVgYC4KLSAgVGhlIHNpbmdsZSBlbGVtZW50IGluIHRoZSBsaXN0IHBheWxvYWQgd2lsbCBiZSBhIHN1Yi1tZXNzYWdlIG9iamVjdC4KKyogTW9zdCBtZXNzYWdlcyB3aXRoIGEgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9cKmAgKHN1Y2ggYXMKKyAgOm1pbWV0eXBlOmBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c2AgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKSB3aWxsIGFsc28KKyAgYmUgcGFyc2VkIGFzIGNvbnRhaW5lciBvYmplY3QgY29udGFpbmluZyBhIGxpc3QgcGF5bG9hZCBvZiBsZW5ndGggMS4gIFRoZWlyCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2Qgd2lsbCByZXR1cm4gYGBUcnVlYGAuCisgIFRoZSBzaW5nbGUgZWxlbWVudCB5aWVsZGVkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AKKyAgd2lsbCBiZSBhIHN1Yi1tZXNzYWdlIG9iamVjdC4KIAotKiBTb21lIG5vbi1zdGFuZGFyZHMgY29tcGxpYW50IG1lc3NhZ2VzIG1heSBub3QgYmUgaW50ZXJuYWxseSBjb25zaXN0ZW50IGFib3V0CisqIFNvbWUgbm9uLXN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMgbWF5IG5vdCBiZSBpbnRlcm5hbGx5IGNvbnNpc3RlbnQgYWJvdXQKICAgdGhlaXIgOm1pbWV0eXBlOmBtdWx0aXBhcnRgXCAtZWRuZXNzLiAgU3VjaCBtZXNzYWdlcyBtYXkgaGF2ZSBhCiAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBvZiB0eXBlIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCwgYnV0IHRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIG1heSByZXR1cm4gYGBGYWxzZWBgLgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIG1heSByZXR1cm4gYGBGYWxzZWBgLgogICBJZiBzdWNoIG1lc3NhZ2VzIHdlcmUgcGFyc2VkIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYCwKICAgdGhleSB3aWxsIGhhdmUgYW4gaW5zdGFuY2Ugb2YgdGhlCiAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIGNsYXNzIGluIHRoZWlyCiAgICpkZWZlY3RzKiBhdHRyaWJ1dGUgbGlzdC4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBkZXRhaWxzLgotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWyNdIEFzIG9mIGVtYWlsIHBhY2thZ2UgdmVyc2lvbiAzLjAsIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNCwgdGhlIGNsYXNzaWMKLSAgIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIHdhcyByZS1pbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYCwgc28gdGhlIHNlbWFudGljcyBhbmQgcmVzdWx0cyBhcmUKLSAgIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB0d28gcGFyc2Vycy4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKaW5kZXggMmE2MDQ3ZC4uOGE0MTg3NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0xOCw5ICsxOCwxMiBAQAogZW1haWwgbWVzc2FnZXMgKGEgYmxvY2sgb2YgaGVhZGVyIGZpZWxkcyBlYWNoIGNvbnNpc3Rpbmcgb2YgYSBuYW1lIGZvbGxvd2VkIGJ5CiBhIGNvbG9uIGZvbGxvd2VkIGJ5IGEgdmFsdWUsIHRoZSB3aG9sZSBibG9jayBmb2xsb3dlZCBieSBhIGJsYW5rIGxpbmUgYW5kIGFuCiBhcmJpdHJhcnkgJ2JvZHknKSwgaXMgYSBmb3JtYXQgdGhhdCBoYXMgZm91bmQgdXRpbGl0eSBvdXRzaWRlIG9mIHRoZSByZWFsbSBvZgotZW1haWwuICBTb21lIG9mIHRoZXNlIHVzZXMgY29uZm9ybSBmYWlybHkgY2xvc2VseSB0byB0aGUgbWFpbiBSRkNzLCBzb21lIGRvCi1ub3QuICBBbmQgZXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBlbWFpbCwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvCi1icmVhayBzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzLgorZW1haWwuICBTb21lIG9mIHRoZXNlIHVzZXMgY29uZm9ybSBmYWlybHkgY2xvc2VseSB0byB0aGUgbWFpbiBlbWFpbCBSRkNzLCBzb21lCitkbyBub3QuICBFdmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KK2JyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MsIHN1Y2ggYXMgZ2VuZXJhdGluZyBlbWFpbHMgdGhhdAoraW50ZXJvcGVyYXRlIHdpdGggZW1haWwgc2VydmVycyB0aGF0IGRvIG5vdCB0aGVtc2VsdmVzIGZvbGxvdyB0aGUgc3RhbmRhcmRzLCBvcgordGhhdCBpbXBsZW1lbnQgZXh0ZW5zaW9ucyB5b3Ugd2FudCB0byB1c2UgaW4gd2F5cyB0aGF0IHZpb2xhdGUgdGhlCitzdGFuZGFyZHMuCiAKIFBvbGljeSBvYmplY3RzIGdpdmUgdGhlIGVtYWlsIHBhY2thZ2UgdGhlIGZsZXhpYmlsaXR5IHRvIGhhbmRsZSBhbGwgdGhlc2UKIGRpc3BhcmF0ZSB1c2UgY2FzZXMuCkBAIC0zMSwyNyArMzQsNDAgQEAKIGVtYWlsIHBhY2thZ2UgdG8gYWx0ZXIgdGhlIGRlZmF1bHQgYmVoYXZpb3IuICBUaGUgc2V0dGFibGUgdmFsdWVzIGFuZCB0aGVpcgogZGVmYXVsdHMgYXJlIGRlc2NyaWJlZCBiZWxvdy4KIAotVGhlcmUgaXMgYSBkZWZhdWx0IHBvbGljeSB1c2VkIGJ5IGFsbCBjbGFzc2VzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiAgVGhpcwotcG9saWN5IGlzIG5hbWVkIDpjbGFzczpgQ29tcGF0MzJgLCB3aXRoIGEgY29ycmVzcG9uZGluZyBwcmUtZGVmaW5lZCBpbnN0YW5jZQotbmFtZWQgOmNvbnN0OmBjb21wYXQzMmAuICBJdCBwcm92aWRlcyBmb3IgY29tcGxldGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoaW4KLXNvbWUgY2FzZXMsIGluY2x1ZGluZyBidWcgY29tcGF0aWJpbGl0eSkgd2l0aCB0aGUgcHJlLVB5dGhvbjMuMyB2ZXJzaW9uIG9mIHRoZQotZW1haWwgcGFja2FnZS4KK1RoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBhbGwgb2YKK3RoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBjbGFzc2VzIGFuZCB0aGUgcmVsYXRlZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMsIGFuZCBmb3IKK3RoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLCB0aGlzIGlzIHRoZSA6Y2xhc3M6YENvbXBhdDMyYAorcG9saWN5LCB2aWEgaXRzIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UgOmNvbnN0OmBjb21wYXQzMmAuICBUaGlzCitwb2xpY3kgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluIHNvbWUgY2FzZXMsIGluY2x1ZGluZworYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4KKworVGhpcyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKnBvbGljeSoga2V5d29yZCB0bworOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGlzIHRoZSA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwb2xpY3ksIHZpYQoraXRzIHByZS1kZWZpbmVkIGluc3RhbmNlIDpkYXRhOmB+ZGVmYXVsdGAuCisKK1doZW4gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LiAgSWYgdGhlIG1lc3NhZ2UgaXMgY3JlYXRlZCBieSBhCis6bW9kOmB+ZW1haWwucGFyc2VyYCwgYSBwb2xpY3kgcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkKK3RoZSBtZXNzYWdlIGl0IGNyZWF0ZXMuICBJZiB0aGUgbWVzc2FnZSBpcyBjcmVhdGVkIGJ5IHRoZSBwcm9ncmFtLCB0aGVuIHRoZQorcG9saWN5IGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBpdCBpcyBjcmVhdGVkLiAgV2hlbiBhIG1lc3NhZ2UgaXMgcGFzc2VkIHRvIGEKKzptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLCB0aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBtZXNzYWdlIGJ5CitkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvIHBhc3MgYSBzcGVjaWZpYyBwb2xpY3kgdG8gdGhlIGdlbmVyYXRvciB0aGF0IHdpbGwKK292ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uIHRoZSBtZXNzYWdlIG9iamVjdC4KKworVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqcG9saWN5KiBrZXl3b3JkIGZvciB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBjbGFzc2VzCithbmQgdGhlIHBhcnNlciBjb252ZW5pZW5jZSBmdW5jdGlvbnMgKip3aWxsIGJlIGNoYW5naW5nKiogaW4gYSBmdXR1cmUgdmVyc2lvbiBvZgorUHl0aG9uLiAgVGhlcmVmb3JlIHlvdSBzaG91bGQgKiphbHdheXMgc3BlY2lmeSBleHBsaWNpdGx5IHdoaWNoIHBvbGljeSB5b3Ugd2FudAordG8gdXNlKiogd2hlbiBjYWxsaW5nIGFueSBvZiB0aGUgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiB0aGUKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIG1vZHVsZS4KIAogVGhlIGZpcnN0IHBhcnQgb2YgdGhpcyBkb2N1bWVudGF0aW9uIGNvdmVycyB0aGUgZmVhdHVyZXMgb2YgOmNsYXNzOmBQb2xpY3lgLCBhbgotOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgICB0aGF0IGRlZmluZXMgdGhlIGZlYXR1cmVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwKKzp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCB0aGF0IGRlZmluZXMgdGhlIGZlYXR1cmVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwKIHBvbGljeSBvYmplY3RzLCBpbmNsdWRpbmcgOmNvbnN0OmBjb21wYXQzMmAuICBUaGlzIGluY2x1ZGVzIGNlcnRhaW4gaG9vawogbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQgaW50ZXJuYWxseSBieSB0aGUgZW1haWwgcGFja2FnZSwgd2hpY2ggYSBjdXN0b20gcG9saWN5Ci1jb3VsZCBvdmVycmlkZSB0byBvYnRhaW4gZGlmZmVyZW50IGJlaGF2aW9yLgotCi1XaGVuIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY3JlYXRlZCwgaXQgYWNxdWlyZXMgYSBwb2xpY3kuCi1CeSBkZWZhdWx0IHRoaXMgd2lsbCBiZSA6Y29uc3Q6YGNvbXBhdDMyYCwgYnV0IGEgZGlmZmVyZW50IHBvbGljeSBjYW4gYmUKLXNwZWNpZmllZC4gIElmIHRoZSBgYE1lc3NhZ2VgYCBpcyBjcmVhdGVkIGJ5IGEgOm1vZDpgfmVtYWlsLnBhcnNlcmAsIGEgcG9saWN5Ci1wYXNzZWQgdG8gdGhlIHBhcnNlciB3aWxsIGJlIHRoZSBwb2xpY3kgdXNlZCBieSB0aGUgYGBNZXNzYWdlYGAgaXQgY3JlYXRlcy4gIElmCi10aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSB0aGUgcHJvZ3JhbSwgdGhlbiB0aGUgcG9saWN5IGNhbiBiZSBzcGVjaWZpZWQKLXdoZW4gaXQgaXMgY3JlYXRlZC4gIFdoZW4gYSBgYE1lc3NhZ2VgYCBpcyBwYXNzZWQgdG8gYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwKLXRoZSBnZW5lcmF0b3IgdXNlcyB0aGUgcG9saWN5IGZyb20gdGhlIGBgTWVzc2FnZWBgIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIGFsc28KLXBhc3MgYSBzcGVjaWZpYyBwb2xpY3kgdG8gdGhlIGdlbmVyYXRvciB0aGF0IHdpbGwgb3ZlcnJpZGUgdGhlIG9uZSBzdG9yZWQgb24KLXRoZSBgYE1lc3NhZ2VgYCBvYmplY3QuCitjb3VsZCBvdmVycmlkZSB0byBvYnRhaW4gZGlmZmVyZW50IGJlaGF2aW9yLiAgVGhlIHNlY29uZCBwYXJ0IGRlc2NyaWJlcyB0aGUKK2NvbmNyZXRlIGNsYXNzZXMgOmNsYXNzOmBFbWFpbFBvbGljeWAgYW5kIDpjbGFzczpgQ29tcGF0MzJgLCB3aGljaCBpbXBsZW1lbnQKK3RoZSBob29rcyB0aGF0IHByb3ZpZGUgdGhlIHN0YW5kYXJkIGJlaGF2aW9yIGFuZCB0aGUgYmFja3dhcmQgY29tcGF0aWJsZQorYmVoYXZpb3IgYW5kIGZlYXR1cmVzLCByZXNwZWN0aXZlbHkuCiAKIDpjbGFzczpgUG9saWN5YCBpbnN0YW5jZXMgYXJlIGltbXV0YWJsZSwgYnV0IHRoZXkgY2FuIGJlIGNsb25lZCwgYWNjZXB0aW5nIHRoZQogc2FtZSBrZXl3b3JkIGFyZ3VtZW50cyBhcyB0aGUgY2xhc3MgY29uc3RydWN0b3IgYW5kIHJldHVybmluZyBhIG5ldwpAQCAtMTQ3LDYgKzE2Myw3IEBACiAgICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLCBhbmQgdGh1cyB2YWx1ZXMgZm9yIHRoZQogICAgZm9sbG93aW5nIG1heSBiZSBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGFueSBwb2xpY3kgY2xhc3M6CiAKKwogICAgLi4gYXR0cmlidXRlOjogbWF4X2xpbmVfbGVuZ3RoCiAKICAgICAgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgbGluZSBpbiB0aGUgc2VyaWFsaXplZCBvdXRwdXQsIG5vdCBjb3VudGluZyB0aGUKQEAgLTE1NCwxMiArMTcxLDE0IEBACiAgICAgICBgYDBgYCBvciA6Y29uc3Q6YE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIGxpbmUgd3JhcHBpbmcgc2hvdWxkIGJlCiAgICAgICBkb25lIGF0IGFsbC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBsaW5lc2VwCiAKICAgICAgIFRoZSBzdHJpbmcgdG8gYmUgdXNlZCB0byB0ZXJtaW5hdGUgbGluZXMgaW4gc2VyaWFsaXplZCBvdXRwdXQuICBUaGUKICAgICAgIGRlZmF1bHQgaXMgYGBcbmBgIGJlY2F1c2UgdGhhdCdzIHRoZSBpbnRlcm5hbCBlbmQtb2YtbGluZSBkaXNjaXBsaW5lIHVzZWQKICAgICAgIGJ5IFB5dGhvbiwgdGhvdWdoIGBgXHJcbmBgIGlzIHJlcXVpcmVkIGJ5IHRoZSBSRkNzLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IGN0ZV90eXBlCiAKICAgICAgIENvbnRyb2xzIHRoZSB0eXBlIG9mIENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmdzIHRoYXQgbWF5IGJlIG9yIGFyZQpAQCAtMTc0LDggKzE5Myw4IEBACiAKICAgICAgIGBgOGJpdGBgICBkYXRhIGlzIG5vdCBjb25zdHJhaW5lZCB0byBiZSA3IGJpdCBjbGVhbi4gIERhdGEgaW4gaGVhZGVycyBpcwogICAgICAgICAgICAgICAgIHN0aWxsIHJlcXVpcmVkIHRvIGJlIEFTQ0lJLW9ubHkgYW5kIHNvIHdpbGwgYmUgZW5jb2RlZCAoc2VlCi0gICAgICAgICAgICAgICAgJ2JpbmFyeV9mb2xkJyBiZWxvdyBmb3IgYW4gZXhjZXB0aW9uKSwgYnV0IGJvZHkgcGFydHMgbWF5IHVzZQotICAgICAgICAgICAgICAgIHRoZSBgYDhiaXRgYCBDVEUuCisgICAgICAgICAgICAgICAgOm1ldGg6YGZvbGRfYmluYXJ5YCBhbmQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBiZWxvdyBmb3IKKyAgICAgICAgICAgICAgICBleGNlcHRpb25zKSwgYnV0IGJvZHkgcGFydHMgbWF5IHVzZSB0aGUgYGA4Yml0YGAgQ1RFLgogICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAgICAgICBBIGBgY3RlX3R5cGVgYCB2YWx1ZSBvZiBgYDhiaXRgYCBvbmx5IHdvcmtzIHdpdGggYGBCeXRlc0dlbmVyYXRvcmBgLCBub3QKQEAgLTE4Myw2ICsyMDIsNyBAQAogICAgICAgYGBHZW5lcmF0b3JgYCBpcyBvcGVyYXRpbmcgdW5kZXIgYSBwb2xpY3kgdGhhdCBzcGVjaWZpZXMKICAgICAgIGBgY3RlX3R5cGU9OGJpdGBgLCBpdCB3aWxsIGFjdCBhcyBpZiBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAuCiAKKwogICAgLi4gYXR0cmlidXRlOjogcmFpc2Vfb25fZGVmZWN0CiAKICAgICAgIElmIDpjb25zdDpgVHJ1ZWAsIGFueSBkZWZlY3RzIGVuY291bnRlcmVkIHdpbGwgYmUgcmFpc2VkIGFzIGVycm9ycy4gIElmCkBAIC0xOTAsNyArMjEwLDYgQEAKICAgICAgIDptZXRoOmByZWdpc3Rlcl9kZWZlY3RgIG1ldGhvZC4KIAogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXF8KIAogICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgbGluZXMgc3RhcnRpbmcgd2l0aCAqIkZyb20gIiogaW4gdGhlIGJvZHkgYXJlCkBAIC0yMDEsMTkgKzIyMCwzMSBAQAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAgICAgICAgICBUaGUgKm1hbmdsZV9mcm9tXyogcGFyYW1ldGVyLgogCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1lc3NhZ2VfZmFjdG9yeQorCisgICAgICBBIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNvbnN0cnVjdGluZyBhIG5ldyBlbXB0eSBtZXNzYWdlIG9iamVjdC4gIFVzZWQKKyAgICAgIGJ5IHRoZSBwYXJzZXIgd2hlbiBidWlsZGluZyBtZXNzYWdlcy4gIERlZmF1bHRzIHRvIGBgTm9uZWBgLCBpbgorICAgICAgd2hpY2ggY2FzZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGlzIHVzZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAgICBUaGUgZm9sbG93aW5nIDpjbGFzczpgUG9saWN5YCBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGNvZGUgdXNpbmcKICAgIHRoZSBlbWFpbCBsaWJyYXJ5IHRvIGNyZWF0ZSBwb2xpY3kgaW5zdGFuY2VzIHdpdGggY3VzdG9tIHNldHRpbmdzOgogCisKICAgIC4uIG1ldGhvZDo6IGNsb25lKCoqa3cpCiAKICAgICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2Ugd2hvc2UgYXR0cmlidXRlcyBoYXZlIHRoZSBzYW1lCiAgICAgICB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGV4Y2VwdCB3aGVyZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZQogICAgICAgZ2l2ZW4gbmV3IHZhbHVlcyBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuCiAKKwogICAgVGhlIHJlbWFpbmluZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGNvZGUsCiAgICBhbmQgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhlIGVtYWlsIHBhY2thZ2UuCiAgICBBIGN1c3RvbSBwb2xpY3kgbXVzdCBpbXBsZW1lbnQgYWxsIG9mIHRoZXNlIG1ldGhvZHMuCiAKKwogICAgLi4gbWV0aG9kOjogaGFuZGxlX2RlZmVjdChvYmosIGRlZmVjdCkKIAogICAgICAgSGFuZGxlIGEgKmRlZmVjdCogZm91bmQgb24gKm9iaiouICBXaGVuIHRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMKQEAgLTIyNCw2ICsyNTUsNyBAQAogICAgICAgaXQgaXMgYGBUcnVlYGAsICpkZWZlY3QqIGlzIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uICBJZiBpdCBpcyBgYEZhbHNlYGAKICAgICAgICh0aGUgZGVmYXVsdCksICpvYmoqIGFuZCAqZGVmZWN0KiBhcmUgcGFzc2VkIHRvIDptZXRoOmByZWdpc3Rlcl9kZWZlY3RgLgogCisKICAgIC4uIG1ldGhvZDo6IHJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdCkKIAogICAgICAgUmVnaXN0ZXIgYSAqZGVmZWN0KiBvbiAqb2JqKi4gIEluIHRoZSBlbWFpbCBwYWNrYWdlLCAqZGVmZWN0KiB3aWxsIGFsd2F5cwpAQCAtMjM2LDE0ICsyNjgsMTYgQEAKICAgICAgIGN1c3RvbSBgYE1lc3NhZ2VgYCBvYmplY3RzKSBzaG91bGQgYWxzbyBwcm92aWRlIHN1Y2ggYW4gYXR0cmlidXRlLAogICAgICAgb3RoZXJ3aXNlIGRlZmVjdHMgaW4gcGFyc2VkIG1lc3NhZ2VzIHdpbGwgcmFpc2UgdW5leHBlY3RlZCBlcnJvcnMuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQogCiAgICAgICBSZXR1cm4gdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgaGVhZGVycyBuYW1lZCAqbmFtZSouCiAKLSAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYAotICAgICAgb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIG5vdCBgYDBgYCBvciBgYE5vbmVgYCwgYW5kIHRoZXJlIGFyZQotICAgICAgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGggdGhlIG5hbWUgKm5hbWUqIGVxdWFsIHRvIHRoZSB2YWx1ZQotICAgICAgcmV0dXJuZWQsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICAgICBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBub3QKKyAgICAgIGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoIHRoZQorICAgICAgbmFtZSAqbmFtZSogZ3JlYXRoZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgcmV0dXJuZWQsIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgICAgQmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBgYE1lc3NhZ2UuX19zZXRpdGVtX19gYCBpcyB0byBhcHBlbmQgdGhlCiAgICAgICB2YWx1ZSB0byB0aGUgbGlzdCBvZiBoZWFkZXJzLCBpdCBpcyBlYXN5IHRvIGNyZWF0ZSBkdXBsaWNhdGUgaGVhZGVycwpAQCAtMjU1LDYgKzI4OSw3IEBACiAKICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgYGBOb25lYGAgZm9yIGFsbCBoZWFkZXIgbmFtZXMuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCBhIGxpc3Qgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcKQEAgLTI3NCw2ICszMDksNyBAQAogCiAgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSBuYW1lIGFuZCB2YWx1ZSBwcm92aWRlZCBieQpAQCAtMjg5LDYgKzMyNSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKQEAgLTMwNCw2ICszNDEsNyBAQAogCiAgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQpAQCAtMzE2LDYgKzM1NCw3IEBACiAgICAgICAqdmFsdWUqIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuICBUaGVyZSBzaG91bGQgYmUgbm8KICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieSB0aGUgbWV0aG9kLgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgc2FtZSBhcyA6bWV0aDpgZm9sZGAsIGV4Y2VwdCB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUgYQpAQCAtMzI1LDczICszNjQsNiBAQAogICAgICAgY29udmVydGVkIGJhY2sgaW50byBiaW5hcnkgZGF0YSBpbiB0aGUgcmV0dXJuZWQgYnl0ZXMgb2JqZWN0LgogCiAKLS4uIGNsYXNzOjogQ29tcGF0MzIoKiprdykKLQotICAgVGhpcyBjb25jcmV0ZSA6Y2xhc3M6YFBvbGljeWAgaXMgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcG9saWN5LiAgSXQKLSAgIHJlcGxpY2F0ZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuICBUaGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG1vZHVsZSBhbHNvIGRlZmluZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywKLSAgIDpjb25zdDpgY29tcGF0MzJgLCB0aGF0IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgcG9saWN5LiAgVGh1cyB0aGUgZGVmYXVsdAotICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIuCi0KLSAgIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBoYXZlIHZhbHVlcyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUKLSAgIDpjbGFzczpgUG9saWN5YCBkZWZhdWx0OgotCi0gICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KLQotICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCi0KLSAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKLSAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgotCi0gICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQotCi0gICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKLSAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgotICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKLSAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgotCi0gICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCi0KLSAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQotCi0gICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgotICAgICAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCi0KLSAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZwotICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKLSAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBOb24tQVNDSUkgYmluYXJ5IGRhdGEgYXJlCi0gICAgICBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgotCi0gICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKLQotICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCi0gICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcwotICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIElmIGBgY3RlX3R5cGVgYCBpcwotICAgICAgYGA3Yml0YGAsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYAotICAgICAgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZwotICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgotCi0KLUFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgIGlzIHByb3ZpZGVkIGFzIGEgbW9kdWxlIGNvbnN0YW50OgotCi0uLiBkYXRhOjogY29tcGF0MzIKLQotICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAsIHByb3ZpZGluZyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQotICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4KLQotCi0uLiBub3RlOjoKLQotICAgVGhlIGRvY3VtZW50YXRpb24gYmVsb3cgZGVzY3JpYmVzIG5ldyBwb2xpY2llcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUKLSAgIHN0YW5kYXJkIGxpYnJhcnkgb24gYSA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KLSAgIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBmZWF0dXJlKQotICAgbWF5IG9jY3VyIGlmIGRlZW1lZCBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogCiAuLiBjbGFzczo6IEVtYWlsUG9saWN5KCoqa3cpCiAKQEAgLTQwNCw5ICszNzYsMTUgQEAKICAgIG9uIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4gIFRoZSBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobSBmdWxseSBpbXBsZW1lbnQKICAgIDpyZmM6YDIwNDdgIGFuZCA6cmZjOmA1MzIyYC4KIAorICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YAorICAgYXR0cmlidXRlIGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8gYWxsCiAgICBwb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KKworCiAgICAuLiBhdHRyaWJ1dGU6OiB1dGY4CiAKICAgICAgIElmIGBgRmFsc2VgYCwgZm9sbG93IDpyZmM6YDUzMjJgLCBzdXBwb3J0aW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluCkBAIC00MTUsMTMgKzM5MywxNCBAQAogICAgICAgZm9ybWF0dGVkIGluIHRoaXMgd2F5IG1heSBiZSBwYXNzZWQgdG8gU01UUCBzZXJ2ZXJzIHRoYXQgc3VwcG9ydAogICAgICAgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKDpyZmM6YDY1MzFgKS4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiByZWZvbGRfc291cmNlCiAKICAgICAgIElmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBvcmlnaW5hdGVkIGZyb20gYQogICAgICAgOm1vZDpgfmVtYWlsLnBhcnNlcmAgKGFzIG9wcG9zZWQgdG8gYmVpbmcgc2V0IGJ5IGEgcHJvZ3JhbSksIHRoaXMKICAgICAgIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZCB0aGF0IHZhbHVlCi0gICAgICB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8gc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzCi0gICAgICBhcmU6CisgICAgICB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8gc2VyaWFsaXplZCBmb3JtLiAgVGhlIHBvc3NpYmxlCisgICAgICB2YWx1ZXMgYXJlOgogCiAgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICBgYG5vbmVgYCAgYWxsIHNvdXJjZSB2YWx1ZXMgdXNlIG9yaWdpbmFsIGZvbGRpbmcKQEAgLTQzNCwyMyArNDEzLDI0IEBACiAKICAgICAgIFRoZSBkZWZhdWx0IGlzIGBgbG9uZ2BgLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IGhlYWRlcl9mYWN0b3J5CiAKICAgICAgIEEgY2FsbGFibGUgdGhhdCB0YWtlcyB0d28gYXJndW1lbnRzLCBgYG5hbWVgYCBhbmQgYGB2YWx1ZWBgLCB3aGVyZQogICAgICAgYGBuYW1lYGAgaXMgYSBoZWFkZXIgZmllbGQgbmFtZSBhbmQgYGB2YWx1ZWBgIGlzIGFuIHVuZm9sZGVkIGhlYWRlciBmaWVsZAogICAgICAgdmFsdWUsIGFuZCByZXR1cm5zIGEgc3RyaW5nIHN1YmNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aGF0IGhlYWRlci4gIEEKICAgICAgIGRlZmF1bHQgYGBoZWFkZXJfZmFjdG9yeWBgIChzZWUgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YCkgaXMgcHJvdmlkZWQKLSAgICAgIHRoYXQgdW5kZXJzdGFuZHMgc29tZSBvZiB0aGUgOlJGQzpgNTMyMmAgaGVhZGVyIGZpZWxkIHR5cGVzLiAgKEN1cnJlbnRseQotICAgICAgYWRkcmVzcyBmaWVsZHMgYW5kIGRhdGUgZmllbGRzIGhhdmUgc3BlY2lhbCB0cmVhdG1lbnQsIHdoaWxlIGFsbCBvdGhlcgotICAgICAgZmllbGRzIGFyZSB0cmVhdGVkIGFzIHVuc3RydWN0dXJlZC4gIFRoaXMgbGlzdCB3aWxsIGJlIGNvbXBsZXRlZCBiZWZvcmUKLSAgICAgIHRoZSBleHRlbnNpb24gaXMgbWFya2VkIHN0YWJsZS4pCisgICAgICB0aGF0IHN1cHBvcnRzIGN1c3RvbSBwYXJzaW5nIGZvciB0aGUgdmFyaW91cyBhZGRyZXNzIGFuZCBkYXRlIDpSRkM6YDUzMjJgCisgICAgICBoZWFkZXIgZmllbGQgdHlwZXMsIGFuZCB0aGUgbWFqb3IgTUlNRSBoZWFkZXIgZmllbGQgc3R5cGVzLiAgU3VwcG9ydCBmb3IKKyAgICAgIGFkZGl0aW9uYWwgY3VzdG9tIHBhcnNpbmcgd2lsbCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRlbnRfbWFuYWdlcgogCiAgICAgICBBbiBvYmplY3Qgd2l0aCBhdCBsZWFzdCB0d28gbWV0aG9kczogZ2V0X2NvbnRlbnQgYW5kIHNldF9jb250ZW50LiAgV2hlbgotICAgICAgdGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jb250ZW50YCBvcgotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZCBvZiBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBpcyBjYWxsZWQsIGl0IGNhbGxzIHRoZQorICAgICAgdGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2NvbnRlbnRgIG9yCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2Qgb2YgYW4KKyAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3QgaXMgY2FsbGVkLCBpdCBjYWxscyB0aGUKICAgICAgIGNvcnJlc3BvbmRpbmcgbWV0aG9kIG9mIHRoaXMgb2JqZWN0LCBwYXNzaW5nIGl0IHRoZSBtZXNzYWdlIG9iamVjdCBhcyBpdHMKICAgICAgIGZpcnN0IGFyZ3VtZW50LCBhbmQgYW55IGFyZ3VtZW50cyBvciBrZXl3b3JkcyB0aGF0IHdlcmUgcGFzc2VkIHRvIGl0IGFzCiAgICAgICBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIEJ5IGRlZmF1bHQgYGBjb250ZW50X21hbmFnZXJgYCBpcyBzZXQgdG8KQEAgLTQ2MiwxNiArNDQyLDIyIEBACiAgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0CiAgICBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCiAKICAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgOmF0dHI6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyLm1heF9jb3VudGAgYXR0cmlidXRlIG9mIHRoZQogICAgICAgc3BlY2lhbGl6ZWQgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgdGhlIGhlYWRlciB3aXRoIHRoZSBnaXZlbiBuYW1lLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCiAKLSAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCBpcyB0aGUgc2FtZSBhcyB0aGF0IGZvciB0aGUKLSAgICAgIDpjbGFzczpgQ29tcGF0MzJgIHBvbGljeS4KKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKwogCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCiAKQEAgLTQ4Miw2ICs0NjgsNyBAQAogICAgICAgdGhlIHZhbHVlLiAgSW4gdGhpcyBjYXNlIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkIGlmIHRoZSBpbnB1dCB2YWx1ZQogICAgICAgY29udGFpbnMgQ1Igb3IgTEYgY2hhcmFjdGVycy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCiAKICAgICAgIElmIHRoZSB2YWx1ZSBoYXMgYSBgYG5hbWVgYCBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCkBAIC00OTAsNiArNDc3LDcgQEAKICAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkIGludG8KICAgICAgIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCiAKICAgICAgIEhlYWRlciBmb2xkaW5nIGlzIGNvbnRyb2xsZWQgYnkgdGhlIDphdHRyOmByZWZvbGRfc291cmNlYCBwb2xpY3kgc2V0dGluZy4KQEAgLTUwOCw2ICs0OTYsNyBAQAogICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgYGByZWZvbGRfc291cmNlYGAgc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YQogICAgICAgdG8gYmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIHNhbWUgYXMgOm1ldGg6YGZvbGRgIGlmIDphdHRyOmB+UG9saWN5LmN0ZV90eXBlYCBpcyBgYDdiaXRgYCwgZXhjZXB0CkBAIC01MTksMjMgKzUwOCwyNyBAQAogICAgICAgYGByZWZvbGRfaGVhZGVyYGAgc2V0dGluZywgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hldGhlciB0aGUKICAgICAgIGJpbmFyeSBkYXRhIGNvbnNpc3RzIG9mIHNpbmdsZSBieXRlIGNoYXJhY3RlcnMgb3IgbXVsdGlieXRlIGNoYXJhY3RlcnMuCiAKKwogVGhlIGZvbGxvd2luZyBpbnN0YW5jZXMgb2YgOmNsYXNzOmBFbWFpbFBvbGljeWAgcHJvdmlkZSBkZWZhdWx0cyBzdWl0YWJsZSBmb3IKIHNwZWNpZmljIGFwcGxpY2F0aW9uIGRvbWFpbnMuICBOb3RlIHRoYXQgaW4gdGhlIGZ1dHVyZSB0aGUgYmVoYXZpb3Igb2YgdGhlc2UKIGluc3RhbmNlcyAoaW4gcGFydGljdWxhciB0aGUgYGBIVFRQYGAgaW5zdGFuY2UpIG1heSBiZSBhZGp1c3RlZCB0byBjb25mb3JtIGV2ZW4KIG1vcmUgY2xvc2VseSB0byB0aGUgUkZDcyByZWxldmFudCB0byB0aGVpciBkb21haW5zLgogCisKIC4uIGRhdGE6OiBkZWZhdWx0CiAKICAgIEFuIGluc3RhbmNlIG9mIGBgRW1haWxQb2xpY3lgYCB3aXRoIGFsbCBkZWZhdWx0cyB1bmNoYW5nZWQuICBUaGlzIHBvbGljeQogICAgdXNlcyB0aGUgc3RhbmRhcmQgUHl0aG9uIGBgXG5gYCBsaW5lIGVuZGluZ3MgcmF0aGVyIHRoYW4gdGhlIFJGQy1jb3JyZWN0CiAgICBgYFxyXG5gYC4KIAorCiAuLiBkYXRhOjogU01UUAogCiAgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgbWVzc2FnZXMgaW4gY29uZm9ybWFuY2Ugd2l0aCB0aGUgZW1haWwgUkZDcy4KICAgIExpa2UgYGBkZWZhdWx0YGAsIGJ1dCB3aXRoIGBgbGluZXNlcGBgIHNldCB0byBgYFxyXG5gYCwgd2hpY2ggaXMgUkZDCiAgICBjb21wbGlhbnQuCiAKKwogLi4gZGF0YTo6IFNNVFBVVEY4CiAKICAgIFRoZSBzYW1lIGFzIGBgU01UUGBgIGV4Y2VwdCB0aGF0IDphdHRyOmB+RW1haWxQb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAuCkBAIC01NDQsMTEgKzUzNywxMyBAQAogICAgc2VuZGVyIG9yIHJlY2lwaWVudCBhZGRyZXNzZXMgaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycyAodGhlCiAgICA6bWV0aDpgc210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZWAgbWV0aG9kIGhhbmRsZXMgdGhpcyBhdXRvbWF0aWNhbGx5KS4KIAorCiAuLiBkYXRhOjogSFRUUAogCiAgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgaGVhZGVycyB3aXRoIGZvciB1c2UgaW4gSFRUUCB0cmFmZmljLiAgTGlrZQogICAgYGBTTVRQYGAgZXhjZXB0IHRoYXQgYGBtYXhfbGluZV9sZW5ndGhgYCBpcyBzZXQgdG8gYGBOb25lYGAgKHVubGltaXRlZCkuCiAKKwogLi4gZGF0YTo6IHN0cmljdAogCiAgICBDb252ZW5pZW5jZSBpbnN0YW5jZS4gIFRoZSBzYW1lIGFzIGBgZGVmYXVsdGBgIGV4Y2VwdCB0aGF0CkBAIC01NTcsNiArNTUyLDcgQEAKIAogICAgICAgICBzb21lcG9saWN5ICsgcG9saWN5LnN0cmljdAogCisKIFdpdGggYWxsIG9mIHRoZXNlIDpjbGFzczpgRW1haWxQb2xpY2llcyA8LkVtYWlsUG9saWN5PmAsIHRoZSBlZmZlY3RpdmUgQVBJIG9mCiB0aGUgZW1haWwgcGFja2FnZSBpcyBjaGFuZ2VkIGZyb20gdGhlIFB5dGhvbiAzLjIgQVBJIGluIHRoZSBmb2xsb3dpbmcgd2F5czoKIApAQCAtNTczLDcgKzU2OSw3IEBACiAgICAgIGFuZCBhbGxvd2VkLgogCiBGcm9tIHRoZSBhcHBsaWNhdGlvbiB2aWV3LCB0aGlzIG1lYW5zIHRoYXQgYW55IGhlYWRlciBvYnRhaW5lZCB0aHJvdWdoIHRoZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyBhIGhlYWRlciBvYmplY3Qgd2l0aCBleHRyYQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGlzIGEgaGVhZGVyIG9iamVjdCB3aXRoIGV4dHJhCiBhdHRyaWJ1dGVzLCB3aG9zZSBzdHJpbmcgdmFsdWUgaXMgdGhlIGZ1bGx5IGRlY29kZWQgdW5pY29kZSB2YWx1ZSBvZiB0aGUKIGhlYWRlci4gIExpa2V3aXNlLCBhIGhlYWRlciBtYXkgYmUgYXNzaWduZWQgYSBuZXcgdmFsdWUsIG9yIGEgbmV3IGhlYWRlcgogY3JlYXRlZCwgdXNpbmcgYSB1bmljb2RlIHN0cmluZywgYW5kIHRoZSBwb2xpY3kgd2lsbCB0YWtlIGNhcmUgb2YgY29udmVydGluZwpAQCAtNTgxLDMgKzU3Nyw3NSBAQAogCiBUaGUgaGVhZGVyIG9iamVjdHMgYW5kIHRoZWlyIGF0dHJpYnV0ZXMgYXJlIGRlc2NyaWJlZCBpbgogOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KKworCisKKy4uIGNsYXNzOjogQ29tcGF0MzIoKiprdykKKworICAgVGhpcyBjb25jcmV0ZSA6Y2xhc3M6YFBvbGljeWAgaXMgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcG9saWN5LiAgSXQKKyAgIHJlcGxpY2F0ZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuICBUaGUKKyAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG1vZHVsZSBhbHNvIGRlZmluZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywKKyAgIDpjb25zdDpgY29tcGF0MzJgLCB0aGF0IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgcG9saWN5LiAgVGh1cyB0aGUgZGVmYXVsdAorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIuCisKKyAgIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBoYXZlIHZhbHVlcyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgIDpjbGFzczpgUG9saWN5YCBkZWZhdWx0OgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXworCisgICAgICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYC4KKworCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCisgICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQorCisgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKKyAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgorICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKKyAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKyAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBOb24tQVNDSUkgYmluYXJ5IGRhdGEgYXJlCisgICAgICBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorCisKKyAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgSWYgYGBjdGVfdHlwZWBgIGlzCisgICAgICBgYDdiaXRgYCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgCisgICAgICBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nCisgICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCisKKworLi4gZGF0YTo6IGNvbXBhdDMyCisKKyAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgLCBwcm92aWRpbmcgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIGZlYXR1cmUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CmluZGV4IGU4YmIwMmIuLmM0MTg3ZGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKQEAgLTMsNTAgKzMsMTA0IEBACiAKIC4uIG1vZHVsZTo6IGVtYWlsCiAgICA6c3lub3BzaXM6IFBhY2thZ2Ugc3VwcG9ydGluZyB0aGUgcGFyc2luZywgbWFuaXB1bGF0aW5nLCBhbmQgZ2VuZXJhdGluZwotICAgICAgICAgICAgICBlbWFpbCBtZXNzYWdlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLgotCi0uLiBtb2R1bGVhdXRob3I6OiBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ci0uLiBzZWN0aW9uYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgotLi4gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZXMuCisuLiBtb2R1bGVhdXRob3I6OiBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+LAorICAgICAgICAgICAgICAgICAgUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL19faW5pdF9fLnB5YAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgYSBsaWJyYXJ5IGZvciBtYW5hZ2luZyBlbWFpbCBtZXNzYWdlcywgaW5jbHVkaW5nCi1NSU1FIGFuZCBvdGhlciA6cmZjOmAyODIyYFwgLWJhc2VkIG1lc3NhZ2UgZG9jdW1lbnRzLiAgSXQgaXMgc3BlY2lmaWNhbGx5ICpub3QqCi1kZXNpZ25lZCB0byBkbyBhbnkgc2VuZGluZyBvZiBlbWFpbCBtZXNzYWdlcyB0byBTTVRQICg6cmZjOmAyODIxYCksIE5OVFAsIG9yCi1vdGhlciBzZXJ2ZXJzOyB0aG9zZSBhcmUgZnVuY3Rpb25zIG9mIG1vZHVsZXMgc3VjaCBhcyA6bW9kOmBzbXRwbGliYCBhbmQKLTptb2Q6YG5udHBsaWJgLiBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgYXR0ZW1wdHMgdG8gYmUgYXMgUkZDLWNvbXBsaWFudCBhcwotcG9zc2libGUsIHN1cHBvcnRpbmcgaW4gYWRkaXRpb24gdG8gOnJmYzpgMjgyMmAsIHN1Y2ggTUlNRS1yZWxhdGVkIFJGQ3MgYXMKLTpyZmM6YDIwNDVgLCA6cmZjOmAyMDQ2YCwgOnJmYzpgMjA0N2AsIGFuZCA6cmZjOmAyMjMxYC4KK1RoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyBhIGxpYnJhcnkgZm9yIG1hbmFnaW5nIGVtYWlsIG1lc3NhZ2VzLiAgSXQgaXMKK3NwZWNpZmljYWxseSAqbm90KiBkZXNpZ25lZCB0byBkbyBhbnkgc2VuZGluZyBvZiBlbWFpbCBtZXNzYWdlcyB0byBTTVRQCisoOnJmYzpgMjgyMWApLCBOTlRQLCBvciBvdGhlciBzZXJ2ZXJzOyB0aG9zZSBhcmUgZnVuY3Rpb25zIG9mIG1vZHVsZXMgc3VjaCBhcworOm1vZDpgc210cGxpYmAgYW5kIDptb2Q6YG5udHBsaWJgLiAgVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGF0dGVtcHRzIHRvIGJlIGFzCitSRkMtY29tcGxpYW50IGFzIHBvc3NpYmxlLCBzdXBwb3J0aW5nIDpyZmM6YDUyMzNgIGFuZCA6cmZjOmA2NTMyYCwgYXMgd2VsbCBhcworc3VjaCBNSU1FLXJlbGF0ZWQgUkZDcyBhcyA6cmZjOmAyMDQ1YCwgOnJmYzpgMjA0NmAsIDpyZmM6YDIwNDdgLCA6cmZjOmAyMTgzYCwKK2FuZCA6cmZjOmAyMjMxYC4KIAotVGhlIHByaW1hcnkgZGlzdGluZ3Vpc2hpbmcgZmVhdHVyZSBvZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhhdCBpdCBzcGxpdHMKLXRoZSBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIG9mIGVtYWlsIG1lc3NhZ2VzIGZyb20gdGhlIGludGVybmFsICpvYmplY3QgbW9kZWwqCi1yZXByZXNlbnRhdGlvbiBvZiBlbWFpbC4gIEFwcGxpY2F0aW9ucyB1c2luZyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgZGVhbAotcHJpbWFyaWx5IHdpdGggb2JqZWN0czsgeW91IGNhbiBhZGQgc3ViLW9iamVjdHMgdG8gbWVzc2FnZXMsIHJlbW92ZSBzdWItb2JqZWN0cwotZnJvbSBtZXNzYWdlcywgY29tcGxldGVseSByZS1hcnJhbmdlIHRoZSBjb250ZW50cywgZXRjLiAgVGhlcmUgaXMgYSBzZXBhcmF0ZQotcGFyc2VyIGFuZCBhIHNlcGFyYXRlIGdlbmVyYXRvciB3aGljaCBoYW5kbGVzIHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZsYXQgdGV4dAotdG8gdGhlIG9iamVjdCBtb2RlbCwgYW5kIHRoZW4gYmFjayB0byBmbGF0IHRleHQgYWdhaW4uICBUaGVyZSBhcmUgYWxzbyBoYW5keQotc3ViY2xhc3NlcyBmb3Igc29tZSBjb21tb24gTUlNRSBvYmplY3QgdHlwZXMsIGFuZCBhIGZldyBtaXNjZWxsYW5lb3VzIHV0aWxpdGllcwotdGhhdCBoZWxwIHdpdGggc3VjaCBjb21tb24gdGFza3MgYXMgZXh0cmFjdGluZyBhbmQgcGFyc2luZyBtZXNzYWdlIGZpZWxkIHZhbHVlcywKLWNyZWF0aW5nIFJGQy1jb21wbGlhbnQgZGF0ZXMsIGV0Yy4KK1RoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGUgZW1haWwgcGFja2FnZSBjYW4gYmUgZGl2aWRlZCBpbnRvIHRocmVlIG1ham9yCitjb21wb25lbnRzLCBwbHVzIGEgZm91cnRoIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3RoZXIKK2NvbXBvbmVudHMuCisKK1RoZSBjZW50cmFsIGNvbXBvbmVudCBvZiB0aGUgcGFja2FnZSBpcyBhbiAib2JqZWN0IG1vZGVsIiB0aGF0IHJlcHJlc2VudHMgZW1haWwKK21lc3NhZ2VzLiAgQW4gYXBwbGljYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBhY2thZ2UgcHJpbWFyaWx5IHRocm91Z2ggdGhlCitvYmplY3QgbW9kZWwgaW50ZXJmYWNlIGRlZmluZWQgaW4gdGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBzdWItbW9kdWxlLiAgVGhlCithcHBsaWNhdGlvbiBjYW4gdXNlIHRoaXMgQVBJIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgYW4gZXhpc3RpbmcgZW1haWwsIHRvCitjb25zdHJ1Y3QgYSBuZXcgZW1haWwsIG9yIHRvIGFkZCBvciByZW1vdmUgZW1haWwgc3ViY29tcG9uZW50cyB0aGF0IHRoZW1zZWx2ZXMKK3VzZSB0aGUgc2FtZSBvYmplY3QgbW9kZWwgaW50ZXJmYWNlLiAgVGhhdCBpcywgZm9sbG93aW5nIHRoZSBuYXR1cmUgb2YgZW1haWwKK21lc3NhZ2VzIGFuZCB0aGVpciBNSU1FIHN1YmNvbXBvbmVudHMsIHRoZSBlbWFpbCBvYmplY3QgbW9kZWwgaXMgYSB0cmVlCitzdHJ1Y3R1cmUgb2Ygb2JqZWN0cyB0aGF0IGFsbCBwcm92aWRlIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK0FQSS4KKworVGhlIG90aGVyIHR3byBtYWpvciBjb21wb25lbnRzIG9mIHRoZSBwYWNrYWdlIGFyZSB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgYW5kCit0aGUgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAuICBUaGUgcGFyc2VyIHRha2VzIHRoZSBzZXJpYWxpemVkIHZlcnNpb24gb2YgYW4KK2VtYWlsIG1lc3NhZ2UgKGEgc3RyZWFtIG9mIGJ5dGVzKSBhbmQgY29udmVydHMgaXQgaW50byBhIHRyZWUgb2YKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLiAgVGhlIGdlbmVyYXRvciB0YWtlcyBhbgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGFuZCB0dXJucyBpdCBiYWNrIGludG8gYSBzZXJpYWxpemVkIGJ5dGUKK3N0cmVhbS4gIChUaGUgcGFyc2VyIGFuZCBnZW5lcmF0b3IgYWxzbyBoYW5kbGUgc3RyZWFtcyBvZiB0ZXh0IGNoYXJhY3RlcnMsIGJ1dAordGhpcyB1c2FnZSBpcyBkaXNjb3VyYWdlZCBhcyBpdCBpcyB0b28gZWFzeSB0byBlbmQgdXAgd2l0aCBtZXNzYWdlcyB0aGF0IGFyZQorbm90IHZhbGlkIGluIG9uZSB3YXkgb3IgYW5vdGhlci4pCisKK1RoZSBjb250cm9sIGNvbXBvbmVudCBpcyB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlLiAgRXZlcnkKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCwgZXZlcnkgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsIGFuZCBldmVyeQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgaGFzIGFuIGFzc29jaWF0ZWQgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQKK2NvbnRyb2xzIGl0cyBiZWhhdmlvci4gIFVzdWFsbHkgYW4gYXBwbGljYXRpb24gb25seSBuZWVkcyB0byBzcGVjaWZ5IHRoZSBwb2xpY3kKK3doZW4gYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGlzIGNyZWF0ZWQsIGVpdGhlciBieSBkaXJlY3RseQoraW5zdGFudGlhdGluZyBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgIHRvIGNyZWF0ZSBhIG5ldyBlbWFpbCwKK29yIGJ5IHBhcnNpbmcgYW4gaW5wdXQgc3RyZWFtIHVzaW5nIGEgOm1vZDpgfmVtYWlsLnBhcnNlcmAuICBCdXQgdGhlIHBvbGljeSBjYW4KK2JlIGNoYW5nZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIHVzaW5nIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAuCitUaGlzIGFsbG93cywgZm9yIGV4YW1wbGUsIGEgZ2VuZXJpYyBlbWFpbCBtZXNzYWdlIHRvIGJlIHBhcnNlZCBmcm9tIGRpc2ssIGJ1dAordG8gc2VyaWFsaXplIGl0IHVzaW5nIHN0YW5kYXJkIFNNVFAgc2V0dGluZ3Mgd2hlbiBzZW5kaW5nIGl0IHRvIGFuIGVtYWlsCitzZXJ2ZXIuCisKK1RoZSBlbWFpbCBwYWNrYWdlIGRvZXMgaXRzIGJlc3QgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiB0aGUgdmFyaW91cyBnb3Zlcm5pbmcKK1JGQ3MgZnJvbSB0aGUgYXBwbGljYXRpb24uICBDb25jZXB0dWFsbHkgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBhYmxlIHRvCit0cmVhdCB0aGUgZW1haWwgbWVzc2FnZSBhcyBhIHN0cnVjdHVyZWQgdHJlZSBvZiB1bmljb2RlIHRleHQgYW5kIGJpbmFyeQorYXR0YWNobWVudHMsIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGhvdyB0aGVzZSBhcmUgcmVwcmVzZW50ZWQgd2hlbgorc2VyaWFsaXplZC4gIEluIHByYWN0aWNlLCBob3dldmVyLCBpdCBpcyBvZnRlbiBuZWNlc3NhcnkgdG8gYmUgYXdhcmUgb2YgYXQKK2xlYXN0IHNvbWUgb2YgdGhlIHJ1bGVzIGdvdmVybmluZyBNSU1FIG1lc3NhZ2VzIGFuZCB0aGVpciBzdHJ1Y3R1cmUsCitzcGVjaWZpY2FsbHkgdGhlIG5hbWVzIGFuZCBuYXR1cmUgb2YgdGhlIE1JTUUgImNvbnRlbnQgdHlwZXMiIGFuZCBob3cgdGhleQoraWRlbnRpZnkgbXVsdGlwYXJ0IGRvY3VtZW50cy4gIEZvciB0aGUgbW9zdCBwYXJ0IHRoaXMga25vd2xlZGdlIHNob3VsZCBvbmx5IGJlCityZXF1aXJlZCBmb3IgbW9yZSBjb21wbGV4IGFwcGxpY2F0aW9ucywgYW5kIGV2ZW4gdGhlbiBpdCBzaG91bGQgb25seSBiZSB0aGUKK2hpZ2ggbGV2ZWwgc3RydWN0dXJlIGluIHF1ZXN0aW9uLCBhbmQgbm90IHRoZSBkZXRhaWxzIG9mIGhvdyB0aG9zZSBzdHJ1Y3R1cmVzCithcmUgcmVwcmVzZW50ZWQuICBTaW5jZSBNSU1FIGNvbnRlbnQgdHlwZXMgYXJlIHVzZWQgd2lkZWx5IGluIG1vZGVybiBpbnRlcm5ldAorc29mdHdhcmUgKG5vdCBqdXN0IGVtYWlsKSwgdGhpcyB3aWxsIGJlIGEgZmFtaWxpYXIgY29uY2VwdCB0byBtYW55IHByb2dyYW1tZXJzLgogCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZS4KLVRoZSBvcmRlcmluZyBmb2xsb3dzIGEgcHJvZ3Jlc3Npb24gdGhhdCBzaG91bGQgYmUgY29tbW9uIGluIGFwcGxpY2F0aW9uczogYW4KLWVtYWlsIG1lc3NhZ2UgaXMgcmVhZCBhcyBmbGF0IHRleHQgZnJvbSBhIGZpbGUgb3Igb3RoZXIgc291cmNlLCB0aGUgdGV4dCBpcwotcGFyc2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdCBzdHJ1Y3R1cmUgb2YgdGhlIGVtYWlsIG1lc3NhZ2UsIHRoaXMgc3RydWN0dXJlIGlzCi1tYW5pcHVsYXRlZCwgYW5kIGZpbmFsbHksIHRoZSBvYmplY3QgdHJlZSBpcyByZW5kZXJlZCBiYWNrIGludG8gZmxhdCB0ZXh0LgorV2Ugc3RhcnQgd2l0aCB0aGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIG9iamVjdCBtb2RlbCwgd2hpY2ggaXMgdGhlIHByaW1hcnkKK2ludGVyZmFjZSBhbiBhcHBsaWNhdGlvbiB3aWxsIHVzZSwgYW5kIGZvbGxvdyB0aGF0IHdpdGggdGhlCis6bW9kOmB+ZW1haWwucGFyc2VyYCBhbmQgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAgY29tcG9uZW50cy4gIFRoZW4gd2UgY292ZXIgdGhlCis6bW9kOmB+ZW1haWwucG9saWN5YCBjb250cm9scywgd2hpY2ggY29tcGxldGVzIHRoZSB0cmVhdG1lbnQgb2YgdGhlIG1haW4KK2NvbXBvbmVudHMgb2YgdGhlIGxpYnJhcnkuCiAKLUl0IGlzIHBlcmZlY3RseSBmZWFzaWJsZSB0byBjcmVhdGUgdGhlIG9iamVjdCBzdHJ1Y3R1cmUgb3V0IG9mIHdob2xlIGNsb3RoIC0tLQotaS5lLiBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIEZyb20gdGhlcmUsIGEgc2ltaWxhciBwcm9ncmVzc2lvbiBjYW4gYmUgdGFrZW4gYXMKLWFib3ZlLgorVGhlIG5leHQgdGhyZWUgc2VjdGlvbnMgY292ZXIgdGhlIGV4Y2VwdGlvbnMgdGhlIHBhY2thZ2UgbWF5IHJhaXNlIGFuZCB0aGUKK2RlZmVjdHMgKG5vbi1jb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MpIHRoYXQgdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIG1heQorZGV0ZWN0LiAgVGhlbiB3ZSBjb3ZlciB0aGUgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YCBhbmQgdGhlCis6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIHN1Yi1jb21wb25lbnRzLCB3aGljaCBwcm92aWRlIHRvb2xzIGZvciBkb2luZyBtb3JlCitkZXRhaWxlZCBtYW5pcHVsYXRpb24gb2YgaGVhZGVycyBhbmQgcGF5bG9hZHMsIHJlc3BlY3RpdmVseS4gIEJvdGggb2YgdGhlc2UKK2NvbXBvbmVudHMgY29udGFpbiBmZWF0dXJlcyByZWxldmFudCB0byBjb25zdW1pbmcgYW5kIHByb2R1Y2luZyBub24tdHJpdmlhbAorbWVzc2FnZXMsIGJ1dCBhbHNvIGRvY3VtZW50IHRoZWlyIGV4dGVuc2liaWxpdHkgQVBJcywgd2hpY2ggd2lsbCBiZSBvZiBpbnRlcmVzdAordG8gYWR2YW5jZWQgYXBwbGljYXRpb25zLgogCi1BbHNvIGluY2x1ZGVkIGFyZSBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBvZiBhbGwgdGhlIGNsYXNzZXMgYW5kIG1vZHVsZXMgdGhhdAotdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHByb3ZpZGVzLCB0aGUgZXhjZXB0aW9uIGNsYXNzZXMgeW91IG1pZ2h0IGVuY291bnRlcgotd2hpbGUgdXNpbmcgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLCBzb21lIGF1eGlsaWFyeSB1dGlsaXRpZXMsIGFuZCBhIGZldwotZXhhbXBsZXMuICBGb3IgdXNlcnMgb2YgdGhlIG9sZGVyIDptb2Q6YG1pbWVsaWJgIHBhY2thZ2UsIG9yIHByZXZpb3VzIHZlcnNpb25zCi1vZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UsIGEgc2VjdGlvbiBvbiBkaWZmZXJlbmNlcyBhbmQgcG9ydGluZyBpcyBwcm92aWRlZC4KK0ZvbGxvd2luZyB0aG9zZSBpcyBhIHNldCBvZiBleGFtcGxlcyBvZiB1c2luZyB0aGUgZnVuZGFtZW50YWwgcGFydHMgb2YgdGhlIEFQSXMKK2NvdmVyZWQgaW4gdGhlIHByZWNlZGluZyBzZWN0aW9ucy4KKworVGhlIGZvcmdvaW5nIHJlcHJlc2VudCB0aGUgbW9kZXJuICh1bmljb2RlIGZyaWVuZGx5KSBBUEkgb2YgdGhlIGVtYWlsIHBhY2thZ2UuCitUaGUgcmVtYWluaW5nIHNlY3Rpb25zLCBzdGFydGluZyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCitjbGFzcywgY292ZXIgdGhlIGxlZ2FjeSA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIHRoYXQgZGVhbHMgbXVjaCBtb3JlCitkaXJlY3RseSB3aXRoIHRoZSBkZXRhaWxzIG9mIGhvdyBlbWFpbCBtZXNzYWdlcyBhcmUgcmVwcmVzZW50ZWQuICBUaGUKKzpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkgZG9lcyAqbm90KiBoaWRlIHRoZSBkZXRhaWxzIG9mIHRoZSBSRkNzIGZyb20KK3RoZSBhcHBsaWNhdGlvbiwgYnV0IGZvciBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIG9wZXJhdGUgYXQgdGhhdCBsZXZlbCwgdGhleQorY2FuIGJlIHVzZWZ1bCB0b29scy4gIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBhbHNvIHJlbGV2YW50IGZvciBhcHBsaWNhdGlvbnMgdGhhdAorYXJlIHN0aWxsIHVzaW5nIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkgZm9yIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBEb2NzIHJlb3JnYW5pemVkIGFuZCByZXdyaXR0ZW4gdG8gcHJvbW90ZSB0aGUgbmV3CisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAvOmNsYXNzOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5YAorICAgQVBJLgogCiBDb250ZW50cyBvZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgZG9jdW1lbnRhdGlvbjoKIApAQCAtNTYsMzM1ICsxMTAsNDMgQEAKICAgIGVtYWlsLnBhcnNlci5yc3QKICAgIGVtYWlsLmdlbmVyYXRvci5yc3QKICAgIGVtYWlsLnBvbGljeS5yc3QKKworICAgZW1haWwuZXJyb3JzLnJzdAogICAgZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CiAgICBlbWFpbC5jb250ZW50bWFuYWdlci5yc3QKKworICAgZW1haWwuZXhhbXBsZXMucnN0CisKK0xlZ2FjeSBBUEk6CisKKy4uIHRvY3RyZWU6OgorCisgICBlbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdAogICAgZW1haWwubWltZS5yc3QKICAgIGVtYWlsLmhlYWRlci5yc3QKICAgIGVtYWlsLmNoYXJzZXQucnN0CiAgICBlbWFpbC5lbmNvZGVycy5yc3QKLSAgIGVtYWlsLmVycm9ycy5yc3QKICAgIGVtYWlsLnV0aWwucnN0CiAgICBlbWFpbC5pdGVyYXRvcnMucnN0Ci0gICBlbWFpbC1leGFtcGxlcy5yc3QKIAogCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YHNtdHBsaWJgCi0gICAgICBTTVRQIHByb3RvY29sIGNsaWVudAorICAgICAgU01UUCAoU2ltcGxlIE1haWwgVHJhbnNwb3J0IFByb3Rjb2wpIGNsaWVudAorCisgICBNb2R1bGUgOm1vZDpgcG9wbGliYAorICAgICAgUE9QIChQb3N0IE9mZmljZSBQcm90b2NvbCkgY2xpZW50CisKKyAgIE1vZHVsZSA6bW9kOmBpbWFwbGliYAorICAgICAgSU1BUCAoSW50ZXJuZXQgTWVzc2FnZSBBY2Nlc3MgUHJvdG9jb2wpIGNsaWVudAogCiAgICBNb2R1bGUgOm1vZDpgbm50cGxpYmAKLSAgICAgIE5OVFAgcHJvdG9jb2wgY2xpZW50CisgICAgICBOTlRQIChOZXQgTmV3cyBUcmFuc3BvcnQgUHJvdG9jb2wpIGNsaWVudAogCisgICBNb2R1bGUgOm1vZDpgbWFpbGJveGAKKyAgICAgIFRvb2xzIGZvciBjcmVhdGluZywgcmVhZGluZywgYW5kIG1hbmFnaW5nIGNvbGxlY3Rpb25zIG9mIG1lc3NhZ2VzIG9uIGRpc2sKKyAgICAgIHVzaW5nIGEgdmFyaWV0eSBzdGFuZGFyZCBmb3JtYXRzLgogCi0uLiBfZW1haWwtcGtnLWhpc3Rvcnk6Ci0KLVBhY2thZ2UgSGlzdG9yeQotLS0tLS0tLS0tLS0tLS0tCi0KLVRoaXMgdGFibGUgZGVzY3JpYmVzIHRoZSByZWxlYXNlIGhpc3Rvcnkgb2YgdGhlIGVtYWlsIHBhY2thZ2UsIGNvcnJlc3BvbmRpbmcgdG8KLXRoZSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHRoZSBwYWNrYWdlIHdhcyByZWxlYXNlZCB3aXRoLiAgRm9yIHB1cnBvc2VzIG9mIHRoaXMKLWRvY3VtZW50LCB3aGVuIHlvdSBzZWUgYSBub3RlIGFib3V0IGNoYW5nZSBvciBhZGRlZCB2ZXJzaW9ucywgdGhlc2UgcmVmZXIgdG8gdGhlCi1QeXRob24gdmVyc2lvbiB0aGUgY2hhbmdlIHdhcyBtYWRlIGluLCAqbm90KiB0aGUgZW1haWwgcGFja2FnZSB2ZXJzaW9uLiAgVGhpcwotdGFibGUgYWxzbyBkZXNjcmliZXMgdGhlIFB5dGhvbiBjb21wYXRpYmlsaXR5IG9mIGVhY2ggdmVyc2lvbiBvZiB0aGUgcGFja2FnZS4KLQotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGVtYWlsIHZlcnNpb24gfCBkaXN0cmlidXRlZCB3aXRoICAgICAgICAgICAgIHwgY29tcGF0aWJsZSB3aXRoICAgICAgIHwKLSs9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09KwotfCA6Y29uc3Q6YDEueGAgIHwgUHl0aG9uIDIuMi4wIHRvIFB5dGhvbiAyLjIuMSB8ICpubyBsb25nZXIgc3VwcG9ydGVkKiB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmAyLjVgICB8IFB5dGhvbiAyLjIuMisgYW5kIFB5dGhvbiAyLjMgfCBQeXRob24gMi4xIHRvIDIuNSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgMy4wYCAgfCBQeXRob24gMi40IGFuZCBQeXRob24gMi41ICAgIHwgUHl0aG9uIDIuMyB0byAyLjYgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDQuMGAgIHwgUHl0aG9uIDIuNSB0byBQeXRob24gMi43ICAgICB8IFB5dGhvbiAyLjMgdG8gMi43ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA1LjBgICB8IFB5dGhvbiAzLjAgYW5kIFB5dGhvbiAzLjEgICAgfCBQeXRob24gMy4wIHRvIDMuMiAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNS4xYCAgfCBQeXRob24gMy4yICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIDMuMiAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi1BZnRlciBWZXJzaW9uIDUuMSAoUHl0aG9uIDMuMiksIHRoZSBlbWFpbCBwYWNrYWdlIG5vIGxvbmdlciBoYXMgYSB2ZXJzaW9uIHRoYXQKLWlzIHNlcGFyYXRlIGZyb20gdGhlIFB5dGhvbiB2ZXJzaW9uLiAgKFNlZSB0aGUgOnJlZjpgd2hhdHNuZXctaW5kZXhgIGRvY3VtZW50cwotZm9yIHRoZSByZXNwZWN0aXZlIFB5dGhvbiB2ZXJzaW9ucyBmb3IgZGV0YWlscyBvbiBjaGFuZ2VzLikKLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gNS4xIGFuZAotdmVyc2lvbiA1LjA6Ci0KLSogSXQgaXMgb25jZSBhZ2FpbiBwb3NzaWJsZSB0byBwYXJzZSBtZXNzYWdlcyBjb250YWluaW5nIG5vbi1BU0NJSSBieXRlcywKLSAgYW5kIHRvIHJlcHJvZHVjZSBzdWNoIG1lc3NhZ2VzIGlmIHRoZSBkYXRhIGNvbnRhaW5pbmcgdGhlIG5vbi1BU0NJSQotICBieXRlcyBpcyBub3QgbW9kaWZpZWQuCi0KLSogTmV3IGZ1bmN0aW9ucyA6ZnVuYzpgbWVzc2FnZV9mcm9tX2J5dGVzYCBhbmQgOmZ1bmM6YG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZWAsCi0gIGFuZCBuZXcgY2xhc3NlcyA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNGZWVkUGFyc2VyYCBhbmQKLSAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBhbGxvdyBiaW5hcnkgbWVzc2FnZSBkYXRhIHRvIGJlIHBhcnNlZAotICBpbnRvIG1vZGVsIG9iamVjdHMuCi0KLSogR2l2ZW4gYnl0ZXMgaW5wdXQgdG8gdGhlIG1vZGVsLCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAKLSAgd2lsbCBieSBkZWZhdWx0IGRlY29kZSBhIG1lc3NhZ2UgYm9keSB0aGF0IGhhcyBhCi0gIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBgYDhiaXRgYCB1c2luZyB0aGUgY2hhcnNldAotICBzcGVjaWZpZWQgaW4gdGhlIE1JTUUgaGVhZGVycyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgc3RyaW5nLgotCi0qIEdpdmVuIGJ5dGVzIGlucHV0IHRvIHRoZSBtb2RlbCwgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgd2lsbAotICBjb252ZXJ0IG1lc3NhZ2UgYm9kaWVzIHRoYXQgaGF2ZSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZgotICA4Yml0IHRvIGluc3RlYWQgaGF2ZSBhIDdiaXQgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4KLQotKiBOZXcgY2xhc3MgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBwcm9kdWNlcyBieXRlcwotICBhcyBvdXRwdXQsIHByZXNlcnZpbmcgYW55IHVuY2hhbmdlZCBub24tQVNDSUkgZGF0YSB0aGF0IHdhcwotICBwcmVzZW50IGluIHRoZSBpbnB1dCB1c2VkIHRvIGJ1aWxkIHRoZSBtb2RlbCwgaW5jbHVkaW5nIG1lc3NhZ2UgYm9kaWVzCi0gIHdpdGggYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdC4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gNS4wIGFuZCB2ZXJzaW9uIDQ6Ci0KLSogQWxsIG9wZXJhdGlvbnMgYXJlIG9uIHVuaWNvZGUgc3RyaW5ncy4gIFRleHQgaW5wdXRzIG11c3QgYmUgc3RyaW5ncywKLSAgdGV4dCBvdXRwdXRzIGFyZSBzdHJpbmdzLiAgT3V0cHV0cyBhcmUgbGltaXRlZCB0byB0aGUgQVNDSUkgY2hhcmFjdGVyCi0gIHNldCBhbmQgc28gY2FuIGJlIGVuY29kZWQgdG8gQVNDSUkgZm9yIHRyYW5zbWlzc2lvbi4gIElucHV0cyBhcmUgYWxzbwotICBsaW1pdGVkIHRvIEFTQ0lJOyB0aGlzIGlzIGFuIGFja25vd2xlZGdlZCBsaW1pdGF0aW9uIG9mIGVtYWlsIDUuMCBhbmQKLSAgbWVhbnMgaXQgY2FuIG9ubHkgYmUgdXNlZCB0byBwYXJzZSBlbWFpbCB0aGF0IGlzIDdiaXQgY2xlYW4uCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDQgYW5kIHZlcnNpb24gMzoKLQotKiBBbGwgbW9kdWxlcyBoYXZlIGJlZW4gcmVuYW1lZCBhY2NvcmRpbmcgdG8gOnBlcDpgOGAgc3RhbmRhcmRzLiAgRm9yIGV4YW1wbGUsCi0gIHRoZSB2ZXJzaW9uIDMgbW9kdWxlIDptb2Q6YGVtYWlsLk1lc3NhZ2VgIHdhcyByZW5hbWVkIHRvIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIGluCi0gIHZlcnNpb24gNC4KLQotKiBBIG5ldyBzdWJwYWNrYWdlIDptb2Q6YGVtYWlsLm1pbWVgIHdhcyBhZGRlZCBhbmQgYWxsIHRoZSB2ZXJzaW9uIDMKLSAgOm1vZDpgZW1haWwuTUlNRVwqYCBtb2R1bGVzIHdlcmUgcmVuYW1lZCBhbmQgc2l0dWF0ZWQgaW50byB0aGUgOm1vZDpgZW1haWwubWltZWAKLSAgc3VicGFja2FnZS4gIEZvciBleGFtcGxlLCB0aGUgdmVyc2lvbiAzIG1vZHVsZSA6bW9kOmBlbWFpbC5NSU1FVGV4dGAgd2FzIHJlbmFtZWQKLSAgdG8gOm1vZDpgZW1haWwubWltZS50ZXh0YC4KLQotICAqTm90ZSB0aGF0IHRoZSB2ZXJzaW9uIDMgbmFtZXMgd2lsbCBjb250aW51ZSB0byB3b3JrIHVudGlsIFB5dGhvbiAyLjYqLgotCi0qIFRoZSA6bW9kOmBlbWFpbC5taW1lLmFwcGxpY2F0aW9uYCBtb2R1bGUgd2FzIGFkZGVkLCB3aGljaCBjb250YWlucyB0aGUKLSAgOmNsYXNzOmB+ZW1haWwubWltZS5hcHBsaWNhdGlvbi5NSU1FQXBwbGljYXRpb25gIGNsYXNzLgotCi0qIE1ldGhvZHMgdGhhdCB3ZXJlIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAzIGhhdmUgYmVlbiByZW1vdmVkLiAgVGhlc2UgaW5jbHVkZQotICA6bWV0aDpgR2VuZXJhdG9yLl9fY2FsbF9fYCwgOm1ldGg6YE1lc3NhZ2UuZ2V0X3R5cGVgLAotICA6bWV0aDpgTWVzc2FnZS5nZXRfbWFpbl90eXBlYCwgOm1ldGg6YE1lc3NhZ2UuZ2V0X3N1YnR5cGVgLgotCi0qIEZpeGVzIGhhdmUgYmVlbiBhZGRlZCBmb3IgOnJmYzpgMjIzMWAgc3VwcG9ydCB3aGljaCBjYW4gY2hhbmdlIHNvbWUgb2YgdGhlCi0gIHJldHVybiB0eXBlcyBmb3IgOmZ1bmM6YE1lc3NhZ2UuZ2V0X3BhcmFtIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtPmAKLSAgYW5kIGZyaWVuZHMuICBVbmRlciBzb21lCi0gIGNpcmN1bXN0YW5jZXMsIHZhbHVlcyB3aGljaCB1c2VkIHRvIHJldHVybiBhIDMtdHVwbGUgbm93IHJldHVybiBzaW1wbGUgc3RyaW5ncwotICAoc3BlY2lmaWNhbGx5LCBpZiBhbGwgZXh0ZW5kZWQgcGFyYW1ldGVyIHNlZ21lbnRzIHdlcmUgdW5lbmNvZGVkLCB0aGVyZSBpcyBubwotICBsYW5ndWFnZSBhbmQgY2hhcnNldCBkZXNpZ25hdGlvbiBleHBlY3RlZCwgc28gdGhlIHJldHVybiB0eXBlIGlzIG5vdyBhIHNpbXBsZQotICBzdHJpbmcpLiAgQWxzbywgJS1kZWNvZGluZyB1c2VkIHRvIGJlIGRvbmUgZm9yIGJvdGggZW5jb2RlZCBhbmQgdW5lbmNvZGVkCi0gIHNlZ21lbnRzOyB0aGlzIGRlY29kaW5nIGlzIG5vdyBkb25lIG9ubHkgZm9yIGVuY29kZWQgc2VnbWVudHMuCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDMgYW5kIHZlcnNpb24gMjoKLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgIGNsYXNzIHdhcyBpbnRyb2R1Y2VkLCBhbmQgdGhlCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIHdhcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGUKLSAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLiAgQWxsIHBhcnNpbmcgdGhlcmVmb3JlIGlzCi0gIG5vbi1zdHJpY3QsIGFuZCBwYXJzaW5nIHdpbGwgbWFrZSBhIGJlc3QgZWZmb3J0IG5ldmVyIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbi4KLSAgUHJvYmxlbXMgZm91bmQgd2hpbGUgcGFyc2luZyBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHRoZSBtZXNzYWdlJ3MgKmRlZmVjdCoKLSAgYXR0cmlidXRlLgotCi0qIEFsbCBhc3BlY3RzIG9mIHRoZSBBUEkgd2hpY2ggcmFpc2VkIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2BcIHMgaW4gdmVyc2lvbiAyCi0gIGhhdmUgYmVlbiByZW1vdmVkLiAgVGhlc2UgaW5jbHVkZSB0aGUgKl9lbmNvZGVyKiBhcmd1bWVudCB0byB0aGUKLSAgOmNsYXNzOmB+ZW1haWwubWltZS50ZXh0Lk1JTUVUZXh0YCBjb25zdHJ1Y3RvciwgdGhlCi0gIDptZXRoOmBNZXNzYWdlLmFkZF9wYXlsb2FkYCBtZXRob2QsIHRoZSA6ZnVuYzpgVXRpbHMuZHVtcF9hZGRyZXNzX3BhaXJgCi0gIGZ1bmN0aW9uLCBhbmQgdGhlIGZ1bmN0aW9ucyA6ZnVuYzpgVXRpbHMuZGVjb2RlYCBhbmQgOmZ1bmM6YFV0aWxzLmVuY29kZWAuCi0KLSogTmV3IDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2BcIHMgaGF2ZSBiZWVuIGFkZGVkIHRvOgotICA6bWV0aDpgR2VuZXJhdG9yLl9fY2FsbF9fYCwgOm1ldGg6YE1lc3NhZ2UuZ2V0X3R5cGVgLAotICA6bWV0aDpgTWVzc2FnZS5nZXRfbWFpbl90eXBlYCwgOm1ldGg6YE1lc3NhZ2UuZ2V0X3N1YnR5cGVgLCBhbmQgdGhlICpzdHJpY3QqCi0gIGFyZ3VtZW50IHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcy4gIFRoZXNlIGFyZSBleHBlY3RlZCB0bwotICBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4KLQotKiBTdXBwb3J0IGZvciBQeXRob25zIGVhcmxpZXIgdGhhbiAyLjMgaGFzIGJlZW4gcmVtb3ZlZC4KLQotSGVyZSBhcmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gMiBhbmQgdmVyc2lvbiAxOgotCi0qIFRoZSA6bW9kOmBlbWFpbC5IZWFkZXJgIGFuZCA6bW9kOmBlbWFpbC5DaGFyc2V0YCBtb2R1bGVzIGhhdmUgYmVlbiBhZGRlZC4KLQotKiBUaGUgcGlja2xlIGZvcm1hdCBmb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZXMgaGFzIGNoYW5nZWQuCi0gIFNpbmNlIHRoaXMgd2FzIG5ldmVyIChhbmQgc3RpbGwgaXNuJ3QpIGZvcm1hbGx5IGRlZmluZWQsIHRoaXMgaXNuJ3QKLSAgY29uc2lkZXJlZCBhIGJhY2t3YXJkIGluY29tcGF0aWJpbGl0eS4gIEhvd2V2ZXIgaWYgeW91ciBhcHBsaWNhdGlvbiBwaWNrbGVzCi0gIGFuZCB1bnBpY2tsZXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZXMsIGJlIGF3YXJlIHRoYXQgaW4KLSAgOm1vZDpgZW1haWxgIHZlcnNpb24gMiwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZXMgbm93IGhhdmUKLSAgcHJpdmF0ZSB2YXJpYWJsZXMgKl9jaGFyc2V0KiBhbmQgKl9kZWZhdWx0X3R5cGUqLgotCi0qIFNldmVyYWwgbWV0aG9kcyBpbiB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyBoYXZlIGJlZW4KLSAgZGVwcmVjYXRlZCwgb3IgdGhlaXIgc2lnbmF0dXJlcyBjaGFuZ2VkLiAgQWxzbywgbWFueSBuZXcgbWV0aG9kcyBoYXZlIGJlZW4KLSAgYWRkZWQuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzCi0gIGZvciBkZXRhaWxzLiAgVGhlIGNoYW5nZXMgc2hvdWxkIGJlIGNvbXBsZXRlbHkgYmFja3dhcmQgY29tcGF0aWJsZS4KLQotKiBUaGUgb2JqZWN0IHN0cnVjdHVyZSBoYXMgY2hhbmdlZCBpbiB0aGUgZmFjZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYAotICBjb250ZW50IHR5cGVzLiAgSW4gOm1vZDpgZW1haWxgIHZlcnNpb24gMSwgc3VjaCBhIHR5cGUgd291bGQgYmUgcmVwcmVzZW50ZWQKLSAgYnkgYSBzY2FsYXIgcGF5bG9hZCwgaS5lLiB0aGUgY29udGFpbmVyIG1lc3NhZ2UncwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIHJldHVybmVkIGZhbHNlLAotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgd2FzIG5vdCBhIGxpc3Qgb2JqZWN0LCBidXQgYQotICBzaW5nbGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZS4KLQotICBUaGlzIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHBhY2thZ2UsIHNvIHRoZSBvYmplY3QKLSAgcmVwcmVzZW50YXRpb24gZm9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgIGNvbnRlbnQgdHlwZXMgd2FzIGNoYW5nZWQuICBJbgotICA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyLCB0aGUgY29udGFpbmVyICpkb2VzKiByZXR1cm4gYGBUcnVlYGAgZnJvbQotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIHJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYSBzaW5nbGUKLSAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpdGVtLgotCi0gIE5vdGUgdGhhdCB0aGlzIGlzIG9uZSBwbGFjZSB0aGF0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgY291bGQgbm90IGJlCi0gIGNvbXBsZXRlbHkgbWFpbnRhaW5lZC4gIEhvd2V2ZXIsIGlmIHlvdSdyZSBhbHJlYWR5IHRlc3RpbmcgdGhlIHJldHVybiB0eXBlIG9mCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCwgeW91IHNob3VsZCBiZSBmaW5lLiAgWW91IGp1c3QgbmVlZAotICB0byBtYWtlIHN1cmUgeW91ciBjb2RlIGRvZXNuJ3QgZG8gYSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfcGF5bG9hZGAKLSAgd2l0aCBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2Ugb24gYSBjb250YWluZXIgd2l0aCBhIGNvbnRlbnQKLSAgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY29uc3RydWN0b3IncyAqc3RyaWN0KiBhcmd1bWVudCB3YXMgYWRkZWQsCi0gIGFuZCBpdHMgOm1ldGg6YH5lbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlYCBhbmQKLSAgOm1ldGg6YH5lbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlc3RyYCBtZXRob2RzIGdyZXcgYSAqaGVhZGVyc29ubHkqIGFyZ3VtZW50LgotICBUaGUgKnN0cmljdCogZmxhZyB3YXMgYWxzbyBhZGRlZCB0byBmdW5jdGlvbnMgOmZ1bmM6YGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlYAotICBhbmQgOmZ1bmM6YGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmdgLgotCi0qIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gIGlzIGRlcHJlY2F0ZWQ7IHVzZSA6bWV0aDpgR2VuZXJhdG9yLmZsYXR0ZW4KLSAgPGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbj5gIGluc3RlYWQuICBUaGUKLSAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgY2xhc3MgaGFzIGFsc28gZ3Jvd24gdGhlCi0gIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5jbG9uZWAgbWV0aG9kLgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgY2xhc3MgaW4gdGhlCi0gIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIHdhcyBhZGRlZC4KLQotKiBUaGUgaW50ZXJtZWRpYXRlIGJhc2UgY2xhc3NlcwotICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCBhbmQKLSAgOmNsYXNzOmB+ZW1haWwubWltZS5tdWx0aXBhcnQuTUlNRU11bHRpcGFydGAgaGF2ZSBiZWVuIGFkZGVkLCBhbmQgaW50ZXJwb3NlZAotICBpbiB0aGUgY2xhc3MgaGllcmFyY2h5IGZvciBtb3N0IG9mIHRoZSBvdGhlciBNSU1FLXJlbGF0ZWQgZGVyaXZlZCBjbGFzc2VzLgotCi0qIFRoZSAqX2VuY29kZXIqIGFyZ3VtZW50IHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLnRleHQuTUlNRVRleHRgIGNvbnN0cnVjdG9yCi0gIGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBFbmNvZGluZyAgbm93IGhhcHBlbnMgaW1wbGljaXRseSBiYXNlZCBvbiB0aGUKLSAgKl9jaGFyc2V0KiBhcmd1bWVudC4KLQotKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgZW1haWwuVXRpbHNgIG1vZHVsZSBoYXZlIGJlZW4gZGVwcmVjYXRlZDoKLSAgOmZ1bmM6YGR1bXBfYWRkcmVzc19wYWlyc2AsIDpmdW5jOmBkZWNvZGVgLCBhbmQgOmZ1bmM6YGVuY29kZWAuICBUaGUgZm9sbG93aW5nCi0gIGZ1bmN0aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIG1vZHVsZTogOmZ1bmM6YG1ha2VfbXNnaWRgLAotICA6ZnVuYzpgZGVjb2RlX3JmYzIyMzFgLCA6ZnVuYzpgZW5jb2RlX3JmYzIyMzFgLCBhbmQgOmZ1bmM6YGRlY29kZV9wYXJhbXNgLgotCi0qIFRoZSBub24tcHVibGljIGZ1bmN0aW9uIDpmdW5jOmBlbWFpbC5JdGVyYXRvcnMuX3N0cnVjdHVyZWAgd2FzIGFkZGVkLgotCi0KLURpZmZlcmVuY2VzIGZyb20gOm1vZDpgbWltZWxpYmAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHdhcyBvcmlnaW5hbGx5IHByb3RvdHlwZWQgYXMgYSBzZXBhcmF0ZSBsaWJyYXJ5IGNhbGxlZAotYG1pbWVsaWIgPGh0dHA6Ly9taW1lbGliLnNvdXJjZWZvcmdlLm5ldC8+YF8uIENoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgc28gdGhhdCBtZXRob2QgbmFtZXMKLWFyZSBtb3JlIGNvbnNpc3RlbnQsIGFuZCBzb21lIG1ldGhvZHMgb3IgbW9kdWxlcyBoYXZlIGVpdGhlciBiZWVuIGFkZGVkIG9yCi1yZW1vdmVkLiAgVGhlIHNlbWFudGljcyBvZiBzb21lIG9mIHRoZSBtZXRob2RzIGhhdmUgYWxzbyBjaGFuZ2VkLiAgRm9yIHRoZSBtb3N0Ci1wYXJ0LCBhbnkgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUgaW4gOm1vZDpgbWltZWxpYmAgaXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoZQotOm1vZDpgZW1haWxgIHBhY2thZ2UsIGFsYmVpdCBvZnRlbiBpbiBhIGRpZmZlcmVudCB3YXkuICBCYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci1iZXR3ZWVuIHRoZSA6bW9kOmBtaW1lbGliYCBwYWNrYWdlIGFuZCB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2Ugd2FzIG5vdCBhCi1wcmlvcml0eS4KLQotSGVyZSBpcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSA6bW9kOmBtaW1lbGliYCBhbmQKLXRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZXMsIGFsb25nIHdpdGggaGludHMgb24gaG93IHRvIHBvcnQgeW91ciBhcHBsaWNhdGlvbnMuCi0KLU9mIGNvdXJzZSwgdGhlIG1vc3QgdmlzaWJsZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBwYWNrYWdlcyBpcyB0aGF0IHRoZQotcGFja2FnZSBuYW1lIGhhcyBiZWVuIGNoYW5nZWQgdG8gOm1vZDpgZW1haWxgLiAgSW4gYWRkaXRpb24sIHRoZSB0b3AtbGV2ZWwKLXBhY2thZ2UgaGFzIHRoZSBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6Ci0KLSogOmZ1bmM6YG1lc3NhZ2VGcm9tU3RyaW5nYCBoYXMgYmVlbiByZW5hbWVkIHRvIDpmdW5jOmBtZXNzYWdlX2Zyb21fc3RyaW5nYC4KLQotKiA6ZnVuYzpgbWVzc2FnZUZyb21GaWxlYCBoYXMgYmVlbiByZW5hbWVkIHRvIDpmdW5jOmBtZXNzYWdlX2Zyb21fZmlsZWAuCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzIGhhcyB0aGUgZm9sbG93aW5nIGRpZmZlcmVuY2VzOgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGFzU3RyaW5nYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hc19zdHJpbmdgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGlzbXVsdGlwYXJ0YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgotCi0qIFRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIGhhcyBncm93biBhICpkZWNvZGUqCi0gIG9wdGlvbmFsIGFyZ3VtZW50LgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGFsbGAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2FsbGAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgYWRkaGVhZGVyYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hZGRfaGVhZGVyYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXR0eXBlYCB3YXMgcmVuYW1lZCB0byA6bWV0aDpgZ2V0X3R5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldG1haW50eXBlYCB3YXMgcmVuYW1lZCB0byA6bWV0aDpgZ2V0X21haW5fdHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0c3VidHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF9zdWJ0eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRwYXJhbXNgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbXNgLiBBbHNvLCB3aGVyZWFzIDptZXRoOmBnZXRwYXJhbXNgCi0gIHJldHVybmVkIGEgbGlzdCBvZiBzdHJpbmdzLCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1zYCByZXR1cm5zCi0gIGEgbGlzdCBvZiAyLXR1cGxlcywgZWZmZWN0aXZlbHkgdGhlIGtleS92YWx1ZSBwYWlycyBvZiB0aGUgcGFyYW1ldGVycywgc3BsaXQKLSAgb24gdGhlIGBgJz0nYGAgc2lnbi4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRwYXJhbWAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRjaGFyc2V0c2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2NoYXJzZXRzYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRmaWxlbmFtZWAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2ZpbGVuYW1lYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRib3VuZGFyeWAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2JvdW5kYXJ5YC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBzZXRib3VuZGFyeWAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X2JvdW5kYXJ5YC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRkZWNvZGVkcGF5bG9hZGAgd2FzIHJlbW92ZWQuICBUbyBnZXQgc2ltaWxhcgotICBmdW5jdGlvbmFsaXR5LCBwYXNzIHRoZSB2YWx1ZSAxIHRvIHRoZSAqZGVjb2RlKiBmbGFnIG9mIHRoZQotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBheWxvYWRhc3RleHRgIHdhcyByZW1vdmVkLiAgU2ltaWxhciBmdW5jdGlvbmFsaXR5IGlzCi0gIHN1cHBvcnRlZCBieSB0aGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIGNsYXNzIGluIHRoZQotICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZS4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRib2R5YXN0ZXh0YCB3YXMgcmVtb3ZlZC4gIFlvdSBjYW4gZ2V0IHNpbWlsYXIKLSAgZnVuY3Rpb25hbGl0eSBieSBjcmVhdGluZyBhbiBpdGVyYXRvciB3aXRoCi0gIDpmdW5jOmB+ZW1haWwuaXRlcmF0b3JzLnR5cGVkX3N1YnBhcnRfaXRlcmF0b3JgIGluIHRoZSA6bW9kOmBlbWFpbC5pdGVyYXRvcnNgCi0gIG1vZHVsZS4KLQotVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGhhcyBubyBkaWZmZXJlbmNlcyBpbiBpdHMgcHVibGljCi1pbnRlcmZhY2UuIEl0IGRvZXMgaGF2ZSBzb21lIGFkZGl0aW9uYWwgc21hcnRzIHRvIHJlY29nbml6ZQotOm1pbWV0eXBlOmBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c2AgdHlwZSBtZXNzYWdlcywgd2hpY2ggaXQgcmVwcmVzZW50cyBhcyBhCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIGNvbnRhaW5pbmcgc2VwYXJhdGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgc3VicGFydHMgZm9yIGVhY2ggaGVhZGVyIGJsb2NrIGluIHRoZSBkZWxpdmVyeQotc3RhdHVzIG5vdGlmaWNhdGlvbiBbI11fLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgY2xhc3MgaGFzIG5vIGRpZmZlcmVuY2VzIGluIGl0cyBwdWJsaWMKLWludGVyZmFjZS4gIFRoZXJlIGlzIGEgbmV3IGNsYXNzIGluIHRoZSA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSB0aG91Z2gsCi1jYWxsZWQgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIHdoaWNoIHByb3ZpZGVzIG1vc3Qgb2YgdGhlCi1mdW5jdGlvbmFsaXR5IHByZXZpb3VzbHkgYXZhaWxhYmxlIGluIHRoZSA6bWV0aDpgTWVzc2FnZS5nZXRwYXlsb2FkYXN0ZXh0YAotbWV0aG9kLgotCi1UaGUgZm9sbG93aW5nIG1vZHVsZXMgYW5kIGNsYXNzZXMgaGF2ZSBiZWVuIGNoYW5nZWQ6Ci0KLSogVGhlIDpjbGFzczpgfmVtYWlsLm1pbWUuYmFzZS5NSU1FQmFzZWAgY2xhc3MgY29uc3RydWN0b3IgYXJndW1lbnRzICpfbWFqb3IqCi0gIGFuZCAqX21pbm9yKiBoYXZlIGNoYW5nZWQgdG8gKl9tYWludHlwZSogYW5kICpfc3VidHlwZSogcmVzcGVjdGl2ZWx5LgotCi0qIFRoZSBgYEltYWdlYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FSW1hZ2VgYC4gIFRoZSAqX21pbm9yKgotICBhcmd1bWVudCBoYXMgYmVlbiByZW5hbWVkIHRvICpfc3VidHlwZSouCi0KLSogVGhlIGBgVGV4dGBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBgTUlNRVRleHRgYC4gIFRoZSAqX21pbm9yKgotICBhcmd1bWVudCBoYXMgYmVlbiByZW5hbWVkIHRvICpfc3VidHlwZSouCi0KLSogVGhlIGBgTWVzc2FnZVJGQzgyMmBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBgTUlNRU1lc3NhZ2VgYC4gIE5vdGUKLSAgdGhhdCBhbiBlYXJsaWVyIHZlcnNpb24gb2YgOm1vZDpgbWltZWxpYmAgY2FsbGVkIHRoaXMgY2xhc3MvbW9kdWxlIGBgUkZDODIyYGAsCi0gIGJ1dCB0aGF0IGNsYXNoZWQgd2l0aCB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlIDptb2Q6YHJmYzgyMmAgb24gc29tZQotICBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KLQotICBBbHNvLCB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS5tZXNzYWdlLk1JTUVNZXNzYWdlYCBjbGFzcyBub3cgcmVwcmVzZW50cyBhbnkKLSAga2luZCBvZiBNSU1FIG1lc3NhZ2UKLSAgd2l0aCBtYWluIHR5cGUgOm1pbWV0eXBlOmBtZXNzYWdlYC4gIEl0IHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50ICpfc3VidHlwZSoKLSAgd2hpY2ggaXMgdXNlZCB0byBzZXQgdGhlIE1JTUUgc3VidHlwZS4gICpfc3VidHlwZSogZGVmYXVsdHMgdG8KLSAgOm1pbWV0eXBlOmByZmM4MjJgLgotCi06bW9kOmBtaW1lbGliYCBwcm92aWRlZCBzb21lIHV0aWxpdHkgZnVuY3Rpb25zIGluIGl0cyA6bW9kOmBhZGRyZXNzYCBhbmQKLTptb2Q6YGRhdGVgIG1vZHVsZXMuICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGhhdmUgYmVlbiBtb3ZlZCB0byB0aGUKLTptb2Q6YGVtYWlsLnV0aWxzYCBtb2R1bGUuCi0KLVRoZSBgYE1zZ1JlYWRlcmBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW1vdmVkLiAgSXRzIGZ1bmN0aW9uYWxpdHkgaXMgbW9zdAotY2xvc2VseSBzdXBwb3J0ZWQgaW4gdGhlIDpmdW5jOmB+ZW1haWwuaXRlcmF0b3JzLmJvZHlfbGluZV9pdGVyYXRvcmAgZnVuY3Rpb24KLWluIHRoZSA6bW9kOmBlbWFpbC5pdGVyYXRvcnNgIG1vZHVsZS4KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBEZWxpdmVyeSBTdGF0dXMgTm90aWZpY2F0aW9ucyAoRFNOKSBhcmUgZGVmaW5lZCBpbiA6cmZjOmAxODk0YC4KKyAgIE1vZHVsZSA6bW9kOmBzbXRwZGAKKyAgICAgIFNNVFAgc2VydmVyIGZyYW1ld29yayAocHJpbWFyaWx5IHVzZWZ1bCBmb3IgdGVzdGluZykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKaW5kZXggNWNmZjc0Ni4uNjNmYWUyYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKQEAgLTgsNyArOCw0MyBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGVyZSBhcmUgc2V2ZXJhbCB1c2VmdWwgdXRpbGl0aWVzIHByb3ZpZGVkIGluIHRoZSA6bW9kOmBlbWFpbC51dGlsc2AgbW9kdWxlOgorVGhlcmUgYXJlIGEgY291cGxlIG9mIHVzZWZ1bCB1dGlsaXRpZXMgcHJvdmlkZWQgaW4gdGhlIDptb2Q6YGVtYWlsLnV0aWxzYAorbW9kdWxlOgorCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKKworICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKKyAgIDptYWlsaGVhZGVyOmBNZXNzYWdlLUlEYCBoZWFkZXIuICBPcHRpb25hbCAqaWRzdHJpbmcqIGlmIGdpdmVuLCBpcyBhIHN0cmluZworICAgdXNlZCB0byBzdHJlbmd0aGVuIHRoZSB1bmlxdWVuZXNzIG9mIHRoZSBtZXNzYWdlIGlkLiAgT3B0aW9uYWwgKmRvbWFpbiogaWYKKyAgIGdpdmVuIHByb3ZpZGVzIHRoZSBwb3J0aW9uIG9mIHRoZSBtc2dpZCBhZnRlciB0aGUgJ0AnLiAgVGhlIGRlZmF1bHQgaXMgdGhlCisgICBsb2NhbCBob3N0bmFtZS4gIEl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0LCBidXQKKyAgIG1heSBiZSB1c2VmdWwgY2VydGFpbiBjYXNlcywgc3VjaCBhcyBhIGNvbnN0cnVjdGluZyBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdAorICAgdXNlcyBhIGNvbnNpc3RlbnQgZG9tYWluIG5hbWUgYWNyb3NzIG11bHRpcGxlIGhvc3RzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCisKKworVGhlIHJlbWFpbmluZyBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBUaGVyZQoraXMgbm8gbmVlZCB0byBkaXJlY3RseSB1c2UgdGhlc2Ugd2l0aCB0aGUgbmV3IEFQSSwgc2luY2UgdGhlIHBhcnNpbmcgYW5kCitmb3JtYXR0aW5nIHRoZXkgcHJvdmlkZSBpcyBkb25lIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGhlYWRlciBwYXJzaW5nIG1hY2hpbmVyeQorb2YgdGhlIG5ldyBBUEkuCiAKIAogLi4gZnVuY3Rpb246OiBxdW90ZShzdHIpCkBAIC0xNDEsMzYgKzE3Nyw2IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQotCi0gICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKLSAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQotICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAotICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcwotICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCi0gICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90Ci0gICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgotICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKLSAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0KLS4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKLQotICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKLSAgIDptYWlsaGVhZGVyOmBNZXNzYWdlLUlEYCBoZWFkZXIuICBPcHRpb25hbCAqaWRzdHJpbmcqIGlmIGdpdmVuLCBpcyBhIHN0cmluZwotICAgdXNlZCB0byBzdHJlbmd0aGVuIHRoZSB1bmlxdWVuZXNzIG9mIHRoZSBtZXNzYWdlIGlkLiAgT3B0aW9uYWwgKmRvbWFpbiogaWYKLSAgIGdpdmVuIHByb3ZpZGVzIHRoZSBwb3J0aW9uIG9mIHRoZSBtc2dpZCBhZnRlciB0aGUgJ0AnLiAgVGhlIGRlZmF1bHQgaXMgdGhlCi0gICBsb2NhbCBob3N0bmFtZS4gIEl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0LCBidXQKLSAgIG1heSBiZSB1c2VmdWwgY2VydGFpbiBjYXNlcywgc3VjaCBhcyBhIGNvbnN0cnVjdGluZyBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdAotICAgdXNlcyBhIGNvbnNpc3RlbnQgZG9tYWluIG5hbWUgYWNyb3NzIG11bHRpcGxlIGhvc3RzLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCi0KLQogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQogCiAgICBEZWNvZGUgdGhlIHN0cmluZyAqcyogYWNjb3JkaW5nIHRvIDpyZmM6YDIyMzFgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW51bS5yc3QgYi9Eb2MvbGlicmFyeS9lbnVtLnJzdAppbmRleCBhM2Q1YWZjLi41Y2Q2NDcyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbnVtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbnVtLnJzdApAQCAtMjMsOSArMjMsMTAgQEAKIE1vZHVsZSBDb250ZW50cwogLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgdHdvIGVudW1lcmF0aW9uIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdW5pcXVlCi1zZXRzIG9mIG5hbWVzIGFuZCB2YWx1ZXM6IDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgSW50RW51bWAuICBJdCBhbHNvIGRlZmluZXMKLW9uZSBkZWNvcmF0b3IsIDpmdW5jOmB1bmlxdWVgLgorVGhpcyBtb2R1bGUgZGVmaW5lcyBmb3VyIGVudW1lcmF0aW9uIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdW5pcXVlCitzZXRzIG9mIG5hbWVzIGFuZCB2YWx1ZXM6IDpjbGFzczpgRW51bWAsIDpjbGFzczpgSW50RW51bWAsIGFuZAorOmNsYXNzOmBJbnRGbGFnc2AuICBJdCBhbHNvIGRlZmluZXMgb25lIGRlY29yYXRvciwgOmZ1bmM6YHVuaXF1ZWAsIGFuZCBvbmUKK2hlbHBlciwgOmNsYXNzOmBhdXRvYC4KIAogLi4gY2xhc3M6OiBFbnVtCiAKQEAgLTM3LDEwICszOCwyNyBAQAogICAgIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzIHRoYXQgYXJlIGFsc28KICAgICBzdWJjbGFzc2VzIG9mIDpjbGFzczpgaW50YC4KIAorLi4gY2xhc3M6OiBJbnRGbGFnCisKKyAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGNhbiBiZSBjb21iaW5lZCB1c2luZworICAgIHRoZSBiaXR3aXNlIG9wZXJhdG9ycyB3aXRob3V0IGxvc2luZyB0aGVpciA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnNoaXAuCisgICAgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzIGFyZSBhbHNvIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgLgorCisuLiBjbGFzczo6IEZsYWcKKworICAgIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nCisgICAgdGhlIGJpdHdpc2Ugb3BlcmF0aW9ucyB3aXRob3V0IGxvc2luZyB0aGVpciA6Y2xhc3M6YEZsYWdgIG1lbWJlcnNoaXAuCisKIC4uIGZ1bmN0aW9uOjogdW5pcXVlCiAKICAgICBFbnVtIGNsYXNzIGRlY29yYXRvciB0aGF0IGVuc3VyZXMgb25seSBvbmUgbmFtZSBpcyBib3VuZCB0byBhbnkgb25lIHZhbHVlLgogCisuLiBjbGFzczo6IGF1dG8KKworICAgIEluc3RhbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgRW51bSBtZW1iZXJzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgIGBgRmxhZ2BgLCBgYEludEZsYWdgYCwgYGBhdXRvYGAKKwogCiBDcmVhdGluZyBhbiBFbnVtCiAtLS0tLS0tLS0tLS0tLS0tCkBAIC01MiwxOCArNzAsMjUgQEAKIAogICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0KICAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6Ci0gICAgLi4uICAgICByZWQgPSAxCi0gICAgLi4uICAgICBncmVlbiA9IDIKLSAgICAuLi4gICAgIGJsdWUgPSAzCisgICAgLi4uICAgICBSRUQgPSAxCisgICAgLi4uICAgICBHUkVFTiA9IDIKKyAgICAuLi4gICAgIEJMVUUgPSAzCiAgICAgLi4uCiAKKy4uIG5vdGU6OiBFbnVtIG1lbWJlciB2YWx1ZXMKKworICAgIE1lbWJlciB2YWx1ZXMgY2FuIGJlIGFueXRoaW5nOiA6Y2xhc3M6YGludGAsIDpjbGFzczpgc3RyYCwgZXRjLi4gIElmCisgICAgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBtYXkgdXNlIDpjbGFzczpgYXV0b2AgaW5zdGFuY2VzIGFuZCBhbgorICAgIGFwcHJvcHJpYXRlIHZhbHVlIHdpbGwgYmUgY2hvc2VuIGZvciB5b3UuICBDYXJlIG11c3QgYmUgdGFrZW4gaWYgeW91IG1peAorICAgIDpjbGFzczpgYXV0b2Agd2l0aCBvdGhlciB2YWx1ZXMuCisKIC4uIG5vdGU6OiBOb21lbmNsYXR1cmUKIAogICAtIFRoZSBjbGFzcyA6Y2xhc3M6YENvbG9yYCBpcyBhbiAqZW51bWVyYXRpb24qIChvciAqZW51bSopCi0gIC0gVGhlIGF0dHJpYnV0ZXMgOmF0dHI6YENvbG9yLnJlZGAsIDphdHRyOmBDb2xvci5ncmVlbmAsIGV0Yy4sIGFyZQotICAgICplbnVtZXJhdGlvbiBtZW1iZXJzKiAob3IgKmVudW0gbWVtYmVycyopLgorICAtIFRoZSBhdHRyaWJ1dGVzIDphdHRyOmBDb2xvci5SRURgLCA6YXR0cjpgQ29sb3IuR1JFRU5gLCBldGMuLCBhcmUKKyAgICAqZW51bWVyYXRpb24gbWVtYmVycyogKG9yICplbnVtIG1lbWJlcnMqKSBhbmQgYXJlIGZ1bmN0aW9uYWxseSBjb25zdGFudHMuCiAgIC0gVGhlIGVudW0gbWVtYmVycyBoYXZlICpuYW1lcyogYW5kICp2YWx1ZXMqICh0aGUgbmFtZSBvZgotICAgIDphdHRyOmBDb2xvci5yZWRgIGlzIGBgcmVkYGAsIHRoZSB2YWx1ZSBvZiA6YXR0cjpgQ29sb3IuYmx1ZWAgaXMKKyAgICA6YXR0cjpgQ29sb3IuUkVEYCBpcyBgYFJFRGBgLCB0aGUgdmFsdWUgb2YgOmF0dHI6YENvbG9yLkJMVUVgIGlzCiAgICAgYGAzYGAsIGV0Yy4pCiAKIC4uIG5vdGU6OgpAQCAtNzQsNDkgKzk5LDQ5IEBACiAKIEVudW1lcmF0aW9uIG1lbWJlcnMgaGF2ZSBodW1hbiByZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zOjoKIAotICAgID4+PiBwcmludChDb2xvci5yZWQpCi0gICAgQ29sb3IucmVkCisgICAgPj4+IHByaW50KENvbG9yLlJFRCkKKyAgICBDb2xvci5SRUQKIAogLi4ud2hpbGUgdGhlaXIgYGByZXByYGAgaGFzIG1vcmUgaW5mb3JtYXRpb246OgogCi0gICAgPj4+IHByaW50KHJlcHIoQ29sb3IucmVkKSkKLSAgICA8Q29sb3IucmVkOiAxPgorICAgID4+PiBwcmludChyZXByKENvbG9yLlJFRCkpCisgICAgPENvbG9yLlJFRDogMT4KIAogVGhlICp0eXBlKiBvZiBhbiBlbnVtZXJhdGlvbiBtZW1iZXIgaXMgdGhlIGVudW1lcmF0aW9uIGl0IGJlbG9uZ3MgdG86OgogCi0gICAgPj4+IHR5cGUoQ29sb3IucmVkKQorICAgID4+PiB0eXBlKENvbG9yLlJFRCkKICAgICA8ZW51bSAnQ29sb3InPgotICAgID4+PiBpc2luc3RhbmNlKENvbG9yLmdyZWVuLCBDb2xvcikKKyAgICA+Pj4gaXNpbnN0YW5jZShDb2xvci5HUkVFTiwgQ29sb3IpCiAgICAgVHJ1ZQogICAgID4+PgogCiBFbnVtIG1lbWJlcnMgYWxzbyBoYXZlIGEgcHJvcGVydHkgdGhhdCBjb250YWlucyBqdXN0IHRoZWlyIGl0ZW0gbmFtZTo6CiAKLSAgICA+Pj4gcHJpbnQoQ29sb3IucmVkLm5hbWUpCi0gICAgcmVkCisgICAgPj4+IHByaW50KENvbG9yLlJFRC5uYW1lKQorICAgIFJFRAogCiBFbnVtZXJhdGlvbnMgc3VwcG9ydCBpdGVyYXRpb24sIGluIGRlZmluaXRpb24gb3JkZXI6OgogCiAgICAgPj4+IGNsYXNzIFNoYWtlKEVudW0pOgotICAgIC4uLiAgICAgdmFuaWxsYSA9IDcKLSAgICAuLi4gICAgIGNob2NvbGF0ZSA9IDQKLSAgICAuLi4gICAgIGNvb2tpZXMgPSA5Ci0gICAgLi4uICAgICBtaW50ID0gMworICAgIC4uLiAgICAgVkFOSUxMQSA9IDcKKyAgICAuLi4gICAgIENIT0NPTEFURSA9IDQKKyAgICAuLi4gICAgIENPT0tJRVMgPSA5CisgICAgLi4uICAgICBNSU5UID0gMwogICAgIC4uLgogICAgID4+PiBmb3Igc2hha2UgaW4gU2hha2U6CiAgICAgLi4uICAgICBwcmludChzaGFrZSkKICAgICAuLi4KLSAgICBTaGFrZS52YW5pbGxhCi0gICAgU2hha2UuY2hvY29sYXRlCi0gICAgU2hha2UuY29va2llcwotICAgIFNoYWtlLm1pbnQKKyAgICBTaGFrZS5WQU5JTExBCisgICAgU2hha2UuQ0hPQ09MQVRFCisgICAgU2hha2UuQ09PS0lFUworICAgIFNoYWtlLk1JTlQKIAogRW51bWVyYXRpb24gbWVtYmVycyBhcmUgaGFzaGFibGUsIHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gZGljdGlvbmFyaWVzIGFuZCBzZXRzOjoKIAogICAgID4+PiBhcHBsZXMgPSB7fQotICAgID4+PiBhcHBsZXNbQ29sb3IucmVkXSA9ICdyZWQgZGVsaWNpb3VzJwotICAgID4+PiBhcHBsZXNbQ29sb3IuZ3JlZW5dID0gJ2dyYW5ueSBzbWl0aCcKLSAgICA+Pj4gYXBwbGVzID09IHtDb2xvci5yZWQ6ICdyZWQgZGVsaWNpb3VzJywgQ29sb3IuZ3JlZW46ICdncmFubnkgc21pdGgnfQorICAgID4+PiBhcHBsZXNbQ29sb3IuUkVEXSA9ICdyZWQgZGVsaWNpb3VzJworICAgID4+PiBhcHBsZXNbQ29sb3IuR1JFRU5dID0gJ2dyYW5ueSBzbWl0aCcKKyAgICA+Pj4gYXBwbGVzID09IHtDb2xvci5SRUQ6ICdyZWQgZGVsaWNpb3VzJywgQ29sb3IuR1JFRU46ICdncmFubnkgc21pdGgnfQogICAgIFRydWUKIAogCkBAIC0xMjQsMjYgKzE0OSwyNiBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFNvbWV0aW1lcyBpdCdzIHVzZWZ1bCB0byBhY2Nlc3MgbWVtYmVycyBpbiBlbnVtZXJhdGlvbnMgcHJvZ3JhbW1hdGljYWxseSAoaS5lLgotc2l0dWF0aW9ucyB3aGVyZSBgYENvbG9yLnJlZGBgIHdvbid0IGRvIGJlY2F1c2UgdGhlIGV4YWN0IGNvbG9yIGlzIG5vdCBrbm93bgorc2l0dWF0aW9ucyB3aGVyZSBgYENvbG9yLlJFRGBgIHdvbid0IGRvIGJlY2F1c2UgdGhlIGV4YWN0IGNvbG9yIGlzIG5vdCBrbm93bgogYXQgcHJvZ3JhbS13cml0aW5nIHRpbWUpLiAgYGBFbnVtYGAgYWxsb3dzIHN1Y2ggYWNjZXNzOjoKIAogICAgID4+PiBDb2xvcigxKQotICAgIDxDb2xvci5yZWQ6IDE+CisgICAgPENvbG9yLlJFRDogMT4KICAgICA+Pj4gQ29sb3IoMykKLSAgICA8Q29sb3IuYmx1ZTogMz4KKyAgICA8Q29sb3IuQkxVRTogMz4KIAogSWYgeW91IHdhbnQgdG8gYWNjZXNzIGVudW0gbWVtYmVycyBieSAqbmFtZSosIHVzZSBpdGVtIGFjY2Vzczo6CiAKLSAgICA+Pj4gQ29sb3JbJ3JlZCddCi0gICAgPENvbG9yLnJlZDogMT4KLSAgICA+Pj4gQ29sb3JbJ2dyZWVuJ10KLSAgICA8Q29sb3IuZ3JlZW46IDI+CisgICAgPj4+IENvbG9yWydSRUQnXQorICAgIDxDb2xvci5SRUQ6IDE+CisgICAgPj4+IENvbG9yWydHUkVFTiddCisgICAgPENvbG9yLkdSRUVOOiAyPgogCiBJZiB5b3UgaGF2ZSBhbiBlbnVtIG1lbWJlciBhbmQgbmVlZCBpdHMgOmF0dHI6YG5hbWVgIG9yIDphdHRyOmB2YWx1ZWA6OgogCi0gICAgPj4+IG1lbWJlciA9IENvbG9yLnJlZAorICAgID4+PiBtZW1iZXIgPSBDb2xvci5SRUQKICAgICA+Pj4gbWVtYmVyLm5hbWUKLSAgICAncmVkJworICAgICdSRUQnCiAgICAgPj4+IG1lbWJlci52YWx1ZQogICAgIDEKIApAQCAtMTU0LDEyICsxNzksMTIgQEAKIEhhdmluZyB0d28gZW51bSBtZW1iZXJzIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBpbnZhbGlkOjoKIAogICAgID4+PiBjbGFzcyBTaGFwZShFbnVtKToKLSAgICAuLi4gICAgIHNxdWFyZSA9IDIKLSAgICAuLi4gICAgIHNxdWFyZSA9IDMKKyAgICAuLi4gICAgIFNRVUFSRSA9IDIKKyAgICAuLi4gICAgIFNRVUFSRSA9IDMKICAgICAuLi4KICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAnc3F1YXJlJworICAgIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJ1NRVUFSRScKIAogSG93ZXZlciwgdHdvIGVudW0gbWVtYmVycyBhcmUgYWxsb3dlZCB0byBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgR2l2ZW4gdHdvIG1lbWJlcnMKIEEgYW5kIEIgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoYW5kIEEgZGVmaW5lZCBmaXJzdCksIEIgaXMgYW4gYWxpYXMgdG8gQS4gIEJ5LXZhbHVlCkBAIC0xNjcsMTcgKzE5MiwxNyBAQAogcmV0dXJuIEE6OgogCiAgICAgPj4+IGNsYXNzIFNoYXBlKEVudW0pOgotICAgIC4uLiAgICAgc3F1YXJlID0gMgotICAgIC4uLiAgICAgZGlhbW9uZCA9IDEKLSAgICAuLi4gICAgIGNpcmNsZSA9IDMKLSAgICAuLi4gICAgIGFsaWFzX2Zvcl9zcXVhcmUgPSAyCisgICAgLi4uICAgICBTUVVBUkUgPSAyCisgICAgLi4uICAgICBESUFNT05EID0gMQorICAgIC4uLiAgICAgQ0lSQ0xFID0gMworICAgIC4uLiAgICAgQUxJQVNfRk9SX1NRVUFSRSA9IDIKICAgICAuLi4KLSAgICA+Pj4gU2hhcGUuc3F1YXJlCi0gICAgPFNoYXBlLnNxdWFyZTogMj4KLSAgICA+Pj4gU2hhcGUuYWxpYXNfZm9yX3NxdWFyZQotICAgIDxTaGFwZS5zcXVhcmU6IDI+CisgICAgPj4+IFNoYXBlLlNRVUFSRQorICAgIDxTaGFwZS5TUVVBUkU6IDI+CisgICAgPj4+IFNoYXBlLkFMSUFTX0ZPUl9TUVVBUkUKKyAgICA8U2hhcGUuU1FVQVJFOiAyPgogICAgID4+PiBTaGFwZSgyKQotICAgIDxTaGFwZS5zcXVhcmU6IDI+CisgICAgPFNoYXBlLlNRVUFSRTogMj4KIAogLi4gbm90ZTo6CiAKQEAgLTIwMiwyMyArMjI3LDU5IEBACiAgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRW51bSwgdW5pcXVlCiAgICAgPj4+IEB1bmlxdWUKICAgICAuLi4gY2xhc3MgTWlzdGFrZShFbnVtKToKLSAgICAuLi4gICAgIG9uZSA9IDEKLSAgICAuLi4gICAgIHR3byA9IDIKLSAgICAuLi4gICAgIHRocmVlID0gMwotICAgIC4uLiAgICAgZm91ciA9IDMKKyAgICAuLi4gICAgIE9ORSA9IDEKKyAgICAuLi4gICAgIFRXTyA9IDIKKyAgICAuLi4gICAgIFRIUkVFID0gMworICAgIC4uLiAgICAgRk9VUiA9IDMKICAgICAuLi4KICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCisgICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBGT1VSIC0+IFRIUkVFCiAKIAorVXNpbmcgYXV0b21hdGljIHZhbHVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZXhhY3QgdmFsdWUgaXMgdW5pbXBvcnRhbnQgeW91IGNhbiB1c2UgOmNsYXNzOmBhdXRvYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBCTFVFID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IuUkVEOiAxPiwgPENvbG9yLkJMVUU6IDI+LCA8Q29sb3IuR1JFRU46IDM+XQorCitUaGUgdmFsdWVzIGFyZSBjaG9zZW4gYnkgOmZ1bmM6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AsIHdoaWNoIGNhbiBiZQorb3ZlcnJpZGRlbjo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b05hbWUoRW51bSk6CisgICAgLi4uICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBuYW1lCisgICAgLi4uCisgICAgPj4+IGNsYXNzIE9yZGluYWwoQXV0b05hbWUpOgorICAgIC4uLiAgICAgTk9SVEggPSBhdXRvKCkKKyAgICAuLi4gICAgIFNPVVRIID0gYXV0bygpCisgICAgLi4uICAgICBFQVNUID0gYXV0bygpCisgICAgLi4uICAgICBXRVNUID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoT3JkaW5hbCkKKyAgICBbPE9yZGluYWwuTk9SVEg6ICdOT1JUSCc+LCA8T3JkaW5hbC5TT1VUSDogJ1NPVVRIJz4sIDxPcmRpbmFsLkVBU1Q6ICdFQVNUJz4sIDxPcmRpbmFsLldFU1Q6ICdXRVNUJz5dCisKKy4uIG5vdGU6OgorCisgICAgVGhlIGdvYWwgb2YgdGhlIGRlZmF1bHQgOm1ldGg6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AgbWV0aG9kcyBpcyB0byBwcm92aWRlCisgICAgdGhlIG5leHQgOmNsYXNzOmBpbnRgIGluIHNlcXVlbmNlIHdpdGggdGhlIGxhc3QgOmNsYXNzOmBpbnRgIHByb3ZpZGVkLCBidXQKKyAgICB0aGUgd2F5IGl0IGRvZXMgdGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG1heSBjaGFuZ2UuCisKIEl0ZXJhdGlvbgogLS0tLS0tLS0tCiAKIEl0ZXJhdGluZyBvdmVyIHRoZSBtZW1iZXJzIG9mIGFuIGVudW0gZG9lcyBub3QgcHJvdmlkZSB0aGUgYWxpYXNlczo6CiAKICAgICA+Pj4gbGlzdChTaGFwZSkKLSAgICBbPFNoYXBlLnNxdWFyZTogMj4sIDxTaGFwZS5kaWFtb25kOiAxPiwgPFNoYXBlLmNpcmNsZTogMz5dCisgICAgWzxTaGFwZS5TUVVBUkU6IDI+LCA8U2hhcGUuRElBTU9ORDogMT4sIDxTaGFwZS5DSVJDTEU6IDM+XQogCiBUaGUgc3BlY2lhbCBhdHRyaWJ1dGUgYGBfX21lbWJlcnNfX2BgIGlzIGFuIG9yZGVyZWQgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzCiB0byBtZW1iZXJzLiAgSXQgaW5jbHVkZXMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlIGVudW1lcmF0aW9uLCBpbmNsdWRpbmcgdGhlCkBAIC0yMjcsMTYgKzI4OCwxNiBAQAogICAgID4+PiBmb3IgbmFtZSwgbWVtYmVyIGluIFNoYXBlLl9fbWVtYmVyc19fLml0ZW1zKCk6CiAgICAgLi4uICAgICBuYW1lLCBtZW1iZXIKICAgICAuLi4KLSAgICAoJ3NxdWFyZScsIDxTaGFwZS5zcXVhcmU6IDI+KQotICAgICgnZGlhbW9uZCcsIDxTaGFwZS5kaWFtb25kOiAxPikKLSAgICAoJ2NpcmNsZScsIDxTaGFwZS5jaXJjbGU6IDM+KQotICAgICgnYWxpYXNfZm9yX3NxdWFyZScsIDxTaGFwZS5zcXVhcmU6IDI+KQorICAgICgnU1FVQVJFJywgPFNoYXBlLlNRVUFSRTogMj4pCisgICAgKCdESUFNT05EJywgPFNoYXBlLkRJQU1PTkQ6IDE+KQorICAgICgnQ0lSQ0xFJywgPFNoYXBlLkNJUkNMRTogMz4pCisgICAgKCdBTElBU19GT1JfU1FVQVJFJywgPFNoYXBlLlNRVUFSRTogMj4pCiAKIFRoZSBgYF9fbWVtYmVyc19fYGAgYXR0cmlidXRlIGNhbiBiZSB1c2VkIGZvciBkZXRhaWxlZCBwcm9ncmFtbWF0aWMgYWNjZXNzIHRvCiB0aGUgZW51bWVyYXRpb24gbWVtYmVycy4gIEZvciBleGFtcGxlLCBmaW5kaW5nIGFsbCB0aGUgYWxpYXNlczo6CiAKICAgICA+Pj4gW25hbWUgZm9yIG5hbWUsIG1lbWJlciBpbiBTaGFwZS5fX21lbWJlcnNfXy5pdGVtcygpIGlmIG1lbWJlci5uYW1lICE9IG5hbWVdCi0gICAgWydhbGlhc19mb3Jfc3F1YXJlJ10KKyAgICBbJ0FMSUFTX0ZPUl9TUVVBUkUnXQogCiAKIENvbXBhcmlzb25zCkBAIC0yNDQsMzUgKzMwNSwzNSBAQAogCiBFbnVtZXJhdGlvbiBtZW1iZXJzIGFyZSBjb21wYXJlZCBieSBpZGVudGl0eTo6CiAKLSAgICA+Pj4gQ29sb3IucmVkIGlzIENvbG9yLnJlZAorICAgID4+PiBDb2xvci5SRUQgaXMgQ29sb3IuUkVECiAgICAgVHJ1ZQotICAgID4+PiBDb2xvci5yZWQgaXMgQ29sb3IuYmx1ZQorICAgID4+PiBDb2xvci5SRUQgaXMgQ29sb3IuQkxVRQogICAgIEZhbHNlCi0gICAgPj4+IENvbG9yLnJlZCBpcyBub3QgQ29sb3IuYmx1ZQorICAgID4+PiBDb2xvci5SRUQgaXMgbm90IENvbG9yLkJMVUUKICAgICBUcnVlCiAKIE9yZGVyZWQgY29tcGFyaXNvbnMgYmV0d2VlbiBlbnVtZXJhdGlvbiB2YWx1ZXMgYXJlICpub3QqIHN1cHBvcnRlZC4gIEVudW0KIG1lbWJlcnMgYXJlIG5vdCBpbnRlZ2VycyAoYnV0IHNlZSBgSW50RW51bWBfIGJlbG93KTo6CiAKLSAgICA+Pj4gQ29sb3IucmVkIDwgQ29sb3IuYmx1ZQorICAgID4+PiBDb2xvci5SRUQgPCBDb2xvci5CTFVFCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBDb2xvcigpIDwgQ29sb3IoKQorICAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ0NvbG9yJyBhbmQgJ0NvbG9yJwogCiBFcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91Z2g6OgogCi0gICAgPj4+IENvbG9yLmJsdWUgPT0gQ29sb3IucmVkCisgICAgPj4+IENvbG9yLkJMVUUgPT0gQ29sb3IuUkVECiAgICAgRmFsc2UKLSAgICA+Pj4gQ29sb3IuYmx1ZSAhPSBDb2xvci5yZWQKKyAgICA+Pj4gQ29sb3IuQkxVRSAhPSBDb2xvci5SRUQKICAgICBUcnVlCi0gICAgPj4+IENvbG9yLmJsdWUgPT0gQ29sb3IuYmx1ZQorICAgID4+PiBDb2xvci5CTFVFID09IENvbG9yLkJMVUUKICAgICBUcnVlCiAKIENvbXBhcmlzb25zIGFnYWluc3Qgbm9uLWVudW1lcmF0aW9uIHZhbHVlcyB3aWxsIGFsd2F5cyBjb21wYXJlIG5vdCBlcXVhbAogKGFnYWluLCA6Y2xhc3M6YEludEVudW1gIHdhcyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSwgc2VlCiBiZWxvdyk6OgogCi0gICAgPj4+IENvbG9yLmJsdWUgPT0gMgorICAgID4+PiBDb2xvci5CTFVFID09IDIKICAgICBGYWxzZQogCiAKQEAgLTI4OSw4ICszNTAsOCBAQAogdXN1YWwuICBJZiB3ZSBoYXZlIHRoaXMgZW51bWVyYXRpb246OgogCiAgICAgPj4+IGNsYXNzIE1vb2QoRW51bSk6Ci0gICAgLi4uICAgICBmdW5reSA9IDEKLSAgICAuLi4gICAgIGhhcHB5ID0gMworICAgIC4uLiAgICAgRlVOS1kgPSAxCisgICAgLi4uICAgICBIQVBQWSA9IDMKICAgICAuLi4KICAgICAuLi4gICAgIGRlZiBkZXNjcmliZShzZWxmKToKICAgICAuLi4gICAgICAgICAjIHNlbGYgaXMgdGhlIG1lbWJlciBoZXJlCkBAIC0zMDIsMTYgKzM2MywxNiBAQAogICAgIC4uLiAgICAgQGNsYXNzbWV0aG9kCiAgICAgLi4uICAgICBkZWYgZmF2b3JpdGVfbW9vZChjbHMpOgogICAgIC4uLiAgICAgICAgICMgY2xzIGhlcmUgaXMgdGhlIGVudW1lcmF0aW9uCi0gICAgLi4uICAgICAgICAgcmV0dXJuIGNscy5oYXBweQorICAgIC4uLiAgICAgICAgIHJldHVybiBjbHMuSEFQUFkKICAgICAuLi4KIAogVGhlbjo6CiAKICAgICA+Pj4gTW9vZC5mYXZvcml0ZV9tb29kKCkKLSAgICA8TW9vZC5oYXBweTogMz4KLSAgICA+Pj4gTW9vZC5oYXBweS5kZXNjcmliZSgpCi0gICAgKCdoYXBweScsIDMpCi0gICAgPj4+IHN0cihNb29kLmZ1bmt5KQorICAgIDxNb29kLkhBUFBZOiAzPgorICAgID4+PiBNb29kLkhBUFBZLmRlc2NyaWJlKCkKKyAgICAoJ0hBUFBZJywgMykKKyAgICA+Pj4gc3RyKE1vb2QuRlVOS1kpCiAgICAgJ215IGN1c3RvbSBzdHIhIDEnCiAKIFRoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dzOiBuYW1lcyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aApAQCAtMzMyLDcgKzM5Myw3IEBACiBhbnkgbWVtYmVycy4gIFNvIHRoaXMgaXMgZm9yYmlkZGVuOjoKIAogICAgID4+PiBjbGFzcyBNb3JlQ29sb3IoQ29sb3IpOgotICAgIC4uLiAgICAgcGluayA9IDE3CisgICAgLi4uICAgICBQSU5LID0gMTcKICAgICAuLi4KICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCkBAIC0zNDUsOCArNDA2LDggQEAKICAgICAuLi4gICAgICAgICBwYXNzCiAgICAgLi4uCiAgICAgPj4+IGNsYXNzIEJhcihGb28pOgotICAgIC4uLiAgICAgaGFwcHkgPSAxCi0gICAgLi4uICAgICBzYWQgPSAyCisgICAgLi4uICAgICBIQVBQWSA9IDEKKyAgICAuLi4gICAgIFNBRCA9IDIKICAgICAuLi4KIAogQWxsb3dpbmcgc3ViY2xhc3Npbmcgb2YgZW51bXMgdGhhdCBkZWZpbmUgbWVtYmVycyB3b3VsZCBsZWFkIHRvIGEgdmlvbGF0aW9uIG9mCkBAIC0zNjIsNyArNDIzLDcgQEAKIAogICAgID4+PiBmcm9tIHRlc3QudGVzdF9lbnVtIGltcG9ydCBGcnVpdAogICAgID4+PiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCi0gICAgPj4+IEZydWl0LnRvbWF0byBpcyBsb2FkcyhkdW1wcyhGcnVpdC50b21hdG8pKQorICAgID4+PiBGcnVpdC5UT01BVE8gaXMgbG9hZHMoZHVtcHMoRnJ1aXQuVE9NQVRPKSkKICAgICBUcnVlCiAKIFRoZSB1c3VhbCByZXN0cmljdGlvbnMgZm9yIHBpY2tsaW5nIGFwcGx5OiBwaWNrbGFibGUgZW51bXMgbXVzdCBiZSBkZWZpbmVkIGluCkBAIC0zODMsMTUgKzQ0NCwxNSBAQAogCiBUaGUgOmNsYXNzOmBFbnVtYCBjbGFzcyBpcyBjYWxsYWJsZSwgcHJvdmlkaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbCBBUEk6OgogCi0gICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdhbnQgYmVlIGNhdCBkb2cnKQorICAgID4+PiBBbmltYWwgPSBFbnVtKCdBbmltYWwnLCAnQU5UIEJFRSBDQVQgRE9HJykKICAgICA+Pj4gQW5pbWFsCiAgICAgPGVudW0gJ0FuaW1hbCc+Ci0gICAgPj4+IEFuaW1hbC5hbnQKLSAgICA8QW5pbWFsLmFudDogMT4KLSAgICA+Pj4gQW5pbWFsLmFudC52YWx1ZQorICAgID4+PiBBbmltYWwuQU5UCisgICAgPEFuaW1hbC5BTlQ6IDE+CisgICAgPj4+IEFuaW1hbC5BTlQudmFsdWUKICAgICAxCiAgICAgPj4+IGxpc3QoQW5pbWFsKQotICAgIFs8QW5pbWFsLmFudDogMT4sIDxBbmltYWwuYmVlOiAyPiwgPEFuaW1hbC5jYXQ6IDM+LCA8QW5pbWFsLmRvZzogND5dCisgICAgWzxBbmltYWwuQU5UOiAxPiwgPEFuaW1hbC5CRUU6IDI+LCA8QW5pbWFsLkNBVDogMz4sIDxBbmltYWwuRE9HOiA0Pl0KIAogVGhlIHNlbWFudGljcyBvZiB0aGlzIEFQSSByZXNlbWJsZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYC4gVGhlIGZpcnN0CiBhcmd1bWVudCBvZiB0aGUgY2FsbCB0byA6Y2xhc3M6YEVudW1gIGlzIHRoZSBuYW1lIG9mIHRoZSBlbnVtZXJhdGlvbi4KQEAgLTQwNiwxMCArNDY3LDEwIEBACiBhc3NpZ25tZW50IHRvIDpjbGFzczpgQW5pbWFsYCBpcyBlcXVpdmFsZW50IHRvOjoKIAogICAgID4+PiBjbGFzcyBBbmltYWwoRW51bSk6Ci0gICAgLi4uICAgICBhbnQgPSAxCi0gICAgLi4uICAgICBiZWUgPSAyCi0gICAgLi4uICAgICBjYXQgPSAzCi0gICAgLi4uICAgICBkb2cgPSA0CisgICAgLi4uICAgICBBTlQgPSAxCisgICAgLi4uICAgICBCRUUgPSAyCisgICAgLi4uICAgICBDQVQgPSAzCisgICAgLi4uICAgICBET0cgPSA0CiAgICAgLi4uCiAKIFRoZSByZWFzb24gZm9yIGRlZmF1bHRpbmcgdG8gYGAxYGAgYXMgdGhlIHN0YXJ0aW5nIG51bWJlciBhbmQgbm90IGBgMGBgIGlzCkBAIC00MjIsNyArNDgzLDcgQEAKIGZ1bmN0aW9uIGluIHNlcGFyYXRlIG1vZHVsZSwgYW5kIGFsc28gbWF5IG5vdCB3b3JrIG9uIElyb25QeXRob24gb3IgSnl0aG9uKS4KIFRoZSBzb2x1dGlvbiBpcyB0byBzcGVjaWZ5IHRoZSBtb2R1bGUgbmFtZSBleHBsaWNpdGx5IGFzIGZvbGxvd3M6OgogCi0gICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdhbnQgYmVlIGNhdCBkb2cnLCBtb2R1bGU9X19uYW1lX18pCisgICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdBTlQgQkVFIENBVCBET0cnLCBtb2R1bGU9X19uYW1lX18pCiAKIC4uIHdhcm5pbmc6OgogCkBAIC00MzUsNyArNDk2LDcgQEAKIHRvIGZpbmQgdGhlIGNsYXNzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBjbGFzcyB3YXMgbWFkZSBhdmFpbGFibGUgaW4gY2xhc3MKIFNvbWVEYXRhIGluIHRoZSBnbG9iYWwgc2NvcGU6OgogCi0gICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdhbnQgYmVlIGNhdCBkb2cnLCBxdWFsbmFtZT0nU29tZURhdGEuQW5pbWFsJykKKyAgICA+Pj4gQW5pbWFsID0gRW51bSgnQW5pbWFsJywgJ0FOVCBCRUUgQ0FUIERPRycsIHF1YWxuYW1lPSdTb21lRGF0YS5BbmltYWwnKQogCiBUaGUgY29tcGxldGUgc2lnbmF0dXJlIGlzOjoKIApAQCAtNDQ2LDE5ICs1MDcsMTkgQEAKIDpuYW1lczogVGhlIEVudW0gbWVtYmVycy4gIFRoaXMgY2FuIGJlIGEgd2hpdGVzcGFjZSBvciBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nCiAgICh2YWx1ZXMgd2lsbCBzdGFydCBhdCAxIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkKTo6CiAKLSAgICAncmVkIGdyZWVuIGJsdWUnIHwgJ3JlZCxncmVlbixibHVlJyB8ICdyZWQsIGdyZWVuLCBibHVlJworICAgICdSRUQgR1JFRU4gQkxVRScgfCAnUkVELEdSRUVOLEJMVUUnIHwgJ1JFRCwgR1JFRU4sIEJMVUUnCiAKICAgb3IgYW4gaXRlcmF0b3Igb2YgbmFtZXM6OgogCi0gICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddCisgICAgWydSRUQnLCAnR1JFRU4nLCAnQkxVRSddCiAKICAgb3IgYW4gaXRlcmF0b3Igb2YgKG5hbWUsIHZhbHVlKSBwYWlyczo6CiAKLSAgICBbKCdjeWFuJywgNCksICgnbWFnZW50YScsIDUpLCAoJ3llbGxvdycsIDYpXQorICAgIFsoJ0NZQU4nLCA0KSwgKCdNQUdFTlRBJywgNSksICgnWUVMTE9XJywgNildCiAKICAgb3IgYSBtYXBwaW5nOjoKIAotICAgIHsnY2hhcnRyZXVzZSc6IDcsICdzZWFfZ3JlZW4nOiAxMSwgJ3Jvc2VtYXJ5JzogNDJ9CisgICAgeydDSEFSVFJFVVNFJzogNywgJ1NFQV9HUkVFTic6IDExLCAnUk9TRU1BUlknOiA0Mn0KIAogOm1vZHVsZTogbmFtZSBvZiBtb2R1bGUgd2hlcmUgbmV3IEVudW0gY2xhc3MgY2FuIGJlIGZvdW5kLgogCkBAIC00NzgsNTYgKzUzOSwxNjcgQEAKIEludEVudW0KIF5eXl5eXl4KIAotQSB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCBpcyBwcm92aWRlZCB3aGljaCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKK1RoZSBmaXJzdCB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCB0aGF0IGlzIHByb3ZpZGVkIGlzIGFsc28gYSBzdWJjbGFzcyBvZgogOmNsYXNzOmBpbnRgLiAgTWVtYmVycyBvZiBhbiA6Y2xhc3M6YEludEVudW1gIGNhbiBiZSBjb21wYXJlZCB0byBpbnRlZ2VyczsKIGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkCiB0byBlYWNoIG90aGVyOjoKIAogICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEludEVudW0KICAgICA+Pj4gY2xhc3MgU2hhcGUoSW50RW51bSk6Ci0gICAgLi4uICAgICBjaXJjbGUgPSAxCi0gICAgLi4uICAgICBzcXVhcmUgPSAyCisgICAgLi4uICAgICBDSVJDTEUgPSAxCisgICAgLi4uICAgICBTUVVBUkUgPSAyCiAgICAgLi4uCiAgICAgPj4+IGNsYXNzIFJlcXVlc3QoSW50RW51bSk6Ci0gICAgLi4uICAgICBwb3N0ID0gMQotICAgIC4uLiAgICAgZ2V0ID0gMgorICAgIC4uLiAgICAgUE9TVCA9IDEKKyAgICAuLi4gICAgIEdFVCA9IDIKICAgICAuLi4KICAgICA+Pj4gU2hhcGUgPT0gMQogICAgIEZhbHNlCi0gICAgPj4+IFNoYXBlLmNpcmNsZSA9PSAxCisgICAgPj4+IFNoYXBlLkNJUkNMRSA9PSAxCiAgICAgVHJ1ZQotICAgID4+PiBTaGFwZS5jaXJjbGUgPT0gUmVxdWVzdC5wb3N0CisgICAgPj4+IFNoYXBlLkNJUkNMRSA9PSBSZXF1ZXN0LlBPU1QKICAgICBUcnVlCiAKIEhvd2V2ZXIsIHRoZXkgc3RpbGwgY2FuJ3QgYmUgY29tcGFyZWQgdG8gc3RhbmRhcmQgOmNsYXNzOmBFbnVtYCBlbnVtZXJhdGlvbnM6OgogCiAgICAgPj4+IGNsYXNzIFNoYXBlKEludEVudW0pOgotICAgIC4uLiAgICAgY2lyY2xlID0gMQotICAgIC4uLiAgICAgc3F1YXJlID0gMgorICAgIC4uLiAgICAgQ0lSQ0xFID0gMQorICAgIC4uLiAgICAgU1FVQVJFID0gMgogICAgIC4uLgogICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKLSAgICAuLi4gICAgIHJlZCA9IDEKLSAgICAuLi4gICAgIGdyZWVuID0gMgorICAgIC4uLiAgICAgUkVEID0gMQorICAgIC4uLiAgICAgR1JFRU4gPSAyCiAgICAgLi4uCi0gICAgPj4+IFNoYXBlLmNpcmNsZSA9PSBDb2xvci5yZWQKKyAgICA+Pj4gU2hhcGUuQ0lSQ0xFID09IENvbG9yLlJFRAogICAgIEZhbHNlCiAKIDpjbGFzczpgSW50RW51bWAgdmFsdWVzIGJlaGF2ZSBsaWtlIGludGVnZXJzIGluIG90aGVyIHdheXMgeW91J2QgZXhwZWN0OjoKIAotICAgID4+PiBpbnQoU2hhcGUuY2lyY2xlKQorICAgID4+PiBpbnQoU2hhcGUuQ0lSQ0xFKQogICAgIDEKLSAgICA+Pj4gWydhJywgJ2InLCAnYyddW1NoYXBlLmNpcmNsZV0KKyAgICA+Pj4gWydhJywgJ2InLCAnYyddW1NoYXBlLkNJUkNMRV0KICAgICAnYicKLSAgICA+Pj4gW2kgZm9yIGkgaW4gcmFuZ2UoU2hhcGUuc3F1YXJlKV0KKyAgICA+Pj4gW2kgZm9yIGkgaW4gcmFuZ2UoU2hhcGUuU1FVQVJFKV0KICAgICBbMCwgMV0KIAotRm9yIHRoZSB2YXN0IG1ham9yaXR5IG9mIGNvZGUsIDpjbGFzczpgRW51bWAgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQsCi1zaW5jZSA6Y2xhc3M6YEludEVudW1gIGJyZWFrcyBzb21lIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieQotYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kIHRodXMgYnkgdHJhbnNpdGl2aXR5IHRvIG90aGVyCi11bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIEl0IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gc3BlY2lhbCBjYXNlcyB3aGVyZQotdGhlcmUncyBubyBvdGhlciBjaG9pY2U7IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZQotcmVwbGFjZWQgd2l0aCBlbnVtZXJhdGlvbnMgYW5kIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkIHdpdGggY29kZQotdGhhdCBzdGlsbCBleHBlY3RzIGludGVnZXJzLgorCitJbnRGbGFnCiteXl5eXl5eCisKK1RoZSBuZXh0IHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIHByb3ZpZGVkLCA6Y2xhc3M6YEludEZsYWdgLCBpcyBhbHNvIGJhc2VkCitvbiA6Y2xhc3M6YGludGAuICBUaGUgZGlmZmVyZW5jZSBiZWluZyA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgY2FuIGJlIGNvbWJpbmVkCit1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KSBhbmQgdGhlIHJlc3VsdCBpcyBzdGlsbCBhbgorOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIuICBIb3dldmVyLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCA6Y2xhc3M6YEludEZsYWdgCittZW1iZXJzIGFsc28gc3ViY2xhc3MgOmNsYXNzOmBpbnRgIGFuZCBjYW4gYmUgdXNlZCB3aGVyZXZlciBhbiA6Y2xhc3M6YGludGAgaXMKK3VzZWQuICBBbnkgb3BlcmF0aW9uIG9uIGFuIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyIGJlc2lkZXMgdGhlIGJpdC13aXNlCitvcGVyYXRpb25zIHdpbGwgbG9zZSB0aGUgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworU2FtcGxlIDpjbGFzczpgSW50RmxhZ2AgY2xhc3M6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgSW50RmxhZworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLgorICAgID4+PiBQZXJtLlIgfCBQZXJtLlcKKyAgICA8UGVybS5SfFc6IDY+CisgICAgPj4+IFBlcm0uUiArIFBlcm0uVworICAgIDYKKyAgICA+Pj4gUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICA+Pj4gUGVybS5SIGluIFJXCisgICAgVHJ1ZQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG5hbWUgdGhlIGNvbWJpbmF0aW9uczo6CisKKyAgICA+Pj4gY2xhc3MgUGVybShJbnRGbGFnKToKKyAgICAuLi4gICAgIFIgPSA0CisgICAgLi4uICAgICBXID0gMgorICAgIC4uLiAgICAgWCA9IDEKKyAgICAuLi4gICAgIFJXWCA9IDcKKyAgICA+Pj4gUGVybS5SV1gKKyAgICA8UGVybS5SV1g6IDc+CisgICAgPj4+IH5QZXJtLlJXWAorICAgIDxQZXJtLi04OiAtOD4KKworQW5vdGhlciBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIDpjbGFzczpgSW50RmxhZ2AgYW5kIDpjbGFzczpgRW51bWAgaXMgdGhhdAoraWYgbm8gZmxhZ3MgYXJlIHNldCAodGhlIHZhbHVlIGlzIDApLCBpdHMgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IFBlcm0uUiAmIFBlcm0uWAorICAgIDxQZXJtLjA6IDA+CisgICAgPj4+IGJvb2woUGVybS5SICYgUGVybS5YKQorICAgIEZhbHNlCisKK0JlY2F1c2UgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzIGFyZSBhbHNvIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgIHRoZXkgY2FuCitiZSBjb21iaW5lZCB3aXRoIHRoZW06OgorCisgICAgPj4+IFBlcm0uWCB8IDgKKyAgICA8UGVybS44fFg6IDk+CisKKworRmxhZworXl5eXgorCitUaGUgbGFzdCB2YXJpYXRpb24gaXMgOmNsYXNzOmBGbGFnYC4gIExpa2UgOmNsYXNzOmBJbnRGbGFnYCwgOmNsYXNzOmBGbGFnYAorbWVtYmVycyBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzICgmLCBcfCwgXiwgfikuICBVbmxpa2UKKzpjbGFzczpgSW50RmxhZ2AsIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGgsIG5vciBjb21wYXJlZCBhZ2FpbnN0LCBhbnkKK290aGVyIDpjbGFzczpgRmxhZ2AgZW51bWVyYXRpb24sIG5vciA6Y2xhc3M6YGludGAuICBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0bworc3BlY2lmeSB0aGUgdmFsdWVzIGRpcmVjdGx5IGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSA6Y2xhc3M6YGF1dG9gIGFzIHRoZQordmFsdWUgYW5kIGxldCA6Y2xhc3M6YEZsYWdgIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSB2YWx1ZS4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0xpa2UgOmNsYXNzOmBJbnRGbGFnYCwgaWYgYSBjb21iaW5hdGlvbiBvZiA6Y2xhc3M6YEZsYWdgIG1lbWJlcnMgcmVzdWx0cyBpbiBubworZmxhZ3MgYmVpbmcgc2V0LCB0aGUgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRmxhZworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIFJFRCA9IGF1dG8oKQorICAgIC4uLiAgICAgQkxVRSA9IGF1dG8oKQorICAgIC4uLiAgICAgR1JFRU4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuUkVEICYgQ29sb3IuR1JFRU4KKyAgICA8Q29sb3IuMDogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5SRUQgJiBDb2xvci5HUkVFTikKKyAgICBGYWxzZQorCitJbmRpdmlkdWFsIGZsYWdzIHNob3VsZCBoYXZlIHZhbHVlcyB0aGF0IGFyZSBwb3dlcnMgb2YgdHdvICgxLCAyLCA0LCA4LCAuLi4pLAord2hpbGUgY29tYmluYXRpb25zIG9mIGZsYWdzIHdvbid0OjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIFJFRCA9IGF1dG8oKQorICAgIC4uLiAgICAgQkxVRSA9IGF1dG8oKQorICAgIC4uLiAgICAgR1JFRU4gPSBhdXRvKCkKKyAgICAuLi4gICAgIFdISVRFID0gUkVEIHwgQkxVRSB8IEdSRUVOCisgICAgLi4uCisgICAgPj4+IENvbG9yLldISVRFCisgICAgPENvbG9yLldISVRFOiA3PgorCitHaXZpbmcgYSBuYW1lIHRvIHRoZSAibm8gZmxhZ3Mgc2V0IiBjb25kaXRpb24gZG9lcyBub3QgY2hhbmdlIGl0cyBib29sZWFuCit2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgLi4uICAgICBCTEFDSyA9IDAKKyAgICAuLi4gICAgIFJFRCA9IGF1dG8oKQorICAgIC4uLiAgICAgQkxVRSA9IGF1dG8oKQorICAgIC4uLiAgICAgR1JFRU4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuQkxBQ0sKKyAgICA8Q29sb3IuQkxBQ0s6IDA+CisgICAgPj4+IGJvb2woQ29sb3IuQkxBQ0spCisgICAgRmFsc2UKKworLi4gbm90ZTo6CisKKyAgICBGb3IgdGhlIG1ham9yaXR5IG9mIG5ldyBjb2RlLCA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEZsYWdgIGFyZSBzdHJvbmdseQorICAgIHJlY29tbWVuZGVkLCBzaW5jZSA6Y2xhc3M6YEludEVudW1gIGFuZCA6Y2xhc3M6YEludEZsYWdgIGJyZWFrIHNvbWUKKyAgICBzZW1hbnRpYyBwcm9taXNlcyBvZiBhbiBlbnVtZXJhdGlvbiAoYnkgYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kCisgICAgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIgdW5yZWxhdGVkIGVudW1lcmF0aW9ucykuICA6Y2xhc3M6YEludEVudW1gCisgICAgYW5kIDpjbGFzczpgSW50RmxhZ2Agc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlcyB3aGVyZSA6Y2xhc3M6YEVudW1gIGFuZAorICAgIDpjbGFzczpgRmxhZ2Agd2lsbCBub3QgZG87IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZSByZXBsYWNlZAorICAgIHdpdGggZW51bWVyYXRpb25zLCBvciBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIHN5c3RlbXMuCiAKIAogT3RoZXJzCkBAIC01NTgsNyArNzMwLDggQEAKIDQuICUtc3R5bGUgZm9ybWF0dGluZzogIGAlc2AgYW5kIGAlcmAgY2FsbCB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzCiAgICA6bWV0aDpgX19zdHJfX2AgYW5kIDptZXRoOmBfX3JlcHJfX2AgcmVzcGVjdGl2ZWx5OyBvdGhlciBjb2RlcyAoc3VjaCBhcwogICAgYCVpYCBvciBgJWhgIGZvciBJbnRFbnVtKSB0cmVhdCB0aGUgZW51bSBtZW1iZXIgYXMgaXRzIG1peGVkLWluIHR5cGUuCi01LiA6bWV0aDpgc3RyLmZvcm1hdGAgKG9yIDpmdW5jOmBmb3JtYXRgKSB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KKzUuIDpyZWY6YEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCA6bWV0aDpgc3RyLmZvcm1hdGAsCisgICBhbmQgOmZ1bmM6YGZvcm1hdGAgd2lsbCB1c2UgdGhlIG1peGVkLWluCiAgICB0eXBlJ3MgOm1ldGg6YF9fZm9ybWF0X19gLiAgSWYgdGhlIDpjbGFzczpgRW51bWAgY2xhc3MncyA6ZnVuYzpgc3RyYCBvcgogICAgOmZ1bmM6YHJlcHJgIGlzIGRlc2lyZWQsIHVzZSB0aGUgYCFzYCBvciBgIXJgIGZvcm1hdCBjb2Rlcy4KIApAQCAtNTY2LDE4ICs3MzksODcgQEAKIEludGVyZXN0aW5nIGV4YW1wbGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGlsZSA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gIGFyZSBleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YKLXVzZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuICBIZXJlIGFyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudAotdHlwZXMgb2YgZW51bWVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgZGlyZWN0bHksIG9yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZwotb25lJ3Mgb3duLgorV2hpbGUgOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgOmNsYXNzOmBJbnRGbGFnYCwgYW5kIDpjbGFzczpgRmxhZ2AgYXJlCitleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YgdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUKK2FyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudCB0eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwKK29yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZyBvbmUncyBvd24uCiAKIAotQXV0b051bWJlcgotXl5eXl5eXl5eXgorT21pdHRpbmcgdmFsdWVzCiteXl5eXl5eXl5eXl5eXl4KIAotQXZvaWRzIGhhdmluZyB0byBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgZWFjaCBlbnVtZXJhdGlvbiBtZW1iZXI6OgorSW4gbWFueSB1c2UtY2FzZXMgb25lIGRvZXNuJ3QgY2FyZSB3aGF0IHRoZSBhY3R1YWwgdmFsdWUgb2YgYW4gZW51bWVyYXRpb24KK2lzLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRlZmluZSB0aGlzIHR5cGUgb2Ygc2ltcGxlIGVudW1lcmF0aW9uOgogCi0gICAgPj4+IGNsYXNzIEF1dG9OdW1iZXIoRW51bSk6CistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBhdXRvYCBmb3IgdGhlIHZhbHVlCistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBvYmplY3RgIGFzIHRoZSB2YWx1ZQorLSB1c2UgYSBkZXNjcmlwdGl2ZSBzdHJpbmcgYXMgdGhlIHZhbHVlCistIHVzZSBhIHR1cGxlIGFzIHRoZSB2YWx1ZSBhbmQgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gIHRvIHJlcGxhY2UgdGhlCisgIHR1cGxlIHdpdGggYW4gOmNsYXNzOmBpbnRgIHZhbHVlCisKK1VzaW5nIGFueSBvZiB0aGVzZSBtZXRob2RzIHNpZ25pZmllcyB0byB0aGUgdXNlciB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgbm90CitpbXBvcnRhbnQsIGFuZCBhbHNvIGVuYWJsZXMgb25lIHRvIGFkZCwgcmVtb3ZlLCBvciByZW9yZGVyIG1lbWJlcnMgd2l0aG91dAoraGF2aW5nIHRvIHJlbnVtYmVyIHRoZSByZW1haW5pbmcgbWVtYmVycy4KKworV2hpY2hldmVyIG1ldGhvZCB5b3UgY2hvb3NlLCB5b3Ugc2hvdWxkIHByb3ZpZGUgYSA6bWV0aDpgcmVwcmAgdGhhdCBhbHNvIGhpZGVzCit0aGUgKHVuaW1wb3J0YW50KSB2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgTm9WYWx1ZShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gJzwlcy4lcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCisgICAgLi4uCisKKworVXNpbmcgOmNsYXNzOmBhdXRvYAorIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YGF1dG9gIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICBSRUQgPSBhdXRvKCkKKyAgICAuLi4gICAgIEJMVUUgPSBhdXRvKCkKKyAgICAuLi4gICAgIEdSRUVOID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IENvbG9yLkdSRUVOCisgICAgPENvbG9yLkdSRUVOPgorCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YAorIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgUkVEID0gb2JqZWN0KCkKKyAgICAuLi4gICAgIEdSRUVOID0gb2JqZWN0KCkKKyAgICAuLi4gICAgIEJMVUUgPSBvYmplY3QoKQorICAgIC4uLgorICAgID4+PiBDb2xvci5HUkVFTgorICAgIDxDb2xvci5HUkVFTj4KKworCitVc2luZyBhIGRlc2NyaXB0aXZlIHN0cmluZworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgYSBzdHJpbmcgYXMgdGhlIHZhbHVlIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICBSRUQgPSAnc3RvcCcKKyAgICAuLi4gICAgIEdSRUVOID0gJ2dvJworICAgIC4uLiAgICAgQkxVRSA9ICd0b28gZmFzdCEnCisgICAgLi4uCisgICAgPj4+IENvbG9yLkdSRUVOCisgICAgPENvbG9yLkdSRUVOPgorICAgID4+PiBDb2xvci5HUkVFTi52YWx1ZQorICAgICdnbycKKworCitVc2luZyBhIGN1c3RvbSA6bWV0aDpgX19uZXdfX2AKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyBhbiBhdXRvLW51bWJlcmluZyA6bWV0aDpgX19uZXdfX2Agd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBBdXRvTnVtYmVyKE5vVmFsdWUpOgogICAgIC4uLiAgICAgZGVmIF9fbmV3X18oY2xzKToKICAgICAuLi4gICAgICAgICB2YWx1ZSA9IGxlbihjbHMuX19tZW1iZXJzX18pICsgMQogICAgIC4uLiAgICAgICAgIG9iaiA9IG9iamVjdC5fX25ld19fKGNscykKQEAgLTU4NSwxMiArODI3LDE1IEBACiAgICAgLi4uICAgICAgICAgcmV0dXJuIG9iagogICAgIC4uLgogICAgID4+PiBjbGFzcyBDb2xvcihBdXRvTnVtYmVyKToKLSAgICAuLi4gICAgIHJlZCA9ICgpCi0gICAgLi4uICAgICBncmVlbiA9ICgpCi0gICAgLi4uICAgICBibHVlID0gKCkKKyAgICAuLi4gICAgIFJFRCA9ICgpCisgICAgLi4uICAgICBHUkVFTiA9ICgpCisgICAgLi4uICAgICBCTFVFID0gKCkKICAgICAuLi4KLSAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgotICAgIFRydWUKKyAgICA+Pj4gQ29sb3IuR1JFRU4KKyAgICA8Q29sb3IuR1JFRU4+CisgICAgPj4+IENvbG9yLkdSRUVOLnZhbHVlCisgICAgMgorCiAKIC4uIG5vdGU6OgogCkBAIC02NTIsMTQgKzg5NywxNCBAQAogICAgIC4uLiAgICAgICAgICAgICAgICAgJSAoYSwgZSkpCiAgICAgLi4uCiAgICAgPj4+IGNsYXNzIENvbG9yKER1cGxpY2F0ZUZyZWVFbnVtKToKLSAgICAuLi4gICAgIHJlZCA9IDEKLSAgICAuLi4gICAgIGdyZWVuID0gMgotICAgIC4uLiAgICAgYmx1ZSA9IDMKLSAgICAuLi4gICAgIGdyZW5lID0gMgorICAgIC4uLiAgICAgUkVEID0gMQorICAgIC4uLiAgICAgR1JFRU4gPSAyCisgICAgLi4uICAgICBCTFVFID0gMworICAgIC4uLiAgICAgR1JFTkUgPSAyCiAgICAgLi4uCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgIC4uLgotICAgIFZhbHVlRXJyb3I6IGFsaWFzZXMgbm90IGFsbG93ZWQgaW4gRHVwbGljYXRlRnJlZUVudW06ICAnZ3JlbmUnIC0tPiAnZ3JlZW4nCisgICAgVmFsdWVFcnJvcjogYWxpYXNlcyBub3QgYWxsb3dlZCBpbiBEdXBsaWNhdGVGcmVlRW51bTogICdHUkVORScgLS0+ICdHUkVFTicKIAogLi4gbm90ZTo6CiAKQEAgLTczMCwxMCArOTc1LDYxIEBACiBGaW5lciBQb2ludHMKIF5eXl5eXl5eXl5eXgogCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgYXJlIGluc3RhbmNlcyBvZiBhbiA6Y2xhc3M6YEVudW1gIGNsYXNzLCBhbmQgZXZlbgotdGhvdWdoIHRoZXkgYXJlIGFjY2Vzc2libGUgYXMgYEVudW1DbGFzcy5tZW1iZXJgLCB0aGV5IHNob3VsZCBub3QgYmUgYWNjZXNzZWQKLWRpcmVjdGx5IGZyb20gdGhlIG1lbWJlciBhcyB0aGF0IGxvb2t1cCBtYXkgZmFpbCBvciwgd29yc2UsIHJldHVybiBzb21ldGhpbmcKLWJlc2lkZXMgdGhlIDpjbGFzczpgRW51bWAgbWVtYmVyIHlvdSBsb29raW5nIGZvcjo6CitTdXBwb3J0ZWQgYGBfX2R1bmRlcl9fYGAgbmFtZXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6YXR0cjpgX19tZW1iZXJzX19gIGlzIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIG9mIGBgbWVtYmVyX25hbWVgYDpgYG1lbWJlcmBgCitpdGVtcy4gIEl0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KKworOm1ldGg6YF9fbmV3X19gLCBpZiBzcGVjaWZpZWQsIG11c3QgY3JlYXRlIGFuZCByZXR1cm4gdGhlIGVudW0gbWVtYmVyczsgaXQgaXMKK2Fsc28gYSB2ZXJ5IGdvb2QgaWRlYSB0byBzZXQgdGhlIG1lbWJlcidzIDphdHRyOmBfdmFsdWVfYCBhcHByb3ByaWF0ZWx5LiAgT25jZQorYWxsIHRoZSBtZW1iZXJzIGFyZSBjcmVhdGVkIGl0IGlzIG5vIGxvbmdlciB1c2VkLgorCisKK1N1cHBvcnRlZCBgYF9zdW5kZXJfYGAgbmFtZXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworLSBgYF9uYW1lX2BgIC0tIG5hbWUgb2YgdGhlIG1lbWJlcgorLSBgYF92YWx1ZV9gYCAtLSB2YWx1ZSBvZiB0aGUgbWVtYmVyOyBjYW4gYmUgc2V0IC8gbW9kaWZpZWQgaW4gYGBfX25ld19fYGAKKworLSBgYF9taXNzaW5nX2BgIC0tIGEgbG9va3VwIGZ1bmN0aW9uIHVzZWQgd2hlbiBhIHZhbHVlIGlzIG5vdCBmb3VuZDsgbWF5IGJlCisgIG92ZXJyaWRkZW4KKy0gYGBfb3JkZXJfYGAgLS0gdXNlZCBpbiBQeXRob24gMi8zIGNvZGUgdG8gZW5zdXJlIG1lbWJlciBvcmRlciBpcyBjb25zaXN0ZW50CisgIChjbGFzcyBhdHRyaWJ1dGUsIHJlbW92ZWQgZHVyaW5nIGNsYXNzIGNyZWF0aW9uKQorLSBgYF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2BgIC0tIHVzZWQgYnkgdGhlIGBGdW5jdGlvbmFsIEFQSWBfIGFuZCBieQorICA6Y2xhc3M6YGF1dG9gIHRvIGdldCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgYW4gZW51bSBtZW1iZXI7IG1heSBiZQorICBvdmVycmlkZGVuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBgYF9taXNzaW5nX2BgLCBgYF9vcmRlcl9gYCwgYGBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gYAorCitUbyBoZWxwIGtlZXAgUHl0aG9uIDIgLyBQeXRob24gMyBjb2RlIGluIHN5bmMgYW4gOmF0dHI6YF9vcmRlcl9gIGF0dHJpYnV0ZSBjYW4KK2JlIHByb3ZpZGVkLiAgSXQgd2lsbCBiZSBjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBvcmRlciBvZiB0aGUgZW51bWVyYXRpb24KK2FuZCByYWlzZSBhbiBlcnJvciBpZiB0aGUgdHdvIGRvIG5vdCBtYXRjaDo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6CisgICAgLi4uICAgICBfb3JkZXJfID0gJ1JFRCBHUkVFTiBCTFVFJworICAgIC4uLiAgICAgUkVEID0gMQorICAgIC4uLiAgICAgQkxVRSA9IDMKKyAgICAuLi4gICAgIEdSRUVOID0gMgorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBUeXBlRXJyb3I6IG1lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfCisKKy4uIG5vdGU6OgorCisgICAgSW4gUHl0aG9uIDIgY29kZSB0aGUgOmF0dHI6YF9vcmRlcl9gIGF0dHJpYnV0ZSBpcyBuZWNlc3NhcnkgYXMgZGVmaW5pdGlvbgorICAgIG9yZGVyIGlzIGxvc3QgYmVmb3JlIGl0IGNhbiBiZSByZWNvcmRlZC4KKworYGBFbnVtYGAgbWVtYmVyIHR5cGUKKyIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKzpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgaW5zdGFuY2VzIG9mIHRoZWlyIDpjbGFzczpgRW51bWAgY2xhc3MsIGFuZCBhcmUKK25vcm1hbGx5IGFjY2Vzc2VkIGFzIGBgRW51bUNsYXNzLm1lbWJlcmBgLiAgVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzIHRoZXkKK2NhbiBhbHNvIGJlIGFjY2Vzc2VkIGFzIGBgRW51bUNsYXNzLm1lbWJlci5tZW1iZXJgYCwgYnV0IHlvdSBzaG91bGQgbmV2ZXIgZG8KK3RoaXMgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nIGJlc2lkZXMgdGhlCis6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgYXJlIGxvb2tpbmcgZm9yICh0aGlzIGlzIGFub3RoZXIgZ29vZCByZWFzb24gdG8gdXNlCithbGwtdXBwZXJjYXNlIG5hbWVzIGZvciBtZW1iZXJzKTo6CiAKICAgICA+Pj4gY2xhc3MgRmllbGRUeXBlcyhFbnVtKToKICAgICAuLi4gICAgIG5hbWUgPSAwCkBAIC03NDcsNyArMTA0MywyNCBAQAogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogCi1UaGUgOmF0dHI6YF9fbWVtYmVyc19fYCBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorCitCb29sZWFuIHZhbHVlIG9mIGBgRW51bWBgIGNsYXNzZXMgYW5kIG1lbWJlcnMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgdGhhdCBhcmUgbWl4ZWQgd2l0aCBub24tOmNsYXNzOmBFbnVtYCB0eXBlcyAoc3VjaCBhcworOmNsYXNzOmBpbnRgLCA6Y2xhc3M6YHN0cmAsIGV0Yy4pIGFyZSBldmFsdWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtaXhlZC1pbgordHlwZSdzIHJ1bGVzOyBvdGhlcndpc2UsIGFsbCBtZW1iZXJzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4gIFRvIG1ha2UgeW91cgorb3duIEVudW0ncyBib29sZWFuIGV2YWx1YXRpb24gZGVwZW5kIG9uIHRoZSBtZW1iZXIncyB2YWx1ZSBhZGQgdGhlIGZvbGxvd2luZyB0bworeW91ciBjbGFzczo6CisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYudmFsdWUpCisKKzpjbGFzczpgRW51bWAgY2xhc3NlcyBhbHdheXMgZXZhbHVhdGUgYXMgOmRhdGE6YFRydWVgLgorCisKK2BgRW51bWBgIGNsYXNzZXMgd2l0aCBtZXRob2RzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBJZiB5b3UgZ2l2ZSB5b3VyIDpjbGFzczpgRW51bWAgc3ViY2xhc3MgZXh0cmEgbWV0aG9kcywgbGlrZSB0aGUgYFBsYW5ldGBfCiBjbGFzcyBhYm92ZSwgdGhvc2UgbWV0aG9kcyB3aWxsIHNob3cgdXAgaW4gYSA6ZnVuYzpgZGlyYCBvZiB0aGUgbWVtYmVyLApAQCAtNzU4LDExICsxMDcxLDIzIEBACiAgICAgPj4+IGRpcihQbGFuZXQuRUFSVEgpCiAgICAgWydfX2NsYXNzX18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJywgJ25hbWUnLCAnc3VyZmFjZV9ncmF2aXR5JywgJ3ZhbHVlJ10KIAotVGhlIDptZXRoOmBfX25ld19fYCBtZXRob2Qgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUKLTpjbGFzczpgRW51bWAgbWVtYmVycyAtLSBhZnRlciB0aGF0IGl0IGlzIHJlcGxhY2VkLiAgQW55IGN1c3RvbSA6bWV0aDpgX19uZXdfX2AKLW1ldGhvZCBtdXN0IGNyZWF0ZSB0aGUgb2JqZWN0IGFuZCBzZXQgdGhlIDphdHRyOmBfdmFsdWVfYCBhdHRyaWJ1dGUKLWFwcHJvcHJpYXRlbHkuCiAKLUlmIHlvdSB3aXNoIHRvIGNoYW5nZSBob3cgOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBsb29rZWQgdXAgeW91IHNob3VsZCBlaXRoZXIKLXdyaXRlIGEgaGVscGVyIGZ1bmN0aW9uIG9yIGEgOmZ1bmM6YGNsYXNzbWV0aG9kYCBmb3IgdGhlIDpjbGFzczpgRW51bWAKLXN1YmNsYXNzLgorQ29tYmluaW5nIG1lbWJlcnMgb2YgYGBGbGFnYGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK0lmIGEgY29tYmluYXRpb24gb2YgRmxhZyBtZW1iZXJzIGlzIG5vdCBuYW1lZCwgdGhlIDpmdW5jOmByZXByYCB3aWxsIGluY2x1ZGUKK2FsbCBuYW1lZCBmbGFncyBhbmQgYWxsIG5hbWVkIGNvbWJpbmF0aW9ucyBvZiBmbGFncyB0aGF0IGFyZSBpbiB0aGUgdmFsdWU6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLiAgICAgQkxVRSA9IGF1dG8oKQorICAgIC4uLiAgICAgTUFHRU5UQSA9IFJFRCB8IEJMVUUKKyAgICAuLi4gICAgIFlFTExPVyA9IFJFRCB8IEdSRUVOCisgICAgLi4uICAgICBDWUFOID0gR1JFRU4gfCBCTFVFCisgICAgLi4uCisgICAgPj4+IENvbG9yKDMpICAjIG5hbWVkIGNvbWJpbmF0aW9uCisgICAgPENvbG9yLllFTExPVzogMz4KKyAgICA+Pj4gQ29sb3IoNykgICAgICAjIG5vdCBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci5DWUFOfE1BR0VOVEF8QkxVRXxZRUxMT1d8R1JFRU58UkVEOiA3PgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CmluZGV4IDVhNzE5MzMuLmE0MjhmNTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CkBAIC0xNzAsOCArMTcwLDkgQEAKIAogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAotICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCi0gICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgorICAgUmFpc2VkIHdoZW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBoYXMgdHJvdWJsZXMgdHJ5aW5nIHRvCisgICBsb2FkIGEgbW9kdWxlLiAgQWxzbyByYWlzZWQgd2hlbiB0aGUgImZyb20gbGlzdCIgaW4gYGBmcm9tIC4uLiBpbXBvcnRgYAorICAgaGFzIGEgbmFtZSB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAogICAgVGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB1c2luZyBrZXl3b3JkLW9ubHkKICAgIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IuIFdoZW4gc2V0IHRoZXkgcmVwcmVzZW50IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUKQEAgLTE4MSw2ICsxODIsMTQgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcy4KIAorLi4gZXhjZXB0aW9uOjogTW9kdWxlTm90Rm91bmRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCB3aGljaCBpcyByYWlzZWQgYnkgOmtleXdvcmQ6YGltcG9ydGAKKyAgIHdoZW4gYSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQuICBJdCBpcyBhbHNvIHJhaXNlZCB3aGVuIGBgTm9uZWBgCisgICBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBleGNlcHRpb246OiBJbmRleEVycm9yCiAKQEAgLTIyOCw5ICsyMzcsMjEgQEAKIC4uIGV4Y2VwdGlvbjo6IE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBJbiB1c2VyIGRlZmluZWQgYmFzZQotICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUgZGVyaXZlZAotICAgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLgorICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUKKyAgIGRlcml2ZWQgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLCBvciB3aGlsZSB0aGUgY2xhc3MgaXMgYmVpbmcKKyAgIGRldmVsb3BlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZWFsIGltcGxlbWVudGF0aW9uIHN0aWxsIG5lZWRzIHRvIGJlIGFkZGVkLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW4gb3BlcmF0ZXIgb3IgbWV0aG9kIGlzIG5vdAorICAgICAgbWVhbnQgdG8gYmUgc3VwcG9ydGVkIGF0IGFsbCAtLSBpbiB0aGF0IGNhc2UgZWl0aGVyIGxlYXZlIHRoZSBvcGVyYXRvciAvCisgICAgICBtZXRob2QgdW5kZWZpbmVkIG9yLCBpZiBhIHN1YmNsYXNzLCBzZXQgaXQgdG8gOmRhdGE6YE5vbmVgLgorCisgICAuLiBub3RlOjoKKworICAgICAgYGBOb3RJbXBsZW1lbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4gIFNlZQorICAgICAgOmRhdGE6YE5vdEltcGxlbWVudGVkYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogLi4gZXhjZXB0aW9uOjogT1NFcnJvcihbYXJnXSkKICAgICAgICAgICAgICAgIE9TRXJyb3IoZXJybm8sIHN0cmVycm9yWywgZmlsZW5hbWVbLCB3aW5lcnJvclssIGZpbGVuYW1lMl1dXSkKQEAgLTQzNiw2ICs0NTcsMTUgQEAKICAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvciBmdW5jdGlvbiBpcyBhcHBsaWVkIHRvIGFuIG9iamVjdCBvZiBpbmFwcHJvcHJpYXRlCiAgICB0eXBlLiAgVGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgYSBzdHJpbmcgZ2l2aW5nIGRldGFpbHMgYWJvdXQgdGhlIHR5cGUgbWlzbWF0Y2guCiAKKyAgIFRoaXMgZXhjZXB0aW9uIG1heSBiZSByYWlzZWQgYnkgdXNlciBjb2RlIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdGVkCisgICBvcGVyYXRpb24gb24gYW4gb2JqZWN0IGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmUuIElmIGFuIG9iamVjdAorICAgaXMgbWVhbnQgdG8gc3VwcG9ydCBhIGdpdmVuIG9wZXJhdGlvbiBidXQgaGFzIG5vdCB5ZXQgcHJvdmlkZWQgYW4KKyAgIGltcGxlbWVudGF0aW9uLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyB0aGUgcHJvcGVyIGV4Y2VwdGlvbiB0byByYWlzZS4KKworICAgUGFzc2luZyBhcmd1bWVudHMgb2YgdGhlIHdyb25nIHR5cGUgKGUuZy4gcGFzc2luZyBhIDpjbGFzczpgbGlzdGAgd2hlbiBhbgorICAgOmNsYXNzOmBpbnRgIGlzIGV4cGVjdGVkKSBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVHlwZUVycm9yYCwgYnV0IHBhc3NpbmcKKyAgIGFyZ3VtZW50cyB3aXRoIHRoZSB3cm9uZyB2YWx1ZSAoZS5nLiBhIG51bWJlciBvdXRzaWRlIGV4cGVjdGVkIGJvdW5kYXJpZXMpCisgICBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IFVuYm91bmRMb2NhbEVycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CmluZGV4IGRlZWRlYTEuLmQwYzRjZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtNzAsNiArNzAsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCBhIGhhbmRsZXIgZm9yIFdpbmRvd3MgZXhjZXB0aW9uIGlzIGFsc28gaW5zdGFsbGVkLgorCiAuLiBmdW5jdGlvbjo6IGRpc2FibGUoKQogCiAgICBEaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiB1bmluc3RhbGwgdGhlIHNpZ25hbCBoYW5kbGVycyBpbnN0YWxsZWQgYnkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CmluZGV4IGFhNGM1MjkuLjU4ODFmZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdApAQCAtNzIsOSArNzIsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIENhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KLQorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHVzZSB0aGUgZ2xvYmFsIHN0YXRlIGNyZWF0ZWQgYnkgOmZ1bmM6YGZpbGVpbnB1dC5pbnB1dGA7CiBpZiB0aGVyZSBpcyBubyBhY3RpdmUgc3RhdGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgpAQCAtMTY3LDggKzE2Niw4IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy40CiAgICAgICBUaGUgYGAnclUnYGAgYW5kIGBgJ1UnYGAgbW9kZXMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIAogKipPcHRpb25hbCBpbi1wbGFjZSBmaWx0ZXJpbmc6KiogaWYgdGhlIGtleXdvcmQgYXJndW1lbnQgYGBpbnBsYWNlPVRydWVgYCBpcwpAQCAtMTk1LDEwICsxOTQsMTQgQEAKICAgIFVzYWdlIGV4YW1wbGU6ICBgYGZpID0gZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19jb21wcmVzc2VkKWBgCiAKIAotLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcpCisuLiBmdW5jdGlvbjo6IGhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPU5vbmUpCiAKICAgIFJldHVybnMgYSBob29rIHdoaWNoIG9wZW5zIGVhY2ggZmlsZSB3aXRoIDpmdW5jOmBvcGVuYCwgdXNpbmcgdGhlIGdpdmVuCi0gICAqZW5jb2RpbmcqIHRvIHJlYWQgdGhlIGZpbGUuCisgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB0byByZWFkIHRoZSBmaWxlLgogCiAgICBVc2FnZSBleGFtcGxlOiBgYGZpID0KLSAgIGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgiaXNvLTg4NTktMSIpKWBgCisgICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoInV0Zi04IiwKKyAgICJzdXJyb2dhdGVlc2NhcGUiKSlgYAorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICplcnJvcnMqIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0IGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKaW5kZXggOWZjOWM3Yy4uYzAzYTlkMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgID4+PgogICAgICAgPj4+IHJlZ2V4ID0gZm5tYXRjaC50cmFuc2xhdGUoJyoudHh0JykKICAgICAgID4+PiByZWdleAotICAgICAgJy4qXFwudHh0XFxaKD9tcyknCisgICAgICAnKD9zOi4qXFwudHh0KVxcWicKICAgICAgID4+PiByZW9iaiA9IHJlLmNvbXBpbGUocmVnZXgpCiAgICAgICA+Pj4gcmVvYmoubWF0Y2goJ2Zvb2Jhci50eHQnKQogICAgICAgPF9zcmUuU1JFX01hdGNoIG9iamVjdDsgc3Bhbj0oMCwgMTApLCBtYXRjaD0nZm9vYmFyLnR4dCc+CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAppbmRleCAxZTM1ZjM3Li5iOGMxZGNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKQEAgLTk3LDYgKzk3LDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczo6CiAKICAgICAgID4+PiBmdHBzID0gRlRQX1RMUygnZnRwLnB1cmVmdHBkLm9yZycpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCAyZjE0OTQ5Li5jMjYwMzdiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTI3MSw2ICsyNzEsOSBAQAogCiAgICBUaGUgY29tcGxleCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogZGVsYXR0cihvYmplY3QsIG5hbWUpCiAKQEAgLTUzMSwxMSArNTM0LDE0IEBACiAKICAgIFRoZSBmbG9hdCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fZm9ybWF0X18KLSAgICAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogX19mb3JtYXRfXworICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdCgpIChidWlsdC1pbiBmdW5jdGlvbikKKwogLi4gZnVuY3Rpb246OiBmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pCiAKICAgIENvbnZlcnQgYSAqdmFsdWUqIHRvIGEgImZvcm1hdHRlZCIgcmVwcmVzZW50YXRpb24sIGFzIGNvbnRyb2xsZWQgYnkKQEAgLTcwMiw2ICs3MDgsMTAgQEAKICAgICAgIDptZXRoOmBiYXNlLl9faW50X18gPG9iamVjdC5fX2ludF9fPmAgaW5zdGVhZCBvZiA6bWV0aDpgYmFzZS5fX2luZGV4X18KICAgICAgIDxvYmplY3QuX19pbmRleF9fPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBHcm91cGluZyBkaWdpdHMgd2l0aCB1bmRlcnNjb3JlcyBhcyBpbiBjb2RlIGxpdGVyYWxzIGlzIGFsbG93ZWQuCisKKwogLi4gZnVuY3Rpb246OiBpc2luc3RhbmNlKG9iamVjdCwgY2xhc3NpbmZvKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKm9iamVjdCogYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlICpjbGFzc2luZm8qCkBAIC04NzgsMTEgKzg4OCwxMSBAQAogICAgT3BlbiAqZmlsZSogYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgOnRlcm06YGZpbGUgb2JqZWN0YC4gIElmIHRoZSBmaWxlCiAgICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgICpmaWxlKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCi0gICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yCi0gICBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZSB3cmFwcGVkLiAgKElmIGEgZmlsZSBkZXNjcmlwdG9yCi0gICBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MKLSAgICpjbG9zZWZkKiBpcyBzZXQgdG8gYGBGYWxzZWBgLikKKyAgICpmaWxlKiBpcyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgorICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvciBhbgorICAgaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcworICAgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzICpjbG9zZWZkKgorICAgaXMgc2V0IHRvIGBgRmFsc2VgYC4pCiAKICAgICptb2RlKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKICAgIG9wZW5lZC4gIEl0IGRlZmF1bHRzIHRvIGBgJ3InYGAgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuCkBAIC0xMDU1LDI3ICsxMDY1LDM4IEBACiAgICAod2hlcmUgOmZ1bmM6YG9wZW5gIGlzIGRlY2xhcmVkKSwgOm1vZDpgb3NgLCA6bW9kOmBvcy5wYXRoYCwgOm1vZDpgdGVtcGZpbGVgLAogICAgYW5kIDptb2Q6YHNodXRpbGAuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KLSAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgotICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLSAgICAgIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCi0gICAgICBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuMwogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAotICAgICAgVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KKyAgICAgICAgICogVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICAgICAqIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorICAgICAgICAgKiA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorICAgICAgICAgKiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgICAgKiBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy40CisKKyAgICAgICAgICogVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KIAogICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDQuMAogCiAgICAgICBUaGUgYGAnVSdgYCBtb2RlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KLSAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KLSAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy41CiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisgICAgICAgICAqIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisgICAgICAgICAqIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy42CisKKyAgICAgICAgICogU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgOmNsYXNzOmBvcy5QYXRoTGlrZWAuCisgICAgICAgICAqIE9uIFdpbmRvd3MsIG9wZW5pbmcgYSBjb25zb2xlIGJ1ZmZlciBtYXkgcmV0dXJuIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgOmNsYXNzOmBpby5SYXdJT0Jhc2VgIG90aGVyIHRoYW4gOmNsYXNzOmBpby5GaWxlSU9gLgogCiAuLiBmdW5jdGlvbjo6IG9yZChjKQogCkBAIC0xNDYwLDYgKzE0ODEsOSBAQAogCiAgICBTZWUgYWxzbyA6cmVmOmBibHRpbi10eXBlLW9iamVjdHNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHR5cGVgIHdoaWNoIGRvbid0IG92ZXJyaWRlIGBgdHlwZS5fX25ld19fYGAgbWF5IG5vCisgICAgICBsb25nZXIgdXNlIHRoZSBvbmUtYXJndW1lbnQgZm9ybSB0byBnZXQgdGhlIHR5cGUgb2YgYW4gb2JqZWN0LgogCiAuLiBmdW5jdGlvbjo6IHZhcnMoW29iamVjdF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dsb2IucnN0IGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKaW5kZXggMzI4ZWVmMy4uYThhNWE1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKQEAgLTE0LDcgKzE0LDcgQEAKIGFjY29yZGluZyB0byB0aGUgcnVsZXMgdXNlZCBieSB0aGUgVW5peCBzaGVsbCwgYWx0aG91Z2ggcmVzdWx0cyBhcmUgcmV0dXJuZWQgaW4KIGFyYml0cmFyeSBvcmRlci4gIE5vIHRpbGRlIGV4cGFuc2lvbiBpcyBkb25lLCBidXQgYGAqYGAsIGBgP2BgLCBhbmQgY2hhcmFjdGVyCiByYW5nZXMgZXhwcmVzc2VkIHdpdGggYGBbXWBgIHdpbGwgYmUgY29ycmVjdGx5IG1hdGNoZWQuICBUaGlzIGlzIGRvbmUgYnkgdXNpbmcKLXRoZSA6ZnVuYzpgb3MubGlzdGRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKK3RoZSA6ZnVuYzpgb3Muc2NhbmRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKIG5vdCBieSBhY3R1YWxseSBpbnZva2luZyBhIHN1YnNoZWxsLiAgTm90ZSB0aGF0IHVubGlrZSA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCwKIDptb2Q6YGdsb2JgIHRyZWF0cyBmaWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBkb3QgKGBgLmBgKSBhcyBzcGVjaWFsIGNhc2VzLgogKEZvciB0aWxkZSBhbmQgc2hlbGwgdmFyaWFibGUgZXhwYW5zaW9uLCB1c2UgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAgYW5kCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9ncnAucnN0IGIvRG9jL2xpYnJhcnkvZ3JwLnJzdAppbmRleCBhMzBlNjIyLi43NGRlM2Y5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ncnAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dycC5yc3QKQEAgLTQzLDYgKzQzLDkgQEAKICAgIFJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELiA6ZXhjOmBLZXlFcnJvcmAKICAgIGlzIHJhaXNlZCBpZiB0aGUgZW50cnkgYXNrZWQgZm9yIGNhbm5vdCBiZSBmb3VuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgU2luY2UgUHl0aG9uIDMuNiB0aGUgc3VwcG9ydCBvZiBub24taW50ZWdlciBhcmd1bWVudHMgbGlrZSBmbG9hdHMgb3IKKyAgICAgIHN0cmluZ3MgaW4gOmZ1bmM6YGdldGdyZ2lkYCBpcyBkZXByZWNhdGVkLgogCiAuLiBmdW5jdGlvbjo6IGdldGdybmFtKG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggNzkyZDU3YS4uOWM2YjcyMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTU2LDYgKzU2LDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCwgYGAneGInYGAgYW5kIGBgJ3h0J2BgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gY2xhc3M6OiBHemlwRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKQogCkBAIC0xNTEsNiArMTUzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2YWE0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdApAQCAtMCwwICsxLDQ0NCBAQAorLi4gX2hhc2hsaWItYmxha2UyOgorCis6bW9kOmBoYXNobGliYCAtLS0gQkxBS0UyIGhhc2ggZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGhhc2hsaWIKKyAgIDpzeW5vcHNpczogQkxBS0UyIGhhc2ggZnVuY3Rpb24gZm9yIFB5dGhvbgorLi4gc2VjdGlvbmF1dGhvcjo6IERtaXRyeSBDaGVzdG55a2gKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBibGFrZTJiLCBibGFrZTJzCisKK0JMQUtFMl8gaXMgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24gZGVmaW5lZCBpbiBSRkMtNzY5M18gdGhhdCBjb21lcyBpbiB0d28KK2ZsYXZvcnM6CisKKyogKipCTEFLRTJiKiosIG9wdGltaXplZCBmb3IgNjQtYml0IHBsYXRmb3JtcyBhbmQgcHJvZHVjZXMgZGlnZXN0cyBvZiBhbnkgc2l6ZQorICBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzLAorCisqICoqQkxBS0UycyoqLCBvcHRpbWl6ZWQgZm9yIDgtIHRvIDMyLWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55CisgIHNpemUgYmV0d2VlbiAxIGFuZCAzMiBieXRlcy4KKworQkxBS0UyIHN1cHBvcnRzICoqa2V5ZWQgbW9kZSoqIChhIGZhc3RlciBhbmQgc2ltcGxlciByZXBsYWNlbWVudCBmb3IgSE1BQ18pLAorKipzYWx0ZWQgaGFzaGluZyoqLCAqKnBlcnNvbmFsaXphdGlvbioqLCBhbmQgKip0cmVlIGhhc2hpbmcqKi4KKworSGFzaCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZm9sbG93IHRoZSBBUEkgb2Ygc3RhbmRhcmQgbGlicmFyeSdzCis6bW9kOmBoYXNobGliYCBvYmplY3RzLgorCisKK01vZHVsZQorPT09PT09CisKK0NyZWF0aW5nIGhhc2ggb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldyBoYXNoIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgY2FsbGluZyBjb25zdHJ1Y3RvciBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBibGFrZTJiKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT02NCwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBibGFrZTJzKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT0zMiwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworCitUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGhhc2ggb2JqZWN0cyBmb3IgY2FsY3VsYXRpbmcKK0JMQUtFMmIgb3IgQkxBS0Uycy4gVGhleSBvcHRpb25hbGx5IHRha2UgdGhlc2UgZ2VuZXJhbCBwYXJhbWV0ZXJzOgorCisqICpkYXRhKjogaW5pdGlhbCBjaHVuayBvZiBkYXRhIHRvIGhhc2gsIHdoaWNoIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBidWZmZXIKKyAgb2YgYnl0ZXMuCisKKyogKmRpZ2VzdF9zaXplKjogc2l6ZSBvZiBvdXRwdXQgZGlnZXN0IGluIGJ5dGVzLgorCisqICprZXkqOiBrZXkgZm9yIGtleWVkIGhhc2hpbmcgKHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byAzMiBieXRlcyBmb3IKKyAgQkxBS0UycykuCisKKyogKnNhbHQqOiBzYWx0IGZvciByYW5kb21pemVkIGhhc2hpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4CisgIGJ5dGVzIGZvciBCTEFLRTJzKS4KKworKiAqcGVyc29uKjogcGVyc29uYWxpemF0aW9uIHN0cmluZyAodXAgdG8gMTYgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDggYnl0ZXMKKyAgZm9yIEJMQUtFMnMpLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGxpbWl0cyBmb3IgZ2VuZXJhbCBwYXJhbWV0ZXJzIChpbiBieXRlcyk6CisKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitIYXNoICAgIGRpZ2VzdF9zaXplIGxlbihrZXkpIGxlbihzYWx0KSBsZW4ocGVyc29uKQorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KK0JMQUtFMmIgICAgIDY0ICAgICAgICAgNjQgICAgICAgMTYgICAgICAgIDE2CitCTEFLRTJzICAgICAzMiAgICAgICAgIDMyICAgICAgIDggICAgICAgICA4Cis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorCisuLiBub3RlOjoKKworICAgIEJMQUtFMiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgY29uc3RhbnQgbGVuZ3RocyBmb3Igc2FsdCBhbmQgcGVyc29uYWxpemF0aW9uCisgICAgcGFyYW1ldGVycywgaG93ZXZlciwgZm9yIGNvbnZlbmllbmNlLCB0aGlzIGltcGxlbWVudGF0aW9uIGFjY2VwdHMgYnl0ZQorICAgIHN0cmluZ3Mgb2YgYW55IHNpemUgdXAgdG8gdGhlIHNwZWNpZmllZCBsZW5ndGguIElmIHRoZSBsZW5ndGggb2YgdGhlCisgICAgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQsIGl0IGlzIHBhZGRlZCB3aXRoIHplcm9zLCB0aHVzLCBmb3IKKyAgICBleGFtcGxlLCBgYGInc2FsdCdgYCBhbmQgYGBiJ3NhbHRceDAwJ2BgIGlzIHRoZSBzYW1lIHZhbHVlLiAoVGhpcyBpcyBub3QKKyAgICB0aGUgY2FzZSBmb3IgKmtleSouKQorCitUaGVzZSBzaXplcyBhcmUgYXZhaWxhYmxlIGFzIG1vZHVsZSBgY29uc3RhbnRzYF8gZGVzY3JpYmVkIGJlbG93LgorCitDb25zdHJ1Y3RvciBmdW5jdGlvbnMgYWxzbyBhY2NlcHQgdGhlIGZvbGxvd2luZyB0cmVlIGhhc2hpbmcgcGFyYW1ldGVyczoKKworKiAqZmFub3V0KjogZmFub3V0ICgwIHRvIDI1NSwgMCBpZiB1bmxpbWl0ZWQsIDEgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqZGVwdGgqOiBtYXhpbWFsIGRlcHRoIG9mIHRyZWUgKDEgdG8gMjU1LCAyNTUgaWYgdW5saW1pdGVkLCAxIGluCisgIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmxlYWZfc2l6ZSo6IG1heGltYWwgYnl0ZSBsZW5ndGggb2YgbGVhZiAoMCB0byAyKiozMi0xLCAwIGlmIHVubGltaXRlZCBvciBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpub2RlX29mZnNldCo6IG5vZGUgb2Zmc2V0ICgwIHRvIDIqKjY0LTEgZm9yIEJMQUtFMmIsIDAgdG8gMioqNDgtMSBmb3IKKyAgQkxBS0UycywgMCBmb3IgdGhlIGZpcnN0LCBsZWZ0bW9zdCwgbGVhZiwgb3IgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9kZXB0aCo6IG5vZGUgZGVwdGggKDAgdG8gMjU1LCAwIGZvciBsZWF2ZXMsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmlubmVyX3NpemUqOiBpbm5lciBkaWdlc3Qgc2l6ZSAoMCB0byA2NCBmb3IgQkxBS0UyYiwgMCB0byAzMiBmb3IKKyAgQkxBS0UycywgMCBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsYXN0X25vZGUqOiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcHJvY2Vzc2VkIG5vZGUgaXMgdGhlIGxhc3QKKyAgb25lIChgRmFsc2VgIGZvciBzZXF1ZW50aWFsIG1vZGUpLgorCisuLiBmaWd1cmU6OiBoYXNobGliLWJsYWtlMi10cmVlLnBuZworICAgOmFsdDogRXhwbGFuYXRpb24gb2YgdHJlZSBtb2RlIHBhcmFtZXRlcnMuCisKK1NlZSBzZWN0aW9uIDIuMTAgaW4gYEJMQUtFMiBzcGVjaWZpY2F0aW9uCis8aHR0cHM6Ly9ibGFrZTIubmV0L2JsYWtlMl8yMDEzMDEyOS5wZGY+YF8gZm9yIGNvbXByZWhlbnNpdmUgcmV2aWV3IG9mIHRyZWUKK2hhc2hpbmcuCisKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworLi4gZGF0YTo6IGJsYWtlMmIuU0FMVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5TQUxUX1NJWkUKKworU2FsdCBsZW5ndGggKG1heGltdW0gbGVuZ3RoIGFjY2VwdGVkIGJ5IGNvbnN0cnVjdG9ycykuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuUEVSU09OX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLlBFUlNPTl9TSVpFCisKK1BlcnNvbmFsaXphdGlvbiBzdHJpbmcgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9LRVlfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0tFWV9TSVpFCisKK01heGltdW0ga2V5IHNpemUuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5NQVhfRElHRVNUX1NJWkUKKworTWF4aW11bSBkaWdlc3Qgc2l6ZSB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIGNhbiBvdXRwdXQuCisKKworRXhhbXBsZXMKKz09PT09PT09CisKK1NpbXBsZSBoYXNoaW5nCistLS0tLS0tLS0tLS0tLQorCitUbyBjYWxjdWxhdGUgaGFzaCBvZiBzb21lIGRhdGEsIHlvdSBzaG91bGQgZmlyc3QgY29uc3RydWN0IGEgaGFzaCBvYmplY3QgYnkKK2NhbGxpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uICg6ZnVuYzpgYmxha2UyYmAgb3IKKzpmdW5jOmBibGFrZTJzYCksIHRoZW4gdXBkYXRlIGl0IHdpdGggdGhlIGRhdGEgYnkgY2FsbGluZyA6bWV0aDpgdXBkYXRlYCBvbiB0aGUKK29iamVjdCwgYW5kLCBmaW5hbGx5LCBnZXQgdGhlIGRpZ2VzdCBvdXQgb2YgdGhlIG9iamVjdCBieSBjYWxsaW5nCis6bWV0aDpgZGlnZXN0YCAob3IgOm1ldGg6YGhleGRpZ2VzdGAgZm9yIGhleC1lbmNvZGVkIHN0cmluZykuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gaC51cGRhdGUoYidIZWxsbyB3b3JsZCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKKworQXMgYSBzaG9ydGN1dCwgeW91IGNhbiBwYXNzIHRoZSBmaXJzdCBjaHVuayBvZiBkYXRhIHRvIHVwZGF0ZSBkaXJlY3RseSB0byB0aGUKK2NvbnN0cnVjdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCAob3IgYXMgKmRhdGEqIGtleXdvcmQgYXJndW1lbnQpOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBibGFrZTJiKGInSGVsbG8gd29ybGQnKS5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworWW91IGNhbiBjYWxsIDptZXRoOmBoYXNoLnVwZGF0ZWAgYXMgbWFueSB0aW1lcyBhcyB5b3UgbmVlZCB0byBpdGVyYXRpdmVseQordXBkYXRlIHRoZSBoYXNoOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBpdGVtcyA9IFtiJ0hlbGxvJywgYicgJywgYid3b3JsZCddCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgLi4uICAgICBoLnVwZGF0ZShpdGVtKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK1VzaW5nIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQkxBS0UyIGhhcyBjb25maWd1cmFibGUgc2l6ZSBvZiBkaWdlc3RzIHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiIGFuZCB1cCB0byAzMgorYnl0ZXMgZm9yIEJMQUtFMnMuIEZvciBleGFtcGxlLCB0byByZXBsYWNlIFNIQS0xIHdpdGggQkxBS0UyYiB3aXRob3V0IGNoYW5naW5nCit0aGUgc2l6ZSBvZiBvdXRwdXQsIHdlIGNhbiB0ZWxsIEJMQUtFMmIgdG8gcHJvZHVjZSAyMC1ieXRlIGRpZ2VzdHM6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTIwKQorICAgID4+PiBoLnVwZGF0ZShiJ1JlcGxhY2luZyBTSEExIHdpdGggdGhlIG1vcmUgc2VjdXJlIGZ1bmN0aW9uJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdkMjRmMjZjZjhkZTY2NDcyZDU4ZDRlMWIxNzc0YjRjOTE1OGIxZjRjJworICAgID4+PiBoLmRpZ2VzdF9zaXplCisgICAgMjAKKyAgICA+Pj4gbGVuKGguZGlnZXN0KCkpCisgICAgMjAKKworSGFzaCBvYmplY3RzIHdpdGggZGlmZmVyZW50IGRpZ2VzdCBzaXplcyBoYXZlIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dHMKKyhzaG9ydGVyIGhhc2hlcyBhcmUgKm5vdCogcHJlZml4ZXMgb2YgbG9uZ2VyIGhhc2hlcyk7IEJMQUtFMmIgYW5kIEJMQUtFMnMKK3Byb2R1Y2UgZGlmZmVyZW50IG91dHB1dHMgZXZlbiBpZiB0aGUgb3V0cHV0IGxlbmd0aCBpcyB0aGUgc2FtZToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIsIGJsYWtlMnMKKyAgICA+Pj4gYmxha2UyYihkaWdlc3Rfc2l6ZT0xMCkuaGV4ZGlnZXN0KCkKKyAgICAnNmZhMWQ4ZmNmZDcxOTA0NmQ3NjInCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTEpLmhleGRpZ2VzdCgpCisgICAgJ2ViNmVjMTVkYWY5NTQ2MjU0ZjA4MDknCisgICAgPj4+IGJsYWtlMnMoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzFiZjIxYTk4Yzc4YTFjMzc2YWU5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICc1NjcwMDRiZjk2ZTRhMjU3NzNlYmY0JworCisKK0tleWVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0KKworS2V5ZWQgaGFzaGluZyBjYW4gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gYXMgYSBmYXN0ZXIgYW5kIHNpbXBsZXIKK3JlcGxhY2VtZW50IGZvciBgSGFzaC1iYXNlZCBtZXNzYWdlIGF1dGhlbnRpY2F0aW9uIGNvZGUKKzxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlPmBfIChITUFDKS4KK0JMQUtFMiBjYW4gYmUgc2VjdXJlbHkgdXNlZCBpbiBwcmVmaXgtTUFDIG1vZGUgdGhhbmtzIHRvIHRoZQoraW5kaWZmZXJlbnRpYWJpbGl0eSBwcm9wZXJ0eSBpbmhlcml0ZWQgZnJvbSBCTEFLRS4KKworVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byBnZXQgYSAoaGV4LWVuY29kZWQpIDEyOC1iaXQgYXV0aGVudGljYXRpb24gY29kZSBmb3IKK21lc3NhZ2UgYGBiJ21lc3NhZ2UgZGF0YSdgYCB3aXRoIGtleSBgYGIncHNldWRvcmFuZG9tIGtleSdgYDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGtleT1iJ3BzZXVkb3JhbmRvbSBrZXknLCBkaWdlc3Rfc2l6ZT0xNikKKyAgICA+Pj4gaC51cGRhdGUoYidtZXNzYWdlIGRhdGEnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzNkMzYzZmY3NDAxZTAyMDI2ZjRhNDY4N2Q0ODYzY2VkJworCisKK0FzIGEgcHJhY3RpY2FsIGV4YW1wbGUsIGEgd2ViIGFwcGxpY2F0aW9uIGNhbiBzeW1tZXRyaWNhbGx5IHNpZ24gY29va2llcyBzZW50Cit0byB1c2VycyBhbmQgbGF0ZXIgdmVyaWZ5IHRoZW0gdG8gbWFrZSBzdXJlIHRoZXkgd2VyZW4ndCB0YW1wZXJlZCB3aXRoOjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdAorICAgID4+PgorICAgID4+PiBTRUNSRVRfS0VZID0gYidwc2V1ZG9yYW5kb21seSBnZW5lcmF0ZWQgc2VydmVyIHNlY3JldCBrZXknCisgICAgPj4+IEFVVEhfU0laRSA9IDE2CisgICAgPj4+CisgICAgPj4+IGRlZiBzaWduKGNvb2tpZSk6CisgICAgLi4uICAgICBoID0gYmxha2UyYihkYXRhPWNvb2tpZSwgZGlnZXN0X3NpemU9QVVUSF9TSVpFLCBrZXk9U0VDUkVUX0tFWSkKKyAgICAuLi4gICAgIHJldHVybiBoLmhleGRpZ2VzdCgpCisgICAgPj4+CisgICAgPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworICAgID4+PiBzaWcgPSBzaWduKGNvb2tpZSkKKyAgICA+Pj4gcHJpbnQoInswfSx7MX0iLmZvcm1hdChjb29raWUuZGVjb2RlKCd1dGYtOCcpLCBzaWcpKQorICAgIHVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMAorICAgID4+PiBjb21wYXJlX2RpZ2VzdChjb29raWUsIHNpZykKKyAgICBUcnVlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpCisgICAgRmFsc2UKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3R5KGNvb2tpZSwgJzAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjAwJykKKyAgICBGYWxzZQorCitFdmVuIHRob3VnaCB0aGVyZSdzIGEgbmF0aXZlIGtleWVkIGhhc2hpbmcgbW9kZSwgQkxBS0UyIGNhbiwgb2YgY291cnNlLCBiZSB1c2VkCitpbiBITUFDIGNvbnN0cnVjdGlvbiB3aXRoIDptb2Q6YGhtYWNgIG1vZHVsZTo6CisKKyAgICA+Pj4gaW1wb3J0IGhtYWMsIGhhc2hsaWIKKyAgICA+Pj4gbSA9IGhtYWMubmV3KGInc2VjcmV0IGtleScsIGRpZ2VzdG1vZD1oYXNobGliLmJsYWtlMnMpCisgICAgPj4+IG0udXBkYXRlKGInbWVzc2FnZScpCisgICAgPj4+IG0uaGV4ZGlnZXN0KCkKKyAgICAnZTNjODEwMjg2OGQyOGI1ZmY4NWZjMzVkZGEwNzMyOTk3MGQxYTAxZTI3M2MzNzQ4MTMyNmZlMGM4NjFjODE0MicKKworCitSYW5kb21pemVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBzZXR0aW5nICpzYWx0KiBwYXJhbWV0ZXIgdXNlcnMgY2FuIGludHJvZHVjZSByYW5kb21pemF0aW9uIHRvIHRoZSBoYXNoCitmdW5jdGlvbi4gUmFuZG9taXplZCBoYXNoaW5nIGlzIHVzZWZ1bCBmb3IgcHJvdGVjdGluZyBhZ2FpbnN0IGNvbGxpc2lvbiBhdHRhY2tzCitvbiB0aGUgaGFzaCBmdW5jdGlvbiB1c2VkIGluIGRpZ2l0YWwgc2lnbmF0dXJlcy4KKworICAgIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyBkZXNpZ25lZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBvbmUgcGFydHksIHRoZSBtZXNzYWdlCisgICAgcHJlcGFyZXIsIGdlbmVyYXRlcyBhbGwgb3IgcGFydCBvZiBhIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGEgc2Vjb25kCisgICAgcGFydHksIHRoZSBtZXNzYWdlIHNpZ25lci4gSWYgdGhlIG1lc3NhZ2UgcHJlcGFyZXIgaXMgYWJsZSB0byBmaW5kCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGNvbGxpc2lvbnMgKGkuZS4sIHR3byBtZXNzYWdlcyBwcm9kdWNpbmcgdGhlCisgICAgc2FtZSBoYXNoIHZhbHVlKSwgdGhlbiBzaGUgbWlnaHQgcHJlcGFyZSBtZWFuaW5nZnVsIHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisgICAgdGhhdCB3b3VsZCBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggdmFsdWUgYW5kIGRpZ2l0YWwgc2lnbmF0dXJlLCBidXQgd2l0aAorICAgIGRpZmZlcmVudCByZXN1bHRzIChlLmcuLCB0cmFuc2ZlcnJpbmcgJDEsMDAwLDAwMCB0byBhbiBhY2NvdW50LCByYXRoZXIgdGhhbgorICAgICQxMCkuIENyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlc2lnbmVkIHdpdGggY29sbGlzaW9uCisgICAgcmVzaXN0YW5jZSBhcyBhIG1ham9yIGdvYWwsIGJ1dCB0aGUgY3VycmVudCBjb25jZW50cmF0aW9uIG9uIGF0dGFja2luZworICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgbWF5IHJlc3VsdCBpbiBhIGdpdmVuIGNyeXB0b2dyYXBoaWMgaGFzaAorICAgIGZ1bmN0aW9uIHByb3ZpZGluZyBsZXNzIGNvbGxpc2lvbiByZXNpc3RhbmNlIHRoYW4gZXhwZWN0ZWQuIFJhbmRvbWl6ZWQKKyAgICBoYXNoaW5nIG9mZmVycyB0aGUgc2lnbmVyIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBieSByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZAorICAgIHRoYXQgYSBwcmVwYXJlciBjYW4gZ2VuZXJhdGUgdHdvIG9yIG1vcmUgbWVzc2FnZXMgdGhhdCB1bHRpbWF0ZWx5IHlpZWxkIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSBkdXJpbmcgdGhlIGRpZ2l0YWwgc2lnbmF0dXJlIGdlbmVyYXRpb24gcHJvY2VzcyAtLS0gZXZlbiBpZgorICAgIGl0IGlzIHByYWN0aWNhbCB0byBmaW5kIGNvbGxpc2lvbnMgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgdXNlCisgICAgb2YgcmFuZG9taXplZCBoYXNoaW5nIG1heSByZWR1Y2UgdGhlIGFtb3VudCBvZiBzZWN1cml0eSBwcm92aWRlZCBieSBhCisgICAgZGlnaXRhbCBzaWduYXR1cmUgd2hlbiBhbGwgcG9ydGlvbnMgb2YgdGhlIG1lc3NhZ2UgYXJlIHByZXBhcmVkCisgICAgYnkgdGhlIHNpZ25lci4KKworICAgIChgTklTVCBTUC04MDAtMTA2ICJSYW5kb21pemVkIEhhc2hpbmcgZm9yIERpZ2l0YWwgU2lnbmF0dXJlcyIKKyAgICA8aHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL25pc3RwdWJzLzgwMC0xMDYvTklTVC1TUC04MDAtMTA2LnBkZj5gXykKKworSW4gQkxBS0UyIHRoZSBzYWx0IGlzIHByb2Nlc3NlZCBhcyBhIG9uZS10aW1lIGlucHV0IHRvIHRoZSBoYXNoIGZ1bmN0aW9uIGR1cmluZworaW5pdGlhbGl6YXRpb24sIHJhdGhlciB0aGFuIGFzIGFuIGlucHV0IHRvIGVhY2ggY29tcHJlc3Npb24gZnVuY3Rpb24uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKlNhbHRlZCBoYXNoaW5nKiAob3IganVzdCBoYXNoaW5nKSB3aXRoIEJMQUtFMiBvciBhbnkgb3RoZXIgZ2VuZXJhbC1wdXJwb3NlCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uLCBzdWNoIGFzIFNIQS0yNTYsIGlzIG5vdCBzdWl0YWJsZSBmb3IgaGFzaGluZworICAgIHBhc3N3b3Jkcy4gIFNlZSBgQkxBS0UyIEZBUSA8aHR0cHM6Ly9ibGFrZTIubmV0LyNxYT5gXyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLgorLi4KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IG1zZyA9IGInc29tZSBtZXNzYWdlJworICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgZmlyc3QgaGFzaCB3aXRoIGEgcmFuZG9tIHNhbHQuCisgICAgPj4+IHNhbHQxID0gb3MudXJhbmRvbShibGFrZTJiLlNBTFRfU0laRSkKKyAgICA+Pj4gaDEgPSBibGFrZTJiKHNhbHQ9c2FsdDEpCisgICAgPj4+IGgxLnVwZGF0ZShtc2cpCisgICAgPj4+ICMgQ2FsY3VsYXRlIHRoZSBzZWNvbmQgaGFzaCB3aXRoIGEgZGlmZmVyZW50IHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MiA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgyID0gYmxha2UyYihzYWx0PXNhbHQyKQorICAgID4+PiBoMi51cGRhdGUobXNnKQorICAgID4+PiAjIFRoZSBkaWdlc3RzIGFyZSBkaWZmZXJlbnQuCisgICAgPj4+IGgxLmRpZ2VzdCgpICE9IGgyLmRpZ2VzdCgpCisgICAgVHJ1ZQorCisKK1BlcnNvbmFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZm9yY2UgaGFzaCBmdW5jdGlvbiB0byBwcm9kdWNlIGRpZmZlcmVudCBkaWdlc3RzIGZvcgordGhlIHNhbWUgaW5wdXQgZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4gUXVvdGluZyB0aGUgYXV0aG9ycyBvZiB0aGUgU2tlaW4gaGFzaAorZnVuY3Rpb246CisKKyAgICBXZSByZWNvbW1lbmQgdGhhdCBhbGwgYXBwbGljYXRpb24gZGVzaWduZXJzIHNlcmlvdXNseSBjb25zaWRlciBkb2luZyB0aGlzOworICAgIHdlIGhhdmUgc2VlbiBtYW55IHByb3RvY29scyB3aGVyZSBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCBpbiBvbmUgcGFydCBvZgorICAgIHRoZSBwcm90b2NvbCBjYW4gYmUgdXNlZCBpbiBhbiBlbnRpcmVseSBkaWZmZXJlbnQgcGFydCBiZWNhdXNlIHR3byBoYXNoCisgICAgY29tcHV0YXRpb25zIHdlcmUgZG9uZSBvbiBzaW1pbGFyIG9yIHJlbGF0ZWQgZGF0YSwgYW5kIHRoZSBhdHRhY2tlciBjYW4KKyAgICBmb3JjZSB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSB0aGUgaGFzaCBpbnB1dHMgdGhlIHNhbWUuIFBlcnNvbmFsaXppbmcgZWFjaAorICAgIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiB0aGUgcHJvdG9jb2wgc3VtbWFyaWx5IHN0b3BzIHRoaXMgdHlwZSBvZiBhdHRhY2suCisKKyAgICAoYFRoZSBTa2VpbiBIYXNoIEZ1bmN0aW9uIEZhbWlseQorICAgIDxodHRwOi8vd3d3LnNrZWluLWhhc2guaW5mby9zaXRlcy9kZWZhdWx0L2ZpbGVzL3NrZWluMS4zLnBkZj5gXywKKyAgICBwLiAyMSkKKworQkxBS0UyIGNhbiBiZSBwZXJzb25hbGl6ZWQgYnkgcGFzc2luZyBieXRlcyB0byB0aGUgKnBlcnNvbiogYXJndW1lbnQ6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBGSUxFU19IQVNIX1BFUlNPTiA9IGInTXlBcHAgRmlsZXMgSGFzaCcKKyAgICA+Pj4gQkxPQ0tfSEFTSF9QRVJTT04gPSBiJ015QXBwIEJsb2NrIEhhc2gnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249RklMRVNfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnMjBkOWNkMDI0ZDRmYjA4NmFhZTgxOWExNDMyZGQyNDY2ZGUxMjk0NzgzMWI3NWM1YTMwY2YyNjc2MDk1ZDNiNCcKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIHBlcnNvbj1CTE9DS19IQVNIX1BFUlNPTikKKyAgICA+Pj4gaC51cGRhdGUoYid0aGUgc2FtZSBjb250ZW50JykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdjZjY4ZmI1NzYxYjljNDRlNzg3OGJmYjJjNGM5YWVhNTIyNjRhODBiNzUwMDVlNjU2MTk3NzhkZTU5ZjM4M2EzJworCitQZXJzb25hbGl6YXRpb24gdG9nZXRoZXIgd2l0aCB0aGUga2V5ZWQgbW9kZSBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlcml2ZSBkaWZmZXJlbnQKK2tleXMgZnJvbSBhIHNpbmdsZSBvbmUuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJzCisgICAgPj4+IGZyb20gYmFzZTY0IGltcG9ydCBiNjRkZWNvZGUsIGI2NGVuY29kZQorICAgID4+PiBvcmlnX2tleSA9IGI2NGRlY29kZShiJ1JtNUVQSmFpNzJxY0szUkdCcFczdlBOZlp5NU9ab3RoWStrSFk2aDIxS009JykKKyAgICA+Pj4gZW5jX2tleSA9IGJsYWtlMnMoa2V5PW9yaWdfa2V5LCBwZXJzb249YidrRW5jcnlwdCcpLmRpZ2VzdCgpCisgICAgPj4+IG1hY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna01BQycpLmRpZ2VzdCgpCisgICAgPj4+IHByaW50KGI2NGVuY29kZShlbmNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgcmJQYjE1Uy9aOXQrYWdmZm5vNXd1aEI3N1ZiUmk2RjlJdjJxSXhVN1dIdz0KKyAgICA+Pj4gcHJpbnQoYjY0ZW5jb2RlKG1hY19rZXkpLmRlY29kZSgndXRmLTgnKSkKKyAgICBHOUd0SEZFMVlsdVhZMXpXUGxZazFlL25XZnUwV1NFYjBLUmNqaERlUC9vPQorCitUcmVlIG1vZGUKKy0tLS0tLS0tLQorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBoYXNoaW5nIGEgbWluaW1hbCB0cmVlIHdpdGggdHdvIGxlYWYgbm9kZXM6OgorCisgICAgICAgMTAKKyAgICAgIC8gIFwKKyAgICAgMDAgIDAxCisKK1RoaXMgZXhhbXBsZSB1c2VzIDY0LWJ5dGUgaW50ZXJuYWwgZGlnZXN0cywgYW5kIHJldHVybnMgdGhlIDMyLWJ5dGUgZmluYWwKK2RpZ2VzdDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+CisgICAgPj4+IEZBTk9VVCA9IDIKKyAgICA+Pj4gREVQVEggPSAyCisgICAgPj4+IExFQUZfU0laRSA9IDQwOTYKKyAgICA+Pj4gSU5ORVJfU0laRSA9IDY0CisgICAgPj4+CisgICAgPj4+IGJ1ZiA9IGJ5dGVhcnJheSg2MDAwKQorICAgID4+PgorICAgID4+PiAjIExlZnQgbGVhZgorICAgIC4uLiBoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKyAgICA+Pj4gIyBSaWdodCBsZWFmCisgICAgLi4uIGgwMSA9IGJsYWtlMmIoYnVmW0xFQUZfU0laRTpdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MSwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9VHJ1ZSkKKyAgICA+Pj4gIyBSb290IG5vZGUKKyAgICAuLi4gaDEwID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTAsIG5vZGVfZGVwdGg9MSwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+IGgxMC51cGRhdGUoaDAwLmRpZ2VzdCgpKQorICAgID4+PiBoMTAudXBkYXRlKGgwMS5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLmhleGRpZ2VzdCgpCisgICAgJzNhZDJhOWIzN2M2MDcwZTM3NGM3YThjNTA4ZmUyMGNhODZiNmVkNTRlMjg2ZTkzYTAzMThlOTVlODgxZGI1YWEnCisKK0NyZWRpdHMKKz09PT09PT0KKworQkxBS0UyXyB3YXMgZGVzaWduZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqU2FtdWVsIE5ldmVzKiwgKlpvb2tvCitXaWxjb3gtTydIZWFybiosIGFuZCAqQ2hyaXN0aWFuIFdpbm5lcmxlaW4qIGJhc2VkIG9uIFNIQS0zXyBmaW5hbGlzdCBCTEFLRV8KK2NyZWF0ZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqTHVjYSBIZW56ZW4qLCAqV2lsbGkgTWVpZXIqLCBhbmQKKypSYXBoYWVsIEMuLVcuIFBoYW4qLgorCitJdCB1c2VzIGNvcmUgYWxnb3JpdGhtIGZyb20gQ2hhQ2hhXyBjaXBoZXIgZGVzaWduZWQgYnkgKkRhbmllbCBKLiAgQmVybnN0ZWluKi4KKworVGhlIHN0ZGxpYiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBweWJsYWtlMl8gbW9kdWxlLiBJdCB3YXMgd3JpdHRlbiBieQorKkRtaXRyeSBDaGVzdG55a2gqIGJhc2VkIG9uIEMgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBieSAqU2FtdWVsIE5ldmVzKi4gVGhlCitkb2N1bWVudGF0aW9uIHdhcyBjb3BpZWQgZnJvbSBweWJsYWtlMl8gYW5kIHdyaXR0ZW4gYnkgKkRtaXRyeSBDaGVzdG55a2gqLgorCitUaGUgQyBjb2RlIHdhcyBwYXJ0bHkgcmV3cml0dGVuIGZvciBQeXRob24gYnkgKkNocmlzdGlhbiBIZWltZXMqLgorCitUaGUgZm9sbG93aW5nIHB1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhcHBsaWVzIGZvciBib3RoIEMgaGFzaCBmdW5jdGlvbgoraW1wbGVtZW50YXRpb24sIGV4dGVuc2lvbiBjb2RlLCBhbmQgdGhpcyBkb2N1bWVudGF0aW9uOgorCisgICBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvcihzKSBoYXZlIGRlZGljYXRlZCBhbGwgY29weXJpZ2h0CisgICBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8gdGhlIHB1YmxpYyBkb21haW4KKyAgIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0IGFueSB3YXJyYW50eS4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgQ0MwIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiBhbG9uZworICAgd2l0aCB0aGlzIHNvZnR3YXJlLiBJZiBub3QsIHNlZQorICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLy4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBoZWxwZWQgd2l0aCBkZXZlbG9wbWVudCBvciBjb250cmlidXRlZCB0aGVpciBjaGFuZ2VzCit0byB0aGUgcHJvamVjdCBhbmQgdGhlIHB1YmxpYyBkb21haW4gYWNjb3JkaW5nIHRvIHRoZSBDcmVhdGl2ZSBDb21tb25zIFB1YmxpYworRG9tYWluIERlZGljYXRpb24gMS4wIFVuaXZlcnNhbDoKKworKiAqQWxleGFuZHIgU29rb2xvdnNraXkqCisKKy4uIHNlZWFsc286OiBPZmZpY2lhbCBCTEFLRTIgd2Vic2l0ZTogaHR0cHM6Ly9ibGFrZTIubmV0CisKKy4uIF9SRkMtNzY5MzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTMKKy4uIF9CTEFLRTI6IGh0dHBzOi8vYmxha2UyLm5ldAorLi4gX0hNQUM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlCisuLiBfQkxBS0U6IGh0dHBzOi8vMTMxMDAyLm5ldC9ibGFrZS8KKy4uIF9TSEEtMzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTklTVF9oYXNoX2Z1bmN0aW9uX2NvbXBldGl0aW9uCisuLiBfQ2hhQ2hhOiBodHRwczovL2NyLnlwLnRvL2NoYWNoYS5odG1sCisuLiBfcHlibGFrZTI6IGh0dHBzOi8vcHl0aG9uaG9zdGVkLm9yZy9weWJsYWtlMi8KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCBhMmU5NmNhLi4yY2IzYzc4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNDQsOCArNDQsOCBAQAogLS0tLS0tLS0tLS0tLS0tCiAKIFRoZXJlIGlzIG9uZSBjb25zdHJ1Y3RvciBtZXRob2QgbmFtZWQgZm9yIGVhY2ggdHlwZSBvZiA6ZGZuOmBoYXNoYC4gIEFsbCByZXR1cm4KLWEgaGFzaCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaW1wbGUgaW50ZXJmYWNlLiBGb3IgZXhhbXBsZTogdXNlIDpmdW5jOmBzaGExYCB0bwotY3JlYXRlIGEgU0hBMSBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCithIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMjU2YCB0bworY3JlYXRlIGEgU0hBLTI1NiBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCiBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gIChub3JtYWxseSA6Y2xhc3M6YGJ5dGVzYCkgdXNpbmcgdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZC4KIEF0IGFueSBwb2ludCB5b3UgY2FuIGFzayBpdCBmb3IgdGhlIDpkZm46YGRpZ2VzdGAgb2YgdGhlCiBjb25jYXRlbmF0aW9uIG9mIHRoZSBkYXRhIGZlZCB0byBpdCBzbyBmYXIgdXNpbmcgdGhlIDptZXRoOmBkaWdlc3RgIG9yCkBAIC02NCwyMSArNjQsMzMgQEAKIC4uIGluZGV4Ojogc2luZ2xlOiBPcGVuU1NMOyAodXNlIGluIG1vZHVsZSBoYXNobGliKQogCiBDb25zdHJ1Y3RvcnMgZm9yIGhhc2ggYWxnb3JpdGhtcyB0aGF0IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSBhcmUKLTpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCi1hbmQgOmZ1bmM6YHNoYTUxMmAuIEFkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24KLXRoZSBPcGVuU1NMIGxpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLgorOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAorOmZ1bmM6YHNoYTUxMmAsIDpmdW5jOmBibGFrZTJiYCwgYW5kIDpmdW5jOmBibGFrZTJzYC4KKzpmdW5jOmBtZDVgIGlzIG5vcm1hbGx5IGF2YWlsYWJsZSBhcyB3ZWxsLCB0aG91Z2ggaXQKK21heSBiZSBtaXNzaW5nIGlmIHlvdSBhcmUgdXNpbmcgYSByYXJlICJGSVBTIGNvbXBsaWFudCIgYnVpbGQgb2YgUHl0aG9uLgorQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBhbHNvIGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgdXBvbiB0aGUgT3BlblNTTAorbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzIG9uIHlvdXIgcGxhdGZvcm0uIE9uIG1vc3QgcGxhdGZvcm1zIHRoZQorOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwKKzpmdW5jOmBzaGFrZV8xMjhgLCA6ZnVuYzpgc2hha2VfMjU2YCBhcmUgYWxzbyBhdmFpbGFibGUuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgU0hBMyAoS2VjY2FrKSBhbmQgU0hBS0UgY29uc3RydWN0b3JzIDpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsCisgICA6ZnVuYzpgc2hhM18zODRgLCA6ZnVuYzpgc2hhM181MTJgLCA6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgOmZ1bmM6YGJsYWtlMmJgIGFuZCA6ZnVuYzpgYmxha2Uyc2Agd2VyZSBhZGRlZC4KIAogRm9yIGV4YW1wbGUsIHRvIG9idGFpbiB0aGUgZGlnZXN0IG9mIHRoZSBieXRlIHN0cmluZyBgYGInTm9ib2R5IGluc3BlY3RzIHRoZQogc3BhbW1pc2ggcmVwZXRpdGlvbidgYDo6CiAKICAgID4+PiBpbXBvcnQgaGFzaGxpYgotICAgPj4+IG0gPSBoYXNobGliLm1kNSgpCisgICA+Pj4gbSA9IGhhc2hsaWIuc2hhMjU2KCkKICAgID4+PiBtLnVwZGF0ZShiIk5vYm9keSBpbnNwZWN0cyIpCiAgICA+Pj4gbS51cGRhdGUoYiIgdGhlIHNwYW1taXNoIHJlcGV0aXRpb24iKQogICAgPj4+IG0uZGlnZXN0KCkKLSAgIGInXHhiYmRceDljXHg4M1x4ZGRceDFlXHhhNVx4YzlceGQ5XHhkZVx4YzlceGExXHg4ZFx4ZjBceGZmXHhlOScKKyAgIGInXHgwM1x4MWVceGRkfUFlXHgxNVx4OTNceGM1XHhmZVxcXHgwMG9ceGE1dSs3XHhmZFx4ZGZceGY3XHhiY05ceDg0Olx4YTZceGFmXHgwY1x4OTVceDBmS1x4OTRceDA2JwogICAgPj4+IG0uZGlnZXN0X3NpemUKLSAgIDE2CisgICAzMgogICAgPj4+IG0uYmxvY2tfc2l6ZQogICAgNjQKIApAQCAtMTA3LDcgKzExOSw5IEBACiAuLiBkYXRhOjogYWxnb3JpdGhtc19ndWFyYW50ZWVkCiAKICAgIEEgc2V0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBoYXNoIGFsZ29yaXRobXMgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQKLSAgIGJ5IHRoaXMgbW9kdWxlIG9uIGFsbCBwbGF0Zm9ybXMuCisgICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLiAgTm90ZSB0aGF0ICdtZDUnIGlzIGluIHRoaXMgbGlzdCBkZXNwaXRlCisgICBzb21lIHVwc3RyZWFtIHZlbmRvcnMgb2ZmZXJpbmcgYW4gb2RkICJGSVBTIGNvbXBsaWFudCIgUHl0aG9uIGJ1aWxkIHRoYXQKKyAgIGV4Y2x1ZGVzIGl0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTgxLDYgKzE5NSwyOCBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBkYXRhIHNoYXJpbmcgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorU0hBS0UgdmFyaWFibGUgbGVuZ3RoIGRpZ2VzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgc2hha2VfMTI4YCBhbmQgOmZ1bmM6YHNoYWtlXzI1NmAgYWxnb3JpdGhtcyBwcm92aWRlIHZhcmlhYmxlCitsZW5ndGggZGlnZXN0cyB3aXRoIGxlbmd0aF9pbl9iaXRzLy8yIHVwIHRvIDEyOCBvciAyNTYgYml0cyBvZiBzZWN1cml0eS4KK0FzIHN1Y2gsIHRoZWlyIGRpZ2VzdCBtZXRob2RzIHJlcXVpcmUgYSBsZW5ndGguIE1heGltdW0gbGVuZ3RoIGlzIG5vdCBsaW1pdGVkCitieSB0aGUgU0hBS0UgYWxnb3JpdGhtLgorCisuLiBtZXRob2Q6OiBzaGFrZS5kaWdlc3QobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGRpZ2VzdCBvZiB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZCBzbyBmYXIuCisgICBUaGlzIGlzIGEgYnl0ZXMgb2JqZWN0IG9mIHNpemUgYGBsZW5ndGhgYCB3aGljaCBtYXkgY29udGFpbiBieXRlcyBpbgorICAgdGhlIHdob2xlIHJhbmdlIGZyb20gMCB0byAyNTUuCisKKworLi4gbWV0aG9kOjogc2hha2UuaGV4ZGlnZXN0KGxlbmd0aCkKKworICAgTGlrZSA6bWV0aDpgZGlnZXN0YCBleGNlcHQgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZCBhcyBhIHN0cmluZyBvYmplY3Qgb2YKKyAgIGRvdWJsZSBsZW5ndGgsIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuICBUaGlzIG1heSBiZSB1c2VkIHRvCisgICBleGNoYW5nZSB0aGUgdmFsdWUgc2FmZWx5IGluIGVtYWlsIG9yIG90aGVyIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgorCisKIEtleSBkZXJpdmF0aW9uCiAtLS0tLS0tLS0tLS0tLQogCkBAIC0yMjEsNiArMjU3LDI5IEBACiAgICAgICBQeXRob24gaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbmxpbmUgdmVyc2lvbiBvZiA6bW9kOmBobWFjYC4gSXQgaXMgYWJvdXQKICAgICAgIHRocmVlIHRpbWVzIHNsb3dlciBhbmQgZG9lc24ndCByZWxlYXNlIHRoZSBHSUwuCiAKKy4uIGZ1bmN0aW9uOjogc2NyeXB0KHBhc3N3b3JkLCAqLCBzYWx0LCBuLCByLCBwLCBtYXhtZW09MCwgZGtsZW49NjQpCisKKyAgIFRoZSBmdW5jdGlvbiBwcm92aWRlcyBzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gYXMKKyAgIGRlZmluZWQgaW4gOnJmYzpgNzkxNGAuCisKKyAgICpwYXNzd29yZCogYW5kICpzYWx0KiBtdXN0IGJlIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gQXBwbGljYXRpb25zIGFuZAorICAgbGlicmFyaWVzIHNob3VsZCBsaW1pdCAqcGFzc3dvcmQqIHRvIGEgc2Vuc2libGUgbGVuZ3RoIChlLmcuIDEwMjQpLiAqc2FsdCoKKyAgIHNob3VsZCBiZSBhYm91dCAxNiBvciBtb3JlIGJ5dGVzIGZyb20gYSBwcm9wZXIgc291cmNlLCBlLmcuIDpmdW5jOmBvcy51cmFuZG9tYC4KKworICAgKm4qIGlzIHRoZSBDUFUvTWVtb3J5IGNvc3QgZmFjdG9yLCAqciogdGhlIGJsb2NrIHNpemUsICpwKiBwYXJhbGxlbGl6YXRpb24KKyAgIGZhY3RvciBhbmQgKm1heG1lbSogbGltaXRzIG1lbW9yeSAoT3BlblNTTCAxLjEuMCBkZWZhdWx0cyB0byAzMiBNQikuCisgICAqZGtsZW4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIGRlcml2ZWQga2V5LgorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4xKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitCTEFLRTIKKy0tLS0tLQorCitCTEFLRTIgdGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudHMsIHNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzMCw2ICsyODksOCBAQAogICAgTW9kdWxlIDptb2Q6YGJhc2U2NGAKICAgICAgIEFub3RoZXIgd2F5IHRvIGVuY29kZSBiaW5hcnkgaGFzaGVzIGZvciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgU2VlIDpyZWY6YGhhc2hsaWItYmxha2UyYC4KKwogICAgaHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL2ZpcHMvZmlwczE4MC0yL2ZpcHMxODAtMi5wZGYKICAgICAgIFRoZSBGSVBTIDE4MC0yIHB1YmxpY2F0aW9uIG9uIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCBlMWFjZjkyLi4yZjU5ZWNlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC02OSwxMyArNjksNiBAQAogICAgbXVzdCBiZSBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHZhcmlvdXMgU1NMCiAgICBvcHRpb25zLgogCi0gICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZQotICAgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0Ci0gICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQotICAgY2VydGlmaWNhdGVzIGZvciB5b3UuICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKLSAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQgYmUgdXNlZAotICAgaW5zdGVhZC4KLQogICAgUGxlYXNlIHJlYWQgOnJlZjpgc3NsLXNlY3VyaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBiZXN0IHByYWN0aWNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTk1LDYgKzg4LDE3IEBACiAgICAgICA6ZnVuYzpgc3NsLl9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0YCBjYW4gYmUgcGFzc2VkIHRvIHRoZSAqY29udGV4dCoKICAgICAgIHBhcmFtZXRlci4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworICAgICAgIFRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlciBpcyBhbHNvIGRlcHJlY2F0ZWQ7IHRoZQorICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQKKyAgICAgICBiZSB1c2VkIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpCiAKQEAgLTIxNywzOSArMjIxLDYxIEBACiA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBpbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLCBcCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSkKIAogICAgVGhpcyB3aWxsIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIEhUVFAgcmVxdWVzdAogICAgbWV0aG9kICptZXRob2QqIGFuZCB0aGUgc2VsZWN0b3IgKnVybCouCiAKICAgIElmICpib2R5KiBpcyBzcGVjaWZpZWQsIHRoZSBzcGVjaWZpZWQgZGF0YSBpcyBzZW50IGFmdGVyIHRoZSBoZWFkZXJzIGFyZQotICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSBzdHJpbmcsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4gb3BlbgotICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YFxzLiAgSWYKLSAgICpib2R5KiBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZCBhcyBJU08tODg1OS0xLCB0aGUgZGVmYXVsdCBmb3IgSFRUUC4gIElmCi0gICBpdCBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZCBzdXBwb3J0Ci0gICBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaGFzIGEgYGBtb2RlYGAKLSAgIGF0dHJpYnV0ZSwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAgbWV0aG9kIHdpbGwgYmUgZW5jb2RlZCBhcwotICAgSVNPLTg4NTktMSB1bmxlc3MgdGhlIGBgbW9kZWBgIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBgYmBgLAotICAgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5IGBgcmVhZCgpYGAgaXMgc2VudCBhcyBpcy4gIElmICpib2R5KiBpcyBhbgotICAgaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgaXRlcmFibGUgYXJlIHNlbnQgYXMgaXMgdW50aWwgdGhlIGl0ZXJhYmxlIGlzCi0gICBleGhhdXN0ZWQuCisgICBmaW5pc2hlZC4gIEl0IG1heSBiZSBhIDpjbGFzczpgc3RyYCwgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBhbgorICAgb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBhbiBpdGVyYWJsZSBvZiA6Y2xhc3M6YGJ5dGVzYC4gIElmICpib2R5KgorICAgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZiBpdAorICAgaXMgYSBieXRlcy1saWtlIG9iamVjdCwgdGhlIGJ5dGVzIGFyZSBzZW50IGFzIGlzLiAgSWYgaXQgaXMgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGlzIHNlbnQ7IHRoaXMgZmlsZSBvYmplY3Qgc2hvdWxkCisgICBzdXBwb3J0IGF0IGxlYXN0IHRoZSBgYHJlYWQoKWBgIG1ldGhvZC4gIElmIHRoZSBmaWxlIG9iamVjdCBpcyBhbgorICAgaW5zdGFuY2Ugb2YgOmNsYXNzOmBpby5UZXh0SU9CYXNlYCwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAKKyAgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5CisgICBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4gaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUKKyAgIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQuCiAKLSAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQCi0gICBoZWFkZXJzIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC4KKyAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQIGhlYWRlcnMgdG8gc2VuZAorICAgd2l0aCB0aGUgcmVxdWVzdC4KIAotICAgSWYgKmhlYWRlcnMqIGRvZXMgbm90IGNvbnRhaW4gYSBDb250ZW50LUxlbmd0aCBpdGVtLCBvbmUgaXMgYWRkZWQKLSAgIGF1dG9tYXRpY2FsbHkgaWYgcG9zc2libGUuICBJZiAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKLSAgIGlzIHNldCB0byBgYDBgYCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQKLSAgIGBgUEFUQ0hgYCkuICBJZiAqYm9keSogaXMgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCB0aGUgQ29udGVudC1MZW5ndGgKLSAgIGhlYWRlciBpcyBzZXQgdG8gaXRzIGxlbmd0aC4gIElmICpib2R5KiBpcyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgYW5kIGl0Ci0gICB3b3JrcyB0byBjYWxsIDpmdW5jOmB+b3MuZnN0YXRgIG9uIHRoZSByZXN1bHQgb2YgaXRzIGBgZmlsZW5vKClgYCBtZXRob2QsCi0gICB0aGVuIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIHRoZSBgYHN0X3NpemVgYCByZXBvcnRlZCBieSB0aGUKLSAgIGBgZnN0YXRgYCBjYWxsLiAgT3RoZXJ3aXNlIG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBhZGRlZC4KKyAgIElmICpoZWFkZXJzKiBjb250YWlucyBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZywKKyAgIGJ1dCB0aGVyZSBpcyBhIHJlcXVlc3QgYm9keSwgb25lIG9mIHRob3NlCisgICBoZWFkZXIgZmllbGRzIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4gIElmCisgICAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIGBgMGBgIGZvcgorICAgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQgYGBQQVRDSGBgKS4gIElmCisgICAqYm9keSogaXMgYSBzdHJpbmcgb3IgYSBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEKKyAgIDp0ZXJtOmBmaWxlIDxmaWxlIG9iamVjdD5gLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzCisgICBzZXQgdG8gaXRzIGxlbmd0aC4gIEFueSBvdGhlciB0eXBlIG9mICpib2R5KiAoZmlsZXMKKyAgIGFuZCBpdGVyYWJsZXMgaW4gZ2VuZXJhbCkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLCBhbmQgdGhlCisgICBUcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNldCBpbnN0ZWFkIG9mCisgICBDb250ZW50LUxlbmd0aC4KKworICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpZiBUcmFuc2Zlci1FbmNvZGluZyBpcworICAgc3BlY2lmaWVkIGluICpoZWFkZXJzKi4gIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBGYWxzZWBgLCB0aGUKKyAgIEhUVFBDb25uZWN0aW9uIG9iamVjdCBhc3N1bWVzIHRoYXQgYWxsIGVuY29kaW5nIGlzIGhhbmRsZWQgYnkgdGhlCisgICBjYWxsaW5nIGNvZGUuICBJZiBpdCBpcyBgYFRydWVgYCwgdGhlIGJvZHkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIENodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEhUVFAgcHJvdG9jb2wKKyAgICAgIHZlcnNpb24gMS4xLiAgVW5sZXNzIHRoZSBIVFRQIHNlcnZlciBpcyBrbm93biB0byBoYW5kbGUgSFRUUCAxLjEsCisgICAgICB0aGUgY2FsbGVyIG11c3QgZWl0aGVyIHNwZWNpZnkgdGhlIENvbnRlbnQtTGVuZ3RoLCBvciBtdXN0IHBhc3MgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoYXQgaXMgbm90IGFsc28gYSBmaWxlIGFzIHRoZQorICAgICAgYm9keSByZXByZXNlbnRhdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqYm9keSogY2FuIG5vdyBiZSBhbiBpdGVyYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIG5laXRoZXIgQ29udGVudC1MZW5ndGggbm9yIFRyYW5zZmVyLUVuY29kaW5nIGFyZSBzZXQgaW4KKyAgICAgICpoZWFkZXJzKiwgZmlsZSBhbmQgaXRlcmFibGUgKmJvZHkqIG9iamVjdHMgYXJlIG5vdyBjaHVuay1lbmNvZGVkLgorICAgICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1MZW5ndGggZm9yIGZpbGUKKyAgICAgIG9iamVjdHMuCisKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKIAogICAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhIHJlcXVlc3QgaXMgc2VudCB0byBnZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTMzNSwxMyArMzYxLDMyIEBACiAgICBhbiBhcmd1bWVudC4KIAogCi0uLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5lbmRoZWFkZXJzKG1lc3NhZ2VfYm9keT1Ob25lKQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFNlbmQgYSBibGFuayBsaW5lIHRvIHRoZSBzZXJ2ZXIsIHNpZ25hbGxpbmcgdGhlIGVuZCBvZiB0aGUgaGVhZGVycy4gVGhlCiAgICBvcHRpb25hbCAqbWVzc2FnZV9ib2R5KiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5Ci0gICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZQotICAgcGFja2V0IGFzIHRoZSBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBpbiBhCi0gICBzZXBhcmF0ZSBwYWNrZXQuCisgICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCisKKyAgIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBUcnVlYGAsIHRoZSByZXN1bHQgb2YgZWFjaCBpdGVyYXRpb24gb2YKKyAgICptZXNzYWdlX2JvZHkqIHdpbGwgYmUgY2h1bmstZW5jb2RlZCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzIzMGAsCisgICBTZWN0aW9uIDMuMy4xLiAgSG93IHRoZSBkYXRhIGlzIGVuY29kZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mCisgICAqbWVzc2FnZV9ib2R5Ki4gIElmICptZXNzYWdlX2JvZHkqIGltcGxlbWVudHMgdGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UKKyAgIDxidWZmZXJvYmplY3RzPmAgdGhlIGVuY29kaW5nIHdpbGwgcmVzdWx0IGluIGEgc2luZ2xlIGNodW5rLgorICAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYSA6Y2xhc3M6YGNvbGxlY3Rpb25zLkl0ZXJhYmxlYCwgZWFjaCBpdGVyYXRpb24KKyAgIG9mICptZXNzYWdlX2JvZHkqIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhCisgICA6dGVybTpgZmlsZSBvYmplY3RgLCBlYWNoIGNhbGwgdG8gYGAucmVhZCgpYGAgd2lsbCByZXN1bHQgaW4gYSBjaHVuay4KKyAgIFRoZSBtZXRob2QgYXV0b21hdGljYWxseSBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIGNodW5rLWVuY29kZWQgZGF0YQorICAgaW1tZWRpYXRlbHkgYWZ0ZXIgKm1lc3NhZ2VfYm9keSouCisKKyAgIC4uIG5vdGU6OiBEdWUgdG8gdGhlIGNodW5rZWQgZW5jb2Rpbmcgc3BlY2lmaWNhdGlvbiwgZW1wdHkgY2h1bmtzCisgICAgICB5aWVsZGVkIGJ5IGFuIGl0ZXJhdG9yIGJvZHkgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjaHVuay1lbmNvZGVyLgorICAgICAgVGhpcyBpcyB0byBhdm9pZCBwcmVtYXR1cmUgdGVybWluYXRpb24gb2YgdGhlIHJlYWQgb2YgdGhlIHJlcXVlc3QgYnkKKyAgICAgIHRoZSB0YXJnZXQgc2VydmVyIGR1ZSB0byBtYWxmb3JtZWQgZW5jb2RpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQ2h1bmtlZCBlbmNvZGluZyBzdXBwb3J0LiAgVGhlICplbmNvZGVfY2h1bmtlZCogcGFyYW1ldGVyIHdhcworICAgICAgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uc2VuZChkYXRhKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKaW5kZXggYWU3ZmI5Ny4uZmI1YzFkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdApAQCAtOTgsOCArOTgsOCBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiByZmlsZQogCi0gICAgICBDb250YWlucyBhbiBpbnB1dCBzdHJlYW0sIHBvc2l0aW9uZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dAotICAgICAgZGF0YS4KKyAgICAgIEFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGlucHV0IHN0cmVhbSwgcmVhZHkgdG8gcmVhZCBmcm9tCisgICAgICB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0IGRhdGEuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHdmaWxlCiAKQEAgLTEwNyw2ICsxMDcsOSBAQAogICAgICAgY2xpZW50LiBQcm9wZXIgYWRoZXJlbmNlIHRvIHRoZSBIVFRQIHByb3RvY29sIG11c3QgYmUgdXNlZCB3aGVuIHdyaXRpbmcgdG8KICAgICAgIHRoaXMgc3RyZWFtLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhpcyBpcyBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBzdHJlYW0uCisKICAgIDpjbGFzczpgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcmAgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogc2VydmVyX3ZlcnNpb24KQEAgLTM2OSwxMCArMzcyLDkgQEAKIAogICAgSGFuZGxlciA9IGh0dHAuc2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcgogCi0gICBodHRwZCA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikKLQotICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogLi4gX2h0dHAtc2VydmVyLWNsaToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCA3NzFjYTQzLi4xNjMyZWI3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtMTAzLDYgKzEwMywxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKnNzbF9jb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgogCiAKQEAgLTUwMCw2ICs1MDgsMTcgQEAKICAgICAgICAgIE0uc3RvcmUobnVtLCAnK0ZMQUdTJywgJ1xcRGVsZXRlZCcpCiAgICAgICBNLmV4cHVuZ2UoKQogCisgICAuLiBub3RlOjoKKworICAgICAgQ3JlYXRpbmcgZmxhZ3MgY29udGFpbmluZyAnXScgKGZvciBleGFtcGxlOiAiW3Rlc3RdIikgdmlvbGF0ZXMKKyAgICAgIDpyZmM6YDM1MDFgICh0aGUgSU1BUCBwcm90b2NvbCkuICBIb3dldmVyLCBpbWFwbGliIGhhcyBoaXN0b3JpY2FsbHkKKyAgICAgIGFsbG93ZWQgY3JlYXRpb24gb2Ygc3VjaCB0YWdzLCBhbmQgcG9wdWxhciBJTUFQIHNlcnZlcnMsIHN1Y2ggYXMgR21haWwsCisgICAgICBhY2NlcHQgYW5kIHByb2R1Y2Ugc3VjaCBmbGFncy4gIFRoZXJlIGFyZSBub24tUHl0aG9uIHByb2dyYW1zIHdoaWNoIGFsc28KKyAgICAgIGNyZWF0ZSBzdWNoIHRhZ3MuICBBbHRob3VnaCBpdCBpcyBhbiBSRkMgdmlvbGF0aW9uIGFuZCBJTUFQIGNsaWVudHMgYW5kCisgICAgICBzZXJ2ZXJzIGFyZSBzdXBwb3NlZCB0byBiZSBzdHJpY3QsIGltYXBsaWIgbm9uZXRoZWxlc3MgY29udGludWVzIHRvIGFsbG93CisgICAgICBzdWNoIHRhZ3MgdG8gYmUgY3JlYXRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbmQgYXMgb2YKKyAgICAgIHB5dGhvbiAzLjYsIGhhbmRsZXMgdGhlbSBpZiB0aGV5IGFyZSBzZW50IGZyb20gdGhlIHNlcnZlciwgc2luY2UgdGhpcworICAgICAgaW1wcm92ZXMgcmVhbC13b3JsZCBjb21wYXRpYmlsaXR5LgogCiAuLiBtZXRob2Q6OiBJTUFQNC5zdWJzY3JpYmUobWFpbGJveCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdCBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKaW5kZXggZjExZjZkYy4uODAwZTkxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CkBAIC0yMCw2ICsyMCw5IEBACiAgICBzdHJpbmcgZGVzY3JpYmluZyB0aGUgaW1hZ2UgdHlwZS4gIElmIG9wdGlvbmFsICpoKiBpcyBwcm92aWRlZCwgdGhlICpmaWxlbmFtZSoKICAgIGlzIGlnbm9yZWQgYW5kICpoKiBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gdGhlIGJ5dGUgc3RyZWFtIHRvIHRlc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGltYWdlIHR5cGVzIGFyZSByZWNvZ25pemVkLCBhcyBsaXN0ZWQgYmVsb3cgd2l0aCB0aGUgcmV0dXJuIHZhbHVlCiBmcm9tIDpmdW5jOmB3aGF0YDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggOTgyOGJhNi4uY2NmNWY5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC04NSw3ICs4NSw5IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AgaW5zdGVhZCB1bmxlc3MgUHl0aG9uIDMuMwogICAgICAgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgaW4gd2hpY2ggY2FzZSB1c2UKLSAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIHRoZSBmb3JtZXIgY2FzZSwKKyAgICAgIHNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYCBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBkb2N1bWVudGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uKQpAQCAtMTEyLDkgKzExNCwxMiBAQAogICAgICAgSWYgcHJldmlvdXNseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmZ1bmM6YGltcC5maW5kX21vZHVsZWAgdGhlbgogICAgICAgY29uc2lkZXIgdXNpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCwgb3RoZXJ3aXNlIHVzZSB0aGUgbG9hZGVyCiAgICAgICByZXR1cm5lZCBieSB0aGUgcmVwbGFjZW1lbnQgeW91IGNob3NlIGZvciA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYC4gSWYgeW91Ci0gICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHRoZW4gdXNlIHRoZQotICAgICAgY2xhc3NlcyBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCwgZS5nLgotICAgICAgYGBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUoKWBgLgorICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB3aXRoIGZpbGUKKyAgICAgIHBhdGggYXJndW1lbnRzIHRoZW4gdXNlIGEgY29tYmluYXRpb24gb2YKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgYW5kCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AuIFNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYAorICAgICAgc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzCisgICAgICBhcHByb2FjaGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKLSAgICAgIFVzZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIGluc3RlYWQuCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiByZWxvYWQobW9kdWxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggNTI2YzlmMy4uMWZkNTY5OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgIG1vZHVsZSBhbmQgKnBhdGgqIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUKICAgICAgIHBhcmVudCBwYWNrYWdlLiBJZiBhIHNwZWMgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KICAgICAgIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5Ci0gICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzE3LDcgKzMxNyw3IEBACiAgICAgICB3aXRoaW4gdGhlIDp0ZXJtOmBwYXRoIGVudHJ5YCB0byB3aGljaCBpdCBpcyBhc3NpZ25lZC4gIElmIGEgc3BlYwogICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgCiAgICAgICBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heSB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQKLSAgICAgIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzc5LDEwICszNzksMTQgQEAKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKICAgICAgICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG9yIHJlbG9hZGVkLiAgVGhlIG1vZHVsZSBzaG91bGQgYWxyZWFkeQotICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gZXhlY19tb2R1bGUoKSBpcyBjYWxsZWQuCisgICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBgYGV4ZWNfbW9kdWxlKClgYCBpcyBjYWxsZWQuIFdoZW4gdGhpcyBtZXRob2QgZXhpc3RzLAorICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBiZSBkZWZpbmVkLgogCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKICAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgICAgICBBIGxlZ2FjeSBtZXRob2QgZm9yIGxvYWRpbmcgYSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgY2Fubm90IGJlCkBAIC04MDIsNiArODA2LDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1vZDpgc2l0ZWAgY29uZmlndXJhdGlvbiBpbnN0ZWFkLiBGdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uIG1heQorICAgICAgbm90IGVuYWJsZSB0aGlzIGZpbmRlciBieSBkZWZhdWx0LgorCiAKIC4uIGNsYXNzOjogUGF0aEZpbmRlcgogCkBAIC05MzYsNiArOTQ0LDEwIEBACiAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogU291cmNlbGVzc0ZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTk3NSw2ICs5ODcsMTAgQEAKICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBFeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC0xMTM3LDYgKzExNTMsOSBAQAogICAgICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciB3YXMgYWRkZWQgYW5kIHRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlcgogICAgICAgd2FzIGRlcHJlY2F0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTE1MCw2ICsxMTY5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQogCiAgICBEZWNvZGUgdGhlIGdpdmVuIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIGl0IGFzIGEgc3RyaW5nCkBAIC0xMTkyLDEyICsxMjE0LDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogbW9kdWxlX2Zyb21fc3BlYyhzcGVjKQogCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZCBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgLgorICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQKKyAgIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAuCiAKLSAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQotICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAotICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQotICAgb24gdGhlIG1vZHVsZS4KKyAgIElmIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAKKyAgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuCisgICBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZworICAgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vZHVsZS4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCiAgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgpAQCAtMTI1OSw3ICsxMjgyLDggQEAKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIAotICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKKyAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZQorICAgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAogICAgaXMgc2V0IGFuZCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgIGl0IHdpbGwgbm90IGJlIGNoYW5nZWQuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKQEAgLTEyODQsNiArMTMwOCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gY2xhc3M6OiBMYXp5TG9hZGVyKGxvYWRlcikKIAogICAgQSBjbGFzcyB3aGljaCBwb3N0cG9uZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbG9hZGVyIG9mIGEgbW9kdWxlIHVudGlsIHRoZQpAQCAtMTI5MiwxMyArMTMxOSwxMiBAQAogICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCiAgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKLSAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCi0gICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgOyB0aGlzIGV4Y2x1ZGVzCi0gICA6Y2xhc3M6YEJ1aWx0aW5JbXBvcnRlcmAgYW5kIDpjbGFzczpgRXh0ZW5zaW9uRmlsZUxvYWRlcmApLiBGaW5hbGx5LAotICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCi0gICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKLSAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQotICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2QgbXVzdCByZXR1cm4gYGBOb25lYGAgb3IgYQorICAgdHlwZSBmb3Igd2hpY2ggaXRzIGBgX19jbGFzc19fYGAgYXR0cmlidXRlIGNhbiBiZSBtdXRhdGVkIGFsb25nIHdpdGggbm90CisgICB1c2luZyA6dGVybTpgc2xvdHMgPF9fc2xvdHNfXz5gLiBGaW5hbGx5LCBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdAorICAgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseQorICAgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OworICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYSBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCiAKICAgIC4uIG5vdGU6OgogICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBjcml0aWNhbCwgdGhpcyBjbGFzcyBhbGxvd3MgZm9yCkBAIC0xMzA5LDYgKzEzMzUsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBCZWdhbiBjYWxsaW5nIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAsIHJlbW92aW5nIHRoZQorICAgICAgY29tcGF0aWJpbGl0eSB3YXJuaW5nIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYC4KKwogICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKIAogICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcwpAQCAtMTMyMCwzICsxMzUxLDEzOSBAQAogICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKICAgICAgICAgbGF6eV9sb2FkZXIgPSBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkobG9hZGVyKQogICAgICAgICBmaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwgKGxhenlfbG9hZGVyLCBzdWZmaXhlcykpCisKKy4uIF9pbXBvcnRsaWItZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitJbXBvcnRpbmcgcHJvZ3JhbW1hdGljYWxseQorJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gcHJvZ3JhbW1hdGljYWxseSBpbXBvcnQgYSBtb2R1bGUsIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliCisKKyAgaXRlcnRvb2xzID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2l0ZXJ0b29scycpCisKKworQ2hlY2tpbmcgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSWYgeW91IG5lZWQgdG8gZmluZCBvdXQgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIHdpdGhvdXQgYWN0dWFsbHkgZG9pbmcgdGhlCitpbXBvcnQsIHRoZW4geW91IHNob3VsZCB1c2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBuYW1lID0gJ2l0ZXJ0b29scycKKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgIHByaW50KCJjYW4ndCBmaW5kIHRoZSBpdGVydG9vbHMgbW9kdWxlIikKKyAgZWxzZToKKyAgICAgICMgSWYgeW91IGNob3NlIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBpbXBvcnQgLi4uCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAjIEFkZGluZyB0aGUgbW9kdWxlIHRvIHN5cy5tb2R1bGVzIGlzIG9wdGlvbmFsLgorICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKworCitJbXBvcnRpbmcgYSBzb3VyY2UgZmlsZSBkaXJlY3RseQorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gaW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIGRpcmVjdGx5LCB1c2UgdGhlIGZvbGxvd2luZyByZWNpcGUKKyhQeXRob24gMy40IGFuZCBuZXdlciBvbmx5KTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIGltcG9ydCB0b2tlbml6ZQorICBmaWxlX3BhdGggPSB0b2tlbml6ZS5fX2ZpbGVfXworICBtb2R1bGVfbmFtZSA9IHRva2VuaXplLl9fbmFtZV9fCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG1vZHVsZV9uYW1lLCBmaWxlX3BhdGgpCisgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAjIE9wdGlvbmFsOyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGltcG9ydCB0aGUgbW9kdWxlCisgICMgYnkgbmFtZSBsYXRlci4KKyAgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdID0gbW9kdWxlCisKKworU2V0dGluZyB1cCBhbiBpbXBvcnRlcgorJycnJycnJycnJycnJycnJycnJycnJworCitGb3IgZGVlcCBjdXN0b21pemF0aW9ucyBvZiBpbXBvcnQsIHlvdSB0eXBpY2FsbHkgd2FudCB0byBpbXBsZW1lbnQgYW4KKzp0ZXJtOmBpbXBvcnRlcmAuIFRoaXMgbWVhbnMgbWFuYWdpbmcgYm90aCB0aGUgOnRlcm06YGZpbmRlcmAgYW5kIDp0ZXJtOmBsb2FkZXJgCitzaWRlIG9mIHRoaW5ncy4gRm9yIGZpbmRlcnMgdGhlcmUgYXJlIHR3byBmbGF2b3VycyB0byBjaG9vc2UgZnJvbSBkZXBlbmRpbmcgb24KK3lvdXIgbmVlZHM6IGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIG9yIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gVGhlCitmb3JtZXIgaXMgd2hhdCB5b3Ugd291bGQgcHV0IG9uIDphdHRyOmBzeXMubWV0YV9wYXRoYCB3aGlsZSB0aGUgbGF0dGVyIGlzIHdoYXQKK3lvdSBjcmVhdGUgdXNpbmcgYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIHdoaWNoIHdvcmtzCit3aXRoIDphdHRyOmBzeXMucGF0aGAgZW50cmllcyB0byBwb3RlbnRpYWxseSBjcmVhdGUgYSBmaW5kZXIuIFRoaXMgZXhhbXBsZSB3aWxsCitzaG93IHlvdSBob3cgdG8gcmVnaXN0ZXIgeW91ciBvd24gaW1wb3J0ZXJzIHNvIHRoYXQgaW1wb3J0IHdpbGwgdXNlIHRoZW0gKGZvcgorY3JlYXRpbmcgYW4gaW1wb3J0ZXIgZm9yIHlvdXJzZWxmLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUKK2NsYXNzZXMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYWNrYWdlKTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LgorICBTcGFtTWV0YVBhdGhGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIKKyAgU3BhbVBhdGhFbnRyeUZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcgorICBsb2FkZXJfZGV0YWlscyA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKQorCisgICMgU2V0dGluZyB1cCBhIG1ldGEgcGF0aCBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgZmluZGVyIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMgb2YKKyAgIyBwcmlvcml0eS4KKyAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoU3BhbU1ldGFQYXRoRmluZGVyKQorCisgICMgU2V0dGluZyB1cCBhIHBhdGggZW50cnkgZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIHBhdGggaG9vayBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zCisgICMgb2YgcHJpb3JpdHkuCisgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChTcGFtUGF0aEVudHJ5RmluZGVyLnBhdGhfaG9vayhsb2FkZXJfZGV0YWlscykpCisKKworQXBwcm94aW1hdGluZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSW1wb3J0IGl0c2VsZiBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24gY29kZSwgbWFraW5nIGl0IHBvc3NpYmxlIHRvCitleHBvc2UgbW9zdCBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aHJvdWdoIGltcG9ydGxpYi4gVGhlIGZvbGxvd2luZworaGVscHMgaWxsdXN0cmF0ZSB0aGUgdmFyaW91cyBBUElzIHRoYXQgaW1wb3J0bGliIGV4cG9zZXMgYnkgcHJvdmlkaW5nIGFuCithcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZgorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCAoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgZm9yIHRoZSBpbXBvcnRsaWIgdXNhZ2UsCitQeXRob24gMy42IGFuZCBuZXdlciBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUpLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CisgICAgICAiIiJBbiBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCisgICAgICBhYnNvbHV0ZV9uYW1lID0gaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCisgICAgICB0cnk6CisgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdCisgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgcGFzcworCisgICAgICBwYXRoID0gTm9uZQorICAgICAgaWYgJy4nIGluIGFic29sdXRlX25hbWU6CisgICAgICAgICAgcGFyZW50X25hbWUsIF8sIGNoaWxkX25hbWUgPSBhYnNvbHV0ZV9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBpbXBvcnRfbW9kdWxlKHBhcmVudF9uYW1lKQorICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhhYnNvbHV0ZV9uYW1lLCBwYXRoKQorICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICBlbHNlOgorICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKGYnTm8gbW9kdWxlIG5hbWVkIHthYnNvbHV0ZV9uYW1lIXJ9JykKKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdID0gbW9kdWxlCisgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgY2hpbGRfbmFtZSwgbW9kdWxlKQorICAgICAgcmV0dXJuIG1vZHVsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA2MmEzOTg4Li40MWE3ODRkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjM1LDI0ICsyMzUsNiBAQAogICAgICAgbGlzdGVkIGluIHRoZSBtZXRhY2xhc3MnIGN1c3RvbSA6bWV0aDpgX19kaXJfX2AuCiAKIAotLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVpbmZvKHBhdGgpCi0KLSAgIFJldHVybnMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIGBgTW9kdWxlSW5mbyhuYW1lLCBzdWZmaXgsIG1vZGUsIG1vZHVsZV90eXBlKWBgCi0gICBvZiB2YWx1ZXMgdGhhdCBkZXNjcmliZSBob3cgUHl0aG9uIHdpbGwgaW50ZXJwcmV0IHRoZSBmaWxlIGlkZW50aWZpZWQgYnkKLSAgICpwYXRoKiBpZiBpdCBpcyBhIG1vZHVsZSwgb3IgYGBOb25lYGAgaWYgaXQgd291bGQgbm90IGJlIGlkZW50aWZpZWQgYXMgYQotICAgbW9kdWxlLiAgSW4gdGhhdCB0dXBsZSwgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2l0aG91dCB0aGUgbmFtZSBvZgotICAgYW55IGVuY2xvc2luZyBwYWNrYWdlLCAqc3VmZml4KiBpcyB0aGUgdHJhaWxpbmcgcGFydCBvZiB0aGUgZmlsZSBuYW1lICh3aGljaAotICAgbWF5IG5vdCBiZSBhIGRvdC1kZWxpbWl0ZWQgZXh0ZW5zaW9uKSwgKm1vZGUqIGlzIHRoZSA6ZnVuYzpgb3BlbmAgbW9kZSB0aGF0Ci0gICB3b3VsZCBiZSB1c2VkIChgYCdyJ2BgIG9yIGBgJ3JiJ2BgKSwgYW5kICptb2R1bGVfdHlwZSogaXMgYW4gaW50ZWdlciBnaXZpbmcKLSAgIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUuICAqbW9kdWxlX3R5cGUqIHdpbGwgaGF2ZSBhIHZhbHVlIHdoaWNoIGNhbiBiZQotICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCi0gICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCi0KLQogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCkBAIC0yNjYsOCArMjQ4LDcgQEAKICAgIHN0aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhlCi0gICAgICBkZXByZWNhdGVkIDpmdW5jOmBnZXRtb2R1bGVpbmZvYC4KKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtMzM3LDYgKzMxOCwyNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAorLi4gZnVuY3Rpb246OiBpc2FzeW5jZ2VuZnVuY3Rpb24ob2JqZWN0KQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yYCBmdW5jdGlvbiwKKyAgIGZvciBleGFtcGxlOjoKKworICAgID4+PiBhc3luYyBkZWYgYWdlbigpOgorICAgIC4uLiAgICAgeWllbGQgMQorICAgIC4uLgorICAgID4+PiBpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbihhZ2VuKQorICAgIFRydWUKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gZnVuY3Rpb246OiBpc2FzeW5jZ2VuKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvcmAKKyAgIGNyZWF0ZWQgYnkgYW4gOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3JgIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZnVuY3Rpb246OiBpc3RyYWNlYmFjayhvYmplY3QpCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB0cmFjZWJhY2suCkBAIC02NDYsNiArNjQ4LDE2IEBACiAgICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGFzIGEgc3RyaW5nLiAgVGhlIG5hbWUgbXVzdCBiZSBhIHZhbGlkCiAgICAgICBQeXRob24gaWRlbnRpZmllci4KIAorICAgICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICAgICBDUHl0aG9uIGdlbmVyYXRlcyBpbXBsaWNpdCBwYXJhbWV0ZXIgbmFtZXMgb2YgdGhlIGZvcm0gYGAuMGBgIG9uIHRoZQorICAgICAgICAgY29kZSBvYmplY3RzIHVzZWQgdG8gaW1wbGVtZW50IGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IKKyAgICAgICAgIGV4cHJlc3Npb25zLgorCisgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICAgVGhlc2UgcGFyYW1ldGVyIG5hbWVzIGFyZSBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlIGFzIG5hbWVzIGxpa2UKKyAgICAgICAgICAgIGBgaW1wbGljaXQwYGAuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CiAKICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdApAQCAtODI0LDQ3ICs4MzYsNjUgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRhcmdzcGVjKGZ1bmMpCiAKLSAgIEdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgUHl0aG9uIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLiBBCisgICBHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIFB5dGhvbiBmdW5jdGlvbidzIHBhcmFtZXRlcnMuIEEKICAgIDp0ZXJtOmBuYW1lZCB0dXBsZWAgYGBBcmdTcGVjKGFyZ3MsIHZhcmFyZ3MsIGtleXdvcmRzLCBkZWZhdWx0cylgYCBpcwotICAgcmV0dXJuZWQuICphcmdzKiBpcyBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLiAqdmFyYXJncyogYW5kICprZXl3b3JkcyoKLSAgIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGBgKmBgIGFuZCBgYCoqYGAgYXJndW1lbnRzIG9yIGBgTm9uZWBgLiAqZGVmYXVsdHMqIGlzIGEKKyAgIHJldHVybmVkLiAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBwYXJhbWV0ZXIgbmFtZXMuICp2YXJhcmdzKiBhbmQgKmtleXdvcmRzKgorICAgYXJlIHRoZSBuYW1lcyBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBwYXJhbWV0ZXJzIG9yIGBgTm9uZWBgLiAqZGVmYXVsdHMqIGlzIGEKICAgIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0CiAgICBhcmd1bWVudHM7IGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0CiAgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAotICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgZm9yIGFuIHVwZGF0ZWQgQVBJIHRoYXQgaXMgdXN1YWxseSBhIGRyb3AtaW4KKyAgICAgIHJlcGxhY2VtZW50LCBidXQgYWxzbyBjb3JyZWN0bHkgaGFuZGxlcyBmdW5jdGlvbiBhbm5vdGF0aW9ucyBhbmQKKyAgICAgIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLgorCisgICAgICBBbHRlcm5hdGl2ZWx5LCB1c2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCiAgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCi0gICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKyAgICAgIG1vcmUgc3RydWN0dXJlZCBpbnRyb3NwZWN0aW9uIEFQSSBmb3IgY2FsbGFibGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZnVsbGFyZ3NwZWMoZnVuYykKIAotICAgR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBQeXRob24gZnVuY3Rpb24ncyBhcmd1bWVudHMuICBBCisgICBHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIFB5dGhvbiBmdW5jdGlvbidzIHBhcmFtZXRlcnMuICBBCiAgICA6dGVybTpgbmFtZWQgdHVwbGVgIGlzIHJldHVybmVkOgogCiAgICBgYEZ1bGxBcmdTcGVjKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsCiAgICBhbm5vdGF0aW9ucylgYAogCi0gICAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gICp2YXJhcmdzKiBhbmQgKnZhcmt3KiBhcmUgdGhlIG5hbWVzCi0gICBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqZGVmYXVsdHMqIGlzIGFuICpuKi10dXBsZQotICAgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBsYXN0ICpuKiBhcmd1bWVudHMsIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubwotICAgZGVmYXVsdCBhcmd1bWVudHMuICAqa3dvbmx5YXJncyogaXMgYSBsaXN0IG9mCi0gICBrZXl3b3JkLW9ubHkgYXJndW1lbnQgbmFtZXMuICAqa3dvbmx5ZGVmYXVsdHMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzCi0gICBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuICAqYW5ub3RhdGlvbnMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50Ci0gICBuYW1lcyB0byBhbm5vdGF0aW9ucy4KKyAgICphcmdzKiBpcyBhIGxpc3Qgb2YgdGhlIHBvc2l0aW9uYWwgcGFyYW1ldGVyIG5hbWVzLgorICAgKnZhcmFyZ3MqIGlzIHRoZSBuYW1lIG9mIHRoZSBgYCpgYCBwYXJhbWV0ZXIgb3IgYGBOb25lYGAgaWYgYXJiaXRyYXJ5CisgICBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgbm90IGFjY2VwdGVkLgorICAgKnZhcmt3KiBpcyB0aGUgbmFtZSBvZiB0aGUgYGAqKmBgIHBhcmFtZXRlciBvciBgYE5vbmVgYCBpZiBhcmJpdHJhcnkKKyAgIGtleXdvcmQgYXJndW1lbnRzIGFyZSBub3QgYWNjZXB0ZWQuCisgICAqZGVmYXVsdHMqIGlzIGFuICpuKi10dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgbGFzdCAqbiogcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBvciBgYE5vbmVgYCBpZiB0aGVyZSBhcmUgbm8gc3VjaCBkZWZhdWx0cworICAgZGVmaW5lZC4KKyAgICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlciBuYW1lcy4KKyAgICprd29ubHlkZWZhdWx0cyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgcGFyYW1ldGVyIG5hbWVzIGZyb20gKmt3b25seWFyZ3MqCisgICB0byB0aGUgZGVmYXVsdCB2YWx1ZXMgdXNlZCBpZiBubyBhcmd1bWVudCBpcyBzdXBwbGllZC4KKyAgICphbm5vdGF0aW9ucyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgcGFyYW1ldGVyIG5hbWVzIHRvIGFubm90YXRpb25zLgorICAgVGhlIHNwZWNpYWwga2V5IGBgInJldHVybiJgYCBpcyB1c2VkIHRvIHJlcG9ydCB0aGUgZnVuY3Rpb24gcmV0dXJuIHZhbHVlCisgICBhbm5vdGF0aW9uIChpZiBhbnkpLgogCi0gICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCisgICBOb3RlIHRoYXQgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCBwcm92aWRlIHRoZSByZWNvbW1lbmRlZAorICAgQVBJIGZvciBjYWxsYWJsZSBpbnRyb3NwZWN0aW9uLCBhbmQgc3VwcG9ydCBhZGRpdGlvbmFsIGJlaGF2aW91cnMgKGxpa2UKKyAgIHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMpIHRoYXQgYXJlIHNvbWV0aW1lcyBlbmNvdW50ZXJlZCBpbiBleHRlbnNpb24gbW9kdWxlCisgICBBUElzLiBUaGlzIGZ1bmN0aW9uIGlzIHJldGFpbmVkIHByaW1hcmlseSBmb3IgdXNlIGluIGNvZGUgdGhhdCBuZWVkcyB0bworICAgbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBgYGluc3BlY3RgYCBtb2R1bGUgQVBJLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgb24gOmZ1bmM6YHNpZ25hdHVyZWAsIGJ1dCBzdGlsbCBpZ25vcmVzCiAgICAgICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlcyBhbmQgaW5jbHVkZXMgdGhlIGFscmVhZHkgYm91bmQgZmlyc3QKICAgICAgIHBhcmFtZXRlciBpbiB0aGUgc2lnbmF0dXJlIG91dHB1dCBmb3IgYm91bmQgbWV0aG9kcy4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNQotICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAotICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQotICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyBtZXRob2Qgd2FzIHByZXZpb3VzbHkgZG9jdW1lbnRlZCBhcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICAgICAgOmZ1bmM6YHNpZ25hdHVyZWAgaW4gUHl0aG9uIDMuNSwgYnV0IHRoYXQgZGVjaXNpb24gaGFzIGJlZW4gcmV2ZXJzZWQKKyAgICAgIGluIG9yZGVyIHRvIHJlc3RvcmUgYSBjbGVhcmx5IHN1cHBvcnRlZCBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yCisgICAgICBzaW5nbGUtc291cmNlIFB5dGhvbiAyLzMgY29kZSBtaWdyYXRpbmcgYXdheSBmcm9tIHRoZSBsZWdhY3kKKyAgICAgIDpmdW5jOmBnZXRhcmdzcGVjYCBBUEkuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCkBAIC04ODQsNyArOTE0LDcgQEAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAogICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2Agb3IgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KKyAgIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCiAKICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKICAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4KQEAgLTEyNjQsMjAgKzEyOTQsMjkgQEAKIAogLi4gZGF0YTo6IENPX0NPUk9VVElORQogCi0gICBUaGUgZmxhZyBpcyBzZXQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24sIGkuZS4KLSAgIGEgY29yb3V0aW5lIG9iamVjdCBpcyByZXR1cm5lZCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBleGVjdXRlZC4gIFNlZQotICAgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgorICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgorICAgV2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQgaXQgcmV0dXJucyBhIGNvcm91dGluZSBvYmplY3QuCisgICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZGF0YTo6IENPX0lURVJBQkxFX0NPUk9VVElORQogCi0gICBVc2VkIHRvIHR1cm4gZ2VuZXJhdG9ycyBpbnRvIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzLiAgR2VuZXJhdG9yCi0gICBvYmplY3RzIHdpdGggdGhpcyBmbGFnIGNhbiBiZSB1c2VkIGluIGBgYXdhaXRgYCBleHByZXNzaW9uLCBhbmQgY2FuCi0gICBgYHlpZWxkIGZyb21gYCBjb3JvdXRpbmUgb2JqZWN0cy4gIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisgICBUaGUgZmxhZyBpcyB1c2VkIHRvIHRyYW5zZm9ybSBnZW5lcmF0b3JzIGludG8gZ2VuZXJhdG9yLWJhc2VkCisgICBjb3JvdXRpbmVzLiAgR2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGlzIGZsYWcgY2FuIGJlIHVzZWQgaW4KKyAgIGBgYXdhaXRgYCBleHByZXNzaW9uLCBhbmQgY2FuIGBgeWllbGQgZnJvbWBgIGNvcm91dGluZSBvYmplY3RzLgorICAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKy4uIGRhdGE6OiBDT19BU1lOQ19HRU5FUkFUT1IKKworICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IKKyAgIGZ1bmN0aW9uLiAgV2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQgaXQgcmV0dXJucyBhbgorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBvYmplY3QuICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbm90ZTo6CiAgICBUaGUgZmxhZ3MgYXJlIHNwZWNpZmljIHRvIENQeXRob24sIGFuZCBtYXkgbm90IGJlIGRlZmluZWQgaW4gb3RoZXIKICAgIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuICBGdXJ0aGVybW9yZSwgdGhlIGZsYWdzIGFyZSBhbiBpbXBsZW1lbnRhdGlvbgpAQCAtMTI4Niw3ICsxMzI1LDYgQEAKICAgIGZvciBhbnkgaW50cm9zcGVjdGlvbiBuZWVkcy4KIAogCi0KIC4uIF9pbnNwZWN0LW1vZHVsZS1jbGk6CiAKIENvbW1hbmQgTGluZSBJbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IGRmYzFkZGMuLmIwZDBhOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNTkxLDcgKzU5MSwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IHRlZShpdGVyYWJsZSwgbj0yKQogCi0gICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLiAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKKyAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuCisKKyAgIFRoZSBmb2xsb3dpbmcgUHl0aG9uIGNvZGUgaGVscHMgZXhwbGFpbiB3aGF0ICp0ZWUqIGRvZXMgKGFsdGhvdWdoIHRoZSBhY3R1YWwKKyAgIGltcGxlbWVudGF0aW9uIGlzIG1vcmUgY29tcGxleCBhbmQgdXNlcyBvbmx5IGEgc2luZ2xlIHVuZGVybHlpbmcKKyAgIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUpLgorCisgICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgIGRlZiB0ZWUoaXRlcmFibGUsIG49Mik6CiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IGY0ODc1MzUuLjc2ZTkzNmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKIEJhc2ljIFVzYWdlCiAtLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisuLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMTg3LDggKzE4NywxMSBAQAogICAgOm1ldGg6YGRlZmF1bHRgIG1ldGhvZCB0byBzZXJpYWxpemUgYWRkaXRpb25hbCB0eXBlcyksIHNwZWNpZnkgaXQgd2l0aCB0aGUKICAgICpjbHMqIGt3YXJnOyBvdGhlcndpc2UgOmNsYXNzOmBKU09ORW5jb2RlcmAgaXMgdXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLS4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKworLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTIxMiw3ICsyMTUsNyBAQAogICAgICAgdGhlIG9yaWdpbmFsIG9uZS4gVGhhdCBpcywgYGBsb2FkcyhkdW1wcyh4KSkgIT0geGBgIGlmIHggaGFzIG5vbi1zdHJpbmcKICAgICAgIGtleXMuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorLi4gZnVuY3Rpb246OiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCiAKICAgIERlc2VyaWFsaXplICpmcCogKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uCkBAIC0yNjAsMTAgKzI2MywxNCBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLSAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEKLSAgIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCisuLiBmdW5jdGlvbjo6IGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKworICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgCisgICBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMKKyAgIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KIAogICAgVGhlIG90aGVyIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gOmZ1bmM6YGxvYWRgLCBleGNlcHQKICAgICplbmNvZGluZyogd2hpY2ggaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KQEAgLTI3NCw3ICsyODEsNyBAQAogRW5jb2RlcnMgYW5kIERlY29kZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gY2xhc3M6OiBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCisuLiBjbGFzczo6IEpTT05EZWNvZGVyKCosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogICAgU2ltcGxlIEpTT04gZGVjb2Rlci4KIApAQCAtMzQ0LDYgKzM1MSw5IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKICAgIC4uIG1ldGhvZDo6IGRlY29kZShzKQogCiAgICAgICBSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlCkBAIC0zNjIsNyArMzcyLDcgQEAKICAgICAgIGV4dHJhbmVvdXMgZGF0YSBhdCB0aGUgZW5kLgogCiAKLS4uIGNsYXNzOjogSlNPTkVuY29kZXIoc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCisuLiBjbGFzczo6IEpTT05FbmNvZGVyKCosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQogCiAgICBFeHRlbnNpYmxlIEpTT04gZW5jb2RlciBmb3IgUHl0aG9uIGRhdGEgc3RydWN0dXJlcy4KIApAQCAtNDQzLDYgKzQ1Myw5IEBACiAgICB0aGUgb2JqZWN0IG9yIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gIElmIG5vdCBzcGVjaWZpZWQsIDpleGM6YFR5cGVFcnJvcmAKICAgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdChvKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IDBjMDJkM2QuLjVmYzMyZDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NCw2ICs4NCw5IEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIApAQCAtMTYwLDEyICsxNjMsMjMgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHJlb3BlbklmTmVlZGVkKCkKKworICAgICAgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcworICAgICAgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUgZmlsZSBvcGVuZWQgYWdhaW4sIHR5cGljYWxseSBhcyBhIHByZWN1cnNvciB0bworICAgICAgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAotICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMKLSAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKLSAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2FsbHMgOm1ldGg6YHJlb3BlbklmTmVlZGVkYCB0bworICAgICAgcmVvcGVuIHRoZSBmaWxlIGlmIGl0IGhhcyBjaGFuZ2VkLgogCiAuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgogCkBAIC0yNjgsMTcgKzI4MiwyMSBAQAogICAgWW91IGNhbiB1c2UgdGhlICptYXhCeXRlcyogYW5kICpiYWNrdXBDb3VudCogdmFsdWVzIHRvIGFsbG93IHRoZSBmaWxlIHRvCiAgICA6ZGZuOmByb2xsb3ZlcmAgYXQgYSBwcmVkZXRlcm1pbmVkIHNpemUuIFdoZW4gdGhlIHNpemUgaXMgYWJvdXQgdG8gYmUgZXhjZWVkZWQsCiAgICB0aGUgZmlsZSBpcyBjbG9zZWQgYW5kIGEgbmV3IGZpbGUgaXMgc2lsZW50bHkgb3BlbmVkIGZvciBvdXRwdXQuIFJvbGxvdmVyIG9jY3VycwotICAgd2hlbmV2ZXIgdGhlIGN1cnJlbnQgbG9nIGZpbGUgaXMgbmVhcmx5ICptYXhCeXRlcyogaW4gbGVuZ3RoOyBpZiBlaXRoZXIgb2YKLSAgICptYXhCeXRlcyogb3IgKmJhY2t1cENvdW50KiBpcyB6ZXJvLCByb2xsb3ZlciBuZXZlciBvY2N1cnMuICBJZiAqYmFja3VwQ291bnQqCi0gICBpcyBub24temVybywgdGhlIHN5c3RlbSB3aWxsIHNhdmUgb2xkIGxvZyBmaWxlcyBieSBhcHBlbmRpbmcgdGhlIGV4dGVuc2lvbnMKLSAgICcuMScsICcuMicgZXRjLiwgdG8gdGhlIGZpbGVuYW1lLiBGb3IgZXhhbXBsZSwgd2l0aCBhICpiYWNrdXBDb3VudCogb2YgNSBhbmQKLSAgIGEgYmFzZSBmaWxlIG5hbWUgb2YgOmZpbGU6YGFwcC5sb2dgLCB5b3Ugd291bGQgZ2V0IDpmaWxlOmBhcHAubG9nYCwKKyAgIHdoZW5ldmVyIHRoZSBjdXJyZW50IGxvZyBmaWxlIGlzIG5lYXJseSAqbWF4Qnl0ZXMqIGluIGxlbmd0aDsgYnV0IGlmIGVpdGhlciBvZgorICAgKm1heEJ5dGVzKiBvciAqYmFja3VwQ291bnQqIGlzIHplcm8sIHJvbGxvdmVyIG5ldmVyIG9jY3Vycywgc28geW91IGdlbmVyYWxseSB3YW50CisgICB0byBzZXQgKmJhY2t1cENvdW50KiB0byBhdCBsZWFzdCAxLCBhbmQgaGF2ZSBhIG5vbi16ZXJvICptYXhCeXRlcyouCisgICBXaGVuICpiYWNrdXBDb3VudCogaXMgbm9uLXplcm8sIHRoZSBzeXN0ZW0gd2lsbCBzYXZlIG9sZCBsb2cgZmlsZXMgYnkgYXBwZW5kaW5nCisgICB0aGUgZXh0ZW5zaW9ucyAnLjEnLCAnLjInIGV0Yy4sIHRvIHRoZSBmaWxlbmFtZS4gRm9yIGV4YW1wbGUsIHdpdGggYSAqYmFja3VwQ291bnQqCisgICBvZiA1IGFuZCBhIGJhc2UgZmlsZSBuYW1lIG9mIDpmaWxlOmBhcHAubG9nYCwgeW91IHdvdWxkIGdldCA6ZmlsZTpgYXBwLmxvZ2AsCiAgICA6ZmlsZTpgYXBwLmxvZy4xYCwgOmZpbGU6YGFwcC5sb2cuMmAsIHVwIHRvIDpmaWxlOmBhcHAubG9nLjVgLiBUaGUgZmlsZSBiZWluZwogICAgd3JpdHRlbiB0byBpcyBhbHdheXMgOmZpbGU6YGFwcC5sb2dgLiAgV2hlbiB0aGlzIGZpbGUgaXMgZmlsbGVkLCBpdCBpcyBjbG9zZWQKICAgIGFuZCByZW5hbWVkIHRvIDpmaWxlOmBhcHAubG9nLjFgLCBhbmQgaWYgZmlsZXMgOmZpbGU6YGFwcC5sb2cuMWAsCi0gICA6ZmlsZTpgYXBwLmxvZy4yYCwgZXRjLiAgZXhpc3QsIHRoZW4gdGhleSBhcmUgcmVuYW1lZCB0byA6ZmlsZTpgYXBwLmxvZy4yYCwKLSAgIDpmaWxlOmBhcHAubG9nLjNgIGV0Yy4gIHJlc3BlY3RpdmVseS4KKyAgIDpmaWxlOmBhcHAubG9nLjJgLCBldGMuIGV4aXN0LCB0aGVuIHRoZXkgYXJlIHJlbmFtZWQgdG8gOmZpbGU6YGFwcC5sb2cuMmAsCisgICA6ZmlsZTpgYXBwLmxvZy4zYCBldGMuIHJlc3BlY3RpdmVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCkBAIC0zMTAsMjEgKzMyOCwyNCBAQAogICAgWW91IGNhbiB1c2UgdGhlICp3aGVuKiB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mICppbnRlcnZhbCouIFRoZSBsaXN0IG9mIHBvc3NpYmxlCiAgICB2YWx1ZXMgaXMgYmVsb3cuICBOb3RlIHRoYXQgdGhleSBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLgogCi0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgfAotICAgKz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdNJ2BgICAgICAgICB8IE1pbnV0ZXMgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdXMCctJ1c2J2BgICB8IFdlZWtkYXkgKDA9TW9uZGF5KSAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IFZhbHVlICAgICAgICAgIHwgVHlwZSBvZiBpbnRlcnZhbCAgICAgICAgICAgfCBJZi9ob3cgKmF0VGltZSogaXMgdXNlZCB8CisgICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0gnYGAgICAgICAgIHwgSG91cnMgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgICAgICAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ21pZG5pZ2h0J2BgIHwgUm9sbCBvdmVyIGF0IG1pZG5pZ2h0LCBpZiAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgKmF0VGltZSogbm90IHNwZWNpZmllZCwgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgIHwgZWxzZSBhdCB0aW1lICphdFRpbWUqICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFdoZW4gdXNpbmcgd2Vla2RheS1iYXNlZCByb3RhdGlvbiwgc3BlY2lmeSAnVzAnIGZvciBNb25kYXksICdXMScgZm9yCiAgICBUdWVzZGF5LCBhbmQgc28gb24gdXAgdG8gJ1c2JyBmb3IgU3VuZGF5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBwYXNzZWQgZm9yCkBAIC0zNTIsMTYgKzM3MywzNSBAQAogCiAgICBJZiAqYXRUaW1lKiBpcyBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSBgYGRhdGV0aW1lLnRpbWVgYCBpbnN0YW5jZSB3aGljaAogICAgc3BlY2lmaWVzIHRoZSB0aW1lIG9mIGRheSB3aGVuIHJvbGxvdmVyIG9jY3VycywgZm9yIHRoZSBjYXNlcyB3aGVyZSByb2xsb3ZlcgotICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuCisgICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4gTm90ZSB0aGF0IGluCisgICB0aGVzZSBjYXNlcywgdGhlICphdFRpbWUqIHZhbHVlIGlzIGVmZmVjdGl2ZWx5IHVzZWQgdG8gY29tcHV0ZSB0aGUgKmluaXRpYWwqCisgICByb2xsb3ZlciwgYW5kIHN1YnNlcXVlbnQgcm9sbG92ZXJzIHdvdWxkIGJlIGNhbGN1bGF0ZWQgdmlhIHRoZSBub3JtYWwKKyAgIGludGVydmFsIGNhbGN1bGF0aW9uLgorCisgICAuLiBub3RlOjogQ2FsY3VsYXRpb24gb2YgdGhlIGluaXRpYWwgcm9sbG92ZXIgdGltZSBpcyBkb25lIHdoZW4gdGhlIGhhbmRsZXIKKyAgICAgIGlzIGluaXRpYWxpc2VkLiBDYWxjdWxhdGlvbiBvZiBzdWJzZXF1ZW50IHJvbGxvdmVyIHRpbWVzIGlzIGRvbmUgb25seQorICAgICAgd2hlbiByb2xsb3ZlciBvY2N1cnMsIGFuZCByb2xsb3ZlciBvY2N1cnMgb25seSB3aGVuIGVtaXR0aW5nIG91dHB1dC4gSWYKKyAgICAgIHRoaXMgaXMgbm90IGtlcHQgaW4gbWluZCwgaXQgbWlnaHQgbGVhZCB0byBzb21lIGNvbmZ1c2lvbi4gRm9yIGV4YW1wbGUsCisgICAgICBpZiBhbiBpbnRlcnZhbCBvZiAiZXZlcnkgbWludXRlIiBpcyBzZXQsIHRoYXQgZG9lcyBub3QgbWVhbiB5b3Ugd2lsbAorICAgICAgYWx3YXlzIHNlZSBsb2cgZmlsZXMgd2l0aCB0aW1lcyAoaW4gdGhlIGZpbGVuYW1lKSBzZXBhcmF0ZWQgYnkgYSBtaW51dGU7CisgICAgICBpZiwgZHVyaW5nIGFwcGxpY2F0aW9uIGV4ZWN1dGlvbiwgbG9nZ2luZyBvdXRwdXQgaXMgZ2VuZXJhdGVkIG1vcmUKKyAgICAgIGZyZXF1ZW50bHkgdGhhbiBvbmNlIGEgbWludXRlLCAqdGhlbiogeW91IGNhbiBleHBlY3QgdG8gc2VlIGxvZyBmaWxlcworICAgICAgd2l0aCB0aW1lcyBzZXBhcmF0ZWQgYnkgYSBtaW51dGUuIElmLCBvbiB0aGUgb3RoZXIgaGFuZCwgbG9nZ2luZyBtZXNzYWdlcworICAgICAgYXJlIG9ubHkgb3V0cHV0IG9uY2UgZXZlcnkgZml2ZSBtaW51dGVzIChzYXkpLCB0aGVuIHRoZXJlIHdpbGwgYmUgZ2FwcyBpbgorICAgICAgdGhlIGZpbGUgdGltZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWludXRlcyB3aGVyZSBubyBvdXRwdXQgKGFuZCBoZW5jZSBubworICAgICAgcm9sbG92ZXIpIG9jY3VycmVkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgKmF0VGltZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCiAgICAgICBEb2VzIGEgcm9sbG92ZXIsIGFzIGRlc2NyaWJlZCBhYm92ZS4KIAotCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAogICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBjYXRlcmluZyBmb3Igcm9sbG92ZXIgYXMgZGVzY3JpYmVkIGFib3ZlLgpAQCAtNzk4LDEyICs4MzgsMTggQEAKICAgICAgIG92ZXJyaWRkZW4gdG8gaW1wbGVtZW50IGN1c3RvbSBmbHVzaGluZyBzdHJhdGVnaWVzLgogCiAKLS4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUpCisuLiBjbGFzczo6IE1lbW9yeUhhbmRsZXIoY2FwYWNpdHksIGZsdXNoTGV2ZWw9RVJST1IsIHRhcmdldD1Ob25lLCBmbHVzaE9uQ2xvc2U9VHJ1ZSkKIAogICAgUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBNZW1vcnlIYW5kbGVyYCBjbGFzcy4gVGhlIGluc3RhbmNlIGlzCiAgICBpbml0aWFsaXplZCB3aXRoIGEgYnVmZmVyIHNpemUgb2YgKmNhcGFjaXR5Ki4gSWYgKmZsdXNoTGV2ZWwqIGlzIG5vdCBzcGVjaWZpZWQsCiAgICA6Y29uc3Q6YEVSUk9SYCBpcyB1c2VkLiBJZiBubyAqdGFyZ2V0KiBpcyBzcGVjaWZpZWQsIHRoZSB0YXJnZXQgd2lsbCBuZWVkIHRvIGJlCi0gICBzZXQgdXNpbmcgOm1ldGg6YHNldFRhcmdldGAgYmVmb3JlIHRoaXMgaGFuZGxlciBkb2VzIGFueXRoaW5nIHVzZWZ1bC4KKyAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLiBJZgorICAgKmZsdXNoT25DbG9zZSogaXMgc3BlY2lmaWVkIGFzIGBgRmFsc2VgYCwgdGhlbiB0aGUgYnVmZmVyIGlzICpub3QqIGZsdXNoZWQgd2hlbgorICAgdGhlIGhhbmRsZXIgaXMgY2xvc2VkLiBJZiBub3Qgc3BlY2lmaWVkIG9yIHNwZWNpZmllZCBhcyBgYFRydWVgYCwgdGhlIHByZXZpb3VzCisgICBiZWhhdmlvdXIgb2YgZmx1c2hpbmcgdGhlIGJ1ZmZlciB3aWxsIG9jY3VyIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpmbHVzaE9uQ2xvc2UqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdAppbmRleCA2MWIzYmEzLi41ZWRiMjNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sem1hLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApAQCAtMzksOCArMzksOSBAQAogICAgb2JqZWN0YC4KIAogICAgVGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhCi0gICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcwotICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBvciA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgb2JqZWN0KSwgaW4KKyAgIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QKKyAgIHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgInIiYGAsIGBgInJiImBgLCBgYCJ3ImBgLCBgYCJ3YiJgYCwKICAgIGBgIngiYGAsIGBgInhiImBgLCBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsCkBAIC02NCw2ICs2NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgIngiYGAsIGBgInhiImBgIGFuZCBgYCJ4dCJgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBMWk1BRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgXCosIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKIApAQCAtNzEsOSArNzUsMTAgQEAKIAogICAgQW4gOmNsYXNzOmBMWk1BRmlsZWAgY2FuIHdyYXAgYW4gYWxyZWFkeS1vcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIG9wZXJhdGUKICAgIGRpcmVjdGx5IG9uIGEgbmFtZWQgZmlsZS4gVGhlICpmaWxlbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIGVpdGhlciB0aGUgZmlsZQotICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgIG9yCi0gICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZAotICAgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgorICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgLAorICAgOmNsYXNzOmBieXRlc2Agb3IgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4KKyAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZCBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZQorICAgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgogCiAgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYGAiciJgYCBmb3IgcmVhZGluZyAoZGVmYXVsdCksIGBgInciYGAgZm9yCiAgICBvdmVyd3JpdGluZywgYGAieCJgYCBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlCkBAIC0xMTgsNiArMTIzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIENvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCAzZmRlYTE4Li5kYTJiOGNjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtNDI2LDYgKzQyNiwxNSBAQAogCiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IGUgPSAyLjcxODI4MS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KIAorLi4gZGF0YTo6IHRhdQorCisgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IM+EID0gNi4yODMxODUuLi4sIHRvIGF2YWlsYWJsZSBwcmVjaXNpb24uCisgICBUYXUgaXMgYSBjaXJjbGUgY29uc3RhbnQgZXF1YWwgdG8gMs+ALCB0aGUgcmF0aW8gb2YgYSBjaXJjbGUncyBjaXJjdW1mZXJlbmNlIHRvCisgICBpdHMgcmFkaXVzLiBUbyBsZWFybiBtb3JlIGFib3V0IFRhdSwgY2hlY2sgb3V0IFZpIEhhcnQncyB2aWRlbyBgUGkgaXMgKHN0aWxsKQorICAgV3JvbmcgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9akc3dmhNTVhhZ1E+YF8sIGFuZCBzdGFydCBjZWxlYnJhdGluZworICAgYFRhdSBkYXkgPGh0dHA6Ly90YXVkYXkuY29tLz5gXyBieSBlYXRpbmcgdHdpY2UgYXMgbXVjaCBwaWUhCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogaW5mCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggMmYyOTQ1Zi4uZjQ2YmY2NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTI2NCwxMyArMjY0LDE4IEBACiAgICAuLiBtZXRob2Q6OiB3cml0ZShieXRlcykKIAogICAgICAgV3JpdGUgdGhlIGJ5dGVzIGluICpieXRlcyogaW50byBtZW1vcnkgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlCi0gICAgICBmaWxlIHBvaW50ZXI7IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKLSAgICAgIHdlcmUgd3JpdHRlbi4gSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgorICAgICAgZmlsZSBwb2ludGVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4KKyAgICAgIGBgbGVuKGJ5dGVzKWBgLCBzaW5jZSBpZiB0aGUgd3JpdGUgZmFpbHMsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgICAgcmFpc2VkKS4gIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKKyAgICAgIHdlcmUgd3JpdHRlbi4gIElmIHRoZSBtbWFwIHdhcyBjcmVhdGVkIHdpdGggOmNvbnN0OmBBQ0NFU1NfUkVBRGAsIHRoZW4KICAgICAgIHdyaXRpbmcgdG8gaXQgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaXMgbm93IHJldHVybmVkLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlX2J5dGUoYnl0ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggZDQ1YmMyMC4uOTZkMTQyNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC02NTAsOCArNjUwLDkgQEAKIEZvciBwYXNzaW5nIG1lc3NhZ2VzIG9uZSBjYW4gdXNlIDpmdW5jOmBQaXBlYCAoZm9yIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bwogcHJvY2Vzc2VzKSBvciBhIHF1ZXVlICh3aGljaCBhbGxvd3MgbXVsdGlwbGUgcHJvZHVjZXJzIGFuZCBjb25zdW1lcnMpLgogCi1UaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKLW11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKK1RoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMKK2FyZSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZAogaW50byBQeXRob24gMi41J3MgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MuCkBAIC04ODksOCArODkwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogY3B1X2NvdW50KCkKIAotICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiAgTWF5IHJhaXNlCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4KKworICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisgICBNYXkgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmZ1bmM6YG9zLmNwdV9jb3VudGAKQEAgLTE2NzksNyArMTY4NSw5IEBACiAgICBvZiBwcm9jZXNzZXMuICBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgcmV0dXJuZWQgYnkKICAgIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcmAuCiAKLSAgIEl0IGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2Ygc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCisgICBJdHMgbWV0aG9kcyBjcmVhdGUgYW5kIHJldHVybiA6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AgZm9yIGEKKyAgIG51bWJlciBvZiBjb21tb25seSB1c2VkIGRhdGEgdHlwZXMgdG8gYmUgc3luY2hyb25pemVkIGFjcm9zcyBwcm9jZXNzZXMuCisgICBUaGlzIG5vdGFibHkgaW5jbHVkZXMgc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCiAKICAgIC4uIG1ldGhvZDo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKIApAQCAtMTc0MiwzMSArMTc1MCwxNyBAQAogICAgICAgICAgICAgICAgZGljdChtYXBwaW5nKQogICAgICAgICAgICAgICAgZGljdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgZGljdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgZGljdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKICAgIC4uIG1ldGhvZDo6IGxpc3QoKQogICAgICAgICAgICAgICAgbGlzdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgbGlzdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgbGlzdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBNb2RpZmljYXRpb25zIHRvIG11dGFibGUgdmFsdWVzIG9yIGl0ZW1zIGluIGRpY3QgYW5kIGxpc3QgcHJveGllcyB3aWxsIG5vdAotICAgICAgYmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBtYW5hZ2VyLCBiZWNhdXNlIHRoZSBwcm94eSBoYXMgbm8gd2F5IG9mIGtub3dpbmcKLSAgICAgIHdoZW4gaXRzIHZhbHVlcyBvciBpdGVtcyBhcmUgbW9kaWZpZWQuICBUbyBtb2RpZnkgc3VjaCBhbiBpdGVtLCB5b3UgY2FuCi0gICAgICByZS1hc3NpZ24gdGhlIG1vZGlmaWVkIG9iamVjdCB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKLQotICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQotICAgICAgICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKLSAgICAgICAgIGxwcm94eS5hcHBlbmQoe30pCi0gICAgICAgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgIGQgPSBscHJveHlbMF0KLSAgICAgICAgIGRbJ2EnXSA9IDEKLSAgICAgICAgIGRbJ2InXSA9IDIKLSAgICAgICAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQotICAgICAgICAgIyByZWFzc2lnbmluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKLSAgICAgICAgIGxwcm94eVswXSA9IGQKLQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFNoYXJlZCBvYmplY3RzIGFyZSBjYXBhYmxlIG9mIGJlaW5nIG5lc3RlZC4gIEZvciBleGFtcGxlLCBhIHNoYXJlZAorICAgICAgY29udGFpbmVyIG9iamVjdCBzdWNoIGFzIGEgc2hhcmVkIGxpc3QgY2FuIGNvbnRhaW4gb3RoZXIgc2hhcmVkIG9iamVjdHMKKyAgICAgIHdoaWNoIHdpbGwgYWxsIGJlIG1hbmFnZWQgYW5kIHN5bmNocm9uaXplZCBieSB0aGUgOmNsYXNzOmBTeW5jTWFuYWdlcmAuCiAKIC4uIGNsYXNzOjogTmFtZXNwYWNlCiAKQEAgLTE4NzgsNiArMTg3Miw4IEBACiAgICAgPj4+IHMgPSBtLmdldF9zZXJ2ZXIoKQogICAgID4+PiBzLnNlcnZlX2ZvcmV2ZXIoKQogCisuLiBfbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHM6CisKIFByb3h5IE9iamVjdHMKIH5+fn5+fn5+fn5+fn4KIApAQCAtMTg4Nyw4ICsxODgzLDcgQEAKIAogQSBwcm94eSBvYmplY3QgaGFzIG1ldGhvZHMgd2hpY2ggaW52b2tlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcyBvZiBpdHMgcmVmZXJlbnQKIChhbHRob3VnaCBub3QgZXZlcnkgbWV0aG9kIG9mIHRoZSByZWZlcmVudCB3aWxsIG5lY2Vzc2FyaWx5IGJlIGF2YWlsYWJsZSB0aHJvdWdoCi10aGUgcHJveHkpLiAgQSBwcm94eSBjYW4gdXN1YWxseSBiZSB1c2VkIGluIG1vc3Qgb2YgdGhlIHNhbWUgd2F5cyB0aGF0IGl0cwotcmVmZXJlbnQgY2FuOgordGhlIHByb3h5KS4gIEluIHRoaXMgd2F5LCBhIHByb3h5IGNhbiBiZSB1c2VkIGp1c3QgbGlrZSBpdHMgcmVmZXJlbnQgY2FuOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkwOSw5ICsxOTA0LDkgQEAKIHRoZSBwcm94eS4KIAogQW4gaW1wb3J0YW50IGZlYXR1cmUgb2YgcHJveHkgb2JqZWN0cyBpcyB0aGF0IHRoZXkgYXJlIHBpY2tsYWJsZSBzbyB0aGV5IGNhbiBiZQotcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgTm90ZSwgaG93ZXZlciwgdGhhdCBpZiBhIHByb3h5IGlzIHNlbnQgdG8gdGhlCi1jb3JyZXNwb25kaW5nIG1hbmFnZXIncyBwcm9jZXNzIHRoZW4gdW5waWNrbGluZyBpdCB3aWxsIHByb2R1Y2UgdGhlIHJlZmVyZW50Ci1pdHNlbGYuICBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvbmUgc2hhcmVkIG9iamVjdCBjYW4gY29udGFpbiBhIHNlY29uZDoKK3Bhc3NlZCBiZXR3ZWVuIHByb2Nlc3Nlcy4gIEFzIHN1Y2gsIGEgcmVmZXJlbnQgY2FuIGNvbnRhaW4KKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYC4gIFRoaXMgcGVybWl0cyBuZXN0aW5nIG9mIHRoZXNlIG1hbmFnZWQKK2xpc3RzLCBkaWN0cywgYW5kIG90aGVyIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYDoKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE5MTksMTAgKzE5MTQsNDYgQEAKICAgID4+PiBiID0gbWFuYWdlci5saXN0KCkKICAgID4+PiBhLmFwcGVuZChiKSAgICAgICAgICMgcmVmZXJlbnQgb2YgYSBub3cgY29udGFpbnMgcmVmZXJlbnQgb2YgYgogICAgPj4+IHByaW50KGEsIGIpCi0gICBbW11dIFtdCisgICBbPExpc3RQcm94eSBvYmplY3QsIHR5cGVpZCAnbGlzdCcgYXQgLi4uPl0gW10KICAgID4+PiBiLmFwcGVuZCgnaGVsbG8nKQotICAgPj4+IHByaW50KGEsIGIpCi0gICBbWydoZWxsbyddXSBbJ2hlbGxvJ10KKyAgID4+PiBwcmludChhWzBdLCBiKQorICAgWydoZWxsbyddIFsnaGVsbG8nXQorCitTaW1pbGFybHksIGRpY3QgYW5kIGxpc3QgcHJveGllcyBtYXkgYmUgbmVzdGVkIGluc2lkZSBvbmUgYW5vdGhlcjo6CisKKyAgID4+PiBsX291dGVyID0gbWFuYWdlci5saXN0KFsgbWFuYWdlci5kaWN0KCkgZm9yIGkgaW4gcmFuZ2UoMikgXSkKKyAgID4+PiBkX2ZpcnN0X2lubmVyID0gbF9vdXRlclswXQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2EnXSA9IDEKKyAgID4+PiBkX2ZpcnN0X2lubmVyWydiJ10gPSAyCisgICA+Pj4gbF9vdXRlclsxXVsnYyddID0gMworICAgPj4+IGxfb3V0ZXJbMV1bJ3onXSA9IDI2CisgICA+Pj4gcHJpbnQobF9vdXRlclswXSkKKyAgIHsnYSc6IDEsICdiJzogMn0KKyAgID4+PiBwcmludChsX291dGVyWzFdKQorICAgeydjJzogMywgJ3onOiAyNn0KKworSWYgc3RhbmRhcmQgKG5vbi1wcm94eSkgOmNsYXNzOmBsaXN0YCBvciA6Y2xhc3M6YGRpY3RgIG9iamVjdHMgYXJlIGNvbnRhaW5lZAoraW4gYSByZWZlcmVudCwgbW9kaWZpY2F0aW9ucyB0byB0aG9zZSBtdXRhYmxlIHZhbHVlcyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkCit0aHJvdWdoIHRoZSBtYW5hZ2VyIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZyB3aGVuIHRoZSB2YWx1ZXMKK2NvbnRhaW5lZCB3aXRoaW4gYXJlIG1vZGlmaWVkLiAgSG93ZXZlciwgc3RvcmluZyBhIHZhbHVlIGluIGEgY29udGFpbmVyIHByb3h5Cisod2hpY2ggdHJpZ2dlcnMgYSBgYF9fc2V0aXRlbV9fYGAgb24gdGhlIHByb3h5IG9iamVjdCkgZG9lcyBwcm9wYWdhdGUgdGhyb3VnaAordGhlIG1hbmFnZXIgYW5kIHNvIHRvIGVmZmVjdGl2ZWx5IG1vZGlmeSBzdWNoIGFuIGl0ZW0sIG9uZSBjb3VsZCByZS1hc3NpZ24gdGhlCittb2RpZmllZCB2YWx1ZSB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKKworICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQorICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKKyAgIGxwcm94eS5hcHBlbmQoe30pCisgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKKyAgIGQgPSBscHJveHlbMF0KKyAgIGRbJ2EnXSA9IDEKKyAgIGRbJ2InXSA9IDIKKyAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQorICAgIyB1cGRhdGluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKKyAgIGxwcm94eVswXSA9IGQKKworVGhpcyBhcHByb2FjaCBpcyBwZXJoYXBzIGxlc3MgY29udmVuaWVudCB0aGFuIGVtcGxveWluZyBuZXN0ZWQKKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgbW9zdCB1c2UgY2FzZXMgYnV0IGFsc28KK2RlbW9uc3RyYXRlcyBhIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgc3luY2hyb25pemF0aW9uLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCBiZjBkZmFjLi40MDYwNTRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNjEsNiArNjEsOSBAQAogICAgcGxhdGZvcm1zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB0aGUgZnVuY3Rpb24gOmZ1bmM6YG5vcm1wYXRoYCBhcwogICAgZm9sbG93czogYGBub3JtcGF0aChqb2luKG9zLmdldGN3ZCgpLCBwYXRoKSlgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBiYXNlbmFtZShwYXRoKQogCkBAIC03MSw2ICs3NCw5IEBACiAgICBgYCcvZm9vL2Jhci8nYGAgcmV0dXJucyBgYCdiYXInYGAsIHRoZSA6ZnVuYzpgYmFzZW5hbWVgIGZ1bmN0aW9uIHJldHVybnMgYW4KICAgIGVtcHR5IHN0cmluZyAoYGAnJ2BgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wYXRoKHBhdGhzKQogCkBAIC04Myw2ICs4OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIHNlcXVlbmNlIG9mIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tbW9ucHJlZml4KGxpc3QpCiAKQEAgLTEwNCwxMiArMTEzLDE4IEBACiAgICAgICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQogICAgICAgICAnL3VzcicKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBkaXJuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgcGF0aG5hbWUgKnBhdGgqLiAgVGhpcyBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZgogICAgdGhlIHBhaXIgcmV0dXJuZWQgYnkgcGFzc2luZyAqcGF0aCogdG8gdGhlIGZ1bmN0aW9uIDpmdW5jOmBzcGxpdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhpc3RzKHBhdGgpCiAKQEAgLTEyMyw2ICsxMzgsOSBAQAogICAgICAgKnBhdGgqIGNhbiBub3cgYmUgYW4gaW50ZWdlcjogYGBUcnVlYGAgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYW4KICAgICAgICBvcGVuIGZpbGUgZGVzY3JpcHRvciwgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTEzMCw2ICsxNDgsOSBAQAogICAgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YGV4aXN0c2Agb24gcGxhdGZvcm1zIGxhY2tpbmcKICAgIDpmdW5jOmBvcy5sc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdXNlcihwYXRoKQogCkBAIC0xNTEsNiArMTcyLDkgQEAKICAgIElmIHRoZSBleHBhbnNpb24gZmFpbHMgb3IgaWYgdGhlIHBhdGggZG9lcyBub3QgYmVnaW4gd2l0aCBhIHRpbGRlLCB0aGUgcGF0aCBpcwogICAgcmV0dXJuZWQgdW5jaGFuZ2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4cGFuZHZhcnMocGF0aCkKIApAQCAtMTYyLDYgKzE4Niw5IEBACiAgICBPbiBXaW5kb3dzLCBgYCVuYW1lJWBgIGV4cGFuc2lvbnMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byBgYCRuYW1lYGAgYW5kCiAgICBgYCR7bmFtZX1gYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhdGltZShwYXRoKQogCkBAIC0xODIsNiArMjA5LDkgQEAKICAgIElmIDpmdW5jOmBvcy5zdGF0X2Zsb2F0X3RpbWVzYCByZXR1cm5zIGBgVHJ1ZWBgLCB0aGUgcmVzdWx0IGlzIGEgZmxvYXRpbmcgcG9pbnQKICAgIG51bWJlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRjdGltZShwYXRoKQogCkBAIC0xOTEsMTIgKzIyMSwxOCBAQAogICAgdGhlICA6bW9kOmB0aW1lYCBtb2R1bGUpLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IKICAgIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzaXplKHBhdGgpCiAKICAgIFJldHVybiB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mICpwYXRoKi4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMKICAgIG5vdCBleGlzdCBvciBpcyBpbmFjY2Vzc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNhYnMocGF0aCkKIApAQCAtMjA0LDI0ICsyNDAsMzYgQEAKICAgIGJlZ2lucyB3aXRoIGEgc2xhc2gsIG9uIFdpbmRvd3MgdGhhdCBpdCBiZWdpbnMgd2l0aCBhIChiYWNrKXNsYXNoIGFmdGVyIGNob3BwaW5nCiAgICBvZmYgYSBwb3RlbnRpYWwgZHJpdmUgbGV0dGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZmlsZShwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIGlzIGFuIGV4aXN0aW5nIHJlZ3VsYXIgZmlsZS4gIFRoaXMgZm9sbG93cyBzeW1ib2xpYwogICAgbGlua3MsIHNvIGJvdGggOmZ1bmM6YGlzbGlua2AgYW5kIDpmdW5jOmBpc2ZpbGVgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZGlyKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZGlyYCBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2xpbmsocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYSBkaXJlY3RvcnkgZW50cnkgdGhhdCBpcyBhIHN5bWJvbGljIGxpbmsuCiAgICBBbHdheXMgYGBGYWxzZWBgIGlmIHN5bWJvbGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBQeXRob24gcnVudGltZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc21vdW50KHBhdGgpCiAKQEAgLTIzNyw2ICsyODUsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICBTdXBwb3J0IGZvciBkZXRlY3Rpbmcgbm9uLXJvb3QgbW91bnQgcG9pbnRzIG9uIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogam9pbihwYXRoLCAqcGF0aHMpCiAKQEAgLTI1NSwxMyArMzA2LDIwIEBACiAgICBgYG9zLnBhdGguam9pbigiYzoiLCAiZm9vIilgYCByZXByZXNlbnRzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudAogICAgZGlyZWN0b3J5IG9uIGRyaXZlIDpmaWxlOmBDOmAgKDpmaWxlOmBjOmZvb2ApLCBub3QgOmZpbGU6YGM6XFxmb29gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqcGF0aHMqLgorCiAKIC4uIGZ1bmN0aW9uOjogbm9ybWNhc2UocGF0aCkKIAogICAgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUuICBPbiBVbml4IGFuZCBNYWMgT1MgWCwgdGhpcyByZXR1cm5zIHRoZQogICAgcGF0aCB1bmNoYW5nZWQ7IG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMsIGl0IGNvbnZlcnRzIHRoZSBwYXRoIHRvCiAgICBsb3dlcmNhc2UuICBPbiBXaW5kb3dzLCBpdCBhbHNvIGNvbnZlcnRzIGZvcndhcmQgc2xhc2hlcyB0byBiYWNrd2FyZCBzbGFzaGVzLgotICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KKyAgIFJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSB0eXBlIG9mICpwYXRoKiBpcyBub3QgYGBzdHJgYCBvciBgYGJ5dGVzYGAgKGRpcmVjdGx5CisgICBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAKIC4uIGZ1bmN0aW9uOjogbm9ybXBhdGgocGF0aCkKQEAgLTI3MiwxMiArMzMwLDE4IEBACiAgICB0aGF0IGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzLiAgT24gV2luZG93cywgaXQgY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvCiAgICBiYWNrd2FyZCBzbGFzaGVzLiBUbyBub3JtYWxpemUgY2FzZSwgdXNlIDpmdW5jOmBub3JtY2FzZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVhbHBhdGgocGF0aCkKIAogICAgUmV0dXJuIHRoZSBjYW5vbmljYWwgcGF0aCBvZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCBlbGltaW5hdGluZyBhbnkgc3ltYm9saWMKICAgIGxpbmtzIGVuY291bnRlcmVkIGluIHRoZSBwYXRoIChpZiB0aGV5IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0pLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbHBhdGgocGF0aCwgc3RhcnQ9b3MuY3VyZGlyKQogCkBAIC0yOTAsNiArMzU0LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVmaWxlKHBhdGgxLCBwYXRoMikKIApAQCAtMzA1LDYgKzM3Miw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgV2luZG93cyBub3cgdXNlcyB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyBhbGwgb3RoZXIgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVvcGVuZmlsZShmcDEsIGZwMikKIApAQCAtMzE1LDYgKzM4NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVzdGF0KHN0YXQxLCBzdGF0MikKIApAQCAtMzI4LDYgKzQwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0KHBhdGgpCiAKQEAgLTM0MSw2ICs0MTcsOSBAQAogICAgKGJ1dCB0aGUgc3RyaW5ncyBtYXkgZGlmZmVyKS4gIEFsc28gc2VlIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YGRpcm5hbWVgIGFuZAogICAgOmZ1bmM6YGJhc2VuYW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGRyaXZlKHBhdGgpCiAKQEAgLTM1OSw2ICs0MzgsOSBAQAogICAgYW5kIHNoYXJlLCB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUgZm91cnRoIHNlcGFyYXRvci4KICAgIGUuZy4gYGBzcGxpdGRyaXZlKCIvL2hvc3QvY29tcHV0ZXIvZGlyIilgYCByZXR1cm5zIGBgKCIvL2hvc3QvY29tcHV0ZXIiLCAiL2RpciIpYGAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGV4dChwYXRoKQogCkBAIC0zNjcsNiArNDQ5LDkgQEAKICAgIHBlcmlvZC4gTGVhZGluZyBwZXJpb2RzIG9uIHRoZSBiYXNlbmFtZSBhcmUgIGlnbm9yZWQ7IGBgc3BsaXRleHQoJy5jc2hyYycpYGAKICAgIHJldHVybnMgIGBgKCcuY3NocmMnLCAnJylgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdHVuYyhwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNWE2N2Y5My4uOTg4Y2I3YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtNTcsNyArNTcsNyBAQAogCiAgICBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIGltcG9ydGVkLiAgVGhlIGZvbGxvd2luZwogICAgbmFtZXMgaGF2ZSBjdXJyZW50bHkgYmVlbiByZWdpc3RlcmVkOiBgYCdwb3NpeCdgYCwgYGAnbnQnYGAsCi0gICBgYCdjZSdgYCwgYGAnamF2YSdgYC4KKyAgIGBgJ2phdmEnYGAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgaGFzIGEgZmluZXIgZ3JhbnVsYXJpdHkuICA6ZnVuYzpgb3MudW5hbWVgIGdpdmVzCkBAIC0xNzEsMjMgKzE3MSw2MCBAQAogCiAuLiBmdW5jdGlvbjo6IGZzZW5jb2RlKGZpbGVuYW1lKQogCi0gICBFbmNvZGUgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYAotICAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YGJ5dGVzYCB1bmNoYW5nZWQuCisgICBFbmNvZGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogdG8gdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbgorICAgV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZGVjb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKwogCiAuLiBmdW5jdGlvbjo6IGZzZGVjb2RlKGZpbGVuYW1lKQogCi0gICBEZWNvZGUgKmZpbGVuYW1lKiBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCisgICBEZWNvZGUgdGhlIDp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCAqZmlsZW5hbWUqIGZyb20gdGhlCisgICBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYAorICAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCiAKICAgIDpmdW5jOmBmc2VuY29kZWAgaXMgdGhlIHJldmVyc2UgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgCisgICAgICBpbnRlcmZhY2UuCisKKworLi4gZnVuY3Rpb246OiBmc3BhdGgocGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aC4KKworICAgSWYgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIGlzIHBhc3NlZCBpbiwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgorICAgT3RoZXJ3aXNlIDptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgaXMgY2FsbGVkIGFuZCBpdHMgdmFsdWUgaXMKKyAgIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorICAgSW4gYWxsIG90aGVyIGNhc2VzLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gY2xhc3M6OiBQYXRoTGlrZQorCisgICBBbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIG9iamVjdHMgcmVwcmVzZW50aW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCwKKyAgIGUuZy4gOmNsYXNzOmBwYXRobGliLlB1cmVQYXRoYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGFic3RyYWN0bWV0aG9kOjogX19mc3BhdGhfXygpCisKKyAgICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCisgICAgICBUaGUgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsCisgICAgICB3aXRoIHRoZSBwcmVmZXJlbmNlIGJlaW5nIGZvciA6Y2xhc3M6YHN0cmAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCiAKQEAgLTg5Niw2ICs5MzMsOSBAQAogICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgogICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgb3B0aW9ucyBmb3IgdGhlICpmbGFncyogcGFyYW1ldGVyIHRvIHRoZQogOmZ1bmM6YH5vcy5vcGVuYCBmdW5jdGlvbi4gIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yCiBgYHxgYC4gIFNvbWUgb2YgdGhlbSBhcmUgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgRm9yIGRlc2NyaXB0aW9ucyBvZgpAQCAtMTM5Miw2ICsxNDMyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCosICplZmZlY3RpdmVfaWRzKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBGX09LCiAgICAgICAgICAgUl9PSwpAQCAtMTQxNiw2ICsxNDU5LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCiAgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ0Miw2ICsxNDg4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ4Myw2ICsxNTMyLDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1MDIsNiArMTU1NCw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQogCkBAIC0xNTA5LDYgKzE1NjQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQogCkBAIC0xNTM3LDYgKzE1OTUsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKQEAgLTE1NDcsNiArMTYwOCw4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIC4uIGZ1bmN0aW9uOjogbGNob3duKHBhdGgsIHVpZCwgZ2lkKQogCkBAIC0xNTU2LDYgKzE2MTksOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNTczLDYgKzE2MzksOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKnNyY19kaXJfZmQqLCAqZHN0X2Rpcl9mZCosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0ZGlyKHBhdGg9Jy4nKQogCkBAIC0xNTgwLDggKzE2NDksOSBAQAogICAgKnBhdGgqLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAogICAgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KIAotICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCi0gICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICAqcGF0aCogbWF5IGJlIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLiAgSWYgKnBhdGgqIGlzIG9mIHR5cGUgYGBieXRlc2BgCisgICAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLAorICAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CiAgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE2MDIsNiArMTY3Miw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2MjgsNiArMTcwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNjUyLDYgKzE3MjgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMobmFtZSwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTE2ODUsNiArMTc2NCw5IEBACiAgICAgICBtb2RlIG9mIHRoZSBleGlzdGluZyBkaXJlY3RvcnkuIFNpbmNlIHRoaXMgYmVoYXZpb3Igd2FzIGltcG9zc2libGUgdG8KICAgICAgIGltcGxlbWVudCBzYWZlbHksIGl0IHdhcyByZW1vdmVkIGluIFB5dGhvbiAzLjQuMS4gU2VlIDppc3N1ZTpgMjEwODJgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcwNSw2ICsxNzg3LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rbm9kKHBhdGgsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcyNCw2ICsxODA5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKIApAQCAtMTc2Miw2ICsxODUwLDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogcGF0aGNvbmZfbmFtZXMKIApAQCAtMTc3OSw5ICsxODcwLDEwIEBACiAgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCiAgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAotICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKKyAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggYQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKSwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAogICAgYW5kIHRoZSBjYWxsIG1heSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gSWYgdGhlICpwYXRoKiBpcyBhIGJ5dGVzCi0gICBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KKyAgIG9iamVjdCAoZGlyZWN0IG9yIGluZGlyZWN0bHkpLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YC4KQEAgLTE3OTQsNiArMTg4Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4MTIsNiArMTkwNyw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmVkaXJzKG5hbWUpCiAKQEAgLTE4MjYsNiArMTkyNCw5IEBACiAgICB0aGV5IGFyZSBlbXB0eS4gUmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBsZWFmIGRpcmVjdG9yeSBjb3VsZCBub3QgYmUKICAgIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NDUsNiArMTk0Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xODU4LDYgKzE5NjIsOSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gZmFpbCB3aXRoIHRoZSBuZXcgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWRlIGlmIHlvdSBsYWNrCiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKm9sZCogYW5kICpuZXcqLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NzIsNiArMTk3OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4ODUsMzggKzE5OTUsNTYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzY2FuZGlyKHBhdGg9Jy4nKQogCi0gICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRyaWVzCi0gICBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4gYXJiaXRyYXJ5Ci0gICBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdCBpbmNsdWRlZC4KKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbgorICAgYXJiaXRyYXJ5IG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90CisgICBpbmNsdWRlZC4KIAogICAgVXNpbmcgOmZ1bmM6YHNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YGxpc3RkaXJgIGNhbiBzaWduaWZpY2FudGx5CiAgICBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29kZSB0aGF0IGFsc28gbmVlZHMgZmlsZSB0eXBlIG9yIGZpbGUKLSAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCisgICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcwogICAgaW5mb3JtYXRpb24gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMgaXQgd2hlbiBzY2FubmluZyBhIGRpcmVjdG9yeS4KLSAgIEFsbCA6Y2xhc3M6YERpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAotICAgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQotICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YERpckVudHJ5LnN0YXRgCisgICBBbGwgOmNsYXNzOmBvcy5EaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKKyAgIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKKyAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBvcy5EaXJFbnRyeS5zdGF0YAogICAgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb24gVW5peCBidXQgb25seSByZXF1aXJlcyBvbmUgZm9yCiAgICBzeW1ib2xpYyBsaW5rcyBvbiBXaW5kb3dzLgogCi0gICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgICh1c2UKLSAgIDpmdW5jOmB+b3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBlbmNvZGUgYW5kIGRlY29kZQotICAgOmNsYXNzOmBieXRlc2AgcGF0aHMpLiBPbiBXaW5kb3dzLCAqcGF0aCogbXVzdCBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYC4KLSAgIE9uIGJvdGggc3lzdGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCi0gICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCi0gICB0aGUgc2FtZSB0eXBlIGFzICpwYXRoKi4KKyAgICpwYXRoKiBtYXkgYmUgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuICBJZiAqcGF0aCogaXMgb2YgdHlwZSBgYGJ5dGVzYGAKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksCisgICB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5vcy5EaXJFbnRyeS5uYW1lYCBhbmQgOmF0dHI6YH5vcy5EaXJFbnRyeS5wYXRoYAorICAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgb3MuRGlyRW50cnlgIHdpbGwgYmUgYGBieXRlc2BgOyBpbiBhbGwgb3RoZXIKKyAgIGNpcmN1bXN0YW5jZXMsIHRoZXkgd2lsbCBiZSBvZiB0eXBlIGBgc3RyYGAuCisKKyAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3Igc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBzY2FuZGlyLmNsb3NlKCkKKworICAgICAgQ2xvc2UgdGhlIGl0ZXJhdG9yIGFuZCBmcmVlIGFjcXVpcmVkIHJlc291cmNlcy4KKworICAgICAgVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgb3IgZ2FyYmFnZQorICAgICAgY29sbGVjdGVkLCBvciB3aGVuIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIGl0ZXJhdGluZy4gIEhvd2V2ZXIgaXQKKyAgICAgIGlzIGFkdmlzYWJsZSB0byBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgdXNlIHRoZSA6a2V5d29yZDpgd2l0aGAKKyAgICAgIHN0YXRlbWVudC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YHNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCiAgICB0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKICAgIGBgJy4nYGAuIFRoZSBgYGVudHJ5LmlzX2ZpbGUoKWBgIGNhbGwgd2lsbCBnZW5lcmFsbHkgbm90IG1ha2UgYW4gYWRkaXRpb25hbAogICAgc3lzdGVtIGNhbGw6OgogCi0gICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKLSAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgotICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisgICAgICB3aXRoIG9zLnNjYW5kaXIocGF0aCkgYXMgaXQ6CisgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xOTMyLDYgKzIwNjAsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sIGFuZCB0aGUKKyAgICAgIDpmdW5jOmB+c2NhbmRpci5jbG9zZSgpYCBtZXRob2QuICBJZiBhIDpmdW5jOmBzY2FuZGlyYCBpdGVyYXRvciBpcyBuZWl0aGVyCisgICAgICBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3aWxsIGJlIGVtaXR0ZWQKKyAgICAgIGluIGl0cyBkZXN0cnVjdG9yLgorCisgICAgICBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IERpckVudHJ5CiAKQEAgLTE5NDAsMjcgKzIwNzYsMzAgQEAKIAogICAgOmZ1bmM6YHNjYW5kaXJgIHdpbGwgcHJvdmlkZSBhcyBtdWNoIG9mIHRoaXMgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgd2l0aG91dAogICAgbWFraW5nIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLiBXaGVuIGEgYGBzdGF0KClgYCBvciBgYGxzdGF0KClgYCBzeXN0ZW0gY2FsbAotICAgaXMgbWFkZSwgdGhlIGBgRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgorICAgaXMgbWFkZSwgdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgogCi0gICBgYERpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQorICAgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKICAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcwogICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAogICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAotICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIEJlY2F1c2UgdGhlIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CiAgICBhbHNvIHJhaXNlIDpleGM6YE9TRXJyb3JgLiBJZiB5b3UgbmVlZCB2ZXJ5IGZpbmUtZ3JhaW5lZAogICAgY29udHJvbCBvdmVyIGVycm9ycywgeW91IGNhbiBjYXRjaCA6ZXhjOmBPU0Vycm9yYCB3aGVuIGNhbGxpbmcgb25lIG9mIHRoZQotICAgYGBEaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KKyAgIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCiAKLSAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYERpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CisgICBUbyBiZSBkaXJlY3RseSB1c2FibGUgYXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAsIGBgb3MuRGlyRW50cnlgYAorICAgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCiAKICAgICAgIFRoZSBlbnRyeSdzIGJhc2UgZmlsZW5hbWUsIHJlbGF0aXZlIHRvIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCiAgICAgICBhcmd1bWVudC4KIAotICAgICAgVGhlIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCi0gICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIFRoZSA6YXR0cjpgbmFtZWAgYXR0cmlidXRlIHdpbGwgYmUgYGBieXRlc2BgIGlmIHRoZSA6ZnVuYzpgc2NhbmRpcmAKKyAgICAgICpwYXRoKiBhcmd1bWVudCBpcyBvZiB0eXBlIGBgYnl0ZXNgYCBhbmQgYGBzdHJgYCBvdGhlcndpc2UuICBVc2UKICAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KIAogICAgLi4gYXR0cmlidXRlOjogcGF0aApAQCAtMTk3MCwxNiArMjEwOSwxNyBAQAogICAgICAgYXJndW1lbnQuICBUaGUgcGF0aCBpcyBvbmx5IGFic29sdXRlIGlmIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCiAgICAgICBhcmd1bWVudCB3YXMgYWJzb2x1dGUuCiAKLSAgICAgIFRoZSA6YXR0cjpgcGF0aGAgYXR0cmlidXRlIHdpbGwgYmUgb2YgdGhlIHNhbWUgdHlwZSAoYGBzdHJgYCBvcgotICAgICAgYGBieXRlc2BgKSBhcyB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKiBhcmd1bWVudC4gVXNlCisgICAgICBUaGUgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZSB3aWxsIGJlIGBgYnl0ZXNgYCBpZiB0aGUgOmZ1bmM6YHNjYW5kaXJgCisgICAgICAqcGF0aCogYXJndW1lbnQgaXMgb2YgdHlwZSBgYGJ5dGVzYGAgYW5kIGBgc3RyYGAgb3RoZXJ3aXNlLiAgVXNlCiAgICAgICA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBkZWNvZGUgYnl0ZSBmaWxlbmFtZXMuCiAKICAgIC4uIG1ldGhvZDo6IGlub2RlKCkKIAogICAgICAgUmV0dXJuIHRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGVudHJ5LgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gVXNlIGBgb3Muc3RhdChlbnRyeS5wYXRoLAotICAgICAgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIFVzZQorICAgICAgYGBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZQorICAgICAgaW5mb3JtYXRpb24uCiAKICAgICAgIE9uIHRoZSBmaXJzdCwgdW5jYWNoZWQgY2FsbCwgYSBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGJ1dAogICAgICAgbm90IG9uIFVuaXguCkBAIC0xOTk0LDcgKzIxMzQsNyBAQAogICAgICAgaXMgYSBkaXJlY3RvcnkgKHdpdGhvdXQgZm9sbG93aW5nIHN5bWxpbmtzKTsgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUKICAgICAgIGVudHJ5IGlzIGFueSBvdGhlciBraW5kIG9mIGZpbGUgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgYWxvbmcKICAgICAgIHdpdGggOmZ1bmM6YHN0YXQuU19JU0RJUmAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIApAQCAtMjAxOCw4ICsyMTU4LDggQEAKICAgICAgIGlzIGEgZmlsZSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZSBlbnRyeSBpcwogICAgICAgYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscwotICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscworICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgLgogCiAgICAuLiBtZXRob2Q6OiBpc19zeW1saW5rKCkKIApAQCAtMjAyNyw3ICsyMTY3LDcgQEAKICAgICAgIHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBhbnkga2luZCBvZiBmaWxlLAogICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhbGwKICAgICAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBpbiBtb3N0IGNhc2VzLgpAQCAtMjA1MiwyMyArMjE5MiwyOSBAQAogICAgICAgOmNsYXNzOmBzdGF0X3Jlc3VsdGAgYXJlIGFsd2F5cyBzZXQgdG8gemVyby4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGdldCB0aGVzZSBhdHRyaWJ1dGVzLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBhIG5pY2UgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBzZXZlcmFsIGF0dHJpYnV0ZXMKLSAgIGFuZCBtZXRob2RzIG9mIGBgRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KLSAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lIG1lYW5pbmcsIGFzIGRvIHRoZQotICAgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgIGFuZCBgYHN0YXQoKWBgIG1ldGhvZHMuCisgICBhbmQgbWV0aG9kcyBvZiBgYG9zLkRpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCisgICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZQorICAgbWVhbmluZywgYXMgZG8gdGhlIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYAorICAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOmNsYXNzOmB+b3MuUGF0aExpa2VgIGludGVyZmFjZS4gIEFkZGVkIHN1cHBvcnQKKyAgICAgIGZvciA6Y2xhc3M6YGJ5dGVzYCBwYXRocyBvbiBXaW5kb3dzLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzCi0gICBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCisgICBlaXRoZXIgYSBzdHJpbmcgLS0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYAorICAgaW50ZXJmYWNlIC0tIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAogICAgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKQEAgLTIwOTgsNiArMjI0NCw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgc3BlY2lmeWluZyBhIGZpbGUKICAgICAgIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogc3RhdF9yZXN1bHQKIApAQCAtMjMxOSwxOSArMjQ2OCwyMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSA6Y29uc3Q6YFNUX05PREVWYCwgOmNvbnN0OmBTVF9OT0VYRUNgLCA6Y29uc3Q6YFNUX1NZTkNIUk9OT1VTYCwKICAgICAgIDpjb25zdDpgU1RfTUFORExPQ0tgLCA6Y29uc3Q6YFNUX1dSSVRFYCwgOmNvbnN0OmBTVF9BUFBFTkRgLAogICAgICAgOmNvbnN0OmBTVF9JTU1VVEFCTEVgLCA6Y29uc3Q6YFNUX05PQVRJTUVgLCA6Y29uc3Q6YFNUX05PRElSQVRJTUVgLAogICAgICAgYW5kIDpjb25zdDpgU1RfUkVMQVRJTUVgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZApAQCAtMjQ1Miw2ICsyNjA0LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKICAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHN5bmMoKQogCkBAIC0yNDc2LDYgKzI2MzEsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKQEAgLTI0ODYsNiArMjY0NSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNTIzLDYgKzI2ODUsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMjYxMyw2ICsyNzc4LDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKICAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI2NjksNiArMjgzNyw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC0yNjgwLDEyICsyODUxLDE2IEBACiAuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgotICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKLSAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZnByICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjY5NywyMSArMjg3MiwyOSBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KLSAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KLSAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzIChkaXJlY3RseSBvcgorICAgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0ciwKICAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCiAgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcwogICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMjcyNiw2ICsyOTA5LDkgQEAKICAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKICAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCiAKQEAgLTI4MjcsNiArMzAxMyw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKICAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwpAQCAtMzEzNyw2ICszMzI2LDkgQEAKICAgIDpmdW5jOmBzcGF3bnZlYCBhcmUgbm90IHRocmVhZC1zYWZlIG9uIFdpbmRvd3M7IHdlIGFkdmlzZSB5b3UgdG8gdXNlIHRoZQogICAgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBQX05PV0FJVAogICAgICAgICAgIFBfTk9XQUlUTwpAQCAtMzYyMyw2ICszODE1LDExIEBACiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gUmV0dXJucyBgYE5vbmVgYCBpZiB1bmRldGVybWluZWQuCiAKKyAgIFRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgorICAgdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorICAgYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKKworCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCkBAIC0zNzM4LDM1ICszOTM1LDg5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBfb3MtbWlzY2Z1bmM6CiAKLU1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmFuZG9tIG51bWJlcnMKKy0tLS0tLS0tLS0tLS0tCiAKIAotLi4gZnVuY3Rpb246OiB1cmFuZG9tKG4pCisuLiBmdW5jdGlvbjo6IGdldHJhbmRvbShzaXplLCBmbGFncz0wKQogCi0gICBSZXR1cm4gYSBzdHJpbmcgb2YgKm4qIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCisgICBHZXQgdXAgdG8gKnNpemUqIHJhbmRvbSBieXRlcy4gVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gbGVzcyBieXRlcyB0aGFuCisgICByZXF1ZXN0ZWQuCisKKyAgIFRoZXNlIGJ5dGVzIGNhbiBiZSB1c2VkIHRvIHNlZWQgdXNlci1zcGFjZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMgb3IgZm9yCisgICBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLgorCisgICBgYGdldHJhbmRvbSgpYGAgcmVsaWVzIG9uIGVudHJvcHkgZ2F0aGVyZWQgZnJvbSBkZXZpY2UgZHJpdmVycyBhbmQgb3RoZXIKKyAgIHNvdXJjZXMgb2YgZW52aXJvbm1lbnRhbCBub2lzZS4gVW5uZWNlc3NhcmlseSByZWFkaW5nIGxhcmdlIHF1YW50aXRpZXMgb2YKKyAgIGRhdGEgd2lsbCBoYXZlIGEgbmVnYXRpdmUgaW1wYWN0IG9uICBvdGhlciB1c2VycyAgb2YgdGhlIGBgL2Rldi9yYW5kb21gYCBhbmQKKyAgIGBgL2Rldi91cmFuZG9tYGAgZGV2aWNlcy4KKworICAgVGhlIGZsYWdzIGFyZ3VtZW50IGlzIGEgYml0IG1hc2sgdGhhdCBjYW4gY29udGFpbiB6ZXJvIG9yIG1vcmUgb2YgdGhlCisgICBmb2xsb3dpbmcgdmFsdWVzIE9SZWQgdG9nZXRoZXI6IDpweTpkYXRhOmBvcy5HUk5EX1JBTkRPTWAgYW5kCisgICA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AuCisKKyAgIFNlZSBhbHNvIHRoZSBgTGludXggZ2V0cmFuZG9tKCkgbWFudWFsIHBhZ2UKKyAgIDxodHRwOi8vbWFuNy5vcmcvbGludXgvbWFuLXBhZ2VzL21hbjIvZ2V0cmFuZG9tLjIuaHRtbD5gXy4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCAzLjE3IGFuZCBuZXdlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGZ1bmN0aW9uOjogdXJhbmRvbShzaXplKQorCisgICBSZXR1cm4gYSBzdHJpbmcgb2YgKnNpemUqIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCiAKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyByYW5kb20gYnl0ZXMgZnJvbSBhbiBPUy1zcGVjaWZpYyByYW5kb21uZXNzIHNvdXJjZS4gIFRoZQogICAgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgdW5wcmVkaWN0YWJsZSBlbm91Z2ggZm9yIGNyeXB0b2dyYXBoaWMgYXBwbGljYXRpb25zLAogICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLgogCi0gICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgdXNlZCBpZiBhdmFpbGFibGUgYW5kIHRoZSB1cmFuZG9tCi0gICBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKGBgZ2V0cmFuZG9tKClgYCBkb2VzIG5vdCBibG9jaykuCi0gICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0gdGhpcyB3aWxsIHF1ZXJ5IGBgL2Rldi91cmFuZG9tYGAuIE9uIFdpbmRvd3MsIGl0Ci0gICB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4gIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLAotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIGF2YWlsYWJsZSwgaXQgaXMgdXNlZCBpbgorICAgYmxvY2tpbmcgbW9kZTogYmxvY2sgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZAorICAgKDEyOCBiaXRzIG9mIGVudHJvcHkgYXJlIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4gU2VlIHRoZSA6cGVwOmA1MjRgIGZvcgorICAgdGhlIHJhdGlvbmFsZS4gT24gTGludXgsIHRoZSA6ZnVuYzpgZ2V0cmFuZG9tYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZXQKKyAgIHJhbmRvbSBieXRlcyBpbiBub24tYmxvY2tpbmcgbW9kZSAodXNpbmcgdGhlIDpkYXRhOmBHUk5EX05PTkJMT0NLYCBmbGFnKSBvcgorICAgdG8gcG9sbCB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkLgogCi0gICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgotICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorICAgT24gYSBVbml4LWxpa2Ugc3lzdGVtLCByYW5kb20gYnl0ZXMgYXJlIHJlYWQgZnJvbSB0aGUgYGAvZGV2L3VyYW5kb21gYAorICAgZGV2aWNlLiBJZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBub3QgcmVhZGFibGUsIHRoZQorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgT24gV2luZG93cywgaXQgd2lsbCB1c2UgYGBDcnlwdEdlblJhbmRvbSgpYGAuCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBoaWdoZXIgbGV2ZWwgZnVuY3Rpb25zLiBGb3IgYW4KKyAgICAgIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgcHJvdmlkZWQgYnkgeW91cgorICAgICAgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYuMAorICAgICAgT24gTGludXgsIGBgZ2V0cmFuZG9tKClgYCBpcyBub3cgdXNlZCBpbiBibG9ja2luZyBtb2RlIHRvIGluY3JlYXNlIHRoZQorICAgICAgc2VjdXJpdHkuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIE9uIExpbnV4LCBpZiBgYGdldHJhbmRvbSgpYGAgYmxvY2tzICh0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90Ci0gICAgICBpbml0aWFsaXplZCB5ZXQpLCBmYWxsIGJhY2sgb24gcmVhZGluZyBgYC9kZXYvdXJhbmRvbWBgLgorICAgICAgT24gTGludXgsIGlmIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICAgICAgaXMgbm90IGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBPbiBMaW51eCAzLjE3IGFuZCBuZXdlciwgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIG5vdyB1c2VkCiAgICAgICB3aGVuIGF2YWlsYWJsZS4gIE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgdGhlIEMgYGBnZXRlbnRyb3B5KClgYAogICAgICAgZnVuY3Rpb24gaXMgbm93IHVzZWQuIFRoZXNlIGZ1bmN0aW9ucyBhdm9pZCB0aGUgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgZmlsZQogICAgICAgZGVzY3JpcHRvci4KKworLi4gZGF0YTo6IEdSTkRfTk9OQkxPQ0sKKworICAgQnkgIGRlZmF1bHQsIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi9yYW5kb21gYCwgOmZ1bmM6YGdldHJhbmRvbWAgYmxvY2tzIGlmCisgICBubyByYW5kb20gYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi91cmFuZG9tYGAsIGl0IGJsb2NrcworICAgaWYgdGhlIGVudHJvcHkgcG9vbCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgorCisgICBJZiB0aGUgOnB5OmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcgaXMgc2V0LCB0aGVuIDpmdW5jOmBnZXRyYW5kb21gIGRvZXMgbm90CisgICBibG9jayBpbiB0aGVzZSBjYXNlcywgYnV0IGluc3RlYWQgaW1tZWRpYXRlbHkgcmFpc2VzIDpleGM6YEJsb2NraW5nSU9FcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogR1JORF9SQU5ET00KKworICAgSWYgIHRoaXMgIGJpdCAgaXMgIHNldCwgIHRoZW4gIHJhbmRvbSBieXRlcyBhcmUgZHJhd24gZnJvbSB0aGUKKyAgIGBgL2Rldi9yYW5kb21gYCBwb29sIGluc3RlYWQgb2YgdGhlIGBgL2Rldi91cmFuZG9tYGAgcG9vbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdCBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CmluZGV4IDdiOTBhMWYuLjM0YWIzYjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CkBAIC0zNSwxMiArMzUsNiBAQAogICAgYWNjZXNzaW5nIHRoZSBPUy4gSW4gdGhpcyBjYXNlLCBpbnN0YW50aWF0aW5nIG9uZSBvZiB0aGUgcHVyZSBjbGFzc2VzIG1heSBiZQogICAgdXNlZnVsIHNpbmNlIHRob3NlIHNpbXBseSBkb24ndCBoYXZlIGFueSBPUy1hY2Nlc3Npbmcgb3BlcmF0aW9ucy4KIAotLi4gbm90ZTo6Ci0gICBUaGlzIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLi4gc2VlYWxzbzo6CiAgICA6cGVwOmA0MjhgOiBUaGUgcGF0aGxpYiBtb2R1bGUgLS0gb2JqZWN0LW9yaWVudGVkIGZpbGVzeXN0ZW0gcGF0aHMuCiAKQEAgLTExMSw3ICsxMDUsOCBAQAogICAgICAgUHVyZVBvc2l4UGF0aCgnc2V0dXAucHknKQogCiAgICBFYWNoIGVsZW1lbnQgb2YgKnBhdGhzZWdtZW50cyogY2FuIGJlIGVpdGhlciBhIHN0cmluZyByZXByZXNlbnRpbmcgYQotICAgcGF0aCBzZWdtZW50LCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKKyAgIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlCisgICB3aGljaCByZXR1cm5zIGEgc3RyaW5nLCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKIAogICAgICAgPj4+IFB1cmVQYXRoKCdmb28nLCAnc29tZS9wYXRoJywgJ2JhcicpCiAgICAgICBQdXJlUG9zaXhQYXRoKCdmb28vc29tZS9wYXRoL2JhcicpCkBAIC0xNTIsNiArMTQ3LDEyIEBACiAgICB0byBgYFB1cmVQb3NpeFBhdGgoJ2JhcicpYGAsIHdoaWNoIGlzIHdyb25nIGlmIGBgZm9vYGAgaXMgYSBzeW1ib2xpYyBsaW5rCiAgICB0byBhbm90aGVyIGRpcmVjdG9yeSkKIAorICAgUHVyZSBwYXRoIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UsIGFsbG93aW5nIHRoZW0KKyAgIHRvIGJlIHVzZWQgYW55d2hlcmUgdGhlIGludGVyZmFjZSBpcyBhY2NlcHRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UuCisKIC4uIGNsYXNzOjogUHVyZVBvc2l4UGF0aCgqcGF0aHNlZ21lbnRzKQogCiAgICBBIHN1YmNsYXNzIG9mIDpjbGFzczpgUHVyZVBhdGhgLCB0aGlzIHBhdGggZmxhdm91ciByZXByZXNlbnRzIG5vbi1XaW5kb3dzCkBAIC0xOTksNyArMjAwLDcgQEAKICAgID4+PiBQdXJlV2luZG93c1BhdGgoJ2ZvbycpIDwgUHVyZVBvc2l4UGF0aCgnZm9vJykKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IFB1cmVXaW5kb3dzUGF0aCgpIDwgUHVyZVBvc2l4UGF0aCgpCisgICBUeXBlRXJyb3I6ICc8JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdQdXJlV2luZG93c1BhdGgnIGFuZCAnUHVyZVBvc2l4UGF0aCcKIAogCiBPcGVyYXRvcnMKQEAgLTIxNiw2ICsyMTcsMTQgQEAKICAgID4+PiAnL3VzcicgLyBxCiAgICBQdXJlUG9zaXhQYXRoKCcvdXNyL2JpbicpCiAKK0EgcGF0aCBvYmplY3QgY2FuIGJlIHVzZWQgYW55d2hlcmUgYW4gb2JqZWN0IGltcGxlbWVudGluZyA6Y2xhc3M6YG9zLlBhdGhMaWtlYAoraXMgYWNjZXB0ZWQ6OgorCisgICA+Pj4gaW1wb3J0IG9zCisgICA+Pj4gcCA9IFB1cmVQYXRoKCcvZXRjJykKKyAgID4+PiBvcy5mc3BhdGgocCkKKyAgICcvZXRjJworCiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aCBpcyB0aGUgcmF3IGZpbGVzeXN0ZW0gcGF0aCBpdHNlbGYKIChpbiBuYXRpdmUgZm9ybSwgZS5nLiB3aXRoIGJhY2tzbGFzaGVzIHVuZGVyIFdpbmRvd3MpLCB3aGljaCB5b3UgY2FuCiBwYXNzIHRvIGFueSBmdW5jdGlvbiB0YWtpbmcgYSBmaWxlIHBhdGggYXMgYSBzdHJpbmc6OgpAQCAtOTEwLDcgKzkxOSw3IEBACiAgICB0byBhbiBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeSwgaXQgd2lsbCBiZSB1bmNvbmRpdGlvbmFsbHkgcmVwbGFjZWQuCiAKIAotLi4gbWV0aG9kOjogUGF0aC5yZXNvbHZlKCkKKy4uIG1ldGhvZDo6IFBhdGgucmVzb2x2ZShzdHJpY3Q9RmFsc2UpCiAKICAgIE1ha2UgdGhlIHBhdGggYWJzb2x1dGUsIHJlc29sdmluZyBhbnkgc3ltbGlua3MuICBBIG5ldyBwYXRoIG9iamVjdCBpcwogICAgcmV0dXJuZWQ6OgpAQCAtOTI3LDEwICs5MzYsMTQgQEAKICAgICAgID4+PiBwLnJlc29sdmUoKQogICAgICAgUG9zaXhQYXRoKCcvaG9tZS9hbnRvaW5lL3BhdGhsaWIvc2V0dXAucHknKQogCi0gICBJZiB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYW4KLSAgIGluZmluaXRlIGxvb3AgaXMgZW5jb3VudGVyZWQgYWxvbmcgdGhlIHJlc29sdXRpb24gcGF0aCwKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIHBhdGggZG9lc24ndCBleGlzdCBhbmQgKnN0cmljdCogaXMgYGBUcnVlYGAsIDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYAorICAgaXMgcmFpc2VkLiAgSWYgKnN0cmljdCogaXMgYGBGYWxzZWBgLCB0aGUgcGF0aCBpcyByZXNvbHZlZCBhcyBmYXIgYXMgcG9zc2libGUKKyAgIGFuZCBhbnkgcmVtYWluZGVyIGlzIGFwcGVuZGVkIHdpdGhvdXQgY2hlY2tpbmcgd2hldGhlciBpdCBleGlzdHMuICBJZiBhbgorICAgaW5maW5pdGUgbG9vcCBpcyBlbmNvdW50ZXJlZCBhbG9uZyB0aGUgcmVzb2x1dGlvbiBwYXRoLCA6ZXhjOmBSdW50aW1lRXJyb3JgCisgICBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50LgogCiAuLiBtZXRob2Q6OiBQYXRoLnJnbG9iKHBhdHRlcm4pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BkYi5yc3QgYi9Eb2MvbGlicmFyeS9wZGIucnN0CmluZGV4IGJhOWU1NDcuLjdjMzdiYjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BkYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGRiLnJzdApAQCAtMTQ0LDcgKzE0NCw3IEBACiBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjoKIAogLi4gY2xhc3M6OiBQZGIoY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIFwKLSAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlKQorICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKQogCiAgICA6Y2xhc3M6YFBkYmAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLgogCkBAIC0xNjAsNiArMTYwLDkgQEAKICAgIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBhZ2FpbiBieSBwcmVzc2luZyA6a2JkOmBDdHJsLUNgLiAgSWYgeW91CiAgICB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLgogCisgICBUaGUgKnJlYWRyYyogYXJndW1lbnQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgY29udHJvbHMgd2hldGhlciBQZGIgd2lsbCBsb2FkCisgICAucGRicmMgZmlsZXMgZnJvbSB0aGUgZmlsZXN5c3RlbS4KKwogICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOjoKIAogICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKCkKQEAgLTE3MSw2ICsxNzQsOSBAQAogICAgICAgVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVCBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkKICAgICAgIFBkYi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqcmVhZHJjKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCAwZDY0MTkxLi42ZTg0MzBmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTQ5Miw3ICs0OTIsNyBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX2V4X18oKQogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnRzIHRoZQorICAgSW4gcHJvdG9jb2xzIDIgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgbWV0aG9kIGNhbiBkaWN0YXRlIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuICBUaGUgbWV0aG9kIG11c3QgcmV0dXJuIGEgcGFpcgogICAgYGAoYXJncywga3dhcmdzKWBgIHdoZXJlICphcmdzKiBpcyBhIHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzCkBAIC01MDQsMTUgKzUwNCwyMiBAQAogICAgY2xhc3MgcmVxdWlyZXMga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4gIE90aGVyd2lzZSwgaXQgaXMgcmVjb21tZW5kZWQgZm9yCiAgICBjb21wYXRpYmlsaXR5IHRvIGltcGxlbWVudCA6bWV0aDpgX19nZXRuZXdhcmdzX19gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBub3cgdXNlZCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KKwogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX18oKQogCi0gICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGJ1dAotICAgZm9yIHByb3RvY29scyAyIGFuZCBuZXdlci4gIEl0IG11c3QgcmV0dXJuIGEgdHVwbGUgb2YgYXJndW1lbnRzIGBgYXJnc2BgCi0gICB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuCisgICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gLCBidXQKKyAgIHN1cHBvcnRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudHMuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cworICAgYGBhcmdzYGAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2lsbCBub3QgYmUgY2FsbGVkIGlmCi0gICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzIGRlZmluZWQuCisgICA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZiA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzCisgICBkZWZpbmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQmVmb3JlIFB5dGhvbiAzLjYsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2FzIGNhbGxlZCBpbnN0ZWFkIG9mCisgICAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGluIHByb3RvY29scyAyIGFuZCAzLgogCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2dldHN0YXRlX18oKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCBiOWU3NmY3Li5mYmEwZWE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtMTEsNiArMTEsMTEgQEAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgdGhlIGltcG9ydCBzeXN0ZW0sIGluIHBhcnRpY3VsYXIgcGFja2FnZQogc3VwcG9ydC4KIAorLi4gY2xhc3M6OiBNb2R1bGVJbmZvKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKQorCisgICAgQSBuYW1lZHR1cGxlIHRoYXQgaG9sZHMgYSBicmllZiBzdW1tYXJ5IG9mIGEgbW9kdWxlJ3MgaW5mby4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGV4dGVuZF9wYXRoKHBhdGgsIG5hbWUpCiAKQEAgLTEzOSw3ICsxNDQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJykKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBgYHN5cy5wYXRoYGAuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpAQCAtMTYwLDcgKzE2NSw3IEBACiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgOmNsYXNzOmBNb2R1bGVJbmZvYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KICAgICpwYXRoKiwgb3IsIGlmICpwYXRoKiBpcyBgYE5vbmVgYCwgYWxsIGFjY2Vzc2libGUgbW9kdWxlcy4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0IGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAppbmRleCBmZmFiYzMyLi5kNzJiNjYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKQEAgLTYyLDYgKzYyLDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiBPbmUgZXhjZXB0aW9uIGlzIGRlZmluZWQgYXMgYW4gYXR0cmlidXRlIG9mIHRoZSA6bW9kOmBwb3BsaWJgIG1vZHVsZToKIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggOTI0YmU1YS4uYmQwZmMyZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTYsOCArMTYsOSBAQAogbW9kdWxlLgogCiBUaGUgbW9kdWxlIGltcGxlbWVudHMgdGhyZWUgdHlwZXMgb2YgcXVldWUsIHdoaWNoIGRpZmZlciBvbmx5IGluIHRoZSBvcmRlciBpbgotd2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgRklGTyBxdWV1ZSwgdGhlIGZpcnN0IHRhc2tzIGFkZGVkIGFyZQotdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYSBMSUZPIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcword2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUgdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYQorOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcwogdGhlIGZpcnN0IHJldHJpZXZlZCAob3BlcmF0aW5nIGxpa2UgYSBzdGFjaykuICBXaXRoIGEgcHJpb3JpdHkgcXVldWUsCiB0aGUgZW50cmllcyBhcmUga2VwdCBzb3J0ZWQgKHVzaW5nIHRoZSA6bW9kOmBoZWFwcWAgbW9kdWxlKSBhbmQgdGhlCiBsb3dlc3QgdmFsdWVkIGVudHJ5IGlzIHJldHJpZXZlZCBmaXJzdC4KQEAgLTI5LDE0ICszMCwxNiBAQAogCiAuLiBjbGFzczo6IFF1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgRklGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZS4gICptYXhzaXplKiBpcworICAgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKICAgIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW4gYmUgcGxhY2VkIGluIHRoZSBxdWV1ZS4gIEluc2VydGlvbiB3aWxsCiAgICBibG9jayBvbmNlIHRoaXMgc2l6ZSBoYXMgYmVlbiByZWFjaGVkLCB1bnRpbCBxdWV1ZSBpdGVtcyBhcmUgY29uc3VtZWQuICBJZgogICAgKm1heHNpemUqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KIAogLi4gY2xhc3M6OiBMaWZvUXVldWUobWF4c2l6ZT0wKQogCi0gICBDb25zdHJ1Y3RvciBmb3IgYSBMSUZPIHF1ZXVlLiAgKm1heHNpemUqIGlzIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCisgICBDb25zdHJ1Y3RvciBmb3IgYSA6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCA4YWUyNDJjLi40ZjI1MTU3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQ2LDEwICs0NiwyNCBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuCisgICBzZWN1cml0eSBwdXJwb3Nlcy4gIEZvciBzZWN1cml0eSBvciBjcnlwdG9ncmFwaGljIHVzZXMsIHNlZSB0aGUKKyAgIDptb2Q6YHNlY3JldHNgIG1vZHVsZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIE0uIE1hdHN1bW90byBhbmQgVC4gTmlzaGltdXJhLCAiTWVyc2VubmUgVHdpc3RlcjogQSA2MjMtZGltZW5zaW9uYWxseQorICAgZXF1aWRpc3RyaWJ1dGVkIHVuaWZvcm0gcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IiLCBBQ00gVHJhbnNhY3Rpb25zIG9uCisgICBNb2RlbGluZyBhbmQgQ29tcHV0ZXIgU2ltdWxhdGlvbiBWb2wuIDgsIE5vLiAxLCBKYW51YXJ5IHBwLjMtLTMwIDE5OTguCiAKIAotQm9va2tlZXBpbmcgZnVuY3Rpb25zOgorICAgYENvbXBsZW1lbnRhcnktTXVsdGlwbHktd2l0aC1DYXJyeSByZWNpcGUKKyAgIDxodHRwczovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NzA3Lz5gXyBmb3IgYSBjb21wYXRpYmxlIGFsdGVybmF0aXZlCisgICByYW5kb20gbnVtYmVyIGdlbmVyYXRvciB3aXRoIGEgbG9uZyBwZXJpb2QgYW5kIGNvbXBhcmF0aXZlbHkgc2ltcGxlIHVwZGF0ZQorICAgb3BlcmF0aW9ucy4KKworCitCb29ra2VlcGluZyBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBmdW5jdGlvbjo6IHNlZWQoYT1Ob25lLCB2ZXJzaW9uPTIpCiAKQEAgLTkzLDcgKzEwNyw4IEBACiAgICA6bWV0aDpgcmFuZHJhbmdlYCB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmFuZ2VzLgogCiAKLUZ1bmN0aW9ucyBmb3IgaW50ZWdlcnM6CitGdW5jdGlvbnMgZm9yIGludGVnZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGZ1bmN0aW9uOjogcmFuZHJhbmdlKHN0b3ApCiAgICAgICAgICAgICAgIHJhbmRyYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKQpAQCAtMTE2LDIzICsxMzEsNTUgQEAKICAgIGBgcmFuZHJhbmdlKGEsIGIrMSlgYC4KIAogCi1GdW5jdGlvbnMgZm9yIHNlcXVlbmNlczoKK0Z1bmN0aW9ucyBmb3Igc2VxdWVuY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBmdW5jdGlvbjo6IGNob2ljZShzZXEpCiAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSkKKworICAgUmV0dXJuIGEgKmsqIHNpemVkIGxpc3Qgb2YgZWxlbWVudHMgY2hvc2VuIGZyb20gdGhlICpwb3B1bGF0aW9uKiB3aXRoIHJlcGxhY2VtZW50LgorICAgSWYgdGhlICpwb3B1bGF0aW9uKiBpcyBlbXB0eSwgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgorCisgICBJZiBhICp3ZWlnaHRzKiBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cy4gIEFsdGVybmF0aXZlbHksIGlmIGEgKmN1bV93ZWlnaHRzKiBzZXF1ZW5jZSBpcyBnaXZlbiwgdGhlCisgICBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzIChwZXJoYXBzIGNvbXB1dGVkCisgICB1c2luZyA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgKS4gIEZvciBleGFtcGxlLCB0aGUgcmVsYXRpdmUgd2VpZ2h0cworICAgYGBbMTAsIDUsIDMwLCA1XWBgIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBjdW11bGF0aXZlIHdlaWdodHMKKyAgIGBgWzEwLCAxNSwgNDUsIDUwXWBgLiAgSW50ZXJuYWxseSwgdGhlIHJlbGF0aXZlIHdlaWdodHMgYXJlIGNvbnZlcnRlZCB0bworICAgY3VtdWxhdGl2ZSB3ZWlnaHRzIGJlZm9yZSBtYWtpbmcgc2VsZWN0aW9ucywgc28gc3VwcGx5aW5nIHRoZSBjdW11bGF0aXZlCisgICB3ZWlnaHRzIHNhdmVzIHdvcmsuCisKKyAgIElmIG5laXRoZXIgKndlaWdodHMqIG5vciAqY3VtX3dlaWdodHMqIGFyZSBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUKKyAgIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuICBJZiBhIHdlaWdodHMgc2VxdWVuY2UgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUKKyAgIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgKnBvcHVsYXRpb24qIHNlcXVlbmNlLiAgSXQgaXMgYSA6ZXhjOmBUeXBlRXJyb3JgCisgICB0byBzcGVjaWZ5IGJvdGggKndlaWdodHMqIGFuZCAqY3VtX3dlaWdodHMqLgorCisgICBUaGUgKndlaWdodHMqIG9yICpjdW1fd2VpZ2h0cyogY2FuIHVzZSBhbnkgbnVtZXJpYyB0eXBlIHRoYXQgaW50ZXJvcGVyYXRlcworICAgd2l0aCB0aGUgOmNsYXNzOmBmbG9hdGAgdmFsdWVzIHJldHVybmVkIGJ5IDpmdW5jOmByYW5kb21gICh0aGF0IGluY2x1ZGVzCisgICBpbnRlZ2VycywgZmxvYXRzLCBhbmQgZnJhY3Rpb25zIGJ1dCBleGNsdWRlcyBkZWNpbWFscykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGZ1bmN0aW9uOjogc2h1ZmZsZSh4WywgcmFuZG9tXSkKIAotICAgU2h1ZmZsZSB0aGUgc2VxdWVuY2UgKngqIGluIHBsYWNlLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnJhbmRvbSogaXMgYQotICAgMC1hcmd1bWVudCBmdW5jdGlvbiByZXR1cm5pbmcgYSByYW5kb20gZmxvYXQgaW4gWzAuMCwgMS4wKTsgYnkgZGVmYXVsdCwgdGhpcyBpcwotICAgdGhlIGZ1bmN0aW9uIDpmdW5jOmAucmFuZG9tYC4KKyAgIFNodWZmbGUgdGhlIHNlcXVlbmNlICp4KiBpbiBwbGFjZS4KIAotICAgTm90ZSB0aGF0IGZvciBldmVuIHJhdGhlciBzbWFsbCBgYGxlbih4KWBgLCB0aGUgdG90YWwgbnVtYmVyIG9mIHBlcm11dGF0aW9ucyBvZgotICAgKngqIGlzIGxhcmdlciB0aGFuIHRoZSBwZXJpb2Qgb2YgbW9zdCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnM7IHRoaXMgaW1wbGllcwotICAgdGhhdCBtb3N0IHBlcm11dGF0aW9ucyBvZiBhIGxvbmcgc2VxdWVuY2UgY2FuIG5ldmVyIGJlIGdlbmVyYXRlZC4KKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqcmFuZG9tKiBpcyBhIDAtYXJndW1lbnQgZnVuY3Rpb24gcmV0dXJuaW5nIGEgcmFuZG9tCisgICBmbG9hdCBpbiBbMC4wLCAxLjApOyBieSBkZWZhdWx0LCB0aGlzIGlzIHRoZSBmdW5jdGlvbiA6ZnVuYzpgLnJhbmRvbWAuCisKKyAgIFRvIHNodWZmbGUgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIGFuZCByZXR1cm4gYSBuZXcgc2h1ZmZsZWQgbGlzdCwgdXNlCisgICBgYHNhbXBsZSh4LCBrPWxlbih4KSlgYCBpbnN0ZWFkLgorCisgICBOb3RlIHRoYXQgZXZlbiBmb3Igc21hbGwgYGBsZW4oeClgYCwgdGhlIHRvdGFsIG51bWJlciBvZiBwZXJtdXRhdGlvbnMgb2YgKngqCisgICBjYW4gcXVpY2tseSBncm93IGxhcmdlciB0aGFuIHRoZSBwZXJpb2Qgb2YgbW9zdCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMuCisgICBUaGlzIGltcGxpZXMgdGhhdCBtb3N0IHBlcm11dGF0aW9ucyBvZiBhIGxvbmcgc2VxdWVuY2UgY2FuIG5ldmVyIGJlCisgICBnZW5lcmF0ZWQuICBGb3IgZXhhbXBsZSwgYSBzZXF1ZW5jZSBvZiBsZW5ndGggMjA4MCBpcyB0aGUgbGFyZ2VzdCB0aGF0CisgICBjYW4gZml0IHdpdGhpbiB0aGUgcGVyaW9kIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogCiAKIC4uIGZ1bmN0aW9uOjogc2FtcGxlKHBvcHVsYXRpb24sIGspCkBAIC0xNDksMTMgKzE5NiwxNiBAQAogICAgTWVtYmVycyBvZiB0aGUgcG9wdWxhdGlvbiBuZWVkIG5vdCBiZSA6dGVybTpgaGFzaGFibGVgIG9yIHVuaXF1ZS4gIElmIHRoZSBwb3B1bGF0aW9uCiAgICBjb250YWlucyByZXBlYXRzLCB0aGVuIGVhY2ggb2NjdXJyZW5jZSBpcyBhIHBvc3NpYmxlIHNlbGVjdGlvbiBpbiB0aGUgc2FtcGxlLgogCi0gICBUbyBjaG9vc2UgYSBzYW1wbGUgZnJvbSBhIHJhbmdlIG9mIGludGVnZXJzLCB1c2UgYW4gOmZ1bmM6YHJhbmdlYCBvYmplY3QgYXMgYW4KKyAgIFRvIGNob29zZSBhIHNhbXBsZSBmcm9tIGEgcmFuZ2Ugb2YgaW50ZWdlcnMsIHVzZSBhIDpmdW5jOmByYW5nZWAgb2JqZWN0IGFzIGFuCiAgICBhcmd1bWVudC4gIFRoaXMgaXMgZXNwZWNpYWxseSBmYXN0IGFuZCBzcGFjZSBlZmZpY2llbnQgZm9yIHNhbXBsaW5nIGZyb20gYSBsYXJnZQotICAgcG9wdWxhdGlvbjogIGBgc2FtcGxlKHJhbmdlKDEwMDAwMDAwKSwgNjApYGAuCisgICBwb3B1bGF0aW9uOiAgYGBzYW1wbGUocmFuZ2UoMTAwMDAwMDApLCBrPTYwKWBgLgogCiAgICBJZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBvcHVsYXRpb24gc2l6ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgaXMgcmFpc2VkLgogCitSZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdlbmVyYXRlIHNwZWNpZmljIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMuIEZ1bmN0aW9uCiBwYXJhbWV0ZXJzIGFyZSBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbidzCiBlcXVhdGlvbiwgYXMgdXNlZCBpbiBjb21tb24gbWF0aGVtYXRpY2FsIHByYWN0aWNlOyBtb3N0IG9mIHRoZXNlIGVxdWF0aW9ucyBjYW4KQEAgLTI1MCw3ICszMDAsOCBAQAogICAgcGFyYW1ldGVyLgogCiAKLUFsdGVybmF0aXZlIEdlbmVyYXRvcjoKK0FsdGVybmF0aXZlIEdlbmVyYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU3lzdGVtUmFuZG9tKFtzZWVkXSkKIApAQCAtMjYyLDE5ICszMTMsNiBAQAogICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgY2FsbGVkLgogCiAKLS4uIHNlZWFsc286OgotCi0gICBNLiBNYXRzdW1vdG8gYW5kIFQuIE5pc2hpbXVyYSwgIk1lcnNlbm5lIFR3aXN0ZXI6IEEgNjIzLWRpbWVuc2lvbmFsbHkKLSAgIGVxdWlkaXN0cmlidXRlZCB1bmlmb3JtIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIiwgQUNNIFRyYW5zYWN0aW9ucyBvbgotICAgTW9kZWxpbmcgYW5kIENvbXB1dGVyIFNpbXVsYXRpb24gVm9sLiA4LCBOby4gMSwgSmFudWFyeSBwcC4zLS0zMCAxOTk4LgotCi0KLSAgIGBDb21wbGVtZW50YXJ5LU11bHRpcGx5LXdpdGgtQ2FycnkgcmVjaXBlCi0gICA8aHR0cHM6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjcwNy8+YF8gZm9yIGEgY29tcGF0aWJsZSBhbHRlcm5hdGl2ZQotICAgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Igd2l0aCBhIGxvbmcgcGVyaW9kIGFuZCBjb21wYXJhdGl2ZWx5IHNpbXBsZSB1cGRhdGUKLSAgIG9wZXJhdGlvbnMuCi0KLQogTm90ZXMgb24gUmVwcm9kdWNpYmlsaXR5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjk2LDUzICszMzQsMTQ2IEBACiBFeGFtcGxlcyBhbmQgUmVjaXBlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQmFzaWMgdXNhZ2U6OgorQmFzaWMgZXhhbXBsZXM6OgogCi0gICA+Pj4gcmFuZG9tLnJhbmRvbSgpICAgICAgICAgICAgICAgICAgICAgICMgUmFuZG9tIGZsb2F0IHgsIDAuMCA8PSB4IDwgMS4wCisgICA+Pj4gcmFuZG9tKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmFuZG9tIGZsb2F0OiAgMC4wIDw9IHggPCAxLjAKICAgIDAuMzc0NDQ4ODcxNzU2NDY2NDYKIAotICAgPj4+IHJhbmRvbS51bmlmb3JtKDEsIDEwKSAgICAgICAgICAgICAgICAjIFJhbmRvbSBmbG9hdCB4LCAxLjAgPD0geCA8IDEwLjAKLSAgIDEuMTgwMDE0NjA3MzExNzUyMworICAgPj4+IHVuaWZvcm0oMi41LCAxMC4wKSAgICAgICAgICAgICAgICAgICAjIFJhbmRvbSBmbG9hdDogIDIuNSA8PSB4IDwgMTAuMAorICAgMy4xODAwMTQ2MDczMTE3NTIzCiAKLSAgID4+PiByYW5kb20ucmFuZHJhbmdlKDEwKSAgICAgICAgICAgICAgICAgIyBJbnRlZ2VyIGZyb20gMCB0byA5CisgICA+Pj4gZXhwb3ZhcmlhdGUoMSAvIDUpICAgICAgICAgICAgICAgICAgICMgSW50ZXJ2YWwgYmV0d2VlbiBhcnJpdmFscyBhdmVyYWdpbmcgNSBzZWNvbmRzCisgICA1LjE0ODk1NzU3MTg2NTAzMQorCisgICA+Pj4gcmFuZHJhbmdlKDEwKSAgICAgICAgICAgICAgICAgICAgICAgICMgSW50ZWdlciBmcm9tIDAgdG8gOSBpbmNsdXNpdmUKICAgIDcKIAotICAgPj4+IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTAxLCAyKSAgICAgICAgICAjIEV2ZW4gaW50ZWdlciBmcm9tIDAgdG8gMTAwCisgICA+Pj4gcmFuZHJhbmdlKDAsIDEwMSwgMikgICAgICAgICAgICAgICAgICMgRXZlbiBpbnRlZ2VyIGZyb20gMCB0byAxMDAgaW5jbHVzaXZlCiAgICAyNgogCi0gICA+Pj4gcmFuZG9tLmNob2ljZSgnYWJjZGVmZ2hpaicpICAgICAgICAgICMgU2luZ2xlIHJhbmRvbSBlbGVtZW50Ci0gICAnYycKKyAgID4+PiBjaG9pY2UoWyd3aW4nLCAnbG9zZScsICdkcmF3J10pICAgICAgIyBTaW5nbGUgcmFuZG9tIGVsZW1lbnQgZnJvbSBhIHNlcXVlbmNlCisgICAnZHJhdycKIAotICAgPj4+IGl0ZW1zID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCi0gICA+Pj4gcmFuZG9tLnNodWZmbGUoaXRlbXMpCi0gICA+Pj4gaXRlbXMKLSAgIFs3LCAzLCAyLCA1LCA2LCA0LCAxXQorICAgPj4+IGRlY2sgPSAnYWNlIHR3byB0aHJlZSBmb3VyJy5zcGxpdCgpCisgICA+Pj4gc2h1ZmZsZShkZWNrKSAgICAgICAgICAgICAgICAgICAgICAgICMgU2h1ZmZsZSBhIGxpc3QKKyAgID4+PiBkZWNrCisgICBbJ2ZvdXInLCAndHdvJywgJ2FjZScsICd0aHJlZSddCiAKLSAgID4+PiByYW5kb20uc2FtcGxlKFsxLCAyLCAzLCA0LCA1XSwgIDMpICAgIyBUaHJlZSBzYW1wbGVzIHdpdGhvdXQgcmVwbGFjZW1lbnQKLSAgIFs0LCAxLCA1XQorICAgPj4+IHNhbXBsZShbMTAsIDIwLCAzMCwgNDAsIDUwXSwgaz00KSAgICAjIEZvdXIgc2FtcGxlcyB3aXRob3V0IHJlcGxhY2VtZW50CisgICBbNDAsIDEwLCA1MCwgMzBdCiAKLUEgY29tbW9uIHRhc2sgaXMgdG8gbWFrZSBhIDpmdW5jOmByYW5kb20uY2hvaWNlYCB3aXRoIHdlaWdodGVkIHByb2JhYmlsaXRpZXMuCitTaW11bGF0aW9uczo6CiAKLUlmIHRoZSB3ZWlnaHRzIGFyZSBzbWFsbCBpbnRlZ2VyIHJhdGlvcywgYSBzaW1wbGUgdGVjaG5pcXVlIGlzIHRvIGJ1aWxkIGEgc2FtcGxlCi1wb3B1bGF0aW9uIHdpdGggcmVwZWF0czo6CisgICA+Pj4gIyBTaXggcm91bGV0dGUgd2hlZWwgc3BpbnMgKHdlaWdodGVkIHNhbXBsaW5nIHdpdGggcmVwbGFjZW1lbnQpCisgICA+Pj4gY2hvaWNlcyhbJ3JlZCcsICdibGFjaycsICdncmVlbiddLCBbMTgsIDE4LCAyXSwgaz02KQorICAgWydyZWQnLCAnZ3JlZW4nLCAnYmxhY2snLCAnYmxhY2snLCAncmVkJywgJ2JsYWNrJ10KIAotICAgID4+PiB3ZWlnaHRlZF9jaG9pY2VzID0gWygnUmVkJywgMyksICgnQmx1ZScsIDIpLCAoJ1llbGxvdycsIDEpLCAoJ0dyZWVuJywgNCldCi0gICAgPj4+IHBvcHVsYXRpb24gPSBbdmFsIGZvciB2YWwsIGNudCBpbiB3ZWlnaHRlZF9jaG9pY2VzIGZvciBpIGluIHJhbmdlKGNudCldCi0gICAgPj4+IHBvcHVsYXRpb24KLSAgICBbJ1JlZCcsICdSZWQnLCAnUmVkJywgJ0JsdWUnLCAnQmx1ZScsICdZZWxsb3cnLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nXQorICAgPj4+ICMgRGVhbCAyMCBjYXJkcyB3aXRob3V0IHJlcGxhY2VtZW50IGZyb20gYSBkZWNrIG9mIDUyIHBsYXlpbmcgY2FyZHMKKyAgID4+PiAjIGFuZCBkZXRlcm1pbmUgdGhlIHByb3BvcnRpb24gb2YgY2FyZHMgd2l0aCBhIHRlbi12YWx1ZQorICAgPj4+ICMgKGEgdGVuLCBqYWNrLCBxdWVlbiwgb3Iga2luZykuCisgICA+Pj4gZGVjayA9IGNvbGxlY3Rpb25zLkNvdW50ZXIodGVucz0xNiwgbG93X2NhcmRzPTM2KQorICAgPj4+IHNlZW4gPSBzYW1wbGUobGlzdChkZWNrLmVsZW1lbnRzKCkpLCBrPTIwKQorICAgPj4+IHNlZW4uY291bnQoJ3RlbnMnKSAvIDIwCisgICAwLjE1CiAKLSAgICA+Pj4gcmFuZG9tLmNob2ljZShwb3B1bGF0aW9uKQotICAgICdHcmVlbicKKyAgID4+PiAjIEVzdGltYXRlIHRoZSBwcm9iYWJpbGl0eSBvZiBnZXR0aW5nIDUgb3IgbW9yZSBoZWFkcyBmcm9tIDcgc3BpbnMKKyAgID4+PiAjIG9mIGEgYmlhc2VkIGNvaW4gdGhhdCBzZXR0bGVzIG9uIGhlYWRzIDYwJSBvZiB0aGUgdGltZS4KKyAgID4+PiB0cmlhbCA9IGxhbWJkYTogY2hvaWNlcygnSFQnLCBjdW1fd2VpZ2h0cz0oMC42MCwgMS4wMCksIGs9NykuY291bnQoJ0gnKSA+PSA1CisgICA+Pj4gc3VtKHRyaWFsKCkgZm9yIGkgaW4gcmFuZ2UoMTAwMDApKSAvIDEwMDAwCisgICAwLjQxNjkKIAotQSBtb3JlIGdlbmVyYWwgYXBwcm9hY2ggaXMgdG8gYXJyYW5nZSB0aGUgd2VpZ2h0cyBpbiBhIGN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uCi13aXRoIDpmdW5jOmBpdGVydG9vbHMuYWNjdW11bGF0ZWAsIGFuZCB0aGVuIGxvY2F0ZSB0aGUgcmFuZG9tIHZhbHVlIHdpdGgKLTpmdW5jOmBiaXNlY3QuYmlzZWN0YDo6CisgICA+Pj4gIyBQcm9iYWJpbGl0eSBvZiB0aGUgbWVkaWFuIG9mIDUgc2FtcGxlcyBiZWluZyBpbiBtaWRkbGUgdHdvIHF1YXJ0aWxlcworICAgPj4+IHRyaWFsID0gbGFtYmRhIDogMjUwMCA8PSBzb3J0ZWQoY2hvaWNlcyhyYW5nZSgxMDAwMCksIGs9NSkpWzJdICA8IDc1MDAKKyAgID4+PiBzdW0odHJpYWwoKSBmb3IgaSBpbiByYW5nZSgxMDAwMCkpIC8gMTAwMDAKKyAgIDAuNzk1OAogCi0gICAgPj4+IGNob2ljZXMsIHdlaWdodHMgPSB6aXAoKndlaWdodGVkX2Nob2ljZXMpCi0gICAgPj4+IGN1bWRpc3QgPSBsaXN0KGl0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQotICAgID4+PiBjdW1kaXN0ICAgICAgICAgICAgIyBbMywgMysyLCAzKzIrMSwgMysyKzErNF0KLSAgICBbMywgNSwgNiwgMTBdCitFeGFtcGxlIG9mIGBzdGF0aXN0aWNhbCBib290c3RyYXBwaW5nCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQm9vdHN0cmFwcGluZ18oc3RhdGlzdGljcyk+YF8gdXNpbmcgcmVzYW1wbGluZword2l0aCByZXBsYWNlbWVudCB0byBlc3RpbWF0ZSBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBtZWFuIG9mIGEgc2FtcGxlIG9mCitzaXplIGZpdmU6OgogCi0gICAgPj4+IHggPSByYW5kb20ucmFuZG9tKCkgKiBjdW1kaXN0Wy0xXQotICAgID4+PiBjaG9pY2VzW2Jpc2VjdC5iaXNlY3QoY3VtZGlzdCwgeCldCi0gICAgJ0JsdWUnCisgICAjIGh0dHA6Ly9zdGF0aXN0aWNzLmFib3V0LmNvbS9vZC9BcHBsaWNhdGlvbnMvYS9FeGFtcGxlLU9mLUJvb3RzdHJhcHBpbmcuaHRtCisgICBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKyAgIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VzCisKKyAgIGRhdGEgPSAxLCAyLCA0LCA0LCAxMAorICAgbWVhbnMgPSBzb3J0ZWQobWVhbihjaG9pY2VzKGRhdGEsIGs9NSkpIGZvciBpIGluIHJhbmdlKDIwKSkKKyAgIHByaW50KGYnVGhlIHNhbXBsZSBtZWFuIG9mIHttZWFuKGRhdGEpOi4xZn0gaGFzIGEgOTAlIGNvbmZpZGVuY2UgJworICAgICAgICAgZidpbnRlcnZhbCBmcm9tIHttZWFuc1sxXTouMWZ9IHRvIHttZWFuc1stMl06LjFmfScpCisKK0V4YW1wbGUgb2YgYSBgcmVzYW1wbGluZyBwZXJtdXRhdGlvbiB0ZXN0Cis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzYW1wbGluZ18oc3RhdGlzdGljcykjUGVybXV0YXRpb25fdGVzdHM+YF8KK3RvIGRldGVybWluZSB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9yIGBwLXZhbHVlCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUC12YWx1ZT5gXyBvZiBhbiBvYnNlcnZlZCBkaWZmZXJlbmNlCitiZXR3ZWVuIHRoZSBlZmZlY3RzIG9mIGEgZHJ1ZyB2ZXJzdXMgYSBwbGFjZWJvOjoKKworICAgICMgRXhhbXBsZSBmcm9tICJTdGF0aXN0aWNzIGlzIEVhc3kiIGJ5IERlbm5pcyBTaGFzaGEgYW5kIE1hbmRhIFdpbHNvbgorICAgIGZyb20gc3RhdGlzdGljcyBpbXBvcnQgbWVhbgorICAgIGZyb20gcmFuZG9tIGltcG9ydCBzaHVmZmxlCisKKyAgICBkcnVnID0gWzU0LCA3MywgNTMsIDcwLCA3MywgNjgsIDUyLCA2NSwgNjVdCisgICAgcGxhY2VibyA9IFs1NCwgNTEsIDU4LCA0NCwgNTUsIDUyLCA0MiwgNDcsIDU4LCA0Nl0KKyAgICBvYnNlcnZlZF9kaWZmID0gbWVhbihkcnVnKSAtIG1lYW4ocGxhY2VibykKKworICAgIG4gPSAxMDAwMAorICAgIGNvdW50ID0gMAorICAgIGNvbWJpbmVkID0gZHJ1ZyArIHBsYWNlYm8KKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgc2h1ZmZsZShjb21iaW5lZCkKKyAgICAgICAgbmV3X2RpZmYgPSBtZWFuKGNvbWJpbmVkWzpsZW4oZHJ1ZyldKSAtIG1lYW4oY29tYmluZWRbbGVuKGRydWcpOl0pCisgICAgICAgIGNvdW50ICs9IChuZXdfZGlmZiA+PSBvYnNlcnZlZF9kaWZmKQorCisgICAgcHJpbnQoZid7bn0gbGFiZWwgcmVzaHVmZmxpbmdzIHByb2R1Y2VkIG9ubHkge2NvdW50fSBpbnN0YW5jZXMgd2l0aCBhIGRpZmZlcmVuY2UnKQorICAgIHByaW50KGYnYXQgbGVhc3QgYXMgZXh0cmVtZSBhcyB0aGUgb2JzZXJ2ZWQgZGlmZmVyZW5jZSBvZiB7b2JzZXJ2ZWRfZGlmZjouMWZ9LicpCisgICAgcHJpbnQoZidUaGUgb25lLXNpZGVkIHAtdmFsdWUgb2Yge2NvdW50IC8gbjouNGZ9IGxlYWRzIHVzIHRvIHJlamVjdCB0aGUgbnVsbCcpCisgICAgcHJpbnQoZidoeXBvdGhlc2lzIHRoYXQgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBkcnVnIGFuZCB0aGUgcGxhY2Viby4nKQorCitTaW11bGF0aW9uIG9mIGFycml2YWwgdGltZXMgYW5kIHNlcnZpY2UgZGVsaXZlcmllcyBpbiBhIHNpbmdsZSBzZXJ2ZXIgcXVldWU6OgorCisgICAgZnJvbSByYW5kb20gaW1wb3J0IGV4cG92YXJpYXRlLCBnYXVzcworICAgIGZyb20gc3RhdGlzdGljcyBpbXBvcnQgbWVhbiwgbWVkaWFuLCBzdGRldgorCisgICAgYXZlcmFnZV9hcnJpdmFsX2ludGVydmFsID0gNS42CisgICAgYXZlcmFnZV9zZXJ2aWNlX3RpbWUgPSA1LjAKKyAgICBzdGRldl9zZXJ2aWNlX3RpbWUgPSAwLjUKKworICAgIG51bV93YWl0aW5nID0gMAorICAgIGFycml2YWxzID0gW10KKyAgICBzdGFydHMgPSBbXQorICAgIGFycml2YWwgPSBzZXJ2aWNlX2VuZCA9IDAuMAorICAgIGZvciBpIGluIHJhbmdlKDIwMDAwKToKKyAgICAgICAgaWYgYXJyaXZhbCA8PSBzZXJ2aWNlX2VuZDoKKyAgICAgICAgICAgIG51bV93YWl0aW5nICs9IDEKKyAgICAgICAgICAgIGFycml2YWwgKz0gZXhwb3ZhcmlhdGUoMS4wIC8gYXZlcmFnZV9hcnJpdmFsX2ludGVydmFsKQorICAgICAgICAgICAgYXJyaXZhbHMuYXBwZW5kKGFycml2YWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBudW1fd2FpdGluZyAtPSAxCisgICAgICAgICAgICBzZXJ2aWNlX3N0YXJ0ID0gc2VydmljZV9lbmQgaWYgbnVtX3dhaXRpbmcgZWxzZSBhcnJpdmFsCisgICAgICAgICAgICBzZXJ2aWNlX3RpbWUgPSBnYXVzcyhhdmVyYWdlX3NlcnZpY2VfdGltZSwgc3RkZXZfc2VydmljZV90aW1lKQorICAgICAgICAgICAgc2VydmljZV9lbmQgPSBzZXJ2aWNlX3N0YXJ0ICsgc2VydmljZV90aW1lCisgICAgICAgICAgICBzdGFydHMuYXBwZW5kKHNlcnZpY2Vfc3RhcnQpCisKKyAgICB3YWl0cyA9IFtzdGFydCAtIGFycml2YWwgZm9yIGFycml2YWwsIHN0YXJ0IGluIHppcChhcnJpdmFscywgc3RhcnRzKV0KKyAgICBwcmludChmJ01lYW4gd2FpdDoge21lYW4od2FpdHMpOi4xZn0uICBTdGRldiB3YWl0OiB7c3RkZXYod2FpdHMpOi4xZn0uJykKKyAgICBwcmludChmJ01lZGlhbiB3YWl0OiB7bWVkaWFuKHdhaXRzKTouMWZ9LiAgTWF4IHdhaXQ6IHttYXgod2FpdHMpOi4xZn0uJykKKworLi4gc2VlYWxzbzo6CisKKyAgIGBTdGF0aXN0aWNzIGZvciBIYWNrZXJzIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUlxOUR6TjZtdllBPmBfCisgICBhIHZpZGVvIHR1dG9yaWFsIGJ5CisgICBgSmFrZSBWYW5kZXJwbGFzIDxodHRwczovL3VzLnB5Y29uLm9yZy8yMDE2L3NwZWFrZXIvcHJvZmlsZS8yOTUvPmBfCisgICBvbiBzdGF0aXN0aWNhbCBhbmFseXNpcyB1c2luZyBqdXN0IGEgZmV3IGZ1bmRhbWVudGFsIGNvbmNlcHRzCisgICBpbmNsdWRpbmcgc2ltdWxhdGlvbiwgc2FtcGxpbmcsIHNodWZmbGluZywgYW5kIGNyb3NzLXZhbGlkYXRpb24uCisKKyAgIGBFY29ub21pY3MgU2ltdWxhdGlvbgorICAgPGh0dHA6Ly9uYnZpZXdlci5qdXB5dGVyLm9yZy91cmwvbm9ydmlnLmNvbS9pcHl0aG9uL0Vjb25vbWljcy5pcHluYj5gXworICAgYSBzaW11bGF0aW9uIG9mIGEgbWFya2V0cGxhY2UgYnkKKyAgIGBQZXRlciBOb3J2aWcgPGh0dHA6Ly9ub3J2aWcuY29tL2Jpby5odG1sPmBfIHRoYXQgc2hvd3MgZWZmZWN0aXZlCisgICB1c2Ugb2YgbWFueSBvZiB0aGUgdG9vbHMgYW5kIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUKKyAgIChnYXVzcywgdW5pZm9ybSwgc2FtcGxlLCBiZXRhdmFyaWF0ZSwgY2hvaWNlLCB0cmlhbmd1bGFyLCBhbmQgcmFuZHJhbmdlKS4KKworICAgYEEgQ29uY3JldGUgSW50cm9kdWN0aW9uIHRvIFByb2JhYmlsaXR5ICh1c2luZyBQeXRob24pCisgICA8aHR0cDovL25idmlld2VyLmp1cHl0ZXIub3JnL3VybC9ub3J2aWcuY29tL2lweXRob24vUHJvYmFiaWxpdHkuaXB5bmI+YF8KKyAgIGEgdHV0b3JpYWwgYnkgYFBldGVyIE5vcnZpZyA8aHR0cDovL25vcnZpZy5jb20vYmlvLmh0bWw+YF8gY292ZXJpbmcKKyAgIHRoZSBiYXNpY3Mgb2YgcHJvYmFiaWxpdHkgdGhlb3J5LCBob3cgdG8gd3JpdGUgc2ltdWxhdGlvbnMsIGFuZAorICAgaG93IHRvIHBlcmZvcm0gZGF0YSBhbmFseXNpcyB1c2luZyBQeXRob24uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggMWNhNjIxZS4uN2VmNGNiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtMjMwLDEyICsyMzAsOCBAQAogICAgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikgVGhpcwogICAgaXMgdXNlZnVsIGlmIHlvdSB3aXNoIHRvIGluY2x1ZGUgdGhlIGZsYWdzIGFzIHBhcnQgb2YgdGhlIHJlZ3VsYXIKICAgIGV4cHJlc3Npb24sIGluc3RlYWQgb2YgcGFzc2luZyBhICpmbGFnKiBhcmd1bWVudCB0byB0aGUKLSAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4KLQotICAgTm90ZSB0aGF0IHRoZSBgYCg/eClgYCBmbGFnIGNoYW5nZXMgaG93IHRoZSBleHByZXNzaW9uIGlzIHBhcnNlZC4gSXQgc2hvdWxkIGJlCi0gICB1c2VkIGZpcnN0IGluIHRoZSBleHByZXNzaW9uIHN0cmluZywgb3IgYWZ0ZXIgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAgSWYgdGhlcmUgYXJlIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmbGFnLCB0aGUgcmVzdWx0cyBhcmUKLSAgIHVuZGVmaW5lZC4KKyAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4gIEZsYWdzIHNob3VsZCBiZSB1c2VkIGZpcnN0IGluIHRoZQorICAgZXhwcmVzc2lvbiBzdHJpbmcuCiAKIGBgKD86Li4uKWBgCiAgICBBIG5vbi1jYXB0dXJpbmcgdmVyc2lvbiBvZiByZWd1bGFyIHBhcmVudGhlc2VzLiAgTWF0Y2hlcyB3aGF0ZXZlciByZWd1bGFyCkBAIC0yNDMsNiArMjM5LDE2IEBACiAgICAqY2Fubm90KiBiZSByZXRyaWV2ZWQgYWZ0ZXIgcGVyZm9ybWluZyBhIG1hdGNoIG9yIHJlZmVyZW5jZWQgbGF0ZXIgaW4gdGhlCiAgICBwYXR0ZXJuLgogCitgYCg/aW1zeC1pbXN4Oi4uLilgYAorICAgKFplcm8gb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlIHNldCBgYCdpJ2BgLCBgYCdtJ2BgLCBgYCdzJ2BgLCBgYCd4J2BgLAorICAgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBgYCctJ2BgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUKKyAgIHNhbWUgc2V0LikgIFRoZSBsZXR0ZXJzIHNldCBvciByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzOgorICAgOmNvbnN0OmByZS5JYCAoaWdub3JlIGNhc2UpLCA6Y29uc3Q6YHJlLk1gIChtdWx0aS1saW5lKSwgOmNvbnN0OmByZS5TYAorICAgKGRvdCBtYXRjaGVzIGFsbCksIGFuZCA6Y29uc3Q6YHJlLlhgICh2ZXJib3NlKSwgZm9yIHRoZSBwYXJ0IG9mIHRoZQorICAgZXhwcmVzc2lvbi4gIChUaGUgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIGBgKD9QPG5hbWU+Li4uKWBgCiAgICBTaW1pbGFyIHRvIHJlZ3VsYXIgcGFyZW50aGVzZXMsIGJ1dCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgdGhlIGdyb3VwIGlzCiAgICBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9saWMgZ3JvdXAgbmFtZSAqbmFtZSouICBHcm91cCBuYW1lcyBtdXN0IGJlIHZhbGlkCkBAIC0zMjcsOCArMzMzLDkgQEAKIAogCiBUaGUgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBsaXN0IGJlbG93LgotSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3Qgb24gdGhlIGxpc3QsIHRoZW4gdGhlIHJlc3VsdGluZyBSRSB3aWxsIG1hdGNoCi10aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUgY2hhcmFjdGVyIGBgJyQnYGAuCitJZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBhbiBBU0NJSSBkaWdpdCBvciBhbiBBU0NJSSBsZXR0ZXIsIHRoZW4gdGhlCityZXN1bHRpbmcgUkUgd2lsbCBtYXRjaCB0aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUKK2NoYXJhY3RlciBgYCckJ2BgLgogCiBgYFxudW1iZXJgYAogICAgTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyb3VwIG9mIHRoZSBzYW1lIG51bWJlci4gIEdyb3VwcyBhcmUgbnVtYmVyZWQKQEAgLTQ0OCw5ICs0NTUsOCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKLS4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gc2VlYWxzbzo6CkBAIC00NzIsNiArNDc4LDkgQEAKIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBNb3N0IG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucyBhbHdheXMgdXNlIHRoZSBjb21waWxlZAogZm9ybS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIEZsYWcgY29uc3RhbnRzIGFyZSBub3cgaW5zdGFuY2VzIG9mIDpjbGFzczpgUmVnZXhGbGFnYCwgd2hpY2ggaXMgYSBzdWJjbGFzcyBvZgorICAgOmNsYXNzOmBlbnVtLkludEZsYWdgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGUocGF0dGVybiwgZmxhZ3M9MCkKIApAQCAtNTM4LDExICs1NDcsMTEgQEAKICAgIGN1cnJlbnQgbG9jYWxlLiBUaGUgdXNlIG9mIHRoaXMgZmxhZyBpcyBkaXNjb3VyYWdlZCBhcyB0aGUgbG9jYWxlIG1lY2hhbmlzbQogICAgaXMgdmVyeSB1bnJlbGlhYmxlLCBhbmQgaXQgb25seSBoYW5kbGVzIG9uZSAiY3VsdHVyZSIgYXQgYSB0aW1lIGFueXdheTsKICAgIHlvdSBzaG91bGQgdXNlIFVuaWNvZGUgbWF0Y2hpbmcgaW5zdGVhZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKLSAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIERlcHJlY2F0ZWQgdGhlIHVzZSBvZiAgOmNvbnN0OmByZS5MT0NBTEVgIHdpdGggc3RyaW5nIHBhdHRlcm5zIG9yCi0gICAgICA6Y29uc3Q6YHJlLkFTQ0lJYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6Y29uc3Q6YHJlLkxPQ0FMRWAgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zIGFuZCBpcworICAgICAgbm90IGNvbXBhdGlibGUgd2l0aCA6Y29uc3Q6YHJlLkFTQ0lJYC4KIAogCiAuLiBkYXRhOjogTQpAQCAtNzQ4LDkgKzc1NywxMyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgICAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGluICpwYXR0ZXJuKiBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlcgorICAgICAgbm93IGFyZSBlcnJvcnMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjcKKyAgICAgIFVua25vd24gZXNjYXBlcyBpbiAqcmVwbCogY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlCisgICAgICBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjcuCiAKIAogLi4gZnVuY3Rpb246OiBzdWJuKHBhdHRlcm4sIHJlcGwsIHN0cmluZywgY291bnQ9MCwgZmxhZ3M9MCkKQEAgLTEwMTYsNiArMTAyOSwyMiBAQAogICAgICAgJ2MzJwogCiAKKy4uIG1ldGhvZDo6IG1hdGNoLl9fZ2V0aXRlbV9fKGcpCisKKyAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIGBgbS5ncm91cChnKWBgLiAgVGhpcyBhbGxvd3MgZWFzaWVyIGFjY2VzcyB0bworICAgYW4gaW5kaXZpZHVhbCBncm91cCBmcm9tIGEgbWF0Y2g6CisKKyAgICAgID4+PiBtID0gcmUubWF0Y2gociIoXHcrKSAoXHcrKSIsICJJc2FhYyBOZXd0b24sIHBoeXNpY2lzdCIpCisgICAgICA+Pj4gbVswXSAgICAgICAjIFRoZSBlbnRpcmUgbWF0Y2gKKyAgICAgICdJc2FhYyBOZXd0b24nCisgICAgICA+Pj4gbVsxXSAgICAgICAjIFRoZSBmaXJzdCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ0lzYWFjJworICAgICAgPj4+IG1bMl0gICAgICAgIyBUaGUgc2Vjb25kIHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnTmV3dG9uJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cHMoZGVmYXVsdD1Ob25lKQogCiAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxIHVwIHRvIGhvd2V2ZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCA0ZDNjMDk5Li41NGM1NGI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xNjcsNiArMTY3LDIwIEBACiAgICBUaGlzIGNhbGxzIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCBpbiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2F1dG9faGlzdG9yeShlbmFibGVkKQorCisgICBFbmFibGUgb3IgZGlzYWJsZSBhdXRvbWF0aWMgY2FsbHMgdG8gOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIHdoZW4gcmVhZGluZworICAgaW5wdXQgdmlhIHJlYWRsaW5lLiAgVGhlICplbmFibGVkKiBhcmd1bWVudCBzaG91bGQgYmUgYSBCb29sZWFuIHZhbHVlCisgICB0aGF0IHdoZW4gdHJ1ZSwgZW5hYmxlcyBhdXRvIGhpc3RvcnksIGFuZCB0aGF0IHdoZW4gZmFsc2UsIGRpc2FibGVzCisgICBhdXRvIGhpc3RvcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBpbXBsLWRldGFpbDo6CisgICAgICBBdXRvIGhpc3RvcnkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgY2hhbmdlcyB0byB0aGlzIGRvIG5vdCBwZXJzaXN0CisgICAgICBhY3Jvc3MgbXVsdGlwbGUgc2Vzc2lvbnMuCisKKwogU3RhcnR1cCBob29rcwogLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdCBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjg0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApAQCAtMCwwICsxLDE5OCBAQAorOm1vZDpgc2VjcmV0c2AgLS0tIEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBzZWNyZXRzCisgICA6c3lub3BzaXM6IEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cy4KKworLi4gbW9kdWxlYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIHRlc3RzZXR1cDo6CisKKyAgIGZyb20gc2VjcmV0cyBpbXBvcnQgKgorICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9zZWNyZXRzLnB5YAorCistLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKK3JhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvciBtYW5hZ2luZyBkYXRhIHN1Y2ggYXMgcGFzc3dvcmRzLCBhY2NvdW50CithdXRoZW50aWNhdGlvbiwgc2VjdXJpdHkgdG9rZW5zLCBhbmQgcmVsYXRlZCBzZWNyZXRzLgorCitJbiBwYXJ0aWN1bGFybHksIDptb2Q6YHNlY3JldHNgIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCitkZWZhdWx0IHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpbiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUsIHdoaWNoCitpcyBkZXNpZ25lZCBmb3IgbW9kZWxsaW5nIGFuZCBzaW11bGF0aW9uLCBub3Qgc2VjdXJpdHkgb3IgY3J5cHRvZ3JhcGh5LgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTA2YAorCisKK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbW9zdCBzZWN1cmUgc291cmNlIG9mCityYW5kb21uZXNzIHRoYXQgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzLgorCisuLiBjbGFzczo6IFN5c3RlbVJhbmRvbQorCisgICBBIGNsYXNzIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzIHVzaW5nIHRoZSBoaWdoZXN0LXF1YWxpdHkKKyAgIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTZWUKKyAgIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworLi4gZnVuY3Rpb246OiBjaG9pY2Uoc2VxdWVuY2UpCisKKyAgIFJldHVybiBhIHJhbmRvbWx5LWNob3NlbiBlbGVtZW50IGZyb20gYSBub24tZW1wdHkgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJlbG93KG4pCisKKyAgIFJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCAqbiopLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiaXRzKGspCisKKyAgIFJldHVybiBhbiBpbnQgd2l0aCAqayogcmFuZG9tIGJpdHMuCisKKworR2VuZXJhdGluZyB0b2tlbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHNlY3VyZQordG9rZW5zLCBzdWl0YWJsZSBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXRzLAoraGFyZC10by1ndWVzcyBVUkxzLCBhbmQgc2ltaWxhci4KKworLi4gZnVuY3Rpb246OiB0b2tlbl9ieXRlcyhbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBudW1iZXIgb2YgYnl0ZXMuCisgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzCisgICB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgIGInXHhlYnJceDE3RCp0XHhhZVx4ZDRceGUzU1x4YjZceGUyXHhlYlAxXHg4YicKKworCisuLiBmdW5jdGlvbjo6IHRva2VuX2hleChbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLiAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyoKKyAgIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28gaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzCisgICBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworLi4gZnVuY3Rpb246OiB0b2tlbl91cmxzYWZlKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgY29udGFpbmluZyAqbmJ5dGVzKiByYW5kb20KKyAgIGJ5dGVzLiAgVGhlIHRleHQgaXMgQmFzZTY0IGVuY29kZWQsIHNvIG9uIGF2ZXJhZ2UgZWFjaCBieXRlIHJlc3VsdHMKKyAgIGluIGFwcHJveGltYXRlbHkgMS4zIGNoYXJhY3RlcnMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3QKKyAgIHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKworSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHRva2VucyB1c2U/CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gYmUgc2VjdXJlIGFnYWluc3QKK2BicnV0ZS1mb3JjZSBhdHRhY2tzIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcnV0ZS1mb3JjZV9hdHRhY2s+YF8sCit0b2tlbnMgbmVlZCB0byBoYXZlIHN1ZmZpY2llbnQgcmFuZG9tbmVzcy4gIFVuZm9ydHVuYXRlbHksIHdoYXQgaXMKK2NvbnNpZGVyZWQgc3VmZmljaWVudCB3aWxsIG5lY2Vzc2FyaWx5IGluY3JlYXNlIGFzIGNvbXB1dGVycyBnZXQgbW9yZQorcG93ZXJmdWwgYW5kIGFibGUgdG8gbWFrZSBtb3JlIGd1ZXNzZXMgaW4gYSBzaG9ydGVyIHBlcmlvZC4gIEFzIG9mIDIwMTUsCitpdCBpcyBiZWxpZXZlZCB0aGF0IDMyIGJ5dGVzICgyNTYgYml0cykgb2YgcmFuZG9tbmVzcyBpcyBzdWZmaWNpZW50IGZvcgordGhlIHR5cGljYWwgdXNlLWNhc2UgZXhwZWN0ZWQgZm9yIHRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBtYW5hZ2UgdGhlaXIgb3duIHRva2VuIGxlbmd0aCwgeW91IGNhbiBleHBsaWNpdGx5CitzcGVjaWZ5IGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMgdXNlZCBmb3IgdG9rZW5zIGJ5IGdpdmluZyBhbiA6Y2xhc3M6YGludGAKK2FyZ3VtZW50IHRvIHRoZSB2YXJpb3VzIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucy4gIFRoYXQgYXJndW1lbnQgaXMgdGFrZW4KK2FzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgcmFuZG9tbmVzcyB0byB1c2UuCisKK090aGVyd2lzZSwgaWYgbm8gYXJndW1lbnQgaXMgcHJvdmlkZWQsIG9yIGlmIHRoZSBhcmd1bWVudCBpcyBgYE5vbmVgYCwKK3RoZSBgYHRva2VuXypgYCBmdW5jdGlvbnMgd2lsbCB1c2UgYSByZWFzb25hYmxlIGRlZmF1bHQgaW5zdGVhZC4KKworLi4gbm90ZTo6CisKKyAgIFRoYXQgZGVmYXVsdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZSwgaW5jbHVkaW5nIGR1cmluZworICAgbWFpbnRlbmFuY2UgcmVsZWFzZXMuCisKKworT3RoZXIgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5ncyAqYSogYW5kICpiKiBhcmUgZXF1YWwsIG90aGVyd2lzZSBgYEZhbHNlYGAsCisgICBpbiBzdWNoIGEgd2F5IGFzIHRvIHJlZHVjZSB0aGUgcmlzayBvZgorICAgYHRpbWluZyBhdHRhY2tzIDxodHRwOi8vY29kYWhhbGUuY29tL2EtbGVzc29uLWluLXRpbWluZy1hdHRhY2tzLz5gXy4KKyAgIFNlZSA6ZnVuYzpgaG1hYy5jb21wYXJlX2RpZ2VzdGAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitSZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIHNob3dzIHJlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzIGZvciB1c2luZyA6bW9kOmBzZWNyZXRzYAordG8gbWFuYWdlIGEgYmFzaWMgbGV2ZWwgb2Ygc2VjdXJpdHkuCisKK0dlbmVyYXRlIGFuIGVpZ2h0LWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQ6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDgpKQorCisKKy4uIG5vdGU6OgorCisgICBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdAorICAgYHN0b3JlIHBhc3N3b3JkcyBpbiBhIHJlY292ZXJhYmxlIGZvcm1hdCA8aHR0cDovL2N3ZS5taXRyZS5vcmcvZGF0YS9kZWZpbml0aW9ucy8yNTcuaHRtbD5gXywKKyAgIHdoZXRoZXIgcGxhaW4gdGV4dCBvciBlbmNyeXB0ZWQuICBUaGV5IHNob3VsZCBiZSBzYWx0ZWQgYW5kIGhhc2hlZAorICAgdXNpbmcgYSBjcnlwdG9ncmFwaGljYWxseS1zdHJvbmcgb25lLXdheSAoaXJyZXZlcnNpYmxlKSBoYXNoIGZ1bmN0aW9uLgorCisKK0dlbmVyYXRlIGEgdGVuLWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQgd2l0aCBhdCBsZWFzdCBvbmUKK2xvd2VyY2FzZSBjaGFyYWN0ZXIsIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBhbmQgYXQgbGVhc3QKK3RocmVlIGRpZ2l0czoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgd2hpbGUgVHJ1ZToKKyAgICAgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSgxMCkpCisgICAgICAgaWYgKGFueShjLmlzbG93ZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBhbnkoYy5pc3VwcGVyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgc3VtKGMuaXNkaWdpdCgpIGZvciBjIGluIHBhc3N3b3JkKSA+PSAzKToKKyAgICAgICAgICAgYnJlYWsKKworCitHZW5lcmF0ZSBhbiBgWEtDRC1zdHlsZSBwYXNzcGhyYXNlIDxodHRwOi8veGtjZC5jb20vOTM2Lz5gXzoKKworLi4gdGVzdGNvZGU6OgorCisgICAjIE9uIHN0YW5kYXJkIExpbnV4IHN5c3RlbXMsIHVzZSBhIGNvbnZlbmllbnQgZGljdGlvbmFyeSBmaWxlLgorICAgIyBPdGhlciBwbGF0Zm9ybXMgbWF5IG5lZWQgdG8gcHJvdmlkZSB0aGVpciBvd24gd29yZC1saXN0LgorICAgd2l0aCBvcGVuKCcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnKSBhcyBmOgorICAgICAgIHdvcmRzID0gW3dvcmQuc3RyaXAoKSBmb3Igd29yZCBpbiBmXQorICAgICAgIHBhc3N3b3JkID0gJyAnLmpvaW4oY2hvaWNlKHdvcmRzKSBmb3IgaSBpbiByYW5nZSg0KSkKKworCitHZW5lcmF0ZSBhIGhhcmQtdG8tZ3Vlc3MgdGVtcG9yYXJ5IFVSTCBjb250YWluaW5nIGEgc2VjdXJpdHkgdG9rZW4KK3N1aXRhYmxlIGZvciBwYXNzd29yZCByZWNvdmVyeSBhcHBsaWNhdGlvbnM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgdXJsID0gJ2h0dHBzOi8vbXlkb21haW4uY29tL3Jlc2V0PScgKyB0b2tlbl91cmxzYWZlKCkKKworCisKKy4uCisgICAjIFRoaXMgbW9kZWxpbmUgbXVzdCBhcHBlYXIgd2l0aGluIHRoZSBsYXN0IHRlbiBsaW5lcyBvZiB0aGUgZmlsZS4KKyAgIGthdGU6IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdGFicyBvbjsgZW5jb2RpbmcgdXRmLTg7CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhODEzODZhLi5mOTcxMThlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTI2OCwzNSArMjY4LDQzIEBACiAKICAgICpldmVudG1hc2sqCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPVVRgICAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExIVVBgICAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgICB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVhDTFVTSVZFYCB8IFdha2Ugb25seSBvbmUgZXBvbGwgb2JqZWN0IHdoZW4gdGhlICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNzb2NpYXRlZCBmZCBoYXMgYW4gZXZlbnQuIFRoZSBkZWZhdWx0IChpZiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGlzIGZsYWcgaXMgbm90IHNldCkgaXMgdG8gd2FrZSBhbGwgZXBvbGwgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG9iamVjdHMgcG9sbGluZyBvbiBvbiBhIGZkLiAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJESFVQYCAgICAgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24gb3Igc2h1dCAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24uICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExNU0dgICAgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIG1ldGhvZDo6IGVwb2xsLmNsb3NlKCkKQEAgLTM4NSw2ICszOTMsOSBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExIVVBgICB8IEh1bmcgdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YFBPTExSREhVUGB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiwgb3IgfAorICAgfCAgICAgICAgICAgICAgICAgICB8IHNodXQgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbiAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExOVkFMYCB8IEludmFsaWQgcmVxdWVzdDogZGVzY3JpcHRvciBub3Qgb3BlbiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKaW5kZXggZTgxZjk4Mi4uMWE4OWJmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdApAQCAtNzMsMTEgKzczLDExIEBACiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIAotLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpCisuLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpCiAKICAgIEEgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIG9yIHN1YmNsYXNzIGluc3RhbmNlIGlzIGEgbGV4aWNhbCBhbmFseXplcgogICAgb2JqZWN0LiAgVGhlIGluaXRpYWxpemF0aW9uIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBzcGVjaWZpZXMgd2hlcmUgdG8gcmVhZAotICAgY2hhcmFjdGVycyBmcm9tLiBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKKyAgIGNoYXJhY3RlcnMgZnJvbS4gIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAogICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIGFuZCA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIG1ldGhvZHMsIG9yCiAgICBhIHN0cmluZy4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gYGBzeXMuc3RkaW5gYC4KICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgaXMgYSBmaWxlbmFtZSBzdHJpbmcsIHdoaWNoIHNldHMgdGhlIGluaXRpYWwKQEAgLTg3LDggKzg3LDE5IEBACiAgICB3aGVuICpwb3NpeCogaXMgbm90IHRydWUgKGRlZmF1bHQpLCB0aGUgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIHdpbGwKICAgIG9wZXJhdGUgaW4gY29tcGF0aWJpbGl0eSBtb2RlLiAgV2hlbiBvcGVyYXRpbmcgaW4gUE9TSVggbW9kZSwKICAgIDpjbGFzczpgfnNobGV4LnNobGV4YCB3aWxsIHRyeSB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgUE9TSVggc2hlbGwKLSAgIHBhcnNpbmcgcnVsZXMuCisgICBwYXJzaW5nIHJ1bGVzLiAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogYXJndW1lbnQgcHJvdmlkZXMgYSB3YXkgdG8gbWFrZSB0aGUKKyAgIGJlaGF2aW91ciBldmVuIGNsb3NlciB0byBob3cgcmVhbCBzaGVsbHMgcGFyc2UuICBUaGlzIGNhbiB0YWtlIGEgbnVtYmVyIG9mCisgICB2YWx1ZXM6IHRoZSBkZWZhdWx0IHZhbHVlLCBgYEZhbHNlYGAsIHByZXNlcnZlcyB0aGUgYmVoYXZpb3VyIHNlZW4gdW5kZXIKKyAgIFB5dGhvbiAzLjUgYW5kIGVhcmxpZXIuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycworICAgYGAoKTs8PnwmYGAgaXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIChjb25zaWRlcmVkIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzKSBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgb2YKKyAgIGNoYXJhY3RlcnMsIHRob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGFzIHRoZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiAgQW55CisgICBjaGFyYWN0ZXJzIGluIHRoZSA6YXR0cjpgd29yZGNoYXJzYCBhdHRyaWJ1dGUgdGhhdCBhcHBlYXIgaW4KKyAgICpwdW5jdHVhdGlvbl9jaGFycyogd2lsbCBiZSByZW1vdmVkIGZyb20gOmF0dHI6YHdvcmRjaGFyc2AuICBTZWUKKyAgIDpyZWY6YGltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHlgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE5MSw3ICsyMDIsMTMgQEAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndvcmRjaGFycwogCiAgICBUaGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGFjY3VtdWxhdGUgaW50byBtdWx0aS1jaGFyYWN0ZXIgdG9rZW5zLiAgQnkKLSAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLgorICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuICBJbiBQT1NJWCBtb2RlLCB0aGUKKyAgIGFjY2VudGVkIGNoYXJhY3RlcnMgaW4gdGhlIExhdGluLTEgc2V0IGFyZSBhbHNvIGluY2x1ZGVkLiAgSWYKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AgaXMgbm90IGVtcHR5LCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYCwgd2hpY2ggY2FuCisgICBhcHBlYXIgaW4gZmlsZW5hbWUgc3BlY2lmaWNhdGlvbnMgYW5kIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCB3aWxsIGFsc28gYmUKKyAgIGluY2x1ZGVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgYW55IGNoYXJhY3RlcnMgd2hpY2ggYXBwZWFyIGluCisgICBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgd2lsbCBiZSByZW1vdmVkIGZyb20gYGB3b3JkY2hhcnNgYCBpZiB0aGV5IGFyZSBwcmVzZW50CisgICB0aGVyZS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlCkBAIC0yMjIsOSArMjM5LDEzIEBACiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2Vfc3BsaXQKIAotICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuIFRoaXMgaXMgdXNlZnVsLCBmb3IKKyAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiAgVGhpcyBpcyB1c2VmdWwsIGZvcgogICAgZXhhbXBsZSwgZm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lcyB3aXRoIDpjbGFzczpgfnNobGV4LnNobGV4YCwgZ2V0dGluZwotICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLgorICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYGBUcnVlYGAsCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIHdpbGwgaGF2ZSBubyBlZmZlY3QsIGFuZCBzcGxpdHRpbmcgd2lsbCBoYXBwZW4KKyAgIG9ubHkgb24gd2hpdGVzcGFjZXMuICBXaGVuIHVzaW5nIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AsIHdoaWNoIGlzCisgICBpbnRlbmRlZCB0byBwcm92aWRlIHBhcnNpbmcgY2xvc2VyIHRvIHRoYXQgaW1wbGVtZW50ZWQgYnkgc2hlbGxzLCBpdCBpcworICAgYWR2aXNhYmxlIHRvIGxlYXZlIGBgd2hpdGVzcGFjZV9zcGxpdGBgIGFzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgdmFsdWUpLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LmluZmlsZQpAQCAtMjQ1LDEwICsyNjYsOSBAQAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgYnkgZGVmYXVsdC4gIElmIHlvdSBhc3NpZ24gYSBzdHJpbmcgdG8gaXQsIHRoYXQKICAgIHN0cmluZyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBsZXhpY2FsLWxldmVsIGluY2x1c2lvbiByZXF1ZXN0IHNpbWlsYXIgdG8gdGhlCiAgICBgYHNvdXJjZWBgIGtleXdvcmQgaW4gdmFyaW91cyBzaGVsbHMuICBUaGF0IGlzLCB0aGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRva2VuCi0gICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsCi0gICBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsIEVPRiwgYXQgd2hpY2gKLSAgIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUgY2FsbGVkIGFuZAotICAgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCisgICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwKKyAgIEVPRiwgYXQgd2hpY2ggcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZQorICAgY2FsbGVkIGFuZCB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKICAgIHJlcXVlc3RzIG1heSBiZSBzdGFja2VkIGFueSBudW1iZXIgb2YgbGV2ZWxzIGRlZXAuCiAKIApAQCAtMjc1LDYgKzI5NSwxNiBAQAogICAgKGBgJydgYCksIGluIG5vbi1QT1NJWCBtb2RlLCBhbmQgdG8gYGBOb25lYGAgaW4gUE9TSVggbW9kZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBzaGxleC5wdW5jdHVhdGlvbl9jaGFycworCisgICBDaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBjb25zaWRlcmVkIHB1bmN0dWF0aW9uLiBSdW5zIG9mIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uIEhvd2V2ZXIsIG5vdGUgdGhhdCBubworICAgc2VtYW50aWMgdmFsaWRpdHkgY2hlY2tpbmcgd2lsbCBiZSBwZXJmb3JtZWQ6IGZvciBleGFtcGxlLCAnPj4+JyBjb3VsZCBiZQorICAgcmV0dXJuZWQgYXMgYSB0b2tlbiwgZXZlbiB0aG91Z2ggaXQgbWF5IG5vdCBiZSByZWNvZ25pc2VkIGFzIHN1Y2ggYnkgc2hlbGxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBfc2hsZXgtcGFyc2luZy1ydWxlczoKIAogUGFyc2luZyBSdWxlcwpAQCAtMzI3LDMgKzM1Nyw2MiBAQAogKiBFT0YgaXMgc2lnbmFsZWQgd2l0aCBhIDpjb25zdDpgTm9uZWAgdmFsdWU7CiAKICogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQuCisKKy4uIF9pbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5OgorCitJbXByb3ZlZCBDb21wYXRpYmlsaXR5IHdpdGggU2hlbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitUaGUgOmNsYXNzOmBzaGxleGAgY2xhc3MgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBwYXJzaW5nIHBlcmZvcm1lZCBieQorY29tbW9uIFVuaXggc2hlbGxzIGxpa2UgYGBiYXNoYGAsIGBgZGFzaGBgLCBhbmQgYGBzaGBgLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgY29tcGF0aWJpbGl0eSwgc3BlY2lmeSB0aGUgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGFyZ3VtZW50IGluIHRoZQorY29uc3RydWN0b3IuICBUaGlzIGRlZmF1bHRzIHRvIGBgRmFsc2VgYCwgd2hpY2ggcHJlc2VydmVzIHByZS0zLjYgYmVoYXZpb3VyLgorSG93ZXZlciwgaWYgaXQgaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYGAoKTs8PnwmYGAKK2lzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIFdoaWxlCit0aGlzIGlzIHNob3J0IG9mIGEgZnVsbCBwYXJzZXIgZm9yIHNoZWxscyAod2hpY2ggd291bGQgYmUgb3V0IG9mIHNjb3BlIGZvciB0aGUKK3N0YW5kYXJkIGxpYnJhcnksIGdpdmVuIHRoZSBtdWx0aXBsaWNpdHkgb2Ygc2hlbGxzIG91dCB0aGVyZSksIGl0IGRvZXMgYWxsb3cKK3lvdSB0byBwZXJmb3JtIHByb2Nlc3Npbmcgb2YgY29tbWFuZCBsaW5lcyBtb3JlIGVhc2lseSB0aGFuIHlvdSBjb3VsZAorb3RoZXJ3aXNlLiAgVG8gaWxsdXN0cmF0ZSwgeW91IGNhbiBzZWUgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0OjoKKworICAgIGltcG9ydCBzaGxleAorCisgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgIGlmIHB1bmN0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdPbGQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXNzYWdlID0gJ05ldycKKyAgICAgICAgdGV4dCA9ICJhICYmIGI7IGMgJiYgZCB8fCBlOyBmID4nYWJjJzsgKGRlZiBcImdoaVwiKSIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHRleHQsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICBwcmludCgnJXM6ICVzJyAlIChtZXNzYWdlLCBsaXN0KHMpKSkKKword2hpY2ggcHJpbnRzIG91dDo6CisKKyAgICBPbGQ6IFsnYScsICcmJywgJyYnLCAnYicsICc7JywgJ2MnLCAnJicsICcmJywgJ2QnLCAnfCcsICd8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKyAgICBOZXc6IFsnYScsICcmJicsICdiJywgJzsnLCAnYycsICcmJicsICdkJywgJ3x8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKworT2YgY291cnNlLCB0b2tlbnMgd2lsbCBiZSByZXR1cm5lZCB3aGljaCBhcmUgbm90IHZhbGlkIGZvciBzaGVsbHMsIGFuZCB5b3UnbGwKK25lZWQgdG8gaW1wbGVtZW50IHlvdXIgb3duIGVycm9yIGNoZWNrcyBvbiB0aGUgcmV0dXJuZWQgdG9rZW5zLgorCitJbnN0ZWFkIG9mIHBhc3NpbmcgYGBUcnVlYGAgYXMgdGhlIHZhbHVlIGZvciB0aGUgcHVuY3R1YXRpb25fY2hhcnMgcGFyYW1ldGVyLAoreW91IGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggc3BlY2lmaWMgY2hhcmFjdGVycywgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZQord2hpY2ggY2hhcmFjdGVycyBjb25zdGl0dXRlIHB1bmN0dWF0aW9uLiBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgPj4+IHMgPSBzaGxleC5zaGxleCgiYSAmJiBiIHx8IGMiLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgPj4+IGxpc3QocykKKyAgICBbJ2EnLCAnJicsICcmJywgJ2InLCAnfHwnLCAnYyddCisKKy4uIG5vdGU6OiBXaGVuIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBpcyBzcGVjaWZpZWQsIHRoZSA6YXR0cjpgfnNobGV4LndvcmRjaGFyc2AKKyAgIGF0dHJpYnV0ZSBpcyBhdWdtZW50ZWQgd2l0aCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYC4gIFRoYXQgaXMgYmVjYXVzZSB0aGVzZQorICAgY2hhcmFjdGVycyBjYW4gYXBwZWFyIGluIGZpbGUgbmFtZXMgKGluY2x1ZGluZyB3aWxkY2FyZHMpIGFuZCBjb21tYW5kLWxpbmUKKyAgIGFyZ3VtZW50cyAoZS5nLiBgYC0tY29sb3I9YXV0b2BgKS4gSGVuY2U6OgorCisgICAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCd+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/JywKKyAgICAgIC4uLiAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgID4+PiBsaXN0KHMpCisgICAgICBbJ34vYScsICcmJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IGIwMjBiYjMuLmE4NWJmMzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiAgICBpbXBvcnQgbG9nZ2luZwogCiAgICBkZWYgX2xvZ3BhdGgocGF0aCwgbmFtZXMpOgotICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycgJSBwYXRoKQorICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycsIHBhdGgpCiAgICAgICAgcmV0dXJuIFtdICAgIyBub3RoaW5nIHdpbGwgYmUgaWdub3JlZAogCiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IDBhNzNmNWEuLjQzZGFmNzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC01Miw3ICs1Miw4IEBACiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybSA6ZmlsZTpge25hbWV9LnB0aGAKIGFuZCBleGlzdHMgaW4gb25lIG9mIHRoZSBmb3VyIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBhYm92ZTsgaXRzIGNvbnRlbnRzIGFyZQogYWRkaXRpb25hbCBpdGVtcyAob25lIHBlciBsaW5lKSB0byBiZSBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBOb24tZXhpc3RpbmcgaXRlbXMKLWFyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KK2FyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAsIGFuZCBubyBjaGVjayBpcyBtYWRlIHRoYXQgdGhlIGl0ZW0gcmVmZXJzIHRvIGEKK2RpcmVjdG9yeSByYXRoZXIgdGhhbiBhIGZpbGUuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KIG9uY2UuICBCbGFuayBsaW5lcyBhbmQgbGluZXMgYmVnaW5uaW5nIHdpdGggYGAjYGAgYXJlIHNraXBwZWQuICBMaW5lcyBzdGFydGluZwogd2l0aCBgYGltcG9ydGBgIChmb2xsb3dlZCBieSBzcGFjZSBvciB0YWIpIGFyZSBleGVjdXRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGEwOTZkZTAuLmUzODMyMDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKIAogCiAuLiBjbGFzczo6IFNNVFBTZXJ2ZXIobG9jYWxhZGRyLCByZW1vdGVhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBTZXJ2ZXJgIG9iamVjdCwgd2hpY2ggYmluZHMgdG8gbG9jYWwgYWRkcmVzcwogICAgKmxvY2FsYWRkciouICBJdCB3aWxsIHRyZWF0ICpyZW1vdGVhZGRyKiBhcyBhbiB1cHN0cmVhbSBTTVRQIHJlbGF5ZXIuICBCb3RoCkBAIC00NiwyMCArNDYsMTkgQEAKICAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgSWYgc2V0IHRvCi0gICBgYFRydWVgYCwgKmRlY29kZV9kYXRhKiBtdXN0IGJlIGBgRmFsc2VgYCAob3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJhaXNlZCkuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICBXaGVuIGBgVHJ1ZWBgLCBgYFNNVFBVVEY4YGAgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGBgTUFJTGBgCiAgICBjb21tYW5kIGFuZCB3aGVuIHByZXNlbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIGluIHRoZQotICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNjsgc3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4gIFdoZW4KLSAgICpkZWNvZGVfZGF0YSogaXMgc2V0IHRvIGBgRmFsc2VgYCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBXaGVuICpkZWNvZGVfZGF0YSogaXMgYGBGYWxzZWBgICh0aGUKKyAgIGRlZmF1bHQpLCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAogICAgZXh0ZW5zaW9uICg6cmZjOmA2MTUyYCksIGFjY2VwdHMgdGhlIGBgQk9EWT04QklUTUlNRWBgIHBhcmFtZXRlciB0bwogICAgdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGFuZCB3aGVuIHByZXNlbnQgcGFzc2VzIGl0IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgCi0gICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAuLiBtZXRob2Q6OiBwcm9jZXNzX21lc3NhZ2UocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKQogCkBAIC03Niw5ICs3NSw4IEBACiAgICAgICB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgdW5sZXNzIGF0IGxlYXN0IG9uZSBvZiBgYGRlY29kZV9kYXRhPUZhbHNlYGAgb3IgYGBlbmFibGVfU01UUFVURjg9VHJ1ZWBgCi0gICAgICB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZwotICAgICAga2V5czoKKyAgICAgIGlmIGBgZGVjb2RlX2RhdGE9VHJ1ZWBgIHdhcyBnaXZlbiBhcyBhbiBpbml0IGFyZ3VtZW50LCBvdGhlcndpc2UKKyAgICAgIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcga2V5czoKIAogICAgICAgICAgICptYWlsX29wdGlvbnMqOgogICAgICAgICAgICAgIGEgbGlzdCBvZiBhbGwgcmVjZWl2ZWQgcGFyYW1ldGVycyB0byB0aGUgYGBNQUlMYGAKQEAgLTEwOSw5ICsxMDcsMTIgQEAKICAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKLSAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKLSAgICAgIHNwZWNpZmllZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbmQgdGhlCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiAqZGVjb2RlX2RhdGEqIGlzCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtMTUxLDcgKzE1Miw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTYzLDIyICsxNjQsMjUgQEAKICAgIGxpbWl0LgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIEEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBib3RoICplbmFibGVfU01UUFVURjgqIGFuZCAqZGVjb2RlX2RhdGEqIGFyZQotICAgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBBIGRpY3Rpb25hcnkgY2FuIGJlIHNwZWNpZmllZCBpbiAqbWFwKiB0byBhdm9pZCB1c2luZyBhIGdsb2JhbCBzb2NrZXQgbWFwLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNi4gIFNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIFRvIHVzZSBhIGN1c3RvbSBTTVRQQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUKICAgIDphdHRyOmBTTVRQU2VydmVyLmNoYW5uZWxfY2xhc3NgIG9mIHlvdXIgOmNsYXNzOmBTTVRQU2VydmVyYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBhcmd1bWVudHMgd2VyZSBhZGRlZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBwYXJhbWV0ZXJzIHdlcmUgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogICAgVGhlIDpjbGFzczpgU01UUENoYW5uZWxgIGhhcyB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCA4Yjk4Y2NmLi44NmU3NjllIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtOTUsNiArOTUsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBUaGUgTE1UUCBwcm90b2NvbCwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEVTTVRQLCBpcyBoZWF2aWx5IGJhc2VkIG9uIHRoZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggNTMwMDAwYi4uOWMxMDg2NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC0xMzMsNiArMTMzLDIyIEBACiAgICAgc3RyaW5nIGZvcm1hdC4gKGV4LiBgYGInMTI6MjM6MzQ6NDU6NTY6NjcnYGApIFRoaXMgcHJvdG9jb2wgaXMgbm90CiAgICAgc3VwcG9ydGVkIHVuZGVyIEZyZWVCU0QuCiAKKy0gOmNvbnN0OmBBRl9BTEdgIGlzIGEgTGludXgtb25seSBzb2NrZXQgYmFzZWQgaW50ZXJmYWNlIHRvIEtlcm5lbAorICBjcnlwdG9ncmFwaHkuIEFuIGFsZ29yaXRobSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoIGEgdHVwbGUgb2YgdHdvIHRvIGZvdXIKKyAgZWxlbWVudHMgYGAodHlwZSwgbmFtZSBbLCBmZWF0IFssIG1hc2tdXSlgYCwgd2hlcmU6CisKKyAgLSAqdHlwZSogaXMgdGhlIGFsZ29yaXRobSB0eXBlIGFzIHN0cmluZywgZS5nLiBgYGFlYWRgYCwgYGBoYXNoYGAsCisgICAgYGBza2NpcGhlcmBgIG9yIGBgcm5nYGAuCisKKyAgLSAqbmFtZSogaXMgdGhlIGFsZ29yaXRobSBuYW1lIGFuZCBvcGVyYXRpb24gbW9kZSBhcyBzdHJpbmcsIGUuZy4KKyAgICBgYHNoYTI1NmBgLCBgYGhtYWMoc2hhMjU2KWBgLCBgYGNiYyhhZXMpYGAgb3IgYGBkcmJnX25vcHJfY3RyX2FlczI1NmBgLgorCisgIC0gKmZlYXQqIGFuZCAqbWFzayogYXJlIHVuc2lnbmVkIDMyYml0IGludGVnZXJzLgorCisgIEF2YWlsYWJpbGl0eSBMaW51eCAyLjYuMzgsIHNvbWUgYWxnb3JpdGhtIHR5cGVzIHJlcXVpcmUgbW9yZSByZWNlbnQgS2VybmVscy4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfUEFDS0VUYCwgOmNvbnN0OmBBRl9DQU5gKQogICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIApAQCAtMjgzLDYgKzI5OSwxMCBAQAogICAgaW4gdGhlIFVuaXggaGVhZGVyIGZpbGVzIGFyZSBkZWZpbmVkOyBmb3IgYSBmZXcgc3ltYm9scywgZGVmYXVsdCB2YWx1ZXMgYXJlCiAgICBwcm92aWRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU09fRE9NQUlOYGAsIGBgU09fUFJPVE9DT0xgYCwgYGBTT19QRUVSU0VDYGAsIGBgU09fUEFTU1NFQ2BgCisgICAgICB3ZXJlIGFkZGVkLgorCiAuLiBkYXRhOjogQUZfQ0FOCiAgICAgICAgICAgUEZfQ0FOCiAgICAgICAgICAgU09MX0NBTl8qCkBAIC0zMzEsMTggKzM1MSwzMyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZGF0YTo6IFNJT18qCisuLiBkYXRhOjogU0lPX1JDVkFMTAorICAgICAgICAgIFNJT19LRUVQQUxJVkVfVkFMUworICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKICAgICAgICAgICBSQ1ZBTExfKgogCiAgICBDb25zdGFudHMgZm9yIFdpbmRvd3MnIFdTQUlvY3RsKCkuIFRoZSBjb25zdGFudHMgYXJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIHRoZQogICAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIAogLi4gZGF0YTo6IFRJUENfKgogCiAgICBUSVBDIHJlbGF0ZWQgY29uc3RhbnRzLCBtYXRjaGluZyB0aGUgb25lcyBleHBvcnRlZCBieSB0aGUgQyBzb2NrZXQgQVBJLiBTZWUKICAgIHRoZSBUSVBDIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy4uIGRhdGE6OiBBRl9BTEcKKyAgICAgICAgICBTT0xfQUxHCisgICAgICAgICAgQUxHXyoKKworICAgQ29uc3RhbnRzIGZvciBMaW51eCBLZXJuZWwgY3J5cHRvZ3JhcGh5LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBBRl9MSU5LCiAKICAgQXZhaWxhYmlsaXR5OiBCU0QsIE9TWC4KQEAgLTg3NCw2ICs5MDksMTAgQEAKICAgIGl0IGlzIHJlY29tbWVuZGVkIHRvIDptZXRoOmBjbG9zZWAgdGhlbSBleHBsaWNpdGx5LCBvciB0byB1c2UgYQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcm91bmQgdGhlbS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgICAgIDpjOmZ1bmM6YGNsb3NlYCBjYWxsIGlzIG1hZGUuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICA6bWV0aDpgY2xvc2UoKWAgcmVsZWFzZXMgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbm5lY3Rpb24gYnV0CkBAIC05OTQsNiArMTAzMywxMiBAQAogICAgT24gb3RoZXIgcGxhdGZvcm1zLCB0aGUgZ2VuZXJpYyA6ZnVuYzpgZmNudGwuZmNudGxgIGFuZCA6ZnVuYzpgZmNudGwuaW9jdGxgCiAgICBmdW5jdGlvbnMgbWF5IGJlIHVzZWQ7IHRoZXkgYWNjZXB0IGEgc29ja2V0IG9iamVjdCBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KIAorICAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBjb250cm9sIGNvZGVzIGFyZSBzdXBwb3J0ZWQ6CisgICBgYFNJT19SQ1ZBTExgYCwgYGBTSU9fS0VFUEFMSVZFX1ZBTFNgYCwgYW5kIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBzb2NrZXQubGlzdGVuKFtiYWNrbG9nXSkKIAogICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKQEAgLTEyNzcsNiArMTMyMiwxNSBAQAogICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKICAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3NdXV0pCisKKyAgIFNwZWNpYWxpemVkIHZlcnNpb24gb2YgOm1ldGg6YH5zb2NrZXQuc2VuZG1zZ2AgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisgICBTZXQgbW9kZSwgSVYsIEFFQUQgYXNzb2NpYXRlZCBkYXRhIGxlbmd0aCBhbmQgZmxhZ3MgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCiAKICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKQEAgLTEzMjUsMjEgKzEzNzksMjkgQEAKICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgOnJlZjpgbm90ZXMgb24gc29ja2V0IHRpbWVvdXRzIDxzb2NrZXQtdGltZW91dHM+YC4KIAogCi0uLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGludCkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogYnVmZmVyKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIE5vbmUsIG9wdGxlbjogaW50KQogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RydWN0CiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCi0gICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCi0gICB1cCB0byB0aGUgY2FsbGVyIHRvCi0gICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KLSAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciwKKyAgIGBgTm9uZWBgIG9yIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCByZXByZXNlbnRpbmcgYSBidWZmZXIuIEluIHRoZSBsYXRlcgorICAgY2FzZSBpdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBieXRlc3RyaW5nIGNvbnRhaW5zIHRoZQorICAgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlIDptb2Q6YHN0cnVjdGAgZm9yIGEgd2F5IHRvCisgICBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4gV2hlbiB2YWx1ZSBpcyBzZXQgdG8gYGBOb25lYGAsCisgICBvcHRsZW4gYXJndW1lbnQgaXMgcmVxdWlyZWQuIEl0J3MgZXF1aXZhbGVudCB0byBjYWxsIHNldHNvY2tvcHQgQworICAgZnVuY3Rpb24gd2l0aCBvcHR2YWw9TlVMTCBhbmQgb3B0bGVuPW9wdGxlbi4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludCkgZm9ybSBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2h1dGRvd24oaG93KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCAwODdmNGUwLi4yMThhMzFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTUyLDExICs1MiwxMiBAQAogb3ZlcnJpZGluZyBpdHMgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYCBtZXRob2Q7CiB0aGlzIG1ldGhvZCB3aWxsIHByb2Nlc3MgaW5jb21pbmcKIHJlcXVlc3RzLiAgU2Vjb25kLCB5b3UgbXVzdCBpbnN0YW50aWF0ZSBvbmUgb2YgdGhlIHNlcnZlciBjbGFzc2VzLCBwYXNzaW5nIGl0Ci10aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gIFRoZW4gY2FsbCB0aGUKK3RoZSBzZXJ2ZXIncyBhZGRyZXNzIGFuZCB0aGUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UKK3RoZSBzZXJ2ZXIgaW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBUaGVuIGNhbGwgdGhlCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuaGFuZGxlX3JlcXVlc3RgIG9yCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcmAgbWV0aG9kIG9mIHRoZSBzZXJ2ZXIgb2JqZWN0IHRvCiBwcm9jZXNzIG9uZSBvciBtYW55IHJlcXVlc3RzLiAgRmluYWxseSwgY2FsbCA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVyX2Nsb3NlYAotdG8gY2xvc2UgdGhlIHNvY2tldC4KK3RvIGNsb3NlIHRoZSBzb2NrZXQgKHVubGVzcyB5b3UgdXNlZCBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQpLgogCiBXaGVuIGluaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YFRocmVhZGluZ01peEluYCBmb3IgdGhyZWFkZWQgY29ubmVjdGlvbiBiZWhhdmlvciwKIHlvdSBzaG91bGQgZXhwbGljaXRseSBkZWNsYXJlIGhvdyB5b3Ugd2FudCB5b3VyIHRocmVhZHMgdG8gYmVoYXZlIG9uIGFuIGFicnVwdApAQCAtMTExLDYgKzExMiw4IEBACiAgICA6Y2xhc3M6YFVEUFNlcnZlcmAuICBTZXR0aW5nIHRoZSB2YXJpb3VzIGF0dHJpYnV0ZXMgYWxzbyBjaGFuZ2VzIHRoZQogICAgYmVoYXZpb3Igb2YgdGhlIHVuZGVybHlpbmcgc2VydmVyIG1lY2hhbmlzbS4KIAorICAgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGFuZCB0aGUgRm9ya2luZyBjbGFzc2VzIG1lbnRpb25lZCBiZWxvdyBhcmUKKyAgIG9ubHkgYXZhaWxhYmxlIG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KIAogLi4gY2xhc3M6OiBGb3JraW5nVENQU2VydmVyCiAgICAgICAgICAgIEZvcmtpbmdVRFBTZXJ2ZXIKQEAgLTMwNCw3ICszMDcsMTEgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlmIHRoZSA6bWV0aDpgfkJhc2VSZXF1ZXN0SGFuZGxlci5oYW5kbGVgCiAgICAgICBtZXRob2Qgb2YgYSA6YXR0cjpgUmVxdWVzdEhhbmRsZXJDbGFzc2AgaW5zdGFuY2UgcmFpc2VzCiAgICAgICBhbiBleGNlcHRpb24uICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gcHJpbnQgdGhlIHRyYWNlYmFjayB0bwotICAgICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorICAgICAgc3RhbmRhcmQgZXJyb3IgYW5kIGNvbnRpbnVlIGhhbmRsaW5nIGZ1cnRoZXIgcmVxdWVzdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBOb3cgb25seSBjYWxsZWQgZm9yIGV4Y2VwdGlvbnMgZGVyaXZlZCBmcm9tIHRoZSA6ZXhjOmBFeGNlcHRpb25gCisgICAgICAgICBjbGFzcy4KIAogCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfdGltZW91dCgpCkBAIC0zNDksNiArMzU2LDExIEBACiAgICAgICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGFsd2F5cyByZXR1cm5zIDpjb25zdDpgVHJ1ZWAuCiAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCB3YXMgYWRkZWQuICBFeGl0aW5nIHRoZQorICAgICAgY29udGV4dCBtYW5hZ2VyIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyA6bWV0aDpgc2VydmVyX2Nsb3NlYC4KKworCiBSZXF1ZXN0IEhhbmRsZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMzk3LDYgKzQwOSwxNSBAQAogICAgcmVhZCBvciB3cml0dGVuLCByZXNwZWN0aXZlbHksIHRvIGdldCB0aGUgcmVxdWVzdCBkYXRhIG9yIHJldHVybiBkYXRhCiAgICB0byB0aGUgY2xpZW50LgogCisgICBUaGUgOmF0dHI6YHJmaWxlYCBhdHRyaWJ1dGVzIG9mIGJvdGggY2xhc3NlcyBzdXBwb3J0IHRoZQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgcmVhZGFibGUgaW50ZXJmYWNlLCBhbmQKKyAgIDphdHRyOmBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLndmaWxlYCBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgYWxzbyBzdXBwb3J0cyB0aGUKKyAgICAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKwogCiBFeGFtcGxlcwogLS0tLS0tLS0KQEAgLTQyOSwxMSArNDUwLDEwIEBACiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5CiAKICAgICAgICAjIENyZWF0ZSB0aGUgc2VydmVyLCBiaW5kaW5nIHRvIGxvY2FsaG9zdCBvbiBwb3J0IDk5OTkKLSAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCBQT1JUKSwgTXlUQ1BIYW5kbGVyKQotCi0gICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQotICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAjIEFjdGl2YXRlIHRoZSBzZXJ2ZXI7IHRoaXMgd2lsbCBrZWVwIHJ1bm5pbmcgdW50aWwgeW91CisgICAgICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogQW4gYWx0ZXJuYXRpdmUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzIHRoYXQgbWFrZXMgdXNlIG9mIHN0cmVhbXMgKGZpbGUtbGlrZQogb2JqZWN0cyB0aGF0IHNpbXBsaWZ5IGNvbW11bmljYXRpb24gYnkgcHJvdmlkaW5nIHRoZSBzdGFuZGFyZCBmaWxlIGludGVyZmFjZSk6OgpAQCAtNTI1LDggKzU0NSw4IEBACiAKICAgIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikKLSAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVURQU2VydmVyKChIT1NULCBQT1JUKSwgTXlVRFBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhpcyBpcyB0aGUgY2xpZW50IHNpZGU6OgogCkBAIC01ODUsMjIgKzYwNSwyMiBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgMAogCiAgICAgICAgc2VydmVyID0gVGhyZWFkZWRUQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBUaHJlYWRlZFRDUFJlcXVlc3RIYW5kbGVyKQotICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCisgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAKLSAgICAgICAjIFN0YXJ0IGEgdGhyZWFkIHdpdGggdGhlIHNlcnZlciAtLSB0aGF0IHRocmVhZCB3aWxsIHRoZW4gc3RhcnQgb25lCi0gICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0Ci0gICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQotICAgICAgICMgRXhpdCB0aGUgc2VydmVyIHRocmVhZCB3aGVuIHRoZSBtYWluIHRocmVhZCB0ZXJtaW5hdGVzCi0gICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCi0gICAgICAgcHJpbnQoIlNlcnZlciBsb29wIHJ1bm5pbmcgaW4gdGhyZWFkOiIsIHNlcnZlcl90aHJlYWQubmFtZSkKKyAgICAgICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQorICAgICAgICAgICAjIG1vcmUgdGhyZWFkIGZvciBlYWNoIHJlcXVlc3QKKyAgICAgICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQorICAgICAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcworICAgICAgICAgICBzZXJ2ZXJfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCisgICAgICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCiAKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAxIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDIiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKIAotICAgICAgIHNlcnZlci5zaHV0ZG93bigpCi0gICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAKIAogVGhlIG91dHB1dCBvZiB0aGUgZXhhbXBsZSBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgpAQCAtNjE2LDMgKzYzNiw1IEBACiAKIFRoZSA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgaXMgdXNlZCBpbiB0aGUgc2FtZSB3YXksIGV4Y2VwdCB0aGF0IHRoZSBzZXJ2ZXIKIHdpbGwgc3Bhd24gYSBuZXcgcHJvY2VzcyBmb3IgZWFjaCByZXF1ZXN0LgorQXZhaWxhYmxlIG9ubHkgb24gUE9TSVggcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6ZnVuYzpgfm9zLmZvcmtgLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcHdkLnJzdCBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CmluZGV4IGZkM2M5YWQuLmM2Y2FkMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Nwd2QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CkBAIC01NSw2ICs1NSw5IEBACiAKICAgIFJldHVybiB0aGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmFpc2VzIGEgOmV4YzpgUGVybWlzc2lvbkVycm9yYCBpbnN0ZWFkIG9mIDpleGM6YEtleUVycm9yYCBpZiB0aGUgdXNlcgorICAgICAgZG9lc24ndCBoYXZlIHByaXZpbGVnZXMuCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c3BhbGwoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDg0YTQ3ODMuLjU2MzU1NzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02MjksOSArNjI5LDE2IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBsYXN0cm93aWQKIAogICAgICAgVGhpcyByZWFkLW9ubHkgYXR0cmlidXRlIHByb3ZpZGVzIHRoZSByb3dpZCBvZiB0aGUgbGFzdCBtb2RpZmllZCByb3cuIEl0IGlzCi0gICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgc3RhdGVtZW50IHVzaW5nIHRoZSA6bWV0aDpgZXhlY3V0ZWAKLSAgICAgIG1ldGhvZC4gRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcwotICAgICAgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcyBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKyAgICAgIG9ubHkgc2V0IGlmIHlvdSBpc3N1ZWQgYW4gYGBJTlNFUlRgYCBvciBhIGBgUkVQTEFDRWBgIHN0YXRlbWVudCB1c2luZyB0aGUKKyAgICAgIDptZXRoOmBleGVjdXRlYCBtZXRob2QuICBGb3Igb3BlcmF0aW9ucyBvdGhlciB0aGFuIGBgSU5TRVJUYGAgb3IKKyAgICAgIGBgUkVQTEFDRWBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcyBjYWxsZWQsIDphdHRyOmBsYXN0cm93aWRgIGlzCisgICAgICBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKworICAgICAgSWYgdGhlIGBgSU5TRVJUYGAgb3IgYGBSRVBMQUNFYGAgc3RhdGVtZW50IGZhaWxlZCB0byBpbnNlcnQgdGhlIHByZXZpb3VzCisgICAgICBzdWNjZXNzZnVsIHJvd2lkIGlzIHJldHVybmVkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KIAogICAgLi4gYXR0cmlidXRlOjogZGVzY3JpcHRpb24KIApAQCAtOTE4LDkgKzkyNSw3IEBACiAKIEJ5IGRlZmF1bHQsIHRoZSA6bW9kOmBzcWxpdGUzYCBtb2R1bGUgb3BlbnMgdHJhbnNhY3Rpb25zIGltcGxpY2l0bHkgYmVmb3JlIGEKIERhdGEgTW9kaWZpY2F0aW9uIExhbmd1YWdlIChETUwpICBzdGF0ZW1lbnQgKGkuZS4KLWBgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKSwgYW5kIGNvbW1pdHMgdHJhbnNhY3Rpb25zCi1pbXBsaWNpdGx5IGJlZm9yZSBhIG5vbi1ETUwsIG5vbi1xdWVyeSBzdGF0ZW1lbnQgKGkuIGUuCi1hbnl0aGluZyBvdGhlciB0aGFuIGBgU0VMRUNUYGAgb3IgdGhlIGFmb3JlbWVudGlvbmVkKS4KK2BgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKS4KIAogU28gaWYgeW91IGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgaXNzdWUgYSBjb21tYW5kIGxpa2UgYGBDUkVBVEUgVEFCTEUKIC4uLmBgLCBgYFZBQ1VVTWBgLCBgYFBSQUdNQWBgLCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIHdpbGwgY29tbWl0IGltcGxpY2l0bHkKQEAgLTk0MCw2ICs5NDUsOSBAQAogc3RhdGVtZW50LCBvciBzZXQgaXQgdG8gb25lIG9mIFNRTGl0ZSdzIHN1cHBvcnRlZCBpc29sYXRpb24gbGV2ZWxzOiAiREVGRVJSRUQiLAogIklNTUVESUFURSIgb3IgIkVYQ0xVU0lWRSIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICA6bW9kOmBzcWxpdGUzYCB1c2VkIHRvIGltcGxpY2l0bHkgY29tbWl0IGFuIG9wZW4gdHJhbnNhY3Rpb24gYmVmb3JlIERETAorICAgc3RhdGVtZW50cy4gIFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgogCiAKIFVzaW5nIDptb2Q6YHNxbGl0ZTNgIGVmZmljaWVudGx5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCBhMmYwMDgzLi5lZWU0ODQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTQ5LDYgKzQ5LDEyIEBACiBoZWxwcyBtYW5hZ2Ugc2V0dGluZ3MgYW5kIGNlcnRpZmljYXRlcywgd2hpY2ggY2FuIHRoZW4gYmUgaW5oZXJpdGVkCiBieSBTU0wgc29ja2V0cyBjcmVhdGVkIHRocm91Z2ggdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIE9wZW5TU0wgMC45LjgsIDEuMC4wIGFuZCAxLjAuMSBhcmUgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgIEluIHRoZSBmdXR1cmUgdGhlIHNzbCBtb2R1bGUgd2lsbCByZXF1aXJlIGF0IGxlYXN0IE9wZW5TU0wgMS4wLjIgb3IKKyAgIDEuMS4wLgorCiAKIEZ1bmN0aW9ucywgQ29uc3RhbnRzLCBhbmQgRXhjZXB0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODYsMTYgKzE5MiwyMCBAQAogCiAgICAgIC4uIHRhYmxlOjoKIAotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09Ci0gICAgICAgICpjbGllbnQqIC8gKipzZXJ2ZXIqKiAgICAqKlNTTHYyKiogICoqU1NMdjMqKiAgKipUTFMqKiAgICAgKipUTFN2MSoqICAqKlRMU3YxLjEqKiAgKipUTFN2MS4yKioKLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLQotICAgICAgICAqU1NMdjIqICAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpTU0x2MyogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMUyogKCpTU0x2MjMqKSAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICB5ZXMKLSAgICAgICAgKlRMU3YxKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqVExTdjEuMSogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIG5vCi0gICAgICAgICpUTFN2MS4yKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzCi0gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAgICAqKlNTTHYzKiogICAgICoqVExTKiogICAgICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCisgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KKyAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICAgICBubyAgICAgICAgICAgIG5vIFsxXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gWzJdXyAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vIFsxXV8gICAgICAgbm8gWzJdXyAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCisgICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubworICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcworICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisKKyAgIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcworICAgLi4gWzFdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjIgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjJgIGJ5IGRlZmF1bHQuCisgICAuLiBbMl0gOmNsYXNzOmBTU0xDb250ZXh0YCBkaXNhYmxlcyBTU0x2MyB3aXRoIDpkYXRhOmBPUF9OT19TU0x2M2AgYnkgZGVmYXVsdC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTIyNCw3ICsyMzQsNiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIE5ldyBvcHRpb25hbCBhcmd1bWVudCAqY2lwaGVycyouCiAKLQogQ29udGV4dCBjcmVhdGlvbgogXl5eXl5eXl5eXl5eXl5eXgogCkBAIC0yNzksNyArMjg4LDcgQEAKIAogICAgICBSQzQgd2FzIGRyb3BwZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCiAgICAgIENoYUNoYTIwL1BvbHkxMzA1IHdhcyBhZGRlZCB0byB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCkBAIC0zMjIsNyArMzMxLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIDpmdW5jOmBzc2wuUkFORF9wc2V1ZG9fYnl0ZXNgLCB1c2UKICAgICAgIDpmdW5jOmBzc2wuUkFORF9ieXRlc2AgaW5zdGVhZC4KQEAgLTUwOSw2ICs1MTgsMTAgQEAKIENvbnN0YW50cwogXl5eXl5eXl5eCiAKKyAgIEFsbCBjb25zdGFudHMgYXJlIG5vdyA6Y2xhc3M6YGVudW0uSW50RW51bWAgb3IgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IENFUlRfTk9ORQogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgLCBvciB0aGUgYGBjZXJ0X3JlcXNgYApAQCAtNTQyLDYgKzU1NSwxMiBAQAogICAgYmUgcGFzc2VkLCBlaXRoZXIgdG8gOm1ldGg6YFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCBvciBhcyBhCiAgICB2YWx1ZSBvZiB0aGUgYGBjYV9jZXJ0c2BgIHBhcmFtZXRlciB0byA6ZnVuYzpgd3JhcF9zb2NrZXRgLgogCisuLiBjbGFzczo6IFZlcmlmeU1vZGUKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQ0VSVF8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBWRVJJRllfREVGQVVMVAogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYC4gSW4gdGhpcyBtb2RlLCBjZXJ0aWZpY2F0ZQpAQCAtNTgyLDE4ICs2MDEsNDAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40LjQKIAorLi4gY2xhc3M6OiBWZXJpZnlGbGFncworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBWRVJJRllfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUFJPVE9DT0xfVExTCiAKICAgIFNlbGVjdHMgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiB0aGF0IGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyIHN1cHBvcnQuCiAgICBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG9wdGlvbiBjYW4gc2VsZWN0ICJUTFMiIHByb3RvY29scyBhcyB3ZWxsIGFzICJTU0wiLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfQ0xJRU5UCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IGNsaWVudC1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4gVGhlIHByb3RvY29sCisgICBlbmFibGVzIDpkYXRhOmBDRVJUX1JFUVVJUkVEYCBhbmQgOmF0dHI6YH5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBieQorICAgZGVmYXVsdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfU0VSVkVSCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IHNlcnZlci1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBQUk9UT0NPTF9TU0x2MjMKIAogICAgQWxpYXMgZm9yIGRhdGE6YFBST1RPQ09MX1RMU2AuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBVc2UgZGF0YTpgUFJPVE9DT0xfVExTYCBpbnN0ZWFkLgogCkBAIC02MDgsNyArNjQ5LDcgQEAKIAogICAgICAgU1NMIHZlcnNpb24gMiBpcyBpbnNlY3VyZS4gIEl0cyB1c2UgaXMgaGlnaGx5IGRpc2NvdXJhZ2VkLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgcmVtb3ZlZCBzdXBwb3J0IGZvciBTU0x2Mi4KIApAQCAtNjIzLDcgKzY2NCw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDMgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjMyLDcgKzY3Myw3IEBACiAKICAgIFNlbGVjdHMgVExTIHZlcnNpb24gMS4wIGFzIHRoZSBjaGFubmVsIGVuY3J5cHRpb24gcHJvdG9jb2wuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY0NCw3ICs2ODUsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjU3LDcgKzY5OCw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NzgsNyArNzE5LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MiBpcyBkZXByZWNhdGVkCiAKQEAgLTY5MSw3ICs3MzIsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIFNTTHYzIGlzIGRlcHJlY2F0ZWQKIApAQCAtNzUxLDYgKzc5MiwxNiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gY2xhc3M6OiBPcHRpb25zCisKKyAgIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9uIG9mIE9QXyogY29uc3RhbnRzLgorCisuLiBkYXRhOjogT1BfTk9fVElDS0VUCisKKyAgIFByZXZlbnQgY2xpZW50IHNpZGUgZnJvbSByZXF1ZXN0aW5nIGEgc2Vzc2lvbiB0aWNrZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogSEFTX0FMUE4KIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKkFwcGxpY2F0aW9uLUxheWVyCkBAIC04MzMsNiArODg0LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IEFsZXJ0RGVzY3JpcHRpb24KKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQUxFUlRfREVTQ1JJUFRJT05fKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUHVycG9zZS5TRVJWRVJfQVVUSAogCiAgICBPcHRpb24gZm9yIDpmdW5jOmBjcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBhbmQKQEAgLTg1MSw2ICs5MDgsMTIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGNsYXNzOjogU1NMRXJyb3JOdW1iZXIKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgU1NMX0VSUk9SXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgU29ja2V0cwogLS0tLS0tLS0tLS0KQEAgLTg4NSw3ICs5NDgsNyBAQAogICAgOnJlZjpgbm90ZXMgb24gbm9uLWJsb2NraW5nIHNvY2tldHMgPHNzbC1ub25ibG9ja2luZz5gLgogCiAgICBVc3VhbGx5LCA6Y2xhc3M6YFNTTFNvY2tldGAgYXJlIG5vdCBjcmVhdGVkIGRpcmVjdGx5LCBidXQgdXNpbmcgdGhlCi0gICA6ZnVuYzpgd3JhcF9zb2NrZXRgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgorICAgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgOm1ldGg6YHNlbmRmaWxlYCBtZXRob2Qgd2FzIGFkZGVkLgpAQCAtODk1LDYgKzk1OCwxMCBAQAogICAgICAgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbgogICAgICAgb2YgdGhlIHNodXRkb3duLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBJdCBpcyBkZXByZWNhdGVkIHRvIGNyZWF0ZSBhIDpjbGFzczpgU1NMU29ja2V0YCBpbnN0YW5jZSBkaXJlY3RseSwgdXNlCisgICAgICA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgdG8gd3JhcCBhIHNvY2tldC4KKwogCiBTU0wgc29ja2V0cyBhbHNvIGhhdmUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKQEAgLTkxNSw2ICs5ODIsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHJlYWQgdXAgdG8gKmxlbioKICAgICAgIGJ5dGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQucmVjdmAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC5yZWFkYC4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LndyaXRlKGJ1ZikKIAogICAgV3JpdGUgKmJ1ZiogdG8gdGhlIFNTTCBzb2NrZXQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFRoZQpAQCAtOTMwLDYgKzEwMDAsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHdyaXRlICpidWYqLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQuc2VuZGAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAuCisKIC4uIG5vdGU6OgogCiAgICBUaGUgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAgYW5kIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYCBtZXRob2RzIGFyZSB0aGUKQEAgLTExMjcsNiArMTIwMCwxOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gYXR0cmlidXRlOjogU1NMU29ja2V0LnNlc3Npb24KKworICAgVGhlIDpjbGFzczpgU1NMU2Vzc2lvbmAgZm9yIHRoaXMgU1NMIGNvbm5lY3Rpb24uIFRoZSBzZXNzaW9uIGlzIGF2YWlsYWJsZQorICAgZm9yIGNsaWVudCBhbmQgc2VydmVyIHNpZGUgc29ja2V0cyBhZnRlciB0aGUgVExTIGhhbmRzaGFrZSBoYXMgYmVlbgorICAgcGVyZm9ybWVkLiBGb3IgY2xpZW50IHNvY2tldHMgdGhlIHNlc3Npb24gY2FuIGJlIHNldCBiZWZvcmUKKyAgIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAgaGFzIGJlZW4gY2FsbGVkIHRvIHJldXNlIGEgc2Vzc2lvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uX3JldXNlZAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgQ29udGV4dHMKIC0tLS0tLS0tLS0tLQpAQCAtMTE0OSw5ICsxMjM1LDE2IEBACiAgICAgICA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgbGV0cyB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgY2hvb3NlCiAgICAgICBzZWN1cml0eSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwdXJwb3NlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCi0gICAgICA6ZGF0YTpgUFJPVE9DT0xfVExTYCBpcyB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgIFRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2l0aCBzZWN1cmUgZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRpb25zCisgICAgICA6ZGF0YTpgT1BfTk9fQ09NUFJFU1NJT05gLCA6ZGF0YTpgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFYCwKKyAgICAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCwgOmRhdGE6YE9QX1NJTkdMRV9FQ0RIX1VTRWAsCisgICAgICA6ZGF0YTpgT1BfTk9fU1NMdjJgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2MmApLAorICAgICAgYW5kIDpkYXRhOmBPUF9OT19TU0x2M2AgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYzYCkgYXJlCisgICAgICBzZXQgYnkgZGVmYXVsdC4gVGhlIGluaXRpYWwgY2lwaGVyIHN1aXRlIGxpc3QgY29udGFpbnMgb25seSBgYEhJR0hgYAorICAgICAgY2lwaGVycywgbm8gYGBOVUxMYGAgY2lwaGVycyBhbmQgbm8gYGBNRDVgYCBjaXBoZXJzIChleGNlcHQgZm9yCisgICAgICA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKS4KIAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CkBAIC0xMjU5LDYgKzEzNTIsNjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKQorCisgICBHZXQgYSBsaXN0IG9mIGVuYWJsZWQgY2lwaGVycy4gVGhlIGxpc3QgaXMgaW4gb3JkZXIgb2YgY2lwaGVyIHByaW9yaXR5LgorICAgU2VlIDptZXRoOmBTU0xDb250ZXh0LnNldF9jaXBoZXJzYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgICA+Pj4gY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICA+Pj4gY3R4LnNldF9jaXBoZXJzKCdFQ0RIRStBRVNHQ006IUVDRFNBJykKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjAueAorICAgICAgIFt7J2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0OCwKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTZ9LAorICAgICAgICB7J2FsZ19iaXRzJzogMTI4LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NiBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMTI4KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAxMjh9XQorCisgICBPbiBPcGVuU1NMIDEuMSBhbmQgbmV3ZXIgdGhlIGNpcGhlciBkaWN0IGNvbnRhaW5zIGFkZGl0aW9uYWwgZmllbGRzOjoKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjErCisgICAgICAgW3snYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAyNTYsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgyNTYpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDI1NiwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTI1Ni1nY20nfSwKKyAgICAgICAgeydhZWFkJzogVHJ1ZSwKKyAgICAgICAgICdhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdhdXRoJzogJ2F1dGgtcnNhJywKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2RpZ2VzdCc6IE5vbmUsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICdrZWEnOiAna3gtZWNkaGUnLAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS4yJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4LAorICAgICAgICAgJ3N5bW1ldHJpYyc6ICdhZXMtMTI4LWdjbSd9XQorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4wLjIrCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKICAgIExvYWQgYSBzZXQgb2YgZGVmYXVsdCAiY2VydGlmaWNhdGlvbiBhdXRob3JpdHkiIChDQSkgY2VydGlmaWNhdGVzIGZyb20KQEAgLTEzOTcsNyArMTU0Niw3IEBACiAKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9RmFsc2UsIFwKICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIFwKLSAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgV3JhcCBhbiBleGlzdGluZyBQeXRob24gc29ja2V0ICpzb2NrKiBhbmQgcmV0dXJuIGFuIDpjbGFzczpgU1NMU29ja2V0YAogICAgb2JqZWN0LiAgKnNvY2sqIG11c3QgYmUgYSA6ZGF0YTpgfnNvY2tldC5TT0NLX1NUUkVBTWAgc29ja2V0OyBvdGhlciBzb2NrZXQKQEAgLTE0MTQsMTkgKzE1NjMsMjcgQEAKICAgIHF1aXRlIHNpbWlsYXJseSB0byBIVFRQIHZpcnR1YWwgaG9zdHMuIFNwZWNpZnlpbmcgKnNlcnZlcl9ob3N0bmFtZSogd2lsbAogICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqc2VydmVyX3NpZGUqIGlzIHRydWUuCiAKKyAgICpzZXNzaW9uKiwgc2VlIDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWx3YXlzIGFsbG93IGEgc2VydmVyX2hvc3RuYW1lIHRvIGJlIHBhc3NlZCwgZXZlbiBpZiBPcGVuU1NMIGRvZXMgbm90CiAgICAgICBoYXZlIFNOSS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpzZXNzaW9uKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBieSB3cmFwcGluZyB0aGUgQklPIG9iamVjdHMKICAgICppbmNvbWluZyogYW5kICpvdXRnb2luZyouIFRoZSBTU0wgcm91dGluZXMgd2lsbCByZWFkIGlucHV0IGRhdGEgZnJvbSB0aGUKICAgIGluY29taW5nIEJJTyBhbmQgd3JpdGUgZGF0YSB0byB0aGUgb3V0Z29pbmcgQklPLgogCi0gICBUaGUgKnNlcnZlcl9zaWRlKiBhbmQgKnNlcnZlcl9ob3N0bmFtZSogcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMKLSAgIGluIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YC4KKyAgIFRoZSAqc2VydmVyX3NpZGUqLCAqc2VydmVyX2hvc3RuYW1lKiBhbmQgKnNlc3Npb24qIHBhcmFtZXRlcnMgaGF2ZSB0aGUKKyAgIHNhbWUgbWVhbmluZyBhcyBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNlc3Npb25fc3RhdHMoKQogCkBAIC0xNDc4LDYgKzE2MzUsMTIgQEAKICAgICAgIHRvIHNldCBvcHRpb25zLCBub3QgdG8gY2xlYXIgdGhlbS4gIEF0dGVtcHRpbmcgdG8gY2xlYXIgYW4gb3B0aW9uCiAgICAgICAoYnkgcmVzZXR0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMpIHdpbGwgcmFpc2UgYSBgYFZhbHVlRXJyb3JgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0Lm9wdGlvbnNgIHJldHVybnMgOmNsYXNzOmBPcHRpb25zYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkub3B0aW9ucworICAgICAgICAgPE9wdGlvbnMuT1BfQUxMfE9QX05PX1NTTHYzfE9QX05PX1NTTHYyfE9QX05PX0NPTVBSRVNTSU9OOiAyMTk3OTQ3MzkxPgorCiAuLiBhdHRyaWJ1dGU6OiBTU0xDb250ZXh0LnByb3RvY29sCiAKICAgIFRoZSBwcm90b2NvbCB2ZXJzaW9uIGNob3NlbiB3aGVuIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dC4gIFRoaXMgYXR0cmlidXRlCkBAIC0xNDkyLDEyICsxNjU1LDIzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5RmxhZ3NgIGZsYWdzOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfZmxhZ3MKKyAgICAgICAgIDxWZXJpZnlGbGFncy5WRVJJRllfWDUwOV9UUlVTVEVEX0ZJUlNUOiAzMjc2OD4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC52ZXJpZnlfbW9kZQogCiAgICBXaGV0aGVyIHRvIHRyeSB0byB2ZXJpZnkgb3RoZXIgcGVlcnMnIGNlcnRpZmljYXRlcyBhbmQgaG93IHRvIGJlaGF2ZQogICAgaWYgdmVyaWZpY2F0aW9uIGZhaWxzLiAgVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBvbmUgb2YKICAgIDpkYXRhOmBDRVJUX05PTkVgLCA6ZGF0YTpgQ0VSVF9PUFRJT05BTGAgb3IgOmRhdGE6YENFUlRfUkVRVUlSRURgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgIHJldHVybnMgOmNsYXNzOmBWZXJpZnlNb2RlYCBlbnVtOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfbW9kZQorICAgICAgICAgPFZlcmlmeU1vZGUuQ0VSVF9SRVFVSVJFRDogMj4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNlcnRpZmljYXRlcwogCkBAIC0xOTE2LDYgKzIwOTAsOCBAQAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfc2lkZWAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX2hvc3RuYW1lYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uX3JldXNlZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LmdldHBlZXJjZXJ0YApAQCAtMTk5Nyw2ICsyMTczLDIyIEBACiAgICAgICBiZWNvbWUgdHJ1ZSBhZnRlciBhbGwgZGF0YSBjdXJyZW50bHkgaW4gdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFkLgogCiAKK1NTTCBzZXNzaW9uCistLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBTU0xTZXNzaW9uCisKKyAgIFNlc3Npb24gb2JqZWN0IHVzZWQgYnkgOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlkCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lb3V0CisgICAuLiBhdHRyaWJ1dGU6OiB0aWNrZXRfbGlmZXRpbWVfaGludAorICAgLi4gYXR0cmlidXRlOjogaGFzX3RpY2tldAorCisKIC4uIF9zc2wtc2VjdXJpdHk6CiAKIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCkBAIC0yMDYzLDE4ICsyMjU1LDIwIEBACiAKIFNTTCB2ZXJzaW9ucyAyIGFuZCAzIGFyZSBjb25zaWRlcmVkIGluc2VjdXJlIGFuZCBhcmUgdGhlcmVmb3JlIGRhbmdlcm91cyB0bwogdXNlLiAgSWYgeW91IHdhbnQgbWF4aW11bSBjb21wYXRpYmlsaXR5IGJldHdlZW4gY2xpZW50cyBhbmQgc2VydmVycywgaXQgaXMKLXJlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU2AgYXMgdGhlIHByb3RvY29sIHZlcnNpb24gYW5kIHRoZW4KLWRpc2FibGUgU1NMdjIgYW5kIFNTTHYzIGV4cGxpY2l0bHkgdXNpbmcgdGhlIDpkYXRhOmBTU0xDb250ZXh0Lm9wdGlvbnNgCi1hdHRyaWJ1dGU6OgorcmVjb21tZW5kZWQgdG8gdXNlIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAgb3IKKzpjb25zdDpgUFJPVE9DT0xfVExTX1NFUlZFUmAgYXMgdGhlIHByb3RvY29sIHZlcnNpb24uIFNTTHYyIGFuZCBTU0x2MyBhcmUKK2Rpc2FibGVkIGJ5IGRlZmF1bHQuCiAKLSAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MwotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisgICA+Pj4gY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQorICAgPj4+IGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzEKKwogCiBUaGUgU1NMIGNvbnRleHQgY3JlYXRlZCBhYm92ZSB3aWxsIG9ubHkgYWxsb3cgVExTdjEuMiBhbmQgbGF0ZXIgKGlmCi1zdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0pIGNvbm5lY3Rpb25zLgorc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucyB0byBhIHNlcnZlci4gOmNvbnN0OmBQUk9UT0NPTF9UTFNfQ0xJRU5UYAoraW1wbGllcyBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdC4gWW91IGhhdmUgdG8KK2xvYWQgY2VydGlmaWNhdGVzIGludG8gdGhlIGNvbnRleHQuCisKIAogQ2lwaGVyIHNlbGVjdGlvbgogJycnJycnJycnJycnJycnJwpAQCAtMjA4NSw4ICsyMjc5LDkgQEAKIHNzbCBtb2R1bGUgZGlzYWJsZXMgY2VydGFpbiB3ZWFrIGNpcGhlcnMgYnkgZGVmYXVsdCwgYnV0IHlvdSBtYXkgd2FudAogdG8gZnVydGhlciByZXN0cmljdCB0aGUgY2lwaGVyIGNob2ljZS4gQmUgc3VyZSB0byByZWFkIE9wZW5TU0wncyBkb2N1bWVudGF0aW9uCiBhYm91dCB0aGUgYGNpcGhlciBsaXN0IGZvcm1hdCA8aHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9hcHBzL2NpcGhlcnMuaHRtbCNDSVBIRVItTElTVC1GT1JNQVQ+YF8uCi1JZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZSB0aGUKLWBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyIHN5c3RlbS4KK0lmIHlvdSB3YW50IHRvIGNoZWNrIHdoaWNoIGNpcGhlcnMgYXJlIGVuYWJsZWQgYnkgYSBnaXZlbiBjaXBoZXIgbGlzdCwgdXNlCis6bWV0aDpgU1NMQ29udGV4dC5nZXRfY2lwaGVyc2Agb3IgdGhlIGBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyCitzeXN0ZW0uCiAKIE11bHRpLXByb2Nlc3NpbmcKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0IGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKaW5kZXggNzY4NTYyMS4uMmFhNzc4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKQEAgLTM5LDYgKzM5LDcgQEAKIAogPT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmZ1bmM6YG1lYW5gICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoImF2ZXJhZ2UiKSBvZiBkYXRhLgorOmZ1bmM6YGhhcm1vbmljX21lYW5gICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5gICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5fbG93YCAgICAgICBMb3cgbWVkaWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2hpZ2hgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTY4LDggKzY5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBtZWFuKGRhdGEpCiAKLSAgIFJldHVybiB0aGUgc2FtcGxlIGFyaXRobWV0aWMgbWVhbiBvZiAqZGF0YSosIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3Igb2YKLSAgIHJlYWwtdmFsdWVkIG51bWJlcnMuCisgICBSZXR1cm4gdGhlIHNhbXBsZSBhcml0aG1ldGljIG1lYW4gb2YgKmRhdGEqIHdoaWNoIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgYXJpdGhtZXRpYyBtZWFuIGlzIHRoZSBzdW0gb2YgdGhlIGRhdGEgZGl2aWRlZCBieSB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cy4gIEl0IGlzIGNvbW1vbmx5IGNhbGxlZCAidGhlIGF2ZXJhZ2UiLCBhbHRob3VnaCBpdCBpcyBvbmx5IG9uZSBvZiBtYW55CkBAIC0xMTEsMTAgKzExMSw0MyBAQAogICAgICAgYGBtZWFuKGRhdGEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgdHJ1ZSBwb3B1bGF0aW9uIG1lYW4gzrwuCiAKIAorLi4gZnVuY3Rpb246OiBoYXJtb25pY19tZWFuKGRhdGEpCisKKyAgIFJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiAqZGF0YSosIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3Igb2YKKyAgIHJlYWwtdmFsdWVkIG51bWJlcnMuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuLCBzb21ldGltZXMgY2FsbGVkIHRoZSBzdWJjb250cmFyeSBtZWFuLCBpcyB0aGUKKyAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgOmZ1bmM6YG1lYW5gIG9mIHRoZSByZWNpcHJvY2FscyBvZiB0aGUKKyAgIGRhdGEuIEZvciBleGFtcGxlLCB0aGUgaGFybW9uaWMgbWVhbiBvZiB0aHJlZSB2YWx1ZXMgKmEqLCAqYiogYW5kICpjKgorICAgd2lsbCBiZSBlcXVpdmFsZW50IHRvIGBgMy8oMS9hICsgMS9iICsgMS9jKWBgLgorCisgICBUaGUgaGFybW9uaWMgbWVhbiBpcyBhIHR5cGUgb2YgYXZlcmFnZSwgYSBtZWFzdXJlIG9mIHRoZSBjZW50cmFsCisgICBsb2NhdGlvbiBvZiB0aGUgZGF0YS4gIEl0IGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMKKyAgIHdoaWNoIGFyZSByYXRlcyBvciByYXRpb3MsIGZvciBleGFtcGxlIHNwZWVkcy4gRm9yIGV4YW1wbGU6CisKKyAgIFN1cHBvc2UgYW4gaW52ZXN0b3IgcHVyY2hhc2VzIGFuIGVxdWFsIHZhbHVlIG9mIHNoYXJlcyBpbiBlYWNoIG9mCisgICB0aHJlZSBjb21wYW5pZXMsIHdpdGggUC9FIChwcmljZS9lYXJuaW5nKSByYXRpb3Mgb2YgMi41LCAzIGFuZCAxMC4KKyAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAgIDMuNgorCisgICBVc2luZyB0aGUgYXJpdGhtZXRpYyBtZWFuIHdvdWxkIGdpdmUgYW4gYXZlcmFnZSBvZiBhYm91dCA1LjE2Nywgd2hpY2gKKyAgIGlzIHRvbyBoaWdoLgorCisgICA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgIGlzIHJhaXNlZCBpZiAqZGF0YSogaXMgZW1wdHksIG9yIGFueSBlbGVtZW50CisgICBpcyBsZXNzIHRoYW4gemVyby4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gZnVuY3Rpb246OiBtZWRpYW4oZGF0YSkKIAogICAgUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLCB1c2luZyB0aGUgY29tbW9uICJtZWFuIG9mCiAgICBtaWRkbGUgdHdvIiBtZXRob2QuICBJZiAqZGF0YSogaXMgZW1wdHksIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkLgorICAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgbWVkaWFuIGlzIGEgcm9idXN0IG1lYXN1cmUgb2YgY2VudHJhbCBsb2NhdGlvbiwgYW5kIGlzIGxlc3MgYWZmZWN0ZWQgYnkKICAgIHRoZSBwcmVzZW5jZSBvZiBvdXRsaWVycyBpbiB5b3VyIGRhdGEuICBXaGVuIHRoZSBudW1iZXIgb2YgZGF0YSBwb2ludHMgaXMKQEAgLTE0Miw3ICsxNzUsNyBAQAogLi4gZnVuY3Rpb246OiBtZWRpYW5fbG93KGRhdGEpCiAKICAgIFJldHVybiB0aGUgbG93IG1lZGlhbiBvZiBudW1lcmljIGRhdGEuICBJZiAqZGF0YSogaXMgZW1wdHksCi0gICA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgIGlzIHJhaXNlZC4KKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkLiAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgbG93IG1lZGlhbiBpcyBhbHdheXMgYSBtZW1iZXIgb2YgdGhlIGRhdGEgc2V0LiAgV2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBzbWFsbGVyIG9mCkBAIC0xNjIsNyArMTk1LDcgQEAKIC4uIGZ1bmN0aW9uOjogbWVkaWFuX2hpZ2goZGF0YSkKIAogICAgUmV0dXJuIHRoZSBoaWdoIG1lZGlhbiBvZiBkYXRhLiAgSWYgKmRhdGEqIGlzIGVtcHR5LCA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgCi0gICBpcyByYWlzZWQuCisgICBpcyByYWlzZWQuICAqZGF0YSogY2FuIGJlIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3IuCiAKICAgIFRoZSBoaWdoIG1lZGlhbiBpcyBhbHdheXMgYSBtZW1iZXIgb2YgdGhlIGRhdGEgc2V0LiAgV2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBsYXJnZXIgb2YKQEAgLTE4Myw3ICsyMTYsNyBAQAogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiBvZiBncm91cGVkIGNvbnRpbnVvdXMgZGF0YSwgY2FsY3VsYXRlZCBhcyB0aGUgNTB0aAogICAgcGVyY2VudGlsZSwgdXNpbmcgaW50ZXJwb2xhdGlvbi4gIElmICpkYXRhKiBpcyBlbXB0eSwgOmV4YzpgU3RhdGlzdGljc0Vycm9yYAotICAgaXMgcmFpc2VkLgorICAgaXMgcmFpc2VkLiAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICAuLiBkb2N0ZXN0OjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDcxY2I3ZjIuLjlhNGY0MmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTEzNjUsNiArMTM2NSwxMSBAQAogICAgVGhlIDphdHRyOmB+cmFuZ2Uuc3RhcnRgLCA6YXR0cjpgfnJhbmdlLnN0b3BgIGFuZCA6YXR0cjpgfnJhbmdlLnN0ZXBgCiAgICBhdHRyaWJ1dGVzLgogCisuLiBzZWVhbHNvOjoKKworICAgKiBUaGUgYGxpbnNwYWNlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc5MDAwLz5gXworICAgICBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uIG9mIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nCisgICAgIHBvaW50IGFwcGxpY2F0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBzdHJpbmc7IHRleHQgc2VxdWVuY2UgdHlwZQpAQCAtMTQ1NSw4ICsxNDYwLDggQEAKIAogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGBgc3RyYGAgY2xhc3MgYW5kIGl0cyBtZXRob2RzLCBzZWUKICAgIDpyZWY6YHRleHRzZXFgIGFuZCB0aGUgOnJlZjpgc3RyaW5nLW1ldGhvZHNgIHNlY3Rpb24gYmVsb3cuICBUbyBvdXRwdXQKLSAgIGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlIDpyZWY6YGZvcm1hdHN0cmluZ3NgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwKLSAgIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYAorICAgc2VjdGlvbnMuICBJbiBhZGRpdGlvbiwgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KIAogCiAuLiBpbmRleDo6CkBAIC0yMDYwLDggKzIwNjUsOCBAQAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBzdHJpbmcgKCUpCiAgICBzaW5nbGU6IGludGVycG9sYXRpb24sIHN0cmluZyAoJSkKLSAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nCi0gICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGlvbgorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRpbmcsIHByaW50ZgorICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24sIHByaW50ZgogICAgc2luZ2xlOiBwcmludGYtc3R5bGUgZm9ybWF0dGluZwogICAgc2luZ2xlOiBzcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCkBAIC0yMDcxLDkgKzIwNzYsMTAgQEAKIAogICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBleGhpYml0IGEgdmFyaWV0eSBvZiBxdWlya3MgdGhhdAogICAgbGVhZCB0byBhIG51bWJlciBvZiBjb21tb24gZXJyb3JzIChzdWNoIGFzIGZhaWxpbmcgdG8gZGlzcGxheSB0dXBsZXMgYW5kCi0gICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCi0gICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMsIGFuZCBhbHNvIHByb3ZpZGVzIGEgZ2VuZXJhbGx5IG1vcmUgcG93ZXJmdWwsCi0gICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaCB0byBmb3JtYXR0aW5nIHRleHQuCisgICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6cmVmOmBmb3JtYXR0ZWQKKyAgIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgb3IgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycy4gIFRoZXNlIGFsdGVybmF0aXZlcyBhbHNvIHByb3ZpZGUgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoZXMgdG8gZm9ybWF0dGluZyB0ZXh0LgogCiBTdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3IgKmludGVycG9sYXRpb24qIG9wZXJhdG9yLgpAQCAtMjYzMCw4ICsyNjM2LDggQEAKICAgIFRoZSBwcmVmaXgoZXMpIHRvIHNlYXJjaCBmb3IgbWF5IGJlIGFueSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAKLS4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCi0gICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSkKKy4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZSwgZGVsZXRlPWInJykKKyAgICAgICAgICAgIGJ5dGVhcnJheS50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCiAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgd2hlcmUgYWxsIGJ5dGVzIG9jY3VycmluZyBpbgogICAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpkZWxldGUqIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZyBieXRlcyBoYXZlCkBAIC0yNjQ3LDYgKzI2NTMsOSBAQAogICAgICAgPj4+IGIncmVhZCB0aGlzIHNob3J0IHRleHQnLnRyYW5zbGF0ZShOb25lLCBiJ2FlaW91JykKICAgICAgIGIncmQgdGhzIHNocnQgdHh0JwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlbGV0ZSogaXMgbm93IHN1cHBvcnRlZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCisKIAogVGhlIGZvbGxvd2luZyBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBoYXZlIGRlZmF1bHQgYmVoYXZpb3VycwogdGhhdCBhc3N1bWUgdGhlIHVzZSBvZiBBU0NJSSBjb21wYXRpYmxlIGJpbmFyeSBmb3JtYXRzLCBidXQgY2FuIHN0aWxsIGJlIHVzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IDA1NDE4YTkuLmEwOTc3YjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtMTg4LDcgKzE4OCw5IEBACiAKIFRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIGFuZCB0aGUgOmNsYXNzOmBGb3JtYXR0ZXJgIGNsYXNzIHNoYXJlIHRoZSBzYW1lCiBzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiA6Y2xhc3M6YEZvcm1hdHRlcmAsCi1zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4KK3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlIHN5bnRheCBpcworcmVsYXRlZCB0byB0aGF0IG9mIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCBidXQKK3RoZXJlIGFyZSBkaWZmZXJlbmNlcy4KIAogRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlcyBgYHt9YGAuCiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbCB0ZXh0LCB3aGljaCBpcwpAQCAtMjgzLDcgKzI4NSw4IEBACiAKICJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkIHdpdGhpbiBhCiBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZCAoc2VlCi06cmVmOmBmb3JtYXRzdHJpbmdzYCkuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KKzpyZWY6YGZvcm1hdHN0cmluZ3NgIGFuZCA6cmVmOmBmLXN0cmluZ3NgKS4KK1RoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbgogOmZ1bmM6YGZvcm1hdGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3cgdGhlIGZvcm1hdAogc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC4KIApAQCAtMjk3LDE4ICszMDAsMjAgQEAKIFRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6CiAKIC4uIHByb2R1Y3Rpb25saXN0Ojogc2YKLSAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdWyxdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQorICAgZm9ybWF0X3NwZWM6IFtbYGZpbGxgXWBhbGlnbmBdW2BzaWduYF1bI11bMF1bYHdpZHRoYF1bYGdyb3VwaW5nX29wdGlvbmBdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQogICAgZmlsbDogPGFueSBjaGFyYWN0ZXI+CiAgICBhbGlnbjogIjwiIHwgIj4iIHwgIj0iIHwgIl4iCiAgICBzaWduOiAiKyIgfCAiLSIgfCAiICIKICAgIHdpZHRoOiBgaW50ZWdlcmAKKyAgIGdyb3VwaW5nX29wdGlvbjogIl8iIHwgIiwiCiAgICBwcmVjaXNpb246IGBpbnRlZ2VyYAogICAgdHlwZTogImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiCiAKIElmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKgogY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWYgb21pdHRlZC4KIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICgiYGB7YGAiIG9yICJgYH1gYCIpIGFzCi10aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAKK3RoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCis8Zi1zdHJpbmdzPmAgb3Igd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNlcnQgYSBjdXJseSBicmFjZQogd2l0aCBhIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgbGltaXRhdGlvbiBkb2Vzbid0CiBhZmZlY3QgdGhlIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLgpAQCAtMzc0LDYgKzM3OSwxNiBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgIEFkZGVkIHRoZSBgYCcsJ2BgIG9wdGlvbiAoc2VlIGFsc28gOnBlcDpgMzc4YCkuCiAKK1RoZSBgYCdfJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSB0aG91c2FuZHMKK3NlcGFyYXRvciBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGFuZCBmb3IgaW50ZWdlcgorcHJlc2VudGF0aW9uIHR5cGUgYGAnZCdgYC4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBgYCdiJ2BgLAorYGAnbydgYCwgYGAneCdgYCwgYW5kIGBgJ1gnYGAsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNAorZGlnaXRzLiAgRm9yIG90aGVyIHByZXNlbnRhdGlvbiB0eXBlcywgc3BlY2lmeWluZyB0aGlzIG9wdGlvbiBpcyBhbgorZXJyb3IuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBBZGRlZCB0aGUgYGAnXydgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDUxNWApLgorCiAqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90CiBzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggYWUyZTM4Zi4uY2MzMDE3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0yMTYsNiArMjE2LDggQEAKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBOYGAgIHwgOmM6dHlwZTpgc2l6ZV90YCAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBlYGAgIHwgXCg3KSAgICAgICAgICAgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKQEAgLTIzMCw2ICsyMzIsMTAgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAnbidgYCBhbmQgYGAnTidgYCBmb3JtYXRzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ2UnYGAgZm9ybWF0LgorCisKIE5vdGVzOgogCiAoMSkKQEAgLTI1Nyw5ICsyNjMsMTAgQEAKICAgIGZpdHMgeW91ciBhcHBsaWNhdGlvbi4KIAogKDUpCi0gICBGb3IgdGhlIGBgJ2YnYGAgYW5kIGBgJ2QnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZCByZXByZXNlbnRhdGlvbiB1c2VzCi0gICB0aGUgSUVFRSA3NTQgYmluYXJ5MzIgKGZvciBgYCdmJ2BgKSBvciBiaW5hcnk2NCAoZm9yIGBgJ2QnYGApIGZvcm1hdCwKLSAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KKyAgIEZvciB0aGUgYGAnZidgYCwgYGAnZCdgYCBhbmQgYGAnZSdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkCisgICByZXByZXNlbnRhdGlvbiB1c2VzIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiwgYmluYXJ5NjQgb3IgYmluYXJ5MTYgZm9ybWF0IChmb3IKKyAgIGBgJ2YnYGAsIGBgJ2QnYGAgb3IgYGAnZSdgYCByZXNwZWN0aXZlbHkpLCByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgogCiAoNikKICAgIFRoZSBgYCdQJ2BgIGZvcm1hdCBjaGFyYWN0ZXIgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUgYnl0ZSBvcmRlcmluZwpAQCAtMjY4LDYgKzI3NSwxNiBAQAogICAgb24gdGhlIGhvc3Qgc3lzdGVtLiBUaGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCBpbnRlcnByZXQgdGhpcyBhcyBuYXRpdmUKICAgIG9yZGVyaW5nLCBzbyB0aGUgYGAnUCdgYCBmb3JtYXQgaXMgbm90IGF2YWlsYWJsZS4KIAorKDcpCisgICBUaGUgSUVFRSA3NTQgYmluYXJ5MTYgImhhbGYgcHJlY2lzaW9uIiB0eXBlIHdhcyBpbnRyb2R1Y2VkIGluIHRoZSAyMDA4CisgICByZXZpc2lvbiBvZiB0aGUgYElFRUUgNzU0IHN0YW5kYXJkIDxpZWVlIDc1NCBzdGFuZGFyZF8+YF8uIEl0IGhhcyBhIHNpZ24KKyAgIGJpdCwgYSA1LWJpdCBleHBvbmVudCBhbmQgMTEtYml0IHByZWNpc2lvbiAod2l0aCAxMCBiaXRzIGV4cGxpY2l0bHkgc3RvcmVkKSwKKyAgIGFuZCBjYW4gcmVwcmVzZW50IG51bWJlcnMgYmV0d2VlbiBhcHByb3hpbWF0ZWx5IGBgNi4xZS0wNWBgIGFuZCBgYDYuNWUrMDRgYAorICAgYXQgZnVsbCBwcmVjaXNpb24uIFRoaXMgdHlwZSBpcyBub3Qgd2lkZWx5IHN1cHBvcnRlZCBieSBDIGNvbXBpbGVyczogb24gYQorICAgdHlwaWNhbCBtYWNoaW5lLCBhbiB1bnNpZ25lZCBzaG9ydCBjYW4gYmUgdXNlZCBmb3Igc3RvcmFnZSwgYnV0IG5vdCBmb3IgbWF0aAorICAgb3BlcmF0aW9ucy4gU2VlIHRoZSBXaWtpcGVkaWEgcGFnZSBvbiB0aGUgYGhhbGYtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50CisgICBmb3JtYXQgPGhhbGYgcHJlY2lzaW9uIGZvcm1hdF8+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIAogQSBmb3JtYXQgY2hhcmFjdGVyIG1heSBiZSBwcmVjZWRlZCBieSBhbiBpbnRlZ3JhbCByZXBlYXQgY291bnQuICBGb3IgZXhhbXBsZSwKIHRoZSBmb3JtYXQgc3RyaW5nIGBgJzRoJ2BgIG1lYW5zIGV4YWN0bHkgdGhlIHNhbWUgYXMgYGAnaGhoaCdgYC4KQEAgLTQzMCwzICs0NDcsNyBAQAogICAgICAgVGhlIGNhbGN1bGF0ZWQgc2l6ZSBvZiB0aGUgc3RydWN0IChhbmQgaGVuY2Ugb2YgdGhlIGJ5dGVzIG9iamVjdCBwcm9kdWNlZAogICAgICAgYnkgdGhlIDptZXRoOmBwYWNrYCBtZXRob2QpIGNvcnJlc3BvbmRpbmcgdG8gOmF0dHI6YGZvcm1hdGAuCiAKKworLi4gX2hhbGYgcHJlY2lzaW9uIGZvcm1hdDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFsZi1wcmVjaXNpb25fZmxvYXRpbmctcG9pbnRfZm9ybWF0CisKKy4uIF9pZWVlIDc1NCBzdGFuZGFyZDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZ19wb2ludCNJRUVFXzc1NC0yMDA4CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdCBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CmluZGV4IGMxYjI4ZjguLmFkMmFiZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CkBAIC0zOCw3ICszOCw4IEBACiAKIAogLi4gZnVuY3Rpb246OiBydW4oYXJncywgKiwgc3RkaW49Tm9uZSwgaW5wdXQ9Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLFwKLSAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlKQorICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQogCiAgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiBhIDpjbGFzczpgQ29tcGxldGVkUHJvY2Vzc2AgaW5zdGFuY2UuCkBAIC02MCwxNSArNjEsMjAgQEAKIAogICAgVGhlICppbnB1dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi5jb21tdW5pY2F0ZWAgYW5kIHRodXMgdG8gdGhlCiAgICBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB1c2VkIGl0IG11c3QgYmUgYSBieXRlIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiAgV2hlbiB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0Ci0gICBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aCBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heQotICAgbm90IGJlIHVzZWQgYXMgd2VsbC4KKyAgICplbmNvZGluZyogb3IgKmVycm9ycyogaXMgc3BlY2lmaWVkIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIHRydWUuICBXaGVuCisgICB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoCisgICBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heSBub3QgYmUgdXNlZCBhcyB3ZWxsLgogCiAgICBJZiAqY2hlY2sqIGlzIHRydWUsIGFuZCB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlLCBhCiAgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gQXR0cmlidXRlcyBvZiB0aGF0CiAgICBleGNlcHRpb24gaG9sZCB0aGUgYXJndW1lbnRzLCB0aGUgZXhpdCBjb2RlLCBhbmQgc3Rkb3V0IGFuZCBzdGRlcnIgaWYgdGhleQogICAgd2VyZSBjYXB0dXJlZC4KIAorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLAorICAgZmlsZSBvYmplY3RzIGZvciBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgdXNpbmcgdGhlCisgICBzcGVjaWZpZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogb3IgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZGVmYXVsdC4KKyAgIE90aGVyd2lzZSwgZmlsZSBvYmplY3RzIGFyZSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuCisKICAgIEV4YW1wbGVzOjoKIAogICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dApAQCAtODUsNiArOTEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgICAgIEFkZGVkICplbmNvZGluZyogYW5kICplcnJvcnMqIHBhcmFtZXRlcnMKKwogLi4gY2xhc3M6OiBDb21wbGV0ZWRQcm9jZXNzCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KQEAgLTEwNCw4ICsxMTQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CiAKICAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gYGBOb25lYGAgaWYgc3Rkb3V0Ci0gICAgICB3YXMgbm90IGNhcHR1cmVkLgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVuY29kaW5nIG9yIGVycm9ycy4gYGBOb25lYGAgaWYgc3Rkb3V0IHdhcyBub3QKKyAgICAgIGNhcHR1cmVkLgogCiAgICAgICBJZiB5b3UgcmFuIHRoZSBwcm9jZXNzIHdpdGggYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYCwgc3Rkb3V0IGFuZAogICAgICAgc3RkZXJyIHdpbGwgYmUgY29tYmluZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGFuZCA6YXR0cjpgc3RkZXJyYCB3aWxsIGJlCkBAIC0xMTQsOCArMTI0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgogCiAgICAgICBDYXB0dXJlZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIGBgTm9uZWBgIGlmIHN0ZGVycgotICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBhbiBlbmNvZGluZyBvciBlcnJvcnMuIGBgTm9uZWBgIGlmIHN0ZGVyciB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgLi4gbWV0aG9kOjogY2hlY2tfcmV0dXJuY29kZSgpCiAKQEAgLTI0OSwxOSArMjU5LDIyIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBGYWxzZWBgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMKLSAgIGRvbmUuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIHRydWUsCisgICB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBpbiB0ZXh0CisgICBtb2RlIHVzaW5nIHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgb3IgdGhlCisgICBkZWZhdWx0cyBmb3IgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXNlIGZpbGUgb2JqZWN0cwotICAgd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUKLSAgIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLiAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKLSAgIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvcgotICAgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUKLSAgIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqCi0gICBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwKKyAgIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MKKyAgIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisKKyAgIElmIHRleHQgbW9kZSBpcyBub3QgdXNlZCwgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzCisgICBiaW5hcnkgc3RyZWFtcy4gTm8gZW5jb2Rpbmcgb3IgbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycy4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMwNiw3ICszMTksOCBAQAogICAgICAgICAgICAgICAgICBzdGRlcnI9Tm9uZSwgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLCByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgXAotICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpCisgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwgKiwgXAorICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgRXhlY3V0ZSBhIGNoaWxkIHByb2dyYW0gaW4gYSBuZXcgcHJvY2Vzcy4gIE9uIFBPU0lYLCB0aGUgY2xhc3MgdXNlcwogICAgOm1ldGg6YG9zLmV4ZWN2cGAtbGlrZSBiZWhhdmlvciB0byBleGVjdXRlIHRoZSBjaGlsZCBwcm9ncmFtLiAgT24gV2luZG93cywKQEAgLTQ4MiwxMCArNDk2LDE0IEBACiAKICAgIC4uIF9zaWRlLWJ5LXNpZGUgYXNzZW1ibHk6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZGUtYnktU2lkZV9Bc3NlbWJseQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLCBhcwotICAgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLCBvdGhlcndpc2UgdGhleSBhcmUKLSAgIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgorICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQKKyAgICplcnJvcnMqLCBhcyBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuIElmCisgICAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhleSBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIGRlZmF1bHQKKyAgIGVuY29kaW5nLiBPdGhlcndpc2UsIHRoZXkgYXJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB3ZXJlIGFkZGVkLgogCiAgICBJZiBnaXZlbiwgKnN0YXJ0dXBpbmZvKiB3aWxsIGJlIGEgOmNsYXNzOmBTVEFSVFVQSU5GT2Agb2JqZWN0LCB3aGljaCBpcwogICAgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIGBgQ3JlYXRlUHJvY2Vzc2BgIGZ1bmN0aW9uLgpAQCAtNTAyLDYgKzUyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUG9wZW4gZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcgaWYgdGhlIGNoaWxkCisgICAgICBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKIAogRXhjZXB0aW9ucwogXl5eXl5eXl5eXgpAQCAtNTk3LDExICs2MTksMTIgQEAKICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0IGFuZCBzdGRlcnIsCiAgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKICAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIFRoZSB0eXBlIG9mICppbnB1dCoKLSAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCisgICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBJZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluCisgICB0ZXh0IG1vZGUsICppbnB1dCogbXVzdCBiZSBhIHN0cmluZy4gIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBieXRlcy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgotICAgVGhlIGRhdGEgd2lsbCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBzdHJpbmdzLgorICAgVGhlIGRhdGEgd2lsbCBiZSBzdHJpbmdzIGlmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4gdGV4dCBtb2RlOyBvdGhlcndpc2UsCisgICBieXRlcy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTY2OCwyOCArNjkxLDMwIEBACiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRpbgogCiAgICBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHdyaXRlYWJsZQotICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKgotICAgYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUKLSAgIHN0cmVhbS4gSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzCi0gICBgYE5vbmVgYC4KKyAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKgorICAgYXJndW1lbnRzIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsCisgICB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKgorICAgYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZG91dAogCiAgICBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cyB3ZXJlCisgICBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhCisgICB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90CisgICA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGVycgogCiAgICBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZGVyciogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cworICAgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbQorICAgaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMKKyAgIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtODgyLDcgKzkwNyw5IEBACiAgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgogCkBAIC0xMTM4LDcgKzExNjUsNyBAQAogICAgUmV0dXJuIGBgKHN0YXR1cywgb3V0cHV0KWBgIG9mIGV4ZWN1dGluZyAqY21kKiBpbiBhIHNoZWxsLgogCiAgICBFeGVjdXRlIHRoZSBzdHJpbmcgKmNtZCogaW4gYSBzaGVsbCB3aXRoIDptZXRoOmBQb3Blbi5jaGVja19vdXRwdXRgIGFuZAotICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZDsKKyAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgdXNlZDsKICAgIHNlZSB0aGUgbm90ZXMgb24gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IGQyOGVhNWQuLmRkNTFmZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjY5LDYgKzI2OSwxMSBAQAogICAgdGhlIHByb2Nlc3Mgd2hlbiBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIG5vdAogICAgaW50ZXJjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgorICAgICAgaGFzIGNhdWdodCA6ZXhjOmBTeXN0ZW1FeGl0YCAoc3VjaCBhcyBhbiBlcnJvciBmbHVzaGluZyBidWZmZXJlZCBkYXRhCisgICAgICBpbiB0aGUgc3RhbmRhcmQgc3RyZWFtcyksIHRoZSBleGl0IHN0YXR1cyBpcyBjaGFuZ2VkIHRvIDEyMC4KKwogCiAuLiBkYXRhOjogZmxhZ3MKIApAQCAtNDIzLDI1ICs0MjgsNDIgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpbnRvCi0gICBzeXN0ZW0gZmlsZSBuYW1lcy4gVGhlIHJlc3VsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtOgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlCisgICBmaWxlbmFtZXMgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gRm9yIGJlc3QgY29tcGF0aWJpbGl0eSwgc3RyIHNob3VsZCBiZQorICAgdXNlZCBmb3IgZmlsZW5hbWVzIGluIGFsbCBjYXNlcywgYWx0aG91Z2ggcmVwcmVzZW50aW5nIGZpbGVuYW1lcyBhcyBieXRlcworICAgaXMgYWxzbyBzdXBwb3J0ZWQuIEZ1bmN0aW9ucyBhY2NlcHRpbmcgb3IgcmV0dXJuaW5nIGZpbGVuYW1lcyBzaG91bGQgc3VwcG9ydAorICAgZWl0aGVyIHN0ciBvciBieXRlcyBhbmQgaW50ZXJuYWxseSBjb252ZXJ0IHRvIHRoZSBzeXN0ZW0ncyBwcmVmZXJyZWQKKyAgIHJlcHJlc2VudGF0aW9uLgorCisgICBUaGlzIGVuY29kaW5nIGlzIGFsd2F5cyBBU0NJSS1jb21wYXRpYmxlLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCiAKICAgICogT24gTWFjIE9TIFgsIHRoZSBlbmNvZGluZyBpcyBgYCd1dGYtOCdgYC4KIAotICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIHVzZXIncyBwcmVmZXJlbmNlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mCi0gICAgIG5sX2xhbmdpbmZvKENPREVTRVQpLgorICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAotICAgKiBPbiBXaW5kb3dzIE5UKywgZmlsZSBuYW1lcyBhcmUgVW5pY29kZSBuYXRpdmVseSwgc28gbm8gY29udmVyc2lvbiBpcwotICAgICBwZXJmb3JtZWQuIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHN0aWxsIHJldHVybnMgYGAnbWJjcydgYCwgYXMKLSAgICAgdGhpcyBpcyB0aGUgZW5jb2RpbmcgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSB3aGVuIHRoZXkgZXhwbGljaXRseQotICAgICB3YW50IHRvIGNvbnZlcnQgVW5pY29kZSBzdHJpbmdzIHRvIGJ5dGUgc3RyaW5ncyB0aGF0IGFyZSBlcXVpdmFsZW50IHdoZW4KLSAgICAgdXNlZCBhcyBmaWxlIG5hbWVzLgotCi0gICAqIE9uIFdpbmRvd3MgOXgsIHRoZSBlbmNvZGluZyBpcyBgYCdtYmNzJ2BgLgorICAgKiBPbiBXaW5kb3dzLCB0aGUgZW5jb2RpbmcgbWF5IGJlIGBgJ3V0Zi04J2BgIG9yIGBgJ21iY3MnYGAsIGRlcGVuZGluZworICAgICBvbiB1c2VyIGNvbmZpZ3VyYXRpb24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCByZXN1bHQgY2Fubm90IGJlIGBgTm9uZWBgIGFueW1vcmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBXaW5kb3dzIGlzIG5vIGxvbmdlciBndWFyYW50ZWVkIHRvIHJldHVybiBgYCdtYmNzJ2BgLiBTZWUgOnBlcDpgNTI5YAorICAgICAgYW5kIDpmdW5jOmBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQorCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZSBmaWxlbmFtZXMKKyAgIGFuZCBieXRlcyBmaWxlbmFtZXMuIFRoZSBlbmNvZGluZyBuYW1lIGlzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGdldHJlZmNvdW50KG9iamVjdCkKIApAQCAtNTMwLDI2ICs1NTIsMTUgQEAKICAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGRlc2NyaWJpbmcgdGhlIFdpbmRvd3MgdmVyc2lvbgogICAgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgbmFtZWQgZWxlbWVudHMgYXJlICptYWpvciosICptaW5vciosCiAgICAqYnVpbGQqLCAqcGxhdGZvcm0qLCAqc2VydmljZV9wYWNrKiwgKnNlcnZpY2VfcGFja19taW5vciosCi0gICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCi0gICAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZyB3aGlsZSBhbGwgb3RoZXIgdmFsdWVzIGFyZQorICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgKnByb2R1Y3RfdHlwZSogYW5kCisgICAqcGxhdGZvcm1fdmVyc2lvbiouICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nLAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIGEgMy10dXBsZSBhbmQgYWxsIG90aGVyIHZhbHVlcyBhcmUKICAgIGludGVnZXJzLiBUaGUgY29tcG9uZW50cyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBieSBuYW1lLCBzbwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVswXWBgIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3JgYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmlvcgogICAgdmVyc2lvbnMsIG9ubHkgdGhlIGZpcnN0IDUgZWxlbWVudHMgYXJlIHJldHJpZXZhYmxlIGJ5IGluZGV4aW5nLgogCi0gICAqcGxhdGZvcm0qIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0KLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQbGF0Zm9ybSAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmAwIChWRVJfUExBVEZPUk1fV0lOMzJzKWAgICAgICAgIHwgV2luMzJzIG9uIFdpbmRvd3MgMy4xICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMSAoVkVSX1BMQVRGT1JNX1dJTjMyX1dJTkRPV1MpYCB8IFdpbmRvd3MgOTUvOTgvTUUgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgICAgICAgfCBXaW5kb3dzIE5ULzIwMDAvWFAveDY0ICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAzIChWRVJfUExBVEZPUk1fV0lOMzJfQ0UpYCAgICAgIHwgV2luZG93cyBDRSAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAqcGxhdGZvcm0qIHdpbGwgYmUgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYC4KIAogICAgKnByb2R1Y3RfdHlwZSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIApAQCAtNTY1LDE3ICs1NzYsNDEgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZG9tYWluIGNvbnRyb2xsZXIuICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLQogICAgVGhpcyBmdW5jdGlvbiB3cmFwcyB0aGUgV2luMzIgOmM6ZnVuYzpgR2V0VmVyc2lvbkV4YCBmdW5jdGlvbjsgc2VlIHRoZQogICAgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gb24gOmM6ZnVuYzpgT1NWRVJTSU9OSU5GT0VYYCBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgYWJvdXQgdGhlc2UgZmllbGRzLgogCisgICAqcGxhdGZvcm1fdmVyc2lvbiogcmV0dXJucyB0aGUgYWNjdXJhdGUgbWFqb3IgdmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQKKyAgIGJ1aWxkIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLCByYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0CisgICBpcyBiZWluZyBlbXVsYXRlZCBmb3IgdGhlIHByb2Nlc3MuIEl0IGlzIGludGVuZGVkIGZvciB1c2UgaW4gbG9nZ2luZyByYXRoZXIKKyAgIHRoYW4gZm9yIGZlYXR1cmUgZGV0ZWN0aW9uLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDaGFuZ2VkIHRvIGEgbmFtZWQgdHVwbGUgYW5kIGFkZGVkICpzZXJ2aWNlX3BhY2tfbWlub3IqLAogICAgICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBsYXRmb3JtX3ZlcnNpb24qCisKKworLi4gZnVuY3Rpb246OiBnZXRfYXN5bmNnZW5faG9va3MoKQorCisgICBSZXR1cm5zIGFuICphc3luY2dlbl9ob29rcyogb2JqZWN0LCB3aGljaCBpcyBzaW1pbGFyIHRvIGEKKyAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIG9mIHRoZSBmb3JtIGAoZmlyc3RpdGVyLCBmaW5hbGl6ZXIpYCwKKyAgIHdoZXJlICpmaXJzdGl0ZXIqIGFuZCAqZmluYWxpemVyKiBhcmUgZXhwZWN0ZWQgdG8gYmUgZWl0aGVyIGBgTm9uZWBgIG9yCisgICBmdW5jdGlvbnMgd2hpY2ggdGFrZSBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvcmAgYXMgYW4KKyAgIGFyZ3VtZW50LCBhbmQgYXJlIHVzZWQgdG8gc2NoZWR1bGUgZmluYWxpemF0aW9uIG9mIGFuIGFzeWNocm9ub3VzCisgICBnZW5lcmF0b3IgYnkgYW4gZXZlbnQgbG9vcC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKKyAgICAgIGZvciBkZXRhaWxzLikKKwogCiAuLiBmdW5jdGlvbjo6IGdldF9jb3JvdXRpbmVfd3JhcHBlcigpCiAKQEAgLTEwODEsMTcgKzExMTYsMjMgQEAKICAgICAgIGltcGxlbWVudGF0aW9uIHBsYXRmb3JtLCByYXRoZXIgdGhhbiBwYXJ0IG9mIHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLCBhbmQKICAgICAgIHRodXMgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2FzeW5jZ2VuX2hvb2tzKGZpcnN0aXRlciwgZmluYWxpemVyKQogCi0uLiBmdW5jdGlvbjo6IHNldHRzY2R1bXAob25fZmxhZykKKyAgIEFjY2VwdHMgdHdvIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBjYWxsYWJsZXMgdGhhdCBhY2NlcHQgYW4KKyAgIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yYCBhcyBhbiBhcmd1bWVudC4gVGhlICpmaXJzdGl0ZXIqCisgICBjYWxsYWJsZSB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXMgaXRlcmF0ZWQgZm9yIHRoZQorICAgZmlyc3QgdGltZS4gVGhlICpmaW5hbGl6ZXIqIHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorICAgaXMgYWJvdXQgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCiAKLSAgIEFjdGl2YXRlIGR1bXBpbmcgb2YgVk0gbWVhc3VyZW1lbnRzIHVzaW5nIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyLCBpZgotICAgKm9uX2ZsYWcqIGlzIHRydWUuIERlYWN0aXZhdGUgdGhlc2UgZHVtcHMgaWYgKm9uX2ZsYWcqIGlzIG9mZi4gVGhlIGZ1bmN0aW9uIGlzCi0gICBhdmFpbGFibGUgb25seSBpZiBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggYGAtLXdpdGgtdHNjYGAuIFRvIHVuZGVyc3RhbmQKLSAgIHRoZSBvdXRwdXQgb2YgdGhpcyBkdW1wLCByZWFkIDpmaWxlOmBQeXRob24vY2V2YWwuY2AgaW4gdGhlIFB5dGhvbiBzb3VyY2VzLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLCBhbmQgZm9yIGEgcmVmZXJlbmNlIGV4YW1wbGUgb2YgYQorICAgICAgKmZpbmFsaXplciogbWV0aG9kIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgIGBgYXN5bmNpby5Mb29wLnNodXRkb3duX2FzeW5jZ2Vuc2BgIGluCisgICAgICA6c291cmNlOmBMaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weWAKIAotICAgLi4gaW1wbC1kZXRhaWw6OgotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRpbWF0ZWx5IGJvdW5kIHRvIENQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQKLSAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKKyAgICAgIGZvciBkZXRhaWxzLikKIAogCiAuLiBmdW5jdGlvbjo6IHNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQpAQCAtMTEzMyw2ICsxMTc0LDE4IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIG9uIGEgcHJvdmlzaW9uYWwgYmFzaXMgKHNlZSA6cGVwOmA0MTFgCiAgICAgICBmb3IgZGV0YWlscy4pICBVc2UgaXQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogCisuLiBmdW5jdGlvbjo6IF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpCisKKyAgIENoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgdG8gJ21iY3MnIGFuZAorICAgJ3JlcGxhY2UnIHJlc3BlY3RpdmVseSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVyc2lvbnMgb2YgUHl0aG9uIHByaW9yIHRvIDMuNi4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2AKKyAgIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgogCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CmluZGV4IDAyYWFhYjMuLjA4Yjc0YTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdApAQCAtMTY0LDcgKzE2NCw3IEBACiAuLiBmdW5jdGlvbjo6IGdldF9weXRob25fdmVyc2lvbigpCiAKICAgIFJldHVybiB0aGUgYGBNQUpPUi5NSU5PUmBgIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhcyBhIHN0cmluZy4gIFNpbWlsYXIgdG8KLSAgIGBgc3lzLnZlcnNpb25bOjNdYGAuCisgICBgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3BsYXRmb3JtKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IGI5NTBlNDEuLmY5YzUxNTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtNDMsNiArNDMsMTcgQEAKICAgIDpleGM6YEVPRkVycm9yYCB3aGVuIHRoZSBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZCwgYmVjYXVzZSB0aGV5IGNhbiByZXR1cm4KICAgIGFuIGVtcHR5IHN0cmluZyBmb3Igb3RoZXIgcmVhc29ucy4gIFNlZSB0aGUgaW5kaXZpZHVhbCBkZXNjcmlwdGlvbnMgYmVsb3cuCiAKKyAgIEEgOmNsYXNzOmBUZWxuZXRgIG9iamVjdCBpcyBhIGNvbnRleHQgbWFuYWdlciBhbmQgY2FuIGJlIHVzZWQgaW4gYQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBlbmRzLCB0aGUKKyAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGlzIGNhbGxlZDo6CisKKyAgICAgICA+Pj4gZnJvbSB0ZWxuZXRsaWIgaW1wb3J0IFRlbG5ldAorICAgICAgID4+PiB3aXRoIFRlbG5ldCgnbG9jYWxob3N0JywgMjMpIGFzIHRuOgorICAgICAgIC4uLiAgICAgdG4uaW50ZXJhY3QoKQorICAgICAgIC4uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBDb250ZXh0IG1hbmFnZXIgc3VwcG9ydCBhZGRlZAorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDU5NTc3ZjAuLmZhYjNlMWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01ODIsNiArNTgyLDQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCisuLiBmdW5jdGlvbjo6IGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksIGJsYWNrbGlzdD0oKSkKKworICAgQXNzZXJ0IHRoYXQgdGhlIGBgX19hbGxfX2BgIHZhcmlhYmxlIG9mICptb2R1bGUqIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5CisgICBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgKm1vZHVsZSouCisKKyAgIFRoZSAqbmFtZV9vZl9tb2R1bGUqIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKSB3aGF0CisgICBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYSBwdWJsaWMKKyAgIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAqbW9kdWxlKiBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYyBBUEkgZnJvbQorICAgb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgYGBjc3ZgYCBhbmQgaXRzIGBgX2NzdmBgKS4KKworICAgVGhlICpleHRyYSogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlIGF1dG9tYXRpY2FsbHkKKyAgIGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlciBgYF9fbW9kdWxlX19gYAorICAgYXR0cmlidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICBUaGUgKmJsYWNrbGlzdCogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mCisgICB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgIEV4YW1wbGUgdXNlOjoKKworICAgICAgaW1wb3J0IGJhcgorICAgICAgaW1wb3J0IGZvbworICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogVHJhbnNpZW50UmVzb3VyY2UoZXhjLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTY2MjZmMi4uYWUxN2Y2ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKICAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAKKyAgICAgYXJlIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTU2NiwxMCArNTcwLDYgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCi0gIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcwotICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgotCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCiAgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggYXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCkBAIC02MzcsMTEgKzYzNywxMSBAQAogICAgICAgICAgaXQgaXMgcG9zc2libGUgdG8gcmVmZXIgdG8gRmVicnVhcnkgMjkuCiAKICAgICAgIDpzYW1wOmBNe219LntufS57ZH1gCi0gICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb3Igd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCisgICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb2Ygd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCiAgICAgICAgICA8PSAqbiogPD0gNSwgMSA8PSAqbSogPD0gMTIsIHdoZXJlIHdlZWsgNSBtZWFucyAidGhlIGxhc3QgKmQqIGRheSBpbgogICAgICAgICAgbW9udGggKm0qIiB3aGljaCBtYXkgb2NjdXIgaW4gZWl0aGVyIHRoZSBmb3VydGggb3IgdGhlIGZpZnRoCiAgICAgICAgICB3ZWVrKS4gV2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIGluIHdoaWNoIHRoZSAqZCondGggZGF5IG9jY3Vycy4gRGF5Ci0gICAgICAgICB6ZXJvIGlzIFN1bmRheS4KKyAgICAgICAgIHplcm8gaXMgYSBTdW5kYXkuCiAKICAgICAgIGBgdGltZWBgIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgYGBvZmZzZXRgYCBleGNlcHQgdGhhdCBubyBsZWFkaW5nIHNpZ24KICAgICAgICgnLScgb3IgJysnKSBpcyBhbGxvd2VkLiBUaGUgZGVmYXVsdCwgaWYgdGltZSBpcyBub3QgZ2l2ZW4sIGlzIDAyOjAwOjAwLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggNTdhNDgzNC4uM2I3NzI3NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC0xMDAsOCArMTAwLDggQEAKICAgIGNhbiBiZSBjb250cm9sbGVkIGJ5IHBhc3NpbmcgYSBuYW1lc3BhY2UgdG8gKmdsb2JhbHMqLgogCiAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlIDptZXRoOmAudGltZWl0YAotICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsIDptZXRoOmAudGltZWl0YAotICAgbXVsdGlwbGUgdGltZXMgYW5kIHJldHVybiBhIGxpc3Qgb2YgcmVzdWx0cy4KKyAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgYW5kIDptZXRoOmAuYXV0b3JhbmdlYCBtZXRob2RzIGFyZSBjb252ZW5pZW5jZQorICAgbWV0aG9kcyB0byBjYWxsIDptZXRoOmAudGltZWl0YCBtdWx0aXBsZSB0aW1lcy4KIAogICAgVGhlIGV4ZWN1dGlvbiB0aW1lIG9mICpzZXR1cCogaXMgZXhjbHVkZWQgZnJvbSB0aGUgb3ZlcmFsbCB0aW1lZCBleGVjdXRpb24gcnVuLgogCkBAIC0xMzQsNiArMTM0LDIzIEBACiAgICAgICAgICAgICB0aW1laXQuVGltZXIoJ2ZvciBpIGluIHJhbmdlKDEwKTogb2N0KGkpJywgJ2djLmVuYWJsZSgpJykudGltZWl0KCkKIAogCisgICAgLi4gbWV0aG9kOjogVGltZXIuYXV0b3JhbmdlKGNhbGxiYWNrPU5vbmUpCisKKyAgICAgICBBdXRvbWF0aWNhbGx5IGRldGVybWluZSBob3cgbWFueSB0aW1lcyB0byBjYWxsIDptZXRoOmAudGltZWl0YC4KKworICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIDptZXRoOmAudGltZWl0YCByZXBlYXRlZGx5CisgICAgICAgc28gdGhhdCB0aGUgdG90YWwgdGltZSA+PSAwLjIgc2Vjb25kLCByZXR1cm5pbmcgdGhlIGV2ZW50dWFsCisgICAgICAgKG51bWJlciBvZiBsb29wcywgdGltZSB0YWtlbiBmb3IgdGhhdCBudW1iZXIgb2YgbG9vcHMpLiBJdCBjYWxscworICAgICAgIDptZXRoOmAudGltZWl0YCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZiB0ZW4gKDEwLAorICAgICAgIDEwMCwgMTAwMCwgLi4uKSB1cCB0byBhIG1heGltdW0gb2Ygb25lIGJpbGxpb24sIHVudGlsIHRoZSB0aW1lIHRha2VuCisgICAgICAgaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgYGBOb25lYGAsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAgICAuLiBtZXRob2Q6OiBUaW1lci5yZXBlYXQocmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwKQogCiAgICAgICBDYWxsIDptZXRoOmAudGltZWl0YCBhIGZldyB0aW1lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdAppbmRleCA0MWYyMGRkLi4xMWVkNzU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CkBAIC0xMCw2ICsxMCwxMCBAQAogCiAuLiBpbmRleDo6IHNpbmdsZTogVGl4CiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFRoaXMgVGsgZXh0ZW5zaW9uIGlzIHVubWFpbnRhaW5lZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIG5ldyBjb2RlLiAgVXNlCisgICA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogVGhlIDptb2Q6YHRraW50ZXIudGl4YCAoVGsgSW50ZXJmYWNlIEV4dGVuc2lvbikgbW9kdWxlIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDNjMWQ5YmIuLjA2NmVlOTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtMjkxLDYgKzI5MSwyMCBAQAogICAgICAgb2YgdHVwbGVzLiBFYWNoIHR1cGxlIHNob3VsZCBiZSBhIDQtdHVwbGUgd2l0aCBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLAogICAgICAgbGluZSBhcyB0aGUgZWxlbWVudHMuCiAKKyAgIC4uIG1ldGhvZDo6IGZvcm1hdCgpCisKKyAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCisgICAgICByZXN1bHRpbmcgbGlzdCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmcmFtZSBmcm9tIHRoZSBzdGFjay4KKyAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisKKyAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldworICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGZ1cnRoZXIgcmVwZXRpdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBmcmFtZXMgYXJlIG5vdyBhYmJyZXZpYXRlZC4KKwogCiA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAppbmRleCAyYzhhZDBlLi5lMTY1NjY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CkBAIC0zNTksMTAgKzM1OSwzMiBAQAogICAgU2VlIGFsc28gdGhlIDpmdW5jOmBnZXRfb2JqZWN0X3RyYWNlYmFja2AgZnVuY3Rpb24uCiAKIAorRG9tYWluRmlsdGVyCiteXl5eXl5eXl5eXl4KKworLi4gY2xhc3M6OiBEb21haW5GaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBkb21haW46IGludCkKKworICAgRmlsdGVyIHRyYWNlcyBvZiBtZW1vcnkgYmxvY2tzIGJ5IHRoZWlyIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKKworICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgRmFsc2VgYCAoZXhjbHVkZSksIG1hdGNoIG1lbW9yeSBibG9ja3Mgbm90IGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgorCisKIEZpbHRlcgogXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlKQorLi4gY2xhc3M6OiBGaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBmaWxlbmFtZV9wYXR0ZXJuOiBzdHIsIGxpbmVubzogaW50PU5vbmUsIGFsbF9mcmFtZXM6IGJvb2w9RmFsc2UsIGRvbWFpbjogaW50PU5vbmUpCiAKICAgIEZpbHRlciBvbiB0cmFjZXMgb2YgbWVtb3J5IGJsb2Nrcy4KIApAQCAtMzgyLDkgKzQwNCwxNyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSBgYCcucHlvJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZG9tYWluYCBhdHRyaWJ1dGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIEFkZHJlc3Mgc3BhY2Ugb2YgYSBtZW1vcnkgYmxvY2sgKGBgaW50YGAgb3IgYGBOb25lYGApLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKIAotICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IHRyYWNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYFRydWVgYCAoaW5jbHVkZSksIG9ubHkgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKICAgICAgIGluIGEgZmlsZSB3aXRoIGEgbmFtZSBtYXRjaGluZyA6YXR0cjpgZmlsZW5hbWVfcGF0dGVybmAgYXQgbGluZSBudW1iZXIKICAgICAgIDphdHRyOmBsaW5lbm9gLgogCkBAIC0zOTksNyArNDI5LDcgQEAKIAogICAgLi4gYXR0cmlidXRlOjogZmlsZW5hbWVfcGF0dGVybgogCi0gICAgICBGaWxlbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWx0ZXIgKGBgc3RyYGApLgorICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgogCiAgICAuLiBhdHRyaWJ1dGU6OiBhbGxfZnJhbWVzCiAKQEAgLTQ2MiwxNCArNDkyLDE3IEBACiAgICAuLiBtZXRob2Q6OiBmaWx0ZXJfdHJhY2VzKGZpbHRlcnMpCiAKICAgICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgOmF0dHI6YHRyYWNlc2AKLSAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyoKLSAgICAgIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZgotICAgICAgdGhlIHRyYWNlcy4KKyAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRG9tYWluRmlsdGVyYCBhbmQKKyAgICAgIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyogaXMgYW4gZW1wdHkgbGlzdCwgcmV0dXJuIGEgbmV3CisgICAgICA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgogCiAgICAgICBBbGwgaW5jbHVzaXZlIGZpbHRlcnMgYXJlIGFwcGxpZWQgYXQgb25jZSwgYSB0cmFjZSBpcyBpZ25vcmVkIGlmIG5vCiAgICAgICBpbmNsdXNpdmUgZmlsdGVycyBtYXRjaCBpdC4gQSB0cmFjZSBpcyBpZ25vcmVkIGlmIGF0IGxlYXN0IG9uZSBleGNsdXNpdmUKICAgICAgIGZpbHRlciBtYXRjaGVzIGl0LgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgOmNsYXNzOmBEb21haW5GaWx0ZXJgIGluc3RhbmNlcyBhcmUgbm93IGFsc28gYWNjZXB0ZWQgaW4gKmZpbHRlcnMqLgorCiAKICAgIC4uIGNsYXNzbWV0aG9kOjogbG9hZChmaWxlbmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IDExOGJjNGMuLjBjNTYxOWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBgbmFtZXNwYWNlYGAgZWxlbWVudCBvZiB0aGUgcmV0dXJuZWQKKyAgICAgIHR1cGxlIGhhcyBjaGFuZ2VkLiAgTm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcgaXMKKyAgICAgIHVzZWQgd2hlbiB0aGUgbWV0YWNsYXNzIGRvZXMgbm90IGhhdmUgYSBgYF9fcHJlcGFyZV9fYGAgbWV0aG9kLAorCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgbWV0YWNsYXNzZXNgCkBAIC05OCw2ICsxMDQsMTQgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKKy4uIGRhdGE6OiBBc3luY0dlbmVyYXRvclR5cGUKKworICAgVGhlIHR5cGUgb2YgOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3JgLWl0ZXJhdG9yIG9iamVjdHMsIGNyZWF0ZWQgYnkKKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBkYXRhOjogQ29kZVR5cGUKIAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBjb21waWxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0IGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAppbmRleCA5MjNjYmI4Li4yYmFjNmY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTEwLDggKzEwLDggQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgc3VwcG9ydHMgdHlwZSBoaW50cyBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgNDg0YC4gIFRoZSBtb3N0Ci1mdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlcyA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAgYW5kIDpwZXA6YDUyNmAuCitUaGUgbW9zdCBmdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlcyA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKIDpkYXRhOmBUdXBsZWAsIDpkYXRhOmBDYWxsYWJsZWAsIDpjbGFzczpgVHlwZVZhcmAsIGFuZAogOmNsYXNzOmBHZW5lcmljYC4gIEZvciBmdWxsIHNwZWNpZmljYXRpb24gcGxlYXNlIHNlZSA6cGVwOmA0ODRgLiAgRm9yCiBhIHNpbXBsaWZpZWQgaW50cm9kdWN0aW9uIHRvIHR5cGUgaGludHMgc2VlIDpwZXA6YDQ4M2AuCkBAIC01MjMsNyArNTIzLDEzIEBACiAKICAgIEFuIGFsaWFzIHRvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNpemVkYAogCi0uLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uYAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBBYnN0cmFjdFNldChTaXplZCwgQ29sbGVjdGlvbltUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAuCiAKQEAgLTUzMSw3ICs1MzcsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCiAKLS4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgQ29sbGVjdGlvbltLVF0sIEdlbmVyaWNbVlRfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AuCiAKQEAgLTUzOSw3ICs1NDUsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLgogCi0uLiBjbGFzczo6IFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBTZXF1ZW5jZShSZXZlcnNpYmxlW1RfY29dLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgLgogCkBAIC02MjMsNiArNjI5LDEyIEBACiAKICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogQ29udGV4dE1hbmFnZXIoR2VuZXJpY1tUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBEaWN0KGRpY3QsIE11dGFibGVNYXBwaW5nW0tULCBWVF0pCiAKICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgZGljdGAuCkBAIC02OTgsMjMgKzcxMCwzMiBAQAogICAgYGBQYXR0ZXJuW3N0cl1gYCwgYGBQYXR0ZXJuW2J5dGVzXWBgLCBgYE1hdGNoW3N0cl1gYCwgb3IKICAgIGBgTWF0Y2hbYnl0ZXNdYGAuCiAKLS4uIGZ1bmN0aW9uOjogTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKQorLi4gY2xhc3M6OiBOYW1lZFR1cGxlCiAKICAgIFR5cGVkIHZlcnNpb24gb2YgbmFtZWR0dXBsZS4KIAogICAgVXNhZ2U6OgogCi0gICAgICAgRW1wbG95ZWUgPSB0eXBpbmcuTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorICAgICAgIGNsYXNzIEVtcGxveWVlKE5hbWVkVHVwbGUpOgorICAgICAgICAgICBuYW1lOiBzdHIKKyAgICAgICAgICAgaWQ6IGludAogCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgRW1wbG95ZWUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdFbXBsb3llZScsIFsnbmFtZScsICdpZCddKQogCi0gICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBfZmllbGRfdHlwZXMsCisgICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBgYF9maWVsZF90eXBlc2BgLAogICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcwotICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgYXJlIGluIHRoZSBgYF9maWVsZHNgYCBhdHRyaWJ1dGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIG5hbWVkdHVwbGUKICAgIEFQSS4pCiAKKyAgIEJhY2t3YXJkLWNvbXBhdGlibGUgdXNhZ2U6OgorCisgICAgICAgRW1wbG95ZWUgPSBOYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAoJ2lkJywgaW50KV0pCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6cGVwOmA1MjZgIHZhcmlhYmxlIGFubm90YXRpb24gc3ludGF4LgorCiAuLiBmdW5jdGlvbjo6IE5ld1R5cGUodHlwKQogCiAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBpbmRpY2F0ZSBhIGRpc3RpbmN0IHR5cGVzIHRvIGEgdHlwZWNoZWNrZXIsCkBAIC04ODQsOCArOTA1LDggQEAKICAgIGFuZCBzaG91bGQgbm90IGJlIHNldCBvbiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4gVXNhZ2U6OgogCiAgICAgICBjbGFzcyBTdGFyc2hpcDoKLSAgICAgICAgICBzdGF0cyA9IHt9ICAjIHR5cGU6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSAjIGNsYXNzIHZhcmlhYmxlCi0gICAgICAgICAgZGFtYWdlID0gMTAgIyB0eXBlOiBpbnQgICAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICAgIHN0YXRzOiBDbGFzc1ZhcltEaWN0W3N0ciwgaW50XV0gPSB7fSAjIGNsYXNzIHZhcmlhYmxlCisgICAgICAgICAgZGFtYWdlOiBpbnQgPSAxMCAgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgdmFyaWFibGUKIAogICAgOmRhdGE6YENsYXNzVmFyYCBhY2NlcHRzIG9ubHkgdHlwZXMgYW5kIGNhbm5vdCBiZSBmdXJ0aGVyIHN1YnNjcmliZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdCBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAppbmRleCAyMDgzMGUyLi4yNDQ0MDgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBkb2N1bWVudGVkIGJleW9uZCB0aGlzIG1lbnRpb24uICBUaGVyZSdzIGxpdHRsZSBuZWVkIHRvIGRvY3VtZW50IHRoZXNlLgogCiA6bW9kOmBudHBhdGhgCi0gICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIsIFdpbjY0LCBhbmQgV2luQ0UgcGxhdGZvcm1zLgorICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyIGFuZCBXaW42NCBwbGF0Zm9ybXMuCiAKIDptb2Q6YHBvc2l4cGF0aGAKICAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBQT1NJWC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdCBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAppbmRleCA2Y2Q4MTMyLi42NDMxODA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CkBAIC0xNyw4ICsxNyw4IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgd2hpY2gKIGRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGNvbnRhaW5lZCBpbgotdGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKLTxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCit0aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA5LjAuMAorPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZD5gXy4KIAogVGhlIG1vZHVsZSB1c2VzIHRoZSBzYW1lIG5hbWVzIGFuZCBzeW1ib2xzIGFzIGRlZmluZWQgYnkgVW5pY29kZQogU3RhbmRhcmQgQW5uZXggIzQ0LCBgIlVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIgpAQCAtMTY4LDYgKzE2OCw2IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CmluZGV4IGVmMzBjMDEuLjNjYzIyZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CkBAIC0yNjIsNiArMjYyLDM0IEBACiAgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLiBTZWUgdGhlCiAgICAgOm1ldGg6YGNvbmZpZ3VyZV9tb2NrYCBtZXRob2QgZm9yIGRldGFpbHMuCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtZXRob2QnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAKQEAgLTMzOSw3ICszNjcsNyBAQAogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCi0gICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKQogCiAgICAgICAgIFRoZSByZXNldF9tb2NrIG1ldGhvZCByZXNldHMgYWxsIHRoZSBjYWxsIGF0dHJpYnV0ZXMgb24gYSBtb2NrIG9iamVjdDoKIApAQCAtMzUxLDEyICszNzksMjAgQEAKICAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAogICAgICAgICAgICAgRmFsc2UKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICBBZGRlZCB0d28ga2V5d29yZCBvbmx5IGFyZ3VtZW50IHRvIHRoZSByZXNldF9tb2NrIGZ1bmN0aW9uLgorCiAgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAogICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCA6bWV0aDpgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQogICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKLSAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudCBieSBkZWZhdWx0LiBJbiBjYXNlIHlvdSB3YW50IHRvIHJlc2V0CisgICAgICAgICpyZXR1cm5fdmFsdWUqIG9yIDphdHRyOmBzaWRlX2VmZmVjdGAsIHRoZW4gcGFzcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBwYXJhbWV0ZXIgYXMgYGBUcnVlYGAuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKICAgICAgICAgKGlmIGFueSkgYXJlIHJlc2V0IGFzIHdlbGwuCiAKKyAgICAgICAgLi4gbm90ZTo6ICpyZXR1cm5fdmFsdWUqLCBhbmQgOmF0dHI6YHNpZGVfZWZmZWN0YCBhcmUga2V5d29yZCBvbmx5CisgICAgICAgICAgICAgICAgICBhcmd1bWVudC4KKwogCiAgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IGFjMTIyNGMuLmMxM2E3MzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTEzOTEsOSArMTM5MSw5IEBACiAKICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciA6bWV0aDpgdGVhckRvd25gIHRvIGNsZWFudXAgcmVzb3VyY2VzCiAgICAgICB1c2VkIGR1cmluZyB0aGUgdGVzdC4gRnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgdG8gdGhlCi0gICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoTElGTykuIFRoZXkgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kCi0gICAgICBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZQotICAgICAgYWRkZWQuCisgICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgKS4gIFRoZXkKKyAgICAgIGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50bworICAgICAgOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUgYWRkZWQuCiAKICAgICAgIElmIDptZXRoOmBzZXRVcGAgZmFpbHMsIG1lYW5pbmcgdGhhdCA6bWV0aDpgdGVhckRvd25gIGlzIG5vdCBjYWxsZWQsCiAgICAgICB0aGVuIGFueSBjbGVhbnVwIGZ1bmN0aW9ucyBhZGRlZCB3aWxsIHN0aWxsIGJlIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IDQ5OWIyMTEuLjY3NjMyMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtMTE0LDggKzExNCw5IEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCkBAIC0xMjUsNiArMTI2LDEwIEBACiAgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCiAgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTIyNyw4ICsyMzIsMTMgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgogCiAKIC4uIGZ1bmN0aW9uOjogdXJsdW5zcGxpdChwYXJ0cykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCA2MThjNjlkLi40NzNlZmZjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0zMCwxOCArMzAsOSBAQAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAqZGF0YSogbWF5IGFsc28gYmUgYW4KLSAgIGl0ZXJhYmxlIG9iamVjdCBhbmQgaW4gdGhhdCBjYXNlIENvbnRlbnQtTGVuZ3RoIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGluCi0gICB0aGUgaGVhZGVycy4gQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUKLSAgIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMKLSAgIHByb3ZpZGVkLgotCi0gICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZSBzdGFuZGFyZAotICAgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQotICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgdGV4dCBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAotICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIDpjbGFzczpgUmVxdWVzdGAKKyAgIGZvciBkZXRhaWxzLgogCiAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYGBDb25uZWN0aW9uOmNsb3NlYGAgaGVhZGVyCiAgICBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KQEAgLTEyMCw2ICsxMTEsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICpjYWZpbGUqLCAqY2FwYXRoKiBhbmQgKmNhZGVmYXVsdCogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KIAogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKQEAgLTE5MiwxNCArMTg5LDIxIEBACiAKICAgICp1cmwqIHNob3VsZCBiZSBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgVVJMLgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlCi0gICB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEKLSAgIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzIHByb3ZpZGVkLiAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKLSAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuCi0gICBUaGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQgYmUKLSAgIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQCisgICByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSouICBUaGUgc3VwcG9ydGVkIG9iamVjdAorICAgdHlwZXMgaW5jbHVkZSBieXRlcywgZmlsZS1saWtlIG9iamVjdHMsIGFuZCBpdGVyYWJsZXMuICBJZiBubworICAgYGBDb250ZW50LUxlbmd0aGBgIG5vciBgYFRyYW5zZmVyLUVuY29kaW5nYGAgaGVhZGVyIGZpZWxkCisgICBoYXMgYmVlbiBwcm92aWRlZCwgOmNsYXNzOmBIVFRQSGFuZGxlcmAgd2lsbCBzZXQgdGhlc2UgaGVhZGVycyBhY2NvcmRpbmcKKyAgIHRvIHRoZSB0eXBlIG9mICpkYXRhKi4gIGBgQ29udGVudC1MZW5ndGhgYCB3aWxsIGJlIHVzZWQgdG8gc2VuZAorICAgYnl0ZXMgb2JqZWN0cywgd2hpbGUgYGBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZGBgIGFzIHNwZWNpZmllZCBpbgorICAgOnJmYzpgNzIzMGAsIFNlY3Rpb24gMy4zLjEgd2lsbCBiZSB1c2VkIHRvIHNlbmQgZmlsZXMgYW5kIG90aGVyIGl0ZXJhYmxlcy4KKworICAgRm9yIGFuIEhUVFAgUE9TVCByZXF1ZXN0IG1ldGhvZCwgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKKyAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKKyAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2UKKyAgIG9mIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCisgICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgogCiAgICAqaGVhZGVycyogc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBpZgogICAgOm1ldGg6YGFkZF9oZWFkZXJgIHdhcyBjYWxsZWQgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgYXJndW1lbnRzLgpAQCAtMjExLDggKzIxNSwxMCBAQAogICAgOm1vZDpgdXJsbGliYCdzIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcgaXMKICAgIGBgIlB5dGhvbi11cmxsaWIvMi42ImBgIChvbiBQeXRob24gMi42KS4KIAotICAgQW4gZXhhbXBsZSBvZiB1c2luZyBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciB3aXRoICpkYXRhKiBhcmd1bWVudCB3b3VsZCBiZQotICAgc2VuZGluZyBhIGRpY3Rpb25hcnkgbGlrZSBgYHsiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9YGAuCisgICBBbiBhcHByb3ByaWF0ZSBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlICpkYXRhKgorICAgYXJndW1lbnQgaXMgcHJlc2VudC4gIElmIHRoaXMgaGVhZGVyIGhhcyBub3QgYmVlbiBwcm92aWRlZCBhbmQgKmRhdGEqCisgICBpcyBub3QgTm9uZSwgYGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgIHdpbGwKKyAgIGJlIGFkZGVkIGFzIGEgZGVmYXVsdC4KIAogICAgVGhlIGZpbmFsIHR3byBhcmd1bWVudHMgYXJlIG9ubHkgb2YgaW50ZXJlc3QgZm9yIGNvcnJlY3QgaGFuZGxpbmcKICAgIG9mIHRoaXJkLXBhcnR5IEhUVFAgY29va2llczoKQEAgLTIzNSwxNSArMjQxLDI4IEBACiAgICAqbWV0aG9kKiBzaG91bGQgYmUgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdGhhdAogICAgd2lsbCBiZSB1c2VkIChlLmcuIGBgJ0hFQUQnYGApLiAgSWYgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCi0gICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCisgICBUaGUgZGVmYXVsdCBpcyBgYCdHRVQnYGAgaWYgKmRhdGEqIGlzIGBgTm9uZWBgIG9yIGBgJ1BPU1QnYGAgb3RoZXJ3aXNlLgorICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkaWZmZXJlbnQgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBpbiB0aGUgY2xhc3MgaXRzZWxmLgogCisgICAuLiBub3RlOjoKKyAgICAgIFRoZSByZXF1ZXN0IHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIHVuYWJsZQorICAgICAgdG8gZGVsaXZlciBpdHMgY29udGVudCBtb3JlIHRoYW4gb25jZSAoZS5nLiBhIGZpbGUgb3IgYW4gaXRlcmFibGUKKyAgICAgIHRoYXQgY2FuIHByb2R1Y2UgdGhlIGNvbnRlbnQgb25seSBvbmNlKSBhbmQgdGhlIHJlcXVlc3QgaXMgcmV0cmllZAorICAgICAgZm9yIEhUVFAgcmVkaXJlY3RzIG9yIGF1dGhlbnRpY2F0aW9uLiAgVGhlICpkYXRhKiBpcyBzZW50IHRvIHRoZQorICAgICAgSFRUUCBzZXJ2ZXIgcmlnaHQgYXdheSBhZnRlciB0aGUgaGVhZGVycy4gIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisgICAgICBhIDEwMC1jb250aW51ZSBleHBlY3RhdGlvbiBpbiB0aGUgbGlicmFyeS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgYXJndW1lbnQgaXMgYWRkZWQgdG8gdGhlIFJlcXVlc3QgY2xhc3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBEZWZhdWx0IDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgbWF5IGJlIGluZGljYXRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBEbyBub3QgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIGBgQ29udGVudC1MZW5ndGhgYCBoYXMgbm90IGJlZW4KKyAgICAgIHByb3ZpZGVkIGFuZCAqZGF0YSogaXMgbmVpdGhlciBgYE5vbmVgYCBub3IgYSBieXRlcyBvYmplY3QuCisgICAgICBGYWxsIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KIAogLi4gY2xhc3M6OiBPcGVuZXJEaXJlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CmluZGV4IGJhNzAxYzMuLjdkMzE5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdApAQCAtNTcsMTUgKzU3LDQxIEBACiAgICAgICBTZXRzIHRoZSB0aW1lIHRoZSBgYHJvYm90cy50eHRgYCBmaWxlIHdhcyBsYXN0IGZldGNoZWQgdG8gdGhlIGN1cnJlbnQKICAgICAgIHRpbWUuCiAKKyAgIC4uIG1ldGhvZDo6IGNyYXdsX2RlbGF5KHVzZXJhZ2VudCkKIAotVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIFJvYm90RmlsZVBhcnNlciBjbGFzcy4KKyAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBgYENyYXdsLWRlbGF5YGAgcGFyYW1ldGVyIGZyb20gYGByb2JvdHMudHh0YGAKKyAgICAgIGZvciB0aGUgKnVzZXJhZ2VudCogaW4gcXVlc3Rpb24uICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdAorICAgICAgZG9lc24ndCBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeQorICAgICAgZm9yIHRoaXMgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gbWV0aG9kOjogcmVxdWVzdF9yYXRlKHVzZXJhZ2VudCkKKworICAgICAgUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIGBgUmVxdWVzdC1yYXRlYGAgcGFyYW1ldGVyIGZyb20KKyAgICAgIGBgcm9ib3RzLnR4dGBgIGluIHRoZSBmb3JtIG9mIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgICAgYGAocmVxdWVzdHMsIHNlY29uZHMpYGAuICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdCBkb2Vzbid0CisgICAgICBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeSBmb3IgdGhpcworICAgICAgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgOmNsYXNzOmBSb2JvdEZpbGVQYXJzZXJgCitjbGFzczo6CiAKICAgID4+PiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCiAgICA+Pj4gcnAgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKICAgID4+PiBycC5zZXRfdXJsKCJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9yb2JvdHMudHh0IikKICAgID4+PiBycC5yZWFkKCkKKyAgID4+PiBycmF0ZSA9IHJwLnJlcXVlc3RfcmF0ZSgiKiIpCisgICA+Pj4gcnJhdGUucmVxdWVzdHMKKyAgIDMKKyAgID4+PiBycmF0ZS5zZWNvbmRzCisgICAyMAorICAgPj4+IHJwLmNyYXdsX2RlbGF5KCIqIikKKyAgIDYKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vY2dpLWJpbi9zZWFyY2g/Y2l0eT1TYW4rRnJhbmNpc2NvIikKICAgIEZhbHNlCiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tLyIpCiAgICBUcnVlCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKaW5kZXggMDMyNzczNy4uMTdjODBjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdmVudi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKQEAgLTM3LDQ0ICszNyw1MCBAQAogCiAuLiBfdmVudi1kZWY6CiAKLS4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCi0gICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCi0gICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAotICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAotICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIFB5dGhvbiBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cyBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZQorICAgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMKKyAgIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwgaS5lLiwgb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIKKyAgIG9wZXJhdGluZyBzeXN0ZW0uCiAKLSAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAotICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisgICBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZQorICAgZmlsZXMgYW5kIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBTZXR1cHRvb2xzYGAgYW5kIGBgcGlwYGAgd29yayBhcwotICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCi0gICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBleHBlY3RlZCB3aXRoIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyBpbnRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUgKGkuZS4gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZQotICAgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlCi0gICBkaXJlY3Rvcnkgb2YgdGhlIHZlbnYsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uCi0gICB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZlbnYuIElmIGEgdmVudiBpcyBub3QgYWN0aXZlLCB0aGVuCi0gICA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5Ci0gICBhbGwgcG9pbnQgdG8gYSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uKS4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSAoaS5lLiwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24KKyAgIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJZiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIG5vdCBhY3RpdmUsIHRoZW4gOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkgYWxsIHBvaW50IHRvIGEgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQKKyAgIFB5dGhvbiBpbnN0YWxsYXRpb24pLgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZSBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlCi0gICBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHByZXZlbnQgcHJvamVjdHMgYmVpbmcKLSAgIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZQorICAgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZSBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBwcmV2ZW50IHByb2plY3RzIGJlaW5nIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LgogCi0gICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZlbnYgYWN0aXZlIGJ5IHJ1bm5pbmcgYW4KLSAgIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZlbnYncyBleGVjdXRhYmxlcyBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lCi0gICBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUgdmVudidzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8KLSAgIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubwotICAgbmVlZCBpbiBvdGhlciBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmVudiAtLSBzY3JpcHRzIGluc3RhbGxlZCBpbnRvCi0gICB2ZW52cyBoYXZlIGEgc2hlYmFuZyBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcwotICAgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGggdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQotICAgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsIHNoZWJhbmcgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUKLSAgIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUKLSAgIDpwZXA6YDM5N2AgZm9yIG1vcmUgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluCi0gICBhIFdpbmRvd3MgRXhwbG9yZXIgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyCi0gICB3aXRob3V0IHRoZXJlIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmVudiBpbiBgYFBBVEhgYC4KKyAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhY3RpdmUKKyAgIGJ5IHJ1bm5pbmcgYW4gYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGV4ZWN1dGFibGVzCisgICBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZQorICAgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8gdGhlIGBgUEFUSGBgIGVudmlyb25tZW50CisgICB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubyBuZWVkIGluIG90aGVyCisgICBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudOKAlHNjcmlwdHMgaW5zdGFsbGVkIGludG8KKyAgIHZpcnR1YWwgZW52aXJvbm1lbnRzIGhhdmUgYSAic2hlYmFuZyIgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoCisgICB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCAic2hlYmFuZyIKKyAgIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworICAgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlIDpwZXA6YDM5N2AgZm9yIG1vcmUKKyAgIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbiBhIFdpbmRvd3MgRXhwbG9yZXIKKyAgIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlciB3aXRob3V0IHRoZXJlCisgICBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYGBQQVRIYGAuCiAKIAogLi4gX3ZlbnYtYXBpOgpAQCAtODksNyArOTUsOCBAQAogY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLCB0aGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcy4KIAogLi4gY2xhc3M6OiBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9Tm9uZSkKIAogICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgogICAgIGluc3RhbnRpYXRpb246CkBAIC0xMTMsOSArMTIwLDE2IEBACiAgICAgICBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgdXNlcyA6bW9kOmBlbnN1cmVwaXBgIHdpdGgKICAgICAgIHRoZSBgYC0tZGVmYXVsdC1waXBgYCBvcHRpb24uCiAKKyAgICAqIGBgcHJvbXB0YGAgLS0gYSBTdHJpbmcgdG8gYmUgdXNlZCBhZnRlciB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2YXRlZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgIHdoaWNoIG1lYW5zIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB3b3VsZAorICAgICAgYmUgdXNlZCkuCisKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgIEFkZGVkIHRoZSBgYHdpdGhfcGlwYGAgcGFyYW1ldGVyCiAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICBBZGRlZCB0aGUgYGBwcm9tcHRgYCBwYXJhbWV0ZXIKKwogCiAgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQogICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KQEAgLTIyNSw3ICsyMzksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIGZvbGxvd2luZyBzY3JpcHQgc2hvd3MgaG93IHRvIGV4dGVuZCA6Y2xhc3M6YEVudkJ1aWxkZXJgIGJ5IGltcGxlbWVudGluZyBhCi1zdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmVudjo6CitzdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudDo6CiAKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgb3MucGF0aApAQCAtMjM5LDEyICsyNTMsMTIgQEAKICAgICBjbGFzcyBFeHRlbmRlZEVudkJ1aWxkZXIodmVudi5FbnZCdWlsZGVyKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgYnVpbGRlciBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgc28gdGhhdCB5b3UgY2FuIHBpcCBvcgotICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgICAgICA6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gY2FuIGJlIG1vbml0b3JlZCBieSBwYXNzaW5nIGEgcHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZS4gSWYgc3BlY2lmaWVkLCBpdCBpcyBjYWxsZWQgd2l0aCB0d28KQEAgLTI3MCwxMCArMjg0LDEwIEBACiAgICAgICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTZXQgdXAgYW55IHBhY2thZ2VzIHdoaWNoIG5lZWQgdG8gYmUgcHJlLWluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBvcy5lbnZpcm9uWydWSVJUVUFMX0VOViddID0gY29udGV4dC5lbnZfZGlyCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ub2Rpc3Q6CkBAIC0zMDcsNyArMzIxLDcgQEAKICAgICAgICAgICAgIGZuID0gb3MucGF0aC5zcGxpdChwYXRoKVstMV0KICAgICAgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCiAgICAgICAgICAgICBkaXN0cGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmbikKLSAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIGVudidzIGJpbmFyaWVzIGZvbGRlcgorICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyaWVzIGZvbGRlcgogICAgICAgICAgICAgdXJscmV0cmlldmUodXJsLCBkaXN0cGF0aCkKICAgICAgICAgICAgIHByb2dyZXNzID0gc2VsZi5wcm9ncmVzcwogICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgpAQCAtMzE5LDcgKzMzMyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0luc3RhbGxpbmcgJXMgLi4uJXMnICUgKG5hbWUsIHRlcm0pKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSBlbnYKKyAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgICAgICAgYXJncyA9IFtjb250ZXh0LmVudl9leGUsIGZuXQogICAgICAgICAgICAgcCA9IFBvcGVuKGFyZ3MsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY3dkPWJpbnBhdGgpCiAgICAgICAgICAgICB0MSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3Rkb3V0LCAnc3Rkb3V0JykpCkBAIC0zMzgsMTAgKzM1MiwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3NldHVwdG9vbHMoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvZG93bmxvYWRzL2V6X3NldHVwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAnc2V0dXB0b29scycsIHVybCkKQEAgLTM1NCwxMCArMzY4LDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfcGlwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9weXBhL3BpcC9tYXN0ZXIvY29udHJpYi9nZXQtcGlwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAncGlwJywgdXJsKQpAQCAtMzgwLDcgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSBpbiB3aGljaCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2V0dXB0b29scycsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vZGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IGluc3RhbGwgc2V0dXB0b29scyBvciBwaXAgaW4gdGhlICIKQEAgLTQwNCwxNCArNDE5LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwbGF0Zm9ybS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxyZWFkeSBleGlzdHMsIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cywgYmVmb3JlIHZpcnR1YWwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIHZpcnR1YWwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB0aGlzIHZlcnNpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4tcGxhY2UuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZlcmJvc2UnLCBoZWxwPSdEaXNwbGF5IHRoZSBvdXRwdXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHNjcmlwdHMgd2hpY2ggJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IGNlYzU1ZjEuLmY2N2Y0YmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMwMSw3ICszMDEsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpCisuLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSkKIAogICAgSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhlICpjYXRlZ29yeSoKICAgIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhIHdhcm5pbmcgY2F0ZWdvcnkgY2xhc3MgKHNlZSBhYm92ZSk7IGl0IGRlZmF1bHRzIHRvCkBAIC0zMTksOCArMzE5LDE0IEBACiAgICBzb3VyY2Ugb2YgOmZ1bmM6YGRlcHJlY2F0aW9uYCBpdHNlbGYgKHNpbmNlIHRoZSBsYXR0ZXIgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlCiAgICBvZiB0aGUgd2FybmluZyBtZXNzYWdlKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCiAKLS4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnNvdXJjZSogcGFyYW1ldGVyLgorCisKKy4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUsIHNvdXJjZT1Ob25lKQogCiAgICBUaGlzIGlzIGEgbG93LWxldmVsIGludGVyZmFjZSB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiA6ZnVuYzpgd2FybmAsIHBhc3NpbmcgaW4KICAgIGV4cGxpY2l0bHkgdGhlIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIsIGFuZCBvcHRpb25hbGx5IHRoZQpAQCAtMzM2LDYgKzM0MiwxMiBAQAogICAgc291cmNlIGZvciBtb2R1bGVzIGZvdW5kIGluIHppcGZpbGVzIG9yIG90aGVyIG5vbi1maWxlc3lzdGVtIGltcG9ydAogICAgc291cmNlcykuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkIHRoZSAqc291cmNlKiBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IDc2N2VhMzEuLjE0Zjc4OTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtNjM1LDcgKzYzNSw3IEBACiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfTElUVExFX0VORElBTgogCi0gICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfRFdPUkRgLgogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0JJR19FTkRJQU4KIApAQCAtNjU5LDYgKzY1OSwxOCBAQAogCiAgICBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCiAKKy4uIGRhdGE6OiBSRUdfUVdPUkQKKworICAgQSA2NC1iaXQgbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFJFR19RV09SRF9MSVRUTEVfRU5ESUFOCisKKyAgIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19RV09SRGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUkVHX1JFU09VUkNFX0xJU1QKIAogICAgQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKaW5kZXggZDJjNDIxMC4uMzcyZjc5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdApAQCAtMjUsNyArMjUsOCBAQAogLi4gZnVuY3Rpb246OiBQbGF5U291bmQoc291bmQsIGZsYWdzKQogCiAgICBDYWxsIHRoZSB1bmRlcmx5aW5nIDpjOmZ1bmM6YFBsYXlTb3VuZGAgZnVuY3Rpb24gZnJvbSB0aGUgUGxhdGZvcm0gQVBJLiAgVGhlCi0gICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYXVkaW8gZGF0YSBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAuICBJdHMKKyAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhIHN5c3RlbSBzb3VuZCBhbGlhcywgYXVkaW8gZGF0YSBhcyBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBvciBgYE5vbmVgYC4gIEl0cwogICAgaW50ZXJwcmV0YXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKmZsYWdzKiwgd2hpY2ggY2FuIGJlIGEgYml0d2lzZSBPUmVkCiAgICBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIGRlc2NyaWJlZCBiZWxvdy4gSWYgdGhlICpzb3VuZCogcGFyYW1ldGVyIGlzCiAgICBgYE5vbmVgYCwgYW55IGN1cnJlbnRseSBwbGF5aW5nIHdhdmVmb3JtIHNvdW5kIGlzIHN0b3BwZWQuIElmIHRoZSBzeXN0ZW0KQEAgLTM5LDcgKzQwLDggQEAKICAgIHNvdW5kIHRvIHBsYXk7IHBvc3NpYmxlIHZhbHVlcyBhcmUgYGAtMWBgLCBgYE1CX0lDT05BU1RFUklTS2BgLAogICAgYGBNQl9JQ09ORVhDTEFNQVRJT05gYCwgYGBNQl9JQ09OSEFORGBgLCBgYE1CX0lDT05RVUVTVElPTmBgLCBhbmQgYGBNQl9PS2BgLCBhbGwKICAgIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSB2YWx1ZSBgYC0xYGAgcHJvZHVjZXMgYSAic2ltcGxlIGJlZXAiOyB0aGlzIGlzIHRoZSBmaW5hbAotICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4KKyAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuICBJZiB0aGUgc3lzdGVtIGluZGljYXRlcyBhbgorICAgZXJyb3IsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGRhdGE6OiBTTkRfRklMRU5BTUUKQEAgLTkyLDcgKzk0LDcgQEAKIC4uIGRhdGE6OiBTTkRfTUVNT1JZCiAKICAgIFRoZSAqc291bmQqIHBhcmFtZXRlciB0byA6ZnVuYzpgUGxheVNvdW5kYCBpcyBhIG1lbW9yeSBpbWFnZSBvZiBhIFdBViBmaWxlLCBhcyBhCi0gICBzdHJpbmcuCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAgICAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhYWQyN2E4Li5hMWQ0NDY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTMzLDkgKzEzMyw5IEBACiAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGVudmlyb24uaXRlbXMoKV0KICAgICAgICAgICByZXR1cm4gcmV0CiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApCi0gICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCBmdW5jdGlvbnMgYWJvdmUsIHRoZSA6bW9kOmB3c2dpcmVmLnV0aWxgIG1vZHVsZQpAQCAtMjg1LDE0ICsyODUsMTQgQEAKIAogICAgICAgZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyLCBkZW1vX2FwcAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKLSAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CisgICAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQogCiAKIC4uIGZ1bmN0aW9uOjogZGVtb19hcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpCkBAIC00MzIsOSArNDMyLDkgQEAKICAgICAgICMgVGhpcyBpcyB0aGUgYXBwbGljYXRpb24gd3JhcHBlZCBpbiBhIHZhbGlkYXRvcgogICAgICAgdmFsaWRhdG9yX2FwcCA9IHZhbGlkYXRvcihzaW1wbGVfYXBwKQogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKQotICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiA6bW9kOmB3c2dpcmVmLmhhbmRsZXJzYCAtLSBzZXJ2ZXIvZ2F0ZXdheSBiYXNlIGNsYXNzZXMKQEAgLTc3NCw4ICs3NzQsOCBAQAogICAgICAgICMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBnb2luZyB0byBiZSBwcmludGVkCiAgICAgICAgcmV0dXJuIFtiIkhlbGxvIFdvcmxkIl0KIAotICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKQotICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKIAotICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAppbmRleCBkYWQ3YTAyLi4zOTA4MjhlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdApAQCAtODgsOSArODgsMTMgQEAKICAgICs9PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IGBgYm9vbGVhbmBgICAgICAgICAgIHwgOmNsYXNzOmBib29sYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBpbnRgYCBvciBgYGk0YGAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaW50YGAsIGBgaTFgYCwgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGkyYGAsICBgYGk0YGAsICAgICB8IFZhbHVlcyBnZXQgdGhlIGBgPGludD5gYCB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBpOGBgIG9yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgYmlnaW50ZWdlcmBgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBkb3VibGVgYCAgICAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgZG91YmxlYGAgb3IgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAuICBWYWx1ZXMgZ2V0IHRoZSBgYDxkb3VibGU+YGAgdGFnLiAgICAgfAorICAgfCBgYGZsb2F0YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgc3RyaW5nYGAgICAgICAgICAgIHwgOmNsYXNzOmBzdHJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNCw2ICsxMTgsOCBAQAogICAgfCBgYG5pbGBgICAgICAgICAgICAgICB8IFRoZSBgYE5vbmVgYCBjb25zdGFudC4gIFBhc3NpbmcgaXMgYWxsb3dlZCBvbmx5IGlmICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAqYWxsb3dfbm9uZSogaXMgdHJ1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYGJpZ2RlY2ltYWxgYCAgICAgICB8IDpjbGFzczpgZGVjaW1hbC5EZWNpbWFsYC4gIFJldHVybmVkIHR5cGUgb25seS4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KICAgIHJhaXNlIGEgc3BlY2lhbCA6ZXhjOmBGYXVsdGAgaW5zdGFuY2UsIHVzZWQgdG8gc2lnbmFsIFhNTC1SUEMgc2VydmVyIGVycm9ycywgb3IKQEAgLTEzNyw2ICsxNDMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB0eXBlIHRhZ3Mgd2l0aCBwcmVmaXhlcyAoZS5nLiBgYGV4Om5pbGBgKS4KKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdW5tYXJzYWxsaW5nIGFkZGl0aW9uYWwgdHlwZXMgdXNlZCBieSBBcGFjaGUgWE1MLVJQQworICAgICAgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzOiBgYGkxYGAsIGBgaTJgYCwgYGBpOGBgLCBgYGJpZ2ludGVnZXJgYCwKKyAgICAgIGBgZmxvYXRgYCBhbmQgYGBiaWdkZWNpbWFsYGAuCisgICAgICBTZWUgaHR0cDovL3dzLmFwYWNoZS5vcmcveG1scnBjL3R5cGVzLmh0bWwgZm9yIGEgZGVzY3JpcHRpb24uCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggMWM3N2U4NC4uMDUxMWRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE0OCwyOSArMTQ4LDI5IEBACiAgICAgICAgcnBjX3BhdGhzID0gKCcvUlBDMicsKQogCiAgICAjIENyZWF0ZSBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKQotICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKKyAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCiAKLSAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCi0gICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKKyAgICAgICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQogCi0gICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQotICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6Ci0gICAgICAgcmV0dXJuIHggKyB5Ci0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQorICAgICAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCisgICAgICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6CisgICAgICAgICAgIHJldHVybiB4ICsgeQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCiAKLSAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCi0gICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCi0gICBjbGFzcyBNeUZ1bmNzOgotICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6Ci0gICAgICAgICAgIHJldHVybiB4ICogeQorICAgICAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCisgICAgICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgorICAgICAgIGNsYXNzIE15RnVuY3M6CisgICAgICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6CisgICAgICAgICAgICAgICByZXR1cm4geCAqIHkKIAotICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQogCi0gICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCi0gICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAorICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhlIGZvbGxvd2luZyBjbGllbnQgY29kZSB3aWxsIGNhbGwgdGhlIG1ldGhvZHMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIHByZWNlZGluZwogc2VydmVyOjoKQEAgLTIwNywxOCArMjA3LDE3IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogVGhpcyBFeGFtcGxlU2VydmljZSBkZW1vIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIGNvbW1hbmQgbGluZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggZDE0NGFlMy4uNWViNmYxMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTE0NywxMCArMTQ3LDEwIEBACiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCiAgICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYCBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQogICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCi0gICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcworICAgaXMgcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDQgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KQEAgLTE3OSw2ICsxNzksMTAgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkIGZvciB1bnJlY29nbml6ZWQKKyAgICAgIGNvbXByZXNzaW9uIHZhbHVlcy4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjA1LDE4ICsyMDksMTIgQEAKICAgIFJldHVybiBhIGxpc3Qgb2YgYXJjaGl2ZSBtZW1iZXJzIGJ5IG5hbWUuCiAKIAotLi4gaW5kZXg6OgotICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHppcGZpbGUuWmlwRmlsZS5vcGVuIG1ldGhvZAorLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSwgKiwgZm9yY2VfemlwNjQ9RmFsc2UpCiAKLS4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUpCi0KLSAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUtbGlrZSBvYmplY3QgKFppcEV4dEZpbGUpLiAqbmFtZSoKLSAgIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiBUaGUKLSAgICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBgYCdyJ2BgICh0aGUKLSAgIGRlZmF1bHQpLCBgYCdVJ2BgLCBvciBgYCdyVSdgYC4gQ2hvb3NpbmcgYGAnVSdgYCBvciAgYGAnclUnYGAgd2lsbCBlbmFibGUKLSAgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIHN1cHBvcnQgaW4gdGhlIHJlYWQtb25seSBvYmplY3QuICAqcHdkKiBpcyB0aGUKLSAgIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCBmaWxlcy4gIENhbGxpbmcgIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQKLSAgIFppcEZpbGUgd2lsbCByYWlzZSBhICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgQWNjZXNzIGEgbWVtYmVyIG9mIHRoZSBhcmNoaXZlIGFzIGEgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QuICAqbmFtZSoKKyAgIGNhbiBiZSBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIHdpdGhpbiB0aGUgYXJjaGl2ZSBvciBhIDpjbGFzczpgWmlwSW5mb2AKKyAgIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBgYCdyJ2BgICh0aGUgZGVmYXVsdCkKKyAgIG9yIGBgJ3cnYGAuICAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBkZWNyeXB0IGVuY3J5cHRlZCBaSVAgZmlsZXMuCiAKICAgIDptZXRoOmB+WmlwRmlsZS5vcGVuYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50OjoKQEAgLTIyNSwxNyArMjIzLDIzIEBACiAgICAgICAgICAgd2l0aCBteXppcC5vcGVuKCdlZ2dzLnR4dCcpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgcHJpbnQobXlmaWxlLnJlYWQoKSkKIAotICAgLi4gbm90ZTo6CisgICBXaXRoICptb2RlKiBgYCdyJ2BgIHRoZSBmaWxlLWxpa2Ugb2JqZWN0CisgICAoYGBaaXBFeHRGaWxlYGApIGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAorICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLiAgVGhlc2Ugb2JqZWN0cyBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mCisgICB0aGUgWmlwRmlsZS4KIAotICAgICAgVGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0gICAgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCi0gICAgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAotICAgICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuCisgICBXaXRoIGBgbW9kZT0ndydgYCwgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyByZXR1cm5lZCwgd2hpY2ggc3VwcG9ydHMgdGhlCisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBtZXRob2QuICBXaGlsZSBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIG9wZW4sCisgICBhdHRlbXB0aW5nIHRvIHJlYWQgb3Igd3JpdGUgb3RoZXIgZmlsZXMgaW4gdGhlIFpJUCBmaWxlIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKLSAgICAgIFppcEZpbGUuCisgICBXaGVuIHdyaXRpbmcgYSBmaWxlLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAyIEdpQiwgcGFzcyBgYGZvcmNlX3ppcDY0PVRydWVgYCB0byBlbnN1cmUgdGhhdCB0aGUgaGVhZGVyIGZvcm1hdCBpcworICAgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGxhcmdlIGZpbGVzLiAgSWYgdGhlIGZpbGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLAorICAgY29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3Qgd2l0aCA6YXR0cjpgflppcEluZm8uZmlsZV9zaXplYCBzZXQsIGFuZAorICAgdXNlIHRoYXQgYXMgdGhlICpuYW1lKiBwYXJhbWV0ZXIuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yNDMsMTAgKzI0NywxOSBAQAogICAgICAgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFlvdSB3aWxsIGFwcHJlY2lhdGUgdGhpcyB3aGVuIHRyeWluZyB0byByZWFkIGEKICAgICAgIFpJUCBmaWxlIHRoYXQgY29udGFpbnMgbWVtYmVycyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDMuNgotICAgICAgVGhlIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIG1vZGUuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJlbW92ZWQgc3VwcG9ydCBvZiBgYG1vZGU9J1UnYGAuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZwogICAgICAgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgb3BlbmAgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGZpbGVzIGludG8gdGhlIGFyY2hpdmUgd2l0aCB0aGUKKyAgICAgIGBgbW9kZT0ndydgYCBvcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3QobWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk7ICptZW1iZXIqCkBAIC0yNjcsNiArMjgwLDEwIEBACiAgICAgICBjaGFyYWN0ZXJzIChgYDpgYCwgYGA8YGAsIGBgPmBgLCBgYHxgYCwgYGAiYGAsIGBgP2BgLCBhbmQgYGAqYGApCiAgICAgICByZXBsYWNlZCBieSB1bmRlcnNjb3JlIChgYF9gYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3RhbGwocGF0aD1Ob25lLCBtZW1iZXJzPU5vbmUsIHB3ZD1Ob25lKQogCkBAIC0yODMsNiArMzAwLDEwIEBACiAgICAgICBkb3RzIGBgIi4uImBgLiAgVGhpcyBtb2R1bGUgYXR0ZW1wdHMgdG8gcHJldmVudCB0aGF0LgogICAgICAgU2VlIDptZXRoOmBleHRyYWN0YCBub3RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGFsbGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5wcmludGRpcigpCiAKQEAgLTMwMCwxOCArMzIxLDI0IEBACiAgICBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIGZvcgogICAgcmVhZCBvciBhcHBlbmQuICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgIGZpbGVzIGFuZCwgaWYgc3BlY2lmaWVkLAogICAgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXNzd29yZCBzZXQgd2l0aCA6bWV0aDpgc2V0cGFzc3dvcmRgLiAgQ2FsbGluZwotICAgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiBDYWxsaW5nCiAgICA6bWV0aDpgcmVhZGAgb24gYSBaaXBGaWxlIHRoYXQgdXNlcyBhIGNvbXByZXNzaW9uIG1ldGhvZCBvdGhlciB0aGFuCiAgICA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsIDpjb25zdDpgWklQX0JaSVAyYCBvcgogICAgOmNvbnN0OmBaSVBfTFpNQWAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLiBBbiBlcnJvciB3aWxsIGFsc28KICAgIGJlIHJhaXNlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBjb21wcmVzc2lvbiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS50ZXN0emlwKCkKIAogICAgUmVhZCBhbGwgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlIGFuZCBjaGVjayB0aGVpciBDUkMncyBhbmQgZmlsZSBoZWFkZXJzLgotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuIENhbGxpbmcKLSAgIDptZXRoOmB0ZXN0emlwYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB0ZXN0ZmlsZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCiAKIAogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lLCBjb21wcmVzc190eXBlPU5vbmUpCkBAIC0zMjEsMTAgKzM0OCw3IEBACiAgICBsZXR0ZXIgYW5kIHdpdGggbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZCkuICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqCiAgICBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKiBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvcgogICAgdGhlIG5ldyBlbnRyeS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzQzLDE2ICszNjcsMTkgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBkYXRhWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhcmNoaXZlOyAqemluZm9fb3JfYXJjbmFtZSogaXMgZWl0aGVyIHRoZSBmaWxlCiAgICBuYW1lIGl0IHdpbGwgYmUgZ2l2ZW4gaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZS4gIElmIGl0J3MKICAgIGFuIGluc3RhbmNlLCBhdCBsZWFzdCB0aGUgZmlsZW5hbWUsIGRhdGUsIGFuZCB0aW1lIG11c3QgYmUgZ2l2ZW4uICBJZiBpdCdzIGEKICAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKLSAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSogb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbioKICAgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBuZXcgZW50cnksIG9yIGluIHRoZSAqemluZm9fb3JfYXJjbmFtZSoKQEAgLTM2OCw2ICszOTUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKmNvbXByZXNzX3R5cGUqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiBUaGUgZm9sbG93aW5nIGRhdGEgYXR0cmlidXRlcyBhcmUgYWxzbyBhdmFpbGFibGU6CiAKIApAQCAtNDY1LDcgKzQ5OCwzMSBAQAogOm1ldGg6YC5pbmZvbGlzdGAgbWV0aG9kcyBvZiA6Y2xhc3M6YFppcEZpbGVgIG9iamVjdHMuICBFYWNoIG9iamVjdCBzdG9yZXMKIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIG1lbWJlciBvZiB0aGUgWklQIGFyY2hpdmUuCiAKLUluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKK1RoZXJlIGlzIG9uZSBjbGFzc21ldGhvZCB0byBtYWtlIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlc3lzdGVtCitmaWxlOgorCisuLiBjbGFzc21ldGhvZDo6IFppcEluZm8uZnJvbV9maWxlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpCisKKyAgIENvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbSwgaW4KKyAgIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgaXQgdG8gYSB6aXAgZmlsZS4KKworICAgKmZpbGVuYW1lKiBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgSWYgKmFyY25hbWUqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSB3aXRoaW4gdGhlIGFyY2hpdmUuCisgICBJZiAqYXJjbmFtZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyAqZmlsZW5hbWUqLCBidXQKKyAgIHdpdGggYW55IGRyaXZlIGxldHRlciBhbmQgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0luc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworLi4gbWV0aG9kOjogWmlwSW5mby5pc19kaXIoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4KKworICAgVGhpcyB1c2VzIHRoZSBlbnRyeSdzIG5hbWU6IGRpcmVjdG9yaWVzIHNob3VsZCBhbHdheXMgZW5kIHdpdGggYGAvYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZW5hbWUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggMWRlN2JhZS4uM2Q3NDJhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTQ3LDE0ICs0NywxOSBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBhZGxlcjMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YVssIGxldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgbGV2ZWw9LTEpCiAKICAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgotICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOworICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgb3IgYGAtMWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKICAgIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYGA5YGAgaXMgc2xvd2VzdCBhbmQKLSAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYC0xYGAKKyAgIChaX0RFRkFVTFRfQ09NUFJFU1NJT04pLiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHJlcHJlc2VudHMgYSBkZWZhdWx0CisgICBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkgZXF1aXZhbGVudCB0byBsZXZlbCA2KS4KICAgIFJhaXNlcyB0aGUgOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmxldmVsKiBjYW4gbm93IGJlIHVzZWQgYXMgYSBrZXl3b3JkIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1MZXZlbD04LCBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pCiAKQEAgLTEyNCw3ICsxMjksNyBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpCiAKICAgIERlY29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUKICAgIHVuY29tcHJlc3NlZCBkYXRhLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGRlcGVuZHMgb24KQEAgLTE1OSwxNCArMTY0LDE2IEBACiAgICBXaGVuIGRlY29tcHJlc3NpbmcgYSBzdHJlYW0sIHRoZSB3aW5kb3cgc2l6ZSBtdXN0IG5vdCBiZSBzbWFsbGVyCiAgICB0aGFuIHRoZSBzaXplIG9yaWdpbmFsbHkgdXNlZCB0byBjb21wcmVzcyB0aGUgc3RyZWFtOyB1c2luZyBhIHRvby1zbWFsbAogICAgdmFsdWUgbWF5IHJlc3VsdCBpbiBhbiA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uLiBUaGUgZGVmYXVsdCAqd2JpdHMqIHZhbHVlCi0gICBpcyAxNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYgotICAgaGVhZGVyIGFuZCB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgorICAgY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYiBoZWFkZXIgYW5kCisgICB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgogCiAgICAqYnVmc2l6ZSogaXMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBkZWNvbXByZXNzZWQgZGF0YS4gIElmCiAgICBtb3JlIHNwYWNlIGlzIHJlcXVpcmVkLCB0aGUgYnVmZmVyIHNpemUgd2lsbCBiZSBpbmNyZWFzZWQgYXMgbmVlZGVkLCBzbyB5b3UKICAgIGRvbid0IGhhdmUgdG8gZ2V0IHRoaXMgdmFsdWUgZXhhY3RseSByaWdodDsgdHVuaW5nIGl0IHdpbGwgb25seSBzYXZlIGEgZmV3IGNhbGxzCi0gICB0byA6YzpmdW5jOmBtYWxsb2NgLiAgVGhlIGRlZmF1bHQgc2l6ZSBpcyAxNjM4NC4KKyAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqd2JpdHMqIGFuZCAqYnVmc2l6ZSogY2FuIGJlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaih3Yml0cz0xNVssIHpkaWN0XSkKIApAQCAtMjUyLDcgKzI1OSw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YVssIG1heF9sZW5ndGhdKQorLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9MCkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQogICAgY29ycmVzcG9uZGluZyB0byBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBkYXRhIGluICpzdHJpbmcqLiAgVGhpcyBkYXRhIHNob3VsZCBiZQpAQCAtMjY0LDkgKzI3MSwxMSBAQAogICAgbm8gbG9uZ2VyIHRoYW4gKm1heF9sZW5ndGgqLiBUaGlzIG1heSBtZWFuIHRoYXQgbm90IGFsbCBvZiB0aGUgY29tcHJlc3NlZCBpbnB1dAogICAgY2FuIGJlIHByb2Nlc3NlZDsgYW5kIHVuY29uc3VtZWQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYXR0cmlidXRlCiAgICA6YXR0cjpgdW5jb25zdW1lZF90YWlsYC4gVGhpcyBieXRlc3RyaW5nIG11c3QgYmUgcGFzc2VkIHRvIGEgc3Vic2VxdWVudCBjYWxsIHRvCi0gICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyBub3QKLSAgIHN1cHBsaWVkIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzCi0gICBlbXB0eS4KKyAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIHplcm8KKyAgIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzIGVtcHR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKm1heF9sZW5ndGgqIGNhbiBiZSB1c2VkIGFzIGEga2V5d29yZCBhcmd1bWVudC4KIAogCiAuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmZsdXNoKFtsZW5ndGhdKQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDVhYjgwODUuLmRhMWY4NzYgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBnb3RvIGVuZA0KICkNCiANCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KKyVTUEhJTlhCVUlMRCUgPm51bCAyPiBudWwNCiBpZiBlcnJvcmxldmVsIDkwMDkgKA0KICAgICBlY2hvLg0KICAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngNCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDg4Yjk0ZWEuLjRiNDI1YTQgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC00NzEsMTAgKzQ3MSwxMCBAQAogICAgZGVjb3JhdG9yczogYGRlY29yYXRvcmArCiAgICBkZWNvcmF0b3I6ICJAIiBgZG90dGVkX25hbWVgIFsiKCIgW2Bhcmd1bWVudF9saXN0YCBbIiwiXV0gIikiXSBORVdMSU5FCiAgICBkb3R0ZWRfbmFtZTogYGlkZW50aWZpZXJgICgiLiIgYGlkZW50aWZpZXJgKSoKLSAgIHBhcmFtZXRlcl9saXN0OiAoYGRlZnBhcmFtZXRlcmAgIiwiKSoKLSAgICAgICAgICAgICAgICAgOiB8ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiICIqKiIgYHBhcmFtZXRlcmBdCi0gICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgCi0gICAgICAgICAgICAgICAgIDogfCBgZGVmcGFyYW1ldGVyYCBbIiwiXSApCisgICBwYXJhbWV0ZXJfbGlzdDogYGRlZnBhcmFtZXRlcmAgKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgW2BwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2BdXQorICAgICAgICAgICAgICAgICA6IHwgYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYAorICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3M6ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFsiKioiIGBwYXJhbWV0ZXJgIFsiLCJdXV0KKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYCBbIiwiXQogICAgcGFyYW1ldGVyOiBgaWRlbnRpZmllcmAgWyI6IiBgZXhwcmVzc2lvbmBdCiAgICBkZWZwYXJhbWV0ZXI6IGBwYXJhbWV0ZXJgIFsiPSIgYGV4cHJlc3Npb25gXQogICAgZnVuY25hbWU6IGBpZGVudGlmaWVyYApAQCAtNTQ2LDExICs1NDYsMTIgQEAKIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzIG1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyCiBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20ga2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdAogdmFsdWVzLiAgSWYgdGhlIGZvcm0gImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZQotcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmCi10aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgZGljdGlvbmFyeQotcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4KLVBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kCi1tYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KK3JlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuCitJZiB0aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcKK29yZGVyZWQgbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhCituZXcgZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yCisiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZAordXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gaW5kZXg6OiBwYWlyOiBmdW5jdGlvbjsgYW5ub3RhdGlvbnMKIApAQCAtNjMyLDYgKzYzMywxMSBAQAogZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbAogbmFtZXNwYWNlLgogCitUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpcyBwcmVzZXJ2ZWQKK2luIHRoZSBuZXcgY2xhc3MncyBgYF9fZGljdF9fYGAuICBOb3RlIHRoYXQgdGhpcyBpcyByZWxpYWJsZSBvbmx5IHJpZ2h0CithZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0IHdlcmUgZGVmaW5lZCB1c2luZwordGhlIGRlZmluaXRpb24gc3ludGF4LgorCiBDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIDpyZWY6YG1ldGFjbGFzc2VzIDxtZXRhY2xhc3Nlcz5gLgogCiBDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsIDo6CkBAIC02OTEsNyArNjk3LDcgQEAKIEZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggYGBhc3luYyBkZWZgYCBzeW50YXggYXJlIGFsd2F5cyBjb3JvdXRpbmUgZnVuY3Rpb25zLAogZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluIGBgYXdhaXRgYCBvciBgYGFzeW5jYGAga2V5d29yZHMuCiAKLUl0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb25zIGluCitJdCBpcyBhIDpleGM6YFN5bnRheEVycm9yYCB0byB1c2UgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbnMgaW4KIGBgYXN5bmMgZGVmYGAgY29yb3V0aW5lcy4KIAogQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjo6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggY2QyOGMxNC4uMDk1YTIzOCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtNjI3LDYgKzYyNywyNSBAQAogICAgICAgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgd2l0aGAgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudHMuIFNlZQogICAgICAgYWxzbyB0aGUgOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgIHNlY3Rpb24uCiAKKyAgIEFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zCisgICAgICAuLiBpbmRleDo6CisgICAgICAgICBzaW5nbGU6IGFzeW5jaHJvbm91cyBnZW5lcmF0b3I7IGZ1bmN0aW9uCisgICAgICAgICBzaW5nbGU6IGFzeW5jaHJvbm91cyBnZW5lcmF0b3I7IGFzeW5jaHJvbm91cyBpdGVyYXRvcgorCisgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIGFuZAorICAgICAgd2hpY2ggdXNlcyB0aGUgOmtleXdvcmQ6YHlpZWxkYCBzdGF0ZW1lbnQgaXMgY2FsbGVkIGEKKyAgICAgIDpkZm46YGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25gLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwKKyAgICAgIHJldHVybnMgYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yIG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCBpbiBhbgorICAgICAgOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50IHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLgorCisgICAgICBDYWxsaW5nIHRoZSBhc3luY2hyb25vdXMgaXRlcmF0b3IncyA6bWV0aDpgYWl0ZXJhdG9yLl9fYW5leHRfX2AgbWV0aG9kCisgICAgICB3aWxsIHJldHVybiBhbiA6dGVybTpgYXdhaXRhYmxlYCB3aGljaCB3aGVuIGF3YWl0ZWQKKyAgICAgIHdpbGwgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSA6a2V5d29yZDpgeWllbGRgCisgICAgICBleHByZXNzaW9uLiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYW4gZW1wdHkgOmtleXdvcmQ6YHJldHVybmAKKyAgICAgIHN0YXRlbWVudCBvciBmYWxscyBvZmYgdGhlIGVuZCwgYSA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGV4Y2VwdGlvbgorICAgICAgaXMgcmFpc2VkIGFuZCB0aGUgYXN5bmNocm9ub3VzIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlIHlpZWxkZWQuCisKICAgIEJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgb2JqZWN0OiBidWlsdC1pbiBmdW5jdGlvbgpAQCAtNjg2LDEwICs3MDUsMjggQEAKICAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLAogICAgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KIAorICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCisKKyAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOworICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKKyAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZQorICAgYm9keSBleGVjdXRpb247IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KKwogICAgLi4gaW5kZXg6OiBzaW5nbGU6IF9fZGljdF9fIChtb2R1bGUgYXR0cmlidXRlKQogCi0gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGFzIGEKLSAgIGRpY3Rpb25hcnkgb2JqZWN0LgorICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzCisgICBuYW1lc3BhY2UgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC4KIAogICAgLi4gaW1wbC1kZXRhaWw6OgogCkBAIC02OTgsMjEgKzczNSw2IEBACiAgICAgICBkaWN0aW9uYXJ5IHN0aWxsIGhhcyBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5CiAgICAgICBvciBrZWVwIHRoZSBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCi0KLSAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwotICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQotICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCi0gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKLSAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCi0gICBsaWJyYXJ5IGZpbGUuCi0KIEN1c3RvbSBjbGFzc2VzCiAgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWUgc2VjdGlvbgogICAgOnJlZjpgY2xhc3NgKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuCkBAIC03NjEsMTMgKzc4MywxNiBAQAogICAgICAgc2luZ2xlOiBfX2RpY3RfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2Jhc2VzX18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19kb2NfXyAoY2xhc3MgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKGNsYXNzIGF0dHJpYnV0ZSkKIAogICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiA6YXR0cjpgfmRlZmluaXRpb24uX19uYW1lX19gIGlzIHRoZSBjbGFzcyBuYW1lOyA6YXR0cjpgX19tb2R1bGVfX2AgaXMKICAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUKICAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3MncyBuYW1lc3BhY2U7IDphdHRyOmB+Y2xhc3MuX19iYXNlc19fYCBpcyBhCiAgICB0dXBsZSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZSBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZQotICAgYmFzZSBjbGFzcyBsaXN0OyA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yCi0gICBgYE5vbmVgYCBpZiB1bmRlZmluZWQuCisgICBiYXNlIGNsYXNzIGxpc3Q7IDphdHRyOmBfX2RvY19fYCBpcyB0aGUgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywKKyAgIG9yIGBgTm9uZWBgIGlmIHVuZGVmaW5lZDsgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkKKyAgIGNvbnRhaW5pbmcgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAgY29sbGVjdGVkIGR1cmluZworICAgY2xhc3MgYm9keSBleGVjdXRpb24uCiAKIENsYXNzIGluc3RhbmNlcwogICAgLi4gaW5kZXg6OgpAQCAtMTA2Myw2ICsxMDg4LDEyIEBACiBvcGVyYXRpb24gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseQogOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9yIDpleGM6YFR5cGVFcnJvcmApLgogCitTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gYGBOb25lYGAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cworOm1ldGg6YF9faXRlcl9fYCB0byBgYE5vbmVgYCwgdGhlIGNsYXNzIGlzIG5vdCBpdGVyYWJsZSwgc28gY2FsbGluZworOmZ1bmM6YGl0ZXJgIG9uIGl0cyBpbnN0YW5jZXMgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgKHdpdGhvdXQKK2ZhbGxpbmcgYmFjayB0byA6bWV0aDpgX19nZXRpdGVtX19gKS4gWyNdXworCiBXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzIGltcG9ydGFudCB0aGF0CiB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciB0aGUKIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lIHNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsCkBAIC0xMjMzLDggKzEyNjQsOSBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYykKIAotICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlCi0gICA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIG9mIGNsYXNzIDpjbGFzczpgc3RyYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCisgICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uLAorICAgYW5kIGJ5IGV4dGVuc2lvbiwgZXZhbHVhdGlvbiBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCisgICA8Zi1zdHJpbmdzPmAgYW5kIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMKICAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuCiAgICBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZQpAQCAtMTQ5NCw2ICsxNTI2LDE0IEBACiAgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXIgY2xhc3MuCiAKIAorLi4gbWV0aG9kOjogb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSkKKworICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiBUaGUKKyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgYXR0cmlidXRlIDphdHRyOmBfX29iamNsYXNzX19gIGlzIGludGVycHJldGVkIGJ5IHRoZSA6bW9kOmBpbnNwZWN0YCBtb2R1bGUKIGFzIHNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXMKIGFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzcyBhdHRyaWJ1dGVzKS4KQEAgLTE2MzEsMTEgKzE2NzEsNjAgQEAKICogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lICpfX3Nsb3RzX18qLgogCiAKLS4uIF9tZXRhY2xhc3NlczoKKy4uIF9jbGFzcy1jdXN0b21pemF0aW9uOgogCiBDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICpfX2luaXRfc3ViY2xhc3NfXyogaXMKK2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgY2xhc3NlcyB3aGljaAorY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBjbGFzcworZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlIHNwZWNpZmljIGNsYXNzIHRoZXkncmUKK2FwcGxpZWQgdG8sIGBgX19pbml0X3N1YmNsYXNzX19gYCBzb2xlbHkgYXBwbGllcyB0byBmdXR1cmUgc3ViY2xhc3NlcyBvZiB0aGUKK2NsYXNzIGRlZmluaW5nIHRoZSBtZXRob2QuCisKKy4uIGNsYXNzbWV0aG9kOjogb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscykKKworICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzIHN1YmNsYXNzZWQuCisgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgaW5zdGFuY2UgbWV0aG9kLAorICAgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyBtZXRob2QuCisKKyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgcGFzc2VkIHRvCisgICB0aGUgcGFyZW50J3MgY2xhc3MgYGBfX2luaXRfc3ViY2xhc3NfX2BgLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoCisgICBvdGhlciBjbGFzc2VzIHVzaW5nIGBgX19pbml0X3N1YmNsYXNzX19gYCwgb25lIHNob3VsZCB0YWtlIG91dCB0aGUKKyAgIG5lZWRlZCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UKKyAgIGNsYXNzLCBhcyBpbjo6CisKKyAgICAgICBjbGFzcyBQaGlsb3NvcGhlcjoKKyAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgY2xzLmRlZmF1bHRfbmFtZSA9IGRlZmF1bHRfbmFtZQorCisgICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCBkZWZhdWx0X25hbWU9IkJydWNlIik6CisgICAgICAgICAgIHBhc3MKKworICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYGBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gYCBkb2VzCisgICBub3RoaW5nLCBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgbWV0YWNsYXNzIGhpbnQgYGBtZXRhY2xhc3NgYCBpcyBjb25zdW1lZCBieSB0aGUgcmVzdCBvZiB0aGUgdHlwZQorICAgICAgbWFjaGluZXJ5LCBhbmQgaXMgbmV2ZXIgcGFzc2VkIHRvIGBgX19pbml0X3N1YmNsYXNzX19gYCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICBUaGUgYWN0dWFsIG1ldGFjbGFzcyAocmF0aGVyIHRoYW4gdGhlIGV4cGxpY2l0IGhpbnQpIGNhbiBiZSBhY2Nlc3NlZCBhcworICAgICAgYGB0eXBlKGNscylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gX21ldGFjbGFzc2VzOgorCitNZXRhY2xhc3NlcworXl5eXl5eXl5eXl4KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogbWV0YWNsYXNzCisgICAgYnVpbHRpbjogdHlwZQorCiBCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCiBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCiByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCkBAIC0xNjY2LDYgKzE3NTUsOCBAQAogCiBEZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBtZXRhY2xhc3MgaGludAogCiBUaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgogCkBAIC0xNjg3LDEzICsxNzc4LDE2IEBACiBQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gaW5kZXg6OgorICAgIHNpbmdsZTogX19wcmVwYXJlX18gKG1ldGFjbGFzcyBtZXRob2QpCisKIE9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZAogYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlCiBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCiAKIElmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQotaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTcwNCw2ICsxNzk4LDkgQEAKIEV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IGNsYXNzOyBib2R5CisKIFRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcwogYGBleGVjKGJvZHksIGdsb2JhbHMoKSwgbmFtZXNwYWNlKWBgLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbAogY2FsbCB0byA6ZnVuYzpgZXhlY2AgaXMgdGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcKQEAgLTE3MTMsMTIgKzE4MTAsMTkgQEAKIEhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbiwgbWV0aG9kcwogZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUuCiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IKLWNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsIGZyb20gc3RhdGljIG1ldGhvZHMuCitjbGFzcyBtZXRob2RzLCBvciB0aHJvdWdoIHRoZSBpbXBsaWNpdCBsZXhpY2FsbHkgc2NvcGVkIGBgX19jbGFzc19fYGAgcmVmZXJlbmNlCitkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KIAorLi4gX2NsYXNzLW9iamVjdC1jcmVhdGlvbjoKIAogQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdAogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBfX2NsYXNzX18gKG1ldGhvZCBjZWxsKQorICAgIHNpbmdsZTogX19jbGFzc2NlbGxfXyAoY2xhc3MgbmFtZXNwYWNlIGVudHJ5KQorCisKIE9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5LAogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcKIGBgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMKQEAgLTE3MzIsMTQgKzE4MzYsMzQgQEAKIGxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGUKIGN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIG1ldGhvZC4KIAorLi4gaW1wbC1kZXRhaWw6OgorCisgICBJbiBDUHl0aG9uIDMuNiBhbmQgbGF0ZXIsIHRoZSBgYF9fY2xhc3NfX2BgIGNlbGwgaXMgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MKKyAgIGFzIGEgYGBfX2NsYXNzY2VsbF9fYGAgZW50cnkgaW4gdGhlIGNsYXNzIG5hbWVzcGFjZS4gSWYgcHJlc2VudCwgdGhpcyBtdXN0CisgICBiZSBwcm9wYWdhdGVkIHVwIHRvIHRoZSBgYHR5cGUuX19uZXdfX2BgIGNhbGwgaW4gb3JkZXIgZm9yIHRoZSBjbGFzcyB0byBiZQorICAgaW5pdGlhbGlzZWQgY29ycmVjdGx5LgorICAgRmFpbGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AgaW4gUHl0aG9uIDMuNiwKKyAgIGFuZCBhIDpleGM6YFJ1bnRpbWVXYXJuaW5nYCBpbiB0aGUgZnV0dXJlLgorCitXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyA6Y2xhc3M6YHR5cGVgLCBvciBhbnkgbWV0YWNsYXNzIHRoYXQgdWx0aW1hdGVseQorY2FsbHMgYGB0eXBlLl9fbmV3X19gYCwgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGN1c3RvbWlzYXRpb24gc3RlcHMgYXJlCitpbnZva2VkIGFmdGVyIGNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Q6CisKKyogZmlyc3QsIGBgdHlwZS5fX25ld19fYGAgY29sbGVjdHMgYWxsIG9mIHRoZSBkZXNjcmlwdG9ycyBpbiB0aGUgY2xhc3MKKyAgbmFtZXNwYWNlIHRoYXQgZGVmaW5lIGEgOm1ldGg6YH5vYmplY3QuX19zZXRfbmFtZV9fYCBtZXRob2Q7CisqIHNlY29uZCwgYWxsIG9mIHRoZXNlIGBgX19zZXRfbmFtZV9fYGAgbWV0aG9kcyBhcmUgY2FsbGVkIHdpdGggdGhlIGNsYXNzCisgIGJlaW5nIGRlZmluZWQgYW5kIHRoZSBhc3NpZ25lZCBuYW1lIG9mIHRoYXQgcGFydGljdWxhciBkZXNjcmlwdG9yOyBhbmQKKyogZmluYWxseSwgdGhlIDptZXRoOmB+b2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYCBob29rIGlzIGNhbGxlZCBvbiB0aGUKKyAgaW1tZWRpYXRlIHBhcmVudCBvZiB0aGUgbmV3IGNsYXNzIGluIGl0cyBtZXRob2QgcmVzb2x1dGlvbiBvcmRlci4KKwogQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzIGRlY29yYXRvcnMKIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBib3VuZAogaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy4KIAogV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5IGBgdHlwZS5fX25ld19fYGAsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXMgdGhlCi1uYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZCB0aGUgb3JpZ2luYWwKLW9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlCi1vZiB0aGUgY2xhc3Mgb2JqZWN0LgorbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBuZXcgb3JkZXJlZCBtYXBwaW5nIGFuZCB0aGUgb3JpZ2luYWwKK29iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBpcyB3cmFwcGVkIGluIGEgcmVhZC1vbmx5IHByb3h5LCB3aGljaAorYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3Mgb2JqZWN0LgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjA2Miw3ICsyMTg2LDcgQEAKICAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAogICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApIHdpdGggcmVmbGVjdGVkCiAgICAoc3dhcHBlZCkgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcwotICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAorICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFsjXV8gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CiAgICB0eXBlcy4gWyNdXyBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzCiAgICBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYAogICAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgpAQCAtMjQ3OCw2ICsyNjAyLDE3IEBACiAgICBjb250cm9sbGVkIGNvbmRpdGlvbnMuIEl0IGdlbmVyYWxseSBpc24ndCBhIGdvb2QgaWRlYSB0aG91Z2gsIHNpbmNlIGl0IGNhbgogICAgbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXMgaGFuZGxlZCBpbmNvcnJlY3RseS4KIAorLi4gWyNdIFRoZSA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19pdGVyX19gLCA6bWV0aDpgX19yZXZlcnNlZF9fYCwgYW5kCisgICA6bWV0aDpgX19jb250YWluc19fYCBtZXRob2RzIGhhdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhpczsgb3RoZXJzCisgICB3aWxsIHN0aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCwgYnV0IG1heSBkbyBzbyBieSByZWx5aW5nIG9uCisgICB0aGUgYmVoYXZpb3IgdGhhdCBgYE5vbmVgYCBpcyBub3QgY2FsbGFibGUuCisKKy4uIFsjXSAiRG9lcyBub3Qgc3VwcG9ydCIgaGVyZSBtZWFucyB0aGF0IHRoZSBjbGFzcyBoYXMgbm8gc3VjaCBtZXRob2QsIG9yCisgICB0aGUgbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgRG8gbm90IHNldCB0aGUgbWV0aG9kIHRvCisgICBgYE5vbmVgYCBpZiB5b3Ugd2FudCB0byBmb3JjZSBmYWxsYmFjayB0byB0aGUgcmlnaHQgb3BlcmFuZCdzIHJlZmxlY3RlZAorICAgbWV0aG9k4oCUdGhhdCB3aWxsIGluc3RlYWQgaGF2ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IG9mIGV4cGxpY2l0bHkKKyAgICpibG9ja2luZyogc3VjaCBmYWxsYmFjay4KKwogLi4gWyNdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1yZWZsZWN0ZWQgbWV0aG9kCiAgICAoc3VjaCBhcyA6bWV0aDpgX19hZGRfX2ApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZQogICAgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAppbmRleCA5NzkyMzk5Li5iMzdkZjkyIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdApAQCAtMTcyLDcgKzE3Miw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGNvbXByZWhlbnNpb246IGBleHByZXNzaW9uYCBgY29tcF9mb3JgCi0gICBjb21wX2ZvcjogImZvciIgYHRhcmdldF9saXN0YCAiaW4iIGBvcl90ZXN0YCBbYGNvbXBfaXRlcmBdCisgICBjb21wX2ZvcjogW0FTWU5DXSAiZm9yIiBgdGFyZ2V0X2xpc3RgICJpbiIgYG9yX3Rlc3RgIFtgY29tcF9pdGVyYF0KICAgIGNvbXBfaXRlcjogYGNvbXBfZm9yYCB8IGBjb21wX2lmYAogICAgY29tcF9pZjogImlmIiBgZXhwcmVzc2lvbl9ub2NvbmRgIFtgY29tcF9pdGVyYF0KIApAQCAtMTg2LDYgKzE4NiwxNyBAQAogTm90ZSB0aGF0IHRoZSBjb21wcmVoZW5zaW9uIGlzIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgc2NvcGUsIHNvIG5hbWVzIGFzc2lnbmVkCiB0byBpbiB0aGUgdGFyZ2V0IGxpc3QgZG9uJ3QgImxlYWsiIGludG8gdGhlIGVuY2xvc2luZyBzY29wZS4KIAorU2luY2UgUHl0aG9uIDMuNiwgaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24sIGFuIDprZXl3b3JkOmBhc3luYyBmb3JgCitjbGF1c2UgbWF5IGJlIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIGEgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAuCitBIGNvbXByZWhlbnNpb24gaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24gbWF5IGNvbnNpc3Qgb2YgZWl0aGVyIGEKKzprZXl3b3JkOmBmb3JgIG9yIDprZXl3b3JkOmBhc3luYyBmb3JgIGNsYXVzZSBmb2xsb3dpbmcgdGhlIGxlYWRpbmcKK2V4cHJlc3Npb24sIG1heSBjb250YW4gYWRkaXRvbmFsIDprZXl3b3JkOmBmb3JgIG9yIDprZXl3b3JkOmBhc3luYyBmb3JgCitjbGF1c2VzLCBhbmQgbWF5IGFsc28gdXNlIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbnMuCitJZiBhIGNvbXByZWhlbnNpb24gY29udGFpbnMgZWl0aGVyIDprZXl3b3JkOmBhc3luYyBmb3JgIGNsYXVzZXMKK29yIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbnMgaXQgaXMgY2FsbGVkIGFuCis6ZGZuOmBhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbmAuICBBbiBhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbiBtYXkKK3N1c3BlbmQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29yb3V0aW5lIGZ1bmN0aW9uIGluIHdoaWNoIGl0IGFwcGVhcnMuCitTZWUgYWxzbyA6cGVwOmA1MzBgLgogCiAuLiBfbGlzdHM6CiAKQEAgLTMxNSw2ICszMjYsMTQgQEAKIFRoZSBwYXJlbnRoZXNlcyBjYW4gYmUgb21pdHRlZCBvbiBjYWxscyB3aXRoIG9ubHkgb25lIGFyZ3VtZW50LiAgU2VlIHNlY3Rpb24KIDpyZWY6YGNhbGxzYCBmb3IgZGV0YWlscy4KIAorU2luY2UgUHl0aG9uIDMuNiwgaWYgdGhlIGdlbmVyYXRvciBhcHBlYXJzIGluIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uLAordGhlbiA6a2V5d29yZDpgYXN5bmMgZm9yYCBjbGF1c2VzIGFuZCA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zIGFyZSBwZXJtaXR0ZWQKK2FzIHdpdGggYW4gYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb24uICBJZiBhIGdlbmVyYXRvciBleHByZXNzaW9uCitjb250YWlucyBlaXRoZXIgOmtleXdvcmQ6YGFzeW5jIGZvcmAgY2xhdXNlcyBvciA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zCitpdCBpcyBjYWxsZWQgYW4gOmRmbjpgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBleHByZXNzaW9uYC4KK0FuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZXhwcmVzc2lvbiB5aWVsZHMgYSBuZXcgYXN5bmNocm9ub3VzCitnZW5lcmF0b3Igb2JqZWN0LCB3aGljaCBpcyBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IKKyhzZWUgOnJlZjpgYXN5bmMtaXRlcmF0b3JzYCkuCiAKIC4uIF95aWVsZGV4cHI6CiAKQEAgLTMzMCw5ICszNDksMjIgQEAKICAgIHlpZWxkX2F0b206ICIoIiBgeWllbGRfZXhwcmVzc2lvbmAgIikiCiAgICB5aWVsZF9leHByZXNzaW9uOiAieWllbGQiIFtgZXhwcmVzc2lvbl9saXN0YCB8ICJmcm9tIiBgZXhwcmVzc2lvbmBdCiAKLVRoZSB5aWVsZCBleHByZXNzaW9uIGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgOnRlcm06YGdlbmVyYXRvcmAgZnVuY3Rpb24gYW5kCitUaGUgeWllbGQgZXhwcmVzc2lvbiBpcyB1c2VkIHdoZW4gZGVmaW5pbmcgYSA6dGVybTpgZ2VuZXJhdG9yYCBmdW5jdGlvbgorb3IgYW4gOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3JgIGZ1bmN0aW9uIGFuZAogdGh1cyBjYW4gb25seSBiZSB1c2VkIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFVzaW5nIGEgeWllbGQKLWV4cHJlc3Npb24gaW4gYSBmdW5jdGlvbidzIGJvZHkgY2F1c2VzIHRoYXQgZnVuY3Rpb24gdG8gYmUgYSBnZW5lcmF0b3IuCitleHByZXNzaW9uIGluIGEgZnVuY3Rpb24ncyBib2R5IGNhdXNlcyB0aGF0IGZ1bmN0aW9uIHRvIGJlIGEgZ2VuZXJhdG9yLAorYW5kIHVzaW5nIGl0IGluIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uJ3MgYm9keSBjYXVzZXMgdGhhdAorY29yb3V0aW5lIGZ1bmN0aW9uIHRvIGJlIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IuIEZvciBleGFtcGxlOjoKKworICAgIGRlZiBnZW4oKTogICMgZGVmaW5lcyBhIGdlbmVyYXRvciBmdW5jdGlvbgorICAgICAgICB5aWVsZCAxMjMKKworICAgIGFzeW5jIGRlZiBhZ2VuKCk6ICMgZGVmaW5lcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uIChQRVAgNTI1KQorICAgICAgICB5aWVsZCAxMjMKKworR2VuZXJhdG9yIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGJlbG93LCB3aGlsZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yCitmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBzZXBhcmF0ZWx5IGluIHNlY3Rpb24KKzpyZWY6YGFzeW5jaHJvbm91cy1nZW5lcmF0b3ItZnVuY3Rpb25zYC4KIAogV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYQogZ2VuZXJhdG9yLiAgVGhhdCBnZW5lcmF0b3IgdGhlbiBjb250cm9scyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uCkBAIC00OTYsNiArNTI4LDEzNCBAQAogRm9yIGV4YW1wbGVzIHVzaW5nIGBgeWllbGQgZnJvbWBgLCBzZWUgOnJlZjpgcGVwLTM4MGAgaW4gIldoYXQncyBOZXcgaW4KIFB5dGhvbi4iCiAKKy4uIF9hc3luY2hyb25vdXMtZ2VuZXJhdG9yLWZ1bmN0aW9uczoKKworQXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBwcmVzZW5jZSBvZiBhIHlpZWxkIGV4cHJlc3Npb24gaW4gYSBmdW5jdGlvbiBvciBtZXRob2QgZGVmaW5lZCB1c2luZworOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVydGhlciBkZWZpbmVzIHRoZSBmdW5jdGlvbiBhcyBhCis6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvcmAgZnVuY3Rpb24uCisKK1doZW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4KK2FzeW5jaHJvbm91cyBpdGVyYXRvciBrbm93biBhcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIG9iamVjdC4KK1RoYXQgb2JqZWN0IHRoZW4gY29udHJvbHMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorQW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBvYmplY3QgaXMgdHlwaWNhbGx5IHVzZWQgaW4gYW4KKzprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudCBpbiBhIGNvcm91dGluZSBmdW5jdGlvbiBhbmFsb2dvdXNseSB0bworaG93IGEgZ2VuZXJhdG9yIG9iamVjdCB3b3VsZCBiZSB1c2VkIGluIGEgOmtleXdvcmQ6YGZvcmAgc3RhdGVtZW50LgorCitDYWxsaW5nIG9uZSBvZiB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvcidzIG1ldGhvZHMgcmV0dXJucyBhbgorOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LCBhbmQgdGhlIGV4ZWN1dGlvbiBzdGFydHMgd2hlbiB0aGlzIG9iamVjdAoraXMgYXdhaXRlZCBvbi4gQXQgdGhhdCB0aW1lLCB0aGUgZXhlY3V0aW9uIHByb2NlZWRzIHRvIHRoZSBmaXJzdCB5aWVsZAorZXhwcmVzc2lvbiwgd2hlcmUgaXQgaXMgc3VzcGVuZGVkIGFnYWluLCByZXR1cm5pbmcgdGhlIHZhbHVlIG9mCis6dG9rZW46YGV4cHJlc3Npb25fbGlzdGAgdG8gdGhlIGF3YWl0aW5nIGNvcm91dGluZS4gQXMgd2l0aCBhIGdlbmVyYXRvciwKK3N1c3BlbnNpb24gbWVhbnMgdGhhdCBhbGwgbG9jYWwgc3RhdGUgaXMgcmV0YWluZWQsIGluY2x1ZGluZyB0aGUKK2N1cnJlbnQgYmluZGluZ3Mgb2YgbG9jYWwgdmFyaWFibGVzLCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciwgdGhlIGludGVybmFsCitldmFsdWF0aW9uIHN0YWNrLCBhbmQgdGhlIHN0YXRlIG9mIGFueSBleGNlcHRpb24gaGFuZGxpbmcuICBXaGVuIHRoZSBleGVjdXRpb24KK2lzIHJlc3VtZWQgYnkgYXdhaXRpbmcgb24gdGhlIG5leHQgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMKK2dlbmVyYXRvcidzIG1ldGhvZHMsIHRoZSBmdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSB5aWVsZAorZXhwcmVzc2lvbiB3ZXJlIGp1c3QgYW5vdGhlciBleHRlcm5hbCBjYWxsLiBUaGUgdmFsdWUgb2YgdGhlIHlpZWxkIGV4cHJlc3Npb24KK2FmdGVyIHJlc3VtaW5nIGRlcGVuZHMgb24gdGhlIG1ldGhvZCB3aGljaCByZXN1bWVkIHRoZSBleGVjdXRpb24uICBJZgorOm1ldGg6YH5hZ2VuLl9fYW5leHRfX2AgaXMgdXNlZCB0aGVuIHRoZSByZXN1bHQgaXMgOmNvbnN0OmBOb25lYC4gT3RoZXJ3aXNlLCBpZgorOm1ldGg6YH5hZ2VuLmFzZW5kYCBpcyB1c2VkLCB0aGVuIHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgdmFsdWUgcGFzc2VkIGluIHRvCit0aGF0IG1ldGhvZC4KKworSW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiwgeWllbGQgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgYW55d2hlcmUKK2luIGEgOmtleXdvcmQ6YHRyeWAgY29uc3RydWN0LiBIb3dldmVyLCBpZiBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGlzIG5vdAorcmVzdW1lZCBiZWZvcmUgaXQgaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlIGNvdW50IG9yIGJ5CitiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCksIHRoZW4gYSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBhIDprZXl3b3JkOmB0cnlgCitjb25zdHJ1Y3QgY291bGQgcmVzdWx0IGluIGEgZmFpbHVyZSB0byBleGVjdXRlIHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgCitjbGF1c2VzLiAgSW4gdGhpcyBjYXNlLCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGV2ZW50IGxvb3Agb3IKK3NjaGVkdWxlciBydW5uaW5nIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHRvIGNhbGwgdGhlIGFzeW5jaHJvbm91cworZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YH5hZ2VuLmFjbG9zZWAgbWV0aG9kIGFuZCBydW4gdGhlIHJlc3VsdGluZworY29yb3V0aW5lIG9iamVjdCwgdGh1cyBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcwordG8gZXhlY3V0ZS4KKworVG8gdGFrZSBjYXJlIG9mIGZpbmFsaXphdGlvbiwgYW4gZXZlbnQgbG9vcCBzaG91bGQgZGVmaW5lCithICpmaW5hbGl6ZXIqIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3ItaXRlcmF0b3IKK2FuZCBwcmVzdW1hYmx5IGNhbGxzIDptZXRoOmB+YWdlbi5hY2xvc2VgIGFuZCBleGVjdXRlcyB0aGUgY29yb3V0aW5lLgorVGhpcyAgKmZpbmFsaXplciogbWF5IGJlIHJlZ2lzdGVyZWQgYnkgY2FsbGluZyA6ZnVuYzpgc3lzLnNldF9hc3luY2dlbl9ob29rc2AuCitXaGVuIGZpcnN0IGl0ZXJhdGVkIG92ZXIsIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3ItaXRlcmF0b3Igd2lsbCBzdG9yZSB0aGUKK3JlZ2lzdGVyZWQgKmZpbmFsaXplciogdG8gYmUgY2FsbGVkIHVwb24gZmluYWxpemF0aW9uLiBGb3IgYSByZWZlcmVuY2UgZXhhbXBsZQorb2YgYSAqZmluYWxpemVyKiBtZXRob2Qgc2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYGBhc3luY2lvLkxvb3Auc2h1dGRvd25fYXN5bmNnZW5zYGAgaW4gOnNvdXJjZTpgTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHlgLgorCitUaGUgZXhwcmVzc2lvbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgYSBzeW50YXggZXJyb3Igd2hlbiB1c2VkIGluIGFuCithc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorCisuLiBpbmRleDo6IG9iamVjdDogYXN5bmNocm9ub3VzLWdlbmVyYXRvcgorLi4gX2FzeW5jaHJvbm91cy1nZW5lcmF0b3ItbWV0aG9kczoKKworQXN5bmNocm9ub3VzIGdlbmVyYXRvci1pdGVyYXRvciBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBzdWJzZWN0aW9uIGRlc2NyaWJlcyB0aGUgbWV0aG9kcyBvZiBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yLAord2hpY2ggYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorCisKKy4uIGluZGV4OjogZXhjZXB0aW9uOiBTdG9wQXN5bmNJdGVyYXRpb24KKworLi4gY29yb3V0aW5lbWV0aG9kOjogYWdlbi5fX2FuZXh0X18oKQorCisgICBSZXR1cm5zIGFuIGF3YWl0YWJsZSB3aGljaCB3aGVuIHJ1biBzdGFydHMgdG8gZXhlY3V0ZSB0aGUgYXN5bmNocm9ub3VzCisgICBnZW5lcmF0b3Igb3IgcmVzdW1lcyBpdCBhdCB0aGUgbGFzdCBleGVjdXRlZCB5aWVsZCBleHByZXNzaW9uLiAgV2hlbiBhbgorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiBpcyByZXN1bWVkIHdpdGggYSA6bWV0aDpgfmFnZW4uX19hbmV4dF9fYAorICAgbWV0aG9kLCB0aGUgY3VycmVudCB5aWVsZCBleHByZXNzaW9uIGFsd2F5cyBldmFsdWF0ZXMgdG8gOmNvbnN0OmBOb25lYCBpbgorICAgdGhlIHJldHVybmVkIGF3YWl0YWJsZSwgd2hpY2ggd2hlbiBydW4gd2lsbCBjb250aW51ZSB0byB0aGUgbmV4dCB5aWVsZAorICAgZXhwcmVzc2lvbi4gVGhlIHZhbHVlIG9mIHRoZSA6dG9rZW46YGV4cHJlc3Npb25fbGlzdGAgb2YgdGhlIHlpZWxkCisgICBleHByZXNzaW9uIGlzIHRoZSB2YWx1ZSBvZiB0aGUgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9uIHJhaXNlZCBieQorICAgdGhlIGNvbXBsZXRpbmcgY29yb3V0aW5lLiAgSWYgdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZXhpdHMgd2l0aG91dAorICAgeWllbGRpbmcgYW5vdGhlciB2YWx1ZSwgdGhlIGF3YWl0YWJsZSBpbnN0ZWFkIHJhaXNlcyBhbgorICAgOmV4YzpgU3RvcEFzeW5jSXRlcmF0aW9uYCBleGNlcHRpb24sIHNpZ25hbGxpbmcgdGhhdCB0aGUgYXN5bmNocm9ub3VzCisgICBpdGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKworICAgVGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgY2FsbGVkIGltcGxpY2l0bHkgYnkgYSA6a2V5d29yZDpgYXN5bmMgZm9yYCBsb29wLgorCisKKy4uIGNvcm91dGluZW1ldGhvZDo6IGFnZW4uYXNlbmQodmFsdWUpCisKKyAgIFJldHVybnMgYW4gYXdhaXRhYmxlIHdoaWNoIHdoZW4gcnVuIHJlc3VtZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUKKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IuIEFzIHdpdGggdGhlIDptZXRoOmB+Z2VuZXJhdG9yLnNlbmQoKWAgbWV0aG9kIGZvciBhCisgICBnZW5lcmF0b3IsIHRoaXMgInNlbmRzIiBhIHZhbHVlIGludG8gdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24sCisgICBhbmQgdGhlICp2YWx1ZSogYXJndW1lbnQgYmVjb21lcyB0aGUgcmVzdWx0IG9mIHRoZSBjdXJyZW50IHlpZWxkIGV4cHJlc3Npb24uCisgICBUaGUgYXdhaXRhYmxlIHJldHVybmVkIGJ5IHRoZSA6bWV0aDpgYXNlbmRgIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgbmV4dAorICAgdmFsdWUgeWllbGRlZCBieSB0aGUgZ2VuZXJhdG9yIGFzIHRoZSB2YWx1ZSBvZiB0aGUgcmFpc2VkCisgICA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgb3IgcmFpc2VzIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgaWYgdGhlCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGV4aXRzIHdpdGhvdXQgeWllbGRpbmcgYW5vdGhlciB2YWx1ZS4gIFdoZW4KKyAgIDptZXRoOmBhc2VuZGAgaXMgY2FsbGVkIHRvIHN0YXJ0IHRoZSBhc3luY2hyb25vdXMKKyAgIGdlbmVyYXRvciwgaXQgbXVzdCBiZSBjYWxsZWQgd2l0aCA6Y29uc3Q6YE5vbmVgIGFzIHRoZSBhcmd1bWVudCwKKyAgIGJlY2F1c2UgdGhlcmUgaXMgbm8geWllbGQgZXhwcmVzc2lvbiB0aGF0IGNvdWxkIHJlY2VpdmUgdGhlIHZhbHVlLgorCisKKy4uIGNvcm91dGluZW1ldGhvZDo6IGFnZW4uYXRocm93KHR5cGVbLCB2YWx1ZVssIHRyYWNlYmFja11dKQorCisgICBSZXR1cm5zIGFuIGF3YWl0YWJsZSB0aGF0IHJhaXNlcyBhbiBleGNlcHRpb24gb2YgdHlwZSBgYHR5cGVgYCBhdCB0aGUgcG9pbnQKKyAgIHdoZXJlIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHdhcyBwYXVzZWQsIGFuZCByZXR1cm5zIHRoZSBuZXh0IHZhbHVlCisgICB5aWVsZGVkIGJ5IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gYXMgdGhlIHZhbHVlIG9mIHRoZSByYWlzZWQKKyAgIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbi4gIElmIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGV4aXRzCisgICB3aXRob3V0IHlpZWxkaW5nIGFub3RoZXIgdmFsdWUsIGFuIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXhjZXB0aW9uIGlzCisgICByYWlzZWQgYnkgdGhlIGF3YWl0YWJsZS4KKyAgIElmIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gZG9lcyBub3QgY2F0Y2ggdGhlIHBhc3NlZC1pbiBleGNlcHRpb24sIG9yCisgICByYWlzZXMgYSBkaWZmZXJlbnQgZXhjZXB0aW9uLCB0aGVuIHdoZW4gdGhlIGF3YWl0YWxiZSBpcyBydW4gdGhhdCBleGNlcHRpb24KKyAgIHByb3BhZ2F0ZXMgdG8gdGhlIGNhbGxlciBvZiB0aGUgYXdhaXRhYmxlLgorCisuLiBpbmRleDo6IGV4Y2VwdGlvbjogR2VuZXJhdG9yRXhpdAorCisKKy4uIGNvcm91dGluZW1ldGhvZDo6IGFnZW4uYWNsb3NlKCkKKworICAgUmV0dXJucyBhbiBhd2FpdGFibGUgdGhhdCB3aGVuIHJ1biB3aWxsIHRocm93IGEgOmV4YzpgR2VuZXJhdG9yRXhpdGAgaW50bworICAgdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24gYXQgdGhlIHBvaW50IHdoZXJlIGl0IHdhcyBwYXVzZWQuCisgICBJZiB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiB0aGVuIGV4aXRzIGdyYWNlZnVsbHksIGlzIGFscmVhZHkKKyAgIGNsb3NlZCwgb3IgcmFpc2VzIDpleGM6YEdlbmVyYXRvckV4aXRgIChieSBub3QgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiksCisgICB0aGVuIHRoZSByZXR1cm5lZCBhd2FpdGFibGUgd2lsbCByYWlzZSBhIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbi4KKyAgIEFueSBmdXJ0aGVyIGF3YWl0YWJsZXMgcmV0dXJuZWQgYnkgc3Vic2VxdWVudCBjYWxscyB0byB0aGUgYXN5bmNocm9ub3VzCisgICBnZW5lcmF0b3Igd2lsbCByYWlzZSBhIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXhjZXB0aW9uLiAgSWYgdGhlCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHlpZWxkcyBhIHZhbHVlLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkCisgICBieSB0aGUgYXdhaXRhYmxlLiAgSWYgdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgcmFpc2VzIGFueSBvdGhlciBleGNlcHRpb24sCisgICBpdCBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIgb2YgdGhlIGF3YWl0YWJsZS4gIElmIHRoZSBhc3luY2hyb25vdXMKKyAgIGdlbmVyYXRvciBoYXMgYWxyZWFkeSBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiBvciBub3JtYWwgZXhpdCwgdGhlbgorICAgZnVydGhlciBjYWxscyB0byA6bWV0aDpgYWNsb3NlYCB3aWxsIHJldHVybiBhbiBhd2FpdGFibGUgdGhhdCBkb2VzIG5vdGhpbmcuCiAKIC4uIF9wcmltYXJpZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdCBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAppbmRleCA2NDMwMmI4Li41ZTJjMWM4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CkBAIC0zNiw3ICszNiw3IEBACiAKIFdoZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCiBpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQotY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cworY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCiBzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCiBpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCkBAIC0xNjcsNyArMTY3LDcgQEAKIFRoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKIHRoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgogZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KLUlmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLgogCiAKIFRoZSBtb2R1bGUgY2FjaGUKQEAgLTE4Niw3ICsxODYsNyBAQAogRHVyaW5nIGltcG9ydCwgdGhlIG1vZHVsZSBuYW1lIGlzIGxvb2tlZCB1cCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGFuZCBpZgogcHJlc2VudCwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgdGhlIG1vZHVsZSBzYXRpc2Z5aW5nIHRoZSBpbXBvcnQsIGFuZCB0aGUKIHByb2Nlc3MgY29tcGxldGVzLiAgSG93ZXZlciwgaWYgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCB0aGVuIGFuCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCis6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKIGNvbnRpbnVlIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZS4KIAogOmRhdGE6YHN5cy5tb2R1bGVzYCBpcyB3cml0YWJsZS4gIERlbGV0aW5nIGEga2V5IG1heSBub3QgZGVzdHJveSB0aGUKQEAgLTE5NCw3ICsxOTQsNyBAQAogYnV0IGl0IHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGNhdXNpbmcKIFB5dGhvbiB0byBzZWFyY2ggYW5ldyBmb3IgdGhlIG5hbWVkIG1vZHVsZSB1cG9uIGl0cyBuZXh0CiBpbXBvcnQuIFRoZSBrZXkgY2FuIGFsc28gYmUgYXNzaWduZWQgdG8gYGBOb25lYGAsIGZvcmNpbmcgdGhlIG5leHQgaW1wb3J0Ci1vZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAuCitvZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYC4KIAogQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCiBpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCkBAIC0yODgsOCArMjg4LDggQEAKIElmIHRoZSBtZXRhIHBhdGggZmluZGVyIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBhCiBzcGVjIG9iamVjdC4gIElmIGl0IGNhbm5vdCBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBgYE5vbmVgYC4gIElmCiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgcHJvY2Vzc2luZyByZWFjaGVzIHRoZSBlbmQgb2YgaXRzIGxpc3Qgd2l0aG91dCByZXR1cm5pbmcKLWEgc3BlYywgdGhlbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgcmFpc2VkCi1hcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KK2Egc3BlYywgdGhlbiBhIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zCityYWlzZWQgYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCiAKIFRoZSA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjKClgIG1ldGhvZCBvZiBtZXRhIHBhdGgKIGZpbmRlcnMgaXMgY2FsbGVkIHdpdGggdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4gIFRoZSBmaXJzdCBpcyB0aGUgZnVsbHkKQEAgLTI5OCw5ICsyOTgsOSBAQAogdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYGBOb25lYGAsIGJ1dCBmb3Igc3VibW9kdWxlcyBvcgogc3VicGFja2FnZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgcGFja2FnZSdzCiBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiBJZiB0aGUgYXBwcm9wcmlhdGUgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBjYW5ub3QKLWJlIGFjY2Vzc2VkLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50IGlzIGFuCi1leGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuICBUaGUKLWltcG9ydCBzeXN0ZW0gcGFzc2VzIGluIGEgdGFyZ2V0IG1vZHVsZSBvbmx5IGR1cmluZyByZWxvYWQuCitiZSBhY2Nlc3NlZCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50CitpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuCitUaGUgaW1wb3J0IHN5c3RlbSBwYXNzZXMgaW4gYSB0YXJnZXQgbW9kdWxlIG9ubHkgZHVyaW5nIHJlbG9hZC4KIAogVGhlIG1ldGEgcGF0aCBtYXkgYmUgdHJhdmVyc2VkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBpbXBvcnQgcmVxdWVzdC4KIEZvciBleGFtcGxlLCBhc3N1bWluZyBub25lIG9mIHRoZSBtb2R1bGVzIGludm9sdmVkIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLApAQCAtNTU0LDE5ICs1NTQsMzAgQEAKICAgIGRldGFpbHMuCiAKICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0Ci0gICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KKyAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLiBJdCBpcworICAgZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBgYF9fc3BlY19fLnBhcmVudGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIHZhbHVlIG9mIGBgX19wYWNrYWdlX19gYCBpcyBleHBlY3RlZCB0byBiZSB0aGUgc2FtZSBhcworICAgICAgYGBfX3NwZWNfXy5wYXJlbnRgYC4KIAogLi4gYXR0cmlidXRlOjogX19zcGVjX18KIAogICAgVGhlIGBgX19zcGVjX19gYCBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIG1vZHVsZSBzcGVjIHRoYXQgd2FzCi0gICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuICBUaGlzIGlzIHVzZWQgcHJpbWFyaWx5IGZvcgotICAgaW50cm9zcGVjdGlvbiBhbmQgZHVyaW5nIHJlbG9hZGluZy4gIFNldHRpbmcgYGBfX3NwZWNfX2BgCisgICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuIFNldHRpbmcgYGBfX3NwZWNfX2BgCiAgICBhcHByb3ByaWF0ZWx5IGFwcGxpZXMgZXF1YWxseSB0byA6cmVmOmBtb2R1bGVzIGluaXRpYWxpemVkIGR1cmluZwogICAgaW50ZXJwcmV0ZXIgc3RhcnR1cCA8cHJvZ3JhbXM+YC4gIFRoZSBvbmUgZXhjZXB0aW9uIGlzIGBgX19tYWluX19gYCwKICAgIHdoZXJlIGBgX19zcGVjX19gYCBpcyA6cmVmOmBzZXQgdG8gTm9uZSBpbiBzb21lIGNhc2VzIDxtYWluX3NwZWM+YC4KIAorICAgV2hlbiBgYF9fcGFja2FnZV9fYGAgaXMgbm90IGRlZmluZWQsIGBgX19zcGVjX18ucGFyZW50YGAgaXMgdXNlZCBhcworICAgYSBmYWxsYmFjay4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYF9fc3BlY19fLnBhcmVudGBgIGlzIHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIGBgX19wYWNrYWdlX19gYCBpcworICAgICAgbm90IGRlZmluZWQuCisKIC4uIGF0dHJpYnV0ZTo6IF9fcGF0aF9fCiAKICAgIElmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIChlaXRoZXIgcmVndWxhciBvciBuYW1lc3BhY2UpLCB0aGUgbW9kdWxlCkBAIC04NzYsNyArODg3LDcgQEAKIAogVG8gc2VsZWN0aXZlbHkgcHJldmVudCBpbXBvcnQgb2Ygc29tZSBtb2R1bGVzIGZyb20gYSBob29rIGVhcmx5IG9uIHRoZQogbWV0YSBwYXRoIChyYXRoZXIgdGhhbiBkaXNhYmxpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0gZW50aXJlbHkpLAotaXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZGlyZWN0bHkgZnJvbQoraXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBNb2R1bGVOb0ZvdW5kRXJyb3JgIGRpcmVjdGx5IGZyb20KIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWNgIGluc3RlYWQgb2YgcmV0dXJuaW5nCiBgYE5vbmVgYC4gVGhlIGxhdHRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgbWV0YSBwYXRoIHNlYXJjaCBzaG91bGQgY29udGludWUsCiB3aGlsZSByYWlzaW5nIGFuIGV4Y2VwdGlvbiB0ZXJtaW5hdGVzIGl0IGltbWVkaWF0ZWx5LgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKaW5kZXggMzdmMjVmMS4uZGE3MDE3YSAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CkBAIC00MDUsNyArNDA1LDggQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgc3RyaW5nbGl0ZXJhbDogW2BzdHJpbmdwcmVmaXhgXShgc2hvcnRzdHJpbmdgIHwgYGxvbmdzdHJpbmdgKQotICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIKKyAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiIHwgImYiIHwgIkYiCisgICAgICAgICAgICAgICA6IHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgIlJmIiB8ICJSRiIKICAgIHNob3J0c3RyaW5nOiAiJyIgYHNob3J0c3RyaW5naXRlbWAqICInIiB8ICciJyBgc2hvcnRzdHJpbmdpdGVtYCogJyInCiAgICBsb25nc3RyaW5nOiAiJycnIiBgbG9uZ3N0cmluZ2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nc3RyaW5naXRlbWAqICciIiInCiAgICBzaG9ydHN0cmluZ2l0ZW06IGBzaG9ydHN0cmluZ2NoYXJgIHwgYHN0cmluZ2VzY2FwZXNlcWAKQEAgLTQ2NCw2ICs0NjUsMTEgQEAKICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCiAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorQSBzdHJpbmcgbGl0ZXJhbCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYCBpbiBpdHMgcHJlZml4IGlzIGEKKzpkZm46YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbGA7IHNlZSA6cmVmOmBmLXN0cmluZ3NgLiAgVGhlIGBgJ2YnYGAgbWF5IGJlCitjb21iaW5lZCB3aXRoIGBgJ3InYGAsIGJ1dCBub3Qgd2l0aCBgYCdiJ2BgIG9yIGBgJ3UnYGAsIHRoZXJlZm9yZSByYXcKK2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgbm90LgorCiBJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBCiAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZSBsaXRlcmFsLCBpLmUuIGVpdGhlciBgYCdgYCBvciBgYCJgYC4pCkBAIC01NTQsNiArNTYwLDEwIEBACiBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZgogdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzIGxpdGVyYWxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSBhIERlcHJlY2F0aW9uV2FybmluZy4gIEluCisgICAgICBzb21lIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGV5IHdpbGwgYmUgYSBTeW50YXhFcnJvci4KKwogRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgYnV0IHRoZQogYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsIGBgciJcIiJgYCBpcyBhIHZhbGlkIHN0cmluZwogbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGUgcXVvdGU7IGBgciJcImBgCkBAIC01ODMsNyArNTkzLDExMSBAQAogTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkIGF0IHRoZSBzeW50YWN0aWNhbCBsZXZlbCwgYnV0IGltcGxlbWVudGVkIGF0CiBjb21waWxlIHRpbWUuICBUaGUgJysnIG9wZXJhdG9yIG11c3QgYmUgdXNlZCB0byBjb25jYXRlbmF0ZSBzdHJpbmcgZXhwcmVzc2lvbnMKIGF0IHJ1biB0aW1lLiAgQWxzbyBub3RlIHRoYXQgbGl0ZXJhbCBjb25jYXRlbmF0aW9uIGNhbiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKLXN0eWxlcyBmb3IgZWFjaCBjb21wb25lbnQgKGV2ZW4gbWl4aW5nIHJhdyBzdHJpbmdzIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZ3MpLgorc3R5bGVzIGZvciBlYWNoIGNvbXBvbmVudCAoZXZlbiBtaXhpbmcgcmF3IHN0cmluZ3MgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5ncyksCithbmQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBtYXkgYmUgY29uY2F0ZW5hdGVkIHdpdGggcGxhaW4gc3RyaW5nIGxpdGVyYWxzLgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCisgICBzaW5nbGU6IGludGVycG9sYXRlZCBzdHJpbmcgbGl0ZXJhbAorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRlZCBsaXRlcmFsCisgICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGVkIGxpdGVyYWwKKyAgIHNpbmdsZTogZi1zdHJpbmcKKy4uIF9mLXN0cmluZ3M6CisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0EgOmRmbjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsYCBvciA6ZGZuOmBmLXN0cmluZ2AgaXMgYSBzdHJpbmcgbGl0ZXJhbAordGhhdCBpcyBwcmVmaXhlZCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYC4gIFRoZXNlIHN0cmluZ3MgbWF5IGNvbnRhaW4KK3JlcGxhY2VtZW50IGZpZWxkcywgd2hpY2ggYXJlIGV4cHJlc3Npb25zIGRlbGltaXRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgorV2hpbGUgb3RoZXIgc3RyaW5nIGxpdGVyYWxzIGFsd2F5cyBoYXZlIGEgY29uc3RhbnQgdmFsdWUsIGZvcm1hdHRlZCBzdHJpbmdzCithcmUgcmVhbGx5IGV4cHJlc3Npb25zIGV2YWx1YXRlZCBhdCBydW4gdGltZS4KKworRXNjYXBlIHNlcXVlbmNlcyBhcmUgZGVjb2RlZCBsaWtlIGluIG9yZGluYXJ5IHN0cmluZyBsaXRlcmFscyAoZXhjZXB0IHdoZW4KK2EgbGl0ZXJhbCBpcyBhbHNvIG1hcmtlZCBhcyBhIHJhdyBzdHJpbmcpLiAgQWZ0ZXIgZGVjb2RpbmcsIHRoZSBncmFtbWFyCitmb3IgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgaXM6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGZfc3RyaW5nOiAoYGxpdGVyYWxfY2hhcmAgfCAie3siIHwgIn19IiB8IGByZXBsYWNlbWVudF9maWVsZGApKgorICAgcmVwbGFjZW1lbnRfZmllbGQ6ICJ7IiBgZl9leHByZXNzaW9uYCBbIiEiIGBjb252ZXJzaW9uYF0gWyI6IiBgZm9ybWF0X3NwZWNgXSAifSIKKyAgIGZfZXhwcmVzc2lvbjogKGBjb25kaXRpb25hbF9leHByZXNzaW9uYCB8ICIqIiBgb3JfZXhwcmApCisgICAgICAgICAgICAgICA6ICAgKCIsIiBgY29uZGl0aW9uYWxfZXhwcmVzc2lvbmAgfCAiLCIgIioiIGBvcl9leHByYCkqIFsiLCJdCisgICAgICAgICAgICAgICA6IHwgYHlpZWxkX2V4cHJlc3Npb25gCisgICBjb252ZXJzaW9uOiAicyIgfCAiciIgfCAiYSIKKyAgIGZvcm1hdF9zcGVjOiAoYGxpdGVyYWxfY2hhcmAgfCBOVUxMIHwgYHJlcGxhY2VtZW50X2ZpZWxkYCkqCisgICBsaXRlcmFsX2NoYXI6IDxhbnkgY29kZSBwb2ludCBleGNlcHQgInsiLCAifSIgb3IgTlVMTD4KKworVGhlIHBhcnRzIG9mIHRoZSBzdHJpbmcgb3V0c2lkZSBjdXJseSBicmFjZXMgYXJlIHRyZWF0ZWQgbGl0ZXJhbGx5LAorZXhjZXB0IHRoYXQgYW55IGRvdWJsZWQgY3VybHkgYnJhY2VzIGBgJ3t7J2BgIG9yIGBgJ319J2BgIGFyZSByZXBsYWNlZAord2l0aCB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUgY3VybHkgYnJhY2UuICBBIHNpbmdsZSBvcGVuaW5nIGN1cmx5CiticmFja2V0IGBgJ3snYGAgbWFya3MgYSByZXBsYWNlbWVudCBmaWVsZCwgd2hpY2ggc3RhcnRzIHdpdGggYQorUHl0aG9uIGV4cHJlc3Npb24uICBBZnRlciB0aGUgZXhwcmVzc2lvbiwgdGhlcmUgbWF5IGJlIGEgY29udmVyc2lvbiBmaWVsZCwKK2ludHJvZHVjZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGAnISdgYC4gIEEgZm9ybWF0IHNwZWNpZmllciBtYXkgYWxzbworYmUgYXBwZW5kZWQsIGludHJvZHVjZWQgYnkgYSBjb2xvbiBgYCc6J2BgLiAgQSByZXBsYWNlbWVudCBmaWVsZCBlbmRzCit3aXRoIGEgY2xvc2luZyBjdXJseSBicmFja2V0IGBgJ30nYGAuCisKK0V4cHJlc3Npb25zIGluIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIHRyZWF0ZWQgbGlrZSByZWd1bGFyCitQeXRob24gZXhwcmVzc2lvbnMgc3Vycm91bmRlZCBieSBwYXJlbnRoZXNlcywgd2l0aCBhIGZldyBleGNlcHRpb25zLgorQW4gZW1wdHkgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCwgYW5kIGEgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbgorbXVzdCBiZSBzdXJyb3VuZGVkIGJ5IGV4cGxpY2l0IHBhcmVudGhlc2VzLiAgUmVwbGFjZW1lbnQgZXhwcmVzc2lvbnMKK2NhbiBjb250YWluIGxpbmUgYnJlYWtzIChlLmcuIGluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncyksIGJ1dCB0aGV5CitjYW5ub3QgY29udGFpbiBjb21tZW50cy4gIEVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQKK3doZXJlIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwgYXBwZWFycywgaW4gb3JkZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0LgorCitJZiBhIGNvbnZlcnNpb24gaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24KK2lzIGNvbnZlcnRlZCBiZWZvcmUgZm9ybWF0dGluZy4gIENvbnZlcnNpb24gYGAnIXMnYGAgY2FsbHMgOmZ1bmM6YHN0cmAgb24KK3RoZSByZXN1bHQsIGBgJyFyJ2BgIGNhbGxzIDpmdW5jOmByZXByYCwgYW5kIGBgJyFhJ2BgIGNhbGxzIDpmdW5jOmBhc2NpaWAuCisKK1RoZSByZXN1bHQgaXMgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlIDpmdW5jOmBmb3JtYXRgIHByb3RvY29sLiAgVGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fZm9ybWF0X19gIG1ldGhvZCBvZiB0aGUKK2V4cHJlc3Npb24gb3IgY29udmVyc2lvbiByZXN1bHQuICBBbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIHdoZW4gdGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIG9taXR0ZWQuICBUaGUgZm9ybWF0dGVkIHJlc3VsdCBpcyB0aGVuIGluY2x1ZGVkIGluCit0aGUgZmluYWwgdmFsdWUgb2YgdGhlIHdob2xlIHN0cmluZy4KKworVG9wLWxldmVsIGZvcm1hdCBzcGVjaWZpZXJzIG1heSBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCitUaGVzZSBuZXN0ZWQgZmllbGRzIG1heSBpbmNsdWRlIHRoZWlyIG93biBjb252ZXJzaW9uIGZpZWxkcyBhbmQKK2Zvcm1hdCBzcGVjaWZpZXJzLCBidXQgbWF5IG5vdCBpbmNsdWRlIG1vcmUgZGVlcGx5LW5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgbWF5IGJlIGNvbmNhdGVuYXRlZCwgYnV0IHJlcGxhY2VtZW50IGZpZWxkcworY2Fubm90IGJlIHNwbGl0IGFjcm9zcyBsaXRlcmFscy4KKworU29tZSBleGFtcGxlcyBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzOjoKKworICAgPj4+IG5hbWUgPSAiRnJlZCIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge25hbWUhcn0uIgorICAgIkhlIHNhaWQgaGlzIG5hbWUgaXMgJ0ZyZWQnLiIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge3JlcHIobmFtZSl9LiIgICMgcmVwcigpIGlzIGVxdWl2YWxlbnQgdG8gIXIKKyAgICJIZSBzYWlkIGhpcyBuYW1lIGlzICdGcmVkJy4iCisgICA+Pj4gd2lkdGggPSAxMAorICAgPj4+IHByZWNpc2lvbiA9IDQKKyAgID4+PiB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgiMTIuMzQ1NjciKQorICAgPj4+IGYicmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0iICAjIG5lc3RlZCBmaWVsZHMKKyAgICdyZXN1bHQ6ICAgICAgMTIuMzUnCisKK0EgY29uc2VxdWVuY2Ugb2Ygc2hhcmluZyB0aGUgc2FtZSBzeW50YXggYXMgcmVndWxhciBzdHJpbmcgbGl0ZXJhbHMgaXMKK3RoYXQgY2hhcmFjdGVycyBpbiB0aGUgcmVwbGFjZW1lbnQgZmllbGRzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlCitxdW90aW5nIHVzZWQgaW4gdGhlIG91dGVyIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbDo6CisKKyAgIGYiYWJjIHthWyJ4Il19IGRlZiIgICAgIyBlcnJvcjogb3V0ZXIgc3RyaW5nIGxpdGVyYWwgZW5kZWQgcHJlbWF0dXJlbHkKKyAgIGYiYWJjIHthWyd4J119IGRlZiIgICAgIyB3b3JrYXJvdW5kOiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKKworQmFja3NsYXNoZXMgYXJlIG5vdCBhbGxvd2VkIGluIGZvcm1hdCBleHByZXNzaW9ucyBhbmQgd2lsbCByYWlzZQorYW4gZXJyb3I6OgorCisgICBmIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgIyByYWlzZXMgU3ludGF4RXJyb3IKKworVG8gaW5jbHVkZSBhIHZhbHVlIGluIHdoaWNoIGEgYmFja3NsYXNoIGVzY2FwZSBpcyByZXF1aXJlZCwgY3JlYXRlCithIHRlbXBvcmFyeSB2YXJpYWJsZS4KKworICAgPj4+IG5ld2xpbmUgPSBvcmQoJ1xuJykKKyAgID4+PiBmIm5ld2xpbmU6IHtuZXdsaW5lfSIKKyAgICduZXdsaW5lOiAxMCcKKworU2VlIGFsc28gOnBlcDpgNDk4YCBmb3IgdGhlIHByb3Bvc2FsIHRoYXQgYWRkZWQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywKK2FuZCA6bWV0aDpgc3RyLmZvcm1hdGAsIHdoaWNoIHVzZXMgYSByZWxhdGVkIGZvcm1hdCBzdHJpbmcgbWVjaGFuaXNtLgogCiAKIC4uIF9udW1iZXJzOgpAQCAtNjEyLDIwICs3MjYsMjQgQEAKIEludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGludGVnZXI6IGBkZWNpbWFsaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAgfCBgYmluaW50ZWdlcmAKLSAgIGRlY2ltYWxpbnRlZ2VyOiBgbm9uemVyb2RpZ2l0YCBgZGlnaXRgKiB8ICIwIisKKyAgIGludGVnZXI6IGBkZWNpbnRlZ2VyYCB8IGBiaW5pbnRlZ2VyYCB8IGBvY3RpbnRlZ2VyYCB8IGBoZXhpbnRlZ2VyYAorICAgZGVjaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgKFsiXyJdIGBkaWdpdGApKiB8ICIwIisgKFsiXyJdICIwIikqCisgICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgKFsiXyJdIGBiaW5kaWdpdGApKworICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIChbIl8iXSBgb2N0ZGlnaXRgKSsKKyAgIGhleGludGVnZXI6ICIwIiAoIngiIHwgIlgiKSAoWyJfIl0gYGhleGRpZ2l0YCkrCiAgICBub256ZXJvZGlnaXQ6ICIxIi4uLiI5IgogICAgZGlnaXQ6ICIwIi4uLiI5IgotICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIGBvY3RkaWdpdGArCi0gICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgYGhleGRpZ2l0YCsKLSAgIGJpbmludGVnZXI6ICIwIiAoImIiIHwgIkIiKSBgYmluZGlnaXRgKworICAgYmluZGlnaXQ6ICIwIiB8ICIxIgogICAgb2N0ZGlnaXQ6ICIwIi4uLiI3IgogICAgaGV4ZGlnaXQ6IGBkaWdpdGAgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiIKLSAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKIAogVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXQgY2FuIGJlCiBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS4KIAorVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBsaXRlcmFsLiAgVGhleQorY2FuIGJlIHVzZWQgdG8gZ3JvdXAgZGlnaXRzIGZvciBlbmhhbmNlZCByZWFkYWJpbGl0eS4gIE9uZSB1bmRlcnNjb3JlIGNhbiBvY2N1cgorYmV0d2VlbiBkaWdpdHMsIGFuZCBhZnRlciBiYXNlIHNwZWNpZmllcnMgbGlrZSBgYDB4YGAuCisKIE5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLiBUaGlzIGlzCiBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob24gdXNlZCBiZWZvcmUgdmVyc2lvbgogMy4wLgpAQCAtNjM0LDYgKzc1MiwxMCBAQAogCiAgICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTEKICAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmCisgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgogCiAKIC4uIF9mbG9hdGluZzoKQEAgLTY0NSwyMyArNzY3LDI4IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGZsb2F0bnVtYmVyOiBgcG9pbnRmbG9hdGAgfCBgZXhwb25lbnRmbG9hdGAKLSAgIHBvaW50ZmxvYXQ6IFtgaW50cGFydGBdIGBmcmFjdGlvbmAgfCBgaW50cGFydGAgIi4iCi0gICBleHBvbmVudGZsb2F0OiAoYGludHBhcnRgIHwgYHBvaW50ZmxvYXRgKSBgZXhwb25lbnRgCi0gICBpbnRwYXJ0OiBgZGlnaXRgKwotICAgZnJhY3Rpb246ICIuIiBgZGlnaXRgKwotICAgZXhwb25lbnQ6ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGBkaWdpdGArCisgICBwb2ludGZsb2F0OiBbYGRpZ2l0cGFydGBdIGBmcmFjdGlvbmAgfCBgZGlnaXRwYXJ0YCAiLiIKKyAgIGV4cG9uZW50ZmxvYXQ6IChgZGlnaXRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAorICAgZGlnaXRwYXJ0OiBgZGlnaXRgIChbIl8iXSBgZGlnaXRgKSoKKyAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0cGFydGAKKyAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRwYXJ0YAogCiBOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmcgcmFkaXggMTAuCiBGb3IgZXhhbXBsZSwgYGAwNzdlMDEwYGAgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZQotYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUKLWV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOjoKK2FsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4KK2ludGVnZXIgbGl0ZXJhbHMsIHVuZGVyc2NvcmVzIGFyZSBzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLgogCi0gICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMAorU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CisKKyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgIDMuMTRfMTVfOTMKIAogTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYCBpcwogYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZSBsaXRlcmFsCiBgYDFgYC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgZ3JvdXBpbmcgcHVycG9zZXMgaW4gbGl0ZXJhbHMuCisKIAogLi4gX2ltYWdpbmFyeToKIApAQCAtNjcxLDcgKzc5OCw3IEBACiBJbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGludHBhcnRgKSAoImoiIHwgIkoiKQorICAgaW1hZ251bWJlcjogKGBmbG9hdG51bWJlcmAgfCBgZGlnaXRwYXJ0YCkgKCJqIiB8ICJKIikKIAogQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuICBDb21wbGV4CiBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbmQgaGF2ZSB0aGUgc2FtZQpAQCAtNjc5LDcgKzgwNiw3IEBACiBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsIGUuZy4sIGBgKDMrNGopYGAuICBTb21lIGV4YW1wbGVzIG9mCiBpbWFnaW5hcnkgbGl0ZXJhbHM6OgogCi0gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqCisgICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgIDMuMTRlLTEwaiAgIDMuMTRfMTVfOTNqCiAKIAogLi4gX29wZXJhdG9yczoKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCBkNDAzYzRkLi5lMTUyYjE2IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICAgIDogfCBgYXNzZXJ0X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgYXNzaWdubWVudF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXRgCisgICAgICAgICAgICAgIDogfCBgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBwYXNzX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgZGVsX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcmV0dXJuX3N0bXRgCkBAIC04NCw3ICs4NSw3IEBACiAgICBhc3NpZ25tZW50X3N0bXQ6IChgdGFyZ2V0X2xpc3RgICI9IikrIChgc3RhcnJlZF9leHByZXNzaW9uYCB8IGB5aWVsZF9leHByZXNzaW9uYCkKICAgIHRhcmdldF9saXN0OiBgdGFyZ2V0YCAoIiwiIGB0YXJnZXRgKSogWyIsIl0KICAgIHRhcmdldDogYGlkZW50aWZpZXJgCi0gICAgICAgICA6IHwgIigiIGB0YXJnZXRfbGlzdGAgIikiCisgICAgICAgICA6IHwgIigiIFtgdGFyZ2V0X2xpc3RgXSAiKSIKICAgICAgICAgIDogfCAiWyIgW2B0YXJnZXRfbGlzdGBdICJdIgogICAgICAgICAgOiB8IGBhdHRyaWJ1dGVyZWZgCiAgICAgICAgICA6IHwgYHN1YnNjcmlwdGlvbmAKQEAgLTMxMiw2ICszMTMsNTAgQEAKIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzIDxhdHRyLXRhcmdldC1ub3RlPmAgYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy4KIAogCisuLiBfYW5uYXNzaWduOgorCitBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHBhaXI6IGFubm90YXRlZDsgYXNzaWdubWVudAorICAgc2luZ2xlOiBzdGF0ZW1lbnQ7IGFzc2lnbm1lbnQsIGFubm90YXRlZAorCitBbm5vdGF0aW9uIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsCitvZiBhIHZhcmlhYmxlIG9yIGF0dHJpYnV0ZSBhbm5vdGF0aW9uIGFuZCBhbiBvcHRpb25hbCBhc3NpZ25tZW50IHN0YXRlbWVudDoKKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdDogYGF1Z3RhcmdldGAgIjoiIGBleHByZXNzaW9uYCBbIj0iIGBleHByZXNzaW9uYF0KKworVGhlIGRpZmZlcmVuY2UgZnJvbSBub3JtYWwgOnJlZjpgYXNzaWdubWVudGAgaXMgdGhhdCBvbmx5IHNpbmdsZSB0YXJnZXQgYW5kCitvbmx5IHNpbmdsZSByaWdodCBoYW5kIHNpZGUgdmFsdWUgaXMgYWxsb3dlZC4KKworRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwKK3RoZSBhbm5vdGF0aW9ucyBhcmUgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gYSBzcGVjaWFsIGNsYXNzIG9yIG1vZHVsZQorYXR0cmlidXRlIDphdHRyOmBfX2Fubm90YXRpb25zX19gCit0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gdmFyaWFibGUgbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8KK2V2YWx1YXRlZCBhbm5vdGF0aW9ucy4gVGhpcyBhdHRyaWJ1dGUgaXMgd3JpdGFibGUgYW5kIGlzIGF1dG9tYXRpY2FsbHkKK2NyZWF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGNsYXNzIG9yIG1vZHVsZSBib2R5IGV4ZWN1dGlvbiwgaWYgYW5ub3RhdGlvbnMKK2FyZSBmb3VuZCBzdGF0aWNhbGx5LgorCitGb3IgZXhwcmVzc2lvbnMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCB0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBpZgoraW4gY2xhc3Mgb3IgbW9kdWxlIHNjb3BlLCBidXQgbm90IHN0b3JlZC4KKworSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyBsb2NhbCBmb3IKK3RoYXQgc2NvcGUuIEFubm90YXRpb25zIGFyZSBuZXZlciBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBmdW5jdGlvbiBzY29wZXMuCisKK0lmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgcHJlc2VudCwgYW4gYW5ub3RhdGVkCithc3NpZ25tZW50IHBlcmZvcm1zIHRoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucworKHdoZXJlIGFwcGxpY2FibGUpLiBJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIG5vdCBwcmVzZW50IGZvciBhbiBleHByZXNzaW9uCit0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgdGhlIGxhc3QKKzptZXRoOmBfX3NldGl0ZW1fX2Agb3IgOm1ldGg6YF9fc2V0YXR0cl9fYCBjYWxsLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI2YCAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBzeW50YXgKKyAgIDpwZXA6YDQ4NGAgLSBUeXBlIGhpbnRzCisKKwogLi4gX2Fzc2VydDoKIAogVGhlIDprZXl3b3JkOmBhc3NlcnRgIHN0YXRlbWVudApAQCAtNDQ3LDYgKzQ5MiwxMCBAQAogdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3QgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgYW5kCiBiZWNvbWVzIHRoZSA6YXR0cjpgU3RvcEl0ZXJhdGlvbi52YWx1ZWAgYXR0cmlidXRlLgogCitJbiBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbiBlbXB0eSA6a2V5d29yZDpgcmV0dXJuYCBzdGF0ZW1lbnQKK2luZGljYXRlcyB0aGF0IHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UKKzpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgdG8gYmUgcmFpc2VkLiAgQSBub24tZW1wdHkgOmtleXdvcmQ6YHJldHVybmAKK3N0YXRlbWVudCBpcyBhIHN5bnRheCBlcnJvciBpbiBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLgogCiAuLiBfeWllbGQ6CiAKQEAgLTg1OSwxMSArOTA4LDEyIEBACiAKIE5hbWVzIGxpc3RlZCBpbiBhIDprZXl3b3JkOmBnbG9iYWxgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbAogcGFyYW1ldGVycyBvciBpbiBhIDprZXl3b3JkOmBmb3JgIGxvb3AgY29udHJvbCB0YXJnZXQsIDprZXl3b3JkOmBjbGFzc2AKLWRlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIG9yIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KK2RlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCwgb3IgdmFyaWFibGUKK2Fubm90YXRpb24uCiAKIC4uIGltcGwtZGV0YWlsOjoKIAotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0CisgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dAogICAgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSB0aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UKICAgIHRoZW0gb3Igc2lsZW50bHkgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLgogCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5IGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQppbmRleCA2MzExMjgzLi4yNzMxOTFiIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CisrKyBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKQEAgLTM0LDcgKzM0LDcgQEAKIAogCiBJU1NVRV9VUkkgPSAnaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjUvJXMnCitTT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy42LyVzJwogCiAjIG1vbmtleS1wYXRjaCByZVNUIHBhcnNlciB0byBkaXNhYmxlIGFscGhhYmV0aWMgYW5kIHJvbWFuIGVudW1lcmF0ZWQgbGlzdHMKIGZyb20gZG9jdXRpbHMucGFyc2Vycy5yc3Quc3RhdGVzIGltcG9ydCBCb2R5CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvcnN0bGludC5weSBiL0RvYy90b29scy9yc3RsaW50LnB5CmluZGV4IGRlNzgwNDEuLjJjMTgxNmUgMTAwNzU1Ci0tLSBhL0RvYy90b29scy9yc3RsaW50LnB5CisrKyBiL0RvYy90b29scy9yc3RsaW50LnB5CkBAIC05LDggKzksNiBAQAogIyBUT0RPOiAtIHdyb25nIHZlcnNpb25zIGluIHZlcnNpb25hZGRlZC9jaGFuZ2VkCiAjICAgICAgIC0gd3JvbmcgbWFya3VwIGFmdGVyIHZlcnNpb25jaGFuZ2VkIGRpcmVjdGl2ZQogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdiBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IGRiYTkzYmYuLjk2NDgzYzQgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CkBAIC0yNSw2ICsyNSwzMCBAQAogaG93dG8vY3Vyc2VzLCw6bWFnZW50YSwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6Y3lhbiwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6d2hpdGUsIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24scHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6Y2FsbCwxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOnN0YXJ0LDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDUzMjc5NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTQ2ODA3IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU3ODM2NSAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1OTE3NTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYxNzQ4MiBmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2Mjk4MTQgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2NTY3NzAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjY5NzA3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDcwMDcxOSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzE5NjQwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmNhbGwsMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpzdGFydCwxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKIGhvd3RvL2lwYWRkcmVzcywsOkRCOCw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKIGhvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCiBob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKQEAgLTEwNiw2ICsxMzAsMTAgQEAKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RlcCxhW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCwiYVtzdGFydDpzdG9wLCBpXSIKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCxhW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLD4+PiBjb29raWUgPSBiJ3VzZXI6dmF0cm9nYXNhYycKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLCJ1c2VyOnZhdHJvZ2FzYWMsMzQ5Y2Y5MDQ1MzM3NjdlZDJkNzU1Mjc5YThkZjg0ZDAiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6cG9saWNhamFjLCI+Pj4gY29tcGFyZV9kaWdlc3QoYid1c2VyOnBvbGljYWphYycsIHNpZykiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6TEVBRiwiaDAwID0gYmxha2UyYihidWZbMDpMRUFGX1NJWkVdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwiCiBsaWJyYXJ5L2h0dHAuY2xpZW50LCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvaHR0cC5jb29raWVzLCxgLCEjJCUmJyorLS5eX2B8fjoKIGxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgpAQCAtMTYxLDYgKzE4OSw3IEBACiBsaWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQogbGlicmFyeS9weWV4cGF0LCw6ZWxlbTEsPHB5OmVsZW0xIC8+CiBsaWJyYXJ5L3B5ZXhwYXQsLDpweSwieG1sbnM6cHkgPSAiImh0dHA6Ly93d3cucHl0aG9uLm9yZy9ucy8iIj4iCitsaWJyYXJ5L3JhbmRvbSwsOmxlbixuZXdfZGlmZiA9IG1lYW4oY29tYmluZWRbOmxlbihkcnVnKV0pIC0gbWVhbihjb21iaW5lZFtsZW4oZHJ1Zyk6XSkKIGxpYnJhcnkvc210cGxpYiwsOnBvcnQsbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAogbGlicmFyeS9zb2NrZXQsLDo6LCc1YWVmOjJiOjo4JwogbGlicmFyeS9zb2NrZXQsLDpjYW4sInJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkiCkBAIC0yMDUsNyArMjM0LDggQEAKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIHByb2dyZXNzOiBJZiBzZXR1cHRvb2xzIG9yIHBpcCBhcmUgaW5zdGFsbGVkLCB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBub3BpcDogSWYgVHJ1ZSwgcGlwIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZCIKLWxpYnJhcnkvdmVudiwsOnBhcmFtLDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CitsaWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorbGlicmFyeS94bWxycGMuY2xpZW50LCw6bmlsLGV4Om5pbAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLHVzZXI6cGFzcwogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCkBAIC0yMzksNyArMjY5LDcgQEAKIHVzaW5nL2NtZGxpbmUsLDptZXNzYWdlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy9jbWRsaW5lLCw6bW9kdWxlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy91bml4LCw6UGFja2FnaW5nLGh0dHBzOi8vZW4ub3BlbnN1c2Uub3JnL1BvcnRhbDpQYWNrYWdpbmcKLXdoYXRzbmV3LzIuMCw0MTgsOmxlbiwKK3doYXRzbmV3LzIuMCwsOmxlbiwKIHdoYXRzbmV3LzIuMywsOjosCiB3aGF0c25ldy8yLjMsLDpjb25maWcsCiB3aGF0c25ldy8yLjMsLDpDcml0aWNhbCwKQEAgLTI3MiwyNyArMzAyLDI4IEBACiB3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igogd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQogd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKLWxpYnJhcnkvdGFyZmlsZSwxNDksOnh6LCd4Onh6JwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMjkwLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwneDp4eicKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCi1saWJyYXJ5L3ppcGFwcCwzMSw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgotbGlicmFyeS96aXBhcHAsODIsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKLWxpYnJhcnkvemlwYXBwLDE1NSw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCitsaWJyYXJ5L3ppcGFwcCwsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKK2xpYnJhcnkvemlwYXBwLCw6Zm4sImFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICIicGtnLm1vZDpmbiIiLCB3aGVyZSAiInBrZy5tb2QiIiBpcyBhIgorbGlicmFyeS96aXBhcHAsLDpjYWxsYWJsZSwiIiJwa2cubW9kdWxlOmNhbGxhYmxlIiIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZyIKIGxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBtWzo6Ml0udG9saXN0KCkKIGxpYnJhcnkvc3lzLCxgLCMgYGB3cmFwcGVyYGAgY3JlYXRlcyBhIGBgd3JhcChjb3JvKWBgIGNvcm91dGluZToKLXR1dG9yaWFsL3ZlbnYsNzcsOmM3Yjk2NDVhNmYzNSwiUHl0aG9uIDMuNC4zKyAoMy40OmM3Yjk2NDVhNmYzNSssIE1heSAyMiAyMDE1LCAwOTozMToyNSkiCiB3aGF0c25ldy8zLjUsLDpyb290LCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJwogd2hhdHNuZXcvMy41LCw6d2FybmluZywnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQogd2hhdHNuZXcvMy41LCw6cm9vdCxFUlJPUjpyb290OmV4Y2VwdGlvbgogd2hhdHNuZXcvMy41LCw6ZXhjZXB0aW9uLEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCit3aGF0c25ldy9jaGFuZ2Vsb2csLDp2ZXJzaW9uLGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCit3aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igord2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBVc2UgIiIxMjcuMC4wLjEiIiBvciAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIiBhcyBtdWNoIGFzIgord2hhdHNuZXcvY2hhbmdlbG9nLCxgLCJmb3IgcmVhZGFiaWxpdHkgKHdhcyAiImAiIikuIgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbCBiL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKaW5kZXggYjdiY2Q3NC4uNDEzYzBhNyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbAorKysgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGgzPnslIHRyYW5zICV9RG9jcyBmb3Igb3RoZXIgdmVyc2lvbnN7JSBlbmR0cmFucyAlfTwvaDM+CiA8dWw+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj57JSB0cmFucyAlfVB5dGhvbiAyLjcgKHN0YWJsZSl7JSBlbmR0cmFucyAlfTwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42LyI+eyUgdHJhbnMgJX1QeXRob24gMy42IChzdGFibGUpeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNS8iPnslIHRyYW5zICV9UHl0aG9uIDMuNSAoc3RhYmxlKXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjcvIj57JSB0cmFucyAlfVB5dGhvbiAzLjcgKGluIGRldmVsb3BtZW50KXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPnslIHRyYW5zICV9T2xkIHZlcnNpb25zeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KIDwvdWw+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0IGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdAppbmRleCAxMjk4OWIyLi5kNDM0NjE4IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CisrKyBiL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKQEAgLTc4LDYgKzc4LDkgQEAKICAgID4+PiB3b3JkcwogICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQogCitXaXRoIGBgZm9yIHcgaW4gd29yZHM6YGAsIHRoZSBleGFtcGxlIHdvdWxkIGF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZmluaXRlIGxpc3QsCitpbnNlcnRpbmcgYGBkZWZlbmVzdHJhdGVgYCBvdmVyIGFuZCBvdmVyIGFnYWluLgorCiAKIC4uIF90dXQtcmFuZ2U6CiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IGIzOWJkZjQuLjk1M2E2OGIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtNjAsMTEgKzYwLDE2IEBACiAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGxpc3QuICBFcXVpdmFsZW50IHRvIGBgZGVsIGFbOl1gYC4KIAogCi0uLiBtZXRob2Q6OiBsaXN0LmluZGV4KHgpCisuLiBtZXRob2Q6OiBsaXN0LmluZGV4KHhbLCBzdGFydFssIGVuZF1dKQogICAgOm5vaW5kZXg6CiAKLSAgIFJldHVybiB0aGUgaW5kZXggaW4gdGhlIGxpc3Qgb2YgdGhlIGZpcnN0IGl0ZW0gd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbgotICAgZXJyb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtLgorICAgUmV0dXJuIHplcm8tYmFzZWQgaW5kZXggaW4gdGhlIGxpc3Qgb2YgdGhlIGZpcnN0IGl0ZW0gd2hvc2UgdmFsdWUgaXMgKngqLgorICAgUmFpc2VzIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtLgorCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiB0aGUgc2xpY2UKKyAgIG5vdGF0aW9uIGFuZCBhcmUgdXNlZCB0byBsaW1pdCB0aGUgc2VhcmNoIHRvIGEgcGFydGljdWxhciBzdWJzZXF1ZW5jZSBvZgorICAgKngqLiAgVGhlIHJldHVybmVkIGluZGV4IGlzIGNvbXB1dGVkIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bGwKKyAgIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSAqc3RhcnQqIGFyZ3VtZW50LgogCiAKIC4uIG1ldGhvZDo6IGxpc3QuY291bnQoeCkKQEAgLTk0LDI4ICs5OSwyNiBAQAogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCi0gICA+Pj4gYSA9IFs2Ni4yNSwgMzMzLCAzMzMsIDEsIDEyMzQuNV0KLSAgID4+PiBwcmludChhLmNvdW50KDMzMyksIGEuY291bnQoNjYuMjUpLCBhLmNvdW50KCd4JykpCi0gICAyIDEgMAotICAgPj4+IGEuaW5zZXJ0KDIsIC0xKQotICAgPj4+IGEuYXBwZW5kKDMzMykKLSAgID4+PiBhCi0gICBbNjYuMjUsIDMzMywgLTEsIDMzMywgMSwgMTIzNC41LCAzMzNdCi0gICA+Pj4gYS5pbmRleCgzMzMpCi0gICAxCi0gICA+Pj4gYS5yZW1vdmUoMzMzKQotICAgPj4+IGEKLSAgIFs2Ni4yNSwgLTEsIDMzMywgMSwgMTIzNC41LCAzMzNdCi0gICA+Pj4gYS5yZXZlcnNlKCkKLSAgID4+PiBhCi0gICBbMzMzLCAxMjM0LjUsIDEsIDMzMywgLTEsIDY2LjI1XQotICAgPj4+IGEuc29ydCgpCi0gICA+Pj4gYQotICAgWy0xLCAxLCA2Ni4yNSwgMzMzLCAzMzMsIDEyMzQuNV0KLSAgID4+PiBhLnBvcCgpCi0gICAxMjM0LjUKLSAgID4+PiBhCi0gICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzM10KKyAgICA+Pj4gZnJ1aXRzID0gWydvcmFuZ2UnLCAnYXBwbGUnLCAncGVhcicsICdiYW5hbmEnLCAna2l3aScsICdhcHBsZScsICdiYW5hbmEnXQorICAgID4+PiBmcnVpdHMuY291bnQoJ2FwcGxlJykKKyAgICAyCisgICAgPj4+IGZydWl0cy5jb3VudCgndGFuZ2VyaW5lJykKKyAgICAwCisgICAgPj4+IGZydWl0cy5pbmRleCgnYmFuYW5hJykKKyAgICAzCisgICAgPj4+IGZydWl0cy5pbmRleCgnYmFuYW5hJywgNCkgICMgRmluZCBuZXh0IGJhbmFuYSBzdGFydGluZyBhIHBvc2l0aW9uIDQKKyAgICA2CisgICAgPj4+IGZydWl0cy5yZXZlcnNlKCkKKyAgICA+Pj4gZnJ1aXRzCisgICAgWydiYW5hbmEnLCAnYXBwbGUnLCAna2l3aScsICdiYW5hbmEnLCAncGVhcicsICdhcHBsZScsICdvcmFuZ2UnXQorICAgID4+PiBmcnVpdHMuYXBwZW5kKCdncmFwZScpCisgICAgPj4+IGZydWl0cworICAgIFsnYmFuYW5hJywgJ2FwcGxlJywgJ2tpd2knLCAnYmFuYW5hJywgJ3BlYXInLCAnYXBwbGUnLCAnb3JhbmdlJywgJ2dyYXBlJ10KKyAgICA+Pj4gZnJ1aXRzLnNvcnQoKQorICAgID4+PiBmcnVpdHMKKyAgICBbJ2FwcGxlJywgJ2FwcGxlJywgJ2JhbmFuYScsICdiYW5hbmEnLCAnZ3JhcGUnLCAna2l3aScsICdvcmFuZ2UnLCAncGVhciddCisgICAgPj4+IGZydWl0cy5wb3AoKQorICAgICdwZWFyJwogCiBZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAogb25seSBtb2RpZnkgdGhlIGxpc3QgaGF2ZSBubyByZXR1cm4gdmFsdWUgcHJpbnRlZCAtLSB0aGV5IHJldHVybiB0aGUgZGVmYXVsdApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2Vycm9ycy5yc3QgYi9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdAppbmRleCA3NTk1ODhmLi5hYmE2MWRhIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdApAQCAtMTc0LDcgKzE3NCw3IEBACiAgICBmb3IgYXJnIGluIHN5cy5hcmd2WzE6XToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBvcGVuKGFyZywgJ3InKQotICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwcmludCgnY2Fubm90IG9wZW4nLCBhcmcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoYXJnLCAnaGFzJywgbGVuKGYucmVhZGxpbmVzKCkpLCAnbGluZXMnKQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdCBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKaW5kZXggZGQ5YzdjZC4uYmVlYWFjMyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiBjb25jYXRlbmF0aW9uIG9wZXJhdGlvbnMgeW91IGNhbiBjcmVhdGUgYW55IGxheW91dCB5b3UgY2FuIGltYWdpbmUuICBUaGUKIHN0cmluZyB0eXBlIGhhcyBzb21lIG1ldGhvZHMgdGhhdCBwZXJmb3JtIHVzZWZ1bCBvcGVyYXRpb25zIGZvciBwYWRkaW5nCiBzdHJpbmdzIHRvIGEgZ2l2ZW4gY29sdW1uIHdpZHRoOyB0aGVzZSB3aWxsIGJlIGRpc2N1c3NlZCBzaG9ydGx5LiAgVGhlIHNlY29uZAotd2F5IGlzIHRvIHVzZSB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KK3dheSBpcyB0byB1c2UgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIG9yIHRoZQorOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KIAogVGhlIDptb2Q6YHN0cmluZ2AgbW9kdWxlIGNvbnRhaW5zIGEgOmNsYXNzOmB+c3RyaW5nLlRlbXBsYXRlYCBjbGFzcyB3aGljaCBvZmZlcnMKIHlldCBhbm90aGVyIHdheSB0byBzdWJzdGl0dXRlIHZhbHVlcyBpbnRvIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0IGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAppbmRleCBlOGQ4ZTJiLi5mYWY1N2EzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKQEAgLTEwLDEzICsxMCwxMyBAQAogSW52b2tpbmcgdGhlIEludGVycHJldGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy41YAorVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy42YAogb24gdGhvc2UgbWFjaGluZXMgd2hlcmUgaXQgaXMgYXZhaWxhYmxlOyBwdXR0aW5nIDpmaWxlOmAvdXNyL2xvY2FsL2JpbmAgaW4geW91cgogVW5peCBzaGVsbCdzIHNlYXJjaCBwYXRoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IGl0IGJ5IHR5cGluZyB0aGUgY29tbWFuZDoKIAogLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgcHl0aG9uMy41CisgICBweXRob24zLjYKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjQsMTEgKzI0LDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzVgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zNmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM1CisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzYKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTk4LDggKzk4LDggQEAKIAogLi4gY29kZS1ibG9jazo6IHNoZWxsLXNlc3Npb24KIAotICAgJCBweXRob24zLjUKLSAgIFB5dGhvbiAzLjUgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy42CisgICBQeXRob24gMy42IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IDIxNDAzMjkuLjdlOGVlM2UgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zNTIsNiArMzUyLDkgQEAKICAgICAgIFN0cmluZ3Mgc3VwcG9ydCBhIGxhcmdlIG51bWJlciBvZiBtZXRob2RzIGZvcgogICAgICAgYmFzaWMgdHJhbnNmb3JtYXRpb25zIGFuZCBzZWFyY2hpbmcuCiAKKyAgIDpyZWY6YGYtc3RyaW5nc2AKKyAgICAgIFN0cmluZyBsaXRlcmFscyB0aGF0IGhhdmUgZW1iZWRkZWQgZXhwcmVzc2lvbnMuCisKICAgIDpyZWY6YGZvcm1hdHN0cmluZ3NgCiAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIDptZXRoOmBzdHIuZm9ybWF0YC4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCA1MmZmZGJlLi4xZGQwNmMyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zNScKKyAgICdDOlxcUHl0aG9uMzYnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCBmNzMzZmZjLi5iZjAyYzcxIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjM1L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzYvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC92ZW52LnJzdCBiL0RvYy90dXRvcmlhbC92ZW52LnJzdAppbmRleCAzYjJlZTJlLi5lMmRkNTdkIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CkBAIC0yMCwxNSArMjAsMTQgQEAKIHRoZSByZXF1aXJlbWVudHMgYXJlIGluIGNvbmZsaWN0IGFuZCBpbnN0YWxsaW5nIGVpdGhlciB2ZXJzaW9uIDEuMCBvciAyLjAKIHdpbGwgbGVhdmUgb25lIGFwcGxpY2F0aW9uIHVuYWJsZSB0byBydW4uCiAKLVRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIGlzIHRvIGNyZWF0ZSBhIDp0ZXJtOmB2aXJ0dWFsCi1lbnZpcm9ubWVudGAgKG9mdGVuIHNob3J0ZW5lZCB0byAidmlydHVhbGVudiIpLCBhIHNlbGYtY29udGFpbmVkCi1kaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyCi12ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgorVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwgZW52aXJvbm1lbnRgLCBhCitzZWxmLWNvbnRhaW5lZCBkaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYQorcGFydGljdWxhciB2ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgogCiBEaWZmZXJlbnQgYXBwbGljYXRpb25zIGNhbiB0aGVuIHVzZSBkaWZmZXJlbnQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiBUbyByZXNvbHZlIHRoZSBlYXJsaWVyIGV4YW1wbGUgb2YgY29uZmxpY3RpbmcgcmVxdWlyZW1lbnRzLAogYXBwbGljYXRpb24gQSBjYW4gaGF2ZSBpdHMgb3duIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCB2ZXJzaW9uIDEuMAotaW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbGVudiB3aXRoIHZlcnNpb24gMi4wLgoraW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMi4wLgogSWYgYXBwbGljYXRpb24gQiByZXF1aXJlcyBhIGxpYnJhcnkgYmUgdXBncmFkZWQgdG8gdmVyc2lvbiAzLjAsIHRoaXMgd2lsbAogbm90IGFmZmVjdCBhcHBsaWNhdGlvbiBBJ3MgZW52aXJvbm1lbnQuCiAKQEAgLTM2LDI5ICszNSwyNiBAQAogQ3JlYXRpbmcgVmlydHVhbCBFbnZpcm9ubWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBzY3JpcHQgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKLTpwcm9ncmFtOmBweXZlbnZgLiAgOnByb2dyYW06YHB5dmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QKLXJlY2VudCB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZTsgdGhlIHNjcmlwdCBpcyBhbHNvCi1pbnN0YWxsZWQgd2l0aCBhIHZlcnNpb24gbnVtYmVyLCBzbyBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZgotUHl0aG9uIG9uIHlvdXIgc3lzdGVtIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkKLXJ1bm5pbmcgYGBweXZlbnYtMy40YGAgb3Igd2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCitUaGUgbW9kdWxlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgY2FsbGVkCis6bW9kOmB2ZW52YC4gIDptb2Q6YHZlbnZgIHdpbGwgdXN1YWxseSBpbnN0YWxsIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mCitQeXRob24gdGhhdCB5b3UgaGF2ZSBhdmFpbGFibGUuIElmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBvbiB5b3VyCitzeXN0ZW0sIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkgcnVubmluZyBgYHB5dGhvbjNgYCBvcgord2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCiAKLVRvIGNyZWF0ZSBhIHZpcnR1YWxlbnYsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5Ci13aGVyZSB5b3Ugd2FudCB0byBwbGFjZSBpdCBhbmQgcnVuIDpwcm9ncmFtOmBweXZlbnZgIHdpdGggdGhlCi1kaXJlY3RvcnkgcGF0aDo6CitUbyBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBkZWNpZGUgdXBvbiBhIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0bworcGxhY2UgaXQsIGFuZCBydW4gdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBhcyBhIHNjcmlwdCB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aDo6CiAKLSAgIHB5dmVudiB0dXRvcmlhbC1lbnYKKyAgIHB5dGhvbjMgLW0gdmVudiB0dXRvcmlhbC1lbnYKIAogVGhpcyB3aWxsIGNyZWF0ZSB0aGUgYGB0dXRvcmlhbC1lbnZgYCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCwKIGFuZCBhbHNvIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnNpZGUgaXQgY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBhbmQgdmFyaW91cyBzdXBwb3J0aW5nIGZpbGVzLgogCi1PbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8KLWFjdGl2YXRlIGl0LgorT25jZSB5b3UndmUgY3JlYXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBtYXkgYWN0aXZhdGUgaXQuCiAKIE9uIFdpbmRvd3MsIHJ1bjo6CiAKLSAgdHV0b3JpYWwtZW52L1NjcmlwdHMvYWN0aXZhdGUKKyAgdHV0b3JpYWwtZW52XFNjcmlwdHNcYWN0aXZhdGUuYmF0CiAKIE9uIFVuaXggb3IgTWFjT1MsIHJ1bjo6CiAKQEAgLTY5LDMzICs2NSwzNiBAQAogYGBhY3RpdmF0ZS5jc2hgYCBhbmQgYGBhY3RpdmF0ZS5maXNoYGAgc2NyaXB0cyB5b3Ugc2hvdWxkIHVzZQogaW5zdGVhZC4pCiAKLUFjdGl2YXRpbmcgdGhlIHZpcnR1YWxlbnYgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKLXZpcnR1YWxlbnYgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKLWBgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YKLVB5dGhvbi4gIEZvciBleGFtcGxlOjoKK0FjdGl2YXRpbmcgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKK3ZpcnR1YWwgZW52aXJvbm1lbnQgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKK2BgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLgorRm9yIGV4YW1wbGU6CiAKLSAgLT4gc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCi0gICh0dXRvcmlhbC1lbnYpIC0+IHB5dGhvbgotICBQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHNvdXJjZSB+L2VudnMvdHV0b3JpYWwtZW52L2Jpbi9hY3RpdmF0ZQorICAodHV0b3JpYWwtZW52KSAkIHB5dGhvbgorICBQeXRob24gMy41LjEgKGRlZmF1bHQsIE1heSAgNiAyMDE2LCAxMDo1OTozNikKICAgICAuLi4KICAgPj4+IGltcG9ydCBzeXMKICAgPj4+IHN5cy5wYXRoCi0gIFsnJywgJy91c3IvbG9jYWwvbGliL3B5dGhvbjM0LnppcCcsIC4uLiwKLSAgJ34vZW52cy90dXRvcmlhbC1lbnYvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJ10KKyAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzUuemlwJywgLi4uLAorICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnXQogICA+Pj4KIAogCiBNYW5hZ2luZyBQYWNrYWdlcyB3aXRoIHBpcAogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotT25jZSB5b3UndmUgYWN0aXZhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IGNhbiBpbnN0YWxsLCB1cGdyYWRlLAotYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkIDpwcm9ncmFtOmBwaXBgLiAgQnkgZGVmYXVsdAotYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsCi08aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgKLWJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncwotbGltaXRlZCBzZWFyY2ggZmVhdHVyZTo6CitZb3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsIGFuZCByZW1vdmUgcGFja2FnZXMgdXNpbmcgYSBwcm9ncmFtIGNhbGxlZAorOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0IGBgcGlwYGAgd2lsbCBpbnN0YWxsIHBhY2thZ2VzIGZyb20gdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCwgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+LiAgWW91IGNhbiBicm93c2UgdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCBieSBnb2luZyB0byBpdCBpbiB5b3VyIHdlYiBicm93c2VyLCBvciB5b3UgY2FuIHVzZSBgYHBpcGBgJ3MKK2xpbWl0ZWQgc2VhcmNoIGZlYXR1cmU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIHNlYXJjaCBhc3Ryb25vbXkKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgc2VhcmNoIGFzdHJvbm9teQogICBza3lmaWVsZCAgICAgICAgICAgICAgIC0gRWxlZ2FudCBhc3Ryb25vbXkgZm9yIFB5dGhvbgogICBnYXJ5ICAgICAgICAgICAgICAgICAgIC0gR2FsYWN0aWMgYXN0cm9ub215IGFuZCBncmF2aXRhdGlvbmFsIGR5bmFtaWNzLgogICBub3ZhcyAgICAgICAgICAgICAgICAgIC0gVGhlIFVuaXRlZCBTdGF0ZXMgTmF2YWwgT2JzZXJ2YXRvcnkgTk9WQVMgYXN0cm9ub215IGxpYnJhcnkKQEAgLTEwNyw5ICsxMDYsMTEgQEAKICJmcmVlemUiLCBldGMuICAoQ29uc3VsdCB0aGUgOnJlZjpgaW5zdGFsbGluZy1pbmRleGAgZ3VpZGUgZm9yCiBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIGZvciBgYHBpcGBgLikKIAotWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOjoKK1lvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IHNwZWNpZnlpbmcgYSBwYWNrYWdlJ3MgbmFtZToKIAotICAtPiBwaXAgaW5zdGFsbCBub3ZhcworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIG5vdmFzCiAgIENvbGxlY3Rpbmcgbm92YXMKICAgICBEb3dubG9hZGluZyBub3Zhcy0zLjEuMS4zLnRhci5neiAoMTM2a0IpCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiBub3ZhcwpAQCAtMTE3LDkgKzExOCwxMSBAQAogICBTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIG5vdmFzLTMuMS4xLjMKIAogWW91IGNhbiBhbHNvIGluc3RhbGwgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBnaXZpbmcgdGhlCi1wYWNrYWdlIG5hbWUgIGZvbGxvd2VkIGJ5IGBgPT1gYCBhbmQgdGhlIHZlcnNpb24gbnVtYmVyOjoKK3BhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6CiAKLSAgLT4gcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCiAgIENvbGxlY3RpbmcgcmVxdWVzdHM9PTIuNi4wCiAgICAgVXNpbmcgY2FjaGVkIHJlcXVlc3RzLTIuNi4wLXB5Mi5weTMtbm9uZS1hbnkud2hsCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiByZXF1ZXN0cwpAQCAtMTI4LDkgKzEzMSwxMSBAQAogSWYgeW91IHJlLXJ1biB0aGlzIGNvbW1hbmQsIGBgcGlwYGAgd2lsbCBub3RpY2UgdGhhdCB0aGUgcmVxdWVzdGVkCiB2ZXJzaW9uIGlzIGFscmVhZHkgaW5zdGFsbGVkIGFuZCBkbyBub3RoaW5nLiAgWW91IGNhbiBzdXBwbHkgYQogZGlmZmVyZW50IHZlcnNpb24gbnVtYmVyIHRvIGdldCB0aGF0IHZlcnNpb24sIG9yIHlvdSBjYW4gcnVuIGBgcGlwCi1pbnN0YWxsIC0tdXBncmFkZWBgIHRvIHVwZ3JhZGUgdGhlIHBhY2thZ2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uOjoKK2luc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246CiAKLSAgLT4gcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCiAgIENvbGxlY3RpbmcgcmVxdWVzdHMKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCiAgICAgRm91bmQgZXhpc3RpbmcgaW5zdGFsbGF0aW9uOiByZXF1ZXN0cyAyLjYuMApAQCAtMTQxLDkgKzE0NiwxMSBAQAogYGBwaXAgdW5pbnN0YWxsYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGFja2FnZSBuYW1lcyB3aWxsIHJlbW92ZSB0aGUKIHBhY2thZ2VzIGZyb20gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLWBgcGlwIHNob3dgYCB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHBhY2thZ2U6OgorYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2hvdyByZXF1ZXN0cworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzaG93IHJlcXVlc3RzCiAgIC0tLQogICBNZXRhZGF0YS1WZXJzaW9uOiAyLjAKICAgTmFtZTogcmVxdWVzdHMKQEAgLTE1Nyw5ICsxNjQsMTEgQEAKICAgUmVxdWlyZXM6CiAKIGBgcGlwIGxpc3RgYCB3aWxsIGRpc3BsYXkgYWxsIG9mIHRoZSBwYWNrYWdlcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLWVudmlyb25tZW50OjoKK2Vudmlyb25tZW50OgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBsaXN0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGxpc3QKICAgbm92YXMgKDMuMS4xLjMpCiAgIG51bXB5ICgxLjkuMikKICAgcGlwICg3LjAuMykKQEAgLTE2OCwxOSArMTc3LDIzIEBACiAKIGBgcGlwIGZyZWV6ZWBgIHdpbGwgcHJvZHVjZSBhIHNpbWlsYXIgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLAogYnV0IHRoZSBvdXRwdXQgdXNlcyB0aGUgZm9ybWF0IHRoYXQgYGBwaXAgaW5zdGFsbGBgIGV4cGVjdHMuCi1BIGNvbW1vbiBjb252ZW50aW9uIGlzIHRvIHB1dCB0aGlzIGxpc3QgaW4gYSBgYHJlcXVpcmVtZW50cy50eHRgYCBmaWxlOjoKK0EgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGZyZWV6ZSA+IHJlcXVpcmVtZW50cy50eHQKLSAgKHR1dG9yaWFsLWVudikgLT4gY2F0IHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAorICAodHV0b3JpYWwtZW52KSAkIGNhdCByZXF1aXJlbWVudHMudHh0CiAgIG5vdmFzPT0zLjEuMS4zCiAgIG51bXB5PT0xLjkuMgogICByZXF1ZXN0cz09Mi43LjAKIAogVGhlIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGNhbiB0aGVuIGJlIGNvbW1pdHRlZCB0byB2ZXJzaW9uIGNvbnRyb2wgYW5kCiBzaGlwcGVkIGFzIHBhcnQgb2YgYW4gYXBwbGljYXRpb24uICBVc2VycyBjYW4gdGhlbiBpbnN0YWxsIGFsbCB0aGUKLW5lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOjoKK25lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOgogCi0gIC0+IHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CiAgIENvbGxlY3Rpbmcgbm92YXM9PTMuMS4xLjMgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAxKSkKICAgICAuLi4KICAgQ29sbGVjdGluZyBudW1weT09MS45LjIgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAyKSkKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCA2MTE3Nzk2Li5jMGU2NGQ2IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0xODAsOCArMTgwLDE1IEBACiAKICAgIFByaW50IHRoZSBQeXRob24gdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQuICBFeGFtcGxlIG91dHB1dCBjb3VsZCBiZTo6CiAKLSAgICAgICBQeXRob24gMy4wCisgICAgICAgUHl0aG9uIDMuNi4wYjIrCiAKKyAgIFdoZW4gZ2l2ZW4gdHdpY2UsIHByaW50IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkLCBsaWtlOjoKKworICAgICAgIFB5dGhvbiAzLjYuMGIyKyAoMy42Ojg0YTNjNTAwMzUxMCssIE9jdCAyNiAyMDE2LCAwMjozMzo1NSkKKyAgICAgICBbR0NDIDYuMi4wIDIwMTYxMDA1XQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSBgYC1WVmBgIG9wdGlvbi4KIAogLi4gX3VzaW5nLW9uLW1pc2Mtb3B0aW9uczoKIApAQCAtMzk2LDYgKzQwMyw4IEBACiAgICAgIHN0b3JlZCBpbiBhIHRyYWNlYmFjayBvZiBhIHRyYWNlLiBVc2UgYGAtWCB0cmFjZW1hbGxvYz1ORlJBTUVgYCB0byBzdGFydAogICAgICB0cmFjaW5nIHdpdGggYSB0cmFjZWJhY2sgbGltaXQgb2YgKk5GUkFNRSogZnJhbWVzLiBTZWUgdGhlCiAgICAgIDpmdW5jOmB0cmFjZW1hbGxvYy5zdGFydGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAqIGBgLVggc2hvd2FsbG9jY291bnRgYCB0byBlbmFibGUgdGhlIG91dHB1dCBvZiB0aGUgdG90YWwgY291bnQgb2YgYWxsb2NhdGVkCisgICAgIG9iamVjdHMgZm9yIGVhY2ggdHlwZSAob25seSB3b3JrcyB3aGVuIGJ1aWx0IHdpdGggYGBDT1VOVF9BTExPQ1NgYCBkZWZpbmVkKTsKIAogICAgSXQgYWxzbyBhbGxvd3MgcGFzc2luZyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2aW5nIHRoZW0gdGhyb3VnaCB0aGUKICAgIDpkYXRhOmBzeXMuX3hvcHRpb25zYCBkaWN0aW9uYXJ5LgpAQCAtNDA5LDYgKzQxOCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFRoZSBgYC1YIHNob3dyZWZjb3VudGBgIGFuZCBgYC1YIHRyYWNlbWFsbG9jYGAgb3B0aW9ucy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBUaGUgYGAtWCBzaG93YWxsb2Njb3VudGBgIG9wdGlvbi4KKwogCiBPcHRpb25zIHlvdSBzaG91bGRuJ3QgdXNlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC01NTUsNiArNTY3LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgZW5jb2RpbmduYW1lYGAgcGFydCBpcyBub3cgb3B0aW9uYWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGJ5IHRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgaW50ZXJhY3RpdmUKKyAgICAgIGNvbnNvbGUgYnVmZmVycyB1bmxlc3MgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgIGlzIGFsc28gc3BlY2lmaWVkLgorICAgICAgRmlsZXMgYW5kIHBpcGVzIHJlZGlyZWN0ZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcmUgbm90IGFmZmVjdGVkLgogCiAuLiBlbnZ2YXI6OiBQWVRIT05OT1VTRVJTSVRFCiAKQEAgLTYyMCw2ICs2MzYsODEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKKy4uIGVudnZhcjo6IFBZVEhPTk1BTExPQworCisgICBTZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworICAgU2V0IHRoZSBmYW1pbHkgb2YgbWVtb3J5IGFsbG9jYXRvcnMgdXNlZCBieSBQeXRob246CisKKyAgICogYGBtYWxsb2NgYDogdXNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIG9mIHRoZSBDIGxpYnJhcnkKKyAgICAgZm9yIGFsbCBkb21haW5zICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYCwgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAsCisgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgKS4KKyAgICogYGBweW1hbGxvY2BgOiB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YCBmb3IKKyAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGRvbWFpbnMgYW5kIHVzZQorICAgICB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBmb3IgdGhlIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgIGRvbWFpbi4KKworICAgSW5zdGFsbCBkZWJ1ZyBob29rczoKKworICAgKiBgYGRlYnVnYGA6IGluc3RhbGwgZGVidWcgaG9va3Mgb24gdG9wIG9mIHRoZSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0b3IKKyAgICogYGBtYWxsb2NfZGVidWdgYDogc2FtZSBhcyBgYG1hbGxvY2BgIGJ1dCBhbHNvIGluc3RhbGwgZGVidWcgaG9va3MKKyAgICogYGBweW1hbGxvY19kZWJ1Z2BgOiBzYW1lIGFzIGBgcHltYWxsb2NgYCBidXQgYWxzbyBpbnN0YWxsIGRlYnVnIGhvb2tzCisKKyAgIFdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSwgdGhlIGRlZmF1bHQgaXMgYGBweW1hbGxvY2BgLiBXaGVuCisgICBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLCB0aGUgZGVmYXVsdCBpcyBgYHB5bWFsbG9jX2RlYnVnYGAgYW5kIHRoZSBkZWJ1ZyBob29rcworICAgYXJlIHVzZWQgYXV0b21hdGljYWxseS4KKworICAgSWYgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBgYHB5bWFsbG9jYGAgc3VwcG9ydCwgYGBweW1hbGxvY2BgIGFuZAorICAgYGBweW1hbGxvY19kZWJ1Z2BgIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgZGVmYXVsdCBpcyBgYG1hbGxvY2BgIGluIHJlbGVhc2UKKyAgIG1vZGUgYW5kIGBgbWFsbG9jX2RlYnVnYGAgaW4gZGVidWcgbW9kZS4KKworICAgU2VlIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGZvciBkZWJ1ZyBob29rcyBvbiBQeXRob24KKyAgIG1lbW9yeSBhbGxvY2F0b3JzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0NTVEFUUworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBQeXRob24gd2lsbCBwcmludCBzdGF0aXN0aWNzIG9mIHRoZQorICAgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YCBldmVyeSB0aW1lIGEgbmV3IHB5bWFsbG9jIG9iamVjdAorICAgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgorCisgICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgaWYgdGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgIGlzIHVzZWQgdG8gZm9yY2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnksIG9yIGlmCisgICBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IGBgcHltYWxsb2NgYCBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gbm93IGFsc28gYmUgdXNlZCBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorICAgICAgSXQgbm93IGhhcyBubyBlZmZlY3QgaWYgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZQorICAgd2lsbCByZXZlcnQgdG8gdGhlaXIgcHJlLTMuNiB2YWx1ZXMgb2YgJ21iY3MnIGFuZCAncmVwbGFjZScsIHJlc3BlY3RpdmVseS4KKyAgIE90aGVyd2lzZSwgdGhlIG5ldyBkZWZhdWx0cyAndXRmLTgnIGFuZCAnc3Vycm9nYXRlcGFzcycgYXJlIHVzZWQuCisKKyAgIFRoaXMgbWF5IGFsc28gYmUgZW5hYmxlZCBhdCBydW50aW1lIHdpdGgKKyAgIDpmdW5jOmBzeXMuX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKClgLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgorCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBkb2VzIG5vdCB1c2UgdGhlIG5ldyBjb25zb2xlIHJlYWRlciBhbmQKKyAgIHdyaXRlci4gVGhpcyBtZWFucyB0aGF0IFVuaWNvZGUgY2hhcmFjdGVycyB3aWxsIGJlIGVuY29kZWQgYWNjb3JkaW5nIHRvCisgICB0aGUgYWN0aXZlIGNvbnNvbGUgY29kZSBwYWdlLCByYXRoZXIgdGhhbiB1c2luZyB1dGYtOC4KKworICAgVGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGlmIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFyZSByZWRpcmVjdGVkICh0byBmaWxlcworICAgb3IgcGlwZXMpIHJhdGhlciB0aGFuIHJlZmVycmluZyB0byBjb25zb2xlIGJ1ZmZlcnMuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogRGVidWctbW9kZSB2YXJpYWJsZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTYzNSw5ICs3MjYsMyBAQAogCiAgICBJZiBzZXQsIFB5dGhvbiB3aWxsIGR1bXAgb2JqZWN0cyBhbmQgcmVmZXJlbmNlIGNvdW50cyBzdGlsbCBhbGl2ZSBhZnRlcgogICAgc2h1dHRpbmcgZG93biB0aGUgaW50ZXJwcmV0ZXIuCi0KLQotLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DU1RBVFMKLQotICAgSWYgc2V0LCBQeXRob24gd2lsbCBwcmludCBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcKLSAgIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvaW5kZXgucnN0IGIvRG9jL3VzaW5nL2luZGV4LnJzdAppbmRleCA1MDJhZmE5Li5hNWRmNzEzIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvaW5kZXgucnN0CisrKyBiL0RvYy91c2luZy9pbmRleC5yc3QKQEAgLTE3LDQgKzE3LDMgQEAKICAgIHVuaXgucnN0CiAgICB3aW5kb3dzLnJzdAogICAgbWFjLnJzdAotICAgc2NyaXB0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9tYWMucnN0IGIvRG9jL3VzaW5nL21hYy5yc3QKaW5kZXggMDVjOTFiYi4uOGYxYWMzZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL21hYy5yc3QKKysrIGIvRG9jL3VzaW5nL21hYy5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogV2hhdCB5b3UgZ2V0IGFmdGVyIGluc3RhbGxpbmcgaXMgYSBudW1iZXIgb2YgdGhpbmdzOgogCi0qIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjVgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQorKiBBIDpmaWxlOmBNYWNQeXRob24gMy42YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKICAgeW91IGZpbmQgSURMRSwgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIG9mZmljaWFsCiAgIFB5dGhvbiBkaXN0cmlidXRpb25zOyBQeXRob25MYXVuY2hlciwgd2hpY2ggaGFuZGxlcyBkb3VibGUtY2xpY2tpbmcgUHl0aG9uCiAgIHNjcmlwdHMgZnJvbSB0aGUgRmluZGVyOyBhbmQgdGhlICJCdWlsZCBBcHBsZXQiIHRvb2wsIHdoaWNoIGFsbG93cyB5b3UgdG8KQEAgLTkzLDcgKzkzLDcgQEAKIGFueXRoaW5nIHRoYXQgaGFzIGEgR1VJKSBuZWVkIHRvIGJlIHJ1biBpbiBhIHNwZWNpYWwgd2F5LiBVc2UgOnByb2dyYW06YHB5dGhvbndgCiBpbnN0ZWFkIG9mIDpwcm9ncmFtOmBweXRob25gIHRvIHN0YXJ0IHN1Y2ggc2NyaXB0cy4KIAotV2l0aCBQeXRob24gMy41LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgorV2l0aCBQeXRob24gMy42LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgogCiAKIENvbmZpZ3VyYXRpb24KQEAgLTE1OSw3ICsxNTksNyBAQAogRGlzdHJpYnV0aW5nIFB5dGhvbiBBcHBsaWNhdGlvbnMgb24gdGhlIE1hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuNSBmb2xkZXIgaXMgZmluZSBmb3IKK1RoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy42IGZvbGRlciBpcyBmaW5lIGZvcgogcGFja2FnaW5nIHNtYWxsIFB5dGhvbiBzY3JpcHRzIG9uIHlvdXIgb3duIG1hY2hpbmUgdG8gcnVuIGFzIGEgc3RhbmRhcmQgTWFjCiBhcHBsaWNhdGlvbi4gVGhpcyB0b29sLCBob3dldmVyLCBpcyBub3Qgcm9idXN0IGVub3VnaCB0byBkaXN0cmlidXRlIFB5dGhvbgogYXBwbGljYXRpb25zIHRvIG90aGVyIHVzZXJzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0IGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg3NDE2Li4wMDAwMDAwCi0tLSBhL0RvYy91c2luZy9zY3JpcHRzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS4uIF90b29scy1hbmQtc2NyaXB0czoKLQotQWRkaXRpb25hbCBUb29scyBhbmQgU2NyaXB0cwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0uLiBfc2NyaXB0cy1weXZlbnY6Ci0KLXB5dmVudiAtIENyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBpbmNsdWRlOjogdmVudi1jcmVhdGUuaW5jCi0KZGlmZiAtLWdpdCBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCmluZGV4IDdhZDMwMDguLjUzZjQzMWIgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMSwzMSArMSwzOSBAQAogQ3JlYXRpb24gb2YgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudHMgPHZlbnYtZGVmPmAgaXMgZG9uZSBieSBleGVjdXRpbmcgdGhlCi1gYHB5dmVudmBgIHNjcmlwdDo6Citjb21tYW5kIGBgdmVudmBgOjoKIAotICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorICAgIHB5dGhvbjMgLW0gdmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAogCiBSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CiBkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Ci13aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KLWZyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK3dpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gZnJvbSB3aGljaCB0aGUgY29tbWFuZAord2FzIHJ1bi4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQogY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIGBgcHl0aG9uYGAgYmluYXJ5IChvciBiaW5hcmllcywgaW4gdGhlIGNhc2Ugb2YKIFdpbmRvd3MpLiAgSXQgYWxzbyBjcmVhdGVzIGFuIChpbml0aWFsbHkgZW1wdHkpIGBgbGliL3B5dGhvblguWS9zaXRlLXBhY2thZ2VzYGAKIHN1YmRpcmVjdG9yeSAob24gV2luZG93cywgdGhpcyBpcyBgYExpYlxzaXRlLXBhY2thZ2VzYGApLgogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBgYHB5dmVudmBgIHdhcyB0aGUgcmVjb21tZW5kZWQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMgZm9yCisgICBQeXRob24gMy4zIGFuZCAzLjQsIGFuZCBpcyBgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42CisgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L3doYXRzbmV3LzMuNi5odG1sI2RlcHJlY2F0ZWQtZmVhdHVyZXM+YF8uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgdXNlIG9mIGBgdmVudmBgIGlzIG5vdyByZWNvbW1lbmRlZCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMuCisKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBDcmVhdGluZyBhbmQgdXNpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXwogCiAuLiBoaWdobGlnaHQ6OiBub25lCiAKLU9uIFdpbmRvd3MsIHlvdSBtYXkgaGF2ZSB0byBpbnZva2UgdGhlIGBgcHl2ZW52YGAgc2NyaXB0IGFzIGZvbGxvd3MsIGlmIHlvdQotZG9uJ3QgaGF2ZSB0aGUgcmVsZXZhbnQgUEFUSCBhbmQgUEFUSEVYVCBzZXR0aW5nczo6CitPbiBXaW5kb3dzLCBpbnZva2UgdGhlIGBgdmVudmBgIGNvbW1hbmQgYXMgZm9sbG93czo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiBjOlxQeXRob24zNVxUb29sc1xTY3JpcHRzXHB5dmVudi5weSBteWVudgorICAgIGM6XD5jOlxQeXRob24zNVxweXRob24gLW0gdmVudiBjOlxwYXRoXHRvXG15ZW52CiAKLW9yIGVxdWl2YWxlbnRseTo6CitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgY29uZmlndXJlZCB0aGUgYGBQQVRIYGAgYW5kIGBgUEFUSEVYVGBgIHZhcmlhYmxlcyBmb3IKK3lvdXIgOnJlZjpgUHl0aG9uIGluc3RhbGxhdGlvbiA8dXNpbmctb24td2luZG93cz5gOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzVccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlw+cHl0aG9uIC1tIHZlbnYgbXllbnYgYzpccGF0aFx0b1xteWVudgogCiBUaGUgY29tbWFuZCwgaWYgcnVuIHdpdGggYGAtaGBgLCB3aWxsIHNob3cgdGhlIGF2YWlsYWJsZSBvcHRpb25zOjoKIApAQCAtMzYsMjUgKzQ0LDI2IEBACiAgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgogCiAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisgICAgICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KIAogICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNvcGllcyAgICAgICAgICAgICAgIFRyeSB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNsZWFyICAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAgICAgLS11cGdyYWRlICAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KLSAgICAgIC0td2l0aG91dC1waXAgICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY29waWVzICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorICAgICAgLS13aXRob3V0LXBpcCAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAKLURlcGVuZGluZyBvbiBob3cgdGhlIGBgdmVudmBgIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gaW52b2tlZCwgdGhlIHVzYWdlIG1lc3NhZ2UKLW1heSB2YXJ5IHNsaWdodGx5LCBlLmcuIHJlZmVyZW5jaW5nIGBgcHl2ZW52YGAgcmF0aGVyIHRoYW4gYGB2ZW52YGAuCisgICAgT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCB5b3UgbWF5IHdpc2ggdG8gYWN0aXZhdGUgaXQsIGUuZy4gYnkKKyAgICBzb3VyY2luZyBhbiBhY3RpdmF0ZSBzY3JpcHQgaW4gaXRzIGJpbiBkaXJlY3RvcnkuCiAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICBJbnN0YWxscyBwaXAgYnkgZGVmYXVsdCwgYWRkZWQgdGhlIGBgLS13aXRob3V0LXBpcGBgICBhbmQgYGAtLWNvcGllc2BgCkBAIC03MywxMiArODIsMTMgQEAKIFVubGVzcyB0aGUgYGAtLXdpdGhvdXQtcGlwYGAgb3B0aW9uIGlzIGdpdmVuLCA6bW9kOmBlbnN1cmVwaXBgIHdpbGwgYmUKIGludm9rZWQgdG8gYm9vdHN0cmFwIGBgcGlwYGAgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgcHl2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsCi12aXJ0dWFsZW52IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoCi1wcm92aWRlZCBwYXRoLgorTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgdmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbCB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaCBwcm92aWRlZAorcGF0aC4KIAotT25jZSBhIHZlbnYgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEgc2NyaXB0IGluIHRoZQotdmVudidzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZSBzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CitPbmNlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYQorc2NyaXB0IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlCitzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CiAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBQbGF0Zm9ybSAgICB8IFNoZWxsICAgICAgICAgICB8IENvbW1hbmQgdG8gYWN0aXZhdGUgdmlydHVhbCBlbnZpcm9ubWVudCB8CkBAIC05NSwxNiArMTA1LDE3IEBACiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAotcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQotdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4gaW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8KLXVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzIGluc3RhbGxlZCBpbiBhIHZlbnYgc2hvdWxkIGJlCi1ydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsIGFuZCBydW4gd2l0aCB0aGUgdmVudidzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgorcHJlcGVuZHMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdAorInB5dGhvbiIgaW52b2tlcyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4KK2luc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvIHVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzCitpbnN0YWxsZWQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHNob3VsZCBiZSBydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsCithbmQgcnVuIHdpdGggdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gYXV0b21hdGljYWxseS4KIAotWW91IGNhbiBkZWFjdGl2YXRlIGEgdmVudiBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuIFRoZSBleGFjdAotbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbiBzY3JpcHQgZGVmaW5lcwotYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUgc2NyaXB0cyBjYWxsZWQKLWBgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQgd2hlbiB0aGUgdmVudiBpcwotY3JlYXRlZC4KK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLgorVGhlIGV4YWN0IG1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24KK3NjcmlwdCBkZWZpbmVzIGEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlCitzY3JpcHRzIGNhbGxlZCBgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkCit3aGVuIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCiAKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgYGBmaXNoYGAgYW5kIGBgY3NoYGAgYWN0aXZhdGlvbiBzY3JpcHRzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0IGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CmluZGV4IGE0YTZhMzAuLjNlNGI3MGUgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy93aW5kb3dzLnJzdAorKysgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKQEAgLTI5LDE1ICsyOSwxNSBAQAogCiBBcyBzcGVjaWZpZWQgaW4gOnBlcDpgMTFgLCBhIFB5dGhvbiByZWxlYXNlIG9ubHkgc3VwcG9ydHMgYSBXaW5kb3dzIHBsYXRmb3JtCiB3aGlsZSBNaWNyb3NvZnQgY29uc2lkZXJzIHRoZSBwbGF0Zm9ybSB1bmRlciBleHRlbmRlZCBzdXBwb3J0LiBUaGlzIG1lYW5zIHRoYXQKLVB5dGhvbiAzLjUgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAgc3VwcG9ydAotdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgorUHl0aG9uIHx2ZXJzaW9ufCBzdXBwb3J0cyBXaW5kb3dzIFZpc3RhIGFuZCBuZXdlci4gSWYgeW91IHJlcXVpcmUgV2luZG93cyBYUAorc3VwcG9ydCB0aGVuIHBsZWFzZSBpbnN0YWxsIFB5dGhvbiAzLjQuCiAKIEluc3RhbGxhdGlvbiBTdGVwcwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZvdXIgUHl0aG9uIDMuNSBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZSAzMi1iaXQKLWFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwgaW5pdGlhbAotZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKK0ZvdXIgUHl0aG9uIHx2ZXJzaW9ufCBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZQorMzItYml0IGFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwKK2luaXRpYWwgZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKIG5lY2Vzc2FyeS4gVGhlICpvZmZsaW5lIGluc3RhbGxlciogaW5jbHVkZXMgdGhlIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBhCiBkZWZhdWx0IGluc3RhbGxhdGlvbiBhbmQgb25seSByZXF1aXJlcyBhbiBpbnRlcm5ldCBjb25uZWN0aW9uIGZvciBvcHRpb25hbAogZmVhdHVyZXMuIFNlZSA6cmVmOmBpbnN0YWxsLWxheW91dC1vcHRpb25gIGZvciBvdGhlciB3YXlzIHRvIGF2b2lkIGRvd25sb2FkaW5nCkBAIC03NCw2ICs3NCwzMSBAQAogKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAogKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCiAKKy4uIF9tYXgtcGF0aDoKKworUmVtb3ZpbmcgdGhlIE1BWF9QQVRIIExpbWl0YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpbmRvd3MgaGlzdG9yaWNhbGx5IGhhcyBsaW1pdGVkIHBhdGggbGVuZ3RocyB0byAyNjAgY2hhcmFjdGVycy4gVGhpcyBtZWFudCB0aGF0CitwYXRocyBsb25nZXIgdGhhbiB0aGlzIHdvdWxkIG5vdCByZXNvbHZlIGFuZCBlcnJvcnMgd291bGQgcmVzdWx0LgorCitJbiB0aGUgbGF0ZXN0IHZlcnNpb25zIG9mIFdpbmRvd3MsIHRoaXMgbGltaXRhdGlvbiBjYW4gYmUgZXhwYW5kZWQgdG8KK2FwcHJveGltYXRlbHkgMzIsMDAwIGNoYXJhY3RlcnMuIFlvdXIgYWRtaW5pc3RyYXRvciB3aWxsIG5lZWQgdG8gYWN0aXZhdGUgdGhlCisiRW5hYmxlIFdpbjMyIGxvbmcgcGF0aHMiIGdyb3VwIHBvbGljeSwgb3Igc2V0IHRoZSByZWdpc3RyeSB2YWx1ZQorYGBIS0VZX0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcRmlsZVN5c3RlbUBMb25nUGF0aHNFbmFibGVkYGAKK3RvIGBgMWBgLgorCitUaGlzIGFsbG93cyB0aGUgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uLCB0aGUgOm1vZDpgb3NgIG1vZHVsZSBhbmQgbW9zdCBvdGhlcgorcGF0aCBmdW5jdGlvbmFsaXR5IHRvIGFjY2VwdCBhbmQgcmV0dXJuIHBhdGhzIGxvbmdlciB0aGFuIDI2MCBjaGFyYWN0ZXJzIHdoZW4KK3VzaW5nIHN0cmluZ3MuIChVc2Ugb2YgYnl0ZXMgYXMgcGF0aHMgaXMgZGVwcmVjYXRlZCBvbiBXaW5kb3dzLCBhbmQgdGhpcyBmZWF0dXJlCitpcyBub3QgYXZhaWxhYmxlIHdoZW4gdXNpbmcgYnl0ZXMuKQorCitBZnRlciBjaGFuZ2luZyB0aGUgYWJvdmUgb3B0aW9uLCBubyBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIFN1cHBvcnQgZm9yIGxvbmcgcGF0aHMgd2FzIGVuYWJsZWQgaW4gUHl0aG9uLgorCiAuLiBfaW5zdGFsbC1xdWlldC1vcHRpb246CiAKIEluc3RhbGxpbmcgV2l0aG91dCBVSQpAQCAtMTY4LDEzICsxOTMsMTMgQEAKIEZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKIHlvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAogCiBUbyBhbGxvdyB1c2VycyB0byBlYXNpbHkgaW5zdGFsbCBhIHBlcnNvbmFsIGNvcHkgb2YgUHl0aG9uIHdpdGhvdXQgdGhlIHRlc3QKIHN1aXRlLCB5b3UgY291bGQgcHJvdmlkZSBhIHNob3J0Y3V0IHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kLiBUaGlzIHdpbGwKIGRpc3BsYXkgYSBzaW1wbGlmaWVkIGluaXRpYWwgcGFnZSBhbmQgZGlzYWxsb3cgY3VzdG9taXphdGlvbjo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCiAgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKIAogKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKQEAgLTIwOSwxMyArMjM0LDEzIEBACiB1c2VmdWwgdG8gaGF2ZSBhIGxvY2FsbHkgY2FjaGVkIGNvcHkuCiAKIEV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gQ29tbWFuZCBQcm9tcHQgdG8gZG93bmxvYWQgYWxsIHBvc3NpYmxlCi1yZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy41LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKK3JlcXVpcmVkIGZpbGVzLiAgUmVtZW1iZXIgdG8gc3Vic3RpdHV0ZSBgYHB5dGhvbi0zLjYuMC5leGVgYCBmb3IgdGhlIGFjdHVhbAogbmFtZSBvZiB5b3VyIGluc3RhbGxlciwgYW5kIHRvIGNyZWF0ZSBsYXlvdXRzIGluIHRoZWlyIG93biBkaXJlY3RvcmllcyB0bwogYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGZpbGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KIAogOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgL2xheW91dCBbb3B0aW9uYWwgdGFyZ2V0IGRpcmVjdG9yeV0KKyAgICBweXRob24tMy42LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCiAKIFlvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBgYC9xdWlldGBgIG9wdGlvbiB0byBoaWRlIHRoZSBwcm9ncmVzcyBkaXNwbGF5LgogCkBAIC0zMjAsNyArMzQ1LDcgQEAKIFRvIHRlbXBvcmFyaWx5IHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9wZW4gQ29tbWFuZCBQcm9tcHQgYW5kIHVzZSB0aGUKIDpjb21tYW5kOmBzZXRgIGNvbW1hbmQ6OgogCi0gICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42OyVQQVRIJQogICAgIEM6XD5zZXQgUFlUSE9OUEFUSD0lUFlUSE9OUEFUSCU7QzpcTXlfcHl0aG9uX2xpYgogICAgIEM6XD5weXRob24KIApAQCAtMzc2LDEwICs0MDEsMTAgQEAKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KIGludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBUaGUKLWluc3RhbGxlciBmb3IgUHl0aG9uIDMuNSBhbmQgbGF0ZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgoraW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIDMuNSB0bwotUEFUSCIgY2FuIGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiB0byBQQVRIIgorbWF5IGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKIDplbnZ2YXI6YFBBVEhgLiAgVGhlIGxvY2F0aW9uIG9mIHRoZSA6ZmlsZTpgU2NyaXB0c1xcYCBmb2xkZXIgaXMgYWxzbyBhZGRlZC4KIFRoaXMgYWxsb3dzIHlvdSB0byB0eXBlIDpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIsIGFuZAogOmNvbW1hbmQ6YHBpcGAgZm9yIHRoZSBwYWNrYWdlIGluc3RhbGxlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgpAQCAtMzkzLDcgKzQxOCw3IEBACiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYWxyZWFkeQogZXhpc3RlZCk6OgogCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjYKIAogLi4gX2xhdW5jaGVyOgogCkBAIC00MTgsNiArNDQzLDggQEAKIEZyb20gdGhlIGNvbW1hbmQtbGluZQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKIFN5c3RlbS13aWRlIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIDMuMyBhbmQgbGF0ZXIgd2lsbCBwdXQgdGhlIGxhdW5jaGVyIG9uIHlvdXIKIDplbnZ2YXI6YFBBVEhgLiBUaGUgbGF1bmNoZXIgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBhdmFpbGFibGUgdmVyc2lvbnMgb2YKIFB5dGhvbiwgc28gaXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIHZlcnNpb24gaXMgaW5zdGFsbGVkLiBUbyBjaGVjayB0aGF0IHRoZQpAQCAtNDI3LDI1ICs0NTQsMjYgQEAKIAogICBweQogCi1Zb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK1lvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24geW91IGhhdmUgaW5zdGFsbGVkIGlzCiBzdGFydGVkIC0gaXQgY2FuIGJlIGV4aXRlZCBhcyBub3JtYWwsIGFuZCBhbnkgYWRkaXRpb25hbCBjb21tYW5kLWxpbmUKIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2lsbCBiZSBzZW50IGRpcmVjdGx5IHRvIFB5dGhvbi4KIAotSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIDIueCBpbnN0YWxsZWQgKGUuZy4sIDIuNiBhbmQgMi43KSB5b3UKLXdpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIDIuNyB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi42LCB0cnkgdGhlCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gaW5zdGFsbGVkIChlLmcuLCAyLjcgYW5kIHx2ZXJzaW9ufCkgeW91Cit3aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiB8dmVyc2lvbnwgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNywgdHJ5Cit0aGUgY29tbWFuZDoKKworOjoKKworICBweSAtMi43CisKK0lmIHlvdSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCwgdHJ5IHRoZQogY29tbWFuZDoKIAogOjoKIAotICBweSAtMi42CisgIHB5IC0yCiAKLUlmIHlvdSBoYXZlIGEgUHl0aG9uIDMueCBpbnN0YWxsZWQsIHRyeSB0aGUgY29tbWFuZDoKLQotOjoKLQotICBweSAtMwotCi1Zb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzLnggc3RhcnRzLgorWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHN0YXJ0cy4KIAogSWYgeW91IHNlZSB0aGUgZm9sbG93aW5nIGVycm9yLCB5b3UgZG8gbm90IGhhdmUgdGhlIGxhdW5jaGVyIGluc3RhbGxlZDoKIApAQCAtNTAwLDYgKzUyOCwxMSBAQAogZmlyc3QgbGluZSB0byBgYCMhIHB5dGhvbjIuNmBgIGFuZCB5b3Ugc2hvdWxkIGZpbmQgdGhlIDIuNiB2ZXJzaW9uCiBpbmZvcm1hdGlvbiBwcmludGVkLgogCitOb3RlIHRoYXQgdW5saWtlIGludGVyYWN0aXZlIHVzZSwgYSBiYXJlICJweXRob24iIHdpbGwgdXNlIHRoZSBsYXRlc3QKK3ZlcnNpb24gb2YgUHl0aG9uIDIueCB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZC4gIFRoaXMgaXMgZm9yIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IGFuZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFVuaXgsIHdoZXJlIHRoZSBjb21tYW5kIGBgcHl0aG9uYGAKK3R5cGljYWxseSByZWZlcnMgdG8gUHl0aG9uIDIuCisKIEZyb20gZmlsZSBhc3NvY2lhdGlvbnMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtNjc2LDcgKzcwOSw3IEBACiAKIAogCi0uLiBmaW5kaW5nX21vZHVsZXM6CisuLiBfZmluZGluZ19tb2R1bGVzOgogCiBGaW5kaW5nIG1vZHVsZXMKID09PT09PT09PT09PT09PQpAQCAtNjg3LDcgKzcyMCwyNCBAQAogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcYCBhbmQgdGhpcmQtcGFydHkgbW9kdWxlcyBzaG91bGQgYmUgc3RvcmVkIGluCiA6ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxzaXRlLXBhY2thZ2VzXFxgLgogCi1UaGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbiBXaW5kb3dzOgorVG8gY29tcGxldGVseSBvdmVycmlkZSA6ZGF0YTpgc3lzLnBhdGhgLCBjcmVhdGUgYSBgYC5fcHRoYGAgZmlsZSB3aXRoIHRoZSBzYW1lCituYW1lIGFzIHRoZSBETEwgKGBgcHl0aG9uMzYuX3B0aGBgKSBvciB0aGUgZXhlY3V0YWJsZSAoYGBweXRob24uX3B0aGBgKSBhbmQKK3NwZWNpZnkgb25lIGxpbmUgZm9yIGVhY2ggcGF0aCB0byBhZGQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gVGhlIGZpbGUgYmFzZWQgb24gdGhlCitETEwgbmFtZSBvdmVycmlkZXMgdGhlIG9uZSBiYXNlZCBvbiB0aGUgZXhlY3V0YWJsZSwgd2hpY2ggYWxsb3dzIHBhdGhzIHRvIGJlCityZXN0cmljdGVkIGZvciBhbnkgcHJvZ3JhbSBsb2FkaW5nIHRoZSBydW50aW1lIGlmIGRlc2lyZWQuCisKK1doZW4gdGhlIGZpbGUgZXhpc3RzLCBhbGwgcmVnaXN0cnkgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgaWdub3JlZCwKK2lzb2xhdGVkIG1vZGUgaXMgZW5hYmxlZCwgYW5kIDptb2Q6YHNpdGVgIGlzIG5vdCBpbXBvcnRlZCB1bmxlc3Mgb25lIGxpbmUgaW4gdGhlCitmaWxlIHNwZWNpZmllcyBgYGltcG9ydCBzaXRlYGAuIEJsYW5rIHBhdGhzIGFuZCBsaW5lcyBzdGFydGluZyB3aXRoIGBgI2BgIGFyZQoraWdub3JlZC4gRWFjaCBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGUuCitJbXBvcnQgc3RhdGVtZW50cyBvdGhlciB0aGFuIHRvIGBgc2l0ZWBgIGFyZSBub3QgcGVybWl0dGVkLCBhbmQgYXJiaXRyYXJ5IGNvZGUKK2Nhbm5vdCBiZSBzcGVjaWZpZWQuCisKK05vdGUgdGhhdCBgYC5wdGhgYCBmaWxlcyAod2l0aG91dCBsZWFkaW5nIHVuZGVyc2NvcmUpIHdpbGwgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5CitieSB0aGUgOm1vZDpgc2l0ZWAgbW9kdWxlLgorCitXaGVuIG5vIGBgLl9wdGhgYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbgorV2luZG93czoKIAogKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CiAgIGRpcmVjdG9yeS4KQEAgLTcwNiwxMCArNzU2LDExIEBACiAKICogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcwogICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCi0gIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQotICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCi0gIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQotICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoZWl0aGVyIGBgTGliXG9zLnB5YGAgb3IgYGBweXRob25YWS56aXBgYCkgdG8gZGVkdWNlCisgIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYSBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcworICBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQKKyAgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZSBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoCisgIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCiAKICogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KICAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKQEAgLTcyMiwxMCArNzczLDYgQEAKICAgcGF0aCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHBhdGggdG8gdGhlIG1haW4gZXhlY3V0YWJsZSB3aGVuIGRlZHVjaW5nIHRoZQogICBob21lIGxvY2F0aW9uLgogCi0qIElmIGBgYXBwbG9jYWxgYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGBgaG9tZWBgIHByb3BlcnR5IG9yIHRoZSBtYWluIGV4ZWN1dGFibGUKLSAgaXMgYWx3YXlzIHVzZWQgYXMgdGhlIGhvbWUgcGF0aCwgYW5kIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgcmVnaXN0cnkKLSAgdmFsdWVzIGFmZmVjdGluZyB0aGUgcGF0aCBhcmUgaWdub3JlZC4gVGhlIGxhbmRtYXJrIGZpbGUgaXMgbm90IGNoZWNrZWQuCi0KIFRoZSBlbmQgcmVzdWx0IG9mIGFsbCB0aGlzIGlzOgogCiAqIFdoZW4gcnVubmluZyA6ZmlsZTpgcHl0aG9uLmV4ZWAsIG9yIGFueSBvdGhlciAuZXhlIGluIHRoZSBtYWluIFB5dGhvbgpAQCAtNzQ0LDEzICs3OTEsMTIgQEAKIEZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKIGZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CiAKLSogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCi0gIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCi0gIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgotICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQotICByZWdpc3RyeS4KKyogSW5jbHVkZSBhIGBgLl9wdGhgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUKKyAgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZS4gVGhpcyB3aWxsIGlnbm9yZSBwYXRocyBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5IGFuZAorICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBhbHNvIGlnbm9yZSA6bW9kOmBzaXRlYCB1bmxlc3MgYGBpbXBvcnQgc2l0ZWBgIGlzCisgIGxpc3RlZC4KIAotKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzYuZGxsYCBpbiB5b3VyIG93bgogICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQogICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCkBAIC03NjAsNyArODA2LDggQEAKICogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCiAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQogICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgotICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKyAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZSwgYnV0IGEgY29ycmVjdGx5IG5hbWVkCisgIFpJUCBmaWxlIHdpbGwgYmUgZGV0ZWN0ZWQgaW5zdGVhZC4pCiAKIFRoZXNlIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGZpbGVzIGluIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uIHdpbGwgbm90IHRha2UKIHByZWNlZGVuY2Ugb3ZlciB0aGUgY29weSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBidW5kbGVkIHdpdGggeW91ciBhcHBsaWNhdGlvbi4KQEAgLTc2OCw2ICs4MTUsMjIgQEAKIHRoZSBmaXJzdCBzdWdnZXN0aW9uIGlzIHRoZSBiZXN0LCBhcyB0aGUgb3RoZXIgbWF5IHN0aWxsIGJlIHN1c2NlcHRpYmxlIHRvCiBub24tc3RhbmRhcmQgcGF0aHMgaW4gdGhlIHJlZ2lzdHJ5IGFuZCB1c2VyIHNpdGUtcGFja2FnZXMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgIDMuNgorCisgICAgICAqIEFkZHMgYGAuX3B0aGBgIGZpbGUgc3VwcG9ydCBhbmQgcmVtb3ZlcyBgYGFwcGxvY2FsYGAgb3B0aW9uIGZyb20KKyAgICAgICAgYGBweXZlbnYuY2ZnYGAuCisgICAgICAqIEFkZHMgYGBweXRob25YWC56aXBgYCBhcyBhIHBvdGVudGlhbCBsYW5kbWFyayB3aGVuIGRpcmVjdGx5IGFkamFjZW50CisgICAgICAgIHRvIHRoZSBleGVjdXRhYmxlLgorCisuLiBkZXByZWNhdGVkOjoKKyAgIDMuNgorCisgICAgICBNb2R1bGVzIHNwZWNpZmllZCBpbiB0aGUgcmVnaXN0cnkgdW5kZXIgYGBNb2R1bGVzYGAgKG5vdCBgYFB5dGhvblBhdGhgYCkKKyAgICAgIG1heSBiZSBpbXBvcnRlZCBieSA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyYC4KKyAgICAgIFRoaXMgZmluZGVyIGlzIGVuYWJsZWQgb24gV2luZG93cyBpbiAzLjYuMCBhbmQgZWFybGllciwgYnV0IG1heSBuZWVkIHRvCisgICAgICBiZSBleHBsaWNpdGx5IGFkZGVkIHRvIDphdHRyOmBzeXMubWV0YV9wYXRoYCBpbiB0aGUgZnV0dXJlLgorCiBBZGRpdGlvbmFsIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PQogCkBAIC04NjcsNyArOTMwLDcgQEAKIFdoZW4gZXh0cmFjdGVkLCB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIGlzIChhbG1vc3QpIGZ1bGx5IGlzb2xhdGVkIGZyb20gdGhlCiB1c2VyJ3Mgc3lzdGVtLCBpbmNsdWRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzeXN0ZW0gcmVnaXN0cnkgc2V0dGluZ3MsIGFuZAogaW5zdGFsbGVkIHBhY2thZ2VzLiBUaGUgc3RhbmRhcmQgbGlicmFyeSBpcyBpbmNsdWRlZCBhcyBwcmUtY29tcGlsZWQgYW5kCi1vcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzUuZGxsYGAsCitvcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzYuZGxsYGAsCiBgYHB5dGhvbi5leGVgYCBhbmQgYGBweXRob253LmV4ZWBgIGFyZSBhbGwgcHJvdmlkZWQuIFRjbC90ayAoaW5jbHVkaW5nIGFsbAogZGVwZW5kYW50cywgc3VjaCBhcyBJZGxlKSwgcGlwIGFuZCB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gYXJlIG5vdCBpbmNsdWRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAwMDE1MWQ3Li4zODBlZGVjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMzY3LDcgKzM2Nyw3IEBACiAKIFRoaXMgdmVyc2lvbiB3b3JrcyBmb3Igc2ltcGxlIHRoaW5ncyBzdWNoIGFzIGludGVnZXJzLCBidXQgaXQgaGFzIGEgc2lkZSBlZmZlY3Q7CiB0aGUgYGBfY2FjaGVgYCBkaWN0aW9uYXJ5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWVzLCBzbyB0aGV5J2xsCi1uZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cCBUaGlzIGlzbid0CituZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cC4gVGhpcyBpc24ndAogdmVyeSBub3RpY2VhYmxlIGZvciBpbnRlZ2VycywgYnV0IGlmIDpmdW5jOmBmYCByZXR1cm5zIGFuIG9iamVjdCwgb3IgYSBkYXRhCiBzdHJ1Y3R1cmUgdGhhdCB0YWtlcyB1cCBhIGxvdCBvZiBtZW1vcnksIHRoaXMgY2FuIGJlIGEgcHJvYmxlbS4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCA5YWNjNzM0Li5iOTAwZTc3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtMTI1Myw5ICsxMjUzLDkgQEAKIAogICAgIEBjb250ZXh0bWFuYWdlcgogICAgIGRlZiB0cmFja19lbnRyeV9hbmRfZXhpdChuYW1lKToKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzogJXMnLCBuYW1lKQogICAgICAgICB5aWVsZAotICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzogJXMnLCBuYW1lKQogCiBGb3JtZXJseSwgdGhpcyB3b3VsZCBoYXZlIG9ubHkgYmVlbiB1c2FibGUgYXMgYSBjb250ZXh0IG1hbmFnZXI6OgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdCBiL0RvYy93aGF0c25ldy8zLjMucnN0CmluZGV4IDBjOWYyYmIuLjkzYjI5N2MgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjMucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjMucnN0CkBAIC0xMDgsNyArMTA4LDcgQEAKIHdpdGggdGhlIGludGVycHJldGVyIGNvcmUuCiAKIFRoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQotOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2BgcHl2ZW52YGAgc2NyaXB0IGZvciBjb21tYW5kLWxpbmUgYWNjZXNzIGFuZAogYWRtaW5pc3RyYXRpb24uICBUaGUgUHl0aG9uIGludGVycHJldGVyIGNoZWNrcyBmb3IgYSBgYHB5dmVudi5jZmdgYCwKIGZpbGUgd2hvc2UgZXhpc3RlbmNlIHNpZ25hbHMgdGhlIGJhc2Ugb2YgYSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5CiB0cmVlLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdAppbmRleCAxZTVjOWQxLi43MjM5OGY5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy40LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdApAQCAtMTk3LDcgKzE5Nyw3IEBACiBgYHBpcGBgIGNvbW1hbmQgdHlwaWNhbGx5IHJlZmVycyB0byB0aGUgc2VwYXJhdGVseSBpbnN0YWxsZWQgUHl0aG9uIDIKIHZlcnNpb24uCiAKLVRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAorVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAogbW9kdWxlIG1ha2UgdXNlIG9mIHRoZSA6bW9kOmBlbnN1cmVwaXBgIG1vZHVsZSB0byBtYWtlIGBgcGlwYGAgcmVhZGlseQogYXZhaWxhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBXaGVuIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdXRpbGl0eSwKIGBgcGlwYGAgaXMgaW5zdGFsbGVkIGJ5IGRlZmF1bHQsIHdoaWxlIHdoZW4gdXNpbmcgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZQpAQCAtODI0LDcgKzgyNCw3IEBACiA6dGVybTpgcHJvdmlzaW9uYWwgQVBJYC4gIFRoZXNlIGNsYXNzZXMgcHJvdmlkZSBhIG51bWJlciBvZiBuZXcgbWV0aG9kcyB0aGF0CiBtYWtlIGV4dHJhY3RpbmcgY29udGVudCBmcm9tIGFuZCBpbnNlcnRpbmcgY29udGVudCBpbnRvIGVtYWlsIG1lc3NhZ2VzIG11Y2gKIGVhc2llci4gIEZvciBkZXRhaWxzLCBzZWUgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgZG9jdW1lbnRhdGlvbiBhbmQKLXRoZSA6cmVmOmBlbWFpbC1jb250ZW50bWFuYWdlci1hcGktZXhhbXBsZXNgLiAgVGhlc2UgQVBJIGFkZGl0aW9ucyBjb21wbGV0ZSB0aGUKK3RoZSA6cmVmOmBlbWFpbC1leGFtcGxlc2AuICBUaGVzZSBBUEkgYWRkaXRpb25zIGNvbXBsZXRlIHRoZQogYnVsayBvZiB0aGUgd29yayB0aGF0IHdhcyBwbGFubmVkIGFzIHBhcnQgb2YgdGhlIGVtYWlsNiBwcm9qZWN0LiAgVGhlIGN1cnJlbnRseQogcHJvdmlzaW9uYWwgQVBJIGlzIHNjaGVkdWxlZCB0byBiZWNvbWUgZmluYWwgaW4gUHl0aG9uIDMuNSAocG9zc2libHkgd2l0aCBhIGZldwogbWlub3IgYWRkaXRpb25zIGluIHRoZSBhcmVhIG9mIGVycm9yIGhhbmRsaW5nKS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZApAQCAtMTk4OSwxMSArMTk4OSwxMSBAQAogICBTdGlubmVyIHVzaW5nIGhpcyA6cGVwOmA0NDVgLWJhc2VkIGBgcHlmYWlsbWFsbG9jYGAgdG9vbCAoOmlzc3VlOmAxODQwOGAsCiAgIDppc3N1ZTpgMTg1MjBgKS4KIAotKiBUaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCiAgIHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MgZXZlbiBvbiBzeXN0ZW1zIHdoZXJlIHN5bWxpbmtzIGFyZSB0aGUKICAgZGVmYXVsdC4gIChDb250cmlidXRlZCBieSBWaW5heSBTYWppcCBpbiA6aXNzdWU6YDE4ODA3YC4pCiAKLSogVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIGFsc28gYWNjZXB0cyBhIGBgLS13aXRob3V0LXBpcGBgCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgYWxzbyBhY2NlcHRzIGEgYGAtLXdpdGhvdXQtcGlwYGAKICAgb3B0aW9uIHRvIHN1cHByZXNzIHRoZSBvdGhlcndpc2UtYXV0b21hdGljIGJvb3RzdHJhcHBpbmcgb2YgcGlwIGludG8KICAgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuICAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuIGluIDppc3N1ZTpgMTk1NTJgCiAgIGFzIHBhcnQgb2YgdGhlIDpwZXA6YDQ1M2AgaW1wbGVtZW50YXRpb24uKQpAQCAtMjQ1OSw3ICsyNDU5LDcgQEAKICAgc3RyZWFtIGluIDptb2Q6YH5pby5UZXh0SU9XcmFwcGVyYCB0byB1c2UgaXRzICpuZXdsaW5lKiBhcmd1bWVudAogICAoOmlzc3VlOmAxNTIwNGApLgogCi0qIElmIHlvdSB1c2UgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKKyogSWYgeW91IHVzZSBgYHB5dmVudmBgIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKICAgKm5vdCogYmUgaW5zdGFsbGVkLCB5b3UgbXVzdCBhZGQgYGAtLXdpdGhvdXQtcGlwYGAgdG8geW91ciBjb21tYW5kCiAgIGludm9jYXRpb24uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjUucnN0IGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKaW5kZXggYWI2MWQ3YS4uZWRiNzRmMCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuNS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKIAogVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuNSwgY29tcGFyZWQgdG8gMy40LgogUHl0aG9uIDMuNSB3YXMgcmVsZWFzZWQgb24gU2VwdGVtYmVyIDEzLCAyMDE1LiDCoFNlZSB0aGUKLTpyZWY6YGNoYW5nZWxvZyA8Y2hhbmdlbG9nPmAgZm9yIGEgZnVsbCBsaXN0IG9mIGNoYW5nZXMuCitgY2hhbmdlbG9nIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvd2hhdHNuZXcvY2hhbmdlbG9nLmh0bWw+YF8gZm9yIGEgZnVsbAorbGlzdCBvZiBjaGFuZ2VzLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjE3NSw4ICsyMTc2LDcgQEAKIAogKiA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLAogKiA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgLAotKiA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLAotKiA6YzpmdW5jOmBfUHlPYmplY3RfR0NfQ2FsbG9jYC4KKyogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYC4KIAogKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMzNgLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy42LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQ4M2EyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3LzMuNi5yc3QKQEAgLTAsMCArMSwyMzEwIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgIFdoYXQncyBOZXcgSW4gUHl0aG9uIDMuNgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6UmVsZWFzZTogfHJlbGVhc2V8Cis6RGF0ZTogfHRvZGF5fAorOkVkaXRvcnM6IEVsdmlzIFByYW5za2V2aWNodXMgPGVsdmlzQG1hZ2ljLmlvPiwgWXVyeSBTZWxpdmFub3YgPHl1cnlAbWFnaWMuaW8+CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjYsIGNvbXBhcmVkIHRvIDMuNS4KK1B5dGhvbiAzLjYgd2FzIHJlbGVhc2VkIG9uIERlY2VtYmVyIDIzLCAyMDE2LiDCoFNlZSB0aGUKK2BjaGFuZ2Vsb2cgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi93aGF0c25ldy9jaGFuZ2Vsb2cuaHRtbD5gXyBmb3IgYSBmdWxsCitsaXN0IG9mIGNoYW5nZXMuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDk0YCAtIFB5dGhvbiAzLjYgUmVsZWFzZSBTY2hlZHVsZQorCisKK1N1bW1hcnkgLS0gUmVsZWFzZSBoaWdobGlnaHRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOZXcgc3ludGF4IGZlYXR1cmVzOgorCisqIDpyZWY6YFBFUCA0OTggPHdoYXRzbmV3MzYtcGVwNDk4PmAsIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMuCisKKyogOnJlZjpgUEVQIDUxNSA8d2hhdHNuZXczNi1wZXA1MTU+YCwgdW5kZXJzY29yZXMgaW4gbnVtZXJpYyBsaXRlcmFscy4KKworKiA6cmVmOmBQRVAgNTI2IDx3aGF0c25ldzM2LXBlcDUyNj5gLCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb25zLgorCisqIDpyZWY6YFBFUCA1MjUgPHdoYXRzbmV3MzYtcGVwNTI1PmAsIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzLgorCisqIDpyZWY6YFBFUCA1MzAgPHdoYXRzbmV3MzYtcGVwNTMwPmA6IGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KKworCitOZXcgbGlicmFyeSBtb2R1bGVzOgorCisqIDptb2Q6YHNlY3JldHNgOiA6cmVmOmBQRVAgNTA2IC0tIEFkZGluZyBBIFNlY3JldHMgTW9kdWxlIFRvIFRoZSBTdGFuZGFyZCBMaWJyYXJ5IDx3aGF0c25ldzM2LXBlcDUwNj5gLgorCisKK0NQeXRob24gaW1wbGVtZW50YXRpb24gaW1wcm92ZW1lbnRzOgorCisqIFRoZSA6cmVmOmBkaWN0IDx0eXBlc21hcHBpbmc+YCB0eXBlIGhhcyBiZWVuIHJlaW1wbGVtZW50ZWQgdG8gdXNlCisgIGEgOnJlZjpgbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uIDx3aGF0c25ldzM2LWNvbXBhY3RkaWN0PmAKKyAgYmFzZWQgb24gYGEgcHJvcG9zYWwgYnkgUmF5bW9uZCBIZXR0aW5nZXIKKyAgPGh0dHBzOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMTItRGVjZW1iZXIvMTIzMDI4Lmh0bWw+YF8KKyAgYW5kIHNpbWlsYXIgdG8gdGhlIGBQeVB5IGRpY3QgaW1wbGVtZW50YXRpb25gXy4gIFRoaXMgcmVzdWx0ZWQgaW4gZGljdGlvbmFyaWVzCisgIHVzaW5nIDIwJSB0byAyNSUgbGVzcyBtZW1vcnkgd2hlbiBjb21wYXJlZCB0byBQeXRob24gMy41LgorCisqIEN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24gaGFzIGJlZW4gc2ltcGxpZmllZCB3aXRoIHRoZQorICA6cmVmOmBuZXcgcHJvdG9jb2wgPHdoYXRzbmV3MzYtcGVwNDg3PmAuCisKKyogVGhlIGNsYXNzIGF0dHJpYnV0ZSBkZWZpbml0aW9uIG9yZGVyIGlzCisgIDpyZWY6YG5vdyBwcmVzZXJ2ZWQgIDx3aGF0c25ldzM2LXBlcDUyMD5gLgorCisqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBpbiBgYCoqa3dhcmdzYGAgbm93CisgIDpyZWY6YGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciA8d2hhdHNuZXczNi1wZXA0Njg+YCBpbiB3aGljaCBrZXl3b3JkCisgIGFyZ3VtZW50cyB3ZXJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCisKKyogRFRyYWNlIGFuZCBTeXN0ZW1UYXAgOnJlZjpgcHJvYmluZyBzdXBwb3J0IDx3aGF0c25ldzM2LXRyYWNpbmc+YCBoYXMKKyAgYmVlbiBhZGRlZC4KKworKiBUaGUgbmV3IDpyZWY6YFBZVEhPTk1BTExPQyA8d2hhdHNuZXczNi1weXRob25tYWxsb2M+YCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICBjYW4gbm93IGJlIHVzZWQgdG8gZGVidWcgdGhlIGludGVycHJldGVyIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhY2Nlc3MKKyAgZXJyb3JzLgorCisKK1NpZ25pZmljYW50IGltcHJvdmVtZW50cyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworKiBUaGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIGhhcyByZWNlaXZlZCBuZXcgZmVhdHVyZXMsIHNpZ25pZmljYW50CisgIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLCBhbmQgYSBmYWlyIGFtb3VudCBvZiBidWcgZml4ZXMuCisgIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiB0aGUgYGBhc3luY2lvYGAgbW9kdWxlIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbAorICBhbmQgaXRzIEFQSSBpcyBjb25zaWRlcmVkIHN0YWJsZS4KKworKiBBIG5ldyA6cmVmOmBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sIDx3aGF0c25ldzM2LXBlcDUxOT5gIGhhcyBiZWVuCisgIGltcGxlbWVudGVkIHRvIHN1cHBvcnQgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisgIEFsbCBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucyBvcGVyYXRpbmcgb24gcGF0aHMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8KKyAgd29yayB3aXRoIHRoZSBuZXcgcHJvdG9jb2wuCisKKyogVGhlIDptb2Q6YGRhdGV0aW1lYCBtb2R1bGUgaGFzIGdhaW5lZCBzdXBwb3J0IGZvcgorICA6cmVmOmBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uIDx3aGF0c25ldzM2LXBlcDQ5NT5gLgorCisqIFRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSByZWNlaXZlZCBhIG51bWJlciBvZgorICA6cmVmOmBpbXByb3ZlbWVudHMgPHdoYXRzbmV3MzYtdHlwaW5nPmAgYW5kIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbC4KKworKiBUaGUgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSBoYXMgYmVlbiBzaWduaWZpY2FudGx5IHJld29ya2VkCisgIGFuZCBpcyBub3cgdXNlZCB0byBwcm92aWRlIGJldHRlciBvdXRwdXQgZm9yIDpleGM6YFJlc291cmNlV2FybmluZ2AKKyAgYXMgd2VsbCBhcyBwcm92aWRlIGJldHRlciBkaWFnbm9zdGljcyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLgorICBTZWUgdGhlIDpyZWY6YFBZVEhPTk1BTExPQyBzZWN0aW9uIDx3aGF0c25ldzM2LXB5dGhvbm1hbGxvYz5gIGZvciBtb3JlCisgIGluZm9ybWF0aW9uLgorCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBUaGUgbmV3IDptb2Q6YHNlY3JldHNgIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorICBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgorICBtYW5hZ2luZyBzZWNyZXRzIHN1Y2ggYXMgYWNjb3VudCBhdXRoZW50aWNhdGlvbiwgdG9rZW5zLCBhbmQgc2ltaWxhci4KKworKiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkKKyAgcG9vbCBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlCisgIHJhdGlvbmFsZS4KKworKiBUaGUgOm1vZDpgaGFzaGxpYmAgYW5kIDptb2Q6YHNzbGAgbW9kdWxlcyBub3cgc3VwcG9ydCBPcGVuU1NMIDEuMS4wLgorCisqIFRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBmZWF0dXJlIHNldCBvZiB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgaGF2ZSBiZWVuCisgIGltcHJvdmVkLgorCisqIFRoZSA6bW9kOmBoYXNobGliYCBtb2R1bGUgcmVjZWl2ZWQgc3VwcG9ydCBmb3IgdGhlIEJMQUtFMiwgU0hBLTMgYW5kIFNIQUtFCisgIGhhc2ggYWxnb3JpdGhtcyBhbmQgdGhlIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLgorCisKK1dpbmRvd3MgaW1wcm92ZW1lbnRzOgorCisqIDpyZWY6YFBFUCA1MjggPHdoYXRzbmV3MzYtcGVwNTI5PmAgYW5kIDpyZWY6YFBFUCA1MjkgPHdoYXRzbmV3MzYtcGVwNTI5PmAsCisgIFdpbmRvd3MgZmlsZXN5c3RlbSBhbmQgY29uc29sZSBlbmNvZGluZyBjaGFuZ2VkIHRvIFVURi04LgorCisqIFRoZSBgYHB5LmV4ZWBgIGxhdW5jaGVyLCB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseSwgbm8gbG9uZ2VyIHByZWZlcnMKKyAgUHl0aG9uIDIgb3ZlciBQeXRob24gMyB3aGVuIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBhIHZlcnNpb24gKHZpYQorICBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIGEgY29uZmlnIGZpbGUpLiAgSGFuZGxpbmcgb2Ygc2hlYmFuZyBsaW5lcworICByZW1haW5zIHVuY2hhbmdlZCAtICJweXRob24iIHJlZmVycyB0byBQeXRob24gMiBpbiB0aGF0IGNhc2UuCisKKyogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBoYXZlIGJlZW4gbWFya2VkIGFzIGxvbmctcGF0aCBhd2FyZSwKKyAgd2hpY2ggbWVhbnMgdGhhdCB0aGUgMjYwIGNoYXJhY3RlciBwYXRoIGxpbWl0IG1heSBubyBsb25nZXIgYXBwbHkuCisgIFNlZSA6cmVmOmByZW1vdmluZyB0aGUgTUFYX1BBVEggbGltaXRhdGlvbiA8bWF4LXBhdGg+YCBmb3IgZGV0YWlscy4KKworKiBBIGBgLl9wdGhgYCBmaWxlIGNhbiBiZSBhZGRlZCB0byBmb3JjZSBpc29sYXRlZCBtb2RlIGFuZCBmdWxseSBzcGVjaWZ5CisgIGFsbCBzZWFyY2ggcGF0aHMgdG8gYXZvaWQgcmVnaXN0cnkgYW5kIGVudmlyb25tZW50IGxvb2t1cC4gU2VlCisgIDpyZWY6YHRoZSBkb2N1bWVudGF0aW9uIDxmaW5kaW5nX21vZHVsZXM+YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKiBBIGBgcHl0aG9uMzYuemlwYGAgZmlsZSBub3cgd29ya3MgYXMgYSBsYW5kbWFyayB0byBpbmZlcgorICA6ZW52dmFyOmBQWVRIT05IT01FYC4gU2VlIDpyZWY6YHRoZSBkb2N1bWVudGF0aW9uIDxmaW5kaW5nX21vZHVsZXM+YCBmb3IKKyAgbW9yZSBpbmZvcm1hdGlvbi4KKworCisuLiBfUHlQeSBkaWN0IGltcGxlbWVudGF0aW9uOiBodHRwczovL21vcmVweXB5LmJsb2dzcG90LmNvbS8yMDE1LzAxL2Zhc3Rlci1tb3JlLW1lbW9yeS1lZmZpY2llbnQtYW5kLW1vcmUuaHRtbAorCisKK05ldyBGZWF0dXJlcworPT09PT09PT09PT09CisKKy4uIF93aGF0c25ldzM2LXBlcDQ5ODoKKworUEVQIDQ5ODogRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0OThgIGludHJvZHVjZXMgYSBuZXcga2luZCBvZiBzdHJpbmcgbGl0ZXJhbHM6ICpmLXN0cmluZ3MqLCBvcgorOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAuCisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIHByZWZpeGVkIHdpdGggYGAnZidgYCBhbmQgYXJlIHNpbWlsYXIgdG8KK3RoZSBmb3JtYXQgc3RyaW5ncyBhY2NlcHRlZCBieSA6bWV0aDpgc3RyLmZvcm1hdGAuICBUaGV5IGNvbnRhaW4gcmVwbGFjZW1lbnQKK2ZpZWxkcyBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlcy4gIFRoZSByZXBsYWNlbWVudCBmaWVsZHMgYXJlIGV4cHJlc3Npb25zLAord2hpY2ggYXJlIGV2YWx1YXRlZCBhdCBydW4gdGltZSwgYW5kIHRoZW4gZm9ybWF0dGVkIHVzaW5nIHRoZQorOmZ1bmM6YGZvcm1hdGAgcHJvdG9jb2w6OgorCisgICAgPj4+IG5hbWUgPSAiRnJlZCIKKyAgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtuYW1lfS4iCisgICAgJ0hlIHNhaWQgaGlzIG5hbWUgaXMgRnJlZC4nCisgICAgPj4+IHdpZHRoID0gMTAKKyAgICA+Pj4gcHJlY2lzaW9uID0gNAorICAgID4+PiB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgiMTIuMzQ1NjciKQorICAgID4+PiBmInJlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19IiAgIyBuZXN0ZWQgZmllbGRzCisgICAgJ3Jlc3VsdDogICAgICAxMi4zNScKKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0OThgIC0tIExpdGVyYWwgU3RyaW5nIEludGVycG9sYXRpb24uCisgICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEVyaWMgVi4gU21pdGguCisKKyAgICA6cmVmOmBGZWF0dXJlIGRvY3VtZW50YXRpb24gPGYtc3RyaW5ncz5gLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyNjoKKworUEVQIDUyNjogU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODRgIGludHJvZHVjZWQgdGhlIHN0YW5kYXJkIGZvciB0eXBlIGFubm90YXRpb25zIG9mIGZ1bmN0aW9uCitwYXJhbWV0ZXJzLCBhLmsuYS4gdHlwZSBoaW50cy4gVGhpcyBQRVAgYWRkcyBzeW50YXggdG8gUHl0aG9uIGZvciBhbm5vdGF0aW5nCit0aGUgdHlwZXMgb2YgdmFyaWFibGVzIGluY2x1ZGluZyBjbGFzcyB2YXJpYWJsZXMgYW5kIGluc3RhbmNlIHZhcmlhYmxlczo6CisKKyAgICBwcmltZXM6IExpc3RbaW50XSA9IFtdCisKKyAgICBjYXB0YWluOiBzdHIgICMgTm90ZTogbm8gaW5pdGlhbCB2YWx1ZSEKKworICAgIGNsYXNzIFN0YXJzaGlwOgorICAgICAgICBzdGF0czogRGljdFtzdHIsIGludF0gPSB7fQorCitKdXN0IGFzIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucywgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBkb2VzIG5vdCBhdHRhY2ggYW55CitwYXJ0aWN1bGFyIG1lYW5pbmcgdG8gdmFyaWFibGUgYW5ub3RhdGlvbnMgYW5kIG9ubHkgc3RvcmVzIHRoZW0gaW4gdGhlCitgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIG9yIG1vZHVsZS4KKworSW4gY29udHJhc3QgdG8gdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIHN0YXRpY2FsbHkgdHlwZWQgbGFuZ3VhZ2VzLAordGhlIGdvYWwgb2YgYW5ub3RhdGlvbiBzeW50YXggaXMgdG8gcHJvdmlkZSBhbiBlYXN5IHdheSB0byBzcGVjaWZ5IHN0cnVjdHVyZWQKK3R5cGUgbWV0YWRhdGEgZm9yIHRoaXJkIHBhcnR5IHRvb2xzIGFuZCBsaWJyYXJpZXMgdmlhIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZQorYW5kIHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLS0gU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KKyAgICAgIFBFUCB3cml0dGVuIGJ5IFJ5YW4gR29uemFsZXosIFBoaWxpcCBIb3VzZSwgSXZhbiBMZXZraXZza3lpLCBMaXNhIFJvYWNoLAorICAgICAgYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworICAgVG9vbHMgdGhhdCB1c2Ugb3Igd2lsbCB1c2UgdGhlIG5ldyBzeW50YXg6CisgICBgbXlweSA8aHR0cDovL2dpdGh1Yi5jb20vcHl0aG9uL215cHk+YF8sCisgICBgcHl0eXBlIDxodHRwOi8vZ2l0aHViLmNvbS9nb29nbGUvcHl0eXBlPmBfLCBQeUNoYXJtLCBldGMuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTE1OgorCitQRVAgNTE1OiBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDUxNWAgYWRkcyB0aGUgYWJpbGl0eSB0byB1c2UgdW5kZXJzY29yZXMgaW4gbnVtZXJpYyBsaXRlcmFscyBmb3IKK2ltcHJvdmVkIHJlYWRhYmlsaXR5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgPj4+IDFfMDAwXzAwMF8wMDBfMDAwXzAwMAorICAgIDEwMDAwMDAwMDAwMDAwMDAKKyAgICA+Pj4gMHhfRkZfRkZfRkZfRkYKKyAgICA0Mjk0OTY3Mjk1CisKK1NpbmdsZSB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBiZXR3ZWVuIGRpZ2l0cyBhbmQgYWZ0ZXIgYW55IGJhc2UKK3NwZWNpZmllci4gIExlYWRpbmcsIHRyYWlsaW5nLCBvciBtdWx0aXBsZSB1bmRlcnNjb3JlcyBpbiBhIHJvdyBhcmUgbm90CithbGxvd2VkLgorCitUaGUgOnJlZjpgc3RyaW5nIGZvcm1hdHRpbmcgPGZvcm1hdHNwZWM+YCBsYW5ndWFnZSBhbHNvIG5vdyBoYXMgc3VwcG9ydAorZm9yIHRoZSBgYCdfJ2BgIG9wdGlvbiB0byBzaWduYWwgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhIHRob3VzYW5kcworc2VwYXJhdG9yIGZvciBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgYW5kIGZvciBpbnRlZ2VyCitwcmVzZW50YXRpb24gdHlwZSBgYCdkJ2BgLiAgRm9yIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGBgJ2InYGAsCitgYCdvJ2BgLCBgYCd4J2BgLCBhbmQgYGAnWCdgYCwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0CitkaWdpdHM6OgorCisgICAgPj4+ICd7Ol99Jy5mb3JtYXQoMTAwMDAwMCkKKyAgICAnMV8wMDBfMDAwJworICAgID4+PiAnezpfeH0nLmZvcm1hdCgweEZGRkZGRkZGKQorICAgICdmZmZmX2ZmZmYnCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MTVgIC0tIFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEdlb3JnIEJyYW5kbCBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKworCisuLiBfd2hhdHNuZXczNi1wZXA1MjU6CisKK1BFUCA1MjU6IEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0OTJgIGludHJvZHVjZWQgc3VwcG9ydCBmb3IgbmF0aXZlIGNvcm91dGluZXMgYW5kIGBgYXN5bmNgYCAvIGBgYXdhaXRgYAorc3ludGF4IHRvIFB5dGhvbiAzLjUuICBBIG5vdGFibGUgbGltaXRhdGlvbiBvZiB0aGUgUHl0aG9uIDMuNSBpbXBsZW1lbnRhdGlvbgoraXMgdGhhdCBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIHVzZSBgYGF3YWl0YGAgYW5kIGBgeWllbGRgYCBpbiB0aGUgc2FtZQorZnVuY3Rpb24gYm9keS4gIEluIFB5dGhvbiAzLjYgdGhpcyByZXN0cmljdGlvbiBoYXMgYmVlbiBsaWZ0ZWQsIG1ha2luZyBpdAorcG9zc2libGUgdG8gZGVmaW5lICphc3luY2hyb25vdXMgZ2VuZXJhdG9ycyo6OgorCisgICAgYXN5bmMgZGVmIHRpY2tlcihkZWxheSwgdG8pOgorICAgICAgICAiIiJZaWVsZCBudW1iZXJzIGZyb20gMCB0byAqdG8qIGV2ZXJ5ICpkZWxheSogc2Vjb25kcy4iIiIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UodG8pOgorICAgICAgICAgICAgeWllbGQgaQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcChkZWxheSkKKworVGhlIG5ldyBzeW50YXggYWxsb3dzIGZvciBmYXN0ZXIgYW5kIG1vcmUgY29uY2lzZSBjb2RlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI1YCAtLSBBc3luY2hyb25vdXMgR2VuZXJhdG9ycworICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUzMDoKKworUEVQIDUzMDogQXN5bmNocm9ub3VzIENvbXByZWhlbnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNTMwYCBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIGBgYXN5bmMgZm9yYGAgaW4gbGlzdCwgc2V0LCBkaWN0Citjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zOjoKKworICAgIHJlc3VsdCA9IFtpIGFzeW5jIGZvciBpIGluIGFpdGVyKCkgaWYgaSAlIDJdCisKK0FkZGl0aW9uYWxseSwgYGBhd2FpdGBgIGV4cHJlc3Npb25zIGFyZSBzdXBwb3J0ZWQgaW4gYWxsIGtpbmRzCitvZiBjb21wcmVoZW5zaW9uczo6CisKKyAgICByZXN1bHQgPSBbYXdhaXQgZnVuKCkgZm9yIGZ1biBpbiBmdW5jcyBpZiBhd2FpdCBjb25kaXRpb24oKV0KKworLi4gc2VlYWxzbzo6CisKKyA6cGVwOmA1MzBgIC0tIEFzeW5jaHJvbm91cyBDb21wcmVoZW5zaW9ucworICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworCisuLiBfd2hhdHNuZXczNi1wZXA0ODc6CisKK1BFUCA0ODc6IFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBjdXN0b21pemUgc3ViY2xhc3MgY3JlYXRpb24gd2l0aG91dCB1c2luZyBhIG1ldGFjbGFzcy4KK1RoZSBuZXcgYGBfX2luaXRfc3ViY2xhc3NfX2BgIGNsYXNzbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBiYXNlIGNsYXNzCit3aGVuZXZlciBhIG5ldyBzdWJjbGFzcyBpcyBjcmVhdGVkOjoKKworICAgIGNsYXNzIFBsdWdpbkJhc2U6CisgICAgICAgIHN1YmNsYXNzZXMgPSBbXQorCisgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICBjbHMuc3ViY2xhc3Nlcy5hcHBlbmQoY2xzKQorCisgICAgY2xhc3MgUGx1Z2luMShQbHVnaW5CYXNlKToKKyAgICAgICAgcGFzcworCisgICAgY2xhc3MgUGx1Z2luMihQbHVnaW5CYXNlKToKKyAgICAgICAgcGFzcworCitJbiBvcmRlciB0byBhbGxvdyB6ZXJvLWFyZ3VtZW50IDpmdW5jOmBzdXBlcmAgY2FsbHMgdG8gd29yayBjb3JyZWN0bHkgZnJvbQorOm1ldGg6YH5vYmplY3QuX19pbml0X3N1YmNsYXNzX19gIGltcGxlbWVudGF0aW9ucywgY3VzdG9tIG1ldGFjbGFzc2VzIG11c3QKK2Vuc3VyZSB0aGF0IHRoZSBuZXcgYGBfX2NsYXNzY2VsbF9fYGAgbmFtZXNwYWNlIGVudHJ5IGlzIHByb3BhZ2F0ZWQgdG8KK2BgdHlwZS5fX25ld19fYGAgKGFzIGRlc2NyaWJlZCBpbiA6cmVmOmBjbGFzcy1vYmplY3QtY3JlYXRpb25gKS4KKworLi4gc2VlYWxzbzo6CisKKyA6cGVwOmA0ODdgIC0tIFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbgorICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCisgOnJlZjpgRmVhdHVyZSBkb2N1bWVudGF0aW9uIDxjbGFzcy1jdXN0b21pemF0aW9uPmAKKworCisuLiBfd2hhdHNuZXczNi1wZXA0ODctZGVzY3JpcHRvcnM6CisKK1BFUCA0ODc6IERlc2NyaXB0b3IgUHJvdG9jb2wgRW5oYW5jZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODdgIGV4dGVuZHMgdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2wgdG8gaW5jbHVkZSB0aGUgbmV3IG9wdGlvbmFsCis6bWV0aDpgfm9iamVjdC5fX3NldF9uYW1lX19gIG1ldGhvZC4gIFdoZW5ldmVyIGEgbmV3IGNsYXNzIGlzIGRlZmluZWQsIHRoZSBuZXcKK21ldGhvZCB3aWxsIGJlIGNhbGxlZCBvbiBhbGwgZGVzY3JpcHRvcnMgaW5jbHVkZWQgaW4gdGhlIGRlZmluaXRpb24sIHByb3ZpZGluZwordGhlbSB3aXRoIGEgcmVmZXJlbmNlIHRvIHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGFuZCB0aGUgbmFtZSBnaXZlbiB0byB0aGUKK2Rlc2NyaXB0b3Igd2l0aGluIHRoZSBjbGFzcyBuYW1lc3BhY2UuICBJbiBvdGhlciB3b3JkcywgaW5zdGFuY2VzIG9mCitkZXNjcmlwdG9ycyBjYW4gbm93IGtub3cgdGhlIGF0dHJpYnV0ZSBuYW1lIG9mIHRoZSBkZXNjcmlwdG9yIGluIHRoZQorb3duZXIgY2xhc3M6OgorCisgICAgY2xhc3MgSW50RmllbGQ6CisgICAgICAgIGRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcik6CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuX19kaWN0X19bc2VsZi5uYW1lXQorCisgICAgICAgIGRlZiBfX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnZXhwZWN0aW5nIGludGVnZXIgaW4ge3NlbGYubmFtZX0nKQorICAgICAgICAgICAgaW5zdGFuY2UuX19kaWN0X19bc2VsZi5uYW1lXSA9IHZhbHVlCisKKyAgICAgICAgIyB0aGlzIGlzIHRoZSBuZXcgaW5pdGlhbGl6ZXI6CisgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgY2xhc3MgTW9kZWw6CisgICAgICAgIGludF9maWVsZCA9IEludEZpZWxkKCkKKworCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDQ4N2AgLS0gU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uCisgICAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCisgICAgOnJlZjpgRmVhdHVyZSBkb2N1bWVudGF0aW9uIDxkZXNjcmlwdG9ycz5gCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTE5OgorCitQRVAgNTE5OiBBZGRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGUgc3lzdGVtIHBhdGhzIGhhdmUgaGlzdG9yaWNhbGx5IGJlZW4gcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmBzdHJgCitvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLiBUaGlzIGhhcyBsZWQgdG8gcGVvcGxlIHdobyB3cml0ZSBjb2RlIHdoaWNoCitvcGVyYXRlIG9uIGZpbGUgc3lzdGVtIHBhdGhzIHRvIGFzc3VtZSB0aGF0IHN1Y2ggb2JqZWN0cyBhcmUgb25seSBvbmUKK29mIHRob3NlIHR3byB0eXBlcyAoYW4gOmNsYXNzOmBpbnRgIHJlcHJlc2VudGluZyBhIGZpbGUgZGVzY3JpcHRvcgorZG9lcyBub3QgY291bnQgYXMgdGhhdCBpcyBub3QgYSBmaWxlIHBhdGgpLiBVbmZvcnR1bmF0ZWx5IHRoYXQKK2Fzc3VtcHRpb24gcHJldmVudHMgYWx0ZXJuYXRpdmUgb2JqZWN0IHJlcHJlc2VudGF0aW9ucyBvZiBmaWxlIHN5c3RlbQorcGF0aHMgbGlrZSA6bW9kOmBwYXRobGliYCBmcm9tIHdvcmtpbmcgd2l0aCBwcmUtZXhpc3RpbmcgY29kZSwKK2luY2x1ZGluZyBQeXRob24ncyBzdGFuZGFyZCBsaWJyYXJ5LgorCitUbyBmaXggdGhpcyBzaXR1YXRpb24sIGEgbmV3IGludGVyZmFjZSByZXByZXNlbnRlZCBieQorOmNsYXNzOmBvcy5QYXRoTGlrZWAgaGFzIGJlZW4gZGVmaW5lZC4gQnkgaW1wbGVtZW50aW5nIHRoZQorOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBtZXRob2QsIGFuIG9iamVjdCBzaWduYWxzIHRoYXQgaXQKK3JlcHJlc2VudHMgYSBwYXRoLiBBbiBvYmplY3QgY2FuIHRoZW4gcHJvdmlkZSBhIGxvdy1sZXZlbAorcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIHN5c3RlbSBwYXRoIGFzIGEgOmNsYXNzOmBzdHJgIG9yCis6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuIFRoaXMgbWVhbnMgYW4gb2JqZWN0IGlzIGNvbnNpZGVyZWQKKzp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCBpZiBpdCBpbXBsZW1lbnRzCis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBvciBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QKK3doaWNoIHJlcHJlc2VudHMgYSBmaWxlIHN5c3RlbSBwYXRoLiBDb2RlIGNhbiB1c2UgOmZ1bmM6YG9zLmZzcGF0aGAsCis6ZnVuYzpgb3MuZnNkZWNvZGVgLCBvciA6ZnVuYzpgb3MuZnNlbmNvZGVgIHRvIGV4cGxpY2l0bHkgZ2V0IGEKKzpjbGFzczpgc3RyYCBhbmQvb3IgOmNsYXNzOmBieXRlc2AgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2UKK29iamVjdC4KKworVGhlIGJ1aWx0LWluIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGFjY2VwdAorOmNsYXNzOmBvcy5QYXRoTGlrZWAgb2JqZWN0cywgYXMgaGF2ZSBhbGwgcmVsZXZhbnQgZnVuY3Rpb25zIGluIHRoZQorOm1vZDpgb3NgIGFuZCA6bW9kOmBvcy5wYXRoYCBtb2R1bGVzLCBhbmQgbW9zdCBvdGhlciBmdW5jdGlvbnMgYW5kCitjbGFzc2VzIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIDpjbGFzczpgb3MuRGlyRW50cnlgIGNsYXNzCithbmQgcmVsZXZhbnQgY2xhc3NlcyBpbiA6bW9kOmBwYXRobGliYCBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvCitpbXBsZW1lbnQgOmNsYXNzOmBvcy5QYXRoTGlrZWAuCisKK1RoZSBob3BlIGlzIHRoYXQgdXBkYXRpbmcgdGhlIGZ1bmRhbWVudGFsIGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nCitvbiBmaWxlIHN5c3RlbSBwYXRocyB3aWxsIGxlYWQgdG8gdGhpcmQtcGFydHkgY29kZSB0byBpbXBsaWNpdGx5CitzdXBwb3J0IGFsbCA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YCB3aXRob3V0IGFueQorY29kZSBjaGFuZ2VzLCBvciBhdCBsZWFzdCB2ZXJ5IG1pbmltYWwgb25lcyAoZS5nLiBjYWxsaW5nCis6ZnVuYzpgb3MuZnNwYXRoYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGNvZGUgYmVmb3JlIG9wZXJhdGluZyBvbiBhCitwYXRoLWxpa2Ugb2JqZWN0KS4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBob3cgdGhlIG5ldyBpbnRlcmZhY2UgYWxsb3dzIGZvcgorOmNsYXNzOmBwYXRobGliLlBhdGhgIHRvIGJlIHVzZWQgbW9yZSBlYXNpbHkgYW5kIHRyYW5zcGFyZW50bHkgd2l0aAorcHJlLWV4aXN0aW5nIGNvZGU6OgorCisgID4+PiBpbXBvcnQgcGF0aGxpYgorICA+Pj4gd2l0aCBvcGVuKHBhdGhsaWIuUGF0aCgiUkVBRE1FIikpIGFzIGY6CisgIC4uLiAgICAgY29udGVudHMgPSBmLnJlYWQoKQorICAuLi4KKyAgPj4+IGltcG9ydCBvcy5wYXRoCisgID4+PiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAoJ3NvbWVfZmlsZScsICcudHh0JykKKyAgPj4+IG9zLnBhdGguam9pbigiL2EvYiIsIHBhdGhsaWIuUGF0aCgiYyIpKQorICAnL2EvYi9jJworICA+Pj4gaW1wb3J0IG9zCisgID4+PiBvcy5mc3BhdGgocGF0aGxpYi5QYXRoKCJzb21lX2ZpbGUudHh0IikpCisgICdzb21lX2ZpbGUudHh0JworCisoSW1wbGVtZW50ZWQgYnkgQnJldHQgQ2Fubm9uLCBFdGhhbiBGdXJtYW4sIER1c3R5IFBoaWxsaXBzLCBhbmQgSmVsbGUgWmlqbHN0cmEuKQorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDUxOWAgLS0gQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbAorICAgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiBhbmQgS29vcyBaZXZlbmhvdmVuLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDQ5NToKKworUEVQIDQ5NTogTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBtb3N0IHdvcmxkIGxvY2F0aW9ucywgdGhlcmUgaGF2ZSBiZWVuIGFuZCB3aWxsIGJlIHRpbWVzIHdoZW4gbG9jYWwgY2xvY2tzCithcmUgbW92ZWQgYmFjay4gIEluIHRob3NlIHRpbWVzLCBpbnRlcnZhbHMgYXJlIGludHJvZHVjZWQgaW4gd2hpY2ggbG9jYWwKK2Nsb2NrcyBzaG93IHRoZSBzYW1lIHRpbWUgdHdpY2UgaW4gdGhlIHNhbWUgZGF5LiBJbiB0aGVzZSBzaXR1YXRpb25zLCB0aGUKK2luZm9ybWF0aW9uIGRpc3BsYXllZCBvbiBhIGxvY2FsIGNsb2NrIChvciBzdG9yZWQgaW4gYSBQeXRob24gZGF0ZXRpbWUKK2luc3RhbmNlKSBpcyBpbnN1ZmZpY2llbnQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIG1vbWVudCBpbiB0aW1lLgorCis6cGVwOmA0OTVgIGFkZHMgdGhlIG5ldyAqZm9sZCogYXR0cmlidXRlIHRvIGluc3RhbmNlcyBvZgorOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgZGF0ZXRpbWUudGltZWAgY2xhc3NlcyB0byBkaWZmZXJlbnRpYXRlCitiZXR3ZWVuIHR3byBtb21lbnRzIGluIHRpbWUgZm9yIHdoaWNoIGxvY2FsIHRpbWVzIGFyZSB0aGUgc2FtZTo6CisKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAxMSwgNiwgNCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSwgdC5mb2xkKQorICAgIC4uLgorICAgIDA0OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVEVCAwCisgICAgMDU6MDA6MDAgVVRDID0gMDE6MDA6MDAgRURUIDAKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QgMQorICAgIDA3OjAwOjAwIFVUQyA9IDAyOjAwOjAwIEVTVCAwCisKK1RoZSB2YWx1ZXMgb2YgdGhlIDphdHRyOmBmb2xkIDxkYXRldGltZS5kYXRldGltZS5mb2xkPmAgYXR0cmlidXRlIGhhdmUgdGhlCit2YWx1ZSBgYDBgYCBmb3IgYWxsIGluc3RhbmNlcyBleGNlcHQgdGhvc2UgdGhhdCByZXByZXNlbnQgdGhlIHNlY29uZAorKGNocm9ub2xvZ2ljYWxseSkgbW9tZW50IGluIHRpbWUgaW4gYW4gYW1iaWd1b3VzIGNhc2UuCisKKy4uIHNlZWFsc286OgorCisgIDpwZXA6YDQ5NWAgLS0gTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbgorICAgICBQRVAgd3JpdHRlbiBieSBBbGV4YW5kZXIgQmVsb3BvbHNreSBhbmQgVGltIFBldGVycywgaW1wbGVtZW50YXRpb24KKyAgICAgYnkgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTI5OgorCitQRVAgNTI5OiBDaGFuZ2UgV2luZG93cyBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIFVURi04CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcHJlc2VudGluZyBmaWxlc3lzdGVtIHBhdGhzIGlzIGJlc3QgcGVyZm9ybWVkIHdpdGggc3RyIChVbmljb2RlKSByYXRoZXIgdGhhbgorYnl0ZXMuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgdXNpbmcgYnl0ZXMgaXMgc3VmZmljaWVudCBhbmQKK2NvcnJlY3QuCisKK1ByaW9yIHRvIFB5dGhvbiAzLjYsIGRhdGEgbG9zcyBjb3VsZCByZXN1bHQgd2hlbiB1c2luZyBieXRlcyBwYXRocyBvbiBXaW5kb3dzLgorV2l0aCB0aGlzIGNoYW5nZSwgdXNpbmcgYnl0ZXMgdG8gcmVwcmVzZW50IHBhdGhzIGlzIG5vdyBzdXBwb3J0ZWQgb24gV2luZG93cywKK3Byb3ZpZGVkIHRob3NlIGJ5dGVzIGFyZSBlbmNvZGVkIHdpdGggdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5Cis6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpYCwgd2hpY2ggbm93IGRlZmF1bHRzIHRvIGBgJ3V0Zi04J2BgLgorCitBcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgdXNlIHN0ciB0byByZXByZXNlbnQgcGF0aHMgc2hvdWxkIHVzZQorOmZ1bmM6YG9zLmZzZW5jb2RlKClgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGUoKWAgdG8gZW5zdXJlIHRoZWlyIGJ5dGVzIGFyZQorY29ycmVjdGx5IGVuY29kZWQuIFRvIHJldmVydCB0byB0aGUgcHJldmlvdXMgYmVoYXZpb3VyLCBzZXQKKzplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HYCBvciBjYWxsCis6ZnVuYzpgc3lzLl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ2AuCisKK1NlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkaXNjdXNzaW9uIG9mIGNvZGUgbW9kaWZpY2F0aW9ucyB0aGF0CittYXkgYmUgcmVxdWlyZWQuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTI4OgorCitQRVAgNTI4OiBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IGNvbnNvbGUgb24gV2luZG93cyB3aWxsIG5vdyBhY2NlcHQgYWxsIFVuaWNvZGUgY2hhcmFjdGVycyBhbmQKK3Byb3ZpZGUgY29ycmVjdGx5IHJlYWQgc3RyIG9iamVjdHMgdG8gUHl0aG9uIGNvZGUuIGBgc3lzLnN0ZGluYGAsCitgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgbm93IGRlZmF1bHQgdG8gdXRmLTggZW5jb2RpbmcuCisKK1RoaXMgY2hhbmdlIG9ubHkgYXBwbGllcyB3aGVuIHVzaW5nIGFuIGludGVyYWN0aXZlIGNvbnNvbGUsIGFuZCBub3Qgd2hlbgorcmVkaXJlY3RpbmcgZmlsZXMgb3IgcGlwZXMuIFRvIHJldmVydCB0byB0aGUgcHJldmlvdXMgYmVoYXZpb3VyIGZvciBpbnRlcmFjdGl2ZQorY29uc29sZSB1c2UsIHNldCA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElOR2AuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjhgIC0tIENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTgKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBTdGV2ZSBEb3dlci4KKworCisuLiBfd2hhdHNuZXczNi1wZXA1MjA6CisKK1BFUCA1MjA6IFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXR0cmlidXRlcyBpbiBhIGNsYXNzIGRlZmluaXRpb24gYm9keSBoYXZlIGEgbmF0dXJhbCBvcmRlcmluZzogdGhlIHNhbWUKK29yZGVyIGluIHdoaWNoIHRoZSBuYW1lcyBhcHBlYXIgaW4gdGhlIHNvdXJjZS4gIFRoaXMgb3JkZXIgaXMgbm93CitwcmVzZXJ2ZWQgaW4gdGhlIG5ldyBjbGFzcydzIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUuCisKK0Fsc28sIHRoZSBlZmZlY3RpdmUgZGVmYXVsdCBjbGFzcyAqZXhlY3V0aW9uKiBuYW1lc3BhY2UgKHJldHVybmVkIGZyb20KKzpyZWY6YHR5cGUuX19wcmVwYXJlX18oKSA8cHJlcGFyZT5gKSBpcyBub3cgYW4gaW5zZXJ0aW9uLW9yZGVyLXByZXNlcnZpbmcKK21hcHBpbmcuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjBgIC0tIFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXIKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNDY4OgorCitQRVAgNDY4OiBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitgYCoqa3dhcmdzYGAgaW4gYSBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgYW4KK2luc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjhgIC0tIFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEVyaWMgU25vdy4KKworCisuLiBfd2hhdHNuZXczNi1jb21wYWN0ZGljdDoKKworTmV3IDpyZWY6YGRpY3QgPHR5cGVzbWFwcGluZz5gIGltcGxlbWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpyZWY6YGRpY3QgPHR5cGVzbWFwcGluZz5gIHR5cGUgbm93IHVzZXMgYSAiY29tcGFjdCIgcmVwcmVzZW50YXRpb24KK2Jhc2VkIG9uIGBhIHByb3Bvc2FsIGJ5IFJheW1vbmQgSGV0dGluZ2VyCis8aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAxMi1EZWNlbWJlci8xMjMwMjguaHRtbD5gXword2hpY2ggd2FzIGBmaXJzdCBpbXBsZW1lbnRlZCBieSBQeVB5Cis8aHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWw+YF8uCitUaGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBuZXcgOmZ1bmM6YGRpY3RgIGlzIGJldHdlZW4gMjAlIGFuZCAyNSUgc21hbGxlcgorY29tcGFyZWQgdG8gUHl0aG9uIDMuNS4KKworVGhlIG9yZGVyLXByZXNlcnZpbmcgYXNwZWN0IG9mIHRoaXMgbmV3IGltcGxlbWVudGF0aW9uIGlzIGNvbnNpZGVyZWQgYW4KK2ltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiAodGhpcyBtYXkgY2hhbmdlIGluCit0aGUgZnV0dXJlLCBidXQgaXQgaXMgZGVzaXJlZCB0byBoYXZlIHRoaXMgbmV3IGRpY3QgaW1wbGVtZW50YXRpb24gaW4KK3RoZSBsYW5ndWFnZSBmb3IgYSBmZXcgcmVsZWFzZXMgYmVmb3JlIGNoYW5naW5nIHRoZSBsYW5ndWFnZSBzcGVjIHRvIG1hbmRhdGUKK29yZGVyLXByZXNlcnZpbmcgc2VtYW50aWNzIGZvciBhbGwgY3VycmVudCBhbmQgZnV0dXJlIFB5dGhvbgoraW1wbGVtZW50YXRpb25zOyB0aGlzIGFsc28gaGVscHMgcHJlc2VydmUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKK3dpdGggb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxhbmd1YWdlIHdoZXJlIHJhbmRvbSBpdGVyYXRpb24gb3JkZXIgaXMKK3N0aWxsIGluIGVmZmVjdCwgZS5nLiBQeXRob24gMy41KS4KKworKENvbnRyaWJ1dGVkIGJ5IElOQURBIE5hb2tpIGluIDppc3N1ZTpgMjczNTBgLiBJZGVhCitgb3JpZ2luYWxseSBzdWdnZXN0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIKKzxodHRwczovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDEyLURlY2VtYmVyLzEyMzAyOC5odG1sPmBfLikKKworCisuLiBfd2hhdHNuZXczNi1wZXA1MjM6CisKK1BFUCA1MjM6IEFkZGluZyBhIGZyYW1lIGV2YWx1YXRpb24gQVBJIHRvIENQeXRob24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbGUgUHl0aG9uIHByb3ZpZGVzIGV4dGVuc2l2ZSBzdXBwb3J0IHRvIGN1c3RvbWl6ZSBob3cgY29kZQorZXhlY3V0ZXMsIG9uZSBwbGFjZSBpdCBoYXMgbm90IGRvbmUgc28gaXMgaW4gdGhlIGV2YWx1YXRpb24gb2YgZnJhbWUKK29iamVjdHMuICBJZiB5b3Ugd2FudGVkIHNvbWUgd2F5IHRvIGludGVyY2VwdCBmcmFtZSBldmFsdWF0aW9uIGluCitQeXRob24gdGhlcmUgcmVhbGx5IHdhc24ndCBhbnkgd2F5IHdpdGhvdXQgZGlyZWN0bHkgbWFuaXB1bGF0aW5nCitmdW5jdGlvbiBwb2ludGVycyBmb3IgZGVmaW5lZCBmdW5jdGlvbnMuCisKKzpwZXA6YDUyM2AgY2hhbmdlcyB0aGlzIGJ5IHByb3ZpZGluZyBhbiBBUEkgdG8gbWFrZSBmcmFtZQorZXZhbHVhdGlvbiBwbHVnZ2FibGUgYXQgdGhlIEMgbGV2ZWwuIFRoaXMgd2lsbCBhbGxvdyBmb3IgdG9vbHMgc3VjaAorYXMgZGVidWdnZXJzIGFuZCBKSVRzIHRvIGludGVyY2VwdCBmcmFtZSBldmFsdWF0aW9uIGJlZm9yZSB0aGUKK2V4ZWN1dGlvbiBvZiBQeXRob24gY29kZSBiZWdpbnMuIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIGFsdGVybmF0aXZlCitldmFsdWF0aW9uIGltcGxlbWVudGF0aW9ucyBmb3IgUHl0aG9uIGNvZGUsIHRyYWNraW5nIGZyYW1lCitldmFsdWF0aW9uLCBldGMuCisKK1RoaXMgQVBJIGlzIG5vdCBwYXJ0IG9mIHRoZSBsaW1pdGVkIEMgQVBJIGFuZCBpcyBtYXJrZWQgYXMgcHJpdmF0ZSB0bworc2lnbmFsIHRoYXQgdXNhZ2Ugb2YgdGhpcyBBUEkgaXMgZXhwZWN0ZWQgdG8gYmUgbGltaXRlZCBhbmQgb25seQorYXBwbGljYWJsZSB0byB2ZXJ5IHNlbGVjdCwgbG93LWxldmVsIHVzZS1jYXNlcy4gU2VtYW50aWNzIG9mIHRoZQorQVBJIHdpbGwgY2hhbmdlIHdpdGggUHl0aG9uIGFzIG5lY2Vzc2FyeS4KKworLi4gc2VlYWxzbzo6CisKKyAgOnBlcDpgNTIzYCAtLSBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCisgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiBhbmQgRGlubyBWaWVobGFuZC4KKworCisuLiBfd2hhdHNuZXczNi1weXRob25tYWxsb2M6CisKK1BZVEhPTk1BTExPQyBlbnZpcm9ubWVudCB2YXJpYWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXcgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbGxvd3Mgc2V0dGluZyB0aGUgUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycyBhbmQgaW5zdGFsbGluZyBkZWJ1ZyBob29rcy4KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIGluc3RhbGwgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG9uIFB5dGhvbgorY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlIHVzaW5nIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAuIEVmZmVjdHMgb2YgZGVidWcgaG9va3M6CisKKyogTmV3bHkgYWxsb2NhdGVkIG1lbW9yeSBpcyBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4Q0JgYAorKiBGcmVlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAKKyogRGV0ZWN0IHZpb2xhdGlvbnMgb2YgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIEFQSS4gRm9yIGV4YW1wbGUsCisgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYnkKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYC4KKyogRGV0ZWN0IHdyaXRlcyBiZWZvcmUgdGhlIHN0YXJ0IG9mIGEgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93cykKKyogRGV0ZWN0IHdyaXRlcyBhZnRlciB0aGUgZW5kIG9mIGEgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3dzKQorKiBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbiBhbGxvY2F0b3IKKyAgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDogOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kCisgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkLgorCitDaGVja2luZyBpZiB0aGUgR0lMIGlzIGhlbGQgaXMgYWxzbyBhIG5ldyBmZWF0dXJlIG9mIFB5dGhvbiAzLjYuCisKK1NlZSB0aGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBmb3IgZGVidWcgaG9va3Mgb24gUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycy4KKworSXQgaXMgbm93IGFsc28gcG9zc2libGUgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGFsbG9jYXRvciBvZgordGhlIEMgbGlicmFyeSBmb3IgYWxsIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgdXNpbmcgYGBQWVRIT05NQUxMT0M9bWFsbG9jYGAuCitUaGlzIGlzIGhlbHBmdWwgd2hlbiB1c2luZyBleHRlcm5hbCBtZW1vcnkgZGVidWdnZXJzIGxpa2UgVmFsZ3JpbmQgb24KK2EgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgbm93IHVzZSB0aGUKKzptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCithbGxvY2F0ZWQuCisKK0V4YW1wbGUgb2YgZmF0YWwgZXJyb3Igb24gYnVmZmVyIG92ZXJmbG93IHVzaW5nCitgYHB5dGhvbjMuNiAtWCB0cmFjZW1hbGxvYz01YGAgKHN0b3JlIDUgZnJhbWVzIGluIHRyYWNlcyk6OgorCisgICAgRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD0weDdmYmNkNDE2NjZmODogQVBJICdvJworICAgICAgICA0IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkCisgICAgICAgIFRoZSA3IHBhZCBieXRlcyBhdCBwLTcgYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLgorICAgICAgICBUaGUgOCBwYWQgYnl0ZXMgYXQgdGFpbD0weDdmYmNkNDE2NjZmYyBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFICgweGZiKToKKyAgICAgICAgICAgIGF0IHRhaWwrMDogMHgwMiAqKiogT1VDSAorICAgICAgICAgICAgYXQgdGFpbCsxOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzI6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrMzogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs0OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzU6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNjogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs3OiAweGZiCisgICAgICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICMxMjMzMzI5IHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLgorICAgICAgICBEYXRhIGF0IHA6IDFhIDJiIDMwIDAwCisKKyAgICBNZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAKKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDY0OAorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDEyMgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0CisKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IGJhZCB0cmFpbGluZyBwYWQgYnl0ZQorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiY2RiZDMyNzAwIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzIGluIHRlc3RfaGV4CisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDggaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIC4uLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjUxNmAgYW5kIDppc3N1ZTpgMjY1NjRgLikKKworCisuLiBfd2hhdHNuZXczNi10cmFjaW5nOgorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBwcm9iaW5nIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24gY2FuIG5vdyBiZSBidWlsdCBgYC0td2l0aC1kdHJhY2VgYCB3aGljaCBlbmFibGVzIHN0YXRpYyBtYXJrZXJzCitmb3IgdGhlIGZvbGxvd2luZyBldmVudHMgaW4gdGhlIGludGVycHJldGVyOgorCisqIGZ1bmN0aW9uIGNhbGwvcmV0dXJuCisKKyogZ2FyYmFnZSBjb2xsZWN0aW9uIHN0YXJ0ZWQvZmluaXNoZWQKKworKiBsaW5lIG9mIGNvZGUgZXhlY3V0ZWQuCisKK1RoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdHJ1bWVudCBydW5uaW5nIGludGVycHJldGVycyBpbiBwcm9kdWN0aW9uLAord2l0aG91dCB0aGUgbmVlZCB0byByZWNvbXBpbGUgc3BlY2lmaWMgZGVidWcgYnVpbGRzIG9yIHByb3ZpZGluZworYXBwbGljYXRpb24tc3BlY2lmaWMgcHJvZmlsaW5nL2RlYnVnZ2luZyBjb2RlLgorCitNb3JlIGRldGFpbHMgaW4gOnJlZjpgaW5zdHJ1bWVudGF0aW9uYC4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdGVzdGVkIG9uIExpbnV4IGFuZCBtYWNPUy4gIEFkZGl0aW9uYWwKK21hcmtlcnMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKKyhDb250cmlidXRlZCBieSDFgXVrYXN6IExhbmdhIGluIDppc3N1ZTpgMjE1OTBgLCBiYXNlZCBvbiBwYXRjaGVzIGJ5CitKZXPDunMgQ2VhIEF2acOzbiwgRGF2aWQgTWFsY29sbSwgYW5kIE5pa2hpbCBCZW5lc2NoLikKKworCitPdGhlciBMYW5ndWFnZSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgc21hbGxlciBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvcmUgUHl0aG9uIGxhbmd1YWdlIGFyZToKKworKiBBIGBgZ2xvYmFsYGAgb3IgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdyB0ZXh0dWFsbHkgYXBwZWFyCisgIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mIHRoZSBhZmZlY3RlZCBuYW1lIGluIHRoZSBzYW1lIHNjb3BlLgorICBQcmV2aW91c2x5IHRoaXMgd2FzIGEgYGBTeW50YXhXYXJuaW5nYGAuCisKKyogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNldCBhIDpyZWY6YHNwZWNpYWwgbWV0aG9kIDxzcGVjaWFsbmFtZXM+YCB0bworICBgYE5vbmVgYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgorICBGb3IgZXhhbXBsZSwgaWYgYSBjbGFzcyBzZXRzIDptZXRoOmBfX2l0ZXJfX2AgdG8gYGBOb25lYGAsIHRoZSBjbGFzcworICBpcyBub3QgaXRlcmFibGUuCisgIChDb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQgSXZhbiBMZXZraXZza3lpIGluIDppc3N1ZTpgMjU5NThgLikKKworKiBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCB0cmFjZWJhY2sgbGluZXMgYXJlIG5vdyBhYmJyZXZpYXRlZCBhcworICBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgIChzZWUKKyAgOnJlZjpgd2hhdHNuZXczNi10cmFjZWJhY2tgIGZvciBhbiBleGFtcGxlKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNjgyM2AuKQorCisqIEltcG9ydCBub3cgcmFpc2VzIHRoZSBuZXcgZXhjZXB0aW9uIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgCisgIChzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmApIHdoZW4gaXQgY2Fubm90IGZpbmQgYSBtb2R1bGUuICBDb2RlCisgIHRoYXQgY3VycmVudGx5IGNoZWNrcyBmb3IgSW1wb3J0RXJyb3IgKGluIHRyeS1leGNlcHQpIHdpbGwgc3RpbGwgd29yay4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVyaWMgU25vdyBpbiA6aXNzdWU6YDE1NzY3YC4pCisKKyogQ2xhc3MgbWV0aG9kcyByZWx5aW5nIG9uIHplcm8tYXJndW1lbnQgYGBzdXBlcigpYGAgd2lsbCBub3cgd29yayBjb3JyZWN0bHkKKyAgd2hlbiBjYWxsZWQgZnJvbSBtZXRhY2xhc3MgbWV0aG9kcyBkdXJpbmcgY2xhc3MgY3JlYXRpb24uCisgIChDb250cmlidXRlZCBieSBNYXJ0aW4gVGVpY2htYW5uIGluIDppc3N1ZTpgMjM3MjJgLikKKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKworLi4gX3doYXRzbmV3MzYtcGVwNTA2OgorCitzZWNyZXRzCistLS0tLS0tCisKK1RoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIG5ldyA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaXMgdG8gcHJvdmlkZSBhbiBvYnZpb3VzIHdheQordG8gcmVsaWFibHkgZ2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gdmFsdWVzIHN1aXRhYmxlCitmb3IgbWFuYWdpbmcgc2VjcmV0cywgc3VjaCBhcyBhY2NvdW50IGF1dGhlbnRpY2F0aW9uLCB0b2tlbnMsIGFuZCBzaW1pbGFyLgorCisuLiB3YXJuaW5nOjoKKworICBOb3RlIHRoYXQgdGhlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9ycyBpbiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUKKyAgc2hvdWxkICpOT1QqIGJlIHVzZWQgZm9yIHNlY3VyaXR5IHB1cnBvc2VzLiAgVXNlIDptb2Q6YHNlY3JldHNgCisgIG9uIFB5dGhvbiAzLjYrIGFuZCA6ZnVuYzpgb3MudXJhbmRvbSgpYCBvbiBQeXRob24gMy41IGFuZCBlYXJsaWVyLgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDUwNmAgLS0gQWRkaW5nIEEgU2VjcmV0cyBNb2R1bGUgVG8gVGhlIFN0YW5kYXJkIExpYnJhcnkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBTdGV2ZW4gRCdBcHJhbm8uCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithcnJheQorLS0tLS0KKworRXhoYXVzdGVkIGl0ZXJhdG9ycyBvZiA6Y2xhc3M6YGFycmF5LmFycmF5YCB3aWxsIG5vdyBzdGF5IGV4aGF1c3RlZCBldmVuCitpZiB0aGUgaXRlcmF0ZWQgYXJyYXkgaXMgZXh0ZW5kZWQuICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3IKK29mIG90aGVyIG11dGFibGUgc2VxdWVuY2VzLgorCitDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjY0OTJgLgorCithc3QKKy0tLQorCitUaGUgbmV3IDpjbGFzczpgYXN0LkNvbnN0YW50YCBBU1Qgbm9kZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGNhbiBiZSB1c2VkCitieSBleHRlcm5hbCBBU1Qgb3B0aW1pemVycyBmb3IgdGhlIHB1cnBvc2VzIG9mIGNvbnN0YW50IGZvbGRpbmcuCisKK0NvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjYxNDZgLgorCisKK2FzeW5jaW8KKy0tLS0tLS0KKworU3RhcnRpbmcgd2l0aCBQeXRob24gMy42IHRoZSBgYGFzeW5jaW9gYCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHByb3Zpc2lvbmFsIGFuZCBpdHMKK0FQSSBpcyBjb25zaWRlcmVkIHN0YWJsZS4KKworTm90YWJsZSBjaGFuZ2VzIGluIHRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc2luY2UgUHl0aG9uIDMuNS4wCisoYWxsIGJhY2twb3J0ZWQgdG8gMy41LnggZHVlIHRvIHRoZSBwcm92aXNpb25hbCBzdGF0dXMpOgorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uZ2V0X2V2ZW50X2xvb3BgIGZ1bmN0aW9uIGhhcyBiZWVuIGNoYW5nZWQgdG8KKyAgYWx3YXlzIHJldHVybiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgbG9vcCB3aGVuIGNhbGxlZCBmcm9tIGNvdXJvdXRpbmVzCisgIGFuZCBjYWxsYmFja3MuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI4NjEzYC4pCisKKyogVGhlIDpmdW5jOmB+YXN5bmNpby5lbnN1cmVfZnV0dXJlYCBmdW5jdGlvbiBhbmQgYWxsIGZ1bmN0aW9ucyB0aGF0CisgIHVzZSBpdCwgc3VjaCBhcyA6bWV0aDpgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLnJ1bl91bnRpbF9jb21wbGV0ZT5gLAorICBub3cgYWNjZXB0IGFsbCBraW5kcyBvZiA6dGVybTpgYXdhaXRhYmxlIG9iamVjdHMgPGF3YWl0YWJsZT5gLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6ZnVuYzpgfmFzeW5jaW8ucnVuX2Nvcm91dGluZV90aHJlYWRzYWZlYCBmdW5jdGlvbiB0byBzdWJtaXQKKyAgY29yb3V0aW5lcyB0byBldmVudCBsb29wcyBmcm9tIG90aGVyIHRocmVhZHMuCisgIChDb250cmlidXRlZCBieSBWaW5jZW50IE1pY2hlbC4pCisKKyogTmV3IDptZXRoOmBUcmFuc3BvcnQuaXNfY2xvc2luZygpIDxhc3luY2lvLkJhc2VUcmFuc3BvcnQuaXNfY2xvc2luZz5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgdHJhbnNwb3J0IGlzIGNsb3Npbmcgb3IgY2xvc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5jcmVhdGVfc2VydmVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyPmAKKyAgbWV0aG9kIGNhbiBub3cgYWNjZXB0IGEgbGlzdCBvZiBob3N0cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFlhbm4gU2lvbm5lYXUuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5jcmVhdGVfZnV0dXJlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfZnV0dXJlPmAKKyAgbWV0aG9kIHRvIGNyZWF0ZSBGdXR1cmUgb2JqZWN0cy4gIFRoaXMgYWxsb3dzIGFsdGVybmF0aXZlIGV2ZW50CisgIGxvb3AgaW1wbGVtZW50YXRpb25zLCBzdWNoIGFzCisgIGB1dmxvb3AgPGh0dHBzOi8vZ2l0aHViLmNvbS9NYWdpY1N0YWNrL3V2bG9vcD5gXywgdG8gcHJvdmlkZSBhIGZhc3RlcgorICA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRhdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjcwNDFgLikKKworKiBOZXcgOm1ldGg6YGxvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRfZXhjZXB0aW9uX2hhbmRsZXI+YAorICBtZXRob2QgdG8gZ2V0IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiBoYW5kbGVyLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNzA0MGAuKQorCisqIE5ldyA6bWV0aDpgU3RyZWFtUmVhZGVyLnJlYWR1bnRpbCgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkdW50aWw+YAorICBtZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBhIHNlcGFyYXRvciBieXRlcworICBzZXF1ZW5jZSBhcHBlYXJzLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcuKQorCisqIFRoZSBwZXJmb3JtYW5jZSBvZiA6bWV0aDpgU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5KCkgPGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5PmAKKyAgaGFzIGJlZW4gaW1wcm92ZWQuCisgIChDb250cmlidXRlZCBieSBNYXJrIEtvcmVuYmVyZyBpbiA6aXNzdWU6YDI4MzcwYC4pCisKKyogVGhlIDptZXRoOmBsb29wLmdldGFkZHJpbmZvKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRhZGRyaW5mbz5gCisgIG1ldGhvZCBpcyBvcHRpbWl6ZWQgdG8gYXZvaWQgY2FsbGluZyB0aGUgc3lzdGVtIGBgZ2V0YWRkcmluZm9gYAorICBmdW5jdGlvbiBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IHJlc29sdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5zdG9wKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5zdG9wPmAKKyAgbWV0aG9kIGhhcyBiZWVuIGNoYW5nZWQgdG8gc3RvcCB0aGUgbG9vcCBpbW1lZGlhdGVseSBhZnRlcgorICB0aGUgY3VycmVudCBpdGVyYXRpb24uICBBbnkgbmV3IGNhbGxiYWNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQKKyAgb2YgdGhlIGxhc3QgaXRlcmF0aW9uIHdpbGwgYmUgZGlzY2FyZGVkLgorICAoQ29udHJpYnV0ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bSBpbiA6aXNzdWU6YDI1NTkzYC4pCisKKyogOm1ldGg6YEZ1dHVyZS5zZXRfZXhjZXB0aW9uIDxhc3luY2lvLmZ1dHVyZXMuRnV0dXJlLnNldF9leGNlcHRpb24+YAorICB3aWxsIG5vdyByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIHdoZW4gcGFzc2VkIGFuIGluc3RhbmNlIG9mCisgIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24uCisgIChDb250cmlidXRlZCBieSBDaHJpcyBBbmdlbGljbyBpbiA6aXNzdWU6YDI2MjIxYC4pCisKKyogTmV3IDptZXRoOmBsb29wLmNvbm5lY3RfYWNjZXB0ZWRfc29ja2V0KCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldD5gCisgIG1ldGhvZCB0byBiZSB1c2VkIGJ5IHNlcnZlcnMgdGhhdCBhY2NlcHQgY29ubmVjdGlvbnMgb3V0c2lkZSBvZiBhc3luY2lvLAorICBidXQgdGhhdCB1c2UgYXN5bmNpbyB0byBoYW5kbGUgdGhlbS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEppbSBGdWx0b24gaW4gOmlzc3VlOmAyNzM5MmAuKQorCisqIGBgVENQX05PREVMQVlgYCBmbGFnIGlzIG5vdyBzZXQgZm9yIGFsbCBUQ1AgdHJhbnNwb3J0cyBieSBkZWZhdWx0LgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNzQ1NmAuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5zaHV0ZG93bl9hc3luY2dlbnMoKSA8YXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcC5zaHV0ZG93bl9hc3luY2dlbnM+YAorICB0byBwcm9wZXJseSBjbG9zZSBwZW5kaW5nIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzIGJlZm9yZSBjbG9zaW5nIHRoZQorICBsb29wLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyODAwM2AuKQorCisqIDpjbGFzczpgRnV0dXJlIDxhc3luY2lvLkZ1dHVyZT5gIGFuZCA6Y2xhc3M6YFRhc2sgPGFzeW5jaW8uVGFzaz5gCisgIGNsYXNzZXMgbm93IGhhdmUgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gd2hpY2ggbWFrZXMgYXN5bmNpbworICBjb2RlIHVwIHRvIDMwJSBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBhbmQgSU5BREEgTmFva2kgaW4gOmlzc3VlOmAyNjA4MWAKKyAgYW5kIDppc3N1ZTpgMjg1NDRgLikKKworCitiaW5hc2NpaQorLS0tLS0tLS0KKworVGhlIDpmdW5jOmB+YmluYXNjaWkuYjJhX2Jhc2U2NGAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgKm5ld2xpbmUqCitrZXl3b3JkIGFyZ3VtZW50IHRvIGNvbnRyb2wgd2hldGhlciB0aGUgbmV3bGluZSBjaGFyYWN0ZXIgaXMgYXBwZW5kZWQgdG8gdGhlCityZXR1cm4gdmFsdWUuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTM1N2AuKQorCisKK2NtYXRoCistLS0tLQorCitUaGUgbmV3IDpjb25zdDpgY21hdGgudGF1YCAoz4QpIGNvbnN0YW50IGhhcyBiZWVuIGFkZGVkLgorKENvbnRyaWJ1dGVkIGJ5IExpc2EgUm9hY2ggaW4gOmlzc3VlOmAxMjM0NWAsIHNlZSA6cGVwOmA2MjhgIGZvciBkZXRhaWxzLikKKworTmV3IGNvbnN0YW50czogOmNvbnN0OmBjbWF0aC5pbmZgIGFuZCA6Y29uc3Q6YGNtYXRoLm5hbmAgdG8KK21hdGNoIDpjb25zdDpgbWF0aC5pbmZgIGFuZCA6Y29uc3Q6YG1hdGgubmFuYCwgYW5kIGFsc28gOmNvbnN0OmBjbWF0aC5pbmZqYAorYW5kIDpjb25zdDpgY21hdGgubmFuamAgdG8gbWF0Y2ggdGhlIGZvcm1hdCB1c2VkIGJ5IGNvbXBsZXggcmVwci4KKyhDb250cmlidXRlZCBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDIzMjI5YC4pCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKK1RoZSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gIGFic3RyYWN0IGJhc2UgY2xhc3MgaGFzIGJlZW4KK2FkZGVkIHRvIHJlcHJlc2VudCBzaXplZCBpdGVyYWJsZSBjb250YWluZXIgY2xhc3Nlcy4KKyhDb250cmlidXRlZCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyIGluIDppc3N1ZTpgMjc1OThgLikKKworVGhlIG5ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuUmV2ZXJzaWJsZWAgYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRzCitpdGVyYWJsZSBjbGFzc2VzIHRoYXQgYWxzbyBwcm92aWRlIHRoZSA6bWV0aDpgX19yZXZlcnNlZF9fYCBtZXRob2QuCisoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpIGluIDppc3N1ZTpgMjU5ODdgLikKKworVGhlIG5ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXN5bmNHZW5lcmF0b3JgIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50cworYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyODcyMGAuKQorCitUaGUgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBmdW5jdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbAora2V5d29yZCBhcmd1bWVudCAqbW9kdWxlKiwgd2hpY2gsIHdoZW4gc3BlY2lmaWVkLCBpcyB1c2VkIGZvcgordGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgcmV0dXJuZWQgbmFtZWQgdHVwbGUgY2xhc3MuCisoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAxNzk0MWAuKQorCitUaGUgKnZlcmJvc2UqIGFuZCAqcmVuYW1lKiBhcmd1bWVudHMgZm9yCis6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIGFyZSBub3cga2V5d29yZC1vbmx5LgorKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMjU2MjhgLikKKworUmVjdXJzaXZlIDpjbGFzczpgY29sbGVjdGlvbnMuZGVxdWVgIGluc3RhbmNlcyBjYW4gbm93IGJlIHBpY2tsZWQuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2NDgyYC4pCisKKworY29uY3VycmVudC5mdXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgVGhyZWFkUG9vbEV4ZWN1dG9yIDxjb25jdXJyZW50LmZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yPmAKK2NsYXNzIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICp0aHJlYWRfbmFtZV9wcmVmaXgqIGFyZ3VtZW50Cit0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGN1c3RvbWl6ZSB0aGUgbmFtZXMgb2YgdGhlIHRocmVhZHMgY3JlYXRlZCBieSB0aGUKK3Bvb2wuCisoQ29udHJpYnV0ZWQgYnkgR3JlZ29yeSBQLiBTbWl0aCBpbiA6aXNzdWU6YDI3NjY0YC4pCisKKworY29udGV4dGxpYgorLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIHRvCitwcm92aWRlIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbnRleHQgbWFuYWdlcnMuICBJdCBwcm92aWRlcyBhCitzZW5zaWJsZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBgX19lbnRlcl9fKClgIHdoaWNoIHJldHVybnMKK2Bgc2VsZmBgIGFuZCBsZWF2ZXMgYF9fZXhpdF9fKClgIGFuIGFic3RyYWN0IG1ldGhvZC4gIEEgbWF0Y2hpbmcKK2NsYXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSBhcworOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgLgorKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NjA5YC4pCisKKworZGF0ZXRpbWUKKy0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgfmRhdGV0aW1lLnRpbWVgIGNsYXNzZXMgaGF2ZQordGhlIG5ldyA6YXR0cjpgfnRpbWUuZm9sZGAgYXR0cmlidXRlIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGxvY2FsIHRpbWUKK3doZW4gbmVjZXNzYXJ5LiAgTWFueSBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YGRhdGV0aW1lYCBoYXZlIGJlZW4KK3VwZGF0ZWQgdG8gc3VwcG9ydCBsb2NhbCB0aW1lIGRpc2FtYmlndWF0aW9uLgorU2VlIDpyZWY6YExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24gPHdoYXRzbmV3MzYtcGVwNDk1PmAgc2VjdGlvbiBmb3IgbW9yZQoraW5mb3JtYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIEJlbG9wb2xza3kgaW4gOmlzc3VlOmAyNDc3M2AuKQorCitUaGUgOm1ldGg6YGRhdGV0aW1lLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGV0aW1lLnN0cmZ0aW1lPmAgYW5kCis6bWV0aDpgZGF0ZS5zdHJmdGltZSgpIDxkYXRldGltZS5kYXRlLnN0cmZ0aW1lPmAgbWV0aG9kcyBub3cgc3VwcG9ydAorSVNPIDg2MDEgZGF0ZSBkaXJlY3RpdmVzIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAuCisoQ29udHJpYnV0ZWQgYnkgQXNobGV5IEFuZGVyc29uIGluIDppc3N1ZTpgMTIwMDZgLikKKworVGhlIDpmdW5jOmBkYXRldGltZS5pc29mb3JtYXQoKSA8ZGF0ZXRpbWUuZGF0ZXRpbWUuaXNvZm9ybWF0PmAgZnVuY3Rpb24KK25vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICp0aW1lc3BlYyogYXJndW1lbnQgdGhhdCBzcGVjaWZpZXMgdGhlIG51bWJlcgorb2YgYWRkaXRpb25hbCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHZhbHVlIHRvIGluY2x1ZGUuCisoQ29udHJpYnV0ZWQgYnkgQWxlc3NhbmRybyBDdWNjaSBhbmQgQWxleGFuZGVyIEJlbG9wb2xza3kgaW4gOmlzc3VlOmAxOTQ3NWAuKQorCitUaGUgOm1ldGg6YGRhdGV0aW1lLmNvbWJpbmUoKSA8ZGF0ZXRpbWUuZGF0ZXRpbWUuY29tYmluZT5gIG5vdworYWNjZXB0cyBhbiBvcHRpb25hbCAqdHppbmZvKiBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreSBpbiA6aXNzdWU6YDI3NjYxYC4pCisKKworZGVjaW1hbAorLS0tLS0tLQorCitOZXcgOm1ldGg6YERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIDxkZWNpbWFsLkRlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbz5gCittZXRob2QgdGhhdCByZXR1cm5zIGEgcGFpciBgYChuLCBkKWBgIG9mIGludGVnZXJzIHRoYXQgcmVwcmVzZW50IHRoZSBnaXZlbgorOmNsYXNzOmB+ZGVjaW1hbC5EZWNpbWFsYCBpbnN0YW5jZSBhcyBhIGZyYWN0aW9uLCBpbiBsb3dlc3QgdGVybXMgYW5kCit3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3I6OgorCisgICAgPj4+IERlY2ltYWwoJy0zLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgKC0xNTcsIDUwKQorCisoQ29udHJpYnV0ZWQgYnkgU3RlZmFuIEtyYWggYW1kIE1hcmsgRGlja2luc29uIGluIDppc3N1ZTpgMjU5MjhgLikKKworCisKK2Rpc3R1dGlscworLS0tLS0tLS0tCisKK1RoZSBgYGRlZmF1bHRfZm9ybWF0YGAgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbQorOmNsYXNzOmBkaXN0dXRpbHMuY29tbWFuZC5zZGlzdC5zZGlzdGAgYW5kIHRoZSBgYGZvcm1hdHNgYAorYXR0cmlidXRlIGRlZmF1bHRzIHRvIGBgWydnenRhciddYGAuIEFsdGhvdWdoIG5vdCBhbnRpY2lwYXRlZCwKK2FueSBjb2RlIHJlbHlpbmcgb24gdGhlIHByZXNlbmNlIG9mIGBgZGVmYXVsdF9mb3JtYXRgYCBtYXkKK25lZWQgdG8gYmUgYWRhcHRlZC4gU2VlIDppc3N1ZTpgMjc4MTlgIGZvciBtb3JlIGRldGFpbHMuCisKKworZW1haWwKKy0tLS0tCisKK1RoZSBuZXcgZW1haWwgQVBJLCBlbmFibGVkIHZpYSB0aGUgKnBvbGljeSoga2V5d29yZCB0byB2YXJpb3VzIGNvbnN0cnVjdG9ycywgaXMKK25vIGxvbmdlciBwcm92aXNpb25hbC4gIFRoZSA6bW9kOmBlbWFpbGAgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiByZW9yZ2FuaXplZCBhbmQKK3Jld3JpdHRlbiB0byBmb2N1cyBvbiB0aGUgbmV3IEFQSSwgd2hpbGUgcmV0YWluaW5nIHRoZSBvbGQgZG9jdW1lbnRhdGlvbiBmb3IKK3RoZSBsZWdhY3kgQVBJLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBpbiA6aXNzdWU6YDI0Mjc3YC4pCisKK1RoZSA6bW9kOmBlbWFpbC5taW1lYCBjbGFzc2VzIG5vdyBhbGwgYWNjZXB0IGFuIG9wdGlvbmFsICpwb2xpY3kqIGtleXdvcmQuCisoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDI3MzMxYC4pCisKK1RoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgbm93IHN1cHBvcnRzIHRoZSAqcG9saWN5Kgora2V5d29yZC4KKworVGhlcmUgaXMgYSBuZXcgOm1vZDpgfmVtYWlsLnBvbGljeWAgYXR0cmlidXRlLAorOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAsIHRoYXQgY29udHJvbHMgd2hhdCBjbGFzcyBpcyB1c2VkCitieSBkZWZhdWx0IHdoZW4gdGhlIHBhcnNlciBjcmVhdGVzIG5ldyBtZXNzYWdlIG9iamVjdHMuICBGb3IgdGhlCis6YXR0cjpgZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgdGhpcyBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLAorZm9yIHRoZSBuZXcgcG9saWNpZXMgaXQgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLgorKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBpbiA6aXNzdWU6YDIwNDc2YC4pCisKKworZW5jb2RpbmdzCistLS0tLS0tLS0KKworT24gV2luZG93cywgYWRkZWQgdGhlIGBgJ29lbSdgYCBlbmNvZGluZyB0byB1c2UgYGBDUF9PRU1DUGBgLCBhbmQgdGhlIGBgJ2Fuc2knYGAKK2FsaWFzIGZvciB0aGUgZXhpc3RpbmcgYGAnbWJjcydgYCBlbmNvZGluZywgd2hpY2ggdXNlcyB0aGUgYGBDUF9BQ1BgYCBjb2RlIHBhZ2UuCisoQ29udHJpYnV0ZWQgYnkgU3RldmUgRG93ZXIgaW4gOmlzc3VlOmAyNzk1OWAuKQorCisKK2VudW0KKy0tLS0KKworVHdvIG5ldyBlbnVtZXJhdGlvbiBiYXNlIGNsYXNzZXMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBlbnVtYCBtb2R1bGU6Cis6Y2xhc3M6YH5lbnVtLkZsYWdgIGFuZCA6Y2xhc3M6YH5lbnVtLkludEZsYWdzYC4gIEJvdGggYXJlIHVzZWQgdG8gZGVmaW5lCitjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzLgorKENvbnRyaWJ1dGVkIGJ5IEV0aGFuIEZ1cm1hbiBpbiA6aXNzdWU6YDIzNTkxYC4pCisKK01hbnkgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUKKzpjbGFzczpgfmVudW0uSW50RmxhZ3NgIGNsYXNzIGZvciB0aGVpciBjb25zdGFudHMuCisKK1RoZSBuZXcgOmNsYXNzOmBlbnVtLmF1dG9gIHZhbHVlIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gZW51bQorbWVtYmVycyBhdXRvbWF0aWNhbGx5OjoKKworICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0sIGF1dG8KKyAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6CisgICAgLi4uICAgICByZWQgPSBhdXRvKCkKKyAgICAuLi4gICAgIGJsdWUgPSBhdXRvKCkKKyAgICAuLi4gICAgIGdyZWVuID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoQ29sb3IpCisgICAgWzxDb2xvci5yZWQ6IDE+LCA8Q29sb3IuYmx1ZTogMj4sIDxDb2xvci5ncmVlbjogMz5dCisKKworZmF1bHRoYW5kbGVyCistLS0tLS0tLS0tLS0KKworT24gV2luZG93cywgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlIG5vdyBpbnN0YWxscyBhIGhhbmRsZXIgZm9yIFdpbmRvd3MKK2V4Y2VwdGlvbnM6IHNlZSA6ZnVuYzpgZmF1bHRoYW5kbGVyLmVuYWJsZWAuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyMzg0OGAuKQorCisKK2ZpbGVpbnB1dAorLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZGAgbm93IHN1cHBvcnRzIHRoZSAqZXJyb3JzKiBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBKb3NlcGggSGFja21hbiBpbiA6aXNzdWU6YDI1Nzg4YC4pCisKKworaGFzaGxpYgorLS0tLS0tLQorCis6bW9kOmBoYXNobGliYCBzdXBwb3J0cyBPcGVuU1NMIDEuMS4wLiAgVGhlIG1pbmltdW0gcmVjb21tZW5kIHZlcnNpb24gaXMgMS4wLjIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2NDcwYC4pCisKK0JMQUtFMiBoYXNoIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSBtb2R1bGUuIDpmdW5jOmB+aGFzaGxpYi5ibGFrZTJiYAorYW5kIDpmdW5jOmB+aGFzaGxpYi5ibGFrZTJzYCBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhbmQgc3VwcG9ydCB0aGUgZnVsbAorZmVhdHVyZSBzZXQgb2YgQkxBS0UyLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjc5OGAgYmFzZWQgb24gY29kZSBieQorRG1pdHJ5IENoZXN0bnlraCBhbmQgU2FtdWVsIE5ldmVzLiBEb2N1bWVudGF0aW9uIHdyaXR0ZW4gYnkgRG1pdHJ5IENoZXN0bnlraC4pCisKK1RoZSBTSEEtMyBoYXNoIGZ1bmN0aW9ucyA6ZnVuYzpgfmhhc2hsaWIuc2hhM18yMjRgLCA6ZnVuYzpgfmhhc2hsaWIuc2hhM18yNTZgLAorOmZ1bmM6YH5oYXNobGliLnNoYTNfMzg0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfNTEyYCwgYW5kIFNIQUtFIGhhc2ggZnVuY3Rpb25zCis6ZnVuYzpgfmhhc2hsaWIuc2hha2VfMTI4YCBhbmQgOmZ1bmM6YH5oYXNobGliLnNoYWtlXzI1NmAgd2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTYxMTNgLiBLZWNjYWsgQ29kZSBQYWNrYWdlCitieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUsIGFuZAorUm9ubnkgVmFuIEtlZXIuKQorCitUaGUgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gOmZ1bmM6YH5oYXNobGliLnNjcnlwdGAgaXMgbm93CithdmFpbGFibGUgd2l0aCBPcGVuU1NMIDEuMS4wIGFuZCBuZXdlci4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc5MjhgLikKKworaHR0cC5jbGllbnQKKy0tLS0tLS0tLS0tCisKKzptZXRoOmBIVFRQQ29ubmVjdGlvbi5yZXF1ZXN0KCkgPGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3Q+YCBhbmQKKzptZXRoOmB+aHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVyc2AgYm90aCBub3cgc3VwcG9ydAorY2h1bmtlZCBlbmNvZGluZyByZXF1ZXN0IGJvZGllcy4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBSb2xmIEtyYWhsIGluIDppc3N1ZTpgMTIzMTlgLikKKworCitpZGxlbGliIGFuZCBJRExFCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpZGxlbGliIHBhY2thZ2UgaXMgYmVpbmcgbW9kZXJuaXplZCBhbmQgcmVmYWN0b3JlZCB0byBtYWtlIElETEUgbG9vayBhbmQKK3dvcmsgYmV0dGVyIGFuZCB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kLCB0ZXN0LCBhbmQgaW1wcm92ZS4gUGFydAorb2YgbWFraW5nIElETEUgbG9vayBiZXR0ZXIsIGVzcGVjaWFsbHkgb24gTGludXggYW5kIE1hYywgaXMgdXNpbmcgdHRrIHdpZGdldHMsCittb3N0bHkgaW4gdGhlIGRpYWxvZ3MuICBBcyBhIHJlc3VsdCwgSURMRSBubyBsb25nZXIgcnVucyB3aXRoIHRjbC90ayA4LjQuICBJdAorbm93IHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgOC42LiAgV2UgcmVjb21tZW5kIHJ1bm5pbmcgdGhlIGxhdGVzdCByZWxlYXNlIG9mCitlaXRoZXIuCisKKydNb2Rlcm5pemluZycgaW5jbHVkZXMgcmVuYW1pbmcgYW5kIGNvbnNvbGlkYXRpb24gb2YgaWRsZWxpYiBtb2R1bGVzLiBUaGUKK3JlbmFtaW5nIG9mIGZpbGVzIHdpdGggcGFydGlhbCB1cHBlcmNhc2UgbmFtZXMgaXMgc2ltaWxhciB0byB0aGUgcmVuYW1pbmcgb2YsCitmb3IgaW5zdGFuY2UsIFRraW50ZXIgYW5kIFRrRm9udCB0byB0a2ludGVyIGFuZCB0a2ludGVyLmZvbnQgaW4gMy4wLiAgQXMgYQorcmVzdWx0LCBpbXBvcnRzIG9mIGlkbGVsaWIgZmlsZXMgdGhhdCB3b3JrZWQgaW4gMy41IHdpbGwgdXN1YWxseSBub3Qgd29yayBpbgorMy42LiAgQXQgbGVhc3QgYSBtb2R1bGUgbmFtZSBjaGFuZ2Ugd2lsbCBiZSBuZWVkZWQgKHNlZSBpZGxlbGliL1JFQURNRS50eHQpLAorc29tZXRpbWVzIG1vcmUuICAoTmFtZSBjaGFuZ2VzIGNvbnRyaWJ1dGVkIGJ5IEFsIFN3aWVnYXJ0IGFuZCBUZXJyeSBSZWVkeSBpbgorOmlzc3VlOmAyNDIyNWAuICBNb3N0IGlkbGVsaWIgcGF0Y2hlcyBzaW5jZSBoYXZlIGJlZW4gYW5kIHdpbGwgYmUgcGFydCBvZiB0aGUKK3Byb2Nlc3MuKQorCitJbiBjb21wZW5zYXRpb24sIHRoZSBldmVudHVhbCByZXN1bHQgd2l0aCBiZSB0aGF0IHNvbWUgaWRsZWxpYiBjbGFzc2VzIHdpbGwgYmUKK2Vhc2llciB0byB1c2UsIHdpdGggYmV0dGVyIEFQSXMgYW5kIGRvY3N0cmluZ3MgZXhwbGFpbmluZyB0aGVtLiAgQWRkaXRpb25hbAordXNlZnVsIGluZm9ybWF0aW9uIHdpbGwgYmUgYWRkZWQgdG8gaWRsZWxpYiB3aGVuIGF2YWlsYWJsZS4KKworCitpbXBvcnRsaWIKKy0tLS0tLS0tLQorCitJbXBvcnQgbm93IHJhaXNlcyB0aGUgbmV3IGV4Y2VwdGlvbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYAorKHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCkgd2hlbiBpdCBjYW5ub3QgZmluZCBhIG1vZHVsZS4gIENvZGUKK3RoYXQgY3VycmVudCBjaGVja3MgZm9yIGBgSW1wb3J0RXJyb3JgYCAoaW4gdHJ5LWV4Y2VwdCkgd2lsbCBzdGlsbCB3b3JrLgorKENvbnRyaWJ1dGVkIGJ5IEVyaWMgU25vdyBpbiA6aXNzdWU6YDE1NzY3YC4pCisKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAgbm93IGNhbGxzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG9uIHRoZSB3cmFwcGVkIGxvYWRlciwgcmVtb3ZpbmcgdGhlCityZXN0cmljdGlvbiB0aGF0IDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgIGNvdWxkbid0IGJlIHVzZWQgd2l0aAorOmNsYXNzOmBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyYC4KKworOmZ1bmM6YGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlYCwKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zb3VyY2VfZnJvbV9jYWNoZWAsIGFuZAorOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBub3cgYWNjZXB0IGEKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKworCitpbnNwZWN0CistLS0tLS0tCisKK1RoZSA6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmUoKSA8aW5zcGVjdC5zaWduYXR1cmU+YCBmdW5jdGlvbiBub3cgcmVwb3J0cyB0aGUKK2ltcGxpY2l0IGBgLjBgYCBwYXJhbWV0ZXJzIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgZm9yIGNvbXByZWhlbnNpb24gYW5kCitnZW5lcmF0b3IgZXhwcmVzc2lvbiBzY29wZXMgYXMgaWYgdGhleSB3ZXJlIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGNhbGxlZAorYGBpbXBsaWNpdDBgYC4gKENvbnRyaWJ1dGVkIGJ5IEplbGxlIFppamxzdHJhIGluIDppc3N1ZTpgMTk2MTFgLikKKworVG8gcmVkdWNlIGNvZGUgY2h1cm4gd2hlbiB1cGdyYWRpbmcgZnJvbSBQeXRob24gMi43IGFuZCB0aGUgbGVnYWN5Cis6ZnVuYzpgaW5zcGVjdC5nZXRhcmdzcGVjYCBBUEksIHRoZSBwcmV2aW91c2x5IGRvY3VtZW50ZWQgZGVwcmVjYXRpb24gb2YKKzpmdW5jOmBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjYCBoYXMgYmVlbiByZXZlcnNlZC4gV2hpbGUgdGhpcyBmdW5jdGlvbiBpcworY29udmVuaWVudCBmb3Igc2luZ2xlL3NvdXJjZSBQeXRob24gMi8zIGNvZGUgYmFzZXMsIHRoZSByaWNoZXIKKzpmdW5jOmBpbnNwZWN0LnNpZ25hdHVyZWAgaW50ZXJmYWNlIHJlbWFpbnMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciBuZXcKK2NvZGUuIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4gaW4gOmlzc3VlOmAyNzE3MmApCisKKworanNvbgorLS0tLQorCis6ZnVuYzpganNvbi5sb2FkYCBhbmQgOmZ1bmM6YGpzb24ubG9hZHNgIG5vdyBzdXBwb3J0IGJpbmFyeSBpbnB1dC4gIEVuY29kZWQKK0pTT04gc2hvdWxkIGJlIHJlcHJlc2VudGVkIHVzaW5nIGVpdGhlciBVVEYtOCwgVVRGLTE2LCBvciBVVEYtMzIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE3OTA5YC4pCisKKworbG9nZ2luZworLS0tLS0tLQorCitUaGUgbmV3IDptZXRoOmBXYXRjaGVkRmlsZUhhbmRsZXIucmVvcGVuSWZOZWVkZWQoKSA8bG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIucmVvcGVuSWZOZWVkZWQ+YAorbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIGFkZCB0aGUgYWJpbGl0eSB0byBjaGVjayBpZiB0aGUgbG9nIGZpbGUgbmVlZHMgdG8KK2JlIHJlb3BlbmVkLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhbiBIb3JiYW4gaW4gOmlzc3VlOmAyNDg4NGAuKQorCisKK21hdGgKKy0tLS0KKworVGhlIHRhdSAoz4QpIGNvbnN0YW50IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBtYXRoYCBhbmQgOm1vZDpgY21hdGhgCittb2R1bGVzLgorKENvbnRyaWJ1dGVkIGJ5IExpc2EgUm9hY2ggaW4gOmlzc3VlOmAxMjM0NWAsIHNlZSA6cGVwOmA2MjhgIGZvciBkZXRhaWxzLikKKworCittdWx0aXByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLQorCis6cmVmOmBQcm94eSBPYmplY3RzIDxtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0cz5gIHJldHVybmVkIGJ5Cis6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLk1hbmFnZXJgIGNhbiBub3cgYmUgbmVzdGVkLgorKENvbnRyaWJ1dGVkIGJ5IERhdmluIFBvdHRzIGluIDppc3N1ZTpgNjc2NmAuKQorCisKK29zCistLQorCitTZWUgdGhlIHN1bW1hcnkgb2YgOnJlZjpgUEVQIDUxOSA8d2hhdHNuZXczNi1wZXA1MTk+YCBmb3IgZGV0YWlscyBvbiBob3cgdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMgbm93IHN1cHBvcnQKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCis6ZnVuYzpgfm9zLnNjYW5kaXJgIG5vdyBzdXBwb3J0cyA6Y2xhc3M6YGJ5dGVzYCBwYXRocyBvbiBXaW5kb3dzLgorCitBIG5ldyA6bWV0aDpgfm9zLnNjYW5kaXIuY2xvc2VgIG1ldGhvZCBhbGxvd3MgZXhwbGljaXRseSBjbG9zaW5nIGEKKzpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3IuICBUaGUgOmZ1bmM6YH5vcy5zY2FuZGlyYCBpdGVyYXRvciBub3cKK3N1cHBvcnRzIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4gIElmIGEgOmZ1bmM6YHNjYW5kaXJgCitpdGVyYXRvciBpcyBuZWl0aGVyIGV4aGF1c3RlZCBub3IgZXhwbGljaXRseSBjbG9zZWQgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgCit3aWxsIGJlIGVtaXR0ZWQgaW4gaXRzIGRlc3RydWN0b3IuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1OTk0YC4pCisKK09uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGJsb2NrcyB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sCitpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlIHJhdGlvbmFsZS4KKworVGhlIExpbnV4IGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIChnZXQgcmFuZG9tIGJ5dGVzKSBpcyBub3cgZXhwb3NlZCBhcyB0aGUgbmV3Cis6ZnVuYzpgb3MuZ2V0cmFuZG9tYCBmdW5jdGlvbi4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciwgcGFydCBvZiB0aGUgOnBlcDpgNTI0YCkKKworCitwYXRobGliCistLS0tLS0tCisKKzptb2Q6YHBhdGhsaWJgIG5vdyBzdXBwb3J0cyA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNzE4NmAuKQorCitTZWUgdGhlIHN1bW1hcnkgb2YgOnJlZjpgUEVQIDUxOSA8d2hhdHNuZXczNi1wZXA1MTk+YCBmb3IgZGV0YWlscy4KKworCitwZGIKKy0tLQorCitUaGUgOmNsYXNzOmB+cGRiLlBkYmAgY2xhc3MgY29uc3RydWN0b3IgaGFzIGEgbmV3IG9wdGlvbmFsICpyZWFkcmMqIGFyZ3VtZW50Cit0byBjb250cm9sIHdoZXRoZXIgYGAucGRicmNgYCBmaWxlcyBzaG91bGQgYmUgcmVhZC4KKworCitwaWNrbGUKKy0tLS0tLQorCitPYmplY3RzIHRoYXQgbmVlZCBgYF9fbmV3X19gYCBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgY2FzZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDI0MTY0YC4pCisKKworcGlja2xldG9vbHMKKy0tLS0tLS0tLS0tCisKKzpmdW5jOmBwaWNrbGV0b29scy5kaXMoKWAgbm93IG91dHB1dHMgdGhlIGltcGxpY2l0IG1lbW8gaW5kZXggZm9yIHRoZQorYGBNRU1PSVpFYGAgb3Bjb2RlLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTM4MmAuKQorCisKK3B5ZG9jCistLS0tLQorCitUaGUgOm1vZDpgcHlkb2NgIG1vZHVsZSBoYXMgbGVhcm5lZCB0byByZXNwZWN0IHRoZSBgYE1BTlBBR0VSYGAKK2Vudmlyb25tZW50IHZhcmlhYmxlLgorKENvbnRyaWJ1dGVkIGJ5IE1hdHRoaWFzIEtsb3NlIGluIDppc3N1ZTpgODYzN2AuKQorCis6ZnVuYzpgaGVscGAgYW5kIDptb2Q6YHB5ZG9jYCBjYW4gbm93IGxpc3QgbmFtZWQgdHVwbGUgZmllbGRzIGluIHRoZQorb3JkZXIgdGhleSB3ZXJlIGRlZmluZWQgcmF0aGVyIHRoYW4gYWxwaGFiZXRpY2FsbHkuCisoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAyNDg3OWAuKQorCisKK3JhbmRvbQorLS0tLS0tLQorCitUaGUgbmV3IDpmdW5jOmB+cmFuZG9tLmNob2ljZXNgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGVsZW1lbnRzIG9mCitzcGVjaWZpZWQgc2l6ZSBmcm9tIHRoZSBnaXZlbiBwb3B1bGF0aW9uIHdpdGggb3B0aW9uYWwgd2VpZ2h0cy4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDE4ODQ0YC4pCisKKworcmUKKy0tCisKK0FkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4gIEV4YW1wbGVzOgorYGAnKD9pOnApeXRob24nYGAgbWF0Y2hlcyBgYCdweXRob24nYGAgYW5kIGBgJ1B5dGhvbidgYCwgYnV0IG5vdCBgYCdQWVRIT04nYGA7CitgYCcoP2kpZyg/LWk6dilyJ2BgIG1hdGNoZXMgYGAnR3ZSJ2BgIGFuZCBgYCdndnInYGAsIGJ1dCBub3QgYGAnR1ZSJ2BgLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA0MzMwMjhgLikKKworTWF0Y2ggb2JqZWN0IGdyb3VwcyBjYW4gYmUgYWNjZXNzZWQgYnkgYGBfX2dldGl0ZW1fX2BgLCB3aGljaCBpcworZXF1aXZhbGVudCB0byBgYGdyb3VwKClgYC4gIFNvIGBgbW9bJ25hbWUnXWBgIGlzIG5vdyBlcXVpdmFsZW50IHRvCitgYG1vLmdyb3VwKCduYW1lJylgYC4gIChDb250cmlidXRlZCBieSBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjQ0NTRgLikKKworOmNsYXNzOmB+cmUuTWF0Y2hgIG9iamVjdHMgbm93IHN1cHBvcnQKKzptZXRoOmBpbmRleC1saWtlIG9iamVjdHMgPG9iamVjdC5fX2luZGV4X18+YCBhcyBncm91cAoraW5kaWNlcy4KKyhDb250cmlidXRlZCBieSBKZXJvZW4gRGVtZXllciBhbmQgWGlhbmcgWmhhbmcgaW4gOmlzc3VlOmAyNzE3N2AuKQorCisKK3JlYWRsaW5lCistLS0tLS0tLQorCitBZGRlZCA6ZnVuYzpgfnJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnlgIHRvIGVuYWJsZSBvciBkaXNhYmxlCithdXRvbWF0aWMgYWRkaXRpb24gb2YgaW5wdXQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gIChDb250cmlidXRlZCBieQorVHlsZXIgQ3JvbXB0b24gaW4gOmlzc3VlOmAyNjg3MGAuKQorCisKK3JsY29tcGxldGVyCistLS0tLS0tLS0tLQorCitQcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyBub3cgYXJlIG9taXR0ZWQgdW5sZXNzIHRoZSBwcmVmaXggc3RhcnRzCit3aXRoIHVuZGVyc2NvcmVzLiAgQSBzcGFjZSBvciBhIGNvbG9uIGlzIGFkZGVkIGFmdGVyIHNvbWUgY29tcGxldGVkIGtleXdvcmRzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTAxMWAgYW5kIDppc3N1ZTpgMjUyMDlgLikKKworCitzaGxleAorLS0tLS0KKworVGhlIDpjbGFzczpgfnNobGV4LnNobGV4YCBoYXMgbXVjaAorOnJlZjpgaW1wcm92ZWQgc2hlbGwgY29tcGF0aWJpbGl0eSA8aW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eT5gCit0aHJvdWdoIHRoZSBuZXcgKnB1bmN0dWF0aW9uX2NoYXJzKiBhcmd1bWVudCB0byBjb250cm9sIHdoaWNoIGNoYXJhY3RlcnMKK2FyZSB0cmVhdGVkIGFzIHB1bmN0dWF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwIGluIDppc3N1ZTpgMTUyMTk1MGAuKQorCisKK3NpdGUKKy0tLS0KKworV2hlbiBzcGVjaWZ5aW5nIHBhdGhzIHRvIGFkZCB0byA6YXR0cjpgc3lzLnBhdGhgIGluIGEgYC5wdGhgIGZpbGUsCit5b3UgbWF5IG5vdyBzcGVjaWZ5IGZpbGUgcGF0aHMgb24gdG9wIG9mIGRpcmVjdG9yaWVzIChlLmcuIHppcCBmaWxlcykuCisoQ29udHJpYnV0ZWQgYnkgV29sZmdhbmcgTGFuZ25lciBpbiA6aXNzdWU6YDI2NTg3YCkuCisKKworc3FsaXRlMworLS0tLS0tLQorCis6YXR0cjpgc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkYCBub3cgc3VwcG9ydHMgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KKyhDb250cmlidXRlZCBieSBBbGV4IExvcmRUaG9yc2VuIGluIDppc3N1ZTpgMTY4NjRgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgdGhlCis6ZGF0YTpgfnNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYCBjb250cm9sIGNvZGUuCisoQ29udHJpYnV0ZWQgYnkgRGFuaWVsIFN0b2tlcyBpbiA6aXNzdWU6YDI2NTM2YC4pCisKK1RoZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuZ2V0c29ja29wdGAgY29uc3RhbnRzIGBgU09fRE9NQUlOYGAsCitgYFNPX1BST1RPQ09MYGAsIGBgU09fUEVFUlNFQ2BgLCBhbmQgYGBTT19QQVNTU0VDYGAgYXJlIG5vdyBzdXBwb3J0ZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2OTA3YC4pCisKK1RoZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2V0c29ja29wdGAgbm93IHN1cHBvcnRzIHRoZQorYGBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludClgYCBmb3JtLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNzc0NGAuKQorCitUaGUgc29ja2V0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlIGFkZHJlc3MgZmFtaWx5Cis6ZGF0YTpgfnNvY2tldC5BRl9BTEdgIHRvIGludGVyZmFjZSB3aXRoIExpbnV4IEtlcm5lbCBjcnlwdG8gQVBJLiBgYEFMR18qYGAsCitgYFNPTF9BTEdgYCBhbmQgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dfYWZhbGdgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NzQ0YCB3aXRoIHN1cHBvcnQgZnJvbQorVmljdG9yIFN0aW5uZXIuKQorCisKK3NvY2tldHNlcnZlcgorLS0tLS0tLS0tLS0tCisKK1NlcnZlcnMgYmFzZWQgb24gdGhlIDptb2Q6YHNvY2tldHNlcnZlcmAgbW9kdWxlLCBpbmNsdWRpbmcgdGhvc2UKK2RlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKzptb2Q6YHdzZ2lyZWYuc2ltcGxlX3NlcnZlcmAsIG5vdyBzdXBwb3J0IHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYAorcHJvdG9jb2wuCisoQ29udHJpYnV0ZWQgYnkgQXZpdiBQYWxpdm9kYSBpbiA6aXNzdWU6YDI2NDA0YC4pCisKK1RoZSA6YXR0cjpgfnNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgYXR0cmlidXRlIG9mCis6Y2xhc3M6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXJgIGNsYXNzZXMgbm93IGltcGxlbWVudHMKK3RoZSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuICBJbiBwYXJ0aWN1bGFyLAorY2FsbGluZyA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBpcyBub3cgZ3VhcmFudGVlZCB0byBzZW5kIHRoZQorZGF0YSBpbiBmdWxsLiAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAyNjcyMWAuKQorCisKK3NzbAorLS0tCisKKzptb2Q6YHNzbGAgc3VwcG9ydHMgT3BlblNTTCAxLjEuMC4gIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCiszREVTIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3VpdGVzIGFuZCBDaGFDaGEyMCBQb2x5MTMwNQorY2lwaGVyIHN1aXRlcyBoYXZlIGJlZW4gYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3ODUwYCBhbmQgOmlzc3VlOmAyNzc2NmAuKQorCis6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAgaGFzIGJldHRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIG9wdGlvbnMKK2FuZCBjaXBoZXJzLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODA0M2AuKQorCitTU0wgc2Vzc2lvbiBjYW4gYmUgY29waWVkIGZyb20gb25lIGNsaWVudC1zaWRlIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgord2l0aCB0aGUgbmV3IDpjbGFzczpgfnNzbC5TU0xTZXNzaW9uYCBjbGFzcy4gIFRMUyBzZXNzaW9uIHJlc3VtcHRpb24gY2FuCitzcGVlZCB1cCB0aGUgaW5pdGlhbCBoYW5kc2hha2UsIHJlZHVjZSBsYXRlbmN5IGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE5NTAwYCBiYXNlZCBvbiBhIGRyYWZ0IGJ5CitBbGV4IFdhcmhhd2suKQorCitUaGUgbmV3IDptZXRoOmB+c3NsLlNTTENvbnRleHQuZ2V0X2NpcGhlcnNgIG1ldGhvZCBjYW4gYmUgdXNlZCB0bworZ2V0IGEgbGlzdCBvZiBlbmFibGVkIGNpcGhlcnMgaW4gb3JkZXIgb2YgY2lwaGVyIHByaW9yaXR5LgorCitBbGwgY29uc3RhbnRzIGFuZCBmbGFncyBoYXZlIGJlZW4gY29udmVydGVkIHRvIDpjbGFzczpgfmVudW0uSW50RW51bWAgYW5kCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjVgLikKKworU2VydmVyIGFuZCBjbGllbnQtc2lkZSBzcGVjaWZpYyBUTFMgcHJvdG9jb2xzIGZvciA6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAKK3dlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDg1YC4pCisKKworc3RhdGlzdGljcworLS0tLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfnN0YXRpc3RpY3MuaGFybW9uaWNfbWVhbmAgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgU3RldmVuIEQnQXByYW5vIGluIDppc3N1ZTpgMjcxODFgLikKKworCitzdHJ1Y3QKKy0tLS0tLQorCis6bW9kOmBzdHJ1Y3RgIG5vdyBzdXBwb3J0cyBJRUVFIDc1NCBoYWxmLXByZWNpc2lvbiBmbG9hdHMgdmlhIHRoZSBgYCdlJ2BgCitmb3JtYXQgc3BlY2lmaWVyLgorKENvbnRyaWJ1dGVkIGJ5IEVsaSBTdGV2ZW5zLCBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDExNzM0YC4pCisKKworc3VicHJvY2VzcworLS0tLS0tLS0tLQorCis6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nCitpZiB0aGUgY2hpbGQgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nLiBVc2UgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAoYGB3aXRoCitwcm9jOiAuLi5gYCkgb3IgZXhwbGljaXRseSBjYWxsIHRoZSA6bWV0aDpgfnN1YnByb2Nlc3MuUG9wZW4ud2FpdGAgbWV0aG9kIHRvCityZWFkIHRoZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NzQxYC4pCisKK1RoZSA6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGNvbnN0cnVjdG9yIGFuZCBhbGwgZnVuY3Rpb25zIHRoYXQgcGFzcyBhcmd1bWVudHMKK3Rocm91Z2ggdG8gaXQgbm93IGFjY2VwdCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMuIFNwZWNpZnlpbmcgZWl0aGVyCitvZiB0aGVzZSB3aWxsIGVuYWJsZSB0ZXh0IG1vZGUgZm9yIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3RyZWFtcy4KKyhDb250cmlidXRlZCBieSBTdGV2ZSBEb3dlciBpbiA6aXNzdWU6YDYxMzVgLikKKworCitzeXMKKy0tLQorCitUaGUgbmV3IDpmdW5jOmB+c3lzLmdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNgIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5hbWUgb2YKK3RoZSBlcnJvciBtb2RlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFVuaWNvZGUgZmlsZW5hbWVzIGFuZCBieXRlcyBmaWxlbmFtZXMuCisoQ29udHJpYnV0ZWQgYnkgU3RldmUgRG93ZXIgaW4gOmlzc3VlOmAyNzc4MWAuKQorCitPbiBXaW5kb3dzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIDpmdW5jOmB+c3lzLmdldHdpbmRvd3N2ZXJzaW9uYCBmdW5jdGlvbgorbm93IGluY2x1ZGVzIHRoZSAqcGxhdGZvcm1fdmVyc2lvbiogZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIGFjY3VyYXRlIG1ham9yCit2ZXJzaW9uLCBtaW5vciB2ZXJzaW9uIGFuZCBidWlsZCBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSwKK3JhdGhlciB0aGFuIHRoZSB2ZXJzaW9uIHRoYXQgaXMgYmVpbmcgZW11bGF0ZWQgZm9yIHRoZSBwcm9jZXNzCisoQ29udHJpYnV0ZWQgYnkgU3RldmUgRG93ZXIgaW4gOmlzc3VlOmAyNzkzMmAuKQorCisKK3RlbG5ldGxpYgorLS0tLS0tLS0tCisKKzpjbGFzczpgfnRlbG5ldGxpYi5UZWxuZXRgIGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlciAoY29udHJpYnV0ZWQgYnkKK1N0w6lwaGFuZSBXaXJ0ZWwgaW4gOmlzc3VlOmAyNTQ4NWApLgorCisKK3RpbWUKKy0tLS0KKworVGhlIDpjbGFzczpgfnRpbWUuc3RydWN0X3RpbWVgIGF0dHJpYnV0ZXMgOmF0dHI6YHRtX2dtdG9mZmAgYW5kCis6YXR0cjpgdG1fem9uZWAgYXJlIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKworCit0aW1laXQKKy0tLS0tLQorCitUaGUgbmV3IDptZXRoOmBUaW1lci5hdXRvcmFuZ2UoKSA8dGltZWl0LlRpbWVyLmF1dG9yYW5nZT5gIGNvbnZlbmllbmNlCittZXRob2QgaGFzIGJlZW4gYWRkZWQgdG8gY2FsbCA6bWV0aDpgVGltZXIudGltZWl0KCkgPHRpbWVpdC5UaW1lci50aW1laXQ+YAorcmVwZWF0ZWRseSBzbyB0aGF0IHRoZSB0b3RhbCBydW4gdGltZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDIwMCBtaWxsaXNlY29uZHMuCisoQ29udHJpYnV0ZWQgYnkgU3RldmVuIEQnQXByYW5vIGluIDppc3N1ZTpgNjQyMmAuKQorCis6bW9kOmB0aW1laXRgIG5vdyB3YXJucyB3aGVuIHRoZXJlIGlzIHN1YnN0YW50aWFsICg0eCkgdmFyaWFuY2UKK2JldHdlZW4gYmVzdCBhbmQgd29yc3QgdGltZXMuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNTUyYC4pCisKKwordGtpbnRlcgorLS0tLS0tLQorCitBZGRlZCBtZXRob2RzIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9hZGRgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3JlbW92ZWAgYW5kIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9pbmZvYAoraW4gdGhlIDpjbGFzczpgdGtpbnRlci5WYXJpYWJsZWAgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92YXJpYWJsZWAsIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZWAsCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmRlbGV0ZWAgYW5kCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmluZm9gIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKK25vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyMTE1YCkuCisKKworLi4gX3doYXRzbmV3MzYtdHJhY2ViYWNrOgorCit0cmFjZWJhY2sKKy0tLS0tLS0tLQorCitCb3RoIHRoZSB0cmFjZWJhY2sgbW9kdWxlIGFuZCB0aGUgaW50ZXJwcmV0ZXIncyBidWlsdGluIGV4Y2VwdGlvbiBkaXNwbGF5IG5vdworYWJicmV2aWF0ZSBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcyBpbiB0cmFjZWJhY2tzIGFzIHNob3duIGluIHRoZQorZm9sbG93aW5nIGV4YW1wbGU6OgorCisgICAgPj4+IGRlZiBmKCk6IGYoKQorICAgIC4uLgorICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgOTk1IG1vcmUgdGltZXNdCisgICAgUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCisKKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworCit0cmFjZW1hbGxvYworLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgbm93IHN1cHBvcnRzIHRyYWNpbmcgbWVtb3J5IGFsbG9jYXRpb25zIGluCittdWx0aXBsZSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMuCisKK1RoZSBuZXcgOmNsYXNzOmB+dHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyYCBmaWx0ZXIgY2xhc3MgaGFzIGJlZW4gYWRkZWQKK3RvIGZpbHRlciBibG9jayB0cmFjZXMgYnkgdGhlaXIgYWRkcmVzcyBzcGFjZSAoZG9tYWluKS4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY1ODhgLikKKworCisuLiBfd2hhdHNuZXczNi10eXBpbmc6CisKK3R5cGluZworLS0tLS0tCisKK1N0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiB0aGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHByb3Zpc2lvbmFsCithbmQgaXRzIEFQSSBpcyBjb25zaWRlcmVkIHN0YWJsZS4KKworU2luY2UgdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIHdhcyA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gCitpbiBQeXRob24gMy41LCBhbGwgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjYgaGF2ZSBhbHNvIGJlZW4KK2JhY2twb3J0ZWQgdG8gUHl0aG9uIDMuNS54LgorCitUaGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUgaGFzIGEgbXVjaCBpbXByb3ZlZCBzdXBwb3J0IGZvciBnZW5lcmljIHR5cGUKK2FsaWFzZXMuICBGb3IgZXhhbXBsZSBgYERpY3Rbc3RyLCBUdXBsZVtTLCBUXV1gYCBpcyBub3cgYSB2YWxpZAordHlwZSBhbm5vdGF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0gaW4gYEdpdGh1YiAjMTk1Cis8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvcHVsbC8xOTU+YF8uKQorCitUaGUgOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTYwOWAuKQorCitUaGUgOmNsYXNzOmB0eXBpbmcuQ29sbGVjdGlvbmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgZm9yCityZXByZXNlbnRpbmcgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQ29sbGVjdGlvbmAuCisoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpIGluIDppc3N1ZTpgMjc1OThgLikKKworVGhlIDpjb25zdDpgdHlwaW5nLkNsYXNzVmFyYCB0eXBlIGNvbnN0cnVjdCBoYXMgYmVlbiBhZGRlZCB0bworbWFyayBjbGFzcyB2YXJpYWJsZXMuICBBcyBpbnRyb2R1Y2VkIGluIDpwZXA6YDUyNmAsIGEgdmFyaWFibGUgYW5ub3RhdGlvbgord3JhcHBlZCBpbiBDbGFzc1ZhciBpbmRpY2F0ZXMgdGhhdCBhIGdpdmVuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzCithIGNsYXNzIHZhcmlhYmxlIGFuZCBzaG91bGQgbm90IGJlIHNldCBvbiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4KKyhDb250cmlidXRlZCBieSBJdmFuIExldmtpdnNreWkgaW4gYEdpdGh1YiAjMjgwCis8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvaXNzdWVzLzI4MD5gXy4pCisKK0EgbmV3IDpjb25zdDpgfnR5cGluZy5UWVBFX0NIRUNLSU5HYCBjb25zdGFudCB0aGF0IGlzIGFzc3VtZWQgdG8gYmUKK2BgVHJ1ZWBgIGJ5IHRoZSBzdGF0aWMgdHlwZSBjaGVrZXJzLCBidXQgaXMgYGBGYWxzZWBgIGF0IHJ1bnRpbWUuCisoQ29udHJpYnV0ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bSBpbiBgR2l0aHViICMyMzAKKzxodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZy9pc3N1ZXMvMjMwPmBfLikKKworQSBuZXcgOmZ1bmM6YH50eXBpbmcuTmV3VHlwZWAgaGVscGVyIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIGNyZWF0ZQorbGlnaHR3ZWlnaHQgZGlzdGluY3QgdHlwZXMgZm9yIGFubm90YXRpb25zOjoKKworICAgIGZyb20gdHlwaW5nIGltcG9ydCBOZXdUeXBlCisKKyAgICBVc2VySWQgPSBOZXdUeXBlKCdVc2VySWQnLCBpbnQpCisgICAgc29tZV9pZCA9IFVzZXJJZCg1MjQzMTMpCisKK1RoZSBzdGF0aWMgdHlwZSBjaGVja2VyIHdpbGwgdHJlYXQgdGhlIG5ldyB0eXBlIGFzIGlmIGl0IHdlcmUgYSBzdWJjbGFzcworb2YgdGhlIG9yaWdpbmFsIHR5cGUuICAoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpIGluIGBHaXRodWIgIzE4OQorPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL2lzc3Vlcy8xODk+YF8uKQorCisKK3VuaWNvZGVkYXRhCistLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgdW5pY29kZWRhdGFgIG1vZHVsZSBub3cgdXNlcyBkYXRhIGZyb20gYFVuaWNvZGUgOS4wLjAKKzxodHRwOi8vdW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTkuMC4wLz5gXy4KKyhDb250cmlidXRlZCBieSBCZW5qYW1pbiBQZXRlcnNvbi4pCisKKwordW5pdHRlc3QubW9jaworLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5Nb2NrYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBpbXByb3ZlbWVudHM6CisKKyogVHdvIG5ldyBtZXRob2RzLCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkKCkKKyAgPHVuaXR0ZXN0Lm1vY2suTW9jay5hc3NlcnRfY2FsbGVkPmAgYW5kIDptZXRoOmBNb2NrLmFzc2VydF9jYWxsZWRfb25jZSgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlPmAgdG8gY2hlY2sgaWYgdGhlIG1vY2sgb2JqZWN0CisgIHdhcyBjYWxsZWQuCisgIChDb250cmlidXRlZCBieSBBbWl0IFNhaGEgaW4gOmlzc3VlOmAyNjMyM2AuKQorCisqIFRoZSA6bWV0aDpgTW9jay5yZXNldF9tb2NrKCkgPHVuaXR0ZXN0Lm1vY2suTW9jay5yZXNldF9tb2NrPmAgbWV0aG9kCisgIG5vdyBoYXMgdHdvIG9wdGlvbmFsIGtleXdvcmQgb25seSBhcmd1bWVudHM6ICpyZXR1cm5fdmFsdWUqIGFuZAorICAqc2lkZV9lZmZlY3QqLgorICAoQ29udHJpYnV0ZWQgYnkgS3VzaGFsIERhcyBpbiA6aXNzdWU6YDIxMjcxYC4pCisKKwordXJsbGliLnJlcXVlc3QKKy0tLS0tLS0tLS0tLS0tCisKK0lmIGEgSFRUUCByZXF1ZXN0IGhhcyBhIGZpbGUgb3IgaXRlcmFibGUgYm9keSAob3RoZXIgdGhhbiBhCitieXRlcyBvYmplY3QpIGJ1dCBubyBgYENvbnRlbnQtTGVuZ3RoYGAgaGVhZGVyLCByYXRoZXIgdGhhbgordGhyb3dpbmcgYW4gZXJyb3IsIDpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXJgIG5vdworZmFsbHMgYmFjayB0byB1c2UgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZy4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBSb2xmIEtyYWhsIGluIDppc3N1ZTpgMTIzMTlgLikKKworCit1cmxsaWIucm9ib3RwYXJzZXIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCis6Y2xhc3M6YH51cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyYCBub3cgc3VwcG9ydHMgdGhlIGBgQ3Jhd2wtZGVsYXlgYCBhbmQKK2BgUmVxdWVzdC1yYXRlYGAgZXh0ZW5zaW9ucy4KKyhDb250cmlidXRlZCBieSBOaWtvbGF5IEJvZ295Y2hldiBpbiA6aXNzdWU6YDE2MDk5YC4pCisKKwordmVudgorLS0tLQorCis6bW9kOmB2ZW52YCBhY2NlcHRzIGEgbmV3IHBhcmFtZXRlciBgYC0tcHJvbXB0YGAuIFRoaXMgcGFyYW1ldGVyIHByb3ZpZGVzIGFuCithbHRlcm5hdGl2ZSBwcmVmaXggZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAoUHJvcG9zZWQgYnkgxYF1a2FzeiBCYWxjZXJ6YWsKK2FuZCBwb3J0ZWQgdG8gMy42IGJ5IFN0w6lwaGFuZSBXaXJ0ZWwgaW4gOmlzc3VlOmAyMjgyOWAuKQorCisKK3dhcm5pbmdzCistLS0tLS0tLQorCitBIG5ldyBvcHRpb25hbCAqc291cmNlKiBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQgdG8gdGhlCis6ZnVuYzpgd2FybmluZ3Mud2Fybl9leHBsaWNpdGAgZnVuY3Rpb246IHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4gQSAqc291cmNlKiBhdHRyaWJ1dGUgaGFzIGFsc28gYmVlbiBhZGRlZCB0bworOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAgKGNvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NTY4YCBhbmQgOmlzc3VlOmAyNjU2N2ApLgorCitXaGVuIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlzIGxvZ2dlZCwgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgaXMgbm93Cit1c2VkIHRvIHRyeSB0byByZXRyaWV2ZSB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdhcyBhbGxvY2F0ZWQuCisKK0V4YW1wbGUgd2l0aCB0aGUgc2NyaXB0IGBgZXhhbXBsZS5weWBgOjoKKworICAgIGltcG9ydCB3YXJuaW5ncworCisgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgcmV0dXJuIG9wZW4oX19maWxlX18pCisKKyAgICBmID0gZnVuYygpCisgICAgZiA9IE5vbmUKKworT3V0cHV0IG9mIHRoZSBjb21tYW5kIGBgcHl0aG9uMy42IC1XZCAtWCB0cmFjZW1hbGxvYz01IGV4YW1wbGUucHlgYDo6CisKKyAgICBleGFtcGxlLnB5Ojc6IFJlc291cmNlV2FybmluZzogdW5jbG9zZWQgZmlsZSA8X2lvLlRleHRJT1dyYXBwZXIgbmFtZT0nZXhhbXBsZS5weScgbW9kZT0ncicgZW5jb2Rpbmc9J1VURi04Jz4KKyAgICAgIGYgPSBOb25lCisgICAgT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJleGFtcGxlLnB5IiwgbGluZW5vIDQKKyAgICAgICAgcmV0dXJuIG9wZW4oX19maWxlX18pCisgICAgICBGaWxlICJleGFtcGxlLnB5IiwgbGluZW5vIDYKKyAgICAgICAgZiA9IGZ1bmMoKQorCitUaGUgIk9iamVjdCBhbGxvY2F0ZWQgYXQiIHRyYWNlYmFjayBpcyBuZXcgYW5kIGlzIG9ubHkgZGlzcGxheWVkIGlmCis6bW9kOmB0cmFjZW1hbGxvY2AgaXMgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIGFuZCBpZiB0aGUKKzptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgd2FzIGFscmVhZHkgaW1wb3J0ZWQuCisKKword2lucmVnCistLS0tLS0KKworQWRkZWQgdGhlIDY0LWJpdCBpbnRlZ2VyIHR5cGUgOmRhdGE6YFJFR19RV09SRCA8d2lucmVnLlJFR19RV09SRD5gLgorKENvbnRyaWJ1dGVkIGJ5IENsZW1lbnQgUm91YXVsdCBpbiA6aXNzdWU6YDIzMDI2YC4pCisKKword2luc291bmQKKy0tLS0tLS0tCisKK0FsbG93ZWQga2V5d29yZCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIDpmdW5jOmBCZWVwIDx3aW5zb3VuZC5CZWVwPmAsCis6ZnVuYzpgTWVzc2FnZUJlZXAgPHdpbnNvdW5kLk1lc3NhZ2VCZWVwPmAsIGFuZCA6ZnVuYzpgUGxheVNvdW5kCis8d2luc291bmQuUGxheVNvdW5kPmAgKDppc3N1ZTpgMjc5ODJgKS4KKworCit4bWxycGMuY2xpZW50CistLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB4bWxycGMuY2xpZW50YCBtb2R1bGUgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcKK2FkZGl0aW9uYWwgZGF0YSB0eXBlcyB1c2VkIGJ5IHRoZSBBcGFjaGUgWE1MLVJQQyBpbXBsZW1lbnRhdGlvbgorZm9yIG51bWVyaWNzIGFuZCBgYE5vbmVgYC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjY4ODVgLikKKworCit6aXBmaWxlCistLS0tLS0tCisKK0EgbmV3IDptZXRoOmBaaXBJbmZvLmZyb21fZmlsZSgpIDx6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlPmAgY2xhc3MgbWV0aG9kCithbGxvd3MgbWFraW5nIGEgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSBmcm9tIGEgZmlsZXN5c3RlbSBmaWxlLgorQSBuZXcgOm1ldGg6YFppcEluZm8uaXNfZGlyKCkgPHppcGZpbGUuWmlwSW5mby5pc19kaXI+YCBtZXRob2QgY2FuIGJlIHVzZWQKK3RvIGNoZWNrIGlmIHRoZSA6Y2xhc3M6YH56aXBmaWxlLlppcEluZm9gIGluc3RhbmNlIHJlcHJlc2VudHMgYSBkaXJlY3RvcnkuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCitUaGUgOm1ldGg6YFppcEZpbGUub3BlbigpIDx6aXBmaWxlLlppcEZpbGUub3Blbj5gIG1ldGhvZCBjYW4gbm93IGJlIHVzZWQgdG8KK3dyaXRlIGRhdGEgaW50byBhIFpJUCBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCisKK3psaWIKKy0tLS0KKworVGhlIDpmdW5jOmB+emxpYi5jb21wcmVzc2AgYW5kIDpmdW5jOmB+emxpYi5kZWNvbXByZXNzYCBmdW5jdGlvbnMgbm93IGFjY2VwdAora2V5d29yZCBhcmd1bWVudHMuCisoQ29udHJpYnV0ZWQgYnkgQXZpdiBQYWxpdm9kYSBpbiA6aXNzdWU6YDI2MjQzYCBhbmQKK1hpYW5nIFpoYW5nIGluIDppc3N1ZTpgMTY3NjRgIHJlc3BlY3RpdmVseS4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCisqIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgYSAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZSB3aGljaAorICBtYWRlIGEgbnVtYmVyIG9mIG9wY29kZSBvcHRpbWl6YXRpb25zIHBvc3NpYmxlLgorICAoQ29udHJpYnV0ZWQgYnkgRGVtdXIgUnVtZWQgd2l0aCBpbnB1dCBhbmQgcmV2aWV3cyBmcm9tCisgIFNlcmhpeSBTdG9yY2hha2EgYW5kIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY2NDdgIGFuZCA6aXNzdWU6YDI4MDUwYC4pCisKKyogVGhlIDpjbGFzczpgYXN5bmNpby5GdXR1cmVgIGNsYXNzIG5vdyBoYXMgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24uCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBhbmQgSU5BREEgTmFva2kgaW4gOmlzc3VlOmAyNjA4MWAuKQorCisqIFRoZSA6Y2xhc3M6YGFzeW5jaW8uVGFza2AgY2xhc3Mgbm93IGhhcyBhbiBvcHRpbWl6ZWQKKyAgQyBpbXBsZW1lbnRhdGlvbi4gKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjg1NDRgLikKKworKiBWYXJpb3VzIGltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50cyBpbiB0aGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUKKyAgKHN1Y2ggYXMgY2FjaGluZyBvZiBnZW5lcmljIHR5cGVzKSBhbGxvdyB1cCB0byAzMCB0aW1lcyBwZXJmb3JtYW5jZQorICBpbXByb3ZlbWVudHMgYW5kIHJlZHVjZWQgbWVtb3J5IGZvb3RwcmludC4KKworKiBUaGUgQVNDSUkgZGVjb2RlciBpcyBub3cgdXAgdG8gNjAgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBpZ25vcmVgYCBhbmQgYGByZXBsYWNlYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjQ4NzBgKS4KKworKiBUaGUgQVNDSUkgYW5kIHRoZSBMYXRpbjEgZW5jb2RlcnMgYXJlIG5vdyB1cCB0byAzIHRpbWVzIGFzIGZhc3QgZm9yIHRoZQorICBlcnJvciBoYW5kbGVyIGBgc3Vycm9nYXRlZXNjYXBlYGAKKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyMjdgKS4KKworKiBUaGUgVVRGLTggZW5jb2RlciBpcyBub3cgdXAgdG8gNzUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MjY3YCkuCisKKyogVGhlIFVURi04IGRlY29kZXIgaXMgbm93IHVwIHRvIDE1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MzAxYCkuCisKKyogYGBieXRlcyAlIGFyZ3NgYCBpcyBub3cgdXAgdG8gMiB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lcgorICBpbiA6aXNzdWU6YDI1MzQ5YCkuCisKKyogYGBieXRlYXJyYXkgJSBhcmdzYGAgaXMgbm93IGJldHdlZW4gMi41IGFuZCA1IHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5CisgIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzOTlgKS4KKworKiBPcHRpbWl6ZSA6bWV0aDpgYnl0ZXMuZnJvbWhleGAgYW5kIDptZXRoOmBieXRlYXJyYXkuZnJvbWhleGA6IHRoZXkgYXJlIG5vdworICBiZXR3ZWVuIDJ4IGFuZCAzLjV4IGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjU0MDFgKS4KKworKiBPcHRpbWl6ZSBgYGJ5dGVzLnJlcGxhY2UoYicnLCBiJy4nKWBgIGFuZCBgYGJ5dGVhcnJheS5yZXBsYWNlKGInJywgYicuJylgYDoKKyAgdXAgdG8gODAlIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IEpvc2ggU25pZGVyIGluIDppc3N1ZTpgMjY1NzRgKS4KKworKiBBbGxvY2F0b3IgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGRvbWFpbgorICAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWApIG5vdyB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IKKyAgPHB5bWFsbG9jPmAgaW5zdGVhZCBvZiA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIG9mIHRoZSBDIGxpYnJhcnkuIFRoZQorICBweW1hbGxvYyBhbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBvYmplY3RzIHNtYWxsZXIgb3IgZXF1YWwgdG8gNTEyIGJ5dGVzCisgIHdpdGggYSBzaG9ydCBsaWZldGltZSwgYW5kIHVzZSA6YzpmdW5jOmBtYWxsb2NgIGZvciBsYXJnZXIgbWVtb3J5IGJsb2Nrcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjYyNDlgKS4KKworKiA6ZnVuYzpgcGlja2xlLmxvYWRgIGFuZCA6ZnVuYzpgcGlja2xlLmxvYWRzYCBhcmUgbm93IHVwIHRvIDEwJSBmYXN0ZXIgd2hlbgorICBkZXNlcmlhbGl6aW5nIG1hbnkgc21hbGwgb2JqZWN0cyAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKyAgOmlzc3VlOmAyNzA1NmApLgorCisqIFBhc3NpbmcgOnRlcm06YGtleXdvcmQgYXJndW1lbnRzIDxrZXl3b3JkIGFyZ3VtZW50PmAgdG8gYSBmdW5jdGlvbiBoYXMgYW4KKyAgb3ZlcmhlYWQgaW4gY29tcGFyaXNvbiB3aXRoIHBhc3NpbmcgOnRlcm06YHBvc2l0aW9uYWwgYXJndW1lbnRzCisgIDxwb3NpdGlvbmFsIGFyZ3VtZW50PmAuICBOb3cgaW4gZXh0ZW5zaW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB3aXRoIHVzaW5nCisgIEFyZ3VtZW50IENsaW5pYyB0aGlzIG92ZXJoZWFkIGlzIHNpZ25pZmljYW50bHkgZGVjcmVhc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI3NTc0YCkuCisKKyogT3B0aW1pemVkIDpmdW5jOmB+Z2xvYi5nbG9iYCBhbmQgOmZ1bmM6YH5nbG9iLmlnbG9iYCBmdW5jdGlvbnMgaW4gdGhlCisgIDptb2Q6YGdsb2JgIG1vZHVsZTsgdGhleSBhcmUgbm93IGFib3V0IDMtLTYgdGltZXMgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1NTk2YCkuCisKKyogT3B0aW1pemVkIGdsb2JiaW5nIGluIDptb2Q6YHBhdGhsaWJgIGJ5IHVzaW5nIDpmdW5jOmBvcy5zY2FuZGlyYDsKKyAgaXQgaXMgbm93IGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYwMzJgKS4KKworKiA6Y2xhc3M6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgcGFyc2luZywgaXRlcmF0aW9uIGFuZCBkZWVwY29weSBwZXJmb3JtYW5jZQorICBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1NjM4YCwgOmlzc3VlOmAyNTg3M2AsCisgIGFuZCA6aXNzdWU6YDI1ODY5YC4pCisKKyogQ3JlYXRpb24gb2YgOmNsYXNzOmBmcmFjdGlvbnMuRnJhY3Rpb25gIGluc3RhbmNlcyBmcm9tIGZsb2F0cyBhbmQKKyAgZGVjaW1hbHMgaXMgbm93IDIgdG8gMyB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU5NzFgLikKKworCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQeXRob24gbm93IHJlcXVpcmVzIHNvbWUgQzk5IHN1cHBvcnQgaW4gdGhlIHRvb2xjaGFpbiB0byBidWlsZC4KKyAgTW9zdCBub3RhYmx5LCBQeXRob24gbm93IHVzZXMgc3RhbmRhcmQgaW50ZWdlciB0eXBlcyBhbmQgbWFjcm9zIGluCisgIHBsYWNlIG9mIGN1c3RvbSBtYWNyb3MgbGlrZSBgYFBZX0xPTkdfTE9OR2BgLgorICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIDpwZXA6YDdgIGFuZCA6aXNzdWU6YDE3ODg0YC4KKworKiBDcm9zcy1jb21waWxpbmcgQ1B5dGhvbiB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHNldCB0bworICAyMSAoQW5kcm9pZCA1LjAgTG9sbGlsb3ApIG9yIGdyZWF0ZXIgcnVucyBzdWNjZXNzZnVsbHkuIFdoaWxlIEFuZHJvaWQgaXMgbm90CisgIHlldCBhIHN1cHBvcnRlZCBwbGF0Zm9ybSwgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHJ1bnMgb24gdGhlIEFuZHJvaWQgZW11bGF0b3IKKyAgd2l0aCBvbmx5IGFib3V0IDE2IHRlc3RzIGZhaWx1cmVzLiBTZWUgdGhlIEFuZHJvaWQgbWV0YS1pc3N1ZSA6aXNzdWU6YDI2ODY1YC4KKworKiBUaGUgYGAtLWVuYWJsZS1vcHRpbWl6YXRpb25zYGAgY29uZmlndXJlIGZsYWcgaGFzIGJlZW4gYWRkZWQuIFR1cm5pbmcgaXQgb24KKyAgd2lsbCBhY3RpdmF0ZSBleHBlbnNpdmUgb3B0aW1pemF0aW9ucyBsaWtlIFBHTy4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWNzYW5kcnUgUGF0cmFzY3Ugb2YgSW50ZWwgaW4gOmlzc3VlOmAyNjUzOWAuKQorCisqIFRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIG11c3Qgbm93IGJlIGhlbGQgd2hlbiBhbGxvY2F0b3IKKyAgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDogOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kCisgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkLgorCisqIE5ldyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBBUEkgd2hpY2ggaW5kaWNhdGVzIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgZmFpbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDUzMTlgLikKKworKiA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG5vdyBzdXBwb3J0cyA6cmVmOmBwb3NpdGlvbmFsLW9ubHkKKyAgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLiAgUG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgYXJlCisgIGRlZmluZWQgYnkgZW1wdHkgbmFtZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYyODJgKS4KKworKiBgYFB5VHJhY2ViYWNrX1ByaW50YGAgbWV0aG9kIG5vdyBhYmJyZXZpYXRlcyBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcworICBhcyBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgLgorICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKyogVGhlIG5ldyA6YzpmdW5jOmBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzYCBmdW5jdGlvbiBhbGxvd3MgZm9yCisgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisgIChDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNTc2N2AuKQorCisqIFRoZSBuZXcgOmM6ZnVuYzpgUHlFcnJfUmVzb3VyY2VXYXJuaW5nYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZQorICBhIDpleGM6YFJlc291cmNlV2FybmluZ2AgcHJvdmlkaW5nIHRoZSBzb3VyY2Ugb2YgdGhlIHJlc291cmNlIGFsbG9jYXRpb24uCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NTY3YC4pCisKKyogVGhlIG5ldyA6YzpmdW5jOmBQeU9TX0ZTUGF0aGAgZnVuY3Rpb24gcmV0dXJucyB0aGUgZmlsZSBzeXN0ZW0KKyAgcmVwcmVzZW50YXRpb24gb2YgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisgIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNzE4NmAuKQorCisqIFRoZSA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFuZCA6YzpmdW5jOmBQeVVuaWNvZGVfRlNEZWNvZGVyYAorICBmdW5jdGlvbnMgd2lsbCBub3cgYWNjZXB0IDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCisKK090aGVyIEltcHJvdmVtZW50cworPT09PT09PT09PT09PT09PT09CisKKyogV2hlbiA6b3B0aW9uOmAtLXZlcnNpb25gIChzaG9ydCBmb3JtOiA6b3B0aW9uOmAtVmApIGlzIHN1cHBsaWVkIHR3aWNlLAorICBQeXRob24gcHJpbnRzIDpkYXRhOmBzeXMudmVyc2lvbmAgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uLgorCisgIC4uIGNvZGUtYmxvY2s6OiBzaGVsbC1zZXNzaW9uCisKKyAgICAkIC4vcHl0aG9uIC1WVgorICAgIFB5dGhvbiAzLjYuMGI0KyAoMy42OjIyMzk2N2I0OWU0OSssIE5vdiAyMSAyMDE2LCAyMDo1NTowNCkKKyAgICBbR0NDIDQuMi4xIENvbXBhdGlibGUgQXBwbGUgTExWTSA4LjAuMCAoY2xhbmctODAwLjAuNDIuMSldCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitOZXcgS2V5d29yZHMKKy0tLS0tLS0tLS0tLQorCitgYGFzeW5jYGAgYW5kIGBgYXdhaXRgYCBhcmUgbm90IHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgYXMgdmFyaWFibGUsIGNsYXNzLAorZnVuY3Rpb24gb3IgbW9kdWxlIG5hbWVzLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgIGluIFB5dGhvbiAzLjUsIHRoZXkgd2lsbAorYmVjb21lIHByb3BlciBrZXl3b3JkcyBpbiBQeXRob24gMy43LiAgU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgdGhlIHVzZSBvZgorYGBhc3luY2BgIG9yIGBgYXdhaXRgYCBhcyBuYW1lcyB3aWxsIGdlbmVyYXRlIGEgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4KKworCitEZXByZWNhdGVkIFB5dGhvbiBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmFpc2luZyB0aGUgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9uIGluc2lkZSBhIGdlbmVyYXRvciB3aWxsIG5vdworZ2VuZXJhdGUgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLCBhbmQgd2lsbCB0cmlnZ2VyIGEgOmV4YzpgUnVudGltZUVycm9yYAoraW4gUHl0aG9uIDMuNy4gIFNlZSA6cmVmOmB3aGF0c25ldy1wZXAtNDc5YCBmb3IgZGV0YWlscy4KKworVGhlIDptZXRoOmBfX2FpdGVyX19gIG1ldGhvZCBpcyBub3cgZXhwZWN0ZWQgdG8gcmV0dXJuIGFuIGFzeW5jaHJvbm91cworaXRlcmF0b3IgZGlyZWN0bHkgaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gYXdhaXRhYmxlIGFzIHByZXZpb3VzbHkuCitEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBCYWNrd2FyZAorY29tcGF0aWJpbGl0eSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNy4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI3MjQzYC4pCisKK0EgYmFja3NsYXNoLWNoYXJhY3RlciBwYWlyIHRoYXQgaXMgbm90IGEgdmFsaWQgZXNjYXBlIHNlcXVlbmNlIG5vdyBnZW5lcmF0ZXMKK2EgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4gIEFsdGhvdWdoIHRoaXMgd2lsbCBldmVudHVhbGx5IGJlY29tZSBhCis6ZXhjOmBTeW50YXhFcnJvcmAsIHRoYXQgd2lsbCBub3QgYmUgZm9yIHNldmVyYWwgUHl0aG9uIHJlbGVhc2VzLgorKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNzM2NGAuKQorCitXaGVuIHBlcmZvcm1pbmcgYSByZWxhdGl2ZSBpbXBvcnQsIGZhbGxpbmcgYmFjayBvbiBgYF9fbmFtZV9fYGAgYW5kCitgYF9fcGF0aF9fYGAgZnJvbSB0aGUgY2FsbGluZyBtb2R1bGUgd2hlbiBgYF9fc3BlY19fYGAgb3IKK2BgX19wYWNrYWdlX19gYCBhcmUgbm90IGRlZmluZWQgbm93IHJhaXNlcyBhbiA6ZXhjOmBJbXBvcnRXYXJuaW5nYC4KKyhDb250cmlidXRlZCBieSBSb3NlIEFtZXMgaW4gOmlzc3VlOmAyNTc5MWAuKQorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIG1vZHVsZXMsIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2FzeW5jaGF0Cit+fn5+fn5+fgorCitUaGUgOm1vZDpgYXN5bmNoYXRgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgOm1vZDpgYXN5bmNpb2AuCisoQ29udHJpYnV0ZWQgYnkgTWFyaWF0dGEgaW4gOmlzc3VlOmAyNTAwMmAuKQorCisKK2FzeW5jb3JlCit+fn5+fn5+fgorCitUaGUgOm1vZDpgYXN5bmNvcmVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgOm1vZDpgYXN5bmNpb2AuCisoQ29udHJpYnV0ZWQgYnkgTWFyaWF0dGEgaW4gOmlzc3VlOmAyNTAwMmAuKQorCisKK2RibQorfn5+CisKK1VubGlrZSBvdGhlciA6bW9kOmBkYm1gIGltcGxlbWVudGF0aW9ucywgdGhlIDptb2Q6YGRibS5kdW1iYCBtb2R1bGUKK2NyZWF0ZXMgZGF0YWJhc2VzIHdpdGggdGhlIGBgJ3J3J2BgIG1vZGUgYW5kIGFsbG93cyBtb2RpZnlpbmcgdGhlIGRhdGFiYXNlCitvcGVuZWQgd2l0aCB0aGUgYGAncidgYCBtb2RlLiAgVGhpcyBiZWhhdmlvciBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbAorYmUgcmVtb3ZlZCBpbiAzLjguCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzA4YC4pCisKKworZGlzdHV0aWxzCit+fn5+fn5+fn4KKworVGhlIHVuZG9jdW1lbnRlZCBgYGV4dHJhX3BhdGhgYCBhcmd1bWVudCB0byB0aGUKKzpjbGFzczpgfmRpc3R1dGlscy5EaXN0cmlidXRpb25gIGNvbnN0cnVjdG9yIGlzIG5vdyBjb25zaWRlcmVkIGRlcHJlY2F0ZWQKK2FuZCB3aWxsIHJhaXNlIGEgd2FybmluZyBpZiBzZXQuICAgU3VwcG9ydCBmb3IgdGhpcyBwYXJhbWV0ZXIgd2lsbCBiZQorcmVtb3ZlZCBpbiBhIGZ1dHVyZSBQeXRob24gcmVsZWFzZS4gIFNlZSA6aXNzdWU6YDI3OTE5YCBmb3IgZGV0YWlscy4KKworCitncnAKK35+fgorCitUaGUgc3VwcG9ydCBvZiBub24taW50ZWdlciBhcmd1bWVudHMgaW4gOmZ1bmM6YH5ncnAuZ2V0Z3JnaWRgIGhhcyBiZWVuCitkZXByZWNhdGVkLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjEyOWAuKQorCisKK2ltcG9ydGxpYgorfn5+fn5+fn5+CisKK1RoZSA6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLmxvYWRfbW9kdWxlYCBhbmQKKzptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyLmxvYWRfbW9kdWxlYCBtZXRob2RzCithcmUgbm93IGRlcHJlY2F0ZWQuIFRoZXkgd2VyZSB0aGUgb25seSByZW1haW5pbmcgaW1wbGVtZW50YXRpb25zIG9mCis6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIGluIDptb2Q6YGltcG9ydGxpYmAgdGhhdCBoYWQgbm90CitiZWVuIGRlcHJlY2F0ZWQgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uIGluIGZhdm91ciBvZgorOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYC4KKworVGhlIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXJgIGNsYXNzIGlzIG5vdworZGVwcmVjYXRlZC4gQXMgb2YgMy42LjAsIGl0IGlzIHN0aWxsIGFkZGVkIHRvIDphdHRyOmBzeXMubWV0YV9wYXRoYCBieQorZGVmYXVsdCAob24gV2luZG93cyksIGJ1dCB0aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzLgorCitvcworfn4KKworVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gCithcyBwYXRocyBpbiA6bW9kOmBvc2AgZnVuY3Rpb25zLCA6ZnVuYzpgY29tcGlsZWAgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGlzCitub3cgZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU3OTFgIGFuZCA6aXNzdWU6YDI2NzU0YC4pCisKK3JlCit+fgorCitTdXBwb3J0IGZvciBpbmxpbmUgZmxhZ3MgYGAoP2xldHRlcnMpYGAgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcmVndWxhcgorZXhwcmVzc2lvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgUHl0aG9uCit2ZXJzaW9uLiAgRmxhZ3MgYXQgdGhlIHN0YXJ0IG9mIGEgcmVndWxhciBleHByZXNzaW9uIGFyZSBzdGlsbCBhbGxvd2VkLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQ5M2AuKQorCitzc2wKK35+fgorCitPcGVuU1NMIDAuOS44LCAxLjAuMCBhbmQgMS4wLjEgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuCitJbiB0aGUgZnV0dXJlIHRoZSA6bW9kOmBzc2xgIG1vZHVsZSB3aWxsIHJlcXVpcmUgYXQgbGVhc3QgT3BlblNTTCAxLjAuMiBvcgorMS4xLjAuCisKK1NTTC1yZWxhdGVkIGFyZ3VtZW50cyBsaWtlIGBgY2VydGZpbGVgYCwgYGBrZXlmaWxlYGAgYW5kIGBgY2hlY2tfaG9zdG5hbWVgYAoraW4gOm1vZDpgZnRwbGliYCwgOm1vZDpgaHR0cC5jbGllbnRgLCA6bW9kOmBpbWFwbGliYCwgOm1vZDpgcG9wbGliYCwKK2FuZCA6bW9kOmBzbXRwbGliYCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgYGNvbnRleHRgYC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjJgLikKKworQSBjb3VwbGUgb2YgcHJvdG9jb2xzIGFuZCBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGFyZSBub3cKK2RlcHJlY2F0ZWQuIFNvbWUgZmVhdHVyZXMgd2lsbCBubyBsb25nZXIgYmUgYXZhaWxhYmxlIGluIGZ1dHVyZSB2ZXJzaW9ucworb2YgT3BlblNTTC4gT3RoZXIgZmVhdHVyZXMgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYSBkaWZmZXJlbnQgQVBJLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyMmAgYW5kIDppc3N1ZTpgMjY0NzBgLikKKwordGtpbnRlcgorfn5+fn5+fgorCitUaGUgOm1vZDpgdGtpbnRlci50aXhgIG1vZHVsZSBpcyBub3cgZGVwcmVjYXRlZC4gIDptb2Q6YHRraW50ZXJgIHVzZXJzCitzaG91bGQgdXNlIDptb2Q6YHRraW50ZXIudHRrYCBpbnN0ZWFkLgorCit2ZW52Cit+fn5+CisKK1RoZSBgYHB5dmVudmBgIHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBgYHB5dGhvbjMgLW0gdmVudmBgLgorVGhpcyBwcmV2ZW50cyBjb25mdXNpb24gYXMgdG8gd2hhdCBQeXRob24gaW50ZXJwcmV0ZXIgYGBweXZlbnZgYCBpcworY29ubmVjdGVkIHRvIGFuZCB0aHVzIHdoYXQgUHl0aG9uIGludGVycHJldGVyIHdpbGwgYmUgdXNlZCBieSB0aGUgdmlydHVhbAorZW52aXJvbm1lbnQuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjUxNTRgLikKKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VuZG9jdW1lbnRlZCBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdGAsCis6YzpmdW5jOmBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0YCwgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGVgCithbmQgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGVgIGFyZSBkZXByZWNhdGVkIG5vdy4KK1VzZSB0aGUgOnJlZjpgZ2VuZXJpYyBjb2RlYyBiYXNlZCBBUEkgPGNvZGVjLXJlZ2lzdHJ5PmAgaW5zdGVhZC4KKworCitEZXByZWNhdGVkIEJ1aWxkIE9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGNvbmZpZ3VyZSBmbGFnIGlzIG5vdyBvbiBieSBkZWZhdWx0IG9uIG5vbi1tYWNPUworVU5JWCBwbGF0Zm9ybXMuICBJdCBtYXkgYmUgZGlzYWJsZWQgYnkgdXNpbmcgYGAtLXdpdGhvdXQtc3lzdGVtLWZmaWBgLCBidXQKK3VzaW5nIHRoZSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgbm90IGJlIGFjY2VwdGVkIGluIFB5dGhvbiAzLjcuCittYWNPUyBpcyB1bmFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiAgTm90ZSB0aGF0IG1hbnkgT1MgZGlzdHJpYnV0b3JzIGFscmVhZHkKK3VzZSB0aGUgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGZsYWcgd2hlbiBidWlsZGluZyB0aGVpciBzeXN0ZW0gUHl0aG9uLgorCisKK1JlbW92ZWQKKz09PT09PT0KKworQVBJIGFuZCBGZWF0dXJlIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucyB3aWxsIG5vdyBjYXVzZSBhbiBlcnJvci4gIEluIHJlcGxhY2VtZW50IHRlbXBsYXRlcyBmb3IKKyAgOmZ1bmM6YHJlLnN1YmAgdGhleSBhcmUgc3RpbGwgYWxsb3dlZCwgYnV0IGRlcHJlY2F0ZWQuCisgIFRoZSA6Y29uc3Q6YHJlLkxPQ0FMRWAgZmxhZyBjYW4gbm93IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSBwYXR0ZXJucy4KKworKiBgYGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpYGAgd2FzIHJlbW92ZWQgKHdhcyBkZXByZWNhdGVkIHNpbmNlIENQeXRob24gMy4zKS4KKyAgOmZ1bmM6YGluc3BlY3QuZ2V0bW9kdWxlbmFtZWAgc2hvdWxkIGJlIHVzZWQgZm9yIG9idGFpbmluZyB0aGUgbW9kdWxlCisgIG5hbWUgZm9yIGEgZ2l2ZW4gcGF0aC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMTMyNDhgLikKKworKiBgYHRyYWNlYmFjay5JZ25vcmVgYCBjbGFzcyBhbmQgYGB0cmFjZWJhY2sudXNhZ2VgYCwgYGB0cmFjZWJhY2subW9kbmFtZWBgLAorICBgYHRyYWNlYmFjay5mdWxsbW9kbmFtZWBgLCBgYHRyYWNlYmFjay5maW5kX2xpbmVzX2Zyb21fY29kZWBgLAorICBgYHRyYWNlYmFjay5maW5kX2xpbmVzYGAsIGBgdHJhY2ViYWNrLmZpbmRfc3RyaW5nc2BgLAorICBgYHRyYWNlYmFjay5maW5kX2V4ZWN1dGFibGVfbGluZXNgYCBtZXRob2RzIHdlcmUgcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmB0cmFjZWJhY2tgIG1vZHVsZS4gVGhleSB3ZXJlIHVuZG9jdW1lbnRlZCBtZXRob2RzIGRlcHJlY2F0ZWQgc2luY2UKKyAgUHl0aG9uIDMuMiBhbmQgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBmcm9tIHByaXZhdGUgbWV0aG9kcy4KKworKiBUaGUgYGB0a19tZW51QmFyKClgYCBhbmQgYGB0a19iaW5kRm9yVHJhdmVyc2FsKClgYCBkdW1teSBtZXRob2RzIGluCisgIDptb2Q6YHRraW50ZXJgIHdpZGdldCBjbGFzc2VzIHdlcmUgcmVtb3ZlZCAoY29ycmVzcG9uZGluZyBUayBjb21tYW5kcworICB3ZXJlIG9ic29sZXRlIHNpbmNlIFRrIDQuMCkuCisKKyogVGhlIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLm9wZW5gIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgCisgIGNsYXNzIG5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGAnVSdgYCBtb2RlICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMy40KS4KKyAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluCisgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYElOYGAsIGBgQ0RST01gYCwgYGBETEZDTmBgLCBgYFRZUEVTYGAsIGBgQ0RJT2BgLCBhbmQKKyAgYGBTVFJPUFRTYGAgbW9kdWxlcyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXkgaGFkIGJlZW4gYXZhaWxhYmxlIGluIHRoZQorICBwbGF0Zm9ybSBzcGVjaWZpYyBgYExpYi9wbGF0LSovYGAgZGlyZWN0b3JpZXMsIGJ1dCB3ZXJlIGNocm9uaWNhbGx5IG91dCBvZgorICBkYXRlLCBpbmNvbnNpc3RlbnRseSBhdmFpbGFibGUgYWNyb3NzIHBsYXRmb3JtcywgYW5kIHVubWFpbnRhaW5lZC4gIFRoZQorICBzY3JpcHQgdGhhdCBjcmVhdGVkIHRoZXNlIG1vZHVsZXMgaXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoZSBzb3VyY2UKKyAgZGlzdHJpYnV0aW9uIGF0IDpzb3VyY2U6YFRvb2xzL3NjcmlwdHMvaDJweS5weWAuCisKKyogVGhlIGRlcHJlY2F0ZWQgYGBhc3luY2hhdC5maWZvYGAgY2xhc3MgaGFzIGJlZW4gcmVtb3ZlZC4KKworCitQb3J0aW5nIHRvIFB5dGhvbiAzLjYKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHNlY3Rpb24gbGlzdHMgcHJldmlvdXNseSBkZXNjcmliZWQgY2hhbmdlcyBhbmQgb3RoZXIgYnVnZml4ZXMKK3RoYXQgbWF5IHJlcXVpcmUgY2hhbmdlcyB0byB5b3VyIGNvZGUuCisKK0NoYW5nZXMgaW4gJ3B5dGhvbicgQ29tbWFuZCBCZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIG91dHB1dCBvZiBhIHNwZWNpYWwgUHl0aG9uIGJ1aWxkIHdpdGggZGVmaW5lZCBgYENPVU5UX0FMTE9DU2BgLAorICBgYFNIT1dfQUxMT0NfQ09VTlRgYCBvciBgYFNIT1dfVFJBQ0tfQ09VTlRgYCBtYWNyb3MgaXMgbm93IG9mZiBieQorICBkZWZhdWx0LiAgSXQgY2FuIGJlIHJlLWVuYWJsZWQgdXNpbmcgdGhlIGBgLVggc2hvd2FsbG9jY291bnRgYCBvcHRpb24uCisgIEl0IG5vdyBvdXRwdXRzIHRvIGBgc3RkZXJyYGAgaW5zdGVhZCBvZiBgYHN0ZG91dGBgLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMDM0YC4pCisKKworQ2hhbmdlcyBpbiB0aGUgUHl0aG9uIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDpmdW5jOmBvcGVuKCkgPG9wZW4+YCB3aWxsIG5vIGxvbmdlciBhbGxvdyBjb21iaW5pbmcgdGhlIGBgJ1UnYGAgbW9kZSBmbGFnCisgIHdpdGggYGAnKydgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEplZmYgQmFsb2doIGFuZCBKb2huIE8nQ29ubm9yIGluIDppc3N1ZTpgMjA5MWAuKQorCisqIDptb2Q6YHNxbGl0ZTNgIG5vIGxvbmdlciBpbXBsaWNpdGx5IGNvbW1pdHMgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgIHN0YXRlbWVudHMuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LgorCisqIFdoZW4gOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpcyBkZWZpbmVkLAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKKyogOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIG5vdyBzZXRzIDpleGM6YFR5cGVFcnJvcmAgd2hlbiBpdHMgKiptc2cqKgorICBhcmd1bWVudCBpcyBub3Qgc2V0LiBQcmV2aW91c2x5IG9ubHkgYGBOVUxMYGAgd2FzIHJldHVybmVkLgorCisqIFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cyBjaGFuZ2VkIHRvIHN1cHBvcnQKKyAgYSBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gQnkgZGVmYXVsdCwgUHl0aG9uIGRvZXMgbm90IGVtaXQgYnl0ZWNvZGUgd2l0aAorICBhIG5lZ2F0aXZlIGxpbmUgbnVtYmVyIGRlbHRhLiBGdW5jdGlvbnMgdXNpbmcgYGBmcmFtZS5mX2xpbmVub2BgLAorICBgYFB5RnJhbWVfR2V0TGluZU51bWJlcigpYGAgb3IgYGBQeUNvZGVfQWRkcjJMaW5lKClgYCBhcmUgbm90IGFmZmVjdGVkLgorICBGdW5jdGlvbnMgZGlyZWN0bHkgZGVjb2RpbmcgYGBjb19sbm90YWJgYCBzaG91bGQgYmUgdXBkYXRlZCB0byB1c2UgYSBzaWduZWQKKyAgOC1iaXQgaW50ZWdlciB0eXBlIGZvciB0aGUgbGluZSBudW1iZXIgZGVsdGEsIGJ1dCB0aGlzIGlzIG9ubHkgcmVxdWlyZWQgdG8KKyAgc3VwcG9ydCBhcHBsaWNhdGlvbnMgdXNpbmcgYSBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gU2VlCisgIGBgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0YGAgZm9yIHRoZSBgYGNvX2xub3RhYmBgIGZvcm1hdCBhbmQgaG93IHRvIGRlY29kZQorICBpdCwgYW5kIHNlZSB0aGUgOnBlcDpgNTExYCBmb3IgdGhlIHJhdGlvbmFsZS4KKworKiBUaGUgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBjb21waWxlYWxsYCBtb2R1bGUgbm93IHJldHVybiBib29sZWFucyBpbnN0ZWFkCisgIG9mIGBgMWBgIG9yIGBgMGBgIHRvIHJlcHJlc2VudCBzdWNjZXNzIG9yIGZhaWx1cmUsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvCisgIGJvb2xlYW5zIGJlaW5nIGEgc3ViY2xhc3Mgb2YgaW50ZWdlcnMsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaXNzdWUgaWYgeW91CisgIHdlcmUgZG9pbmcgaWRlbnRpdHkgY2hlY2tzIGZvciBgYDFgYCBvciBgYDBgYC4gU2VlIDppc3N1ZTpgMjU3NjhgLgorCisqIFJlYWRpbmcgdGhlIDphdHRyOmB+dXJsbGliLnBhcnNlLlNwbGl0UmVzdWx0LnBvcnRgIGF0dHJpYnV0ZSBvZgorICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybHNwbGl0YCBhbmQgOmZ1bmM6YH51cmxsaWIucGFyc2UudXJscGFyc2VgIHJlc3VsdHMKKyAgbm93IHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcywgcmF0aGVyIHRoYW4KKyAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuICBTZWUgOmlzc3VlOmAyMDA1OWAuCisKKyogVGhlIDptb2Q6YGltcGAgbW9kdWxlIG5vdyByYWlzZXMgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluc3RlYWQgb2YKKyAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AuCisKKyogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgaGFkIG1pc3NpbmcgQVBJcyBhZGRlZCB0byB0aGVpciA6YXR0cjpgX19hbGxfX2AKKyAgYXR0cmlidXRlcyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzOgorICA6bW9kOmBjYWxlbmRhcmAsIDptb2Q6YGNnaWAsIDptb2Q6YGNzdmAsCisgIDptb2Q6YH54bWwuZXRyZWUuRWxlbWVudFRyZWVgLCA6bW9kOmBlbnVtYCwKKyAgOm1vZDpgZmlsZWlucHV0YCwgOm1vZDpgZnRwbGliYCwgOm1vZDpgbG9nZ2luZ2AsIDptb2Q6YG1haWxib3hgLAorICA6bW9kOmBtaW1ldHlwZXNgLCA6bW9kOmBvcHRwYXJzZWAsIDptb2Q6YHBsaXN0bGliYCwgOm1vZDpgc210cGRgLAorICA6bW9kOmBzdWJwcm9jZXNzYCwgOm1vZDpgdGFyZmlsZWAsIDptb2Q6YHRocmVhZGluZ2AgYW5kCisgIDptb2Q6YHdhdmVgLiAgVGhpcyBtZWFucyB0aGV5IHdpbGwgZXhwb3J0IG5ldyBzeW1ib2xzIHdoZW4gYGBpbXBvcnQgKmBgCisgIGlzIHVzZWQuCisgIChDb250cmlidXRlZCBieSBKb2VsIFRhZGRlaSBhbmQgSmFjZWsgS2/Fgm9kemllaiBpbiA6aXNzdWU6YDIzODgzYC4pCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBpZiBgYF9fcGFja2FnZV9fYGAgZG9lcyBub3QgY29tcGFyZSBlcXVhbAorICB0byBgYF9fc3BlY19fLnBhcmVudGBgIHRoZW4gOmV4YzpgSW1wb3J0V2FybmluZ2AgaXMgcmFpc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBXaGVuIGEgcmVsYXRpdmUgaW1wb3J0IGlzIHBlcmZvcm1lZCBhbmQgbm8gcGFyZW50IHBhY2thZ2UgaXMga25vd24sIHRoZW4KKyAgOmV4YzpgSW1wb3J0RXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBQcmV2aW91c2x5LCA6ZXhjOmBTeXN0ZW1FcnJvcmAgY291bGQgYmUKKyAgcmFpc2VkLiAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTgwMThgLikKKworKiBTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCisgIGRlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKyAgOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IG9ubHkgY2F0Y2ggZXhjZXB0aW9ucyBkZXJpdmVkCisgIGZyb20gOmV4YzpgRXhjZXB0aW9uYC4gVGhlcmVmb3JlIGlmIGEgcmVxdWVzdCBoYW5kbGVyIHJhaXNlcworICBhbiBleGNlcHRpb24gbGlrZSA6ZXhjOmBTeXN0ZW1FeGl0YCBvciA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAsCisgIDptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuaGFuZGxlX2Vycm9yYCBpcyBubyBsb25nZXIgY2FsbGVkLCBhbmQKKyAgdGhlIGV4Y2VwdGlvbiB3aWxsIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQgc2VydmVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDIzNDMwYC4pCisKKyogOmZ1bmM6YHNwd2QuZ2V0c3BuYW1gIG5vdyByYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCisqIFRoZSA6bWV0aDpgc29ja2V0LnNvY2tldC5jbG9zZWAgbWV0aG9kIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmCisgIGFuIGVycm9yIChlLmcuIGBgRUJBREZgYCkgd2FzIHJlcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsLgorICAoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDI2Njg1YC4pCisKKyogVGhlICpkZWNvZGVfZGF0YSogYXJndW1lbnQgZm9yIHRoZSA6Y2xhc3M6YHNtdHBkLlNNVFBDaGFubmVsYCBhbmQKKyAgOmNsYXNzOmBzbXRwZC5TTVRQU2VydmVyYCBjb25zdHJ1Y3RvcnMgaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgorICBUaGlzIG1lYW5zIHRoYXQgdGhlIGFyZ3VtZW50IHBhc3NlZCB0bworICA6bWV0aDpgfnNtdHBkLlNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlYCBpcyBub3cgYSBieXRlcyBvYmplY3QgYnkKKyAgZGVmYXVsdCwgYW5kIGBgcHJvY2Vzc19tZXNzYWdlKClgYCB3aWxsIGJlIHBhc3NlZCBrZXl3b3JkIGFyZ3VtZW50cy4KKyAgQ29kZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGRlcHJlY2F0aW9uCisgIHdhcm5pbmcgZ2VuZXJhdGVkIGJ5IDMuNSB3aWxsIG5vdCBiZSBhZmZlY3RlZC4KKworKiBBbGwgb3B0aW9uYWwgYXJndW1lbnRzIG9mIHRoZSA6ZnVuYzpgfmpzb24uZHVtcGAsIDpmdW5jOmB+anNvbi5kdW1wc2AsCisgIDpmdW5jOmB+anNvbi5sb2FkYCBhbmQgOmZ1bmM6YH5qc29uLmxvYWRzYCBmdW5jdGlvbnMgYW5kCisgIDpjbGFzczpgfmpzb24uSlNPTkVuY29kZXJgIGFuZCA6Y2xhc3M6YH5qc29uLkpTT05EZWNvZGVyYCBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIDptb2Q6YGpzb25gIG1vZHVsZSBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seQorICA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE4NzI2YC4pCisKKyogU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHR5cGVgIHdoaWNoIGRvbid0IG92ZXJyaWRlIGBgdHlwZS5fX25ld19fYGAgbWF5IG5vCisgIGxvbmdlciB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtIHRvIGdldCB0aGUgdHlwZSBvZiBhbiBvYmplY3QuCisKKyogQXMgcGFydCBvZiA6cGVwOmA0ODdgLCB0aGUgaGFuZGxpbmcgb2Yga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIHRvCisgIDpjbGFzczpgdHlwZWAgKG90aGVyIHRoYW4gdGhlIG1ldGFjbGFzcyBoaW50LCBgYG1ldGFjbGFzc2BgKSBpcyBub3cKKyAgY29uc2lzdGVudGx5IGRlbGVnYXRlZCB0byA6bWV0aDpgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYC4gVGhpcyBtZWFucyB0aGF0CisgIDptZXRoOmB0eXBlLl9fbmV3X19gIGFuZCA6bWV0aDpgdHlwZS5fX2luaXRfX2AgYm90aCBub3cgYWNjZXB0IGFyYml0cmFyeQorICBrZXl3b3JkIGFyZ3VtZW50cywgYnV0IDptZXRoOmBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gICh3aGljaCBpcyBjYWxsZWQgZnJvbQorICA6bWV0aDpgdHlwZS5fX25ld19fYCkgd2lsbCByZWplY3QgdGhlbSBieSBkZWZhdWx0LiBDdXN0b20gbWV0YWNsYXNzZXMKKyAgYWNjZXB0aW5nIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgd2lsbCBuZWVkIHRvIGFkanVzdCB0aGVpciBjYWxscyB0bworICA6bWV0aDpgdHlwZS5fX25ld19fYCAod2hldGhlciBkaXJlY3Qgb3IgdmlhIDpjbGFzczpgc3VwZXJgKSBhY2NvcmRpbmdseS4KKworKiBJbiA6Y2xhc3M6YGRpc3R1dGlscy5jb21tYW5kLnNkaXN0LnNkaXN0YCwgdGhlIGBgZGVmYXVsdF9mb3JtYXRgYAorICBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgaXMgbm8gbG9uZ2VyIGhvbm9yZWQuIEluc3RlYWQsIHRoZQorICBnemlwcGVkIHRhcmZpbGUgZm9ybWF0IGlzIHRoZSBkZWZhdWx0IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIG5vCisgIHBsYXRmb3JtLXNwZWNpZmljIHNlbGVjdGlvbiBpcyBtYWRlLgorICBJbiBlbnZpcm9ubWVudHMgd2hlcmUgZGlzdHJpYnV0aW9ucyBhcmUKKyAgYnVpbHQgb24gV2luZG93cyBhbmQgemlwIGRpc3RyaWJ1dGlvbnMgYXJlIHJlcXVpcmVkLCBjb25maWd1cmUKKyAgdGhlIHByb2plY3Qgd2l0aCBhIGBgc2V0dXAuY2ZnYGAgZmlsZSBjb250YWluaW5nIHRoZSBmb2xsb3dpbmc6OgorCisgICAgW3NkaXN0XQorICAgIGZvcm1hdHM9emlwCisKKyAgVGhpcyBiZWhhdmlvciBoYXMgYWxzbyBiZWVuIGJhY2twb3J0ZWQgdG8gZWFybGllciBQeXRob24gdmVyc2lvbnMKKyAgYnkgU2V0dXB0b29scyAyNi4wLjAuCisKKyogSW4gdGhlIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBtb2R1bGUgYW5kIHRoZQorICA6bWV0aDpgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ucmVxdWVzdGAgbWV0aG9kLCBpZiBubyBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgZmllbGQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCB0aGUgcmVxdWVzdCBib2R5IGlzIGEgZmlsZSBvYmplY3QsCisgIGl0IGlzIG5vdyBzZW50IHdpdGggSFRUUCAxLjEgY2h1bmtlZCBlbmNvZGluZy4gSWYgYSBmaWxlIG9iamVjdCBoYXMgdG8KKyAgYmUgc2VudCB0byBhIEhUVFAgMS4wIHNlcnZlciwgdGhlIENvbnRlbnQtTGVuZ3RoIHZhbHVlIG5vdyBoYXMgdG8gYmUKKyAgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIuCisgIChDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBSb2xmIEtyYWhsIHdpdGggdHdlYWtzIGZyb20KKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKyogVGhlIDpjbGFzczpgfmNzdi5EaWN0UmVhZGVyYCBub3cgcmV0dXJucyByb3dzIG9mIHR5cGUKKyAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuT3JkZXJlZERpY3RgLgorICAoQ29udHJpYnV0ZWQgYnkgU3RldmUgSG9sZGVuIGluIDppc3N1ZTpgMjc4NDJgLikKKworKiBUaGUgOmNvbnN0OmBjcnlwdC5NRVRIT0RfQ1JZUFRgIHdpbGwgbm8gbG9uZ2VyIGJlIGFkZGVkIHRvIGBgY3J5cHQubWV0aG9kc2BgCisgIGlmIHVuc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyODdgLikKKworKiBUaGUgKnZlcmJvc2UqIGFuZCAqcmVuYW1lKiBhcmd1bWVudHMgZm9yCisgIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAgYXJlIG5vdyBrZXl3b3JkLW9ubHkuCisgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDI1NjI4YC4pCisKKyogT24gTGludXgsIDpmdW5jOmBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnlgIG5vdyBsb29rcyBpbgorICBgYExEX0xJQlJBUllfUEFUSGBgIGZvciBzaGFyZWQgbGlicmFyaWVzLgorICAoQ29udHJpYnV0ZWQgYnkgVmluYXkgU2FqaXAgaW4gOmlzc3VlOmA5OTk4YC4pCisKKyogVGhlIDpjbGFzczpgaW1hcGxpYi5JTUFQNGAgY2xhc3Mgbm93IGhhbmRsZXMgZmxhZ3MgY29udGFpbmluZyB0aGUKKyAgYGAnXSdgYCBjaGFyYWN0ZXIgaW4gbWVzc2FnZXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgdG8gaW1wcm92ZQorICByZWFsLXdvcmxkIGNvbXBhdGliaWxpdHkuCisgIChDb250cmlidXRlZCBieSBMaXRhIENobyBpbiA6aXNzdWU6YDIxODE1YC4pCisKKyogVGhlIDpmdW5jOmBtbWFwLndyaXRlKCkgPG1tYXAud3JpdGU+YCBmdW5jdGlvbiBub3cgcmV0dXJucyB0aGUgbnVtYmVyCisgIG9mIGJ5dGVzIHdyaXR0ZW4gbGlrZSBvdGhlciB3cml0ZSBtZXRob2RzLgorICAoQ29udHJpYnV0ZWQgYnkgSmFrdWIgU3Rhc2lhayBpbiA6aXNzdWU6YDI2MzM1YC4pCisKKyogVGhlIDpmdW5jOmBwa2d1dGlsLml0ZXJfbW9kdWxlc2AgYW5kIDpmdW5jOmBwa2d1dGlsLndhbGtfcGFja2FnZXNgCisgIGZ1bmN0aW9ucyBub3cgcmV0dXJuIDpjbGFzczpgfnBrZ3V0aWwuTW9kdWxlSW5mb2AgbmFtZWQgdHVwbGVzLgorICAoQ29udHJpYnV0ZWQgYnkgUmFtY2hhbmRyYSBBcHRlIGluIDppc3N1ZTpgMTcyMTFgLikKKworKiA6ZnVuYzpgcmUuc3ViYCBub3cgcmFpc2VzIGFuIGVycm9yIGZvciBpbnZhbGlkIG51bWVyaWNhbCBncm91cAorICByZWZlcmVuY2VzIGluIHJlcGxhY2VtZW50IHRlbXBsYXRlcyBldmVuIGlmIHRoZSBwYXR0ZXJuIGlzIG5vdAorICBmb3VuZCBpbiB0aGUgc3RyaW5nLiAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgZ3JvdXAgcmVmZXJlbmNlcworICBub3cgaW5jbHVkZXMgdGhlIGdyb3VwIGluZGV4IGFuZCB0aGUgcG9zaXRpb24gb2YgdGhlIHJlZmVyZW5jZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNpbGVudEdob3N0LCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU5NTNgLikKKworKiA6Y2xhc3M6YHppcGZpbGUuWmlwRmlsZWAgd2lsbCBub3cgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZm9yCisgIHVucmVjb2duaXplZCBjb21wcmVzc2lvbiB2YWx1ZXMuICBQcmV2aW91c2x5IGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYAorICB3YXMgcmFpc2VkLiAgQWRkaXRpb25hbGx5LCBjYWxsaW5nIDpjbGFzczpgfnppcGZpbGUuWmlwRmlsZWAgbWV0aG9kcworICBvbiBhIGNsb3NlZCBaaXBGaWxlIG9yIGNhbGxpbmcgdGhlIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLndyaXRlYCBtZXRob2QKKyAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZCBpbiB0aG9zZSBzY2VuYXJpb3MuCisKKyogd2hlbiBjdXN0b20gbWV0YWNsYXNzZXMgYXJlIGNvbWJpbmVkIHdpdGggemVyby1hcmd1bWVudCA6ZnVuYzpgc3VwZXJgIG9yCisgIGRpcmVjdCByZWZlcmVuY2VzIGZyb20gbWV0aG9kcyB0byB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlCisgIHZhcmlhYmxlLCB0aGUgaW1wbGljaXQgYGBfX2NsYXNzY2VsbF9fYGAgbmFtZXNwYWNlIGVudHJ5IG11c3Qgbm93IGJlIHBhc3NlZAorICB1cCB0byBgYHR5cGUuX19uZXdfX2BgIGZvciBpbml0aWFsaXNhdGlvbi4gRmFpbGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbgorICBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AgaW4gMy42IGFuZCBhIDpleGM6YFJ1bnRpbWVXYXJuaW5nYCBpbiB0aGUgZnV0dXJlLgorCitDaGFuZ2VzIGluIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBhbGxvY2F0b3IgZmFtaWx5IG5vdyB1c2VzIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IKKyAgPHB5bWFsbG9jPmAgcmF0aGVyIHRoYW4gdGhlIHN5c3RlbSA6YzpmdW5jOmBtYWxsb2NgLiBBcHBsaWNhdGlvbnMgY2FsbGluZworICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIGNhbiBub3cgY3Jhc2guIFNldCB0aGUKKyAgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgYGRlYnVnYGAgdG8gdmFsaWRhdGUgdGhlCisgIHVzYWdlIG9mIG1lbW9yeSBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uIFNlZSA6aXNzdWU6YDI2MjQ5YC4KKworKiA6YzpmdW5jOmBQeV9FeGl0YCAoYW5kIHRoZSBtYWluIGludGVycHJldGVyKSBub3cgb3ZlcnJpZGUgdGhlIGV4aXQgc3RhdHVzCisgIHdpdGggMTIwIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEgZmFpbGVkLiAgU2VlIDppc3N1ZTpgNTMxOWAuCisKKworQ1B5dGhvbiBieXRlY29kZSBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgaGF2ZSBiZWVuIHNldmVyYWwgbWFqb3IgY2hhbmdlcyB0byB0aGUgOnRlcm06YGJ5dGVjb2RlYCBpbiBQeXRob24gMy42LgorCisqIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgYSAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IERlbXVyIFJ1bWVkIHdpdGggaW5wdXQgYW5kIHJldmlld3MgZnJvbQorICBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NjQ3YCBhbmQgOmlzc3VlOmAyODA1MGAuKQorCisqIFRoZSBuZXcgOm9wY29kZTpgRk9STUFUX1ZBTFVFYCBhbmQgOm9wY29kZTpgQlVJTERfU1RSSU5HYCBvcGNvZGVzIGFzIHBhcnQKKyAgb2YgdGhlICA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwgPHdoYXRzbmV3MzYtcGVwNDk4PmAgaW1wbGVtZW50YXRpb24uCisgIChDb250cmlidXRlZCBieSBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjU0ODNgIGFuZAorICBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjcwNzhgLikKKworKiBUaGUgbmV3IDpvcGNvZGU6YEJVSUxEX0NPTlNUX0tFWV9NQVBgIG9wY29kZSB0byBvcHRpbWl6ZSB0aGUgY3JlYXRpb24KKyAgb2YgZGljdGlvbmFyaWVzIHdpdGggY29uc3RhbnQga2V5cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNzE0MGAuKQorCisqIFRoZSBmdW5jdGlvbiBjYWxsIG9wY29kZXMgaGF2ZSBiZWVuIGhlYXZpbHkgcmV3b3JrZWQgZm9yIGJldHRlciBwZXJmb3JtYW5jZQorICBhbmQgc2ltcGxlciBpbXBsZW1lbnRhdGlvbi4KKyAgVGhlIDpvcGNvZGU6YE1BS0VfRlVOQ1RJT05gLCA6b3Bjb2RlOmBDQUxMX0ZVTkNUSU9OYCwKKyAgOm9wY29kZTpgQ0FMTF9GVU5DVElPTl9LV2AgYW5kIDpvcGNvZGU6YEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMYCBvcGNvZGVzCisgIGhhdmUgYmVlbiBtb2RpZmllZCwgdGhlIG5ldyA6b3Bjb2RlOmBDQUxMX0ZVTkNUSU9OX0VYYCBhbmQKKyAgOm9wY29kZTpgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTGAgaGF2ZSBiZWVuIGFkZGVkLCBhbmQKKyAgYGBDQUxMX0ZVTkNUSU9OX1ZBUmBgLCBgYENBTExfRlVOQ1RJT05fVkFSX0tXYGAgYW5kIGBgTUFLRV9DTE9TVVJFYGAgb3Bjb2RlcworICBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IERlbXVyIFJ1bWVkIGluIDppc3N1ZTpgMjcwOTVgLCBhbmQgU2VyaGl5IFN0b3JjaGFrYSBpbgorICA6aXNzdWU6YDI3MjEzYCwgOmlzc3VlOmAyODI1N2AuKQorCisqIFRoZSBuZXcgOm9wY29kZTpgU0VUVVBfQU5OT1RBVElPTlNgIGFuZCA6b3Bjb2RlOmBTVE9SRV9BTk5PVEFUSU9OYCBvcGNvZGVzCisgIGhhdmUgYmVlbiBhZGRlZCB0byBzdXBwb3J0IHRoZSBuZXcgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25gIHN5bnRheC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI3OTg1YC4pCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCBlZGI1NTAyLi43YzkyNTI0IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuNi5yc3QKICAgIDMuNS5yc3QKICAgIDMuNC5yc3QKICAgIDMuMy5yc3QKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCA0MzA3NTIzLi5iMTM5ZTlmIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0yNywyNSArMjcsMzEgQEAKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKIAogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKLXR5cGVkYXJnc2xpc3Q6ICh0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJwotICAgICAgIFsnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWZdXQotICAgICB8ICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWYpCit0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdGZwZGVmIFsnLCddKQogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLXZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmXV0KLSAgICAgfCAgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmKQordmFyYXJnc2xpc3Q6ICh2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgfCAnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKykKIHZmcGRlZjogTkFNRQogCiBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKIHNtYWxsX3N0bXQ6IChleHByX3N0bXQgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IG5vbmxvY2FsX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKIHBhc3Nfc3RtdDogJ3Bhc3MnCiBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10IHwgeWllbGRfc3RtdApAQCAtMTQwLDcgKzE0Niw3IEBACiAgICAgICAgICAgICAnKicgdGVzdCApCiAKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCi1jb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCitjb21wX2ZvcjogW0FTWU5DXSAnZm9yJyBleHBybGlzdCAnaW4nIG9yX3Rlc3QgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KIAogIyBub3QgdXNlZCBpbiBncmFtbWFyLCBidXQgbWF5IGFwcGVhciBpbiAibm9kZSIgcGFzc2VkIGZyb20gUGFyc2VyIHRvIENvbXBpbGVyCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDJkM2VhY2IuLjcwNDk0YjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC02NSwxMSArNjUsMTIgQEAKIAogZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIEFzeW5jRnVuY3Rpb25EZWZfa2luZD0yLCBDbGFzc0RlZl9raW5kPTMsCiAgICAgICAgICAgICAgICAgICBSZXR1cm5fa2luZD00LCBEZWxldGVfa2luZD01LCBBc3NpZ25fa2luZD02LAotICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgRm9yX2tpbmQ9OCwgQXN5bmNGb3Jfa2luZD05LCBXaGlsZV9raW5kPTEwLAotICAgICAgICAgICAgICAgICAgSWZfa2luZD0xMSwgV2l0aF9raW5kPTEyLCBBc3luY1dpdGhfa2luZD0xMywgUmFpc2Vfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTE1LCBBc3NlcnRfa2luZD0xNiwgSW1wb3J0X2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTgsIEdsb2JhbF9raW5kPTE5LCBOb25sb2NhbF9raW5kPTIwLAotICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTIxLCBQYXNzX2tpbmQ9MjIsIEJyZWFrX2tpbmQ9MjMsIENvbnRpbnVlX2tpbmQ9MjR9OworICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgQW5uQXNzaWduX2tpbmQ9OCwgRm9yX2tpbmQ9OSwKKyAgICAgICAgICAgICAgICAgIEFzeW5jRm9yX2tpbmQ9MTAsIFdoaWxlX2tpbmQ9MTEsIElmX2tpbmQ9MTIsIFdpdGhfa2luZD0xMywKKyAgICAgICAgICAgICAgICAgIEFzeW5jV2l0aF9raW5kPTE0LCBSYWlzZV9raW5kPTE1LCBUcnlfa2luZD0xNiwKKyAgICAgICAgICAgICAgICAgIEFzc2VydF9raW5kPTE3LCBJbXBvcnRfa2luZD0xOCwgSW1wb3J0RnJvbV9raW5kPTE5LAorICAgICAgICAgICAgICAgICAgR2xvYmFsX2tpbmQ9MjAsIE5vbmxvY2FsX2tpbmQ9MjEsIEV4cHJfa2luZD0yMiwgUGFzc19raW5kPTIzLAorICAgICAgICAgICAgICAgICAgQnJlYWtfa2luZD0yNCwgQ29udGludWVfa2luZD0yNX07CiBzdHJ1Y3QgX3N0bXQgewogICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTExOCw2ICsxMTksMTMgQEAKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgc2ltcGxlOworICAgICAgICB9IEFubkFzc2lnbjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKICAgICAgICAgICAgIGV4cHJfdHkgaXRlcjsKICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKQEAgLTIwMSw5ICsyMDksMTAgQEAKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKICAgICAgICAgICAgICAgICAgIEF3YWl0X2tpbmQ9MTIsIFlpZWxkX2tpbmQ9MTMsIFlpZWxkRnJvbV9raW5kPTE0LAogICAgICAgICAgICAgICAgICAgQ29tcGFyZV9raW5kPTE1LCBDYWxsX2tpbmQ9MTYsIE51bV9raW5kPTE3LCBTdHJfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEJ5dGVzX2tpbmQ9MTksIE5hbWVDb25zdGFudF9raW5kPTIwLCBFbGxpcHNpc19raW5kPTIxLAotICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjIsIFN1YnNjcmlwdF9raW5kPTIzLCBTdGFycmVkX2tpbmQ9MjQsCi0gICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjUsIExpc3Rfa2luZD0yNiwgVHVwbGVfa2luZD0yN307CisgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9raW5kPTE5LCBKb2luZWRTdHJfa2luZD0yMCwgQnl0ZXNfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIE5hbWVDb25zdGFudF9raW5kPTIyLCBFbGxpcHNpc19raW5kPTIzLCBDb25zdGFudF9raW5kPTI0LAorICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjUsIFN1YnNjcmlwdF9raW5kPTI2LCBTdGFycmVkX2tpbmQ9MjcsCisgICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjgsIExpc3Rfa2luZD0yOSwgVHVwbGVfa2luZD0zMH07CiBzdHJ1Y3QgX2V4cHIgewogICAgIGVudW0gX2V4cHJfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTI5Nyw2ICszMDYsMTYgQEAKICAgICAgICAgfSBTdHI7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICAgICAgZXhwcl90eSBmb3JtYXRfc3BlYzsKKyAgICAgICAgfSBGb3JtYXR0ZWRWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBhc2RsX3NlcSAqdmFsdWVzOworICAgICAgICB9IEpvaW5lZFN0cjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBieXRlcyBzOwogICAgICAgICB9IEJ5dGVzOwogICAgICAgICAKQEAgLTMwNSw2ICszMjQsMTAgQEAKICAgICAgICAgfSBOYW1lQ29uc3RhbnQ7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgY29uc3RhbnQgdmFsdWU7CisgICAgICAgIH0gQ29uc3RhbnQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CkBAIC0zNjYsNiArMzg5LDcgQEAKICAgICBleHByX3R5IHRhcmdldDsKICAgICBleHByX3R5IGl0ZXI7CiAgICAgYXNkbF9zZXEgKmlmczsKKyAgICBpbnQgaXNfYXN5bmM7CiB9OwogCiBlbnVtIF9leGNlcHRoYW5kbGVyX2tpbmQge0V4Y2VwdEhhbmRsZXJfa2luZD0xfTsKQEAgLTQ0Niw2ICs0NzAsOSBAQAogI2RlZmluZSBBdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0F1Z0Fzc2lnbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfQXVnQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBvcGVyYXRvcl90eSBvcCwgZXhwcl90eSB2YWx1ZSwgaW50CiAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Bbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9Bbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50CisgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Gb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCiBzdG10X3R5IF9QeV9Gb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqCiAgICAgICAgICAgICAgICAgb3JlbHNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNTQzLDYgKzU3MCwxMiBAQAogZXhwcl90eSBfUHlfTnVtKG9iamVjdCBuLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEZvcm1hdHRlZFZhbHVlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Gb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQorZXhwcl90eSBfUHlfRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBKb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9Kb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Kb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQnl0ZXMoYTAsIGExLCBhMiwgYTMpIF9QeV9CeXRlcyhhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIE5hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykgX1B5X05hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykKQEAgLTU1MCw2ICs1ODMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9Db25zdGFudChhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0F0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU3NCw5ICs2MTAsOSBAQAogc2xpY2VfdHkgX1B5X0V4dFNsaWNlKGFzZGxfc2VxICogZGltcywgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBJbmRleChhMCwgYTEpIF9QeV9JbmRleChhMCwgYTEpCiBzbGljZV90eSBfUHlfSW5kZXgoZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBjb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzKSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykKKyNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9jb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzLCBhNCkKIGNvbXByZWhlbnNpb25fdHkgX1B5X2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnMsIFB5QXJlbmEgKmFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBpbnQgaXNfYXN5bmMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhjZXB0aGFuZGxlcl90eSBfUHlfRXhjZXB0SGFuZGxlcihleHByX3R5IHR5cGUsIGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggODU4ZGJkMS4uNGM3YzlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJweWxpZmVjeWNsZS5oIgogI2luY2x1ZGUgImNldmFsLmgiCiAjaW5jbHVkZSAic3lzbW9kdWxlLmgiCisjaW5jbHVkZSAib3Ntb2R1bGUuaCIKICNpbmNsdWRlICJpbnRyY2hlY2suaCIKICNpbmNsdWRlICJpbXBvcnQuaCIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDdkYmJiNzQuLjdkMTM3YTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNyArNyw5IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0yNjQsMTkgKzI2Niw5NyBAQAogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKIAogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKLSAgICAgTlVMTCwgYnV0IHRoZSAna3cnIGFyZ3VtZW50IGNhbiBiZSBOVUxMLgorICAgICBOVUxMLgogICAgICAgICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5U3RhY2tfQXNUdXBsZSgKKyAgICAgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyk7CisKKyAgICAvKiBDb252ZXJ0IGtleXdvcmQgYXJndW1lbnRzIGZyb20gdGhlIChzdGFjaywga3duYW1lcykgZm9ybWF0IHRvIGEgUHl0aG9uCisgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUuIGt3bmFtZXMgaXMgbm90IGNoZWNrZWQsIHVzdWFsbHkgdGhlc2UgY2hlY2tzIGFyZSBkb25lIGJlZm9yZSBvciBsYXRlcgorICAgICAgIGNhbGxpbmcgX1B5U3RhY2tfQXNEaWN0KCkuIEZvciBleGFtcGxlLCBfUHlBcmdfUGFyc2VTdGFjaygpIHJhaXNlcyBhbgorICAgICAgIGVycm9yIGlmIGEga2V5IGlzIG5vdCBhIHN0cmluZy4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN0YWNrX0FzRGljdCgKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZXMsCisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKworICAgIC8qIENvbnZlcnQgKGFyZ3MsIG5hcmdzLCBrd2FyZ3MpIGludG8gYSAoc3RhY2ssIG5hcmdzLCBrd25hbWVzKS4KKworICAgICAgIFJldHVybiBhIG5ldyBzdGFjayB3aGljaCBzaG91bGQgYmUgcmVsZWFzZWQgYnkgUHlNZW1fRnJlZSgpLCBvciByZXR1cm4KKyAgICAgICBhcmdzIHVuY2hhbmdlZCBpZiBrd2FyZ3MgaXMgTlVMTCBvciBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorCisgICAgICAgVGhlIHN0YWNrIHVzZXMgYm9ycm93ZWQgcmVmZXJlbmNlcy4KKworICAgICAgIFRoZSB0eXBlIG9mIGtleXdvcmQga2V5cyBpcyBub3QgY2hlY2tlZCwgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSBkb25lCisgICAgICAgbGF0ZXIgKGV4OiBfUHlBcmdfUGFyc2VTdGFjaykuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5U3RhY2tfVW5wYWNrRGljdCgKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsCisgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworICAgIC8qIENhbGwgdGhlIGNhbGxhYmxlIG9iamVjdCBmdW5jIHdpdGggdGhlICJmYXN0IGNhbGwiIGNhbGxpbmcgY29udmVudGlvbjoKKyAgICAgICBhcmdzIGlzIGEgQyBhcnJheSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMgKG5hcmdzIGlzIHRoZSBudW1iZXIgb2YKKyAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50cyksIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybywgYXJncyBjYW4gYmUgTlVMTC4ga3dhcmdzIGNhbiBiZSBOVUxMLgorICAgICAgIG5hcmdzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB6ZXJvLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIG9uIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmb2xsb3dlZCBieSB2YWx1ZXMgb2YKKyAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gS2V5cyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3RvcmVkIGFzIGEgdHVwbGUKKyAgICAgICBvZiBzdHJpbmdzIGluIGt3bmFtZXMuIG5hcmdzIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGF0CisgICAgICAgdGhlIGJlZ2lubmluZyBvZiBzdGFjay4gVGhlIHNpemUgb2Yga3duYW1lcyBnaXZlcyB0aGUgbnVtYmVyIG9mIGtleXdvcmQKKyAgICAgICB2YWx1ZXMgaW4gdGhlIHN0YWNrIGFmdGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4KKworICAgICAgIElmIG5hcmdzIGlzIGVxdWFsIHRvIHplcm8gYW5kIHRoZXJlIGlzIG5vIGtleXdvcmQgYXJndW1lbnQgKGt3bmFtZXMgaXMKKyAgICAgICBOVUxMIG9yIGl0cyBzaXplIGlzIHplcm8pLCBhcmdzIGNhbiBiZSBOVUxMLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbgorICAgICAgIGVycm9yLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMKKyAgICAgICAoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisjZGVmaW5lIF9QeU9iamVjdF9GYXN0Q2FsbChmdW5jLCBhcmdzLCBuYXJncykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKGZ1bmMpLCAoYXJncyksIChuYXJncyksIE5VTEwpCisKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgTlVMTCwgMCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgYXJnKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgJihhcmcpLCAxKQorCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoZXJlKTsKLSNlbmRpZgorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxPYmplY3QoUHlPYmplY3QgKmNhbGxhYmxlX29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKTsKQEAgLTMxNSw2ICszOTUsNyBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwpAQCAtMzIzLDYgKzQwNCw3IEBACiAgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCiAgICAgICAgICBtZXRob2QgbmFtZS4KICAgICAgICAqLworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCkBAIC0zMzEsMTAgKzQxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTM1MCw5ICs0MzQsMTEgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRob2QsIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtNjY0LDExICs3NTAsMTMgQEAKICAgICAgbzEqbzIuCiAgICAgICAgKi8KIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9NYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiAKICAgICAgICAvKgogICAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbjogbzEgQCBvMi4KICAgICAgICAqLworI2VuZGlmCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiAKQEAgLTg0NCwxMSArOTMyLDEzIEBACiAgICAgIG8xICo9IG8yLgogICAgICAgICovCiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIAogICAgICAgIC8qCiAgICAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uOiBvMSBAPSBvMi4KICAgICAgICAqLworI2VuZGlmCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbzIpOwpAQCAtMTI3MCwxMyArMTM2MCwxMyBAQAogUHlBUElfRlVOQyhjaGFyICpjb25zdCAqKSBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheShQeU9iamVjdCogc2VsZik7CiAKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0ZyZWVDaGFyUEFycmF5KGNoYXIgKmNvbnN0IGFycmF5W10pOwotI2VuZGlmCiAKIC8qIEZvciBpbnRlcm5hbCB1c2UgYnkgYnVmZmVyIEFQSSBmdW5jdGlvbnMgKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfRihpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfQyhpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggNDk1MTUzYy4uMzVlOWZhMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTYsNiArNiw3IEBACiB0eXBlZGVmIFB5T2JqZWN0ICogYnl0ZXM7CiB0eXBlZGVmIFB5T2JqZWN0ICogb2JqZWN0OwogdHlwZWRlZiBQeU9iamVjdCAqIHNpbmdsZXRvbjsKK3R5cGVkZWYgUHlPYmplY3QgKiBjb25zdGFudDsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CiAgICBpbmRlcGVuZGVudCBvZiBQeXRob24sIGJ1dCBpdCBpcyBhIGdvYWwgdGhlIHJlcXVpcmVzIHRvbyBtdWNoIHdvcmsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKaW5kZXggMTFkNWY0Mi4uN2ZhNzU0MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKKysrIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKQEAgLTE3LDkgKzE3LDE4IEBACiAvKiBUaGVzZSBzdG9yZSB0aGVpciBsZW4gc2l6ZWQgYW5zd2VyIGluIHRoZSBnaXZlbiBwcmVhbGxvY2F0ZWQgKnJlc3VsdCBhcmcuICovCiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfbG93ZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7CiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdXBwZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKLWV4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworCitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19jb3VudChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gaW50IF9QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3N0YXJ0c3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZW5kc3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOwogCiAvKiBUaGUgbWFrZXRyYW5zKCkgc3RhdGljIG1ldGhvZC4gKi8KIGV4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CkBAIC0zNyw3ICs0NiwxOSBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3RpdGxlX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NhcGl0YWxpemVfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfc3dhcGNhc2VfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY291bnRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9pbmRleF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfc3RhcnRzd2l0aF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9lbmRzd2l0aF9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9tYWtldHJhbnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZXhwYW5kdGFic19fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9sanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9jZW50ZXJfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfemZpbGxfX2RvY19fW107CiAKIC8qIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBkb2NzIGFyZSBzaGFyZWQgZnJvbSB0aGUgLm8sIG5vdCBzdGF0aWMgKi8KICNkZWZpbmUgUHlEb2NfU1RSVkFSX3NoYXJlZChuYW1lLHN0cikgY29uc3QgY2hhciBuYW1lW10gPSBQeURvY19TVFIoc3RyKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IDZjMWUwYzMuLjBmMGJmOWYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDExICs2MiwyNSBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zvcm1hdEV4KAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zyb21IZXgoCisgICAgUHlPYmplY3QgKnN0cmluZywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIEhlbHBlciBmb3IgUHlCeXRlc19EZWNvZGVFc2NhcGUgdGhhdCBkZXRlY3RzIGludmFsaWQgZXNjYXBlIGNoYXJzLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKik7CisjZW5kaWYKIAogLyogTWFjcm8sIHRyYWRpbmcgc2FmZXR5IGZvciBzcGVlZCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTIzLDYgKzEzNyw4NyBAQAogI2RlZmluZSBGX0FMVAkoMTw8MykKICNkZWZpbmUgRl9aRVJPCSgxPDw0KQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBUaGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlIGlzIGJpZzogaXQgY29udGFpbnMgYW4gZW1iZWRkZWQgInN0YWNrIGJ1ZmZlciIuCisgICBBIF9QeUJ5dGVzV3JpdGVyIHZhcmlhYmxlIG11c3QgYmUgZGVjbGFyZWQgYXQgdGhlIGVuZCBvZiB2YXJpYWJsZXMgaW4gYQorICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uIHRoZSBzdGFjay4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBieXRlcywgYnl0ZWFycmF5IG9yIE5VTEwgKHdoZW4gdGhlIHNtYWxsIGJ1ZmZlciBpcyB1c2VkKSAqLworICAgIFB5T2JqZWN0ICpidWZmZXI7CisKKyAgICAvKiBOdW1iZXIgb2YgYWxsb2NhdGVkIHNpemUuICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7CisKKyAgICAvKiBNaW5pbXVtIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMsCisgICAgICAgaW5jcmVtZW50ZWQgYnkgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgpICovCisgICAgUHlfc3NpemVfdCBtaW5fc2l6ZTsKKworICAgIC8qIElmIG5vbi16ZXJvLCB1c2UgYSBieXRlYXJyYXkgaW5zdGVhZCBvZiBhIGJ5dGVzIG9iamVjdCBmb3IgYnVmZmVyLiAqLworICAgIGludCB1c2VfYnl0ZWFycmF5OworCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4KKyAgICAgICBUaGlzIGZsYWcgbXVzdCBiZSB6ZXJvIGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uICovCisgICAgaW50IG92ZXJhbGxvY2F0ZTsKKworICAgIC8qIFN0YWNrIGJ1ZmZlciAqLworICAgIGludCB1c2Vfc21hbGxfYnVmZmVyOworICAgIGNoYXIgc21hbGxfYnVmZmVyWzUxMl07Cit9IF9QeUJ5dGVzV3JpdGVyOworCisvKiBJbml0aWFsaXplIGEgYnl0ZXMgd3JpdGVyCisKKyAgIEJ5IGRlZmF1bHQsIHRoZSBvdmVyYWxsb2NhdGlvbiBpcyBkaXNhYmxlZC4gU2V0IHRoZSBvdmVyYWxsb2NhdGUgYXR0cmlidXRlCisgICB0byBjb250cm9sIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEdldCB0aGUgYnVmZmVyIGNvbnRlbnQgYW5kIHJlc2V0IHRoZSB3cml0ZXIuCisgICBSZXR1cm4gYSBieXRlcyBvYmplY3QsIG9yIGEgYnl0ZWFycmF5IG9iamVjdCBpZiB1c2VfYnl0ZWFycmF5IGlzIG5vbi16ZXJvLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyKTsKKworLyogRGVhbGxvY2F0ZSBtZW1vcnkgb2YgYSB3cml0ZXIgKGNsZWFyIGl0cyBpbnRlcm5hbCBidWZmZXIpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpOworCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIEVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIHdyaXRlICpzaXplKiBieXRlcy4KKyAgIEFkZCBzaXplIHRvIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBzdHIgaXMgdGhlIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBSZXNpemUgdGhlIGJ1ZmZlciB0byBtYWtlIGl0IGxhcmdlci4KKyAgIFRoZSBuZXcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBzaXplIGJ5dGVzIGJlY2F1c2Ugb2Ygb3ZlcmFsbG9jYXRpb24uCisgICBSZXR1cm4gdGhlIHVwZGF0ZWQgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4KKworICAgTm90ZTogc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcyBpbiB0aGUgd3JpdGVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBTZWUgYWxzbyBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkuCisgICAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFdyaXRlIGJ5dGVzLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgY29uc3Qgdm9pZCAqYnl0ZXMsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NldmFsLmggYi9JbmNsdWRlL2NldmFsLmgKaW5kZXggYjUzNzNhOS4uODljNjA2MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jZXZhbC5oCisrKyBiL0luY2x1ZGUvY2V2YWwuaApAQCAtOCw3ICs4LDcgQEAKIC8qIEludGVyZmFjZSB0byByYW5kb20gcGFydHMgaW4gY2V2YWwuYyAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKAotICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKIC8qIElubGluZSB0aGlzICovCiAjZGVmaW5lIFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsYXJnKSBcCkBAIC0yNSw2ICsyNSwxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0VHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCk7CiAjZW5kaWYKIAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KQEAgLTExOSw2ICsxMjMsOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfR2V0Q2FsbFN0YXRzKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfRXZhbEZyYW1lKHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWVFeChzdHJ1Y3QgX2ZyYW1lICpmLCBpbnQgZXhjKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2VuZGlmCiAKIC8qIEludGVyZmFjZSBmb3IgdGhyZWFkcy4KIApAQCAtMTcyLDcgKzE3OSw5IEBACiAKIFB5QVBJX0ZVTkMoaW50KSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0luaXRUaHJlYWRzKHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX0ZpbmlUaHJlYWRzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZUxvY2sodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9SZWxlYXNlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0FjcXVpcmVUaHJlYWQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKQEAgLTE4NCw2ICsxOTMsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgX1B5RXZhbF9HZXRTd2l0Y2hJbnRlcnZhbCh2b2lkKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jKTsKKyNlbmRpZgorCiAjZGVmaW5lIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgX3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOwpAQCAtMjA2LDYgKzIxOSwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NpZ25hbEFzeW5jRXhjKHZvaWQpOwogI2VuZGlmCiAKKy8qIE1hc2tzIGFuZCB2YWx1ZXMgdXNlZCBieSBGT1JNQVRfVkFMVUUgb3Bjb2RlLiAqLworI2RlZmluZSBGVkNfTUFTSyAgICAgIDB4MworI2RlZmluZSBGVkNfTk9ORSAgICAgIDB4MAorI2RlZmluZSBGVkNfU1RSICAgICAgIDB4MQorI2RlZmluZSBGVkNfUkVQUiAgICAgIDB4MgorI2RlZmluZSBGVkNfQVNDSUkgICAgIDB4MworI2RlZmluZSBGVlNfTUFTSyAgICAgIDB4NAorI2RlZmluZSBGVlNfSEFWRV9TUEVDIDB4NAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggOGVjZjM4YS4uYzVmY2UzYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTcsNiArNywxNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB1aW50MTZfdCBfUHlfQ09ERVVOSVQ7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgPj4gOCkKKyMgIGRlZmluZSBfUHlfT1BBUkcod29yZCkgKCh3b3JkKSAmIDI1NSkKKyNlbHNlCisjICBkZWZpbmUgX1B5X09QQ09ERSh3b3JkKSAoKHdvcmQpICYgMjU1KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpID4+IDgpCisjZW5kaWYKKwogLyogQnl0ZWNvZGUgb2JqZWN0ICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTUsMjYgKzI1LDI5IEBACiAgICAgaW50IGNvX25sb2NhbHM7CQkvKiAjbG9jYWwgdmFyaWFibGVzICovCiAgICAgaW50IGNvX3N0YWNrc2l6ZTsJCS8qICNlbnRyaWVzIG5lZWRlZCBmb3IgZXZhbHVhdGlvbiBzdGFjayAqLwogICAgIGludCBjb19mbGFnczsJCS8qIENPXy4uLiwgc2VlIGJlbG93ICovCisgICAgaW50IGNvX2ZpcnN0bGluZW5vOyAgIC8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwogICAgIFB5T2JqZWN0ICpjb19jb2RlOwkJLyogaW5zdHJ1Y3Rpb24gb3Bjb2RlcyAqLwogICAgIFB5T2JqZWN0ICpjb19jb25zdHM7CS8qIGxpc3QgKGNvbnN0YW50cyB1c2VkKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lczsJCS8qIGxpc3Qgb2Ygc3RyaW5ncyAobmFtZXMgdXNlZCkgKi8KICAgICBQeU9iamVjdCAqY29fdmFybmFtZXM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGxvY2FsIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIFB5T2JqZWN0ICpjb19mcmVldmFyczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAoZnJlZSB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fY2VsbHZhcnM7ICAgICAgLyogdHVwbGUgb2Ygc3RyaW5ncyAoY2VsbCB2YXJpYWJsZSBuYW1lcykgKi8KLSAgICAvKiBUaGUgcmVzdCBhcmVuJ3QgdXNlZCBpbiBlaXRoZXIgaGFzaCBvciBjb21wYXJpc29ucywgZXhjZXB0IGZvcgotICAgICAgIGNvX25hbWUgKHVzZWQgaW4gYm90aCkgYW5kIGNvX2ZpcnN0bGluZW5vICh1c2VkIG9ubHkgaW4KLSAgICAgICBjb21wYXJpc29ucykuICBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmUgdGhlIG5hbWUgYW5kIGxpbmUgbnVtYmVyCisgICAgLyogVGhlIHJlc3QgYXJlbid0IHVzZWQgaW4gZWl0aGVyIGhhc2ggb3IgY29tcGFyaXNvbnMsIGV4Y2VwdCBmb3IgY29fbmFtZSwKKyAgICAgICB1c2VkIGluIGJvdGguIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIKICAgICAgICBmb3IgdHJhY2ViYWNrcyBhbmQgZGVidWdnZXJzOyBvdGhlcndpc2UsIGNvbnN0YW50IGRlLWR1cGxpY2F0aW9uCiAgICAgICAgd291bGQgY29sbGFwc2UgaWRlbnRpY2FsIGZ1bmN0aW9ucy9sYW1iZGFzIGRlZmluZWQgb24gZGlmZmVyZW50IGxpbmVzLgogICAgICovCiAgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwotICAgIGludCBjb19maXJzdGxpbmVubzsJCS8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwogICAgIFB5T2JqZWN0ICpjb19sbm90YWI7CS8qIHN0cmluZyAoZW5jb2RpbmcgYWRkcjwtPmxpbmVubyBtYXBwaW5nKSBTZWUKIAkJCQkgICBPYmplY3RzL2xub3RhYl9ub3Rlcy50eHQgZm9yIGRldGFpbHMuICovCiAgICAgdm9pZCAqY29fem9tYmllZnJhbWU7ICAgICAvKiBmb3Igb3B0aW1pemF0aW9uIG9ubHkgKHNlZSBmcmFtZW9iamVjdC5jKSAqLwogICAgIFB5T2JqZWN0ICpjb193ZWFrcmVmbGlzdDsgICAvKiB0byBzdXBwb3J0IHdlYWtyZWZzIHRvIGNvZGUgb2JqZWN0cyAqLworICAgIC8qIFNjcmF0Y2ggc3BhY2UgZm9yIGV4dHJhIGRhdGEgcmVsYXRpbmcgdG8gdGhlIGNvZGUgb2JqZWN0LgorICAgICAgIFR5cGUgaXMgYSB2b2lkKiB0byBrZWVwIHRoZSBmb3JtYXQgcHJpdmF0ZSBpbiBjb2Rlb2JqZWN0LmMgdG8gZm9yY2UKKyAgICAgICBwZW9wbGUgdG8gZ28gdGhyb3VnaCB0aGUgcHJvcGVyIEFQSXMuICovCisgICAgdm9pZCAqY29fZXh0cmE7CiB9IFB5Q29kZU9iamVjdDsKIAogLyogTWFza3MgZm9yIGNvX2ZsYWdzIGFib3ZlICovCkBAIC01NSw2ICs2OCw3IEBACiAgICBgYGFzeW5jIGRlZmBgIGtleXdvcmRzKSAqLwogI2RlZmluZSBDT19DT1JPVVRJTkUgICAgICAgICAgICAweDAwODAKICNkZWZpbmUgQ09fSVRFUkFCTEVfQ09ST1VUSU5FICAgMHgwMTAwCisjZGVmaW5lIENPX0FTWU5DX0dFTkVSQVRPUiAgICAgIDB4MDIwMAogCiAvKiBUaGVzZSBhcmUgbm8gbG9uZ2VyIHVzZWQuICovCiAjaWYgMApAQCAtMTI2LDcgKzE0MCwxNSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxpbmVub19vYmopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICpsbm90YWIpOworCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb2RlX0dldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmV4dHJhKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb2RlX1NldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZXh0cmEpOworI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlY3MuaCBiL0luY2x1ZGUvY29kZWNzLmgKaW5kZXggZjgyNzVhMS4uM2FkMGYyYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlY3MuaAorKysgYi9JbmNsdWRlL2NvZGVjcy5oCkBAIC0yMjUsMTAgKzIyNSwxNCBAQAogLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXHgsIFx1IGFuZCBcVSkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpOwogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAogLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXE4sIFx4LCBcdSBhbmQgXFUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CisjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X2hleGRpZ2l0czsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGF0ZXRpbWUuaCBiL0luY2x1ZGUvZGF0ZXRpbWUuaAppbmRleCAwNmNiYzRhLi4zYmYzNWNiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RhdGV0aW1lLmgKKysrIGIvSW5jbHVkZS9kYXRldGltZS5oCkBAIC04MSw2ICs4MSw3IEBACiB0eXBlZGVmIHN0cnVjdAogewogICAgIF9QeURhdGVUaW1lX1RJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfVGltZTsgICAgICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEwOCw2ICsxMDksNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9EQVRFVElNRUhFQUQKKyAgICB1bnNpZ25lZCBjaGFyIGZvbGQ7CiAgICAgUHlPYmplY3QgKnR6aW5mbzsKIH0gUHlEYXRlVGltZV9EYXRlVGltZTsgICAgICAgICAgLyogaGFzdHppbmZvIHRydWUgKi8KIApAQCAtMTI1LDYgKzEyNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzddIDw8IDE2KSB8ICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOF0gPDwgOCkgIHwgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs5XSkKKyNkZWZpbmUgUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xEKG8pICAgICAgICAoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+Zm9sZCkKIAogLyogQXBwbHkgZm9yIHRpbWUgaW5zdGFuY2VzLiAqLwogI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbMF0pCkBAIC0xMzQsNiArMTM3LDcgQEAKICAgICAoKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVszXSA8PCAxNikgfCAgICAgICAgICAgXAogICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzRdIDw8IDgpICB8ICAgICAgICAgICBcCiAgICAgICAoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+Zm9sZCkKIAogLyogQXBwbHkgZm9yIHRpbWUgZGVsdGEgaW5zdGFuY2VzICovCiAjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMobykgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+ZGF5cykKQEAgLTE2Miw2ICsxNjYsMTEgQEAKICAgICBQeU9iamVjdCAqKCpEYXRlVGltZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqKTsKICAgICBQeU9iamVjdCAqKCpEYXRlX0Zyb21UaW1lc3RhbXApKFB5T2JqZWN0KiwgUHlPYmplY3QqKTsKIAorICAgIC8qIFBFUCA0OTUgY29uc3RydWN0b3JzICovCisgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCkoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAgICBQeU9iamVjdCosIGludCwgUHlUeXBlT2JqZWN0Kik7CisgICAgUHlPYmplY3QgKigqVGltZV9Gcm9tVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworCiB9IFB5RGF0ZVRpbWVfQ0FQSTsKIAogI2RlZmluZSBQeURhdGVUaW1lX0NBUFNVTEVfTkFNRSAiZGF0ZXRpbWUuZGF0ZXRpbWVfQ0FQSSIKQEAgLTIxNywxMCArMjI2LDE4IEBACiAgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIFwKICAgICAgICAgbWluLCBzZWMsIHVzZWMsIFB5X05vbmUsIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lVHlwZSkKIAorI2RlZmluZSBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWluLCBzZWMsIHVzZWMsIGZvbGQpIFwKKyAgICBQeURhdGVUaW1lQVBJLT5EYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIFwKKyAgICAgICAgbWluLCBzZWMsIHVzZWMsIFB5X05vbmUsIGZvbGQsIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lVHlwZSkKKwogI2RlZmluZSBQeVRpbWVfRnJvbVRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQpIFwKICAgICBQeURhdGVUaW1lQVBJLT5UaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBcCiAgICAgICAgIFB5X05vbmUsIFB5RGF0ZVRpbWVBUEktPlRpbWVUeXBlKQogCisjZGVmaW5lIFB5VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIFwKKyAgICBQeURhdGVUaW1lQVBJLT5UaW1lX0Zyb21UaW1lQW5kRm9sZChob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAorICAgICAgICBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKKwogI2RlZmluZSBQeURlbHRhX0Zyb21EU1UoZGF5cywgc2Vjb25kcywgdXNlY29uZHMpIFwKICAgICBQeURhdGVUaW1lQVBJLT5EZWx0YV9Gcm9tRGVsdGEoZGF5cywgc2Vjb25kcywgdXNlY29uZHMsIDEsIFwKICAgICAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFUeXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCmluZGV4IGUyYmE5N2YuLjhmM2U4NGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaAorKysgYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKQEAgLTc4LDcgKzc4LDkgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1ldGhvZERlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlXcmFwcGVyRGVzY3JfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RQcm94eV9UeXBlOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU1ldGhvZFdyYXBwZXJfVHlwZTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3TWV0aG9kKFB5VHlwZU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEZXNjcl9OZXdDbGFzc01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGUwZTFjMjYuLjZlZjVlMDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0yMiw4ICsyMiwyMSBAQAogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAorCisgICAgLyogTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICovCiAgICAgUHlfc3NpemVfdCBtYV91c2VkOworCisgICAgLyogRGljdGlvbmFyeSB2ZXJzaW9uOiBnbG9iYWxseSB1bmlxdWUsIHZhbHVlIGNoYW5nZSBlYWNoIHRpbWUKKyAgICAgICB0aGUgZGljdGlvbmFyeSBpcyBtb2RpZmllZCAqLworICAgIHVpbnQ2NF90IG1hX3ZlcnNpb25fdGFnOworCiAgICAgUHlEaWN0S2V5c09iamVjdCAqbWFfa2V5czsKKworICAgIC8qIElmIG1hX3ZhbHVlcyBpcyBOVUxMLCB0aGUgdGFibGUgaXMgImNvbWJpbmVkIjoga2V5cyBhbmQgdmFsdWVzCisgICAgICAgYXJlIHN0b3JlZCBpbiBtYV9rZXlzLgorCisgICAgICAgSWYgbWFfdmFsdWVzIGlzIG5vdCBOVUxMLCB0aGUgdGFibGUgaXMgc3BsaXR0ZWQ6CisgICAgICAga2V5cyBhcmUgc3RvcmVkIGluIG1hX2tleXMgYW5kIHZhbHVlcyBhcmUgc3RvcmVkIGluIG1hX3ZhbHVlcyAqLwogICAgIFB5T2JqZWN0ICoqbWFfdmFsdWVzOwogfSBQeURpY3RPYmplY3Q7CiAKQEAgLTYwLDkgKzczLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X1NldERlZmF1bHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdG9iaik7CiAjZW5kaWYKQEAgLTEwMSw3ICsxMTQsNyBAQAogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKm1wKTsKIFB5X3NzaXplX3QgX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKIFB5X3NzaXplX3QgX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICopOwotUHlPYmplY3QgKl9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9Qb3AoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQogCkBAIC0xMjEsNiArMTM0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlEaWN0X01lcmdlLCBidXQgb3ZlcnJpZGUgY2FuIGJlIDAsIDEgb3IgMi4gIElmIG92ZXJyaWRlIGlzIDAsCisgICB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAxLCB0aGUgbGFzdCBvY2N1cnJlbmNlCisgICBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAyLCBhIEtleUVycm9yIHdpdGggY29uZmxpY3Rpbmcga2V5IGFzCisgICBhcmd1bWVudCBpcyByYWlzZWQuCisqLworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTWVyZ2VFeChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICpvdGhlciwgaW50IG92ZXJyaWRlKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOwogI2VuZGlmCiAKQEAgLTEzNCw5ICsxNTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDAzMTU1ZDMuLjYxMjBlNTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0yMyw2ICsyMyw5IEBACiAgICBJZiBub24tTlVMTCwgdGhpcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3Igc3RyaW5ncwogKi8KIFB5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNjAwMDAKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yczsKKyNlbmRpZgogUHlBUElfREFUQShpbnQpIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc7CiAKIC8qIEludGVybmFsIEFQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggYjRhNjgzYy4uYjkzM2U5OCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC01LDggKzUsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7Ci0KKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCiBQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfRGVjb2RlTG9jYWxlKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpAQCAtMTQsOSArMTMsMTIgQEAKIFB5QVBJX0ZVTkMoY2hhciopIFB5X0VuY29kZUxvY2FsZSgKICAgICBjb25zdCB3Y2hhcl90ICp0ZXh0LAogICAgIHNpemVfdCAqZXJyb3JfcG9zKTsKKyNlbmRpZgogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOworCiAjaWZkZWYgTVNfV0lORE9XUwogc3RydWN0IF9QeV9zdGF0X3N0cnVjdCB7CiAgICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7CkBAIC00NiwxMyArNDgsMTEgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXRfbm9yYWlzZSgKICAgICBpbnQgZmQsCiAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKTsKLSNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc3RhdCgKICAgICBQeU9iamVjdCAqcGF0aCwKICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdHVzKTsKIAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7CkBAIC02MCw3ICs2MCw2IEBACiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW5fbm9yYWlzZSgKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoRklMRSAqKSBfUHlfd2ZvcGVuKAogICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC0xMDcsNyArMTA2LDYgQEAKICAgICB3Y2hhcl90ICpidWYsCiAgICAgc2l6ZV90IHNpemUpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X2dldF9pbmhlcml0YWJsZShpbnQgZmQpOwogCiBQeUFQSV9GVU5DKGludCkgX1B5X3NldF9pbmhlcml0YWJsZShpbnQgZmQsIGludCBpbmhlcml0YWJsZSwKQEAgLTEyMSwxOCArMTE5LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKTsKICNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCiAKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAotICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKLSAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCi0gKiBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAqLwotaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOwotCi0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCi0jZW5kaWYKLQogI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKaW5kZXggZTI0MGZkYi4uZjEwNDRkNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaApAQCAtNzQsOSArNzQsOSBAQAogICogaGFwcGVucyBpbiBzdWNoIGNhc2VzIGlzIHBhcnRseSBhY2NpZGVudGFsIChhbGFzKS4KICAqLwogCi0vKiBUaGUgcGFjayByb3V0aW5lcyB3cml0ZSA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDIsIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAogICogYXJndW1lbnQsIHRydWUgaWYgeW91IHdhbnQgdGhlIHN0cmluZyBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKLSAqIGxhc3QsIGF0IHArMyBvciBwKzcpLCBmYWxzZSBpZiB5b3Ugd2FudCBiaWctZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAogICogZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgMCBpZiBhbGwgaXMgT0ssIC0xIGlmIGVycm9yIChhbmQgYW4gZXhjZXB0aW9uIGlzCiAgKiBzZXQsIG1vc3QgbGlrZWx5IE92ZXJmbG93RXJyb3IpLgpAQCAtODQsNiArODQsNyBAQAogICogMSk6ICBXaGF0IHRoaXMgZG9lcyBpcyB1bmRlZmluZWQgaWYgeCBpcyBhIE5hTiBvciBpbmZpbml0eS4KICAqIDIpOiAgLTAuMCBhbmQgKzAuMCBwcm9kdWNlIHRoZSBzYW1lIHN0cmluZy4KICAqLworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2syKGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s4KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCkBAIC05NiwxNCArOTcsMTUgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9EaWdpdHMoY2hhciAqYnVmLCBkb3VibGUgdiwgaW50ICpzaWdudW0pOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EaWdpdHNJbml0KHZvaWQpOwogCi0vKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCisvKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KICAqIFJldHVybiB2YWx1ZTogIFRoZSB1bnBhY2tlZCBkb3VibGUuICBPbiBlcnJvciwgdGhpcyBpcyAtMS4wIGFuZAogICogUHlFcnJfT2NjdXJyZWQoKSBpcyB0cnVlIChhbmQgYW4gZXhjZXB0aW9uIGlzIHNldCwgbW9zdCBsaWtlbHkKICAqIE92ZXJmbG93RXJyb3IpLiAgTm90ZSB0aGF0IG9uIGEgbm9uLUlFRUUgcGxhdGZvcm0gdGhpcyB3aWxsIHJlZnVzZQogICogdG8gdW5wYWNrIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIE5hTiBvciBpbmZpbml0eS4KICAqLworUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazIoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrOChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IGNjMTQyNmMuLjc3YmI4YzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC01OCw2ICs1OCwyMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEFubm90YXRpb25zKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KAorICAgIFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKyNlbmRpZgorCiAvKiBNYWNyb3MgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gdGhlc2UgdmFsdWVzLiBUeXBlIGNoZWNrcyBhcmUgKm5vdCoKICAgIGRvbmUsIHNvIHVzZSB3aXRoIGNhcmUuICovCiAjZGVmaW5lIFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYykgXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggNjFlNzA4YS4uOGMxODI1ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKLVB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5R2VuX3lmKFB5R2VuT2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHZW5fRmluYWxpemUoUHlPYmplY3QgKnNlbGYpOwogCkBAIC02Miw2ICs2MiwzNyBAQAogUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAogICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisvKiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgX1B5R2VuT2JqZWN0X0hFQUQoYWcpCisgICAgUHlPYmplY3QgKmFnX2ZpbmFsaXplcjsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBob29rcyBzZXQgdXAgYnkgc3lzLnNldF9hc3luY2dlbl9ob29rcworICAgICAgIHdlcmUgY2FsbGVkIG9uIHRoZSBnZW5lcmF0b3IsIHRvIGF2b2lkIGNhbGxpbmcgdGhlbSBtb3JlCisgICAgICAgdGhhbiBvbmNlLiAqLworICAgIGludCBhZ19ob29rc19pbml0ZWQ7CisKKyAgICAvKiBGbGFnIGlzIHNldCB0byAxIHdoZW4gYWNsb3NlKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSwgb3IKKyAgICAgICB3aGVuIGEgU3RvcEFzeW5jSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCisgICAgaW50IGFnX2Nsb3NlZDsKK30gUHlBc3luY0dlbk9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5QXN5bmNHZW5fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFTZW5kX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFUaHJvd19UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5QXN5bmNHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKKworI2RlZmluZSBQeUFzeW5jR2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlBc3luY0dlbl9UeXBlKQorCitQeU9iamVjdCAqX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKik7CisKK2ludCBQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpOworCiAjZW5kaWYKIAogI3VuZGVmIF9QeUdlbk9iamVjdF9IRUFECmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZDAzMGJjMy4uZTliNGE5MyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtMTcsNzEgKzE3LDcyIEBACiAjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAogI2RlZmluZSBzbWFsbF9zdG10IDI3MQogI2RlZmluZSBleHByX3N0bXQgMjcyCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKLSNkZWZpbmUgYXVnYXNzaWduIDI3NAotI2RlZmluZSBkZWxfc3RtdCAyNzUKLSNkZWZpbmUgcGFzc19zdG10IDI3NgotI2RlZmluZSBmbG93X3N0bXQgMjc3Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc4Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5Ci0jZGVmaW5lIHJldHVybl9zdG10IDI4MAotI2RlZmluZSB5aWVsZF9zdG10IDI4MQotI2RlZmluZSByYWlzZV9zdG10IDI4MgotI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjg0Ci0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NQotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQotI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MwotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAotI2RlZmluZSBhc3luY19zdG10IDI5NQotI2RlZmluZSBpZl9zdG10IDI5NgotI2RlZmluZSB3aGlsZV9zdG10IDI5NwotI2RlZmluZSBmb3Jfc3RtdCAyOTgKLSNkZWZpbmUgdHJ5X3N0bXQgMjk5Ci0jZGVmaW5lIHdpdGhfc3RtdCAzMDAKLSNkZWZpbmUgd2l0aF9pdGVtIDMwMQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgotI2RlZmluZSBzdWl0ZSAzMDMKLSNkZWZpbmUgdGVzdCAzMDQKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1Ci0jZGVmaW5lIGxhbWJkZWYgMzA2Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNwotI2RlZmluZSBvcl90ZXN0IDMwOAotI2RlZmluZSBhbmRfdGVzdCAzMDkKLSNkZWZpbmUgbm90X3Rlc3QgMzEwCi0jZGVmaW5lIGNvbXBhcmlzb24gMzExCi0jZGVmaW5lIGNvbXBfb3AgMzEyCi0jZGVmaW5lIHN0YXJfZXhwciAzMTMKLSNkZWZpbmUgZXhwciAzMTQKLSNkZWZpbmUgeG9yX2V4cHIgMzE1Ci0jZGVmaW5lIGFuZF9leHByIDMxNgotI2RlZmluZSBzaGlmdF9leHByIDMxNwotI2RlZmluZSBhcml0aF9leHByIDMxOAotI2RlZmluZSB0ZXJtIDMxOQotI2RlZmluZSBmYWN0b3IgMzIwCi0jZGVmaW5lIHBvd2VyIDMyMQotI2RlZmluZSBhdG9tX2V4cHIgMzIyCi0jZGVmaW5lIGF0b20gMzIzCi0jZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0Ci0jZGVmaW5lIHRyYWlsZXIgMzI1Ci0jZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2Ci0jZGVmaW5lIHN1YnNjcmlwdCAzMjcKLSNkZWZpbmUgc2xpY2VvcCAzMjgKLSNkZWZpbmUgZXhwcmxpc3QgMzI5Ci0jZGVmaW5lIHRlc3RsaXN0IDMzMAotI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKLSNkZWZpbmUgY2xhc3NkZWYgMzMyCi0jZGVmaW5lIGFyZ2xpc3QgMzMzCi0jZGVmaW5lIGFyZ3VtZW50IDMzNAotI2RlZmluZSBjb21wX2l0ZXIgMzM1Ci0jZGVmaW5lIGNvbXBfZm9yIDMzNgotI2RlZmluZSBjb21wX2lmIDMzNwotI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAotI2RlZmluZSB5aWVsZF9leHByIDMzOQotI2RlZmluZSB5aWVsZF9hcmcgMzQwCisjZGVmaW5lIGFubmFzc2lnbiAyNzMKKyNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3NAorI2RlZmluZSBhdWdhc3NpZ24gMjc1CisjZGVmaW5lIGRlbF9zdG10IDI3NgorI2RlZmluZSBwYXNzX3N0bXQgMjc3CisjZGVmaW5lIGZsb3dfc3RtdCAyNzgKKyNkZWZpbmUgYnJlYWtfc3RtdCAyNzkKKyNkZWZpbmUgY29udGludWVfc3RtdCAyODAKKyNkZWZpbmUgcmV0dXJuX3N0bXQgMjgxCisjZGVmaW5lIHlpZWxkX3N0bXQgMjgyCisjZGVmaW5lIHJhaXNlX3N0bXQgMjgzCisjZGVmaW5lIGltcG9ydF9zdG10IDI4NAorI2RlZmluZSBpbXBvcnRfbmFtZSAyODUKKyNkZWZpbmUgaW1wb3J0X2Zyb20gMjg2CisjZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NworI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODgKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjkwCisjZGVmaW5lIGRvdHRlZF9uYW1lIDI5MQorI2RlZmluZSBnbG9iYWxfc3RtdCAyOTIKKyNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTMKKyNkZWZpbmUgYXNzZXJ0X3N0bXQgMjk0CisjZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk1CisjZGVmaW5lIGFzeW5jX3N0bXQgMjk2CisjZGVmaW5lIGlmX3N0bXQgMjk3CisjZGVmaW5lIHdoaWxlX3N0bXQgMjk4CisjZGVmaW5lIGZvcl9zdG10IDI5OQorI2RlZmluZSB0cnlfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9zdG10IDMwMQorI2RlZmluZSB3aXRoX2l0ZW0gMzAyCisjZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAzCisjZGVmaW5lIHN1aXRlIDMwNAorI2RlZmluZSB0ZXN0IDMwNQorI2RlZmluZSB0ZXN0X25vY29uZCAzMDYKKyNkZWZpbmUgbGFtYmRlZiAzMDcKKyNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA4CisjZGVmaW5lIG9yX3Rlc3QgMzA5CisjZGVmaW5lIGFuZF90ZXN0IDMxMAorI2RlZmluZSBub3RfdGVzdCAzMTEKKyNkZWZpbmUgY29tcGFyaXNvbiAzMTIKKyNkZWZpbmUgY29tcF9vcCAzMTMKKyNkZWZpbmUgc3Rhcl9leHByIDMxNAorI2RlZmluZSBleHByIDMxNQorI2RlZmluZSB4b3JfZXhwciAzMTYKKyNkZWZpbmUgYW5kX2V4cHIgMzE3CisjZGVmaW5lIHNoaWZ0X2V4cHIgMzE4CisjZGVmaW5lIGFyaXRoX2V4cHIgMzE5CisjZGVmaW5lIHRlcm0gMzIwCisjZGVmaW5lIGZhY3RvciAzMjEKKyNkZWZpbmUgcG93ZXIgMzIyCisjZGVmaW5lIGF0b21fZXhwciAzMjMKKyNkZWZpbmUgYXRvbSAzMjQKKyNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjUKKyNkZWZpbmUgdHJhaWxlciAzMjYKKyNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjcKKyNkZWZpbmUgc3Vic2NyaXB0IDMyOAorI2RlZmluZSBzbGljZW9wIDMyOQorI2RlZmluZSBleHBybGlzdCAzMzAKKyNkZWZpbmUgdGVzdGxpc3QgMzMxCisjZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMgorI2RlZmluZSBjbGFzc2RlZiAzMzMKKyNkZWZpbmUgYXJnbGlzdCAzMzQKKyNkZWZpbmUgYXJndW1lbnQgMzM1CisjZGVmaW5lIGNvbXBfaXRlciAzMzYKKyNkZWZpbmUgY29tcF9mb3IgMzM3CisjZGVmaW5lIGNvbXBfaWYgMzM4CisjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM5CisjZGVmaW5lIHlpZWxkX2V4cHIgMzQwCisjZGVmaW5lIHlpZWxkX2FyZyAzNDEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbW1hci5oIGIvSW5jbHVkZS9ncmFtbWFyLmgKaW5kZXggODUxMjBiOS4uZjc3NWY5NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtbWFyLmgKKysrIGIvSW5jbHVkZS9ncmFtbWFyLmgKQEAgLTY5LDYgKzY5LDcgQEAKIC8qIEZVTkNUSU9OUyAqLwogCiBncmFtbWFyICpuZXdncmFtbWFyKGludCBzdGFydCk7Cit2b2lkIGZyZWVncmFtbWFyKGdyYW1tYXIgKmcpOwogZGZhICphZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpOwogaW50IGFkZHN0YXRlKGRmYSAqZCk7CiB2b2lkIGFkZGFyYyhkZmEgKmQsIGludCBmcm9tLCBpbnQgdG8sIGludCBsYmwpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggYWZkZmFjMi4uYmI2YmViYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDkgKzcsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0WmlwX0luaXQodm9pZCk7CiAKIFB5TU9ESU5JVF9GVU5DIFB5SW5pdF9pbXAodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGxvbmcpIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5SW1wb3J0X0dldE1hZ2ljVGFnKHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgKQEAgLTI3LDE2ICsyOSwyMCBAQAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICpjcGF0aG5hbWUgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KAogICAgIFB5T2JqZWN0ICpuYW1lLAogICAgIFB5T2JqZWN0ICpjbywKICAgICBQeU9iamVjdCAqcGF0aG5hbWUsCiAgICAgUHlPYmplY3QgKmNwYXRobmFtZQogICAgICk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0TW9kdWxlRGljdCh2b2lkKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdCgKICAgICBQeU9iamVjdCAqbmFtZQogICAgICk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfQWRkTW9kdWxlKAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC01Myw2ICs1OSw3IEBACiAgICAgUHlPYmplY3QgKmZyb21saXN0LAogICAgIGludCBsZXZlbAogICAgICk7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdCgKICAgICBQeU9iamVjdCAqbmFtZSwKICAgICBQeU9iamVjdCAqZ2xvYmFscywKQEAgLTYwLDYgKzY3LDcgQEAKICAgICBQeU9iamVjdCAqZnJvbWxpc3QsCiAgICAgaW50IGxldmVsCiAgICAgKTsKKyNlbmRpZgogCiAjZGVmaW5lIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KG4sIGcsIGwsIGYpIFwKICAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChuLCBnLCBsLCBmLCAwKQpAQCAtNjgsOSArNzYsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfSW1wb3J0KFB5T2JqZWN0ICpuYW1lKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfUmVsb2FkTW9kdWxlKFB5T2JqZWN0ICptKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbXBvcnRfQ2xlYW51cCh2b2lkKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KAogICAgIFB5T2JqZWN0ICpuYW1lCiAgICAgKTsKKyNlbmRpZgogUHlBUElfRlVOQyhpbnQpIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggZjUzZmVlMS4uOGZiOTZjZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDEyICs4LDE1IEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19BZnRlckZvcmsodm9pZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLwogUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CiAjZW5kaWYKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdpbnRyZXByLmggYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKaW5kZXggYmJiYTRkOC4uYTNiNzRiNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25naW50cmVwci5oCisrKyBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaApAQCAtNDIsMTQgKzQyLDEwIEBACiAqLwogCiAjaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMzAKLSNpZiAhKGRlZmluZWQgSEFWRV9VSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgICAgICAgICAgXAotICAgICAgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QpCi0jZXJyb3IgIjMwLWJpdCBsb25nIGRpZ2l0cyByZXF1ZXN0ZWQsIGJ1dCB0aGUgbmVjZXNzYXJ5IHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCi0jZW5kaWYKLXR5cGVkZWYgUFlfVUlOVDMyX1QgZGlnaXQ7Ci10eXBlZGVmIFBZX0lOVDMyX1Qgc2RpZ2l0OyAvKiBzaWduZWQgdmFyaWFudCBvZiBkaWdpdCAqLwotdHlwZWRlZiBQWV9VSU5UNjRfVCB0d29kaWdpdHM7Ci10eXBlZGVmIFBZX0lOVDY0X1Qgc3R3b2RpZ2l0czsgLyogc2lnbmVkIHZhcmlhbnQgb2YgdHdvZGlnaXRzICovCit0eXBlZGVmIHVpbnQzMl90IGRpZ2l0OwordHlwZWRlZiBpbnQzMl90IHNkaWdpdDsgLyogc2lnbmVkIHZhcmlhbnQgb2YgZGlnaXQgKi8KK3R5cGVkZWYgdWludDY0X3QgdHdvZGlnaXRzOwordHlwZWRlZiBpbnQ2NF90IHN0d29kaWdpdHM7IC8qIHNpZ25lZCB2YXJpYW50IG9mIHR3b2RpZ2l0cyAqLwogI2RlZmluZSBQeUxvbmdfU0hJRlQJMzAKICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX1NISUZUCTkgLyogbWF4KGUgc3VjaCB0aGF0IDEwKiplIGZpdHMgaW4gYSBkaWdpdCkgKi8KICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX0JBU0UJKChkaWdpdCkxMDAwMDAwMDAwKSAvKiAxMCAqKiBERUNJTUFMX1NISUZUICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IDJhMmVlY2YuLmVmZDQwOWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC02NSw3ICs2NSw4IEBACiAjICBlcnJvciAidm9pZCogZGlmZmVyZW50IGluIHNpemUgZnJvbSBpbnQsIGxvbmcgYW5kIGxvbmcgbG9uZyIKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QICovCiAKLS8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLiAqLworLyogVXNlZCBieSBQeXRob24vbXlzdHJ0b3VsLmMsIF9QeUJ5dGVzX0Zyb21IZXgoKSwKKyAgIF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgpLCBldGMuICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKHVuc2lnbmVkIGNoYXIpIF9QeUxvbmdfRGlnaXRWYWx1ZVsyNTZdOwogI2VuZGlmCkBAIC04NCwxNCArODUsMTIgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKik7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlMb25nX0FzVm9pZFB0cihQeU9iamVjdCAqKTsKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7Ci1QeUFQSV9GVU5DKFBZX0xPTkdfTE9ORykgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModW5zaWduZWQgUFlfTE9OR19MT05HKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUFlfTE9OR19MT05HKSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICosIGludCAqKTsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcpOworUHlBUElfRlVOQyhsb25nIGxvbmcpIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nIGxvbmcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcgbG9uZykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGxvbmcgbG9uZykgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqLCBpbnQgKik7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTgyLDYgKzE4MSwxMyBAQAogICAgIGludCBiYXNlLAogICAgIGludCBhbHRlcm5hdGUpOwogCitQeUFQSV9GVU5DKGNoYXIqKSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKAorICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgY2hhciAqc3RyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgaW50IGJhc2UsCisgICAgaW50IGFsdGVybmF0ZSk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKApAQCAtMTk4LDggKzIwNCwxMCBAQAogUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBQeU9TX3N0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogUHlBUElfRlVOQyhsb25nKSBQeU9TX3N0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEZvciB1c2UgYnkgdGhlIGdjZCBmdW5jdGlvbiBpbiBtYXRobW9kdWxlLmMgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19HQ0QoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKaW5kZXggYWI1ZWUwOS4uOTkwYTcxNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAorKysgYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCkBAIC0yMSw4ICsyMSwxMCBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CisjZW5kaWYKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoUHlfYnVmZmVyICppbmZvKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggZTJhZDgwNC4uNzlmYWQ4MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC0xNiw2ICsxNiw4IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5Q0Z1bmN0aW9uX1R5cGUpCiAKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb24pKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwordHlwZWRlZiBQeU9iamVjdCAqKCpfUHlDRnVuY3Rpb25GYXN0KSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CkBAIC0zNyw2ICszOSwxOCBAQAogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX0NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3dhcmdzKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIHN0cnVjdCBQeU1ldGhvZERlZiB7CiAgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLwogICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwpAQCAtNzIsNiArODYsOCBAQAogI2RlZmluZSBNRVRIX0NPRVhJU1QgICAweDAwNDAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBNRVRIX0ZBU1RDQUxMICAweDAwODAKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU1ldGhvZERlZiAqbV9tbDsgLyogRGVzY3JpcHRpb24gb2YgdGhlIEMgZnVuY3Rpb24gdG8gY2FsbCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA4MjlhYWY4Li44MzNlMzNkIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTUsMTIgKzE1LDE2IEBACiAjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKICNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKICNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAogI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBEdWUgdG8gYSBnbGl0Y2ggaW4gMy4yLCB0aGUgX1NpemVUIHZlcnNpb25zIHdlcmVuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgRExMLiAqLwpAQCAtNDQsNiArNDgsMzIgQEAKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgX1B5QXJnX1BhcnNlciB7CisgICAgY29uc3QgY2hhciAqZm9ybWF0OworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqa2V5d29yZHM7CisgICAgY29uc3QgY2hhciAqZm5hbWU7CisgICAgY29uc3QgY2hhciAqY3VzdG9tX21zZzsKKyAgICBpbnQgcG9zOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzICovCisgICAgaW50IG1pbjsgICAgICAgICAgICAvKiBtaW5pbWFsIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICBpbnQgbWF4OyAgICAgICAgICAgIC8qIG1heGltYWwgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCisgICAgUHlPYmplY3QgKmt3dHVwbGU7ICAvKiB0dXBsZSBvZiBrZXl3b3JkIHBhcmFtZXRlciBuYW1lcyAqLworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpuZXh0OworfSBfUHlBcmdfUGFyc2VyOworI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KKyNkZWZpbmUgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZGVmaW5lIF9QeUFyZ19QYXJzZVN0YWNrICBfUHlBcmdfUGFyc2VTdGFja19TaXplVAorI2RlZmluZSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0ICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZW5kaWYKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2soUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwordm9pZCBfUHlBcmdfRmluaSh2b2lkKTsKKyNlbmRpZgorCiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBsb25nKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCBiNDRmYjliLi5iNmU0OTMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTEyLDE0ICsxMiwxOCBAQAogI2RlZmluZSBQeU1vZHVsZV9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlNb2R1bGVfVHlwZSkKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeU1vZHVsZV9UeXBlKQogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXdPYmplY3QoCiAgICAgUHlPYmplY3QgKm5hbWUKICAgICApOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX05ldygKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXREaWN0KFB5T2JqZWN0ICopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqKTsKKyNlbmRpZgogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKaW5kZXggYTQxMmYwNS4uMGM4ZDk1YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC03LDkgKzcsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOYW1lc3BhY2VfVHlwZTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA1MGQ5NzQ3Li42M2UzN2I4IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTExOCw2ICsxMTgsNyBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CiAgICBJbnN0ZWFkIG9mIGRvaW5nCkBAIC0xNDQsMTAgKzE0NSwxMiBAQAogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiB9IF9QeV9JZGVudGlmaWVyOwogCi0jZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgMCwgdmFsdWUsIDAgfQorI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKSB7IC5uZXh0ID0gTlVMTCwgLnN0cmluZyA9IHZhbHVlLCAub2JqZWN0ID0gTlVMTCB9CiAjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKQogI2RlZmluZSBfUHlfSURFTlRJRklFUih2YXJuYW1lKSBfUHlfc3RhdGljX3N0cmluZyhQeUlkXyMjdmFybmFtZSwgI3Zhcm5hbWUpCiAKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogLyoKIFR5cGUgb2JqZWN0cyBjb250YWluIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgbmFtZSAodG8gaGVscCBzb21ld2hhdAogaW4gZGVidWdnaW5nKSwgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycyAoc2VlIFB5T2JqZWN0X05ldygpIGFuZApAQCAtNTEyLDggKzUxNSw4IEBACiAjZW5kaWYKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KLXN0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRHVtcChQeU9iamVjdCAqKTsKQEAgLTUzMCwxMSArNTMzLDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfU2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9IYXNBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSGFzQXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKiopIF9QeU9iamVjdF9HZXREaWN0UHRyKFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X1NlbGZJdGVyKFB5T2JqZWN0ICopOwpAQCAtNTQ0LDcgKzU0Nyw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIHZvaWQgKik7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9Jc1RydWUoUHlPYmplY3QgKik7CkBAIC01NTcsNiArNTYyLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoUHlPYmplY3QgKik7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2FtZSBhcyBQeU9iamVjdF9HZW5lcmlje0dldCxTZXR9QXR0ciwgYnV0IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZXMKICAgIGRpY3QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKQpAQCAtNTY0LDYgKzU3MCw3IEBACiBQeUFQSV9GVU5DKGludCkKIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogSGVscGVyIHRvIGxvb2sgdXAgYSBidWlsdGluIG9iamVjdCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtNzA4LDcgKzcxNSw2IEBACiBQeUFQSV9EQVRBKFB5X3NzaXplX3QpIF9QeV9SZWZUb3RhbDsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X05lZ2F0aXZlUmVmY291bnQoY29uc3QgY2hhciAqZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIFB5T2JqZWN0ICpvcCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfRHVtbXkodm9pZCk7CiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRSZWZUb3RhbCh2b2lkKTsKICNkZWZpbmUgX1B5X0lOQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsKysKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsLS0KQEAgLTc4NSw3ICs3OTEsNyBAQAogICAgICAgICAtLShfcHlfZGVjcmVmX3RtcCktPm9iX3JlZmNudCAhPSAwKSAgICAgICAgICAgICBcCiAgICAgICAgICAgICBfUHlfQ0hFQ0tfUkVGQ05UKF9weV9kZWNyZWZfdG1wKSAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAvKiBTYWZlbHkgZGVjcmVmIGBvcGAgYW5kIHNldCBgb3BgIHRvIE5VTEwsIGVzcGVjaWFsbHkgdXNlZnVsIGluIHRwX2NsZWFyCkBAIC04ODksOCArODk1LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luY1JlZihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRGVjUmVmKFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm9uZV9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vdEltcGxlbWVudGVkX1R5cGU7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qCiBfUHlfTm9uZVN0cnVjdCBpcyBhbiBvYmplY3Qgb2YgdW5kZWZpbmVkIHR5cGUgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY29udGV4dHMKQEAgLTkyMywxMCArOTMxLDEyIEBACiAjZGVmaW5lIFB5X0dUIDQKICNkZWZpbmUgUHlfR0UgNQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBNYXBzIFB5X0xUIHRvIFB5X0dULCAuLi4sIFB5X0dFIHRvIFB5X0xFLgogICogRGVmaW5lZCBpbiBvYmplY3QuYy4KICAqLwogUHlBUElfREFUQShpbnQpIF9QeV9Td2FwcGVkT3BbXTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAvKgpAQCAtMTAyMywxMiArMTAzMywxNCBAQAogd2l0aCB0aGUgY2FsbCBzdGFjayBuZXZlciBleGNlZWRpbmcgYSBkZXB0aCBvZiBQeVRyYXNoX1VOV0lORF9MRVZFTC4KICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgaXMgdGhlIG9sZCBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlZm9yZSAzLjIuNC4KICAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcjsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlIG5ldyB0aHJlYWQtc2FmZSBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlbG93LiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggNjViNmQ5MS4uNzQ2ZjljOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk1LDEyICs5NSwxNiBAQAogICAgdGhlIHJhdyBtZW1vcnkuCiAqLwogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X01hbGxvYyhzaXplX3Qgc2l6ZSk7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIG1lbW9yeSBibG9ja3MsIHJlZ2FyZGxlc3Mgb2Ygc2l6ZSAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCkBAIC0yMjQsMTEgKzIyOCwxMiBAQAogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqLwogCi0vKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpLiAqLworLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKSB3aGljaCBpZ25vcmVzIHRoZSBzdGF0ZSBvZiBnYy5lbmFibGVkLiAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeUdDX0NvbGxlY3Qodm9pZCk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCiAvKiBUZXN0IGlmIGEgdHlwZSBoYXMgYSBHQyBoZWFkICovCkBAIC0zMjIsOCArMzI3LDEwIEBACiAgICAgICAgICghUHlUdXBsZV9DaGVja0V4YWN0KG9iaikgfHwgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob2JqKSkpCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvb2RpY3RvYmplY3QuaAppbmRleCBjMWQ5NTkyLi4zODFkZTU4IDEwMDY0NAotLS0gYS9JbmNsdWRlL29kaWN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vZGljdG9iamVjdC5oCkBAIC0xNywxMiArMTcsMTMgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0SXRlbXNfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0VmFsdWVzX1R5cGU7CiAKLSNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwotCiAjZGVmaW5lIFB5T0RpY3RfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5T0RpY3RfVHlwZSkKICNkZWZpbmUgUHlPRGljdF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5T0RpY3RfVHlwZSkKICNkZWZpbmUgUHlPRGljdF9TSVpFKG9wKSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdXNlZAotI2RlZmluZSBQeU9EaWN0X0hhc0tleShvZCwga2V5KSAoUHlNYXBwaW5nX0hhc0tleShQeU9iamVjdCAqKW9kLCBrZXkpCisKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T0RpY3RfTmV3KHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5T0RpY3RfU2V0SXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKQEAgLTM3LDYgKzM4LDggQEAKICNkZWZpbmUgUHlPRGljdF9HZXRJdGVtU3RyaW5nKG9kLCBrZXkpIFwKICAgICBQeURpY3RfR2V0SXRlbVN0cmluZygoUHlPYmplY3QgKilvZCwga2V5KQogCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDNmOTE3ZmIuLmJlMzYwZTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNjAsNiArNjAsNyBAQAogI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKICNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCiAjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBTRVRVUF9BTk5PVEFUSU9OUyAgICAgICAgODUKICNkZWZpbmUgWUlFTERfVkFMVUUgICAgICAgICAgICAgIDg2CiAjZGVmaW5lIFBPUF9CTE9DSyAgICAgICAgICAgICAgICA4NwogI2RlZmluZSBFTkRfRklOQUxMWSAgICAgICAgICAgICAgODgKQEAgLTk4LDE4ICs5OSwxNyBAQAogI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAxMjQKICNkZWZpbmUgU1RPUkVfRkFTVCAgICAgICAgICAgICAgMTI1CiAjZGVmaW5lIERFTEVURV9GQVNUICAgICAgICAgICAgIDEyNgorI2RlZmluZSBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAxMjcKICNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgMTMwCiAjZGVmaW5lIENBTExfRlVOQ1RJT04gICAgICAgICAgIDEzMQogI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAxMzIKICNkZWZpbmUgQlVJTERfU0xJQ0UgICAgICAgICAgICAgMTMzCi0jZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAgICAgICAgIDEzNAogI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgICAgICAgICAxMzUKICNkZWZpbmUgTE9BRF9ERVJFRiAgICAgICAgICAgICAgMTM2CiAjZGVmaW5lIFNUT1JFX0RFUkVGICAgICAgICAgICAgIDEzNwogI2RlZmluZSBERUxFVEVfREVSRUYgICAgICAgICAgICAxMzgKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgMTQwCiAjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgIDE0MQotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAxNDIKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9FWCAgICAgICAgMTQyCiAjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MwogI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKICNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CkBAIC0xMjIsNiArMTIyLDEwIEBACiAjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgogI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKICNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CisjZGVmaW5lIEZPUk1BVF9WQUxVRSAgICAgICAgICAgIDE1NQorI2RlZmluZSBCVUlMRF9DT05TVF9LRVlfTUFQICAgICAxNTYKKyNkZWZpbmUgQlVJTERfU1RSSU5HICAgICAgICAgICAgMTU3CisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgMTU4CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc21vZHVsZS5oIGIvSW5jbHVkZS9vc21vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOTVjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL29zbW9kdWxlLmgKQEAgLTAsMCArMSwxNyBAQAorCisvKiBvcyBtb2R1bGUgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfT1NNT0RVTEVfSAorI2RlZmluZSBQeV9PU01PRFVMRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDYwMDAwCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKTsKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9PU01PRFVMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IGVjZWQ4MGQuLjQ5OTMwZTggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxMyArMTcsMTMgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1Ci0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMwotI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfR0FNTUEKLSNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMQorI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTYKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCisjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAorI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy41LjNyYzErIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjYuMCsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKaW5kZXggMjA0OWFlMy4uNDg0M2RlNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCisrKyBiL0luY2x1ZGUvcGdlbmhlYWRlcnMuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBkZWxiaXRzZXQgX1B5X2RlbGJpdHNldAogI2RlZmluZSBkdW1wdHJlZSBfUHlfZHVtcHRyZWUKICNkZWZpbmUgZmluZGxhYmVsIF9QeV9maW5kbGFiZWwKKyNkZWZpbmUgZnJlZWdyYW1tYXIgX1B5X2ZyZWVncmFtbWFyCiAjZGVmaW5lIG1lcmdlYml0c2V0IF9QeV9tZXJnZWJpdHNldAogI2RlZmluZSBtZXRhX2dyYW1tYXIgX1B5X21ldGFfZ3JhbW1hcgogI2RlZmluZSBuZXdiaXRzZXQgX1B5X25ld2JpdHNldApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weV9jdXJzZXMuaCBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKaW5kZXggZjJjMDhmNi4uM2MyMTY5NyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weV9jdXJzZXMuaAorKysgYi9JbmNsdWRlL3B5X2N1cnNlcy5oCkBAIC0xMDMsOCArMTAzLDggQEAKICNlbmRpZgogCiAvKiBnZW5lcmFsIGVycm9yIG1lc3NhZ2VzICovCi1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfRVJSICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKLXN0YXRpYyBjaGFyICpjYXRjaGFsbF9OVUxMID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX0VSUltdICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX05VTExbXSA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CiAKIC8qIEZ1bmN0aW9uIFByb3RvdHlwZSBNYWNyb3MgLSBUaGV5IGFyZSB1Z2x5IGJ1dCB2ZXJ5LCB2ZXJ5IHVzZWZ1bC4gOy0pCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlhdG9taWMuaCBiL0luY2x1ZGUvcHlhdG9taWMuaAppbmRleCA4OTAyOGVmLi44OTNkMzBkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5YXRvbWljLmgKKysrIGIvSW5jbHVkZS9weWF0b21pYy5oCkBAIC02MSw3ICs2MSw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKQEAgLTk4LDcgKzk4LDcgQEAKIH0gX1B5X21lbW9yeV9vcmRlcjsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKLSAgICBQeV91aW50cHRyX3QgX3ZhbHVlOworICAgIHVpbnRwdHJfdCBfdmFsdWU7CiB9IF9QeV9hdG9taWNfYWRkcmVzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgewpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCAxOWJlYzJiLi42ZTIzYTg5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMjQsNiArMjQsMTAgQEAKIFB5QVBJX0RBVEEoaW50KSBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfSXNvbGF0ZWRGbGFnOwogCisjaWZkZWYgTVNfV0lORE9XUworUHlBUElfREFUQShpbnQpIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWc7CisjZW5kaWYKKwogLyogdGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIGdldGVudigpIHRoYXQgcGF5cyBhdHRlbnRpb24gdG8KICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZy4gIEl0IHNob3VsZCBiZSB1c2VkIGZvciBnZXR0aW5nIHZhcmlhYmxlcyBsaWtlCiAgICBQWVRIT05QQVRIIGFuZCBQWVRIT05IT01FIGZyb20gdGhlIGVudmlyb25tZW50ICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmQgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzNjA1NQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuZApAQCAtMCwwICsxLDE5IEBACisvKiBQeXRob24gRFRyYWNlIHByb3ZpZGVyICovCisKK3Byb3ZpZGVyIHB5dGhvbiB7CisgICAgcHJvYmUgZnVuY3Rpb25fX2VudHJ5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGZ1bmN0aW9uX19yZXR1cm4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICAgcHJvYmUgaW5zdGFuY2VfX25ld19fc3RhcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX2RvbmUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19kZWxldGVfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBsaW5lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGdjX19zdGFydChpbnQpOworICAgIHByb2JlIGdjX19kb25lKGxvbmcpOworfTsKKworI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBwcm92aWRlcgorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBtb2R1bGUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gZnVuY3Rpb24KKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbmFtZQorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBhcmdzCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmggYi9JbmNsdWRlL3B5ZHRyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuaApAQCAtMCwwICsxLDUzIEBACisvKiBTdGF0aWMgRFRyYWNlIHByb2JlcyBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9EVFJBQ0VfSAorI2RlZmluZSBQeV9EVFJBQ0VfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZkZWYgV0lUSF9EVFJBQ0UKKworI2luY2x1ZGUgInB5ZHRyYWNlX3Byb2Jlcy5oIgorCisvKiBweWR0cmFjZV9wcm9iZXMuaCwgb24gc3lzdGVtcyB3aXRoIERUcmFjZSwgaXMgYXV0by1nZW5lcmF0ZWQgdG8gaW5jbHVkZQorICAgYFB5RFRyYWNlX3tQUk9CRX1gIGFuZCBgUHlEVHJhY2Vfe1BST0JFfV9FTkFCTEVEKClgIG1hY3JvcyBmb3IgZXZlcnkgcHJvYmUKKyAgIGRlZmluZWQgaW4gcHlkdHJhY2VfcHJvdmlkZXIuZC4KKworICAgQ2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgbXVzdCBiZSBndWFyZGVkIGJ5IGEgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYAorICAgY2hlY2sgdG8gbWluaW1pemUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gcHJvYmluZyBpcyBvZmYuIEZvciBleGFtcGxlOgorCisgICAgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQoKSkKKyAgICAgICAgICAgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoZik7CisqLworCisjZWxzZQorCisvKiBXaXRob3V0IERUcmFjZSwgY29tcGlsZSB0byBub3RoaW5nLiAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikgIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX0RPTkUoaW50IGFyZzApIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORShpbnQgYXJnMCkge30KKworc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9HQ19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KKworI2VuZGlmIC8qICFXSVRIX0RUUkFDRSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9EVFJBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDM1YWVkYjcuLjhjMWRiYzUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTg3LDggKzg3LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0NsZWFyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9GZXRjaChQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBcCiAgICAgKGRlZmluZWQoX19HTlVDX01BSk9SX18pICYmIFwKQEAgLTE0Nyw3ICsxNDksOSBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jhc2VFeGNlcHRpb247CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0V4Y2VwdGlvbjsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbjsKKyNlbmRpZgogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19TdG9wSXRlcmF0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19HZW5lcmF0b3JFeGl0OwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Bcml0aG1ldGljRXJyb3I7CkBAIC0xNjAsNiArMTY0LDkgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDYwMDAwCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX01vZHVsZU5vdEZvdW5kRXJyb3I7CisjZW5kaWYKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0OwpAQCAtMTY3LDcgKzE3NCw5IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX05hbWVFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfT3ZlcmZsb3dFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUnVudGltZUVycm9yOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUmVjdXJzaW9uRXJyb3I7CisjZW5kaWYKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3ludGF4RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0luZGVudGF0aW9uRXJyb3I7CkBAIC0xODQsNiArMTkzLDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVmFsdWVFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I7CiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnJva2VuUGlwZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcjsKQEAgLTE5OSw2ICsyMDksNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19QZXJtaXNzaW9uRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVGltZW91dEVycm9yOworI2VuZGlmCiAKIAogLyogQ29tcGF0aWJpbGl0eSBhbGlhc2VzICovCkBAIC0yMzEsOCArMjQyLDEwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21FcnJubyhQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KAogICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNDAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cygKICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoCiAgICAgUHlPYmplY3QgKmV4YywKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwpAQCAtMjU0LDYgKzI2NywxNyBAQAogICAgIHZhX2xpc3QgdmFyZ3MpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlFcnJfRm9ybWF0KCksIGJ1dCBzYXZlcyBjdXJyZW50IGV4Y2VwdGlvbiBhcyBfX2NvbnRleHRfXyBhbmQKKyAgIF9fY2F1c2VfXy4KKyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKAorICAgIFB5T2JqZWN0ICpleGNlcHRpb24sCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLgorICAgICk7CisjZW5kaWYKKwogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgaW50IGllcnIsCkBAIC0yNjcsOCArMjkxLDEwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGludCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAogICAgIFB5T2JqZWN0ICosaW50LCBQeU9iamVjdCAqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDQwMDAwCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0cygKICAgICBQeU9iamVjdCAqLGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgUHlPYmplY3QgKmV4YywKICAgICBpbnQgaWVyciwKQEAgLTI4MSwxMCArMzA3LDE0IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5T2JqZWN0ICosIGludCk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgUHlPYmplY3QgKik7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA2MDAwMAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CisjZW5kaWYKIAogLyogRXhwb3J0IHRoZSBvbGQgZnVuY3Rpb24gc28gdGhhdCB0aGUgZXhpc3RpbmcgQVBJIHJlbWFpbnMgYXZhaWxhYmxlOiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9CYWRJbnRlcm5hbENhbGwodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5Z2V0b3B0LmggYi9JbmNsdWRlL3B5Z2V0b3B0LmgKaW5kZXggNDI1YzdkZC4uOTYyNzIwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWdldG9wdC5oCisrKyBiL0luY2x1ZGUvcHlnZXRvcHQuaApAQCAtMTEsOSArMTEsOSBAQAogUHlBUElfREFUQSh3Y2hhcl90ICopIF9QeU9TX29wdGFyZzsKIAogUHlBUElfRlVOQyh2b2lkKSBfUHlPU19SZXNldEdldE9wdCh2b2lkKTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfR2V0T3B0KGludCBhcmdjLCB3Y2hhcl90ICoqYXJndiwgd2NoYXJfdCAqb3B0c3RyaW5nKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5aGFzaC5oIGIvSW5jbHVkZS9weWhhc2guaAppbmRleCBhN2NhOTM3Li5hODE0YWY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5aGFzaC5oCisrKyBiL0luY2x1ZGUvcHloYXNoLmgKQEAgLTM2LDE0ICszNiwxNCBAQAogICogbWVtb3J5IGxheW91dCBvbiA2NCBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMgLS0gdW5zaWduZWQgY2hhclsyNF0KICAqICAgcHBwcHBwcHAgc3Nzc3Nzc3MgLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVAorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzc3Nzc3MgIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZWVlZWUgIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKICAqIG1lbW9yeSBsYXlvdXQgb24gMzIgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjCiAgKiAgIHBwcHBzc3NzIC4uLi4uLi4uIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QgKCopCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdCAoKikKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzcy4uLi4gIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZS4uLi4gIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKQEAgLTU5LDEzICs1OSwxMSBAQAogICAgICAgICBQeV9oYXNoX3QgcHJlZml4OwogICAgICAgICBQeV9oYXNoX3Qgc3VmZml4OwogICAgIH0gZm52OwotI2lmZGVmIFBZX1VJTlQ2NF9UCiAgICAgLyogdHdvIHVpbnQ2NCBmb3IgU2lwSGFzaDI0ICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgUFlfVUlOVDY0X1QgazA7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGsxOworICAgICAgICB1aW50NjRfdCBrMDsKKyAgICAgICAgdWludDY0X3QgazE7CiAgICAgfSBzaXBoYXNoOwotI2VuZGlmCiAgICAgLyogYSBkaWZmZXJlbnQgKCEpIFB5X2hhc2hfdCBmb3Igc21hbGwgc3RyaW5nIG9wdGltaXphdGlvbiAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1sxNl07CkBAIC0xMjEsOCArMTE5LDcgQEAKICAqIGNvbmZpZ3VyZSBzY3JpcHQuCiAgKgogICogLSBGTlYgaXMgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGFyY2hpdGVjdHVyZXMuCi0gKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgcHJvdmlkZSBQWV9VSU5UNjRfVCBhbmQgZG9lc24ndAotICogICByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KKyAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KICAqIC0gV2l0aCBFWFRFUk5BTCBlbWJlZGRlcnMgY2FuIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gd2l0aDo6CiAgKgogICogICAgIFB5SGFzaF9GdW5jRGVmIFB5SGFzaF9GdW5jID0gey4uLn07CkBAIC0xMzQsOCArMTMxLDcgQEAKICNkZWZpbmUgUHlfSEFTSF9GTlYgMgogCiAjaWZuZGVmIFB5X0hBU0hfQUxHT1JJVEhNCi0jICBpZiAoZGVmaW5lZChQWV9VSU5UNjRfVCkgJiYgZGVmaW5lZChQWV9VSU5UMzJfVCkgXAotICAgICAgICYmICFkZWZpbmVkKEhBVkVfQUxJR05FRF9SRVFVSVJFRCkpCisjICBpZm5kZWYgSEFWRV9BTElHTkVEX1JFUVVJUkVECiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX1NJUEhBU0gyNAogIyAgZWxzZQogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9GTlYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAppbmRleCBjY2RlYmUyLi41YTY3NjY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKKysrIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlfRmluYWxpemVFeCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwpAQCAtMTA2LDYgKzEwNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlBc3luY0dlbl9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKQEAgLTExNSw4ICsxMTcsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmFuZG9tICovCi1QeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaAppbmRleCAzZjZmNWRjLi4yYTgzOWFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWFjcm8uaAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMTgsNiArMTgsOSBAQAogICAgYnkgIl9fTElORV9fIi4gKi8KICNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCiAKKy8qIEdldCB0aGUgc2l6ZSBvZiBhIHN0cnVjdHVyZSBtZW1iZXIgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgUHlfTUVNQkVSX1NJWkUodHlwZSwgbWVtYmVyKSBzaXplb2YoKCh0eXBlICopMCktPm1lbWJlcikKKwogLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwogI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQogCkBAIC0zNiw2ICszOSwxMCBAQAogI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCiAgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQogCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVChjb25kKSAgZG8geyAgICAgICAgIFwKKyAgICAgICAgKHZvaWQpUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCk7ICAgXAorICAgIH0gd2hpbGUoMCkKKwogLyogR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2aXNpYmxlIGFycmF5CiAKICAgIFRoaXMgZG9lcyBub3Qgd29yayBvbiBwb2ludGVycywgb3IgYXJyYXlzIGRlY2xhcmVkIGFzIFtdLCBvciBmdW5jdGlvbgpAQCAtNzUsMTIgKzgyLDEyIEBACiAjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCiAgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgodWludHB0cl90KShwKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCi0gICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKCh1aW50cHRyX3QpKHApICsgXAorICAgICAgICAodWludHB0cl90KSgoYSkgLSAxKSkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogQ2hlY2sgaWYgcG9pbnRlciAicCIgaXMgYWxpZ25lZCB0byAiYSItYnl0ZXMgYm91bmRhcnkuICovCi0jZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKChQeV91aW50cHRyX3QpKHApICYgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgodWludHB0cl90KShwKSAmICh1aW50cHRyX3QpKChhKSAtIDEpKSkKIAogI2lmZGVmIF9fR05VQ19fCiAjZGVmaW5lIFB5X1VOVVNFRChuYW1lKSBfdW51c2VkXyAjIyBuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWF0aC5oIGIvSW5jbHVkZS9weW1hdGguaAppbmRleCAxYzhkNzE4Li43MjE2YTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWF0aC5oCisrKyBiL0luY2x1ZGUvcHltYXRoLmgKQEAgLTU1LDYgKzU1LDEyIEBACiAjZGVmaW5lIFB5X01BVEhfRSAyLjcxODI4MTgyODQ1OTA0NTIzNTQKICNlbmRpZgogCisvKiBUYXUgKDJwaSkgdG8gNDAgZGlnaXRzLCB0YWtlbiBmcm9tIHRhdWRheS5jb20vdGF1LWRpZ2l0cy4gKi8KKyNpZm5kZWYgUHlfTUFUSF9UQVUKKyNkZWZpbmUgUHlfTUFUSF9UQVUgNi4yODMxODUzMDcxNzk1ODY0NzY5MjUyODY3NjY1NTkwMDU3NjgzOTQzTAorI2VuZGlmCisKKwogLyogT24geDg2LCBQeV9GT1JDRV9ET1VCTEUgZm9yY2VzIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIG91dCBvZiBhbiB4ODcgRlBVCiAgICByZWdpc3RlciBhbmQgaW50byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24sIHJvdW5kaW5nIGZyb20gZXh0ZW5kZWQKICAgIHByZWNpc2lvbiB0byBkb3VibGUgcHJlY2lzaW9uIGluIHRoZSBwcm9jZXNzLiAgT24gb3RoZXIgcGxhdGZvcm1zIGl0IGRvZXMKQEAgLTE2OSw3ICsxNzUsNyBAQAogICAgICAgICAjcHJhZ21hIGZsb2F0X2NvbnRyb2wgKHBvcCkKICAgICAgICAgI2RlZmluZSBQeV9OQU4gX19pY2NfbmFuKCkKICAgICAjZWxzZSAvKiBJQ0NfTkFOX1JFTEFYRUQgYXMgZGVmYXVsdCBmb3IgSW50ZWwgQ29tcGlsZXIgKi8KLSAgICAgICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKICAgICAgICAgI2RlZmluZSBQeV9OQU4gKF9fbmFuX3N0b3JlLl9faWNjX25hbikKICAgICAjZW5kaWYgLyogSUNDX05BTl9TVFJJQ1QgKi8KICNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWVtLmggYi9JbmNsdWRlL3B5bWVtLmgKaW5kZXggMDQzZGI2NC4uYTdlYjRkMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1lbS5oCisrKyBiL0luY2x1ZGUvcHltZW0uaApAQCAtMTYsOCArMTYsNTEgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOworCisvKiBDb25maWd1cmUgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gUGFzcyBOVUxMIHRvIHVzZSBkZWZhdWx0CisgICBhbGxvY2F0b3JzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KTsKKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKKy8qIElkZW50aWZpZXIgb2YgYW4gYWRkcmVzcyBzcGFjZSAoZG9tYWluKSBpbiB0cmFjZW1hbGxvYyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3Q7CisKKy8qIFRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBvbiBlcnJvciAoZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBzdG9yZQorICAgdGhlIHRyYWNlKS4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLgorCisgICBJZiBtZW1vcnkgYmxvY2sgaXMgYWxyZWFkeSB0cmFja2VkLCB1cGRhdGUgdGhlIGV4aXN0aW5nIHRyYWNlLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1RyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyLAorICAgIHNpemVfdCBzaXplKTsKKworLyogVW50cmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBEbyBub3RoaW5nIGlmIHRoZSBibG9jayB3YXMgbm90IHRyYWNrZWQuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIHJldHVybiAwLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1VudHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworCisvKiBHZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLgorCisgICBSZXR1cm4gYSB0dXBsZSBvZiAoZmlsZW5hbWU6IHN0ciwgbGluZW5vOiBpbnQpIHR1cGxlcy4KKworICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBkaXNhYmxlZCBvciBpZiB0aGUgbWVtb3J5IGJsb2NrCisgICBpcyBub3QgdHJhY2tlZCBieSB0cmFjZW1hbGxvYy4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCisKIAogLyogQkVXQVJFOgogCkBAIC01OCw3ICsxMDEsOSBAQAogKi8KIAogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX01hbGxvYyhzaXplX3Qgc2l6ZSk7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX0ZyZWUodm9pZCAqcHRyKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXBvcnQuaCBiL0luY2x1ZGUvcHlwb3J0LmgKaW5kZXggZTdlNTE3OC4uNTJhOTFhMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXBvcnQuaAorKysgYi9JbmNsdWRlL3B5cG9ydC5oCkBAIC0zLDE1ICszLDcgQEAKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KIAotLyogU29tZSB2ZXJzaW9ucyBvZiBIUC1VWCAmIFNvbGFyaXMgbmVlZCBpbnR0eXBlcy5oIGZvciBpbnQzMl90LAotICAgSU5UMzJfTUFYLCBldGMuICovCi0jaWZkZWYgSEFWRV9JTlRUWVBFU19ICiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9TVERJTlRfSAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU3ltYm9scyBhbmQgbWFjcm9zIHRvIHN1cHBseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIHRvIGJhc2ljCkBAIC0zMSwxNCArMjMsNiBAQAogTWVhbmluZzogIEV4dHJhIGNoZWNrcyBjb21waWxlZCBpbiBmb3IgZGVidWcgbW9kZS4KIFVzZWQgaW46ICBQeV9TQUZFX0RPV05DQVNUCiAKLUhBVkVfVUlOVFBUUl9UCi1NZWFuaW5nOiAgVGhlIEM5WCB0eXBlIHVpbnRwdHJfdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyCi1Vc2VkIGluOiAgUHlfdWludHB0cl90Ci0KLUhBVkVfTE9OR19MT05HCi1NZWFuaW5nOiAgVGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBDIHR5cGUgImxvbmcgbG9uZyIKLVVzZWQgaW46ICBQWV9MT05HX0xPTkcKLQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHR5cGVkZWZzIGZvciBzb21lIEM5WC1kZWZpbmVkIHN5bm9ueW1zIGZvciBpbnRlZ3JhbCB0eXBlcy4KQEAgLTUzLDkxICszNywzMSBAQAogICogaW50ZWdyYWwgc3lub255bXMuICBPbmx5IGRlZmluZSB0aGUgb25lcyB3ZSBhY3R1YWxseSBuZWVkLgogICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORworLy8gbG9uZyBsb25nIGlzIHJlcXVpcmVkLiBFbnN1cmUgSEFWRV9MT05HX0xPTkcgaXMgZGVmaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4KKyNpZm5kZWYgSEFWRV9MT05HX0xPTkcKKyNkZWZpbmUgSEFWRV9MT05HX0xPTkcgMQorI2VuZGlmCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogI2RlZmluZSBQWV9MT05HX0xPTkcgbG9uZyBsb25nCi0jaWYgZGVmaW5lZChMTE9OR19NQVgpCiAvKiBJZiBMTE9OR19NQVggaXMgZGVmaW5lZCBpbiBsaW1pdHMuaCwgdXNlIHRoYXQuICovCiAjZGVmaW5lIFBZX0xMT05HX01JTiBMTE9OR19NSU4KICNkZWZpbmUgUFlfTExPTkdfTUFYIExMT05HX01BWAogI2RlZmluZSBQWV9VTExPTkdfTUFYIFVMTE9OR19NQVgKLSNlbGlmIGRlZmluZWQoX19MT05HX0xPTkdfTUFYX18pCi0vKiBPdGhlcndpc2UsIGlmIEdDQyBoYXMgYSBidWlsdGluIGRlZmluZSwgdXNlIHRoYXQuICAoRGVmaW5pdGlvbiBvZgotICogUFlfTExPTkdfTUlOIGFzc3VtZXMgdHdvJ3MgY29tcGxlbWVudCB3aXRoIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uKSAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbGlmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykKLS8qIE90aGVyd2lzZSBjb21wdXRlIGZyb20gU0laRU9GX0xPTkdfTE9ORywgYXNzdW1pbmcgdHdvJ3MgY29tcGxlbWVudCwgbm8KLSAgIHBhZGRpbmcgYml0cywgYW5kIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uICBOb3RlOiBQWV9VTExPTkdfTUFYIHdhcwotICAgcHJldmlvdXNseSAjZGVmaW5lZCBhcyAofjBVTEwpIGhlcmU7IGJ1dCB0aGF0J2xsIGdpdmUgdGhlIHdyb25nIHZhbHVlIGluIGEKLSAgIHByZXByb2Nlc3NvciBleHByZXNzaW9uIG9uIHN5c3RlbXMgd2hlcmUgbG9uZyBsb25nICE9IGludG1heF90LiAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgxICsgMiAqICgoUHlfTEwoMSkgPDwgKENIQVJfQklUICogU0laRU9GX0xPTkdfTE9ORyAtIDIpKSAtIDEpKQotI2RlZmluZSBQWV9MTE9OR19NSU4gKC1QWV9MTE9OR19NQVggLSAxKQotI2RlZmluZSBQWV9VTExPTkdfTUFYIChQWV9MTE9OR19NQVggKiBQeV9VTEwoMikgKyAxKQotI2VuZGlmIC8qIExMT05HX01BWCAqLwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQotLyogYSBidWlsZCB3aXRoIDMwLWJpdCBkaWdpdHMgZm9yIFB5dGhvbiBpbnRlZ2VycyBuZWVkcyBhbiBleGFjdC13aWR0aAotICogMzItYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZSB0byBzdG9yZSB0aG9zZSBkaWdpdHMuICAoV2UgY291bGQganVzdCB1c2UKLSAqIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnLCBidXQgdGhhdCB3b3VsZCBiZSB3YXN0ZWZ1bCBvbiBhIHN5c3RlbSB3aGVyZSBsb25ncwotICogYXJlIDY0LWJpdHMuKSAgT24gVW5peCBzeXN0ZW1zLCB0aGUgYXV0b2NvbmYgbWFjcm8gQUNfVFlQRV9VSU5UMzJfVCBkZWZpbmVzCi0gKiB1aW50MzJfdCB0byBiZSBzdWNoIGEgdHlwZSB1bmxlc3Mgc3RkaW50Lmggb3IgaW50dHlwZXMuaCBkZWZpbmVzIHVpbnQzMl90LgotICogSG93ZXZlciwgaXQgZG9lc24ndCBzZXQgSEFWRV9VSU5UMzJfVCwgc28gd2UgZG8gdGhhdCBoZXJlLgotICovCi0jaWZkZWYgdWludDMyX3QKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSNpZm5kZWYgUFlfVUlOVDMyX1QKICNkZWZpbmUgUFlfVUlOVDMyX1QgdWludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLS8qIE1hY3JvcyBmb3IgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlOyB1c2VkIGZvciB0eXBlICd0d29kaWdpdHMnIGluIHRoZQotICogaW50ZWdlciBpbXBsZW1lbnRhdGlvbiwgd2hlbiAzMC1iaXQgZGlnaXRzIGFyZSBlbmFibGVkLgotICovCi0jaWZkZWYgdWludDY0X3QKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSNpZm5kZWYgUFlfVUlOVDY0X1QKICNkZWZpbmUgUFlfVUlOVDY0X1QgdWludDY0X3QKLSNlbmRpZgotI2VuZGlmCiAKIC8qIFNpZ25lZCB2YXJpYW50cyBvZiB0aGUgYWJvdmUgKi8KLSNpZmRlZiBpbnQzMl90Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UMzJfVAotI2lmbmRlZiBQWV9JTlQzMl9UCiAjZGVmaW5lIFBZX0lOVDMyX1QgaW50MzJfdAotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIGludDY0X3QKLSNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0jaWZuZGVmIFBZX0lOVDY0X1QKICNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBJZiBQWUxPTkdfQklUU19JTl9ESUdJVCBpcyBub3QgZGVmaW5lZCB0aGVuIHdlJ2xsIHVzZSAzMC1iaXQgZGlnaXRzIGlmIGFsbAogICAgdGhlIG5lY2Vzc2FyeSBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUsIGFuZCB3ZSdyZSBvbiBhIDY0LWJpdCBwbGF0Zm9ybQogICAgKGFzIGRldGVybWluZWQgYnkgU0laRU9GX1ZPSURfUCk7IG90aGVyd2lzZSB3ZSB1c2UgMTUtYml0IGRpZ2l0cy4gKi8KIAogI2lmbmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAotI2lmIChkZWZpbmVkIEhBVkVfVUlOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgXAotICAgICBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QgJiYgU0laRU9GX1ZPSURfUCA+PSA4KQorI2lmIFNJWkVPRl9WT0lEX1AgPj0gOAogI2RlZmluZSBQWUxPTkdfQklUU19JTl9ESUdJVCAzMAogI2Vsc2UKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMTUKQEAgLTE0OSwyNiArNzMsOSBAQAogICogd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLiAgU2ltaWxhcmx5IGZvciBpbnRwdHJfdCwgd3J0IGEgc2lnbmVkCiAgKiBpbnRlZ3JhbCB0eXBlLgogICovCi0jaWZkZWYgSEFWRV9VSU5UUFRSX1QKIHR5cGVkZWYgdWludHB0cl90ICAgICAgIFB5X3VpbnRwdHJfdDsKIHR5cGVkZWYgaW50cHRyX3QgICAgICAgIFB5X2ludHB0cl90OwogCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9JTlQKLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgaW50ICAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGxvbmcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkdfTE9ORykKLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBQWV9MT05HX0xPTkcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2Vsc2UKLSMgICBlcnJvciAiUHl0aG9uIG5lZWRzIGEgdHlwZWRlZiBmb3IgUHlfdWludHB0cl90IGluIHB5cG9ydC5oLiIKLSNlbmRpZiAvKiBIQVZFX1VJTlRQVFJfVCAqLwotCiAvKiBQeV9zc2l6ZV90IGlzIGEgc2lnbmVkIGludGVncmFsIHR5cGUgc3VjaCB0aGF0IHNpemVvZihQeV9zc2l6ZV90KSA9PQogICogc2l6ZW9mKHNpemVfdCkuICBDOTkgZG9lc24ndCBkZWZpbmUgc3VjaCBhIHRoaW5nIGRpcmVjdGx5IChzaXplX3QgaXMgYW4KICAqIHVuc2lnbmVkIGludGVncmFsIHR5cGUpLiAgU2VlIFBFUCAzNTMgZm9yIGRldGFpbHMuCkBAIC0xOTUsMTYgKzEwMiw4IEBACiB0eXBlZGVmIGludCBQeV9zc2l6ZV9jbGVhbl90OwogI2VuZGlmCiAKLS8qIExhcmdlc3QgcG9zc2libGUgdmFsdWUgb2Ygc2l6ZV90LgotICAgU0laRV9NQVggaXMgcGFydCBvZiBDOTksIHNvIGl0IG1pZ2h0IGJlIGRlZmluZWQgb24gc29tZQotICAgcGxhdGZvcm1zLiBJZiBpdCBpcyBub3QgZGVmaW5lZCwgKHNpemVfdCktMSBpcyBhIHBvcnRhYmxlCi0gICBkZWZpbml0aW9uIGZvciBDODksIGR1ZSB0byB0aGUgd2F5IHNpZ25lZC0+dW5zaWduZWQKLSAgIGNvbnZlcnNpb24gaXMgZGVmaW5lZC4gKi8KLSNpZmRlZiBTSVpFX01BWAorLyogTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBvZiBzaXplX3QuICovCiAjZGVmaW5lIFBZX1NJWkVfTUFYIFNJWkVfTUFYCi0jZWxzZQotI2RlZmluZSBQWV9TSVpFX01BWCAoKHNpemVfdCktMSkKLSNlbmRpZgogCiAvKiBMYXJnZXN0IHBvc2l0aXZlIHZhbHVlIG9mIHR5cGUgUHlfc3NpemVfdC4gKi8KICNkZWZpbmUgUFlfU1NJWkVfVF9NQVggKChQeV9zc2l6ZV90KSgoKHNpemVfdCktMSk+PjEpKQpAQCAtMjQ3LDIyICsxNDYsNiBAQAogIyAgIGVuZGlmCiAjZW5kaWYKIAotLyogUFlfRk9STUFUX0xPTkdfTE9ORyBpcyBhbmFsb2dvdXMgdG8gUFlfRk9STUFUX1NJWkVfVCBhYm92ZSwgYnV0IGZvcgotICogdGhlIGxvbmcgbG9uZyB0eXBlIGluc3RlYWQgb2YgdGhlIHNpemVfdCB0eXBlLiAgSXQncyBvbmx5IGF2YWlsYWJsZQotICogd2hlbiBIQVZFX0xPTkdfTE9ORyBpcyBkZWZpbmVkLiBUaGUgImhpZ2ggbGV2ZWwiIFB5dGhvbiBmb3JtYXQKLSAqIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmUgd2lsbCBpbnRlcnByZXQgImxsZCIgb3IgImxsdSIgY29ycmVjdGx5IG9uCi0gKiBhbGwgcGxhdGZvcm1zLgotICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSMgICBpZm5kZWYgUFlfRk9STUFUX0xPTkdfTE9ORwotIyAgICAgICBpZmRlZiBNU19XSU5ET1dTCi0jICAgICAgICAgICBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyAiSTY0IgotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciAiVGhpcyBwbGF0Zm9ybSdzIHB5Y29uZmlnLmggbmVlZHMgdG8gZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkciCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbmRpZgotCiAvKiBQeV9MT0NBTCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHN0YXRpYyB0byBnZXQgdGhlIGZhc3Rlc3QgcG9zc2libGUgY2FsbGluZwogICogY29udmVudGlvbiBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIGEgZ2l2ZW4gbW9kdWxlLgogICoKQEAgLTI5OCwyNiArMTgxLDkgQEAKICNkZWZpbmUgUHlfTE9DQUxfSU5MSU5FKHR5cGUpIHN0YXRpYyB0eXBlCiAjZW5kaWYKIAotLyogUHlfTUVNQ1BZIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgbWVtY3B5IGluIGNhc2VzIHdoZXJlIHRoZSBjb3BpZWQgYmxvY2tzCi0gKiBhcmUgb2Z0ZW4gdmVyeSBzaG9ydC4gIFdoaWxlIG1vc3QgcGxhdGZvcm1zIGhhdmUgaGlnaGx5IG9wdGltaXplZCBjb2RlIGZvcgotICogbGFyZ2UgdHJhbnNmZXJzLCB0aGUgc2V0dXAgY29zdHMgZm9yIG1lbWNweSBhcmUgb2Z0ZW4gcXVpdGUgaGlnaC4gIE1FTUNQWQotICogc29sdmVzIHRoaXMgYnkgZG9pbmcgc2hvcnQgY29waWVzICJpbiBsaW5lIi4KLSAqLwotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgUHlfTUVNQ1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc2l6ZV90IGlfLCBuXyA9IChsZW5ndGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2hhciAqdF8gPSAodm9pZCopICh0YXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciAqc18gPSAodm9pZCopIChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKG5fID49IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG1lbWNweSh0Xywgc18sIG5fKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGZvciAoaV8gPSAwOyBpXyA8IG5fOyBpXysrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0X1tpX10gPSBzX1tpX107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotI2Vsc2UKKy8qIFB5X01FTUNQWSBpcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKKyAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4MTI2ICovCiAjZGVmaW5lIFB5X01FTUNQWSBtZW1jcHkKLSNlbmRpZgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKQEAgLTU3MCwxOCArNDM2LDE4IEBACiAjZGVmaW5lIEhBVkVfUFlfU0VUXzUzQklUX1BSRUNJU0lPTiAxCiAjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUiBcCiAgIHVuc2lnbmVkIGludCBvbGRfZnBjciwgbmV3X2ZwY3IKLSNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQJCQkJCVwKLSAgZG8gewkJCQkJCQkJCVwKLSAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsJCQlcCi0gICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8JCQlcCi0gICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOwkJCQlcCi0gICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKLSAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsJXAorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOyAgICAgICAgXAogICB9IHdoaWxlICgwKQotI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQJCQkJCVwKLSAgZG8gewkJCQkJCQkJCVwKLSAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAotICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOwlcCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7ICAgICAgICBcCiAgIH0gd2hpbGUgKDApCiAjZW5kaWYKIApAQCAtODUwLDEwICs3MTYsNiBAQAogI3ByYWdtYSBlcnJvcl9tZXNzYWdlcyAob2ZmLEVfRU5EX09GX0xPT1BfQ09ERV9OT1RfUkVBQ0hFRCkKICNlbmRpZgogCi0vKgotICogT2xkZXIgTWljcm9zb2Z0IGNvbXBpbGVycyBkb24ndCBzdXBwb3J0IHRoZSBDOTkgbG9uZyBsb25nIGxpdGVyYWwgc3VmZml4ZXMsCi0gKiBzbyB0aGVzZSB3aWxsIGJlIGRlZmluZWQgaW4gUEMvcHljb25maWcuaCBmb3IgdGhvc2UgY29tcGlsZXJzLgotICovCiAjaWZuZGVmIFB5X0xMCiAjZGVmaW5lIFB5X0xMKHgpIHgjI0xMCiAjZW5kaWYKQEAgLTg2MiwxNSArNzI0LDcgQEAKICNkZWZpbmUgUHlfVUxMKHgpIFB5X0xMKHgjI1UpCiAjZW5kaWYKIAotI2lmZGVmIFZBX0xJU1RfSVNfQVJSQVkKLSNkZWZpbmUgUHlfVkFfQ09QWSh4LCB5KSBQeV9NRU1DUFkoKHgpLCAoeSksIHNpemVvZih2YV9saXN0KSkKLSNlbHNlCi0jaWZkZWYgX192YV9jb3B5Ci0jZGVmaW5lIFB5X1ZBX0NPUFkgX192YV9jb3B5Ci0jZWxzZQotI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpICh4KSA9ICh5KQotI2VuZGlmCi0jZW5kaWYKKyNkZWZpbmUgUHlfVkFfQ09QWSB2YV9jb3B5CiAKIC8qCiAgKiBDb252ZW5pZW50IG1hY3JvcyB0byBkZWFsIHdpdGggZW5kaWFubmVzcyBvZiB0aGUgcGxhdGZvcm0uIFdPUkRTX0JJR0VORElBTiBpcwpAQCAtOTA2LDQgKzc2MCw4IEBACiAjZW5kaWYgLyogX01TQ19WRVIgPj0gMTkwMCAqLwogI2VuZGlmIC8qIFB5X0JVSUxEX0NPUkUgKi8KIAorI2lmZGVmIF9fQU5EUk9JRF9fCisjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KKyNlbmRpZgorCiAjZW5kaWYgLyogUHlfUFlQT1JUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggMDQ5OWE3NC4uYWZjM2MwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTgsMTQgKzgsMjEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIFRoaXMgbGltaXRhdGlvbiBpcyBmb3IgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWNpdHkuIElmIG5lZWRlZCBpdCBjYW4gYmUKK3JlbW92ZWQgKHdpdGggZWZmb3J0KS4gKi8KKyNkZWZpbmUgTUFYX0NPX0VYVFJBX1VTRVJTIDI1NQorCiAvKiBTdGF0ZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzICovCiAKIHN0cnVjdCBfdHM7IC8qIEZvcndhcmQgKi8KIHN0cnVjdCBfaXM7IC8qIEZvcndhcmQgKi8KK3N0cnVjdCBfZnJhbWU7IC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIFB5RnJhbWVPYmplY3QuICovCiAKICNpZmRlZiBQeV9MSU1JVEVEX0FQSQogdHlwZWRlZiBzdHJ1Y3QgX2lzIFB5SW50ZXJwcmV0ZXJTdGF0ZTsKICNlbHNlCit0eXBlZGVmIFB5T2JqZWN0KiAoKl9QeUZyYW1lRXZhbEZ1bmN0aW9uKShzdHJ1Y3QgX2ZyYW1lICosIGludCk7CisKIHR5cGVkZWYgc3RydWN0IF9pcyB7CiAKICAgICBzdHJ1Y3QgX2lzICpuZXh0OwpAQCAtMzYsMTkgKzQzLDE3IEBACiAjaWZkZWYgSEFWRV9ETE9QRU4KICAgICBpbnQgZGxvcGVuZmxhZ3M7CiAjZW5kaWYKLSNpZmRlZiBXSVRIX1RTQwotICAgIGludCB0c2NkdW1wOwotI2VuZGlmCiAKICAgICBQeU9iamVjdCAqYnVpbHRpbnNfY29weTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmM7CisgICAgLyogSW5pdGlhbGl6ZWQgdG8gUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQoKS4gKi8KKyAgICBfUHlGcmFtZUV2YWxGdW5jdGlvbiBldmFsX2ZyYW1lOwogfSBQeUludGVycHJldGVyU3RhdGU7CiAjZW5kaWYKIAogCiAvKiBTdGF0ZSB1bmlxdWUgcGVyIHRocmVhZCAqLwogCi1zdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwotCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBQeV90cmFjZWZ1bmMgcmV0dXJuIC0xIHdoZW4gcmFpc2luZyBhbiBleGNlcHRpb24sIG9yIDAgZm9yIHN1Y2Nlc3MuICovCiB0eXBlZGVmIGludCAoKlB5X3RyYWNlZnVuYykoUHlPYmplY3QgKiwgc3RydWN0IF9mcmFtZSAqLCBpbnQsIFB5T2JqZWN0ICopOwpAQCAtMTM3LDYgKzE0MiwxMiBAQAogICAgIFB5T2JqZWN0ICpjb3JvdXRpbmVfd3JhcHBlcjsKICAgICBpbnQgaW5fY29yb3V0aW5lX3dyYXBwZXI7CiAKKyAgICBQeV9zc2l6ZV90IGNvX2V4dHJhX3VzZXJfY291bnQ7CisgICAgZnJlZWZ1bmMgY29fZXh0cmFfZnJlZWZ1bmNzW01BWF9DT19FWFRSQV9VU0VSU107CisKKyAgICBQeU9iamVjdCAqYXN5bmNfZ2VuX2ZpcnN0aXRlcjsKKyAgICBQeU9iamVjdCAqYXN5bmNfZ2VuX2ZpbmFsaXplcjsKKwogICAgIC8qIFhYWCBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGFsc28gYmUgaGVyZSAqLwogCiB9IFB5VGhyZWFkU3RhdGU7CkBAIC0xNDYsNyArMTU3LDkgQEAKIFB5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoUHlJbnRlcnByZXRlclN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIC8qIE5ldyBpbiAzLjMgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOwpAQCAtMTU4LDE0ICsxNzEsMjAgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9OZXcoUHlJbnRlcnByZXRlclN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VGhyZWFkU3RhdGVfSW5pdChQeVRocmVhZFN0YXRlICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0NsZWFyKFB5VGhyZWFkU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfRGVsZXRlKFB5VGhyZWFkU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0RlbGV0ZUV4Y2VwdChQeVRocmVhZFN0YXRlICp0c3RhdGUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2lmZGVmIFdJVEhfVEhSRUFECiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudCh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0lMU3RhdGVfUmVpbml0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIFJldHVybiB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuIFRoZSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayBtdXN0IGJlIGhlbGQuCkBAIC0xNzMsOSArMTkyLDExIEBACiAgKiB0aGUgY2FsbGVyIG5lZWRuJ3QgY2hlY2sgZm9yIE5VTEwpLiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfR2V0KHZvaWQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBTaW1pbGFyIHRvIFB5VGhyZWFkU3RhdGVfR2V0KCksIGJ1dCBkb24ndCBpc3N1ZSBhIGZhdGFsIGVycm9yCiAgKiBpZiBpdCBpcyBOVUxMLiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfU3dhcChQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVRocmVhZFN0YXRlX0dldERpY3Qodm9pZCk7CkBAIC0yNDEsMTEgKzI2MiwyMyBAQAogKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSh2b2lkKTsKIAotLyogSGVscGVyL2RpYWdub3N0aWMgZnVuY3Rpb24gLSByZXR1cm4gMSBpZiB0aGUgY3VycmVudCB0aHJlYWQKLSAqIGN1cnJlbnRseSBob2xkcyB0aGUgR0lMLCAwIG90aGVyd2lzZQotICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBJc3N1ZSAjMjY1NTg6IEZsYWcgdG8gZGlzYWJsZSBQeUdJTFN0YXRlX0NoZWNrKCkuCisgICBJZiBzZXQgdG8gbm9uLXplcm8sIFB5R0lMU3RhdGVfQ2hlY2soKSBhbHdheXMgcmV0dXJuIDEuICovCitQeUFQSV9EQVRBKGludCkgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZDsKKworLyogSGVscGVyL2RpYWdub3N0aWMgZnVuY3Rpb24gLSByZXR1cm4gMSBpZiB0aGUgY3VycmVudCB0aHJlYWQKKyAgIGN1cnJlbnRseSBob2xkcyB0aGUgR0lMLCAwIG90aGVyd2lzZS4KKworICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgMSBpZiBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkIGlzIG5vbi16ZXJvLiAqLwogUHlBUElfRlVOQyhpbnQpIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCk7CisKKy8qIFVuc2FmZSBmdW5jdGlvbiB0byBnZXQgdGhlIHNpbmdsZSBQeUludGVycHJldGVyU3RhdGUgdXNlZCBieSB0aGlzIHByb2Nlc3MnCisgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbi4KKworICAgUmV0dXJuIE5VTEwgYmVmb3JlIF9QeUdJTFN0YXRlX0luaXQoKSBpcyBjYWxsZWQgYW5kIGFmdGVyIF9QeUdJTFN0YXRlX0ZpbmkoKQorICAgaXMgY2FsbGVkLiAqLworUHlBUElfRlVOQyhQeUludGVycHJldGVyU3RhdGUgKikgX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSh2b2lkKTsKICNlbmRpZgogCiAjZW5kaWYgICAvKiAjaWZkZWYgV0lUSF9USFJFQUQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdHJoZXguaCBiL0luY2x1ZGUvcHlzdHJoZXguaAppbmRleCAxZGMxMjU1Li42NmEzMGUyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RyaGV4LmgKKysrIGIvSW5jbHVkZS9weXN0cmhleC5oCkBAIC01LDEwICs1LDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm5zIGEgc3RyKCkgY29udGFpbmluZyB0aGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4KGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOwogLyogUmV0dXJucyBhIGJ5dGVzKCkgY29udGFpbmluZyB0aGUgQVNDSUkgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4X2J5dGVzKGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdHJ0b2QuaCBiL0luY2x1ZGUvcHlzdHJ0b2QuaAppbmRleCAyM2ZkMWM2Li5jMWU4NGRlIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RydG9kLmgKKysrIGIvSW5jbHVkZS9weXN0cnRvZC5oCkBAIC0xOSw2ICsxOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKTsKKwogUHlBUElfRlVOQyhkb3VibGUpIF9QeV9wYXJzZV9pbmZfb3JfbmFuKGNvbnN0IGNoYXIgKnAsIGNoYXIgKiplbmRwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IDljMmU4MTMuLmVmYzYxM2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtNjYsOCArNjYsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CkBAIC03Niw4ICs3Niw4IEBACiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLAogICAgIGNvbnN0IGNoYXIqIGVuYywKICAgICBpbnQgc3RhcnQsCi0gICAgY2hhciAqcHMxLAotICAgIGNoYXIgKnBzMiwKKyAgICBjb25zdCBjaGFyICpwczEsCisgICAgY29uc3QgY2hhciAqcHMyLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCiAgICAgaW50ICplcnJjb2RlLAogICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTkxLDkgKzkxLDExIEBACiAjZW5kaWYKIFB5QVBJX0ZVTkMoc3RydWN0IF9ub2RlICopIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lKGNvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOworI2VuZGlmCiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRocmVhZC5oIGIvSW5jbHVkZS9weXRocmVhZC5oCmluZGV4IDZlOWYzMDMuLjg4YzQ4NzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aHJlYWQuaAorKysgYi9JbmNsdWRlL3B5dGhyZWFkLmgKQEAgLTM3LDE5ICszNywxNCBAQAogICAgbW9kdWxlIGV4cG9zZXMgYSBoaWdoZXItbGV2ZWwgQVBJLCB3aXRoIHRpbWVvdXRzIGV4cHJlc3NlZCBpbiBzZWNvbmRzCiAgICBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbGxvd2VkLgogKi8KLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotI2RlZmluZSBQWV9USU1FT1VUX1QgUFlfTE9OR19MT05HCisjZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nIGxvbmcKICNkZWZpbmUgUFlfVElNRU9VVF9NQVggUFlfTExPTkdfTUFYCi0jZWxzZQotI2RlZmluZSBQWV9USU1FT1VUX1QgbG9uZwotI2RlZmluZSBQWV9USU1FT1VUX01BWCBMT05HX01BWAotI2VuZGlmCiAKIC8qIEluIHRoZSBOVCBBUEksIHRoZSB0aW1lb3V0IGlzIGEgRFdPUkQgYW5kIGlzIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMgKi8KICNpZiBkZWZpbmVkIChOVF9USFJFQURTKQotI2lmIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDAgPCBQWV9USU1FT1VUX01BWCkKKyNpZiAweEZGRkZGRkZGTEwgKiAxMDAwIDwgUFlfVElNRU9VVF9NQVgKICN1bmRlZiBQWV9USU1FT1VUX01BWAotI2RlZmluZSBQWV9USU1FT1VUX01BWCAoUHlfTEwoMHhGRkZGRkZGRikgKiAxMDAwKQorI2RlZmluZSBQWV9USU1FT1VUX01BWCAoMHhGRkZGRkZGRkxMICogMTAwMCkKICNlbmRpZgogI2VuZGlmCiAKQEAgLTc0LDcgKzY5LDkgQEAKIFB5QVBJX0ZVTkMoc2l6ZV90KSBQeVRocmVhZF9nZXRfc3RhY2tzaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX3NldF9zdGFja3NpemUoc2l6ZV90KTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVRocmVhZF9HZXRJbmZvKHZvaWQpOworI2VuZGlmCiAKIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIChUTFMpIEFQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX2NyZWF0ZV9rZXkodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCA0OTQzMjJjLi44N2FjN2ZjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTEzLDE2ICsxMywxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmZGVmIFBZX0lOVDY0X1QKIC8qIF9QeVRpbWVfdDogUHl0aG9uIHRpbWVzdGFtcCB3aXRoIHN1YnNlY29uZCBwcmVjaXNpb24uIEl0IGNhbiBiZSB1c2VkIHRvCiAgICBzdG9yZSBhIGR1cmF0aW9uLCBhbmQgc28gaW5kaXJlY3RseSBhIGRhdGUgKHJlbGF0ZWQgdG8gYW5vdGhlciBkYXRlLCBsaWtlCiAgICBVTklYIGVwb2NoKS4gKi8KLXR5cGVkZWYgUFlfSU5UNjRfVCBfUHlUaW1lX3Q7Cit0eXBlZGVmIGludDY0X3QgX1B5VGltZV90OwogI2RlZmluZSBfUHlUaW1lX01JTiBQWV9MTE9OR19NSU4KICNkZWZpbmUgX1B5VGltZV9NQVggUFlfTExPTkdfTUFYCi0jZWxzZQotIyAgZXJyb3IgIl9QeVRpbWVfdCBuZWVkIHNpZ25lZCA2NC1iaXQgaW50ZWdlciB0eXBlIgotI2VuZGlmCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgLyogUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikuCkBAIC0zMCw3ICsyNiwxMCBAQAogICAgIF9QeVRpbWVfUk9VTkRfRkxPT1I9MCwKICAgICAvKiBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKS4KICAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCBmb3IgdGltZW91dCB0byB3YWl0ICJhdCBsZWFzdCIgTiBzZWNvbmRzLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORz0xLAorICAgIC8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyLgorICAgICAgIEZvciBleGFtcGxlLCB1c2VkIHRvIHJvdW5kIGZyb20gYSBQeXRob24gZmxvYXQuICovCisgICAgX1B5VGltZV9ST1VORF9IQUxGX0VWRU4KIH0gX1B5VGltZV9yb3VuZF90OwogCiAvKiBDb252ZXJ0IGEgdGltZV90IHRvIGEgUHlMb25nLiAqLwpAQCAtNzUsNyArNzQsNyBAQAogICAgICAgICAgICAgKChfUHlUaW1lX3QpKHNlY29uZHMpICogKDEwMDAgKiAxMDAwICogMTAwMCkpCiAKIC8qIENyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqLwotUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucyk7CitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobG9uZyBsb25nIG5zKTsKIAogLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIChQeXRob24gZmxvYXQgb3IgaW50KSB0byBhIHRpbWV0YW1wLgogICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCkBAIC0xODUsNiArMTg0LDE0IEBACiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0luaXQodm9pZCk7CiAKKy8qIENvbnZlcnRzIGEgdGltZXN0YW1wIHRvIHRoZSBHcmVnb3JpYW4gdGltZSwgdXNpbmcgdGhlIGxvY2FsIHRpbWUgem9uZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKTsKKworLyogQ29udmVydHMgYSB0aW1lc3RhbXAgdG8gdGhlIEdyZWdvcmlhbiB0aW1lLCBhc3N1bWluZyBVVEMuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3NldG9iamVjdC5oIGIvSW5jbHVkZS9zZXRvYmplY3QuaAppbmRleCBmMTdiYzFiLi44N2VjMWM4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3NldG9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKQEAgLTEwLDEyICsxMCwxMyBAQAogCiAvKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZW50cmllcyBpbiB0aGUgdGFibGU6CiAKLTEuIFVudXNlZDogIGtleSA9PSBOVUxMCi0yLiBBY3RpdmU6ICBrZXkgIT0gTlVMTCBhbmQga2V5ICE9IGR1bW15Ci0zLiBEdW1teTogICBrZXkgPT0gZHVtbXkKKzEuIFVudXNlZDogIGtleSA9PSBOVUxMIGFuZCBoYXNoID09IDAKKzIuIER1bW15OiAgIGtleSA9PSBkdW1teSBhbmQgaGFzaCA9PSAtMQorMy4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teSBhbmQgaGFzaCAhPSAtMQogCi1UaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaGF2ZSBubyBtZWFuaW5nLgotVGhlIGhhc2ggZmllbGQgb2YgRHVtbW55IHNsb3RzIGFyZSBzZXQgdG8gLTEKK1RoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBzbG90cyBpcyBhbHdheXMgemVyby4KKworVGhlIGhhc2ggZmllbGQgb2YgRHVtbXkgc2xvdHMgYXJlIHNldCB0byAtMQogbWVhbmluZyB0aGF0IGR1bW15IGVudHJpZXMgY2FuIGJlIGRldGVjdGVkIGJ5CiBlaXRoZXIgZW50cnktPmtleT09ZHVtbXkgb3IgYnkgZW50cnktPmhhc2g9PS0xLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCmluZGV4IDk0OGY2OTAuLjVkYThhNDYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKKysrIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaApAQCAtNDksMTAgKzQ5LDggQEAKICNkZWZpbmUgVF9PQkpFQ1RfRVggMTYgIC8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIHZhbHVlIGlzIE5VTEwsIGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcKICNkZWZpbmUgVF9VTE9OR0xPTkcgICAgIDE4Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KIAogI2RlZmluZSBUX1BZU1NJWkVUICAgICAgMTkgICAgICAvKiBQeV9zc2l6ZV90ICovCiAjZGVmaW5lIFRfTk9ORSAgICAgICAgICAyMCAgICAgIC8qIFZhbHVlIGlzIGFsd2F5cyBOb25lICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5bXRhYmxlLmggYi9JbmNsdWRlL3N5bXRhYmxlLmgKaW5kZXggMTQwOWNkOS4uODZhZTNjMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeW10YWJsZS5oCisrKyBiL0luY2x1ZGUvc3ltdGFibGUuaApAQCAtNDgsNiArNDgsNyBAQAogICAgIHVuc2lnbmVkIHN0ZV9jaGlsZF9mcmVlIDogMTsgIC8qIHRydWUgaWYgYSBjaGlsZCBibG9jayBoYXMgZnJlZSB2YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBmcmVlIHJlZnMgdG8gZ2xvYmFscyAqLwogICAgIHVuc2lnbmVkIHN0ZV9nZW5lcmF0b3IgOiAxOyAgIC8qIHRydWUgaWYgbmFtZXNwYWNlIGlzIGEgZ2VuZXJhdG9yICovCisgICAgdW5zaWduZWQgc3RlX2Nvcm91dGluZSA6IDE7ICAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgYSBjb3JvdXRpbmUgKi8KICAgICB1bnNpZ25lZCBzdGVfdmFyYXJncyA6IDE7ICAgICAvKiB0cnVlIGlmIGJsb2NrIGhhcyB2YXJhcmdzICovCiAgICAgdW5zaWduZWQgc3RlX3ZhcmtleXdvcmRzIDogMTsgLyogdHJ1ZSBpZiBibG9jayBoYXMgdmFya2V5d29yZHMgKi8KICAgICB1bnNpZ25lZCBzdGVfcmV0dXJuc192YWx1ZSA6IDE7ICAvKiB0cnVlIGlmIG5hbWVzcGFjZSB1c2VzIHJldHVybiB3aXRoCkBAIC05MSw2ICs5Miw3IEBACiAjZGVmaW5lIERFRl9GUkVFIDI8PDQgICAgICAgICAgLyogbmFtZSB1c2VkIGJ1dCBub3QgZGVmaW5lZCBpbiBuZXN0ZWQgYmxvY2sgKi8KICNkZWZpbmUgREVGX0ZSRUVfQ0xBU1MgMjw8NSAgICAvKiBmcmVlIHZhcmlhYmxlIGZyb20gY2xhc3MncyBtZXRob2QgKi8KICNkZWZpbmUgREVGX0lNUE9SVCAyPDw2ICAgICAgICAvKiBhc3NpZ25tZW50IG9jY3VycmVkIHZpYSBpbXBvcnQgKi8KKyNkZWZpbmUgREVGX0FOTk9UIDI8PDcgICAgICAgICAvKiB0aGlzIG5hbWUgaXMgYW5ub3RhdGVkICovCiAKICNkZWZpbmUgREVGX0JPVU5EIChERUZfTE9DQUwgfCBERUZfUEFSQU0gfCBERUZfSU1QT1JUKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5c21vZHVsZS5oIGIvSW5jbHVkZS9zeXNtb2R1bGUuaAppbmRleCBjZGUxMGFjLi5jNTU0N2ZmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5c21vZHVsZS5oCisrKyBiL0luY2x1ZGUvc3lzbW9kdWxlLmgKQEAgLTgsMTEgKzgsMTEgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U3lzX0dldE9iamVjdChjb25zdCBjaGFyICopOworUHlBUElfRlVOQyhpbnQpIFB5U3lzX1NldE9iamVjdChjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfR2V0T2JqZWN0SWQoX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeVN5c19TZXRPYmplY3QoY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlTeXNfU2V0T2JqZWN0SWQoX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKik7CisjZW5kaWYKIAogUHlBUElfRlVOQyh2b2lkKSBQeVN5c19TZXRBcmd2KGludCwgd2NoYXJfdCAqKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5U3lzX1NldEFyZ3ZFeChpbnQsIHdjaGFyX3QgKiosIGludCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3RyYWNlYmFjay5oIGIvSW5jbHVkZS90cmFjZWJhY2suaAppbmRleCBjM2VjYmUyLi5iNTg3NDEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3RyYWNlYmFjay5oCisrKyBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKQEAgLTMxLDYgKzMxLDcgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVRyYWNlQmFja19UeXBlOwogI2RlZmluZSBQeVRyYWNlQmFja19DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmUHlUcmFjZUJhY2tfVHlwZSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogV3JpdGUgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaW50byB0aGUgZmlsZSAnZmQnLiBGb3IgZXhhbXBsZToKIAogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CkBAIC01MywxOSArNTQsNjQgQEAKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUpOwogCiAvKiBXcml0ZSB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGludG8gdGhlIGZpbGUgJ2ZkJy4gY3VycmVudF90aHJlYWQgY2FuIGJlCi0gICBOVUxMLiBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgorICAgTlVMTC4KKworICAgUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkuIEl0IGNhbGxzCiAgICBfUHlfRHVtcFRyYWNlYmFjaygpIGZvciBlYWNoIHRocmVhZCwgYW5kIHNvIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9ucy4gSXQKICAgIG9ubHkgd3JpdGUgdGhlIHRyYWNlYmFjayBvZiB0aGUgZmlyc3QgMTAwIHRocmVhZHM6IHdyaXRlICIuLi4iIGlmIHRoZXJlIGFyZQogICAgbW9yZSB0aHJlYWRzLgogCisgICBJZiBjdXJyZW50X3RzdGF0ZSBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IHRoZSBQeXRob24gdGhyZWFkIHN0YXRlCisgICBvZiB0aGUgY3VycmVudCB0aHJlYWQuIEl0IGlzIG5vdCBhbiBlcnJvciBpZiB0aGUgZnVuY3Rpb24gaXMgdW5hYmxlIHRvIGdldAorICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZS4KKworICAgSWYgaW50ZXJwIGlzIE5VTEwsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIGZyb20KKyAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUsIG9yIGZyb20KKyAgIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUoKSBpbiBsYXN0IHJlc29ydC4KKworICAgSXQgaXMgYmV0dGVyIHRvIHBhc3MgTlVMTCB0byBpbnRlcnAgYW5kIGN1cnJlbnRfdHN0YXRlLCB0aGUgZnVuY3Rpb24gdHJpZXMKKyAgIGRpZmZlcmVudCBvcHRpb25zIHRvIHJldHJpZXZlIHRoZXNlIGluZm9ybWF0aW9ucy4KKwogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAogUHlBUElfRlVOQyhjb25zdCBjaGFyKikgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKAotICAgIGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCi0gICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpOworICAgIGludCBmZCwKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKworLyogV3JpdGUgYSBVbmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuIEVuY29kZSB0aGUgc3RyaW5nIHRvCisgICBBU0NJSSB1c2luZyB0aGUgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgorCisgICBEbyBub3RoaW5nIGlmIHRleHQgaXMgbm90IGEgVW5pY29kZSBvYmplY3QuIFRoZSBmdW5jdGlvbiBhY2NlcHRzIFVuaWNvZGUKKyAgIHN0cmluZyB3aGljaCBpcyBub3QgcmVhZHkgKFB5VW5pY29kZV9XQ0hBUl9LSU5EKS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KTsKKworLyogRm9ybWF0IGFuIGludGVnZXIgYXMgZGVjaW1hbCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wRGVjaW1hbCgKKyAgICBpbnQgZmQsCisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSk7CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGFzIGhleGFkZWNpbWFsIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZCB3aXRoIGF0IGxlYXN0CisgICB3aWR0aCBkaWdpdHMuCisKKyAgIFRoZSBtYXhpbXVtIHdpZHRoIGlzIHNpemVvZih1bnNpZ25lZCBsb25nKSoyIGRpZ2l0cy4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBIZXhhZGVjaW1hbCgKKyAgICBpbnQgZmQsCisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSwKKyAgICBQeV9zc2l6ZV90IHdpZHRoKTsKKworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCA5MzA4YTZhLi41ODdjZjAzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMTAzLDEwICsxMDMsNiBAQAogIyBlbmRpZgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0jICBkZWZpbmUgSEFWRV9NQkNTCi0jZW5kaWYKLQogI2lmZGVmIEhBVkVfV0NIQVJfSAogLyogV29yayBhcm91bmQgYSBjb3NtZXRpYyBidWcgaW4gQlNESSA0Lnggd2NoYXIuaDsgdGhhbmtzIHRvIFRob21hcyBXb3V0ZXJzICovCiAjIGlmZGVmIF9IQVZFX0JTREkKQEAgLTExNywyMSArMTEzLDkgQEAKIAogLyogUHlfVUNTNCBhbmQgUHlfVUNTMiBhcmUgdHlwZWRlZnMgZm9yIHRoZSByZXNwZWN0aXZlCiAgICB1bmljb2RlIHJlcHJlc2VudGF0aW9ucy4gKi8KLSNpZiBTSVpFT0ZfSU5UID09IDQKLXR5cGVkZWYgdW5zaWduZWQgaW50IFB5X1VDUzQ7Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHlfVUNTNDsKLSNlbHNlCi0jZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzQiCi0jZW5kaWYKLQotI2lmIFNJWkVPRl9TSE9SVCA9PSAyCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IFB5X1VDUzI7Ci0jZWxzZQotI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1MyIgotI2VuZGlmCi0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQeV9VQ1MxOwordHlwZWRlZiB1aW50MzJfdCBQeV9VQ1M0OwordHlwZWRlZiB1aW50MTZfdCBQeV9VQ1MyOwordHlwZWRlZiB1aW50OF90IFB5X1VDUzE7CiAKIC8qIC0tLSBJbnRlcm5hbCBVbmljb2RlIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xNzIsNyArMTU2LDcgQEAKICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQyhjaCkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9DT1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpIFwKLSAgICBQeV9NRU1DUFkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgbWVtY3B5KCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfRklMTCh0YXJnZXQsIHZhbHVlLCBsZW5ndGgpIFwKICAgICBkbyB7UHlfc3NpemVfdCBpXzsgUHlfVU5JQ09ERSAqdF8gPSAodGFyZ2V0KTsgUHlfVU5JQ09ERSB2XyA9ICh2YWx1ZSk7XApAQCAtNzM0LDEwICs3MTgsMTIgQEAKICAgICBQeV9zc2l6ZV90IHNpemUpOwogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX1N1YnN0cmluZygKICAgICBQeU9iamVjdCAqc3RyLAogICAgIFB5X3NzaXplX3Qgc3RhcnQsCiAgICAgUHlfc3NpemVfdCBlbmQpOworI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIENvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyIG9mIHRoZSBzdWJzdHJpbmcgdW5pY29kZVtzdGFydDplbmRdLgpAQCAtNzQ4LDYgKzczNCw3IEBACiAgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaWYgY29weV9udWxsCiAgICBpcyBzZXQuIFJldHVybiBOVUxMIGFuZCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuIFJhaXNlIGEgU3lzdGVtRXJyb3IgaWYKICAgIHRoZSBidWZmZXIgaXMgc21hbGxlciB0aGFuIHRoZSBzdHJpbmcuIFJldHVybiBidWZmZXIgb24gc3VjY2Vzcy4KQEAgLTc2Myw2ICs3NTAsNyBAQAogICogUHlNZW1fTWFsbG9jOyBpZiB0aGlzIGZhaWxzLCBOVUxMIGlzIHJldHVybmVkIHdpdGggYSBtZW1vcnkgZXJyb3IKICAgIGV4Y2VwdGlvbiBzZXQuICovCiBQeUFQSV9GVU5DKFB5X1VDUzQqKSBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdW5pY29kZSk7CisjZW5kaWYKIAogLyogUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKICAgIFB5X1VOSUNPREUgYnVmZmVyLgpAQCAtNzg3LDExICs3NzUsMTMgQEAKICAgICApOwogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuICovCiAKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldExlbmd0aCgKICAgICBQeU9iamVjdCAqdW5pY29kZQogKTsKKyNlbmRpZgogCiAvKiBHZXQgdGhlIG51bWJlciBvZiBQeV9VTklDT0RFIHVuaXRzIGluIHRoZQogICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqLwpAQCAtODAwLDYgKzc5MCw3IEBACiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIC8qIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgc3RyaW5nLiAqLwogCiBQeUFQSV9GVU5DKFB5X1VDUzQpIFB5VW5pY29kZV9SZWFkQ2hhcigKQEAgLTgxNyw2ICs4MDgsNyBAQAogICAgIFB5X3NzaXplX3QgaW5kZXgsCiAgICAgUHlfVUNTNCBjaGFyYWN0ZXIKICAgICApOworI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEdldCB0aGUgbWF4aW11bSBvcmRpbmFsIGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAqLwpAQCAtOTAwLDcgKzg5Miw3IEBACiAgICAgLyogbWluaW11bSBjaGFyYWN0ZXIgKGRlZmF1bHQ6IDEyNywgQVNDSUkpICovCiAgICAgUHlfVUNTNCBtaW5fY2hhcjsKIAotICAgIC8qIElmIG5vbi16ZXJvLCBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBieSAyNSUgKGRlZmF1bHQ6IDApLiAqLworICAgIC8qIElmIG5vbi16ZXJvLCBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciAoZGVmYXVsdDogMCkuICovCiAgICAgdW5zaWduZWQgY2hhciBvdmVyYWxsb2NhdGU7CiAKICAgICAvKiBJZiByZWFkb25seSBpcyAxLCBidWZmZXIgaXMgYSBzaGFyZWQgc3RyaW5nIChjYW5ub3QgYmUgbW9kaWZpZWQpCkBAIC05MzQsNiArOTI2LDIzIEBACiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKTsKIAorLyogUHJlcGFyZSB0aGUgYnVmZmVyIHRvIGhhdmUgYXQgbGVhc3QgdGhlIGtpbmQgS0lORC4KKyAgIEZvciBleGFtcGxlLCBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGVuc3VyZXMgdGhhdCB0aGUgd3JpdGVyIHdpbGwKKyAgIHN1cHBvcnQgY2hhcmFjdGVycyBpbiByYW5nZSBVKzAwMC1VK0ZGRkYuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworI2RlZmluZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKFdSSVRFUiwgS0lORCkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KChLSU5EKSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCksICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChLSU5EKSA8PSAoV1JJVEVSKS0+a2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoKFdSSVRFUiksIChLSU5EKSkpCisKKy8qIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkKKyAgIG1hY3JvIGluc3RlYWQuICovCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kKTsKKwogLyogQXBwZW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIFB5QVBJX0ZVTkMoaW50KQpAQCAtMTE3MCwyMiArMTE3OSwzMCBAQAogICAgICk7CiAKIC8qIERlY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbgotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiBUaGUgb25seSBzdXBwb3J0ZWQgc3RhbmRhcmQgZW5jb2RpbmcgaXMgcm90MTMuCisgICBVc2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBkZWNvZGUgZnJvbSBzdHIuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCAgICAgICAvKiBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwotICAgICk7CisgICAgKSBQeV9ERVBSRUNBVEVEKDMuNik7CiAKIC8qIERlY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFVuaWNvZGUKLSAgIG9iamVjdC4gKi8KKyAgIG9iamVjdC4KKworICAgVGhpcyBBUEkgaXMgREVQUkVDQVRFRC4gVGhlIG9ubHkgc3VwcG9ydGVkIHN0YW5kYXJkIGVuY29kaW5nIGlzIHJvdDEzLgorICAgVXNlIFB5Q29kZWNfRGVjb2RlKCkgdG8gZGVjb2RlIHdpdGggcm90MTMgYW5kIG5vbi1zdGFuZGFyZCBjb2RlY3MKKyAgIHRoYXQgZGVjb2RlIGZyb20gc3RyIHRvIHN0ci4gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCAgICAgICAvKiBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwotICAgICk7CisgICAgKSBQeV9ERVBSRUNBVEVEKDMuNik7CiAKIC8qIEVuY29kZXMgYSBQeV9VTklDT0RFIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gc2l6ZSBhbmQgcmV0dXJucyBhCiAgICBQeXRob24gc3RyaW5nIG9iamVjdC4gKi8KQEAgLTEyMDAsMTMgKzEyMTcsMTggQEAKICNlbmRpZgogCiAvKiBFbmNvZGVzIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBQeXRob24KLSAgIG9iamVjdC4gKi8KKyAgIG9iamVjdC4KKworICAgVGhpcyBBUEkgaXMgREVQUkVDQVRFRC4gIEl0IGlzIHN1cGVyY2VlZGVkIGJ5IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKQorICAgc2luY2UgYWxsIHN0YW5kYXJkIGVuY29kaW5ncyAoZXhjZXB0IHJvdDEzKSBlbmNvZGUgc3RyIHRvIGJ5dGVzLgorICAgVXNlIFB5Q29kZWNfRW5jb2RlKCkgZm9yIGVuY29kaW5nIHdpdGggcm90MTMgYW5kIG5vbi1zdGFuZGFyZCBjb2RlY3MKKyAgIHRoYXQgZW5jb2RlIGZvcm0gc3RyIHRvIG5vbi1ieXRlcy4gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogRW5jb2RlcyBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgUHl0aG9uIHN0cmluZwogICAgb2JqZWN0LiAqLwpAQCAtMTIxOCwxMyArMTI0MCwxNyBAQAogICAgICk7CiAKIC8qIEVuY29kZXMgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIFVuaWNvZGUKLSAgIG9iamVjdC4gKi8KKyAgIG9iamVjdC4KKworICAgVGhpcyBBUEkgaXMgREVQUkVDQVRFRC4gIFRoZSBvbmx5IHN1cHBvcnRlZCBzdGFuZGFyZCBlbmNvZGluZ3MgaXMgcm90MTMuCisgICBVc2UgUHlDb2RlY19FbmNvZGUoKSB0byBlbmNvZGUgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBlbmNvZGUgZnJvbSBzdHIgdG8gc3RyLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogQnVpbGQgYW4gZW5jb2RpbmcgbWFwLiAqLwogCkBAIC0xNDY4LDYgKzE0OTQsMTkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBIZWxwZXIgZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlIHRoYXQgZGV0ZWN0cyBpbnZhbGlkIGVzY2FwZQorICAgY2hhcnMuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKAorICAgICAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAvKiBVbmljb2RlLUVzY2FwZSBlbmNvZGVkIHN0cmluZyAqLworICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLworICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICAgICBjb25zdCBjaGFyICoqZmlyc3RfaW52YWxpZF9lc2NhcGUgIC8qIG9uIHJldHVybiwgcG9pbnRzIHRvIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBlc2NhcGVkIGNoYXIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuICovCispOworI2VuZGlmCisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKAogICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgICk7CkBAIC0xNjQwLDEzICsxNjc5LDEzIEBACiAgICAgKTsKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVNQkNTKAogICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgICAgICAvKiBNQkNTIGVuY29kZWQgc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAKQEAgLTE2NTcsNiArMTY5Niw3IEBACiAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQgICAgICAgIC8qIGJ5dGVzIGNvbnN1bWVkICovCiAgICAgKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bCgKICAgICBpbnQgY29kZV9wYWdlLCAgICAgICAgICAgICAgLyogY29kZSBwYWdlIG51bWJlciAqLwogICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgICAgICAvKiBlbmNvZGVkIHN0cmluZyAqLwpAQCAtMTY2NCw2ICsxNzA0LDcgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KICAgICApOworI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKAogICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwpAQCAtMTY3NywxMyArMTcxOCwxNSBAQAogICAgICk7CiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoCiAgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOworI2VuZGlmCiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBEZWNpbWFsIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xNzQ0LDYgKzE3ODcsNyBAQAogCiAvKiAtLS0gTG9jYWxlIGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogLyogRGVjb2RlIGEgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZGVjb2RlciBpcyBzdHJpY3QgaWYKICAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZSAnc3Vycm9nYXRlZXNjYXBlJwogICAgZXJyb3IgaGFuZGxlciAoUEVQIDM4MykgdG8gZXNjYXBlIHVuZGVjb2RhYmxlIGJ5dGVzLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuCkBAIC0xNzczLDYgKzE4MTcsNyBAQAogICAgIFB5T2JqZWN0ICp1bmljb2RlLAogICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAgICk7CisjZW5kaWYKIAogLyogLS0tIEZpbGUgc3lzdGVtIGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTkzOCw2ICsxOTgzLDE0IEBACiAgICAgUHlPYmplY3QgKnNlcSAgICAgICAgICAgICAgIC8qIFNlcXVlbmNlIG9iamVjdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Kb2luQXJyYXkoCisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwKKyAgICBQeU9iamVjdCAqKml0ZW1zLAorICAgIFB5X3NzaXplX3Qgc2VxbGVuCisgICAgKTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKiBSZXR1cm4gMSBpZiBzdWJzdHIgbWF0Y2hlcyBzdHJbc3RhcnQ6ZW5kXSBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQsIDAKICAgIG90aGVyd2lzZS4gKi8KIApAQCAtMTk2MSw2ICsyMDE0LDcgQEAKICAgICBpbnQgZGlyZWN0aW9uICAgICAgICAgICAgICAgLyogRmluZCBkaXJlY3Rpb246ICsxIGZvcndhcmQsIC0xIGJhY2t3YXJkICovCiAgICAgKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIC8qIExpa2UgUHlVbmljb2RlX0ZpbmQsIGJ1dCBzZWFyY2ggZm9yIHNpbmdsZSBjaGFyYWN0ZXIgb25seS4gKi8KIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0ZpbmRDaGFyKAogICAgIFB5T2JqZWN0ICpzdHIsCkBAIC0xOTY5LDYgKzIwMjMsNyBAQAogICAgIFB5X3NzaXplX3QgZW5kLAogICAgIGludCBkaXJlY3Rpb24KICAgICApOworI2VuZGlmCiAKIC8qIENvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3Vic3RyIGluIHN0cltzdGFydDplbmRdLiAqLwogCkBAIC0yMDAwLDE3ICsyMDU1LDggQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBDb21wYXJlIGEgc3RyaW5nIHdpdGggYW4gaWRlbnRpZmllciBhbmQgcmV0dXJuIC0xLCAwLCAxIGZvciBsZXNzIHRoYW4sCi0gICBlcXVhbCwgYW5kIGdyZWF0ZXIgdGhhbiwgcmVzcGVjdGl2ZWx5LgotICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCi0KLVB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0NvbXBhcmVXaXRoSWQoCi0gICAgUHlPYmplY3QgKmxlZnQsICAgICAgICAgICAgIC8qIExlZnQgc3RyaW5nICovCi0gICAgX1B5X0lkZW50aWZpZXIgKnJpZ2h0ICAgICAgIC8qIFJpZ2h0IGlkZW50aWZpZXIgKi8KLSAgICApOwotCiAvKiBUZXN0IHdoZXRoZXIgYSB1bmljb2RlIGlzIGVxdWFsIHRvIEFTQ0lJIGlkZW50aWZpZXIuICBSZXR1cm4gMSBpZiB0cnVlLAotICAgMCBvdGhlcndpc2UuICBSZXR1cm4gMCBpZiBhbnkgYXJndW1lbnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisgICAwIG90aGVyd2lzZS4gIFRoZSByaWdodCBhcmd1bWVudCBtdXN0IGJlIEFTQ0lJIGlkZW50aWZpZXIuCiAgICBBbnkgZXJyb3Igb2NjdXJzIGluc2lkZSB3aWxsIGJlIGNsZWFyZWQgYmVmb3JlIHJldHVybi4gKi8KIAogUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJSWQoCkBAIC0yMDMyLDcgKzIwNzgsNyBAQAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUZXN0IHdoZXRoZXIgYSB1bmljb2RlIGlzIGVxdWFsIHRvIEFTQ0lJIHN0cmluZy4gIFJldHVybiAxIGlmIHRydWUsCi0gICAwIG90aGVyd2lzZS4gIFJldHVybiAwIGlmIGFueSBhcmd1bWVudCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycy4KKyAgIDAgb3RoZXJ3aXNlLiAgVGhlIHJpZ2h0IGFyZ3VtZW50IG11c3QgYmUgQVNDSUktZW5jb2RlZCBzdHJpbmcuCiAgICBBbnkgZXJyb3Igb2NjdXJzIGluc2lkZSB3aWxsIGJlIGNsZWFyZWQgYmVmb3JlIHJldHVybi4gKi8KIAogUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKApAQCAtMjI3NCwxMSArMjMyMCwxNyBAQAogICAgIGludCBjaGVja19jb250ZW50KTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CiAvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOwogCisvKiBGYXN0IGVxdWFsaXR5IGNoZWNrIHdoZW4gdGhlIGlucHV0cyBhcmUga25vd24gdG8gYmUgZXhhY3QgdW5pY29kZSB0eXBlcworICAgYW5kIHdoZXJlIHRoZSBoYXNoIHZhbHVlcyBhcmUgZXF1YWwgKGkuZS4gYSB2ZXJ5IHByb2JhYmxlIG1hdGNoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRVEoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3dhcm5pbmdzLmggYi9JbmNsdWRlL3dhcm5pbmdzLmgKaW5kZXggZWZmYjlmYWQuLmEzZjgzZmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvd2FybmluZ3MuaAorKysgYi9JbmNsdWRlL3dhcm5pbmdzLmgKQEAgLTE3LDYgKzE3LDE1IEBACiAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uKTsKKworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNjAwMDAKKy8qIEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZyAqLworUHlBUElfRlVOQyhpbnQpIFB5RXJyX1Jlc291cmNlV2FybmluZygKKyAgICBQeU9iamVjdCAqc291cmNlLAorICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLik7CisjZW5kaWYKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCiAgICAgUHlPYmplY3QgKmNhdGVnb3J5LApkaWZmIC0tZ2l0IGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQppbmRleCA4YmViZDY5Li5iMTcyZjNmIDEwMDY0NAotLS0gYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQorKysgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQpAQCAtOSw5ICs5LDEwIEBACiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGltcG9ydCBzeXMKIAotX19hbGxfXyA9IFsiQXdhaXRhYmxlIiwgIkNvcm91dGluZSIsICJBc3luY0l0ZXJhYmxlIiwgIkFzeW5jSXRlcmF0b3IiLAotICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwKLSAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsCitfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwKKyAgICAgICAgICAgIkFzeW5jSXRlcmFibGUiLCAiQXN5bmNJdGVyYXRvciIsICJBc3luY0dlbmVyYXRvciIsCisgICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLCAiUmV2ZXJzaWJsZSIsCisgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLCAiQ29sbGVjdGlvbiIsCiAgICAgICAgICAgICJTZXQiLCAiTXV0YWJsZVNldCIsCiAgICAgICAgICAgICJNYXBwaW5nIiwgIk11dGFibGVNYXBwaW5nIiwKICAgICAgICAgICAgIk1hcHBpbmdWaWV3IiwgIktleXNWaWV3IiwgIkl0ZW1zVmlldyIsICJWYWx1ZXNWaWV3IiwKQEAgLTU5LDEwICs2MCwyNyBAQAogY29yb3V0aW5lID0gdHlwZShfY29ybykKIF9jb3JvLmNsb3NlKCkgICMgUHJldmVudCBSZXNvdXJjZVdhcm5pbmcKIGRlbCBfY29ybworIyMgYXN5bmNocm9ub3VzIGdlbmVyYXRvciAjIworYXN5bmMgZGVmIF9hZygpOiB5aWVsZAorX2FnID0gX2FnKCkKK2FzeW5jX2dlbmVyYXRvciA9IHR5cGUoX2FnKQorZGVsIF9hZwogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCitkZWYgX2NoZWNrX21ldGhvZHMoQywgKm1ldGhvZHMpOgorICAgIG1ybyA9IEMuX19tcm9fXworICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKKyAgICAgICAgZm9yIEIgaW4gbXJvOgorICAgICAgICAgICAgaWYgbWV0aG9kIGluIEIuX19kaWN0X186CisgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1ttZXRob2RdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICByZXR1cm4gVHJ1ZQorCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtNzQsMTEgKzkyLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSGFzaGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9faGFzaF9fIiBpbiBCLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fWyJfX2hhc2hfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19oYXNoX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC05MywxMSArMTA3LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXdhaXRhYmxlOgotICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgotICAgICAgICAgICAgICAgIGlmICJfX2F3YWl0X18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9fYXdhaXRfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hd2FpdF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTM4LDE0ICsxNDgsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xNjMsOCArMTY2LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTgzLDEyICsxODUsNjEgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fYW5leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYW5leHRfXyIsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCitjbGFzcyBBc3luY0dlbmVyYXRvcihBc3luY0l0ZXJhdG9yKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSBmcm9tIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLgorICAgICAgICBXaGVuIGV4aGF1c3RlZCwgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuYXNlbmQoTm9uZSkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGFzeW5jIGRlZiBhc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIlNlbmQgYSB2YWx1ZSBpbnRvIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgYXN5bmMgZGVmIGF0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHZhbCBpcyBOb25lOgorICAgICAgICAgICAgaWYgdGIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSB0eXAKKyAgICAgICAgICAgIHZhbCA9IHR5cCgpCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsID0gdmFsLndpdGhfdHJhY2ViYWNrKHRiKQorICAgICAgICByYWlzZSB2YWwKKworICAgIGFzeW5jIGRlZiBhY2xvc2Uoc2VsZik6CisgICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGNvcm91dGluZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF3YWl0IHNlbGYuYXRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCAoR2VuZXJhdG9yRXhpdCwgU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFzeW5jR2VuZXJhdG9yOgorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2FpdGVyX18nLCAnX19hbmV4dF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNlbmQnLCAnYXRocm93JywgJ2FjbG9zZScpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK0FzeW5jR2VuZXJhdG9yLnJlZ2lzdGVyKGFzeW5jX2dlbmVyYXRvcikKKworCiBjbGFzcyBJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMjAxLDggKzI1Miw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2l0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMjIxLDkgKzI3MSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhdG9yOgotICAgICAgICAgICAgaWYgKGFueSgiX19uZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIEl0ZXJhdG9yLnJlZ2lzdGVyKGJ5dGVzX2l0ZXJhdG9yKQpAQCAtMjQyLDYgKzI5MCwyMiBAQAogSXRlcmF0b3IucmVnaXN0ZXIoemlwX2l0ZXJhdG9yKQogCiAKK2NsYXNzIFJldmVyc2libGUoSXRlcmFibGUpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgeWllbGQgTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIFJldmVyc2libGU6CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fcmV2ZXJzZWRfXyIsICJfX2l0ZXJfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKIGNsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMjg1LDE3ICszNDksMTAgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgotICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCi0gICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19pdGVyX18nLCAnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLQogR2VuZXJhdG9yLnJlZ2lzdGVyKGdlbmVyYXRvcikKIAogCkBAIC0zMTAsOCArMzY3LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgU2l6ZWQ6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fbGVuX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2xlbl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMzI2LDEwICszODIsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ29udGFpbmVyOgotICAgICAgICAgICAgaWYgYW55KCJfX2NvbnRhaW5zX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2NvbnRhaW5zX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAorY2xhc3MgQ29sbGVjdGlvbihTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIENvbGxlY3Rpb246CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgICJfX2xlbl9fIiwgIl9faXRlcl9fIiwgIl9fY29udGFpbnNfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiBjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKQEAgLTM0MiwxNSArNDA2LDE0IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENhbGxhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2NhbGxfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY2FsbF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogIyMjIFNFVFMgIyMjCiAKIAotY2xhc3MgU2V0KFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNldChDb2xsZWN0aW9uKToKIAogICAgICIiIkEgc2V0IGlzIGEgZmluaXRlLCBpdGVyYWJsZSBjb250YWluZXIuCiAKQEAgLTU3NSw3ICs2MzgsNyBAQAogIyMjIE1BUFBJTkdTICMjIwogCiAKLWNsYXNzIE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgTWFwcGluZyhDb2xsZWN0aW9uKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCiAKQEAgLTYyMyw2ICs2ODYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiBkaWN0KHNlbGYuaXRlbXMoKSkgPT0gZGljdChvdGhlci5pdGVtcygpKQogCisgICAgX19yZXZlcnNlZF9fID0gTm9uZQorCiBNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKIAogCkBAIC02NzIsNyArNzM3LDcgQEAKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdiA9PSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CkBAIC02ODcsNyArNzUyLDggQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA9PSBzZWxmLl9tYXBwaW5nW2tleV06CisgICAgICAgICAgICB2ID0gc2VsZi5fbWFwcGluZ1trZXldCisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTc5Niw3ICs4NjIsNyBAQAogIyMjIFNFUVVFTkNFUyAjIyMKIAogCi1jbGFzcyBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBTZXF1ZW5jZShSZXZlcnNpYmxlLCBDb2xsZWN0aW9uKToKIAogICAgICIiIkFsbCB0aGUgb3BlcmF0aW9ucyBvbiBhIHJlYWQtb25seSBzZXF1ZW5jZS4KIApAQCAtODIyLDcgKzg4OCw3IEBACiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIHYgaW4gc2VsZjoKLSAgICAgICAgICAgIGlmIHYgPT0gdmFsdWU6CisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL0xpYi9fY29tcGF0X3BpY2tsZS5weSBiL0xpYi9fY29tcGF0X3BpY2tsZS5weQppbmRleCBjMGUwNDQzLi5mNjg0OTZhIDEwMDY0NAotLS0gYS9MaWIvX2NvbXBhdF9waWNrbGUucHkKKysrIGIvTGliL19jb21wYXRfcGlja2xlLnB5CkBAIC0yNDIsMyArMjQyLDEwIEBACiAKIGZvciBleGNuYW1lIGluIFBZVEhPTjNfT1NFUlJPUl9FWENFUFRJT05TOgogICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpCisKK1BZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUyA9ICgKKyAgICAnTW9kdWxlTm90Rm91bmRFcnJvcicsCispCisKK2ZvciBleGNuYW1lIGluIFBZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUzoKKyAgICBSRVZFUlNFX05BTUVfTUFQUElOR1soJ2J1aWx0aW5zJywgZXhjbmFtZSldID0gKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykKZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5CmluZGV4IDEzZmNkOGIuLmVhZGYwNmYgMTAwNjQ0Ci0tLSBhL0xpYi9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgZW52IHZhcgogICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCiAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTIzMiw3ICsyMzIsNyBAQAogICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKICAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycwogCi0gICAgaWYgcmUuc2VhcmNoKCctYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgorICAgIGlmIHJlLnNlYXJjaChyJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CiAgICAgICAgICMgTk9URTogQ2Fubm90IHVzZSBzdWJwcm9jZXNzIGhlcmUgYmVjYXVzZSBvZiBib290c3RyYXAKICAgICAgICAgIyBpc3N1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gaXRzZWxmCiAgICAgICAgIHN0YXR1cyA9IG9zLnN5c3RlbSgKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKICAgICByZXR1cm4gX2NvbmZpZ192YXJzCkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kICctYXJjaCcgaW4gX2NvbmZpZ192YXJzW2N2XToKICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAogICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCkBAIC00NjUsNyArNDY1LDcgQEAKIAogICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCiAKLSAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKKyAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCiAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKIAogICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgpkaWZmIC0tZ2l0IGEvTGliL19weWRlY2ltYWwucHkgYi9MaWIvX3B5ZGVjaW1hbC5weQppbmRleCBhNWVhMzQwLi4wYjQwOTI4IDEwMDY0NAotLS0gYS9MaWIvX3B5ZGVjaW1hbC5weQorKysgYi9MaWIvX3B5ZGVjaW1hbC5weQpAQCAtMTQ4LDcgKzE0OCw3IEBACiBfX25hbWVfXyA9ICdkZWNpbWFsJyAgICAjIEZvciBwaWNrbGluZwogX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCi1fX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KK19fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4yIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgogCiBpbXBvcnQgbWF0aCBhcyBfbWF0aAogaW1wb3J0IG51bWJlcnMgYXMgX251bWJlcnMKQEAgLTU4OSw3ICs1ODksNyBAQAogICAgICAgICAjIEZyb20gYSBzdHJpbmcKICAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCisgICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpLnJlcGxhY2UoIl8iLCAiIikpCiAgICAgICAgICAgICBpZiBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCkBAIC0xMDEwLDYgKzEwMTAsNTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBEZWNpbWFsVHVwbGUoc2VsZi5fc2lnbiwgdHVwbGUobWFwKGludCwgc2VsZi5faW50KSksIHNlbGYuX2V4cCkKIAorICAgIGRlZiBhc19pbnRlZ2VyX3JhdGlvKHNlbGYpOgorICAgICAgICAiIiJFeHByZXNzIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2UgaW4gdGhlIGZvcm0gbiAvIGQuCisKKyAgICAgICAgUmV0dXJucyBhIHBhaXIgKG4sIGQpIG9mIGludGVnZXJzLiAgV2hlbiBjYWxsZWQgb24gYW4gaW5maW5pdHkKKyAgICAgICAgb3IgTmFOLCByYWlzZXMgT3ZlcmZsb3dFcnJvciBvciBWYWx1ZUVycm9yIHJlc3BlY3RpdmVseS4KKworICAgICAgICA+Pj4gRGVjaW1hbCgnMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMTU3LCA1MCkKKyAgICAgICAgPj4+IERlY2ltYWwoJy0xMjNlNScpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoLTEyMzAwMDAwLCAxKQorICAgICAgICA+Pj4gRGVjaW1hbCgnMC4wMCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMCwgMSkKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiAwLCAxCisKKyAgICAgICAgIyBGaW5kIG4sIGQgaW4gbG93ZXN0IHRlcm1zIHN1Y2ggdGhhdCBhYnMoc2VsZikgPT0gbiAvIGQ7CisgICAgICAgICMgd2UnbGwgZGVhbCB3aXRoIHRoZSBzaWduIGxhdGVyLgorICAgICAgICBuID0gaW50KHNlbGYuX2ludCkKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICAjIHNlbGYgaXMgYW4gaW50ZWdlci4KKyAgICAgICAgICAgIG4sIGQgPSBuICogMTAqKnNlbGYuX2V4cCwgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGaW5kIGQyLCBkNSBzdWNoIHRoYXQgYWJzKHNlbGYpID0gbiAvICgyKipkMiAqIDUqKmQ1KS4KKyAgICAgICAgICAgIGQ1ID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgd2hpbGUgZDUgPiAwIGFuZCBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4gLy89IDUKKyAgICAgICAgICAgICAgICBkNSAtPSAxCisKKyAgICAgICAgICAgICMgKG4gJiAtbikuYml0X2xlbmd0aCgpIC0gMSBjb3VudHMgdHJhaWxpbmcgemVyb3MgaW4gYmluYXJ5CisgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uIG9mIG4gKHByb3ZpZGVkIG4gaXMgbm9uemVybykuCisgICAgICAgICAgICBkMiA9IC1zZWxmLl9leHAKKyAgICAgICAgICAgIHNoaWZ0MiA9IG1pbigobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxLCBkMikKKyAgICAgICAgICAgIGlmIHNoaWZ0MjoKKyAgICAgICAgICAgICAgICBuID4+PSBzaGlmdDIKKyAgICAgICAgICAgICAgICBkMiAtPSBzaGlmdDIKKworICAgICAgICAgICAgZCA9IDUqKmQ1IDw8IGQyCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIG4gPSAtbgorICAgICAgICByZXR1cm4gbiwgZAorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKICAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKQEAgLTQwNzUsNyArNDEyNSw3IEBACiAgICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KICAgICAgICAgIiIiCiAgICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZwotICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCisgICAgICAgIHNlbGYucm91bmRpbmcgPSB0eXBlCiAgICAgICAgIHJldHVybiByb3VuZGluZwogCiAgICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgpAQCAtNDA4NCwxMCArNDEzNCwxMCBAQAogICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQogICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCAobnVtICE9IG51bS5zdHJpcCgpIG9yICdfJyBpbiBudW0pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5kZXJzY29yZXMgYXJlIG5vdCBwZXJtaXR0ZWQuIikKIAogICAgICAgICBkID0gRGVjaW1hbChudW0sIGNvbnRleHQ9c2VsZikKICAgICAgICAgaWYgZC5faXNuYW4oKSBhbmQgbGVuKGQuX2ludCkgPiBzZWxmLnByZWMgLSBzZWxmLmNsYW1wOgpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IGYyZmU0NDcuLjJlYmZiMDUgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KLWltcG9ydCBhcnJheQogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdApAQCAtMTYxLDYgKzE2MCw4IEBACiAgICAgb3BlbmVkIGluIGEgdGV4dCBtb2RlLCBhbmQgZm9yIGJ5dGVzIGEgQnl0ZXNJTyBjYW4gYmUgdXNlZCBsaWtlIGEgZmlsZQogICAgIG9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLgogICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgIGZpbGUgPSBvcy5mc3BhdGgoZmlsZSkKICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBieXRlcywgaW50KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmaWxlOiAlciIgJSBmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CkBAIC0xODIsOCArMTgzLDggQEAKICAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICAgYmluYXJ5ID0gImIiIGluIG1vZGVzCiAgICAgaWYgIlUiIGluIG1vZGVzOgotICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpCisgICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nIG9yIHVwZGF0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBVIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoICd4JywgJ3cnLCAnYScsIG9yICcrJyIpCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICB3YXJuaW5ncy53YXJuKCInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCkBAIC0xNTE2LDcgKzE1MTcsNyBAQAogICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9Miwgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvX3N0cnB0aW1lLnB5IGIvTGliL19zdHJwdGltZS5weQppbmRleCBmODQyMjdiLi5mZTk0MzYxIDEwMDY0NAotLS0gYS9MaWIvX3N0cnB0aW1lLnB5CisrKyBiL0xpYi9fc3RycHRpbWUucHkKQEAgLTE5OSwxMiArMTk5LDE1IEBACiAgICAgICAgICAgICAnZic6IHIiKD9QPGY+WzAtOV17MSw2fSkiLAogICAgICAgICAgICAgJ0gnOiByIig/UDxIPjJbMC0zXXxbMC0xXVxkfFxkKSIsCiAgICAgICAgICAgICAnSSc6IHIiKD9QPEk+MVswLTJdfDBbMS05XXxbMS05XSkiLAorICAgICAgICAgICAgJ0cnOiByIig/UDxHPlxkXGRcZFxkKSIsCiAgICAgICAgICAgICAnaic6IHIiKD9QPGo+MzZbMC02XXwzWzAtNV1cZHxbMS0yXVxkXGR8MFsxLTldXGR8MDBbMS05XXxbMS05XVxkfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ20nOiByIig/UDxtPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgICdNJzogciIoP1A8TT5bMC01XVxkfFxkKSIsCiAgICAgICAgICAgICAnUyc6IHIiKD9QPFM+NlswLTFdfFswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdVJzogciIoP1A8VT41WzAtM118WzAtNF1cZHxcZCkiLAogICAgICAgICAgICAgJ3cnOiByIig/UDx3PlswLTZdKSIsCisgICAgICAgICAgICAndSc6IHIiKD9QPHU+WzEtN10pIiwKKyAgICAgICAgICAgICdWJzogciIoP1A8Vj41WzAtM118MFsxLTldfFsxLTRdXGR8XGQpIiwKICAgICAgICAgICAgICMgVyBpcyBzZXQgYmVsb3cgYnkgdXNpbmcgJ1UnCiAgICAgICAgICAgICAneSc6IHIiKD9QPHk+XGRcZCkiLAogICAgICAgICAgICAgI1hYWDogRG9lcyAnWScgbmVlZCB0byB3b3JyeSBhYm91dCBoYXZpbmcgbGVzcyBvciBtb3JlIHRoYW4KQEAgLTI5OSw2ICszMDIsMjIgQEAKICAgICAgICAgcmV0dXJuIDEgKyBkYXlzX3RvX3dlZWsgKyBkYXlfb2Zfd2VlawogCiAKK2RlZiBfY2FsY19qdWxpYW5fZnJvbV9WKGlzb195ZWFyLCBpc29fd2VlaywgaXNvX3dlZWtkYXkpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgSnVsaWFuIGRheSBiYXNlZCBvbiB0aGUgSVNPIDg2MDEgeWVhciwgd2VlaywgYW5kIHdlZWtkYXkuCisgICAgSVNPIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMsIHdpdGggd2VlayAwMSBiZWluZyB0aGUgd2VlayBjb250YWluaW5nIDQgSmFuLgorICAgIElTTyB3ZWVrIGRheXMgcmFuZ2UgZnJvbSAxIChNb25kYXkpIHRvIDcgKFN1bmRheSkuCisgICAgIiIiCisgICAgY29ycmVjdGlvbiA9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDQpLmlzb3dlZWtkYXkoKSArIDMKKyAgICBvcmRpbmFsID0gKGlzb193ZWVrICogNykgKyBpc29fd2Vla2RheSAtIGNvcnJlY3Rpb24KKyAgICAjIG9yZGluYWwgbWF5IGJlIG5lZ2F0aXZlIG9yIDAgbm93LCB3aGljaCBtZWFucyB0aGUgZGF0ZSBpcyBpbiB0aGUgcHJldmlvdXMKKyAgICAjIGNhbGVuZGFyIHllYXIKKyAgICBpZiBvcmRpbmFsIDwgMToKKyAgICAgICAgb3JkaW5hbCArPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgICAgICBpc29feWVhciAtPSAxCisgICAgICAgIG9yZGluYWwgLT0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKKyAgICByZXR1cm4gaXNvX3llYXIsIG9yZGluYWwKKworCiBkZWYgX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgMi10dXBsZSBjb25zaXN0aW5nIG9mIGEgdGltZSBzdHJ1Y3QgYW5kIGFuIGludCBjb250YWluaW5nCiAgICAgdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCkBAIC0zNDUsMTUgKzM2NCwxNSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmNvbnZlcnRlZCBkYXRhIHJlbWFpbnM6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RyaW5nW2ZvdW5kLmVuZCgpOl0pCiAKLSAgICB5ZWFyID0gTm9uZQorICAgIGlzb195ZWFyID0geWVhciA9IE5vbmUKICAgICBtb250aCA9IGRheSA9IDEKICAgICBob3VyID0gbWludXRlID0gc2Vjb25kID0gZnJhY3Rpb24gPSAwCiAgICAgdHogPSAtMQogICAgIHR6b2Zmc2V0ID0gTm9uZQogICAgICMgRGVmYXVsdCB0byAtMSB0byBzaWduaWZ5IHRoYXQgdmFsdWVzIG5vdCBrbm93bjsgbm90IGNyaXRpY2FsIHRvIGhhdmUsCiAgICAgIyB0aG91Z2gKLSAgICB3ZWVrX29mX3llYXIgPSAtMQotICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IC0xCisgICAgaXNvX3dlZWsgPSB3ZWVrX29mX3llYXIgPSBOb25lCisgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gTm9uZQogICAgICMgd2Vla2RheSBhbmQganVsaWFuIGRlZmF1bHRlZCB0byBOb25lIHNvIGFzIHRvIHNpZ25hbCBuZWVkIHRvIGNhbGN1bGF0ZQogICAgICMgdmFsdWVzCiAgICAgd2Vla2RheSA9IGp1bGlhbiA9IE5vbmUKQEAgLTM3NSw2ICszOTQsOCBAQAogICAgICAgICAgICAgICAgIHllYXIgKz0gMTkwMAogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnWSc6CiAgICAgICAgICAgICB5ZWFyID0gaW50KGZvdW5kX2RpY3RbJ1knXSkKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0cnOgorICAgICAgICAgICAgaXNvX3llYXIgPSBpbnQoZm91bmRfZGljdFsnRyddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnbSc6CiAgICAgICAgICAgICBtb250aCA9IGludChmb3VuZF9kaWN0WydtJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdCJzoKQEAgLTQyMCw2ICs0NDEsOSBAQAogICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHdlZWtkYXkgLT0gMQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAndSc6CisgICAgICAgICAgICB3ZWVrZGF5ID0gaW50KGZvdW5kX2RpY3RbJ3UnXSkKKyAgICAgICAgICAgIHdlZWtkYXkgLT0gMQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnaic6CiAgICAgICAgICAgICBqdWxpYW4gPSBpbnQoZm91bmRfZGljdFsnaiddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSBpbiAoJ1UnLCAnVycpOgpAQCAtNDMwLDYgKzQ1NCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVyBzdGFydHMgd2VlayBvbiBNb25kYXkuCiAgICAgICAgICAgICAgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gMAorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnVic6CisgICAgICAgICAgICBpc29fd2VlayA9IGludChmb3VuZF9kaWN0WydWJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd6JzoKICAgICAgICAgICAgIHogPSBmb3VuZF9kaWN0Wyd6J10KICAgICAgICAgICAgIHR6b2Zmc2V0ID0gaW50KHpbMTozXSkgKiA2MCArIGludCh6WzM6NV0pCkBAIC00NTAsMzIgKzQ3Niw2MSBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdHogPSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAjIERlYWwgd2l0aCB0aGUgY2FzZXMgd2hlcmUgYW1iaWd1aXRpZXMgYXJpemUKKyAgICAjIGRvbid0IGFzc3VtZSBkZWZhdWx0IHZhbHVlcyBmb3IgSVNPIHdlZWsveWVhcgorICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgaXNvX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGlzb193ZWVrIGlzIE5vbmUgb3Igd2Vla2RheSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHllYXIgZGlyZWN0aXZlICclRycgbXVzdCBiZSB1c2VkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIElTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGFuZCBhIHdlZWtkYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJEYXkgb2YgdGhlIHllYXIgZGlyZWN0aXZlICclaicgaXMgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhdGlibGUgd2l0aCBJU08geWVhciBkaXJlY3RpdmUgJyVHJy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICclWScgaW5zdGVhZC4iKQorICAgIGVsaWYgd2Vla19vZl95ZWFyIGlzIE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHllYXIgZGlyZWN0aXZlICclRycgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBpcyBpbmNvbXBhdGlibGUgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgeWVhciBkaXJlY3RpdmUgJyVZJy4gVXNlIHRoZSBJU08geWVhciAnJUcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RlYWQuIikKKwogICAgIGxlYXBfeWVhcl9maXggPSBGYWxzZQogICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgbW9udGggPT0gMiBhbmQgZGF5ID09IDI5OgogICAgICAgICB5ZWFyID0gMTkwNCAgIyAxOTA0IGlzIGZpcnN0IGxlYXAgeWVhciBvZiAyMHRoIGNlbnR1cnkKICAgICAgICAgbGVhcF95ZWFyX2ZpeCA9IFRydWUKICAgICBlbGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgeWVhciA9IDE5MDAKKworCiAgICAgIyBJZiB3ZSBrbm93IHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIGFuZCB3aGF0IGRheSBvZiB0aGF0IHdlZWssIHdlIGNhbiBmaWd1cmUKICAgICAjIG91dCB0aGUgSnVsaWFuIGRheSBvZiB0aGUgeWVhci4KLSAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla19vZl95ZWFyICE9IC0xIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgotICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKLSAgICAgICAganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVV9vcl9XKHllYXIsIHdlZWtfb2ZfeWVhciwgd2Vla2RheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQotICAgICAgICBpZiBqdWxpYW4gPD0gMDoKKyAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd2Vla19vZl95ZWFyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uID0gVHJ1ZSBpZiB3ZWVrX29mX3llYXJfc3RhcnQgPT0gMCBlbHNlIEZhbHNlCisgICAgICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQorICAgICAgICBlbGlmIGlzb195ZWFyIGlzIG5vdCBOb25lIGFuZCBpc29fd2VlayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHllYXIsIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCB3ZWVrZGF5ICsgMSkKKyAgICAgICAgaWYganVsaWFuIGlzIG5vdCBOb25lIGFuZCBqdWxpYW4gPD0gMDoKICAgICAgICAgICAgIHllYXIgLT0gMQogICAgICAgICAgICAgeWRheSA9IDM2NiBpZiBjYWxlbmRhci5pc2xlYXAoeWVhcikgZWxzZSAzNjUKICAgICAgICAgICAgIGp1bGlhbiArPSB5ZGF5Ci0gICAgIyBDYW5ub3QgcHJlLWNhbGN1bGF0ZSBkYXRldGltZV9kYXRlKCkgc2luY2UgY2FuIGNoYW5nZSBpbiBKdWxpYW4KLSAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrCi0gICAgIyBjYWxjdWxhdGlvbi4KKwogICAgIGlmIGp1bGlhbiBpcyBOb25lOgorICAgICAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgorICAgICAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mCisgICAgICAgICMgdGhlIHdlZWsgY2FsY3VsYXRpb24uCiAgICAgICAgICMgTmVlZCB0byBhZGQgMSB0byByZXN1bHQgc2luY2UgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGlzIDEsIG5vdCAwLgogICAgICAgICBqdWxpYW4gPSBkYXRldGltZV9kYXRlKHllYXIsIG1vbnRoLCBkYXkpLnRvb3JkaW5hbCgpIC0gXAogICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSArIDEKLSAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSBpdCB3aWxsCi0gICAgICAgICAgICMgYmUgYWNjdXJhdGUuCi0gICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoKGp1bGlhbiAtIDEpICsgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKKyAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSAob3IgaWYgaXQgd2FzCisgICAgICAgICAgICMgY2FsY3VsYXRlZCBhYm92ZSB3aXRoIHllYXIvd2Vlay93ZWVrZGF5KSBpdCB3aWxsIGJlIGFjY3VyYXRlLgorICAgICAgICBkYXRldGltZV9yZXN1bHQgPSBkYXRldGltZV9kYXRlLmZyb21vcmRpbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdWxpYW4gLSAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKICAgICAgICAgeWVhciA9IGRhdGV0aW1lX3Jlc3VsdC55ZWFyCiAgICAgICAgIG1vbnRoID0gZGF0ZXRpbWVfcmVzdWx0Lm1vbnRoCiAgICAgICAgIGRheSA9IGRhdGV0aW1lX3Jlc3VsdC5kYXkKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggN2ViZGJlYi4uNjkyZDBiZiAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTI1Nyw2ICsyNTcsMTUgQEAKIF9haWZjX3BhcmFtcyA9IG5hbWVkdHVwbGUoJ19haWZjX3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICduY2hhbm5lbHMgc2FtcHdpZHRoIGZyYW1lcmF0ZSBuZnJhbWVzIGNvbXB0eXBlIGNvbXBuYW1lJykKIAorX2FpZmNfcGFyYW1zLm5jaGFubmVscy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IgbW9ubywgMiBmb3Igc3RlcmVvKScKK19haWZjX3BhcmFtcy5zYW1wd2lkdGguX19kb2NfXyA9ICdTYW1wbGUgd2lkdGggaW4gYnl0ZXMnCitfYWlmY19wYXJhbXMuZnJhbWVyYXRlLl9fZG9jX18gPSAnU2FtcGxpbmcgZnJlcXVlbmN5JworX2FpZmNfcGFyYW1zLm5mcmFtZXMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gZnJhbWVzJworX2FpZmNfcGFyYW1zLmNvbXB0eXBlLl9fZG9jX18gPSAnQ29tcHJlc3Npb24gdHlwZSAoIk5PTkUiIGZvciBBSUZGIGZpbGVzKScKK19haWZjX3BhcmFtcy5jb21wbmFtZS5fX2RvY19fID0gKCIiIlwKK0EgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY29tcHJlc3Npb24gdHlwZQorKCdub3QgY29tcHJlc3NlZCcgZm9yIEFJRkYgZmlsZXMpIiIiKQorCiAKIGNsYXNzIEFpZmNfcmVhZDoKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggOWEwNjcxOS4uMjA5YjRlOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTE4LDEwICsxMTgsMTYgQEAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHR5cGVfbmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18KICAgICAgICAgYXJnX3N0cmluZ3MgPSBbXQorICAgICAgICBzdGFyX2FyZ3MgPSB7fQogICAgICAgICBmb3IgYXJnIGluIHNlbGYuX2dldF9hcmdzKCk6CiAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQocmVwcihhcmcpKQogICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fZ2V0X2t3YXJncygpOgotICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0YXJfYXJnc1tuYW1lXSA9IHZhbHVlCisgICAgICAgIGlmIHN0YXJfYXJnczoKKyAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnKiolcycgJSByZXByKHN0YXJfYXJncykpCiAgICAgICAgIHJldHVybiAnJXMoJXMpJyAlICh0eXBlX25hbWUsICcsICcuam9pbihhcmdfc3RyaW5ncykpCiAKICAgICBkZWYgX2dldF9rd2FyZ3Moc2VsZik6CkBAIC0yMDQsOCArMjEwLDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9pbmRlbnQoKQogICAgICAgICAgICAgam9pbiA9IHNlbGYuZm9ybWF0dGVyLl9qb2luX3BhcnRzCi0gICAgICAgICAgICBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zOgotICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAgICAgICAgICAgICBpdGVtX2hlbHAgPSBqb2luKFtmdW5jKCphcmdzKSBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zXSkKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9kZWRlbnQoKQpkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggMDE3MDQ3Mi4uMTU2YTFmMiAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC0zNSw2ICszNSw4IEBACiAgICAgcmV0dXJuIGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgUHlDRl9PTkxZX0FTVCkKIAogCitfTlVNX1RZUEVTID0gKGludCwgZmxvYXQsIGNvbXBsZXgpCisKIGRlZiBsaXRlcmFsX2V2YWwobm9kZV9vcl9zdHJpbmcpOgogICAgICIiIgogICAgIFNhZmVseSBldmFsdWF0ZSBhbiBleHByZXNzaW9uIG5vZGUgb3IgYSBzdHJpbmcgY29udGFpbmluZyBhIFB5dGhvbgpAQCAtNDcsNyArNDksOSBAQAogICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9vcl9zdHJpbmcsIEV4cHJlc3Npb24pOgogICAgICAgICBub2RlX29yX3N0cmluZyA9IG5vZGVfb3Jfc3RyaW5nLmJvZHkKICAgICBkZWYgX2NvbnZlcnQobm9kZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCk6CisgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKICAgICAgICAgICAgIHJldHVybiBub2RlLnMKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE51bSk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5uCkBAIC02MiwyNCArNjYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluIHppcChub2RlLmtleXMsIG5vZGUudmFsdWVzKSkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE5hbWVDb25zdGFudCk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3BlcmFuZCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSk6CiAgICAgICAgICAgICBvcGVyYW5kID0gX2NvbnZlcnQobm9kZS5vcGVyYW5kKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKEFkZCwgU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUucmlnaHQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUubGVmdCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3BlcmFuZCwgX05VTV9UWVBFUyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsgb3BlcmFuZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKToKICAgICAgICAgICAgIGxlZnQgPSBfY29udmVydChub2RlLmxlZnQpCiAgICAgICAgICAgICByaWdodCA9IF9jb252ZXJ0KG5vZGUucmlnaHQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxlZnQsIF9OVU1fVFlQRVMpIGFuZCBpc2luc3RhbmNlKHJpZ2h0LCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZzogJyArIHJlcHIobm9kZSkpCiAgICAgcmV0dXJuIF9jb252ZXJ0KG5vZGVfb3Jfc3RyaW5nKQogCkBAIC0xOTYsMTIgKzE5NywxOSBAQAogICAgICIiIgogICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIChBc3luY0Z1bmN0aW9uRGVmLCBGdW5jdGlvbkRlZiwgQ2xhc3NEZWYsIE1vZHVsZSkpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVyIGNhbid0IGhhdmUgZG9jc3RyaW5ncyIgJSBub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICBpZiBub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSBhbmQgXAotICAgICAgIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLnZhbHVlLCBTdHIpOgotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIGltcG9ydCBpbnNwZWN0Ci0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdC5jbGVhbmRvYyhub2RlLmJvZHlbMF0udmFsdWUucykKLSAgICAgICAgcmV0dXJuIG5vZGUuYm9keVswXS52YWx1ZS5zCisgICAgaWYgbm90KG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpKToKKyAgICAgICAgcmV0dXJuCisgICAgbm9kZSA9IG5vZGUuYm9keVswXS52YWx1ZQorICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgU3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUucworICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCkgYW5kIGlzaW5zdGFuY2Uobm9kZS52YWx1ZSwgc3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUudmFsdWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4KKyAgICBpZiBjbGVhbjoKKyAgICAgICAgaW1wb3J0IGluc3BlY3QKKyAgICAgICAgdGV4dCA9IGluc3BlY3QuY2xlYW5kb2ModGV4dCkKKyAgICByZXR1cm4gdGV4dAogCiAKIGRlZiB3YWxrKG5vZGUpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaGF0LnB5IGIvTGliL2FzeW5jaGF0LnB5CmluZGV4IGY3MjhkMWIuLmZjMTE0NmEgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2hhdC5weQorKysgYi9MaWIvYXN5bmNoYXQucHkKQEAgLTI4NSwzNSArMjg1LDYgQEAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogCi1jbGFzcyBmaWZvOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaXN0PU5vbmUpOgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybignZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIG5vdCBsaXN0OgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUobGlzdCkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYubGlzdCkKLQotICAgIGRlZiBpc19lbXB0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmxpc3QKLQotICAgIGRlZiBmaXJzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubGlzdFswXQotCi0gICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubGlzdC5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiBwb3Aoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubGlzdDoKLSAgICAgICAgICAgIHJldHVybiAoMSwgc2VsZi5saXN0LnBvcGxlZnQoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAoMCwgTm9uZSkKLQotCiAjIEdpdmVuICdoYXlzdGFjaycsIHNlZSBpZiBhbnkgcHJlZml4IG9mICduZWVkbGUnIGlzIGF0IGl0cyBlbmQuICBUaGlzCiAjIGFzc3VtZXMgYW4gZXhhY3QgbWF0Y2ggaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YKICMgY2hhcmFjdGVycyBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQppbmRleCA1MDE1M2Y4Li4wZGY1OGM1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQpAQCAtNTcsNyArNTcsNyBAQAogCiBkZWYgX2Zvcm1hdF9oYW5kbGUoaGFuZGxlKToKICAgICBjYiA9IGhhbmRsZS5fY2FsbGJhY2sKLSAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKGNiKSBhbmQgaXNpbnN0YW5jZShjYi5fX3NlbGZfXywgdGFza3MuVGFzayk6CisgICAgaWYgaXNpbnN0YW5jZShnZXRhdHRyKGNiLCAnX19zZWxmX18nLCBOb25lKSwgdGFza3MuVGFzayk6CiAgICAgICAgICMgZm9ybWF0IHRoZSB0YXNrCiAgICAgICAgIHJldHVybiByZXByKGNiLl9fc2VsZl9fKQogICAgIGVsc2U6CkBAIC01MDUsNyArNTA1LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI1OWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9mdXR1cmVzLnB5CkBAIC0wLDAgKzEsNzEgQEAKK19fYWxsX18gPSBbXQorCitpbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLl9iYXNlCitpbXBvcnQgcmVwcmxpYgorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworCitFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZS5FcnJvcgorQ2FuY2VsbGVkRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKK1RpbWVvdXRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaW1lb3V0RXJyb3IKKworCitjbGFzcyBJbnZhbGlkU3RhdGVFcnJvcihFcnJvcik6CisgICAgIiIiVGhlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlLiIiIgorCisKKyMgU3RhdGVzIGZvciBGdXR1cmUuCitfUEVORElORyA9ICdQRU5ESU5HJworX0NBTkNFTExFRCA9ICdDQU5DRUxMRUQnCitfRklOSVNIRUQgPSAnRklOSVNIRUQnCisKKworZGVmIGlzZnV0dXJlKG9iaik6CisgICAgIiIiQ2hlY2sgZm9yIGEgRnV0dXJlLgorCisgICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKKyAgICBpdHNlbGYgYXMgZHVjay10eXBlIGNvbXBhdGlibGUgYnkgc2V0dGluZyBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcuCisgICAgU2VlIGNvbW1lbnQgaW4gRnV0dXJlIGZvciBtb3JlIGRldGFpbHMuCisgICAgIiIiCisgICAgcmV0dXJuIChoYXNhdHRyKG9iai5fX2NsYXNzX18sICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnKSBhbmQKKyAgICAgICAgICAgIG9iai5fYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgaXMgbm90IE5vbmUpCisKKworZGVmIF9mb3JtYXRfY2FsbGJhY2tzKGNiKToKKyAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgorICAgIHNpemUgPSBsZW4oY2IpCisgICAgaWYgbm90IHNpemU6CisgICAgICAgIGNiID0gJycKKworICAgIGRlZiBmb3JtYXRfY2IoY2FsbGJhY2spOgorICAgICAgICByZXR1cm4gZXZlbnRzLl9mb3JtYXRfY2FsbGJhY2tfc291cmNlKGNhbGxiYWNrLCAoKSkKKworICAgIGlmIHNpemUgPT0gMToKKyAgICAgICAgY2IgPSBmb3JtYXRfY2IoY2JbMF0pCisgICAgZWxpZiBzaXplID09IDI6CisgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCisgICAgZWxpZiBzaXplID4gMjoKKyAgICAgICAgY2IgPSAne30sIDx7fSBtb3JlPiwge30nLmZvcm1hdChmb3JtYXRfY2IoY2JbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgLSAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9jYihjYlstMV0pKQorICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgorCisKK2RlZiBfZnV0dXJlX3JlcHJfaW5mbyhmdXR1cmUpOgorICAgICMgKEZ1dHVyZSkgLT4gc3RyCisgICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKKyAgICBpbmZvID0gW2Z1dHVyZS5fc3RhdGUubG93ZXIoKV0KKyAgICBpZiBmdXR1cmUuX3N0YXRlID09IF9GSU5JU0hFRDoKKyAgICAgICAgaWYgZnV0dXJlLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpbmZvLmFwcGVuZCgnZXhjZXB0aW9uPXshcn0nLmZvcm1hdChmdXR1cmUuX2V4Y2VwdGlvbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHVzZSByZXBybGliIHRvIGxpbWl0IHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCwgZXNwZWNpYWxseQorICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlcHJsaWIucmVwcihmdXR1cmUuX3Jlc3VsdCkKKyAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQorICAgIGlmIGZ1dHVyZS5fY2FsbGJhY2tzOgorICAgICAgICBpbmZvLmFwcGVuZChfZm9ybWF0X2NhbGxiYWNrcyhmdXR1cmUuX2NhbGxiYWNrcykpCisgICAgaWYgZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrOgorICAgICAgICBmcmFtZSA9IGZ1dHVyZS5fc291cmNlX3RyYWNlYmFja1stMV0KKyAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCisgICAgcmV0dXJuIGluZm8KZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weSBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQppbmRleCAyMzc0MmExLi5hMDBkOWQ1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9waWQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX3Rhc2tzLnB5IGIvTGliL2FzeW5jaW8vYmFzZV90YXNrcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjM0NDM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2FzeW5jaW8vYmFzZV90YXNrcy5weQpAQCAtMCwwICsxLDc2IEBACitpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gLiBpbXBvcnQgYmFzZV9mdXR1cmVzCitmcm9tIC4gaW1wb3J0IGNvcm91dGluZXMKKworCitkZWYgX3Rhc2tfcmVwcl9pbmZvKHRhc2spOgorICAgIGluZm8gPSBiYXNlX2Z1dHVyZXMuX2Z1dHVyZV9yZXByX2luZm8odGFzaykKKworICAgIGlmIHRhc2suX211c3RfY2FuY2VsOgorICAgICAgICAjIHJlcGxhY2Ugc3RhdHVzCisgICAgICAgIGluZm9bMF0gPSAnY2FuY2VsbGluZycKKworICAgIGNvcm8gPSBjb3JvdXRpbmVzLl9mb3JtYXRfY29yb3V0aW5lKHRhc2suX2Nvcm8pCisgICAgaW5mby5pbnNlcnQoMSwgJ2Nvcm89PCVzPicgJSBjb3JvKQorCisgICAgaWYgdGFzay5fZnV0X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgaW5mby5pbnNlcnQoMiwgJ3dhaXRfZm9yPSVyJyAlIHRhc2suX2Z1dF93YWl0ZXIpCisgICAgcmV0dXJuIGluZm8KKworCitkZWYgX3Rhc2tfZ2V0X3N0YWNrKHRhc2ssIGxpbWl0KToKKyAgICBmcmFtZXMgPSBbXQorICAgIHRyeToKKyAgICAgICAgIyAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCisgICAgICAgIGYgPSB0YXNrLl9jb3JvLmNyX2ZyYW1lCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBmID0gdGFzay5fY29yby5naV9mcmFtZQorICAgIGlmIGYgaXMgbm90IE5vbmU6CisgICAgICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZikKKyAgICAgICAgICAgIGYgPSBmLmZfYmFjaworICAgICAgICBmcmFtZXMucmV2ZXJzZSgpCisgICAgZWxpZiB0YXNrLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CisgICAgICAgIHRiID0gdGFzay5fZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18KKyAgICAgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQodGIudGJfZnJhbWUpCisgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKKyAgICByZXR1cm4gZnJhbWVzCisKKworZGVmIF90YXNrX3ByaW50X3N0YWNrKHRhc2ssIGxpbWl0LCBmaWxlKToKKyAgICBleHRyYWN0ZWRfbGlzdCA9IFtdCisgICAgY2hlY2tlZCA9IHNldCgpCisgICAgZm9yIGYgaW4gdGFzay5nZXRfc3RhY2sobGltaXQ9bGltaXQpOgorICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCisgICAgICAgIGNvID0gZi5mX2NvZGUKKyAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQorICAgICAgICBuYW1lID0gY28uY29fbmFtZQorICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gY2hlY2tlZDoKKyAgICAgICAgICAgIGNoZWNrZWQuYWRkKGZpbGVuYW1lKQorICAgICAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCisgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmLmZfZ2xvYmFscykKKyAgICAgICAgZXh0cmFjdGVkX2xpc3QuYXBwZW5kKChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKSkKKyAgICBleGMgPSB0YXNrLl9leGNlcHRpb24KKyAgICBpZiBub3QgZXh0cmFjdGVkX2xpc3Q6CisgICAgICAgIHByaW50KCdObyBzdGFjayBmb3IgJXInICUgdGFzaywgZmlsZT1maWxlKQorICAgIGVsaWYgZXhjIGlzIG5vdCBOb25lOgorICAgICAgICBwcmludCgnVHJhY2ViYWNrIGZvciAlciAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonICUgdGFzaywKKyAgICAgICAgICAgICAgZmlsZT1maWxlKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCdTdGFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHRhc2ssCisgICAgICAgICAgICAgIGZpbGU9ZmlsZSkKKyAgICB0cmFjZWJhY2sucHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1maWxlKQorICAgIGlmIGV4YyBpcyBub3QgTm9uZToKKyAgICAgICAgZm9yIGxpbmUgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seShleGMuX19jbGFzc19fLCBleGMpOgorICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1maWxlLCBlbmQ9JycpCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5IGIvTGliL2FzeW5jaW8vY29yb3V0aW5lcy5weQppbmRleCA1YmRlY2ViLi4wOGU5NDQxIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Nvcm91dGluZXMucHkKQEAgLTExLDcgKzExLDcgQEAKIAogZnJvbSAuIGltcG9ydCBjb21wYXQKIGZyb20gLiBpbXBvcnQgZXZlbnRzCi1mcm9tIC4gaW1wb3J0IGZ1dHVyZXMKK2Zyb20gLiBpbXBvcnQgYmFzZV9mdXR1cmVzCiBmcm9tIC5sb2cgaW1wb3J0IGxvZ2dlcgogCiAKQEAgLTIwOCw3ICsyMDgsNyBAQAogICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCiAgICAgICAgIGRlZiBjb3JvKCphcmdzLCAqKmt3KToKICAgICAgICAgICAgIHJlcyA9IGZ1bmMoKmFyZ3MsICoqa3cpCi0gICAgICAgICAgICBpZiAoZnV0dXJlcy5pc2Z1dHVyZShyZXMpIG9yIGluc3BlY3QuaXNnZW5lcmF0b3IocmVzKSBvcgorICAgICAgICAgICAgaWYgKGJhc2VfZnV0dXJlcy5pc2Z1dHVyZShyZXMpIG9yIGluc3BlY3QuaXNnZW5lcmF0b3IocmVzKSBvcgogICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UocmVzLCBDb3JvV3JhcHBlcikpOgogICAgICAgICAgICAgICAgIHJlcyA9IHlpZWxkIGZyb20gcmVzCiAgICAgICAgICAgICBlbGlmIF9Bd2FpdGFibGVBQkMgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5IGIvTGliL2FzeW5jaW8vZnV0dXJlcy5weQppbmRleCA5Y2E4ZDg0Li5kMTFkMjg5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKQEAgLTEsMzUgKzEsMzIgQEAKICIiIkEgRnV0dXJlIGNsYXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBpbiBQRVAgMzE0OC4iIiIKIAotX19hbGxfXyA9IFsnQ2FuY2VsbGVkRXJyb3InLCAnVGltZW91dEVycm9yJywKLSAgICAgICAgICAgJ0ludmFsaWRTdGF0ZUVycm9yJywKLSAgICAgICAgICAgJ0Z1dHVyZScsICd3cmFwX2Z1dHVyZScsICdpc2Z1dHVyZScsCi0gICAgICAgICAgIF0KK19fYWxsX18gPSBbJ0NhbmNlbGxlZEVycm9yJywgJ1RpbWVvdXRFcnJvcicsICdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICdGdXR1cmUnLCAnd3JhcF9mdXR1cmUnLCAnaXNmdXR1cmUnXQogCi1pbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLl9iYXNlCitpbXBvcnQgY29uY3VycmVudC5mdXR1cmVzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlcHJsaWIKIGltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKIAorZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKIGZyb20gLiBpbXBvcnQgY29tcGF0CiBmcm9tIC4gaW1wb3J0IGV2ZW50cwogCi0jIFN0YXRlcyBmb3IgRnV0dXJlLgotX1BFTkRJTkcgPSAnUEVORElORycKLV9DQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJwotX0ZJTklTSEVEID0gJ0ZJTklTSEVEJwogCi1FcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZS5FcnJvcgotQ2FuY2VsbGVkRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKLVRpbWVvdXRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaW1lb3V0RXJyb3IKK0NhbmNlbGxlZEVycm9yID0gYmFzZV9mdXR1cmVzLkNhbmNlbGxlZEVycm9yCitJbnZhbGlkU3RhdGVFcnJvciA9IGJhc2VfZnV0dXJlcy5JbnZhbGlkU3RhdGVFcnJvcgorVGltZW91dEVycm9yID0gYmFzZV9mdXR1cmVzLlRpbWVvdXRFcnJvcgoraXNmdXR1cmUgPSBiYXNlX2Z1dHVyZXMuaXNmdXR1cmUKKworCitfUEVORElORyA9IGJhc2VfZnV0dXJlcy5fUEVORElORworX0NBTkNFTExFRCA9IGJhc2VfZnV0dXJlcy5fQ0FOQ0VMTEVECitfRklOSVNIRUQgPSBiYXNlX2Z1dHVyZXMuX0ZJTklTSEVECisKIAogU1RBQ0tfREVCVUcgPSBsb2dnaW5nLkRFQlVHIC0gMSAgIyBoZWF2eS1kdXR5IGRlYnVnZ2luZwogCiAKLWNsYXNzIEludmFsaWRTdGF0ZUVycm9yKEVycm9yKToKLSAgICAiIiJUaGUgb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUuIiIiCi0KLQogY2xhc3MgX1RyYWNlYmFja0xvZ2dlcjoKICAgICAiIiJIZWxwZXIgdG8gbG9nIGEgdHJhY2ViYWNrIHVwb24gZGVzdHJ1Y3Rpb24gaWYgbm90IGNsZWFyZWQuCiAKQEAgLTExMCwxNyArMTA3LDYgQEAKICAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsnbWVzc2FnZSc6IG1zZ30pCiAKIAotZGVmIGlzZnV0dXJlKG9iaik6Ci0gICAgIiIiQ2hlY2sgZm9yIGEgRnV0dXJlLgotCi0gICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKLSAgICBpdHNlbGYgYXMgZHVjay10eXBlIGNvbXBhdGlibGUgYnkgc2V0dGluZyBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcuCi0gICAgU2VlIGNvbW1lbnQgaW4gRnV0dXJlIGZvciBtb3JlIGRldGFpbHMuCi0gICAgIiIiCi0gICAgcmV0dXJuIChoYXNhdHRyKG9iai5fX2NsYXNzX18sICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnKSBhbmQKLSAgICAgICAgICAgIG9iai5fYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgaXMgbm90IE5vbmUpCi0KLQogY2xhc3MgRnV0dXJlOgogICAgICIiIlRoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCiAKQEAgLTE3Myw0NSArMTU5LDEwIEBACiAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrID0gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3lzLl9nZXRmcmFtZSgxKSkKIAotICAgIGRlZiBfX2Zvcm1hdF9jYWxsYmFja3Moc2VsZik6Ci0gICAgICAgIGNiID0gc2VsZi5fY2FsbGJhY2tzCi0gICAgICAgIHNpemUgPSBsZW4oY2IpCi0gICAgICAgIGlmIG5vdCBzaXplOgotICAgICAgICAgICAgY2IgPSAnJwotCi0gICAgICAgIGRlZiBmb3JtYXRfY2IoY2FsbGJhY2spOgotICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZShjYWxsYmFjaywgKCkpCi0KLSAgICAgICAgaWYgc2l6ZSA9PSAxOgotICAgICAgICAgICAgY2IgPSBmb3JtYXRfY2IoY2JbMF0pCi0gICAgICAgIGVsaWYgc2l6ZSA9PSAyOgotICAgICAgICAgICAgY2IgPSAne30sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwgZm9ybWF0X2NiKGNiWzFdKSkKLSAgICAgICAgZWxpZiBzaXplID4gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfY2IoY2JbLTFdKSkKLSAgICAgICAgcmV0dXJuICdjYj1bJXNdJyAlIGNiCi0KLSAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKLSAgICAgICAgaW5mbyA9IFtzZWxmLl9zdGF0ZS5sb3dlcigpXQotICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBfRklOSVNIRUQ6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leGNlcHRpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2V4Y2VwdGlvbj17IXJ9Jy5mb3JtYXQoc2VsZi5fZXhjZXB0aW9uKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyB1c2UgcmVwcmxpYiB0byBsaW1pdCB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQsIGVzcGVjaWFsbHkKLSAgICAgICAgICAgICAgICAjIGZvciB2ZXJ5IGxvbmcgc3RyaW5ncwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcHJsaWIucmVwcihzZWxmLl9yZXN1bHQpCi0gICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3Jlc3VsdD17fScuZm9ybWF0KHJlc3VsdCkpCi0gICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrczoKLSAgICAgICAgICAgIGluZm8uYXBwZW5kKHNlbGYuX19mb3JtYXRfY2FsbGJhY2tzKCkpCi0gICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6Ci0gICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3NvdXJjZV90cmFjZWJhY2tbLTFdCi0gICAgICAgICAgICBpbmZvLmFwcGVuZCgnY3JlYXRlZCBhdCAlczolcycgJSAoZnJhbWVbMF0sIGZyYW1lWzFdKSkKLSAgICAgICAgcmV0dXJuIGluZm8KKyAgICBfcmVwcl9pbmZvID0gYmFzZV9mdXR1cmVzLl9mdXR1cmVfcmVwcl9pbmZvCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGluZm8gPSBzZWxmLl9yZXByX2luZm8oKQotICAgICAgICByZXR1cm4gJzwlcyAlcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnICcuam9pbihpbmZvKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oc2VsZi5fcmVwcl9pbmZvKCkpKQogCiAgICAgIyBPbiBQeXRob24gMy4zIGFuZCBvbGRlciwgb2JqZWN0cyB3aXRoIGEgZGVzdHJ1Y3RvciBwYXJ0IG9mIGEgcmVmZXJlbmNlCiAgICAgIyBjeWNsZSBhcmUgbmV2ZXIgZGVzdHJveWVkLiBJdCdzIG5vdCBtb3JlIHRoZSBjYXNlIG9uIFB5dGhvbiAzLjQgdGhhbmtzCkBAIC0zODUsNiArMzM2LDEwIEBACiAgICAgICAgIF9fYXdhaXRfXyA9IF9faXRlcl9fICMgbWFrZSBjb21wYXRpYmxlIHdpdGggJ2F3YWl0JyBleHByZXNzaW9uCiAKIAorIyBOZWVkZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCitfUHlGdXR1cmUgPSBGdXR1cmUKKworCiBkZWYgX3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZChmdXQsIHJlc3VsdCk6CiAgICAgIiIiSGVscGVyIHNldHRpbmcgdGhlIHJlc3VsdCBvbmx5IGlmIHRoZSBmdXR1cmUgd2FzIG5vdCBjYW5jZWxsZWQuIiIiCiAgICAgaWYgZnV0LmNhbmNlbGxlZCgpOgpAQCAtNDc3LDMgKzQzMiwxMiBAQAogICAgIG5ld19mdXR1cmUgPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQogICAgIF9jaGFpbl9mdXR1cmUoZnV0dXJlLCBuZXdfZnV0dXJlKQogICAgIHJldHVybiBuZXdfZnV0dXJlCisKKwordHJ5OgorICAgIGltcG9ydCBfYXN5bmNpbworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBfQ0Z1dHVyZSBpcyBuZWVkZWQgZm9yIHRlc3RzLgorICAgIEZ1dHVyZSA9IF9DRnV0dXJlID0gX2FzeW5jaW8uRnV0dXJlCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKaW5kZXggZmVmMzIwNS4uZmYxMjg3NyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQpAQCAtOTIsNyArOTIsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQppbmRleCAxMmQzNTdiLi45ZGJlNTUwIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CkBAIC02MjcsNyArNjI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHRyYW5zcG9ydCcpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQppbmRleCBjMmM0Yjk1Li43YWQyOGQ2IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zc2xwcm90by5weQorKysgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQpAQCAtMzMxLDcgKzMzMSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBwYXVzZV9yZWFkaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdGFza3MucHkgYi9MaWIvYXN5bmNpby90YXNrcy5weQppbmRleCA4ODUyYWE1Li41YTQzZWYyIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby90YXNrcy5weQorKysgYi9MaWIvYXN5bmNpby90YXNrcy5weQpAQCAtOSwxMSArOSwxMCBAQAogaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGluc3BlY3QKLWltcG9ydCBsaW5lY2FjaGUKLWltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHdlYWtyZWYKIAorZnJvbSAuIGltcG9ydCBiYXNlX3Rhc2tzCiBmcm9tIC4gaW1wb3J0IGNvbXBhdAogZnJvbSAuIGltcG9ydCBjb3JvdXRpbmVzCiBmcm9tIC4gaW1wb3J0IGV2ZW50cwpAQCAtOTMsMTggKzkyLDcgQEAKICAgICAgICAgICAgIGZ1dHVyZXMuRnV0dXJlLl9fZGVsX18oc2VsZikKIAogICAgIGRlZiBfcmVwcl9pbmZvKHNlbGYpOgotICAgICAgICBpbmZvID0gc3VwZXIoKS5fcmVwcl9pbmZvKCkKLQotICAgICAgICBpZiBzZWxmLl9tdXN0X2NhbmNlbDoKLSAgICAgICAgICAgICMgcmVwbGFjZSBzdGF0dXMKLSAgICAgICAgICAgIGluZm9bMF0gPSAnY2FuY2VsbGluZycKLQotICAgICAgICBjb3JvID0gY29yb3V0aW5lcy5fZm9ybWF0X2Nvcm91dGluZShzZWxmLl9jb3JvKQotICAgICAgICBpbmZvLmluc2VydCgxLCAnY29ybz08JXM+JyAlIGNvcm8pCi0KLSAgICAgICAgaWYgc2VsZi5fZnV0X3dhaXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGluZm8uaW5zZXJ0KDIsICd3YWl0X2Zvcj0lcicgJSBzZWxmLl9mdXRfd2FpdGVyKQotICAgICAgICByZXR1cm4gaW5mbworICAgICAgICByZXR1cm4gYmFzZV90YXNrcy5fdGFza19yZXByX2luZm8oc2VsZikKIAogICAgIGRlZiBnZXRfc3RhY2soc2VsZiwgKiwgbGltaXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBzdGFjayBmcmFtZXMgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KQEAgLTEyNywzMSArMTE1LDcgQEAKICAgICAgICAgRm9yIHJlYXNvbnMgYmV5b25kIG91ciBjb250cm9sLCBvbmx5IG9uZSBzdGFjayBmcmFtZSBpcwogICAgICAgICByZXR1cm5lZCBmb3IgYSBzdXNwZW5kZWQgY29yb3V0aW5lLgogICAgICAgICAiIiIKLSAgICAgICAgZnJhbWVzID0gW10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCi0gICAgICAgICAgICBmID0gc2VsZi5fY29yby5jcl9mcmFtZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBmID0gc2VsZi5fY29yby5naV9mcmFtZQotICAgICAgICBpZiBmIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGltaXQgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKLSAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGYpCi0gICAgICAgICAgICAgICAgZiA9IGYuZl9iYWNrCi0gICAgICAgICAgICBmcmFtZXMucmV2ZXJzZSgpCi0gICAgICAgIGVsaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGIgPSBzZWxmLl9leGNlcHRpb24uX190cmFjZWJhY2tfXwotICAgICAgICAgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCi0gICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCh0Yi50Yl9mcmFtZSkKLSAgICAgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKLSAgICAgICAgcmV0dXJuIGZyYW1lcworICAgICAgICByZXR1cm4gYmFzZV90YXNrcy5fdGFza19nZXRfc3RhY2soc2VsZiwgbGltaXQpCiAKICAgICBkZWYgcHJpbnRfc3RhY2soc2VsZiwgKiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAgICAgIiIiUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgpAQCAtMTYyLDMxICsxMjYsNyBAQAogICAgICAgICB0byB3aGljaCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW47IGJ5IGRlZmF1bHQgb3V0cHV0IGlzIHdyaXR0ZW4KICAgICAgICAgdG8gc3lzLnN0ZGVyci4KICAgICAgICAgIiIiCi0gICAgICAgIGV4dHJhY3RlZF9saXN0ID0gW10KLSAgICAgICAgY2hlY2tlZCA9IHNldCgpCi0gICAgICAgIGZvciBmIGluIHNlbGYuZ2V0X3N0YWNrKGxpbWl0PWxpbWl0KToKLSAgICAgICAgICAgIGxpbmVubyA9IGYuZl9saW5lbm8KLSAgICAgICAgICAgIGNvID0gZi5mX2NvZGUKLSAgICAgICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgICAgIG5hbWUgPSBjby5jb19uYW1lCi0gICAgICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gY2hlY2tlZDoKLSAgICAgICAgICAgICAgICBjaGVja2VkLmFkZChmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmLmZfZ2xvYmFscykKLSAgICAgICAgICAgIGV4dHJhY3RlZF9saXN0LmFwcGVuZCgoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkpCi0gICAgICAgIGV4YyA9IHNlbGYuX2V4Y2VwdGlvbgotICAgICAgICBpZiBub3QgZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgICAgICBwcmludCgnTm8gc3RhY2sgZm9yICVyJyAlIHNlbGYsIGZpbGU9ZmlsZSkKLSAgICAgICAgZWxpZiBleGMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludCgnVHJhY2ViYWNrIGZvciAlciAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonICUgc2VsZiwKLSAgICAgICAgICAgICAgICAgIGZpbGU9ZmlsZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdTdGFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHNlbGYsCi0gICAgICAgICAgICAgICAgICBmaWxlPWZpbGUpCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9saXN0KGV4dHJhY3RlZF9saXN0LCBmaWxlPWZpbGUpCi0gICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoZXhjLl9fY2xhc3NfXywgZXhjKToKLSAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0nJykKKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcHJpbnRfc3RhY2soc2VsZiwgbGltaXQsIGZpbGUpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICAiIiJSZXF1ZXN0IHRoYXQgdGhpcyB0YXNrIGNhbmNlbCBpdHNlbGYuCkBAIC0zMTYsNiArMjU2LDE4IEBACiAgICAgICAgIHNlbGYgPSBOb25lICAjIE5lZWRlZCB0byBicmVhayBjeWNsZXMgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLgogCiAKK19QeVRhc2sgPSBUYXNrCisKKwordHJ5OgorICAgIGltcG9ydCBfYXN5bmNpbworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBfQ1Rhc2sgaXMgbmVlZGVkIGZvciB0ZXN0cy4KKyAgICBUYXNrID0gX0NUYXNrID0gX2FzeW5jaW8uVGFzaworCisKICMgd2FpdCgpIGFuZCBhc19jb21wbGV0ZWQoKSBzaW1pbGFyIHRvIHRob3NlIGluIFBFUCAzMTQ4LgogCiBGSVJTVF9DT01QTEVURUQgPSBjb25jdXJyZW50LmZ1dHVyZXMuRklSU1RfQ09NUExFVEVECmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQppbmRleCA5ZDMyODIyLi45OWUzODM5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKQEAgLTExOSwxMCArMTE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0JywgJ3Rlc3RfYXN5bmNpbycpCiAgICAgICAgIGtleWZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9rZXkucGVtJykKICAgICAgICAgY2VydGZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9jZXJ0LnBlbScpCi0gICAgICAgIHNzb2NrID0gc3NsLndyYXBfc29ja2V0KHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorCisgICAgICAgIHNzb2NrID0gY29udGV4dC53cmFwX3NvY2tldChyZXF1ZXN0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLlJlcXVlc3RIYW5kbGVyQ2xhc3Moc3NvY2ssIGNsaWVudF9hZGRyZXNzLCBzZWxmKQogICAgICAgICAgICAgc3NvY2suY2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQppbmRleCA3NzkwNTM0Li4yODA2ZWE4IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQpAQCAtNDE5LDcgKzQxOSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpOgpAQCAtNjE5LDcgKzYyMCw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBhYm9ydChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKaW5kZXggNjY4ZmUxNC4uYjc3N2RkMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKQEAgLTE3MSw4ICsxNzEsMTMgQEAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIl9XYWl0Q2FuY2VsRnV0dXJlIG11c3Qgbm90IGJlIGNhbmNlbGxlZCIpCiAKLSAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc3VwZXIoX1dhaXRDYW5jZWxGdXR1cmUsIHNlbGYpLl9zY2hlZHVsZV9jYWxsYmFja3MoKQorICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHN1cGVyKCkuc2V0X3Jlc3VsdChyZXN1bHQpCisgICAgICAgIGlmIHNlbGYuX2RvbmVfY2FsbGJhY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kb25lX2NhbGxiYWNrKHNlbGYpCisKKyAgICBkZWYgc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOgorICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjZXB0aW9uKQogICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQogCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQppbmRleCA4NzBjZDEzLi43YzYzZmI5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKQEAgLTE1OSw3ICsxNTksOCBAQAogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggM2I1MWYwZi4uNzA1ZTQwNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtMzMzLDcgKzMzMyw3IEBACiAgICAgICAgIHNlbGYuY29ubmVjdGluZyA9IFRydWUKICAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuY29ubmVjdF9leChhZGRyZXNzKQogICAgICAgICBpZiBlcnIgaW4gKEVJTlBST0dSRVNTLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0spIFwKLSAgICAgICAgb3IgZXJyID09IEVJTlZBTCBhbmQgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CisgICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHJlc3MKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBlcnIgaW4gKDAsIEVJU0NPTk4pOgpAQCAtNTk1LDcgKzU5NSw4IEBACiAKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLmZkID49IDA6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIGRlZiByZWN2KHNlbGYsICphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IGFkYWVjMWQuLjU4ZjZhZDYgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtNTUsOCArNTUsNyBAQAogICAgIGFsdGVybmF0aXZlIGFscGhhYmV0IGZvciB0aGUgJysnIGFuZCAnLycgY2hhcmFjdGVycy4gIFRoaXMgYWxsb3dzIGFuCiAgICAgYXBwbGljYXRpb24gdG8gZS5nLiBnZW5lcmF0ZSB1cmwgb3IgZmlsZXN5c3RlbSBzYWZlIEJhc2U2NCBzdHJpbmdzLgogICAgICIiIgotICAgICMgU3RyaXAgb2ZmIHRoZSB0cmFpbGluZyBuZXdsaW5lCi0gICAgZW5jb2RlZCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQocylbOi0xXQorICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMsIG5ld2xpbmU9RmFsc2UpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgIHJldHVybiBlbmNvZGVkLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicrLycsIGFsdGNoYXJzKSkKQEAgLTE1Niw3ICsxNTUsNyBAQAogICAgIGxlZnRvdmVyID0gbGVuKHMpICUgNQogICAgICMgUGFkIHRoZSBsYXN0IHF1YW50dW0gd2l0aCB6ZXJvIGJpdHMgaWYgbmVjZXNzYXJ5CiAgICAgaWYgbGVmdG92ZXI6Ci0gICAgICAgIHMgPSBzICsgYnl0ZXMoNSAtIGxlZnRvdmVyKSAgIyBEb24ndCB1c2UgKz0gIQorICAgICAgICBzID0gcyArIGInXDAnICogKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKICAgICBlbmNvZGVkID0gYnl0ZWFycmF5KCkKICAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgICBiMzJ0YWIyID0gX2IzMnRhYjIKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IGJjNzhjNTQuLjZmNTYzMjggMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTEsNiArMTEsNyBAQAogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9idWlsdGluX29wZW4KIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBfY29tcHJlc3Npb24KIApAQCAtNDIsOSArNDMsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgogICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgogCi0gICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXQgZ2l2ZXMgdGhlIG5hbWUKLSAgICAgICAgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LAotICAgICAgICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciwgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCwgaXQgZ2l2ZXMgdGhlCisgICAgICAgIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgICAgICAgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgJ3gnIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtOTEsNyArOTIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgc2VsZi5fZnAgPSBfYnVpbHRpbl9vcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKQEAgLTk5LDcgKzEwMCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLApAQCAtMjg5LDggKzI5MCw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyLCBieXRlcywgb3IKKyAgICBQYXRoTGlrZSBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUKKyAgICB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgIngiLCAieGIiLCAiYSIgb3IKICAgICAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCmRpZmYgLS1naXQgYS9MaWIvY2FsZW5kYXIucHkgYi9MaWIvY2FsZW5kYXIucHkKaW5kZXggNzZjZjhkZS4uMDc1OTRmMyAxMDA2NDQKLS0tIGEvTGliL2NhbGVuZGFyLnB5CisrKyBiL0xpYi9jYWxlbmRhci5weQpAQCAtMTMsNyArMTMsOSBAQAogX19hbGxfXyA9IFsiSWxsZWdhbE1vbnRoRXJyb3IiLCAiSWxsZWdhbFdlZWtkYXlFcnJvciIsICJzZXRmaXJzdHdlZWtkYXkiLAogICAgICAgICAgICAiZmlyc3R3ZWVrZGF5IiwgImlzbGVhcCIsICJsZWFwZGF5cyIsICJ3ZWVrZGF5IiwgIm1vbnRocmFuZ2UiLAogICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKLSAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiXQorICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCisgICAgICAgICAgICJDYWxlbmRhciIsICJUZXh0Q2FsZW5kYXIiLCAiSFRNTENhbGVuZGFyIiwgIkxvY2FsZVRleHRDYWxlbmRhciIsCisgICAgICAgICAgICJMb2NhbGVIVE1MQ2FsZW5kYXIiLCAid2Vla2hlYWRlciJdCiAKICMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCiBlcnJvciA9IFZhbHVlRXJyb3IKQEAgLTYwNCw1MSArNjA2LDYzIEBACiAKIAogZGVmIG1haW4oYXJncyk6Ci0gICAgaW1wb3J0IG9wdHBhcnNlCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFt5ZWFyIFttb250aF1dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgdGV4dGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgndGV4dCBvbmx5IGFyZ3VtZW50cycpCisgICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi13IiwgIi0td2lkdGgiLAotICAgICAgICBkZXN0PSJ3aWR0aCIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MiwKLSAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MiwKKyAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMikiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItbCIsICItLWxpbmVzIiwKLSAgICAgICAgZGVzdD0ibGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEsCi0gICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTEsCisgICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXMiLCAiLS1zcGFjaW5nIiwKLSAgICAgICAgZGVzdD0ic3BhY2luZyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9NiwKLSAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2LCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD02LAorICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLW0iLCAiLS1tb250aHMiLAotICAgICAgICBkZXN0PSJtb250aHMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCisgICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWMiLCAiLS1jc3MiLAotICAgICAgICBkZXN0PSJjc3MiLCBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAotICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIChodG1sIG9ubHkpIgorICAgICAgICBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAorICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAotICAgICAgICBkZXN0PSJsb2NhbGUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgaGVscD0ibG9jYWxlIHRvIGJlIHVzZWQgZnJvbSBtb250aCBhbmQgd2Vla2RheSBuYW1lcyIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1lIiwgIi0tZW5jb2RpbmciLAotICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0iRW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQuIgorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXQiLCAiLS10eXBlIiwKLSAgICAgICAgZGVzdD0idHlwZSIsIGRlZmF1bHQ9InRleHQiLAorICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICAgY2hvaWNlcz0oInRleHQiLCAiaHRtbCIpLAogICAgICAgICBoZWxwPSJvdXRwdXQgdHlwZSAodGV4dCBvciBodG1sKSIKICAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgInllYXIiLAorICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAorICAgICAgICBoZWxwPSJ5ZWFyIG51bWJlciAoMS05OTk5KSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIm1vbnRoIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgorICAgICkKIAotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3NbMTpdKQogCiAgICAgaWYgb3B0aW9ucy5sb2NhbGUgYW5kIG5vdCBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICBwYXJzZXIuZXJyb3IoImlmIC0tbG9jYWxlIGlzIHNwZWNpZmllZCAtLWVuY29kaW5nIGlzIHJlcXVpcmVkIikKQEAgLTY2NiwxMCArNjgwLDEwIEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KSkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTY3OSwxOCArNjkzLDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjYWwgPSBUZXh0Q2FsZW5kYXIoKQogICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKLSAgICAgICAgaWYgbGVuKGFyZ3MpICE9IDM6CisgICAgICAgIGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKICAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICAgb3B0ZGljdFsibSJdID0gb3B0aW9ucy5tb250aHMKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGludChhcmdzWzFdKSwgKipvcHRkaWN0KQotICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKGludChhcmdzWzFdKSwgaW50KGFyZ3NbMl0pLCAqKm9wdGRpY3QpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC53cml0ZQogICAgICAgICBpZiBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggMTg5YzZkNS4uMjMzYTQ5NiAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKIF9fYWxsX18gPSBbIk1pbmlGaWVsZFN0b3JhZ2UiLCAiRmllbGRTdG9yYWdlIiwKICAgICAgICAgICAgInBhcnNlIiwgInBhcnNlX3FzIiwgInBhcnNlX3FzbCIsICJwYXJzZV9tdWx0aXBhcnQiLAotICAgICAgICAgICAicGFyc2VfaGVhZGVyIiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKKyAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJ0ZXN0IiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKICAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgICJwcmludF9lbnZpcm9uX3VzYWdlIiwgImVzY2FwZSJdCiAKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNTMyNDRlMy4uMjMyOTVmNCAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAKLSAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUpOgorICAgIGRlZiBpbnRlcmFjdChzZWxmLCBiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KIAogICAgICAgICBUaGUgb3B0aW9uYWwgYmFubmVyIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYmFubmVyIHRvIHByaW50CkBAIC0xOTYsNiArMTk2LDExIEBACiAgICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICAgY2xvc2UhKS4KIAorICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQorICAgICAgICBwcmludGVkIHdoZW4gZXhpdGluZy4gUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzCisgICAgICAgIHByaW50aW5nIGFuIGV4aXQgbWVzc2FnZS4gSWYgZXhpdG1zZyBpcyBub3QgZ2l2ZW4gb3IgTm9uZSwKKyAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnBzMQpAQCAtMjMwLDYgKzIzNSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNldGJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgbW9yZSA9IDAKKyAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnbm93IGV4aXRpbmcgJXMuLi5cbicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgZWxpZiBleGl0bXNnICE9ICcnOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQogCiAgICAgZGVmIHB1c2goc2VsZiwgbGluZSk6CiAgICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KQEAgLTI2Nyw3ICsyNzYsNyBAQAogCiAKIAotZGVmIGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lKToKK2RlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdGhlIEludGVyYWN0aXZlQ29uc29sZQpAQCAtMjc5LDYgKzI4OCw3IEBACiAgICAgYmFubmVyIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoKQogICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgICBsb2NhbCAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVJbnRlcnByZXRlci5fX2luaXRfXygpCisgICAgZXhpdG1zZyAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKIAogICAgICIiIgogICAgIGNvbnNvbGUgPSBJbnRlcmFjdGl2ZUNvbnNvbGUobG9jYWwpCkBAIC0yODksNyArMjk5LDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIpCisgICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBiZWE4MTFkLi44NWI0YzNjIDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0zNTYsNyArMzU2LDcgQEAKICAgICB7bmFtZX0gPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoe2luZGV4OmR9KSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleDpkfScpCiAnJycKIAotZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpOgorZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKToKICAgICAiIiJSZXR1cm5zIGEgbmV3IHN1YmNsYXNzIG9mIHR1cGxlIHdpdGggbmFtZWQgZmllbGRzLgogCiAgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQpAQCAtMzk2LDcgKzM5Niw3IEBACiAgICAgICAgICAgICAgICAgZmllbGRfbmFtZXNbaW5kZXhdID0gJ18lZCcgJSBpbmRleAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgorICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgc3RyaW5ncycpCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCkBAIC00MzcsMTEgKzQzNywxNSBAQAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9ubWVudHMgd2hlcmUKICAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKLSAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbikuCi0gICAgdHJ5OgotICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcGFzcworICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCisgICAgIyBzcGVjaWZpZWQgYSBwYXJ0aWN1bGFyIG1vZHVsZS4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlID0gX3N5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBtb2R1bGUgaXMgbm90IE5vbmU6CisgICAgICAgIHJlc3VsdC5fX21vZHVsZV9fID0gbW9kdWxlCiAKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTg0NSw3ICs4NDksNyBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKKyMjIyAgQ2hhaW5NYXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CkBAIC05NzIsNyArOTc2LDcgQEAKICAgICAgICAgICAgIGRpY3QgPSBrd2FyZ3MucG9wKCdkaWN0JykKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUGFzc2luZyAnZGljdCcgYXMga2V5d29yZCBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0YSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2UzOGUuLjAwMDAwMDAKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi1Qb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotcCA9IFBvaW50KHg9MTAsIHk9MjApCi1hc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLWNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi1mb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgIHByaW50IChwKQotCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi1wcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi1pbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKLVRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi1wcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvY29tcGlsZWFsbC5weSBiL0xpYi9jb21waWxlYWxsLnB5CmluZGV4IDJkNGM1MjMuLjFjOWNlYjYgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlYWxsLnB5CisrKyBiL0xpYi9jb21waWxlYWxsLnB5CkBAIC0yNSw2ICsyNSw4IEBACiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKIGRlZiBfd2Fsa19kaXIoZGlyLCBkZGlyPU5vbmUsIG1heGxldmVscz0xMCwgcXVpZXQ9MCk6CisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGRpciwgb3MuUGF0aExpa2UpOgorICAgICAgICBkaXIgPSBvcy5mc3BhdGgoZGlyKQogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgpAQCAtNzEsNyArNzMsNyBAQAogCiAgICAgZmlsZXMgPSBfd2Fsa19kaXIoZGlyLCBxdWlldD1xdWlldCwgbWF4bGV2ZWxzPW1heGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICBkZGlyPWRkaXIpCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKICAgICAgICAgd29ya2VycyA9IHdvcmtlcnMgb3IgTm9uZQogICAgICAgICB3aXRoIFByb2Nlc3NQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CkBAIC04MSwxMiArODMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3k9bGVnYWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpCi0gICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9MSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtaW4ocmVzdWx0cywgZGVmYXVsdD1UcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmaWxlLCBkZGlyLCBmb3JjZSwgcngsIHF1aWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3ksIG9wdGltaXplKToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsCkBAIC0xMDQsNyArMTA2LDkgQEAKICAgICBsZWdhY3k6ICAgIGlmIFRydWUsIHByb2R1Y2UgbGVnYWN5IHB5YyBwYXRocyBpbnN0ZWFkIG9mIFBFUCAzMTQ3IHBhdGhzCiAgICAgb3B0aW1pemU6ICBvcHRpbWl6YXRpb24gbGV2ZWwgb3IgLTEgZm9yIGxldmVsIG9mIHRoZSBpbnRlcnByZXRlcgogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICBpZiBxdWlldCA8IDIgYW5kIGlzaW5zdGFuY2UoZnVsbG5hbWUsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5mc3BhdGgoZnVsbG5hbWUpCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZnVsbG5hbWUpCiAgICAgaWYgZGRpciBpcyBub3QgTm9uZToKICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4oZGRpciwgbmFtZSkKQEAgLTE0NCw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcwogICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CkBAIC0xNTcsNyArMTYxLDcgQEAKICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZGVjb2RlKHN5cy5zdGRvdXQuZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTY3LDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgcHJpbnQoZS5fX2NsYXNzX18uX19uYW1lX18gKyAnOicsIGUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9MSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLApAQCAtMTgzLDcgKzE4Nyw3IEBACiAgICAgbGVnYWN5OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCBGYWxzZSkKICAgICBvcHRpbWl6ZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgLTEpCiAgICAgIiIiCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgIGlmIChub3QgZGlyIG9yIGRpciA9PSBvcy5jdXJkaXIpIGFuZCBza2lwX2N1cmRpcjoKICAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKaW5kZXggOWMzYWVjOS4uMDNkMjc2YiAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKQEAgLTgxLDEyICs4MSwxMyBAQAogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSwgdGhyZWFkX25hbWVfcHJlZml4PScnKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgVGhyZWFkUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBtYXhfd29ya2VyczogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLgorICAgICAgICAgICAgdGhyZWFkX25hbWVfcHJlZml4OiBBbiBvcHRpb25hbCBuYW1lIHByZWZpeCB0byBnaXZlIG91ciB0aHJlYWRzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgICMgVXNlIHRoaXMgbnVtYmVyIGJlY2F1c2UgVGhyZWFkUG9vbEV4ZWN1dG9yIGlzIG9mdGVuCkBAIC0xMDAsNiArMTAxLDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3NodXRkb3duID0gRmFsc2UKICAgICAgICAgc2VsZi5fc2h1dGRvd25fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4ID0gdGhyZWFkX25hbWVfcHJlZml4CiAKICAgICBkZWYgc3VibWl0KHNlbGYsIGZuLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CkBAIC0xMjEsOCArMTIzLDExIEBACiAgICAgICAgICAgICBxLnB1dChOb25lKQogICAgICAgICAjIFRPRE8oYnF1aW5sYW4pOiBTaG91bGQgYXZvaWQgY3JlYXRpbmcgbmV3IHRocmVhZHMgaWYgdGhlcmUgYXJlIG1vcmUKICAgICAgICAgIyBpZGxlIHRocmVhZHMgdGhhbiBpdGVtcyBpbiB0aGUgd29yayBxdWV1ZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX3RocmVhZHMpIDwgc2VsZi5fbWF4X3dvcmtlcnM6Ci0gICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3dvcmtlciwKKyAgICAgICAgbnVtX3RocmVhZHMgPSBsZW4oc2VsZi5fdGhyZWFkcykKKyAgICAgICAgaWYgbnVtX3RocmVhZHMgPCBzZWxmLl9tYXhfd29ya2VyczoKKyAgICAgICAgICAgIHRocmVhZF9uYW1lID0gJyVzXyVkJyAlIChzZWxmLl90aHJlYWRfbmFtZV9wcmVmaXggb3Igc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGhyZWFkcykKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKG5hbWU9dGhyZWFkX25hbWUsIHRhcmdldD1fd29ya2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0od2Vha3JlZi5yZWYoc2VsZiwgd2Vha3JlZl9jYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93b3JrX3F1ZXVlKSkKICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbnRleHRsaWIucHkgYi9MaWIvY29udGV4dGxpYi5weQppbmRleCBkNDRlZGQ2Li43ZDk0YTU3IDEwMDY0NAotLS0gYS9MaWIvY29udGV4dGxpYi5weQorKysgYi9MaWIvY29udGV4dGxpYi5weQpAQCAtMSwxMSArMSwzNCBAQAogIiIiVXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudCBjb250ZXh0cy4gIFNlZSBQRVAgMzQzLiIiIgotCitpbXBvcnQgYWJjCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKLV9fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLAotICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCitfX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkFic3RyYWN0Q29udGV4dE1hbmFnZXIiLAorICAgICAgICAgICAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLCAicmVkaXJlY3Rfc3Rkb3V0IiwKKyAgICAgICAgICAgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCisKKworY2xhc3MgQWJzdHJhY3RDb250ZXh0TWFuYWdlcihhYmMuQUJDKToKKworICAgICIiIkFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbnRleHQgbWFuYWdlcnMuIiIiCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYHNlbGZgIHVwb24gZW50ZXJpbmcgdGhlIHJ1bnRpbWUgY29udGV4dC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIiIiUmFpc2UgYW55IGV4Y2VwdGlvbiB0cmlnZ2VyZWQgd2l0aGluIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQWJzdHJhY3RDb250ZXh0TWFuYWdlcjoKKyAgICAgICAgICAgIGlmIChhbnkoIl9fZW50ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAorICAgICAgICAgICAgICAgIGFueSgiX19leGl0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMzEsNyArNTQsNyBAQAogICAgICAgICByZXR1cm4gaW5uZXIKIAogCi1jbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvcik6CitjbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiSGVscGVyIGZvciBAY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIGFyZ3MsIGt3ZHMpOgpAQCAtMTM3LDcgKzE2MCw3IEBACiAgICAgcmV0dXJuIGhlbHBlcgogCiAKLWNsYXNzIGNsb3Npbmcob2JqZWN0KToKK2NsYXNzIGNsb3NpbmcoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiQ29udGV4dCB0byBhdXRvbWF0aWNhbGx5IGNsb3NlIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGEgYmxvY2suCiAKICAgICBDb2RlIGxpa2UgdGhpczoKQEAgLTE2Miw3ICsxODUsNyBAQAogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKIAogCi1jbGFzcyBfUmVkaXJlY3RTdHJlYW06CitjbGFzcyBfUmVkaXJlY3RTdHJlYW0oQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICBfc3RyZWFtID0gTm9uZQogCkBAIC0yMDIsNyArMjI1LDcgQEAKICAgICBfc3RyZWFtID0gInN0ZGVyciIKIAogCi1jbGFzcyBzdXBwcmVzczoKK2NsYXNzIHN1cHByZXNzKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzdXBwcmVzcyBzcGVjaWZpZWQgZXhjZXB0aW9ucwogCiAgICAgQWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBleGVjdXRpb24gcHJvY2VlZHMgd2l0aCB0aGUgbmV4dApAQCAtMjMzLDcgKzI1Niw3IEBACiAKIAogIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKLWNsYXNzIEV4aXRTdGFjayhvYmplY3QpOgorY2xhc3MgRXhpdFN0YWNrKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgZHluYW1pYyBtYW5hZ2VtZW50IG9mIGEgc3RhY2sgb2YgZXhpdCBjYWxsYmFja3MKIAogICAgIEZvciBleGFtcGxlOgpAQCAtMzEyLDkgKzMzNSw2IEBACiAgICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjayIiIgogICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CiAgICAgICAgIHJlY2VpdmVkX2V4YyA9IGV4Y19kZXRhaWxzWzBdIGlzIG5vdCBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi9jb3B5LnB5IGIvTGliL2NvcHkucHkKaW5kZXggOTcyYjk0YS4uZjg2MDQwYSAxMDA2NDQKLS0tIGEvTGliL2NvcHkucHkKKysrIGIvTGliL2NvcHkucHkKQEAgLTUxLDcgKzUxLDYgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHdlYWtyZWYKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKLWltcG9ydCBidWlsdGlucwogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTEwMiwzNyArMTAxLDMzIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJ1bihzaGFsbG93KWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKIAotICAgIHJldHVybiBfcmVjb25zdHJ1Y3QoeCwgcnYsIDApCisgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgcmV0dXJuIHgKKyAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIE5vbmUsICpydikKIAogCiBfY29weV9kaXNwYXRjaCA9IGQgPSB7fQogCiBkZWYgX2NvcHlfaW1tdXRhYmxlKHgpOgogICAgIHJldHVybiB4Ci1mb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgc3RyLCB0dXBsZSwKLSAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwKLSAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwKK2ZvciB0IGluICh0eXBlKE5vbmUpLCBpbnQsIGZsb2F0LCBib29sLCBjb21wbGV4LCBzdHIsIHR1cGxlLAorICAgICAgICAgIGJ5dGVzLCBmcm96ZW5zZXQsIHR5cGUsIHJhbmdlLCBzbGljZSwKKyAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwgdHlwZShOb3RJbXBsZW1lbnRlZCksCiAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlLCB3ZWFrcmVmLnJlZik6CiAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogdCA9IGdldGF0dHIodHlwZXMsICJDb2RlVHlwZSIsIE5vbmUpCiBpZiB0IGlzIG5vdCBOb25lOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKLWZvciBuYW1lIGluICgiY29tcGxleCIsICJ1bmljb2RlIik6Ci0gICAgdCA9IGdldGF0dHIoYnVpbHRpbnMsIG5hbWUsIE5vbmUpCi0gICAgaWYgdCBpcyBub3QgTm9uZToKLSAgICAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogCi1kZWYgX2NvcHlfd2l0aF9jb25zdHJ1Y3Rvcih4KToKLSAgICByZXR1cm4gdHlwZSh4KSh4KQotZm9yIHQgaW4gKGxpc3QsIGRpY3QsIHNldCk6Ci0gICAgZFt0XSA9IF9jb3B5X3dpdGhfY29uc3RydWN0b3IKK2RbbGlzdF0gPSBsaXN0LmNvcHkKK2RbZGljdF0gPSBkaWN0LmNvcHkKK2Rbc2V0XSA9IHNldC5jb3B5CitkW2J5dGVhcnJheV0gPSBieXRlYXJyYXkuY29weQogCi1kZWYgX2NvcHlfd2l0aF9jb3B5X21ldGhvZCh4KToKLSAgICByZXR1cm4geC5jb3B5KCkKIGlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgotICAgIGRbUHlTdHJpbmdNYXBdID0gX2NvcHlfd2l0aF9jb3B5X21ldGhvZAorICAgIGRbUHlTdHJpbmdNYXBdID0gUHlTdHJpbmdNYXAuY29weQogCi1kZWwgZAorZGVsIGQsIHQKIAogZGVmIGRlZXBjb3B5KHgsIG1lbW89Tm9uZSwgX25pbD1bXSk6CiAgICAgIiIiRGVlcCBjb3B5IG9wZXJhdGlvbiBvbiBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuCkBAIC0xNzksNyArMTc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW4oZGVlcCljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCi0gICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBydiwgMSwgbWVtbykKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICB5ID0geAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgKnJ2KQogCiAgICAgIyBJZiBpcyBpdHMgb3duIGNvcHksIGRvbid0IG1lbW9pemUuCiAgICAgaWYgeSBpcyBub3QgeDoKQEAgLTE5MywxMyArMTkxLDExIEBACiAgICAgcmV0dXJuIHgKIGRbdHlwZShOb25lKV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3R5cGUoRWxsaXBzaXMpXSA9IF9kZWVwY29weV9hdG9taWMKK2RbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gX2RlZXBjb3B5X2F0b21pYwogZFtpbnRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtmbG9hdF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2Jvb2xdID0gX2RlZXBjb3B5X2F0b21pYwotdHJ5OgotICAgIGRbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCi1leGNlcHQgTmFtZUVycm9yOgotICAgIHBhc3MKK2RbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2J5dGVzXSA9IF9kZWVwY29weV9hdG9taWMKIGRbc3RyXSA9IF9kZWVwY29weV9hdG9taWMKIHRyeToKQEAgLTIxMSwxNSArMjA3LDE2IEBACiBkW3R5cGVzLkZ1bmN0aW9uVHlwZV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3dlYWtyZWYucmVmXSA9IF9kZWVwY29weV9hdG9taWMKIAotZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8sIGRlZXBjb3B5PWRlZXBjb3B5KToKICAgICB5ID0gW10KICAgICBtZW1vW2lkKHgpXSA9IHkKKyAgICBhcHBlbmQgPSB5LmFwcGVuZAogICAgIGZvciBhIGluIHg6Ci0gICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQorICAgICAgICBhcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCiAgICAgcmV0dXJuIHkKIGRbbGlzdF0gPSBfZGVlcGNvcHlfbGlzdAogCi1kZWYgX2RlZXBjb3B5X3R1cGxlKHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQogICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgpAQCAtMjM2LDcgKzIzMyw3IEBACiAgICAgcmV0dXJuIHkKIGRbdHVwbGVdID0gX2RlZXBjb3B5X3R1cGxlCiAKLWRlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IHt9CiAgICAgbWVtb1tpZCh4KV0gPSB5CiAgICAgZm9yIGtleSwgdmFsdWUgaW4geC5pdGVtcygpOgpAQCAtMjQ4LDcgKzI0NSw5IEBACiAKIGRlZiBfZGVlcGNvcHlfbWV0aG9kKHgsIG1lbW8pOiAjIENvcHkgaW5zdGFuY2UgbWV0aG9kcwogICAgIHJldHVybiB0eXBlKHgpKHguX19mdW5jX18sIGRlZXBjb3B5KHguX19zZWxmX18sIG1lbW8pKQotX2RlZXBjb3B5X2Rpc3BhdGNoW3R5cGVzLk1ldGhvZFR5cGVdID0gX2RlZXBjb3B5X21ldGhvZAorZFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKKworZGVsIGQKIAogZGVmIF9rZWVwX2FsaXZlKHgsIG1lbW8pOgogICAgICIiIktlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgeCBpbiB0aGUgbWVtby4KQEAgLTI2NiwzMSArMjY1LDE1IEBACiAgICAgICAgICMgYWhhLCB0aGlzIGlzIHRoZSBmaXJzdCBvbmUgOi0pCiAgICAgICAgIG1lbW9baWQobWVtbyldPVt4XQogCi1kZWYgX3JlY29uc3RydWN0KHgsIGluZm8sIGRlZXAsIG1lbW89Tm9uZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShpbmZvLCBzdHIpOgotICAgICAgICByZXR1cm4geAotICAgIGFzc2VydCBpc2luc3RhbmNlKGluZm8sIHR1cGxlKQotICAgIGlmIG1lbW8gaXMgTm9uZToKLSAgICAgICAgbWVtbyA9IHt9Ci0gICAgbiA9IGxlbihpbmZvKQotICAgIGFzc2VydCBuIGluICgyLCAzLCA0LCA1KQotICAgIGNhbGxhYmxlLCBhcmdzID0gaW5mb1s6Ml0KLSAgICBpZiBuID4gMjoKLSAgICAgICAgc3RhdGUgPSBpbmZvWzJdCi0gICAgZWxzZToKLSAgICAgICAgc3RhdGUgPSBOb25lCi0gICAgaWYgbiA+IDM6Ci0gICAgICAgIGxpc3RpdGVyID0gaW5mb1szXQotICAgIGVsc2U6Ci0gICAgICAgIGxpc3RpdGVyID0gTm9uZQotICAgIGlmIG4gPiA0OgotICAgICAgICBkaWN0aXRlciA9IGluZm9bNF0KLSAgICBlbHNlOgotICAgICAgICBkaWN0aXRlciA9IE5vbmUKK2RlZiBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgZnVuYywgYXJncywKKyAgICAgICAgICAgICAgICAgc3RhdGU9Tm9uZSwgbGlzdGl0ZXI9Tm9uZSwgZGljdGl0ZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZGVlcGNvcHk9ZGVlcGNvcHkpOgorICAgIGRlZXAgPSBtZW1vIGlzIG5vdCBOb25lCisgICAgaWYgZGVlcCBhbmQgYXJnczoKKyAgICAgICAgYXJncyA9IChkZWVwY29weShhcmcsIG1lbW8pIGZvciBhcmcgaW4gYXJncykKKyAgICB5ID0gZnVuYygqYXJncykKICAgICBpZiBkZWVwOgotICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncywgbWVtbykKLSAgICB5ID0gY2FsbGFibGUoKmFyZ3MpCi0gICAgbWVtb1tpZCh4KV0gPSB5CisgICAgICAgIG1lbW9baWQoeCldID0geQogCiAgICAgaWYgc3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIGRlZXA6CkBAIC0zMDksMjIgKzI5MiwyMiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHksIGtleSwgdmFsdWUpCiAKICAgICBpZiBsaXN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CiAgICAgICAgICAgICAgICAgaXRlbSA9IGRlZXBjb3B5KGl0ZW0sIG1lbW8pCi0gICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIHkuYXBwZW5kKGl0ZW0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBsaXN0aXRlcjoKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQogICAgIGlmIGRpY3RpdGVyIGlzIG5vdCBOb25lOgotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKLSAgICAgICAgICAgIGlmIGRlZXA6CisgICAgICAgIGlmIGRlZXA6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKICAgICAgICAgICAgICAgICBrZXkgPSBkZWVwY29weShrZXksIG1lbW8pCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBkZWVwY29weSh2YWx1ZSwgbWVtbykKLSAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgICAgICAgICAgeVtrZXldID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRpY3RpdGVyOgorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCiAgICAgcmV0dXJuIHkKIAotZGVsIGQKLQotZGVsIHR5cGVzCi0KLSMgSGVscGVyIGZvciBpbnN0YW5jZSBjcmVhdGlvbiB3aXRob3V0IGNhbGxpbmcgX19pbml0X18KLWNsYXNzIF9FbXB0eUNsYXNzOgotICAgIHBhc3MKK2RlbCB0eXBlcywgd2Vha3JlZiwgUHlTdHJpbmdNYXAKZGlmZiAtLWdpdCBhL0xpYi9jcnlwdC5weSBiL0xpYi9jcnlwdC5weQppbmRleCA0OWFiOTZlLi5mYmM1ZjRjIDEwMDY0NAotLS0gYS9MaWIvY3J5cHQucHkKKysrIGIvTGliL2NyeXB0LnB5CkBAIC01NCw5ICs1NCw4IEBACiBNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQogCiBtZXRob2RzID0gW10KLWZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1LCBNRVRIT0RfQ1JZUFQpOgogICAgIF9yZXN1bHQgPSBjcnlwdCgnJywgX21ldGhvZCkKICAgICBpZiBfcmVzdWx0IGFuZCBsZW4oX3Jlc3VsdCkgPT0gX21ldGhvZC50b3RhbF9zaXplOgogICAgICAgICBtZXRob2RzLmFwcGVuZChfbWV0aG9kKQotbWV0aG9kcy5hcHBlbmQoTUVUSE9EX0NSWVBUKQogZGVsIF9yZXN1bHQsIF9tZXRob2QKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGNhNDBlNWUuLjAzNDllMGIgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMTEsMTMgKzExLDE1IEBACiAgICAgICAgICAgICAgICAgIF9fZG9jX18KIGZyb20gX2NzdiBpbXBvcnQgRGlhbGVjdCBhcyBfRGlhbGVjdAogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsgIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCi0gICAgICAgICAgICAiRXJyb3IiLCAiRGlhbGVjdCIsICJfX2RvY19fIiwgImV4Y2VsIiwgImV4Y2VsX3RhYiIsCi0gICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKLSAgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCi0gICAgICAgICAgICAidW5yZWdpc3Rlcl9kaWFsZWN0IiwgIl9fdmVyc2lvbl9fIiwgIkRpY3RSZWFkZXIiLCAiRGljdFdyaXRlciIgXQorX19hbGxfXyA9IFsiUVVPVEVfTUlOSU1BTCIsICJRVU9URV9BTEwiLCAiUVVPVEVfTk9OTlVNRVJJQyIsICJRVU9URV9OT05FIiwKKyAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAorICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKKyAgICAgICAgICAgInJlZ2lzdGVyX2RpYWxlY3QiLCAiZ2V0X2RpYWxlY3QiLCAibGlzdF9kaWFsZWN0cyIsICJTbmlmZmVyIiwKKyAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiLAorICAgICAgICAgICAidW5peF9kaWFsZWN0Il0KIAogY2xhc3MgRGlhbGVjdDoKICAgICAiIiJEZXNjcmliZSBhIENTViBkaWFsZWN0LgpAQCAtMTE1LDcgKzExNyw3IEBACiAgICAgICAgICMgdmFsdWVzCiAgICAgICAgIHdoaWxlIHJvdyA9PSBbXToKICAgICAgICAgICAgIHJvdyA9IG5leHQoc2VsZi5yZWFkZXIpCi0gICAgICAgIGQgPSBkaWN0KHppcChzZWxmLmZpZWxkbmFtZXMsIHJvdykpCisgICAgICAgIGQgPSBPcmRlcmVkRGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQogICAgICAgICBsZiA9IGxlbihzZWxmLmZpZWxkbmFtZXMpCiAgICAgICAgIGxyID0gbGVuKHJvdykKICAgICAgICAgaWYgbGYgPCBscjoKQEAgLTE0Myw3ICsxNDUsNyBAQAogCiAgICAgZGVmIF9kaWN0X3RvX2xpc3Qoc2VsZiwgcm93ZGljdCk6CiAgICAgICAgIGlmIHNlbGYuZXh0cmFzYWN0aW9uID09ICJyYWlzZSI6Ci0gICAgICAgICAgICB3cm9uZ19maWVsZHMgPSBbayBmb3IgayBpbiByb3dkaWN0IGlmIGsgbm90IGluIHNlbGYuZmllbGRuYW1lc10KKyAgICAgICAgICAgIHdyb25nX2ZpZWxkcyA9IHJvd2RpY3Qua2V5cygpIC0gc2VsZi5maWVsZG5hbWVzCiAgICAgICAgICAgICBpZiB3cm9uZ19maWVsZHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGljdCBjb250YWlucyBmaWVsZHMgbm90IGluIGZpZWxkbmFtZXM6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIi5qb2luKFtyZXByKHgpIGZvciB4IGluIHdyb25nX2ZpZWxkc10pKQpAQCAtMjEzLDEwICsyMTUsMTAgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgbWF0Y2hlcyA9IFtdCi0gICAgICAgIGZvciByZXN0ciBpbiAoJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UD1kZWxpbSknLCAjICwiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAotICAgICAgICAgICAgICAgICAgICAgICcoP1A8ZGVsaW0+PlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknLCAgIyAsIi4qPyIKLSAgICAgICAgICAgICAgICAgICAgICAnKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICIuKj8iIChubyBkZWxpbSwgbm8gc3BhY2UpCisgICAgICAgIGZvciByZXN0ciBpbiAocicoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCisgICAgICAgICAgICAgICAgICAgICAgcicoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KScsICAgIyAgIi4qPyIsCisgICAgICAgICAgICAgICAgICAgICAgcicoP1A8ZGVsaW0+PlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknLCAgIyAsIi4qPyIKKyAgICAgICAgICAgICAgICAgICAgICByJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAiLio/IiAobm8gZGVsaW0sIG5vIHNwYWNlKQogICAgICAgICAgICAgcmVnZXhwID0gcmUuY29tcGlsZShyZXN0ciwgcmUuRE9UQUxMIHwgcmUuTVVMVElMSU5FKQogICAgICAgICAgICAgbWF0Y2hlcyA9IHJlZ2V4cC5maW5kYWxsKGRhdGEpCiAgICAgICAgICAgICBpZiBtYXRjaGVzOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggMGQ4NjA3OC4uMWM5ZDNhNSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0xNiw3ICsxNiw3IEBACiBpZiBfX3ZlcnNpb25fXyAhPSBfY3R5cGVzX3ZlcnNpb246CiAgICAgcmFpc2UgRXhjZXB0aW9uKCJWZXJzaW9uIG51bWJlciBtaXNtYXRjaCIsIF9fdmVyc2lvbl9fLCBfY3R5cGVzX3ZlcnNpb24pCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBGb3JtYXRFcnJvcgogCiBERUZBVUxUX01PREUgPSBSVExEX0xPQ0FMCkBAIC0xMDMsMTIgKzEwMyw5IEBACiAgICAgICAgIF9jX2Z1bmN0eXBlX2NhY2hlWyhyZXN0eXBlLCBhcmd0eXBlcywgZmxhZ3MpXSA9IENGdW5jdGlvblR5cGUKICAgICAgICAgcmV0dXJuIENGdW5jdGlvblR5cGUKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IExvYWRMaWJyYXJ5IGFzIF9kbG9wZW4KICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IEZVTkNGTEFHX1NURENBTEwgYXMgX0ZVTkNGTEFHX1NURENBTEwKLSAgICBpZiBfb3MubmFtZSA9PSAiY2UiOgotICAgICAgICAjICdjZScgZG9lc24ndCBoYXZlIHRoZSBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbgotICAgICAgICBfRlVOQ0ZMQUdfU1REQ0FMTCA9IF9GVU5DRkxBR19DREVDTAogCiAgICAgX3dpbl9mdW5jdHlwZV9jYWNoZSA9IHt9CiAgICAgZGVmIFdJTkZVTkNUWVBFKHJlc3R5cGUsICphcmd0eXBlcywgKiprdyk6CkBAIC0yNjIsNyArMjU5LDcgQEAKIGRlZiBfcmVzZXRfY2FjaGUoKToKICAgICBfcG9pbnRlcl90eXBlX2NhY2hlLmNsZWFyKCkKICAgICBfY19mdW5jdHlwZV9jYWNoZS5jbGVhcigpCi0gICAgaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgIGlmIF9vcy5uYW1lID09ICJudCI6CiAgICAgICAgIF93aW5fZnVuY3R5cGVfY2FjaGUuY2xlYXIoKQogICAgICMgX1NpbXBsZUNEYXRhLmNfd2NoYXJfcF9mcm9tX3BhcmFtCiAgICAgUE9JTlRFUihjX3djaGFyKS5mcm9tX3BhcmFtID0gY193Y2hhcl9wLmZyb21fcGFyYW0KQEAgLTM3NCw3ICszNzEsNyBAQAogICAgICIiIgogICAgIF9mdW5jX2ZsYWdzXyA9IF9GVU5DRkxBR19DREVDTCB8IF9GVU5DRkxBR19QWVRIT05BUEkKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKIAogICAgIGNsYXNzIFdpbkRMTChDRExMKToKICAgICAgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGxsIGV4cG9ydGluZyBmdW5jdGlvbnMgdXNpbmcgdGhlCkBAIC00MjcsNyArNDI0LDcgQEAKIGNkbGwgPSBMaWJyYXJ5TG9hZGVyKENETEwpCiBweWRsbCA9IExpYnJhcnlMb2FkZXIoUHlETEwpCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgcHl0aG9uYXBpID0gUHlETEwoInB5dGhvbiBkbGwiLCBOb25lLCBfc3lzLmRsbGhhbmRsZSkKIGVsaWYgX3N5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKICAgICBweXRob25hcGkgPSBQeURMTCgibGlicHl0aG9uJWQuJWQuZGxsIiAlIF9zeXMudmVyc2lvbl9pbmZvWzoyXSkKQEAgLTQzNSw3ICs0MzIsNyBAQAogICAgIHB5dGhvbmFwaSA9IFB5RExMKE5vbmUpCiAKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICB3aW5kbGwgPSBMaWJyYXJ5TG9hZGVyKFdpbkRMTCkKICAgICBvbGVkbGwgPSBMaWJyYXJ5TG9hZGVyKE9sZURMTCkKIApAQCAtNTAzLDcgKzUwMCw3IEBACiAgICAgICAgIHJldHVybiBfd3N0cmluZ19hdChwdHIsIHNpemUpCiAKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOiAjIENPTSBzdHVmZgoraWYgX29zLm5hbWUgPT0gIm50IjogIyBDT00gc3R1ZmYKICAgICBkZWYgRGxsR2V0Q2xhc3NPYmplY3QocmNsc2lkLCByaWlkLCBwcHYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjY29tID0gX19pbXBvcnRfXygiY29tdHlwZXMuc2VydmVyLmlucHJvY3NlcnZlciIsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnKiddKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CmluZGV4IGIzOWQ4MmMuLmM3MWQ3MWQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogCi1pbXBvcnQgY3R5cGVzCiBpbXBvcnQgX2N0eXBlc190ZXN0CiAKIGNsYXNzIEJJVFMoU3RydWN0dXJlKToKQEAgLTE5Nyw3ICsxOTYsNyBAQAogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoImEiLCBjX2J5dGUsIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgKCJiIiwgY19pbnQsIDQpXQotICAgICAgICBpZiBvcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkqMikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpKQpAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgICAgICMgTVNWQyBkb2VzIE5PVCBjb21iaW5lIGNfc2hvcnQgYW5kIGNfaW50IGludG8gb25lIGZpZWxkLCBHQ0MKICAgICAgICAgIyBkb2VzICh1bmxlc3MgR0NDIGlzIHJ1biB3aXRoICctbW1zLWJpdGZpZWxkcycgd2hpY2gKICAgICAgICAgIyBwcm9kdWNlcyBjb2RlIGNvbXBhdGlibGUgd2l0aCBNU1ZDKS4KLSAgICAgICAgaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpICogNCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpICogMikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CmluZGV4IDk0YjBiODkuLmI5OWZkY2IgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQpAQCAtNjksNSArNjksNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmxleGlzdHModGVzdC5zdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IG9ubHkgdmFsaWQgZm9yIExpbnV4JykKK2NsYXNzIExpYlBhdGhGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmluZF9vbl9saWJwYXRoKHNlbGYpOgorICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICBpbXBvcnQgdGVtcGZpbGUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2djYycsICctLXZlcnNpb24nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgICAgICBvdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnZ2NjLCBuZWVkZWQgZm9yIHRlc3QsIG5vdCBhdmFpbGFibGUnKQorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIGQ6CisgICAgICAgICAgICAjIGNyZWF0ZSBhbiBlbXB0eSB0ZW1wb3JhcnkgZmlsZQorICAgICAgICAgICAgc3JjbmFtZSA9IG9zLnBhdGguam9pbihkLCAnZHVtbXkuYycpCisgICAgICAgICAgICBsaWJuYW1lID0gJ3B5X2N0eXBlc190ZXN0X2R1bW15JworICAgICAgICAgICAgZHN0bmFtZSA9IG9zLnBhdGguam9pbihkLCAnbGliJXMuc28nICUgbGlibmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihzcmNuYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNyY25hbWUpKQorICAgICAgICAgICAgIyBjb21waWxlIHRoZSBmaWxlIHRvIGEgc2hhcmVkIGxpYnJhcnkKKyAgICAgICAgICAgIGNtZCA9IFsnZ2NjJywgJy1vJywgZHN0bmFtZSwgJy0tc2hhcmVkJywKKyAgICAgICAgICAgICAgICAgICAnLVdsLC1zb25hbWUsbGliJXMuc28nICUgbGlibmFtZSwgc3JjbmFtZV0KKyAgICAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkc3RuYW1lKSkKKyAgICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgdGhlIC5zbyBjYW4ndCBiZSBmb3VuZCAoc2luY2Ugbm90IGluCisgICAgICAgICAgICAjIExEX0xJQlJBUllfUEFUSCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbmRfbGlicmFyeShsaWJuYW1lKSkKKyAgICAgICAgICAgICMgbm93IGFkZCB0aGUgbG9jYXRpb24gdG8gTERfTElCUkFSWV9QQVRICisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgICAgIEtFWSA9ICdMRF9MSUJSQVJZX1BBVEgnCisgICAgICAgICAgICAgICAgaWYgS0VZIG5vdCBpbiBlbnY6CisgICAgICAgICAgICAgICAgICAgIHYgPSBkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdiA9ICclczolcycgJSAoZW52W0tFWV0sIGQpCisgICAgICAgICAgICAgICAgZW52LnNldChLRVksIHYpCisgICAgICAgICAgICAgICAgIyBub3cgY2hlY2sgdGhhdCB0aGUgLnNvIGNhbiBiZSBmb3VuZCAoc2luY2UgaW4KKyAgICAgICAgICAgICAgICAjIExEX0xJQlJBUllfUEFUSCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRfbGlicmFyeShsaWJuYW1lKSwgJ2xpYiVzLnNvJyAlIGxpYm5hbWUpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CmluZGV4IGZmMjVjOGYuLmYzNDczNGIgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCBvcywgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIAogdHJ5OgpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAjIHBvc3NpYmxlLCBhcyBpbiBDLCB0byBjYWxsIGNkZWNsIGZ1bmN0aW9ucyB3aXRoIG1vcmUgcGFyYW1ldGVycy4KICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgMSwgMiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjKDEsIDIsIDMsIDQsIDUsIDYpLCAzKQotICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFIGFuZCBvcy5uYW1lICE9ICJjZSI6CisgICAgICAgIGlmIG5vdCBXSU5GVU5DVFlQRSBpcyBDRlVOQ1RZUEU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHMsIDEsIDIsIDMpCiAKICAgICBkZWYgdGVzdF9zdHJ1Y3R1cmVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKaW5kZXggMjg0NjhjMS4uNDU1NzFmMyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CkBAIC0xMSw4ICsxMSw2IEBACiAgICAgZ2xvYmFsIGxpYmNfbmFtZQogICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgbGliY19uYW1lID0gZmluZF9saWJyYXJ5KCJjIikKLSAgICBlbGlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgbGliY19uYW1lID0gImNvcmVkbGwiCiAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CiAgICAgICAgIGxpYmNfbmFtZSA9ICJjeWd3aW4xLmRsbCIKICAgICBlbHNlOgpAQCAtNDksOCArNDcsOCBAQAogICAgICAgICAgICAgICAgIGNkbGwuTG9hZExpYnJhcnkobGliKQogICAgICAgICAgICAgICAgIENETEwobGliKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSBpbiAoIm50IiwgImNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cyAoTlQvQ0UpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cycpCiAgICAgZGVmIHRlc3RfbG9hZF9saWJyYXJ5KHNlbGYpOgogICAgICAgICAjIENSVCBpcyBubyBsb25nZXIgZGlyZWN0bHkgbG9hZGFibGUuIFNlZSBpc3N1ZTIzNjA2IGZvciB0aGUKICAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCkBAIC02NCwxNCArNjIsOSBAQAogICAgICAgICAgICAgd2luZGxsWyJrZXJuZWwzMiJdLkdldE1vZHVsZUhhbmRsZVcKICAgICAgICAgICAgIHdpbmRsbC5Mb2FkTGlicmFyeSgia2VybmVsMzIiKS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICBXaW5ETEwoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwotICAgICAgICBlbGlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgICAgIHdpbmRsbC5jb3JlZGxsLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIHdpbmRsbFsiY29yZWRsbCJdLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIHdpbmRsbC5Mb2FkTGlicmFyeSgiY29yZWRsbCIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIFdpbkRMTCgiY29yZWRsbCIpLkdldE1vZHVsZUhhbmRsZVcKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfb3JkaW5hbF9mdW5jdGlvbnMoc2VsZik6CiAgICAgICAgIGltcG9ydCBfY3R5cGVzX3Rlc3QKICAgICAgICAgZGxsID0gV2luRExMKF9jdHlwZXNfdGVzdC5fX2ZpbGVfXykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CmluZGV4IGVmN2IyMGIuLjE5ZTNkYzEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQpAQCAtNTQsNyArNTQsNyBAQAogCiAnJycKIAotaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0LCBzeXMKK2ltcG9ydCB1bml0dGVzdCwgZG9jdGVzdAogCiBpbXBvcnQgY3R5cGVzLnRlc3QudGVzdF9vYmplY3RzCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CmluZGV4IGU1NmJjY2YuLjM2M2Y1ODYgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCB1bml0dGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzLnRlc3QgaW1wb3J0IG5lZWRfc3ltYm9sCiAKIGNsYXNzIFNpbXBsZVR5cGVzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDksNyArNDksNyBAQAogCiAgICAgIyBYWFggUmVwbGFjZSBieSBjX2NoYXJfcCB0ZXN0cwogICAgIGRlZiB0ZXN0X2NzdHJpbmdzKHNlbGYpOgotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AsIGJ5cmVmCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX2NoYXJfcAogCiAgICAgICAgICMgY19jaGFyX3AuZnJvbV9wYXJhbSBvbiBhIFB5dGhvbiBTdHJpbmcgcGFja3MgdGhlIHN0cmluZwogICAgICAgICAjIGludG8gYSBjcGFyYW0gb2JqZWN0CkBAIC02OCw3ICs2OCw3IEBACiAKICAgICBAbmVlZF9zeW1ib2woJ2Nfd2NoYXJfcCcpCiAgICAgZGVmIHRlc3RfY3dfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGJ5cmVmLCBjX3djaGFyX3AKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfd2NoYXJfcAogCiAgICAgICAgIGNfd2NoYXJfcC5mcm9tX3BhcmFtKCIxMjMiKQogCkBAIC05OCw3ICs5OCw3IEBACiAgICAgZGVmIHRlc3RfYnlyZWZfcG9pbnRlcihzZWxmKToKICAgICAgICAgIyBUaGUgZnJvbV9wYXJhbSBjbGFzcyBtZXRob2Qgb2YgUE9JTlRFUih0eXApIGNsYXNzZXMgYWNjZXB0cyB3aGF0IGlzCiAgICAgICAgICMgcmV0dXJuZWQgYnkgYnlyZWYob2JqKSwgaXQgdHlwZShvYmopID09IHR5cAotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19zaG9ydCwgY191aW50LCBjX2ludCwgY19sb25nLCBwb2ludGVyLCBQT0lOVEVSLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19zaG9ydCwgY191aW50LCBjX2ludCwgY19sb25nLCBQT0lOVEVSLCBieXJlZgogICAgICAgICBMUElOVCA9IFBPSU5URVIoY19pbnQpCiAKICAgICAgICAgTFBJTlQuZnJvbV9wYXJhbShieXJlZihjX2ludCg0MikpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKaW5kZXggMzJmODAyYy4uZDY4Mzk3ZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgotaW1wb3J0IHJlLCBzdHJ1Y3QsIHN5cworaW1wb3J0IHJlLCBzeXMKIAogaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKICAgICBUSElTX0VORElBTiA9ICI8IgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQppbmRleCA5M2ViYTZiLi4xOTc0ZjQwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCBvcwogCiBpbXBvcnQgX2N0eXBlc190ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKaW5kZXggZjliNWU5Ny4uNGNlYWNiYyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKQEAgLTIsNyArMiw2IEBACiAKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CmluZGV4IGM0YTY1MWMuLjhmNmZlNWYgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQpAQCAtMzI2LDExICszMjYsOCBAQAogCiAgICAgICAgIGNscywgbXNnID0gc2VsZi5nZXRfZXhjZXB0KFBlcnNvbiwgYiJTb21lb25lIiwgKGIiYSIsIGIiYiIsIGIiYyIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscywgUnVudGltZUVycm9yKQotICAgICAgICBpZiBpc3N1YmNsYXNzKEV4Y2VwdGlvbiwgb2JqZWN0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCAiKFBob25lKSBUeXBlRXJyb3I6IHRvbyBtYW55IGluaXRpYWxpemVycyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFBob25lKSA8Y2xhc3MgJ1R5cGVFcnJvcic+OiB0b28gbWFueSBpbml0aWFsaXplcnMiKQogCiAgICAgZGVmIHRlc3RfaHVnZV9maWVsZF9uYW1lKHNlbGYpOgogICAgICAgICAjIGlzc3VlMTI4ODE6IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggNWEzYTQ3Zi4uZTcxYjQ4MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNzksOSArNzksOSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoKGVudHJ5Lm5hbWUuZGVjb2RlKCJhc2NpaSIpLCBlbnRyeS5zaXplKSkKIAotICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDE2MSksCi0gICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDE2MSksCisgICAgICAgIGV4cGVjdGVkID0gWygiX19oZWxsb19fIiwgMTM5KSwKKyAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fIiwgLTEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXy5zcGFtIiwgMTM5KSwKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLCBleHBlY3RlZCwgIlB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgZXhhbXBsZSAiCiAgICAgICAgICAgICAiaW4gRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBtYXkgYmUgb3V0IG9mIGRhdGUiKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDc2ODRlYWIuLjMzOWFlOGEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTY3LDE2ICs2Nyw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGZuYW1lCiAgICAgICAgIHJldHVybiBOb25lCiAKLWlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAjIHNlYXJjaCBwYXRoIGFjY29yZGluZyB0byBNU0ROOgotICAgICMgLSBhYnNvbHV0ZSBwYXRoIHNwZWNpZmllZCBieSBmaWxlbmFtZQotICAgICMgLSBUaGUgLmV4ZSBsYXVuY2ggZGlyZWN0b3J5Ci0gICAgIyAtIHRoZSBXaW5kb3dzIGRpcmVjdG9yeQotICAgICMgLSBST00gZGxsIGZpbGVzICh3aGVyZSBhcmUgdGhleT8pCi0gICAgIyAtIE9FTSBzcGVjaWZpZWQgc2VhcmNoIHBhdGg6IEhLTE1cTG9hZGVyXFN5c3RlbVBhdGgKLSAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICByZXR1cm4gbmFtZQotCiBpZiBvcy5uYW1lID09ICJwb3NpeCIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICBmcm9tIGN0eXBlcy5tYWNob2xpYi5keWxkIGltcG9ydCBkeWxkX2ZpbmQgYXMgX2R5bGRfZmluZAogICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CkBAIC0yNzEsOCArMjYxLDggQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKLSAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICByZWdleCA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycKKyAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUocmVnZXggJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLApAQCAtMjg1LDggKzI3NSwzMiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgICAgIGRlZiBfZmluZExpYl9sZChuYW1lKToKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4IGZvciB3aHkgdGhpcyBpcyBuZWVkZWQKKyAgICAgICAgICAgIGV4cHIgPSByJ1teXChcKVxzXSpsaWIlc1wuW15cKFwpXHNdKicgJSByZS5lc2NhcGUobmFtZSkKKyAgICAgICAgICAgIGNtZCA9IFsnbGQnLCAnLXQnXQorICAgICAgICAgICAgbGlicGF0aCA9IG9zLmVudmlyb24uZ2V0KCdMRF9MSUJSQVJZX1BBVEgnKQorICAgICAgICAgICAgaWYgbGlicGF0aDoKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBsaWJwYXRoLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctTCcsIGRdKQorICAgICAgICAgICAgY21kLmV4dGVuZChbJy1vJywgb3MuZGV2bnVsbCwgJy1sJXMnICUgbmFtZV0pCisgICAgICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGV4cHIsIG9zLmZzZGVjb2RlKG91dCkpCisgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZ3JvdXAoMCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwYXNzICAjIHJlc3VsdCB3aWxsIGJlIE5vbmUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKwogICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4CisgICAgICAgICAgICByZXR1cm4gX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSkgb3IgXAorICAgICAgICAgICAgICAgICAgIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSBvciBfZmluZExpYl9sZChuYW1lKSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0ZXN0IGNvZGUKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCBhMjE3OGM3Li41ZDU1NzljIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xNTIsMTIgKzE1MiwyNiBAQAogICAgIGRudW0gPSBfZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkCiAgICAgcmV0dXJuIF90aW1lLnN0cnVjdF90aW1lKCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZGF5LCBkbnVtLCBkc3RmbGFnKSkKIAotZGVmIF9mb3JtYXRfdGltZShoaCwgbW0sIHNzLCB1cyk6Ci0gICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgotICAgIHJlc3VsdCA9ICIlMDJkOiUwMmQ6JTAyZCIgJSAoaGgsIG1tLCBzcykKLSAgICBpZiB1czoKLSAgICAgICAgcmVzdWx0ICs9ICIuJTA2ZCIgJSB1cwotICAgIHJldHVybiByZXN1bHQKK2RlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMsIHRpbWVzcGVjPSdhdXRvJyk6CisgICAgc3BlY3MgPSB7CisgICAgICAgICdob3Vycyc6ICd7OjAyZH0nLAorICAgICAgICAnbWludXRlcyc6ICd7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0nLAorICAgICAgICAnbWlsbGlzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDNkfScsCisgICAgICAgICdtaWNyb3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0uezowNmR9JworICAgIH0KKworICAgIGlmIHRpbWVzcGVjID09ICdhdXRvJzoKKyAgICAgICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgorICAgICAgICB0aW1lc3BlYyA9ICdtaWNyb3NlY29uZHMnIGlmIHVzIGVsc2UgJ3NlY29uZHMnCisgICAgZWxpZiB0aW1lc3BlYyA9PSAnbWlsbGlzZWNvbmRzJzoKKyAgICAgICAgdXMgLy89IDEwMDAKKyAgICB0cnk6CisgICAgICAgIGZtdCA9IHNwZWNzW3RpbWVzcGVjXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5rbm93biB0aW1lc3BlYyB2YWx1ZScpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQoaGgsIG1tLCBzcywgdXMpCiAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6CkBAIC0yMzYsMTEgKzI1MCwxMSBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKG9mZnNldCwgdGltZWRlbHRhKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0emluZm8uJXMoKSBtdXN0IHJldHVybiBOb25lICIKICAgICAgICAgICAgICAgICAgICAgICAgICJvciB0aW1lZGVsdGEsIG5vdCAnJXMnIiAlIChuYW1lLCB0eXBlKG9mZnNldCkpKQotICAgIGlmIG9mZnNldCAlIHRpbWVkZWx0YShtaW51dGVzPTEpIG9yIG9mZnNldC5taWNyb3NlY29uZHM6CisgICAgaWYgb2Zmc2V0Lm1pY3Jvc2Vjb25kczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gYSB3aG9sZSBudW1iZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBtaW51dGVzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHNlY29uZHMsIGdvdCAlcyIgJSAobmFtZSwgb2Zmc2V0KSkKICAgICBpZiBub3QgLXRpbWVkZWx0YSgxKSA8IG9mZnNldCA8IHRpbWVkZWx0YSgxKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICItdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgdGltZWRlbHRhKGhvdXJzPTI0KSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQogCkBAIC0yNzQsNyArMjg4LDcgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltLCBkYXkpCiAgICAgcmV0dXJuIHllYXIsIG1vbnRoLCBkYXkKIAotZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpOgorZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpOgogICAgIGhvdXIgPSBfY2hlY2tfaW50X2ZpZWxkKGhvdXIpCiAgICAgbWludXRlID0gX2NoZWNrX2ludF9maWVsZChtaW51dGUpCiAgICAgc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChzZWNvbmQpCkBAIC0yODcsNyArMzAxLDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2Vjb25kIG11c3QgYmUgaW4gMC4uNTknLCBzZWNvbmQpCiAgICAgaWYgbm90IDAgPD0gbWljcm9zZWNvbmQgPD0gOTk5OTk5OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OScsIG1pY3Jvc2Vjb25kKQotICAgIHJldHVybiBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQKKyAgICBpZiBmb2xkIG5vdCBpbiAoMCwgMSk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxJywgZm9sZCkKKyAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkCiAKIGRlZiBfY2hlY2tfdHppbmZvX2FyZyh0eik6CiAgICAgaWYgdHogaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgpAQCAtMzE2LDYgKzMzMiw3IEBACiAKICAgICByZXR1cm4gcQogCisKIGNsYXNzIHRpbWVkZWx0YToKICAgICAiIiJSZXByZXNlbnQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgb2JqZWN0cy4KIApAQCAtOTMyLDYgKzk0OSw3IEBACiBkYXRlLm1heCA9IGRhdGUoOTk5OSwgMTIsIDMxKQogZGF0ZS5yZXNvbHV0aW9uID0gdGltZWRlbHRhKGRheXM9MSkKIAorCiBjbGFzcyB0emluZm86CiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gY2xhc3Nlcy4KIApAQCAtMTAyMywxMSArMTA0MSwxMSBAQAogICAgIGRzdCgpCiAKICAgICBQcm9wZXJ0aWVzIChyZWFkb25seSk6Ci0gICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8KKyAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZAogICAgICIiIgotICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJworICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJywgJ19mb2xkJwogCi0gICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgorICAgIGRlZiBfX25ld19fKGNscywgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KIAogICAgICAgICBBcmd1bWVudHM6CkBAIC0xMDM1LDE1ICsxMDUzLDE2IEBACiAgICAgICAgIGhvdXIsIG1pbnV0ZSAocmVxdWlyZWQpCiAgICAgICAgIHNlY29uZCwgbWljcm9zZWNvbmQgKGRlZmF1bHQgdG8gemVybykKICAgICAgICAgdHppbmZvIChkZWZhdWx0IHRvIE5vbmUpCisgICAgICAgIGZvbGQgKGtleXdvcmQgb25seSwgZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdIDwgMjQ6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQgaG91clswXSYweDdGIDwgMjQ6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKGhvdXIsIG1pbnV0ZSBvciBOb25lKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kID0gX2NoZWNrX3RpbWVfZmllbGRzKAotICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKQEAgLTEwNTIsNiArMTA3MSw3IEBACiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gbWljcm9zZWNvbmQKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKKyAgICAgICAgc2VsZi5fZm9sZCA9IGZvbGQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICMgUmVhZC1vbmx5IGZpZWxkIGFjY2Vzc29ycwpAQCAtMTA4MCw2ICsxMTAwLDEwIEBACiAgICAgICAgICIiInRpbWV6b25lIGluZm8gb2JqZWN0IiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90emluZm8KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZAorCiAgICAgIyBTdGFuZGFyZCBjb252ZXJzaW9ucywgX19oYXNoX18gKGFuZCBoZWxwZXJzKQogCiAgICAgIyBDb21wYXJpc29ucyBvZiB0aW1lIG9iamVjdHMgd2l0aCBvdGhlci4KQEAgLTExNDUsOSArMTE2OSwxMyBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIiIiSGFzaC4iIiIKICAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6Ci0gICAgICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuZm9sZDoKKyAgICAgICAgICAgICAgICB0ID0gc2VsZi5yZXBsYWNlKGZvbGQ9MCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYKKyAgICAgICAgICAgIHR6b2ZmID0gdC51dGNvZmZzZXQoKQogICAgICAgICAgICAgaWYgbm90IHR6b2ZmOiAgIyB6ZXJvIG9yIE5vbmUKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godC5fZ2V0c3RhdGUoKVswXSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKGhvdXJzPTEpKQpAQCAtMTE3MSwxMCArMTE5OSwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzaWduID0gIisiCiAgICAgICAgICAgICBoaCwgbW0gPSBkaXZtb2Qob2ZmLCB0aW1lZGVsdGEoaG91cnM9MSkpCi0gICAgICAgICAgICBhc3NlcnQgbm90IG1tICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCi0gICAgICAgICAgICBtbSAvLz0gdGltZWRlbHRhKG1pbnV0ZXM9MSkKKyAgICAgICAgICAgIG1tLCBzcyA9IGRpdm1vZChtbSwgdGltZWRlbHRhKG1pbnV0ZXM9MSkpCiAgICAgICAgICAgICBhc3NlcnQgMCA8PSBoaCA8IDI0CiAgICAgICAgICAgICBvZmYgPSAiJXMlMDJkJXMlMDJkIiAlIChzaWduLCBoaCwgc2VwLCBtbSkKKyAgICAgICAgICAgIGlmIHNzOgorICAgICAgICAgICAgICAgIG9mZiArPSAnOiUwMmQnICUgc3Muc2Vjb25kcwogICAgICAgICByZXR1cm4gb2ZmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC0xMTkxLDE2ICsxMjIwLDIyIEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCi0gICAgZGVmIGlzb2Zvcm1hdChzZWxmKToKKyAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIElTTy4KIAotICAgICAgICBUaGlzIGlzICdISDpNTTpTUy5tbW1tbW0reno6enonLCBvciAnSEg6TU06U1Mreno6enonIGlmCi0gICAgICAgIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKyAgICAgICAgVGhlIGZ1bGwgZm9ybWF0IGlzICdISDpNTTpTUy5tbW1tbW0reno6enonLiBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbAorICAgICAgICBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorCisgICAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICAgICAgIHRlcm1zIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuCiAgICAgICAgICIiIgogICAgICAgICBzID0gX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpCiAgICAgICAgIHR6ID0gc2VsZi5fdHpzdHIoKQogICAgICAgICBpZiB0ejoKICAgICAgICAgICAgIHMgKz0gdHoKQEAgLTEyNjYsNyArMTMwMSw3IEBACiAgICAgICAgIHJldHVybiBvZmZzZXQKIAogICAgIGRlZiByZXBsYWNlKHNlbGYsIGhvdXI9Tm9uZSwgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLAotICAgICAgICAgICAgICAgIHR6aW5mbz1UcnVlKToKKyAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSwgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHRpbWUgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4iIiIKICAgICAgICAgaWYgaG91ciBpcyBOb25lOgogICAgICAgICAgICAgaG91ciA9IHNlbGYuaG91cgpAQCAtMTI3OCwxNCArMTMxMywxOSBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLl9mb2xkCisgICAgICAgIHJldHVybiB0aW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3NlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAorICAgICAgICBoID0gc2VsZi5faG91cgorICAgICAgICBpZiBzZWxmLl9mb2xkIGFuZCBwcm90b2NvbCA+IDM6CisgICAgICAgICAgICBoICs9IDEyOAorICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbaCwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1czEsIHVzMiwgdXMzXSkKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gKGJhc2VzdGF0ZSwpCkBAIC0xMjk1LDEyICsxMzM1LDIxIEBACiAgICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nLCB0emluZm8pOgogICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnIikKLSAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKKyAgICAgICAgaCwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKKyAgICAgICAgaWYgaCA+IDEyNzoKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAxCisgICAgICAgICAgICBzZWxmLl9ob3VyID0gaCAtIDEyOAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDAKKyAgICAgICAgICAgIHNlbGYuX2hvdXIgPSBoCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCisKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fX3JlZHVjZV9leF9fKDIpCiAKIF90aW1lX2NsYXNzID0gdGltZSAgIyBzbyBmdW5jdGlvbnMgdy8gYXJncyBuYW1lZCAidGltZSIgY2FuIGdldCBhdCB0aGUgY2xhc3MKIApAQCAtMTMxNywxNiArMTM2NiwxNiBAQAogICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgdGltZS5fX3Nsb3RzX18KIAogICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLAotICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdIDw9IDEyOgorICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApOgorICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0mMHg3RiA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCkBAIC0xMzM4LDYgKzEzODcsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEzNjYsNiArMTQxNiwxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZnJvbXRpbWVzdGFtcChjbHMsIHQsIHV0YywgdHopOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4KQEAgLTEzODQsNyArMTQzOCwyMyBAQAogICAgICAgICBjb252ZXJ0ZXIgPSBfdGltZS5nbXRpbWUgaWYgdXRjIGVsc2UgX3RpbWUubG9jYWx0aW1lCiAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MsIHdlZWtkYXksIGpkYXksIGRzdCA9IGNvbnZlcnRlcih0KQogICAgICAgICBzcyA9IG1pbihzcywgNTkpICAgICMgY2xhbXAgb3V0IGxlYXAgc2Vjb25kcyBpZiB0aGUgcGxhdGZvcm0gaGFzIHRoZW0KLSAgICAgICAgcmV0dXJuIGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIHJlc3VsdCA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICAjIEFzIG9mIHZlcnNpb24gMjAxNWYgbWF4IGZvbGQgaW4gSUFOQSBkYXRhYmFzZSBpcworICAgICAgICAgICAgIyAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4KKyAgICAgICAgICAgICMgTGV0J3MgcHJvYmUgMjQgaG91cnMgaW4gdGhlIHBhc3QgdG8gZGV0ZWN0IGEgdHJhbnNpdGlvbjoKKyAgICAgICAgICAgIG1heF9mb2xkX3NlY29uZHMgPSAyNCAqIDM2MDAKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBjb252ZXJ0ZXIodCAtIG1heF9mb2xkX3NlY29uZHMpWzo2XQorICAgICAgICAgICAgcHJvYmUxID0gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgICAgIHRyYW5zID0gcmVzdWx0IC0gcHJvYmUxIC0gdGltZWRlbHRhKDAsIG1heF9mb2xkX3NlY29uZHMpCisgICAgICAgICAgICBpZiB0cmFucy5kYXlzIDwgMDoKKyAgICAgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgKyB0cmFucyAvLyB0aW1lZGVsdGEoMCwgMSkpWzo2XQorICAgICAgICAgICAgICAgIHByb2JlMiA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICAgICAgaWYgcHJvYmUyID09IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Ll9mb2xkID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tdGltZXN0YW1wKGNscywgdCwgdHo9Tm9uZSk6CkBAIC0xMzk0LDEwICsxNDY0LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6KQogCi0gICAgICAgIHJlc3VsdCA9IGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCi0gICAgICAgIGlmIHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgcmV0dXJuIGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdXRjZnJvbXRpbWVzdGFtcChjbHMsIHQpOgpAQCAtMTQxNywxNSArMTQ4NCwxNyBAQAogICAgICAgICByZXR1cm4gY2xzLnV0Y2Zyb210aW1lc3RhbXAodCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSk6CisgICAgZGVmIGNvbWJpbmUoY2xzLCBkYXRlLCB0aW1lLCB0emluZm89VHJ1ZSk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgZ2l2ZW4gZGF0ZSBhbmQgYSBnaXZlbiB0aW1lLiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0ZSwgX2RhdGVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRlIGFyZ3VtZW50IG11c3QgYmUgYSBkYXRlIGluc3RhbmNlIikKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZSwgX3RpbWVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aW1lIGFyZ3VtZW50IG11c3QgYmUgYSB0aW1lIGluc3RhbmNlIikKKyAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CisgICAgICAgICAgICB0emluZm8gPSB0aW1lLnR6aW5mbwogICAgICAgICByZXR1cm4gY2xzKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXksCiAgICAgICAgICAgICAgICAgICAgdGltZS5ob3VyLCB0aW1lLm1pbnV0ZSwgdGltZS5zZWNvbmQsIHRpbWUubWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgdGltZS50emluZm8pCisgICAgICAgICAgICAgICAgICAgdHppbmZvLCBmb2xkPXRpbWUuZm9sZCkKIAogICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gbG9jYWwgdGltZSB0dXBsZSBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iCkBAIC0xNDQwLDEyICsxNTA5LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KQogCisgICAgZGVmIF9ta3RpbWUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBpbnRlZ2VyIFBPU0lYIHRpbWVzdGFtcC4iIiIKKyAgICAgICAgZXBvY2ggPSBkYXRldGltZSgxOTcwLCAxLCAxKQorICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgIHQgPSAoc2VsZiAtIGVwb2NoKSAvLyB0aW1lZGVsdGEoMCwgMSkKKyAgICAgICAgZGVmIGxvY2FsKHUpOgorICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IF90aW1lLmxvY2FsdGltZSh1KVs6Nl0KKyAgICAgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcykgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisKKyAgICAgICAgIyBPdXIgZ29hbCBpcyB0byBzb2x2ZSB0ID0gbG9jYWwodSkgZm9yIHUuCisgICAgICAgIGEgPSBsb2NhbCh0KSAtIHQKKyAgICAgICAgdTEgPSB0IC0gYQorICAgICAgICB0MSA9IGxvY2FsKHUxKQorICAgICAgICBpZiB0MSA9PSB0OgorICAgICAgICAgICAgIyBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICAgICMgTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAgICAjIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLgorICAgICAgICAgICAgdTIgPSB1MSArICgtbWF4X2ZvbGRfc2Vjb25kcywgbWF4X2ZvbGRfc2Vjb25kcylbc2VsZi5mb2xkXQorICAgICAgICAgICAgYiA9IGxvY2FsKHUyKSAtIHUyCisgICAgICAgICAgICBpZiBhID09IGI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHUxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiID0gdDEgLSB1MQorICAgICAgICAgICAgYXNzZXJ0IGEgIT0gYgorICAgICAgICB1MiA9IHQgLSBiCisgICAgICAgIHQyID0gbG9jYWwodTIpCisgICAgICAgIGlmIHQyID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTIKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICAjIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAgICAjIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4KKyAgICAgICAgcmV0dXJuIChtYXgsIG1pbilbc2VsZi5mb2xkXSh1MSwgdTIpCisKKwogICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgICAgIHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICAgICAgcmV0dXJuIHMgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gKHNlbGYgLSBfRVBPQ0gpLnRvdGFsX3NlY29uZHMoKQogCkBAIC0xNDY0LDE1ICsxNTY3LDE2IEBACiAKICAgICBkZWYgdGltZShzZWxmKToKICAgICAgICAgIlJldHVybiB0aGUgdGltZSBwYXJ0LCB3aXRoIHR6aW5mbyBOb25lLiIKLSAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpCisgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLCBmb2xkPXNlbGYuZm9sZCkKIAogICAgIGRlZiB0aW1ldHooc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCBzYW1lIHR6aW5mby4iCiAgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3R6aW5mbywgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCB5ZWFyPU5vbmUsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPU5vbmUsCi0gICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSwKKyAgICAgICAgICAgICAgICAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgZGF0ZXRpbWUgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4iIiIKICAgICAgICAgaWYgeWVhciBpcyBOb25lOgogICAgICAgICAgICAgeWVhciA9IHNlbGYueWVhcgpAQCAtMTQ5MCw0NiArMTU5NCw0NSBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuZm9sZAorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKKworICAgIGRlZiBfbG9jYWxfdGltZXpvbmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICB0cyA9IHNlbGYuX21rdGltZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQorICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgorICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQorICAgICAgICAgICAgem9uZSA9IF90aW1lLnN0cmZ0aW1lKCclWicsIGxvY2FsdG0pCisgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCB6b25lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorICAgICAgICByZXR1cm4gdHoKIAogICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6PU5vbmUpOgogICAgICAgICBpZiB0eiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi50emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQotICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKLSAgICAgICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCi0gICAgICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIEV4dHJhY3QgVFogZGF0YSBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgotICAgICAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkCi0gICAgICAgICAgICAgICAgIyBieSB0bV9pc2RzdC4gIElmIHRoZSB2YWx1ZXMgbWF0Y2gsIHVzZSB0aGUgem9uZSBuYW1lCi0gICAgICAgICAgICAgICAgIyBpbXBsaWVkIGJ5IHRtX2lzZHN0LgotICAgICAgICAgICAgICAgIGRlbHRhID0gbG9jYWwgLSBkYXRldGltZSgqX3RpbWUuZ210aW1lKHRzKVs6Nl0pCi0gICAgICAgICAgICAgICAgZHN0ID0gX3RpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gLShfdGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIF90aW1lLnRpbWV6b25lKQotICAgICAgICAgICAgICAgIGlmIGRlbHRhID09IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEsIF90aW1lLnR6bmFtZVtkc3RdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKLQorICAgICAgICAgICAgdHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KICAgICAgICAgaWYgbXl0eiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKKyAgICAgICAgICAgIG15dHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAKICAgICAgICAgaWYgdHogaXMgbXl0ejoKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgIyBDb252ZXJ0IHNlbGYgdG8gVVRDLCBhbmQgYXR0YWNoIHRoZSBuZXcgdGltZSB6b25lIG9iamVjdC4KLSAgICAgICAgbXlvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgIG15b2Zmc2V0ID0gbXl0ei51dGNvZmZzZXQoc2VsZikKICAgICAgICAgaWYgbXlvZmZzZXQgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCiAgICAgICAgIHV0YyA9IChzZWxmIC0gbXlvZmZzZXQpLnJlcGxhY2UodHppbmZvPXR6KQpAQCAtMTU0OSwyMSArMTY1MiwyNSBAQAogICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICBzZWxmLl95ZWFyKQogCi0gICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnKToKKyAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIElTTy4KIAotICAgICAgICBUaGlzIGlzICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScsIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTJyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBsb29rcyBsaWtlICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScuCisgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCiAKICAgICAgICAgSWYgc2VsZi50emluZm8gaXMgbm90IE5vbmUsIHRoZSBVVEMgb2Zmc2V0IGlzIGFsc28gYXR0YWNoZWQsIGdpdmluZwotICAgICAgICAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0rSEg6TU0nIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTK0hIOk1NJy4KKyAgICAgICAgZ2l2aW5nIGEgZnVsbCBmb3JtYXQgb2YgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJy4KIAogICAgICAgICBPcHRpb25hbCBhcmd1bWVudCBzZXAgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBkYXRlIGFuZAogICAgICAgICB0aW1lLCBkZWZhdWx0ICdUJy4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9ICgiJTA0ZC0lMDJkLSUwMmQlYyIgJSAoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VwKSArCiAgICAgICAgICAgICAgX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykpCisKICAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBvZmYuZGF5cyA8IDA6CkBAIC0xNTcyLDkgKzE2NzksMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgcyArPSAiJXMlMDJkOiUwMmQiICUgKHNpZ24sIGhoLCBtbSkKKyAgICAgICAgICAgIGlmIHNzOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgc3MubWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgcyArPSAiOiUwMmQiICUgc3Muc2Vjb25kcwogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTU5MSw2ICsxNzAwLDkgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTE2OTMsNiArMTgwNSwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCisgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGFsbG93X21peGVkIG1lYW5zIHRoYXQgd2UgYXJlIGNhbGxlZCBmcm9tIF9fZXFfXworICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgaWYgbXlvZmYgIT0gc2VsZi5yZXBsYWNlKGZvbGQ9bm90IHNlbGYuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgICAgICAgICAgaWYgb3RvZmYgIT0gb3RoZXIucmVwbGFjZShmb2xkPW5vdCBvdGhlci5mb2xkKS51dGNvZmZzZXQoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IG15b2ZmID09IG90b2ZmCiAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgpAQCAtMTc2MCw5ICsxODc4LDEzIEBACiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQogICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCkBAIC0xNzcxLDExICsxODkzLDE0IEBACiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB5aGksIHlsbyA9IGRpdm1vZChzZWxmLl95ZWFyLCAyNTYpCiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCisgICAgICAgIG0gPSBzZWxmLl9tb250aAorICAgICAgICBpZiBzZWxmLl9mb2xkIGFuZCBwcm90b2NvbCA+IDM6CisgICAgICAgICAgICBtICs9IDEyOAorICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIG0sIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgpAQCAtMTc4NiwxNCArMTkxMSwyMyBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgICh5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VsZi5faG91ciwKKyAgICAgICAgKHloaSwgeWxvLCBtLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCiAgICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKKyAgICAgICAgaWYgbSA+IDEyNzoKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAxCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0gLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0KICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKKwogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fX3JlZHVjZV9leF9fKDIpCiAKIAogZGF0ZXRpbWUubWluID0gZGF0ZXRpbWUoMSwgMSwgMSkKQEAgLTE5MTMsNiArMjA0Nyw4IEBACiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9uYW1lX2Zyb21fb2Zmc2V0KGRlbHRhKToKKyAgICAgICAgaWYgbm90IGRlbHRhOgorICAgICAgICAgICAgcmV0dXJuICdVVEMnCiAgICAgICAgIGlmIGRlbHRhIDwgdGltZWRlbHRhKDApOgogICAgICAgICAgICAgc2lnbiA9ICctJwogICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGEKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCBlNmQ2NTA1Li4yMjk2ZGJmIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC04MSw2ICs4MSwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gKCdjJywgJ24nKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBtaXNzaW5nLCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbWFudGljcyBvZiB0aGUgJ2MnIGZsYWcgd2lsbCBiZSB1c2VkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKICAgICAgICAgICAgIHdpdGggX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3cnLCBlbmNvZGluZz0iTGF0aW4tMSIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKQEAgLTE4MCw2ICsxODUsMTAgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVyLCAlclxuIiAlIChrZXkuZGVjb2RlKCJMYXRpbi0xIiksIHBvc19hbmRfc2l6X3BhaXIpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsKToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShrZXksIChieXRlcywgYnl0ZWFycmF5KSk6CkBAIC0yMTUsNiArMjI0LDEwIEBACiAgICAgICAgICAgICAjIChzbyB0aGF0IF9jb21taXQoKSBuZXZlciBnZXRzIGNhbGxlZCkuCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5fdmVyaWZ5X29wZW4oKQpAQCAtMzA0LDQgKzMxNyw4IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKKyAgICBpZiBmbGFnIG5vdCBpbiAoJ3InLCAndycsICdjJywgJ24nKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oIkZsYWcgbXVzdCBiZSBvbmUgb2YgJ3InLCAndycsICdjJywgb3IgJ24nIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggMDc2YmJhYy4uMjA5NWE1ZSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTE0MTUsNyArMTQxNSw3IEBACiAgICAgaW1wb3J0IHJlCiAKICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgZmluZGluZyBpbnRyYWxpbmUgY2hhbmdlIGluZGljZXMKLSAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKCcoXCsrfFwtK3xcXispJykKKyAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKHInKFwrK3xcLSt8XF4rKScpCiAKICAgICAjIGNyZWF0ZSB0aGUgZGlmZmVyZW5jZSBpdGVyYXRvciB0byBnZW5lcmF0ZSB0aGUgZGlmZmVyZW5jZXMKICAgICBkaWZmX2xpbmVzX2l0ZXJhdG9yID0gbmRpZmYoZnJvbWxpbmVzLHRvbGluZXMsbGluZWp1bmssY2hhcmp1bmspCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCBmN2UzYzdmLi4wNzk0YjdmIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTE2LDYgKzE2LDggQEAKIF9oYXZlX2NvZGUgPSAodHlwZXMuTWV0aG9kVHlwZSwgdHlwZXMuRnVuY3Rpb25UeXBlLCB0eXBlcy5Db2RlVHlwZSwKICAgICAgICAgICAgICAgY2xhc3NtZXRob2QsIHN0YXRpY21ldGhvZCwgdHlwZSkKIAorRk9STUFUX1ZBTFVFID0gb3BtYXBbJ0ZPUk1BVF9WQUxVRSddCisKIGRlZiBfdHJ5X2NvbXBpbGUoc291cmNlLCBuYW1lKToKICAgICAiIiJBdHRlbXB0cyB0byBjb21waWxlIHRoZSBnaXZlbiBzb3VyY2UsIGZpcnN0IGFzIGFuIGV4cHJlc3Npb24gYW5kCiAgICAgICAgdGhlbiBhcyBhIHN0YXRlbWVudCBpZiB0aGUgZmlyc3QgYXBwcm9hY2ggZmFpbHMuCkBAIC04Nyw2ICs4OSw3IEBACiAgICAgNjQ6ICJOT0ZSRUUiLAogICAgMTI4OiAiQ09ST1VUSU5FIiwKICAgIDI1NjogIklURVJBQkxFX0NPUk9VVElORSIsCisgICA1MTI6ICJBU1lOQ19HRU5FUkFUT1IiLAogfQogCiBkZWYgcHJldHR5X2ZsYWdzKGZsYWdzKToKQEAgLTE2Myw2ICsxNjYsMTUgQEAKIF9JbnN0cnVjdGlvbiA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIl9JbnN0cnVjdGlvbiIsCiAgICAgICJvcG5hbWUgb3Bjb2RlIGFyZyBhcmd2YWwgYXJncmVwciBvZmZzZXQgc3RhcnRzX2xpbmUgaXNfanVtcF90YXJnZXQiKQogCitfSW5zdHJ1Y3Rpb24ub3BuYW1lLl9fZG9jX18gPSAiSHVtYW4gcmVhZGFibGUgbmFtZSBmb3Igb3BlcmF0aW9uIgorX0luc3RydWN0aW9uLm9wY29kZS5fX2RvY19fID0gIk51bWVyaWMgY29kZSBmb3Igb3BlcmF0aW9uIgorX0luc3RydWN0aW9uLmFyZy5fX2RvY19fID0gIk51bWVyaWMgYXJndW1lbnQgdG8gb3BlcmF0aW9uIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5hcmd2YWwuX19kb2NfXyA9ICJSZXNvbHZlZCBhcmcgdmFsdWUgKGlmIGtub3duKSwgb3RoZXJ3aXNlIHNhbWUgYXMgYXJnIgorX0luc3RydWN0aW9uLmFyZ3JlcHIuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiBvcGVyYXRpb24gYXJndW1lbnQiCitfSW5zdHJ1Y3Rpb24ub2Zmc2V0Ll9fZG9jX18gPSAiU3RhcnQgaW5kZXggb2Ygb3BlcmF0aW9uIHdpdGhpbiBieXRlY29kZSBzZXF1ZW5jZSIKK19JbnN0cnVjdGlvbi5zdGFydHNfbGluZS5fX2RvY19fID0gIkxpbmUgc3RhcnRlZCBieSB0aGlzIG9wY29kZSAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUiCitfSW5zdHJ1Y3Rpb24uaXNfanVtcF90YXJnZXQuX19kb2NfXyA9ICJUcnVlIGlmIG90aGVyIGNvZGUganVtcHMgdG8gaGVyZSwgb3RoZXJ3aXNlIEZhbHNlIgorCiBjbGFzcyBJbnN0cnVjdGlvbihfSW5zdHJ1Y3Rpb24pOgogICAgICIiIkRldGFpbHMgZm9yIGEgYnl0ZWNvZGUgb3BlcmF0aW9uCiAKQEAgLTI3Niw3ICsyODgsNiBAQAogICAgICIiIgogICAgIGxhYmVscyA9IGZpbmRsYWJlbHMoY29kZSkKICAgICBzdGFydHNfbGluZSA9IE5vbmUKLSAgICBmcmVlID0gTm9uZQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGxpbmVzdGFydHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzdGFydHNfbGluZSA9IGxpbmVzdGFydHMuZ2V0KG9mZnNldCwgTm9uZSkKQEAgLTI5Niw3ICszMDcsNyBAQAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYW1lOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgbmFtZXMpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMyArIGFyZworICAgICAgICAgICAgICAgIGFyZ3ZhbCA9IG9mZnNldCArIDIgKyBhcmcKICAgICAgICAgICAgICAgICBhcmdyZXByID0gInRvICIgKyByZXByKGFyZ3ZhbCkKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbG9jYWw6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCB2YXJuYW1lcykKQEAgLTMwNSw4ICszMTYsMTMgQEAKICAgICAgICAgICAgICAgICBhcmdyZXByID0gYXJndmFsCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2ZyZWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBjZWxscykKLSAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6Ci0gICAgICAgICAgICAgICAgYXJncmVwciA9ICIlZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIiICUgKGFyZyUyNTYsIGFyZy8vMjU2KQorICAgICAgICAgICAgZWxpZiBvcCA9PSBGT1JNQVRfVkFMVUU6CisgICAgICAgICAgICAgICAgYXJndmFsID0gKChOb25lLCBzdHIsIHJlcHIsIGFzY2lpKVthcmcgJiAweDNdLCBib29sKGFyZyAmIDB4NCkpCisgICAgICAgICAgICAgICAgYXJncmVwciA9ICgnJywgJ3N0cicsICdyZXByJywgJ2FzY2lpJylbYXJnICYgMHgzXQorICAgICAgICAgICAgICAgIGlmIGFyZ3ZhbFsxXToKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJncmVwcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgKz0gJywgJworICAgICAgICAgICAgICAgICAgICBhcmdyZXByICs9ICd3aXRoIGZvcm1hdCcKICAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24ob3BuYW1lW29wXSwgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgYXJndmFsLCBhcmdyZXByLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHN0YXJ0c19saW5lLCBpc19qdW1wX3RhcmdldCkKQEAgLTM0MywyMyArMzU5LDE1IEBACiBkaXNjbyA9IGRpc2Fzc2VtYmxlICAgICAgICAgICAgICAgICAgICAgIyBYWFggRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAKIGRlZiBfdW5wYWNrX29wYXJncyhjb2RlKToKLSAgICAjIGVudW1lcmF0ZSgpIGlzIG5vdCBhbiBvcHRpb24sIHNpbmNlIHdlIHNvbWV0aW1lcyBwcm9jZXNzCi0gICAgIyBtdWx0aXBsZSBlbGVtZW50cyBvbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIGxvb3AKICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgbiA9IGxlbihjb2RlKQotICAgIGkgPSAwCi0gICAgd2hpbGUgaSA8IG46CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNvZGUpLCAyKToKICAgICAgICAgb3AgPSBjb2RlW2ldCi0gICAgICAgIG9mZnNldCA9IGkKLSAgICAgICAgaSA9IGkrMQotICAgICAgICBhcmcgPSBOb25lCiAgICAgICAgIGlmIG9wID49IEhBVkVfQVJHVU1FTlQ6Ci0gICAgICAgICAgICBhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NiArIGV4dGVuZGVkX2FyZwotICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgICAgICAgICAgaSA9IGkrMgotICAgICAgICAgICAgaWYgb3AgPT0gRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IGFyZyo2NTUzNgotICAgICAgICB5aWVsZCAob2Zmc2V0LCBvcCwgYXJnKQorICAgICAgICAgICAgYXJnID0gY29kZVtpKzFdIHwgZXh0ZW5kZWRfYXJnCisgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAoYXJnIDw8IDgpIGlmIG9wID09IEVYVEVOREVEX0FSRyBlbHNlIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZyA9IE5vbmUKKyAgICAgICAgeWllbGQgKGksIG9wLCBhcmcpCiAKIGRlZiBmaW5kbGFiZWxzKGNvZGUpOgogICAgICIiIkRldGVjdCBhbGwgb2Zmc2V0cyBpbiBhIGJ5dGUgY29kZSB3aGljaCBhcmUganVtcCB0YXJnZXRzLgpAQCAtMzcwLDE0ICszNzgsMTQgQEAKICAgICBsYWJlbHMgPSBbXQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxhYmVsID0gLTEKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2phYnM6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcmcKLSAgICAgICAgICAgIGlmIGxhYmVsID49IDA6Ci0gICAgICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKLSAgICAgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6CisgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKICAgICByZXR1cm4gbGFiZWxzCiAKIGRlZiBmaW5kbGluZXN0YXJ0cyhjb2RlKToKQEAgLTM4Niw4ICszOTQsOCBAQAogICAgIEdlbmVyYXRlIHBhaXJzIChvZmZzZXQsIGxpbmVubykgYXMgZGVzY3JpYmVkIGluIFB5dGhvbi9jb21waWxlLmMuCiAKICAgICAiIiIKLSAgICBieXRlX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzA6OjJdKQotICAgIGxpbmVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMTo6Ml0pCisgICAgYnl0ZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMDo6Ml0KKyAgICBsaW5lX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlsxOjoyXQogCiAgICAgbGFzdGxpbmVubyA9IE5vbmUKICAgICBsaW5lbm8gPSBjb2RlLmNvX2ZpcnN0bGluZW5vCkBAIC0zOTgsNiArNDA2LDkgQEAKICAgICAgICAgICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQogICAgICAgICAgICAgICAgIGxhc3RsaW5lbm8gPSBsaW5lbm8KICAgICAgICAgICAgIGFkZHIgKz0gYnl0ZV9pbmNyCisgICAgICAgIGlmIGxpbmVfaW5jciA+PSAweDgwOgorICAgICAgICAgICAgIyBsaW5lX2luY3JlbWVudHMgaXMgYW4gYXJyYXkgb2YgOC1iaXQgc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogICAgIGlmIGxpbmVubyAhPSBsYXN0bGluZW5vOgogICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCBiZWQxMzg0Li43OGFlNTc1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB6aXAud3JpdGUocGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKICAgICAgICAgICAgIHppcC5jbG9zZSgpCiAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NtZC5weSBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CmluZGV4IGM4OWQ1ZWYuLjkzOWY3OTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY21kLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CkBAIC0yMjEsNyArMjIxLDcgQEAKICAgICAgICAgc2VsZi5fZW5zdXJlX3N0cmluZ2xpa2Uob3B0aW9uLCAic3RyaW5nIiwgZGVmYXVsdCkKIAogICAgIGRlZiBlbnN1cmVfc3RyaW5nX2xpc3Qoc2VsZiwgb3B0aW9uKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcworICAgICAgICByIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcwogICAgICAgICBjdXJyZW50bHkgYSBzdHJpbmcsIHdlIHNwbGl0IGl0IGVpdGhlciBvbiAvLFxzKi8gb3IgL1xzKy8sIHNvCiAgICAgICAgICJmb28gYmFyIGJheiIsICJmb28sYmFyLGJheiIsIGFuZCAiZm9vLCAgIGJhciBiYXoiIGFsbCBiZWNvbWUKICAgICAgICAgWyJmb28iLCAiYmFyIiwgImJheiJdLgpAQCAtMzI5LDggKzMyOSw3IEBACiAgICAgIyAtLSBFeHRlcm5hbCB3b3JsZCBtYW5pcHVsYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiB3YXJuKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIgJQotICAgICAgICAgICAgICAgIChzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKSkKKyAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiwgc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIGZ1bmMsIGFyZ3MsIG1zZz1Ob25lLCBsZXZlbD0xKToKICAgICAgICAgdXRpbC5leGVjdXRlKGZ1bmMsIGFyZ3MsIG1zZywgZHJ5X3J1bj1zZWxmLmRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CmluZGV4IGYxYmZiMjQuLmU5Mjc0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIGluc3RhbGwuc2tpcF9idWlsZCA9IHNlbGYuc2tpcF9idWlsZAogICAgICAgICBpbnN0YWxsLndhcm5fZGlyID0gMAogCi0gICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiAlIHNlbGYuYmRpc3RfZGlyKQorICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIsIHNlbGYuYmRpc3RfZGlyKQogICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdpbnN0YWxsJykKIAogICAgICAgICAjIEFuZCBtYWtlIGFuIGFyY2hpdmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQppbmRleCBiM2NmZTljLi5hNGJkNWE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIk9LIiwgIk9LIiwgIk9LIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBjb3N0LnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQorICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKICAgICAgICAgY29zdC50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMCwgMjgwLCAyMCwgMHgzMDAwMywKICAgICAgICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKICAgICAgICAgY29zdC50ZXh0KCJUZXh0IiwgMjAsIDUzLCAzMzAsIDYwLCAzLApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHByb2dyZXNzID0gUHlEaWFsb2coZGIsICJQcm9ncmVzc0RsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRpdGxlIiwgMjAsIDE1LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKKyAgICAgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRleHQiLCAzNSwgNjUsIDMwMCwgMzAsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIgogICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQppbmRleCAwYzBlMmMxLi5kM2UxZDNhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKaW5kZXggMzM3ZGQwYi4uYzZmNTJlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXBsYXQtbmFtZSBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICh0cnkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2luZyAnLi9jb25maWd1cmUgLS1oZWxwJyBvbiB5b3VyIHBsYXRmb3JtKSIpCiAKLSAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVkLiVkIiAlIChzZWxmLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgICMgTWFrZSBpdCBzbyBQeXRob24gMi54IGFuZCBQeXRob24gMi54IHdpdGggLS13aXRoLXB5ZGVidWcgZG9uJ3QKICAgICAgICAgIyBzaGFyZSB0aGUgc2FtZSBidWlsZCBkaXJlY3Rvcmllcy4gRG9pbmcgc28gY29uZnVzZXMgdGhlIGJ1aWxkCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVtcCcgKyBwbGF0X3NwZWNpZmllcikKICAgICAgICAgaWYgc2VsZi5idWlsZF9zY3JpcHRzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLScgKyBzeXMudmVyc2lvblswOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDdjMjc4ZWYuLjc0ZGU3ODIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtMzY0LDkgKzM2NCw5IEBACiAKICAgICAgICAgICAgIGV4dF9uYW1lLCBidWlsZF9pbmZvID0gZXh0CiAKLSAgICAgICAgICAgIGxvZy53YXJuKCgib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIgJSBleHRfbmFtZSkpCisgICAgICAgICAgICBsb2cud2Fybigib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiLCBleHRfbmFtZSkKIAogICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGV4dF9uYW1lLCBzdHIpIGFuZAogICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fbmFtZV9yZS5tYXRjaChleHRfbmFtZSkpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQppbmRleCA5MGE4MzgwLi5jY2M3MGU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiAKICAgICBkZWYgY29weV9zY3JpcHRzKHNlbGYpOgotICAgICAgICAiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQorICAgICAgICByIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKICAgICAgICAgUHl0aG9uIHNjcmlwdCBpbiB0aGUgVW5peCB3YXkgKGZpcnN0IGxpbmUgbWF0Y2hlcyAnZmlyc3RfbGluZV9yZScsCiAgICAgICAgIGllLiBzdGFydHMgd2l0aCAiXCMhIiBhbmQgY29udGFpbnMgInB5dGhvbiIpLCB0aGVuIGFkanVzdCB0aGUgZmlyc3QKICAgICAgICAgbGluZSB0byByZWZlciB0byB0aGUgY3VycmVudCBQeXRob24gaW50ZXJwcmV0ZXIgYXMgd2UgY29weS4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CmluZGV4IDg0N2U4NTguLjRhZTE1M2QgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQpAQCAtOSw3ICs5LDcgQEAKIHRoaXMgaGVhZGVyIGZpbGUgbGl2ZXMiLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IG9zLCByZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgpAQCAtMzM3LDcgKzMzNyw3IEBACiAgICAgSWYgaGVhZCBpcyBub3QgTm9uZSwgd2lsbCBiZSBkdW1wZWQgYmVmb3JlIHRoZSBmaWxlIGNvbnRlbnQuCiAgICAgIiIiCiAgICAgaWYgaGVhZCBpcyBOb25lOgotICAgICAgICBsb2cuaW5mbygnJXMnICUgZmlsZW5hbWUpCisgICAgICAgIGxvZy5pbmZvKCclcycsIGZpbGVuYW1lKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5pbmZvKGhlYWQpCiAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IDY3ZGIwMDcuLjAyNThkM2RlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQpAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuY29tcGlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5vcHRpbWl6ZSA9IE5vbmUKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBUaGVzZSB0d28gYXJlIGZvciBwdXR0aW5nIG5vbi1wYWNrYWdpemVkIGRpc3RyaWJ1dGlvbnMgaW50byB0aGVpcgogICAgICAgICAjIG93biBkaXJlY3RvcnkgYW5kIGNyZWF0aW5nIGEgLnB0aCBmaWxlIGlmIGl0IG1ha2VzIHNlbnNlLgogICAgICAgICAjICdleHRyYV9wYXRoJyBjb21lcyBmcm9tIHRoZSBzZXR1cCBmaWxlOyAnaW5zdGFsbF9wYXRoX2ZpbGUnIGNhbgpAQCAtMjkwLDggKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfdmVyc2lvbic6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfZnVsbG5hbWUnOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfZnVsbG5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbic6IHB5X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiBweV92ZXJzaW9uWzA6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiBweV92ZXJzaW9uWzBdICsgcHlfdmVyc2lvblsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6ICclZCVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfcHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19leGVjX3ByZWZpeCc6IGV4ZWNfcHJlZml4LApAQCAtMzQ0LDYgKzM0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJywgJ2hlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJiYXNlJywgJ3VzZXJzaXRlJykKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBXZWxsLCB3ZSdyZSBub3QgYWN0dWFsbHkgZnVsbHkgY29tcGxldGVseSBmaW5hbGl6ZWQgeWV0OiB3ZSBzdGlsbAogICAgICAgICAjIGhhdmUgdG8gZGVhbCB3aXRoICdleHRyYV9wYXRoJywgd2hpY2ggaXMgdGhlIGhhY2sgZm9yIGFsbG93aW5nCiAgICAgICAgICMgbm9uLXBhY2thZ2l6ZWQgbW9kdWxlIGRpc3RyaWJ1dGlvbnMgKGhlbGxvLCBOdW1lcmljYWwgUHl0aG9uISkgdG8KQEAgLTM4NSw3ICszODcsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvcHRfbmFtZSA9IG9wdF9uYW1lLnRyYW5zbGF0ZShsb25nb3B0X3hsYXRlKQogICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoc2VsZiwgb3B0X25hbWUpCi0gICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiAlIChvcHRfbmFtZSwgdmFsKSkKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiLCBvcHRfbmFtZSwgdmFsKQogCiAgICAgZGVmIGZpbmFsaXplX3VuaXgoc2VsZik6CiAgICAgICAgICIiIkZpbmFsaXplcyBvcHRpb25zIGZvciBwb3NpeCBwbGF0Zm9ybXMuIiIiCkBAIC00OTAsNiArNDkyLDEwIEBACiAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmRpc3RyaWJ1dGlvbi5leHRyYV9wYXRoCiAKICAgICAgICAgaWYgc2VsZi5leHRyYV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nLndhcm4oCisgICAgICAgICAgICAgICAgIkRpc3RyaWJ1dGlvbiBvcHRpb24gZXh0cmFfcGF0aCBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICAgIlNlZSBpc3N1ZTI3OTE5IGZvciBkZXRhaWxzLiIKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leHRyYV9wYXRoLCBzdHIpOgogICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZXh0cmFfcGF0aC5zcGxpdCgnLCcpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKaW5kZXggYzJhN2Q2NC4uMGRkYzczNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKQEAgLTIxLDEwICsyMSwxMCBAQAogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdpbnN0YWxsX2xpYicsKCdpbnN0YWxsX2RpcicsJ2luc3RhbGxfZGlyJykpCi0gICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JXMuZWdnLWluZm8iICUgKAorICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVkLiVkLmVnZy1pbmZvIiAlICgKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfbmFtZShzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfbmFtZSgpKSksCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX3ZlcnNpb24oc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSkpLAotICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdCisgICAgICAgICAgICAqc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgKQogICAgICAgICBzZWxmLnRhcmdldCA9IG9zLnBhdGguam9pbihzZWxmLmluc3RhbGxfZGlyLCBiYXNlbmFtZSkKICAgICAgICAgc2VsZi5vdXRwdXRzID0gW3NlbGYudGFyZ2V0XQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CmluZGV4IDg2MzQzYzguLjBmYWM5NGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKQEAgLTUsNyArNSw3IEBACiAKICMgY3JlYXRlZCAyMDAyLzEwLzIxLCBSaWNoYXJkIEpvbmVzCiAKLWltcG9ydCBvcywgc3RyaW5nLCBnZXRwYXNzCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGlvCiBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAnJycKICAgICAgICAgIyBzZW5kIHRoZSBpbmZvIHRvIHRoZSBzZXJ2ZXIgYW5kIHJlcG9ydCB0aGUgcmVzdWx0CiAgICAgICAgIChjb2RlLCByZXN1bHQpID0gc2VsZi5wb3N0X3RvX3NlcnZlcihzZWxmLmJ1aWxkX3Bvc3RfZGF0YSgndmVyaWZ5JykpCi0gICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgc2VuZF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgJycnIFNlbmQgdGhlIG1ldGFkYXRhIHRvIHRoZSBwYWNrYWdlIGluZGV4IHNlcnZlci4KQEAgLTIwNSw3ICsyMDUsNyBAQAogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnICAgRU1haWw6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdZb3Ugd2lsbCByZWNlaXZlIGFuIGVtYWlsIHNob3J0bHkuJykKICAgICAgICAgICAgICAgICBsb2cuaW5mbygoJ0ZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIGl0IHRvICcKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICAgICAgd2hpbGUgbm90IGRhdGFbJ2VtYWlsJ106CiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCdZb3VyIGVtYWlsIGFkZHJlc3M6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCi0gICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBidWlsZF9wb3N0X2RhdGEoc2VsZiwgYWN0aW9uKToKICAgICAgICAgIyBmaWd1cmUgdGhlIGRhdGEgdG8gc2VuZCAtIHRoZSBtZXRhZGF0YSBwbHVzIHNvbWUgYWRkaXRpb25hbApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CmluZGV4IDdlYTNkNWYuLjRmZDFkNDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKQEAgLTMsNyArMyw2IEBACiBJbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3NkaXN0JyBjb21tYW5kIChjcmVhdGUgYSBzb3VyY2UgZGlzdHJpYnV0aW9uKS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCAqCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKQEAgLTkyLDkgKzkxLDYgQEAKICAgICBuZWdhdGl2ZV9vcHQgPSB7J25vLWRlZmF1bHRzJzogJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgICAgICAgICAgICAgICduby1wcnVuZSc6ICdwcnVuZScgfQogCi0gICAgZGVmYXVsdF9mb3JtYXQgPSB7J3Bvc2l4JzogJ2d6dGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJyB9Ci0KICAgICBzdWJfY29tbWFuZHMgPSBbKCdjaGVjaycsIGNoZWNraW5nX21ldGFkYXRhKV0KIAogICAgIGRlZiBpbml0aWFsaXplX29wdGlvbnMoc2VsZik6CkBAIC0xMTEsNyArMTA3LDcgQEAKICAgICAgICAgc2VsZi5tYW5pZmVzdF9vbmx5ID0gMAogICAgICAgICBzZWxmLmZvcmNlX21hbmlmZXN0ID0gMAogCi0gICAgICAgIHNlbGYuZm9ybWF0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5mb3JtYXRzID0gWydnenRhciddCiAgICAgICAgIHNlbGYua2VlcF90ZW1wID0gMAogICAgICAgICBzZWxmLmRpc3RfZGlyID0gTm9uZQogCkBAIC0xMjcsMTMgKzEyMyw2IEBACiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlID0gIk1BTklGRVNULmluIgogCiAgICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZ19saXN0KCdmb3JtYXRzJykKLSAgICAgICAgaWYgc2VsZi5mb3JtYXRzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5mb3JtYXRzID0gW3NlbGYuZGVmYXVsdF9mb3JtYXRbb3MubmFtZV1dCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3Qga25vdyBob3cgdG8gY3JlYXRlIHNvdXJjZSBkaXN0cmlidXRpb25zICIKLSAgICAgICAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gJXMiICUgb3MubmFtZSkKIAogICAgICAgICBiYWRfZm9ybWF0ID0gYXJjaGl2ZV91dGlsLmNoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmLmZvcm1hdHMpCiAgICAgICAgIGlmIGJhZF9mb3JtYXQ6CkBAIC00MjMsNyArNDEyLDcgQEAKICAgICAgICAgICAgIGxvZy5pbmZvKG1zZykKICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiAlIGZpbGUpCisgICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiwgZmlsZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShmaWxlLCBkZXN0LCBsaW5rPWxpbmspCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggZjA1YjM0Yi4uZDYwM2Q0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMjA0LDE2ICsyMDQsMTUgQEAKICAgICBnbG9iYWwgX3NldHVwX3N0b3BfYWZ0ZXIsIF9zZXR1cF9kaXN0cmlidXRpb24KICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IHN0b3BfYWZ0ZXIKIAotICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2CisgICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YuY29weSgpCiAgICAgZyA9IHsnX19maWxlX18nOiBzY3JpcHRfbmFtZX0KLSAgICBsID0ge30KICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5hcmd2WzBdID0gc2NyaXB0X25hbWUKICAgICAgICAgICAgIGlmIHNjcmlwdF9hcmdzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN5cy5hcmd2WzE6XSA9IHNjcmlwdF9hcmdzCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X25hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZywgbCkKKyAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmFyZ3YgPSBzYXZlX2FyZ3YKICAgICAgICAgICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQppbmRleCBjODc5NjQ2Li4xYzM2OTkwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQpAQCAtMzY4LDcgKzM2OCw3IEBACiAgICAgICAgIHJldHVybiAoQ09ORklHX0hfVU5DRVJUQUlOLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZWFkICclcyc6ICVzIiAlIChmbiwgZXhjLnN0cmVycm9yKSkKIAotUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYicoXGQrXC5cZCsoXC5cZCspKiknKQorUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYnInKFxkK1wuXGQrKFwuXGQrKSopJykKIAogZGVmIF9maW5kX2V4ZV92ZXJzaW9uKGNtZCk6CiAgICAgIiIiRmluZCB0aGUgdmVyc2lvbiBvZiBhbiBleGVjdXRhYmxlIGJ5IHJ1bm5pbmcgYGNtZGAgaW4gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CmluZGV4IGZmYjMzZmY2Li42MmEyNDUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CkBAIC0xMDE4LDggKzEwMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJtYWludGFpbmVyIiwgIm1haW50YWluZXJfZW1haWwiLCAidXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSIsICJkZXNjcmlwdGlvbiIsICJsb25nX2Rlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMiLCAicGxhdGZvcm1zIiwgImZ1bGxuYW1lIiwgImNvbnRhY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImxpY2Vuc2UiLCAiY2xhc3NpZmllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJkb3dubG9hZF91cmwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImNsYXNzaWZpZXJzIiwgImRvd25sb2FkX3VybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQRVAgMzE0CiAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVzIiwgInJlcXVpcmVzIiwgIm9ic29sZXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQppbmRleCA3ZWZiYjc0Li5jNTA3ZGEzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQpAQCAtNCw3ICs0LDYgQEAKIG1vZHVsZXMgaW4gc2V0dXAgc2NyaXB0cy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIAogIyBUaGlzIGNsYXNzIGlzIHJlYWxseSBvbmx5IHVzZWQgYnkgdGhlICJidWlsZF9leHQiIGNvbW1hbmQsIHNvIGl0IG1pZ2h0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQppbmRleCA2NTIyZTY5Li5jOTJkNWZkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKQEAgLTMwMiwyMSArMzAyLDI2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gcGF0dGVybgogCisgICAgIyBkaXRjaCBzdGFydCBhbmQgZW5kIGNoYXJhY3RlcnMKKyAgICBzdGFydCwgXywgZW5kID0gZ2xvYl90b19yZSgnXycpLnBhcnRpdGlvbignXycpCisKICAgICBpZiBwYXR0ZXJuOgogICAgICAgICBwYXR0ZXJuX3JlID0gZ2xvYl90b19yZShwYXR0ZXJuKQorICAgICAgICBhc3NlcnQgcGF0dGVybl9yZS5zdGFydHN3aXRoKHN0YXJ0KSBhbmQgcGF0dGVybl9yZS5lbmRzd2l0aChlbmQpCiAgICAgZWxzZToKICAgICAgICAgcGF0dGVybl9yZSA9ICcnCiAKICAgICBpZiBwcmVmaXggaXMgbm90IE5vbmU6Ci0gICAgICAgICMgZGl0Y2ggZW5kIG9mIHBhdHRlcm4gY2hhcmFjdGVyCi0gICAgICAgIGVtcHR5X3BhdHRlcm4gPSBnbG9iX3RvX3JlKCcnKQotICAgICAgICBwcmVmaXhfcmUgPSBnbG9iX3RvX3JlKHByZWZpeClbOi1sZW4oZW1wdHlfcGF0dGVybildCisgICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KQorICAgICAgICBhc3NlcnQgcHJlZml4X3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwcmVmaXhfcmUuZW5kc3dpdGgoZW5kKQorICAgICAgICBwcmVmaXhfcmUgPSBwcmVmaXhfcmVbbGVuKHN0YXJ0KTogbGVuKHByZWZpeF9yZSkgLSBsZW4oZW5kKV0KICAgICAgICAgc2VwID0gb3Muc2VwCiAgICAgICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICAgICAgc2VwID0gcidcXCcKLSAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHNlcC5qb2luKChwcmVmaXhfcmUsICIuKiIgKyBwYXR0ZXJuX3JlKSkKKyAgICAgICAgcGF0dGVybl9yZSA9IHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTogbGVuKHBhdHRlcm5fcmUpIC0gbGVuKGVuZCldCisgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcyVzLiolcyVzJyAlIChzdGFydCwgcHJlZml4X3JlLCBzZXAsIHBhdHRlcm5fcmUsIGVuZCkKICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHByZWZpeCAtLSByZXNwZWN0IGFuY2hvciBmbGFnCiAgICAgICAgIGlmIGFuY2hvcjoKLSAgICAgICAgICAgIHBhdHRlcm5fcmUgPSAiXiIgKyBwYXR0ZXJuX3JlCisgICAgICAgICAgICBwYXR0ZXJuX3JlID0gciclc1xBJXMnICUgKHN0YXJ0LCBwYXR0ZXJuX3JlW2xlbihzdGFydCk6XSkKIAogICAgIHJldHVybiByZS5jb21waWxlKHBhdHRlcm5fcmUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKaW5kZXggMGIxZmQxOS4uMjExOTEyNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQpAQCAtNzE2LDcgKzcxNiw3IEBACiAgICAgICAgICAgICAgICAgciIiIlZDXGR7Mn1cLkNSVCgifCcpLio/KC8+fDwvYXNzZW1ibHlJZGVudGl0eT4pIiIiLAogICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQotICAgICAgICAgICAgcGF0dGVybiA9ICI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCisgICAgICAgICAgICBwYXR0ZXJuID0gciI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCiAgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKICAgICAgICAgICAgICMgTm93IHNlZSBpZiBhbnkgb3RoZXIgYXNzZW1ibGllcyBhcmUgcmVmZXJlbmNlZCAtIGlmIG5vdCwgd2UKICAgICAgICAgICAgICMgZG9uJ3Qgd2FudCBhIG1hbmlmZXN0IGVtYmVkZGVkLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCA1NzM3MjRkLi44YmYxYTcwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtNzAsNyArNzAsNyBAQAogICAgIGxlYXZpbmcgb2ZmIHRoZSBwYXRjaGxldmVsLiAgU2FtcGxlIHJldHVybiB2YWx1ZXMgY291bGQgYmUgJzEuNScKICAgICBvciAnMi4yJy4KICAgICAiIiIKLSAgICByZXR1cm4gc3lzLnZlcnNpb25bOjNdCisgICAgcmV0dXJuICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogCiAKIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKQEAgLTI0Miw2ICsyNDIsOCBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UsICJNYWtlZmlsZSIpCiAgICAgbGliX2RpciA9IGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTEpCiAgICAgY29uZmlnX2ZpbGUgPSAnY29uZmlnLXt9e30nLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSwgYnVpbGRfZmxhZ3MpCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19maWxlICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQogCiAKQEAgLTI3Niw3ICsyNzgsNyBAQAogCiAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgotX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCitfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiBfZmluZHZhcjFfcnggPSByZS5jb21waWxlKHIiXCRcKChbQS1aYS16XVtBLVphLXowLTlfXSopXCkiKQogX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTQxNSwzOCArNDE3LDE4IEBACiAKIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKLSAgICBnID0ge30KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKLSAgICB0cnk6Ci0gICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLSAgICAgICAgcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICBwYXJzZV9jb25maWdfaChmaWxlLCBnKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotCi0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotCi0gICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCi0gICAgIyAtLSB0aGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIFB5dGhvbiBzb3VyY2UsIGJ1dCB3aGVuIGluc3RhbGxlZAotICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgotICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgZ1snTERTSEFSRUQnXSA9IGdbJ0JMRFNIQVJFRCddCi0KKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKKyAgICBuYW1lID0gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgZ2xvYmFsIF9jb25maWdfdmFycwotICAgIF9jb25maWdfdmFycyA9IGcKKyAgICBfY29uZmlnX3ZhcnMgPSB7fQorICAgIF9jb25maWdfdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiAKIGRlZiBfaW5pdF9udCgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKaW5kZXggYzU5NjJkZC4uNjQ1M2EwMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CkBAIC05LDggKzksNiBAQAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5iZGlzdF9ycG0gaW1wb3J0IGJkaXN0X3JwbQogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLWZyb20gZGlzdHV0aWxzIGltcG9ydCBzcGF3bgotZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKIAogU0VUVVBfUFkgPSAiIiJcCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CmluZGV4IDMzOTFmMzYuLmIwMjBhNWIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgIyBidWlsZF9wbGF0bGliIGlzICdidWlsZC9saWIucGxhdGZvcm0teC54Wy1weWRlYnVnXScKICAgICAgICAgIyBleGFtcGxlczoKICAgICAgICAgIyAgIGJ1aWxkL2xpYi5tYWNvc3gtMTAuMy1pMzg2LTIuNwotICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVzJyAlIChjbWQucGxhdF9uYW1lLCBzeXMudmVyc2lvblswOjNdKQorICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVkLiVkJyAlIChjbWQucGxhdF9uYW1lLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtZC5idWlsZF9wbGF0bGliLmVuZHN3aXRoKCctcHlkZWJ1ZycpKQogICAgICAgICAgICAgcGxhdF9zcGVjICs9ICctcHlkZWJ1ZycKQEAgLTQyLDcgKzQyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfdGVtcCwgd2FudGVkKQogCiAgICAgICAgICMgYnVpbGRfc2NyaXB0cyBpcyBidWlsZC9zY3JpcHRzLXgueAotICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsICdzY3JpcHRzLScgKyAgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKGNtZC5idWlsZF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmJ1aWxkX3NjcmlwdHMsIHdhbnRlZCkKIAogICAgICAgICAjIGV4ZWN1dGFibGUgaXMgb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9jbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2NsaWIucHkKaW5kZXggYWNjOTllNy4uODVkMDk5MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2NsaWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2NsaWIucHkKQEAgLTMsNyArMyw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgbWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfY2xpYiBpbXBvcnQgYnVpbGRfY2xpYgogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNTZXR1cEVycm9yCkBAIC0xMTYsMTkgKzExNiwxMSBAQAogICAgICAgICBjbWQuYnVpbGRfdGVtcCA9IGJ1aWxkX3RlbXAKICAgICAgICAgY21kLmJ1aWxkX2NsaWIgPSBidWlsZF90ZW1wCiAKLSAgICAgICAgIyBiZWZvcmUgd2UgcnVuIHRoZSBjb21tYW5kLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQotICAgICAgICAjIGFsbCBjb21tYW5kcyBhcmUgcHJlc2VudCBvbiB0aGUgc3lzdGVtCi0gICAgICAgICMgYnkgY3JlYXRpbmcgYSBjb21waWxlciBhbmQgY2hlY2tpbmcgaXRzIGV4ZWN1dGFibGVzCi0gICAgICAgIGZyb20gZGlzdHV0aWxzLmNjb21waWxlciBpbXBvcnQgbmV3X2NvbXBpbGVyCi0gICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgY3VzdG9taXplX2NvbXBpbGVyCi0KLSAgICAgICAgY29tcGlsZXIgPSBuZXdfY29tcGlsZXIoKQotICAgICAgICBjdXN0b21pemVfY29tcGlsZXIoY29tcGlsZXIpCi0gICAgICAgIGZvciBjY21kIGluIGNvbXBpbGVyLmV4ZWN1dGFibGVzLnZhbHVlcygpOgotICAgICAgICAgICAgaWYgY2NtZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBmaW5kX2V4ZWN1dGFibGUoY2NtZFswXSkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY2NtZFswXSkKKyAgICAgICAgIyBCZWZvcmUgd2UgcnVuIHRoZSBjb21tYW5kLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQorICAgICAgICAjIGFsbCBjb21tYW5kcyBhcmUgcHJlc2VudCBvbiB0aGUgc3lzdGVtLgorICAgICAgICBjY21kID0gbWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlKCkKKyAgICAgICAgaWYgY2NtZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoZSAlciBjb21tYW5kIGlzIG5vdCBmb3VuZCcgJSBjY21kKQogCiAgICAgICAgICMgdGhpcyBzaG91bGQgd29yawogICAgICAgICBjbWQucnVuKCkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CmluZGV4IGYzZGY1NjQuLmJlN2Y1ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQpAQCAtNDEsNiArNDEsOSBAQAogICAgICAgICByZXR1cm4gYnVpbGRfZXh0KCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiB0ZXN0X2J1aWxkX2V4dChzZWxmKToKKyAgICAgICAgY21kID0gc3VwcG9ydC5taXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGUoKQorICAgICAgICBpZiBjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY21kKQogICAgICAgICBnbG9iYWwgQUxSRUFEWV9URVNURUQKICAgICAgICAgY29weV94eG1vZHVsZV9jKHNlbGYudG1wX2RpcikKICAgICAgICAgeHhfYyA9IG9zLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICd4eG1vZHVsZS5jJykKQEAgLTE2Niw3ICsxNjksNiBAQAogICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAKLSAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwogICAgICAgICBweV9pbmNsdWRlID0gc3lzY29uZmlnLmdldF9weXRob25faW5jKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihweV9pbmNsdWRlLCBjbWQuaW5jbHVkZV9kaXJzKQogCkBAIC0yOTYsNiArMjk4LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuY29tcGlsZXIsICd1bml4JykKIAogICAgIGRlZiB0ZXN0X2dldF9vdXRwdXRzKHNlbGYpOgorICAgICAgICBjbWQgPSBzdXBwb3J0Lm1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZSgpCisgICAgICAgIGlmIGNtZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoZSAlciBjb21tYW5kIGlzIG5vdCBmb3VuZCcgJSBjbWQpCiAgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBjX2ZpbGUgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2Zvby5jJykKICAgICAgICAgc2VsZi53cml0ZV9maWxlKGNfZmlsZSwgJ3ZvaWQgUHlJbml0X2Zvbyh2b2lkKSB7fVxuJykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQppbmRleCAxODI4M2RjLi4wNzEyZTkyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CkBAIC0xNjgsNyArMTY4LDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb2xkX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsIHNlbGYubG9nc1swXVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nc1swXVsxXSAlIHNlbGYubG9nc1swXVsyXSkKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CmluZGV4IGI2NGYzMDAuLmM2MDVhZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuY2xlYW4uIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbiBpbXBvcnQgY2xlYW4KIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQppbmRleCBhMzg0NDk3Li43N2VmNzg4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnB5cGlyYy5weXBpcmMuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IFB5UElSQ0NvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IERpc3RyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZ19jbWQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnX2NtZC5weQppbmRleCAwYzhkYmQ4Li42ZTU2NmU3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnX2NtZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnX2NtZC5weQpAQCAtMiw3ICsyLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBtaXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGUKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5jb25maWcgaW1wb3J0IGR1bXBfZmlsZSwgY29uZmlnCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApAQCAtMzksNiArMzksOSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgImNhbid0IHRlc3Qgb24gV2luZG93cyIpCiAgICAgZGVmIHRlc3Rfc2VhcmNoX2NwcChzZWxmKToKKyAgICAgICAgY21kID0gbWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlKFsncHJlcHJvY2Vzc29yJ10pCisgICAgICAgIGlmIGNtZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoZSAlciBjb21tYW5kIGlzIG5vdCBmb3VuZCcgJSBjbWQpCiAgICAgICAgIHBrZ19kaXIsIGRpc3QgPSBzZWxmLmNyZWF0ZV9kaXN0KCkKICAgICAgICAgY21kID0gY29uZmlnKGRpc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKaW5kZXggNjU0MjI3Yy4uMjdjZTczMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKQEAgLTI5LDYgKzI5LDIxIEBACiBzZXR1cCgpCiAiIiIKIAorc2V0dXBfZG9lc19ub3RoaW5nID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK3NldHVwKCkKKyIiIgorCisKK3NldHVwX2RlZmluZXNfc3ViY2xhc3MgPSAiIiJcCitmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAorZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsIGltcG9ydCBpbnN0YWxsIGFzIF9pbnN0YWxsCisKK2NsYXNzIGluc3RhbGwoX2luc3RhbGwpOgorICAgIHN1Yl9jb21tYW5kcyA9IF9pbnN0YWxsLnN1Yl9jb21tYW5kcyArIFsnY21kJ10KKworc2V0dXAoY21kY2xhc3M9eydpbnN0YWxsJzogaW5zdGFsbH0pCisiIiIKIAogY2xhc3MgQ29yZVRlc3RDYXNlKHN1cHBvcnQuRW52aXJvbkd1YXJkLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY3LDYgKzgyLDIxIEBACiAgICAgICAgIGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKICAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfdXNpbmdfX19maWxlX18pKQogCisgICAgZGVmIHRlc3RfcnVuX3NldHVwX3ByZXNlcnZlc19zeXNfYXJndihzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgcnVuX3NldHVwIGRvZXMgbm90IGNsb2JiZXIgc3lzLmFyZ3YKKyAgICAgICAgYXJndl9jb3B5ID0gc3lzLmFyZ3YuY29weSgpCisgICAgICAgIGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZG9lc19ub3RoaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYXJndiwgYXJndl9jb3B5KQorCisgICAgZGVmIHRlc3RfcnVuX3NldHVwX2RlZmluZXNfc3ViY2xhc3Moc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBzY3JpcHQgY2FuIHVzZSBfX2ZpbGVfXzsgaWYgdGhhdCdzIG1pc3NpbmcsIHRoZSB0ZXN0CisgICAgICAgICMgc2V0dXAucHkgc2NyaXB0IHdpbGwgcmFpc2UgTmFtZUVycm9yLgorICAgICAgICBkaXN0ID0gZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF9kZWZpbmVzX3N1YmNsYXNzKSkKKyAgICAgICAgaW5zdGFsbCA9IGRpc3QuZ2V0X2NvbW1hbmRfb2JqKCdpbnN0YWxsJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY21kJywgaW5zdGFsbC5zdWJfY29tbWFuZHMpCisKICAgICBkZWYgdGVzdF9ydW5fc2V0dXBfdXNlc19jdXJyZW50X2RpcihzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3RzIHRoYXQgdGhlIHNldHVwIHNjcmlwdCBpcyBydW4gd2l0aCB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgICAgIyBhcyBpdHMgb3duIGN1cnJlbnQgZGlyZWN0b3J5OyB0aGlzIHdhcyB0ZW1wb3JhcmlseSBicm9rZW4gYnkgYQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODU2OTIxNi4uOWRjODY5ZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CkBAIC0zLDExICszLDEwIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLWltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBjeWd3aW5jY29tcGlsZXIKLWZyb20gZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBpbXBvcnQgKEN5Z3dpbkNDb21waWxlciwgY2hlY2tfY29uZmlnX2gsCitmcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChjaGVja19jb25maWdfaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IX09LLCBDT05GSUdfSF9OT1RPSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IX1VOQ0VSVEFJTiwgZ2V0X3ZlcnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21zdmNyKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CmluZGV4IDNlMWMzNjYuLmM2ZmFlMzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmRlcF91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCiAKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlciwgbmV3ZXJfcGFpcndpc2UsIG5ld2VyX2dyb3VwCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0ZpbGVFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKaW5kZXggYTZkMDRmMC4uMDMwNDBhZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5maWxlX3V0aWwuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogaW1wb3J0IGVycm5vCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQppbmRleCAzOTFhZjNjLi5jNzEzNDJkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CkBAIC01MSwxNCArNTEsMTQgQEAKIAogICAgICAgICBmb3IgZ2xvYiwgcmVnZXggaW4gKAogICAgICAgICAgICAgIyBzaW1wbGUgY2FzZXMKLSAgICAgICAgICAgICgnZm9vKicsIHInZm9vW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8nLCByJ2Zvb1teJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Jywgcidmb29bXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSwKKyAgICAgICAgICAgICgnZm9vKicsIHInKD9zOmZvb1teJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8nLCByJyg/czpmb29bXiUoc2VwKXNdKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8/JywgcicoP3M6Zm9vW14lKHNlcClzXVteJShzZXApc10pXFonKSwKICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlcwotICAgICAgICAgICAgKHInZm9vXFwqJywgcidmb29cXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXFwqJywgcidmb29cXFxcXFxbXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPz8/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSwKLSAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJ2Zvb1xcXFxbXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSk6CisgICAgICAgICAgICAocidmb29cXConLCByJyg/czpmb29cXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcXConLCByJyg/czpmb29cXFxcXFxbXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/Pz8/JywgcicoP3M6Zm9vW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKHInZm9vXFw/PycsIHInKD9zOmZvb1xcXFxbXiUoc2VwKXNdW14lKHNlcClzXSlcWicpKToKICAgICAgICAgICAgIHJlZ2V4ID0gcmVnZXggJSB7J3NlcCc6IHNlcH0KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYl90b19yZShnbG9iKSwgcmVnZXgpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKaW5kZXggOTMxMzMzMC4uMjg3YWIxOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKQEAgLTE3LDYgKzE3LDcgQEAKIGZyb20gZGlzdHV0aWxzLmV4dGVuc2lvbiBpbXBvcnQgRXh0ZW5zaW9uCiAKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CiAKIAogZGVmIF9tYWtlX2V4dF9uYW1lKG1vZG5hbWUpOgpAQCAtMTk2LDYgKzE5Nyw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfcmVjb3JkX2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGNtZCA9IHRlc3Rfc3VwcG9ydC5taXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGUoKQorICAgICAgICBpZiBjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY21kKQogICAgICAgICBpbnN0YWxsX2RpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHByb2plY3RfZGlyLCBkaXN0ID0gc2VsZi5jcmVhdGVfZGlzdChleHRfbW9kdWxlcz1bCiAgICAgICAgICAgICBFeHRlbnNpb24oJ3h4JywgWyd4eG1vZHVsZS5jJ10pXSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CmluZGV4IDRkOGMwMGEuLjMyYWIyOTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2RhdGEuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2RhdGEgaW1wb3J0IGluc3RhbGxfZGF0YQogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CmluZGV4IGQ5NTMxNTcuLjIyMTdiMzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2hlYWRlcnMuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2hlYWRlcnMgaW1wb3J0IGluc3RhbGxfaGVhZGVycwogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQppbmRleCA1Mzc4YWE4Li5mZGE2MzE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CkBAIC0xMDQsNyArMTA0LDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb2xkX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsIHNlbGYubG9nc1swXVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nc1swXVsxXSAlIHNlbGYubG9nc1swXVsyXSkKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CmluZGV4IDZjN2ViMjAuLjVlZGMyNGEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKQEAgLTEsMTEgKzEsMTEgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuc3Bhd24uIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5peF9zaGVsbAogCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgX250X3F1b3RlX2FyZ3MKLWZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3biwgZmluZF9leGVjdXRhYmxlCitmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogCkBAIC0zMCw5ICszMCw5IEBACiAKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgZXhlY3V0YWJsZQogICAgICAgICAjIHRocm91Z2ggdGhlIHNoZWxsIHRoYXQgcmV0dXJucyAxCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMScpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAxJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAxJykKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGlzdHV0aWxzRXhlY0Vycm9yLCBzcGF3biwgW2V4ZV0pCiAKICAgICAgICAgIyBub3cgc29tZXRoaW5nIHRoYXQgd29ya3MKLSAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uc2gnKQotICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhL2Jpbi9zaFxuZXhpdCAwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjISVzXG5leGl0IDAnICUgdW5peF9zaGVsbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uYmF0JykKICAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICdleGl0IDAnKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKaW5kZXggZmM0ZDFkZS4uZmU0YTI5OSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zOSwxNSArMzksNiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwcmVmaXg9VEVTVEZOKSkKIAotICAgIGRlZiB0ZXN0X2dldF9weXRob25faW5jKHNlbGYpOgotICAgICAgICBpbmNfZGlyID0gc3lzY29uZmlnLmdldF9weXRob25faW5jKCkKLSAgICAgICAgIyBUaGlzIGlzIG5vdCBtdWNoIG9mIGEgdGVzdC4gIFdlIG1ha2Ugc3VyZSBQeXRob24uaCBleGlzdHMKLSAgICAgICAgIyBpbiB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IGdldF9weXRob25faW5jKCkgYnV0IHdlIGRvbid0IGtub3cKLSAgICAgICAgIyBpdCBpcyB0aGUgY29ycmVjdCBmaWxlLgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihpbmNfZGlyKSwgaW5jX2RpcikKLSAgICAgICAgcHl0aG9uX2ggPSBvcy5wYXRoLmpvaW4oaW5jX2RpciwgIlB5dGhvbi5oIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHB5dGhvbl9oKSwgcHl0aG9uX2gpCi0KICAgICBkZWYgdGVzdF9nZXRfY29uZmlnX3ZhcnMoc2VsZik6CiAgICAgICAgIGN2YXJzID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjdmFycywgZGljdCkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKaW5kZXggZTE3MWVlOS4uZWZiYTI3ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKQEAgLTEsNSArMSw0IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuIiIiCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQppbmRleCA0NzgzMzZmLi45M2FiYWQzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQpAQCAtNCw3ICs0LDcgQEAKIHRoYXQgKG9wdGlvbmFsbHkpIHRha2VzIGNhcmUgb2Ygc3RyaXBwaW5nIGNvbW1lbnRzLCBpZ25vcmluZyBibGFuawogbGluZXMsIGFuZCBqb2luaW5nIGxpbmVzIHdpdGggYmFja3NsYXNoZXMuIiIiCiAKLWltcG9ydCBzeXMsIG9zLCBpbworaW1wb3J0IHN5cywgaW8KIAogCiBjbGFzcyBUZXh0RmlsZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQppbmRleCBlNDIzMzI1Li5mZGNmNmZhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CkBAIC03LDggKzcsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbXBvcnRsaWIudXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgpAQCAtMzUwLDYgKzM1MCwxMSBAQAogICAgIGdlbmVyYXRlZCBpbiBpbmRpcmVjdCBtb2RlOyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIGxlYXZlCiAgICAgaXQgc2V0IHRvIE5vbmUuCiAgICAgIiIiCisKKyAgICAjIExhdGUgaW1wb3J0IHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZTogX3Bvc2l4c3VicHJvY2VzcyBpcyBidWlsdCBieQorICAgICMgc2V0dXAucHksIGJ1dCBzZXR1cC5weSB1c2VzIGRpc3R1dGlscy4KKyAgICBpbXBvcnQgc3VicHJvY2VzcworCiAgICAgIyBub3RoaW5nIGlzIGRvbmUgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgVHJ1ZQogICAgIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNCeXRlQ29tcGlsZUVycm9yKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZC4nKQpAQCAtNDEyLDExICs0MTcsOSBAQAogCiAgICAgICAgICAgICBzY3JpcHQuY2xvc2UoKQogCi0gICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgc2NyaXB0X25hbWVdCi0gICAgICAgIGlmIG9wdGltaXplID09IDE6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItTyIpCi0gICAgICAgIGVsaWYgb3B0aW1pemUgPT0gMjoKLSAgICAgICAgICAgIGNtZC5pbnNlcnQoMSwgIi1PTyIpCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgY21kLmV4dGVuZChzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKKyAgICAgICAgY21kLmFwcGVuZChzY3JpcHRfbmFtZSkKICAgICAgICAgc3Bhd24oY21kLCBkcnlfcnVuPWRyeV9ydW4pCiAgICAgICAgIGV4ZWN1dGUob3MucmVtb3ZlLCAoc2NyaXB0X25hbWUsKSwgInJlbW92aW5nICVzIiAlIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgIGRyeV9ydW49ZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weSBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQppbmRleCBiMGRkOWY0Li4wNjJjOThmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CkBAIC0xNTQsNyArMTU0LDcgQEAKICAgICBnbG9iYWwgX3Byb3Zpc2lvbl9yeAogICAgIGlmIF9wcm92aXNpb25fcnggaXMgTm9uZToKICAgICAgICAgX3Byb3Zpc2lvbl9yeCA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAiKFthLXpBLVpfXVx3Kig/OlwuW2EtekEtWl9dXHcqKSopKD86XHMqXChccyooW14pXHNdKylccypcKSk/JCIsCisgICAgICAgICAgICByIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAogICAgICAgICAgICAgcmUuQVNDSUkpCiAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCiAgICAgbSA9IF9wcm92aXNpb25fcngubWF0Y2godmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDM4ZmRkODAuLjBiNzg1NDQgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC0zODEsMTIgKzM4MSwxNSBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAKICMgW1hYXSBOb3JtYWxpemUgd2l0aCByZXNwZWN0IHRvIG9zLnBhdGgucGFyZGlyPwotZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHBhdGgpOgorZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHRlc3RfcGF0aCk6CiAgICAgaWYgbm90IGluc3BlY3QuaXNtb2R1bGUobW9kdWxlKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBhIG1vZHVsZTogJXInICUgbW9kdWxlKQotICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgIGlmIHRlc3RfcGF0aC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01vZHVsZS1yZWxhdGl2ZSBmaWxlcyBtYXkgbm90IGhhdmUgYWJzb2x1dGUgcGF0aHMnKQogCisgICAgIyBOb3JtYWxpemUgdGhlIHBhdGguIE9uIFdpbmRvd3MsIHJlcGxhY2UgIi8iIHdpdGggIlwiLgorICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbigqKHRlc3RfcGF0aC5zcGxpdCgnLycpKSkKKwogICAgICMgRmluZCB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwYXRoLgogICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKICAgICAgICAgIyBBIG5vcm1hbCBtb2R1bGUvcGFja2FnZQpAQCAtMzk4LDEzICs0MDEsMTkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJhc2VkaXIgPSBvcy5jdXJkaXIKICAgICBlbHNlOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG1vZHVsZS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIHRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmdWxscGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxscGF0aAorCiAgICAgICAgICMgQSBtb2R1bGUgdy9vIF9fZmlsZV9fICh0aGlzIGluY2x1ZGVzIGJ1aWx0aW5zKQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZXNvbHZlIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIlciAoaXQgaGFzIG5vIF9fZmlsZV9fKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1vZHVsZS5fX25hbWVfXykKIAotICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSBwYXRoLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgKihwYXRoLnNwbGl0KCcvJykpKQorICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSB0ZXN0IHBhdGguCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlZGlyLCB0ZXN0X3BhdGgpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIDIuIEV4YW1wbGUgJiBEb2NUZXN0CkBAIC03NTYsNyArNzY1LDcgQEAKIAogICAgICMgVGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZmluZHMgdGhlIGluZGVudGF0aW9uIG9mIGV2ZXJ5IG5vbi1ibGFuawogICAgICMgbGluZSBpbiBhIHN0cmluZy4KLSAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZSgnXihbIF0qKSg/PVxTKScsIHJlLk1VTFRJTElORSkKKyAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZShyJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCiAKICAgICBkZWYgX21pbl9pbmRlbnQoc2VsZiwgcyk6CiAgICAgICAgICJSZXR1cm4gdGhlIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lIGluIGBzYCIKQEAgLTEwOTcsNyArMTEwNiw3IEBACiAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIHNvdXJjZV9saW5lcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8rMQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKF58Lio6KVxzKlx3KigifFwnKScpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKF58Lio6KVxzKlx3KigifFwnKScpCiAgICAgICAgICAgICBmb3IgbGluZW5vIGluIHJhbmdlKGxpbmVubywgbGVuKHNvdXJjZV9saW5lcykpOgogICAgICAgICAgICAgICAgIGlmIHBhdC5tYXRjaChzb3VyY2VfbGluZXNbbGluZW5vXSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KQEAgLTE1OTksMTEgKzE2MDgsMTEgQEAKICAgICAgICAgIyBibGFuayBsaW5lLCB1bmxlc3MgdGhlIERPTlRfQUNDRVBUX0JMQU5LTElORSBmbGFnIGlzIHVzZWQuCiAgICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICAgIyBSZXBsYWNlIDxCTEFOS0xJTkU+IGluIHdhbnQgd2l0aCBhIGJsYW5rIGxpbmUuCi0gICAgICAgICAgICB3YW50ID0gcmUuc3ViKCcoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAorICAgICAgICAgICAgd2FudCA9IHJlLnN1YihyJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCB3YW50KQogICAgICAgICAgICAgIyBJZiBhIGxpbmUgaW4gZ290IGNvbnRhaW5zIG9ubHkgc3BhY2VzLCB0aGVuIHJlbW92ZSB0aGUKICAgICAgICAgICAgICMgc3BhY2VzLgotICAgICAgICAgICAgZ290ID0gcmUuc3ViKCcoP20pXlxzKj8kJywgJycsIGdvdCkKKyAgICAgICAgICAgIGdvdCA9IHJlLnN1YihyJyg/bSleXHMqPyQnLCAnJywgZ290KQogICAgICAgICAgICAgaWYgZ290ID09IHdhbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IDVkZjk1MTEuLjU3ZDAxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTY1Miw4ICs2NTIsOCBAQAogICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKICAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCiAgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCByJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsIHInXCknKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvbnRlbnQoc2VsZik6CkBAIC0xMzU2LDE1ICsxMzU2LDE1IEBACiAKIF93c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0CiBfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCiBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIAogZGVmIF92YWxpZGF0ZV94dGV4dCh4dGV4dCk6CiAgICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgpAQCAtMTUxNyw3ICsxNTE3LDcgQEAKICAgICByZXR1cm4gdW5zdHJ1Y3R1cmVkCiAKIGRlZiBnZXRfcXBfY3RleHQodmFsdWUpOgotICAgICIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CisgICAgciIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CiAKICAgICBUaGlzIGlzIG5vdCB0aGUgUkZDIGN0ZXh0LCBzaW5jZSB3ZSBhcmUgaGFuZGxpbmcgbmVzdGVkIGNvbW1lbnRzIGluIGNvbW1lbnQKICAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCkBAIC0xODc4LDcgKzE4NzgsNyBAQAogICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKIAogZGVmIGdldF9kdGV4dCh2YWx1ZSk6Ci0gICAgIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CisgICAgciIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAogICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKIAogICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKaW5kZXggYzBkOThhNC4uZGY0NjQ5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMTU0LDYgKzE1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBiZWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4gRGVmYXVsdDogVHJ1ZS4KIAorICAgIG1lc3NhZ2VfZmFjdG9yeSAgICAgLS0gdGhlIGNsYXNzIHRvIHVzZSB0byBjcmVhdGUgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGUgZGVmYXVsdCBpcyBNZXNzYWdlLgorCiAgICAgIiIiCiAKICAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQpAQCAtMTYxLDYgKzE2NCw3IEBACiAgICAgY3RlX3R5cGUgPSAnOGJpdCcKICAgICBtYXhfbGluZV9sZW5ndGggPSA3OAogICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCisgICAgbWVzc2FnZV9mYWN0b3J5ID0gTm9uZQogCiAgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKaW5kZXggYjk4Y2UyNy4uYjkwNGRlZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CisrKyBiL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQpAQCAtMTQyLDcgKzE0Miw3IEBACiBkZWYgX2VuY29kZV90ZXh0KHN0cmluZywgY2hhcnNldCwgY3RlLCBwb2xpY3kpOgogICAgIGxpbmVzID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KS5zcGxpdGxpbmVzKCkKICAgICBsaW5lc2VwID0gcG9saWN5LmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCi0gICAgZGVmIGVtYmVkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAorICAgIGRlZiBlbWJlZGRlZF9ib2R5KGxpbmVzKTogcmV0dXJuIGxpbmVzZXAuam9pbihsaW5lcykgKyBsaW5lc2VwCiAgICAgZGVmIG5vcm1hbF9ib2R5KGxpbmVzKTogcmV0dXJuIGInXG4nLmpvaW4obGluZXMpICsgYidcbicKICAgICBpZiBjdGU9PU5vbmU6CiAgICAgICAgICMgVXNlIGhldXJpc3RpY3MgdG8gZGVjaWRlIG9uIHRoZSAiYmVzdCIgZW5jb2RpbmcuCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgICAgICAgaWYgKHBvbGljeS5jdGVfdHlwZSA9PSAnOGJpdCcgYW5kCiAgICAgICAgICAgICAgICAgbWF4KGxlbih4KSBmb3IgeCBpbiBsaW5lcykgPD0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCk6CiAgICAgICAgICAgICByZXR1cm4gJzhiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQotICAgICAgICBzbmlmZiA9IGVtYmVkZWRfYm9keShsaW5lc1s6MTBdKQorICAgICAgICBzbmlmZiA9IGVtYmVkZGVkX2JvZHkobGluZXNbOjEwXSkKICAgICAgICAgc25pZmZfcXAgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKHNuaWZmLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICAgICAgc25pZmZfYmFzZTY0ID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzbmlmZikKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICBkYXRhID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdsYXRpbi0xJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgIGRhdGEgPSBfZW5jb2RlX2Jhc2U2NChlbWJlZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQorICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRkZWRfYm9keShsaW5lcyksIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHt9Ii5mb3JtYXQoY3RlKSkKICAgICByZXR1cm4gY3RlLCBkYXRhCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IDBiMzEyZTUuLjdjMDdjYTggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNCwxNSArMjQsMTQgQEAKIGltcG9ydCByZQogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIGZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKLU5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCi1OTENSRV9lb2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbilcWicpCi1OTENSRV9jcmFjayA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCitOTENSRSA9IHJlLmNvbXBpbGUocidcclxufFxyfFxuJykKK05MQ1JFX2JvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQorTkxDUkVfZW9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKVxaJykKK05MQ1JFX2NyYWNrID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCiAjIFJGQyAyODIyICQzLjYuOCBPcHRpb25hbCBmaWVsZHMuICBmdGV4dCBpcyAlZDMzLTU3IC8gJWQ1OS0xMjYsIEFueSBjaGFyYWN0ZXIKICMgZXhjZXB0IGNvbnRyb2xzLCBTUCwgYW5kICI6Ii4KIGhlYWRlclJFID0gcmUuY29tcGlsZShyJ14oRnJvbSB8W1wwNDEtXDA3MVwwNzMtXDE3Nl0qOnxbXHQgXSknKQpAQCAtMTQ4LDEzICsxNDcsMTEgQEAKICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5fb2xkX3N0eWxlX2ZhY3RvcnkgPSBGYWxzZQogICAgICAgICBpZiBfZmFjdG9yeSBpcyBOb25lOgotICAgICAgICAgICAgIyBXaGF0IHRoaXMgc2hvdWxkIGJlOgotICAgICAgICAgICAgI3NlbGYuX2ZhY3RvcnkgPSBwb2xpY3kuZGVmYXVsdF9tZXNzYWdlX2ZhY3RvcnkKLSAgICAgICAgICAgICMgYnV0LCBiZWNhdXNlIHdlIGFyZSBwb3N0IDMuNCBmZWF0dXJlIGZyZWV6ZSwgZml4IHdpdGggdGVtcCBoYWNrOgotICAgICAgICAgICAgaWYgc2VsZi5wb2xpY3kgaXMgY29tcGF0MzI6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IG1lc3NhZ2UuTWVzc2FnZQorICAgICAgICAgICAgaWYgcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBNZXNzYWdlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLkVtYWlsTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBwb2xpY3kubWVzc2FnZV9mYWN0b3J5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IDI1NjI3OGQuLmFlNjcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtNDQ4LDcgKzQ0OCw4IEBACiAgICAgTGlrZSB0aGUgR2VuZXJhdG9yIGJhc2UgY2xhc3MsIGV4Y2VwdCB0aGF0IG5vbi10ZXh0IHBhcnRzIGFyZSBzdWJzdGl0dXRlZAogICAgIHdpdGggYSBmb3JtYXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydC4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgZm10PU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiTGlrZSBHZW5lcmF0b3IuX19pbml0X18oKSBleGNlcHQgdGhhdCBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsCiAgICAgICAgIGFyZ3VtZW50IGlzIGFsbG93ZWQuCiAKQEAgLTQ3MCw3ICs0NzEsOCBAQAogCiAgICAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCiAgICAgICAgICIiIgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuKQorICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgZm10IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9mbXQgPSBfRk1UCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA2ODIwZWExLi5jN2IyZGQ5IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogIyBGaW5kIGEgaGVhZGVyIGVtYmVkZGVkIGluIGEgcHV0YXRpdmUgaGVhZGVyIHZhbHVlLiAgVXNlZCB0byBjaGVjayBmb3IKICMgaGVhZGVyIGluamVjdGlvbiBhdHRhY2suCi1fZW1iZWRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCitfZW1iZWRkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQogCiAKIAwKQEAgLTM4NSw3ICszODUsNyBAQAogICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCi0gICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgorICAgICAgICBpZiBfZW1iZWRkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICByYWlzZSBIZWFkZXJQYXJzZUVycm9yKCJoZWFkZXIgdmFsdWUgYXBwZWFycyB0byBjb250YWluICIKICAgICAgICAgICAgICAgICAiYW4gZW1iZWRkZWQgaGVhZGVyOiB7IXJ9Ii5mb3JtYXQodmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21lc3NhZ2UucHkKaW5kZXggNGIwNDI4My4uYjY1MTJmMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21lc3NhZ2UucHkKQEAgLTQsMTggKzQsMTcgQEAKIAogIiIiQmFzaWMgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIG9iamVjdCBtb2RlbC4iIiIKIAotX19hbGxfXyA9IFsnTWVzc2FnZSddCitfX2FsbF9fID0gWydNZXNzYWdlJywgJ0VtYWlsTWVzc2FnZSddCiAKIGltcG9ydCByZQogaW1wb3J0IHV1CiBpbXBvcnQgcXVvcHJpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CiBmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKQEAgLTk1MSw2ICs5NTAsMjYgQEAKICAgICAgICAgICAgIHBvbGljeSA9IGRlZmF1bHQKICAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3kpCiAKKworICAgIGRlZiBhc19zdHJpbmcoc2VsZiwgdW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgc3RyaW5nLgorCisgICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQorICAgICAgICBoZWFkZXIuICBtYXhoZWFkZXJsZW4gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgICAgICAgYmFzZSBNZXNzYWdlIGNsYXNzLCBidXQgZGVmYXVsdHMgdG8gTm9uZSwgbWVhbmluZyB0aGF0IHRoZSBwb2xpY3kgdmFsdWUKKyAgICAgICAgZm9yIG1heF9saW5lX2xlbmd0aCBjb250cm9scyB0aGUgaGVhZGVyIG1heGltdW0gbGVuZ3RoLiAgJ3BvbGljeScgaXMKKyAgICAgICAgcGFzc2VkIHRvIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc2FzZ2U7IGlmIGl0CisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgaW5zdGFuY2UgaXMKKyAgICAgICAgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIGlmIG1heGhlYWRlcmxlbiBpcyBOb25lOgorICAgICAgICAgICAgbWF4aGVhZGVybGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aAorICAgICAgICByZXR1cm4gc3VwZXIoKS5hc19zdHJpbmcobWF4aGVhZGVybGVuPW1heGhlYWRlcmxlbiwgcG9saWN5PXBvbGljeSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5hc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSkpCisKICAgICBkZWYgaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgY19kID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgICByZXR1cm4gRmFsc2UgaWYgY19kIGlzIE5vbmUgZWxzZSBjX2QuY29udGVudF9kaXNwb3NpdGlvbiA9PSAnYXR0YWNobWVudCcKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5IGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKaW5kZXggZjVjNTkwNS4uNjg3N2U1NSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhcHBsaWNhdGlvbi8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbi8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXBwbGljYXRpb24gZGF0YS4KQEAgLTMxLDYgKzMxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgYXBwbGljYXRpb24gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhcHBsaWNhdGlvbicsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5IGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKaW5kZXggZmJjMTE4OS4uNGJjZDdiMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhdWRpby8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXVkaW8vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2F1ZGlvZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXVkaW8gZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBfd2hhdHNuZChfYXVkaW9kYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZmluZCBhdWRpbyBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2F1ZGlvJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9hdWRpb2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5IGIvTGliL2VtYWlsL21pbWUvYmFzZS5weQppbmRleCBhYzkxOTI1Li4xYTNmOWI1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKQEAgLTYsNiArNiw4IEBACiAKIF9fYWxsX18gPSBbJ01JTUVCYXNlJ10KIAoraW1wb3J0IGVtYWlsLnBvbGljeQorCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiAKIApAQCAtMTMsMTQgKzE1LDE2IEBACiBjbGFzcyBNSU1FQmFzZShtZXNzYWdlLk1lc3NhZ2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIE1JTUUgc3BlY2lhbGl6YXRpb25zLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJUaGlzIGNvbnN0cnVjdG9yIGFkZHMgYSBDb250ZW50LVR5cGU6IGFuZCBhIE1JTUUtVmVyc2lvbjogaGVhZGVyLgogCiAgICAgICAgIFRoZSBDb250ZW50LVR5cGU6IGhlYWRlciBpcyB0YWtlbiBmcm9tIHRoZSBfbWFpbnR5cGUgYW5kIF9zdWJ0eXBlCiAgICAgICAgIGFyZ3VtZW50cy4gIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhpcyBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gZW1haWwucG9saWN5LmNvbXBhdDMyCisgICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBjdHlwZSA9ICclcy8lcycgJSAoX21haW50eXBlLCBfc3VidHlwZSkKICAgICAgICAgc2VsZi5hZGRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjdHlwZSwgKipfcGFyYW1zKQogICAgICAgICBzZWxmWydNSU1FLVZlcnNpb24nXSA9ICcxLjAnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weSBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CmluZGV4IDU1NjM4MjMuLjkyNzI0NjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2ltYWdlZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgaW1hZ2UgZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBpbWdoZHIud2hhdChOb25lLCBfaW1hZ2VkYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZ3Vlc3MgaW1hZ2UgTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdpbWFnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfaW1hZ2VkYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKaW5kZXggMjc1ZGJmZC4uMDdlNGYyZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FTWVzc2FnZShNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgbWVzc2FnZS8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZS8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfbXNnIGlzIGEgbWVzc2FnZSBvYmplY3QgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZSwgb3IgYQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBkZWZhdWx0IGlzICJyZmM4MjIiICh0aGlzIGlzIGRlZmluZWQgYnkgdGhlIE1JTUUgc3RhbmRhcmQsIGV2ZW4gdGhvdWdoCiAgICAgICAgIHRoZSB0ZXJtICJyZmM4MjIiIGlzIHRlY2huaWNhbGx5IG91dGRhdGVkIGJ5IFJGQyAyODIyKS4KICAgICAgICAgIiIiCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSkKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnbWVzc2FnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShfbXNnLCBtZXNzYWdlLk1lc3NhZ2UpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBcmd1bWVudCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZScpCiAgICAgICAgICMgSXQncyBjb252ZW5pZW50IHRvIHVzZSB0aGlzIGJhc2UgY2xhc3MgbWV0aG9kLiAgV2UgbmVlZCB0byBkbyBpdApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5IGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CmluZGV4IDk2NjE4NjUuLjJkM2YyODggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQorKysgYi9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZXMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHBvbGljeT1Ob25lLAogICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbXVsdGlwYXJ0LyogdHlwZSBtZXNzYWdlLgogCkBAIC0zMyw3ICszNCw3IEBACiAgICAgICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBwYXNzZWQgaW50byB0aGUgX3BhcmFtcyBhcmd1bWVudCkuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LCAqKl9wYXJhbXMpCiAKICAgICAgICAgIyBJbml0aWFsaXNlIF9wYXlsb2FkIHRvIGFuIGVtcHR5IGxpc3QgYXMgdGhlIE1lc3NhZ2Ugc3VwZXJjbGFzcydzCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24gb2YgaXNfbXVsdGlwYXJ0IGFzc3VtZXMgdGhhdCBfcGF5bG9hZCBpcyBhIGxpc3QgZm9yCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5IGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQppbmRleCBkYTAzMDg2Li4zNWI0NDIzIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVUZXh0KE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKIAotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IHN0cihfY2hhcnNldCl9KQogCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggMzVkMGU2OS4uNTEzMTMxMWFjIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcG9saWN5LnB5CisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKIGZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CiBmcm9tIGVtYWlsLmNvbnRlbnRtYW5hZ2VyIGltcG9ydCByYXdfZGF0YV9tYW5hZ2VyCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCiBfX2FsbF9fID0gWwogICAgICdDb21wYXQzMicsCkBAIC04Miw2ICs4Myw3IEBACiAKICAgICAiIiIKIAorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IEVtYWlsTWVzc2FnZQogICAgIHV0ZjggPSBGYWxzZQogICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkgYi9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CmluZGV4IDhkZDcxMzAuLmFhMmZiN2MgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQpAQCAtMjksNiArMjksNyBAQAogIiIiIyIKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IHN5cwogZnJvbSAuIGltcG9ydCBhbGlhc2VzCiAKIF9jYWNoZSA9IHt9CkBAIC01NCw2ICs1NSw3IEBACiAgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShlbmNvZGluZywgYnl0ZXMpOgogICAgICAgICBlbmNvZGluZyA9IHN0cihlbmNvZGluZywgImFzY2lpIikKKwogICAgIGNoYXJzID0gW10KICAgICBwdW5jdCA9IEZhbHNlCiAgICAgZm9yIGMgaW4gZW5jb2Rpbmc6CkBAIC05Nyw2ICs5OSw4IEBACiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCdlbmNvZGluZ3MuJyArIG1vZG5hbWUsIGZyb21saXN0PV9pbXBvcnRfdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBtYXkgb2NjdXIgYmVjYXVzZSAnZW5jb2RpbmdzLihtb2RuYW1lKScgZG9lcyBub3QgZXhpc3QsCisgICAgICAgICAgICAjIG9yIGJlY2F1c2UgaXQgaW1wb3J0cyBhIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCAoc2VlIG1iY3MgYW5kIG9lbSkKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTAsMyArMTU0LDE2IEBACiAKICMgUmVnaXN0ZXIgdGhlIHNlYXJjaF9mdW5jdGlvbiBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5CiBjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQorCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgX2FsaWFzX21iY3MoZW5jb2RpbmcpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgICAgIGlmIGVuY29kaW5nID09IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgZW5jb2RpbmdzLm1iY3MKKyAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmdzLm1iY3MuZ2V0cmVnZW50cnkoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAjIEltcG9ydHMgbWF5IGZhaWwgd2hpbGUgd2UgYXJlIHNodXR0aW5nIGRvd24KKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvZGVjcy5yZWdpc3RlcihfYWxpYXNfbWJjcykKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQppbmRleCA2N2M4MjhkLi4yZTYzYzJmIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKKysrIGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CkBAIC00NTgsNiArNDU4LDcgQEAKICAgICAnbWFjdHVya2lzaCcgICAgICAgICA6ICdtYWNfdHVya2lzaCcsCiAKICAgICAjIG1iY3MgY29kZWMKKyAgICAnYW5zaScgICAgICAgICAgICAgICA6ICdtYmNzJywKICAgICAnZGJjcycgICAgICAgICAgICAgICA6ICdtYmNzJywKIAogICAgICMgcHRjcDE1NCBjb2RlYwpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9vZW0ucHkgYi9MaWIvZW5jb2RpbmdzL29lbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzM0MjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9vZW0ucHkKQEAgLTAsMCArMSw0MSBAQAorIiIiIFB5dGhvbiAnb2VtJyBDb2RlYyBmb3IgV2luZG93cworCisiIiIKKyMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgorIyBvbiBub24tV2luZG93cyBzeXN0ZW1zCitmcm9tIGNvZGVjcyBpbXBvcnQgb2VtX2VuY29kZSwgb2VtX2RlY29kZQorIyBmb3IgSW5jcmVtZW50YWxEZWNvZGVyLCBJbmNyZW1lbnRhbEVuY29kZXIsIC4uLgoraW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2RlZiBkZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgcmV0dXJuIG9lbV9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIG9lbV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IG9lbV9kZWNvZGUKKworY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIGVuY29kZSA9IG9lbV9lbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IG9lbV9kZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdvZW0nLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkgYi9MaWIvZW5zdXJlcGlwL19faW5pdF9fLnB5CmluZGV4IDI1YzU1NjcuLjlmNWQxNTEgMTAwNjQ0Ci0tLSBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkKKysrIGIvTGliL2Vuc3VyZXBpcC9fX2luaXRfXy5weQpAQCAtMTIsMTkgKzEyLDYgQEAKIAogX1BJUF9WRVJTSU9OID0gIjkuMC4xIgogCi0jIHBpcCBjdXJyZW50bHkgcmVxdWlyZXMgc3NsIHN1cHBvcnQsIHNvIHdlIHRyeSB0byBwcm92aWRlIGEgbmljZXIKLSMgZXJyb3IgbWVzc2FnZSB3aGVuIHRoYXQgaXMgbWlzc2luZyAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NzQ0KQotX01JU1NJTkdfU1NMX01FU1NBR0UgPSAoInBpcCB7fSByZXF1aXJlcyBTU0wvVExTIi5mb3JtYXQoX1BJUF9WRVJTSU9OKSkKLXRyeToKLSAgICBpbXBvcnQgc3NsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgc3NsID0gTm9uZQotICAgIGRlZiBfcmVxdWlyZV9zc2xfZm9yX3BpcCgpOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoX01JU1NJTkdfU1NMX01FU1NBR0UpCi1lbHNlOgotICAgIGRlZiBfcmVxdWlyZV9zc2xfZm9yX3BpcCgpOgotICAgICAgICBwYXNzCi0KIF9QUk9KRUNUUyA9IFsKICAgICAoInNldHVwdG9vbHMiLCBfU0VUVVBUT09MU19WRVJTSU9OKSwKICAgICAoInBpcCIsIF9QSVBfVkVSU0lPTiksCkBAIC03MSw3ICs1OCw2IEBACiAgICAgaWYgYWx0aW5zdGFsbCBhbmQgZGVmYXVsdF9waXA6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCB1c2UgYWx0aW5zdGFsbCBhbmQgZGVmYXVsdF9waXAgdG9nZXRoZXIiKQogCi0gICAgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKQogICAgIF9kaXNhYmxlX3BpcF9jb25maWd1cmF0aW9uX3NldHRpbmdzKCkKIAogICAgICMgQnkgZGVmYXVsdCwgaW5zdGFsbGluZyBwaXAgYW5kIHNldHVwdG9vbHMgaW5zdGFsbHMgYWxsIG9mIHRoZQpAQCAtMTMzLDcgKzExOSw2IEBACiAgICAgICAgIHByaW50KG1zZy5mb3JtYXQocGlwLl9fdmVyc2lvbl9fLCBfUElQX1ZFUlNJT04pLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIHJldHVybgogCi0gICAgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKQogICAgIF9kaXNhYmxlX3BpcF9jb25maWd1cmF0aW9uX3NldHRpbmdzKCkKIAogICAgICMgQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBwaXAgY29tbWFuZApAQCAtMTQ1LDExICsxMzAsNiBAQAogCiAKIGRlZiBfbWFpbihhcmd2PU5vbmUpOgotICAgIGlmIHNzbCBpcyBOb25lOgotICAgICAgICBwcmludCgiSWdub3JpbmcgZW5zdXJlcGlwIGZhaWx1cmU6IHt9Ii5mb3JtYXQoX01JU1NJTkdfU1NMX01FU1NBR0UpLAotICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybgotCiAgICAgaW1wb3J0IGFyZ3BhcnNlCiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0icHl0aG9uIC1tIGVuc3VyZXBpcCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKZGlmZiAtLWdpdCBhL0xpYi9lbnVtLnB5IGIvTGliL2VudW0ucHkKaW5kZXggYjg3ODdkMS4uZTc5YjAzOCAxMDA2NDQKLS0tIGEvTGliL2VudW0ucHkKKysrIGIvTGliL2VudW0ucHkKQEAgLTEsOCArMSwyMCBAQAogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUsIER5bmFtaWNDbGFzc0F0dHJpYnV0ZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgb3JfIGFzIF9vcl8KIAotX19hbGxfXyA9IFsnRW51bScsICdJbnRFbnVtJywgJ3VuaXF1ZSddCisjIHRyeSBfY29sbGVjdGlvbnMgZmlyc3QgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdAordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CisKKworX19hbGxfXyA9IFsKKyAgICAgICAgJ0VudW1NZXRhJywKKyAgICAgICAgJ0VudW0nLCAnSW50RW51bScsICdGbGFnJywgJ0ludEZsYWcnLAorICAgICAgICAnYXV0bycsICd1bmlxdWUnLAorICAgICAgICBdCiAKIAogZGVmIF9pc19kZXNjcmlwdG9yKG9iaik6CkBAIC0yOCw3ICs0MCw2IEBACiAgICAgICAgICAgICBuYW1lWy0yOi0xXSAhPSAnXycgYW5kCiAgICAgICAgICAgICBsZW4obmFtZSkgPiAyKQogCi0KIGRlZiBfbWFrZV9jbGFzc191bnBpY2tsYWJsZShjbHMpOgogICAgICIiIk1ha2UgdGhlIGdpdmVuIGNsYXNzIHVuLXBpY2tsYWJsZS4iIiIKICAgICBkZWYgX2JyZWFrX29uX2NhbGxfcmVkdWNlKHNlbGYsIHByb3RvKToKQEAgLTM2LDYgKzQ3LDEzIEBACiAgICAgY2xzLl9fcmVkdWNlX2V4X18gPSBfYnJlYWtfb25fY2FsbF9yZWR1Y2UKICAgICBjbHMuX19tb2R1bGVfXyA9ICc8dW5rbm93bj4nCiAKK19hdXRvX251bGwgPSBvYmplY3QoKQorY2xhc3MgYXV0bzoKKyAgICAiIiIKKyAgICBJbnN0YW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUgaW4gRW51bSBjbGFzcyBzdWl0ZXMuCisgICAgIiIiCisgICAgdmFsdWUgPSBfYXV0b19udWxsCisKIAogY2xhc3MgX0VudW1EaWN0KGRpY3QpOgogICAgICIiIlRyYWNrIGVudW0gbWVtYmVyIG9yZGVyIGFuZCBlbnN1cmUgbWVtYmVyIG5hbWVzIGFyZSBub3QgcmV1c2VkLgpAQCAtNDcsNiArNjUsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcyA9IFtdCisgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzID0gW10KIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgIiIiQ2hhbmdlcyBhbnl0aGluZyBub3QgZHVuZGVyZWQgb3Igbm90IGEgZGVzY3JpcHRvci4KQEAgLTU4LDIxICs3NywzMiBAQAogCiAgICAgICAgICIiIgogICAgICAgICBpZiBfaXNfc3VuZGVyKGtleSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbmFtZXNfIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIEVudW0gdXNlJykKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gKAorICAgICAgICAgICAgICAgICAgICAnX29yZGVyXycsICdfY3JlYXRlX3BzZXVkb19tZW1iZXJfJywKKyAgICAgICAgICAgICAgICAgICAgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXycsICdfbWlzc2luZ18nLAorICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICAgICAgaWYga2V5ID09ICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nOgorICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlJywgdmFsdWUpCiAgICAgICAgIGVsaWYgX2lzX2R1bmRlcihrZXkpOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYga2V5ID09ICdfX29yZGVyX18nOgorICAgICAgICAgICAgICAgIGtleSA9ICdfb3JkZXJfJwogICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9tZW1iZXJfbmFtZXM6CiAgICAgICAgICAgICAjIGRlc2NyaXB0b3Igb3ZlcndyaXRpbmcgYW4gZW51bT8KICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJXInICUga2V5KQogICAgICAgICBlbGlmIG5vdCBfaXNfZGVzY3JpcHRvcih2YWx1ZSk6CiAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgICAgICAjIGVudW0gb3ZlcndyaXRpbmcgYSBkZXNjcmlwdG9yPwotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignS2V5IGFscmVhZHkgZGVmaW5lZCBhczogJXInICUgc2VsZltrZXldKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgYWxyZWFkeSBkZWZpbmVkIGFzOiAlcicgJSAoa2V5LCBzZWxmW2tleV0pKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYXV0byk6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUudmFsdWUgPT0gX2F1dG9fbnVsbDoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUgPSBzZWxmLl9nZW5lcmF0ZV9uZXh0X3ZhbHVlKGtleSwgMSwgbGVuKHNlbGYuX21lbWJlcl9uYW1lcyksIHNlbGYuX2xhc3RfdmFsdWVzWzpdKQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUKICAgICAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcy5hcHBlbmQoa2V5KQorICAgICAgICAgICAgc2VsZi5fbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQogICAgICAgICBzdXBlcigpLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCiAKIAotCiAjIER1bW15IHZhbHVlIGZvciBFbnVtIGFzIEVudW1NZXRhIGV4cGxpY2l0bHkgY2hlY2tzIGZvciBpdCwgYnV0IG9mIGNvdXJzZQogIyB1bnRpbCBFbnVtTWV0YSBmaW5pc2hlcyBydW5uaW5nIHRoZSBmaXJzdCB0aW1lIHRoZSBFbnVtIGNsYXNzIGRvZXNuJ3QgZXhpc3QuCiAjIFRoaXMgaXMgYWxzbyB3aHkgdGhlcmUgYXJlIGNoZWNrcyBpbiBFbnVtTWV0YSBsaWtlIGBpZiBFbnVtIGlzIG5vdCBOb25lYApAQCAtODMsNyArMTEzLDEzIEBACiAgICAgIiIiTWV0YWNsYXNzIGZvciBFbnVtIiIiCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIGNscywgYmFzZXMpOgotICAgICAgICByZXR1cm4gX0VudW1EaWN0KCkKKyAgICAgICAgIyBjcmVhdGUgdGhlIG5hbWVzcGFjZSBkaWN0CisgICAgICAgIGVudW1fZGljdCA9IF9FbnVtRGljdCgpCisgICAgICAgICMgaW5oZXJpdCBwcmV2aW91cyBmbGFncyBhbmQgX2dlbmVyYXRlX25leHRfdmFsdWVfIGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtID0gbWV0YWNscy5fZ2V0X21peGluc18oYmFzZXMpCisgICAgICAgIGlmIGZpcnN0X2VudW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBlbnVtX2RpY3RbJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXyddID0gZ2V0YXR0cihmaXJzdF9lbnVtLCAnX2dlbmVyYXRlX25leHRfdmFsdWVfJywgTm9uZSkKKyAgICAgICAgcmV0dXJuIGVudW1fZGljdAogCiAgICAgZGVmIF9fbmV3X18obWV0YWNscywgY2xzLCBiYXNlcywgY2xhc3NkaWN0KToKICAgICAgICAgIyBhbiBFbnVtIGNsYXNzIGlzIGZpbmFsIG9uY2UgZW51bWVyYXRpb24gaXRlbXMgaGF2ZSBiZWVuIGRlZmluZWQ7IGl0CkBAIC05NiwxMiArMTMyLDE1IEBACiAKICAgICAgICAgIyBzYXZlIGVudW0gaXRlbXMgaW50byBzZXBhcmF0ZSBtYXBwaW5nIHNvIHRoZXkgZG9uJ3QgZ2V0IGJha2VkIGludG8KICAgICAgICAgIyB0aGUgbmV3IGNsYXNzCi0gICAgICAgIG1lbWJlcnMgPSB7azogY2xhc3NkaWN0W2tdIGZvciBrIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzfQorICAgICAgICBlbnVtX21lbWJlcnMgPSB7azogY2xhc3NkaWN0W2tdIGZvciBrIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzfQogICAgICAgICBmb3IgbmFtZSBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKICAgICAgICAgICAgIGRlbCBjbGFzc2RpY3RbbmFtZV0KIAorICAgICAgICAjIGFkanVzdCB0aGUgc3VuZGVycworICAgICAgICBfb3JkZXJfID0gY2xhc3NkaWN0LnBvcCgnX29yZGVyXycsIE5vbmUpCisKICAgICAgICAgIyBjaGVjayBmb3IgaWxsZWdhbCBlbnVtIG5hbWVzIChhbnkgb3RoZXJzPykKLSAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChtZW1iZXJzKSAmIHsnbXJvJywgfQorICAgICAgICBpbnZhbGlkX25hbWVzID0gc2V0KGVudW1fbWVtYmVycykgJiB7J21ybycsIH0KICAgICAgICAgaWYgaW52YWxpZF9uYW1lczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgZW51bSBtZW1iZXIgbmFtZTogezB9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgJywnLmpvaW4oaW52YWxpZF9uYW1lcykpKQpAQCAtMTQ1LDcgKzE4NCw3IEBACiAgICAgICAgICMgYSBjdXN0b20gX19uZXdfXyBpcyBkb2luZyBzb21ldGhpbmcgZnVua3kgd2l0aCB0aGUgdmFsdWVzIC0tIHN1Y2ggYXMKICAgICAgICAgIyBhdXRvLW51bWJlcmluZyA7KQogICAgICAgICBmb3IgbWVtYmVyX25hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6Ci0gICAgICAgICAgICB2YWx1ZSA9IG1lbWJlcnNbbWVtYmVyX25hbWVdCisgICAgICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyc1ttZW1iZXJfbmFtZV0KICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgYXJncyA9ICh2YWx1ZSwgKQogICAgICAgICAgICAgZWxzZToKQEAgLTE1OSw3ICsxOTgsMTAgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIgPSBfX25ld19fKGVudW1fY2xhc3MsICphcmdzKQogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGVudW1fbWVtYmVyLCAnX3ZhbHVlXycpOgotICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gbWVtYmVyX3R5cGUoKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIG1lbWJlcl90eXBlIGlzIG9iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IG1lbWJlcl90eXBlKCphcmdzKQogICAgICAgICAgICAgdmFsdWUgPSBlbnVtX21lbWJlci5fdmFsdWVfCiAgICAgICAgICAgICBlbnVtX21lbWJlci5fbmFtZV8gPSBtZW1iZXJfbmFtZQogICAgICAgICAgICAgZW51bV9tZW1iZXIuX19vYmpjbGFzc19fID0gZW51bV9jbGFzcwpAQCAtMjA0LDYgKzI0NiwxNCBAQAogICAgICAgICAgICAgaWYgc2F2ZV9uZXc6CiAgICAgICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19tZW1iZXJfXyA9IF9fbmV3X18KICAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfXyA9IEVudW0uX19uZXdfXworCisgICAgICAgICMgcHkzIHN1cHBvcnQgZm9yIGRlZmluaXRpb24gb3JkZXIgKGhlbHBzIGtlZXAgcHkyL3B5MyBjb2RlIGluIHN5bmMpCisgICAgICAgIGlmIF9vcmRlcl8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKF9vcmRlcl8sIHN0cik6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9IF9vcmRlcl8ucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQorICAgICAgICAgICAgaWYgX29yZGVyXyAhPSBlbnVtX2NsYXNzLl9tZW1iZXJfbmFtZXNfOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKQorCiAgICAgICAgIHJldHVybiBlbnVtX2NsYXNzCiAKICAgICBkZWYgX19ib29sX18oc2VsZik6CkBAIC0yMTcsNyArMjY3LDcgQEAKIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJvdGggd2hlbiBhbiBlbnVtIGNsYXNzIGlzIGdpdmVuIGEgdmFsdWUgdG8gbWF0Y2gKICAgICAgICAgdG8gYW4gZW51bWVyYXRpb24gbWVtYmVyIChpLmUuIENvbG9yKDMpKSBhbmQgZm9yIHRoZSBmdW5jdGlvbmFsIEFQSQotICAgICAgICAoaS5lLiBDb2xvciA9IEVudW0oJ0NvbG9yJywgbmFtZXM9J3JlZCBncmVlbiBibHVlJykpLgorICAgICAgICAoaS5lLiBDb2xvciA9IEVudW0oJ0NvbG9yJywgbmFtZXM9J1JFRCBHUkVFTiBCTFVFJykpLgogCiAgICAgICAgIFdoZW4gdXNlZCBmb3IgdGhlIGZ1bmN0aW9uYWwgQVBJOgogCkBAIC0zMjUsMTMgKzM3NSwxOSBAQAogICAgICAgICAiIiIKICAgICAgICAgbWV0YWNscyA9IGNscy5fX2NsYXNzX18KICAgICAgICAgYmFzZXMgPSAoY2xzLCApIGlmIHR5cGUgaXMgTm9uZSBlbHNlICh0eXBlLCBjbHMpCisgICAgICAgIF8sIGZpcnN0X2VudW0gPSBjbHMuX2dldF9taXhpbnNfKGJhc2VzKQogICAgICAgICBjbGFzc2RpY3QgPSBtZXRhY2xzLl9fcHJlcGFyZV9fKGNsYXNzX25hbWUsIGJhc2VzKQogCiAgICAgICAgICMgc3BlY2lhbCBwcm9jZXNzaW5nIG5lZWRlZCBmb3IgbmFtZXM/CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsIHN0cik6CiAgICAgICAgICAgICBuYW1lcyA9IG5hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgKHR1cGxlLCBsaXN0KSkgYW5kIGlzaW5zdGFuY2UobmFtZXNbMF0sIHN0cik6Ci0gICAgICAgICAgICBuYW1lcyA9IFsoZSwgaSkgZm9yIChpLCBlKSBpbiBlbnVtZXJhdGUobmFtZXMsIHN0YXJ0KV0KKyAgICAgICAgICAgIG9yaWdpbmFsX25hbWVzLCBuYW1lcyA9IG5hbWVzLCBbXQorICAgICAgICAgICAgbGFzdF92YWx1ZXMgPSBbXQorICAgICAgICAgICAgZm9yIGNvdW50LCBuYW1lIGluIGVudW1lcmF0ZShvcmlnaW5hbF9uYW1lcyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBmaXJzdF9lbnVtLl9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzWzpdKQorICAgICAgICAgICAgICAgIGxhc3RfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKIAogICAgICAgICAjIEhlcmUsIG5hbWVzIGlzIGVpdGhlciBhbiBpdGVyYWJsZSBvZiAobmFtZSwgdmFsdWUpIG9yIGEgbWFwcGluZy4KICAgICAgICAgZm9yIGl0ZW0gaW4gbmFtZXM6CkBAIC00NjEsNyArNTE3LDcgQEAKICAgICAgICAgIyB3aXRob3V0IGNhbGxpbmcgdGhpcyBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWV0YWNsYXNzJwogICAgICAgICAjIF9fY2FsbF9fIChpLmUuIENvbG9yKDMpICksIGFuZCBieSBwaWNrbGUKICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgY2xzOgotICAgICAgICAgICAgIyBGb3IgbG9va3VwcyBsaWtlIENvbG9yKENvbG9yLnJlZCkKKyAgICAgICAgICAgICMgRm9yIGxvb2t1cHMgbGlrZSBDb2xvcihDb2xvci5SRUQpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgIyBieS12YWx1ZSBzZWFyY2ggZm9yIGEgbWF0Y2hpbmcgZW51bSBtZW1iZXIKICAgICAgICAgIyBzZWUgaWYgaXQncyBpbiB0aGUgcmV2ZXJzZSBtYXBwaW5nIChmb3IgaGFzaGFibGUgdmFsdWVzKQpAQCAtNDczLDYgKzUyOSwyMCBAQAogICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBjbHMuX21lbWJlcl9tYXBfLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIG1lbWJlci5fdmFsdWVfID09IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtYmVyCisgICAgICAgICMgc3RpbGwgbm90IGZvdW5kIC0tIHRyeSBfbWlzc2luZ18gaG9vaworICAgICAgICByZXR1cm4gY2xzLl9taXNzaW5nXyh2YWx1ZSkKKworICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgICAgIGZvciBsYXN0X3ZhbHVlIGluIHJldmVyc2VkKGxhc3RfdmFsdWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF92YWx1ZSArIDEKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC01NDQsOCArNjE0LDIxIEBACiAgICAgICAgICAgICBzb3VyY2UgPSB2YXJzKHNvdXJjZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNvdXJjZSA9IG1vZHVsZV9nbG9iYWxzCi0gICAgICAgIG1lbWJlcnMgPSB7bmFtZTogdmFsdWUgZm9yIG5hbWUsIHZhbHVlIGluIHNvdXJjZS5pdGVtcygpCi0gICAgICAgICAgICAgICAgaWYgZmlsdGVyKG5hbWUpfQorICAgICAgICAjIFdlIHVzZSBhbiBPcmRlcmVkRGljdCBvZiBzb3J0ZWQgc291cmNlIGtleXMgc28gdGhhdCB0aGUKKyAgICAgICAgIyBfdmFsdWUybWVtYmVyX21hcCBpcyBwb3B1bGF0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgZXZlcnkgdGltZQorICAgICAgICAjIGZvciBhIGNvbnNpc3RlbnQgcmV2ZXJzZSBtYXBwaW5nIG9mIG51bWJlciB0byBuYW1lIHdoZW4gdGhlcmUKKyAgICAgICAgIyBhcmUgbXVsdGlwbGUgbmFtZXMgZm9yIHRoZSBzYW1lIG51bWJlciByYXRoZXIgdGhhbiB2YXJ5aW5nCisgICAgICAgICMgYmV0d2VlbiBydW5zIGR1ZSB0byBoYXNoIHJhbmRvbWl6YXRpb24gb2YgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5LgorICAgICAgICBtZW1iZXJzID0gWworICAgICAgICAgICAgICAgIChuYW1lLCBzb3VyY2VbbmFtZV0pCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc291cmNlLmtleXMoKQorICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBzb3J0IGJ5IHZhbHVlCisgICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiAodFsxXSwgdFswXSkpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIHVubGVzcyBzb21lIHZhbHVlcyBhcmVuJ3QgY29tcGFyYWJsZSwgaW4gd2hpY2ggY2FzZSBzb3J0IGJ5IG5hbWUKKyAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6IHRbMF0pCiAgICAgICAgIGNscyA9IGNscyhuYW1lLCBtZW1iZXJzLCBtb2R1bGU9bW9kdWxlKQogICAgICAgICBjbHMuX19yZWR1Y2VfZXhfXyA9IF9yZWR1Y2VfZXhfYnlfbmFtZQogICAgICAgICBtb2R1bGVfZ2xvYmFscy51cGRhdGUoY2xzLl9fbWVtYmVyc19fKQpAQCAtNTYwLDYgKzY0MywxODAgQEAKIGRlZiBfcmVkdWNlX2V4X2J5X25hbWUoc2VsZiwgcHJvdG8pOgogICAgIHJldHVybiBzZWxmLm5hbWUKIAorY2xhc3MgRmxhZyhFbnVtKToKKyAgICAiIiJTdXBwb3J0IGZvciBmbGFncyIiIgorCisgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBuZXh0IHZhbHVlIHdoZW4gbm90IGdpdmVuLgorCisgICAgICAgIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIKKyAgICAgICAgc3RhcnQ6IHRoZSBpbml0aXRhbCBzdGFydCB2YWx1ZSBvciBOb25lCisgICAgICAgIGNvdW50OiB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIG1lbWJlcnMKKyAgICAgICAgbGFzdF92YWx1ZTogdGhlIGxhc3QgdmFsdWUgYXNzaWduZWQgb3IgTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNvdW50OgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0IGlmIHN0YXJ0IGlzIG5vdCBOb25lIGVsc2UgMQorICAgICAgICBmb3IgbGFzdF92YWx1ZSBpbiByZXZlcnNlZChsYXN0X3ZhbHVlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGlnaF9iaXQgPSBfaGlnaF9iaXQobGFzdF92YWx1ZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgRmxhZyB2YWx1ZTogJXInICUgbGFzdF92YWx1ZSkgZnJvbSBOb25lCisgICAgICAgIHJldHVybiAyICoqIChoaWdoX2JpdCsxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKKyAgICAgICAgb3JpZ2luYWxfdmFsdWUgPSB2YWx1ZQorICAgICAgICBpZiB2YWx1ZSA8IDA6CisgICAgICAgICAgICB2YWx1ZSA9IH52YWx1ZQorICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSBjbHMuX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyh2YWx1ZSkKKyAgICAgICAgaWYgb3JpZ2luYWxfdmFsdWUgPCAwOgorICAgICAgICAgICAgcG9zc2libGVfbWVtYmVyID0gfnBvc3NpYmxlX21lbWJlcgorICAgICAgICByZXR1cm4gcG9zc2libGVfbWVtYmVyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIGNvbXBvc2l0ZSBtZW1iZXIgaWZmIHZhbHVlIGNvbnRhaW5zIG9ubHkgbWVtYmVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgIyB2ZXJpZnkgYWxsIGJpdHMgYXJlIGFjY291bnRlZCBmb3IKKyAgICAgICAgICAgIF8sIGV4dHJhX2ZsYWdzID0gX2RlY29tcG9zZShjbHMsIHZhbHVlKQorICAgICAgICAgICAgaWYgZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICAgICAgIyBjb25zdHJ1Y3QgYSBzaW5nbGV0b24gZW51bSBwc2V1ZG8tbWVtYmVyCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgcHNldWRvX21lbWJlci5fbmFtZV8gPSBOb25lCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCisgICAgICAgIHJldHVybiBwc2V1ZG9fbWVtYmVyCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3RoZXIuX3ZhbHVlXyAmIHNlbGYuX3ZhbHVlXyA9PSBvdGhlci5fdmFsdWVfCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8JXMuJXM6ICVyPicgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKGNscywgc2VsZi5fdmFsdWVfKQorICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlICgKKyAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZV8sCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXykKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShjbHMsIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgaWYgbGVuKG1lbWJlcnMpID09IDEgYW5kIG1lbWJlcnNbMF0uX25hbWVfIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVyJyAlIChjbHMuX19uYW1lX18sIG1lbWJlcnNbMF0uX3ZhbHVlXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXMnICUgKAorICAgICAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICd8Jy5qb2luKFtzdHIobS5fbmFtZV8gb3IgbS5fdmFsdWVfKSBmb3IgbSBpbiBtZW1iZXJzXSksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyAmIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX194b3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShzZWxmLl9fY2xhc3NfXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBpbnZlcnRlZF9tZW1iZXJzID0gWworICAgICAgICAgICAgICAgIG0gZm9yIG0gaW4gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgICAgICAgICBpZiBtIG5vdCBpbiBtZW1iZXJzIGFuZCBub3QgbS5fdmFsdWVfICYgc2VsZi5fdmFsdWVfCisgICAgICAgICAgICAgICAgXQorICAgICAgICBpbnZlcnRlZCA9IHJlZHVjZShfb3JfLCBpbnZlcnRlZF9tZW1iZXJzLCBzZWxmLl9fY2xhc3NfXygwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludmVydGVkKQorCisKK2NsYXNzIEludEZsYWcoaW50LCBGbGFnKToKKyAgICAiIiJTdXBwb3J0IGZvciBpbnRlZ2VyLWJhc2VkIEZsYWdzIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgbmV3X21lbWJlciA9IGNscy5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKHZhbHVlKQorICAgICAgICByZXR1cm4gbmV3X21lbWJlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfcHNldWRvX21lbWJlcl8oY2xzLCB2YWx1ZSk6CisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgbmVlZF90b19jcmVhdGUgPSBbdmFsdWVdCisgICAgICAgICAgICAjIGdldCB1bmFjY291bnRlZCBmb3IgYml0cworICAgICAgICAgICAgXywgZXh0cmFfZmxhZ3MgPSBfZGVjb21wb3NlKGNscywgdmFsdWUpCisgICAgICAgICAgICAjIHRpbWVyID0gMTAKKyAgICAgICAgICAgIHdoaWxlIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICMgdGltZXIgLT0gMQorICAgICAgICAgICAgICAgIGJpdCA9IF9oaWdoX2JpdChleHRyYV9mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlID0gMiAqKiBiaXQKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ192YWx1ZSBub3QgaW4gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgbm90IGluIG5lZWRfdG9fY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBuZWVkX3RvX2NyZWF0ZS5hcHBlbmQoZmxhZ192YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBleHRyYV9mbGFncyA9PSAtZmxhZ192YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgPSAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgXj0gZmxhZ192YWx1ZQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHJldmVyc2VkKG5lZWRfdG9fY3JlYXRlKToKKyAgICAgICAgICAgICAgICAjIGNvbnN0cnVjdCBzaW5nbGV0b24gcHNldWRvLW1lbWJlcnMKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gcHNldWRvX21lbWJlcgorICAgICAgICByZXR1cm4gcHNldWRvX21lbWJlcgorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gJiBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgX19yb3JfXyA9IF9fb3JfXworICAgIF9fcmFuZF9fID0gX19hbmRfXworICAgIF9fcnhvcl9fID0gX194b3JfXworCisgICAgZGVmIF9faW52ZXJ0X18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKH5zZWxmLl92YWx1ZV8pCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitkZWYgX2hpZ2hfYml0KHZhbHVlKToKKyAgICAiIiJyZXR1cm5zIGluZGV4IG9mIGhpZ2hlc3QgYml0LCBvciAtMSBpZiB2YWx1ZSBpcyB6ZXJvIG9yIG5lZ2F0aXZlIiIiCisgICAgcmV0dXJuIHZhbHVlLmJpdF9sZW5ndGgoKSAtIDEKKwogZGVmIHVuaXF1ZShlbnVtZXJhdGlvbik6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIGZvciBlbnVtZXJhdGlvbnMgZW5zdXJpbmcgdW5pcXVlIG1lbWJlciB2YWx1ZXMuIiIiCiAgICAgZHVwbGljYXRlcyA9IFtdCkBAIC01NzIsMyArODI5LDQwIEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2R1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gJXI6ICVzJyAlCiAgICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKICAgICByZXR1cm4gZW51bWVyYXRpb24KKworZGVmIF9kZWNvbXBvc2UoZmxhZywgdmFsdWUpOgorICAgICIiIkV4dHJhY3QgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdmFsdWUuIiIiCisgICAgIyBfZGVjb21wb3NlIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgbmFtZWQKKyAgICBub3RfY292ZXJlZCA9IHZhbHVlCisgICAgbmVnYXRpdmUgPSB2YWx1ZSA8IDAKKyAgICBpZiBuZWdhdGl2ZToKKyAgICAgICAgIyBvbmx5IGNoZWNrIGZvciBuYW1lZCBmbGFncworICAgICAgICBmbGFnc190b19jaGVjayA9IFsKKyAgICAgICAgICAgICAgICAobSwgdikKKyAgICAgICAgICAgICAgICBmb3IgdiwgbSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXy5pdGVtcygpCisgICAgICAgICAgICAgICAgaWYgbS5uYW1lIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgICMgY2hlY2sgZm9yIG5hbWVkIGZsYWdzIGFuZCBwb3dlcnMtb2YtdHdvIGZsYWdzCisgICAgICAgIGZsYWdzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgICAgIChtLCB2KQorICAgICAgICAgICAgICAgIGZvciB2LCBtIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBtLm5hbWUgaXMgbm90IE5vbmUgb3IgX3Bvd2VyX29mX3R3byh2KQorICAgICAgICAgICAgICAgIF0KKyAgICBtZW1iZXJzID0gW10KKyAgICBmb3IgbWVtYmVyLCBtZW1iZXJfdmFsdWUgaW4gZmxhZ3NfdG9fY2hlY2s6CisgICAgICAgIGlmIG1lbWJlcl92YWx1ZSBhbmQgbWVtYmVyX3ZhbHVlICYgdmFsdWUgPT0gbWVtYmVyX3ZhbHVlOgorICAgICAgICAgICAgbWVtYmVycy5hcHBlbmQobWVtYmVyKQorICAgICAgICAgICAgbm90X2NvdmVyZWQgJj0gfm1lbWJlcl92YWx1ZQorICAgIGlmIG5vdCBtZW1iZXJzIGFuZCB2YWx1ZSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXzoKKyAgICAgICAgbWVtYmVycy5hcHBlbmQoZmxhZy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdKQorICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIG06IG0uX3ZhbHVlXywgcmV2ZXJzZT1UcnVlKQorICAgIGlmIGxlbihtZW1iZXJzKSA+IDEgYW5kIG1lbWJlcnNbMF0udmFsdWUgPT0gdmFsdWU6CisgICAgICAgICMgd2UgaGF2ZSB0aGUgYnJlYWtkb3duLCBkb24ndCBuZWVkIHRoZSB2YWx1ZSBtZW1iZXIgaXRzZWxmCisgICAgICAgIG1lbWJlcnMucG9wKDApCisgICAgcmV0dXJuIG1lbWJlcnMsIG5vdF9jb3ZlcmVkCisKK2RlZiBfcG93ZXJfb2ZfdHdvKHZhbHVlKToKKyAgICBpZiB2YWx1ZSA8IDE6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiB2YWx1ZSA9PSAyICoqIF9oaWdoX2JpdCh2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IGQyYjUyMDYuLjcyMWZlOWMgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtNzUsMTMgKzc1LDExIEBACiBpbXBvcnQgc3lzLCBvcwogCiBfX2FsbF9fID0gWyJpbnB1dCIsICJjbG9zZSIsICJuZXh0ZmlsZSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZWxpbmVubyIsCi0gICAgICAgICAgICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCJdCisgICAgICAgICAgICJmaWxlbm8iLCAiaXNmaXJzdGxpbmUiLCAiaXNzdGRpbiIsICJGaWxlSW5wdXQiLCAiaG9va19jb21wcmVzc2VkIiwKKyAgICAgICAgICAgImhvb2tfZW5jb2RlZCJdCiAKIF9zdGF0ZSA9IE5vbmUKIAotIyBObyBsb25nZXIgdXNlZAotREVGQVVMVF9CVUZTSVpFID0gOCoxMDI0Ci0KIGRlZiBpbnB1dChmaWxlcz1Ob25lLCBpbnBsYWNlPUZhbHNlLCBiYWNrdXA9IiIsIGJ1ZnNpemU9MCwKICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRoZSBGaWxlSW5wdXQgY2xhc3MsIHdoaWNoIGNhbiBiZSBpdGVyYXRlZC4KQEAgLTIwMSw2ICsxOTksMTAgQEAKICAgICAgICAgc2VsZi5fZmlsZXMgPSBmaWxlcwogICAgICAgICBzZWxmLl9pbnBsYWNlID0gaW5wbGFjZQogICAgICAgICBzZWxmLl9iYWNrdXAgPSBiYWNrdXAKKyAgICAgICAgaWYgYnVmc2l6ZToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignYnVmc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSBOb25lCkBAIC0zOTgsOSArNDAwLDkgQEAKICAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAKIAotZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZyk6CitkZWYgaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9Tm9uZSk6CiAgICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKLSAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA2MzMwYjBjLi5mZDNiNTE0IDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMTA2LDQgKzEwNiw0IEBACiAgICAgICAgICAgICAgICAgcmVzID0gJyVzWyVzXScgJSAocmVzLCBzdHVmZikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlcyA9IHJlcyArIHJlLmVzY2FwZShjKQotICAgIHJldHVybiByZXMgKyAnXFooP21zKScKKyAgICByZXR1cm4gcicoP3M6JXMpXFonICUgcmVzCmRpZmYgLS1naXQgYS9MaWIvZnJhY3Rpb25zLnB5IGIvTGliL2ZyYWN0aW9ucy5weQppbmRleCA5YWFiYWIzLi44MzMwMjAyIDEwMDY0NAotLS0gYS9MaWIvZnJhY3Rpb25zLnB5CisrKyBiL0xpYi9mcmFjdGlvbnMucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICBfX3Nsb3RzX18gPSAoJ19udW1lcmF0b3InLCAnX2Rlbm9taW5hdG9yJykKIAogICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KLSAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lLCBfbm9ybWFsaXplPVRydWUpOgorICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsICosIF9ub3JtYWxpemU9VHJ1ZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMgYSBSYXRpb25hbC4KIAogICAgICAgICBUYWtlcyBhIHN0cmluZyBsaWtlICczLzInIG9yICcxLjUnLCBhbm90aGVyIFJhdGlvbmFsIGluc3RhbmNlLCBhCkBAIC0xMjUsMTcgKzEyNSw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuZGVub21pbmF0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uIGZyb20gZmxvYXQKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IEZyYWN0aW9uLmZyb21fZmxvYXQobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIERlY2ltYWwpOgotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9kZWNpbWFsKG51bWVyYXRvcikKLSAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSB2YWx1ZS5fbnVtZXJhdG9yCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSB2YWx1ZS5fZGVub21pbmF0b3IKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIChmbG9hdCwgRGVjaW1hbCkpOgorICAgICAgICAgICAgICAgICMgRXhhY3QgY29udmVyc2lvbgorICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgc3RyKToKQEAgLTIxMCwxMCArMjAyLDYgQEAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzLmZyb21fZmxvYXQoKSBvbmx5IHRha2VzIGZsb2F0cywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBmLCB0eXBlKGYpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc25hbihmKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc2luZihmKToKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKICAgICAgICAgcmV0dXJuIGNscygqZi5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTIyNiwxOSArMjE0LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAiJXMuZnJvbV9kZWNpbWFsKCkgb25seSB0YWtlcyBEZWNpbWFscywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBkZWMsIHR5cGUoZGVjKS5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigKLSAgICAgICAgICAgICAgICAiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19uYW4oKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVzIHRvICVzLiIgJSAoZGVjLCBjbHMuX19uYW1lX18pKQotICAgICAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGRlYy5hc190dXBsZSgpCi0gICAgICAgIGRpZ2l0cyA9IGludCgnJy5qb2luKG1hcChzdHIsIGRpZ2l0cykpKQotICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgZGlnaXRzID0gLWRpZ2l0cwotICAgICAgICBpZiBleHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBjbHMoZGlnaXRzICogMTAgKiogZXhwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMsIDEwICoqIC1leHApCisgICAgICAgIHJldHVybiBjbHMoKmRlYy5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBkZWYgbGltaXRfZGVub21pbmF0b3Ioc2VsZiwgbWF4X2Rlbm9taW5hdG9yPTEwMDAwMDApOgogICAgICAgICAiIiJDbG9zZXN0IEZyYWN0aW9uIHRvIHNlbGYgd2l0aCBkZW5vbWluYXRvciBhdCBtb3N0IG1heF9kZW5vbWluYXRvci4KZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IGM0MTZkODUuLjhmMzZmNTMgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtMzYsMTMgKzM2LDEyIEBACiAjIE1vZGlmaWVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIHRvIGFkZCBUTFMgc3VwcG9ydC4KICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgd2FybmluZ3MKIGZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAogCi1fX2FsbF9fID0gWyJGVFAiXQorX19hbGxfXyA9IFsiRlRQIiwgImVycm9yX3JlcGx5IiwgImVycm9yX3RlbXAiLCAiZXJyb3JfcGVybSIsICJlcnJvcl9wcm90byIsCisgICAgICAgICAgICJhbGxfZXJyb3JzIl0KIAogIyBNYWdpYyBudW1iZXIgZnJvbSA8c29ja2V0Lmg+CiBNU0dfT09CID0gMHgxICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIGRhdGEgb3V0IG9mIGJhbmQKQEAgLTcyOSw2ICs3MjgsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CkBAIC04MjIsNyArODI1LDcgQEAKICAgICBpZiBfMTUwX3JlIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBfMTUwX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgICAgICIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQorICAgICAgICAgICAgciIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQogICAgIG0gPSBfMTUwX3JlLm1hdGNoKHJlc3ApCiAgICAgaWYgbm90IG06CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCA2MGNmM2M0Li44OWYyY2Y0IDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTIxLDYgKzIxLDcgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUKIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha0tleURpY3Rpb25hcnkKK2Zyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IFJMb2NrCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMzcsMjYgKzIzOCw4MyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBQdXJlbHkgZnVuY3Rpb25hbCwgbm8gZGVzY3JpcHRvciBiZWhhdmlvdXIKLWRlZiBwYXJ0aWFsKGZ1bmMsICphcmdzLCAqKmtleXdvcmRzKToKK2NsYXNzIHBhcnRpYWw6CiAgICAgIiIiTmV3IGZ1bmN0aW9uIHdpdGggcGFydGlhbCBhcHBsaWNhdGlvbiBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzCiAgICAgYW5kIGtleXdvcmRzLgogICAgICIiIgotICAgIGlmIGhhc2F0dHIoZnVuYywgJ2Z1bmMnKToKLSAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKLSAgICAgICAgdG1wa3cgPSBmdW5jLmtleXdvcmRzLmNvcHkoKQotICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCi0gICAgICAgIGtleXdvcmRzID0gdG1wa3cKLSAgICAgICAgZGVsIHRtcGt3Ci0gICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKIAotICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgotICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQotICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQotICAgICAgICByZXR1cm4gZnVuYygqKGFyZ3MgKyBmYXJncyksICoqbmV3a2V5d29yZHMpCi0gICAgbmV3ZnVuYy5mdW5jID0gZnVuYwotICAgIG5ld2Z1bmMuYXJncyA9IGFyZ3MKLSAgICBuZXdmdW5jLmtleXdvcmRzID0ga2V5d29yZHMKLSAgICByZXR1cm4gbmV3ZnVuYworICAgIF9fc2xvdHNfXyA9ICJmdW5jIiwgImFyZ3MiLCAia2V5d29yZHMiLCAiX19kaWN0X18iLCAiX193ZWFrcmVmX18iCisKKyAgICBkZWYgX19uZXdfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX25ld19fJyBvZiBwYXJ0aWFsIG5lZWRzIGFuIGFyZ3VtZW50IikKKyAgICAgICAgaWYgbGVuKGFyZ3MpIDwgMjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHlwZSAncGFydGlhbCcgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikKKyAgICAgICAgY2xzLCBmdW5jLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBjYWxsYWJsZSIpCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKQorCisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgImZ1bmMiKToKKyAgICAgICAgICAgIGFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCisgICAgICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCisgICAgICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgICAgICBrZXl3b3JkcyA9IHRtcGt3CisgICAgICAgICAgICBkZWwgdG1wa3cKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKKworICAgICAgICBzZWxmID0gc3VwZXIocGFydGlhbCwgY2xzKS5fX25ld19fKGNscykKKworICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtleXdvcmRzCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19jYWxsX18oKmFyZ3MsICoqa2V5d29yZHMpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGVzY3JpcHRvciAnX19jYWxsX18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgbmV3a2V5d29yZHMgPSBzZWxmLmtleXdvcmRzLmNvcHkoKQorICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKnNlbGYuYXJncywgKmFyZ3MsICoqbmV3a2V5d29yZHMpCisKKyAgICBAcmVjdXJzaXZlX3JlcHIoKQorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcXVhbG5hbWUgPSB0eXBlKHNlbGYpLl9fcXVhbG5hbWVfXworICAgICAgICBhcmdzID0gW3JlcHIoc2VsZi5mdW5jKV0KKyAgICAgICAgYXJncy5leHRlbmQocmVwcih4KSBmb3IgeCBpbiBzZWxmLmFyZ3MpCisgICAgICAgIGFyZ3MuZXh0ZW5kKGYie2t9PXt2IXJ9IiBmb3IgKGssIHYpIGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKKyAgICAgICAgaWYgdHlwZShzZWxmKS5fX21vZHVsZV9fID09ICJmdW5jdG9vbHMiOgorICAgICAgICAgICAgcmV0dXJuIGYiZnVuY3Rvb2xzLntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorICAgICAgICByZXR1cm4gZiJ7cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gdHlwZShzZWxmKSwgKHNlbGYuZnVuYywpLCAoc2VsZi5mdW5jLCBzZWxmLmFyZ3MsCisgICAgICAgICAgICAgICBzZWxmLmtleXdvcmRzIG9yIE5vbmUsIHNlbGYuX19kaWN0X18gb3IgTm9uZSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdGF0ZSwgdHVwbGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCB0byBfX3NldHN0YXRlX18gbXVzdCBiZSBhIHR1cGxlIikKKyAgICAgICAgaWYgbGVuKHN0YXRlKSAhPSA0OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiZXhwZWN0ZWQgNCBpdGVtcyBpbiBzdGF0ZSwgZ290IHtsZW4oc3RhdGUpfSIpCisgICAgICAgIGZ1bmMsIGFyZ3MsIGt3ZHMsIG5hbWVzcGFjZSA9IHN0YXRlCisgICAgICAgIGlmIChub3QgY2FsbGFibGUoZnVuYykgb3Igbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpIG9yCisgICAgICAgICAgIChrd2RzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShrd2RzLCBkaWN0KSkgb3IKKyAgICAgICAgICAgKG5hbWVzcGFjZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZXNwYWNlLCBkaWN0KSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIHBhcnRpYWwgc3RhdGUiKQorCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKSAjIGp1c3QgaW4gY2FzZSBpdCdzIGEgc3ViY2xhc3MKKyAgICAgICAgaWYga3dkcyBpcyBOb25lOgorICAgICAgICAgICAga3dkcyA9IHt9CisgICAgICAgIGVsaWYgdHlwZShrd2RzKSBpcyBub3QgZGljdDogIyBYWFggZG9lcyBpdCBuZWVkIHRvIGJlICpleGFjdGx5KiBkaWN0PworICAgICAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykKKyAgICAgICAgaWYgbmFtZXNwYWNlIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lc3BhY2UgPSB7fQorCisgICAgICAgIHNlbGYuX19kaWN0X18gPSBuYW1lc3BhY2UKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYua2V5d29yZHMgPSBrd2RzCiAKIHRyeToKICAgICBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTM2Myw3ICs0MjEsNyBAQAogZGVmIF9tYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCwKICAgICAgICAgICAgICBrd2RfbWFyayA9IChvYmplY3QoKSwpLAogICAgICAgICAgICAgIGZhc3R0eXBlcyA9IHtpbnQsIHN0ciwgZnJvemVuc2V0LCB0eXBlKE5vbmUpfSwKLSAgICAgICAgICAgICBzb3J0ZWQ9c29ydGVkLCB0dXBsZT10dXBsZSwgdHlwZT10eXBlLCBsZW49bGVuKToKKyAgICAgICAgICAgICB0dXBsZT10dXBsZSwgdHlwZT10eXBlLCBsZW49bGVuKToKICAgICAiIiJNYWtlIGEgY2FjaGUga2V5IGZyb20gb3B0aW9uYWxseSB0eXBlZCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cwogCiAgICAgVGhlIGtleSBpcyBjb25zdHJ1Y3RlZCBpbiBhIHdheSB0aGF0IGlzIGZsYXQgYXMgcG9zc2libGUgcmF0aGVyIHRoYW4KQEAgLTM3NiwxNCArNDM0LDEzIEBACiAgICAgIiIiCiAgICAga2V5ID0gYXJncwogICAgIGlmIGt3ZHM6Ci0gICAgICAgIHNvcnRlZF9pdGVtcyA9IHNvcnRlZChrd2RzLml0ZW1zKCkpCiAgICAgICAgIGtleSArPSBrd2RfbWFyawotICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWRfaXRlbXM6CisgICAgICAgIGZvciBpdGVtIGluIGt3ZHMuaXRlbXMoKToKICAgICAgICAgICAgIGtleSArPSBpdGVtCiAgICAgaWYgdHlwZWQ6CiAgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciB2IGluIGFyZ3MpCiAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgaywgdiBpbiBzb3J0ZWRfaXRlbXMpCisgICAgICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgdiBpbiBrd2RzLnZhbHVlcygpKQogICAgIGVsaWYgbGVuKGtleSkgPT0gMSBhbmQgdHlwZShrZXlbMF0pIGluIGZhc3R0eXBlczoKICAgICAgICAgcmV0dXJuIGtleVswXQogICAgIHJldHVybiBfSGFzaGVkU2VxKGtleSkKQEAgLTQzNSw2ICs0OTIsNyBAQAogICAgIGhpdHMgPSBtaXNzZXMgPSAwCiAgICAgZnVsbCA9IEZhbHNlCiAgICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQorICAgIGNhY2hlX2xlbiA9IGNhY2hlLl9fbGVuX18gICMgZ2V0IGNhY2hlIHNpemUgd2l0aG91dCBjYWxsaW5nIGxlbigpCiAgICAgbG9jayA9IFJMb2NrKCkgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKICAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdICAgICAjIGluaXRpYWxpemUgYnkgcG9pbnRpbmcgdG8gc2VsZgpAQCAtNTE2LDE2ICs1NzQsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KICAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KICAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBjYWNoZVtrZXldID0gbGluawotICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19sZW5fXygpIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBsZW4oKSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgY2FjaGVfbGVuIGJvdW5kIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBsZW4oKSBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIHdyYXBwZWQgaW4gYW4gbHJ1X2NhY2hlIGl0c2VsZi4KLSAgICAgICAgICAgICAgICAgICAgZnVsbCA9IChjYWNoZS5fX2xlbl9fKCkgPj0gbWF4c2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgZnVsbCA9IChjYWNoZV9sZW4oKSA+PSBtYXhzaXplKQogICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgY2FjaGVfaW5mbygpOgogICAgICAgICAiIiJSZXBvcnQgY2FjaGUgc3RhdGlzdGljcyIiIgogICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGNhY2hlLl9fbGVuX18oKSkKKyAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY2FjaGVfbGVuKCkpCiAKICAgICBkZWYgY2FjaGVfY2xlYXIoKToKICAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGFuZCBjYWNoZSBzdGF0aXN0aWNzIiIiCmRpZmYgLS1naXQgYS9MaWIvZ2VuZXJpY3BhdGgucHkgYi9MaWIvZ2VuZXJpY3BhdGgucHkKaW5kZXggNjcxNDA2MS4uMzAzYjNiMyAxMDA2NDQKLS0tIGEvTGliL2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi9nZW5lcmljcGF0aC5weQpAQCAtNjksNiArNjksMTIgQEAKIGRlZiBjb21tb25wcmVmaXgobSk6CiAgICAgIkdpdmVuIGEgbGlzdCBvZiBwYXRobmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIGxlYWRpbmcgY29tcG9uZW50IgogICAgIGlmIG5vdCBtOiByZXR1cm4gJycKKyAgICAjIFNvbWUgcGVvcGxlIHBhc3MgaW4gYSBsaXN0IG9mIHBhdGhuYW1lIHBhcnRzIHRvIG9wZXJhdGUgaW4gYW4gT1MtYWdub3N0aWMKKyAgICAjIGZhc2hpb247IGRvbid0IHRyeSB0byB0cmFuc2xhdGUgaW4gdGhhdCBjYXNlIGFzIHRoYXQncyBhbiBhYnVzZSBvZiB0aGUKKyAgICAjIEFQSSBhbmQgdGhleSBhcmUgYWxyZWFkeSBkb2luZyB3aGF0IHRoZXkgbmVlZCB0byBiZSBPUy1hZ25vc3RpYyBhbmQgc28KKyAgICAjIHRoZXkgbW9zdCBsaWtlbHkgd29uJ3QgYmUgdXNpbmcgYW4gb3MuUGF0aExpa2Ugb2JqZWN0IGluIHRoZSBzdWJsaXN0cy4KKyAgICBpZiBub3QgaXNpbnN0YW5jZShtWzBdLCAobGlzdCwgdHVwbGUpKToKKyAgICAgICAgbSA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIG0pKQogICAgIHMxID0gbWluKG0pCiAgICAgczIgPSBtYXgobSkKICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgpkaWZmIC0tZ2l0IGEvTGliL2dsb2IucHkgYi9MaWIvZ2xvYi5weQppbmRleCAxNjMzMGQ4Li4wMDJjZDkyIDEwMDY0NAotLS0gYS9MaWIvZ2xvYi5weQorKysgYi9MaWIvZ2xvYi5weQpAQCAtMzAsMTUgKzMwLDE2IEBACiAgICAgSWYgcmVjdXJzaXZlIGlzIHRydWUsIHRoZSBwYXR0ZXJuICcqKicgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kCiAgICAgemVybyBvciBtb3JlIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3Rvcmllcy4KICAgICAiIiIKLSAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKQorICAgIGl0ID0gX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUsIEZhbHNlKQogICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKHBhdGhuYW1lKToKICAgICAgICAgcyA9IG5leHQoaXQpICAjIHNraXAgZW1wdHkgc3RyaW5nCiAgICAgICAgIGFzc2VydCBub3QgcwogICAgIHJldHVybiBpdAogCi1kZWYgX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUpOgorZGVmIF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlLCBkaXJvbmx5KToKICAgICBkaXJuYW1lLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgaWYgbm90IGhhc19tYWdpYyhwYXRobmFtZSk6CisgICAgICAgIGFzc2VydCBub3QgZGlyb25seQogICAgICAgICBpZiBiYXNlbmFtZToKICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhwYXRobmFtZSk6CiAgICAgICAgICAgICAgICAgeWllbGQgcGF0aG5hbWUKQEAgLTQ5LDQ3ICs1MCwzOSBAQAogICAgICAgICByZXR1cm4KICAgICBpZiBub3QgZGlybmFtZToKICAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgotICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMihkaXJuYW1lLCBiYXNlbmFtZSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX2dsb2IyKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMShkaXJuYW1lLCBiYXNlbmFtZSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX2dsb2IxKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KQogICAgICAgICByZXR1cm4KICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgdGhlIGFyZ3VtZW50IGl0c2VsZiBhcyBhIGRpcm5hbWUgaWYgaXQgaXMgYQogICAgICMgZHJpdmUgb3IgVU5DIHBhdGguICBQcmV2ZW50IGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhIGRyaXZlIG9yIFVOQyBwYXRoCiAgICAgIyBjb250YWlucyBtYWdpYyBjaGFyYWN0ZXJzIChpLmUuIHInXFw/XEM6JykuCiAgICAgaWYgZGlybmFtZSAhPSBwYXRobmFtZSBhbmQgaGFzX21hZ2ljKGRpcm5hbWUpOgotICAgICAgICBkaXJzID0gX2lnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZSkKKyAgICAgICAgZGlycyA9IF9pZ2xvYihkaXJuYW1lLCByZWN1cnNpdmUsIFRydWUpCiAgICAgZWxzZToKICAgICAgICAgZGlycyA9IFtkaXJuYW1lXQogICAgIGlmIGhhc19tYWdpYyhiYXNlbmFtZSk6CiAgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKLSAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjIKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IyCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IxCisgICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMQogICAgIGVsc2U6Ci0gICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjAKKyAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjAKICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgotICAgICAgICBmb3IgbmFtZSBpbiBnbG9iX2luX2RpcihkaXJuYW1lLCBiYXNlbmFtZSk6CisgICAgICAgIGZvciBuYW1lIGluIGdsb2JfaW5fZGlyKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KToKICAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihkaXJuYW1lLCBuYW1lKQogCiAjIFRoZXNlIDIgaGVscGVyIGZ1bmN0aW9ucyBub24tcmVjdXJzaXZlbHkgZ2xvYiBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KLSMgVGhleSByZXR1cm4gYSBsaXN0IG9mIGJhc2VuYW1lcy4gYGdsb2IxYCBhY2NlcHRzIGEgcGF0dGVybiB3aGlsZSBgZ2xvYjBgCisjIFRoZXkgcmV0dXJuIGEgbGlzdCBvZiBiYXNlbmFtZXMuICBfZ2xvYjEgYWNjZXB0cyBhIHBhdHRlcm4gd2hpbGUgX2dsb2IwCiAjIHRha2VzIGEgbGl0ZXJhbCBiYXNlbmFtZSAoc28gaXQgb25seSBoYXMgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UpLgogCi1kZWYgZ2xvYjEoZGlybmFtZSwgcGF0dGVybik6Ci0gICAgaWYgbm90IGRpcm5hbWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgYnl0ZXMpOgotICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKLSAgICB0cnk6Ci0gICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByZXR1cm4gW10KK2RlZiBfZ2xvYjEoZGlybmFtZSwgcGF0dGVybiwgZGlyb25seSk6CisgICAgbmFtZXMgPSBsaXN0KF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpKQogICAgIGlmIG5vdCBfaXNoaWRkZW4ocGF0dGVybik6Ci0gICAgICAgIG5hbWVzID0gW3ggZm9yIHggaW4gbmFtZXMgaWYgbm90IF9pc2hpZGRlbih4KV0KKyAgICAgICAgbmFtZXMgPSAoeCBmb3IgeCBpbiBuYW1lcyBpZiBub3QgX2lzaGlkZGVuKHgpKQogICAgIHJldHVybiBmbm1hdGNoLmZpbHRlcihuYW1lcywgcGF0dGVybikKIAotZGVmIGdsb2IwKGRpcm5hbWUsIGJhc2VuYW1lKToKK2RlZiBfZ2xvYjAoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpOgogICAgIGlmIG5vdCBiYXNlbmFtZToKICAgICAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIGFuIGVtcHR5IGJhc2VuYW1lIGZvciBwYXRocyBlbmRpbmcgd2l0aCBhCiAgICAgICAgICMgZGlyZWN0b3J5IHNlcGFyYXRvci4gICdxKngvJyBzaG91bGQgbWF0Y2ggb25seSBkaXJlY3Rvcmllcy4KQEAgLTEwMCwzMCArOTMsNDkgQEAKICAgICAgICAgICAgIHJldHVybiBbYmFzZW5hbWVdCiAgICAgcmV0dXJuIFtdCiAKKyMgRm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbm90IHB1YmxpYyBidXQgY2FuIGJlIHVzZWQgYnkgdGhpcmQtcGFydHkgY29kZS4KKworZGVmIGdsb2IwKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIHJldHVybiBfZ2xvYjAoZGlybmFtZSwgcGF0dGVybiwgRmFsc2UpCisKK2RlZiBnbG9iMShkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICByZXR1cm4gX2dsb2IxKGRpcm5hbWUsIHBhdHRlcm4sIEZhbHNlKQorCiAjIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbAogIyBkaXJlY3RvcnkuCiAKLWRlZiBnbG9iMihkaXJuYW1lLCBwYXR0ZXJuKToKK2RlZiBfZ2xvYjIoZGlybmFtZSwgcGF0dGVybiwgZGlyb25seSk6CiAgICAgYXNzZXJ0IF9pc3JlY3Vyc2l2ZShwYXR0ZXJuKQogICAgIHlpZWxkIHBhdHRlcm5bOjBdCi0gICAgeWllbGQgZnJvbSBfcmxpc3RkaXIoZGlybmFtZSkKKyAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJvbmx5KQogCi0jIFJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCi1kZWYgX3JsaXN0ZGlyKGRpcm5hbWUpOgorIyBJZiBkaXJvbmx5IGlzIGZhbHNlLCB5aWVsZHMgYWxsIGZpbGUgbmFtZXMgaW5zaWRlIGEgZGlyZWN0b3J5LgorIyBJZiBkaXJvbmx5IGlzIHRydWUsIHlpZWxkcyBvbmx5IGRpcmVjdG9yeSBuYW1lcy4KK2RlZiBfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KToKICAgICBpZiBub3QgZGlybmFtZToKICAgICAgICAgaWYgaXNpbnN0YW5jZShkaXJuYW1lLCBieXRlcyk6CiAgICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgogICAgIHRyeToKLSAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoZGlybmFtZSkgYXMgaXQ6CisgICAgICAgICAgICBmb3IgZW50cnkgaW4gaXQ6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4KKworIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgorZGVmIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJvbmx5KToKKyAgICBuYW1lcyA9IGxpc3QoX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSkpCiAgICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgIGlmIG5vdCBfaXNoaWRkZW4oeCk6CiAgICAgICAgICAgICB5aWVsZCB4CiAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHgpIGlmIGRpcm5hbWUgZWxzZSB4Ci0gICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCk6CisgICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCwgZGlyb25seSk6CiAgICAgICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHgsIHkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCBkYTQ0NzllLi43NmFiNDk3IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtNDksNyArNDksNyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQogCiAgICAgZ3pfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQotICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCiAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgogICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKE5vbmUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwsIGZpbGVuYW1lKQpAQCAtMTY1LDYgKzE2NSw4IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IGdldGF0dHIoZmlsZW9iaiwgJ25hbWUnLCAnJykKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICBpZiBtb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2RlID0gZ2V0YXR0cihmaWxlb2JqLCAnbW9kZScsICdyYicpCiAKQEAgLTM1NywxMCArMzU5LDEwIEBACiAgICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLm9mZnNldDoKICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOZWdhdGl2ZSBzZWVrIGluIHdyaXRlIG1vZGUnKQogICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgY2h1bmsgPSBieXRlcygxMDI0KQorICAgICAgICAgICAgY2h1bmsgPSBiJ1wwJyAqIDEwMjQKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50IC8vIDEwMjQpOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2h1bmspCi0gICAgICAgICAgICBzZWxmLndyaXRlKGJ5dGVzKGNvdW50ICUgMTAyNCkpCisgICAgICAgICAgICBzZWxmLndyaXRlKGInXDAnICogKGNvdW50ICUgMTAyNCkpCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKZGlmZiAtLWdpdCBhL0xpYi9oYXNobGliLnB5IGIvTGliL2hhc2hsaWIucHkKaW5kZXggMzE2Y2VjZS4uMDUzYTdhZCAxMDA2NDQKLS0tIGEvTGliL2hhc2hsaWIucHkKKysrIGIvTGliL2hhc2hsaWIucHkKQEAgLTQsMTQgKzQsMTUgQEAKIAogX19kb2NfXyA9ICIiImhhc2hsaWIgbW9kdWxlIC0gQSBjb21tb24gaW50ZXJmYWNlIHRvIG1hbnkgaGFzaCBmdW5jdGlvbnMuCiAKLW5ldyhuYW1lLCBkYXRhPWInJykgLSByZXR1cm5zIGEgbmV3IGhhc2ggb2JqZWN0IGltcGxlbWVudGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBoYXNoIGZ1bmN0aW9uOyBpbml0aWFsaXppbmcgdGhlIGhhc2gKLSAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCituZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKSAtIHJldHVybnMgYSBuZXcgaGFzaCBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBoYXNoIGZ1bmN0aW9uOyBpbml0aWFsaXppbmcgdGhlIGhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGdpdmVuIGJpbmFyeSBkYXRhLgogCiBOYW1lZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlLCB0aGVzZSBhcmUgZmFzdGVyCiB0aGFuIHVzaW5nIG5ldyhuYW1lKToKIAotbWQ1KCksIHNoYTEoKSwgc2hhMjI0KCksIHNoYTI1NigpLCBzaGEzODQoKSwgYW5kIHNoYTUxMigpCittZDUoKSwgc2hhMSgpLCBzaGEyMjQoKSwgc2hhMjU2KCksIHNoYTM4NCgpLCBzaGE1MTIoKSwgYmxha2UyYigpLCBibGFrZTJzKCksCitzaGEzXzIyNCwgc2hhM18yNTYsIHNoYTNfMzg0LCBzaGEzXzUxMiwgc2hha2VfMTI4LCBhbmQgc2hha2VfMjU2LgogCiBNb3JlIGFsZ29yaXRobXMgbWF5IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtIGJ1dCB0aGUgYWJvdmUgYXJlIGd1YXJhbnRlZWQKIHRvIGV4aXN0LiAgU2VlIHRoZSBhbGdvcml0aG1zX2d1YXJhbnRlZWQgYW5kIGFsZ29yaXRobXNfYXZhaWxhYmxlIGF0dHJpYnV0ZXMKQEAgLTU0LDcgKzU1LDExIEBACiAKICMgVGhpcyB0dXBsZSBhbmQgX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcigpIG11c3QgYmUgbW9kaWZpZWQgaWYgYSBuZXcKICMgYWx3YXlzIGF2YWlsYWJsZSBhbGdvcml0aG0gaXMgYWRkZWQuCi1fX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicpCitfX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1NicpCisKIAogYWxnb3JpdGhtc19ndWFyYW50ZWVkID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKIGFsZ29yaXRobXNfYXZhaWxhYmxlID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKQEAgLTg1LDYgKzkwLDE5IEBACiAgICAgICAgICAgICBpbXBvcnQgX3NoYTUxMgogICAgICAgICAgICAgY2FjaGVbJ1NIQTM4NCddID0gY2FjaGVbJ3NoYTM4NCddID0gX3NoYTUxMi5zaGEzODQKICAgICAgICAgICAgIGNhY2hlWydTSEE1MTInXSA9IGNhY2hlWydzaGE1MTInXSA9IF9zaGE1MTIuc2hhNTEyCisgICAgICAgIGVsaWYgbmFtZSBpbiAoJ2JsYWtlMmInLCAnYmxha2UycycpOgorICAgICAgICAgICAgaW1wb3J0IF9ibGFrZTIKKyAgICAgICAgICAgIGNhY2hlWydibGFrZTJiJ10gPSBfYmxha2UyLmJsYWtlMmIKKyAgICAgICAgICAgIGNhY2hlWydibGFrZTJzJ10gPSBfYmxha2UyLmJsYWtlMnMKKyAgICAgICAgZWxpZiBuYW1lIGluIHsnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2J306CisgICAgICAgICAgICBpbXBvcnQgX3NoYTMKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzIyNCddID0gX3NoYTMuc2hhM18yMjQKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzI1NiddID0gX3NoYTMuc2hhM18yNTYKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzM4NCddID0gX3NoYTMuc2hhM18zODQKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzUxMiddID0gX3NoYTMuc2hhM181MTIKKyAgICAgICAgICAgIGNhY2hlWydzaGFrZV8xMjgnXSA9IF9zaGEzLnNoYWtlXzEyOAorICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzI1NiddID0gX3NoYTMuc2hha2VfMjU2CiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzICAjIG5vIGV4dGVuc2lvbiBtb2R1bGUsIHRoaXMgaGFzaCBpcyB1bnN1cHBvcnRlZC4KIApAQCAtOTYsNiArMTE0LDkgQEAKIAogCiBkZWYgX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcihuYW1lKToKKyAgICBpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CisgICAgICAgICMgUHJlZmVyIG91ciBibGFrZTIgaW1wbGVtZW50YXRpb24uCisgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpCiAgICAgdHJ5OgogICAgICAgICBmID0gZ2V0YXR0cihfaGFzaGxpYiwgJ29wZW5zc2xfJyArIG5hbWUpCiAgICAgICAgICMgQWxsb3cgdGhlIEMgbW9kdWxlIHRvIHJhaXNlIFZhbHVlRXJyb3IuICBUaGUgZnVuY3Rpb24gd2lsbCBiZQpAQCAtMTA3LDE3ICsxMjgsMjMgQEAKICAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKIAogCi1kZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycpOgorZGVmIF9fcHlfbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncyk6CisgICAgIiIibmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlCisgICAgbmFtZWQgYWxnb3JpdGhtOyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCisgICAgIiIiCisgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSwgKiprd2FyZ3MpCisKKworZGVmIF9faGFzaF9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKICAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZSBuYW1lZCBhbGdvcml0aG07CiAgICAgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgogICAgICIiIgotICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEpCi0KLQotZGVmIF9faGFzaF9uZXcobmFtZSwgZGF0YT1iJycpOgotICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlIG5hbWVkIGFsZ29yaXRobTsKLSAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCi0gICAgIiIiCisgICAgaWYgbmFtZSBpbiB7J2JsYWtlMmInLCAnYmxha2Uycyd9OgorICAgICAgICAjIFByZWZlciBvdXIgYmxha2UyIGltcGxlbWVudGF0aW9uLgorICAgICAgICAjIE9wZW5TU0wgMS4xLjAgY29tZXMgd2l0aCBhIGxpbWl0ZWQgaW1wbGVtZW50YXRpb24gb2YgYmxha2UyYi9zLgorICAgICAgICAjIEl0IGRvZXMgbmVpdGhlciBzdXBwb3J0IGtleWVkIGJsYWtlMiBub3IgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZQorICAgICAgICAjIHNhbHQsIHBlcnNvbmFsLCB0cmVlIGhhc2hpbmcgb3IgU1NFLgorICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhLCAqKmt3YXJncykKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBfaGFzaGxpYi5uZXcobmFtZSwgZGF0YSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTIwMiw2ICsyMjksMTIgQEAKIAogICAgICAgICByZXR1cm4gZGtleVs6ZGtsZW5dCiAKK3RyeToKKyAgICAjIE9wZW5TU0wncyBzY3J5cHQgcmVxdWlyZXMgT3BlblNTTCAxLjErCisgICAgZnJvbSBfaGFzaGxpYiBpbXBvcnQgc2NyeXB0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCiAKIGZvciBfX2Z1bmNfbmFtZSBpbiBfX2Fsd2F5c19zdXBwb3J0ZWQ6CiAgICAgIyB0cnkgdGhlbSBhbGwsIHNvbWUgbWF5IG5vdCB3b3JrIGR1ZSB0byB0aGUgT3BlblNTTApAQCAtMjEyLDYgKzI0NSw3IEBACiAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdjb2RlIGZvciBoYXNoICVzIHdhcyBub3QgZm91bmQuJywgX19mdW5jX25hbWUpCiAKKwogIyBDbGVhbnVwIGxvY2FscygpCiBkZWwgX19hbHdheXNfc3VwcG9ydGVkLCBfX2Z1bmNfbmFtZSwgX19nZXRfaGFzaAogZGVsIF9fcHlfbmV3LCBfX2hhc2hfbmV3LCBfX2dldF9vcGVuc3NsX2NvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MaWIvaG1hYy5weSBiL0xpYi9obWFjLnB5CmluZGV4IDc3Nzg1YTIuLjEyMTAyOWEgMTAwNjQ0Ci0tLSBhL0xpYi9obWFjLnB5CisrKyBiL0xpYi9obWFjLnB5CkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgIGlmIGxlbihrZXkpID4gYmxvY2tzaXplOgogICAgICAgICAgICAga2V5ID0gc2VsZi5kaWdlc3RfY29ucyhrZXkpLmRpZ2VzdCgpCiAKLSAgICAgICAga2V5ID0ga2V5ICsgYnl0ZXMoYmxvY2tzaXplIC0gbGVuKGtleSkpCisgICAgICAgIGtleSA9IGtleS5sanVzdChibG9ja3NpemUsIGInXDAnKQogICAgICAgICBzZWxmLm91dGVyLnVwZGF0ZShrZXkudHJhbnNsYXRlKHRyYW5zXzVDKSkKICAgICAgICAgc2VsZi5pbm5lci51cGRhdGUoa2V5LnRyYW5zbGF0ZSh0cmFuc18zNikpCiAgICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCBiNzgxYzYzLi5lZjg2OWJjIDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0zNCw3ICszNCw3IEBACiAjICAgICBleHBsb2RlLCBzbyBkb24ndCBkbyBpdC4KICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1vcGVuLXN0YXRlCiAjIGFuZCBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctbmFtZS1zdGF0ZQotdGFnZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQordGFnZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUocicoW2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qKSg/OlxzfC8oPyE+KSkqJykKIGF0dHJmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgKICAgICByJygoPzw9W1wnIlxzL10pW15ccy8+XVteXHMvPT5dKikoXHMqPStccyonCiAgICAgcicoXCdbXlwnXSpcJ3wiW14iXSoifCg/IVtcJyJdKVtePlxzXSopKT8oPzpcc3wvKD8hPikpKicpCkBAIC01Niw3ICs1Niw3IEBACiBlbmRlbmR0YWcgPSByZS5jb21waWxlKCc+JykKICMgdGhlIEhUTUwgNSBzcGVjLCBzZWN0aW9uIDguMS4yLjIsIGRvZXNuJ3QgYWxsb3cgc3BhY2VzIGJldHdlZW4KICMgPC8gYW5kIHRoZSB0YWcgbmFtZSwgc28gbWF5YmUgdGhpcyBzaG91bGQgYmUgZml4ZWQKLWVuZHRhZ2ZpbmQgPSByZS5jb21waWxlKCc8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCitlbmR0YWdmaW5kID0gcmUuY29tcGlsZShyJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2NsaWVudC5weSBiL0xpYi9odHRwL2NsaWVudC5weQppbmRleCAzNTJjMTAxLi5hOGU1OWI5IDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jbGllbnQucHkKKysrIGIvTGliL2h0dHAvY2xpZW50LnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiSFRUUC8xLjEgY2xpZW50IGxpYnJhcnkKK3IiIiJIVFRQLzEuMSBjbGllbnQgbGlicmFyeQogCiA8aW50cm8gc3R1ZmYgZ29lcyBoZXJlPgogPG90aGVyIHN0dWZmLCB0b28+CkBAIC00MjAsNiArNDIwLDcgQEAKICAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJBbHdheXMgcmV0dXJucyBUcnVlIiIiCiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAjIEVuZCBvZiAicmF3IHN0cmVhbSIgbWV0aG9kcwpAQCAtNDY3LDYgKzQ2OCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBieXRlYXJyYXkgYiBhbmQgcmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIDAKIApAQCAtNzA2LDYgKzcxMSwxNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5mcC5maWxlbm8oKQogCiAgICAgZGVmIGdldGhlYWRlcihzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAnJydSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIG1hdGNoaW5nICpuYW1lKi4KKworICAgICAgICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hpbmcgaGVhZGVycywgdGhlIHZhbHVlcyBhcmUKKyAgICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGNvbW1hcyBhbmQgc3BhY2VzLgorCisgICAgICAgIElmIG5vIG1hdGNoaW5nIGhlYWRlciBpcyBmb3VuZCwgcmV0dXJucyAqZGVmYXVsdCogb3IgTm9uZSBpZgorICAgICAgICB0aGUgKmRlZmF1bHQqIGlzIG5vdCBzcGVjaWZpZWQuCisKKyAgICAgICAgSWYgdGhlIGhlYWRlcnMgYXJlIHVua25vd24sIHJhaXNlcyBodHRwLmNsaWVudC5SZXNwb25zZU5vdFJlYWR5LgorCisgICAgICAgICcnJwogICAgICAgICBpZiBzZWxmLmhlYWRlcnMgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFJlc3BvbnNlTm90UmVhZHkoKQogICAgICAgICBoZWFkZXJzID0gc2VsZi5oZWFkZXJzLmdldF9hbGwobmFtZSkgb3IgZGVmYXVsdApAQCAtNzI4LDEyICs3NDQsNDUgQEAKICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkLXN0eWxlIHVybGxpYiByZXNwb25zZXMuCiAKICAgICBkZWYgaW5mbyhzZWxmKToKKyAgICAgICAgJycnUmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgbWltZXRvb2xzLk1lc3NhZ2UgY29udGFpbmluZworICAgICAgICBtZXRhLWluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBIVFRQLCB0aGVzZSBoZWFkZXJzIGFyZSB0aG9zZSByZXR1cm5lZCBieQorICAgICAgICB0aGUgc2VydmVyIGF0IHRoZSBoZWFkIG9mIHRoZSByZXRyaWV2ZWQgSFRNTCBwYWdlIChpbmNsdWRpbmcKKyAgICAgICAgQ29udGVudC1MZW5ndGggYW5kIENvbnRlbnQtVHlwZSkuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEZUUCwgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgd2lsbCBiZQorICAgICAgICBwcmVzZW50IGlmIChhcyBpcyBub3cgdXN1YWwpIHRoZSBzZXJ2ZXIgcGFzc2VkIGJhY2sgYSBmaWxlCisgICAgICAgIGxlbmd0aCBpbiByZXNwb25zZSB0byB0aGUgRlRQIHJldHJpZXZhbCByZXF1ZXN0LiBBCisgICAgICAgIENvbnRlbnQtVHlwZSBoZWFkZXIgd2lsbCBiZSBwcmVzZW50IGlmIHRoZSBNSU1FIHR5cGUgY2FuIGJlCisgICAgICAgIGd1ZXNzZWQuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIGxvY2FsLWZpbGUsIHJldHVybmVkIGhlYWRlcnMgd2lsbCBpbmNsdWRlCisgICAgICAgIGEgRGF0ZSByZXByZXNlbnRpbmcgdGhlIGZpbGUncyBsYXN0LW1vZGlmaWVkIHRpbWUsIGEKKyAgICAgICAgQ29udGVudC1MZW5ndGggZ2l2aW5nIGZpbGUgc2l6ZSwgYW5kIGEgQ29udGVudC1UeXBlCisgICAgICAgIGNvbnRhaW5pbmcgYSBndWVzcyBhdCB0aGUgZmlsZSdzIHR5cGUuIFNlZSBhbHNvIHRoZQorICAgICAgICBkZXNjcmlwdGlvbiBvZiB0aGUgbWltZXRvb2xzIG1vZHVsZS4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVycwogCiAgICAgZGVmIGdldHVybChzZWxmKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSByZWFsIFVSTCBvZiB0aGUgcGFnZS4KKworICAgICAgICBJbiBzb21lIGNhc2VzLCB0aGUgSFRUUCBzZXJ2ZXIgcmVkaXJlY3RzIGEgY2xpZW50IHRvIGFub3RoZXIKKyAgICAgICAgVVJMLiBUaGUgdXJsb3BlbigpIGZ1bmN0aW9uIGhhbmRsZXMgdGhpcyB0cmFuc3BhcmVudGx5LCBidXQgaW4KKyAgICAgICAgc29tZSBjYXNlcyB0aGUgY2FsbGVyIG5lZWRzIHRvIGtub3cgd2hpY2ggVVJMIHRoZSBjbGllbnQgd2FzCisgICAgICAgIHJlZGlyZWN0ZWQgdG8uIFRoZSBnZXR1cmwoKSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0IGF0IHRoaXMKKyAgICAgICAgcmVkaXJlY3RlZCBVUkwuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLnVybAogCiAgICAgZGVmIGdldGNvZGUoc2VsZik6CisgICAgICAgICcnJ1JldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZSB0aGF0IHdhcyBzZW50IHdpdGggdGhlIHJlc3BvbnNlLAorICAgICAgICBvciBOb25lIGlmIHRoZSBVUkwgaXMgbm90IGFuIEhUVFAgVVJMLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi5zdGF0dXMKIAogY2xhc3MgSFRUUENvbm5lY3Rpb246CkBAIC03NDYsNiArNzk1LDQ0IEBACiAgICAgYXV0b19vcGVuID0gMQogICAgIGRlYnVnbGV2ZWwgPSAwCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9pc190ZXh0SU8oc3RyZWFtKToKKyAgICAgICAgIiIiVGVzdCB3aGV0aGVyIGEgZmlsZS1saWtlIG9iamVjdCBpcyBhIHRleHQgb3IgYSBiaW5hcnkgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uoc3RyZWFtLCBpby5UZXh0SU9CYXNlKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCk6CisgICAgICAgICIiIkdldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuCisKKyAgICAgICAgSWYgdGhlIGJvZHkgaXMgTm9uZSwgd2Ugc2V0IENvbnRlbnQtTGVuZ3RoOiAwIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0CisgICAgICAgIGEgYm9keSAoUkZDIDcyMzAsIFNlY3Rpb24gMy4zLjIpLiBXZSBhbHNvIHNldCB0aGUgQ29udGVudC1MZW5ndGggZm9yCisgICAgICAgIGFueSBtZXRob2QgaWYgdGhlIGJvZHkgaXMgYSBzdHIgb3IgYnl0ZXMtbGlrZSBvYmplY3QgYW5kIG5vdCBhIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBib2R5IGlzIE5vbmU6CisgICAgICAgICAgICAjIGRvIGFuIGV4cGxpY2l0IGNoZWNrIGZvciBub3QgTm9uZSBoZXJlIHRvIGRpc3Rpbmd1aXNoCisgICAgICAgICAgICAjIGJldHdlZW4gdW5zZXQgYW5kIHNldCBidXQgZW1wdHkKKyAgICAgICAgICAgIGlmIG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgaGFzYXR0cihib2R5LCAncmVhZCcpOgorICAgICAgICAgICAgIyBmaWxlLWxpa2Ugb2JqZWN0LgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGRvZXMgaXQgaW1wbGVtZW50IHRoZSBidWZmZXIgcHJvdG9jb2wgKGJ5dGVzLCBieXRlYXJyYXksIGFycmF5KT8KKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhib2R5KQorICAgICAgICAgICAgcmV0dXJuIG12Lm5ieXRlcworICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keSwgc3RyKToKKyAgICAgICAgICAgIHJldHVybiBsZW4oYm9keSkKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CkBAIC04ODQsMTggKzk3MSw5IEBACiAgICAgICAgIGlmIGhhc2F0dHIoZGF0YSwgInJlYWQiKSA6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHByaW50KCJzZW5kSW5nIGEgcmVhZCgpYWJsZSIpCi0gICAgICAgICAgICBlbmNvZGUgPSBGYWxzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZGUgPSBkYXRhLm1vZGUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIGlvLkJ5dGVzSU8gYW5kIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzIGRvbid0IGhhdmUgYSBgbW9kZWAKLSAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCisgICAgICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8oZGF0YSkKKyAgICAgICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YS5yZWFkKGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgpAQCAtOTIxLDcgKzk5OSwyMiBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChzKQogCi0gICAgZGVmIF9zZW5kX291dHB1dChzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSk6CisgICAgZGVmIF9yZWFkX3JlYWRhYmxlKHNlbGYsIHJlYWRhYmxlKToKKyAgICAgICAgYmxvY2tzaXplID0gODE5MgorICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgcHJpbnQoInNlbmRJbmcgYSByZWFkKClhYmxlIikKKyAgICAgICAgZW5jb2RlID0gc2VsZi5faXNfdGV4dElPKHJlYWRhYmxlKQorICAgICAgICBpZiBlbmNvZGUgYW5kIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGFibG9jayA9IHJlYWRhYmxlLnJlYWQoYmxvY2tzaXplKQorICAgICAgICAgICAgaWYgbm90IGRhdGFibG9jazoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgZW5jb2RlOgorICAgICAgICAgICAgICAgIGRhdGFibG9jayA9IGRhdGFibG9jay5lbmNvZGUoImlzby04ODU5LTEiKQorICAgICAgICAgICAgeWllbGQgZGF0YWJsb2NrCisKKyAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIlNlbmQgdGhlIGN1cnJlbnRseSBidWZmZXJlZCByZXF1ZXN0IGFuZCBjbGVhciB0aGUgYnVmZmVyLgogCiAgICAgICAgIEFwcGVuZHMgYW4gZXh0cmEgXFxyXFxuIHRvIHRoZSBidWZmZXIuCkBAIC05MzAsMTAgKzEwMjMsNTAgQEAKICAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZCgoYiIiLCBiIiIpKQogICAgICAgICBtc2cgPSBiIlxyXG4iLmpvaW4oc2VsZi5fYnVmZmVyKQogICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzpdCi0KICAgICAgICAgc2VsZi5zZW5kKG1zZykKKwogICAgICAgICBpZiBtZXNzYWdlX2JvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNlbmQobWVzc2FnZV9ib2R5KQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIHRvIG1lc3NhZ2VfYm9keQorICAgICAgICAgICAgaWYgaGFzYXR0cihtZXNzYWdlX2JvZHksICdyZWFkJyk6CisgICAgICAgICAgICAgICAgIyBMZXQgZmlsZS1saWtlIHRha2UgcHJlY2VkZW5jZSBvdmVyIGJ5dGUtbGlrZS4gIFRoaXMKKyAgICAgICAgICAgICAgICAjIGlzIG5lZWRlZCB0byBhbGxvdyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBtbWFwJ2VkCisgICAgICAgICAgICAgICAgIyBmaWxlcyB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgICAgICAgICAgICAgY2h1bmtzID0gc2VsZi5fcmVhZF9yZWFkYWJsZShtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIHNvbGVseSB0byBjaGVjayB0byBzZWUgaWYgbWVzc2FnZV9ib2R5CisgICAgICAgICAgICAgICAgICAgICMgaW1wbGVtZW50cyB0aGUgYnVmZmVyIEFQSS4gIGl0IC93b3VsZC8gYmUgZWFzaWVyCisgICAgICAgICAgICAgICAgICAgICMgdG8gY2FwdHVyZSBpZiBQeU9iamVjdF9DaGVja0J1ZmZlciB3YXMgZXhwb3NlZAorICAgICAgICAgICAgICAgICAgICAjIHRvIFB5dGhvbi4KKyAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gaXRlcihtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1lc3NhZ2VfYm9keSBzaG91bGQgYmUgYSBieXRlcy1saWtlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IG9yIGFuIGl0ZXJhYmxlLCBnb3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB0eXBlKG1lc3NhZ2VfYm9keSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgYW5kCisgICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSBpbnRvIHNvY2tldCBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IChtZXNzYWdlX2JvZHksKQorCisgICAgICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdaZXJvIGxlbmd0aCBjaHVuayBpZ25vcmVkJykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGVuY29kZV9jaHVua2VkIGFuZCBzZWxmLl9odHRwX3ZzbiA9PSAxMToKKyAgICAgICAgICAgICAgICAgICAgIyBjaHVua2VkIGVuY29kaW5nCisgICAgICAgICAgICAgICAgICAgIGNodW5rID0gZid7bGVuKGNodW5rKTpYfVxyXG4nLmVuY29kZSgnYXNjaWknKSArIGNodW5rIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgYidcclxuJworICAgICAgICAgICAgICAgIHNlbGYuc2VuZChjaHVuaykKKworICAgICAgICAgICAgaWYgZW5jb2RlX2NodW5rZWQgYW5kIHNlbGYuX2h0dHBfdnNuID09IDExOgorICAgICAgICAgICAgICAgICMgZW5kIGNodW5rZWQgdHJhbnNmZXIKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoYicwXHJcblxyXG4nKQogCiAgICAgZGVmIHB1dHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIHNraXBfaG9zdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICBza2lwX2FjY2VwdF9lbmNvZGluZz1GYWxzZSk6CkBAIC0xMDg3LDUyICsxMjIwLDI3IEBACiAgICAgICAgIGhlYWRlciA9IGhlYWRlciArIGInOiAnICsgdmFsdWUKICAgICAgICAgc2VsZi5fb3V0cHV0KGhlYWRlcikKIAotICAgIGRlZiBlbmRoZWFkZXJzKHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lKToKKyAgICBkZWYgZW5kaGVhZGVycyhzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IHRoZSBsYXN0IGhlYWRlciBsaW5lIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHNlcnZlci4KIAogICAgICAgICBUaGlzIG1ldGhvZCBzZW5kcyB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiAgVGhlIG9wdGlvbmFsIG1lc3NhZ2VfYm9keQogICAgICAgICBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5IGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgICAgICAgcmVxdWVzdC4gIFRoZSBtZXNzYWdlIGJvZHkgd2lsbCBiZSBzZW50IGluIHRoZSBzYW1lIHBhY2tldCBhcyB0aGUKLSAgICAgICAgbWVzc2FnZSBoZWFkZXJzIGlmIGl0IGlzIGEgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBhcyBhIHNlcGFyYXRlCi0gICAgICAgIHBhY2tldC4KKyAgICAgICAgcmVxdWVzdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX19zdGF0ZSA9PSBfQ1NfUkVRX1NUQVJURUQ6CiAgICAgICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfUkVRX1NFTlQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIENhbm5vdFNlbmRIZWFkZXIoKQotICAgICAgICBzZWxmLl9zZW5kX291dHB1dChtZXNzYWdlX2JvZHkpCisgICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiU2VuZCBhIGNvbXBsZXRlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4iIiIKLSAgICAgICAgc2VsZi5fc2VuZF9yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKQorICAgICAgICBzZWxmLl9zZW5kX3JlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKQogCi0gICAgZGVmIF9zZXRfY29udGVudF9sZW5ndGgoc2VsZiwgYm9keSwgbWV0aG9kKToKLSAgICAgICAgIyBTZXQgdGhlIGNvbnRlbnQtbGVuZ3RoIGJhc2VkIG9uIHRoZSBib2R5LiBJZiB0aGUgYm9keSBpcyAiZW1wdHkiLCB3ZQotICAgICAgICAjIHNldCBDb250ZW50LUxlbmd0aDogMCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKFJGQyA3MjMwLAotICAgICAgICAjIFNlY3Rpb24gMy4zLjIpLiBJZiB0aGUgYm9keSBpcyBzZXQgZm9yIG90aGVyIG1ldGhvZHMsIHdlIHNldCB0aGUKLSAgICAgICAgIyBoZWFkZXIgcHJvdmlkZWQgd2UgY2FuIGZpZ3VyZSBvdXQgd2hhdCB0aGUgbGVuZ3RoIGlzLgotICAgICAgICB0aGVsZW4gPSBOb25lCi0gICAgICAgIG1ldGhvZF9leHBlY3RzX2JvZHkgPSBtZXRob2QudXBwZXIoKSBpbiBfTUVUSE9EU19FWFBFQ1RJTkdfQk9EWQotICAgICAgICBpZiBib2R5IGlzIE5vbmUgYW5kIG1ldGhvZF9leHBlY3RzX2JvZHk6Ci0gICAgICAgICAgICB0aGVsZW4gPSAnMCcKLSAgICAgICAgZWxpZiBib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRoZWxlbiA9IHN0cihsZW4oYm9keSkpCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgICMgSWYgdGhpcyBpcyBhIGZpbGUtbGlrZSBvYmplY3QsIHRyeSB0bwotICAgICAgICAgICAgICAgICMgZnN0YXQgaXRzIGZpbGUgZGVzY3JpcHRvcgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdGhlbGVuID0gc3RyKG9zLmZzdGF0KGJvZHkuZmlsZW5vKCkpLnN0X3NpemUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgc2VuZCBhIGxlbmd0aCBpZiB0aGlzIGZhaWxlZAotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOiBwcmludCgiQ2Fubm90IHN0YXQhISIpCi0KLSAgICAgICAgaWYgdGhlbGVuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgdGhlbGVuKQotCi0gICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpOgorICAgIGRlZiBfc2VuZF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzLCBlbmNvZGVfY2h1bmtlZCk6CiAgICAgICAgICMgSG9ub3IgZXhwbGljaXRseSByZXF1ZXN0ZWQgSG9zdDogYW5kIEFjY2VwdC1FbmNvZGluZzogaGVhZGVycy4KLSAgICAgICAgaGVhZGVyX25hbWVzID0gZGljdC5mcm9ta2V5cyhbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorICAgICAgICBoZWFkZXJfbmFtZXMgPSBmcm96ZW5zZXQoay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMpCiAgICAgICAgIHNraXBzID0ge30KICAgICAgICAgaWYgJ2hvc3QnIGluIGhlYWRlcl9uYW1lczoKICAgICAgICAgICAgIHNraXBzWydza2lwX2hvc3QnXSA9IDEKQEAgLTExNDEsMTUgKzEyNDksNDAgQEAKIAogICAgICAgICBzZWxmLnB1dHJlcXVlc3QobWV0aG9kLCB1cmwsICoqc2tpcHMpCiAKKyAgICAgICAgIyBjaHVua2VkIGVuY29kaW5nIHdpbGwgaGFwcGVuIGlmIEhUVFAvMS4xIGlzIHVzZWQgYW5kIGVpdGhlcgorICAgICAgICAjIHRoZSBjYWxsZXIgcGFzc2VzIGVuY29kZV9jaHVua2VkPVRydWUgb3IgdGhlIGZvbGxvd2luZworICAgICAgICAjIGNvbmRpdGlvbnMgaG9sZDoKKyAgICAgICAgIyAxLiBjb250ZW50LWxlbmd0aCBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQKKyAgICAgICAgIyAyLiB0aGUgYm9keSBpcyBhIGZpbGUgb3IgaXRlcmFibGUsIGJ1dCBub3QgYSBzdHIgb3IgYnl0ZXMtbGlrZQorICAgICAgICAjIDMuIFRyYW5zZmVyLUVuY29kaW5nIGhhcyBOT1QgYmVlbiBleHBsaWNpdGx5IHNldCBieSB0aGUgY2FsbGVyCisKICAgICAgICAgaWYgJ2NvbnRlbnQtbGVuZ3RoJyBub3QgaW4gaGVhZGVyX25hbWVzOgotICAgICAgICAgICAgc2VsZi5fc2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCkKKyAgICAgICAgICAgICMgb25seSBjaHVuayBib2R5IGlmIG5vdCBleHBsaWNpdGx5IHNldCBmb3IgYmFja3dhcmRzCisgICAgICAgICAgICAjIGNvbXBhdGliaWxpdHksIGFzc3VtaW5nIHRoZSBjbGllbnQgY29kZSBpcyBhbHJlYWR5IGhhbmRsaW5nIHRoZQorICAgICAgICAgICAgIyBjaHVua2luZworICAgICAgICAgICAgaWYgJ3RyYW5zZmVyLWVuY29kaW5nJyBub3QgaW4gaGVhZGVyX25hbWVzOgorICAgICAgICAgICAgICAgICMgaWYgY29udGVudC1sZW5ndGggY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgZmFsbAorICAgICAgICAgICAgICAgICMgYmFjayB0byBjaHVua2VkIGVuY29kaW5nCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBib2R5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnVW5hYmxlIHRvIGRldGVybWluZSBzaXplIG9mICVyJyAlIGJvZHkpCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdUcmFuc2Zlci1FbmNvZGluZycsICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignQ29udGVudC1MZW5ndGgnLCBzdHIoY29udGVudF9sZW5ndGgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBGYWxzZQorCiAgICAgICAgIGZvciBoZHIsIHZhbHVlIGluIGhlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKGhkciwgdmFsdWUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keSwgc3RyKToKICAgICAgICAgICAgICMgUkZDIDI2MTYgU2VjdGlvbiAzLjcuMSBzYXlzIHRoYXQgdGV4dCBkZWZhdWx0IGhhcyBhCiAgICAgICAgICAgICAjIGRlZmF1bHQgY2hhcnNldCBvZiBpc28tODg1OS0xLgogICAgICAgICAgICAgYm9keSA9IF9lbmNvZGUoYm9keSwgJ2JvZHknKQotICAgICAgICBzZWxmLmVuZGhlYWRlcnMoYm9keSkKKyAgICAgICAgc2VsZi5lbmRoZWFkZXJzKGJvZHksIGVuY29kZV9jaHVua2VkPWVuY29kZV9jaHVua2VkKQogCiAgICAgZGVmIGdldHJlc3BvbnNlKHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTEyMzIsNiArMTM2NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9Tm9uZSk6CiAgICAgICAgICAgICBzdXBlcihIVFRQU0Nvbm5lY3Rpb24sIHNlbGYpLl9faW5pdF9fKGhvc3QsIHBvcnQsIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzKQorICAgICAgICAgICAgaWYgKGtleV9maWxlIGlzIG5vdCBOb25lIG9yIGNlcnRfZmlsZSBpcyBub3QgTm9uZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleV9maWxlLCBjZXJ0X2ZpbGUgYW5kIGNoZWNrX2hvc3RuYW1lIGFyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCwgdXNlIGEgY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlfZmlsZSA9IGtleV9maWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRfZmlsZSA9IGNlcnRfZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IDZkNDU3MmEuLmFkZjk1NmQgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTIwMCw3ICsyMDAsNyBAQAogCiBTVFJJQ1RfREFURV9SRSA9IHJlLmNvbXBpbGUoCiAgICAgciJeW1NNVFdGXVthLXpdW2Etel0sIChcZFxkKSAoW0pGTUFTT05EXVthLXpdW2Etel0pICIKLSAgICAiKFxkXGRcZFxkKSAoXGRcZCk6KFxkXGQpOihcZFxkKSBHTVQkIiwgcmUuQVNDSUkpCisgICAgciIoXGRcZFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQiLCByZS5BU0NJSSkKIFdFRUtEQVlfUkUgPSByZS5jb21waWxlKAogICAgIHIiXig/OlN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdClbYS16XSosP1xzKiIsIHJlLkkgfCByZS5BU0NJSSkKIExPT1NFX0hUVFBfREFURV9SRSA9IHJlLmNvbXBpbGUoCkBAIC0yNzcsNyArMjc3LDcgQEAKICAgICByZXR1cm4gX3N0cjJ0aW1lKGRheSwgbW9uLCB5ciwgaHIsIG1pbiwgc2VjLCB0eikKIAogSVNPX0RBVEVfUkUgPSByZS5jb21waWxlKAotICAgICIiIl4KKyAgICByIiIiXgogICAgIChcZHs0fSkgICAgICAgICAgICAgICMgeWVhcgogICAgICAgIFstXC9dPwogICAgIChcZFxkPykgICAgICAgICAgICAgICMgbnVtZXJpY2FsIG1vbnRoCkBAIC00MTEsNyArNDExLDcgQEAKICAgICAgICAgICAgICAgICBwYWlycyA9IFtdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgc2tpcCBqdW5rCi0gICAgICAgICAgICAgICAgbm9uX2p1bmssIG5yX2p1bmtfY2hhcnMgPSByZS5zdWJuKCJeWz1ccztdKiIsICIiLCB0ZXh0KQorICAgICAgICAgICAgICAgIG5vbl9qdW5rLCBucl9qdW5rX2NoYXJzID0gcmUuc3VibihyIl5bPVxzO10qIiwgIiIsIHRleHQpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IG5yX2p1bmtfY2hhcnMgPiAwLCAoCiAgICAgICAgICAgICAgICAgICAgICJzcGxpdF9oZWFkZXJfd29yZHMgYnVnOiAnJXMnLCAnJXMnLCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAob3JpZ190ZXh0LCB0ZXh0LCBwYWlycykpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVzLnB5IGIvTGliL2h0dHAvY29va2llcy5weQppbmRleCBhNzNmZTM4Li5iZTNiMDgwIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVzLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZXMucHkKQEAgLTQ1Niw5ICs0NTYsOCBAQAogIwogCiBfTGVnYWxLZXlDaGFycyAgPSByIlx3XGQhIyUmJ35fYD48QCw6L1wkXCpcK1wtXC5cXlx8XClcKFw/XH1ce1w9IgotX0xlZ2FsVmFsdWVDaGFycyA9IF9MZWdhbEtleUNoYXJzICsgJ1xbXF0nCitfTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyByJ1xbXF0nCiBfQ29va2llUGF0dGVybiA9IHJlLmNvbXBpbGUociIiIgotICAgICg/eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSB2ZXJib3NlIHBhdHRlcm4KICAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbCB3aGl0ZXNwYWNlIGF0IHN0YXJ0IG9mIGNvb2tpZQogICAgICg/UDxrZXk+ICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGdyb3VwICdrZXknCiAgICAgWyIiIiArIF9MZWdhbEtleUNoYXJzICsgciIiIl0rPyAgICMgQW55IHdvcmQgb2YgYXQgbGVhc3Qgb25lIGxldHRlcgpAQCAtNDc1LDcgKzQ3NCw3IEBACiAgICAgKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIG9wdGlvbmFsIHZhbHVlIGdyb3VwCiAgICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQW55IG51bWJlciBvZiBzcGFjZXMuCiAgICAgKFxzK3w7fCQpICAgICAgICAgICAgICAgICAgICAgICMgRW5kaW5nIGVpdGhlciBhdCBzcGFjZSwgc2VtaWNvbG9uLCBvciBFT1MuCi0gICAgIiIiLCByZS5BU0NJSSkgICAgICAgICAgICAgICAgICMgTWF5IGJlIHJlbW92ZWQgaWYgc2FmZS4KKyAgICAiIiIsIHJlLkFTQ0lJIHwgcmUuVkVSQk9TRSkgICAgIyByZS5BU0NJSSBtYXkgYmUgcmVtb3ZlZCBpZiBzYWZlLgogCiAKICMgQXQgbG9uZyBsYXN0LCBoZXJlIGlzIHRoZSBjb29raWUgY2xhc3MuICBVc2luZyB0aGlzIGNsYXNzIGlzIGFsbW9zdCBqdXN0IGxpa2UKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCAwMDYyMGQxLi5lMTJlNDViIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC04Nyw2ICs4Nyw3IEBACiAgICAgIlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciIsICJDR0lIVFRQUmVxdWVzdEhhbmRsZXIiLAogXQogCitpbXBvcnQgZW1haWwudXRpbHMKIGltcG9ydCBodG1sCiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCBpbwpAQCAtMTI2LDkgKzEyNyw2IEBACiAKIERFRkFVTFRfRVJST1JfQ09OVEVOVF9UWVBFID0gInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IgogCi1kZWYgX3F1b3RlX2h0bWwoaHRtbCk6Ci0gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgiJiIsICImYW1wOyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpLnJlcGxhY2UoIj4iLCAiJmd0OyIpCi0KIGNsYXNzIEhUVFBTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CiAKICAgICBhbGxvd19yZXVzZV9hZGRyZXNzID0gMSAgICAjIFNlZW1zIHRvIG1ha2Ugc2Vuc2UgaW4gdGVzdGluZyBlbnZpcm9ubWVudApAQCAtMTM2LDcgKzEzNCw3IEBACiAgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgogICAgICAgICAiIiJPdmVycmlkZSBzZXJ2ZXJfYmluZCB0byBzdG9yZSB0aGUgc2VydmVyIG5hbWUuIiIiCiAgICAgICAgIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2JpbmQoc2VsZikKLSAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzoyXQogICAgICAgICBzZWxmLnNlcnZlcl9uYW1lID0gc29ja2V0LmdldGZxZG4oaG9zdCkKICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHBvcnQKIApAQCAtMjgyLDEyICsyODAsOSBAQAogICAgICAgICB3b3JkcyA9IHJlcXVlc3RsaW5lLnNwbGl0KCkKICAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAzOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCwgdmVyc2lvbiA9IHdvcmRzCi0gICAgICAgICAgICBpZiB2ZXJzaW9uWzo1XSAhPSAnSFRUUC8nOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKLSAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKLSAgICAgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICBiYXNlX3ZlcnNpb25fbnVtYmVyID0gdmVyc2lvbi5zcGxpdCgnLycsIDEpWzFdCiAgICAgICAgICAgICAgICAgdmVyc2lvbl9udW1iZXIgPSBiYXNlX3ZlcnNpb25fbnVtYmVyLnNwbGl0KCIuIikKICAgICAgICAgICAgICAgICAjIFJGQyAyMTQ1IHNlY3Rpb24gMy4xIHNheXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lICIuIiBhbmQKQEAgLTMwOSw3ICszMDQsNyBAQAogICAgICAgICAgICAgaWYgdmVyc2lvbl9udW1iZXIgPj0gKDIsIDApOgogICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCwKLSAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCBWZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKKyAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCB2ZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDI6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoID0gd29yZHMKQEAgLTMzMiwxMCArMzI3LDExIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGh0dHAuY2xpZW50LnBhcnNlX2hlYWRlcnMoc2VsZi5yZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NsYXNzPXNlbGYuTWVzc2FnZUNsYXNzKQotICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuTGluZVRvb0xvbmc6CisgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZyBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCi0gICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKLSAgICAgICAgICAgICAgICAiTGluZSB0b28gbG9uZyIpCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFLAorICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIiwKKyAgICAgICAgICAgICAgICBzdHIoZXJyKSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCkBAIC00NjUsOCArNDYxLDggQEAKICAgICAgICAgICAgICMgKHNlZSBidWcgIzExMDAyMDEpCiAgICAgICAgICAgICBjb250ZW50ID0gKHNlbGYuZXJyb3JfbWVzc2FnZV9mb3JtYXQgJSB7CiAgICAgICAgICAgICAgICAgJ2NvZGUnOiBjb2RlLAotICAgICAgICAgICAgICAgICdtZXNzYWdlJzogX3F1b3RlX2h0bWwobWVzc2FnZSksCi0gICAgICAgICAgICAgICAgJ2V4cGxhaW4nOiBfcXVvdGVfaHRtbChleHBsYWluKQorICAgICAgICAgICAgICAgICdtZXNzYWdlJzogaHRtbC5lc2NhcGUobWVzc2FnZSwgcXVvdGU9RmFsc2UpLAorICAgICAgICAgICAgICAgICdleHBsYWluJzogaHRtbC5lc2NhcGUoZXhwbGFpbiwgcXVvdGU9RmFsc2UpCiAgICAgICAgICAgICB9KQogICAgICAgICAgICAgYm9keSA9IGNvbnRlbnQuZW5jb2RlKCdVVEYtOCcsICdyZXBsYWNlJykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHNlbGYuZXJyb3JfY29udGVudF90eXBlKQpAQCAtNDkxLDEyICs0ODcsMTIgQEAKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlX29ubHkoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiU2VuZCB0aGUgcmVzcG9uc2UgaGVhZGVyIG9ubHkuIiIiCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGNvZGUgaW4gc2VsZi5yZXNwb25zZXM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgorICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGNvZGUgaW4gc2VsZi5yZXNwb25zZXM6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJlc3BvbnNlc1tjb2RlXVswXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQpAQCAtNTgzLDEyICs1NzksNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBmb3JtYXR0ZWQgZm9yIGEgbWVzc2FnZSBoZWFkZXIuIiIiCiAgICAgICAgIGlmIHRpbWVzdGFtcCBpcyBOb25lOgogICAgICAgICAgICAgdGltZXN0YW1wID0gdGltZS50aW1lKCkKLSAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZSh0aW1lc3RhbXApCi0gICAgICAgIHMgPSAiJXMsICUwMmQgJTNzICU0ZCAlMDJkOiUwMmQ6JTAyZCBHTVQiICUgKAotICAgICAgICAgICAgICAgIHNlbGYud2Vla2RheW5hbWVbd2RdLAotICAgICAgICAgICAgICAgIGRheSwgc2VsZi5tb250aG5hbWVbbW9udGhdLCB5ZWFyLAotICAgICAgICAgICAgICAgIGhoLCBtbSwgc3MpCi0gICAgICAgIHJldHVybiBzCisgICAgICAgIHJldHVybiBlbWFpbC51dGlscy5mb3JtYXRkYXRlKHRpbWVzdGFtcCwgdXNlZ210PVRydWUpCiAKICAgICBkZWYgbG9nX2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCB0aW1lIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4iIiIKQEAgLTcyNiw3ICs3MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKQogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgZGlzcGxheXBhdGggPSB1cmxsaWIucGFyc2UudW5xdW90ZShwYXRoKQotICAgICAgICBkaXNwbGF5cGF0aCA9IGh0bWwuZXNjYXBlKGRpc3BsYXlwYXRoKQorICAgICAgICBkaXNwbGF5cGF0aCA9IGh0bWwuZXNjYXBlKGRpc3BsYXlwYXRoLCBxdW90ZT1GYWxzZSkKICAgICAgICAgZW5jID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICAgICAgIHRpdGxlID0gJ0RpcmVjdG9yeSBsaXN0aW5nIGZvciAlcycgJSBkaXNwbGF5cGF0aAogICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAnCkBAIC03NTAsNyArNzQxLDcgQEAKICAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICAlICh1cmxsaWIucGFyc2UucXVvdGUobGlua25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUsIHF1b3RlPUZhbHNlKSkpCiAgICAgICAgIHIuYXBwZW5kKCc8L3VsPlxuPGhyPlxuPC9ib2R5PlxuPC9odG1sPlxuJykKICAgICAgICAgZW5jb2RlZCA9ICdcbicuam9pbihyKS5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQpAQCAtMTE5MSwxNiArMTE4MiwxNSBAQAogICAgIHNlcnZlcl9hZGRyZXNzID0gKGJpbmQsIHBvcnQpCiAKICAgICBIYW5kbGVyQ2xhc3MucHJvdG9jb2xfdmVyc2lvbiA9IHByb3RvY29sCi0gICAgaHR0cGQgPSBTZXJ2ZXJDbGFzcyhzZXJ2ZXJfYWRkcmVzcywgSGFuZGxlckNsYXNzKQotCi0gICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCi0gICAgdHJ5OgotICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBodHRwZC5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2VydmVyQ2xhc3Moc2VydmVyX2FkZHJlc3MsIEhhbmRsZXJDbGFzcykgYXMgaHR0cGQ6CisgICAgICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgc2VydmVfbWVzc2FnZSA9ICJTZXJ2aW5nIEhUVFAgb24ge2hvc3R9IHBvcnQge3BvcnR9IChodHRwOi8ve2hvc3R9Ontwb3J0fS8pIC4uLiIKKyAgICAgICAgcHJpbnQoc2VydmVfbWVzc2FnZS5mb3JtYXQoaG9zdD1zYVswXSwgcG9ydD1zYVsxXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkgYi9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgyYmE5YS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotCi1jbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsICoqa3cpOgotICAgICAgICBpZiBtYXN0ZXIgaXMgTm9uZToKLSAgICAgICAgICAgIG1hc3RlciA9IFRrKCkKLSAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQotICAgICAgICBzZWxmLmxhYmVscyA9IHt9Ci0KLSAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9TEVGVCwgd2lkdGg9MCk6Ci0gICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYubGFiZWxzOgotICAgICAgICAgICAgbGFiZWwgPSBMYWJlbChzZWxmLCBib3JkZXJ3aWR0aD0wLCBhbmNob3I9VykKLSAgICAgICAgICAgIGxhYmVsLnBhY2soc2lkZT1zaWRlLCBwYWR5PTAsIHBhZHg9NCkKLSAgICAgICAgICAgIHNlbGYubGFiZWxzW25hbWVdID0gbGFiZWwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxhYmVsID0gc2VsZi5sYWJlbHNbbmFtZV0KLSAgICAgICAgaWYgd2lkdGggIT0gMDoKLSAgICAgICAgICAgIGxhYmVsLmNvbmZpZyh3aWR0aD13aWR0aCkKLSAgICAgICAgbGFiZWwuY29uZmlnKHRleHQ9dGV4dCkKLQotZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUoeCwgeSArIDE1MCkpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQotICAgIGZyYW1lID0gRnJhbWUocm9vdCkKLSAgICB0ZXh0ID0gVGV4dChmcmFtZSkKLSAgICB0ZXh0LnBhY2soKQotICAgIG1zYiA9IE11bHRpU3RhdHVzQmFyKGZyYW1lKQotICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJoZWxsbyIpCi0gICAgbXNiLnNldF9sYWJlbCgidHdvIiwgIndvcmxkIikKLSAgICBtc2IucGFjayhzaWRlPUJPVFRPTSwgZmlsbD1YKQotCi0gICAgZGVmIGNoYW5nZSgpOgotICAgICAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiZm9vIikKLSAgICAgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgImJhciIpCi0KLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iVXBkYXRlIHN0YXR1cyIsIGNvbW1hbmQ9Y2hhbmdlKQotICAgIGJ1dHRvbi5wYWNrKHNpZGU9Qk9UVE9NKQotICAgIGZyYW1lLnBhY2soKQotICAgIGZyYW1lLm1haW5sb29wKCkKLSAgICByb290Lm1haW5sb29wKCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oX211bHRpc3RhdHVzX2JhcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggNzI5MDVjMS4uYTNmYzUwMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsNDUgKzEsMTAxIEBACi1XaGF0J3MgTmV3IGluIElETEUgMy41LjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE3LTAxLTAxPyoKK1doYXQncyBOZXcgaW4gSURMRSAzLjYuMD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorKlJlbGVhc2UgZGF0ZTogMjAxNi0xMi0xNj8qCiAKIC0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KICAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KIAogLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KIAorLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCiAtIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCiAKIC0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CiAgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCiAKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCiAtIElzc3VlICMyNzcxNDogdGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4KICAgaW4gdGhlIHNhbWUgcHJvY2Vzcy4gIFRoaXMgb2NjdXJzIHdoZW4gdGVzdF9pZGxlIGZhaWxzIHdoZW4gcnVuIHdpdGggdGhlCiAgIC13IG9wdGlvbiBidXQgd2l0aG91dCAtam4uICBGaXggd2FybmluZyBmcm9tIHRlc3RfY29uZmlnLgogCistIElzc3VlICMyNzYyMTogUHV0IHF1ZXJ5IHJlc3BvbnNlIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgaW4gdGhlIHF1ZXJ5CisgIGJveCBpdHNlbGYgaW5zdGVhZCBvZiBpbiBhIHNlcGFyYXRlIG1hc3NhZ2Vib3guICBSZWRvIHRlc3RzIHRvIG1hdGNoLgorICBBZGQgTWFjIE9TWCByZWZpbmVtZW50cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjc2MjA6IEVzY2FwZSBrZXkgbm93IGNsb3NlcyBRdWVyeSBib3ggYXMgY2FuY2VsbGVkLgorCistIElzc3VlICMyNzYwOTogSURMRTogdGFiIGFmdGVyIGluaXRpYWwgd2hpdGVzcGFjZSBzaG91bGQgdGFiLCBub3QKKyAgYXV0b2NvbXBsZXRlLiBUaGlzIGZpeGVzIHByb2JsZW0gd2l0aCB3cml0aW5nIGRvY3N0cmluZ3MgYXQgbGVhc3QKKyAgdHdpY2UgaW5kZW50ZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBFeHBsaWNpdGx5IHJldHVybiBOb25lIHdoZW4gdGhlcmUgYXJlIGFsc28gbm9uLU5vbmUKKyAgcmV0dXJucy4gSW4gYSBmZXcgY2FzZXMsIHJldmVyc2UgYSBjb25kaXRpb24gYW5kIGVsaW1pbmF0ZSBhIHJldHVybi4KKwogLSBJc3N1ZSAjMjU1MDc6IElETEUgbm8gbG9uZ2VyIHJ1bnMgYnVnZ3kgY29kZSBiZWNhdXNlIG9mIGl0cyB0a2ludGVyIGltcG9ydHMuCiAgIFVzZXJzIG11c3QgaW5jbHVkZSB0aGUgc2FtZSBpbXBvcnRzIHJlcXVpcmVkIHRvIHJ1biBkaXJlY3RseSBpbiBQeXRob24uCiAKKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCisKIC0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KIAorLSBJc3N1ZSAjMjc0Nzc6IElETEUgc2VhcmNoIGRpYWxvZ3Mgbm93IHVzZSB0dGsgd2lkZ2V0cy4KKworLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKworLSBJc3N1ZSAjMjc0NTI6IG1ha2UgY29tbWFuZCBsaW5lICJpZGxlLXRlc3Q+IHB5dGhvbiB0ZXN0X2hlbHAucHkiIHdvcmsuCisgIF9fZmlsZV9fIGlzIHJlbGF0aXZlIHdoZW4gcHl0aG9uIGlzIHN0YXJ0ZWQgaW4gdGhlIGZpbGUncyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KKworLSBJc3N1ZSAjMjczODA6IElETEU6IGFkZCBxdWVyeS5weSB3aXRoIGJhc2UgUXVlcnkgZGlhbG9nIGFuZCB0dGsgd2lkZ2V0cy4KKyAgTW9kdWxlIGhhZCBzdWJjbGFzc2VzIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSwgd2hpY2ggYXJlCisgIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gdXNlcnMgYnkgY29uZmlnZGlhbG9nIGFuZCBmaWxlID0+TG9hZCBNb2R1bGUuCisgIEVhY2ggc3ViY2xhc3MgaGFzIGl0dyBvd24gdmFsaWRpdHkgY2hlY2tzLiAgVXNpbmcgTW9kdWxlTmFtZSBhbGxvd3MgdXNlcnMKKyAgdG8gZWRpdCBiYWQgbW9kdWxlIG5hbWVzIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci4KKyAgQWRkIHRlc3RzIGFuZCBkZWxldGUgdGhlIHR3byBmaWxlcyBjb21iaW5lZCBpbnRvIHRoZSBuZXcgb25lLgorCistIElzc3VlICMyNzM3MjogVGVzdF9pZGxlIG5vIGxvbmdlciBjaGFuZ2VzIHRoZSBsb2NhbGUuCisKIC0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgY2hhcnMgaW4gSURMRSBORVdTLnR4dCwgZm9yIGNvbnRyaWJ1dG9yIG5hbWVzLgogCiAtIElzc3VlICMyNzI0NTogSURMRTogQ2xlYW5seSBkZWxldGUgY3VzdG9tIHRoZW1lcyBhbmQga2V5IGJpbmRpbmdzLgogICBQcmV2aW91c2x5LCB3aGVuIElETEUgd2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUKICAgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDEzNzogUnVuIElETEUsIHRlc3RfaWRsZSwgYW5kIGh0ZXN0IHdpdGggdGtpbnRlciBkZWZhdWx0IHJvb3QgZGlzYWJsZWQuCisgIEZpeCBjb2RlIGFuZCB0ZXN0cyB0aGF0IGZhaWwgd2l0aCB0aGlzIHJlc3RyaWN0aW9uLgorICBGaXggaHRlc3RzIHRvIG5vdCBjcmVhdGUgYSBzZWNvbmQgYW5kIHJlZHVuZGFudCByb290IGFuZCBtYWlubG9vcC4KIAotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNi0wNi0yNioKKy0gSXNzdWUgIzI3MzEwOiBGaXggSURMRS5hcHAgZmFpbHVyZSB0byBsYXVuY2ggb24gT1MgWCBkdWUgdG8gdmVzdGlnaWFsIGltcG9ydC4KIAogLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KICAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCiAgIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0NzUwOiBTd2l0Y2ggYWxsIHNjcm9sbGJhcnMgaW4gSURMRSB0byB0dGsgdmVyc2lvbnMuCisgIFdoZXJlIG5lZWRlZCwgbWluaW1hbCB0ZXN0cyBhcmUgYWRkZWQgdG8gY292ZXIgY2hhbmdlcy4KKworLSBJc3N1ZSAjMjQ3NTk6IElETEUgcmVxdWlyZXMgdGsgOC41IGFuZCBhdmFpbGFiaWxpdHkgdHRrIHdpZGdldHMuCisgIERlbGV0ZSBub3cgdW5uZWVkZWQgdGsgdmVyc2lvbiB0ZXN0cyBhbmQgY29kZSBmb3Igb2xkZXIgdmVyc2lvbnMuCisgIEFkZCB0ZXN0IGZvciBJRExFIHN5bnRheCBjb2xvcml6ZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKwogLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CiAgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCiAKLS0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWYnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCiAgIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgogICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCiAgIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0CkBAIC00Nyw5ICsxMDMsMjYgQEAKIC0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKICAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KIAorLSBJc3N1ZSAjIDI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiAnaW1wb3J0IGlkbGV2ZXI7IEkgPSBpZGxldmVyLklETEVfVkVSU0lPTicgaXMgdGhlIHNhbWUgYXMKKyAgJ2ltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldJworICAzLiBBZnRlciAnb2IgPSBzdGFja3ZpZXdlci5WYXJpYWJsZXNUcmVlSXRlbSgqYXJncyknLAorICAnb2Iua2V5cygpJyA9PSAnbGlzdChvYi5vYmplY3Qua2V5cykuCisgIDQuIEluIG1hY29zYywgcnVubmluZ0FzT1NYQVBQID09IGlzQXF1YVRrOyBpZENhcmJvbkFxdWFUayA9PSBpc0NhcmJvblRrCisKIC0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCiAgIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgogCistIElzc3VlICMyNDIyNTogUmVuYW1lIG1hbnkgaWRsZWxpYi8qLnB5IGFuZCBpZGxlX3Rlc3QvdGVzdF8qLnB5IGZpbGVzLgorICBFZGl0IGZpbGVzIHRvIHJlcGxhY2Ugb2xkIG5hbWVzIHdpdGggbmV3IG5hbWVzIHdoZW4gdGhlIG9sZCBuYW1lCisgIHJlZmVycmVkIHRvIHRoZSBtb2R1bGUgcmF0aGVyIHRoYW4gdGhlIGNsYXNzIGl0IGNvbnRhaW5lZC4KKyAgU2VlIHRoZSBpc3N1ZSBhbmQgSURMRSBzZWN0aW9uIGluIFdoYXQncyBOZXcgaW4gMy42IGZvciBtb3JlLgorCiAtIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KICAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KIApAQCAtNjIsOCArMTM1LDggQEAKIC0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgogCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIgLgorLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciB1bmRvIGRlbGVnYXRvci4gIFBhdGNoIG1vc3RseSBieQorICBTYWltYWRoYXYgSGVibGlrYXIgLgogCiAtIElzc3VlICMyNzA0NDogQWRkIENvbmZpZ0RpYWxvZy5yZW1vdmVfdmFyX2NhbGxiYWNrcyB0byBzdG9wIG1lbW9yeSBsZWFrcy4KIApAQCAtODIsMTEgKzE1NSw2IEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0xMi0wNioKLQogLSBJc3N1ZSAxNTM0ODogU3RvcCB0aGUgZGVidWdnZXIgZW5naW5lIChub3JtYWxseSBpbiBhIHVzZXIgcHJvY2VzcykKICAgYmVmb3JlIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpbmRvdyAocnVubmluZyBpbiB0aGUgSURMRSBwcm9jZXNzKS4KICAgVGhpcyBwcmV2ZW50cyB0aGUgUnVudGltZUVycm9ycyB0aGF0IHdlcmUgYmVpbmcgY2F1Z2h0IGFuZCBpZ25vcmVkLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dCBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKaW5kZXggZmY0NDUwNC4uNTFlOGVmNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAorKysgYi9MaWIvaWRsZWxpYi9SRUFETUUudHh0CkBAIC0yOSw2MSArMjksNjEgQEAKIAogSW1wbGVtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0tCi1BdXRvQ29tcGxldGUucHkgICAjIENvbXBsZXRlIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlbmFtZXMuCi1BdXRvQ29tcGxldGVXaW5kb3cucHkgICMgRGlzcGxheSBjb21wbGV0aW9ucy4KLUF1dG9FeHBhbmQucHkgICAgICMgRXhwYW5kIHdvcmQgd2l0aCBwcmV2aW91cyB3b3JkIGluIGZpbGUuCi1CaW5kaW5ncy5weSAgICAgICAjIERlZmluZSBtb3N0IG9mIElETEUgbWVudS4KLUNhbGxUaXBXaW5kb3cucHkgICMgRGlzcGxheSBjYWxsdGlwLgotQ2FsbFRpcHMucHkgICAgICAgIyBDcmVhdGUgY2FsbHRpcCB0ZXh0LgotQ2xhc3NCcm93c2VyLnB5ICAgIyBDcmVhdGUgbW9kdWxlIGJyb3dzZXIgd2luZG93LgotQ29kZUNvbnRleHQucHkgICAgIyBTaG93IGNvbXBvdW5kIHN0YXRlbWVudCBoZWFkZXJzIG90aGVyd2lzZSBub3QgdmlzaWJsZS4KLUNvbG9yRGVsZWdhdG9yLnB5ICMgQ29sb3JpemUgdGV4dCAobmltKS4KLURlYnVnZ2VyLnB5ICAgICAgICMgRGVidWcgY29kZSBydW4gZnJvbSBlZGl0b3I7IHNob3cgd2luZG93LgotRGVsZWdhdG9yLnB5ICAgICAgIyBEZWZpbmUgYmFzZSBjbGFzcyBmb3IgZGVsZWdhdG9ycyAobmltKS4KLUVkaXRvcldpbmRvdy5weSAgICMgRGVmaW5lIG1vc3Qgb2YgZWRpdG9yIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy4KLUZpbGVMaXN0LnB5ICAgICAgICMgT3BlbiBmaWxlcyBhbmQgbWFuYWdlIGxpc3Qgb2Ygb3BlbiB3aW5kb3dzIChuaW0pLgotRm9ybWF0UGFyYWdyYXBoLnB5IyBSZS13cmFwIG11bHRpbGluZSBzdHJpbmdzIGFuZCBjb21tZW50cy4KLUdyZXBEaWFsb2cucHkgICAgICMgRmluZCBhbGwgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBtdWx0aXBsZSBmaWxlcy4KLUh5cGVyUGFyc2VyLnB5ICAgICMgUGFyc2UgY29kZSBhcm91bmQgYSBnaXZlbiBpbmRleC4KLUlPQmluZGluZy5weSAgICAgICMgT3BlbiwgcmVhZCwgYW5kIHdyaXRlIGZpbGVzCi1JZGxlSGlzdG9yeS5weSAgICAjIEdldCBwcmV2aW91cyBvciBuZXh0IHVzZXIgaW5wdXQgaW4gc2hlbGwgKG5pbSkKLU11bHRpQ2FsbC5weSAgICAgICMgV3JhcCB0ayB3aWRnZXQgdG8gYWxsb3cgbXVsdGlwbGUgY2FsbHMgcGVyIGV2ZW50IChuaW0pLgotTXVsdGlTdGF0dXNCYXIucHkgIyBEZWZpbmUgc3RhdHVzIGJhciBmb3Igd2luZG93cyAobmltKS4KLU9iamVjdEJyb3dzZXIucHkgICMgRGVmaW5lIGNsYXNzIHVzZWQgaW4gU3RhY2tWaWV3ZXIgKG5pbSkuCi1PdXRwdXRXaW5kb3cucHkgICAjIENyZWF0ZSB3aW5kb3cgZm9yIGdyZXAgb3V0cHV0LgotUGFyZW5NYXRjaC5weSAgICAgIyBNYXRjaCBmZW5jZXBvc3RzOiAoKSwgW10sIGFuZCB7fS4KLVBhdGhCcm93c2VyLnB5ICAgICMgQ3JlYXRlIHBhdGggYnJvd3NlciB3aW5kb3cuCi1QZXJjb2xhdG9yLnB5ICAgICAjIE1hbmFnZSBkZWxlZ2F0b3Igc3RhY2sgKG5pbSkuCi1QeVBhcnNlLnB5ICAgICAgICAjIEdpdmUgaW5mb3JtYXRpb24gb24gY29kZSBpbmRlbnRhdGlvbgotUHlTaGVsbC5weSAgICAgICAgIyBTdGFydCBJRExFLCBtYW5hZ2Ugc2hlbGwsIGNvbXBsZXRlIGVkaXRvciB3aW5kb3cKLVJlbW90ZURlYnVnZ2VyLnB5ICMgRGVidWcgY29kZSBydW4gaW4gcmVtb3RlIHByb2Nlc3MuCi1SZW1vdGVPYmplY3RCcm93c2VyLnB5ICMgQ29tbXVuaWNhdGUgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcyB3aXRoIHJwYyAobmltKS4KLVJlcGxhY2VEaWFsb2cucHkgICMgU2VhcmNoIGFuZCByZXBsYWNlIHBhdHRlcm4gaW4gdGV4dC4KLVJzdHJpcEV4dGVuc2lvbi5weSMgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZQotU2NyaXB0QmluZGluZy5weSAgIyBDaGVjayBhbmQgcnVuIHVzZXIgY29kZS4KLVNjcm9sbGVkTGlzdC5weSAgICMgRGVmaW5lIFNjcm9sbGVkTGlzdCB3aWRnZXQgZm9yIElETEUgKG5pbSkuCi1TZWFyY2hEaWFsb2cucHkgICAjIFNlYXJjaCBmb3IgcGF0dGVybiBpbiB0ZXh0LgotU2VhcmNoRGlhbG9nQmFzZS5weSAgIyBEZWZpbmUgYmFzZSBmb3Igc2VhcmNoLCByZXBsYWNlLCBhbmQgZ3JlcCBkaWFsb2dzLgotU2VhcmNoRW5naW5lLnB5ICAgIyBEZWZpbmUgZW5naW5lIGZvciBhbGwgMyBzZWFyY2ggZGlhbG9ncy4KLVN0YWNrVmlld2VyLnB5ICAgICMgVmlldyBzdGFjayBhZnRlciBleGNlcHRpb24uCi1UcmVlV2lkZ2V0LnB5ICAgICAjIERlZmluZSB0cmVlIHdpZGdlciwgdXNlZCBpbiBicm93c2VycyAobmltKS4KLVVuZG9EZWxlZ2F0b3IucHkgICMgTWFuYWdlIHVuZG8gc3RhY2suCi1XaWRnZXRSZWRpcmVjdG9yLnB5ICMgSW50ZXJjZXB0IHdpZGdldCBzdWJjb21tYW5kcyAoZm9yIHBlcmNvbGF0b3IpIChuaW0pLgotV2luZG93TGlzdC5weSAgICAgIyBNYW5hZ2Ugd2luZG93IGxpc3QgYW5kIGRlZmluZSBsaXN0ZWQgdG9wIGxldmVsLgotWm9vbUhlaWdodC5weSAgICAgIyBab29tIHdpbmRvdyB0byBmdWxsIGhlaWdodCBvZiBzY3JlZW4uCi1hYm91dERpYWxvZy5weSAgICAjIERpc3BsYXkgQWJvdXQgSURMRSBkaWFsb2cuCi1jb25maWdEaWFsb2cucHkgICAjIERpc3BsYXkgdXNlciBjb25maWd1cmF0aW9uIGRpYWxvZ3MuCi1jb25maWdIYW5kbGVyLnB5ICAjIExvYWQsIGZldGNoLCBhbmQgc2F2ZSBjb25maWd1cmF0aW9uIChuaW0pLgotY29uZmlnSGVscFNvdXJjZUVkaXQucHkgICMgU3BlY2lmeSBoZWxwIHNvdXJjZS4KLWNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5ICAjIFNwZWZpZnkgdXNlciBjb25maWcgc2VjdGlvbiBuYW1lCi1keW5PcHRpb25NZW51V2lkZ2V0LnB5ICAjIGRlZmluZSBtdXRhYmxlIE9wdGlvbk1lbnUgd2lkZ2V0IChuaW0pLgorYXV0b2NvbXBsZXRlLnB5ICAgIyBDb21wbGV0ZSBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZW5hbWVzLgorYXV0b2NvbXBsZXRlX3cucHkgIyBEaXNwbGF5IGNvbXBsZXRpb25zLgorYXV0b2V4cGFuZC5weSAgICAgIyBFeHBhbmQgd29yZCB3aXRoIHByZXZpb3VzIHdvcmQgaW4gZmlsZS4KK2Jyb3dzZXIucHkgICAgICAgICMgQ3JlYXRlIG1vZHVsZSBicm93c2VyIHdpbmRvdy4KK2NhbGx0aXBfdy5weSAgICAgICMgRGlzcGxheSBjYWxsdGlwLgorY2FsbHRpcHMucHkgICAgICAgIyBDcmVhdGUgY2FsbHRpcCB0ZXh0LgorY29kZWNvbnRleHQucHkgICAgIyBTaG93IGNvbXBvdW5kIHN0YXRlbWVudCBoZWFkZXJzIG90aGVyd2lzZSBub3QgdmlzaWJsZS4KK2NvbG9yaXplci5weSAgICAgICMgQ29sb3JpemUgdGV4dCAobmltKQorY29uZmlnLnB5ICAgICAgICAgIyBMb2FkLCBmZXRjaCwgYW5kIHNhdmUgY29uZmlndXJhdGlvbiAobmltKS4KK2NvbmZpZ2RpYWxvZy5weSAgICMgRGlzcGxheSB1c2VyIGNvbmZpZ3VyYXRpb24gZGlhbG9ncy4KK2NvbmZpZ19oZWxwLnB5ICAgICMgU3BlY2lmeSBoZWxwIHNvdXJjZSBpbiBjb25maWdkaWFsb2cuCitjb25maWdfa2V5LnB5ICAgICAjIENoYW5nZSBrZXliaW5kaW5ncy4KK2R5bm9wdGlvbi5weSAgICAgICMgRGVmaW5lIG11dGFibGUgT3B0aW9uTWVudSB3aWRnZXQgKG5pbSkuCitkZWJ1Z29iai5weSAgICAgICAjIERlZmluZSBjbGFzcyB1c2VkIGluIHN0YWNrdmlld2VyLgorZGVidWdvYmpfci5weSAgICAgIyBDb21tdW5pY2F0ZSBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzIHdpdGggcnBjIChuaW0pLgorZGVidWdnZXIucHkgICAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBmcm9tIHNoZWxsIG9yIGVkaXRvcjsgc2hvdyB3aW5kb3cuCitkZWJ1Z2dlcl9yLnB5ICAgICAjIERlYnVnIGNvZGUgcnVuIGluIHJlbW90ZSBwcm9jZXNzLgorZGVsZWdhdG9yLnB5ICAgICAgIyBEZWZpbmUgYmFzZSBjbGFzcyBmb3IgZGVsZWdhdG9ycyAobmltKS4KK2VkaXRvci5weSAgICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgZWRpdG9yIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy4KK2ZpbGVsaXN0LnB5ICAgICAgICMgT3BlbiBmaWxlcyBhbmQgbWFuYWdlIGxpc3Qgb2Ygb3BlbiB3aW5kb3dzIChuaW0pLgorZ3JlcC5weSAgICAgICAgICAgIyBGaW5kIGFsbCBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIG11bHRpcGxlIGZpbGVzLgogaGVscC5weSAgICAgICAgICAgIyBEaXNwbGF5IElETEUncyBodG1sIGRvYy4KLWtleWJpbmRpbmdEaWFsb2cucHkgICMgQ2hhbmdlIGtleWJpbmRpbmdzLgotbWFjb3N4U3VwcG9ydC5weSAgIyBIZWxwIElETEUgcnVuIG9uIE1hY3MgKG5pbSkuCitoZWxwX2Fib3V0LnB5ICAgICAjIERpc3BsYXkgQWJvdXQgSURMRSBkaWFsb2cuCitoaXN0b3J5LnB5ICAgICAgICAjIEdldCBwcmV2aW91cyBvciBuZXh0IHVzZXIgaW5wdXQgaW4gc2hlbGwgKG5pbSkKK2h5cGVycGFyc2VyLnB5ICAgICMgUGFyc2UgY29kZSBhcm91bmQgYSBnaXZlbiBpbmRleC4KK2lvbWVudS5weSAgICAgICAgICMgT3BlbiwgcmVhZCwgYW5kIHdyaXRlIGZpbGVzCittYWNvc3gucHkgICAgICAgICAjIEhlbHAgSURMRSBydW4gb24gTWFjcyAobmltKS4KK21haW5tZW51LnB5ICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgSURMRSBtZW51LgorbXVsdGljYWxsLnB5ICAgICAgIyBXcmFwIHRrIHdpZGdldCB0byBhbGxvdyBtdWx0aXBsZSBjYWxscyBwZXIgZXZlbnQgKG5pbSkuCitvdXR3aW4ucHkgICAgICAgICAjIENyZWF0ZSB3aW5kb3cgZm9yIGdyZXAgb3V0cHV0LgorcGFyYWdyYXBoLnB5ICAgICAgIyBSZS13cmFwIG11bHRpbGluZSBzdHJpbmdzIGFuZCBjb21tZW50cy4KK3BhcmVubWF0Y2gucHkgICAgICMgTWF0Y2ggZmVuY2Vwb3N0czogKCksIFtdLCBhbmQge30uCitwYXRoYnJvd3Nlci5weSAgICAjIENyZWF0ZSBwYXRoIGJyb3dzZXIgd2luZG93LgorcGVyY29sYXRvci5weSAgICAgIyBNYW5hZ2UgZGVsZWdhdG9yIHN0YWNrIChuaW0pLgorcHlwYXJzZS5weSAgICAgICAgIyBHaXZlIGluZm9ybWF0aW9uIG9uIGNvZGUgaW5kZW50YXRpb24KK3B5c2hlbGwucHkgICAgICAgICMgU3RhcnQgSURMRSwgbWFuYWdlIHNoZWxsLCBjb21wbGV0ZSBlZGl0b3Igd2luZG93CitxdWVyeS5weSAgICAgICAgICAjIFF1ZXJ5IHVzZXIgZm9yIGluZm9ybWF0aW9uCityZWRpcmVjdG9yLnB5ICAgICAjIEludGVyY2VwdCB3aWRnZXQgc3ViY29tbWFuZHMgKGZvciBwZXJjb2xhdG9yKSAobmltKS4KK3JlcGxhY2UucHkgICAgICAgICMgU2VhcmNoIGFuZCByZXBsYWNlIHBhdHRlcm4gaW4gdGV4dC4KIHJwYy5weSAgICAgICAgICAgICMgQ29tbXVpY2F0ZSBiZXR3ZWVuIGlkbGUgYW5kIHVzZXIgcHJvY2Vzc2VzIChuaW0pLgorcnN0cmlwLnB5ICAgICAgICAgIyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlLgogcnVuLnB5ICAgICAgICAgICAgIyBNYW5hZ2UgdXNlciBjb2RlIGV4ZWN1dGlvbiBzdWJwcm9jZXNzLgorcnVuc2NyaXB0LnB5ICAgICAgIyBDaGVjayBhbmQgcnVuIHVzZXIgY29kZS4KK3Njcm9sbGVkbGlzdC5weSAgICMgRGVmaW5lIHNjcm9sbGVkbGlzdCB3aWRnZXQgZm9yIElETEUgKG5pbSkuCitzZWFyY2gucHkgICAgICAgICAjIFNlYXJjaCBmb3IgcGF0dGVybiBpbiB0ZXh0Lgorc2VhcmNoYmFzZS5weSAgICAgIyBEZWZpbmUgYmFzZSBmb3Igc2VhcmNoLCByZXBsYWNlLCBhbmQgZ3JlcCBkaWFsb2dzLgorc2VhcmNoZW5naW5lLnB5ICAgIyBEZWZpbmUgZW5naW5lIGZvciBhbGwgMyBzZWFyY2ggZGlhbG9ncy4KK3N0YWNrdmlld2VyLnB5ICAgICMgVmlldyBzdGFjayBhZnRlciBleGNlcHRpb24uCitzdGF0dXNiYXIucHkgICAgICAjIERlZmluZSBzdGF0dXMgYmFyIGZvciB3aW5kb3dzIChuaW0pLgogdGFiYmVkcGFnZXMucHkgICAgIyBEZWZpbmUgdGFiYmVkIHBhZ2VzIHdpZGdldCAobmltKS4KLXRleHRWaWV3LnB5ICAgICAgICMgRGVmaW5lIHJlYWQtb25seSB0ZXh0IHdpZGdldCAobmltKS4KK3RleHR2aWV3LnB5ICAgICAgICMgRGVmaW5lIHJlYWQtb25seSB0ZXh0IHdpZGdldCAobmltKS4KK3RyZWUucHkgICAgICAgICAgICMgRGVmaW5lIHRyZWUgd2lkZ2VyLCB1c2VkIGluIGJyb3dzZXJzIChuaW0pLgordW5kby5weSAgICAgICAgICAgIyBNYW5hZ2UgdW5kbyBzdGFjay4KK3dpbmRvd3MucHkgICAgICAgICMgTWFuYWdlIHdpbmRvdyBsaXN0IGFuZCBkZWZpbmUgbGlzdGVkIHRvcCBsZXZlbC4KK3pvb21oZWlnaHQucHkgICAgICMgWm9vbSB3aW5kb3cgdG8gZnVsbCBoZWlnaHQgb2Ygc2NyZWVuLgogCiBDb25maWd1cmF0aW9uCiAtLS0tLS0tLS0tLS0tCkBAIC0xMDQsMTI3ICsxMDQsMTQ4IEBACiAKIFN1YmRpcmVjdG9yaWVzCiAtLS0tLS0tLS0tLS0tLQotSWNvbnMgICMgc21hbGwgaW1hZ2UgZmlsZXMKLWlkbGVfdGVzdCAgIyBmaWxlcyBmb3IgaHVtYW4gdGVzdCBhbmQgYXV0b21hdGVkIHVuaXQgdGVzdHMKK0ljb25zICAgICAgICAjIHNtYWxsIGltYWdlIGZpbGVzCitpZGxlX3Rlc3QgICAgIyBmaWxlcyBmb3IgaHVtYW4gdGVzdCBhbmQgYXV0b21hdGVkIHVuaXQgdGVzdHMKIAogVW51c2VkIGFuZCBEZXByZWNhdGVkIGZpbGVzIGFuZCBvYmplY3RzIChuaW0pCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUVkaXRvcldpbmRvdy5weTogSGVscGRpYWxvZyBhbmQgaGVscERpYWxvZwotVG9vbFRpcC5weTogdW51c2VkLgotaGVscC50eHQKLWlkbGV2ZXIucHkKK3Rvb2x0aXAucHkgIyB1bnVzZWQKKwogCiAKIElETEUgTUVOVVMKLVRvcCBsZXZlbCBpdGVtcyBhbmQgbW9zdCBzdWJtZW51IGl0ZW1zIGFyZSBkZWZpbmVkIGluIEJpbmRpbmdzLgorVG9wIGxldmVsIGl0ZW1zIGFuZCBtb3N0IHN1Ym1lbnUgaXRlbXMgYXJlIGRlZmluZWQgaW4gbWFpbm1lbnUuCiBFeHRlbnN0aW9ucyBhZGQgc3VibWVudSBpdGVtcyB3aGVuIGFjdGl2ZS4gIFRoZSBuYW1lcyBnaXZlbiBhcmUKIGZvdW5kLCBxdW90ZWQsIGluIG9uZSBvZiB0aGVzZSBtb2R1bGVzLCBwYWlyZWQgd2l0aCBhICc8PHBzZXVkb2V2ZW50Pj4nLgogRWFjaCBwc2V1ZG9ldmVudCBpcyBib3VuZCB0byBhbiBldmVudCBoYW5kbGVyLiAgU29tZSBldmVudCBoYW5kbGVycwogY2FsbCBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGUgYWN0dWFsIHdvcmsuICBUaGUgYW5ub3RhdGlvbnMgYmVsb3cKIGFyZSBpbnRlbmRlZCB0byBhdCBsZWFzdCBnaXZlIHRoZSBtb2R1bGUgd2hlcmUgdGhlIGFjdHVhbCB3b3JrIGlzIGRvbmUuCisnZUVXJyA9IGVkaXRvci5FZGl0b3JXaW5kb3cKIAotRmlsZSAgIyBJT0JpbmRpZyBleGNlcHQgYXMgbm90ZWQKLSAgTmV3IEZpbGUKLSAgT3Blbi4uLiAgIyBJT0JpbmRpbmcub3BlbgotICBPcGVuIE1vZHVsZQorRmlsZQorICBOZXcgRmlsZSAgICAgICAgICMgZUVXLm5ld19jYWxsYmFjaworICBPcGVuLi4uICAgICAgICAgICMgaW9tZW51Lm9wZW4KKyAgT3BlbiBNb2R1bGUgICAgICAjIGVFdy5vcGVuX21vZHVsZQogICBSZWNlbnQgRmlsZXMKLSAgQ2xhc3MgQnJvd3NlciAgIyBDbGFzcyBCcm93c2VyCi0gIFBhdGggQnJvd3NlciAgIyBQYXRoIEJyb3dzZXIKKyAgQ2xhc3MgQnJvd3NlciAgICAjIGVFVy5vcGVuX2NsYXNzX2Jyb3dzZXIsIGJyb3dzZXIuQ2xhc3NCcm93c2VyCisgIFBhdGggQnJvd3NlciAgICAgIyBlRVcub3Blbl9wYXRoX2Jyb3dzZXIsIHBhdGhicm93c2VyCiAgIC0tLQotICBTYXZlICAjIElEQmluZGluZy5zYXZlCi0gIFNhdmUgQXMuLi4gICMgSU9CaW5kaW5nLnNhdmVfYXMKLSAgU2F2ZSBDb3B5IEFzLi4uICAjIElPQmluZGxpbmcuc2F2ZV9hX2NvcHkKKyAgU2F2ZSAgICAgICAgICAgICAjIGlvbWVudS5zYXZlCisgIFNhdmUgQXMuLi4gICAgICAgIyBpb21lbnUuc2F2ZV9hcworICBTYXZlIENvcHkgQXMuLi4gICMgaW9tZW51LnNhdmVfYV9jb3B5CiAgIC0tLQotICBQcmludCBXaW5kb3cgICMgSU9CaW5kaW5nLnByaW50X3dpbmRvdworICBQcmludCBXaW5kb3cgICAgICMgaW9tZW51LnByaW50X3dpbmRvdwogICAtLS0KLSAgQ2xvc2UKLSAgRXhpdAorICBDbG9zZSAgICAgICAgICAgICMgZUVXLmNsb3NlX2V2ZW50CisgIEV4aXQgICAgICAgICAgICAgIyBmbGlzdC5jbG9zZV9hbGxfY2FsbGJhY2sgKGJvdW5kIGluIGVFVykKIAogRWRpdAotICBVbmRvICAjIHVuZG9EZWxlZ2F0b3IKLSAgUmVkbyAgIyB1bmRvRGVsZWdhdG9yCi0gIC0tLQotICBDdXQKLSAgQ29weQotICBQYXN0ZQotICBTZWxlY3QgQWxsCi0gIC0tLSAgIyBOZXh0IDUgaXRlbXMgdXNlIFNlYXJjaEVuZ2luZTsgZGlhbG9ncyB1c2UgU2VhcmNoRGlhbG9nQmFzZQotICBGaW5kICAjIFNlYXJjaCBEaWFsb2cKLSAgRmluZCBBZ2FpbgotICBGaW5kIFNlbGVjdGlvbgotICBGaW5kIGluIEZpbGVzLi4uICAjIEdyZXBEaWFsb2cKLSAgUmVwbGFjZS4uLiAgIyBSZXBsYWNlRGlhbG9nCi0gIEdvIHRvIExpbmUKLSAgU2hvdyBDb21wbGV0aW9ucyAgIyBBdXRvQ29tcGxldGUgZXh0ZW5zaW9uIGFuZCBBdXRvQ29tcGxldGVXaWRvdyAoJkhQKQotICBFeHBhbmQgV29yZCAgIyBBdXRvRXhwYW5kIGV4dGVuc2lvbgotICBTaG93IGNhbGwgdGlwICAjIENhbGx0aXBzIGV4dGVuc2lvbiBhbmQgQ2FsbHRpcFdpbmRvdyAoJiBIeXBlcnBhcnNlcikKLSAgU2hvdyBzdXJyb3VuZGluZyBwYXJlbnMgICMgUGFyZW5NYXRjaCAoJiBIeXBlcnBhcnNlcikKKyAgVW5kbyAgICAgICAgICAgICAjIHVuZG9kZWxlZ2F0b3IKKyAgUmVkbyAgICAgICAgICAgICAjIHVuZG9kZWxlZ2F0b3IKKyAgLS0tICAgICAgICAgICAgICAjIGVFVy5yaWdodF9tZW51X2V2ZW50CisgIEN1dCAgICAgICAgICAgICAgIyBlRVcuY3V0CisgIENvcHkgICAgICAgICAgICAgIyBlRVcuY29weQorICBQYXN0ZSAgICAgICAgICAgICMgZUVXLnBhc3QKKyAgU2VsZWN0IEFsbCAgICAgICAjIGVFVy5zZWxlY3RfYWxsICgrIHNlZSBlRVcucmVtb3ZlX3NlbGVjdGlvbikKKyAgLS0tICAgICAgICAgICAgICAjIE5leHQgNSBpdGVtcyB1c2Ugc2VhcmNoZW5naW5lOyBkaWFsb2dzIHVzZSBzZWFyY2hiYXNlCisgIEZpbmQgICAgICAgICAgICAgIyBlRVcuZmluZF9ldmVudCwgc2VhcmNoLlNlYXJjaERpYWxvZy5maW5kCisgIEZpbmQgQWdhaW4gICAgICAgIyBlRVcuZmluZF9hZ2Fpbl9ldmVudCwgc1NELmZpbmRfYWdhaW4KKyAgRmluZCBTZWxlY3Rpb24gICAjIGVFVy5maW5kX3NlbGVjdGlvbl9ldmVudCwgc1NELmZpbmRfc2VsZWN0aW9uCisgIEZpbmQgaW4gRmlsZXMuLi4gIyBlRVcuZmluZF9pbl9maWxlc19ldmVudCwgZ3JlcAorICBSZXBsYWNlLi4uICAgICAgICMgZUVXLnJlcGxhY2VfZXZlbnQsIHJlcGxhY2UuUmVwbGFjZURpYWxvZy5yZXBsYWNlCisgIEdvIHRvIExpbmUgICAgICAgIyBlRVcuZ290b19saW5lX2V2ZW50CisgIFNob3cgQ29tcGxldGlvbnMgIyBhdXRvY29tcGxldGUgZXh0ZW5zaW9uIGFuZCBhdXRvY29tcGxldGVXaWRvdyAoJkhQKQorICBFeHBhbmQgV29yZCAgICAgICMgYXV0b2V4cGFuZCBleHRlbnNpb24KKyAgU2hvdyBjYWxsIHRpcCAgICAjIENhbGx0aXBzIGV4dGVuc2lvbiBhbmQgQ2FsbHRpcFdpbmRvdyAoJiBIeXBlcnBhcnNlcikKKyAgU2hvdyBzdXJyb3VuZGluZyBwYXJlbnMgICMgcGFyZW5tYXRjaCAoJiBIeXBlcnBhcnNlcikKIAotU2hlbGwgICMgUHlTaGVsbAotICBWaWV3IExhc3QgUmVzdGFydCAgICAjIFB5U2hlbGwuUHlTaGVsbC52aWV3X3Jlc3RhcnRfbWFyawotICBSZXN0YXJ0IFNoZWxsICAgICAgICAjIFB5U2hlbGwuUHlTaGVsbC5yZXN0YXJ0X3NoZWxsCitTaGVsbCAgIyBweXNoZWxsCisgIFZpZXcgTGFzdCBSZXN0YXJ0ICAgICMgcHlzaGVsbC5QeVNoZWxsLnZpZXdfcmVzdGFydF9tYXJrCisgIFJlc3RhcnQgU2hlbGwgICAgICAgICMgcHlzaGVsbC5QeVNoZWxsLnJlc3RhcnRfc2hlbGwKICAgSW50ZXJydXB0IEV4ZWN1dGlvbiAgIyBweXNoZWxsLlB5U2hlbGwuY2FuY2VsX2NhbGxiYWNrCiAKIERlYnVnIChTaGVsbCBvbmx5KQogICBHbyB0byBGaWxlL0xpbmUKLSAgRGVidWdnZXIgICAgICAgICAgICAgICAjIERlYnVnZ2VyLCBSZW1vdGVEZWJ1Z2dlciwgUHlTaGVsbC50b2dnbGVfZGVidWdlcgotICBTdGFjayBWaWV3ZXIgICAgICAgICAgICMgU3RhY2tWaWV3ZXIsIFB5U2hlbGwub3Blbl9zdGFja192aWV3ZXIKLSAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAjIFN0YWNrVmlld2VyCisgIGRlYnVnZ2VyICAgICAgICAgIyBkZWJ1Z2dlciwgZGVidWdnZXJfciwgUHlTaGVsbC50b2dnbGVfZGVidWdlcgorICBTdGFjayBWaWV3ZXIgICAgICMgc3RhY2t2aWV3ZXIsIFB5U2hlbGwub3Blbl9zdGFja192aWV3ZXIKKyAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAgIyBzdGFja3ZpZXdlcgogCiBGb3JtYXQgKEVkaXRvciBvbmx5KQotICBJbmRlbnQgUmVnaW9uCi0gIERlZGVudCBSZWdpb24KLSAgQ29tbWVudCBPdXQgUmVnaW9uCi0gIFVuY29tbWVudCBSZWdpb24KLSAgVGFiaWZ5IFJlZ2lvbgotICBVbnRhYmlmeSBSZWdpb24KLSAgVG9nZ2xlIFRhYnMKLSAgTmV3IEluZGVudCBXaWR0aAotICBGb3JtYXQgUGFyYWdyYXBoICAjIEZvcm1hdFBhcmFncmFwaCBleHRlbnNpb24KKyAgSW5kZW50IFJlZ2lvbiAgICAjIGVFVy5pbmRlbnRfcmVnaW9uX2V2ZW50CisgIERlZGVudCBSZWdpb24gICAgIyBlRVcuZGVkZW50X3JlZ2lvbl9ldmVudAorICBDb21tZW50IE91dCBSZWcuICMgZUVXLmNvbW1lbnRfcmVnaW9uX2V2ZW50CisgIFVuY29tbWVudCBSZWdpb24gIyBlRVcudW5jb21tZW50X3JlZ2lvbl9ldmVudAorICBUYWJpZnkgUmVnaW9uICAgICMgZUVXLnRhYmlmeV9yZWdpb25fZXZlbnQKKyAgVW50YWJpZnkgUmVnaW9uICAjIGVFVy51bnRhYmlmeV9yZWdpb25fZXZlbnQKKyAgVG9nZ2xlIFRhYnMgICAgICAjIGVFVy50b2dnbGVfdGFic19ldmVudAorICBOZXcgSW5kZW50IFdpZHRoICMgZUVXLmNoYW5nZV9pbmRlbnR3aWR0aF9ldmVudAorICBGb3JtYXQgUGFyYWdyYXBoICMgcGFyYWdyYXBoIGV4dGVuc2lvbgogICAtLS0KLSAgU3RyaXAgdGFpbGluZyB3aGl0ZXNwYWNlICAjIFJzdHJpcEV4dGVuc2lvbiBleHRlbnNpb24KKyAgU3RyaXAgdGFpbGluZyB3aGl0ZXNwYWNlICAjIHJzdHJpcCBleHRlbnNpb24KIAogUnVuIChFZGl0b3Igb25seSkKLSAgUHl0aG9uIFNoZWxsICAjIFB5U2hlbGwKKyAgUHl0aG9uIFNoZWxsICAgICAjIHB5c2hlbGwKICAgLS0tCi0gIENoZWNrIE1vZHVsZSAgIyBTY3JpcHRCaW5kaW5nCi0gIFJ1biBNb2R1bGUgICMgU2NyaXB0QmluZGluZworICBDaGVjayBNb2R1bGUgICAgICMgcnVuc2NyaXB0CisgIFJ1biBNb2R1bGUgICAgICAgIyBydW5zY3JpcHQKIAogT3B0aW9ucwotICBDb25maWd1cmUgSURMRSAgIyBjb25maWdEaWFsb2cKKyAgQ29uZmlndXJlIElETEUgICAjIGVFVy5jb25maWdfZGlhbG9nLCBjb25maWdkaWFsb2cKICAgICAodGFicyBpbiB0aGUgZGlhbG9nKQotICAgIEZvbnQgdGFiICAjIG9uZmlnLW1haW4uZGVmCi0gICAgSGlnaGxpZ2h0IHRhYiAgIyBjb25maWdTZWN0aW9uTmFtZURpYWxvZywgY29uZmlnLWhpZ2hsaWdodC5kZWYKLSAgICBLZXlzIHRhYiAgIyBrZXliaW5kaW5nRGlhbG9nLCBjb25maWdTZWN0aW9uTmFtZURpYWxvZywgb25maWcta2V1cy5kZWYKLSAgICBHZW5lcmFsIHRhYiAgIyBjb25maWdIZWxwU291cmNlRWRpdCwgY29uZmlnLW1haW4uZGVmCi0gIENvbmZpZ3VyZSBFeHRlbnNpb25zICAjIGNvbmZpZ0RpYWxvZwotICAgIFh5eiB0YWIgICMgeHl6LnB5LCBjb25maWctZXh0ZW5zaW9ucy5kZWYKKyAgICBGb250IHRhYiAgICAgICAjIGNvbmZpZy1tYWluLmRlZgorICAgIEhpZ2hsaWdodCB0YWIgICMgcXVlcnksIGNvbmZpZy1oaWdobGlnaHQuZGVmCisgICAgS2V5cyB0YWIgICAgICAgIyBxdWVyeSwgY29uZmlnX2tleSwgY29uZmlnX2tleXMuZGVmCisgICAgR2VuZXJhbCB0YWIgICAgIyBjb25maWdfaGVscCwgY29uZmlnLW1haW4uZGVmCisgICAgRXh0ZW5zaW9ucyB0YWIgIyBjb25maWctZXh0ZW5zaW9ucy5kZWYsIGNvcnJlc3BvbmRpbmcgLnB5CiAgIC0tLQotICBDb2RlIENvbnRleHQgKGVkaXRvciBvbmx5KSAgIyBDb2RlQ29udGV4dCBleHRlbnNpb24KKyAgQ29kZSBDb250ZXh0IChlZCkjIGNvZGVjb250ZXh0IGV4dGVuc2lvbgogCiBXaW5kb3cKLSAgWm9vbWhlaWdodCAgIyBab29tSGVpZ2h0IGV4dGVuc2lvbgorICBab29taGVpZ2h0ICAgICAgICMgem9vbWhlaWdodCBleHRlbnNpb24KICAgLS0tCi0gIDxvcGVuIHdpbmRvd3M+ICAjIFdpbmRvd0xpc3QKKyAgPG9wZW4gd2luZG93cz4gICAjIHdpbmRvd3MKIAogSGVscAotICBBYm91dCBJRExFICAjIGFib3V0RGlhbG9nCisgIEFib3V0IElETEUgICAgICAgIyBlRVcuYWJvdXRfZGlhbG9nLCBoZWxwX2Fib3V0LkFib3V0RGlhbG9nIAogICAtLS0KLSAgSURMRSBIZWxwICAjIGhlbHAKLSAgUHl0aG9uIERvYwotICBUdXJ0bGUgRGVtbworICBJRExFIEhlbHAgICAgICAgICMgZUVXLmhlbHBfZGlhbG9nLCBoZWxwc2hvd19pZGxlaGVscAorICBQeXRob24gRG9jICAgICAgICMgZUVXLnB5dGhvbl9kb2NzCisgIFR1cnRsZSBEZW1vICAgICAgIyBlRVcub3Blbl90dXJ0bGVfZGVtbwogICAtLS0KICAgPG90aGVyIGhlbHAgc291cmNlcz4KIAogPENvbnRleHQgTWVudT4gKHJpZ2h0IGNsaWNrKQotRGVmaW5lZCBpbiBFZGl0b3JXaW5kb3csIFB5U2hlbGwsIE91dHB1dAotICAgQ3V0Ci0gICBDb3B5Ci0gICBQYXN0ZQotICAgLS0tCi0gICBHbyB0byBmaWxlL2xpbmUgKHNoZWxsIGFuZCBvdXRwdXQgb25seSkKLSAgIFNldCBCcmVha3BvaW50IChlZGl0b3Igb25seSkKLSAgIENsZWFyIEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQotIERlZmluZWQgaW4gRGVidWdnZXIKLSAgIEdvIHRvIHNvdXJjZSBsaW5lCi0gICBTaG93IHN0YWNrIGZyYW1lCisgIERlZmluZWQgaW4gZWRpdG9yLCBQeVNoZWxweXNoZWxsdXQKKyAgICBDdXQKKyAgICBDb3B5CisgICAgUGFzdGUKKyAgICAtLS0KKyAgICBHbyB0byBmaWxlL2xpbmUgKHNoZWxsIGFuZCBvdXRwdXQgb25seSkKKyAgICBTZXQgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCisgICAgQ2xlYXIgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCisgIERlZmluZWQgaW4gZGVidWdnZXIKKyAgICBHbyB0byBzb3VyY2UgbGluZQorICAgIFNob3cgc3RhY2sgZnJhbWUKKworPE5vIG1lbnU+CitDZW50ZXIgSW5zZXJ0ICAgICAgIyBlRVcuY2VudGVyX2luc2VydF9ldmVudAorCisgIAorQ09ERSBTVFlMRSAtLSBHZW5lcmFsbHkgUEVQIDguCisKK2ltcG9ydAorLS0tLS0tCitQdXQgaW1wb3J0IGF0IHRoZSB0b3AsIHVubGVzcyB0aGVyZSBpcyBhIGdvb2QgcmVhc29uIG90aGVyd2lzZS4KK1BFUCA4IHNheXMgdG8gZ3JvdXAgc3RkbGliLCAzcmQtcGFydHkgZGVwZW5kZW5jaWVzLCBhbmQgcGFja2FnZSBpbXBvcnRzLgorRm9yIGlkbGVsaWIsIHRoZSBncm91cHMgYXJlIGdlbmVyYWwgc3RkbGliLCB0a2ludGVyLCBhbmQgaWRsZWxpYi4KK1NvcnQgbW9kdWxlcyB3aXRoaW4gZWFjaCBncm91cCwgZXhjZXB0IHRoYXQgdGtpbnRlci50dGsgZm9sbG93cyB0a2ludGVyLgorU29ydCAnZnJvbSBpZGxlbGliIGltcG9ydCBtb2QxJyBhbmQgJ2Zyb20gaWRsZWxpYi5tb2QyIGltcG9ydCBvYmplY3QnCit0b2dldGhlciBieSBtb2R1bGUsIGlnbm9yaW5nIHdpdGhpbiBtb2R1bGUgb2JqZWN0cy4KK1B1dCAnaW1wb3J0IF9fbWFpbl9fJyBhZnRlciBvdGhlciBpZGxlbGliIGltcG9ydHMuCisKK0ltcG9ydHMgb25seSBuZWVkZWQgZm9yIHRlc3RpbmcgYXJlIHB1dCBub3QgYXQgdGhlIHRvcCBidXQgaW4gYW4KK2h0ZXN0IGZ1bmN0aW9uIGRlZiBvciAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIgY2xhdXNlLgorCitXaXRoaW4gbW9kdWxlIGltcG9ydHMgbGlrZSAiZnJvbSBpZGxlbGliLm1vZCBpbXBvcnQgY2xhc3MiIG1heSBjYXVzZQorY2lyY3VsYXIgaW1wb3J0cyB0byBkZWFkbG9jay4gIEV2ZW4gd2l0aG91dCB0aGlzLCBjaXJjdWxhciBpbXBvcnRzIG1heQorcmVxdWlyZSBhdCBsZWFzdCBvbmUgb2YgdGhlIGltcG9ydHMgdG8gYmUgZGVsYXllZCB1bnRpbCBhIGZ1bmN0aW9uIGNhbGwuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CmluZGV4IDcxMWY2MWIuLjc5MWRkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CkBAIC0xLDggKzEsMTAgQEAKICIiIlRoZSBpZGxlbGliIHBhY2thZ2UgaW1wbGVtZW50cyB0aGUgSWRsZSBhcHBsaWNhdGlvbi4KIAogSWRsZSBpbmNsdWRlcyBhbiBpbnRlcmFjdGl2ZSBzaGVsbCBhbmQgZWRpdG9yLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCiBVc2UgdGhlIGZpbGVzIG5hbWVkIGlkbGUuKiB0byBzdGFydCBJZGxlLgogCiBUaGUgb3RoZXIgZmlsZXMgYXJlIHByaXZhdGUgaW1wbGVtZW50YXRpb25zLiAgVGhlaXIgZGV0YWlscyBhcmUgc3ViamVjdCB0bwogY2hhbmdlLiAgU2VlIFBFUCA0MzQgZm9yIG1vcmUuICBJbXBvcnQgdGhlbSBhdCB5b3VyIG93biByaXNrLgogIiIiCit0ZXN0aW5nID0gRmFsc2UgICMgU2V0IFRydWUgYnkgdGVzdC50ZXN0X2lkbGUuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weSBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CmluZGV4IDJlZGY1ZjcuLjYzNDllYzcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CisrKyBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CkBAIC0zLDYgKzMsNiBAQAogCiBSdW4gSURMRSBhcyBweXRob24gLW0gaWRsZWxpYgogIiIiCi1pbXBvcnQgaWRsZWxpYi5QeVNoZWxsCi1pZGxlbGliLlB5U2hlbGwubWFpbigpCitpbXBvcnQgaWRsZWxpYi5weXNoZWxsCitpZGxlbGliLnB5c2hlbGwubWFpbigpCiAjIFRoaXMgZmlsZSBkb2VzIG5vdCB3b3JrIGZvciAyLjc7IFNlZSBpc3N1ZSAyNDIxMi4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weSBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQppbmRleCBmZjA4NWQ1Li4xZTQ0ZmE1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CkBAIC0xLDI5ICsxLDMwIEBACi0iIiJBdXRvQ29tcGxldGUucHkgLSBBbiBJRExFIGV4dGVuc2lvbiBmb3IgYXV0b21hdGljYWxseSBjb21wbGV0aW5nIG5hbWVzLgorIiIiYXV0b2NvbXBsZXRlLnB5IC0gQW4gSURMRSBleHRlbnNpb24gZm9yIGF1dG9tYXRpY2FsbHkgY29tcGxldGluZyBuYW1lcy4KIAogVGhpcyBleHRlbnNpb24gY2FuIGNvbXBsZXRlIGVpdGhlciBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZSBuYW1lcy4gSXQgY2FuIHBvcAogYSB3aW5kb3cgd2l0aCBhbGwgYXZhaWxhYmxlIG5hbWVzLCBmb3IgdGhlIHVzZXIgdG8gc2VsZWN0IGZyb20uCiAiIiIKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLQotIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllcgotSURfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIKLQotIyBUaGVzZSBjb25zdGFudHMgcmVwcmVzZW50IHRoZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBsZXRpb25zCisjIFRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcGxldGlvbnMuCisjIFRoZXkgbXVzdCBiZSBkZWZpbmVkIGhlcmUgc28gYXV0b2NvbXBsZV93IGNhbiBpbXBvcnQgdGhlbS4KIENPTVBMRVRFX0FUVFJJQlVURVMsIENPTVBMRVRFX0ZJTEVTID0gcmFuZ2UoMSwgMisxKQogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZVdpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgotCitmcm9tIGlkbGVsaWIgaW1wb3J0IGF1dG9jb21wbGV0ZV93Citmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgogaW1wb3J0IF9fbWFpbl9fCiAKKyMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIuCisjIFRPRE8gVXBkYXRlIHRoaXMgaGVyZSBhbmQgZWxzZXdoZXJlLgorSURfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIKKwogU0VQUyA9IG9zLnNlcAogaWYgb3MuYWx0c2VwOiAgIyBlLmcuICcvJyBvbiBXaW5kb3dzLi4uCiAgICAgU0VQUyArPSBvcy5hbHRzZXAKIAorCiBjbGFzcyBBdXRvQ29tcGxldGU6CiAKICAgICBtZW51ZGVmcyA9IFsKQEAgLTM3LDE5ICszOCwxNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW49Tm9uZSk6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgaWYgZWRpdHdpbiBpcyBOb25lOiAgIyBzdWJwcm9jZXNzIGFuZCB0ZXN0Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0Ci0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gTm9uZQotCi0gICAgICAgICMgaWQgb2YgZGVsYXllZCBjYWxsLCBhbmQgdGhlIGluZGV4IG9mIHRoZSB0ZXh0IGluc2VydCB3aGVuIHRoZSBkZWxheWVkCi0gICAgICAgICMgY2FsbCB3YXMgaXNzdWVkLiBJZiBfZGVsYXllZF9jb21wbGV0aW9uX2lkIGlzIE5vbmUsIHRoZXJlIGlzIG5vCi0gICAgICAgICMgZGVsYXllZCBjYWxsLgotICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IE5vbmUKKyAgICAgICAgaWYgZWRpdHdpbiBpcyBub3QgTm9uZTogICMgbm90IGluIHN1YnByb2Nlc3Mgb3IgdGVzdAorICAgICAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0CisgICAgICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IE5vbmUKKyAgICAgICAgICAgICMgaWQgb2YgZGVsYXllZCBjYWxsLCBhbmQgdGhlIGluZGV4IG9mIHRoZSB0ZXh0IGluc2VydCB3aGVuCisgICAgICAgICAgICAjIHRoZSBkZWxheWVkIGNhbGwgd2FzIGlzc3VlZC4gSWYgX2RlbGF5ZWRfY29tcGxldGlvbl9pZCBpcworICAgICAgICAgICAgIyBOb25lLCB0aGVyZSBpcyBubyBkZWxheWVkIGNhbGwuCisgICAgICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBOb25lCiAKICAgICBkZWYgX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdyhzZWxmKToKLSAgICAgICAgcmV0dXJuIEF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3coc2VsZi50ZXh0KQorICAgICAgICByZXR1cm4gYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93KHNlbGYudGV4dCkKIAogICAgIGRlZiBfcmVtb3ZlX2F1dG9jb21wbGV0ZV93aW5kb3coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuYXV0b2NvbXBsZXRld2luZG93OgpAQCAtODAsMTYgKzc5LDE3IEBACiAgICAgICAgIG9wZW4gYSBjb21wbGV0aW9uIGxpc3QgYWZ0ZXIgdGhhdCAoaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZQogICAgICAgICBjb21wbGV0aW9uKQogICAgICAgICAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIikgYW5kIGV2ZW50Lm1jX3N0YXRlOgotICAgICAgICAgICAgIyBBIG1vZGlmaWVyIHdhcyBwcmVzc2VkIGFsb25nIHdpdGggdGhlIHRhYiwgY29udGludWUgYXMgdXN1YWwuCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIikgYW5kIGV2ZW50Lm1jX3N0YXRlIG9yXAorICAgICAgICAgICAgICAgIG5vdCBzZWxmLnRleHQuZ2V0KCJpbnNlcnQgbGluZXN0YXJ0IiwgImluc2VydCIpLnN0cmlwKCk6CisgICAgICAgICAgICAjIEEgbW9kaWZpZXIgd2FzIHByZXNzZWQgYWxvbmcgd2l0aCB0aGUgdGFiIG9yCisgICAgICAgICAgICAjIHRoZXJlIGlzIG9ubHkgcHJldmlvdXMgd2hpdGVzcGFjZSBvbiB0aGlzIGxpbmUsIHNvIHRhYi4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGlmIHNlbGYuYXV0b2NvbXBsZXRld2luZG93IGFuZCBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5pc19hY3RpdmUoKToKICAgICAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93LmNvbXBsZXRlKCkKICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcGVuZWQgPSBzZWxmLm9wZW5fY29tcGxldGlvbnMoRmFsc2UsIFRydWUsIFRydWUpCi0gICAgICAgICAgICBpZiBvcGVuZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJicmVhayIKKyAgICAgICAgICAgIHJldHVybiAiYnJlYWsiIGlmIG9wZW5lZCBlbHNlIE5vbmUKIAogICAgIGRlZiBfb3Blbl9jb21wbGV0aW9uc19sYXRlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikKQEAgLTEwMSw5ICsxMDEsOCBAQAogCiAgICAgZGVmIF9kZWxheWVkX29wZW5fY29tcGxldGlvbnMoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikgIT0gc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYub3Blbl9jb21wbGV0aW9ucygqYXJncykKKyAgICAgICAgaWYgc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKSA9PSBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXg6CisgICAgICAgICAgICBzZWxmLm9wZW5fY29tcGxldGlvbnMoKmFyZ3MpCiAKICAgICBkZWYgb3Blbl9jb21wbGV0aW9ucyhzZWxmLCBldmFsZnVuY3MsIGNvbXBsZXRlLCB1c2VyV2FudHNXaW4sIG1vZGU9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIGNvbXBsZXRpb25zIGFuZCBjcmVhdGUgdGhlIEF1dG9Db21wbGV0ZVdpbmRvdy4KQEAgLTE0OCwxNyArMTQ3LDE3IEBACiAgICAgICAgICAgICAgICAgY29tcF93aGF0ID0gaHAuZ2V0X2V4cHJlc3Npb24oKQogICAgICAgICAgICAgICAgIGlmIG5vdCBjb21wX3doYXQgb3IgXAogICAgICAgICAgICAgICAgICAgIChub3QgZXZhbGZ1bmNzIGFuZCBjb21wX3doYXQuZmluZCgnKCcpICE9IC0xKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvbXBfd2hhdCA9ICIiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgaWYgY29tcGxldGUgYW5kIG5vdCBjb21wX3doYXQgYW5kIG5vdCBjb21wX3N0YXJ0OgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBjb21wX2xpc3RzID0gc2VsZi5mZXRjaF9jb21wbGV0aW9ucyhjb21wX3doYXQsIG1vZGUpCiAgICAgICAgIGlmIG5vdCBjb21wX2xpc3RzWzBdOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IHNlbGYuX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdygpCiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuc2hvd193aW5kb3coCiAgICAgICAgICAgICAgICAgY29tcF9saXN0cywgImluc2VydC0lZGMiICUgbGVuKGNvbXBfc3RhcnQpLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5IGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQppbmRleCAyZWU2ODc4Li4zMzc0YzZlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKQEAgLTEsOSArMSwxMSBAQAogIiIiCi1BbiBhdXRvLWNvbXBsZXRpb24gd2luZG93IGZvciBJRExFLCB1c2VkIGJ5IHRoZSBBdXRvQ29tcGxldGUgZXh0ZW5zaW9uCitBbiBhdXRvLWNvbXBsZXRpb24gd2luZG93IGZvciBJRExFLCB1c2VkIGJ5IHRoZSBhdXRvY29tcGxldGUgZXh0ZW5zaW9uCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliLk11bHRpQ2FsbCBpbXBvcnQgTUNfU0hJRlQKLWZyb20gaWRsZWxpYi5BdXRvQ29tcGxldGUgaW1wb3J0IENPTVBMRVRFX0ZJTEVTLCBDT01QTEVURV9BVFRSSUJVVEVTCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmF1dG9jb21wbGV0ZSBpbXBvcnQgQ09NUExFVEVfRklMRVMsIENPTVBMRVRFX0FUVFJJQlVURVMKK2Zyb20gaWRsZWxpYi5tdWx0aWNhbGwgaW1wb3J0IE1DX1NISUZUCiAKIEhJREVfVklSVFVBTF9FVkVOVF9OQU1FID0gIjw8YXV0b2NvbXBsZXRld2luZG93LWhpZGU+PiIKIEhJREVfU0VRVUVOQ0VTID0gKCI8Rm9jdXNPdXQ+IiwgIjxCdXR0b25QcmVzcz4iKQpAQCAtMzQsOCArMzYsOCBAQAogICAgICAgICBzZWxmLmNvbXBsZXRpb25zID0gTm9uZQogICAgICAgICAjIEEgbGlzdCB3aXRoIG1vcmUgY29tcGxldGlvbnMsIG9yIE5vbmUKICAgICAgICAgc2VsZi5tb3JlY29tcGxldGlvbnMgPSBOb25lCi0gICAgICAgICMgVGhlIGNvbXBsZXRpb24gbW9kZS4gRWl0aGVyIEF1dG9Db21wbGV0ZS5DT01QTEVURV9BVFRSSUJVVEVTIG9yCi0gICAgICAgICMgQXV0b0NvbXBsZXRlLkNPTVBMRVRFX0ZJTEVTCisgICAgICAgICMgVGhlIGNvbXBsZXRpb24gbW9kZS4gRWl0aGVyIGF1dG9jb21wbGV0ZS5DT01QTEVURV9BVFRSSUJVVEVTIG9yCisgICAgICAgICMgYXV0b2NvbXBsZXRlLkNPTVBMRVRFX0ZJTEVTCiAgICAgICAgIHNlbGYubW9kZSA9IE5vbmUKICAgICAgICAgIyBUaGUgY3VycmVudCBjb21wbGV0aW9uIHN0YXJ0LCBvbiB0aGUgdGV4dCBib3ggKGEgc3RyaW5nKQogICAgICAgICBzZWxmLnN0YXJ0ID0gTm9uZQpAQCAtMjE1LDYgKzIxNyw3IEBACiAgICAgICAgIHNlbGYud2luY29uZmlnaWQgPSBhY3cuYmluZChXSU5DT05GSUdfU0VRVUVOQ0UsIHNlbGYud2luY29uZmlnX2V2ZW50KQogICAgICAgICBzZWxmLmRvdWJsZWNsaWNraWQgPSBsaXN0Ym94LmJpbmQoRE9VQkxFQ0xJQ0tfU0VRVUVOQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvdWJsZWNsaWNrX2V2ZW50KQorICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHdpbmNvbmZpZ19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgpAQCAtMjM4LDE2ICsyNDEsMTQgQEAKICAgICAgICAgYWN3LndtX2dlb21ldHJ5KCIrJWQrJWQiICUgKG5ld194LCBuZXdfeSkpCiAKICAgICBkZWYgaGlkZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQorICAgICAgICBpZiBzZWxmLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCiAKICAgICBkZWYgbGlzdHNlbGVjdF9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQotICAgICAgICBjdXJzZWwgPSBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKQotICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQorICAgICAgICBpZiBzZWxmLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCisgICAgICAgICAgICBjdXJzZWwgPSBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKQorICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKIAogICAgIGRlZiBkb3VibGVjbGlja19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgICMgUHV0IHRoZSBzZWxlY3RlZCBjb21wbGV0aW9uIGluIHRoZSB0ZXh0LCBhbmQgY2xvc2UgdGhlIGxpc3QKQEAgLTI1Nyw3ICsyNTgsNyBAQAogCiAgICAgZGVmIGtleXByZXNzX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGtleXN5bSA9IGV2ZW50LmtleXN5bQogICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKToKICAgICAgICAgICAgIHN0YXRlID0gZXZlbnQubWNfc3RhdGUKQEAgLTI4Miw3ICsyODMsNyBAQAogICAgICAgICAgICAgICAgICMga2V5c3ltID09ICJCYWNrU3BhY2UiCiAgICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuc3RhcnQpID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5zdGFydFs6LTFdKQogICAgICAgICAgICAgc2VsZi5sYXN0dHlwZWRzdGFydCA9IHNlbGYuc3RhcnQKICAgICAgICAgICAgIHNlbGYubGlzdGJveC5zZWxlY3RfY2xlYXIoMCwgaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkpCkBAIC0yOTIsNyArMjkzLDcgQEAKIAogICAgICAgICBlbGlmIGtleXN5bSA9PSAiUmV0dXJuIjoKICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgKHNlbGYubW9kZSA9PSBDT01QTEVURV9BVFRSSUJVVEVTIGFuZCBrZXlzeW0gaW4KICAgICAgICAgICAgICAgKCJwZXJpb2QiLCAic3BhY2UiLCAicGFyZW5sZWZ0IiwgInBhcmVucmlnaHQiLCAiYnJhY2tldGxlZnQiLApAQCAtMzA4LDcgKzMwOSw3IEBACiAgICAgICAgICAgICAgICBhbmQgKHNlbGYubW9kZSA9PSBDT01QTEVURV9BVFRSSUJVVEVTIG9yIHNlbGYuc3RhcnQpOgogICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGtleXN5bSBpbiAoIkhvbWUiLCAiRW5kIiwgIlByaW9yIiwgIk5leHQiLCAiVXAiLCAiRG93biIpIGFuZCBcCiAgICAgICAgICAgICAgbm90IHN0YXRlOgpAQCAtMzQ5LDEyICszNTAsMTIgQEAKICAgICAgICAgICAgICAgICAjIGZpcnN0IHRhYjsgbGV0IEF1dG9Db21wbGV0ZSBoYW5kbGUgdGhlIGNvbXBsZXRpb24KICAgICAgICAgICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKICAgICAgICAgICAgICAgICBzZWxmLmxhc3RrZXlfd2FzX3RhYiA9IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgYW55KHMgaW4ga2V5c3ltIGZvciBzIGluICgiU2hpZnQiLCAiQ29udHJvbCIsICJBbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldGEiLCAiQ29tbWFuZCIsICJPcHRpb24iKSk6CiAgICAgICAgICAgICAjIEEgbW9kaWZpZXIga2V5LCBzbyBpZ25vcmUKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGV2ZW50LmNoYXIgYW5kIGV2ZW50LmNoYXIgPj0gJyAnOgogICAgICAgICAgICAgIyBSZWd1bGFyIGNoYXJhY3RlciB3aXRoIGEgbm9uLWxlbmd0aC0xIGtleWNvZGUKQEAgLTM2OCw3ICszNjksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBVbmtub3duIGV2ZW50LCBjbG9zZSB0aGUgd2luZG93IGFuZCBsZXQgaXQgdGhyb3VnaC4KICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIGtleXJlbGVhc2VfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkgYi9MaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKaW5kZXggNzA1OTA1NC4uNmI0NmJlZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CkBAIC0xMiw4ICsxMiw4IEBACiAKIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIGZpbGUgYW5kIHRoZXJlIGlzIG9ubHkgb25lIGluc3RhbmNlIG9mIEF1dG9FeHBhbmQuCiAnJycKLWltcG9ydCBzdHJpbmcKIGltcG9ydCByZQoraW1wb3J0IHN0cmluZwogCiAjIyMkIGV2ZW50IDw8ZXhwYW5kLXdvcmQ+PgogIyMjJCB3aW4gPEFsdC1zbGFzaD4KQEAgLTMxLDYgKzMxLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0CisgICAgICAgIHNlbGYuYmVsbCA9IHNlbGYudGV4dC5iZWxsCiAgICAgICAgIHNlbGYuc3RhdGUgPSBOb25lCiAKICAgICBkZWYgZXhwYW5kX3dvcmRfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtNDYsMTQgKzQ3LDE0IEBACiAgICAgICAgICAgICAgICAgd29yZHMgPSBzZWxmLmdldHdvcmRzKCkKICAgICAgICAgICAgICAgICBpbmRleCA9IDAKICAgICAgICAgaWYgbm90IHdvcmRzOgotICAgICAgICAgICAgc2VsZi50ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgICAgIHdvcmQgPSBzZWxmLmdldHByZXZ3b3JkKCkKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgiaW5zZXJ0IC0gJWQgY2hhcnMiICUgbGVuKHdvcmQpLCAiaW5zZXJ0IikKICAgICAgICAgbmV3d29yZCA9IHdvcmRzW2luZGV4XQogICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICUgbGVuKHdvcmRzKQogICAgICAgICBpZiBpbmRleCA9PSAwOgotICAgICAgICAgICAgc2VsZi50ZXh0LmJlbGwoKSAgICAgICAgICAgICMgV2FybiB3ZSBjeWNsZWQgYXJvdW5kCisgICAgICAgICAgICBzZWxmLmJlbGwoKSAgICAgICAgICAgICMgV2FybiB3ZSBjeWNsZWQgYXJvdW5kCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoImluc2VydCIsIG5ld3dvcmQpCiAgICAgICAgIGN1cmluc2VydCA9IHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikKICAgICAgICAgY3VybGluZSA9IHNlbGYudGV4dC5nZXQoImluc2VydCBsaW5lc3RhcnQiLCAiaW5zZXJ0IGxpbmVlbmQiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvYnJvd3Nlci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2Jyb3dzZXIucHkKaW5kZXggZDA5YzUyZi4uZWEwNTYzOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2Jyb3dzZXIucHkKQEAgLTExLDE2ICsxMSwxNiBAQAogIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHB5Y2xicgoraW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYi5XaW5kb3dMaXN0IGltcG9ydCBMaXN0ZWRUb3BsZXZlbAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKK2Zyb20gaWRsZWxpYi53aW5kb3dzIGltcG9ydCBMaXN0ZWRUb3BsZXZlbAogCiBmaWxlX29wZW4gPSBOb25lICAjIE1ldGhvZC4uLkl0ZW0gYW5kIENsYXNzLi4uSXRlbSB1c2UgdGhpcy4KLSMgTm9ybWFsbHkgUHlTaGVsbC5mbGlzdC5vcGVuLCBidXQgdGhlcmUgaXMgbm8gUHlTaGVsbC5mbGlzdCBmb3IgaHRlc3QuCisjIE5vcm1hbGx5IHB5c2hlbGwuZmxpc3Qub3BlbiwgYnV0IHRoZXJlIGlzIG5vIHB5c2hlbGwuZmxpc3QgZm9yIGh0ZXN0LgogCiBjbGFzcyBDbGFzc0Jyb3dzZXI6CiAKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGdsb2JhbCBmaWxlX29wZW4KICAgICAgICAgaWYgbm90IF9odGVzdDoKLSAgICAgICAgICAgIGZpbGVfb3BlbiA9IFB5U2hlbGwuZmxpc3Qub3BlbgorICAgICAgICAgICAgZmlsZV9vcGVuID0gcHlzaGVsbC5mbGlzdC5vcGVuCiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5maWxlID0gb3MucGF0aC5qb2luKHBhdGhbMF0sIHNlbGYubmFtZSArICIucHkiKQogICAgICAgICBzZWxmLl9odGVzdCA9IF9odGVzdApAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGUpOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIFB5U2hlbGwuZmxpc3Qub3BlbihzZWxmLmZpbGUpCisgICAgICAgIHB5c2hlbGwuZmxpc3Qub3BlbihzZWxmLmZpbGUpCiAKICAgICBkZWYgSXNFeHBhbmRhYmxlKHNlbGYpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZShzZWxmLmZpbGVbLTM6XSkgPT0gIi5weSIKQEAgLTIyNiw3ICsyMjYsNyBAQAogICAgICAgICAgICAgZmlsZSA9IHN5cy5hcmd2WzBdCiAgICAgZGlyLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlKQogICAgIG5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGUpWzBdCi0gICAgZmxpc3QgPSBQeVNoZWxsLlB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCisgICAgZmxpc3QgPSBweXNoZWxsLlB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgZ2xvYmFsIGZpbGVfb3BlbgogICAgIGZpbGVfb3BlbiA9IGZsaXN0Lm9wZW4KICAgICBDbGFzc0Jyb3dzZXIoZmxpc3QsIG5hbWUsIFtkaXJdLCBfaHRlc3Q9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CmluZGV4IDllZWMxNzUuLmM3MzYxZDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiQSBDYWxsVGlwIHdpbmRvdyBjbGFzcyBmb3IgVGtpbnRlci9JRExFLgogCi1BZnRlciBUb29sVGlwLnB5LCB3aGljaCB1c2VzIGlkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbAotVXNlZCBieSB0aGUgQ2FsbFRpcHMgSURMRSBleHRlbnNpb24uCitBZnRlciB0b29sdGlwLnB5LCB3aGljaCB1c2VzIGlkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbAorVXNlZCBieSB0aGUgY2FsbHRpcHMgSURMRSBleHRlbnNpb24uCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIExhYmVsLCBMRUZULCBTT0xJRCwgVGNsRXJyb3IKIApAQCAtMTM4LDggKzEzOCw4IEBACiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IGNhbGx0aXBzIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KHRvcCkKICAgICB0ZXh0LnBhY2soc2lkZT1MRUZULCBmaWxsPUJPVEgsIGV4cGFuZD0xKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCAic3RyaW5nLnNwbGl0IikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NhbGxUaXBzLnB5IGIvTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NhbGx0aXBzLnB5CmluZGV4IDgxYmQ1ZjEuLjRjNWFlYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NhbGxUaXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2NhbGx0aXBzLnB5CkBAIC0xLDE5ICsxLDE5IEBACi0iIiJDYWxsVGlwcy5weSAtIEFuIElETEUgRXh0ZW5zaW9uIHRvIEpvZyBZb3VyIE1lbW9yeQorIiIiY2FsbHRpcHMucHkgLSBBbiBJRExFIEV4dGVuc2lvbiB0byBKb2cgWW91ciBNZW1vcnkKIAogQ2FsbCBUaXBzIGFyZSBmbG9hdGluZyB3aW5kb3dzIHdoaWNoIGRpc3BsYXkgZnVuY3Rpb24sIGNsYXNzLCBhbmQgbWV0aG9kCiBwYXJhbWV0ZXIgYW5kIGRvY3N0cmluZyBpbmZvcm1hdGlvbiB3aGVuIHlvdSB0eXBlIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIGFuZAogd2hpY2ggZGlzYXBwZWFyIHdoZW4geW91IHR5cGUgYSBjbG9zaW5nIHBhcmVudGhlc2lzLgogCiAiIiIKLWltcG9ydCBfX21haW5fXwogaW1wb3J0IGluc3BlY3QKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdHlwZXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBfdworZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgoraW1wb3J0IF9fbWFpbl9fCiAKIGNsYXNzIENhbGxUaXBzOgogCkBAIC0zNyw3ICszNyw3IEBACiAKICAgICBkZWYgX21ha2VfdGtfY2FsbHRpcF93aW5kb3coc2VsZik6CiAgICAgICAgICMgU2VlIF9faW5pdF9fIGZvciB1c2FnZQotICAgICAgICByZXR1cm4gQ2FsbFRpcFdpbmRvdy5DYWxsVGlwKHNlbGYudGV4dCkKKyAgICAgICAgcmV0dXJuIGNhbGx0aXBfdy5DYWxsVGlwKHNlbGYudGV4dCkKIAogICAgIGRlZiBfcmVtb3ZlX2NhbGx0aXBfd2luZG93KHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jYWxsdGlwOgpAQCAtMTIwLDcgKzEyMCw3IEBACiBfTUFYX0NPTFMgPSA4NQogX01BWF9MSU5FUyA9IDUgICMgZW5vdWdoIGZvciBieXRlcwogX0lOREVOVCA9ICcgJyo0ICAjIGZvciB3cmFwcGVkIHNpZ25hdHVyZXMKLV9maXJzdF9wYXJhbSA9IHJlLmNvbXBpbGUoJyg/PD1cKClcdypcLD9ccyonKQorX2ZpcnN0X3BhcmFtID0gcmUuY29tcGlsZShyJyg/PD1cKClcdypcLD9ccyonKQogX2RlZmF1bHRfY2FsbGFibGVfYXJnc3BlYyA9ICJTZWUgc291cmNlIG9yIGRvYyIKIAogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weSBiL0xpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQppbmRleCA3ZDI1YWRhLi5mMjVlMWIzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQpAQCAtMSwxOSArMSwyMSBAQAotIiIiQ29kZUNvbnRleHQgLSBFeHRlbnNpb24gdG8gZGlzcGxheSB0aGUgYmxvY2sgY29udGV4dCBhYm92ZSB0aGUgZWRpdCB3aW5kb3cKKyIiImNvZGVjb250ZXh0IC0gRXh0ZW5zaW9uIHRvIGRpc3BsYXkgdGhlIGJsb2NrIGNvbnRleHQgYWJvdmUgdGhlIGVkaXQgd2luZG93CiAKIE9uY2UgY29kZSBoYXMgc2Nyb2xsZWQgb2ZmIHRoZSB0b3Agb2YgYSB3aW5kb3csIGl0IGNhbiBiZSBkaWZmaWN1bHQgdG8KIGRldGVybWluZSB3aGljaCBibG9jayB5b3UgYXJlIGluLiAgVGhpcyBleHRlbnNpb24gaW1wbGVtZW50cyBhIHBhbmUgYXQgdGhlIHRvcAogb2YgZWFjaCBJRExFIGVkaXQgd2luZG93IHdoaWNoIHByb3ZpZGVzIGJsb2NrIHN0cnVjdHVyZSBoaW50cy4gIFRoZXNlIGhpbnRzIGFyZQogdGhlIGxpbmVzIHdoaWNoIGNvbnRhaW4gdGhlIGJsb2NrIG9wZW5pbmcga2V5d29yZHMsIGUuZy4gJ2lmJywgZm9yIHRoZQogZW5jbG9zaW5nIGJsb2NrLiAgVGhlIG51bWJlciBvZiBoaW50IGxpbmVzIGlzIGRldGVybWluZWQgYnkgdGhlIG51bWxpbmVzCi12YXJpYWJsZSBpbiB0aGUgQ29kZUNvbnRleHQgc2VjdGlvbiBvZiBjb25maWctZXh0ZW5zaW9ucy5kZWYuIExpbmVzIHdoaWNoIGRvCit2YXJpYWJsZSBpbiB0aGUgY29kZWNvbnRleHQgc2VjdGlvbiBvZiBjb25maWctZXh0ZW5zaW9ucy5kZWYuIExpbmVzIHdoaWNoIGRvCiBub3Qgb3BlbiBibG9ja3MgYXJlIG5vdCBzaG93biBpbiB0aGUgY29udGV4dCBoaW50cyBwYW5lLgogCiAiIiIKLWltcG9ydCB0a2ludGVyCi1mcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCBUT1AsIExFRlQsIFgsIFcsIFNVTktFTgogaW1wb3J0IHJlCiBmcm9tIHN5cyBpbXBvcnQgbWF4c2l6ZSBhcyBJTkZJTklUWQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCisKK2ltcG9ydCB0a2ludGVyCitmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCBUT1AsIExFRlQsIFgsIFcsIFNVTktFTgorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiBCTE9DS09QRU5FUlMgPSB7ImNsYXNzIiwgImRlZiIsICJlbGlmIiwgImVsc2UiLCAiZXhjZXB0IiwgImZpbmFsbHkiLCAiZm9yIiwKICAgICAgICAgICAgICAgICAgICAgImlmIiwgInRyeSIsICJ3aGlsZSIsICJ3aXRoIn0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKaW5kZXggMDJlYWM0Ny4uZmY0MDg0NSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CkBAIC0xLDEwICsxLDEwIEBACi1pbXBvcnQgdGltZQotaW1wb3J0IHJlCi1pbXBvcnQga2V5d29yZAogaW1wb3J0IGJ1aWx0aW5zCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrVmVyc2lvbgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBrZXl3b3JkCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogREVCVUcgPSBGYWxzZQogCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgIyAxc3QgJ2ZpbGUnIGNvbG9yaXplZCBub3JtYWwsIDJuZCBhcyBidWlsdGluLCAzcmQgYXMgc3RyaW5nCiAgICAgYnVpbHRpbiA9IHIiKFteLidcIlxcI11cYnxeKSIgKyBhbnkoIkJVSUxUSU4iLCBidWlsdGlubGlzdCkgKyByIlxiIgogICAgIGNvbW1lbnQgPSBhbnkoIkNPTU1FTlQiLCBbciIjW15cbl0qIl0pCi0gICAgc3RyaW5ncHJlZml4ID0gciIoXGJyfHV8dXJ8UnxVfFVSfFVyfHVSfGJ8QnxicnxCcnxiUnxCUnxyYnxyQnxSYnxSQik/IgorICAgIHN0cmluZ3ByZWZpeCA9IHIiKD9pOlxicnx1fGZ8ZnJ8cmZ8YnxicnxyYik/IgogICAgIHNxc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciInW14nXFxcbl0qKFxcLlteJ1xcXG5dKikqJz8iCiAgICAgZHFzdHJpbmcgPSBzdHJpbmdwcmVmaXggKyByJyJbXiJcXFxuXSooXFwuW14iXFxcbl0qKSoiPycKICAgICBzcTNzdHJpbmcgPSBzdHJpbmdwcmVmaXggKyByIicnJ1teJ1xcXSooKFxcLnwnKD8hJycpKVteJ1xcXSopKignJycpPyIKQEAgLTQ5LDExICs0OSw4IEBACiAgICAgICAgIGluc2VydGJhY2tncm91bmQ9Y3Vyc29yX2NvbG9yLAogICAgICAgICBzZWxlY3Rmb3JlZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2ZvcmVncm91bmQnXSwKICAgICAgICAgc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10sCi0gICAgICAgICkKLSAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICB0ZXh0LmNvbmZpZygKLSAgICAgICAgICAgIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10pCi0KKyAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwgICMgbmV3IGluIDguNQorICAgICkKIAogY2xhc3MgQ29sb3JEZWxlZ2F0b3IoRGVsZWdhdG9yKToKIApAQCAtMjU5LDEzICsyNTYsMjAgQEAKIAogZGVmIF9jb2xvcl9kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IENvbG9yRGVsZWdhdG9yIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQotICAgIHNvdXJjZSA9ICJpZiBzb21lbmFtZTogeCA9ICdhYmMnICMgY29tbWVudFxucHJpbnRcbiIKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCI3MDB4MjUwKyVkKyVkIiAlICh4ICsgMjAsIHkgKyAxNzUpKQorICAgIHNvdXJjZSA9ICgiIyBGb2xsb3dpbmcgaGFzIHN5bnRheCBlcnJvcnNcbiIKKyAgICAgICAgImlmIFRydWU6IHRoZW4gaW50IDFcbmVsaWYgRmFsc2U6IHByaW50IDBcbmVsc2U6IGZsb2F0KE5vbmUpXG4iCisgICAgICAgICJpZiBpRiArIElmICsgSUY6ICdrZXl3b3JrIG1hdGNoaW5nIG11c3QgcmVzcGVjdCBjYXNlJ1xuIgorICAgICAgICAiIyBBbGwgdmFsaWQgcHJlZml4ZXMgZm9yIHVuaWNvZGUgYW5kIGJ5dGUgc3RyaW5ncyBzaG91bGQgYmUgY29sb3JlZFxuIgorICAgICAgICAiJ3gnLCAnJyd4JycnLCBcInhcIiwgXCJcIlwieFwiXCJcIlxuIgorICAgICAgICAicid4JywgdSd4JywgUid4JywgVSd4JywgZid4JywgRid4JywgdXInaXMgaW52YWxpZCdcbiIKKyAgICAgICAgImZyJ3gnLCBGcid4JywgZlIneCcsIEZSJ3gnLCByZid4JywgckYneCcsIFJmJ3gnLCBSRid4J1xuIgorICAgICAgICAiYid4JyxCJ3gnLCBicid4JyxCcid4JyxiUid4JyxCUid4JywgcmIneCcuckIneCcsUmIneCcsUkIneCdcbiIpCiAgICAgdGV4dCA9IFRleHQodG9wLCBiYWNrZ3JvdW5kPSJ3aGl0ZSIpCiAgICAgdGV4dC5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIikKICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0Iiwgc291cmNlKQpAQCAtMjc3LDUgKzI4MSw5IEBACiAgICAgcC5pbnNlcnRmaWx0ZXIoZCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbG9yaXplcicsCisgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfY29sb3JfZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCmluZGV4IDNiZmNiNjkuLjY0Nzg4ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKQEAgLTEwOSw2ICsxMDksNTcgQEAKIGRlbC13b3JkLWxlZnQ9PEFsdC1LZXktQmFja1NwYWNlPgogZGVsLXdvcmQtcmlnaHQ9PEFsdC1LZXktZD4KIAorW0lETEUgTW9kZXJuIFVuaXhdCitjb3B5ID0gPENvbnRyb2wtU2hpZnQtS2V5LUM+IDxDb250cm9sLUtleS1JbnNlcnQ+CitjdXQgPSA8Q29udHJvbC1LZXkteD4gPFNoaWZ0LUtleS1EZWxldGU+CitwYXN0ZSA9IDxDb250cm9sLUtleS12PiA8U2hpZnQtS2V5LUluc2VydD4KK2JlZ2lubmluZy1vZi1saW5lID0gPEtleS1Ib21lPgorY2VudGVyLWluc2VydCA9IDxDb250cm9sLUtleS1sPgorY2xvc2UtYWxsLXdpbmRvd3MgPSA8Q29udHJvbC1LZXktcT4KK2Nsb3NlLXdpbmRvdyA9IDxDb250cm9sLUtleS13PiA8Q29udHJvbC1TaGlmdC1LZXktVz4KK2RvLW5vdGhpbmcgPSA8Q29udHJvbC1LZXktRjEyPgorZW5kLW9mLWZpbGUgPSA8Q29udHJvbC1LZXktZD4KK2hpc3RvcnktbmV4dCA9IDxBbHQtS2V5LW4+IDxNZXRhLUtleS1uPgoraGlzdG9yeS1wcmV2aW91cyA9IDxBbHQtS2V5LXA+IDxNZXRhLUtleS1wPgoraW50ZXJydXB0LWV4ZWN1dGlvbiA9IDxDb250cm9sLUtleS1jPgordmlldy1yZXN0YXJ0ID0gPEtleS1GNj4KK3Jlc3RhcnQtc2hlbGwgPSA8Q29udHJvbC1LZXktRjY+CitvcGVuLWNsYXNzLWJyb3dzZXIgPSA8Q29udHJvbC1LZXktYj4KK29wZW4tbW9kdWxlID0gPENvbnRyb2wtS2V5LW0+CitvcGVuLW5ldy13aW5kb3cgPSA8Q29udHJvbC1LZXktbj4KK29wZW4td2luZG93LWZyb20tZmlsZSA9IDxDb250cm9sLUtleS1vPgorcGxhaW4tbmV3bGluZS1hbmQtaW5kZW50ID0gPENvbnRyb2wtS2V5LWo+CitwcmludC13aW5kb3cgPSA8Q29udHJvbC1LZXktcD4KK3B5dGhvbi1jb250ZXh0LWhlbHAgPSA8U2hpZnQtS2V5LUYxPgorcHl0aG9uLWRvY3MgPSA8S2V5LUYxPgorcmVkbyA9IDxDb250cm9sLVNoaWZ0LUtleS1aPgorcmVtb3ZlLXNlbGVjdGlvbiA9IDxLZXktRXNjYXBlPgorc2F2ZS1jb3B5LW9mLXdpbmRvdy1hcy1maWxlID0gPEFsdC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93LWFzLWZpbGUgPSA8Q29udHJvbC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93ID0gPENvbnRyb2wtS2V5LXM+CitzZWxlY3QtYWxsID0gPENvbnRyb2wtS2V5LWE+Cit0b2dnbGUtYXV0by1jb2xvcmluZyA9IDxDb250cm9sLUtleS1zbGFzaD4KK3VuZG8gPSA8Q29udHJvbC1LZXktej4KK2ZpbmQgPSA8Q29udHJvbC1LZXktZj4KK2ZpbmQtYWdhaW4gPSA8S2V5LUYzPgorZmluZC1pbi1maWxlcyA9IDxDb250cm9sLVNoaWZ0LUtleS1mPgorZmluZC1zZWxlY3Rpb24gPSA8Q29udHJvbC1LZXktaD4KK3JlcGxhY2UgPSA8Q29udHJvbC1LZXktcj4KK2dvdG8tbGluZSA9IDxDb250cm9sLUtleS1nPgorc21hcnQtYmFja3NwYWNlID0gPEtleS1CYWNrU3BhY2U+CituZXdsaW5lLWFuZC1pbmRlbnQgPSA8S2V5LVJldHVybj4gPEtleS1LUF9FbnRlcj4KK3NtYXJ0LWluZGVudCA9IDxLZXktVGFiPgoraW5kZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1icmFja2V0cmlnaHQ+CitkZWRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRsZWZ0PgorY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktZD4KK3VuY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1TaGlmdC1LZXktRD4KK3RhYmlmeS1yZWdpb24gPSA8QWx0LUtleS01PgordW50YWJpZnktcmVnaW9uID0gPEFsdC1LZXktNj4KK3RvZ2dsZS10YWJzID0gPENvbnRyb2wtS2V5LVQ+CitjaGFuZ2UtaW5kZW50d2lkdGggPSA8QWx0LUtleS11PgorZGVsLXdvcmQtbGVmdCA9IDxDb250cm9sLUtleS1CYWNrU3BhY2U+CitkZWwtd29yZC1yaWdodCA9IDxDb250cm9sLUtleS1EZWxldGU+CisKIFtJRExFIENsYXNzaWMgTWFjXQogY29weT08Q29tbWFuZC1LZXktYz4KIGN1dD08Q29tbWFuZC1LZXkteD4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgppbmRleCA4ZWJiYzFiLi4xNmY0YjA5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCkBAIC00LDQ0ICs0LDUwIEBACiAjIFdoZW4gSURMRSBzdGFydHMsIGl0IHdpbGwgbG9vayBpbgogIyB0aGUgZm9sbG93aW5nIHR3byBzZXRzIG9mIGZpbGVzLCBpbiBvcmRlcjoKICMKLSMgICAgIGRlZmF1bHQgY29uZmlndXJhdGlvbgotIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICBjb25maWctbWFpbi5kZWYgICAgICAgICB0aGUgZGVmYXVsdCBnZW5lcmFsIGNvbmZpZyBmaWxlCi0jICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgICB0aGUgZGVmYXVsdCBleHRlbnNpb24gY29uZmlnIGZpbGUKLSMgICAgIGNvbmZpZy1oaWdobGlnaHQuZGVmICAgIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZyBjb25maWcgZmlsZQotIyAgICAgY29uZmlnLWtleXMuZGVmICAgICAgICAgdGhlIGRlZmF1bHQga2V5YmluZGluZyBjb25maWcgZmlsZQorIyAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzIGluIGlkbGVsaWIKKyMgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICBjb25maWctbWFpbi5kZWYgICAgICAgICBkZWZhdWx0IGdlbmVyYWwgY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiAgIGRlZmF1bHQgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlCisjICAgICBjb25maWctaGlnaGxpZ2h0LmRlZiAgICBkZWZhdWx0IGhpZ2hsaWdodGluZyBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWtleXMuZGVmICAgICAgICAgZGVmYXVsdCBrZXliaW5kaW5nIGNvbmZpZyBmaWxlCiAjCi0jICAgICB1c2VyIGNvbmZpZ3VyYXRpb24KLSMgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgIH4vLmlkbGVyYy9jb25maWctbWFpbi5jZmcgICAgICAgICAgICB0aGUgdXNlciBnZW5lcmFsIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnICAgICAgdGhlIHVzZXIgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWhpZ2hsaWdodC5jZmcgICAgICAgdGhlIHVzZXIgaGlnaGxpZ2h0aW5nIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWtleXMuY2ZnICAgICAgICAgICAgdGhlIHVzZXIga2V5YmluZGluZyBjb25maWcgZmlsZQorIyAgICAgdXNlciBjb25maWd1cmF0aW9uIGZpbGVzIGluIH4vLmlkbGVyYworIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgY29uZmlnLW1haW4uY2ZnICAgICAgICAgdXNlciBnZW5lcmFsIGNvbmZpZyBmaWxlCisjICAgICBjb25maWctZXh0ZW5zaW9ucy5jZmcgICB1c2VyIGV4dGVuc2lvbiBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWhpZ2hsaWdodC5jZmcgICAgdXNlciBoaWdobGlnaHRpbmcgY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1rZXlzLmNmZyAgICAgICAgIHVzZXIga2V5YmluZGluZyBjb25maWcgZmlsZQogIwotIyBPbiBXaW5kb3dzMjAwMCBhbmQgV2luZG93cyBYUCB0aGUgLmlkbGVyYyBkaXJlY3RvcnkgaXMgYXQKLSMgICAgIERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlwuaWRsZXJjCi0jCi0jIE9uIFdpbmRvd3M5OCBpdCBpcyBhdCBjOlwuaWRsZXJjCisjIE9uIFdpbmRvd3MsIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBob21lIGRpcmVjdG9yeSAoJ34nIGFib3ZlKQorIyBkZXBlbmRzIG9uIHRoZSB2ZXJzaW9uLiAgRm9yIFdpbmRvd3MgMTAsIGl0IGlzIEM6XFVzZXJzXDx1c2VybmFtZT4uCiAjCiAjIEFueSBvcHRpb25zIHRoZSB1c2VyIHNhdmVzIHRocm91Z2ggdGhlIGNvbmZpZyBkaWFsb2cgd2lsbCBiZSBzYXZlZCB0bwotIyB0aGUgcmVsZXZhbnQgdXNlciBjb25maWcgZmlsZS4gUmV2ZXJ0aW5nIGFueSBnZW5lcmFsIHNldHRpbmcgdG8gdGhlCi0jIGRlZmF1bHQgY2F1c2VzIHRoYXQgZW50cnkgdG8gYmUgd2lwZWQgZnJvbSB0aGUgdXNlciBmaWxlIGFuZCByZS1yZWFkCi0jIGZyb20gdGhlIGRlZmF1bHQgZmlsZS4gVXNlciBoaWdobGlnaHRpbmcgdGhlbWVzIG9yIGtleWJpbmRpbmcgc2V0cyBhcmUKLSMgcmV0YWluZWQgdW5sZXNzIHNwZWNpZmljYWxseSBkZWxldGVkIHdpdGhpbiB0aGUgY29uZmlnIGRpYWxvZy4gQ2hvb3NpbmcKLSMgb25lIG9mIHRoZSBkZWZhdWx0IHRoZW1lcyBvciBrZXlzZXRzIGp1c3QgYXBwbGllcyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MKLSMgZnJvbSB0aGUgZGVmYXVsdCBmaWxlLgorIyB0aGUgcmVsZXZhbnQgdXNlciBjb25maWcgZmlsZS4gUmV2ZXJ0aW5nIGFueSBnZW5lcmFsIG9yIGV4dGVuc2lvbgorIyBzZXR0aW5nIHRvIHRoZSBkZWZhdWx0IGNhdXNlcyB0aGF0IGVudHJ5IHRvIGJlIHdpcGVkIGZyb20gdGhlIHVzZXIKKyMgZmlsZSBhbmQgcmUtcmVhZCBmcm9tIHRoZSBkZWZhdWx0IGZpbGUuICBUaGlzIHJ1bGUgYXBwbGllcyB0byBlYWNoCisjIGl0ZW0sIGV4Y2VwdCB0aGF0IHRoZSB0aHJlZSBlZGl0b3IgZm9udCBpdGVtcyBhcmUgc2F2ZWQgYXMgYSBncm91cC4KICMKLSMgQWRkaXRpb25hbCBoZWxwIHNvdXJjZXMgYXJlIGxpc3RlZCBpbiB0aGUgW0hlbHBGaWxlc10gc2VjdGlvbiBhbmQgbXVzdCBiZQotIyB2aWV3YWJsZSBieSBhIHdlYiBicm93c2VyIChvciB0aGUgV2luZG93cyBIZWxwIHZpZXdlciBpbiB0aGUgY2FzZSBvZiAuY2htCi0jIGZpbGVzKS4gVGhlc2Ugc291cmNlcyB3aWxsIGJlIGxpc3RlZCBvbiB0aGUgSGVscCBtZW51LiAgVGhlIHBhdHRlcm4gaXMKKyMgVXNlciBoaWdobGlnaHRpbmcgdGhlbWVzIGFuZCBrZXliaW5kaW5nIHNldHMgbXVzdCBoYXZlIChzZWN0aW9uKSBuYW1lcworIyBkaXN0aW5jdCBmcm9tIHRoZSBkZWZhdWx0IG5hbWVzLiAgQWxsIGl0ZW1zIGFyZSBhZGRlZCBhbmQgc2F2ZWQgYXMgYQorIyBncm91cC4gVGhleSBhcmUgcmV0YWluZWQgdW5sZXNzIHNwZWNpZmljYWxseSBkZWxldGVkIHdpdGhpbiB0aGUgY29uZmlnCisjIGRpYWxvZy4gQ2hvb3Npbmcgb25lIG9mIHRoZSBkZWZhdWx0IHRoZW1lcyBvciBrZXlzZXRzIGp1c3QgYXBwbGllcyB0aGUKKyMgcmVsZXZhbnQgc2V0dGluZ3MgZnJvbSB0aGUgZGVmYXVsdCBmaWxlLgorIworIyBBZGRpdGlvbmFsIGhlbHAgc291cmNlcyBhcmUgbGlzdGVkIGluIHRoZSBbSGVscEZpbGVzXSBzZWN0aW9uIGJlbG93CisjIGFuZCBzaG91bGQgYmUgdmlld2FibGUgYnkgYSB3ZWIgYnJvd3NlciAob3IgdGhlIFdpbmRvd3MgSGVscCB2aWV3ZXIgaW4KKyMgdGhlIGNhc2Ugb2YgLmNobSBmaWxlcykuIFRoZXNlIHNvdXJjZXMgd2lsbCBiZSBsaXN0ZWQgb24gdGhlIEhlbHAKKyMgbWVudS4gIFRoZSBwYXR0ZXJuLCBhbmQgdHdvIGV4YW1wbGVzLCBhcmUKKyMKICMgPHNlcXVlbmNlX251bWJlciA9IG1lbnUgaXRlbTsvcGF0aC90by9oZWxwL3NvdXJjZT4KLSMgWW91IGNhbid0IHVzZSBhIHNlbWktY29sb24gaW4gYSBtZW51IGl0ZW0gb3IgcGF0aC4gIFRoZSBwYXRoIHdpbGwgYmUgcGxhdGZvcm0KLSMgc3BlY2lmaWMgYmVjYXVzZSBvZiBwYXRoIHNlcGFyYXRvcnMsIGRyaXZlIHNwZWNzIGV0Yy4KKyMgMSA9IElETEU7QzovUHJvZ3JhbXMvUHl0aG9uMzYvTGliL2lkbGVsaWIvaGVscC5odG1sCisjIDIgPSBQaWxsb3c7aHR0cHM6Ly9waWxsb3cucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LwogIwotIyBJdCBpcyBiZXN0IHRvIHVzZSB0aGUgQ29uZmlndXJhdGlvbiBHVUkgdG8gc2V0IHVwIGFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIQotIyBFeGFtcGxlOgotIzEgPSBNeSBFeHRyYSBIZWxwIFNvdXJjZTsvdXNyL3NoYXJlL2RvYy9mb28vaW5kZXguaHRtbAotIzIgPSBBbm90aGVyIEhlbHAgU291cmNlOy9wYXRoL3RvL2Fub3RoZXIucGRmCisjIFlvdSBjYW4ndCB1c2UgYSBzZW1pLWNvbG9uIGluIGEgbWVudSBpdGVtIG9yIHBhdGguICBUaGUgcGF0aCB3aWxsIGJlCisjIHBsYXRmb3JtIHNwZWNpZmljIGJlY2F1c2Ugb2YgcGF0aCBzZXBhcmF0b3JzLCBkcml2ZSBzcGVjcyBldGMuCisjCisjIFRoZSBkZWZhdWx0IGZpbGVzIHNob3VsZCBub3QgYmUgZWRpdGVkIGV4Y2VwdCB0byBhZGQgbmV3IHNlY3Rpb25zIHRvCisjIGNvbmZpZy1leHRlbnNpb25zLmRlZiBmb3IgYWRkZWQgZXh0ZW5zaW9ucyAuICBUaGUgdXNlciBmaWxlcyBzaG91bGQgYmUKKyMgbW9kaWZpZWQgdGhyb3VnaCB0aGUgU2V0dGluZ3MgZGlhbG9nLgogCiBbR2VuZXJhbF0KIGVkaXRvci1vbi1zdGFydHVwPSAwCkBAIC01NCw2ICs2MCw4IEBACiB3aWR0aD0gODAKIGhlaWdodD0gNDAKIGZvbnQ9IFRrRml4ZWRGb250CisjIEZvciBUa0ZpeGVkRm9udCwgdGhlIGFjdHVhbCBzaXplIGFuZCBib2xkbmVzcyBhcmUgb2J0YWluZWQgZnJvbSB0aworIyBhbmQgb3ZlcnJpZGUgMTAgYW5kIDAuICBTZWUgaWRsZWxpYi5jb25maWcuSWRsZUNvbmYuR2V0Rm9udAogZm9udC1zaXplPSAxMAogZm9udC1ib2xkPSAwCiBlbmNvZGluZz0gbm9uZQpAQCAtNzAsNyArNzgsOSBAQAogCiBbS2V5c10KIGRlZmF1bHQ9IDEKLW5hbWU9IElETEUgQ2xhc3NpYyBXaW5kb3dzCituYW1lPQorbmFtZTI9CisjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3Iga2V5cyBhZGRlZCBhZnRlciAyMDE2IEp1bHkgMQogCiBbSGlzdG9yeV0KIGN5Y2xpYz0xCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZy5weQppbmRleCA4OTU0NDg4Li4zNThiZWU0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy5weQpAQCAtMSwxMyArMSwyMCBAQAotIiIiUHJvdmlkZXMgYWNjZXNzIHRvIHN0b3JlZCBJRExFIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisiIiJpZGxlbGliLmNvbmZpZyAtLSBNYW5hZ2UgSURMRSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgogCi1SZWZlciB0byB0aGUgY29tbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiBjb25maWctbWFpbi5kZWYgZm9yIGEgZGVzY3JpcHRpb24gb2YKLXRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIGRlc2lnbiBpbXBsZW1lbnRlZCB0byB1cGRhdGUgdXNlcgotY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gIEluIHBhcnRpY3VsYXIsIHVzZXIgY29uZmlndXJhdGlvbiBjaG9pY2VzIHdoaWNoCi1kdXBsaWNhdGUgdGhlIGRlZmF1bHRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBmaWxlcywKLWFuZCBpZiBhIGZpbGUgYmVjb21lcyBlbXB0eSwgaXQgd2lsbCBiZSBkZWxldGVkLgorVGhlIGNvbW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgY29uZmlnLW1haW4uZGVmIGRlc2NyaWJlIHRoZQorY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIGRlc2lnbiBpbXBsZW1lbnRlZCB0byB1cGRhdGUgdXNlcgorY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gIEluIHBhcnRpY3VsYXIsIHVzZXIgY29uZmlndXJhdGlvbiBjaG9pY2VzCit3aGljaCBkdXBsaWNhdGUgdGhlIGRlZmF1bHRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB1c2VyJ3MKK2NvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBpZiBhIHVzZXIgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlCitkZWxldGVkLgogCi1UaGUgY29udGVudHMgb2YgdGhlIHVzZXIgZmlsZXMgbWF5IGJlIGFsdGVyZWQgdXNpbmcgdGhlIE9wdGlvbnMvQ29uZmlndXJlIElETEUKLW1lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnRGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCitUaGUgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBtYXBzIG9wdGlvbnMgdG8gdmFsdWVzLiAgQ29tY2VwdHVhbGx5LCB0aGUKK2RhdGFiYXNlIGtleXMgYXJlIHR1cGxlcyAoY29uZmlnLXR5cGUsIHNlY3Rpb24sIGl0ZW0pLiAgQXMgaW1wbGVtZW50ZWQsCit0aGVyZSBhcmUgIHNlcGFyYXRlIGRpY3RzIGZvciBkZWZhdWx0IGFuZCB1c2VyIHZhbHVlcy4gIEVhY2ggaGFzCitjb25maWctdHlwZSBrZXlzICdtYWluJywgJ2V4dGVuc2lvbnMnLCAnaGlnaGxpZ2h0JywgYW5kICdrZXlzJy4gIFRoZQordmFsdWUgZm9yIGVhY2gga2V5IGlzIGEgQ29uZmlnUGFyc2VyIGluc3RhbmNlIHRoYXQgbWFwcyBzZWN0aW9uIGFuZCBpdGVtCit0byB2YWx1ZXMuICBGb3IgJ21haW4nIGFuZCAnZXh0ZW5zdG9ucycsIHVzZXIgdmFsdWVzIG92ZXJyaWRlCitkZWZhdWx0IHZhbHVlcy4gIEZvciAnaGlnaGxpZ2h0JyBhbmQgJ2tleXMnLCB1c2VyIHNlY3Rpb25zIGF1Z21lbnQgdGhlCitkZWZhdWx0IHNlY3Rpb25zIChhbmQgbXVzdCwgdGhlcmVmb3JlLCBoYXZlIGRpc3RpbmN0IG5hbWVzKS4KIAogVGhyb3VnaG91dCB0aGlzIG1vZHVsZSB0aGVyZSBpcyBhbiBlbXBoYXNpcyBvbiByZXR1cm5pbmcgdXNlYWJsZSBkZWZhdWx0cwogd2hlbiBhIHByb2JsZW0gb2NjdXJzIGluIHJldHVybmluZyBhIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIHZhbHVlIGJhY2sgdG8KQEAgLTE4LDExICsyNSwxMCBAQAogIiIiCiAjIFRPRE9zIGFkZGVkIE9jdCAyMDE0LCB0anIKIAorZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCiBmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udCwgbmFtZXRvZm9udAogCiBjbGFzcyBJbnZhbGlkQ29uZmlnVHlwZShFeGNlcHRpb24pOiBwYXNzCkBAIC0yMzAsMTUgKzIzNiwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXR5cGUsIHJhdz1yYXcpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCisgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGludmFsaWQgJXIgdmFsdWUgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAodHlwZSwgb3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdykpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLmhhc19vcHRpb24oc2VjdGlvbixvcHRpb24pOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRDZmdbY29uZmlnVHlwZV0uR2V0KApAQCAtMjQ3LDE1ICsyNTAsMTIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgI3JldHVybmluZyBkZWZhdWx0LCBwcmludCB3YXJuaW5nCiAgICAgICAgIGlmIHdhcm5fb25fZGVmYXVsdDoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBvcHRpb24gJXJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIHNlY3Rpb24gJXIuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24sIHNlY3Rpb24sIGRlZmF1bHQpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAogICAgIGRlZiBTZXRPcHRpb24oc2VsZiwgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSk6CkBAIC0zNTgsNTIgKzM1OCw3MyBAQAogICAgICAgICBmb3IgZWxlbWVudCBpbiB0aGVtZToKICAgICAgICAgICAgIGlmIG5vdCBjZmdQYXJzZXIuaGFzX29wdGlvbih0aGVtZU5hbWUsIGVsZW1lbnQpOgogICAgICAgICAgICAgICAgICMgUHJpbnQgd2FybmluZyB0aGF0IHdpbGwgcmV0dXJuIGEgZGVmYXVsdCBjb2xvcgotICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JworICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5JZGxlQ29uZi5HZXRUaGVtZURpY3QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcgdGhlbWUgZWxlbWVudCAlcicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIHRoZW1lICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCBjb2xvcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbGVtZW50LCB0aGVtZU5hbWUsIHRoZW1lW2VsZW1lbnRdKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdoaWdobGlnaHQnLCB0aGVtZU5hbWUsIGVsZW1lbnQpCiAgICAgICAgICAgICB0aGVtZVtlbGVtZW50XSA9IGNmZ1BhcnNlci5HZXQoCiAgICAgICAgICAgICAgICAgICAgIHRoZW1lTmFtZSwgZWxlbWVudCwgZGVmYXVsdD10aGVtZVtlbGVtZW50XSkKICAgICAgICAgcmV0dXJuIHRoZW1lCiAKICAgICBkZWYgQ3VycmVudFRoZW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4KKyAgICAgICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0IGNvbG9yIHRoZW1lLiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ1RoZW1lJykKIAotICAgICAgICBpZGxlbGliLmNvbmZpZy1tYWluLmRlZiBpbmNsdWRlcyB0aGlzIHNlY3Rpb24KKyAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBrZXkgc2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cygnS2V5cycpCisKKyAgICBkZWYgY3VycmVudF9jb2xvcnNfYW5kX2tleXMoc2VsZiwgc2VjdGlvbik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBuYW1lIGZvciBUaGVtZSBvciBLZXlzIHNlY3Rpb24uCisKKyAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgKCdkZWZhdWx0JykgaW5jbHVkZXMgdGhlc2Ugc2VjdGlvbnMKKwogICAgICAgICBbVGhlbWVdCiAgICAgICAgIGRlZmF1bHQ9IDEKICAgICAgICAgbmFtZT0gSURMRSBDbGFzc2ljCiAgICAgICAgIG5hbWUyPQotICAgICAgICAjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3IgdGhlbWVzIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEKIAotICAgICAgICBJdGVtIG5hbWUyIGlzIG5lZWRlZCBiZWNhdXNlIHNldHRpbmcgbmFtZSB0byBhIG5ldyBidWlsdGluCi0gICAgICAgIGNhdXNlcyBvbGRlciBJRExFcyB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCisgICAgICAgIFtLZXlzXQorICAgICAgICBkZWZhdWx0PSAxCisgICAgICAgIG5hbWU9CisgICAgICAgIG5hbWUyPQorCisgICAgICAgIEl0ZW0gJ25hbWUyJywgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKCdkZWZhdWx0JykgdGhlbWVzIGFuZCBrZXlzCisgICAgICAgIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEgYW5kIDIwMTYgSnVseSAxLiAgVGhpcyBrbHVkZ2UgaXMgbmVlZGVkCisgICAgICAgIGJlY2F1c2Ugc2V0dGluZyAnbmFtZScgdG8gYSBidWlsdGluIG5vdCBkZWZpbmVkIGluIG9sZGVyIElETEVzCisgICAgICAgIHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgb3IgcXVpdC4KICAgICAgICAgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjUzMTMuCi0gICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsIG5hbWUyIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBuYW1lLAotICAgICAgICB3aGlsZSBvbGRlciBJRExFcyB3aWxsIGp1c3QgdXNlIG5hbWUuCisgICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsICduYW1lMicgdGFrZXMgcHJlY2VkZW5jZSBvdmVyICduYW1lJywKKyAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLiAgV2hlbiBkZWZhdWx0ID0gRmFsc2UsCisgICAgICAgICduYW1lMicgbWF5IHN0aWxsIGJlIHNldCwgYnV0IGl0IGlzIGlnbm9yZWQuCiAgICAgICAgICIiIgotICAgICAgICBkZWZhdWx0ID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnZGVmYXVsdCcsCisgICAgICAgIGNmZ25hbWUgPSAnaGlnaGxpZ2h0JyBpZiBzZWN0aW9uID09ICdUaGVtZScgZWxzZSAna2V5cycKKyAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ2RlZmF1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcsIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgbmFtZSA9ICcnCiAgICAgICAgIGlmIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGVtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUyJywgZGVmYXVsdD0nJykKLSAgICAgICAgaWYgZGVmYXVsdCBhbmQgbm90IHRoZW1lIG9yIG5vdCBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJywgZGVmYXVsdD0nJykKLSAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKLSAgICAgICAgaWYgc291cmNlWydoaWdobGlnaHQnXS5oYXNfc2VjdGlvbih0aGVtZSk6Ci0gICAgICAgICAgICByZXR1cm4gdGhlbWUKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lMicsIGRlZmF1bHQ9JycpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ25hbWUnLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKKyAgICAgICAgICAgIGlmIHNvdXJjZVtjZmduYW1lXS5oYXNfc2VjdGlvbihuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICByZXR1cm4gIklETEUgQ2xhc3NpYyIgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2Ugc2VsZi5kZWZhdWx0X2tleXMoKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBkZWZhdWx0X2tleXMoKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIFdpbmRvd3MnCisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdJRExFIENsYXNzaWMgT1NYJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiCisgICAgICAgICAgICByZXR1cm4gJ0lETEUgTW9kZXJuIFVuaXgnCiAKLSAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6Ci0gICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iCi0gICAgICAgIHJldHVybiBzZWxmLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnLCBkZWZhdWx0PScnKQotCi0gICAgZGVmIEdldEV4dGVuc2lvbnMoc2VsZiwgYWN0aXZlX29ubHk9VHJ1ZSwgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgorICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm4gZXh0ZW5zaW9ucyBpbiBkZWZhdWx0IGFuZCB1c2VyIGNvbmZpZy1leHRlbnNpb25zIGZpbGVzLgogCiAgICAgICAgIElmIGFjdGl2ZV9vbmx5IFRydWUsIG9ubHkgcmV0dXJuIGFjdGl2ZSAoZW5hYmxlZCkgZXh0ZW5zaW9ucwpAQCAtNDIzLDcgKzQ0NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5HZXRPcHRpb24oJ2V4dGVuc2lvbnMnLCBleHRuLCAnZW5hYmxlJywgZGVmYXVsdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKToKICAgICAgICAgICAgICAgICAgICAgI3RoZSBleHRlbnNpb24gaXMgZW5hYmxlZAotICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seSBvciBzaGVsbF9vbmx5OiAgIyBUT0RPIGlmIGJvdGgsIGNvbnRyYWRpY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBib3RoIFRydWUgY29udHJhZGljdAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gImVuYWJsZV9lZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNTI4LDcgKzU0OSw4IEBACiAgICAgICAgIGV2ZW50U3RyIC0gdmlydHVhbCBldmVudCwgaW5jbHVkaW5nIGJyYWNrZXRzLCBhcyBpbiAnPDxldmVudD4+Jy4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50U3RyWzI6LTJdICN0cmltIG9mZiB0aGUgYW5nbGUgYnJhY2tldHMKLSAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0T3B0aW9uKCdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnROYW1lLCBkZWZhdWx0PScnKS5zcGxpdCgpCisgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5fb25fZGVmYXVsdD1GYWxzZSkuc3BsaXQoKQogICAgICAgICByZXR1cm4gYmluZGluZwogCiAgICAgZGVmIEdldEN1cnJlbnRLZXlTZXQoc2VsZik6CkBAIC02MzksMjAgKzY2MSwyOCBAQAogICAgICAgICAgICAgJzw8ZGVsLXdvcmQtcmlnaHQ+Pic6IFsnPENvbnRyb2wtS2V5LURlbGV0ZT4nXQogICAgICAgICAgICAgfQogICAgICAgICBpZiBrZXlTZXROYW1lOgotICAgICAgICAgICAgZm9yIGV2ZW50IGluIGtleUJpbmRpbmdzOgotICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCi0gICAgICAgICAgICAgICAgaWYgYmluZGluZzoKLSAgICAgICAgICAgICAgICAgICAga2V5QmluZGluZ3NbZXZlbnRdID0gYmluZGluZwotICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZwotICAgICAgICAgICAgICAgICAgICB3YXJuaW5nPSgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldENvcmVLZXlzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLVxuIHByb2JsZW0gcmV0cmlldmluZyBrZXkgYmluZGluZyBmb3IgZXZlbnQgJXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIGZyb20ga2V5IHNldCAlci5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCwga2V5U2V0TmFtZSwga2V5QmluZGluZ3NbZXZlbnRdKSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIG5vdCAoc2VsZi51c2VyQ2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0Q2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkpOgorICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoCisgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICcga2V5IHNldCAlciBpcyBub3QgZGVmaW5lZCwgdXNpbmcgZGVmYXVsdCBiaW5kaW5ncy4nICUKKyAgICAgICAgICAgICAgICAgICAgKGtleVNldE5hbWUsKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKKyAgICAgICAgICAgICAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0S2V5QmluZGluZyhrZXlTZXROYW1lLCBldmVudCkKKyAgICAgICAgICAgICAgICAgICAgaWYgYmluZGluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgZWxzZTogI3dlIGFyZSBnb2luZyB0byByZXR1cm4gYSBkZWZhdWx0LCBwcmludCB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIGtleSBzZXQgJXIuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnQpCiAgICAgICAgIHJldHVybiBrZXlCaW5kaW5ncwogCiAgICAgZGVmIEdldEV4dHJhSGVscFNvdXJjZUxpc3Qoc2VsZiwgY29uZmlnU2V0KToKQEAgLTcxMywxNiArNzQzLDEzIEBACiAgICAgICAgIGJvbGQgPSBzZWxmLkdldE9wdGlvbihjb25maWdUeXBlLCBzZWN0aW9uLCAnZm9udC1ib2xkJywgZGVmYXVsdD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcpCiAgICAgICAgIGlmIChmYW1pbHkgPT0gJ1RrRml4ZWRGb250Jyk6Ci0gICAgICAgICAgICBpZiBUa1ZlcnNpb24gPCA4LjU6Ci0gICAgICAgICAgICAgICAgZmFtaWx5ID0gJ0NvdXJpZXInCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKLSAgICAgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSBhY3R1YWxGb250WydmYW1pbHknXQotICAgICAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KLSAgICAgICAgICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSAxMCAgIyBpZiBmb250IGluIHBpeGVscywgaWdub3JlIGFjdHVhbCBzaXplCi0gICAgICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddPT0nYm9sZCcKKyAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKKyAgICAgICAgICAgIGFjdHVhbEZvbnQgPSBGb250LmFjdHVhbChmKQorICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KKyAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KKyAgICAgICAgICAgIGlmIHNpemUgPD0gMDoKKyAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQorICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddID09ICdib2xkJwogICAgICAgICByZXR1cm4gKGZhbWlseSwgc2l6ZSwgJ2JvbGQnIGlmIGJvbGQgZWxzZSAnbm9ybWFsJykKIAogICAgIGRlZiBMb2FkQ2ZnRmlsZXMoc2VsZik6CkBAIC03MzksNiArNzY2LDE4IEBACiAKIGlkbGVDb25mID0gSWRsZUNvbmYoKQogCisKK193YXJuZWQgPSBzZXQoKQorZGVmIF93YXJuKG1zZywgKmtleSk6CisgICAga2V5ID0gKG1zZywpICsga2V5CisgICAgaWYga2V5IG5vdCBpbiBfd2FybmVkOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIF93YXJuZWQuYWRkKGtleSkKKworCiAjIFRPRE8gUmV2aXNlIHRlc3Qgb3V0cHV0LCB3cml0ZSBleHBhbmRlZCB1bml0dGVzdAogIwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZTgxMTguLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotIkRpYWxvZyB0byBzcGVjaWZ5IG9yIGVkaXQgdGhlIHBhcmFtZXRlcnMgZm9yIGEgdXNlciBjb25maWd1cmVkIGhlbHAgc291cmNlLiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWltcG9ydCB0a2ludGVyLmZpbGVkaWFsb2cgYXMgdGtGaWxlRGlhbG9nCi0KLWNsYXNzIEdldEhlbHBTb3VyY2VEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZW51SXRlbT0nJywgZmlsZVBhdGg9JycsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIkdldCBtZW51IGVudHJ5IGFuZCB1cmwvIGxvY2FsIGZpbGUgbG9jYXRpb24gZm9yIEFkZGl0aW9uYWwgSGVscAotCi0gICAgICAgIFVzZXIgc2VsZWN0cyBhIG5hbWUgZm9yIHRoZSBIZWxwIHJlc291cmNlIGFuZCBwcm92aWRlcyBhIHdlYiB1cmwKLSAgICAgICAgb3IgYSBsb2NhbCBmaWxlIGFzIGl0cyBzb3VyY2UuICBUaGUgdXNlciBjYW4gZW50ZXIgYSB1cmwgb3IgYnJvd3NlCi0gICAgICAgIGZvciB0aGUgZmlsZS4KLQotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi5tZW51LnNldChtZW51SXRlbSkKLSAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlUGF0aCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKLSAgICAgICAgI25lZWRzIHRvIGJlIGRvbmUgaGVyZSBzbyB0aGF0IHRoZSB3aW5mb19yZXF3aWR0aCBpcyB2YWxpZAotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudC4gYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkpKQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+Jywgc2VsZi5vaykKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCi0KLSAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVudSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLnBhdGggPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mb250U2l6ZSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1HUk9PVkUpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGxhYmVsTWVudSA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdNZW51IEl0ZW06JykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubWVudSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0zMCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxQYXRoID0gTGFiZWwoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J0hlbHAgRmlsZSBQYXRoOiBFbnRlciBVUkwgb3IgYnJvd3NlIGZvciBmaWxlJykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGggPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD00MCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxNZW51LnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgbGFiZWxQYXRoLnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5UGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgYnJvd3NlQnV0dG9uID0gQnV0dG9uKHNlbGYuZnJhbWVNYWluLCB0ZXh0PSdCcm93c2UnLCB3aWR0aD04LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLmJyb3dzZV9maWxlKQotICAgICAgICBicm93c2VCdXR0b24ucGFjayhwYWR5PTMpCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPSycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgZGVmYXVsdD1BQ1RJVkUsICBjb21tYW5kPXNlbGYub2spCi0gICAgICAgIHNlbGYuYnV0dG9uT2suZ3JpZChyb3c9MCwgY29sdW1uPTAsIHBhZHg9NSxwYWR5PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLmNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwuZ3JpZChyb3c9MCwgY29sdW1uPTEsIHBhZHg9NSwgcGFkeT01KQotCi0gICAgZGVmIGJyb3dzZV9maWxlKHNlbGYpOgotICAgICAgICBmaWxldHlwZXMgPSBbCi0gICAgICAgICAgICAoIkhUTUwgRmlsZXMiLCAiKi5odG0gKi5odG1sIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiUERGIEZpbGVzIiwgIioucGRmIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiV2luZG93cyBIZWxwIEZpbGVzIiwgIiouY2htIiksCi0gICAgICAgICAgICAoIlRleHQgRmlsZXMiLCAiKi50eHQiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJBbGwgRmlsZXMiLCAiKiIpXQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYXNlID0gTm9uZQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKLSAgICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgJ0RvYycpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3BlbmRpYWxvZyA9IHRrRmlsZURpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKQotICAgICAgICBmaWxlID0gb3BlbmRpYWxvZy5zaG93KGluaXRpYWxkaXI9ZGlyLCBpbml0aWFsZmlsZT1iYXNlKQotICAgICAgICBpZiBmaWxlOgotICAgICAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlKQotCi0gICAgZGVmIG1lbnVfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIGEgc2Vuc2libGUgbWVudSBpdGVtIG5hbWUiCi0gICAgICAgIG1lbnVfb2sgPSBUcnVlCi0gICAgICAgIG1lbnUgPSBzZWxmLm1lbnUuZ2V0KCkKLSAgICAgICAgbWVudS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBtZW51OgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbWVudSBpdGVtIHNwZWNpZmllZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIGxlbihtZW51KSA+IDMwOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTWVudSBpdGVtIHRvbyBsb25nOicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5MaW1pdCAzMCBjaGFyYWN0ZXJzLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gbWVudV9vawotCi0gICAgZGVmIHBhdGhfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIG1lbnUgZmlsZSBwYXRoIgotICAgICAgICBwYXRoX29rID0gVHJ1ZQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIHBhdGguc3RyaXAoKQotICAgICAgICBpZiBub3QgcGF0aDogI25vIHBhdGggc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIGVsaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuZW50cnlQYXRoLmZvY3VzX3NldCgpCi0gICAgICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIHJldHVybiBwYXRoX29rCi0KLSAgICBkZWYgb2soc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYubWVudV9vaygpIGFuZCBzZWxmLnBhdGhfb2soKToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gKHNlbGYubWVudS5nZXQoKS5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmdldCgpLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHNlbGYucmVzdWx0WzFdCi0gICAgICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3JywgJ2ZpbGU6JywgJ2h0dHA6JywgJ2h0dHBzOicpKToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgTWFjIFNhZmFyaSBpbnNpc3RzIG9uIHVzaW5nIHRoZSBVUkkgZm9ybSBmb3IgbG9jYWwgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBsaXN0KHNlbGYucmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdFsxXSA9ICJmaWxlOi8vIiArIHBhdGgKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19oZWxwJywKLSAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKLQotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihHZXRIZWxwU291cmNlRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzNzgzNi4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLSIiIgotRGlhbG9nIHRoYXQgYWxsb3dzIHVzZXIgdG8gc3BlY2lmeSBhIG5ldyBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuCi1Vc2VkIHRvIGdldCBuZXcgaGlnaGxpZ2h0IHRoZW1lIGFuZCBrZXliaW5kaW5nIHNldCBuYW1lcy4KLVRoZSAncmV0dXJuIHZhbHVlJyBmb3IgdGhlIGRpYWxvZywgdXNlZCB0d28gcGxhY2VkIGluIGNvbmZpZ0RpYWxvZy5weSwKLWlzIHRoZSAucmVzdWx0IGF0dHJpYnV0ZSBzZXQgaW4gdGhlIE9rIGFuZCBDYW5jZWwgbWV0aG9kcy4KLSIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotCi1jbGFzcyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXMsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIgotICAgICAgICBtZXNzYWdlIC0gc3RyaW5nLCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheQotICAgICAgICB1c2VkX25hbWVzIC0gc3RyaW5nIGNvbGxlY3Rpb24sIG5hbWVzIGFscmVhZHkgaW4gdXNlIGZvciB2YWxpZGl0eSBjaGVjawotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5DYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKLSAgICAgICAgc2VsZi51c2VkX25hbWVzID0gdXNlZF9uYW1lcwotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5jb25maWcod2lkdGg9c2VsZi5mcmFtZU1haW4ud2luZm9fcmVxd2lkdGgoKSkKLSAgICAgICAgc2VsZi5nZW9tZXRyeSgKLSAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKwotICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKwotICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTAwKQotICAgICAgICAgICAgICAgICkgKSAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm5hbWUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluID0gRnJhbWUoc2VsZiwgYm9yZGVyd2lkdGg9MiwgcmVsaWVmPVNVTktFTikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4ucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mbyA9IE1lc3NhZ2Uoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgIHBhZHg9NSwgcGFkeT01LCB0ZXh0PXNlbGYubWVzc2FnZSkgIyxhc3BlY3Q9MjAwKQotICAgICAgICBlbnRyeU5hbWUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubmFtZSwgd2lkdGg9MzApCi0gICAgICAgIGVudHJ5TmFtZS5mb2N1c19zZXQoKQotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvLnBhY2socGFkeD01LCBwYWR5PTUpICMsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGVudHJ5TmFtZS5wYWNrKHBhZHg9NSwgcGFkeT01KQotCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYsIHBhZHk9MikKLSAgICAgICAgZnJhbWVCdXR0b25zLnBhY2soc2lkZT1CT1RUT00pCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPaycsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLk9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLnBhY2soc2lkZT1MRUZULCBwYWR4PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbC5wYWNrKHNpZGU9UklHSFQsIHBhZHg9NSkKLQotICAgIGRlZiBuYW1lX29rKHNlbGYpOgotICAgICAgICAnJycgQWZ0ZXIgc3RyaXBwaW5nIGVudGVyZWQgbmFtZSwgY2hlY2sgdGhhdCBpdCBpcyBhICBzZW5zaWJsZQotICAgICAgICBDb25maWdQYXJzZXIgZmlsZSBzZWN0aW9uIG5hbWUuIFJldHVybiBpdCBpZiBpdCBpcywgJycgaWYgbm90LgotICAgICAgICAnJycKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZS5nZXQoKS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOiAjbm8gbmFtZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBuYW1lIHNwZWNpZmllZC4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6ICNuYW1lIHRvbyBsb25nCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTmFtZSB0b28gbG9uZy4gSXQgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAnKwotICAgICAgICAgICAgICAgICAgICAnMzAgY2hhcmFjdGVycy4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1RoaXMgbmFtZSBpcyBhbHJlYWR5IGluIHVzZS4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgZGVmIE9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBuYW1lID0gc2VsZi5uYW1lX29rKCkKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbmFtZQotICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotICAgIGRlZiBDYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gJycKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19uYW1lJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CmluZGV4IGU2NDM4YmYuLjI2MDIyOTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpAQCAtMiwzMSArMiwzNSBAQAogRGlhbG9nIGZvciBidWlsZGluZyBUa2ludGVyIGFjY2VsZXJhdG9yIGtleSBiaW5kaW5ncwogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIAogY2xhc3MgR2V0S2V5c0RpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LHRpdGxlLGFjdGlvbixjdXJyZW50S2V5U2VxdWVuY2VzLF9odGVzdD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIGFjdGlvbiwgY3VycmVudEtleVNlcXVlbmNlcywKKyAgICAgICAgICAgICAgICAgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgYWN0aW9uIC0gc3RyaW5nLCB0aGUgbmFtZSBvZiB0aGUgdmlydHVhbCBldmVudCB0aGVzZSBrZXlzIHdpbGwgYmUKICAgICAgICAgICAgICAgICAgbWFwcGVkIHRvCiAgICAgICAgIGN1cnJlbnRLZXlzIC0gbGlzdCwgYSBsaXN0IG9mIGFsbCBrZXkgc2VxdWVuY2UgbGlzdHMgY3VycmVudGx5IG1hcHBlZAogICAgICAgICAgICAgICAgICB0byB2aXJ0dWFsIGV2ZW50cywgZm9yIG92ZXJsYXAgY2hlY2tpbmcKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgZG8gbm90IHdhaXQgd2hlbiBydW5uaW5nIHVuaXR0ZXN0CiAgICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0CiAgICAgICAgICIiIgogICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSx3aWR0aD1GQUxTRSkKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKICAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKICAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQogICAgICAgICBzZWxmLmdyYWJfc2V0KCkKICAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLmFjdGlvbj1hY3Rpb24KLSAgICAgICAgc2VsZi5jdXJyZW50S2V5U2VxdWVuY2VzPWN1cnJlbnRLZXlTZXF1ZW5jZXMKLSAgICAgICAgc2VsZi5yZXN1bHQ9JycKLSAgICAgICAgc2VsZi5rZXlTdHJpbmc9U3RyaW5nVmFyKHNlbGYpCisgICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcyA9IGN1cnJlbnRLZXlTZXF1ZW5jZXMKKyAgICAgICAgc2VsZi5yZXN1bHQgPSAnJworICAgICAgICBzZWxmLmtleVN0cmluZyA9IFN0cmluZ1ZhcihzZWxmKQogICAgICAgICBzZWxmLmtleVN0cmluZy5zZXQoJycpCiAgICAgICAgIHNlbGYuU2V0TW9kaWZpZXJzRm9yUGxhdGZvcm0oKSAjIHNldCBzZWxmLm1vZGlmaWVycywgc2VsZi5tb2RpZmllcl9sYWJlbAogICAgICAgICBzZWxmLm1vZGlmaWVyX3ZhcnMgPSBbXQpAQCAtMzcsNyArNDEsNiBAQAogICAgICAgICBzZWxmLmFkdmFuY2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5DcmVhdGVXaWRnZXRzKCkKICAgICAgICAgc2VsZi5Mb2FkRmluYWxLZXlMaXN0KCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKICAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgc2VsZi5nZW9tZXRyeSgKICAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKQEAgLTQ3LDggKzUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkKICAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKKyAgICAgICAgICAgIHNlbGYud2FpdF93aW5kb3coKQogCiAgICAgZGVmIENyZWF0ZVdpZGdldHMoc2VsZik6CiAgICAgICAgIGZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsYm9yZGVyd2lkdGg9MixyZWxpZWY9U1VOS0VOKQpAQCAtMjYxLDYgKzI2NSw3IEBACiAgICAgICAgICAgICBrZXlzT0sgPSBUcnVlCiAgICAgICAgIHJldHVybiBrZXlzT0sKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihHZXRLZXlzRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CmluZGV4IDVmNWJkMzYuLjgxODQ1ODIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKQEAgLTEwLDE4ICsxMCwxOCBAQAogCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIuY29sb3JjaG9vc2VyIGFzIHRrQ29sb3JDaG9vc2VyCiBpbXBvcnQgdGtpbnRlci5mb250IGFzIHRrRm9udAoraW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIuZHluT3B0aW9uTWVudVdpZGdldCBpbXBvcnQgRHluT3B0aW9uTWVudQotZnJvbSBpZGxlbGliLmtleWJpbmRpbmdEaWFsb2cgaW1wb3J0IEdldEtleXNEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdTZWN0aW9uTmFtZURpYWxvZyBpbXBvcnQgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdCBpbXBvcnQgR2V0SGVscFNvdXJjZURpYWxvZworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWdfa2V5IGltcG9ydCBHZXRLZXlzRGlhbG9nCitmcm9tIGlkbGVsaWIuZHlub3B0aW9uIGltcG9ydCBEeW5PcHRpb25NZW51Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLnF1ZXJ5IGltcG9ydCBTZWN0aW9uTmFtZSwgSGVscFNvdXJjZQogZnJvbSBpZGxlbGliLnRhYmJlZHBhZ2VzIGltcG9ydCBUYWJiZWRQYWdlU2V0Ci1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIudGV4dHZpZXcgaW1wb3J0IHZpZXdfdGV4dAogCiBjbGFzcyBDb25maWdEaWFsb2coVG9wbGV2ZWwpOgogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHNlbGYuY3JlYXRlX2FjdGlvbl9idXR0b25zKCkucGFjayhzaWRlPUJPVFRPTSkKIAogICAgIGRlZiBjcmVhdGVfYWN0aW9uX2J1dHRvbnMoc2VsZik6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIENoYW5naW5nIHRoZSBkZWZhdWx0IHBhZGRpbmcgb24gT1NYIHJlc3VsdHMgaW4gdW5yZWFkYWJsZQogICAgICAgICAgICAgIyB0ZXh0IGluIHRoZSBidXR0b25zCiAgICAgICAgICAgICBwYWRkaW5nQXJncyA9IHt9CkBAIC0zNDEsNiArMzQxLDcgQEAKICAgICAgICAgYnV0dG9uU2F2ZUN1c3RvbUtleXMgPSBCdXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVzWzFdLCB0ZXh0PSdTYXZlIGFzIE5ldyBDdXN0b20gS2V5IFNldCcsCiAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNhdmVBc05ld0tleVNldCkKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMgPSBMYWJlbChmcmFtZXNbMF0sIGJkPTIpCiAKICAgICAgICAgIyN3aWRnZXQgcGFja2luZwogICAgICAgICAjYm9keQpAQCAtMzYxLDYgKzM2Miw3IEBACiAgICAgICAgIHNlbGYucmFkaW9LZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0wLCBzdGlja3k9VytOUykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uZ3JpZChyb3c9MCwgY29sdW1uPTEsIHN0aWNreT1OU0VXKQogICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuZ3JpZChyb3c9MCwgY29sdW1uPTIsIHN0aWNreT1OU0VXLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgc2VsZi5idXR0b25EZWxldGVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGZyYW1lc1swXS5wYWNrKHNpZGU9VE9QLCBmaWxsPUJPVEgsIGV4cGFuZD1UcnVlKQpAQCAtMzkwLDI4ICszOTIsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PScgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgJykKICAgICAgICAgI2ZyYW1lUnVuCiAgICAgICAgIGxhYmVsUnVuQ2hvaWNlVGl0bGUgPSBMYWJlbChmcmFtZVJ1biwgdGV4dD0nQXQgU3RhcnR1cCcpCi0gICAgICAgIHJhZGlvU3RhcnR1cEVkaXQgPSBSYWRpb2J1dHRvbigKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBFZGl0ID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVSdW4sIHZhcmlhYmxlPXNlbGYuc3RhcnR1cEVkaXQsIHZhbHVlPTEsCi0gICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNldEtleXNUeXBlLCB0ZXh0PSJPcGVuIEVkaXQgV2luZG93IikKLSAgICAgICAgcmFkaW9TdGFydHVwU2hlbGwgPSBSYWRpb2J1dHRvbigKKyAgICAgICAgICAgICAgICB0ZXh0PSJPcGVuIEVkaXQgV2luZG93IikKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBTaGVsbCA9IFJhZGlvYnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lUnVuLCB2YXJpYWJsZT1zZWxmLnN0YXJ0dXBFZGl0LCB2YWx1ZT0wLAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TZXRLZXlzVHlwZSwgdGV4dD0nT3BlbiBTaGVsbCBXaW5kb3cnKQorICAgICAgICAgICAgICAgIHRleHQ9J09wZW4gU2hlbGwgV2luZG93JykKICAgICAgICAgI2ZyYW1lU2F2ZQogICAgICAgICBsYWJlbFJ1blNhdmVUaXRsZSA9IExhYmVsKGZyYW1lU2F2ZSwgdGV4dD0nQXQgU3RhcnQgb2YgUnVuIChGNSkgICcpCi0gICAgICAgIHJhZGlvU2F2ZUFzayA9IFJhZGlvYnV0dG9uKAorICAgICAgICBzZWxmLnJhZGlvU2F2ZUFzayA9IFJhZGlvYnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lU2F2ZSwgdmFyaWFibGU9c2VsZi5hdXRvU2F2ZSwgdmFsdWU9MCwKLSAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuU2V0S2V5c1R5cGUsIHRleHQ9IlByb21wdCB0byBTYXZlIikKLSAgICAgICAgcmFkaW9TYXZlQXV0byA9IFJhZGlvYnV0dG9uKAorICAgICAgICAgICAgICAgIHRleHQ9IlByb21wdCB0byBTYXZlIikKKyAgICAgICAgc2VsZi5yYWRpb1NhdmVBdXRvID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVTYXZlLCB2YXJpYWJsZT1zZWxmLmF1dG9TYXZlLCB2YWx1ZT0xLAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TZXRLZXlzVHlwZSwgdGV4dD0nTm8gUHJvbXB0JykKKyAgICAgICAgICAgICAgICB0ZXh0PSdObyBQcm9tcHQnKQogICAgICAgICAjZnJhbWVXaW5TaXplCiAgICAgICAgIGxhYmVsV2luU2l6ZVRpdGxlID0gTGFiZWwoCiAgICAgICAgICAgICAgICAgZnJhbWVXaW5TaXplLCB0ZXh0PSdJbml0aWFsIFdpbmRvdyBTaXplICAoaW4gY2hhcmFjdGVycyknKQogICAgICAgICBsYWJlbFdpbldpZHRoVGl0bGUgPSBMYWJlbChmcmFtZVdpblNpemUsIHRleHQ9J1dpZHRoJykKLSAgICAgICAgZW50cnlXaW5XaWR0aCA9IEVudHJ5KAorICAgICAgICBzZWxmLmVudHJ5V2luV2lkdGggPSBFbnRyeSgKICAgICAgICAgICAgICAgICBmcmFtZVdpblNpemUsIHRleHR2YXJpYWJsZT1zZWxmLndpbldpZHRoLCB3aWR0aD0zKQogICAgICAgICBsYWJlbFdpbkhlaWdodFRpdGxlID0gTGFiZWwoZnJhbWVXaW5TaXplLCB0ZXh0PSdIZWlnaHQnKQotICAgICAgICBlbnRyeVdpbkhlaWdodCA9IEVudHJ5KAorICAgICAgICBzZWxmLmVudHJ5V2luSGVpZ2h0ID0gRW50cnkoCiAgICAgICAgICAgICAgICAgZnJhbWVXaW5TaXplLCB0ZXh0dmFyaWFibGU9c2VsZi53aW5IZWlnaHQsIHdpZHRoPTMpCiAgICAgICAgICNmcmFtZUhlbHAKICAgICAgICAgZnJhbWVIZWxwTGlzdCA9IEZyYW1lKGZyYW1lSGVscCkKQEAgLTQ0MSwxNyArNDQzLDE3IEBACiAgICAgICAgIGZyYW1lSGVscC5wYWNrKHNpZGU9VE9QLCBwYWR4PTUsIHBhZHk9NSwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICAgICAgI2ZyYW1lUnVuCiAgICAgICAgIGxhYmVsUnVuQ2hvaWNlVGl0bGUucGFjayhzaWRlPUxFRlQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKLSAgICAgICAgcmFkaW9TdGFydHVwU2hlbGwucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCi0gICAgICAgIHJhZGlvU3RhcnR1cEVkaXQucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TdGFydHVwU2hlbGwucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TdGFydHVwRWRpdC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgI2ZyYW1lU2F2ZQogICAgICAgICBsYWJlbFJ1blNhdmVUaXRsZS5wYWNrKHNpZGU9TEVGVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICByYWRpb1NhdmVBdXRvLnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICByYWRpb1NhdmVBc2sucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TYXZlQXV0by5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKKyAgICAgICAgc2VsZi5yYWRpb1NhdmVBc2sucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCiAgICAgICAgICNmcmFtZVdpblNpemUKICAgICAgICAgbGFiZWxXaW5TaXplVGl0bGUucGFjayhzaWRlPUxFRlQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKLSAgICAgICAgZW50cnlXaW5IZWlnaHQucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQorICAgICAgICBzZWxmLmVudHJ5V2luSGVpZ2h0LnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPUUsIHBhZHg9MTAsIHBhZHk9NSkKICAgICAgICAgbGFiZWxXaW5IZWlnaHRUaXRsZS5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR5PTUpCi0gICAgICAgIGVudHJ5V2luV2lkdGgucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQorICAgICAgICBzZWxmLmVudHJ5V2luV2lkdGgucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQogICAgICAgICBsYWJlbFdpbldpZHRoVGl0bGUucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeT01KQogICAgICAgICAjZnJhbWVIZWxwCiAgICAgICAgIGZyYW1lSGVscExpc3RCdXR0b25zLnBhY2soc2lkZT1SSUdIVCwgcGFkeD01LCBwYWR5PTUsIGZpbGw9WSkKQEAgLTQ2NCwyNCArNDY2LDI0IEBACiAgICAgICAgIHJldHVybiBmcmFtZQogCiAgICAgZGVmIEF0dGFjaFZhckNhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKLSAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQotICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCi0gICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCi0gICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCi0gICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKLSAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCi0gICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQotICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQotICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCi0gICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCi0gICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCi0gICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCisgICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKKyAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCisgICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQorICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCisgICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKKyAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCisgICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKKyAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQorICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCisgICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQorICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCisgICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKKyAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQogCiAgICAgZGVmIHJlbW92ZV92YXJfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIGNhbGxiYWNrcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4iCkBAIC00OTIsNyArNDk0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmtleUJpbmRpbmcsIHNlbGYuYnVpbHRpbktleXMsIHNlbGYuY3VzdG9tS2V5cywKICAgICAgICAgICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLCBzZWxmLndpbldpZHRoLCBzZWxmLndpbkhlaWdodCwKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LCBzZWxmLmF1dG9TYXZlLCBzZWxmLmVuY29kaW5nLCk6Ci0gICAgICAgICAgICB2YXIudHJhY2VfdmRlbGV0ZSgndycsIHZhci50cmFjZV92aW5mbygpWzBdWzFdKQorICAgICAgICAgICAgdmFyLnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB2YXIudHJhY2VfaW5mbygpWzBdWzFdKQogCiAgICAgZGVmIFZhckNoYW5nZWRfZm9udChzZWxmLCAqcGFyYW1zKToKICAgICAgICAgJycnV2hlbiBvbmUgZm9udCBhdHRyaWJ1dGUgY2hhbmdlcywgc2F2ZSB0aGVtIGFsbCwgYXMgdGhleSBhcmUKQEAgLTUxNCwxMCArNTE2LDExIEBACiAgICAgICAgIHNlbGYuT25OZXdDb2xvdXJTZXQoKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpblRoZW1lKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGR0aGVtZXMgPSAoJ0lETEUgQ2xhc3NpYycsICdJRExFIE5ldycpCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluVGhlbWUuZ2V0KCkKLSAgICAgICAgaWYgdmFsdWUgPT0gJ0lETEUgRGFyayc6Ci0gICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpICE9ICdJRExFIE5ldyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgJ0lETEUgQ2xhc3NpYycpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgb2xkdGhlbWVzWzBdKQogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lMicsIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX3RoZW1lLmNvbmZpZyh0ZXh0PSdOZXcgdGhlbWUsIHNlZSBIZWxwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQpAQCAtNTU3LDggKzU2MCwyMyBAQAogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnZXh0ZW5zaW9ucycsIGV4dEtleWJpbmRTZWN0aW9uLCBldmVudCwgdmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluS2V5cyhzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xka2V5cyA9ICgKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgV2luZG93cycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFVuaXgnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBNYWMnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBPU1gnLAorICAgICAgICApCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluS2V5cy5nZXQoKQotICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnKSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIG9sZGtleXNbMF0pCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PSdOZXcga2V5IHNldCwgc2VlIEhlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCAnJykKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PScnLCBmZz0nYmxhY2snKQogICAgICAgICBzZWxmLkxvYWRLZXlzTGlzdCh2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2N1c3RvbUtleXMoc2VsZiwgKnBhcmFtcyk6CkBAIC02ODMsNyArNzAxLDcgQEAKICAgICBkZWYgR2V0TmV3S2V5c05hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdrZXlzJykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKSkKLSAgICAgICAgbmV3S2V5U2V0ID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld0tleVNldCA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIEtleSBTZXQnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3S2V5U2V0CiAKQEAgLTc2Nyw4ICs3ODUsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCiAgICAgICAgICNyZXZlcnQgdG8gZGVmYXVsdCBrZXkgc2V0Ci0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgI3VzZXIgY2FuJ3QgYmFjayBvdXQgb2YgdGhlc2UgY2hhbmdlcywgdGhleSBtdXN0IGJlIGFwcGxpZWQgbm93CiAgICAgICAgIHNlbGYuU2F2ZUFsbENoYW5nZWRDb25maWdzKCkKICAgICAgICAgc2VsZi5BY3RpdmF0ZUNvbmZpZ0NoYW5nZXMoKQpAQCAtODM2LDcgKzg1Niw3IEBACiAgICAgZGVmIEdldE5ld1RoZW1lTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2hpZ2hsaWdodCcpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdoaWdobGlnaHQnKSkKLSAgICAgICAgbmV3VGhlbWUgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3VGhlbWUgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBUaGVtZScsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdUaGVtZQogCkBAIC05MzksNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmJ1dHRvbkhlbHBMaXN0UmVtb3ZlLmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1BZGQoc2VsZik6Ci0gICAgICAgIGhlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnKS5yZXN1bHQKKyAgICAgICAgaGVscFNvdXJjZSA9IEhlbHBTb3VyY2Uoc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0CiAgICAgICAgIGlmIGhlbHBTb3VyY2U6CiAgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdC5hcHBlbmQoKGhlbHBTb3VyY2VbMF0sIGhlbHBTb3VyY2VbMV0pKQogICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoRU5ELCBoZWxwU291cmNlWzBdKQpAQCAtOTQ5LDE2ICs5NzAsMTcgQEAKICAgICBkZWYgSGVscExpc3RJdGVtRWRpdChzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCiAgICAgICAgIGhlbHBTb3VyY2UgPSBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdCi0gICAgICAgIG5ld0hlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKAotICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywgbWVudUl0ZW09aGVscFNvdXJjZVswXSwKLSAgICAgICAgICAgICAgICBmaWxlUGF0aD1oZWxwU291cmNlWzFdKS5yZXN1bHQKLSAgICAgICAgaWYgKG5vdCBuZXdIZWxwU291cmNlKSBvciAobmV3SGVscFNvdXJjZSA9PSBoZWxwU291cmNlKToKLSAgICAgICAgICAgIHJldHVybiAjbm8gY2hhbmdlcwotICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQotICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCi0gICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKLSAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCi0gICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQorICAgICAgICBuZXdIZWxwU291cmNlID0gSGVscFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgbWVudWl0ZW09aGVscFNvdXJjZVswXSwKKyAgICAgICAgICAgICAgICBmaWxlcGF0aD1oZWxwU291cmNlWzFdLAorICAgICAgICAgICAgICAgICkucmVzdWx0CisgICAgICAgIGlmIG5ld0hlbHBTb3VyY2UgYW5kIG5ld0hlbHBTb3VyY2UgIT0gaGVscFNvdXJjZToKKyAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCisgICAgICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKKyAgICAgICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbVJlbW92ZShzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCkBAIC05OTYsNyArMTAxOCw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMjZm9udCBzaXplIGRyb3Bkb3duCiAgICAgICAgIHNlbGYub3B0TWVudUZvbnRTaXplLlNldE1lbnUoKCc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicpLCBmb250U2l6ZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNScsICcyOScsICczNCcsICc0MCcpLCBmb250U2l6ZSApCiAgICAgICAgICMjZm9udFdlaWdodAogICAgICAgICBzZWxmLmZvbnRCb2xkLnNldChmb250Qm9sZCkKICAgICAgICAgIyNmb250IHNhbXBsZQpAQCAtMTA2NSw3ICsxMDg4LDcgQEAKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgY3VycmVudE9wdGlvbikKICAgICAgICAgICAgIGl0ZW1MaXN0ID0gaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpCiAgICAgICAgICAgICBpdGVtTGlzdC5zb3J0KCkKLSAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQorICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgIHNlbGYuU2V0S2V5c1R5cGUoKQogICAgICAgICAjI2xvYWQga2V5c2V0IGVsZW1lbnQgbGlzdAogICAgICAgICBrZXlTZXROYW1lID0gaWRsZUNvbmYuQ3VycmVudEtleXMoKQpAQCAtMTM2NywxMiArMTM5MCwxOCBAQAogW0NhbmNlbF0gb25seSBjYW5jZWxzIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzYXZlLgogJycnCiBoZWxwX3BhZ2VzID0gewotICAgICdIaWdobGlnaHRpbmcnOicnJworICAgICdIaWdobGlnaHRpbmcnOiAnJycKIEhpZ2hsaWdodGluZzoKIFRoZSBJRExFIERhcmsgY29sb3IgdGhlbWUgaXMgbmV3IGluIE9jdG9iZXIgMjAxNS4gIEl0IGNhbiBvbmx5CiBiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQogdGhlbWUsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLScnJworJycnLAorICAgICdLZXlzJzogJycnCitLZXlzOgorVGhlIElETEUgTW9kZXJuIFVuaXgga2V5IHNldCBpcyBuZXcgaW4gSnVuZSAyMDE2LiAgSXQgY2FuIG9ubHkKK2JlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCitrZXkgc2V0LCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisnJycsCiB9CiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXIucHkKaW5kZXggZDVlMjE3ZC4uMTE0ZDBkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKQEAgLTEsOSArMSwxMiBAQAotaW1wb3J0IG9zCiBpbXBvcnQgYmRiCitpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5TY3JvbGxlZExpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5zY3JvbGxlZGxpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAorZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIAogY2xhc3MgSWRiKGJkYi5CZGIpOgpAQCAtMzQsOCArMzcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmV2X2ZyYW1lID0gZnJhbWUuZl9iYWNrCi0gICAgICAgICAgICBpZiBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZS5jb3VudCgnRGVidWdnZXIucHknKToKLSAgICAgICAgICAgICAgICAjICh0aGF0IHRlc3Qgd2lsbCBjYXRjaCBib3RoIERlYnVnZ2VyLnB5IGFuZCBSZW1vdGVEZWJ1Z2dlci5weSkKKyAgICAgICAgICAgIHByZXZfbmFtZSA9IHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiAnaWRsZWxpYicgaW4gcHJldl9uYW1lIGFuZCAnZGVidWdnZXInIGluIHByZXZfbmFtZToKKyAgICAgICAgICAgICAgICAjIGNhdGNoIGJvdGggaWRsZWxpYi9kZWJ1Z2dlci5weSBhbmQgaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CisgICAgICAgICAgICAgICAgIyBvbiBib3RoIHBvc2l4IGFuZCB3aW5kb3dzCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbl9ycGNfY29kZShwcmV2X2ZyYW1lKQogCkBAIC0zNzAsNyArMzc1LDcgQEAKIGNsYXNzIFN0YWNrVmlld2VyKFNjcm9sbGVkTGlzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCBmbGlzdCwgZ3VpKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQXQgbGVhc3Qgb24gd2l0aCB0aGUgc3RvY2sgQXF1YVRrIHZlcnNpb24gb24gT1NYIDEwLjQgeW91J2xsCiAgICAgICAgICAgICAjIGdldCBhIHNoYWtpbmcgR1VJIHRoYXQgZXZlbnR1YWxseSBraWxscyBJRExFIGlmIHRoZSB3aWR0aAogICAgICAgICAgICAgIyBhcmd1bWVudCBpcyBzcGVjaWZpZWQuCkBAIC01MDIsNyArNTA3LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlcmUgaXMgYWxzbyBhbiBvYnNjdXJlIGJ1ZyBpbiBzb3J0ZWQoZGljdCkgd2hlcmUgdGhlCiAgICAgICAgICAgICAjIGludGVycHJldGVyIGdldHMgaW50byBhIGxvb3AgcmVxdWVzdGluZyBub24tZXhpc3RpbmcgZGljdFswXSwKLSAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIFJlbW90ZURlYnVnZ2VyLkRpY3RQcm94eS4KKyAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIGRlYnVnZ2VyX3IuRGljdFByb3h5LgogICAgICAgICAgICAgIyMjCiAgICAgICAgICAgICBrZXlzX2xpc3QgPSBkaWN0LmtleXMoKQogICAgICAgICAgICAgbmFtZXMgPSBzb3J0ZWQoa2V5c19saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CmluZGV4IGJlMjI2MmYuLmJjOTcxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKQEAgLTIxLDcgKzIxLDcgQEAKICIiIgogCiBpbXBvcnQgdHlwZXMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKIAogZGVidWdnaW5nID0gMAogCkBAIC0xODcsNyArMTg3LDcgQEAKIAogICAgICIiIgogICAgIGd1aV9wcm94eSA9IEdVSVByb3h5KHJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKLSAgICBpZGIgPSBEZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQorICAgIGlkYiA9IGRlYnVnZ2VyLklkYihndWlfcHJveHkpCiAgICAgaWRiX2FkYXAgPSBJZGJBZGFwdGVyKGlkYikKICAgICBycGNoYW5kbGVyLnJlZ2lzdGVyKGlkYl9hZGFwX29pZCwgaWRiX2FkYXApCiAgICAgcmV0dXJuIGlkYl9hZGFwX29pZApAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgaWRiX2FkYXBfb2lkID0gcnBjY2x0LnJlbW90ZWNhbGwoImV4ZWMiLCAic3RhcnRfdGhlX2RlYnVnZ2VyIixcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWlfYWRhcF9vaWQsKSwge30pCiAgICAgaWRiX3Byb3h5ID0gSWRiUHJveHkocnBjY2x0LCBweXNoZWxsLCBpZGJfYWRhcF9vaWQpCi0gICAgZ3VpID0gRGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQorICAgIGd1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKICAgICBndWlfYWRhcCA9IEdVSUFkYXB0ZXIocnBjY2x0LCBndWkpCiAgICAgcnBjY2x0LnJlZ2lzdGVyKGd1aV9hZGFwX29pZCwgZ3VpX2FkYXApCiAgICAgcmV0dXJuIGd1aQpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgUmVxdWVzdCB0aGF0IHRoZSBSUENTZXJ2ZXIgc2h1dCBkb3duIHRoZSBzdWJwcm9jZXNzIGRlYnVnZ2VyIGFuZCBsaW5rLgogICAgIFVucmVnaXN0ZXIgdGhlIEdVSUFkYXB0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgYSBHQyBvbiB0aGUgSWRsZSBwcm9jZXNzCiAgICAgZGVidWdnZXIgYW5kIFJQQyBsaW5rIG9iamVjdHMuICAoVGhlIHNlY29uZCByZWZlcmVuY2UgdG8gdGhlIGRlYnVnZ2VyIEdVSQotICAgIGlzIGRlbGV0ZWQgaW4gUHlTaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCisgICAgaXMgZGVsZXRlZCBpbiBweXNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKIAogICAgICIiIgogICAgIGNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIocnBjY2x0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqLnB5CmluZGV4IDdiNTdhYTQuLmI3MGIxM2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKQEAgLTgsMTMgKzgsMTAgQEAKIAogIyBYWFggVE8gRE86CiAjIC0gZm9yIGNsYXNzZXMvbW9kdWxlcywgYWRkICJvcGVuIHNvdXJjZSIgdG8gb2JqZWN0IGJyb3dzZXIKLQotaW1wb3J0IHJlCi0KLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCi0KIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcworCiBteXJlcHIgPSBSZXByKCkKIG15cmVwci5tYXhzdHJpbmcgPSAxMDAKIG15cmVwci5tYXhvdGhlciA9IDEwMApAQCAtMTIyLDIxICsxMTksMjAgQEAKICAgICByZXR1cm4gYyhsYWJlbHRleHQsIG9iamVjdCwgc2V0ZnVuY3Rpb24pCiAKIAotZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOgorZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgT2JqZWN0QnJvd3NlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHJvb3QuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQotICAgIHJvb3QuZm9jdXNfc2V0KCkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBkZWJ1ZyBvYmplY3QgYnJvd3NlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgMTAwLCB5ICsgMTc1KSkKKyAgICB0b3AuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQorICAgIHRvcC5mb2N1c19zZXQoKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCiAgICAgaXRlbSA9IG1ha2Vfb2JqZWN0dHJlZWl0ZW0oInN5cyIsIHN5cykKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUudXBkYXRlKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2R5bm9wdGlvbi5weQppbmRleCA1MTViNGJhLi45YzZmZmE0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpAQCAtMyw2ICszLDcgQEAKIGFuZCBzZXR0aW5nIG9mIGhpZ2hsaWdodHRoaWNrbmVzcwogIiIiCiBpbXBvcnQgY29weQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IE9wdGlvbk1lbnUsIF9zZXRpdCwgU3RyaW5nVmFyLCBCdXR0b24KIAogY2xhc3MgRHluT3B0aW9uTWVudShPcHRpb25NZW51KToKQEAgLTM0LDEyICszNSwxMiBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZS5zZXQodmFsdWUpCiAKIGRlZiBfZHluX29wdGlvbl9tZW51KHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCAjICsgU3RyaW5nVmFyLCBCdXR0b24KIAotICAgIHRvcCA9IFRvcGxldmVsKCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXRzIGR5bmFtaWMgb3B0aW9uIG1lbnUiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdG9wLmZvY3VzX3NldCgpCiAKICAgICB2YXIgPSBTdHJpbmdWYXIodG9wKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZWRpdG9yLnB5CmluZGV4IDk5NDRkYTMuLmFlNDc1Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKQEAgLTYsMjggKzYsMzQgQEAKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWJicm93c2VyCiAKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKLWZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgR3JlcERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBSZXBsYWNlRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZywgdGV4dFZpZXcsIGNvbmZpZ0RpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgoraW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZ3JlcAogZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcmVwbGFjZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCiAjIFRoZSBkZWZhdWx0IHRhYiBzZXR0aW5nIGZvciBhIFRleHQgd2lkZ2V0LCBpbiBhdmVyYWdlLXdpZHRoIGNoYXJhY3RlcnMuCiBUS19UQUJXSURUSF9ERUZBVUxUID0gOAotCiBfcHlfdmVyc2lvbiA9ICcgKCVzKScgJSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCiAKKwogZGVmIF9zcGhpbnhfdmVyc2lvbigpOgogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwpAQCAtNDAsNjMgKzQ2LDE2IEBACiAgICAgcmV0dXJuIHJlbGVhc2UKIAogCi1jbGFzcyBIZWxwRGlhbG9nKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZSAgICAgICMgcGFyZW50IG9mIGhlbHAgd2luZG93Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZSAgICAgICAgICMgdGhlIGhlbHAgd2luZG93IGl0ZXNlbGYKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIHBhcmVudCwgbmVhcj1Ob25lKToKLSAgICAgICAgIiIiIERpc3BsYXkgdGhlIGhlbHAgZGlhbG9nLgotCi0gICAgICAgICAgICBwYXJlbnQgLSBwYXJlbnQgd2lkZ2V0IGZvciB0aGUgaGVscCB3aW5kb3cKLQotICAgICAgICAgICAgbmVhciAtIGEgVG9wbGV2ZWwgd2lkZ2V0IChlLmcuIEVkaXRvcldpbmRvdyBvciBQeVNoZWxsKQotICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhcyBhIHJlZmVyZW5jZSBmb3IgcGxhY2luZyB0aGUgaGVscCB3aW5kb3cKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncyBhcyB3Ci0gICAgICAgIHcud2FybigiRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS5cbiIKLSAgICAgICAgICAgICAgICJJdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLlxuIgotICAgICAgICAgICAgICAgIkl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHByaXZhdGUgaGVscC5IZWxwV2luZG93XG4iLAotICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIHNlbGYuZGxnIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNob3dfZGlhbG9nKHBhcmVudCkKLSAgICAgICAgaWYgbmVhcjoKLSAgICAgICAgICAgIHNlbGYubmVhcndpbmRvdyhuZWFyKQotCi0gICAgZGVmIHNob3dfZGlhbG9nKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIGZuPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksJ2hlbHAudHh0JykKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcgPSB0ZXh0Vmlldy52aWV3X2ZpbGUocGFyZW50LCdIZWxwJyxmbiwgbW9kYWw9RmFsc2UpCi0gICAgICAgIGRsZy5iaW5kKCc8RGVzdHJveT4nLCBzZWxmLmRlc3Ryb3ksICcrJykKLQotICAgIGRlZiBuZWFyd2luZG93KHNlbGYsIG5lYXIpOgotICAgICAgICAjIFBsYWNlIHRoZSBoZWxwIGRpYWxvZyBuZWFyIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHBhcmVudC4KLSAgICAgICAgIyBOb3RlIC0gdGhpcyBtYXkgbm90IHJlcG9zaXRpb24gdGhlIHdpbmRvdyBpbiBNZXRhY2l0eQotICAgICAgICAjICBpZiAiL2FwcHMvbWV0YWNpdHkvZ2VuZXJhbC9kaXNhYmxlX3dvcmthcm91bmRzIiBpcyBlbmFibGVkCi0gICAgICAgIGRsZyA9IHNlbGYuZGxnCi0gICAgICAgIGdlb20gPSAobmVhci53aW5mb19yb290eCgpICsgMTAsIG5lYXIud2luZm9fcm9vdHkoKSArIDEwKQotICAgICAgICBkbGcud2l0aGRyYXcoKQotICAgICAgICBkbGcuZ2VvbWV0cnkoIj0rJWQrJWQiICUgZ2VvbSkKLSAgICAgICAgZGxnLmRlaWNvbmlmeSgpCi0gICAgICAgIGRsZy5saWZ0KCkKLQotICAgIGRlZiBkZXN0cm95KHNlbGYsIGV2PU5vbmUpOgotICAgICAgICBzZWxmLmRsZyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0KLWhlbHBEaWFsb2cgPSBIZWxwRGlhbG9nKCkgICMgc2luZ2xldG9uIGluc3RhbmNlLCBubyBsb25nZXIgdXNlZAotCi0KIGNsYXNzIEVkaXRvcldpbmRvdyhvYmplY3QpOgotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi0gICAgZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLSAgICBmcm9tIGlkbGVsaWIuSU9CaW5kaW5nIGltcG9ydCBJT0JpbmRpbmcsIGZpbGVzeXN0ZW1lbmNvZGluZywgZW5jb2RpbmcKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCisgICAgZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKKyAgICBmcm9tIGlkbGVsaWIuaW9tZW51IGltcG9ydCBJT0JpbmRpbmcsIGVuY29kaW5nCisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKLSAgICBmcm9tIGlkbGVsaWIuTXVsdGlTdGF0dXNCYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCisgICAgZnJvbSBpZGxlbGliLnN0YXR1c2JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKIAorICAgIGZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyBmb3IgZmlsZSBuYW1lcwogICAgIGhlbHBfdXJsID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgpAQCAtMTM2LDExICs5NSwxMSBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBzeXMucHMxID0gJz4+PiAnCiAgICAgICAgIHNlbGYubWVudWJhciA9IE1lbnUocm9vdCkKLSAgICAgICAgc2VsZi50b3AgPSB0b3AgPSBXaW5kb3dMaXN0Lkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQorICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IHdpbmRvd3MuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCiAgICAgICAgIGlmIGZsaXN0OgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSBmbGlzdC52YXJzCiAgICAgICAgICAgICAjc2VsZi50b3AuaW5zdGFuY2VfZGljdCBtYWtlcyBmbGlzdC5pbnZlcnNlZGljdCBhdmFpbGFibGUgdG8KLSAgICAgICAgICAgICNjb25maWdEaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcworICAgICAgICAgICAgI2NvbmZpZ2RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCiAgICAgICAgICAgICBzZWxmLnRvcC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0ge30gICMga2V5czogVGtpbnRlciBldmVudCBuYW1lcwpAQCAtMTU4LDEzICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAnd3JhcCc6ICdub25lJywKICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0dGhpY2tuZXNzJzogMCwKICAgICAgICAgICAgICAgICAnd2lkdGgnOiBzZWxmLndpZHRoLAotICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnRWRpdG9yV2luZG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLCB0eXBlPSdpbnQnKX0KLSAgICAgICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCB0ayA4LjUgd2UgaGF2ZSB0byBzZXQgdGhlIG5ldyB0YWJzdHlsZSBvcHRpb24KLSAgICAgICAgICAgICMgdG8gJ3dvcmRwcm9jZXNzb3InIHRvIGFjaGlldmUgdGhlIHNhbWUgZGlzcGxheSBvZiB0YWJzIGFzIGluCi0gICAgICAgICAgICAjIG9sZGVyIHRrIHZlcnNpb25zLgotICAgICAgICAgICAgdGV4dF9vcHRpb25zWyd0YWJzdHlsZSddID0gJ3dvcmRwcm9jZXNzb3InCisgICAgICAgICAgICAgICAgJ3RhYnN0eWxlJzogJ3dvcmRwcm9jZXNzb3InLCAgIyBuZXcgaW4gOC41CisgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYWluJywgJ0VkaXRvcldpbmRvdycsICdoZWlnaHQnLCB0eXBlPSdpbnQnKSwKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKFRleHQpKHRleHRfZnJhbWUsICoqdGV4dF9vcHRpb25zKQogICAgICAgICBzZWxmLnRvcC5mb2N1c2VkX3dpZGdldCA9IHNlbGYudGV4dAogCkBAIC0xNzMsNyArMTI5LDcgQEAKIAogICAgICAgICBzZWxmLnRvcC5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2xvc2UpCiAgICAgICAgIHNlbGYudG9wLmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBzZWxmLmNsb3NlX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDb21tYW5kLVcgb24gZWRpdG9yd2luZG93cyBkb2Vzbid0IHdvcmsgd2l0aG91dCB0aGlzLgogICAgICAgICAgICAgdGV4dC5iaW5kKCc8PGNsb3NlLXdpbmRvdz4+Jywgc2VsZi5jbG9zZV9ldmVudCkKICAgICAgICAgICAgICMgU29tZSBPUyBYIHN5c3RlbXMgaGF2ZSBvbmx5IG9uZSBtb3VzZSBidXR0b24sIHNvIHVzZQpAQCAtMzA5LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgbWVudS5hZGRfc2VwYXJhdG9yKCkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCiAgICAgICAgICAgICBzZWxmLndtZW51X2VuZCA9IGVuZAotICAgICAgICAgICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAKICAgICAgICAgIyBTb21lIGFic3RyYWN0aW9ucyBzbyBJRExFIGV4dGVuc2lvbnMgYXJlIGNyb3NzLUlERQogICAgICAgICBzZWxmLmFza3llc25vID0gdGtNZXNzYWdlQm94LmFza3llc25vCkBAIC00MTgsNyArMzc0LDcgQEAKICAgICAgICAgICAgIHVuZGVybGluZSwgbGFiZWwgPSBwcmVwc3RyKGxhYmVsKQogICAgICAgICAgICAgbWVudWRpY3RbbmFtZV0gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPW5hbWUsIHRlYXJvZmY9MCkKICAgICAgICAgICAgIG1iYXIuYWRkX2Nhc2NhZGUobGFiZWw9bGFiZWwsIG1lbnU9bWVudSwgdW5kZXJsaW5lPXVuZGVybGluZSkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NhcmJvblRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NhcmJvblRrKCk6CiAgICAgICAgICAgICAjIEluc2VydCB0aGUgYXBwbGljYXRpb24gbWVudQogICAgICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKQEAgLTQzOSw3ICszOTUsNyBAQAogICAgICAgICAgICAgZW5kID0gLTEKICAgICAgICAgaWYgZW5kID4gc2VsZi53bWVudV9lbmQ6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZShzZWxmLndtZW51X2VuZCsxLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKIAogICAgIHJtZW51ID0gTm9uZQogCkBAIC01MDcsMTcgKzQ2MywxNyBAQAogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KICAgICAgICAgaWYgc2VsZi5yb290OgogICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5yb290CiAgICAgICAgIGVsc2U6CkBAIC01OTAsMjMgKzU0NiwyMyBAQAogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZChzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2FnYWluX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9hZ2FpbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb25fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfaW5fZmlsZXNfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBHcmVwRGlhbG9nLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQorICAgICAgICBncmVwLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIHJlcGxhY2VfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBSZXBsYWNlRGlhbG9nLnJlcGxhY2Uoc2VsZi50ZXh0KQorICAgICAgICByZXBsYWNlLnJlcGxhY2Uoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGdvdG9fbGluZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC02MjIsNDYgKzU3OCwyNyBAQAogICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKIAogICAgIGRlZiBvcGVuX21vZHVsZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgIyBYWFggU2hvdWxkbid0IHRoaXMgYmUgaW4gSU9CaW5kaW5nPworICAgICAgICAiIiJHZXQgbW9kdWxlIG5hbWUgZnJvbSB1c2VyIGFuZCBvcGVuIGl0LgorCisgICAgICAgIFJldHVybiBtb2R1bGUgcGF0aCBvciBOb25lIGZvciBjYWxscyBieSBvcGVuX2NsYXNzX2Jyb3dzZXIKKyAgICAgICAgd2hlbiBsYXR0ZXIgaXMgbm90IGludm9rZWQgaW4gbmFtZWQgZWRpdG9yIHdpbmRvdy4KKyAgICAgICAgIiIiCisgICAgICAgICMgWFhYIFRoaXMsIG9wZW5fY2xhc3NfYnJvd3NlciwgYW5kIG9wZW5fcGF0aF9icm93c2VyCisgICAgICAgICMgd291bGQgZml0IGJldHRlciBpbiBpb21lbnUuSU9CaW5kaW5nLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0IikKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKS5zdHJpcCgpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKLSAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBuYW1lID0gdGtTaW1wbGVEaWFsb2cuYXNrc3RyaW5nKCJNb2R1bGUiLAotICAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCi0gICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKLSAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCwgaW5pdGlhbHZhbHVlPW5hbWUpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsIHN0cihtc2cpLCBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJtb2R1bGUgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmZsaXN0OgotICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQorICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IHF1ZXJ5Lk1vZHVsZU5hbWUoCisgICAgICAgICAgICAgICAgc2VsZi50ZXh0LCAiT3BlbiBNb2R1bGUiLAorICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKKyAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCisgICAgICAgICAgICAgICAgbmFtZSkucmVzdWx0CisgICAgICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuZmxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCiAgICAgICAgIHJldHVybiBmaWxlX3BhdGgKIAogICAgIGRlZiBvcGVuX2NsYXNzX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC02NzMsMTIgKzYxMCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dCh0YWlsKQotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IENsYXNzQnJvd3NlcgotICAgICAgICBDbGFzc0Jyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBicm93c2VyCisgICAgICAgIGJyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKIAogICAgIGRlZiBvcGVuX3BhdGhfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgotICAgICAgICBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCisgICAgICAgIHBhdGhicm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCiAKICAgICBkZWYgb3Blbl90dXJ0bGVfZGVtbyhzZWxmLCBldmVudCA9IE5vbmUpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNzM5LDcgKzY3Niw3IEBACiAKICAgICBkZWYgUmVzZXRDb2xvcml6ZXIoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGNvbG9yIHRoZW1lIgotICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgc2VsZi5fcm1jb2xvcml6ZXIoKQogICAgICAgICBzZWxmLl9hZGRjb2xvcml6ZXIoKQogICAgICAgICBFZGl0b3JXaW5kb3cuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKQEAgLTc1OSwxNCArNjk2LDE0IEBACiAKICAgICBkZWYgUmVzZXRGb250KHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSB0ZXh0IHdpZGdldHMnIGZvbnQgaWYgaXQgaXMgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKIAogICAgICAgICBzZWxmLnRleHRbJ2ZvbnQnXSA9IGlkbGVDb25mLkdldEZvbnQoc2VsZi5yb290LCAnbWFpbicsJ0VkaXRvcldpbmRvdycpCiAKICAgICBkZWYgUmVtb3ZlS2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgdGhlIGtleWJpbmRpbmdzIGJlZm9yZSB0aGV5IGFyZSBjaGFuZ2VkLiIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi50ZXh0LmV2ZW50X2RlbGV0ZShldmVudCwgKmtleWxpc3QpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgpAQCAtNzc3LDggKzcxNCw4IEBACiAKICAgICBkZWYgQXBwbHlLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUga2V5YmluZGluZ3MgYWZ0ZXIgdGhleSBhcmUgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CiAgICAgICAgICAgICB4a2V5ZGVmcyA9IGlkbGVDb25mLkdldEV4dGVuc2lvbkJpbmRpbmdzKGV4dGVuc2lvbk5hbWUpCkBAIC03ODYsNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKHhrZXlkZWZzKQogICAgICAgICAjdXBkYXRlIG1lbnUgYWNjZWxlcmF0b3JzCiAgICAgICAgIG1lbnVFdmVudERpY3QgPSB7fQotICAgICAgICBmb3IgbWVudSBpbiBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzOgorICAgICAgICBmb3IgbWVudSBpbiBzZWxmLm1haW5tZW51Lm1lbnVkZWZzOgogICAgICAgICAgICAgbWVudUV2ZW50RGljdFttZW51WzBdXSA9IHt9CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtZW51WzFdOgogICAgICAgICAgICAgICAgIGlmIGl0ZW06CkBAIC04MTMsNyArNzUwLDcgQEAKIAogICAgIGRlZiBzZXRfbm90YWJzX2luZGVudHdpZHRoKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBpbmRlbnR3aWR0aCBpZiBjaGFuZ2VkIGFuZCBub3QgdXNpbmcgdGFicyBpbiB0aGlzIHdpbmRvdyIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgaWYgbm90IHNlbGYudXNldGFiczoKICAgICAgICAgICAgIHNlbGYuaW5kZW50d2lkdGggPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnSW5kZW50JywnbnVtLXNwYWNlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcpCkBAIC05OTMsNyArOTMwLDcgQEAKICAgICBkZWYgX2Nsb3NlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlvLmZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi51cGRhdGVfcmVjZW50X2ZpbGVzX2xpc3QobmV3X2ZpbGU9c2VsZi5pby5maWxlbmFtZSkKLSAgICAgICAgV2luZG93TGlzdC51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAgICAgICAgIHNlbGYudW5sb2FkX2V4dGVuc2lvbnMoKQogICAgICAgICBzZWxmLmlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5pbyA9IE5vbmUKQEAgLTEwMzEsMTIgKzk2OCwyNSBAQAogICAgIGRlZiBnZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gaWRsZUNvbmYuR2V0RXh0ZW5zaW9ucyhlZGl0b3Jfb25seT1UcnVlKQogCisgICAgZXh0ZmlsZXMgPSB7ICAjIG1hcCBjb25maWctZXh0ZW5zaW9uIHNlY3Rpb24gbmFtZXMgdG8gbmV3IGZpbGUgbmFtZXMKKyAgICAgICAgJ0F1dG9Db21wbGV0ZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICAnQXV0b0V4cGFuZCc6ICdhdXRvZXhwYW5kJywKKyAgICAgICAgJ0NhbGxUaXBzJzogJ2NhbGx0aXBzJywKKyAgICAgICAgJ0NvZGVDb250ZXh0JzogJ2NvZGVjb250ZXh0JywKKyAgICAgICAgJ0Zvcm1hdFBhcmFncmFwaCc6ICdwYXJhZ3JhcGgnLAorICAgICAgICAnUGFyZW5NYXRjaCc6ICdwYXJlbm1hdGNoJywKKyAgICAgICAgJ1JzdHJpcEV4dGVuc2lvbic6ICdyc3RyaXAnLAorICAgICAgICAnU2NyaXB0QmluZGluZyc6ICdydW5zY3JpcHQnLAorICAgICAgICAnWm9vbUhlaWdodCc6ICd6b29taGVpZ2h0JywKKyAgICAgICAgfQorCiAgICAgZGVmIGxvYWRfZXh0ZW5zaW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBmbmFtZSA9IHNlbGYuZXh0ZmlsZXMuZ2V0KG5hbWUsIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIGZuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGZuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCkBAIC0xMDYwLDcgKzEwMTAsNyBAQAogCiAgICAgZGVmIGFwcGx5X2JpbmRpbmdzKHNlbGYsIGtleWRlZnM9Tm9uZSk6CiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgdGV4dC5rZXlkZWZzID0ga2V5ZGVmcwogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgpAQCAtMTA3Myw5ICsxMDIzLDkgQEAKICAgICAgICAgTWVudXMgdGhhdCBhcmUgYWJzZW50IG9yIE5vbmUgaW4gc2VsZi5tZW51ZGljdCBhcmUgaWdub3JlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1lbnVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYuQmluZGluZ3MubWVudWRlZnMKKyAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5tYWlubWVudS5tZW51ZGVmcwogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICBtZW51ZGljdCA9IHNlbGYubWVudWRpY3QKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICBmb3IgbW5hbWUsIGVudHJ5bGlzdCBpbiBtZW51ZGVmczoKQEAgLTEzMDIsNyArMTI1Miw3IEBACiAgICAgICAgICAgICAjIGFkanVzdCBpbmRlbnRhdGlvbiBmb3IgY29udGludWF0aW9ucyBhbmQgYmxvY2sKICAgICAgICAgICAgICMgb3Blbi9jbG9zZSBmaXJzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3Qgc3RtdAogICAgICAgICAgICAgbG5vID0gaW5kZXgybGluZSh0ZXh0LmluZGV4KCdpbnNlcnQnKSkKLSAgICAgICAgICAgIHkgPSBQeVBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQorICAgICAgICAgICAgeSA9IHB5cGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb250ZXh0X3VzZV9wczE6CiAgICAgICAgICAgICAgICAgZm9yIGNvbnRleHQgaW4gc2VsZi5udW1fY29udGV4dF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhcnRhdCA9IG1heChsbm8gLSBjb250ZXh0LCAxKQpAQCAtMTMyNiwyMiArMTI3NiwyMiBAQAogICAgICAgICAgICAgICAgIHkuc2V0X2xvKDApCiAKICAgICAgICAgICAgIGMgPSB5LmdldF9jb250aW51YXRpb25fdHlwZSgpCi0gICAgICAgICAgICBpZiBjICE9IFB5UGFyc2UuQ19OT05FOgorICAgICAgICAgICAgaWYgYyAhPSBweXBhcnNlLkNfTk9ORToKICAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IHN0bXQgaGFzbid0IGVuZGVkIHlldC4KLSAgICAgICAgICAgICAgICBpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKKyAgICAgICAgICAgICAgICBpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiBhIHN0cmluZzsgZG8gbm90IGluZGVudCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgYSBzdHJpbmcgd2hpY2ggc3RhcnRlZCBiZWZvcmUgdGhpcyBsaW5lOwogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCBpbmRlbnQpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CUkFDS0VUOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIHVwIHdpdGggdGhlIGZpcnN0IChpZiBhbnkpIGVsZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQgc3RydWN0dXJlOyBlbHNlIGluZGVudCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbCBiZXlvbmQgdGhlIGluZGVudCBvZiB0aGUgbGluZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVpbmRlbnRfdG8oeS5jb21wdXRlX2JyYWNrZXRfaW5kZW50KCkpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CQUNLU0xBU0g6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CQUNLU0xBU0g6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbW9yZSB0aGFuIG9uZSBsaW5lIGluIHRoaXMgc3RtdCBhbHJlYWR5LCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICMgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50OyBlbHNlIGlmIGluaXRpYWwgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGhhcyBhIHN0YXJ0IG9uIGFuIGFzc2lnbm1lbnQgc3RtdCwgaW5kZW50IHRvCkBAIC0xNTY5LDkgKzE1MTksNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICByZXR1cm4gcmF3LCBlZmZlY3RpdmUKIAotaW1wb3J0IHRva2VuaXplCi1fdG9rZW5pemUgPSB0b2tlbml6ZQotZGVsIHRva2VuaXplCiAKIGNsYXNzIEluZGVudFNlYXJjaGVyKG9iamVjdCk6CiAKQEAgLTE1OTYsOCArMTU0Myw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRleHQuZ2V0KG1hcmssIG1hcmsgKyAiIGxpbmVlbmQrMWMiKQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgSU5ERU5UPV90b2tlbml6ZS5JTkRFTlQsCi0gICAgICAgICAgICAgICAgICAgTkFNRT1fdG9rZW5pemUuTkFNRSwKKyAgICAgICAgICAgICAgICAgICBJTkRFTlQ9dG9rZW5pemUuSU5ERU5ULAorICAgICAgICAgICAgICAgICAgIE5BTUU9dG9rZW5pemUuTkFNRSwKICAgICAgICAgICAgICAgICAgICBPUEVORVJTPSgnY2xhc3MnLCAnZGVmJywgJ2ZvcicsICdpZicsICd0cnknLCAnd2hpbGUnKSk6CiAgICAgICAgIGlmIHNlbGYuZmluaXNoZWQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjA4LDE5ICsxNTU1LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gMQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2F2ZV90YWJzaXplID0gX3Rva2VuaXplLnRhYnNpemUKLSAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCisgICAgICAgIHNhdmVfdGFic2l6ZSA9IHRva2VuaXplLnRhYnNpemUKKyAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuZWF0ZXIoKnRva2VuKQotICAgICAgICAgICAgZXhjZXB0IChfdG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0ICh0b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBjdXQgb2ZmIHRoZSB0b2tlbml6ZXIgZWFybHksIHdlIGNhbiB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgIyBzcHVyaW91cyBlcnJvcnMKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQorICAgICAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQogICAgICAgICByZXR1cm4gc2VsZi5ibGtvcGVubGluZSwgc2VsZi5pbmRlbnRlZGxpbmUKIAogIyMjIGVuZCBhdXRvaW5kZW50IGNvZGUgIyMjCkBAIC0xNjQ0LDcgKzE1OTEsNyBAQAogICAgIGtleWxpc3QgPSBrZXlkZWZzLmdldChldmVudG5hbWUpCiAgICAgIyBpc3N1ZTEwOTQwOiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwcmV2ZW50IGhhbmcgd2l0aCBPUyBYIENvY29hIFRrIDguNQogICAgICMgaWYgbm90IGtleWxpc3Q6Ci0gICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKKyAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3guaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8b3Blbi1tb2R1bGU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Z290by1saW5lPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGNoYW5nZS1pbmRlbnR3aWR0aD4+In0pOgpAQCAtMTY3OSwxMiArMTYyNiwxNSBAQAogICAgICAgICBmaWxlbmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBOb25lKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBOb25lKQogICAgIGVkaXQgPSBFZGl0b3JXaW5kb3cocm9vdD1yb290LCBmaWxlbmFtZT1maWxlbmFtZSkKICAgICBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS1hbGwtd2luZG93cz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKICAgICAjIERvZXMgbm90IHN0b3AgZXJyb3IsIG5laXRoZXIgZG9lcyBmb2xsb3dpbmcKICAgICAjIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2VkaXRvcicsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9lZGl0b3Jfd2luZG93KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKaW5kZXggYTk5ODlhOC4uZjQ2YWQ3YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC02LDcgKzcsNyBAQAogY2xhc3MgRmlsZUxpc3Q6CiAKICAgICAjIE4uQi4gdGhpcyBpbXBvcnQgb3ZlcnJpZGRlbiBpbiBQeVNoZWxsRmlsZUxpc3QuCi0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKQEAgLTExMSw3ICsxMTIsNyBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IGZpeHdvcmRicmVha3MKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBmaXh3b3JkYnJlYWtzCiAgICAgaW1wb3J0IHN5cwogICAgIHJvb3QgPSBUaygpCiAgICAgZml4d29yZGJyZWFrcyhyb290KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2dyZXAucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZ3JlcC5weQppbmRleCA3MjFiMjMxLi42NGJhMjhkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2dyZXAucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBvcwogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCByZSAgIyBmb3IgaHRlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIENoZWNrYnV0dG9uICAjIGZvciBHcmVwRGlhbG9nCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBCdXR0b24sIFNFTCwgRU5EICAjIGZvciBodGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCi0jIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBDaGVja2J1dHRvbgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGhlcmUgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCiAjIEVkaXRvcldpbmRvdyAtPiBHcmVwRGlhbG9wIC0+IE91dHB1dFdpbmRvdyAtPiBFZGl0b3JXaW5kb3cKIAogZGVmIGdyZXAodGV4dCwgaW89Tm9uZSwgZmxpc3Q9Tm9uZSk6CiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX2dyZXBkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9ncmVwZGlhbG9nID0gR3JlcERpYWxvZyhyb290LCBlbmdpbmUsIGZsaXN0KQogICAgIGRpYWxvZyA9IGVuZ2luZS5fZ3JlcGRpYWxvZwpAQCAtNDcsMTMgKzQ5LDEwIEBACiAgICAgICAgIHNlbGYuZ2xvYmVudCA9IHNlbGYubWFrZV9lbnRyeSgiSW4gZmlsZXM6Iiwgc2VsZi5nbG9idmFyKVswXQogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5tYWtlX2ZyYW1lKClbMF0KLQotICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgIHZhcmlhYmxlPXNlbGYucmVjdmFyLAorICAgICAgICBidG4gPSBDaGVja2J1dHRvbigKKyAgICAgICAgICAgICAgICBzZWxmLm1ha2VfZnJhbWUoKVswXSwgdmFyaWFibGU9c2VsZi5yZWN2YXIsCiAgICAgICAgICAgICAgICAgdGV4dD0iUmVjdXJzZSBkb3duIHN1YmRpcmVjdG9yaWVzIikKICAgICAgICAgYnRuLnBhY2soc2lkZT0idG9wIiwgZmlsbD0iYm90aCIpCi0gICAgICAgIGJ0bi5zZWxlY3QoKQogCiAgICAgZGVmIGNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIFNlYXJjaERpYWxvZ0Jhc2UuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKQpAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgICAgIHNlbGYudG9wLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQorICAgICAgICBmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKICAgICAgICAgc2F2ZSA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE91dHB1dFdpbmRvdyhzZWxmLmZsaXN0KQpAQCAtMTMxLDE0ICsxMzAsMTYgQEAKIAogCiBkZWYgX2dyZXBfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBTRUwsIEVORAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIHRleHQgPSBUZXh0KHJvb3QsIGhlaWdodD01KQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKKyAgICB0ZXh0ID0gVGV4dCh0b3AsIGhlaWdodD01KQogICAgIHRleHQucGFjaygpCiAKICAgICBkZWYgc2hvd19ncmVwX2RpYWxvZygpOgpAQCAtMTQ2LDkgKzE0Nyw4IEBACiAgICAgICAgIGdyZXAodGV4dCwgZmxpc3Q9Zmxpc3QpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCiAKLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQorICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKICAgICBidXR0b24ucGFjaygpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaGVscC5weQppbmRleCBhNzAwOGU5Li43N2UwMWEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHAucHkKQEAgLTQsNyArNCw3IEBACiAKIEhlbHAgPT4gQWJvdXQgSURMRTogZGlwbGF5IEFib3V0IElkbGUgZGlhbG9nCiAKLTx0byBiZSBtb3ZlZCBoZXJlIGZyb20gYWJvdXREaWFsb2cucHk+Cis8dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGhlbHBfYWJvdXQucHk+CiAKIAogSGVscCA9PiBJRExFIEhlbHA6IERpc3BsYXkgaGVscC5odG1sIHdpdGggcHJvcGVyIGZvcm1hdHRpbmcuCkBAIC0yNSwxNSArMjUsMTQgQEAKIHNob3dfaWRsZWhlbHAgLSBDcmVhdGUgSGVscFdpbmRvdy4gIENhbGxlZCBpbiBFZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAiIiIKIGZyb20gaHRtbC5wYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNkaXIsIGlzZmlsZSwgam9pbgorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2ZpbGUsIGpvaW4KIGZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIFNjcm9sbGJhciwgTWVudSwgTWVudWJ1dHRvbgotZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCiAKLXVzZV90dGsgPSBGYWxzZSAjIHVudGlsIGF2YWlsYWJsZSB0byBpbXBvcnQKLWlmIHVzZV90dGs6Ci0gICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbgorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIE1lbnUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24sIFNjcm9sbGJhcgorZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiAjIyBBYm91dCBJRExFICMjCiAKQEAgLTE5NywxNSArMTk2LDE4IEBACiAgICAgIkRpc3BsYXkgaHRtbCB0ZXh0LCBzY3JvbGxiYXIsIGFuZCB0b2MuIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZpbGVuYW1lKToKICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCisgICAgICAgICMga2VlcCByZWZlcmVuY2VzIHRvIHdpZGdldHMgZm9yIHRlc3QgYWNjZXNzLgorICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGZbJ2JhY2tncm91bmQnXSA9IHRleHRbJ2JhY2tncm91bmQnXQotICAgICAgICBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgICAgICBzZWxmLnRvYyA9IHRvYyA9IHNlbGYudG9jX21lbnUodGV4dCkKKyAgICAgICAgc2VsZi5zY3JvbGwgPSBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgICAgICB0ZXh0Wyd5c2Nyb2xsY29tbWFuZCddID0gc2Nyb2xsLnNldAorCiAgICAgICAgIHNlbGYucm93Y29uZmlndXJlKDAsIHdlaWdodD0xKQogICAgICAgICBzZWxmLmNvbHVtbmNvbmZpZ3VyZSgxLCB3ZWlnaHQ9MSkgICMgdGV4dAotICAgICAgICBzZWxmLnRvY19tZW51KHRleHQpLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J253JykKLSAgICAgICAgdGV4dC5ncmlkKGNvbHVtbj0xLCByb3c9MCwgc3RpY2t5PSduc2V3JykKLSAgICAgICAgc2Nyb2xsLmdyaWQoY29sdW1uPTIsIHJvdz0wLCBzdGlja3k9J25zJykKKyAgICAgICAgdG9jLmdyaWQocm93PTAsIGNvbHVtbj0wLCBzdGlja3k9J253JykKKyAgICAgICAgdGV4dC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PSduc2V3JykKKyAgICAgICAgc2Nyb2xsLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9J25zJykKIAogICAgIGRlZiB0b2NfbWVudShzZWxmLCB0ZXh0KToKICAgICAgICAgIkNyZWF0ZSB0YWJsZSBvZiBjb250ZW50cyBhcyBkcm9wLWRvd24gbWVudS4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnR4dCBiL0xpYi9pZGxlbGliL2hlbHAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZiZTBiLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2hlbHAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLVRoaXMgZmlsZSwgaWRsZWxpYi9oZWxwLnR4dCBpcyBvdXQtb2YtZGF0ZSBhbmQgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS4KLUl0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwb3NzaWJseSBpbiAzLjYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotW1NlZSB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgKiogVElQUyAqKiBvbiB1c2luZyBJRExFICEhXQotCi1JRExFIGlzIHRoZSBQeXRob24gSURFIGJ1aWx0IHdpdGggdGhlIHRraW50ZXIgR1VJIHRvb2xraXQuCi0KLUlETEUgaGFzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Ci0tY29kZWQgaW4gMTAwJSBwdXJlIFB5dGhvbiwgdXNpbmcgdGhlIHRraW50ZXIgR1VJIHRvb2xraXQKLS1jcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE9TIFgKLS1tdWx0aS13aW5kb3cgdGV4dCBlZGl0b3Igd2l0aCBtdWx0aXBsZSB1bmRvLCBQeXRob24gY29sb3JpemluZywgc21hcnQgaW5kZW50LAotY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwotLVB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hIGludGVyYWN0aXZlIGludGVycHJldGVyKQotLWRlYnVnZ2VyIChub3QgY29tcGxldGUsIGJ1dCB5b3UgY2FuIHNldCBicmVha3BvaW50cywgdmlldyBhbmQgc3RlcCkKLQotTWVudXM6Ci0KLUlETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCi1wb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKLW1lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKLWRvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gCi0KLUZpbGUgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgTmV3IEZpbGUgICAgICAgICAtLSBDcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdwotICAgICAgICBPcGVuLi4uICAgICAgICAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgZmlsZQotICAgICAgICBPcGVuIE1vZHVsZS4uLiAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKLSAgICAgICAgUmVjZW50IEZpbGVzLi4uICAtLSBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKLSAgICAgICAgQ2xhc3MgQnJvd3NlciAgICAtLSBTaG93IGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gY3VycmVudCBmaWxlCi0gICAgICAgIFBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0aG9kcwotICAgICAgICAtLS0KLSAgICAgICAgU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIGhhdmUgYSAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKLQotICAgICAgICBTYXZlIEFzLi4uICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIFNhdmUgQ29weSBBcy4uLiAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBkaWZmZXJlbnQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICAtLS0KLSAgICAgICAgUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENsb3NlICAgICAgICAgICAgLS0gQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotICAgICAgICBFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQotRWRpdCBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotICAgICAgICBSZWRvICAgICAgICAgICAgIC0tIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZWxlY3QgQWxsICAgICAgIC0tIFNlbGVjdCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBlZGl0IGJ1ZmZlcgotICAgICAgICAtLS0KLSAgICAgICAgRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLSAgICAgICAgRmluZCBBZ2FpbiAgICAgICAtLSBSZXBlYXQgbGFzdCBzZWFyY2gKLSAgICAgICAgRmluZCBTZWxlY3Rpb24gICAtLSBTZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHNlbGVjdGlvbgotICAgICAgICBGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0gICAgICAgIFJlcGxhY2UuLi4gICAgICAgLS0gT3BlbiBhIHNlYXJjaC1hbmQtcmVwbGFjZSBkaWFsb2cgYm94Ci0gICAgICAgIEdvIHRvIExpbmUgICAgICAgLS0gQXNrIGZvciBhIGxpbmUgbnVtYmVyIGFuZCBzaG93IHRoYXQgbGluZQotICAgICAgICBFeHBhbmQgV29yZCAgICAgIC0tIEV4cGFuZCB0aGUgd29yZCB5b3UgaGF2ZSB0eXBlZCB0byBtYXRjaCBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdCB0byBnZXQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBleHBhbnNpb24KLSAgICAgICAgU2hvdyBDYWxsdGlwICAgICAtLSBBZnRlciBhbiB1bmNsb3NlZCBwYXJlbnRoZXNpcyBmb3IgYSBmdW5jdGlvbiwgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc21hbGwgd2luZG93IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVyIGhpbnRzCi0gICAgICAgIFNob3cgUGFyZW5zICAgICAgLS0gSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcwotICAgICAgICBTaG93IENvbXBsZXRpb25zIC0tIE9wZW4gYSBzY3JvbGwgd2luZG93IGFsbG93aW5nIHNlbGVjdGlvbiBrZXl3b3JkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhdHRyaWJ1dGVzLiAoc2VlICcqVElQUyonLCBiZWxvdykKLQotRm9ybWF0IE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgSW5kZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIERlZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgbGVmdCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIENvbW1lbnQgT3V0IFJlZ2lvbiAgLS0gSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFRhYmlmeSBSZWdpb24gICAgICAgLS0gVHVybnMgKmxlYWRpbmcqIHN0cmV0Y2hlcyBvZiBzcGFjZXMgaW50byB0YWJzLgotICAgICAgICAgICAgICAgIChOb3RlOiBXZSByZWNvbW1lbmQgdXNpbmcgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKLSAgICAgICAgVW50YWJpZnkgUmVnaW9uICAgICAtLSBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgY29ycmVudCBudW1iZXIgb2Ygc3BhY2VzCi0gICAgICAgIFRvZ2dsZSB0YWJzICAgICAgICAgLS0gT3BlbiBhIGRpYWxvZyB0byBzd2l0Y2ggYmV0d2VlbiBpbmRlbnRpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcyBhbmQgdGFicy4KLSAgICAgICAgTmV3IEluZGVudCBXaWR0aC4uLiAtLSBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24gY29tbXVuaXR5IGlzIDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgIEZvcm1hdCBQYXJhZ3JhcGggICAgLS0gUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUgcGFyYWdyYXBoIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgdG8gbGVzcyB0aGFuIDgwIGNvbHVtbnMuCi0gICAgICAgIC0tLQotICAgICAgICBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIC0tIFJlbW92ZWQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXN0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLQotUnVuIE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2hlY2sgTW9kdWxlIC0tIENoZWNrIHRoZSBzeW50YXggb2YgdGhlIG1vZHVsZSBjdXJyZW50bHkgb3BlbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRvciB3aW5kb3cuICBJZiB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBzYXZlZCBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgotICAgICAgICBSdW4gTW9kdWxlICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBjdXJyZW50bHkgb3BlbiBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBzYXZlZCBJRExFIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLgotCi1TaGVsbCBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAotICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKLQotRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgotICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KLSAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KLQotT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBDb25maWd1cmUgSURMRSAtLSBPcGVuIGEgY29uZmlndXJhdGlvbiBkaWFsb2cuICBGb250cywgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmdzLCBhbmQgY29sb3IgdGhlbWVzIG1heSBiZSBhbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsIEhlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBjYW4gYmUgc3BlY2lmaWVkLiAgT24gT1MgWCwgb3BlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaWFsb2cgYnkgc2VsZWN0aW5nIFByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotCi0gICAgICAgIC0tLQotICAgICAgICBDb2RlIENvbnRleHQgKHRvZ2dsZSkgLS0gT3BlbiBhIHBhbmUgYXQgdGhlIHRvcCBvZiB0aGUgZWRpdCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0IG9mIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gVGhpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBvbmx5IHRoZSBFZGl0b3Igd2luZG93LgotCi1XaW5kb3cgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKLSAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCi0gICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KLSAgICAgICAgLS0tCi0gICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKLSAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSkuCi0KLUhlbHAgTWVudToKLQotICAgICAgICBBYm91dCBJRExFICAtLSBWZXJzaW9uLCBjb3B5cmlnaHQsIGxpY2Vuc2UsIGNyZWRpdHMKLSAgICAgICAgLS0tCi0gICAgICAgIElETEUgSGVscCAgIC0tIERpc3BsYXkgdGhpcyBmaWxlIHdoaWNoIGlzIGEgaGVscCBmaWxlIGZvciBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGluZyB0aGUgbWVudSBvcHRpb25zLCBiYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdGlwcy4KLSAgICAgICAgUHl0aG9uIERvY3MgLS0gQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuICBPciB3aWxsIHN0YXJ0IGEgd2ViIGJyb3dzZXIgYW5kIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgLS0tCi0gICAgICAgIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIG1heSBiZSBhZGRlZCBoZXJlIHdpdGggdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUgR2VuZXJhbCB0YWIuCi0KLUVkaXRvciBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIEVkaXQgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50LiBCcmVha3BvaW50cyBhcmUgb25seSBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGVidWdnZXIgaXMgb3Blbi4KLSAgICAgICAgQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCi0KLVNoZWxsIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gU2hlbGwgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKLQotCi0qKiBUSVBTICoqCi09PT09PT09PT09Ci0KLUFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgotCi0gICAgICAgIFdpbmRvd3MgdXNlcnMgY2FuIEdvb2dsZSBvbiB6b3Blc2hlbGYuY2htIHRvIGFjY2VzcyBab3BlIGhlbHAgZmlsZXMgaW4KLSAgICAgICAgdGhlIFdpbmRvd3MgaGVscCBmb3JtYXQuICBUaGUgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgZmVhdHVyZSBvZiB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0gICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuICBTdXBwbHkgYSBNZW51IEl0ZW0gdGl0bGUsIGFuZCBlbnRlciB0aGUKLSAgICAgICAgbG9jYXRpb24gaW4gdGhlIEhlbHAgRmlsZSBQYXRoIHNsb3Qgb2YgdGhlIE5ldyBIZWxwIFNvdXJjZSBkaWFsb2cuICBVc2UKLSAgICAgICAgaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLSAgICAgICAgYnJvd3NlIGZvciBpdHMgcGF0aCBvbiB5b3VyIG1hY2hpbmUgdXNpbmcgdGhlIEJyb3dzZSBidXR0b24uCi0KLSAgICAgICAgQWxsIHVzZXJzIGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZwotICAgICAgICB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotICAgICAgICBvciByZW1vdmVkIGZyb20gdGhlIEhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyBDb25maWd1cmUgSURMRS4KLQotQmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbjoKLQotICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KLSAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLSAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgotICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgotICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLSAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KLSAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKLSAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAotICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCi0gICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nLgotCi1BdXRvbWF0aWMgaW5kZW50YXRpb246Ci0KLSAgICAgICAgQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcwotICAgICAgICAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzCi0gICAgICAgIChicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0gICAgICAgIGluZGVudGF0aW9uLCBCYWNrc3BhY2UgZGVsZXRlcyB1cCB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gIFRhYgotICAgICAgICBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uCi0gICAgICAgIEluZGVudCBXaWR0aC4gQ3VycmVudGx5IHRhYnMgYXJlIHJlc3RyaWN0ZWQgdG8gZm91ciBzcGFjZXMgZHVlCi0gICAgICAgIHRvIFRjbC9UayBsaW1pdGF0aW9ucy4KLQotICAgICAgICBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KLQotQ29tcGxldGlvbnM6Ci0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCi0gICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0gICAgICAgIGZvciBmaWxlbmFtZXMuCi0KLSAgICAgICAgVGhlIEF1dG9Db21wbGV0ZVdpbmRvdyAoQUNXKSB3aWxsIG9wZW4gYWZ0ZXIgYSBwcmVkZWZpbmVkIGRlbGF5Ci0gICAgICAgIChkZWZhdWx0IGlzIHR3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcwotICAgICAgICB0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotICAgICAgICBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZCB0aGUgQUNXIHdpbGwgb3BlbiBpbW1lZGlhdGVseSBpZiBhIHBvc3NpYmxlCi0gICAgICAgIGNvbnRpbnVhdGlvbiBpcyBmb3VuZC4KLQotICAgICAgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0gICAgICAgIHRhYiB3aWxsIHN1cHBseSB0aGF0IGNvbXBsZXRpb24gd2l0aG91dCBvcGVuaW5nIHRoZSBBQ1cuCi0KLSAgICAgICAgJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdywgYnkgZGVmYXVsdCB0aGUKLSAgICAgICAgQ29udHJvbC1zcGFjZSBrZXlzIHdpbGwgb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0gICAgICAgIHN0cmluZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIE9uIGEKLSAgICAgICAgYmxhbmsgbGluZSwgaXQgd2lsbCBjb250YWluIHRoZSBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLSAgICAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KLQotICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQotICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQotICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCi0gICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKLSAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCi0KLSAgICAgICAgIkhpZGRlbiIgYXR0cmlidXRlcyBjYW4gYmUgYWNjZXNzZWQgYnkgdHlwaW5nIHRoZSBiZWdpbm5pbmcgb2YgaGlkZGVuCi0gICAgICAgIG5hbWUgYWZ0ZXIgYSAnLicsICBlLmcuICdfJy4gIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKLSAgICAgICAgJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgotCi0gICAgICAgIENvbXBsZXRpb25zIGFuZCB0aGUgJ0V4cGFuZCBXb3JkJyBmYWNpbGl0eSBjYW4gc2F2ZSBhIGxvdCBvZiB0eXBpbmchCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLSAgICAgICAgYW4gRWRpdG9yIHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotICAgICAgICBmb3VuZC4gIFJ1biB0aGUgbW9kdWxlIG9uY2Ugd2l0aCB5b3VyIGltcG9ydHMgdG8gY29ycmVjdCB0aGlzCi0gICAgICAgIHNpdHVhdGlvbi4gIE5vdGUgdGhhdCBJRExFIGl0c2VsZiBwbGFjZXMgcXVpdGUgYSBmZXcgbW9kdWxlcyBpbgotICAgICAgICBzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgotCi0gICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Ci0gICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKLSAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCi0gICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCi0KLVB5dGhvbiBTaGVsbCB3aW5kb3c6Ci0KLSAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCi0gICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgotICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgotCi0gICAgQ29tbWFuZCBoaXN0b3J5OgotCi0gICAgICAgIEFsdC1wIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uIE9TIFgKLSAgICAgICAgdXNlIENvbnRyb2wtcC4KLSAgICAgICAgQWx0LW4gcmV0cmlldmVzIG5leHQuIE9uIE9TIFggdXNlIENvbnRyb2wtbi4KLSAgICAgICAgUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQotICAgIFN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0gICAgICAgIG9jY2FzaW9uYWxseSBzZWUgdW5jb2xvcml6ZWQgdGV4dC4gIFRvIGNoYW5nZSB0aGUgY29sb3IKLSAgICAgICAgc2NoZW1lLCB1c2UgdGhlIENvbmZpZ3VyZSBJRExFIC8gSGlnaGxpZ2h0aW5nIGRpYWxvZy4KLQotICAgIFB5dGhvbiBkZWZhdWx0IHN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgS2V5d29yZHMgICAgICAgIG9yYW5nZQotICAgICAgICBCdWlsdGlucyAgICAgICAgcm95YWwgcHVycGxlCi0gICAgICAgIFN0cmluZ3MgICAgICAgICBncmVlbgotICAgICAgICBDb21tZW50cyAgICAgICAgcmVkCi0gICAgICAgIERlZmluaXRpb25zICAgICBibHVlCi0KLSAgICBTaGVsbCBkZWZhdWx0IGNvbG9yczoKLQotICAgICAgICBDb25zb2xlIG91dHB1dCAgYnJvd24KLSAgICAgICAgc3Rkb3V0ICAgICAgICAgIGJsdWUKLSAgICAgICAgc3RkZXJyICAgICAgICAgIHJlZAotICAgICAgICBzdGRpbiAgICAgICAgICAgYmxhY2sKLQotT3RoZXIgcHJlZmVyZW5jZXM6Ci0KLSAgICAgICAgVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuCi0gICAgICAgIGJlIGNoYW5nZWQgdmlhIHRoZSBDb25maWd1cmUgSURMRSBtZW51IG9wdGlvbi4gIEJlIHN1cmUgdG8gbm90ZSB0aGF0Ci0gICAgICAgIGtleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCi0gICAgICAgIGFkZGl0aW9uIGEgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9tIGtleSBzZXQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUga2V5cyB0YWIuCi0KLUNvbW1hbmQgbGluZSB1c2FnZToKLQotICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgotCi0gICAgICAgIGlkbGUucHkgWy1jIGNvbW1hbmRdIFstZF0gWy1lXSBbLXNdIFstdCB0aXRsZV0gW2FyZ10gLi4uCi0KLSAgICAgICAgLWMgY29tbWFuZCAgcnVuIHRoaXMgY29tbWFuZAotICAgICAgICAtZCAgICAgICAgICBlbmFibGUgZGVidWdnZXIKLSAgICAgICAgLWUgICAgICAgICAgZWRpdCBtb2RlOyBhcmd1bWVudHMgYXJlIGZpbGVzIHRvIGJlIGVkaXRlZAotICAgICAgICAtcyAgICAgICAgICBydW4gJElETEVTVEFSVFVQIG9yICRQWVRIT05TVEFSVFVQIGZpcnN0Ci0gICAgICAgIC10IHRpdGxlICAgIHNldCB0aXRsZSBvZiBzaGVsbCB3aW5kb3cKLQotICAgICAgICBJZiB0aGVyZSBhcmUgYXJndW1lbnRzOgotICAgICAgICAxLiBJZiAtZSBpcyB1c2VkLCBhcmd1bWVudHMgYXJlIGZpbGVzIG9wZW5lZCBmb3IgZWRpdGluZyBhbmQgc3lzLmFyZ3YKLSAgICAgICAgICAgcmVmbGVjdHMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gSURMRSBpdHNlbGYuCi0gICAgICAgIDIuIE90aGVyd2lzZSwgaWYgLWMgaXMgdXNlZCwgYWxsIGFyZ3VtZW50cyBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSwgd2l0aCBzeXMuYXJndlswXSBzZXQgdG8gLWMuCi0gICAgICAgIDMuIE90aGVyd2lzZSwgaWYgbmVpdGhlciAtZSBub3IgLWMgaXMgdXNlZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEKLSAgICAgICAgICAgc2NyaXB0IHdoaWNoIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dICBhbmQgc3lzLmFyZ3ZbMF0gc2V0IHRvIHRoZSBzY3JpcHQgbmFtZS4gIElmIHRoZQotICAgICAgICAgICBzY3JpcHQgbmFtZSBpcyAtLCBubyBzY3JpcHQgaXMgZXhlY3V0ZWQgYnV0IGFuIGludGVyYWN0aXZlIFB5dGhvbgotICAgICAgICAgICBzZXNzaW9uIGlzIHN0YXJ0ZWQ7IHRoZSBhcmd1bWVudHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiBzeXMuYXJndi4KLQotUnVubmluZyB3aXRob3V0IGEgc3VicHJvY2VzczogKERFUFJFQ0FURUQgaW4gUHl0aG9uIDMuNCBzZWUgSXNzdWUgMTYxMjMpCi0KLSAgICAgICAgSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotICAgICAgICBzaW5nbGUgcHJvY2VzcyBhbmQgd2lsbCBub3QgY3JlYXRlIHRoZSBzdWJwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlIFJQQwotICAgICAgICBQeXRob24gZXhlY3V0aW9uIHNlcnZlci4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiBQeXRob24gY2Fubm90IGNyZWF0ZQotICAgICAgICB0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0gICAgICAgIGluIHRoaXMgbW9kZSB1c2VyIGNvZGUgaXMgbm90IGlzb2xhdGVkIGZyb20gSURMRSBpdHNlbGYuICBBbHNvLCB0aGUKLSAgICAgICAgZW52aXJvbm1lbnQgaXMgbm90IHJlc3RhcnRlZCB3aGVuIFJ1bi9SdW4gTW9kdWxlIChGNSkgaXMgc2VsZWN0ZWQuICBJZgotICAgICAgICB5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotICAgICAgICByZS1pbXBvcnQgYW55IHNwZWNpZmljIGl0ZW1zIChlLmcuIGZyb20gZm9vIGltcG9ydCBiYXopIGlmIHRoZSBjaGFuZ2VzCi0gICAgICAgIGFyZSB0byB0YWtlIGVmZmVjdC4gIEZvciB0aGVzZSByZWFzb25zLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHJ1biBJRExFCi0gICAgICAgIHdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCi0KLUV4dGVuc2lvbnM6Ci0KLSAgICAgICAgSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotICAgICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotICAgICAgICBUaGUgZGVmYXVsdCBleHRlbnNpb25zIGFyZSBjdXJyZW50bHk6Ci0KLSAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKLSAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCi0gICAgICAgICAgICAgICAgWm9vbUhlaWdodAotICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKLSAgICAgICAgICAgICAgICBDYWxsVGlwcwotICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKLSAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKLSAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CmluZGV4IGE4Zjc1ZDIuLjA3MWJkM2UgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKQEAgLTEsMTEgKzEsMTMgQEAKICIiIkFib3V0IERpYWxvZyBmb3IgSURMRQogCiAiIiIKLQogaW1wb3J0IG9zCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgorCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworCiAKIGNsYXNzIEFib3V0RGlhbG9nKFRvcGxldmVsKToKICAgICAiIiJNb2RhbCBhYm91dCBkaWFsb2cgZm9yIGlkbGUKQEAgLTEzNSwxNyArMTM3LDE4IEBACiAgICAgZGVmIGRpc3BsYXlfcHJpbnRlcl90ZXh0KHNlbGYsIHRpdGxlLCBwcmludGVyKToKICAgICAgICAgcHJpbnRlci5fUHJpbnRlcl9fc2V0dXAoKQogICAgICAgICB0ZXh0ID0gJ1xuJy5qb2luKHByaW50ZXIuX1ByaW50ZXJfX2xpbmVzKQotICAgICAgICB0ZXh0Vmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCisgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKIAogICAgIGRlZiBkaXNwbGF5X2ZpbGVfdGV4dChzZWxmLCB0aXRsZSwgZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksIGZpbGVuYW1lKQotICAgICAgICB0ZXh0Vmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKKyAgICAgICAgdGV4dHZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCiAKICAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBhYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscF9hYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihBYm91dERpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGlzdG9yeS5weQppbmRleCAwNzhhZjI5Li41NmY1M2EwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CkBAIC0xLDExICsxLDEyIEBACiAiSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20gd2l0aCBIaXN0b3J5IGNsYXNzIgogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgSGlzdG9yeToKICAgICAnJycgSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20uCiAKLSAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIFB5U2hlbGwucmVzZXRvdXRwdXQpLgorICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gcHlzaGVsbC5yZXNldG91dHB1dCkuCiAgICAgZmV0Y2ggLSBGZXRjaCBzdG9yZWQgc3RhdGVtZW50IG1hdGNoaW5nIHByZWZpeCBhbHJlYWR5IGVudGVyZWQuCiAgICAgaGlzdG9yeV9uZXh0IC0gQm91bmQgdG8gPDxoaXN0b3J5LW5leHQ+PiBldmVudCAoZGVmYXVsdCBBbHQtTikuCiAgICAgaGlzdG9yeV9wcmV2IC0gQm91bmQgdG8gPDxoaXN0b3J5LXByZXY+PiBldmVudCAoZGVmYXVsdCBBbHQtUCkuCkBAIC05OSw2ICsxMDAsNyBAQAogICAgICAgICBzZWxmLnBvaW50ZXIgPSBOb25lCiAgICAgICAgIHNlbGYucHJlZml4ID0gTm9uZQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgotICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaWRsZWhpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CmluZGV4IDc3Y2IwNTcuLjQ1MGE3MDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CkBAIC00LDExICs0LDEwIEBACiBwcm9wZXIgaW5kZW50YXRpb24gb2YgY29kZS4gIEh5cGVyUGFyc2VyIGdpdmVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KIHRoZSBzdHJ1Y3R1cmUgb2YgY29kZS4KICIiIgotCi1pbXBvcnQgc3RyaW5nCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCitpbXBvcnQgc3RyaW5nCiAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQogCiAjIGFsbCBBU0NJSSBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBfQVNDSUlfSURfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iKQpAQCAtMzAsNyArMjksNyBAQAogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBlZGl0d2luLnRleHQKIAotICAgICAgICBwYXJzZXIgPSBQeVBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQorICAgICAgICBwYXJzZXIgPSBweXBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQogCiAgICAgICAgIGRlZiBpbmRleDJsaW5lKGluZGV4KToKICAgICAgICAgICAgIHJldHVybiBpbnQoZmxvYXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGUucHkKaW5kZXggMTQxNTM0ZC4uNDg1ZDVhNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorCiAjIEVuYWJsZSBydW5uaW5nIElETEUgd2l0aCBpZGxlbGliIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uLgogIyBUaGlzIHdhcyBvbmNlIHVzZWQgdG8gcnVuIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIElETEUuCiAjIEJlY2F1c2UgUEVQIDQzNCBkZWNsYXJlZCBpZGxlLnB5IGEgcHVibGljIGludGVyZmFjZSwKQEAgLTksNSArMTAsNSBAQAogaWYgaWRsZWxpYl9kaXIgbm90IGluIHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmluc2VydCgwLCBpZGxlbGliX2RpcikKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5dyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CmluZGV4IDE0MmNiMzIuLmU3M2MwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHl3CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CkBAIC0xLDEwICsxLDEwIEBACiB0cnk6Ci0gICAgaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAorICAgIGltcG9ydCBpZGxlbGliLnB5c2hlbGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIFB5U2hlbGwgaXMgb24gc3lzLnBhdGg6Ci0gICAgZnJvbSAuIGltcG9ydCBQeVNoZWxsCisgICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBweXNoZWxsIGlzIG9uIHN5cy5wYXRoOgorICAgIGZyb20gLiBpbXBvcnQgcHlzaGVsbAogICAgIGltcG9ydCBvcwotICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKFB5U2hlbGwuX19maWxlX18pKQorICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHB5c2hlbGwuX19maWxlX18pKQogICAgIGlmIGlkbGVkaXIgIT0gb3MuZ2V0Y3dkKCk6CiAgICAgICAgICMgV2UncmUgbm90IGluIHRoZSBJRExFIGRpcmVjdG9yeSwgaGVscCB0aGUgc3VicHJvY2VzcyBmaW5kIHJ1bi5weQogICAgICAgICBweXBhdGggPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OUEFUSCcsICcnKQpAQCAtMTIsNiArMTIsNiBAQAogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gcHlwYXRoICsgJzonICsgaWRsZWRpcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gaWRsZWRpcgotICAgIFB5U2hlbGwubWFpbigpCisgICAgcHlzaGVsbC5tYWluKCkKIGVsc2U6Ci0gICAgaWRsZWxpYi5QeVNoZWxsLm1haW4oKQorICAgIGlkbGVsaWIucHlzaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQppbmRleCA4NDVjOTJkLi5hZDA2N2I0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CkBAIC0xLDYgKzEsOCBAQAogJycnaWRsZWxpYi5pZGxlX3Rlc3QgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlLAogd2hpY2ggdGVzdHMgdGhlIElETEUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgc3RkbGliIHRlc3Qgc3VpdGUuCiBSdW4gSURMRSB0ZXN0cyBhbG9uZSB3aXRoICJweXRob24gLW0gdGVzdC50ZXN0X2lkbGUiLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCisKIFRoaXMgcGFja2FnZSBhbmQgaXRzIGNvbnRhaW5lZCBtb2R1bGVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhbmQKIGFueSBkaXJlY3QgdXNlIGlzIGF0IHlvdXIgb3duIHJpc2suCiAnJycKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQppbmRleCA1OGU2MmNiLi42ZjY3NmFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CkBAIC01OSwxOSArNTksMjAgQEAKIAogCiBNb2R1bGVzIGFuZCBjbGFzc2VzIG5vdCBiZWluZyB0ZXN0ZWQgYXQgdGhlIG1vbWVudDoKLVB5U2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdwotRGVidWdnZXIuRGVidWdnZXIKLUF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3cKLU91dHB1dFdpbmRvdy5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQorcHlzaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93CitkZWJ1Z2dlci5EZWJ1Z2dlcgorYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93CitvdXR3aW4uT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKICcnJwogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQotZnJvbSBpZGxlbGliLm1hY29zeFN1cHBvcnQgaW1wb3J0IF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK3RrLk5vRGVmYXVsdFJvb3QoKQogCiBBYm91dERpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2Fib3V0RGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnYWJvdXREaWFsb2cgdGVzdCcsCisgICAgJ2ZpbGUnOiAnaGVscF9hYm91dCcsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2hlbHBfYWJvdXQgdGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsCiAgICAgICAgICAgICAgfSwKICAgICAnbXNnJzogIlRlc3QgZXZlcnkgYnV0dG9uLiBFbnN1cmUgUHl0aG9uLCBUSyBhbmQgSURMRSB2ZXJzaW9ucyAiCkBAIC03OSwxNCArODAsMTQgQEAKICAgICB9CiAKIF9jYWxsdGlwX3dpbmRvd19zcGVjID0gewotICAgICdmaWxlJzogJ0NhbGxUaXBXaW5kb3cnLAorICAgICdmaWxlJzogJ2NhbGx0aXBfdycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlR5cGluZyAnKCcgc2hvdWxkIGRpc3BsYXkgYSBjYWxsdGlwLlxuIgogICAgICAgICAgICAiVHlwaW5nICcpIHNob3VsZCBoaWRlIHRoZSBjYWxsdGlwLlxuIgogICAgIH0KIAogX2NsYXNzX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDbGFzc0Jyb3dzZXInLAorICAgICdmaWxlJzogJ2Jyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJJbnNwZWN0IG5hbWVzIG9mIG1vZHVsZSwgY2xhc3Mod2l0aCBzdXBlcmNsYXNzIGlmICIKICAgICAgICAgICAgImFwcGxpY2FibGUpLCBtZXRob2RzIGFuZCBmdW5jdGlvbnMuXG5Ub2dnbGUgbmVzdGVkIGl0ZW1zLlxuIgpAQCAtOTUsNyArOTYsNyBAQAogICAgIH0KIAogX2NvbG9yX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NvbG9yRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICdjb2xvcml6ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgdGV4dCBpcyBzYW1wbGUgUHl0aG9uIGNvZGUuXG4iCiAgICAgICAgICAgICJFbnN1cmUgY29tcG9uZW50cyBsaWtlIGNvbW1lbnRzLCBrZXl3b3JkcywgYnVpbHRpbnMsXG4iCkBAIC0xMDQsNyArMTA1LDcgQEAKICAgICB9CiAKIENvbmZpZ0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnZGlhbG9nJywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnQ29uZmlnRGlhbG9nVGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsfSwKICAgICAnbXNnJzogIklETEUgcHJlZmVyZW5jZXMgZGlhbG9nLlxuIgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICMgVE9ETyBJbXByb3ZlIG1lc3NhZ2UKIF9keW5fb3B0aW9uX21lbnVfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdkeW5PcHRpb25NZW51V2lkZ2V0JywKKyAgICAnZmlsZSc6ICdkeW5vcHRpb24nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJTZWxlY3Qgb25lIG9mIHRoZSBtYW55IG9wdGlvbnMgaW4gdGhlICdvbGQgb3B0aW9uIHNldCcuXG4iCiAgICAgICAgICAgICJDbGljayB0aGUgYnV0dG9uIHRvIGNoYW5nZSB0aGUgb3B0aW9uIHNldC5cbiIKQEAgLTEzMCwzOSArMTMxLDE1IEBACiAKICMgVE9ETyBlZGl0IHdyYXBwZXIKIF9lZGl0b3Jfd2luZG93X3NwZWMgPSB7Ci0gICAnZmlsZSc6ICdFZGl0b3JXaW5kb3cnLAorICAgJ2ZpbGUnOiAnZWRpdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBlZGl0b3IgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuIgogICAgICAgICAgICAiQmVzdCB0byBjbG9zZSBlZGl0b3IgZmlyc3QuIgogICAgIH0KIAotR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdTZWN0aW9uTmFtZURpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzonR2V0IE5hbWUnLAotICAgICAgICAgICAgICdtZXNzYWdlJzonRW50ZXIgc29tZXRoaW5nJywKLSAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiQWZ0ZXIgdGhlIHRleHQgZW50ZXJlZCB3aXRoIFtPa10gaXMgc3RyaXBwZWQsIDxub3RoaW5nPiwgIgotICAgICAgICAgICAiJ2FiYycsIG9yIG1vcmUgdGhhdCAzMCBjaGFycyBhcmUgZXJyb3JzLlxuIgotICAgICAgICAgICAiQ2xvc2UgJ0dldCBOYW1lJyB3aXRoIGEgdmFsaWQgZW50cnkgKHByaW50ZWQgdG8gU2hlbGwpLCAiCi0gICAgICAgICAgICJbQ2FuY2VsXSwgb3IgW1hdIiwKLSAgICB9Ci0KLUdldEhlbHBTb3VyY2VEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdIZWxwU291cmNlRWRpdCcsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0dldCBoZWxwc291cmNlJywKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiAiCi0gICAgICAgICAgICI8bm90aGluZz4gYW5kIG1vcmUgdGhhbiAzMCBjaGFycyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCi0gICAgICAgICAgICI8bm90aGluZz4sIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKLSAgICAgICAgICAgIlRlc3QgZm9yIGluY29tcGxldGUgd2ViIGFkZHJlc3MgZm9yIGhlbHAgZmlsZSBwYXRoLlxuIgotICAgICAgICAgICAiQSB2YWxpZCBlbnRyeSB3aWxsIGJlIHByaW50ZWQgdG8gc2hlbGwgd2l0aCBbMGtdLlxuIgotICAgICAgICAgICAiW0NhbmNlbF0gd2lsbCBwcmludCBOb25lIHRvIHNoZWxsIiwKLSAgICB9Ci0KICMgVXBkYXRlIG9uY2UgaXNzdWUyMTUxOSBpcyByZXNvbHZlZC4KIEdldEtleXNEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdrZXliaW5kaW5nRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdfa2V5JywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCBrZXliaW5kaW5ncycsCiAgICAgICAgICAgICAgJ2FjdGlvbic6ICdmaW5kLWFnYWluJywKICAgICAgICAgICAgICAnY3VycmVudEtleVNlcXVlbmNlcyc6IFsnJ10gLApAQCAtMTc3LDcgKzE1NCw3IEBACiAgICAgfQogCiBfZ3JlcF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdHcmVwRGlhbG9nJywKKyAgICAnZmlsZSc6ICdncmVwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTaG93IEdyZXBEaWFsb2cnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdGhlIHZhcmlvdXMgJ0ZpbmQtaW4tZmlsZXMnIGZ1bmN0aW9ucy5cbiIKQEAgLTE4Niw4ICsxNjMsMjQgQEAKICAgICAgICAgICAgInNob3VsZCBvcGVuIHRoYXQgZmlsZSBcbmluIGEgbmV3IEVkaXRvcldpbmRvdy4iCiAgICAgfQogCitIZWxwU291cmNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdIZWxwIG5hbWUgYW5kIHNvdXJjZScsCisgICAgICAgICAgICAgJ21lbnVpdGVtJzogJ3Rlc3QnLAorICAgICAgICAgICAgICdmaWxlcGF0aCc6IF9fZmlsZV9fLAorICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiIKKyAgICAgICAgICAgIicnLCA+IHRoYW4gMzAgY2hhcnMsIGFuZCAnYWJjJyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCisgICAgICAgICAgICInJyBhbmQgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgorICAgICAgICAgICAiQW55IHVybCAoJ3d3dy4uLicsICdodHRwLi4uJykgaXMgYWNjZXB0ZWQuXG4iCisgICAgICAgICAgICJUZXN0IEJyb3dzZSB3aXRoIGFuZCB3aXRob3V0IHBhdGgsIGFzIGNhbm5vdCB1bml0dGVzdC5cbiIKKyAgICAgICAgICAgIltPa10gb3IgPFJldHVybj4gcHJpbnRzIHZhbGlkIGVudHJ5IHRvIHNoZWxsXG4iCisgICAgICAgICAgICJbQ2FuY2VsXSBvciA8RXNjYXBlPiBwcmludHMgTm9uZSB0byBzaGVsbCIKKyAgICB9CisKIF9pb19iaW5kaW5nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnSU9CaW5kaW5nJywKKyAgICAnZmlsZSc6ICdpb21lbnUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IHRoZSBmb2xsb3dpbmcgYmluZGluZ3MuXG4iCiAgICAgICAgICAgICI8Q29udHJvbC1vPiB0byBvcGVuIGZpbGUgZnJvbSBkaWFsb2cuXG4iCkBAIC0yMDAsNyArMTkzLDcgQEAKICAgICB9CiAKIF9tdWx0aV9jYWxsX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlDYWxsJywKKyAgICAnZmlsZSc6ICdtdWx0aWNhbGwnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgZm9sbG93aW5nIGFjdGlvbnMgc2hvdWxkIHRyaWdnZXIgYSBwcmludCB0byBjb25zb2xlIG9yIElETEUiCiAgICAgICAgICAgICIgU2hlbGwuXG5FbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgdGV4dCBhcmVhLCBrZXkgZW50cnksICIKQEAgLTIxMCwxNCArMjAzLDE0IEBACiAgICAgfQogCiBfbXVsdGlzdGF0dXNfYmFyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlTdGF0dXNCYXInLAorICAgICdmaWxlJzogJ3N0YXR1c2JhcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkVuc3VyZSBwcmVzZW5jZSBvZiBtdWx0aS1zdGF0dXMgYmFyIGJlbG93IHRleHQgYXJlYS5cbiIKICAgICAgICAgICAgIkNsaWNrICdVcGRhdGUgU3RhdHVzJyB0byBjaGFuZ2UgdGhlIG11bHRpLXN0YXR1cyB0ZXh0IgogICAgIH0KIAogX29iamVjdF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnT2JqZWN0QnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnZGVidWdvYmonLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJEb3VibGUgY2xpY2sgb24gaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgogICAgICAgICAgICAiQXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0cyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiAiCkBAIC0yMjUsNyArMjE4LDcgQEAKICAgICB9CiAKIF9wYXRoX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQYXRoQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAncGF0aGJyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGZvciBjb3JyZWN0IGRpc3BsYXkgb2YgYWxsIHBhdGhzIGluIHN5cy5wYXRoLlxuIgogICAgICAgICAgICAiVG9nZ2xlIG5lc3RlZCBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCkBAIC0yMzQsNyArMjI3LDcgQEAKICAgICB9CiAKIF9wZXJjb2xhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGVyY29sYXRvcicsCisgICAgJ2ZpbGUnOiAncGVyY29sYXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZXJlIGFyZSB0d28gdHJhY2VycyB3aGljaCBjYW4gYmUgdG9nZ2xlZCB1c2luZyBhIGNoZWNrYm94LlxuIgogICAgICAgICAgICAiVG9nZ2xpbmcgYSB0cmFjZXIgJ29uJyBieSBjaGVja2luZyBpdCBzaG91bGQgcHJpbnQgdHJhY2VyIgpAQCAtMjQ0LDggKzIzNywyMCBAQAogICAgICAgICAgICAiVGVzdCBmb3IgYWN0aW9ucyBsaWtlIHRleHQgZW50cnksIGFuZCByZW1vdmFsLiIKICAgICB9CiAKK1F1ZXJ5X3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdRdWVyeScsCisgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRW50ZXIgc29tZXRoaW5nJywKKyAgICAgICAgICAgICAndGV4dDAnOiAnR28nLAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIHdpdGggPFJldHVybj4gb3IgW09rXS4gIFByaW50IHZhbGlkIGVudHJ5IHRvIFNoZWxsXG4iCisgICAgICAgICAgICJCbGFuayBsaW5lLCBhZnRlciBzdHJpcHBpbmcsIGlzIGlnbm9yZWRcbiIKKyAgICAgICAgICAgIkNsb3NlIGRpYWxvZyB3aXRoIHZhbGlkIGVudHJ5LCA8RXNjYXBlPiwgW0NhbmNlbF0sIFtYXSIKKyAgICB9CisKKwogX3JlcGxhY2VfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUmVwbGFjZURpYWxvZycsCisgICAgJ2ZpbGUnOiAncmVwbGFjZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnUmVwbGFjZScgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHJlcGxhY2Ugb3B0aW9ucyBpbiB0aGUgJ1JlcGxhY2UgZGlhbG9nJy5cbiIKQEAgLTI1MywxNSArMjU4LDIyIEBACiAgICAgfQogCiBfc2VhcmNoX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1NlYXJjaERpYWxvZycsCisgICAgJ2ZpbGUnOiAnc2VhcmNoJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTZWFyY2gnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyBzZWFyY2ggb3B0aW9ucyBpbiB0aGUgJ1NlYXJjaCBkaWFsb2cnLlxuIgogICAgICAgICAgICAiQ2xpY2sgW0Nsb3NlXSBvciBbWF0gdG8gY2xvc2UgdGhlICdTZWFyY2ggRGlhbG9nJy4iCiAgICAgfQogCitfc2VhcmNoYmFzZV9zcGVjID0geworICAgICdmaWxlJzogJ3NlYXJjaGJhc2UnLAorICAgICdrd2RzJzoge30sCisgICAgJ21zZyc6ICJDaGVjayB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFzZSBzZWFyY2ggZGlhbG9nXG4iCisgICAgICAgICAgICJJdHMgb25seSBhY3Rpb24gaXMgdG8gY2xvc2UuIgorICAgIH0KKwogX3Njcm9sbGVkX2xpc3Rfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTY3JvbGxlZExpc3QnLAorICAgICdmaWxlJzogJ3Njcm9sbGVkbGlzdCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIllvdSBzaG91bGQgc2VlIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zXG4iCiAgICAgICAgICAgICJTZWxlY3RpbmcgKGNsaWNraW5nKSBvciBkb3VibGUgY2xpY2tpbmcgYW4gaXRlbSAiCkBAIC0yNzcsNyArMjg5LDcgQEAKICAgICB9CiAKIF9zdGFja192aWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTdGFja1ZpZXdlcicsCisgICAgJ2ZpbGUnOiAnc3RhY2t2aWV3ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJBIHN0YWNrdHJhY2UgZm9yIGEgTmFtZUVycm9yIGV4Y2VwdGlvbi5cbiIKICAgICAgICAgICAgIkV4cGFuZCAnaWRsZWxpYiAuLi4nIGFuZCAnPGxvY2Fscz4nLlxuIgpAQCAtMjk1LDggKzMwNyw4IEBACiAgICAgfQogCiBUZXh0Vmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAndGV4dFZpZXcnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHRWaWV3JywKKyAgICAnZmlsZSc6ICd0ZXh0dmlldycsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dHZpZXcnLAogICAgICAgICAgICAgICd0ZXh0JzonVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy5cbicqMzUsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRleHQuXG4iCkBAIC0zMDQsMjEgKzMxNiwyMSBAQAogICAgICB9CiAKIF90b29sdGlwX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVG9vbFRpcCcsCisgICAgJ2ZpbGUnOiAndG9vbHRpcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlBsYWNlIG1vdXNlIGN1cnNvciBvdmVyIGJvdGggdGhlIGJ1dHRvbnNcbiIKICAgICAgICAgICAgIkEgdG9vbHRpcCBzaG91bGQgYXBwZWFyIHdpdGggc29tZSB0ZXh0LiIKICAgICB9CiAKIF90cmVlX3dpZGdldF9zcGVjID0gewotICAgICdmaWxlJzogJ1RyZWVXaWRnZXQnLAorICAgICdmaWxlJzogJ3RyZWUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgY2FudmFzIGlzIHNjcm9sbGFibGUuXG4iCiAgICAgICAgICAgICJDbGljayBvbiBmb2xkZXJzIHVwdG8gdG8gdGhlIGxvd2VzdCBsZXZlbC4iCiAgICAgfQogCiBfdW5kb19kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdVbmRvRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICd1bmRvJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgW1VuZG9dIHRvIHVuZG8gYW55IGFjdGlvbi5cbiIKICAgICAgICAgICAgIkNsaWNrIFtSZWRvXSB0byByZWRvIGFueSBhY3Rpb24uXG4iCkBAIC0zMjcsNyArMzM5LDcgQEAKICAgICB9CiAKIF93aWRnZXRfcmVkaXJlY3Rvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1dpZGdldFJlZGlyZWN0b3InLAorICAgICdmaWxlJzogJ3JlZGlyZWN0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFdmVyeSB0ZXh0IGluc2VydCBzaG91bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4iCiAgICAgICAgICAgICJvciB0aGUgSURMRSBzaGVsbC4iCkBAIC0zMzcsMTQgKzM0OSwxMyBAQAogICAgIHJvb3QgPSB0ay5UaygpCiAgICAgcm9vdC50aXRsZSgnSURMRSBodGVzdCcpCiAgICAgcm9vdC5yZXNpemFibGUoMCwgMCkKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAKICAgICAjIGEgc2Nyb2xsYWJsZSBMYWJlbCBsaWtlIGNvbnN0YW50IHdpZHRoIHRleHQgd2lkZ2V0LgogICAgIGZyYW1lTGFiZWwgPSB0ay5GcmFtZShyb290LCBwYWR4PTEwKQogICAgIGZyYW1lTGFiZWwucGFjaygpCiAgICAgdGV4dCA9IHRrLlRleHQoZnJhbWVMYWJlbCwgd3JhcD0nd29yZCcpCiAgICAgdGV4dC5jb25maWd1cmUoYmc9cm9vdC5jZ2V0KCdiZycpLCByZWxpZWY9J2ZsYXQnLCBoZWlnaHQ9NCwgd2lkdGg9NzApCi0gICAgc2Nyb2xsYmFyID0gdGsuU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICBzY3JvbGxiYXIgPSBTY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgIHRleHQuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNjcm9sbGJhci5zZXQpCiAgICAgc2Nyb2xsYmFyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JywgZXhwYW5kPUZhbHNlKQogICAgIHRleHQucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKQpAQCAtMzY1LDExICszNzYsMTEgQEAKICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihtb2QsIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKCh0ZXN0X3NwZWMsIHRlc3QpKQogCi0gICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKCcnKQorICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1Zhcihyb290KQogICAgIGNhbGxhYmxlX29iamVjdCA9IE5vbmUKICAgICB0ZXN0X2t3ZHMgPSBOb25lCiAKLSAgICBkZWYgbmV4dCgpOgorICAgIGRlZiBuZXh0X3Rlc3QoKToKIAogICAgICAgICBub25sb2NhbCB0ZXN0X25hbWUsIGNhbGxhYmxlX29iamVjdCwgdGVzdF9rd2RzCiAgICAgICAgIGlmIGxlbih0ZXN0X2xpc3QpID09IDE6CkBAIC0zODQsMjAgKzM5NSwyNiBAQAogICAgICAgICB0ZXh0Lmluc2VydCgiMS4wIix0ZXN0X3NwZWNbJ21zZyddKQogICAgICAgICB0ZXh0LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKSAjIHByZXNlcnZlIHJlYWQtb25seSBwcm9wZXJ0eQogCi0gICAgZGVmIHJ1bl90ZXN0KCk6CisgICAgZGVmIHJ1bl90ZXN0KF89Tm9uZSk6CiAgICAgICAgIHdpZGdldCA9IGNhbGxhYmxlX29iamVjdCgqKnRlc3Rfa3dkcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJpbnQod2lkZ2V0LnJlc3VsdCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgZGVmIGNsb3NlKF89Tm9uZSk6CisgICAgICAgIHJvb3QuZGVzdHJveSgpCisKKyAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0X3Rlc3QpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHQpCiAgICAgbmV4dF9idXR0b24ucGFjaygpCisgICAgbmV4dF9idXR0b24uZm9jdXNfc2V0KCkKKyAgICByb290LmJpbmQoJzxLZXktUmV0dXJuPicsIHJ1bl90ZXN0KQorICAgIHJvb3QuYmluZCgnPEtleS1Fc2NhcGU+JywgY2xvc2UpCiAKLSAgICBuZXh0KCkKLQorICAgIG5leHRfdGVzdCgpCiAgICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQppbmRleCAxNjcyYTM0Li5jN2I0OWVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogCiBjbGFzcyBFZGl0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdyBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBlZGl0b3IuRWRpdG9yV2luZG93IGNsYXNzLgogICAgICcnJwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgc2VsZi50ZXh0ID0gVGV4dCgpCkBAIC00Niw3ICs0Niw3IEBACiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBVbmRvRGVsZWdhdG9yLFVuZG9EZWxlZ2F0b3IgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgdW5kby5VbmRvRGVsZWdhdG9yIGNsYXNzLgogICAgICcnJwogICAgICMgQSByZWFsIHVuZG8gYmxvY2sgaXMgb25seSBuZWVkZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CmluZGV4IDVmYzg5OWQuLmYzZjJkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKQEAgLTEsOSArMSwxMyBAQAorJycnIFRlc3QgYXV0b2NvbXBsZXRlIGFuZCBhdXRvY29tcGxlX3cKKworQ292ZXJhZ2Ugb2YgYXV0b2NvbXBsZTogNTYlCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiAKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZSBhcyBhYwotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlV2luZG93IGFzIGFjdworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlIGFzIGFjCitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGVfdyBhcyBhY3cKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IEV2ZW50CiAKQEAgLTkxLDYgKzk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQogICAgICAgICBkZWwgZXYubWNfc3RhdGUKIAorICAgICAgICAjIFRlc3QgdGhhdCB0YWIgYWZ0ZXIgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnICAgICAgICAiIiJEb2NzdHJpbmcuXG4gICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCisgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQorCiAgICAgICAgICMgSWYgYXV0b2NvbXBsZXRlIHdpbmRvdyBpcyBvcGVuLCBjb21wbGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ3JlLicpCiAgICAgICAgICMgVGhpcyBtdXN0IGNhbGwgYXV0b2NvbXBsZXRlLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKaW5kZXggZDJhMzE1Ni4uYWU4MTg2YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5BdXRvRXhwYW5kIiIiCisiIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmF1dG9leHBhbmQiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCiAjZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0Ci1mcm9tIGlkbGVsaWIuQXV0b0V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAorZnJvbSBpZGxlbGliLmF1dG9leHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKIAogCiBjbGFzcyBEdW1teV9FZGl0d2luOgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2xzLnRleHQgPSBUZXh0KCkKICAgICAgICAgY2xzLmF1dG9fZXhwYW5kID0gQXV0b0V4cGFuZChEdW1teV9FZGl0d2luKGNscy50ZXh0KSkKKyAgICAgICAgY2xzLmF1dG9fZXhwYW5kLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0xMzcsNSArMTM4LDYgQEAKICAgICAgICAgbmV3X3N0YXRlID0gc2VsZi5hdXRvX2V4cGFuZC5zdGF0ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluaXRpYWxfc3RhdGUsIG5ld19zdGF0ZSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CmluZGV4IGIyYTczM2MuLjBiMTE2MDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5DYWxsVGlwcyBhcyBjdAoraW1wb3J0IGlkbGVsaWIuY2FsbHRpcHMgYXMgY3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhiYzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKycnJ1Rlc3QgaWRsZWxpYi9jb2xvcml6ZXIucHkKKworUGVyZm9ybSBtaW5pbWFsIHNhbml0eSBjaGVja3MgdGhhdCBtb2R1bGUgaW1wb3J0cyBhbmQgc29tZSB0aGluZ3MgcnVuLgorCitDb3ZlcmFnZSAyMiUuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29sb3JpemVyICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLmFueSgndGVzdCcsICgnYScsICdiJykpKQorCisgICAgZGVmIHRlc3RfbWFrZV9wYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIubWFrZV9wYXQoKSkKKworCitjbGFzcyBDb2xvckNvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLnRleHQKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKKworY2xhc3MgQ29sb3JEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLkNvbG9yRGVsZWdhdG9yKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmYTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorJycnVGVzdCBpZGxlbGliLmNvbmZpZy4KKworTXVjaCBpcyB0ZXN0ZWQgYnkgb3BlbmluZyBjb25maWcgZGlhbG9nIGxpdmUgb3IgaW4gdGVzdF9jb25maWdkaWFsb2cuCitDb3ZlcmFnZTogMjclCisnJycKK2Zyb20gc3lzIGltcG9ydCBtb2R1bGVzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnCisKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBSZXBsYWNlIHVzZXIgcGFyc2VycyB3aXRoIGVtcHR5IHBhcnNlcnMgdGhhdCBjYW5ub3QgYmUgc2F2ZWQuCisKK2lkbGVDb25mID0gY29uZmlnLmlkbGVDb25mCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHt9Cit1c2VybWFpbiA9IHRlc3RjZmdbJ21haW4nXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpICAjIGZpbGVuYW1lCit1c2VyaGlnaCA9IHRlc3RjZmdbJ2hpZ2hsaWdodCddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKK3VzZXJrZXlzID0gdGVzdGNmZ1sna2V5cyddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHVzZXJjZmcKKworCitjbGFzcyBDdXJyZW50Q29sb3JLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgY29sb3JrZXlzIGZ1bmN0aW9uIHdpdGggdXNlciBjb25maWcgW1RoZW1lXSBhbmQgW0tleXNdIHBhdHRlcm5zLgorCisgICAgICAgIGNvbG9ya2V5cyA9IGNvbmZpZy5JZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgICAgICBUZXN0IGFsbCBwYXR0ZXJucyB3cml0dGVuIGJ5IElETEUgYW5kIHNvbWUgZXJyb3JzCisgICAgICAgIEl0ZW0gJ2RlZmF1bHQnIHNob3VsZCByZWFsbHkgYmUgJ2J1aWx0aW4nICh2ZXJzdXMgJ2N1c3RvbSkuCisgICAgIiIiCisgICAgY29sb3JrZXlzID0gaWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICBkZWZhdWx0X3RoZW1lID0gJ0lETEUgQ2xhc3NpYycKKyAgICBkZWZhdWx0X2tleXMgPSBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuay4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgJycnKQorICAgICAgICAjIElETEUgb21pdHMgJ25hbWUnIGZvciBkZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgSURMRSBhZGRzICduYW1lJyBmb3Igbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIE5ldycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV90aGVtZShzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJoaWdoLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIERhcmtdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKyAgICAgICAgdXNlcmhpZ2gucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBEYXJrJykKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmssIG5hbWUgaXMgYWx3YXlzIHVzZWQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZSA9IElETEUgQ2xhc3NpYyBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgQ2xhc3NpYyBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIE1vZGVybiBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdJRExFIENsYXNzaWMgVW5peCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfa2V5cyhzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBLZXlzCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJrZXlzLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIEtleXNdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorICAgICAgICB1c2Vya2V5cy5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIEtleXMnKQorCisKK2NsYXNzIFdhcm5pbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dhcm4oc2VsZik6CisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBjb25maWcuX3dhcm5lZCA9IHNldCgpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5Jyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm5pbmcnKydcbicpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm4yJywgJ3llaycpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5JyksICgnd2FybjInLCd5ZWsnKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybjInKydcbicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjhlZC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0iIiJVbml0dGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQiIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gsIEVudHJ5Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0hlbHBTb3VyY2VFZGl0IGFzIGhlbHBfZGlhbG9nX21vZHVsZQotCi1oZWxwX2RpYWxvZyA9IGhlbHBfZGlhbG9nX21vZHVsZS5HZXRIZWxwU291cmNlRGlhbG9nCi0KLQotY2xhc3MgRHVtbXlfaGVscF9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBoZWxwX2RpYWxvZwotICAgIG1lbnVfb2sgPSBoZWxwX2RpYWxvZy5tZW51X29rCi0gICAgcGF0aF9vayA9IGhlbHBfZGlhbG9nLnBhdGhfb2sKLSAgICBvayA9IGhlbHBfZGlhbG9nLm9rCi0gICAgY2FuY2VsID0gaGVscF9kaWFsb2cuY2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIG1lbnUgPSBWYXIoKQotICAgIGVudHJ5TWVudSA9IEVudHJ5KCkKLSAgICBwYXRoID0gVmFyKCkKLSAgICBlbnRyeVBhdGggPSBFbnRyeSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0KLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLQotIyBtZW51X29rIGFuZCBwYXRoX29rIGNhbGwgTWJveC5zaG93ZXJyb3IgaWYgbWVudSBhbmQgcGF0aCBhcmUgbm90IG9rLgotb3JpZ19tYm94ID0gaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotCi1jbGFzcyBDb25maWdIZWxwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfaGVscF9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVsbG8nICogMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3RfYmxhbmtfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2Zvb2JhcicgKiAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91cmxfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ3d3LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICgnaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLmNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTNmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpAQCAtMCwwICsxLDMzIEBACisnJycgVGVzdCBpZGxlbGliLmNvbmZpZ19rZXkuCisKK0NvdmVyYWdlOiA1NiUgZnJvbSBjcmVhdGluZyBhbmQgY2xvc2luZyBkaWFsb2cuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnX2tleQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAorCisKK2NsYXNzIEdldEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGUoKSAgIyBTdG9wICJjYW4ndCBydW4gZXZlbnQgY29tbWFuZCIgd2FybmluZy4KKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkaWEgPSBjb25maWdfa2V5LkdldEtleXNEaWFsb2coCisgICAgICAgICAgICBzZWxmLnJvb3QsICd0ZXN0JywgJzw8VGVzdD4+JywgWyc8S2V5LUYxMj4nXSwgX3V0ZXN0PVRydWUpCisgICAgICAgIGRpYS5DYW5jZWwoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTcyYjkuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGFzIG5hbWVfZGlhbG9nX21vZHVsZQotCi1uYW1lX2RpYWxvZyA9IG5hbWVfZGlhbG9nX21vZHVsZS5HZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotCi1jbGFzcyBEdW1teV9uYW1lX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIG5hbWVfZGlhbG9nCi0gICAgbmFtZV9vayA9IG5hbWVfZGlhbG9nLm5hbWVfb2sKLSAgICBPayA9IG5hbWVfZGlhbG9nLk9rCi0gICAgQ2FuY2VsID0gbmFtZV9kaWFsb2cuQ2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQotICAgIG5hbWUgPSBWYXIoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotIyBuYW1lX29rIGNhbGxzIE1ib3guc2hvd2Vycm9yIGlmIG5hbWUgaXMgbm90IG9rCi1vcmlnX21ib3ggPSBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi1jbGFzcyBDb25maWdOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfbmFtZV9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdXNlZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgndXNlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJyo4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvbyBsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgIGdvb2QgJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLk9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuQ2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQppbmRleCA1YzA5NzkwLi4zZjk0NDkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CkBAIC0xLDMyICsxLDEyNyBAQAotJycnVGVzdCBpZGxlbGliLmNvbmZpZ0RpYWxvZy4KKyIiIlRlc3QgaWRsZWxpYi5jb25maWdkaWFsb2cuCiAKLUNvdmVyYWdlOiA0NiUganVzdCBieSBjcmVhdGluZyBkaWFsb2cuCi1UaGUgb3RoZXIgaGFsZiBpcyBjb2RlIGZvciB3b3JraW5nIHdpdGggdXNlciBjdXN0b21pemF0aW9ucy4KLScnJwotZnJvbSBpZGxlbGliLmNvbmZpZ0RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorSGFsZiB0aGUgY2xhc3MgY3JlYXRlcyBkaWFsb2csIGhhbGYgd29ya3Mgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgorQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZywgNTYlIHdpdGggY3VycmVudCB0ZXN0cy4KKyIiIgorZnJvbSBpZGxlbGliLmNvbmZpZ2RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nLCBpZGxlQ29uZiAgIyB0ZXN0IGltcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0IGFzIG1hY29zeAoraW1wb3J0IGlkbGVsaWIuY29uZmlnIGFzIGNvbmZpZwogCi1jbGFzcyBDb25maWdEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBVc2Ugc29sdXRpb24gZnJvbSB0ZXN0X2NvbmZpZzogZW1wdHkgcGFyc2VycyB3aXRoIG5vIGZpbGVuYW1lLgordXNlcmNmZyA9IGlkbGVDb25mLnVzZXJDZmcKK3Rlc3RjZmcgPSB7CisgICAgJ21haW4nOiBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSwKKyAgICAnaGlnaGxpZ2h0JzogY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJyksCisgICAgJ2tleXMnOiBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSwKKyAgICAnZXh0ZW5zaW9ucyc6IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpLAorfQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnJvb3QgPSBUaygpCi0gICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKLSAgICAgICAgbWFjb3N4Ll9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMoY2xzLnJvb3QpCisjIENvbmZpZ0RpYWxvZy5jaGFuZ2VkSXRlbXMgaXMgYSAzLWxldmVsIGhpZXJhcmNoaWNhbCBkaWN0aW9uYXJ5IG9mCisjIHBlbmRpbmcgY2hhbmdlcyB0aGF0IG1pcnJvcnMgdGhlIG11bHRpbGV2ZWwgdXNlciBjb25maWcgZGljdC4KKyMgRm9yIHRlc3RpbmcsIHJlY29yZCBhcmdzIGluIGEgbGlzdCBmb3IgY29tcGFyaXNvbiB3aXRoIGV4cGVjdGVkLgorY2hhbmdlcyA9IFtdCitjbGFzcyBUZXN0RGlhbG9nKENvbmZpZ0RpYWxvZyk6CisgICAgZGVmIEFkZENoYW5nZWRJdGVtKHNlbGYsICphcmdzKToKKyAgICAgICAgY2hhbmdlcy5hcHBlbmQoYXJncykKIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKLSAgICAgICAgZGVsIGNscy5yb290CitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBnbG9iYWwgcm9vdCwgY29uZmlndXJlCisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKyAgICByb290ID0gVGsoKQorICAgIHJvb3Qud2l0aGRyYXcoKQorICAgIGNvbmZpZ3VyZSA9IFRlc3REaWFsb2cocm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X2RpYWxvZyhzZWxmKToKLSAgICAgICAgZCA9IENvbmZpZ0RpYWxvZyhzZWxmLnJvb3QsICdUZXN0JywgX3V0ZXN0PVRydWUpCi0gICAgICAgIGQucmVtb3ZlX3Zhcl9jYWxsYmFja3MoKQorCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBnbG9iYWwgcm9vdCwgY29uZmlndXJlCisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKyAgICBjb25maWd1cmUucmVtb3ZlX3Zhcl9jYWxsYmFja3MoKQorICAgIGRlbCBjb25maWd1cmUKKyAgICByb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgIHJvb3QuZGVzdHJveSgpCisgICAgZGVsIHJvb3QKKworCitjbGFzcyBGb250VGFiVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKyAgICBkZWYgdGVzdF9mb250KHNlbGYpOgorICAgICAgICAjIFNldCB2YWx1ZXMgZ3VhcmFudGVlZCBub3QgdG8gYmUgZGVmYXVsdHMuCisgICAgICAgIGRmb250ID0gaWRsZUNvbmYuR2V0Rm9udChyb290LCAnbWFpbicsICdFZGl0b3JXaW5kb3cnKQorICAgICAgICBkc2l6ZSA9IHN0cihkZm9udFsxXSkKKyAgICAgICAgZGJvbGQgPSBkZm9udFsyXSA9PSAnYm9sZCcKKyAgICAgICAgY29uZmlndXJlLmZvbnROYW1lLnNldCgnVGVzdCBGb250JykKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsIGRzaXplKSwKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udC1ib2xkJywgZGJvbGQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIGV4cGVjdGVkKQorICAgICAgICBjaGFuZ2VzLmNsZWFyKCkKKyAgICAgICAgY29uZmlndXJlLmZvbnRTaXplLnNldCgyMCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsICcyMCcpLAorICAgICAgICAgICAgKCdtYWluJywgJ0VkaXRvcldpbmRvdycsICdmb250LWJvbGQnLCBkYm9sZCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgZXhwZWN0ZWQpCisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorICAgICAgICBjb25maWd1cmUuZm9udEJvbGQuc2V0KG5vdCBkYm9sZCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsICcyMCcpLAorICAgICAgICAgICAgKCdtYWluJywgJ0VkaXRvcldpbmRvdycsICdmb250LWJvbGQnLCBub3QgZGJvbGQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIGV4cGVjdGVkKQorCisgICAgI2RlZiB0ZXN0X3NhbXBsZShzZWxmKTogcGFzcyAgIyBUT0RPCisKKyAgICBkZWYgdGVzdF90YWJzcGFjZShzZWxmKToKKyAgICAgICAgY29uZmlndXJlLnNwYWNlTnVtLnNldCg2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnSW5kZW50JywgJ251bS1zcGFjZXMnLCA2KV0pCisKKworY2xhc3MgSGlnaGxpZ2h0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorCisgICAgI2RlZiB0ZXN0X2NvbG9yY2hvb3NlKHNlbGYpOiBwYXNzICAjIFRPRE8KKworCitjbGFzcyBLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorCisKK2NsYXNzIEdlbmVyYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwKHNlbGYpOgorICAgICAgICBjb25maWd1cmUucmFkaW9TdGFydHVwRWRpdC5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnbWFpbicsICdHZW5lcmFsJywgJ2VkaXRvci1vbi1zdGFydHVwJywgMSldKQorCisgICAgZGVmIHRlc3RfYXV0b3NhdmUoc2VsZik6CisgICAgICAgIGNvbmZpZ3VyZS5yYWRpb1NhdmVBdXRvLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgWygnbWFpbicsICdHZW5lcmFsJywgJ2F1dG9zYXZlJywgMSldKQorCisgICAgZGVmIHRlc3RfZWRpdG9yX3NpemUoc2VsZik6CisgICAgICAgIGNvbmZpZ3VyZS5lbnRyeVdpbkhlaWdodC5pbnNlcnQoMCwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2hlaWdodCcsICcxNDAnKV0pCisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorICAgICAgICBjb25maWd1cmUuZW50cnlXaW5XaWR0aC5pbnNlcnQoMCwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ3dpZHRoJywgJzE4MCcpXSkKKworICAgICNkZWYgdGVzdF9oZWxwX3NvdXJjZXMoc2VsZik6IHBhc3MgICMgVE9ETwogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYmE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLmRlYnVnZ2VyLgorCitDb3ZlcmFnZTogMTklCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBOYW1lU3BhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkZWJ1Z2dlci5OYW1lc3BhY2VWaWV3ZXIoc2VsZi5yb290LCAnVGVzdCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CmluZGV4IDFmMGJhYTkuLjg1NjI0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCiAKIGNsYXNzIERlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CmluZGV4IGEyNThlMjkuLjE3ZWIyNWMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CkBAIC01LDggKzUsOSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAogCiBjbGFzcyBQYXN0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1Rlc3QgcGFzdGluZyBpbnRvIHdpZGdldHMgdGhhdCBhbGxvdyBwYXN0aW5nLgpAQCAtMTYsMTcgKzE3LDE4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSByb290ID0gdGsuVGsoKQotICAgICAgICByb290LndpdGhkcmF3KCkKLSAgICAgICAgUHlTaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgcHlzaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgICAgIGNscy50ZXh0ID0gdGsuVGV4dChyb290KQogICAgICAgICBjbHMuZW50cnkgPSB0ay5FbnRyeShyb290KQorICAgICAgICBjbHMudGVudHJ5ID0gdHRrLkVudHJ5KHJvb3QpCiAgICAgICAgIGNscy5zcGluID0gdGsuU3BpbmJveChyb290KQogICAgICAgICByb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2FwcGVuZCgndHdvJykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMuc3BpbgorICAgICAgICBkZWwgY2xzLnRleHQsIGNscy5lbnRyeSwgY2xzLnRlbnRyeQogICAgICAgICBjbHMucm9vdC5jbGlwYm9hcmRfY2xlYXIoKQogICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCkBAIC00NCwxNiArNDYsMTYgQEAKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX2VudHJ5KHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYW4gZW50cnkgd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCi0gICAgICAgICMgT24gMy42LCBnZW5lcmF0ZWQgPDxQYXN0ZT4+IGZhaWxzIHdpdGhvdXQgZW1wdHkgc2VsZWN0IHJhbmdlCi0gICAgICAgICMgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KLSAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5Ci0gICAgICAgIGZvciBlbmQsIGFucyBpbiAoMCwgJ29uZXR3bycpLCAoJ2VuZCcsICd0d28nKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKLSAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCi0gICAgICAgICAgICAgICAgZW50cnkuaW5zZXJ0KDAsICdvbmUnKQotICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpICAjIHNlZSBub3RlCi0gICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5nZXQoKSwgYW5zKQorICAgICAgICAjIEdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgZm9yIHRrIGVudHJ5IHdpdGhvdXQgZW1wdHkgc2VsZWN0CisgICAgICAgICMgcmFuZ2UgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cnksIHNlbGYudGVudHJ5OgorICAgICAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsZXRlKDAsICdlbmQnKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmV2ZW50X2dlbmVyYXRlKCc8PFBhc3RlPj4nKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCiAKICAgICBkZWYgdGVzdF9wYXN0ZV9zcGluKHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYSBzcGluYm94IHdpdGggYW5kIHdpdGhvdXQgYSBzZWxlY3Rpb24uIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CmluZGV4IGEzMWQyNmQuLmU5ZDI5ZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIAogY2xhc3MgRWRpdG9yX2Z1bmNfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQppbmRleCAwZDhmZjBkLi42YjU0YzEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKQEAgLTEsNSArMSw1IEBACiAiIiIgIUNoYW5naW5nIHRoaXMgbGluZSB3aWxsIGJyZWFrIFRlc3RfZmluZGZpbGUudGVzdF9mb3VuZCEKLU5vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5HcmVwRGlhbG9nIG1ldGhvZHMuCitOb24tZ3VpIHVuaXQgdGVzdHMgZm9yIGdyZXAuR3JlcERpYWxvZyBtZXRob2RzLgogZHVtbXlfY29tbWFuZCBjYWxscyBncmVwX2l0IGNhbGxzIGZpbmRmaWxlcy4KIEFuIGV4Y2VwdGlvbiByYWlzZWQgaW4gb25lIG1ldGhvZCB3aWxsIGZhaWwgY2FsbGVycy4KIE90aGVyd2lzZSwgdGVzdHMgYXJlIG1vc3RseSBpbmRlcGVuZGVudC4KQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCi1mcm9tIGlkbGVsaWIuR3JlcERpYWxvZyBpbXBvcnQgR3JlcERpYWxvZworZnJvbSBpZGxlbGliLmdyZXAgaW1wb3J0IEdyZXBEaWFsb2cKIGltcG9ydCByZQogCiBjbGFzcyBEdW1teV9zZWFyY2hlbmdpbmU6CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1s0XS5zdGFydHN3aXRoKCcoSGludDonKSkKIAogY2xhc3MgRGVmYXVsdF9jb21tYW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUbyB3cml0ZSB0aGlzLCBtb2RlIE91dHB1dFdpbmRvdyBpbXBvcnQgdG8gdG9wIG9mIEdyZXBEaWFsb2cKKyAgICAjIFRvIHdyaXRlIHRoaXMsIG1vdmUgb3V0d2luIGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZwogICAgICMgc28gaXQgY2FuIGJlIHJlcGxhY2VkIGJ5IGNhcHR1cmVkX3N0ZG91dCBpbiBjbGFzcyBzZXR1cC90ZWFyZG93bi4KICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjhlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5CkBAIC0wLDAgKzEsMzQgQEAKKycnJ1Rlc3QgaWRsZWxpYi5oZWxwLgorCitDb3ZlcmFnZTogODclCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgam9pbgorZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0CisKK2NsYXNzIEhlbHBGcmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIkJ5IGl0c2VsZiwgdGhpcyB0ZXN0cyB0aGF0IGZpbGUgcGFyc2VkIHdpdGhvdXQgZXhjZXB0aW9uLiIKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgaGVscGZpbGUgPSBqb2luKGRpcm5hbWUoZGlybmFtZShhYnNwYXRoKF9fZmlsZV9fKSkpLCAnaGVscC5odG1sJykKKyAgICAgICAgY2xzLmZyYW1lID0gaGVscC5IZWxwRnJhbWUocm9vdCwgaGVscGZpbGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmZyYW1lCisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9saW5lMShzZWxmKToKKyAgICAgICAgdGV4dCA9IHNlbGYuZnJhbWUudGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuZ2V0KCcxLjAnLCAnMS5lbmQnKSwgJyBJRExFICcpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CmluZGV4IGQwYTAxMjcuLjg0M2VmYjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQpAQCAtMiwxMCArMiwxMCBAQAogCiBDb3ZlcmFnZToKICcnJwotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZyBhcyBoZWxwX2Fib3V0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IHRleHRWaWV3IGFzIHRleHR2aWV3Citmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiBpbXBvcnQgdW5pdHRlc3QKIAogQWJvdXQgPSBoZWxwX2Fib3V0LkFib3V0RGlhbG9nCkBAIC0xOSwzMyArMTksMzMgQEAKIAogCiBjbGFzcyBEaXNwbGF5RmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICJUZXN0IHRoYXQgLnR4dCBmaWxlcyBhcmUgZm91bmQgYW5kIHByb3Blcmx5IGRlY29kZWQuIgogICAgIGRpYWxvZyA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdGV4dHZpZXcudGtNZXNzYWdlQm94CisgICAgICAgIGNscy5vcmlnX2Vycm9yID0gdGV4dHZpZXcuc2hvd2Vycm9yCiAgICAgICAgIGNscy5vcmlnX3ZpZXcgPSB0ZXh0dmlldy52aWV3X3RleHQKLSAgICAgICAgY2xzLm1ib3ggPSBNYm94KCkKKyAgICAgICAgY2xzLmVycm9yID0gTWJveF9mdW5jKCkKICAgICAgICAgY2xzLnZpZXcgPSBGdW5jKCkKLSAgICAgICAgdGV4dHZpZXcudGtNZXNzYWdlQm94ID0gY2xzLm1ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLmVycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy52aWV3CiAgICAgICAgIGNscy5BYm91dCA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMub3JpZ19tYm94CisgICAgICAgIHRleHR2aWV3LnNob3dlcnJvciA9IGNscy5vcmlnX2Vycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy5vcmlnX3ZpZXcKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNwbGF5KHNlbGYpOgogICAgICAgICBmb3IgaGFuZGxlciBpbiAoc2VsZi5kaWFsb2cuaWRsZV9jcmVkaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWFsb2cuaWRsZV9yZWFkbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX25ld3MpOgotICAgICAgICAgICAgc2VsZi5tYm94LnNob3dlcnJvci5tZXNzYWdlID0gJycKKyAgICAgICAgICAgIHNlbGYuZXJyb3IubWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBzZWxmLnZpZXcuY2FsbGVkID0gRmFsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UsICcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGFuZGxlcj1oYW5kbGVyKToKKyAgICAgICAgICAgICAgICBoYW5kbGVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3IubWVzc2FnZSwgJycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKaW5kZXggNmU3YzZjMy4uYjI3ODAxMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpAQCAtNCw4ICs0LDggQEAKIGltcG9ydCB0a2ludGVyIGFzIHRrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQgYXMgdGtUZXh0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbWtUZXh0Ci1mcm9tIGlkbGVsaWIuSWRsZUhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIGxpbmUxID0gJ2EgPSA3JwogbGluZTIgPSAnYiA9IGEnCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CmluZGV4IDljZTNmMmMuLjczYzgyODEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuSHlwZXJQYXJzZXIiIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLmh5cGVycGFyc2VyLnB5LiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CmluZGV4IGUwZTNiOTguLjY1YmY1OTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGlvCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCisKK2Zyb20gaWRsZWxpYi5ydW4gaW1wb3J0IFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQogCiAKIGNsYXNzIFMoc3RyKToKQEAgLTIzMCw0ICsyMzEsNCBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU3NWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5CkBAIC0wLDAgKzEsMTAzIEBACisnJydUZXN0IGlkbGVsaWIubWFjb3N4LnB5LgorCitDb3ZlcmFnZTogNzElIG9uIFdpbmRvd3MuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2ltcG9ydCB0a2ludGVyIGFzIHRrCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrIGFzIG1vY2sKK2Zyb20gaWRsZWxpYi5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QKKworbWFjdHlwZXMgPSB7J2NhcmJvbicsICdjb2NvYScsICd4cXVhcnR6J30KK25vbnR5cGVzID0geydvdGhlcid9CithbGx0eXBlcyA9IG1hY3R5cGVzIHwgbm9udHlwZXMKKworCitjbGFzcyBJbml0VGt0eXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgX2luaXRfdGtfdHlwZS4iCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSB0ay5UaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgY2xzLm9yaWdfcGxhdGZvcm0gPSBtYWNvc3gucGxhdGZvcm0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IGNscy5vcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9pbml0X3NldHNfdGt0eXBlKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IF9pbml0X3RrX3R5cGUgc2V0cyBfdGtfdHlwZSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0uIgorICAgICAgICBmb3IgcGxhdGZvcm0sIHR5cGVzIGluICgnZGFyd2luJywgYWxsdHlwZXMpLCAoJ290aGVyJywgbm9udHlwZXMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGxhdGZvcm09cGxhdGZvcm0pOgorICAgICAgICAgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IHBsYXRmb3JtCisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID09IE5vbmUKKyAgICAgICAgICAgICAgICBtYWNvc3guX2luaXRfdGtfdHlwZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWNvc3guX3RrX3R5cGUsIHR5cGVzKQorCisKK2NsYXNzIElzVHlwZVRrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZWFjaCBvZiB0aGUgZm91ciBpc1R5cGVUayBwcmVkZWNhdGVzLiIKKyAgICBpc2Z1bmNzID0gKChtYWNvc3guaXNBcXVhVGssICgnY2FyYm9uJywgJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NhcmJvblRrLCAoJ2NhcmJvbicpKSwKKyAgICAgICAgICAgICAgIChtYWNvc3guaXNDb2NvYVRrLCAoJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc1hRdWFydHosICgneHF1YXJ0eicpKSwKKyAgICAgICAgICAgICAgICkKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5faW5pdF90a190eXBlJykKKyAgICBkZWYgdGVzdF9pc19jYWxsc19pbml0KHNlbGYsIG1vY2tpbml0KToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIGNhbGxzIF9pbml0X3RrX3R5cGUgd2hlbiBfdGtfdHlwZSBpcyBOb25lLiIKKyAgICAgICAgbWFjb3N4Ll90a190eXBlID0gTm9uZQorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mdW5jKToKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9ja2luaXQuY2FsbGVkKQorICAgICAgICAgICAgICAgIG1vY2tpbml0LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfaXNmdW5jcyhzZWxmKToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIHJldHVybiBjb3JyZWN0IGJvb2wuIgorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgZm9yIHRrdHlwZSBpbiBhbGx0eXBlczoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMsIHdoZW50cnVlPXdoZW50cnVlLCB0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgICAgIChzZWxmLmFzc2VydFRydWUgaWYgdGt0eXBlIGluIHdoZW50cnVlIGVsc2Ugc2VsZi5hc3NlcnRGYWxzZSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmMoKSkKKworCitjbGFzcyBTZXR1cFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IHNldHVwQXBwLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5vdmVycmlkZVJvb3RNZW51JykgICMyNzMxMgorICAgIGRlZiB0ZXN0X3NldHVwYXBwKHNlbGYsIG92ZXJyaWRlUm9vdE1lbnUpOgorICAgICAgICAiQ2FsbCBzZXR1cEFwcCB3aXRoIGVhY2ggcG9zc2libGUgZ3JhcGhpY3MgdHlwZS4iCisgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKKyAgICAgICAgZmxpc3QgPSBGaWxlTGlzdChyb290KQorICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodGt0eXBlPXRrdHlwZSk6CisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQorICAgICAgICAgICAgICAgIGlmIHRrdHlwZSBpbiAoJ2NhcmJvbicsICdjb2NvYScpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3ZlcnJpZGVSb290TWVudS5jYWxsZWQpCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVSb290TWVudS5yZXNldF9tb2NrKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKaW5kZXggYjZlYjJmMy4uYmEzNTBjOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpAQCAtMSw3ICsxLDcgQEAKLSMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBGb3JtYXRQYXJhZ3JhcGgucHkKKyMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBwYXJhZ3JhcGgucHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBGb3JtYXRQYXJhZ3JhcGggYXMgZnAKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBwYXJhZ3JhcGggYXMgZnAKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiAKQEAgLTM4LDcgKzM4LDcgQEAKIAogCiBjbGFzcyBGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gRm9ybWF0UGFyYWdyYXBoLgorICAgICIiIlRlc3QgdGhlIGZpbmRfcGFyYWdyYXBoIGZ1bmN0aW9uIGluIHBhcmFncmFwaCBtb2R1bGUuCiAKICAgICBVc2luZyB0aGUgcnVuY2FzZSgpIGZ1bmN0aW9uLCBmaW5kX3BhcmFncmFwaCgpIGlzIGNhbGxlZCB3aXRoICdtYXJrJyBzZXQgYXQKICAgICBtdWx0aXBsZSBpbmRleGVzIGJlZm9yZSBhbmQgaW5zaWRlIHRoZSB0ZXN0IHBhcmFncmFwaC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CmluZGV4IDk1Y2MyMmMuLjA1MWY3ZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5QYXJlbk1hdGNoLgorJycnVGVzdCBpZGxlbGliLnBhcmVubWF0Y2guCiAKIFRoaXMgbXVzdCBjdXJyZW50bHkgYmUgYSBndWkgdGVzdCBiZWNhdXNlIFBhcmVuTWF0Y2ggbWV0aG9kcyB1c2UKIHNldmVyYWwgdGV4dCBtZXRob2RzIG5vdCBkZWZpbmVkIG9uIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsuVGV4dC4KQEAgLTksNyArOSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLlBhcmVuTWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKK2Zyb20gaWRsZWxpYi5wYXJlbm1hdGNoIGltcG9ydCBQYXJlbk1hdGNoCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CkBAIC0zOCwxMiArMzgsMTcgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQogCisgICAgZGVmIGdldF9wYXJlbm1hdGNoKHNlbGYpOgorICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbS5iZWxsID0gbGFtYmRhOiBOb25lCisgICAgICAgIHJldHVybiBwbQorCiAgICAgZGVmIHRlc3RfcGFyZW5fZXhwcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdleHByZXNzaW9uJyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdleHByZXNzaW9uJykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC02Niw3ICs3MSw3IEBACiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdkZWZhdWx0JyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdkZWZhdWx0JykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC04Niw3ICs5MSw3IEBACiAgICAgICAgIFRoZXNlIGNhc2VzIGZvcmNlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGFsdGVybmF0ZSBwYXRocy4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJyMgdGhpcyBpcyBhIGNvbW1lbiknKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCkBAIC05OSw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfcmVzdG9yZV90aW1lcihzZWxmKToKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0ucmVzdG9yZV9ldmVudCA9IE1vY2soKQogICAgICAgICBwbS5oYW5kbGVfcmVzdG9yZV90aW1lcigwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG0ucmVzdG9yZV9ldmVudC5jYWxsZWQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CmluZGV4IGFmYjg4NmYuLjgxM2NiY2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpZGxlbGliCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFBhdGhCcm93c2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCiAKIGNsYXNzIFBhdGhCcm93c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9EaXJCcm93c2VyVHJlZUl0ZW0oc2VsZik6CiAgICAgICAgICMgSXNzdWUxNjIyNiAtIG1ha2Ugc3VyZSB0aGF0IGdldHRpbmcgYSBzdWJsaXN0IHdvcmtzCi0gICAgICAgIGQgPSBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCisgICAgICAgIGQgPSBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCiAgICAgICAgIGQuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGQuR2V0VGV4dCgpKQogCkBAIC0xNywxMSArMTcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmlzcGFja2FnZWRpcihkaXIgKyAnL0ljb25zJyksIEZhbHNlKQogCiAgICAgZGVmIHRlc3RfUGF0aEJyb3dzZXJUcmVlSXRlbShzZWxmKToKLSAgICAgICAgcCA9IFBhdGhCcm93c2VyLlBhdGhCcm93c2VyVHJlZUl0ZW0oKQorICAgICAgICBwID0gcGF0aGJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5HZXRUZXh0KCksICdzeXMucGF0aCcpCiAgICAgICAgIHN1YiA9IHAuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN1YiksIGxlbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CmluZGV4IDRjMGE3YWQuLjU3M2I5YTEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQpAQCAtMSwxMCArMSwxMCBAQAotJycnVGVzdCBQZXJjb2xhdG9yJycnCisnJydUZXN0IHBlcmNvbGF0b3IucHkuJycnCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGssIEVORAotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgorZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgogCiAKIGNsYXNzIE15RmlsdGVyKERlbGVnYXRvcik6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YWY4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weQpAQCAtMCwwICsxLDM1MyBAQAorIiIiVGVzdCBpZGxlbGliLnF1ZXJ5LgorCitOb24tZ3VpIHRlc3RzIGZvciBRdWVyeSwgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlIHVzZQorZHVtbXkgdmVyc2lvbnMgdGhhdCBleHRyYWN0IHRoZSBub24tZ3VpIG1ldGhvZHMgYW5kIGFkZCBvdGhlciBuZWVkZWQKK2F0dHJpYnV0ZXMuICBHVUkgdGVzdHMgY3JlYXRlIGFuIGluc3RhbmNlIG9mIGVhY2ggY2xhc3MgYW5kIHNpbXVsYXRlCitlbnRyaWVzIGFuZCBidXR0b24gY2xpY2tzLiAgU3ViY2xhc3MgdGVzdHMgb25seSB0YXJnZXQgdGhlIG5ldyBjb2RlIGluCit0aGUgc3ViY2xhc3MgZGVmaW5pdGlvbi4KKworVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHdpZGdldHMgaXMgY2hlY2tlZCBieSB0aGUgUXVlcnkgYW5kCitIZWxwU291cmNlIGh0ZXN0cy4gIFRoZXNlIGFyZSBydW4gYnkgcnVubmluZyBxdWVyeS5weS4KKworQ292ZXJhZ2U6IDk0JSAoMTAwJSBmb3IgUXVlcnkgYW5kIFNlY3Rpb25OYW1lKS4KKzYgb2YgOCBtaXNzaW5nIGFyZSBNb2R1bGVOYW1lIGV4Y2VwdGlvbnMgSSBkb24ndCBrbm93IGhvdyB0byB0cmlnZ2VyLgorIiIiCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKKworCisjIE5PTi1HVUkgVEVTVFMKKworY2xhc3MgUXVlcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBRdWVyeSBiYXNlIGNsYXNzLiIKKworICAgIGNsYXNzIER1bW15X1F1ZXJ5OgorICAgICAgICAjIFRlc3QgdGhlIGZvbGxvd2luZyBRdWVyeSBtZXRob2RzLgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlF1ZXJ5LmVudHJ5X29rCisgICAgICAgIG9rID0gcXVlcnkuUXVlcnkub2sKKyAgICAgICAgY2FuY2VsID0gcXVlcnkuUXVlcnkuY2FuY2VsCisgICAgICAgICMgQWRkIGF0dHJpYnV0ZXMgYW5kIGluaXRpYWxpemF0aW9uIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IEZhbHNlCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisgICAgICAgIGRlZiBkZXN0cm95KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdibGFuayBsaW5lJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgIGdvb2QgJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIEZhbHNlKSkKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3Rfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJycpCisgICAgICAgIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5LmZvY3VzX3NldC5jYWxsZWQpCisgICAgICAgIGRlbCBkaWFsb2cuZW50cnkuZm9jdXNfc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorCisgICAgZGVmIHRlc3Rfb2tfZ29vZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoJ2dvb2QnLCBUcnVlKSkKKworICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZG9lcyBub3QgbWF0dGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuY2FuY2VsKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgVHJ1ZSkpCisKKworY2xhc3MgU2VjdGlvbk5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBTZWN0aW9uTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9TZWN0aW9uTmFtZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5TZWN0aW9uTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQorICAgICAgICBlbnRyeSA9IFZhcigpCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X2VudHJ5KToKKyAgICAgICAgICAgIHNlbGYuZW50cnkuc2V0KGR1bW15X2VudHJ5KQorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKworICAgIGRlZiB0ZXN0X2JsYW5rX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3VzZWRfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCd1c2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9sb25nX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnZ29vZCcqOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbG9uZ2VyIHRoYW4gMzAnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2dvb2Rfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgIGdvb2QgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgJ2dvb2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCitjbGFzcyBNb2R1bGVOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9Nb2R1bGVOYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5Lk1vZHVsZU5hbWUuZW50cnlfb2sgICMgRnVuY3Rpb24gYmVpbmcgdGVzdGVkLgorICAgICAgICB0ZXh0MCA9ICcnCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2JvZ3VzX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ19fbmFtZV94eXoxMjNfc2hvdWxkX25vdF9leGlzdF9fJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGZvdW5kJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9jX3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2l0ZXJ0b29scycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NvdXJjZS1iYXNlZCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCdpZGxlbGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5lbnRyeV9vaygpLmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCisjIDMgSGVscFNvdXJjZSB0ZXN0IGNsYXNzZXMgZWFjaCB0ZXN0IG9uZSBmdW5jdGlvbi4KKworb3JpZ19wbGF0Zm9ybSA9IHF1ZXJ5LnBsYXRmb3JtCisKK2NsYXNzIEhlbHBzb3VyY2VCcm93c2VmaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgYnJvd3NlX2ZpbGUgbWV0aG9kIG9mIE1vZHVsZU5hbWUgc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgYnJvd3NlX2ZpbGUgPSBxdWVyeS5IZWxwU291cmNlLmJyb3dzZV9maWxlCisgICAgICAgIHBhdGh2YXIgPSBWYXIoKQorCisgICAgZGVmIHRlc3RfZmlsZV9yZXBsYWNlc19wYXRoKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoKQorICAgICAgICAjIFBhdGggaXMgd2lkZ2V0IGVudHJ5LCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIGlzIGZpbGUgZGlhbG9nIHJldHVybiwgZWl0aGVyICcnIG9yIHNvbWV0aGluZy4KKyAgICAgICAgIyBGdW5jIHJldHVybiBzaG91bGQgb3ZlcnJpZGUgd2lkZ2V0IGVudHJ5LgorICAgICAgICAjIFdlIG5lZWQgYWxsIDQgY29tYmluYXRpb24gdG8gdGVzdCBhbGwgKG1vc3QpIGNvZGUgcGF0aHMuCisgICAgICAgIGZvciBwYXRoLCBmdW5jLCByZXN1bHQgaW4gKAorICAgICAgICAgICAgICAgICgnJywgbGFtYmRhIGEsYixjOicnLCAnJyksCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6IF9fZmlsZV9fLCBfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzonJywgJ2h0ZXN0JyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRodmFyLnNldChwYXRoKQorICAgICAgICAgICAgICAgIGRpYWxvZy5hc2tmaWxlbmFtZSA9IGZ1bmMKKyAgICAgICAgICAgICAgICBkaWFsb2cuYnJvd3NlX2ZpbGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGh2YXIuZ2V0KCksIHJlc3VsdCkKKworCitjbGFzcyBIZWxwc291cmNlUGF0aG9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgcGF0aF9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBwYXRoX29rID0gcXVlcnkuSGVscFNvdXJjZS5wYXRoX29rCisgICAgICAgIHBhdGggPSBWYXIoKQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X3BhdGgpOgorICAgICAgICAgICAgc2VsZi5wYXRoLnNldChkdW1teV9wYXRoKQorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UsIHdpZGdldD1Ob25lKToKKyAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIGhlbHAgZmlsZScsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JhZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKF9fZmlsZV9fICsgJ2JhZC1iYWQtYmFkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBkaWFsb2cucGF0aF9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfcGF0aF9va193ZWIoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGZvciB1cmwgaW4gJ3d3dy5weS5vcmcnLCAnaHR0cDovL3B5Lm9yZyc6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldCh1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCB1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9lcnJvclsndGV4dCddLCAnJykKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfZmlsZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBmb3IgcGxhdGZvcm0sIHByZWZpeCBpbiAoJ2RhcndpbicsICdmaWxlOi8vJyksICgnb3RoZXInLCAnJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIHF1ZXJ5LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBkaWFsb2cucGF0aC5zZXQoX19maWxlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBwcmVmaXggKyBfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIEhlbHBzb3VyY2VFbnRyeW9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZW50cnlfb2sgbWV0aG9kIG9mIEhlbHBTb3VyY2Ugc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5IZWxwU291cmNlLmVudHJ5X29rCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgcGF0aF9lcnJvciA9IHt9CisgICAgICAgIGRlZiBpdGVtX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorICAgICAgICBkZWYgcGF0aF9vayhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2hlbHBzb3VyY2Uoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgIGZvciBuYW1lLCBwYXRoLCByZXN1bHQgaW4gKChOb25lLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdkb2MudHh0JywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgJ2RvYy50eHQnLCAoJ2RvYycsICdkb2MudHh0JykpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLm5hbWUsIGRpYWxvZy5wYXRoID0gbmFtZSwgcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIHJlc3VsdCkKKworCisjIEdVSSBURVNUUworCitjbGFzcyBRdWVyeUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gcm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMuZGlhbG9nID0gcXVlcnkuUXVlcnkocm9vdCwgJ1RFU1QnLCAndGVzdCcsIF91dGVzdD1UcnVlKQorICAgICAgICBjbHMuZGlhbG9nLmRlc3Ryb3kgPSBtb2NrLk1vY2soKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIGNscy5kaWFsb2cKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRpYWxvZy5lbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgIHNlbGYuZGlhbG9nLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveS5yZXNldF9tb2NrKCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX29rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5kaWFsb2cKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlhbG9nLmRlc3Ryb3kuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfY2xpY2tfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX2NhbmNlbC5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKworY2xhc3MgU2VjdGlvbm5hbWVHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorCisgICAgZGVmIHRlc3RfY2xpY2tfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LlNlY3Rpb25OYW1lKHJvb3QsICdUJywgJ3QnLCB7J2FiYyd9LCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnVzZWRfbmFtZXMsIHsnYWJjJ30pCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ29rYXknKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ29rYXknKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgTW9kdWxlbmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5Nb2R1bGVOYW1lKHJvb3QsICdUJywgJ3QnLCAnaWRsZWxpYicsIF91dGVzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy50ZXh0MCwgJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeS5nZXQoKSwgJ2lkbGVsaWInKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cucmVzdWx0LmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgSGVscHNvdXJjZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19oZWxwX3NvdXJjZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5IZWxwU291cmNlKHJvb3QsICdUJywgbWVudWl0ZW09J19fdGVzdF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg9X19maWxlX18sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnX190ZXN0X18nKQorICAgICAgICBFcXVhbChkaWFsb2cucGF0aC5nZXQoKSwgX19maWxlX18pCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgcHJlZml4ID0gImZpbGU6Ly8iIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisgICAgICAgIEVxdWFsKGRpYWxvZy5yZXN1bHQsICgnX190ZXN0X18nLCBwcmVmaXggKyBfX2ZpbGVfXykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKaW5kZXggYmFhOTc1ZC4uYjAzODVmYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yLgorJycnVGVzdCBpZGxlbGliLnJlZGlyZWN0b3IuCiAKIDEwMCUgY292ZXJhZ2UKICcnJwpAQCAtNiw3ICs2LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQsIFRjbEVycm9yCi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgorZnJvbSBpZGxlbGliLnJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKIAogCiBjbGFzcyBJbml0Q2xvc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyMCw2ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucm9vdC5jYWxsKHNlbGYudGV4dC5fdywgJ2luc2VydCcsICdib28nKSwgJycpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CmluZGV4IGZmNDQ4MjAuLjk5MTNlZDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLlJlcGxhY2VEaWFsb2ciIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLnJlcGxhY2UucHkiIiIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKQEAgLTYsOCArNiw4IEBACiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5SZXBsYWNlRGlhbG9nIGFzIHJkCitpbXBvcnQgaWRsZWxpYi5zZWFyY2hlbmdpbmUgYXMgc2UKK2Zyb20gaWRsZWxpYi5yZXBsYWNlIGltcG9ydCBSZXBsYWNlRGlhbG9nCiAKIG9yaWdfbWJveCA9IHNlLnRrTWVzc2FnZUJveAogc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKQEAgLTIxLDcgKzIxLDggQEAKICAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQogICAgICAgICBzZS50a01lc3NhZ2VCb3ggPSBNYm94CiAgICAgICAgIGNscy5lbmdpbmUgPSBzZS5TZWFyY2hFbmdpbmUoY2xzLnJvb3QpCi0gICAgICAgIGNscy5kaWFsb2cgPSByZC5SZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nID0gUmVwbGFjZURpYWxvZyhjbHMucm9vdCwgY2xzLmVuZ2luZSkKKyAgICAgICAgY2xzLmRpYWxvZy5iZWxsID0gbGFtYmRhOiBOb25lCiAgICAgICAgIGNscy5kaWFsb2cub2sgPSBNb2NrKCkKICAgICAgICAgY2xzLnRleHQgPSBUZXh0KGNscy5yb290KQogICAgICAgICBjbHMudGV4dC51bmRvX2Jsb2NrX3N0YXJ0ID0gTW9jaygpCkBAIC03MCw3ICs3MSw2IEBACiAgICAgICAgICMgdGV4dCBmb3VuZCBhbmQgcmVwbGFjZWQKICAgICAgICAgcHYuc2V0KCdhJykKICAgICAgICAgcnYuc2V0KCdhc2RmJykKLSAgICAgICAgc2VsZi5kaWFsb2cub3BlbihzZWxmLnRleHQpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBlcXVhbCh0ZXh0LmdldCgnMS44JywgJzEuMTInKSwgJ2FzZGYnKQogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHRleHQubWFya19zZXQoJ2luc2VydCcsICdlbmQnKQogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ1xubGluZTQyOicpCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCiAgICAgICAgIGVxdWFsKGJlZm9yZV90ZXh0LCBhZnRlcl90ZXh0KQpAQCAtMTkyLDcgKzE5Miw3IEBACiAgICAgICAgIHNlbGYuZW5naW5lLnJldmFyLnNldChUcnVlKQogCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcnYuc2V0KCdoZWxsbycpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBhZnRlcl90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQpAQCAtMjA3LDcgKzIwNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdFbXB0eScsIHNob3dlcnJvci5tZXNzYWdlKQogCi0gICAgICAgIHB2LnNldCgnW1xkJykKKyAgICAgICAgcHYuc2V0KHInW1xkJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdQYXR0ZXJuJywgc2hvd2Vycm9yLm1lc3NhZ2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKaW5kZXggMWM5MGI5My4uMTMwZTZiZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGlkbGVsaWIuUnN0cmlwRXh0ZW5zaW9uIGFzIHJzCitpbXBvcnQgaWRsZWxpYi5yc3RyaXAgYXMgcnMKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBFZGl0b3IKIAogY2xhc3MgcnN0cmlwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMSw3ICsyMSw3IEBACiAgICAgZGVmIHRlc3RfcnN0cmlwX211bHRpcGxlKHNlbGYpOgogICAgICAgICBlZGl0b3IgPSBFZGl0b3IoKQogICAgICAgICAjICBVbmNvbW1lbnQgZm9sbG93aW5nIHRvIHZlcmlmeSB0aGF0IHRlc3QgcGFzc2VzIHdpdGggcmVhbCB3aWRnZXRzLgotIyMgICAgICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKKyMjICAgICAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cgYXMgRWRpdG9yCiAjIyAgICAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUawogIyMgICAgICAgIGVkaXRvciA9IEVkaXRvcihyb290PVRrKCkpCiAgICAgICAgIHRleHQgPSBlZGl0b3IudGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YWFiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKQEAgLTAsMCArMSwyOSBAQAorJycnIFRlc3QgaWRsZWxpYi5zY3JvbGxlZGxpc3QuCisKK0NvdmVyYWdlOiAzOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBzY3JvbGxlZGxpc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBTY3JvbGxlZExpc3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBzY3JvbGxlZGxpc3QuU2Nyb2xsZWRMaXN0KHNlbGYucm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKaW5kZXggMTkwYzg2Ni4uODBmYTkzYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIFNlYXJjaERpYWxvZ3VlLnB5IiIiCisiIiJUZXN0IFNlYXJjaERpYWxvZyBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaC5weSIiIgogCiAjIERvZXMgbm90IGN1cnJlbnRseSB0ZXN0IHRoZSBldmVudCBoYW5kbGVyIHdyYXBwZXJzLgogIyBBIHVzYWdlIHRlc3Qgc2hvdWxkIHNpbXVsYXRlIGNsaWNrcyBhbmQgY2hlY2sgaGlsaWdodGluZy4KQEAgLTExLDggKzExLDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgQm9vbGVhblZhcgotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hEaWFsb2cgYXMgc2QKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQoraW1wb3J0IGlkbGVsaWIuc2VhcmNoIGFzIHNkCiAKIAogY2xhc3MgU2VhcmNoRGlhbG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yOSw2ICsyOSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYuZGlhbG9nID0gc2QuU2VhcmNoRGlhbG9nKHNlbGYucm9vdCwgc2VsZi5lbmdpbmUpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgc2VsZi50ZXh0ID0gdGsuVGV4dChzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICdIZWxsbyBXb3JsZCEnKQogCkBAIC0zOCw2ICszOSw3IEBACiAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCcnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJ0hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CmluZGV4IDgwMzZiOTEuLmQ3NjlmYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpAQCAtMSwxNCArMSwxMyBAQAotJycnVW5pdHRlc3RzIGZvciBpZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKKycnJ3Rlc3RzIGlkbGVsaWIuc2VhcmNoYmFzZS4KIAogQ292ZXJhZ2U6IDk5JS4gVGhlIG9ubHkgdGhpbmcgbm90IGNvdmVyZWQgaXMgaW5jb25zZXF1ZW50aWFsIC0tCiB0ZXN0aW5nIHNraXBwaW5nIG9mIHN1aXRlIHdoZW4gc2VsZi5uZWVkd3JhcGJ1dHRvbiBpcyBmYWxzZS4KLQogJycnCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVG9wbGV2ZWwsIEZyYW1lICMjLCBCb29sZWFuVmFyLCBTdHJpbmdWYXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UgYXMgc2RiCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hiYXNlIGFzIHNkYgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKICMjIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCiAKQEAgLTc0LDcgKzczLDcgQEAKICAgICBkZWYgdGVzdF9tYWtlX2VudHJ5KHNlbGYpOgogICAgICAgICBlcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBlbnRyeSwgbGFiZWwgPSBzZWxmLmRpYWxvZy5tYWtlX2VudHJ5KCJUZXN0OiIsICdoZWxsbycpCiAgICAgICAgIGVxdWFsKGxhYmVsWyd0ZXh0J10sICdUZXN0OicpCiAKQEAgLTg3LDYgKzg2LDcgQEAKICAgICAgICAgZXF1YWwoc2VsZi5kaWFsb2cucm93LCAxKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2VudHJpZXMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnaGVsbG8nKQogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfZW50cmllcygpCkBAIC05NCw3ICs5NCw3IEBACiAKICAgICBkZWYgdGVzdF9tYWtlX2ZyYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGZyYW1lLCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZnJhbWUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhYmVsLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZyYW1lLCBGcmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQogCiAgICAgZGVmIGJ0bl90ZXN0X3NldHVwKHNlbGYsIG1ldGgpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHJldHVybiBtZXRoKCkKIApAQCAtMTE5LDExICsxMTksNiBAQAogICAgICAgICAgICAgICAgIHZhciwgbGFiZWwgPSBzcGVjCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidXR0b25bJ3RleHQnXSwgbGFiZWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIHN0YXRlID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kZXNlbGVjdCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIDEgLSBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgogICAgICAgICBmb3Igc3RhdGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTEzOSwxOCArMTM0LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICMgaGl0IG90aGVyIGJ1dHRvbiwgdGhlbiB0aGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAjIGluZGV4ZXMgZGVwZW5kIG9uIGJ1dHRvbiBvcmRlcgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQotICAgICAgICAgICAgICAgICAgICBidXR0b25zWzEtdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCiAKICAgICBkZWYgdGVzdF9tYWtlX2J1dHRvbihzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cuYnV0dG9uZnJhbWUgPSBGcmFtZShzZWxmLmRpYWxvZy50b3ApCiAgICAgICAgIGJ0biA9IHNlbGYuZGlhbG9nLm1ha2VfYnV0dG9uKCdUZXN0Jywgc2VsZi5kaWFsb2cuY2xvc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnRuWyd0ZXh0J10sICdUZXN0JykKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfY29tbWFuZF9idXR0b25zKCkKICAgICAgICAgIyBMb29rIGZvciBjbG9zZSBidXR0b24gY29tbWFuZCBpbiBidXR0b25mcmFtZQogICAgICAgICBjbG9zZWJ1dHRvbmNvbW1hbmQgPSAnJwpAQCAtMTYwLDYgKzE1Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nsb3NlJywgY2xvc2VidXR0b25jb21tYW5kKQogCiAKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKaW5kZXggZWRiZDU1OC4uYjNhYThlYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgZnVuY3Rpb25zIGFuZCBTZWFyY2hFbmdpbmUgY2xhc3MgaW4gU2VhcmNoRW5naW5lLnB5LicnJworJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaGVuZ2luZS5weS4nJycKIAogIyBXaXRoIG1vY2sgcmVwbGFjZW1lbnRzLCB0aGUgbW9kdWxlIGRvZXMgbm90IHVzZSBhbnkgZ3VpIHdpZGdldHMuCiAjIFRoZSB1c2Ugb2YgdGsuVGV4dCBpcyBhdm9pZGVkIChmb3Igbm93LCB1bnRpbCBtb2NrIFRleHQgaXMgaW1wcm92ZWQpCkBAIC0xMCw3ICsxMCw3IEBACiAjIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCAgQm9vbGVhblZhciwgU3RyaW5nVmFyLCBUY2xFcnJvciAgIyAsVGssIFRleHQKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUgYXMgc2UKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbW9ja1RleHQKIApAQCAtMTM5LDEwICsxMzksMTAgQEAKIAogICAgIGRlZiB0ZXN0X3NldGNvb2tlZHBhdChzZWxmKToKICAgICAgICAgZW5naW5lID0gc2VsZi5lbmdpbmUKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KDEpCi0gICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQoJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXFxzJykKIAogICAgIGRlZiB0ZXN0X2dldGNvb2tlZHBhdChzZWxmKToKQEAgLTE1NiwxMCArMTU2LDEwIEBACiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcYmhlbGxvXGInKQogICAgICAgICBlbmdpbmUud29yZHZhci5zZXQoRmFsc2UpCiAKLSAgICAgICAgZW5naW5lLnNldHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0cGF0KHInXHMnKQogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksIHInXFxzJykKICAgICAgICAgZW5naW5lLnJldmFyLnNldChUcnVlKQotICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksICdccycpCisgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidccycpCiAKICAgICBkZWYgdGVzdF9nZXRwcm9nKHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQpAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgIGNscy5wYXQgPSByZS5jb21waWxlKCd0YXJnZXQnKQogICAgICAgICBjbHMucmVzID0gKDIsICgxMCwgMTYpKSAgIyBsaW5lLCBzbGljZSBpbmRleGVzIG9mICd0YXJnZXQnCiAgICAgICAgIGNscy5mYWlscGF0ID0gcmUuY29tcGlsZSgneHl6JykgICMgbm90IGluIHRleHQKLSAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZSgnXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKKyAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZShyJ1x3KicpICAjIGVtcHR5IG1hdGNoIHBvc3NpYmxlCiAKICAgICBkZWYgbWFrZV9zZWFyY2goc2VsZiwgZnVuYyk6CiAgICAgICAgIGRlZiBzZWFyY2gocGF0LCBsaW5lLCBjb2wsIHdyYXAsIG9rPTApOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKaW5kZXggN2U4MjNkZi4uYTViYTdiYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CkBAIC0xLDE3ICsxLDE5IEBACi0jIFRlc3QgbW9ja190ay5UZXh0IGNsYXNzIGFnYWluc3QgdGtpbnRlci5UZXh0IGNsYXNzIGJ5IHJ1bm5pbmcgc2FtZSB0ZXN0cyB3aXRoIGJvdGguCisnJycgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MKKworUnVuIHNhbWUgdGVzdHMgd2l0aCBib3RoIGJ5IGNyZWF0aW5nIGEgbWl4aW4gY2xhc3MuCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCi0KIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKIGNsYXNzIFRleHRUZXN0KG9iamVjdCk6CisgICAgIkRlZmluZSBpdGVtcyBjb21tb24gdG8gYm90aCBzZXRzIG9mIHRlc3RzLiIKIAotICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgdXN1YWwgaW5pdGlhbCBpbnNlcnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KKyAgICBodyA9ICdoZWxsb1xud29ybGQnICAjIFNldmVyYWwgdGVzdHMgaW5zZXJ0IHRoaXMgYWZ0ZXIgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCiAgICAgaHduID0gaHcrJ1xuJyAgIyBcbiBwcmVzZW50IGF0IGluaXRpYWxpemF0aW9uLCBiZWZvcmUgaW5zZXJ0CiAKLSAgICBUZXh0ID0gTm9uZQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKyAgICAjIHNldFVwQ2xhc3MgZGVmaW5lcyBjbHMuVGV4dCBhbmQgbWF5YmUgY2xzLnJvb3QuCisgICAgIyBzZXRVcCBkZWZpbmVzIHNlbGYudGV4dCBmcm9tIFRleHQgYW5kIG1heWJlIHJvb3QuCiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGV4dC5nZXQoJzEuMCcpLCAnXG4nKQpAQCAtMTk2LDYgKzE5OCwxMCBAQAogICAgICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQKICAgICAgICAgY2xzLlRleHQgPSBUZXh0CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGV4dCA9IHNlbGYuVGV4dCgpCisKKwogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKICAgICAgICAgIyB0ZXN0IGVuZGZsYWdzICgtMSwgMCkgbm90IHRlc3RlZCBieSB0ZXN0X2luZGV4ICh3aGljaCB1c2VzICsxKQogICAgICAgICBkZWNvZGUgPSBzZWxmLnRleHQuX2RlY29kZQpAQCAtMjIyLDYgKzIyOCw5IEBACiAgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQogICAgICAgICBkZWwgY2xzLnJvb3QKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KHNlbGYucm9vdCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CmluZGV4IDVkMmU2MDAuLmYwMThmNWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CkBAIC0xLDIxICsxLDIxIEBACi0nJydUZXN0IGlkbGVsaWIudGV4dFZpZXcuCisnJydUZXN0IGlkbGVsaWIudGV4dHZpZXcuCiAKIFNpbmNlIGFsbCBtZXRob2RzIGFuZCBmdW5jdGlvbnMgY3JlYXRlIChvciBkZXN0cm95KSBhIFRleHRWaWV3ZXIsIHdoaWNoCiBpcyBhIHdpZGdldCBjb250YWluaW5nIG11bHRpcGxlIHdpZGdldHMsIGFsbCB0ZXN0cyBtdXN0IGJlIGd1aSB0ZXN0cy4KIFVzaW5nIG1vY2sgVGV4dCB3b3VsZCBub3QgY2hhbmdlIHRoaXMuICBPdGhlciBtb2NrcyBhcmUgdXNlZCB0byByZXRyaWV2ZQogaW5mb3JtYXRpb24gYWJvdXQgY2FsbHMuCiAKLVRoZSBjb3ZlcmFnZSBpcyBlc3NlbnRpYWxseSAxMDAlLgorQ292ZXJhZ2U6IDk0JS4KICcnJworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldyBhcyB0dgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdHYKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiAKIGRlZiBzZXRVcE1vZHVsZSgpOgogICAgIGdsb2JhbCByb290CkBAIC02NCwxNyArNjQsMTcgQEAKICAgICAgICAgdmlldy5kZXN0cm95KCkKIAogCi1jbGFzcyB0ZXh0dmlld1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVmlld0Z1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdHYudGtNZXNzYWdlQm94Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IE1ib3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0di5zaG93ZXJyb3IKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gTWJveF9mdW5jKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKLSAgICAgICAgZGVsIGNscy5vcmlnX21ib3gKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKKyAgICAgICAgZGVsIGNscy5vcmlnX2Vycm9yCiAKICAgICBkZWYgdGVzdF92aWV3X3RleHQoc2VsZik6CiAgICAgICAgICMgSWYgbW9kYWwgVHJ1ZSwgZ2V0IHRrIGVycm9yICdjYW4ndCBpbnZva2UgImV2ZW50IiBjb21tYW5kJy4KQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignVGVzdCcsIHZpZXcudGV4dFZpZXcuZ2V0KCcxLjAnLCAnMS5lbmQnKSkKICAgICAgICAgdmlldy5PaygpCiAKLSAgICAgICAgIyBNb2NrIG1lc3NhZ2Vib3ggd2lsbCBiZSB1c2VkIGFuZCB2aWV3X2ZpbGUgd2lsbCBub3QgcmV0dXJuIGFueXRoaW5nCisgICAgICAgICMgTW9jayBzaG93ZXJyb3Igd2lsbCBiZSB1c2VkOyB2aWV3X2ZpbGUgd2lsbCByZXR1cm4gTm9uZS4KICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICcuLi9ub3R0aGVyZS5weScpCiAgICAgICAgIHZpZXcgPSB0di52aWV3X2ZpbGUocm9vdCwgJ1RpdGxlJywgdGVzdGZpbGUsIG1vZGFsPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliYTk2NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKQEAgLTAsMCArMSwzNiBAQAorJycnIFRlc3QgaWRsZWxpYi50cmVlLgorCitDb3ZlcmFnZTogNTYlCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdHJlZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrCisKKworY2xhc3MgVHJlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICMgU3RhcnQgd2l0aCBjb2RlIHNsaWdodGx5IGFkYXB0ZWQgZnJvbSBodGVzdC4KKyAgICAgICAgc2MgPSB0cmVlLlNjcm9sbGVkQ2FudmFzKAorICAgICAgICAgICAgc2VsZi5yb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCisgICAgICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiLCBzaWRlPSdsZWZ0JykKKyAgICAgICAgaXRlbSA9IHRyZWUuRmlsZVRyZWVJdGVtKHRyZWUuSUNPTkRJUikKKyAgICAgICAgbm9kZSA9IHRyZWUuVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQorICAgICAgICBub2RlLmV4cGFuZCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQppbmRleCAyYjgzYzk5Li5lODcyOTI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKQEAgLTEsNCArMSw0IEBACi0iIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLlVuZG9EZWxlZ2F0b3IuCisiIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLnVuZG8ucHkuCiAKIENvdmVyYWdlIGFib3V0IDgwJSAocmV0ZXN0KS4KICIiIgpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgogCiAKIGNsYXNzIFVuZG9EZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDggKzI5LDggQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5kZWxlZ2F0b3IgPSBVbmRvRGVsZWdhdG9yKCkKKyAgICAgICAgc2VsZi5kZWxlZ2F0b3IuYmVsbCA9IE1vY2soKQogICAgICAgICBzZWxmLnBlcmNvbGF0b3IuaW5zZXJ0ZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQotICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jayh3cmFwcz1zZWxmLmRlbGVnYXRvci5iZWxsKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnBlcmNvbGF0b3IucmVtb3ZlZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKaW5kZXggMTg2MjdkZC4uZjMyNjlmMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCB3YXJuaW5ncyByZXBsYWNlbWVudCBpbiBQeVNoZWxsLnB5IGFuZCBydW4ucHkuCisnJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIHB5c2hlbGwucHkgYW5kIHJ1bi5weS4KIAogVGhpcyBmaWxlIGNvdWxkIGJlIGV4cGFuZGVkIHRvIGluY2x1ZGUgdHJhY2ViYWNrIG92ZXJyaWRlcwogKGluIHNhbWUgdHdvIG1vZHVsZXMpLiBJZiBzbywgY2hhbmdlIG5hbWUuCkBAIC0xNyw5ICsxNyw5IEBACiBydW5uaW5nX2luX2lkbGUgPSAnaWRsZScgaW4gc2hvd3dhcm5pbmcuX19uYW1lX18KIAogZnJvbSBpZGxlbGliIGltcG9ydCBydW4KLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbCBhcyBzaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsIGFzIHNoZWxsCiAKLSMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKKyMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gcHlzaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKICMgYW5kIGNoZWNrZWQgYXMgbWF0Y2hpbmcgZXhwZWN0YXRpb24uCiBpZGxlbXNnID0gJycnCiBXYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U5ZjY5YS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIiIiCi1UaGUgc2VwYXJhdGUgSWRsZSB2ZXJzaW9uIHdhcyBlbGltaW5hdGVkIHllYXJzIGFnbzsKLWlkbGVsaWIuaWRsZXZlciBpcyBubyBsb25nZXIgdXNlZCBieSBJZGxlCi1hbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNiBvciBsYXRlci4gIFVzZQotICAgIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCi0gICAgSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQotIiIiCi0jIEtlcHQgZm9yIG5vdyBvbmx5IGZvciBwb3NzaWJsZSBleGlzdGluZyBleHRlbnNpb24gdXNlCi1pbXBvcnQgd2FybmluZ3MgYXMgdwotdy53YXJuKF9fZG9jX18sIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLUlETEVfVkVSU0lPTiA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lvbWVudS5weQppbmRleCA4NGYzOWEyLi4zNDE0YzdiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CkBAIC0xMCw1NyArMTAsNjAgQEAKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBmcm9tIHRraW50ZXIuc2ltcGxlZGlhbG9nIGltcG9ydCBhc2tzdHJpbmcKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitpbXBvcnQgaWRsZWxpYgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotCi0jIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0Ci0jIHdoYXQgZW5jb2RpbmcgdG8gdXNlCi10cnk6Ci0gICAgaW1wb3J0IGxvY2FsZQotICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIGxvY2FsZS5FcnJvcik6Ci0gICAgcGFzcwotCi0jIEVuY29kaW5nIGZvciBmaWxlIG5hbWVzCi1maWxlc3lzdGVtZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgICMjIyBjdXJyZW50bHkgdW51c2VkCi0KLWxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICMgT24gV2luZG93cywgd2UgY291bGQgdXNlICJtYmNzIi4gSG93ZXZlciwgdG8gZ2l2ZSB0aGUgdXNlcgotICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQotICAgIHRyeToKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgTG9va3VwRXJyb3I6Ci0gICAgICAgIHBhc3MKK2lmIGlkbGVsaWIudGVzdGluZzogICMgU2V0IFRydWUgYnkgdGVzdC50ZXN0X2lkbGUgdG8gYXZvaWQgc2V0bG9jYWxlLgorICAgIGVuY29kaW5nID0gJ3V0Zi04JwogZWxzZToKKyAgICAjIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0CisgICAgIyB3aGF0IGVuY29kaW5nIHRvIHVzZQogICAgIHRyeToKLSAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKLSAgICAgICAgIyBsb2FkZWQsIGl0IG1heSBub3Qgb2ZmZXIgbmxfbGFuZ2luZm8sIG9yIENPREVTRVQsIG9yIHRoZQotICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAotICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLm5sX2xhbmdpbmZvKGxvY2FsZS5DT0RFU0VUKQotICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6Ci0gICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKLSAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgZXhjZXB0IChOYW1lRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCi0gICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcwotICAgICAgICAjIGJ1Z3MgdGhhdCBjYW4gY2F1c2UgVmFsdWVFcnJvci4KKyAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgIiIpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgbG9jYWxlX2RlY29kZSA9ICdhc2NpaScKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCisgICAgICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCisgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRGlmZmVyZW50IHRoaW5ncyBjYW4gZmFpbCBoZXJlOiB0aGUgbG9jYWxlIG1vZHVsZSBtYXkgbm90IGJlCisgICAgICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCisgICAgICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAorICAgICAgICAgICAgIyB0aGVzZSBwcm9ibGVtcywgZmFsbGluZyBiYWNrIHRvIEFTQ0lJCisgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCiAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCiAgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCisgICAgICAgICAgICAjIHdoaWNoIG1heSBnaXZlIGEgY2x1ZS4gVW5mb3J0dW5hdGVseSwgZ2V0ZGVmYXVsdGxvY2FsZSBoYXMKKyAgICAgICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CisgICAgICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAorICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKLWxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZy5sb3dlcigpCisgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKIAotZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcgICMjIyBLQksgMDdTZXAwNyAgVGhpcyBpcyB1c2VkIGFsbCBvdmVyIElETEUsIGNoZWNrIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyAnZW5jb2RpbmcnIGlzIHVzZWQgYmVsb3cgaW4gZW5jb2RlKCksIGNoZWNrIQorICAgIGVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nCisgICAgIyBFbmNvZGluZyBpcyB1c2VkIGluIG11bHRpcGxlIGZpbGVzOyBsb2NhbGVfZW5jb2Rpbmcgbm93aGVyZS4KKyAgICAjIFRoZSBvbmx5IHVzZSBvZiAnZW5jb2RpbmcnIGJlbG93IGlzIGluIF9kZWNvZGUgYXMgaW5pdGlhbCB2YWx1ZQorICAgICMgb2YgZGVwcmVjYXRlZCBibG9jayBhc2tpbmcgdXNlciBmb3IgZW5jb2RpbmcuCisgICAgIyBQZXJoYXBzIHVzZSBlbHNld2hlcmUgc2hvdWxkIGJlIHJldmlld2VkLgogCiBjb2RpbmdfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qIy4qP2NvZGluZ1s6PV1bIFx0XSooWy1cdy5dKyknLCByZS5BU0NJSSkKIGJsYW5rX3JlID0gcmUuY29tcGlsZShyJ15bIFx0XGZdKig/OlsjXHJcbl18JCknLCByZS5BU0NJSSkKQEAgLTEwNyw2ICsxMTAsOSBAQAogCiAKIGNsYXNzIElPQmluZGluZzoKKyMgT25lIGluc3RhbmNlIHBlciBlZGl0b3IgV2luZG93IHNvIG1ldGhvZHMga25vdyB3aGljaCB0byBzYXZlLCBjbG9zZS4KKyMgT3BlbiByZXR1cm5zIGZvY3VzIHRvIHNlbGYuZWRpdHdpbiBpZiBhYm9ydGVkLgorIyBFZGl0b3JXaW5kb3cub3Blbl9tb2R1bGUsIG90aGVycywgYmVsb25nIGhlcmUuCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KQEAgLTMwMSw3ICszMDcsNyBAQAogICAgICAgICAgICAgICAgICJUaGUgZmlsZSdzIGVuY29kaW5nIGlzIGludmFsaWQgZm9yIFB5dGhvbiAzLnguXG4iCiAgICAgICAgICAgICAgICAgIklETEUgd2lsbCBjb252ZXJ0IGl0IHRvIFVURi04LlxuIgogICAgICAgICAgICAgICAgICJXaGF0IGlzIHRoZSBjdXJyZW50IGVuY29kaW5nIG9mIHRoZSBmaWxlPyIsCi0gICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gbG9jYWxlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgIGluaXRpYWx2YWx1ZSA9IGVuY29kaW5nLAogICAgICAgICAgICAgICAgIHBhcmVudCA9IHNlbGYuZWRpdHdpbi50ZXh0KQogCiAgICAgICAgICAgICBpZiBlbmM6CkBAIC01MjksOCArNTM1LDggQEAKIAogICAgIHJvb3QgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgcm9vdC50aXRsZSgiVGVzdCBJT0JpbmRpbmciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICBjbGFzcyBNeUVkaXRXaW46CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKICAgICAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKQEAgLTU2MSw1ICs1NjcsOCBAQAogICAgIElPQmluZGluZyhlZGl0d2luKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaW9tZW51JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2lvX2JpbmRpbmcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5IGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL21hY29zeC5weQppbmRleCBiOTZiYWUxLi5jMjI1ZGQ5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CisrKyBiL0xpYi9pZGxlbGliL21hY29zeC5weQpAQCAtMSwzMCArMSwyNSBAQAogIiIiCiBBIG51bWJlciBvZiBmdW5jdGlvbnMgdGhhdCBlbmhhbmNlIElETEUgb24gTWFjIE9TWC4KICIiIgotaW1wb3J0IHN5cwotaW1wb3J0IHRraW50ZXIKLWZyb20gb3MgaW1wb3J0IHBhdGgKK2Zyb20gc3lzIGltcG9ydCBwbGF0Zm9ybSAgIyBVc2VkIGluIF9pbml0X3RrX3R5cGUsIGNoYW5nZWQgYnkgdGVzdC4KIGltcG9ydCB3YXJuaW5ncwogCi1kZWYgcnVubmluZ0FzT1NYQXBwKCk6Ci0gICAgd2FybmluZ3Mud2FybigicnVubmluZ0FzT1NYQXBwKCkgaXMgZGVwcmVjYXRlZCwgdXNlIGlzQXF1YVRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQXF1YVRrKCkKK2ltcG9ydCB0a2ludGVyCiAKLWRlZiBpc0NhcmJvbkFxdWFUayhyb290KToKLSAgICB3YXJuaW5ncy53YXJuKCJpc0NhcmJvbkFxdWFUayhyb290KSBpcyBkZXByZWNhdGVkLCB1c2UgaXNDYXJib25UaygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiBpc0NhcmJvblRrKCkKKworIyMgRGVmaW5lIGZ1bmN0aW9ucyB0aGF0IHF1ZXJ5IHRoZSBNYWMgZ3JhcGhpY3MgdHlwZS4KKyMjIF90a190eXBlIGFuZCBpdHMgaW5pdGlhbGl6ZXIgYXJlIHByaXZhdGUgdG8gdGhpcyBzZWN0aW9uLgogCiBfdGtfdHlwZSA9IE5vbmUKIAotZGVmIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCk6CitkZWYgX2luaXRfdGtfdHlwZSgpOgogICAgICIiIgogICAgIEluaXRpYWxpemVzIE9TIFggVGsgdmFyaWFudCB2YWx1ZXMgZm9yCiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgYW5kIGlzWFF1YXJ0eigpLgogICAgICIiIgogICAgIGdsb2JhbCBfdGtfdHlwZQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKQogICAgICAgICB3cyA9IHJvb3QudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKICAgICAgICAgaWYgJ3gxMScgaW4gd3M6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJ4cXVhcnR6IgpAQCAtMzQsNiArMjksNyBAQAogICAgICAgICAgICAgX3RrX3R5cGUgPSAiY29jb2EiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjYXJib24iCisgICAgICAgIHJvb3QuZGVzdHJveSgpCiAgICAgZWxzZToKICAgICAgICAgX3RrX3R5cGUgPSAib3RoZXIiCiAKQEAgLTQxLDcgKzM3LDggQEAKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhIG5hdGl2ZSBPUyBYIFRrIChDb2NvYSBvciBDYXJib24pLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIgb3IgX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ2FyYm9uVGsoKToKQEAgLTQ5LDIzICs0NiwyNyBAQAogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ2FyYm9uIEFxdWEgVGsgKGluc3RlYWQgb2YgdGhlCiAgICAgbmV3ZXIgQ29jb2EgQXF1YSBUaykuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ29jb2FUaygpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ29jb2EgQXF1YSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY29jb2EiCiAKIGRlZiBpc1hRdWFydHooKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhbiBPUyBYIFgxMSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAieHF1YXJ0eiIKIAorCiBkZWYgdGtWZXJzaW9uV2FybmluZyhyb290KToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc3RyaW5nIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgVGsgdmVyc2lvbiBpbiB1c2UgYXBwZWFycyB0bwpAQCAtODYsNiArODcsOSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisKKyMjIEZpeCB0aGUgbWVudSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCisKIGRlZiBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCByZXNwb25kIHRvIG9wZW4gQXBwbGVFdmVudHMsIHdoaWNoCkBAIC0xMjQsMjMgKzEyOCwyMyBAQAogICAgICMgRHVlIHRvIGEgKG1pcy0pZmVhdHVyZSBvZiBUa0FxdWEgdGhlIHVzZXIgd2lsbCBhbHNvIHNlZSBhbiBlbXB0eSBIZWxwCiAgICAgIyBtZW51LgogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgTWVudQotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQmluZGluZ3MKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFdpbmRvd0xpc3QKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IG1haW5tZW51CisgICAgZnJvbSBpZGxlbGliIGltcG9ydCB3aW5kb3dzCiAKLSAgICBjbG9zZUl0ZW0gPSBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMl0KKyAgICBjbG9zZUl0ZW0gPSBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMl0KIAogICAgICMgUmVtb3ZlIHRoZSBsYXN0IDMgaXRlbXMgb2YgdGhlIGZpbGUgbWVudTogYSBzZXBhcmF0b3IsIGNsb3NlIHdpbmRvdyBhbmQKICAgICAjIHF1aXQuIENsb3NlIHdpbmRvdyB3aWxsIGJlIHJlaW5zZXJ0ZWQganVzdCBhYm92ZSB0aGUgc2F2ZSBpdGVtLCB3aGVyZQogICAgICMgaXQgc2hvdWxkIGJlIGFjY29yZGluZyB0byB0aGUgSElHLiBRdWl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMzpdCi0gICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbMF1bMV1bLTM6XQorICAgIG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdLmluc2VydCg2LCBjbG9zZUl0ZW0pCiAKICAgICAjIFJlbW92ZSB0aGUgJ0Fib3V0JyBlbnRyeSBmcm9tIHRoZSBoZWxwIG1lbnUsIGl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbgogICAgICMgbWVudQotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMV1bMV1bMDoyXQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMDoyXQogICAgICMgUmVtb3ZlIHRoZSAnQ29uZmlndXJlIElkbGUnIGVudHJ5IGZyb20gdGhlIG9wdGlvbnMgbWVudSwgaXQgaXMgaW4gdGhlCiAgICAgIyBhcHBsaWNhdGlvbiBtZW51IGFzICdQcmVmZXJlbmNlcycKLSAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTJdWzFdWzBdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0yXVsxXVswXQogICAgIG1lbnViYXIgPSBNZW51KHJvb3QpCiAgICAgcm9vdC5jb25maWd1cmUobWVudT1tZW51YmFyKQogICAgIG1lbnVkaWN0ID0ge30KQEAgLTE1NSwzMCArMTU5LDMwIEBACiAKICAgICAgICAgaWYgZW5kID4gMDoKICAgICAgICAgICAgIG1lbnUuZGVsZXRlKDAsIGVuZCkKLSAgICAgICAgV2luZG93TGlzdC5hZGRfd2luZG93c190b19tZW51KG1lbnUpCi0gICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCisgICAgICAgIHdpbmRvd3MuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2socG9zdHdpbmRvd3NtZW51KQogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZwotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBlZGl0b3IuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwX2Fib3V0CisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cocm9vdCwgJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdEaWFsb2cKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSByb290IG9iamVjdCBoYXMgYW4gaW5zdGFuY2VfZGljdCBhdHRyaWJ1dGUsCiAgICAgICAgICMgbWlycm9ycyBjb2RlIGluIEVkaXRvcldpbmRvdyAoYWx0aG91Z2ggdGhhdCBzZXRzIHRoZSBhdHRyaWJ1dGUKICAgICAgICAgIyBvbiBhbiBFZGl0b3JXaW5kb3cgaW5zdGFuY2UgdGhhdCBpcyB0aGVuIHBhc3NlZCBhcyB0aGUgZmlyc3QKICAgICAgICAgIyBhcmd1bWVudCB0byBDb25maWdEaWFsb2cpCiAgICAgICAgIHJvb3QuaW5zdGFuY2VfZGljdCA9IGZsaXN0LmludmVyc2VkaWN0Ci0gICAgICAgIGNvbmZpZ0RpYWxvZy5Db25maWdEaWFsb2cocm9vdCwgJ1NldHRpbmdzJykKKyAgICAgICAgY29uZmlnZGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQogCiAgICAgZGVmIGhlbHBfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0lETEUgSGVscCcgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaGVscAogICAgICAgICBoZWxwLnNob3dfaWRsZWhlbHAocm9vdCkKIApAQCAtMTk4LDI5ICsyMDIsMzMgQEAKICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtZW51YmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcm9mZj0wKQogICAgICAgICBtZW51YmFyLmFkZF9jYXNjYWRlKGxhYmVsPSdJRExFJywgbWVudT1tZW51KQotICAgICAgICBCaW5kaW5ncy5tZW51ZGVmcy5pbnNlcnQoMCwKKyAgICAgICAgbWFpbm1lbnUubWVudWRlZnMuaW5zZXJ0KDAsCiAgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uJywgWwogICAgICAgICAgICAgICAgICgnQWJvdXQgSURMRScsICc8PGFib3V0LWlkbGU+PicpLAogICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgIF0pKQotICAgICAgICB0a3ZlcnNpb24gPSByb290LnRrLmV2YWwoJ2luZm8gcGF0Y2hsZXZlbCcpCi0gICAgICAgIGlmIHR1cGxlKG1hcChpbnQsIHRrdmVyc2lvbi5zcGxpdCgnLicpKSkgPCAoOCwgNCwgMTQpOgotICAgICAgICAgICAgIyBmb3IgZWFybGllciBBcXVhVGsgdmVyc2lvbnMsIHN1cHBseSBhIFByZWZlcmVuY2VzIG1lbnUgaXRlbQotICAgICAgICAgICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAoJ19QcmVmZXJlbmNlcy4uLi4nLCAnPDxvcGVuLWNvbmZpZy1kaWFsb2c+PicpLAotICAgICAgICAgICAgICAgICkKICAgICBpZiBpc0NvY29hVGsoKToKICAgICAgICAgIyByZXBsYWNlIGRlZmF1bHQgQWJvdXQgZGlhbG9nIHdpdGggQWJvdXQgSURMRSBvbmUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCd0a0Fib3V0RGlhbG9nJywgYWJvdXRfZGlhbG9nKQogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCAiSGVscCIgaXRlbSBpbiBIZWxwIG1lbnUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCc6OnRrOjptYWM6OlNob3dIZWxwJywgaGVscF9kaWFsb2cpCiAgICAgICAgICMgcmVtb3ZlIHJlZHVuZGFudCAiSURMRSBIZWxwIiBmcm9tIG1lbnUKLSAgICAgICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswXQorICAgICAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTFdWzFdWzBdCisKK2RlZiBmaXhiMmNvbnRleHQocm9vdCk6CisgICAgJycnUmVtb3ZlZCBiYWQgQXF1YVRrIEJ1dHRvbi0yIChyaWdodCkgYW5kIFBhc3RlIGJpbmRpbmdzLgorCisgICAgVGhleSBwcmV2ZW50IGNvbnRleHQgbWVudSBhY2Nlc3MgYW5kIHNlZW0gdG8gYmUgZ29uZSBpbiBBcXVhVGs4LjYuCisgICAgU2VlIGlzc3VlICMyNDgwMS4KKyAgICAnJycKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjI+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCisgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPDxQYXN0ZVNlbGVjdGlvbj4+JykKIAogZGVmIHNldHVwQXBwKHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBQZXJmb3JtIGluaXRpYWwgT1MgWCBjdXN0b21pemF0aW9ucyBpZiBuZWVkZWQuCi0gICAgQ2FsbGVkIGZyb20gUHlTaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCisgICAgQ2FsbGVkIGZyb20gcHlzaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCiAKICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIG1ham9yIHZlcnNpb25zIG9mIFRrIGluIHVzZSBvbiBPUyBYOgogICAgICAgICAxLiBBcXVhIENvY29hIFRrIChuYXRpdmUgZGVmYXVsdCBzaW5jZSBPUyBYIDEwLjYpCkBAIC0yMzMsOCArMjQxLDEzIEBACiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgaXNYUXVhcnR6KCkgZnVuY3Rpb25zIHdoaWNoCiAgICAgYXJlIGluaXRpYWxpemVkIGhlcmUgYXMgd2VsbC4KICAgICAiIiIKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAgICAgaWYgaXNBcXVhVGsoKToKICAgICAgICAgaGlkZVRrQ29uc29sZShyb290KQogICAgICAgICBvdmVycmlkZVJvb3RNZW51KHJvb3QsIGZsaXN0KQogICAgICAgICBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KQorICAgICAgICBmaXhiMmNvbnRleHQocm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1haW4KKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X21hY29zeCcsIHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9CaW5kaW5ncy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKaW5kZXggZTE5YTI3OS4uNjUzNDVjZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkKKysrIGIvTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKQEAgLTEwLDkgKzEwLDkgQEAKICIiIgogZnJvbSBpbXBvcnRsaWIudXRpbCBpbXBvcnQgZmluZF9zcGVjCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51KCkKKyMgICBXYXJuaW5nOiBtZW51ZGVmcyBpcyBhbHRlcmVkIGluIG1hY29zeC5vdmVycmlkZVJvb3RNZW51KCkKICMgICBhZnRlciBpdCBpcyBkZXRlcm1pbmVkIHRoYXQgYW4gT1MgWCBBcXVhIFRrIGlzIGluIHVzZSwKICMgICB3aGljaCBjYW5ub3QgYmUgZG9uZSB1bnRpbCBhZnRlciBUaygpIGlzIGZpcnN0IGNhbGxlZC4KICMgICBEbyBub3QgYWx0ZXIgdGhlICdmaWxlJywgJ29wdGlvbnMnLCBvciAnaGVscCcgY2FzY2FkZXMgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5IGIvTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL011bHRpQ2FsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CmluZGV4IDg0NjI4NTQuLmI3NGZlZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL011bHRpQ2FsbC5weQorKysgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKQEAgLTI4LDkgKzI4LDkgQEAKICAgIHVubGVzcyB0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBmaXJzdCBydWxlLgogRWFjaCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggZXZlbnQuCiAiIiIKLQotaW1wb3J0IHN5cwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyCiAKICMgdGhlIGV2ZW50IHR5cGUgY29uc3RhbnRzLCB3aGljaCBkZWZpbmUgdGhlIG1lYW5pbmcgb2YgbWNfdHlwZQpAQCAtNDE0LDEyICs0MTQsMTIgQEAKICAgICByZXR1cm4gTXVsdGlDYWxsCiAKIAotZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRraW50ZXIuVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KShyb290KQorZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSB0a2ludGVyLlRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKHRraW50ZXIuVGV4dCkodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgZGVmIGJpbmRzZXEoc2VxLCBuPVswXSk6CiAgICAgICAgIGRlZiBoYW5kbGVyKGV2ZW50KToKQEAgLTQzOSw3ICs0MzksNiBAQAogICAgIGJpbmRzZXEoIjxGb2N1c091dD4iKQogICAgIGJpbmRzZXEoIjxFbnRlcj4iKQogICAgIGJpbmRzZXEoIjxMZWF2ZT4iKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5IGIvTGliL2lkbGVsaWIvb3V0d2luLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvb3V0d2luLnB5CmluZGV4IGU2MTRmOWIuLmY2ZDI5MTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKQEAgLTEsOCArMSwxMSBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKIGltcG9ydCByZQorCitmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZworCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CisKIAogY2xhc3MgT3V0cHV0V2luZG93KEVkaXRvcldpbmRvdyk6CiAKQEAgLTM2LDcgKzM5LDcgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzLCB0YWdzPSgpLCBtYXJrPSJpbnNlcnQiKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVzKSk6Ci0gICAgICAgICAgICBzID0gcy5kZWNvZGUoSU9CaW5kaW5nLmVuY29kaW5nLCAicmVwbGFjZSIpCisgICAgICAgICAgICBzID0gcy5kZWNvZGUoaW9tZW51LmVuY29kaW5nLCAicmVwbGFjZSIpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQobWFyaywgcywgdGFncykKICAgICAgICAgc2VsZi50ZXh0LnNlZShtYXJrKQogICAgICAgICBzZWxmLnRleHQudXBkYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmFncmFwaC5weQppbmRleCA3YTlkMTg1Li5mMTFiZGFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CkBAIC0xNCw5ICsxNCwxMCBAQAogICBzcGFjZXMsIHRoZXkgd2lsbCBub3QgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzYW1lIGJsb2NrLgogKiBGYW5jeSBjb21tZW50cywgbGlrZSB0aGlzIGJ1bGxldGVkIGxpc3QsIGFyZW4ndCBoYW5kbGVkIDotKQogIiIiCi0KIGltcG9ydCByZQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgRm9ybWF0UGFyYWdyYXBoOgogCkBAIC0xMjksNyArMTMwLDcgQEAKICAgICBwYXJ0aWFsID0gaW5kZW50MQogICAgIHdoaWxlIGkgPCBuIGFuZCBub3QgaXNfYWxsX3doaXRlKGxpbmVzW2ldKToKICAgICAgICAgIyBYWFggU2hvdWxkIHRha2UgZG91YmxlIHNwYWNlIGFmdGVyIHBlcmlvZCAoZXRjLikgaW50byBhY2NvdW50Ci0gICAgICAgIHdvcmRzID0gcmUuc3BsaXQoIihccyspIiwgbGluZXNbaV0pCisgICAgICAgIHdvcmRzID0gcmUuc3BsaXQociIoXHMrKSIsIGxpbmVzW2ldKQogICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBsZW4od29yZHMpLCAyKToKICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tqXQogICAgICAgICAgICAgaWYgbm90IHdvcmQ6CkBAIC0xODksNyArMTkwLDggQEAKICAgICBpZiBtIGlzIE5vbmU6IHJldHVybiAiIgogICAgIHJldHVybiBtLmdyb3VwKDEpCiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2Zvcm1hdHBhcmFncmFwaCcsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9wYXJhZ3JhcGgnLAogICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5IGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CmluZGV4IDQ3ZTEwZjMuLmNjZWM3MDggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpAQCAtNCw5ICs0LDggQEAKIHBhcmVuLiAgUGFyZW4gaGVyZSBpcyB1c2VkIGdlbmVyaWNhbGx5OyB0aGUgbWF0Y2hpbmcgYXBwbGllcyB0bwogcGFyZW50aGVzZXMsIHNxdWFyZSBicmFja2V0cywgYW5kIGN1cmx5IGJyYWNlcy4KICIiIgotCi1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIF9vcGVuZXJzID0geycpJzonKCcsJ10nOidbJywnfSc6J3snfQogQ0hFQ0tfREVMQVkgPSAxMDAgIyBtaWxsaXNlY29uZHMKQEAgLTY0LDYgKzYzLDcgQEAKICAgICAgICAgIyBhbmQgZGVhY3RpdmF0ZV9yZXN0b3JlICh3aGljaCBjYWxscyBldmVudF9kZWxldGUpLgogICAgICAgICBlZGl0d2luLnRleHQuYmluZChzZWxmLlJFU1RPUkVfVklSVFVBTF9FVkVOVF9OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3RvcmVfZXZlbnQpCisgICAgICAgIHNlbGYuYmVsbCA9IHNlbGYudGV4dC5iZWxsIGlmIHNlbGYuQkVMTCBlbHNlIGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLmNvdW50ZXIgPSAwCiAgICAgICAgIHNlbGYuaXNfcmVzdG9yZV9hY3RpdmUgPSAwCiAgICAgICAgIHNlbGYuc2V0X3N0eWxlKHNlbGYuU1RZTEUpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIGluZGljZXMgPSAoSHlwZXJQYXJzZXIoc2VsZi5lZGl0d2luLCAiaW5zZXJ0IikKICAgICAgICAgICAgICAgICAgICAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKCkpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpbmRpY2VzID0gaHAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKF9vcGVuZXJzW2Nsb3Nlcl0sIFRydWUpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMjQsMTAgKzEyNCw2IEBACiAgICAgICAgIGlmIHRpbWVyX2NvdW50ID09IHNlbGYuY291bnRlcjoKICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCgpCiAKLSAgICBkZWYgd2Fybl9taXNtYXRjaGVkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLkJFTEw6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCi0KICAgICAjIGFueSBvbmUgb2YgdGhlIGNyZWF0ZV90YWdfWFhYIG1ldGhvZHMgY2FuIGJlIHVzZWQgZGVwZW5kaW5nIG9uCiAgICAgIyB0aGUgc3R5bGUKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKaW5kZXggOWFiNzYzMi4uNmMxOTUwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbQotZnJvbSBpZGxlbGliLkNsYXNzQnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5icm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVJdGVtCiAKIAogY2xhc3MgUGF0aEJyb3dzZXIoQ2xhc3NCcm93c2VyKToKQEAgLTI0LDYgKzI0LDcgQEAKICAgICBkZWYgcm9vdG5vZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBQYXRoQnJvd3NlclRyZWVJdGVtKCkKIAorCiBjbGFzcyBQYXRoQnJvd3NlclRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBHZXRUZXh0KHNlbGYpOgpAQCAtMzYsNiArMzcsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBEaXJCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgcGFja2FnZXM9W10pOgpAQCAtOTUsNiArOTcsNyBAQAogICAgICAgICBzb3J0ZWQuc29ydCgpCiAgICAgICAgIHJldHVybiBzb3J0ZWQKIAorCiBkZWYgX3BhdGhfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QocGFyZW50KQogICAgIFBhdGhCcm93c2VyKGZsaXN0LCBfaHRlc3Q9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKaW5kZXggYjhiZTJhYS4uZDE4ZGFmMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CkBAIC0xLDUgKzEsNSBAQAotZnJvbSBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIFBlcmNvbGF0b3I6CkBAIC01Nyw3ICs1Nyw2IEBACiAKIGRlZiBfcGVyY29sYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKLSAgICBpbXBvcnQgcmUKIAogICAgIGNsYXNzIFRyYWNlcihEZWxlZ2F0b3IpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CkBAIC03NCw4ICs3Myw4IEBACiAKICAgICBib3ggPSB0ay5Ub3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFBlcmNvbGF0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gdGsuVGV4dChib3gpCiAgICAgcCA9IFBlcmNvbGF0b3IodGV4dCkKICAgICBwaW4gPSBwLmluc2VydGZpbHRlcgpAQCAtODksMTAgKzg4LDEwIEBACiAgICAgICAgIChwaW4gaWYgdmFyMi5nZXQoKSBlbHNlIHBvdXQpKHQyKQogCiAgICAgdGV4dC5wYWNrKCkKLSAgICB2YXIxID0gdGsuSW50VmFyKCkKKyAgICB2YXIxID0gdGsuSW50VmFyKHBhcmVudCkKICAgICBjYjEgPSB0ay5DaGVja2J1dHRvbihib3gsIHRleHQ9IlRyYWNlcjEiLCBjb21tYW5kPXRvZ2dsZTEsIHZhcmlhYmxlPXZhcjEpCiAgICAgY2IxLnBhY2soKQotICAgIHZhcjIgPSB0ay5JbnRWYXIoKQorICAgIHZhcjIgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMiA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMiIsIGNvbW1hbmQ9dG9nZ2xlMiwgdmFyaWFibGU9dmFyMikKICAgICBjYjIucGFjaygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5UGFyc2UucHkgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5UGFyc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5cGFyc2UucHkKaW5kZXggOWNjYmIyNS4uNjczOWRmZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weQorKysgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CkBAIC0xLDYgKzEsNiBAQAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFwcGluZwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiAKICMgUmVhc29uIGxhc3Qgc3RtdCBpcyBjb250aW51ZWQgKG9yIENfTk9ORSBpZiBpdCdzIG5vdCkuCiAoQ19OT05FLCBDX0JBQ0tTTEFTSCwgQ19TVFJJTkdfRklSU1RfTElORSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5U2hlbGwucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5c2hlbGwucHkKaW5kZXggNWRlYzY4ZS4uZjNlZTM5MSAxMDA3NTUKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CkBAIC0xLDggKzEsMjcgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKK3RyeToKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwcmludCgiKiogSURMRSBjYW4ndCBpbXBvcnQgVGtpbnRlci5cbiIKKyAgICAgICAgICAiWW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUay4gKioiLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpZiBUa1ZlcnNpb24gPCA4LjU6CisgICAgcm9vdCA9IFRrKCkgICMgb3RoZXJ3aXNlIGNyZWF0ZSByb290IGluIG1haW4KKyAgICByb290LndpdGhkcmF3KCkKKyAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJZGxlIENhbm5vdCBTdGFydCIsCisgICAgICAgICAgICAiSWRsZSByZXF1aXJlcyB0Y2wvdGsgOC41Kywgbm90ICVzLiIgJSBUa1ZlcnNpb24sCisgICAgICAgICAgICBwYXJlbnQ9cm9vdCkKKyAgICByYWlzZSBTeXN0ZW1FeGl0KDEpCisKK2Zyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgogaW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCitpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fdmVyc2lvbiwgc3lzdGVtCiBpbXBvcnQgcmUKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0xMCwzMCArMjksMjAgQEAKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBpbworaW1wb3J0IHdhcm5pbmdzCiAKLWltcG9ydCBsaW5lY2FjaGUKLWZyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgotZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQotCi10cnk6Ci0gICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcHJpbnQoIioqIElETEUgY2FuJ3QgaW1wb3J0IFRraW50ZXIuXG4iCi0gICAgICAgICAgIllvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsuICoqIiwgZmlsZT1zeXMuX19zdGRlcnJfXykKLSAgICBzeXMuZXhpdCgxKQotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLQotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93LCBmaXh3b3JkYnJlYWtzCi1mcm9tIGlkbGVsaWIuRmlsZUxpc3QgaW1wb3J0IEZpbGVMaXN0Ci1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLk91dHB1dFdpbmRvdyBpbXBvcnQgT3V0cHV0V2luZG93Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGVzdGluZyAgIyBib29sIHZhbHVlCitmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXJfcgorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93LCBmaXh3b3JkYnJlYWtzCitmcm9tIGlkbGVsaWIuZmlsZWxpc3QgaW1wb3J0IEZpbGVMaXN0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLm91dHdpbiBpbXBvcnQgT3V0cHV0V2luZG93CiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJwYwotZnJvbSBpZGxlbGliIGltcG9ydCBEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIucnVuIGltcG9ydCBpZGxlX2Zvcm1hdHdhcm5pbmcsIFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKIAogSE9TVCA9ICcxMjcuMC4wLjEnICMgcHl0aG9uIGV4ZWN1dGlvbiBzZXJ2ZXIgb24gbG9jYWxob3N0IGxvb3BiYWNrCiBQT1JUID0gMCAgIyBzb21lZGF5IHBhc3MgaW4gaG9zdCwgcG9ydCBmb3IgcmVtb3RlIGRlYnVnIGNhcGFiaWxpdHkKQEAgLTQzLDIwICs1Miw2IEBACiAjIHRlbXBvcmFyaWx5IHJlZGlyZWN0IHRoZSBzdHJlYW0gdG8gdGhlIHNoZWxsIHdpbmRvdyB0byBkaXNwbGF5IHdhcm5pbmdzIHdoZW4KICMgY2hlY2tpbmcgdXNlcidzIGNvZGUuCiB3YXJuaW5nX3N0cmVhbSA9IHN5cy5fX3N0ZGVycl9fICAjIE5vbmUsIGF0IGxlYXN0IG9uIFdpbmRvd3MsIGlmIG5vIGNvbnNvbGUuCi1pbXBvcnQgd2FybmluZ3MKLQotZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKLSAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgotCi0gICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKLSAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKLSAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgaWYgbGluZToKLSAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQotICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKLSAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZygKICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKQEAgLTQxMCw3ICs0MDUsNyBAQAogICAgICAgICAjIHJ1biBmcm9tIHRoZSBJRExFIHNvdXJjZSBkaXJlY3RvcnkuCiAgICAgICAgIGRlbF9leGl0ZiA9IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdHZW5lcmFsJywgJ2RlbGV0ZS1leGl0ZnVuYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCB0eXBlPSdib29sJykKLSAgICAgICAgaWYgX19uYW1lX18gPT0gJ2lkbGVsaWIuUHlTaGVsbCc6CisgICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLnB5c2hlbGwnOgogICAgICAgICAgICAgY29tbWFuZCA9ICJfX2ltcG9ydF9fKCdpZGxlbGliLnJ1bicpLnJ1bi5tYWluKCVyKSIgJSAoZGVsX2V4aXRmLCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygncnVuJykubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCkBAIC00NjgsNyArNDYzLDcgQEAKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBPbmx5IGNsb3NlIHN1YnByb2Nlc3MgZGVidWdnZXIsIGRvbid0IHVucmVnaXN0ZXIgZ3VpX2FkYXAhCi0gICAgICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIuY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9yLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEtpbGwgc3VicHJvY2Vzcywgc3Bhd24gYSBuZXcgb25lLCBhY2NlcHQgY29ubmVjdGlvbi4KQEAgLTQ5Nyw3ICs0OTIsNyBAQAogICAgICAgICAjIHJlc3RhcnQgc3VicHJvY2VzcyBkZWJ1Z2dlcgogICAgICAgICBpZiBkZWJ1ZzoKICAgICAgICAgICAgICMgUmVzdGFydGVkIGRlYnVnZ2VyIGNvbm5lY3RzIHRvIGN1cnJlbnQgaW5zdGFuY2Ugb2YgZGVidWcgR1VJCi0gICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICBkZWJ1Z2dlcl9yLnJlc3RhcnRfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKICAgICAgICAgICAgICMgcmVsb2FkIHJlbW90ZSBkZWJ1Z2dlciBicmVha3BvaW50cyBmb3IgYWxsIFB5U2hlbGxFZGl0V2luZG93cwogICAgICAgICAgICAgZGVidWcubG9hZF9icmVha3BvaW50cygpCiAgICAgICAgIHNlbGYuY29tcGlsZS5jb21waWxlci5mbGFncyA9IHNlbGYub3JpZ2luYWxfY29tcGlsZXJfZmxhZ3MKQEAgLTU3OCw3ICs1NzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYudGtjb25zb2xlLmdldHZhcigiPDx0b2dnbGUtaml0LXN0YWNrLXZpZXdlcj4+Iik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlX3N0YWNrX3ZpZXdlcigpCiAgICAgICAgICAgICBlbGlmIGhvdyA9PSAiRVJST1IiOgotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJQeVNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCisgICAgICAgICAgICAgICAgZXJybXNnID0gInB5c2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlcjogU3VicHJvY2VzcyBFUlJPUjpcbiIKICAgICAgICAgICAgICAgICBwcmludChlcnJtc2csIHdoYXQsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPWNvbnNvbGUpCiAgICAgICAgICAgICAjIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnRseSBhY3RpdmUgc2VxIG51bWJlcjoKQEAgLTYxMywxMyArNjA4LDEzIEBACiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHJlbW90ZV9zdGFja192aWV3ZXIoc2VsZik6Ci0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlT2JqZWN0QnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnb2JqX3IKICAgICAgICAgb2lkID0gc2VsZi5ycGNjbHQucmVtb3RlcXVldWUoImV4ZWMiLCAic3RhY2t2aWV3ZXIiLCAoImZsaXN0IiwpLCB7fSkKICAgICAgICAgaWYgb2lkIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLnRrY29uc29sZS5yb290LmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGl0ZW0gPSBSZW1vdGVPYmplY3RCcm93c2VyLlN0dWJPYmplY3RUcmVlSXRlbShzZWxmLnJwY2NsdCwgb2lkKQotICAgICAgICBmcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgU2Nyb2xsZWRDYW52YXMsIFRyZWVOb2RlCisgICAgICAgIGl0ZW0gPSBkZWJ1Z29ial9yLlN0dWJPYmplY3RUcmVlSXRlbShzZWxmLnJwY2NsdCwgb2lkKQorICAgICAgICBmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgU2Nyb2xsZWRDYW52YXMsIFRyZWVOb2RlCiAgICAgICAgIHRvcCA9IFRvcGxldmVsKHNlbGYudGtjb25zb2xlLnJvb3QpCiAgICAgICAgIHRoZW1lID0gaWRsZUNvbmYuQ3VycmVudFRoZW1lKCkKICAgICAgICAgYmFja2dyb3VuZCA9IGlkbGVDb25mLkdldEhpZ2hsaWdodCh0aGVtZSwgJ25vcm1hbCcpWydiYWNrZ3JvdW5kJ10KQEAgLTY2Miw5ICs2NTcsOSBAQAogICAgICAgICAjIGF0IHRoZSBtb21lbnQsIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgZXhwZWN0cyBzdHIKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBzdHIpCiAgICAgICAgICNpZiBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKToKLSAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZworICAgICAgICAjICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CiAgICAgICAgICMgICAgdHJ5OgotICAgICAgICAjICAgICAgICBzb3VyY2UgPSBzb3VyY2UuZW5jb2RlKElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShpb21lbnUuZW5jb2RpbmcpCiAgICAgICAgICMgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICAgIyAgICAgICAgc2VsZi50a2NvbnNvbGUucmVzZXRvdXRwdXQoKQogICAgICAgICAjICAgICAgICBzZWxmLndyaXRlKCJVbnN1cHBvcnRlZCBjaGFyYWN0ZXJzIGluIGlucHV0XG4iKQpAQCAtODUwLDcgKzg0NSw3IEBACiAKIAogICAgICMgTmV3IGNsYXNzZXMKLSAgICBmcm9tIGlkbGVsaWIuSWRsZUhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKKyAgICBmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUpOgogICAgICAgICBpZiB1c2Vfc3VicHJvY2VzczoKQEAgLTg4OCwxMSArODgzLDExIEBACiAgICAgICAgIHNlbGYuc2F2ZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHNlbGYuc2F2ZV9zdGRlcnIgPSBzeXMuc3RkZXJyCiAgICAgICAgIHNlbGYuc2F2ZV9zdGRpbiA9IHN5cy5zdGRpbgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZwotICAgICAgICBzZWxmLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYsICJzdGRpbiIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRvdXQiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3RkZXJyIiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLmNvbnNvbGUgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJjb25zb2xlIiwgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQorICAgICAgICBzZWxmLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYsICJzdGRpbiIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRvdXQiLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3RkZXJyIiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLmNvbnNvbGUgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJjb25zb2xlIiwgaW9tZW51LmVuY29kaW5nKQogICAgICAgICBpZiBub3QgdXNlX3N1YnByb2Nlc3M6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5zdGRvdXQKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzZWxmLnN0ZGVycgpAQCAtOTAwLDcgKzg5NSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgcGFnZSBoZWxwKCkgdGV4dCB0byBzaGVsbC4KICAgICAgICAgICAgIGltcG9ydCBweWRvYyAjIGltcG9ydCBtdXN0IGJlIGRvbmUgaGVyZSB0byBjYXB0dXJlIGkvbyByZWJpbmRpbmcuCi0gICAgICAgICAgICAjIFhYWCBLQksgMjdEZWMwNyB1c2UgYSB0ZXh0VmlldyBzb21lZGF5LCBidXQgbXVzdCB3b3JrIHcvbyBzdWJwcm9jCisgICAgICAgICAgICAjIFhYWCBLQksgMjdEZWMwNyB1c2UgVGV4dFZpZXdlciBzb21lZGF5LCBidXQgbXVzdCB3b3JrIHcvbyBzdWJwcm9jCiAgICAgICAgICAgICBweWRvYy5wYWdlciA9IHB5ZG9jLnBsYWlucGFnZXIKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCkBAIC05NTQsNyArOTQ5LDcgQEAKICAgICAgICAgICAgIHNlbGYuaW50ZXJwLnNldGRlYnVnZ2VyKE5vbmUpCiAgICAgICAgICAgICBkYi5jbG9zZSgpCiAgICAgICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCkKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9yLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCiAgICAgICAgICAgICBzZWxmLnJlc2V0b3V0cHV0KCkKICAgICAgICAgICAgIHNlbGYuY29uc29sZS53cml0ZSgiW0RFQlVHIE9GRl1cbiIpCiAgICAgICAgICAgICBzeXMucHMxID0gIj4+PiAiCkBAIC05NjMsMTAgKzk1OCwxMCBAQAogCiAgICAgZGVmIG9wZW5fZGVidWdnZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaW50ZXJwLnJwY2NsdDoKLSAgICAgICAgICAgIGRiZ19ndWkgPSBSZW1vdGVEZWJ1Z2dlci5zdGFydF9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0LAorICAgICAgICAgICAgZGJnX2d1aSA9IGRlYnVnZ2VyX3Iuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRiZ19ndWkgPSBEZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQorICAgICAgICAgICAgZGJnX2d1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHNlbGYpCiAgICAgICAgIHNlbGYuaW50ZXJwLnNldGRlYnVnZ2VyKGRiZ19ndWkpCiAgICAgICAgIGRiZ19ndWkubG9hZF9icmVha3BvaW50cygpCiAgICAgICAgIHN5cy5wczEgPSAiW0RFQlVHIE9OXVxuPj4+ICIKQEAgLTEyNDEsNyArMTIzNiw3IEBACiAgICAgICAgICAgICAgICAgIihzeXMubGFzdF90cmFjZWJhY2sgaXMgbm90IGRlZmluZWQpIiwKICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5TdGFja1ZpZXdlciBpbXBvcnQgU3RhY2tCcm93c2VyCisgICAgICAgIGZyb20gaWRsZWxpYi5zdGFja3ZpZXdlciBpbXBvcnQgU3RhY2tCcm93c2VyCiAgICAgICAgIFN0YWNrQnJvd3NlcihzZWxmLnJvb3QsIHNlbGYuZmxpc3QpCiAKICAgICBkZWYgdmlld19yZXN0YXJ0X21hcmsoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC0xMzA5LDkyICsxMzA0LDYgQEAKICAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnCiAgICAgICAgIHJldHVybiBzdXBlcigpLnJtZW51X2NoZWNrX3Bhc3RlKCkKIAotY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAotICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCi0gICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBlbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncwotCi0gICAgZGVmIGlzYXR0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1jbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRlKHNlbGYsIHMpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCi0gICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKLSAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQotICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCi0KLQotY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKLQotICAgIGRlZiByZWFkYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIHNpemUgPSAtMQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQotICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQotICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKLSAgICAgICAgaWYgZW9sID49IDA6Ci0gICAgICAgICAgICBzaXplID0gZW9sICsgMQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCi0gICAgICAgIHJldHVybiBsaW5lWzpzaXplXQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKLQogCiBkZWYgZml4X3gxMV9wYXN0ZShyb290KToKICAgICAiTWFrZSBwYXN0ZSByZXBsYWNlIHNlbGVjdGlvbiBvbiB4MTEuICBTZWUgaXNzdWUgIzUxMjQuIgpAQCAtMTU0MCw3ICsxNDQ5LDEwIEBACiAgICAgZW5hYmxlX2VkaXQgPSBlbmFibGVfZWRpdCBvciBlZGl0X3N0YXJ0CiAgICAgZW5hYmxlX3NoZWxsID0gZW5hYmxlX3NoZWxsIG9yIG5vdCBlbmFibGVfZWRpdAogCi0gICAgIyBzdGFydCBlZGl0b3IgYW5kL29yIHNoZWxsIHdpbmRvd3M6CisgICAgIyBTZXR1cCByb290LiAgRG9uJ3QgYnJlYWsgdXNlciBjb2RlIHJ1biBpbiBJRExFIHByb2Nlc3MuCisgICAgIyBEb24ndCBjaGFuZ2UgZW52aXJvbm1lbnQgd2hlbiB0ZXN0aW5nLgorICAgIGlmIHVzZV9zdWJwcm9jZXNzIGFuZCBub3QgdGVzdGluZzoKKyAgICAgICAgTm9EZWZhdWx0Um9vdCgpCiAgICAgcm9vdCA9IFRrKGNsYXNzTmFtZT0iSWRsZSIpCiAgICAgcm9vdC53aXRoZHJhdygpCiAKQEAgLTE1NDksMjUgKzE0NjEsMTkgQEAKICAgICBpZiBzeXN0ZW0oKSA9PSAnV2luZG93cyc6CiAgICAgICAgIGljb25maWxlID0gb3MucGF0aC5qb2luKGljb25kaXIsICdpZGxlLmljbycpCiAgICAgICAgIHJvb3Qud21faWNvbmJpdG1hcChkZWZhdWx0PWljb25maWxlKQotICAgIGVsaWYgVGtWZXJzaW9uID49IDguNToKKyAgICBlbHNlOgogICAgICAgICBleHQgPSAnLnBuZycgaWYgVGtWZXJzaW9uID49IDguNiBlbHNlICcuZ2lmJwogICAgICAgICBpY29uZmlsZXMgPSBbb3MucGF0aC5qb2luKGljb25kaXIsICdpZGxlXyVkJXMnICUgKHNpemUsIGV4dCkpCiAgICAgICAgICAgICAgICAgICAgICBmb3Igc2l6ZSBpbiAoMTYsIDMyLCA0OCldCi0gICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UoZmlsZT1pY29uZmlsZSkgZm9yIGljb25maWxlIGluIGljb25maWxlc10KKyAgICAgICAgaWNvbnMgPSBbUGhvdG9JbWFnZShtYXN0ZXI9cm9vdCwgZmlsZT1pY29uZmlsZSkKKyAgICAgICAgICAgICAgICAgZm9yIGljb25maWxlIGluIGljb25maWxlc10KICAgICAgICAgcm9vdC53bV9pY29ucGhvdG8oVHJ1ZSwgKmljb25zKQogCisgICAgIyBzdGFydCBlZGl0b3IgYW5kL29yIHNoZWxsIHdpbmRvd3M6CiAgICAgZml4d29yZGJyZWFrcyhyb290KQogICAgIGZpeF94MTFfcGFzdGUocm9vdCkKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIG1hY29zeFN1cHBvcnQuc2V0dXBBcHAocm9vdCwgZmxpc3QpCi0KLSAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6Ci0gICAgICAgICMgVGhlcmUgYXJlIHNvbWUgc2NyZXdlZCB1cCA8Mj4gY2xhc3MgYmluZGluZ3MgZm9yIHRleHQKLSAgICAgICAgIyB3aWRnZXRzIGRlZmluZWQgaW4gVGsgd2hpY2ggd2UgbmVlZCB0byBkbyBhd2F5IHdpdGguCi0gICAgICAgICMgU2VlIGlzc3VlICMyNDgwMS4KLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPDxQYXN0ZVNlbGVjdGlvbj4+JykKKyAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCiAKICAgICBpZiBlbmFibGVfZWRpdDoKICAgICAgICAgaWYgbm90IChjbWQgb3Igc2NyaXB0KToKQEAgLTE1ODIsNyArMTQ4OCw3IEBACiAgICAgICAgIHNoZWxsID0gZmxpc3Qub3Blbl9zaGVsbCgpCiAgICAgICAgIGlmIG5vdCBzaGVsbDoKICAgICAgICAgICAgIHJldHVybiAjIGNvdWxkbid0IG9wZW4gc2hlbGwKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpIGFuZCBmbGlzdC5kaWN0OgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKICAgICAgICAgICAgICMgT24gT1NYOiB3aGVuIHRoZSB1c2VyIGhhcyBkb3VibGUtY2xpY2tlZCBvbiBhIGZpbGUgdGhhdCBjYXVzZXMKICAgICAgICAgICAgICMgSURMRSB0byBiZSBsYXVuY2hlZCB0aGUgc2hlbGwgd2luZG93IHdpbGwgb3BlbiBqdXN0IGluIGZyb250IG9mCiAgICAgICAgICAgICAjIHRoZSBmaWxlIHNoZSB3YW50cyB0byBzZWUuIExvd2VyIHRoZSBpbnRlcnByZXRlciB3aW5kb3cgd2hlbgpAQCAtMTYxNiw3ICsxNTIyLDcgQEAKICAgICAgICAgIyBjaGVjayBmb3IgcHJvYmxlbWF0aWMgT1MgWCBUayB2ZXJzaW9ucyBhbmQgcHJpbnQgYSB3YXJuaW5nCiAgICAgICAgICMgbWVzc2FnZSBpbiB0aGUgSURMRSBzaGVsbCB3aW5kb3c7IHRoaXMgaXMgbGVzcyBpbnRydXNpdmUKICAgICAgICAgIyB0aGFuIGFsd2F5cyBvcGVuaW5nIGEgc2VwYXJhdGUgd2luZG93LgotICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4U3VwcG9ydC50a1ZlcnNpb25XYXJuaW5nKHJvb3QpCisgICAgICAgIHRrdmVyc2lvbndhcm5pbmcgPSBtYWNvc3gudGtWZXJzaW9uV2FybmluZyhyb290KQogICAgICAgICBpZiB0a3ZlcnNpb253YXJuaW5nOgogICAgICAgICAgICAgc2hlbGwuaW50ZXJwLnJ1bmNvbW1hbmQoInByaW50KCclcycpIiAlIHRrdmVyc2lvbndhcm5pbmcpCiAKQEAgLTE2MjYsNyArMTUzMiw3IEBACiAgICAgY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBzeXMubW9kdWxlc1snUHlTaGVsbCddID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KKyAgICBzeXMubW9kdWxlc1sncHlzaGVsbCddID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KICAgICBtYWluKCkKIAogY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkgICMgTWFrZSBzdXJlIHR1cm5lZCBvZmY7IHNlZSBpc3N1ZSAxODA4MQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcXVlcnkucHkgYi9MaWIvaWRsZWxpYi9xdWVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjFmMWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvcXVlcnkucHkKQEAgLTAsMCArMSwzMDggQEAKKyIiIgorRGlhbG9ncyB0aGF0IHF1ZXJ5IHVzZXJzIGFuZCB2ZXJpZnkgdGhlIGFuc3dlciBiZWZvcmUgYWNjZXB0aW5nLgorVXNlIHR0ayB3aWRnZXRzLCBsaW1pdGluZyB1c2UgdG8gdGNsL3RrIDguNSssIGFzIGluIElETEUgMy42Ky4KKworUXVlcnkgaXMgdGhlIGdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgYSBwb3B1cCBkaWFsb2cuCitUaGUgdXNlciBtdXN0IGVpdGhlciBlbnRlciBhIHZhbGlkIGFuc3dlciBvciBjbG9zZSB0aGUgZGlhbG9nLgorRW50cmllcyBhcmUgdmFsaWRhdGVkIHdoZW4gPFJldHVybj4gaXMgZW50ZXJlZCBvciBbT2tdIGlzIGNsaWNrZWQuCitFbnRyaWVzIGFyZSBpZ25vcmVkIHdoZW4gW0NhbmNlbF0gb3IgW1hdIGFyZSBjbGlja2VkLgorVGhlICdyZXR1cm4gdmFsdWUnIGlzIC5yZXN1bHQgc2V0IHRvIGVpdGhlciBhIHZhbGlkIGFuc3dlciBvciBOb25lLgorCitTdWJjbGFzcyBTZWN0aW9uTmFtZSBnZXRzIGEgbmFtZSBmb3IgYSBuZXcgY29uZmlnIGZpbGUgc2VjdGlvbi4KK0NvbmZpZ2RpYWxvZyB1c2VzIGl0IGZvciBuZXcgaGlnaGxpZ2h0IHRoZW1lIGFuZCBrZXliaW5kaW5nIHNldCBuYW1lcy4KK1N1YmNsYXNzIE1vZHVsZU5hbWUgZ2V0cyBhIG5hbWUgZm9yIEZpbGUgPT4gT3BlbiBNb2R1bGUuCitTdWJjbGFzcyBIZWxwU291cmNlIGdldHMgbWVudSBpdGVtIGFuZCBwYXRoIGZvciBhZGRpdGlvbnMgdG8gSGVscCBtZW51LgorIiIiCisjIFF1ZXJ5IGFuZCBTZWN0aW9uIG5hbWUgcmVzdWx0IGZyb20gc3BsaXR0aW5nIEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCisjIG9mIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5ICh0ZW1wb3JhcmlseSBjb25maWdfc2VjLnB5KSBpbnRvCisjIGdlbmVyaWMgYW5kIHNwZWNpZmljIHBhcnRzLiAgMy42IG9ubHksIEp1bHkgMjAxNi4KKyMgTW9kdWxlTmFtZS5lbnRyeV9vayBjYW1lIGZyb20gZWRpdG9yLkVkaXRvcldpbmRvdy5sb2FkX21vZHVsZS4KKyMgSGVscFNvdXJjZSB3YXMgZXh0cmFjdGVkIGZyb20gY29uZmlnSGVscFNvdXJjZUVkaXQucHkgKHRlbXBvcmFyaWx5CisjIGNvbmZpZ19oZWxwLnB5KSwgd2l0aCBkYXJ3aW4gY29kZSBtb3ZlZCBmcm9tIG9rIHRvIHBhdGhfb2suCisKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBvcworZnJvbSBzeXMgaW1wb3J0IGV4ZWN1dGFibGUsIHBsYXRmb3JtICAjIFBsYXRmb3JtIGlzIHNldCBmb3Igb25lIHRlc3QuCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFN0cmluZ1ZhciwgVywgRSwgTiwgUworZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgRnJhbWUsIEJ1dHRvbiwgRW50cnksIExhYmVsCitmcm9tIHRraW50ZXIgaW1wb3J0IGZpbGVkaWFsb2cKK2Zyb20gdGtpbnRlci5mb250IGltcG9ydCBGb250CisKK2NsYXNzIFF1ZXJ5KFRvcGxldmVsKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBnZXR0aW5nIHZlcmlmaWVkIGFuc3dlciBmcm9tIGEgdXNlci4KKworICAgIEZvciB0aGlzIGJhc2UgY2xhc3MsIGFjY2VwdCBhbnkgbm9uLWJsYW5rIHN0cmluZy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgKiwgdGV4dDA9JycsIHVzZWRfbmFtZXM9e30sCisgICAgICAgICAgICAgICAgIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiQ3JlYXRlIHBvcHVwLCBkbyBub3QgcmV0dXJuIHVudGlsIHRrIHdpZGdldCBkZXN0cm95ZWQuCisKKyAgICAgICAgQWRkaXRpb25hbCBzdWJjbGFzcyBpbml0IG11c3QgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyB0aGlzCisgICAgICAgIHVubGVzcyAgX3V0ZXN0PVRydWUgaXMgcGFzc2VkIHRvIHN1cHByZXNzIHdhaXRfd2luZG93KCkuCisKKyAgICAgICAgdGl0bGUgLSBzdHJpbmcsIHRpdGxlIG9mIHBvcHVwIGRpYWxvZworICAgICAgICBtZXNzYWdlIC0gc3RyaW5nLCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheQorICAgICAgICB0ZXh0MCAtIGluaXRpYWwgdmFsdWUgZm9yIGVudHJ5CisgICAgICAgIHVzZWRfbmFtZXMgLSBuYW1lcyBhbHJlYWR5IGluIHVzZQorICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAorICAgICAgICBfdXRlc3QgLSBib29sLCBsZWF2ZSB3aW5kb3cgaGlkZGVuIGFuZCBub3QgbW9kYWwKKyAgICAgICAgIiIiCisgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKKyAgICAgICAgc2VsZi53aXRoZHJhdygpICAjIEhpZGUgd2hpbGUgY29uZmlndXJpbmcsIGVzcGVjaWFsbHkgZ2VvbWV0cnkuCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYudGl0bGUodGl0bGUpCisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi50ZXh0MCA9IHRleHQwCisgICAgICAgIHNlbGYudXNlZF9uYW1lcyA9IHVzZWRfbmFtZXMKKyAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQorICAgICAgICBzZWxmLmdyYWJfc2V0KCkKKyAgICAgICAgd2luZG93aW5nc3lzdGVtID0gc2VsZi50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQorICAgICAgICBpZiB3aW5kb3dpbmdzeXN0ZW0gPT0gJ2FxdWEnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnOjp0azo6dW5zdXBwb3J0ZWQ6Ok1hY1dpbmRvd1N0eWxlJywgJ3N0eWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdywgJ21vdmVhYmxlTW9kYWwnLCAnJykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmJpbmQoIjxDb21tYW5kLS4+Iiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1Fc2NhcGU+Jywgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5iaW5kKCc8S2V5LVJldHVybj4nLCBzZWxmLm9rKQorICAgICAgICBzZWxmLmJpbmQoIjxLUF9FbnRlcj4iLCBzZWxmLm9rKQorICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RmFsc2UsIHdpZHRoPUZhbHNlKQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkgICMgTmVlZGVkIGhlcmUgZm9yIHdpbmZvX3JlcXdpZHRoIGJlbG93LgorICAgICAgICBzZWxmLmdlb21ldHJ5KCAgIyBDZW50ZXIgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpLgorICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCisgICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCisgICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApCisgICAgICAgICAgICAgICAgKSApCisgICAgICAgIGlmIG5vdCBfdXRlc3Q6CisgICAgICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICAjIFVuaGlkZSBub3cgdGhhdCBnZW9tZXRyeSBzZXQuCisgICAgICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKKworICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKTogICMgQ2FsbCBmcm9tIG92ZXJyaWRlLCBpZiBhbnkuCisgICAgICAgICMgQmluZCB0byBzZWxmIHdpZGdldHMgbmVlZGVkIGZvciBlbnRyeV9vayBvciB1bml0dGVzdC4KKyAgICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lID0gRnJhbWUoc2VsZiwgcGFkZGluZz0xMCkKKyAgICAgICAgZnJhbWUuZ3JpZChjb2x1bW49MCwgcm93PTAsIHN0aWNreT0nbmV3cycpCisgICAgICAgIGZyYW1lLmdyaWRfY29sdW1uY29uZmlndXJlKDAsIHdlaWdodD0xKQorCisgICAgICAgIGVudHJ5bGFiZWwgPSBMYWJlbChmcmFtZSwgYW5jaG9yPSd3JywganVzdGlmeT0nbGVmdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PXNlbGYubWVzc2FnZSkKKyAgICAgICAgc2VsZi5lbnRyeXZhciA9IFN0cmluZ1ZhcihzZWxmLCBzZWxmLnRleHQwKQorICAgICAgICBzZWxmLmVudHJ5ID0gRW50cnkoZnJhbWUsIHdpZHRoPTMwLCB0ZXh0dmFyaWFibGU9c2VsZi5lbnRyeXZhcikKKyAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorICAgICAgICBzZWxmLmVycm9yX2ZvbnQgPSBGb250KG5hbWU9J1RrQ2FwdGlvbkZvbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cz1UcnVlLCByb290PXNlbGYucGFyZW50KQorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yID0gTGFiZWwoZnJhbWUsIHRleHQ9JyAnLCBmb3JlZ3JvdW5kPSdyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisgICAgICAgIHNlbGYuYnV0dG9uX29rID0gQnV0dG9uKAorICAgICAgICAgICAgICAgIGZyYW1lLCB0ZXh0PSdPSycsIGRlZmF1bHQ9J2FjdGl2ZScsIGNvbW1hbmQ9c2VsZi5vaykKKyAgICAgICAgc2VsZi5idXR0b25fY2FuY2VsID0gQnV0dG9uKAorICAgICAgICAgICAgICAgIGZyYW1lLCB0ZXh0PSdDYW5jZWwnLCBjb21tYW5kPXNlbGYuY2FuY2VsKQorCisgICAgICAgIGVudHJ5bGFiZWwuZ3JpZChjb2x1bW49MCwgcm93PTAsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VykKKyAgICAgICAgc2VsZi5lbnRyeS5ncmlkKGNvbHVtbj0wLCByb3c9MSwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgICBwYWR5PVsxMCwwXSkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MiwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorICAgICAgICBzZWxmLmJ1dHRvbl9vay5ncmlkKGNvbHVtbj0xLCByb3c9OTksIHBhZHg9NSkKKyAgICAgICAgc2VsZi5idXR0b25fY2FuY2VsLmdyaWQoY29sdW1uPTIsIHJvdz05OSwgcGFkeD01KQorCisgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlLCB3aWRnZXQ9Tm9uZSk6CisgICAgICAgICNzZWxmLmJlbGwoZGlzcGxheW9mPXNlbGYpCisgICAgICAgICh3aWRnZXQgb3Igc2VsZi5lbnRyeV9lcnJvcilbJ3RleHQnXSA9ICdFUlJPUjogJyArIG1lc3NhZ2UKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKTogICMgRXhhbXBsZTogdXN1YWxseSByZXBsYWNlLgorICAgICAgICAiUmV0dXJuIG5vbi1ibGFuayBlbnRyeSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGVudHJ5OgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ2JsYW5rIGxpbmUuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBlbnRyeQorCisgICAgZGVmIG9rKHNlbGYsIGV2ZW50PU5vbmUpOiAgIyBEbyBub3QgcmVwbGFjZS4KKyAgICAgICAgJycnSWYgZW50cnkgaXMgdmFsaWQsIGJpbmQgaXQgdG8gJ3Jlc3VsdCcgYW5kIGRlc3Ryb3kgdGsgd2lkZ2V0LgorCisgICAgICAgIE90aGVyd2lzZSBsZWF2ZSBkaWFsb2cgb3BlbiBmb3IgdXNlciB0byBjb3JyZWN0IGVudHJ5IG9yIGNhbmNlbC4KKyAgICAgICAgJycnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeV9vaygpCisgICAgICAgIGlmIGVudHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBlbnRyeQorICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgW09rXSBtb3ZlcyBmb2N1cy4gICg8UmV0dXJuPiBkb2VzIG5vdC4pICBNb3ZlIGl0IGJhY2suCisgICAgICAgICAgICBzZWxmLmVudHJ5LmZvY3VzX3NldCgpCisKKyAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOiAgIyBEbyBub3QgcmVwbGFjZS4KKyAgICAgICAgIlNldCBkaWFsb2cgcmVzdWx0IHRvIE5vbmUgYW5kIGRlc3Ryb3kgdGsgd2lkZ2V0LiIKKyAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCisgICAgICAgIHNlbGYuZGVzdHJveSgpCisKKworY2xhc3MgU2VjdGlvbk5hbWUoUXVlcnkpOgorICAgICJHZXQgYSBuYW1lIGZvciBhIGNvbmZpZyBmaWxlIHNlY3Rpb24gbmFtZS4iCisgICAgIyBVc2VkIGluIENvbmZpZ0RpYWxvZy5HZXROZXdLZXlzTmFtZSwgLkdldE5ld1RoZW1lTmFtZSAoODM3KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXMsCisgICAgICAgICAgICAgICAgICosIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzPXVzZWRfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBzZW5zaWJsZSBDb25maWdQYXJzZXIgc2VjdGlvbiBuYW1lIG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIG5hbWUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIGxlbihuYW1lKT4zMDoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCduYW1lIGlzIGxvbmdlciB0aGFuIDMwIGNoYXJhY3RlcnMuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbmFtZSBpbiBzZWxmLnVzZWRfbmFtZXM6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBhbHJlYWR5IGluIHVzZS4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIG5hbWUKKworCitjbGFzcyBNb2R1bGVOYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbW9kdWxlIG5hbWUgZm9yIE9wZW4gTW9kdWxlIG1lbnUgZW50cnkuIgorICAgICMgVXNlZCBpbiBvcGVuX21vZHVsZSAoZWRpdG9yLkVkaXRvcldpbmRvdyB1bnRpbCBtb3ZlIHRvIGlvYmluZGluZykuCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDAsCisgICAgICAgICAgICAgICAgICosIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MD10ZXh0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBlbnRlcmVkIG1vZHVsZSBuYW1lIGFzIGZpbGUgcGF0aCBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBYWFggT3VnaHQgdG8gaW5zZXJ0IGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeSBpbiBmcm9udCBvZiBwYXRoLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKHN0cihtc2cpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoIm1vZHVsZSBub3QgZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYy5sb2FkZXIsIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyKToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJub3QgYSBzb3VyY2UtYmFzZWQgbW9kdWxlIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlX3BhdGgKKworCitjbGFzcyBIZWxwU291cmNlKFF1ZXJ5KToKKyAgICAiR2V0IG1lbnUgbmFtZSBhbmQgaGVscCBzb3VyY2UgZm9yIEhlbHAgbWVudS4iCisgICAgIyBVc2VkIGluIENvbmZpZ0RpYWxvZy5IZWxwTGlzdEl0ZW1BZGQvRWRpdCwgKDk0MS85KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsICosIG1lbnVpdGVtPScnLCBmaWxlcGF0aD0nJywKKyAgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz17fSwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICAiIiJHZXQgbWVudSBlbnRyeSBhbmQgdXJsL2xvY2FsIGZpbGUgZm9yIEFkZGl0aW9uYWwgSGVscC4KKworICAgICAgICBVc2VyIGVudGVycyBhIG5hbWUgZm9yIHRoZSBIZWxwIHJlc291cmNlIGFuZCBhIHdlYiB1cmwgb3IgZmlsZQorICAgICAgICBuYW1lLiBUaGUgdXNlciBjYW4gYnJvd3NlIGZvciB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZmlsZXBhdGggPSBmaWxlcGF0aAorICAgICAgICBtZXNzYWdlID0gJ05hbWUgZm9yIGl0ZW0gb24gSGVscCBtZW51OicKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygKKyAgICAgICAgICAgICAgICBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MD1tZW51aXRlbSwKKyAgICAgICAgICAgICAgICB1c2VkX25hbWVzPXVzZWRfbmFtZXMsIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBmcmFtZSA9IHNlbGYuZnJhbWUKKyAgICAgICAgcGF0aGxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdIZWxwIEZpbGUgUGF0aDogRW50ZXIgVVJMIG9yIGJyb3dzZSBmb3IgZmlsZScpCisgICAgICAgIHNlbGYucGF0aHZhciA9IFN0cmluZ1ZhcihzZWxmLCBzZWxmLmZpbGVwYXRoKQorICAgICAgICBzZWxmLnBhdGggPSBFbnRyeShmcmFtZSwgdGV4dHZhcmlhYmxlPXNlbGYucGF0aHZhciwgd2lkdGg9NDApCisgICAgICAgIGJyb3dzZSA9IEJ1dHRvbihmcmFtZSwgdGV4dD0nQnJvd3NlJywgd2lkdGg9OCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5icm93c2VfZmlsZSkKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yID0gTGFiZWwoZnJhbWUsIHRleHQ9JyAnLCBmb3JlZ3JvdW5kPSdyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PXNlbGYuZXJyb3JfZm9udCkKKworICAgICAgICBwYXRobGFiZWwuZ3JpZChjb2x1bW49MCwgcm93PTEwLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgcGFkeT1bMTAsMF0sCisgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XKQorICAgICAgICBzZWxmLnBhdGguZ3JpZChjb2x1bW49MCwgcm93PTExLCBjb2x1bW5zcGFuPTIsIHBhZHg9NSwgc3RpY2t5PVcrRSwKKyAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIGJyb3dzZS5ncmlkKGNvbHVtbj0yLCByb3c9MTEsIHBhZHg9NSwgc3RpY2t5PVcrUykKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yLmdyaWQoY29sdW1uPTAsIHJvdz0xMiwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XK0UpCisKKyAgICBkZWYgYXNrZmlsZW5hbWUoc2VsZiwgZmlsZXR5cGVzLCBpbml0ZGlyLCBpbml0ZmlsZSk6ICAjIGh0ZXN0ICMKKyAgICAgICAgIyBFeHRyYWN0ZWQgZnJvbSBicm93c2VfZmlsZSBzbyBjYW4gbW9jayBmb3IgdW5pdHRlc3RzLgorICAgICAgICAjIENhbm5vdCB1bml0dGVzdCBhcyBjYW5ub3Qgc2ltdWxhdGUgYnV0dG9uIGNsaWNrcy4KKyAgICAgICAgIyBUZXN0IGJ5IHJ1bm5pbmcgaHRlc3QsIHN1Y2ggYXMgYnkgcnVubmluZyB0aGlzIGZpbGUuCisgICAgICAgIHJldHVybiBmaWxlZGlhbG9nLk9wZW4ocGFyZW50PXNlbGYsIGZpbGV0eXBlcz1maWxldHlwZXMpXAorICAgICAgICAgICAgICAgLnNob3coaW5pdGlhbGRpcj1pbml0ZGlyLCBpbml0aWFsZmlsZT1pbml0ZmlsZSkKKworICAgIGRlZiBicm93c2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZXR5cGVzID0gWworICAgICAgICAgICAgKCJIVE1MIEZpbGVzIiwgIiouaHRtICouaHRtbCIsICJURVhUIiksCisgICAgICAgICAgICAoIlBERiBGaWxlcyIsICIqLnBkZiIsICJURVhUIiksCisgICAgICAgICAgICAoIldpbmRvd3MgSGVscCBGaWxlcyIsICIqLmNobSIpLAorICAgICAgICAgICAgKCJUZXh0IEZpbGVzIiwgIioudHh0IiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiQWxsIEZpbGVzIiwgIioiKV0KKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aHZhci5nZXQoKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmFzZSA9IE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtWzozXSA9PSAnd2luJzoKKyAgICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpLCAnRG9jJykKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgorICAgICAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICBmaWxlID0gc2VsZi5hc2tmaWxlbmFtZShmaWxldHlwZXMsIGRpciwgYmFzZSkKKyAgICAgICAgaWYgZmlsZToKKyAgICAgICAgICAgIHNlbGYucGF0aHZhci5zZXQoZmlsZSkKKworICAgIGl0ZW1fb2sgPSBTZWN0aW9uTmFtZS5lbnRyeV9vayAgIyBsb2NhbGl6ZSBmb3IgdGVzdCBvdmVycmlkZQorCisgICAgZGVmIHBhdGhfb2soc2VsZik6CisgICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIG1lbnUgZmlsZSBwYXRoIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IHBhdGg6ICNubyBwYXRoIHNwZWNpZmllZAorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIGhlbHAgZmlsZSBwYXRoIHNwZWNpZmllZC4nLCBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cuJywgJ2h0dHAnKSk6CisgICAgICAgICAgICBpZiBwYXRoWzo1XSA9PSAnZmlsZTonOgorICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzU6XQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdoZWxwIGZpbGUgcGF0aCBkb2VzIG5vdCBleGlzdC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6ICAjIGZvciBNYWMgU2FmYXJpCisgICAgICAgICAgICAgICAgcGF0aCA9ICAiZmlsZTovLyIgKyBwYXRoCisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gYXBwYXJlbnRseSB2YWxpZCAobmFtZSwgcGF0aCkgb3IgTm9uZSIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5pdGVtX29rKCkKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aF9vaygpCisgICAgICAgIHJldHVybiBOb25lIGlmIG5hbWUgaXMgTm9uZSBvciBwYXRoIGlzIE5vbmUgZWxzZSAobmFtZSwgcGF0aCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcXVlcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihRdWVyeSwgSGVscFNvdXJjZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkgYi9MaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKaW5kZXggYjY2YmU5ZS4uZWM2ODFkZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQorKysgYi9MaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CkBAIC0xMDQsNyArMTA0LDcgQEAKIAogICAgICAgICBOb3RlIHRoYXQgaWYgYSByZWdpc3RlcmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIG9wZXJhdGlvbiBpcyBub3QKICAgICAgICAgcGFzc2VkIHRocm91Z2ggdG8gVGsuICBBcHBseSB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgc2VsZi5yZWdpc3RlcigpCi0gICAgICAgIHRvICphcmdzIHRvIGFjY29tcGxpc2ggdGhhdC4gIEZvciBhbiBleGFtcGxlLCBzZWUgQ29sb3JEZWxlZ2F0b3IucHkuCisgICAgICAgIHRvICphcmdzIHRvIGFjY29tcGxpc2ggdGhhdC4gIEZvciBhbiBleGFtcGxlLCBzZWUgY29sb3JpemVyLnB5LgogCiAgICAgICAgICcnJwogICAgICAgICBtID0gc2VsZi5fb3BlcmF0aW9ucy5nZXQob3BlcmF0aW9uKQpAQCAtMTUxLDE0ICsxNTEsMTMgQEAKIAogCiBkZWYgX3dpZGdldF9yZWRpcmVjdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci0gICAgaW1wb3J0IHJlCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAogCi0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gVGV4dChyb290KQorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgV2lkZ2V0UmVkaXJlY3RvciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0ZXh0ID0gVGV4dCh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICB0ZXh0LmZvY3VzX3NldCgpCiAgICAgcmVkaXIgPSBXaWRnZXRSZWRpcmVjdG9yKHRleHQpCkBAIC0xNjYsMTEgKzE2NSwxMSBAQAogICAgICAgICBwcmludCgiaW5zZXJ0IiwgYXJncykKICAgICAgICAgb3JpZ2luYWxfaW5zZXJ0KCphcmdzKQogICAgIG9yaWdpbmFsX2luc2VydCA9IHJlZGlyLnJlZ2lzdGVyKCJpbnNlcnQiLCBteV9pbnNlcnQpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF93aWRnZXRyZWRpcicsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZWRpcmVjdG9yJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF93aWRnZXRfcmVkaXJlY3RvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JlcGxhY2UucHkKaW5kZXggZjJlYTIyZS4uYWJkOWU1OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9yZXBsYWNlLnB5CkBAIC0zLDE4ICszLDE4IEBACiBEZWZpbmVzIHZhcmlvdXMgcmVwbGFjZSByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHJlcGxhY2UsIHJlcGxhY2UgYWxsLAogcmVwbGFjZStmaW5kLgogIiIiCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLQotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCiBpbXBvcnQgcmUKIAorZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIFRjbEVycm9yCisKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQogCiBkZWYgcmVwbGFjZSh0ZXh0KToKICAgICAiIiJSZXR1cm5zIGEgc2luZ2xldG9uIFJlcGxhY2VEaWFsb2cgaW5zdGFuY2UuVGhlIHNpbmdsZSBkaWFsb2cKICAgICAgc2F2ZXMgdXNlciBlbnRyaWVzIGFuZCBwcmVmZXJlbmNlcyBhY3Jvc3MgaW5zdGFuY2VzLiIiIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9yZXBsYWNlZGlhbG9nIik6CiAgICAgICAgIGVuZ2luZS5fcmVwbGFjZWRpYWxvZyA9IFJlcGxhY2VEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIGRpYWxvZyA9IGVuZ2luZS5fcmVwbGFjZWRpYWxvZwpAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIHJlcyA9IHNlbGYuZW5naW5lLnNlYXJjaF90ZXh0KHRleHQsIHByb2cpCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoInNlbCIsICIxLjAiLCAiZW5kIikKICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJoaXQiLCAiMS4wIiwgImVuZCIpCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBOb25lLCBvaykKICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGxpbmUsIG0gPSByZXMKICAgICAgICAgaSwgaiA9IG0uc3BhbigpCkBAIC0xNjQsNyArMTY0LDcgQEAKICAgICAgICAgICAgIHBvcyA9IE5vbmUKICAgICAgICAgaWYgbm90IHBvczoKICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IHBvcyA9IHRleHQuaW5kZXgoImluc2VydCIpCi0gICAgICAgIGxpbmUsIGNvbCA9IFNlYXJjaEVuZ2luZS5nZXRfbGluZV9jb2wocG9zKQorICAgICAgICBsaW5lLCBjb2wgPSBzZWFyY2hlbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKICAgICAgICAgY2hhcnMgPSB0ZXh0LmdldCgiJWQuMCIgJSBsaW5lLCAiJWQuMCIgJSAobGluZSsxKSkKICAgICAgICAgbSA9IHByb2cubWF0Y2goY2hhcnMsIGNvbCkKICAgICAgICAgaWYgbm90IHByb2c6CkBAIC0yMDQsMTEgKzIwNCwxMyBAQAogCiAKIGRlZiBfcmVwbGFjZV9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgICIiImh0ZXN0IHdyYXBwZXIgZnVuY3Rpb24iIiIKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBFTkQsIFNFTAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorCiAgICAgYm94ID0gVG9wbGV2ZWwocGFyZW50KQogICAgIGJveC50aXRsZSgiVGVzdCBSZXBsYWNlRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogCiAgICAgIyBtb2NrIHVuZG8gZGVsZWdhdG9yIG1ldGhvZHMKICAgICBkZWYgdW5kb19ibG9ja19zdGFydCgpOgpAQCAtMjM0LDcgKzIzNiw3IEBACiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlZGlhbG9nJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlcGxhY2UnLAogICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ycGMucHkgYi9MaWIvaWRsZWxpYi9ycGMucHkKaW5kZXggNDgxMDVmMi4uOGY1N2VkYjggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3JwYy5weQorKysgYi9MaWIvaWRsZWxpYi9ycGMucHkKQEAgLTI2LDIzICsyNiwyMSBAQAogYWNjb21wbGlzaGVkIGluIElkbGUuCiAKICIiIgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGNvcHlyZWcKIGltcG9ydCBpbwotaW1wb3J0IHNvY2tldAoraW1wb3J0IG1hcnNoYWwKK2ltcG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHF1ZXVlCiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CiBpbXBvcnQgc29ja2V0c2VydmVyCiBpbXBvcnQgc3RydWN0Ci1pbXBvcnQgcGlja2xlCitpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgcXVldWUKIGltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCBjb3B5cmVnCiBpbXBvcnQgdHlwZXMKLWltcG9ydCBtYXJzaGFsCi1pbXBvcnQgYnVpbHRpbnMKLQogCiBkZWYgdW5waWNrbGVfY29kZShtcyk6CiAgICAgY28gPSBtYXJzaGFsLmxvYWRzKG1zKQpAQCAtNjAsMTAgKzU4LDEyIEBACiAgICAgcC5kdW1wKG9iaikKICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCiAKKwogY2xhc3MgQ29kZVBpY2tsZXIocGlja2xlLlBpY2tsZXIpOgogICAgIGRpc3BhdGNoX3RhYmxlID0ge3R5cGVzLkNvZGVUeXBlOiBwaWNrbGVfY29kZX0KICAgICBkaXNwYXRjaF90YWJsZS51cGRhdGUoY29weXJlZy5kaXNwYXRjaF90YWJsZSkKIAorCiBCVUZTSVpFID0gOCoxMDI0CiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCkBAIC00ODcsMTYgKzQ4NywxOSBAQAogICAgICMgVG9rZW4gbWl4LWluIGNsYXNzCiAgICAgcGFzcwogCisKIGRlZiByZW1vdGVyZWYob2JqKToKICAgICBvaWQgPSBpZChvYmopCiAgICAgb2JqZWN0dGFibGVbb2lkXSA9IG9iagogICAgIHJldHVybiBSZW1vdGVQcm94eShvaWQpCiAKKwogY2xhc3MgUmVtb3RlUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvaWQpOgogICAgICAgICBzZWxmLm9pZCA9IG9pZAogCisKIGNsYXNzIFJQQ0hhbmRsZXIoc29ja2V0c2VydmVyLkJhc2VSZXF1ZXN0SGFuZGxlciwgU29ja2V0SU8pOgogCiAgICAgZGVidWdnaW5nID0gRmFsc2UKQEAgLTUxNCw2ICs1MTcsNyBAQAogICAgIGRlZiBnZXRfcmVtb3RlX3Byb3h5KHNlbGYsIG9pZCk6CiAgICAgICAgIHJldHVybiBSUENQcm94eShzZWxmLCBvaWQpCiAKKwogY2xhc3MgUlBDQ2xpZW50KFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MzksNiArNTQzLDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ1Byb3h5KG9iamVjdCk6CiAKICAgICBfX21ldGhvZHMgPSBOb25lCkBAIC01ODcsNiArNTkyLDcgQEAKICAgICAgICAgaWYgbm90IGNhbGxhYmxlKGF0dHIpOgogICAgICAgICAgICAgYXR0cmlidXRlc1tuYW1lXSA9IDEKIAorCiBjbGFzcyBNZXRob2RQcm94eShvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tpbywgb2lkLCBuYW1lKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weSBiL0xpYi9pZGxlbGliL3JzdHJpcC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUnN0cmlwRXh0ZW5zaW9uLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yc3RyaXAucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3J1bi5weSBiL0xpYi9pZGxlbGliL3J1bi5weQppbmRleCAyOGNlNDIwLi5hZmE5NzQ0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ydW4ucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuLnB5CkBAIC0xLDMzICsxLDQ1IEBACi1pbXBvcnQgc3lzCitpbXBvcnQgaW8KIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBxdWV1ZQoraW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCi1pbXBvcnQgdGtpbnRlcgoraW1wb3J0IHdhcm5pbmdzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcHMKLWZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlCitpbXBvcnQgdGtpbnRlciAgIyBUY2wsIGRlbGV0aW9ucywgbWVzc2FnZWJveCBpZiBzdGFydHVwIGZhaWxzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlT2JqZWN0QnJvd3NlcgotZnJvbSBpZGxlbGliIGltcG9ydCBTdGFja1ZpZXdlcgotZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAotZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLQorZnJvbSBpZGxlbGliIGltcG9ydCBhdXRvY29tcGxldGUgICMgQXV0b0NvbXBsZXRlLCBmZXRjaF9lbmNvZGluZ3MKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY2FsbHRpcHMgICMgQ2FsbFRpcHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXJfciAgIyBzdGFydF9kZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yICAjIHJlbW90ZV9vYmplY3RfdHJlZV9pdGVtCitmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudSAgIyBlbmNvZGluZworZnJvbSBpZGxlbGliIGltcG9ydCBycGMgICMgbXVsdGlwbGUgb2JqZWN0cworZnJvbSBpZGxlbGliIGltcG9ydCBzdGFja3ZpZXdlciAgIyBTdGFja1RyZWVJdGVtCiBpbXBvcnQgX19tYWluX18KIAogZm9yIG1vZCBpbiAoJ3NpbXBsZWRpYWxvZycsICdtZXNzYWdlYm94JywgJ2ZvbnQnLAogICAgICAgICAgICAgJ2RpYWxvZycsICdmaWxlZGlhbG9nJywgJ2NvbW1vbmRpYWxvZycsCi0gICAgICAgICAgICAnY29sb3JjaG9vc2VyJyk6CisgICAgICAgICAgICAndHRrJyk6CiAgICAgZGVsYXR0cih0a2ludGVyLCBtb2QpCiAgICAgZGVsIHN5cy5tb2R1bGVzWyd0a2ludGVyLicgKyBtb2RdCiAKIExPQ0FMSE9TVCA9ICcxMjcuMC4wLjEnCiAKLWltcG9ydCB3YXJuaW5ncworCitkZWYgaWRsZV9mb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgorICAgICIiIkZvcm1hdCB3YXJuaW5ncyB0aGUgSURMRSB3YXkuIiIiCisKKyAgICBzID0gIlxuV2FybmluZyAoZnJvbSB3YXJuaW5ncyBtb2R1bGUpOlxuIgorICAgIHMgKz0gJyAgRmlsZSBcIiVzXCIsIGxpbmUgJXNcbicgJSAoZmlsZW5hbWUsIGxpbmVubykKKyAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQorICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICBpZiBsaW5lOgorICAgICAgICBzICs9ICIgICAgJXNcbiIgJSBsaW5lCisgICAgcyArPSAiJXM6ICVzXG4iICUgKGNhdGVnb3J5Ll9fbmFtZV9fLCBtZXNzYWdlKQorICAgIHJldHVybiBzCiAKIGRlZiBpZGxlX3Nob3d3YXJuaW5nX3N1YnByb2MoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC0zOCw3ICs1MCw3IEBACiAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgogICAgIHRyeToKLSAgICAgICAgZmlsZS53cml0ZShQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZygKKyAgICAgICAgZmlsZS53cml0ZShpZGxlX2Zvcm1hdHdhcm5pbmcoCiAgICAgICAgICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICBwYXNzICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCkBAIC04OCw3ICsxMDAsNyBAQAogICAgIE15SGFuZGxlciBvYmplY3QuICBUaGF0IHJlZmVyZW5jZSBpcyBzYXZlZCBhcyBhdHRyaWJ1dGUgcnBjaGFuZGxlciBvZiB0aGUKICAgICBFeGVjdXRpdmUgaW5zdGFuY2UuICBUaGUgRXhlY3V0aXZlIG1ldGhvZHMgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlZmVyZW5jZSBhbmQKICAgICBjYW4gcGFzcyBpdCBvbiB0byBlbnRpdGllcyB0aGF0IHRoZXkgY29tbWFuZAotICAgIChlLmcuIFJlbW90ZURlYnVnZ2VyLkRlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKCkpLiAgVGhlIGxhdHRlciwgaW4gdHVybiwgY2FuCisgICAgKGUuZy4gZGVidWdnZXJfci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgogICAgIGNhbGwgTXlIYW5kbGVyKFNvY2tldElPKSByZWdpc3Rlci91bnJlZ2lzdGVyIG1ldGhvZHMgdmlhIHRoZSByZWZlcmVuY2UgdG8KICAgICByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVtc2VsdmVzLgogCkBAIC0yMTAsNyArMjIyLDcgQEAKICAgICAgICAgICAgIHRiZSA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQogICAgICAgICAgICAgcHJpbnQoJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLCBmaWxlPWVmaWxlKQogICAgICAgICAgICAgZXhjbHVkZSA9ICgicnVuLnB5IiwgInJwYy5weSIsICJ0aHJlYWRpbmcucHkiLCAicXVldWUucHkiLAotICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3RlRGVidWdnZXIucHkiLCAiYmRiLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgImRlYnVnZ2VyX3IucHkiLCAiYmRiLnB5IikKICAgICAgICAgICAgIGNsZWFudXBfdHJhY2ViYWNrKHRiZSwgZXhjbHVkZSkKICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9saXN0KHRiZSwgZmlsZT1lZmlsZSkKICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cCwgZXhjKQpAQCAtMjY3LDYgKzI3OSw3IEBACiAgICAgY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkKICAgICBzeXMuZXhpdCgwKQogCisKIGNsYXNzIE15UlBDU2VydmVyKHJwYy5SUENTZXJ2ZXIpOgogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CkBAIC0yOTcsNiArMzEwLDk2IEBACiAgICAgICAgICAgICBxdWl0dGluZyA9IFRydWUKICAgICAgICAgICAgIHRocmVhZC5pbnRlcnJ1cHRfbWFpbigpCiAKKworIyBQc2V1ZG9maWxlcyBmb3Igc2hlbGwtcmVtb3RlIGNvbW11bmljYXRpb24gKGFsc28gdXNlZCBpbiBweXNoZWxsKQorCitjbGFzcyBQc2V1ZG9GaWxlKGlvLlRleHRJT0Jhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgc2VsZi5zaGVsbCA9IHNoZWxsCisgICAgICAgIHNlbGYudGFncyA9IHRhZ3MKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gJzwlcz4nICUgc2VsZi50YWdzCisKKyAgICBkZWYgaXNhdHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2NsYXNzIFBzZXVkb091dHB1dEZpbGUoUHNldWRvRmlsZSk6CisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUgdG8gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiB0eXBlKHMpIGlzIG5vdCBzdHI6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBzdHIsIG5vdCAnICsgdHlwZShzKS5fX25hbWVfXykKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICMxOTQ4MQorICAgICAgICAgICAgcyA9IHN0ci5fX3N0cl9fKHMpCisgICAgICAgIHJldHVybiBzZWxmLnNoZWxsLndyaXRlKHMsIHNlbGYudGFncykKKworCitjbGFzcyBQc2V1ZG9JbnB1dEZpbGUoUHNldWRvRmlsZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICBQc2V1ZG9GaWxlLl9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZykKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IC0xCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fbGluZV9idWZmZXIKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJworICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhaworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aGlsZSBsZW4ocmVzdWx0KSA8IHNpemU6CisgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhaworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCisgICAgICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IHJlc3VsdFtzaXplOl0KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lX2J1ZmZlciBvciBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICBzaXplID0gbGVuKGxpbmUpCisgICAgICAgIGVvbCA9IGxpbmUuZmluZCgnXG4nLCAwLCBzaXplKQorICAgICAgICBpZiBlb2wgPj0gMDoKKyAgICAgICAgICAgIHNpemUgPSBlb2wgKyAxCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gbGluZVtzaXplOl0KKyAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuc2hlbGwuY2xvc2UoKQorCisKIGNsYXNzIE15SGFuZGxlcihycGMuUlBDSGFuZGxlcik6CiAKICAgICBkZWYgaGFuZGxlKHNlbGYpOgpAQCAtMzA0LDEyICs0MDcsMTIgQEAKICAgICAgICAgZXhlY3V0aXZlID0gRXhlY3V0aXZlKHNlbGYpCiAgICAgICAgIHNlbGYucmVnaXN0ZXIoImV4ZWMiLCBleGVjdXRpdmUpCiAgICAgICAgIHNlbGYuY29uc29sZSA9IHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgiY29uc29sZSIpCi0gICAgICAgIHN5cy5zdGRpbiA9IFB5U2hlbGwuUHNldWRvSW5wdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGluIiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBQeVNoZWxsLlBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHN5cy5zdGRlcnIgPSBQeVNoZWxsLlBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkZXJyIiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzeXMuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRvdXQiLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkZXJyIiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCiAKICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gcnBjLmRpc3BsYXlob29rCiAgICAgICAgICMgcGFnZSBoZWxwKCkgdGV4dCB0byBzaGVsbC4KQEAgLTM0NSw4ICs0NDgsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBycGNoYW5kbGVyKToKICAgICAgICAgc2VsZi5ycGNoYW5kbGVyID0gcnBjaGFuZGxlcgogICAgICAgICBzZWxmLmxvY2FscyA9IF9fbWFpbl9fLl9fZGljdF9fCi0gICAgICAgIHNlbGYuY2FsbHRpcCA9IENhbGxUaXBzLkNhbGxUaXBzKCkKLSAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBBdXRvQ29tcGxldGUuQXV0b0NvbXBsZXRlKCkKKyAgICAgICAgc2VsZi5jYWxsdGlwID0gY2FsbHRpcHMuQ2FsbFRpcHMoKQorICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZSA9IGF1dG9jb21wbGV0ZS5BdXRvQ29tcGxldGUoKQogCiAgICAgZGVmIHJ1bmNvZGUoc2VsZiwgY29kZSk6CiAgICAgICAgIGdsb2JhbCBpbnRlcnJ1cHRhYmxlCkBAIC0zNzgsNyArNDgxLDcgQEAKICAgICAgICAgICAgIHRocmVhZC5pbnRlcnJ1cHRfbWFpbigpCiAKICAgICBkZWYgc3RhcnRfdGhlX2RlYnVnZ2VyKHNlbGYsIGd1aV9hZGFwX29pZCk6Ci0gICAgICAgIHJldHVybiBSZW1vdGVEZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcihzZWxmLnJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKKyAgICAgICAgcmV0dXJuIGRlYnVnZ2VyX3Iuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCiAKICAgICBkZWYgc3RvcF90aGVfZGVidWdnZXIoc2VsZiwgaWRiX2FkYXBfb2lkKToKICAgICAgICAgIlVucmVnaXN0ZXIgdGhlIElkYiBBZGFwdGVyLiAgTGluayBvYmplY3RzIGFuZCBJZGIgdGhlbiBzdWJqZWN0IHRvIEdDIgpAQCAtNDAyLDcgKzUwNSw3IEBACiAgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cAogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbAotICAgICAgICBpdGVtID0gU3RhY2tWaWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCi0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3RCcm93c2VyLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCisgICAgICAgIGl0ZW0gPSBzdGFja3ZpZXdlci5TdGFja1RyZWVJdGVtKGZsaXN0LCB0YikKKyAgICAgICAgcmV0dXJuIGRlYnVnb2JqX3IucmVtb3RlX29iamVjdF90cmVlX2l0ZW0oaXRlbSkKIAogY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkgICMgTWFrZSBzdXJlIHR1cm5lZCBvZmY7IHNlZSBpc3N1ZSAxODA4MQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weSBiL0xpYi9pZGxlbGliL3J1bnNjcmlwdC5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKaW5kZXggNWNiODE4ZC4uNzlkODZhZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKQEAgLTIwLDExICsyMCwxMiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdGFibmFubnkKIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAoraW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwKIAogaW5kZW50X21lc3NhZ2UgPSAiIiJFcnJvcjogSW5jb25zaXN0ZW50IGluZGVudGF0aW9uIGRldGVjdGVkIQogCkBAIC00NiwxMiArNDcsMTIgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgotICAgICAgICAjIFByb3ZpZGUgaW5zdGFuY2UgdmFyaWFibGVzIHJlZmVyZW5jZWQgYnkgRGVidWdnZXIKKyAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IGRlYnVnZ2VyCiAgICAgICAgICMgWFhYIFRoaXMgc2hvdWxkIGJlIGRvbmUgZGlmZmVyZW50bHkKICAgICAgICAgc2VsZi5mbGlzdCA9IHNlbGYuZWRpdHdpbi5mbGlzdAogICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLmVkaXR3aW4ucm9vdAogCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNDb2NvYVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NvY29hVGsoKToKICAgICAgICAgICAgIHNlbGYuZWRpdHdpbi50ZXh0X2ZyYW1lLmJpbmQoJzw8cnVuLW1vZHVsZS1ldmVudC0yPj4nLCBzZWxmLl9ydW5fbW9kdWxlX2V2ZW50KQogCiAgICAgZGVmIGNoZWNrX21vZHVsZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC0xMTIsNyArMTEzLDcgQEAKICAgICAgICAgICAgIHNoZWxsLnNldF93YXJuaW5nX3N0cmVhbShzYXZlZF9zdHJlYW0pCiAKICAgICBkZWYgcnVuX21vZHVsZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNDb2NvYVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NvY29hVGsoKToKICAgICAgICAgICAgICMgVGstQ29jb2EgaW4gTWFjT1NYIGlzIGJyb2tlbiB1bnRpbCBhdCBsZWFzdAogICAgICAgICAgICAgIyBUayA4LjUuOSwgYW5kIHdpdGhvdXQgdGhpcyByYXRoZXIKICAgICAgICAgICAgICMgY3J1ZGUgd29ya2Fyb3VuZCBJRExFIHdvdWxkIGhhbmcgd2hlbiBhIHVzZXIKQEAgLTE0Miw3ICsxNDMsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi50YWJuYW5ueShmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gJ2JyZWFrJwogICAgICAgICBpbnRlcnAgPSBzZWxmLnNoZWxsLmludGVycAotICAgICAgICBpZiBQeVNoZWxsLnVzZV9zdWJwcm9jZXNzOgorICAgICAgICBpZiBweXNoZWxsLnVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgaW50ZXJwLnJlc3RhcnRfc3VicHJvY2Vzcyh3aXRoX2N3ZD1GYWxzZSwgZmlsZW5hbWU9CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXR3aW4uX2ZpbGVuYW1lX3RvX3VuaWNvZGUoZmlsZW5hbWUpKQogICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQpAQCAtMTYxLDcgKzE2Miw3IEBACiAgICAgICAgIGludGVycC5wcmVwZW5kX3N5c3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIEtCSyAwM0p1bDA0IFdoZW4gcnVuIHcvbyBzdWJwcm9jZXNzLCBydW50aW1lIHdhcm5pbmdzIHN0aWxsCiAgICAgICAgICMgICAgICAgICBnbyB0byBfX3N0ZGVycl9fLiAgV2l0aCBzdWJwcm9jZXNzLCB0aGV5IGdvIHRvIHRoZSBzaGVsbC4KLSAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgorICAgICAgICAjICAgICAgICAgTmVlZCB0byBjaGFuZ2Ugc3RyZWFtcyBpbiBweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXIuCiAgICAgICAgIGludGVycC5ydW5jb2RlKGNvZGUpCiAgICAgICAgIHJldHVybiAnYnJlYWsnCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weSBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQppbmRleCA1MzU3NmI1Li5jYzA4YzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CkBAIC0xLDUgKzEsOCBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFNjcm9sbGVkTGlzdDoKIApAQCAtMjMsNyArMjYsNyBAQAogICAgICAgICAjIEJpbmQgZXZlbnRzIHRvIHRoZSBsaXN0IGJveAogICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5jbGlja19ldmVudCkKICAgICAgICAgbGlzdGJveC5iaW5kKCI8RG91YmxlLUJ1dHRvblJlbGVhc2UtMT4iLCBzZWxmLmRvdWJsZV9jbGlja19ldmVudCkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgIGxpc3Rib3guYmluZCgiPEJ1dHRvblByZXNzLTI+Iiwgc2VsZi5wb3B1cF9ldmVudCkKICAgICAgICAgICAgIGxpc3Rib3guYmluZCgiPENvbnRyb2wtQnV0dG9uLTE+Iiwgc2VsZi5wb3B1cF9ldmVudCkKICAgICAgICAgZWxzZToKQEAgLTEyNCwyMiArMTI3LDIwIEBACiAgICAgICAgIHBhc3MKIAogCi1kZWYgX3Njcm9sbGVkX2xpc3QocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgU2Nyb2xsZWRMaXN0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCitkZWYgX3Njcm9sbGVkX2xpc3QocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgrMjAwLCB5ICsgMTc1KSkKICAgICBjbGFzcyBNeVNjcm9sbGVkTGlzdChTY3JvbGxlZExpc3QpOgogICAgICAgICBkZWYgZmlsbF9tZW51KHNlbGYpOiBzZWxmLm1lbnUuYWRkX2NvbW1hbmQobGFiZWw9InJpZ2h0IGNsaWNrIikKICAgICAgICAgZGVmIG9uX3NlbGVjdChzZWxmLCBpbmRleCk6IHByaW50KCJzZWxlY3QiLCBzZWxmLmdldChpbmRleCkpCiAgICAgICAgIGRlZiBvbl9kb3VibGUoc2VsZiwgaW5kZXgpOiBwcmludCgiZG91YmxlIiwgc2VsZi5nZXQoaW5kZXgpKQogCi0gICAgc2Nyb2xsZWRfbGlzdCA9IE15U2Nyb2xsZWRMaXN0KHJvb3QpCisgICAgc2Nyb2xsZWRfbGlzdCA9IE15U2Nyb2xsZWRMaXN0KHRvcCkKICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CiAgICAgICAgIHNjcm9sbGVkX2xpc3QuYXBwZW5kKCJJdGVtICUwMmQiICUgaSkKIAotICAgIHJvb3QubWFpbmxvb3AoKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgQXQgdGhlIG1vbWVudCwgdGVzdF9zY3JvbGxlZGxpc3QgbWVyZWx5IGNyZWF0ZXMgaW5zdGFuY2UsIGxpa2UgaHRlc3QuCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zY3JvbGxlZF9saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoLnB5CmluZGV4IDc2NWQ1M2YuLjRiOTA2NTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2gucHkKQEAgLTEsMTIgKzEsMTIgQEAKLWZyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyIGltcG9ydCBUY2xFcnJvcgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogCiBkZWYgX3NldHVwKHRleHQpOgogICAgICJDcmVhdGUgb3IgZmluZCB0aGUgc2luZ2xldG9uIFNlYXJjaERpYWxvZyBpbnN0YW5jZS4iCiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX3NlYXJjaGRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3NlYXJjaGRpYWxvZyA9IFNlYXJjaERpYWxvZyhyb290LCBlbmdpbmUpCiAgICAgcmV0dXJuIGVuZ2luZS5fc2VhcmNoZGlhbG9nCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgIkhhbmRsZSB0aGUgZWRpdG9yIGVkaXQgbWVudSBpdGVtIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50LiIKICAgICByZXR1cm4gX3NldHVwKHRleHQpLmZpbmRfc2VsZWN0aW9uKHRleHQpCiAKKwogY2xhc3MgU2VhcmNoRGlhbG9nKFNlYXJjaERpYWxvZ0Jhc2UpOgogCiAgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgpAQCAtNTEsNyArNTIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGZpcnN0ID0gdGV4dC5pbmRleCgic2VsLmZpcnN0IikKICAgICAgICAgICAgICAgICBzZWxsYXN0ID0gdGV4dC5pbmRleCgic2VsLmxhc3QiKQogICAgICAgICAgICAgICAgIGlmIHNlbGZpcnN0ID09IGZpcnN0IGFuZCBzZWxsYXN0ID09IGxhc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgZXhjZXB0IFRjbEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKQEAgLTYxLDcgKzYyLDcgQEAKICAgICAgICAgICAgIHRleHQuc2VlKCJpbnNlcnQiKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb24oc2VsZiwgdGV4dCk6CkBAIC03MiwyNiArNzMsMzAgQEAKIAogCiBkZWYgX3NlYXJjaF9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgICcnJ0Rpc3BsYXkgc2VhcmNoIHRlc3QgYm94LicnJworICAgICJEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4iCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorCiAgICAgYm94ID0gVG9wbGV2ZWwocGFyZW50KQogICAgIGJveC50aXRsZSgiVGVzdCBTZWFyY2hEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IFRleHQoYm94LCBpbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQ9J2dyYXknKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsIlRoaXMgaXMgYSBzYW1wbGUgc3RyaW5nLlxuIio1KQogCiAgICAgZGVmIHNob3dfZmluZCgpOgotICAgICAgICB0ZXh0LnRhZ19hZGQoU0VMLCAiMS4wIiwgRU5EKQorICAgICAgICB0ZXh0LnRhZ19hZGQoJ3NlbCcsICcxLjAnLCAnZW5kJykKICAgICAgICAgX3NldHVwKHRleHQpLm9wZW4odGV4dCkKLSAgICAgICAgdGV4dC50YWdfcmVtb3ZlKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAKICAgICBidXR0b24gPSBCdXR0b24oYm94LCB0ZXh0PSJTZWFyY2ggKHNlbGVjdGlvbiBpZ25vcmVkKSIsIGNvbW1hbmQ9c2hvd19maW5kKQogICAgIGJ1dHRvbi5wYWNrKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2gnLAogICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3NlYXJjaF9kaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CmluZGV4IDVmYTg0ZTIuLjVmODE3ODUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQpAQCAtMSw3ICsxLDggQEAKICcnJ0RlZmluZSBTZWFyY2hEaWFsb2dCYXNlIHVzZWQgYnkgU2VhcmNoLCBSZXBsYWNlLCBhbmQgR3JlcCBkaWFsb2dzLicnJwogCi1mcm9tIHRraW50ZXIgaW1wb3J0IChUb3BsZXZlbCwgRnJhbWUsIEVudHJ5LCBMYWJlbCwgQnV0dG9uLAotICAgICAgICAgICAgICAgICAgICAgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uKQorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEVudHJ5LCBMYWJlbCwgQnV0dG9uLCBDaGVja2J1dHRvbiwgUmFkaW9idXR0b24KKwogCiBjbGFzcyBTZWFyY2hEaWFsb2dCYXNlOgogICAgICcnJ0NyZWF0ZSBtb3N0IG9mIGEgMyBvciA0IHJvdywgMyBjb2x1bW4gc2VhcmNoIGRpYWxvZy4KQEAgLTc5LDYgKzgwLDcgQEAKICAgICAgICAgdG9wLndtX3RpdGxlKHNlbGYudGl0bGUpCiAgICAgICAgIHRvcC53bV9pY29ubmFtZShzZWxmLmljb24pCiAgICAgICAgIHNlbGYudG9wID0gdG9wCisgICAgICAgIHNlbGYuYmVsbCA9IHRvcC5iZWxsCiAKICAgICAgICAgc2VsZi5yb3cgPSAwCiAgICAgICAgIHNlbGYudG9wLmdyaWRfY29sdW1uY29uZmlndXJlKDAsIHBhZD0yLCB3ZWlnaHQ9MCkKQEAgLTEyNSw3ICsxMjcsNyBAQAogICAgIGRlZiBjcmVhdGVfb3B0aW9uX2J1dHRvbnMoc2VsZik6CiAgICAgICAgICcnJ1JldHVybiAoZmlsbGVkIGZyYW1lLCBvcHRpb25zKSBmb3IgdGVzdGluZy4KIAotICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBTZWFyY2hFbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCisgICAgICAgIE9wdGlvbnMgaXMgYSBsaXN0IG9mIHNlYXJjaGVuZ2luZSBib29sZWFudmFyLCBsYWJlbCBwYWlycy4KICAgICAgICAgQSBncmlkZGVkIGZyYW1lIGZyb20gbWFrZV9mcmFtZSBpcyBmaWxsZWQgd2l0aCBhIENoZWNrYnV0dG9uCiAgICAgICAgIGZvciBlYWNoIHBhaXIsIGJvdW5kIHRvIHRoZSB2YXIsIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbGFiZWwuCiAgICAgICAgICcnJwpAQCAtMTM3LDEwICsxMzksOCBAQAogICAgICAgICBpZiBzZWxmLm5lZWR3cmFwYnV0dG9uOgogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQoKGVuZ2luZS53cmFwdmFyLCAiV3JhcCBhcm91bmQiKSkKICAgICAgICAgZm9yIHZhciwgbGFiZWwgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLCB2YXJpYWJsZT12YXIsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQogICAgICAgICAgICAgYnRuLnBhY2soc2lkZT0ibGVmdCIsIGZpbGw9ImJvdGgiKQotICAgICAgICAgICAgaWYgdmFyLmdldCgpOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG9wdGlvbnMKIAogICAgIGRlZiBjcmVhdGVfb3RoZXJfYnV0dG9ucyhzZWxmKToKQEAgLTE1MywxMSArMTUzLDggQEAKICAgICAgICAgdmFyID0gc2VsZi5lbmdpbmUuYmFja3ZhcgogICAgICAgICBvdGhlcnMgPSBbKDEsICdVcCcpLCAoMCwgJ0Rvd24nKV0KICAgICAgICAgZm9yIHZhbCwgbGFiZWwgaW4gb3RoZXJzOgotICAgICAgICAgICAgYnRuID0gUmFkaW9idXR0b24oZnJhbWUsIGFuY2hvcj0idyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZT12YXIsIHZhbHVlPXZhbCwgdGV4dD1sYWJlbCkKKyAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCB2YXJpYWJsZT12YXIsIHZhbHVlPXZhbCwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKSA9PSB2YWw6Ci0gICAgICAgICAgICAgICAgYnRuLnNlbGVjdCgpCiAgICAgICAgIHJldHVybiBmcmFtZSwgb3RoZXJzCiAKICAgICBkZWYgbWFrZV9idXR0b24oc2VsZiwgbGFiZWwsIGNvbW1hbmQsIGlzZGVmPTApOgpAQCAtMTc4LDcgKzE3NSwyNiBAQAogICAgICAgICBiID0gc2VsZi5tYWtlX2J1dHRvbigiY2xvc2UiLCBzZWxmLmNsb3NlKQogICAgICAgICBiLmxvd2VyKCkKIAorCitjbGFzcyBfc2VhcmNoYmFzZShTZWFyY2hEaWFsb2dCYXNlKTogICMgaHRlc3QgIworICAgICJDcmVhdGUgYXV0by1vcGVuaW5nIGRpYWxvZyB3aXRoIG5vIHRleHQgY29ubmVjdGlvbi4iCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgaW1wb3J0IHJlCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCisKKyAgICAgICAgc2VsZi5yb290ID0gcGFyZW50CisgICAgICAgIHNlbGYuZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChwYXJlbnQpCisgICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBwcmludChwYXJlbnQuZ2VvbWV0cnkoKSkKKyAgICAgICAgd2lkdGgsaGVpZ2h0LCB4LHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKKyAgICAgICAgc2VsZi50b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCArIDQwLCB5ICsgMTc1KSkKKworICAgIGRlZiBkZWZhdWx0X2NvbW1hbmQoc2VsZiwgZHVtbXkpOiBwYXNzCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbigKLSAgICAgICAgJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoZGlhbG9nYmFzZScsIHZlcmJvc2l0eT0yKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoYmFzZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKF9zZWFyY2hiYXNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CmluZGV4IDM3ODgzYmYuLjI1M2YxYjAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKQEAgLTEsNSArMSw2IEBACiAnJydEZWZpbmUgU2VhcmNoRW5naW5lIGZvciBzZWFyY2ggZGlhbG9ncy4nJycKIGltcG9ydCByZQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgQm9vbGVhblZhciwgVGNsRXJyb3IKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKQEAgLTE0LDYgKzE1LDcgQEAKICAgICAgICAgIyBUaGlzIGNyZWF0ZXMgYSBjeWNsZSB0aGF0IHBlcnNpc3RzIHVudGlsIHJvb3QgaXMgZGVsZXRlZC4KICAgICByZXR1cm4gcm9vdC5fc2VhcmNoZW5naW5lCiAKKwogY2xhc3MgU2VhcmNoRW5naW5lOgogICAgICIiIkhhbmRsZXMgc2VhcmNoaW5nIGEgdGV4dCB3aWRnZXQgZm9yIEZpbmQsIFJlcGxhY2UsIGFuZCBHcmVwLiIiIgogCkBAIC01Nyw3ICs1OSw3IEBACiAKICAgICBkZWYgc2V0Y29va2VkcGF0KHNlbGYsIHBhdCk6CiAgICAgICAgICJTZXQgcGF0dGVybiBhZnRlciBlc2NhcGluZyBpZiByZS4iCi0gICAgICAgICMgY2FsbGVkIG9ubHkgaW4gU2VhcmNoRGlhbG9nLnB5OiA2NgorICAgICAgICAjIGNhbGxlZCBvbmx5IGluIHNlYXJjaC5weTogNjYKICAgICAgICAgaWYgc2VsZi5pc3JlKCk6CiAgICAgICAgICAgICBwYXQgPSByZS5lc2NhcGUocGF0KQogICAgICAgICBzZWxmLnNldHBhdChwYXQpCkBAIC0xODYsNiArMTg4LDcgQEAKICAgICAgICAgICAgIGNvbCA9IGxlbihjaGFycykgLSAxCiAgICAgICAgIHJldHVybiBOb25lCiAKKwogZGVmIHNlYXJjaF9yZXZlcnNlKHByb2csIGNoYXJzLCBjb2wpOgogICAgICcnJ1NlYXJjaCBiYWNrd2FyZHMgYW5kIHJldHVybiBhbiByZSBtYXRjaCBvYmplY3Qgb3IgTm9uZS4KIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkgYi9MaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKaW5kZXggY2NjNzU1Yy4uMDY5OGRlZiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKKysrIGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKQEAgLTEsMTIgKzEsMTIgQEAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIgYXMgdGsKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKLWZyb20gaWRsZWxpYi5PYmplY3RCcm93c2VyIGltcG9ydCBPYmplY3RUcmVlSXRlbSwgbWFrZV9vYmplY3R0cmVlaXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmRlYnVnb2JqIGltcG9ydCBPYmplY3RUcmVlSXRlbSwgbWFrZV9vYmplY3R0cmVlaXRlbQorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKIAogZGVmIFN0YWNrQnJvd3Nlcihyb290LCBmbGlzdD1Ob25lLCB0Yj1Ob25lLCB0b3A9Tm9uZSk6CiAgICAgaWYgdG9wIGlzIE5vbmU6CkBAIC0xNyw2ICsxNyw3IEBACiAgICAgbm9kZSA9IFRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKICAgICBub2RlLmV4cGFuZCgpCiAKKwogY2xhc3MgU3RhY2tUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSk6CkBAIC01NSw2ICs1Niw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIEZyYW1lVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZm8sIGZsaXN0KToKQEAgLTk2LDYgKzk4LDcgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBzZWxmLmZsaXN0LmdvdG9maWxlbGluZShmaWxlbmFtZSwgbGluZW5vKQogCisKIGNsYXNzIFZhcmlhYmxlc1RyZWVJdGVtKE9iamVjdFRyZWVJdGVtKToKIAogICAgIGRlZiBHZXRUZXh0KHNlbGYpOgpAQCAtMTIwLDE1ICsxMjMsMTQgQEAKICAgICAgICAgICAgIHN1Ymxpc3QuYXBwZW5kKGl0ZW0pCiAgICAgICAgIHJldHVybiBzdWJsaXN0CiAKLSAgICBkZWYga2V5cyhzZWxmKTogICMgdW51c2VkLCBsZWZ0IGZvciBwb3NzaWJsZSAzcmQgcGFydHkgdXNlCi0gICAgICAgIHJldHVybiBsaXN0KHNlbGYub2JqZWN0LmtleXMoKSkKIAotZGVmIF9zdGFja192aWV3ZXIocGFyZW50KToKLSAgICByb290ID0gdGsuVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgU3RhY2tWaWV3ZXIiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQorZGVmIF9zdGFja192aWV3ZXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSB0ay5Ub3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA1MCwgeSArIDE3NSkpCisgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QodG9wKQogICAgIHRyeTogIyB0byBvYnRhaW4gYSB0cmFjZWJhY2sgb2JqZWN0CiAgICAgICAgIGludGVudGlvbmFsX25hbWVfZXJyb3IKICAgICBleGNlcHQgTmFtZUVycm9yOgpAQCAtMTM5LDcgKzE0MSw3IEBACiAgICAgc3lzLmxhc3RfdmFsdWUgPSBleGNfdmFsdWUKICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBleGNfdGIKIAotICAgIFN0YWNrQnJvd3Nlcihyb290LCBmbGlzdD1mbGlzdCwgdG9wPXJvb3QsIHRiPWV4Y190YikKKyAgICBTdGFja0Jyb3dzZXIodG9wLCBmbGlzdD1mbGlzdCwgdG9wPXRvcCwgdGI9ZXhjX3RiKQogCiAgICAgIyByZXN0b3JlIHN5cyB0byBvcmlnaW5hbCBzdGF0ZQogICAgIGRlbCBzeXMubGFzdF90eXBlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYxODUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weQpAQCAtMCwwICsxLDQ2IEBACitmcm9tIHRraW50ZXIgaW1wb3J0IEZyYW1lLCBMYWJlbAorCisKK2NsYXNzIE11bHRpU3RhdHVzQmFyKEZyYW1lKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpOgorICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpCisgICAgICAgIHNlbGYubGFiZWxzID0ge30KKworICAgIGRlZiBzZXRfbGFiZWwoc2VsZiwgbmFtZSwgdGV4dD0nJywgc2lkZT0nbGVmdCcsIHdpZHRoPTApOgorICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmxhYmVsczoKKyAgICAgICAgICAgIGxhYmVsID0gTGFiZWwoc2VsZiwgYm9yZGVyd2lkdGg9MCwgYW5jaG9yPSd3JykKKyAgICAgICAgICAgIGxhYmVsLnBhY2soc2lkZT1zaWRlLCBwYWR5PTAsIHBhZHg9NCkKKyAgICAgICAgICAgIHNlbGYubGFiZWxzW25hbWVdID0gbGFiZWwKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxhYmVsID0gc2VsZi5sYWJlbHNbbmFtZV0KKyAgICAgICAgaWYgd2lkdGggIT0gMDoKKyAgICAgICAgICAgIGxhYmVsLmNvbmZpZyh3aWR0aD13aWR0aCkKKyAgICAgICAgbGFiZWwuY29uZmlnKHRleHQ9dGV4dCkKKworCitkZWYgX211bHRpc3RhdHVzX2JhcihwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIEJ1dHRvbgorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUoeCwgeSArIDE3NSkpCisgICAgdG9wLnRpdGxlKCJUZXN0IG11bHRpc3RhdHVzIGJhciIpCisgICAgZnJhbWUgPSBGcmFtZSh0b3ApCisgICAgdGV4dCA9IFRleHQoZnJhbWUsIGhlaWdodD01LCB3aWR0aD00MCkKKyAgICB0ZXh0LnBhY2soKQorICAgIG1zYiA9IE11bHRpU3RhdHVzQmFyKGZyYW1lKQorICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJoZWxsbyIpCisgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgIndvcmxkIikKKyAgICBtc2IucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKKworICAgIGRlZiBjaGFuZ2UoKToKKyAgICAgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImZvbyIpCisgICAgICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJiYXIiKQorCisgICAgYnV0dG9uID0gQnV0dG9uKHRvcCwgdGV4dD0iVXBkYXRlIHN0YXR1cyIsIGNvbW1hbmQ9Y2hhbmdlKQorICAgIGJ1dHRvbi5wYWNrKHNpZGU9J2JvdHRvbScpCisgICAgZnJhbWUucGFjaygpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKF9tdWx0aXN0YXR1c19iYXIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weSBiL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CmluZGV4IDk2NWY5ZjguLjQxODZmYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CisrKyBiL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CkBAIC0yODUsNiArMjg1LDcgQEAKICAgICAgICAgICAgICMgcGxhY2VkIGhpZGUgaXQKICAgICAgICAgICAgIHNlbGYudGFiX3NldC5sb3dlcigpCiAKKwogY2xhc3MgVGFiYmVkUGFnZVNldChGcmFtZSk6CiAgICAgIiIiQSBUa2ludGVyIHRhYmJlZC1wYW5lIHdpZGdldC4KIApAQCAtMzAyLDYgKzMwMyw3IEBACiAgICAgcmVtb3ZlX3BhZ2UoKSBtZXRob2RzLgogCiAgICAgIiIiCisKICAgICBjbGFzcyBQYWdlKG9iamVjdCk6CiAgICAgICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIFRhYmJlZFBhZ2VTZXQncyBwYWdlcy4KIApAQCAtNDY3LDMxICs0NjksMjkgQEAKIAogICAgICAgICBzZWxmLl90YWJfc2V0LnNldF9zZWxlY3RlZF90YWIocGFnZV9uYW1lKQogCi1kZWYgX3RhYmJlZF9wYWdlcyhwYXJlbnQpOgotICAgICMgdGVzdCBkaWFsb2cKLSAgICByb290PVRrKCkKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE3NSkpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0YWJiZWQgcGFnZXMiKQotICAgIHRhYlBhZ2U9VGFiYmVkUGFnZVNldChyb290LCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAorCitkZWYgX3RhYmJlZF9wYWdlcyhwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wPVRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCB0YWJiZWQgcGFnZXMiKQorICAgIHRhYlBhZ2U9VGFiYmVkUGFnZVNldCh0b3AsIHBhZ2VfbmFtZXM9WydGb29iYXInLCdCYXonXSwgbl9yb3dzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZF90YWJzPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgdGFiUGFnZS5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0Zvb2JhciddLmZyYW1lLCB0ZXh0PSdGb28nLCBwYWR5PTIwKS5wYWNrKCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nQmFyJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snQmF6J10uZnJhbWUsIHRleHQ9J0JheicpLnBhY2soKQotICAgIGVudHJ5UGdOYW1lPUVudHJ5KHJvb3QpCi0gICAgYnV0dG9uQWRkPUJ1dHRvbihyb290LCB0ZXh0PSdBZGQgUGFnZScsCisgICAgZW50cnlQZ05hbWU9RW50cnkodG9wKQorICAgIGJ1dHRvbkFkZD1CdXR0b24odG9wLCB0ZXh0PSdBZGQgUGFnZScsCiAgICAgICAgICAgICBjb21tYW5kPWxhbWJkYTp0YWJQYWdlLmFkZF9wYWdlKGVudHJ5UGdOYW1lLmdldCgpKSkKLSAgICBidXR0b25SZW1vdmU9QnV0dG9uKHJvb3QsIHRleHQ9J1JlbW92ZSBQYWdlJywKKyAgICBidXR0b25SZW1vdmU9QnV0dG9uKHRvcCwgdGV4dD0nUmVtb3ZlIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5yZW1vdmVfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgbGFiZWxQZ05hbWU9TGFiZWwocm9vdCwgdGV4dD0nbmFtZSBvZiBwYWdlIHRvIGFkZC9yZW1vdmU6JykKKyAgICBsYWJlbFBnTmFtZT1MYWJlbCh0b3AsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCiAgICAgYnV0dG9uQWRkLnBhY2socGFkeD01LCBwYWR5PTUpCiAgICAgYnV0dG9uUmVtb3ZlLnBhY2socGFkeD01LCBwYWR5PTUpCiAgICAgbGFiZWxQZ05hbWUucGFjayhwYWR4PTUpCiAgICAgZW50cnlQZ05hbWUucGFjayhwYWR4PTUpCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3RleHRWaWV3LnB5IGIvTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvdGV4dFZpZXcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RleHR2aWV3LnB5CmluZGV4IDEyYWMzMTkuLmFkZWUzMjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3RleHRWaWV3LnB5CisrKyBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CkBAIC0xLDE0ICsxLDE0IEBACiAiIiJTaW1wbGUgdGV4dCBicm93c2VyIGZvciBJRExFCiAKICIiIgotCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK2Zyb20gdGtpbnRlci5tZXNzYWdlYm94IGltcG9ydCBzaG93ZXJyb3IKKwogCiBjbGFzcyBUZXh0Vmlld2VyKFRvcGxldmVsKToKLSAgICAiIiJBIHNpbXBsZSB0ZXh0IHZpZXdlciBkaWFsb2cgZm9yIElETEUKKyAgICAiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFLiIKIAotICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCB0ZXh0LCBtb2RhbD1UcnVlLCBfaHRlc3Q9RmFsc2UpOgogICAgICAgICAiIiJTaG93IHRoZSBnaXZlbiB0ZXh0IGluIGEgc2Nyb2xsYWJsZSB3aW5kb3cgd2l0aCBhICdjbG9zZScgYnV0dG9uCiAKQEAgLTIwLDExICsyMCwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQogICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICAjIHBsYWNlIGRpYWxvZyBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdAorICAgICAgICAjIFBsYWNlIGRpYWxvZyBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdC4KICAgICAgICAgc2VsZi5nZW9tZXRyeSgiPSVkeCVkKyVkKyVkIiAlICg3NTAsIDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArICgxMCBpZiBub3QgX2h0ZXN0IGVsc2UgMTAwKSkpCi0gICAgICAgICNlbGd1YXZhcyAtIGNvbmZpZyBwbGFjZWhvbGRlcnMgdGlsIGNvbmZpZyBzdHVmZiBjb21wbGV0ZWQKKyAgICAgICAgIyBUT0RPOiBnZXQgZmcvYmcgZnJvbSB0aGVtZS4KICAgICAgICAgc2VsZi5iZyA9ICcjZmZmZmZmJwogICAgICAgICBzZWxmLmZnID0gJyMwMDAwMDAnCiAKQEAgLTMzLDkgKzMzLDkgQEAKICAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuT2spCiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgIHNlbGYudGV4dFZpZXcuZm9jdXNfc2V0KCkKLSAgICAgICAgI2tleSBiaW5kaW5ncyBmb3IgdGhpcyBkaWFsb2cKLSAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsc2VsZi5PaykgI2Rpc21pc3MgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZworICAgICAgICAjIEJpbmQga2V5cyBmb3IgY2xvc2luZyB0aGlzIGRpYWxvZy4KKyAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsc2VsZi5PaykKKyAgICAgICAgc2VsZi5iaW5kKCc8RXNjYXBlPicsc2VsZi5PaykKICAgICAgICAgc2VsZi50ZXh0Vmlldy5pbnNlcnQoMC4wLCB0ZXh0KQogICAgICAgICBzZWxmLnRleHRWaWV3LmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIApAQCAtNTAsNyArNTAsNyBAQAogICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2xvc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5PaywgdGFrZWZvY3VzPUZBTFNFKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcgPSBTY3JvbGxiYXIoZnJhbWVUZXh0LCBvcmllbnQ9VkVSVElDQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlZm9jdXM9RkFMU0UsIGhpZ2hsaWdodHRoaWNrbmVzcz0wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFKQogICAgICAgICBzZWxmLnRleHRWaWV3ID0gVGV4dChmcmFtZVRleHQsIHdyYXA9V09SRCwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPXNlbGYuZmcsIGJnPXNlbGYuYmcpCiAgICAgICAgIHNlbGYuc2Nyb2xsYmFyVmlldy5jb25maWcoY29tbWFuZD1zZWxmLnRleHRWaWV3Lnl2aWV3KQpAQCAtNzIsMTQgKzcyLDE0IEBACiAgICAgdHJ5OgogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb250ZW50cyA9IGZpbGUucmVhZCgpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVW5hYmxlIHRvIGxvYWQgZmlsZSAlciAuJyAlIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHNob3dlcnJvcih0aXRsZT0nRmlsZSBMb2FkIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCiAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6Ci0gICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXN0cihlcnIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCisgICAgICAgIHNob3dlcnJvcih0aXRsZT0nVW5pY29kZSBEZWNvZGUgRXJyb3InLAorICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHZpZXdfdGV4dChwYXJlbnQsIHRpdGxlLCBjb250ZW50cywgbW9kYWwpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkgYi9MaWIvaWRsZWxpYi90b29sdGlwLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1Rvb2xUaXAucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3Rvb2x0aXAucHkKaW5kZXggOTY0MTA3ZS4uODQzZmI0YSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVG9vbFRpcC5weQorKysgYi9MaWIvaWRsZWxpYi90b29sdGlwLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBnZW5lcmFsIHB1cnBvc2UgJ3Rvb2x0aXAnIHJvdXRpbmVzIC0gY3VycmVudGx5IHVudXNlZCBpbiBpZGxlZm9yaworIyBnZW5lcmFsIHB1cnBvc2UgJ3Rvb2x0aXAnIHJvdXRpbmVzIC0gY3VycmVudGx5IHVudXNlZCBpbiBpZGxlbGliCiAjIChhbHRob3VnaCB0aGUgJ2NhbGx0aXBzJyBleHRlbnNpb24gaXMgcGFydGx5IGJhc2VkIG9uIHRoaXMgY29kZSkKICMgbWF5IGJlIHVzZWZ1bCBmb3Igc29tZSBwdXJwb3NlcyBpbiAob3IgYWxtb3N0IGluIDspIHRoZSBjdXJyZW50IHByb2plY3Qgc2NvcGUKICMgSWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCkBAIC03NiwyMSArNzYsMjAgQEAKICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5pdGVtczoKICAgICAgICAgICAgIGxpc3Rib3guaW5zZXJ0KEVORCwgaXRlbSkKIAotZGVmIF90b29sdGlwKHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IHRvb2x0aXAiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBsYWJlbCA9IExhYmVsKHJvb3QsIHRleHQ9IlBsYWNlIHlvdXIgbW91c2Ugb3ZlciBidXR0b25zIikKK2RlZiBfdG9vbHRpcChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCB0b29sdGlwIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNTApKQorICAgIGxhYmVsID0gTGFiZWwodG9wLCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCiAgICAgbGFiZWwucGFjaygpCi0gICAgYnV0dG9uMSA9IEJ1dHRvbihyb290LCB0ZXh0PSJCdXR0b24gMSIpCi0gICAgYnV0dG9uMiA9IEJ1dHRvbihyb290LCB0ZXh0PSJCdXR0b24gMiIpCisgICAgYnV0dG9uMSA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAxIikKKyAgICBidXR0b24yID0gQnV0dG9uKHRvcCwgdGV4dD0iQnV0dG9uIDIiKQogICAgIGJ1dHRvbjEucGFjaygpCiAgICAgYnV0dG9uMi5wYWNrKCkKICAgICBUb29sVGlwKGJ1dHRvbjEsICJUaGlzIGlzIHRvb2x0aXAgdGV4dCBmb3IgYnV0dG9uMS4iKQogICAgIExpc3Rib3hUb29sVGlwKGJ1dHRvbjIsIFsiVGhpcyBpcyIsIm11bHRpcGxlIGxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b29sdGlwIHRleHQiLCJmb3IgYnV0dG9uMiJdKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weSBiL0xpYi9pZGxlbGliL3RyZWUucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdHJlZS5weQppbmRleCBhMTk1NzhmLi4yOTJjZTM2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL3RyZWUucHkKQEAgLTE1LDEwICsxNSwxMiBAQAogIyAtIG9wdGltaXplIHRyZWUgcmVkcmF3IGFmdGVyIGV4cGFuZCBvZiBzdWJub2RlCiAKIGltcG9ydCBvcwotZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgWm9vbUhlaWdodAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCB6b29taGVpZ2h0CiAKIElDT05ESVIgPSAiSWNvbnMiCiAKQEAgLTQ0NSwyMiArNDQ3LDIxIEBACiAgICAgICAgIHNlbGYuY2FudmFzLnl2aWV3X3Njcm9sbCgxLCAidW5pdCIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgZGVmIHpvb21faGVpZ2h0KHNlbGYsIGV2ZW50KToKLSAgICAgICAgWm9vbUhlaWdodC56b29tX2hlaWdodChzZWxmLm1hc3RlcikKKyAgICAgICAgem9vbWhlaWdodC56b29tX2hlaWdodChzZWxmLm1hc3RlcikKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogCi1kZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFRyZWVXaWRnZXQiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKK2RlZiBfdHJlZV93aWRnZXQocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgrNTAsIHkrMTc1KSkKKyAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHRvcCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQogICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiLCBzaWRlPUxFRlQpCi0gICAgaXRlbSA9IEZpbGVUcmVlSXRlbShvcy5nZXRjd2QoKSkKKyAgICBpdGVtID0gRmlsZVRyZWVJdGVtKElDT05ESVIpCiAgICAgbm9kZSA9IFRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKICAgICBub2RlLmV4cGFuZCgpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIyB0ZXN0X3RyZWUgaXMgY3VycmVudGx5IGEgY29weSBvZiB0aGlzCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF90cmVlX3dpZGdldCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi91bmRvLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3VuZG8ucHkKaW5kZXggMWMyNTAyZC4uNDMzMmYxMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi91bmRvLnB5CkBAIC0xLDcgKzEsOSBAQAogaW1wb3J0IHN0cmluZwotZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCisKKyMgdGtpbnR0ZXIgaW1wb3J0IG5vdCBuZWVkZWQgYmVjYXVzZSBtb2R1bGUgZG9lcyBub3QgY3JlYXRlIHdpZGdldHMsCisjIGFsdGhvdWdoIG1hbnkgbWV0aG9kcyBvcGVyYXRlIG9uIHRleHQgd2lkZ2V0IGFyZ3VtZW50cy4KIAogIyQgZXZlbnQgPDxyZWRvPj4KICMkIHdpbiA8Q29udHJvbC15PgpAQCAtMTU4LDcgKzE2MCw2IEBACiAKIAogY2xhc3MgQ29tbWFuZDoKLQogICAgICMgQmFzZSBjbGFzcyBmb3IgVW5kb2FibGUgY29tbWFuZHMKIAogICAgIHRhZ3MgPSBOb25lCkBAIC0yMDQsNyArMjA1LDYgQEAKIAogCiBjbGFzcyBJbnNlcnRDb21tYW5kKENvbW1hbmQpOgotCiAgICAgIyBVbmRvYWJsZSBpbnNlcnQgY29tbWFuZAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4MSwgY2hhcnMsIHRhZ3M9Tm9uZSk6CkBAIC0yNjIsNyArMjYyLDYgQEAKIAogCiBjbGFzcyBEZWxldGVDb21tYW5kKENvbW1hbmQpOgotCiAgICAgIyBVbmRvYWJsZSBkZWxldGUgY29tbWFuZAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4MSwgaW5kZXgyPU5vbmUpOgpAQCAtMjk3LDggKzI5Niw4IEBACiAgICAgICAgIHRleHQuc2VlKCdpbnNlcnQnKQogICAgICAgICAjI3N5cy5fX3N0ZGVycl9fLndyaXRlKCJ1bmRvOiAlc1xuIiAlIHNlbGYpCiAKLWNsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKIAorY2xhc3MgQ29tbWFuZFNlcXVlbmNlKENvbW1hbmQpOgogICAgICMgV3JhcHBlciBmb3IgYSBzZXF1ZW5jZSBvZiB1bmRvYWJsZSBjbWRzIHRvIGJlIHVuZG9uZS9yZWRvbmUKICAgICAjIGFzIGEgdW5pdAogCkBAIC0zMzgsMTMgKzMzNywxMiBAQAogCiAKIGRlZiBfdW5kb19kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwotICAgIGltcG9ydCByZQotICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCi0gICAgZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLSAgICB1bmRvd2luID0gdGsuVG9wbGV2ZWwoKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCisgICAgdW5kb3dpbiA9IFRvcGxldmVsKHBhcmVudCkKICAgICB1bmRvd2luLnRpdGxlKCJUZXN0IFVuZG9EZWxlZ2F0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICB1bmRvd2luLmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgIHRleHQgPSBUZXh0KHVuZG93aW4sIGhlaWdodD0xMCkKICAgICB0ZXh0LnBhY2soKQpAQCAtMzYyLDcgKzM2MCw3IEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF91bmRvZGVsZWdhdG9yJywgdmVyYm9zaXR5PTIsCi0gICAgICAgICAgICAgICAgICBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kbycsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF91bmRvX2RlbGVnYXRvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkgYi9MaWIvaWRsZWxpYi93aW5kb3dzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3dpbmRvd3MucHkKaW5kZXggYmM3NDM0OC4uYTNmODU4YSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2luZG93TGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi93aW5kb3dzLnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKKwogY2xhc3MgV2luZG93TGlzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTQ4LDYgKzQ5LDcgQEAKICAgICAgICAgICAgICAgICB0LCB2LCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgICAgICAgICAgcHJpbnQoIndhcm5pbmc6IGNhbGxiYWNrIGZhaWxlZCBpbiBXaW5kb3dMaXN0IiwgdCwgIjoiLCB2KQogCisKIHJlZ2lzdHJ5ID0gV2luZG93TGlzdCgpCiAKIGFkZF93aW5kb3dzX3RvX21lbnUgPSByZWdpc3RyeS5hZGRfd2luZG93c190b19tZW51CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5IGIvTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CmluZGV4IGE1ZDY3OWUuLmFhNGE0MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1pvb21IZWlnaHQucHkKKysrIGIvTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQpAQCAtMyw3ICszLDggQEAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4CisKIAogY2xhc3MgWm9vbUhlaWdodDoKIApAQCAtMjAsNiArMjEsNyBAQAogICAgICAgICB0b3AgPSBzZWxmLmVkaXR3aW4udG9wCiAgICAgICAgIHpvb21faGVpZ2h0KHRvcCkKIAorCiBkZWYgem9vbV9oZWlnaHQodG9wKToKICAgICBnZW9tID0gdG9wLndtX2dlb21ldHJ5KCkKICAgICBtID0gcmUubWF0Y2gociIoXGQrKXgoXGQrKVwrKC0/XGQrKVwrKC0/XGQrKSIsIGdlb20pCkBAIC0zMiw3ICszNCw3IEBACiAgICAgICAgIG5ld3kgPSAwCiAgICAgICAgIG5ld2hlaWdodCA9IG5ld2hlaWdodCAtIDcyCiAKLSAgICBlbGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICBlbGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAjIFRoZSAnODgnIGJlbG93IGlzIGEgbWFnaWMgbnVtYmVyIHRoYXQgYXZvaWRzIHBsYWNpbmcgdGhlIGJvdHRvbQogICAgICAgICAjIG9mIHRoZSB3aW5kb3cgYmVsb3cgdGhlIHBhbmVsIG9uIG15IG1hY2hpbmUuIEkgZG9uJ3Qga25vdyBob3cKICAgICAgICAgIyB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoaXMgd2l0aCB0a2ludGVyLgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCAyZjdlOTMzLi4yZmE5MDEyIDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtMTExLDcgKzExMSwxNSBAQAogIyBMaXRlcmFsIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogTGl0ZXJhbCA9IHJlLmNvbXBpbGUoYnInLip7KD9QPHNpemU+XGQrKX0kJywgcmUuQVNDSUkpCiBNYXBDUkxGID0gcmUuY29tcGlsZShicidcclxufFxyfFxuJykKLVJlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPlteXF1dKikpP1xdJykKKyMgV2Ugbm8gbG9uZ2VyIGV4Y2x1ZGUgdGhlICddJyBjaGFyYWN0ZXIgZnJvbSB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQorIyBjb2RlLCBldmVuIHRob3VnaCBpdCB2aW9sYXRlcyB0aGUgUkZDLiAgUG9wdWxhciBJTUFQIHNlcnZlcnMgc3VjaCBhcyBHbWFpbAorIyBhbGxvdyBmbGFncyB3aXRoICddJywgYW5kIHRoZXJlIGFyZSBwcm9ncmFtcyAoaW5jbHVkaW5nIGltYXBsaWIhKSB0aGF0IGNhbgorIyBwcm9kdWNlIHRoZW0uICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgaWYgdGhlICd0ZXh0JyBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQorIyBpbmNsdWRlcyBhICddJyB3ZSdsbCBwYXJzZSB0aGUgcmVzcG9uc2Ugd3JvbmcgKHdoaWNoIGlzIHRoZSBwb2ludCBvZiB0aGUgUkZDCisjIHJlc3RyaWN0aW9uKS4gIEhvd2V2ZXIsIHRoYXQgc2VlbXMgbGVzcyBsaWtlbHkgdG8gYmUgYSBwcm9ibGVtIGluIHByYWN0aWNlCisjIHRoYW4gYmVpbmcgdW5hYmxlIHRvIGNvcnJlY3RseSBwYXJzZSBmbGFncyB0aGF0IGluY2x1ZGUgJ10nIGNoYXJzLCB3aGljaAorIyB3YXMgcmVwb3J0ZWQgYXMgYSByZWFsLXdvcmxkIHByb2JsZW0gaW4gaXNzdWUgIzIxODE1LgorUmVzcG9uc2VfY29kZSA9IHJlLmNvbXBpbGUoYnInXFsoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT9cXScpCiBVbnRhZ2dlZF9yZXNwb25zZSA9IHJlLmNvbXBpbGUoYnInXCogKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/JykKICMgVW50YWdnZWRfc3RhdHVzIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiBVbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKApAQCAtMTI0LDcgKzEzMiw3IEBACiAKIGNsYXNzIElNQVA0OgogCi0gICAgIiIiSU1BUDQgY2xpZW50IGNsYXNzLgorICAgIHIiIiJJTUFQNCBjbGllbnQgY2xhc3MuCiAKICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNChbaG9zdFssIHBvcnRdXSkKIApAQCAtMTI1OSw3ICsxMjY3LDEwIEBACiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCi0KKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBzc2xfY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBOb25lOgpAQCAtMTUyNyw3ICsxNTM4LDcgQEAKICAgICAoJ3NlbGVjdCcsICgnL3RtcC95eXogMicsKSksCiAgICAgKCdzZWFyY2gnLCAoTm9uZSwgJ1NVQkpFQ1QnLCAndGVzdCcpKSwKICAgICAoJ2ZldGNoJywgKCcxJywgJyhGTEFHUyBJTlRFUk5BTERBVEUgUkZDODIyKScpKSwKLSAgICAoJ3N0b3JlJywgKCcxJywgJ0ZMQUdTJywgJyhcRGVsZXRlZCknKSksCisgICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsIHInKFxEZWxldGVkKScpKSwKICAgICAoJ25hbWVzcGFjZScsICgpKSwKICAgICAoJ2V4cHVuZ2UnLCAoKSksCiAgICAgKCdyZWNlbnQnLCAoKSksCmRpZmYgLS1naXQgYS9MaWIvaW1naGRyLnB5IGIvTGliL2ltZ2hkci5weQppbmRleCBiMjY3OTI1Li43NmU4YWJiIDEwMDY0NAotLS0gYS9MaWIvaW1naGRyLnB5CisrKyBiL0xpYi9pbWdoZHIucHkKQEAgLTEsNSArMSw3IEBACiAiIiJSZWNvZ25pemUgaW1hZ2UgZmlsZSBmb3JtYXRzIGJhc2VkIG9uIHRoZWlyIGZpcnN0IGZldyBieXRlcy4iIiIKIAorZnJvbSBvcyBpbXBvcnQgUGF0aExpa2UKKwogX19hbGxfXyA9IFsid2hhdCJdCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwpAQCAtMTAsNyArMTIsNyBAQAogICAgIGYgPSBOb25lCiAgICAgdHJ5OgogICAgICAgICBpZiBoIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIChzdHIsIFBhdGhMaWtlKSk6CiAgICAgICAgICAgICAgICAgZiA9IG9wZW4oZmlsZSwgJ3JiJykKICAgICAgICAgICAgICAgICBoID0gZi5yZWFkKDMyKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5CmluZGV4IGUyNjQzOTEuLjc4MWZmMjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXAucHkKKysrIGIvTGliL2ltcC5weQpAQCAtMzAsNyArMzAsNyBAQAogCiB3YXJuaW5ncy53YXJuKCJ0aGUgaW1wIG1vZHVsZSBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBpbXBvcnRsaWI7ICIKICAgICAgICAgICAgICAgInNlZSB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBmb3IgYWx0ZXJuYXRpdmUgdXNlcyIsCi0gICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAKICMgREVQUkVDQVRFRAogU0VBUkNIX0VSUk9SID0gMApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CmluZGV4IDllZWNiZmUuLmE1MzFhMDMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKQEAgLTM2LDIzICszNiw2IEBACiAgICAgcmV0dXJuIHR5cGUoc3lzKShuYW1lKQogCiAKLWNsYXNzIF9NYW5hZ2VSZWxvYWQ6Ci0KLSAgICAiIiJNYW5hZ2VzIHRoZSBwb3NzaWJsZSBjbGVhbi11cCBvZiBzeXMubW9kdWxlcyBmb3IgbG9hZF9tb2R1bGUoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2lzX3JlbG9hZCA9IHNlbGYuX25hbWUgaW4gc3lzLm1vZHVsZXMKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIGlmIGFueShhcmcgaXMgbm90IE5vbmUgZm9yIGFyZyBpbiBhcmdzKSBhbmQgbm90IHNlbGYuX2lzX3JlbG9hZDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbc2VsZi5fbmFtZV0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KICMgTW9kdWxlLWxldmVsIGxvY2tpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCkBAIC0yNzAsNyArMjUzLDcgQEAKICMgTW9kdWxlIHNwZWNpZmljYXRpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZGVmIF9tb2R1bGVfcmVwcihtb2R1bGUpOgotICAgICMgVGhlIGltcGxlbWVudGF0aW9uIG9mIE1vZHVsZVR5cGVfX3JlcHJfXygpLgorICAgICMgVGhlIGltcGxlbWVudGF0aW9uIG9mIE1vZHVsZVR5cGUuX19yZXByX18oKS4KICAgICBsb2FkZXIgPSBnZXRhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nLCBOb25lKQogICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnbW9kdWxlX3JlcHInKToKICAgICAgICAgIyBBcyBzb29uIGFzIEJ1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIGFuZCBOYW1lc3BhY2VMb2FkZXIKQEAgLTU3Niw5ICs1NTksOCBAQAogICAgICAgICAjIG1vZHVsZSBjcmVhdGlvbiBzaG91bGQgYmUgdXNlZC4KICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogICAgIGVsaWYgaGFzYXR0cihzcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6Ci0gICAgICAgIF93YXJuaW5ncy53YXJuKCdzdGFydGluZyBpbiBQeXRob24gMy42LCBsb2FkZXJzIGRlZmluaW5nIGV4ZWNfbW9kdWxlKCkgJwotICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknLAotICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlcnMgdGhhdCBkZWZpbmUgZXhlY19tb2R1bGUoKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGFsc28gZGVmaW5lIGNyZWF0ZV9tb2R1bGUoKScpCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKICAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQpAQCAtNjAzLDcgKzU4NSw3IEBACiAKICMgVXNlZCBieSBpbXBvcnRsaWIucmVsb2FkKCkgYW5kIF9sb2FkX21vZHVsZV9zaGltKCkuCiBkZWYgX2V4ZWMoc3BlYywgbW9kdWxlKToKLSAgICAiIiJFeGVjdXRlIHRoZSBzcGVjIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKKyAgICAiIiJFeGVjdXRlIHRoZSBzcGVjJ3Mgc3BlY2lmaWVkIG1vZHVsZSBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCiAgICAgbmFtZSA9IHNwZWMubmFtZQogICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihuYW1lKToKQEAgLTg3NywxNCArODU5LDIxIEBACiAKIAogZGVmIF9maW5kX3NwZWMobmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgotICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCi0gICAgaWYgc3lzLm1ldGFfcGF0aCBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgIiIiRmluZCBhIG1vZHVsZSdzIHNwZWMuIiIiCisgICAgbWV0YV9wYXRoID0gc3lzLm1ldGFfcGF0aAorICAgIGlmIG1ldGFfcGF0aCBpcyBOb25lOgorICAgICAgICAjIFB5SW1wb3J0X0NsZWFudXAoKSBpcyBydW5uaW5nIG9yIGhhcyBiZWVuIGNhbGxlZC4KKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInN5cy5tZXRhX3BhdGggaXMgTm9uZSwgUHl0aG9uIGlzIGxpa2VseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaHV0dGluZyBkb3duIikKKworICAgIGlmIG5vdCBtZXRhX3BhdGg6CiAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKwogICAgICMgV2UgY2hlY2sgc3lzLm1vZHVsZXMgaGVyZSBmb3IgdGhlIHJlbG9hZCBjYXNlLiAgV2hpbGUgYSBwYXNzZWQtaW4KICAgICAjIHRhcmdldCB3aWxsIHVzdWFsbHkgaW5kaWNhdGUgYSByZWxvYWQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlLCB3aGVyZWFzCiAgICAgIyBzeXMubW9kdWxlcyBwcm92aWRlcyBvbmUuCiAgICAgaXNfcmVsb2FkID0gbmFtZSBpbiBzeXMubW9kdWxlcwotICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKICAgICAgICAgd2l0aCBfSW1wb3J0TG9ja0NvbnRleHQoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmaW5kX3NwZWMgPSBmaW5kZXIuZmluZF9zcGVjCkBAIC05MjUsNiArOTE0LDkgQEAKICAgICBpZiBsZXZlbCA+IDA6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmcnKQorICAgICAgICBlbGlmIG5vdCBwYWNrYWdlOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2F0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2UnKQogICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgbXNnID0gKCdQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgJwogICAgICAgICAgICAgICAgICAgICdpbXBvcnQnKQpAQCAtOTUwLDEwICs5NDIsMTAgQEAKICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIG1zZyA9IChfRVJSX01TRyArICc7IHshcn0gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKICAgICBzcGVjID0gX2ZpbmRfc3BlYyhuYW1lLCBwYXRoKQogICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCiAgICAgZWxzZToKICAgICAgICAgbW9kdWxlID0gX2xvYWRfdW5sb2NrZWQoc3BlYykKICAgICBpZiBwYXJlbnQ6CkBAIC05ODksMTAgKzk4MSwxMSBAQAogICAgICAgICBfaW1wLnJlbGVhc2VfbG9jaygpCiAgICAgICAgIG1lc3NhZ2UgPSAoJ2ltcG9ydCBvZiB7fSBoYWx0ZWQ7ICcKICAgICAgICAgICAgICAgICAgICAnTm9uZSBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpKQotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCisgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQogICAgIF9sb2NrX3VubG9ja19tb2R1bGUobmFtZSkKICAgICByZXR1cm4gbW9kdWxlCiAKKwogZGVmIF9oYW5kbGVfZnJvbWxpc3QobW9kdWxlLCBmcm9tbGlzdCwgaW1wb3J0Xyk6CiAgICAgIiIiRmlndXJlIG91dCB3aGF0IF9faW1wb3J0X18gc2hvdWxkIHJldHVybi4KIApAQCAtMTAxNCwxMyArMTAwNywxMiBAQAogICAgICAgICAgICAgICAgIGZyb21fbmFtZSA9ICd7fS57fScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGRpY3RhdGVzIHdlIGlnbm9yZSBmYWlsZWQKICAgICAgICAgICAgICAgICAgICAgIyBpbXBvcnRzIHRyaWdnZXJlZCBieSBmcm9tbGlzdCBmb3IgbW9kdWxlcyB0aGF0IGRvbid0CiAgICAgICAgICAgICAgICAgICAgICMgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0cihleGMpLnN0YXJ0c3dpdGgoX0VSUl9NU0dfUFJFRklYKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgIHJldHVybiBtb2R1bGUKIApAQCAtMTAzMyw3ICsxMDI1LDE5IEBACiAKICAgICAiIiIKICAgICBwYWNrYWdlID0gZ2xvYmFscy5nZXQoJ19fcGFja2FnZV9fJykKLSAgICBpZiBwYWNrYWdlIGlzIE5vbmU6CisgICAgc3BlYyA9IGdsb2JhbHMuZ2V0KCdfX3NwZWNfXycpCisgICAgaWYgcGFja2FnZSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgcGFja2FnZSAhPSBzcGVjLnBhcmVudDoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCJfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZiIoe3BhY2thZ2Uhcn0gIT0ge3NwZWMucGFyZW50IXJ9KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRXYXJuaW5nLCBzdGFja2xldmVsPTMpCisgICAgICAgIHJldHVybiBwYWNrYWdlCisgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gc3BlYy5wYXJlbnQKKyAgICBlbHNlOgorICAgICAgICBfd2FybmluZ3Mud2FybigiY2FuJ3QgcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IgX19wYWNrYWdlX18sICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18iLAorICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRXYXJuaW5nLCBzdGFja2xldmVsPTMpCiAgICAgICAgIHBhY2thZ2UgPSBnbG9iYWxzWydfX25hbWVfXyddCiAgICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6CiAgICAgICAgICAgICBwYWNrYWdlID0gcGFja2FnZS5ycGFydGl0aW9uKCcuJylbMF0KZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQppbmRleCBlNTRkNjkxLi45ZmVlYzUwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CkBAIC0xMzcsMTAgKzEzNyw2IEBACiAjIGEgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQogIyBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgogIwotIyBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0jIC1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KLSMgb2RkIG51bWJlcnMgZm9yIHNvbWUgdGltZSBub3cuCi0jCiAjIFRoZXJlIHdlcmUgYSB2YXJpZXR5IG9mIG9sZCBzY2hlbWVzIGZvciBzZXR0aW5nIHRoZSBtYWdpYyBudW1iZXIuCiAjIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKICMgMTAuCkBAIC0yMzEsNiArMjI3LDE5IEBACiAjICAgICBQeXRob24gMy41YjIgIDMzNDAgKGZpeCBkaWN0aW9uYXJ5IGRpc3BsYXkgZXZhbHVhdGlvbiBvcmRlciAjMTEyMDUpCiAjICAgICBQeXRob24gMy41YjIgIDMzNTAgKGFkZCBHRVRfWUlFTERfRlJPTV9JVEVSIG9wY29kZSAjMjQ0MDApCiAjICAgICBQeXRob24gMy41LjIgIDMzNTEgKGZpeCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCBvcGNvZGUgIzI3Mjg2KQorIyAgICAgUHl0aG9uIDMuNmEwICAzMzYwIChhZGQgRk9STUFUX1ZBTFVFIG9wY29kZSAjMjU0ODMKKyMgICAgIFB5dGhvbiAzLjZhMCAgMzM2MSAobGluZW5vIGRlbHRhIG9mIGNvZGUuY29fbG5vdGFiIGJlY29tZXMgc2lnbmVkKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcwICgxNiBiaXQgd29yZGNvZGUpCisjICAgICBQeXRob24gMy42YTEgIDMzNzEgKGFkZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZSAjMjcxNDApCisjICAgICBQeXRob24gMy42YTEgIDMzNzIgKE1BS0VfRlVOQ1RJT04gc2ltcGxpZmljYXRpb24sIHJlbW92ZSBNQUtFX0NMT1NVUkUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIzI3MDk1KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzczIChhZGQgQlVJTERfU1RSSU5HIG9wY29kZSAjMjcwNzgpCisjICAgICBQeXRob24gMy42YjEgIDMzNzUgKGFkZCBTRVRVUF9BTk5PVEFUSU9OUyBhbmQgU1RPUkVfQU5OT1RBVElPTiBvcGNvZGVzCisjICAgICAgICAgICAgICAgICAgICAgICAgICMyNzk4NSkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NiAoc2ltcGxpZnkgQ0FMTF9GVU5DVElPTnMgJiBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NyAoc2V0IF9fY2xhc3NfXyBjZWxsIGZyb20gdHlwZS5fX25ld19fICMyMzcyMikKKyMgICAgIFB5dGhvbiAzLjZiMiAgMzM3OCAoYWRkIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgIzI4MjU3KQorIyAgICAgUHl0aG9uIDMuNnJjMSAzMzc5IChtb3JlIHRob3JvdWdoIF9fY2xhc3NfXyB2YWxpZGF0aW9uICMyMzcyMikKICMKICMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwogIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQpAQCAtMjM5LDcgKzI0OCw3IEBACiAjIFdoZW5ldmVyIE1BR0lDX05VTUJFUiBpcyBjaGFuZ2VkLCB0aGUgcmFuZ2VzIGluIHRoZSBtYWdpY192YWx1ZXMgYXJyYXkKICMgaW4gUEMvbGF1bmNoZXIuYyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KIAotTUFHSUNfTlVNQkVSID0gKDMzNTEpLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK01BR0lDX05VTUJFUiA9ICgzMzc5KS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCiBfUkFXX01BR0lDX05VTUJFUiA9IGludC5mcm9tX2J5dGVzKE1BR0lDX05VTUJFUiwgJ2xpdHRsZScpICAjIEZvciBpbXBvcnQuYwogCiBfUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKQEAgLTI3Niw2ICsyODUsNyBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQogICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCiAgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwpAQCAtMzA2LDYgKzMxNiw3IEBACiAgICAgIiIiCiAgICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIHBhdGggPSBfb3MuZnNwYXRoKHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCiAgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKQEAgLTM3MSwxNCArMzgyLDYgQEAKICAgICByZXR1cm4gbW9kZQogCiAKLWRlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6Ci0gICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgotICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKLSAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQotICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKLQotCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQogICAgIGxvYWRlciBjYW4gaGFuZGxlLgpAQCAtNDQ4LDE1ICs0NTEsMTUgQEAKICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KICAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6CiAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHRpbWVzdGFtcCBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQogICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKICAgICAgICAgdHJ5OgpAQCAtNDY2LDcgKzQ2OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKQEAgLTQ4Myw3ICs0ODYsNyBAQAogICAgICIiIkNvbXBpbGUgYnl0ZWNvZGUgYXMgcmV0dXJuZWQgYnkgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcigpLiIiIgogICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGEpCiAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBfY29kZV90eXBlKToKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKICAgICAgICAgcmV0dXJuIGNvZGUKQEAgLTU0MSw2ICs1NDQsOCBAQAogICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NhdGlvbiA9IF9vcy5mc3BhdGgobG9jYXRpb24pCiAKICAgICAjIElmIHRoZSBsb2NhdGlvbiBpcyBvbiB0aGUgZmlsZXN5c3RlbSwgYnV0IGRvZXNuJ3QgYWN0dWFsbHkgZXhpc3QsCiAgICAgIyB3ZSBjb3VsZCByZXR1cm4gTm9uZSBoZXJlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxvY2F0aW9uIGlzIG5vdApAQCAtNjEwLDcgKzYxNSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCiAgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgogICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQpAQCAtNjczLDYgKzY3OCw3IEBACiAgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCiAKICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUaGlzIG1vZHVsZSBpcyBkZXByZWNhdGVkLiIiIgogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC03NjYsMjEgKzc3MiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbXBpbGVfYnl0ZWNvZGUoYnl0ZXNfZGF0YSwgbmFtZT1mdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoPWJ5dGVjb2RlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGg9c291cmNlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5zb3VyY2VfdG9fY29kZShzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQogICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fYnl0ZWNvZGUoY29kZV9vYmplY3QsIHNvdXJjZV9tdGltZSwKICAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CkBAIC04NjAsMTQgKzg2NiwxNiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKICAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBfbW9kZSkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICMgU2FtZSBhcyBhYm92ZToganVzdCBkb24ndCB3cml0ZSB0aGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLCBleGMpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjKQogCiAKIGNsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgpAQCAtOTEyLDE0ICs5MjAsMTQgQEAKICAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAogICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLm5hbWUsIHNlbGYucGF0aCkKICAgICAgICAgcmV0dXJuIG1vZHVsZQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5leGVjX2R5bmFtaWMsIG1vZHVsZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnBhdGgpCiAKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CkBAIC05ODUsNiArOTkzLDkgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaW5kZXgsIHBhdGgpOgorICAgICAgICBzZWxmLl9wYXRoW2luZGV4XSA9IHBhdGgKKwogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKQEAgLTEwMzQsNyArMTA0NSw4IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgICMgVGhlIGltcG9ydCBzeXN0ZW0gbmV2ZXIgY2FsbHMgdGhpcyBtZXRob2QuCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoKQogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC0xMDU0LDExICsxMDY2LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCi0KLSAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KLQotICAgICAgICAiIiIKKyAgICAgICAgIiIiU2VhcmNoIHN5cy5wYXRoX2hvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLiIiIgogICAgICAgICBpZiBzeXMucGF0aF9ob29rcyBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5wYXRoX2hvb2tzOgogICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CkBAIC0xMTQwLDggKzExNDgsMTAgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yICdmdWxsbmFtZScgb24gc3lzLnBhdGggb3IgJ3BhdGgnLgorCisgICAgICAgIFRoZSBzZWFyY2ggaXMgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgorICAgICAgICAiIiIKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCiAgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCkBAIC0xMjIxLDggKzEyMzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPXNtc2wpCiAKICAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuICBSZXR1cm5zIHRoZQotICAgICAgICBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCiAgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgIHRyeToKQEAgLTEyNTQsMTIgKzEyNjYsMTMgQEAKICAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCiAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScsIGZ1bGxfcGF0aCwgdmVyYm9zaXR5PTIpCiAgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CiAgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhcmdldCkKICAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLCBiYXNlX3BhdGgpCiAgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQogICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCiAgICAgICAgICAgICByZXR1cm4gc3BlYwpAQCAtMTQyNywxMSArMTQ0MCw0IEBACiAgICAgX3NldHVwKF9ib290c3RyYXBfbW9kdWxlKQogICAgIHN1cHBvcnRlZF9sb2FkZXJzID0gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkKICAgICBzeXMucGF0aF9ob29rcy5leHRlbmQoW0ZpbGVGaW5kZXIucGF0aF9ob29rKCpzdXBwb3J0ZWRfbG9hZGVycyldKQotICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgotICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKLQotICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCi0gICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKLSAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IGUxZmEwN2EuLjZiZGYwZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKQEAgLTIyLDggKzIyLDggQEAKICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCcuJyk6CiAgICAgICAgIHJldHVybiBuYW1lCiAgICAgZWxpZiBub3QgcGFja2FnZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSByZWxhdGl2ZSBuYW1lICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKG5vIGxlYWRpbmcgZG90KScuZm9ybWF0KG5hbWUpKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnbm8gcGFja2FnZSBzcGVjaWZpZWQgZm9yIHtyZXByKG5hbWUpfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhyZXF1aXJlZCBmb3IgcmVsYXRpdmUgbW9kdWxlIG5hbWVzKScpCiAgICAgbGV2ZWwgPSAwCiAgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgogICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgpAQCAtMjA0LDExICsyMDQsNiBAQAogICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCiAKIAotY2xhc3MgX01vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKLQotICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHRvIGFsbG93IF9fY2xhc3NfXyBtYW5pcHVsYXRpb24uIiIiCi0KLQogY2xhc3MgX0xhenlNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CiAKICAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB3aGljaCB0cmlnZ2VycyBsb2FkaW5nIHVwb24gYXR0cmlidXRlIGFjY2Vzcy4iIiIKQEAgLTIxOCwxMyArMjEzLDE0IEBACiAgICAgICAgICMgQWxsIG1vZHVsZSBtZXRhZGF0YSBtdXN0IGJlIGdhcm5lcmVkIGZyb20gX19zcGVjX18gaW4gb3JkZXIgdG8gYXZvaWQKICAgICAgICAgIyB1c2luZyBtdXRhdGVkIHZhbHVlcy4KICAgICAgICAgIyBTdG9wIHRyaWdnZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgICAgIHNlbGYuX19jbGFzc19fID0gX01vZHVsZQorICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKICAgICAgICAgIyBHZXQgdGhlIG9yaWdpbmFsIG5hbWUgdG8gbWFrZSBzdXJlIG5vIG9iamVjdCBzdWJzdGl0dXRpb24gb2NjdXJyZWQKICAgICAgICAgIyBpbiBzeXMubW9kdWxlcy4KICAgICAgICAgb3JpZ2luYWxfbmFtZSA9IHNlbGYuX19zcGVjX18ubmFtZQogICAgICAgICAjIEZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGF0dHJpYnV0ZXMgd2VyZSBtdXRhdGVkIGJldHdlZW4gdGhlIGNyZWF0aW9uCiAgICAgICAgICMgb2YgdGhlIG1vZHVsZSBhbmQgbm93LgotICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGUKKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlWydfX2RpY3RfXyddCisgICAgICAgIG9yaWdpbmFsX3R5cGUgPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10KICAgICAgICAgYXR0cnNfbm93ID0gc2VsZi5fX2RpY3RfXwogICAgICAgICBhdHRyc191cGRhdGVkID0ge30KICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXR0cnNfbm93Lml0ZW1zKCk6CkBAIC0yMzksOSArMjM1LDkgQEAKICAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgogICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgotICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnLmZvcm1hdChvcmlnaW5hbF9uYW1lKSkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYibW9kdWxlIG9iamVjdCBmb3Ige29yaWdpbmFsX25hbWUhcn0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyBkdXJpbmcgYSBsYXp5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZCIpCiAgICAgICAgICMgVXBkYXRlIGFmdGVyIGxvYWRpbmcgc2luY2UgdGhhdCdzIHdoYXQgd291bGQgaGFwcGVuIGluIGFuIGVhZ2VyCiAgICAgICAgICMgbG9hZGluZyBzaXR1YXRpb24uCiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGF0dHJzX3VwZGF0ZWQpCkBAIC0yNzUsOCArMjcxLDcgQEAKICAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKIAogICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgotICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKLSAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKQEAgLTI4Niw1ICsyODEsOCBAQAogICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKICAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCiAgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCi0gICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZSA9IHt9CisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbG9hZGVyX3N0YXRlWydfX2NsYXNzX18nXSA9IG1vZHVsZS5fX2NsYXNzX18KKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IGxvYWRlcl9zdGF0ZQogICAgICAgICBtb2R1bGUuX19jbGFzc19fID0gX0xhenlNb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggOWY5ZmNmZS4uNGQ1NmVmNSAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBnZXRtb2R1bGUoKSAtIGRldGVybWluZSB0aGUgbW9kdWxlIHRoYXQgYW4gb2JqZWN0IGNhbWUgZnJvbQogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAotICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKKyAgICBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwpAQCAtMTc5LDEyICsxNzksMjQgQEAKIGRlZiBpc2Nvcm91dGluZWZ1bmN0aW9uKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KIAotICAgIENvcm91dGluZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXgsCi0gICAgb3IgZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aCAidHlwZXMuY29yb3V0aW5lIi4KKyAgICBDb3JvdXRpbmUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4LgogICAgICIiIgogICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCiAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FKQogCitkZWYgaXNhc3luY2dlbmZ1bmN0aW9uKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorCisgICAgQXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbnMgYXJlIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIgorICAgIHN5bnRheCBhbmQgaGF2ZSAieWllbGQiIGV4cHJlc3Npb25zIGluIHRoZWlyIGJvZHkuCisgICAgIiIiCisgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpCisKK2RlZiBpc2FzeW5jZ2VuKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLiIiIgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQXN5bmNHZW5lcmF0b3JUeXBlKQorCiBkZWYgaXNnZW5lcmF0b3Iob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2VuZXJhdG9yLgogCkBAIC02MjMsMjMgKzYzNSw2IEBACiAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgJwogICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUgb2JqZWN0Jy5mb3JtYXQob2JqZWN0KSkKIAotTW9kdWxlSW5mbyA9IG5hbWVkdHVwbGUoJ01vZHVsZUluZm8nLCAnbmFtZSBzdWZmaXggbW9kZSBtb2R1bGVfdHlwZScpCi0KLWRlZiBnZXRtb2R1bGVpbmZvKHBhdGgpOgotICAgICIiIkdldCB0aGUgbW9kdWxlIG5hbWUsIHN1ZmZpeCwgbW9kZSwgYW5kIG1vZHVsZSB0eXBlIGZvciBhIGdpdmVuIGZpbGUuIiIiCi0gICAgd2FybmluZ3Mud2FybignaW5zcGVjdC5nZXRtb2R1bGVpbmZvKCkgaXMgZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgIDIpCi0gICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLSAgICBzdWZmaXhlcyA9IFsoLWxlbihzdWZmaXgpLCBzdWZmaXgsIG1vZGUsIG10eXBlKQotICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCi0gICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCi0gICAgZm9yIG5lZ2xlbiwgc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBzdWZmaXhlczoKLSAgICAgICAgaWYgZmlsZW5hbWVbbmVnbGVuOl0gPT0gc3VmZml4OgotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZUluZm8oZmlsZW5hbWVbOm5lZ2xlbl0sIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0KIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKICAgICBmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKQEAgLTEwMjQsMjQgKzEwMTksMzAgQEAKIEFyZ1NwZWMgPSBuYW1lZHR1cGxlKCdBcmdTcGVjJywgJ2FyZ3MgdmFyYXJncyBrZXl3b3JkcyBkZWZhdWx0cycpCiAKIGRlZiBnZXRhcmdzcGVjKGZ1bmMpOgotICAgICIiIkdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgZnVuY3Rpb24ncyBhcmd1bWVudHMuCisgICAgIiIiR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCiAKICAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywga2V5d29yZHMsIGRlZmF1bHRzKS4KICAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcywgaW5jbHVkaW5nIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KLSAgICAndmFyYXJncycgYW5kICdrZXl3b3JkcycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCi0gICAgJ2RlZmF1bHRzJyBpcyBhbiBuLXR1cGxlIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4KKyAgICAndmFyYXJncycgYW5kICdrZXl3b3JkcycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogcGFyYW1ldGVycyBvciBOb25lLgorICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBwYXJhbWV0ZXJzLgogCi0gICAgVXNlIHRoZSBnZXRmdWxsYXJnc3BlYygpIEFQSSBmb3IgUHl0aG9uIDMgY29kZSwgYXMgYW5ub3RhdGlvbnMKLSAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC4gZ2V0YXJnc3BlYygpIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgotICAgIGlmIHRoZSBmdW5jIGhhcyBlaXRoZXIgYW5ub3RhdGlvbnMgb3Iga2V5d29yZCBhcmd1bWVudHMuCisgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCBhcyBpdCBkb2VzIG5vdCBzdXBwb3J0IGFubm90YXRpb25zIG9yCisgICAga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIHdpbGwgcmFpc2UgVmFsdWVFcnJvciBpZiBlaXRoZXIgaXMgcHJlc2VudAorICAgIG9uIHRoZSBzdXBwbGllZCBjYWxsYWJsZS4KKworICAgIEZvciBhIG1vcmUgc3RydWN0dXJlZCBpbnRyb3NwZWN0aW9uIEFQSSwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KKworICAgIEFsdGVybmF0aXZlbHksIHVzZSBnZXRmdWxsYXJnc3BlYygpIGZvciBhbiBBUEkgd2l0aCBhIHNpbWlsYXIgbmFtZWR0dXBsZQorICAgIGJhc2VkIGludGVyZmFjZSwgYnV0IGZ1bGwgc3VwcG9ydCBmb3IgYW5ub3RhdGlvbnMgYW5kIGtleXdvcmQtb25seQorICAgIHBhcmFtZXRlcnMuCiAgICAgIiIiCiAgICAgd2FybmluZ3Mud2FybigiaW5zcGVjdC5nZXRhcmdzcGVjKCkgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgICAgICAgInVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgICAgICAidXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgb3IgaW5zcGVjdC5nZXRmdWxsYXJnc3BlYygpIiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubiA9IFwKICAgICAgICAgZ2V0ZnVsbGFyZ3NwZWMoZnVuYykKICAgICBpZiBrd29ubHlhcmdzIG9yIGFubjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRnVuY3Rpb24gaGFzIGtleXdvcmQtb25seSBhcmd1bWVudHMgb3IgYW5ub3RhdGlvbnMiCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZ1bmN0aW9uIGhhcyBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBvciBhbm5vdGF0aW9ucyIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB1c2UgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgd2hpY2ggY2FuIHN1cHBvcnQgdGhlbSIpCiAgICAgcmV0dXJuIEFyZ1NwZWMoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzKQogCkBAIC0xMDQ5LDIwICsxMDUwLDIwIEBACiAgICAgJ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zJykKIAogZGVmIGdldGZ1bGxhcmdzcGVjKGZ1bmMpOgotICAgICIiIkdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgY2FsbGFibGUgb2JqZWN0J3MgYXJndW1lbnRzLgorICAgICIiIkdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgY2FsbGFibGUgb2JqZWN0J3MgcGFyYW1ldGVycy4KIAogICAgIEEgdHVwbGUgb2Ygc2V2ZW4gdGhpbmdzIGlzIHJldHVybmVkOgotICAgIChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzIGFubm90YXRpb25zKS4KLSAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4KLSAgICAndmFyYXJncycgYW5kICd2YXJrdycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCi0gICAgJ2RlZmF1bHRzJyBpcyBhbiBuLXR1cGxlIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4KLSAgICAna3dvbmx5YXJncycgaXMgYSBsaXN0IG9mIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KKyAgICAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMpLgorICAgICdhcmdzJyBpcyBhIGxpc3Qgb2YgdGhlIHBhcmFtZXRlciBuYW1lcy4KKyAgICAndmFyYXJncycgYW5kICd2YXJrdycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogcGFyYW1ldGVycyBvciBOb25lLgorICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBwYXJhbWV0ZXJzLgorICAgICdrd29ubHlhcmdzJyBpcyBhIGxpc3Qgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlciBuYW1lcy4KICAgICAna3dvbmx5ZGVmYXVsdHMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4KLSAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50IG5hbWVzIHRvIGFubm90YXRpb25zLgorICAgICdhbm5vdGF0aW9ucycgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgcGFyYW1ldGVyIG5hbWVzIHRvIGFubm90YXRpb25zLgogCi0gICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gZ2V0YXJnc3BlYygpLgotCi0gICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgaW5zcGVjdC5zaWduYXR1cmUoKSBpbnN0ZWFkLgorICAgIE5vdGFibGUgZGlmZmVyZW5jZXMgZnJvbSBpbnNwZWN0LnNpZ25hdHVyZSgpOgorICAgICAgLSB0aGUgInNlbGYiIHBhcmFtZXRlciBpcyBhbHdheXMgcmVwb3J0ZWQsIGV2ZW4gZm9yIGJvdW5kIG1ldGhvZHMKKyAgICAgIC0gd3JhcHBlciBjaGFpbnMgZGVmaW5lZCBieSBfX3dyYXBwZWRfXyAqbm90KiB1bndyYXBwZWQgYXV0b21hdGljYWxseQogICAgICIiIgogCiAgICAgdHJ5OgpAQCAtMTE3NCw4ICsxMTc1LDcgQEAKICAgICAgICAgICAgICAgICAgIGZvcm1hdHZhbHVlPWxhbWJkYSB2YWx1ZTogJz0nICsgcmVwcih2YWx1ZSksCiAgICAgICAgICAgICAgICAgICBmb3JtYXRyZXR1cm5zPWxhbWJkYSB0ZXh0OiAnIC0+ICcgKyB0ZXh0LAogICAgICAgICAgICAgICAgICAgZm9ybWF0YW5ub3RhdGlvbj1mb3JtYXRhbm5vdGF0aW9uKToKLSAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgZ2V0YXJnc3BlYwotICAgIG9yIGdldGZ1bGxhcmdzcGVjLgorICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRmdWxsYXJnc3BlYy4KIAogICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsCiAgICAga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zKS4gIFRoZSBvdGhlciBmaXZlIGFyZ3VtZW50cwpAQCAtMjQxNiw2ICsyNDE2LDIwIEBACiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0ciwgbm90IGEgeyFyfSIuZm9ybWF0KG5hbWUpKQogCisgICAgICAgIGlmIG5hbWVbMF0gPT0gJy4nIGFuZCBuYW1lWzE6XS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAjIFRoZXNlIGFyZSBpbXBsaWNpdCBhcmd1bWVudHMgZ2VuZXJhdGVkIGJ5IGNvbXByZWhlbnNpb25zLiBJbgorICAgICAgICAgICAgIyBvcmRlciB0byBwcm92aWRlIGEgZnJpZW5kbGllciBpbnRlcmZhY2UgdG8gdXNlcnMsIHdlIHJlY2FzdAorICAgICAgICAgICAgIyB0aGVpciBuYW1lIGFzICJpbXBsaWNpdE4iIGFuZCB0cmVhdCB0aGVtIGFzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgICAgICMgU2VlIGlzc3VlIDE5NjExLgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCBhcmd1bWVudHMgbXVzdCBiZSBwYXNzZWQgaW4gYXMge30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2tpbmQgPSBfUE9TSVRJT05BTF9PTkxZCisgICAgICAgICAgICBuYW1lID0gJ2ltcGxpY2l0e30nLmZvcm1hdChuYW1lWzE6XSkKKwogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvTGliL2lvLnB5IGIvTGliL2lvLnB5CmluZGV4IGUwM2RiOTcuLjk2OGVlNTAgMTAwNjQ0Ci0tLSBhL0xpYi9pby5weQorKysgYi9MaWIvaW8ucHkKQEAgLTkwLDMgKzkwLDEwIEBACiBmb3Iga2xhc3MgaW4gKFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyKToKICAgICBUZXh0SU9CYXNlLnJlZ2lzdGVyKGtsYXNzKQogZGVsIGtsYXNzCisKK3RyeToKKyAgICBmcm9tIF9pbyBpbXBvcnQgX1dpbmRvd3NDb25zb2xlSU8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIFJhd0lPQmFzZS5yZWdpc3RlcihfV2luZG93c0NvbnNvbGVJTykKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5CmluZGV4IDFmOTAwNTguLjIwZjMzY2IgMTAwNjQ0Ci0tLSBhL0xpYi9pcGFkZHJlc3MucHkKKysrIGIvTGliL2lwYWRkcmVzcy5weQpAQCAtNjM2LDEyICs2MzYsMTIgQEAKICAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCiAgICAgICAgIGlmIG4gPj0gMDoKICAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgotICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCdhZGRyZXNzIG91dCBvZiByYW5nZScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhuZXR3b3JrICsgbikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG4gKz0gMQogICAgICAgICAgICAgaWYgYnJvYWRjYXN0ICsgbiA8IG5ldHdvcms6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKGJyb2FkY2FzdCArIG4pCiAKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL19faW5pdF9fLnB5IGIvTGliL2pzb24vX19pbml0X18ucHkKaW5kZXggMTExOGIwZS4uYjhkNWU2YyAxMDA2NDQKLS0tIGEvTGliL2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL2pzb24vX19pbml0X18ucHkKQEAgLTEwNSw2ICsxMDUsNyBAQAogCiBmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCiBmcm9tIC5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgoraW1wb3J0IGNvZGVjcwogCiBfZGVmYXVsdF9lbmNvZGVyID0gSlNPTkVuY29kZXIoCiAgICAgc2tpcGtleXM9RmFsc2UsCkBAIC0xMTYsNyArMTE3LDcgQEAKICAgICBkZWZhdWx0PU5vbmUsCiApCiAKLWRlZiBkdW1wKG9iaiwgZnAsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKK2RlZiBkdW1wKG9iaiwgZnAsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKICAgICAgICAgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLAogICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAgIiIiU2VyaWFsaXplIGBgb2JqYGAgYXMgYSBKU09OIGZvcm1hdHRlZCBzdHJlYW0gdG8gYGBmcGBgIChhCkBAIC0xNzksNyArMTgwLDcgQEAKICAgICAgICAgZnAud3JpdGUoY2h1bmspCiAKIAotZGVmIGR1bXBzKG9iaiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCB0byBhIEpTT04gZm9ybWF0dGVkIGBgc3RyYGAuCkBAIC0yNDAsNyArMjQxLDM3IEBACiBfZGVmYXVsdF9kZWNvZGVyID0gSlNPTkRlY29kZXIob2JqZWN0X2hvb2s9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogCi1kZWYgbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCitkZWYgZGV0ZWN0X2VuY29kaW5nKGIpOgorICAgIGJzdGFydHN3aXRoID0gYi5zdGFydHN3aXRoCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMzJfQkUsIGNvZGVjcy5CT01fVVRGMzJfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMzInCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMTZfQkUsIGNvZGVjcy5CT01fVVRGMTZfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMTYnCisgICAgaWYgYnN0YXJ0c3dpdGgoY29kZWNzLkJPTV9VVEY4KToKKyAgICAgICAgcmV0dXJuICd1dGYtOC1zaWcnCisKKyAgICBpZiBsZW4oYikgPj0gNDoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIDAwIC0tIC0tIC0gdXRmLTMyLWJlCisgICAgICAgICAgICAjIDAwIFhYIC0tIC0tIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScgaWYgYlsxXSBlbHNlICd1dGYtMzItYmUnCisgICAgICAgIGlmIG5vdCBiWzFdOgorICAgICAgICAgICAgIyBYWCAwMCAwMCAwMCAtIHV0Zi0zMi1sZQorICAgICAgICAgICAgIyBYWCAwMCAwMCBYWCAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgIyBYWCAwMCBYWCAtLSAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnIGlmIGJbMl0gb3IgYlszXSBlbHNlICd1dGYtMzItbGUnCisgICAgZWxpZiBsZW4oYikgPT0gMjoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIFhYIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScKKyAgICAjIGRlZmF1bHQKKyAgICByZXR1cm4gJ3V0Zi04JworCisKK2RlZiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgogICAgICIiIkRlc2VyaWFsaXplIGBgZnBgYCAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIGZpbGUtbGlrZSBvYmplY3QgY29udGFpbmluZwogICAgIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgpAQCAtMjY4LDEwICsyOTksMTAgQEAKICAgICAgICAgcGFyc2VfY29uc3RhbnQ9cGFyc2VfY29uc3RhbnQsIG9iamVjdF9wYWlyc19ob29rPW9iamVjdF9wYWlyc19ob29rLCAqKmt3KQogCiAKLWRlZiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBsb2FkcyhzLCAqLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgotICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04KLSAgICBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgorICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAsIGBgYnl0ZXNgYCBvciBgYGJ5dGVhcnJheWBgIGluc3RhbmNlCisgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KIAogICAgIGBgb2JqZWN0X2hvb2tgYCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlCiAgICAgcmVzdWx0IG9mIGFueSBvYmplY3QgbGl0ZXJhbCBkZWNvZGUgKGEgYGBkaWN0YGApLiBUaGUgcmV0dXJuIHZhbHVlIG9mCkBAIC0zMDcsMTIgKzMzOCwxNiBAQAogICAgIFRoZSBgYGVuY29kaW5nYGAgYXJndW1lbnQgaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KIAogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBub3QgeyFyfScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuX19jbGFzc19fLl9fbmFtZV9fKSkKLSAgICBpZiBzLnN0YXJ0c3dpdGgodSdcdWZlZmYnKToKLSAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnXHVmZWZmJyk6CisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgeyFyfScuZm9ybWF0KHMuX19jbGFzc19fLl9fbmFtZV9fKSkKKyAgICAgICAgcyA9IHMuZGVjb2RlKGRldGVjdF9lbmNvZGluZyhzKSwgJ3N1cnJvZ2F0ZXBhc3MnKQorCiAgICAgaWYgKGNscyBpcyBOb25lIGFuZCBvYmplY3RfaG9vayBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfaW50IGlzIE5vbmUgYW5kIHBhcnNlX2Zsb2F0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggMGYwM2YyMC4uMjQyMmM2YSAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0yODAsNyArMjgwLDcgQEAKIAogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsCiAgICAgICAgICAgICBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKToKICAgICAgICAgIiIiYGBvYmplY3RfaG9va2BgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdApkaWZmIC0tZ2l0IGEvTGliL2pzb24vZW5jb2Rlci5weSBiL0xpYi9qc29uL2VuY29kZXIucHkKaW5kZXggZDU5NjQ4OS4uNDFhNDk3YyAxMDA2NDQKLS0tIGEvTGliL2pzb24vZW5jb2Rlci5weQorKysgYi9MaWIvanNvbi9lbmNvZGVyLnB5CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAiIiIKICAgICBpdGVtX3NlcGFyYXRvciA9ICcsICcKICAgICBrZXlfc2VwYXJhdG9yID0gJzogJwotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsCiAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3RvciBmb3IgSlNPTkVuY29kZXIsIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCkBAIC0xNzYsNyArMTc2LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTkVuY29kZXIuZGVmYXVsdChzZWxmLCBvKQogCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBUeXBlRXJyb3IocmVwcihvKSArICIgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIikKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJPYmplY3Qgb2YgdHlwZSAnJXMnIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgby5fX2NsYXNzX18uX19uYW1lX18pCiAKICAgICBkZWYgZW5jb2RlKHNlbGYsIG8pOgogICAgICAgICAiIiJSZXR1cm4gYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBkYXRhIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0IGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKaW5kZXggNjA1MDNkZC4uMmFiZDVlZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKKysrIGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKQEAgLTU0LDEyICs1NCwxMyBAQAogc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10gTkVXTElORQogc21hbGxfc3RtdDogKGV4cHJfc3RtdCB8IHByaW50X3N0bXQgIHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBleGVjX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBwcmludF9zdG10OiAncHJpbnQnICggWyB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddIF0gfAogICAgICAgICAgICAgICAgICAgICAgICc+PicgdGVzdCBbICgnLCcgdGVzdCkrIFsnLCddIF0gKQogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CkBAIC0xNjAsNyArMTYxLDcgQEAKIAkgICAgc3Rhcl9leHByICkKIAogY29tcF9pdGVyOiBjb21wX2ZvciB8IGNvbXBfaWYKLWNvbXBfZm9yOiAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0X3NhZmUgW2NvbXBfaXRlcl0KK2NvbXBfZm9yOiBbQVNZTkNdICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQogY29tcF9pZjogJ2lmJyBvbGRfdGVzdCBbY29tcF9pdGVyXQogCiB0ZXN0bGlzdDE6IHRlc3QgKCcsJyB0ZXN0KSoKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CmluZGV4IDQ0NTAyYmYuLmJhYmU2Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlV0aWxpdHkgZnVuY3Rpb25zLCBub2RlIGNvbnN0cnVjdGlvbiBtYWNyb3MsIGV0Yy4iIiIKICMgQXV0aG9yOiBDb2xsaW4gV2ludGVyCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKLQogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLnB5dHJlZSBpbXBvcnQgTGVhZiwgTm9kZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQppbmRleCA5NjNmOTUyLi5kMzY1NWM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQpAQCAtMzAsOSArMzAsOCBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IHBhdGNvbXAKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMUGFyZW4sIFJQYXJlbiwgQXJnTGlzdCwgRG90Citmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgRG90CiBmcm9tIC4uIGltcG9ydCBmaXhlcl91dGlsCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQppbmRleCAyYzliNzJkLi5hYjkyMWVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQpAQCAtMTAsNyArMTAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgQ29tbWEsIE5hbWUsIENhbGwKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKaW5kZXggMzkxODg5Zi4uYmI2NzE4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgTGlzdENvbXAsIGluX3NwZWNpYWxfY29udGV4dAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CmluZGV4IDE4YzU2MGYuLjQzOTcwOGMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CkBAIC0zMSw3ICszMSw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgcGFyZW50aGVzaXplCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CmluZGV4IDQ2YzdhYWYuLjhlMzQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQpAQCAtMjAsNyArMjAsNyBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4ucHlncmFtIGltcG9ydCB0b2tlbgotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMsIE5vZGUsIExlYWYKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBzeW1zLCBOb2RlLCBMZWFmCiAKIAogZGVmIGhhc19tZXRhY2xhc3MocGFyZW50KToKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKaW5kZXggYWQ5MWEyOS4uYzIyOTU5NiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKQEAgLTMsNyArMyw3IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lCiAKIGNsYXNzIEZpeE5vbnplcm8oZml4ZXJfYmFzZS5CYXNlRml4KToKICAgICBCTV9jb21wYXRpYmxlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CmluZGV4IGExZmUyZjUuLjg3ODAzMjIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKQEAgLTE4LDcgKzE4LDcgQEAKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIENvbW1hLCBTdHJpbmcsIGlzX3R1cGxlCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZwogCiAKIHBhcmVuZF9leHByID0gcGF0Y29tcC5jb21waWxlX3BhdHRlcm4oCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKaW5kZXggZGIzNDEwNC4uNjdiZjUxZiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQpAQCAtMjAsNyArMjAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIApAQCAtNDIsNyArNDEsNyBAQAogICAgICAgICAnTm90SW1wbGVtZW50ZWRUeXBlJyA6ICd0eXBlKE5vdEltcGxlbWVudGVkKScsCiAgICAgICAgICdTbGljZVR5cGUnIDogJ3NsaWNlJywKICAgICAgICAgJ1N0cmluZ1R5cGUnOiAnYnl0ZXMnLCAjIFhYWCA/Ci0gICAgICAgICdTdHJpbmdUeXBlcycgOiAnc3RyJywgIyBYWFggPworICAgICAgICAnU3RyaW5nVHlwZXMnIDogJyhzdHIsKScsICMgWFhYID8KICAgICAgICAgJ1R1cGxlVHlwZSc6ICd0dXBsZScsCiAgICAgICAgICdUeXBlVHlwZScgOiAndHlwZScsCiAgICAgICAgICdVbmljb2RlVHlwZSc6ICdzdHInLApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKaW5kZXggMTQ4MWNkOS4uNWEzNjA0OSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CkBAIC02LDcgKzYsNiBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5maXhlcy5maXhfaW1wb3J0cyBpbXBvcnQgYWx0ZXJuYXRlcywgRml4SW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMuZml4ZXJfdXRpbCBpbXBvcnQgKE5hbWUsIENvbW1hLCBGcm9tSW1wb3J0LCBOZXdsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2luZGVudGF0aW9uLCBOb2RlLCBzeW1zKQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CmluZGV4IDA3MjgwODMuLmM1YTFhYTIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CkBAIC04LDggKzgsNiBAQAogcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgdG8gd3JpdGUgeW91ciBvd24gcmVmYWN0b3JpbmcgdG9vbC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIF9fYXV0aG9yX18gPSAiR3VpZG8gdmFuIFJvc3N1bSA8Z3VpZG9AcHl0aG9uLm9yZz4iCiAKIApAQCAtMjYsNyArMjQsNiBAQAogZnJvbSAucGdlbjIgaW1wb3J0IGRyaXZlciwgdG9rZW5pemUsIHRva2VuCiBmcm9tIC5maXhlcl91dGlsIGltcG9ydCBmaW5kX3Jvb3QKIGZyb20gLiBpbXBvcnQgcHl0cmVlLCBweWdyYW0KLWZyb20gLiBpbXBvcnQgYnRtX3V0aWxzIGFzIGJ1CiBmcm9tIC4gaW1wb3J0IGJ0bV9tYXRjaGVyIGFzIGJtCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CmluZGV4IGMwYmY3ZjIuLmNmMzFhNTQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKQEAgLTMxOSw3ICszMTksNyBAQAogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncwogICAgICAgICBjbG9zdXJlID0gMQogICAgICAgICBkZWYgZigpOiByZXR1cm4gY2xvc3VyZQogICAgICAgICBkZWYgZih4PTEpOiByZXR1cm4gY2xvc3VyZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKaW5kZXggMDg5NzE3Ny4uYWU3Y2ZlOCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CkBAIC0zLDEwICszLDggQEAKIAogIyBQeXRob24gaW1wb3J0cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKIGZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogCiAjIExvY2FsIGltcG9ydHMKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQppbmRleCAxNTA3OWZlLi5jMDUwN2NmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvcgogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQppbmRleCA2NDBkY2VmLi5iM2YyNjgwIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQpAQCAtMiwxMiArMiwxMSBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIHB5dHJlZSwgcmVmYWN0b3IsIGZpeGVyX3V0aWwKK2Zyb20gbGliMnRvMyBpbXBvcnQgcHlncmFtLCBmaXhlcl91dGlsCiBmcm9tIGxpYjJ0bzMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIAogCkBAIC0zMjM0LDYgKzMyMzMsMTAgQEAKICAgICAgICAgYSA9ICIiInR5cGUoTm9uZSkiIiIKICAgICAgICAgc2VsZi5jaGVjayhiLCBhKQogCisgICAgICAgIGIgPSAidHlwZXMuU3RyaW5nVHlwZXMiCisgICAgICAgIGEgPSAiKHN0ciwpIgorICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCisKIGNsYXNzIFRlc3RfaWRpb21zKEZpeGVyVGVzdENhc2UpOgogICAgIGZpeGVyID0gImlkaW9tcyIKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCBlNGEwMTk0Li45YTk2OWU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtOCw3ICs4LDcgQEAKIAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAotZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyLCB0ZXN0X2RpcgorZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZQogCiAjIFB5dGhvbiBpbXBvcnRzCkBAIC0xMzQsNiArMTM0LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgIiIiKQogCiAgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBiXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2kgZm9yIGkgaW4gYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhIGlmIGF3YWl0IGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBpfQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gYiBpZiBhd2FpdCBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBpIGZvciBpIGluIGIgaWYgY10KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CiAKICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwogCkBAIC0yNzIsNiArMjkwLDM2IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGUocykKIAogCisjIEFkYXB0ZWQgZnJvbSBQeXRob24gMydzIExpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weTpHcmFtbWFyVGVzdHMudGVzdF92YXJfYW5ub3QKK2NsYXNzIFRlc3RWYXJBbm5vdGF0aW9ucyhHcmFtbWFyVGVzdCk6CisgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgidmFyMTogaW50ID0gNSIpCisKKyAgICBkZWYgdGVzdF8yKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIyOiBbaW50LCBzdHJdIikKKworICAgIGRlZiB0ZXN0XzMoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzdDogc3RyID0gJ0hlbGxvJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgYS5iOiBpbnQgPSAoMSwgMilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBzdFxuIikKKworICAgIGRlZiB0ZXN0XzQoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmYmFkKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHByaW50KHgpXG4iKQorCisgICAgZGVmIHRlc3RfNShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiY2xhc3MgQzpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgczogc3RyID0gJ2F0dHInXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB6ID0gMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKworICAgIGRlZiB0ZXN0XzYoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImxzdDogTGlzdFtpbnRdID0gW10iKQorCiBjbGFzcyBUZXN0RXhjZXB0KEdyYW1tYXJUZXN0KToKICAgICBkZWYgdGVzdF9uZXcoc2VsZik6CiAgICAgICAgIHMgPSAiIiIKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKaW5kZXggNGQ1ODVhOC4uMTc3MTI2ZCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKQEAgLTksMTEgKzksNiBAQAogZXNwZWNpYWxseSB3aGVuIGRlYnVnZ2luZyBhIHRlc3QuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLQogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQppbmRleCA4NTYzMDAxLi5lOWJhZTVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKQEAgLTIsMjQgKzIsMTggQEAKIFVuaXQgdGVzdHMgZm9yIHJlZmFjdG9yLnB5LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBpbwogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gbGliMnRvMyBpbXBvcnQgcmVmYWN0b3IsIHB5Z3JhbSwgZml4ZXJfYmFzZQogZnJvbSBsaWIydG8zLnBnZW4yIGltcG9ydCB0b2tlbgogCi1mcm9tIC4gaW1wb3J0IHN1cHBvcnQKLQogCiBURVNUX0RBVEFfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkYXRhIikKIEZJWEVSX0RJUiA9IG9zLnBhdGguam9pbihURVNUX0RBVEFfRElSLCAiZml4ZXJzIikKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCBkMmJlODJjLi5jNmM2MTM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CkBAIC0zLDkgKzMsNiBAQAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCi0jIFB5dGhvbiBpbXBvcnRzCi1pbXBvcnQgb3MucGF0aAotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5weXRyZWUgaW1wb3J0IE5vZGUsIExlYWYKIGZyb20gbGliMnRvMyBpbXBvcnQgZml4ZXJfdXRpbApkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggNmQ1OWNkOC4uNGRlMDA5MCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDIsMTIgKzMwMiwxNiBAQAogCiBkZWYgZGVsb2NhbGl6ZShzdHJpbmcpOgogICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBub3JtYWxpemVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisKKyAgICBjb252ID0gbG9jYWxlY29udigpCisKICAgICAjRmlyc3QsIGdldCByaWQgb2YgdGhlIGdyb3VwaW5nCi0gICAgdHMgPSBsb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgIHRzID0gY29udlsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHRzLCAnJykKKwogICAgICNuZXh0LCByZXBsYWNlIHRoZSBkZWNpbWFsIHBvaW50IHdpdGggYSBkb3QKLSAgICBkZCA9IGxvY2FsZWNvbnYoKVsnZGVjaW1hbF9wb2ludCddCisgICAgZGQgPSBjb252WydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKICAgICByZXR1cm4gc3RyaW5nCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDIyNzQ0ZTEuLjI1OTBkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zMyw4ICszMyw5IEBACiAgICAgICAgICAgICdTdHJlYW1IYW5kbGVyJywgJ1dBUk4nLCAnV0FSTklORycsICdhZGRMZXZlbE5hbWUnLCAnYmFzaWNDb25maWcnLAogICAgICAgICAgICAnY2FwdHVyZVdhcm5pbmdzJywgJ2NyaXRpY2FsJywgJ2RlYnVnJywgJ2Rpc2FibGUnLCAnZXJyb3InLAogICAgICAgICAgICAnZXhjZXB0aW9uJywgJ2ZhdGFsJywgJ2dldExldmVsTmFtZScsICdnZXRMb2dnZXInLCAnZ2V0TG9nZ2VyQ2xhc3MnLAotICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICd3YXJuJywgJ3dhcm5pbmcnLAotICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQorICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICdzaHV0ZG93bicsCisgICAgICAgICAgICd3YXJuJywgJ3dhcm5pbmcnLCAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywKKyAgICAgICAgICAgJ2xhc3RSZXNvcnQnLCAncmFpc2VFeGNlcHRpb25zJ10KIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTEwNyw2ICsxMDgsNyBAQAogfQogX25hbWVUb0xldmVsID0gewogICAgICdDUklUSUNBTCc6IENSSVRJQ0FMLAorICAgICdGQVRBTCc6IEZBVEFMLAogICAgICdFUlJPUic6IEVSUk9SLAogICAgICdXQVJOJzogV0FSTklORywKICAgICAnV0FSTklORyc6IFdBUk5JTkcsCkBAIC05MzUsNiArOTM3LDEwIEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGRlbCB0LCB2LCB0YgogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxldmVsKQorCiBjbGFzcyBTdHJlYW1IYW5kbGVyKEhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgbG9nZ2luZyByZWNvcmRzLCBhcHByb3ByaWF0ZWx5IGZvcm1hdHRlZCwKQEAgLTk4Niw2ICs5OTIsMTQgQEAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICBuYW1lID0gZ2V0YXR0cihzZWxmLnN0cmVhbSwgJ25hbWUnLCAnJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgKz0gJyAnCisgICAgICAgIHJldHVybiAnPCVzICVzKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBGaWxlSGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KQEAgLTk5NCw2ICsxMDA4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KICAgICAgICAgIiIiCisgICAgICAgICMgSXNzdWUgIzI3NDkzOiBhZGQgc3VwcG9ydCBmb3IgUGF0aCBvYmplY3RzIHRvIGJlIHBhc3NlZCBpbgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICAgICAgI2tlZXAgdGhlIGFic29sdXRlIHBhdGgsIG90aGVyd2lzZSBkZXJpdmVkIGNsYXNzZXMgd2hpY2ggdXNlIHRoaXMKICAgICAgICAgI21heSBjb21lIGEgY3JvcHBlciB3aGVuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjaGFuZ2VzCiAgICAgICAgIHNlbGYuYmFzZUZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQpAQCAtMTA0OCw2ICsxMDY0LDExIEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgICBTdHJlYW1IYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuYmFzZUZpbGVuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBfU3RkZXJySGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIGxpa2UgYSBTdHJlYW1IYW5kbGVyIHVzaW5nIHN5cy5zdGRlcnIsIGJ1dCBhbHdheXMgdXNlcwpAQCAtMTU0MCw2ICsxNTYxLDExIEBACiAgICAgICAgICAgICBzdWZmaXggPSAnLicuam9pbigoc2VsZi5uYW1lLCBzdWZmaXgpKQogICAgICAgICByZXR1cm4gc2VsZi5tYW5hZ2VyLmdldExvZ2dlcihzdWZmaXgpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIGxldmVsKQorCisKIGNsYXNzIFJvb3RMb2dnZXIoTG9nZ2VyKToKICAgICAiIiIKICAgICBBIHJvb3QgbG9nZ2VyIGlzIG5vdCB0aGF0IGRpZmZlcmVudCB0byBhbnkgb3RoZXIgbG9nZ2VyLCBleGNlcHQgdGhhdApAQCAtMTY2Niw2ICsxNjkyLDExIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBzZWxmLmxvZ2dlcgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBsb2dnZXIubmFtZSwgbGV2ZWwpCisKIHJvb3QgPSBSb290TG9nZ2VyKFdBUk5JTkcpCiBMb2dnZXIucm9vdCA9IHJvb3QKIExvZ2dlci5tYW5hZ2VyID0gTWFuYWdlcihMb2dnZXIucm9vdCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggYzM5YTU2Zi4uN2Q3Nzk3MyAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0Niw2ICsyNDYsOSBAQAogCiAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByZS5jb21waWxlKHNlbGYuZXh0TWF0Y2gsIHJlLkFTQ0lJKQogICAgICAgICBzZWxmLmludGVydmFsID0gc2VsZi5pbnRlcnZhbCAqIGludGVydmFsICMgbXVsdGlwbHkgYnkgdW5pdHMgcmVxdWVzdGVkCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBsaW5lIGFkZGVkIGJlY2F1c2UgdGhlIGZpbGVuYW1lIHBhc3NlZCBpbiBjb3VsZCBiZSBhCisgICAgICAgICMgcGF0aCBvYmplY3QgKHNlZSBJc3N1ZSAjMjc0OTMpLCBidXQgc2VsZi5iYXNlRmlsZW5hbWUgd2lsbCBiZSBhIHN0cmluZworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuYmFzZUZpbGVuYW1lCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHQgPSBvcy5zdGF0KGZpbGVuYW1lKVtTVF9NVElNRV0KICAgICAgICAgZWxzZToKQEAgLTQ0MCwxMSArNDQzLDExIEBACiAgICAgICAgICAgICBzcmVzID0gb3MuZnN0YXQoc2VsZi5zdHJlYW0uZmlsZW5vKCkpCiAgICAgICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSBzcmVzW1NUX0RFVl0sIHNyZXNbU1RfSU5PXQogCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICBkZWYgcmVvcGVuSWZOZWVkZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBFbWl0IGEgcmVjb3JkLgorICAgICAgICBSZW9wZW4gbG9nIGZpbGUgaWYgbmVlZGVkLgogCi0gICAgICAgIEZpcnN0IGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAorICAgICAgICBDaGVja3MgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CiAgICAgICAgIGhhcywgY2xvc2UgdGhlIG9sZCBzdHJlYW0gYW5kIHJlb3BlbiB0aGUgZmlsZSB0byBnZXQgdGhlCiAgICAgICAgIGN1cnJlbnQgc3RyZWFtLgogICAgICAgICAiIiIKQEAgLTQ2Nyw2ICs0NzAsMTUgQEAKICAgICAgICAgICAgICAgICAjIG9wZW4gYSBuZXcgZmlsZSBoYW5kbGUgYW5kIGdldCBuZXcgc3RhdCBpbmZvIGZyb20gdGhhdCBmZAogICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCisKKyAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgICAgICAiIiIKKyAgICAgICAgRW1pdCBhIHJlY29yZC4KKworICAgICAgICBJZiB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIHJlb3BlbiB0aGUgZmlsZSBiZWZvcmUgZW1pdHRpbmcgdGhlCisgICAgICAgIHJlY29yZCB0byBpdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVvcGVuSWZOZWVkZWQoKQogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCiAKQEAgLTEyMjksMTcgKzEyNDEsMjUgQEAKICAgICBmbHVzaGluZyB0aGVtIHRvIGEgdGFyZ2V0IGhhbmRsZXIuIEZsdXNoaW5nIG9jY3VycyB3aGVuZXZlciB0aGUgYnVmZmVyCiAgICAgaXMgZnVsbCwgb3Igd2hlbiBhbiBldmVudCBvZiBhIGNlcnRhaW4gc2V2ZXJpdHkgb3IgZ3JlYXRlciBpcyBzZWVuLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSwgZmx1c2hMZXZlbD1sb2dnaW5nLkVSUk9SLCB0YXJnZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lLAorICAgICAgICAgICAgICAgICBmbHVzaE9uQ2xvc2U9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyIHdpdGggdGhlIGJ1ZmZlciBzaXplLCB0aGUgbGV2ZWwgYXQgd2hpY2gKICAgICAgICAgZmx1c2hpbmcgc2hvdWxkIG9jY3VyIGFuZCBhbiBvcHRpb25hbCB0YXJnZXQuCiAKICAgICAgICAgTm90ZSB0aGF0IHdpdGhvdXQgYSB0YXJnZXQgYmVpbmcgc2V0IGVpdGhlciBoZXJlIG9yIHZpYSBzZXRUYXJnZXQoKSwKICAgICAgICAgYSBNZW1vcnlIYW5kbGVyIGlzIG5vIHVzZSB0byBhbnlvbmUhCisKKyAgICAgICAgVGhlIGBgZmx1c2hPbkNsb3NlYGAgYXJndW1lbnQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgICAgICAgcmVhc29ucyAtIHRoZSBvbGQgYmVoYXZpb3VyIGlzIHRoYXQgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQsIHRoZQorICAgICAgICBidWZmZXIgaXMgZmx1c2hlZCwgZXZlbiBpZiB0aGUgZmx1c2ggbGV2ZWwgaGFzbid0IGJlZW4gZXhjZWVkZWQgbm9yIHRoZQorICAgICAgICBjYXBhY2l0eSBleGNlZWRlZC4gVG8gcHJldmVudCB0aGlzLCBzZXQgYGBmbHVzaE9uQ2xvc2VgYCB0byBgYEZhbHNlYGAuCiAgICAgICAgICIiIgogICAgICAgICBCdWZmZXJpbmdIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNhcGFjaXR5KQogICAgICAgICBzZWxmLmZsdXNoTGV2ZWwgPSBmbHVzaExldmVsCiAgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgICMgU2VlIElzc3VlICMyNjU1OSBmb3Igd2h5IHRoaXMgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5mbHVzaE9uQ2xvc2UgPSBmbHVzaE9uQ2xvc2UKIAogICAgIGRlZiBzaG91bGRGbHVzaChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTEyNzMsMTAgKzEyOTMsMTIgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEZsdXNoLCBzZXQgdGhlIHRhcmdldCB0byBOb25lIGFuZCBsb3NlIHRoZSBidWZmZXIuCisgICAgICAgIEZsdXNoLCBpZiBhcHByb3ByaWF0ZWx5IGNvbmZpZ3VyZWQsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlCisgICAgICAgIGJ1ZmZlci4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICAgICAgaWYgc2VsZi5mbHVzaE9uQ2xvc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQppbmRleCA3ZGZmMWMzLi4wODE3Yjg3IDEwMDY0NAotLS0gYS9MaWIvbHptYS5weQorKysgYi9MaWIvbHptYS5weQpAQCAtMjMsNiArMjMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbworaW1wb3J0IG9zCiBmcm9tIF9sem1hIGltcG9ydCAqCiBmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCiBpbXBvcnQgX2NvbXByZXNzaW9uCkBAIC00OSw5ICs1MCwxMCBAQAogICAgICAgICAgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgogICAgICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgogCi0gICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IKLSAgICAgICAgYnl0ZXMgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbgotICAgICAgICBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIsCisgICAgICAgIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICAgICAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvcgorICAgICAgICB3cml0ZSB0by4KIAogICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICJ4IiBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTExMiw3ICsxMTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CiAgICAgICAgICAgICAgICAgbW9kZSArPSAiYiIKICAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKQEAgLTEyMiw3ICsxMjQsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwgTFpNQURlY29tcHJlc3NvciwKQEAgLTI2Myw5ICsyNjUsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcwotICAgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4KLSAgICBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciwgYnl0ZXMsCisgICAgb3IgUGF0aExpa2Ugb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0CisgICAgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJ4IiwgInhiIiwKICAgICAiYSIsIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiLCAieHQiLCBvciAiYXQiIGZvciB0ZXh0CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDAyNzBlMjUuLjM5ZjI0ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0yMyw5ICsyMywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQogCi1fX2FsbF9fID0gWyAnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCi0gICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAotICAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZSddCitfX2FsbF9fID0gWydNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKKyAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKKyAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZScsICdFcnJvcicsICdOb1N1Y2hNYWlsYm94RXJyb3InLAorICAgICAgICAgICAnTm90RW1wdHlFcnJvcicsICdFeHRlcm5hbENsYXNoRXJyb3InLCAnRm9ybWF0RXJyb3InXQogCiBsaW5lc2VwID0gb3MubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKIApAQCAtMzEyLDExICszMTMsMTIgQEAKICAgICAgICAgIyBmaW5hbCBwb3NpdGlvbiBpbiBvcmRlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aXRoIGNoYW5nZXMKICAgICAgICAgIyBmcm9tIG90aGVyIHByb2dyYW1zCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIob3MsICdsaW5rJyk6CisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MubGluayh0bXBfZmlsZS5uYW1lLCBkZXN0KQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZSh0bXBfZmlsZS5uYW1lKQotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFBlcm1pc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHRtcF9maWxlLm5hbWUsIGRlc3QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZSh0bXBfZmlsZS5uYW1lKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgb3MucmVtb3ZlKHRtcF9maWxlLm5hbWUpCiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVFWElTVDoKQEAgLTExOTksMTMgKzEyMDEsMTQgQEAKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLml0ZXJrZXlzKCk6CiAgICAgICAgICAgICBpZiBrZXkgLSAxICE9IHByZXY6CiAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoKGtleSwgcHJldiArIDEpKQotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIob3MsICdsaW5rJyk6CisgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5saW5rKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihwcmV2ICsgMSkpKQotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSkKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFBlcm1pc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihwcmV2ICsgMSkpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpKQogICAgICAgICAgICAgcHJldiArPSAxCiAgICAgICAgIHNlbGYuX25leHRfa2V5ID0gcHJldiArIDEKICAgICAgICAgaWYgbGVuKGNoYW5nZXMpID09IDA6CkBAIC0yMDc1LDEzICsyMDc4LDE0IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGluaycpOgorICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MubGluayhwcmVfbG9jay5uYW1lLCBmLm5hbWUgKyAnLmxvY2snKQogICAgICAgICAgICAgICAgICAgICBkb3Rsb2NrX2RvbmUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhwcmVfbG9jay5uYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgUGVybWlzc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHByZV9sb2NrLm5hbWUsIGYubmFtZSArICcubG9jaycpCiAgICAgICAgICAgICAgICAgICAgIGRvdGxvY2tfZG9uZSA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsocHJlX2xvY2submFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHByZV9sb2NrLm5hbWUpCiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0ZXJuYWxDbGFzaEVycm9yKCdkb3QgbG9jayB1bmF2YWlsYWJsZTogJXMnICUKZGlmZiAtLWdpdCBhL0xpYi9taW1ldHlwZXMucHkgYi9MaWIvbWltZXR5cGVzLnB5CmluZGV4IDBiZTc2YWQuLjlhODg2ODAgMTAwNjQ0Ci0tLSBhL0xpYi9taW1ldHlwZXMucHkKKysrIGIvTGliL21pbWV0eXBlcy5weQpAQCAtMzMsOCArMzMsMTAgQEAKICAgICBfd2lucmVnID0gTm9uZQogCiBfX2FsbF9fID0gWwotICAgICJndWVzc190eXBlIiwiZ3Vlc3NfZXh0ZW5zaW9uIiwiZ3Vlc3NfYWxsX2V4dGVuc2lvbnMiLAotICAgICJhZGRfdHlwZSIsInJlYWRfbWltZV90eXBlcyIsImluaXQiCisgICAgImtub3duZmlsZXMiLCAiaW5pdGVkIiwgIk1pbWVUeXBlcyIsCisgICAgImd1ZXNzX3R5cGUiLCAiZ3Vlc3NfYWxsX2V4dGVuc2lvbnMiLCAiZ3Vlc3NfZXh0ZW5zaW9uIiwKKyAgICAiYWRkX3R5cGUiLCAiaW5pdCIsICJyZWFkX21pbWVfdHlwZXMiLAorICAgICJzdWZmaXhfbWFwIiwgImVuY29kaW5nc19tYXAiLCAidHlwZXNfbWFwIiwgImNvbW1vbl90eXBlcyIKIF0KIAoga25vd25maWxlcyA9IFsKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IDgxMDM1MDIuLmUyMjAzMTUgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHdhcm5pbmdzCiB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgIGltcG9ydCBpbXAKIAogTE9BRF9DT05TVCA9IGRpcy5vcG1hcFsnTE9BRF9DT05TVCddCkBAIC0zMzYsOCArMzM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gbmFtZSArICIuIiArIHN1YgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX2JhZG1vZHVsZShmdWxsbmFtZSwgY2FsbGVyKQogCi0gICAgZGVmIHNjYW5fb3Bjb2Rlc18yNShzZWxmLCBjbywKLSAgICAgICAgICAgICAgICAgICAgIHVucGFjayA9IHN0cnVjdC51bnBhY2spOgorICAgIGRlZiBzY2FuX29wY29kZXMoc2VsZiwgY28pOgogICAgICAgICAjIFNjYW4gdGhlIGNvZGUsIGFuZCB5aWVsZCAnaW50ZXJlc3RpbmcnIG9wY29kZSBjb21iaW5hdGlvbnMKICAgICAgICAgY29kZSA9IGNvLmNvX2NvZGUKICAgICAgICAgbmFtZXMgPSBjby5jb19uYW1lcwpAQCAtMzYwLDcgKzM1OSw3IEBACiAKICAgICBkZWYgc2Nhbl9jb2RlKHNlbGYsIGNvLCBtKToKICAgICAgICAgY29kZSA9IGNvLmNvX2NvZGUKLSAgICAgICAgc2Nhbm5lciA9IHNlbGYuc2Nhbl9vcGNvZGVzXzI1CisgICAgICAgIHNjYW5uZXIgPSBzZWxmLnNjYW5fb3Bjb2RlcwogICAgICAgICBmb3Igd2hhdCwgYXJncyBpbiBzY2FubmVyKGNvKToKICAgICAgICAgICAgIGlmIHdoYXQgPT0gInN0b3JlIjoKICAgICAgICAgICAgICAgICBuYW1lLCA9IGFyZ3MKZGlmZiAtLWdpdCBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CmluZGV4IDZkMGEyOGYuLmYwMzcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkKKysrIGIvTGliL21zaWxpYi9fX2luaXRfXy5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA1IE1hcnRpbiB2LiBMw7Z3aXMKICMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogZnJvbSBfbXNpIGltcG9ydCAqCi1pbXBvcnQgZ2xvYgoraW1wb3J0IGZubWF0Y2gKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCkBAIC0yODksNyArMjg5LDcgQEAKICAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKICAgICAgICAgb2xkZmlsZSA9IGZpbGUKICAgICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZSgnKycsICdfJykKLSAgICAgICAgZmlsZSA9ICcnLmpvaW4oYyBmb3IgYyBpbiBmaWxlIGlmIG5vdCBjIGluICcgIi9cW106Oz0sJykKKyAgICAgICAgZmlsZSA9ICcnLmpvaW4oYyBmb3IgYyBpbiBmaWxlIGlmIG5vdCBjIGluIHInICIvXFtdOjs9LCcpCiAgICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIpCiAgICAgICAgIGlmIGxlbihwYXJ0cykgPiAxOgogICAgICAgICAgICAgcHJlZml4ID0gIiIuam9pbihwYXJ0c1s6LTFdKS51cHBlcigpCkBAIC0zNzksNyArMzc5LDEzIEBACiAgICAgZGVmIGdsb2Ioc2VsZiwgcGF0dGVybiwgZXhjbHVkZSA9IE5vbmUpOgogICAgICAgICAiIiJBZGQgYSBsaXN0IG9mIGZpbGVzIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBhcyBzcGVjaWZpZWQgaW4gdGhlCiAgICAgICAgIGdsb2IgcGF0dGVybi4gSW5kaXZpZHVhbCBmaWxlcyBjYW4gYmUgZXhjbHVkZWQgaW4gdGhlIGV4Y2x1ZGUgbGlzdC4iIiIKLSAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IxKHNlbGYuYWJzb2x1dGUsIHBhdHRlcm4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihzZWxmLmFic29sdXRlKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBpZiBwYXR0ZXJuWzoxXSAhPSAnLic6CisgICAgICAgICAgICBmaWxlcyA9IChmIGZvciBmIGluIGZpbGVzIGlmIGZbMF0gIT0gJy4nKQorICAgICAgICBmaWxlcyA9IGZubWF0Y2guZmlsdGVyKGZpbGVzLCBwYXR0ZXJuKQogICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIGV4Y2x1ZGUgYW5kIGYgaW4gZXhjbHVkZTogY29udGludWUKICAgICAgICAgICAgIHNlbGYuYWRkX2ZpbGUoZikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQppbmRleCBkMGExYjg2Li5kNDllOGYwIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CkBAIC0yMCwxMSArMjAsMTEgQEAKIAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBmcm9tIC4gaW1wb3J0IEF1dGhlbnRpY2F0aW9uRXJyb3IsIEJ1ZmZlclRvb1Nob3J0Ci1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiB0cnk6CiAgICAgaW1wb3J0IF93aW5hcGkKQEAgLTIwMyw3ICsyMDMsNyBAQAogICAgICAgICAiIiJTZW5kIGEgKHBpY2tsYWJsZSkgb2JqZWN0IiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhGb3JraW5nUGlja2xlci5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopKQogCiAgICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgogICAgICAgICAiIiIKQEAgLTI0OCw3ICsyNDgsNyBAQAogICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCiAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKIAogICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKICAgICAgICAgIiIiV2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQiIiIKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQppbmRleCAxMTVkNGJmLi42MjNmNmZiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CkBAIC0zLDYgKzMsNyBAQAogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKK2Zyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAKIF9fYWxsX18gPSBbXSAgICAgICAgICAgICMgdGhpbmdzIGFyZSBjb3BpZWQgZnJvbSBoZXJlIHRvIF9faW5pdF9fLnB5CiAKQEAgLTE5OCw2ICsxOTksMTYgQEAKICAgICBkZWYgc2V0X3N0YXJ0X21ldGhvZChzZWxmLCBtZXRob2QsIGZvcmNlPUZhbHNlKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBzdGFydCBtZXRob2Qgb2YgY29uY3JldGUgY29udGV4dCcpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVkdWNlcihzZWxmKToKKyAgICAgICAgJycnQ29udHJvbHMgaG93IG9iamVjdHMgd2lsbCBiZSByZWR1Y2VkIHRvIGEgZm9ybSB0aGF0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBvdGhlciBwcm9jZXNzZXMuJycnCisgICAgICAgIHJldHVybiBnbG9iYWxzKCkuZ2V0KCdyZWR1Y3Rpb24nKQorCisgICAgQHJlZHVjZXIuc2V0dGVyCisgICAgZGVmIHJlZHVjZXIoc2VsZiwgcmVkdWN0aW9uKToKKyAgICAgICAgZ2xvYmFscygpWydyZWR1Y3Rpb24nXSA9IHJlZHVjdGlvbgorCiAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjQ1LDcgKzI1Niw2IEBACiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgcmV0dXJuIFsnc3Bhd24nXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvcmsnLCAnc3Bhd24nLCAnZm9ya3NlcnZlciddCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjkyLDcgKzMwMiw2IEBACiAgICAgICAgIF9uYW1lID0gJ2ZvcmtzZXJ2ZXInCiAgICAgICAgIFByb2Nlc3MgPSBGb3JrU2VydmVyUHJvY2VzcwogICAgICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9ya3NlcnZlciBzdGFydCBtZXRob2Qgbm90IGF2YWlsYWJsZScpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQppbmRleCBhZDAxZWRlLi5mMmMxNzllIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggNDRkOTYzOC4uNDQzMzIxNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtMTQsOCArMTQsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkaW5nCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnQnVmZmVyV3JhcHBlciddCkBAIC00OCw3ICs0Nyw3IEBACiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKKyAgICAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlCiAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCBiMTc1NDcwLi5iOWNlODRiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTIzLDEwICsyMyw5IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9vbAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKQEAgLTE0Miw3ICsxNDEsOCBAQAogCiAgICAgICAgIHNlbGYuaWRfdG9fb2JqID0geycwJzogKE5vbmUsICgpKX0KICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9Ci0gICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuUkxvY2soKQorICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iaiA9IHt9CisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCiAKICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICAgJycnCkBAIC0yMjcsNyArMjI3LDE0IEBACiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gcmVjdigpCiAgICAgICAgICAgICAgICAgaWRlbnQsIG1ldGhvZG5hbWUsIGFyZ3MsIGt3ZHMgPSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgc2Vjb25kX2tlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgICAgICAgICAgICAgIGlmIG1ldGhvZG5hbWUgbm90IGluIGV4cG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKApAQCAtMzA4LDcgKzMxNSw3IEBACiAgICAgICAgICcnJwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19vYmoua2V5cygpKQorICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19yZWZjb3VudC5rZXlzKCkpCiAgICAgICAgICAgICBrZXlzLnNvcnQoKQogICAgICAgICAgICAgZm9yIGlkZW50IGluIGtleXM6CiAgICAgICAgICAgICAgICAgaWYgaWRlbnQgIT0gJzAnOgpAQCAtMzIxLDcgKzMyOCw4IEBACiAgICAgICAgICcnJwogICAgICAgICBOdW1iZXIgb2Ygc2hhcmVkIG9iamVjdHMKICAgICAgICAgJycnCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19vYmopIC0gMSAgICAgICMgZG9uJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgICMgRG9lc24ndCB1c2UgKGxlbihzZWxmLmlkX3RvX29iaikgLSAxKSBhcyB3ZSBzaG91bGRuJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19yZWZjb3VudCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNjMsMTMgKzM3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAob2JqLCBzZXQoZXhwb3NlZCksIG1ldGhvZF90b190eXBlaWQpCiAgICAgICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDAKLSAgICAgICAgICAgICMgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgaW1tZWRpYXRlbHksIHRvIGF2b2lkCi0gICAgICAgICAgICAjIHRoaXMgb2JqZWN0IGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBhIFByb3h5Ci0gICAgICAgICAgICAjIG9iamVjdCBmb3IgaXQgY2FuIGJlIGNyZWF0ZWQuICBUaGUgY2FsbGVyIG9mIGNyZWF0ZSgpCi0gICAgICAgICAgICAjIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBhIGRlY3JlZiBvbmNlIHRoZSBQcm94eSBvYmplY3QKLSAgICAgICAgICAgICMgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQotICAgICAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQorCisgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQorICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCiAKICAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICAnJycKQEAgLTM4NywxNSArMzkxLDQ1IEBACiAKICAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgotICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAjIElmIG5vIGV4dGVybmFsIHJlZmVyZW5jZXMgZXhpc3QgYnV0IGFuIGludGVybmFsICh0byB0aGUKKyAgICAgICAgICAgICAgICAjIG1hbmFnZXIpIHN0aWxsIGRvZXMgYW5kIGEgbmV3IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgIyBmcm9tIGl0LCByZXN0b3JlIHRoZSBtYW5hZ2VyJ3MgdHJhY2tpbmcgb2YgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIHByZXZpb3VzbHkgc3Rhc2hlZCBpbnRlcm5hbCByZWYuCisgICAgICAgICAgICAgICAgaWYgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBzZWxmLmlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIHJlLWVuYWJsZWQgdHJhY2tpbmcgJiBJTkNSRUYgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6CisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50IGFuZCBcCisgICAgICAgICAgICBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciBERUNSRUYgc2tpcHBpbmcgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCi0gICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCisKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CisgICAgICAgICAgICAjIFR3by1zdGVwIHByb2Nlc3MgaW4gY2FzZSB0aGUgb2JqZWN0IHR1cm5zIG91dCB0byBjb250YWluIG90aGVyCisgICAgICAgICAgICAjIHByb3h5IG9iamVjdHMgKGUuZy4gYSBtYW5hZ2VkIGxpc3Qgb2YgbWFuYWdlZCBsaXN0cykuCisgICAgICAgICAgICAjIE90aGVyd2lzZSwgZGVsZXRpbmcgc2VsZi5pZF90b19vYmpbaWRlbnRdIHdvdWxkIHRyaWdnZXIgdGhlCisgICAgICAgICAgICAjIGRlbGV0aW5nIG9mIHRoZSBzdG9yZWQgdmFsdWUgKGFub3RoZXIgbWFuYWdlZCBvYmplY3QpIHdoaWNoIHdvdWxkCisgICAgICAgICAgICAjIGluIHR1cm4gYXR0ZW1wdCB0byBhY3F1aXJlIHRoZSBtdXRleCB0aGF0IGlzIGFscmVhZHkgaGVsZCBoZXJlLgorICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKE5vbmUsICgpLCBOb25lKSAgIyB0aHJlYWQtc2FmZQorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XQorCiAKICMKICMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgpAQCAtNjU4LDcgKzY5Miw3IEBACiAgICAgX211dGV4ID0gdXRpbC5Gb3JrQXdhcmVUaHJlYWRMb2NrKCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLAotICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUpOgorICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUsIG1hbmFnZXJfb3duZWQ9RmFsc2UpOgogICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKQEAgLTY4MCw2ICs3MTQsMTIgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdWzFdCiAKKyAgICAgICAgIyBTaG91bGQgYmUgc2V0IHRvIFRydWUgb25seSB3aGVuIGEgcHJveHkgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQKKyAgICAgICAgIyBvbiB0aGUgbWFuYWdlciBzZXJ2ZXI7IHByaW1hcnkgdXNlIGNhc2U6IG5lc3RlZCBwcm94eSBvYmplY3RzLgorICAgICAgICAjIFJlYnVpbGRQcm94eSBkZXRlY3RzIHdoZW4gYSBwcm94eSBpcyBiZWluZyBjcmVhdGVkIG9uIHRoZSBtYW5hZ2VyCisgICAgICAgICMgYW5kIHNldHMgdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZWx5LgorICAgICAgICBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyID0gbWFuYWdlcl9vd25lZAorCiAgICAgICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgICBlbGlmIHNlbGYuX21hbmFnZXIgaXMgbm90IE5vbmU6CkBAIC03MzgsNiArNzc4LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCcjR0VUVkFMVUUnKQogCiAgICAgZGVmIF9pbmNyZWYoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX293bmVkX2J5X21hbmFnZXI6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdvd25lZF9ieV9tYW5hZ2VyIHNraXBwZWQgSU5DUkVGIG9mICVyJywgc2VsZi5fdG9rZW4uaWQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2luY3JlZicsIChzZWxmLl9pZCwpKQogICAgICAgICB1dGlsLmRlYnVnKCdJTkNSRUYgJXInLCBzZWxmLl90b2tlbi5pZCkKQEAgLTc4OCw3ICs4MzIsNyBAQAogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIGt3ZHMgPSB7fQotICAgICAgICBpZiBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBnZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3ZHNbJ2F1dGhrZXknXSA9IHNlbGYuX2F1dGhrZXkKIAogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfaXNhdXRvJywgRmFsc2UpOgpAQCAtODIyLDE5ICs4NjYsMTkgQEAKIGRlZiBSZWJ1aWxkUHJveHkoZnVuYywgdG9rZW4sIHNlcmlhbGl6ZXIsIGt3ZHMpOgogICAgICcnJwogICAgIEZ1bmN0aW9uIHVzZWQgZm9yIHVucGlja2xpbmcgcHJveHkgb2JqZWN0cy4KLQotICAgIElmIHBvc3NpYmxlIHRoZSBzaGFyZWQgb2JqZWN0IGlzIHJldHVybmVkLCBvciBvdGhlcndpc2UgYSBwcm94eSBmb3IgaXQuCiAgICAgJycnCiAgICAgc2VydmVyID0gZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX21hbmFnZXJfc2VydmVyJywgTm9uZSkKLQogICAgIGlmIHNlcnZlciBhbmQgc2VydmVyLmFkZHJlc3MgPT0gdG9rZW4uYWRkcmVzczoKLSAgICAgICAgcmV0dXJuIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdWzBdCi0gICAgZWxzZToKLSAgICAgICAgaW5jcmVmID0gKAotICAgICAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAotICAgICAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCi0gICAgICAgICAgICApCi0gICAgICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCisgICAgICAgIHV0aWwuZGVidWcoJ1JlYnVpbGQgYSBwcm94eSBvd25lZCBieSBtYW5hZ2VyLCB0b2tlbj0lcicsIHRva2VuKQorICAgICAgICBrd2RzWydtYW5hZ2VyX293bmVkJ10gPSBUcnVlCisgICAgICAgIGlmIHRva2VuLmlkIG5vdCBpbiBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29ialt0b2tlbi5pZF0gPSBcCisgICAgICAgICAgICAgICAgc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF0KKyAgICBpbmNyZWYgPSAoCisgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKKyAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCisgICAgICAgICkKKyAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQogCiAjCiAjIEZ1bmN0aW9ucyB0byBjcmVhdGUgcHJveGllcyBhbmQgcHJveHkgdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA2ZDI1NDY5Li5mZmRmNDI2IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC02MzgsMjIgKzYzOCwyNiBAQAogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgc3VjY2Vzc19yZXN1bHQpOgorICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgIHN1Y2Nlc3MsIHJlc3VsdCA9IHN1Y2Nlc3NfcmVzdWx0Ci0gICAgICAgIGlmIHN1Y2Nlc3M6CisgICAgICAgIGlmIHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl92YWx1ZVtpKnNlbGYuX2NodW5rc2l6ZTooaSsxKSpzZWxmLl9jaHVua3NpemVdID0gcmVzdWx0Ci0gICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQogICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0Ci0gICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKLSAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKLSAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQorICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CisgICAgICAgICAgICAgICAgIyBvbmx5IHN0b3JlIGZpcnN0IGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0CisgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgb25seSBjb25zaWRlciB0aGUgcmVzdWx0IHJlYWR5IG9uY2UgYWxsIGpvYnMgYXJlIGRvbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CmluZGV4IGU3OTIxOTQuLjIyMmRiMmQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsMTAgKzEsOSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vIHN1cHBvcnQgZm9yIHNlbmRpbmcgZmRzIGJldHdlZW4gcHJvY2Vzc2VzJykKLWZyb20gLiBpbXBvcnQgY29udGV4dAogZnJvbSAuIGltcG9ydCBmb3Jrc2VydmVyCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKIGZyb20gLiBpbXBvcnQgc3Bhd24KQEAgLTQyLDEyICs0MSwxMiBAQAogICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBidWYpCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgYnVmKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHNlbGYuc2VudGluZWwsIHcgPSBmb3Jrc2VydmVyLmNvbm5lY3RfdG9fbmV3X3Byb2Nlc3Moc2VsZi5fZmRzKQogICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAoc2VsZi5zZW50aW5lbCwpKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKaW5kZXggNmIwYThkNi4uOThmOGYwYSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTQyLDEyICs0MSwxMiBAQAogICAgICAgICBzZWxmLl9mZHMuYXBwZW5kKHRyYWNrZXJfZmQpCiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBmcCA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBmcCkKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBmcCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBwYXJlbnRfciA9IGNoaWxkX3cgPSBjaGlsZF9yID0gcGFyZW50X3cgPSBOb25lCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CmluZGV4IDNiNTMwNjguLjZmZDU4OGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQpAQCAtNCw5ICs0LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBfd2luYXBpCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBzcGF3bgotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydQb3BlbiddCkBAIC02MCwxNSArNTksMTUgQEAKICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgX3dpbmFwaS5DbG9zZUhhbmRsZSwgKHNlbGYuc2VudGluZWwsKSkKIAogICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCi0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCkKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICBkZWYgZHVwbGljYXRlX2Zvcl9jaGlsZChzZWxmLCBoYW5kbGUpOgotICAgICAgICBhc3NlcnQgc2VsZiBpcyBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpCisgICAgICAgIGFzc2VydCBzZWxmIGlzIGdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgIHJldHVybiByZWR1Y3Rpb24uZHVwbGljYXRlKGhhbmRsZSwgc2VsZi5zZW50aW5lbCkKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDc4NmEzMDMuLmRkYTAzZGQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBjb250ZXh0CitfRm9ya2luZ1BpY2tsZXIgPSBjb250ZXh0LnJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBmcm9tIC51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGlzX2V4aXRpbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKIAogIwogIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgICMgUmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igb24gTWFjIE9TWCBiZWNhdXNlIG9mIGJyb2tlbiBzZW1fZ2V0dmFsdWUoKQpAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB3YWNxdWlyZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM0MiwxMSArMzQyLDExIEBACiAgICAgICAgIHdpdGggc2VsZi5fcmxvY2s6CiAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWFkZXIucmVjdl9ieXRlcygpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHB1dChzZWxmLCBvYmopOgogICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgaWYgc2VsZi5fd2xvY2sgaXMgTm9uZToKICAgICAgICAgICAgICMgd3JpdGVzIHRvIGEgbWVzc2FnZSBvcmllbnRlZCB3aW4zMiBwaXBlIGFyZSBhdG9taWMKICAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKG9iaikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKaW5kZXggOGYyMDliNC4uYzA0M2M5YSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKQEAgLTcsNiArNyw3IEBACiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgY29weXJlZwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCkBAIC0yMzgsMyArMjM5LDM2IEBACiAgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKICAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgZmlsZW5vPWZkKQogICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQorCisKK2NsYXNzIEFic3RyYWN0UmVkdWNlcihtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgJycnQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdXNlIGluIGltcGxlbWVudGluZyBhIFJlZHVjdGlvbiBjbGFzcworICAgIHN1aXRhYmxlIGZvciB1c2UgaW4gcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCByZWR1Y3Rpb24gbWVjaGFuaXNtCisgICAgdXNlZCBpbiBtdWx0aXByb2Nlc3NpbmcuJycnCisgICAgRm9ya2luZ1BpY2tsZXIgPSBGb3JraW5nUGlja2xlcgorICAgIHJlZ2lzdGVyID0gcmVnaXN0ZXIKKyAgICBkdW1wID0gZHVtcAorICAgIHNlbmRfaGFuZGxlID0gc2VuZF9oYW5kbGUKKyAgICByZWN2X2hhbmRsZSA9IHJlY3ZfaGFuZGxlCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgc3RlYWxfaGFuZGxlID0gc3RlYWxfaGFuZGxlCisgICAgICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZQorICAgICAgICBEdXBIYW5kbGUgPSBEdXBIYW5kbGUKKyAgICBlbHNlOgorICAgICAgICBzZW5kZmRzID0gc2VuZGZkcworICAgICAgICByZWN2ZmRzID0gcmVjdmZkcworICAgICAgICBEdXBGZCA9IER1cEZkCisKKyAgICBfcmVkdWNlX21ldGhvZCA9IF9yZWR1Y2VfbWV0aG9kCisgICAgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvciA9IF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IKKyAgICBfcmVidWlsZF9wYXJ0aWFsID0gX3JlYnVpbGRfcGFydGlhbAorICAgIF9yZWR1Y2Vfc29ja2V0ID0gX3JlZHVjZV9zb2NrZXQKKyAgICBfcmVidWlsZF9zb2NrZXQgPSBfcmVidWlsZF9zb2NrZXQKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJlZ2lzdGVyKHR5cGUoX0MoKS5mKSwgX3JlZHVjZV9tZXRob2QpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUobGlzdC5hcHBlbmQpLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3Rlcih0eXBlKGludC5fX2FkZF9fKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIoZnVuY3Rvb2xzLnBhcnRpYWwsIF9yZWR1Y2VfcGFydGlhbCkKKyAgICAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CmluZGV4IDVlNDZmYzYuLmU0NGE3MjggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ3N0b3AnXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCA0MjU4ZjU5Li4yNWNiY2YyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtMTMsOCArMTMsOCBAQAogZnJvbSAuIGltcG9ydCBoZWFwCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKLWZyb20gLmNvbnRleHQgaW1wb3J0IGFzc2VydF9zcGF3bmluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBfX2FsbF9fID0gWydSYXdWYWx1ZScsICdSYXdBcnJheScsICdWYWx1ZScsICdBcnJheScsICdjb3B5JywgJ3N5bmNocm9uaXplZCddCiAKQEAgLTEzNCw3ICsxMzQsNyBAQAogZGVmIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIGxlbmd0aCk6CiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKKyAgICBfRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKICAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKICAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKaW5kZXggMzkyYzE1OTkuLjRhYmEzNzIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQpAQCAtOSwxMyArOSwxMyBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUKIGltcG9ydCBzeXMKIGltcG9ydCBydW5weQogaW1wb3J0IHR5cGVzCiAKIGZyb20gLiBpbXBvcnQgZ2V0X3N0YXJ0X21ldGhvZCwgc2V0X3N0YXJ0X21ldGhvZAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydfbWFpbicsICdmcmVlemVfc3VwcG9ydCcsICdzZXRfZXhlY3V0YWJsZScsICdnZXRfZXhlY3V0YWJsZScsCkBAIC05Niw4ICs5Niw3IEBACiAgICAgYXNzZXJ0IGlzX2Zvcmtpbmcoc3lzLmFyZ3YpCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICAgICAgZnJvbSAucmVkdWN0aW9uIGltcG9ydCBzdGVhbF9oYW5kbGUKLSAgICAgICAgbmV3X2hhbmRsZSA9IHN0ZWFsX2hhbmRsZShwYXJlbnRfcGlkLCBwaXBlX2hhbmRsZSkKKyAgICAgICAgbmV3X2hhbmRsZSA9IHJlZHVjdGlvbi5zdGVhbF9oYW5kbGUocGFyZW50X3BpZCwgcGlwZV9oYW5kbGUpCiAgICAgICAgIGZkID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKG5ld19oYW5kbGUsIG9zLk9fUkRPTkxZKQogICAgIGVsc2U6CiAgICAgICAgIGZyb20gLiBpbXBvcnQgc2VtYXBob3JlX3RyYWNrZXIKQEAgLTExMSw5ICsxMTAsOSBAQAogICAgIHdpdGggb3MuZmRvcGVuKGZkLCAncmInLCBjbG9zZWZkPVRydWUpIGFzIGZyb21fcGFyZW50OgogICAgICAgICBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nID0gVHJ1ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwcmVwYXJhdGlvbl9kYXRhID0gcGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCisgICAgICAgICAgICBwcmVwYXJhdGlvbl9kYXRhID0gcmVkdWN0aW9uLnBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQogICAgICAgICAgICAgcHJlcGFyZShwcmVwYXJhdGlvbl9kYXRhKQotICAgICAgICAgICAgc2VsZiA9IHBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQorICAgICAgICAgICAgc2VsZiA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRlbCBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nCiAgICAgcmV0dXJuIHNlbGYuX2Jvb3RzdHJhcCgpCmRpZmYgLS1naXQgYS9MaWIvbnRwYXRoLnB5IGIvTGliL250cGF0aC5weQppbmRleCBhZjZhNzA5Li5hOGY0YjM3IDEwMDY0NAotLS0gYS9MaWIvbnRwYXRoLnB5CisrKyBiL0xpYi9udHBhdGgucHkKQEAgLTI4LDggKzI4LDYgQEAKIHBhdGhzZXAgPSAnOycKIGFsdHNlcCA9ICcvJwogZGVmcGF0aCA9ICcuO0M6XFxiaW4nCi1pZiAnY2UnIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICBkZWZwYXRoID0gJ1xcV2luZG93cycKIGRldm51bGwgPSAnbnVsJwogCiBkZWYgX2dldF9ib3Roc2VwcyhwYXRoKToKQEAgLTQ2LDYgKzQ0LDcgQEAKICAgICAiIiJOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4KIAogICAgIE1ha2VzIGFsbCBjaGFyYWN0ZXJzIGxvd2VyY2FzZSBhbmQgYWxsIHNsYXNoZXMgaW50byBiYWNrc2xhc2hlcy4iIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgdHJ5OgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoYicvJywgYidcXCcpLmxvd2VyKCkKQEAgLTY2LDEyICs2NSwxNCBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzID0gc3BsaXRkcml2ZShzKVsxXQogICAgIHJldHVybiBsZW4ocykgPiAwIGFuZCBzWzBdIGluIF9nZXRfYm90aHNlcHMocykKIAogCiAjIEpvaW4gdHdvIChvciBtb3JlKSBwYXRocy4KIGRlZiBqb2luKHBhdGgsICpwYXRocyk6CisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBzZXBzID0gYidcXC8nCkBAIC04NCw3ICs4NSw3IEBACiAgICAgICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KICAgICAgICAgcmVzdWx0X2RyaXZlLCByZXN1bHRfcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKLSAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgIGZvciBwIGluIG1hcChvcy5mc3BhdGgsIHBhdGhzKToKICAgICAgICAgICAgIHBfZHJpdmUsIHBfcGF0aCA9IHNwbGl0ZHJpdmUocCkKICAgICAgICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6CiAgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQpAQCAtMTM2LDYgKzEzNyw3IEBACiAgICAgUGF0aHMgY2Fubm90IGNvbnRhaW4gYm90aCBhIGRyaXZlIGxldHRlciBhbmQgYSBVTkMgcGF0aC4KIAogICAgICIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBsZW4ocCkgPj0gMjoKICAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgICAgICBzZXAgPSBiJ1xcJwpAQCAtMTk5LDcgKzIwMSw3IEBACiAKICAgICBSZXR1cm4gdHVwbGUgKGhlYWQsIHRhaWwpIHdoZXJlIHRhaWwgaXMgZXZlcnl0aGluZyBhZnRlciB0aGUgZmluYWwgc2xhc2guCiAgICAgRWl0aGVyIHBhcnQgbWF5IGJlIGVtcHR5LiIiIgotCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHApCiAgICAgZCwgcCA9IHNwbGl0ZHJpdmUocCkKICAgICAjIHNldCBpIHRvIGluZGV4IGJleW9uZCBwJ3MgbGFzdCBzbGFzaApAQCAtMjE4LDYgKzIyMCw3IEBACiAjIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgogCiBkZWYgc3BsaXRleHQocCk6CisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIGInXFwnLCBiJy8nLCBiJy4nKQogICAgIGVsc2U6CkBAIC0yNzgsNiArMjgxLDcgQEAKIGRlZiBpc21vdW50KHBhdGgpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBtb3VudCBwb2ludCAoYSBkcml2ZSByb290LCB0aGUgcm9vdCBvZiBhCiAgICAgc2hhcmUsIG9yIGEgbW91bnRlZCB2b2x1bWUpIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHBhdGgpCiAgICAgcGF0aCA9IGFic3BhdGgocGF0aCkKICAgICByb290LCByZXN0ID0gc3BsaXRkcml2ZShwYXRoKQpAQCAtMzA1LDYgKzMwOSw3IEBACiAgICAgIiIiRXhwYW5kIH4gYW5kIH51c2VyIGNvbnN0cnVjdHMuCiAKICAgICBJZiB1c2VyIG9yICRIT01FIGlzIHVua25vd24sIGRvIG5vdGhpbmcuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICB0aWxkZSA9IGInficKICAgICBlbHNlOgpAQCAtMzU0LDYgKzM1OSw3IEBACiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiB0aGUgZm9ybXMgJHZhciwgJHt2YXJ9IGFuZCAldmFyJS4KIAogICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIGlmIGInJCcgbm90IGluIHBhdGggYW5kIGInJScgbm90IGluIHBhdGg6CiAgICAgICAgICAgICByZXR1cm4gcGF0aApAQCAtNDY0LDYgKzQ3MCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGFsdHNlcCA9IGInLycKQEAgLTUxOCw2ICs1MjUsNyBAQAogZXhjZXB0IEltcG9ydEVycm9yOiAjIG5vdCBydW5uaW5nIG9uIFdpbmRvd3MgLSBtb2NrIHVwIHNvbWV0aGluZyBzZW5zaWJsZQogICAgIGRlZiBhYnNwYXRoKHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgorICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtNTMxLDYgKzUzOSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgdmVyc2lvbiBvZiBhIHBhdGguIiIiCiAKICAgICAgICAgaWYgcGF0aDogIyBFbXB0eSBwYXRoIG11c3QgcmV0dXJuIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICAgICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IF9nZXRmdWxscGF0aG5hbWUocGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgpAQCAtNTQ5LDYgKzU1OCw3IEBACiAKIGRlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PU5vbmUpOgogICAgICIiIlJldHVybiBhIHJlbGF0aXZlIHZlcnNpb24gb2YgYSBwYXRoIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBjdXJkaXIgPSBiJy4nCkBAIC01NjQsNiArNTc0LDcgQEAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCisgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAgICAgdHJ5OgogICAgICAgICBzdGFydF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHN0YXJ0KSkKICAgICAgICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQpAQCAtNjA3LDYgKzYxOCw3IEBACiAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKIAorICAgIHBhdGhzID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgcGF0aHMpKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgYWx0c2VwID0gYicvJwpkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggNGM4MjZhNy4uYjU5MTZiNiAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC0zMSwxMiArMzEsMTAgQEAKIGhhc2xvY2FsID0gW10KIGhhc2NvbXBhcmUgPSBbXQogaGFzZnJlZSA9IFtdCi1oYXNuYXJncyA9IFtdCitoYXNuYXJncyA9IFtdICMgdW51c2VkCiAKIG9wbWFwID0ge30KLW9wbmFtZSA9IFsnJ10gKiAyNTYKLWZvciBvcCBpbiByYW5nZSgyNTYpOiBvcG5hbWVbb3BdID0gJzwlcj4nICUgKG9wLCkKLWRlbCBvcAorb3BuYW1lID0gWyc8JXI+JyAlIChvcCwpIGZvciBvcCBpbiByYW5nZSgyNTYpXQogCiBkZWYgZGVmX29wKG5hbWUsIG9wKToKICAgICBvcG5hbWVbb3BdID0gbmFtZQpAQCAtMTIxLDcgKzExOSw3IEBACiAKIGRlZl9vcCgnUkVUVVJOX1ZBTFVFJywgODMpCiBkZWZfb3AoJ0lNUE9SVF9TVEFSJywgODQpCi0KK2RlZl9vcCgnU0VUVVBfQU5OT1RBVElPTlMnLCA4NSkKIGRlZl9vcCgnWUlFTERfVkFMVUUnLCA4NikKIGRlZl9vcCgnUE9QX0JMT0NLJywgODcpCiBkZWZfb3AoJ0VORF9GSU5BTExZJywgODgpCkBAIC0xNzEsMTMgKzE2OSwxMiBAQAogaGFzbG9jYWwuYXBwZW5kKDEyNSkKIGRlZl9vcCgnREVMRVRFX0ZBU1QnLCAxMjYpICAgICAgIyBMb2NhbCB2YXJpYWJsZSBudW1iZXIKIGhhc2xvY2FsLmFwcGVuZCgxMjYpCituYW1lX29wKCdTVE9SRV9BTk5PVEFUSU9OJywgMTI3KSAjIEluZGV4IGluIG5hbWUgbGlzdAogCiBkZWZfb3AoJ1JBSVNFX1ZBUkFSR1MnLCAxMzApICAgICMgTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiwgb3IgMykKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTMxKQotZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIE51bWJlciBvZiBhcmdzIHdpdGggZGVmYXVsdCB2YWx1ZXMKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncworZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIEZsYWdzCiBkZWZfb3AoJ0JVSUxEX1NMSUNFJywgMTMzKSAgICAgICMgTnVtYmVyIG9mIGl0ZW1zCi1kZWZfb3AoJ01BS0VfQ0xPU1VSRScsIDEzNCkKIGRlZl9vcCgnTE9BRF9DTE9TVVJFJywgMTM1KQogaGFzZnJlZS5hcHBlbmQoMTM1KQogZGVmX29wKCdMT0FEX0RFUkVGJywgMTM2KQpAQCAtMTg3LDEyICsxODQsOCBAQAogZGVmX29wKCdERUxFVEVfREVSRUYnLCAxMzgpCiBoYXNmcmVlLmFwcGVuZCgxMzgpCiAKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVInLCAxNDApICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDApCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQxKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUl9LVycsIDE0MikgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MikKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICMgI2FyZ3MgKyAja3dhcmdzCitkZWZfb3AoJ0NBTExfRlVOQ1RJT05fRVgnLCAxNDIpICAjIEZsYWdzCiAKIGpyZWxfb3AoJ1NFVFVQX1dJVEgnLCAxNDMpCiAKQEAgLTIwMyw4ICsxOTYsNiBAQAogZGVmX29wKCdMT0FEX0NMQVNTREVSRUYnLCAxNDgpCiBoYXNmcmVlLmFwcGVuZCgxNDgpCiAKLWpyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCi0KIGRlZl9vcCgnRVhURU5ERURfQVJHJywgMTQ0KQogRVhURU5ERURfQVJHID0gMTQ0CiAKQEAgLTIxNCw0ICsyMDUsMTEgQEAKIGRlZl9vcCgnQlVJTERfVFVQTEVfVU5QQUNLJywgMTUyKQogZGVmX29wKCdCVUlMRF9TRVRfVU5QQUNLJywgMTUzKQogCitqcmVsX29wKCdTRVRVUF9BU1lOQ19XSVRIJywgMTU0KQorCitkZWZfb3AoJ0ZPUk1BVF9WQUxVRScsIDE1NSkKK2RlZl9vcCgnQlVJTERfQ09OU1RfS0VZX01BUCcsIDE1NikKK2RlZl9vcCgnQlVJTERfU1RSSU5HJywgMTU3KQorZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMJywgMTU4KQorCiBkZWwgZGVmX29wLCBuYW1lX29wLCBqcmVsX29wLCBqYWJzX29wCmRpZmYgLS1naXQgYS9MaWIvb3B0cGFyc2UucHkgYi9MaWIvb3B0cGFyc2UucHkKaW5kZXggNzRiM2IzNi4uZThhYzFlMSAxMDA2NDQKLS0tIGEvTGliL29wdHBhcnNlLnB5CisrKyBiL0xpYi9vcHRwYXJzZS5weQpAQCAtMzgsNyArMzgsOCBAQAogICAgICAgICAgICAnT3B0aW9uRXJyb3InLAogICAgICAgICAgICAnT3B0aW9uQ29uZmxpY3RFcnJvcicsCiAgICAgICAgICAgICdPcHRpb25WYWx1ZUVycm9yJywKLSAgICAgICAgICAgJ0JhZE9wdGlvbkVycm9yJ10KKyAgICAgICAgICAgJ0JhZE9wdGlvbkVycm9yJywKKyAgICAgICAgICAgJ2NoZWNrX2Nob2ljZSddCiAKIF9fY29weXJpZ2h0X18gPSAiIiIKIENvcHlyaWdodCAoYykgMjAwMS0yMDA2IEdyZWdvcnkgUC4gV2FyZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggMDExMjg1ZS4uZmEwNmYzOSAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtMSwxMiArMSwxMiBAQAogciIiIk9TIHJvdXRpbmVzIGZvciBOVCBvciBQb3NpeCBkZXBlbmRpbmcgb24gd2hhdCBzeXN0ZW0gd2UncmUgb24uCiAKIFRoaXMgZXhwb3J0czoKLSAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXgsIG50IG9yIGNlLCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgorICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCBvciBudCwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KICAgLSBvcy5wYXRoIGlzIGVpdGhlciBwb3NpeHBhdGggb3IgbnRwYXRoCi0gIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JywgJ250JyBvciAnY2UnLgotICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5ICgnLicgb3IgJzonKQotICAtIG9zLnBhcmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBkaXJlY3RvcnkgKCcuLicgb3IgJzo6JykKLSAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnOicgb3IgJ1xcJykKKyAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnIG9yICdudCcKKyAgLSBvcy5jdXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuJykKKyAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4uJykKKyAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnXFwnKQogICAtIG9zLmV4dHNlcCBpcyB0aGUgZXh0ZW5zaW9uIHNlcGFyYXRvciAoYWx3YXlzICcuJykKICAgLSBvcy5hbHRzZXAgaXMgdGhlIGFsdGVybmF0ZSBwYXRobmFtZSBzZXBhcmF0b3IgKE5vbmUgb3IgJy8nKQogICAtIG9zLnBhdGhzZXAgaXMgdGhlIGNvbXBvbmVudCBzZXBhcmF0b3IgdXNlZCBpbiAkUEFUSCBldGMKQEAgLTIyLDcgKzIyLDcgQEAKICIiIgogCiAjJwotCitpbXBvcnQgYWJjCiBpbXBvcnQgc3lzLCBlcnJubwogaW1wb3J0IHN0YXQgYXMgc3QKIApAQCAtODUsMjcgKzg1LDYgQEAKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKIAotZWxpZiAnY2UnIGluIF9uYW1lczoKLSAgICBuYW1lID0gJ2NlJwotICAgIGxpbmVzZXAgPSAnXHJcbicKLSAgICBmcm9tIGNlIGltcG9ydCAqCi0gICAgdHJ5OgotICAgICAgICBmcm9tIGNlIGltcG9ydCBfZXhpdAotICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgICMgV2UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBwYXRoLgotICAgIGltcG9ydCBudHBhdGggYXMgcGF0aAotCi0gICAgaW1wb3J0IGNlCi0gICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QoY2UpKQotICAgIGRlbCBjZQotCi0gICAgdHJ5OgotICAgICAgICBmcm9tIGNlIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLQogZWxzZToKICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gb3Mgc3BlY2lmaWMgbW9kdWxlIGZvdW5kJykKIApAQCAtMzUzLDkgKzMzMiwxMCBAQAogICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwogCiAgICAgIiIiCi0KKyAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgIGRpcnMgPSBbXQogICAgIG5vbmRpcnMgPSBbXQorICAgIHdhbGtfZGlycyA9IFtdCiAKICAgICAjIFdlIG1heSBub3QgaGF2ZSByZWFkIHBlcm1pc3Npb24gZm9yIHRvcCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW4ndAogICAgICMgZ2V0IGEgbGlzdCBvZiB0aGUgZmlsZXMgdGhlIGRpcmVjdG9yeSBjb250YWlucy4gIG9zLndhbGsKQEAgLTM2Myw0OCArMzQzLDU1IEBACiAgICAgIyBtaW5vciByZWFzb24gd2hlbiAoc2F5KSBhIHRob3VzYW5kIHJlYWRhYmxlIGRpcmVjdG9yaWVzIGFyZSBzdGlsbAogICAgICMgbGVmdCB0byB2aXNpdC4gIFRoYXQgbG9naWMgaXMgY29waWVkIGhlcmUuCiAgICAgdHJ5OgotICAgICAgICBpZiBuYW1lID09ICdudCcgYW5kIGlzaW5zdGFuY2UodG9wLCBieXRlcyk6Ci0gICAgICAgICAgICBzY2FuZGlyX2l0ID0gX2R1bW15X3NjYW5kaXIodG9wKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCi0gICAgICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCi0gICAgICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCi0gICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXJfaXQpCisgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQorICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCisgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCiAgICAgICAgIHJldHVybgogCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90Ci0gICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KLSAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCi0KLSAgICAgICAgaWYgaXNfZGlyOgotICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCi0KLSAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKLSAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KLSAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKLSAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgotICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6CisgICAgd2l0aCBzY2FuZGlyX2l0OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCi0gICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KLSAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCi0gICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKyAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0KHNjYW5kaXJfaXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBpZiB3YWxrX2ludG86Ci0gICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKGVudHJ5LnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KKyAgICAgICAgICAgICAgICBpc19kaXIgPSBGYWxzZQorCisgICAgICAgICAgICBpZiBpc19kaXI6CisgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKworICAgICAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKKyAgICAgICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCisgICAgICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpZiBmb2xsb3dsaW5rcyBpcyBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgorICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICAjIG9zLnBhdGguaXNsaW5rKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKworICAgICAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19kaXJzLmFwcGVuZChlbnRyeS5wYXRoKQogCiAgICAgIyBZaWVsZCBiZWZvcmUgcmVjdXJzaW9uIGlmIGdvaW5nIHRvcCBkb3duCiAgICAgaWYgdG9wZG93bjoKQEAgLTQyMSw1NyArNDA4LDEyIEBACiAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgIGVsc2U6CisgICAgICAgICMgUmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcmllcworICAgICAgICBmb3IgbmV3X3BhdGggaW4gd2Fsa19kaXJzOgorICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCi1jbGFzcyBfRHVtbXlEaXJFbnRyeToKLSAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJFbnRyeQotCi0gICAgT25seSB1c2VkIGludGVybmFsbHkgYnkgb3Mud2FsayhieXRlcykuIFNpbmNlIG9zLndhbGsoKSBkb2Vzbid0IG5lZWQgdGhlCi0gICAgZm9sbG93X3N5bWxpbmtzIHBhcmFtZXRlcjogZG9uJ3QgaW1wbGVtZW50IGl0LCBhbHdheXMgZm9sbG93IHN5bWJvbGljCi0gICAgbGlua3MuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoLmpvaW4oZGlyLCBuYW1lKQotICAgICAgICAjIE1pbWljayBGaW5kRmlyc3RGaWxlL0ZpbmROZXh0RmlsZTogd2Ugc2hvdWxkIGdldCBmaWxlIGF0dHJpYnV0ZXMKLSAgICAgICAgIyB3aGlsZSBpdGVyYXRpbmcgb24gYSBkaXJlY3RvcnkKLSAgICAgICAgc2VsZi5fc3RhdCA9IE5vbmUKLSAgICAgICAgc2VsZi5fbHN0YXQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHN0YXQoc2VsZiwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgotICAgICAgICBpZiBmb2xsb3dfc3ltbGlua3M6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zdGF0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3RhdCA9IHN0YXQoc2VsZi5wYXRoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNlbGYuX2xzdGF0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbHN0YXQgPSBzdGF0KHNlbGYucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xzdGF0Ci0KLSAgICBkZWYgaXNfZGlyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9sc3RhdCBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYuaXNfc3ltbGluaygpOgotICAgICAgICAgICAgIyB1c2UgdGhlIGNhY2hlIGxzdGF0Ci0gICAgICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgIHJldHVybiBzdC5TX0lTRElSKHN0YXQuc3RfbW9kZSkKLQotICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KCkKLSAgICAgICAgcmV0dXJuIHN0LlNfSVNESVIoc3RhdC5zdF9tb2RlKQotCi0gICAgZGVmIGlzX3N5bWxpbmsoc2VsZik6Ci0gICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICByZXR1cm4gc3QuU19JU0xOSyhzdGF0LnN0X21vZGUpCi0KLWRlZiBfZHVtbXlfc2NhbmRpcihkaXIpOgotICAgICMgbGlzdGRpci1iYXNlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYnl0ZXMgcGF0Y2hlcyBvbiBXaW5kb3dzCi0gICAgZm9yIG5hbWUgaW4gbGlzdGRpcihkaXIpOgotICAgICAgICB5aWVsZCBfRHVtbXlEaXJFbnRyeShkaXIsIG5hbWUpCi0KIF9fYWxsX18uYXBwZW5kKCJ3YWxrIikKIAogaWYge29wZW4sIHN0YXR9IDw9IHN1cHBvcnRzX2Rpcl9mZCBhbmQge2xpc3RkaXIsIHN0YXR9IDw9IHN1cHBvcnRzX2ZkOgpAQCAtNTA5LDYgKzQ1MSw4IEBACiAgICAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgogICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKICAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRvcCwgaW50KSBvciBub3QgaGFzYXR0cih0b3AsICdfX2luZGV4X18nKToKKyAgICAgICAgICAgIHRvcCA9IGZzcGF0aCh0b3ApCiAgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCiAgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KICAgICAgICAgb3JpZ19zdCA9IHN0YXQodG9wLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1kaXJfZmQpCkBAIC04NDMsMzYgKzc4NywzMSBAQAogCiBkZWYgX2ZzY29kZWMoKToKICAgICBlbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQotICAgIGlmIGVuY29kaW5nID09ICdtYmNzJzoKLSAgICAgICAgZXJyb3JzID0gJ3N0cmljdCcKLSAgICBlbHNlOgotICAgICAgICBlcnJvcnMgPSAnc3Vycm9nYXRlZXNjYXBlJworICAgIGVycm9ycyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkKIAogICAgIGRlZiBmc2VuY29kZShmaWxlbmFtZSk6CisgICAgICAgICIiIkVuY29kZSBmaWxlbmFtZSAoYW4gb3MuUGF0aExpa2UsIGJ5dGVzLCBvciBzdHIpIHRvIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIGJ5dGVzIHVuY2hhbmdlZC4KKyAgICAgICAgT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzCisgICAgICAgICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgogICAgICAgICAiIiIKLSAgICAgICAgRW5jb2RlIGZpbGVuYW1lIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIGJ5dGVzIHVuY2hhbmdlZC4gT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYKLSAgICAgICAgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKKyAgICAgICAgZmlsZW5hbWUgPSBmc3BhdGgoZmlsZW5hbWUpICAjIERvZXMgdHlwZS1jaGVja2luZyBvZiBgZmlsZW5hbWVgLgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBmc2RlY29kZShmaWxlbmFtZSk6CisgICAgICAgICIiIkRlY29kZSBmaWxlbmFtZSAoYW4gb3MuUGF0aExpa2UsIGJ5dGVzLCBvciBzdHIpIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCByZXR1cm4gc3RyIHVuY2hhbmdlZC4gT24KKyAgICAgICAgV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzCisgICAgICAgICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgogICAgICAgICAiIiIKLSAgICAgICAgRGVjb2RlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvcgotICAgICAgICBoYW5kbGVyLCByZXR1cm4gc3RyIHVuY2hhbmdlZC4gT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYKLSAgICAgICAgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKKyAgICAgICAgZmlsZW5hbWUgPSBmc3BhdGgoZmlsZW5hbWUpICAjIERvZXMgdHlwZS1jaGVja2luZyBvZiBgZmlsZW5hbWVgLgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdCBieXRlcyBvciBzdHIsIG5vdCAlcyIgJSB0eXBlKGZpbGVuYW1lKS5fX25hbWVfXykKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCiAgICAgcmV0dXJuIGZzZW5jb2RlLCBmc2RlY29kZQogCkBAIC04OTMsNiArODMyLDEwIEBACiAKICAgICBkZWYgX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIGVudiwgZnVuYyk6CiAgICAgICAgICMgSW50ZXJuYWwgaGVscGVyOyBmdW5jIGlzIHRoZSBleGVjKigpIGZ1bmN0aW9uIHRvIHVzZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCAodHVwbGUsIGxpc3QpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXJndiBtdXN0IGJlIGEgdHVwbGUgb3IgYSBsaXN0JykKKyAgICAgICAgaWYgbm90IGFyZ3Mgb3Igbm90IGFyZ3NbMF06CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhcmd2IGZpcnN0IGVsZW1lbnQgY2Fubm90IGJlIGVtcHR5JykKICAgICAgICAgcGlkID0gZm9yaygpCiAgICAgICAgIGlmIG5vdCBwaWQ6CiAgICAgICAgICAgICAjIENoaWxkCkBAIC0xMDcwLDMgKzEwMTMsNTUgQEAKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZkIHR5cGUgKCVzLCBleHBlY3RlZCBpbnRlZ2VyKSIgJSB0eXBlKGZkKSkKICAgICBpbXBvcnQgaW8KICAgICByZXR1cm4gaW8ub3BlbihmZCwgKmFyZ3MsICoqa3dhcmdzKQorCisKKyMgRm9yIHRlc3RpbmcgcHVycG9zZXMsIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHdoZW4gdGhlIEMKKyMgaW1wbGVtZW50YXRpb24gZXhpc3RzLgorZGVmIF9mc3BhdGgocGF0aCk6CisgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aC1saWtlIG9iamVjdC4KKworICAgIElmIHN0ciBvciBieXRlcyBpcyBwYXNzZWQgaW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gT3RoZXJ3aXNlIHRoZQorICAgIG9zLlBhdGhMaWtlIGludGVyZmFjZSBpcyB1c2VkIHRvIGdldCB0aGUgcGF0aCByZXByZXNlbnRhdGlvbi4gSWYgdGhlCisgICAgcGF0aCByZXByZXNlbnRhdGlvbiBpcyBub3Qgc3RyIG9yIGJ5dGVzLCBUeXBlRXJyb3IgaXMgcmFpc2VkLiBJZiB0aGUKKyAgICBwcm92aWRlZCBwYXRoIGlzIG5vdCBzdHIsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgVHlwZUVycm9yIGlzIHJhaXNlZC4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICAjIFdvcmsgZnJvbSB0aGUgb2JqZWN0J3MgdHlwZSB0byBtYXRjaCBtZXRob2QgcmVzb2x1dGlvbiBvZiBvdGhlciBtYWdpYworICAgICMgbWV0aG9kcy4KKyAgICBwYXRoX3R5cGUgPSB0eXBlKHBhdGgpCisgICAgdHJ5OgorICAgICAgICBwYXRoX3JlcHIgPSBwYXRoX3R5cGUuX19mc3BhdGhfXyhwYXRoKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgaWYgaGFzYXR0cihwYXRoX3R5cGUsICdfX2ZzcGF0aF9fJyk6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgIiArIHBhdGhfdHlwZS5fX25hbWVfXykKKyAgICBpZiBpc2luc3RhbmNlKHBhdGhfcmVwciwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgcmV0dXJuIHBhdGhfcmVwcgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQge30uX19mc3BhdGhfXygpIHRvIHJldHVybiBzdHIgb3IgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3Qge30iLmZvcm1hdChwYXRoX3R5cGUuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShwYXRoX3JlcHIpLl9fbmFtZV9fKSkKKworIyBJZiB0aGVyZSBpcyBubyBDIGltcGxlbWVudGF0aW9uLCBtYWtlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIHRoZQorIyBpbXBsZW1lbnRhdGlvbiBhcyB0cmFuc3BhcmVudGx5IGFzIHBvc3NpYmxlLgoraWYgbm90IF9leGlzdHMoJ2ZzcGF0aCcpOgorICAgIGZzcGF0aCA9IF9mc3BhdGgKKyAgICBmc3BhdGguX19uYW1lX18gPSAiZnNwYXRoIgorCisKK2NsYXNzIFBhdGhMaWtlKGFiYy5BQkMpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBzdWJjbGFzcyk6CisgICAgICAgIHJldHVybiBoYXNhdHRyKHN1YmNsYXNzLCAnX19mc3BhdGhfXycpCmRpZmYgLS1naXQgYS9MaWIvcGF0aGxpYi5weSBiL0xpYi9wYXRobGliLnB5CmluZGV4IDE0ODBlMmYuLjA0ODRkYWMgMTAwNjQ0Ci0tLSBhL0xpYi9wYXRobGliLnB5CisrKyBiL0xpYi9wYXRobGliLnB5CkBAIC0xNzgsMTIgKzE3OCwyOCBAQAogICAgIGRlZiBjYXNlZm9sZF9wYXJ0cyhzZWxmLCBwYXJ0cyk6CiAgICAgICAgIHJldHVybiBbcC5sb3dlcigpIGZvciBwIGluIHBhcnRzXQogCi0gICAgZGVmIHJlc29sdmUoc2VsZiwgcGF0aCk6CisgICAgZGVmIHJlc29sdmUoc2VsZiwgcGF0aCwgc3RyaWN0PUZhbHNlKToKICAgICAgICAgcyA9IHN0cihwYXRoKQogICAgICAgICBpZiBub3QgczoKICAgICAgICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQorICAgICAgICBwcmV2aW91c19zID0gTm9uZQogICAgICAgICBpZiBfZ2V0ZmluYWxwYXRobmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRfdG9fbm9ybWFsKF9nZXRmaW5hbHBhdGhuYW1lKHMpKQorICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRfdG9fbm9ybWFsKF9nZXRmaW5hbHBhdGhuYW1lKHMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzID0gc2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfcyA9IHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLmRpcm5hbWUocykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX3MgPT0gczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzICsgb3MucGF0aC5zZXAgKyBvcy5wYXRoLmJhc2VuYW1lKHByZXZpb3VzX3MpCiAgICAgICAgICMgTWVhbnMgZmFsbGJhY2sgb24gYWJzb2x1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMjg1LDcgKzMwMSw3IEBACiAgICAgZGVmIGNhc2Vmb2xkX3BhcnRzKHNlbGYsIHBhcnRzKToKICAgICAgICAgcmV0dXJuIHBhcnRzCiAKLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoKToKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICBzZXAgPSBzZWxmLnNlcAogICAgICAgICBhY2Nlc3NvciA9IHBhdGguX2FjY2Vzc29yCiAgICAgICAgIHNlZW4gPSB7fQpAQCAtMzE1LDcgKzMzMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBhY2Nlc3Nvci5yZWFkbGluayhuZXdwYXRoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3cGF0aAogICAgICAgICAgICAgICAgICAgICAjIE5vdCBhIHN5bWxpbmsKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG5ld3BhdGgKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzg1LDYgKzQwNCw4IEBACiAKICAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5saXN0ZGlyKQogCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Muc2NhbmRpcikKKwogICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKIAogICAgIGlmIGhhc2F0dHIob3MsICJsY2htb2QiKToKQEAgLTQyOSwyNSArNDUwLDYgQEAKICMgR2xvYmJpbmcgaGVscGVycwogIwogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfY2FjaGVkKGZ1bmMpOgotICAgIHRyeToKLSAgICAgICAgZnVuYy5fX2NhY2hlZF9fCi0gICAgICAgIHlpZWxkIGZ1bmMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVthcmdzXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FjaGVbYXJnc10gPSBmdW5jKCphcmdzKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICB3cmFwcGVyLl9fY2FjaGVkX18gPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHdyYXBwZXIKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLQogZGVmIF9tYWtlX3NlbGVjdG9yKHBhdHRlcm5fcGFydHMpOgogICAgIHBhdCA9IHBhdHRlcm5fcGFydHNbMF0KICAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCkBAIC00NzMsOCArNDc1LDEwIEBACiAgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgICBpZiBjaGlsZF9wYXJ0czoKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCiAKICAgICBkZWYgc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCkBAIC00ODIsMTMgKzQ4NiwxNSBAQAogICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgogICAgICAgICBleGlzdHMgPSBwYXRoX2Nscy5leGlzdHMKLSAgICAgICAgbGlzdGRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5saXN0ZGlyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpCisgICAgICAgIHNjYW5kaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3Iuc2NhbmRpcgorICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKQogCiAKIGNsYXNzIF9UZXJtaW5hdGluZ1NlbGVjdG9yOgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKIAogCkBAIC00OTgsMTMgKzUwNCwxMSBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZi5uYW1lKQotICAgICAgICAgICAgaWYgZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgICAgICAgICBpZiAoaXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MTYsMTcgKzUyMCwxOCBAQAogICAgICAgICBzZWxmLnBhdCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTUzNywzMiArNTQyLDMwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGlzX2RpcihwYXRoKSBhbmQgbm90IHBhdGguaXNfc3ltbGluaygpOgotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpIGFuZCBub3QgZW50cnkuaXNfc3ltbGluaygpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgd2l0aCBfY2FjaGVkKGxpc3RkaXIpIGFzIGxpc3RkaXI6Ci0gICAgICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKKyAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjM0LDEzICs2MzcsMTYgQEAKICAgICAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCi0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgcGF0aCBvciBzdHIgb2JqZWN0LCBub3QgJXIiCi0gICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKKyAgICAgICAgICAgICAgICBhID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3MuUGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3RyLCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgIHJldHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY5Myw2ICs2OTksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RyCiAKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCiAgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCiAgICAgICAgIHNsYXNoZXMuIiIiCkBAIC05NDMsNiArOTUyLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKKyMgb3B0aW1pemF0aW9ucyBpbiBQdXJlUGF0aC5fcGFyc2VfYXJncygpLgorb3MuUGF0aExpa2UucmVnaXN0ZXIoUHVyZVBhdGgpCisKIAogY2xhc3MgUHVyZVBvc2l4UGF0aChQdXJlUGF0aCk6CiAgICAgX2ZsYXZvdXIgPSBfcG9zaXhfZmxhdm91cgpAQCAtMTA5OCw3ICsxMTExLDcgQEAKICAgICAgICAgb2JqLl9pbml0KHRlbXBsYXRlPXNlbGYpCiAgICAgICAgIHJldHVybiBvYmoKIAotICAgIGRlZiByZXNvbHZlKHNlbGYpOgorICAgIGRlZiByZXNvbHZlKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBNYWtlIHRoZSBwYXRoIGFic29sdXRlLCByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIG9uIHRoZSB3YXkgYW5kIGFsc28KICAgICAgICAgbm9ybWFsaXppbmcgaXQgKGZvciBleGFtcGxlIHR1cm5pbmcgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzIHVuZGVyCkBAIC0xMTA2LDcgKzExMTksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKLSAgICAgICAgcyA9IHNlbGYuX2ZsYXZvdXIucmVzb2x2ZShzZWxmKQorICAgICAgICBzID0gc2VsZi5fZmxhdm91ci5yZXNvbHZlKHNlbGYsIHN0cmljdD1zdHJpY3QpCiAgICAgICAgIGlmIHMgaXMgTm9uZToKICAgICAgICAgICAgICMgTm8gc3ltbGluayByZXNvbHV0aW9uID0+IGZvciBjb25zaXN0ZW5jeSwgcmFpc2UgYW4gZXJyb3IgaWYKICAgICAgICAgICAgICMgdGhlIHBhdGggZG9lc24ndCBleGlzdCBvciBpcyBmb3JiaWRkZW4KZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDQ3OTcyNjUuLjk3NjE4YjAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNTIsNyArNTIsOCBAQAogZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmIGJvdGgKIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZCBhbGlhc2VzCi1kZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLgorZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlCitkaXNhYmxlZCBieSBwYXNzaW5nIHRoZSAicmVhZHJjPUZhbHNlIiBhcmd1bWVudCB0byB0aGUgUGRiIGNvbnN0cnVjdG9yLgogCiBBc2lkZSBmcm9tIGFsaWFzZXMsIHRoZSBkZWJ1Z2dlciBpcyBub3QgZGlyZWN0bHkgcHJvZ3JhbW1hYmxlOyBidXQgaXQKIGlzIGltcGxlbWVudGVkIGFzIGEgY2xhc3MgZnJvbSB3aGljaCB5b3UgY2FuIGRlcml2ZSB5b3VyIG93biBkZWJ1Z2dlcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNjAsMTggKzE2MSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0IGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgorICAgICAgICBpZiBzZWxmLnByb3RvID49IDIgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfZXhfXyI6CiAgICAgICAgICAgICBjbHMsIGFyZ3MsIGt3YXJncyA9IGFyZ3MKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNscywgIl9fbmV3X18iKToKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgbm8gX19uZXdfXyIKQEAgLTU1NiwxMCArNTU3LDE2IEBACiAgICAgICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIGNscyBpcyBub3Qgb2JqLl9fY2xhc3NfXzoKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChmdW5jX25hbWUpKQotICAgICAgICAgICAgc2F2ZShjbHMpCi0gICAgICAgICAgICBzYXZlKGFyZ3MpCi0gICAgICAgICAgICBzYXZlKGt3YXJncykKLSAgICAgICAgICAgIHdyaXRlKE5FV09CSl9FWCkKKyAgICAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgICAgICBzYXZlKGNscykKKyAgICAgICAgICAgICAgICBzYXZlKGFyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCisgICAgICAgICAgICAgICAgd3JpdGUoTkVXT0JKX0VYKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmdW5jID0gcGFydGlhbChjbHMuX19uZXdfXywgY2xzLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShmdW5jKQorICAgICAgICAgICAgICAgIHNhdmUoKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgICBlbGlmIHNlbGYucHJvdG8gPj0gMiBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9fIjoKICAgICAgICAgICAgICMgQSBfX3JlZHVjZV9fIGltcGxlbWVudGF0aW9uIGNhbiBkaXJlY3QgcHJvdG9jb2wgMiBvciBuZXdlciB0bwogICAgICAgICAgICAgIyB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IE5FV09CSiBvcGNvZGUsIHdoaWxlIHN0aWxsCkBAIC0xMDI4LDcgKzEwMzUsNyBAQAogICAgICAgICBzZWxmLl91bmZyYW1lciA9IF9VbmZyYW1lcihzZWxmLl9maWxlX3JlYWQsIHNlbGYuX2ZpbGVfcmVhZGxpbmUpCiAgICAgICAgIHNlbGYucmVhZCA9IHNlbGYuX3VuZnJhbWVyLnJlYWQKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX3VuZnJhbWVyLnJlYWRsaW5lCi0gICAgICAgIHNlbGYubWFyayA9IG9iamVjdCgpICMgYW55IG5ldyB1bmlxdWUgb2JqZWN0CisgICAgICAgIHNlbGYubWV0YXN0YWNrID0gW10KICAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICAgc2VsZi5wcm90byA9IDAKQEAgLTEwNDQsMjAgKzEwNTEsMTIgQEAKICAgICAgICAgZXhjZXB0IF9TdG9wIGFzIHN0b3BpbnN0OgogICAgICAgICAgICAgcmV0dXJuIHN0b3BpbnN0LnZhbHVlCiAKLSAgICAjIFJldHVybiBsYXJnZXN0IGluZGV4IGsgc3VjaCB0aGF0IHNlbGYuc3RhY2tba10gaXMgc2VsZi5tYXJrLgotICAgICMgSWYgdGhlIHN0YWNrIGRvZXNuJ3QgY29udGFpbiBhIG1hcmssIGV2ZW50dWFsbHkgcmFpc2VzIEluZGV4RXJyb3IuCi0gICAgIyBUaGlzIGNvdWxkIGJlIHNwZWQgYnkgbWFpbnRhaW5pbmcgYW5vdGhlciBzdGFjaywgb2YgaW5kaWNlcyBhdCB3aGljaAotICAgICMgdGhlIG1hcmsgYXBwZWFycy4gIEZvciB0aGF0IG1hdHRlciwgdGhlIGxhdHRlciBzdGFjayB3b3VsZCBzdWZmaWNlLAotICAgICMgYW5kIHdlIHdvdWxkbid0IG5lZWQgdG8gcHVzaCBtYXJrIG9iamVjdHMgb24gc2VsZi5zdGFjayBhdCBhbGwuCi0gICAgIyBEb2luZyBzbyBpcyBwcm9iYWJseSBhIGdvb2QgdGhpbmcsIHRob3VnaCwgc2luY2UgaWYgdGhlIHBpY2tsZSBpcwotICAgICMgY29ycnVwdCAob3IgaG9zdGlsZSkgd2UgbWF5IGdldCBhIGNsdWUgZnJvbSBmaW5kaW5nIHNlbGYubWFyayBlbWJlZGRlZAotICAgICMgaW4gdW5waWNrbGVkIG9iamVjdHMuCi0gICAgZGVmIG1hcmtlcihzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmsKLSAgICAgICAgayA9IGxlbihzdGFjayktMQotICAgICAgICB3aGlsZSBzdGFja1trXSBpcyBub3QgbWFyazogayA9IGstMQotICAgICAgICByZXR1cm4gaworICAgICMgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBwdXNoZWQgaW4gdGhlIHN0YWNrIGFmdGVyIGxhc3QgTUFSSyBpbnN0cnVjdGlvbi4KKyAgICBkZWYgcG9wX21hcmsoc2VsZik6CisgICAgICAgIGl0ZW1zID0gc2VsZi5zdGFjaworICAgICAgICBzZWxmLnN0YWNrID0gc2VsZi5tZXRhc3RhY2sucG9wKCkKKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAorICAgICAgICByZXR1cm4gaXRlbXMKIAogICAgIGRlZiBwZXJzaXN0ZW50X2xvYWQoc2VsZiwgcGlkKToKICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJ1bnN1cHBvcnRlZCBwZXJzaXN0ZW50IGlkIGVuY291bnRlcmVkIikKQEAgLTEyMzgsOCArMTIzNyw4IEBACiAgICAgZGlzcGF0Y2hbU0hPUlRfQklOVU5JQ09ERVswXV0gPSBsb2FkX3Nob3J0X2JpbnVuaWNvZGUKIAogICAgIGRlZiBsb2FkX3R1cGxlKHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFt0dXBsZShzZWxmLnN0YWNrW2srMTpdKV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQodHVwbGUoaXRlbXMpKQogICAgIGRpc3BhdGNoW1RVUExFWzBdXSA9IGxvYWRfdHVwbGUKIAogICAgIGRlZiBsb2FkX2VtcHR5X3R1cGxlKHNlbGYpOgpAQCAtMTI3MSwyMSArMTI3MCwyMCBAQAogICAgIGRpc3BhdGNoW0VNUFRZX1NFVFswXV0gPSBsb2FkX2VtcHR5X3NldAogCiAgICAgZGVmIGxvYWRfZnJvemVuc2V0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtmcm96ZW5zZXQoc2VsZi5zdGFja1trKzE6XSldCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKGZyb3plbnNldChpdGVtcykpCiAgICAgZGlzcGF0Y2hbRlJPWkVOU0VUWzBdXSA9IGxvYWRfZnJvemVuc2V0CiAKICAgICBkZWYgbG9hZF9saXN0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtzZWxmLnN0YWNrW2srMTpdXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZChpdGVtcykKICAgICBkaXNwYXRjaFtMSVNUWzBdXSA9IGxvYWRfbGlzdAogCiAgICAgZGVmIGxvYWRfZGljdChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgaXRlbXMgPSBzZWxmLnN0YWNrW2srMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgIGQgPSB7aXRlbXNbaV06IGl0ZW1zW2krMV0KICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKX0KLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbZF0KKyAgICAgICAgc2VsZi5hcHBlbmQoZCkKICAgICBkaXNwYXRjaFtESUNUWzBdXSA9IGxvYWRfZGljdAogCiAgICAgIyBJTlNUIGFuZCBPQkogZGlmZmVyIG9ubHkgaW4gaG93IHRoZXkgZ2V0IGEgY2xhc3Mgb2JqZWN0LiAgSXQncyBub3QKQEAgLTEyOTMsOSArMTI5MSw3IEBACiAgICAgIyBwcmV2aW91c2x5IGRpdmVyZ2VkIGFuZCBncmV3IGRpZmZlcmVudCBidWdzLgogICAgICMga2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlLCBhbmQgayBwb2ludHMgdG8gdGhlIHRvcG1vc3QgbWFyawogICAgICMgb2JqZWN0LCBmb2xsb3dpbmcgd2hpY2ggYXJlIHRoZSBhcmd1bWVudHMgZm9yIGtsYXNzLl9faW5pdF9fLgotICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGspOgotICAgICAgICBhcmdzID0gdHVwbGUoc2VsZi5zdGFja1trKzE6XSkKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbazpdCisgICAgZGVmIF9pbnN0YW50aWF0ZShzZWxmLCBrbGFzcywgYXJncyk6CiAgICAgICAgIGlmIChhcmdzIG9yIG5vdCBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKSBvcgogICAgICAgICAgICAgaGFzYXR0cihrbGFzcywgIl9fZ2V0aW5pdGFyZ3NfXyIpKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMTEsMTQgKzEzMDcsMTQgQEAKICAgICAgICAgbW9kdWxlID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgIG5hbWUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQotICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgc2VsZi5tYXJrZXIoKSkKKyAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIHNlbGYucG9wX21hcmsoKSkKICAgICBkaXNwYXRjaFtJTlNUWzBdXSA9IGxvYWRfaW5zdAogCiAgICAgZGVmIGxvYWRfb2JqKHNlbGYpOgogICAgICAgICAjIFN0YWNrIGlzIC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IGFyZzEgYXJnMiAuLi4KLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAga2xhc3MgPSBzZWxmLnN0YWNrLnBvcChrKzEpCi0gICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBrKQorICAgICAgICBhcmdzID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGNscyA9IGFyZ3MucG9wKDApCisgICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGNscywgYXJncykKICAgICBkaXNwYXRjaFtPQkpbMF1dID0gbG9hZF9vYmoKIAogICAgIGRlZiBsb2FkX25ld29iaihzZWxmKToKQEAgLTE0MDMsMTIgKzEzOTksMTQgQEAKICAgICBkaXNwYXRjaFtSRURVQ0VbMF1dID0gbG9hZF9yZWR1Y2UKIAogICAgIGRlZiBsb2FkX3BvcChzZWxmKToKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGlmIHNlbGYuc3RhY2s6CisgICAgICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgIGRpc3BhdGNoW1BPUFswXV0gPSBsb2FkX3BvcAogCiAgICAgZGVmIGxvYWRfcG9wX21hcmsoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGRlbCBzZWxmLnN0YWNrW2s6XQorICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgICBkaXNwYXRjaFtQT1BfTUFSS1swXV0gPSBsb2FkX3BvcF9tYXJrCiAKICAgICBkZWYgbG9hZF9kdXAoc2VsZik6CkBAIC0xNDY0LDE3ICsxNDYyLDE0IEBACiAgICAgZGlzcGF0Y2hbQVBQRU5EWzBdXSA9IGxvYWRfYXBwZW5kCiAKICAgICBkZWYgbG9hZF9hcHBlbmRzKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgbGlzdF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGxpc3Rfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X29iaiwgbGlzdCk6CiAgICAgICAgICAgICBsaXN0X29iai5leHRlbmQoaXRlbXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQgPSBsaXN0X29iai5hcHBlbmQKICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGFwcGVuZChpdGVtKQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCiAgICAgZGlzcGF0Y2hbQVBQRU5EU1swXV0gPSBsb2FkX2FwcGVuZHMKIAogICAgIGRlZiBsb2FkX3NldGl0ZW0oc2VsZik6CkBAIC0xNDg2LDI3ICsxNDgxLDIxIEBACiAgICAgZGlzcGF0Y2hbU0VUSVRFTVswXV0gPSBsb2FkX3NldGl0ZW0KIAogICAgIGRlZiBsb2FkX3NldGl0ZW1zKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgZGljdCA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBmb3IgaSBpbiByYW5nZShtYXJrICsgMSwgbGVuKHN0YWNrKSwgMik6Ci0gICAgICAgICAgICBkaWN0W3N0YWNrW2ldXSA9IHN0YWNrW2kgKyAxXQotCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgZGljdCA9IHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpOgorICAgICAgICAgICAgZGljdFtpdGVtc1tpXV0gPSBpdGVtc1tpICsgMV0KICAgICBkaXNwYXRjaFtTRVRJVEVNU1swXV0gPSBsb2FkX3NldGl0ZW1zCiAKICAgICBkZWYgbG9hZF9hZGRpdGVtcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNldF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNldF9vYmogPSBzZWxmLnN0YWNrWy0xXQogICAgICAgICBpZiBpc2luc3RhbmNlKHNldF9vYmosIHNldCk6CiAgICAgICAgICAgICBzZXRfb2JqLnVwZGF0ZShpdGVtcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFkZCA9IHNldF9vYmouYWRkCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgICBhZGQoaXRlbSkKLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQogICAgIGRpc3BhdGNoW0FERElURU1TWzBdXSA9IGxvYWRfYWRkaXRlbXMKIAogICAgIGRlZiBsb2FkX2J1aWxkKHNlbGYpOgpAQCAtMTUzNCw3ICsxNTIzLDkgQEAKICAgICBkaXNwYXRjaFtCVUlMRFswXV0gPSBsb2FkX2J1aWxkCiAKICAgICBkZWYgbG9hZF9tYXJrKHNlbGYpOgotICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1hcmspCisgICAgICAgIHNlbGYubWV0YXN0YWNrLmFwcGVuZChzZWxmLnN0YWNrKQorICAgICAgICBzZWxmLnN0YWNrID0gW10KKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAogICAgIGRpc3BhdGNoW01BUktbMF1dID0gbG9hZF9tYXJrCiAKICAgICBkZWYgbG9hZF9zdG9wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IDE2YWU3ZDUuLjVlMTI5YjUgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTcwNyw3ICs3MDcsNyBAQAogICAgID4+PiBlbmMgPSBzLmVuY29kZSgndXRmLTgnKQogICAgID4+PiBlbmMKICAgICBiJ2FiY2RceGVhXHhhZlx4OGQnCi0gICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyldKSArIGJ5dGVzKDcpICAjIGxpdHRsZS1lbmRpYW4gOC1ieXRlIGxlbmd0aAorICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBiJ1wwJyAqIDcgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCiAgICAgPj4+IHQgPSByZWFkX3VuaWNvZGVzdHJpbmc4KGlvLkJ5dGVzSU8obiArIGVuYyArIGInanVuaycpKQogICAgID4+PiBzID09IHQKICAgICBUcnVlCkBAIC0yNDQwLDYgKzI0NDAsNyBAQAogICAgICAgICBpZiBvcGNvZGUubmFtZSBpbiAoIlBVVCIsICJCSU5QVVQiLCAiTE9OR19CSU5QVVQiLCAiTUVNT0laRSIpOgogICAgICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgPT0gIk1FTU9JWkUiOgogICAgICAgICAgICAgICAgIG1lbW9faWR4ID0gbGVuKG1lbW8pCisgICAgICAgICAgICAgICAgbWFya21zZyA9ICIoYXMgJWQpIiAlIG1lbW9faWR4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFzc2VydCBhcmcgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICBtZW1vX2lkeCA9IGFyZwpkaWZmIC0tZ2l0IGEvTGliL3BrZ3V0aWwucHkgYi9MaWIvcGtndXRpbC5weQppbmRleCA4MWQ0MThkLi5lMzdhZDQ1IDEwMDY0NAotLS0gYS9MaWIvcGtndXRpbC5weQorKysgYi9MaWIvcGtndXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2ggYXMgc2ltcGxlZ2VuZXJpYwogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcG9ydGxpYi51dGlsCkBAIC0xNCw5ICsxNSwxNCBAQAogICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCiAgICAgJ3dhbGtfcGFja2FnZXMnLCAnaXRlcl9tb2R1bGVzJywgJ2dldF9kYXRhJywKICAgICAnSW1wSW1wb3J0ZXInLCAnSW1wTG9hZGVyJywgJ3JlYWRfY29kZScsICdleHRlbmRfcGF0aCcsCisgICAgJ01vZHVsZUluZm8nLAogXQogCiAKK01vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ21vZHVsZV9maW5kZXIgbmFtZSBpc3BrZycpCitNb2R1bGVJbmZvLl9fZG9jX18gPSAnQSBuYW1lZHR1cGxlIHdpdGggbWluaW1hbCBpbmZvIGFib3V0IGEgbW9kdWxlLicKKworCiBkZWYgX2dldF9zcGVjKGZpbmRlciwgbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaW5kZXItc3BlY2lmaWMgbW9kdWxlIHNwZWMuIiIiCiAgICAgIyBXb3JrcyB3aXRoIGxlZ2FjeSBmaW5kZXJzLgpAQCAtNDUsNyArNTEsNyBAQAogCiAKIGRlZiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpOgotICAgICIiIllpZWxkcyAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQorICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQogICAgIG9uIHBhdGgsIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICAncGF0aCcgc2hvdWxkIGJlIGVpdGhlciBOb25lIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvcgpAQCAtNzgsMzEgKzg0LDMxIEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBtW3BdID0gVHJ1ZQogCi0gICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKLSAgICAgICAgeWllbGQgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnCisgICAgZm9yIGluZm8gaW4gaXRlcl9tb2R1bGVzKHBhdGgsIHByZWZpeCk6CisgICAgICAgIHlpZWxkIGluZm8KIAotICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgaWYgaW5mby5pc3BrZzoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhpbmZvLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tuYW1lXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tpbmZvLm5hbWVdLCAnX19wYXRoX18nLCBOb25lKSBvciBbXQogCiAgICAgICAgICAgICAgICAgIyBkb24ndCB0cmF2ZXJzZSBwYXRoIGl0ZW1zIHdlJ3ZlIHNlZW4gYmVmb3JlCiAgICAgICAgICAgICAgICAgcGF0aCA9IFtwIGZvciBwIGluIHBhdGggaWYgbm90IHNlZW4ocCldCiAKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgbmFtZSsnLicsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIGluZm8ubmFtZSsnLicsIG9uZXJyb3IpCiAKIAogZGVmIGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJyk6Ci0gICAgIiIiWWllbGRzIChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCisgICAgIiIiWWllbGRzIE1vZHVsZUluZm8gZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCiAgICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgogCiAgICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKQEAgLTExMSw3ICsxMTcsNiBAQAogICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgICBvbiBvdXRwdXQuCiAgICAgIiIiCi0KICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydGVycyA9IGl0ZXJfaW1wb3J0ZXJzKCkKICAgICBlbHNlOgpAQCAtMTIyLDcgKzEyNyw3IEBACiAgICAgICAgIGZvciBuYW1lLCBpc3BrZyBpbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMoaSwgcHJlZml4KToKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgeWllbGRlZFtuYW1lXSA9IDEKLSAgICAgICAgICAgICAgICB5aWVsZCBpLCBuYW1lLCBpc3BrZworICAgICAgICAgICAgICAgIHlpZWxkIE1vZHVsZUluZm8oaSwgbmFtZSwgaXNwa2cpCiAKIAogQHNpbXBsZWdlbmVyaWMKQEAgLTE4MCw3ICsxODUsNyBAQAogZGVmIF9pbXBvcnRfaW1wKCk6CiAgICAgZ2xvYmFsIGltcAogICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgaW1wID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2ltcCcpCiAKIGNsYXNzIEltcEltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9JTi5weSBiL0xpYi9wbGF0LWFpeDQvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjhmMjMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0L25oLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoaW5lLmgKLUxJVFRMRV9FTkRJQU4gPSAxMjM0Ci1CSUdfRU5ESUFOID0gNDMyMQotUERQX0VORElBTiA9IDM0MTIKLUJZVEVfT1JERVIgPSBCSUdfRU5ESUFOCi1ERUZBVUxUX0dQUiA9IDB4REVBREJFRUYKLU1TUl9FRSA9IDB4ODAwMAotTVNSX1BSID0gMHg0MDAwCi1NU1JfRlAgPSAweDIwMDAKLU1TUl9NRSA9IDB4MTAwMAotTVNSX0ZFID0gMHgwODAwCi1NU1JfRkUwID0gMHgwODAwCi1NU1JfU0UgPSAweDA0MDAKLU1TUl9CRSA9IDB4MDIwMAotTVNSX0lFID0gMHgwMTAwCi1NU1JfRkUxID0gMHgwMTAwCi1NU1JfQUwgPSAweDAwODAKLU1TUl9JUCA9IDB4MDA0MAotTVNSX0lSID0gMHgwMDIwCi1NU1JfRFIgPSAweDAwMTAKLU1TUl9QTSA9IDB4MDAwNAotREVGQVVMVF9NU1IgPSAoTVNSX0VFIHwgTVNSX01FIHwgTVNSX0FMIHwgTVNSX0lSIHwgTVNSX0RSKQotREVGQVVMVF9VU0VSX01TUiA9IChERUZBVUxUX01TUiB8IE1TUl9QUikKLUNSX0xUID0gMHg4MDAwMDAwMAotQ1JfR1QgPSAweDQwMDAwMDAwCi1DUl9FUSA9IDB4MjAwMDAwMDAKLUNSX1NPID0gMHgxMDAwMDAwMAotQ1JfRlggPSAweDA4MDAwMDAwCi1DUl9GRVggPSAweDA0MDAwMDAwCi1DUl9WWCA9IDB4MDIwMDAwMDAKLUNSX09YID0gMHgwMTAwMDAwMAotWEVSX1NPID0gMHg4MDAwMDAwMAotWEVSX09WID0gMHg0MDAwMDAwMAotWEVSX0NBID0gMHgyMDAwMDAwMAotZGVmIFhFUl9DT01QX0JZVEUoeGVyKTogcmV0dXJuICgoeGVyID4+IDgpICYgMHgwMDAwMDBGRikKLQotZGVmIFhFUl9MRU5HVEgoeGVyKTogcmV0dXJuICh4ZXIgJiAweDAwMDAwMDdGKQotCi1EU0lTUl9JTyA9IDB4ODAwMDAwMDAKLURTSVNSX1BGVCA9IDB4NDAwMDAwMDAKLURTSVNSX0xPQ0sgPSAweDIwMDAwMDAwCi1EU0lTUl9GUElPID0gMHgxMDAwMDAwMAotRFNJU1JfUFJPVCA9IDB4MDgwMDAwMDAKLURTSVNSX0xPT1AgPSAweDA0MDAwMDAwCi1EU0lTUl9EUlNUID0gMHgwNDAwMDAwMAotRFNJU1JfU1QgPSAweDAyMDAwMDAwCi1EU0lTUl9TRUdCID0gMHgwMTAwMDAwMAotRFNJU1JfREFCUiA9IDB4MDA0MDAwMDAKLURTSVNSX0VBUiA9IDB4MDAxMDAwMDAKLVNSUl9JU19QRlQgPSAweDQwMDAwMDAwCi1TUlJfSVNfSVNQRUMgPSAweDIwMDAwMDAwCi1TUlJfSVNfSUlPID0gMHgxMDAwMDAwMAotU1JSX0lTX0dVQVJEID0gMHgxMDAwMDAwMAotU1JSX0lTX1BST1QgPSAweDA4MDAwMDAwCi1TUlJfSVNfTE9PUCA9IDB4MDQwMDAwMDAKLVNSUl9QUl9GUEVOID0gMHgwMDEwMDAwMAotU1JSX1BSX0lOVkFMID0gMHgwMDA4MDAwMAotU1JSX1BSX1BSSVYgPSAweDAwMDQwMDAwCi1TUlJfUFJfVFJBUCA9IDB4MDAwMjAwMDAKLVNSUl9QUl9JTVBSRSA9IDB4MDAwMTAwMDAKLWRlZiBCVUlEXzdGX1NSVkFMKHJhZGRyKTogcmV0dXJuICgweDg3RjAwMDAwIHwgKCgodWludCkocmFkZHIpKSA+PiAyOCkpCi0KLUJUXzI1Nk0gPSAweDFGRkMKLUJUXzEyOE0gPSAweDBGRkMKLUJUXzY0TSA9IDB4MDdGQwotQlRfMzJNID0gMHgwM0ZDCi1CVF8xNk0gPSAweDAxRkMKLUJUXzhNID0gMHgwMEZDCi1CVF80TSA9IDB4MDA3QwotQlRfMk0gPSAweDAwM0MKLUJUXzFNID0gMHgwMDFDCi1CVF81MTJLID0gMHgwMDBDCi1CVF8yNTZLID0gMHgwMDA0Ci1CVF8xMjhLID0gMHgwMDAwCi1CVF9OT0FDQ0VTUyA9IDB4MAotQlRfUkRPTkxZID0gMHgxCi1CVF9XUklURSA9IDB4MgotQlRfVlMgPSAweDIKLUJUX1ZQID0gMHgxCi1kZWYgQkFUX0VTRUcoZGJhdHUpOiByZXR1cm4gKCgodWludCkoZGJhdHUpID4+IDI4KSkKLQotTUlOX0JBVF9TSVpFID0gMHgwMDAyMDAwMAotTUFYX0JBVF9TSVpFID0gMHgxMDAwMDAwMAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fTE9DQUwgPSA2MwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19CSVAgPSAweDUzCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfQU5ZID0gMHgwMDAwMDAwMAotSU5BRERSX0JST0FEQ0FTVCA9IDB4ZmZmZmZmZmYKLUlOQUREUl9MT09QQkFDSyA9IDB4N2YwMDAwMDEKLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9yZWdlbiBiL0xpYi9wbGF0LWFpeDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU3YTcxYzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXN2YCBpbgotJ0FJWCA0JyopICA7OwotKikgICAgICBlY2hvIFByb2JhYmx5IG5vdCBvbiBhbiBBSVggNCBzeXN0ZW0gMT4mMgotICAgICAgICBleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZGFyd2luL0lOLnB5IGIvTGliL3BsYXQtZGFyd2luL0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjZiZTMzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWRhcndpbi9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2MiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2FwcGxlYXBpb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHgpOiByZXR1cm4KLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhjb3B5cmlnaHQscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKHJjc2lkLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoc2Njc2lkLHMpCi0KLWRlZiBfX1BST0pFQ1RfVkVSU0lPTihzKTogcmV0dXJuIF9fSURTVFJJTkcocHJvamVjdF92ZXJzaW9uLHMpCi0KLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOX05PTl9DQU5DRUxBQkxFID0gMAotX19EQVJXSU5fVkVSU18xMDUwID0gMQotX19EQVJXSU5fVkVSU18xMDUwID0gMAotX19EQVJXSU5fU1VGX1VOSVgwMyA9ICIkVU5JWDIwMDMiCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDEKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCA9ICIkSU5PREU2NCIKLV9fREFSV0lOX1NVRl9OT05fQ0FOQ0VMQUJMRSA9ICIkTk9DQU5DRUwiCi1fX0RBUldJTl9TVUZfMTA1MCA9ICIkMTA1MCIKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGX0VYVFNOID0gIiREQVJXSU5fRVhUU04iCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAwCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQoeCk6IHJldHVybgotCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpOiByZXR1cm4KLQotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUKHgpOiByZXR1cm4KLQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUMih4KTogcmV0dXJuCi0KLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDAKLV9EQVJXSU5fRkVBVFVSRV9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAxCi1fREFSV0lOX0ZFQVRVUkVfVU5JWF9DT05GT1JNQU5DRSA9IDMKLV9EQVJXSU5fRkVBVFVSRV82NF9CSVRfSU5PREUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi1fX1BUSFJFQURfU0laRV9fID0gMTE2OAotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gNTYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDU2Ci1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gNDAKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTkyCi1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxNgotX19QVEhSRUFEX1NJWkVfXyA9IDU5NgotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gMzYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDQwCi1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gNAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gMjQKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDQKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTI0Ci1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxMgotX19EQVJXSU5fTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fX1dPUkRTSVpFID0gNjQKLV9fV09SRFNJWkUgPSAzMgotSU5UOF9NQVggPSAxMjcKLUlOVDE2X01BWCA9IDMyNzY3Ci1JTlQzMl9NQVggPSAyMTQ3NDgzNjQ3Ci1JTlQ4X01JTiA9IC0xMjgKLUlOVDE2X01JTiA9IC0zMjc2OAotSU5UMzJfTUlOID0gKC1JTlQzMl9NQVgtMSkKLVVJTlQ4X01BWCA9IDI1NQotVUlOVDE2X01BWCA9IDY1NTM1Ci1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotSU5UX0xFQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0xFQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfTEVBU1QzMl9NQVggPSBJTlQzMl9NQVgKLVVJTlRfTEVBU1Q4X01BWCA9IFVJTlQ4X01BWAotVUlOVF9MRUFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVF9GQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0ZBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9GQVNUMzJfTUlOID0gSU5UMzJfTUlOCi1JTlRfRkFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9GQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfRkFTVDMyX01BWCA9IElOVDMyX01BWAotVUlOVF9GQVNUOF9NQVggPSBVSU5UOF9NQVgKLVVJTlRfRkFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVFBUUl9NSU4gPSBJTlQzMl9NSU4KLUlOVFBUUl9NQVggPSBJTlQzMl9NQVgKLVBUUkRJRkZfTUlOID0gSU5UMzJfTUlOCi1QVFJESUZGX01BWCA9IElOVDMyX01BWAotV0NIQVJfTUFYID0gMHg3ZmZmZmZmZgotV0NIQVJfTUlOID0gMAotV0NIQVJfTUlOID0gKC1XQ0hBUl9NQVgtMSkKLVdJTlRfTUlOID0gSU5UMzJfTUlOCi1XSU5UX01BWCA9IElOVDMyX01BWAotU0lHX0FUT01JQ19NSU4gPSBJTlQzMl9NSU4KLVNJR19BVE9NSUNfTUFYID0gSU5UMzJfTUFYCi1kZWYgSU5UOF9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQxNl9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQzMl9DKHYpOiByZXR1cm4gKHYpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fcGFyYW0uaAotU09DS19TVFJFQU0gPSAxCi1TT0NLX0RHUkFNID0gMgotU09DS19SQVcgPSAzCi1TT0NLX1JETSA9IDQKLVNPQ0tfU0VRUEFDS0VUID0gNQotU09fREVCVUcgPSAweDAwMDEKLVNPX0FDQ0VQVENPTk4gPSAweDAwMDIKLVNPX1JFVVNFQUREUiA9IDB4MDAwNAotU09fS0VFUEFMSVZFID0gMHgwMDA4Ci1TT19ET05UUk9VVEUgPSAweDAwMTAKLVNPX0JST0FEQ0FTVCA9IDB4MDAyMAotU09fVVNFTE9PUEJBQ0sgPSAweDAwNDAKLVNPX0xJTkdFUiA9IDB4MDA4MAotU09fTElOR0VSID0gMHgxMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX1JFVVNFUE9SVCA9IDB4MDIwMAotU09fVElNRVNUQU1QID0gMHgwNDAwCi1TT19BQ0NFUFRGSUxURVIgPSAweDEwMDAKLVNPX0RPTlRUUlVOQyA9IDB4MjAwMAotU09fV0FOVE1PUkUgPSAweDQwMDAKLVNPX1dBTlRPT0JGTEFHID0gMHg4MDAwCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19OUkVBRCA9IDB4MTAyMAotU09fTktFID0gMHgxMDIxCi1TT19OT1NJR1BJUEUgPSAweDEwMjIKLVNPX05PQUREUkVSUiA9IDB4MTAyMwotU09fTldSSVRFID0gMHgxMDI0Ci1TT19SRVVTRVNIQVJFVUlEID0gMHgxMDI1Ci1TT19OT1RJRllDT05GTElDVCA9IDB4MTAyNgotU09fTElOR0VSX1NFQyA9IDB4MTA4MAotU09fUkVTVFJJQ1RJT05TID0gMHgxMDgxCi1TT19SRVNUUklDVF9ERU5ZSU4gPSAweDAwMDAwMDAxCi1TT19SRVNUUklDVF9ERU5ZT1VUID0gMHgwMDAwMDAwMgotU09fUkVTVFJJQ1RfREVOWVNFVCA9ICgtMjE0NzQ4MzY0OCkKLVNPX0xBQkVMID0gMHgxMDEwCi1TT19QRUVSTEFCRUwgPSAweDEwMTEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX0lTTyA9IDcKLUFGX09TSSA9IEFGX0lTTwotQUZfRUNNQSA9IDgKLUFGX0RBVEFLSVQgPSA5Ci1BRl9DQ0lUVCA9IDEwCi1BRl9TTkEgPSAxMQotQUZfREVDbmV0ID0gMTIKLUFGX0RMSSA9IDEzCi1BRl9MQVQgPSAxNAotQUZfSFlMSU5LID0gMTUKLUFGX0FQUExFVEFMSyA9IDE2Ci1BRl9ST1VURSA9IDE3Ci1BRl9MSU5LID0gMTgKLXBzZXVkb19BRl9YVFAgPSAxOQotQUZfQ09JUCA9IDIwCi1BRl9DTlQgPSAyMQotcHNldWRvX0FGX1JUSVAgPSAyMgotQUZfSVBYID0gMjMKLUFGX1NJUCA9IDI0Ci1wc2V1ZG9fQUZfUElQID0gMjUKLUFGX05EUlYgPSAyNwotQUZfSVNETiA9IDI4Ci1BRl9FMTY0ID0gQUZfSVNETgotcHNldWRvX0FGX0tFWSA9IDI5Ci1BRl9JTkVUNiA9IDMwCi1BRl9OQVRNID0gMzEKLUFGX1NZU1RFTSA9IDMyCi1BRl9ORVRCSU9TID0gMzMKLUFGX1BQUCA9IDM0Ci1BRl9BVE0gPSAzMAotcHNldWRvX0FGX0hEUkNNUExUID0gMzUKLUFGX1JFU0VSVkVEXzM2ID0gMzYKLUFGX05FVEdSQVBIID0gMzIKLUFGX01BWCA9IDM3Ci1TT0NLX01BWEFERFJMRU4gPSAyNTUKLV9TU19NQVhTSVpFID0gMTI4Ci1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX0xPQ0FMID0gQUZfTE9DQUwKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfSU5FVCA9IEFGX0lORVQKLVBGX0lNUExJTksgPSBBRl9JTVBMSU5LCi1QRl9QVVAgPSBBRl9QVVAKLVBGX0NIQU9TID0gQUZfQ0hBT1MKLVBGX05TID0gQUZfTlMKLVBGX0lTTyA9IEFGX0lTTwotUEZfT1NJID0gQUZfSVNPCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX1JPVVRFID0gQUZfUk9VVEUKLVBGX0xJTksgPSBBRl9MSU5LCi1QRl9YVFAgPSBwc2V1ZG9fQUZfWFRQCi1QRl9DT0lQID0gQUZfQ09JUAotUEZfQ05UID0gQUZfQ05UCi1QRl9TSVAgPSBBRl9TSVAKLVBGX0lQWCA9IEFGX0lQWAotUEZfUlRJUCA9IHBzZXVkb19BRl9SVElQCi1QRl9QSVAgPSBwc2V1ZG9fQUZfUElQCi1QRl9ORFJWID0gQUZfTkRSVgotUEZfSVNETiA9IEFGX0lTRE4KLVBGX0tFWSA9IHBzZXVkb19BRl9LRVkKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX05BVE0gPSBBRl9OQVRNCi1QRl9TWVNURU0gPSBBRl9TWVNURU0KLVBGX05FVEJJT1MgPSBBRl9ORVRCSU9TCi1QRl9QUFAgPSBBRl9QUFAKLVBGX1JFU0VSVkVEXzM2ID0gQUZfUkVTRVJWRURfMzYKLVBGX0FUTSA9IEFGX0FUTQotUEZfTkVUR1JBUEggPSBBRl9ORVRHUkFQSAotUEZfTUFYID0gQUZfTUFYCi1ORVRfTUFYSUQgPSBBRl9NQVgKLU5FVF9SVF9EVU1QID0gMQotTkVUX1JUX0ZMQUdTID0gMgotTkVUX1JUX0lGTElTVCA9IDMKLU5FVF9SVF9TVEFUID0gNAotTkVUX1JUX1RSQVNIID0gNQotTkVUX1JUX0lGTElTVDIgPSA2Ci1ORVRfUlRfRFVNUDIgPSA3Ci1ORVRfUlRfTUFYSUQgPSA4Ci1TT01BWENPTk4gPSAxMjgKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfRU9SID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfQ1RSVU5DID0gMHgyMAotTVNHX1dBSVRBTEwgPSAweDQwCi1NU0dfRE9OVFdBSVQgPSAweDgwCi1NU0dfRU9GID0gMHgxMDAKLU1TR19XQUlUU1RSRUFNID0gMHgyMDAKLU1TR19GTFVTSCA9IDB4NDAwCi1NU0dfSE9MRCA9IDB4ODAwCi1NU0dfU0VORCA9IDB4MTAwMAotTVNHX0hBVkVNT1JFID0gMHgyMDAwCi1NU0dfUkNWTU9SRSA9IDB4NDAwMAotTVNHX05FRURTQSA9IDB4MTAwMDAKLUNNR1JPVVBfTUFYID0gMTYKLVNDTV9SSUdIVFMgPSAweDAxCi1TQ01fVElNRVNUQU1QID0gMHgwMgotU0NNX0NSRURTID0gMHgwMwotU0hVVF9SRCA9IDAKLVNIVVRfV1IgPSAxCi1TSFVUX1JEV1IgPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX2VuZGlhbi5oCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIE5UT0hMKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBOVE9IUyh4KTogcmV0dXJuICh4KQotCi1kZWYgSFRPTkwoeCk6IHJldHVybiAoeCkKLQotZGVmIEhUT05TKHgpOiByZXR1cm4gKHgpCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vX09TQnl0ZU9yZGVyLmgKLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQzMih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50NjQoeCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vaTM4Ni9fT1NCeXRlT3JkZXIuaAotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gX09TU3dhcEludDE2KHgpCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KTogcmV0dXJuIF9PU1N3YXBJbnQzMih4KQotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50NjQoeCk6IHJldHVybiBfT1NTd2FwSW50NjQoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLV9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9SRVNFUlZFRCA9IF9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIElOX0NMQVNTQl9ORVQpID09IElOX0xJTktMT0NBTE5FVE5VTSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX1NUUklQSERSID0gMjMKLUlQX1JFQ1ZUVEwgPSAyNAotSVBfRldfQUREID0gNDAKLUlQX0ZXX0RFTCA9IDQxCi1JUF9GV19GTFVTSCA9IDQyCi1JUF9GV19aRVJPID0gNDMKLUlQX0ZXX0dFVCA9IDQ0Ci1JUF9GV19SRVNFVExPRyA9IDQ1Ci1JUF9PTERfRldfQUREID0gNTAKLUlQX09MRF9GV19ERUwgPSA1MQotSVBfT0xEX0ZXX0ZMVVNIID0gNTIKLUlQX09MRF9GV19aRVJPID0gNTMKLUlQX09MRF9GV19HRVQgPSA1NAotSVBfTkFUX19YWFggPSA1NQotSVBfT0xEX0ZXX1JFU0VUTE9HID0gNTYKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1RSQUZGSUNfTUdUX0JBQ0tHUk9VTkQgPSA2NQotSVBfRk9SQ0VfT1VUX0lGUCA9IDY5Ci1UUkFGRklDX01HVF9TT19CQUNLR1JPVU5EID0gMHgwMDAxCi1UUkFGRklDX01HVF9TT19CR19TVVBQUkVTU0VEID0gMHgwMDAyCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiMjAwMTA1MjgvYXBwbGUtZGFyd2luIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9NQVhJRCA9IDQyCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4gYi9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGEyMGNkYzEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZGFyd2luL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiRFWEUgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhMjQxOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcXVldWUuaAotZGVmIFNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIENJUkNMRVFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLV9fS0FNRV9WRVJTSU9OID0gIjIwMDAwNzAxL0ZyZWVCU0QtY3VycmVudCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfQklORFY2T05MWSA9IDI3Ci1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX0JJTkRWNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX01BWElEID0gMjgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTI0MTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3F1ZXVlLmgKLWRlZiBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU0xJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBDSVJDTEVRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAwMDcwMS9GcmVlQlNELWN1cnJlbnQiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X0JJTkRWNk9OTFkgPSAyNwotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9CSU5EVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9NQVhJRCA9IDI4CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjBiZjg0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfbG9uZ192YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfbG9uZyh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2xvbmdfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNiM2EyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTY1NTM2KSkgPT0gKC0xNDQyOTcxNjQ4KSkKLQotZGVmIElOX0xPQ0FMX0dST1VQKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0ZXX05BVF9DRkcgPSA1NgotSVBfRldfTkFUX0RFTCA9IDU3Ci1JUF9GV19OQVRfR0VUX0NPTkZJRyA9IDU4Ci1JUF9GV19OQVRfR0VUX0xPRyA9IDU5Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9BRERfU09VUkNFX01FTUJFUlNISVAgPSA3MAotSVBfRFJPUF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcxCi1JUF9CTE9DS19TT1VSQ0UgPSA3MgotSVBfVU5CTE9DS19TT1VSQ0UgPSA3MwotSVBfTVNGSUxURVIgPSA3NAotTUNBU1RfSk9JTl9HUk9VUCA9IDgwCi1NQ0FTVF9MRUFWRV9HUk9VUCA9IDgxCi1NQ0FTVF9KT0lOX1NPVVJDRV9HUk9VUCA9IDgyCi1NQ0FTVF9MRUFWRV9TT1VSQ0VfR1JPVVAgPSA4MwotTUNBU1RfQkxPQ0tfU09VUkNFID0gODQKLU1DQVNUX1VOQkxPQ0tfU09VUkNFID0gODUKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NSU5fTUVNQkVSU0hJUFMgPSAzMQotSVBfTUFYX01FTUJFUlNISVBTID0gNDA5NQotSVBfTUFYX1NPVVJDRV9GSUxURVIgPSAxMDI0Ci1NQ0FTVF9JTkNMVURFID0gMQotTUNBU1RfRVhDTFVERSA9IDIKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAoLTE2NzExNjgwKQotSVBWNl9BRERSX0lOVDMyX01MTCA9ICgtMTY2NDYxNDQpCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAoLTY1NTM2KQotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0VNQkVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfTVNGSUxURVIgPSA3NAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2IzYTIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNjU1MzYpKSA9PSAoLTE0NDI5NzE2NDgpKQotCi1kZWYgSU5fTE9DQUxfR1JPVVAoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRldfTkFUX0NGRyA9IDU2Ci1JUF9GV19OQVRfREVMID0gNTcKLUlQX0ZXX05BVF9HRVRfQ09ORklHID0gNTgKLUlQX0ZXX05BVF9HRVRfTE9HID0gNTkKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0FERF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcwCi1JUF9EUk9QX1NPVVJDRV9NRU1CRVJTSElQID0gNzEKLUlQX0JMT0NLX1NPVVJDRSA9IDcyCi1JUF9VTkJMT0NLX1NPVVJDRSA9IDczCi1JUF9NU0ZJTFRFUiA9IDc0Ci1NQ0FTVF9KT0lOX0dST1VQID0gODAKLU1DQVNUX0xFQVZFX0dST1VQID0gODEKLU1DQVNUX0pPSU5fU09VUkNFX0dST1VQID0gODIKLU1DQVNUX0xFQVZFX1NPVVJDRV9HUk9VUCA9IDgzCi1NQ0FTVF9CTE9DS19TT1VSQ0UgPSA4NAotTUNBU1RfVU5CTE9DS19TT1VSQ0UgPSA4NQotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01JTl9NRU1CRVJTSElQUyA9IDMxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSA0MDk1Ci1JUF9NQVhfU09VUkNFX0ZJTFRFUiA9IDEwMjQKLU1DQVNUX0lOQ0xVREUgPSAxCi1NQ0FTVF9FWENMVURFID0gMgotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9ICgtMTY3MTE2ODApCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gKC0xNjY0NjE0NCkKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9ICgtNjU1MzYpCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfRU1CRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9NU0ZJTFRFUiA9IDc0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiBiL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM5NjE2N2QuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1ldmFsICRQWVRIT05fRk9SX0JVSUxEIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAiJyh1X2xvbmcpJyIgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvQ0RST00ucHkgYi9MaWIvcGxhdC1saW51eC9DRFJPTS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0MDkzNi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9DRFJPTS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2xpbnV4L2Nkcm9tLmgKLQotQ0RST01QQVVTRSA9IDB4NTMwMQotQ0RST01SRVNVTUUgPSAweDUzMDIKLUNEUk9NUExBWU1TRiA9IDB4NTMwMwotQ0RST01QTEFZVFJLSU5EID0gMHg1MzA0Ci1DRFJPTVJFQURUT0NIRFIgPSAweDUzMDUKLUNEUk9NUkVBRFRPQ0VOVFJZID0gMHg1MzA2Ci1DRFJPTVNUT1AgPSAweDUzMDcKLUNEUk9NU1RBUlQgPSAweDUzMDgKLUNEUk9NRUpFQ1QgPSAweDUzMDkKLUNEUk9NVk9MQ1RSTCA9IDB4NTMwYQotQ0RST01TVUJDSE5MID0gMHg1MzBiCi1DRFJPTVJFQURNT0RFMiA9IDB4NTMwYwotQ0RST01SRUFETU9ERTEgPSAweDUzMGQKLUNEUk9NUkVBREFVRElPID0gMHg1MzBlCi1DRFJPTUVKRUNUX1NXID0gMHg1MzBmCi1DRFJPTU1VTFRJU0VTU0lPTiA9IDB4NTMxMAotQ0RST01fR0VUX01DTiA9IDB4NTMxMQotQ0RST01fR0VUX1VQQyA9IENEUk9NX0dFVF9NQ04KLUNEUk9NUkVTRVQgPSAweDUzMTIKLUNEUk9NVk9MUkVBRCA9IDB4NTMxMwotQ0RST01SRUFEUkFXID0gMHg1MzE0Ci1DRFJPTVJFQURDT09LRUQgPSAweDUzMTUKLUNEUk9NU0VFSyA9IDB4NTMxNgotQ0RST01QTEFZQkxLID0gMHg1MzE3Ci1DRFJPTVJFQURBTEwgPSAweDUzMTgKLUNEUk9NR0VUU1BJTkRPV04gPSAweDUzMWQKLUNEUk9NU0VUU1BJTkRPV04gPSAweDUzMWUKLUNEUk9NQ0xPU0VUUkFZID0gMHg1MzE5Ci1DRFJPTV9TRVRfT1BUSU9OUyA9IDB4NTMyMAotQ0RST01fQ0xFQVJfT1BUSU9OUyA9IDB4NTMyMQotQ0RST01fU0VMRUNUX1NQRUVEID0gMHg1MzIyCi1DRFJPTV9TRUxFQ1RfRElTQyA9IDB4NTMyMwotQ0RST01fTUVESUFfQ0hBTkdFRCA9IDB4NTMyNQotQ0RST01fRFJJVkVfU1RBVFVTID0gMHg1MzI2Ci1DRFJPTV9ESVNDX1NUQVRVUyA9IDB4NTMyNwotQ0RST01fQ0hBTkdFUl9OU0xPVFMgPSAweDUzMjgKLUNEUk9NX0xPQ0tET09SID0gMHg1MzI5Ci1DRFJPTV9ERUJVRyA9IDB4NTMzMAotQ0RST01fR0VUX0NBUEFCSUxJVFkgPSAweDUzMzEKLUNEUk9NQVVESU9CVUZTSVogPSAweDUzODIKLURWRF9SRUFEX1NUUlVDVCA9IDB4NTM5MAotRFZEX1dSSVRFX1NUUlVDVCA9IDB4NTM5MQotRFZEX0FVVEggPSAweDUzOTIKLUNEUk9NX1NFTkRfUEFDS0VUID0gMHg1MzkzCi1DRFJPTV9ORVhUX1dSSVRBQkxFID0gMHg1Mzk0Ci1DRFJPTV9MQVNUX1dSSVRURU4gPSAweDUzOTUKLUNEUk9NX1BBQ0tFVF9TSVpFID0gMTIKLUNHQ19EQVRBX1VOS05PV04gPSAwCi1DR0NfREFUQV9XUklURSA9IDEKLUNHQ19EQVRBX1JFQUQgPSAyCi1DR0NfREFUQV9OT05FID0gMwotQ0RfTUlOUyA9IDc0Ci1DRF9TRUNTID0gNjAKLUNEX0ZSQU1FUyA9IDc1Ci1DRF9TWU5DX1NJWkUgPSAxMgotQ0RfTVNGX09GRlNFVCA9IDE1MAotQ0RfQ0hVTktfU0laRSA9IDI0Ci1DRF9OVU1fT0ZfQ0hVTktTID0gOTgKLUNEX0ZSQU1FU0laRV9TVUIgPSA5NgotQ0RfSEVBRF9TSVpFID0gNAotQ0RfU1VCSEVBRF9TSVpFID0gOAotQ0RfRURDX1NJWkUgPSA0Ci1DRF9aRVJPX1NJWkUgPSA4Ci1DRF9FQ0NfU0laRSA9IDI3NgotQ0RfRlJBTUVTSVpFID0gMjA0OAotQ0RfRlJBTUVTSVpFX1JBVyA9IDIzNTIKLUNEX0ZSQU1FU0laRV9SQVdFUiA9IDI2NDYKLUNEX0ZSQU1FU0laRV9SQVcxID0gKENEX0ZSQU1FU0laRV9SQVctQ0RfU1lOQ19TSVpFKQotQ0RfRlJBTUVTSVpFX1JBVzAgPSAoQ0RfRlJBTUVTSVpFX1JBVy1DRF9TWU5DX1NJWkUtQ0RfSEVBRF9TSVpFKQotQ0RfWEFfSEVBRCA9IChDRF9IRUFEX1NJWkUrQ0RfU1VCSEVBRF9TSVpFKQotQ0RfWEFfVEFJTCA9IChDRF9FRENfU0laRStDRF9FQ0NfU0laRSkKLUNEX1hBX1NZTkNfSEVBRCA9IChDRF9TWU5DX1NJWkUrQ0RfWEFfSEVBRCkKLUNEUk9NX0xCQSA9IDB4MDEKLUNEUk9NX01TRiA9IDB4MDIKLUNEUk9NX0RBVEFfVFJBQ0sgPSAweDA0Ci1DRFJPTV9MRUFET1VUID0gMHhBQQotQ0RST01fQVVESU9fSU5WQUxJRCA9IDB4MDAKLUNEUk9NX0FVRElPX1BMQVkgPSAweDExCi1DRFJPTV9BVURJT19QQVVTRUQgPSAweDEyCi1DRFJPTV9BVURJT19DT01QTEVURUQgPSAweDEzCi1DRFJPTV9BVURJT19FUlJPUiA9IDB4MTQKLUNEUk9NX0FVRElPX05PX1NUQVRVUyA9IDB4MTUKLUNEQ19DTE9TRV9UUkFZID0gMHgxCi1DRENfT1BFTl9UUkFZID0gMHgyCi1DRENfTE9DSyA9IDB4NAotQ0RDX1NFTEVDVF9TUEVFRCA9IDB4OAotQ0RDX1NFTEVDVF9ESVNDID0gMHgxMAotQ0RDX01VTFRJX1NFU1NJT04gPSAweDIwCi1DRENfTUNOID0gMHg0MAotQ0RDX01FRElBX0NIQU5HRUQgPSAweDgwCi1DRENfUExBWV9BVURJTyA9IDB4MTAwCi1DRENfUkVTRVQgPSAweDIwMAotQ0RDX0lPQ1RMUyA9IDB4NDAwCi1DRENfRFJJVkVfU1RBVFVTID0gMHg4MDAKLUNEQ19HRU5FUklDX1BBQ0tFVCA9IDB4MTAwMAotQ0RDX0NEX1IgPSAweDIwMDAKLUNEQ19DRF9SVyA9IDB4NDAwMAotQ0RDX0RWRCA9IDB4ODAwMAotQ0RDX0RWRF9SID0gMHgxMDAwMAotQ0RDX0RWRF9SQU0gPSAweDIwMDAwCi1DRFNfTk9fSU5GTyA9IDAKLUNEU19OT19ESVNDID0gMQotQ0RTX1RSQVlfT1BFTiA9IDIKLUNEU19EUklWRV9OT1RfUkVBRFkgPSAzCi1DRFNfRElTQ19PSyA9IDQKLUNEU19BVURJTyA9IDEwMAotQ0RTX0RBVEFfMSA9IDEwMQotQ0RTX0RBVEFfMiA9IDEwMgotQ0RTX1hBXzJfMSA9IDEwMwotQ0RTX1hBXzJfMiA9IDEwNAotQ0RTX01JWEVEID0gMTA1Ci1DRE9fQVVUT19DTE9TRSA9IDB4MQotQ0RPX0FVVE9fRUpFQ1QgPSAweDIKLUNET19VU0VfRkZMQUdTID0gMHg0Ci1DRE9fTE9DSyA9IDB4OAotQ0RPX0NIRUNLX1RZUEUgPSAweDEwCi1DRF9QQVJUX01BWCA9IDY0Ci1DRF9QQVJUX01BU0sgPSAoQ0RfUEFSVF9NQVggLSAxKQotR1BDTURfQkxBTksgPSAweGExCi1HUENNRF9DTE9TRV9UUkFDSyA9IDB4NWIKLUdQQ01EX0ZMVVNIX0NBQ0hFID0gMHgzNQotR1BDTURfRk9STUFUX1VOSVQgPSAweDA0Ci1HUENNRF9HRVRfQ09ORklHVVJBVElPTiA9IDB4NDYKLUdQQ01EX0dFVF9FVkVOVF9TVEFUVVNfTk9USUZJQ0FUSU9OID0gMHg0YQotR1BDTURfR0VUX1BFUkZPUk1BTkNFID0gMHhhYwotR1BDTURfSU5RVUlSWSA9IDB4MTIKLUdQQ01EX0xPQURfVU5MT0FEID0gMHhhNgotR1BDTURfTUVDSEFOSVNNX1NUQVRVUyA9IDB4YmQKLUdQQ01EX01PREVfU0VMRUNUXzEwID0gMHg1NQotR1BDTURfTU9ERV9TRU5TRV8xMCA9IDB4NWEKLUdQQ01EX1BBVVNFX1JFU1VNRSA9IDB4NGIKLUdQQ01EX1BMQVlfQVVESU9fMTAgPSAweDQ1Ci1HUENNRF9QTEFZX0FVRElPX01TRiA9IDB4NDcKLUdQQ01EX1BMQVlfQVVESU9fVEkgPSAweDQ4Ci1HUENNRF9QTEFZX0NEID0gMHhiYwotR1BDTURfUFJFVkVOVF9BTExPV19NRURJVU1fUkVNT1ZBTCA9IDB4MWUKLUdQQ01EX1JFQURfMTAgPSAweDI4Ci1HUENNRF9SRUFEXzEyID0gMHhhOAotR1BDTURfUkVBRF9DRFZEX0NBUEFDSVRZID0gMHgyNQotR1BDTURfUkVBRF9DRCA9IDB4YmUKLUdQQ01EX1JFQURfQ0RfTVNGID0gMHhiOQotR1BDTURfUkVBRF9ESVNDX0lORk8gPSAweDUxCi1HUENNRF9SRUFEX0RWRF9TVFJVQ1RVUkUgPSAweGFkCi1HUENNRF9SRUFEX0ZPUk1BVF9DQVBBQ0lUSUVTID0gMHgyMwotR1BDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1HUENNRF9SRUFEX1RSQUNLX1JaT05FX0lORk8gPSAweDUyCi1HUENNRF9SRUFEX1NVQkNIQU5ORUwgPSAweDQyCi1HUENNRF9SRUFEX1RPQ19QTUFfQVRJUCA9IDB4NDMKLUdQQ01EX1JFUEFJUl9SWk9ORV9UUkFDSyA9IDB4NTgKLUdQQ01EX1JFUE9SVF9LRVkgPSAweGE0Ci1HUENNRF9SRVFVRVNUX1NFTlNFID0gMHgwMwotR1BDTURfUkVTRVJWRV9SWk9ORV9UUkFDSyA9IDB4NTMKLUdQQ01EX1NDQU4gPSAweGJhCi1HUENNRF9TRUVLID0gMHgyYgotR1BDTURfU0VORF9EVkRfU1RSVUNUVVJFID0gMHhhZAotR1BDTURfU0VORF9FVkVOVCA9IDB4YTIKLUdQQ01EX1NFTkRfS0VZID0gMHhhMwotR1BDTURfU0VORF9PUEMgPSAweDU0Ci1HUENNRF9TRVRfUkVBRF9BSEVBRCA9IDB4YTcKLUdQQ01EX1NFVF9TVFJFQU1JTkcgPSAweGI2Ci1HUENNRF9TVEFSVF9TVE9QX1VOSVQgPSAweDFiCi1HUENNRF9TVE9QX1BMQVlfU0NBTiA9IDB4NGUKLUdQQ01EX1RFU1RfVU5JVF9SRUFEWSA9IDB4MDAKLUdQQ01EX1ZFUklGWV8xMCA9IDB4MmYKLUdQQ01EX1dSSVRFXzEwID0gMHgyYQotR1BDTURfV1JJVEVfQU5EX1ZFUklGWV8xMCA9IDB4MmUKLUdQQ01EX1NFVF9TUEVFRCA9IDB4YmIKLUdQQ01EX1BMQVlBVURJT19USSA9IDB4NDgKLUdQQ01EX0dFVF9NRURJQV9TVEFUVVMgPSAweGRhCi1HUE1PREVfUl9XX0VSUk9SX1BBR0UgPSAweDAxCi1HUE1PREVfV1JJVEVfUEFSTVNfUEFHRSA9IDB4MDUKLUdQTU9ERV9BVURJT19DVExfUEFHRSA9IDB4MGUKLUdQTU9ERV9QT1dFUl9QQUdFID0gMHgxYQotR1BNT0RFX0ZBVUxUX0ZBSUxfUEFHRSA9IDB4MWMKLUdQTU9ERV9UT19QUk9URUNUX1BBR0UgPSAweDFkCi1HUE1PREVfQ0FQQUJJTElUSUVTX1BBR0UgPSAweDJhCi1HUE1PREVfQUxMX1BBR0VTID0gMHgzZgotR1BNT0RFX0NEUk9NX1BBR0UgPSAweDBkCi1EVkRfU1RSVUNUX1BIWVNJQ0FMID0gMHgwMAotRFZEX1NUUlVDVF9DT1BZUklHSFQgPSAweDAxCi1EVkRfU1RSVUNUX0RJU0NLRVkgPSAweDAyCi1EVkRfU1RSVUNUX0JDQSA9IDB4MDMKLURWRF9TVFJVQ1RfTUFOVUZBQ1QgPSAweDA0Ci1EVkRfTEFZRVJTID0gNAotRFZEX0xVX1NFTkRfQUdJRCA9IDAKLURWRF9IT1NUX1NFTkRfQ0hBTExFTkdFID0gMQotRFZEX0xVX1NFTkRfS0VZMSA9IDIKLURWRF9MVV9TRU5EX0NIQUxMRU5HRSA9IDMKLURWRF9IT1NUX1NFTkRfS0VZMiA9IDQKLURWRF9BVVRIX0VTVEFCTElTSEVEID0gNQotRFZEX0FVVEhfRkFJTFVSRSA9IDYKLURWRF9MVV9TRU5EX1RJVExFX0tFWSA9IDcKLURWRF9MVV9TRU5EX0FTRiA9IDgKLURWRF9JTlZBTElEQVRFX0FHSUQgPSA5Ci1EVkRfTFVfU0VORF9SUENfU1RBVEUgPSAxMAotRFZEX0hPU1RfU0VORF9SUENfU1RBVEUgPSAxMQotRFZEX0NQTV9OT19DT1BZUklHSFQgPSAwCi1EVkRfQ1BNX0NPUFlSSUdIVEVEID0gMQotRFZEX0NQX1NFQ19OT05FID0gMAotRFZEX0NQX1NFQ19FWElTVCA9IDEKLURWRF9DR01TX1VOUkVTVFJJQ1RFRCA9IDAKLURWRF9DR01TX1NJTkdMRSA9IDIKLURWRF9DR01TX1JFU1RSSUNURUQgPSAzCi0KLUNEUk9NX01BWF9TTE9UUyA9IDI1NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQxMGFjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9ETEZDTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaAotX0RMRkNOX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9kbGZjbi5oCi1SVExEX0xBWlkgPSAweDAwMDAxCi1SVExEX05PVyA9IDB4MDAwMDIKLVJUTERfQklORElOR19NQVNLID0gMHgzCi1SVExEX05PTE9BRCA9IDB4MDAwMDQKLVJUTERfR0xPQkFMID0gMHgwMDEwMAotUlRMRF9MT0NBTCA9IDAKLVJUTERfTk9ERUxFVEUgPSAweDAxMDAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9JTi5weSBiL0xpYi9wbGF0LWxpbnV4L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2QzMDAyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjE1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1fTkVUSU5FVF9JTl9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fU1RESU5UX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3djaGFyLmgKLV9CSVRTX1dDSEFSX0ggPSAxCi1fX1dDSEFSX01JTiA9ICgtMjE0NzQ4MzY0NyAtIDEpCi1fX1dDSEFSX01BWCA9ICgyMTQ3NDgzNjQ3KQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy93b3Jkc2l6ZS5oCi1fX1dPUkRTSVpFID0gMzIKLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIF9fVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBfX1VJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotSU5UOF9NSU4gPSAoLTEyOCkKLUlOVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVDhfTUFYID0gKDEyNykKLUlOVDE2X01BWCA9ICgzMjc2NykKLUlOVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlQ4X01BWCA9ICgyNTUpCi1VSU5UMTZfTUFYID0gKDY1NTM1KQotVUlOVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVF9MRUFTVDhfTUlOID0gKC0xMjgpCi1JTlRfTEVBU1QxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlRfTEVBU1QzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9MRUFTVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRfTEVBU1Q4X01BWCA9ICgxMjcpCi1JTlRfTEVBU1QxNl9NQVggPSAoMzI3NjcpCi1JTlRfTEVBU1QzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9MRUFTVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UX0xFQVNUOF9NQVggPSAoMjU1KQotVUlOVF9MRUFTVDE2X01BWCA9ICg2NTUzNSkKLVVJTlRfTEVBU1Q2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRfRkFTVDhfTUlOID0gKC0xMjgpCi1JTlRfRkFTVDE2X01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UX0ZBU1QzMl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVF9GQVNUMTZfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfRkFTVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0ZBU1Q2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UX0ZBU1Q4X01BWCA9ICgxMjcpCi1JTlRfRkFTVDE2X01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UX0ZBU1QzMl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVF9GQVNUMTZfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfRkFTVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0ZBU1Q2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVF9GQVNUOF9NQVggPSAoMjU1KQotVUlOVF9GQVNUNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UUFRSX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UUFRSX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UUFRSX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UUFRSX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UTUFYX01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRNQVhfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRNQVhfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotUFRSRElGRl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLVBUUkRJRkZfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1QVFJESUZGX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotUFRSRElGRl9NQVggPSAoMjE0NzQ4MzY0NykKLVNJR19BVE9NSUNfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1TSUdfQVRPTUlDX01BWCA9ICgyMTQ3NDgzNjQ3KQotV0NIQVJfTUlOID0gX19XQ0hBUl9NSU4KLVdDSEFSX01BWCA9IF9fV0NIQVJfTUFYCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UMTZfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDMyX0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdHlwZXMuaAotX0JJVFNfVFlQRVNfSCA9IDEKLV9fRkRfU0VUU0laRSA9IDEwMjQKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcHRocmVhZHR5cGVzLmgKLV9CSVRTX1BUSFJFQURUWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zY2hlZC5oCi1TQ0hFRF9PVEhFUiA9IDAKLVNDSEVEX0ZJRk8gPSAxCi1TQ0hFRF9SUiA9IDIKLUNTSUdOQUwgPSAweDAwMDAwMGZmCi1DTE9ORV9WTSA9IDB4MDAwMDAxMDAKLUNMT05FX0ZTID0gMHgwMDAwMDIwMAotQ0xPTkVfRklMRVMgPSAweDAwMDAwNDAwCi1DTE9ORV9TSUdIQU5EID0gMHgwMDAwMDgwMAotQ0xPTkVfUElEID0gMHgwMDAwMTAwMAotQ0xPTkVfUFRSQUNFID0gMHgwMDAwMjAwMAotQ0xPTkVfVkZPUksgPSAweDAwMDA0MDAwCi1fX2RlZmluZWRfc2NoZWRwYXJhbSA9IDEKLWRlZiBJTl9DTEFTU0EoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0FfTkVUKQotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQl9ORVQpCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQ19ORVQpCi1kZWYgSU5fQ0xBU1NEKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLWRlZiBJTl9NVUxUSUNBU1QoYSk6IHJldHVybiBJTl9DTEFTU0QoYSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC01MzY4NzA5MTIpKQotCi1kZWYgSU5fQkFEQ0xBU1MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIGxpbWl0cy5oCi1fTElCQ19MSU1JVFNfSF8gPSAxCi1NQl9MRU5fTUFYID0gMTYKLV9MSU1JVFNfSCA9IDEKLUNIQVJfQklUID0gOAotU0NIQVJfTUlOID0gKC0xMjgpCi1TQ0hBUl9NQVggPSAxMjcKLVVDSEFSX01BWCA9IDI1NQotQ0hBUl9NSU4gPSAwCi1DSEFSX01BWCA9IFVDSEFSX01BWAotQ0hBUl9NSU4gPSBTQ0hBUl9NSU4KLUNIQVJfTUFYID0gU0NIQVJfTUFYCi1TSFJUX01JTiA9ICgtMzI3NjgpCi1TSFJUX01BWCA9IDMyNzY3Ci1VU0hSVF9NQVggPSA2NTUzNQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUFYID0gOTIyMzM3MjAzNjg1NDc3NTgwNwotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtTE9OR19NQVggLSAxKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDFfbGltLmgKLV9CSVRTX1BPU0lYMV9MSU1fSCA9IDEKLV9QT1NJWF9BSU9fTElTVElPX01BWCA9IDIKLV9QT1NJWF9BSU9fTUFYID0gMQotX1BPU0lYX0FSR19NQVggPSA0MDk2Ci1fUE9TSVhfQ0hJTERfTUFYID0gNgotX1BPU0lYX0RFTEFZVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MSU5LX01BWCA9IDgKLV9QT1NJWF9NQVhfQ0FOT04gPSAyNTUKLV9QT1NJWF9NQVhfSU5QVVQgPSAyNTUKLV9QT1NJWF9NUV9PUEVOX01BWCA9IDgKLV9QT1NJWF9NUV9QUklPX01BWCA9IDMyCi1fUE9TSVhfTkdST1VQU19NQVggPSAwCi1fUE9TSVhfT1BFTl9NQVggPSAxNgotX1BPU0lYX0ZEX1NFVFNJWkUgPSBfUE9TSVhfT1BFTl9NQVgKLV9QT1NJWF9OQU1FX01BWCA9IDE0Ci1fUE9TSVhfUEFUSF9NQVggPSAyNTYKLV9QT1NJWF9QSVBFX0JVRiA9IDUxMgotX1BPU0lYX1JUU0lHX01BWCA9IDgKLV9QT1NJWF9TRU1fTlNFTVNfTUFYID0gMjU2Ci1fUE9TSVhfU0VNX1ZBTFVFX01BWCA9IDMyNzY3Ci1fUE9TSVhfU0lHUVVFVUVfTUFYID0gMzIKLV9QT1NJWF9TU0laRV9NQVggPSAzMjc2NwotX1BPU0lYX1NUUkVBTV9NQVggPSA4Ci1fUE9TSVhfVFpOQU1FX01BWCA9IDYKLV9QT1NJWF9RTElNSVQgPSAxCi1fUE9TSVhfSElXQVQgPSBfUE9TSVhfUElQRV9CVUYKLV9QT1NJWF9VSU9fTUFYSU9WID0gMTYKLV9QT1NJWF9UVFlfTkFNRV9NQVggPSA5Ci1fUE9TSVhfVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MT0dJTl9OQU1FX01BWCA9IDkKLV9QT1NJWF9DTE9DS1JFU19NSU4gPSAyMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9sb2NhbF9saW0uaAotCi0jIEluY2x1ZGVkIGZyb20gbGludXgvbGltaXRzLmgKLU5SX09QRU4gPSAxMDI0Ci1OR1JPVVBTX01BWCA9IDMyCi1BUkdfTUFYID0gMTMxMDcyCi1DSElMRF9NQVggPSA5OTkKLU9QRU5fTUFYID0gMjU2Ci1MSU5LX01BWCA9IDEyNwotTUFYX0NBTk9OID0gMjU1Ci1NQVhfSU5QVVQgPSAyNTUKLU5BTUVfTUFYID0gMjU1Ci1QQVRIX01BWCA9IDQwOTYKLVBJUEVfQlVGID0gNDA5NgotUlRTSUdfTUFYID0gMzIKLV9QT1NJWF9USFJFQURfS0VZU19NQVggPSAxMjgKLVBUSFJFQURfS0VZU19NQVggPSAxMDI0Ci1fUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDQKLVBUSFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKLV9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggPSA2NAotUFRIUkVBRF9USFJFQURTX01BWCA9IDEwMjQKLUFJT19QUklPX0RFTFRBX01BWCA9IDIwCi1QVEhSRUFEX1NUQUNLX01JTiA9IDE2Mzg0Ci1USU1FUl9NQVggPSAyNTYKLVNTSVpFX01BWCA9IExPTkdfTUFYCi1OR1JPVVBTX01BWCA9IF9QT1NJWF9OR1JPVVBTX01BWAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDJfbGltLmgKLV9CSVRTX1BPU0lYMl9MSU1fSCA9IDEKLV9QT1NJWDJfQkNfQkFTRV9NQVggPSA5OQotX1BPU0lYMl9CQ19ESU1fTUFYID0gMjA0OAotX1BPU0lYMl9CQ19TQ0FMRV9NQVggPSA5OQotX1BPU0lYMl9CQ19TVFJJTkdfTUFYID0gMTAwMAotX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYID0gMgotX1BPU0lYMl9FWFBSX05FU1RfTUFYID0gMzIKLV9QT1NJWDJfTElORV9NQVggPSAyMDQ4Ci1fUE9TSVgyX1JFX0RVUF9NQVggPSAyNTUKLV9QT1NJWDJfQ0hBUkNMQVNTX05BTUVfTUFYID0gMTQKLUJDX0JBU0VfTUFYID0gX1BPU0lYMl9CQ19CQVNFX01BWAotQkNfRElNX01BWCA9IF9QT1NJWDJfQkNfRElNX01BWAotQkNfU0NBTEVfTUFYID0gX1BPU0lYMl9CQ19TQ0FMRV9NQVgKLUJDX1NUUklOR19NQVggPSBfUE9TSVgyX0JDX1NUUklOR19NQVgKLUNPTExfV0VJR0hUU19NQVggPSAyNTUKLUVYUFJfTkVTVF9NQVggPSBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKLUxJTkVfTUFYID0gX1BPU0lYMl9MSU5FX01BWAotQ0hBUkNMQVNTX05BTUVfTUFYID0gMjA0OAotUkVfRFVQX01BWCA9ICgweDdmZmYpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3hvcGVuX2xpbS5oCi1fWE9QRU5fTElNX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3N0ZGlvX2xpbS5oCi1MX3RtcG5hbSA9IDIwCi1UTVBfTUFYID0gMjM4MzI4Ci1GSUxFTkFNRV9NQVggPSA0MDk2Ci1MX2N0ZXJtaWQgPSA5Ci1MX2N1c2VyaWQgPSA5Ci1GT1BFTl9NQVggPSAxNgotSU9WX01BWCA9IDEwMjQKLV9YT1BFTl9JT1ZfTUFYID0gX1BPU0lYX1VJT19NQVhJT1YKLU5MX0FSR01BWCA9IF9QT1NJWF9BUkdfTUFYCi1OTF9MQU5HTUFYID0gX1BPU0lYMl9MSU5FX01BWAotTkxfTVNHTUFYID0gSU5UX01BWAotTkxfTk1BWCA9IElOVF9NQVgKLU5MX1NFVE1BWCA9IElOVF9NQVgKLU5MX1RFWFRNQVggPSBJTlRfTUFYCi1OWkVSTyA9IDIwCi1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDMyCi1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QRl9VTlNQRUMgPSAwCi1QRl9MT0NBTCA9IDEKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfRklMRSA9IFBGX0xPQ0FMCi1QRl9JTkVUID0gMgotUEZfQVgyNSA9IDMKLVBGX0lQWCA9IDQKLVBGX0FQUExFVEFMSyA9IDUKLVBGX05FVFJPTSA9IDYKLVBGX0JSSURHRSA9IDcKLVBGX0FUTVBWQyA9IDgKLVBGX1gyNSA9IDkKLVBGX0lORVQ2ID0gMTAKLVBGX1JPU0UgPSAxMQotUEZfREVDbmV0ID0gMTIKLVBGX05FVEJFVUkgPSAxMwotUEZfU0VDVVJJVFkgPSAxNAotUEZfS0VZID0gMTUKLVBGX05FVExJTksgPSAxNgotUEZfUk9VVEUgPSBQRl9ORVRMSU5LCi1QRl9QQUNLRVQgPSAxNwotUEZfQVNIID0gMTgKLVBGX0VDT05FVCA9IDE5Ci1QRl9BVE1TVkMgPSAyMAotUEZfU05BID0gMjIKLVBGX0lSREEgPSAyMwotUEZfUFBQT1ggPSAyNAotUEZfV0FOUElQRSA9IDI1Ci1QRl9CTFVFVE9PVEggPSAzMQotUEZfTUFYID0gMzIKLUFGX1VOU1BFQyA9IFBGX1VOU1BFQwotQUZfTE9DQUwgPSBQRl9MT0NBTAotQUZfVU5JWCA9IFBGX1VOSVgKLUFGX0ZJTEUgPSBQRl9GSUxFCi1BRl9JTkVUID0gUEZfSU5FVAotQUZfQVgyNSA9IFBGX0FYMjUKLUFGX0lQWCA9IFBGX0lQWAotQUZfQVBQTEVUQUxLID0gUEZfQVBQTEVUQUxLCi1BRl9ORVRST00gPSBQRl9ORVRST00KLUFGX0JSSURHRSA9IFBGX0JSSURHRQotQUZfQVRNUFZDID0gUEZfQVRNUFZDCi1BRl9YMjUgPSBQRl9YMjUKLUFGX0lORVQ2ID0gUEZfSU5FVDYKLUFGX1JPU0UgPSBQRl9ST1NFCi1BRl9ERUNuZXQgPSBQRl9ERUNuZXQKLUFGX05FVEJFVUkgPSBQRl9ORVRCRVVJCi1BRl9TRUNVUklUWSA9IFBGX1NFQ1VSSVRZCi1BRl9LRVkgPSBQRl9LRVkKLUFGX05FVExJTksgPSBQRl9ORVRMSU5LCi1BRl9ST1VURSA9IFBGX1JPVVRFCi1BRl9QQUNLRVQgPSBQRl9QQUNLRVQKLUFGX0FTSCA9IFBGX0FTSAotQUZfRUNPTkVUID0gUEZfRUNPTkVUCi1BRl9BVE1TVkMgPSBQRl9BVE1TVkMKLUFGX1NOQSA9IFBGX1NOQQotQUZfSVJEQSA9IFBGX0lSREEKLUFGX1BQUE9YID0gUEZfUFBQT1gKLUFGX1dBTlBJUEUgPSBQRl9XQU5QSVBFCi1BRl9CTFVFVE9PVEggPSBQRl9CTFVFVE9PVEgKLUFGX01BWCA9IFBGX01BWAotU09MX1JBVyA9IDI1NQotU09MX0RFQ05FVCA9IDI2MQotU09MX1gyNSA9IDI2MgotU09MX1BBQ0tFVCA9IDI2MwotU09MX0FUTSA9IDI2NAotU09MX0FBTCA9IDI2NQotU09MX0lSREEgPSAyNjYKLVNPTUFYQ09OTiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zb2NrYWRkci5oCi1fQklUU19TT0NLQUREUl9IID0gMQotZGVmIF9fU09DS0FERFJfQ09NTU9OKHNhX3ByZWZpeCk6IHJldHVybiBcCi0KLV9TU19TSVpFID0gMTI4Ci1kZWYgQ01TR19GSVJTVEhEUihtaGRyKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gYXNtL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBhc20vc29ja2lvcy5oCi1GSU9TRVRPV04gPSAweDg5MDEKLVNJT0NTUEdSUCA9IDB4ODkwMgotRklPR0VUT1dOID0gMHg4OTAzCi1TSU9DR1BHUlAgPSAweDg5MDQKLVNJT0NBVE1BUksgPSAweDg5MDUKLVNJT0NHU1RBTVAgPSAweDg5MDYKLVNPTF9TT0NLRVQgPSAxCi1TT19ERUJVRyA9IDEKLVNPX1JFVVNFQUREUiA9IDIKLVNPX1RZUEUgPSAzCi1TT19FUlJPUiA9IDQKLVNPX0RPTlRST1VURSA9IDUKLVNPX0JST0FEQ0FTVCA9IDYKLVNPX1NOREJVRiA9IDcKLVNPX1JDVkJVRiA9IDgKLVNPX0tFRVBBTElWRSA9IDkKLVNPX09PQklOTElORSA9IDEwCi1TT19OT19DSEVDSyA9IDExCi1TT19QUklPUklUWSA9IDEyCi1TT19MSU5HRVIgPSAxMwotU09fQlNEQ09NUEFUID0gMTQKLVNPX1BBU1NDUkVEID0gMTYKLVNPX1BFRVJDUkVEID0gMTcKLVNPX1JDVkxPV0FUID0gMTgKLVNPX1NORExPV0FUID0gMTkKLVNPX1JDVlRJTUVPID0gMjAKLVNPX1NORFRJTUVPID0gMjEKLVNPX1NFQ1VSSVRZX0FVVEhFTlRJQ0FUSU9OID0gMjIKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fVFJBTlNQT1JUID0gMjMKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fTkVUV09SSyA9IDI0Ci1TT19CSU5EVE9ERVZJQ0UgPSAyNQotU09fQVRUQUNIX0ZJTFRFUiA9IDI2Ci1TT19ERVRBQ0hfRklMVEVSID0gMjcKLVNPX1BFRVJOQU1FID0gMjgKLVNPX1RJTUVTVEFNUCA9IDI5Ci1TQ01fVElNRVNUQU1QID0gU09fVElNRVNUQU1QCi1TT19BQ0NFUFRDT05OID0gMzAKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPQ0tfUEFDS0VUID0gMTAKLVNPQ0tfTUFYID0gKFNPQ0tfUEFDS0VUKzEpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2luLmgKLUlQX1RPUyA9IDEKLUlQX1RUTCA9IDIKLUlQX0hEUklOQ0wgPSAzCi1JUF9PUFRJT05TID0gNAotSVBfUk9VVEVSX0FMRVJUID0gNQotSVBfUkVDVk9QVFMgPSA2Ci1JUF9SRVRPUFRTID0gNwotSVBfUEtUSU5GTyA9IDgKLUlQX1BLVE9QVElPTlMgPSA5Ci1JUF9QTVRVRElTQyA9IDEwCi1JUF9NVFVfRElTQ09WRVIgPSAxMAotSVBfUkVDVkVSUiA9IDExCi1JUF9SRUNWVFRMID0gMTIKLUlQX1JFQ1ZUT1MgPSAxMwotSVBfTVVMVElDQVNUX0lGID0gMzIKLUlQX01VTFRJQ0FTVF9UVEwgPSAzMwotSVBfTVVMVElDQVNUX0xPT1AgPSAzNAotSVBfQUREX01FTUJFUlNISVAgPSAzNQotSVBfRFJPUF9NRU1CRVJTSElQID0gMzYKLUlQX1JFQ1ZSRVRPUFRTID0gSVBfUkVUT1BUUwotSVBfUE1UVURJU0NfRE9OVCA9IDAKLUlQX1BNVFVESVNDX1dBTlQgPSAxCi1JUF9QTVRVRElTQ19ETyA9IDIKLVNPTF9JUCA9IDAKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBWNl9BRERSRk9STSA9IDEKLUlQVjZfUEtUSU5GTyA9IDIKLUlQVjZfSE9QT1BUUyA9IDMKLUlQVjZfRFNUT1BUUyA9IDQKLUlQVjZfUlRIRFIgPSA1Ci1JUFY2X1BLVE9QVElPTlMgPSA2Ci1JUFY2X0NIRUNLU1VNID0gNwotSVBWNl9IT1BMSU1JVCA9IDgKLUlQVjZfTkVYVEhPUCA9IDkKLUlQVjZfQVVUSEhEUiA9IDEwCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDE2Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDE3Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTgKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxOQotSVBWNl9KT0lOX0dST1VQID0gMjAKLUlQVjZfTEVBVkVfR1JPVVAgPSAyMQotSVBWNl9ST1VURVJfQUxFUlQgPSAyMgotSVBWNl9NVFVfRElTQ09WRVIgPSAyMwotSVBWNl9NVFUgPSAyNAotSVBWNl9SRUNWRVJSID0gMjUKLUlQVjZfUlhIT1BPUFRTID0gSVBWNl9IT1BPUFRTCi1JUFY2X1JYRFNUT1BUUyA9IElQVjZfRFNUT1BUUwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IElQVjZfSk9JTl9HUk9VUAotSVBWNl9EUk9QX01FTUJFUlNISVAgPSBJUFY2X0xFQVZFX0dST1VQCi1JUFY2X1BNVFVESVNDX0RPTlQgPSAwCi1JUFY2X1BNVFVESVNDX1dBTlQgPSAxCi1JUFY2X1BNVFVESVNDX0RPID0gMgotU09MX0lQVjYgPSA0MQotU09MX0lDTVBWNiA9IDU4Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIGVuZGlhbi5oCi1fRU5ESUFOX0ggPSAxCi1fX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fX0JJR19FTkRJQU4gPSA0MzIxCi1fX1BEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2VuZGlhbi5oCi1fX0JZVEVfT1JERVIgPSBfX0xJVFRMRV9FTkRJQU4KLV9fRkxPQVRfV09SRF9PUkRFUiA9IF9fQllURV9PUkRFUgotTElUVExFX0VORElBTiA9IF9fTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9fQklHX0VORElBTgotUERQX0VORElBTiA9IF9fUERQX0VORElBTgotQllURV9PUkRFUiA9IF9fQllURV9PUkRFUgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9ieXRlc3dhcC5oCi1fQklUU19CWVRFU1dBUF9IID0gMQotZGVmIF9fYnN3YXBfY29uc3RhbnRfMTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8xNih4KTogcmV0dXJuIF9fYnN3YXBfY29uc3RhbnRfMTYgKHgpCi0KLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gX19ic3dhcF9jb25zdGFudF8zMiAoeCkKLQotZGVmIF9fYnN3YXBfY29uc3RhbnRfNjQoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzY0KHgpOiByZXR1cm4gXAotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvVFlQRVMucHkgYi9MaWIvcGxhdC1saW51eC9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhMzI0Yi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9UWVBFUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oCi1fU1lTX1RZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90eXBlcy5oCi1fQklUU19UWVBFU19IID0gMQotX19GRF9TRVRTSVpFID0gMTAyNAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wdGhyZWFkdHlwZXMuaAotX0JJVFNfUFRIUkVBRFRZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NjaGVkLmgKLVNDSEVEX09USEVSID0gMAotU0NIRURfRklGTyA9IDEKLVNDSEVEX1JSID0gMgotQ1NJR05BTCA9IDB4MDAwMDAwZmYKLUNMT05FX1ZNID0gMHgwMDAwMDEwMAotQ0xPTkVfRlMgPSAweDAwMDAwMjAwCi1DTE9ORV9GSUxFUyA9IDB4MDAwMDA0MDAKLUNMT05FX1NJR0hBTkQgPSAweDAwMDAwODAwCi1DTE9ORV9QSUQgPSAweDAwMDAxMDAwCi1DTE9ORV9QVFJBQ0UgPSAweDAwMDAyMDAwCi1DTE9ORV9WRk9SSyA9IDB4MDAwMDQwMDAKLV9fZGVmaW5lZF9zY2hlZHBhcmFtID0gMQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1fVElNRV9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90aW1lLmgKLV9CSVRTX1RJTUVfSCA9IDEKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotQ0xPQ0tfUkVBTFRJTUUgPSAwCi1DTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgPSAyCi1DTE9DS19USFJFQURfQ1BVVElNRV9JRCA9IDMKLVRJTUVSX0FCU1RJTUUgPSAxCi1fU1RSVUNUX1RJTUVWQUwgPSAxCi1DTEtfVENLID0gQ0xPQ0tTX1BFUl9TRUMKLV9fY2xvY2tfdF9kZWZpbmVkID0gMQotX190aW1lX3RfZGVmaW5lZCA9IDEKLV9fY2xvY2tpZF90X2RlZmluZWQgPSAxCi1fX3RpbWVyX3RfZGVmaW5lZCA9IDEKLV9fdGltZXNwZWNfZGVmaW5lZCA9IDEKLWRlZiBfX2lzbGVhcCh5ZWFyKTogcmV0dXJuIFwKLQotX19CSVRfVFlQRVNfREVGSU5FRF9fID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZW5kaWFuLmgKLV9FTkRJQU5fSCA9IDEKLV9fTElUVExFX0VORElBTiA9IDEyMzQKLV9fQklHX0VORElBTiA9IDQzMjEKLV9fUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZW5kaWFuLmgKLV9fQllURV9PUkRFUiA9IF9fTElUVExFX0VORElBTgotX19GTE9BVF9XT1JEX09SREVSID0gX19CWVRFX09SREVSCi1MSVRUTEVfRU5ESUFOID0gX19MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX19CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX19QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX19CWVRFX09SREVSCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLV9TWVNfU0VMRUNUX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NlbGVjdC5oCi1kZWYgX19GRF9aRVJPKGZkc3ApOiByZXR1cm4gXAotCi1kZWYgX19GRF9aRVJPKHNldCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2lnc2V0LmgKLV9TSUdTRVRfSF90eXBlcyA9IDEKLV9TSUdTRVRfSF9mbnMgPSAxCi1kZWYgX19zaWdtYXNrKHNpZyk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2VtcHR5c2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2ZpbGxzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fc2lnaXNlbXB0eXNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19GREVMVChkKTogcmV0dXJuICgoZCkgLyBfX05GREJJVFMpCi0KLUZEX1NFVFNJWkUgPSBfX0ZEX1NFVFNJWkUKLWRlZiBGRF9aRVJPKGZkc2V0cCk6IHJldHVybiBfX0ZEX1pFUk8gKGZkc2V0cCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c21hY3Jvcy5oCi1fU1lTX1NZU01BQ1JPU19IID0gMQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKGludCkoKChkZXYpID4+IDgpICYgMHhmZikpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChpbnQpKChkZXYpICYgMHhmZikpCi0KLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKCgoZGV2KS5fX3ZhbFsxXSA+PiA4KSAmIDB4ZmYpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChkZXYpLl9fdmFsWzFdICYgMHhmZikKLQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKChkZXYpLl9fdmFsWzBdID4+IDgpICYgMHhmZikKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGRldikuX192YWxbMF0gJiAweGZmKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzc2OTUwZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWVgIGluCi1MaW51eCopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIExpbnV4IHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIC91c3IvaW5jbHVkZS9kbGZjbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5IGIvTGliL3BsYXQtbmV0YnNkMS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzUxZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBJUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotZGVmIF9fSVBBRERSKHgpOiByZXR1cm4gKCh1X2ludDMyX3QpKHgpKQotCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9NQVggPSAxMjgKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9SRUNWSUYgPSAyMAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fSURQICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfRk9SV1NSQ1JUID0gNQotSVBDVExfRElSRUNURURCQ0FTVCA9IDYKLUlQQ1RMX0FMTE9XU1JDUlQgPSA3Ci1JUENUTF9NQVhJRCA9IDgKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuIGIvTGliL3BsYXQtbmV0YnNkMS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXh0My9yZWdlbiBiL0xpYi9wbGF0LW5leHQzL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTAzNjEzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5leHQzL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLUlOQ0xVREU9Ii9OZXh0RGV2ZWxvcGVyL0hlYWRlcnM7L05leHREZXZlbG9wZXIvSGVhZGVycy9hbnNpOy9OZXh0RGV2ZWxvcGVyL0hlYWRlcnMvYnNkIgotZXhwb3J0IElOQ0xVREUKLQotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9ic2QvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weSBiL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY2YjUwLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvY2Rpby5oCi1DRFJPTV9MQkEgPSAweDAxCi1DRFJPTV9NU0YgPSAweDAyCi1DRFJPTV9EQVRBX1RSQUNLID0gMHgwNAotQ0RST01fTEVBRE9VVCA9IDB4QUEKLUNEUk9NX0FVRElPX0lOVkFMSUQgPSAweDAwCi1DRFJPTV9BVURJT19QTEFZID0gMHgxMQotQ0RST01fQVVESU9fUEFVU0VEID0gMHgxMgotQ0RST01fQVVESU9fQ09NUExFVEVEID0gMHgxMwotQ0RST01fQVVESU9fRVJST1IgPSAweDE0Ci1DRFJPTV9BVURJT19OT19TVEFUVVMgPSAweDE1Ci1DRFJPTV9EQV9OT19TVUJDT0RFID0gMHgwMAotQ0RST01fREFfU1VCUSA9IDB4MDEKLUNEUk9NX0RBX0FMTF9TVUJDT0RFID0gMHgwMgotQ0RST01fREFfU1VCQ09ERV9PTkxZID0gMHgwMwotQ0RST01fWEFfREFUQSA9IDB4MDAKLUNEUk9NX1hBX1NFQ1RPUl9EQVRBID0gMHgwMQotQ0RST01fWEFfREFUQV9XX0VSUk9SID0gMHgwMgotQ0RST01fQkxLXzUxMiA9IDUxMgotQ0RST01fQkxLXzEwMjQgPSAxMDI0Ci1DRFJPTV9CTEtfMjA0OCA9IDIwNDgKLUNEUk9NX0JMS18yMDU2ID0gMjA1NgotQ0RST01fQkxLXzIzMzYgPSAyMzM2Ci1DRFJPTV9CTEtfMjM0MCA9IDIzNDAKLUNEUk9NX0JMS18yMzUyID0gMjM1MgotQ0RST01fQkxLXzIzNjggPSAyMzY4Ci1DRFJPTV9CTEtfMjQ0OCA9IDI0NDgKLUNEUk9NX0JMS18yNjQ2ID0gMjY0NgotQ0RST01fQkxLXzI2NDcgPSAyNjQ3Ci1DRFJPTV9CTEtfU1VCQ09ERSA9IDk2Ci1DRFJPTV9OT1JNQUxfU1BFRUQgPSAweDAwCi1DRFJPTV9ET1VCTEVfU1BFRUQgPSAweDAxCi1DRFJPTV9RVUFEX1NQRUVEID0gMHgwMwotQ0RST01fVFdFTFZFX1NQRUVEID0gMHgwQwotQ0RST01fTUFYSU1VTV9TUEVFRCA9IDB4ZmYKLUNESU9DID0gKDB4MDQgPDwgOCkKLUNEUk9NUEFVU0UgPSAoQ0RJT0N8MTUxKQotQ0RST01SRVNVTUUgPSAoQ0RJT0N8MTUyKQotQ0RST01QTEFZTVNGID0gKENESU9DfDE1MykKLUNEUk9NUExBWVRSS0lORCA9IChDRElPQ3wxNTQpCi1DRFJPTVJFQURUT0NIRFIgPSAoQ0RJT0N8MTU1KQotQ0RST01SRUFEVE9DRU5UUlkgPSAoQ0RJT0N8MTU2KQotQ0RST01TVE9QID0gKENESU9DfDE1NykKLUNEUk9NU1RBUlQgPSAoQ0RJT0N8MTU4KQotQ0RST01FSkVDVCA9IChDRElPQ3wxNTkpCi1DRFJPTVZPTENUUkwgPSAoQ0RJT0N8MTYwKQotQ0RST01TVUJDSE5MID0gKENESU9DfDE2MSkKLUNEUk9NUkVBRE1PREUyID0gKENESU9DfDE2MikKLUNEUk9NUkVBRE1PREUxID0gKENESU9DfDE2MykKLUNEUk9NUkVBRE9GRlNFVCA9IChDRElPQ3wxNjQpCi1DRFJPTUdCTEtNT0RFID0gKENESU9DfDE2NSkKLUNEUk9NU0JMS01PREUgPSAoQ0RJT0N8MTY2KQotQ0RST01DRERBID0gKENESU9DfDE2NykKLUNEUk9NQ0RYQSA9IChDRElPQ3wxNjgpCi1DRFJPTVNVQkNPREUgPSAoQ0RJT0N8MTY5KQotQ0RST01HRFJWU1BFRUQgPSAoQ0RJT0N8MTcwKQotQ0RST01TRFJWU1BFRUQgPSAoQ0RJT0N8MTcxKQotU0NNRF9SRUFEX1RPQyA9IDB4NDMKLVNDTURfUExBWUFVRElPX01TRiA9IDB4NDcKLVNDTURfUExBWUFVRElPX1RJID0gMHg0OAotU0NNRF9QQVVTRV9SRVNVTUUgPSAweDRCCi1TQ01EX1JFQURfU1VCQ0hBTk5FTCA9IDB4NDIKLVNDTURfUExBWUFVRElPMTAgPSAweDQ1Ci1TQ01EX1BMQVlUUkFDS19SRUwxMCA9IDB4NDkKLVNDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1TQ01EX1BMQVlBVURJTzEyID0gMHhBNQotU0NNRF9QTEFZVFJBQ0tfUkVMMTIgPSAweEE5Ci1TQ01EX0NEX1BMQVlCQUNLX0NPTlRST0wgPSAweEM5Ci1TQ01EX0NEX1BMQVlCQUNLX1NUQVRVUyA9IDB4QzQKLVNDTURfUkVBRF9DRERBID0gMHhEOAotU0NNRF9SRUFEX0NEWEEgPSAweERCCi1TQ01EX1JFQURfQUxMX1NVQkNPREVTID0gMHhERgotQ0RST01fTU9ERTJfU0laRSA9IDIzMzYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weSBiL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MjM1MC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVJUTERfTEFaWSA9IDB4MDAwMDEKLVJUTERfTk9XID0gMHgwMDAwMgotUlRMRF9OT0xPQUQgPSAweDAwMDA0Ci1SVExEX0dMT0JBTCA9IDB4MDAxMDAKLVJUTERfTE9DQUwgPSAweDAwMDAwCi1SVExEX1BBUkVOVCA9IDB4MDAyMDAKLVJUTERfR1JPVVAgPSAweDAwNDAwCi1SVExEX1dPUkxEID0gMHgwMDgwMAotUlRMRF9OT0RFTEVURSA9IDB4MDEwMDAKLVJUTERfQ09ORkdFTiA9IDB4MTAwMDAKLVJUTERfUkVMX1JFTEFUSVZFID0gMHgwMDAwMQotUlRMRF9SRUxfRVhFQyA9IDB4MDAwMDIKLVJUTERfUkVMX0RFUEVORFMgPSAweDAwMDA0Ci1SVExEX1JFTF9QUkVMT0FEID0gMHgwMDAwOAotUlRMRF9SRUxfU0VMRiA9IDB4MDAwMTAKLVJUTERfUkVMX1dFQUsgPSAweDAwMDIwCi1SVExEX1JFTF9BTEwgPSAweDAwZmZmCi1SVExEX01FTU9SWSA9IDB4MDEwMDAKLVJUTERfU1RSSVAgPSAweDAyMDAwCi1SVExEX05PSEVBUCA9IDB4MDQwMDAKLVJUTERfQ09ORlNFVCA9IDB4MTAwMDAKLVJUTERfRElfTE1JRCA9IDEKLVJUTERfRElfTElOS01BUCA9IDIKLVJUTERfRElfQ09ORklHQUREUiA9IDMKLVJUTERfRElfTUFYID0gMwpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0lOLnB5IGIvTGliL3BsYXQtc3Vub3M1L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTcyZWFkLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MjEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJlYW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Jlc291cmNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBSSU9fUFJPQ0VTUyA9IDAKLVBSSU9fUEdSUCA9IDEKLVBSSU9fVVNFUiA9IDIKLVJMSU1JVF9DUFUgPSAwCi1STElNSVRfRlNJWkUgPSAxCi1STElNSVRfREFUQSA9IDIKLVJMSU1JVF9TVEFDSyA9IDMKLVJMSU1JVF9DT1JFID0gNAotUkxJTUlUX05PRklMRSA9IDUKLVJMSU1JVF9WTUVNID0gNgotUkxJTUlUX0FTID0gUkxJTUlUX1ZNRU0KLVJMSU1fTkxJTUlUUyA9IDcKLVJMSU1fSU5GSU5JVFkgPSAoLTMpCi1STElNX1NBVkVEX01BWCA9ICgtMikKLVJMSU1fU0FWRURfQ1VSID0gKC0xKQotUkxJTV9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU1fU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTV9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi1STElNMzJfSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNMzJfU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTTMyX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tb2RlbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGVidWcuaAotZGVmIEFTU0VSVDY0KHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLWRlZiBBU1NFUlQzMih4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1EQVRBTU9ERUxfTUFTSyA9IDB4MEZGMDAwMDAKLURBVEFNT0RFTF9JTFAzMiA9IDB4MDAxMDAwMDAKLURBVEFNT0RFTF9MUDY0ID0gMHgwMDIwMDAwMAotREFUQU1PREVMX05PTkUgPSAwCi1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0xQNjQKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfSUxQMzIKLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0ci5tNjQpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gKHNpemVvZiAoKihoYW5kbGUpLnB0cikpCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyKQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gc2l6ZW9mIChjYWRkcl90KQotCi1kZWYgbHdwX2dldGRhdGFtb2RlbCh0KTogcmV0dXJuIERBVEFNT0RFTF9JTFAzMgotCi1SVVNBR0VfU0VMRiA9IDAKLVJVU0FHRV9DSElMRFJFTiA9IC0xCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWdfZW51bS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnVmLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3RhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LU1RBVF9TVFJMRU4gPSAzMQotZGVmIEtTVEFUX0VOVEVSKGspOiByZXR1cm4gXAotCi1kZWYgS1NUQVRfRVhJVChrKTogcmV0dXJuIFwKLQotS1NUQVRfVFlQRV9SQVcgPSAwCi1LU1RBVF9UWVBFX05BTUVEID0gMQotS1NUQVRfVFlQRV9JTlRSID0gMgotS1NUQVRfVFlQRV9JTyA9IDMKLUtTVEFUX1RZUEVfVElNRVIgPSA0Ci1LU1RBVF9OVU1fVFlQRVMgPSA1Ci1LU1RBVF9GTEFHX1ZJUlRVQUwgPSAweDAxCi1LU1RBVF9GTEFHX1ZBUl9TSVpFID0gMHgwMgotS1NUQVRfRkxBR19XUklUQUJMRSA9IDB4MDQKLUtTVEFUX0ZMQUdfUEVSU0lTVEVOVCA9IDB4MDgKLUtTVEFUX0ZMQUdfRE9STUFOVCA9IDB4MTAKLUtTVEFUX0ZMQUdfSU5WQUxJRCA9IDB4MjAKLUtTVEFUX1JFQUQgPSAwCi1LU1RBVF9XUklURSA9IDEKLUtTVEFUX0RBVEFfQ0hBUiA9IDAKLUtTVEFUX0RBVEFfSU5UMzIgPSAxCi1LU1RBVF9EQVRBX1VJTlQzMiA9IDIKLUtTVEFUX0RBVEFfSU5UNjQgPSAzCi1LU1RBVF9EQVRBX1VJTlQ2NCA9IDQKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UMzIKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQzMgotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0xPTkcgPSA3Ci1LU1RBVF9EQVRBX1VMT05HID0gOAotS1NUQVRfREFUQV9MT05HTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkdMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfRkxPQVQgPSA1Ci1LU1RBVF9EQVRBX0RPVUJMRSA9IDYKLUtTVEFUX0lOVFJfSEFSRCA9IDAKLUtTVEFUX0lOVFJfU09GVCA9IDEKLUtTVEFUX0lOVFJfV0FUQ0hET0cgPSAyCi1LU1RBVF9JTlRSX1NQVVJJT1VTID0gMwotS1NUQVRfSU5UUl9NVUxUU1ZDID0gNAotS1NUQVRfTlVNX0lOVFJTID0gNQotQl9CVVNZID0gMHgwMDAxCi1CX0RPTkUgPSAweDAwMDIKLUJfRVJST1IgPSAweDAwMDQKLUJfUEFHRUlPID0gMHgwMDEwCi1CX1BIWVMgPSAweDAwMjAKLUJfUkVBRCA9IDB4MDA0MAotQl9XUklURSA9IDB4MDEwMAotQl9LRVJOQlVGID0gMHgwMDA4Ci1CX1dBTlRFRCA9IDB4MDA4MAotQl9BR0UgPSAweDAwMDIwMAotQl9BU1lOQyA9IDB4MDAwNDAwCi1CX0RFTFdSSSA9IDB4MDAwODAwCi1CX1NUQUxFID0gMHgwMDEwMDAKLUJfRE9OVE5FRUQgPSAweDAwMjAwMAotQl9SRU1BUFBFRCA9IDB4MDA0MDAwCi1CX0ZSRUUgPSAweDAwODAwMAotQl9JTlZBTCA9IDB4MDEwMDAwCi1CX0ZPUkNFID0gMHgwMjAwMDAKLUJfSEVBRCA9IDB4MDQwMDAwCi1CX05PQ0FDSEUgPSAweDA4MDAwMAotQl9UUlVOQyA9IDB4MTAwMDAwCi1CX1NIQURPVyA9IDB4MjAwMDAwCi1CX1JFVFJZV1JJID0gMHg0MDAwMDAKLWRlZiBub3RhdmFpbChicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFMihicCk6IHJldHVybiBcCi0KLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcG9sbC5oCi1QT0xMSU4gPSAweDAwMDEKLVBPTExQUkkgPSAweDAwMDIKLVBPTExPVVQgPSAweDAwMDQKLVBPTExSRE5PUk0gPSAweDAwNDAKLVBPTExXUk5PUk0gPSBQT0xMT1VUCi1QT0xMUkRCQU5EID0gMHgwMDgwCi1QT0xMV1JCQU5EID0gMHgwMTAwCi1QT0xMTk9STSA9IFBPTExSRE5PUk0KLVBPTExFUlIgPSAweDAwMDgKLVBPTExIVVAgPSAweDAwMTAKLVBPTExOVkFMID0gMHgwMDIwCi1QT0xMUkVNT1ZFID0gMHgwODAwCi1QT0xMUkREQVRBID0gMHgwMjAwCi1QT0xMTk9FUlIgPSAweDA0MDAKLVBPTExDTE9TRUQgPSAweDgwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJtZGVwLmgKLWRlZiBzdHJfYWxpZ25lZChYKTogcmV0dXJuICgoKHVsb25nX3QpKFgpICYgKHNpemVvZiAoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZnQuaAotdGRlbHRhX3Rfc3ogPSAxMgotRlRFVl9NQVNLID0gMHgxRkZGCi1GVEVWX0lTV1IgPSAweDgwMDAKLUZURVZfQ1MgPSAweDQwMDAKLUZURVZfUFMgPSAweDIwMDAKLUZURVZfUU1BU0sgPSAweDFGMDAKLUZURVZfQUxMT0NNQVNLID0gMHgxRkY4Ci1GVEVWX0FMTE9DQiA9IDB4MDAwMAotRlRFVl9FU0JBTExPQyA9IDB4MDAwMQotRlRFVl9ERVNCQUxMT0MgPSAweDAwMDIKLUZURVZfRVNCQUxMT0NBID0gMHgwMDAzCi1GVEVWX0RFU0JBTExPQ0EgPSAweDAwMDQKLUZURVZfQUxMT0NCSUcgPSAweDAwMDUKLUZURVZfQUxMT0NCVyA9IDB4MDAwNgotRlRFVl9GUkVFQiA9IDB4MDAwOAotRlRFVl9EVVBCID0gMHgwMDA5Ci1GVEVWX0NPUFlCID0gMHgwMDBBCi1GVEVWX0NBTExFUiA9IDB4MDAwRgotRlRFVl9QVVQgPSAweDAxMDAKLUZURVZfRlNZTkNRID0gMHgwMTAzCi1GVEVWX0RTWU5DUSA9IDB4MDEwNAotRlRFVl9QVVRRID0gMHgwMTA1Ci1GVEVWX0dFVFEgPSAweDAxMDYKLUZURVZfUk1WUSA9IDB4MDEwNwotRlRFVl9JTlNRID0gMHgwMTA4Ci1GVEVWX1BVVEJRID0gMHgwMTA5Ci1GVEVWX0ZMVVNIUSA9IDB4MDEwQQotRlRFVl9SRVBMWVEgPSAweDAxMEIKLUZURVZfUFVUTkVYVCA9IDB4MDEwRAotRlRFVl9SV05FWFQgPSAweDAxMEUKLUZURVZfUVdJTk5FUiA9IDB4MDEwRgotRlRFVl9HRVdSSVRFID0gMHgwMTAxCi1kZWYgRlRGTFdfSEFTSChoKTogcmV0dXJuICgoKHVuc2lnbmVkKShoKSklZnRmbHdfaGFzaF9zeikKLQotRlRCTEtfRVZOVFMgPSAweDkKLVFFTkFCID0gMHgwMDAwMDAwMQotUVdBTlRSID0gMHgwMDAwMDAwMgotUVdBTlRXID0gMHgwMDAwMDAwNAotUUZVTEwgPSAweDAwMDAwMDA4Ci1RUkVBRFIgPSAweDAwMDAwMDEwCi1RVVNFID0gMHgwMDAwMDAyMAotUU5PRU5CID0gMHgwMDAwMDA0MAotUUJBQ0sgPSAweDAwMDAwMTAwCi1RSExJU1QgPSAweDAwMDAwMjAwCi1RUEFJUiA9IDB4MDAwMDA4MDAKLVFQRVJRID0gMHgwMDAwMTAwMAotUVBFUk1PRCA9IDB4MDAwMDIwMDAKLVFNVFNBRkUgPSAweDAwMDA0MDAwCi1RTVRPVVRQRVJJTSA9IDB4MDAwMDgwMDAKLVFNVF9UWVBFTUFTSyA9IChRUEFJUnxRUEVSUXxRUEVSTU9EfFFNVFNBRkV8UU1UT1VUUEVSSU0pCi1RSU5TRVJWSUNFID0gMHgwMDAxMDAwMAotUVdDTE9TRSA9IDB4MDAwMjAwMDAKLVFFTkQgPSAweDAwMDQwMDAwCi1RV0FOVFdTWU5DID0gMHgwMDA4MDAwMAotUVNZTkNTVFIgPSAweDAwMTAwMDAwCi1RSVNEUlYgPSAweDAwMjAwMDAwCi1RSE9UID0gMHgwMDQwMDAwMAotUU5FWFRIT1QgPSAweDAwODAwMDAwCi1fUUlOU0VSVElORyA9IDB4MDQwMDAwMDAKLV9RUkVNT1ZJTkcgPSAweDA4MDAwMDAwCi1RX1NRUVVFVUVEID0gMHgwMQotUV9TUURSQUlOSU5HID0gMHgwMgotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1TVFJVSU9UX05PTkUgPSAtMQotU1RSVUlPVF9ET05UQ0FSRSA9IDAKLVNUUlVJT1RfU1RBTkRBUkQgPSAxCi1TVFJVSU9UX0lQID0gMgotREJMS19SRUZNSU4gPSAweDAxCi1TVFJVSU9fU1BFQyA9IDB4MDEKLVNUUlVJT19ET05FID0gMHgwMgotU1RSVUlPX0lQID0gMHgwNAotU1RSVUlPX1pDID0gMHgwOAotU1RSVUlPX0lDSyA9IDB4MTAKLU1TR01BUksgPSAweDAxCi1NU0dOT0xPT1AgPSAweDAyCi1NU0dERUxJTSA9IDB4MDQKLU1TR05PR0VUID0gMHgwOAotTVNHTUFSS05FWFQgPSAweDEwCi1NU0dOT1RNQVJLTkVYVCA9IDB4MjAKLU1fREFUQSA9IDB4MDAKLU1fUFJPVE8gPSAweDAxCi1NX0JSRUFLID0gMHgwOAotTV9QQVNTRlAgPSAweDA5Ci1NX0VWRU5UID0gMHgwYQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX0lPQ0FDSyA9IDB4ODEKLU1fSU9DTkFLID0gMHg4MgotTV9QQ1BST1RPID0gMHg4MwotTV9QQ1NJRyA9IDB4ODQKLU1fUkVBRCA9IDB4ODUKLU1fRkxVU0ggPSAweDg2Ci1NX1NUT1AgPSAweDg3Ci1NX1NUQVJUID0gMHg4OAotTV9IQU5HVVAgPSAweDg5Ci1NX0VSUk9SID0gMHg4YQotTV9DT1BZSU4gPSAweDhiCi1NX0NPUFlPVVQgPSAweDhjCi1NX0lPQ0RBVEEgPSAweDhkCi1NX1BDUlNFID0gMHg4ZQotTV9TVE9QSSA9IDB4OGYKLU1fU1RBUlRJID0gMHg5MAotTV9QQ0VWRU5UID0gMHg5MQotTV9VTkhBTkdVUCA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1JT0NfTU9ERUxTID0gREFUQU1PREVMX01BU0sKLUlPQ19JTFAzMiA9IERBVEFNT0RFTF9JTFAzMgotSU9DX0xQNjQgPSBEQVRBTU9ERUxfTFA2NAotSU9DX05BVElWRSA9IERBVEFNT0RFTF9OQVRJVkUKLUlPQ19OT05FID0gREFUQU1PREVMX05PTkUKLVNUUkNBTk9OID0gMHgwMQotUkVDT1BZID0gMHgwMgotU09fQUxMID0gMHgwMDNmCi1TT19SRUFET1BUID0gMHgwMDAxCi1TT19XUk9GRiA9IDB4MDAwMgotU09fTUlOUFNaID0gMHgwMDA0Ci1TT19NQVhQU1ogPSAweDAwMDgKLVNPX0hJV0FUID0gMHgwMDEwCi1TT19MT1dBVCA9IDB4MDAyMAotU09fTVJFQURPTiA9IDB4MDA0MAotU09fTVJFQURPRkYgPSAweDAwODAKLVNPX05ERUxPTiA9IDB4MDEwMAotU09fTkRFTE9GRiA9IDB4MDIwMAotU09fSVNUVFkgPSAweDA0MDAKLVNPX0lTTlRUWSA9IDB4MDgwMAotU09fVE9TVE9QID0gMHgxMDAwCi1TT19UT05TVE9QID0gMHgyMDAwCi1TT19CQU5EID0gMHg0MDAwCi1TT19ERUxJTSA9IDB4ODAwMAotU09fTk9ERUxJTSA9IDB4MDEwMDAwCi1TT19TVFJIT0xEID0gMHgwMjAwMDAKLVNPX0VSUk9QVCA9IDB4MDQwMDAwCi1TT19DT1BZT1BUID0gMHgwODAwMDAKLVNPX01BWEJMSyA9IDB4MTAwMDAwCi1ERUZfSU9WX01BWCA9IDE2Ci1JTkZPRF9GSVJTVEJZVEVTID0gMHgwMgotSU5GT0RfQllURVMgPSAweDA0Ci1JTkZPRF9DT1VOVCA9IDB4MDgKLUlORk9EX0NPUFlPVVQgPSAweDEwCi1NT0RPUEVOID0gMHgxCi1DTE9ORU9QRU4gPSAweDIKLUNPTlNPUEVOID0gMHg0Ci1PUEVORkFJTCA9IC0xCi1CUFJJX0xPID0gMQotQlBSSV9NRUQgPSAyCi1CUFJJX0hJID0gMwotQlBSSV9GVCA9IDQKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1QRVJJTV9JTk5FUiA9IDEKLVBFUklNX09VVEVSID0gMgotZGVmIGRhdGFtc2codHlwZSk6IHJldHVybiBcCi0KLWRlZiBzdHJhbG4oYSk6IHJldHVybiAoY2FkZHJfdCkoKGludHB0cl90KShhKSAmIH4oc2l6ZW9mIChpbnQpLTEpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyLmgKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0VOQ0FQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfRUNITyA9IDcKLUlQUE9SVF9ESVNDQVJEID0gOQotSVBQT1JUX1NZU1RBVCA9IDExCi1JUFBPUlRfREFZVElNRSA9IDEzCi1JUFBPUlRfTkVUU1RBVCA9IDE1Ci1JUFBPUlRfRlRQID0gMjEKLUlQUE9SVF9URUxORVQgPSAyMwotSVBQT1JUX1NNVFAgPSAyNQotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotSVBQT1JUX05BTUVTRVJWRVIgPSA0MgotSVBQT1JUX1dIT0lTID0gNDMKLUlQUE9SVF9NVFAgPSA1NwotSVBQT1JUX0JPT1RQUyA9IDY3Ci1JUFBPUlRfQk9PVFBDID0gNjgKLUlQUE9SVF9URlRQID0gNjkKLUlQUE9SVF9SSkUgPSA3NwotSVBQT1JUX0ZJTkdFUiA9IDc5Ci1JUFBPUlRfVFRZTElOSyA9IDg3Ci1JUFBPUlRfU1VQRFVQID0gOTUKLUlQUE9SVF9FWEVDU0VSVkVSID0gNTEyCi1JUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMKLUlQUE9SVF9DTURTRVJWRVIgPSA1MTQKLUlQUE9SVF9FRlNTRVJWRVIgPSA1MjAKLUlQUE9SVF9CSUZGVURQID0gNTEyCi1JUFBPUlRfV0hPU0VSVkVSID0gNTEzCi1JUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JTVBMSU5LX0lQID0gMTU1Ci1JTVBMSU5LX0xPV0VYUEVSID0gMTU2Ci1JTVBMSU5LX0hJR0hFWFBFUiA9IDE1OAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfTUFYID0gMTI4Ci1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotZGVmIElOX1NFVF9MT09QQkFDS19BRERSKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19SRVNFUlZFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1JFU0VSVkVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gMHgxMAotSVBfTVVMVElDQVNUX1RUTCA9IDB4MTEKLUlQX01VTFRJQ0FTVF9MT09QID0gMHgxMgotSVBfQUREX01FTUJFUlNISVAgPSAweDEzCi1JUF9EUk9QX01FTUJFUlNISVAgPSAweDE0Ci1JUF9TRUNfT1BUID0gMHgyMgotSVBTRUNfUFJFRl9ORVZFUiA9IDB4MDEKLUlQU0VDX1BSRUZfUkVRVUlSRUQgPSAweDAyCi1JUFNFQ19QUkVGX1VOSVFVRSA9IDB4MDQKLUlQX0FERF9QUk9YWV9BRERSID0gMHg0MAotSVBfQk9VTkRfSUYgPSAweDQxCi1JUF9VTlNQRUNfU1JDID0gMHg0MgotSVBfUkVVU0VBRERSID0gMHgxMDQKLUlQX0RPTlRST1VURSA9IDB4MTA1Ci1JUF9CUk9BRENBU1QgPSAweDEwNgotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9VTklDQVNUX0hPUFMgPSAweDUKLUlQVjZfTVVMVElDQVNUX0lGID0gMHg2Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMHg3Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMHg4Ci1JUFY2X0pPSU5fR1JPVVAgPSAweDkKLUlQVjZfTEVBVkVfR1JPVVAgPSAweGEKLUlQVjZfQUREX01FTUJFUlNISVAgPSAweDkKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gMHhhCi1JUFY2X1BLVElORk8gPSAweGIKLUlQVjZfSE9QTElNSVQgPSAweGMKLUlQVjZfTkVYVEhPUCA9IDB4ZAotSVBWNl9IT1BPUFRTID0gMHhlCi1JUFY2X0RTVE9QVFMgPSAweGYKLUlQVjZfUlRIRFIgPSAweDEwCi1JUFY2X1JUSERSRFNUT1BUUyA9IDB4MTEKLUlQVjZfUkVDVlBLVElORk8gPSAweDEyCi1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDB4MTMKLUlQVjZfUkVDVkhPUE9QVFMgPSAweDE0Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gMHgxNQotSVBWNl9SRUNWUlRIRFIgPSAweDE2Ci1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSAweDE3Ci1JUFY2X0NIRUNLU1VNID0gMHgxOAotSVBWNl9CT1VORF9JRiA9IDB4NDEKLUlQVjZfVU5TUEVDX1NSQyA9IDB4NDIKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfUEFEMV9PUFQgPSAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjczNWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxMyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25mLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLUZNTkFNRVNaID0gOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c3RtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wcm9jLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91c2VyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZXNvdXJjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QUklPX1BST0NFU1MgPSAwCi1QUklPX1BHUlAgPSAxCi1QUklPX1VTRVIgPSAyCi1STElNSVRfQ1BVID0gMAotUkxJTUlUX0ZTSVpFID0gMQotUkxJTUlUX0RBVEEgPSAyCi1STElNSVRfU1RBQ0sgPSAzCi1STElNSVRfQ09SRSA9IDQKLVJMSU1JVF9OT0ZJTEUgPSA1Ci1STElNSVRfVk1FTSA9IDYKLVJMSU1JVF9BUyA9IFJMSU1JVF9WTUVNCi1STElNX05MSU1JVFMgPSA3Ci1STElNX0lORklOSVRZID0gKC0zKQotUkxJTV9TQVZFRF9NQVggPSAoLTIpCi1STElNX1NBVkVEX0NVUiA9ICgtMSkKLVJMSU1fSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU1fU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotUkxJTTMyX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTTMyX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU0zMl9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW9kZWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RlYnVnLmgKLWRlZiBBU1NFUlQ2NCh4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1kZWYgQVNTRVJUMzIoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotREFUQU1PREVMX01BU0sgPSAweDBGRjAwMDAwCi1EQVRBTU9ERUxfSUxQMzIgPSAweDAwMTAwMDAwCi1EQVRBTU9ERUxfTFA2NCA9IDB4MDAyMDAwMDAKLURBVEFNT0RFTF9OT05FID0gMAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9MUDY0Ci1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0lMUDMyCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIubTY0KQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIChzaXplb2YgKCooaGFuZGxlKS5wdHIpKQotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0cikKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIHNpemVvZiAoY2FkZHJfdCkKLQotZGVmIGx3cF9nZXRkYXRhbW9kZWwodCk6IHJldHVybiBEQVRBTU9ERUxfSUxQMzIKLQotUlVTQUdFX1NFTEYgPSAwCi1SVVNBR0VfQ0hJTERSRU4gPSAtMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2F1eHYuaAotQVRfTlVMTCA9IDAKLUFUX0lHTk9SRSA9IDEKLUFUX0VYRUNGRCA9IDIKLUFUX1BIRFIgPSAzCi1BVF9QSEVOVCA9IDQKLUFUX1BITlVNID0gNQotQVRfUEFHRVNaID0gNgotQVRfQkFTRSA9IDcKLUFUX0ZMQUdTID0gOAotQVRfRU5UUlkgPSA5Ci1BVF9EQ0FDSEVCU0laRSA9IDEwCi1BVF9JQ0FDSEVCU0laRSA9IDExCi1BVF9VQ0FDSEVCU0laRSA9IDEyCi1BVF9TVU5fVUlEID0gMjAwMAotQVRfU1VOX1JVSUQgPSAyMDAxCi1BVF9TVU5fR0lEID0gMjAwMgotQVRfU1VOX1JHSUQgPSAyMDAzCi1BVF9TVU5fTERFTEYgPSAyMDA0Ci1BVF9TVU5fTERTSERSID0gMjAwNQotQVRfU1VOX0xETkFNRSA9IDIwMDYKLUFUX1NVTl9MUEFHRVNaID0gMjAwNwotQVRfU1VOX1BMQVRGT1JNID0gMjAwOAotQVRfU1VOX0hXQ0FQID0gMjAwOQotQVRfU1VOX0lGTFVTSCA9IDIwMTAKLUFUX1NVTl9DUFUgPSAyMDExCi1BVF9TVU5fRU1VTF9FTlRSWSA9IDIwMTIKLUFUX1NVTl9FTVVMX0VYRUNGRCA9IDIwMTMKLUFUX1NVTl9FWEVDTkFNRSA9IDIwMTQKLUFUX1NVTl9NTVUgPSAyMDE1Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZXJybm8uaAotRVBFUk0gPSAxCi1FTk9FTlQgPSAyCi1FU1JDSCA9IDMKLUVJTlRSID0gNAotRUlPID0gNQotRU5YSU8gPSA2Ci1FMkJJRyA9IDcKLUVOT0VYRUMgPSA4Ci1FQkFERiA9IDkKLUVDSElMRCA9IDEwCi1FQUdBSU4gPSAxMQotRU5PTUVNID0gMTIKLUVBQ0NFUyA9IDEzCi1FRkFVTFQgPSAxNAotRU5PVEJMSyA9IDE1Ci1FQlVTWSA9IDE2Ci1FRVhJU1QgPSAxNwotRVhERVYgPSAxOAotRU5PREVWID0gMTkKLUVOT1RESVIgPSAyMAotRUlTRElSID0gMjEKLUVJTlZBTCA9IDIyCi1FTkZJTEUgPSAyMwotRU1GSUxFID0gMjQKLUVOT1RUWSA9IDI1Ci1FVFhUQlNZID0gMjYKLUVGQklHID0gMjcKLUVOT1NQQyA9IDI4Ci1FU1BJUEUgPSAyOQotRVJPRlMgPSAzMAotRU1MSU5LID0gMzEKLUVQSVBFID0gMzIKLUVET00gPSAzMwotRVJBTkdFID0gMzQKLUVOT01TRyA9IDM1Ci1FSURSTSA9IDM2Ci1FQ0hSTkcgPSAzNwotRUwyTlNZTkMgPSAzOAotRUwzSExUID0gMzkKLUVMM1JTVCA9IDQwCi1FTE5STkcgPSA0MQotRVVOQVRDSCA9IDQyCi1FTk9DU0kgPSA0MwotRUwySExUID0gNDQKLUVERUFETEsgPSA0NQotRU5PTENLID0gNDYKLUVDQU5DRUxFRCA9IDQ3Ci1FTk9UU1VQID0gNDgKLUVEUVVPVCA9IDQ5Ci1FQkFERSA9IDUwCi1FQkFEUiA9IDUxCi1FWEZVTEwgPSA1MgotRU5PQU5PID0gNTMKLUVCQURSUUMgPSA1NAotRUJBRFNMVCA9IDU1Ci1FREVBRExPQ0sgPSA1NgotRUJGT05UID0gNTcKLUVPV05FUkRFQUQgPSA1OAotRU5PVFJFQ09WRVJBQkxFID0gNTkKLUVOT1NUUiA9IDYwCi1FTk9EQVRBID0gNjEKLUVUSU1FID0gNjIKLUVOT1NSID0gNjMKLUVOT05FVCA9IDY0Ci1FTk9QS0cgPSA2NQotRVJFTU9URSA9IDY2Ci1FTk9MSU5LID0gNjcKLUVBRFYgPSA2OAotRVNSTU5UID0gNjkKLUVDT01NID0gNzAKLUVQUk9UTyA9IDcxCi1FTE9DS1VOTUFQUEVEID0gNzIKLUVOT1RBQ1RJVkUgPSA3MwotRU1VTFRJSE9QID0gNzQKLUVCQURNU0cgPSA3NwotRU5BTUVUT09MT05HID0gNzgKLUVPVkVSRkxPVyA9IDc5Ci1FTk9UVU5JUSA9IDgwCi1FQkFERkQgPSA4MQotRVJFTUNIRyA9IDgyCi1FTElCQUNDID0gODMKLUVMSUJCQUQgPSA4NAotRUxJQlNDTiA9IDg1Ci1FTElCTUFYID0gODYKLUVMSUJFWEVDID0gODcKLUVJTFNFUSA9IDg4Ci1FTk9TWVMgPSA4OQotRUxPT1AgPSA5MAotRVJFU1RBUlQgPSA5MQotRVNUUlBJUEUgPSA5MgotRU5PVEVNUFRZID0gOTMKLUVVU0VSUyA9IDk0Ci1FTk9UU09DSyA9IDk1Ci1FREVTVEFERFJSRVEgPSA5NgotRU1TR1NJWkUgPSA5NwotRVBST1RPVFlQRSA9IDk4Ci1FTk9QUk9UT09QVCA9IDk5Ci1FUFJPVE9OT1NVUFBPUlQgPSAxMjAKLUVTT0NLVE5PU1VQUE9SVCA9IDEyMQotRU9QTk9UU1VQUCA9IDEyMgotRVBGTk9TVVBQT1JUID0gMTIzCi1FQUZOT1NVUFBPUlQgPSAxMjQKLUVBRERSSU5VU0UgPSAxMjUKLUVBRERSTk9UQVZBSUwgPSAxMjYKLUVORVRET1dOID0gMTI3Ci1FTkVUVU5SRUFDSCA9IDEyOAotRU5FVFJFU0VUID0gMTI5Ci1FQ09OTkFCT1JURUQgPSAxMzAKLUVDT05OUkVTRVQgPSAxMzEKLUVOT0JVRlMgPSAxMzIKLUVJU0NPTk4gPSAxMzMKLUVOT1RDT05OID0gMTM0Ci1FU0hVVERPV04gPSAxNDMKLUVUT09NQU5ZUkVGUyA9IDE0NAotRVRJTUVET1VUID0gMTQ1Ci1FQ09OTlJFRlVTRUQgPSAxNDYKLUVIT1NURE9XTiA9IDE0NwotRUhPU1RVTlJFQUNIID0gMTQ4Ci1FV09VTERCTE9DSyA9IEVBR0FJTgotRUFMUkVBRFkgPSAxNDkKLUVJTlBST0dSRVNTID0gMTUwCi1FU1RBTEUgPSAxNTEKLVBTQVJHU1ogPSA4MAotUFNDT01TSVogPSAxNAotTUFYQ09NTEVOID0gMTYKLV9fS0VSTl9OQVVYVl9JTVBMID0gMTkKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLVBTQVJHU1ogPSA4MAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3dhdGNocG9pbnQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnX2VudW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvcHlvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J1Zi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N0YXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS1NUQVRfU1RSTEVOID0gMzEKLWRlZiBLU1RBVF9FTlRFUihrKTogcmV0dXJuIFwKLQotZGVmIEtTVEFUX0VYSVQoayk6IHJldHVybiBcCi0KLUtTVEFUX1RZUEVfUkFXID0gMAotS1NUQVRfVFlQRV9OQU1FRCA9IDEKLUtTVEFUX1RZUEVfSU5UUiA9IDIKLUtTVEFUX1RZUEVfSU8gPSAzCi1LU1RBVF9UWVBFX1RJTUVSID0gNAotS1NUQVRfTlVNX1RZUEVTID0gNQotS1NUQVRfRkxBR19WSVJUVUFMID0gMHgwMQotS1NUQVRfRkxBR19WQVJfU0laRSA9IDB4MDIKLUtTVEFUX0ZMQUdfV1JJVEFCTEUgPSAweDA0Ci1LU1RBVF9GTEFHX1BFUlNJU1RFTlQgPSAweDA4Ci1LU1RBVF9GTEFHX0RPUk1BTlQgPSAweDEwCi1LU1RBVF9GTEFHX0lOVkFMSUQgPSAweDIwCi1LU1RBVF9SRUFEID0gMAotS1NUQVRfV1JJVEUgPSAxCi1LU1RBVF9EQVRBX0NIQVIgPSAwCi1LU1RBVF9EQVRBX0lOVDMyID0gMQotS1NUQVRfREFUQV9VSU5UMzIgPSAyCi1LU1RBVF9EQVRBX0lOVDY0ID0gMwotS1NUQVRfREFUQV9VSU5UNjQgPSA0Ci1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDMyCi1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UMzIKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9MT05HID0gNwotS1NUQVRfREFUQV9VTE9ORyA9IDgKLUtTVEFUX0RBVEFfTE9OR0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0ZMT0FUID0gNQotS1NUQVRfREFUQV9ET1VCTEUgPSA2Ci1LU1RBVF9JTlRSX0hBUkQgPSAwCi1LU1RBVF9JTlRSX1NPRlQgPSAxCi1LU1RBVF9JTlRSX1dBVENIRE9HID0gMgotS1NUQVRfSU5UUl9TUFVSSU9VUyA9IDMKLUtTVEFUX0lOVFJfTVVMVFNWQyA9IDQKLUtTVEFUX05VTV9JTlRSUyA9IDUKLUJfQlVTWSA9IDB4MDAwMQotQl9ET05FID0gMHgwMDAyCi1CX0VSUk9SID0gMHgwMDA0Ci1CX1BBR0VJTyA9IDB4MDAxMAotQl9QSFlTID0gMHgwMDIwCi1CX1JFQUQgPSAweDAwNDAKLUJfV1JJVEUgPSAweDAxMDAKLUJfS0VSTkJVRiA9IDB4MDAwOAotQl9XQU5URUQgPSAweDAwODAKLUJfQUdFID0gMHgwMDAyMDAKLUJfQVNZTkMgPSAweDAwMDQwMAotQl9ERUxXUkkgPSAweDAwMDgwMAotQl9TVEFMRSA9IDB4MDAxMDAwCi1CX0RPTlRORUVEID0gMHgwMDIwMDAKLUJfUkVNQVBQRUQgPSAweDAwNDAwMAotQl9GUkVFID0gMHgwMDgwMDAKLUJfSU5WQUwgPSAweDAxMDAwMAotQl9GT1JDRSA9IDB4MDIwMDAwCi1CX0hFQUQgPSAweDA0MDAwMAotQl9OT0NBQ0hFID0gMHgwODAwMDAKLUJfVFJVTkMgPSAweDEwMDAwMAotQl9TSEFET1cgPSAweDIwMDAwMAotQl9SRVRSWVdSSSA9IDB4NDAwMDAwCi1kZWYgbm90YXZhaWwoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURTIoYnApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYWlvX3JlcS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVdQX05PV0FUQ0ggPSAweDAxCi1XUF9TRVRQUk9UID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9USU1FUl9NQVggPSAzMgotSVRMS19MT0NLRUQgPSAweDAxCi1JVExLX1dBTlRFRCA9IDB4MDIKLUlUTEtfUkVNT1ZFID0gMHgwNAotSVRfUEVSTFdQID0gMHgwMQotSVRfU0lHTkFMID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3V0cmFwLmgKLVVUX0lOU1RSVUNUSU9OX0RJU0FCTEVEID0gMQotVVRfSU5TVFJVQ1RJT05fRVJST1IgPSAyCi1VVF9JTlNUUlVDVElPTl9QUk9URUNUSU9OID0gMwotVVRfSUxMVFJBUF9JTlNUUlVDVElPTiA9IDQKLVVUX0lMTEVHQUxfSU5TVFJVQ1RJT04gPSA1Ci1VVF9QUklWSUxFR0VEX09QQ09ERSA9IDYKLVVUX0ZQX0RJU0FCTEVEID0gNwotVVRfRlBfRVhDRVBUSU9OX0lFRUVfNzU0ID0gOAotVVRfRlBfRVhDRVBUSU9OX09USEVSID0gOQotVVRfVEFHX09WRVJGTE9XID0gMTAKLVVUX0RJVklTSU9OX0JZX1pFUk8gPSAxMQotVVRfREFUQV9FWENFUFRJT04gPSAxMgotVVRfREFUQV9FUlJPUiA9IDEzCi1VVF9EQVRBX1BST1RFQ1RJT04gPSAxNAotVVRfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSAxNQotVVRfUFJJVklMRUdFRF9BQ1RJT04gPSAxNgotVVRfQVNZTkNfREFUQV9FUlJPUiA9IDE3Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE2ID0gMTgKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTcgPSAxOQotVVRfVFJBUF9JTlNUUlVDVElPTl8xOCA9IDIwCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzE5ID0gMjEKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjAgPSAyMgotVVRfVFJBUF9JTlNUUlVDVElPTl8yMSA9IDIzCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIyID0gMjQKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjMgPSAyNQotVVRfVFJBUF9JTlNUUlVDVElPTl8yNCA9IDI2Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI1ID0gMjcKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjYgPSAyOAotVVRfVFJBUF9JTlNUUlVDVElPTl8yNyA9IDI5Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI4ID0gMzAKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjkgPSAzMQotVVRfVFJBUF9JTlNUUlVDVElPTl8zMCA9IDMyCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzMxID0gMzMKLVVUUkFQX1Y4UF9GUF9ESVNBQkxFRCA9IFVUX0ZQX0RJU0FCTEVECi1VVFJBUF9WOFBfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSBVVF9NRU1fQUREUkVTU19OT1RfQUxJR05FRAotVVRfUFJFQ0lTRV9NQVhUUkFQUyA9IDMzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVmc3RyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90YXNrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVRBU0tfTk9STUFMID0gMHgwCi1UQVNLX0ZJTkFMID0gMHgxCi1UQVNLX0ZJTkFMSVRZID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaWRfc3BhY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZtZW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVk1fU0xFRVAgPSAweDAwMDAwMDAwCi1WTV9OT1NMRUVQID0gMHgwMDAwMDAwMQotVk1fUEFOSUMgPSAweDAwMDAwMDAyCi1WTV9LTUZMQUdTID0gMHgwMDAwMDBmZgotVk1fQkVTVEZJVCA9IDB4MDAwMDAxMDAKLVZNRU1fQUxMT0MgPSAweDAxCi1WTUVNX0ZSRUUgPSAweDAyCi1WTUVNX1NQQU4gPSAweDEwCi1JU1BfTk9STUFMID0gMHgwCi1JU1BfUkVTRVJWRSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2V4YWNjdF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbWVtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtNX1NMRUVQID0gMHgwMDAwCi1LTV9OT1NMRUVQID0gMHgwMDAxCi1LTV9QQU5JQyA9IDB4MDAwMgotS01fVk1GTEFHUyA9IDB4MDBmZgotS01fRkxBR1MgPSAweGZmZmYKLUtNQ19OT1RPVUNIID0gMHgwMDAxMDAwMAotS01DX05PREVCVUcgPSAweDAwMDIwMDAwCi1LTUNfTk9NQUdBWklORSA9IDB4MDAwNDAwMDAKLUtNQ19OT0hBU0ggPSAweDAwMDgwMDAwCi1LTUNfUUNBQ0hFID0gMHgwMDEwMDAwMAotX0lTQV9JQTMyID0gMAotX0lTQV9JQTY0ID0gMQotU1NMRUVQID0gMQotU1JVTiA9IDIKLVNaT01CID0gMwotU1NUT1AgPSA0Ci1TSURMID0gNQotU09OUFJPQyA9IDYKLUNMRFBFTkQgPSAweDAwMDEKLUNMRENPTlQgPSAweDAwMDIKLVNTWVMgPSAweDAwMDAwMDAxCi1TVFJDID0gMHgwMDAwMDAwMgotU0xPQUQgPSAweDAwMDAwMDA4Ci1TTE9DSyA9IDB4MDAwMDAwMTAKLVNQUkVYRUMgPSAweDAwMDAwMDIwCi1TUFJPQ1RSID0gMHgwMDAwMDA0MAotU1BSRk9SSyA9IDB4MDAwMDAwODAKLVNLSUxMRUQgPSAweDAwMDAwMTAwCi1TVUxPQUQgPSAweDAwMDAwMjAwCi1TUlVOTENMID0gMHgwMDAwMDQwMAotU0JQVEFESiA9IDB4MDAwMDA4MDAKLVNLSUxMQ0wgPSAweDAwMDAxMDAwCi1TT1dFVVBDID0gMHgwMDAwMjAwMAotU0VYRUNFRCA9IDB4MDAwMDQwMDAKLVNQQVNZTkMgPSAweDAwMDA4MDAwCi1TSkNUTCA9IDB4MDAwMTAwMDAKLVNOT1dBSVQgPSAweDAwMDIwMDAwCi1TVkZPUksgPSAweDAwMDQwMDAwCi1TVkZXQUlUID0gMHgwMDA4MDAwMAotRVhJVExXUFMgPSAweDAwMTAwMDAwCi1IT0xERk9SSyA9IDB4MDAyMDAwMDAKLVNXQUlUU0lHID0gMHgwMDQwMDAwMAotSE9MREZPUksxID0gMHgwMDgwMDAwMAotQ09SRURVTVAgPSAweDAxMDAwMDAwCi1TTVNBQ0NUID0gMHgwMjAwMDAwMAotQVNMV1AgPSAweDA0MDAwMDAwCi1TUFJMT0NLID0gMHgwODAwMDAwMAotTk9DRCA9IDB4MTAwMDAwMDAKLUhPTERXQVRDSCA9IDB4MjAwMDAwMDAKLVNNU0ZPUksgPSAweDQwMDAwMDAwCi1TRE9DT1JFID0gMHg4MDAwMDAwMAotRk9SUkVBTCA9IDAKLUpVU1RMT09LSU5HID0gMQotU1VTUEVORF9OT1JNQUwgPSAwCi1TVVNQRU5EX1BBVVNFID0gMQotTk9DTEFTUyA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGl0eXBlcy5oCi1ERElfREVWSUNFX0FUVFJfVjAgPSAweDAwMDEKLURESV9ORVZFUlNXQVBfQUNDID0gMHgwMAotRERJX1NUUlVDVFVSRV9MRV9BQ0MgPSAweDAxCi1ERElfU1RSVUNUVVJFX0JFX0FDQyA9IDB4MDIKLURESV9TVFJJQ1RPUkRFUl9BQ0MgPSAweDAwCi1ERElfVU5PUkRFUkVEX09LX0FDQyA9IDB4MDEKLURESV9NRVJHSU5HX09LX0FDQyA9IDB4MDIKLURESV9MT0FEQ0FDSElOR19PS19BQ0MgPSAweDAzCi1ERElfU1RPUkVDQUNISU5HX09LX0FDQyA9IDB4MDQKLURESV9EQVRBX1NaMDFfQUNDID0gMQotRERJX0RBVEFfU1owMl9BQ0MgPSAyCi1ERElfREFUQV9TWjA0X0FDQyA9IDQKLURESV9EQVRBX1NaMDhfQUNDID0gOAotVkVSU19BQ0NIREwgPSAweDAwMDEKLURFVklEX05PTkUgPSAwCi1ERVZJRF9TQ1NJM19XV04gPSAxCi1ERVZJRF9TQ1NJX1NFUklBTCA9IDIKLURFVklEX0ZBQiA9IDMKLURFVklEX0VOQ0FQID0gNAotREVWSURfTUFYVFlQRSA9IDQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YXJhcmdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YV9saXN0LmgKLVZBX0FMSUdOID0gOAotZGVmIF9BUkdTSVpFT0YodCk6IHJldHVybiAoKHNpemVvZiAodCkgKyBWQV9BTElHTiAtIDEpICYgfihWQV9BTElHTiAtIDEpKQotCi1WQV9BTElHTiA9IDgKLWRlZiBfQVJHU0laRU9GKHQpOiByZXR1cm4gKChzaXplb2YgKHQpICsgVkFfQUxJR04gLSAxKSAmIH4oVkFfQUxJR04gLSAxKSkKLQotTlNZU0NBTEwgPSAyNTYKLVNFXzMyUlZBTDEgPSAweDAKLVNFXzMyUlZBTDIgPSAweDEKLVNFXzY0UlZBTCA9IDB4MgotU0VfUlZBTF9NQVNLID0gMHgzCi1TRV9MT0FEQUJMRSA9IDB4MDgKLVNFX0xPQURFRCA9IDB4MTAKLVNFX05PVU5MT0FEID0gMHgyMAotU0VfQVJHQyA9IDB4NDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZXZvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BvbGwuaAotUE9MTElOID0gMHgwMDAxCi1QT0xMUFJJID0gMHgwMDAyCi1QT0xMT1VUID0gMHgwMDA0Ci1QT0xMUkROT1JNID0gMHgwMDQwCi1QT0xMV1JOT1JNID0gUE9MTE9VVAotUE9MTFJEQkFORCA9IDB4MDA4MAotUE9MTFdSQkFORCA9IDB4MDEwMAotUE9MTE5PUk0gPSBQT0xMUkROT1JNCi1QT0xMRVJSID0gMHgwMDA4Ci1QT0xMSFVQID0gMHgwMDEwCi1QT0xMTlZBTCA9IDB4MDAyMAotUE9MTFJFTU9WRSA9IDB4MDgwMAotUE9MTFJEREFUQSA9IDB4MDIwMAotUE9MTE5PRVJSID0gMHgwNDAwCi1QT0xMQ0xPU0VEID0gMHg4MDAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9hcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWcuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9mYXVsdGNvZGUuaAotRkNfSFdFUlIgPSAweDEKLUZDX0FMSUdOID0gMHgyCi1GQ19PQkpFUlIgPSAweDMKLUZDX1BST1QgPSAweDQKLUZDX05PTUFQID0gMHg1Ci1GQ19OT1NVUFBPUlQgPSAweDYKLWRlZiBGQ19NQUtFX0VSUihlKTogcmV0dXJuICgoKGUpIDw8IDgpIHwgRkNfT0JKRVJSKQotCi1kZWYgRkNfQ09ERShmYyk6IHJldHVybiAoKGZjKSAmIDB4ZmYpCi0KLWRlZiBGQ19FUlJOTyhmYyk6IHJldHVybiAoKHVuc2lnbmVkKShmYykgPj4gOCkKLQotCi0jIEluY2x1ZGVkIGZyb20gdm0vaGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3BhZ2UuaAotUEFHRV9IQVNIQVZFTEVOID0gNAotUEFHRV9IQVNIVlBTSElGVCA9IDYKLVBHX0VYQ0wgPSAweDAwMDEKLVBHX1dBSVQgPSAweDAwMDIKLVBHX1BIWVNDT05USUcgPSAweDAwMDQKLVBHX01BVENIX0NPTE9SID0gMHgwMDA4Ci1QR19OT1JFTE9DID0gMHgwMDEwCi1QR19GUkVFX0xJU1QgPSAxCi1QR19DQUNIRV9MSVNUID0gMgotUEdfTElTVF9UQUlMID0gMAotUEdfTElTVF9IRUFEID0gMQotZGVmIHBhZ2VfbmV4dF9yYXcoUFApOiByZXR1cm4gcGFnZV9uZXh0bl9yYXcoKFBQKSwgMSkKLQotUEFHRV9JT19JTlVTRSA9IDB4MQotUEFHRV9JT19XQU5URUQgPSAweDIKLVBHUkVMX05PVFJFTCA9IDB4MQotUEdSRUxfQ0xFQU4gPSAweDIKLVBHUkVMX01PRCA9IDB4MwotUF9GUkVFID0gMHg4MAotUF9OT1JFTE9DID0gMHg0MAotZGVmIFBQX1NFVEFHRUQocHApOiByZXR1cm4gQVNTRVJUKFBQX0lTQUdFRChwcCkpCi0KLUhBVF9GTEFHU19SRVNWID0gMHhGRjAwMDAwMAotSEFUX0xPQUQgPSAweDAwCi1IQVRfTE9BRF9MT0NLID0gMHgwMQotSEFUX0xPQURfQURWID0gMHgwNAotSEFUX0xPQURfQ09OVElHID0gMHgxMAotSEFUX0xPQURfTk9DT05TSVNUID0gMHgyMAotSEFUX0xPQURfU0hBUkUgPSAweDQwCi1IQVRfTE9BRF9SRU1BUCA9IDB4ODAKLUhBVF9SRUxPQURfU0hBUkUgPSAweDEwMAotSEFUX1BMQVRfQVRUUl9NQVNLID0gMHhGMDAwMDAKLUhBVF9QUk9UX01BU0sgPSAweDBGCi1IQVRfTk9GQVVMVCA9IDB4MTAKLUhBVF9OT1NZTkMgPSAweDIwCi1IQVRfU1RSSUNUT1JERVIgPSAweDAwMDAKLUhBVF9VTk9SREVSRURfT0sgPSAweDAxMDAKLUhBVF9NRVJHSU5HX09LID0gMHgwMjAwCi1IQVRfTE9BRENBQ0hJTkdfT0sgPSAweDAzMDAKLUhBVF9TVE9SRUNBQ0hJTkdfT0sgPSAweDA0MDAKLUhBVF9PUkRFUl9NQVNLID0gMHgwNzAwCi1IQVRfTkVWRVJTV0FQID0gMHgwMDAwCi1IQVRfU1RSVUNUVVJFX0JFID0gMHgxMDAwCi1IQVRfU1RSVUNUVVJFX0xFID0gMHgyMDAwCi1IQVRfRU5ESUFOX01BU0sgPSAweDMwMDAKLUhBVF9DT1cgPSAweDAwMDEKLUhBVF9VTkxPQUQgPSAweDAwCi1IQVRfVU5MT0FEX05PU1lOQyA9IDB4MDIKLUhBVF9VTkxPQURfVU5MT0NLID0gMHgwNAotSEFUX1VOTE9BRF9PVEhFUiA9IDB4MDgKLUhBVF9VTkxPQURfVU5NQVAgPSAweDEwCi1IQVRfU1lOQ19ET05UWkVSTyA9IDB4MDAKLUhBVF9TWU5DX1pFUk9STSA9IDB4MDEKLUhBVF9TWU5DX1NUT1BPTl9SRUYgPSAweDAyCi1IQVRfU1lOQ19TVE9QT05fTU9EID0gMHgwNAotSEFUX1NZTkNfU1RPUE9OX1JNID0gKEhBVF9TWU5DX1NUT1BPTl9SRUYgfCBIQVRfU1lOQ19TVE9QT05fTU9EKQotSEFUX0RVUF9BTEwgPSAxCi1IQVRfRFVQX0NPVyA9IDIKLUhBVF9NQVAgPSAweDAwCi1IQVRfQURWX1BHVU5MT0FEID0gMHgwMAotSEFUX0ZPUkNFX1BHVU5MT0FEID0gMHgwMQotUF9NT0QgPSAweDEKLVBfUkVGID0gMHgyCi1QX1JPID0gMHg0Ci1kZWYgaGF0X2lzbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfaXNyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9pc3JvKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX1JPKSkKLQotZGVmIGhhdF9zZXRtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9zZXRyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9zZXRyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9jbHJtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9jbHJyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9jbHJyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9wYWdlX2lzX21hcHBlZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0c2hhcmUocHApKQotCi1IQVRfRE9OVEFMTE9DID0gMAotSEFUX0FMTE9DID0gMQotSFJNX1NISUZUID0gNAotSFJNX0JZVEVTID0gKDEgPDwgSFJNX1NISUZUKQotSFJNX1BBR0VTID0gKChIUk1fQllURVMgKiBOQkJZKSAvIDIpCi1IUk1fUEdQRVJCWVRFID0gKE5CQlkvMikKLUhSTV9QR0JZVEVNQVNLID0gKEhSTV9QR1BFUkJZVEUtMSkKLUhSTV9IQVNIU0laRSA9IDB4MjAwCi1IUk1fSEFTSE1BU0sgPSAoSFJNX0hBU0hTSVpFIC0gMSkKLUhSTV9CTElTVF9JTkNSID0gMHgyMDAKLUhSTV9TV1NNT05JRCA9IDEKLVNTTF9OTEVWRUxTID0gNAotU1NMX0JGQUNUT1IgPSA0Ci1TU0xfTE9HMkJGID0gMgotU0VHUF9BU1lOQ19GTFVTSCA9IDB4MQotU0VHUF9GT1JDRV9XSVJFRCA9IDB4MgotU0VHUF9TVUNDRVNTID0gMAotU0VHUF9GQUlMID0gMQotZGVmIHNlZ19wYWdlcyhzZWcpOiByZXR1cm4gXAotCi1JRV9OT01FTSA9IC0xCi1BU19QQUdMQ0sgPSAweDgwCi1BU19DTEFJTUdBUCA9IDB4NDAKLUFTX1VOTUFQV0FJVCA9IDB4MjAKLWRlZiBBU19UWVBFXzY0QklUKGFzXyk6IHJldHVybiBcCi0KLUFTX0xSRVBfTElOS0VETElTVCA9IDAKLUFTX0xSRVBfU0tJUExJU1QgPSAxCi1BU19NVVRBVElPTl9USFJFU0ggPSAyMjUKLUFIX0RJUiA9IDB4MQotQUhfTE8gPSAweDAKLUFIX0hJID0gMHgxCi1BSF9DT05UQUlOID0gMHgyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpZG1hcmVxLmgKLURNQV9VTklUXzggPSAxCi1ETUFfVU5JVF8xNiA9IDIKLURNQV9VTklUXzMyID0gNAotRE1BTElNX1ZFUjAgPSAoKDB4ODYwMDAwMDApICsgMCkKLURESV9ETUFfRk9SQ0VfUEhZU0lDQUwgPSAweDAxMDAKLURNQV9BVFRSX1YwID0gMAotRE1BX0FUVFJfVkVSU0lPTiA9IERNQV9BVFRSX1YwCi1ERElfRE1BX0NBTExCQUNLX1JVTk9VVCA9IDAKLURESV9ETUFfQ0FMTEJBQ0tfRE9ORSA9IDEKLURESV9ETUFfV1JJVEUgPSAweDAwMDEKLURESV9ETUFfUkVBRCA9IDB4MDAwMgotRERJX0RNQV9SRFdSID0gKERESV9ETUFfUkVBRCB8IERESV9ETUFfV1JJVEUpCi1ERElfRE1BX1JFRFpPTkUgPSAweDAwMDQKLURESV9ETUFfUEFSVElBTCA9IDB4MDAwOAotRERJX0RNQV9DT05TSVNURU5UID0gMHgwMDEwCi1ERElfRE1BX0VYQ0xVU0lWRSA9IDB4MDAyMAotRERJX0RNQV9TVFJFQU1JTkcgPSAweDAwNDAKLURESV9ETUFfU0JVU182NEJJVCA9IDB4MjAwMAotRERJX0RNQV9NQVBQRUQgPSAwCi1ERElfRE1BX01BUE9LID0gMAotRERJX0RNQV9QQVJUSUFMX01BUCA9IDEKLURESV9ETUFfRE9ORSA9IDIKLURESV9ETUFfTk9SRVNPVVJDRVMgPSAtMQotRERJX0RNQV9OT01BUFBJTkcgPSAtMgotRERJX0RNQV9UT09CSUcgPSAtMwotRERJX0RNQV9UT09TTUFMTCA9IC00Ci1ERElfRE1BX0xPQ0tFRCA9IC01Ci1ERElfRE1BX0JBRExJTUlUUyA9IC02Ci1ERElfRE1BX1NUQUxFID0gLTcKLURESV9ETUFfQkFEQVRUUiA9IC04Ci1ERElfRE1BX0lOVVNFID0gLTkKLURESV9ETUFfU1lOQ19GT1JERVYgPSAweDAKLURESV9ETUFfU1lOQ19GT1JDUFUgPSAweDEKLURESV9ETUFfU1lOQ19GT1JLRVJORUwgPSAweDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGltYXByZXEuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21tYW4uaAotUFJPVF9SRUFEID0gMHgxCi1QUk9UX1dSSVRFID0gMHgyCi1QUk9UX0VYRUMgPSAweDQKLVBST1RfVVNFUiA9IDB4OAotUFJPVF9aRk9EID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMgfCBQUk9UX1VTRVIpCi1QUk9UX0FMTCA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDIHwgUFJPVF9VU0VSKQotUFJPVF9OT05FID0gMHgwCi1NQVBfU0hBUkVEID0gMQotTUFQX1BSSVZBVEUgPSAyCi1NQVBfVFlQRSA9IDB4ZgotTUFQX0ZJWEVEID0gMHgxMAotTUFQX05PUkVTRVJWRSA9IDB4NDAKLU1BUF9BTk9OID0gMHgxMDAKLU1BUF9BTk9OWU1PVVMgPSBNQVBfQU5PTgotTUFQX1JFTkFNRSA9IDB4MjAKLVBST0NfVEVYVCA9IChQUk9UX0VYRUMgfCBQUk9UX1JFQUQpCi1QUk9DX0RBVEEgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQykKLVNIQVJFRCA9IDB4MTAKLVBSSVZBVEUgPSAweDIwCi1WQUxJRF9BVFRSID0gKFBST1RfUkVBRHxQUk9UX1dSSVRFfFBST1RfRVhFQ3xTSEFSRUR8UFJJVkFURSkKLVBST1RfRVhDTCA9IDB4MjAKLV9NQVBfTE9XMzIgPSAweDgwCi1fTUFQX05FVyA9IDB4ODAwMDAwMDAKLWZyb20gVFlQRVMgaW1wb3J0ICoKLU1BRFZfTk9STUFMID0gMAotTUFEVl9SQU5ET00gPSAxCi1NQURWX1NFUVVFTlRJQUwgPSAyCi1NQURWX1dJTExORUVEID0gMwotTUFEVl9ET05UTkVFRCA9IDQKLU1BRFZfRlJFRSA9IDUKLU1TX09MRFNZTkMgPSAweDAKLU1TX1NZTkMgPSAweDQKLU1TX0FTWU5DID0gMHgxCi1NU19JTlZBTElEQVRFID0gMHgyCi1NQ19TWU5DID0gMQotTUNfTE9DSyA9IDIKLU1DX1VOTE9DSyA9IDMKLU1DX0FEVklTRSA9IDQKLU1DX0xPQ0tBUyA9IDUKLU1DX1VOTE9DS0FTID0gNgotTUNMX0NVUlJFTlQgPSAweDEKLU1DTF9GVVRVUkUgPSAweDIKLURESV9NQVBfVkVSU0lPTiA9IDB4MDAwMQotRERJX01GX1VTRVJfTUFQUElORyA9IDB4MQotRERJX01GX0tFUk5FTF9NQVBQSU5HID0gMHgyCi1ERElfTUZfREVWSUNFX01BUFBJTkcgPSAweDQKLURESV9NRV9HRU5FUklDID0gKC0xKQotRERJX01FX1VOSU1QTEVNRU5URUQgPSAoLTIpCi1ERElfTUVfTk9SRVNPVVJDRVMgPSAoLTMpCi1ERElfTUVfVU5TVVBQT1JURUQgPSAoLTQpCi1ERElfTUVfUkVHU1BFQ19SQU5HRSA9ICgtNSkKLURESV9NRV9STlVNQkVSX1JBTkdFID0gKC02KQotRERJX01FX0lOVkFMID0gKC03KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaXByb3BkZWZzLmgKLWRlZiBDRUxMU18xMjc1X1RPX0JZVEVTKG4pOiByZXR1cm4gKChuKSAqIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLWRlZiBCWVRFU19UT18xMjc1X0NFTExTKG4pOiByZXR1cm4gKChuKSAvIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLVBIX0ZST01fUFJPTSA9IDB4MDEKLURESV9QUk9QX1NVQ0NFU1MgPSAwCi1ERElfUFJPUF9OT1RfRk9VTkQgPSAxCi1ERElfUFJPUF9VTkRFRklORUQgPSAyCi1ERElfUFJPUF9OT19NRU1PUlkgPSAzCi1ERElfUFJPUF9JTlZBTF9BUkcgPSA0Ci1ERElfUFJPUF9CVUZfVE9PX1NNQUxMID0gNQotRERJX1BST1BfQ0FOTk9UX0RFQ09ERSA9IDYKLURESV9QUk9QX0NBTk5PVF9FTkNPREUgPSA3Ci1ERElfUFJPUF9FTkRfT0ZfREFUQSA9IDgKLURESV9QUk9QX0ZPVU5EXzEyNzUgPSAyNTUKLVBST1BfMTI3NV9JTlRfU0laRSA9IDQKLURESV9QUk9QX0RPTlRQQVNTID0gMHgwMDAxCi1ERElfUFJPUF9DQU5TTEVFUCA9IDB4MDAwMgotRERJX1BST1BfU1lTVEVNX0RFRiA9IDB4MDAwNAotRERJX1BST1BfTk9UUFJPTSA9IDB4MDAwOAotRERJX1BST1BfRE9OVFNMRUVQID0gMHgwMDEwCi1ERElfUFJPUF9TVEFDS19DUkVBVEUgPSAweDAwMjAKLURESV9QUk9QX1VOREVGX0lUID0gMHgwMDQwCi1ERElfUFJPUF9IV19ERUYgPSAweDAwODAKLURESV9QUk9QX1RZUEVfSU5UID0gMHgwMTAwCi1ERElfUFJPUF9UWVBFX1NUUklORyA9IDB4MDIwMAotRERJX1BST1BfVFlQRV9CWVRFID0gMHgwNDAwCi1ERElfUFJPUF9UWVBFX0NPTVBPU0lURSA9IDB4MDgwMAotRERJX1BST1BfVFlQRV9BTlkgPSAoRERJX1BST1BfVFlQRV9JTlQgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1BST1BfVFlQRV9NQVNLID0gKERESV9QUk9QX1RZUEVfSU5UIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1JFTEFUSVZFX0FERFJFU1NJTkcgPSAicmVsYXRpdmUtYWRkcmVzc2luZyIKLURESV9HRU5FUklDX0FERFJFU1NJTkcgPSAiZ2VuZXJpYy1hZGRyZXNzaW5nIgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaWRldm1hcC5oCi1LTUVNX1BBR0VBQkxFID0gMHgxMDAKLUtNRU1fTk9OX1BBR0VBQkxFID0gMHgyMDAKLVVNRU1fTE9DS0VEID0gMHg0MDAKLVVNRU1fVFJBU0ggPSAweDgwMAotREVWTUFQX09QU19SRVYgPSAxCi1ERVZNQVBfREVGQVVMVFMgPSAweDAwCi1ERVZNQVBfTUFQUElOR19JTlZBTElEID0gMHgwMQotREVWTUFQX0FMTE9XX1JFTUFQID0gMHgwMgotREVWTUFQX1VTRV9QQUdFU0laRSA9IDB4MDQKLURFVk1BUF9TRVRVUF9GTEFHUyA9IFwKLSAgICAgICAgKERFVk1BUF9NQVBQSU5HX0lOVkFMSUQgfCBERVZNQVBfQUxMT1dfUkVNQVAgfCBERVZNQVBfVVNFX1BBR0VTSVpFKQotREVWTUFQX1NFVFVQX0RPTkUgPSAweDEwMAotREVWTUFQX0xPQ0tfSU5JVEVEID0gMHgyMDAKLURFVk1BUF9GQVVMVElORyA9IDB4NDAwCi1ERVZNQVBfTE9DS0VEID0gMHg4MDAKLURFVk1BUF9GTEFHX0xBUkdFID0gMHgxMDAwCi1ERElfVU1FTV9TTEVFUCA9IDB4MAotRERJX1VNRU1fTk9TTEVFUCA9IDB4MDEKLURESV9VTUVNX1BBR0VBQkxFID0gMHgwMgotRERJX1VNRU1fVFJBU0ggPSAweDA0Ci1ERElfVU1FTUxPQ0tfUkVBRCA9IDB4MDEKLURESV9VTUVNTE9DS19XUklURSA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXh1c2RlZnMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25leHVzaW50ci5oCi1CVVNPX1JFViA9IDQKLUJVU09fUkVWXzMgPSAzCi1CVVNPX1JFVl80ID0gNAotREVWT19SRVYgPSAzCi1DQl9SRVYgPSAxCi1ERElfSURFTlRJRklFRCA9ICgwKQotRERJX05PVF9JREVOVElGSUVEID0gKC0xKQotRERJX1BST0JFX0ZBSUxVUkUgPSBFTlhJTwotRERJX1BST0JFX0RPTlRDQVJFID0gMAotRERJX1BST0JFX1BBUlRJQUwgPSAxCi1ERElfUFJPQkVfU1VDQ0VTUyA9IDIKLU1BUERFVl9SRVYgPSAxCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EX05FVyA9IDB4MDAKLV9EX09MRCA9IDB4MDEKLURfVEFQRSA9IDB4MDgKLURfTVRTQUZFID0gMHgwMDIwCi1fRF9RTkVYVExFU1MgPSAweDAwNDAKLV9EX01UT0NTSEFSRUQgPSAweDAwODAKLURfTVRPQ0VYQ0wgPSAweDA4MDAKLURfTVRQVVRTSEFSRUQgPSAweDEwMDAKLURfTVRQRVJRID0gMHgyMDAwCi1EX01UUVBBSVIgPSAweDQwMDAKLURfTVRQRVJNT0QgPSAweDYwMDAKLURfTVRPVVRQRVJJTSA9IDB4ODAwMAotX0RfTVRDQlNIQVJFRCA9IDB4MTAwMDAKLURfTVRJTk5FUl9NT0QgPSAoRF9NVFBVVFNIQVJFRHxfRF9NVE9DU0hBUkVEfF9EX01UQ0JTSEFSRUQpCi1EX01UT1VURVJfTU9EID0gKERfTVRPQ0VYQ0wpCi1EX01QID0gRF9NVFNBRkUKLURfNjRCSVQgPSAweDIwMAotRF9TWU5DU1RSID0gMHg0MDAKLURfREVWTUFQID0gMHgxMDAKLURfSE9UUExVRyA9IDB4NAotU05EWkVSTyA9IDB4MDAxCi1TTkRQSVBFID0gMHgwMDIKLVJOT1JNID0gMHgwMDAKLVJNU0dEID0gMHgwMDEKLVJNU0dOID0gMHgwMDIKLVJNT0RFTUFTSyA9IDB4MDAzCi1SUFJPVERBVCA9IDB4MDA0Ci1SUFJPVERJUyA9IDB4MDA4Ci1SUFJPVE5PUk0gPSAweDAxMAotUlBST1RNQVNLID0gMHgwMWMKLVJGTFVTSE1BU0sgPSAweDAyMAotUkZMVVNIUENQUk9UID0gMHgwMjAKLVJFUlJOT1JNID0gMHgwMDEKLVJFUlJOT05QRVJTSVNUID0gMHgwMDIKLVJFUlJNQVNLID0gKFJFUlJOT1JNfFJFUlJOT05QRVJTSVNUKQotV0VSUk5PUk0gPSAweDAwNAotV0VSUk5PTlBFUlNJU1QgPSAweDAwOAotV0VSUk1BU0sgPSAoV0VSUk5PUk18V0VSUk5PTlBFUlNJU1QpCi1GTFVTSFIgPSAweDAxCi1GTFVTSFcgPSAweDAyCi1GTFVTSFJXID0gMHgwMwotRkxVU0hCQU5EID0gMHgwNAotTUFQSU5PSyA9IDB4MDEKLU5PTUFQSU4gPSAweDAyCi1SRU1BUE9LID0gMHgwNAotTk9SRU1BUCA9IDB4MDgKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1TVFJVSU9fUE9TVFBPTkUgPSAweDA4Ci1TVFJVSU9fTUFQSU4gPSAweDEwCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfWFBHNCA9IDB4MDgKLU1TR19JUEVFSyA9IDB4MTAKLU1TR19ESVNDQVJEVEFJTCA9IDB4MjAKLU1TR19IT0xEU0lHID0gMHg0MAotTVNHX0lHTkVSUk9SID0gMHg4MAotTVNHX0RFTEFZRVJST1IgPSAweDEwMAotTVNHX0lHTkZMT1cgPSAweDIwMAotTVNHX05PTUFSSyA9IDB4NDAwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1fSU5GVElNID0gLTEKLUlORlRJTSA9IF9JTkZUSU0KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZTZiMS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2h0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50dHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2xpbWl0cy5oCi1JTlQ4X01BWCA9ICgxMjcpCi1JTlQxNl9NQVggPSAoMzI3NjcpCi1JTlQzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVE1BWF9NQVggPSBJTlQzMl9NQVgKLUlOVF9MRUFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9MRUFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0xFQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1JTlQ4X01JTiA9ICgtMTI4KQotSU5UMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRNQVhfTUlOID0gSU5UMzJfTUlOCi1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9jb25zdC5oCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQxNl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQzMl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGxsKQotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bCkKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsbCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsbCkKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bGwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gKGMpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfZm10aW8uaAotUFJJZDggPSAiZCIKLVBSSWQxNiA9ICJkIgotUFJJZDMyID0gImQiCi1QUklkNjQgPSAibGQiCi1QUklkNjQgPSAibGxkIgotUFJJZExFQVNUOCA9ICJkIgotUFJJZExFQVNUMTYgPSAiZCIKLVBSSWRMRUFTVDMyID0gImQiCi1QUklkTEVBU1Q2NCA9ICJsZCIKLVBSSWRMRUFTVDY0ID0gImxsZCIKLVBSSWk4ID0gImkiCi1QUklpMTYgPSAiaSIKLVBSSWkzMiA9ICJpIgotUFJJaTY0ID0gImxpIgotUFJJaTY0ID0gImxsaSIKLVBSSWlMRUFTVDggPSAiaSIKLVBSSWlMRUFTVDE2ID0gImkiCi1QUklpTEVBU1QzMiA9ICJpIgotUFJJaUxFQVNUNjQgPSAibGkiCi1QUklpTEVBU1Q2NCA9ICJsbGkiCi1QUklvOCA9ICJvIgotUFJJbzE2ID0gIm8iCi1QUklvMzIgPSAibyIKLVBSSW82NCA9ICJsbyIKLVBSSW82NCA9ICJsbG8iCi1QUklvTEVBU1Q4ID0gIm8iCi1QUklvTEVBU1QxNiA9ICJvIgotUFJJb0xFQVNUMzIgPSAibyIKLVBSSW9MRUFTVDY0ID0gImxvIgotUFJJb0xFQVNUNjQgPSAibGxvIgotUFJJeDggPSAieCIKLVBSSXgxNiA9ICJ4IgotUFJJeDMyID0gIngiCi1QUkl4NjQgPSAibHgiCi1QUkl4NjQgPSAibGx4IgotUFJJeExFQVNUOCA9ICJ4IgotUFJJeExFQVNUMTYgPSAieCIKLVBSSXhMRUFTVDMyID0gIngiCi1QUkl4TEVBU1Q2NCA9ICJseCIKLVBSSXhMRUFTVDY0ID0gImxseCIKLVBSSVg4ID0gIlgiCi1QUklYMTYgPSAiWCIKLVBSSVgzMiA9ICJYIgotUFJJWDY0ID0gImxYIgotUFJJWDY0ID0gImxsWCIKLVBSSVhMRUFTVDggPSAiWCIKLVBSSVhMRUFTVDE2ID0gIlgiCi1QUklYTEVBU1QzMiA9ICJYIgotUFJJWExFQVNUNjQgPSAibFgiCi1QUklYTEVBU1Q2NCA9ICJsbFgiCi1QUkl1OCA9ICJ1IgotUFJJdTE2ID0gInUiCi1QUkl1MzIgPSAidSIKLVBSSXU2NCA9ICJsdSIKLVBSSXU2NCA9ICJsbHUiCi1QUkl1TEVBU1Q4ID0gInUiCi1QUkl1TEVBU1QxNiA9ICJ1IgotUFJJdUxFQVNUMzIgPSAidSIKLVBSSXVMRUFTVDY0ID0gImx1IgotUFJJdUxFQVNUNjQgPSAibGx1IgotU0NOZDE2ID0gImhkIgotU0NOZDMyID0gImQiCi1TQ05kNjQgPSAibGQiCi1TQ05kNjQgPSAibGxkIgotU0NOaTE2ID0gImhpIgotU0NOaTMyID0gImkiCi1TQ05pNjQgPSAibGkiCi1TQ05pNjQgPSAibGxpIgotU0NObzE2ID0gImhvIgotU0NObzMyID0gIm8iCi1TQ05vNjQgPSAibG8iCi1TQ05vNjQgPSAibGxvIgotU0NOdTE2ID0gImh1IgotU0NOdTMyID0gInUiCi1TQ051NjQgPSAibHUiCi1TQ051NjQgPSAibGx1IgotU0NOeDE2ID0gImh4IgotU0NOeDMyID0gIngiCi1TQ054NjQgPSAibHgiCi1TQ054NjQgPSAibGx4IgotUFJJZE1BWCA9ICJsZCIKLVBSSW9NQVggPSAibG8iCi1QUkl4TUFYID0gImx4IgotUFJJdU1BWCA9ICJsdSIKLVBSSWRNQVggPSAibGxkIgotUFJJb01BWCA9ICJsbG8iCi1QUkl4TUFYID0gImxseCIKLVBSSXVNQVggPSAibGx1IgotUFJJZE1BWCA9ICJkIgotUFJJb01BWCA9ICJvIgotUFJJeE1BWCA9ICJ4IgotUFJJdU1BWCA9ICJ1IgotU0NOaU1BWCA9ICJsaSIKLVNDTmRNQVggPSAibGQiCi1TQ05vTUFYID0gImxvIgotU0NOeE1BWCA9ICJseCIKLVNDTmlNQVggPSAibGxpIgotU0NOZE1BWCA9ICJsbGQiCi1TQ05vTUFYID0gImxsbyIKLVNDTnhNQVggPSAibGx4IgotU0NOaU1BWCA9ICJpIgotU0NOZE1BWCA9ICJkIgotU0NOb01BWCA9ICJvIgotU0NOeE1BWCA9ICJ4IgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotU0hSVF9NSU4gPSAoLTMyNzY4KQotU0hSVF9NQVggPSAzMjc2NwotVVNIUlRfTUFYID0gNjU1MzUKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotTE9OR19NQVggPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1QX01ZSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L3JlZ2VuIGIvTGliL3BsYXQtc3Vub3M1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OGNiN2RlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotJ1N1bk9TIDUuJyopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIFNvbGFyaXMgMiBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaCAvdXNyL2luY2x1ZGUvZGxmY24uaAotCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkgYi9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDIzYjQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODM2ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX2YuaAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9BTExSVFJTX0dST1VQID0gMHhlMDAwMDAwMgotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlcy5oCi1kZWYgcXVhZF9sb3coeCk6IHJldHVybiB4LnZhbFswXQotCi1BRFRfRU1BU0tTSVpFID0gOAotU0hSVF9NSU4gPSAtMzI3NjgKLVNIUlRfTUFYID0gMzI3NjcKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1PRkYzMl9NQVggPSBMT05HX01BWAotSVNUQVRfQVNTRVJURUQgPSAwCi1JU1RBVF9BU1NVTUVEID0gMQotSVNUQVRfTk9ORSA9IDIKLU9GRl9NQVggPSBPRkYzMl9NQVgKLUNMT0NLX01BWCA9IExPTkdfTUFYCi1QX01ZSUQgPSAoLTEpCi1QX01ZSE9TVElEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNDA5NgotTkJCWSA9IDgKLU5VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYml0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luNl9mLmgKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9TRVRfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfQU5ZKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X1NFVF9BRERSX0FOWShhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDB4MDEwMDAwMDApCi0KLWRlZiBJTjZfU0VUX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMHgwMTAwMDAwMCkKLQotSU42X01DX0ZMQUdfUEVSTUFORU5UID0gMHgwCi1JTjZfTUNfRkxBR19UUkFOU0lFTlQgPSAweDEKLUlONl9NQ19TQ09QRV9OT0RFTE9DQUwgPSAweDEKLUlONl9NQ19TQ09QRV9MSU5LTE9DQUwgPSAweDIKLUlONl9NQ19TQ09QRV9TSVRFTE9DQUwgPSAweDUKLUlONl9NQ19TQ09QRV9PUkdMT0NBTCA9IDB4OAotSU42X01DX1NDT1BFX0dMT0JBTCA9IDB4RQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29udnNhLmgKLV9fTkVUTElCX1VXMjExX1NWUjQgPSAxCi1fX05FVExJQl9VVzIxMV9YUEc0ID0gMgotX19ORVRMSUJfR0VNSU5JX1NWUjQgPSAzCi1fX05FVExJQl9HRU1JTklfWFBHNCA9IDQKLV9fTkVUTElCX0ZQMV9TVlI0ID0gNQotX19ORVRMSUJfRlAxX1hQRzQgPSA2Ci1fX05FVExJQl9CQVNFX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfR0VNSU5JX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0dFTUlOSV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlci5oCi1MSVRUTEVfRU5ESUFOID0gMTIzNAotQklHX0VORElBTiA9IDQzMjEKLVBEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyX2YuaAotQllURV9PUkRFUiA9IExJVFRMRV9FTkRJQU4KLWRlZiBodG9ubChobCk6IHJldHVybiBfX2h0b25sKGhsKQotCi1kZWYgbnRvaGwobmwpOiByZXR1cm4gX19udG9obChubCkKLQotZGVmIGh0b25zKGhzKTogcmV0dXJuIF9faHRvbnMoaHMpCi0KLWRlZiBudG9ocyhucyk6IHJldHVybiBfX250b2hzKG5zKQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfWFBHNCh2ZXJzaW9uKTogcmV0dXJuICgoKHZlcnNpb24pICUgMikgPT0gMCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSEFTX1NBTEVOKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9HRU1JTklfU1ZSNCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfSUtTKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9GUDFfU1ZSNCkKLQotZGVmIFNBX0ZBTUlMWV9HRVQoc2EpOiByZXR1cm4gXAotCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMwotSVBWNl9BRERSRk9STSA9IDI0Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMjUKLUlQVjZfTVVMVElDQVNUX0lGID0gMjYKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAyNwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IDI4Ci1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IDI5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5zcmVtLmgKLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiByZW1xdWUoYSk6IHJldHVybiBSRU1RVUUoYSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLVNIVVRfUkQgPSAwCi1TSFVUX1dSID0gMQotU0hVVF9SRFdSID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25ldGNvbmZpZy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1ORVRDT05GSUcgPSAiL2V0Yy9uZXRjb25maWciCi1ORVRQQVRIID0gIk5FVFBBVEgiCi1OQ19UUElfQ0xUUyA9IDEKLU5DX1RQSV9DT1RTID0gMgotTkNfVFBJX0NPVFNfT1JEID0gMwotTkNfVFBJX1JBVyA9IDQKLU5DX05PRkxBRyA9IDAwCi1OQ19WSVNJQkxFID0gMG8xCi1OQ19CUk9BRENBU1QgPSAwbzIKLU5DX05PUFJPVE9GTUxZID0gIi0iCi1OQ19MT09QQkFDSyA9ICJsb29wYmFjayIKLU5DX0lORVQgPSAiaW5ldCIKLU5DX0lORVQ2ID0gImluZXQ2IgotTkNfSU1QTElOSyA9ICJpbXBsaW5rIgotTkNfUFVQID0gInB1cCIKLU5DX0NIQU9TID0gImNoYW9zIgotTkNfTlMgPSAibnMiCi1OQ19OQlMgPSAibmJzIgotTkNfRUNNQSA9ICJlY21hIgotTkNfREFUQUtJVCA9ICJkYXRha2l0IgotTkNfQ0NJVFQgPSAiY2NpdHQiCi1OQ19TTkEgPSAic25hIgotTkNfREVDTkVUID0gImRlY25ldCIKLU5DX0RMSSA9ICJkbGkiCi1OQ19MQVQgPSAibGF0IgotTkNfSFlMSU5LID0gImh5bGluayIKLU5DX0FQUExFVEFMSyA9ICJhcHBsZXRhbGsiCi1OQ19OSVQgPSAibml0IgotTkNfSUVFRTgwMiA9ICJpZWVlODAyIgotTkNfT1NJID0gIm9zaSIKLU5DX1gyNSA9ICJ4MjUiCi1OQ19PU0lORVQgPSAib3NpbmV0IgotTkNfR09TSVAgPSAiZ29zaXAiCi1OQ19ORVRXQVJFID0gIm5ldHdhcmUiCi1OQ19OT1BST1RPID0gIi0iCi1OQ19UQ1AgPSAidGNwIgotTkNfVURQID0gInVkcCIKLU5DX0lDTVAgPSAiaWNtcCIKLU5DX0lQWCA9ICJpcHgiCi1OQ19TUFggPSAic3B4IgotTkNfVFBJX0NMVFMgPSAxCi1OQ19UUElfQ09UUyA9IDIKLU5DX1RQSV9DT1RTX09SRCA9IDMKLU5DX1RQSV9SQVcgPSA0Ci1TT0NLX1NUUkVBTSA9IDIKLVNPQ0tfREdSQU0gPSAxCi1TT0NLX1JBVyA9IDQKLVNPQ0tfUkRNID0gNQotU09DS19TRVFQQUNLRVQgPSA2Ci1TT19ERUJVRyA9IDB4MDAwMQotU09fQUNDRVBUQ09OTiA9IDB4MDAwMgotU09fUkVVU0VBRERSID0gMHgwMDA0Ci1TT19LRUVQQUxJVkUgPSAweDAwMDgKLVNPX0RPTlRST1VURSA9IDB4MDAxMAotU09fQlJPQURDQVNUID0gMHgwMDIwCi1TT19VU0VMT09QQkFDSyA9IDB4MDA0MAotU09fTElOR0VSID0gMHgwMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX09SRFJFTCA9IDB4MDIwMAotU09fSU1BU09DS0VUID0gMHgwNDAwCi1TT19NR01UID0gMHgwODAwCi1TT19SRVVTRVBPUlQgPSAweDEwMDAKLVNPX0xJU1RFTklORyA9IDB4MjAwMAotU09fUkRXUiA9IDB4NDAwMAotU09fU0VNQSA9IDB4ODAwMAotU09fRE9OVExJTkdFUiA9ICh+U09fTElOR0VSKQotU09fU05EQlVGID0gMHgxMDAxCi1TT19SQ1ZCVUYgPSAweDEwMDIKLVNPX1NORExPV0FUID0gMHgxMDAzCi1TT19SQ1ZMT1dBVCA9IDB4MTAwNAotU09fU05EVElNRU8gPSAweDEwMDUKLVNPX1JDVlRJTUVPID0gMHgxMDA2Ci1TT19FUlJPUiA9IDB4MTAwNwotU09fVFlQRSA9IDB4MTAwOAotU09fUFJPVE9UWVBFID0gMHgxMDA5Ci1TT19BTExSQVcgPSAweDEwMGEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX05CUyA9IDcKLUFGX0VDTUEgPSA4Ci1BRl9EQVRBS0lUID0gOQotQUZfQ0NJVFQgPSAxMAotQUZfU05BID0gMTEKLUFGX0RFQ25ldCA9IDEyCi1BRl9ETEkgPSAxMwotQUZfTEFUID0gMTQKLUFGX0hZTElOSyA9IDE1Ci1BRl9BUFBMRVRBTEsgPSAxNgotQUZfTklUID0gMTcKLUFGXzgwMiA9IDE4Ci1BRl9PU0kgPSAxOQotQUZfSVNPID0gQUZfT1NJCi1BRl9YMjUgPSAyMAotQUZfT1NJTkVUID0gMjEKLUFGX0dPU0lQID0gMjIKLUFGX1lORVQgPSAyMwotQUZfUk9VVEUgPSAyNAotQUZfTElOSyA9IDI1Ci1wc2V1ZG9fQUZfWFRQID0gMjYKLUFGX0lORVQ2ID0gMjcKLUFGX01BWCA9IDI3Ci1BRl9JTkVUX0JTV0FQID0gMHgwMjAwCi1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX1VOSVggPSBBRl9VTklYCi1QRl9MT0NBTCA9IEFGX0xPQ0FMCi1QRl9JTkVUID0gQUZfSU5FVAotUEZfSU1QTElOSyA9IEFGX0lNUExJTksKLVBGX1BVUCA9IEFGX1BVUAotUEZfQ0hBT1MgPSBBRl9DSEFPUwotUEZfTlMgPSBBRl9OUwotUEZfTkJTID0gQUZfTkJTCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX05JVCA9IEFGX05JVAotUEZfODAyID0gQUZfODAyCi1QRl9PU0kgPSBBRl9PU0kKLVBGX0lTTyA9IFBGX09TSQotUEZfWDI1ID0gQUZfWDI1Ci1QRl9PU0lORVQgPSBBRl9PU0lORVQKLVBGX0dPU0lQID0gQUZfR09TSVAKLVBGX1lORVQgPSBBRl9ZTkVUCi1QRl9ST1VURSA9IEFGX1JPVVRFCi1QRl9MSU5LID0gQUZfTElOSwotcHNldWRvX1BGX1hUUCA9IHBzZXVkb19BRl9YVFAKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX01BWCA9IEFGX01BWAotU09NQVhDT05OID0gNQotU0NNX1JJR0hUUyA9IDEKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfQ1RSVU5DID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfRU9SID0gMHgzMAotTVNHX1dBSVRBTEwgPSAweDIwCi1NU0dfTUFYSU9WTEVOID0gMTYKLWRlZiBPUFRMRU4oeCk6IHJldHVybiAoKCgoeCkgKyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpICogc2l6ZW9mKGludCkpCi0KLUdJQVJHID0gMHgxCi1DT05USSA9IDB4MgotR0lUQUIgPSAweDQKLVNPQ0tFVFNZUyA9IDg4Ci1TT0NLRVRTWVMgPSA4MwotU09fQUNDRVBUID0gMQotU09fQklORCA9IDIKLVNPX0NPTk5FQ1QgPSAzCi1TT19HRVRQRUVSTkFNRSA9IDQKLVNPX0dFVFNPQ0tOQU1FID0gNQotU09fR0VUU09DS09QVCA9IDYKLVNPX0xJU1RFTiA9IDcKLVNPX1JFQ1YgPSA4Ci1TT19SRUNWRlJPTSA9IDkKLVNPX1NFTkQgPSAxMAotU09fU0VORFRPID0gMTEKLVNPX1NFVFNPQ0tPUFQgPSAxMgotU09fU0hVVERPV04gPSAxMwotU09fU09DS0VUID0gMTQKLVNPX1NPQ0tQT0xMID0gMTUKLVNPX0dFVElQRE9NQUlOID0gMTYKLVNPX1NFVElQRE9NQUlOID0gMTcKLVNPX0FESlRJTUUgPSAxOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmVhbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N5bmNoLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kbC5oCi1TSUdOQklUID0gMHg4MDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lwbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGlzcF9wLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90cmFwLmgKLURJVkVSUiA9IDAKLVNHTFNUUCA9IDEKLU5NSUZMVCA9IDIKLUJQVEZMVCA9IDMKLUlOVE9GTFQgPSA0Ci1CT1VOREZMVCA9IDUKLUlOVk9QRkxUID0gNgotTk9FWFRGTFQgPSA3Ci1EQkxGTFQgPSA4Ci1FWFRPVlJGTFQgPSA5Ci1JTlZUU1NGTFQgPSAxMAotU0VHTlBGTFQgPSAxMQotU1RLRkxUID0gMTIKLUdQRkxUID0gMTMKLVBHRkxUID0gMTQKLUVYVEVSUkZMVCA9IDE2Ci1BTElHTkZMVCA9IDE3Ci1NQ0VGTFQgPSAxOAotVVNFUkZMVCA9IDB4MTAwCi1UUlBfUFJFRU1QVCA9IDB4MjAwCi1UUlBfVU5VU0VEID0gMHgyMDEKLVBGX0VSUl9NQVNLID0gMHgwMQotUEZfRVJSX1BBR0UgPSAwCi1QRl9FUlJfUFJPVCA9IDEKLVBGX0VSUl9XUklURSA9IDIKLVBGX0VSUl9VU0VSID0gNAotRVZUX1NUUlNDSEVEID0gMHgwNAotRVZUX0dMT0JDQUxMT1VUID0gMHgwOAotRVZUX0xDTENBTExPVVQgPSAweDEwCi1FVlRfU09GVElOVE1BU0sgPSAoRVZUX1NUUlNDSEVEfEVWVF9HTE9CQ0FMTE9VVHxFVlRfTENMQ0FMTE9VVCkKLVBMMCA9IDAKLVBMMSA9IDEKLVBMMiA9IDIKLVBMMyA9IDMKLVBMNCA9IDQKLVBMNSA9IDUKLVBMNiA9IDYKLVBMSEkgPSA4Ci1QTDcgPSBQTEhJCi1QTEJBU0UgPSBQTDAKLVBMVElNRU9VVCA9IFBMMQotUExESVNLID0gUEw1Ci1QTFNUUiA9IFBMNgotUExUVFkgPSBQTFNUUgotUExNSU4gPSBQTDAKLVBMTUlOID0gUEwxCi1NQVhfSU5UUl9MRVZFTFMgPSAxMAotTUFYX0lOVFJfTkVTVElORyA9IDUwCi1TVFJTQ0hFRCA9IEVWVF9TVFJTQ0hFRAotR0xPQkFMU09GVElOVCA9IEVWVF9HTE9CQ0FMTE9VVAotTE9DQUxTT0ZUSU5UID0gRVZUX0xDTENBTExPVVQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3luY2hfcC5oCi1kZWYgR0VUX1RJTUUodGltZXApOiByZXR1cm4gXAotCi1MS19USFJFU0hPTEQgPSA1MDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0YXNtLmgKLWRlZiByZW1xdWVfbnVsbChlKTogcmV0dXJuIFwKLQotZGVmIExTX0lTRU1QVFkobGlzdHApOiByZXR1cm4gXAotCi1MS19CQVNJQyA9IDB4MQotTEtfU0xFRVAgPSAweDIKLUxLX05PU1RBVFMgPSAweDQKLWRlZiBDWUNMRVNfU0lOQ0UoYyk6IHJldHVybiBDWUNMRVNfQkVUV0VFTigoYyksIENZQ0xFUygpKQotCi1MU0JfTkxLRFMgPSA5MgotRVZUX1JVTlJVTiA9IDB4MDEKLUVWVF9LUFJVTlJVTiA9IDB4MDIKLVNQX1VOTE9DS0VEID0gMAotU1BfTE9DS0VEID0gMQotS1NfTE9DS1RFU1QgPSAweDAxCi1LU19NUFNUQVRTID0gMHgwMgotS1NfREVJTklURUQgPSAweDA0Ci1LU19OVkxUVFJBQ0UgPSAweDA4Ci1SV1NfUkVBRCA9IChvcmQoJ3InKSkKLVJXU19XUklURSA9IChvcmQoJ3cnKSkKLVJXU19VTkxPQ0tFRCA9IChvcmQoJ3UnKSkKLVJXU19CVVNZID0gKG9yZCgnYicpKQotZGVmIFNMRUVQX0xPQ0tPV05FRChsa3ApOiByZXR1cm4gXAotCi1kZWYgU0xFRVBfRElTT1dOKGxrcCk6IHJldHVybiBcCi0KLUtTX05PUFJNUFQgPSAweDAwMDAwMDAxCi1fX0tTX0xPQ0tURVNUID0gS1NfTE9DS1RFU1QKLV9fS1NfTE9DS1RFU1QgPSAwCi1fX0tTX01QU1RBVFMgPSBLU19NUFNUQVRTCi1fX0tTX01QU1RBVFMgPSAwCi1fX0tTX05WTFRUUkFDRSA9IEtTX05WTFRUUkFDRQotX19LU19OVkxUVFJBQ0UgPSAwCi1LU0ZMQUdTID0gKF9fS1NfTE9DS1RFU1R8X19LU19NUFNUQVRTfF9fS1NfTlZMVFRSQUNFKQotS1NWVU5JUFJPQyA9IDEKLUtTVk1QREVCVUcgPSAyCi1LU1ZNUE5PREVCVUcgPSAzCi1LU1ZGTEFHID0gS1NWVU5JUFJPQwotS1NWRkxBRyA9IEtTVk1QREVCVUcKLUtTVkZMQUcgPSBLU1ZNUE5PREVCVUcKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc2lubGluZS5oCi1fQV9TUF9MT0NLRUQgPSAxCi1fQV9TUF9VTkxPQ0tFRCA9IDAKLV9BX0lOVlBMID0gLTEKLWRlZiBfQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKTogcmV0dXJuIFwKLQotZGVmIF9BVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApOiByZXR1cm4gXAotCi1kZWYgQVRPTUlDX0lOVF9SRUFEKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX1JFQUQoYXRvbWljX2ludHApCi0KLWRlZiBBVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCkKLQotZGVmIEFUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKQotCi1kZWYgRlNQSU5fSU5JVChscCk6IHJldHVybgotCi1kZWYgRlNQSU5fTE9DSyhsKTogcmV0dXJuIERJU0FCTEUoKQotCi1kZWYgRlNQSU5fVFJZTE9DSyhsKTogcmV0dXJuIChESVNBQkxFKCksIEJfVFJVRSkKLQotZGVmIEZTUElOX1VOTE9DSyhsKTogcmV0dXJuIEVOQUJMRSgpCi0KLWRlZiBMT0NLX0RFSU5JVChscCk6IHJldHVybgotCi1kZWYgTE9DS19ERUFMTE9DKGxwKTogcmV0dXJuCi0KLWRlZiBMT0NLX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBSV19ERUlOSVQobHApOiByZXR1cm4KLQotZGVmIFJXX0RFQUxMT0MobHApOiByZXR1cm4KLQotZGVmIFJXX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBJU19MT0NLRUQobG9ja3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBcCi0KLWRlZiBUUllMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBMT0NLX1NIX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBSV19SRExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgTE9DS19ERUlOSVQobCk6IHJldHVybgotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgVFJZTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBUUllMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgTE9DS19TSF9QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1NIKChsb2NrcCksIFBMTUlOKQotCi1kZWYgUldfUkRMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFJXX1JETE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBSV19XUkxPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBGU1BJTl9JU19MT0NLRUQoZnNwKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIFNQSU5fSVNfTE9DS0VEKGxvY2twKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIEZTUElOX09XTkVEKGwpOiByZXR1cm4gKEJfVFJVRSkKLQotQ1JfTUxEUkVBTCA9IDB4MDAwMDAwMDEKLUNSX1JEVU1QID0gMHgwMDAwMDAwMgotZGVmIGNyaG9sZChjcmVkcCk6IHJldHVybiBjcmhvbGRuKChjcmVkcCksIDEpCi0KLWRlZiBjcmZyZWUoY3JlZHApOiByZXR1cm4gY3JmcmVlbigoY3JlZHApLCAxKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RybWRlcC5oCi1kZWYgc3RyX2FsaWduZWQoWCk6IHJldHVybiAoKCh1aW50KShYKSAmIChzaXplb2YoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZW5naW5lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUZEX1NFVFNJWkUgPSA0MDk2Ci1GRF9OQkJZID0gOAotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2xvY2tfcC5oCi1DR0JJVFMgPSA0Ci1JREJJVFMgPSAyOAotZGVmIHRvaWRfdW5wYWNrY2coaWR2YWwpOiByZXR1cm4gKCgoaWR2YWwpID4+IElEQklUUykgJiAweGYpCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuICgoaWR2YWwpICYgMHhmZmZmZmZmKQotCi1kZWYgdG9pZF91bnBhY2tjZyhpZHZhbCk6IHJldHVybiAwCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuIChpZHZhbCkKLQotTkNBTExPVVRfSEFTSCA9IDEwMjQKLUNBTExPVVRfTUFYVkFMID0gMHg3ZmZmZmZmZgotVE9fUEVSSU9ESUMgPSAweDgwMDAwMDAwCi1UT19JTU1FRElBVEUgPSAweDgwMDAwMDAwCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLVNFQ0hSID0gKDYwKjYwKQotU0VDREFZID0gKDI0KlNFQ0hSKQotU0VDWVIgPSAoMzY1KlNFQ0RBWSkKLWRlZiBUSU1FX09XTkVEX1IoY2dudW0pOiByZXR1cm4gKEJfVFJVRSkKLQotTE9PUFNFQ09ORFMgPSAxODAwCi1MT09QTUlDUk9TRUNPTkRTID0gKExPT1BTRUNPTkRTICogTUlDUk9TRUMpCi1kZWYgVElDS1NfU0lOQ0UodCk6IHJldHVybiBUSUNLU19CRVRXRUVOKHQsIFRJQ0tTKCkpCi0KLU1BWFJRUyA9IDIKLUVfT0ZGTElORSA9IDB4MDEKLUVfQkFEID0gMHgwMgotRV9TSFVURE9XTiA9IDB4MDQKLUVfRFJJVkVSID0gMHgwOAotRV9ERUZBVUxUS0VFUCA9IDB4MTAwCi1FX0RSSVZFUkJPVU5EID0gMHgyMDAKLUVfRVhDTFVTSVZFID0gMHg0MDAKLUVfQ0dMRUFERVIgPSAweDgwMAotRV9OT1dBWSA9IChFX09GRkxJTkV8RV9CQUR8RV9TSFVURE9XTikKLUVfQk9VTkQgPSAweDAxCi1FX0dMT0JBTCA9IDB4MDAKLUVfVU5BVkFJTCA9IC0xCi1FTkdJTkVfT05MSU5FID0gMQotZGVmIFBST0NFU1NPUl9VTk1BUChlKTogcmV0dXJuICgoZSkgLSBlbmdpbmUpCi0KLUJPT1RFTkcgPSAwCi1RTU9WRUQgPSAweDAwMDEKLVFXQU5UUiA9IDB4MDAwMgotUVdBTlRXID0gMHgwMDA0Ci1RRlVMTCA9IDB4MDAwOAotUVJFQURSID0gMHgwMDEwCi1RVVNFID0gMHgwMDIwCi1RTk9FTkIgPSAweDAwNDAKLVFVUCA9IDB4MDA4MAotUUJBQ0sgPSAweDAxMDAKLVFJTlRFUiA9IDB4MDIwMAotUVBST0NTT04gPSAweDA0MDAKLVFUT0VOQUIgPSAweDA4MDAKLVFGUkVFWkUgPSAweDEwMDAKLVFCT1VORCA9IDB4MjAwMAotUURFRkNOVCA9IDB4NDAwMAotUUVOQUIgPSAweDAwMDEKLVFTVkNCVVNZID0gMHgwMDAyCi1TVFJNX1BVVENOVF9UQUJMRVMgPSAzMQotZGVmIFNUUk1fTVlFTkdfUFVUQ05UKHNkcCk6IHJldHVybiBTVFJNX1BVVENOVChsLmVuZ19udW0sIHNkcCkKLQotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1EQl9XQVNEVVBFRCA9IDB4MQotREJfMlBJRUNFID0gMHgyCi1TVFJMRUFLSEFTSFNaID0gMTAyMQotTVNHTUFSSyA9IDB4MDEKLU1TR05PTE9PUCA9IDB4MDIKLU1TR0RFTElNID0gMHgwNAotTVNHTk9HRVQgPSAweDA4Ci1NU0dMT0cgPSAweDEwCi1NX0RBVEEgPSAweDAwCi1NX1BST1RPID0gMHgwMQotTV9CUkVBSyA9IDB4MDgKLU1fUEFTU0ZQID0gMHgwOQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX1RSQUlMID0gMHgxMgotTV9JT0NBQ0sgPSAweDgxCi1NX0lPQ05BSyA9IDB4ODIKLU1fUENQUk9UTyA9IDB4ODMKLU1fUENTSUcgPSAweDg0Ci1NX1JFQUQgPSAweDg1Ci1NX0ZMVVNIID0gMHg4NgotTV9TVE9QID0gMHg4NwotTV9TVEFSVCA9IDB4ODgKLU1fSEFOR1VQID0gMHg4OQotTV9FUlJPUiA9IDB4OGEKLU1fQ09QWUlOID0gMHg4YgotTV9DT1BZT1VUID0gMHg4YwotTV9JT0NEQVRBID0gMHg4ZAotTV9QQ1JTRSA9IDB4OGUKLU1fU1RPUEkgPSAweDhmCi1NX1NUQVJUSSA9IDB4OTAKLU1fUENDVEwgPSAweDkxCi1NX1BDU0VUT1BUUyA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1TVFJDQU5PTiA9IDB4MDEKLVJFQ09QWSA9IDB4MDIKLVNPX0FMTCA9IDB4MDAzZgotU09fUkVBRE9QVCA9IDB4MDAwMQotU09fV1JPRkYgPSAweDAwMDIKLVNPX01JTlBTWiA9IDB4MDAwNAotU09fTUFYUFNaID0gMHgwMDA4Ci1TT19ISVdBVCA9IDB4MDAxMAotU09fTE9XQVQgPSAweDAwMjAKLVNPX01SRUFET04gPSAweDAwNDAKLVNPX01SRUFET0ZGID0gMHgwMDgwCi1TT19OREVMT04gPSAweDAxMDAKLVNPX05ERUxPRkYgPSAweDAyMDAKLVNPX0lTVFRZID0gMHgwNDAwCi1TT19JU05UVFkgPSAweDA4MDAKLVNPX1RPU1RPUCA9IDB4MTAwMAotU09fVE9OU1RPUCA9IDB4MjAwMAotU09fQkFORCA9IDB4NDAwMAotU09fREVMSU0gPSAweDgwMDAKLVNPX05PREVMSU0gPSAweDAxMDAwMAotU09fU1RSSE9MRCA9IDB4MDIwMDAwCi1TT19MT09QID0gMHgwNDAwMDAKLURSVk9QRU4gPSAweDAKLU1PRE9QRU4gPSAweDEKLUNMT05FT1BFTiA9IDB4MgotT1BFTkZBSUwgPSAtMQotQlBSSV9MTyA9IDEKLUJQUklfTUVEID0gMgotQlBSSV9ISSA9IDMKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1kZWYgc3RyYWxuKGEpOiByZXR1cm4gKGNhZGRyX3QpKChpbnQpKGEpICYgfihzaXplb2YoaW50KS0xKSkKLQotSVBNX0lEID0gMjAwCi1JQ01QTV9JRCA9IDIwMQotVENQTV9JRCA9IDIwMgotVURQTV9JRCA9IDIwMwotQVJQTV9JRCA9IDIwNAotQVBQTV9JRCA9IDIwNQotUklQTV9JRCA9IDIwNgotUFBQTV9JRCA9IDIwNwotQUhETENNX0lEID0gMjA4Ci1NSERMQ1JJUE1fSUQgPSAyMDkKLUhETENNX0lEID0gMjEwCi1QUENJRF9JRCA9IDIxMQotSUdNUE1fSUQgPSAyMTIKLUlQSVBNX0lEID0gMjEzCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQSVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9FQ0hPID0gNwotSVBQT1JUX0RJU0NBUkQgPSA5Ci1JUFBPUlRfU1lTVEFUID0gMTEKLUlQUE9SVF9EQVlUSU1FID0gMTMKLUlQUE9SVF9ORVRTVEFUID0gMTUKLUlQUE9SVF9GVFAgPSAyMQotSVBQT1JUX1RFTE5FVCA9IDIzCi1JUFBPUlRfU01UUCA9IDI1Ci1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1JUFBPUlRfTkFNRVNFUlZFUiA9IDQyCi1JUFBPUlRfV0hPSVMgPSA0MwotSVBQT1JUX01UUCA9IDU3Ci1JUFBPUlRfVEZUUCA9IDY5Ci1JUFBPUlRfUkpFID0gNzcKLUlQUE9SVF9GSU5HRVIgPSA3OQotSVBQT1JUX1RUWUxJTksgPSA4NwotSVBQT1JUX1NVUERVUCA9IDk1Ci1JUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMgotSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzCi1JUFBPUlRfQ01EU0VSVkVSID0gNTE0Ci1JUFBPUlRfRUZTU0VSVkVSID0gNTIwCi1JUFBPUlRfQklGRlVEUCA9IDUxMgotSVBQT1JUX1dIT1NFUlZFUiA9IDUxMwotSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwCi1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRF9MT1cgPSA1MTIKLUlQUE9SVF9SRVNFUlZFRF9ISUdIID0gMTAyMwotSVBQT1JUX1VTRVJSRVNFUlZFRF9MT1cgPSAzMjc2OAotSVBQT1JUX1VTRVJSRVNFUlZFRF9ISUdIID0gNjU1MzUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfVE9TID0gMgotSVBfVFRMID0gMwotSVBfSERSSU5DTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfTE9PUCA9IDEwCi1JUF9BRERfTUVNQkVSU0hJUCA9IDExCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMgotSVBfQlJPQURDQVNUX0lGID0gMTQKLUlQX1JFQ1ZJRklOREVYID0gMTUKLUlQX01VTFRJQ0FTVF9UVEwgPSAxNgotTVJUX0lOSVQgPSAxNwotTVJUX0RPTkUgPSAxOAotTVJUX0FERF9WSUYgPSAxOQotTVJUX0RFTF9WSUYgPSAyMAotTVJUX0FERF9NRkMgPSAyMQotTVJUX0RFTF9NRkMgPSAyMgotTVJUX1ZFUlNJT04gPSAyMwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX0FMTFJUUlNfR1JPVVAgPSAweGUwMDAwMDAyCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9tcC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX21wX2RkaS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5saW5lLmgKLUlQX0hJRVJfQkFTRSA9ICgyMCkKLWRlZiBBU1NFUlRfTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBBU1NFUlRfV1JMT0NLKHgpOiByZXR1cm4KLQotZGVmIEFTU0VSVF9VTkxPQ0soeCk6IHJldHVybgotCi1kZWYgQ0FOUFVUKHEpOiByZXR1cm4gY2FucHV0KChxKSkKLQotZGVmIENBTlBVVE5FWFQocSk6IHJldHVybiBjYW5wdXRuZXh0KChxKSkKLQotSU5FVF9ERUJVRyA9IDEKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5IGIvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNTBhOWMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotZGVmIHF1YWRfbG93KHgpOiByZXR1cm4geC52YWxbMF0KLQotQURUX0VNQVNLU0laRSA9IDgKLVNIUlRfTUlOID0gLTMyNzY4Ci1TSFJUX01BWCA9IDMyNzY3Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotT0ZGMzJfTUFYID0gTE9OR19NQVgKLUlTVEFUX0FTU0VSVEVEID0gMAotSVNUQVRfQVNTVU1FRCA9IDEKLUlTVEFUX05PTkUgPSAyCi1PRkZfTUFYID0gT0ZGMzJfTUFYCi1DTE9DS19NQVggPSBMT05HX01BWAotUF9NWUlEID0gKC0xKQotUF9NWUhPU1RJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDQwOTYKLU5CQlkgPSA4Ci1OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmYuaAotRF9ORVcgPSAweDAwCi1EX09MRCA9IDB4MDEKLURfRE1BID0gMHgwMgotRF9CTEtPRkYgPSAweDQwMAotRF9MRlMgPSAweDgwMDAKLURfU1RSID0gMHgwODAwCi1EX01PRCA9IDB4MTAwMAotRF9QU0VVRE8gPSAweDIwMDAKLURfUkFORE9NID0gMHg0MDAwCi1EX0hPVCA9IDB4MTAwMDAKLURfU0VFS05FRyA9IDB4MDQKLURfVEFQRSA9IDB4MDgKLURfTk9CUktVUCA9IDB4MTAKLURfSU5JVFBVQiA9IDB4MjAKLURfTk9TUEVDTUFDREFUQSA9IDB4NDAKLURfUkRXRVEgPSAweDgwCi1TRUNNQVNLID0gKERfSU5JVFBVQnxEX05PU1BFQ01BQ0RBVEF8RF9SRFdFUSkKLURBRl9SRVFETUEgPSAweDEKLURBRl9QSFlTUkVRID0gMHgyCi1EQUZfUFJFOCA9IDB4NAotREFGX1NUQVRJQyA9IDB4OAotREFGX1NUUiA9IDB4MTAKLURfTVAgPSAweDEwMAotRF9VUEYgPSAweDIwMAotUk9PVEZTX05BTUVTWiA9IDcKLUZNTkFNRVNaID0gOAotTUNEX1ZFUlNJT04gPSAxCi1ESV9CQ0JQID0gMAotRElfTUVESUEgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2Vjc3lzLmgKLUVTX01BQ09QRU5MSUQgPSAxCi1FU19NQUNTWVNMSUQgPSAyCi1FU19NQUNST09UTElEID0gMwotRVNfUFJWSU5GTyA9IDQKLUVTX1BSVlNFVENOVCA9IDUKLUVTX1BSVlNFVFMgPSA2Ci1FU19NQUNBRFRMSUQgPSA3Ci1FU19QUlZJRCA9IDgKLUVTX1RQR0VUTUFKT1IgPSA5Ci1TQV9FWEVDID0gMG8wMQotU0FfV1JJVEUgPSAwbzAyCi1TQV9SRUFEID0gMG8wNAotU0FfU1VCU0laRSA9IDBvMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJvcHRzX2YuaAotWF9TVFIgPSAob3JkKCdTJyk8PDgpCi1YX0lfQkFTRSA9IChYX1NUUnwwbzIwMCkKLVhfSV9OUkVBRCA9IChYX1NUUnwwbzIwMSkKLVhfSV9QVVNIID0gKFhfU1RSfDBvMjAyKQotWF9JX1BPUCA9IChYX1NUUnwwbzIwMykKLVhfSV9MT09LID0gKFhfU1RSfDBvMjA0KQotWF9JX0ZMVVNIID0gKFhfU1RSfDBvMjA1KQotWF9JX1NSRE9QVCA9IChYX1NUUnwwbzIwNikKLVhfSV9HUkRPUFQgPSAoWF9TVFJ8MG8yMDcpCi1YX0lfU1RSID0gKFhfU1RSfDBvMjEwKQotWF9JX1NFVFNJRyA9IChYX1NUUnwwbzIxMSkKLVhfSV9HRVRTSUcgPSAoWF9TVFJ8MG8yMTIpCi1YX0lfRklORCA9IChYX1NUUnwwbzIxMykKLVhfSV9MSU5LID0gKFhfU1RSfDBvMjE0KQotWF9JX1VOTElOSyA9IChYX1NUUnwwbzIxNSkKLVhfSV9QRUVLID0gKFhfU1RSfDBvMjE3KQotWF9JX0ZESU5TRVJUID0gKFhfU1RSfDBvMjIwKQotWF9JX1NFTkRGRCA9IChYX1NUUnwwbzIyMSkKLVhfSV9SRUNWRkQgPSAoWF9TVFJ8MG8yMjIpCi0KLSMgSW5jbHVkZWQgZnJvbSB1bmlzdGQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1SX09LID0gMG8wNAotV19PSyA9IDBvMDIKLVhfT0sgPSAwbzAxCi1GX09LID0gMDAwCi1FRkZfT05MWV9PSyA9IDBvMTAKLUVYX09LID0gMG8yMAotU0VFS19TRVQgPSAwCi1TRUVLX0NVUiA9IDEKLVNFRUtfRU5EID0gMgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OQUNMU19NQVggPSAxMwotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX05QUk9DRVNTRVMgPSAzOQotX1NDX1RPVEFMX01FTU9SWSA9IDQwCi1fU0NfVVNFQUJMRV9NRU1PUlkgPSA0MQotX1NDX0dFTkVSQUxfTUVNT1JZID0gNDIKLV9TQ19ERURJQ0FURURfTUVNT1JZID0gNDMKLV9TQ19OQ0dTX0NPTkYgPSA0NAotX1NDX05DR1NfT05MTiA9IDQ1Ci1fU0NfTUFYX0NQVVNfUEVSX0NHID0gNDYKLV9TQ19DR19TSU1QTEVfSU1QTCA9IDQ3Ci1fU0NfQ0FDSEVfTElORSA9IDQ4Ci1fU0NfU1lTVEVNX0lEID0gNDkKLV9TQ19USFJFQURTID0gNTEKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1MgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDUzCi1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU0Ci1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTUKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU2Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU3Ci1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4Ci1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU5Ci1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNjAKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA2MQotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDYyCi1fU0NfS0VSTkVMX1ZNID0gNjMKLV9TQ19UWk5BTUVfTUFYID0gMzIwCi1fU0NfU1RSRUFNX01BWCA9IDMyMQotX1NDX1hPUEVOX0NSWVBUID0gMzIzCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSAzMjQKLV9TQ19YT1BFTl9TSE0gPSAzMjUKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDMyNwotX1NDX0FFU19PU19WRVJTSU9OID0gMzMwCi1fU0NfQVRFWElUX01BWCA9IDMzMQotX1NDXzJfQ19CSU5EID0gMzUwCi1fU0NfMl9DX0RFViA9IDM1MQotX1NDXzJfQ19WRVJTSU9OID0gMzUyCi1fU0NfMl9DSEFSX1RFUk0gPSAzNTMKLV9TQ18yX0ZPUlRfREVWID0gMzU0Ci1fU0NfMl9GT1JUX1JVTiA9IDM1NQotX1NDXzJfTE9DQUxFREVGID0gMzU2Ci1fU0NfMl9TV19ERVYgPSAzNTcKLV9TQ18yX1VQRSA9IDM1OAotX1NDXzJfVkVSU0lPTiA9IDM1OQotX1NDX0JDX0JBU0VfTUFYID0gMzcwCi1fU0NfQkNfRElNX01BWCA9IDM3MQotX1NDX0JDX1NDQUxFX01BWCA9IDM3MgotX1NDX0JDX1NUUklOR19NQVggPSAzNzMKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gMzgwCi1fU0NfRVhQUl9ORVNUX01BWCA9IDM4MQotX1NDX0xJTkVfTUFYID0gMzgyCi1fU0NfUkVfRFVQX01BWCA9IDM4MwotX1NDX0lPVl9NQVggPSAzOTAKLV9TQ19OUFJPQ19DT05GID0gMzkxCi1fU0NfTlBST0NfT05MTiA9IDM5MgotX1NDX1hPUEVOX1VOSVggPSA0MDAKLV9TQ19TRU1BUEhPUkVTID0gNDQwCi1fQ1NfUEFUSCA9IDEKLV9fT19DU19IT1NUTkFNRSA9IDIKLV9DU19SRUxFQVNFID0gMwotX0NTX1ZFUlNJT04gPSA0Ci1fX09fQ1NfTUFDSElORSA9IDUKLV9fT19DU19BUkNISVRFQ1RVUkUgPSA2Ci1fQ1NfSFdfU0VSSUFMID0gNwotX19PX0NTX0hXX1BST1ZJREVSID0gOAotX0NTX1NSUENfRE9NQUlOID0gOQotX0NTX0lOSVRUQUJfTkFNRSA9IDEwCi1fX09fQ1NfU1lTTkFNRSA9IDExCi1fQ1NfTEZTX0NGTEFHUyA9IDIwCi1fQ1NfTEZTX0xERkxBR1MgPSAyMQotX0NTX0xGU19MSUJTID0gMjIKLV9DU19MRlNfTElOVEZMQUdTID0gMjMKLV9DU19MRlM2NF9DRkxBR1MgPSAyNAotX0NTX0xGUzY0X0xERkxBR1MgPSAyNQotX0NTX0xGUzY0X0xJQlMgPSAyNgotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDI3Ci1fQ1NfQVJDSElURUNUVVJFID0gMTAwCi1fQ1NfQlVTVFlQRVMgPSAxMDEKLV9DU19IT1NUTkFNRSA9IDEwMgotX0NTX0hXX1BST1ZJREVSID0gMTAzCi1fQ1NfS0VSTkVMX1NUQU1QID0gMTA0Ci1fQ1NfTUFDSElORSA9IDEwNQotX0NTX09TX0JBU0UgPSAxMDYKLV9DU19PU19QUk9WSURFUiA9IDEwNwotX0NTX1NZU05BTUUgPSAxMDgKLV9DU19VU0VSX0xJTUlUID0gMTA5Ci1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0ZJTEVTSVpFQklUUyA9IDEwCi1fUE9TSVhfVkVSU0lPTiA9IDE5OTAwOQotX1hPUEVOX1ZFUlNJT04gPSA0Ci1HRl9QQVRIID0gIi9ldGMvZ3JvdXAiCi1QRl9QQVRIID0gIi9ldGMvcGFzc3dkIgotRl9VTE9DSyA9IDAKLUZfTE9DSyA9IDEKLUZfVExPQ0sgPSAyCi1GX1RFU1QgPSAzCi1fUE9TSVhfSk9CX0NPTlRST0wgPSAxCi1fUE9TSVhfU0FWRURfSURTID0gMQotX1BPU0lYX1ZESVNBQkxFID0gMAotTlVMTCA9IDAKLVNURElOX0ZJTEVOTyA9IDAKLVNURE9VVF9GSUxFTk8gPSAxCi1TVERFUlJfRklMRU5PID0gMgotX1hPUEVOX1VOSVggPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fWFBHNCA9IDEKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9QT1NJWF9TRU1BUEhPUkVTID0gMQotX1BPU0lYX1RIUkVBRFMgPSAxCi1fUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gMQotX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDEKLV9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDEKLV9QT1NJWF9USFJFQURfUFJPQ0VTU19TSEFSRUQgPSAxCi1fUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfRk9SVF9SVU4gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfVVBFID0gMQotX0xGU19BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTX0xBUkdFRklMRSA9IDEKLV9MRlM2NF9BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTNjRfTEFSR0VGSUxFID0gMQotX0xGUzY0X1NURElPID0gMQotRk1OQU1FU1ogPSA4Ci1TTkRaRVJPID0gMHgwMDEKLVNORFBJUEUgPSAweDAwMgotUk5PUk0gPSAweDAwMAotUk1TR0QgPSAweDAwMQotUk1TR04gPSAweDAwMgotUk1PREVNQVNLID0gMHgwMDMKLVJQUk9UREFUID0gMHgwMDQKLVJQUk9URElTID0gMHgwMDgKLVJQUk9UTk9STSA9IDB4MDEwCi1SUFJPVE1BU0sgPSAweDAxYwotRkxVU0hSID0gMHgwMQotRkxVU0hXID0gMHgwMgotRkxVU0hSVyA9IDB4MDMKLUZMVVNIQkFORCA9IDB4MDQKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfRElTQ0FSRCA9IDB4MDgKLU1TR19QRUVLSU9DVEwgPSAweDEwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1TVFIgPSAob3JkKCdTJyk8PDgpCi1JX05SRUFEID0gKFNUUnwwbzEpCi1JX1BVU0ggPSAoU1RSfDBvMikKLUlfUE9QID0gKFNUUnwwbzMpCi1JX0xPT0sgPSAoU1RSfDBvNCkKLUlfRkxVU0ggPSAoU1RSfDBvNSkKLUlfU1JET1BUID0gKFNUUnwwbzYpCi1JX0dSRE9QVCA9IChTVFJ8MG83KQotSV9TVFIgPSAoU1RSfDBvMTApCi1JX1NFVFNJRyA9IChTVFJ8MG8xMSkKLUlfR0VUU0lHID0gKFNUUnwwbzEyKQotSV9GSU5EID0gKFNUUnwwbzEzKQotSV9MSU5LID0gKFNUUnwwbzE0KQotSV9VTkxJTksgPSAoU1RSfDBvMTUpCi1JX1BFRUsgPSAoU1RSfDBvMTcpCi1JX0ZESU5TRVJUID0gKFNUUnwwbzIwKQotSV9TRU5ERkQgPSAoU1RSfDBvMjEpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8yMikKLUlfRV9SRUNWRkQgPSAoU1RSfDBvMTYpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8xNikKLUlfUkVDVkZEID0gKFNUUnwwbzIyKQotSV9TV1JPUFQgPSAoU1RSfDBvMjMpCi1JX0dXUk9QVCA9IChTVFJ8MG8yNCkKLUlfTElTVCA9IChTVFJ8MG8yNSkKLUlfUExJTksgPSAoU1RSfDBvMjYpCi1JX1BVTkxJTksgPSAoU1RSfDBvMjcpCi1JX0ZMVVNIQkFORCA9IChTVFJ8MG8zNCkKLUlfQ0tCQU5EID0gKFNUUnwwbzM1KQotSV9HRVRCQU5EID0gKFNUUnwwbzM2KQotSV9BVE1BUksgPSAoU1RSfDBvMzcpCi1JX1NFVENMVElNRSA9IChTVFJ8MG80MCkKLUlfR0VUQ0xUSU1FID0gKFNUUnwwbzQxKQotSV9DQU5QVVQgPSAoU1RSfDBvNDIpCi1JX1NfUkVDVkZEID0gKFNUUnwwbzQzKQotSV9TVEFUUyA9IChTVFJ8MG80NCkKLUlfQklHUElQRSA9IChTVFJ8MG80NSkKLUlfR0VUVFAgPSAoU1RSfDBvNDYpCi1JTkZUSU0gPSAtMQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuIGIvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODk5OGE3Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotVW5peFdhcmUqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBVbml4V2FyZSBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1oMnB5IC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggM2U3MjZhNy4uZTQ4YWQwYiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTMsNyArMTMsNiBAQAogIyAgICBQeXRob24gYnVnIHRyYWNrZXIgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcpIGFuZCBhc3NpZ24gdGhlbSB0byAibGVtYnVyZyIuCiAjCiAjICAgIFN0aWxsIG5lZWRlZDoKLSMgICAgKiBtb3JlIHN1cHBvcnQgZm9yIFdpbkNFCiAjICAgICogc3VwcG9ydCBmb3IgTVMtRE9TIChQeXRob25EWCA/KQogIyAgICAqIHN1cHBvcnQgZm9yIEFtaWdhIGFuZCBvdGhlciBzdGlsbCB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgcnVubmluZyBQeXRob24KICMgICAgKiBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbnMKQEAgLTI1MiwxMyArMjUxLDEzIEBACiAKIF9yZWxlYXNlX2ZpbGVuYW1lID0gcmUuY29tcGlsZShyJyhcdyspWy1fXShyZWxlYXNlfHZlcnNpb24pJywgcmUuQVNDSUkpCiBfbHNiX3JlbGVhc2VfdmVyc2lvbiA9IHJlLmNvbXBpbGUocicoLispJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJlbGVhc2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcZC5dKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyByZWxlYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCiBfcmVsZWFzZV92ZXJzaW9uID0gcmUuY29tcGlsZShyJyhbXjAtOV0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD86IHJlbGVhc2UgKT8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhbXGQuXSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKD86IHJlbGVhc2UgKT8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKIAogIyBTZWUgYWxzbyBodHRwOi8vd3d3Lm5vdmVsbC5jb20vY29vbHNvbHV0aW9ucy9mZWF0dXJlLzExMjUxLmh0bWwKICMgYW5kIGh0dHA6Ly9saW51eG1hZmlhLmNvbS9mYXEvQWRtaW4vcmVsZWFzZS1maWxlcy5odG1sCkBAIC00MDgsOCArNDA3LDggQEAKICAgICByZXR1cm4gdmVyc2lvbgogCiBfdmVyX291dHB1dCA9IHJlLmNvbXBpbGUocicoPzooW1x3IF0rKSAoW1x3Ll0rKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy4qJwotICAgICAgICAgICAgICAgICAgICAgICAgICdcWy4qIChbXGQuXSspXF0pJykKKyAgICAgICAgICAgICAgICAgICAgICAgICByJy4qJworICAgICAgICAgICAgICAgICAgICAgICAgIHInXFsuKiAoW1xkLl0rKVxdKScpCiAKICMgRXhhbXBsZXMgb2YgVkVSIGNvbW1hbmQgb3V0cHV0OgogIwpAQCAtNTA5LDcgKzUwOCw3IEBACiAgICAgICAgIGZyb20gX3dpbnJlZyBpbXBvcnQgT3BlbktleUV4LCBRdWVyeVZhbHVlRXgsIENsb3NlS2V5LCBIS0VZX0xPQ0FMX01BQ0hJTkUKIAogICAgIHdpbnZlciA9IGdldHdpbmRvd3N2ZXJzaW9uKCkKLSAgICBtYWosIG1pbiwgYnVpbGQgPSB3aW52ZXIuX3BsYXRmb3JtX3ZlcnNpb24gb3Igd2ludmVyWzozXQorICAgIG1haiwgbWluLCBidWlsZCA9IHdpbnZlci5wbGF0Zm9ybV92ZXJzaW9uIG9yIHdpbnZlcls6M10KICAgICB2ZXJzaW9uID0gJ3swfS57MX0uezJ9Jy5mb3JtYXQobWFqLCBtaW4sIGJ1aWxkKQogCiAgICAgcmVsZWFzZSA9IChfV0lOMzJfQ0xJRU5UX1JFTEVBU0VTLmdldCgobWFqLCBtaW4pKSBvcgpAQCAtMTA5NSwyMiArMTA5NCwyMiBAQAogCiBfaXJvbnB5dGhvbl9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInSXJvblB5dGhvblxzKicKLSAgICAnKFtcZFwuXSspJwotICAgICcoPzogXCgoW1xkXC5dKylcKSk/JwotICAgICcgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKKyAgICByJyhbXGRcLl0rKScKKyAgICByJyg/OiBcKChbXGRcLl0rKVwpKT8nCisgICAgcicgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKIAogIyBJcm9uUHl0aG9uIGNvdmVyaW5nIDIuNiBhbmQgMi43CiBfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1xkLl0rKVxzKicKLSAgICAnXChJcm9uUHl0aG9uXHMqJwotICAgICdbXGQuXStccyonCi0gICAgJ1woKFtcZC5dKylcKSBvbiAoW1x3Ll0rIFtcZC5dKyg/OiBcKFxkKy1iaXRcKSk/KVwpJworICAgIHInXChJcm9uUHl0aG9uXHMqJworICAgIHInW1xkLl0rXHMqJworICAgIHInXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCiApCiAKIF9weXB5X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1x3LitdKylccyonCi0gICAgJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJwotICAgICdcW1B5UHkgW15cXV0rXF0/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IDE0MWE5OTkuLmM3ZmFjMzMgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5ODIgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFN1biBKYW4gIDEgMjI6MDU6NTkgMjAxNwotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbm11bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdIGV4cHJlc3Npb24pKlxuICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiLCIgIioqIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG5cbkFuIG9wdGlvbmFsIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZFxua2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4iX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICJUeXBlRXJyb3IiXG5leGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCBhc1xudGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvIHBhcnNlXG50aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgImV4cHJlc3Npb24iXG5tdXN0IGV2YWx1YXRlIHRvIGFuICppdGVyYWJsZSouICBFbGVtZW50cyBmcm9tIHRoZXNlIGl0ZXJhYmxlcyBhcmVcbnRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlIGNhbGxcbiJmKHgxLCB4MiwgKnksIHgzLCB4NCkiLCBpZiAqeSogZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLFxuKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLFxuKngyKiwgKnkxKiwgLi4uLCAqeU0qLCAqeDMqLCAqeDQqLlxuXG5BIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgIipleHByZXNzaW9uIiBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqXG50aGUga2V5d29yZCBhcmd1bWVudHMgKGFuZCBhbnkgIioqZXhwcmVzc2lvbiIgYXJndW1lbnRzIC0tIHNlZSBiZWxvdykuXG5TbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICAgICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiBzeW50YXhcbnRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyBub3RcbmFyaXNlLlxuXG5JZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4iZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgYSBrZXl3b3JkIGlzIGFscmVhZHlcbnByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciB1bnBhY2tpbmcpLFxuYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciJcbmNhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxubmFtZXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjU6IEZ1bmN0aW9uIGNhbGxzIGFjY2VwdCBhbnkgbnVtYmVyIG9mICIqIiBhbmRcbiIqKiIgdW5wYWNraW5ncywgcG9zaXRpb25hbCBhcmd1bWVudHMgbWF5IGZvbGxvdyBpdGVyYWJsZSB1bnBhY2tpbmdzXG4oIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICgiKioiKS5cbk9yaWdpbmFsbHkgcHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSAicmV0dXJuIlxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSAiX19jYWxsX18oKSIgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW4gdGhlXG4gICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAotICdjbGFzcyc6IHUnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuJywKLSAnY29tcGFyaXNvbnMnOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuXG5WYWx1ZSBjb21wYXJpc29uc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgdHlwZS5cblxuQ2hhcHRlciAqT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlcyogc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgdmFsdWVcbihpbiBhZGRpdGlvbiB0byB0eXBlIGFuZCBpZGVudGl0eSkuICBUaGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzIGFcbnJhdGhlciBhYnN0cmFjdCBub3Rpb24gaW4gUHl0aG9uOiBGb3IgZXhhbXBsZSwgdGhlcmUgaXMgbm8gY2Fub25pY2FsXG5hY2Nlc3MgbWV0aG9kIGZvciBhbiBvYmplY3RcJ3MgdmFsdWUuICBBbHNvLCB0aGVyZSBpcyBubyByZXF1aXJlbWVudFxudGhhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LFxuZS5nLiBjb21wcmlzZWQgb2YgYWxsIGl0cyBkYXRhIGF0dHJpYnV0ZXMuIENvbXBhcmlzb24gb3BlcmF0b3JzXG5pbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIG5vdGlvbiBvZiB3aGF0IHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaXMuICBPbmVcbmNhbiB0aGluayBvZiB0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnlcbm1lYW5zIG9mIHRoZWlyIGNvbXBhcmlzb24gaW1wbGVtZW50YXRpb24uXG5cbkJlY2F1c2UgYWxsIHR5cGVzIGFyZSAoZGlyZWN0IG9yIGluZGlyZWN0KSBzdWJ0eXBlcyBvZiAib2JqZWN0IiwgdGhleVxuaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyBjYW5cbmN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIGJ5IGltcGxlbWVudGluZyAqcmljaCBjb21wYXJpc29uXG5tZXRob2RzKiBsaWtlICJfX2x0X18oKSIsIGRlc2NyaWJlZCBpbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBlcXVhbGl0eSBjb21wYXJpc29uICgiPT0iIGFuZCAiIT0iKSBpcyBiYXNlZFxub24gdGhlIGlkZW50aXR5IG9mIHRoZSBvYmplY3RzLiAgSGVuY2UsIGVxdWFsaXR5IGNvbXBhcmlzb24gb2Zcbmluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCBlcXVhbGl0eVxuY29tcGFyaXNvbiBvZiBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgaWRlbnRpdGllcyByZXN1bHRzIGluXG5pbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGRlc2lyZSB0aGF0XG5hbGwgb2JqZWN0cyBzaG91bGQgYmUgcmVmbGV4aXZlIChpLmUuICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSIpLlxuXG5BIGRlZmF1bHQgb3JkZXIgY29tcGFyaXNvbiAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSBpcyBub3QgcHJvdmlkZWQ7XG5hbiBhdHRlbXB0IHJhaXNlcyAiVHlwZUVycm9yIi4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yXG5pcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cblxuVGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24sIHRoYXQgaW5zdGFuY2VzIHdpdGhcbmRpZmZlcmVudCBpZGVudGl0aWVzIGFyZSBhbHdheXMgdW5lcXVhbCwgbWF5IGJlIGluIGNvbnRyYXN0IHRvIHdoYXRcbnR5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCB2YWx1ZSBhbmRcbnZhbHVlLWJhc2VkIGVxdWFsaXR5LiAgU3VjaCB0eXBlcyB3aWxsIG5lZWQgdG8gY3VzdG9taXplIHRoZWlyXG5jb21wYXJpc29uIGJlaGF2aW9yLCBhbmQgaW4gZmFjdCwgYSBudW1iZXIgb2YgYnVpbHQtaW4gdHlwZXMgaGF2ZSBkb25lXG50aGF0LlxuXG5UaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBjb21wYXJpc29uIGJlaGF2aW9yIG9mIHRoZSBtb3N0XG5pbXBvcnRhbnQgYnVpbHQtaW4gdHlwZXMuXG5cbiogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzICgqTnVtZXJpYyBUeXBlcyAtLS0gaW50LCBmbG9hdCxcbiAgY29tcGxleCopIGFuZCBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSB0eXBlcyAiZnJhY3Rpb25zLkZyYWN0aW9uIiBhbmRcbiAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLFxuICB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0IGNvbXBsZXggbnVtYmVycyBkbyBub3Qgc3VwcG9ydCBvcmRlclxuICBjb21wYXJpc29uLiAgV2l0aGluIHRoZSBsaW1pdHMgb2YgdGhlIHR5cGVzIGludm9sdmVkLCB0aGV5IGNvbXBhcmVcbiAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgcHJlY2lzaW9uLlxuXG4gIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmVcbiAgc3BlY2lhbC4gIFRoZXkgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzICgieCBpcyB4IiBpcyB0cnVlKSBidXRcbiAgYXJlIG5vdCBlcXVhbCB0byB0aGVtc2VsdmVzICgieCA9PSB4IiBpcyBmYWxzZSkuICBBZGRpdGlvbmFsbHksXG4gIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuXG4gIEZvciBleGFtcGxlLCBib3RoICIzIDwgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsXG4gIHJldHVybiAiRmFsc2UiLlxuXG4qIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gYmVcbiAgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMuICBUaGV5IGNvbXBhcmVcbiAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGVcbiAgbnVtZXJpY2FsIFVuaWNvZGUgY29kZSBwb2ludHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICJvcmQoKSIpIG9mIHRoZWlyIGNoYXJhY3RlcnMuIFszXVxuXG4gIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuXG4qIFNlcXVlbmNlcyAoaW5zdGFuY2VzIG9mICJ0dXBsZSIsICJsaXN0Iiwgb3IgInJhbmdlIikgY2FuIGJlXG4gIGNvbXBhcmVkIG9ubHkgd2l0aGluIGVhY2ggb2YgdGhlaXIgdHlwZXMsIHdpdGggdGhlIHJlc3RyaWN0aW9uIHRoYXRcbiAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSBjb21wYXJpc29uIGFjcm9zc1xuICB0aGVzZSB0eXBlcyByZXN1bHRzIGluIHVuZXF1YWxpdHksIGFuZCBvcmRlcmluZyBjb21wYXJpc29uIGFjcm9zc1xuICB0aGVzZSB0eXBlcyByYWlzZXMgIlR5cGVFcnJvciIuXG5cbiAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCB3aGVyZWJ5IHJlZmxleGl2aXR5IG9mIHRoZSBlbGVtZW50cyBpc1xuICBlbmZvcmNlZC5cblxuICBJbiBlbmZvcmNpbmcgcmVmbGV4aXZpdHkgb2YgZWxlbWVudHMsIHRoZSBjb21wYXJpc29uIG9mIGNvbGxlY3Rpb25zXG4gIGFzc3VtZXMgdGhhdCBmb3IgYSBjb2xsZWN0aW9uIGVsZW1lbnQgIngiLCAieCA9PSB4IiBpcyBhbHdheXMgdHJ1ZS5cbiAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkIGZpcnN0LCBhbmRcbiAgZWxlbWVudCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBvbmx5IGZvciBkaXN0aW5jdCBlbGVtZW50cy4gIFRoaXNcbiAgYXBwcm9hY2ggeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBhcyBhIHN0cmljdCBlbGVtZW50IGNvbXBhcmlzb25cbiAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yIG5vbi1yZWZsZXhpdmVcbiAgZWxlbWVudHMsIHRoZSByZXN1bHQgaXMgZGlmZmVyZW50IHRoYW4gZm9yIHN0cmljdCBlbGVtZW50XG4gIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlIG5vdC1hLW51bWJlclxuICB2YWx1ZXMgZm9yIGV4YW1wbGUgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgY29tcGFyaXNvbiBiZWhhdmlvciB3aGVuXG4gIHVzZWQgaW4gYSBsaXN0OlxuXG4gICAgID4+PiBuYW4gPSBmbG9hdChcJ05hTlwnKVxuICAgICA+Pj4gbmFuIGlzIG5hblxuICAgICBUcnVlXG4gICAgID4+PiBuYW4gPT0gbmFuXG4gICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSBiZWhhdmlvciBvZiBOYU5cbiAgICAgPj4+IFtuYW5dID09IFtuYW5dXG4gICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgdGVzdHMgaWRlbnRpdHkgZmlyc3RcblxuICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zIHdvcmtzIGFzXG4gIGZvbGxvd3M6XG5cbiAgKiBGb3IgdHdvIGNvbGxlY3Rpb25zIHRvIGNvbXBhcmUgZXF1YWwsIHRoZXkgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmdcbiAgICBlbGVtZW50cyBtdXN0IGNvbXBhcmUgZXF1YWwgKGZvciBleGFtcGxlLCAiWzEsMl0gPT0gKDEsMikiIGlzXG4gICAgZmFsc2UgYmVjYXVzZSB0aGUgdHlwZSBpcyBub3QgdGhlIHNhbWUpLlxuXG4gICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlIHNhbWVcbiAgICBhcyB0aGVpciBmaXJzdCB1bmVxdWFsIGVsZW1lbnRzIChmb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSJcbiAgICBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgInggPD0geSIpLiAgSWYgYSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lc1xuICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSxcbiAgICAiWzEsMl0gPCBbMSwyLDNdIiBpcyB0cnVlKS5cblxuKiBNYXBwaW5ncyAoaW5zdGFuY2VzIG9mICJkaWN0IikgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5XG4gIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlIGtleXMgYW5kXG4gIGVsZW1lbnRzIGVuZm9yY2VzIHJlZmxleGl2aXR5LlxuXG4gIE9yZGVyIGNvbXBhcmlzb25zICgiPCIsICI+IiwgIjw9IiwgYW5kICI+PSIpIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgKGluc3RhbmNlcyBvZiAic2V0IiBvciAiZnJvemVuc2V0IikgY2FuIGJlIGNvbXBhcmVkIHdpdGhpblxuICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuXG4gIFRoZXkgZGVmaW5lIG9yZGVyIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZCBzdXBlcnNldFxuICB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAoZm9yIGV4YW1wbGUsXG4gIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nXG4gIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMpLlxuXG4gIENvbXBhcmlzb24gb2Ygc2V0cyBlbmZvcmNlcyByZWZsZXhpdml0eSBvZiBpdHMgZWxlbWVudHMuXG5cbiogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyBpbXBsZW1lbnRlZCxcbiAgc28gdGhleSBpbmhlcml0IHRoZSBkZWZhdWx0IGNvbXBhcmlzb24gYmVoYXZpb3IuXG5cblVzZXItZGVmaW5lZCBjbGFzc2VzIHRoYXQgY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3Igc2hvdWxkXG5mb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG5cbiogRXF1YWxpdHkgY29tcGFyaXNvbiBzaG91bGQgYmUgcmVmbGV4aXZlLiBJbiBvdGhlciB3b3JkcywgaWRlbnRpY2FsXG4gIG9iamVjdHMgc2hvdWxkIGNvbXBhcmUgZXF1YWw6XG5cbiAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuXG4qIENvbXBhcmlzb24gc2hvdWxkIGJlIHN5bW1ldHJpYy4gSW4gb3RoZXIgd29yZHMsIHRoZSBmb2xsb3dpbmdcbiAgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuXG4gICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuXG4gICAgICJ4ICE9IHkiIGFuZCAieSAhPSB4IlxuXG4gICAgICJ4IDwgeSIgYW5kICJ5ID4geCJcblxuICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSB0cmFuc2l0aXZlLiBUaGUgZm9sbG93aW5nIChub24tZXhoYXVzdGl2ZSlcbiAgZXhhbXBsZXMgaWxsdXN0cmF0ZSB0aGF0OlxuXG4gICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuXG4gICAgICJ4IDwgeSBhbmQgeSA8PSB6IiBpbXBsaWVzICJ4IDwgeiJcblxuKiBJbnZlcnNlIGNvbXBhcmlzb24gc2hvdWxkIHJlc3VsdCBpbiB0aGUgYm9vbGVhbiBuZWdhdGlvbi4gSW4gb3RoZXJcbiAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuXG4gICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcblxuICAgICAieCA8IHkiIGFuZCAibm90IHggPj0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcblxuICAgICAieCA+IHkiIGFuZCAibm90IHggPD0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcblxuICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkIGNvbGxlY3Rpb25zIChlLmcuXG4gIHRvIHNlcXVlbmNlcywgYnV0IG5vdCB0byBzZXRzIG9yIG1hcHBpbmdzKS4gU2VlIGFsc28gdGhlXG4gICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG5cblB5dGhvbiBkb2VzIG5vdCBlbmZvcmNlIHRoZXNlIGNvbnNpc3RlbmN5IHJ1bGVzLiBJbiBmYWN0LCB0aGVcbm5vdC1hLW51bWJlciB2YWx1ZXMgYXJlIGFuIGV4YW1wbGUgZm9yIG5vdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXMuXG5cblxuTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbm5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgdGVzdHNcbndoZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbmxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSkiLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGlzXG5hIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbnNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbmluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG5pcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG5kdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cblxuXG5JZGVudGl0eSBjb21wYXJpc29uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiIGlzXG50cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICBPYmplY3QgaWRlbnRpdHlcbmlzIGRldGVybWluZWQgdXNpbmcgdGhlICJpZCgpIiBmdW5jdGlvbi4gICJ4IGlzIG5vdCB5IiB5aWVsZHMgdGhlXG5pbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCi0gJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZnVuY2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiBbIiwiICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5leGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvIHRoZSBuYW1lXG4iZnVuYyIuXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG5cbkNvcm91dGluZXNcbj09PT09PT09PT1cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cbkNvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG5cbkV4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnlcbnBvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgImF3YWl0IiBhbmRcbiJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiIGV4cHJlc3Npb25zLFxuImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSBib2RpZXMuXG5cbkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG5mdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIga2V5d29yZHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuY29yb3V0aW5lcy5cblxuQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcblxuICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuICAgICAgIGRvX3N0dWZmKClcbiAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzXG4qaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbmFzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgaXRlciA9IChJVEVSKVxuICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4gICBydW5uaW5nID0gVHJ1ZVxuICAgd2hpbGUgcnVubmluZzpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4gICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbiAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4gICAgICAgZWxzZTpcbiAgICAgICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cblNlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzIGZvbGxvd3M6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlXG4gIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGFzIGFcbmxlZnQgYXJndW1lbnQgdG8gdGhlIFwnJVwnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgdGhlaXIgb3duXG5jb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKLSAnY3VzdG9taXphdGlvbic6IHUnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXplXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gbWl4IHRvZ2V0aGVyIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGVcbiAgIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzIGJ5IHBhY2tpbmdcbiAgIHRoZW0gaW50byBhIHR1cGxlIGFuZCBoYXNoaW5nIHRoZSB0dXBsZS4gRXhhbXBsZTpcblxuICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOlxuICAgICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYubmljaywgc2VsZi5jb2xvcikpXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuJywKLSAnZGVidWdnZXInOiB1J1xuInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbioqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgcmVhZGluZ1xudGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgYW5kICJjbWQiLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbSB1bmRlclxuY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlICJyZWFkbGluZSIgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuXG4icGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3JcbmV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0IGV4ZWN1dGVzXG5jb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSAqRGVidWdnZXIgQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gIChTZWUgdGhlXG4gICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuICJydW5ldmFsKCkiIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgICJydW4oKSIuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yIGluc3RhbnRpYXRpbmdcbnRoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3Ugd2FudFxudG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgImNvbnRpbnVlIiBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nICJDdHJsLUMiLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGVcbiAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50XHUyMDE0d2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAic3RlcCJcbiAgIGlzIHRoYXQgInN0ZXAiIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGUgIm5leHQiXG4gICBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHkgc3RvcHBpbmcgYXRcbiAgIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuXG51bnQoaWwpIFtsaW5lbm9dXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG5cbiAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gc3RvcCB3aGVuXG4gICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSBudW1iZXIuXG5cbnIoZXR1cm4pXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuXG5jKG9udChpbnVlKSlcblxuICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5jb3VudGVyZWQuXG5cbmoodW1wKSBsaW5lbm9cblxuICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gdGhlXG4gICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgYWdhaW4sXG4gICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvblwndCB3YW50IHRvIHJ1bi5cblxuICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgaW5zdGFuY2VcbiAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhICJmb3IiIGxvb3Agb3Igb3V0XG4gICBvZiBhICJmaW5hbGx5IiBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiAgV2l0aFxuICAgb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgIi0+Ii4gIElmIGFuXG4gICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSAiPj4iLCBpZiBpdCBkaWZmZXJzXG4gICBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yICJsaXN0Ii5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbiAgIE5vdGU6ICJwcmludCgpIiBjYW4gYWxzbyBiZSB1c2VkLCBidXQgaXMgbm90IGEgZGVidWdnZXIgY29tbWFuZFxuICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSAicCIgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyBwcmV0dHktXG4gICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG5cbndoYXRpcyBleHByZXNzaW9uXG5cbiAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG5cbnNvdXJjZSBleHByZXNzaW9uXG5cbiAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4gICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnVuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuaW50ZXJhY3RcblxuICAgU3RhcnQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSAiY29kZSIgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5IGFsbFxuICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICAiZ2xvYmFsIiBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggInNobGV4IiBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zIGFyZVxuICAgcHJlc2VydmVkLiAicmVzdGFydCIgaXMgYW4gYWxpYXMgZm9yICJydW4iLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGVcbiAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKLSAnZGVsJzogdSdcblRoZSAiZGVsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSAiZ2xvYmFsIlxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG4iTmFtZUVycm9yIiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKLSAnZGljdCc6IHUnXG5EaWN0aW9uYXJ5IGRpc3BsYXlzXG4qKioqKioqKioqKioqKioqKioqXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuXG4gICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIHwgIioqIiBvcl9leHByXG4gICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuXG5JZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgZGljdGlvbmFyeTpcbmVhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG5jb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5XCdzIHZhbHVlXG5mb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG5cbkEgZG91YmxlIGFzdGVyaXNrICIqKiIgZGVub3RlcyAqZGljdGlvbmFyeSB1bnBhY2tpbmcqLiBJdHMgb3BlcmFuZFxubXVzdCBiZSBhICptYXBwaW5nKi4gIEVhY2ggbWFwcGluZyBpdGVtIGlzIGFkZGVkIHRvIHRoZSBuZXdcbmRpY3Rpb25hcnkuICBMYXRlciB2YWx1ZXMgcmVwbGFjZSB2YWx1ZXMgYWxyZWFkeSBzZXQgYnkgZWFybGllclxua2V5L2RhdHVtIHBhaXJzIGFuZCBlYXJsaWVyIGRpY3Rpb25hcnkgdW5wYWNraW5ncy5cblxuTmV3IGluIHZlcnNpb24gMy41OiBVbnBhY2tpbmcgaW50byBkaWN0aW9uYXJ5IGRpc3BsYXlzLCBvcmlnaW5hbGx5XG5wcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAotICdkeW5hbWljLWZlYXR1cmVzJzogdSdcbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbk5hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0IGNvbXBpbGVcbnRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcblxuICAgaSA9IDEwXG4gICBkZWYgZigpOlxuICAgICAgIHByaW50KGkpXG4gICBpID0gNDJcbiAgIGYoKVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKLSAnZWxzZSc6IHUnXG5UaGUgImlmIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAotICdleGNlcHRpb25zJzogdSdcbkV4Y2VwdGlvbnNcbioqKioqKioqKipcblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4ZWNtb2RlbCc6IHUnXG5FeGVjdXRpb24gbW9kZWxcbioqKioqKioqKioqKioqKlxuXG5cblN0cnVjdHVyZSBvZiBhIHByb2dyYW1cbj09PT09PT09PT09PT09PT09PT09PT1cblxuQSBQeXRob24gcHJvZ3JhbSBpcyBjb25zdHJ1Y3RlZCBmcm9tIGNvZGUgYmxvY2tzLiBBICpibG9jayogaXMgYSBwaWVjZVxub2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGEgdW5pdC4gVGhlIGZvbGxvd2luZyBhcmVcbmJsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3MgZGVmaW5pdGlvbi4gRWFjaFxuY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdCBmaWxlIChhIGZpbGUgZ2l2ZW5cbmFzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWQgYXMgYSBjb21tYW5kIGxpbmVcbmFyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQSBzY3JpcHQgY29tbWFuZCAoYVxuY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZSB3aXRoIHRoZSBcJyoqLWMqKlwnXG5vcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBidWlsdC1pblxuZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG5cbkEgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgY29udGFpbnNcbnNvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRldGVybWluZXNcbndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9ja1wncyBleGVjdXRpb24gaGFzXG5jb21wbGV0ZWQuXG5cblxuTmFtaW5nIGFuZCBiaW5kaW5nXG49PT09PT09PT09PT09PT09PT1cblxuXG5CaW5kaW5nIG9mIG5hbWVzXG4tLS0tLS0tLS0tLS0tLS0tXG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0IGJsb2NrLFxudW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlXG5tb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZVxuY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlXG5ibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuXG5FYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAqYmluZGluZypcbm9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiBydWxlcy5cblxuXG5SZXNvbHV0aW9uIG9mIG5hbWVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkEgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgbG9jYWxcbnZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiB0aGVcbmRlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSBibG9ja3NcbmNvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrIGludHJvZHVjZXNcbmEgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gSWZcbnRoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbFxudmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50IHdoZXJlIHRoZVxubmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG5kZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxud2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cbklmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSBieVxuc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSBuYW1lc3BhY2Vcbm9mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkIGZpcnN0LiAgSWZcbnRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gIFRoZVxuImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uXG5pbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlIHZhcmlhYmxlXG5jb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSBnbG9iYWwuXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgbm90XG5leGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5DbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiBhcmVcbnNwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gaXMgYW5cbmV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSByZWZlcmVuY2VzXG5mb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uIHRoYXRcbnVuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFRoZVxubmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IG9mXG50aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0b1xudGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS1cbnRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSB0aGV5IGFyZVxuaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nXG53aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5cbkJ1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk5hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0IGNvbXBpbGVcbnRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcblxuICAgaSA9IDEwXG4gICBkZWYgZigpOlxuICAgICAgIHByaW50KGkpXG4gICBpID0gNDJcbiAgIGYoKVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4cHJsaXN0cyc6IHUnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCAgICA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4gICBzdGFycmVkX2xpc3QgICAgICAgOjo9IHN0YXJyZWRfaXRlbSAoICIsIiBzdGFycmVkX2l0ZW0gKSogWyIsIl1cbiAgIHN0YXJyZWRfZXhwcmVzc2lvbiA6Oj0gZXhwcmVzc2lvbiB8ICggc3RhcnJlZF9pdGVtICIsIiApKiBbc3RhcnJlZF9pdGVtXVxuICAgc3RhcnJlZF9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgIioiIG9yX2V4cHJcblxuRXhjZXB0IHdoZW4gcGFydCBvZiBhIGxpc3Qgb3Igc2V0IGRpc3BsYXksIGFuIGV4cHJlc3Npb24gbGlzdFxuY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGUgbGVuZ3RoIG9mIHRoZSB0dXBsZVxuaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZSBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFuIGFzdGVyaXNrICIqIiBkZW5vdGVzICppdGVyYWJsZSB1bnBhY2tpbmcqLiAgSXRzIG9wZXJhbmQgbXVzdCBiZSBhblxuKml0ZXJhYmxlKi4gIFRoZSBpdGVyYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgc2VxdWVuY2Ugb2YgaXRlbXMsIHdoaWNoXG5hcmUgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSwgbGlzdCwgb3Igc2V0LCBhdCB0aGUgc2l0ZSBvZiB0aGVcbnVucGFja2luZy5cblxuTmV3IGluIHZlcnNpb24gMy41OiBJdGVyYWJsZSB1bnBhY2tpbmcgaW4gZXhwcmVzc2lvbiBsaXN0cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiAiKCkiLilcbicsCi0gJ2Zsb2F0aW5nJzogdSdcbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5GbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuZGVmaW5pdGlvbnM6XG5cbiAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4gICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4gICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4gICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcblxuTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nXG5yYWRpeCAxMC4gRm9yIGV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgbnVtYmVyXG5hcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBTb21lIGV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOlxuXG4gICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMFxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgIi0xIlxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnZm9yJzogdSdcblRoZSAiZm9yIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSBzZXF1ZW5jZVxuKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4iZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uKSxcbnRoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgbG9vcFxudGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBjb250aW51ZXNcbndpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG5pdGVtLlxuXG5UaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0IGxpc3QuXG5UaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyBpbmNsdWRpbmdcbnRob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcblxuICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuICAgICAgIHByaW50KGkpXG4gICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIG5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgaVxuOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCi0gJ2Zvcm1hdHN0cmluZ3MnOiB1J1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgIkZvcm1hdHRlciIsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuInt7IiBhbmQgIn19Ii5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgIlwnIVwnIiwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXQgZm9yIHRoZVxucmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyAiXCcxMFwnIiBvclxuIlwnOi1dXCciKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnkgYW55XG5udW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtXG4iXCcubmFtZVwnIiBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgImdldGF0dHIoKSIsIHdoaWxlIGFuXG5leHByZXNzaW9uIG9mIHRoZSBmb3JtICJcJ1tpbmRleF1cJyIgZG9lcyBhbiBpbmRleCBsb29rdXAgdXNpbmdcbiJfX2dldGl0ZW1fXygpIi5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvICJcJ3t9IHt9XCciIGlzIGVxdWl2YWxlbnQgdG8gIlwnezB9IHsxfVwnIi5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlICJfX2Zvcm1hdF9fKCkiXG5tZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgZGVzaXJhYmxlIHRvXG5mb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLCBvdmVycmlkaW5nIGl0cyBvd25cbmRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiB3aGljaCBjYWxsc1xuInN0cigpIiBvbiB0aGUgdmFsdWUsICJcJyFyXCciIHdoaWNoIGNhbGxzICJyZXByKCkiIGFuZCAiXCchYVwnIiB3aGljaFxuY2FsbHMgImFzY2lpKCkiLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgZmllbGQgbmFtZSxcbmNvbnZlcnNpb24gZmxhZyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBkZWVwZXIgbmVzdGluZyBpcyBub3RcbmFsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlXG5zdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzXG5hbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYSB2YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gImZvcm1hdCgpIiBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvd1xudGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yIGZvcm1hdFxuc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgb25seVxuc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuXG5BIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgInN0cigpIiBvbiB0aGUgdmFsdWUuIEEgbm9uLWVtcHR5XG5mb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5JZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCpcbmNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmXG5vbWl0dGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoIiJ7IiIgb3JcbiIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QuXG5Ib3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNlcnQgYSBjdXJseSBicmFjZSB3aXRoIGEgbmVzdGVkXG5yZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgbGltaXRhdGlvbiBkb2VzblwndCBhZmZlY3QgdGhlICJmb3JtYXQoKSJcbmZ1bmN0aW9uLlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSBkZWZhdWx0IHdoZW4gXCcwXCcgIHxcbiAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdeXCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAiXCcwb1wnIiwgb3JcbiJcJzB4XCciIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAiXCdHXCciXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kcyBzZXBhcmF0b3IuXG5Gb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlICJcJ25cJyIgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZVxuaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAqKlBFUCAzNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5XaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqIGZpZWxkIGJ5IGFcbnplcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljXG50eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhICpmaWxsKiBjaGFyYWN0ZXIgb2YgIlwnMFwnIiB3aXRoIGFuXG4qYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG5cblRoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgZGlnaXRzIHNob3VsZFxuYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlXG5mb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50XG5mb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCAiXCdnXCciIG9yICJcJ0dcJyIuICBGb3Igbm9uLVxubnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtIGluIG90aGVyXG53b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgY29udGVudC4gVGhlXG4qcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG5cbkZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlIHByZXNlbnRlZC5cblxuVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdzXCciICAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdHlwZSBmb3Igc3RyaW5ncyBhbmQgICAgfFxuICAgfCAgICAgICAgICAgfCBtYXkgYmUgb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICJcJ3NcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDIuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnY1wnIiAgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlIHByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdkXCciICAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTAuICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnb1wnIiAgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDguICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgdXBwZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5JbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gYmUgZm9ybWF0dGVkXG53aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93IChleGNlcHQgIlwnblwnIlxuYW5kICJOb25lIikuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlIGludGVnZXJcbnRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0IGNvbnZlcnRzICJuYW4iIHRvICJOQU4iICAgIHxcbiAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICJwID49IDEiLCB0aGlzICAgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiIHxcbiAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9IGV4cCA8IHAiLCB0aGUgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdmXCciIGFuZCAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbiAicC0xLWV4cCIuICBPdGhlcndpc2UsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kIHByZWNpc2lvbiAicC0xIi4gSW4gYm90aCAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSByZW1vdmVkIGZyb20gdGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyBhbHNvIHJlbW92ZWQgaWYgICAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyBpdC4gIFBvc2l0aXZlIGFuZCAgfFxuICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHplcm8sIGFuZCBuYW5zLCAgIHxcbiAgIHwgICAgICAgICAgIHwgYXJlIGZvcm1hdHRlZCBhcyAiaW5mIiwgIi1pbmYiLCAiMCIsICItMCIgYW5kICJuYW4iICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgfFxuICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgcHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0IHN3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4gICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZ1wnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCBmaXhlZC1wb2ludCBub3RhdGlvbiwgd2hlbiAgIHxcbiAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSBkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4gICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzIGFzIGhpZ2ggYXMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgdG8gbWF0Y2ggdGhlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgZm9ybWF0ICAgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCBhbmRcbmNvbXBhcmlzb24gd2l0aCB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZCAiJSItZm9ybWF0dGluZyxcbndpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgIiUiLiBGb3JcbmV4YW1wbGUsICJcJyUwMy4yZlwnIiBjYW4gYmUgdHJhbnNsYXRlZCB0byAiXCd7OjAzLjJmfVwnIi5cblxuVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgb3B0aW9ucywgc2hvd25cbmluIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG5cbiAgID4+PiBcJ3swfSwgezF9LCB7Mn1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7fSwge30sIHt9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpICAjIDMuMSsgb25seVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KCpcJ2FiY1wnKSAgICAgICMgdW5wYWNraW5nIGFyZ3VtZW50IHNlcXVlbmNlXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezB9ezF9ezB9XCcuZm9ybWF0KFwnYWJyYVwnLCBcJ2NhZFwnKSAgICMgYXJndW1lbnRzXCcgaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbiAgIFwnYWJyYWNhZGFicmFcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG5cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdChsYXRpdHVkZT1cJzM3LjI0TlwnLCBsb25naXR1ZGU9XCctMTE1LjgxV1wnKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG4gICA+Pj4gY29vcmQgPSB7XCdsYXRpdHVkZVwnOiBcJzM3LjI0TlwnLCBcJ2xvbmdpdHVkZVwnOiBcJy0xMTUuODFXXCd9XG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQoKipjb29yZClcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgYXR0cmlidXRlczpcblxuICAgPj4+IGMgPSAzLTVqXG4gICA+Pj4gKFwnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IHswLnJlYWx9IFwnXG4gICAuLi4gIFwnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS5cJykuZm9ybWF0KGMpXG4gICBcJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLlwnXG4gICA+Pj4gY2xhc3MgUG9pbnQ6XG4gICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbiAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ1BvaW50KHtzZWxmLnh9LCB7c2VsZi55fSlcJy5mb3JtYXQoc2VsZj1zZWxmKVxuICAgLi4uXG4gICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuICAgXCdQb2ludCg0LCAyKVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBpdGVtczpcblxuICAgPj4+IGNvb3JkID0gKDMsIDUpXG4gICA+Pj4gXCdYOiB7MFswXX07ICBZOiB7MFsxXX1cJy5mb3JtYXQoY29vcmQpXG4gICBcJ1g6IDM7ICBZOiA1XCdcblxuUmVwbGFjaW5nICIlcyIgYW5kICIlciI6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgIiV4IiBhbmQgIiVvIiBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50IGJhc2VzOlxuXG4gICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46IHswOmJ9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwXCdcbiAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiB7MDojYn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTBcJ1xuXG5Vc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuXG4gICA+Pj4gXCd7Oix9XCcuZm9ybWF0KDEyMzQ1Njc4OTApXG4gICBcJzEsMjM0LDU2Nyw4OTBcJ1xuXG5FeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcblxuICAgPj4+IHBvaW50cyA9IDE5XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOiAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFXG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogdSdcbkZ1bmN0aW9uIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbmV4Y2VwdCB0aGF0IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBub3QgdGVtcG9yYXJpbHkgYm91bmQgdG8gdGhlIG5hbWVcbiJmdW5jIi5cblxuV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgKmFyZ3VtZW50KiBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gdGhpc1xuaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZVxuZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXNcbmV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLVxuY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnRcbnRvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYVxubGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5XG5hcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuXG5UaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2VcbiJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlXG5mdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iIippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55XG5leGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmIHRoZVxuZm9ybSAiIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yICIiKmlkZW50aWZpZXIiIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiIGZvbGxvd2luZ1xudGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gdGhvc2Vcbm9mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5IGhhdmVcbiJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlIHBhcmFtZXRlclxubGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gYW5kIGFyZVxuZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyBtYXlcbmJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS5cblRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBhXG5mdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG5kaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlICJfX2Fubm90YXRpb25zX18iXG5hdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG5leHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGFcbmV4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjtcbmEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yXG5hc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYVxuZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIiJkZWYiIlxuc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsXG5mdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZFxuaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG5cbiAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKLSAnZ2xvYmFsJzogdSdcblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cblxuTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgY29kZVxuYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgZm9ybWFsXG5wYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgImltcG9ydCIgc3RhdGVtZW50LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90XG5lbmZvcmNlIHRoZSB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSB0aGlzXG5mcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHkgY2hhbmdlXG50aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlICJnbG9iYWwiIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBwYXJzZXIuICBJdFxuYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlICJnbG9iYWwiXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgImdsb2JhbCIgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhIHN0cmluZ1xub3IgY29kZSBvYmplY3Qgc3VwcGxpZWQgdG8gdGhlIGJ1aWx0LWluICJleGVjKCkiIGZ1bmN0aW9uIGRvZXMgbm90XG5hZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSAiZ2xvYmFsIiBzdGF0ZW1lbnRzIGluIHRoZVxuY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGUgImV2YWwoKSJcbmFuZCAiY29tcGlsZSgpIiBmdW5jdGlvbnMuXG4nLAotICdpZC1jbGFzc2VzJzogdSdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuIl8qIlxuICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyICJfIlxuICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGVcbiAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gIFdoZW4gbm90XG4gICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90IGRlZmluZWQuXG4gICBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSAiXyIgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG4iX18qX18iXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzIG5vdFxuICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2Ugd2l0aG91dFxuICAgd2FybmluZy5cblxuIl9fKiJcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAotICdpZGVudGlmaWVycyc6IHUnXG5JZGVudGlmaWVycyBhbmQga2V5d29yZHNcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5JZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5IHRoZVxuZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG5cblRoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIHN0YW5kYXJkXG5hbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCBiZWxvdzsgc2VlIGFsc29cbioqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5XaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzIGZvclxuaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZVxubGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgdGhlIGZpcnN0XG5jaGFyYWN0ZXIsIHRoZSBkaWdpdHMgIjAiIHRocm91Z2ggIjkiLlxuXG5QeXRob24gMy4wIGludHJvZHVjZXMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZyb20gb3V0c2lkZSB0aGUgQVNDSUlcbnJhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgY2xhc3NpZmljYXRpb25cbnVzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzIGluY2x1ZGVkIGluIHRoZVxuInVuaWNvZGVkYXRhIiBtb2R1bGUuXG5cbklkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cblxuICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCBMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSBPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbiAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzIGNoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoIHRoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbiAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4gICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG5cblRoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG5cbiogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG5cbiogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG5cbiogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG5cbiogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcblxuKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuXG4qICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuXG4qICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG5cbiogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG5cbiogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuXG4qICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG5cbiogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiBQcm9wTGlzdC50eHQgdG9cbiAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4qICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuXG5BbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlIHBhcnNpbmc7XG5jb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG5cbkEgbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXJzIGZvclxuVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWYnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnaW1hZ2luYXJ5JzogdSdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCAiKDMrNGopIi4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiB1J1xuVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5UaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZHVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBhcmVcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgZm9sbG93aW5nXG4gICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgcHVibGljXG5uYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZVxuc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0IG11c3RcbmJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0XG5tb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kXG5hcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljXG5uYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90XG5iZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyICgiXCdfXCciKS4gICJfX2FsbF9fIiBzaG91bGQgY29udGFpblxudGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nXG5pdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlXG5pbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG5cblRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIgLS0tIGlzIG9ubHlcbmFsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4gIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yXG5mdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgImZyb20iIHlvdVxuY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuImZyb20gLiBpbXBvcnQgbW9kIiBmcm9tIGEgbW9kdWxlIGluIHRoZSAicGtnIiBwYWNrYWdlIHRoZW4geW91IHdpbGxcbmVuZCB1cCBpbXBvcnRpbmcgInBrZy5tb2QiLiBJZiB5b3UgZXhlY3V0ZSAiZnJvbSAuLnN1YnBrZzIgaW1wb3J0IG1vZCJcbmZyb20gd2l0aGluICJwa2cuc3VicGtnMSIgeW91IHdpbGwgaW1wb3J0ICJwa2cuc3VicGtnMi5tb2QiLiBUaGVcbnNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXMgY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSBkeW5hbWljYWxseSB0aGUgbW9kdWxlcyB0byBiZSBsb2FkZWQuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbiB3aGVyZSB0aGUgZmVhdHVyZVxuYmVjb21lcyBzdGFuZGFyZC5cblxuVGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zXG5vZiBQeXRob24gdGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXRcbmFsbG93cyB1c2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZVxucmVsZWFzZSBpbiB3aGljaCB0aGUgZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgImFic29sdXRlX2ltcG9ydCIsXG4iZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsICJ1bmljb2RlX2xpdGVyYWxzIiwgInByaW50X2Z1bmN0aW9uIixcbiJuZXN0ZWRfc2NvcGVzIiBhbmQgIndpdGhfc3RhdGVtZW50Ii4gIFRoZXkgYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZVxudGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgd2lsbFxuYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4iY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlIHN0YXRlbWVudFxud2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkIHdpdGggdGhlXG5mdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbiJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgZGV0YWlscy5cblxuQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCB3aWxsXG50YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0IG5hbWVcbnRvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBpblxuZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuZXhlY3V0ZWQuXG5cblNlZSBhbHNvOiAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cblxuICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCi0gJ2luJzogdSdcbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG4nLAotICdpbnRlZ2Vycyc6IHUnXG5JbnRlZ2VyIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cbkludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgYmluaW50ZWdlclxuICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4gICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4gICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4gICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuICAgaGV4aW50ZWdlciAgICAgOjo9ICIwIiAoIngiIHwgIlgiKSBoZXhkaWdpdCtcbiAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4gICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4gICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcblxuVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXRcbmNhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cblxuTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuXG5UaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvblxudXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG5cblNvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4gICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJywKLSAnbGFtYmRhJzogdSdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvIGNyZWF0ZVxuYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb24iXG55aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb25cbm9iamVjdCBkZWZpbmVkIHdpdGg6XG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKLSAnbGlzdHMnOiB1J1xuTGlzdCBkaXNwbGF5c1xuKioqKioqKioqKioqKlxuXG5BIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCBpblxuc3F1YXJlIGJyYWNrZXRzOlxuXG4gICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG5cbkEgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nIHNwZWNpZmllZFxuYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG5zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWRcbmZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG5XaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbmVsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKLSAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cblxuQmluZGluZyBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PT09PVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ25vbmxvY2FsJzogdSdcblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBleGNsdWRpbmdcbmdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXNcbnRvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbmVuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGVcbmJlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gYVxuImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgY3JlYXRlZFxuY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCi0gJ251bWJlcnMnOiB1J1xuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgbWVtb3J5XG5hZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKHNvXG55b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gMSIsXG4iYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgdmFsdWVcbm9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICJjIlxuYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG5jcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lIG9iamVjdFxudG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCi0gJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuZGVmaW5pdGlvbi5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsIGRlc2NyaXB0b3IsIG9yIGdlbmVyYXRvclxuICAgaW5zdGFuY2UuXG5cbmRlZmluaXRpb24uX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgZGVzY3JpcHRvciwgb3JcbiAgIGdlbmVyYXRvciBpbnN0YW5jZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWl6ZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIG1peCB0b2dldGhlciB0aGUgaGFzaCB2YWx1ZXMgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlXG4gICBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBieSBwYWNraW5nXG4gICB0aGVtIGludG8gYSB0dXBsZSBhbmQgaGFzaGluZyB0aGUgdHVwbGUuIEV4YW1wbGU6XG5cbiAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKTpcbiAgICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5uYW1lLCBzZWxmLm5pY2ssIHNlbGYuY29sb3IpKVxuXG4gICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzXG4gICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgIlB5X3NzaXplX3QiLiAgVGhpc1xuICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uIDMyLWJpdFxuICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHNcbiAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsXG4gICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggInB5dGhvbiAtY1xuICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgIl9fZXFfXygpIlxuICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzIGl0ZW1zIGluXG4gICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgYW5kXG4gICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgY29sbGVjdGlvbnNcbiAgIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSBvYmplY3RcJ3MgaGFzaFxuICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiBtZXRob2RzIGJ5XG4gICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2hcbiAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09IGhhc2goeSkiLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAiX19oYXNoX18oKSJcbiAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gIFdoZW4gdGhlXG4gICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzXG4gICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvXG4gICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSBpbnRlcnByZXRlclxuICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiIHRoYXRcbiAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kXG4gICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdFxuICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlIG9iamVjdCBpc1xuICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyBhcmVcbiAgIGNvbnNpZGVyZWQgdHJ1ZS5cblxuXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSBjbGFzcyBib2R5IGlzXG5leGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlXG5yZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuXG5UaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXplZCBieSBwYXNzaW5nIHRoZVxuIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgaW5zdGFuY2VzXG5vZiAiTWV0YSI6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAidHlwZSgpIiBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcblxuKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuXG5cblByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSxcbml0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLFxuKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbVxudGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSAiZGljdCgpIiBpbnN0YW5jZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG5cbiAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuXG5cbkV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAiZXhlYygpIiBpcyB0aGF0XG5sZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWVcbmFzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlXG5yZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyXG50byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybVxub2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvblxubGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZVxuY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGVcbm1ldGhvZC5cblxuQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzXG5kZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy5cblxuV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5ICJ0eXBlLl9fbmV3X18iLCB0aGUgb2JqZWN0IHByb3ZpZGVkIGFzXG50aGUgbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSBhbmRcbnRoZSBvcmlnaW5hbCBvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgYmVjb21lcyB0aGUgIl9fZGljdF9fIlxuYXR0cmlidXRlIG9mIHRoZSBjbGFzcyBvYmplY3QuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6XG4gICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpXG5cbiAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLlxuICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmdcbiAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG9cbiAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHRcbiAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpXG4gICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzXG4gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IixcbiAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvXG4gICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljXG4gICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG4gICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPVxuICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW5cbiAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnNcbiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVcbiAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGFcbiAgIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgIl9faGFzaF9fKCkiIGFuZCAiX19yZXByX18oKSIgdGhhdCBhcmUgaW1wbGVtZW50ZWQgYnlcbmFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mIHRoZXNlXG5tZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsIHdoZW5cbmludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvbiBwcm92aWRlc1xuc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZSBpbnRlcnByZXRlciwgYXRcbnRoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mIHNwZWNpYWwgbWV0aG9kcyAodGhlXG5zcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3QgaXRzZWxmIGluIG9yZGVyIHRvIGJlXG5jb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuJywKLSAnc3RyaW5nLW1ldGhvZHMnOiB1J1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucywgYWxvbmcgd2l0aFxudGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG5cblN0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYVxubGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgInN0ci5mb3JtYXQoKSIsXG4qRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqQ3VzdG9tIFN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlclxuYmFzZWQgb24gQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mXG50eXBlcyBhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yXG50aGUgY2FzZXMgaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCdceGRmXCciIGlzIGVxdWl2YWxlbnQgdG8gIiJzcyIiLlxuICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyBub3RoaW5nIHRvICJcJ1x4ZGZcJyI7XG4gICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgc3BhY2UpLiBUaGVcbiAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgImxlbihzKSIuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgIlwnc3RyaWN0XCciLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB2aWFcbiAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICpFcnJvciBIYW5kbGVycyouIEZvciBhIGxpc3RcbiAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdWZmaXhlc1xuICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogY2hhcmFjdGVyc1xuICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiBhbmQgc28gb24pLlxuICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyBhbmQgdGhlXG4gICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIGluIHRoZSByZXN1bHRcbiAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgcG9zaXRpb24uIChUaGVcbiAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcbiAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgY29sdW1uIGlzXG4gICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkIGFuZCB0aGVcbiAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbiAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG5cbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicygpXG4gICBcJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0XCdcbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicyg0KVxuICAgXCcwMSAgMDEyIDAxMjMgICAgMDEyMzRcJ1xuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQgd2l0aGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqXG4gICBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgaWZcbiAgICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlICJmaW5kKCkiIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3dcbiAgICAgdGhlIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LFxuICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICJtYXBwaW5nIiBpcyB1c2VkXG4gICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvciBleGFtcGxlXG4gICAibWFwcGluZyIgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlciAiYyJcbiAgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zICJUcnVlIjpcbiAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgImMuaXNudW1lcmljKCkiLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm0gbnVtYmVycyBpbiBiYXNlIDEwLFxuICAgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLiAgRm9ybWFsbHkgYSBkZWNpbWFsIGNoYXJhY3RlclxuICAgaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgR2VuZXJhbCBDYXRlZ29yeSAiTmQiLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiBUaGlzIGNvdmVycyBkaWdpdHMgd2hpY2ggY2Fubm90XG4gICBiZSB1c2VkIHRvIGZvcm0gbnVtYmVycyBpbiBiYXNlIDEwLCBsaWtlIHRoZSBLaGFyb3N0aGkgbnVtYmVycy5cbiAgIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZVxuICAgTnVtZXJpY19UeXBlPURpZ2l0IG9yIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCBpZGVudGlmaWVycyBzdWNoIGFzXG4gICAiZGVmIiBhbmQgImNsYXNzIi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gInJlcHIoKSIgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzICAgXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgICJzdHIudHJhbnNsYXRlKCkiLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgIk5vbmUiLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICAiTm9uZSIgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICBJblxuICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCBuZXdsaW5lcyouXG5cbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgRmVlZCAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lIFRhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkIFNlcGFyYXRvciAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sIENvZGUpICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoIFNlcGFyYXRvciAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3Qgb2YgbGluZVxuICAgYm91bmRhcmllcy5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpXG4gICAgICBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXVxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4gICAgICBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJywgXCdrbFxcclxcblwnXVxuXG4gICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcblxuICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuICAgICAgW11cbiAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuICAgICAgW1wnT25lIGxpbmVcJ11cblxuICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG5cbiAgICAgID4+PiBcJ1wnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdcJ11cbiAgICAgID4+PiBcJ1R3byBsaW5lc1xcblwnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdUd28gbGluZXNcJywgXCdcJ11cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2UgcmV0dXJuXG4gICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2sgZm9yLlxuICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzXG4gICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZVwnXG5cbiAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZ1xuICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZVxuICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gXCcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uXCdcbiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcChcJy4jISBcJylcbiAgICAgIFwnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzJcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZSh0YWJsZSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyIGhhcyBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSBhbiBvYmplY3RcbiAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgYSAqbWFwcGluZypcbiAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuIGludGVnZXIpLCB0aGVcbiAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhIFVuaWNvZGUgb3JkaW5hbFxuICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnM7XG4gICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSByZXR1cm4gc3RyaW5nOyBvclxuICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gaXRzZWxmLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgU2VlIGFsc28gdGhlICJjb2RlY3MiIG1vZHVsZSBmb3IgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIHRvIGN1c3RvbVxuICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4gICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduXG4gICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmXG4gICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAotICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCi0gJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGUgb3JkZXIgb2ZcbiAgIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZSBjbGFzc1wnc1xuICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLlxuICAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwncyBjbGFzcyBoYXMgYVxuICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCBpbnN0ZWFkXG4gICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgbWV0aG9kXG4gICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gbmFtZTtcbiAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuICAgICAgImNvX3Zhcm5hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbFxuICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgaXMgYVxuICAgICAgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlXG4gICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhIHN0cmluZ1xuICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICJjb19jb25zdHMiXG4gICAgICBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX2ZpbGVuYW1lIiBpcyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICAiY29fbG5vdGFiIiBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgImNvX3N0YWNrc2l6ZSIgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nIGFcbiAgICAgIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICIweDA0IlxuICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCBhblxuICAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0ICIweDA4IiBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCBhcmJpdHJhcnlcbiAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuICAgICAgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uIilcbiAgICAgIGFsc28gdXNlIGJpdHMgaW4gImNvX2ZsYWdzIiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgY29kZSBvYmplY3RcbiAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiBpc1xuICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gZW5hYmxlZDtcbiAgICAgIGJpdHMgIjB4MTAiIGFuZCAiMHgxMDAwIiB3ZXJlIHVzZWQgaW4gZWFybGllciB2ZXJzaW9ucyBvZlxuICAgICAgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluICJjb19mbGFncyIgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgImNvX2NvbnN0cyIgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyBzdGFja1xuICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSBib3R0b21cbiAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gdGhpc1xuICAgICAgZnJhbWU7ICJmX2xvY2FscyIgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwIGxvY2FsXG4gICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICJmX2xhc3RpIlxuICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbiAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciBvZlxuICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBqdW1wc1xuICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyXG4gICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSB3cml0aW5nXG4gICAgICB0byBmX2xpbmVuby5cblxuICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIGZyYW1lLmNsZWFyKClcblxuICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBoZWxkIGJ5XG4gICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsIHRoZVxuICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlIGN5Y2xlc1xuICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbiAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuXG4gICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuXG5cbiAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zIG5vXG4gICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5IGZvcm1hdHRlZClcbiAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyBpbnRlcmFjdGl2ZSxcbiAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgInN5cy5sYXN0X3RyYWNlYmFjayIuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiB0aGVcbiAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkKSwgb3JcbiAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbiAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlIGxpbmVcbiAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyB0aGVcbiAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW5cbiAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbiAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggbm9cbiAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICJfX2dldGl0ZW1fXygpIlxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICJzdG9wIlxuICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiIGlmXG4gICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKLSAndHlwZXNmdW5jdGlvbnMnOiB1J1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuXG5UaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluIGZ1bmN0aW9uc1xuYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgb3BlcmF0aW9uICh0byBjYWxsXG50aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgaGVuY2UgdGhlXG5kaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuXG5TZWUgKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbWFwcGluZyc6IHUnXG5NYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG50aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSBjb21wdXRlcnMgc3RvcmVcbmZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSB1bndpc2UgdG8gdXNlXG50aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG5cbkRpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgImtleTpcbnZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgXCdzam9lcmRcJzpcbjQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAiZGljdCJcbmNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KCoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cblxuICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyBjcmVhdGVkLlxuICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgb2JqZWN0LCBhXG4gICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgdGhlIG1hcHBpbmdcbiAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAqaXRlcmFibGUqXG4gICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuIGl0ZXJhYmxlIHdpdGhcbiAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSBiZWNvbWVzIGEga2V5XG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgY29ycmVzcG9uZGluZ1xuICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGZvciB0aGF0IGtleVxuICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGVpclxuICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgZnJvbVxuICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LlxuXG4gICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsXG4gICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuXG4gICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuICAgICAgPj4+IGIgPSB7XCdvbmVcJzogMSwgXCd0d29cJzogMiwgXCd0aHJlZVwnOiAzfVxuICAgICAgPj4+IGMgPSBkaWN0KHppcChbXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnXSwgWzEsIDIsIDNdKSlcbiAgICAgID4+PiBkID0gZGljdChbKFwndHdvXCcsIDIpLCAoXCdvbmVcJywgMSksIChcJ3RocmVlXCcsIDMpXSlcbiAgICAgID4+PiBlID0gZGljdCh7XCd0aHJlZVwnOiAzLCBcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlcbiAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbiAgICAgIFRydWVcblxuICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yXG4gICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55IHZhbGlkIGtleXNcbiAgIGNhbiBiZSB1c2VkLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiBhbmQgKmtleSpcbiAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgbWV0aG9kIHdpdGhcbiAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uIHRoZW4gcmV0dXJuc1xuICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlXG4gICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgIktleUVycm9yIlxuICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuXG4gICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgbWV0aG9kIGlzIHVzZWRcbiAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG5cbiAgIGRba2V5XSA9IHZhbHVlXG5cbiAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgKmtleSogaXMgbm90XG4gICAgICBpbiB0aGUgbWFwLlxuXG4gICBrZXkgaW4gZFxuXG4gICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG5cbiAgIGl0ZXIoZClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICBUaGlzIGlzIGFcbiAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gIk5vbmUiLCBzb1xuICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgdmFsdWUpIlxuICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgcG9wKGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSAiS2V5RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuXG4gICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAiZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpIi5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgRGljdGlvbmFyaWVzIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZSBzYW1lICIoa2V5LFxuICAgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJywgXCc+XCcpIHJhaXNlXG4gICAiVHlwZUVycm9yIi5cblxuU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHlcbiAgdmlldyBvZiBhICJkaWN0Ii5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uIHRoZVxuZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnkgY2hhbmdlcyxcbnRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mICIoa2V5LCB2YWx1ZSkiKSBpbiB0aGUgZGljdGlvbmFyeS5cblxuICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciB3aGljaCBpc1xuICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgZGVwZW5kcyBvblxuICAgdGhlIGRpY3Rpb25hcnlcJ3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmIGtleXMsXG4gICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gaW50ZXJ2ZW5pbmdcbiAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsIGRpcmVjdGx5XG4gICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiIHBhaXJzIHVzaW5nXG4gICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgd2F5IHRvXG4gICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gZC5pdGVtcygpXSIuXG5cbiAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeVxuICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLCB2YWx1ZXNcbiAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgdmFsdWUpIlxuICAgdHVwbGUpLlxuXG5LZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLlxuSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICI9PSIsXG4iPCIsIG9yICJeIikuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAotICd0eXBlc21ldGhvZHMnOiB1J1xuTWV0aG9kc1xuKioqKioqKlxuXG5NZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbm90YXRpb24uXG5UaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiBvbiBsaXN0cylcbmFuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkIHdpdGggdGhlXG50eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cblxuSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgbmFtZXNwYWNlKVxudGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCBtZXRob2QqIChhbHNvXG5jYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkIHRoZSAic2VsZiJcbmFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byBzcGVjaWFsIHJlYWQtXG5vbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRob2Rcbm9wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlIG1ldGhvZC5cbkNhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSBlcXVpdmFsZW50IHRvXG5jYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgbWV0aG9kXG5hdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gc2V0IGFuXG5hdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nIHJhaXNlZC4gIEluXG5vcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBpdCBvbiB0aGVcbnVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbiAgIC4uLiAgICAgICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCcgICMgY2FuXCd0IHNldCBvbiB0aGUgbWV0aG9kXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBBdHRyaWJ1dGVFcnJvcjogXCdtZXRob2RcJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSBcJ3dob2FtaVwnXG4gICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4gICBcJ215IG5hbWUgaXMgbWV0aG9kXCdcblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtb2R1bGVzJzogdSdcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczogIm0ubmFtZSIsXG53aGVyZSAqbSogaXMgYSBtb2R1bGUgYW5kICpuYW1lKiBhY2Nlc3NlcyBhIG5hbWUgZGVmaW5lZCBpbiAqbSpcJ3NcbnN5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgdGhhdCB0aGVcbiJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gb24gYSBtb2R1bGVcbm9iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICpmb28qIHRvXG5leGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhIG1vZHVsZVxubmFtZWQgKmZvbyogc29tZXdoZXJlLilcblxuQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyB0aGVcbmRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUsIGJ1dCBkaXJlY3RcbmFzc2lnbm1lbnQgdG8gdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91IGNhbiB3cml0ZVxuIm0uX19kaWN0X19bXCdhXCddID0gMSIsIHdoaWNoIGRlZmluZXMgIm0uYSIgdG8gYmUgIjEiLCBidXQgeW91IGNhblwndFxud3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgbm90XG5yZWNvbW1lbmRlZC5cblxuTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8bW9kdWxlXG5cJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgd3JpdHRlbiBhc1xuIjxtb2R1bGUgXCdvc1wnIGZyb20gXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCi0gJ3R5cGVzc2VxJzogdSdcblNlcXVlbmNlIFR5cGVzIC0tLSAibGlzdCIsICJ0dXBsZSIsICJyYW5nZSJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG5pcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnNcbm9uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cblxuVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5LlxuSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLFxuKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueVxudHlwZSBhbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLlxuXG5UaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgKHJlcGV0aXRpb24pXG5vcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpY1xub3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJGYWxzZSIgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAieCBub3QgaW4gcyIgICAgICAgICAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCBlcXVpdmFsZW50IHRvIGFkZGluZyAqcyogdG8gICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibGVuKHMpIiAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgIm1pbihzKSIgICAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtYXgocykiICAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlXG4gICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzXG4gICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4gICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuXG4gICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbiAgICAgIFRydWVcblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIHRoYXQgaXRlbXMgaW4gdGhlXG4gICBzZXF1ZW5jZSAqcyogYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgdGltZXMuXG4gICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mICJbW11dICogMyIgYXJlIHJlZmVyZW5jZXNcbiAgIHRvIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgImxpc3RzIiBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSAqSG93IGRvIEkgY3JlYXRlXG4gICBhIG11bHRpZGltZW5zaW9uYWwgbGlzdD8qLlxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZlxuICAgc2VxdWVuY2UgKnMqOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0XG4gICBub3RlIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAiTm9uZSIsXG4gICB1c2UgIjAiLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXNcbiAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgInggPSBpICsgbiprIiBzdWNoIHRoYXQgIjAgPD0gbiA8XG4gICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgImkrMiprIixcbiAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbiAgIGluY2x1ZGluZyAqaiopLiAgV2hlbiAqayogaXMgcG9zaXRpdmUsICppKiBhbmQgKmoqIGFyZSByZWR1Y2VkIHRvXG4gICAibGVuKHMpIiBpZiB0aGV5IGFyZSBncmVhdGVyLiBXaGVuICprKiBpcyBuZWdhdGl2ZSwgKmkqIGFuZCAqaiogYXJlXG4gICByZWR1Y2VkIHRvICJsZW4ocykgLSAxIiBpZiB0aGV5IGFyZSBncmVhdGVyLiAgSWYgKmkqIG9yICpqKiBhcmVcbiAgIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uXG4gICB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdFxuICAgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG4gICBzdGFydFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuICAgc3RvcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcblxuICAgc3RlcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gVHVlIERlYyAgNiAxODo1MTo1MSAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICAnZWZmZWN0LiBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAgJ29sZCBvYmplY3RcbicKKyAgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1VubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICAnZXhhbXBsZSwgImFbaV1cbicKKyAgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICcKKyAgICAgICAgICAgICAgICciYVtpXSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fubm90YXRpb24gYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICd2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCAiOiIgZXhwcmVzc2lvbiBbIj0iICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIEFzc2lnbm1lbnQgc3RhdGVtZW50cyBpcyB0aGF0IG9ubHkgJworICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgJ3RhcmdldCBhbmQgb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnc2NvcGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBhIHNwZWNpYWwgY2xhc3Mgb3IgJworICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSAiX19hbm5vdGF0aW9uc19fIiB0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gJworICAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICAnbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8gZXZhbHVhdGVkIGFubm90YXRpb25zLiBUaGlzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaXNcbicKKyAgICAgICAgICAgICAgICd3cml0YWJsZSBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciAnCisgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAnYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zIGFyZSBmb3VuZCBzdGF0aWNhbGx5LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciBleHByZXNzaW9ucyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICAgJ2lmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgICdmb3IgdGhhdCBzY29wZS4gQW5ub3RhdGlvbnMgYXJlIG5ldmVyIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluICcKKyAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgJ3Njb3Blcy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZCBhc3NpZ25tZW50ICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucyAod2hlcmVcbicKKyAgICAgICAgICAgICAgICdhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICd0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgJ3RoZSBsYXN0XG4nCisgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiIG9yICJfX3NldGF0dHJfXygpIiBjYWxsLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA1MjYqKiAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiAnCisgICAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCA0ODQqKiAtIFR5cGUgaGludHNcbicsCisgJ2F0b20taWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKE5hbWVzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiBJZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBrZXl3b3JkcyBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uIE5hbWluZyAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGJpbmRpbmcgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdG9tIHlpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXh0dWFsbHkgb2NjdXJzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBhICpwcml2YXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAnbG9uZ2VyIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NpbmdsZSB1bmRlcnNjb3JlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiX19zcGFtIlxuJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJyJfSGFtX19zcGFtIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBpbiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZXh0cmVtZWx5IGxvbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0aW9uIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3JlcywgJworICAgICAgICAgICAgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20tbGl0ZXJhbHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnTGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyhzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3RoZSBnaXZlblxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiBMaXRlcmFscyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICAiCisgICAgICAgICAgICAgICAgICAnTXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnb2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpICcKKyAgICAgICAgICAgICAgICAgICdtYXkgb2J0YWluXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS5cbicsCisgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3IgaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBuYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWwgbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2ludGVudGlvbmFsIGFzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IChidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmZpbml0ZSByZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndXAgc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnZHluYW1pYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcsICJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWQgaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAiX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgY2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ29mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZXZlbnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZWFjaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyAnCisgICAgICAgICAgICAgICAgICAgICAnYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlIHJlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2QgYW5kIGEgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCisgJ2F1Z2Fzc2lnbic6ICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsICcKKyAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuICcKKyAgICAgICAgICAgICAgJ0luIHRoZVxuJworICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkICcKKyAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6ICdcbicKKyAgICAgICAgICAgJ0JpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG4nCisgICAgICAgICAgICdsZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiAnCisgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICdudW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xuJworICAgICAgICAgICAnbGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxuJworICAgICAgICAgICAnb3BlcmF0b3JzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbicKKyAgICAgICAgICAgJyAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2ludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG4nCisgICAgICAgICAgICdudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkICcKKyAgICAgICAgICAgJ3RvZ2V0aGVyLlxuJworICAgICAgICAgICAnSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxuJworICAgICAgICAgICAncmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG4nCisgICAgICAgICAgICdtdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbicKKyAgICAgICAgICAgJ3F1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgJworICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgJ2Zsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICJvZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgJ2Zsb29yJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxuIgorICAgICAgICAgICAncmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgJworICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbicKKyAgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgJworICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgJ251bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAnCisgICAgICAgICAgICciNCowLjcgK1xuJworICAgICAgICAgICAnMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAnc2lnblxuJworICAgICAgICAgICAnYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3N0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kICcKKyAgICAgICAgICAgJ1sxXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgJworICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAnY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbicKKyAgICAgICAgICAgJyh4Ly95LCB4JXkpIi4gWzJdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAnCisgICAgICAgICAgICciJSJcbicKKyAgICAgICAgICAgJ29wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtICcKKyAgICAgICAgICAgJ29sZC1zdHlsZVxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG4nCisgICAgICAgICAgICdzZWN0aW9uIHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICcKKyAgICAgICAgICAgJyJkaXZtb2QoKSJcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdmbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG4nCisgICAgICAgICAgICdhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICd0eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uICcKKyAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgJ2FuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuJworICAgICAgICAgICAgJ2FyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgJworICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICd3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICciY29kZSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdBIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdpdCAoaW5zdGVhZCBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnU2xpY2luZ3MpLiAgSXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsbGlwc2lzIG9iamVjdCwgbmFtZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKKyAnYmx0aW4tbnVsbC1vYmplY3QnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBOdWxsIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0ICIKKyAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSByZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmUgbnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QsIG5hbWVkICJOb25lIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKE5vbmUpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3NhbWUgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAorICdibHRpbi10eXBlLW9iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIE9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIHR5cGUgaXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAidHlwZSgpIi4gIFRoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSAidHlwZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMgbmFtZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdhbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxjbGFzcyBcJ2ludFwnPiIuXG4nLAorICdib29sZWFucyc6ICdcbicKKyAgICAgICAgICAgICAnQm9vbGVhbiBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICd1c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbicKKyAgICAgICAgICAgICAnc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnbmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciAnCisgICAgICAgICAgICAgJ3RoYW4gIlwnXCciLilcbicsCisgJ2JyZWFrJzogJ1xuJworICAgICAgICAgICdUaGUgImJyZWFrIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBicmVha19zdG10IDo6PSAiYnJlYWsiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICciYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxuJworICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbicKKyAgICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAnCisgICAgICAgICAgJyJlbHNlIlxuJworICAgICAgICAgICdjbGF1c2UgaWYgdGhlIGxvb3AgaGFzIG9uZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG4nCisgICAgICAgICAgJ2tlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2xvb3AuXG4nLAorICdjYWxsYWJsZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAorICdjYWxscyc6ICdcbicKKyAgICAgICAgICAnQ2FsbHNcbicKKyAgICAgICAgICAnKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgJworICAgICAgICAgICdwb3NzaWJseVxuJworICAgICAgICAgICdlbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCAnCisgICAgICAgICAgJ2NvbXByZWhlbnNpb25dICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ3N0YXJyZWRfYW5kX2tleXdvcmRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHN0YXJyZWRfYW5kX2tleXdvcmRzIFsiLCIgJworICAgICAgICAgICdrZXl3b3Jkc19hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBbIioiXSBleHByZXNzaW9uICgiLCIgWyIqIl0gJworICAgICAgICAgICdleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgIioiIGV4cHJlc3Npb24gfCAiLCIgJworICAgICAgICAgICdrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmRcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG4nCisgICAgICAgICAgJ29iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbicKKyAgICAgICAgICAnIl9fY2FsbF9fKCkiIG1ldGhvZCBhcmUgY2FsbGFibGUpLiAgQWxsIGFyZ3VtZW50IGV4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICdldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4nCisgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbicKKyAgICAgICAgICAndmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSAnCisgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiAqaXRlcmFibGUqLiAgRWxlbWVudHMgZnJvbSB0aGVzZSBpdGVyYWJsZXMgYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlICcKKyAgICAgICAgICAnY2FsbFxuJworICAgICAgICAgICciZih4MSwgeDIsICp5LCB4MywgeDQpIiwgaWYgKnkqIGV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLixcbicKKyAgICAgICAgICAnKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyp4MSosXG4nCisgICAgICAgICAgJyp4MiosICp5MSosIC4uLiwgKnlNKiwgKngzKiwgKng0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICdhcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICcKKyAgICAgICAgICAnKmJlZm9yZSpcbicKKyAgICAgICAgICAndGhlIGtleXdvcmQgYXJndW1lbnRzIChhbmQgYW55ICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50cyAtLSBzZWUgJworICAgICAgICAgICdiZWxvdykuXG4nCisgICAgICAgICAgJ1NvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IGRlZiBmKGEsIGIpOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KGEsIGIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAiICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYSdcbiIKKyAgICAgICAgICAnICAgPj4+IGYoMSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDEgMlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgJworICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAndG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJ2FyaXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuJworICAgICAgICAgICciZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEga2V5d29yZCBpcyBhbHJlYWR5XG4nCisgICAgICAgICAgJ3ByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciAnCisgICAgICAgICAgJ3VucGFja2luZyksXG4nCisgICAgICAgICAgJ2EgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Zvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuJworICAgICAgICAgICdjYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbicKKyAgICAgICAgICAnbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy41OiBGdW5jdGlvbiBjYWxscyBhY2NlcHQgYW55IG51bWJlciBvZiAiKiIgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlICcKKyAgICAgICAgICAndW5wYWNraW5nc1xuJworICAgICAgICAgICcoIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICcKKyAgICAgICAgICAnKCIqKiIpLlxuJworICAgICAgICAgICdPcmlnaW5hbGx5IHByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG4nCisgICAgICAgICAgJ2NhbGxhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGl0IGlzLS0tXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbicKKyAgICAgICAgICAnICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbicKKyAgICAgICAgICAnICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgIEZ1bmN0aW9uIGRlZmluaXRpb25zLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgQnVpbHQtaW4gRnVuY3Rpb25zIGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBvYmplY3Q6XG4nCisgICAgICAgICAgJyAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJyAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuJworICAgICAgICAgICcgICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2U6XG4nCisgICAgICAgICAgJyAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAorICdjbGFzcyc6ICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiICcKKyAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4nCisgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlIE1ldGFjbGFzc2VzIGZvciBtb3JlXG4nCisgICAgICAgICAgJ2FkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICdpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuIgorICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbicKKyAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sICIKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG4nCisgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgJ3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzXCdzICJfX2RpY3RfXyIuICBOb3RlIHRoYXQgdGhpcyBpcyAnCisgICAgICAgICAgJ3JlbGlhYmxlXG4nCisgICAgICAgICAgJ29ubHkgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCAnCisgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAnZGVmaW5lZCB1c2luZyB0aGUgZGVmaW5pdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgJworICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlICcKKyAgICAgICAgICAnYXR0cmlidXRlc1xuJworICAgICAgICAgICdjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG4nCisgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgJworICAgICAgICAgICAgICAgICd5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAnKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgJworICAgICAgICAgICAgICAgICdjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVmFsdWUgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFwdGVyIE9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMgc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgJworICAgICAgICAgICAgICAgICd2YWx1ZSAoaW5cbicKKyAgICAgICAgICAgICAgICAnYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhICcKKyAgICAgICAgICAgICAgICAncmF0aGVyXG4nCisgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICdhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAibWV0aG9kIGZvciBhbiBvYmplY3QncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50ICIKKyAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAndmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LCAnCisgICAgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAgICAnY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCBhXG4nCisgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZSBjYW4gJworICAgICAgICAgICAgICAgICd0aGluayBvZlxuJworICAgICAgICAgICAgICAgICd0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnkgbWVhbnMgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQmVjYXVzZSBhbGwgdHlwZXMgYXJlIChkaXJlY3Qgb3IgaW5kaXJlY3QpIHN1YnR5cGVzIG9mICcKKyAgICAgICAgICAgICAgICAnIm9iamVjdCIsIHRoZXlcbicKKyAgICAgICAgICAgICAgICAnaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyAnCisgICAgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICAgICdjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJ21ldGhvZHMqIGxpa2UgIl9fbHRfXygpIiwgZGVzY3JpYmVkIGluIEJhc2ljIGN1c3RvbWl6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgJworICAgICAgICAgICAgICAgICdpcyBiYXNlZFxuJworICAgICAgICAgICAgICAgICdvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCAnCisgICAgICAgICAgICAgICAgJ2VxdWFsaXR5XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuJworICAgICAgICAgICAgICAgICdpbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAnZGVzaXJlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09ICcKKyAgICAgICAgICAgICAgICAneSIpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAncHJvdmlkZWQ7XG4nCisgICAgICAgICAgICAgICAgJ2FuIGF0dGVtcHQgcmFpc2VzICJUeXBlRXJyb3IiLiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICdpcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGlkZW50aXRpZXMgYXJlIGFsd2F5cyB1bmVxdWFsLCBtYXkgYmUgaW4gY29udHJhc3QgJworICAgICAgICAgICAgICAgICd0byB3aGF0XG4nCisgICAgICAgICAgICAgICAgJ3R5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIGFuZFxuJworICAgICAgICAgICAgICAgICd2YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgJ3RoZWlyXG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYmVoYXZpb3IsIGFuZCBpbiBmYWN0LCBhIG51bWJlciBvZiBidWlsdC1pbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ2hhdmUgZG9uZVxuJworICAgICAgICAgICAgICAgICd0aGF0LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgJworICAgICAgICAgICAgICAgICdtb3N0XG4nCisgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzIChOdW1lcmljIFR5cGVzIC0tLSBpbnQsICcKKyAgICAgICAgICAgICAgICAnZmxvYXQsXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleCkgYW5kIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHR5cGVzICcKKyAgICAgICAgICAgICAgICAnImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyICcKKyAgICAgICAgICAgICAgICAndHlwZXMsXG4nCisgICAgICAgICAgICAgICAgJyAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgJworICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMgaW52b2x2ZWQsIHRoZXkgJworICAgICAgICAgICAgICAgICdjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgJworICAgICAgICAgICAgICAgICdwcmVjaXNpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICcKKyAgICAgICAgICAgICAgICAnIkRlY2ltYWwoXCdOYU5cJykiIGFyZVxuJworICAgICAgICAgICAgICAgICcgIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgJworICAgICAgICAgICAgICAgICd0cnVlKSBidXRcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgbm90IGVxdWFsIHRvIHRoZW1zZWx2ZXMgKCJ4ID09IHgiIGlzIGZhbHNlKS4gICcKKyAgICAgICAgICAgICAgICAnQWRkaXRpb25hbGx5LFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAnIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpICcKKyAgICAgICAgICAgICAgICAnPCAzIiB3aWxsXG4nCisgICAgICAgICAgICAgICAgJyAgcmV0dXJuICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gJworICAgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSAnCisgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICcgIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgJyAgIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzNdXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiAnCisgICAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyZWQgb25seSB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcywgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdyZXN0cmljdGlvbiB0aGF0XG4nCisgICAgICAgICAgICAgICAgJyAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYWNyb3NzXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ2Fjcm9zc1xuJworICAgICAgICAgICAgICAgICcgIHRoZXNlIHR5cGVzIHJhaXNlcyAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuJworICAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBlbmZvcmNlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgJyAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzICcKKyAgICAgICAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJyAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnZmlyc3QsIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJyAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yICcKKyAgICAgICAgICAgICAgICAnbm9uLXJlZmxleGl2ZVxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlICcKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgJyAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdiZWhhdmlvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgdXNlZCBpbiBhIGxpc3Q6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICIgICAgID4+PiBuYW4gPSBmbG9hdCgnTmFOJylcbiIKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuIGlzIG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuID09IG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIE5hTlxuJworICAgICAgICAgICAgICAgICcgICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgJworICAgICAgICAgICAgICAgICd0ZXN0cyBpZGVudGl0eSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAgICAnd29ya3MgYXNcbicKKyAgICAgICAgICAgICAgICAnICBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAqIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAnICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mICcKKyAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICcgICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICcKKyAgICAgICAgICAgICAgICAnKDEsMikiIGlzXG4nCisgICAgICAgICAgICAgICAgJyAgICBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUgc2FtZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9ICcKKyAgICAgICAgICAgICAgICAnWzEsMix5XSJcbicKKyAgICAgICAgICAgICAgICAnICAgIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyAieCA8PSB5IikuICBJZiBhIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgICdlbGVtZW50IGRvZXNcbicKKyAgICAgICAgICAgICAgICAnICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1hcHBpbmdzIChpbnN0YW5jZXMgb2YgImRpY3QiKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmICcKKyAgICAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICAgICcgIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAna2V5cyBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgT3JkZXIgY29tcGFyaXNvbnMgKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgcmFpc2UgJworICAgICAgICAgICAgICAgICciVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2V0cyAoaW5zdGFuY2VzIG9mICJzZXQiIG9yICJmcm96ZW5zZXQiKSBjYW4gYmUgY29tcGFyZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgICAgICAnICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgJworICAgICAgICAgICAgICAgICdzdXBlcnNldFxuJworICAgICAgICAgICAgICAgICcgIHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzIChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzICcKKyAgICAgICAgICAgICAgICAnb2Ygb25lXG4nCisgICAgICAgICAgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyAnCisgICAgICAgICAgICAgICAgJ2FyZSBub3RcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICAgICAgICAgICdvcmRlcmluZ1xuJworICAgICAgICAgICAgICAgICcgIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSAnCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICcgIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgQ29tcGFyaXNvbiBvZiBzZXRzIGVuZm9yY2VzIHJlZmxleGl2aXR5IG9mIGl0cyBlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkLFxuJworICAgICAgICAgICAgICAgICcgIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVXNlci1kZWZpbmVkIGNsYXNzZXMgdGhhdCBjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciAnCisgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICdmb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpY2FsXG4nCisgICAgICAgICAgICAgICAgJyAgb2JqZWN0cyBzaG91bGQgY29tcGFyZSBlcXVhbDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgICAnICBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgInkgPiB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgJyhub24tZXhoYXVzdGl2ZSlcbicKKyAgICAgICAgICAgICAgICAnICBleGFtcGxlcyBpbGx1c3RyYXRlIHRoYXQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEludmVyc2UgY29tcGFyaXNvbiBzaG91bGQgcmVzdWx0IGluIHRoZSBib29sZWFuIG5lZ2F0aW9uLiAnCisgICAgICAgICAgICAgICAgJ0luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgJyAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdyZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSIgYW5kICJub3QgeCA8PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMgKGUuZy5cbicKKyAgICAgICAgICAgICAgICAnICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuJworICAgICAgICAgICAgICAgICcgICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyIHZhbHVlcyBhcmUgYW4gZXhhbXBsZSBmb3Igbm90IGZvbGxvd2luZyB0aGVzZSAnCisgICAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiAnCisgICAgICAgICAgICAgICAgJ3MiXG4nCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSAnCisgICAgICAgICAgICAgICAgJ290aGVyd2lzZS4gICJ4XG4nCisgICAgICAgICAgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAnCisgICAgICAgICAgICAgICAgJyJpbiIgdGVzdHNcbicKKyAgICAgICAgICAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgJworICAgICAgICAgICAgICAgICdzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlICcKKyAgICAgICAgICAgICAgICAnZm9yIGUgaW5cbicKKyAgICAgICAgICAgICAgICAneSkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5ICcKKyAgICAgICAgICAgICAgICAnaWYgKngqIGlzXG4nCisgICAgICAgICAgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLiAgRW1wdHlcbicKKyAgICAgICAgICAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdtZXRob2QsICJ4XG4nCisgICAgICAgICAgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ2J1dCBkb1xuJworICAgICAgICAgICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggJworICAgICAgICAgICAgICAgICcieCA9PSB6IlxuJworICAgICAgICAgICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSAnCisgICAgICAgICAgICAgICAgJ290aGVyXG4nCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlICcKKyAgICAgICAgICAgICAgICAndmFsdWUgb2ZcbicKKyAgICAgICAgICAgICAgICAnImluIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGl0eSBjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4ICcKKyAgICAgICAgICAgICAgICAnaXMgeSIgaXNcbicKKyAgICAgICAgICAgICAgICAndHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgT2JqZWN0ICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpdHlcbicKKyAgICAgICAgICAgICAgICAnaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgImlkKCkiIGZ1bmN0aW9uLiAgInggaXMgbm90IHkiIHlpZWxkcyAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCisgJ2NvbXBvdW5kJzogJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5ICcKKyAgICAgICAgICAgICAnYWZmZWN0XG4nCisgICAgICAgICAgICAgJ29yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgJworICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICdnZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJ2luY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSAnCisgICAgICAgICAgICAgJ2xpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiwgIndoaWxlIiBhbmQgImZvciIgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWwgJworICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgJ2Zsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yICcKKyAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICdjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZVxuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhIGJsb2NrICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5ICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkEgY29tcG91bmQgc3RhdGVtZW50IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlICdjbGF1c2VzLicgIEEgIgorICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAiY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgJ3N1aXRlLicgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG4iCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gJworICAgICAgICAgICAgICdsZXZlbC5cbicKKyAgICAgICAgICAgICAnRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCAnCisgICAgICAgICAgICAgJ2FuZCBlbmRzXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuJworICAgICAgICAgICAgICdjbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgImhlYWRlcidzXG4iCisgICAgICAgICAgICAgJ2NvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiAnCisgICAgICAgICAgICAgJ3N1YnNlcXVlbnRcbicKKyAgICAgICAgICAgICAnbGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgInN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuJ3QgIgorICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdjb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N1bW1hcml6aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQrIERFREVOVFxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkICcKKyAgICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAgICciREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlZ2luXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuJworICAgICAgICAgICAgICdhbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncmVxdWlyaW5nIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyAnCisgICAgICAgICAgICAgJ3BsYWNlc1xuJworICAgICAgICAgICAgICdlYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBvbmVcbicKKyAgICAgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIHRoZVxuJworICAgICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgJworICAgICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gJworICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggJworICAgICAgICAgICAgICdpdGVtXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yLiAgRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgJworICAgICAgICAgICAgICdsaXN0LlxuJworICAgICAgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCAnCisgICAgICAgICAgICAgJ3RoZSBuZXh0XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAndG8gYXRcbicKKyAgICAgICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAiaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbCdzICIKKyAgICAgICAgICAgICAnImZvciBpXG4nCisgICAgICAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsICcKKyAgICAgICAgICAgICAnMl0iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gICcKKyAgICAgICAgICAgICAnQW5cbicKKyAgICAgICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAgICAgICduZXh0LFxuJworICAgICAgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgJworICAgICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtICcKKyAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlICcKKyAgICAgICAgICAgICAnaW5kZXggb2ZcbicKKyAgICAgICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgJworICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuICcKKyAgICAgICAgICAgICAnV2hlbiBub1xuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCAnCisgICAgICAgICAgICAgJ2ZvciBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZSwgaWZcbicKKyAgICAgICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyAnCisgICAgICAgICAgICAgJ2Jsb2NrIGlzXG4nCisgICAgICAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSAnCisgICAgICAgICAgICAgJ2FsaXZlXG4nCisgICAgICAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgJworICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuICcKKyAgICAgICAgICAgICAncmV0dXJuaW5nXG4nCisgICAgICAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyAnCisgICAgICAgICAgICAgJ29mZlxuJworICAgICAgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgJworICAgICAgICAgICAgICdUaGUgInRyeSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gICcKKyAgICAgICAgICAgICAnSWYgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgSWZcbicKKyAgICAgICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlICcKKyAgICAgICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgICAgICAnICAgNDJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgJworICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgJworICAgICAgICAgICAgICdpbGxlZ2FsIGluXG4nCisgICAgICAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSAnCisgICAgICAgICAgICAgJ2Z1dHVyZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJyJyZXR1cm4iXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlIHRoZVxuJworICAgICAgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayAnCisgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoICcKKyAgICAgICAgICAgICAnU3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gJworICAgICAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICcKKyAgICAgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICcKKyAgICAgICAgICAgICAnIl9fZW50ZXJfXygpIlxuJworICAgICAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgJworICAgICAgICAgICAgICdhbHdheXMgYmVcbicKKyAgICAgICAgICAgICAnICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yICcKKyAgICAgICAgICAgICAnb2NjdXJyaW5nXG4nCisgICAgICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gJworICAgICAgICAgICAgICdleGNlcHRpb24sIHRoZVxuJworICAgICAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgJworICAgICAgICAgICAgICdleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAnCisgICAgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgTWV0YWNsYXNzZXMgZm9yIG1vcmVcbicKKyAgICAgICAgICAgICAnYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJ29iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2luaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAiCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyAiCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiwgaXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuICcKKyAgICAgICAgICAgICAnWzRdIEFcbicKKyAgICAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAgICAncHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIE5vdGUgdGhhdCB0aGlzIGlzICcKKyAgICAgICAgICAgICAncmVsaWFibGVcbicKKyAgICAgICAgICAgICAnb25seSByaWdodCBhZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0ICcKKyAgICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAgICdkZWZpbmVkIHVzaW5nIHRoZSBkZWZpbml0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBpcyB0aGVuIGJvdW5kIHRvIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgJ25hbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCAnCisgICAgICAgICAgICAgJ21hbnlcbicKKyAgICAgICAgICAgICAncG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAnCisgICAgICAgICAgICAgJyJhd2FpdCIgYW5kXG4nCisgICAgICAgICAgICAgJyJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsXG4nCisgICAgICAgICAgICAgJyJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgJworICAgICAgICAgICAgICdib2RpZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIgJworICAgICAgICAgICAgICdrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuJworICAgICAgICAgICAgICdjb3JvdXRpbmVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGRvX3N0dWZmKClcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IHNvbWVfY29yb3V0aW5lKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSAoSVRFUilcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bm5pbmcgPSBUcnVlXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlIHJ1bm5pbmc6XG4nCisgICAgICAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4nCisgICAgICAgICAgICAgJyAgICAgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX3dpdGhfc3RtdCA6Oj0gImFzeW5jIiB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgJworICAgICAgICAgICAgICdhYmxlXG4nCisgICAgICAgICAgICAgJ3RvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBtZ3IgPSAoRVhQUilcbicKKyAgICAgICAgICAgICAnICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4nCisgICAgICAgICAgICAgJyAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncilcbicKKyAgICAgICAgICAgICAnICAgZXhjID0gVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVkFSID0gYXdhaXQgYWVudGVyXG4nCisgICAgICAgICAgICAgJyAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdDpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FlbnRlcl9fKCkiIGFuZCAiX19hZXhpdF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA0OTIqKiAtIENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4nCisgICAgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4nCisgICAgICAgICAgICAgJyAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgJworICAgICAgICAgICAgICdsb3N0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuJworICAgICAgICAgICAgICcgICAgImJyZWFrIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAnICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4nCisgICAgICAgICAgICAgIiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24ncyAqZG9jc3RyaW5nKi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1s0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICIgICAgdGhlcmVmb3JlIHRoZSBjbGFzcydzICpkb2NzdHJpbmcqLlxuIiwKKyAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbicKKyAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgJ3JlYWxseVxuJworICAgICAgICAgICAgICdzdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKKyAnY29udmVyc2lvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0FyaXRobWV0aWMgY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgJworICAgICAgICAgICAgICAgICdwaHJhc2VcbicKKyAgICAgICAgICAgICAgICAnInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzICcKKyAgICAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAgICAndGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzICcKKyAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICcgIGNvbXBsZXg7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgJworICAgICAgICAgICAgICAgICduZWNlc3NhcnkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdTb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nIGFzIGFcbicKKyAgICAgICAgICAgICAgICAibGVmdCBhcmd1bWVudCB0byB0aGUgJyUnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICd0aGVpciBvd25cbicKKyAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBiZWhhdmlvci5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG4nCisgICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgJworICAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3ICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgJworICAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgJworICAgICAgICAgICAgICAgICAgJyJfX2luaXRfXygpIjsgZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAnYXQgYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdzdGFjayBmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCAnCisgICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICAnCisgICAgICAgICAgICAgICAgICAnVGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyICcKKyAgICAgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24gMS41LFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICd1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRpb24gb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGEgJworICAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICcKKyAgICAgICAgICAgICAgICAgICcib2JqZWN0IiBpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gJworICAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyAiCisgICAgICAgICAgICAgICAgICAndHlwZSBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSAnCisgICAgICAgICAgICAgICAgICAnb3IpIHRoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAgJ3BhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSAnCisgICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgJworICAgICAgICAgICAgICAgICAgJ2EgZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG4nCisgICAgICAgICAgICAgJyJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayAnCisgICAgICAgICAgICAgJ2ZyYW1lcyxcbicKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2luZ1xuJworICAgICAgICAgICAgICdhbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5ICcKKyAgICAgICAgICAgICAncmVhZGluZ1xuJworICAgICAgICAgICAgICd0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgJworICAgICAgICAgICAgICciY21kIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gdW5kZXJcbicKKyAgICAgICAgICAgICAnY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgIiAgID4+PiBwZGIucnVuKCdteW1vZHVsZS50ZXN0KCknKVxuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDApPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAiICAgTmFtZUVycm9yOiAnc3BhbSdcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiIG1vZHVsZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2F2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgJ2FuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciAnCisgICAgICAgICAgICAgJ3NjcmlwdHMuICBGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgJworICAgICAgICAgICAgICdwb3N0LW1vcnRlbVxuJworICAgICAgICAgICAgICdkZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyICcKKyAgICAgICAgICAgICAncG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiJ3Mgc3RhdGUgIgorICAgICAgICAgICAgICcoc3VjaFxuJworICAgICAgICAgICAgICdhcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICJkZWJ1Z2dlciB1cG9uIHByb2dyYW0ncyBleGl0LlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgJworICAgICAgICAgICAgICdleGVjdXRlc1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSBEZWJ1Z2dlciBDb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nICcKKyAgICAgICAgICAgICAncHJvZ3JhbSBpc1xuJworICAgICAgICAgICAgICd0byBpbnNlcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiAnCisgICAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgICAnc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlICcKKyAgICAgICAgICAgICAncnVubmluZ1xuJworICAgICAgICAgICAgICd3aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgImNvbnRpbnVlIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuJworICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbicKKyAgICAgICAgICAgICAnICAgICAgIHRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuJworICAgICAgICAgICAgICcgICAgICAgcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgTmFtZUVycm9yOiBzcGFtXG4nCisgICAgICAgICAgICAgJyAgID4+PiBwZGIucG0oKVxuJworICAgICAgICAgICAgICcgICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgIC0+IHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJ2luIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55ICcKKyAgICAgICAgICAgICAnY29kZSBpc1xuJworICAgICAgICAgICAgICcgICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgJworICAgICAgICAgICAgICdQZGJcbicKKyAgICAgICAgICAgICAnICAgd2lsbCBsb2FkIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBUaGUgKnJlYWRyYyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7ICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICciaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyICcKKyAgICAgICAgICAgICAndGhlIGhlbHBcbicKKyAgICAgICAgICAgICAnY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuJworICAgICAgICAgICAgICdBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAndGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAnCisgICAgICAgICAgICAgJygiW10iKSBpblxuJworICAgICAgICAgICAgICd0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG4nCisgICAgICAgICAgICAgJ0FsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsICcKKyAgICAgICAgICAgICAnYmFyXG4nCisgICAgICAgICAgICAgJygifCIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgJworICAgICAgICAgICAgICdFeGNlcHRpb246IGlmXG4nCisgICAgICAgICAgICAgJ3RoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlICIKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcy4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuJworICAgICAgICAgICAgICdleGFtaW5hdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAnCisgICAgICAgICAgICAgJyI7OyIuXG4nCisgICAgICAgICAgICAgJyhBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgJworICAgICAgICAgICAgICdjb21tYW5kc1xuJworICAgICAgICAgICAgICdpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuICcKKyAgICAgICAgICAgICAndHlwZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgJworICAgICAgICAgICAgICdhbGlhc2VzLiAgSWZcbicKKyAgICAgICAgICAgICAnYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdhbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgJworICAgICAgICAgICAgICdwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgJworICAgICAgICAgICAgICciaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgJworICAgICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICAgICdjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2VuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lnbm9yZSBicG51bWJlciBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgJworICAgICAgICAgICAgICdjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgJworICAgICAgICAgICAgICdhY3RpdmVcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW504oCUd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJyAgIGxpc3QgdG8gZXhlY3V0ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgIElmIHlvdSB1c2UgdGhlICdzaWxlbnQnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlICIKKyAgICAgICAgICAgICAndXN1YWxcbicKKyAgICAgICAgICAgICAnICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAnbWF5IGJlXG4nCisgICAgICAgICAgICAgJyAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyAnCisgICAgICAgICAgICAgJ21lc3NhZ2UgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgJworICAgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgICAnICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3ModGVwKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSAnCisgICAgICAgICAgICAgJ29jY2FzaW9uXG4nCisgICAgICAgICAgICAgJyAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbihleHQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJyAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICJuZXh0IiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5ICcKKyAgICAgICAgICAgICAnc3RvcHBpbmcgYXRcbicKKyAgICAgICAgICAgICAnICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bnQoaWwpIFtsaW5lbm9dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvICcKKyAgICAgICAgICAgICAnc3RvcCB3aGVuXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSAnCisgICAgICAgICAgICAgJ251bWJlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3IoZXR1cm4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Mob250KGludWUpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgJworICAgICAgICAgICAgICdlbmNvdW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2oodW1wKSBsaW5lbm9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSAnCisgICAgICAgICAgICAgJ2FnYWluLFxuJworICAgICAgICAgICAgICIgICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gcnVuLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgJworICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICcgICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wIG9yICcKKyAgICAgICAgICAgICAnb3V0XG4nCisgICAgICAgICAgICAgJyAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2woaXN0KSBbZmlyc3RbLCBsYXN0XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgJworICAgICAgICAgICAgICdsaXN0IDExXG4nCisgICAgICAgICAgICAgJyAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgICAgJ2xpc3RpbmcuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiAgJworICAgICAgICAgICAgICdXaXRoXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ2xlc3NcbicKKyAgICAgICAgICAgICAnICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgJworICAgICAgICAgICAgICdJZiBhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgJworICAgICAgICAgICAgICdkaWZmZXJzXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbGwgfCBsb25nbGlzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhKHJncylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50ICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzICcKKyAgICAgICAgICAgICAncHJldHR5LVxuJworICAgICAgICAgICAgICcgICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3aGF0aXMgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuJworICAgICAgICAgICAgICcgICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmRpc3BsYXkgW2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2ludGVyYWN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTdGFydCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlICJjb2RlIiBtb2R1bGUpICcKKyAgICAgICAgICAgICAnd2hvc2VcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyAnCisgICAgICAgICAgICAgJ2ZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICcgICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5ICcKKyAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICcgICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgJworICAgICAgICAgICAgICdsZWdhbGx5XG4nCisgICAgICAgICAgICAgJyAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAnCisgICAgICAgICAgICAgJypjYW4qIGJlXG4nCisgICAgICAgICAgICAgJyAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSAnCisgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAnICAgYWxvbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiAnCisgICAgICAgICAgICAgJ3BsYWNlZFxuJworICAgICAgICAgICAgICcgICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogJworICAgICAgICAgICAgICdwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbicKKyAgICAgICAgICAgICAnICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuJworICAgICAgICAgICAgICcgICAgICBhbGlhcyBwcyBwaSBzZWxmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmFsaWFzIG5hbWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnISBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJnbG9iYWwiIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gWyctbCddXG4iCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdydW4gW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdyZXN0YXJ0IFthcmdzIC4uLl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdzdXBwbGllZCxcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgc3BsaXQgd2l0aCAic2hsZXgiIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuJworICAgICAgICAgICAgICcgICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgJworICAgICAgICAgICAgICdvcHRpb25zIGFyZVxuJworICAgICAgICAgICAgICcgICBwcmVzZXJ2ZWQuICJyZXN0YXJ0IiBpcyBhbiBhbGlhcyBmb3IgInJ1biIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdxKHVpdClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyAnCisgICAgICAgICAgICAgJ2Fib3J0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluICcKKyAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKKyAnZGVsJzogJ1xuJworICAgICAgICAnVGhlICJkZWwiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50ICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdkZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG4nCisgICAgICAgICdoaW50cy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbicKKyAgICAgICAgJ3RvIHJpZ2h0LlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgJworICAgICAgICAnb3JcbicKKyAgICAgICAgJ2dsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhICJnbG9iYWwiXG4nCisgICAgICAgICdzdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbicKKyAgICAgICAgJyJOYW1lRXJyb3IiIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzICcKKyAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAndG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuJworICAgICAgICAnZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgJworICAgICAgICAnZXZlblxuJworICAgICAgICAndGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG4nCisgICAgICAgICdmcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuJworICAgICAgICAnYmxvY2suXG4nLAorICdkaWN0JzogJ1xuJworICAgICAgICAgJ0RpY3Rpb25hcnkgZGlzcGxheXNcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG4nCisgICAgICAgICAnZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gJworICAgICAgICAgJyJ9IlxuJworICAgICAgICAgJyAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbicKKyAgICAgICAgICcgICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gfCAiKioiIG9yX2V4cHJcbicKKyAgICAgICAgICcgICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuJworICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSAnCisgICAgICAgICAnZGljdGlvbmFyeTpcbicKKyAgICAgICAgICdlYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuJworICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxuJworICAgICAgICAgIm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZG91YmxlIGFzdGVyaXNrICIqKiIgZGVub3RlcyAqZGljdGlvbmFyeSB1bnBhY2tpbmcqLiBJdHMgb3BlcmFuZFxuJworICAgICAgICAgJ211c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG4nCisgICAgICAgICAnZGljdGlvbmFyeS4gIExhdGVyIHZhbHVlcyByZXBsYWNlIHZhbHVlcyBhbHJlYWR5IHNldCBieSBlYXJsaWVyXG4nCisgICAgICAgICAna2V5L2RhdHVtIHBhaXJzIGFuZCBlYXJsaWVyIGRpY3Rpb25hcnkgdW5wYWNraW5ncy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjU6IFVucGFja2luZyBpbnRvIGRpY3Rpb25hcnkgZGlzcGxheXMsIG9yaWdpbmFsbHlcbicKKyAgICAgICAgICdwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxuJworICAgICAgICAgJ25lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuJworICAgICAgICAgJyJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgJworICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgJ2tleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgJworICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAndGhleSBhcmUgcHJvZHVjZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbicKKyAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeS4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuJworICAgICAgICAgJ3Nob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbicKKyAgICAgICAgICdiZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbicKKyAgICAgICAgICdyaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAorICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCBjb21waWxlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHdoZW4gdXNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGZ1bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm90IHJlc29sdmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdlbHNlJzogJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICdvbmVcbicKKyAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gJworICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG4nCisgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnZXhjZXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciAnCisgICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiAnCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICAnY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgJworICAgICAgICAgICAgICAgJ2FuIG91dGVyXG4nCisgICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2UgJworICAgICAgICAgICAgICAgJ29mIGNvZGVcbicKKyAgICAgICAgICAgICAgICdmcm9tIHRoZSB0b3ApLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgICdlaXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICAnc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICAnVGhlaXJcbicKKyAgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gJworICAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2UgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgJyAgICBjb21waWxlZC5cbicsCisgJ2V4ZWNtb2RlbCc6ICdcbicKKyAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBtb2RlbFxuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU3RydWN0dXJlIG9mIGEgcHJvZ3JhbVxuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIFB5dGhvbiBwcm9ncmFtIGlzIGNvbnN0cnVjdGVkIGZyb20gY29kZSBibG9ja3MuIEEgKmJsb2NrKiBpcyAnCisgICAgICAgICAgICAgICdhIHBpZWNlXG4nCisgICAgICAgICAgICAgICdvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYSB1bml0LiBUaGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nIGFyZVxuJworICAgICAgICAgICAgICAnYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzcyBkZWZpbml0aW9uLiAnCisgICAgICAgICAgICAgICdFYWNoXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0IGZpbGUgKGEgZmlsZSAnCisgICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICAnYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQgJworICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBIHNjcmlwdCBjb21tYW5kICcKKyAgICAgICAgICAgICAgJyhhXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgIicqKi1jKionXG4iCisgICAgICAgICAgICAgICdvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAnZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgJworICAgICAgICAgICAgICAnY29udGFpbnNcbicKKyAgICAgICAgICAgICAgJ3NvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kICcKKyAgICAgICAgICAgICAgJ2RldGVybWluZXNcbicKKyAgICAgICAgICAgICAgIndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9jaydzICIKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBoYXNcbicKKyAgICAgICAgICAgICAgJ2NvbXBsZXRlZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCAnCisgICAgICAgICAgICAgICdvciBhZnRlclxuJworICAgICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gICcKKyAgICAgICAgICAgICAgJ1RoaXMgZm9ybVxuJworICAgICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgJ2JvdW5kIGZvclxuJworICAgICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayAnCisgICAgICAgICAgICAgICdkZWZpbmVkIGJ5IGFcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICdhdCB0aGVcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uICcKKyAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgJworICAgICAgICAgICAgICAnYSBsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gICcKKyAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCAnCisgICAgICAgICAgICAgICd3aGVyZSB0aGVcbicKKyAgICAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2ssIGFsbFxuJworICAgICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCAnCisgICAgICAgICAgICAgICd3aXRoaW4gYVxuJworICAgICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgJworICAgICAgICAgICAgICAnYW55d2hlcmVcbicKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gJworICAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgJworICAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgJworICAgICAgICAgICAgICAnc2VhcmNoZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgJworICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgICd0aW1lIGFcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgJ2lzIGFuXG4nCisgICAgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvZlxuJworICAgICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzICcKKyAgICAgICAgICAgICAgJ2xpbWl0ZWQgdG9cbicKKyAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiAnCisgICAgICAgICAgICAgICdtZXRob2RzIC0tXG4nCisgICAgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgJworICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xhdHRlciBjYXNlXG4nCisgICAgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuICcKKyAgICAgICAgICAgICAgJ2luIGFueVxuJworICAgICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgJworICAgICAgICAgICAgICAnVXNlcnNcbicKKyAgICAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCAnCisgICAgICAgICAgICAgICd3aGVuIHVzZWRcbicKKyAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgJ2J5IGFueVxuJworICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiAnCisgICAgICAgICAgICAgICdvdXRlclxuJworICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhwcmxpc3RzJzogJ1xuJworICAgICAgICAgICAgICAnRXhwcmVzc2lvbiBsaXN0c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqICcKKyAgICAgICAgICAgICAgJ1siLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogJworICAgICAgICAgICAgICAnW3N0YXJyZWRfaXRlbV1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICd0aGUgdHVwbGVcbicKKyAgICAgICAgICAgICAgJ2lzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICdldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgJworICAgICAgICAgICAgICAnYmUgYW5cbicKKyAgICAgICAgICAgICAgJyppdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCAnCisgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAnYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICd1bnBhY2tpbmcuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsICcKKyAgICAgICAgICAgICAgJ29yaWdpbmFsbHlcbicKKyAgICAgICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgJworICAgICAgICAgICAgICAnKGEuay5hLiBhXG4nCisgICAgICAgICAgICAgICcqc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlICcKKyAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2Vzbid0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyICIKKyAgICAgICAgICAgICAgJ3lpZWxkcyB0aGVcbicKKyAgICAgICAgICAgICAgJ3ZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuICcKKyAgICAgICAgICAgICAgJ2VtcHR5IHBhaXJcbicKKyAgICAgICAgICAgICAgJ29mIHBhcmVudGhlc2VzOiAiKCkiLilcbicsCisgJ2Zsb2F0aW5nJzogJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbicKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuJworICAgICAgICAgICAgICcgICBwb2ludGZsb2F0ICAgIDo6PSBbZGlnaXRwYXJ0XSBmcmFjdGlvbiB8IGRpZ2l0cGFydCAiLiJcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnRmbG9hdCA6Oj0gKGRpZ2l0cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0cGFydCAgICAgOjo9IGRpZ2l0IChbIl8iXSBkaWdpdCkqXG4nCisgICAgICAgICAgICAgJyAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXRwYXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgJworICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICdyYWRpeCAxMC4gRm9yIGV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbicKKyAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4gaW50ZWdlciBsaXRlcmFscywgdW5kZXJzY29yZXMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAnCisgICAgICAgICAgICAgJzMuMTRfMTVfOTNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgJworICAgICAgICAgICAgICdncm91cGluZ1xuJworICAgICAgICAgICAgICdwdXJwb3NlcyBpbiBsaXRlcmFscy5cbicsCisgJ2Zvcic6ICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbicKKyAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxuJworICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgJworICAgICAgICAnRWFjaFxuJworICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbicKKyAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuJworICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iICcKKyAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbicKKyAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICd3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuJworICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCAnCisgICAgICAgICdsaXN0LlxuJworICAgICAgICAnVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgJworICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAnICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSAnCisgICAgICAgICduZXh0XG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuJworICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbicKKyAgICAgICAgJ2FsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuJworICAgICAgICAnaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yICcKKyAgICAgICAgJ2lcbicKKyAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbicKKyAgICAgICAgJyAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbicKKyAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4nCisgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4nCisgICAgICAgICcgIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgJworICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4ICcKKyAgICAgICAgJ29mXG4nCisgICAgICAgICcgIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4nCisgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuJworICAgICAgICAnICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuJworICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgICBmb3IgeCBpbiBhWzpdOlxuJworICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAorICdmb3JtYXRzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4XG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXR0ZXIiLFxuJworICAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICdzeW50YXggaXNcbicKKyAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvIHRoYXQgb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywgYnV0IHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlc1xuJworICAgICAgICAgICAgICAgICAgJyJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgJworICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJ3RleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkICcKKyAgICAgICAgICAgICAgICAgICd0byBpbmNsdWRlXG4nCisgICAgICAgICAgICAgICAgICAnYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2RvdWJsaW5nOlxuJworICAgICAgICAgICAgICAgICAgJyJ7eyIgYW5kICJ9fSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICcKKyAgICAgICAgICAgICAgICAgICciWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICciXSI+ICtcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24+XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Ugc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2VpdGhlciBhXG4nCisgICAgICAgICAgICAgICAgICAibnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0J3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhICIKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQsIGFuZCBpZiBpdCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQgIgorICAgICAgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnYXJlIDAsIDEsIDIsXG4nCisgICAgICAgICAgICAgICAgICAnLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgJworICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAnQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICcKKyAgICAgICAgICAgICAgICAgICciXCcxMFwnIiBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhbnlcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgJworICAgICAgICAgICAgICAgICAgJ3doaWxlIGFuXG4nCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAgIyBSZWZlcmVuY2VzIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSAnCisgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvICcKKyAgICAgICAgICAgICAgICAgICd7MX0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnbmFtZSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAnb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mICcKKyAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICdwbGF5ZXJzJy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZm9ybWF0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Rlc2lyYWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2ZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzICcKKyAgICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmcgYmVmb3JlXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzICcKKyAgICAgICAgICAgICAgICAgICdieXBhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiAnCisgICAgICAgICAgICAgICAgICAnd2hpY2ggY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICciXCchYVwnIiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxzICJhc2NpaSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCAnCisgICAgICAgICAgICAgICAgICAnYWxpZ25tZW50LFxuJworICAgICAgICAgICAgICAgICAgJ3BhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gJworICAgICAgICAgICAgICAgICAgJ2RlZmluZSBpdHNcbicKKyAgICAgICAgICAgICAgICAgICdvd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdtaW5pLWxhbmd1YWdlLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2lzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIG5hbWUsXG4nCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBmbGFnIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgYnV0IGRlZXBlciAnCisgICAgICAgICAgICAgICAgICAnbmVzdGluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICdhbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhIHZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIHRoZSBGb3JtYXQgZXhhbXBsZXMgc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG4nCisgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lZFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgJyhzZWUgRm9ybWF0IFN0cmluZyBTeW50YXggYW5kIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMpLiAnCisgICAgICAgICAgICAgICAgICAnVGhleSBjYW5cbicKKyAgICAgICAgICAgICAgICAgICdhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4gImZvcm1hdCgpIiAnCisgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24uICBFYWNoXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvdyB0aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgJworICAgICAgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0XG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSAnCisgICAgICAgICAgICAgICAgICAncHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgInN0cigpIiBvbiB0aGUgdmFsdWUuICcKKyAgICAgICAgICAgICAgICAgICdBIG5vbi1lbXB0eVxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXRfc3BlYyAgICAgOjo9ICcKKyAgICAgICAgICAgICAgICAgICdbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVtncm91cGluZ19vcHRpb25dWy5wcmVjaXNpb25dW3R5cGVdXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlsbCAgICAgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICAgICAgICcgICBhbGlnbiAgICAgICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpZ24gICAgICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lkdGggICAgICAgICAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgZ3JvdXBpbmdfb3B0aW9uIDo6PSAiXyIgfCAiLCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBwcmVjaXNpb24gICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlICAgICAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICcKKyAgICAgICAgICAgICAgICAgICciRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGEgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgJworICAgICAgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgJworICAgICAgICAgICAgICAgICAgJygiInsiIiBvclxuJworICAgICAgICAgICAgICAgICAgJyIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIGZvcm1hdHRlZCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwgb3Igd2hlblxuJworICAgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSAnCisgICAgICAgICAgICAgICAgICAndG8gaW5zZXJ0IGFcbicKKyAgICAgICAgICAgICAgICAgICdjdXJseSBicmFjZSB3aXRoIGEgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAibGltaXRhdGlvbiBkb2Vzbid0XG4iCisgICAgICAgICAgICAgICAgICAnYWZmZWN0IHRoZSAiZm9ybWF0KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgT3B0aW9uICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3QgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMpLiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIChpZiBhbnkpICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nIGZpZWxkcyAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtICcrMDAwMDAwMTIwJy4gVGhpcyBhbGlnbm1lbnQgIgorICAgICAgICAgICAgICAgICAgJ29wdGlvbiBpcyBvbmx5ICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgJworICAgICAgICAgICAgICAgICAgImRlZmF1bHQgd2hlbiAnMCcgIHxcbiIKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBhdmFpbGFibGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ3NwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIHdpZHRoXG4nCisgICAgICAgICAgICAgICAgICAnd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIG9uZSBvZlxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdib3RoIHBvc2l0aXZlIGFzICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQgb24gcG9zaXRpdmUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ2ZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICdEZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgJworICAgICAgICAgICAgICAgICAgJ2hleGFkZWNpbWFsIG91dHB1dFxuJworICAgICAgICAgICAgICAgICAgJ2lzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAnCisgICAgICAgICAgICAgICAgICAnIlwnMG9cJyIsIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gJworICAgICAgICAgICAgICAgICAgJ2Fsd2F5cyBjb250YWluIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiAnCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgICAnb25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyJcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICdyZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHMgc2VwYXJhdG9yLlxuJworICAgICAgICAgICAgICAgICAgJ0ZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50YXRpb24gdHlwZVxuJworICAgICAgICAgICAgICAgICAgJ2luc3RlYWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAnCisgICAgICAgICAgICAgICAgICAnKipQRVAgMzc4KiopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCdfXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAndGhvdXNhbmRzXG4nCisgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGZvciBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgYW5kIGZvciAnCisgICAgICAgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlICJcJ2RcJyIuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2JcJyIsICJcJ29cJyIsXG4nCisgICAgICAgICAgICAgICAgICAnIlwneFwnIiwgYW5kICJcJ1hcJyIsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzLiAgRm9yXG4nCisgICAgICAgICAgICAgICAgICAnb3RoZXIgcHJlc2VudGF0aW9uIHR5cGVzLCBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICdlcnJvci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBBZGRlZCB0aGUgIlwnX1wnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCA1MTUqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICBJZiBub3RcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgYnkgYVxuJworICAgICAgICAgICAgICAgICAgJ3plcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tYXdhcmUgemVyby1wYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICdmb3IgbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqIGNoYXJhY3RlciBvZiAiXCcwXCciICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAgICAnKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICdiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgcG9pbnRcbicKKyAgICAgICAgICAgICAgICAgICdmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCAiXCdnXCciIG9yICcKKyAgICAgICAgICAgICAgICAgICciXCdHXCciLiAgRm9yIG5vbi1cbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gJworICAgICAgICAgICAgICAgICAgJ2luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgICAnd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICdjb250ZW50LiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlICcKKyAgICAgICAgICAgICAgICAgICdmb3Igc3RyaW5ncyBhbmQgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ3NcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMi4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMTAuICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnb1wnIiAgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICc4LiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICcxNiwgdXNpbmcgbG93ZXItICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSAnCisgICAgICAgICAgICAgICAgICAnOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyB1cHBlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICciXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAnCisgICAgICAgICAgICAgICAgICAnKGV4Y2VwdCAiXCduXCciXG4nCisgICAgICAgICAgICAgICAgICAnYW5kICJOb25lIikuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAndG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ3NjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byBpbmRpY2F0ZSAiCisgICAgICAgICAgICAgICAgICAndGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSAnCisgICAgICAgICAgICAgICAgICAnZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiAnCisgICAgICAgICAgICAgICAgICAnYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwICcKKyAgICAgICAgICAgICAgICAgICdhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgJyIlIi1mb3JtYXR0aW5nLFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAgJyIlIi4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfSwgezF9LCB7Mn0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAne30sIHt9LCB7fScuZm9ybWF0KCdhJywgJ2InLCAnYycpICAjIDMuMSsgb25seVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoKidhYmMnKSAgICAgICMgdW5wYWNraW5nICIKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9ezF9ezB9Jy5mb3JtYXQoJ2FicmEnLCAnY2FkJykgICAjIGFyZ3VtZW50cycgIgorICAgICAgICAgICAgICAgICAgJ2luZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2FicmFjYWRhYnJhJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdChsYXRpdHVkZT0nMzcuMjROJywgIgorICAgICAgICAgICAgICAgICAgImxvbmdpdHVkZT0nLTExNS44MVcnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gY29vcmQgPSB7J2xhdGl0dWRlJzogJzM3LjI0TicsICdsb25naXR1ZGUnOiAiCisgICAgICAgICAgICAgICAgICAiJy0xMTUuODFXJ31cbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdCgqKmNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBhdHRyaWJ1dGVzOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gMy01alxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAoJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgezAucmVhbH0gJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uJykuZm9ybWF0KGMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAiCisgICAgICAgICAgICAgICAgICAiMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC4nXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIFBvaW50OlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgIgorICAgICAgICAgICAgICAgICAgIm1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHRvdGFsID0gMjJcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0NvcnJlY3QgYW5zd2VyczogezouMiV9Jy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBkYXRldGltZVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6JVktJW0tJWQgJUg6JU06JVN9Jy5mb3JtYXQoZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMjAxMC0wNy0wNCAxMjoxNTo1OCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKCc8Xj4nLCBbJ2xlZnQnLCAnY2VudGVyJywgIgorICAgICAgICAgICAgICAgICAgIidyaWdodCddKTpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICd7MDp7ZmlsbH17YWxpZ259MTZ9Jy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgIgorICAgICAgICAgICAgICAgICAgJ2FsaWduPWFsaWduKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0PDw8PDw8PDw8PDw8J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICdeXl5eXmNlbnRlcl5eXl5eJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgICc+Pj4+Pj4+Pj4+PnJpZ2h0J1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjAyWH17OjAyWH17OjAyWH17OjAyWH0nLmZvcm1hdCgqb2N0ZXRzKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDMEE4MDAwMSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50KF8sIDE2KVxuJworICAgICAgICAgICAgICAgICAgJyAgIDMyMzIyMzU1MjFcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gd2lkdGggPSA1XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiAnCisgICAgICAgICAgICAgICAgICAnK05PUk1BTElaRV9XSElURVNQQUNFXG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICBmb3IgYmFzZSBpbiAnZFhvYic6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcHJpbnQoJ3swOnt3aWR0aH17YmFzZX19Jy5mb3JtYXQobnVtLCAiCisgICAgICAgICAgICAgICAgICAiYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD0nICcpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwcmludCgpXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2dsb2JhbCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgJworICAgICAgICAgICAnZW50aXJlXG4nCisgICAgICAgICAgICdjdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuJworICAgICAgICAgICAnZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgJworICAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgICdwYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiwgImltcG9ydCIgc3RhdGVtZW50LCBvciB2YXJpYWJsZSBhbm5vdGF0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlICcKKyAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgJ2ZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSAnCisgICAgICAgICAgICdjaGFuZ2VcbicKKyAgICAgICAgICAgJ3RoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlICcKKyAgICAgICAgICAgJ3BhcnNlci4gIEl0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdvciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2FmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG4nCisgICAgICAgICAgICdjb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAnCisgICAgICAgICAgICciZXZhbCgpIlxuJworICAgICAgICAgICAnYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCisgJ2lkLWNsYXNzZXMnOiAnXG4nCisgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgJyAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKKyAnaWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgJ2FubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyAnCisgICAgICAgICAgICAgICAgJ3NlZSBhbHNvXG4nCisgICAgICAgICAgICAgICAgJyoqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgJworICAgICAgICAgICAgICAgICdsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAnbGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICd0aGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgJ0FTQ0lJXG4nCisgICAgICAgICAgICAgICAgJ3JhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgJworICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhdGlvblxuJworICAgICAgICAgICAgICAgICd1c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyAnCisgICAgICAgICAgICAgICAgJ2luY2x1ZGVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbicKKyAgICAgICAgICAgICAgICAnICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCAnCisgICAgICAgICAgICAgICAgJ0xsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAnT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggJworICAgICAgICAgICAgICAgICd0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0MgJworICAgICAgICAgICAgICAgICdub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpOZCogLSBkZWNpbWFsIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgJ1Byb3BMaXN0LnR4dCB0b1xuJworICAgICAgICAgICAgICAgICcgIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlICcKKyAgICAgICAgICAgICAgICAncGFyc2luZztcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBmb3JcbicKKyAgICAgICAgICAgICAgICAnVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxuJworICAgICAgICAgICAgICAgICdwb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4nCisgICAgICAgICAgICAgICAgJyAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICcgICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAnc2VjdGlvbiBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJyAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKiJcbicKKyAgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhICcKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgICdiYXNlIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZic6ICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAnXG4nCisgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgJ1xuJworICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICdvbmVcbicKKyAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2ltYWdpbmFyeSc6ICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFsc1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgZGlnaXRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byAnCisgICAgICAgICAgICAgICdpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAgMy4xNGUtMTBqICAgJworICAgICAgICAgICAgICAnMy4xNF8xNV85M2pcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuJworICAgICAgICAgICAnc3RlcHM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbicKKyAgICAgICAgICAgJyAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzICcKKyAgICAgICAgICAgJ3Rob3VnaFxuJworICAgICAgICAgICAndGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG4nCisgICAgICAgICAgICdkZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0sICcKKyAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICdhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbiAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlICcKKyAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAndGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWRcbicKKyAgICAgICAgICAgJ3doaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICJtb2R1bGUncyBjb2RlLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ21hZGVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuJworICAgICAgICAgICAnICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgIiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsICIKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICcgIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICcgIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4nCisgICAgICAgICAgICcgIHJhdGhlciB0aGFuIGRpcmVjdGx5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4nCisgICAgICAgICAgICcgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kICcKKyAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgJyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgJyAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzICcKKyAgICAgICAgICAgJ3ByZXNlbnQsXG4nCisgICAgICAgICAgICcgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0V4YW1wbGVzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kICcKKyAgICAgICAgICAgJ2xvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2ZiYlxuJworICAgICAgICAgICAnICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnYmF6XG4nCisgICAgICAgICAgICcgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgJworICAgICAgICAgICAnYXR0clxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICduYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0ICcKKyAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyAiCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICd0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSAnCisgICAgICAgICAgICdleHBvcnRpbmdcbicKKyAgICAgICAgICAgJ2l0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoICcKKyAgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgJworICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICd3aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgJworICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICd0aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuICcKKyAgICAgICAgICAgJ0J5XG4nCisgICAgICAgICAgICd1c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgJworICAgICAgICAgICAneW91XG4nCisgICAgICAgICAgICdjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxuJworICAgICAgICAgICAnd2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ3BhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zICcKKyAgICAgICAgICAgJ3VwXG4nCisgICAgICAgICAgICdvbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSAnCisgICAgICAgICAgICdleGVjdXRlXG4nCisgICAgICAgICAgICciZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3UgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgJworICAgICAgICAgICAnbW9kIlxuJworICAgICAgICAgICAnZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuJworICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQICcKKyAgICAgICAgICAgJzMyOCoqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICciaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgJworICAgICAgICAgICAndmVyc2lvbnNcbicKKyAgICAgICAgICAgJ29mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICAnCisgICAgICAgICAgICdJdFxuJworICAgICAgICAgICAnYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG4nCisgICAgICAgICAgICdyZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiAnCisgICAgICAgICAgICduYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdsaW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogY29tbWVudHMsXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogYmxhbmsgbGluZXMsIGFuZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbicKKyAgICAgICAgICAgJyJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuJworICAgICAgICAgICAnIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCAnCisgICAgICAgICAgICdiZWNhdXNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzICcKKyAgICAgICAgICAgJ2NvbXBhdGliaWxpdHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICd0aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAncmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxuJworICAgICAgICAgICAnbW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbicKKyAgICAgICAgICAgJ3J1bnRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgJworICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAnYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAndGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuJworICAgICAgICAgICAnZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAiVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgIgorICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAnbm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ3dpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yICcKKyAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAndGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbicKKyAgICAgICAgICAgJ2ludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgIi1pIiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICd0byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJ2VmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbicKKyAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAorICdpbic6ICdcbicKKyAgICAgICAnTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG4nCisgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxuJworICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG4nCisgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgJworICAgICAgICd0ZXN0c1xuJworICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG4nCisgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG4nCisgICAgICAgJ3kpIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogJworICAgICAgICdpc1xuJworICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuJworICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuJworICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuJworICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG4nCisgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuJworICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG4nCisgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG4nCisgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuJworICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG4nCisgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuJworICAgICAgICciaW4iLlxuJywKKyAnaW50ZWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW50ZWdlciAgICAgIDo6PSBkZWNpbnRlZ2VyIHwgYmluaW50ZWdlciB8IG9jdGludGVnZXIgfCAnCisgICAgICAgICAgICAgJ2hleGludGVnZXJcbicKKyAgICAgICAgICAgICAnICAgZGVjaW50ZWdlciAgIDo6PSBub256ZXJvZGlnaXQgKFsiXyJdIGRpZ2l0KSogfCAiMCIrIChbIl8iXSAnCisgICAgICAgICAgICAgJyIwIikqXG4nCisgICAgICAgICAgICAgJyAgIGJpbmludGVnZXIgICA6Oj0gIjAiICgiYiIgfCAiQiIpIChbIl8iXSBiaW5kaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICA6Oj0gIjAiICgibyIgfCAiTyIpIChbIl8iXSBvY3RkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIGhleGludGVnZXIgICA6Oj0gIjAiICgieCIgfCAiWCIpIChbIl8iXSBoZXhkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG5vbnplcm9kaWdpdCA6Oj0gIjEiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0ICAgICAgICA6Oj0gIjAiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGJpbmRpZ2l0ICAgICA6Oj0gIjAiIHwgIjEiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICA6Oj0gIjAiLi4uIjciXG4nCisgICAgICAgICAgICAgJyAgIGhleGRpZ2l0ICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSAnCisgICAgICAgICAgICAgJ3doYXRcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwuICBUaGV5IGNhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgJworICAgICAgICAgICAgICdyZWFkYWJpbGl0eS5cbicKKyAgICAgICAgICAgICAnT25lIHVuZGVyc2NvcmUgY2FuIG9jY3VyIGJldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSAnCisgICAgICAgICAgICAgJ3NwZWNpZmllcnNcbicKKyAgICAgICAgICAgICAnbGlrZSAiMHgiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90ICcKKyAgICAgICAgICAgICAnYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCAnCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICd1c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuJworICAgICAgICAgICAgICcgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yICcKKyAgICAgICAgICAgICAnZ3JvdXBpbmdcbicKKyAgICAgICAgICAgICAncHVycG9zZXMgaW4gbGl0ZXJhbHMuXG4nLAorICdsYW1iZGEnOiAnXG4nCisgICAgICAgICAgICdMYW1iZGFzXG4nCisgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiAnCisgICAgICAgICAgICdleHByZXNzaW9uX25vY29uZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byAnCisgICAgICAgICAgICdjcmVhdGVcbicKKyAgICAgICAgICAgJ2Fub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiAnCisgICAgICAgICAgICdleHByZXNzaW9uIlxuJworICAgICAgICAgICAneWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhICcKKyAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICdvYmplY3QgZGVmaW5lZCB3aXRoOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgJyAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtzdGFycmVkX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nICcKKyAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgJ2J5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuJworICAgICAgICAgICdzZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSAnCisgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICdmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuJworICAgICAgICAgICdXaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbicKKyAgICAgICAgICAnZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAorICduYW1pbmcnOiAnXG4nCisgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciAnCisgICAgICAgICAgICdhZnRlclxuJworICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgJworICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkICcKKyAgICAgICAgICAgJ2J5IGFcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbicKKyAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzICcKKyAgICAgICAgICAgJy0tXG4nCisgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluICcKKyAgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuICcKKyAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gICcKKyAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbm9ubG9jYWwnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICcKKyAgICAgICAgICAgICAnZXhjbHVkaW5nXG4nCisgICAgICAgICAgICAgJ2dsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yICcKKyAgICAgICAgICAgICAnYmluZGluZyBpc1xuJworICAgICAgICAgICAgICd0byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG4nCisgICAgICAgICAgICAgJ2VuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgJworICAgICAgICAgICAgICdzY29wZVxuJworICAgICAgICAgICAgICdiZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuJworICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAgICAnY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggJworICAgICAgICAgICAgICdwcmUtXG4nCisgICAgICAgICAgICAgJ2V4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCisgJ251bWJlcnMnOiAnXG4nCisgICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nICcKKyAgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAgJ251bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuJworICAgICAgICAgICAgJ2ltYWdpbmFyeSBudW1iZXIpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgJworICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ251bWVyaWMtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSwgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIHRvIGFjY2VwdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgIgorICAgICAgICAgICAgICAgICAgJ3JlZmxlY3RlZCBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICAnYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAnInggPVxuJworICAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiAnCisgICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ29iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICIqT2JqZWN0cyogYXJlIFB5dGhvbidzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSAiCisgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuICcKKyAgICAgICAgICAgICdvYmplY3RzLiAoSW5cbicKKyAgICAgICAgICAgICdhIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyppZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgJworICAgICAgICAgICAgJ29mIGl0XG4nCisgICAgICAgICAgICAnYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciAnCisgICAgICAgICAgICAnY29tcGFyZXMgdGhlXG4nCisgICAgICAgICAgICAnaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG4nCisgICAgICAgICAgICAncmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSAnCisgICAgICAgICAgICAnbWVtb3J5XG4nCisgICAgICAgICAgICAnYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3QgIgorICAgICAgICAgICAgJ3N1cHBvcnRzXG4nCisgICAgICAgICAgICAnKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgJworICAgICAgICAgICAgJ3ZhbHVlc1xuJworICAgICAgICAgICAgJ2ZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJ3R5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyp0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuJworICAgICAgICAgICAgJ2NoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgJworICAgICAgICAgICAgJ3VuY2hhbmdlYWJsZVxuJworICAgICAgICAgICAgJ29uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG4nCisgICAgICAgICAgICAnaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhICcKKyAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAib2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciAiCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uICcKKyAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG4iCisgICAgICAgICAgICAnbnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyAnCisgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAnbGlzdHMgYXJlIG11dGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSAnCisgICAgICAgICAgICAnYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gJworICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICdjaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuICcKKyAgICAgICAgICAgICdPdGhlclxuJworICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90ICcKKyAgICAgICAgICAgICdkZXBlbmRcbicKKyAgICAgICAgICAgICdvbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAnCisgICAgICAgICAgICAnKHNvXG4nCisgICAgICAgICAgICAneW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbiIKKyAgICAgICAgICAgICdmYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSAnCisgICAgICAgICAgICAnY29sbGVjdGFibGUuXG4nCisgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCAnCisgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgJ2NvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICcqY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG4nCisgICAgICAgICAgICAiZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXIncyB2YWx1ZS4gICIKKyAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgJ21vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5ICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICd2YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsICcKKyAgICAgICAgICAgICd3aGVuIHdlXG4nCisgICAgICAgICAgICAndGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAnb2JqZWN0LCBpdHNcbicKKyAgICAgICAgICAgICd2YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG4nCisgICAgICAgICAgICAnaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yICcKKyAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICd0eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCAnCisgICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgICdmb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAnCisgICAgICAgICAgICAnMSIsXG4nCisgICAgICAgICAgICAnImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlICcKKyAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgJ29uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICcKKyAgICAgICAgICAgICciYyJcbicKKyAgICAgICAgICAgICdhbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbicKKyAgICAgICAgICAgICdjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lICcKKyAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICd0byBib3RoICJjIiBhbmQgImQiLilcbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3IgcHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2luIFB5dGhvbiwgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyhtb3N0XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UuICBVbmxlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9ycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudGlhdGlvbiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICdncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMsIGFsbCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlIENvbXBhcmlzb25zIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0V4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0F3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGZsb2F0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnSUVFRSA3NTQgZG91YmxlLVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArICcKKyAgICAgICAgICAgICAgICAgICAgICcxZTEwMCIsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgInksIGl0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgJyIoeC14JXkpLy95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAncG9pbnRzKiAoZS5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMIExFVFRFUiBBIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgbW9yZSB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJyJMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FzIGEgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBvc2l0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGV2ZWwgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIGh1bWFucy4gIEZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBleGFtcGxlLCAiIlxcdTAwQzciID09ICJcXHUwMDQzXFx1MDMyNyIiIGlzICJGYWxzZSIsICcKKyAgICAgICAgICAgICAgICAgICAgICdldmVuIHRob3VnaCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyAodGhhdCBpcyxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VlbWluZ2x5IHVudXN1YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0YW50cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7ICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAnCisgICAgICAgICAgICAgICAgICAgICAnIjIqKi0xIiBpcyAiMC41Ii5cbicsCisgJ3Bhc3MnOiAnXG4nCisgICAgICAgICAnVGhlICJwYXNzIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgJworICAgICAgICAgJ2hhcHBlbnMuXG4nCisgICAgICAgICAnSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuJworICAgICAgICAgJ3N5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKKyAncG93ZXInOiAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvclxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG4nCisgICAgICAgICAgJ2xlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdzeW50YXggaXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBwb3dlciA6Oj0gKCBhd2FpdF9leHByIHwgcHJpbWFyeSApIFsiKioiIHVfZXhwcl1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdvcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgJworICAgICAgICAgICdjb25zdHJhaW5cbicKKyAgICAgICAgICAndGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbicKKyAgICAgICAgICAnZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0ICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAncmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzICcKKyAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgJ3RoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbicKKyAgICAgICAgICAnY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuJworICAgICAgICAgICciMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1JhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiLlxuJworICAgICAgICAgICdSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciY29tcGxleCJcbicKKyAgICAgICAgICAnbnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKKyAncmFpc2UnOiAnXG4nCisgICAgICAgICAgJ1RoZSAicmFpc2UiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICd0aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG4nCisgICAgICAgICAgJ3RoYXQgdGhpcyBpcyBhbiBlcnJvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxuJworICAgICAgICAgICdvYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4nCisgICAgICAgICAgJyJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG4nCisgICAgICAgICAgJ29idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UncyBjbGFzcywgdGhlXG4iCisgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdpcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJ2lzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdvbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoICcKKyAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICd0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzICcKKyAgICAgICAgICAnYXJndW1lbnQpLFxuJworICAgICAgICAgICdsaWtlIHNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgJworICAgICAgICAgICdzZWNvbmRcbicKKyAgICAgICAgICAnKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICd0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbicKKyAgICAgICAgICAnZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICdleGNlcHRpb246XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCAnCisgICAgICAgICAgJ2luc2lkZVxuJworICAgICAgICAgICdhbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICd0aGVuIGF0dGFjaGVkIGFzIHRoZSBuZXcgZXhjZXB0aW9uXCdzICJfX2NvbnRleHRfXyIgYXR0cmlidXRlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdDpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ29jY3VycmVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICdUaGUgdHJ5IHN0YXRlbWVudC5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAnKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdyZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuJworICAgICAgICAgICAnIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKKyAnc2VxdWVuY2UtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSAnCisgICAgICAgICAgICAgICAgICAgJ2sgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAgICdJdCBpc1xuJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGFsbG93XG4nCisgICAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgJworICAgICAgICAgICAgICAgICAgICcwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICAgJyJJbmRleEVycm9yIiBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAnaWYgbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3JldmVyc2Ugb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgcHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICAgJ21vcmUgZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2Egc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlIHRoaXMgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nLAorICdzaGlmdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnU2hpZnRpbmcgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdBIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgJworICAgICAgICAgICAgICdvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmFpc2VkLlxuJywKKyAnc2xpY2luZ3MnOiAnXG4nCisgICAgICAgICAgICAgJ1NsaWNpbmdzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhICcKKyAgICAgICAgICAgICAnc2xpY2luZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuJworICAgICAgICAgICAgICcgICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgJworICAgICAgICAgICAgICdbc3RyaWRlXSBdXG4nCisgICAgICAgICAgICAgJyAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCAnCisgICAgICAgICAgICAgJ2xvb2tzIGxpa2VcbicKKyAgICAgICAgICAgICAnYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSAnCisgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICdjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciAnCisgICAgICAgICAgICAgJ2NvbXBsaWNhdGluZyB0aGVcbicKKyAgICAgICAgICAgICAnc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgJworICAgICAgICAgICAgICdpbmRleGVkXG4nCisgICAgICAgICAgICAgJyh1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJ2tleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAnbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgJworICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgJ3NsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSB3aG9zZSAnCisgICAgICAgICAgICAgJyJzdGFydCIsXG4nCisgICAgICAgICAgICAgJyJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICAnYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsIHJlc3BlY3RpdmVseSwgJworICAgICAgICAgICAgICdzdWJzdGl0dXRpbmdcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBBdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICd0byBzZXZlcmFsXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgJworICAgICAgICAgICAgICAgICAnbm90IHJlcG9ydGVkXG4nCisgICAgICAgICAgICAgICAgICdieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGljdF9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLl9fY2xhc3NfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2Jhc2VzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX25hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsIGRlc2NyaXB0b3IsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uX19xdWFsbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciwgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRvciBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ2F0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgJworICAgICAgICAgICAgICAgICAnaW1tZWRpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFs8Y2xhc3MgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKEJhc2ljIGN1c3RvbWl6YXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgJworICAgICAgICAgICAgICAgICAnaSkiLlxuJworICAgICAgICAgICAgICAgICAnRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gIk5vbmUiIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICd0byAiTm9uZSIsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcgIml0ZXIoKSIgb24gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbCByYWlzZSBhICJUeXBlRXJyb3IiICh3aXRob3V0IGZhbGxpbmcgYmFjayB0b1xuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiKS4gWzJdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgJworICAgICAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnZGVncmVlIHRoYXQgaXRcbicKKyAgICAgICAgICAgICAgICAgJ21ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHMsIGJ1dFxuJworICAgICAgICAgICAgICAgICAnZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIHRoZVxuJworICAgICAgICAgICAgICAgICAnIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgJworICAgICAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gJworICAgICAgICAgICAgICAgICAndGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyAnCisgICAgICAgICAgICAgICAgICdkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCAnCisgICAgICAgICAgICAgICAgICdhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayAnCisgICAgICAgICAgICAgICAgICdmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuICcKKyAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCAnCisgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAnb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICcxLjUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgJworICAgICAgICAgICAgICAgICAnc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgJ3VzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYnkgJworICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGlvbiBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhIHN0cmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsIGVpdGhlciAnCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYSAnCisgICAgICAgICAgICAgICAgICdzaW1pbGFyXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIGZvciBhIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiAnCisgICAgICAgICAgICAgICAgICdpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAnIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgJworICAgICAgICAgICAgICAgICAnZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2ludmVydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgJworICAgICAgICAgICAgICAgICAnaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAnICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICcgICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgdHlwZSAiCisgICAgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nICIKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSAnCisgICAgICAgICAgICAgICAgICd0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAncGFydCBpblxuJworICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgJworICAgICAgICAgICAgICAgICAnaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09ICcKKyAgICAgICAgICAgICAgICAgJ2hhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhICcKKyAgICAgICAgICAgICAgICAgJ2RlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAnICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgJworICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgJworICAgICAgICAgICAgICAgICAnaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ21lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgJworICAgICAgICAgICAgICAgICAnYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiAnCisgICAgICAgICAgICAgICAgICd3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICd0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCAnCisgICAgICAgICAgICAgICAgICdieSBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICcoYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgJworICAgICAgICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ211c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgIipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lcidzICIKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiAnCisgICAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2RlbGV0ZVxuJworICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgJworICAgICAgICAgICAgICAgICAnImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkICcKKyAgICAgICAgICAgICAgICAgJ2ludG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAnY2FsbDpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJ2JvdGhcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ2hvbGQgYVxuJworICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogJworICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICdjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgJworICAgICAgICAgICAgICAgICAnb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgJworICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJ35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJypfX2luaXRfc3ViY2xhc3NfXyogaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aGljaFxuJworICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICd0byBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICd0aGV5XCdyZSBhcHBsaWVkIHRvLCAiX19pbml0X3N1YmNsYXNzX18iIHNvbGVseSBhcHBsaWVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZVxuJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBvZiB0aGUgY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3NtZXRob2Qgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFyZW50XCdzIGNsYXNzICJfX2luaXRfc3ViY2xhc3NfXyIuIEZvciBjb21wYXRpYmlsaXR5ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzZXMgdXNpbmcgIl9faW5pdF9zdWJjbGFzc19fIiwgb25lIHNob3VsZCB0YWtlIG91dCAnCisgICAgICAgICAgICAgICAgICd0aGUgbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MsIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAnCisgICAgICAgICAgICAgICAgICcqKmt3YXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0X25hbWU9IkJydWNlIik6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAib2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fIiAnCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdGhpbmcsXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBtZXRhY2xhc3MgaGludCAibWV0YWNsYXNzIiBpcyBjb25zdW1lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgdHlwZSBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9zdWJjbGFzc19fIlxuJworICAgICAgICAgICAgICAgICAnICAgICBpbXBsZW1lbnRhdGlvbnMuIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzICJ0eXBlKGNscykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMoKSxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgJyJleGVjKCkiIGlzIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcykgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBvciB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbXBsaWNpdFxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbGx5IHNjb3BlZCAiX19jbGFzc19fIiByZWZlcmVuY2UgZGVzY3JpYmVkIGluIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICAgJ3NlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2JvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgJworICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgJ2FzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnemVyby1cbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdjbG9zdXJlXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdib2R5IHJlZmVyXG4nCisgICAgICAgICAgICAgICAgICd0byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybVxuJworICAgICAgICAgICAgICAgICAnb2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdiYXNlZCBvblxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCAnCisgICAgICAgICAgICAgICAgICd0byBtYWtlIHRoZVxuJworICAgICAgICAgICAgICAgICAnY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiBDUHl0aG9uIDMuNiBhbmQgbGF0ZXIsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnIl9fY2xhc3NfXyIgY2VsbCBpcyBwYXNzZWQgdG8gdGhlIG1ldGFjbGFzcyBhcyBhICcKKyAgICAgICAgICAgICAgICAgJyJfX2NsYXNzY2VsbF9fIiBlbnRyeVxuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGNsYXNzIG5hbWVzcGFjZS4gSWYgcHJlc2VudCwgdGhpcyBtdXN0IGJlIHByb3BhZ2F0ZWQgJworICAgICAgICAgICAgICAgICAndXAgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcidHlwZS5fX25ld19fIiBjYWxsIGluIG9yZGVyIGZvciB0aGUgY2xhc3MgdG8gYmUgJworICAgICAgICAgICAgICAgICAnaW5pdGlhbGlzZWRcbicKKyAgICAgICAgICAgICAgICAgJ2NvcnJlY3RseS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhICcKKyAgICAgICAgICAgICAgICAgJyJEZXByZWNhdGlvbldhcm5pbmciIGluXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gMy42LCBhbmQgYSAiUnVudGltZVdhcm5pbmciIGluIHRoZSBmdXR1cmUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdXNpbmcgdGhlIGRlZmF1bHQgbWV0YWNsYXNzICJ0eXBlIiwgb3IgYW55IG1ldGFjbGFzcyAnCisgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICd1bHRpbWF0ZWx5IGNhbGxzICJ0eXBlLl9fbmV3X18iLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJ2N1c3RvbWlzYXRpb24gc3RlcHMgYXJlIGludm9rZWQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBmaXJzdCwgInR5cGUuX19uZXdfXyIgY29sbGVjdHMgYWxsIG9mIHRoZSBkZXNjcmlwdG9ycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgbmFtZXNwYWNlIHRoYXQgZGVmaW5lIGEgIl9fc2V0X25hbWVfXygpIiBtZXRob2Q7XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogc2Vjb25kLCBhbGwgb2YgdGhlc2UgIl9fc2V0X25hbWVfXyIgbWV0aG9kcyBhcmUgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgIGNsYXNzIGJlaW5nIGRlZmluZWQgYW5kIHRoZSBhc3NpZ25lZCBuYW1lIG9mIHRoYXQgJworICAgICAgICAgICAgICAgICAncGFydGljdWxhclxuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9yOyBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBmaW5hbGx5LCB0aGUgIl9faW5pdF9zdWJjbGFzc19fKCkiIGhvb2sgaXMgY2FsbGVkIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbW1lZGlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgcGFyZW50IG9mIHRoZSBuZXcgY2xhc3MgaW4gaXRzIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ3Byb3h5LCB3aGljaCBiZWNvbWVzIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzcyBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgJworICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICdiZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzXG4nCisgICAgICAgICAgICAgICAgICdhcmUgZGVmaW5lZDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgJworICAgICAgICAgICAgICAgICAnZGljdChuYW1lc3BhY2UpKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IEEubWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAiICAgKCdfX21vZHVsZV9fJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicpXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdiZWdpbnNcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggJworICAgICAgICAgICAgICAgICAncmV0dXJucyBhblxuJworICAgICAgICAgICAgICAgICAnZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICdpcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgJworICAgICAgICAgICAgICAgICAnb3JkZXJlZFxuJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAndHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICcobWV0YWNsYXNzKSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnYWN0dWFsIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdhcmUgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICdvbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAnCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uYWxpdHkgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAnCisgICAgICAgICAgICAgICAgICciYWJjIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayAnCisgICAgICAgICAgICAgICAgICc8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAnCisgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIlxuJworICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgJworICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAnbGlrZSBQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgJyJfX3JhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAnYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0ICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCAnCisgICAgICAgICAgICAgICAgICd0aGF0IGJvdGhcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvICcKKyAgICAgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAnICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgJworICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gJworICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVjdG5lc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnICBBIGNhbGwgbGlrZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICd3aXRoICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICAnCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgJworICAgICAgICAgICAgICAgICAnbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5ICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSAnCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAndG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkICcKKyAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbNF0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgIgorICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAnIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ICcKKyAgICAgICAgICAgICAgICAgJz1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAnZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8pLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgJworICAgICAgICAgICAgICAgICAnIisiLFxuJworICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyAnCisgICAgICAgICAgICAgICAgICdhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICIgICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgJworICAgICAgICAgICAgICAgICAncGFzc2VkLWluXG4nCisgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICdhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAiZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ25vdCBpblxuJworICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVhc29uIHdoeVxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgJworICAgICAgICAgICAgICAgICAnb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgYW4gIgorICAgICAgICAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAgICAgICAnICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVzXG4nCisgICAgICAgICAgICAgICAgICdzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyLCBhdFxuJworICAgICAgICAgICAgICAgICAndGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nIE1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMsICcKKyAgICAgICAgICAgICAgICAgICAnYWxvbmcgd2l0aFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ2xhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4IGFuZCBDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdvdGhlciBiYXNlZFxuJworICAgICAgICAgICAgICAgICAgICdvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiAnCisgICAgICAgICAgICAgICAgICAgJ2Zhc3RlciBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VzIGl0IGNhbiBoYW5kbGUgKHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZykuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnbGlicmFyeSBjb3ZlcnMgYVxuJworICAgICAgICAgICAgICAgICAgICdudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgJworICAgICAgICAgICAgICAgICAgICd1dGlsaXRpZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiAnCisgICAgICAgICAgICAgICAgICAgJ21vZHVsZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FzZWZvbGQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgJworICAgICAgICAgICAgICAgICAgICdhZ2dyZXNzaXZlIGJlY2F1c2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ8OfXCciIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gJworICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvICJcJ8OfXCciO1xuJworICAgICAgICAgICAgICAgICAgICcgICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnaXMgZG9uZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgJworICAgICAgICAgICAgICAgICAgICdzcGFjZSkuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC4gRGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICcgICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhICcKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnIlwnc3RyaWN0XCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAnT3RoZXIgcG9zc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICcKKyAgICAgICAgICAgICAgICAgICAnIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgJworICAgICAgICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gRXJyb3IgSGFuZGxlcnMuICcKKyAgICAgICAgICAgICAgICAgICAnRm9yIGEgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkIEVuY29kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2ICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyAqc3RhcnQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gJworICAgICAgICAgICAgICAgICAgICciLTEiIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdF9tYXAobWFwcGluZylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1hcHBpbmciIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7bmFtZX0gd2FzIGJvcm4gaW4gIgorICAgICAgICAgICAgICAgICAgICJ7Y291bnRyeX0nLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPSdHdWlkbycpKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciAiYyJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciVHJ1ZSI6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgJworICAgICAgICAgICAgICAgICAgICciYy5pc251bWVyaWMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RlY2ltYWwoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdEZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgICAnYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyAnCisgICAgICAgICAgICAgICAgICAgJ0RJR0lUIFpFUk8uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnaW5jbHVkZSBkZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzICcKKyAgICAgICAgICAgICAgICAgICAnYSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2lkZW50aWZpZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICAgICdhY2NvcmRpbmcgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIHN1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImRlZiIgYW5kICJjbGFzcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiAnCisgICAgICAgICAgICAgICAgICAgJ0ZSQUNUSU9OXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzcHJpbnRhYmxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAncHJpbnRhYmxlIG9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnKDB4MjApIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICcicmVwcigpIiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdXaGl0ZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ2JpZGlyZWN0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnbWF5IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSAnCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VkIG9uZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN1cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJyJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWFsIGxlbmd0aCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCAnCisgICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgbWFwcGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYSB0aGlyZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiBpbiB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHR3byBlbXB0eSBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKm9sZCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICcKKyAgICAgICAgICAgICAgICAgICAnInNbc3RhcnQ6ZW5kXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgJworICAgICAgICAgICAgICAgICAgICdpbiBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICcgICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgICAnKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJwYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KiBzcGxpdHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAnc3VmZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5yc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnICAgc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnbWlzc2lzc2lwcGknLnJzdHJpcCgnaXB6JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ21pc3Npc3MnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcibWF4c3BsaXQrMSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlbiB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBtYWRlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgICdncm91cGVkIHRvZ2V0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgJworICAgICAgICAgICAgICAgICAgICdcJzJcJ10iKS4gIFRoZSAqc2VwKiBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsICcKKyAgICAgICAgICAgICAgICAgICAnXCczXCddIikuIFNwbGl0dGluZyBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJbXCdcJ10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcsIG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyLDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwsMywnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnJywgJzMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAgJ3NwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHJlZ2FyZGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vICcKKyAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAnYSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5zICJbXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyIDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIDEgICAyICAgMyAgICcuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCAnCisgICAgICAgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAncmVzdWx0aW5nIGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICAnCisgICAgICAgICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBhcnRpY3VsYXIsIHRoZSBib3VuZGFyaWVzIGFyZSBhIHN1cGVyc2V0IG9mICp1bml2ZXJzYWwgJworICAgICAgICAgICAgICAgICAgICduZXdsaW5lcyouXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgJworICAgICAgICAgICAgICAgICAgICdSZXR1cm4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1RhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgJworICAgICAgICAgICAgICAgICAgICdDb2RlKSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAnb2YgbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjJywgJycsICdkZSBmZycsICdrbCddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlICIKKyAgICAgICAgICAgICAgICAgICAiZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGNcXG4nLCAnXFxuJywgJ2RlIGZnXFxyJywgJ2tsXFxyXFxuJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgJworICAgICAgICAgICAgICAgICAgICdnaXZlbiwgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdhIHRlcm1pbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICBbJ09uZSBsaW5lJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcnLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnVHdvIGxpbmVzXFxuJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydUd28gbGluZXMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICAnbG9vayBmb3IuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSAqY2hhcnMqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5zdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLnN0cmlwKCdjbW93ei4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnZXhhbXBsZSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gJworICAgICAgICAgICAgICAgICAgICd0aGUgbGVhZGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBlbmQgdW50aWwgcmVhY2hpbmcgYSBzdHJpbmcgY2hhcmFjdGVyIHRoYXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzICcKKyAgICAgICAgICAgICAgICAgICAncGxhY2Ugb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRyYWlsaW5nIGVuZC4gRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSAnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAiCisgICAgICAgICAgICAgICAgICAgIiMzMiAuLi4uLi4uJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcuc3RyaXAoJy4jISAnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzInXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3dhcGNhc2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyAnCisgICAgICAgICAgICAgICAgICAgJ3N0YXJ0IHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdIZWxsbyB3b3JsZCcudGl0bGUoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnSGVsbG8gV29ybGQnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnd29ya3MgaW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRyYWN0aW9ucyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnZGVzaXJlZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgJworICAgICAgICAgICAgICAgICAgICdyZWd1bGFyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25zOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGltcG9ydCByZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgaW4gd2hpY2ggZWFjaCBjaGFyYWN0ZXIgaGFzICcKKyAgICAgICAgICAgICAgICAgICAnYmVlbiBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICAnYSAqbWFwcGluZypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgKnNlcXVlbmNlKi4gIFdoZW4gaW5kZXhlZCBieSBhIFVuaWNvZGUgb3JkaW5hbCAoYW4gJworICAgICAgICAgICAgICAgICAgICdpbnRlZ2VyKSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBvcmRpbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnM7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiAiTm9uZSIsIHRvIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZzsgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICd0byBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ21hcCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgImNvZGVjcyIgbW9kdWxlIGZvciBhIG1vcmUgZmxleGlibGUgJworICAgICAgICAgICAgICAgICAgICdhcHByb2FjaCB0byBjdXN0b21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnVwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgJworICAgICAgICAgICAgICAgICAgICcoTGV0dGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICczLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnpmaWxsKHdpZHRoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgJworICAgICAgICAgICAgICAgICAgICciXCcwXCciIGRpZ2l0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBtYWtlIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBBIGxlYWRpbmcgc2lnbiBwcmVmaXhcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgICcqYWZ0ZXIqIHRoZSBzaWduXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlciByYXRoZXIgdGhhbiBiZWZvcmUuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICI0MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJzAwMDQyJ1xuIgorICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJy0wMDQyJ1xuIiwKKyAnc3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4nCisgICAgICAgICAgICAnICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSIgfCAiZiIgfCAiRiJcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgJworICAgICAgICAgICAgJyJSZiIgfCAiUkYiXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCAnCisgICAgICAgICAgICAnXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yICcKKyAgICAgICAgICAgICduZXdsaW5lIG9yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuJworICAgICAgICAgICAgJyAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgJworICAgICAgICAgICAgJyJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydGJ5dGVzaXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnICcKKyAgICAgICAgICAgICdsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgJworICAgICAgICAgICAgJ29yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4nCisgICAgICAgICAgICAnICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzICcKKyAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAnd2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSAic3RyaW5ncHJlZml4IiBvciAnCisgICAgICAgICAgICAnImJ5dGVzcHJlZml4IlxuJworICAgICAgICAgICAgJ2FuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgJworICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAndGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiAnCisgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICdnaXZlbiBpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uIEVuY29kaW5nIGRlY2xhcmF0aW9ucy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiAnCisgICAgICAgICAgICAnbWF0Y2hpbmdcbicKKyAgICAgICAgICAgICdzaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSAnCisgICAgICAgICAgICAnZW5jbG9zZWRcbicKKyAgICAgICAgICAgICdpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuJworICAgICAgICAgICAgJ2dlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJygiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSBoYXZlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuJworICAgICAgICAgICAgJ2NoYXJhY3Rlci5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdCeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggIlwnYlwnIiBvciAiXCdCXCciOyB0aGV5ICcKKyAgICAgICAgICAgICdwcm9kdWNlXG4nCisgICAgICAgICAgICAnYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSAnCisgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAnb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCAnCisgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICdncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgJworICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgJyJ1IiBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCAnCisgICAgICAgICAgICAnY29kZWJhc2VzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0JvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbicKKyAgICAgICAgICAgICdsZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqICcKKyAgICAgICAgICAgICdhbmQgdHJlYXRcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nICcKKyAgICAgICAgICAgICdsaXRlcmFscyxcbicKKyAgICAgICAgICAgICciXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCAnCisgICAgICAgICAgICAnc3BlY2lhbGx5LlxuJworICAgICAgICAgICAgIkdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSAiCisgICAgICAgICAgICAndGhhblxuJworICAgICAgICAgICAgJ1B5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzICcKKyAgICAgICAgICAgICdiZWVuXG4nCisgICAgICAgICAgICAnYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbicKKyAgICAgICAgICAgICcoInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiAnCisgICAgICAgICAgICAnZHVhbFxuJworICAgICAgICAgICAgJ1B5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSAnCisgICAgICAgICAgICAnaW5mb3JtYXRpb24uXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQSBzdHJpbmcgbGl0ZXJhbCB3aXRoICJcJ2ZcJyIgb3IgIlwnRlwnIiBpbiBpdHMgcHJlZml4IGlzIGEgJworICAgICAgICAgICAgJypmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCo7IHNlZSBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLiAgVGhlICJcJ2ZcJyIgbWF5ICcKKyAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgJ2NvbWJpbmVkIHdpdGggIlwnclwnIiwgYnV0IG5vdCB3aXRoICJcJ2JcJyIgb3IgIlwndVwnIiwgdGhlcmVmb3JlICcKKyAgICAgICAgICAgICdyYXdcbicKKyAgICAgICAgICAgICdmb3JtYXR0ZWQgc3RyaW5ncyBhcmUgcG9zc2libGUsIGJ1dCBmb3JtYXR0ZWQgYnl0ZXMgbGl0ZXJhbHMgYXJlICcKKyAgICAgICAgICAgICdub3QuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlICcKKyAgICAgICAgICAgICdhbGxvd2VkXG4nCisgICAgICAgICAgICAnKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG4nCisgICAgICAgICAgICAndGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgJworICAgICAgICAgICAgJ2luIHN0cmluZ1xuJworICAgICAgICAgICAgJ2FuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gJworICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAndXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgJworICAgICAgICAgICAgJygxLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICcKKyAgICAgICAgICAgICcoMiwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAnCisgICAgICAgICAgICAnKDQpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDUpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDYpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcyLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlXG4nCisgICAgICAgICAgICAnICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuJworICAgICAgICAgICAgJyAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbicKKyAgICAgICAgICAgICcgICBhZGRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc1LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNi4gQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodFxuJworICAgICAgICAgICAgJyAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ3N0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAnCisgICAgICAgICAgICAnKFRoaXNcbicKKyAgICAgICAgICAgICdiZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyAnCisgICAgICAgICAgICAnbWlzdHlwZWQsXG4nCisgICAgICAgICAgICAndGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgJworICAgICAgICAgICAgJ2Fsc29cbicKKyAgICAgICAgICAgICdpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiAnCisgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgJworICAgICAgICAgICAgJ2J5dGVzXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJyAgIERlcHJlY2F0aW9uV2FybmluZy4gIEluIHNvbWUgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uIHRoZXkgJworICAgICAgICAgICAgJ3dpbGwgYmVcbicKKyAgICAgICAgICAgICcgICBhIFN5bnRheEVycm9yLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0V2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsICcKKyAgICAgICAgICAgICdidXQgdGhlXG4nCisgICAgICAgICAgICAnYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsICJyIlxcIiIiIGlzIGEgJworICAgICAgICAgICAgJ3ZhbGlkXG4nCisgICAgICAgICAgICAnc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgJworICAgICAgICAgICAgJ2RvdWJsZVxuJworICAgICAgICAgICAgJ3F1b3RlOyAiciJcXCIiIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3IHN0cmluZyAnCisgICAgICAgICAgICAnY2Fubm90XG4nCisgICAgICAgICAgICAnZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYSByYXcgJworICAgICAgICAgICAgJ2xpdGVyYWxcbicKKyAgICAgICAgICAgICdjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgJworICAgICAgICAgICAgJ2VzY2FwZVxuJworICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlICcKKyAgICAgICAgICAgICdiYWNrc2xhc2hcbicKKyAgICAgICAgICAgICdmb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnMgYXMgJworICAgICAgICAgICAgJ3BhcnRcbicKKyAgICAgICAgICAgICdvZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCisgJ3N1YnNjcmlwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAnb3IgbGlzdClcbicKKyAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyAnCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKGxpc3RzIG9yIGRpY3Rpb25hcmllcyBmb3IgZXhhbXBsZSkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICAnY2FuIHN1cHBvcnRcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0ZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgdG8gYW5cbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kcyB0byB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAna2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzICcKKyAgICAgICAgICAgICAgICAgICdleGFjdGx5IG9uZVxuJworICAgICAgICAgICAgICAgICAgJ2l0ZW0uKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2FuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24pLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBpblxuJworICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICdsZW5ndGggb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0ICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICAgICAnaXRlbSBvZiAieCIpLlxuJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaXRlbSB3aG9zZVxuJworICAgICAgICAgICAgICAgICAgJ2luZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0ICcKKyAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0byAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBhZGRcbicKKyAgICAgICAgICAgICAgICAgICd0aGF0IHN1cHBvcnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQSBzdHJpbmcncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0ZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAndHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKKyAndHJ1dGgnOiAnXG4nCisgICAgICAgICAgJ1RydXRoIFZhbHVlIFRlc3RpbmdcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4nCisgICAgICAgICAgJyJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIk5vbmUiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJGYWxzZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMC4wIiwgIjBqIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuJworICAgICAgICAgICcgICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbicKKyAgICAgICAgICAnICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgJworICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAncmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG4nCisgICAgICAgICAgJ290aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICcKKyAgICAgICAgICAnIm9yIlxuJworICAgICAgICAgICdhbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKKyAndHJ5JzogJ1xuJworICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuJworICAgICAgICAnZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgJyAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuICcKKyAgICAgICAgJ25vXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG4nCisgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG4nCisgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG4nCisgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAnWzFdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG4nCisgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgJworICAgICAgICAnYW5kXG4nCisgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxuJworICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbicKKyAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCAnCisgICAgICAgICdpZlxuJworICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICdjbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICdhbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxuJworICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG4nCisgICAgICAgICdhdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIGZvb1xuJworICAgICAgICAnXG4nCisgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZm9vXG4nCisgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuJworICAgICAgICAnYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbicKKyAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuJworICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG4nCisgICAgICAgICd1bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuJworICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuJworICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbicKKyAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxuJworICAgICAgICAncmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG4nCisgICAgICAgICdmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbicKKyAgICAgICAgJ3RoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG4nCisgICAgICAgICdub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICcKKyAgICAgICAgJyJ0cnkiXG4nCisgICAgICAgICdjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgJworICAgICAgICAnSWZcbicKKyAgICAgICAgJ3RoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgJworICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICdjbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuJworICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgMS8wXG4nCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAnICAgNDJcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuJworICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4nCisgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2Fsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgJworICAgICAgICAnaW5cbicKKyAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAnaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuJworICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnbGFzdCBvbmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdmaW5hbGx5J1xuIgorICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgIiAgICdmaW5hbGx5J1xuIgorICAgICAgICAnXG4nCisgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG8gJworICAgICAgICAnZ2VuZXJhdGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicsCisgJ3R5cGVzJzogJ1xuJworICAgICAgICAgICdUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgJworICAgICAgICAgICdFeHRlbnNpb25cbicKKyAgICAgICAgICAnbW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuJworICAgICAgICAgICdQeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsICcKKyAgICAgICAgICAnbnVtYmVycyxcbicKKyAgICAgICAgICAnZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggJworICAgICAgICAgICdhZGRpdGlvbnNcbicKKyAgICAgICAgICAnd2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuJworICAgICAgICAgICInc3BlY2lhbCBhdHRyaWJ1dGVzLicgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgJworICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgJ21heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vbmVcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuICcKKyAgICAgICAgICAnSXRcbicKKyAgICAgICAgICAnICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCAnCisgICAgICAgICAgJ2UuZy4sXG4nCisgICAgICAgICAgIiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm5cbiIKKyAgICAgICAgICAnICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vdEltcGxlbWVudGVkXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbicKKyAgICAgICAgICAnICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuJworICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuJworICAgICAgICAgICcgICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4nCisgICAgICAgICAgJyAgIG9wZXJhdG9yLikgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VlIEltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGZvciBtb3JlIGRldGFpbHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdFbGxpcHNpc1xuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yIHRoZVxuJworICAgICAgICAgICcgICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJudW1iZXJzLk51bWJlciJcbicKKyAgICAgICAgICAnICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gICcKKyAgICAgICAgICAnTnVtZXJpY1xuJworICAgICAgICAgICcgICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuJworICAgICAgICAgICcgICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgJworICAgICAgICAgICdyZXByZXNlbnRhdGlvblxuJworICAgICAgICAgICcgICBpbiBjb21wdXRlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICBjb21wbGV4IG51bWJlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5JbnRlZ3JhbCJcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgJworICAgICAgICAgICdpbnRlZ2Vyc1xuJworICAgICAgICAgICcgICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBJbnRlZ2VycyAoImludCIpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbicKKyAgICAgICAgICAnICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiAnCisgICAgICAgICAgJ3NoaWZ0XG4nCisgICAgICAgICAgJyAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgIiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyJ3NcbiIKKyAgICAgICAgICAnICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgb25seSBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbicKKyAgICAgICAgICAnICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgJworICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICcgICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4nCisgICAgICAgICAgJyAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuJworICAgICAgICAgICcgICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0ICcKKyAgICAgICAgICAnc2luZ2xlLVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuJworICAgICAgICAgICcgICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgJworICAgICAgICAgICdmbG9hdGluZ1xuJworICAgICAgICAgICcgICAgICBwb2ludCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuJworICAgICAgICAgICcgICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzICcKKyAgICAgICAgICAnYXBwbHlcbicKKyAgICAgICAgICAnICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlcXVlbmNlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuJworICAgICAgICAgICcgICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICcgICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCAnCisgICAgICAgICAgJ3NldFxuJworICAgICAgICAgICcgICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgKmEqICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4nCisgICAgICAgICAgJyAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbicKKyAgICAgICAgICAnICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzICcKKyAgICAgICAgICAnaW1wbGllc1xuJworICAgICAgICAgICcgICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgJworICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAnICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiAnCisgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgJyAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbW11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciAnCisgICAgICAgICAgJ29iamVjdHMsXG4nCisgICAgICAgICAgJyAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyAnCisgICAgICAgICAgJ2hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3RyaW5nc1xuJworICAgICAgICAgICcgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlICcKKyAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICcgICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSAnCisgICAgICAgICAgJ1UrMTBGRkZGIlxuJworICAgICAgICAgICIgICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgIgorICAgICAgICAgICciY2hhciJcbicKKyAgICAgICAgICAnICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzICcKKyAgICAgICAgICAncmVwcmVzZW50ZWRcbicKKyAgICAgICAgICAnICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICdsZW5ndGhcbicKKyAgICAgICAgICAnICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuJworICAgICAgICAgICcgICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVHVwbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4nCisgICAgICAgICAgIiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSAnc2luZ2xldG9uJykgY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbicKKyAgICAgICAgICAnICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgJworICAgICAgICAgICc4LWJpdFxuJworICAgICAgICAgICcgICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbicKKyAgICAgICAgICAnICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICcKKyAgICAgICAgICAnImRlY29kZSgpIlxuJworICAgICAgICAgICcgICAgICAgICBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBNdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0ICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTGlzdHNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyAnCisgICAgICAgICAgJ25lZWRlZFxuJworICAgICAgICAgICcgICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZSBBcnJheXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSAnCisgICAgICAgICAgJ3Byb3ZpZGVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXQgdHlwZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiAnCisgICAgICAgICAgJ0hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuJworICAgICAgICAgICcgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSAnCisgICAgICAgICAgJ2Zhc3RcbicKKyAgICAgICAgICAnICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4nCisgICAgICAgICAgJyAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4nCisgICAgICAgICAgJyAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgJworICAgICAgICAgICdzZXZlcmFsXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyb3plbiBzZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mICcKKyAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICcgICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSAnCisgICAgICAgICAgJ2luZGV4XG4nCisgICAgICAgICAgJyAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAnCisgICAgICAgICAgJyJrIlxuJworICAgICAgICAgICcgICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRGljdGlvbmFyaWVzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgJworICAgICAgICAgICdhc1xuJworICAgICAgICAgICcgICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXkncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiIKKyAgICAgICAgICAnICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgJworICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmQgJworICAgICAgICAgICciMS4wIilcbicKKyAgICAgICAgICAnICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuJworICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4nCisgICAgICAgICAgJyAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiBEaWN0aW9uYXJ5IGRpc3BsYXlzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuJworICAgICAgICAgICcgICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICcKKyAgICAgICAgICAnImNvbGxlY3Rpb25zIlxuJworICAgICAgICAgICcgICAgICBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDYWxsYWJsZSB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gQ2FsbHMpIGNhbiBiZSBhcHBsaWVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zKS4gIEl0IHNob3VsZCBiZVxuJworICAgICAgICAgICcgICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAiICAgICAgYXMgdGhlIGZ1bmN0aW9uJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1YmNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICduYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkICcKKyAgICAgICAgICAnbmFtZSogfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAiICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb24ncyAgICAgICAiCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbidzIGZyZWUgdmFyaWFibGVzLiAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlICcKKyAgICAgICAgICAncmV0dXJuICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbmVkIHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggJworICAgICAgICAgICdtZXRhZGF0YVxuJworICAgICAgICAgICcgICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAnICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAnCisgICAgICAgICAgJ0Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1dHVyZS4qXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGNhbiBiZVxuIgorICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgJworICAgICAgICAgICdpbnRlcm5hbFxuJworICAgICAgICAgICcgICAgICB0eXBlcyBiZWxvdy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEluc3RhbmNlIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgJworICAgICAgICAgICciX19uYW1lX18iXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgJworICAgICAgICAgICciX19tb2R1bGVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAnCisgICAgICAgICAgJyJOb25lIlxuJworICAgICAgICAgICcgICAgICBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhICcKKyAgICAgICAgICAndXNlci1cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzICcKKyAgICAgICAgICAnaW5zdGFuY2VzLFxuJworICAgICAgICAgICcgICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgIl9fZnVuY19fIiBhdHRyaWJ1dGUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuJworICAgICAgICAgICcgICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgJworICAgICAgICAgICciX19mdW5jX18iXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzICJfX3NlbGZfXyIgJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uICgiX19mdW5jX18iKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsICcKKyAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICcgICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gJworICAgICAgICAgICciZigpIixcbicKKyAgICAgICAgICAnICAgICAgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAiQyIsIGNhbGxpbmcgInguZigxKSIgaXMgZXF1aXZhbGVudCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gIl9fc2VsZl9fIiB3aWxsICcKKyAgICAgICAgICAnYWN0dWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAnCisgICAgICAgICAgJyJDLmYoMSkiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlICcKKyAgICAgICAgICAndW5kZXJseWluZ1xuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkICcKKyAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICcgICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuJworICAgICAgICAgICcgICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIG9mIHRoZSBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuJworICAgICAgICAgICcgICAgICBzZWN0aW9uIFRoZSB5aWVsZCBzdGF0ZW1lbnQpIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgJworICAgICAgICAgICdmdW5jdGlvbiouXG4nCisgICAgICAgICAgJyAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgJworICAgICAgICAgICdjYWxsaW5nXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgJworICAgICAgICAgICcieWllbGQiXG4nCisgICAgICAgICAgJyAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50ICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICByZXR1cm5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvcm91dGluZSBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyAiYXN5bmMgZGVmIiBpc1xuJworICAgICAgICAgICcgICAgICBjYWxsZWQgYSAqY29yb3V0aW5lIGZ1bmN0aW9uKi4gIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiAnCisgICAgICAgICAgJ2NhbGxlZCxcbicKKyAgICAgICAgICAnICAgICAgcmV0dXJucyBhICpjb3JvdXRpbmUqIG9iamVjdC4gIEl0IG1heSBjb250YWluICJhd2FpdCJcbicKKyAgICAgICAgICAnICAgICAgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgImFzeW5jIHdpdGgiIGFuZCAiYXN5bmMgZm9yIiAnCisgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgJyAgICAgIFNlZSBhbHNvIHRoZSBDb3JvdXRpbmUgT2JqZWN0cyBzZWN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuJworICAgICAgICAgICcgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuJworICAgICAgICAgICcgICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgJworICAgICAgICAgICdyZWFkLVxuJworICAgICAgICAgICcgICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICcgICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgJworICAgICAgICAgICJmdW5jdGlvbidzXG4iCisgICAgICAgICAgJyAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbicKKyAgICAgICAgICAnICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyAnCisgICAgICAgICAgJ2RlZmluZWRcbicKKyAgICAgICAgICAnICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbicKKyAgICAgICAgICAnICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4nCisgICAgICAgICAgJyAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuJworICAgICAgICAgICcgICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzc2VzXG4nCisgICAgICAgICAgJyAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgJworICAgICAgICAgICdmYWN0b3JpZXNcbicKKyAgICAgICAgICAnICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuJworICAgICAgICAgICcgICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuJworICAgICAgICAgICcgICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgSW5zdGFuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSAnCisgICAgICAgICAgJ2RlZmluaW5nXG4nCisgICAgICAgICAgJyAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01vZHVsZXNcbicKKyAgICAgICAgICAnICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4nCisgICAgICAgICAgJyAgIGNyZWF0ZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0gYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuJworICAgICAgICAgICcgICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSAnCisgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICcgICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuJworICAgICAgICAgICcgICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuJworICAgICAgICAgICcgICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyAnCisgICAgICAgICAgJ2VxdWl2YWxlbnRcbicKKyAgICAgICAgICAnICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlXG4nCisgICAgICAgICAgIiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkICIKKyAgICAgICAgICAnb25jZVxuJworICAgICAgICAgICcgICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiIKKyAgICAgICAgICAnICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbicKKyAgICAgICAgICAnICAgdW5hdmFpbGFibGU7ICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5pbmcgKnZhcmlhYmxlIGFubm90YXRpb25zKiBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZSBib2R5XG4nCisgICAgICAgICAgJyAgIGV4ZWN1dGlvbjsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgJworICAgICAgICAgICdDXG4nCisgICAgICAgICAgJyAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuJworICAgICAgICAgICcgICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgJyAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4nCisgICAgICAgICAgJyAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSAnCisgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAnICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsICcKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ3VzdG9tIGNsYXNzZXNcbicKKyAgICAgICAgICAnICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAnCisgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDbGFzcyBkZWZpbml0aW9ucykuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAnICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCAnCisgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgJyAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuJworICAgICAgICAgICcgICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuJworICAgICAgICAgICcgICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgJ2RpYW1vbmQnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4iCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuJworICAgICAgICAgICcgICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuJworICAgICAgICAgICcgICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbicKKyAgICAgICAgICAnICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkICcKKyAgICAgICAgICAneWllbGQgYVxuJworICAgICAgICAgICcgICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuJworICAgICAgICAgICcgICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgeWllbGQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzcydzIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAnbmV2ZXJcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgJworICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICcgICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmRlZmluZWQ7XG4nCisgICAgICAgICAgJyAgICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgJworICAgICAgICAgICcqdmFyaWFibGVcbicKKyAgICAgICAgICAnICAgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgY2xhc3MgYm9keSBleGVjdXRpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSAnCisgICAgICAgICAgJ2Fib3ZlKS5cbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbicKKyAgICAgICAgICAiICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlJ3MgY2xhc3MgIgorICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSAnCisgICAgICAgICAgJ3VzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbicKKyAgICAgICAgICAnICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzIGZvciBhbm90aGVyIHdheSAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5ICcKKyAgICAgICAgICAnZGlmZmVyXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLiAgSWYgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICIgICBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0J3MgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZSdzXG4iCisgICAgICAgICAgIiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3MncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCAnCisgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAnICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciAnCisgICAgICAgICAgJ21hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBtZXRob2QgbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuJworICAgICAgICAgICcgICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4nCisgICAgICAgICAgJyAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuJworICAgICAgICAgICcgICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgJyAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbicKKyAgICAgICAgICAiICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyJ3NcbiIKKyAgICAgICAgICAnICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gJworICAgICAgICAgICd0ZXh0XG4nCisgICAgICAgICAgJyAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbnRlcm5hbCB0eXBlc1xuJworICAgICAgICAgICcgICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvZGUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiAnCisgICAgICAgICAgJ2NvZGUsXG4nCisgICAgICAgICAgJyAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuICcKKyAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAiICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbidzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgIgorICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgJworICAgICAgICAgICdhdFxuJworICAgICAgICAgICcgICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byAnCisgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcoaW5jbHVkaW5nXG4nCisgICAgICAgICAgJyAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuJworICAgICAgICAgICcgICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiICcKKyAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICcgICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbicKKyAgICAgICAgICAnICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbicKKyAgICAgICAgICAnICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhICcKKyAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgJyAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAnCisgICAgICAgICAgJyJjb19jb25zdHMiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyAnCisgICAgICAgICAgJ2NvbXBpbGVkO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4nCisgICAgICAgICAgJyAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbicKKyAgICAgICAgICAnICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuJworICAgICAgICAgICcgICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciAnCisgICAgICAgICAgJ2VuY29kaW5nIGFcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICcKKyAgICAgICAgICAnIjB4MDQiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgJworICAgICAgICAgICdhblxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZ2VuZXJhdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCAnCisgICAgICAgICAgJ2RpdmlzaW9uIilcbicKKyAgICAgICAgICAnICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uICcKKyAgICAgICAgICAnZW5hYmxlZDtcbicKKyAgICAgICAgICAnICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJyAgICAgIFB5dGhvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuJworICAgICAgICAgICcgICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJhbWUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICcgICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuJworICAgICAgICAgICcgICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuJworICAgICAgICAgICcgICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICcKKyAgICAgICAgICAnImZfbGFzdGkiXG4nCisgICAgICAgICAgJyAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnanVtcHNcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBICcKKyAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAnICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgJworICAgICAgICAgICd3cml0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZfbGluZW5vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBmcmFtZS5jbGVhcigpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGhlbGQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSAnCisgICAgICAgICAgJ2N5Y2xlc1xuJworICAgICAgICAgICcgICAgICAgICBpbnZvbHZpbmcgZnJhbWUgb2JqZWN0cyAoZm9yIGV4YW1wbGUgd2hlbiBjYXRjaGluZyBhblxuJworICAgICAgICAgICcgICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgICJSdW50aW1lRXJyb3IiIGlzIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgY3VycmVudGx5ICcKKyAgICAgICAgICAnZXhlY3V0aW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgJworICAgICAgICAgICdBXG4nCisgICAgICAgICAgJyAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzICcKKyAgICAgICAgICAnZW50ZXJlZCxcbicKKyAgICAgICAgICAnICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcgICAgICBUaGUgdHJ5IHN0YXRlbWVudC4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJyAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgJworICAgICAgICAgICdmb3JtYXR0ZWQpXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyAnCisgICAgICAgICAgJ2ludGVyYWN0aXZlLFxuJworICAgICAgICAgICcgICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICcKKyAgICAgICAgICAnInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQpLCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbicKKyAgICAgICAgICAnICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgJworICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgJyAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTbGljZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgJworICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICcKKyAgICAgICAgICAnInN0b3AiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogJworICAgICAgICAgICdpdGVtcy5cbicKKyAgICAgICAgICAnICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuJworICAgICAgICAgICcgICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuJworICAgICAgICAgICcgICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgJyAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbicKKyAgICAgICAgICAnICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgJworICAgICAgICAgICd1c3VhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgJworICAgICAgICAgICd3cmFwcGVyXG4nCisgICAgICAgICAgJyAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4nCisgICAgICAgICAgJyAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAnICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCisgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogJworICAgICAgICAgICAgICAgICAgICciZnVuYyhhcmd1bWVudC1saXN0KSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uICh0byBjYWxsXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU2VlIEZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBidWlsdC1cbicKKyAgICAgICAgICAgICAgICAgJ2luICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJBIGRpY3Rpb25hcnkncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzICIKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcyBvclxuJworICAgICAgICAgICAgICAgICAnb3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gJworICAgICAgICAgICAgICAgICAnYnkgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICdpZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2tleXMgb2JleVxuJworICAgICAgICAgICAgICAgICAndGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyAnCisgICAgICAgICAgICAgICAgICdjb21wYXJlIGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcoc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAnaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICdjb21wdXRlcnMgc3RvcmVcbicKKyAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSAnCisgICAgICAgICAgICAgICAgICd1bndpc2UgdG8gdXNlXG4nCisgICAgICAgICAgICAgICAgICd0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2YgImtleTpcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgJworICAgICAgICAgICAgICAgICAiJ3Nqb2VyZCc6XG4iCisgICAgICAgICAgICAgICAgICc0MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdCgqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnaXMgY3JlYXRlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgICAnKml0ZXJhYmxlKlxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gJworICAgICAgICAgICAgICAgICAnYmVjb21lcyBhIGtleVxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICdmb3IgdGhhdCBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgJworICAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBiID0geydvbmUnOiAxLCAndHdvJzogMiwgJ3RocmVlJzogM31cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjID0gZGljdCh6aXAoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sIFsxLCAyLCAzXSkpXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZCA9IGRpY3QoWygndHdvJywgMiksICgnb25lJywgMSksICgndGhyZWUnLCAzKV0pXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZSA9IGRpY3Qoeyd0aHJlZSc6IDMsICdvbmUnOiAxLCAndHdvJzogMn0pXG4iCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ3dvcmtzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSAnCisgICAgICAgICAgICAgICAgICd2YWxpZCBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVyZWZvcmUsXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBsZW4oZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciIgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kICprZXkqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd0aGVuIHJldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGludm9rZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCAnCisgICAgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAwXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ10gKz0gMVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAxXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV0gPSB2YWx1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZGVsIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleSBub3QgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xlYXIoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcHkoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBzZXQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBnZXQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LCBlbHNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiwgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgaXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHBhaXJzKS4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5cygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGVcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3Aoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdpdHMgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAnCisgICAgICAgICAgICAgICAgICcqa2V5KiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3BpdGVtKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgJworICAgICAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgJworICAgICAgICAgICAgICAgICAnbm90LCBpbnNlcnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAnCisgICAgICAgICAgICAgICAgICcqZGVmYXVsdCpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdXBkYXRlKFtvdGhlcl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAnCisgICAgICAgICAgICAgICAgICcqb3RoZXIqLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgICAnaXRlcmFibGVzIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICcKKyAgICAgICAgICAgICAgICAgJyJkLnVwZGF0ZShyZWQ9MSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJsdWU9MikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgIihrZXksXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLCAnCisgICAgICAgICAgICAgICAgICInPicpIHJhaXNlXG4iCisgICAgICAgICAgICAgICAgICcgICAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJyAgdmlldyBvZiBhICJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICd2aWV3IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdjaGFuZ2VzLFxuJworICAgICAgICAgICAgICAgICAndGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciAnCisgICAgICAgICAgICAgICAgICdyZXNwZWN0aXZlIGRhdGEsXG4nCisgICAgICAgICAgICAgICAgICdhbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdsZW4oZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2l0ZXIoZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgJworICAgICAgICAgICAgICAgICAnKHJlcHJlc2VudGVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCAnCisgICAgICAgICAgICAgICAgICdkZXBlbmRzIG9uXG4nCisgICAgICAgICAgICAgICAgICIgICB0aGUgZGljdGlvbmFyeSdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiAiCisgICAgICAgICAgICAgICAgICdrZXlzLFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vICcKKyAgICAgICAgICAgICAgICAgJ2ludGVydmVuaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiAnCisgICAgICAgICAgICAgICAgICdwYWlycyB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyICcKKyAgICAgICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluICcKKyAgICAgICAgICAgICAgICAgJ2QuaXRlbXMoKV0iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCAnCisgICAgICAgICAgICAgICAgICdlbnRyaWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICd4IGluIGRpY3R2aWV3XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3MgJworICAgICAgICAgICAgICAgICAna2V5cywgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgICcgICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCAnCisgICAgICAgICAgICAgICAgICdoYXNoYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ0lmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICd1bmlxdWVcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyAnCisgICAgICAgICAgICAgICAgICd2aWV3cyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90ICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZS4pXG4nCisgICAgICAgICAgICAgICAgICdGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3RcbicKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICciPT0iLFxuJworICAgICAgICAgICAgICAgICAnIjwiLCBvciAiXiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRpc2hlcyA9IHsnZWdncyc6IDIsICdzYXVzYWdlJzogMSwgJ2JhY29uJzogMSwgIgorICAgICAgICAgICAgICAgICAiJ3NwYW0nOiA1MDB9XG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgaXRlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbiA9IDBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgbiArPSB2YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBwcmludChuKVxuJworICAgICAgICAgICAgICAgICAnICAgNTA0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnZWdncycsICdiYWNvbicsICdzYXVzYWdlJywgJ3NwYW0nXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3QodmFsdWVzKVxuJworICAgICAgICAgICAgICAgICAnICAgWzIsIDEsIDEsIDUwMF1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ2VnZ3MnXVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ3NhdXNhZ2UnXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnc3BhbScsICdiYWNvbiddXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyAmIHsnZWdncycsICdiYWNvbicsICdzYWxhZCd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2JhY29uJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzIF4geydzYXVzYWdlJywgJ2p1aWNlJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnanVpY2UnLCAnc2F1c2FnZScsICdiYWNvbicsICdzcGFtJ31cbiIsCisgJ3R5cGVzbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgJworICAgICAgICAgICAgICAgICAnb24gbGlzdHMpXG4nCisgICAgICAgICAgICAgICAgICdhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAndHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0lmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kKiAoYWxzb1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCAnCisgICAgICAgICAgICAgICAgICd0aGUgInNlbGYiXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCByZWFkLVxuJworICAgICAgICAgICAgICAgICAnb25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdDYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgJworICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICAgICAnY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgJworICAgICAgICAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBvblxuJworICAgICAgICAgICAgICAgICAndGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvICcKKyAgICAgICAgICAgICAgICAgJ3NldCBhblxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQuICBJblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgJworICAgICAgICAgICAgICAgICAnaXQgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICd1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJyAgIyBjYW4ndCBzZXQgb24gIgorICAgICAgICAgICAgICAgICAndGhlIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgQXR0cmlidXRlRXJyb3I6ICdtZXRob2QnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICIKKyAgICAgICAgICAgICAgICAgIid3aG9hbWknXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGMubWV0aG9kLndob2FtaVxuJworICAgICAgICAgICAgICAgICAiICAgJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtb2R1bGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAnCisgICAgICAgICAgICAgICAgICcibS5uYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICcKKyAgICAgICAgICAgICAgICAgIiptKidzXG4iCisgICAgICAgICAgICAgICAgICdzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29uIGEgbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAnCisgICAgICAgICAgICAgICAgICcqZm9vKiB0b1xuJworICAgICAgICAgICAgICAgICAnZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHNvbWV3aGVyZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Egc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nICIKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgIgorICAgICAgICAgICAgICAgICAnYnV0IGRpcmVjdFxuJworICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgJworICAgICAgICAgICAgICAgICAnY2FuIHdyaXRlXG4nCisgICAgICAgICAgICAgICAgICcibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICJ5b3UgY2FuJ3RcbiIKKyAgICAgICAgICAgICAgICAgJ3dyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzICcKKyAgICAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAnCisgICAgICAgICAgICAgICAgICciPG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlIFwnb3NcJyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ1wnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAorICd0eXBlc3NlcSc6ICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxuJworICAgICAgICAgICAgICdvYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICcKKyAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgJ2RhdGEgYW5kIHRleHQgc3RyaW5ncyBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3QgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAnCisgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuJworICAgICAgICAgICAgICdpcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgJworICAgICAgICAgICAgICdwcmlvcml0eS5cbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgJworICAgICAgICAgICAgICcqaSosXG4nCisgICAgICAgICAgICAgJypqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgJ21lZXRzIGFueVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiICcKKyAgICAgICAgICAgICAnKHJlcGV0aXRpb24pXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCBOb3RlcyAgICAgIHxcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIkZhbHNlIiAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJ4IG5vdCBpbiBzIiAgICAgICAgICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgJworICAgICAgICAgICAgICd8ICgxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqICcKKyAgICAgICAgICAgICAnfCAoNikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCBlcXVpdmFsZW50IHRvIGFkZGluZyAqcyogdG8gICAgICAnCisgICAgICAgICAgICAgJ3wgKDIpKDcpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgJworICAgICAgICAgICAgICd8ICgzKSAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNCkgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpKDUpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJsZW4ocykiICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWluKHMpIiAgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1heChzKSIgICAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgJworICAgICAgICAgICAgICd8ICg4KSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiAnCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIsXG4nCisgICAgICAgICAgICAgJ3R1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuJworICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbicKKyAgICAgICAgICAgICAnZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAnCisgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICcgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgJworICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuJworICAgICAgICAgICAgICcgICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4nCisgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgdGhhdCBpdGVtcyBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSAqcyogYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgJworICAgICAgICAgICAgICd0aW1lcy5cbicKKyAgICAgICAgICAgICAnICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1tdLCBbXSwgW11dXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFszXSwgWzNdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0ICcKKyAgICAgICAgICAgICAnY29udGFpbmluZ1xuJworICAgICAgICAgICAgICcgICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgJworICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgJyAgIHRvIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuJworICAgICAgICAgICAgICcgICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuJworICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbWzNdLCBbNV0sIFs3XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgSG93IGRvIEkgJworICAgICAgICAgICAgICdjcmVhdGUgYVxuJworICAgICAgICAgICAgICcgICBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0ICcKKyAgICAgICAgICAgICAnbm90ZVxuJworICAgICAgICAgICAgICcgICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgJworICAgICAgICAgICAgICciTm9uZSIsXG4nCisgICAgICAgICAgICAgJyAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuICcKKyAgICAgICAgICAgICAnPFxuJworICAgICAgICAgICAgICcgICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgJworICAgICAgICAgICAgICciaSsyKmsiLFxuJworICAgICAgICAgICAgICcgICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4nCisgICAgICAgICAgICAgJyAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZVxuJworICAgICAgICAgICAgICcgICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAnCisgICAgICAgICAgICAgJyJlbmQiXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKiAnCisgICAgICAgICAgICAgJ2Nhbm5vdCBiZVxuJworICAgICAgICAgICAgICcgICB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdCBpcyB0cmVhdGVkIGxpa2UgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAnICAgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSAnCisgICAgICAgICAgICAgJ3RvdGFsXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGxlbmd0aC4gVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwgeW91IG11c3QgJworICAgICAgICAgICAgICdzd2l0Y2ggdG9cbicKKyAgICAgICAgICAgICAnICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInN0ciIgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kICcKKyAgICAgICAgICAgICAndXNlXG4nCisgICAgICAgICAgICAgJyAgICAgInN0ci5qb2luKCkiIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhbiAiaW8uU3RyaW5nSU8iXG4nCisgICAgICAgICAgICAgJyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbicKKyAgICAgICAgICAgICAnICAgICAiYnl0ZXMuam9pbigpIiBvciAiaW8uQnl0ZXNJTyIsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbicKKyAgICAgICAgICAgICAnICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29iamVjdHMgYXJlXG4nCisgICAgICAgICAgICAgJyAgICAgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgaW5zdGVhZFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyAnCisgICAgICAgICAgICAgJ2RvY3VtZW50YXRpb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbicKKyAgICAgICAgICAgICAiICAgc2VxdWVuY2VzIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uJ3QgIgorICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiAnCisgICAgICAgICAgICAgJ1doZW5cbicKKyAgICAgICAgICAgICAnICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCAnCisgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgJyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgJworICAgICAgICAgICAgICcic1tpOmpdLmluZGV4KHgpIixcbicKKyAgICAgICAgICAgICAnICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4ICcKKyAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAnICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgc2xpY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSAnCisgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICd0aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgJworICAgICAgICAgICAgICdzdXBwb3J0IGZvclxuJworICAgICAgICAgICAgICd0aGUgImhhc2goKSIgYnVpbHQtaW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcywgdG9cbicKKyAgICAgICAgICAgICAnYmUgdXNlZCBhcyAiZGljdCIga2V5cyBhbmQgc3RvcmVkIGluICJzZXQiIGFuZCAiZnJvemVuc2V0IiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0F0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyAnCisgICAgICAgICAgICAgJ3VuaGFzaGFibGVcbicKKyAgICAgICAgICAgICAndmFsdWVzIHdpbGwgcmVzdWx0IGluICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvICcKKyAgICAgICAgICAgICAnbWFrZVxuJworICAgICAgICAgICAgICdpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqICcKKyAgICAgICAgICAgICAnaXMgYW55XG4nCisgICAgICAgICAgICAgJ2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgJworICAgICAgICAgICAgICd0eXBlIGFuZFxuJworICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gJworICAgICAgICAgICAgICcyNTUiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgJworICAgICAgICAgICAgICdieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAnCisgICAgICAgICAgICAgJ2lzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mICcKKyAgICAgICAgICAgICAndGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgJworICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9ICcKKyAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiAnCisgICAgICAgICAgICAgJ2FyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICdvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgJworICAgICAgICAgICAgICd0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAnCisgICAgICAgICAgICAgJyhzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAnCisgICAgICAgICAgICAgJyJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgJworICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzICcKKyAgICAgICAgICAgICAnb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICd0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogJworICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgJworICAgICAgICAgICAgICd0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogJworICAgICAgICAgICAgICdhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiAnCisgICAgICAgICAgICAgJ2luICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5ICcKKyAgICAgICAgICAgICAnZGVmYXVsdFxuJworICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4nCisgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCAnCisgICAgICAgICAgICAgJ3VzZXJzXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgJworICAgICAgICAgICAgICdyZXZlcnNlZFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuJworICAgICAgICAgICAgICIgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuIgorICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkICcKKyAgICAgICAgICAgICAnbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICdPcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzXG4nCisgICAgICAgICAgICAgJz09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgJworICAgICAgICAgICAgICd2YXJ5IGJ5XG4nCisgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGxpc3QoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAnCisgICAgICAgICAgICAgJyJbXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAnCisgICAgICAgICAgICAgJyJbYV0iLFxuJworICAgICAgICAgICAgICcgICAgICJbYSwgYiwgY10iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiAiW3ggZm9yIHggaW4gaXRlcmFibGVdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICIgICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciAiCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuJworICAgICAgICAgICAgICcgICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICcibGlzdChcJ2FiY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiAnCisgICAgICAgICAgICAgJ3JldHVybnMgIlsxLCAyLFxuJworICAgICAgICAgICAgICcgICAzXSIuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIGxpc3QsICJbXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICcKKyAgICAgICAgICAgICAnInNvcnRlZCgpIlxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBhbmQgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgIjwiICcKKyAgICAgICAgICAgICAnY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAnICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgJworICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgJyAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgICBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWQgc3RhdGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkIGJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGtleXdvcmQgKGtleXdvcmQtb25seSBhcmd1bWVudHMpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJyAgICAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgJworICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICcgICAgICAia2V5PXN0ci5sb3dlciIpLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluICcKKyAgICAgICAgICAgICAndGhlIGxpc3RcbicKKyAgICAgICAgICAgICAnICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyAnCisgICAgICAgICAgICAgJ3Byb2Nlc3MuXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mICJOb25lIiBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlICcKKyAgICAgICAgICAgICAnc29ydGVkXG4nCisgICAgICAgICAgICAgJyAgICAgIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvICcKKyAgICAgICAgICAgICAnY29udmVydCBhXG4nCisgICAgICAgICAgICAgJyAgICAgIDIueCBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mICcKKyAgICAgICAgICAgICAnc3BhY2VcbicKKyAgICAgICAgICAgICAnICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCAnCisgICAgICAgICAgICAgJ29wZXJhdGVzXG4nCisgICAgICAgICAgICAgJyAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJyh1c2VcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnRlZCgpIiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgJworICAgICAgICAgICAgICdpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3IgJworICAgICAgICAgICAgICdzb3J0aW5nIGluXG4nCisgICAgICAgICAgICAgJyAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSAnCisgICAgICAgICAgICAgJ3NhbGFyeVxuJworICAgICAgICAgICAgICcgICAgICBncmFkZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyAnCisgICAgICAgICAgICAgJ3NvcnRlZCxcbicKKyAgICAgICAgICAgICAnICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgJworICAgICAgICAgICAgICdsaXN0IGlzXG4nCisgICAgICAgICAgICAgJyAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCAnCisgICAgICAgICAgICAgJ2FwcGVhclxuJworICAgICAgICAgICAgICcgICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gJworICAgICAgICAgICAgICdkZXRlY3RcbicKKyAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSAnCisgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIG9mXG4nCisgICAgICAgICAgICAgJ2hldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnImVudW1lcmF0ZSgpIlxuJworICAgICAgICAgICAgICdidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICdvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgJworICAgICAgICAgICAgICcic2V0IiBvclxuJworICAgICAgICAgICAgICciZGljdCIgaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICcKKyAgICAgICAgICAgICAnIigpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAnCisgICAgICAgICAgICAgJyIoYSwpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlKGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4nCisgICAgICAgICAgICAgJyAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsICJ0dXBsZShcJ2FiY1wnKSIgcmV0dXJucyAiKFwnYVwnLCAnCisgICAgICAgICAgICAgJ1wnYlwnLCBcJ2NcJykiXG4nCisgICAgICAgICAgICAgJyAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyBhcmd1bWVudCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljICcKKyAgICAgICAgICAgICAnYW1iaWd1aXR5LlxuJworICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZSwgImYoYSwgYiwgYykiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgICcgICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlICcKKyAgICAgICAgICAgICAnc29sZVxuJworICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgJworICAgICAgICAgICAgICdjbGVhcmVyXG4nCisgICAgICAgICAgICAgJ3RoYW4gYWNjZXNzIGJ5IGluZGV4LCAiY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIiBtYXkgYmUgYSBtb3JlXG4nCisgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiAiZm9yIiAnCisgICAgICAgICAgICAgJ2xvb3BzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RvcClcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgJworICAgICAgICAgICAgICcoZWl0aGVyXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluICJpbnQiIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSAiX19pbmRleF9fIlxuJworICAgICAgICAgICAgICcgICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0ICcKKyAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAnICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAiMCIuICcKKyAgICAgICAgICAgICAnSWZcbicKKyAgICAgICAgICAgICAnICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlICJyIiBhcmUgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgJyAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAnCisgICAgICAgICAgICAgJyJyW2ldIDxcbicKKyAgICAgICAgICAgICAnICAgc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAgJyAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgICJPdmVyZmxvd0Vycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAzLCA2LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgJ2V4Y2VwdFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCAnCisgICAgICAgICAgICAgJ3BhdHRlcm4pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yICIwIiBpZiB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXIgd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHN0b3BcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0b3AqIHBhcmFtZXRlclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RlcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciAiMSIgaWYgdGhlIHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICAgICBub3Qgc3VwcGxpZWQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlIiBpc1xuJworICAgICAgICAgICAgICd0aGF0IGEgInJhbmdlIiBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSAoc21hbGwpIGFtb3VudCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ21lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nICcKKyAgICAgICAgICAgICAnaW5kaXZpZHVhbFxuJworICAgICAgICAgICAgICdpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCBhbmRcbicKKyAgICAgICAgICAgICAncHJvdmlkZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4ICcKKyAgICAgICAgICAgICAnbG9va3VwLFxuJworICAgICAgICAgICAgICdzbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgU2VxdWVuY2UgVHlwZXMgLS0tICcKKyAgICAgICAgICAgICAnbGlzdCxcbicKKyAgICAgICAgICAgICAndHVwbGUsIHJhbmdlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz4+PiByID0gcmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiByXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDIwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gMTEgaW4gclxuJworICAgICAgICAgICAgICdGYWxzZVxuJworICAgICAgICAgICAgICc+Pj4gMTAgaW4gclxuJworICAgICAgICAgICAgICdUcnVlXG4nCisgICAgICAgICAgICAgJz4+PiByLmluZGV4KDEwKVxuJworICAgICAgICAgICAgICc1XG4nCisgICAgICAgICAgICAgJz4+PiByWzVdXG4nCisgICAgICAgICAgICAgJzEwXG4nCisgICAgICAgICAgICAgJz4+PiByWzo1XVxuJworICAgICAgICAgICAgICdyYW5nZSgwLCAxMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJbLTFdXG4nCisgICAgICAgICAgICAgJzE4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggIj09IiBhbmQgIiE9IiBjb21wYXJlcyAnCisgICAgICAgICAgICAgJ3RoZW0gYXNcbicKKyAgICAgICAgICAgICAnc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWYgJworICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAndGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50ICJzdGFydCIsICJzdG9wIiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgInJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpIiBvciAnCisgICAgICAgICAgICAgJyJyYW5nZSgwLCAzLFxuJworICAgICAgICAgICAgICcyKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuIFN1cHBvcnQgJworICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgJ2FuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0ICJpbnQiIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gJworICAgICAgICAgICAgICdjb25zdGFudFxuJworICAgICAgICAgICAgICd0aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSAiCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgJ2NvbXBhcmluZ1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqIFRoZSBsaW5zcGFjZSByZWNpcGUgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZyBwb2ludCBhcHBsaWNhdGlvbnMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgdG8gbWFrZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gJworICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlLCAqdCogaXMgYW55XG4nCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWV0cyBhbnkgdHlwZSBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVhcnJheSIgb25seVxuJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4ICcKKyAgICAgICAgICAgICAgICAgICAgICc8PSAyNTUiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICd0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2VuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSAnCisgICAgICAgICAgICAgICAgICAgICAnPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgICAgICAgICAndGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiAnCisgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgJworICAgICAgICAgICAgICAgICAgICAgJyppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICAgICAgICAgJypzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gJworICAgICAgICAgICAgICAgICAgICAgJypzKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gJworICAgICAgICAgICAgICAgICAgICAgJ3JlbWluZCB1c2Vyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHJldmVyc2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5ICcKKyAgICAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAiCisgICAgICAgICAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc2LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VkIG11bHRpcGxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nLAorICd1bmFyeSc6ICdcbicKKyAgICAgICAgICAnVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAncHJpb3JpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuJworICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCAnCisgICAgICAgICAgJ3VuY2hhbmdlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdpbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4nCisgICAgICAgICAgJyItKHgrMSkiLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgdHlwZSwgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAorICd3aGlsZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAorICd3aXRoJzogJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbicKKyAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggU3RhdGVtZW50XG4nCisgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbicKKyAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbicKKyAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc0LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbicKKyAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyAnCisgICAgICAgICAnYmVcbicKKyAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbicKKyAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4nCisgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4nCisgICAgICAgICAnICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuJworICAgICAgICAgJyAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgJworICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4nCisgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbicKKyAgICAgICAgICcgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sICcKKyAgICAgICAgICd0aGVcbicKKyAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAncHJvY2VlZHNcbicKKyAgICAgICAgICcgICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG4nCisgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGE6XG4nCisgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICcKKyAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicsCisgJ3lpZWxkJzogJ1xuJworICAgICAgICAgICdUaGUgInlpZWxkIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJ5aWVsZCIgc3RhdGVtZW50IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIGEgeWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uLlxuJworICAgICAgICAgICdUaGUgeWllbGQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIG9taXQgdGhlIHBhcmVudGhlc2VzIHRoYXQgd291bGRcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb24gJworICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgJ0ZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGQgPGV4cHI+XG4nCisgICAgICAgICAgJyAgIHlpZWxkIGZyb20gPGV4cHI+XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhcmUgZXF1aXZhbGVudCB0byB0aGUgeWllbGQgZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAoeWllbGQgPGV4cHI+KVxuJworICAgICAgICAgICcgICAoeWllbGQgZnJvbSA8ZXhwcj4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuJworICAgICAgICAgICcqZ2VuZXJhdG9yKiBmdW5jdGlvbiwgYW5kIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gJworICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICd0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbicKKyAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgWWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uc1xuJworICAgICAgICAgICdzZWN0aW9uLlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDRlZmJiMGEuLmFkMWM5MTYgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtOCw2ICs4LDcgQEAKICAgICAtLS0tLS0tLS0KICAgICAgICAgICAgcGljayByYW5kb20gZWxlbWVudAogICAgICAgICAgICBwaWNrIHJhbmRvbSBzYW1wbGUKKyAgICAgICAgICAgcGljayB3ZWlnaHRlZCByYW5kb20gc2FtcGxlCiAgICAgICAgICAgIGdlbmVyYXRlIHJhbmRvbSBwZXJtdXRhdGlvbgogCiAgICAgZGlzdHJpYnV0aW9ucyBvbiB0aGUgcmVhbCBsaW5lOgpAQCAtNDMsMTIgKzQ0LDE0IEBACiBmcm9tIG9zIGltcG9ydCB1cmFuZG9tIGFzIF91cmFuZG9tCiBmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKIGZyb20gaGFzaGxpYiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKK2ltcG9ydCBpdGVydG9vbHMgYXMgX2l0ZXJ0b29scworaW1wb3J0IGJpc2VjdCBhcyBfYmlzZWN0CiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCiAgICAgICAgICAgICJyYW5kcmFuZ2UiLCJzaHVmZmxlIiwibm9ybWFsdmFyaWF0ZSIsImxvZ25vcm12YXJpYXRlIiwKICAgICAgICAgICAgImV4cG92YXJpYXRlIiwidm9ubWlzZXN2YXJpYXRlIiwiZ2FtbWF2YXJpYXRlIiwidHJpYW5ndWxhciIsCiAgICAgICAgICAgICJnYXVzcyIsImJldGF2YXJpYXRlIiwicGFyZXRvdmFyaWF0ZSIsIndlaWJ1bGx2YXJpYXRlIiwKLSAgICAgICAgICAgImdldHN0YXRlIiwic2V0c3RhdGUiLCAiZ2V0cmFuZGJpdHMiLAorICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsICJjaG9pY2VzIiwKICAgICAgICAgICAgIlN5c3RlbVJhbmRvbSJdCiAKIE5WX01BR0lDQ09OU1QgPSA0ICogX2V4cCgtMC41KS9fc3FydCgyLjApCkBAIC0xMDUsMTUgKzEwOCw2IEBACiAKICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgYSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgU2VlZCB3aXRoIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSAxOTkzNyBiaXQKLSAgICAgICAgICAgICAgICAjIHN0YXRlIHNwYWNlIGZvciB0aGUgTWVyc2VubmUgVHdpc3RlcgotICAgICAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhfdXJhbmRvbSgyNTAwKSwgJ2JpZycpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdGltZQotICAgICAgICAgICAgICAgIGEgPSBpbnQodGltZS50aW1lKCkgKiAyNTYpICMgdXNlIGZyYWN0aW9uYWwgc2Vjb25kcwotCiAgICAgICAgIGlmIHZlcnNpb24gPT0gMSBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgeCA9IG9yZChhWzBdKSA8PCA3IGlmIGEgZWxzZSAwCiAgICAgICAgICAgICBmb3IgYyBpbiBhOgpAQCAtMTIxLDEyICsxMTUsMTEgQEAKICAgICAgICAgICAgIHggXj0gbGVuKGEpCiAgICAgICAgICAgICBhID0gLTIgaWYgeCA9PSAtMSBlbHNlIHgKIAotICAgICAgICBpZiB2ZXJzaW9uID09IDI6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCi0gICAgICAgICAgICAgICAgYSArPSBfc2hhNTEyKGEpLmRpZ2VzdCgpCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQorICAgICAgICBpZiB2ZXJzaW9uID09IDIgYW5kIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCisgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKKyAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhhLCAnYmlnJykKIAogICAgICAgICBzdXBlcigpLnNlZWQoYSkKICAgICAgICAgc2VsZi5nYXVzc19uZXh0ID0gTm9uZQpAQCAtMjYxLDcgKzI1NCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGkgPSBzZWxmLl9yYW5kYmVsb3cobGVuKHNlcSkpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignQ2Fubm90IGNob29zZSBmcm9tIGFuIGVtcHR5IHNlcXVlbmNlJykKKyAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ0Nhbm5vdCBjaG9vc2UgZnJvbSBhbiBlbXB0eSBzZXF1ZW5jZScpIGZyb20gTm9uZQogICAgICAgICByZXR1cm4gc2VxW2ldCiAKICAgICBkZWYgc2h1ZmZsZShzZWxmLCB4LCByYW5kb209Tm9uZSk6CkBAIC0zMjEsNyArMzE0LDcgQEAKICAgICAgICAgcmFuZGJlbG93ID0gc2VsZi5fcmFuZGJlbG93CiAgICAgICAgIG4gPSBsZW4ocG9wdWxhdGlvbikKICAgICAgICAgaWYgbm90IDAgPD0gayA8PSBuOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiU2FtcGxlIGxhcmdlciB0aGFuIHBvcHVsYXRpb24iKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiU2FtcGxlIGxhcmdlciB0aGFuIHBvcHVsYXRpb24gb3IgaXMgbmVnYXRpdmUiKQogICAgICAgICByZXN1bHQgPSBbTm9uZV0gKiBrCiAgICAgICAgIHNldHNpemUgPSAyMSAgICAgICAgIyBzaXplIG9mIGEgc21hbGwgc2V0IG1pbnVzIHNpemUgb2YgYW4gZW1wdHkgbGlzdAogICAgICAgICBpZiBrID4gNToKQEAgLTM0NCw2ICszMzcsMjggQEAKICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBwb3B1bGF0aW9uW2pdCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBjaG9pY2VzKHNlbGYsIHBvcHVsYXRpb24sIHdlaWdodHM9Tm9uZSwgKiwgY3VtX3dlaWdodHM9Tm9uZSwgaz0xKToKKyAgICAgICAgIiIiUmV0dXJuIGEgayBzaXplZCBsaXN0IG9mIHBvcHVsYXRpb24gZWxlbWVudHMgY2hvc2VuIHdpdGggcmVwbGFjZW1lbnQuCisKKyAgICAgICAgSWYgdGhlIHJlbGF0aXZlIHdlaWdodHMgb3IgY3VtdWxhdGl2ZSB3ZWlnaHRzIGFyZSBub3Qgc3BlY2lmaWVkLAorICAgICAgICB0aGUgc2VsZWN0aW9ucyBhcmUgbWFkZSB3aXRoIGVxdWFsIHByb2JhYmlsaXR5LgorCisgICAgICAgICIiIgorICAgICAgICByYW5kb20gPSBzZWxmLnJhbmRvbQorICAgICAgICBpZiBjdW1fd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgaWYgd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIF9pbnQgPSBpbnQKKyAgICAgICAgICAgICAgICB0b3RhbCA9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltfaW50KHJhbmRvbSgpICogdG90YWwpXSBmb3IgaSBpbiByYW5nZShrKV0KKyAgICAgICAgICAgIGN1bV93ZWlnaHRzID0gbGlzdChfaXRlcnRvb2xzLmFjY3VtdWxhdGUod2VpZ2h0cykpCisgICAgICAgIGVsaWYgd2VpZ2h0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IHNwZWNpZnkgYm90aCB3ZWlnaHRzIGFuZCBjdW11bGF0aXZlIHdlaWdodHMnKQorICAgICAgICBpZiBsZW4oY3VtX3dlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBudW1iZXIgb2Ygd2VpZ2h0cyBkb2VzIG5vdCBtYXRjaCB0aGUgcG9wdWxhdGlvbicpCisgICAgICAgIGJpc2VjdCA9IF9iaXNlY3QuYmlzZWN0CisgICAgICAgIHRvdGFsID0gY3VtX3dlaWdodHNbLTFdCisgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltiaXNlY3QoY3VtX3dlaWdodHMsIHJhbmRvbSgpICogdG90YWwpXSBmb3IgaSBpbiByYW5nZShrKV0KKwogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVhbC12YWx1ZWQgZGlzdHJpYnV0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MTUsMTEgKzYzMCwxMSBAQAogCiAgICAgICAgICMgVGhpcyB2ZXJzaW9uIGR1ZSB0byBKYW5uZSBTaW5ra29uZW4sIGFuZCBtYXRjaGVzIGFsbCB0aGUgc3RkCiAgICAgICAgICMgdGV4dHMgKGUuZy4sIEtudXRoIFZvbCAyIEVkIDMgcGcgMTM0ICJ0aGUgYmV0YSBkaXN0cmlidXRpb24iKS4KLSAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLikKKyAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLjApCiAgICAgICAgIGlmIHkgPT0gMDoKICAgICAgICAgICAgIHJldHVybiAwLjAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB5IC8gKHkgKyBzZWxmLmdhbW1hdmFyaWF0ZShiZXRhLCAxLikpCisgICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4wKSkKIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gUGFyZXRvIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTczNCw2ICs3NDksNyBAQAogcmFuZHJhbmdlID0gX2luc3QucmFuZHJhbmdlCiBzYW1wbGUgPSBfaW5zdC5zYW1wbGUKIHNodWZmbGUgPSBfaW5zdC5zaHVmZmxlCitjaG9pY2VzID0gX2luc3QuY2hvaWNlcwogbm9ybWFsdmFyaWF0ZSA9IF9pbnN0Lm5vcm1hbHZhcmlhdGUKIGxvZ25vcm12YXJpYXRlID0gX2luc3QubG9nbm9ybXZhcmlhdGUKIGV4cG92YXJpYXRlID0gX2luc3QuZXhwb3ZhcmlhdGUKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCBkZGU4OTAxLi5kMzIxY2ZmIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMTksOSArMTE5LDEwIEBACiAKICIiIgogCi1pbXBvcnQgc3lzCitpbXBvcnQgZW51bQogaW1wb3J0IHNyZV9jb21waWxlCiBpbXBvcnQgc3JlX3BhcnNlCitpbXBvcnQgZnVuY3Rvb2xzCiB0cnk6CiAgICAgaW1wb3J0IF9sb2NhbGUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTEzOCwxOCArMTM5LDI2IEBACiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCi0jIGZsYWdzCi1BID0gQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgotSSA9IElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKLUwgPSBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKLVUgPSBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCi1NID0gTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKLVMgPSBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCi1YID0gVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKLQotIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQotVCA9IFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZwotREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorY2xhc3MgUmVnZXhGbGFnKGVudW0uSW50RmxhZyk6CisgICAgQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgorICAgIElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKKyAgICBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKKyAgICBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCisgICAgTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKKyAgICBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCisgICAgVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICBBID0gQVNDSUkKKyAgICBJID0gSUdOT1JFQ0FTRQorICAgIEwgPSBMT0NBTEUKKyAgICBVID0gVU5JQ09ERQorICAgIE0gPSBNVUxUSUxJTkUKKyAgICBTID0gRE9UQUxMCisgICAgWCA9IFZFUkJPU0UKKyAgICAjIHNyZSBleHRlbnNpb25zIChleHBlcmltZW50YWwsIGRvbid0IHJlbHkgb24gdGhlc2UpCisgICAgVEVNUExBVEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19URU1QTEFURSAjIGRpc2FibGUgYmFja3RyYWNraW5nCisgICAgVCA9IFRFTVBMQVRFCisgICAgREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorZ2xvYmFscygpLnVwZGF0ZShSZWdleEZsYWcuX19tZW1iZXJzX18pCiAKICMgc3JlIGV4Y2VwdGlvbgogZXJyb3IgPSBzcmVfY29tcGlsZS5lcnJvcgpAQCAtMjI2LDcgKzIzNSw3IEBACiBkZWYgcHVyZ2UoKToKICAgICAiQ2xlYXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZXMiCiAgICAgX2NhY2hlLmNsZWFyKCkKLSAgICBfY2FjaGVfcmVwbC5jbGVhcigpCisgICAgX2NvbXBpbGVfcmVwbC5jYWNoZV9jbGVhcigpCiAKIGRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKICAgICAiQ29tcGlsZSBhIHRlbXBsYXRlIHBhdHRlcm4sIHJldHVybmluZyBhIHBhdHRlcm4gb2JqZWN0IgpAQCAtMjcwLDcgKzI3OSw2IEBACiAjIGludGVybmFscwogCiBfY2FjaGUgPSB7fQotX2NhY2hlX3JlcGwgPSB7fQogCiBfcGF0dGVybl90eXBlID0gdHlwZShzcmVfY29tcGlsZS5jb21waWxlKCIiLCAwKSkKIApAQCAtMzAzLDE3ICszMTEsMTAgQEAKICAgICAgICAgX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXSA9IHAsIGxvYwogICAgIHJldHVybiBwCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKF9NQVhDQUNIRSkKIGRlZiBfY29tcGlsZV9yZXBsKHJlcGwsIHBhdHRlcm4pOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcmVwbGFjZW1lbnQgcGF0dGVybgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgcCA9IHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQotICAgIGlmIGxlbihfY2FjaGVfcmVwbCkgPj0gX01BWENBQ0hFOgotICAgICAgICBfY2FjaGVfcmVwbC5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGxbcmVwbCwgcGF0dGVybl0gPSBwCi0gICAgcmV0dXJuIHAKKyAgICByZXR1cm4gc3JlX3BhcnNlLnBhcnNlX3RlbXBsYXRlKHJlcGwsIHBhdHRlcm4pCiAKIGRlZiBfZXhwYW5kKHBhdHRlcm4sIG1hdGNoLCB0ZW1wbGF0ZSk6CiAgICAgIyBpbnRlcm5hbDogbWF0Y2guZXhwYW5kIGltcGxlbWVudGF0aW9uIGhvb2sKQEAgLTM1Myw3ICszNTQsNyBAQAogICAgICAgICBmb3IgcGhyYXNlLCBhY3Rpb24gaW4gbGV4aWNvbjoKICAgICAgICAgICAgIGdpZCA9IHMub3Blbmdyb3VwKCkKICAgICAgICAgICAgIHAuYXBwZW5kKHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsKLSAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGdpZCwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCisgICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIDAsIDAsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAogICAgICAgICAgICAgICAgIF0pKQogICAgICAgICAgICAgcy5jbG9zZWdyb3VwKGdpZCwgcFstMV0pCiAgICAgICAgIHAgPSBzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbKEJSQU5DSCwgKE5vbmUsIHApKV0pCmRpZmYgLS1naXQgYS9MaWIvcmxjb21wbGV0ZXIucHkgYi9MaWIvcmxjb21wbGV0ZXIucHkKaW5kZXggNDAxYTYyNi4uYmNhNGE3YiAxMDA2NDQKLS0tIGEvTGliL3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi9ybGNvbXBsZXRlci5weQpAQCAtMTEzLDYgKzExMywxMiBAQAogICAgICAgICBmb3Igd29yZCBpbiBrZXl3b3JkLmt3bGlzdDoKICAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IHRleHQ6CiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQod29yZCkKKyAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHsnZmluYWxseScsICd0cnknfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnOicKKyAgICAgICAgICAgICAgICBlbGlmIHdvcmQgbm90IGluIHsnRmFsc2UnLCAnTm9uZScsICdUcnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJlYWsnLCAnY29udGludWUnLCAncGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vsc2UnfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnICcKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZCh3b3JkKQogICAgICAgICBmb3IgbnNwYWNlIGluIFtzZWxmLm5hbWVzcGFjZSwgYnVpbHRpbnMuX19kaWN0X19dOgogICAgICAgICAgICAgZm9yIHdvcmQsIHZhbCBpbiBuc3BhY2UuaXRlbXMoKToKQEAgLTE1MiwxNCArMTU4LDMwIEBACiAgICAgICAgICAgICB3b3Jkcy51cGRhdGUoZ2V0X2NsYXNzX21lbWJlcnModGhpc29iamVjdC5fX2NsYXNzX18pKQogICAgICAgICBtYXRjaGVzID0gW10KICAgICAgICAgbiA9IGxlbihhdHRyKQotICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKLSAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IGF0dHI6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUgICMgRXhjbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzZXQKLSAgICAgICAgICAgICAgICB3b3JkID0gc2VsZi5fY2FsbGFibGVfcG9zdGZpeCh2YWwsICIlcy4lcyIgJSAoZXhwciwgd29yZCkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKKyAgICAgICAgaWYgYXR0ciA9PSAnJzoKKyAgICAgICAgICAgIG5vcHJlZml4ID0gJ18nCisgICAgICAgIGVsaWYgYXR0ciA9PSAnXyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vcHJlZml4ID0gTm9uZQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6CisgICAgICAgICAgICAgICAgaWYgKHdvcmRbOm5dID09IGF0dHIgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCAobm9wcmVmaXggYW5kIHdvcmRbOm4rMV0gPT0gbm9wcmVmaXgpKToKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAiJXMuJXMiICUgKGV4cHIsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIodGhpc29iamVjdCwgd29yZCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgSW5jbHVkZSBldmVuIGlmIGF0dHJpYnV0ZSBub3Qgc2V0CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCBtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpCisgICAgICAgICAgICBpZiBtYXRjaGVzIG9yIG5vdCBub3ByZWZpeDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm9wcmVmaXggPT0gJ18nOgorICAgICAgICAgICAgICAgIG5vcHJlZml4ID0gJ19fJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKICAgICAgICAgbWF0Y2hlcy5zb3J0KCkKICAgICAgICAgcmV0dXJuIG1hdGNoZXMKIApkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGI0NzY0OGQuLjNkOGMwMTEgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTIzLDExICsyMyw2IEBACiBoYXMgYW5vdGhlciB3YXkgdG8gcmVmZXJlbmNlIHByaXZhdGUgZGF0YSAoYmVzaWRlcyBnbG9iYWwgdmFyaWFibGVzKS4KICIiIgogCi0jIFhYWCBUaGUgdGltZWZ1bmMgYW5kIGRlbGF5ZnVuYyBzaG91bGQgaGF2ZSBiZWVuIGRlZmluZWQgYXMgbWV0aG9kcwotIyBYWFggc28geW91IGNhbiBkZWZpbmUgbmV3IGtpbmRzIG9mIHNjaGVkdWxlcnMgdXNpbmcgc3ViY2xhc3NpbmcKLSMgWFhYIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRlZmluZSBhIG1vZHVsZSBvciBjbGFzcyBqdXN0IHRvIGhvbGQKLSMgWFhYIHRoZSBnbG9iYWwgc3RhdGUgb2YgeW91ciBwYXJ0aWN1bGFyIHRpbWUgYW5kIGRlbGF5IGZ1bmN0aW9ucy4KLQogaW1wb3J0IHRpbWUKIGltcG9ydCBoZWFwcQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQpAQCAtNDAsMTIgKzM1LDI0IEBACiBfX2FsbF9fID0gWyJzY2hlZHVsZXIiXQogCiBjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgorICAgIF9fc2xvdHNfXyA9IFtdCiAgICAgZGVmIF9fZXFfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID09IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbHRfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDwgIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbGVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDw9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKK0V2ZW50LnRpbWUuX19kb2NfXyA9ICgnJydOdW1lcmljIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCit0aW1lZnVuYyBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLicnJykKK0V2ZW50LnByaW9yaXR5Ll9fZG9jX18gPSAoJycnRXZlbnRzIHNjaGVkdWxlZCBmb3IgdGhlIHNhbWUgdGltZSB3aWxsIGJlIGV4ZWN1dGVkCitpbiB0aGUgb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHkuJycnKQorRXZlbnQuYWN0aW9uLl9fZG9jX18gPSAoJycnRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcKK2FjdGlvbigqYXJndW1lbnQsICoqa3dhcmdzKScnJykKK0V2ZW50LmFyZ3VtZW50Ll9fZG9jX18gPSAoJycnYXJndW1lbnQgaXMgYSBzZXF1ZW5jZSBob2xkaW5nIHRoZSBwb3NpdGlvbmFsCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorRXZlbnQua3dhcmdzLl9fZG9jX18gPSAoJycna3dhcmdzIGlzIGEgZGljdGlvbmFyeSBob2xkaW5nIHRoZSBrZXl3b3JkCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorCiBfc2VudGluZWwgPSBvYmplY3QoKQogCiBjbGFzcyBzY2hlZHVsZXI6CmRpZmYgLS1naXQgYS9MaWIvc2VjcmV0cy5weSBiL0xpYi9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMDQzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2VjcmV0cy5weQpAQCAtMCwwICsxLDczIEBACisiIiJHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgorbWFuYWdpbmcgc2VjcmV0cyBzdWNoIGFzIGFjY291bnQgYXV0aGVudGljYXRpb24sIHRva2VucywgYW5kIHNpbWlsYXIuCisKK1NlZSBQRVAgNTA2IGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDUwNi8KKworIiIiCisKK19fYWxsX18gPSBbJ2Nob2ljZScsICdyYW5kYmVsb3cnLCAncmFuZGJpdHMnLCAnU3lzdGVtUmFuZG9tJywKKyAgICAgICAgICAgJ3Rva2VuX2J5dGVzJywgJ3Rva2VuX2hleCcsICd0b2tlbl91cmxzYWZlJywKKyAgICAgICAgICAgJ2NvbXBhcmVfZGlnZXN0JywKKyAgICAgICAgICAgXQorCisKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IG9zCisKK2Zyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKK2Zyb20gcmFuZG9tIGltcG9ydCBTeXN0ZW1SYW5kb20KKworX3N5c3JhbmQgPSBTeXN0ZW1SYW5kb20oKQorCityYW5kYml0cyA9IF9zeXNyYW5kLmdldHJhbmRiaXRzCitjaG9pY2UgPSBfc3lzcmFuZC5jaG9pY2UKKworZGVmIHJhbmRiZWxvdyhleGNsdXNpdmVfdXBwZXJfYm91bmQpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCBuKS4iIiIKKyAgICBpZiBleGNsdXNpdmVfdXBwZXJfYm91bmQgPD0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVXBwZXIgYm91bmQgbXVzdCBiZSBwb3NpdGl2ZS4iKQorICAgIHJldHVybiBfc3lzcmFuZC5fcmFuZGJlbG93KGV4Y2x1c2l2ZV91cHBlcl9ib3VuZCkKKworREVGQVVMVF9FTlRST1BZID0gMzIgICMgbnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiBieSBkZWZhdWx0CisKK2RlZiB0b2tlbl9ieXRlcyhuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgKm5ieXRlcyogYnl0ZXMuCisKKyAgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9ieXRlcygxNikgICNkb2N0ZXN0OitTS0lQCisgICAgYidcXHhlYnJcXHgxN0QqdFxceGFlXFx4ZDRcXHhlM1NcXHhiNlxceGUyXFx4ZWJQMVxceDhiJworCisgICAgIiIiCisgICAgaWYgbmJ5dGVzIGlzIE5vbmU6CisgICAgICAgIG5ieXRlcyA9IERFRkFVTFRfRU5UUk9QWQorICAgIHJldHVybiBvcy51cmFuZG9tKG5ieXRlcykKKworZGVmIHRva2VuX2hleChuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIHRleHQgc3RyaW5nLCBpbiBoZXhhZGVjaW1hbC4KKworICAgIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28KKyAgICBoZXggZGlnaXRzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUKKyAgICBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnZjliZjc4YjlhMThjZTZkNDZhMGNkMmIwYjg2ZGY5ZGEnCisKKyAgICAiIiIKKyAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeSh0b2tlbl9ieXRlcyhuYnl0ZXMpKS5kZWNvZGUoJ2FzY2lpJykKKworZGVmIHRva2VuX3VybHNhZmUobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgaW4gQmFzZTY0IGVuY29kaW5nLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAKKyAgICBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5fdXJsc2FmZSgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKyAgICAiIiIKKyAgICB0b2sgPSB0b2tlbl9ieXRlcyhuYnl0ZXMpCisgICAgcmV0dXJuIGJhc2U2NC51cmxzYWZlX2I2NGVuY29kZSh0b2spLnJzdHJpcChiJz0nKS5kZWNvZGUoJ2FzY2lpJykKZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCBlY2QyZWZkLi5lODcyNjZmIDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC01LDYgKzUsNyBAQAogIyBwdXNoX3NvdXJjZSgpIGFuZCBwb3Bfc291cmNlKCkgbWFkZSBleHBsaWNpdCBieSBFU1IsIEphbnVhcnkgMjAwMS4KICMgUG9zaXggY29tcGxpYW5jZSwgc3BsaXQoKSwgc3RyaW5nIGFyZ3VtZW50cywgYW5kCiAjIGl0ZXJhdG9yIGludGVyZmFjZSBieSBHdXN0YXZvIE5pZW1leWVyLCBBcHJpbCAyMDAzLgorIyBjaGFuZ2VzIHRvIHRva2VuaXplIG1vcmUgbGlrZSBQb3NpeCBzaGVsbHMgYnkgVmluYXkgU2FqaXAsIEp1bHkgMjAxNi4KIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTE3LDcgKzE4LDggQEAKIAogY2xhc3Mgc2hsZXg6CiAgICAgIkEgbGV4aWNhbCBhbmFseXplciBjbGFzcyBmb3Igc2ltcGxlIHNoZWxsLWxpa2Ugc3ludGF4ZXMuIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UsCisgICAgICAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzPUZhbHNlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShpbnN0cmVhbSwgc3RyKToKICAgICAgICAgICAgIGluc3RyZWFtID0gU3RyaW5nSU8oaW5zdHJlYW0pCiAgICAgICAgIGlmIGluc3RyZWFtIGlzIG5vdCBOb25lOgpAQCAtNDksNiArNTEsMTkgQEAKICAgICAgICAgc2VsZi50b2tlbiA9ICcnCiAgICAgICAgIHNlbGYuZmlsZXN0YWNrID0gZGVxdWUoKQogICAgICAgICBzZWxmLnNvdXJjZSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnMgPSAnJworICAgICAgICBlbGlmIHB1bmN0dWF0aW9uX2NoYXJzIGlzIFRydWU6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcoKTs8PnwmJworICAgICAgICBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzID0gcHVuY3R1YXRpb25fY2hhcnMKKyAgICAgICAgaWYgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAjIF9wdXNoYmFja19jaGFycyBpcyBhIHB1c2ggYmFjayBxdWV1ZSB1c2VkIGJ5IGxvb2thaGVhZCBsb2dpYworICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMgPSBkZXF1ZSgpCisgICAgICAgICAgICAjIHRoZXNlIGNoYXJzIGFkZGVkIGJlY2F1c2UgYWxsb3dlZCBpbiBmaWxlIG5hbWVzLCBhcmdzLCB3aWxkY2FyZHMKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzICs9ICd+LS4vKj89JworICAgICAgICAgICAgI3JlbW92ZSBhbnkgcHVuY3R1YXRpb24gY2hhcnMgZnJvbSB3b3JkY2hhcnMKKyAgICAgICAgICAgIHQgPSBzZWxmLndvcmRjaGFycy5tYWtldHJhbnMoZGljdC5mcm9ta2V5cyhwdW5jdHVhdGlvbl9jaGFycykpCisgICAgICAgICAgICBzZWxmLndvcmRjaGFycyA9IHNlbGYud29yZGNoYXJzLnRyYW5zbGF0ZSh0KQogCiAgICAgZGVmIHB1c2hfdG9rZW4oc2VsZiwgdG9rKToKICAgICAgICAgIlB1c2ggYSB0b2tlbiBvbnRvIHRoZSBzdGFjayBwb3BwZWQgYnkgdGhlIGdldF90b2tlbiBtZXRob2QiCkBAIC0xMTUsMTIgKzEzMCwxNSBAQAogICAgICAgICBxdW90ZWQgPSBGYWxzZQogICAgICAgICBlc2NhcGVkc3RhdGUgPSAnICcKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCisgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzIGFuZCBzZWxmLl9wdXNoYmFja19jaGFyczoKKyAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuX3B1c2hiYWNrX2NoYXJzLnBvcCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCiAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSAnXG4nOgotICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAzOgotICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUiLCByZXByKHNlbGYuc3RhdGUpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgIkkgc2VlIGNoYXJhY3RlcjoiLCByZXByKG5leHRjaGFyKSkKKyAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IGluIHN0YXRlICVyIEkgc2VlIGNoYXJhY3RlcjogJXIiICUgKHNlbGYuc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhcikpCiAgICAgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9ICcnICAgICAgICAjIHBhc3QgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTM3LDEzICsxNTUsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gJ2EnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCisgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdjJwogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBvc2l4OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCkBAIC0xNjYsMTcgKzE4NywxNyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBjbG9zaW5nIHF1b3RhdGlvbiIpCiAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgPT0gc2VsZi5zdGF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdhJwotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgaW4gc2VsZi5lc2NhcGVkcXVvdGVzOgorICAgICAgICAgICAgICAgIGVsaWYgKHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlIGFuZCBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5lc2NhcGVkcXVvdGVzKToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gc2VsZi5zdGF0ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6ICAgICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CkBAIC0xODUsMTIgKzIwNiwxMiBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBlc2NhcGVkIGNoYXJhY3RlciIpCiAgICAgICAgICAgICAgICAgIyBJbiBwb3NpeCBzaGVsbHMsIG9ubHkgdGhlIHF1b3RlIGl0c2VsZiBvciB0aGUgZXNjYXBlCiAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgbWF5IGJlIGVzY2FwZWQgd2l0aGluIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICBpZiBlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kIFwKLSAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgc2VsZi5zdGF0ZQotICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZHN0YXRlIGluIHNlbGYucXVvdGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgIT0gc2VsZi5zdGF0ZSBhbmQgbmV4dGNoYXIgIT0gZXNjYXBlZHN0YXRlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBlc2NhcGVkc3RhdGUKLSAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYSc6CisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gKCdhJywgJ2MnKToKICAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBOb25lICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMjA0LDcgKzIyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5jb21tZW50ZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RyZWFtLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBvc2l4OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi50b2tlbiBvciAoc2VsZi5wb3NpeCBhbmQgcXVvdGVkKToKQEAgLTIxNiwxMSArMjM3LDIyIEBACiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gJ2EnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgotICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMgXAotICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gJ2MnOgorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBpbiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgbm90IGluIHNlbGYud2hpdGVzcGFjZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycy5hcHBlbmQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsaWYgKG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzIG9yIG5leHRjaGFyIGluIHNlbGYucXVvdGVzCisgICAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi53aGl0ZXNwYWNlX3NwbGl0KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaGJhY2suYXBwZW5kbGVmdChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaGJhY2suYXBwZW5kbGVmdChuZXh0Y2hhcikKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBJIHNlZSBwdW5jdHVhdGlvbiBpbiB3b3JkIHN0YXRlIikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwpkaWZmIC0tZ2l0IGEvTGliL3NodXRpbC5weSBiL0xpYi9zaHV0aWwucHkKaW5kZXggMTZjYTgwYi4uYmQ0NzYwZiAxMDA2NDQKLS0tIGEvTGliL3NodXRpbC5weQorKysgYi9MaWIvc2h1dGlsLnB5CkBAIC05ODEsNiArOTgxLDkgQEAKIAogICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKICAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisgICAgX250dXBsZV9kaXNrdXNhZ2UudG90YWwuX19kb2NfXyA9ICdUb3RhbCBzcGFjZSBpbiBieXRlcycKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS51c2VkLl9fZG9jX18gPSAnVXNlZCBzcGFjZSBpbiBieXRlcycKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS5mcmVlLl9fZG9jX18gPSAnRnJlZSBzcGFjZSBpbiBieXRlcycKIAogICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgpkaWZmIC0tZ2l0IGEvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dCBiL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczZjYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQKQEAgLTAsMCArMSwyIEBACitUaGlzIGRpcmVjdG9yeSBleGlzdHMgc28gdGhhdCAzcmQgcGFydHkgcGFja2FnZXMgY2FuIGJlIGluc3RhbGxlZAoraGVyZS4gIFJlYWQgdGhlIHNvdXJjZSBmb3Igc2l0ZS5weSBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCAzZjc4ZWY1Li4wZmM5MjAwIDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtNjAsNyArNjAsOCBAQAogCiBUaGUgcmVhZGxpbmUgbW9kdWxlIGlzIGFsc28gYXV0b21hdGljYWxseSBjb25maWd1cmVkIHRvIGVuYWJsZQogY29tcGxldGlvbiBmb3Igc3lzdGVtcyB0aGF0IHN1cHBvcnQgaXQuICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGluCi1zaXRlY3VzdG9taXplLCB1c2VyY3VzdG9taXplIG9yIFBZVEhPTlNUQVJUVVAuCitzaXRlY3VzdG9taXplLCB1c2VyY3VzdG9taXplIG9yIFBZVEhPTlNUQVJUVVAuICBTdGFydGluZyBQeXRob24gaW4KK2lzb2xhdGVkIG1vZGUgKC1JKSBkaXNhYmxlcyBhdXRvbWF0aWMgcmVhZGxpbmUgY29uZmlndXJhdGlvbi4KIAogQWZ0ZXIgdGhlc2Ugb3BlcmF0aW9ucywgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGltcG9ydCBhIG1vZHVsZQogbmFtZWQgc2l0ZWN1c3RvbWl6ZSwgd2hpY2ggY2FuIHBlcmZvcm0gYXJiaXRyYXJ5IGFkZGl0aW9uYWwKQEAgLTEzMSwxMyArMTMyLDEzIEBACiAKIAogZGVmIF9pbml0X3BhdGhpbmZvKCk6Ci0gICAgIiIiUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGRpcmVjdG9yeSBlbnRyaWVzIGZyb20gc3lzLnBhdGgiIiIKKyAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZmlsZSBzeXN0ZW0gaXRlbXMgZnJvbSBzeXMucGF0aC4iIiIKICAgICBkID0gc2V0KCkKLSAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgorICAgIGZvciBpdGVtIGluIHN5cy5wYXRoOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcik6Ci0gICAgICAgICAgICAgICAgZGlyLCBkaXJjYXNlID0gbWFrZXBhdGgoZGlyKQotICAgICAgICAgICAgICAgIGQuYWRkKGRpcmNhc2UpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpdGVtKToKKyAgICAgICAgICAgICAgICBfLCBpdGVtY2FzZSA9IG1ha2VwYXRoKGl0ZW0pCisgICAgICAgICAgICAgICAgZC5hZGQoaXRlbWNhc2UpCiAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZQogICAgIHJldHVybiBkCkBAIC0xNTAsOSArMTUxLDkgQEAKICAgICAiIiIKICAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgICBrbm93bl9wYXRocyA9IF9pbml0X3BhdGhpbmZvKCkKLSAgICAgICAgcmVzZXQgPSAxCisgICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgIGVsc2U6Ci0gICAgICAgIHJlc2V0ID0gMAorICAgICAgICByZXNldCA9IEZhbHNlCiAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4oc2l0ZWRpciwgbmFtZSkKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGZ1bGxuYW1lLCAiciIpCkBAIC0xOTAsOSArMTkxLDkgQEAKICAgICAnc2l0ZWRpciciIiIKICAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgICBrbm93bl9wYXRocyA9IF9pbml0X3BhdGhpbmZvKCkKLSAgICAgICAgcmVzZXQgPSAxCisgICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgIGVsc2U6Ci0gICAgICAgIHJlc2V0ID0gMAorICAgICAgICByZXNldCA9IEZhbHNlCiAgICAgc2l0ZWRpciwgc2l0ZWRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyKQogICAgIGlmIG5vdCBzaXRlZGlyY2FzZSBpbiBrbm93bl9wYXRoczoKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudApAQCAtMzA0LDcgKzMwNSw3IEBACiAKICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKQEAgLTMxNyw3ICszMTgsNyBAQAogICAgICAgICAgICAgaWYgZnJhbWV3b3JrOgogICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oIi9MaWJyYXJ5IiwgZnJhbWV3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwgInNpdGUtcGFja2FnZXMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICJzaXRlLXBhY2thZ2VzIikpCiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCiBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzLCBwcmVmaXhlcz1Ob25lKToKQEAgLTMzNSw5ICszMzYsNyBAQAogICAgIFRoZSByZXByIG9mIGVhY2ggb2JqZWN0IGNvbnRhaW5zIGEgaGludCBhdCBob3cgaXQgd29ya3MuCiAKICAgICAiIiIKLSAgICBpZiBvcy5zZXAgPT0gJzonOgotICAgICAgICBlb2YgPSAnQ21kLVEnCi0gICAgZWxpZiBvcy5zZXAgPT0gJ1xcJzoKKyAgICBpZiBvcy5zZXAgPT0gJ1xcJzoKICAgICAgICAgZW9mID0gJ0N0cmwtWiBwbHVzIFJldHVybicKICAgICBlbHNlOgogICAgICAgICBlb2YgPSAnQ3RybC1EIChpLmUuIEVPRiknCkBAIC00MjMsMjMgKzQyMiw2IEBACiAKICAgICBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXyA9IHJlZ2lzdGVyX3JlYWRsaW5lCiAKLWRlZiBhbGlhc21iY3MoKToKLSAgICAiIiJPbiBXaW5kb3dzLCBzb21lIGRlZmF1bHQgZW5jb2RpbmdzIGFyZSBub3QgcHJvdmlkZWQgYnkgUHl0aG9uLAotICAgIHdoaWxlIHRoZXkgYXJlIGFsd2F5cyBhdmFpbGFibGUgYXMgIm1iY3MiIGluIGVhY2ggbG9jYWxlLiBNYWtlCi0gICAgdGhlbSB1c2FibGUgYnkgYWxpYXNpbmcgdG8gIm1iY3MiIGluIHN1Y2ggYSBjYXNlLiIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUsIGNvZGVjcwotICAgICAgICBlbmMgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKLSAgICAgICAgaWYgZW5jLnN0YXJ0c3dpdGgoJ2NwJyk6ICAgICAgICAgICAgIyAiY3AqKioiID8KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGVuYykKLSAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgICAgICAgICBpbXBvcnQgZW5jb2RpbmdzCi0gICAgICAgICAgICAgICAgZW5jb2RpbmdzLl9jYWNoZVtlbmNdID0gZW5jb2RpbmdzLl91bmtub3duCi0gICAgICAgICAgICAgICAgZW5jb2RpbmdzLmFsaWFzZXMuYWxpYXNlc1tlbmNdID0gJ21iY3MnCi0KLUNPTkZJR19MSU5FID0gcideKD9QPGtleT4oXHd8Wy1fXSkrKVxzKj1ccyooP1A8dmFsdWU+LiopXHMqJCcKLQogZGVmIHZlbnYoa25vd25fcGF0aHMpOgogICAgIGdsb2JhbCBQUkVGSVhFUywgRU5BQkxFX1VTRVJfU0lURQogCkBAIC00NjEsMjkgKzQ0MywyMCBAQAogICAgICAgICBdCiAKICAgICBpZiBjYW5kaWRhdGVfY29uZnM6Ci0gICAgICAgIGltcG9ydCByZQotICAgICAgICBjb25maWdfbGluZSA9IHJlLmNvbXBpbGUoQ09ORklHX0xJTkUpCiAgICAgICAgIHZpcnR1YWxfY29uZiA9IGNhbmRpZGF0ZV9jb25mc1swXQogICAgICAgICBzeXN0ZW1fc2l0ZSA9ICJ0cnVlIgogICAgICAgICAjIElzc3VlIDI1MTg1OiBVc2UgVVRGLTgsIGFzIHRoYXQncyB3aGF0IHRoZSB2ZW52IG1vZHVsZSB1c2VzIHdoZW4KICAgICAgICAgIyB3cml0aW5nIHRoZSBmaWxlLgogICAgICAgICB3aXRoIG9wZW4odmlydHVhbF9jb25mLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgbSA9IGNvbmZpZ19saW5lLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgZCA9IG0uZ3JvdXBkaWN0KCkKLSAgICAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGRbJ2tleSddLmxvd2VyKCksIGRbJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICBpZiAnPScgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAga2V5LCBfLCB2YWx1ZSA9IGxpbmUucGFydGl0aW9uKCc9JykKKyAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5LnN0cmlwKCkubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzJzoKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQotICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnYXBwbG9jYWwnIGFuZCB2YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwLWxvY2FsIGluc3RhbGxzIHVzZSB0aGUgZXhlX2RpciBhcyBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBvbmUgbGV2ZWwgaGlnaGVyLCBhbmQgZG8gbm90IHVzZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2l0ZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVfcHJlZml4ID0gZXhlX2RpcgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSAnZmFsc2UnCiAKICAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CiAKQEAgLTUwNCwxMSArNDc3LDE1IEBACiBkZWYgZXhlY3NpdGVjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHNpdGUgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICdzaXRlY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTUyMCwxMSArNDk3LDE1IEBACiBkZWYgZXhlY3VzZXJjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHVzZXIgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICd1c2VyY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTU1MSwxMyArNTMyLDEzIEBACiAgICAgc2V0cXVpdCgpCiAgICAgc2V0Y29weXJpZ2h0KCkKICAgICBzZXRoZWxwZXIoKQotICAgIGVuYWJsZXJsY29tcGxldGVyKCkKLSAgICBhbGlhc21iY3MoKQorICAgIGlmIG5vdCBzeXMuZmxhZ3MuaXNvbGF0ZWQ6CisgICAgICAgIGVuYWJsZXJsY29tcGxldGVyKCkKICAgICBleGVjc2l0ZWN1c3RvbWl6ZSgpCiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURToKICAgICAgICAgZXhlY3VzZXJjdXN0b21pemUoKQogCi0jIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBQcmV2ZW50IGV4dGVuZGluZyBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAogIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgogaWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDczMjA2NmUuLjgxMDNjYTkgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTg5LDcgKzg5LDEwIEBACiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIGVtYWlsLl9oZWFkZXJfdmFsdWVfcGFyc2VyIGltcG9ydCBnZXRfYWRkcl9zcGVjLCBnZXRfYW5nbGVfYWRkcgogCi1fX2FsbF9fID0gWyJTTVRQU2VydmVyIiwiRGVidWdnaW5nU2VydmVyIiwiUHVyZVByb3h5IiwiTWFpbG1hblByb3h5Il0KK19fYWxsX18gPSBbCisgICAgIlNNVFBDaGFubmVsIiwgIlNNVFBTZXJ2ZXIiLCAiRGVidWdnaW5nU2VydmVyIiwgIlB1cmVQcm94eSIsCisgICAgIk1haWxtYW5Qcm94eSIsCitdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQogX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCkBAIC0xMjgsMjQgKzEzMSwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgorICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgbWFwPW1hcCkKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgICBzZWxmLmNvbm4gPSBjb25uCiAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQotICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgotICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCi0gICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQogICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGOCBhbmQgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CiAgICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9ICcnCiAgICAgICAgICAgICBzZWxmLl9saW5lc2VwID0gJ1xyXG4nCkBAIC02MzUsMjMgKzYzMSwxNSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKICAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAotICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6Ci0gICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGFyYW1ldGVycyBjYW5ub3QgYmUgc2V0IHRvIFRydWUgYXQgdGhlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzYW1lIHRpbWUuIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgbWFwPW1hcCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZ2FpX3Jlc3VsdHMgPSBzb2NrZXQuZ2V0YWRkcmluZm8oKmxvY2FsYWRkciwKQEAgLTY5OCw5ICs2ODYsOSBAQAogICAgICAgICBjb250YWluaW5nIGEgYC4nIGZvbGxvd2VkIGJ5IG90aGVyIHRleHQgaGFzIGhhZCB0aGUgbGVhZGluZyBkb3QKICAgICAgICAgcmVtb3ZlZC4KIAotICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKLSAgICAgICAgdW5sZXNzIGRlY29kZV9kYXRhPUZhbHNlIG9yIGVuYWJsZV9TTVRQVVRGOD1UcnVlIHdhcyBnaXZlbiBhcyBpbml0Ci0gICAgICAgIHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSB1dCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgorICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIEl0IGlzCisgICAgICAgIGVtcHR5IGlmIGRlY29kZV9kYXRhPVRydWUgd2FzIGdpdmVuIGFzIGluaXQgcGFyYW1ldGVyLCBvdGhlcndpc2UKKyAgICAgICAgaXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKICAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gdGhlIG1haWwgY29tbWFuZC4gIEFsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzIGFyZSB1cHBlcmNhc2Ugc3RyaW5ncy4gIEV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10uCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IDViOWU2NjUuLmY3YzJjNzcgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC03NTksNiArNzU5LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKQEAgLTEwMTEsNiArMTAxNSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IGU1OTAxZWMuLjdlY2FmYjQgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMzcsNiArMzcsMTggQEAKIFNuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxldHlwZSBmcmFtZXJhdGUgbmNoYW5uZWxzIG5mcmFtZXMgc2FtcHdpZHRoJykKIAorU25kSGVhZGVycy5maWxldHlwZS5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgdHlwZSBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZQorYW5kIHdpbGwgYmUgb25lIG9mIHRoZSBzdHJpbmdzICdhaWZjJywgJ2FpZmYnLCAnYXUnLCdoY29tJywKKydzbmRyJywgJ3NuZHQnLCAndm9jJywgJ3dhdicsICc4c3Z4JywgJ3NiJywgJ3ViJywgb3IgJ3VsJy4iIiIpCitTbmRIZWFkZXJzLmZyYW1lcmF0ZS5fX2RvY19fID0gKCIiIlRoZSBzYW1wbGluZ19yYXRlIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKK3ZhbHVlIG9yIDAgaWYgdW5rbm93biBvciBkaWZmaWN1bHQgdG8gZGVjb2RlLiIiIikKK1NuZEhlYWRlcnMubmNoYW5uZWxzLl9fZG9jX18gPSAoIiIiVGhlIG51bWJlciBvZiBjaGFubmVscyBvciAwIGlmIGl0IGNhbm5vdCBiZQorZGV0ZXJtaW5lZCBvciBpZiB0aGUgdmFsdWUgaXMgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5mcmFtZXMuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIGZyYW1lcyB3aWxsIGJlIGVpdGhlciB0aGUgbnVtYmVyCitvZiBmcmFtZXMgb3IgLTEuIiIiKQorU25kSGVhZGVycy5zYW1wd2lkdGguX19kb2NfXyA9ICgiIiJFaXRoZXIgdGhlIHNhbXBsZSBzaXplIGluIGJpdHMgb3IKKydBJyBmb3IgQS1MQVcgb3IgJ1UnIGZvciB1LUxBVy4iIiIpCisKIGRlZiB3aGF0KGZpbGVuYW1lKToKICAgICAiIiJHdWVzcyB0aGUgdHlwZSBvZiBhIHNvdW5kIGZpbGUuIiIiCiAgICAgcmVzID0gd2hhdGhkcihmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGE5Y2FiMzIuLjc0MGU3MTcgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtNTAsNyArNTAsNyBAQAogZnJvbSBfc29ja2V0IGltcG9ydCAqCiAKIGltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCi1mcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bSwgSW50RmxhZwogCiB0cnk6CiAgICAgaW1wb3J0IGVycm5vCkBAIC04MCw2ICs4MCwxNiBAQAogICAgICAgICBfX25hbWVfXywKICAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ1NPQ0tfJykpCiAKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdNc2dGbGFnJywKKyAgICAgICAgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdNU0dfJykpCisKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdBZGRyZXNzSW5mbycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnQUlfJykpCisKIF9MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJwogX0xPQ0FMSE9TVF9WNiA9ICc6OjEnCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IDg4MDg4MTMuLjQxYTM3NjYgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtMTI3LDE2ICsxMjcsMjAgQEAKIGltcG9ydCBzZWxlY3RvcnMKIGltcG9ydCBvcwogaW1wb3J0IGVycm5vCitpbXBvcnQgc3lzCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCitmcm9tIGlvIGltcG9ydCBCdWZmZXJlZElPQmFzZQogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCi1fX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLCAiRm9ya2luZ1VEUFNlcnZlciIsCi0gICAgICAgICAgICJGb3JraW5nVENQU2VydmVyIiwgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAorX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwKKyAgICAgICAgICAgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAogICAgICAgICAgICAiQmFzZVJlcXVlc3RIYW5kbGVyIiwgIlN0cmVhbVJlcXVlc3RIYW5kbGVyIiwKLSAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iLCAiRm9ya2luZ01peEluIl0KKyAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iXQoraWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBfX2FsbF9fLmV4dGVuZChbIkZvcmtpbmdVRFBTZXJ2ZXIiLCJGb3JraW5nVENQU2VydmVyIiwgIkZvcmtpbmdNaXhJbiJdKQogaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CiAgICAgX19hbGxfXy5leHRlbmQoWyJVbml4U3RyZWFtU2VydmVyIiwiVW5peERhdGFncmFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhTdHJlYW1TZXJ2ZXIiLApAQCAtMzExLDkgKzMxNSwxMiBAQAogICAgICAgICBpZiBzZWxmLnZlcmlmeV9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCkBAIC0zNjcsMTIgKzM3NCwxOCBAQAogICAgICAgICBUaGUgZGVmYXVsdCBpcyB0byBwcmludCBhIHRyYWNlYmFjayBhbmQgY29udGludWUuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHByaW50KCctJyo0MCkKLSAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiBoYXBwZW5lZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiByZXF1ZXN0IGZyb20nLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjbGllbnRfYWRkcmVzcykKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywKKyAgICAgICAgICAgIGNsaWVudF9hZGRyZXNzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpICMgWFhYIEJ1dCB0aGlzIGdvZXMgdG8gc3RkZXJyIQotICAgICAgICBwcmludCgnLScqNDApCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICBwcmludCgnLScqNDAsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAKIAogY2xhc3MgVENQU2VydmVyKEJhc2VTZXJ2ZXIpOgpAQCAtNTI3LDg1ICs1NDAsODYgQEAKICAgICAgICAgIyBObyBuZWVkIHRvIGNsb3NlIGFueXRoaW5nLgogICAgICAgICBwYXNzCiAKLWNsYXNzIEZvcmtpbmdNaXhJbjoKK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgY2xhc3MgRm9ya2luZ01peEluOgorICAgICAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyBwcm9jZXNzLiIiIgogCi0gICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKKyAgICAgICAgdGltZW91dCA9IDMwMAorICAgICAgICBhY3RpdmVfY2hpbGRyZW4gPSBOb25lCisgICAgICAgIG1heF9jaGlsZHJlbiA9IDQwCiAKLSAgICB0aW1lb3V0ID0gMzAwCi0gICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQotICAgIG1heF9jaGlsZHJlbiA9IDQwCi0KLSAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKLSAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgotICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBJZiB3ZSdyZSBhYm92ZSB0aGUgbWF4IG51bWJlciBvZiBjaGlsZHJlbiwgd2FpdCBhbmQgcmVhcCB0aGVtIHVudGlsCi0gICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKLSAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKLSAgICAgICAgIyBvZiBzaXplKDxjaGlsZHJlbj4pOiB0aGUgZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1pZ2h0IHJlYXAgY2hpbGRyZW4KLSAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKLSAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCi0gICAgICAgIHdoaWxlIGxlbihzZWxmLmFjdGl2ZV9jaGlsZHJlbikgPj0gc2VsZi5tYXhfY2hpbGRyZW46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgotICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKHBpZCwgb3MuV05PSEFORykKLSAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQotICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KLQotICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgotICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgotCi0gICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKLSAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHBpZCA9IG9zLmZvcmsoKQotICAgICAgICBpZiBwaWQ6Ci0gICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgIGRlZiBjb2xsZWN0X2NoaWxkcmVuKHNlbGYpOgorICAgICAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgogICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCi0gICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQotICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAorICAgICAgICAgICAgIyB3ZSBnbyBiYWNrIGJlbG93IHRocmVzaG9sZC4gTm90ZSB0aGF0IHdlIHVzZSB3YWl0cGlkKC0xKSBiZWxvdyB0byBiZQorICAgICAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKKyAgICAgICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCisgICAgICAgICAgICAjIHdoaWNoIHdlIGRpZG4ndCBzcGF3biwgd2hpY2ggaXMgd2h5IHdlIG9ubHkgcmVzb3J0IHRvIHRoaXMgd2hlbiB3ZSdyZQorICAgICAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCisgICAgICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGZvciBwaWQgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgorICAgICAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KKworICAgICAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCisgICAgICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZDoKKyAgICAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFkZChwaWQpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCisgICAgICAgICAgICAgICAgc3RhdHVzID0gMQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMAorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgxKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KHN0YXR1cykKIAogCiBjbGFzcyBUaHJlYWRpbmdNaXhJbjoKQEAgLTYyMyw5ICs2MzcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCiAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CkBAIC02MzYsOCArNjUwLDkgQEAKICAgICAgICAgdC5zdGFydCgpCiAKIAotY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKLWNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCisgICAgY2xhc3MgRm9ya2luZ1RDUFNlcnZlcihGb3JraW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKIAogY2xhc3MgVGhyZWFkaW5nVURQU2VydmVyKFRocmVhZGluZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCiBjbGFzcyBUaHJlYWRpbmdUQ1BTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKQEAgLTcyOSw3ICs3NDQsMTAgQEAKICAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5UQ1BfTk9ERUxBWSwgVHJ1ZSkKICAgICAgICAgc2VsZi5yZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgncmInLCBzZWxmLnJidWZzaXplKQotICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCisgICAgICAgIGlmIHNlbGYud2J1ZnNpemUgPT0gMDoKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBfU29ja2V0V3JpdGVyKHNlbGYuY29ubmVjdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3diJywgc2VsZi53YnVmc2l6ZSkKIAogICAgIGRlZiBmaW5pc2goc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLndmaWxlLmNsb3NlZDoKQEAgLTc0Miw2ICs3NjAsMjQgQEAKICAgICAgICAgc2VsZi53ZmlsZS5jbG9zZSgpCiAgICAgICAgIHNlbGYucmZpbGUuY2xvc2UoKQogCitjbGFzcyBfU29ja2V0V3JpdGVyKEJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiJTaW1wbGUgd3JpdGFibGUgQnVmZmVyZWRJT0Jhc2UgaW1wbGVtZW50YXRpb24gZm9yIGEgc29ja2V0CisKKyAgICBEb2VzIG5vdCBob2xkIGRhdGEgaW4gYSBidWZmZXIsIGF2b2lkaW5nIGFueSBuZWVkIHRvIGNhbGwgZmx1c2goKS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrKToKKyAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5fc29jay5zZW5kYWxsKGIpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3OgorICAgICAgICAgICAgcmV0dXJuIHZpZXcubmJ5dGVzCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc29jay5maWxlbm8oKQogCiBjbGFzcyBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKEJhc2VSZXF1ZXN0SGFuZGxlcik6CiAKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDdmYjhkN2UuLmNiODU4MTQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMTg4LDcgKzE4OCwxMCBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5jeCA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3UgPSBzZWxmLmN4LmN1cnNvcigpCi0gICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCBpbmNvbWUgbnVtYmVyKSIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBuYW1lIHRleHQsICIKKyAgICAgICAgICAgICJpbmNvbWUgbnVtYmVyLCB1bmlxdWVfdGVzdCB0ZXh0IHVuaXF1ZSkiCisgICAgICAgICkKICAgICAgICAgc2VsZi5jdS5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KG5hbWUpIHZhbHVlcyAoPykiLCAoImZvbyIsKSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTQ2Miw2ICs0NjUsNDQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgY3VyID0gc3FsaXRlLkN1cnNvcihmb28pCiAKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPblJlcGxhY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJTlNFUlQgT1IgUkVQTEFDRSBhbmQgUkVQTEFDRSBJTlRPIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIGJlaGF2aW9yLgorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gJ3t9IElOVE8gdGVzdChpZCwgdW5pcXVlX3Rlc3QpIFZBTFVFUyAoPywgPyknCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdJTlNFUlQgT1IgUkVQTEFDRScsICdSRVBMQUNFJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdGF0ZW1lbnQ9c3RhdGVtZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoMSwgJ2ZvbycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDEpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPbklnbm9yZShzZWxmKToKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKworICAgIGRlZiBDaGVja0xhc3RSb3dJREluc2VydE9SKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHN0YXRlbWVudCBpbiAoJ0ZBSUwnLCAnQUJPUlQnLCAnUk9MTEJBQ0snKToKKyAgICAgICAgICAgIHNxbCA9ICdJTlNFUlQgT1Ige30gSU5UTyB0ZXN0KHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8pJworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PSdJTlNFUlQgT1Ige30nLmZvcm1hdChzdGF0ZW1lbnQpKToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoc3RhdGVtZW50LCkpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHN0YXRlbWVudCwgc2VsZi5jdS5sYXN0cm93aWQpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLkludGVncml0eUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ0ZBSUwnLCAyKSwgKCdGQUlMJywgMiksCisgICAgICAgICAgICAoJ0FCT1JUJywgMyksICgnQUJPUlQnLCAzKSwKKyAgICAgICAgICAgICgnUk9MTEJBQ0snLCA0KSwgKCdST0xMQkFDSycsIDQpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgZXhwZWN0ZWQpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhpcyB0ZXN0IHJlcXVpcmVzIHRocmVhZGluZy4nKQogY2xhc3MgVGhyZWFkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKaW5kZXggYTI1MzYwYS4uNDVmMWIwNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKQEAgLTUyLDEzICs1MiwxMyBAQAogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBDaGVja0RNTGRvZXNBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgorICAgIGRlZiBDaGVja0RNTERvZXNOb3RBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0MihqKSIpCiAgICAgICAgIHNlbGYuY3VyMi5leGVjdXRlKCJzZWxlY3QgaSBmcm9tIHRlc3QiKQogICAgICAgICByZXMgPSBzZWxmLmN1cjIuZmV0Y2hhbGwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAwKQogCiAgICAgZGVmIENoZWNrSW5zZXJ0U3RhcnRzVHJhbnNhY3Rpb24oc2VsZik6CiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCkBAIC0xNTMsMTEgKzE1Myw2IEBACiAgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgc2VsZi5jdXIgPSBzZWxmLmNvbi5jdXJzb3IoKQogCi0gICAgZGVmIENoZWNrVmFjdXVtKHNlbGYpOgotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoInZhY3V1bSIpCi0KICAgICBkZWYgQ2hlY2tEcm9wVGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKQEAgLTE3MiwxMCArMTY3LDM1IEBACiAgICAgICAgIHNlbGYuY3VyLmNsb3NlKCkKICAgICAgICAgc2VsZi5jb24uY2xvc2UoKQogCitjbGFzcyBUcmFuc2FjdGlvbmFsRERMKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKworICAgIGRlZiBDaGVja0RkbERvZXNOb3RBdXRvc3RhcnRUcmFuc2FjdGlvbihzZWxmKToKKyAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgRERMIHN0YXRlbWVudHMgc2hvdWxkIG5vdAorICAgICAgICAjIGltcGxpY2l0bHkgc3RhcnQgYSB0cmFuc2FjdGlvbi4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQorICAgICAgICBzZWxmLmNvbi5yb2xsYmFjaygpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpLmZldGNoYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFtdKQorCisgICAgZGVmIENoZWNrVHJhbnNhY3Rpb25hbERETChzZWxmKToKKyAgICAgICAgIyBZb3UgY2FuIGFjaGlldmUgdHJhbnNhY3Rpb25hbCBEREwgYnkgaXNzdWluZyBhIEJFR0lOCisgICAgICAgICMgc3RhdGVtZW50IG1hbnVhbGx5LgorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJiZWdpbiIpCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5PcGVyYXRpb25hbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKKwogZGVmIHN1aXRlKCk6CiAgICAgZGVmYXVsdF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvblRlc3RzLCAiQ2hlY2siKQogICAgIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShTcGVjaWFsQ29tbWFuZFRlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSkpCisgICAgZGRsX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYW5zYWN0aW9uYWxEREwsICJDaGVjayIpCisgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoZGVmYXVsdF9zdWl0ZSwgc3BlY2lhbF9jb21tYW5kX3N1aXRlLCBkZGxfc3VpdGUpKQogCiBkZWYgdGVzdCgpOgogICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA1MDJiMDYxLi40MjBkODNkIDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC03MSw3ICs3MSw4IEBACiAgICAgQVNTRVJUX0NPREVTID0gX0FTU0VSVF9DT0RFUwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UgYW5kCiAgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKSBhbmQKLSAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSk6CisgICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUgYW5kCisgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpKToKICAgICAgICAgZml4ZXMgPSBfaWdub3JlY2FzZV9maXhlcwogICAgIGVsc2U6CiAgICAgICAgIGZpeGVzID0gTm9uZQpAQCAtMTM3LDE0ICsxMzgsMTUgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBlbWl0KE1JTl9VTlRJTCkKICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIpCi0gICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMikKKyAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIHAsIChmbGFncyB8IGFkZF9mbGFncykgJiB+ZGVsX2ZsYWdzKQorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIrMSkKKyAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKzEpCiAgICAgICAgIGVsaWYgb3AgaW4gU1VDQ0VTU19DT0RFUzoKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgpAQCAtMTcyLDcgKzE3NCw3IEBACiAgICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTE9DQUxFLmdldChhdiwgYXYpCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9VTklDT0RFLmdldChhdiwgYXYpCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKQEAgLTE5Myw3ICsxOTUsNyBAQAogICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfTE9DQUxFW2F2XQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUY6CkBAIC0yMzcsNyArMjM5LDcgQEAKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGVtaXQoQ0hfTE9DQUxFW2F2XSkKLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBlbWl0KENIX1VOSUNPREVbYXZdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbWl0KGF2KQpAQCAtNDA5LDQyICs0MTEsNDIgQEAKICAgICAgICAgICAgIHRhYmxlW2ldID0gaWR4ICsgMQogICAgIHJldHVybiB0YWJsZQogCi1kZWYgX2NvbXBpbGVfaW5mbyhjb2RlLCBwYXR0ZXJuLCBmbGFncyk6Ci0gICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKLSAgICAjIHRoaXMgY29udGFpbnMgbWluL21heCBwYXR0ZXJuIHdpZHRoLCBhbmQgYW4gb3B0aW9uYWwgbGl0ZXJhbAotICAgICMgcHJlZml4IG9yIGEgY2hhcmFjdGVyIG1hcAotICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQotICAgIGlmIGhpID4gTUFYQ09ERToKLSAgICAgICAgaGkgPSBNQVhDT0RFCi0gICAgaWYgbG8gPT0gMDoKLSAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCi0gICAgICAgIHJldHVybgotICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAorZGVmIF9nZXRfbGl0ZXJhbF9wcmVmaXgocGF0dGVybik6CisgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCiAgICAgcHJlZml4YXBwZW5kID0gcHJlZml4LmFwcGVuZAotICAgIHByZWZpeF9za2lwID0gMAorICAgIHByZWZpeF9za2lwID0gTm9uZQorICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybi5kYXRhOgorICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQorICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcHJlZml4MSwgcHJlZml4X3NraXAxLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwKQorICAgICAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KQorICAgICAgICAgICAgICAgIGVsaWYgcHJlZml4X3NraXAxIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpICsgcHJlZml4X3NraXAxCisgICAgICAgICAgICBwcmVmaXguZXh0ZW5kKHByZWZpeDEpCisgICAgICAgICAgICBpZiBub3QgZ290X2FsbDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgVHJ1ZQorICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBGYWxzZQorCitkZWYgX2dldF9jaGFyc2V0X3ByZWZpeChwYXR0ZXJuKToKICAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAogICAgIGNoYXJzZXRhcHBlbmQgPSBjaGFyc2V0LmFwcGVuZAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKLSAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAotICAgICAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXA6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gcHJlZml4X3NraXAgKyAxCi0gICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOIGFuZCBsZW4oYXZbMV0pID09IDE6Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KLSAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBpZiBubyBwcmVmaXgsIGxvb2sgZm9yIGNoYXJzZXQgcHJlZml4Ci0gICAgICAgIGlmIG5vdCBwcmVmaXggYW5kIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQotICAgICAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgYXZbMV06Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KKyAgICBpZiBwYXR0ZXJuLmRhdGE6CisgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQorICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIHAgYW5kIG5vdCAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6CisgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQogICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXRhcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC00NjAsMjEgKzQ2Miw0MyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6Ci0gICAgICAgICAgICAgICAgYyA9IFtdCi0gICAgICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gYXZbMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQotICAgICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgorICAgICAgICAgICAgYyA9IFtdCisgICAgICAgICAgICBjYXBwZW5kID0gYy5hcHBlbmQKKyAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgorICAgICAgICAgICAgICAgIGlmIG5vdCBwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KKyAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgICAgICAgICBjYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCi0gICAgICAgICAgICBlbGlmIG9wIGlzIElOOgotICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYworICAgICAgICBlbGlmIG9wIGlzIElOOgorICAgICAgICAgICAgY2hhcnNldCA9IGF2CisgICAgcmV0dXJuIGNoYXJzZXQKKworZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgorICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCisgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKKyAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKKyAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKKyAgICBpZiBoaSA+IE1BWENPREU6CisgICAgICAgIGhpID0gTUFYQ09ERQorICAgIGlmIGxvID09IDA6CisgICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQorICAgICAgICByZXR1cm4KKyAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKKyAgICBwcmVmaXggPSBbXQorICAgIHByZWZpeF9za2lwID0gMAorICAgIGNoYXJzZXQgPSBbXSAjIG5vdCB1c2VkCisgICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4CisgICAgICAgIHByZWZpeCwgcHJlZml4X3NraXAsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pCisgICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAorICAgICAgICBpZiBub3QgcHJlZml4OgorICAgICAgICAgICAgY2hhcnNldCA9IF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybikKICMjICAgICBpZiBwcmVmaXg6CiAjIyAgICAgICAgIHByaW50KCIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcCkKICMjICAgICBpZiBjaGFyc2V0OgpAQCAtNDg3LDcgKzUxMSw3IEBACiAgICAgbWFzayA9IDAKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIG1hc2sgPSBTUkVfSU5GT19QUkVGSVgKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXAgPT0gbGVuKHBhdHRlcm4uZGF0YSk6CisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmUgYW5kIGdvdF9hbGw6CiAgICAgICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0xJVEVSQUwKICAgICBlbGlmIGNoYXJzZXQ6CiAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fQ0hBUlNFVApAQCAtNTAyLDYgKzUyNiw4IEBACiAgICAgIyBhZGQgbGl0ZXJhbCBwcmVmaXgKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICBwcmVmaXhfc2tpcCA9ICBsZW4ocHJlZml4KQogICAgICAgICBlbWl0KHByZWZpeF9za2lwKSAjIHNraXAKICAgICAgICAgY29kZS5leHRlbmQocHJlZml4KQogICAgICAgICAjIGdlbmVyYXRlIG92ZXJsYXAgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IDRmZjUwZDEuLjZhYTQ5YzMgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtNjUsNiArNjUsMTIgQEAKICAgICAidSI6IFNSRV9GTEFHX1VOSUNPREUsCiB9CiAKK0dMT0JBTF9GTEFHUyA9IChTUkVfRkxBR19BU0NJSSB8IFNSRV9GTEFHX0xPQ0FMRSB8IFNSRV9GTEFHX1VOSUNPREUgfAorICAgICAgICAgICAgICAgIFNSRV9GTEFHX0RFQlVHIHwgU1JFX0ZMQUdfVEVNUExBVEUpCisKK2NsYXNzIFZlcmJvc2UoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFBhdHRlcm46CiAgICAgIyBtYXN0ZXIgcGF0dGVybiBvYmplY3QuICBrZWVwcyB0cmFjayBvZiBnbG9iYWwgYXR0cmlidXRlcwogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTE4NCw3ICsxOTAsNyBAQAogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgIGksIGogPSBhdlstMV0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaW4gX1JFUEVBVENPREVTOgpAQCAtMjczLDYgKzI3OSw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcG9zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6CkBAIC0yODIsMzMgKzI5MSw2IEBACiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgogICAgICAgICByZXR1cm4gZXJyb3IobXNnLCBzZWxmLnN0cmluZywgc2VsZi50ZWxsKCkgLSBvZmZzZXQpCiAKLSMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIG5vdCB1c2VkIGluIHRoaXMgbW9kdWxlIGFueW1vcmUsIGJ1dCB3ZSBrZWVwCi0jIHRoZW0gaGVyZSAod2l0aCBEZXByZWNhdGlvbldhcm5pbmdzKSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KLWRlZiBpc2lkZW50KGNoYXIpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc2lkZW50KCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gImEiIDw9IGNoYXIgPD0gInoiIG9yICJBIiA8PSBjaGFyIDw9ICJaIiBvciBjaGFyID09ICJfIgotCi1kZWYgaXNkaWdpdChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNkaWdpdCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICIwIiA8PSBjaGFyIDw9ICI5IgotCi1kZWYgaXNuYW1lKG5hbWUpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc25hbWUoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICMgY2hlY2sgdGhhdCBncm91cCBuYW1lIGlzIGEgdmFsaWQgc3RyaW5nCi0gICAgaWYgbm90IGlzaWRlbnQobmFtZVswXSk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZvciBjaGFyIGluIG5hbWVbMTpdOgotICAgICAgICBpZiBub3QgaXNpZGVudChjaGFyKSBhbmQgbm90IGlzZGlnaXQoY2hhcik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCiBkZWYgX2NsYXNzX2VzY2FwZShzb3VyY2UsIGVzY2FwZSk6CiAgICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW5zaWRlIGNoYXJhY3RlciBjbGFzcwogICAgIGNvZGUgPSBFU0NBUEVTLmdldChlc2NhcGUpCkBAIC0zNTEsOSArMzMzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwpAQCAtNDE1LDE4ICszOTUsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdyb3VwLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdST1VQUkVGLCBncm91cAotICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBncm91cCwgbGVuKGVzY2FwZSkgLSAxKQogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCiAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAKLWRlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIG5lc3RlZD1UcnVlKToKK2RlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UsIG5lc3RlZD1UcnVlKToKICAgICAjIHBhcnNlIGFuIGFsdGVybmF0aW9uOiBhfGJ8YwogCiAgICAgaXRlbXMgPSBbXQpAQCAtNDM0LDcgKzQxMiw3IEBACiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkKICAgICB3aGlsZSBUcnVlOgotICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSkpCisgICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKSkKICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgICBicmVhawogCkBAIC00NzYsMTAgKzQ1NCwxMCBAQAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChCUkFOQ0gsIChOb25lLCBpdGVtcykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKToKLSAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXAsIHZlcmJvc2UpOgorICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6Ci0gICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifCI6CiAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKICAgICBlbHNlOgpAQCAtNDg4LDcgKzQ2Niw3IEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEdST1VQUkVGX0VYSVNUUywgKGNvbmRncm91cCwgaXRlbV95ZXMsIGl0ZW1fbm8pKSkKICAgICByZXR1cm4gc3VicGF0dGVybgogCi1kZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUpOgorZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKToKICAgICAjIHBhcnNlIGEgc2ltcGxlIHBhdHRlcm4KICAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKIApAQCAtNDk4LDcgKzQ3Niw2IEBACiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBfbGVuID0gbGVuCiAgICAgX29yZCA9IG9yZAotICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKIAogICAgIHdoaWxlIFRydWU6CiAKQEAgLTY1Miw2ICs2MjksOCBAQAogICAgICAgICAgICAgZ3JvdXAgPSBUcnVlCiAgICAgICAgICAgICBuYW1lID0gTm9uZQogICAgICAgICAgICAgY29uZGdyb3VwID0gTm9uZQorICAgICAgICAgICAgYWRkX2ZsYWdzID0gMAorICAgICAgICAgICAgZGVsX2ZsYWdzID0gMAogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICAjIG9wdGlvbnMKICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKQEAgLTcxMyw3ICs2OTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmxvb2tiZWhpbmRncm91cHMKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUuZ3JvdXBzCi0gICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRpciA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKQEAgLTc0NiwyMiArNzI1LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPj0gTUFYR1JPVVBTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgY29uZGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGNvbmRncm91cCwgc291cmNlKQotICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1Mgb3IgY2hhciA9PSAiLSI6CiAgICAgICAgICAgICAgICAgICAgICMgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZsYWdzIHw9IEZMQUdTW2NoYXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGZsYWciLCBsZW4oY2hhcikpCi0gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gc291cmNlLnBvcworICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9wYXJzZV9mbGFncyhzb3VyY2UsIHN0YXRlLCBjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBOb25lOiAgIyBnbG9iYWwgZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBvcyAhPSAzOiAgIyAiKD94IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJXMnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnN0cmluZ1s6MjBdLCAgIyB0cnVuY2F0ZSBsb25nIHJlZ2V4ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKHRydW5jYXRlZCknIGlmIGxlbihzb3VyY2Uuc3RyaW5nKSA+IDIwIGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD03CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MgPSBmbGFncworICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID8iICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDEpCkBAIC03NzMsMTUgKzc1NiwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihlcnIubXNnLCBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGlmIGNvbmRncm91cDoKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICBzdWJfdmVyYm9zZSA9ICgodmVyYm9zZSBvciAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCAoZGVsX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgc3ViX3ZlcmJvc2UpCiAgICAgICAgICAgICBpZiBub3Qgc291cmNlLm1hdGNoKCIpIik6CiAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhdGUuY2xvc2Vncm91cChncm91cCwgcCkKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCkpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiXiI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKQEAgLTc5NCwxNCArNzc5LDU4IEBACiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCitkZWYgX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpOgorICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKKyAgICBhZGRfZmxhZ3MgPSAwCisgICAgZGVsX2ZsYWdzID0gMAorICAgIGlmIGNoYXIgIT0gIi0iOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYWRkX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgLSwgOiBvciApIikKKyAgICAgICAgICAgIGlmIGNoYXIgaW4gIiktOiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgLSwgOiBvciApIgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBpZiBjaGFyID09ICIpIjoKKyAgICAgICAgaWYgKChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQKKyAgICAgICAgICAgIG5vdCAoc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSk6CisgICAgICAgICAgICByYWlzZSBWZXJib3NlCisgICAgICAgIHN0YXRlLmZsYWdzIHw9IGFkZF9mbGFncworICAgICAgICByZXR1cm4gTm9uZQorICAgIGlmIGFkZF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZyIsIDEpCisgICAgaWYgY2hhciA9PSAiLSI6CisgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgZmxhZyIpCisgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyBmbGFnIgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGVsX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgOiIpCisgICAgICAgICAgICBpZiBjaGFyID09ICI6IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyA6IgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBhc3NlcnQgY2hhciA9PSAiOiIKKyAgICBpZiBkZWxfZmxhZ3MgJiBHTE9CQUxfRkxBR1M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBhZGRfZmxhZ3MgJiBkZWxfZmxhZ3M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZiIsIDEpCisgICAgcmV0dXJuIGFkZF9mbGFncywgZGVsX2ZsYWdzCisKIGRlZiBmaXhfZmxhZ3Moc3JjLCBmbGFncyk6CiAgICAgIyBDaGVjayBhbmQgZml4IGZsYWdzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBwYXR0ZXJuIChzdHIgb3IgYnl0ZXMpCiAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4gaXMgZGVwcmVjYXRlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIikKICAgICAgICAgaWYgbm90IGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CiAgICAgICAgICAgICBmbGFncyB8PSBTUkVfRkxBR19VTklDT0RFCiAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgpAQCAtODEwLDEwICs4MzksNyBAQAogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIFVOSUNPREUgZmxhZyB3aXRoIGEgYnl0ZXMgcGF0dGVybiIpCiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFIGFuZCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtODI2LDE4ICs4NTIsMjMgQEAKICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MKICAgICBwYXR0ZXJuLnN0ciA9IHN0cgogCi0gICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCAwKQorICAgIHRyeToKKyAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCBmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UsIEZhbHNlKQorICAgIGV4Y2VwdCBWZXJib3NlOgorICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCisgICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCisgICAgICAgIHBhdHRlcm4gPSBQYXR0ZXJuKCkKKyAgICAgICAgcGF0dGVybi5mbGFncyA9IGZsYWdzIHwgU1JFX0ZMQUdfVkVSQk9TRQorICAgICAgICBwYXR0ZXJuLnN0ciA9IHN0cgorICAgICAgICBzb3VyY2Uuc2VlaygwKQorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIFRydWUsIEZhbHNlKQorCiAgICAgcC5wYXR0ZXJuLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQogCiAgICAgaWYgc291cmNlLm5leHQgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBzb3VyY2UubmV4dCA9PSAiKSIKICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKIAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQgcC5wYXR0ZXJuLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRToKLSAgICAgICAgIyB0aGUgVkVSQk9TRSBmbGFnIHdhcyBzd2l0Y2hlZCBvbiBpbnNpZGUgdGhlIHBhdHRlcm4uICB0byBiZQotICAgICAgICAjIG9uIHRoZSBzYWZlIHNpZGUsIHdlJ2xsIHBhcnNlIHRoZSB3aG9sZSB0aGluZyBhZ2Fpbi4uLgotICAgICAgICByZXR1cm4gcGFyc2Uoc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCi0KICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQogCkBAIC04NTIsNyArODgzLDkgQEAKICAgICBsaXRlcmFscyA9IFtdCiAgICAgbGl0ZXJhbCA9IFtdCiAgICAgbGFwcGVuZCA9IGxpdGVyYWwuYXBwZW5kCi0gICAgZGVmIGFkZGdyb3VwKGluZGV4KToKKyAgICBkZWYgYWRkZ3JvdXAoaW5kZXgsIHBvcyk6CisgICAgICAgIGlmIGluZGV4ID4gcGF0dGVybi5ncm91cHM6CisgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCwgcG9zKQogICAgICAgICBpZiBsaXRlcmFsOgogICAgICAgICAgICAgbGl0ZXJhbHMuYXBwZW5kKCcnLmpvaW4obGl0ZXJhbCkpCiAgICAgICAgICAgICBkZWwgbGl0ZXJhbFs6XQpAQCAtODg1LDkgKzkxOCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IE1BWEdST1VQUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQotICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4KQorICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4LCBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICAgICBpZiBzLm5leHQgaW4gT0NURElHSVRTOgogICAgICAgICAgICAgICAgICAgICB0aGlzICs9IHNnZXQoKQpAQCAtOTA4LDcgKzk0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSB0aGlzLCBsZW4odGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihjKSkKICAgICAgICAgICAgICAgICBpZiBub3QgaXNvY3RhbDoKLSAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSkKKyAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSwgbGVuKHRoaXMpIC0gMSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0aGlzID0gY2hyKEVTQ0FQRVNbdGhpc11bMV0pCkBAIC05MzcsNSArOTcwLDUgQEAKICAgICAgICAgZm9yIGluZGV4LCBncm91cCBpbiBncm91cHM6CiAgICAgICAgICAgICBsaXRlcmFsc1tpbmRleF0gPSBnKGdyb3VwKSBvciBlbXB0eQogICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICByYWlzZSBlcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiKQorICAgICAgICByYWlzZSBlcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgpCiAgICAgcmV0dXJuIGVtcHR5LmpvaW4obGl0ZXJhbHMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlMTkxMzkwLi44YWQ0YTMzIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTUyLDYgKzUyLDggQEAKIFBST1RPQ09MX1NTTHYzCiBQUk9UT0NPTF9TU0x2MjMKIFBST1RPQ09MX1RMUworUFJPVE9DT0xfVExTX0NMSUVOVAorUFJPVE9DT0xfVExTX1NFUlZFUgogUFJPVE9DT0xfVExTdjEKIFBST1RPQ09MX1RMU3YxXzEKIFBST1RPQ09MX1RMU3YxXzIKQEAgLTk0LDE3ICs5NiwxNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bSwgSW50RmxhZyBhcyBfSW50RmxhZwogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTywgU1NMU2Vzc2lvbgogZnJvbSBfc3NsIGltcG9ydCAoCiAgICAgU1NMRXJyb3IsIFNTTFplcm9SZXR1cm5FcnJvciwgU1NMV2FudFJlYWRFcnJvciwgU1NMV2FudFdyaXRlRXJyb3IsCiAgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAogZnJvbSBfc3NsIGltcG9ydCB0eHQyb2JqIGFzIF90eHQyb2JqLCBuaWQyb2JqIGFzIF9uaWQyb2JqCiBmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIHRyeToKQEAgLTExMywzMiArMTE0LDQ3IEBACiAgICAgIyBMaWJyZVNTTCBkb2VzIG5vdCBwcm92aWRlIFJBTkRfZWdkCiAgICAgcGFzcwogCi1kZWYgX2ltcG9ydF9zeW1ib2xzKHByZWZpeCk6Ci0gICAgZm9yIG4gaW4gZGlyKF9zc2wpOgotICAgICAgICBpZiBuLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGdsb2JhbHMoKVtuXSA9IGdldGF0dHIoX3NzbCwgbikKLQotX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQotX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQotX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKIGZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCi0KIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorCiBfSW50RW51bS5fY29udmVydCgKLSAgICAgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKLSAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCi0gICAgICAgIHNvdXJjZT1fc3NsKQorICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCisgICAgc291cmNlPV9zc2wpCisKK19JbnRGbGFnLl9jb252ZXJ0KAorICAgICdPcHRpb25zJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnT1BfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdBbGVydERlc2NyaXB0aW9uJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQUxFUlRfREVTQ1JJUFRJT05fJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdTU0xFcnJvck51bWJlcicsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1NTTF9FUlJPUl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ1ZlcmlmeUZsYWdzJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnVkVSSUZZXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnVmVyaWZ5TW9kZScsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ0NFUlRfJyksCisgICAgc291cmNlPV9zc2wpCisKIAogUFJPVE9DT0xfU1NMdjIzID0gX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1RMUwogX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CiAKLXRyeToKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gUFJPVE9DT0xfU1NMdjIKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgX1NTTHYyX0lGX0VYSVNUUyA9IE5vbmUKK19TU0x2Ml9JRl9FWElTVFMgPSBnZXRhdHRyKF9TU0xNZXRob2QsICdQUk9UT0NPTF9TU0x2MicsIE5vbmUpCisKIAogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgZnJvbSBfc3NsIGltcG9ydCBlbnVtX2NlcnRpZmljYXRlcywgZW51bV9jcmxzCkBAIC0zNzcsMTggKzM5MywxOCBAQAogICAgIGRlZiB3cmFwX3NvY2tldChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PWRvX2hhbmRzaGFrZV9vbl9jb25uZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPXN1cHByZXNzX3JhZ2dlZF9lb2ZzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKKyAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmLCBfc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNzbG9iaiA9IHNlbGYuX3dyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqKQorICAgICAgICByZXR1cm4gU1NMT2JqZWN0KHNzbG9iaiwgc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgogICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQpAQCAtNDM0LDYgKzQ1MCwzNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzdG9yZW5hbWUsIHB1cnBvc2UpCiAgICAgICAgIHNlbGYuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gT3B0aW9ucyhzdXBlcigpLm9wdGlvbnMpCisKKyAgICBAb3B0aW9ucy5zZXR0ZXIKKyAgICBkZWYgb3B0aW9ucyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLm9wdGlvbnMuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJpZnlfZmxhZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBWZXJpZnlGbGFncyhzdXBlcigpLnZlcmlmeV9mbGFncykKKworICAgIEB2ZXJpZnlfZmxhZ3Muc2V0dGVyCisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLnZlcmlmeV9mbGFncy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IHN1cGVyKCkudmVyaWZ5X21vZGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFZlcmlmeU1vZGUodmFsdWUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBAdmVyaWZ5X21vZGUuc2V0dGVyCisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X21vZGUuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKwogCiBkZWYgY3JlYXRlX2RlZmF1bHRfY29udGV4dChwdXJwb3NlPVB1cnBvc2UuU0VSVkVSX0FVVEgsICosIGNhZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwYXRoPU5vbmUsIGNhZGF0YT1Ob25lKToKQEAgLTQ0NiwzMiArNDkwLDE2IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChQUk9UT0NPTF9UTFMpCiAKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLQotICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCi0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKLQotICAgICMgZGlzYWJsZSBjb21wcmVzc2lvbiB0byBwcmV2ZW50IENSSU1FIGF0dGFja3MgKE9wZW5TU0wgMS4wKykKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQotCiAgICAgaWYgcHVycG9zZSA9PSBQdXJwb3NlLlNFUlZFUl9BVVRIOgogICAgICAgICAjIHZlcmlmeSBjZXJ0cyBhbmQgaG9zdCBuYW1lIGluIGNsaWVudCBtb2RlCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBDRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgZWxpZiBwdXJwb3NlID09IFB1cnBvc2UuQ0xJRU5UX0FVVEg6Ci0gICAgICAgICMgUHJlZmVyIHRoZSBzZXJ2ZXIncyBjaXBoZXJzIGJ5IGRlZmF1bHQgc28gdGhhdCB3ZSBnZXQgc3Ryb25nZXIKLSAgICAgICAgIyBlbmNyeXB0aW9uCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLCAwKQotCi0gICAgICAgICMgVXNlIHNpbmdsZSB1c2Uga2V5cyBpbiBvcmRlciB0byBpbXByb3ZlIGZvcndhcmQgc2VjcmVjeQotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQotCi0gICAgICAgICMgZGlzYWxsb3cgY2lwaGVycyB3aXRoIGtub3duIHZ1bG5lcmFiaWxpdGllcwogICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTKQogCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRhdGE6CkBAIC00OTcsMTIgKzUyNSwxMCBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCiAKKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKyAgICAjIGJ5IGRlZmF1bHQuCiAgICAgY29udGV4dCA9IFNTTENvbnRleHQocHJvdG9jb2wpCi0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwogCiAgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCkBAIC01NDgsMTAgKzU3NCwxMiBAQAogICAgICAqIFRoZSBgYGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0YGAgYW5kIGBgc3VwcHJlc3NfcmFnZ2VkX2VvZnNgYCBtYWNoaW5lcnkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKICAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKICAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorICAgICAgICBpZiBzZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29udGV4dChzZWxmKToKQEAgLTU2Myw2ICs1OTEsMjAgQEAKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgogICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKQEAgLTY3OSw3ICs3MjEsNyBAQAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCiAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUsIF9zZXNzaW9uPU5vbmUpOgogCiAgICAgICAgIGlmIF9jb250ZXh0OgogICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IF9jb250ZXh0CkBAIC03MTEsMTEgKzc1MywxNiBAQAogICAgICAgICAjIG1peGVkIGluLgogICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fVFlQRSkgIT0gU09DS19TVFJFQU06CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQotICAgICAgICBpZiBzZXJ2ZXJfc2lkZSBhbmQgc2VydmVyX2hvc3RuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBjbGllbnQgbW9kZSIpCisgICAgICAgIGlmIHNlcnZlcl9zaWRlOgorICAgICAgICAgICAgaWYgc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9ob3N0bmFtZSBjYW4gb25seSBiZSBzcGVjaWZpZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgICAgIGlmIF9zZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlc3Npb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQgbW9kZSIpCiAgICAgICAgIGlmIHNlbGYuX2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIG5vdCBzZXJ2ZXJfaG9zdG5hbWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSByZXF1aXJlcyBzZXJ2ZXJfaG9zdG5hbWUiKQorICAgICAgICBzZWxmLl9zZXNzaW9uID0gX3Nlc3Npb24KICAgICAgICAgc2VsZi5zZXJ2ZXJfc2lkZSA9IHNlcnZlcl9zaWRlCiAgICAgICAgIHNlbGYuc2VydmVyX2hvc3RuYW1lID0gc2VydmVyX2hvc3RuYW1lCiAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QgPSBkb19oYW5kc2hha2Vfb25fY29ubmVjdApAQCAtNzUxLDcgKzc5OCw4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLl9zZXNzaW9uKQogICAgICAgICAgICAgICAgIGlmIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjA6CkBAIC03NzIsNiArODIwLDI0IEBACiAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjdHgKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCiAgICAgZGVmIGR1cChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoIkNhbid0IGR1cCgpICVzIGluc3RhbmNlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKQEAgLTg5OCw3ICs5NjQsNiBAQAogICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgYW1vdW50KToKICAgICAgICAgICAgICAgICB2ID0gc2VsZi5zZW5kKGRhdGFbY291bnQ6XSkKICAgICAgICAgICAgICAgICBjb3VudCArPSB2Ci0gICAgICAgICAgICByZXR1cm4gYW1vdW50CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKQEAgLTEwMDUsNyArMTA3MCw4IEBACiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKICAgICAgICAgc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGNvbm5lY3RfZXg6CiAgICAgICAgICAgICAgICAgcmMgPSBzb2NrZXQuY29ubmVjdF9leChzZWxmLCBhZGRyKQpAQCAtMTA2OCw3ICsxMTM0LDYgQEAKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCiAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKLQogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCiAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwgY2FfY2VydHM9Y2FfY2VydHMsCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDRmNWMxYzEuLjMwZmU1NWMgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xLDIwICsxLDMgQEAKLSMjICBNb2R1bGUgc3RhdGlzdGljcy5weQotIyMKLSMjICBDb3B5cmlnaHQgKGMpIDIwMTMgU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4uCi0jIwotIyMgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotIyMgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMjICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMjCi0jIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jIwotIyMgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMjICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyMgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMjICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotCiAiIiIKIEJhc2ljIHN0YXRpc3RpY3MgbW9kdWxlLgogCkBAIC0yOCw2ICsxMSw3IEBACiBGdW5jdGlvbiAgICAgICAgICAgIERlc2NyaXB0aW9uCiA9PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogbWVhbiAgICAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKGF2ZXJhZ2UpIG9mIGRhdGEuCitoYXJtb25pY19tZWFuICAgICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIG1lZGlhbiAgICAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiBtZWRpYW5fbG93ICAgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KIG1lZGlhbl9oaWdoICAgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTk1LDE2ICs3OSwxOCBAQAogX19hbGxfXyA9IFsgJ1N0YXRpc3RpY3NFcnJvcicsCiAgICAgICAgICAgICAncHN0ZGV2JywgJ3B2YXJpYW5jZScsICdzdGRldicsICd2YXJpYW5jZScsCiAgICAgICAgICAgICAnbWVkaWFuJywgICdtZWRpYW5fbG93JywgJ21lZGlhbl9oaWdoJywgJ21lZGlhbl9ncm91cGVkJywKLSAgICAgICAgICAgICdtZWFuJywgJ21vZGUnLAorICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsICdoYXJtb25pY19tZWFuJywKICAgICAgICAgICBdCiAKLQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IG1hdGgKK2ltcG9ydCBudW1iZXJzCiAKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieQorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnksIGNoYWluCitmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X2xlZnQsIGJpc2VjdF9yaWdodAogCiAKIApAQCAtMTM0LDcgKzEyMCw4IEBACiAKICAgICBTb21lIHNvdXJjZXMgb2Ygcm91bmQtb2ZmIGVycm9yIHdpbGwgYmUgYXZvaWRlZDoKIAotICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKSAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KKyAgICA+Pj4gX3N1bShbMWU1MCwgMSwgLTFlNTBdICogMTAwMCkKICAgICAoPGNsYXNzICdmbG9hdCc+LCBGcmFjdGlvbigxMDAwLCAxKSwgMzAwMCkKIAogICAgIEZyYWN0aW9ucyBhbmQgRGVjaW1hbHMgYXJlIGFsc28gc3VwcG9ydGVkOgpAQCAtMjIzLDU2ICsyMTAsMjYgQEAKICAgICAgICAgIyBPcHRpbWlzZSB0aGUgY29tbW9uIGNhc2Ugb2YgZmxvYXRzLiBXZSBleHBlY3QgdGhhdCB0aGUgbW9zdCBvZnRlbgogICAgICAgICAjIHVzZWQgbnVtZXJpYyB0eXBlIHdpbGwgYmUgYnVpbHRpbiBmbG9hdHMsIHNvIHRyeSB0byBtYWtlIHRoaXMgYXMKICAgICAgICAgIyBmYXN0IGFzIHBvc3NpYmxlLgotICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0OgorICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0IG9yIHR5cGUoeCkgaXMgRGVjaW1hbDoKICAgICAgICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHggbWF5IGJlIGFuIGludCwgRnJhY3Rpb24sIG9yIEludGVncmFsIEFCQy4KICAgICAgICAgICAgIHJldHVybiAoeC5udW1lcmF0b3IsIHguZGVub21pbmF0b3IpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgc3ViY2xhc3MuCisgICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIGZsb2F0IG9yIERlY2ltYWwgc3ViY2xhc3MuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgRGVjaW1hbC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNpbWFsX3RvX3JhdGlvKHgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIEp1c3QgZ2l2ZSB1cD8KLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPworICAgICAgICAgICAgICAgIHBhc3MKICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAjIGZsb2F0IE5BTiBvciBJTkYuCi0gICAgICAgIGFzc2VydCBub3QgbWF0aC5pc2Zpbml0ZSh4KQorICAgICAgICBhc3NlcnQgbm90IF9pc2Zpbml0ZSh4KQogICAgICAgICByZXR1cm4gKHgsIE5vbmUpCiAgICAgbXNnID0gImNhbid0IGNvbnZlcnQgdHlwZSAne30nIHRvIG51bWVyYXRvci9kZW5vbWluYXRvciIKICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdCh0eXBlKHgpLl9fbmFtZV9fKSkKIAogCi0jIEZJWE1FIFRoaXMgaXMgZmFzdGVyIHRoYW4gRnJhY3Rpb24uZnJvbV9kZWNpbWFsLCBidXQgc3RpbGwgdG9vIHNsb3cuCi1kZWYgX2RlY2ltYWxfdG9fcmF0aW8oZCk6Ci0gICAgIiIiQ29udmVydCBEZWNpbWFsIGQgdG8gZXhhY3QgaW50ZWdlciByYXRpbyAobnVtZXJhdG9yLCBkZW5vbWluYXRvcikuCi0KLSAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi0gICAgPj4+IF9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjIuNiIpKQotICAgICgyNiwgMTApCi0KLSAgICAiIiIKLSAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGQuYXNfdHVwbGUoKQotICAgIGlmIGV4cCBpbiAoJ0YnLCAnbicsICdOJyk6ICAjIElORiwgTkFOLCBzTkFOCi0gICAgICAgIGFzc2VydCBub3QgZC5pc19maW5pdGUoKQotICAgICAgICByZXR1cm4gKGQsIE5vbmUpCi0gICAgbnVtID0gMAotICAgIGZvciBkaWdpdCBpbiBkaWdpdHM6Ci0gICAgICAgIG51bSA9IG51bSoxMCArIGRpZ2l0Ci0gICAgaWYgZXhwIDwgMDoKLSAgICAgICAgZGVuID0gMTAqKi1leHAKLSAgICBlbHNlOgotICAgICAgICBudW0gKj0gMTAqKmV4cAotICAgICAgICBkZW4gPSAxCi0gICAgaWYgc2lnbjoKLSAgICAgICAgbnVtID0gLW51bQotICAgIHJldHVybiAobnVtLCBkZW4pCi0KLQogZGVmIF9jb252ZXJ0KHZhbHVlLCBUKToKICAgICAiIiJDb252ZXJ0IHZhbHVlIHRvIGdpdmVuIG51bWVyaWMgdHlwZSBULiIiIgogICAgIGlmIHR5cGUodmFsdWUpIGlzIFQ6CkBAIC0zMDUsNiArMjYyLDMwIEBACiAgICAgcmV0dXJuIHRhYmxlCiAKIAorZGVmIF9maW5kX2x0ZXEoYSwgeCk6CisgICAgJ0xvY2F0ZSB0aGUgbGVmdG1vc3QgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB4JworICAgIGkgPSBiaXNlY3RfbGVmdChhLCB4KQorICAgIGlmIGkgIT0gbGVuKGEpIGFuZCBhW2ldID09IHg6CisgICAgICAgIHJldHVybiBpCisgICAgcmFpc2UgVmFsdWVFcnJvcgorCisKK2RlZiBfZmluZF9ydGVxKGEsIGwsIHgpOgorICAgICdMb2NhdGUgdGhlIHJpZ2h0bW9zdCB2YWx1ZSBleGFjdGx5IGVxdWFsIHRvIHgnCisgICAgaSA9IGJpc2VjdF9yaWdodChhLCB4LCBsbz1sKQorICAgIGlmIGkgIT0gKGxlbihhKSsxKSBhbmQgYVtpLTFdID09IHg6CisgICAgICAgIHJldHVybiBpLTEKKyAgICByYWlzZSBWYWx1ZUVycm9yCisKKworZGVmIF9mYWlsX25lZyh2YWx1ZXMsIGVycm1zZz0nbmVnYXRpdmUgdmFsdWUnKToKKyAgICAiIiJJdGVyYXRlIG92ZXIgdmFsdWVzLCBmYWlsaW5nIGlmIGFueSBhcmUgbGVzcyB0aGFuIHplcm8uIiIiCisgICAgZm9yIHggaW4gdmFsdWVzOgorICAgICAgICBpZiB4IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgIHlpZWxkIHgKKworCiAjID09PSBNZWFzdXJlcyBvZiBjZW50cmFsIHRlbmRlbmN5IChhdmVyYWdlcykgPT09CiAKIGRlZiBtZWFuKGRhdGEpOgpAQCAtMzMzLDYgKzMxNCw1MiBAQAogICAgIHJldHVybiBfY29udmVydCh0b3RhbC9uLCBUKQogCiAKK2RlZiBoYXJtb25pY19tZWFuKGRhdGEpOgorICAgICIiIlJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiBkYXRhLgorCisgICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgbWVhbiBvZiB0aGUgcmVjaXByb2NhbHMgb2YgdGhlIGRhdGEsCisgICAgYW5kIGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMgd2hpY2ggYXJlIHJhdGVzCisgICAgb3IgcmF0aW9zLCBmb3IgZXhhbXBsZSBzcGVlZHMuIEV4YW1wbGU6CisKKyAgICBTdXBwb3NlIGFuIGludmVzdG9yIHB1cmNoYXNlcyBhbiBlcXVhbCB2YWx1ZSBvZiBzaGFyZXMgaW4gZWFjaCBvZgorICAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAzLjYKKworICAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgIGlzIHRvbyBoaWdoLgorCisgICAgSWYgYGBkYXRhYGAgaXMgZW1wdHksIG9yIGFueSBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLAorICAgIGBgaGFybW9uaWNfbWVhbmBgIHdpbGwgcmFpc2UgYGBTdGF0aXN0aWNzRXJyb3JgYC4KKyAgICAiIiIKKyAgICAjIEZvciBhIGp1c3RpZmljYXRpb24gZm9yIHVzaW5nIGhhcm1vbmljIG1lYW4gZm9yIFAvRSByYXRpb3MsIHNlZQorICAgICMgaHR0cDovL2ZpeHRoZXBpdGNoLnBlbGx1Y2lkLmNvbS9jb21wcy1hbmFseXNpcy10aGUtbWlzc2luZy1oYXJtb255LW9mLXN1bW1hcnktc3RhdGlzdGljcy8KKyAgICAjIGh0dHA6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTI2MjEwODcKKyAgICBpZiBpdGVyKGRhdGEpIGlzIGRhdGE6CisgICAgICAgIGRhdGEgPSBsaXN0KGRhdGEpCisgICAgZXJybXNnID0gJ2hhcm1vbmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCisgICAgbiA9IGxlbihkYXRhKQorICAgIGlmIG4gPCAxOgorICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2hhcm1vbmljX21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQorICAgIGVsaWYgbiA9PSAxOgorICAgICAgICB4ID0gZGF0YVswXQorICAgICAgICBpZiBpc2luc3RhbmNlKHgsIChudW1iZXJzLlJlYWwsIERlY2ltYWwpKToKKyAgICAgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlJykKKyAgICB0cnk6CisgICAgICAgIFQsIHRvdGFsLCBjb3VudCA9IF9zdW0oMS94IGZvciB4IGluIF9mYWlsX25lZyhkYXRhLCBlcnJtc2cpKQorICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBhc3NlcnQgY291bnQgPT0gbgorICAgIHJldHVybiBfY29udmVydChuL3RvdGFsLCBUKQorCisKICMgRklYTUU6IGludmVzdGlnYXRlIHdheXMgdG8gY2FsY3VsYXRlIG1lZGlhbnMgd2l0aG91dCBzb3J0aW5nPyBRdWlja3NlbGVjdD8KIGRlZiBtZWRpYW4oZGF0YSk6CiAgICAgIiIiUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLgpAQCAtNDQyLDkgKzQ2OSwxNSBAQAogICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICMgTWl4ZWQgdHlwZS4gRm9yIG5vdyB3ZSBqdXN0IGNvZXJjZSB0byBmbG9hdC4KICAgICAgICAgTCA9IGZsb2F0KHgpIC0gZmxvYXQoaW50ZXJ2YWwpLzIKLSAgICBjZiA9IGRhdGEuaW5kZXgoeCkgICMgTnVtYmVyIG9mIHZhbHVlcyBiZWxvdyB0aGUgbWVkaWFuIGludGVydmFsLgotICAgICMgRklYTUUgVGhlIGZvbGxvd2luZyBsaW5lIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGZvciBiaWcgbGlzdHMuCi0gICAgZiA9IGRhdGEuY291bnQoeCkgICMgTnVtYmVyIG9mIGRhdGEgcG9pbnRzIGluIHRoZSBtZWRpYW4gaW50ZXJ2YWwuCisKKyAgICAjIFVzZXMgYmlzZWN0aW9uIHNlYXJjaCB0byBzZWFyY2ggZm9yIHggaW4gZGF0YSB3aXRoIGxvZyhuKSB0aW1lIGNvbXBsZXhpdHkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGxlZnRtb3N0IG9jY3VycmVuY2Ugb2YgeCBpbiBkYXRhCisgICAgbDEgPSBfZmluZF9sdGVxKGRhdGEsIHgpCisgICAgIyBGaW5kIHRoZSBwb3NpdGlvbiBvZiByaWdodG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGFbbDEuLi5sZW4oZGF0YSldCisgICAgIyBBc3N1bWluZyBhbHdheXMgbDEgPD0gbDIKKyAgICBsMiA9IF9maW5kX3J0ZXEoZGF0YSwgbDEsIHgpCisgICAgY2YgPSBsMQorICAgIGYgPSBsMiAtIGwxICsgMQogICAgIHJldHVybiBMICsgaW50ZXJ2YWwqKG4vMiAtIGNmKS9mCiAKIApkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggODkyODdjNC4uYzkwMjAwNyAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC0yOCw3ICsyOCw3IEBACiBkaWdpdHMgPSAnMDEyMzQ1Njc4OScKIGhleGRpZ2l0cyA9IGRpZ2l0cyArICdhYmNkZWYnICsgJ0FCQ0RFRicKIG9jdGRpZ2l0cyA9ICcwMTIzNDU2NycKLXB1bmN0dWF0aW9uID0gIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKK3B1bmN0dWF0aW9uID0gciIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCiBwcmludGFibGUgPSBkaWdpdHMgKyBhc2NpaV9sZXR0ZXJzICsgcHVuY3R1YXRpb24gKyB3aGl0ZXNwYWNlCiAKICMgRnVuY3Rpb25zIHdoaWNoIGFyZW4ndCBhdmFpbGFibGUgYXMgc3RyaW5nIG1ldGhvZHMuCkBAIC0xMTYsMTAgKzExNiw3IEBACiAgICAgICAgICAgICAjIENoZWNrIHRoZSBtb3N0IGNvbW1vbiBwYXRoIGZpcnN0LgogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHZhbCA9IG1hcHBpbmdbbmFtZWRdCi0gICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsCi0gICAgICAgICAgICAgICAgIyBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICAgICAgICAgICAgICByZXR1cm4gJyVzJyAlICh2YWwsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIobWFwcGluZ1tuYW1lZF0pCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlbGltaXRlcgogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2ludmFsaWQnKSBpcyBub3QgTm9uZToKQEAgLTE0Niw5ICsxNDMsNyBAQAogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlcgotICAgICAgICAgICAgICAgICAgICAjIHdpbGwgZmFpbCBpZiB2YWwgaXMgYSBVbmljb2RlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKG1hcHBpbmdbbmFtZWRdLCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtby5ncm91cCgpCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCA1MDJlMjZiLi4xM2I5ZDQ0IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtNzEsNyArNzEsMTYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGFuZCBzZWxmLnJldHVybmNvZGUgPCAwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCAlci4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIHNpZ25hbC5TaWduYWxzKC1zZWxmLnJldHVybmNvZGUpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgZGllZCB3aXRoIHVua25vd24gc2lnbmFsICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgLXNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgc3Rkb3V0KHNlbGYpOgpAQCAtMTYxLDcgKzE3MCw4IEBACiAgICAgX19hbGxfXy5leHRlbmQoWyJDUkVBVEVfTkVXX0NPTlNPTEUiLCAiQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9JTlBVVF9IQU5ETEUiLCAiU1REX09VVFBVVF9IQU5ETEUiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0VSUk9SX0hBTkRMRSIsICJTV19ISURFIiwKLSAgICAgICAgICAgICAgICAgICAgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgIlNUQVJURl9VU0VTSE9XV0lORE9XIl0pCisgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyIsCisgICAgICAgICAgICAgICAgICAgICJTVEFSVFVQSU5GTyJdKQogCiAgICAgY2xhc3MgSGFuZGxlKGludCk6CiAgICAgICAgIGNsb3NlZCA9IEZhbHNlCkBAIC0yMTAsNiArMjIwLDE2IEBACiAjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAogIyB0aHJlYWRzLgogCitkZWYgX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIG9wdGltaXphdGlvbiBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgYXJncyA9IFtdCisgICAgdmFsdWUgPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICBpZiB2YWx1ZSA+IDA6CisgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArICdPJyAqIHZhbHVlKQorICAgIHJldHVybiBhcmdzCisKKwogZGVmIF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKICAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKQEAgLTIxNyw3ICsyMzcsNiBAQAogICAgICAgICAnZGVidWcnOiAnZCcsCiAgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCiAgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAotICAgICAgICAnb3B0aW1pemUnOiAnTycsCiAgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAogICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAogICAgICAgICAnbm9fc2l0ZSc6ICdTJywKQEAgLTIyNSw4ICsyNDQsOSBAQAogICAgICAgICAndmVyYm9zZSc6ICd2JywKICAgICAgICAgJ2J5dGVzX3dhcm5pbmcnOiAnYicsCiAgICAgICAgICdxdWlldCc6ICdxJywKKyAgICAgICAgIyAtTyBpcyBoYW5kbGVkIGluIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIH0KLSAgICBhcmdzID0gW10KKyAgICBhcmdzID0gX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKICAgICAgICAgdiA9IGdldGF0dHIoc3lzLmZsYWdzLCBmbGFnKQogICAgICAgICBpZiB2ID4gMDoKQEAgLTQ3Niw4ICs0OTYsOCBAQAogICAgICIiIiAgICBSZXR1cm4gKHN0YXR1cywgb3V0cHV0KSBvZiBleGVjdXRpbmcgY21kIGluIGEgc2hlbGwuCiAKICAgICBFeGVjdXRlIHRoZSBzdHJpbmcgJ2NtZCcgaW4gYSBzaGVsbCB3aXRoICdjaGVja19vdXRwdXQnIGFuZAotICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZCwKLSAgICBtZWFuaW5nIHRoYXQgdGhlIHJlc3VsdCB3aXRoIGJlIGRlY29kZWQgdG8gYSBzdHJpbmcuCisgICAgcmV0dXJuIGEgMi10dXBsZSAoc3RhdHVzLCBvdXRwdXQpLiBUaGUgbG9jYWxlIGVuY29kaW5nIGlzIHVzZWQKKyAgICB0byBkZWNvZGUgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyBuZXdsaW5lcy4KIAogICAgIEEgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBvdXRwdXQuCiAgICAgVGhlIGV4aXQgc3RhdHVzIGZvciB0aGUgY29tbWFuZCBjYW4gYmUgaW50ZXJwcmV0ZWQKQEAgLTU1NSw2ICs1NzUsOSBAQAogCiAgICAgICBwYXNzX2ZkcyAoUE9TSVggb25seSkKIAorICAgICAgZW5jb2RpbmcgYW5kIGVycm9yczogVGV4dCBtb2RlIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGluZyB0byB1c2UgZm9yCisgICAgICAgICAgZmlsZSBvYmplY3RzIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyci4KKwogICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgcGlkLCByZXR1cm5jb2RlCiAgICAgIiIiCkBAIC01NjYsNyArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSwgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgbmV3IFBvcGVuIGluc3RhbmNlLiIiIgogICAgICAgICBfY2xlYW51cCgpCiAgICAgICAgICMgSGVsZCB3aGlsZSBhbnl0aGluZyBpcyBjYWxsaW5nIHdhaXRwaWQgYmVmb3JlIHJldHVybmNvZGUgaGFzIGJlZW4KQEAgLTYxOSw2ICs2NDIsOCBAQAogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQogICAgICAgICBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9uZXdsaW5lcworICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKIAogICAgICAgICAjIElucHV0IGFuZCBvdXRwdXQgb2JqZWN0cy4gVGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIGxpa2UKICAgICAgICAgIyB0aGlzOgpAQCAtNjUxLDIyICs2NzYsMjggQEAKICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgZXJycmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShlcnJyZWFkLkRldGFjaCgpLCAwKQogCi0gICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpKQotICAgICAgICBpZiBjMnByZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3Rkb3V0KQotICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyKQorICAgICAgICB0ZXh0X21vZGUgPSBlbmNvZGluZyBvciBlcnJvcnMgb3IgdW5pdmVyc2FsX25ld2xpbmVzCiAKICAgICAgICAgc2VsZi5fY2xvc2VkX2NoaWxkX3BpcGVfZmRzID0gRmFsc2UKKwogICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz0oYnVmc2l6ZSA9PSAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorCiAgICAgICAgICAgICBzZWxmLl9leGVjdXRlX2NoaWxkKGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC03MDAsOSArNzMxLDggQEAKIAogICAgICAgICAgICAgcmFpc2UKIAotCi0gICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcpOgotICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcpCisgICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcsIGVycm9ycyk6CisgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikucmVwbGFjZSgiXHIiLCAiXG4iKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTcyMCwxMCArNzUwLDE1IEBACiAgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIHRlcm1pbmF0ZSwgdG8gYXZvaWQgem9tYmllcy4KICAgICAgICAgICAgIHNlbGYud2FpdCgpCiAKLSAgICBkZWYgX19kZWxfXyhzZWxmLCBfbWF4c2l6ZT1zeXMubWF4c2l6ZSk6CisgICAgZGVmIF9fZGVsX18oc2VsZiwgX21heHNpemU9c3lzLm1heHNpemUsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2hpbGRfY3JlYXRlZDoKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIGEgY2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICMgTm90IHJlYWRpbmcgc3VicHJvY2VzcyBleGl0IHN0YXR1cyBjcmVhdGVzIGEgem9tYmkgcHJvY2VzcyB3aGljaAorICAgICAgICAgICAgIyBpcyBvbmx5IGRlc3Ryb3llZCBhdCB0aGUgcGFyZW50IHB5dGhvbiBwcm9jZXNzIGV4aXQKKyAgICAgICAgICAgIF93YXJuKCJzdWJwcm9jZXNzICVzIGlzIHN0aWxsIHJ1bm5pbmciICUgc2VsZi5waWQsCisgICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICAjIEluIGNhc2UgdGhlIGNoaWxkIGhhc24ndCBiZWVuIHdhaXRlZCBvbiwgY2hlY2sgaWYgaXQncyBkb25lLgogICAgICAgICBzZWxmLl9pbnRlcm5hbF9wb2xsKF9kZWFkc3RhdGU9X21heHNpemUpCiAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lIGFuZCBfYWN0aXZlIGlzIG5vdCBOb25lOgpAQCAtOTk2LDYgKzEwMzEsMTAgQEAKICAgICAgICAgICAgICIiIldhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuIiIiCiAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICInZW5kdGltZScgYXJndW1lbnQgaXMgZGVwcmVjYXRlZDsgdXNlICd0aW1lb3V0Jy4iLAorICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcyA9IF93aW5hcGkuSU5GSU5JVEUKQEAgLTEyNTEsOSArMTI5MCwxNCBAQAogCiAgICAgICAgICAgICBpZiBlcnJwaXBlX2RhdGE6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IG9zLndhaXRwaWQoc2VsZi5waWQsIDApCisgICAgICAgICAgICAgICAgICAgIGlmIHBpZCA9PSBzZWxmLnBpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHN5cy5tYXhzaXplCiAgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9uYW1lLCBoZXhfZXJybm8sIGVycl9tc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhLnNwbGl0KGInOicsIDIpKQpAQCAtMTM1Miw4ICsxMzk2LDExIEBACiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCi0gICAgICAgICAgICAjIGVuZHRpbWUgaXMgcHJlZmVycmVkIHRvIHRpbWVvdXQuICB0aW1lb3V0IGlzIG9ubHkgdXNlZCBmb3IKLSAgICAgICAgICAgICMgcHJpbnRpbmcuCisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICInZW5kdGltZScgYXJndW1lbnQgaXMgZGVwcmVjYXRlZDsgdXNlICd0aW1lb3V0Jy4iLAorICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmUgb3IgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dApAQCAtMTQ3OSwxMyArMTUyNiwxNSBAQAogCiAgICAgICAgICAgICAjIFRyYW5zbGF0ZSBuZXdsaW5lcywgaWYgcmVxdWVzdGVkLgogICAgICAgICAgICAgIyBUaGlzIGFsc28gdHVybnMgYnl0ZXMgaW50byBzdHJpbmdzLgotICAgICAgICAgICAgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXM6CisgICAgICAgICAgICBpZiBzZWxmLmVuY29kaW5nIG9yIHNlbGYuZXJyb3JzIG9yIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgogICAgICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVuY29kaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lcnJvcnMpCiAgICAgICAgICAgICAgICAgaWYgc3RkZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVycm9ycykKIAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIApAQCAtMTQ5Nyw4ICsxNTQ2LDEwIEBACiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBzZWxmLl9pbnB1dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCA9IDAKICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IGlucHV0Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgYW5kIGlucHV0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuX2lucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQorICAgICAgICAgICAgICAgIGlmIGlucHV0IGlzIG5vdCBOb25lIGFuZCAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5jb2Rpbmcgb3Igc2VsZi5lcnJvcnMgb3Igc2VsZi51bml2ZXJzYWxfbmV3bGluZXMpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuX2lucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmVycm9ycykKIAogCiAgICAgICAgIGRlZiBzZW5kX3NpZ25hbChzZWxmLCBzaWcpOgpkaWZmIC0tZ2l0IGEvTGliL3N5bWJvbC5weSBiL0xpYi9zeW1ib2wucHkKaW5kZXggNzU0MTQ5Ny4uZDlmMDFlMCAxMDA3NTUKLS0tIGEvTGliL3N5bWJvbC5weQorKysgYi9MaWIvc3ltYm9sLnB5CkBAIC0yNyw3NCArMjcsNzUgQEAKIHNpbXBsZV9zdG10ID0gMjcwCiBzbWFsbF9zdG10ID0gMjcxCiBleHByX3N0bXQgPSAyNzIKLXRlc3RsaXN0X3N0YXJfZXhwciA9IDI3MwotYXVnYXNzaWduID0gMjc0Ci1kZWxfc3RtdCA9IDI3NQotcGFzc19zdG10ID0gMjc2Ci1mbG93X3N0bXQgPSAyNzcKLWJyZWFrX3N0bXQgPSAyNzgKLWNvbnRpbnVlX3N0bXQgPSAyNzkKLXJldHVybl9zdG10ID0gMjgwCi15aWVsZF9zdG10ID0gMjgxCi1yYWlzZV9zdG10ID0gMjgyCi1pbXBvcnRfc3RtdCA9IDI4MwotaW1wb3J0X25hbWUgPSAyODQKLWltcG9ydF9mcm9tID0gMjg1Ci1pbXBvcnRfYXNfbmFtZSA9IDI4NgotZG90dGVkX2FzX25hbWUgPSAyODcKLWltcG9ydF9hc19uYW1lcyA9IDI4OAotZG90dGVkX2FzX25hbWVzID0gMjg5Ci1kb3R0ZWRfbmFtZSA9IDI5MAotZ2xvYmFsX3N0bXQgPSAyOTEKLW5vbmxvY2FsX3N0bXQgPSAyOTIKLWFzc2VydF9zdG10ID0gMjkzCi1jb21wb3VuZF9zdG10ID0gMjk0Ci1hc3luY19zdG10ID0gMjk1Ci1pZl9zdG10ID0gMjk2Ci13aGlsZV9zdG10ID0gMjk3Ci1mb3Jfc3RtdCA9IDI5OAotdHJ5X3N0bXQgPSAyOTkKLXdpdGhfc3RtdCA9IDMwMAotd2l0aF9pdGVtID0gMzAxCi1leGNlcHRfY2xhdXNlID0gMzAyCi1zdWl0ZSA9IDMwMwotdGVzdCA9IDMwNAotdGVzdF9ub2NvbmQgPSAzMDUKLWxhbWJkZWYgPSAzMDYKLWxhbWJkZWZfbm9jb25kID0gMzA3Ci1vcl90ZXN0ID0gMzA4Ci1hbmRfdGVzdCA9IDMwOQotbm90X3Rlc3QgPSAzMTAKLWNvbXBhcmlzb24gPSAzMTEKLWNvbXBfb3AgPSAzMTIKLXN0YXJfZXhwciA9IDMxMwotZXhwciA9IDMxNAoteG9yX2V4cHIgPSAzMTUKLWFuZF9leHByID0gMzE2Ci1zaGlmdF9leHByID0gMzE3Ci1hcml0aF9leHByID0gMzE4Ci10ZXJtID0gMzE5Ci1mYWN0b3IgPSAzMjAKLXBvd2VyID0gMzIxCi1hdG9tX2V4cHIgPSAzMjIKLWF0b20gPSAzMjMKLXRlc3RsaXN0X2NvbXAgPSAzMjQKLXRyYWlsZXIgPSAzMjUKLXN1YnNjcmlwdGxpc3QgPSAzMjYKLXN1YnNjcmlwdCA9IDMyNwotc2xpY2VvcCA9IDMyOAotZXhwcmxpc3QgPSAzMjkKLXRlc3RsaXN0ID0gMzMwCi1kaWN0b3JzZXRtYWtlciA9IDMzMQotY2xhc3NkZWYgPSAzMzIKLWFyZ2xpc3QgPSAzMzMKLWFyZ3VtZW50ID0gMzM0Ci1jb21wX2l0ZXIgPSAzMzUKLWNvbXBfZm9yID0gMzM2Ci1jb21wX2lmID0gMzM3Ci1lbmNvZGluZ19kZWNsID0gMzM4Ci15aWVsZF9leHByID0gMzM5Ci15aWVsZF9hcmcgPSAzNDAKK2FubmFzc2lnbiA9IDI3MwordGVzdGxpc3Rfc3Rhcl9leHByID0gMjc0CithdWdhc3NpZ24gPSAyNzUKK2RlbF9zdG10ID0gMjc2CitwYXNzX3N0bXQgPSAyNzcKK2Zsb3dfc3RtdCA9IDI3OAorYnJlYWtfc3RtdCA9IDI3OQorY29udGludWVfc3RtdCA9IDI4MAorcmV0dXJuX3N0bXQgPSAyODEKK3lpZWxkX3N0bXQgPSAyODIKK3JhaXNlX3N0bXQgPSAyODMKK2ltcG9ydF9zdG10ID0gMjg0CitpbXBvcnRfbmFtZSA9IDI4NQoraW1wb3J0X2Zyb20gPSAyODYKK2ltcG9ydF9hc19uYW1lID0gMjg3Citkb3R0ZWRfYXNfbmFtZSA9IDI4OAoraW1wb3J0X2FzX25hbWVzID0gMjg5Citkb3R0ZWRfYXNfbmFtZXMgPSAyOTAKK2RvdHRlZF9uYW1lID0gMjkxCitnbG9iYWxfc3RtdCA9IDI5Mgorbm9ubG9jYWxfc3RtdCA9IDI5MworYXNzZXJ0X3N0bXQgPSAyOTQKK2NvbXBvdW5kX3N0bXQgPSAyOTUKK2FzeW5jX3N0bXQgPSAyOTYKK2lmX3N0bXQgPSAyOTcKK3doaWxlX3N0bXQgPSAyOTgKK2Zvcl9zdG10ID0gMjk5Cit0cnlfc3RtdCA9IDMwMAord2l0aF9zdG10ID0gMzAxCit3aXRoX2l0ZW0gPSAzMDIKK2V4Y2VwdF9jbGF1c2UgPSAzMDMKK3N1aXRlID0gMzA0Cit0ZXN0ID0gMzA1Cit0ZXN0X25vY29uZCA9IDMwNgorbGFtYmRlZiA9IDMwNworbGFtYmRlZl9ub2NvbmQgPSAzMDgKK29yX3Rlc3QgPSAzMDkKK2FuZF90ZXN0ID0gMzEwCitub3RfdGVzdCA9IDMxMQorY29tcGFyaXNvbiA9IDMxMgorY29tcF9vcCA9IDMxMworc3Rhcl9leHByID0gMzE0CitleHByID0gMzE1Cit4b3JfZXhwciA9IDMxNgorYW5kX2V4cHIgPSAzMTcKK3NoaWZ0X2V4cHIgPSAzMTgKK2FyaXRoX2V4cHIgPSAzMTkKK3Rlcm0gPSAzMjAKK2ZhY3RvciA9IDMyMQorcG93ZXIgPSAzMjIKK2F0b21fZXhwciA9IDMyMworYXRvbSA9IDMyNAordGVzdGxpc3RfY29tcCA9IDMyNQordHJhaWxlciA9IDMyNgorc3Vic2NyaXB0bGlzdCA9IDMyNworc3Vic2NyaXB0ID0gMzI4CitzbGljZW9wID0gMzI5CitleHBybGlzdCA9IDMzMAordGVzdGxpc3QgPSAzMzEKK2RpY3RvcnNldG1ha2VyID0gMzMyCitjbGFzc2RlZiA9IDMzMworYXJnbGlzdCA9IDMzNAorYXJndW1lbnQgPSAzMzUKK2NvbXBfaXRlciA9IDMzNgorY29tcF9mb3IgPSAzMzcKK2NvbXBfaWYgPSAzMzgKK2VuY29kaW5nX2RlY2wgPSAzMzkKK3lpZWxkX2V4cHIgPSAzNDAKK3lpZWxkX2FyZyA9IDM0MQogIy0tZW5kIGNvbnN0YW50cy0tCiAKIHN5bV9uYW1lID0ge30KZGlmZiAtLWdpdCBhL0xpYi9zeW10YWJsZS5weSBiL0xpYi9zeW10YWJsZS5weQppbmRleCA4NGZlYzRhLi5iMGU1MjYwIDEwMDY0NAotLS0gYS9MaWIvc3ltdGFibGUucHkKKysrIGIvTGliL3N5bXRhYmxlLnB5CkBAIC0yLDcgKzIsNyBAQAogCiBpbXBvcnQgX3N5bXRhYmxlCiBmcm9tIF9zeW10YWJsZSBpbXBvcnQgKFVTRSwgREVGX0dMT0JBTCwgREVGX0xPQ0FMLCBERUZfUEFSQU0sCi0gICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgU0NPUEVfT0ZGLCBTQ09QRV9NQVNLLCBGUkVFLAorICAgICBERUZfSU1QT1JULCBERUZfQk9VTkQsIERFRl9BTk5PVCwgU0NPUEVfT0ZGLCBTQ09QRV9NQVNLLCBGUkVFLAogICAgICBMT0NBTCwgR0xPQkFMX0lNUExJQ0lULCBHTE9CQUxfRVhQTElDSVQsIENFTEwpCiAKIGltcG9ydCB3ZWFrcmVmCkBAIC0xOTAsNiArMTkwLDkgQEAKICAgICBkZWYgaXNfbG9jYWwoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX19mbGFncyAmIERFRl9CT1VORCkKIAorICAgIGRlZiBpc19hbm5vdGF0ZWQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX19mbGFncyAmIERFRl9BTk5PVCkKKwogICAgIGRlZiBpc19mcmVlKHNlbGYpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fc2NvcGUgPT0gRlJFRSkKIApkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggOWMzNGJlMC4uOTMxNGU3MSAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC04Niw4ICs4Niw4IEBACiAgIyBGSVhNRSBkb24ndCByZWx5IG9uIHN5cy52ZXJzaW9uIGhlcmUsIGl0cyBmb3JtYXQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsCiAgIyBvZiBDUHl0aG9uLCB1c2Ugc3lzLnZlcnNpb25faW5mbyBvciBzeXMuaGV4dmVyc2lvbgogX1BZX1ZFUlNJT04gPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCi1fUFlfVkVSU0lPTl9TSE9SVCA9IHN5cy52ZXJzaW9uWzozXQotX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorX1BZX1ZFUlNJT05fU0hPUlQgPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KK19QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9ICclZCVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiBfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQogX0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCiBfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogICAgICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgogICAgIGltcG9ydCByZQotICAgIF92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUoIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQorICAgIF92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUociIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKICAgICBfZmluZHZhcjFfcnggPSByZS5jb21waWxlKHIiXCRcKChbQS1aYS16XVtBLVphLXowLTlfXSopXCkiKQogICAgIF9maW5kdmFyMl9yeCA9IHJlLmNvbXBpbGUociJcJHsoW0EtWmEtel1bQS1aYS16MC05X10qKX0iKQogCkBAIC0zMzcsOCArMzM3LDIwIEBACiAgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWctJXMlcycgJSAoX1BZX1ZFUlNJT05fU0hPUlQsIHN5cy5hYmlmbGFncykKICAgICBlbHNlOgogICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnJworICAgIGlmIGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcpOgorICAgICAgICBjb25maWdfZGlyX25hbWUgKz0gJy0lcycgJSBzeXMuaW1wbGVtZW50YXRpb24uX211bHRpYXJjaAogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLCBjb25maWdfZGlyX25hbWUsICdNYWtlZmlsZScpCiAKKworZGVmIF9nZXRfc3lzY29uZmlnZGF0YV9uYW1lKCk6CisgICAgcmV0dXJuIG9zLmVudmlyb24uZ2V0KCdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRScsCisgICAgICAgICdfc3lzY29uZmlnZGF0YV97YWJpfV97cGxhdGZvcm19X3ttdWx0aWFyY2h9Jy5mb3JtYXQoCisgICAgICAgIGFiaT1zeXMuYWJpZmxhZ3MsCisgICAgICAgIHBsYXRmb3JtPXN5cy5wbGF0Zm9ybSwKKyAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKKyAgICApKQorCisKIGRlZiBfZ2VuZXJhdGVfcG9zaXhfdmFycygpOgogICAgICIiIkdlbmVyYXRlIHRoZSBQeXRob24gbW9kdWxlIGNvbnRhaW5pbmcgYnVpbGQtdGltZSB2YXJpYWJsZXMuIiIiCiAgICAgaW1wb3J0IHBwcmludApAQCAtMzc5LDE0ICszOTEsMTQgQEAKICAgICAjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBtYW51YWxseSBhbmQgcG9wdWxhdGUgaXQgd2l0aCB0aGUgYnVpbGQgdmFycy4KICAgICAjIFRoaXMgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQgZm9yIGVuc3VyaW5nIHRoZSBzdWJzZXF1ZW50IGNhbGwgdG8KICAgICAjIGdldF9wbGF0Zm9ybSgpIHN1Y2NlZWRzLgotICAgIG5hbWUgPSAnX3N5c2NvbmZpZ2RhdGEnCisgICAgbmFtZSA9IF9nZXRfc3lzY29uZmlnZGF0YV9uYW1lKCkKICAgICBpZiAnZGFyd2luJyBpbiBzeXMucGxhdGZvcm06CiAgICAgICAgIGltcG9ydCB0eXBlcwogICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgIG1vZHVsZS5idWlsZF90aW1lX3ZhcnMgPSB2YXJzCiAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAKLSAgICBweWJ1aWxkZGlyID0gJ2J1aWxkL2xpYi4lcy0lcycgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzozXSkKKyAgICBweWJ1aWxkZGlyID0gJ2J1aWxkL2xpYi4lcy0lcycgJSAoZ2V0X3BsYXRmb3JtKCksIF9QWV9WRVJTSU9OX1NIT1JUKQogICAgIGlmIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgogICAgICAgICBweWJ1aWxkZGlyICs9ICctcHlkZWJ1ZycKICAgICBvcy5tYWtlZGlycyhweWJ1aWxkZGlyLCBleGlzdF9vaz1UcnVlKQpAQCAtNDA1LDcgKzQxNyw5IEBACiBkZWYgX2luaXRfcG9zaXgodmFycyk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgogICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCisgICAgbmFtZSA9IF9nZXRfc3lzY29uZmlnZGF0YV9uYW1lKCkKKyAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKKyAgICBidWlsZF90aW1lX3ZhcnMgPSBfdGVtcC5idWlsZF90aW1lX3ZhcnMKICAgICB2YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCiAKIGRlZiBfaW5pdF9ub25fcG9zaXgodmFycyk6CkBAIC01MTgsNyArNTMyLDcgQEAKICAgICAgICAgX0NPTkZJR19WQVJTWydleGVjX3ByZWZpeCddID0gX0VYRUNfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbiddID0gX1BZX1ZFUlNJT04KICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX3Nob3J0J10gPSBfUFlfVkVSU0lPTl9TSE9SVAotICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KKyAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QKICAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfYmFzZSddID0gX0JBU0VfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snYmFzZSddID0gX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9wbGF0YmFzZSddID0gX0JBU0VfRVhFQ19QUkVGSVgKZGlmZiAtLWdpdCBhL0xpYi90YXJmaWxlLnB5IGIvTGliL3RhcmZpbGUucHkKaW5kZXggOTk5YTk5Yi4uNWQ0Yzg2YyAxMDA3NTUKLS0tIGEvTGliL3RhcmZpbGUucHkKKysrIGIvTGliL3RhcmZpbGUucHkKQEAgLTUwLDkgKzUwLDEzIEBACiBpbXBvcnQgcmUKIAogdHJ5OgotICAgIGltcG9ydCBncnAsIHB3ZAorICAgIGltcG9ydCBwd2QKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBncnAgPSBwd2QgPSBOb25lCisgICAgcHdkID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBncnAKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBncnAgPSBOb25lCiAKICMgb3Muc3ltbGluayBvbiBXaW5kb3dzIHByaW9yIHRvIDYuMCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvcgogc3ltbGlua19leGNlcHRpb24gPSAoQXR0cmlidXRlRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpCkBAIC02NCw3ICs2OCwxMCBAQAogICAgIHBhc3MKIAogIyBmcm9tIHRhcmZpbGUgaW1wb3J0ICoKLV9fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIl0KK19fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIiwgIlJlYWRFcnJvciIsCisgICAgICAgICAgICJDb21wcmVzc2lvbkVycm9yIiwgIlN0cmVhbUVycm9yIiwgIkV4dHJhY3RFcnJvciIsICJIZWFkZXJFcnJvciIsCisgICAgICAgICAgICJFTkNPRElORyIsICJVU1RBUl9GT1JNQVQiLCAiR05VX0ZPUk1BVCIsICJQQVhfRk9STUFUIiwKKyAgICAgICAgICAgIkRFRkFVTFRfRk9STUFUIiwgIm9wZW4iXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHRhciBjb25zdGFudHMKQEAgLTE0MSw3ICsxNDgsNyBAQAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBpbml0aWFsaXphdGlvbgogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBvcy5uYW1lID09ICJudCI6CiAgICAgRU5DT0RJTkcgPSAidXRmLTgiCiBlbHNlOgogICAgIEVOQ09ESU5HID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCkBAIC0yMjUsMjEgKzIzMiwyMSBAQAogICAgIHNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFja19mcm9tKCIxNDhiOHgzNTZiIiwgYnVmKSkKICAgICByZXR1cm4gdW5zaWduZWRfY2hrc3VtLCBzaWduZWRfY2hrc3VtCiAKLWRlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yKToKK2RlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yLCBidWZzaXplPU5vbmUpOgogICAgICIiIkNvcHkgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZW9iaiBzcmMgdG8gZmlsZW9iaiBkc3QuCiAgICAgICAgSWYgbGVuZ3RoIGlzIE5vbmUsIGNvcHkgdGhlIGVudGlyZSBjb250ZW50LgogICAgICIiIgorICAgIGJ1ZnNpemUgPSBidWZzaXplIG9yIDE2ICogMTAyNAogICAgIGlmIGxlbmd0aCA9PSAwOgogICAgICAgICByZXR1cm4KICAgICBpZiBsZW5ndGggaXMgTm9uZToKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0KQorICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QsIGJ1ZnNpemUpCiAgICAgICAgIHJldHVybgogCi0gICAgQlVGU0laRSA9IDE2ICogMTAyNAotICAgIGJsb2NrcywgcmVtYWluZGVyID0gZGl2bW9kKGxlbmd0aCwgQlVGU0laRSkKKyAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIGJ1ZnNpemUpCiAgICAgZm9yIGIgaW4gcmFuZ2UoYmxvY2tzKToKLSAgICAgICAgYnVmID0gc3JjLnJlYWQoQlVGU0laRSkKLSAgICAgICAgaWYgbGVuKGJ1ZikgPCBCVUZTSVpFOgorICAgICAgICBidWYgPSBzcmMucmVhZChidWZzaXplKQorICAgICAgICBpZiBsZW4oYnVmKSA8IGJ1ZnNpemU6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb24oInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKQogICAgICAgICBkc3Qud3JpdGUoYnVmKQogCkBAIC0xNDAwLDcgKzE0MDcsOCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLCBlcnJvcmxldmVsPU5vbmUpOgorICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLAorICAgICAgICAgICAgZXJyb3JsZXZlbD1Ob25lLCBjb3B5YnVmc2l6ZT1Ob25lKToKICAgICAgICAgIiIiT3BlbiBhbiAodW5jb21wcmVzc2VkKSB0YXIgYXJjaGl2ZSBgbmFtZScuIGBtb2RlJyBpcyBlaXRoZXIgJ3InIHRvCiAgICAgICAgICAgIHJlYWQgZnJvbSBhbiBleGlzdGluZyBhcmNoaXZlLCAnYScgdG8gYXBwZW5kIGRhdGEgdG8gYW4gZXhpc3RpbmcKICAgICAgICAgICAgZmlsZSBvciAndycgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcgb25lLiBgbW9kZScKQEAgLTE0NTYsNiArMTQ2NCw3IEBACiAgICAgICAgICAgICBzZWxmLmVycm9ybGV2ZWwgPSBlcnJvcmxldmVsCiAKICAgICAgICAgIyBJbml0IGRhdGFzdHJ1Y3R1cmVzLgorICAgICAgICBzZWxmLmNvcHlidWZzaXplID0gY29weWJ1ZnNpemUKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogICAgICAgICBzZWxmLm1lbWJlcnMgPSBbXSAgICAgICAjIGxpc3Qgb2YgbWVtYmVycyBhcyBUYXJJbmZvIG9iamVjdHMKICAgICAgICAgc2VsZi5fbG9hZGVkID0gRmFsc2UgICAgIyBmbGFnIGlmIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkCkBAIC0xNTU3LDcgKzE1NjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBzYXZlZF9wb3MgPSBmaWxlb2JqLnRlbGwoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMobmFtZSwgInIiLCBmaWxlb2JqLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoc2F2ZWRfcG9zKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTk2MiwxMCArMTk3MSwxMCBAQAogICAgICAgICBidWYgPSB0YXJpbmZvLnRvYnVmKHNlbGYuZm9ybWF0LCBzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGJ1ZikKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGJ1ZikKLQorICAgICAgICBidWZzaXplPXNlbGYuY29weWJ1ZnNpemUKICAgICAgICAgIyBJZiB0aGVyZSdzIGRhdGEgdG8gZm9sbG93LCBhcHBlbmQgaXQuCiAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSkKKyAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZpbGVvYmosIHNlbGYuZmlsZW9iaiwgdGFyaW5mby5zaXplLCBidWZzaXplPWJ1ZnNpemUpCiAgICAgICAgICAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZCh0YXJpbmZvLnNpemUsIEJMT0NLU0laRSkKICAgICAgICAgICAgIGlmIHJlbWFpbmRlciA+IDA6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKE5VTCAqIChCTE9DS1NJWkUgLSByZW1haW5kZXIpKQpAQCAtMjE0NywxNSArMjE1NiwxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgc291cmNlID0gc2VsZi5maWxlb2JqCiAgICAgICAgIHNvdXJjZS5zZWVrKHRhcmluZm8ub2Zmc2V0X2RhdGEpCisgICAgICAgIGJ1ZnNpemUgPSBzZWxmLmNvcHlidWZzaXplCiAgICAgICAgIHdpdGggYmx0bl9vcGVuKHRhcmdldHBhdGgsICJ3YiIpIGFzIHRhcmdldDoKICAgICAgICAgICAgIGlmIHRhcmluZm8uc3BhcnNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGZvciBvZmZzZXQsIHNpemUgaW4gdGFyaW5mby5zcGFyc2U6CiAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZWVrKG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKICAgICAgICAgICAgICAgICB0YXJnZXQuc2Vlayh0YXJpbmZvLnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnRydW5jYXRlKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHRhcmluZm8uc2l6ZSwgUmVhZEVycm9yKQorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKIAogICAgIGRlZiBtYWtldW5rbm93bihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAgIiIiTWFrZSBhIGZpbGUgZnJvbSBhIFRhckluZm8gb2JqZWN0IHdpdGggYW4gdW5rbm93biB0eXBlCkBAIC0yMjEzLDI4ICsyMjIzLDMxIEBACiAKICAgICBkZWYgY2hvd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcik6CiAgICAgICAgICIiIlNldCBvd25lciBvZiB0YXJnZXRwYXRoIGFjY29yZGluZyB0byB0YXJpbmZvLiBJZiBudW1lcmljX293bmVyCi0gICAgICAgICAgIGlzIFRydWUsIHVzZSAuZ2lkLy51aWQgaW5zdGVhZCBvZiAuZ25hbWUvLnVuYW1lLgorICAgICAgICAgICBpcyBUcnVlLCB1c2UgLmdpZC8udWlkIGluc3RlYWQgb2YgLmduYW1lLy51bmFtZS4gSWYgbnVtZXJpY19vd25lcgorICAgICAgICAgICBpcyBGYWxzZSwgZmFsbCBiYWNrIHRvIC5naWQvLnVpZCB3aGVuIHRoZSBzZWFyY2ggYmFzZWQgb24gbmFtZQorICAgICAgICAgICBmYWlscy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHB3ZCBhbmQgaGFzYXR0cihvcywgImdldGV1aWQiKSBhbmQgb3MuZ2V0ZXVpZCgpID09IDA6CisgICAgICAgIGlmIGhhc2F0dHIob3MsICJnZXRldWlkIikgYW5kIG9zLmdldGV1aWQoKSA9PSAwOgogICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGJlIHJvb3QgdG8gZG8gc28uCi0gICAgICAgICAgICBpZiBudW1lcmljX293bmVyOgotICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAotICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAorICAgICAgICAgICAgdSA9IHRhcmluZm8udWlkCisgICAgICAgICAgICBpZiBub3QgbnVtZXJpY19vd25lcjoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KKyAgICAgICAgICAgICAgICAgICAgaWYgZ3JwOgorICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGdycC5nZXRncm5hbSh0YXJpbmZvLmduYW1lKVsyXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgZyA9IHRhcmluZm8uZ2lkCisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHUgPSBwd2QuZ2V0cHduYW0odGFyaW5mby51bmFtZSlbMl0KKyAgICAgICAgICAgICAgICAgICAgaWYgcHdkOgorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgdSA9IHRhcmluZm8udWlkCisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzc3ltKCkgYW5kIGhhc2F0dHIob3MsICJsY2hvd24iKToKICAgICAgICAgICAgICAgICAgICAgb3MubGNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKQogCiAgICAgZGVmIGNobW9kKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI0Myw3ICsyMjU2LDcgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2QodGFyZ2V0cGF0aCwgdGFyaW5mby5tb2RlKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RlIikKIAogICAgIGRlZiB1dGltZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKQEAgLTIyNTMsNyArMjI2Niw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudXRpbWUodGFyZ2V0cGF0aCwgKHRhcmluZm8ubXRpbWUsIHRhcmluZm8ubXRpbWUpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RpZmljYXRpb24gdGltZSIpCiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzYsOSArMjM4OSwzMiBAQAogICAgICAgICAiIiJQcm92aWRlIGFuIGl0ZXJhdG9yIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX2xvYWRlZDoKLSAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYubWVtYmVycykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUYXJJdGVyKHNlbGYpCisgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYubWVtYmVycworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBZaWVsZCBpdGVtcyB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgIyBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgorICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCisgICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAorICAgICAgICAjIHdoaWNoIHdpbGwgaGF2ZSBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgaWYgc2VsZi5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbworCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBpbmRleCA8IGxlbihzZWxmLm1lbWJlcnMpOgorICAgICAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm1lbWJlcnNbaW5kZXhdCisgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9sb2FkZWQ6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHRhcmluZm86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbwogCiAgICAgZGVmIF9kYmcoc2VsZiwgbGV2ZWwsIG1zZyk6CiAgICAgICAgICIiIldyaXRlIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3lzLnN0ZGVyci4KQEAgLTIzOTksNDUgKzI0MzUsNiBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQotIyBjbGFzcyBUYXJGaWxlCi0KLWNsYXNzIFRhckl0ZXI6Ci0gICAgIiIiSXRlcmF0b3IgQ2xhc3MuCi0KLSAgICAgICBmb3IgdGFyaW5mbyBpbiBUYXJGaWxlKC4uLik6Ci0gICAgICAgICAgIHN1aXRlLi4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhIFRhckl0ZXIgb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi50YXJmaWxlID0gdGFyZmlsZQotICAgICAgICBzZWxmLmluZGV4ID0gMAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGl0ZXJhdG9yIG9iamVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KLSAgICAgICAgICAgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRml4IGZvciBTRiAjMTEwMDQyOTogVW5kZXIgcmFyZSBjaXJjdW1zdGFuY2VzIGl0IGNhbgotICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKLSAgICAgICAgIyB3aGljaCB3aWxsIGNhdXNlIFRhckl0ZXIgdG8gc3RvcCBwcmVtYXR1cmVseS4KLQotICAgICAgICBpZiBzZWxmLmluZGV4ID09IDAgYW5kIHNlbGYudGFyZmlsZS5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgIGVsaWYgc2VsZi5pbmRleCA8IGxlbihzZWxmLnRhcmZpbGUubWVtYmVycyk6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm1lbWJlcnNbc2VsZi5pbmRleF0KLSAgICAgICAgZWxpZiBub3Qgc2VsZi50YXJmaWxlLl9sb2FkZWQ6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm5leHQoKQotICAgICAgICAgICAgaWYgbm90IHRhcmluZm86Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJmaWxlLl9sb2FkZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLSAgICAgICAgcmV0dXJuIHRhcmluZm8KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIGV4cG9ydGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNzJkYWJjNy4uYjA4NjNiMSAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC02MzcsNiArNjM3LDEyIEBACiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICByZXR1cm4gKC0xLCBOb25lLCB0ZXh0KQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIHRlc3QoKToKICAgICAiIiJUZXN0IHByb2dyYW0gZm9yIHRlbG5ldGxpYi4KQEAgLTY2MCwxMSArNjY2LDEwIEBACiAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnRzdHIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcG9ydCA9IHNvY2tldC5nZXRzZXJ2YnluYW1lKHBvcnRzdHIsICd0Y3AnKQotICAgIHRuID0gVGVsbmV0KCkKLSAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQotICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCi0gICAgdG4uaW50ZXJhY3QoKQotICAgIHRuLmNsb3NlKCkKKyAgICB3aXRoIFRlbG5ldCgpIGFzIHRuOgorICAgICAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQorICAgICAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQorICAgICAgICB0bi5pbnRlcmFjdCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggYWQ2ODdiOS4uNjE0NjIzNSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNzk3LDcgKzc5Nyw2IEBACiAgICAgICAgIF9zaHV0aWwucm10cmVlKG5hbWUpCiAgICAgICAgIF93YXJuaW5ncy53YXJuKHdhcm5fbWVzc2FnZSwgUmVzb3VyY2VXYXJuaW5nKQogCi0KICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiPHt9IHshcn0+Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvdGVzdC9fX21haW5fXy5weQppbmRleCBkNWZiZTE1Li4xOWE2YjJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fX21haW5fXy5weQorKysgYi9MaWIvdGVzdC9fX21haW5fXy5weQpAQCAtMSwzICsxLDIgQEAKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotcmVncnRlc3QubWFpbl9pbl90ZW1wX2N3ZCgpCitmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KK21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDliNzg5YzIuLmI1ZjQ3ODIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE2MjgsMTMgKzE2MjgsMzMgQEAKICAgICAgICAgZCA9IFthLCBiXQogICAgICAgICBlID0gc2VsZi5saXN0KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBlWzpdLAorICAgICAgICAgICAgW2VsZW1lbnRbOl0gZm9yIGVsZW1lbnQgaW4gZV0sCiAgICAgICAgICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMCwgMSwgMiwgMywgNCwgMCwgMSwgMiwgMywgNF1dCiAgICAgICAgICAgICApCiAKICAgICAgICAgZiA9IHNlbGYubGlzdChbYV0pCiAgICAgICAgIGEuYXBwZW5kKCdoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZls6XSwgW1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnaGVsbG8nXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlswXVs6XSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddKQorCisgICAgZGVmIHRlc3RfbGlzdF9wcm94eV9pbl9saXN0KHNlbGYpOgorICAgICAgICBhID0gc2VsZi5saXN0KFtzZWxmLmxpc3QocmFuZ2UoMykpIGZvciBfaSBpbiByYW5nZSgzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lubmVyWzpdIGZvciBpbm5lciBpbiBhXSwgW1swLCAxLCAyXV0gKiAzKQorCisgICAgICAgIGFbMF1bLTFdID0gNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdWzpdLCBbMCwgMSwgNTVdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVtpXVs6XSwgWzAsIDEsIDJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVsxXS5wb3AoKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVsxXSksIDIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDMsIDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVtpXSksIDMpCisKKyAgICAgICAgZGVsIGEKKworICAgICAgICBiID0gc2VsZi5saXN0KCkKKyAgICAgICAgYi5hcHBlbmQoYikKKyAgICAgICAgZGVsIGIKIAogICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLmRpY3QoKQpAQCAtMTY0Niw2ICsxNjY2LDUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQudmFsdWVzKCkpLCBbY2hyKGkpIGZvciBpIGluIGluZGljZXNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChkLml0ZW1zKCkpLCBbKGksIGNocihpKSkgZm9yIGkgaW4gaW5kaWNlc10pCiAKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3h5X25lc3RlZChzZWxmKToKKyAgICAgICAgcGV0cyA9IHNlbGYuZGljdChmZXJyZXRzPTIsIGhhbXN0ZXJzPTQpCisgICAgICAgIHN1cHBsaWVzID0gc2VsZi5kaWN0KHdhdGVyPTEwLCBmZWVkPTMpCisgICAgICAgIGQgPSBzZWxmLmRpY3QocGV0cz1wZXRzLCBzdXBwbGllcz1zdXBwbGllcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCAxMCkKKworICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWydibGFua2V0cyddLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDUpCisKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGRlbCBwZXRzCisgICAgICAgIGRlbCBzdXBwbGllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3BldHMnXVsnZmVycmV0cyddLCAyKQorICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWydibGFua2V0cyddLCAxMSkKKworICAgICAgICBwZXRzID0gZFsncGV0cyddCisgICAgICAgIHN1cHBsaWVzID0gZFsnc3VwcGxpZXMnXQorICAgICAgICBzdXBwbGllc1snd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGQuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZXRzWydoYW1zdGVycyddLCA0KQorCisgICAgICAgIGwgPSBzZWxmLmxpc3QoW3BldHMsIHN1cHBsaWVzXSkKKyAgICAgICAgbFswXVsnbWFybW90cyddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ21hcm1vdHMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFswXVsnbWFybW90cyddLCAxKQorCisgICAgICAgIG91dGVyID0gc2VsZi5saXN0KFtbODgsIDk5XSwgbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvdXRlclswXSwgbGlzdCkgICMgTm90IGEgTGlzdFByb3h5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXJbLTFdWy0xXVsnZmVlZCddLCAzKQorCiAgICAgZGVmIHRlc3RfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICBuID0gc2VsZi5OYW1lc3BhY2UoKQogICAgICAgICBuLm5hbWUgPSAnQm9iJwpAQCAtMTY2OCw2ICsxNzM0LDEwIEBACiBkZWYgbXVsKHgsIHkpOgogICAgIHJldHVybiB4KnkKIAorZGVmIHJhaXNlX2xhcmdlX3ZhbHVlcnJvcih3YWl0KToKKyAgICB0aW1lLnNsZWVwKHdhaXQpCisgICAgcmFpc2UgVmFsdWVFcnJvcigieCIgKiAxMDI0KioyKQorCiBjbGFzcyBTYXlXaGVuRXJyb3IoVmFsdWVFcnJvcik6IHBhc3MKIAogZGVmIGV4Y2VwdGlvbl90aHJvd2luZ19nZW5lcmF0b3IodG90YWwsIHdoZW4pOgpAQCAtMTkxMCw2ICsxOTgwLDI2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CiAgICAgICAgICAgICAgICAgcC5hcHBseShzZWxmLl90ZXN0X3dyYXBwZWRfZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfbWFwX25vX2ZhaWxmYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMzk5MjogdGhlIGZhaWwtZmFzdCBiZWhhdmlvdXIgd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkCisgICAgICAgICMgZHVyaW5nIG1hcCgpIHdvdWxkIG1ha2UgUG9vbC5qb2luKCkgZGVhZGxvY2ssIGJlY2F1c2UgYSB3b3JrZXIKKyAgICAgICAgIyBwcm9jZXNzIHdvdWxkIGZpbGwgdGhlIHJlc3VsdCBxdWV1ZSAoYWZ0ZXIgdGhlIHJlc3VsdCBoYW5kbGVyIHRocmVhZAorICAgICAgICAjIHRlcm1pbmF0ZWQsIGhlbmNlIG5vdCBkcmFpbmluZyBpdCBhbnltb3JlKS4KKworICAgICAgICB0X3N0YXJ0ID0gdGltZS50aW1lKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHAubWFwKHJhaXNlX2xhcmdlX3ZhbHVlcnJvciwgWzAsIDFdKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICAgICAgICAgICAgICBwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2UgaW5kZWVkIHdhaXRlZCBmb3IgYWxsIGpvYnMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHRpbWUudGltZSgpIC0gdF9zdGFydCwgMC45KQorCiAKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCkBAIC0zNzgwLDcgKzM4NzAsNyBAQAogICAgICAgICBwLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgIGV4cGVjdGVkID0gJ3NlbWFwaG9yZV90cmFja2VyOiBUaGVyZSBhcHBlYXIgdG8gYmUgMiBsZWFrZWQgc2VtYXBob3JlcycKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgJ3NlbWFwaG9yZV90cmFja2VyOiAlcjogXFtFcnJubycgJSBuYW1lMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIHInc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQogCiAjCiAjIE1peGlucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZS5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2Yjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKQEAgLTAsMCArMSw1MyBAQAorCisKKyIiIgorVGhlIG1vZHVsZSBmb3IgdGVzdGluZyB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KK0VtcHR5IGxpbmVzIGFib3ZlIGFyZSBmb3IgZ29vZCByZWFzb24gKHRlc3RpbmcgZm9yIGNvcnJlY3QgbGluZSBudW1iZXJzKQorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIEM6CisKKyAgICB4ID0gNTsgeTogT3B0aW9uYWxbJ0MnXSA9IE5vbmUKKworZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCit4OiBpbnQgPSA1OyB5OiBzdHIgPSB4OyBmOiBUdXBsZVtpbnQsIGludF0KKworY2xhc3MgTSh0eXBlKToKKworICAgIF9fYW5ub3RhdGlvbnNfX1snMTIzJ10gPSAxMjMKKyAgICBvOiB0eXBlID0gb2JqZWN0CisKKyhwYXJzKTogYm9vbCA9IFRydWUKKworY2xhc3MgRChDKToKKyAgICBqOiBzdHIgPSAnaGknOyBrOiBzdHI9ICdieWUnCisKK2Zyb20gdHlwZXMgaW1wb3J0IG5ld19jbGFzcworaF9jbGFzcyA9IG5ld19jbGFzcygnSCcsIChDLCkpCitqX2NsYXNzID0gbmV3X2NsYXNzKCdKJykKKworY2xhc3MgRigpOgorICAgIHo6IGludCA9IDUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHBhc3MKKworY2xhc3MgWShGKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEYsIHNlbGYpLl9faW5pdF9fKDEyMykKKworY2xhc3MgTWV0YSh0eXBlKToKKyAgICBkZWYgX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCitjbGFzcyBTKG1ldGFjbGFzcyA9IE1ldGEpOgorICAgIHg6IHN0ciA9ICdzb21ldGhpbmcnCisgICAgeTogc3RyID0gJ3NvbWV0aGluZyBlbHNlJworCitkZWYgZm9vKHg6IGludCA9IDEwKToKKyAgICBkZWYgYmFyKHk6IExpc3Rbc3RyXSk6CisgICAgICAgIHg6IHN0ciA9ICd5ZXMnCisgICAgYmFyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjZjViMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5CkBAIC0wLDAgKzEsMzYgQEAKKyIiIgorU29tZSBjb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiBoZXJlLgorTW9yZSBleGFtcGxlcyBhcmUgaW4gdGVzdF9ncmFtbWFyIGFuZCB0ZXN0X3BhcnNlci4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgQ2xhc3NWYXIKKworaTogaW50ID0gMQorajogaW50Cit4OiBmbG9hdCA9IGkvMTAKKworZGVmIGYoKToKKyAgICBjbGFzcyBDOiAuLi4KKyAgICByZXR1cm4gQygpCisKK2YoKS5uZXdfYXR0cjogb2JqZWN0ID0gb2JqZWN0KCkKKworY2xhc3MgQzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLnggPSB4CisKK2MgPSBDKDUpCitjLm5ld19hdHRyOiBpbnQgPSAxMAorCitfX2Fubm90YXRpb25zX18gPSB7fQorCisKK0Bub190eXBlX2NoZWNrCitjbGFzcyBOVEM6CisgICAgZGVmIG1ldGgoc2VsZiwgcGFyYW06IGNvbXBsZXgpIC0+IE5vbmU6CisgICAgICAgIC4uLgorCitjbGFzcyBDVjoKKyAgICB2YXI6IENsYXNzVmFyWydDViddCisKK0NWLnZhciA9IENWKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZDdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5CkBAIC0wLDAgKzEsMTggQEAKKyIiIgorQ29ycmVjdCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb24gdGhhdCBzaG91bGQgZmFpbCBhdCBydW50aW1lCitpbiBhIGNlcnRhaW4gbWFubmVyLiBNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2RlZiBmX2JhZF9hbm4oKToKKyAgICBfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIENfT0s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54OiBub19zdWNoX25hbWUgPSB4ICAjIFRoaXMgb25lIGlzIE9LIGFzIHByb3Bvc2VkIGJ5IEd1aWRvCisKK2NsYXNzIERfYmFkX2FubjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZmVsLnk6IGludCA9IDAKKworZGVmIGdfYmFkX2FubigpOgorICAgIG5vX3N1Y2hfbmFtZS5hdHRyOiBpbnQgPSAwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5IGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQppbmRleCAwYWUyMjQyLi5kM2U4ZTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKQEAgLTEsOSArMSw4IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhcnJheQogaW1wb3J0IGlvCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc3lzCisKIAogY2xhc3MgVW5zZWVrYWJsZUlPKGlvLkZpbGVJTyk6CiAgICAgZGVmIHRlbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdXRvdGVzdC5weSBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CmluZGV4IDQxYzIwODguLmZhODVjYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5CisrKyBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CkBAIC0xLDYgKzEsNSBAQAogIyBUaGlzIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgcmVncnRlc3QucHkgZnJvbSB0aGUgY21kbGluZS4KICMgSXQgY2FuIGJlIGVzcGVjaWFsbHkgaGFuZHkgaWYgeW91J3JlIGluIGFuIGludGVyYWN0aXZlIHNoZWxsLCBlLmcuLAogIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0LgotCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci1yZWdydGVzdC5tYWluKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NWUyOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTFiYzUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDMzYjI4Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTlhZjYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVmIGZvbygpOgotICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYTIzZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgeWllbGQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWU0YmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZCBmcm9tIFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2MzZmOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMCBiL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQyNTliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbFRDQ0FmNmdBd0lCQWdJSkFLR1U5NXdLUjhwVE1BMEdDU3FHU0liM0RRRUJCUVVBTUhBeEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4SXpBaEJnTlZCQU1NR25ObGJHWXRjMmxuYm1Wa0xuQjVkR2h2Ci1iblJsYzNRdWJtVjBNQjRYRFRFME1URXdNakU0TURreU9Wb1hEVEkwTVRBek1ERTRNRGt5T1Zvd2NERUxNQWtHCi1BMVVFQmhNQ1dGa3hGekFWQmdOVkJBY01Ea05oYzNSc1pTQkJiblJvY21GNE1TTXdJUVlEVlFRS0RCcFFlWFJvCi1iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmpFak1DRUdBMVVFQXd3YWMyVnNaaTF6YVdkdVpXUXVjSGwwCi1hRzl1ZEdWemRDNXVaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5EWFFYVzl0anlaCi1YdDBJdjJ0TEwxK2ppbnI0d0dnMzZpb0xETEZrTWYrMlkxR0wwdjBCbktZRzROMU9LbEFVMTVMWEdlR2VyOHZtCi1Tdi95SXZtZHJFTHZoQWJibzN3NGE5VE1ZUUE0WGtJVkxkdnUzbXZOT0FldCs4UE1KeG4yNmRiRGhHODA5QUx2Ci1FSFk1N2xRc0JTM0c1OVJaeUJQVnFBcW1JbVdOSm5WekFnTUJBQUdqTnpBMU1DVUdBMVVkRVFRZU1CeUNHbk5sCi1iR1l0YzJsbmJtVmtMbkI1ZEdodmJuUmxjM1F1Ym1WME1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOCi1BUUVGQlFBRGdZRUFJdXpBaGdNb3VKcE5kZjNVUkNISWluZXlvU3Q2V0svOStleVVjamxLT3JEb1hOWmFENzJoCi1UWE1lS1lvV3ZKeVZjU0xLTDhja1B0RG9iZ1AyT1R0MFVreUFhajBuK1pIYXFxMWxIMnlWZkdVQTFJTEp2NTE1Ci1DOEJxYnZWWnVxbTNpN3lnbXczYnFFL2xZTWdPcll0WFhucU9yejZudnNFNlljOVY5ckZmbE9NPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzMzNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAKQEAgLTAsMCArMSwyMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4CitPVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCitxK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCitBSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCitNbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCiswaUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Cis2K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3CitIUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCisyaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0CitRZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCitBbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCitKQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCitmKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCis5bW12dGs1N0hWanNPNmxUbzE1WXlKND0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMCBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dCBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggOWIwODY1My4uZGQ3ZTQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAorKysgYi9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CkBAIC01Myw2ICs1MywxMiBAQAogLS0gTVBGUiBob21lcGFnZSBhdCBodHRwOi8vd3d3Lm1wZnIub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQogLS0gTVBGUiBwcm9qZWN0LgogCistLSBBIG1pbm9yaXR5IG9mIHRoZSB0ZXN0IGNhc2VzIHdlcmUgZ2VuZXJhdGVkIHdpdGggdGhlIGhlbHAgb2YKKy0tIG1wbWF0aCAwLjE5IGF0IDEwMCBiaXQgYWNjdXJhY3kgKGh0dHA6Ly9tcG1hdGgub3JnKSB0byBpbXByb3ZlCistLSBjb3ZlcmFnZSBvZiByZWFsIGZ1bmN0aW9ucyB3aXRoIHJlYWwtdmFsdWVkIGFyZ3VtZW50cy4gVGhlc2UgYXJlCistLSB1c2VkIGluIHRlc3QudGVzdF9tYXRoLk1hdGhUZXN0cy50ZXN0X3Rlc3RmaWxlLCBhcyB3ZWxsIGFzIGluCistLSB0ZXN0X2NtYXRoLgorCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBhY29zOiBJbnZlcnNlIGNvc2luZSAtLQpAQCAtODQ4LDYgKzg1NCwxOCBAQAogYXRhbjAzMDMgYXRhbiAtMWUtMTY1IDEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAxOTAuMzA5ODQzNzYyMjg4NzUKIGF0YW4wMzA0IGF0YW4gLTkuOTk5ODg4NjcxODI2ODMwMWUtMzIxIC0xLjAgLT4gLTAuNzg1Mzk4MTYzMzk3NDQ4MjggLTM2OC43NjAxOTQwMzU3NjY5MgogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCithdGFuMDQwMCBhdGFuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjU3MDc5NjMyNjc5NDg5NjYxOTIgMC4wCithdGFuMDQwMSBhdGFuIC0xLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gLTEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAyIGF0YW4gMWUtMTcgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwMyBhdGFuIC0xZS0xNyAwLjAgLT4gLTEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwNCBhdGFuIDAuMDAwMSAwLjAgLT4gMC4wMDAwOTk5OTk5OTk2NjY2NjY2NzM0NTkgMC4wCithdGFuMDQwNSBhdGFuIC0wLjAwMDEgMC4wIC0+IC0wLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA2IGF0YW4gMC45OTk5OTk5OTk5OTk5OTkgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ3ODEwMDIgMC4wCithdGFuMDQwNyBhdGFuIDEuMDAwMDAwMDAwMDAwMDAxIDAuMCAtPiAwLjc4NTM5ODE2MzM5NzQ0ODg2NDczIDAuMAorYXRhbjA0MDggYXRhbiAxNC4xMDE0MTk5NDcxNzE3MTkgMC4wIC0+IDEuNDk5OTk5OTk5OTk5OTk5OTk2OSAwLjAKK2F0YW4wNDA5IGF0YW4gMTI1NS43NjU1OTE1MDA3ODk3IDAuMCAtPiAxLjU3MDAwMDAwMDAwMDAwMDA2MjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBhdGFuMTAwMCBhdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBhdGFuMTAwMSBhdGFuIG5hbiAwLjAgLT4gbmFuIDAuMApAQCAtMTUxNCw2ICsxNTMyLDExIEBACiBzcXJ0MDE0MCBzcXJ0IDEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0xLjY5OTk5OTk5OTk5OTk5OTllKzMwOCAtPiAxLjQzMjUwODgyMzAxNTQ1NzNlKzE1NCAtNS45MzM2NDU4MjcxMjEyMjA3ZSsxNTMKIHNxcnQwMTQxIHNxcnQgLTEuNzk3ZSszMDggLTkuOTk5OTk5OTk5OTk5OTk5OWUrMzA2IC0+IDMuNzI4NDQ3NjQzMjA1NzMwN2UrMTUyIC0xLjM0MTA0MDY4OTk4MDI5MDFlKzE1NAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzcXJ0MDE1MCBzcXJ0IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjM0MDc4MDc5Mjk5NDI1OTYzNTVlKzE1NCAwLjAKK3NxcnQwMTUxIHNxcnQgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDggMC4wIC0+IDEuNDkxNjY4MTQ2MjQwMDQxMzQ4N2UtMTU0IDAuMAorc3FydDAxNTIgc3FydCA1ZS0zMjQgMC4wIC0+IDIuMjIyNzU4NzQ5NDg1MDc3NDgzNGUtMTYyIDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc3FydDEwMDAgc3FydCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNxcnQxMDAxIHNxcnQgLTAuMCAwLjAgLT4gMC4wIDAuMApAQCAtMTYxNiw2ICsxNjM5LDIwIEBACiBleHAwMDUzIGV4cCA3MTAuMCAxLjYgLT4gLTYuNTIzMTU3OTk5NTUwMTM3MmUrMzA2IGluZiAgIG92ZXJmbG93CiBleHAwMDU0IGV4cCA3MTAuMCAyLjggLT4gLWluZiA3LjQ4MzYxNzc0MTc0NDg1MjhlKzMwNyAgIG92ZXJmbG93CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2V4cDAwNzAgZXhwIDFlLTA4IDAuMCAtPiAxLjAwMDAwMDAxMDAwMDAwMDA1IDAuMAorZXhwMDA3MSBleHAgMC4wMDAzIDAuMCAtPiAxLjAwMDMwMDA0NTAwNDUwMDMzNzUgMC4wCitleHAwMDcyIGV4cCAwLjIgMC4wIC0+IDEuMjIxNDAyNzU4MTYwMTY5ODQ3NSAwLjAKK2V4cDAwNzMgZXhwIDEuMCAwLjAgLT4gMi43MTgyODE4Mjg0NTkwNDUyMzU0IDAuMAorZXhwMDA3NCBleHAgLTFlLTA4IDAuMCAtPiAwLjk5OTk5OTk5MDAwMDAwMDA1IDAuMAorZXhwMDA3NSBleHAgLTAuMDAwMyAwLjAgLT4gMC45OTk3MDAwNDQ5OTU1MDAzMzc1MSAwLjAKK2V4cDAwNzYgZXhwIC0xLjAgMC4wIC0+IDAuMzY3ODc5NDQxMTcxNDQyMzIxNiAwLjAKK2V4cDAwNzcgZXhwIDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNiAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAyMjIgMC4wCitleHAwMDc4IGV4cCAtMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNiAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk4ODg5OCAwLjAKK2V4cDAwNzkgZXhwIDIuMzAyNTg1MDkyOTk0MDQ2IDAuMCAtPiAxMC4wMDAwMDAwMDAwMDAwMDIxNzEgMC4wCitleHAwMDgwIGV4cCAtMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDAuMDk5OTk5OTk5OTk5OTk5OTc4MjkyIDAuMAorZXhwMDA4MSBleHAgNzA5Ljc4MjcgMC4wIC0+IDEuNzk3NjY5OTU2NjYzODAxNDY1NGUrMzA4IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogZXhwMTAwMCBleHAgMC4wIDAuMCAtPiAxLjAgMC4wCiBleHAxMDAxIGV4cCAtMC4wIDAuMCAtPiAxLjAgMC4wCkBAIC0xNzA4LDYgKzE3NDUsMjMgQEAKIGNvc2gwMDMwIGNvc2ggNzEwLjUgMi4zNTE5OTk5OTk5OTk5OTk5IC0+IC0xLjI5Njc0NjUyMzkzNTU5OThlKzMwOCAxLjMwNzY3MDc5MDg4NTczMzNlKzMwOAogY29zaDAwMzEgY29zaCAtNzEwLjUgMC42OTk5OTk5OTk5OTk5OTk5NiAtPiAxLjQwODU0NjYzODEzOTI0OTllKzMwOCAtMS4xODY0MDI0NjY2NDUwMjM5ZSszMDgKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zaDAwNTAgY29zaCAxZS0xNTAgMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUxIGNvc2ggMWUtMTggMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUyIGNvc2ggMWUtMDkgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDAwNSAwLjAKK2Nvc2gwMDUzIGNvc2ggMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgMC4wCitjb3NoMDA1NCBjb3NoIDAuMiAwLjAgLT4gMS4wMjAwNjY3NTU2MTkwNzU4NDg1IDAuMAorY29zaDAwNTUgY29zaCAxLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAwLjAKK2Nvc2gwMDU2IGNvc2ggLTFlLTE4IDAuMCAtPiAxLjAgLTAuMAorY29zaDAwNTcgY29zaCAtMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgLTAuMAorY29zaDAwNTggY29zaCAtMS4wIDAuMCAtPiAxLjU0MzA4MDYzNDgxNTI0Mzc3ODUgLTAuMAorY29zaDAwNTkgY29zaCAxLjMxNjk1Nzg5NjkyNDgxNjggMC4wIC0+IDIuMDAwMDAwMDAwMDAwMDAwMTUwNCAwLjAKK2Nvc2gwMDYwIGNvc2ggLTEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IC0wLjAKK2Nvc2gwMDYxIGNvc2ggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNi4wMDAwMDAwMjE5MzggMC4wCitjb3NoMDA2MiBjb3NoIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDQzNjYyIDAuMAorY29zaDAwNjMgY29zaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitjb3NoMDA2NCBjb3NoIC03MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zaDEwMDAgY29zaCAwLjAgMC4wIC0+IDEuMCAwLjAKIGNvc2gxMDAxIGNvc2ggMC4wIGluZiAtPiBuYW4gMC4wICAgICAgICBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTE4MDAsNiArMTg1NCwyNCBAQAogc2luaDAwMzAgc2luaCA3MTAuNSAtMi4zOTk5OTk5OTk5OTk5OTk5IC0+IC0xLjM1Nzk5NzA1NjQ4ODU5MTllKzMwOCAtMS4yNDM5NDQ3MDkwNzc5OGUrMzA4CiBzaW5oMDAzMSBzaW5oIC03MTAuNSAwLjgwMDAwMDAwMDAwMDAwMDA0IC0+IC0xLjI4MzA2NzE2MDE3MzUxNjRlKzMwOCAxLjMyMTA5NTQxOTM5OTc2NzhlKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzaW5oMDA1MCBzaW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luaDAwNTEgc2luaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3NpbmgwMDUyIHNpbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3NpbmgwMDUzIHNpbmggMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTQgc2luaCAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTUgc2luaCAwLjIgMC4wIC0+IDAuMjAxMzM2MDAyNTQxMDkzOTk4OTUgMC4wCitzaW5oMDA1NiBzaW5oIDEuMCAwLjAgLT4gMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNTcgc2luaCAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAwODg4NWUtOCAwLjAKK3NpbmgwMDU4IHNpbmggLTAuMDAxIDAuMCAtPiAtMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTkgc2luaCAtMS4wIDAuMCAtPiAtMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNjAgc2luaCAxLjQ0MzYzNTQ3NTE3ODgxMDMgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYxIHNpbmggLTEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYyIHNpbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNS45OTk5OTk5OTIxMzYgMC4wCitzaW5oMDA2MyBzaW5oIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDM2MjExIDAuMAorc2luaDAwNjQgc2luaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitzaW5oMDA2NSBzaW5oIC03MDkuNzgyNyAwLjAgLT4gLTguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luaDEwMDAgc2luaCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNpbmgxMDAxIHNpbmggMC4wIGluZiAtPiAwLjAgbmFuICAgICAgICBpbnZhbGlkIGlnbm9yZS1yZWFsLXNpZ24KQEAgLTE4OTcsNiArMTk2OSwyNCBAQAogdGFuaDAwMzIgdGFuaCAxMDAwIC0yLjMxOTk5OTk5OTk5OTk5OTggLT4gMS4wIDAuMAogdGFuaDAwMzMgdGFuaCAtMS4wMDAwMDAwMDAwMDAwMDAxZSszMDAgLTkuNjY5OTk5OTk5OTk5OTk5OSAtPiAtMS4wIC0wLjAKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuaDAwNTAgdGFuaCAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3RhbmgwMDUxIHRhbmggNWUtMTcgMC4wIC0+IDQuOTk5OTk5OTk5OTk5OTk5ODk1NWUtMTcgMC4wCit0YW5oMDA1MiB0YW5oIDFlLTE2IDAuMCAtPiA5Ljk5OTk5OTk5OTk5OTk5OTc5MWUtMTcgMC4wCit0YW5oMDA1MyB0YW5oIDMuN2UtMDggMC4wIC0+IDMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU0IHRhbmggMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5NjY2NjY2ODAwMDIwNzYgMC4wCit0YW5oMDA1NSB0YW5oIDAuMiAwLjAgLT4gMC4xOTczNzUzMjAyMjQ5MDQwMTE0MSAwLjAKK3RhbmgwMDU2IHRhbmggMS4wIDAuMCAtPiAwLjc2MTU5NDE1NTk1NTc2NDg4ODEyIDAuMAordGFuaDAwNTcgdGFuaCAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU4IHRhbmggLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU5IHRhbmggLTEuMCAwLjAgLT4gLTAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA2MCB0YW5oIDAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYxIHRhbmggLTAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDM0MDIgMC4wCit0YW5oMDA2MiB0YW5oIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTgyMjM2NCAwLjAKK3RhbmgwMDYzIHRhbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAordGFuaDAwNjQgdGFuaCA3MTEgMC4wIC0+IDEuMCAwLjAKK3RhbmgwMDY1IHRhbmggMS43OTdlKzMwOCAwLjAgLT4gMS4wIDAuMAorCiAtLXNwZWNpYWwgdmFsdWVzCiB0YW5oMTAwMCB0YW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogdGFuaDEwMDEgdGFuaCAwLjAgaW5mIC0+IG5hbiBuYW4gICAgICAgIGludmFsaWQKQEAgLTE5ODUsNiArMjA3NSwyMiBAQAogY29zMDAyMiBjb3MgNy45OTE0NTE1NDMzODU4NTE1IDAuNzE2NTk5NjY2MTU1MDE0MzYgLT4gLTAuMTczNzU0Mzk5MDY5MzY1NjYgLTAuNzcyMTcwNDM1MjcyOTQ1ODIKIGNvczAwMjMgY29zIDAuNDUxMjQzNTExNTI1NDAyMjYgMS42OTkyNjkzOTkzODEyMTU4IC0+IDIuNTQzNDc3OTQ4OTcyMjM3IC0xLjE1MjgxOTM2OTQ4NzU0NzcKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zMDA1MCBjb3MgMWUtMTUwIDAuMCAtPiAxLjAgLTAuMAorY29zMDA1MSBjb3MgMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUyIGNvcyAxZS0wOSAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk5OTk1IC0wLjAKK2NvczAwNTMgY29zIDAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IC0wLjAKK2NvczAwNTQgY29zIDAuMiAwLjAgLT4gMC45ODAwNjY1Nzc4NDEyNDE2Mjg5MiAtMC4wCitjb3MwMDU1IGNvcyAxLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAtMC4wCitjb3MwMDU2IGNvcyAtMWUtMTggMC4wIC0+IDEuMCAwLjAKK2NvczAwNTcgY29zIC0wLjAwMDMgMC4wIC0+IDAuOTk5OTk5OTU1MDAwMDAwMzM3NSAwLjAKK2NvczAwNTggY29zIC0xLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAwLjAKK2NvczAwNTkgY29zIDEuMDQ3MTk3NTUxMTk2NTk3NiAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwOTk0NSAtMC4wCitjb3MwMDYwIGNvcyAyLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IC0wLjAKK2NvczAwNjEgY29zIC0yLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IDAuMAorY29zMDA2MiBjb3MgNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuNTg3Nzg1MjUyMjkyNDc0MDc1NTkgLTAuMAorY29zMDA2MyBjb3MgLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjgwOTAxNjk5NDM3NDk0NzIyMjU1IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zMTAwMCBjb3MgLTAuMCAwLjAgLT4gMS4wIDAuMAogY29zMTAwMSBjb3MgLWluZiAwLjAgLT4gbmFuIDAuMCBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTIwNzMsNiArMjE3OSwyMiBAQAogc2luMDAyMiBzaW4gMS4xNTE4MDg3MzU0NDAzNzI1IDQuODU5NzIzNTk2NjE1MDU1OCAtPiA1OC45MTkxNDE5ODk2MDMwNDEgMjYuMjM3MDAzNDAzNzU4ODUyCiBzaW4wMDIzIHNpbiAwLjAwMDg3NzczMDc4NDA2NjQ5MTkyIDM0Ljc5MjM3OTIxMTMxMjA5NSAtPiA1NjU1NDgxNDU1NjkuMzgyNDUgNjQ0MzI5Njg1ODIyNzAwLjYyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbjAwNTAgc2luIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luMDA1MSBzaW4gMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1MiBzaW4gMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDUzIHNpbiAwLjIgMC4wIC0+IDAuMTk4NjY5MzMwNzk1MDYxMjI2MzQgMC4wCitzaW4wMDU0IHNpbiAxLjAgMC4wIC0+IDAuODQxNDcwOTg0ODA3ODk2NTA2NjUgMC4wCitzaW4wMDU1IHNpbiAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk5MjAwMWUtOCAwLjAKK3NpbjAwNTYgc2luIC0wLjAwMSAwLjAgLT4gLTAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDU3IHNpbiAtMS4wIDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTggc2luIDAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwNDY0MiAwLjAKK3NpbjAwNTkgc2luIC0wLjUyMzU5ODc3NTU5ODI5ODkgMC4wIC0+IC0wLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA2MCBzaW4gMi42MTc5OTM4Nzc5OTE0OTQ0IDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjEgc2luIC0yLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IC0wLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjIgc2luIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAwLjgwOTAxNjk5NDM3NDk0NjczNjQ4IDAuMAorc2luMDA2MyBzaW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjU4Nzc4NTI1MjI5MjQ3MzQwNjU4IC0wLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNpbjEwMDAgc2luIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBzaW4xMDAxIHNpbiAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjE2MSw2ICsyMjgzLDI1IEBACiB0YW4wMDIyIHRhbiAxLjE2MTUzMTM5MDA4ODA1NzcgMS43OTU2Mjk4NzI4NjQ3MTA3IC0+IDAuMDQxNzkzMTg2ODI2MzkwMzYyIDEuMDM3NTMzOTU0NjAzNDc5MgogdGFuMDAyMyB0YW4gMC4wNjcwMTQ3Nzk0Nzc5MDg5NDUgNS44NTE3MzYxNTc3NDU3MDk3IC0+IDIuMjA4ODYzOTc1NDgwMDAzNGUtMDYgMC45OTk5ODM2MTgyNDIwMDYxCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3RhbjAwNTAgdGFuIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuMDA1MSB0YW4gMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDE3MzI4ZS04IDAuMAordGFuMDA1MiB0YW4gMC4wMDEgMC4wIC0+IDAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTMgdGFuIDAuMiAwLjAgLT4gMC4yMDI3MTAwMzU1MDg2NzI0OTQ4OCAwLjAKK3RhbjAwNTQgdGFuIDEuMCAwLjAgLT4gMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1NSB0YW4gLTMuN2UtMDggMC4wIC0+IC0zLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDU2IHRhbiAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDMzMzMzMzQ2NjY4NzUgMC4wCit0YW4wMDU3IHRhbiAtMS4wIDAuMCAtPiAtMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1OCB0YW4gMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk3MTYzIDAuMAordGFuMDA1OSB0YW4gLTAuNDYzNjQ3NjA5MDAwODA2MSAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDYwIHRhbiAxLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjEgdGFuIC0xLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IC0xLjk5OTk5OTk5OTk5OTk5OTUyOTggMC4wCit0YW4wMDYyIHRhbiAxLjUgMC4wIC0+IDE0LjEwMTQxOTk0NzE3MTcxOTM4OCAwLjAKK3RhbjAwNjMgdGFuIDEuNTcgMC4wIC0+IDEyNTUuNzY1NTkxNTAwNzg5NjQ3NSAwLjAKK3RhbjAwNjQgdGFuIDEuNTcwNzk2MzI2Nzk0ODk2MSAwLjAgLT4gMTk3ODkzNzk2NjA5NTIxOS4wNTM4IDAuMAordGFuMDA2NSB0YW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDEuMzc2MzgxOTIwNDcxMTcwMTUyMiAwLjAKK3RhbjAwNjYgdGFuIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAwLjcyNjU0MjUyODAwNTM2MTQwOTggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiB0YW4xMDAwIHRhbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogdGFuMTAwMSB0YW4gLWluZiAwLjAgLT4gbmFuIG5hbiBpbnZhbGlkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IDA4NjBkYjguLmQ2NTE4NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC0yLDE0ICsyLDIyIEBACiAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX3Jlc291cmNlX2VuYWJsZWQKKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGJpc2VjdAogCiBpbXBvcnQgY29weQogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBzeXMKK2ltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cnVjdAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5CisKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGx0LCBsZSwgZ3QsIGdlLCBlcSwgbmUsIHRydWVkaXYsIGZsb29yZGl2LCBtb2QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0yODQsNyArMjkyLDggQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiBzZWxmLkVTVC5kc3QoNSkKIAogICAgIGRlZiB0ZXN0X3R6bmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDKzAwOjAwJywgdGltZXpvbmUoWkVSTykudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZS51dGMudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wNTowMCcsIHRpbWV6b25lKC01ICogSE9VUikudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDk6MzAnLCB0aW1lem9uZSg5LjUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wMDowMScsIHRpbWV6b25lKHRpbWVkZWx0YShtaW51dGVzPS0xKSkudHpuYW1lKE5vbmUpKQpAQCAtMTMyMCw2ICsxMzI5LDcgQEAKICAgICAgICAgICAgIGdyZWVuID0gcGlja2xlci5kdW1wcyhvcmlnLCBwcm90bykKICAgICAgICAgICAgIGRlcml2ZWQgPSB1bnBpY2tsZXIubG9hZHMoZ3JlZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CiAgICAgICAgIHQxID0gc2VsZi50aGVjbGFzcygyLCAzLCA0KQpAQCAtMTU1OCwxMyArMTU2OCwzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQyKQogCiAgICAgZGVmIHRlc3RfaXNvZm9ybWF0KHNlbGYpOgotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCA0LCA1LCAxLCAxMjMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDItMDMtMDJceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgMTIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1QnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdceDAwJyksICIwMDAxLTAyLTAzXHgwMDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2hvdXJzJyksICIwMDAxLTAyLTAzVDA0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wM1QwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdChzZXA9JyAnLCB0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wMyAwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nZm9vJykKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDEtMDItMDMgMDQ6MDU6MDEuMDAwMTIzIikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCA5OTk1MDAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS45OTkrMDA6MDAiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMDAwIikKIAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAyLTAzLTAyVDAwOjAwOjAwIikKQEAgLTE1NzIsNiArMTYwMSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwMDowMDowMCIpCisgICAgICAgICMgSVNPIGZvcm1hdCB3aXRoIHRpbWV6b25lCisgICAgICAgIHR6ID0gRml4ZWRPZmZzZXQodGltZWRlbHRhKHNlY29uZHM9MTYpLCAnWFhYJykKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMiwgdHppbmZvPXR6KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDAyLTAzLTAyVDAwOjAwOjAwKzAwOjAwOjE2IikKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCkBAIC0xNjkxLDYgKzE3MjQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDApCisgICAgICAgICMgYmFkIGZvbGQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCBmb2xkPTIpCisgICAgICAgICMgUG9zaXRpb25hbCBmb2xkOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCAyMywgNTksIDU5LCAwLCBOb25lLCAxKQogCiAgICAgZGVmIHRlc3RfaGFzaF9lcXVhbGl0eShzZWxmKToKICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoMjAwMCwgMTIsIDMxLCAyMywgMzAsIDE3KQpAQCAtMTc5MCw2ICsxODMxLDcgQEAKICAgICAgICAgICAgIGdyZWVuID0gcGlja2xlci5kdW1wcyhvcmlnLCBwcm90bykKICAgICAgICAgICAgIGRlcml2ZWQgPSB1bnBpY2tsZXIubG9hZHMoZ3JlZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgIGRlZiB0ZXN0X21vcmVfcGlja2xpbmcoc2VsZik6CiAgICAgICAgIGEgPSBzZWxmLnRoZWNsYXNzKDIwMDMsIDIsIDcsIDE2LCA0OCwgMzcsIDQ0NDExNikKQEAgLTE4NzQsMTYgKzE5MTYsMjAgQEAKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwLjAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCi0gICAgICAgICMgTWlzc2luZyBob3VyIG1heSBwcm9kdWNlIHBsYXRmb3JtLWRlcGVuZGVudCByZXN1bHQKLSAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBbdCAtIHRpbWVkZWx0YShob3Vycz0xKSwgdCArIHRpbWVkZWx0YShob3Vycz0xKV0pCisgICAgICAgICMgTWlzc2luZyBob3VyCisgICAgICAgIHQwID0gc2VsZi50aGVjbGFzcygyMDEyLCAzLCAxMSwgMiwgMzApCisgICAgICAgIHQxID0gdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQxLnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0MCAtIHRpbWVkZWx0YShob3Vycz0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodDAudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHQxICsgdGltZWRlbHRhKGhvdXJzPTEpKQogICAgICAgICAjIEFtYmlndW91cyBob3VyIGRlZmF1bHRzIHRvIERTVAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgMSwgMzApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLCB0KQogCiAgICAgICAgICMgVGltZXN0YW1wIG1heSByYWlzZSBhbiBvdmVyZmxvdyBlcnJvciBvbiBzb21lIHBsYXRmb3JtcwotICAgICAgICBmb3IgdCBpbiBbc2VsZi50aGVjbGFzcygxLDEsMSksIHNlbGYudGhlY2xhc3MoOTk5OSwxMiwxMildOgorICAgICAgICAjIFhYWDogRG8gd2UgY2FyZSB0byBzdXBwb3J0IHRoZSBmaXJzdCBhbmQgbGFzdCB5ZWFyPworICAgICAgICBmb3IgdCBpbiBbc2VsZi50aGVjbGFzcygyLDEsMSksIHNlbGYudGhlY2xhc3MoOTk5OCwxMiwxMildOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHMgPSB0LnRpbWVzdGFtcCgpCiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKQEAgLTE5MDIsNiArMTk0OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKIAorICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdNU0stMDMnKSAgIyBTb21ldGhpbmcgZWFzdCBvZiBHcmVlbndpY2gKICAgICBkZWYgdGVzdF9taWNyb3NlY29uZF9yb3VuZGluZyhzZWxmKToKICAgICAgICAgZm9yIGZ0cyBpbiBbc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXBdOgpAQCAtMjA3NiwxMSArMjEyMywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUpICMgbmVlZCBhbiBhcmcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkKSAjIG5lZWQgdHdvIGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCB0LCBkKSAjIGFyZ3MgcmV2ZXJzZWQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCB0LCAxKSAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCB0LCAxKSAjIHdyb25nIHR6aW5mbyB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSwgMikgICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsICJkYXRlIiwgInRpbWUiKSAjIHdyb25nIHR5cGVzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgInRpbWUiKSAjIHdyb25nIHR5cGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCAiZGF0ZSIsIHQpICMgd3JvbmcgdHlwZQogCisgICAgICAgICMgdHppbmZvPSBhcmd1bWVudAorICAgICAgICBkdCA9IGNvbWJpbmUoZCwgdCwgdGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydElzKGR0LnR6aW5mbywgdGltZXpvbmUudXRjKQorICAgICAgICBkdCA9IGNvbWJpbmUoZCwgdCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkdC50emluZm8sIHRpbWV6b25lLnV0YykKKyAgICAgICAgdCA9IHRpbWUoKQorICAgICAgICBkdCA9IGNvbWJpbmUoZHQsIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZGF0ZSgpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnRpbWUoKSwgdCkKKwogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKICAgICAgICAgYXJncyA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3XQpAQCAtMjEwNyw2ICsyMTY1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYmFzZS5yZXBsYWNlLCB5ZWFyPTIwMDEpCiAKICAgICBkZWYgdGVzdF9hc3RpbWV6b25lKHNlbGYpOgorICAgICAgICByZXR1cm4gICMgVGhlIHJlc3QgaXMgbm8gbG9uZ2VyIGFwcGxpY2FibGUKICAgICAgICAgIyBQcmV0dHkgYm9yaW5nISAgVGhlIFRaIHRlc3QgaXMgbW9yZSBpbnRlcmVzdGluZyBoZXJlLiAgYXN0aW1lem9uZSgpCiAgICAgICAgICMgc2ltcGx5IGNhbid0IGJlIGFwcGxpZWQgdG8gYSBuYWl2ZSBvYmplY3QuCiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcy5ub3coKQpAQCAtMjMyNCw2ICsyMzgzLDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgIjAwOjAwOjAwLjEwMDAwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgc3RyKHQpKQogCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0xMjM0NTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2hvdXJzJyksICIxMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKSwgIjEyOjM0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nc2Vjb25kcycpLCAiMTI6MzQ6NTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2LjEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMTI6MzQ6NTYuMTIzNDU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMTI6MzQ6NTYuMTIzNDU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5pc29mb3JtYXQsIHRpbWVzcGVjPSdtb25rZXknKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD05OTk1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuOTk5IikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjEyOjM0OjU2LjAwMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjEyOjM0OjU2IikKKwogICAgIGRlZiB0ZXN0XzE2NTM3MzYoc2VsZik6CiAgICAgICAgICMgdmVyaWZ5IGl0IGRvZXNuJ3QgYWNjZXB0IGV4dHJhIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKHNlY29uZD0xKQpAQCAtMjM5NSw2ICsyNDcxLDcgQEAKICAgICAgICAgICAgIGdyZWVuID0gcGlja2xlci5kdW1wcyhvcmlnLCBwcm90bykKICAgICAgICAgICAgIGRlcml2ZWQgPSB1bnBpY2tsZXIubG9hZHMoZ3JlZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nX3N1YmNsYXNzX3RpbWUoc2VsZik6CiAgICAgICAgIGFyZ3MgPSAyMCwgNTksIDE2LCA2NCoqMgpAQCAtMjU4Miw5ICsyNjU5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC51dGNvZmZzZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuZHN0KQogCi0gICAgICAgICMgTm90IGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMuCisgICAgICAgICMgTm90IGEgd2hvbGUgbnVtYmVyIG9mIHNlY29uZHMuCiAgICAgICAgIGNsYXNzIEM3KHR6aW5mbyk6Ci0gICAgICAgICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShzZWNvbmRzPTYxKQorICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiB0aW1lZGVsdGEobWljcm9zZWNvbmRzPTYxKQogICAgICAgICAgICAgZGVmIGRzdChzZWxmLCBkdCk6IHJldHVybiB0aW1lZGVsdGEobWljcm9zZWNvbmRzPS04MSkKICAgICAgICAgdCA9IGNscygxLCAxLCAxLCB0emluZm89QzcoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC51dGNvZmZzZXQpCkBAIC0yNzU1LDYgKzI4MzIsNyBAQAogICAgICAgICAgICAgZ3JlZW4gPSBwaWNrbGVyLmR1bXBzKG9yaWcsIHByb3RvKQogICAgICAgICAgICAgZGVyaXZlZCA9IHVucGlja2xlci5sb2FkcyhncmVlbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgZGVyaXZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLl9fcmVkdWNlX18oKSwgb3JpZy5fX3JlZHVjZV9leF9fKDIpKQogCiAgICAgICAgICMgVHJ5IG9uZSB3aXRoIGEgdHppbmZvLgogICAgICAgICB0aW5mbyA9IFBpY2tsYWJsZUZpeGVkT2Zmc2V0KC0zMDAsICdjb29raWUnKQpAQCAtMjc2Niw2ICsyODQ0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZXJpdmVkLnR6aW5mbywgUGlja2xhYmxlRml4ZWRPZmZzZXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcml2ZWQudXRjb2Zmc2V0KCksIHRpbWVkZWx0YShtaW51dGVzPS0zMDApKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXJpdmVkLnR6bmFtZSgpLCAnY29va2llJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLl9fcmVkdWNlX18oKSwgb3JpZy5fX3JlZHVjZV9leF9fKDIpKQogCiAgICAgZGVmIHRlc3RfbW9yZV9ib29sKHNlbGYpOgogICAgICAgICAjIHRpbWUgaXMgYWx3YXlzIFRydWUuCkBAIC0yOTY5LDYgKzMwNDgsNyBAQAogICAgICAgICAgICAgZ3JlZW4gPSBwaWNrbGVyLmR1bXBzKG9yaWcsIHByb3RvKQogICAgICAgICAgICAgZGVyaXZlZCA9IHVucGlja2xlci5sb2FkcyhncmVlbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgZGVyaXZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLl9fcmVkdWNlX18oKSwgb3JpZy5fX3JlZHVjZV9leF9fKDIpKQogCiAgICAgICAgICMgVHJ5IG9uZSB3aXRoIGEgdHppbmZvLgogICAgICAgICB0aW5mbyA9IFBpY2tsYWJsZUZpeGVkT2Zmc2V0KC0zMDAsICdjb29raWUnKQpAQCAtMjk4MSw2ICszMDYxLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZXJpdmVkLnR6aW5mbywgUGlja2xhYmxlRml4ZWRPZmZzZXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcml2ZWQudXRjb2Zmc2V0KCksIHRpbWVkZWx0YShtaW51dGVzPS0zMDApKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXJpdmVkLnR6bmFtZSgpLCAnY29va2llJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLl9fcmVkdWNlX18oKSwgb3JpZy5fX3JlZHVjZV9leF9fKDIpKQogCiAgICAgZGVmIHRlc3RfZXh0cmVtZV9oYXNoZXMoc2VsZik6CiAgICAgICAgICMgSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGhhc2ggdGhlc2UgdmlhIHN1YnRyYWN0aW5nIHRoZSBvZmZzZXQKQEAgLTM5MjcsMTIgKzQwMDgsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXChnb3QgdHlwZSBzdHJcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgJzEwJykKIAogICAgICAgICBmMTAgPSBOdW1iZXIoMTAuOSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15fX2ludF9fIHJldHVybmVkIG5vbi1pbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCh0eXBlIGZsb2F0XCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKHR5cGUgZmxvYXRcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQogCiAgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKQEAgLTM5NTcsNSArNDAzOCw3OTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uCisKKyMgQW4gZXhwZXJpbWVudGFsIHJlaW1wbGVtZW50YXRpb24gb2YgZnJvbXV0YyB0aGF0IHJlc3BlY3RzIHRoZSAiZm9sZCIgZmxhZy4KKworY2xhc3MgdHppbmZvMih0emluZm8pOgorCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICAiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKyAgICAgICAgIyBSZXR1cm5lZCB2YWx1ZSBzYXRpc2ZpZXMKKyAgICAgICAgIyAgICAgICAgICBkdCArIGxkdC51dGNvZmZzZXQoKSA9IGxkdAorICAgICAgICBvZmYwID0gZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpCisgICAgICAgIG9mZjEgPSBkdC5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCkKKyAgICAgICAgaWYgb2ZmMCBpcyBOb25lIG9yIG9mZjEgaXMgTm9uZSBvciBkdC5kc3QoKSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiBvZmYwID09IG9mZjE6CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZjAKKyAgICAgICAgICAgIG9mZjEgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICMgTm93LCB3ZSBkaXNjb3ZlcmVkIGJvdGggcG9zc2libGUgb2Zmc2V0cywgc28KKyAgICAgICAgIyB3ZSBjYW4ganVzdCB0cnkgZm91ciBwb3NzaWJsZSBzb2x1dGlvbnM6CisgICAgICAgIGZvciBvZmYgaW4gW29mZjAsIG9mZjFdOgorICAgICAgICAgICAgbGR0ID0gZHQgKyBvZmYKKyAgICAgICAgICAgIGlmIGxkdC51dGNvZmZzZXQoKSA9PSBvZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorICAgICAgICAgICAgbGR0ID0gbGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gc3VpdGFibGUgbG9jYWwgdGltZSBmb3VuZCIpCisKKyMgUmVpbXBsZW1lbnRpbmcgc2ltcGxpZmllZCBVUyB0aW1lem9uZXMgdG8gcmVzcGVjdCB0aGUgImZvbGQiIGZsYWc6CisKK2NsYXNzIFVTVGltZVpvbmUyKHR6aW5mbzIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CisgICAgICAgIHNlbGYuc3Rkb2Zmc2V0ID0gdGltZWRlbHRhKGhvdXJzPWhvdXJzKQorICAgICAgICBzZWxmLnJlcHJuYW1lID0gcmVwcm5hbWUKKyAgICAgICAgc2VsZi5zdGRuYW1lID0gc3RkbmFtZQorICAgICAgICBzZWxmLmRzdG5hbWUgPSBkc3RuYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlcHJuYW1lCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgaWYgc2VsZi5kc3QoZHQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHN0bmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RkbmFtZQorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLnN0ZG9mZnNldCArIHNlbGYuZHN0KGR0KQorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGlmIGR0IGlzIE5vbmUgb3IgZHQudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG1heSBiZSBzZW5zaWJsZSBoZXJlLCBpbiBvbmUgb3IgbW9yZSBvZgorICAgICAgICAgICAgIyB0aGUgY2FzZXMuCisgICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKworICAgICAgICAjIEZpbmQgZmlyc3QgU3VuZGF5IGluIEFwcmlsLgorICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihEU1RTVEFSVC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBzdGFydC53ZWVrZGF5KCkgPT0gNiBhbmQgc3RhcnQubW9udGggPT0gNCBhbmQgc3RhcnQuZGF5IDw9IDcKKworICAgICAgICAjIEZpbmQgbGFzdCBTdW5kYXkgaW4gT2N0b2Jlci4KKyAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVEVORC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBlbmQud2Vla2RheSgpID09IDYgYW5kIGVuZC5tb250aCA9PSAxMCBhbmQgZW5kLmRheSA+PSAyNQorCisgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQorICAgICAgICAjIGR0IGZpcnN0LgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KKyAgICAgICAgICAgIHJldHVybiBIT1VSCisgICAgICAgIGVsaWYgZW5kIDw9IGR0IDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBlbGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8KKworRWFzdGVybjIgID0gVVNUaW1lWm9uZTIoLTUsICJFYXN0ZXJuMiIsICAiRVNUIiwgIkVEVCIpCitDZW50cmFsMiAgPSBVU1RpbWVab25lMigtNiwgIkNlbnRyYWwyIiwgICJDU1QiLCAiQ0RUIikKK01vdW50YWluMiA9IFVTVGltZVpvbmUyKC03LCAiTW91bnRhaW4yIiwgIk1TVCIsICJNRFQiKQorUGFjaWZpYzIgID0gVVNUaW1lWm9uZTIoLTgsICJQYWNpZmljMiIsICAiUFNUIiwgIlBEVCIpCisKKyMgRXVyb3BlX1ZpbG5pdXNfMTk0MSB0emluZm8gaW1wbGVtZW50YXRpb24gcmVwcm9kdWNlcyB0aGUgZm9sbG93aW5nCisjIDE5NDEgdHJhbnNpdGlvbiBmcm9tIE9sc29uJ3MgdHpkaXN0OgorIworIyBab25lIE5BTUUgICAgICAgICAgIEdNVE9GRiBSVUxFUyAgRk9STUFUIFtVTlRJTF0KKyMgWm9uZUV1cm9wZS9WaWxuaXVzICAxOjAwICAgLSAgICAgIENFVCAgICAxOTQwIEF1ZyAgMworIyAgICAgICAgICAgICAgICAgICAgIDM6MDAgICAtICAgICAgTVNLICAgIDE5NDEgSnVuIDI0CisjICAgICAgICAgICAgICAgICAgICAgMTowMCAgIEMtRXVyICBDRSVzVCAgMTk0NCBBdWcKKyMKKyMgJCB6ZHVtcCAtdiBFdXJvcGUvVmlsbml1cyB8IGdyZXAgMTk0MQorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMDo1OTo1OSAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0sgaXNkc3Q9MCBnbXRvZmY9MTA4MDAKKyMgRXVyb3BlL1ZpbG5pdXMgIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMgPSBNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCBpc2RzdD0xIGdtdG9mZj03MjAwCisKK2NsYXNzIEV1cm9wZV9WaWxuaXVzXzE5NDEodHppbmZvKToKKyAgICBkZWYgX3V0Y19mb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gW2RhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXNlbGYpLCAgIyBNb24gSnVuIDIzIDIxOjAwOjAwIDE5NDEgVVRDCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89c2VsZildICAjIE1vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMKKworICAgIGRlZiBfbG9jX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBNU0sgLyBDRVNUCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1zZWxmKV0gICAjIE1vbiBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gMyAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKDIgaWYgZHQuZm9sZCBlbHNlIDMpICogSE9VUgorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gMiAqIEhPVVIKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAwICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMSBpZiBkdC5mb2xkIGVsc2UgMCkgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAxICogSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuICdNU0snCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgnTVNLJywgJ0NFU1QnKVtkdC5mb2xkXQorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gJ0NFU1QnCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC5mb2xkID09IDAKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIGlmIGR0LnllYXIgIT0gMTk0MToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fdXRjX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gZHQgKyAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoZHQgKyAyICogSE9VUikucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiBkdCArIDIgKiBIT1VSCisKKworY2xhc3MgVGVzdExvY2FsVGltZURpc2FtYmlndWF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV9mcm9tdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIwLCA1OSwgNTksIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0srMDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGR0LmRzdCgpKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIENFU1QrMDIwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUdWUgSnVuIDI0IDAwOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV90b3V0YyhzZWxmKToKKyAgICAgICAgVmlsbml1cyA9IEV1cm9wZV9WaWxuaXVzXzE5NDEoKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgNTksIDU5LCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAxOTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMsIGZvbGQ9MSkKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIyOjAwOjAwIDE5NDEgVVRDJykKKworCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwLCBmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5mb2xkLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0aW1lKDAsIDAsIDAsIDAsIE5vbmUsIDApCisKKyAgICBkZWYgdGVzdF9tZW1iZXIoc2VsZik6CisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICB0ID0gZHQudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICB0ID0gZHQudGltZXR6KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVwbGFjZW1lbnQgb2Ygb3RoZXIgZmllbGRzIGRvZXMgbm90IGNoYW5nZSAiZm9sZCIuCisgICAgICAgIHQgPSB0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKGZvbGQ9MSwgdHppbmZvPUVhc3Rlcm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKHR6aW5mbz1Ob25lKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgICMgQ2hlY2sgdGhhdCBmb2xkIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVwbGFjZSgxLCAxLCAxLCBOb25lLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkdC5yZXBsYWNlKDEsIDEsIDEsIDEsIDEsIDEsIDEsIE5vbmUsIDEpCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5yZXBsYWNlKGZvbGQ9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGR0LnJlcGxhY2UoZm9sZD0xKSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGR0KSwgaGFzaChkdC5yZXBsYWNlKGZvbGQ9MSkpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgcyA9IDE0MTQ5MDYyMDAKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICBkdDEgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMgKyAzNjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MS5mb2xkLCAxKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X2Zyb210aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE1ODcwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhEVCAyMDE1CisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE2MDUwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhTVCAyMDE1CisgICAgICAgIHMgPSAxNDI4MTU4NzAwCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICB0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDE4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEuZm9sZCwgMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDAudGltZXN0YW1wKCkgKyAzNjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGR0MS50aW1lc3RhbXAoKSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdBdXN0cmFsaWEvTG9yZF9Ib3dlJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDE1LCA0LCA1LCAxLCA0NSkKKyAgICAgICAgczAgPSB0LnJlcGxhY2UoZm9sZD0wKS50aW1lc3RhbXAoKQorICAgICAgICBzMSA9IHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczAgKyAxODAwLCBzMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUoMjAxNCwgMTEsIDIsIDEsIDMwKQorICAgICAgICBkdDEgPSBkdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgQ29udmVydCBib3RoIG5haXZlIGluc3RhbmNlcyB0byBhd2FyZS4KKyAgICAgICAgYWR0MCA9IGR0MC5hc3RpbWV6b25lKCkKKyAgICAgICAgYWR0MSA9IGR0MS5hc3RpbWV6b25lKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaXJzdCBpbnN0YW5jZSBpbiBEU1Qgem9uZSBhbmQgdGhlIHNlY29uZCBpbiBTVEQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLnR6bmFtZSgpLCAnRURUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQxLnR6bmFtZSgpLCAnRVNUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwICsgSE9VUiwgYWR0MSkKKyAgICAgICAgIyBBd2FyZSBpbnN0YW5jZXMgd2l0aCBmaXhlZCBvZmZzZXQgdHppbmZvJ3MgYWx3YXlzIGhhdmUgZm9sZD0wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEuZm9sZCwgMCkKKworCisgICAgZGVmIHRlc3RfcGlja2xlX2ZvbGQoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIGZvciBwaWNrbGVyLCB1bnBpY2tsZXIsIHByb3RvIGluIHBpY2tsZV9jaG9pY2VzOgorICAgICAgICAgICAgZm9yIHggaW4gW3QsIGR0XToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlci5kdW1wcyh4LCBwcm90bykKKyAgICAgICAgICAgICAgICB5ID0gdW5waWNrbGVyLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAgaWYgcHJvdG8gPCA0IGVsc2UgeC5mb2xkKSwgeS5mb2xkKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAnZGF0ZXRpbWUudGltZSgwLCAwLCBmb2xkPTEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgZm9sZD0xKScpCisKKyAgICBkZWYgdGVzdF9kc3Qoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5kc3QoKSwgWkVSTykKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBmb2xkLgorICAgICAgICBmb3IgbWludXRlIGluIFswLCAzMCwgNTldOgorICAgICAgICAgICAgZHQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIEhPVVIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBnYXAuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIFpFUk8pCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorCisKKyAgICBkZWYgdGVzdF91dGNvZmZzZXQoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnV0Y29mZnNldCgpLCAtNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisgICAgICAgICMgVGhlIGRpc2FtYmlndWF0aW9uIGZsYWcgaXMgaWdub3JlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisKKyAgICBkZWYgdGVzdF9mcm9tdXRjKHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIHVfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgdV93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDcsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9zdW1tZXIgPSBFYXN0ZXJuMi5mcm9tdXRjKHVfc3VtbWVyKQorICAgICAgICB0X3dpbnRlciA9IEVhc3Rlcm4yLmZyb211dGModV93aW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIsIHVfc3VtbWVyIC0gNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF93aW50ZXIsIHVfd2ludGVyIC0gNSAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlci5mb2xkLCAwKQorCisgICAgICAgICMgV2hhdCBoYXBwZW5zIGluIHRoZSBmYWxsLWJhY2sgZm9sZD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdDAgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHUgKz0gSE9VUgorICAgICAgICB0MSA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorICAgICAgICAjIFRoZSB0cmlja3kgcGFydCBpcyB3aGVuIHUgaXMgaW4gdGhlIGxvY2FsIGZvbGQ6CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoMjYsIDIxKSkKKyAgICAgICAgIyAuLiBvciBnZXRzIGludG8gdGhlIGxvY2FsIGZvbGQgYWZ0ZXIgYSBzdGFuZGFyZCB0aW1lIGFkanVzdG1lbnQKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNiwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNywgMSkpCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICg2LCAyMSkpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX3JlZ3VsYXIoc2VsZik6CisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCAxLCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCA2LCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2ZvbGQoc2VsZik6CisgICAgICAgIHRfZm9sZCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9mb2xkX3V0YyA9IHRfZm9sZC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2ZvbGQsIHRfZm9sZF91dGMpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2dhcChzZWxmKToKKyAgICAgICAgdF9nYXAgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcF91dGMgPSB0X2dhcC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2dhcCwgdF9nYXBfdXRjKQorCisgICAgZGVmIHRlc3RfaGFzaF9hd2FyZShzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2ZvbGQpLCBoYXNoKHRfZm9sZC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godF9nYXApLCBoYXNoKHRfZ2FwLnJlcGxhY2UoZm9sZD0xKSkpCisKK1NFQyA9IHRpbWVkZWx0YSgwLCAxKQorCitkZWYgcGFpcnMoaXRlcmFibGUpOgorICAgIGEsIGIgPSBpdGVydG9vbHMudGVlKGl0ZXJhYmxlKQorICAgIG5leHQoYiwgTm9uZSkKKyAgICByZXR1cm4gemlwKGEsIGIpCisKK2NsYXNzIFpvbmVJbmZvKHR6aW5mbyk6CisgICAgem9uZXJvb3QgPSAnL3Vzci9zaGFyZS96b25laW5mbycKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXQsIHRpKToKKyAgICAgICAgIiIiCisKKyAgICAgICAgOnBhcmFtIHV0OiBhcnJheQorICAgICAgICAgICAgQXJyYXkgb2YgdHJhbnNpdGlvbiBwb2ludCB0aW1lc3RhbXBzCisgICAgICAgIDpwYXJhbSB0aTogbGlzdAorICAgICAgICAgICAgQSBsaXN0IG9mIChvZmZzZXQsIGlzZHN0LCBhYmJyKSB0dXBsZXMKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi51dCA9IHV0CisgICAgICAgIHNlbGYudGkgPSB0aQorICAgICAgICBzZWxmLmx0ID0gc2VsZi5pbnZlcnQodXQsIHRpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBpbnZlcnQodXQsIHRpKToKKyAgICAgICAgbHQgPSAoYXJyYXkoJ3EnLCB1dCksIGFycmF5KCdxJywgdXQpKQorICAgICAgICBpZiB1dDoKKyAgICAgICAgICAgIG9mZnNldCA9IHRpWzBdWzBdIC8vIFNFQworICAgICAgICAgICAgbHRbMF1bMF0gKz0gb2Zmc2V0CisgICAgICAgICAgICBsdFsxXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih1dCkpOgorICAgICAgICAgICAgICAgIGx0WzBdW2ldICs9IHRpW2ktMV1bMF0gLy8gU0VDCisgICAgICAgICAgICAgICAgbHRbMV1baV0gKz0gdGlbaV1bMF0gLy8gU0VDCisgICAgICAgIHJldHVybiBsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDMyKQorICAgICAgICBjb3VudHMgPSBhcnJheSgnaScpCisgICAgICAgIGNvdW50cy5mcm9tZmlsZShmaWxlb2JqLCAzKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgY291bnRzLmJ5dGVzd2FwKCkKKworICAgICAgICB1dCA9IGFycmF5KCdpJykKKyAgICAgICAgdXQuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdXQuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIGNvdW50c1swXSkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnRzWzFdKToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKGNvdW50c1syXSkKKworICAgICAgICAjIENvbnZlcnQgdHRpcworICAgICAgICBmb3IgaSwgKGdtdG9mZiwgaXNkc3QsIGFiYnJpbmQpIGluIGVudW1lcmF0ZSh0dGlzKToKKyAgICAgICAgICAgIGFiYnIgPSBhYmJyc1thYmJyaW5kOmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICB0dGlzW2ldID0gKHRpbWVkZWx0YSgwLCBnbXRvZmYpLCBpc2RzdCwgYWJicikKKworICAgICAgICB0aSA9IFtOb25lXSAqIGxlbih1dCkKKyAgICAgICAgZm9yIGksIGlkeCBpbiBlbnVtZXJhdGUodHlwZV9pbmRpY2VzKToKKyAgICAgICAgICAgIHRpW2ldID0gdHRpc1tpZHhdCisKKyAgICAgICAgc2VsZiA9IGNscyh1dCwgdGkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tbmFtZShjbHMsIG5hbWUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGNscy56b25lcm9vdCwgbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gY2xzLmZyb21maWxlKGYpCisKKyAgICBFUE9DSE9SRElOQUwgPSBkYXRlKDE5NzAsIDEsIDEpLnRvb3JkaW5hbCgpCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICIiImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIiIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKworICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorCisgICAgICAgIGlmIHRpbWVzdGFtcCA8IHNlbGYudXRbMV06CisgICAgICAgICAgICB0dGkgPSBzZWxmLnRpWzBdCisgICAgICAgICAgICBmb2xkID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChzZWxmLnV0LCB0aW1lc3RhbXApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi51dFtpZHgtMV0gPD0gdGltZXN0YW1wCisgICAgICAgICAgICBhc3NlcnQgaWR4ID09IGxlbihzZWxmLnV0KSBvciB0aW1lc3RhbXAgPCBzZWxmLnV0W2lkeF0KKyAgICAgICAgICAgIHR0aV9wcmV2LCB0dGkgPSBzZWxmLnRpW2lkeC0yOmlkeF0KKyAgICAgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgICAgIHNoaWZ0ID0gdHRpX3ByZXZbMF0gLSB0dGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAoc2hpZnQgPiB0aW1lZGVsdGEoMCwgdGltZXN0YW1wIC0gc2VsZi51dFtpZHgtMV0pKQorICAgICAgICBkdCArPSB0dGlbMF0KKyAgICAgICAgaWYgZm9sZDoKKyAgICAgICAgICAgIHJldHVybiBkdC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBkdAorCisgICAgZGVmIF9maW5kX3RpKHNlbGYsIGR0LCBpKToKKyAgICAgICAgdGltZXN0YW1wID0gKChkdC50b29yZGluYWwoKSAtIHNlbGYuRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCisgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICArIGR0LnNlY29uZCkKKyAgICAgICAgbHQgPSBzZWxmLmx0W2R0LmZvbGRdCisgICAgICAgIGlkeCA9IGJpc2VjdC5iaXNlY3RfcmlnaHQobHQsIHRpbWVzdGFtcCkKKworICAgICAgICByZXR1cm4gc2VsZi50aVttYXgoMCwgaWR4IC0gMSldW2ldCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdGkoZHQsIDApCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaXNkc3QgPSBzZWxmLl9maW5kX3RpKGR0LCAxKQorICAgICAgICAjIFhYWDogV2UgY2Fubm90IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSAic2F2ZSIgdmFsdWUsCisgICAgICAgICMgc28gbGV0J3MgcmV0dXJuIDFoIHdoZW5ldmVyIERTVCBpcyBpbiBlZmZlY3QuICBTaW5jZQorICAgICAgICAjIHdlIGRvbid0IHVzZSBkc3QoKSBpbiBmcm9tdXRjKCksIGl0IGlzIHVubGlrZWx5IHRoYXQKKyAgICAgICAgIyBpdCB3aWxsIGJlIG5lZWRlZCBmb3IgYW55dGhpbmcgbW9yZSB0aGFuIGJvb2woZHN0KCkpLgorICAgICAgICByZXR1cm4gWkVSTyBpZiBpc2RzdCBlbHNlIEhPVVIKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbmFtZXMoY2xzLCB6b25lZGlyPU5vbmUpOgorICAgICAgICBpZiB6b25lZGlyIGlzIE5vbmU6CisgICAgICAgICAgICB6b25lZGlyID0gY2xzLnpvbmVyb290CisgICAgICAgIHpvbmVfdGFiID0gb3MucGF0aC5qb2luKHpvbmVkaXIsICd6b25lLnRhYicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKHpvbmVfdGFiKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUuc3BsaXQoKVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0YXRzKGNscywgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSBnYXBfY291bnQgPSBmb2xkX2NvdW50ID0gemVyb3NfY291bnQgPSAwCisgICAgICAgIG1pbl9nYXAgPSBtaW5fZm9sZCA9IHRpbWVkZWx0YS5tYXgKKyAgICAgICAgbWF4X2dhcCA9IG1heF9mb2xkID0gWkVSTworICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gbWF4X2dhcF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZ2FwX3pvbmUgPSBtYXhfZ2FwX3pvbmUgPSBOb25lCisgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gbWF4X2ZvbGRfZGF0ZXRpbWUgPSBkYXRldGltZS5taW4KKyAgICAgICAgbWluX2ZvbGRfem9uZSA9IG1heF9mb2xkX3pvbmUgPSBOb25lCisgICAgICAgIHN0YXRzX3NpbmNlID0gZGF0ZXRpbWUoc3RhcnRfeWVhciwgMSwgMSkgIyBTdGFydGluZyBmcm9tIDE5NzAgZWxpbWluYXRlcyBhIGxvdCBvZiBub2lzZQorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICAgICAgaWYgZHQgPCBzdGF0c19zaW5jZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzaGlmdCA+IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGdhcF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9nYXAsIGRhdGV0aW1lLm1heCAtIG1pbl9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgZWxpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGZvbGRfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IC1zaGlmdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGR0KSA+IChtYXhfZm9sZCwgbWF4X2ZvbGRfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGQgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGRfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9mb2xkLCBkYXRldGltZS5tYXggLSBtaW5fZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB6ZXJvc19jb3VudCArPSAxCisgICAgICAgIHRyYW5zX2NvdW50cyA9IChnYXBfY291bnQsIGZvbGRfY291bnQsIHplcm9zX2NvdW50KQorICAgICAgICBwcmludCgiTnVtYmVyIG9mIHpvbmVzOiAgICAgICAlNWQiICUgY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2YgdHJhbnNpdGlvbnM6ICU1ZCA9ICVkIChnYXBzKSArICVkIChmb2xkcykgKyAlZCAoemVyb3MpIiAlCisgICAgICAgICAgICAgICgoc3VtKHRyYW5zX2NvdW50cyksKSArIHRyYW5zX2NvdW50cykpCisgICAgICAgIHByaW50KCJNaW4gZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9nYXAsIG1pbl9nYXBfZGF0ZXRpbWUsIG1pbl9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUsIG1heF9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNaW4gZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9mb2xkLCBtaW5fZm9sZF9kYXRldGltZSwgbWluX2ZvbGRfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSwgbWF4X2ZvbGRfem9uZSkpCisKKworICAgIGRlZiB0cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCksIHNoaWZ0CisKKyAgICBkZWYgbm9uZHN0X2ZvbGRzKHNlbGYpOgorICAgICAgICAiIiJGaW5kIGFsbCBmb2xkcyB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIGlzZHN0IG9uIGJvdGggc2lkZXMgb2YgdGhlIHRyYW5zaXRpb24uIiIiCisgICAgICAgIGZvciAoXywgcHJldl90aSksICh0LCB0aSkgaW4gcGFpcnMoemlwKHNlbGYudXQsIHNlbGYudGkpKToKKyAgICAgICAgICAgIHNoaWZ0ID0gdGlbMF0gLSBwcmV2X3RpWzBdCisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk8gYW5kIHRpWzFdID09IHByZXZfdGlbMV06CisgICAgICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgLXNoaWZ0LCBwcmV2X3RpWzJdLCB0aVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHByaW50X2FsbF9ub25kc3RfZm9sZHMoY2xzLCBzYW1lX2FiYnI9RmFsc2UsIHN0YXJ0X3llYXI9MSk6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0LCBwcmV2X2FiYnIsIGFiYnIgaW4gdHoubm9uZHN0X2ZvbGRzKCk6CisgICAgICAgICAgICAgICAgaWYgZHQueWVhciA8IHN0YXJ0X3llYXIgb3Igc2FtZV9hYmJyIGFuZCBwcmV2X2FiYnIgIT0gYWJicjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgcHJpbnQoIiUzZCkgJS0zMHMgJXMgJTEwcyAlNXMgLT4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAoY291bnQsIHpvbmVuYW1lLCBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJicikpCisKKyAgICBkZWYgZm9sZHMoc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgeWllbGQgdCwgLXNoaWZ0CisKKyAgICBkZWYgZ2FwcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCBzaGlmdAorCisgICAgZGVmIHplcm9zKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgbm90IHNoaWZ0OgorICAgICAgICAgICAgICAgIHlpZWxkIHQKKworCitjbGFzcyBab25lSW5mb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHpvbmVuYW1lID0gJ0FtZXJpY2EvTmV3X1lvcmsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgem9uZWluZm8gdGVzdHMgb24gV2luZG93cyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudHogPSBab25lSW5mby5mcm9tbmFtZShzZWxmLnpvbmVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXM6ICVzIiAlIChzZWxmLnpvbmVuYW1lLCBlcnIpKQorCisgICAgZGVmIGFzc2VydEVxdWl2RGF0ZXRpbWVzKHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLnJlcGxhY2UodHppbmZvPU5vbmUpLCBhLmZvbGQsIGlkKGEudHppbmZvKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGIucmVwbGFjZSh0emluZm89Tm9uZSksIGIuZm9sZCwgaWQoYi50emluZm8pKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRzKHNlbGYpOgorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei5mb2xkcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAxKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0ICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMobGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpKQorCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X2dhcHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmdhcHMoKToKKyAgICAgICAgICAgIGZvciB4IGluIFswICogc2hpZnQsIDAuNSAqIHNoaWZ0LCBzaGlmdCAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uXToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgICAgICAgICBhZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS5hc3RpbWV6b25lKHR6KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoYWR0LCBsZHQpCisgICAgICAgICAgICAgICAgdXRjb2Zmc2V0ID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQucmVwbGFjZSh0emluZm89Tm9uZSksIHVkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSArIHV0Y29mZnNldCkKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIHRpbWUgaW5zaWRlIHRoZSBnYXAKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKGR0LnJlcGxhY2UodHppbmZvPXR6KSkgLSBzaGlmdCArIHgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGR0LnJlcGxhY2UoZm9sZD0wKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0ICVzLiIgJSBsZHQpCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdC5yZXBsYWNlKHR6aW5mbz10eikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV90cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgKCdSaXlhZGg4JyBpbiBzZWxmLnpvbmVuYW1lIG9yCisgICAgICAgICAgICAjIEZyb20gdHpkYXRhIE5FV1MgZmlsZToKKyAgICAgICAgICAgICMgVGhlIGZpbGVzIHNvbGFyODcsIHNvbGFyODgsIGFuZCBzb2xhcjg5IGFyZSBubyBsb25nZXIgZGlzdHJpYnV0ZWQuCisgICAgICAgICAgICAjIFRoZXkgd2VyZSBhIG5lZ2F0aXZlIGV4cGVyaW1lbnQgLSB0aGF0IGlzLCBhIGRlbW9uc3RyYXRpb24gdGhhdAorICAgICAgICAgICAgIyB0eiBkYXRhIGNhbiByZXByZXNlbnQgc29sYXIgdGltZSBvbmx5IHdpdGggc29tZSBkaWZmaWN1bHR5IGFuZCBlcnJvci4KKyAgICAgICAgICAgICMgVGhlaXIgcHJlc2VuY2UgaW4gdGhlIGRpc3RyaWJ1dGlvbiBjYXVzZWQgY29uZnVzaW9uLCBhcyBSaXlhZGgKKyAgICAgICAgICAgICMgY2l2aWwgdGltZSB3YXMgZ2VuZXJhbGx5IG5vdCBzb2xhciB0aW1lIGluIHRob3NlIHllYXJzLgorICAgICAgICAgICAgICAgIHNlbGYuem9uZW5hbWUuc3RhcnRzd2l0aCgncmlnaHQvJykpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXMiICUgc2VsZi56b25lbmFtZSkKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIFRaID0gb3MuZW52aXJvbi5nZXQoJ1RaJykKKyAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IHNlbGYuem9uZW5hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3RpbWUudHpzZXQoKQorICAgICAgICAgICAgZm9yIHVkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiB1ZHQueWVhciA+PSAyMDM3OgorICAgICAgICAgICAgICAgICAgICAjIFN5c3RlbSBzdXBwb3J0IGZvciB0aW1lcyBhcm91bmQgdGhlIGVuZCBvZiAzMi1iaXQgdGltZV90CisgICAgICAgICAgICAgICAgICAgICMgYW5kIGxhdGVyIGlzIGZsYWt5IG9uIG1hbnkgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzMCA9ICh1ZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxKSkgLy8gU0VDCisgICAgICAgICAgICAgICAgc3MgPSBzaGlmdCAvLyBTRUMgICAjIHNoaWZ0IHNlY29uZHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBbLTQwICogMzYwMCwgLTIwKjM2MDAsIC0xLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcyAtIDEsIHNzICsgMjAgKiAzNjAwLCBzcyArIDQwICogMzYwMF06CisgICAgICAgICAgICAgICAgICAgIHMgPSBzMCArIHgKKyAgICAgICAgICAgICAgICAgICAgc2R0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICAgICAgICAgICAgICB0emR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzLCB0eikucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhzZHQsIHR6ZHQpCisgICAgICAgICAgICAgICAgICAgIHMxID0gc2R0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgczEpCisgICAgICAgICAgICAgICAgaWYgc3MgPiAwOiAgIyBnYXAKKyAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoczApIC0gc2hpZnQgLyAyCisgICAgICAgICAgICAgICAgICAgIHRzMCA9IGR0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHRzMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRzMCwgczAgKyBzcyAvIDIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMxLCBzMCAtIHNzIC8gMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIFRaIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IFRaCisgICAgICAgICAgICBfdGltZS50enNldCgpCisKKworY2xhc3MgWm9uZUluZm9Db21wbGV0ZVRlc3QodW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgaWYgaXNfcmVzb3VyY2VfZW5hYmxlZCgndHpkYXRhJyk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBab25lSW5mby56b25lbmFtZXMoKToKKyAgICAgICAgICAgICAgICBUZXN0ID0gdHlwZSgnWm9uZUluZm9UZXN0WyVzXScgJSBuYW1lLCAoWm9uZUluZm9UZXN0LCksIHt9KQorICAgICAgICAgICAgICAgIFRlc3Quem9uZW5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIoVGVzdCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCd0ZXN0XycpOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3QobWV0aG9kKSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyh0ZXN0cykKKworIyBJcmFuIGhhZCBhIHN1Yi1taW51dGUgVVRDIG9mZnNldCBiZWZvcmUgMTk0Ni4KK2NsYXNzIElyYW5UZXN0KFpvbmVJbmZvVGVzdCk6CisgICAgem9uZW5hbWUgPSAnQXNpYS9UZWhyYW4nCisKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3QoWm9uZUluZm9Db21wbGV0ZVRlc3QoKSkKKyAgICByZXR1cm4gc3RhbmRhcmRfdGVzdHMKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjJkNGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQKQEAgLTAsMCArMSw1IEBACitCRUdJTgoreworICAgIHByaW50ZigicHJvYmU6IHN1Y2Nlc3NcbiIpOworICAgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApAQCAtMCwwICsxLDUgQEAKK3Byb2JlIGJlZ2luCit7CisgIHByaW50bG4oInByb2JlOiBzdWNjZXNzIikKKyAgZXhpdCAoKQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTBlOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQKQEAgLTAsMCArMSwzMSBAQAorc2VsZiBpbnQgaW5kZW50OworCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgc2VsZi0+aW5kZW50Kys7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9zZWxmLT50cmFjZS8KK3sKKyAgICBzZWxmLT5pbmRlbnQtLTsKKyAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOyAKKyAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzg0OWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwxOCBAQAorIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZjNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpAQCAtMCwwICsxLDMwIEBACitkZWYgZnVuY3Rpb25fMSgpOgorICAgIGZ1bmN0aW9uXzMoMSwgMikKKworIyBDaGVjayBzdGFja3RyYWNlCitkZWYgZnVuY3Rpb25fMigpOgorICAgIGZ1bmN0aW9uXzEoKQorCisjIENBTExfRlVOQ1RJT05fVkFSCitkZWYgZnVuY3Rpb25fMyhkdW1teSwgZHVtbXkyKToKKyAgICBwYXNzCisKKyMgQ0FMTF9GVU5DVElPTl9LVworZGVmIGZ1bmN0aW9uXzQoKipkdW1teSk6CisgICAgcmV0dXJuIDEKKyAgICByZXR1cm4gMiAgIyB1bnJlYWNoYWJsZQorCisjIENBTExfRlVOQ1RJT05fVkFSX0tXCitkZWYgZnVuY3Rpb25fNShkdW1teSwgZHVtbXkyLCAqKmR1bW15Myk6CisgICAgaWYgRmFsc2U6CisgICAgICAgIHJldHVybiA3CisgICAgcmV0dXJuIDgKKworZGVmIHN0YXJ0KCk6CisgICAgZnVuY3Rpb25fMSgpCisgICAgZnVuY3Rpb25fMigpCisgICAgZnVuY3Rpb25fMygxLCAyKQorICAgIGZ1bmN0aW9uXzQodGVzdD00MikKKyAgICBmdW5jdGlvbl81KCooMSwgMiksICoqeyJ0ZXN0IjogNDJ9KQorCitzdGFydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA4MmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApAQCAtMCwwICsxLDQxIEBACitnbG9iYWwgdHJhY2luZworCitmdW5jdGlvbiBiYXNlbmFtZTpzdHJpbmcocGF0aDpzdHJpbmcpCit7CisgICAgbGFzdF90b2tlbiA9IHRva2VuID0gdG9rZW5pemUocGF0aCwgIi8iKTsKKyAgICB3aGlsZSAodG9rZW4gIT0gIiIpIHsKKyAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuOworICAgICAgICB0b2tlbiA9IHRva2VuaXplKCIiLCAiLyIpOworICAgIH0KKyAgICByZXR1cm4gbGFzdF90b2tlbjsKK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpLCBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgIGxpbmVubyA9ICRhcmczOworCisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsCisgICAgICAgICAgICAgICBiYXNlbmFtZShmaWxlbmFtZSksIGZ1bmNuYW1lLCBsaW5lbm8pOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2YzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTE0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKQEAgLTAsMCArMSwxOCBAQAorcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAxOworfQorCitweXRob24kdGFyZ2V0Ojo6Z2Mtc3RhcnQsCitweXRob24kdGFyZ2V0Ojo6Z2MtZG9uZQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCVzOiVsZFxuIiwgdGltZXN0YW1wLCBwcm9iZW5hbWUsIGFyZzApOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnYy1zdGFydDowCitnYy1kb25lOjAKK2djLXN0YXJ0OjEKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MgorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NGE3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5CkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBnYworCitkZWYgc3RhcnQoKToKKyAgICBnYy5jb2xsZWN0KDApCisgICAgZ2MuY29sbGVjdCgxKQorICAgIGdjLmNvbGxlY3QoMikKKyAgICBsID0gW10KKyAgICBsLmFwcGVuZChsKQorICAgIGRlbCBsCisgICAgZ2MuY29sbGVjdCgyKQorCitnYy5jb2xsZWN0KCkKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyYzZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwCkBAIC0wLDAgKzEsMjYgQEAKK2dsb2JhbCB0cmFjaW5nCisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAxOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJnY19fc3RhcnQiKSwgcHJvY2Vzcy5tYXJrKCJnY19fZG9uZSIpCit7CisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCBnZXR0aW1lb2ZkYXlfdXMoKSwgJCRuYW1lLCAkYXJnMSk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZlNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnY19fc3RhcnQ6MAorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjEKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZTowCitnY19fc3RhcnQ6MgorZ2NfX2RvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE0MjEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGdjCisKK2NsYXNzIG9sZF9zdHlsZV9jbGFzcygpOgorICAgIHBhc3MKK2NsYXNzIG5ld19zdHlsZV9jbGFzcyhvYmplY3QpOgorICAgIHBhc3MKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgYQorZ2MuY29sbGVjdCgpCitiID0gbmV3X3N0eWxlX2NsYXNzKCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgb2xkX3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIG5ld19zdHlsZV9jbGFzcworZ2MuY29sbGVjdCgpCitkZWwgYQorZ2MuY29sbGVjdCgpCitkZWwgYgorZ2MuY29sbGVjdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZApAQCAtMCwwICsxLDcgQEAKK3B5dGhvbiR0YXJnZXQ6OjpsaW5lCisvKGNvcHlpbnN0cihhcmcxKT09InRlc3RfbGluZSIpLworeworICAgIHByaW50ZigiJWRcdCVzOiVzOiVzOiVkXG4iLCB0aW1lc3RhbXAsCisgICAgICAgIHByb2JlbmFtZSwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwKKyAgICAgICAgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxNmNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsMjAgQEAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTozCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo5CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzMGZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpAQCAtMCwwICsxLDE3IEBACitkZWYgdGVzdF9saW5lKCk6CisgICAgYSA9IDEKKyAgICBwcmludCgnIyBQcmVhbWJsZScsIGEpCisgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgIGEgPSBpCisgICAgICAgIGIgPSBpKzIKKyAgICAgICAgYyA9IGkrMworICAgICAgICBpZiBjIDwgNDoKKyAgICAgICAgICAgIGEgPSBjCisgICAgICAgIGQgPSBhICsgYiArYworICAgICAgICBwcmludCgnIycsIGEsIGIsIGMsIGQpCisgICAgYSA9IDEKKyAgICBwcmludCgnIyBFcGlsb2d1ZScsIGEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X2xpbmUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weSBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKaW5kZXggZTNmMWFhNS4uZDE5NGU3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC05LDcgKzksNyBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbApAQCAtMjAsNiArMjAsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorYW5kcm9pZF9ub3Rfcm9vdCA9IHN1cHBvcnQuYW5kcm9pZF9ub3Rfcm9vdAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIGtpbGxfb25fZXJyb3IocHJvYyk6CkBAIC01MCw2ICs1MSwxMCBAQAogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgY2xzLnNpZ25hbF9kZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2lnbmFsX3BlcmlvZCkKIAorICAgICAgICAjIElzc3VlICMyNTI3NzogVXNlIGZhdWx0aGFuZGxlciB0byB0cnkgdG8gZGVidWcgYSBoYW5nIG9uIEZyZWVCU0QKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKDEwICogNjAsIGV4aXQ9VHJ1ZSkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzdG9wX2FsYXJtKGNscyk6CiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCAwLCAwKQpAQCAtNTgsNiArNjMsOCBAQAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgIGNscy5zdG9wX2FsYXJtKCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgY2xzLm9yaWdfaGFuZGxlcikKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQogCiAgICAgZGVmIHN1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBjbWRfYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1jJykgKyBhcmdzCkBAIC03Nyw2ICs4NCw5IEBACiAgICAgICAgIHByb2Nlc3NlcyA9IFtzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkgZm9yIF8gaW4gcmFuZ2UobnVtKV0KICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtKToKICAgICAgICAgICAgIHdhaXRfZnVuYygpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIGZvciBwcm9jIGluIHByb2Nlc3NlczoKKyAgICAgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUob3Mud2FpdCkKQEAgLTg4LDYgKzk4LDggQEAKICAgICBkZWYgX3Rlc3Rfd2FpdF9zaW5nbGUoc2VsZiwgd2FpdF9mdW5jKToKICAgICAgICAgcHJvYyA9IHNlbGYubmV3X3NsZWVwX3Byb2Nlc3MoKQogICAgICAgICB3YWl0X2Z1bmMocHJvYy5waWQpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXRwaWQocGlkLCAwKSkKQEAgLTMwMCw2ICszMTIsNyBAQAogICAgICMgaHR0cHM6Ly9idWdzLmZyZWVic2Qub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMDMxNjIKICAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oMTAsIDMpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ21rZmlmbycpLCAnbmVlZHMgbWtmaWZvKCknKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIF90ZXN0X29wZW4oc2VsZiwgZG9fb3Blbl9jbG9zZV9yZWFkZXIsIGRvX29wZW5fY2xvc2Vfd3JpdGVyKToKICAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDA1MTM3NjUuLjczMzNiMmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICArLS0gQnVmZmVyRXJyb3IKICAgICAgICstLSBFT0ZFcnJvcgogICAgICAgKy0tIEltcG9ydEVycm9yCisgICAgICAgICAgICstLSBNb2R1bGVOb3RGb3VuZEVycm9yCiAgICAgICArLS0gTG9va3VwRXJyb3IKICAgICAgIHwgICAgKy0tIEluZGV4RXJyb3IKICAgICAgIHwgICAgKy0tIEtleUVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTBlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LmNtZGxpbmUgaW1wb3J0IF9wYXJzZV9hcmdzLCBSRVNPVVJDRV9OQU1FUworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0Lm1haW4gaW1wb3J0IG1haW4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjFmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5CkBAIC0wLDAgKzEsMzQ3IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworVVNBR0UgPSAiIiJcCitweXRob24gLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KK3B5dGhvbiBwYXRoL3RvL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorIiIiCisKK0RFU0NSSVBUSU9OID0gIiIiXAorUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLgorCitJZiBubyBhcmd1bWVudHMgb3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIGZpbmRzIGFsbCBmaWxlcyBtYXRjaGluZwordGhlIHBhdHRlcm4gInRlc3RfKiIgaW4gdGhlIExpYi90ZXN0IHN1YmRpcmVjdG9yeSBhbmQgcnVucwordGhlbSBpbiBhbHBoYWJldGljYWwgb3JkZXIgKGJ1dCBzZWUgLU0gYW5kIC11LCBiZWxvdywgZm9yIGV4Y2VwdGlvbnMpLgorCitGb3IgbW9yZSByaWdvcm91cyB0ZXN0aW5nLCBpdCBpcyB1c2VmdWwgdG8gdXNlIHRoZSBmb2xsb3dpbmcKK2NvbW1hbmQgbGluZToKKworcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCisiIiIKKworRVBJTE9HID0gIiIiXAorQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKKworLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhbgoraW50IHNlZWQgdmFsdWUgZm9yIHRoZSByYW5kb21pemVyOyB0aGlzIGlzIHVzZWZ1bCBmb3IgcmVwcm9kdWNpbmcgdHJvdWJsZXNvbWUKK3Rlc3Qgb3JkZXJzLgorCistcyBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiByZWdydGVzdCB1c2luZyAtcywgdGhlIGZpcnN0IHRlc3QgZmlsZSBmb3VuZAorb3IgdGhlIGZpcnN0IHRlc3QgZmlsZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biwgYW5kIHRoZSBuYW1lIG9mCit0aGUgbmV4dCB0ZXN0IGlzIHJlY29yZGVkIGluIGEgZmlsZSBuYW1lZCBweW5leHR0ZXN0LiAgSWYgcnVuIGZyb20gdGhlCitQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBweW5leHR0ZXN0IGlzIGxvY2F0ZWQgaW4gdGhlICdidWlsZCcgc3ViZGlyZWN0b3J5LAorb3RoZXJ3aXNlIGl0IGlzIGxvY2F0ZWQgaW4gdGVtcGZpbGUuZ2V0dGVtcGRpcigpLiAgT24gc3Vic2VxdWVudCBydW5zLAordGhlIHRlc3QgaW4gcHluZXh0dGVzdCBpcyBydW4sIGFuZCB0aGUgbmV4dCB0ZXN0IGlzIHdyaXR0ZW4gdG8gcHluZXh0dGVzdC4KK1doZW4gdGhlIGxhc3QgdGVzdCBoYXMgYmVlbiBydW4sIHB5bmV4dHRlc3QgaXMgZGVsZXRlZC4gIEluIHRoaXMgd2F5IGl0CitpcyBwb3NzaWJsZSB0byBzaW5nbGUgc3RlcCB0aHJvdWdoIHRoZSB0ZXN0IGZpbGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgorZG9pbmcgbWVtb3J5IGFuYWx5c2lzIG9uIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdoaWNoIHByb2Nlc3MgdGVuZHMgdG8KK2NvbnN1bWUgdG9vIG1hbnkgcmVzb3VyY2VzIHRvIHJ1biB0aGUgZnVsbCByZWdyZXNzaW9uIHRlc3Qgbm9uLXN0b3AuCisKKy1TIGlzIHVzZWQgdG8gY29udGludWUgcnVubmluZyB0ZXN0cyBhZnRlciBhbiBhYm9ydGVkIHJ1bi4gIEl0IHdpbGwKK21haW50YWluIHRoZSBvcmRlciBhIHN0YW5kYXJkIHJ1biAoaWUsIHRoaXMgYXNzdW1lcyAtciBpcyBub3QgdXNlZCkuCitUaGlzIGlzIHVzZWZ1bCBhZnRlciB0aGUgdGVzdHMgaGF2ZSBwcmVtYXR1cmVseSBzdG9wcGVkIGZvciBzb21lIGV4dGVybmFsCityZWFzb24gYW5kIHlvdSB3YW50IHRvIHN0YXJ0IHJ1bm5pbmcgZnJvbSB3aGVyZSB5b3UgbGVmdCBvZmYgcmF0aGVyCit0aGFuIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4KKworLWYgcmVhZHMgdGhlIG5hbWVzIG9mIHRlc3RzIGZyb20gdGhlIGZpbGUgZ2l2ZW4gYXMgZidzIGFyZ3VtZW50LCBvbmUKK29yIG1vcmUgdGVzdCBuYW1lcyBwZXIgbGluZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4gIEJsYW5rIGxpbmVzIGFuZAorbGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBpZ25vcmVkLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKK3doaXR0bGluZyBkb3duIGZhaWx1cmVzIGludm9sdmluZyBpbnRlcmFjdGlvbnMgYW1vbmcgdGVzdHMuCisKKy1MIGNhdXNlcyB0aGUgbGVha3MoMSkgY29tbWFuZCB0byBiZSBydW4ganVzdCBiZWZvcmUgZXhpdCBpZiBpdCBleGlzdHMuCitsZWFrcygxKSBpcyBhdmFpbGFibGUgb24gTWFjIE9TIFggYW5kIHByZXN1bWFibHkgb24gc29tZSBvdGhlcgorRnJlZUJTRC1kZXJpdmVkIHN5c3RlbXMuCisKKy1SIHJ1bnMgZWFjaCB0ZXN0IHNldmVyYWwgdGltZXMgYW5kIGV4YW1pbmVzIHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgdG8KK3NlZSBpZiB0aGUgdGVzdCBhcHBlYXJzIHRvIGJlIGxlYWtpbmcgcmVmZXJlbmNlcy4gIFRoZSBhcmd1bWVudCBzaG91bGQKK2JlIG9mIHRoZSBmb3JtIHN0YWI6cnVuOmZuYW1lIHdoZXJlICdzdGFiJyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQordGVzdCBpcyBydW4gdG8gbGV0IGdldHRvdGFscmVmY291bnQgc2V0dGxlIGRvd24sICdydW4nIGlzIHRoZSBudW1iZXIKK29mIHRpbWVzIGZ1cnRoZXIgaXQgaXMgcnVuIGFuZCAnZm5hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZQorcmVwb3J0cyBhcmUgd3JpdHRlbiB0by4gIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGhhdmUgZGVmYXVsdHMgKDUsIDQgYW5kCisicmVmbG9nLnR4dCIgcmVzcGVjdGl2ZWx5KSwgYW5kIHRoZSBtaW5pbWFsIGludm9jYXRpb24gaXMgJy1SIDonLgorCistTSBydW5zIHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBleG9yYml0YW50IGFtb3VudCBvZiBtZW1vcnkuIFRoZXNlIHRlc3RzCit0eXBpY2FsbHkgdHJ5IHRvIGFzY2VydGFpbiBjb250YWluZXJzIGtlZXAgd29ya2luZyB3aGVuIGNvbnRhaW5pbmcgbW9yZSB0aGFuCisyIGJpbGxpb24gb2JqZWN0cywgd2hpY2ggb25seSB3b3JrcyBvbiA2NC1iaXQgc3lzdGVtcy4gVGhlcmUgYXJlIGFsc28gc29tZQordGVzdHMgdGhhdCB0cnkgdG8gZXhoYXVzdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggb25seSBtYWtlcworc2Vuc2Ugb24gMzItYml0IHN5c3RlbXMgd2l0aCBhdCBsZWFzdCAyR2Igb2YgbWVtb3J5LiBUaGUgcGFzc2VkLWluIG1lbWxpbWl0LAord2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgJzIuNUdiJywgZGV0ZXJtaW5lcyBob3dtdWNoIG1lbW9yeSB0aGUKK3Rlc3RzIHdpbGwgbGltaXQgdGhlbXNlbHZlcyB0byAoYnV0IHRoZXkgbWF5IGdvIHNsaWdodGx5IG92ZXIuKSBUaGUgbnVtYmVyCitzaG91bGRuJ3QgYmUgbW9yZSBtZW1vcnkgdGhhbiB0aGUgbWFjaGluZSBoYXMgKGluY2x1ZGluZyBzd2FwIG1lbW9yeSkuIFlvdQorc2hvdWxkIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgc3dhcCBtZW1vcnkgaXMgZ2VuZXJhbGx5IG11Y2gsIG11Y2ggc2xvd2VyCit0aGFuIFJBTSwgYW5kIHNldHRpbmcgbWVtbGltaXQgdG8gYWxsIGF2YWlsYWJsZSBSQU0gb3IgaGlnaGVyIHdpbGwgaGVhdmlseQordGF4IHRoZSBtYWNoaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgbm8gdXNlIHJ1bm5pbmcgdGhlc2UgdGVzdHMgd2l0aCBhCitsaW1pdCBvZiBsZXNzIHRoYW4gMi41R2IsIGFuZCBtYW55IHJlcXVpcmUgbW9yZSB0aGFuIDIwR2IuIFRlc3RzIHRoYXQgZXhwZWN0Cit0byB1c2UgbW9yZSB0aGFuIG1lbWxpbWl0IG1lbW9yeSB3aWxsIGJlIHNraXBwZWQuIFRoZSBiaWctbWVtb3J5IHRlc3RzCitnZW5lcmFsbHkgcnVuIHZlcnksIHZlcnkgbG9uZy4KKworLXUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1biwKK3N1Y2ggYXMgdGhvc2UgcmVxdWlyaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCBvciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4KK1RoZSBhcmd1bWVudCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIGluZGljYXRpbmcgdGhlCityZXNvdXJjZXMgdG8gdGVzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6CisKKyAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgorCisgICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorCisgICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KKyAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKKyAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQorCisgICAgY3Vyc2VzIC0gICAgVGVzdHMgdGhhdCB1c2UgY3Vyc2VzIGFuZCB3aWxsIG1vZGlmeSB0aGUgdGVybWluYWwncworICAgICAgICAgICAgICAgIHN0YXRlIGFuZCBvdXRwdXQgbW9kZXMuCisKKyAgICBsYXJnZWZpbGUgLSBJdCBpcyBva2F5IHRvIHJ1biBzb21lIHRlc3QgdGhhdCBtYXkgY3JlYXRlIGh1Z2UKKyAgICAgICAgICAgICAgICBmaWxlcy4gIFRoZXNlIHRlc3RzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBtYXkKKyAgICAgICAgICAgICAgICBjb25zdW1lID4yR0Igb2YgZGlzayBzcGFjZSB0ZW1wb3JhcmlseS4KKworICAgIG5ldHdvcmsgLSAgIEl0IGlzIG9rYXkgdG8gcnVuIHRlc3RzIHRoYXQgdXNlIGV4dGVybmFsIG5ldHdvcmsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSwgZS5nLiB0ZXN0aW5nIFNTTCBzdXBwb3J0IGZvciBzb2NrZXRzLgorCisgICAgZGVjaW1hbCAtICAgVGVzdCB0aGUgZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhIGxhcmdlIHN1aXRlIHRoYXQKKyAgICAgICAgICAgICAgICB2ZXJpZmllcyBjb21wbGlhbmNlIHdpdGggc3RhbmRhcmRzLgorCisgICAgY3B1IC0gICAgICAgVXNlZCBmb3IgY2VydGFpbiBDUFUtaGVhdnkgdGVzdHMuCisKKyAgICBzdWJwcm9jZXNzICBSdW4gYWxsIHRlc3RzIGZvciB0aGUgc3VicHJvY2VzcyBtb2R1bGUuCisKKyAgICB1cmxmZXRjaCAtICBJdCBpcyBva2F5IHRvIGRvd25sb2FkIGZpbGVzIHJlcXVpcmVkIG9uIHRlc3RpbmcuCisKKyAgICBndWkgLSAgICAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIGEgcnVubmluZyBHVUkuCisKKyAgICB0emRhdGEgLSAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIHRpbWV6b25lIGRhdGEuCisKK1RvIGVuYWJsZSBhbGwgcmVzb3VyY2VzIGV4Y2VwdCBvbmUsIHVzZSAnLXVhbGwsLTxyZXNvdXJjZT4nLiAgRm9yCitleGFtcGxlLCB0byBydW4gYWxsIHRoZSB0ZXN0cyBleGNlcHQgZm9yIHRoZSBndWkgdGVzdHMsIGdpdmUgdGhlCitvcHRpb24gJy11YWxsLC1ndWknLgorIiIiCisKKworUkVTT1VSQ0VfTkFNRVMgPSAoJ2F1ZGlvJywgJ2N1cnNlcycsICdsYXJnZWZpbGUnLCAnbmV0d29yaycsCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknLCAndHpkYXRhJykKKworY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6CisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCisKKworZGVmIF9jcmVhdGVfcGFyc2VyKCk6CisgICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCisgICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgorICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCisKKyAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgorICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgorICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCisgICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvd2VzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LXRlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSB3cml0ZSB0aGUgbmFtZSBvZiB0ZXN0cyB0aGF0IHdpbGwgYmUgcnVuLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGV4ZWN1dGUgdGhlbSIpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUCcsICctLXBnbycsIGRlc3Q9J3BnbycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gdHJhaW5pbmcnKQorCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2RlZiByZWxhdGl2ZV9maWxlbmFtZShzdHJpbmcpOgorICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KKyAgICByZXR1cm4gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHN0cmluZykKKworCitkZWYgaHVudHJsZWFrcyhzdHJpbmcpOgorICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQorICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgorICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKKyAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCisgICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQorICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0CisgICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKKyAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCisKKworZGVmIHJlc291cmNlc19saXN0KHN0cmluZyk6CisgICAgdSA9IFt4Lmxvd2VyKCkgZm9yIHggaW4gc3RyaW5nLnNwbGl0KCcsJyldCisgICAgZm9yIHIgaW4gdToKKyAgICAgICAgaWYgciA9PSAnYWxsJyBvciByID09ICdub25lJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHJbMF0gPT0gJy0nOgorICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgIGlmIHIgbm90IGluIFJFU09VUkNFX05BTUVTOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoJ2ludmFsaWQgcmVzb3VyY2U6ICcgKyByKQorICAgIHJldHVybiB1CisKKworZGVmIF9wYXJzZV9hcmdzKGFyZ3MsICoqa3dhcmdzKToKKyAgICAjIERlZmF1bHRzCisgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UodGVzdGRpcj1Ob25lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLAorICAgICAgICAgZXhjbHVkZT1GYWxzZSwgc2luZ2xlPUZhbHNlLCByYW5kb21pemU9RmFsc2UsIGZyb21maWxlPU5vbmUsCisgICAgICAgICBmaW5kbGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgdHJhY2U9RmFsc2UsIGNvdmVyZGlyPSdjb3ZlcmFnZScsCisgICAgICAgICBydW5sZWFrcz1GYWxzZSwgaHVudHJsZWFrcz1GYWxzZSwgdmVyYm9zZTI9RmFsc2UsIHByaW50X3Nsb3c9RmFsc2UsCisgICAgICAgICByYW5kb21fc2VlZD1Ob25lLCB1c2VfbXA9Tm9uZSwgdmVyYm9zZTM9RmFsc2UsIGZvcmV2ZXI9RmFsc2UsCisgICAgICAgICBoZWFkZXI9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLCBwZ289RmFsc2UpCisgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG5zLCBrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoaXMgZnVuY3Rpb24nICUgaykKKyAgICAgICAgc2V0YXR0cihucywgaywgdikKKyAgICBpZiBucy51c2VfcmVzb3VyY2VzIGlzIE5vbmU6CisgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMgPSBbXQorCisgICAgcGFyc2VyID0gX2NyZWF0ZV9wYXJzZXIoKQorICAgICMgSXNzdWUgIzE0MTkxOiBhcmdwYXJzZSBkb2Vzbid0IHN1cHBvcnQgImludGVybWl4ZWQiIHBvc2l0aW9uYWwgYW5kCisgICAgIyBvcHRpb25hbCBhcmd1bWVudHMuIFVzZSBwYXJzZV9rbm93bl9hcmdzKCkgYXMgd29ya2Fyb3VuZC4KKyAgICBucy5hcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpWzFdCisgICAgZm9yIGFyZyBpbiBucy5hcmdzOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmcpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgbnMuc2luZ2xlIGFuZCBucy5mcm9tZmlsZToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItcyBhbmQgLWYgZG9uJ3QgZ28gdG9nZXRoZXIhIikKKyAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmUgYW5kIG5zLnRyYWNlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1UIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZSBhbmQgbnMuZmluZGxlYWtzOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1sIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLmZhaWxmYXN0IGFuZCBub3QgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XIikKKyAgICBpZiBucy5wZ28gYW5kIChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UyIG9yIG5zLnZlcmJvc2UzKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItLXBnby8tdiBkb24ndCBnbyB0b2dldGhlciEiKQorCisgICAgaWYgbnMubm93aW5kb3dzOgorICAgICAgICBwcmludCgiV2FybmluZzogdGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgIlVzZSAtdnYgdG8gZGlzcGxheSBhc3NlcnRpb25zIGluIHN0ZGVyci4iLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBpZiBucy5xdWlldDoKKyAgICAgICAgbnMudmVyYm9zZSA9IDAKKyAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6CisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6CisgICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAorICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQorICAgIGlmIG5zLnVzZToKKyAgICAgICAgZm9yIGEgaW4gbnMudXNlOgorICAgICAgICAgICAgZm9yIHIgaW4gYToKKyAgICAgICAgICAgICAgICBpZiByID09ICdhbGwnOgorICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzWzpdID0gUkVTT1VSQ0VfTkFNRVMKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiByID09ICdub25lJzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG5zLnVzZV9yZXNvdXJjZXNbOl0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByZW1vdmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIHJbMF0gPT0gJy0nOgorICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHIgPSByWzE6XQorICAgICAgICAgICAgICAgIGlmIHJlbW92ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgciBpbiBucy51c2VfcmVzb3VyY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICBlbGlmIHIgbm90IGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMuYXBwZW5kKHIpCisgICAgaWYgbnMucmFuZG9tX3NlZWQgaXMgbm90IE5vbmU6CisgICAgICAgIG5zLnJhbmRvbWl6ZSA9IFRydWUKKworICAgIHJldHVybiBucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlZmZjOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L21haW4ucHkKQEAgLTAsMCArMSw1MzIgQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGxvY2FsZQoraW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByYW5kb20KK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB0aW1lCitmcm9tIHRlc3QubGlicmVncnRlc3QuY21kbGluZSBpbXBvcnQgX3BhcnNlX2FyZ3MKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgZmluZHRlc3RzLCBydW50ZXN0LAorICAgIFNURFRFU1RTLCBOT1RURVNUUywgUEFTU0VELCBGQUlMRUQsIEVOVl9DSEFOR0VELCBTS0lQUEVELCBSRVNPVVJDRV9ERU5JRUQsCisgICAgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLAorICAgIFBST0dSRVNTX01JTl9USU1FLCBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworCisjIFdoZW4gdGVzdHMgYXJlIHJ1biBmcm9tIHRoZSBQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBpdCBpcyBiZXN0IHByYWN0aWNlCisjIHRvIGtlZXAgdGhlIHRlc3QgZmlsZXMgaW4gYSBzdWJmb2xkZXIuICBUaGlzIGVhc2VzIHRoZSBjbGVhbnVwIG9mIGxlZnRvdmVyCisjIGZpbGVzIHVzaW5nIHRoZSAibWFrZSBkaXN0Y2xlYW4iIGNvbW1hbmQuCitpZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgVEVNUERJUiA9IG9zLnBhdGguam9pbihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpLCAnYnVpbGQnKQorZWxzZToKKyAgICBURU1QRElSID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCitURU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCisKKworZGVmIGZvcm1hdF9kdXJhdGlvbihzZWNvbmRzKToKKyAgICBpZiBzZWNvbmRzIDwgMS4wOgorICAgICAgICByZXR1cm4gJyUuMGYgbXMnICUgKHNlY29uZHMgKiAxZTMpCisgICAgaWYgc2Vjb25kcyA8IDYwLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBzZWMnICUgc2Vjb25kcworCisgICAgbWludXRlcywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCA2MC4wKQorICAgIHJldHVybiAnJS4wZiBtaW4gJS4wZiBzZWMnICUgKG1pbnV0ZXMsIHNlY29uZHMpCisKKworY2xhc3MgUmVncnRlc3Q6CisgICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCisKKyAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKKyAgICBhY2NvcmRpbmdseS4KKworICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCisgICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKKworICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KKyAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQorICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KKworICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQorICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQorICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KKworICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCisgICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAorICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKKyAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncworICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAjIE5hbWVzcGFjZSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgICBzZWxmLm5zID0gTm9uZQorCisgICAgICAgICMgdGVzdHMKKyAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBbXQorCisgICAgICAgICMgdGVzdCByZXN1bHRzCisgICAgICAgIHNlbGYuZ29vZCA9IFtdCisgICAgICAgIHNlbGYuYmFkID0gW10KKyAgICAgICAgc2VsZi5za2lwcGVkID0gW10KKyAgICAgICAgc2VsZi5yZXNvdXJjZV9kZW5pZWRzID0gW10KKyAgICAgICAgc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkID0gW10KKyAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2xvdworICAgICAgICBzZWxmLnRlc3RfdGltZXMgPSBbXQorCisgICAgICAgICMgdXNlZCBieSAtLWNvdmVyYWdlLCB0cmFjZS5UcmFjZSBpbnN0YW5jZQorICAgICAgICBzZWxmLnRyYWNlciA9IE5vbmUKKworICAgICAgICAjIHVzZWQgYnkgLS1maW5kbGVha3MsIHN0b3JlIGZvciBnYy5nYXJiYWdlCisgICAgICAgIHNlbGYuZm91bmRfZ2FyYmFnZSA9IFtdCisKKyAgICAgICAgIyB1c2VkIHRvIGRpc3BsYXkgdGhlIHByb2dyZXNzIGJhciAiWyAzLzEwMF0iCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJycKKyAgICAgICAgc2VsZi50ZXN0X2NvdW50X3dpZHRoID0gMQorCisgICAgICAgICMgdXNlZCBieSAtLXNpbmdsZQorICAgICAgICBzZWxmLm5leHRfc2luZ2xlX3Rlc3QgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBOb25lCisKKyAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQoc2VsZiwgdGVzdCwgcmVzdWx0KToKKyAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuYXBwZW5kKCh0ZXN0X3RpbWUsIHRlc3QpKQorICAgICAgICBpZiBvayA9PSBQQVNTRUQ6CisgICAgICAgICAgICBzZWxmLmdvb2QuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gRkFJTEVEOgorICAgICAgICAgICAgc2VsZi5iYWQuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6CisgICAgICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gU0tJUFBFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBSRVNPVVJDRV9ERU5JRUQ6CisgICAgICAgICAgICBzZWxmLnNraXBwZWQuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMuYXBwZW5kKHRlc3QpCisKKyAgICBkZWYgZGlzcGxheV9wcm9ncmVzcyhzZWxmLCB0ZXN0X2luZGV4LCB0ZXN0KToKKyAgICAgICAgaWYgc2VsZi5ucy5xdWlldDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLmJhZCBhbmQgbm90IHNlbGYubnMucGdvOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH0ve25iYWR9XSB7dGVzdF9uYW1lfSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZtdCA9ICJ7dGltZX0gW3t0ZXN0X2luZGV4Ontjb3VudF93aWR0aH19e3Rlc3RfY291bnR9XSB7dGVzdF9uYW1lfSIKKyAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHNlbGYuc3RhcnRfdGltZQorICAgICAgICB0ZXN0X3RpbWUgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1pbnQodGVzdF90aW1lKSkKKyAgICAgICAgbGluZSA9IGZtdC5mb3JtYXQoY291bnRfd2lkdGg9c2VsZi50ZXN0X2NvdW50X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZGV4PXRlc3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnQ9c2VsZi50ZXN0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBuYmFkPWxlbihzZWxmLmJhZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZT10ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lPXRlc3RfdGltZSkKKyAgICAgICAgcHJpbnQobGluZSwgZmx1c2g9VHJ1ZSkKKworICAgIGRlZiBwYXJzZV9hcmdzKHNlbGYsIGt3YXJncyk6CisgICAgICAgIG5zID0gX3BhcnNlX2FyZ3Moc3lzLmFyZ3ZbMTpdLCAqKmt3YXJncykKKworICAgICAgICBpZiBucy50aW1lb3V0IGFuZCBub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKKworICAgICAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmUgYW5kIGdjIGlzIE5vbmU6CisgICAgICAgICAgICBwcmludCgnTm8gR0MgYXZhaWxhYmxlLCBpZ25vcmUgLS10aHJlc2hvbGQuJywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgbnMudGhyZXNob2xkID0gTm9uZQorCisgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKKyAgICAgICAgICAgIGlmIGdjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90CisgICAgICAgICAgICAgICAgIyBmcmVlYWJsZSBieSByZWZlcmVuY2UgY291bnRpbmcgYWxvbmUuICBCeSBkZWZhdWx0IG9ubHkKKyAgICAgICAgICAgICAgICAjIGdhcmJhZ2UgdGhhdCBpcyBub3QgY29sbGVjdGFibGUgYnkgdGhlIEdDIGlzIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1NBVkVBTEwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGRpc2FibGluZyAtLWZpbmRsZWFrcycsCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIG5zLmZpbmRsZWFrcyA9IEZhbHNlCisKKyAgICAgICAgIyBTdHJpcCAucHkgZXh0ZW5zaW9ucy4KKyAgICAgICAgcmVtb3ZlcHkobnMuYXJncykKKworICAgICAgICByZXR1cm4gbnMKKworICAgIGRlZiBmaW5kX3Rlc3RzKHNlbGYsIHRlc3RzKToKKyAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCisKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSwgJ3InKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0ID0gZnAucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtuZXh0X3Rlc3RdCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBbXQorICAgICAgICAgICAgIyByZWdleCB0byBtYXRjaCAndGVzdF9idWlsdGluJyBpbiBsaW5lOgorICAgICAgICAgICAgIyAnMDowMDowMCBbICA0LzQwMF0gdGVzdF9idWlsdGluIC0tIHRlc3RfZGljdCB0b29rIDEgc2VjJworICAgICAgICAgICAgcmVnZXggPSAocideKD86WzAtOV0rOlswLTldKzpbMC05XSsgKik/JworICAgICAgICAgICAgICAgICAgICAgcicoPzpcW1swLTkvIF0rXF0gKik/JworICAgICAgICAgICAgICAgICAgICAgcicodGVzdF9bYS16QS1aMC05X10rKScpCisgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocmVnZXgpCisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHNlbGYubnMuZnJvbWZpbGUpKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQorCisgICAgICAgIHJlbW92ZXB5KHNlbGYudGVzdHMpCisKKyAgICAgICAgc3RkdGVzdHMgPSBTVERURVNUU1s6XQorICAgICAgICBub3R0ZXN0cyA9IE5PVFRFU1RTLmNvcHkoKQorICAgICAgICBpZiBzZWxmLm5zLmV4Y2x1ZGU6CisgICAgICAgICAgICBmb3IgYXJnIGluIHNlbGYubnMuYXJnczoKKyAgICAgICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIHN0ZHRlc3RzLnJlbW92ZShhcmcpCisgICAgICAgICAgICAgICAgbm90dGVzdHMuYWRkKGFyZykKKyAgICAgICAgICAgIHNlbGYubnMuYXJncyA9IFtdCisKKyAgICAgICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KKyAgICAgICAgIyBkb24ndCBhZGQgZGVmYXVsdCB0ZXN0cyB0byBiZSBleGVjdXRlZCBvciBza2lwcGVkIChwYXNzIGVtcHR5IHZhbHVlcykKKyAgICAgICAgaWYgc2VsZi5ucy50ZXN0ZGlyOgorICAgICAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMoc2VsZi5ucy50ZXN0ZGlyLCBsaXN0KCksIHNldCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMoc2VsZi5ucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisKKyAgICAgICAgaWYgbm90IHNlbGYubnMuZnJvbWZpbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3Mgb3IgYWxsdGVzdHMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzCisgICAgICAgIGlmIHNlbGYubnMuc2luZ2xlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYuc2VsZWN0ZWRbOjFdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcG9zID0gYWxsdGVzdHMuaW5kZXgoc2VsZi5zZWxlY3RlZFswXSkKKyAgICAgICAgICAgICAgICBzZWxmLm5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1twb3MgKyAxXQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgorICAgICAgICBpZiBzZWxmLm5zLnN0YXJ0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLnNlbGVjdGVkWzpzZWxmLnNlbGVjdGVkLmluZGV4KHNlbGYubnMuc3RhcnQpXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgc3RhcnRpbmcgdGVzdCAoJXMpLCB1c2luZyBhbGwgdGVzdHMiCisgICAgICAgICAgICAgICAgICAgICAgJSBzZWxmLm5zLnN0YXJ0LCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5ucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCisgICAgICAgICAgICByYW5kb20uc2VlZChzZWxmLm5zLnJhbmRvbV9zZWVkKQorICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZi5zZWxlY3RlZCkKKworICAgIGRlZiBsaXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnNlbGVjdGVkOgorICAgICAgICAgICAgcHJpbnQobmFtZSkKKworICAgIGRlZiByZXJ1bl9mYWlsZWRfdGVzdHMoc2VsZik6CisgICAgICAgIHNlbGYubnMudmVyYm9zZSA9IFRydWUKKyAgICAgICAgc2VsZi5ucy5mYWlsZmFzdCA9IEZhbHNlCisgICAgICAgIHNlbGYubnMudmVyYm9zZTMgPSBGYWxzZQorICAgICAgICBzZWxmLm5zLm1hdGNoX3Rlc3RzID0gTm9uZQorCisgICAgICAgIHByaW50KCJSZS1ydW5uaW5nIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUiKQorICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLmJhZFs6XToKKyAgICAgICAgICAgIHByaW50KCJSZS1ydW5uaW5nIHRlc3QgJXIgaW4gdmVyYm9zZSBtb2RlIiAlIHRlc3QsIGZsdXNoPVRydWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KQorICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKKyAgICAgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgb2tbMF0gaW4ge1BBU1NFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRH06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFkLnJlbW92ZSh0ZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgJ3Rlc3QnKSwgImZhaWxlZCBhZ2FpbjoiKQorICAgICAgICAgICAgICAgIHByaW50bGlzdChzZWxmLmJhZCkKKworICAgIGRlZiBkaXNwbGF5X3Jlc3VsdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIGFmdGVyIF5DCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULiIpCisgICAgICAgICAgICBleGVjdXRlZCA9IHNldChzZWxmLmdvb2QpIHwgc2V0KHNlbGYuYmFkKSB8IHNldChzZWxmLnNraXBwZWQpCisgICAgICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGYuc2VsZWN0ZWQpIC0gZXhlY3V0ZWQKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihvbWl0dGVkKSwgInRlc3QiKSwgIm9taXR0ZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChvbWl0dGVkKQorCisgICAgICAgICMgSWYgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgUEdPIHRoZW4gbm8gb25lIGNhcmVzIGFib3V0CisgICAgICAgICMgcmVzdWx0cy4KKyAgICAgICAgaWYgc2VsZi5ucy5wZ286CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLmdvb2QgYW5kIG5vdCBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgaWYgKG5vdCBzZWxmLmJhZAorICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5za2lwcGVkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLmludGVycnVwdGVkCisgICAgICAgICAgICAgICAgYW5kIGxlbihzZWxmLmdvb2QpID4gMSk6CisgICAgICAgICAgICAgICAgcHJpbnQoIkFsbCIsIGVuZD0nICcpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5nb29kKSwgInRlc3QiKSwgIk9LLiIpCisKKyAgICAgICAgaWYgc2VsZi5ucy5wcmludF9zbG93OgorICAgICAgICAgICAgc2VsZi50ZXN0X3RpbWVzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIjEwIHNsb3dlc3QgdGVzdHM6IikKKyAgICAgICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHNlbGYudGVzdF90aW1lc1s6MTBdOgorICAgICAgICAgICAgICAgIHByaW50KCItICVzOiAlcyIgJSAodGVzdCwgZm9ybWF0X2R1cmF0aW9uKHRpbWUpKSkKKworICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLmJhZCkKKworICAgICAgICBpZiBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgY291bnQobGVuKHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZCkKKworICAgICAgICBpZiBzZWxmLnNraXBwZWQgYW5kIG5vdCBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuc2tpcHBlZCksICJ0ZXN0IiksICJza2lwcGVkOiIpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5za2lwcGVkKQorCisgICAgZGVmIHJ1bl90ZXN0c19zZXF1ZW50aWFsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5zLnRyYWNlOgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlCisgICAgICAgICAgICBzZWxmLnRyYWNlciA9IHRyYWNlLlRyYWNlKHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQorCisgICAgICAgIHNhdmVfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmtleXMoKQorCisgICAgICAgIHByaW50KCJSdW4gdGVzdHMgc2VxdWVudGlhbGx5IikKKworICAgICAgICBwcmV2aW91c190ZXN0ID0gTm9uZQorICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUoc2VsZi50ZXN0cywgMSk6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorCisgICAgICAgICAgICB0ZXh0ID0gdGVzdAorICAgICAgICAgICAgaWYgcHJldmlvdXNfdGVzdDoKKyAgICAgICAgICAgICAgICB0ZXh0ID0gJyVzIC0tICVzJyAlICh0ZXh0LCBwcmV2aW91c190ZXN0KQorICAgICAgICAgICAgc2VsZi5kaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRleHQpCisKKyAgICAgICAgICAgIGlmIHNlbGYudHJhY2VyOgorICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKKyAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KKyAgICAgICAgICAgICAgICBjbWQgPSAoJ3Jlc3VsdCA9IHJ1bnRlc3Qoc2VsZi5ucywgdGVzdCk7ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGYuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KScpCisgICAgICAgICAgICAgICAgbnMgPSBkaWN0KGxvY2FscygpKQorICAgICAgICAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmN0eChjbWQsIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9bnMpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbnNbJ3Jlc3VsdCddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCAoSU5URVJSVVBURUQsIE5vbmUpKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQorCisgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gZm9ybWF0X3Rlc3RfcmVzdWx0KHRlc3QsIHJlc3VsdFswXSkKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUubW9ub3RvbmljKCkgLSBzdGFydF90aW1lCisgICAgICAgICAgICBpZiB0ZXN0X3RpbWUgPj0gUFJPR1JFU1NfTUlOX1RJTUU6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9ICIlcyBpbiAlcyIgJSAocHJldmlvdXNfdGVzdCwgZm9ybWF0X2R1cmF0aW9uKHRlc3RfdGltZSkpCisgICAgICAgICAgICBlbGlmIHJlc3VsdFswXSA9PSBQQVNTRUQ6CisgICAgICAgICAgICAgICAgIyBiZSBxdWlldDogc2F5IG5vdGhpbmcgaWYgdGhlIHRlc3QgcGFzc2VkIHNob3J0bHkKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gTm9uZQorCisgICAgICAgICAgICBpZiBzZWxmLm5zLmZpbmRsZWFrczoKKyAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKKyAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQorICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlLmV4dGVuZChnYy5nYXJiYWdlKQorICAgICAgICAgICAgICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQorCisgICAgICAgICAgICAjIFVubG9hZCB0aGUgbmV3bHkgaW1wb3J0ZWQgbW9kdWxlcyAoYmVzdCBlZmZvcnQgZmluYWxpemF0aW9uKQorICAgICAgICAgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgbW9kdWxlIG5vdCBpbiBzYXZlX21vZHVsZXMgYW5kIG1vZHVsZS5zdGFydHN3aXRoKCJ0ZXN0LiIpOgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChtb2R1bGUpCisKKyAgICAgICAgaWYgcHJldmlvdXNfdGVzdDoKKyAgICAgICAgICAgIHByaW50KHByZXZpb3VzX3Rlc3QpCisKKyAgICBkZWYgX3Rlc3RfZm9yZXZlcihzZWxmLCB0ZXN0cyk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0CisgICAgICAgICAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgorICAgICAgICBpZiAoc2VsZi5ucy52ZXJib3NlCisgICAgICAgICAgICBvciBzZWxmLm5zLmhlYWRlcgorICAgICAgICAgICAgb3Igbm90IChzZWxmLm5zLnBnbyBvciBzZWxmLm5zLnF1aWV0IG9yIHNlbGYubnMuc2luZ2xlCisgICAgICAgICAgICAgICAgICAgIG9yIHNlbGYudGVzdHMgb3Igc2VsZi5ucy5hcmdzKSk6CisgICAgICAgICAgICAjIFByaW50IGJhc2ljIHBsYXRmb3JtIGluZm9ybWF0aW9uCisgICAgICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCisgICAgICAgICAgICBwcmludCgiPT0gICIsIHBsYXRmb3JtLnBsYXRmb3JtKGFsaWFzZWQ9VHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgImhhc2ggYWxnb3JpdGhtOiIsIHN5cy5oYXNoX2luZm8uYWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKKyAgICAgICAgICAgIHByaW50KCI9PSAgY3dkOiIsIG9zLmdldGN3ZCgpKQorICAgICAgICAgICAgcHJpbnQoIj09ICBlbmNvZGluZ3M6IGxvY2FsZT0lcywgRlM9JXMiCisgICAgICAgICAgICAgICAgICAlIChsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKyAgICAgICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQorCisgICAgICAgIGlmIHNlbGYubnMucmFuZG9taXplOgorICAgICAgICAgICAgcHJpbnQoIlVzaW5nIHJhbmRvbSBzZWVkIiwgc2VsZi5ucy5yYW5kb21fc2VlZCkKKworICAgICAgICBpZiBzZWxmLm5zLmZvcmV2ZXI6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gc2VsZi5fdGVzdF9mb3JldmVyKGxpc3Qoc2VsZi5zZWxlY3RlZCkpCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50X3dpZHRoID0gMworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IGl0ZXIoc2VsZi5zZWxlY3RlZCkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZi5zZWxlY3RlZCkpCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSBsZW4oc2VsZi50ZXN0X2NvdW50KSAtIDEKKworICAgICAgICBpZiBzZWxmLm5zLnVzZV9tcDoKKyAgICAgICAgICAgIGZyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0X21wIGltcG9ydCBydW5fdGVzdHNfbXVsdGlwcm9jZXNzCisgICAgICAgICAgICBydW5fdGVzdHNfbXVsdGlwcm9jZXNzKHNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJ1bl90ZXN0c19zZXF1ZW50aWFsKCkKKworICAgIGRlZiBmaW5hbGl6ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZToKKyAgICAgICAgICAgIGlmIHNlbGYubmV4dF9zaW5nbGVfdGVzdDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZnAud3JpdGUoc2VsZi5uZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUpCisKKyAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICByID0gc2VsZi50cmFjZXIucmVzdWx0cygpCisgICAgICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmRpcj1zZWxmLm5zLmNvdmVyZGlyKQorCisgICAgICAgIHByaW50KCkKKyAgICAgICAgZHVyYXRpb24gPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHByaW50KCJUb3RhbCBkdXJhdGlvbjogJXMiICUgZm9ybWF0X2R1cmF0aW9uKGR1cmF0aW9uKSkKKworICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMVVJFIgorICAgICAgICBlbGlmIHNlbGYuaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAiSU5URVJSVVBURUQiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSAiU1VDQ0VTUyIKKyAgICAgICAgcHJpbnQoIlRlc3RzIHJlc3VsdDogJXMiICUgcmVzdWx0KQorCisgICAgICAgIGlmIHNlbGYubnMucnVubGVha3M6CisgICAgICAgICAgICBvcy5zeXN0ZW0oImxlYWtzICVkIiAlIG9zLmdldHBpZCgpKQorCisgICAgZGVmIG1haW4oc2VsZiwgdGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBnbG9iYWwgVEVNUERJUgorCisgICAgICAgIGlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZworICAgICAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCisgICAgICAgICMgdGVzdGluZyAoc2VlIHRoZSAtaiBvcHRpb24pLgorICAgICAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQorICAgICAgICB0ZXN0X2N3ZCA9IG9zLnBhdGguam9pbihURU1QRElSLCB0ZXN0X2N3ZCkKKworICAgICAgICAjIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBjaGFuZ2VzIHRoZSBDV0QgdG8gYQorICAgICAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCisgICAgICAgICMgY2hhbmdlIHRoZSBDV0QsIHRoZSBvcmlnaW5hbCBDV0Qgd2lsbCBiZSB1c2VkLiAgVGhlIG9yaWdpbmFsIENXRCBpcworICAgICAgICAjIGF2YWlsYWJsZSBmcm9tIHN1cHBvcnQuU0FWRURDV0QuCisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBzZWxmLl9tYWluKHRlc3RzLCBrd2FyZ3MpCisKKyAgICBkZWYgX21haW4oc2VsZiwgdGVzdHMsIGt3YXJncyk6CisgICAgICAgIHNlbGYubnMgPSBzZWxmLnBhcnNlX2FyZ3Moa3dhcmdzKQorCisgICAgICAgIGlmIHNlbGYubnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19zbGF2ZQorICAgICAgICAgICAgcnVuX3Rlc3RzX3NsYXZlKHNlbGYubnMuc2xhdmVhcmdzKQorCisgICAgICAgIGlmIHNlbGYubnMud2FpdDoKKyAgICAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKKworICAgICAgICBzdXBwb3J0LlBHTyA9IHNlbGYubnMucGdvCisKKyAgICAgICAgc2V0dXBfdGVzdHMoc2VsZi5ucykKKworICAgICAgICBzZWxmLmZpbmRfdGVzdHModGVzdHMpCisKKyAgICAgICAgaWYgc2VsZi5ucy5saXN0X3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5saXN0X3Rlc3RzKCkKKyAgICAgICAgICAgIHN5cy5leGl0KDApCisKKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoKQorICAgICAgICBzZWxmLmRpc3BsYXlfcmVzdWx0KCkKKworICAgICAgICBpZiBzZWxmLm5zLnZlcmJvc2UyIGFuZCBzZWxmLmJhZDoKKyAgICAgICAgICAgIHNlbGYucmVydW5fZmFpbGVkX3Rlc3RzKCkKKworICAgICAgICBzZWxmLmZpbmFsaXplKCkKKyAgICAgICAgc3lzLmV4aXQobGVuKHNlbGYuYmFkKSA+IDAgb3Igc2VsZi5pbnRlcnJ1cHRlZCkKKworCitkZWYgcmVtb3ZlcHkobmFtZXMpOgorICAgIGlmIG5vdCBuYW1lczoKKyAgICAgICAgcmV0dXJuCisgICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpOgorICAgICAgICBiYXNlbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBleHQgPT0gJy5weSc6CisgICAgICAgICAgICBuYW1lc1tpZHhdID0gYmFzZW5hbWUKKworCitkZWYgY291bnQobiwgd29yZCk6CisgICAgaWYgbiA9PSAxOgorICAgICAgICByZXR1cm4gIiVkICVzIiAlIChuLCB3b3JkKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAiJWQgJXNzIiAlIChuLCB3b3JkKQorCisKK2RlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00KToKKyAgICAiIiJQcmludCB0aGUgZWxlbWVudHMgb2YgaXRlcmFibGUgeCB0byBzdGRvdXQuCisKKyAgICBPcHRpb25hbCBhcmcgd2lkdGggKGRlZmF1bHQgNzApIGlzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgorICAgIE9wdGlvbmFsIGFyZyBpbmRlbnQgKGRlZmF1bHQgNCkgaXMgdGhlIG51bWJlciBvZiBibGFua3Mgd2l0aCB3aGljaCB0bworICAgIGJlZ2luIGVhY2ggbGluZS4KKyAgICAiIiIKKworICAgIGJsYW5rcyA9ICcgJyAqIGluZGVudAorICAgICMgUHJpbnQgdGhlIHNvcnRlZCBsaXN0OiAneCcgbWF5IGJlIGEgJy0tcmFuZG9tJyBsaXN0IG9yIGEgc2V0KCkKKyAgICBwcmludCh0ZXh0d3JhcC5maWxsKCcgJy5qb2luKHN0cihlbHQpIGZvciBlbHQgaW4gc29ydGVkKHgpKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1ibGFua3MsIHN1YnNlcXVlbnRfaW5kZW50PWJsYW5rcykpCisKKworZGVmIG1haW4odGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlJ1biB0aGUgUHl0aG9uIHN1aXRlLiIiIgorICAgIFJlZ3J0ZXN0KCkubWFpbih0ZXN0cz10ZXN0cywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcmVmbGVhay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjNkMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcmVmbGVhay5weQpAQCAtMCwwICsxLDI2OSBAQAoraW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK3RyeToKKyAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKK2V4Y2VwdCBFeGNlcHRpb246CisgICAgTUFYRkQgPSAyNTYKKworCitkZWYgZmRfY291bnQoKToKKyAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyIiIgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnLCAnZnJlZWJzZCcpKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKCIvcHJvYy9zZWxmL2ZkIikKKyAgICAgICAgICAgIHJldHVybiBsZW4obmFtZXMpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvdW50ID0gMAorICAgIGZvciBmZCBpbiByYW5nZShNQVhGRCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUHJlZmVyIGR1cCgpIG92ZXIgZnN0YXQoKS4gZnN0YXQoKSBjYW4gcmVxdWlyZSBpbnB1dC9vdXRwdXQKKyAgICAgICAgICAgICMgd2hlcmVhcyBkdXAoKSBkb2Vzbid0LgorICAgICAgICAgICAgZmQyID0gb3MuZHVwKGZkKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQkFERjoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2xvc2UoZmQyKQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgIHJldHVybiBjb3VudAorCisKK2RlZiBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwgaHVudHJsZWFrcyk6CisgICAgIiIiUnVuIGEgdGVzdCBtdWx0aXBsZSB0aW1lcywgbG9va2luZyBmb3IgcmVmZXJlbmNlIGxlYWtzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KKyAgICAiIiIKKyAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgorICAgIGltcG9ydCBjb3B5cmVnCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworCisgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvZiBQeXRob24iKQorCisgICAgIyBTYXZlIGN1cnJlbnQgdmFsdWVzIGZvciBkYXNoX1JfY2xlYW51cCgpIHRvIHJlc3RvcmUuCisgICAgZnMgPSB3YXJuaW5ncy5maWx0ZXJzWzpdCisgICAgcHMgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgIHBpYyA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNvcHkoKQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHppcGltcG9ydAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgemRjID0gTm9uZSAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0CisgICAgZWxzZToKKyAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQorICAgIGFiY3MgPSB7fQorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBhYmNzW29ial0gPSBvYmouX2FiY19yZWdpc3RyeS5jb3B5KCkKKworICAgIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZSA9IGh1bnRybGVha3MKKyAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKKyAgICByZXBjb3VudCA9IG53YXJtdXAgKyBudHJhY2tlZAorICAgIHJjX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisgICAgYWxsb2NfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBmZF9kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorCisgICAgcHJpbnQoImJlZ2lubmluZyIsIHJlcGNvdW50LCAicmVwZXRpdGlvbnMiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgcHJpbnQoKCIxMjM0NTY3ODkwIioocmVwY291bnQvLzEwICsgMSkpWzpyZXBjb3VudF0sIGZpbGU9c3lzLnN0ZGVyciwKKyAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICMgaW5pdGlhbGl6ZSB2YXJpYWJsZXMgdG8gbWFrZSBweWZsYWtlcyBxdWlldAorICAgIHJjX2JlZm9yZSA9IGFsbG9jX2JlZm9yZSA9IGZkX2JlZm9yZSA9IDAKKyAgICBmb3IgaSBpbiByYW5nZShyZXBjb3VudCk6CisgICAgICAgIGluZGlyZWN0X3Rlc3QoKQorICAgICAgICBhbGxvY19hZnRlciwgcmNfYWZ0ZXIsIGZkX2FmdGVyID0gZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiY3MpCisgICAgICAgIHByaW50KCcuJywgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBpZiBpID49IG53YXJtdXA6CisgICAgICAgICAgICByY19kZWx0YXNbaV0gPSByY19hZnRlciAtIHJjX2JlZm9yZQorICAgICAgICAgICAgYWxsb2NfZGVsdGFzW2ldID0gYWxsb2NfYWZ0ZXIgLSBhbGxvY19iZWZvcmUKKyAgICAgICAgICAgIGZkX2RlbHRhc1tpXSA9IGZkX2FmdGVyIC0gZmRfYmVmb3JlCisgICAgICAgIGFsbG9jX2JlZm9yZSA9IGFsbG9jX2FmdGVyCisgICAgICAgIHJjX2JlZm9yZSA9IHJjX2FmdGVyCisgICAgICAgIGZkX2JlZm9yZSA9IGZkX2FmdGVyCisgICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQorICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQorICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKKyAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCisgICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCisgICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKKyAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZmFpbGVkID0gRmFsc2UKKyAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWworICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCisgICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKSwKKyAgICAgICAgKGZkX2RlbHRhcywgJ2ZpbGUgZGVzY3JpcHRvcnMnLCBjaGVja19yY19kZWx0YXMpXToKKyAgICAgICAgaWYgY2hlY2tlcihkZWx0YXMpOgorICAgICAgICAgICAgbXNnID0gJyVzIGxlYWtlZCAlcyAlcywgc3VtPSVzJyAlICgKKyAgICAgICAgICAgICAgICB0ZXN0LCBkZWx0YXNbbndhcm11cDpdLCBpdGVtX25hbWUsIHN1bShkZWx0YXMpKQorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgorICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCisgICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKKyAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKKyAgICByZXR1cm4gZmFpbGVkCisKKworZGVmIGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpOgorICAgIGltcG9ydCBnYywgY29weXJlZworICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKKyAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKKworICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KKyAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAorICAgIGVsc2U6CisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQorCisgICAgIyBjbGVhciB0eXBlIGNhY2hlCisgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKKworICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKKyAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKKworICAgIGNsZWFyX2NhY2hlcygpCisKKyAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoIGFuZCByZWFkIG1lbW9yeSBzdGF0aXN0aWNzIGltbWVkaWF0ZWx5IGFmdGVyLgorICAgIGZ1bmMxID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcworICAgIGZ1bmMyID0gc3lzLmdldHRvdGFscmVmY291bnQKKyAgICBnYy5jb2xsZWN0KCkKKyAgICByZXR1cm4gZnVuYzEoKSwgZnVuYzIoKSwgZmRfY291bnQoKQorCisKK2RlZiBjbGVhcl9jYWNoZXMoKToKKyAgICBpbXBvcnQgZ2MKKworICAgICMgQ2xlYXIgdGhlIHdhcm5pbmdzIHJlZ2lzdHJ5LCBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4KKyAgICBmb3IgbW9kIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgorICAgICAgICBpZiBoYXNhdHRyKG1vZCwgJ19fd2FybmluZ3JlZ2lzdHJ5X18nKToKKyAgICAgICAgICAgIGRlbCBtb2QuX193YXJuaW5ncmVnaXN0cnlfXworCisgICAgIyBGbHVzaCBzdGFuZGFyZCBvdXRwdXQsIHNvIHRoYXQgYnVmZmVyZWQgZGF0YSBpcyBzZW50IHRvIHRoZSBPUyBhbmQKKyAgICAjIGFzc29jaWF0ZWQgUHl0aG9uIG9iamVjdHMgYXJlIHJlY2xhaW1lZC4KKyAgICBmb3Igc3RyZWFtIGluIChzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyLCBzeXMuX19zdGRvdXRfXywgc3lzLl9fc3RkZXJyX18pOgorICAgICAgICBpZiBzdHJlYW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdHJlYW0uZmx1c2goKQorCisgICAgIyBDbGVhciBhc3NvcnRlZCBtb2R1bGUgY2FjaGVzLgorICAgICMgRG9uJ3Qgd29ycnkgYWJvdXQgcmVzZXR0aW5nIHRoZSBjYWNoZSBpZiB0aGUgbW9kdWxlIGlzIG5vdCBsb2FkZWQKKyAgICB0cnk6CisgICAgICAgIGRpc3R1dGlsc19kaXJfdXRpbCA9IHN5cy5tb2R1bGVzWydkaXN0dXRpbHMuZGlyX3V0aWwnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGRpc3R1dGlsc19kaXJfdXRpbC5fcGF0aF9jcmVhdGVkLmNsZWFyKCkKKyAgICByZS5wdXJnZSgpCisKKyAgICB0cnk6CisgICAgICAgIF9zdHJwdGltZSA9IHN5cy5tb2R1bGVzWydfc3RycHRpbWUnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIF9zdHJwdGltZS5fcmVnZXhfY2FjaGUuY2xlYXIoKQorCisgICAgdHJ5OgorICAgICAgICB1cmxsaWJfcGFyc2UgPSBzeXMubW9kdWxlc1sndXJsbGliLnBhcnNlJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB1cmxsaWJfcGFyc2UuY2xlYXJfY2FjaGUoKQorCisgICAgdHJ5OgorICAgICAgICB1cmxsaWJfcmVxdWVzdCA9IHN5cy5tb2R1bGVzWyd1cmxsaWIucmVxdWVzdCddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdXJsbGliX3JlcXVlc3QudXJsY2xlYW51cCgpCisKKyAgICB0cnk6CisgICAgICAgIGxpbmVjYWNoZSA9IHN5cy5tb2R1bGVzWydsaW5lY2FjaGUnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKworICAgIHRyeToKKyAgICAgICAgbWltZXR5cGVzID0gc3lzLm1vZHVsZXNbJ21pbWV0eXBlcyddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQorCisgICAgdHJ5OgorICAgICAgICBmaWxlY21wID0gc3lzLm1vZHVsZXNbJ2ZpbGVjbXAnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKKworICAgIHRyeToKKyAgICAgICAgc3RydWN0ID0gc3lzLm1vZHVsZXNbJ3N0cnVjdCddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgc3RydWN0Ll9jbGVhcmNhY2hlKCkKKworICAgIHRyeToKKyAgICAgICAgZG9jdGVzdCA9IHN5cy5tb2R1bGVzWydkb2N0ZXN0J10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBkb2N0ZXN0Lm1hc3RlciA9IE5vbmUKKworICAgIHRyeToKKyAgICAgICAgY3R5cGVzID0gc3lzLm1vZHVsZXNbJ2N0eXBlcyddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgY3R5cGVzLl9yZXNldF9jYWNoZSgpCisKKyAgICB0cnk6CisgICAgICAgIHR5cGluZyA9IHN5cy5tb2R1bGVzWyd0eXBpbmcnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGZvciBmIGluIHR5cGluZy5fY2xlYW51cHM6CisgICAgICAgICAgICBmKCkKKworICAgIGdjLmNvbGxlY3QoKQorCisKK2RlZiB3YXJtX2NhY2hlcygpOgorICAgICMgY2hhciBjYWNoZQorICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQorICAgIGZvciBpIGluIHJhbmdlKDI1Nik6CisgICAgICAgIHNbaTppKzFdCisgICAgIyB1bmljb2RlIGNhY2hlCisgICAgW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQorICAgICMgaW50IGNhY2hlCisgICAgbGlzdChyYW5nZSgtNSwgMjU3KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMGRmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0LnB5CkBAIC0wLDAgKzEsMjQ1IEBACitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QubGlicmVncnRlc3QucmVmbGVhayBpbXBvcnQgZGFzaF9SLCBjbGVhcl9jYWNoZXMKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zYXZlX2VudiBpbXBvcnQgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudAorCisKKyMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgorUEFTU0VEID0gMQorRkFJTEVEID0gMAorRU5WX0NIQU5HRUQgPSAtMQorU0tJUFBFRCA9IC0yCitSRVNPVVJDRV9ERU5JRUQgPSAtMworSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCisKK19GT1JNQVRfVEVTVF9SRVNVTFQgPSB7CisgICAgUEFTU0VEOiAnJXMgcGFzc2VkJywKKyAgICBGQUlMRUQ6ICclcyBmYWlsZWQnLAorICAgIEVOVl9DSEFOR0VEOiAnJXMgZmFpbGVkIChlbnYgY2hhbmdlZCknLAorICAgIFNLSVBQRUQ6ICclcyBza2lwcGVkJywKKyAgICBSRVNPVVJDRV9ERU5JRUQ6ICclcyBza2lwcGVkIChyZXNvdXJjZSBkZW5pZWQpJywKKyAgICBJTlRFUlJVUFRFRDogJyVzIGludGVycnVwdGVkJywKKyAgICBDSElMRF9FUlJPUjogJyVzIGNyYXNoZWQnLAorfQorCisjIE1pbmltdW0gZHVyYXRpb24gb2YgYSB0ZXN0IHRvIGRpc3BsYXkgaXRzIGR1cmF0aW9uIG9yIHRvIG1lbnRpb24gdGhhdAorIyB0aGUgdGVzdCBpcyBydW5uaW5nIGluIGJhY2tncm91bmQKK1BST0dSRVNTX01JTl9USU1FID0gMzAuMCAgICMgc2Vjb25kcworCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCitTVERURVNUUyA9IFsKKyAgICAndGVzdF9ncmFtbWFyJywKKyAgICAndGVzdF9vcGNvZGVzJywKKyAgICAndGVzdF9kaWN0JywKKyAgICAndGVzdF9idWlsdGluJywKKyAgICAndGVzdF9leGNlcHRpb25zJywKKyAgICAndGVzdF90eXBlcycsCisgICAgJ3Rlc3RfdW5pdHRlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JworXQorCisjIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAorTk9UVEVTVFMgPSBzZXQoKQorCisKK2RlZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHQpOgorICAgIGZtdCA9IF9GT1JNQVRfVEVTVF9SRVNVTFQuZ2V0KHJlc3VsdCwgIiVzIikKKyAgICByZXR1cm4gZm10ICUgdGVzdF9uYW1lCisKKworZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCisgICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCisgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCisgICAgdGVzdHMgPSBbXQorICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cworICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKKyAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCisKKworZGVmIHJ1bnRlc3QobnMsIHRlc3QpOgorICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgorCisgICAgbnMgLS0gcmVncnRlc3QgbmFtZXNwYWNlIG9mIG9wdGlvbnMKKyAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CisKKyAgICBSZXR1cm5zIHRoZSB0dXBsZSAocmVzdWx0LCB0ZXN0X3RpbWUpLCB3aGVyZSByZXN1bHQgaXMgb25lIG9mIHRoZQorICAgIGNvbnN0YW50czoKKworICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCisgICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCisgICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgorICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50CisgICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKKyAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAorICAgICIiIgorCisgICAgb3V0cHV0X29uX2ZhaWx1cmUgPSBucy52ZXJib3NlMworCisgICAgdXNlX3RpbWVvdXQgPSAobnMudGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKG5zLnRpbWVvdXQsIGV4aXQ9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBucy5tYXRjaF90ZXN0cworICAgICAgICBpZiBucy5mYWlsZmFzdDoKKyAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCisgICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgorICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQorCisgICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKKyAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKKyAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KKyAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCisgICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKKyAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQorCisgICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQ6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IG5zLnZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0CisgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9bm90IG5zLnZlcmJvc2UpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIG5zLnZlcmJvc2UpCitydW50ZXN0LnN0cmluZ2lvID0gTm9uZQorCisKK2RlZiBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSk6CisgICAgc3VwcG9ydC51bmxvYWQodGVzdCkKKworICAgIHRlc3RfdGltZSA9IDAuMAorICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgorICAgIHRyeToKKyAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpIG9yIG5zLnRlc3RkaXI6CisgICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQorICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0CisgICAgICAgIGNsZWFyX2NhY2hlcygpCisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgcGdvPW5zLnBnbykgYXMgZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQorICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KKyAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKKyAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKKyAgICAgICAgICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgbnMuaHVudHJsZWFrcykKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2csIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0OgorICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICBlbHNlOgorICAgICAgICBpZiByZWZsZWFrOgorICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6CisgICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQorICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKKworCitkZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6CisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IGdjCisKKyAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCisgICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0CisgICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgorICAgIGdjLmNvbGxlY3QoKQorCisgICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQorICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cworICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCisgICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQorICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKKyAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCisgICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQorICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQorCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKKyAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKKyAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAgICAgbnVrZXIobmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6CisgICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCisgICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKKyAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkgb3Igb3MuY3VyZGlyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjA0YzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpAQCAtMCwwICsxLDI0NSBAQAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJpbnQoIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiKQorICAgIHN5cy5leGl0KDIpCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgcnVudGVzdCwgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLCBQUk9HUkVTU19NSU5fVElNRSwKKyAgICBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCisKKworIyBEaXNwbGF5IHRoZSBydW5uaW5nIHRlc3RzIGlmIG5vdGhpbmcgaGFwcGVuZWQgbGFzdCBOIHNlY29uZHMKK1BST0dSRVNTX1VQREFURSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBJZiBpbnRlcnJ1cHRlZCwgZGlzcGxheSB0aGUgd2FpdCBwcm9ncmVzcyBldmVyeSBOIHNlY29uZHMKK1dBSVRfUFJPR1JFU1MgPSAyLjAgICAjIHNlY29uZHMKKworCitkZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgorICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KKworICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0CisgICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCisgICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQorICAgIDMtdHVwbGUuCisgICAgIiIiCisgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorCisgICAgbnNfZGljdCA9IHZhcnMobnMpCisgICAgc2xhdmVhcmdzID0gKG5zX2RpY3QsIHRlc3RuYW1lKQorICAgIHNsYXZlYXJncyA9IGpzb24uZHVtcHMoc2xhdmVhcmdzKQorCisgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAqc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgJy1YJywgJ2ZhdWx0aGFuZGxlcicsCisgICAgICAgICAgICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgJy0tc2xhdmVhcmdzJywgc2xhdmVhcmdzXQorICAgIGlmIG5zLnBnbzoKKyAgICAgICAgY21kICs9IFsnLS1wZ28nXQorCisgICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGFzIHJlZ3J0ZXN0J3Mgb3JpZ2luYWwKKyAgICAjIGludm9jYXRpb24gZW5zdXJlcyB0aGF0IFRFTVBESVIgZm9yIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSB3aGVuCisgICAgIyBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCkgaXMgdHJ1ZS4gU2VlIGlzc3VlIDE1MzAwLgorICAgIHBvcGVuID0gUG9wZW4oY21kLAorICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAorICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCisgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKKyAgICB3aXRoIHBvcGVuOgorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQorICAgIHJldHVybiByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycgorCisKK2RlZiBydW5fdGVzdHNfc2xhdmUoc2xhdmVhcmdzKToKKyAgICBuc19kaWN0LCB0ZXN0bmFtZSA9IGpzb24ubG9hZHMoc2xhdmVhcmdzKQorICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCoqbnNfZGljdCkKKworICAgIHNldHVwX3Rlc3RzKG5zKQorCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBydW50ZXN0KG5zLCB0ZXN0bmFtZSkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJworICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCisKKyAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKKyAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCksIGZsdXNoPVRydWUpCisgICAgc3lzLmV4aXQoMCkKKworCisjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCitjbGFzcyBNdWx0aXByb2Nlc3NJdGVyYXRvcjoKKworICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKKyAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCisKKworY2xhc3MgTXVsdGlwcm9jZXNzVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwZW5kaW5nLCBvdXRwdXQsIG5zKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYucGVuZGluZyA9IHBlbmRpbmcKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5ucyA9IG5zCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisKKyAgICBkZWYgX3J1bnRlc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QgPSBuZXh0KHNlbGYucGVuZGluZykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IHRlc3QKKworICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIHNlbGYubnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKworICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHNlbGYub3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdG9wID0gRmFsc2UKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzdG9wOgorICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLl9ydW50ZXN0KCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmFpc2UKKworCitkZWYgcnVuX3Rlc3RzX211bHRpcHJvY2VzcyhyZWdydGVzdCk6CisgICAgb3V0cHV0ID0gcXVldWUuUXVldWUoKQorICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NJdGVyYXRvcihyZWdydGVzdC50ZXN0cykKKyAgICB0ZXN0X3RpbWVvdXQgPSByZWdydGVzdC5ucy50aW1lb3V0CisgICAgdXNlX3RpbWVvdXQgPSAodGVzdF90aW1lb3V0IGlzIG5vdCBOb25lKQorCisgICAgd29ya2VycyA9IFtNdWx0aXByb2Nlc3NUaHJlYWQocGVuZGluZywgb3V0cHV0LCByZWdydGVzdC5ucykKKyAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHJlZ3J0ZXN0Lm5zLnVzZV9tcCldCisgICAgcHJpbnQoIlJ1biB0ZXN0cyBpbiBwYXJhbGxlbCB1c2luZyAlcyBjaGlsZCBwcm9jZXNzZXMiCisgICAgICAgICAgJSBsZW4od29ya2VycykpCisgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgZGVmIGdldF9ydW5uaW5nKHdvcmtlcnMpOgorICAgICAgICBydW5uaW5nID0gW10KKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgY3VycmVudF90ZXN0ID0gd29ya2VyLmN1cnJlbnRfdGVzdAorICAgICAgICAgICAgaWYgbm90IGN1cnJlbnRfdGVzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gd29ya2VyLnN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIGR0ID49IFBST0dSRVNTX01JTl9USU1FOgorICAgICAgICAgICAgICAgIHJ1bm5pbmcuYXBwZW5kKCclcyAoJS4wZiBzZWMpJyAlIChjdXJyZW50X3Rlc3QsIGR0KSkKKyAgICAgICAgcmV0dXJuIHJ1bm5pbmcKKworICAgIGZpbmlzaGVkID0gMAorICAgIHRlc3RfaW5kZXggPSAxCisgICAgZ2V0X3RpbWVvdXQgPSBtYXgoUFJPR1JFU1NfVVBEQVRFLCBQUk9HUkVTU19NSU5fVElNRSkKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIGZpbmlzaGVkIDwgcmVncnRlc3QubnMudXNlX21wOgorICAgICAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRlc3RfdGltZW91dCwgZXhpdD1UcnVlKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXRlbSA9IG91dHB1dC5nZXQodGltZW91dD1nZXRfdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBydW5uaW5nID0gZ2V0X3J1bm5pbmcod29ya2VycykKKyAgICAgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludCgncnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRlc3QsIHN0ZG91dCwgc3RkZXJyLCByZXN1bHQgPSBpdGVtCisgICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZWdydGVzdC5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICAgICAgdGV4dCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCBvaykKKyAgICAgICAgICAgIGlmIChvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF90aW1lID49IFBST0dSRVNTX01JTl9USU1FCisgICAgICAgICAgICAgICAgYW5kIG5vdCByZWdydGVzdC5ucy5wZ28pOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAoJS4wZiBzZWMpJyAlIHRlc3RfdGltZQorICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAtLSBydW5uaW5nOiAlcycgJSAnLCAnLmpvaW4ocnVubmluZykKKyAgICAgICAgICAgIHJlZ3J0ZXN0LmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgIyBDb3B5IHN0ZG91dCBhbmQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICAgICAgICAgIGlmIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBwcmludChzdGRvdXQsIGZsdXNoPVRydWUpCisgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgorICAgICAgICAgICAgICAgIG1zZyA9ICJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykKKyAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmVncnRlc3QuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHByaW50KCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgIyBJZiB0ZXN0cyBhcmUgaW50ZXJydXB0ZWQsIHdhaXQgdW50aWwgdGVzdHMgY29tcGxldGUKKyAgICB3YWl0X3N0YXJ0ID0gdGltZS5tb25vdG9uaWMoKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJ1bm5pbmcgPSBbd29ya2VyLmN1cnJlbnRfdGVzdCBmb3Igd29ya2VyIGluIHdvcmtlcnNdCisgICAgICAgIHJ1bm5pbmcgPSBsaXN0KGZpbHRlcihib29sLCBydW5uaW5nKSkKKyAgICAgICAgaWYgbm90IHJ1bm5pbmc6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdhaXRfc3RhcnQKKyAgICAgICAgbGluZSA9ICJXYWl0aW5nIGZvciAlcyAoJXMgdGVzdHMpIiAlICgnLCAnLmpvaW4ocnVubmluZyksIGxlbihydW5uaW5nKSkKKyAgICAgICAgaWYgZHQgPj0gV0FJVF9QUk9HUkVTUzoKKyAgICAgICAgICAgIGxpbmUgPSAiJXMgc2luY2UgJS4wZiBzZWMiICUgKGxpbmUsIGR0KQorICAgICAgICBwcmludChsaW5lKQorICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuam9pbihXQUlUX1BST0dSRVNTKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmFkM2FmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKQEAgLTAsMCArMSwyODUgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGxvY2FsZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKKworCisjIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCisjIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KKyMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKKyMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCisjIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgorIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAorIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KKworY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKKyAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgorCisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgorICAgICAgICAgICAgI3N0dWZmCisKKyAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgorICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCisgICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisKKyAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCisgICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgorICAgICIiIgorCisgICAgY2hhbmdlZCA9IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6CisgICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQorICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAorICAgICAgICBzZWxmLnBnbyA9IHBnbworCisgICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAorICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKKyAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKKyAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKKyAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgorICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgorICAgICMKKyAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKKyAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KKworICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAorICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKKyAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAorICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKKyAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgorICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCisgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCisgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCisgICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6CisgICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQorICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KKworICAgIGRlZiBnZXRfY3dkKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKKyAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQorCisgICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAorICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAorCisgICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgorICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKKyAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgorCisgICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkaW4KKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgorICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgorCisgICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKKyAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgorICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQorICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKKworICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQorICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgorICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6CisgICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KKyAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQorCisgICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQorICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgorICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQorCisgICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXworICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6CisgICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQorICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6CisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCisKKyAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KKyAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQorICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKKyAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKKyAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQorICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQorCisgICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgorICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCisgICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQorICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgorICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKKyAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCisgICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6CisgICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KKyAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQorCisgICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgorICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgorICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKKworICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCisgICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKKyAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCisgICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQorCisgICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCisgICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQorICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgorICAgICAgICBwYWlyaW5ncyA9IFtdCisgICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBhaXJpbmdzCisgICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKKyAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKKworICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZworICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6CisgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCisKKyAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6CisgICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQorICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4CisgICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCisgICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCisgICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6CisgICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQorICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQorICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludChmIldhcm5pbmcgLS0ge25hbWV9IHdhcyBtb2RpZmllZCBieSB7c2VsZi50ZXN0bmFtZX0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChmIiAgQmVmb3JlOiB7b3JpZ2luYWx9XG4gIEFmdGVyOiAge2N1cnJlbnR9ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDI0NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKQEAgLTAsMCArMSwxMjEgQEAKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJlZmxlYWsgaW1wb3J0IHdhcm1fY2FjaGVzCisKKworZGVmIHNldHVwX3Rlc3RzKG5zKToKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQorICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCisgICAgc2lnbmFscyA9IFtdCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKKyAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6CisgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCisKKyAgICByZXBsYWNlX3N0ZG91dCgpCisgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCisKKyAgICBpZiBucy50ZXN0ZGlyOgorICAgICAgICAjIFByZXBlbmQgdGVzdCBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsIHNvIHJ1bnRlc3QoKSB3aWxsIGJlIGFibGUKKyAgICAgICAgIyB0byBsb2NhdGUgdGVzdHMKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChucy50ZXN0ZGlyKSkKKworICAgICMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KKyAgICAjIExpYi8pIGFuZCwgaWYgd2UgY2hhbmdlIHRoZSBDV0QgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXIsIHNvbWUKKyAgICAjIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgorICAgICMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgorICAgICMgdGhleSBhcmUgZm91bmQgaW4gdGhlIENXRCB0aGVpciBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSByZWxhdGl2ZSAodGhpcworICAgICMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQorICAgICMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQorICAgICMgKHNpdGUucHkgYWJzb2x1dGl6ZSB0aGVtKSwgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIGFic29sdXRlIHRvby4KKyAgICAjIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCisgICAgIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KKyAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgaW5kZXgsIHBhdGggaW4gZW51bWVyYXRlKG1vZHVsZS5fX3BhdGhfXyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChwYXRoKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobW9kdWxlLl9fZmlsZV9fKQorCisgICAgIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAorICAgICMgZm9yIGRlZXBseSByZWN1cnNpdmUgcmVndWxhciBleHByZXNzaW9ucy4gIFdlIHNlZSB0aGlzIGFzIGNyYXNoZXMgaW4KKyAgICAjIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKKyAgICAjIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCisgICAgIyBUaGlzIGFwcHJvYWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igb3RoZXIgVW5peHkgcGxhdGZvcm1zIHRoYXQKKyAgICAjIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHJlc291cmNlCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQorICAgICAgICAgICAgbmV3c29mdCA9IG1pbihoYXJkLCBtYXgoc29mdCwgMTAyNCoyMDQ4KSkKKyAgICAgICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKKworICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQorCisgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcworICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgIHdhcm1fY2FjaGVzKCkKKworICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKKworICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKKyAgICAgICAgZ2Muc2V0X3RocmVzaG9sZChucy50aHJlc2hvbGQpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCisKKworZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CisgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCisgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKKyAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCisgICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgY2xvc2VmZD1GYWxzZSwKKyAgICAgICAgbmV3bGluZT0nXG4nKQorCisgICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6CisgICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisgICAgYXRleGl0LnJlZ2lzdGVyKHJlc3RvcmVfc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggZjIwZmRjMC4uMjZlOTM2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0yNjYsOSArMjY2LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgbGlzdCgic3BhbWVnZ3MiKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kLCBOb25lKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5leHRlbmQpCiAKKyAgICAgICAgIyBvdmVyZmxvdyB0ZXN0LiBpc3N1ZTE2MjEKKyAgICAgICAgY2xhc3MgQ3VzdG9tSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIGRlZiBfX2xlbmd0aF9oaW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tYXhzaXplCisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMSwyLDMsNF0pCisgICAgICAgIGEuZXh0ZW5kKEN1c3RvbUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbMSwyLDMsNF0pCisKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFswLCAxLCAyXSkKICAgICAgICAgYS5pbnNlcnQoMCwgLTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQppbmRleCBhNjRhYTE4Li5hNmNiM2IxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIFRJTUVPVVRfTUFYCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0xOTgsNiArMTk5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0c1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1lb3V0KHJlc3VsdHNbMV0sIDAuNSkKIAorICAgIGRlZiB0ZXN0X3dlYWtyZWZfZXhpc3RzKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZl9kZWxldGVkKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAKIGNsYXNzIExvY2tUZXN0cyhCYXNlTG9ja1Rlc3RzKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5IGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKaW5kZXggYTFmMjk4ZC4uNGQ5ZjAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKKysrIGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKQEAgLTMsNyArMyw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICoKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDc5MjJiNTQuLjVjODMzNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTEwMDAsNyArMTAwMCw3IEBACiAgICAgICAgICAgICBiJzAnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1AKICAgICAgICAgICAgIGInMScsICAgICAgICAgICAgICAgICAgICAgICAjIFBPUF9NQVJLCiAgICAgICAgICAgICBiJzInLCAgICAgICAgICAgICAgICAgICAgICAgIyBEVVAKLSAgICAgICAgICAgICMgYicoMicsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKDInLAogICAgICAgICAgICAgYidSJywgICAgICAgICAgICAgICAgICAgICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJylSJywKICAgICAgICAgICAgIGInYScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORApAQCAtMTAwOSw3ICsxMDA5LDcgQEAKICAgICAgICAgICAgIGInTmInLAogICAgICAgICAgICAgYidkJywgICAgICAgICAgICAgICAgICAgICAgICMgRElDVAogICAgICAgICAgICAgYidlJywgICAgICAgICAgICAgICAgICAgICAgICMgQVBQRU5EUwotICAgICAgICAgICAgIyBiJyhlJywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhlJywKICAgICAgICAgICAgIGInaWJ1aWx0aW5zXG5saXN0XG4nLCAgICAgICAjIElOU1QKICAgICAgICAgICAgIGInbCcsICAgICAgICAgICAgICAgICAgICAgICAjIExJU1QKICAgICAgICAgICAgIGInbycsICAgICAgICAgICAgICAgICAgICAgICAjIE9CSgpAQCAtMTAyMiw3ICsxMDIyLDcgQEAKICAgICAgICAgICAgIGInTk5zJywKICAgICAgICAgICAgIGIndCcsICAgICAgICAgICAgICAgICAgICAgICAjIFRVUExFCiAgICAgICAgICAgICBiJ3UnLCAgICAgICAgICAgICAgICAgICAgICAgIyBTRVRJVEVNUwotICAgICAgICAgICAgIyBiJyh1JywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgZG9lc24ndCByYWlzZQorICAgICAgICAgICAgYicodScsCiAgICAgICAgICAgICBiJ30oTnUnLAogICAgICAgICAgICAgYidceDgxJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKCiAgICAgICAgICAgICBiJylceDgxJywKQEAgLTEwMzMsNyArMTAzMyw3IEBACiAgICAgICAgICAgICBiJ05ceDg3JywKICAgICAgICAgICAgIGInTk5ceDg3JywKICAgICAgICAgICAgIGInXHg5MCcsICAgICAgICAgICAgICAgICAgICAjIEFERElURU1TCi0gICAgICAgICAgICAjIGInKFx4OTAnLCAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgIGInKFx4OTAnLAogICAgICAgICAgICAgYidceDkxJywgICAgICAgICAgICAgICAgICAgICMgRlJPWkVOU0VUCiAgICAgICAgICAgICBiJ1x4OTInLCAgICAgICAgICAgICAgICAgICAgIyBORVdPQkpfRVgKICAgICAgICAgICAgIGInKX1ceDkyJywKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfbWFyayhzZWxmKToKICAgICAgICAgYmFkcGlja2xlcyA9IFsKLSAgICAgICAgICAgICMgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAorICAgICAgICAgICAgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAogICAgICAgICAgICAgYidOKDInLCAgICAgICAgICAgICAgICAgICAgICMgRFVQCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKShSJywgICAgIyBSRURVQ0UKICAgICAgICAgICAgIGInY2J1aWx0aW5zXG5saXN0XG4oKVInLApAQCAtMTA4MSw3ICsxMDgxLDcgQEAKICAgICAgICAgICAgIGInTihceDk0JywgICAgICAgICAgICAgICAgICAjIE1FTU9JWkUKICAgICAgICAgXQogICAgICAgICBmb3IgcCBpbiBiYWRwaWNrbGVzOgotICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX21hcmtfZXJyb3JzLCBwKQorICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX3N0YWNrX2Vycm9ycywgcCkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlZF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3IoRU9GRXJyb3IsIGInJykKQEAgLTE4NTUsMTYgKzE4NTUsMTQgQEAKICAgICAgICAgeC5hYmMgPSA2NjYKICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5kdW1wcywgeCwgcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCiAgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCiAgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidNXHhjZVx4ZmEnLCBzKSAgIyBCSU5JTlQyCisgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidYXHgwNFx4MDBceDAwXHgwMEZBQ0UnLCBzKSAgIyBCSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHByb3RvID49IDQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1x4OGNceDA0RkFDRScsIHMpICAjIFNIT1JUX0JJTlVOSUNPREUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkpfRVgsIHMpLApAQCAtMjU4MywxMSArMjU4MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5QaWNrbGluZ0Vycm9yLCBCYWRQaWNrbGVyKCkuZHVtcCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlVucGlja2xpbmdFcnJvciwgQmFkVW5waWNrbGVyKCkubG9hZCkKIAotICAgIGRlZiB0ZXN0X2JhZF9pbnB1dChzZWxmKToKLSAgICAgICAgIyBUZXN0IGlzc3VlNDI5OAotICAgICAgICBzID0gYnl0ZXMoWzB4NTgsIDAsIDAsIDAsIDB4NTRdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgcGlja2xlLmxvYWRzLCBzKQotCiAKIGNsYXNzIEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3B5ZG9jX21vZC5weSBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQppbmRleCBjZGExYzllLi45YzFmZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9weWRvY19tb2QucHkKKysrIGIvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIHBhc3MKIAogY2xhc3MgQihvYmplY3QpOgotICAgIE5PX01FQU5JTkcgPSAiZWdncyIKKyAgICBOT19NRUFOSU5HOiBzdHIgPSAiZWdncyIKICAgICBwYXNzCiAKIGNsYXNzIEMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggOGMxNThmOC4uYTM3OWQzMyAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICgnYS4qYicsICdhY2NcbmNjYicsIEZBSUwpLAogICAgICgnYS57NCw1fWInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuYicsICdhXHJiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FccmInKSwKLSAgICAoJ2EuYig/cyknLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCi0gICAgKCdhLiooP3MpYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAorICAgICgnKD9zKWEuYicsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKKyAgICAoJyg/cylhLipiJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS57NCw1fWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKICAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCiAKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICgnKGFiYycsICctJywgU1lOVEFYX0VSUk9SKSwKICAgICAoJ2FdJywgJ2FdJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdJyksCiAgICAgKCdhW11dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCi0gICAgKCdhW1xdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAorICAgICgnYVtcXF1dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCiAgICAgKCdhW15iY11kJywgJ2FlZCcsIFNVQ0NFRUQsICdmb3VuZCcsICdhZWQnKSwKICAgICAoJ2FbXmJjXWQnLCAnYWJkJywgRkFJTCksCiAgICAgKCdhW14tYl1jJywgJ2FkYycsIFNVQ0NFRUQsICdmb3VuZCcsICdhZGMnKSwKQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgICMgbG9va2JlaGluZDogc3BsaXQgYnkgOiBidXQgbm90IGlmIGl0IGlzIGVzY2FwZWQgYnkgLS4KICAgICAoJyg/PCEtKTooLio/KSg/PCEtKTonLCAnYTpiYy06ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiYy06ZGUnICksCiAgICAgIyBlc2NhcGluZyB3aXRoIFwgYXMgd2Uga25vdyBpdAotICAgICgnKD88IVxcXCk6KC4qPykoPzwhXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKKyAgICAoJyg/PCFcXFxcKTooLio/KSg/PCFcXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKICAgICAjIHRlcm1pbmF0aW5nIHdpdGggJyBhbmQgZXNjYXBpbmcgd2l0aCA/IGFzIGluIGVkaWZhY3QKICAgICAoIig/PCFcXD8pJyguKj8pKD88IVxcPyknIiwgImEnYmM/J2RlJ2YiLCBTVUNDRUVELCAnZzEnLCAiYmM/J2RlIiApLAogCkBAIC01NjMsNyArNTYzLDcgQEAKICAgICAjIENoZWNrIG9kZCBwbGFjZW1lbnQgb2YgZW1iZWRkZWQgcGF0dGVybiBtb2RpZmllcnMKIAogICAgICMgbm90IGFuIGVycm9yIHVuZGVyIFBDUkUvUFJFOgotICAgICgndyg/aSknLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCisgICAgKCcoP2kpdycsICdXJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1cnKSwKICAgICAjICgndyg/aSknLCAnVycsIFNZTlRBWF9FUlJPUiksCiAKICAgICAjIENvbW1lbnRzIHVzaW5nIHRoZSB4IGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXIKQEAgLTYyNyw3ICs2MjcsNyBAQAogICAgICMgYnVnIDExNDAzMzogbm90aGluZyB0byByZXBlYXQKICAgICAocicoeD8pPycsICd4JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ3gnKSwKICAgICAjIGJ1ZyAxMTUwNDA6IHJlc2NhbiBpZiBmbGFncyBhcmUgbW9kaWZpZWQgaW5zaWRlIHBhdHRlcm4KLSAgICAocicgKD94KWZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAorICAgIChyJyg/eCkgZm9vICcsICdmb28nLCBTVUNDRUVELCAnZm91bmQnLCAnZm9vJyksCiAgICAgIyBidWcgMTE1NjE4OiBuZWdhdGl2ZSBsb29rYWhlYWQKICAgICAocicoPzwhYWJjKShkLmYpJywgJ2FiY2RlZmRvZicsIFNVQ0NFRUQsICdmb3VuZCcsICdkb2YnKSwKICAgICAjIGJ1ZyAxMTYyNTE6IGNoYXJhY3RlciBjbGFzcyBidWcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKaW5kZXggYzFkODVmNi4uMjFiMGVkZiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvcmVncnRlc3QucHkKQEAgLTYsMTY3MCArNiwzMyBAQAogUnVuIHRoaXMgc2NyaXB0IHdpdGggLWggb3IgLS1oZWxwIGZvciBkb2N1bWVudGF0aW9uLgogIiIiCiAKLVVTQUdFID0gIiIiXAotcHl0aG9uIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi1weXRob24gcGF0aC90by9MaWIvdGVzdC9yZWdydGVzdC5weSBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KLSIiIgotCi1ERVNDUklQVElPTiA9ICIiIlwKLVJ1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4KLQotSWYgbm8gYXJndW1lbnRzIG9yIG9wdGlvbnMgYXJlIHByb3ZpZGVkLCBmaW5kcyBhbGwgZmlsZXMgbWF0Y2hpbmcKLXRoZSBwYXR0ZXJuICJ0ZXN0XyoiIGluIHRoZSBMaWIvdGVzdCBzdWJkaXJlY3RvcnkgYW5kIHJ1bnMKLXRoZW0gaW4gYWxwaGFiZXRpY2FsIG9yZGVyIChidXQgc2VlIC1NIGFuZCAtdSwgYmVsb3csIGZvciBleGNlcHRpb25zKS4KLQotRm9yIG1vcmUgcmlnb3JvdXMgdGVzdGluZywgaXQgaXMgdXNlZnVsIHRvIHVzZSB0aGUgZm9sbG93aW5nCi1jb21tYW5kIGxpbmU6Ci0KLXB5dGhvbiAtRSAtV2QgLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgLi4uXQotIiIiCi0KLUVQSUxPRyA9ICIiIlwKLUFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHM6Ci0KLS1yIHJhbmRvbWl6ZXMgdGVzdCBleGVjdXRpb24gb3JkZXIuIFlvdSBjYW4gdXNlIC0tcmFuZHNlZWQ9aW50IHRvIHByb3ZpZGUgYW4KLWludCBzZWVkIHZhbHVlIGZvciB0aGUgcmFuZG9taXplcjsgdGhpcyBpcyB1c2VmdWwgZm9yIHJlcHJvZHVjaW5nIHRyb3VibGVzb21lCi10ZXN0IG9yZGVycy4KLQotLXMgT24gdGhlIGZpcnN0IGludm9jYXRpb24gb2YgcmVncnRlc3QgdXNpbmcgLXMsIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZm91bmQKLW9yIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBpcyBydW4sIGFuZCB0aGUgbmFtZSBvZgotdGhlIG5leHQgdGVzdCBpcyByZWNvcmRlZCBpbiBhIGZpbGUgbmFtZWQgcHluZXh0dGVzdC4gIElmIHJ1biBmcm9tIHRoZQotUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgcHluZXh0dGVzdCBpcyBsb2NhdGVkIGluIHRoZSAnYnVpbGQnIHN1YmRpcmVjdG9yeSwKLW90aGVyd2lzZSBpdCBpcyBsb2NhdGVkIGluIHRlbXBmaWxlLmdldHRlbXBkaXIoKS4gIE9uIHN1YnNlcXVlbnQgcnVucywKLXRoZSB0ZXN0IGluIHB5bmV4dHRlc3QgaXMgcnVuLCBhbmQgdGhlIG5leHQgdGVzdCBpcyB3cml0dGVuIHRvIHB5bmV4dHRlc3QuCi1XaGVuIHRoZSBsYXN0IHRlc3QgaGFzIGJlZW4gcnVuLCBweW5leHR0ZXN0IGlzIGRlbGV0ZWQuICBJbiB0aGlzIHdheSBpdAotaXMgcG9zc2libGUgdG8gc2luZ2xlIHN0ZXAgdGhyb3VnaCB0aGUgdGVzdCBmaWxlcy4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KLWRvaW5nIG1lbW9yeSBhbmFseXNpcyBvbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCB3aGljaCBwcm9jZXNzIHRlbmRzIHRvCi1jb25zdW1lIHRvbyBtYW55IHJlc291cmNlcyB0byBydW4gdGhlIGZ1bGwgcmVncmVzc2lvbiB0ZXN0IG5vbi1zdG9wLgotCi0tUyBpcyB1c2VkIHRvIGNvbnRpbnVlIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgYW4gYWJvcnRlZCBydW4uICBJdCB3aWxsCi1tYWludGFpbiB0aGUgb3JkZXIgYSBzdGFuZGFyZCBydW4gKGllLCB0aGlzIGFzc3VtZXMgLXIgaXMgbm90IHVzZWQpLgotVGhpcyBpcyB1c2VmdWwgYWZ0ZXIgdGhlIHRlc3RzIGhhdmUgcHJlbWF0dXJlbHkgc3RvcHBlZCBmb3Igc29tZSBleHRlcm5hbAotcmVhc29uIGFuZCB5b3Ugd2FudCB0byBzdGFydCBydW5uaW5nIGZyb20gd2hlcmUgeW91IGxlZnQgb2ZmIHJhdGhlcgotdGhhbiBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuCi0KLS1mIHJlYWRzIHRoZSBuYW1lcyBvZiB0ZXN0cyBmcm9tIHRoZSBmaWxlIGdpdmVuIGFzIGYncyBhcmd1bWVudCwgb25lCi1vciBtb3JlIHRlc3QgbmFtZXMgcGVyIGxpbmUuICBXaGl0ZXNwYWNlIGlzIGlnbm9yZWQuICBCbGFuayBsaW5lcyBhbmQKLWxpbmVzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZC4gIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yCi13aGl0dGxpbmcgZG93biBmYWlsdXJlcyBpbnZvbHZpbmcgaW50ZXJhY3Rpb25zIGFtb25nIHRlc3RzLgotCi0tTCBjYXVzZXMgdGhlIGxlYWtzKDEpIGNvbW1hbmQgdG8gYmUgcnVuIGp1c3QgYmVmb3JlIGV4aXQgaWYgaXQgZXhpc3RzLgotbGVha3MoMSkgaXMgYXZhaWxhYmxlIG9uIE1hYyBPUyBYIGFuZCBwcmVzdW1hYmx5IG9uIHNvbWUgb3RoZXIKLUZyZWVCU0QtZGVyaXZlZCBzeXN0ZW1zLgotCi0tUiBydW5zIGVhY2ggdGVzdCBzZXZlcmFsIHRpbWVzIGFuZCBleGFtaW5lcyBzeXMuZ2V0dG90YWxyZWZjb3VudCgpIHRvCi1zZWUgaWYgdGhlIHRlc3QgYXBwZWFycyB0byBiZSBsZWFraW5nIHJlZmVyZW5jZXMuICBUaGUgYXJndW1lbnQgc2hvdWxkCi1iZSBvZiB0aGUgZm9ybSBzdGFiOnJ1bjpmbmFtZSB3aGVyZSAnc3RhYicgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUKLXRlc3QgaXMgcnVuIHRvIGxldCBnZXR0b3RhbHJlZmNvdW50IHNldHRsZSBkb3duLCAncnVuJyBpcyB0aGUgbnVtYmVyCi1vZiB0aW1lcyBmdXJ0aGVyIGl0IGlzIHJ1biBhbmQgJ2ZuYW1lJyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGUKLXJlcG9ydHMgYXJlIHdyaXR0ZW4gdG8uICBUaGVzZSBwYXJhbWV0ZXJzIGFsbCBoYXZlIGRlZmF1bHRzICg1LCA0IGFuZAotInJlZmxvZy50eHQiIHJlc3BlY3RpdmVseSksIGFuZCB0aGUgbWluaW1hbCBpbnZvY2F0aW9uIGlzICctUiA6Jy4KLQotLU0gcnVucyB0ZXN0cyB0aGF0IHJlcXVpcmUgYW4gZXhvcmJpdGFudCBhbW91bnQgb2YgbWVtb3J5LiBUaGVzZSB0ZXN0cwotdHlwaWNhbGx5IHRyeSB0byBhc2NlcnRhaW4gY29udGFpbmVycyBrZWVwIHdvcmtpbmcgd2hlbiBjb250YWluaW5nIG1vcmUgdGhhbgotMiBiaWxsaW9uIG9iamVjdHMsIHdoaWNoIG9ubHkgd29ya3Mgb24gNjQtYml0IHN5c3RlbXMuIFRoZXJlIGFyZSBhbHNvIHNvbWUKLXRlc3RzIHRoYXQgdHJ5IHRvIGV4aGF1c3QgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIHdoaWNoIG9ubHkgbWFrZXMKLXNlbnNlIG9uIDMyLWJpdCBzeXN0ZW1zIHdpdGggYXQgbGVhc3QgMkdiIG9mIG1lbW9yeS4gVGhlIHBhc3NlZC1pbiBtZW1saW1pdCwKLXdoaWNoIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtIG9mICcyLjVHYicsIGRldGVybWluZXMgaG93bXVjaCBtZW1vcnkgdGhlCi10ZXN0cyB3aWxsIGxpbWl0IHRoZW1zZWx2ZXMgdG8gKGJ1dCB0aGV5IG1heSBnbyBzbGlnaHRseSBvdmVyLikgVGhlIG51bWJlcgotc2hvdWxkbid0IGJlIG1vcmUgbWVtb3J5IHRoYW4gdGhlIG1hY2hpbmUgaGFzIChpbmNsdWRpbmcgc3dhcCBtZW1vcnkpLiBZb3UKLXNob3VsZCBhbHNvIGtlZXAgaW4gbWluZCB0aGF0IHN3YXAgbWVtb3J5IGlzIGdlbmVyYWxseSBtdWNoLCBtdWNoIHNsb3dlcgotdGhhbiBSQU0sIGFuZCBzZXR0aW5nIG1lbWxpbWl0IHRvIGFsbCBhdmFpbGFibGUgUkFNIG9yIGhpZ2hlciB3aWxsIGhlYXZpbHkKLXRheCB0aGUgbWFjaGluZS4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIG5vIHVzZSBydW5uaW5nIHRoZXNlIHRlc3RzIHdpdGggYQotbGltaXQgb2YgbGVzcyB0aGFuIDIuNUdiLCBhbmQgbWFueSByZXF1aXJlIG1vcmUgdGhhbiAyMEdiLiBUZXN0cyB0aGF0IGV4cGVjdAotdG8gdXNlIG1vcmUgdGhhbiBtZW1saW1pdCBtZW1vcnkgd2lsbCBiZSBza2lwcGVkLiBUaGUgYmlnLW1lbW9yeSB0ZXN0cwotZ2VuZXJhbGx5IHJ1biB2ZXJ5LCB2ZXJ5IGxvbmcuCi0KLS11IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyB0byBydW4sCi1zdWNoIGFzIHRob3NlIHJlcXVpcmluZyBsYXJnZSBmaWxlIHN1cHBvcnQgb3IgbmV0d29yayBjb25uZWN0aXZpdHkuCi1UaGUgYXJndW1lbnQgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB3b3JkcyBpbmRpY2F0aW5nIHRoZQotcmVzb3VyY2VzIHRvIHRlc3QuICBDdXJyZW50bHkgb25seSB0aGUgZm9sbG93aW5nIGFyZSBkZWZpbmVkOgotCi0gICAgYWxsIC0gICAgICAgRW5hYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcy4KLQotICAgIG5vbmUgLSAgICAgIERpc2FibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzICh0aGlzIGlzIHRoZSBkZWZhdWx0KS4KLQotICAgIGF1ZGlvIC0gICAgIFRlc3RzIHRoYXQgdXNlIHRoZSBhdWRpbyBkZXZpY2UuICAoVGhlcmUgYXJlIGtub3duCi0gICAgICAgICAgICAgICAgY2FzZXMgb2YgYnJva2VuIGF1ZGlvIGRyaXZlcnMgdGhhdCBjYW4gY3Jhc2ggUHl0aG9uIG9yCi0gICAgICAgICAgICAgICAgZXZlbiB0aGUgTGludXgga2VybmVsLikKLQotICAgIGN1cnNlcyAtICAgIFRlc3RzIHRoYXQgdXNlIGN1cnNlcyBhbmQgd2lsbCBtb2RpZnkgdGhlIHRlcm1pbmFsJ3MKLSAgICAgICAgICAgICAgICBzdGF0ZSBhbmQgb3V0cHV0IG1vZGVzLgotCi0gICAgbGFyZ2VmaWxlIC0gSXQgaXMgb2theSB0byBydW4gc29tZSB0ZXN0IHRoYXQgbWF5IGNyZWF0ZSBodWdlCi0gICAgICAgICAgICAgICAgZmlsZXMuICBUaGVzZSB0ZXN0cyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgbWF5Ci0gICAgICAgICAgICAgICAgY29uc3VtZSA+MkdCIG9mIGRpc2sgc3BhY2UgdGVtcG9yYXJpbHkuCi0KLSAgICBuZXR3b3JrIC0gICBJdCBpcyBva2F5IHRvIHJ1biB0ZXN0cyB0aGF0IHVzZSBleHRlcm5hbCBuZXR3b3JrCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UsIGUuZy4gdGVzdGluZyBTU0wgc3VwcG9ydCBmb3Igc29ja2V0cy4KLQotICAgIGRlY2ltYWwgLSAgIFRlc3QgdGhlIGRlY2ltYWwgbW9kdWxlIGFnYWluc3QgYSBsYXJnZSBzdWl0ZSB0aGF0Ci0gICAgICAgICAgICAgICAgdmVyaWZpZXMgY29tcGxpYW5jZSB3aXRoIHN0YW5kYXJkcy4KLQotICAgIGNwdSAtICAgICAgIFVzZWQgZm9yIGNlcnRhaW4gQ1BVLWhlYXZ5IHRlc3RzLgotCi0gICAgc3VicHJvY2VzcyAgUnVuIGFsbCB0ZXN0cyBmb3IgdGhlIHN1YnByb2Nlc3MgbW9kdWxlLgotCi0gICAgdXJsZmV0Y2ggLSAgSXQgaXMgb2theSB0byBkb3dubG9hZCBmaWxlcyByZXF1aXJlZCBvbiB0ZXN0aW5nLgotCi0gICAgZ3VpIC0gICAgICAgUnVuIHRlc3RzIHRoYXQgcmVxdWlyZSBhIHJ1bm5pbmcgR1VJLgotCi1UbyBlbmFibGUgYWxsIHJlc291cmNlcyBleGNlcHQgb25lLCB1c2UgJy11YWxsLC08cmVzb3VyY2U+Jy4gIEZvcgotZXhhbXBsZSwgdG8gcnVuIGFsbCB0aGUgdGVzdHMgZXhjZXB0IGZvciB0aGUgZ3VpIHRlc3RzLCBnaXZlIHRoZQotb3B0aW9uICctdWFsbCwtZ3VpJy4KLSIiIgotCiAjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CiBpbXBvcnQgaW1wb3J0bGliCiAKLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZmF1bHRoYW5kbGVyCi1pbXBvcnQgaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9jYWxlCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9ydCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwotaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdGltZQotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKLWZyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0IGltcG9ydCBtYWluCiAKLXRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdGhyZWFkaW5nID0gTm9uZQotdHJ5OgotICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAorIyBBbGlhcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoanVzdCBpbiBjYXNlKQorbWFpbl9pbl90ZW1wX2N3ZCA9IG1haW4KIAotIyBTb21lIHRpbWVzIF9fcGF0aF9fIGFuZCBfX2ZpbGVfXyBhcmUgbm90IGFic29sdXRlIChlLmcuIHdoaWxlIHJ1bm5pbmcgZnJvbQotIyBMaWIvKSBhbmQsIGlmIHdlIGNoYW5nZSB0aGUgQ1dEIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyLCBzb21lCi0jIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgotIyBUaGVzZSBtb2R1bGVzIGFyZSBzZWFyY2hlZCBmaXJzdCBpbiBzeXMucGF0aFswXSAoc28gJycgLS0gdGhlIENXRCkgYW5kIGlmCi0jIHRoZXkgYXJlIGZvdW5kIGluIHRoZSBDV0QgdGhlaXIgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgcmVsYXRpdmUgKHRoaXMKLSMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQotIyBub3QgZm91bmQgaW4gdGhlIENXRCwgYW5kIHNpbmNlIHRoZSBvdGhlciBwYXRocyBpbiBzeXMucGF0aFsxOl0gYXJlIGFic29sdXRlCi0jIChzaXRlLnB5IGFic29sdXRpemUgdGhlbSksIHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSBhYnNvbHV0ZSB0b28uCi0jIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCi0jIHRoZSBwYWNrYWdlcyB0byBwcmV2ZW50IGxhdGVyIGltcG9ydHMgdG8gZmFpbCB3aGVuIHRoZSBDV0QgaXMgZGlmZmVyZW50LgotZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtvcy5wYXRoLmFic3BhdGgocGF0aCkgZm9yIHBhdGggaW4gbW9kdWxlLl9fcGF0aF9fXQotICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKLSAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG1vZHVsZS5fX2ZpbGVfXykKIAotCi0jIE1hY09TWCAoYS5rLmEuIERhcndpbikgaGFzIGEgZGVmYXVsdCBzdGFjayBzaXplIHRoYXQgaXMgdG9vIHNtYWxsCi0jIGZvciBkZWVwbHkgcmVjdXJzaXZlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBXZSBzZWUgdGhpcyBhcyBjcmFzaGVzIGluCi0jIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKLSMgZml4IGlzIHRvIHNldCB0aGUgc3RhY2sgbGltaXQgdG8gMjA0OC4KLSMgVGhpcyBhcHByb2FjaCBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIG90aGVyIFVuaXh5IHBsYXRmb3JtcyB0aGF0Ci0jIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgotaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHJlc291cmNlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgc29mdCwgaGFyZCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0spCi0gICAgICAgIG5ld3NvZnQgPSBtaW4oaGFyZCwgbWF4KHNvZnQsIDEwMjQqMjA0OCkpCi0gICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKLQotIyBUZXN0IHJlc3VsdCBjb25zdGFudHMuCi1QQVNTRUQgPSAxCi1GQUlMRUQgPSAwCi1FTlZfQ0hBTkdFRCA9IC0xCi1TS0lQUEVEID0gLTIKLVJFU09VUkNFX0RFTklFRCA9IC0zCi1JTlRFUlJVUFRFRCA9IC00Ci1DSElMRF9FUlJPUiA9IC01ICAgIyBlcnJvciBpbiBhIGNoaWxkIHByb2Nlc3MKLQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KLVJFU09VUkNFX05BTUVTID0gKCdhdWRpbycsICdjdXJzZXMnLCAnbGFyZ2VmaWxlJywgJ25ldHdvcmsnLAotICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwnLCAnY3B1JywgJ3N1YnByb2Nlc3MnLCAndXJsZmV0Y2gnLCAnZ3VpJykKLQotIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQotIyB0byBrZWVwIHRoZSB0ZXN0IGZpbGVzIGluIGEgc3ViZm9sZGVyLiAgVGhpcyBlYXNlcyB0aGUgY2xlYW51cCBvZiBsZWZ0b3ZlcgotIyBmaWxlcyB1c2luZyB0aGUgIm1ha2UgZGlzdGNsZWFuIiBjb21tYW5kLgotaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgIFRFTVBESVIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ2J1aWxkJykKLWVsc2U6Ci0gICAgVEVNUERJUiA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQotCi1jbGFzcyBfQXJnUGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKLQotICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgc3VwZXIoKS5lcnJvcihtZXNzYWdlICsgIlxuUGFzcyAtaCBvciAtLWhlbHAgZm9yIGNvbXBsZXRlIGhlbHAuIikKLQotZGVmIF9jcmVhdGVfcGFyc2VyKCk6Ci0gICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCi0gICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgotICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCi0KLSAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgotICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgotICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCi0gICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvdycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wZ28nLCBkZXN0PSdwZ28nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdlbmFibGUgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIHRyYWluaW5nJykKLQotICAgIHJldHVybiBwYXJzZXIKLQotZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6Ci0gICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQotICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQotCi1kZWYgaHVudHJsZWFrcyhzdHJpbmcpOgotICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQotICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgotICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKLSAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCi0gICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQotICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0Ci0gICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKLSAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCi0KLWRlZiByZXNvdXJjZXNfbGlzdChzdHJpbmcpOgotICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIHN0cmluZy5zcGxpdCgnLCcpXQotICAgIGZvciByIGluIHU6Ci0gICAgICAgIGlmIHIgPT0gJ2FsbCcgb3IgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgIHIgPSByWzE6XQotICAgICAgICBpZiByIG5vdCBpbiBSRVNPVVJDRV9OQU1FUzoKLSAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCdpbnZhbGlkIHJlc291cmNlOiAnICsgcikKLSAgICByZXR1cm4gdQotCi1kZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgotICAgICMgRGVmYXVsdHMKLSAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCi0gICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKLSAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKLSAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKLSAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKLSAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKLSAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQotICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQotICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKLSAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCi0KLSAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCi0gICAgIyBJc3N1ZSAjMTQxOTE6IGFyZ3BhcnNlIGRvZXNuJ3Qgc3VwcG9ydCAiaW50ZXJtaXhlZCIgcG9zaXRpb25hbCBhbmQKLSAgICAjIG9wdGlvbmFsIGFyZ3VtZW50cy4gVXNlIHBhcnNlX2tub3duX2FyZ3MoKSBhcyB3b3JrYXJvdW5kLgotICAgIG5zLmFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzPWFyZ3MsIG5hbWVzcGFjZT1ucylbMV0KLSAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctJyk6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoInVucmVjb2duaXplZCBhcmd1bWVudHM6ICVzIiAlIGFyZykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZSBhbmQgbnMudHJhY2U6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lIGFuZCBucy5maW5kbGVha3M6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lIGFuZCBucy5tZW1saW1pdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCItTSBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy5mYWlsZmFzdCBhbmQgbm90IChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UzKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCi0KLSAgICBpZiBucy5xdWlldDoKLSAgICAgICAgbnMudmVyYm9zZSA9IDAKLSAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6Ci0gICAgICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6Ci0gICAgICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgotICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlciIpCi0gICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6Ci0gICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAotICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQotICAgICAgICBpZiBucy51c2VfbXAgPT0gMToKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IE5vbmUKLSAgICBpZiBucy51c2U6Ci0gICAgICAgIGZvciBhIGluIG5zLnVzZToKLSAgICAgICAgICAgIGZvciByIGluIGE6Ci0gICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBucy51c2VfcmVzb3VyY2VzWzpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgICAgICAgICBpZiByZW1vdmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHIgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMucmVtb3ZlKHIpCi0gICAgICAgICAgICAgICAgZWxpZiByIG5vdCBpbiBucy51c2VfcmVzb3VyY2VzOgotICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLmFwcGVuZChyKQotICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIG5vdCBOb25lOgotICAgICAgICBucy5yYW5kb21pemUgPSBUcnVlCi0KLSAgICByZXR1cm4gbnMKLQotCi1kZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgotICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KLQotICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0Ci0gICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCi0gICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQotICAgIDMtdHVwbGUuCi0gICAgIiIiCi0gICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQotICAgIGJhc2VfY21kID0gKFtzeXMuZXhlY3V0YWJsZV0gKyBzdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpICsKLSAgICAgICAgICAgICAgICBbJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctbScsICd0ZXN0LnJlZ3J0ZXN0J10pCi0gICAgIyByZXF1aXJlZCB0byBzcGF3biBhIG5ldyBwcm9jZXNzIHdpdGggUEdPIGZsYWcgb24vb2ZmCi0gICAgaWYgbnMucGdvOgotICAgICAgICBiYXNlX2NtZCA9IGJhc2VfY21kICsgWyctLXBnbyddCi0gICAgc2xhdmVhcmdzID0gKAotICAgICAgICAgICAgKHRlc3RuYW1lLCBucy52ZXJib3NlLCBucy5xdWlldCksCi0gICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9bnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlcz1ucy51c2VfcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pKQotICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCi0gICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgotICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KLSAgICBwb3BlbiA9IFBvcGVuKGJhc2VfY21kICsgWyctLXNsYXZlYXJncycsIGpzb24uZHVtcHMoc2xhdmVhcmdzKV0sCi0gICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsCi0gICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKLSAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQotICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKLSAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKLQotCi1kZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCi0KLSAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKLSAgICBhY2NvcmRpbmdseS4KLQotICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCi0gICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKLQotICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KLSAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQotICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KLQotICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQotICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQotICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KLQotICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCi0gICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAotICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKLSAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncwotICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKLSAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCi0KLSAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAotICAgIHNpZ25hbHMgPSBbXQotICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgotICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCi0gICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgotICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQotCi0gICAgcmVwbGFjZV9zdGRvdXQoKQotCi0gICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCi0KLSAgICBucyA9IF9wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSwgKiprd2FyZ3MpCi0KLSAgICBpZiBucy5odW50cmxlYWtzOgotICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKLSAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgotICAgICAgICB3YXJtX2NhY2hlcygpCi0gICAgaWYgbnMubWVtbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KG5zLm1lbWxpbWl0KQotICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQotICAgIGlmIG5zLm5vd2luZG93czoKLSAgICAgICAgcHJpbnQoJ1RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICdVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuJykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKLSAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCi0gICAgaWYgbnMud2FpdDoKLSAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQotCi0gICAgaWYgbnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgotICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKG5zLnNsYXZlYXJncykKLSAgICAgICAgaWYga3dhcmdzLmdldCgnaHVudHJsZWFrcycpOgotICAgICAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKLSAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCi0gICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGdvb2QgPSBbXQotICAgIGJhZCA9IFtdCi0gICAgc2tpcHBlZCA9IFtdCi0gICAgcmVzb3VyY2VfZGVuaWVkcyA9IFtdCi0gICAgZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCi0gICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotCi0gICAgaWYgbnMuZmluZGxlYWtzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIGZpbmRsZWFrcy4nKQotICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90Ci0gICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQotICAgICAgICAgICAgIyBnYXJiYWdlIHRoYXQgaXMgbm90IGNvbGxlY3RhYmxlIGJ5IHRoZSBHQyBpcyByZXBvcnRlZC4KLSAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKLSAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UgPSBbXQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBbbmV4dF90ZXN0XQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGlmIG5zLmZyb21maWxlOgotICAgICAgICB0ZXN0cyA9IFtdCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgbnMuZnJvbWZpbGUpKSBhcyBmcDoKLSAgICAgICAgICAgIGNvdW50X3BhdCA9IHJlLmNvbXBpbGUocidcW1xzKlxkKy9ccypcZCtcXScpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAgICAgICAgICBsaW5lID0gY291bnRfcGF0LnN1YignJywgbGluZSkKLSAgICAgICAgICAgICAgICBndXRzID0gbGluZS5zcGxpdCgpICMgYXNzdW1pbmcgbm8gdGVzdCBoYXMgd2hpdGVzcGFjZSBpbiBpdHMgbmFtZQotICAgICAgICAgICAgICAgIGlmIGd1dHMgYW5kIG5vdCBndXRzWzBdLnN0YXJ0c3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKGd1dHMpCi0KLSAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgotICAgIHJlbW92ZXB5KG5zLmFyZ3MpCi0gICAgcmVtb3ZlcHkodGVzdHMpCi0KLSAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCi0gICAgbm90dGVzdHMgPSBOT1RURVNUUy5jb3B5KCkKLSAgICBpZiBucy5leGNsdWRlOgotICAgICAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6Ci0gICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKLSAgICAgICAgICAgIG5vdHRlc3RzLmFkZChhcmcpCi0gICAgICAgIG5zLmFyZ3MgPSBbXQotCi0gICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgotICAgIGlmIChucy52ZXJib3NlIG9yIG5zLmhlYWRlciBvcgotICAgICAgICAgICAgbm90IChucy5wZ28gb3IgbnMucXVpZXQgb3IgbnMuc2luZ2xlIG9yIHRlc3RzIG9yIG5zLmFyZ3MpKToKLSAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgotICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCi0gICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKLSAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKLSAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKLSAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCi0KLSAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbwotICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCi0gICAgaWYgbnMudGVzdGRpcjoKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKLSAgICBlbHNlOgotICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCi0KLSAgICBzZWxlY3RlZCA9IHRlc3RzIG9yIG5zLmFyZ3Mgb3IgYWxsdGVzdHMKLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRbOjFdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1thbGx0ZXN0cy5pbmRleChzZWxlY3RlZFswXSkrMV0KLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQotICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgotICAgIGlmIG5zLnN0YXJ0OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgc2VsZWN0ZWRbOnNlbGVjdGVkLmluZGV4KG5zLnN0YXJ0KV0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIgJSBucy5zdGFydCkKLSAgICBpZiBucy5yYW5kb21pemU6Ci0gICAgICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6Ci0gICAgICAgICAgICBucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCi0gICAgICAgIHJhbmRvbS5zZWVkKG5zLnJhbmRvbV9zZWVkKQotICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCi0gICAgaWYgbnMudHJhY2U6Ci0gICAgICAgIGltcG9ydCB0cmFjZSwgdGVtcGZpbGUKLSAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCi0KLSAgICB0ZXN0X3RpbWVzID0gW10KLSAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAgICAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKLSAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCi0gICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCi0KLSAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KToKLSAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAotICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6Ci0gICAgICAgICAgICB0ZXN0X3RpbWVzLmFwcGVuZCgodGVzdF90aW1lLCB0ZXN0KSkKLSAgICAgICAgaWYgb2sgPT0gUEFTU0VEOgotICAgICAgICAgICAgZ29vZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6Ci0gICAgICAgICAgICBiYWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6Ci0gICAgICAgICAgICBlbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFNLSVBQRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKLSAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgICAgICByZXNvdXJjZV9kZW5pZWRzLmFwcGVuZCh0ZXN0KQotCi0gICAgaWYgbnMuZm9yZXZlcjoKLSAgICAgICAgZGVmIHRlc3RfZm9yZXZlcih0ZXN0cz1saXN0KHNlbGVjdGVkKSk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0ZXN0cyA9IHRlc3RfZm9yZXZlcigpCi0gICAgICAgIHRlc3RfY291bnQgPSAnJwotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gMwotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gaXRlcihzZWxlY3RlZCkKLSAgICAgICAgdGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZWN0ZWQpKQotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gbGVuKHRlc3RfY291bnQpIC0gMQotCi0gICAgaWYgbnMudXNlX21wOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKLSAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCi0gICAgICAgIGRlYnVnX291dHB1dF9wYXQgPSByZS5jb21waWxlKHIiXFtcZCsgcmVmcywgXGQrIGJsb2Nrc1xdJCIpCi0gICAgICAgIG91dHB1dCA9IFF1ZXVlKCkKLSAgICAgICAgcGVuZGluZyA9IE11bHRpcHJvY2Vzc1Rlc3RzKHRlc3RzKQotICAgICAgICBkZWYgd29yaygpOgotICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IG5leHQocGVuZGluZykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdCwgbnMpCi0gICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgd29ya2VycyA9IFtUaHJlYWQodGFyZ2V0PXdvcmspIGZvciBpIGluIHJhbmdlKG5zLnVzZV9tcCldCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmlzaGVkID0gMAotICAgICAgICB0ZXN0X2luZGV4ID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IG5zLnVzZV9tcDoKLSAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gb3V0cHV0LmdldCgpCi0gICAgICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQotICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5qb2luKCkKLSAgICBlbHNlOgotICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgotICAgICAgICAgICAgaWYgbm90IG5zLnF1aWV0OgotICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnRfd2lkdGgsIHRlc3RfaW5kZXgsIHRlc3RfY291bnQsIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIGlmIG5zLnRyYWNlOgotICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKLSAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LCB0aW1lb3V0PW5zLnRpbWVvdXQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIGZhaWxmYXN0PW5zLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKQotICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQotICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKLSAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQotICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfZ2FyYmFnZS5leHRlbmQoZ2MuZ2FyYmFnZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KLSAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCi0gICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKLSAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6Ci0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKLQotICAgIGlmIGludGVycnVwdGVkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAjIHByaW50IGEgbmV3bGluZSBhZnRlciBeQwotICAgICAgICBwcmludCgpCi0gICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKLSAgICAgICAgb21pdHRlZCA9IHNldChzZWxlY3RlZCkgLSBzZXQoZ29vZCkgLSBzZXQoYmFkKSAtIHNldChza2lwcGVkKQotICAgICAgICBwcmludChjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIpCi0gICAgICAgIHByaW50bGlzdChvbWl0dGVkKQotICAgIGlmIGdvb2QgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgaWYgbm90IGJhZCBhbmQgbm90IHNraXBwZWQgYW5kIG5vdCBpbnRlcnJ1cHRlZCBhbmQgbGVuKGdvb2QpID4gMToKLSAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjb3VudChsZW4oZ29vZCksICJ0ZXN0IiksICJPSy4iKQotICAgIGlmIG5zLnByaW50X3Nsb3c6Ci0gICAgICAgIHRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgICAgIHByaW50KCIxMCBzbG93ZXN0IHRlc3RzOiIpCi0gICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHRlc3RfdGltZXNbOjEwXToKLSAgICAgICAgICAgIHByaW50KCIlczogJS4xZnMiICUgKHRlc3QsIHRpbWUpKQotICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICBjb3VudChsZW4oZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQotICAgICAgICBwcmludGxpc3QoZW52aXJvbm1lbnRfY2hhbmdlZCkKLSAgICBpZiBza2lwcGVkIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCi0KLSAgICBpZiBucy52ZXJib3NlMiBhbmQgYmFkOgotICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKLSAgICAgICAgZm9yIHRlc3QgaW4gYmFkWzpdOgotICAgICAgICAgICAgaWYgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICBwcmludCgiUmUtcnVubmluZyB0ZXN0ICVyIGluIHZlcmJvc2UgbW9kZSIgJSB0ZXN0KQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnMudmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgbnMucXVpZXQsIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgcGdvPW5zLnBnbykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwotICAgICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKLSAgICAgICAgICAgICAgICAgICAgYmFkLnJlbW92ZSh0ZXN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgYmFkOgotICAgICAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCi0gICAgICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKLQotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgaWYgbmV4dF9zaW5nbGVfdGVzdDoKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmcC53cml0ZShuZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKLQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICByID0gdHJhY2VyLnJlc3VsdHMoKQotICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwgY292ZXJkaXI9bnMuY292ZXJkaXIpCi0KLSAgICBpZiBucy5ydW5sZWFrczoKLSAgICAgICAgb3Muc3lzdGVtKCJsZWFrcyAlZCIgJSBvcy5nZXRwaWQoKSkKLQotICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKLQotCi0jIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgotIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCi1TVERURVNUUyA9IFsKLSAgICAndGVzdF9ncmFtbWFyJywKLSAgICAndGVzdF9vcGNvZGVzJywKLSAgICAndGVzdF9kaWN0JywKLSAgICAndGVzdF9idWlsdGluJywKLSAgICAndGVzdF9leGNlcHRpb25zJywKLSAgICAndGVzdF90eXBlcycsCi0gICAgJ3Rlc3RfdW5pdHRlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QyJywKLSAgICAndGVzdF9zdXBwb3J0JwotXQotCi0jIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAotTk9UVEVTVFMgPSBzZXQoKQotCi1kZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKLSAgICB0ZXN0ZGlyID0gZmluZHRlc3RkaXIodGVzdGRpcikKLSAgICBuYW1lcyA9IG9zLmxpc3RkaXIodGVzdGRpcikKLSAgICB0ZXN0cyA9IFtdCi0gICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQotICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKLQotIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgotY2xhc3MgTXVsdGlwcm9jZXNzVGVzdHMob2JqZWN0KToKLQotICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgotICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmxvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKLSAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCi0KLWRlZiByZXBsYWNlX3N0ZG91dCgpOgotICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgotICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaW1wb3J0IGF0ZXhpdAotCi0gICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAotICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCi0gICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UsCi0gICAgICAgIG5ld2xpbmU9J1xuJykKLQotICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgotICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAotICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKLQotZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCi0gICAgICAgICAgICB0aW1lb3V0PU5vbmUsICosIHBnbz1GYWxzZSk6Ci0gICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCi0KLSAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0Ci0gICAgdmVyYm9zZSAtLSBpZiB0cnVlLCBwcmludCBtb3JlIG1lc3NhZ2VzCi0gICAgcXVpZXQgLS0gaWYgdHJ1ZSwgZG9uJ3QgcHJpbnQgJ3NraXBwZWQnIG1lc3NhZ2VzIChwcm9iYWJseSByZWR1bmRhbnQpCi0gICAgaHVudHJsZWFrcyAtLSBydW4gbXVsdGlwbGUgdGltZXMgdG8gdGVzdCBmb3IgbGVha3M7IHJlcXVpcmVzIGEgZGVidWcKLSAgICAgICAgICAgICAgICAgIGJ1aWxkOyBhIHRyaXBsZSBjb3JyZXNwb25kaW5nIHRvIC1SJ3MgdGhyZWUgYXJndW1lbnRzCi0gICAgdXNlX3Jlc291cmNlcyAtLSBsaXN0IG9mIGV4dHJhIHJlc291cmNlcyB0byB1c2UKLSAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKLSAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKLSAgICBmYWlsZmFzdCwgbWF0Y2hfdGVzdHMgLS0gU2VlIHJlZ3J0ZXN0IGNvbW1hbmQtbGluZSBmbGFncyBmb3IgdGhlc2UuCi0gICAgcGdvIC0tIGlmIHRydWUsIGRvIG5vdCBwcmludCB1bm5lY2Vzc2FyeSBpbmZvIHdoZW4gcnVubmluZyB0aGUgdGVzdAotICAgICAgICAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIGJ1aWxkCi0KLSAgICBSZXR1cm5zIHRoZSB0dXBsZSByZXN1bHQsIHRlc3RfdGltZSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzOgotICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCi0gICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCi0gICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgotICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50Ci0gICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKLSAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAotICAgICIiIgotICAgIGlmIHVzZV9yZXNvdXJjZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKLSAgICB1c2VfdGltZW91dCA9ICh0aW1lb3V0IGlzIG5vdCBOb25lKQotICAgIGlmIHVzZV90aW1lb3V0OgotICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCi0gICAgICAgIGlmIGZhaWxmYXN0OgotICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKLSAgICAgICAgaWYgb3V0cHV0X29uX2ZhaWx1cmU6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBUcnVlCi0KLSAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UgdG8gYWxsIGNhbGxzIHRvIHJ1bnRlc3QoKS4gU29tZQotICAgICAgICAgICAgIyB0ZXN0cyBrZWVwIGEgcmVmZXJlbmNlIHRvIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVycgotICAgICAgICAgICAgIyAoZWcuIHRlc3RfYXJncGFyc2UpLgotICAgICAgICAgICAgaWYgcnVudGVzdC5zdHJpbmdpbyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICBydW50ZXN0LnN0cmluZ2lvID0gc3RyZWFtCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IHJ1bnRlc3Quc3RyaW5naW8KLSAgICAgICAgICAgICAgICBzdHJlYW0uc2VlaygwKQotICAgICAgICAgICAgICAgIHN0cmVhbS50cnVuY2F0ZSgpCi0KLSAgICAgICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN0cmVhbQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPUZhbHNlLCBwZ289cGdvKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IHZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9bm90IHZlcmJvc2UsIHBnbz1wZ28pCi0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQotICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCi1ydW50ZXN0LnN0cmluZ2lvID0gTm9uZQotCi0jIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCi0jIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KLSMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKLSMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCi0jIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgotIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAotIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KLQotY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKLSAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgotCi0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgotICAgICAgICAgICAgI3N0dWZmCi0KLSAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgotICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCi0gICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCi0KLSAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCi0gICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgotICAgICIiIgotCi0gICAgY2hhbmdlZCA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQotICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCi0gICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAotICAgICAgICBzZWxmLnBnbyA9IHBnbwotCi0gICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAotICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKLSAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKLSAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKLSAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgotICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgotICAgICMKLSAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKLSAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KLQotICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAotICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKLSAgICAgICAgICAgICAgICAgJ2FzeW5jb3JlLnNvY2tldF9tYXAnLAotICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLCAnc3lzLmdldHRyYWNlJywKLSAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsCi0gICAgICAgICAgICAgICAgICMgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKSBtYXkgcmVsZWFzZSByZWYKLSAgICAgICAgICAgICAgICAgIyB0byBhIHRocmVhZCwgc28gY2hlY2sgcHJvY2Vzc2VzIGZpcnN0LgotICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAotICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCi0gICAgICAgICAgICAgICAgICdmaWxlcycsICdsb2NhbGUnLCAnd2FybmluZ3Muc2hvd3dhcm5pbmcnLAotICAgICAgICAgICAgICAgICAnc2h1dGlsX2FyY2hpdmVfZm9ybWF0cycsICdzaHV0aWxfdW5wYWNrX2Zvcm1hdHMnLAotICAgICAgICAgICAgICAgICkKLQotICAgIGRlZiBnZXRfc3lzX2FyZ3Yoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMuYXJndiksIHN5cy5hcmd2LCBzeXMuYXJndls6XQotICAgIGRlZiByZXN0b3JlX3N5c19hcmd2KHNlbGYsIHNhdmVkX2FyZ3YpOgotICAgICAgICBzeXMuYXJndiA9IHNhdmVkX2FyZ3ZbMV0KLSAgICAgICAgc3lzLmFyZ3ZbOl0gPSBzYXZlZF9hcmd2WzJdCi0KLSAgICBkZWYgZ2V0X2N3ZChzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLmdldGN3ZCgpCi0gICAgZGVmIHJlc3RvcmVfY3dkKHNlbGYsIHNhdmVkX2N3ZCk6Ci0gICAgICAgIG9zLmNoZGlyKHNhdmVkX2N3ZCkKLQotICAgIGRlZiBnZXRfc3lzX3N0ZG91dChzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRvdXQKLSAgICBkZWYgcmVzdG9yZV9zeXNfc3Rkb3V0KHNlbGYsIHNhdmVkX3N0ZG91dCk6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlZF9zdGRvdXQKLQotICAgIGRlZiBnZXRfc3lzX3N0ZGVycihzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIKLSAgICBkZWYgcmVzdG9yZV9zeXNfc3RkZXJyKHNlbGYsIHNhdmVkX3N0ZGVycik6Ci0gICAgICAgIHN5cy5zdGRlcnIgPSBzYXZlZF9zdGRlcnIKLQotICAgIGRlZiBnZXRfc3lzX3N0ZGluKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZGluCi0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGluKHNlbGYsIHNhdmVkX3N0ZGluKToKLSAgICAgICAgc3lzLnN0ZGluID0gc2F2ZWRfc3RkaW4KLQotICAgIGRlZiBnZXRfb3NfZW52aXJvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKG9zLmVudmlyb24pLCBvcy5lbnZpcm9uLCBkaWN0KG9zLmVudmlyb24pCi0gICAgZGVmIHJlc3RvcmVfb3NfZW52aXJvbihzZWxmLCBzYXZlZF9lbnZpcm9uKToKLSAgICAgICAgb3MuZW52aXJvbiA9IHNhdmVkX2Vudmlyb25bMV0KLSAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIG9zLmVudmlyb24udXBkYXRlKHNhdmVkX2Vudmlyb25bMl0pCi0KLSAgICBkZWYgZ2V0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGgpLCBzeXMucGF0aCwgc3lzLnBhdGhbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aChzZWxmLCBzYXZlZF9wYXRoKToKLSAgICAgICAgc3lzLnBhdGggPSBzYXZlZF9wYXRoWzFdCi0gICAgICAgIHN5cy5wYXRoWzpdID0gc2F2ZWRfcGF0aFsyXQotCi0gICAgZGVmIGdldF9zeXNfcGF0aF9ob29rcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoX2hvb2tzKSwgc3lzLnBhdGhfaG9va3MsIHN5cy5wYXRoX2hvb2tzWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3BhdGhfaG9va3Moc2VsZiwgc2F2ZWRfaG9va3MpOgotICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KLQotICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKLSAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKLSAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKLQotICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KLSAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgotICAgICAgICBidWlsdGlucy5fX2ltcG9ydF9fID0gaW1wb3J0XwotCi0gICAgZGVmIGdldF9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYpOgotICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQotICAgICAgICAjIFhYWCBNYWtpbmcgYSBjb3B5IGtlZXBzIG9iamVjdHMgYWxpdmUgdW50aWwgX19leGl0X18gZ2V0cyBjYWxsZWQuCi0gICAgICAgIHJldHVybiBhc3luY29yZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcC5jb3B5KCkgb3Ige30KLSAgICBkZWYgcmVzdG9yZV9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYsIHNhdmVkX21hcCk6Ci0gICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCi0gICAgICAgIGlmIGFzeW5jb3JlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKGlnbm9yZV9hbGw9VHJ1ZSkKLSAgICAgICAgICAgIGFzeW5jb3JlLnNvY2tldF9tYXAudXBkYXRlKHNhdmVkX21hcCkKLQotICAgIGRlZiBnZXRfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKLSAgICAgICAgIyB3ZSBjb3VsZCBjYWxsIGdldF9hcmNoaXZlc19mb3JtYXRzKCkgYnV0IHRoYXQgb25seSByZXR1cm5zIHRoZQotICAgICAgICAjIHJlZ2lzdHJ5IGtleXM7IHdlIHdhbnQgdG8gY2hlY2sgdGhlIHZhbHVlcyB0b28gKHRoZSBmdW5jdGlvbnMgdGhhdAotICAgICAgICAjIGFyZSByZWdpc3RlcmVkKQotICAgICAgICByZXR1cm4gc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMsIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUyA9IHNhdmVkWzBdCi0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNsZWFyKCkKLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQotCi0gICAgZGVmIGdldF9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLCBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMgPSBzYXZlZFswXQotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNsZWFyKCkKLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCi0KLSAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYpOgotICAgICAgICAjIF9oYW5kbGVycyBpcyBhIFdlYWtWYWx1ZURpY3Rpb25hcnkKLSAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJzKSwgbG9nZ2luZy5faGFuZGxlcnMsIGxvZ2dpbmcuX2hhbmRsZXJzLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYsIHNhdmVkX2hhbmRsZXJzKToKLSAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZik6Ci0gICAgICAgICMgX2hhbmRsZXJMaXN0IGlzIGEgbGlzdCBvZiB3ZWFrcmVmcyB0byBoYW5kbGVycwotICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlckxpc3QpLCBsb2dnaW5nLl9oYW5kbGVyTGlzdCwgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KLSAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmLCBzYXZlZF9oYW5kbGVyTGlzdCk6Ci0gICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZ2V0X3N5c193YXJub3B0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy53YXJub3B0aW9ucyksIHN5cy53YXJub3B0aW9ucywgc3lzLndhcm5vcHRpb25zWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3dhcm5vcHRpb25zKHNlbGYsIHNhdmVkX29wdGlvbnMpOgotICAgICAgICBzeXMud2Fybm9wdGlvbnMgPSBzYXZlZF9vcHRpb25zWzFdCi0gICAgICAgIHN5cy53YXJub3B0aW9uc1s6XSA9IHNhdmVkX29wdGlvbnNbMl0KLQotICAgICMgQ29udHJvbGxpbmcgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBUaHJlYWQgb2JqZWN0cyBjYW4gbWFrZSBpdCBlYXNpZXIKLSAgICAjIHRvIHRyYWNrIHJlZmVyZW5jZSBsZWFrcy4KLSAgICBkZWYgZ2V0X3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZik6Ci0gICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQotICAgICAgICByZXR1cm4gdGhyZWFkaW5nLl9kYW5nbGluZy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKLSAgICAgICAgaWYgbm90IHRocmVhZGluZzoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLmNsZWFyKCkKLSAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCi0KLSAgICAjIFNhbWUgZm9yIFByb2Nlc3Mgb2JqZWN0cwotICAgIGRlZiBnZXRfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYpOgotICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBVbmpvaW5lZCBwcm9jZXNzIG9iamVjdHMgY2FuIHN1cnZpdmUgYWZ0ZXIgcHJvY2VzcyBleGl0cwotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpCi0gICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKLSAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQotCi0gICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAotICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCi0gICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCi0gICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKLSAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKLQotICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKLSAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCi0gICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCi0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQotCi0gICAgZGVmIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNvcnRlZChmbiArICgnLycgaWYgb3MucGF0aC5pc2RpcihmbikgZWxzZSAnJykKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcigpKQotICAgIGRlZiByZXN0b3JlX2ZpbGVzKHNlbGYsIHNhdmVkX3ZhbHVlKToKLSAgICAgICAgZm4gPSBzdXBwb3J0LlRFU1RGTgotICAgICAgICBpZiBmbiBub3QgaW4gc2F2ZWRfdmFsdWUgYW5kIChmbiArICcvJykgbm90IGluIHNhdmVkX3ZhbHVlOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgotICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQotICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZuKToKLSAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShmbikKLQotICAgIF9sYyA9IFtnZXRhdHRyKGxvY2FsZSwgbGMpIGZvciBsYyBpbiBkaXIobG9jYWxlKQotICAgICAgICAgICBpZiBsYy5zdGFydHN3aXRoKCdMQ18nKV0KLSAgICBkZWYgZ2V0X2xvY2FsZShzZWxmKToKLSAgICAgICAgcGFpcmluZ3MgPSBbXQotICAgICAgICBmb3IgbGMgaW4gc2VsZi5fbGM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGFpcmluZ3MuYXBwZW5kKChsYywgbG9jYWxlLnNldGxvY2FsZShsYywgTm9uZSkpKQotICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHJldHVybiBwYWlyaW5ncwotICAgIGRlZiByZXN0b3JlX2xvY2FsZShzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGZvciBsYywgc2V0dGluZyBpbiBzYXZlZDoKLSAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobGMsIHNldHRpbmcpCi0KLSAgICBkZWYgZ2V0X3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gd2FybmluZ3Muc2hvd3dhcm5pbmcKLSAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19zaG93d2FybmluZyhzZWxmLCBmeG4pOgotICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZyA9IGZ4bgotCi0gICAgZGVmIHJlc291cmNlX2luZm8oc2VsZik6Ci0gICAgICAgIGZvciBuYW1lIGluIHNlbGYucmVzb3VyY2VzOgotICAgICAgICAgICAgbWV0aG9kX3N1ZmZpeCA9IG5hbWUucmVwbGFjZSgnLicsICdfJykKLSAgICAgICAgICAgIGdldF9uYW1lID0gJ2dldF8nICsgbWV0aG9kX3N1ZmZpeAotICAgICAgICAgICAgcmVzdG9yZV9uYW1lID0gJ3Jlc3RvcmVfJyArIG1ldGhvZF9zdWZmaXgKLSAgICAgICAgICAgIHlpZWxkIG5hbWUsIGdldGF0dHIoc2VsZiwgZ2V0X25hbWUpLCBnZXRhdHRyKHNlbGYsIHJlc3RvcmVfbmFtZSkKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuc2F2ZWRfdmFsdWVzID0gZGljdCgobmFtZSwgZ2V0KCkpIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYucmVzb3VyY2VfaW5mbygpKQotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgotICAgICAgICBzYXZlZF92YWx1ZXMgPSBzZWxmLnNhdmVkX3ZhbHVlcwotICAgICAgICBkZWwgc2VsZi5zYXZlZF92YWx1ZXMKLSAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkgICMgU29tZSByZXNvdXJjZXMgdXNlIHdlYWsgcmVmZXJlbmNlcwotICAgICAgICBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlIGluIHNlbGYucmVzb3VyY2VfaW5mbygpOgotICAgICAgICAgICAgY3VycmVudCA9IGdldCgpCi0gICAgICAgICAgICBvcmlnaW5hbCA9IHNhdmVkX3ZhbHVlcy5wb3AobmFtZSkKLSAgICAgICAgICAgICMgQ2hlY2sgZm9yIGNoYW5nZXMgdG8gdGhlIHJlc291cmNlJ3MgdmFsdWUKLSAgICAgICAgICAgIGlmIGN1cnJlbnQgIT0gb3JpZ2luYWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VkID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJlc3RvcmUob3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucXVpZXQgYW5kIG5vdCBzZWxmLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmcgLS0ge30gd2FzIG1vZGlmaWVkIGJ5IHt9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi50ZXN0bmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2UgPiAxIGFuZCBub3Qgc2VsZi5wZ286Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICBCZWZvcmU6IHt9XG4gIEFmdGVyOiAge30gIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLCBjdXJyZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwKLSAgICAgICAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIGRpc3BsYXlfZmFpbHVyZT1UcnVlLCBwZ289RmFsc2UpOgotICAgIHN1cHBvcnQudW5sb2FkKHRlc3QpCi0KLSAgICB0ZXN0X3RpbWUgPSAwLjAKLSAgICByZWZsZWFrID0gRmFsc2UgICMgVHJ1ZSBpZiB0aGUgdGVzdCBsZWFrZWQgcmVmZXJlbmNlcy4KLSAgICB0cnk6Ci0gICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdC4nKToKLSAgICAgICAgICAgIGFic3Rlc3QgPSB0ZXN0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIEFsd2F5cyBpbXBvcnQgaXQgZnJvbSB0aGUgdGVzdCBwYWNrYWdlCi0gICAgICAgICAgICBhYnN0ZXN0ID0gJ3Rlc3QuJyArIHRlc3QKLSAgICAgICAgY2xlYXJfY2FjaGVzKCkKLSAgICAgICAgd2l0aCBzYXZlZF90ZXN0X2Vudmlyb25tZW50KHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBwZ289cGdvKSBhcyBlbnZpcm9ubWVudDoKLSAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgdGhlX21vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGFic3Rlc3QpCi0gICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGhhcyBhIHRlc3RfbWFpbiwgdGhhdCB3aWxsIHJ1biB0aGUgYXBwcm9wcmlhdGUKLSAgICAgICAgICAgICMgdGVzdHMuICBJZiBub3QsIHVzZSBub3JtYWwgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLgotICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW5uZXIoKToKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGVycm9yIGluIGxvYWRlci5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludChlcnJvciwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBpZiBsb2FkZXIuZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJlcnJvcnMgd2hpbGUgbG9hZGluZyB0ZXN0cyIpCi0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RzKQotICAgICAgICAgICAgdGVzdF9ydW5uZXIoKQotICAgICAgICAgICAgaWYgaHVudHJsZWFrczoKLSAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLCBodW50cmxlYWtzKQotICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCi0gICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgotICAgICAgICBpZiBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXR1cm4gUkVTT1VSQ0VfREVOSUVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3QgYXMgbXNnOgotICAgICAgICBpZiBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgotICAgICAgICBpZiBub3QgcGdvOgotICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgotICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQ6Ci0gICAgICAgIG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLSAgICAgICAgaWYgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImNyYXNoZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgIGVsc2U6Ci0gICAgICAgIGlmIHJlZmxlYWs6Ci0gICAgICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICAgICAgaWYgZW52aXJvbm1lbnQuY2hhbmdlZDoKLSAgICAgICAgICAgIHJldHVybiBFTlZfQ0hBTkdFRCwgdGVzdF90aW1lCi0gICAgICAgIHJldHVybiBQQVNTRUQsIHRlc3RfdGltZQotCi1kZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6Ci0gICAgaW1wb3J0IHNodXRpbAotICAgIGltcG9ydCBzdGF0Ci0gICAgaW1wb3J0IGdjCi0KLSAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCi0gICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0Ci0gICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgotICAgIGdjLmNvbGxlY3QoKQotCi0gICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQotICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cwotICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCi0gICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQotICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKLSAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCi0gICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAotICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgotICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQotICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgotICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQotCi0gICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKLSAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKLSAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6Ci0gICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQotICAgICAgICAgICAgbnVrZXIobmFtZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6Ci0gICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCi0gICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKLQotZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKLSAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCi0KLSAgICBSZXR1cm5zOgotICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgotICAgICIiIgotICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCi0gICAgaW1wb3J0IGNvcHlyZWcKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi0KLSAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCi0KLSAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KLSAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KLSAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCi0gICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgemlwaW1wb3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKLSAgICBlbHNlOgotICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCi0gICAgYWJjcyA9IHt9Ci0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKLSAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKLSAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQotCi0gICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcwotICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQotICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCi0gICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKLSAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAotCi0gICAgcHJpbnQoImJlZ2lubmluZyIsIHJlcGNvdW50LCAicmVwZXRpdGlvbnMiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgcHJpbnQoKCIxMjM0NTY3ODkwIioocmVwY291bnQvLzEwICsgMSkpWzpyZXBjb3VudF0sIGZpbGU9c3lzLnN0ZGVycikKLSAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICBmb3IgaSBpbiByYW5nZShyZXBjb3VudCk6Ci0gICAgICAgIGluZGlyZWN0X3Rlc3QoKQotICAgICAgICBhbGxvY19hZnRlciwgcmNfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcuJykKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIGlmIGkgPj0gbndhcm11cDoKLSAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCi0gICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQotICAgICAgICBhbGxvY19iZWZvcmUsIHJjX2JlZm9yZSA9IGFsbG9jX2FmdGVyLCByY19hZnRlcgotICAgIHByaW50KGZpbGU9c3lzLnN0ZGVycikKLSAgICAjIFRoZXNlIGNoZWNrZXJzIHJldHVybiBGYWxzZSBvbiBzdWNjZXNzLCBUcnVlIG9uIGZhaWx1cmUKLSAgICBkZWYgY2hlY2tfcmNfZGVsdGFzKGRlbHRhcyk6Ci0gICAgICAgIHJldHVybiBhbnkoZGVsdGFzKQotICAgIGRlZiBjaGVja19hbGxvY19kZWx0YXMoZGVsdGFzKToKLSAgICAgICAgIyBBdCBsZWFzdCAxLzNyZCBvZiAwcwotICAgICAgICBpZiAzICogZGVsdGFzLmNvdW50KDApIDwgbGVuKGRlbHRhcyk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAjIE5vdGhpbmcgZWxzZSB0aGFuIDFzLCAwcyBhbmQgLTFzCi0gICAgICAgIGlmIG5vdCBzZXQoZGVsdGFzKSA8PSB7MSwwLC0xfToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZhaWxlZCA9IEZhbHNlCi0gICAgZm9yIGRlbHRhcywgaXRlbV9uYW1lLCBjaGVja2VyIGluIFsKLSAgICAgICAgKHJjX2RlbHRhcywgJ3JlZmVyZW5jZXMnLCBjaGVja19yY19kZWx0YXMpLAotICAgICAgICAoYWxsb2NfZGVsdGFzLCAnbWVtb3J5IGJsb2NrcycsIGNoZWNrX2FsbG9jX2RlbHRhcyldOgotICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6Ci0gICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAotICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCi0gICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAiYSIpIGFzIHJlZnJlcDoKLSAgICAgICAgICAgICAgICBwcmludChtc2csIGZpbGU9cmVmcmVwKQotICAgICAgICAgICAgICAgIHJlZnJlcC5mbHVzaCgpCi0gICAgICAgICAgICBmYWlsZWQgPSBUcnVlCi0gICAgcmV0dXJuIGZhaWxlZAotCi1kZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6Ci0gICAgaW1wb3J0IGdjLCBjb3B5cmVnCi0gICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotICAgIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAotCi0gICAgIyBSZXN0b3JlIHNvbWUgb3JpZ2luYWwgdmFsdWVzLgotICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBmcwotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY2xlYXIoKQotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHBzKQotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS51cGRhdGUocGljKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGltcG9ydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcyAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0Ci0gICAgZWxzZToKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLnVwZGF0ZSh6ZGMpCi0KLSAgICAjIGNsZWFyIHR5cGUgY2FjaGUKLSAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQotCi0gICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKLSAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKLSAgICAgICAgICAgIG9iai5fYWJjX3JlZ2lzdHJ5ID0gYWJjcy5nZXQob2JqLCBXZWFrU2V0KCkpLmNvcHkoKQotICAgICAgICAgICAgb2JqLl9hYmNfY2FjaGUuY2xlYXIoKQotICAgICAgICAgICAgb2JqLl9hYmNfbmVnYXRpdmVfY2FjaGUuY2xlYXIoKQotCi0gICAgY2xlYXJfY2FjaGVzKCkKLQotICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCi0gICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCi0gICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAotICAgIGdjLmNvbGxlY3QoKQotICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpCi0KLWRlZiBjbGVhcl9jYWNoZXMoKToKLSAgICBpbXBvcnQgZ2MKLQotICAgICMgQ2xlYXIgdGhlIHdhcm5pbmdzIHJlZ2lzdHJ5LCBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4KLSAgICBmb3IgbW9kIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgotICAgICAgICBpZiBoYXNhdHRyKG1vZCwgJ19fd2FybmluZ3JlZ2lzdHJ5X18nKToKLSAgICAgICAgICAgIGRlbCBtb2QuX193YXJuaW5ncmVnaXN0cnlfXwotCi0gICAgIyBGbHVzaCBzdGFuZGFyZCBvdXRwdXQsIHNvIHRoYXQgYnVmZmVyZWQgZGF0YSBpcyBzZW50IHRvIHRoZSBPUyBhbmQKLSAgICAjIGFzc29jaWF0ZWQgUHl0aG9uIG9iamVjdHMgYXJlIHJlY2xhaW1lZC4KLSAgICBmb3Igc3RyZWFtIGluIChzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyLCBzeXMuX19zdGRvdXRfXywgc3lzLl9fc3RkZXJyX18pOgotICAgICAgICBpZiBzdHJlYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzdHJlYW0uZmx1c2goKQotCi0gICAgIyBDbGVhciBhc3NvcnRlZCBtb2R1bGUgY2FjaGVzLgotICAgICMgRG9uJ3Qgd29ycnkgYWJvdXQgcmVzZXR0aW5nIHRoZSBjYWNoZSBpZiB0aGUgbW9kdWxlIGlzIG5vdCBsb2FkZWQKLSAgICB0cnk6Ci0gICAgICAgIGRpc3R1dGlsc19kaXJfdXRpbCA9IHN5cy5tb2R1bGVzWydkaXN0dXRpbHMuZGlyX3V0aWwnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGRpc3R1dGlsc19kaXJfdXRpbC5fcGF0aF9jcmVhdGVkLmNsZWFyKCkKLQotICAgIHJlLnB1cmdlKCkKLQotICAgIHRyeToKLSAgICAgICAgX3N0cnB0aW1lID0gc3lzLm1vZHVsZXNbJ19zdHJwdGltZSddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCi0KLSAgICB0cnk6Ci0gICAgICAgIHVybGxpYl9wYXJzZSA9IHN5cy5tb2R1bGVzWyd1cmxsaWIucGFyc2UnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHVybGxpYl9wYXJzZS5jbGVhcl9jYWNoZSgpCi0KLSAgICB0cnk6Ci0gICAgICAgIHVybGxpYl9yZXF1ZXN0ID0gc3lzLm1vZHVsZXNbJ3VybGxpYi5yZXF1ZXN0J10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICB1cmxsaWJfcmVxdWVzdC51cmxjbGVhbnVwKCkKLQotICAgIHRyeToKLSAgICAgICAgbGluZWNhY2hlID0gc3lzLm1vZHVsZXNbJ2xpbmVjYWNoZSddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQotCi0gICAgdHJ5OgotICAgICAgICBtaW1ldHlwZXMgPSBzeXMubW9kdWxlc1snbWltZXR5cGVzJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBtaW1ldHlwZXMuX2RlZmF1bHRfbWltZV90eXBlcygpCi0KLSAgICB0cnk6Ci0gICAgICAgIGZpbGVjbXAgPSBzeXMubW9kdWxlc1snZmlsZWNtcCddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZmlsZWNtcC5fY2FjaGUuY2xlYXIoKQotCi0gICAgdHJ5OgotICAgICAgICBzdHJ1Y3QgPSBzeXMubW9kdWxlc1snc3RydWN0J10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQotCi0gICAgdHJ5OgotICAgICAgICBkb2N0ZXN0ID0gc3lzLm1vZHVsZXNbJ2RvY3Rlc3QnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQotCi0gICAgdHJ5OgotICAgICAgICBjdHlwZXMgPSBzeXMubW9kdWxlc1snY3R5cGVzJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKLQotICAgIHRyeToKLSAgICAgICAgdHlwaW5nID0gc3lzLm1vZHVsZXNbJ3R5cGluZyddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZm9yIGYgaW4gdHlwaW5nLl9jbGVhbnVwczoKLSAgICAgICAgICAgIGYoKQotCi0gICAgZ2MuY29sbGVjdCgpCi0KLWRlZiB3YXJtX2NhY2hlcygpOgotICAgICMgY2hhciBjYWNoZQotICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQotICAgIGZvciBpIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgIHNbaTppKzFdCi0gICAgIyB1bmljb2RlIGNhY2hlCi0gICAgeCA9IFtjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KV0KLSAgICAjIGludCBjYWNoZQotICAgIHggPSBsaXN0KHJhbmdlKC01LCAyNTcpKQotCi1kZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKLSAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpcgotCi1kZWYgcmVtb3ZlcHkobmFtZXMpOgotICAgIGlmIG5vdCBuYW1lczoKLSAgICAgICAgcmV0dXJuCi0gICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpOgotICAgICAgICBiYXNlbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBleHQgPT0gJy5weSc6Ci0gICAgICAgICAgICBuYW1lc1tpZHhdID0gYmFzZW5hbWUKLQotZGVmIGNvdW50KG4sIHdvcmQpOgotICAgIGlmIG4gPT0gMToKLSAgICAgICAgcmV0dXJuICIlZCAlcyIgJSAobiwgd29yZCkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIiVkICVzcyIgJSAobiwgd29yZCkKLQotZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgotICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KLQotICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCi0gICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCi0gICAgYmVnaW4gZWFjaCBsaW5lLgotICAgICIiIgotCi0gICAgZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZmlsbAotICAgIGJsYW5rcyA9ICcgJyAqIGluZGVudAotICAgICMgUHJpbnQgdGhlIHNvcnRlZCBsaXN0OiAneCcgbWF5IGJlIGEgJy0tcmFuZG9tJyBsaXN0IG9yIGEgc2V0KCkKLSAgICBwcmludChmaWxsKCcgJy5qb2luKHN0cihlbHQpIGZvciBlbHQgaW4gc29ydGVkKHgpKSwgd2lkdGgsCi0gICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1ibGFua3MsIHN1YnNlcXVlbnRfaW5kZW50PWJsYW5rcykpCi0KLQotZGVmIG1haW5faW5fdGVtcF9jd2QoKToKLSAgICAiIiJSdW4gbWFpbigpIGluIGEgdGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5LiIiIgotICAgIGlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWtkaXIoVEVNUERJUikKLSAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICMgRGVmaW5lIGEgd3JpdGFibGUgdGVtcCBkaXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgY3dkIHdoaWxlIHJ1bm5pbmcKLSAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCi0gICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCi0gICAgdGVzdF9jd2QgPSAndGVzdF9weXRob25fe30nLmZvcm1hdChvcy5nZXRwaWQoKSkKLSAgICB0ZXN0X2N3ZCA9IG9zLnBhdGguam9pbihURU1QRElSLCB0ZXN0X2N3ZCkKLQotICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCi0gICAgIyB0ZW1wb3JhcnkgYW5kIHdyaXRhYmxlIGRpcmVjdG9yeS4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgotICAgICMgY2hhbmdlIHRoZSBDV0QsIHRoZSBvcmlnaW5hbCBDV0Qgd2lsbCBiZSB1c2VkLiAgVGhlIG9yaWdpbmFsIENXRCBpcwotICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KLSAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QodGVzdF9jd2QsIHF1aWV0PVRydWUpOgotICAgICAgICBtYWluKCkKLQorZGVmIF9tYWluKCk6CisgICAgZ2xvYmFsIF9fZmlsZV9fCiAKLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgIyBSZW1vdmUgcmVncnRlc3QucHkncyBvd24gZGlyZWN0b3J5IGZyb20gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gRGVzcGl0ZQogICAgICMgdGhlIGVsaW1pbmF0aW9uIG9mIGltcGxpY2l0IHJlbGF0aXZlIGltcG9ydHMsIHRoaXMgaXMgc3RpbGwgbmVlZGVkIHRvCiAgICAgIyBlbnN1cmUgdGhhdCBzdWJtb2R1bGVzIG9mIHRoZSB0ZXN0IHBhY2thZ2UgZG8gbm90IGluYXBwcm9wcmlhdGVseSBhcHBlYXIKICAgICAjIGFzIHRvcC1sZXZlbCBtb2R1bGVzIGV2ZW4gd2hlbiBwZW9wbGUgKG9yIGJ1aWxkYm90cyEpIGludm9rZSByZWdydGVzdC5weQogICAgICMgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgLW0gc3dpdGNoCiAgICAgbXlkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pKSkKLSAgICBpID0gbGVuKHN5cy5wYXRoKQorICAgIGkgPSBsZW4oc3lzLnBhdGgpIC0gMQogICAgIHdoaWxlIGkgPj0gMDoKLSAgICAgICAgaSAtPSAxCiAgICAgICAgIGlmIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKHN5cy5wYXRoW2ldKSkgPT0gbXlkaXI6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbaV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGkgLT0gMQogCiAgICAgIyBmaW5kdGVzdGRpcigpIGdldHMgdGhlIGRpcm5hbWUgb3V0IG9mIF9fZmlsZV9fLCBzbyB3ZSBoYXZlIHRvIG1ha2UgaXQKICAgICAjIGFic29sdXRlIGJlZm9yZSBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkuCkBAIC0xNjgwLDQgKzQzLDggQEAKICAgICAjIHNhbml0eSBjaGVjawogICAgIGFzc2VydCBfX2ZpbGVfXyA9PSBvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pCiAKLSAgICBtYWluX2luX3RlbXBfY3dkKCkKKyAgICBtYWluKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weSBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQppbmRleCA3MmY0ODQ1Li4xZTdhNmY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CkBAIC0zMTgsNyArMzE4LDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQocyksIGlkKHMqMSkpCiAKICAgICBkZWYgdGVzdF9iaWdyZXBlYXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgaWYgc3lzLm1heHNpemUgPD0gMjE0NzQ4MzY0NzoKICAgICAgICAgICAgIHggPSBzZWxmLnR5cGUydGVzdChbMF0pCiAgICAgICAgICAgICB4ICo9IDIqKjE2CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkgYi9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhZTE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weQpAQCAtMCwwICsxLDg0IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgU0lHVVNSMUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBJbnRlclByb2Nlc3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzID0geydTSUdIVVAnOiAwLCAnU0lHVVNSMSc6IDAsICdTSUdBTFJNJzogMH0KKworICAgIGRlZiBzaWdodXBfaGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFsc1snU0lHSFVQJ10gKz0gMQorCisgICAgZGVmIHNpZ3VzcjFfaGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFsc1snU0lHVVNSMSddICs9IDEKKyAgICAgICAgcmFpc2UgU0lHVVNSMUV4Y2VwdGlvbgorCisgICAgZGVmIHdhaXRfc2lnbmFsKHNlbGYsIGNoaWxkLCBzaWduYW1lLCBleGNfY2xhc3M9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGNoaWxkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSBleGNfY2xhc3MKKyAgICAgICAgICAgICAgICAjIChpZiBzZXQpCisgICAgICAgICAgICAgICAgY2hpbGQud2FpdCgpCisKKyAgICAgICAgICAgIHRpbWVvdXQgPSAxMC4wCisgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyB0aW1lb3V0CisKKyAgICAgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPCBkZWFkbGluZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmdvdF9zaWduYWxzW3NpZ25hbWVdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBzaWduYWwucGF1c2UoKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBpZiBleGNfY2xhc3MgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UoZXhjLCBleGNfY2xhc3MpOgorICAgICAgICAgICAgICAgICMgZ290IHRoZSBleHBlY3RlZCBleGNlcHRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgc2VsZi5mYWlsKCdzaWduYWwgJXMgbm90IHJlY2VpdmVkIGFmdGVyICVzIHNlY29uZHMnCisgICAgICAgICAgICAgICAgICAlIChzaWduYW1lLCB0aW1lb3V0KSkKKworICAgIGRlZiBzdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHNlbGYsIHBpZCwgc2lnbmFtZSk6CisgICAgICAgIGNvZGUgPSAnaW1wb3J0IG9zLCBzaWduYWw7IG9zLmtpbGwoJXMsIHNpZ25hbC4lcyknICUgKHBpZCwgc2lnbmFtZSkKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywgY29kZV0KKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oYXJncykKKworICAgIGRlZiB0ZXN0X2ludGVycHJvY2Vzc19zaWduYWwoc2VsZik6CisgICAgICAgICMgSW5zdGFsbCBoYW5kbGVycy4gVGhpcyBmdW5jdGlvbiBydW5zIGluIGEgc3ViLXByb2Nlc3MsIHNvIHdlCisgICAgICAgICMgZG9uJ3Qgd29ycnkgYWJvdXQgcmUtc2V0dGluZyB0aGUgZGVmYXVsdCBoYW5kbGVycy4KKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBzZWxmLnNpZ2h1cF9oYW5kbGVyKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBzZWxmLnNpZ3VzcjFfaGFuZGxlcikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMiwgc2lnbmFsLlNJR19JR04pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyKQorCisgICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KKyAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR0hVUCIpIGFzIGNoaWxkOgorICAgICAgICAgICAgc2VsZi53YWl0X3NpZ25hbChjaGlsZCwgJ1NJR0hVUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHVVNSMSIpIGFzIGNoaWxkOgorICAgICAgICAgICAgc2VsZi53YWl0X3NpZ25hbChjaGlsZCwgJ1NJR1VTUjEnLCBTSUdVU1IxRXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR1VTUjIiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgICMgTm90aGluZyBzaG91bGQgaGFwcGVuOiBTSUdVU1IyIGlzIGlnbm9yZWQKKyAgICAgICAgICAgIGNoaWxkLndhaXQoKQorCisgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICBzZWxmLndhaXRfc2lnbmFsKE5vbmUsICdTSUdBTFJNJywgS2V5Ym9hcmRJbnRlcnJ1cHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5IGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKaW5kZXggOTA3MjJmNy4uMTcxZTVjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc29ydHBlcmYucHkKKysrIGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBmbHVzaCgpCiAKIGRlZiB0YWJ1bGF0ZShyKToKLSAgICAiIiJUYWJ1bGF0ZSBzb3J0IHNwZWVkIGZvciBsaXN0cyBvZiB2YXJpb3VzIHNpemVzLgorICAgIHIiIiJUYWJ1bGF0ZSBzb3J0IHNwZWVkIGZvciBsaXN0cyBvZiB2YXJpb3VzIHNpemVzLgogCiAgICAgVGhlIHNpemVzIGFyZSAyKippIGZvciBpIGluIHIgKHRoZSBhcmd1bWVudCwgYSBsaXN0KS4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKaW5kZXggZDBkMTI2YS4uMTVkOGZjOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVybGxpYi5lcnJvcgogaW1wb3J0IHdhcm5pbmdzCkBAIC04OSwxMSArOTAsMTMgQEAKICAgICAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwgImNweXRob25fb25seSIsICJnZXRfYXR0cmlidXRlIiwKICAgICAicmVxdWlyZXNfSUVFRV83NTQiLCAic2tpcF91bmxlc3NfeGF0dHIiLCAicmVxdWlyZXNfemxpYiIsCiAgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCi0gICAgICJyZXF1aXJlc19tdWx0aXByb2Nlc3NpbmdfcXVldWUiLAorICAgICJjaGVja19fYWxsX18iLCAicmVxdWlyZXNfYW5kcm9pZF9sZXZlbCIsICJyZXF1aXJlc19tdWx0aXByb2Nlc3NpbmdfcXVldWUiLAogICAgICMgc3lzCi0gICAgImlzX2p5dGhvbiIsICJjaGVja19pbXBsX2RldGFpbCIsCisgICAgImlzX2p5dGhvbiIsICJpc19hbmRyb2lkIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgInVuaXhfc2hlbGwiLAorICAgICJzZXRzd2l0Y2hpbnRlcnZhbCIsICJhbmRyb2lkX25vdF9yb290IiwKICAgICAjIG5ldHdvcmsKICAgICAiSE9TVCIsICJJUFY2X0VOQUJMRUQiLCAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLCAib3Blbl91cmxyZXNvdXJjZSIsCisgICAgImJpbmRfdW5peF9zb2NrZXQiLAogICAgICMgcHJvY2Vzc2VzCiAgICAgJ3RlbXBfdW1hc2snLCAicmVhcF9jaGlsZHJlbiIsCiAgICAgIyBsb2dnaW5nCkBAIC0xMDQsNyArMTA3LDcgQEAKICAgICAiY2hlY2tfd2FybmluZ3MiLCAiY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZyIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKICAgICAicnVuX3dpdGhfbG9jYWxlIiwgInN3YXBfaXRlbSIsCiAgICAgInN3YXBfYXR0ciIsICJNYXRjaGVyIiwgInNldF9tZW1saW1pdCIsICJTdXBwcmVzc0NyYXNoUmVwb3J0IiwgInNvcnRkaWN0IiwKLSAgICAicnVuX3dpdGhfdHoiLAorICAgICJydW5fd2l0aF90eiIsICJQR08iLCAibWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlIiwKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC03MDYsNiArNzA5LDE1IEBACiAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQogICAgIHJldHVybiBwb3J0CiAKK2RlZiBiaW5kX3VuaXhfc29ja2V0KHNvY2ssIGFkZHIpOgorICAgICIiIkJpbmQgYSB1bml4IHNvY2tldCwgcmFpc2luZyBTa2lwVGVzdCBpZiBQZXJtaXNzaW9uRXJyb3IgaXMgcmFpc2VkLiIiIgorICAgIGFzc2VydCBzb2NrLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWAorICAgIHRyeToKKyAgICAgICAgc29jay5iaW5kKGFkZHIpCisgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKKyAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdjYW5ub3QgYmluZCBBRl9VTklYIHNvY2tldHMnKQorCiBkZWYgX2lzX2lwdjZfZW5hYmxlZCgpOgogICAgICIiIkNoZWNrIHdoZXRoZXIgSVB2NiBpcyBlbmFibGVkIG9uIHRoaXMgaG9zdC4iIiIKICAgICBpZiBzb2NrZXQuaGFzX2lwdjY6CkBAIC03NjUsNiArNzc3LDE1IEBACiAKIGlzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKIAorX0FORFJPSURfQVBJX0xFVkVMID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdBTkRST0lEX0FQSV9MRVZFTCcpCitpc19hbmRyb2lkID0gKF9BTkRST0lEX0FQSV9MRVZFTCBpcyBub3QgTm9uZSBhbmQgX0FORFJPSURfQVBJX0xFVkVMID4gMCkKK2FuZHJvaWRfbm90X3Jvb3QgPSAoaXNfYW5kcm9pZCBhbmQgb3MuZ2V0ZXVpZCgpICE9IDApCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHVuaXhfc2hlbGwgPSAnL3N5c3RlbS9iaW4vc2gnIGlmIGlzX2FuZHJvaWQgZWxzZSAnL2Jpbi9zaCcKK2Vsc2U6CisgICAgdW5peF9zaGVsbCA9IE5vbmUKKwogIyBGaWxlbmFtZSB1c2VkIGZvciB0ZXN0aW5nCiBpZiBvcy5uYW1lID09ICdqYXZhJzoKICAgICAjIEp5dGhvbiBkaXNhbGxvd3MgQCBpbiBtb2R1bGUgbmFtZXMKQEAgLTgzNCw3ICs4NTUsNyBAQAogIyBlbmNvZGVkIGJ5IHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIChpbiBzdHJpY3QgbW9kZSkuIEl0IGNhbiBiZSBOb25lIGlmIHdlCiAjIGNhbm5vdCBnZW5lcmF0ZSBzdWNoIGZpbGVuYW1lLgogVEVTVEZOX1VORU5DT0RBQkxFID0gTm9uZQotaWYgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CitpZiBvcy5uYW1lID09ICdudCc6CiAgICAgIyBza2lwIHdpbjMycyAoMCkgb3IgV2luZG93cyA5eC9NRSAoMSkKICAgICBpZiBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5wbGF0Zm9ybSA+PSAyOgogICAgICAgICAjIERpZmZlcmVudCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZyb20gdmFyaW91cyBsYW5ndWFnZXMgdG8gbWluaW1pemUgdGhlCkBAIC05MDEsNiArOTIyLDEwIEBACiAjIFNhdmUgdGhlIGluaXRpYWwgY3dkCiBTQVZFRENXRCA9IG9zLmdldGN3ZCgpCiAKKyMgU2V0IGJ5IGxpYnJlZ3J0ZXN0L21haW4ucHkgc28gd2UgY2FuIHNraXAgdGVzdHMgdGhhdCBhcmUgbm90CisjIHVzZWZ1bCBmb3IgUEdPCitQR08gPSBGYWxzZQorCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHRlbXBfZGlyKHBhdGg9Tm9uZSwgcXVpZXQ9RmFsc2UpOgogICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IGNyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgpAQCAtMTc1MSw2ICsxNzc2LDEzIEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoInJlc291cmNlIHswIXJ9IGlzIG5vdCBlbmFibGVkIi5mb3JtYXQocmVzb3VyY2UpKQogCitkZWYgcmVxdWlyZXNfYW5kcm9pZF9sZXZlbChsZXZlbCwgcmVhc29uKToKKyAgICBpZiBpc19hbmRyb2lkIGFuZCBfQU5EUk9JRF9BUElfTEVWRUwgPCBsZXZlbDoKKyAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoJyVzIGF0IEFuZHJvaWQgQVBJIGxldmVsICVkJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFzb24sIF9BTkRST0lEX0FQSV9MRVZFTCkpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIF9pZAorCiBkZWYgY3B5dGhvbl9vbmx5KHRlc3QpOgogICAgICIiIgogICAgIERlY29yYXRvciBmb3IgdGVzdHMgb25seSBhcHBsaWNhYmxlIG9uIENQeXRob24uCkBAIC0yMTMzLDYgKzIxNjUsMTEgQEAKICAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKICAgICByZXR1cm4gc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKIAorZGVmIG9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIG9wdGltaXphdGlvbiBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgcmV0dXJuIHN1YnByb2Nlc3MuX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgU3VwcG9ydCBmb3IgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjIzOSw3ICsyMjc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgICAgICAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KICAgICAgICAgICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKICAgICAgICAgICAgICAgICAgICAgY2FuID0gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBjYW4gPSBGYWxzZQpAQCAtMjI4NCw2ICsyMzIxLDY1IEBACiAgICAgcmV0dXJuIG1pc3NpbmdfaXRlbXMKIAogCitkZWYgY2hlY2tfX2FsbF9fKHRlc3RfY2FzZSwgbW9kdWxlLCBuYW1lX29mX21vZHVsZT1Ob25lLCBleHRyYT0oKSwKKyAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PSgpKToKKyAgICAiIiJBc3NlcnQgdGhhdCB0aGUgX19hbGxfXyB2YXJpYWJsZSBvZiAnbW9kdWxlJyBjb250YWlucyBhbGwgcHVibGljIG5hbWVzLgorCisgICAgVGhlIG1vZHVsZSdzIHB1YmxpYyBuYW1lcyAoaXRzIEFQSSkgYXJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24KKyAgICB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgICdtb2R1bGUnLgorCisgICAgVGhlICduYW1lX29mX21vZHVsZScgYXJndW1lbnQgY2FuIHNwZWNpZnkgKGFzIGEgc3RyaW5nIG9yIHR1cGxlIHRoZXJlb2YpCisgICAgd2hhdCBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYQorICAgIHB1YmxpYyBBUEkuIE9uZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4gJ21vZHVsZScgaW1wb3J0cyBwYXJ0IG9mIGl0cyBwdWJsaWMKKyAgICBBUEkgZnJvbSBvdGhlciBtb2R1bGVzLCBwb3NzaWJseSBhIEMgYmFja2VuZCAobGlrZSAnY3N2JyBhbmQgaXRzICdfY3N2JykuCisKKyAgICBUaGUgJ2V4dHJhJyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCB3b3VsZG4ndCBvdGhlcndpc2UgYmUKKyAgICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlcgorICAgICdfX21vZHVsZV9fJyBhdHRyaXVidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUKKyAgICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIG9uZXMuCisKKyAgICBUaGUgJ2JsYWNrbGlzdCcgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZAorICAgIGFzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgZXZlbiB0aG91Z2ggdGhlaXIgbmFtZXMgaW5kaWNhdGUgb3RoZXJ3aXNlLgorCisgICAgVXNhZ2U6CisgICAgICAgIGltcG9ydCBiYXIKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmb28pCisKKyAgICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7J0JBUl9DT05TVCcsICdGT09fQ09OU1QnfQorICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICAgIyBiYXIgaW1wb3J0cyBwYXJ0IG9mIGl0cyBBUEkgZnJvbSBfYmFyLgorICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGJhciwgKCdiYXInLCAnX2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgIiIiCisKKyAgICBpZiBuYW1lX29mX21vZHVsZSBpcyBOb25lOgorICAgICAgICBuYW1lX29mX21vZHVsZSA9IChtb2R1bGUuX19uYW1lX18sICkKKyAgICBlbGlmIGlzaW5zdGFuY2UobmFtZV9vZl9tb2R1bGUsIHN0cik6CisgICAgICAgIG5hbWVfb2ZfbW9kdWxlID0gKG5hbWVfb2ZfbW9kdWxlLCApCisKKyAgICBleHBlY3RlZCA9IHNldChleHRyYSkKKworICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGUpOgorICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBvciBuYW1lIGluIGJsYWNrbGlzdDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG9iaiA9IGdldGF0dHIobW9kdWxlLCBuYW1lKQorICAgICAgICBpZiAoZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkgaW4gbmFtZV9vZl9tb2R1bGUgb3IKKyAgICAgICAgICAgICAgICAobm90IGhhc2F0dHIob2JqLCAnX19tb2R1bGVfXycpIGFuZAorICAgICAgICAgICAgICAgICBub3QgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpKSk6CisgICAgICAgICAgICBleHBlY3RlZC5hZGQobmFtZSkKKyAgICB0ZXN0X2Nhc2UuYXNzZXJ0Q291bnRFcXVhbChtb2R1bGUuX19hbGxfXywgZXhwZWN0ZWQpCisKKwogY2xhc3MgU3VwcHJlc3NDcmFzaFJlcG9ydDoKICAgICAiIiJUcnkgdG8gcHJldmVudCBhIGNyYXNoIHJlcG9ydCBmcm9tIHBvcHBpbmcgdXAuCiAKQEAgLTI0NDUsMyArMjU0MSw0MyBAQAogICAgICMgVGhlIHNlcXVlbmNlIHNob3VsZCBiZSBkZWFsbG9jYXRlZCBqdXN0IGFmdGVyIHRoZSBlbmQgb2YgaXRlcmF0aW5nCiAgICAgZ2NfY29sbGVjdCgpCiAgICAgdGVzdC5hc3NlcnRUcnVlKGRvbmUpCisKKworZGVmIG1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZShjbWRfbmFtZXM9W10pOgorICAgICIiIkNoZWNrIGlmIHRoZSBjb21waWxlciBjb21wb25lbnRzIHVzZWQgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGV4aXN0LgorCisgICAgQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGNvbXBpbGVyIGV4ZWN1dGFibGVzIHdob3NlIG5hbWVzIGFyZSBsaXN0ZWQKKyAgICBpbiAnY21kX25hbWVzJyBvciBhbGwgdGhlIGNvbXBpbGVyIGV4ZWN1dGFibGVzIHdoZW4gJ2NtZF9uYW1lcycgaXMgZW1wdHkKKyAgICBhbmQgcmV0dXJuIHRoZSBmaXJzdCBtaXNzaW5nIGV4ZWN1dGFibGUgb3IgTm9uZSB3aGVuIG5vbmUgaXMgZm91bmQKKyAgICBtaXNzaW5nLgorCisgICAgIiIiCisgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGNjb21waWxlciwgc3lzY29uZmlnLCBzcGF3bgorICAgIGNvbXBpbGVyID0gY2NvbXBpbGVyLm5ld19jb21waWxlcigpCisgICAgc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcihjb21waWxlcikKKyAgICBmb3IgbmFtZSBpbiBjb21waWxlci5leGVjdXRhYmxlczoKKyAgICAgICAgaWYgY21kX25hbWVzIGFuZCBuYW1lIG5vdCBpbiBjbWRfbmFtZXM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBjbWQgPSBnZXRhdHRyKGNvbXBpbGVyLCBuYW1lKQorICAgICAgICBpZiBjbWRfbmFtZXM6CisgICAgICAgICAgICBhc3NlcnQgY21kIGlzIG5vdCBOb25lLCBcCisgICAgICAgICAgICAgICAgICAgICJ0aGUgJyVzJyBleGVjdXRhYmxlIGlzIG5vdCBjb25maWd1cmVkIiAlIG5hbWUKKyAgICAgICAgZWxpZiBjbWQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHNwYXduLmZpbmRfZXhlY3V0YWJsZShjbWRbMF0pIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gY21kWzBdCisKKworX2lzX2FuZHJvaWRfZW11bGF0b3IgPSBOb25lCitkZWYgc2V0c3dpdGNoaW50ZXJ2YWwoaW50ZXJ2YWwpOgorICAgICMgU2V0dGluZyBhIHZlcnkgbG93IGdpbCBpbnRlcnZhbCBvbiB0aGUgQW5kcm9pZCBlbXVsYXRvciBjYXVzZXMgcHl0aG9uCisgICAgIyB0byBoYW5nIChpc3N1ZSAjMjY5MzkpLgorICAgIG1pbmltdW1faW50ZXJ2YWwgPSAxZS01CisgICAgaWYgaXNfYW5kcm9pZCBhbmQgaW50ZXJ2YWwgPCBtaW5pbXVtX2ludGVydmFsOgorICAgICAgICBnbG9iYWwgX2lzX2FuZHJvaWRfZW11bGF0b3IKKyAgICAgICAgaWYgX2lzX2FuZHJvaWRfZW11bGF0b3IgaXMgTm9uZToKKyAgICAgICAgICAgIF9pc19hbmRyb2lkX2VtdWxhdG9yID0gKHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZ2V0cHJvcCcsICdyby5rZXJuZWwucWVtdSddKS5zdHJpcCgpID09IGInMScpCisgICAgICAgIGlmIF9pc19hbmRyb2lkX2VtdWxhdG9yOgorICAgICAgICAgICAgaW50ZXJ2YWwgPSBtaW5pbXVtX2ludGVydmFsCisgICAgcmV0dXJuIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChpbnRlcnZhbCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weSBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQppbmRleCBlOTRkOTg0Li5hZTkxMTRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CkBAIC0zOCw2ICszOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsIGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKICAgICAgICAgICAgIGlmICJfX2J1aWx0aW5zX18iIGluIG5hbWVzOgogICAgICAgICAgICAgICAgIGRlbCBuYW1lc1siX19idWlsdGluc19fIl0KKyAgICAgICAgICAgIGlmICdfX2Fubm90YXRpb25zX18nIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIGRlbCBuYW1lc1snX19hbm5vdGF0aW9uc19fJ10KICAgICAgICAgICAgIGtleXMgPSBzZXQobmFtZXMpCiAgICAgICAgICAgICBhbGxfbGlzdCA9IHN5cy5tb2R1bGVzW21vZG5hbWVdLl9fYWxsX18KICAgICAgICAgICAgIGFsbF9zZXQgPSBzZXQoYWxsX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKaW5kZXggNThmMmYwNC4uYWI0ZTI0NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQpAQCAtNCw3ICs0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBubF9sYW5naW5mbyA9IE5vbmUKIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CmluZGV4IGFjNjMyNWEuLmJjYmE4Y2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC00LDcgKzQsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5IGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CmluZGV4IGFiNTE0MzcuLjFiZDFmODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcAotaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IDQ3NzlhMTMuLmJjODMxNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtNDUxMiw2ICs0NTEyLDIxIEBACiAgICAgICAgIHN0cmluZyA9ICJOYW1lc3BhY2UoYmFyPSdzcGFtJywgZm9vPTQyKSIKICAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQogCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX3N0YXJrd2FyZ3Nfbm90aWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKip7JyInOiAncXVvdGUnfSkKKyAgICAgICAgc3RyaW5nID0gIiIiTmFtZXNwYWNlKCoqeyciJzogJ3F1b3RlJ30pIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKworICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9rd2FyZ3NfYW5kX3N0YXJrd2FyZ3Nfbm90aWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoYT0xLCAqKnsnIic6ICdxdW90ZSd9KQorICAgICAgICBzdHJpbmcgPSAiIiJOYW1lc3BhY2UoYT0xLCAqKnsnIic6ICdxdW90ZSd9KSIiIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfc3Rhcmt3YXJnc19pZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgqKnsndmFsaWQnOiBUcnVlfSkKKyAgICAgICAgc3RyaW5nID0gIk5hbWVzcGFjZSh2YWxpZD1UcnVlKSIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgICAgICAgc3RyaW5nID0gKApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKaW5kZXggMmEyMWU3NC4uMWY4OTY3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CkBAIC03LDggKzcsNiBAQAogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBvcGVyYXRvcgotaW1wb3J0IGlvCi1pbXBvcnQgbWF0aAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCkBAIC0zMjgsOCArMzI2LDE5IEBACiAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKChpdG9yaWcsIG9yaWcpLCBwcm90bykKICAgICAgICAgICAgIGl0LCBhID0gcGlja2xlLmxvYWRzKGQpCiAgICAgICAgICAgICBhLmZyb21saXN0KGRhdGEyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0KSwgdHlwZShpdG9yaWcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBbXSkKKworICAgIGRlZiB0ZXN0X2V4aGF1c3RlZF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsaXN0KHNlbGYuZXhhbXBsZSkpCisgICAgICAgIGV4aGl0ID0gaXRlcihhKQorICAgICAgICBlbXBpdCA9IGl0ZXIoYSkKKyAgICAgICAgZm9yIHggaW4gZXhoaXQ6ICAjIGV4aGF1c3QgdGhlIGl0ZXJhdG9yCisgICAgICAgICAgICBuZXh0KGVtcGl0KSAgIyBub3QgZXhoYXVzdGVkCisgICAgICAgIGEuYXBwZW5kKHNlbGYub3V0c2lkZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGV4aGl0KSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlbXBpdCksIFtzZWxmLm91dHNpZGVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxpc3Qoc2VsZi5leGFtcGxlKSArIFtzZWxmLm91dHNpZGVdKQogCiAgICAgZGVmIHRlc3RfaW5zZXJ0KHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQpAQCAtMTA4MCw2ICsxMDg5LDEyIEBACiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgnQicsIGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldGJ1ZmZlcl93aXRoX251bGxfdmlldywgYSkKIAorICAgIGRlZiB0ZXN0X2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIGFycmF5LmFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnR5cGVjb2RlLCkpCisgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIGFycmF5LmFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnR5cGVjb2RlLCkpCisKIGNsYXNzIFN0cmluZ1Rlc3QoQmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggZDNlNmQzNS4uOGM2MjQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTEsNyArMSw4IEBACitpbXBvcnQgYXN0CitpbXBvcnQgZGlzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGFzdAogaW1wb3J0IHdlYWtyZWYKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMTUsNiArMTE2LDggQEAKICAgICAjIFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucwogICAgICJ7Kip7MToyfSwgMjozfSIsCiAgICAgInsqezEsIDJ9LCAzfSIsCisgICAgIyBBc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbnMKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBbaSBhc3luYyBmb3IgYiBpbiBjXSIsCiBdCiAKICMgVGhlc2UgYXJlIGNvbXBpbGVkIHRocm91Z2ggInNpbmdsZSIKQEAgLTIzOCw3ICsyNDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3RfdHJlZSA9IGNvbXBpbGUoaSwgIj8iLCBraW5kLCBhc3QuUHlDRl9PTkxZX0FTVCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b190dXBsZShhc3RfdHJlZSksIG8pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydFRydWVvcmRlcihhc3RfdHJlZSwgKDAsIDApKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGFjdGlvbj0iY29tcGlsaW5nIiwgaW5wdXQ9aSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pLCBraW5kPWtpbmQpOgogICAgICAgICAgICAgICAgICAgICBjb21waWxlKGFzdF90cmVlLCAiPyIsIGtpbmQpCiAKICAgICBkZWYgdGVzdF9zbGljZShzZWxmKToKQEAgLTU0Nyw2ICs1NTAsMTcgQEAKICAgICAgICAgICAgIGNvbXBpbGUobW9kLCAndGVzdCcsICdleGVjJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiBOb25lIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKKyAgICBkZWYgdGVzdF9sZXZlbF9hc19ub25lKHNlbGYpOgorICAgICAgICBib2R5ID0gW2FzdC5JbXBvcnRGcm9tKG1vZHVsZT0ndGltZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXM9W2FzdC5hbGlhcyhuYW1lPSdzbGVlcCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz0wLCBjb2xfb2Zmc2V0PTApXQorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKGJvZHkpCisgICAgICAgIGNvZGUgPSBjb21waWxlKG1vZCwgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc2xlZXAnLCBucykKKwogCiBjbGFzcyBBU1RWYWxpZGF0b3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTc0Miw3ICs3NTYsNyBAQAogCiAgICAgZGVmIHRlc3RfaW1wb3J0ZnJvbShzZWxmKToKICAgICAgICAgaW1wID0gYXN0LkltcG9ydEZyb20oTm9uZSwgW2FzdC5hbGlhcygieCIsIE5vbmUpXSwgLTQyKQotICAgICAgICBzZWxmLnN0bXQoaW1wLCAibGV2ZWwgbGVzcyB0aGFuIC0xIikKKyAgICAgICAgc2VsZi5zdG10KGltcCwgIk5lZ2F0aXZlIEltcG9ydEZyb20gbGV2ZWwiKQogICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydEZyb20oTm9uZSwgW10sIDApLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0RnJvbSIpCiAKICAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CkBAIC03OTcsMjEgKzgxMSwyMSBAQAogICAgIGRlZiBfY2hlY2tfY29tcHJlaGVuc2lvbihzZWxmLCBmYWMpOgogICAgICAgICBzZWxmLmV4cHIoZmFjKFtdKSwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIikKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQogICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQotICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJOb25lIGRpc2FsbG93ZWQiKQotICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogCiAgICAgZGVmIF9zaW1wbGVfY29tcChzZWxmLCBmYWMpOgogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbZ10pLAogICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICBkZWYgd3JhcChnZW5zKToKQEAgLTgyOSw3ICs4NDMsNyBAQAogCiAgICAgZGVmIHRlc3RfZGljdGNvbXAoc2VsZik6CiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSwgW2ddKQogICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQpAQCAtOTMzLDYgKzk0NywxMjUgQEAKICAgICAgICAgICAgIGNvbXBpbGUobW9kLCBmbiwgImV4ZWMiKQogCiAKK2NsYXNzIENvbnN0YW50VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9uIHRoZSBhc3QuQ29uc3RhbnQgbm9kZSB0eXBlLiIiIgorCisgICAgZGVmIGNvbXBpbGVfY29uc3RhbnQoc2VsZiwgdmFsdWUpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCJ4ID0gMTIzIikKKworICAgICAgICBub2RlID0gdHJlZS5ib2R5WzBdLnZhbHVlCisgICAgICAgIG5ld19ub2RlID0gYXN0LkNvbnN0YW50KHZhbHVlPXZhbHVlKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbm9kZSwgbm9kZSkKKyAgICAgICAgdHJlZS5ib2R5WzBdLnZhbHVlID0gbmV3X25vZGUKKworICAgICAgICBjb2RlID0gY29tcGlsZSh0cmVlLCAiPHN0cmluZz4iLCAiZXhlYyIpCisKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICByZXR1cm4gbnNbJ3gnXQorCisgICAgZGVmIHRlc3RfdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5jb21waWxlX2NvbnN0YW50KFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogbGlzdCIpCisKKyAgICBkZWYgdGVzdF9zaW5nbGV0b25zKHNlbGYpOgorICAgICAgICBmb3IgY29uc3QgaW4gKE5vbmUsIEZhbHNlLCBUcnVlLCBFbGxpcHNpcywgYicnLCBmcm96ZW5zZXQoKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb25zdD1jb25zdCk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmNvbXBpbGVfY29uc3RhbnQoY29uc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh2YWx1ZSwgY29uc3QpCisKKyAgICBkZWYgdGVzdF92YWx1ZXMoc2VsZik6CisgICAgICAgIG5lc3RlZF90dXBsZSA9ICgxLCkKKyAgICAgICAgbmVzdGVkX2Zyb3plbnNldCA9IGZyb3plbnNldCh7MX0pCisgICAgICAgIGZvciBsZXZlbCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIG5lc3RlZF90dXBsZSA9IChuZXN0ZWRfdHVwbGUsIDIpCisgICAgICAgICAgICBuZXN0ZWRfZnJvemVuc2V0ID0gZnJvemVuc2V0KHtuZXN0ZWRfZnJvemVuc2V0LCAyfSkKKyAgICAgICAgdmFsdWVzID0gKDEyMywgMTIzLjAsIDEyM2osCisgICAgICAgICAgICAgICAgICAidW5pY29kZSIsIGInYnl0ZXMnLAorICAgICAgICAgICAgICAgICAgdHVwbGUoInR1cGxlIiksIGZyb3plbnNldCgiZnJvemVuc2V0IiksCisgICAgICAgICAgICAgICAgICBuZXN0ZWRfdHVwbGUsIG5lc3RlZF9mcm96ZW5zZXQpCisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh2YWx1ZT12YWx1ZSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jb21waWxlX2NvbnN0YW50KHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCB2YWx1ZSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbl90b19jb25zdGFudChzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgieCA9IDEiKQorCisgICAgICAgIHRhcmdldCA9IHRyZWUuYm9keVswXS50YXJnZXRzWzBdCisgICAgICAgIG5ld190YXJnZXQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MSkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X3RhcmdldCwgdGFyZ2V0KQorICAgICAgICB0cmVlLmJvZHlbMF0udGFyZ2V0c1swXSA9IG5ld190YXJnZXQKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY29tcGlsZSh0cmVlLCAic3RyaW5nIiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIHdoaWNoIGNhbid0IGJlIGFzc2lnbmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidG8gaW4gU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9jc3RyaW5nKHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCInZG9jc3RyaW5nJ1xueCA9IDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKHRyZWUpLCAnZG9jc3RyaW5nJykKKworICAgICAgICB0cmVlLmJvZHlbMF0udmFsdWUgPSBhc3QuQ29uc3RhbnQodmFsdWU9J2NvbnN0YW50IGRvY3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmdldF9kb2NzdHJpbmcodHJlZSksICdjb25zdGFudCBkb2NzdHJpbmcnKQorCisgICAgZGVmIGdldF9sb2FkX2NvbnN0KHNlbGYsIHRyZWUpOgorICAgICAgICAjIENvbXBpbGUgdG8gYnl0ZWNvZGUsIGRpc2Fzc2VtYmxlIGFuZCBnZXQgcGFyYW1ldGVyIG9mIExPQURfQ09OU1QKKyAgICAgICAgIyBpbnN0cnVjdGlvbnMKKyAgICAgICAgY28gPSBjb21waWxlKHRyZWUsICc8c3RyaW5nPicsICdleGVjJykKKyAgICAgICAgY29uc3RzID0gW10KKyAgICAgICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvKToKKyAgICAgICAgICAgIGlmIGluc3RyLm9wbmFtZSA9PSAnTE9BRF9DT05TVCc6CisgICAgICAgICAgICAgICAgY29uc3RzLmFwcGVuZChpbnN0ci5hcmd2YWwpCisgICAgICAgIHJldHVybiBjb25zdHMKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2xvYWRfY29uc3Qoc2VsZik6CisgICAgICAgIGNvbnN0cyA9IFtOb25lLAorICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAxMjQsCisgICAgICAgICAgICAgICAgICAyLjAsCisgICAgICAgICAgICAgICAgICAzaiwKKyAgICAgICAgICAgICAgICAgICJ1bmljb2RlIiwKKyAgICAgICAgICAgICAgICAgIGInYnl0ZXMnLAorICAgICAgICAgICAgICAgICAgKDEsIDIsIDMpXQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oWyd4PXshcn0nLmZvcm1hdChjb25zdCkgZm9yIGNvbnN0IGluIGNvbnN0c10pCisgICAgICAgIGNvZGUgKz0gJ1xueCA9IC4uLicKKyAgICAgICAgY29uc3RzLmV4dGVuZCgoRWxsaXBzaXMsIE5vbmUpKQorCisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9sb2FkX2NvbnN0KHRyZWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cykKKworICAgICAgICAjIFJlcGxhY2UgZXhwcmVzc2lvbiBub2RlcyB3aXRoIGNvbnN0YW50cworICAgICAgICBmb3IgYXNzaWduLCBjb25zdCBpbiB6aXAodHJlZS5ib2R5LCBjb25zdHMpOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYXNzaWduLCBhc3QuQXNzaWduKSwgYXN0LmR1bXAoYXNzaWduKQorICAgICAgICAgICAgbmV3X25vZGUgPSBhc3QuQ29uc3RhbnQodmFsdWU9Y29uc3QpCisgICAgICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbm9kZSwgYXNzaWduLnZhbHVlKQorICAgICAgICAgICAgYXNzaWduLnZhbHVlID0gbmV3X25vZGUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2xvYWRfY29uc3QodHJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCIxICsgMiIpCisgICAgICAgIGJpbm9wID0gdHJlZS5ib2R5WzBdLnZhbHVlCisKKyAgICAgICAgbmV3X2xlZnQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MTApCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19sZWZ0LCBiaW5vcC5sZWZ0KQorICAgICAgICBiaW5vcC5sZWZ0ID0gbmV3X2xlZnQKKworICAgICAgICBuZXdfcmlnaHQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MjApCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19yaWdodCwgYmlub3AucmlnaHQpCisgICAgICAgIGJpbm9wLnJpZ2h0ID0gbmV3X3JpZ2h0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKGJpbm9wKSwgMzApCisKKwogZGVmIG1haW4oKToKICAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgogICAgICAgICByZXR1cm4KQEAgLTk0MCw4ICsxMDczLDkgQEAKICAgICAgICAgZm9yIHN0YXRlbWVudHMsIGtpbmQgaW4gKChleGVjX3Rlc3RzLCAiZXhlYyIpLCAoc2luZ2xlX3Rlc3RzLCAic2luZ2xlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbF90ZXN0cywgImV2YWwiKSk6CiAgICAgICAgICAgICBwcmludChraW5kKyJfcmVzdWx0cyA9IFsiKQotICAgICAgICAgICAgZm9yIHMgaW4gc3RhdGVtZW50czoKLSAgICAgICAgICAgICAgICBwcmludChyZXByKHRvX3R1cGxlKGNvbXBpbGUocywgIj8iLCBraW5kLCAweDQwMCkpKSsiLCIpCisgICAgICAgICAgICBmb3Igc3RhdGVtZW50IGluIHN0YXRlbWVudHM6CisgICAgICAgICAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShzdGF0ZW1lbnQsICI/Iiwga2luZCkKKyAgICAgICAgICAgICAgICBwcmludCgiJXIsIiAlICh0b190dXBsZSh0cmVlKSwpKQogICAgICAgICAgICAgcHJpbnQoIl0iKQogICAgICAgICBwcmludCgibWFpbigpIikKICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdApAQCAtOTc5LDE5ICsxMTEzLDIwIEBACiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnQnJlYWsnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0NvbnRpbnVlJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ1R1cGxlJywgKDEsIDQpLCBbKCdOYW1lJywgKDEsIDQpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgNiksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDExKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDE0KSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTIpLCBbKCdOYW1lJywgKDEsIDEyKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjApLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgyLCA0KSwgKCdUdXBsZScsICgzLCA0KSwgWygnTmFtZScsICgzLCA0KSwgJ0FhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDUsIDcpLCAnQmInLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoOCwgNCksIFsoJ05hbWUnLCAoOCwgNCksICdBYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDQpLCAnQmInLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDEwKSwgJ0NjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAxMSksICd3JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNiksICd4JywgKCdMb2FkJywpKSwgW10pLCAoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMjIpLCAnbScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjcpLCAncCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMzIpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMiksIFsoJ05hbWUnLCAoMSwgMTIpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyMCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDIsIDQpLCAoJ1R1cGxlJywgKDMsIDQpLCBbKCdOYW1lJywgKDMsIDQpLCAnQWEnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoNSwgNyksICdCYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICg4LCA0KSwgWygnTmFtZScsICg4LCA0KSwgJ0FhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgNCksICdCYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgMTApLCAnQ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnQXdhaXQnLCAoMiwgMSksICgnQ2FsbCcsICgyLCA3KSwgKCdOYW1lJywgKDIsIDcpLCAnc29tZXRoaW5nJywgKCdMb2FkJywpKSwgW10sIFtdKSkpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jRm9yJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgMTEpLCAnZScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTYpLCAnaScsICgnTG9hZCcsKSksIFsoJ0V4cHInLCAoMiwgMTkpLCAoJ051bScsICgyLCAxOSksIDEpKV0sIFsoJ0V4cHInLCAoMywgNyksICgnTnVtJywgKDMsIDcpLCAyKSldKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY1dpdGgnLCAoMiwgNyksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDIsIDEyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMiwgMTcpLCAnYicsICgnU3RvcmUnLCkpKV0sIFsoJ0V4cHInLCAoMiwgMjApLCAoJ051bScsICgyLCAyMCksIDEpKV0pXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdCcsICgxLCAwKSwgW05vbmUsICgnTnVtJywgKDEsIDEwKSwgMildLCBbKCdEaWN0JywgKDEsIDMpLCBbKCdOdW0nLCAoMSwgNCksIDEpXSwgWygnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ051bScsICgxLCAxMiksIDMpXSkpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0JywgKDEsIDApLCBbKCdTdGFycmVkJywgKDEsIDEpLCAoJ1NldCcsICgxLCAyKSwgWygnTnVtJywgKDEsIDMpLCAxKSwgKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTG9hZCcsKSksICgnTnVtJywgKDEsIDEwKSwgMyldKSldKSwKKygnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnRXhwcicsICgyLCAxKSwgKCdMaXN0Q29tcCcsICgyLCAyKSwgKCdOYW1lJywgKDIsIDIpLCAnaScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMiwgMTQpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTkpLCAnYycsICgnTG9hZCcsKSksIFtdLCAxKV0pKV0sIFtdLCBOb25lKV0pLAogXQogc2luZ2xlX3Jlc3VsdHMgPSBbCiAoJ0ludGVyYWN0aXZlJywgWygnRXhwcicsICgxLCAwKSwgKCdCaW5PcCcsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCAoJ0FkZCcsKSwgKCdOdW0nLCAoMSwgMiksIDIpKSldKSwKQEAgLTEwMDYsOCArMTE0MSw4IEBACiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFtdLCBbXSkpLAogKCdFeHByZXNzaW9uJywgKCdTZXQnLCAoMSwgMCksIFsoJ05hbWVDb25zdGFudCcsICgxLCAxKSwgTm9uZSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFsoJ051bScsICgyLCA2KSwgMSldLCBbKCdOdW0nLCAoNCwgMTApLCAyKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnTGlzdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCisoJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSwgMCldKSksCisoJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0sIDApXSkpLAogKCdFeHByZXNzaW9uJywgKCdDb21wYXJlJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksIFsoJ0x0JywpLCAoJ0x0JywpXSwgWygnTnVtJywgKDEsIDQpLCAyKSwgKCdOdW0nLCAoMSwgOCksIDMpXSkpLAogKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpLCAoJ1N0YXJyZWQnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTG9hZCcsKSldLCBbKCdrZXl3b3JkJywgJ2MnLCAoJ051bScsICgxLCA4KSwgMykpLCAoJ2tleXdvcmQnLCBOb25lLCAoJ05hbWUnLCAoMSwgMTUpLCAnZScsICgnTG9hZCcsKSkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdOdW0nLCAoMSwgMCksIDEwKSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGFiOGEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weQpAQCAtMCwwICsxLDEwNDQgQEAKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlCithc3luY2lvID0gaW1wb3J0X21vZHVsZSgiYXN5bmNpbyIpCisKKworY2xhc3MgQXdhaXRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworQHR5cGVzLmNvcm91dGluZQorZGVmIGF3YWl0YWJsZSgqLCB0aHJvdz1GYWxzZSk6CisgICAgaWYgdGhyb3c6CisgICAgICAgIHlpZWxkICgndGhyb3cnLCkKKyAgICBlbHNlOgorICAgICAgICB5aWVsZCAoJ3Jlc3VsdCcsKQorCisKK2RlZiBydW5fdW50aWxfY29tcGxldGUoY29ybyk6CisgICAgZXhjID0gRmFsc2UKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBleGM6CisgICAgICAgICAgICAgICAgZXhjID0gRmFsc2UKKyAgICAgICAgICAgICAgICBmdXQgPSBjb3JvLnRocm93KEF3YWl0RXhjZXB0aW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmdXQgPSBjb3JvLnNlbmQoTm9uZSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXQorCisgICAgICAgIGlmIGZ1dCA9PSAoJ3Rocm93JywpOgorICAgICAgICAgICAgZXhjID0gVHJ1ZQorCisKK2RlZiB0b19saXN0KGdlbik6CisgICAgYXN5bmMgZGVmIGl0ZXJhdGUoKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICByZXR1cm4gcnVuX3VudGlsX2NvbXBsZXRlKGl0ZXJhdGUoKSkKKworCitjbGFzcyBBc3luY0dlblN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wMShzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGFiYworICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDIoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICd5aWVsZCBmcm9tLippbnNpZGUgYXN5bmMnKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wMyhzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGFiYworICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDQoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdyZXR1cm4uKnZhbHVlLiphc3luYyBnZW4nKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wNShzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGlmIDA6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMgorICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdyZXR1cm4uKnZhbHVlLiphc3luYyBnZW4nKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisKK2NsYXNzIEFzeW5jR2VuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgY29tcGFyZV9nZW5lcmF0b3JzKHNlbGYsIHN5bmNfZ2VuLCBhc3luY19nZW4pOgorICAgICAgICBkZWYgc3luY19pdGVyYXRlKGcpOgorICAgICAgICAgICAgcmVzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcuX19uZXh0X18oKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIGRlZiBhc3luY19pdGVyYXRlKGcpOgorICAgICAgICAgICAgcmVzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBnLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdTVE9QJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgaWYgZXguYXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoZXguYXJnc1swXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ0VNUFRZIFN0b3BJdGVyYXRpb24nKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHN0cih0eXBlKGV4KSkpCisgICAgICAgICAgICByZXR1cm4gcmVzCisKKyAgICAgICAgc3luY19nZW5fcmVzdWx0ID0gc3luY19pdGVyYXRlKHN5bmNfZ2VuKQorICAgICAgICBhc3luY19nZW5fcmVzdWx0ID0gYXN5bmNfaXRlcmF0ZShhc3luY19nZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3luY19nZW5fcmVzdWx0LCBhc3luY19nZW5fcmVzdWx0KQorICAgICAgICByZXR1cm4gYXN5bmNfZ2VuX3Jlc3VsdAorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIGEgPSB5aWVsZCAxMjMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYSwgTm9uZSkKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCA0NTYKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCA3ODkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX2xpc3QoZ2VuKCkpLCBbMTIzLCA0NTYsIDc4OV0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5faXRlcmF0aW9uXzAyKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorCisgICAgICAgIGcgPSBnZW4oKQorICAgICAgICBhaSA9IGcuX19haXRlcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaS5fX2FuZXh0X18oKS5fX25leHRfXygpLCAoJ3Jlc3VsdCcsKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMjMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5hcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wQXN5bmNJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKHRocm93PVRydWUpCisgICAgICAgICAgICB5aWVsZCA0NTYKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF3YWl0RXhjZXB0aW9uKToKKyAgICAgICAgICAgIHRvX2xpc3QoZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA0KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGcgPSBnZW4oKQorICAgICAgICBhaSA9IGcuX19haXRlcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaS5fX2FuZXh0X18oKS5fX25leHRfXygpLCAoJ3Jlc3VsdCcsKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMjMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jIGdlbmVyYXRvci4qU3RvcEFzeW5jSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BJdGVyYXRpb24nKToKKyAgICAgICAgICAgIHRvX2xpc3QoZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA3KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBzZWxmLmNvbXBhcmVfZ2VuZXJhdG9ycyhzeW5jX2dlbigpLCBhc3luY19nZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDgoc2VsZik6CisgICAgICAgIGRlZiBzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBzZWxmLmNvbXBhcmVfZ2VuZXJhdG9ycyhzeW5jX2dlbigpLCBhc3luY19nZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDkoc2VsZik6CisgICAgICAgIGRlZiBzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBzZWxmLmNvbXBhcmVfZ2VuZXJhdG9ycyhzeW5jX2dlbigpLCBhc3luY19nZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMTAoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1Ob25lIHZhbHVlIC4qIGFzeW5jIGdlbmVyYXRvciIpOgorICAgICAgICAgICAgZ2VuKCkuX19hbmV4dF9fKCkuc2VuZCgxMDApCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXBpXzAxKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKworICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19uYW1lX18sICdnZW4nKQorICAgICAgICBnLl9fbmFtZV9fID0gJzEyMycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEluKCcuZ2VuJywgZy5fX3F1YWxuYW1lX18pCisgICAgICAgIGcuX19xdWFsbmFtZV9fID0gJzEyMycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fcXVhbG5hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZy5hZ19hd2FpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGcuYWdfZnJhbWUsIHR5cGVzLkZyYW1lVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnLmFnX3J1bm5pbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2NvZGUsIHR5cGVzLkNvZGVUeXBlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzYXdhaXRhYmxlKGcuYWNsb3NlKCkpKQorCisKK2NsYXNzIEFzeW5jR2VuQXN5bmNpb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChOb25lKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AuY2xvc2UoKQorICAgICAgICBzZWxmLmxvb3AgPSBOb25lCisKKyAgICBhc3luYyBkZWYgdG9fbGlzdChzZWxmLCBnZW4pOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBhc3luYyBmb3IgaSBpbiBnZW46CisgICAgICAgICAgICByZXMuYXBwZW5kKGkpCisgICAgICAgIHJldHVybiByZXMKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvXzAxKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgIHJlcyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi50b19saXN0KGdlbigpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFsxLCAyXSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvXzAyKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi50b19saXN0KGdlbigpKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvXzAzKHNlbGYpOgorICAgICAgICBsb29wID0gc2VsZi5sb29wCisKKyAgICAgICAgY2xhc3MgR2VuOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPWxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMgorCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChHZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgeWllbGQgMworICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHlpZWxkIDEwMDAKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB5aWVsZCA0CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bjEoKToKKyAgICAgICAgICAgIGl0ID0gZm9vKCkuX19haXRlcl9fKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bjIoKToKKyAgICAgICAgICAgIGl0ID0gZm9vKCkuX19haXRlcl9fKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEwMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCA0KQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4xKCkpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICB2ID0geWllbGQgdgorICAgICAgICAgICAgeWllbGQgdiAqIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGl0ID0gZm9vKCkuX19haXRlcl9fKCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTApCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkuc2VuZCgxMikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA2KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgICMgdGVzdCBzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZyA9IGZvbygpCisgICAgICAgIGcuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgZy5zZW5kKE5vbmUpCisKKyAgICAgICAgIyBub3cgd2l0aCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycworCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgRE9ORSArPSAxMAorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMTEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF90dXBsZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkICgxLCkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAoMiwpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAoMSwpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSBhcyBjbToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3NbMF0sICgyLCkpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfc3RvcGl0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIFN0b3BJdGVyYXRpb24oMSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCBTdG9wSXRlcmF0aW9uKDMpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnZhbHVlLCAxKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSBhcyBjbToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHYgPSBjbS5leGNlcHRpb24uYXJnc1swXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHYsIFN0b3BJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudmFsdWUsIDMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMTIKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA3KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMQorICAgICAgICAgICAgRE9ORSArPSAxMDAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA4KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgZnV0CisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKGl0Ll9fYW5leHRfXygpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIHQKKworICAgICAgICB0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgICAgICMgU2lsZW5jZSBSZXNvdXJjZVdhcm5pbmdzCisgICAgICAgIGZ1dC5jYW5jZWwoKQorICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19nY19hY2xvc2VfMDkoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBkZWwgZworCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzEwKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgICMgdGVzdCBzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZyA9IGZvbygpCisgICAgICAgIGcuc2VuZChOb25lKQorICAgICAgICBnLmNsb3NlKCkKKworICAgICAgICAjIG5vdyB3aXRoIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIGF3YWl0IGcuYWNsb3NlKCkKKyAgICAgICAgICAgIERPTkUgKz0gMTAKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDExKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzExKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgICMgdGVzdCBzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBnLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgJ2lnbm9yZWQgR2VuZXJhdG9yRXhpdCcpOgorICAgICAgICAgICAgZy5jbG9zZSgpCisKKyAgICAgICAgIyBub3cgd2l0aCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycworCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBET05FICs9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsICdpZ25vcmVkIEdlbmVyYXRvckV4aXQnKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFjbG9zZSgpCisgICAgICAgICAgICBET05FICs9IDEwCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxMCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAxKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgICMgU2FuaXR5IGNoZWNrOgorICAgICAgICBkZWYgc2dlbigpOgorICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgIHNnID0gc2dlbigpCisgICAgICAgIHYgPSBzZy5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgdiA9IHNnLnNlbmQoMTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMCkKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoMTAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDApCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDIoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXBfbl9jcmFzaCgwLjAxKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMTAwMAorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKDEwMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAzKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShhc3luY2lvLnNsZWVwKGRlbGF5LCBsb29wPXNlbGYubG9vcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmxvb3AuY2FsbF9sYXRlcihkZWxheSAvIDIsIGxhbWJkYTogZnV0LmNhbmNlbCgpKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXBfbl9jcmFzaCgwLjAxKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMTAwMAorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKDEwMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93XzAxKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGNsYXNzIEZvb0VyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6CisgICAgICAgIGRlZiBzZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICB2ID0gMTAwMAorICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgc2cgPSBzZ2VuKCkKKyAgICAgICAgdiA9IHNnLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorICAgICAgICB2ID0gc2cudGhyb3coRm9vRXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHNnLnNlbmQoTm9uZSkKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgICAgICB2ID0gMTAwMAorICAgICAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICAjIHJldHVybgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXRocm93KEZvb0VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDAwKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMihzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBjbGFzcyBGb29FcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShhc3luY2lvLnNsZWVwKGRlbGF5LCBsb29wPXNlbGYubG9vcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmxvb3AuY2FsbF9sYXRlcihkZWxheSAvIDIsIGxhbWJkYTogZnV0LmNhbmNlbCgpKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgIyByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmF0aHJvdyhGb29FcikKKyAgICAgICAgICAgIGV4Y2VwdCBhc3luY2lvLkNhbmNlbGxlZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0NhbmNlbGxlZEVycm9yIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93XzAzKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgICMgdGVzdCBzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZyA9IGZvbygpCisgICAgICAgIGcuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgZy50aHJvdyhWYWx1ZUVycm9yKQorCisgICAgICAgICMgbm93IHdpdGggYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXRocm93KFZhbHVlRXJyb3IpCisgICAgICAgICAgICBET05FICs9IDEwCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd190dXBsZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAoMiwpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAoMiwpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93X3N0b3BpdGVyYXRpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgU3RvcEl0ZXJhdGlvbigyKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnZhbHVlLCAyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDEoc2VsZik6CisgICAgICAgIGZpbmFsaXplZCA9IDAKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgbm9ubG9jYWwgZmluYWxpemVkCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCh0aW1lb3V0LCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgZmluYWxpemVkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdCgpOgorICAgICAgICAgICAgYXN5bmMgZm9yIF8gaW4gd2FpdGVyKDEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0MSA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisgICAgICAgIHQyID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHdhaXQoKSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmxvb3Auc2h1dGRvd25fYXN5bmNnZW5zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluYWxpemVkLCAyKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0MS5jYW5jZWwoKQorICAgICAgICB0Mi5jYW5jZWwoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19zaHV0ZG93bl8wMihzZWxmKToKKyAgICAgICAgbG9nZ2VkID0gMAorCisgICAgICAgIGRlZiBsb2dnZXIobG9vcCwgY29udGV4dCk6CisgICAgICAgICAgICBub25sb2NhbCBsb2dnZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FzeW5jZ2VuJywgY29udGV4dCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ2FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbG9zaW5nIG9mIGFzeW5jaHJvbm91cycKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGluIGNvbnRleHRbJ21lc3NhZ2UnXToKKyAgICAgICAgICAgICAgICBsb2dnZWQgKz0gMQorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0ZXIodGltZW91dCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCh0aW1lb3V0LCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdCA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgICAgICBzZWxmLmxvb3Auc2V0X2V4Y2VwdGlvbl9oYW5kbGVyKGxvZ2dlcikKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmxvb3Auc2h1dGRvd25fYXN5bmNnZW5zKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZWQsIDEpCisKKyAgICAgICAgIyBTaWxlbmNlIHdhcm5pbmdzCisgICAgICAgIHQuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKaW5kZXggM2EzM2ZjOC4uMGViYTc2ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CkBAIC0xMiw3ICsxMiw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdC5tb2NrCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMjk3LDM3ICsyOTYsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jaGF0LmZpbmRfcHJlZml4X2F0X2VuZCgicXdlcnR5ZGtqZiIsICJcclxuIiksIDApCiAKIAotY2xhc3MgVGVzdEZpZm8odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQotICAgICAgICBmLnB1c2goNykKLSAgICAgICAgZi5wdXNoKGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlyc3QoKSwgNykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlyc3QoKSwgYidhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmlzX2VtcHR5KCksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCBiJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotICAgIGRlZiB0ZXN0X2dpdmVuX2xpc3Qoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgotICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oW2IneCcsIDE3LCAzXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYid4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDE3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDAsIE5vbmUpKQotCi0KIGNsYXNzIFRlc3ROb3RDb25uZWN0ZWQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Rpc2FsbG93X25lZ2F0aXZlX3Rlcm1pbmF0b3Ioc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMjU5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weQppbmRleCBjMzA2Yjc3Li44OWFmZGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkKQEAgLTksNiArOSw3IEBACiAKIGltcG9ydCBhc3luY2lvCiBmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKK2Zyb20gYXN5bmNpbyBpbXBvcnQgZnV0dXJlcwogdHJ5OgogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtOTQsNyArOTUsMTAgQEAKICAgICAgICAgYXNzZXJ0IGcgaXMgZgogCiAKLWNsYXNzIEZ1dHVyZVRlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorY2xhc3MgQmFzZUZ1dHVyZVRlc3RzOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsIGxvb3A9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCkBAIC0xMTAsMjIgKzExNCwyMiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Z1dHVyZShNeUZ1dHVyZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKE15RnV0dXJlKCkpKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Z1dHVyZSgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3luY2lvLmlzZnV0dXJlKGFzeW5jaW8uRnV0dXJlKSkKIAogICAgICAgICAjIEFzIGBpc2luc3RhbmNlKE1vY2soKSwgRnV0dXJlKWAgcmV0dXJucyBgRmFsc2VgCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Z1dHVyZShtb2NrLk1vY2soKSkpCiAKLSAgICAgICAgIyBBcyBgaXNpbnN0YW5jZShNb2NrKEZ1dHVyZSksIEZ1dHVyZSlgIHJldHVybnMgYFRydWVgCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKG1vY2suTW9jayhhc3luY2lvLkZ1dHVyZSkpKQotCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKGYpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUodHlwZShmKSkpCisKKyAgICAgICAgIyBBcyBgaXNpbnN0YW5jZShNb2NrKEZ1dHVyZSksIEZ1dHVyZSlgIHJldHVybnMgYFRydWVgCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKG1vY2suTW9jayh0eXBlKGYpKSkpCisKICAgICAgICAgZi5jYW5jZWwoKQogCiAgICAgZGVmIHRlc3RfaW5pdGlhbF9zdGF0ZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuZG9uZSgpKQogICAgICAgICBmLmNhbmNlbCgpCkBAIC0xMzMsMTUgKzEzNywxNSBAQAogCiAgICAgZGVmIHRlc3RfaW5pdF9jb25zdHJ1Y3Rvcl9kZWZhdWx0X2xvb3Aoc2VsZik6CiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3Aoc2VsZi5sb29wKQotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUoKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZi5fbG9vcCwgc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfcG9zaXRpb25hbChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgRnV0dXJlIGRvZXNuJ3QgYWNjZXB0IGEgcG9zaXRpb25hbCBhcmd1bWVudAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFzeW5jaW8uRnV0dXJlLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLl9uZXdfZnV0dXJlLCA0MikKIAogICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2FuY2VsKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5kb25lKCkpCkBAIC0xNTIsNyArMTU2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfcmVzdWx0KHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkludmFsaWRTdGF0ZUVycm9yLCBmLnJlc3VsdCkKIAogICAgICAgICBmLnNldF9yZXN1bHQoNDIpCkBAIC0xNjYsNyArMTcwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgZXhjID0gUnVudGltZUVycm9yKCkKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5JbnZhbGlkU3RhdGVFcnJvciwgZi5leGNlcHRpb24pCiAKICAgICAgICAgIyBTdG9wSXRlcmF0aW9uIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZSAtIENQeXRob24gaXNzdWUyNjIyMQpAQCAtMTgzLDEyICsxODcsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2NsYXNzKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmLnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZi5leGNlcHRpb24oKSwgUnVudGltZUVycm9yKQogCiAgICAgZGVmIHRlc3RfeWllbGRfZnJvbV90d2ljZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKIAogICAgICAgICBkZWYgZml4dHVyZSgpOgogICAgICAgICAgICAgeWllbGQgJ0EnCkBAIC0yMDcsNyArMjExLDcgQEAKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZV9yZXByKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCi0gICAgICAgIGZfcGVuZGluZ19kZWJ1ZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3BlbmRpbmdfZGVidWcgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmcmFtZSA9IGZfcGVuZGluZ19kZWJ1Zy5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcGVuZGluZ19kZWJ1ZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGdXR1cmUgcGVuZGluZyBjcmVhdGVkIGF0ICVzOiVzPicKQEAgLTIxNSwyMSArMjE5LDIxIEBACiAgICAgICAgIGZfcGVuZGluZ19kZWJ1Zy5jYW5jZWwoKQogCiAgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoRmFsc2UpCi0gICAgICAgIGZfcGVuZGluZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3BlbmRpbmcgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9wZW5kaW5nKSwgJzxGdXR1cmUgcGVuZGluZz4nKQogICAgICAgICBmX3BlbmRpbmcuY2FuY2VsKCkKIAotICAgICAgICBmX2NhbmNlbGxlZCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX2NhbmNlbGxlZCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfY2FuY2VsbGVkLmNhbmNlbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX2NhbmNlbGxlZCksICc8RnV0dXJlIGNhbmNlbGxlZD4nKQogCi0gICAgICAgIGZfcmVzdWx0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfcmVzdWx0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9yZXN1bHQuc2V0X3Jlc3VsdCg0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9yZXN1bHQpLCAnPEZ1dHVyZSBmaW5pc2hlZCByZXN1bHQ9ND4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZfcmVzdWx0LnJlc3VsdCgpLCA0KQogCiAgICAgICAgIGV4YyA9IFJ1bnRpbWVFcnJvcigpCi0gICAgICAgIGZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9leGNlcHRpb24uc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX2V4Y2VwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGdXR1cmUgZmluaXNoZWQgZXhjZXB0aW9uPVJ1bnRpbWVFcnJvcigpPicpCkBAIC0yNDAsNyArMjQ0LDcgQEAKICAgICAgICAgICAgIHRleHQgPSAnJXMoKSBhdCAlczolcycgJSAoZnVuYy5fX3F1YWxuYW1lX18sIGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgICAgICByZXR1cm4gcmUuZXNjYXBlKHRleHQpCiAKLSAgICAgICAgZl9vbmVfY2FsbGJhY2tzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfb25lX2NhbGxiYWNrcyA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfb25lX2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhfZmFrZWZ1bmMpCiAgICAgICAgIGZha2VfcmVwciA9IGZ1bmNfcmVwcihfZmFrZWZ1bmMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihmX29uZV9jYWxsYmFja3MpLApAQCAtMjQ5LDcgKzI1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX29uZV9jYWxsYmFja3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGNhbmNlbGxlZD4nKQogCi0gICAgICAgIGZfdHdvX2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3R3b19jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX3R3b19jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soZmlyc3RfY2IpCiAgICAgICAgIGZfdHdvX2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhsYXN0X2NiKQogICAgICAgICBmaXJzdF9yZXByID0gZnVuY19yZXByKGZpcnN0X2NiKQpAQCAtMjU4LDcgKzI2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcic8RnV0dXJlIHBlbmRpbmcgY2I9XFslcywgJXNcXT4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZmlyc3RfcmVwciwgbGFzdF9yZXByKSkKIAotICAgICAgICBmX21hbnlfY2FsbGJhY2tzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfbWFueV9jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX21hbnlfY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKGZpcnN0X2NiKQogICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToKICAgICAgICAgICAgIGZfbWFueV9jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soX2Zha2VmdW5jKQpAQCAtMjczLDMxICsyNzcsMzEgQEAKICAgICBkZWYgdGVzdF9jb3B5X3N0YXRlKHNlbGYpOgogICAgICAgICBmcm9tIGFzeW5jaW8uZnV0dXJlcyBpbXBvcnQgX2NvcHlfZnV0dXJlX3N0YXRlCiAKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZi5zZXRfcmVzdWx0KDEwKQogCi0gICAgICAgIG5ld2YgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgbmV3ZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmLCBuZXdmKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3Zi5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Zi5yZXN1bHQoKSwgMTApCiAKLSAgICAgICAgZl9leGNlcHRpb24gPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9leGNlcHRpb24gPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2V4Y2VwdGlvbi5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcigpKQogCi0gICAgICAgIG5ld2ZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2ZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgX2NvcHlfZnV0dXJlX3N0YXRlKGZfZXhjZXB0aW9uLCBuZXdmX2V4Y2VwdGlvbikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2ZfZXhjZXB0aW9uLmRvbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBuZXdmX2V4Y2VwdGlvbi5yZXN1bHQpCiAKLSAgICAgICAgZl9jYW5jZWxsZWQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9jYW5jZWxsZWQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2NhbmNlbGxlZC5jYW5jZWwoKQogCi0gICAgICAgIG5ld2ZfY2FuY2VsbGVkID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2ZfY2FuY2VsbGVkID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgX2NvcHlfZnV0dXJlX3N0YXRlKGZfY2FuY2VsbGVkLCBuZXdmX2NhbmNlbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2ZfY2FuY2VsbGVkLmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfaXRlcihzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAKICAgICAgICAgZGVmIGNvcm8oKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0CkBAIC0zMTAsMjAgKzMxNCwyMCBAQAogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfYWJhbmRvbmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9yZXN1bHRfdW5yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9yZXN1bHQoNDIpCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9yZXN1bHRfcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KDQyKQogICAgICAgICBmdXQucmVzdWx0KCkKICAgICAgICAgZGVsIGZ1dApAQCAtMzMxLDcgKzMzNSw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fdW5yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKCdib29tJykpCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCkBAIC0zNDAsNyArMzQ0LDcgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2V4Y2VwdGlvbl9yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKCdib29tJykpCiAgICAgICAgIGZ1dC5leGNlcHRpb24oKQogICAgICAgICBkZWwgZnV0CkBAIC0zNDgsNyArMzUyLDcgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2V4Y2VwdGlvbl9yZXN1bHRfcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGZ1dC5yZXN1bHQpCiAgICAgICAgIGRlbCBmdXQKQEAgLTM2MiwxMiArMzY2LDEyIEBACiAgICAgICAgIGYxID0gZXguc3VibWl0KHJ1biwgJ29pJykKICAgICAgICAgZjIgPSBhc3luY2lvLndyYXBfZnV0dXJlKGYxLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgcmVzLCBpZGVudCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoZjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmMiwgYXN5bmNpby5GdXR1cmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKGYyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICdvaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWRlbnQsIHRocmVhZGluZy5nZXRfaWRlbnQoKSkKIAogICAgIGRlZiB0ZXN0X3dyYXBfZnV0dXJlX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZjEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZjEgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmMiA9IGFzeW5jaW8ud3JhcF9mdXR1cmUoZjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZjEsIGYyKQogCkBAIC00MDIsMTAgKzQwNiwxMCBAQAogICAgIGRlZiB0ZXN0X2Z1dHVyZV9zb3VyY2VfdHJhY2ViYWNrKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCiAKLSAgICAgICAgZnV0dXJlID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dHVyZSA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGxpbmVubyA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2xpbmVubyAtIDEKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZ1dHVyZS5fc291cmNlX3RyYWNlYmFjaywgbGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTFdWzozXSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTJdWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfZnV0dXJlX3NvdXJjZV90cmFjZWJhY2snKSkKQEAgLTQyMSw1NyArNDI1LDE4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4YwogICAgICAgICBleGMgPSBtZW1vcnlfZXJyb3IoKQogCi0gICAgICAgIGZ1dHVyZSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgIHNvdXJjZV90cmFjZWJhY2sgPSBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2sKKyAgICAgICAgZnV0dXJlID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0dXJlLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICBmdXR1cmUgPSBOb25lCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQogCiAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDQpOgotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBzb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInZnV0dXJlOiA8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1NZW1vcnlFcnJvclwoXCkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2NyZWF0ZWQgYXQge2ZpbGVuYW1lfTp7bGluZW5vfT5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ3NvdXJjZV90cmFjZWJhY2s6IE9iamVjdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcidjcmVhdGVkIGF0IFwobW9zdCByZWNlbnQgY2FsbCBsYXN0XCk6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicuKlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlICJ7ZmlsZW5hbWV9IiwgbGluZSB7bGluZW5vfSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInaW4gY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgICBmdXR1cmUgPSBhc3luY2lvXC5GdXR1cmVcKGxvb3A9c2VsZlwubG9vcFwpJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChmaWxlbmFtZT1yZS5lc2NhcGUoZnJhbWVbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz1mcmFtZVsxXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidmdXR1cmU6ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxGdXR1cmUgZmluaXNoZWQgZXhjZXB0aW9uPU1lbW9yeUVycm9yXChcKT4kJwotICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJlZ2V4ID0gcideRnV0dXJlIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCiAgICAgICAgICAgICBleGNfaW5mbyA9ICh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgICBtX2xvZy5lcnJvci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChtb2NrLkFOWSwgZXhjX2luZm89ZXhjX2luZm8pCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBmcmFtZSA9IHNvdXJjZV90cmFjZWJhY2tbLTFdCi0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlL1Rhc2sgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ0Z1dHVyZS9UYXNrIGNyZWF0ZWQgYXQgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgRmlsZScKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUgIntmaWxlbmFtZX0iLCBsaW5lIHtsaW5lbm99LCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcidpbiBjaGVja19mdXR1cmVfZXhjZXB0aW9uX25ldmVyX3JldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICAgIGZ1dHVyZSA9IGFzeW5jaW9cLkZ1dHVyZVwobG9vcD1zZWxmXC5sb29wXClcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ1RyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ01lbW9yeUVycm9yJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChmaWxlbmFtZT1yZS5lc2NhcGUoZnJhbWVbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz1mcmFtZVsxXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlL1Rhc2sgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ1RyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ01lbW9yeUVycm9yJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZWdleCA9IHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCiAgICAgICAgICAgICBtX2xvZy5lcnJvci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChtb2NrLkFOWSwgZXhjX2luZm89RmFsc2UpCiAgICAgICAgIG1lc3NhZ2UgPSBtX2xvZy5lcnJvci5jYWxsX2FyZ3NbMF1bMF0KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtZXNzYWdlLCByZS5jb21waWxlKHJlZ2V4LCByZS5ET1RBTEwpKQpAQCAtNDgzLDE0ICs0NDgsNDkgQEAKICAgICAgICAgc2VsZi5jaGVja19mdXR1cmVfZXhjZXB0aW9uX25ldmVyX3JldHJpZXZlZChUcnVlKQogCiAgICAgZGVmIHRlc3Rfc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKHNlbGYpOgotICAgICAgICBmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5jYW5jZWwoKQogICAgICAgICBmdXR1cmVzLl9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQoZnV0LCAyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnV0LmNhbmNlbGxlZCgpKQogCisgICAgZGVmIHRlc3RfZnV0dXJlX3N0b3BfaXRlcmF0aW9uX2FyZ3Moc2VsZik6CisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dC5zZXRfcmVzdWx0KCgxLCAyKSkKKyAgICAgICAgZmkgPSBmdXQuX19pdGVyX18oKQorICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpLnNlbmQoTm9uZSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICByZXN1bHQgPSBleC5hcmdzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIGV4cGVjdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICgxLCAyKSkKIAotY2xhc3MgRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHModGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZnV0dXJlX2l0ZXJfdGhyb3coc2VsZik6CisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZpID0gaXRlcihmdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmkudGhyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiwgRXhjZXB0aW9uKCJlbGVwaGFudCIpLCAzMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaS50aHJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uKCJlbGVwaGFudCIpLCBFeGNlcHRpb24oImVsZXBoYW50IikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmkudGhyb3csIGxpc3QpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ0Z1dHVyZVRlc3RzKEJhc2VGdXR1cmVUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZiwgICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9DRnV0dXJlKCphcmdzLCAqKmt3YXJncykKKworCitjbGFzcyBQeUZ1dHVyZVRlc3RzKEJhc2VGdXR1cmVUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX1B5RnV0dXJlKCphcmdzLCAqKmt3YXJncykKKworCitjbGFzcyBCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMoKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCkBAIC01MDYsNyArNTA2LDcgQEAKICAgICAgICAgcmV0dXJuIGJhZ19hcHBlbmRlcgogCiAgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYpOgotICAgICAgICByZXR1cm4gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiB0ZXN0X2NhbGxiYWNrc19pbnZva2VkX29uX3NldF9yZXN1bHQoc2VsZik6CiAgICAgICAgIGJhZyA9IFtdCkBAIC01NzAsNSArNTcwLDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZXN1bHQoKSwgJ2ZvbycpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ0Z1dHVyZURvbmVDYWxsYmFja1Rlc3RzKEJhc2VGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX0NGdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKworY2xhc3MgUHlGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cyhCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fUHlGdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfdGFza3MucHkKaW5kZXggOTg3MjkyNi4uYTE4ZDQ5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfdGFza3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfdGFza3MucHkKQEAgLTEsNSArMSw2IEBACiAiIiJUZXN0cyBmb3IgdGFza3MucHkuIiIiCiAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbwpAQCAtMTQsNiArMTUsOCBAQAogCiBpbXBvcnQgYXN5bmNpbwogZnJvbSBhc3luY2lvIGltcG9ydCBjb3JvdXRpbmVzCitmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKK2Zyb20gYXN5bmNpbyBpbXBvcnQgdGFza3MKIGZyb20gYXN5bmNpbyBpbXBvcnQgdGVzdF91dGlscwogdHJ5OgogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNzIsMTUgKzc1LDI2IEBACiAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBUYXNrVGVzdHModGVzdF91dGlscy5UZXN0Q2FzZSk6CitjbGFzcyBCYXNlVGFza1Rlc3RzOgorCisgICAgVGFzayA9IE5vbmUKKyAgICBGdXR1cmUgPSBOb25lCisKKyAgICBkZWYgbmV3X3Rhc2soc2VsZiwgbG9vcCwgY29ybyk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5UYXNrKGNvcm8sIGxvb3A9bG9vcCkKKworICAgIGRlZiBuZXdfZnV0dXJlKHNlbGYsIGxvb3ApOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uRnV0dXJlKGxvb3A9bG9vcCkKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCiAgICAgICAgIHNlbGYubG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcCgpCisgICAgICAgIHNlbGYubG9vcC5zZXRfdGFza19mYWN0b3J5KHNlbGYubmV3X3Rhc2spCisgICAgICAgIHNlbGYubG9vcC5jcmVhdGVfZnV0dXJlID0gbGFtYmRhOiBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3Rfb3RoZXJfbG9vcF9mdXR1cmUoc2VsZik6CiAgICAgICAgIG90aGVyX2xvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1vdGhlcl9sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUob3RoZXJfbG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHJ1bihmdXQpOgpAQCAtMTA4LDcgKzEyMiw3IEBACiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgbm90bXVjaCgpOgogICAgICAgICAgICAgcmV0dXJuICdvaycKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXN1bHQoKSwgJ29rJykKQEAgLTExNiw3ICsxMzAsNyBAQAogCiAgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKICAgICAgICAgc2VsZi5zZXRfZXZlbnRfbG9vcChsb29wKQotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModC5fbG9vcCwgbG9vcCkKICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgbG9vcC5jbG9zZSgpCkBAIC0xMzksNyArMTUzLDcgQEAKICAgICAgICAgbG9vcC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9lbnN1cmVfZnV0dXJlX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZl9vcmlnID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfb3JpZyA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIGZfb3JpZy5zZXRfcmVzdWx0KCdrbycpCiAKICAgICAgICAgZiA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShmX29yaWcpCkBAIC0xNjMsNyArMTc3LDcgQEAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBub3RtdWNoKCk6CiAgICAgICAgICAgICByZXR1cm4gJ29rJwotICAgICAgICB0X29yaWcgPSBhc3luY2lvLlRhc2sobm90bXVjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdF9vcmlnID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgdCA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSh0X29yaWcpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQpAQCAtMjA0LDcgKzIxOCw3IEBACiAgICAgICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoJ29rJykKIAogICAgIGRlZiB0ZXN0X2FzeW5jX3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBlbnN1cmVfJyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGYsIGFzeW5jaW8uYXN5bmMoZikpCkBAIC0yNTEsOCArMjY1LDggQEAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBmdW5jdGlvbgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19uYW1lX18sICdub3RtdWNoJykKICAgICAgICAgaWYgUFkzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX3F1YWxuYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUYXNrVGVzdHMudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG5vdG11Y2guX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1x3Ky50ZXN0X3Rhc2tfcmVwci48bG9jYWxzPi5ub3RtdWNoJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbW9kdWxlX18sIF9fbmFtZV9fKQogCiAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0ZXN0X3V0aWxzLmdldF9mdW5jdGlvbl9zb3VyY2Uobm90bXVjaCkKQEAgLTI2MSw3ICsyNzUsNyBAQAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIG9iamVjdAogICAgICAgICBnZW4gPSBub3RtdWNoKCkKICAgICAgICAgaWYgY29yb3V0aW5lcy5fREVCVUcgb3IgUFkzNToKLSAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnCisgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ0Jhc2VUYXNrVGVzdHMudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAnbm90bXVjaCcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sICdub3RtdWNoJykKQEAgLTI3MCw3ICsyODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3F1YWxuYW1lKQogCiAgICAgICAgICMgdGVzdCBwZW5kaW5nIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhnZW4sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGdlbikKICAgICAgICAgdC5hZGRfZG9uZV9jYWxsYmFjayhEdW1teSgpKQogCiAgICAgICAgIGNvcm8gPSBmb3JtYXRfY29yb3V0aW5lKGNvcm9fcXVhbG5hbWUsICdydW5uaW5nJywgc3JjLApAQCAtMjkyLDcgKzMwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxUYXNrIGNhbmNlbGxlZCAlcz4nICUgY29ybykKIAogICAgICAgICAjIHRlc3QgZmluaXNoZWQgVGFzawotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgbm90bXVjaCgpKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIGNvcm8gPSBmb3JtYXRfY29yb3V0aW5lKGNvcm9fcXVhbG5hbWUsICdkb25lJywgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9zb3VyY2VfdHJhY2ViYWNrKQpAQCAtMzExLDkgKzMyNSw5IEBACiAgICAgICAgICMgdGVzdCBjb3JvdXRpbmUgZnVuY3Rpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbmFtZV9fLCAnbm90bXVjaCcpCiAgICAgICAgIGlmIFBZMzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19xdWFsbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLjxsb2NhbHM+Lm5vdG11Y2gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChub3RtdWNoLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcdysudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXC48bG9jYWxzPlwubm90bXVjaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX21vZHVsZV9fLCBfX25hbWVfXykKIAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIG9iamVjdApAQCAtMzIzLDcgKzMzNyw3IEBACiAgICAgICAgICAgICAjIGZ1bmN0aW9uLCBhcyBleHBlY3RlZCwgYW5kIGhhdmUgYSBxdWFsaWZpZWQgbmFtZSAoX19xdWFsbmFtZV9fCiAgICAgICAgICAgICAjIGF0dHJpYnV0ZSkuCiAgICAgICAgICAgICBjb3JvX25hbWUgPSAnbm90bXVjaCcKLSAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAoJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwcl9jb3JvX2RlY29yYXRvcicKKyAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAoJ0Jhc2VUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuPGxvY2Fscz4ubm90bXVjaCcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIE9uIFB5dGhvbiA8IDMuNSwgZ2VuZXJhdG9ycyBpbmhlcml0IHRoZSBuYW1lIG9mIHRoZSBjb2RlLCBub3Qgb2YKQEAgLTM1MSw3ICszNjUsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGdlbiksICc8Q29yb1dyYXBwZXIgJXM+JyAlIGNvcm8pCiAKICAgICAgICAgIyB0ZXN0IHBlbmRpbmcgVGFzawotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKGdlbiwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZ2VuKQogICAgICAgICB0LmFkZF9kb25lX2NhbGxiYWNrKER1bW15KCkpCiAKICAgICAgICAgIyBmb3JtYXQgdGhlIGNvcm91dGluZSBvYmplY3QKQEAgLTM3NCw4ICszODgsOCBAQAogICAgICAgICBkZWYgd2FpdF9mb3IoZnV0KToKICAgICAgICAgICAgIHJldHVybiAoeWllbGQgZnJvbSBmdXQpCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sod2FpdF9mb3IoZnV0KSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgd2FpdF9mb3IoZnV0KSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcih0YXNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnPFRhc2sgLiogd2FpdF9mb3I9JXM+JyAlIHJlLmVzY2FwZShyZXByKGZ1dCkpKQpAQCAtNDAxLDEwICs0MTUsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0YXNrLl9jb3JvLmNsb3NlKQogCiAgICAgICAgIGNvcm9fcmVwciA9IHJlcHIodGFzay5fY29ybykKLSAgICAgICAgZXhwZWN0ZWQgPSAoJzxDb3JvV3JhcHBlciBUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfcGFydGlhbF9jb3Jvd3JhcHBlcicKLSAgICAgICAgICAgICAgICAgICAgJy48bG9jYWxzPi5mdW5jKDEpKCkgcnVubmluZywgJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcm9fcmVwci5zdGFydHN3aXRoKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcm9fcmVwcikKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgICByJzxDb3JvV3JhcHBlciBcdysudGVzdF90YXNrX3JlcHJfcGFydGlhbF9jb3Jvd3JhcHBlcicKKyAgICAgICAgICAgIHInXC48bG9jYWxzPlwuZnVuY1woMVwpXChcKSBydW5uaW5nLCAnCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb3JvX3JlcHIsIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfdGFza19iYXNpY3Moc2VsZik6CiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQpAQCAtNDM4LDcgKzQ1Myw3IEBACiAgICAgICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICBsb29wLmNhbGxfc29vbih0LmNhbmNlbCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCkBAIC00NTMsNyArNDY4LDcgQEAKICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgICAgICByZXR1cm4gMTIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkgICMgc3RhcnQgY29ybwogICAgICAgICB0LmNhbmNlbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKApAQCAtNDYzLDE0ICs0NzgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX2lubmVyX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHRhc2soKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gZgogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApICAjIHN0YXJ0IHRhc2sKICAgICAgICAgZi5jYW5jZWwoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgpAQCAtNDc5LDE0ICs0OTQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9jYW5jZWxfYm90aF90YXNrX2FuZF9pbm5lcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogCiAgICAgICAgIGYuY2FuY2VsKCkKQEAgLTUwMCw4ICs1MTUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF90YXNrX2NhdGNoaW5nKHNlbGYpOgotICAgICAgICBmdXQxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGZ1dDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0MSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgpAQCAtNTExLDcgKzUyNiw3IEBACiAgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gNDIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0Ll9mdXRfd2FpdGVyLCBmdXQxKSAgIyBXaGl0ZS1ib3ggdGVzdC4KICAgICAgICAgZnV0MS5zZXRfcmVzdWx0KE5vbmUpCkBAIC01MjQsOSArNTM5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX3Rhc2tfaWdub3Jpbmcoc2VsZik6Ci0gICAgICAgIGZ1dDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dDEgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICBmdXQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MyA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CkBAIC01MzgsNyArNTUzLDcgQEAKICAgICAgICAgICAgIHJlcyA9IHlpZWxkIGZyb20gZnV0MwogICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydElzKHQuX2Z1dF93YWl0ZXIsIGZ1dDEpICAjIFdoaXRlLWJveCB0ZXN0LgogICAgICAgICBmdXQxLnNldF9yZXN1bHQoTm9uZSkKQEAgLTU2Niw3ICs1ODEsNyBAQAogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEwMCwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKICAgICAgICAgICAgIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IsIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlLCB0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kb25lKCkpCkBAIC01OTksNyArNjE0LDcgQEAKICAgICAgICAgICAgICAgICBpZiB4ID09IDI6CiAgICAgICAgICAgICAgICAgICAgIGxvb3Auc3RvcCgpCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLApAQCAtNjM3LDcgKzY1Miw3IEBACiAgICAgICAgICAgICAgICAgZm9vX3J1bm5pbmcgPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuICdkb25lJwogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5UaW1lb3V0RXJyb3IpOgogICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0X2ZvcihmdXQsIDAuMSwgbG9vcD1sb29wKSkKQEAgLTY3Nyw3ICs2OTIsNyBAQAogCiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AobG9vcCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApCisgICAgICAgICAgICBmdXQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLlRpbWVvdXRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0X2ZvcihmdXQsIDAuMDEpKQogICAgICAgICBmaW5hbGx5OgpAQCAtNjk2LDcgKzcxMSw3IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgdGFzayA9IGFzeW5jaW8ud2FpdF9mb3IoZnV0LCB0aW1lb3V0PTAuMiwgbG9vcD1sb29wKQogICAgICAgICBsb29wLmNhbGxfbGF0ZXIoMC4xLCBmdXQuc2V0X3Jlc3VsdCwgIm9rIikKICAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKQEAgLTcxMyw4ICs3MjgsOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZvbygpOgpAQCAtNzIzLDEyICs3MzgsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVuZGluZywgc2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gNDIKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKICAgICAgICAgIyBEb2luZyBpdCBhZ2FpbiBzaG91bGQgdGFrZSBubyB0aW1lIGFuZCBleGVyY2lzZSBhIGRpZmZlcmVudCBwYXRoLgotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKQEAgLTc0Myw4ICs3NTgsOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjAxNSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4wMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTc1NSw3ICs3NzAsNyBAQAogCiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AobG9vcCkKICAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCi0gICAgICAgICAgICBhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgICAgICBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKQEAgLTc2NSw5ICs3ODAsOSBAQAogICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgYyA9IGNvcm8oJ3Rlc3QnKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCi0gICAgICAgICAgICBhc3luY2lvLndhaXQoW2MsIGMsIGNvcm8oJ3NwYW0nKV0sIGxvb3A9c2VsZi5sb29wKSwKLSAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrID1zZWxmLm5ld190YXNrKAorICAgICAgICAgICAgc2VsZi5sb29wLAorICAgICAgICAgICAgYXN5bmNpby53YWl0KFtjLCBjLCBjb3JvKCdzcGFtJyldLCBsb29wPXNlbGYubG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKIApAQCAtNzk4LDEyICs4MTMsMTIgQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgbG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCksCi0gICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7Yn0sIGRvbmUpCkBAIC04MzAsMTIgKzg0NSwxMiBAQAogICAgICAgICAgICAgeWllbGQKICAgICAgICAgICAgIHlpZWxkCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhjb3JvMSgpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhjb3JvMigpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzaygKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMSgpKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm8yKCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgc2VsZi5sb29wLAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgcmV0dXJuX3doZW49YXN5bmNpby5GSVJTVF9DT01QTEVURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApLAotICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2EsIGJ9LCBkb25lKQpAQCAtODU0LDE3ICs4NjksMTcgQEAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKICAgICAgICAgIyBmaXJzdF9leGNlcHRpb24sIHRhc2sgYWxyZWFkeSBoYXMgZXhjZXB0aW9uCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGV4YygpOgogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ2VycicpCiAKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhleGMoKSwgbG9vcD1sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBleGMoKSkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soCisgICAgICAgICAgICBsb29wLAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgcmV0dXJuX3doZW49YXN5bmNpby5GSVJTVF9FWENFUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSwKLSAgICAgICAgICAgIGxvb3A9bG9vcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHtifSwgZG9uZSkKQEAgLTg4NywxNCArOTAyLDE0IEBACiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCiAgICAgICAgICMgZmlyc3RfZXhjZXB0aW9uLCBleGNlcHRpb24gZHVyaW5nIHdhaXRpbmcKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZXhjKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ2VycicpCiAKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhleGMoKSwgbG9vcD1sb29wKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBleGMoKSkKICAgICAgICAgdGFzayA9IGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfRVhDRVBUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCkKIApAQCAtOTE4LDE0ICs5MzMsMTQgQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgc2xlZXBlcigpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdyZWFsbHknKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soc2xlZXBlcigpLCBsb29wPWxvb3ApCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIHNsZWVwZXIoKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZvbygpOgpAQCAtOTM1LDEwICs5NTAsMTAgQEAKICAgICAgICAgICAgIGVycm9ycyA9IHNldChmIGZvciBmIGluIGRvbmUgaWYgZi5leGNlcHRpb24oKSBpcyBub3QgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVycm9ycyksIDEpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAotICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogCiAgICAgZGVmIHRlc3Rfd2FpdF93aXRoX3RpbWVvdXQoc2VsZik6CkBAIC05NTQsOCArOTY5LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTk2NCw3ICs5NzksNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb25lLCBzZXQoW2FdKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVuZGluZywgc2V0KFtiXSkpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjExLCBsb29wLnRpbWUoKSkKIAogICAgICAgICAjIG1vdmUgZm9yd2FyZCB0byBjbG9zZSBnZW5lcmF0b3IKQEAgLTk4NCw4ICs5OTksOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCiAgICAgICAgICAgICBhc3luY2lvLndhaXQoW2IsIGFdLCB0aW1lb3V0PTAuMSwgbG9vcD1sb29wKSkKQEAgLTEwMzMsMTQgKzEwNDgsMTQgQEAKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCh5aWVsZCBmcm9tIGYpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYScgaW4gcmVzWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdiJyBpbiByZXNbOjJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1syXSwgJ2MnKQogCiAgICAgICAgICMgRG9pbmcgaXQgYWdhaW4gc2hvdWxkIHRha2Ugbm8gdGltZSBhbmQgZXhlcmNpc2UgYSBkaWZmZXJlbnQgcGF0aC4KLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X2FzX2NvbXBsZXRlZF93aXRoX3RpbWVvdXQoc2VsZik6CkBAIC0xMDY5LDcgKzEwODQsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCgyLCBleGMpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDIsIHJlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMF0sICgxLCAnYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1sxXVswXSwgMikKQEAgLTEwOTcsNyArMTExMiw3IEBACiAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIGZyb20gZgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgJ2EnKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfcmV2ZXJzZV93YWl0KHNlbGYpOgogCkBAIC0xMTU3LDcgKzExNzIsNyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHlpZWxkIGZyb20gZikpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5UYXNrKHJ1bm5lcigpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHJ1bm5lcigpKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZ1dCkKICAgICAgICAgcmVzdWx0ID0gZnV0LnJlc3VsdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdCksIHsnaGFtJywgJ3NwYW0nfSkKQEAgLTExODAsNyArMTE5NSw3IEBACiAgICAgICAgICAgICByZXMgPSB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoZHQvMiwgYXJnLCBsb29wPWxvb3ApCiAgICAgICAgICAgICByZXR1cm4gcmVzCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhzbGVlcGVyKDAuMSwgJ3llYWgnKSwgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBzbGVlcGVyKDAuMSwgJ3llYWgnKSkKICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVzdWx0KCksICd5ZWFoJykKQEAgLTExOTUsOCArMTIxMCw3IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsICd5ZWFoJywgbG9vcD1sb29wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgJ3llYWgnLCBsb29wPWxvb3ApKQogCiAgICAgICAgIGhhbmRsZSA9IE5vbmUKICAgICAgICAgb3JpZ19jYWxsX2xhdGVyID0gbG9vcC5jYWxsX2xhdGVyCkBAIC0xMjMyLDcgKzEyNDYsNyBAQAogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZG9pdCgpOgotICAgICAgICAgICAgc2xlZXBlciA9IGFzeW5jaW8uVGFzayhzbGVlcCg1MDAwKSwgbG9vcD1sb29wKQorICAgICAgICAgICAgc2xlZXBlciA9IHNlbGYubmV3X3Rhc2sobG9vcCwgc2xlZXAoNTAwMCkpCiAgICAgICAgICAgICBsb29wLmNhbGxfbGF0ZXIoMC4xLCBzbGVlcGVyLmNhbmNlbCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNsZWVwZXIKQEAgLTEyNDYsMTMgKzEyNjAsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjEsIGxvb3AudGltZSgpKQogCiAgICAgZGVmIHRlc3RfdGFza19jYW5jZWxfd2FpdGVyX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dAogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29ybygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydElzKHRhc2suX2Z1dF93YWl0ZXIsIGZ1dCkKIApAQCAtMTI2OSw3ICsxMjgzLDcgQEAKICAgICAgICAgICAgIHJldHVybiAna28nCiAKICAgICAgICAgZ2VuID0gbm90bXVjaCgpCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soZ2VuLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBnZW4pCiAgICAgICAgIHRhc2suc2V0X3Jlc3VsdCgnb2snKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCB0YXNrLl9zdGVwKQpAQCAtMTMwNSw3ICsxMzE5LDcgQEAKICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3VsdAogICAgICAgICAgICAgcmVzdWx0ID0geWllbGQgZnJvbSBmdXQKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHdhaXRfZm9yX2Z1dHVyZSgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB3YWl0X2Zvcl9mdXR1cmUoKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmdXQuY2JfYWRkZWQpCiAKQEAgLTEzMjEsNyArMTMzNSw3IEBACiAgICAgICAgIGRlZiBub3RtdXRjaCgpOgogICAgICAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbigpCiAKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzayhub3RtdXRjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdXRjaCgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYXNlRXhjZXB0aW9uLCB0YXNrLl9zdGVwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXNrLmRvbmUoKSkKQEAgLTEzNDksNyArMTM2Myw3IEBACiAgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBiYXNlX2V4YwogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sobm90bXV0Y2goKSwgbG9vcD1sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhsb29wLCBub3RtdXRjaCgpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KGxvb3ApCiAKICAgICAgICAgdGFzay5jYW5jZWwoKQpAQCAtMTM3OSw3ICsxMzkzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3luY2lvLmlzY29yb3V0aW5lZnVuY3Rpb24obW9jay5Nb2NrKCkpKQogCiAgICAgZGVmIHRlc3RfeWllbGRfdnNfeWllbGRfZnJvbShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB3YWl0X2Zvcl9mdXR1cmUoKToKQEAgLTE0MjMsNyArMTQzNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAndGVzdCcpCiAKICAgICBkZWYgdGVzdF9jb3JvdXRpbmVfbm9uX2dlbl9mdW5jdGlvbl9yZXR1cm5fZnV0dXJlKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZ1bmMoKToKQEAgLTE0MzMsNDkgKzE0NDcsNTMgQEAKICAgICAgICAgZGVmIGNvcm8oKToKICAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KCd0ZXN0JykKIAotICAgICAgICB0MSA9IGFzeW5jaW8uVGFzayhmdW5jKCksIGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0MiA9IGFzeW5jaW8uVGFzayhjb3JvKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0MSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBmdW5jKCkpCisgICAgICAgIHQyID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm8oKSkKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodDIucmVzdWx0KCkpCiAKICAgICBkZWYgdGVzdF9jdXJyZW50X3Rhc2soc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBUYXNrID0gc2VsZi5fX2NsYXNzX18uVGFzaworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGNvcm8obG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2spCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29ybyhzZWxmLmxvb3ApLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKHNlbGYubG9vcCkpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKIAogICAgIGRlZiB0ZXN0X2N1cnJlbnRfdGFza193aXRoX2ludGVybGVhdmluZ190YXNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisgICAgICAgIFRhc2sgPSBzZWxmLl9fY2xhc3NfXy5UYXNrCiAKLSAgICAgICAgZnV0MSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKworICAgICAgICBmdXQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvMShsb29wKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0MQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2sxKQogICAgICAgICAgICAgZnV0Mi5zZXRfcmVzdWx0KFRydWUpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvMihsb29wKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMikKICAgICAgICAgICAgIGZ1dDEuc2V0X3Jlc3VsdChUcnVlKQogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQyCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCiAKLSAgICAgICAgdGFzazEgPSBhc3luY2lvLlRhc2soY29ybzEoc2VsZi5sb29wKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2syID0gYXN5bmNpby5UYXNrKGNvcm8yKHNlbGYubG9vcCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrMSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMShzZWxmLmxvb3ApKQorICAgICAgICB0YXNrMiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMihzZWxmLmxvb3ApKQogCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0KCh0YXNrMSwgdGFzazIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICAjIFNvbWUgdGhvcm91Z2ggdGVzdHMgZm9yIGNhbmNlbGxhdGlvbiBwcm9wYWdhdGlvbiB0aHJvdWdoCiAgICAgIyBjb3JvdXRpbmVzLCB0YXNrcyBhbmQgd2FpdCgpLgpAQCAtMTQ4Myw3ICsxNTAxLDcgQEAKICAgICBkZWYgdGVzdF95aWVsZF9mdXR1cmVfcGFzc2VzX2NhbmNlbChzZWxmKToKICAgICAgICAgIyBDYW5jZWxsaW5nIG91dGVyKCkgY2FuY2VscyBpbm5lcigpIGNhbmNlbHMgd2FpdGVyLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTUxNyw3ICsxNTM1LDcgQEAKICAgICAgICAgIyBDYW5jZWxsaW5nIG91dGVyKCkgbWFrZXMgd2FpdCgpIHJldHVybiBlYXJseSwgbGVhdmVzIGlubmVyKCkKICAgICAgICAgIyBydW5uaW5nLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTU0MSwxNCArMTU1OSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb29mLCAxKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX3Jlc3VsdChzZWxmKToKLSAgICAgICAgaW5uZXIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgaW5uZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKGlubmVyKQogICAgICAgICBpbm5lci5zZXRfcmVzdWx0KDQyKQogICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKG91dGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICBpbm5lciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBpbm5lciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIG91dGVyID0gYXN5bmNpby5zaGllbGQoaW5uZXIpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBleGMgPSBSdW50aW1lRXJyb3IoJ2V4cGVjdGVkJykKQEAgLTE1NTcsNyArMTU3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3V0ZXIuZXhjZXB0aW9uKCksIGV4YykKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIGlubmVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGlubmVyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChpbm5lcikKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIGlubmVyLmNhbmNlbCgpCkBAIC0xNTY1LDcgKzE1ODMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0ZXIuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfc2hvcnRjdXQoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNoaWVsZChmdXQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCkBAIC0xNTczLDcgKzE1OTEsNyBAQAogICAgIGRlZiB0ZXN0X3NoaWVsZF9lZmZlY3Qoc2VsZik6CiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIGRvZXMgbm90IGFmZmVjdCBpbm5lcigpLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTU5Nyw4ICsxNjE1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9vZiwgMSkKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9nYXRoZXIoc2VsZik6Ci0gICAgICAgIGNoaWxkMSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBjaGlsZDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgcGFyZW50ID0gYXN5bmNpby5nYXRoZXIoY2hpbGQxLCBjaGlsZDIsIGxvb3A9c2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKHBhcmVudCwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQpAQCAtMTYxMSw4ICsxNjI5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQucmVzdWx0KCksIFsxLCAyXSkKIAogICAgIGRlZiB0ZXN0X2dhdGhlcl9zaGllbGQoc2VsZik6Ci0gICAgICAgIGNoaWxkMSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBjaGlsZDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgaW5uZXIxID0gYXN5bmNpby5zaGllbGQoY2hpbGQxLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgaW5uZXIyID0gYXN5bmNpby5zaGllbGQoY2hpbGQyLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgcGFyZW50ID0gYXN5bmNpby5nYXRoZXIoaW5uZXIxLCBpbm5lcjIsIGxvb3A9c2VsZi5sb29wKQpAQCAtMTYyOCw3ICsxNjQ2LDcgQEAKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICAjIGFzX2NvbXBsZXRlZCgpIGV4cGVjdHMgYSBsaXN0IG9mIGZ1dHVyZXMsIG5vdCBhIGZ1dHVyZSBpbnN0YW5jZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUsCkBAIC0xNjM5LDcgKzE2NTcsNyBAQAogICAgICAgICBjb3JvLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3dhaXRfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICAjIHdhaXQoKSBleHBlY3RzIGEgbGlzdCBvZiBmdXR1cmVzLCBub3QgYSBmdXR1cmUgaW5zdGFuY2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlLApAQCAtMTY2Niw3ICsxNjg0LDcgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dAogCiAgICAgICAgICAgICAjIEEgY29tcGxldGVkIEZ1dHVyZSB1c2VkIHRvIHJ1biB0aGUgY29yb3V0aW5lLgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoTm9uZSkKIAogICAgICAgICAgICAgIyBDYWxsIHRoZSBjb3JvdXRpbmUuCkBAIC0xNzAwLDE1ICsxNzE4LDE1IEBACiAKICAgICAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICAgICAgZGVmIHQyKCk6Ci0gICAgICAgICAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICAgICAgICAgIGFzeW5jaW8uVGFzayh0MyhmKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHQzKGYpKQogICAgICAgICAgICAgICAgIHJldHVybiAoeWllbGQgZnJvbSBmKQogCiAgICAgICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgICAgIGRlZiB0MyhmKToKICAgICAgICAgICAgICAgICBmLnNldF9yZXN1bHQoKDEsIDIsIDMpKQogCi0gICAgICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKHQxKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0MSgpKQogICAgICAgICAgICAgdmFsID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICgxLCAyLCAzKSkKIApAQCAtMTc3MSw5ICsxNzg5LDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUFkzNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBweXRob24gMy40IG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9sb2dfZGVzdHJveWVkX3BlbmRpbmdfdGFzayhzZWxmKToKKyAgICAgICAgVGFzayA9IHNlbGYuX19jbGFzc19fLlRhc2sKKwogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGtpbGxfbWUobG9vcCk6Ci0gICAgICAgICAgICBmdXR1cmUgPSBhc3luY2lvLkZ1dHVyZShsb29wPWxvb3ApCisgICAgICAgICAgICBmdXR1cmUgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0dXJlCiAgICAgICAgICAgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBvbmx5IHJlZmVyZW5jZSB0byBraWxsX21lKCkgdGFzayBpcwogICAgICAgICAgICAgIyB0aGUgVGFzay5fd2FrZXVwKCkgbWV0aG9kIGluIGZ1dHVyZS5fY2FsbGJhY2tzCkBAIC0xNzg2LDcgKzE4MDYsNyBAQAogICAgICAgICAjIHNjaGVkdWxlIHRoZSB0YXNrCiAgICAgICAgIGNvcm8gPSBraWxsX21lKHNlbGYubG9vcCkKICAgICAgICAgdGFzayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShjb3JvLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2lvLlRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwge3Rhc2t9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwge3Rhc2t9KQogCiAgICAgICAgICMgZXhlY3V0ZSB0aGUgdGFzayBzbyBpdCB3YWl0cyBmb3IgZnV0dXJlCiAgICAgICAgIHNlbGYubG9vcC5fcnVuX29uY2UoKQpAQCAtMTgwMSw3ICsxODIxLDcgQEAKICAgICAgICAgIyBubyBtb3JlIHJlZmVyZW5jZSB0byBraWxsX21lKCkgdGFzazogdGhlIHRhc2sgaXMgZGVzdHJveWVkIGJ5IHRoZSBHQwogICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNpby5UYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwgc2V0KCkpCiAKICAgICAgICAgbW9ja19oYW5kbGVyLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmLmxvb3AsIHsKICAgICAgICAgICAgICdtZXNzYWdlJzogJ1Rhc2sgd2FzIGRlc3Ryb3llZCBidXQgaXQgaXMgcGVuZGluZyEnLApAQCAtMTg2NiwxMCArMTg4NiwxMCBAQAogICAgIGRlZiB0ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29yb3V0aW5lX2Z1bmN0aW9uKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm91dGluZV9mdW5jdGlvbigpKQogICAgICAgICBsaW5lbm8gPSBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gLSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrLCBsaXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhc2suX3NvdXJjZV90cmFjZWJhY2tbLTFdWzozXSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrWy0yXVs6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjaycpKQpAQCAtMTg4MSw3ICsxOTAxLDcgQEAKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGJsb2NraW5nX2Nvcm91dGluZSgpOgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgICAgICAjIEJsb2NrOiBmdXQgcmVzdWx0IGlzIG5ldmVyIHNldAogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIApAQCAtMTkwOCw3ICsxOTI4LDcgQEAKICAgICAgICAgbG9vcCA9IGFzeW5jaW8ubmV3X2V2ZW50X2xvb3AoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAobG9vcC5jbG9zZSkKIAotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPWxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShsb29wKQogICAgICAgICAjIFRoZSBpbmRpcmVjdGlvbiBmdXQtPmNoaWxkX2Nvcm8gaXMgbmVlZGVkIHNpbmNlIG90aGVyd2lzZSB0aGUKICAgICAgICAgIyBnYXRoZXJpbmcgdGFzayBpcyBkb25lIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIGNoaWxkIGZ1dHVyZQogICAgICAgICBkZWYgY2hpbGRfY29ybygpOgpAQCAtMTkzMiw2ICsxOTUyLDE3MiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdhdGhlcl90YXNrLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdhdGhlcl90YXNrLnJlc3VsdCgpLCBbNDJdKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4ODQzCisKKyAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCisgICAgICAgIGRlZiBtYWluKCk6CisgICAgICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGZvbygpKQorICAgICAgICAgICAgeWllbGQgICMgc2tpcCBvbmUgbG9vcCBpdGVyYXRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHRhc2suZXhjZXB0aW9uKCkuX190cmFjZWJhY2tfXykKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKG1haW4oKSkKKworICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCisgICAgZGVmIHRlc3RfZXJyb3JfaW5fY2FsbF9zb29uKHNlbGYsIG1fbG9nKToKKyAgICAgICAgZGVmIGNhbGxfc29vbihjYWxsYmFjaywgKmFyZ3MpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uID0gY2FsbF9zb29uCisKKyAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1fbG9nLmVycm9yLmNhbGxlZCkKKyAgICAgICAgbWVzc2FnZSA9IG1fbG9nLmVycm9yLmNhbGxfYXJnc1swXVswXQorICAgICAgICBzZWxmLmFzc2VydEluKCdUYXNrIHdhcyBkZXN0cm95ZWQgYnV0IGl0IGlzIHBlbmRpbmcnLCBtZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5UYXNrLmFsbF90YXNrcyhzZWxmLmxvb3ApLCBzZXQoKSkKKworCitkZWYgYWRkX3N1YmNsYXNzX3Rlc3RzKGNscyk6CisgICAgQmFzZVRhc2sgPSBjbHMuVGFzaworICAgIEJhc2VGdXR1cmUgPSBjbHMuRnV0dXJlCisKKyAgICBpZiBCYXNlVGFzayBpcyBOb25lIG9yIEJhc2VGdXR1cmUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIGNscworCisgICAgY2xhc3MgQ29tbW9uRnV0dXJlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGE6IDApCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ19zY2hlZHVsZV9jYWxsYmFja3MnXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKworICAgICAgICBkZWYgYWRkX2RvbmVfY2FsbGJhY2soc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYWxsc1snYWRkX2RvbmVfY2FsbGJhY2snXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5hZGRfZG9uZV9jYWxsYmFjaygqYXJncykKKworICAgIGNsYXNzIFRhc2soQ29tbW9uRnV0dXJlLCBCYXNlVGFzayk6CisgICAgICAgIGRlZiBfc3RlcChzZWxmLCAqYXJncyk6CisgICAgICAgICAgICBzZWxmLmNhbGxzWydfc3RlcCddICs9IDEKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9zdGVwKCphcmdzKQorCisgICAgICAgIGRlZiBfd2FrZXVwKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ193YWtldXAnXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fd2FrZXVwKCphcmdzKQorCisgICAgY2xhc3MgRnV0dXJlKENvbW1vbkZ1dHVyZSwgQmFzZUZ1dHVyZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfY3Rhc2tfY2Z1dHVyZShzZWxmKToKKyAgICAgICAgZnV0ID0gc2VsZi5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24obGFtYmRhOiBmdXQuc2V0X3Jlc3VsdCgnc3BhbScpKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAorCisgICAgICAgIHRhc2sgPSBzZWxmLlRhc2soZnVuYygpLCBsb29wPXNlbGYubG9vcCkKKworICAgICAgICByZXN1bHQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICdzcGFtJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZGljdCh0YXNrLmNhbGxzKSwKKyAgICAgICAgICAgIHsnX3N0ZXAnOiAyLCAnX3dha2V1cCc6IDEsICdhZGRfZG9uZV9jYWxsYmFjayc6IDEsCisgICAgICAgICAgICAgJ19zY2hlZHVsZV9jYWxsYmFja3MnOiAxfSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZGljdChmdXQuY2FsbHMpLAorICAgICAgICAgICAgeydhZGRfZG9uZV9jYWxsYmFjayc6IDEsICdfc2NoZWR1bGVfY2FsbGJhY2tzJzogMX0pCisKKyAgICAjIEFkZCBwYXRjaGVkIFRhc2sgJiBGdXR1cmUgYmFjayB0byB0aGUgdGVzdCBjYXNlCisgICAgY2xzLlRhc2sgPSBUYXNrCisgICAgY2xzLkZ1dHVyZSA9IEZ1dHVyZQorCisgICAgIyBBZGQgYW4gZXh0cmEgdW5pdC10ZXN0CisgICAgY2xzLnRlc3Rfc3ViY2xhc3Nlc19jdGFza19jZnV0dXJlID0gdGVzdF9zdWJjbGFzc2VzX2N0YXNrX2NmdXR1cmUKKworICAgICMgRGlzYWJsZSB0aGUgInRlc3RfdGFza19zb3VyY2VfdHJhY2ViYWNrIiB0ZXN0CisgICAgIyAodGhlIHRlc3QgaXMgaGFyZGNvZGVkIGZvciBhIHBhcnRpY3VsYXIgY2FsbCBzdGFjaywgd2hpY2gKKyAgICAjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmb3IgVGFzayBzdWJjbGFzc2VzKQorICAgIGNscy50ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjayA9IE5vbmUKKworICAgIHJldHVybiBjbHMKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitjbGFzcyBDVGFza19DRnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSBnZXRhdHRyKHRhc2tzLCAnX0NUYXNrJywgTm9uZSkKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorQGFkZF9zdWJjbGFzc190ZXN0cworY2xhc3MgQ1Rhc2tfQ0Z1dHVyZV9TdWJjbGFzc1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSBnZXRhdHRyKHRhc2tzLCAnX0NUYXNrJywgTm9uZSkKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ1Rhc2tfUHlGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IGdldGF0dHIodGFza3MsICdfQ1Rhc2snLCBOb25lKQorICAgIEZ1dHVyZSA9IGZ1dHVyZXMuX1B5RnV0dXJlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgUHlUYXNrX0NGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IHRhc2tzLl9QeVRhc2sKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworY2xhc3MgUHlUYXNrX1B5RnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSB0YXNrcy5fUHlUYXNrCisgICAgRnV0dXJlID0gZnV0dXJlcy5fUHlGdXR1cmUKKworCitAYWRkX3N1YmNsYXNzX3Rlc3RzCitjbGFzcyBQeVRhc2tfUHlGdXR1cmVfU3ViY2xhc3NUZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gdGFza3MuX1B5VGFzaworICAgIEZ1dHVyZSA9IGZ1dHVyZXMuX1B5RnV0dXJlCisKKworY2xhc3MgR2VuZXJpY1Rhc2tUZXN0cyh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Z1dHVyZV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXN5bmNpby5UYXNrLCBhc3luY2lvLkZ1dHVyZSkpCisKKyAgICBkZWYgdGVzdF9hc3luY2lvX21vZHVsZV9jb21waWxlZChzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIG9mIGNpcmN1bGFyIGltcG9ydHMgaXQncyBlYXN5IHRvIG1ha2UgX2FzeW5jaW8KKyAgICAgICAgIyBtb2R1bGUgbm9uLWltcG9ydGFibGUuICBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgdGhhdCB3aWxsCisgICAgICAgICMgZmFpbCBvbiBzeXN0ZW1zIHdoZXJlIEMgbW9kdWxlcyB3ZXJlIHN1Y2Nlc3NmdWxseSBjb21waWxlZAorICAgICAgICAjIChoZW5jZSB0aGUgdGVzdCBmb3IgX2Z1bmN0b29scyksIGJ1dCBfYXN5bmNpbyBzb21laG93IGRpZG4ndC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9mdW5jdG9vbHMKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBfYXN5bmNpbworICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnX2FzeW5jaW8gbW9kdWxlIGlzIG1pc3NpbmcnKQorCiAKIGNsYXNzIEdhdGhlclRlc3RzQmFzZToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggMzg1NzkxNi4uNTFjNjU3MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0xMSw2ICsxMSw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC05Miw3ICs5NSw5IEBACiAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc29jay5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QuCiAgICAgICAgIHN1cHBvcnQudW5saW5rKGFkZHIpCi0gICAgc29jay5iaW5kKGFkZHIpCisgICAgICAgIHN1cHBvcnQuYmluZF91bml4X3NvY2tldChzb2NrLCBhZGRyKQorICAgIGVsc2U6CisgICAgICAgIHNvY2suYmluZChhZGRyKQogCiAKIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQppbmRleCA1MDkzZTlkLi41OTMwZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQpAQCAtODMsNiArODMsMTAgQEAKICAgICAgICAgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIHJldHVybiBhdWdfdGVzdDMoc2VsZi52YWwgKyB2YWwpCiAKKyAgICAgICAgY2xhc3MgYXVnX3Rlc3Q0KGF1Z190ZXN0Myk6CisgICAgICAgICAgICAiIiJCbG9ja3MgaW5oZXJpdGFuY2UsIGFuZCBmYWxsYmFjayB0byBfX2FkZF9fIiIiCisgICAgICAgICAgICBfX2lhZGRfXyA9IE5vbmUKKwogICAgICAgICB4ID0gYXVnX3Rlc3QoMSkKICAgICAgICAgeSA9IHgKICAgICAgICAgeCArPSAxMApAQCAtMTA2LDYgKzExMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnZhbCwgMTMpCiAKKyAgICAgICAgeCA9IGF1Z190ZXN0NCg0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB4ICs9IDEwCisKIAogICAgIGRlZiB0ZXN0Q3VzdG9tTWV0aG9kczIodGVzdF9zZWxmKToKICAgICAgICAgb3V0cHV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKaW5kZXggN2M5OGM0Ni4uMjdkNTE0ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IG9zCiBmcm9tIHBsYXRmb3JtIGltcG9ydCBzeXN0ZW0gYXMgcGxhdGZvcm1fc3lzdGVtCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggNDBhYzliZi4uNjEzM2JiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTE0LDcgKzE0LDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3lzCi1pbXBvcnQgZnVuY3Rvb2xzCiAKICMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAogIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQppbmRleCAwMzQyNDVkLi42YjNlNDM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKQEAgLTE1OSwxMSArMTU5LDI1IEBACiAgICAgICAgICMgVGhlbiBjYWxjdWxhdGUgdGhlIGhleGJpbjQgYmluYXJ5LXRvLUFTQ0lJIHRyYW5zbGF0aW9uCiAgICAgICAgIHJsZSA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KHNlbGYuZGF0YSkKICAgICAgICAgYSA9IGJpbmFzY2lpLmIyYV9ocXgoc2VsZi50eXBlMnRlc3QocmxlKSkKKwogICAgICAgICBiLCBfID0gYmluYXNjaWkuYTJiX2hxeChzZWxmLnR5cGUydGVzdChhKSkKICAgICAgICAgcmVzID0gYmluYXNjaWkucmxlZGVjb2RlX2hxeChiKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZWxmLnJhd2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ybGUoc2VsZik6CisgICAgICAgICMgdGVzdCByZXBldGl0aW9uIHdpdGggYSByZXBldGl0aW9uIGxvbmdlciB0aGFuIHRoZSBsaW1pdCBvZiAyNTUKKyAgICAgICAgZGF0YSA9IChiJ2EnICogMTAwICsgYidiJyArIGInYycgKiAzMDApCisKKyAgICAgICAgZW5jb2RlZCA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidhXHg5MGQnICAgICAgIyAnYScgKiAxMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidiJyAgICAgICAgICAgIyAnYicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MFx4ZmYnICAgIyAnYycgKiAyNTUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MC0nKSkgICAgIyAnYycgKiA0NQorCisgICAgICAgIGRlY29kZWQgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgZGF0YSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgIyB0ZXN0IGhleGxpZmljYXRpb24KICAgICAgICAgcyA9IGIne3NcMDA1XDAwMFwwMDBcMDAwd29ybGRpXDAwMlwwMDBcMDAwXDAwMHNcMDA1XDAwMFwwMDBcMDAwaGVsbG9pXDAwMVwwMDBcMDAwXDAwMDAnCkBAIC0zMzEsNiArMzQ1LDE2IEBACiAgICAgICAgICAgICAjIG5vbi1BU0NJSSBzdHJpbmcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEyYiwgIlx4ODAiKQogCisgICAgZGVmIHRlc3RfYjJhX2Jhc2U2NF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM1NzogdGVzdCBuZXdsaW5lIHBhcmFtZXRlcgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PScpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQppbmRleCA5ZDRjODVhLi4yMWY0NDYzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQpAQCAtNCw3ICs0LDYgQEAKICAgIEJhc2VkIG9uIGFuIG9yaWdpbmFsIHRlc3QgYnkgUm9nZXIgRS4gTWFzc2UuCiAiIiIKIGltcG9ydCBiaW5oZXgKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weSBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKaW5kZXggZTlkYmRkYy4uM2VkMDE4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CkBAIC0yLDcgKzIsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIG5lLCBsdCwgZ3QsIGxlLCBnZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIGxlLCBuZQogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEKIAogZGVmIGdjZChhLCBiKToKQEAgLTM4OCw2ICszODgsNTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShlcSwgQiwgViksIFsnQi5fX2VxX18nLCAnVi5fX2VxX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShsZSwgQiwgViksIFsnQi5fX2xlX18nLCAnVi5fX2dlX18nXSkKIAorY2xhc3MgU3VwRXEob2JqZWN0KToKKyAgICAiIiJDbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5IiIiCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKK2NsYXNzIFMoU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIEYob2JqZWN0KToKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IHNob3VsZCBmYWxsIGJhY2siIiIKKworY2xhc3MgWChvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIFNOKFN1cEVxKToKKyAgICAiIiJTdWJjbGFzcyBvZiBTdXBFcSB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgWE46CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSwgYnV0IG5vdCBub24tZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBfX25lX18gPSBOb25lCisKK2NsYXNzIEZhbGxiYWNrQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgTm9uZSBtZXRob2QgYmxvY2tpbmciIiIKKworICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX3JtZXRob2RfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIGYsIHMsIHggPSBTdXBFcSgpLCBGKCksIFMoKSwgWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGUpCisgICAgICAgICMgbGVmdCBvcGVyYW5kIGlzIGNoZWNrZWQgZmlyc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCB4LCBlKQorICAgICAgICAjIFMgaXMgYSBzdWJjbGFzcywgc28gaXQncyBhbHdheXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBlLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBzLCBlKQorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfbmVfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIHNuLCB4biA9IFN1cEVxKCksIFNOKCksIFhOKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIGUsIHNuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCBzbiwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IHhuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCB4biwgZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weSBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQppbmRleCBkMzBhM2I5Li45ZjhmMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CkBAIC05Niw2ICs5NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLzEsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UvMSwgRmFsc2UpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUxLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUyLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UlMSwgRmFsc2UpCisKICAgICAgICAgZm9yIGIgaW4gRmFsc2UsIFRydWU6CiAgICAgICAgICAgICBmb3IgaSBpbiAwLCAxLCAyOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYioqaSwgaW50KGIpKippKQpAQCAtMzMzLDYgKzM0MCwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uKSBhcyBlX2xlbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZV9ib29sKSwgc3RyKGVfbGVuKSkKIAorICAgIGRlZiB0ZXN0X2Jsb2NrZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBBKCkpCisKKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMAorICAgICAgICAgICAgX19ib29sX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYm9vbCwgQigpKQorCiAgICAgZGVmIHRlc3RfcmVhbF9hbmRfaW1hZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLnJlYWwsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5pbWFnLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQppbmRleCAyZWVmOWZjLi5iODNmMmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpAQCAtMTYsNyArMTYsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zLCBwcm9kdWN0CiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUsIGNob2ljZQotZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzeXMsIGFycmF5LCBpbwogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQppbmRleCA5OTMxYzg0Li5mZWE2ZGE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgc2VsZi5kcml2ZV9vbmUoYiIxMjM0NTY3ODkwXDAwXDAxXDAyXDAzXDA0XDA1XDA2IikKIAogICAgIGRlZiB0ZXN0X251bGxwYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuZHJpdmVfb25lKGJ5dGVzKDEwMDApKQorICAgICAgICBzZWxmLmRyaXZlX29uZShiJ1wwJyAqIDEwMDApCiAKIAogY2xhc3MgQ0J1ZmZlclNpemVUZXN0KEJ1ZmZlclNpemVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggMGIwMzM0MC4uYTc5MjA5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtODIsNyArODIsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICAgICAgKCcnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICBcdFx0ICAnLCBWYWx1ZUVycm9yKSwKLSAgICAgICAgKHN0cihiJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKKyAgICAgICAgKHN0cihicidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCiAgICAgICAgIChjaHIoMHgyMDApLCBWYWx1ZUVycm9yKSwKIF0KIApAQCAtMTcwOCwyMSArMTcwOCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguc3BhbSgpLCAnc3BhbTQyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2J5dGVzKDIsICdsaXR0bGUnKSwgYidceDJhXHgwMCcpCiAKLSAgICBkZWYgdGVzdF90eXBlX25ld19rZXl3b3JkcyhzZWxmKToKLSAgICAgICAgY2xhc3MgQjoKLSAgICAgICAgICAgIGRlZiBoYW0oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdoYW0lZCcgJSBzZWxmCi0gICAgICAgIEMgPSB0eXBlLl9fbmV3X18odHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlcz0oQiwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PXsnc3BhbSc6IGxhbWJkYSBzZWxmOiAnc3BhbSVzJyAlIHNlbGZ9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICdDJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fcXVhbG5hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19tb2R1bGVfXywgX19uYW1lX18pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChCLCBpbnQpKQotICAgICAgICBzZWxmLmFzc2VydElzKEMuX19iYXNlX18sIGludCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbScsIEMuX19kaWN0X18pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2hhbScsIEMuX19kaWN0X18pCisgICAgZGVmIHRlc3RfdHlwZV9ub2t3YXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZSgnYScsICgpLCB7fSwgeD01KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIGRpY3Q9e30pCiAKICAgICBkZWYgdGVzdF90eXBlX25hbWUoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluICdBJywgJ1x4YzQnLCAnXFUwMDAxZjQwZCcsICdCLkEnLCAnNDInLCAnJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IDMyODhhNWIuLmExMDNhN2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtNCw2ICs0LDcgQEAKIHRoZSBsYXR0ZXIgc2hvdWxkIGJlIG1vZGVybml6ZWQpLgogIiIiCiAKK2ltcG9ydCBhcnJheQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTgxLDYgKzgyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LCBbSW5kZXhhYmxlKC0xKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LCBbSW5kZXhhYmxlKDI1NildKQogCisgICAgZGVmIHRlc3RfZnJvbV9idWZmZXIoc2VsZik6CisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChhcnJheS5hcnJheSgnQicsIFsxLCAyLCAzXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYiJceDAxXHgwMlx4MDMiKQorCisgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI5MTU5CisgICAgICAgICMgRmFsbGJhY2sgd2hlbiBfX2luZGV4X18gcmFpc2VzIGV4Y2VwdGlvbiBvdGhlciB0aGFuIE92ZXJmbG93RXJyb3IKKyAgICAgICAgY2xhc3MgQihieXRlcyk6CisgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoQihiImZvb2JhciIpKSwgYiJmb29iYXIiKQorCiAgICAgZGVmIHRlc3RfZnJvbV9zc2l6ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdCgwKSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KDEpLCBiJ1x4MDAnKQpAQCAtMjE2LDcgKzIyOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgotICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCisgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgogICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVuYyksIHNhbXBsZSkKQEAgLTI2OSw2ICsyODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKDIwMCwgYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAzMDAgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAtMSBpbiBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHN5cy5tYXhzaXplKzEgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE5vbmUgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGZsb2F0KG9yZCgnYScpKSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogImEiIGluIGIpCkBAIC0zMDAsNiArMzE0LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICdceDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJzEyICAgXHgwMCAgIDM0JykKIAorICAgICAgICBmb3IgZGF0YSwgcG9zIGluICgKKyAgICAgICAgICAgICMgaW52YWxpZCBmaXJzdCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgeDQgNTYnLCAzKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBzZWNvbmQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAoJzEyIDN4IDU2JywgNCksCisgICAgICAgICAgICAjIHR3byBpbnZhbGlkIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICgnMTIgeHkgNTYnLCAzKSwKKyAgICAgICAgICAgICMgdGVzdCBub24tQVNDSUkgc3RyaW5nCisgICAgICAgICAgICAoJzEyIDNceGZmIDU2JywgNCksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2F0IHBvc2l0aW9uICVzJyAlIHBvcywgc3RyKGNtLmV4Y2VwdGlvbikpCisKICAgICBkZWYgdGVzdF9oZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCwgMSkKQEAgLTY3NCw2ICs3MDIsMzcgQEAKICAgICAgICAgdGVzdC5zdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIHNlbGYudHlwZTJ0ZXN0KQogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIHNlbGYudHlwZTJ0ZXN0KQogCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHJvc2V0dGEgPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKKyAgICAgICAgcm9zZXR0YVtvcmQoJ28nKV0gPSBvcmQoJ2UnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIudHJhbnNsYXRlLCBieXRlcyhyYW5nZSgyNTUpKSkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSkKKyAgICAgICAgZCA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKworICAgICAgICAjIHRlc3QgZGVsZXRlIGFzIGEga2V5d29yZCBhcmd1bWVudAorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlbGxlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGRlbGV0ZT1iJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGRlbGV0ZT1iJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCisKIAogY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwpAQCAtNzIyLDMxICs3ODEsMTQyIEBACiAKICAgICAjIFRlc3QgUHlCeXRlc19Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKLSAgICAgICAgdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdCwgY19pbnQsIGNfY2hhcl9wCisgICAgICAgIGN0eXBlcyA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQorICAgICAgICBfdGVzdGNhcGkgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0CisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCAoCisgICAgICAgICAgICBjX2ludCwgY191aW50LAorICAgICAgICAgICAgY19sb25nLCBjX3Vsb25nLAorICAgICAgICAgICAgY19zaXplX3QsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfY2hhcl9wKQorCiAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCA9IHB5dGhvbmFwaS5QeUJ5dGVzX0Zyb21Gb3JtYXQKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIAorICAgICAgICAjIGJhc2ljIHRlc3RzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZm9ybWF0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidmb3JtYXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ0hlbGxvICVzICEnLCBiJ3dvcmxkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidIZWxsbyB3b3JsZCAhJykKIAorICAgICAgICAjIHRlc3QgZm9ybWF0dGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludCgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQob3JkKCdAJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9QCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDI1NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1ceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgxKSwgY19sb25nKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPTEgbGQ9MiB6ZD0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgtMSksIGNfbG9uZygtMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KC0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPS0xIGxkPS0yIHpkPS0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid1PSV1IGx1PSVsdSB6dT0lenUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3VpbnQoMTIzKSwgY191bG9uZyg0NTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCg3ODkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3U9MTIzIGx1PTQ1NiB6dT03ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgxMjMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2k9MTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidpPSVpJywgY19pbnQoLTEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0tMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSV4JywgY19pbnQoMHhhYmMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9YWJjJykKKworICAgICAgICBzaXplb2ZfcHRyID0gY3R5cGVzLnNpemVvZihjX2NoYXJfcCkKKworICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIFdpbmRvd3MgKE1TQ1JUKQorICAgICAgICAgICAgcHRyX2Zvcm1hdCA9ICcweCUwe31YJy5mb3JtYXQoMiAqIHNpemVvZl9wdHIpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAocHRyX2Zvcm1hdCAlIHB0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVU5JWCAoZ2xpYmMpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAnJSN4JyAlIHB0cgorCisgICAgICAgIHB0ciA9IDB4YWJjZGVmCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncHRyPSVwJywgY19jaGFyX3AocHRyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdwdHI9JyArIHB0cl9mb3JtYXR0ZXIocHRyKSkuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3M9JXMnLCBjX2NoYXJfcChiJ2NzdHInKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidzPWNzdHInKQorCisgICAgICAgICMgdGVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNpemVfbWF4ID0gY19zaXplX3QoLTEpLnZhbHVlCisgICAgICAgIGZvciBmb3JtYXRzdHIsIGN0eXBlc190eXBlLCB2YWx1ZSwgcHlfZm9ybWF0dGVyIGluICgKKyAgICAgICAgICAgIChiJyVkJywgY19pbnQsIF90ZXN0Y2FwaS5JTlRfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbGQnLCBjX2xvbmcsIF90ZXN0Y2FwaS5MT05HX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJWx1JywgY191bG9uZywgX3Rlc3RjYXBpLlVMT05HX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6ZCcsIGNfc3NpemVfdCwgX3Rlc3RjYXBpLlBZX1NTSVpFX1RfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclenUnLCBjX3NpemVfdCwgc2l6ZV9tYXgsIHN0ciksCisgICAgICAgICAgICAoYiclcCcsIGNfY2hhcl9wLCBzaXplX21heCwgcHRyX2Zvcm1hdHRlciksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChmb3JtYXRzdHIsIGN0eXBlc190eXBlKHZhbHVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X2Zvcm1hdHRlcih2YWx1ZSkuZW5jb2RlKCdhc2NpaScpKSwKKworICAgICAgICAjIHdpZHRoIGFuZCBwcmVjaXNpb24gKHdpZHRoIGlzIGN1cnJlbnRseSBpZ25vcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyU1cycsIGInYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJS4zcycsIGInYWJjZGVmJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnKQorCisgICAgICAgICMgJyUlJyBmb3JtYXR0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInWyVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJSVjJywgY19pbnQob3JkKCdfJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVzJykKKworICAgICAgICAjIEludmFsaWQgZm9ybWF0cyBhbmQgcGFydGlhbCBmb3JtYXR0aW5nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJScpLCBiJyUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSVzJyksIGInJXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ1slJV0nKSwgYidbJV0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLCBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSVpIHk9JScsIGNfaW50KDIpLCBjX2ludCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid4PTIgeT0lJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M6JWMnLCBjX2ludCgyNTUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M6XHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInczolcycsIGNfY2hhcl9wKGInY3N0cicpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M6Y3N0cicpCi0KLSAgICAgICAgIyBJc3N1ZSAjMTk5NjkKKyAgICAgICAgIyBJc3N1ZSAjMTk5Njk6ICVjIG11c3QgcmFpc2UgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCisgICAgICAgICMgbm90IGluIHRoZSByYW5nZSBbMDsgMjU1XQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQsIGInJWMnLCBjX2ludCgtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KDI1NikpCiAKKyAgICBkZWYgdGVzdF9ieXRlc19ibG9ja2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmF0aW9uQmxvY2tlZChsaXN0KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgaSA9IFswLCAxLCAyLCAzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGkpLCBiJ1x4MDBceDAxXHgwMlx4MDMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJdGVyYXRpb25CbG9ja2VkKGkpKQorCisgICAgICAgICMgQXQgbGVhc3QgaW4gQ1B5dGhvbiwgYmVjYXVzZSBieXRlcy5fX25ld19fIGFuZCB0aGUgQyBBUEkKKyAgICAgICAgIyBQeUJ5dGVzX0Zyb21PYmplY3QgaGF2ZSBkaWZmZXJlbnQgZmFsbGJhY2sgcnVsZXMsIGludGVnZXIKKyAgICAgICAgIyBmYWxsYmFjayBpcyBoYW5kbGVkIHNwZWNpYWxseSwgc28gdGVzdCBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBJbnRCbG9ja2VkKGludCk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMyksIGInXDBcMFwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgSW50QmxvY2tlZCgzKSkKKworICAgICAgICAjIFdoaWxlIHRoZXJlIGlzIG5vIHNlcGFyYXRlbHktZGVmaW5lZCBydWxlIGZvciBoYW5kbGluZyBieXRlcworICAgICAgICAjIHN1YmNsYXNzZXMgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBidWZmZXItaW50ZXJmYWNlIGNsYXNzZXMsCisgICAgICAgICMgYW4gaW1wbGVtZW50YXRpb24gbWF5IHdlbGwgc3BlY2lhbC1jYXNlIHRoZW0gKGFzIENQeXRob24gMi54CisgICAgICAgICMgc3RyIGRpZCksIHNvIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBCeXRlc1N1YmNsYXNzQmxvY2tlZChieXRlcyk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYidhYicpLCBiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgQnl0ZXNTdWJjbGFzc0Jsb2NrZWQoYidhYicpKQorCisgICAgICAgIGNsYXNzIEJ1ZmZlckJsb2NrZWQoYnl0ZWFycmF5KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgYmEsIGJiID0gYnl0ZWFycmF5KGInYWInKSwgQnVmZmVyQmxvY2tlZChiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiYSksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBiYikKKwogCiBjbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKQEAgLTEzMzIsMjQgKzE1MDIsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYiIlcyInICUgY2hyKGMpKQogCi0gICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBiID0gYidoZWxsbycKLSAgICAgICAgYmEgPSBieXRlYXJyYXkoYikKLSAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgwLCAyNTYpKQotICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIGMgPSBiYS50cmFuc2xhdGUoTm9uZSwgYidlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKLQogICAgIGRlZiB0ZXN0X3NwbGl0X2J5dGVhcnJheShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2EgYicuc3BsaXQobWVtb3J5dmlldyhiJyAnKSksIFtiJ2EnLCBiJ2InXSkKIApAQCAtMTUxMyw3ICsxNjY1LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYS55KSwgdHlwZShiLnkpKQogCi0gICAgdGVzdF9mcm9taGV4ID0gQmFzZUJ5dGVzVGVzdC50ZXN0X2Zyb21oZXgKKyAgICBkZWYgdGVzdF9mcm9taGV4KHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgc2VsZi50eXBlMnRlc3QpCisKKyAgICAgICAgY2xhc3MgQjEoc2VsZi5iYXNldHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBtZSA9IHNlbGYuYmFzZXR5cGUuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lCisKKyAgICAgICAgYiA9IEIxLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKKworICAgICAgICBjbGFzcyBCMihzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhc2V0eXBlIGlzIG5vdCBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYXNldHlwZS5fX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisKKyAgICAgICAgYiA9IEIyLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKIAogCiBjbGFzcyBCeXRlQXJyYXlTdWJjbGFzcyhieXRlYXJyYXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCAzNGY2NDc4Li5lYWE0NzJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGdsb2IKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNTUzLDEzICs1NTQsMjAgQEAKICAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKIAorICAgIGRlZiB0ZXN0T3BlblBhdGhMaWtlRmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggQloyRmlsZShmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5EQVRBKQorICAgICAgICB3aXRoIEJaMkZpbGUoZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKICAgICBkZWYgdGVzdERlY29tcHJlc3NMaW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBjb21wcmVzc2xldmVsPTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKIAogICAgICAgICBkZWNvbXAgPSBCWjJGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggYWNjZjI1MS4uMmJjNGZlZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC03MjIsMTkgKzcyMiwxOSBAQAogCiAgICAgZGVmIGFzc2VydEZhaWx1cmUoc2VsZiwgKmFyZ3MpOgogICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgJ2NhbGVuZGFyJywgKmFyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYidVc2FnZTonLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c2FnZTonLCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDIpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgogICAgICAgICBzdGRvdXQgPSBzZWxmLnJ1bl9vaygnLWgnKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInY2FsZW5kYXIucHknLCBzdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYictLWhlbHAnLCBzdGRvdXQpCiAKICAgICBkZWYgdGVzdF9pbGxlZ2FsX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcteicpCi0gICAgICAgICNzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJzIwMDQnLCAnc3BhbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXQnLCAnaHRtbCcsICcyMDA0JywgJzEnKQogCiAgICAgZGVmIHRlc3Rfb3V0cHV0X2N1cnJlbnRfeWVhcihzZWxmKToKQEAgLTgzNSw1ICs4MzUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICBiJ2hyZWY9ImN1c3RvbS5jc3MiIC8+Jywgc3Rkb3V0KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J21kYXlzJywgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnRVBPQ0gnLAorICAgICAgICAgICAgICAgICAgICAgJ01PTkRBWScsICdUVUVTREFZJywgJ1dFRE5FU0RBWScsICdUSFVSU0RBWScsICdGUklEQVknLAorICAgICAgICAgICAgICAgICAgICAgJ1NBVFVSREFZJywgJ1NVTkRBWScsICdkaWZmZXJlbnRfbG9jYWxlJywgJ2MnLAorICAgICAgICAgICAgICAgICAgICAgJ3Byd2VlaycsICd3ZWVrJywgJ2Zvcm1hdCcsICdmb3JtYXRzdHJpbmcnLCAnbWFpbid9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNhbGVuZGFyLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggMWVhZGQyMi4uNmMzNjI1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNCw4ICs0LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KK2ltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtMjIwLDggKzIyMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3Jlc3VsdCB3aXRoIGFuIGVycm9yIHNldFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidWYWx1ZUVycm9yXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ29mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInU3lzdGVtRXJyb3I6IDxidWlsdC1pbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ2Z1bmN0aW9uIHJldHVybl9yZXN1bHRfd2l0aF9lcnJvcj4gJwpAQCAtNDQyLDYgKzQ0NCw3IEBACiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQogCisKIGNsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9za2lwaXRlbShzZWxmKToKQEAgLTQ5MSwxMCArNDk0LDEwIEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkcyh0dXBsZV8xLCBkaWN0X2IsCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIChpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4pIgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gc2tpcHBlZApAQCAtNTAzLDcgKzUwNiw3IEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhlbXB0eV90dXBsZSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQogCkBAIC01MjQsNiArNTI3LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQogCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBwYXJzZSA9IF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMKKworICAgICAgICBwYXJzZSgoMSwgMiwgMyksIHt9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgpLCB7fSwgYidPfE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsIDIpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgZXhhY3RseSAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMSBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsIHInRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgXCQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098JE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCAnRW1wdHkga2V5d29yZCcpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJ2EnLCAnJ10pCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RUaHJlYWRTdGF0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU0OCw2ICs1NzcsNyBAQAogICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgdC5qb2luKCkKIAorCiBjbGFzcyBUZXN0X3Rlc3RjYXBpKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9fdGVzdGNhcGkoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpOgpAQCAtNTU2LDUgKzU4Niw4NSBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihfdGVzdGNhcGksIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHRlc3QoKQogCisKK2NsYXNzIFB5TWVtRGVidWdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgUFlUSE9OTUFMTE9DID0gJ2RlYnVnJworICAgICMgJzB4MDRjMDZlMCcgb3IgJzA0QzA2RTAnCisgICAgUFRSX1JFR0VYID0gcicoPzoweCk/WzAtOWEtZkEtRl0rJworCisgICAgZGVmIGNoZWNrKHNlbGYsIGNvZGUpOgorICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgb3V0ID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OTUFMTE9DPXNlbGYuUFlUSE9OTUFMTE9DKQorICAgICAgICBzdGRlcnIgPSBvdXQuZXJyCisgICAgICAgIHJldHVybiBzdGRlcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKKworICAgIGRlZiB0ZXN0X2J1ZmZlcl9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2J1ZmZlcl9vdmVyZmxvdygpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFIFwoMHhbMC05YS1mXXt7Mn19XCk6XG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCswOiAweDc4IFwqXCpcKiBPVUNIXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsxOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsyOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICAuKlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUiKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCwgZmxhZ3M9cmUuRE9UQUxMKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9hcGlfbWlzdXNlKHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKCdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fYXBpX21pc3VzZSgpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICNbMC05XSsgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIERhdGEgYXQgcDogY2IgY2IgY2IgLipcbiIKKyAgICAgICAgICAgICAgICAgciJcbiIKKyAgICAgICAgICAgICAgICAgciJGYXRhbCBQeXRob24gZXJyb3I6IGJhZCBJRDogQWxsb2NhdGVkIHVzaW5nIEFQSSAnbScsIHZlcmlmaWVkIHVzaW5nIEFQSSAncidcbiIpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KHB0cj1zZWxmLlBUUl9SRUdFWCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGVzdCByZXF1aXJlcyBhIEdJTCAobXVsdGl0aHJlYWRpbmcpJykKKyAgICBkZWYgY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYsIGNvZGUpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKGNvZGUpCisgICAgICAgIGV4cGVjdGVkID0gKCdGYXRhbCBQeXRob24gZXJyb3I6IFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAgICd3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3B5bWVtX21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5TWVtX01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisgICAgZGVmIHRlc3RfcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIERlYnVnIGhvb2tzIG11c3QgcmFpc2UgYW4gZXJyb3IgaWYgUHlPYmplY3RfTWFsbG9jKCkgaXMgY2FsbGVkCisgICAgICAgICMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKCknCisgICAgICAgIHNlbGYuY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKGNvZGUpCisKKworY2xhc3MgUHlNZW1NYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ21hbGxvY19kZWJ1ZycKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfUFlNQUxMT0MnKSA9PSAxLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgcHltYWxsb2MnKQorY2xhc3MgUHlNZW1QeW1hbGxvY0RlYnVnVGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICBQWVRIT05NQUxMT0MgPSAncHltYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIFB5X0RFQlVHJykKK2NsYXNzIFB5TWVtRGVmYXVsdFRlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgIyB0ZXN0IGRlZmF1bHQgYWxsb2NhdG9yIG9mIFB5dGhvbiBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlCisgICAgUFlUSE9OTUFMTE9DID0gJycKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCBhYjlmNmFiLi42MzczMjIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtNyw2ICs3LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CiAgICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0IHdpbGwgaGF2ZSByZWFsIHZhbHVlcyBpbiBzeXMuYXJndiwgd2hpY2gKQEAgLTE0Nyw3ICsxNDgsNyBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKICAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgcidjZ2lcLmVzY2FwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQpAQCAtNDczLDYgKzQ3NCwxMSBAQAogICAgICAgICAgICAgY2dpLnBhcnNlX2hlYWRlcignZm9ybS1kYXRhOyBuYW1lPSJmaWxlcyI7IGZpbGVuYW1lPSJmb1xcIm87YmFyIicpLAogICAgICAgICAgICAgKCJmb3JtLWRhdGEiLCB7Im5hbWUiOiAiZmlsZXMiLCAiZmlsZW5hbWUiOiAnZm8ibztiYXInfSkpCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibG9nZmlsZSIsICJsb2dmcCIsICJpbml0bG9nIiwgImRvbG9nIiwgIm5vbG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjbG9zZWxvZyIsICJsb2ciLCAibWF4bGVuIiwgInZhbGlkX2JvdW5kYXJ5In0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY2dpLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIEJPVU5EQVJZID0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTcyMTgzNzM3MzM1MDcwNTUyNjY4ODE2NDY4NCIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQppbmRleCA0MDY0YWVmLi4wZDQ1OTRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQpAQCAtOSw3ICs5LDcgQEAKIAogIiIiIyIKIAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgY29kZWNzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CmluZGV4IDFmODg0ZTUuLjA0NTFmYjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQpAQCAtNCw2ICs0LDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogSU5GID0gZmxvYXQoJ2luZicpCkBAIC0xNTQsNiArMTU2LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY21hdGguZSwgZV9leHBlY3RlZCwgcGxhY2VzPTksCiAgICAgICAgICAgICBtc2c9ImNtYXRoLmUgaXMge307IHNob3VsZCBiZSB7fSIuZm9ybWF0KGNtYXRoLmUsIGVfZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3RfaW5maW5pdHlfYW5kX25hbl9jb25zdGFudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mLnJlYWwsIG1hdGguaW5mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5pbWFnLCBtYXRoLmluZikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihjbWF0aC5uYW4ucmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuLmltYWcsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5uYW5qLnJlYWwsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuai5pbWFnKSkKKworICAgICAgICAjIENoZWNrIGNvbnNpc3RlbmN5IHdpdGggcmVwcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmYpLCAiaW5mIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLmluZmopLCAiaW5maiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW4pLCAibmFuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLm5hbmopLCAibmFuaiIpCisKICAgICBkZWYgdGVzdF91c2VyX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IGF1dG9tYXRpYyBjYWxsaW5nIG9mIF9fY29tcGxleF9fIGFuZCBfX2Zsb2F0X18gYnkgY21hdGgKICAgICAgICAgIyBmdW5jdGlvbnMKQEAgLTMxNSw2ICszMzQsMTggQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X3NwZWNpZmljX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBkZWYgcmVjdF9jb21wbGV4KHopOgogICAgICAgICAgICAgIiIiV3JhcHBlZCB2ZXJzaW9uIG9mIHJlY3QgdGhhdCBhY2NlcHRzIGEgY29tcGxleCBudW1iZXIgaW5zdGVhZCBvZgogICAgICAgICAgICAgdHdvIGZsb2F0IGFyZ3VtZW50cy4iIiIKQEAgLTMyOCw2ICszNTksMTIgQEAKICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6CiAgICAgICAgICAgICBhcmcgPSBjb21wbGV4KGFyLCBhaSkKICAgICAgICAgICAgIGV4cGVjdGVkID0gY29tcGxleChlciwgZWkpCisKKyAgICAgICAgICAgICMgU2tpcCBjZXJ0YWluIHRlc3RzIG9uIE9TIFggMTAuNC4KKyAgICAgICAgICAgIGlmIG9zeF92ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCBvc3hfdmVyc2lvbiA8ICgxMCwgNSk6CisgICAgICAgICAgICAgICAgaWYgaWQgaW4gU0tJUF9PTl9USUdFUjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgaWYgZm4gPT0gJ3JlY3QnOgogICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVjdF9jb21wbGV4CiAgICAgICAgICAgICBlbGlmIGZuID09ICdwb2xhcic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCAzZDJmNzY5Li5hZTJiY2Q0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIGlzX2FuZHJvaWQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgIGFzc2VydF9weXRob25fZmFpbHVyZSkKIApAQCAtNDMsNyArNDMsNyBAQAogCiAgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKICAgICAgICAgdmVyc2lvbiA9ICgnUHl0aG9uICVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKS5lbmNvZGUoImFzY2lpIikKLSAgICAgICAgZm9yIHN3aXRjaCBpbiAnLVYnLCAnLS12ZXJzaW9uJzoKKyAgICAgICAgZm9yIHN3aXRjaCBpbiAnLVYnLCAnLS12ZXJzaW9uJywgJy1WVic6CiAgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKHN3aXRjaCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLnN0YXJ0c3dpdGgodmVyc2lvbikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0LnN0YXJ0c3dpdGgodmVyc2lvbikpCkBAIC0xNzgsMTUgKzE3OCwxNiBAQAogICAgICAgICBpZiBub3Qgc3Rkb3V0LnN0YXJ0c3dpdGgocGF0dGVybik6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJWEgZG9lc24ndCBzdGFydCB3aXRoICVhIiAlIChzdGRvdXQsIHBhdHRlcm4pKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAndGVzdCBzcGVjaWZpYyB0byBNYWMgT1MgWCcpCi0gICAgZGVmIHRlc3Rfb3N4X3V0Zjgoc2VsZik6CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBvcgorICAgICAgICAgICAgICAgIGlzX2FuZHJvaWQpLCAndGVzdCBzcGVjaWZpYyB0byBNYWMgT1MgWCBhbmQgQW5kcm9pZCcpCisgICAgZGVmIHRlc3Rfb3N4X2FuZHJvaWRfdXRmOChzZWxmKToKICAgICAgICAgZGVmIGNoZWNrX291dHB1dCh0ZXh0KToKICAgICAgICAgICAgIGRlY29kZWQgPSB0ZXh0LmRlY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgICAgIGV4cGVjdGVkID0gYXNjaWkoZGVjb2RlZCkuZW5jb2RlKCdhc2NpaScpICsgYidcbicKIAogICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgICAgICMgQyBsb2NhbGUgZ2l2ZXMgQVNDSUkgbG9jYWxlIGVuY29kaW5nLCBidXQgUHl0aG9uIHVzZXMgVVRGLTgKLSAgICAgICAgICAgICMgdG8gcGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gTWFjIE9TIFgKKyAgICAgICAgICAgICMgdG8gcGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gTWFjIE9TIFggYW5kIEFuZHJvaWQuCiAgICAgICAgICAgICBlbnZbJ0xDX0FMTCddID0gJ0MnCiAKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKApAQCAtMzQ4LDggKzM0OSw5IEBACiAgICAgICAgICAgICB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpLl9fZW50ZXJfXygpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd4JykKICAgICAgICAgICAgIG9zLmNsb3NlKHN5cy5zdGRvdXQuZmlsZW5vKCkpIiIiCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIwLCByYykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uIGlnbm9yZWQgaW4uKlxuT1NFcnJvcjogLionKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IDkxOWYzNjEuLmUwNThlY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xMzksOSArMTM5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6Ci0gICAgICAgIGlmIG5vdCBfX2RlYnVnX186Ci0gICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKLSAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQorICAgICAgICBydW5fYXJncyA9IFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzLCBzY3JpcHRfbmFtZSwgKmV4YW1wbGVfYXJnc10KICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqcnVuX2FyZ3MsIF9faXNvbGF0ZWQ9RmFsc2UpCiAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCArIGVyciwgZXhwZWN0ZWRfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKQEAgLTQzMCw3ICs0MjksNyBAQAogICAgICAgICAgICAgKCdidWlsdGlucy54JywgYnInRXJyb3Igd2hpbGUgZmluZGluZyBtb2R1bGUgc3BlY2lmaWNhdGlvbi4qJwogICAgICAgICAgICAgICAgIGJyJ0F0dHJpYnV0ZUVycm9yJyksCiAgICAgICAgICAgICAoJ2J1aWx0aW5zLngueScsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKLSAgICAgICAgICAgICAgICBicidJbXBvcnRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCisgICAgICAgICAgICAgICAgYnInTW9kdWxlTm90Rm91bmRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCiAgICAgICAgICAgICAoJ29zLnBhdGgnLCBicidsb2FkZXIuKmNhbm5vdCBoYW5kbGUnKSwKICAgICAgICAgICAgICgnaW1wb3J0bGliJywgYnInTm8gbW9kdWxlIG5hbWVkLionCiAgICAgICAgICAgICAgICAgYnInaXMgYSBwYWNrYWdlIGFuZCBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDMzOTRiMzkuLjFhOGY2OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtNjksNyArNjksNyBAQAogICAgICAgICAjIHdpdGggYmFubmVyCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nRm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMykKICAgICAgICAgYmFubmVyX2NhbGwgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYW5uZXJfY2FsbCwgWyd3cml0ZScsICgnRm9vXG4nLCksIHt9XSkKIApAQCAtNzcsOCArNzcsMzYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKworICAgIGRlZiB0ZXN0X2V4aXRfbXNnKHNlbGYpOgorICAgICAgICAjIGRlZmF1bHQgZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9ICdub3cgZXhpdGluZyBJbnRlcmFjdGl2ZUNvbnNvbGUuLi5cbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJfbXNnLCBbJ3dyaXRlJywgKGV4cGVjdGVkLCksIHt9XSkKKworICAgICAgICAjIG5vIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPScnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAxKQogCisgICAgICAgICMgY3VzdG9tIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgbWVzc2FnZSA9ICgKKyAgICAgICAgICAgICdieWUhIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBaRVRBfVxOe0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEV9JworICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycsIGV4aXRtc2c9bWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9IG1lc3NhZ2UgKyAnXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKwogICAgIGRlZiB0ZXN0X2NhdXNlX3RiKHNlbGYpOgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykgZnJvbSBBdHRyaWJ1dGVFcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CmluZGV4IGVlMWUyOGEuLjZhM2U5OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCB1bmljb2RlZGF0YQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMjgxLDEyICsyODAsMTIgQEAKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAorICAgICAgICAgICAgYiJcXHUzMDQyXFx1M3h4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHh4IgogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGIiXFx1MzA0Mlx1M3h4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHgiCiAgICAgICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggZDBlM2ExNS4uM2JkZjdkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CmluZGV4IGJiOWJlMTEuLmM1ZTJmOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YTNjYTcwLi4wMGVhMWMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0xLDYgKzEsNSBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQ0YjYzYTAuLjk0Mzc4ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGI2YTc0ZmIuLjg2M2QxNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCA5MTc0Mjk2Li5iYjFkMTMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQppbmRleCBmMWJkMzg0Li44OWU1MWM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCA0YzBjNDE1Li43YTQ4ZDI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBIb25nS29uZyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CmluZGV4IDU3NzM4MjMuLmZkZmVjODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKaW5kZXggNmNiNDFjOC4uNDcxY2Q3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKaW5kZXggMmVhNDRiNS4uMTQ1YTk3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9DIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggMDEzZWM2NC4uMWU2M2VkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTQsMTYgKzQsMTAgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZW5jb2RpbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBWSVNUQV9PUl9MQVRFUiA9IChzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5tYWpvciA+PSA2KQotZWxzZToKLSAgICBWSVNUQV9PUl9MQVRFUiA9IEZhbHNlCi0KIHRyeToKICAgICBpbXBvcnQgY3R5cGVzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yNyw2ICsyMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZXIoaW5wdXQpLCAoZXhwZWN0LCBsZW4oaW5wdXQpKSkKICAgICByZXR1cm4gY2hlY2sKIAorCiBjbGFzcyBRdWV1ZShvYmplY3QpOgogICAgICIiIgogICAgIHF1ZXVlOiB3cml0ZSBieXRlcyBhdCBvbmUgZW5kLCByZWFkIGJ5dGVzIGZyb20gdGhlIG90aGVyIGVuZApAQCAtNDcsNiArNDIsNyBAQAogICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQogICAgICAgICAgICAgcmV0dXJuIHMKIAorCiBjbGFzcyBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZzoKICAgICBkZWYgY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYsIGVuY29kaW5nLCB1LCBzKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgpAQCAtODAsNiArNzYsNyBAQAogICAgICAgICAgICAgcGFydDIgPSBkLmVuY29kZSh1W2k6XSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGFydDErcGFydDIpCiAKKwogY2xhc3MgUmVhZFRlc3QoTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiBjaGVja19wYXJ0aWFsKHNlbGYsIGlucHV0LCBwYXJ0aWFscmVzdWx0cyk6CiAgICAgICAgICMgZ2V0IGEgU3RyZWFtUmVhZGVyIGZvciB0aGUgZW5jb2RpbmcgYW5kIGZlZWQgdGhlIGJ5dGVzdHJpbmcgdmVyc2lvbgpAQCAtMzU4LDYgKzM1NSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIls/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgICAgICMgc2VxdWVudGlhbCBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbPz9dIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisKICAgICAgICAgYm9tID0gIiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIGZvciBiZWZvcmUsIGFmdGVyIGluIFsoIlxVMDAwMTBmZmYiLCAiQSIpLCAoIlsiLCAiXSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJBIiwgIlxVMDAwMTBmZmYiKV06CkBAIC0zODMsNiArMzg2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCisKIGNsYXNzIFVURjMyVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMiIKICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgpAQCAtNDc4LDYgKzQ4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2RlY29kZShlbmNvZGVkX2JlKVswXSkKIAorCiBjbGFzcyBVVEYzMkxFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDgwXHhkY1x4MDBceDAwIgpAQCAtNTIzLDYgKzUyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2xlX2RlY29kZShlbmNvZGVkKVswXSkKIAorCiBjbGFzcyBVVEYzMkJFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDAwXHgwMFx4ZGNceDgwIgpAQCAtNzQ3LDYgKzc1Myw3IEBACiAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHhlZFx4YjJceDgwIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2VfcmVwbGFjZSA9ICJcdWZmZmQiICogMworICAgIEJPTSA9IGInJwogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtNzc1LDI3ICs3ODIsNDkgQEAKICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoc2VsZi5lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdS5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkYzgwXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1tcXHg4MFxceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZShzZWxmLmVuY29kaW5nLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgogICAgICAgICBzdXBlcigpLnRlc3RfbG9uZV9zdXJyb2dhdGVzKCkKICAgICAgICAgIyBub3Qgc3VyZSBpZiB0aGlzIGlzIG1ha2luZyBzZW5zZSBmb3IKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCd1dGYtOCcsICJzdXJyb2dhdGVlc2NhcGUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tceDgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHg4MF0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICJbXHVEQzgwXHVEODAwXHVERkZGXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKQorICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMub2JqZWN0W2V4Yy5zdGFydDpleGMuZW5kXSwgJ1x1RDgwMFx1REZGRicpCiAKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiJ1tceGVkXHhhMFx4ODBceGVkXHhiMlx4ODBdJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKKyAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAogICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQpAQCAtODA3LDE4ICs4MzYsMTMgQEAKICAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCiAgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInXHhjM1x4YTlceGUyXHg4Mlx4YWMnKSwKICAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCBiJ1x4ZjRceDhmXHhiZlx4YmYnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCiAgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODQ1LDE3ICs4NjksMTAgQEAKICAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAogICAgICAgICBdCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCAnW1x1ZGM4MF0nKSwKLSAgICAgICAgICAgICkpCiAgICAgICAgIGZvciByYXcsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NzAsNyArODg3LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHJhdy5kZWNvZGUsICdjcDY1MDAxJywgZXJyb3JzKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsICJjcDY1MDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCkBAIC04ODcsNyArOTAzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKQEAgLTEwNTksNiArMTA3NCw3IEBACiAKIGNsYXNzIFVURjhTaWdUZXN0KFVURjhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTgtc2lnIgorICAgIEJPTSA9IGNvZGVjcy5CT01fVVRGOAogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtMTE1OSw3ICsxMTc1LDcgQEAKICAgICAgICAgY2hlY2soYiJbXFxcbl0iLCBiIltdIikKICAgICAgICAgY2hlY2soYnInW1wiXScsIGInWyJdJykKICAgICAgICAgY2hlY2soYnIiW1wnXSIsIGIiWyddIikKLSAgICAgICAgY2hlY2soYnIiW1xcXSIsIGJyIltcXSIpCisgICAgICAgIGNoZWNrKGJyIltcXF0iLCBiIltcXF0iKQogICAgICAgICBjaGVjayhiciJbXGFdIiwgYiJbXHgwN10iKQogICAgICAgICBjaGVjayhiciJbXGJdIiwgYiJbXHgwOF0iKQogICAgICAgICBjaGVjayhiciJbXHRdIiwgYiJbXHgwOV0iKQpAQCAtMTE2OCw3ICsxMTg0LDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsIGIiW1x4MGNdIikKICAgICAgICAgY2hlY2soYnIiW1xyXSIsIGIiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsIGIiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIGJyIltcOF0iKQogICAgICAgICBjaGVjayhiciJbXDc4XSIsIGIiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgYiJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCBiIlshOF0iKQpAQCAtMTE3NiwxMiArMTE5MSwxOCBAQAogICAgICAgICBjaGVjayhiciJbXDEwMTBdIiwgYiJbQTBdIikKICAgICAgICAgY2hlY2soYnIiW1w1MDFdIiwgYiJbQV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MV0iLCBiIltBXSIpCi0gICAgICAgIGNoZWNrKGJyIltcWDQxXSIsIGJyIltcWDQxXSIpCiAgICAgICAgIGNoZWNrKGJyIltceDQxMF0iLCBiIltBMF0iKQotICAgICAgICBmb3IgYiBpbiByYW5nZSgyNTYpOgotICAgICAgICAgICAgaWYgYiBub3QgaW4gYidcbiJcJ1xcYWJ0bnZmcjAxMjM0NTY3eCc6Ci0gICAgICAgICAgICAgICAgYiA9IGJ5dGVzKFtiXSkKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGIsIGInXFwnICsgYikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR2eCc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYiwgYiJcXCIgKyBiKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksIGIiXFwiICsgYi51cHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw4IiwgYiJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgYiJcXDkiKQogCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MuZXNjYXBlX2RlY29kZQpAQCAtMTE5NCw2ICsxMjE1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGUoYnIiW1x4MF1ceDAiLCAiaWdub3JlIiksIChiIltdIiwgOCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgInJlcGxhY2UiKSwgKGIiWz9dPyIsIDgpKQogCisKIGNsYXNzIFJlY29kaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVjb2Rpbmcoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKQEAgLTEzMTMsNiArMTMzNSw3IEBACiAgICAgaWYgbGVuKGkpIT0yOgogICAgICAgICBwcmludChyZXByKGkpKQogCisKIGNsYXNzIFB1bnljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgogICAgICAgICBmb3IgdW5pLCBwdW55IGluIHB1bnljb2RlX3Rlc3RjYXNlczoKQEAgLTEzMzIsNiArMTM1NSw3IEBACiAgICAgICAgICAgICBwdW55ID0gcHVueS5kZWNvZGUoImFzY2lpIikuZW5jb2RlKCJhc2NpaSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaSwgcHVueS5kZWNvZGUoInB1bnljb2RlIikpCiAKKwogY2xhc3MgVW5pY29kZUludGVybmFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9idWcxMjUxMzAwKHNlbGYpOgpAQCAtMTU4Niw2ICsxNjEwLDcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiVGVzdCAzLiVkOiAlcyIgJSAocG9zKzEsIHN0cihlKSkpCiAKKwogY2xhc3MgSUROQUNvZGVjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbHRpbl9kZWNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGIicHl0aG9uLm9yZyIsICJpZG5hIiksICJweXRob24ub3JnIikKQEAgLTE2NzIsNiArMTY5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgYiJweXRob24ub3JnIi5kZWNvZGUsICJpZG5hIiwgZXJyb3JzKQogCisKIGNsYXNzIENvZGVjc01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgpAQCAtMTc4MCw2ICsxODA2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwKICAgICAgICAgICAgICAgICBjb2RlY3MuZGVjb2RlLCBiJ2FiYycsICd1bmRlZmluZWQnLCBlcnJvcnMpCiAKKwogY2xhc3MgU3RyZWFtUmVhZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xNzkwLDYgKzE4MTcsNyBAQAogICAgICAgICBmID0gc2VsZi5yZWFkZXIoc2VsZi5zdHJlYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgWydcdWQ1NWNcbicsICdcdWFlMDAnXSkKIAorCiBjbGFzcyBFbmNvZGVkRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CkBAIC0xOTA5LDYgKzE5MzcsOCBAQAogCiBpZiBoYXNhdHRyKGNvZGVjcywgIm1iY3NfZW5jb2RlIik6CiAgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgibWJjcyIpCitpZiBoYXNhdHRyKGNvZGVjcywgIm9lbV9lbmNvZGUiKToKKyAgICBhbGxfdW5pY29kZV9lbmNvZGluZ3MuYXBwZW5kKCJvZW0iKQogCiAjIFRoZSBmb2xsb3dpbmcgZW5jb2RpbmcgaXMgbm90IHRlc3RlZCwgYmVjYXVzZSBpdCdzIG5vdCBzdXBwb3NlZAogIyB0byB3b3JrOgpAQCAtMTkyMCw2ICsxOTUwLDcgQEAKICAgICAidW5pY29kZV9pbnRlcm5hbCIKIF0KIAorCiBjbGFzcyBCYXNpY1VuaWNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgogICAgICAgICBzID0gImFiYzEyMyIgICMgYWxsIGNvZGVjcyBzaG91bGQgYmUgYWJsZSB0byBlbmNvZGUgdGhlc2UKQEAgLTIwODIsNiArMjExMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2VuY29kZShlbmNvZGluZywgdSwgdS5lbmNvZGUoZW5jb2RpbmcpKQogCisKIGNsYXNzIENoYXJtYXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfd2l0aF9zdHJpbmdfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjMzMiw2ICsyMzY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc3RyZWFtd3JpdGVyLCAnc3RyaWN0JykgYXMgc3J3OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcncucmVhZCgpLCAiXHhmYyIpCiAKKwogY2xhc3MgVHlwZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfdW5pY29kZShzZWxmKToKICAgICAgICAgIyBNb3N0IGRlY29kZXJzIGRvbid0IGFjY2VwdCB1bmljb2RlIGlucHV0CkBAIC0yNDIwLDcgKzI0NTMsNiBAQAogICAgICAgICBjaGVjayhiciJbXGZdIiwgIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCAiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsICJbXHgwN10iKQotICAgICAgICBjaGVjayhiciJbXDhdIiwgciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCAiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgIlshXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDE4XSIsICJbIThdIikKQEAgLTI0MzAsOSArMjQ2MiwxOCBAQAogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgIltBMF0iKQogICAgICAgICBjaGVjayhiciJcdTIwYWMiLCAiXHUyMGFjIikKICAgICAgICAgY2hlY2soYnIiXFUwMDAxZDEyMCIsICJcVTAwMDFkMTIwIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3h1VU4nOgotICAgICAgICAgICAgICAgIGNoZWNrKGInXFwnICsgYnl0ZXMoW2JdKSwgJ1xcJyArIGNocihiKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR1dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsICJcXCIgKyBjaHIoaSkpCisgICAgICAgICAgICBpZiBiLnVwcGVyKCkgbm90IGluIGInVU4nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIudXBwZXIoKSwgIlxcIiArIGNocihpLTMyKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsICJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgIlxcOSIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlCkBAIC0yNjQyLDYgKzI2ODMsNyBAQAogICAgIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3MuYXBwZW5kKCJiejJfY29kZWMiKQogICAgIHRyYW5zZm9ybV9hbGlhc2VzWyJiejJfY29kZWMiXSA9IFsiYnoyIl0KIAorCiBjbGFzcyBUcmFuc2Zvcm1Db2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMjY5NCw4ICsyNzM2LDggQEAKICAgICAgICAgYmFkX2lucHV0ID0gImJhZCBpbnB1dCB0eXBlIgogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gYnl0ZXNfdHJhbnNmb3JtX2VuY29kaW5nczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kaW5nPWVuY29kaW5nKToKLSAgICAgICAgICAgICAgICBmbXQgPSAoICJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgIGZtdCA9IChyInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmVuY29kZShlbmNvZGluZykKQEAgLTI3MDQsNyArMjc0Niw3IEBACiAgICAgZGVmIHRlc3RfdGV4dF90b19iaW5hcnlfYmxhY2tsaXN0c190ZXh0X3RyYW5zZm9ybXMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc3RyLmVuY29kZSBnaXZlcyBhIGdvb2QgZXJyb3IgbWVzc2FnZSBmb3Igc3RyIC0+IHN0ciBjb2RlY3MKICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgImp1c3QgYW4gZXhhbXBsZSBtZXNzYWdlIi5lbmNvZGUoInJvdF8xMyIpCiAKQEAgLTI3MTYsNyArMjc1OCw3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6CiAgICAgICAgICAgICAgICAgZW5jb2RlZF9kYXRhID0gY29kZWNzLmVuY29kZShkYXRhLCBlbmNvZGluZykKICAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YS5kZWNvZGUoZW5jb2RpbmcpCkBAIC0yNzI4LDcgKzI3NzAsNyBAQAogICAgICAgICBmb3IgYmFkX2lucHV0IGluIChiImltbXV0YWJsZSIsIGJ5dGVhcnJheShiIm11dGFibGUiKSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChiYWRfaW5wdXQ9YmFkX2lucHV0KToKICAgICAgICAgICAgICAgICBtc2cgPSAociJeJ3JvdF8xMycgaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmRlY29kZSgicm90XzEzIikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWlsdXJlLmV4Y2VwdGlvbi5fX2NhdXNlX18pCkBAIC0yOTQ3LDEyICsyOTg5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgYiJub3Qgc3RyISIpCiAgICAgICAgICMgVGV4dCBtb2RlbCBtZXRob2RzIHNob3VsZCBjb21wbGFpbgogICAgICAgICBmbXQgPSAociJeeyFyfSBlbmNvZGVyIHJldHVybmVkICdzdHInIGluc3RlYWQgb2YgJ2J5dGVzJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgICJzdHJfaW5wdXQiLmVuY29kZShzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIGZtdCA9IChyIl57IXJ9IGRlY29kZXIgcmV0dXJuZWQgJ2J5dGVzJyBpbnN0ZWFkIG9mICdzdHInOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCiAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgYiJieXRlcyBpbnB1dCIuZGVjb2RlKHNlbGYuY29kZWNfbmFtZSkKQEAgLTMwOTMsMTEgKzMxMzUsMTAgQEAKICAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ2lnbm9yZScsICdcVTAwMTBmZmZmJyksCiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdyZXBsYWNlJywgJ1x1ZmZmZFxVMDAxMGZmZmYnKSwKICAgICAgICAgKSkKLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAotICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKLSAgICAgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKKyAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgogICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCkBAIC0zMTE4LDYgKzMxNTksOTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCiAKKyAgICBkZWYgdGVzdF9tYmNzX2FsaWFzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbG9va2luZyB1cCBvdXIgJ2RlZmF1bHQnIGNvZGVwYWdlIHdpbGwgcmV0dXJuCisgICAgICAgICMgbWJjcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBtb3JlIHNwZWNpZmljIG9uZSBhdmFpbGFibGUKKyAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgIGRlZiBfZ2V0X2Zha2VfY29kZXBhZ2UoKmEpOgorICAgICAgICAgICAgcmV0dXJuICdjcDEyMycKKyAgICAgICAgb2xkX2dldHByZWZlcnJlZGVuY29kaW5nID0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfZ2V0X2Zha2VfY29kZXBhZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29kZWMgPSBjb2RlY3MubG9va3VwKCdjcDEyMycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjLm5hbWUsICdtYmNzJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gb2xkX2dldHByZWZlcnJlZGVuY29kaW5nCisKKworY2xhc3MgQVNDSUlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYzEyMycuZW5jb2RlKCdhc2NpaScpLCBiJ2FiYzEyMycpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3JlcGxhY2UnLCBiJ1s/Pz9dJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzEyODsmIzI1NTsmIzgzNjQ7XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHg4MFxceGZmXFx1MjBhY1xcVTAwMGFiY2RlXScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHhmZicuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYWJjJy5kZWNvZGUoJ2FzY2lpJyksICdhYmMnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworCitjbGFzcyBMYXRpbjFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ2FiYycsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ODBceGU5XHhmZicsIGInXHg4MFx4ZTlceGZmJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3JlcGxhY2UnLCBiJ1s/P10nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1xVMDAwYWJjZGVdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzgzNjQ7JiM1NjQ0ODtdJyksCisgICAgICAgICAgICAoJ1tcdWRjODBcdWRjZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHUyMGFjJy5lbmNvZGUoJ2xhdGluMScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInYWJjJywgJ2FiYycpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggNTA5YmY1ZC4uOThkYTI2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTI4Miw3ICsyODIsNiBAQAogICAgICAgICBhaSgiaWYgKGEgPT0gMSBhbmQgYiA9IDIpOiBwYXNzIikKIAogICAgICAgICBhaSgiZGVsIDEiKQotICAgICAgICBhaSgiZGVsICgpIikKICAgICAgICAgYWkoImRlbCAoMSwpIikKICAgICAgICAgYWkoImRlbCBbMV0iKQogICAgICAgICBhaSgiZGVsICcxJyIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCA1MjM4MzgyLi44NzQ1NGNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTE5LDExICsxOSwxMiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QsIFVzZXJTdHJpbmcsIFVzZXJMaXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENvcm91dGluZSwgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZQotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvcgotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQXdhaXRhYmxlLCBDb3JvdXRpbmUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBc3luY0l0ZXJhdG9yLCBBc3luY0l0ZXJhYmxlLCBBc3luY0dlbmVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvciwgUmV2ZXJzaWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlLCBDb2xsZWN0aW9uCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Ci1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldywgVmFsdWVzVmlldwogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlLCBNdXRhYmxlU2VxdWVuY2UKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBCeXRlU3RyaW5nCiAKQEAgLTI0Miw2ICsyNDMsMTAgQEAKICAgICAgICAgXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZWR0dXBsZSgnTlQnLCBzcGVjLCByZW5hbWU9VHJ1ZSkuX2ZpZWxkcywgcmVuYW1lZCkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBtb2R1bGU9Y29sbGVjdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX19tb2R1bGVfXywgY29sbGVjdGlvbnMpCisKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKICAgICAgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKQogICAgICAgICBwID0gUG9pbnQoMTEsIDIyKQpAQCAtNDEyLDYgKzQxNywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5UQ29sb3IuX2ZpZWxkcywgKCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKQogICAgICAgICBnbG9iYWxzKCkucG9wKCdOVENvbG9yJywgTm9uZSkgICAgICAgICAgIyBjbGVhbi11cCBhZnRlciB0aGlzIHRlc3QKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRfb25seV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlIDI1NjI4CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyB0ZW1wbGF0ZToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCB2ZXJib3NlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIE5UJywgTlQuX3NvdXJjZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIFRydWUpCisKKyAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCByZW5hbWU9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVC5fZmllbGRzLCAoJ2FiYycsICdfMScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWydhYmMnLCAnZGVmJ10sIEZhbHNlLCBUcnVlKQogCiAgICAgZGVmIHRlc3RfbmFtZWR0dXBsZV9zdWJjbGFzc19pc3N1ZV8yNDkzMShzZWxmKToKICAgICAgICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnX1BvaW50JywgWyd4JywgJ3knXSkpOgpAQCAtNDg3LDYgKzUwNCw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3RoZXIucmlnaHRfc2lkZSwnUmlnaHQgc2lkZSBub3QgY2FsbGVkIGZvciAlcy4lcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0eXBlKGluc3RhbmNlKSwgbmFtZSkpCiAKK2RlZiBfdGVzdF9nZW4oKToKKyAgICB5aWVsZAorCiBjbGFzcyBUZXN0T25lVHJpY2tQb255QUJDcyhBQkNUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9Bd2FpdGFibGUoc2VsZik6CkBAIC02NzQsNyArNjk0LDcgQEAKICAgICAgICAgc2FtcGxlcyA9IFtieXRlcygpLCBzdHIoKSwKICAgICAgICAgICAgICAgICAgICB0dXBsZSgpLCBsaXN0KCksIHNldCgpLCBmcm96ZW5zZXQoKSwgZGljdCgpLAogICAgICAgICAgICAgICAgICAgIGRpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNjg4LDYgKzcwOCwxNjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHN0ciwgSSkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhJdGVyYWJsZSwgJ19faXRlcl9fJykKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKEl0ZXJhYmxlLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgSXQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBjbGFzcyBJdEJsb2NrZWQoSXQpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEl0LCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEl0KCksIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0QmxvY2tlZCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRCbG9ja2VkKCksIEl0ZXJhYmxlKSkKKworICAgIGRlZiB0ZXN0X1JldmVyc2libGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZXMKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBkaWN0KCksIHNldCgpLCBmcm96ZW5zZXQoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1yZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBub25fcmV2ZXJzaWJsZXMgPSBbZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCksIGRpY3QoKS52YWx1ZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIoKSwgQ291bnRlcigpLmtleXMoKSwgQ291bnRlcigpLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCkudmFsdWVzKCksIF90ZXN0X2dlbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLCBpdGVyKFtdKSwgcmV2ZXJzZWQoW10pXQorICAgICAgICBmb3IgeCBpbiBub25fcmV2ZXJzaWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIHJldmVyc2libGUgaXRlcmFibGVzCisgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksIGxpc3QoKSwgT3JkZXJlZERpY3QoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLmtleXMoKSwgT3JkZXJlZERpY3QoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCkudmFsdWVzKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGFuZCBTZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgUmV2ZXJzaWJsZSksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhNdXRhYmxlTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICAjIENoZWNrIGRpcmVjdCBzdWJjbGFzc2luZworICAgICAgICBjbGFzcyBSKFJldmVyc2libGUpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQoUigpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIFIpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoUmV2ZXJzaWJsZSwgJ19fcmV2ZXJzZWRfXycsICdfX2l0ZXJfXycpCisgICAgICAgICMgQ2hlY2sgcmV2ZXJzaWJsZSBub24taXRlcmFibGUgKHdoaWNoIGlzIG5vdCBSZXZlcnNpYmxlKQorICAgICAgICBjbGFzcyBSZXZOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldlBsdXNJdGVyKFJldk5vSXRlcik6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2Tm9JdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldk5vSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2UGx1c0l0ZXIsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShSZXZQbHVzSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFJldjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldkl0QmxvY2tlZChSZXYpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIGNsYXNzIFJldlJldkJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2LCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2KCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2SXRCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldkl0QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldlJldkJsb2NrZWQsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2UmV2QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKworICAgIGRlZiB0ZXN0X0NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbnMKKyAgICAgICAgbm9uX2NvbGxlY3Rpb25zID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgbGFtYmRhIHg6IDIqeF0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbGxlY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbiBpdGVyYWJsZXMKKyAgICAgICAgbm9uX2NvbF9pdGVyYWJsZXMgPSBbX3Rlc3RfZ2VuKCksIGl0ZXIoYicnKSwgaXRlcihieXRlYXJyYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgZGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBub25fY29sX2l0ZXJhYmxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgY29sbGVjdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFtzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwgYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksCisgICAgICAgICAgICAgICAgICAgbGlzdCgpLCBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgYWxzbyBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgZXRjLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYXBwaW5nLCBDb2xsZWN0aW9uKSwgcmVwcihNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIENvbGxlY3Rpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihNdXRhYmxlTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNldCwgQ29sbGVjdGlvbiksIHJlcHIoU2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZVNldCwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBDb2xsZWN0aW9uKSwgcmVwcihNdXRhYmxlU2V0KSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgQ29sKENvbGxlY3Rpb24pOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBEZXJDb2woQ29sKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihDb2woKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGxpc3QsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzZXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoRGVyQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIERlckNvbCkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhDb2xsZWN0aW9uLCAnX19sZW5fXycsICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jb250YWluc19fJykKKyAgICAgICAgIyBDaGVjayBzaXplZCBjb250YWluZXIgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgQ29sbGVjdGlvbikgZXRjLgorICAgICAgICBjbGFzcyBDb2xOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb1NpemU6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKTogcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIENvbE5vQ29udDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vSXRlciwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0l0ZXIoKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb1NpemUsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9TaXplKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9Db250LCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vQ29udCgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFNpemVCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYpOiByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIF9fbGVuX18gPSBOb25lCisgICAgICAgIGNsYXNzIEl0ZXJCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIFRydWUKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoU2l6ZUJsb2NrLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFNpemVCbG9jaygpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0ZXJCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShJdGVyQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZyBpbiBzdWJjbGFzcworICAgICAgICBjbGFzcyBDb2xJbXBsOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBOb25Db2woQ29sSW1wbCk6CisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhOb25Db2wsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoTm9uQ29sKCksIENvbGxlY3Rpb24pKQorCiAKICAgICBkZWYgdGVzdF9JdGVyYXRvcihzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBiIiIsICIiLCAoKSwgW10sIHt9LCBzZXQoKV0KQEAgLTY5OSw3ICs4NzQsNyBAQAogICAgICAgICAgICAgICAgICAgIGl0ZXIoc2V0KCkpLCBpdGVyKGZyb3plbnNldCgpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS5rZXlzKCkpLCBpdGVyKGRpY3QoKS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS52YWx1ZXMoKSksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNzg1LDkgKzk2MCw5MCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgSWdub3JlR2VuZXJhdG9yRXhpdCgpLmNsb3NlKQogCisgICAgZGVmIHRlc3RfQXN5bmNHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE5vbkFHZW4xOgorICAgICAgICAgICAgZGVmIF9fYWl0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2FuZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgYWNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgYXRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgY2xhc3MgTm9uQUdlbjI6CisgICAgICAgICAgICBkZWYgX19haXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fYW5leHRfXyhzZWxmKTogcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBhY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBhc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorCisgICAgICAgIGNsYXNzIE5vbkFHZW4zOgorICAgICAgICAgICAgZGVmIGFjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGFzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgYXRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbCisgICAgICAgICAgICBOb25lLCA0MiwgMy4xNCwgMWosIGIiIiwgIiIsICgpLCBbXSwge30sIHNldCgpLAorICAgICAgICAgICAgaXRlcigoKSksIGl0ZXIoW10pLCBOb25BR2VuMSgpLCBOb25BR2VuMigpLCBOb25BR2VuMygpXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBBc3luY0dlbmVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBc3luY0dlbmVyYXRvciksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgY2xhc3MgR2VuOgorICAgICAgICAgICAgZGVmIF9fYWl0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBhc3luYyBkZWYgYWNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBjbGFzcyBNaW5pbWFsQUdlbihBc3luY0dlbmVyYXRvcik6CisgICAgICAgICAgICBhc3luYyBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAgICAgYXN5bmMgZGVmIGF0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBhd2FpdCBzdXBlcigpLmF0aHJvdyh0eXAsIHZhbCwgdGIpCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorCisgICAgICAgIHNhbXBsZXMgPSBbZ2VuKCksIEdlbigpLCBNaW5pbWFsQUdlbigpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEFzeW5jSXRlcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQXN5bmNHZW5lcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBBc3luY0dlbmVyYXRvciksIHJlcHIodHlwZSh4KSkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhBc3luY0dlbmVyYXRvciwgJ2FzZW5kJywgJ2F0aHJvdycpCisKKyAgICAgICAgZGVmIHJ1bl9hc3luYyhjb3JvKToKKyAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjb3JvLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXSBpZiBleC5hcmdzIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgICMgbWl4aW4gdGVzdHMKKyAgICAgICAgbWdlbiA9IE1pbmltYWxBR2VuKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZ2VuLCBtZ2VuLl9fYWl0ZXJfXygpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJ1bl9hc3luYyhtZ2VuLmFzZW5kKE5vbmUpKSwgcnVuX2FzeW5jKG1nZW4uX19hbmV4dF9fKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIHJ1bl9hc3luYyhtZ2VuLmFzZW5kKDIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnVuX2FzeW5jKG1nZW4uYWNsb3NlKCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKG1nZW4uYXRocm93KFZhbHVlRXJyb3IpKQorCisgICAgICAgIGNsYXNzIEZhaWxPbkNsb3NlKEFzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBhc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgYXN5bmMgZGVmIGF0aHJvdyhzZWxmLCAqYXJncyk6IHJhaXNlIFZhbHVlRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKEZhaWxPbkNsb3NlKCkuYWNsb3NlKCkpCisKKyAgICAgICAgY2xhc3MgSWdub3JlR2VuZXJhdG9yRXhpdChBc3luY0dlbmVyYXRvcik6CisgICAgICAgICAgICBhc3luYyBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgKmFyZ3MpOiBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKElnbm9yZUdlbmVyYXRvckV4aXQoKS5hY2xvc2UoKSkKKwogICAgIGRlZiB0ZXN0X1NpemVkKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MDUsNyArMTA2MSw3IEBACiAKICAgICBkZWYgdGVzdF9Db250YWluZXIoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTgyNCw3ICsxMDgwLDcgQEAKICAgICBkZWYgdGVzdF9DYWxsYWJsZShzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAogICAgICAgICAgICAgICAgICAgICAgICAiIiwgYiIiLCAoKSwgW10sIHt9LCBzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTg0MiwxNCArMTA5OCwxNCBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoQ2FsbGFibGUsICdfX2NhbGxfXycpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEMoQik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgQikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoaW50LCBDKSkKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdHJhdGlvbihzZWxmKToKLSAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CisgICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFJldmVyc2libGUsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBfX2hhc2hfXyA9IE5vbmUgICMgTWFrZSBzdXJlIGl0IGlzbid0IGhhc2hhYmxlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDLCBCKSwgQi5fX25hbWVfXykKQEAgLTEwNDksNiArMTMwNSwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5jcyA+IGNzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobmNzID49IGNzKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNjkxNShzZWxmKToKKyAgICAgICAgIyBDb250YWluZXIgbWVtYmVyc2hpcCB0ZXN0IHNob3VsZCBjaGVjayBpZGVudGl0eSBmaXJzdAorICAgICAgICBjbGFzcyBDdXN0b21FcXVhbE9iamVjdDoKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDdXN0b21TZXF1ZW5jZShsaXN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBTZXF1ZW5jZS5fX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpCisKKyAgICAgICAgbmFuID0gZmxvYXQoJ25hbicpCisgICAgICAgIG9iaiA9IEN1c3RvbUVxdWFsT2JqZWN0KCkKKyAgICAgICAgY29udGFpbmVycyA9IFsKKyAgICAgICAgICAgIEN1c3RvbVNlcXVlbmNlKFtuYW4sIG9ial0pLAorICAgICAgICAgICAgSXRlbXNWaWV3KHsxOiBuYW4sIDI6IG9ian0pLAorICAgICAgICAgICAgVmFsdWVzVmlldyh7MTogbmFuLCAyOiBvYmp9KQorICAgICAgICBdCisgICAgICAgIGZvciBjb250YWluZXIgaW4gY29udGFpbmVyczoKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGNvbnRhaW5lcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGNvbnRhaW5lcikKKwogICAgIGRlZiBhc3NlcnRTYW1lU2V0KHNlbGYsIHMxLCBzMik6CiAgICAgICAgICMgY29lcmNlIGJvdGggdG8gYSByZWFsIHNldCB0aGVuIGNoZWNrIGVxdWFsaXR5CiAgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoc2V0KHMxKSwgc2V0KHMyKSkKQEAgLTEyMTksNiArMTQ5NSw3IEBACiAgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoKCkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfY29tcGFyaXNvbihNeU1hcHBpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgTXlNYXBwaW5nKCkpCiAKICAgICBkZWYgdGVzdF9NdXRhYmxlTWFwcGluZyhzZWxmKToKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbZGljdF06CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggODI0ZTg0My4uNDA5ZWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNDczLDEwICs0NzMsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCiAKICAgICBkZWYgdGVzdF9jb21waWxlX2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCdmaWxlLnB5JywgYidmaWxlLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5JykpOgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gJ2ZpbGUucHknLCBiJ2ZpbGUucHknOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZSgncGFzcycsIGZpbGVuYW1lLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCAncGFzcycsIGxpc3QoYidmaWxlLnB5JyksICdleGVjJykKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQpAQCAtNjYxLDYgKzY2NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMigwLjApKQogCisgICAgZGVmIHRlc3RfcGF0aF9saWtlX29iamVjdHMoc2VsZik6CisgICAgICAgICMgQW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgICAgICBjb21waWxlKCI0MiIsIFBhdGhMaWtlKCJ0ZXN0X2NvbXBpbGVfcGF0aGxpa2UiKSwgInNpbmdsZSIpCisKIAogY2xhc3MgVGVzdFN0YWNrU2l6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0cyBjaGVjayB0aGF0IHRoZSBjb21wdXRlZCBzdGFjayBzaXplIGZvciBhIGNvZGUgb2JqZWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKaW5kZXggMmNlOGE2MS4uMjM1NmVmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBjb21waWxlYWxsCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBweV9jb21waWxlCkBAIC00MCw2ICs0MSwxMSBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmRpcmVjdG9yeSkKIAorICAgIGRlZiBhZGRfYmFkX3NvdXJjZV9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmJhZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgJ190ZXN0X2JhZC5weScpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmJhZF9zb3VyY2VfcGF0aCwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZSgneCAoXG4nKQorCiAgICAgZGVmIGRhdGEoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmJjX3BhdGgsICdyYicpIGFzIGZpbGU6CiAgICAgICAgICAgICBkYXRhID0gZmlsZS5yZWFkKDgpCkBAIC03OCwxNSArODQsNDcgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aDIpKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoKQotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIGZvcmNlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD1UcnVlKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aDIpCisgICAgICAgICMgVGVzdCBhZ2FpbnN0IGJhZCBmaWxlcworICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuYmFkX3NvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PTIpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgICMgd2Ugc2hvdWxkIGFsc28gdGVzdCB0aGUgb3V0cHV0CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUocGF0aGxpYi5QYXRoKHNlbGYuc291cmNlX3BhdGgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdGRvdXQuZ2V0dmFsdWUoKSwgcidDb21waWxpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlX2RkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkaXI9cGF0aGxpYi5QYXRoKCdkZGlyX3BhdGgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX3BhdGgocXVpZXQ9MikpCisKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9VHJ1ZSwgcXVpZXQ9MikpCiAKICAgICBkZWYgdGVzdF9ub19weWNhY2hlX2luX25vbl9wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIEJ1ZyA4NTYzIHJlcG9ydGVkIHRoYXQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgZ290IGNyZWF0ZWQgYnkKQEAgLTExNSw2ICsxNTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQzKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBpbGVfZGlyX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHBhdGhsaWIuUGF0aChzZWxmLmRpcmVjdG9yeSkpCisgICAgICAgIGxpbmUgPSBzdGRvdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChsaW5lLCByJ0xpc3RpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCiAgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCiAgICAgZGVmIHRlc3RfY29tcGlsZV9wb29sX2NhbGxlZChzZWxmLCBwb29sX21vY2spOgogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTUpCkBAIC0xOTcsMTAgKzI0Myw5IEBACiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IGFsbCBlbnRyaWVzIG9uIHN5cy5wYXRoIGFyZSB3cml0YWJsZScpCiAKICAgICBkZWYgX2dldF9ydW5fYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgaW50ZXJwX2FyZ3MgPSBbJy1TJ10KLSAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgaW50ZXJwX2FyZ3MuYXBwZW5kKHsxIDogJy1PJywgMiA6ICctT08nfVtzeXMuZmxhZ3Mub3B0aW1pemVdKQotICAgICAgICByZXR1cm4gaW50ZXJwX2FyZ3MgKyBbJy1tJywgJ2NvbXBpbGVhbGwnXSArIGxpc3QoYXJncykKKyAgICAgICAgcmV0dXJuIFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAnLVMnLCAnLW0nLCAnY29tcGlsZWFsbCcsCisgICAgICAgICAgICAgICAgKmFyZ3NdCiAKICAgICBkZWYgYXNzZXJ0UnVuT0soc2VsZiwgKmFyZ3MsICoqZW52X3ZhcnMpOgogICAgICAgICByYywgb3V0LCBlcnIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKaW5kZXggNDAzZWUzYi4uYzI0OWNhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kb20KIGZyb20gbWF0aCBpbXBvcnQgYXRhbjIsIGlzbmFuLCBjb3B5c2lnbgpAQCAtMzg1LDYgKzM4NywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXBsZXgoY29tcGxleDEoMWopKSwgMmopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGxleCwgY29tcGxleDIoMWopKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgICMgY2hlY2sgdW5kZXJzY29yZXMKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICd4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChsaXQpLCBjb21wbGV4KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGxleCwgbGl0KQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTMwLCAzMCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goeCksIGhhc2goY29tcGxleCh4LCAwKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDc1MTM4MTUuLjIzZTk1YjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xNTQsNiArMTU0LDMwIEBACiAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICB0LmpvaW4oKQogCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2Fzc2lnbmVkKHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKAorICAgICAgICAgICAgbWF4X3dvcmtlcnM9NSwgdGhyZWFkX25hbWVfcHJlZml4PSdTcGVjaWFsUG9vbCcpCisgICAgICAgIGV4ZWN1dG9yLm1hcChhYnMsIHJhbmdlKC01LCA1KSkKKyAgICAgICAgdGhyZWFkcyA9IGV4ZWN1dG9yLl90aHJlYWRzCisgICAgICAgIGRlbCBleGVjdXRvcgorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHQubmFtZSwgcideU3BlY2lhbFBvb2xfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKKyAgICBkZWYgdGVzdF90aHJlYWRfbmFtZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz01KQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgIyBXZSBkb24ndCBwYXJ0aWN1bGFybHkgY2FyZSB3aGF0IHRoZSBkZWZhdWx0IG5hbWUgaXMsIGp1c3QgdGhhdAorICAgICAgICAgICAgIyBpdCBoYXMgYSBkZWZhdWx0IG5hbWUgaW1wbHlpbmcgdGhhdCBpdCBpcyBhIFRocmVhZFBvb2xFeGVjdXRvcgorICAgICAgICAgICAgIyBmb2xsb3dlZCBieSB3aGF0IGxvb2tzIGxpa2UgYSB0aHJlYWQgbnVtYmVyLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXi4qVGhyZWFkUG9vbEV4ZWN1dG9yLipfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKIAogY2xhc3MgUHJvY2Vzc1Bvb2xTaHV0ZG93blRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JTaHV0ZG93blRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX3ByaW1lX2V4ZWN1dG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCA4NjRhMWQwLi4wZDA2MDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMjA3Niw1ICsyMDc2LDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJFcnJvciJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNvbmZpZ3BhcnNlciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKaW5kZXggM2M2YmRlZi4uMDM2YTFkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CkBAIC04NCw2ICs4NCwzMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb25zdHJ1Y3Rvcih2YWx1ZXMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb250YWluZXIpCiAKKyAgICBkZWYgdGVzdF9ibG9ja19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBibG9ja2luZyBmYWxsYmFjayB3aXRoIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgQnlDb250YWlucyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGMgPSBCeUNvbnRhaW5zKCkKKyAgICAgICAgY2xhc3MgQmxvY2tDb250YWlucyhCeUNvbnRhaW5zKToKKyAgICAgICAgICAgICIiIklzIG5vdCBhIGNvbnRhaW5lcgorCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIGEgcGVyZmVjdGx5IGdvb2QgaXRlcmFibGUgKGFzIHRlc3RlZCBieQorICAgICAgICAgICAgbGlzdChiYykpLCBhcyB3ZWxsIGFzIGluaGVyaXRpbmcgZnJvbSBhIHBlcmZlY3RseSBnb29kCisgICAgICAgICAgICBjb250YWluZXIsIGJ1dCBfX2NvbnRhaW5zX18gPSBOb25lIHByZXZlbnRzIHRoZSB1c3VhbAorICAgICAgICAgICAgZmFsbGJhY2sgdG8gaXRlcmF0aW9uIGluIHRoZSBjb250YWluZXIgcHJvdG9jb2wuIFRoYXQKKyAgICAgICAgICAgIGlzLCBub3JtYWxseSwgMCBpbiBiYyB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgIG9mIGFueSh4PT0wIGZvciB4IGluIGJjKSwgYnV0IGhlcmUgaXQncyBibG9ja2VkIGZyb20KKyAgICAgICAgICAgIGRvaW5nIHNvLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIE5vbmUKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgYmMgPSBCbG9ja0NvbnRhaW5zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBsaXN0KGJjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDAgaW4gYmMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggNTE2NDAzZS4uYzA0YzgwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtMTIsNiArMTIsMzkgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAorY2xhc3MgVGVzdEFic3RyYWN0Q29udGV4dE1hbmFnZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZW50ZXIoc2VsZik6CisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBtYW5hZ2VyID0gRGVmYXVsdEVudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYW5hZ2VyLl9fZW50ZXJfXygpLCBtYW5hZ2VyKQorCisgICAgZGVmIHRlc3RfZXhpdF9pc19hYnN0cmFjdChzZWxmKToKKyAgICAgICAgY2xhc3MgTWlzc2luZ0V4aXQoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTWlzc2luZ0V4aXQoKQorCisgICAgZGVmIHRlc3Rfc3RydWN0dXJhbF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWFuYWdlckZyb21TY3JhdGNoOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2VyRnJvbVNjcmF0Y2gsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWZhdWx0RW50ZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisKIGNsYXNzIENvbnRleHRNYW5hZ2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29udGV4dG1hbmFnZXJfcGxhaW4oc2VsZik6CkBAIC04OSw3ICsxMjIsNyBAQAogICAgICAgICBkZWYgd29vaG9vKCk6CiAgICAgICAgICAgICB5aWVsZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgICAgICB3aXRoIHdvb2hvbygpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CmluZGV4IDBlMWY2NzAuLjQ1YTY5MjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgdGVzdHMgPSBbTm9uZSwgLi4uLCBOb3RJbXBsZW1lbnRlZCwKICAgICAgICAgICAgICAgICAgNDIsIDIqKjEwMCwgMy4xNCwgVHJ1ZSwgRmFsc2UsIDFqLAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAotICAgICAgICAgICAgICAgICBiIndvcmxkIiwgYnl0ZXMocmFuZ2UoMjU2KSksIHJhbmdlKDEwKSwKKyAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksIHNsaWNlKDEsIDEwLCAyKSwKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIENsYXNzaWMsIG1heCwgV2l0aE1ldGFjbGFzc10KICAgICAgICAgZm9yIHggaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQppbmRleCA0YTMyN2I1Li43ODQzOWEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CkBAIC02OSw1NSArNjksMTMwIEBACiBjbGFzcyBBc3luY0JhZFN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMzCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzQKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF81KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzYoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgotCi0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM3Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzgKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF85KHNlbGYpOgotICAgICAgICBucyA9IHt9Ci0gICAgICAgIGZvciBjb21wIGluIHsnKGF3YWl0IGEgZm9yIGEgaW4gYiknLAotICAgICAgICAgICAgICAgICAgICAgJ1thd2FpdCBhIGZvciBhIGluIGJdJywKLSAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYSBmb3IgYSBpbiBifScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGE6IGMgZm9yIGEgaW4gYn0nfToKLQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnYXdhaXQuKmluIGNvbXByZWhlbicpOgotICAgICAgICAgICAgICAgIGV4ZWMoJ2FzeW5jIGRlZiBmKCk6XG5cdHt9Jy5mb3JtYXQoY29tcCksIG5zLCBucykKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xMChzZWxmKToKLSAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKLQogICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWV0aGluZygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IHNvbWV0aGluZygpIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBbXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXQgZnV0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE6YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhd2FpdCBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzIGlmIGF3YWl0IGldCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdAorICAgICAgICAgICAgIiIiLAorCiAgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CiAgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCiAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCkBAIC0yODMsNTcgKzM1OCwxMTAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCiAKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgQmFyOgorICAgICAgICAgICAgICAgIGRlZiBhc3luYygpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXN5bmM6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBhd2FpdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImltcG9ydCBtYXRoIGFzIGF3YWl0IiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYXN5bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCosIGF3YWl0PTEpOgorICAgICAgICAgICAgICAgIHBhc3MiIiIKKworICAgICAgICAgICAgIiIiYXN5bmMgPSAxIiIiLAorCisgICAgICAgICAgICAiIiJwcmludChhd2FpdD0xKSIiIgorICAgICAgICBdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIpOgorICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgIjx0ZXN0PiIsICJleGVjIikKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCisgICAgICAgICAgICAgICAgY29tcGlsZSgiYXN5bmMgPSAxIiwgIjx0ZXN0PiIsICJleGVjIikKKwogICAgIGRlZiB0ZXN0X2dvb2RzeW50YXhfMShzZWxmKToKICAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMTApLCAxMSkKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKIAotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgIiIic3BhbSIiIgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgIyAxMjMKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgIyA0NTYKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCi0gICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKLSAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgotICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHJldHVybiBhd2FpdF8KKyAgICAgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYmFyKCkuc2VuZChOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXSArIDEKKyAgICAgICAgICAgICcnJworICAgICAgICBdCiAKLSAgICAgICAgYXN5bmMgZGVmIGYoKToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKLSAgICAgICAgICAgIGF3YWl0IHoKLSAgICAgICAgYXdhaXQgPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpOgorICAgICAgICAgICAgICAgIGxvYyA9IHt9CisKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgICAgICAgICAgZXhlYyhjb2RlLCBsb2MsIGxvYykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jWydmb28nXSgxMCksIDExKQogCiAKIGNsYXNzIFRva2VuaXplclJlZ3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTkwNiw3ICsxMDM0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKKyAgICAgICAgICAgIFR5cGVFcnJvciwgciJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTI3MCw3ICsxMzk4LDcgQEAKIAogICAgICAgICBidWZmZXIgPSBbXQogICAgICAgICBhc3luYyBkZWYgdGVzdDEoKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgogICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpMSwgaTIgaW4gQXN5bmNJdGVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaTEgKyBpMikKIApAQCAtMTI4NCw3ICsxNDEyLDcgQEAKICAgICAgICAgYnVmZmVyID0gW10KICAgICAgICAgYXN5bmMgZGVmIHRlc3QyKCk6CiAgICAgICAgICAgICBub25sb2NhbCBidWZmZXIKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgogICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFzeW5jSXRlcigpOgogICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGlbMF0pCiAgICAgICAgICAgICAgICAgICAgIGlmIGlbMF0gPT0gMjA6CkBAIC0xMzAzLDcgKzE0MzEsNyBAQAogICAgICAgICBidWZmZXIgPSBbXQogICAgICAgICBhc3luYyBkZWYgdGVzdDMoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CiAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIGlbMF0gPiAyMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0xMzQ4LDcgKzE0NzYsNyBAQAogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgImFzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QuKl9fYWl0ZXIuKlw6IEkiKToKKyAgICAgICAgICAgICAgICByImFzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QuKl9fYWl0ZXIuKlw6IEkiKToKIAogICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQogCkBAIC0xMzg2LDcgKzE1MTQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxMjMKIAogICAgICAgICBhc3luYyBkZWYgZm9vKCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJKCk6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQogCkBAIC0xNDk1LDcgKzE2MjMsNyBAQAogICAgICAgICAgICAgICAgIDEvMAogICAgICAgICBhc3luYyBkZWYgZm9vKCk6CiAgICAgICAgICAgICBub25sb2NhbCBDTlQKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgogICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJKCk6CiAgICAgICAgICAgICAgICAgICAgIENOVCArPSAxCiAgICAgICAgICAgICBDTlQgKz0gMTAKQEAgLTE1MjIsNyArMTY1MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ05ULCAwKQogCiAgICAgZGVmIHRlc3RfZm9yXzkoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgaW50bworICAgICAgICAjIFRlc3QgdGhhdCBEZXByZWNhdGlvbldhcm5pbmcgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgaW50bwogICAgICAgICAjIGFuIGV4Y2VwdGlvbiAoX19haXRlcl9fIHNob3VsZCBub3QgaGF2ZSBhIGNoYW5jZSB0byByYWlzZQogICAgICAgICAjIGEgWmVyb0RpdmlzaW9uRXJyb3IuKQogICAgICAgICBjbGFzcyBBSToKQEAgLTE1MzIsMTMgKzE2NjAsMTMgQEAKICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIikKICAgICAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKICAgICBkZWYgdGVzdF9mb3JfMTAoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgaW50bworICAgICAgICAjIFRlc3QgdGhhdCBEZXByZWNhdGlvbldhcm5pbmcgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgaW50bwogICAgICAgICAjIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgY2xhc3MgQUk6CiAgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgpAQCAtMTU0Nyw3ICsxNjc1LDcgQEAKICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIikKICAgICAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCkBAIC0xNTk4LDYgKzE3MjYsMTg1IEBACiAgICAgICAgICAgICBmb28oKS5zZW5kKE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbNDJdKQogCisgICAgZGVmIHRlc3RfY29tcF8xKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpKToKKyAgICAgICAgICAgIHJldHVybiBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2F3YWl0IGMgZm9yIGMgaW4gW2YoMSksIGYoNDEpXV0KKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBjIGZvciBjIGluIFtmKDEpLCBmKDQxKV19CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0MSgpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBjOiAnYScgZm9yIGMgaW4gW2YoMSksIGYoNDEpXX0KKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QyKCk6CisgICAgICAgICAgICByZXR1cm4ge2k6IGF3YWl0IGMgZm9yIGksIGMgaW4gZW51bWVyYXRlKFtmKDEpLCBmKDQxKV0pfQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9saXN0KCkpLCAoW10sIFsxLCA0MV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fc2V0KCkpLCAoW10sIHsxLCA0MX0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fZGljdDEoKSksIChbXSwgezE6ICdhJywgNDE6ICdhJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fZGljdDIoKSksIChbXSwgezA6IDEsIDE6IDQxfSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGkpOgorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbcyBmb3IgYyBpbiBbZignJyksIGYoJ2FiYycpLCBmKCcnKSwgZihbJ2RlJywgJ2ZnJ10pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7ZAorICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBbZihbZihbMTAsIDMwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKFsyMF0pXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGQgaW4gYXdhaXQgc30KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQoKSksCisgICAgICAgICAgICAoW10sIHsxMCwgMjAsIDMwfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQyKCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gW2YoW2YoMTApLCBmKDIwKV0pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjfQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldDIoKSksCisgICAgICAgICAgICAoW10sIHsxMCwgMjB9KSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzExLCAyMV0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQoKSksCisgICAgICAgICAgICAoW10sIHsxMSwgMjF9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDE6IGkgKyAyIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9kaWN0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTE6IDEyLCAyMTogMjJ9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2dlbigpOgorICAgICAgICAgICAgZ2VuID0gKGkgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pKQorICAgICAgICAgICAgcmV0dXJuIFtnICsgMTAwIGFzeW5jIGZvciBnIGluIGdlbl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZ2VuKCkpLAorICAgICAgICAgICAgKFtdLCBbMTExLCAxMjFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsyMV0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMH0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MjF9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDE6IGkgKyAyIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMH0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZGljdCgpKSwKKyAgICAgICAgICAgIChbXSwgezIxOiAyMn0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZ2VuKCk6CisgICAgICAgICAgICBnZW4gPSAoaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwKQorICAgICAgICAgICAgcmV0dXJuIFtnICsgMTAwIGFzeW5jIGZvciBnIGluIGdlbl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZ2VuKCkpLAorICAgICAgICAgICAgKFtdLCBbMTIxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgZm9yIHBhaXIgaW4gKFsxMCwgMjBdLCBbMzAsIDQwXSkgaWYgcGFpclswXSA+IDEwCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIGYocGFpcikgaWYgaSA+IDMwXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbNDFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBhc3luYyBmb3Igc2VxIGluIGYoWygxMCwgMjApLCAoMzAsKV0pCisgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHNlcV0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMTEsIDIxLCAzMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF83KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdhYWEnKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpIGFzeW5jIGZvciBpIGluIGYoKV0KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAnYWFhJyk6CisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfOChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHJldHVybiBbaSBmb3IgaSBpbiBbMSwgMiwgM11dCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCBbMSwgMiwgM10pKQorCisgICAgZGVmIHRlc3RfY29tcF85KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICBsID0gW2kgYXN5bmMgZm9yIGkgaW4gZ2VuKCldCisgICAgICAgICAgICByZXR1cm4gW2kgZm9yIGkgaW4gbF0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIFsxLCAyXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgeHggPSB7aSBmb3IgaSBpbiBbMSwgMiwgM119CisgICAgICAgICAgICByZXR1cm4ge3g6IHggZm9yIHggaW4geHh9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCB7MTogMSwgMjogMiwgMzogM30pKQorCiAgICAgZGVmIHRlc3RfY29weShzZWxmKToKICAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKTogcGFzcwogICAgICAgICBjb3JvID0gZnVuYygpCkBAIC0xNzI4LDggKzIwMzUsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAogICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKLSAgICAgICAgICAgICAgICAicmVjdXJzaXZlbHkgd3JhcCAuKiB3cmFwIC4qIik6CisgICAgICAgICAgICAgICAgciJjb3JvdXRpbmUgd3JhcHBlci4qXC53cmFwcGVyIGF0IDB4LiphdHRlbXB0ZWQgdG8gIgorICAgICAgICAgICAgICAgIHIicmVjdXJzaXZlbHkgd3JhcCAuKiB3cmFwIC4qIik6CiAKICAgICAgICAgICAgICAgICBmb28oKQogICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKaW5kZXggZjE4OTgzZi4uNTNmODkxNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CkBAIC02LDcgKzYsNyBAQAogIyByaXAgb2ZmIGFsbCBpbnRlcmVzdGluZyBzdHVmZiBmcm9tIHRlc3RfcHJvZmlsZQogaW1wb3J0IGNQcm9maWxlCiBmcm9tIHRlc3QudGVzdF9wcm9maWxlIGltcG9ydCBQcm9maWxlVGVzdCwgcmVnZW5lcmF0ZV9leHBlY3RlZF9vdXRwdXQKLWZyb20gdGVzdC5wcm9maWxlZSBpbXBvcnQgdGVzdGZ1bmMKKwogCiBjbGFzcyBDUHJvZmlsZVRlc3QoUHJvZmlsZVRlc3QpOgogICAgIHByb2ZpbGVyY2xhc3MgPSBjUHJvZmlsZS5Qcm9maWxlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nzdi5weSBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CmluZGV4IDc3YzMxNWUuLjAzYWIxODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CkBAIC0yLDkgKzIsNyBAQAogIyBjc3YgcGFja2FnZSB1bml0IHRlc3RzCiAKIGltcG9ydCBjb3B5Ci1pbXBvcnQgaW8KIGltcG9ydCBzeXMKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQpAQCAtMTIsNiArMTAsOSBAQAogaW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIAogY2xhc3MgVGVzdF9Dc3YodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIgpAQCAtNDI2LDE3ICs0MjcsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5yZWFkZXIsIFtdLCBxdW90aW5nID0gMTAwKQogCi0gICAgIyBTZWUgaXNzdWUgIzIyOTk1Ci0gICAgIyMgZGVmIHRlc3RfY29weShzZWxmKToKLSAgICAjIyAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKLSAgICAjIyAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKLSAgICAjIyAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29weS5jb3B5LCBkaWFsZWN0KQorICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6CisgICAgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvcHkuY29weSwgZGlhbGVjdCkKIAotICAgICMjIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAjIyAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKLSAgICAjIyAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKLSAgICAjIyAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICMjICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkaWFsZWN0LCBwcm90bykKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6CisgICAgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZGlhbGVjdCwgcHJvdG8pCiAKIGNsYXNzIFRlc3RDc3ZCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgcmVhZGVyQXNzZXJ0RXF1YWwoc2VsZiwgaW5wdXQsIGV4cGVjdGVkX3Jlc3VsdCk6CkBAIC02MjYsNiArNjI2LDI0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCInZjInIiwgZXhjZXB0aW9uKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiMSIsIGV4Y2VwdGlvbikKIAorICAgIGRlZiB0ZXN0X3R5cG9faW5fZXh0cmFzYWN0aW9uX3JhaXNlc19lcnJvcihzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3N2LkRpY3RXcml0ZXIsIGZpbGVvYmosIFsnZjEnLCAnZjInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFzYWN0aW9uPSJyYWlzZWQiKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfZmllbGRfbm90X2luX2ZpZWxkX25hbWVzX3JhaXNlKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqLCBbJ2YxJywgJ2YyJ10sIGV4dHJhc2FjdGlvbj0icmFpc2UiKQorICAgICAgICBkaWN0cm93ID0geydmMCc6IDAsICdmMSc6IDEsICdmMic6IDIsICdmMyc6IDN9CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNzdi5EaWN0V3JpdGVyLndyaXRlcm93LCB3cml0ZXIsIGRpY3Ryb3cpCisKKyAgICBkZWYgdGVzdF93cml0ZV9maWVsZF9ub3RfaW5fZmllbGRfbmFtZXNfaWdub3JlKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqLCBbJ2YxJywgJ2YyJ10sIGV4dHJhc2FjdGlvbj0iaWdub3JlIikKKyAgICAgICAgZGljdHJvdyA9IHsnZjAnOiAwLCAnZjEnOiAxLCAnZjInOiAyLCAnZjMnOiAzfQorICAgICAgICBjc3YuRGljdFdyaXRlci53cml0ZXJvdyh3cml0ZXIsIGRpY3Ryb3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5nZXR2YWx1ZSgpLCAiMSwyXHJcbiIpCisKICAgICBkZWYgdGVzdF9yZWFkX2RpY3RfZmllbGRzKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoIjEsMixhYmNcclxuIikKQEAgLTEwODAsNyArMTA5OCw2IEBACiAgICAgICAgICAgICAgIkZyYW7Dp29pcyBQaW5hcmQiXQogCiAgICAgZGVmIHRlc3RfdW5pY29kZV9yZWFkKHNlbGYpOgotICAgICAgICBpbXBvcnQgaW8KICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKCIsIi5qb2luKHNlbGYubmFtZXMpICsgIlxyXG4iKQogICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCkBAIC0xMDg5LDcgKzExMDYsNiBAQAogCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3dyaXRlKHNlbGYpOgotICAgICAgICBpbXBvcnQgaW8KICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICB3cml0ZXIgPSBjc3Yud3JpdGVyKGZpbGVvYmopCiAgICAgICAgICAgICB3cml0ZXIud3JpdGVyb3coc2VsZi5uYW1lcykKQEAgLTEwOTcsNiArMTExMyw2MyBAQAogICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCBleHBlY3RlZCkKIAorY2xhc3MgS2V5T3JkZXJpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X29yZGVyaW5nX2Zvcl90aGVfZGljdF9yZWFkZXJfYW5kX3dyaXRlcihzZWxmKToKKyAgICAgICAgcmVzdWx0c2V0ID0gc2V0KCkKKyAgICAgICAgZm9yIGtleXMgaW4gcGVybXV0YXRpb25zKCJhYmNkZSIpOgorICAgICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCd3KycsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmplY3Q6CisgICAgICAgICAgICAgICAgZHcgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqZWN0LCBrZXlzKQorICAgICAgICAgICAgICAgIGR3LndyaXRlaGVhZGVyKCkKKyAgICAgICAgICAgICAgICBmaWxlb2JqZWN0LnNlZWsoMCkKKyAgICAgICAgICAgICAgICBkciA9IGNzdi5EaWN0UmVhZGVyKGZpbGVvYmplY3QpCisgICAgICAgICAgICAgICAga3QgPSB0dXBsZShkci5maWVsZG5hbWVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywga3QpCisgICAgICAgICAgICAgICAgcmVzdWx0c2V0LmFkZChrdCkKKyAgICAgICAgIyBGaW5hbCBzYW5pdHkgY2hlY2s6IHdlcmUgYWxsIHBlcm11dGF0aW9ucyB1bmlxdWU/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHNldCksIDEyMCwgIktleSBvcmRlcmluZzogc29tZSBrZXkgcGVybXV0YXRpb25zIG5vdCBjb2xsZWN0ZWQgKGV4cGVjdGVkIDEyMCkiKQorCisgICAgZGVmIHRlc3Rfb3JkZXJlZF9kaWN0X3JlYWRlcihzZWxmKToKKyAgICAgICAgZGF0YSA9IGRlZGVudCgnJydcCisgICAgICAgICAgICBGaXJzdE5hbWUsTGFzdE5hbWUKKyAgICAgICAgICAgIEVyaWMsSWRsZQorICAgICAgICAgICAgR3JhaGFtLENoYXBtYW4sT3ZlcjEsT3ZlcjIKKworICAgICAgICAgICAgVW5kZXIxCisgICAgICAgICAgICBKb2huLENsZWVzZQorICAgICAgICAnJycpLnNwbGl0bGluZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdVbmRlcjEnKSwgKCdMYXN0TmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0pvaG4nKSwgKCdMYXN0TmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgcmVzdGtleT0nT3RoZXJJbmZvJykpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdFcmljJyksICgnTGFzdE5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0dyYWhhbScpLCAoJ0xhc3ROYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdPdGhlckluZm8nLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIGRlbCBkYXRhWzBdICAgICAgICAgICAgIyBSZW1vdmUgdGhlIGhlYWRlciByb3cKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEsIGZpZWxkbmFtZXM9WydmbmFtZScsICdsbmFtZSddKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnRXJpYycpLCAoJ2xuYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0dyYWhhbScpLCAoJ2xuYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdVbmRlcjEnKSwgKCdsbmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnSm9obicpLCAoJ2xuYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBleHRyYSA9IHsnX19kb2NfXycsICdfX3ZlcnNpb25fXyd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNzdiwgKCdjc3YnLCAnX2NzdicpLCBleHRyYT1leHRyYSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKaW5kZXggMmQ0ZWI1Mi4uMjQyZTFiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CkBAIC0yMyw5ICsyMywxNiBAQAogdGVzdF9jbGFzc2VzID0gW10KIAogZm9yIG1vZHVsZSwgc3VmZml4IGluIHppcCh0ZXN0X21vZHVsZXMsIHRlc3Rfc3VmZml4ZXMpOgorICAgIHRlc3RfY2xhc3NlcyA9IFtdCiAgICAgZm9yIG5hbWUsIGNscyBpbiBtb2R1bGUuX19kaWN0X18uaXRlbXMoKToKLSAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGNscywgdHlwZSkgYW5kIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0Q2FzZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIHR5cGUpOgogICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0U3VpdGUpOgorICAgICAgICAgICAgc3VpdCA9IGNscygpCisgICAgICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKHR5cGUodGVzdCkgZm9yIHRlc3QgaW4gc3VpdCkKKyAgICBmb3IgY2xzIGluIHRlc3RfY2xhc3NlczoKICAgICAgICAgY2xzLl9fbmFtZV9fID0gbmFtZSArIHN1ZmZpeAogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIHNldFVwQ2xhc3MoY2xzXywgbW9kdWxlPW1vZHVsZSk6CkBAIC0zOSw3ICs0Niw2IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoY2xzXy5fc2F2ZV9zeXNfbW9kdWxlcykKICAgICAgICAgY2xzLnNldFVwQ2xhc3MgPSBzZXRVcENsYXNzCiAgICAgICAgIGNscy50ZWFyRG93bkNsYXNzID0gdGVhckRvd25DbGFzcwotICAgICAgICB0ZXN0X2NsYXNzZXMuYXBwZW5kKGNscykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibS5weQppbmRleCA2MjNkOTkyLi5mMGE0MjhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibS5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3Qgc2NyaXB0IGZvciB0aGUgZGJtLm9wZW4gZnVuY3Rpb24gYmFzZWQgb24gdGVzdGR1bWJkYm0ucHkiIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGVzdC5zdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQppbmRleCAyMzVhYjExLi5kZjUzMWQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzdGF0CiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGRibS5kdW1iIGFzIGR1bWJkYm0KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTc5LDYgKzgwLDEyIEBACiAgICAgICAgIHNlbGYuaW5pdF9kYigpCiAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAncicpCiAgICAgICAgIHNlbGYucmVhZF9oZWxwZXIoZikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBmW2InZyddID0gYid4JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGRlbCBmW2InYSddCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZHVtYmRibV9rZXlzKHNlbGYpOgpAQCAtMTQ5LDcgKzE1Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2RpY3Rba2V5XSwgZltrZXldKQogCiAgICAgZGVmIGluaXRfZGIoc2VsZik6Ci0gICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAndycpCisgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CiAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQogICAgICAgICBmLmNsb3NlKCkKQEAgLTIzNSw2ICsyNDIsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAKKyAgICBkZWYgdGVzdF93YXJuX29uX2lnbm9yZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIGZvciB2YWx1ZSBpbiAoJ3InLCAndycpOgorICAgICAgICAgICAgX2RlbGV0ZV9maWxlcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVzZWQuIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZsYWcoc2VsZik6CisgICAgICAgIGZvciBmbGFnIGluICgneCcsICdyZicsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWcgbXVzdCBiZSBvbmUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidyJywgJ3cnLCAnYycsIG9yICduJyIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCBmbGFnKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2htb2QnKSwgJ3Rlc3QgbmVlZHMgb3MuY2htb2QoKScpCiAgICAgZGVmIHRlc3RfcmVhZG9ubHlfZmlsZXMoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIGRpcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQppbmRleCBhNzgwOGY1Li4zMDRiMzMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CkBAIC0yLDcgKzIsNyBAQAogZ2RibSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgiZGJtLmdudSIpICNza2lwIGlmIG5vdCBzdXBwb3J0ZWQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluawogCiAKIGZpbGVuYW1lID0gVEVTVEZOCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQppbmRleCAyMjkxNTYxLi40OWY0NDI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKQEAgLTEsOCArMSw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgiZGJtLm5kYm0iKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJhbmRvbQogaW1wb3J0IGRibS5uZGJtCiBmcm9tIGRibS5uZGJtIGltcG9ydCBlcnJvcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKaW5kZXggMWFhMGJmOC4uNjE3YTM3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQpAQCAtNTU0LDYgKzU1NCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcgIC03Ljg5JykpLCAnLTcuODknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIgIDMuNDU2NzkgICIpKSwgJzMuNDU2NzknKQogCisgICAgICAgICMgdW5kZXJzY29yZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8zLjNlNF8wJykpLCAnMS4zM0UrNDEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxXzBfMF8wJykpLCAnMTAwMCcpCisKICAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKICAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CiAgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CkBAIC01NzgsNiArNTgyLDkgQEAKICAgICAgICAgICAgICMgZW1iZWRkZWQgTlVMCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMTJcdTAwMDAzIikKIAorICAgICAgICAgICAgIyB1bmRlcnNjb3JlcyBkb24ndCBwcmV2ZW50IGVycm9ycworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjFfMl9cdTAwMDAzIikKKwogICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9mcm9tX2xlZ2FjeV9zdHJpbmdzKHNlbGYpOgogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCkBAIC03NzIsNiArNzc5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICJ4eXoiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgKDEsICJ4eXoiLCAtMjUpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAiMTIzNCIsICI1Njc4IikKKyAgICAgICAgIyBubyB3aGl0ZXNwYWNlIGFuZCB1bmRlcnNjb3JlIHN0cmlwcGluZyBpcyBkb25lIHdpdGggdGhpcyBtZXRob2QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICIgMTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiMTJfMzQiKQogCiAgICAgICAgICMgdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzCiAgICAgICAgIG5jLnByZWMgPSAzCkBAIC0yMDQ3LDYgKzIwNTcsMzkgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoMCwgMiwgNywgMSksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgwLCksICdGJykpCiAKKyAgICBkZWYgdGVzdF9hc19pbnRlZ2VyX3JhdGlvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICAjIGV4Y2VwdGlvbmFsIGNhc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnLWluZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCdzbmFuMTIzJykpCisKKyAgICAgICAgZm9yIGV4cCBpbiByYW5nZSgtNCwgMik6CisgICAgICAgICAgICBmb3IgY29lZmYgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAgICAgZm9yIHNpZ24gaW4gJysnLCAnLSc6CisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKCclcyVkRSVkJyAlIChzaWduLCBjb2VmZiwgZXhwKSkKKyAgICAgICAgICAgICAgICAgICAgcHEgPSBkLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAgICAgICAgICAgICBwLCBxID0gcHEKKworICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHJldHVybiB0eXBlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcSwgdHVwbGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBpbnQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShxLCBpbnQpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBub3JtYWxpemF0aW9uOiAgcSBzaG91bGQgYmUgcG9zaXRpdmU7CisgICAgICAgICAgICAgICAgICAgICMgcCBzaG91bGQgYmUgcmVsYXRpdmVseSBwcmltZSB0byBxLgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocSwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmdjZChwLCBxKSwgMSkKKworICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgcC9xIGFjdHVhbGx5IGdpdmVzIHRoZSBjb3JyZWN0IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChwKSAvIERlY2ltYWwocSksIGQpCisKICAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKICAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKICAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQppbmRleCAxOGUxZGYwLi5jZTUxN2I1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKQEAgLTI4OSw3ICsyODksNyBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmluZGV4KGVsZW1lbnQsIHN0YXJ0LCBzdG9wKSwgdGFyZ2V0KQogCi0gICAgZGVmIHRlc3RfaW5zZXJ0X2J1Z18yNDkxMyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbmRleF9idWdfMjQ5MTMoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnQScgKiAzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgaSA9IGQuaW5kZXgoIkhlbGxvIHdvcmxkIiwgMCwgNCkKQEAgLTYyMiwyMCArNjIyLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZCA9IGRlcXVlKHJhbmdlKDIwMCkpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCi0gICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKyAgICAgICAgZm9yIGQgaW4gZGVxdWUocmFuZ2UoMjAwKSksIGRlcXVlKHJhbmdlKDIwMCksIDEwMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoZCwgaSkKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChlKSwgaWQoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGUpLCBsaXN0KGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5tYXhsZW4sIGQubWF4bGVuKQogCi0jIyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgotIyMgICAgICAgIGQgPSBkZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMgICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0jIyAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQotIyMgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZVstMV0pKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBkIGluIGRlcXVlKCdhYmMnKSwgZGVxdWUoJ2FiYycsIDMpOgorICAgICAgICAgICAgZC5hcHBlbmQoZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgaSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChlKSwgaWQoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlWy0xXSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5tYXhsZW4sIGQubWF4bGVuKQogCiAgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgogICAgICAgICBvcmlnID0gZGVxdWUocmFuZ2UoMjAwKSkKQEAgLTY5Niw2ICs2OTgsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAorICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIGZvciBtYXhsZW4gaW4gcmFuZ2UoLTEsIDYpOgorICAgICAgICAgICAgICAgIHMgPSBbcmFuZG9tLnJhbmRvbSgpIGZvciBqIGluIHJhbmdlKGkpXQorICAgICAgICAgICAgICAgIGQgPSBkZXF1ZShzKSBpZiBtYXhsZW4gPT0gLTEgZWxzZSBkZXF1ZShzLCBtYXhsZW4pCisgICAgICAgICAgICAgICAgZSA9IGQuY29weSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIGUubWF4bGVuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoeCBpcyB5IGZvciB4LCB5IGluIHppcChkLCBlKSkpCisKICAgICBkZWYgdGVzdF9jb3B5X21ldGhvZChzZWxmKToKICAgICAgICAgbXV0ID0gWzEwXQogICAgICAgICBkID0gZGVxdWUoW211dF0pCkBAIC04NDUsMjQgKzg1NiwyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLCB0eXBlKGUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGQpLCBsaXN0KGUpKQogCi0jIyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0jIyAgICAgICAgZCA9IERlcXVlKCdhYmMnKQotIyMgICAgICAgIGQuYXBwZW5kKGQpCi0jIwotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKLSMjICAgICAgICBkZCA9IGQucG9wKCkKLSMjICAgICAgICBlZSA9IGUucG9wKCkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUpLCBpZChlZSkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQotIyMKLSMjICAgICAgICBkLnggPSBkCi0jIyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZS54KSkKLSMjCi0jIyAgICAgICAgZCA9IERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGQpCisgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICBmb3IgZCBpbiBEZXF1ZSgnYWJjJyksIERlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgICAgICBkLmFwcGVuZChkKQorCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlKSwgdHlwZShkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKKyAgICAgICAgICAgICAgICBkZCA9IGQucG9wKCkKKyAgICAgICAgICAgICAgICBlZSA9IGUucG9wKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGVlKSwgaWQoZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBkKQorCisgICAgICAgICAgICAgICAgZC54ID0gZAorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUueCksIGlkKGUpKQorCisgICAgICAgICAgICBmb3IgZCBpbiBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKSwgRGVxdWVXaXRoQmFkSXRlcignYWJjJywgMik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGQsIHByb3RvKQogCiAgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKICAgICAgICAgZCA9IGRlcXVlKCdnYWxsYWhhZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCBlZGE2ZmMxLi5jNWJmZjc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTQ4MjgsMTEgKzQ4MjgsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoYXJncywga3dhcmdzKQogICAgICAgICBvYmogPSBDMygpCiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBpZiBwcm90byA+PSA0OgorICAgICAgICAgICAgaWYgcHJvdG8gPj0gMjoKICAgICAgICAgICAgICAgICBzZWxmLl9jaGVja19yZWR1Y2UocHJvdG8sIG9iaiwgYXJncywga3dhcmdzKQotICAgICAgICAgICAgZWxpZiBwcm90byA+PSAyOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIG9iai5fX3JlZHVjZV9leF9fKHByb3RvKQogCiAgICAgICAgIGNsYXNzIEM0OgogICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgpAQCAtNTE1MSwxMCArNTE0OCw2IEBACiAgICAgICAgICAgICAgICAga3dhcmdzID0gZ2V0YXR0cihjbHMsICdLV0FSR1MnLCB7fSkKICAgICAgICAgICAgICAgICBvYmogPSBjbHMoKmNscy5BUkdTLCAqKmt3YXJncykKICAgICAgICAgICAgICAgICBwcm90byA9IHBpY2tsZV9jb3BpZXIucHJvdG8KLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNCBhbmQgaGFzYXR0cihjbHMsICdfX2dldG5ld2FyZ3NfZXhfXycpOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlX2NvcGllci5kdW1wcyhvYmosIHByb3RvKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIG9iamNvcHkgPSBwaWNrbGVfY29waWVyLmNvcHkob2JqKQogICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19jb3B5KG9iaiwgb2JqY29weSkKICAgICAgICAgICAgICAgICAjIEZvciB0ZXN0IGNsYXNzZXMgdGhhdCBzdXBwb3J0cyB0aGlzLCBtYWtlIHN1cmUgd2UgZGlkbid0IGdvCkBAIC01MjEzLDEyICs1MjA2LDE0IEBACiAgICAgICAgIGEsIGIgPSBBKCksIEIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKLSAgICAgICAgYS54LCBhLnksIGEueiwgYS53ID0gcmFuZ2UoNCkKKyAgICAgICAgIyBJbml0aWFsIGhhc2ggdGFibGUgY2FuIGNvbnRhaW4gYXQgbW9zdCA1IGVsZW1lbnRzLgorICAgICAgICAjIFNldCA2IGF0dHJpYnV0ZXMgdG8gY2F1c2UgaW50ZXJuYWwgcmVzaXppbmcuCisgICAgICAgIGEueCwgYS55LCBhLnosIGEudywgYS52LCBhLnUgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhiKSkpCiAgICAgICAgIGEyID0gQSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih2YXJzKGEyKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKLSAgICAgICAgYi51LCBiLnYsIGIudywgYi50ID0gcmFuZ2UoNCkKKyAgICAgICAgYi51LCBiLnYsIGIudywgYi50LCBiLnMsIGIuciA9IHJhbmdlKDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQppbmRleCA1MDZkMWFiLi5iODRkNjQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKQEAgLTE4Miw2ICsxODIsNyBAQAogICAgICAnX19pYWRkX18nLAogICAgICAnX19pbXVsX18nLAogICAgICAnX19pbml0X18nLAorICAgICAnX19pbml0X3N1YmNsYXNzX18nLAogICAgICAnX19pdGVyX18nLAogICAgICAnX19sZV9fJywKICAgICAgJ19fbGVuX18nLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CmluZGV4IDk1NTYxOGEuLmMxMzNjODEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKQEAgLTUsOSArNSw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KIGltcG9ydCBzZWxlY3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNweXRob25fb25seQogCiBpZiBub3QgaGFzYXR0cihzZWxlY3QsICdkZXZwb2xsJykgOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCd0ZXN0IHdvcmtzIG9ubHkgb24gU29sYXJpcyBPUyBmYW1pbHknKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGI4NWQzMzMuLjgzMmJiOWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTEsMTAgKzEsMTMgQEAKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KLWltcG9ydCBjb2xsZWN0aW9ucywgcmFuZG9tLCBzdHJpbmcKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgzNiwyMSArODM5LDEyNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIG1ha2Vfc2hhcmVkX2tleV9kaWN0KHNlbGYsIG4pOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRpY3RzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBhID0gQygpCisgICAgICAgICAgICBhLngsIGEueSwgYS56ID0gMSwgMiwgMworICAgICAgICAgICAgZGljdHMuYXBwZW5kKGEuX19kaWN0X18pCisKKyAgICAgICAgcmV0dXJuIGRpY3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBzZXRkZWZhdWx0KCkKKyAgICAgICAgYnJlYWtzIGluc2VydGlvbiBvcmRlciIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIGFbJ2EnXSA9IDEKKyAgICAgICAgc2l6ZV9hID0gc3lzLmdldHNpemVvZihhKQorICAgICAgICBhWydiJ10gPSAyCisgICAgICAgIGIuc2V0ZGVmYXVsdCgnYicsIDIpCisgICAgICAgIHNpemVfYiA9IHN5cy5nZXRzaXplb2YoYikKKyAgICAgICAgYlsnYSddID0gMQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzaXplX2IsIHNpemVfYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneScsICd6JywgJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onLCAnYicsICdhJ10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX2RlbChzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGRlbCBkW2tdIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGRlbCBhWyd5J10gICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgYVsneSddCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgICAgICAjIFR3byBkaWN0cyBoYXZlIGRpZmZlcmVudCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGFbJ3knXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9wKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3AoaykiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgYS5wb3AoJ3knKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGEucG9wKCd5JykKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BfcGVuZGluZyhzZWxmKToKKyAgICAgICAgIiIicG9wIGEgcGVuZGluZyBrZXkgaW4gYSBzcGxpdHRlZCB0YWJsZSBzaG91bGQgbm90IGNyYXNoIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgYVsnYSddID0gNAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGIucG9wKCdhJykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9waXRlbShzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGQucG9waXRlbSgpIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGl0ZW0gPSBhLnBvcGl0ZW0oKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sICgneicsIDMpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd6J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9zZXRhdHRyX2FmdGVyX3BvcChzZWxmKToKLSAgICAgICAgIiIic2V0YXR0ciBtdXN0IG5vdCBjb252ZXJ0IGNvbWJpbmVkIHRhYmxlIGludG8gc3BsaXQgdGFibGUiIiIKKyAgICAgICAgIiIic2V0YXR0cigpIG11c3Qgbm90IGNvbnZlcnQgY29tYmluZWQgdGFibGUgaW50byBzcGxpdCB0YWJsZS4iIiIKICAgICAgICAgIyBJc3N1ZSAyODE0NwogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgYSA9IEMoKQorCisgICAgICAgIGEuYSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF90ZXN0Y2FwaS5kaWN0X2hhc3NwbGl0dGFibGUoYS5fX2RpY3RfXykpCisKKyAgICAgICAgIyBkaWN0LnBvcCgpIGNvbnZlcnQgaXQgdG8gY29tYmluZWQgdGFibGUKKyAgICAgICAgYS5fX2RpY3RfXy5wb3AoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF90ZXN0Y2FwaS5kaWN0X2hhc3NwbGl0dGFibGUoYS5fX2RpY3RfXykpCisKKyAgICAgICAgIyBCdXQgQyBzaG91bGQgbm90IGNvbnZlcnQgYS5fX2RpY3RfXyB0byBzcGxpdCB0YWJsZSBhZ2Fpbi4KKyAgICAgICAgYS5hID0gMQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF90ZXN0Y2FwaS5kaWN0X2hhc3NwbGl0dGFibGUoYS5fX2RpY3RfXykpCisKKyAgICAgICAgIyBTYW1lIGZvciBwb3BpdGVtKCkKKyAgICAgICAgYSA9IEMoKQogICAgICAgICBhLmEgPSAyCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfdGVzdGNhcGkuZGljdF9oYXNzcGxpdHRhYmxlKGEuX19kaWN0X18pKQotICAgICAgICAjIGRpY3QucG9waXRlbSgpIGNvbnZlcnQgaXQgdG8gY29tYmluZWQgdGFibGUKICAgICAgICAgYS5fX2RpY3RfXy5wb3BpdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfdGVzdGNhcGkuZGljdF9oYXNzcGxpdHRhYmxlKGEuX19kaWN0X18pKQotICAgICAgICAjIEJ1dCBDIHNob3VsZCBub3QgY29udmVydCBhLl9fZGljdF9fIHRvIHNwbGl0IHRhYmxlIGFnYWluLgogICAgICAgICBhLmEgPSAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoX3Rlc3RjYXBpLmRpY3RfaGFzc3BsaXR0YWJsZShhLl9fZGljdF9fKSkKIApAQCAtOTc2LDYgKzEwODUsMzcgQEAKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBsYW1iZGEgZDogaXRlcihkLnZhbHVlcygpKSwgZGljdCkKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBsYW1iZGEgZDogaXRlcihkLml0ZW1zKCkpLCBkaWN0KQogCisKK2NsYXNzIENBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKCkKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2tub3duaGFzaChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gKKworICAgICAgICBkID0geyd4JzogMSwgJ3knOiAyLCAneic6IDN9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneCcsIGhhc2goJ3gnKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneScsIGhhc2goJ3knKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneicsIGhhc2goJ3onKSksIDMpCisKKyAgICAgICAgIyBub3QgYSBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yLCBkaWN0X2dldGl0ZW1fa25vd25oYXNoLCBbXSwgMSwgaGFzaCgxKSkKKyAgICAgICAgIyBrZXkgZG9lcyBub3QgZXhpc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gsIHt9LCAxLCBoYXNoKDEpKQorCisgICAgICAgIGNsYXNzIEV4YyhFeGNlcHRpb24pOiBwYXNzCisgICAgICAgIGNsYXNzIEJhZEVxOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDcKKworICAgICAgICBrMSwgazIgPSBCYWRFcSgpLCBCYWRFcSgpCisgICAgICAgIGQgPSB7azE6IDF9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCBrMSwgaGFzaChrMSkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGMsIGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gsIGQsIGsyLCBoYXNoKGsyKSkKKworCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIAogY2xhc3MgR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CkBAIC05ODcsNSArMTEyNyw2IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzFmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDE4NiBAQAorIiIiCitUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNTA5OiBkaWN0aW9uYXJ5IHZlcnNpb25uaW5nLgorIiIiCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisjIFBFUCA1MDkgaXMgaW1wbGVtZW50ZWQgaW4gQ1B5dGhvbiBidXQgb3RoZXIgUHl0aG9uIGltcGxlbWVudGF0aW9ucworIyBkb24ndCByZXF1aXJlIHRvIGltcGxlbWVudCBpdAorX3Rlc3RjYXBpID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorCisKK2NsYXNzIERpY3RWZXJzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGUydGVzdCA9IGRpY3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zID0gc2V0KCkKKyAgICAgICAgc2VsZi5kaWN0ID0gTm9uZQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fdW5pcXVlKHNlbGYsIG15ZGljdCk6CisgICAgICAgIHZlcnNpb24gPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmVyc2lvbiwgc2VsZi5zZWVuX3ZlcnNpb25zKQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24pCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShteWRpY3QpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHZlcnNpb24xID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24xKQorCisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKworICAgICAgICB2ZXJzaW9uMiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uMiwgdmVyc2lvbjEsICJ2ZXJzaW9uIGNoYW5nZWQiKQorCisgICAgICAgIHJldHVybiAgcmVzdWx0CisKKyAgICBkZWYgbmV3X2RpY3Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBkID0gc2VsZi50eXBlMnRlc3QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICAjIG5ldyBlbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbGwgaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBlbXB0eTEgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkyID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MyA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgbm9uLWVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsc28gaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBub25lbXB0eTEgPSBzZWxmLm5ld19kaWN0KHg9J3gnKQorICAgICAgICBub25lbXB0eTIgPSBzZWxmLm5ld19kaWN0KHg9J3gnLCB5PSd5JykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGE9MSwgYj0yKQorCisgICAgICAgIGQyID0gc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY29weSkKKworICAgICAgICAjIGRpY3QuY29weSgpIG11c3QgY3JlYXRlIGEgZGljdGlvbmFyeSB3aXRoIGEgbmV3IHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBjcmVhdGluZyBuZXcga2V5cyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsICd4JykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAneScpCisKKyAgICAgICAgIyBjaGFuZ2luZyB2YWx1ZXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAxKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsIDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX3NhbWVfdmFsdWUoc2VsZik6CisgICAgICAgIHZhbHVlID0gb2JqZWN0KCkKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC5fX3NldGl0ZW1fXworICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0LnVwZGF0ZQorICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9lcXVhbChzZWxmKToKKyAgICAgICAgY2xhc3MgQWx3YXlzRXF1YWw6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHZhbHVlMSA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgdmFsdWUyID0gQWx3YXlzRXF1YWwoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUxID09IHZhbHVlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2YWx1ZTEgIT0gdmFsdWUyKQorCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC5fX3NldGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTIpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QudXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZTEpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZTIpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgd2l0aCBkaWN0LnNldGRlZmF1bHQoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUxJykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUyJykKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgZGVsZXRpbmcgYSBrZXkgd2l0aCBkaWN0Ll9fZGVsaXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcCwgJ2tleScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3AsICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9waXRlbSkKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9waXRlbSkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyB1cGRhdGUoKSBjYWxsaW5nIHdpdGggbm8gYXJndW1lbnQgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnVwZGF0ZSkKKworICAgICAgICAjIHVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9J25ldyB2YWx1ZScpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUgMycpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuY2xlYXIpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jbGVhcikKKworCitjbGFzcyBEaWN0KGRpY3QpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0U3VidHlwZVZlcnNpb25UZXN0cyhEaWN0VmVyc2lvblRlc3RzKToKKyAgICB0eXBlMnRlc3QgPSBEaWN0CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggM2M4Yjk1Yy4uMDg3MzA3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KICMgRm9yIHNjb3BlIHRlc3RpbmcuCiBnID0gIkdsb2JhbCB2YXJpYWJsZSIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCAwYzk5NjUyLi40OWE5ZTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMjQ1LDYgKzI0NiwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpLAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKKyAgICAgICAgZCA9IGRpY3QoYT0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuS2V5c1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuVmFsdWVzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlbXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IGFiOWRlYmYuLjE1NmI1MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEyMiwxNyArMTIyLDE3IEBACiAiIiIKIAogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKLVx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gIFx0IFx0TGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCitcdFx0TGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgIFx0XHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgXHQgXHRMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgXHRoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZFx0CiAiIiIKIAogcGF0Y2g5MTQ1NzVfdG8yID0gIiIiCi0gICAgTGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICAgIFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICAgICAgTGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCisgICAgTGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgICAgXHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgICAgIExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICAgaGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmQKICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IGVhN2EyNGUuLjNlNmE3YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTM4Nyw5ICszODcsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG85X18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4mbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CkBAIC00MDMsOSArNDAzLDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvMTBfXzAiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDwvdGQ+PC90cj4KICAgICAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggMGZkMTM0OC4uYjliNWFjMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTQwLDQxICs0MCw0MSBAQAogCiBkaXNfY19pbnN0YW5jZV9tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQotICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5fX2luaXRfXy5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsKQogCiBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19jX2NsYXNzX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5jbS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsKQogCiBkaXNfY19zdGF0aWNfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxNSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0Muc20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogIyBDbGFzcyBkaXNhc3NlbWJsaW5nIGluZm8gaGFzIGFuIGV4dHJhIG5ld2xpbmUgYXQgZW5kLgpAQCAtOTUsMjMgKzk1LDIzIEBACiAKIGRpc19mID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChwcmludCkKLSAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKLSAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAgOSBQT1BfVE9QCisgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgNiBQT1BfVE9QCiAKLSUzZCAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIiAlIChfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyKQogCiAKIGRpc19mX2NvX2NvZGUgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgOSBQT1BfVE9QCi0gICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgIDYgUE9QX1RPUAorICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIgogCiAKQEAgLTEyMSwyMCArMTIxLDIwIEBACiAgICAgICAgIHBhc3MKIAogZGlzX2J1ZzcwODkwMSA9ICIiIlwKLSUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAyMyAodG8gMjYpCi0gICAgICAgICAgICAgIDMgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorJTNkICAgICAgICAgICAwIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE4ICh0byAyMCkKKyAgICAgICAgICAgICAgMiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocmFuZ2UpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCiAKLSUzZCAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCi0gICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMTUgR0VUX0lURVIKLSAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCi0gICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKKyUzZCAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCisgICAgICAgICAgICAgIDggQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIKKyAgICAgICAgICAgICAxMCBHRVRfSVRFUgorICAgICAgICA+PiAgIDEyIEZPUl9JVEVSICAgICAgICAgICAgICAgICA0ICh0byAxOCkKKyAgICAgICAgICAgICAxNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAocmVzKQogCi0lM2QgICAgICAgICAgMjIgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTYKLSAgICAgICAgPj4gICAyNSBQT1BfQkxPQ0sKLSAgICAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyOSBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAxNiBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMgorICAgICAgICA+PiAgIDE4IFBPUF9CTE9DSworICAgICAgICA+PiAgIDIwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDIyIFJFVFVSTl9WQUxVRQogIiIiICUgKGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAzKQpAQCAtMTQ3LDIyICsxNDcsMjIgQEAKIAogZGlzX2J1ZzEzMzM5ODIgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCi0gICAgICAgICAgICAgIDMgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMzUKLSAgICAgICAgICAgICAgNiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCi0gICAgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKLSAgICAgICAgICAgICAxNSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAotICAgICAgICAgICAgIDE4IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDIxIEdFVF9JVEVSCi0gICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCisgICAgICAgICAgICAgIDIgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMjYKKyAgICAgICAgICAgICAgNCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCisgICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKKyAgICAgICAgICAgICAxMCBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAorICAgICAgICAgICAgIDEyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE0IEdFVF9JVEVSCisgICAgICAgICAgICAgMTYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKIAotJTNkICAgICAgICAgIDI1IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQotICAgICAgICAgICAgIDI4IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAyOSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAzMiBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQorJTNkICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQorICAgICAgICAgICAgIDIwIEJJTkFSWV9BREQKKyAgICAgICAgICAgICAyMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDI0IFJBSVNFX1ZBUkFSR1MgICAgICAgICAgICAxCiAKLSUzZCAgICAgPj4gICAzNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAzOCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyOCBSRVRVUk5fVkFMVUUKICIiIiAlIChidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBfX2ZpbGVfXywKICAgICAgICBidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKQEAgLTE3MSwxOSArMTcxLDE5IEBACiAKIF9CSUdfTElORU5PX0ZPUk1BVCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoc3BhbSkKLSAgICAgICAgICAgICAgMyBQT1BfVE9QCisgICAgICAgICAgICAgIDIgUE9QX1RPUAogICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19tb2R1bGVfZXhwZWN0ZWRfcmVzdWx0cyA9ICIiIlwKIERpc2Fzc2VtYmx5IG9mIGY6CiAgIDQgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKIERpc2Fzc2VtYmx5IG9mIGc6CiAgIDUgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKICIiIgogCkBAIC0xOTEsMjAgKzE5MSw1MiBAQAogCiBkaXNfZXhwcl9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCi0gICAgICAgICAgICAgIDYgQklOQVJZX0FERAotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IEJJTkFSWV9BREQKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBzaW1wbGVfc3RtdF9zdHIgPSAieCA9IHggKyAxIgogCiBkaXNfc2ltcGxlX3N0bXRfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoTm9uZSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCisiIiIKKworYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisKK3g6IGludCA9IDEKK3k6IGZ1bigxKQorbHN0W2Z1bigwKV06IGludCA9IDEKKyIiIgorIyBsZWFkaW5nIG5ld2xpbmUgaXMgZm9yIGEgcmVhc29uICh0ZXN0cyBsaW5lbm8pCisKK2Rpc19hbm5vdF9zdG10X3N0ciA9ICIiIlwKKyAgMiAgICAgICAgICAgMCBTRVRVUF9BTk5PVEFUSU9OUworICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAxIChpbnQpCisgICAgICAgICAgICAgIDggU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDAgKHgpCisKKyAgMyAgICAgICAgICAxMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgIDE0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMTYgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDMgKHkpCisKKyAgNCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAyMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgNCAobHN0KQorICAgICAgICAgICAgIDIyIExPQURfTkFNRSAgICAgICAgICAgICAgICAyIChmdW4pCisgICAgICAgICAgICAgMjQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCisgICAgICAgICAgICAgMjYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyOCBTVE9SRV9TVUJTQ1IKKyAgICAgICAgICAgICAzMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgIDMyIFBPUF9UT1AKKyAgICAgICAgICAgICAzNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAzNiBSRVRVUk5fVkFMVUUKICIiIgogCiBjb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKQEAgLTIxNSw2MCArMjQ3LDgxIEBACiAKIGRpc19jb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAgICAgMyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKIAotICAyICAgICAgICAgICA2IFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE0ICh0byAyMykKKyAgMiAgICAgICAgICAgNCBTRVRVUF9MT09QICAgICAgICAgICAgICAxMiAodG8gMTgpCiAKLSAgMyAgICAgPj4gICAgOSBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxNSBJTlBMQUNFX0FERAotICAgICAgICAgICAgIDE2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE5IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICA5Ci0gICAgICAgICAgICAgMjIgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCi0gICAgICAgICAgICAgMjYgUkVUVVJOX1ZBTFVFCisgIDMgICAgID4+ICAgIDYgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgSU5QTEFDRV9BREQKKyAgICAgICAgICAgICAxMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgNgorICAgICAgICAgICAgIDE2IFBPUF9CTE9DSworICAgICAgICA+PiAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQorICAgICAgICAgICAgIDIwIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc190cmFjZWJhY2sgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfRVhDRVBUICAgICAgICAgICAgMTIgKHRvIDE1KQorJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNCkKIAotJTNkICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQotICAgIC0tPiAgICAgICA5IEJJTkFSWV9UUlVFX0RJVklERQotICAgICAgICAgICAgIDEwIFBPUF9UT1AKLSAgICAgICAgICAgICAxMSBQT1BfQkxPQ0sKLSAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0NiAodG8gNjEpCislM2QgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDApCisgICAgLS0+ICAgICAgIDYgQklOQVJZX1RSVUVfRElWSURFCisgICAgICAgICAgICAgIDggUE9QX1RPUAorICAgICAgICAgICAgIDEwIFBPUF9CTE9DSworICAgICAgICAgICAgIDEyIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDQwICh0byA1NCkKIAotJTNkICAgICA+PiAgIDE1IERVUF9UT1AKKyUzZCAgICAgPj4gICAxNCBEVVBfVE9QCiAgICAgICAgICAgICAgMTYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEV4Y2VwdGlvbikKLSAgICAgICAgICAgICAxOSBDT01QQVJFX09QICAgICAgICAgICAgICAxMCAoZXhjZXB0aW9uIG1hdGNoKQotICAgICAgICAgICAgIDIyIFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDYwCi0gICAgICAgICAgICAgMjUgUE9QX1RPUAotICAgICAgICAgICAgIDI2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDI5IFBPUF9UT1AKLSAgICAgICAgICAgICAzMCBTRVRVUF9GSU5BTExZICAgICAgICAgICAxNCAodG8gNDcpCisgICAgICAgICAgICAgMTggQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKKyAgICAgICAgICAgICAyMCBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA1MgorICAgICAgICAgICAgIDIyIFBPUF9UT1AKKyAgICAgICAgICAgICAyNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAyNiBQT1BfVE9QCisgICAgICAgICAgICAgMjggU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIgKHRvIDQyKQogCi0lM2QgICAgICAgICAgMzMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgMzYgTE9BRF9BVFRSICAgICAgICAgICAgICAgIDEgKF9fdHJhY2ViYWNrX18pCi0gICAgICAgICAgICAgMzkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDEgKHRiKQotICAgICAgICAgICAgIDQyIFBPUF9CTE9DSwotICAgICAgICAgICAgIDQzIFBPUF9FWENFUFQKLSAgICAgICAgICAgICA0NCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgPj4gICA0NyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICA1MCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1MyBERUxFVEVfRkFTVCAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1NiBFTkRfRklOQUxMWQotICAgICAgICAgICAgIDU3IEpVTVBfRk9SV0FSRCAgICAgICAgICAgICAxICh0byA2MSkKLSAgICAgICAgPj4gICA2MCBFTkRfRklOQUxMWQorJTNkICAgICAgICAgIDMwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDMyIExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQorICAgICAgICAgICAgIDM0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKKyAgICAgICAgICAgICAzNiBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAzOCBQT1BfRVhDRVBUCisgICAgICAgICAgICAgNDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgID4+ICAgNDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgNDQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDYgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDggRU5EX0ZJTkFMTFkKKyAgICAgICAgICAgICA1MCBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMiAodG8gNTQpCisgICAgICAgID4+ICAgNTIgRU5EX0ZJTkFMTFkKIAotJTNkICAgICA+PiAgIDYxIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA2NCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICA1NCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgNTYgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDMsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyA0LAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNSkKIAorZGVmIF9mc3RyaW5nKGEsIGIsIGMsIGQpOgorICAgIHJldHVybiBmJ3thfSB7Yjo0fSB7YyFyfSB7ZCFyOjR9JworCitkaXNfZnN0cmluZyA9ICIiIlwKKyUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKKyAgICAgICAgICAgICAgMiBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgMAorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgnICcpCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKGIpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKCc0JykKKyAgICAgICAgICAgICAxMCBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgNCAod2l0aCBmb3JtYXQpCisgICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKCcgJykKKyAgICAgICAgICAgICAxNCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMiAoYykKKyAgICAgICAgICAgICAxNiBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgMiAocmVwcikKKyAgICAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoJyAnKQorICAgICAgICAgICAgIDIwIExPQURfRkFTVCAgICAgICAgICAgICAgICAzIChkKQorICAgICAgICAgICAgIDIyIExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgnNCcpCisgICAgICAgICAgICAgMjQgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDYgKHJlcHIsIHdpdGggZm9ybWF0KQorICAgICAgICAgICAgIDI2IEJVSUxEX1NUUklORyAgICAgICAgICAgICA3CisgICAgICAgICAgICAgMjggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX2ZzdHJpbmcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKwogZGVmIF9nKHgpOgogICAgIHlpZWxkIHgKIApAQCAtMzQ1LDYgKzM5OCw3IEBACiAgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfc3RyKHNlbGYpOgogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoZXhwcl9zdHIsIGRpc19leHByX3N0cikKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KHNpbXBsZV9zdG10X3N0ciwgZGlzX3NpbXBsZV9zdG10X3N0cikKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGFubm90X3N0bXRfc3RyLCBkaXNfYW5ub3Rfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCiAgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CkBAIC0zNzEsNiArNDI1LDkgQEAKICAgICAgICAgZ2VuX2Rpc2FzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoX2coMSkpICAjIERpc2Fzc2VtYmxlIGdlbmVyYXRvciBpdHNlbGYKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5fZGlzYXMsIGdlbl9mdW5jX2Rpc2FzKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfZnN0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KF9mc3RyaW5nLCBkaXNfZnN0cmluZykKKwogICAgIGRlZiB0ZXN0X2Rpc19ub25lKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCkBAIC01NDEsNyArNTk4LDcgQEAKIEt3LW9ubHkgYXJndW1lbnRzOiAwCiBOdW1iZXIgb2YgbG9jYWxzOiAgMgogU3RhY2sgc2l6ZTogICAgICAgIDE3Ci1GbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIEdFTkVSQVRPUiwgTk9GUkVFLCBDT1JPVVRJTkUKK0ZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgTk9GUkVFLCBDT1JPVVRJTkUKIENvbnN0YW50czoKICAgIDA6IE5vbmUKICAgIDE6IDEiIiIKQEAgLTY0OSwxNzEgKzcwNiwxNjkgQEAKIAogSW5zdHJ1Y3Rpb24gPSBkaXMuSW5zdHJ1Y3Rpb24KIGV4cGVjdGVkX29waW5mb19vdXRlciA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0zLCBhcmdyZXByPSczJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9mLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfZiksIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0nJywgYXJncmVwcj0iJyciLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTElTVCcsIG9wY29kZT0xMDMsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTUFQJywgb3Bjb2RlPTEwNSwgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0nSGVsbG8gd29ybGQhJywgYXJncmVwcj0iJ0hlbGxvIHdvcmxkISciLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTcsIGFyZ3ZhbD03LCBhcmdyZXByPSc3IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTU1LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSgzLCA0KSwgYXJncmVwcj0nKDMsIDQpJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2YsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9mKSwgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mJyIsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfRlVOQ1RJT04nLCBvcGNvZGU9MTMyLCBhcmc9OSwgYXJndmFsPTksIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPScnLCBhcmdyZXByPSInJyIsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9MSVNUJywgb3Bjb2RlPTEwMywgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9NQVAnLCBvcGNvZGU9MTA1LCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPSdIZWxsbyB3b3JsZCEnLCBhcmdyZXByPSInSGVsbG8gd29ybGQhJyIsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NywgYXJndmFsPTcsIGFyZ3JlcHI9JycsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2YgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9NSwgYXJncmVwcj0nNScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2lubmVyLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfaW5uZXIpLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lcicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJyIsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfQ0xPU1VSRScsIG9wY29kZT0xMzQsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MzMsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9NDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPSc0IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9NTIsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9KDUsIDYpLCBhcmdyZXByPScoNSwgNiknLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9GVU5DVElPTicsIG9wY29kZT0xMzIsIGFyZz05LCBhcmd2YWw9OSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gWwogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JzYgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2UnLCBhcmdyZXByPSdlJywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTEsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTYsIGFyZ3ZhbD02LCBhcmdyZXByPScnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2p1bXB5ID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD03MSwgYXJncmVwcj0ndG8gNzEnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTQ0LCBhcmd2YWw9NjAsIGFyZ3JlcHI9J3RvIDYwJywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTksIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjksIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NDQsIGFyZ3ZhbD00NCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NDEsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD00Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjEsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD0xNDIsIGFyZ3JlcHI9J3RvIDE0MicsIG9mZnNldD03MSwgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMzEsIGFyZ3ZhbD0xMzEsIGFyZ3JlcHI9JycsIG9mZnNldD03Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTg5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD05Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTk3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTAwLCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MTAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTExNSwgYXJndmFsPTExNSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMTUsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0xMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTI3LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTMyLCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTEzNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTczLCBhcmd2YWw9MjE4LCBhcmdyZXByPSd0byAyMTgnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTYwLCBhcmdyZXByPSd0byAxNjAnLCBvZmZzZXQ9MTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xNTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0xODgsIGFyZ3JlcHI9J3RvIDE4OCcsIG9mZnNldD0xNTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xNjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xODcsIGFyZ3ZhbD0xODcsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTczLCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTc5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjcsIGFyZ3ZhbD0yMTQsIGFyZ3JlcHI9J3RvIDIxNCcsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE3LCBhcmd2YWw9MjExLCBhcmdyZXByPSd0byAyMTEnLCBvZmZzZXQ9MTkxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTk0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5Nywgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0yMDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIwOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9TVEFSVCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjExLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfRklOSVNIJywgb3Bjb2RlPTgyLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIxOCwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTIyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NTIsIGFyZ3ZhbD01NCwgYXJncmVwcj0ndG8gNTQnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz0zMiwgYXJndmFsPTQ0LCBhcmdyZXByPSd0byA0NCcsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MzIsIGFyZ3ZhbD0zMiwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTQwLCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NDYsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz01MiwgYXJndmFsPTEwOCwgYXJncmVwcj0ndG8gMTA4Jywgb2Zmc2V0PTU0LCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTk4LCBhcmd2YWw9OTgsIGFyZ3JlcHI9JycsIG9mZnNldD01OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD02Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD02OCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03Niwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTc4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9ODYsIGFyZ3ZhbD04NiwgYXJncmVwcj0nJywgb2Zmc2V0PTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9ODQsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTQsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTAwLCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTEwMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzAsIGFyZ3ZhbD0xODAsIGFyZ3JlcHI9J3RvIDE4MCcsIG9mZnNldD0xMDgsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xMjQsIGFyZ3JlcHI9J3RvIDEyNCcsIG9mZnNldD0xMTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTExNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE1MiwgYXJncmVwcj0ndG8gMTUyJywgb2Zmc2V0PTEyMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTEyNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTEyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE1MCwgYXJndmFsPTE1MCwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTQwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQ2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI2LCBhcmd2YWw9MTc2LCBhcmdyZXByPSd0byAxNzYnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTUyLCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNCwgYXJndmFsPTE3MCwgYXJncmVwcj0ndG8gMTcwJywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNTgsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE2OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9TVEFSVCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfRklOSVNIJywgb3Bjb2RlPTgyLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTc4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE4MCwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE5MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKICMgT25lIGxhc3QgcGllY2Ugb2YgaW5zcGVjdCBmb2RkZXIgdG8gY2hlY2sgdGhlIGRlZmF1bHQgbGluZSBudW1iZXIgaGFuZGxpbmcKIGRlZiBzaW1wbGUoKTogcGFzcwogZXhwZWN0ZWRfb3BpbmZvX3NpbXBsZSA9IFsKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPXNpbXBsZS5fX2NvZGVfXy5jb19maXJzdGxpbmVubywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSkKIF0KIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKaW5kZXggMzMxNjNiOS4uMjI1OGM2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgLi4uCiAgICAgLi4uIE5vbi1leGFtcGxlIHRleHQuCiAgICAgLi4uCi0gICAgLi4uICAgICA+Pj4gcHJpbnQoJ2Fub3RoZXJcZXhhbXBsZScpCisgICAgLi4uICAgICA+Pj4gcHJpbnQoJ2Fub3RoZXJcXGV4YW1wbGUnKQogICAgIC4uLiAgICAgYW5vdGhlcgogICAgIC4uLiAgICAgZXhhbXBsZQogICAgIC4uLiAnJycKQEAgLTE4NzYsNyArMTg3Niw2IEBACiAgICAgICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAogICAgICAgICBjYXB0dXJlcyBvdXIgZGVidWdnZXIgaW5wdXQ6CiAKLSAgICAgICAgICA+Pj4gaW1wb3J0IHRlbXBmaWxlCiAgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KICAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCiAgICAgICAgICAgLi4uICAgICdwcmludCh4KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBieSB0aGUgZXhhbXBsZQpAQCAtMTkxNyw3ICsxOTE2LDcgQEAKICAgICAgICAgICAuLi4gZmluYWxseToKICAgICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KICAgICAgICAgICAtLVJldHVybi0tCi0gICAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs3XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQogICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQogICAgICAgICAgIChQZGIpIHByaW50KHkpCiAgICAgICAgICAgMgpAQCAtMjc5OCw3ICsyNzk3LDYgQEAKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiICAgICAgICdhYmMgZGVmJ1xuIikKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICBcIlwiXCJcbicpCi0gICAgLi4uICAgICBpbXBvcnQgc2h1dGlsCiAgICAgLi4uICAgICByYzEsIG91dDEsIGVycjEgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZSgKICAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCBmbiwgZm4yKQogICAgIC4uLiAgICAgcmMyLCBvdXQyLCBlcnIyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApAQCAtMjk0MiwxMiArMjk0MCwxMSBAQAogZGVmIHRlc3RfbWFpbigpOgogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgaW4gZG9jdGVzdCBpdHNlbGY6CiAgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKKwogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgZGVmaW5lZCBoZXJlOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9kb2N0ZXN0CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2RvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQogCi1pbXBvcnQgc3lzLCByZSwgaW8KLQogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCiAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2E1MDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkKQEAgLTAsMCArMSwxNzggQEAKK2ltcG9ydCBkaXMKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdAorCisKK2RlZiBhYnNwYXRoKGZpbGVuYW1lKToKKyAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9ImR0cmFjZWRhdGEiKSkKKworCitkZWYgbm9ybWFsaXplX3RyYWNlX291dHB1dChvdXRwdXQpOgorICAgICIiIk5vcm1hbGl6ZSBEVHJhY2Ugb3V0cHV0IGZvciBjb21wYXJpc29uLgorCisgICAgRFRyYWNlIGtlZXBzIGEgcGVyLUNQVSBidWZmZXIsIGFuZCB3aGVuIHNob3dpbmcgdGhlIGZpcmVkIHByb2JlcywgYnVmZmVycworICAgIGFyZSBjb25jYXRlbmF0ZWQuIFNvIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1vdmVzIG91ciB0aHJlYWQgYXJvdW5kLCB0aGUKKyAgICBzdHJhaWdodCByZXN1bHQgY2FuIGJlICJub24tY2F1c2FsIi4gU28gd2UgYWRkIHRpbWVzdGFtcHMgdG8gdGhlIHByb2JlCisgICAgZmlyaW5nLCBzb3J0IGJ5IHRoYXQgZmllbGQsIHRoZW4gc3RyaXAgaXQgZnJvbSB0aGUgb3V0cHV0IiIiCisKKyAgICAjIFdoZW4gY29tcGlsaW5nIHdpdGggJy0td2l0aC1weWRlYnVnJywgc3RyaXAgJ1sjIHJlZnNdJyBkZWJ1ZyBvdXRwdXQuCisgICAgb3V0cHV0ID0gcmUuc3ViKHIiXFtbMC05XSsgcmVmc1xdIiwgIiIsIG91dHB1dCkKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IFsKKyAgICAgICAgICAgIHJvdy5zcGxpdCgiXHQiKQorICAgICAgICAgICAgZm9yIHJvdyBpbiBvdXRwdXQuc3BsaXRsaW5lcygpCisgICAgICAgICAgICBpZiByb3cgYW5kIG5vdCByb3cuc3RhcnRzd2l0aCgnIycpCisgICAgICAgIF0KKyAgICAgICAgcmVzdWx0LnNvcnQoa2V5PWxhbWJkYSByb3c6IGludChyb3dbMF0pKQorICAgICAgICByZXN1bHQgPSBbcm93WzFdIGZvciByb3cgaW4gcmVzdWx0XQorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHJlc3VsdCkKKyAgICBleGNlcHQgKEluZGV4RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICJ0cmFjZXIgcHJvZHVjZWQgdW5wYXJzZWFibGUgb3V0cHV0Olxue30iLmZvcm1hdChvdXRwdXQpCisgICAgICAgICkKKworCitjbGFzcyBUcmFjZUJhY2tlbmQ6CisgICAgRVhURU5TSU9OID0gTm9uZQorICAgIENPTU1BTkQgPSBOb25lCisgICAgQ09NTUFORF9BUkdTID0gW10KKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIGFjdHVhbF9vdXRwdXQgPSBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KHNlbGYudHJhY2VfcHl0aG9uKAorICAgICAgICAgICAgc2NyaXB0X2ZpbGU9YWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04pLAorICAgICAgICAgICAgcHl0aG9uX2ZpbGU9YWJzcGF0aChuYW1lICsgIi5weSIpLAorICAgICAgICAgICAgb3B0aW1pemVfcHl0aG9uPW9wdGltaXplX3B5dGhvbikpCisKKyAgICAgICAgd2l0aCBvcGVuKGFic3BhdGgobmFtZSArIHNlbGYuRVhURU5TSU9OICsgIi5leHBlY3RlZCIpKSBhcyBmOgorICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gZi5yZWFkKCkucnN0cmlwKCkKKworICAgICAgICByZXR1cm4gKGV4cGVjdGVkX291dHB1dCwgYWN0dWFsX291dHB1dCkKKworICAgIGRlZiBnZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5DT01NQU5EICsgW3NjcmlwdF9maWxlXQorICAgICAgICBpZiBzdWJjb21tYW5kOgorICAgICAgICAgICAgY29tbWFuZCArPSBbIi1jIiwgc3ViY29tbWFuZF0KKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworICAgIGRlZiB0cmFjZShzZWxmLCBzY3JpcHRfZmlsZSwgc3ViY29tbWFuZD1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuZ2VuZXJhdGVfdHJhY2VfY29tbWFuZChzY3JpcHRfZmlsZSwgc3ViY29tbWFuZCkKKyAgICAgICAgc3Rkb3V0LCBfID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldHVybiBzdGRvdXQKKworICAgIGRlZiB0cmFjZV9weXRob24oc2VsZiwgc2NyaXB0X2ZpbGUsIHB5dGhvbl9maWxlLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIHB5dGhvbl9mbGFncyA9IFtdCisgICAgICAgIGlmIG9wdGltaXplX3B5dGhvbjoKKyAgICAgICAgICAgIHB5dGhvbl9mbGFncy5leHRlbmQoWyItTyJdICogb3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzdWJjb21tYW5kID0gIiAiLmpvaW4oW3N5cy5leGVjdXRhYmxlXSArIHB5dGhvbl9mbGFncyArIFtweXRob25fZmlsZV0pCisgICAgICAgIHJldHVybiBzZWxmLnRyYWNlKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorCisgICAgZGVmIGFzc2VydF91c2FibGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYudHJhY2UoYWJzcGF0aCgiYXNzZXJ0X3VzYWJsZSIgKyBzZWxmLkVYVEVOU0lPTikpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3RyaXAoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBQZXJtaXNzaW9uRXJyb3IpIGFzIGZuZmU6CisgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZm5mZSkKKyAgICAgICAgaWYgb3V0cHV0ICE9ICJwcm9iZTogc3VjY2VzcyI6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICAgICAgICAgICAie30oMSkgZmFpbGVkOiB7fSIuZm9ybWF0KHNlbGYuQ09NTUFORFswXSwgb3V0cHV0KQorICAgICAgICAgICAgKQorCisKK2NsYXNzIERUcmFjZUJhY2tlbmQoVHJhY2VCYWNrZW5kKToKKyAgICBFWFRFTlNJT04gPSAiLmQiCisgICAgQ09NTUFORCA9IFsiZHRyYWNlIiwgIi1xIiwgIi1zIl0KKworCitjbGFzcyBTeXN0ZW1UYXBCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5zdHAiCisgICAgQ09NTUFORCA9IFsic3RhcCIsICItZyJdCisKKworY2xhc3MgVHJhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB1bml0dGVzdC5UZXN0Q2FzZSBvcHRpb25zCisgICAgbWF4RGlmZiA9IE5vbmUKKworICAgICMgVHJhY2VUZXN0cyBvcHRpb25zCisgICAgYmFja2VuZCA9IE5vbmUKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5iYWNrZW5kLmFzc2VydF91c2FibGUoKQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUpOgorICAgICAgICBhY3R1YWxfb3V0cHV0LCBleHBlY3RlZF9vdXRwdXQgPSBzZWxmLmJhY2tlbmQucnVuX2Nhc2UoCisgICAgICAgICAgICBuYW1lLCBvcHRpbWl6ZV9weXRob249c2VsZi5vcHRpbWl6ZV9weXRob24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fZW50cnlfcmV0dXJuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jYXNlKCJjYWxsX3N0YWNrIikKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9jYWxsX29wY29kZXMoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBvdXIgY2FsbCBzdGFjayB0ZXN0IGhpdHMgYWxsIGZ1bmN0aW9uIGNhbGwgb3Bjb2RlcyIiIgorCisgICAgICAgIG9wY29kZXMgPSBzZXQoWyJDQUxMX0ZVTkNUSU9OIiwgIkNBTExfRlVOQ1RJT05fRVgiLCAiQ0FMTF9GVU5DVElPTl9LVyJdKQorCisgICAgICAgIHdpdGggb3BlbihhYnNwYXRoKCJjYWxsX3N0YWNrLnB5IikpIGFzIGY6CisgICAgICAgICAgICBjb2RlX3N0cmluZyA9IGYucmVhZCgpCisKKyAgICAgICAgZGVmIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoZnVuY25hbWUpOgorICAgICAgICAgICAgIyBSZWNvbXBpbGUgd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb24gc2V0dGluZworICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc291cmNlPWNvZGVfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9IjxzdHJpbmc+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9ImV4ZWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9c2VsZi5vcHRpbWl6ZV9weXRob24pCisKKyAgICAgICAgICAgIGZvciBjIGluIGNvZGUuY29fY29uc3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgdHlwZXMuQ29kZVR5cGUpIGFuZCBjLmNvX25hbWUgPT0gZnVuY25hbWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjKQorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgZm9yIGluc3RydWN0aW9uIGluIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoJ3N0YXJ0Jyk6CisgICAgICAgICAgICBvcGNvZGVzLmRpc2NhcmQoaW5zdHJ1Y3Rpb24ub3BuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG9wY29kZXMpCisKKyAgICBkZWYgdGVzdF9nYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiZ2MiKQorCisgICAgZGVmIHRlc3RfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgibGluZSIpCisKKworY2xhc3MgRFRyYWNlTm9ybWFsVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDAKKworCitjbGFzcyBEVHJhY2VPcHRpbWl6ZWRUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gRFRyYWNlQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMgorCisKK2NsYXNzIFN5c3RlbVRhcE5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgU3lzdGVtVGFwT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IFN5c3RlbVRhcEJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERUcmFjZU5vcm1hbFRlc3RzLCBEVHJhY2VPcHRpbWl6ZWRUZXN0cywgU3lzdGVtVGFwTm9ybWFsVGVzdHMsCisgICAgICAgICAgICAgICAgIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQppbmRleCA1MDgwZWM5Li4zYWUwOTBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CkBAIC0xLDcgKzEsNiBAQAogIyBUZXN0IHRoZSBtb3N0IGR5bmFtaWMgY29ybmVyIGNhc2VzIG9mIFB5dGhvbidzIHJ1bnRpbWUgc2VtYW50aWNzLgogCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHN3YXBfaXRlbSwgc3dhcF9hdHRyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQppbmRleCBhYWJhZDgzLi4yNWY4NmQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xNiwxNCArMTQsOCBAQAogICAgICAgICAjIFJ1biB0aGUgdGVzdGVyIGluIGEgc3ViLXByb2Nlc3MsIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IG9uZQogICAgICAgICAjIHRocmVhZCAoZm9yIHJlbGlhYmxlIHNpZ25hbCBkZWxpdmVyeSkuCiAgICAgICAgIHRlc3RlciA9IHN1cHBvcnQuZmluZGZpbGUoImVpbnRyX3Rlc3Rlci5weSIsIHN1YmRpcj0iZWludHJkYXRhIikKLQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCB0ZXN0ZXJdCi0gICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncykgYXMgcHJvYzoKLSAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Mud2FpdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKHRlc3RlcikKKyAgICAgICAgIyB1c2UgLXUgdG8gdHJ5IHRvIGdldCB0aGUgZnVsbCBvdXRwdXQgaWYgdGhlIHRlc3QgaGFuZ3Mgb3IgY3Jhc2gKKyAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKCItdSIsIHRlc3RlcikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKaW5kZXggZDRhMDNlZS4uODg4NzUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVtYWlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKaW5kZXggZjdhYzBlMy4uMjZlY2U2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtNTgxLDcgKzU4MSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xdW90ZWRfcGFyZW5zKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vXCkgXChcKWJhciknLCAnKGZvb1wpIFwoXCliYXIpJywgJyAnLCBbXSwgJycsIFsnZm9vKSAoKWJhciddKQorICAgICAgICAgICAgcicoZm9vXCkgXChcKWJhciknLCByJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X25vbl9wcmludGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LApAQCAtNjI1LDcgKzYyNSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xc19pbl9uZXN0ZWRfY29tbWVudChzZWxmKToKICAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAotICAgICAgICAgICAgJyhmb28gKGJcKSkpJywgJyhmb28gKGJcKSkpJywgJyAnLCBbXSwgJycsIFsnZm9vIChiXCkpJ10pCisgICAgICAgICAgICByJyhmb28gKGJcKSkpJywgcicoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbcidmb28gKGJcKSknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzJdLmNvbnRlbnQsICdiKScpCiAKICAgICAjIGdldF9jZndzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBmOWNkN2Q5Li4xZTBjYWVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKQEAgLTMsNyArMyw2IEBACiAjIGVtYWlsIHBhY2thZ2UgdW5pdCB0ZXN0cyBmb3IgKG9wdGlvbmFsKSBBc2lhbiBjb2RlY3MKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCA5Yjg2YTJhLi5mOTdjY2M2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC0zMiw2ICszMiw3IEBACiBmcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKIGZyb20gZW1haWwubWltZS5tZXNzYWdlIGltcG9ydCBNSU1FTWVzc2FnZQogZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAorZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAogZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKQEAgLTIwNzgsNyArMjA3OSwxMyBAQAogLS09PT09PT09PT09PT09PT0wMDEyMzk0MTY0PT0tLSIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdldF9wYXlsb2FkKDApLmdldF9wYXlsb2FkKCksICdZWE5rWmc9PScpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9kZWZhdWx0X3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9jdXN0b21fcG9saWN5KHNlbGYpOgorICAgICAgICBtID0gTUlNRUJhc2UoJ211bHRpcGFydCcsICdtaXhlZCcsIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCiAKICMgVGVzdCBzb21lIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcwogY2xhc3MgVGVzdE5vbkNvbmZvcm1hbnQoVGVzdEVtYWlsQmFzZSk6CkBAIC0yNjgwLDYgKzI2ODcsMTkgQEAKICAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cuaXNfbXVsdGlwYXJ0KCkpCiAKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9hbGwoJ3RvJyksIFsnYUBiLmNvbScsICdjQGQuY29tJ10pCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydChwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1zZ1snVG8nXSA9ICdhQGIuY29tJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIG1heSBiZSBhdCBtb3N0IDEgVG8gaGVhZGVycyBpbiBhIG1lc3NhZ2UnKQogCiAjIEEgZ2VuZXJhbCB0ZXN0IG9mIHBhcnNlci0+bW9kZWwtPmdlbmVyYXRvciBpZGVtcG90ZW5jeS4gIElPVywgcmVhZCBhIG1lc3NhZ2UKICMgaW4sIHBhcnNlIGl0IGludG8gYSBtZXNzYWdlIG9iamVjdCB0cmVlLCB0aGVuIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHRyZWUsCkBAIC0zMDMzLDcgKzMwNTMsNyBAQAogCiAgICAgZGVmIHRlc3RfZXNjYXBlX2JhY2tzbGFzaGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCisgICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKChyJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCiAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nKQogICAgICAgICBhID0gcidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwpAQCAtMzM0MCw2ICszMzYwLDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2csIGxpbmVzZXA9J1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgbXNndHh0KQogCisgICAgZGVmIHRlc3RfbWltZV9jbGFzc2VzX3BvbGljeV9hcmd1bWVudChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBhdWRpb2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnUHlCYW5uZXIwNDguZ2lmJywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBiaW5kYXRhID0gZnAucmVhZCgpCisgICAgICAgIGNsYXNzZXMgPSBbCisgICAgICAgICAgICAoTUlNRUFwcGxpY2F0aW9uLCAoJycsKSksCisgICAgICAgICAgICAoTUlNRUF1ZGlvLCAoYXVkaW9kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVJbWFnZSwgKGJpbmRhdGEsKSksCisgICAgICAgICAgICAoTUlNRU1lc3NhZ2UsIChNZXNzYWdlKCksKSksCisgICAgICAgICAgICAoTUlNRU5vbk11bHRpcGFydCwgKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKSksCisgICAgICAgICAgICAoTUlNRVRleHQsICgnJywpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgY2xzLCBjb25zdHJ1Y3RvciBpbiBjbGFzc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xzPWNscy5fX25hbWVfXywgcG9saWN5PSdjb21wYXQzMicpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5jb21wYXQzMikKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nZGVmYXVsdCcpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCisKIAogIyBUZXN0IHRoZSBpdGVyYXRvci9nZW5lcmF0b3JzCiBjbGFzcyBUZXN0SXRlcmF0b3JzKFRlc3RFbWFpbEJhc2UpOgpAQCAtMzQ0OCw3ICszNDg5LDYgQEAKIGNsYXNzIFRlc3RGZWVkUGFyc2VycyhUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBwYXJzZShzZWxmLCBjaHVua3MpOgotICAgICAgICBmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIKICAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoKQogICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgogICAgICAgICAgICAgZmVlZHBhcnNlci5mZWVkKGNodW5rKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggYjFjYmNlMi4uN2M4ODc3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICBkZWYgdGVzdF9zZXRfbWFuZ2xlX2Zyb21fdmlhX3BvbGljeShzZWxmKToKICAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QgdGhhdAotICAgICAgICAgICAgIGZyb20gaXMgbWFuZ2VsZCBpbiB0aGUgYm9keSEKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdsZWQgaW4gdGhlIGJvZHkhCiAKICAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KICAgICAgICAgICAgICIiIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQppbmRleCA1NWVjZGVhLi5hZjgzNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHR5cGVzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IHBvbGljeQogZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CmluZGV4IDQzNDUxNjIuLmYzYTU3ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC03NjQsNiArNzY0LDI2IEBACiAgICAgICAgIG0uc2V0X2NvbnRlbnQoY29udGVudF9tYW5hZ2VyPWNtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ01JTUUtVmVyc2lvbiddLCAnMS4wJykKIAorICAgIGRlZiB0ZXN0X2FzX3N0cmluZ191c2VzX21heF9oZWFkZXJfbGVuZ3RoX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3RfYXNfc3RyaW5nX2FsbG93c19tYXhoZWFkZXJsZW4oc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0wKS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5hc19zdHJpbmcobWF4aGVhZGVybGVuPTM0KS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgNikKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b19wb2xpY3lfbWF4X2xpbmVfbGVuZ3RoKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdHIobSkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3Rfc3RyX2RlZmF1bHRzX3RvX3V0Zjgoc2VsZik6CisgICAgICAgIG0gPSBFbWFpbE1lc3NhZ2UoKQorICAgICAgICBtWydTdWJqZWN0J10gPSAndW5pY8O2ZGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG0pLCAnU3ViamVjdDogdW5pY8O2ZGVcblxuJykKKwogCiBjbGFzcyBUZXN0TUlNRVBhcnQoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgogICAgICMgRG9pbmcgdGhlIGZ1bGwgdGVzdCBydW4gaGVyZSBtYXkgc2VlbSBhIGJpdCByZWR1bmRhbnQsIHNpbmNlIHRoZSB0d28KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CmluZGV4IDhkZGMxNzYzLi4wNmM4NjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBlbWFpbAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZSwgRW1haWxNZXNzYWdlCiBmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAogZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKIApAQCAtMzksMzggKzM5LDcxIEBACiAgICAgICAgICMgVGhlIHVuaWNvZGUgbGluZSBzcGxpdHRlciBzcGxpdHMgb24gdW5pY29kZSBsaW5lYnJlYWtzLCB3aGljaCBhcmUKICAgICAgICAgIyBtb3JlIG51bWVyb3VzIHRoYW4gYWxsb3dlZCBieSB0aGUgZW1haWwgUkZDczsgbWFrZSBzdXJlIHdlIGFyZSBvbmx5CiAgICAgICAgICMgc3BsaXR0aW5nIG9uIHRob3NlIHR3by4KLSAgICAgICAgbXNnID0gc2VsZi5wYXJzZXIoCi0gICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJWZXJ0aWNhbC1UYWI6IG5vdFx2YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCi0gICAgICAgICAgICAiR3JvdXAtU2VwYXJhdG9yOiBub3RceDFEYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJQYXJhZ3JhcGgtU2VwYXJhdG9yOiBub3RcdTIwMjlicm9rZW5cclxuIgotICAgICAgICAgICAgIlxyXG4iLAotICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWwotICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAotICAgICAgICAgICAgKCJOdWxsIiwgIm5vdFx4MDBicm9rZW4iKSwKLSAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCi0gICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGaWxlLVNlcGFyYXRvciIsICJub3RceDFDYnJva2VuIiksCi0gICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCi0gICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAotICAgICAgICAgICAgKCJMaW5lLVNlcGFyYXRvciIsICJub3RcdTIwMjhicm9rZW4iKSwKLSAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKLSAgICAgICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoKSwgIiIpCisgICAgICAgIGZvciBwYXJzZXIgaW4gc2VsZi5wYXJzZXJzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFyc2VyPXBhcnNlci5fX25hbWVfXyk6CisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKAorICAgICAgICAgICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIk51bGw6IG5vdFx4MDBicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkZpbGUtU2VwYXJhdG9yOiBub3RceDFDYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkxpbmUtU2VwYXJhdG9yOiBub3RcdTIwMjhicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBwb2xpY3k9ZGVmYXVsdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWworICAgICAgICAgICAgICAgICAgICAoIk5leHQtTGluZSIsICJub3RceDg1YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRm9ybS1GZWVkIiwgIm5vdFxmYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUmVjb3JkLVNlcGFyYXRvciIsICJub3RceDFFYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorCisgICAgY2xhc3MgTXlNZXNzYWdlKEVtYWlsTWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2ZhY3Rvcnlfb25fcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisKKyAgICBkZWYgdGVzdF9mYWN0b3J5X2FyZ19vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBNZXNzYWdlLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgTWVzc2FnZSkKKworIyBQbGF5IHNvbWUgZ2FtZXMgdG8gZ2V0IG5pY2Ugb3V0cHV0IGluIHN1YlRlc3QuICBUaGlzIGNvZGUgY291bGQgYmUgY2xlYXJlcgorIyBpZiBzdGF0aWNtZXRob2Qgc3VwcG9ydGVkIF9fbmFtZV9fLgorCitkZWYgbWVzc2FnZV9mcm9tX2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5TdHJpbmdJTyhzKQorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdFBhcnNlcihUZXN0UGFyc2VyQmFzZSwgVGVzdEVtYWlsQmFzZSk6Ci0gICAgcGFyc2VyID0gc3RhdGljbWV0aG9kKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgcGFyc2VycyA9IChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nLCBtZXNzYWdlX2Zyb21fZmlsZSkKKworZGVmIG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCAqYXJncywgKiprdyk6CisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKworZGVmIG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShzLCAqYXJncywgKiprdyk6CisgICAgZiA9IGlvLkJ5dGVzSU8ocy5lbmNvZGUoKSkKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsICphcmdzLCAqKmt3KQogCiBjbGFzcyBUZXN0Qnl0ZXNQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIGRlZiBwYXJzZXIoc2VsZiwgcywgKmFyZ3MsICoqa3cpOgotICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKHMuZW5jb2RlKCksICphcmdzLCAqKmt3KQorICAgIHBhcnNlcnMgPSAobWVzc2FnZV9mcm9tX2J5dGVzLCBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CmluZGV4IDcwYWM0ZGIuLjhmZWNiOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBlbWFpbC5wb2xpY3kKIGltcG9ydCBlbWFpbC5wYXJzZXIKIGltcG9ydCBlbWFpbC5nZW5lcmF0b3IKK2ltcG9ydCBlbWFpbC5tZXNzYWdlCiBmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQogCiBkZWYgbWFrZV9kZWZhdWx0cyhiYXNlX2RlZmF1bHRzLCBkaWZmZXJlbmNlcyk6CkBAIC0yMyw2ICsyNCw3IEBACiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCisgICAgICAgICdtZXNzYWdlX2ZhY3RvcnknOiAgICAgICAgICBOb25lLAogICAgICAgICB9CiAgICAgIyBUaGVzZSBkZWZhdWx0IHZhbHVlcyBhcmUgdGhlIG9uZXMgc2V0IG9uIGVtYWlsLnBvbGljeS5kZWZhdWx0LgogICAgICMgSWYgYW55IG9mIHRoZXNlIGRlZmF1bHRzIGNoYW5nZSwgdGhlIGRvY3MgbXVzdCBiZSB1cGRhdGVkLgpAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UsCiAgICAgICAgIH0pCiAKICAgICAjIEZvciBlYWNoIHBvbGljeSB1bmRlciB0ZXN0LCB3ZSBnaXZlIGhlcmUgd2hhdCB3ZSBleHBlY3QgdGhlIGRlZmF1bHRzIHRvCkBAIC02MiwyMCArNjUsMjIgQEAKICAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKICAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNoYW5nZSB7fSBkb2NzL2RvY3N0cmluZ3MgaWYgZGVmYXVsdHMgaGF2ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiKS5mb3JtYXQocG9saWN5KSkKIAogICAgIGRlZiB0ZXN0X2FsbF9hdHRyaWJ1dGVzX2NvdmVyZWQoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwb2xpY3kpOgotICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKIAogICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMjM3LDYgKzI0Miw5IEBACiAgICAgIyB3aW5zKSwgYnV0IHRoYXQgdGhlIG9yZGVyIHN0aWxsIHdvcmtzIChyaWdodCBvdmVycmlkZXMgbGVmdCkuCiAKIAorY2xhc3MgVGVzdEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKwogY2xhc3MgVGVzdFBvbGljeVByb3BhZ2F0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgVGhlIGFic3RyYWN0IG1ldGhvZHMgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBidXQgbm90IGJ5IHRoZSB3cmFwcGVyCkBAIC0yNDQsNDAgKzI1Miw0MCBAQAogICAgICMgcG9saWN5IHdhcyBhY3R1YWxseSBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IHRvIGZlZWRwYXJzZXIuCiAgICAgY2xhc3MgTXlQb2xpY3koZW1haWwucG9saWN5LlBvbGljeSk6CiAgICAgICAgIGRlZiBiYWRtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ0ZXN0IikKKyAgICAgICAgICAgIHJhaXNlIFRlc3RFeGNlcHRpb24oInRlc3QiKQogICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCiAgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCiAKICAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKIAogICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCBhNzhjYTE0Li45YjA0YzE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtOSwxOSArOSw2IEBACiBpbXBvcnQgZW5zdXJlcGlwCiBpbXBvcnQgZW5zdXJlcGlwLl91bmluc3RhbGwKIAotIyBwaXAgY3VycmVudGx5IHJlcXVpcmVzIHNzbCBzdXBwb3J0LCBzbyB3ZSBlbnN1cmUgd2UgaGFuZGxlCi0jIGl0IGJlaW5nIG1pc3NpbmcgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKLWVuc3VyZXBpcF9ub19zc2wgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiZW5zdXJlcGlwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsic3NsIl0pCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGRlZiByZXF1aXJlc191c2FibGVfcGlwKGYpOgotICAgICAgICBkZWNvID0gdW5pdHRlc3Quc2tpcChlbnN1cmVwaXAuX01JU1NJTkdfU1NMX01FU1NBR0UpCi0gICAgICAgIHJldHVybiBkZWNvKGYpCi1lbHNlOgotICAgIGRlZiByZXF1aXJlc191c2FibGVfcGlwKGYpOgotICAgICAgICByZXR1cm4gZgogCiBjbGFzcyBUZXN0RW5zdXJlUGlwVmVyc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQ3LDcgKzM0LDYgQEAKIAogY2xhc3MgVGVzdEJvb3RzdHJhcChFbnN1cmVwaXBNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9iYXNpY19ib290c3RyYXBwaW5nKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKCkKIApAQCAtNjIsNyArNDgsNiBAQAogICAgICAgICBhZGRpdGlvbmFsX3BhdGhzID0gc2VsZi5ydW5fcGlwLmNhbGxfYXJnc1swXVsxXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRpdGlvbmFsX3BhdGhzKSwgMikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3Jvb3Qoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAocm9vdD0iL2Zvby9iYXIvIikKIApAQCAtNzUsNyArNjAsNiBAQAogICAgICAgICAgICAgdW5pdHRlc3QubW9jay5BTlksCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3VzZXIoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodXNlcj1UcnVlKQogCkBAIC04Nyw3ICs3MSw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdXBncmFkZShzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh1cGdyYWRlPVRydWUpCiAKQEAgLTk5LDcgKzgyLDYgQEAKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suQU5ZLAogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF92ZXJib3NpdHlfMShzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh2ZXJib3NpdHk9MSkKIApAQCAtMTExLDcgKzkzLDYgQEAKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suQU5ZLAogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF92ZXJib3NpdHlfMihzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh2ZXJib3NpdHk9MikKIApAQCAtMTIzLDcgKzEwNCw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdmVyYm9zaXR5XzMoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodmVyYm9zaXR5PTMpCiAKQEAgLTEzNSwxNyArMTE1LDE0IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfcmVndWxhcl9pbnN0YWxsKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIkVOU1VSRVBJUF9PUFRJT05TIl0sICJpbnN0YWxsIikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX2FsdF9pbnN0YWxsKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGFsdGluc3RhbGw9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIkVOU1VSRVBJUF9PUFRJT05TIl0sICJhbHRpbnN0YWxsIikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX2RlZmF1bHRfcGlwKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGRlZmF1bHRfcGlwPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkVOU1VSRVBJUF9PUFRJT05TIiwgc2VsZi5vc19lbnZpcm9uKQpAQCAtMTU1LDcgKzEzMiw2IEBACiAgICAgICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGFsdGluc3RhbGw9VHJ1ZSwgZGVmYXVsdF9waXA9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9waXBfZW52aXJvbm1lbnRfdmFyaWFibGVzX3JlbW92ZWQoc2VsZik6CiAgICAgICAgICMgZW5zdXJlcGlwIGRlbGliZXJhdGVseSBpZ25vcmVzIGFsbCBwaXAgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTczNCBmb3IgZGV0YWlscwpAQCAtMTYzLDcgKzEzOSw2IEBACiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJQSVBfVEhJU19TSE9VTERfR09fQVdBWSIsIHNlbGYub3NfZW52aXJvbikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2NvbmZpZ19maWxlX2Rpc2FibGVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyB0aGUgcGlwIGNvbmZpZyBmaWxlCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDA1MyBmb3IgZGV0YWlscwpAQCAtMjA1LDcgKzE4MCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKIAogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF91bmluc3RhbGwoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsX2hlbHBlcigpCkBAIC0yMTcsNyArMTkxLDYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF91bmluc3RhbGxfd2l0aF92ZXJib3NpdHlfMShzZWxmKToKICAgICAgICAgd2l0aCBmYWtlX3BpcCgpOgogICAgICAgICAgICAgZW5zdXJlcGlwLl91bmluc3RhbGxfaGVscGVyKHZlcmJvc2l0eT0xKQpAQCAtMjI5LDcgKzIwMiw2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfdW5pbnN0YWxsX3dpdGhfdmVyYm9zaXR5XzIoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsX2hlbHBlcih2ZXJib3NpdHk9MikKQEAgLTI0MSw3ICsyMTMsNiBAQAogICAgICAgICAgICAgXQogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X3VuaW5zdGFsbF93aXRoX3ZlcmJvc2l0eV8zKHNlbGYpOgogICAgICAgICB3aXRoIGZha2VfcGlwKCk6CiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIodmVyYm9zaXR5PTMpCkBAIC0yNTMsNyArMjI0LDYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9waXBfZW52aXJvbm1lbnRfdmFyaWFibGVzX3JlbW92ZWQoc2VsZik6CiAgICAgICAgICMgZW5zdXJlcGlwIGRlbGliZXJhdGVseSBpZ25vcmVzIGFsbCBwaXAgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTczNCBmb3IgZGV0YWlscwpAQCAtMjYyLDcgKzIzMiw2IEBACiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJQSVBfVEhJU19TSE9VTERfR09fQVdBWSIsIHNlbGYub3NfZW52aXJvbikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2NvbmZpZ19maWxlX2Rpc2FibGVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyB0aGUgcGlwIGNvbmZpZyBmaWxlCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDA1MyBmb3IgZGV0YWlscwpAQCAtMjcxLDQ0ICsyNDAsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIlBJUF9DT05GSUdfRklMRSJdLCBvcy5kZXZudWxsKQogCiAKLWNsYXNzIFRlc3RNaXNzaW5nU1NMKEVuc3VyZXBpcE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHN5cy5tb2R1bGVzWyJlbnN1cmVwaXAiXSA9IGVuc3VyZXBpcF9ub19zc2wKLSAgICAgICAgQHNlbGYuYWRkQ2xlYW51cAotICAgICAgICBkZWYgcmVzdG9yZV9tb2R1bGUoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzWyJlbnN1cmVwaXAiXSA9IGVuc3VyZXBpcAotICAgICAgICBzdXBlcigpLnNldFVwKCkKLQotICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcF9yZXF1aXJlc19zc2woc2VsZik6Ci0gICAgICAgIHNlbGYub3NfZW52aXJvblsiUElQX1RISVNfU0hPVUxEX1NUQVkiXSA9ICJ0ZXN0IGZvZGRlciIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgInJlcXVpcmVzIFNTTC9UTFMiKToKLSAgICAgICAgICAgIGVuc3VyZXBpcF9ub19zc2wuYm9vdHN0cmFwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEluKCJQSVBfVEhJU19TSE9VTERfU1RBWSIsIHNlbGYub3NfZW52aXJvbikKLQotICAgIGRlZiB0ZXN0X3VuaW5zdGFsbF9yZXF1aXJlc19zc2woc2VsZik6Ci0gICAgICAgIHNlbGYub3NfZW52aXJvblsiUElQX1RISVNfU0hPVUxEX1NUQVkiXSA9ICJ0ZXN0IGZvZGRlciIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgInJlcXVpcmVzIFNTTC9UTFMiKToKLSAgICAgICAgICAgIHdpdGggZmFrZV9waXAoKToKLSAgICAgICAgICAgICAgICBlbnN1cmVwaXBfbm9fc3NsLl91bmluc3RhbGxfaGVscGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEluKCJQSVBfVEhJU19TSE9VTERfU1RBWSIsIHNlbGYub3NfZW52aXJvbikKLQotICAgIGRlZiB0ZXN0X21haW5fZXhpdHNfZWFybHlfd2l0aF93YXJuaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6Ci0gICAgICAgICAgICBlbnN1cmVwaXBfbm9fc3NsLl9tYWluKFsiLS12ZXJzaW9uIl0pCi0gICAgICAgIHdhcm5pbmcgPSBzdGRlcnIuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YXJuaW5nLmVuZHN3aXRoKCJyZXF1aXJlcyBTU0wvVExTIiksIHdhcm5pbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKLQogIyBCYXNpYyB0ZXN0aW5nIG9mIHRoZSBtYWluIGZ1bmN0aW9ucyBhbmQgdGhlaXIgYXJndW1lbnQgcGFyc2luZwogCiBFWFBFQ1RFRF9WRVJTSU9OX09VVFBVVCA9ICJwaXAgIiArIGVuc3VyZXBpcC5fUElQX1ZFUlNJT04KIAogY2xhc3MgVGVzdEJvb3RzdHJhcHBpbmdNYWluRnVuY3Rpb24oRW5zdXJlcGlwTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6CkBAIC0zMTcsNyArMjU0LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIEVYUEVDVEVEX1ZFUlNJT05fT1VUUFVUKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3BpcC5jYWxsZWQpCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jhc2ljX2Jvb3RzdHJhcHBpbmcoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5fbWFpbihbXSkKIApAQCAtMzQyLDcgKzI3OCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBFWFBFQ1RFRF9WRVJTSU9OX09VVFBVVCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9iYXNpY191bmluc3RhbGwoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsLl9tYWluKFtdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDYzMGIxNTUuLmU5N2VmOTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTMsOSArMywxMCBAQAogaW1wb3J0IHB5ZG9jCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCB1bmlxdWUKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bSwgRW51bU1ldGEsIEZsYWcsIEludEZsYWcsIHVuaXF1ZSwgYXV0bwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMsIFBpY2tsaW5nRXJyb3IsIEhJR0hFU1RfUFJPVE9DT0wKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIGZvciBwaWNrbGUgdGVzdHMKIHRyeToKQEAgLTMyLDYgKzMzLDE0IEBACiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICBGbG9hdFN0b29nZXMgPSBleGMKIAordHJ5OgorICAgIGNsYXNzIEZsYWdTdG9vZ2VzKEZsYWcpOgorICAgICAgICBMQVJSWSA9IDEKKyAgICAgICAgQ1VSTFkgPSAyCisgICAgICAgIE1PRSA9IDMKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIEZsYWdTdG9vZ2VzID0gZXhjCisKICMgZm9yIHBpY2tsZSB0ZXN0IGFuZCBzdWJjbGFzcyB0ZXN0cwogdHJ5OgogICAgIGNsYXNzIFN0ckVudW0oc3RyLCBFbnVtKToKQEAgLTYwLDkgKzY5LDkgQEAKICMgZm9yIGRvY3Rlc3RzCiB0cnk6CiAgICAgY2xhc3MgRnJ1aXQoRW51bSk6Ci0gICAgICAgIHRvbWF0byA9IDEKLSAgICAgICAgYmFuYW5hID0gMgotICAgICAgICBjaGVycnkgPSAzCisgICAgICAgIFRPTUFUTyA9IDEKKyAgICAgICAgQkFOQU5BID0gMgorICAgICAgICBDSEVSUlkgPSAzCiBleGNlcHQgRXhjZXB0aW9uOgogICAgIHBhc3MKIApAQCAtMTA0LDYgKzExMyw3IEBACiAgICAgICAgICAgICAgICAgJ19fJywgJ19fXycsICdfX19fJywgJ19fX19fJywpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnVtLl9pc19kdW5kZXIocykpCiAKKyMgdGVzdHMKIAogY2xhc3MgVGVzdEVudW0odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yODMsNiArMjkzLDI4IEBACiAgICAgICAgICAgICBjbGFzcyBXcm9uZyhFbnVtKToKICAgICAgICAgICAgICAgICBfYW55X25hbWVfID0gOQogCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgIyBwbGFpbiBFbnVtIG1lbWJlcnMgYXJlIGFsd2F5cyBUcnVlCisgICAgICAgIGNsYXNzIExvZ2ljKEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IFRydWUKKyAgICAgICAgICAgIGZhbHNlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShMb2dpYy5mYWxzZSkKKyAgICAgICAgIyB1bmxlc3Mgb3ZlcnJpZGRlbgorICAgICAgICBjbGFzcyBSZWFsTG9naWMoRW51bSk6CisgICAgICAgICAgICB0cnVlID0gVHJ1ZQorICAgICAgICAgICAgZmFsc2UgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBib29sKHNlbGYuX3ZhbHVlXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFJlYWxMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFJlYWxMb2dpYy5mYWxzZSkKKyAgICAgICAgIyBtaXhlZCBFbnVtcyBkZXBlbmQgb24gbWl4ZWQtaW4gdHlwZQorICAgICAgICBjbGFzcyBJbnRMb2dpYyhpbnQsIEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IDEKKyAgICAgICAgICAgIGZhbHNlID0gMAorICAgICAgICBzZWxmLmFzc2VydFRydWUoSW50TG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShJbnRMb2dpYy5mYWxzZSkKKwogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgogICAgICAgICBTZWFzb24gPSBzZWxmLlNlYXNvbgogICAgICAgICBzZWxmLmFzc2VydEluKFNlYXNvbi5BVVRVTU4sIFNlYXNvbikKQEAgLTE1NDcsNiArMTU3OSw3MDEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0KDEpLCBMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQpCiAKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAzKQorCisgICAgZGVmIHRlc3RfYXV0b19uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsICdibHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgJ2dyZWVuJykKKworICAgIGRlZiB0ZXN0X2F1dG9fbmFtZV9pbmhlcml0KHNlbGYpOgorICAgICAgICBjbGFzcyBBdXRvTmFtZUVudW0oRW51bSk6CisgICAgICAgICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgY2xhc3MgQ29sb3IoQXV0b05hbWVFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAnYmx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsICdncmVlbicpCisKKyAgICBkZWYgdGVzdF9hdXRvX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gJ3JlZCcKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAxKQorCisgICAgZGVmIHRlc3RfYXV0b19nYXJiYWdlX2NvcnJlY3RlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAncmVkJworICAgICAgICAgICAgYmx1ZSA9IDIKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgMykKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9hdXRvKHNlbGYpOgorICAgICAgICBjbGFzcyBEdXBlcyhFbnVtKToKKyAgICAgICAgICAgIGZpcnN0ID0gcHJpbWVybyA9IGF1dG8oKQorICAgICAgICAgICAgc2Vjb25kID0gYXV0bygpCisgICAgICAgICAgICB0aGlyZCA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtEdXBlcy5maXJzdCwgRHVwZXMuc2Vjb25kLCBEdXBlcy50aGlyZF0sIGxpc3QoRHVwZXMpKQorCisKK2NsYXNzIFRlc3RPcmRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193cm9uZ19vcmRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIGdyZWVuID0gMgorCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9vcmRlcl9oYXNfZXh0cmFfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisgICAgZGVmIHRlc3RfZW51bV9oYXNfZXh0cmFfbWVtYmVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgcHVycGxlID0gNAorICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworCitjbGFzcyBUZXN0RmxhZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgdGhlIEZsYWdzLiIiIgorCisgICAgY2xhc3MgUGVybShGbGFnKToKKyAgICAgICAgUiwgVywgWCA9IDQsIDIsIDEKKworICAgIGNsYXNzIE9wZW4oRmxhZyk6CisgICAgICAgIFJPID0gMAorICAgICAgICBXTyA9IDEKKyAgICAgICAgUlcgPSAyCisgICAgICAgIEFDID0gMworICAgICAgICBDRSA9IDE8PDE5CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SKSwgJ1Blcm0uUicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uVyksICdQZXJtLlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlgpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlIpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5XKSwgJ1Blcm0uUnxYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uWCksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XKSksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPKSwgJ09wZW4uUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPKSwgJ09wZW4uV08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLkFDKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPIHwgT3Blbi5DRSksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnT3Blbi5DRXxXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiksICc8UGVybS5SOiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlcpLCAnPFBlcm0uVzogMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5YKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICc8UGVybS5SfFd8WDogNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5SKSwgJzxQZXJtLld8WDogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IDU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlgpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVykpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyksICc8T3Blbi5STzogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyksICc8T3Blbi5XTzogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5BQyksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0V8V086IDUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUN8Uld8V086IDUyNDI5MT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IDUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uQUMpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJzxPcGVuLlJXOiAyPicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaiksIFBlcm0oaS52YWx1ZSB8IGoudmFsdWUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgUldYLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhSV1ggJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIF4gUGVybSgwKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUGVybSgwKSBeIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIF4gT3Blbi5DRSwgT3Blbi5DRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLkNFIF4gT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh+aSksIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5+aSwgaSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMofn5pLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5XTyAmIH5PcGVuLldPLCBPcGVuLlJPKQorICAgICAgICBzZWxmLmFzc2VydElzKChPcGVuLldPfE9wZW4uQ0UpICYgfk9wZW4uV08sIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShGbGFnU3Rvb2dlcywgRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIEZsYWdTdG9vZ2VzCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcy5DVVJMWXxGbGFnU3Rvb2dlcy5NT0UpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgNCkKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdJbnZhbGlkIEZsYWcgdmFsdWU6IC5ub3QgYW4gaW50LicpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgICAgICAgICAgICAgcmVkID0gJ25vdCBhbiBpbnQnCisgICAgICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorCisgICAgZGVmIHRlc3RfY2FzY2FkaW5nX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIGNsYXNzIEJpemFycmUoRmxhZyk6CisgICAgICAgICAgICBjID0gMworICAgICAgICAgICAgZCA9IDQKKyAgICAgICAgICAgIGYgPSA2CisgICAgICAgICMgQml6YXJyZS5jIHwgQml6YXJyZS5kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjUgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjUgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjIgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjIgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjEgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjEgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYXV0byhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVwZXMoRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9IHByaW1lcm8gPSBhdXRvKCkKKyAgICAgICAgICAgIHNlY29uZCA9IGF1dG8oKQorICAgICAgICAgICAgdGhpcmQgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRHVwZXMuZmlyc3QsIER1cGVzLnNlY29uZCwgRHVwZXMudGhpcmRdLCBsaXN0KER1cGVzKSkKKworICAgIGRlZiB0ZXN0X2JpemFycmUoc2VsZik6CisgICAgICAgIGNsYXNzIEJpemFycmUoRmxhZyk6CisgICAgICAgICAgICBiID0gMworICAgICAgICAgICAgYyA9IDQKKyAgICAgICAgICAgIGQgPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihCaXphcnJlKDcpKSwgJzxCaXphcnJlLmR8Y3xiOiA3PicpCisKKworY2xhc3MgVGVzdEludEZsYWcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9mIHRoZSBJbnRGbGFncy4iIiIKKworICAgIGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgICAgIFggPSAxIDw8IDAKKyAgICAgICAgVyA9IDEgPDwgMQorICAgICAgICBSID0gMSA8PCAyCisKKyAgICBjbGFzcyBPcGVuKEludEZsYWcpOgorICAgICAgICBSTyA9IDAKKyAgICAgICAgV08gPSAxCisgICAgICAgIFJXID0gMgorICAgICAgICBBQyA9IDMKKyAgICAgICAgQ0UgPSAxPDwxOQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmLCBQZXJtKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZi52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUGVybS5XIHwgUGVybS5YLCBQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJtLlcgfCBQZXJtLlgsIDMpCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmLCBPcGVuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZi52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoT3Blbi5XTyB8IE9wZW4uUlcsIE9wZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9wZW4uV08gfCBPcGVuLlJXLCAzKQorCisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SKSwgJ1Blcm0uUicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uVyksICdQZXJtLlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlgpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCA4KSwgJ1Blcm0uOHxSJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSgwKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDgpKSwgJ1Blcm0uOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlIpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5XKSwgJ1Blcm0uUnxYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uWCksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XKSksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnUGVybS4tOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgOCkpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH4wKSksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+OCkpLCAnUGVybS5SfFd8WCcpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPKSwgJ09wZW4uUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPKSwgJ09wZW4uV08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLkFDKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPIHwgT3Blbi5DRSksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnT3Blbi5DRXxXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4oNCkpLCAnT3Blbi40JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uUk8pLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLldPKSwgJ09wZW4uQ0V8UlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5BQyksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnT3Blbi5BQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJ09wZW4uUlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKH40KSksICdPcGVuLkNFfEFDfFJXfFdPJykKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiksICc8UGVybS5SOiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlcpLCAnPFBlcm0uVzogMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5YKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICc8UGVybS5SfFd8WDogNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgOCksICc8UGVybS44fFI6IDEyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDApKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oOCkpLCAnPFBlcm0uODogOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uUiksICc8UGVybS5XfFg6IC01PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5XKSwgJzxQZXJtLlJ8WDogLTM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlgpLCAnPFBlcm0uUnxXOiAtMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJzxQZXJtLlg6IC03PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnPFBlcm0uLTg6IC04PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IDgpKSwgJzxQZXJtLld8WDogLTEzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH4wKSksICc8UGVybS5SfFd8WDogLTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjgpKSwgJzxQZXJtLlJ8V3xYOiAtOT4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4oNCkpLCAnPE9wZW4uNDogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUN8Uld8V086IC0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5XTyksICc8T3Blbi5DRXxSVzogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLkFDKSwgJzxPcGVuLkNFOiAtND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUN8Uld8V086IC01MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJzxPcGVuLlJXOiAtNTI0MjkwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuKH40KSksICc8T3Blbi5DRXxBQ3xSV3xXTzogLTU+JykKKworICAgIGRlZiB0ZXN0X29yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogfCBpLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIHwgaSkudmFsdWUsIGogfCBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIHwgaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgMCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoMCB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgai52YWx1ZSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqICYgaSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiAmIGkpLnZhbHVlLCBqICYgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiAmIGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIDcsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDcgJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiBeIGksIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogXiBpKS52YWx1ZSwgaiBeIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogXiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5pLCB+aS52YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKH5pKS52YWx1ZSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUiwgVywgWCA9IFBlcm0KKyAgICAgICAgUlcgPSBSIHwgVworICAgICAgICBSWCA9IFIgfCBYCisgICAgICAgIFdYID0gVyB8IFgKKyAgICAgICAgUldYID0gUiB8IFcgfCBYCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUiBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShXIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFggaW4gUlcpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQogCiBjbGFzcyBUZXN0VW5pcXVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTczOSw1ICsyNDY2LDQ3IEBACiAgICAgICAgIGlmIGZhaWxlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVzdWx0IGRvZXMgbm90IGVxdWFsIGV4cGVjdGVkLCBzZWUgcHJpbnQgYWJvdmUiKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBlbnVtKQorCisKKyMgVGhlc2UgYXJlIHVub3JkZXJlZCBoZXJlIG9uIHB1cnBvc2UgdG8gZW5zdXJlIHRoYXQgZGVjbGFyYXRpb24gb3JkZXIKKyMgbWFrZXMgbm8gZGlmZmVyZW5jZS4KK0NPTlZFUlRfVEVTVF9OQU1FX0QgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9DID0gNQorQ09OVkVSVF9URVNUX05BTUVfQiA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0EgPSA1ICAjIFRoaXMgb25lIHNob3VsZCBzb3J0IGZpcnN0LgorQ09OVkVSVF9URVNUX05BTUVfRSA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0YgPSA1CisKK2NsYXNzIFRlc3RJbnRFbnVtQ29udmVydCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY29udmVydF92YWx1ZV9sb29rdXBfcHJpb3JpdHkoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIFdlIGRvbid0IHdhbnQgdGhlIHJldmVyc2UgbG9va3VwIHZhbHVlIHRvIHZhcnkgd2hlbiB0aGVyZSBhcmUKKyAgICAgICAgIyBtdWx0aXBsZSBwb3NzaWJsZSBuYW1lcyBmb3IgYSBnaXZlbiB2YWx1ZS4gIEl0IHNob3VsZCBhbHdheXMKKyAgICAgICAgIyByZXBvcnQgdGhlIGZpcnN0IGxleGlncmFwaGljYWwgbmFtZSBpbiB0aGF0IGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlKDUpLm5hbWUsICdDT05WRVJUX1RFU1RfTkFNRV9BJykKKworICAgIGRlZiB0ZXN0X2NvbnZlcnQoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBoYXMgYWxsIG9mIHRoZSBkZXNpcmVkIG5hbWVzIGFuZCB2YWx1ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0IsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0MsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0QsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0UsIDUpCisgICAgICAgICMgRW5zdXJlIHRoYXQgdGVzdF90eXBlIG9ubHkgcGlja2VkIHVwIG5hbWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW25hbWUgZm9yIG5hbWUgaW4gZGlyKHRlc3RfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZVswOjJdIG5vdCBpbiAoJ0NPJywgJ19fJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBtc2c9J05hbWVzIG90aGVyIHRoYW4gQ09OVkVSVF9URVNUXyogZm91bmQuJykKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQppbmRleCAyNjMwY2YyLi5lNDU1YWRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgZGVmIHRlc3Rfb2JqbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBPYmplY3RzIG11c3QgaGF2ZSBfX2xlbl9fKCkgYW5kIF9fZ2V0aXRlbV9fKCkgaW1wbGVtZW50ZWQuCiAgICAgICAgIGNsYXNzIE5vTGVuKG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZik6IHJldHVybiAxCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6IHJldHVybiAxCiAgICAgICAgIG5sID0gTm9MZW4oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBubCkKIApAQCAtMjMyLDYgKzIzMiwxMyBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICAgICAgY2xhc3MgQmxvY2tlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAyCisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIGIgPSBCbG9ja2VkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgYikKKwogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKICAgICAgICAgZm9yIGRhdGEgaW4gJ2FiYycsIHJhbmdlKDUpLCB0dXBsZShlbnVtZXJhdGUoJ2FiYycpKSwgcmFuZ2UoMSwxNyw1KToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKHJldmVyc2VkKGRhdGEpLCBsaXN0KGRhdGEpWzo6LTFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggYTczNTllOS4uYTdhZmY4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC0yOCw3ICsyOCw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAiZXBvbGwiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCB3b3JrcyBvbmx5IG9uIExpbnV4IDIuNiIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQppbmRleCA3YjBkNDY1Li44NjQ5NTk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBlcnJubwogZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggOTZjM2E0OC4uNDgzNzkyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtMTEwOSw3ICsxMTA5LDYgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIEltcG9ydEVycm9yKGludmFsaWQ9J2tleXdvcmQnKQogCi0gICAgICAgIG1zZyA9ICInaW52YWxpZHxhbm90aGVyJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBJbXBvcnRFcnJvcigndGVzdCcsIGludmFsaWQ9J2tleXdvcmQnLCBhbm90aGVyPVRydWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCA5Y2IwZDM4Li4wNDNkZjAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC0yMzgsNiArMjM4LDExIEBACiAgICAgICAuLi4KICAgICBUeXBlRXJyb3I6IGgoKSBhcmd1bWVudCBhZnRlciAqIG11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCBmdW5jdGlvbgogCisgICAgPj4+IGgoKlsxXSwgKmgpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgZnVuY3Rpb24KKwogICAgID4+PiBkaXIoKmgpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CmluZGV4IDE1NjJlZWMuLmJkZDhkMWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyLCBpc19hbmRyb2lkLCByZXF1aXJlc19hbmRyb2lkX2xldmVsCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CkBAIC0yMyw2ICsyMyw3IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiBUSU1FT1VUID0gMC41CitNU19XSU5ET1dTID0gKG9zLm5hbWUgPT0gJ250JykKIAogZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKICAgICByZWdleCA9IGhlYWRlcgpAQCAtNDEsNiArNDIsMTAgQEAKICAgICBmaW5hbGx5OgogICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKIAorZGVmIHJlcXVpcmVzX3JhaXNlKHRlc3QpOgorICAgIHJldHVybiAodGVzdCBpZiBub3QgaXNfYW5kcm9pZCBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX2FuZHJvaWRfbGV2ZWwoMjQsICdyYWlzZSgpIGlzIGJ1Z2d5JykodGVzdCkpCisKIGNsYXNzIEZhdWx0SGFuZGxlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgZ2V0X291dHB1dChzZWxmLCBjb2RlLCBmaWxlbmFtZT1Ob25lLCBmZD1Ob25lKToKICAgICAgICAgIiIiCkBAIC01OCw4ICs2Myw5IEBACiAgICAgICAgICAgICBwYXNzX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CiAgICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgcGFzc19mZHM9cGFzc19mZHMpCi0gICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHdpdGggcHJvY2VzczoKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgIGlmIGZpbGVuYW1lOgpAQCAtNzMsMTQgKzc5LDExIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGNsb3NlZmQ9RmFsc2UpIGFzIGZwOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCi0gICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCiAgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQogCi0gICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmZD1Ob25lKToKKyAgICBkZWYgY2hlY2tfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBmZD1Ob25lLCBrbm93X2N1cnJlbnRfdGhyZWFkPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQogICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCkBAIC04OCwxOSArOTEsMjIgQEAKICAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBhbGxfdGhyZWFkczoKLSAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFggKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJworICAgICAgICAgICAgaWYga25vd19jdXJyZW50X3RocmVhZDoKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlYWRlciA9ICdUaHJlYWQgMHhbMC05YS1mXSsnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJwotICAgICAgICByZWdleCA9ICIiIgotICAgICAgICAgICAgXkZhdGFsIFB5dGhvbiBlcnJvcjoge25hbWV9CisgICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2snCisgICAgICAgIHJlZ2V4ID0gciIiIgorICAgICAgICAgICAgXntmYXRhbF9lcnJvcn0KIAotICAgICAgICAgICAge2hlYWRlcn06CisgICAgICAgICAgICB7aGVhZGVyfSBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CiAgICAgICAgICAgICAiIiIKICAgICAgICAgcmVnZXggPSBkZWRlbnQocmVnZXguZm9ybWF0KAogICAgICAgICAgICAgbGluZW5vPWxpbmVfbnVtYmVyLAotICAgICAgICAgICAgbmFtZT1uYW1lX3JlZ2V4LAotICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKSkuc3RyaXAoKQorICAgICAgICAgICAgZmF0YWxfZXJyb3I9ZmF0YWxfZXJyb3IsCisgICAgICAgICAgICBoZWFkZXI9aGVhZGVyKSkuc3RyaXAoKQogICAgICAgICBpZiBvdGhlcl9yZWdleDoKICAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4CiAgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWU9ZmlsZW5hbWUsIGZkPWZkKQpAQCAtMTA4LDE4ICsxMTQsMzggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQogCisgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnRmF0YWwgUHl0aG9uIGVycm9yOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCisgICAgZGVmIGNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnV2luZG93cyBmYXRhbCBleGNlcHRpb246ICVzJyAlIG5hbWVfcmVnZXgKKyAgICAgICAgc2VsZi5jaGVja19lcnJvcihjb2RlLCBsaW5lX251bWJlciwgZmF0YWxfZXJyb3IsICoqa3cpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdhaXgnKSwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmlyc3QgcGFnZSBvZiBtZW1vcnkgaXMgYSBtYXBwZWQgcmVhZC1vbmx5IG9uIEFJWCIpCiAgICAgZGVmIHRlc3RfcmVhZF9udWxsKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgotICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCi0gICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAotICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KLSAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKyAgICAgICAgaWYgbm90IE1TX1dJTkRPV1M6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KKyAgICAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0JworICAgICAgICAgICAgICAgICAgICAnfEJ1cyBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgJ3xJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgJ2FjY2VzcyB2aW9sYXRpb24nKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3Rfc2lnc2VndihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTEyOSw2ICsxNTUsMTcgQEAKICAgICAgICAgICAgIDMsCiAgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JykKIAorICAgIEB1bml0dGVzdC5za2lwSWYobm90IEhBVkVfVEhSRUFEUywgJ25lZWQgdGhyZWFkcycpCisgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3JfY190aHJlYWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fZmF0YWxfZXJyb3JfY190aHJlYWQoKQorICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdpbiBuZXcgdGhyZWFkJywKKyAgICAgICAgICAgIGtub3dfY3VycmVudF90aHJlYWQ9RmFsc2UpCisKICAgICBkZWYgdGVzdF9zaWdhYnJ0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtMTUxLDYgKzE4OCw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHQlVTJyksICduZWVkIHNpZ25hbC5TSUdCVVMnKQorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X3NpZ2J1cyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKQEAgLTE2NSw2ICsyMDMsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR0lMTCcpLCAnbmVlZCBzaWduYWwuU0lHSUxMJykKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9zaWdpbGwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCkBAIC0yMDgsNiArMjQ3LDcgQEAKICAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yKScsCiAgICAgICAgICAgICBvdGhlcl9yZWdleD0ndW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cnKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZ2lsX3JlbGVhc2VkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtMjE3LDYgKzI1Nyw3IEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCiAKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9lbmFibGVfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCkBAIC0yMzEsNiArMjcyLDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAgICAic3VicHJvY2VzcyBkb2Vzbid0IHN1cHBvcnQgcGFzc19mZHMgb24gV2luZG93cyIpCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZW5hYmxlX2ZkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgogICAgICAgICAgICAgZmQgPSBmcC5maWxlbm8oKQpAQCAtMjQ0LDYgKzI4Niw3IEBACiAgICAgICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCiAgICAgICAgICAgICAgICAgZmQ9ZmQpCiAKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9lbmFibGVfc2luZ2xlX3RocmVhZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTI1NCw2ICsyOTcsNyBAQAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCiAgICAgICAgICAgICBhbGxfdGhyZWFkcz1GYWxzZSkKIAorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CiAgICAgICAgIGNvZGUgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTQ1OCwxNCArNTAyLDE0IEBACiAgICAgICAgICAgICBsaW5lbm8gPSA4CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaW5lbm8gPSAxMAotICAgICAgICByZWdleCA9ICIiIgorICAgICAgICByZWdleCA9IHIiIiIKICAgICAgICAgICAgIF5UaHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAoPzogIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gW19hLXpdKwogICAgICAgICAgICAgKXt7MSwzfX0gIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyMyBpbiBydW4KICAgICAgICAgICAgICAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwX2lubmVyCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcAogCi0gICAgICAgICAgICBDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgICAgICAgICAgICBDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIGR1bXAKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDI4IGluIDxtb2R1bGU+JAogICAgICAgICAgICAgIiIiCkBAIC02MzcsOSArNjgxLDkgQEAKICAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCiAgICAgICAgIGlmIG5vdCB1bnJlZ2lzdGVyOgogICAgICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICAgICAgcmVnZXggPSByJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwogICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTQsIDMyLCByZWdleCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgpAQCAtNjk2LDYgKzc0MCwyMiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmNoZWNrX3N0ZGVycl9ub25lKCk6CiAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ25hbC5TSUdVU1IxKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoTVNfV0lORE9XUywgJ3NwZWNpZmljIHRvIFdpbmRvd3MnKQorICAgIGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGV4YywgbmFtZSBpbiAoCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OJywgJ2FjY2VzcyB2aW9sYXRpb24nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTycsICdpbnQgZGl2aWRlIGJ5IHplcm8nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XJywgJ3N0YWNrIG92ZXJmbG93JyksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKGYiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yYWlzZV9leGNlcHRpb24oZmF1bHRoYW5kbGVyLl97ZXhjfSkKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgMywKKyAgICAgICAgICAgICAgICBuYW1lKQorCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQppbmRleCA0ZTM5MmI3Li42NWJlMzBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgX3B5aW8gYXMgcHlpbwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CiAKIGNsYXNzIEF1dG9GaWxlVGVzdHM6CkBAIC0xMzksNyArMTM5LDcgQEAKIAogICAgIGRlZiB0ZXN0TW9kZVN0cmluZ3Moc2VsZik6CiAgICAgICAgICMgY2hlY2sgaW52YWxpZCBtb2RlIHN0cmluZ3MKLSAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIik6CisgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIsICJVKyIsICIrVSIsICJyVSsiKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKFRFU1RGTiwgbW9kZSkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQppbmRleCA3ODRiYzkyLi41NjU2MzNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQpAQCAtMjIsOCArMjIsOSBAQAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIGZyb20gZmlsZWlucHV0IGltcG9ydCBGaWxlSW5wdXQsIGhvb2tfZW5jb2RlZAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBjaGVja193YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKIApAQCAtOTIsNyArOTMsMTEgQEAKICAgICAgICAgICAgICAgICB0MiA9IHdyaXRlVG1wKDIsIFsiTGluZSAlcyBvZiBmaWxlIDJcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxMCldKQogICAgICAgICAgICAgICAgIHQzID0gd3JpdGVUbXAoMywgWyJMaW5lICVzIG9mIGZpbGUgM1xuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDUpXSkKICAgICAgICAgICAgICAgICB0NCA9IHdyaXRlVG1wKDQsIFsiTGluZSAlcyBvZiBmaWxlIDRcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxKV0pCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgaWYgYnM6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEsIHQyLCB0MywgdDQpCiAKQEAgLTk0MCw3ICs5NDUsOCBAQAogCiAgICAgZGVmIHRlc3Qoc2VsZik6CiAgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKLSAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKyAgICAgICAgZXJyb3JzID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPWVycm9ycykKIAogICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQogICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgpAQCAtOTU4LDggKzk2NCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZXJyb3JzJyksIGVycm9ycykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrd2FyZ3MpCiAKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGInXHg4MGFiYycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzYWZlX3VubGluaywgVEVTVEZOKQorCisgICAgICAgIGRlZiBjaGVjayhlcnJvcnMsIGV4cGVjdGVkX2xpbmVzKToKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVRFU1RGTiwgbW9kZT0ncicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuaG9vaz1ob29rX2VuY29kZWQoJ3V0Zi04JywgZXJyb3JzPWVycm9ycykpIGFzIGZpOgorICAgICAgICAgICAgICAgIGxpbmVzID0gbGlzdChmaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGV4cGVjdGVkX2xpbmVzKQorCisgICAgICAgIGNoZWNrKCdpZ25vcmUnLCBbJ2FiYyddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgICAgICBjaGVjaygnc3RyaWN0JywgWydhYmMnXSkKKyAgICAgICAgY2hlY2soJ3JlcGxhY2UnLCBbJ1x1ZmZmZGFiYyddKQorICAgICAgICBjaGVjaygnYmFja3NsYXNocmVwbGFjZScsIFsnXFx4ODBhYmMnXSkKKwogICAgIGRlZiB0ZXN0X21vZGVzKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgIyBVVEYtNyBpcyBhIGNvbnZlbmllbnQsIHNlbGRvbSB1c2VkIGVuY29kaW5nCkBAIC05ODEsNSArMTAwNSwxMSBAQAogICAgICAgICAgICAgY2hlY2soJ3JiJywgWydBXG4nLCAnQlxyXG4nLCAnQ1xyJywgJ0RcdTIwYWMnXSkKIAogCitjbGFzcyBNaXNjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZpbGVpbnB1dCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggY2IxZjZkYi4uYWM4NDczZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC0xLDYgKzEsNCBAQAotCiBpbXBvcnQgZnJhY3Rpb25zCi1pbXBvcnQgbWF0aAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KQEAgLTEwLDYgKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogZnJvbSBtYXRoIGltcG9ydCBpc2luZiwgaXNuYW4sIGNvcHlzaWduLCBsZGV4cAogCiBJTkYgPSBmbG9hdCgiaW5mIikKQEAgLTYxLDYgKzYxLDI3IEBACiAgICAgICAgIGZsb2F0KGInLicgKyBiJzEnKjEwMDApCiAgICAgICAgIGZsb2F0KCcuJyArICcxJyoxMDAwKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGZsb2F0KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgbGl0KQorICAgICAgICAjIEFkZGl0aW9uYWwgdGVzdCBjYXNlczsgbmFuIGFuZCBpbmYgYXJlIG5ldmVyIHZhbGlkIGFzIGxpdGVyYWxzLAorICAgICAgICAjIG9ubHkgaW4gdGhlIGZsb2F0KCkgY29uc3RydWN0b3IsIGJ1dCB3ZSBkb24ndCBhbGxvdyB1bmRlcnNjb3JlcworICAgICAgICAjIGluIG9yIGFyb3VuZCB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ19OYU4nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ05hX04nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ0lOX0YnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJy1fSU5GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctSU5GXycpCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBoYW5kbGUgYnl0ZXMgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGInMF8uXHhmZjknKQorCiAgICAgZGVmIHRlc3Rfbm9uX251bWVyaWNfaW5wdXRfdHlwZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBwb3NzaWJsZSBub24tbnVtZXJpYyB0eXBlcyBmb3IgdGhlIGFyZ3VtZW50IHgsIGluY2x1ZGluZwogICAgICAgICAjIHN1YmNsYXNzZXMgb2YgdGhlIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCBhY2NlcHRlZCB0eXBlcy4KQEAgLTE2MiwxMSArMTgzLDEyIEBACiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChzdHIoc2VsZikpICsgMQogCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28zKDIxKSksIDQyLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28xKCkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmxvYXQsIEZvbzQoNDIpKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vU3RyKCc4JykpLCA5LikKIAogICAgICAgICBjbGFzcyBGb281OgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKQEAgLTE3NywxMCArMTk5LDE0IEBACiAgICAgICAgIGNsYXNzIEY6CiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBPdGhlckZsb2F0U3ViY2xhc3MoNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEYoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGZsb2F0KEYoKSkpLCBPdGhlckZsb2F0U3ViY2xhc3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGbG9hdFN1YmNsYXNzKEYoKSkpLCBGbG9hdFN1YmNsYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgZmxvYXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGbG9hdFN1YmNsYXNzKEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKIAogICAgIGRlZiB0ZXN0X2lzX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDEuMSkuaXNfaW50ZWdlcigpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IGZhMzdmOTAuLmZiNzQyNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTYyLDE0ICs2MiwxNCBAQAogY2xhc3MgVHJhbnNsYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCAnLipcWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgJy5cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgJ2EuYi4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCAnW2FiY11cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCAnW11dXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksICdbXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksICdbXFxeeF1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksICdcXFt4XFooP21zKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCcqJyksIHInKD9zOi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgcicoP3M6LilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksIHInKD9zOmEuYi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1thYmNdJyksIHInKD9zOlthYmNdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCByJyg/czpbXV0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCByJyg/czpbXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1teeF0nKSwgcicoP3M6W1xeeF0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW3gnKSwgcicoP3M6XFt4KVxaJykKIAogCiBjbGFzcyBGaWx0ZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDU2NWJiNzkuLjgzZWIyOWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgICAgICAgdGVzdF9leGMoJyVkJywgJzEnLCBUeXBlRXJyb3IsICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgJzEnLCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4YygnJXgnLCAzLjE0LCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCi0gICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpCisgICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAibXVzdCBiZSByZWFsIG51bWJlciwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQogICAgICAgICB0ZXN0X2V4YygnJWMnLCAtMSwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKQEAgLTMwNCw2ICszMDQsOCBAQAogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCA3LCBiIlx4MDciKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBiIloiLCBiIloiKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBieXRlYXJyYXkoYiJaIiksIGIiWiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlNWMiLCA2NSwgYiIgICAgQSIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlLTVjIiwgNjUsIGIiQSAgICAiKQogICAgICAgICAjICViIHdpbGwgaW5zZXJ0IGEgc2VyaWVzIG9mIGJ5dGVzLCBlaXRoZXIgZnJvbSBhIHR5cGUgdGhhdCBzdXBwb3J0cwogICAgICAgICAjIHRoZSBQeV9idWZmZXIgcHJvdG9jb2wsIG9yIHNvbWV0aGluZyB0aGF0IGhhcyBhIF9fYnl0ZXNfXyBtZXRob2QKICAgICAgICAgY2xhc3MgRmFrZUJ5dGVzKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDlkZjRhNTQuLjc5MDVjMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xNTAsNiArMTUwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAiMy8yIiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAwaikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAxLCAyLCAzKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RJbml0RnJvbUZsb2F0KHNlbGYpOgpAQCAtMjYzLDEzICsyNjQsMTMgQEAKICAgICAgICAgbmFuID0gaW5mIC0gaW5mCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGZsb2F0IC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIGluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IC1pbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgLWluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IG5hbiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgbmFuKQogCiAgICAgZGVmIHRlc3RGcm9tRGVjaW1hbChzZWxmKToKQEAgLTI4NCwxNiArMjg1LDE2IEBACiAKICAgICAgICAgIyBidWcgMTY0Njk6IGVycm9yIHR5cGVzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZGVjaW1hbCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCItaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgibmFuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBzTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoInNuYW4iKSkKIAogICAgIGRlZiB0ZXN0TGltaXREZW5vbWluYXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDhlZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5CkBAIC0wLDAgKzEsNzYwIEBACitpbXBvcnQgYXN0CitpbXBvcnQgdHlwZXMKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgdW5pdHRlc3QKKworYV9nbG9iYWwgPSAnZ2xvYmFsIHZhcmlhYmxlJworCisjIFlvdSBjb3VsZCBhcmd1ZSB0aGF0IEknbSB0b28gc3RyaWN0IGluIGxvb2tpbmcgZm9yIHNwZWNpZmljIGVycm9yCisjICB2YWx1ZXMgd2l0aCBhc3NlcnRSYWlzZXNSZWdleCwgYnV0IHdpdGhvdXQgaXQgaXQncyB3YXkgdG9vIGVhc3kgdG8KKyMgIG1ha2UgYSBzeW50YXggZXJyb3IgaW4gdGhlIHRlc3Qgc3RyaW5ncy4gRXNwZWNpYWxseSB3aXRoIGFsbCBvZiB0aGUKKyMgIHRyaXBsZSBxdW90ZXMsIHJhdyBzdHJpbmdzLCBiYWNrc2xhc2hlcywgZXRjLiBJIHRoaW5rIGl0J3MgYQorIyAgd29ydGh3aGlsZSB0cmFkZW9mZi4gV2hlbiBJIHN3aXRjaGVkIHRvIHRoaXMgbWV0aG9kLCBJIGZvdW5kIG1hbnkKKyMgIGV4YW1wbGVzIHdoZXJlIEkgd2Fzbid0IHRlc3Rpbmcgd2hhdCBJIHRob3VnaHQgSSB3YXMuCisKK2NsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0QWxsUmFpc2Uoc2VsZiwgZXhjZXB0aW9uX3R5cGUsIHJlZ2V4LCBlcnJvcl9zdHJpbmdzKToKKyAgICAgICAgZm9yIHN0ciBpbiBlcnJvcl9zdHJpbmdzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RyPXN0cik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbl90eXBlLCByZWdleCk6CisgICAgICAgICAgICAgICAgICAgIGV2YWwoc3RyKQorCisgICAgZGVmIHRlc3RfX2Zvcm1hdF9fbG9va3VwKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBfX2Zvcm1hdF9fIGlzIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSwgbm90IHRoZSBpbnN0YW5jZS4KKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHJldHVybiAnY2xhc3MnCisKKyAgICAgICAgeCA9IFgoKQorCisgICAgICAgICMgQWRkIGEgYm91bmQgX19mb3JtYXRfXyBtZXRob2QgdG8gdGhlICd5JyBpbnN0YW5jZSwgYnV0IG5vdAorICAgICAgICAjICB0aGUgJ3gnIGluc3RhbmNlLgorICAgICAgICB5ID0gWCgpCisgICAgICAgIHkuX19mb3JtYXRfXyA9IHR5cGVzLk1ldGhvZFR5cGUobGFtYmRhIHNlbGYsIHNwZWM6ICdpbnN0YW5jZScsIHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsIGZvcm1hdCh5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KHgpLCBmb3JtYXQoeSkpCisKKyAgICAgICAgIyBfX2Zvcm1hdF9fIGlzIG5vdCBjYWxsZWQgdGhpcyB3YXksIGJ1dCBzdGlsbCBtYWtlIHN1cmUgaXQKKyAgICAgICAgIyAgcmV0dXJucyB3aGF0IHdlIGV4cGVjdCAoc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSdyZSBieXBhc3NpbmcKKyAgICAgICAgIyAgaXQpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19mb3JtYXRfXygnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5fX2Zvcm1hdF9fKCcnKSwgJ2luc3RhbmNlJykKKworICAgICAgICAjIFRoaXMgaXMgaG93IF9fZm9ybWF0X18gaXMgYWN0dWFsbHkgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeCkuX19mb3JtYXRfXyh4LCAnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh5KS5fX2Zvcm1hdF9fKHksICcnKSwgJ2NsYXNzJykKKworICAgIGRlZiB0ZXN0X2FzdChzZWxmKToKKyAgICAgICAgIyBJbnNwaXJlZCBieSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQ5NzUKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIDQKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBleHByID0gIiIiCithID0gMTAKK2Yne2EgKiB4KCl9JyIiIgorICAgICAgICB0ID0gYXN0LnBhcnNlKGV4cHIpCisgICAgICAgIGMgPSBjb21waWxlKHQsICcnLCAnZXhlYycpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgeCB3YXMgbm90IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh4LmNhbGxlZCkKKworICAgICAgICAjIEFjdHVhbGx5IHJ1biB0aGUgY29kZS4KKyAgICAgICAgZXhlYyhjKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguY2FsbGVkKQorCisgICAgZGVmIHRlc3RfZG9jc3RyaW5nKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZicnJ05vdCBhIGRvY3N0cmluZycnJworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmLl9fZG9jX18pCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICAnJydOb3QgYSBkb2NzdHJpbmcnJycgXAorICAgICAgICAgICAgZicnCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuX19kb2NfXykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmcnKToKKyAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwoImYneCciKQorCisgICAgZGVmIHRlc3RfYXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSBbJyddCisKKyAgICAgICAgZXhwciA9ICIiInhbMF0gPSAnZm9vJyBmJ3szfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorICAgICAgICBleGVjKGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeFswXSwgJ2ZvbzMnKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV90aW1lX2NvbmNhdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciIiImYnJyBiJyciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJiJycgZicnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYScsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJyAnLCAnICcpCisKKyAgICBkZWYgdGVzdF91bnRlcm1pbmF0ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIiIiZid7IngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7Inh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneygieCciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soInh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfcGFyZW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IG1pc21hdGNoZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7KCh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kb3VibGVfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3snLCAneycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3snLCAnYXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tiJywgJ3tiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2InLCAnYXtiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19JywgJ2F9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319YicsICd9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhfX1iJywgJ2F9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e319JywgJ3t9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319JywgJ2F7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fScsICd7Yn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fWMnLCAne31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fScsICdhe2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319YycsICdhe31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7Yn19YycsICd7Yn1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fWMnLCAnYXtifWMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e3sxMH0nLCAnezEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319ezEwfScsICd9MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX17e3sxMH0nLCAnfXsxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWF7e3sxMH0nLCAnfWF7MTAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9e3snLCAnMTB7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fScsICcxMH0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19e3snLCAnMTB9eycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX1he3snICd9JywgJzEwfWF7fScpCisKKyAgICAgICAgIyBJbnNpZGUgb2Ygc3RyaW5ncywgZG9uJ3QgaW50ZXJwcmV0IGRvdWJsZWQgYnJhY2tldHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Int7fX0ifScsICd7e319JykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sge3t9fSB9JyIsICMgZGljdCBpbiBhIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV90aW1lX2NvbmNhdChzZWxmKToKKyAgICAgICAgeCA9ICdkZWYnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZicjIyB7eH1naGknLCAnYWJjIyMgZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doaScsICdhYmNkZWZnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYne3h9JyAnZ2gnIGYnaXt4OjR9JywgJ2FiY2RlZmdoaWRlZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4JyBmJ3t4fScsICd7eGRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4fScgZid7eH0nLCAne3h9ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4fX0nIGYne3h9JywgJ3t7eH19ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4JyBmJ3t4fScsICd7e3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4fX0nIGYne3h9JywgJ3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICd4fX0nLCAnZGVmeH19JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JyAnJywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZid7eH0nLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJzInLCAnZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JyAnMicsICcxZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JywgJzFkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyBmJy17eH0nLCAnZGVmLWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJyAnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnICcnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MycgZid9JyIsICAjIGNhbid0IGNvbmNhdCB0byBnZXQgYSB2YWxpZCBmLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tbWVudHMoc2VsZik6CisgICAgICAgICMgVGhlc2UgYXJlbid0IGNvbW1lbnRzLCBzaW5jZSB0aGV5J3JlIGluIHN0cmluZ3MuCisgICAgICAgIGQgPSB7JyMnOiAnaGFzaCd9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiMifScsICcjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyIjIl19JywgJ2hhc2gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezEjfSciLCAgICMgZXJyb3IgYmVjYXVzZSB0aGUgZXhwcmVzc2lvbiBiZWNvbWVzICIoMSMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MygjKX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3spI30nIiwgICAjIFdoZW4gd3JhcHBlZCBpbiBwYXJlbnMsIHRoaXMgYmVjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgJygpIyknLiAgTWFrZSBzdXJlIHRoYXQgZG9lc24ndCBjb21waWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWFueV9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgYSBzdHJpbmcgd2l0aCBtYW55IGV4cHJlc3Npb25zIGluIGl0LiBOb3RlIHRoYXQKKyAgICAgICAgIyAgYmVjYXVzZSB3ZSBoYXZlIGEgc3BhY2UgaW4gaGVyZSBhcyBhIGxpdGVyYWwsIHdlJ3JlIGFjdHVhbGx5CisgICAgICAgICMgIGdvaW5nIHRvIHVzZSB0d2ljZSBhcyBtYW55IGFzdCBub2Rlczogb25lIGZvciBlYWNoIGxpdGVyYWwKKyAgICAgICAgIyAgcGx1cyBvbmUgZm9yIGVhY2ggZXhwcmVzc2lvbi4KKyAgICAgICAgZGVmIGJ1aWxkX2ZzdHIobiwgZXh0cmE9JycpOgorICAgICAgICAgICAgcmV0dXJuICJmJyIgKyAoJ3t4fSAnICogbikgKyBleHRyYSArICInIgorCisgICAgICAgIHggPSAnWCcKKyAgICAgICAgd2lkdGggPSAxCisKKyAgICAgICAgIyBUZXN0IGFyb3VuZCAyNTYuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDI1MCwgMjYwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKGkpKSwgKHgrJyAnKSppKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW5nIDIgbGFyZ3MgZnN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKDI1NSkqMjU2KSwgKHgrJyAnKSooMjU1KjI1NikpCisKKyAgICAgICAgcyA9IGJ1aWxkX2ZzdHIoMjUzLCAne3g6e3dpZHRofX0gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAoeCsnICcpKjI1NCkKKworICAgICAgICAjIFRlc3QgbG90cyBvZiBleHByZXNzaW9ucyBhbmQgY29uc3RhbnRzLCBjb25jYXRlbmF0ZWQuCisgICAgICAgIHMgPSAiZid7MX0nICd4JyAneSciICogMTAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwocyksICcxeHknICogMTAyNCkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF9zcGVjaWZpZXJfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHdpZHRoID0gMTAKKyAgICAgICAgcHJlY2lzaW9uID0gNAorICAgICAgICB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgnMTIuMzQ1NjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aCFyfS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDowfS57cHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6ezF9ezA6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsgMX17IDA6MH0ueyBwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3sxfTB4fScsICcgICAgICAgMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDp7IiMifTF7MH17IngifX0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOi17IiMifTF7MH14fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3stMTA6eyItIn0jezF9MHsieCJ9fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDojezMgIT0gezQ6NX0gYW5kIHdpZHRofXh9JywgJyAgICAgICAweGEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIiImYneyJzIiFyeyI6MTAifX0nIiIiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBsb29rcyBsaWtlIGEgbmVzdGVkIGZvcm1hdCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJpbnZhbGlkIHN5bnRheCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgSW52YWxpZCBzeW50YXggaW5zaWRlIGEgbmVzdGVkIHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s0OnsvNX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgQ2FuJ3QgbmVzdCBmb3JtYXQgc3BlY2lmaWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYncmVzdWx0OiB7dmFsdWU6e3dpZHRoOnswfX0ue3ByZWNpc2lvbjoxfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIE5vIGV4cGFuc2lvbiBpbnNpZGUgY29udmVyc2lvbiBvciBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgdGhlIDogb3IgISBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiImYneyJzIiF7InIifX0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Rfb3JkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuaSkKKworICAgICAgICB4ID0gWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0ge3h9JywgJzEgMicpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogZW1wdHkgZXhwcmVzc2lvbiBub3QgYWxsb3dlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgfSciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJyB7fSAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MTA6eyB9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicgeyB9ICciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2F0Y2ggdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBpbnZhbGlkIGNvbnZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDphfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyOmF9JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6fSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgZmluZCB0aGUgZW1wdHkgZXhwcmVzc2lvbiBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG1pc3NpbmcgY2xvc2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OngnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3BhcmVuc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLH0nLCAnKDMsKScpCisKKyAgICAgICAgIyBBZGQgdGhlc2UgYmVjYXVzZSB3aGVuIGFuIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBwYXJlbnMKKyAgICAgICAgIyAgYXJlIGFkZGVkIGFyb3VuZCBpdC4gQnV0IHdlIHNob3VsZG4ndCBnbyBmcm9tIGFuIGludmFsaWQKKyAgICAgICAgIyAgZXhwcmVzc2lvbiB0byBhIHZhbGlkIG9uZS4gVGhlIGFkZGVkIHBhcmVucyBhcmUganVzdAorICAgICAgICAjICBzdXBwb3NlZCB0byBhbGxvdyB3aGl0ZXNwYWNlIChpbmNsdWRpbmcgbmV3bGluZXMpLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7LH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyx9JyIsICAjIHRoaXMgaXMgKCwpLCB3aGljaCBpcyBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szKSsoNH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnRU9MIHdoaWxlIHNjYW5uaW5nIHN0cmluZyBsaXRlcmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne1xufSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYmFja3NsYXNoZXNfaW5fc3RyaW5nX3BhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdCcsICdcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x0JywgJ1xcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdCcsICcyXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHR7M30nLCAnMlx0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdHszfScsICdcdDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAzOTQnLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x1MDM5NCcsICdcXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTR7M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxVMDAwMDAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xVMDAwMDAzOTR7M30nLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICdcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0zJywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwJywgJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwJywgJzIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx4MjB7M30nLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjB7M30nLCAnIDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMDMnLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjAzJywgJyAzJykKKworICAgIGRlZiB0ZXN0X21pc2Zvcm1lZF91bmljb2RlX2NoYXJhY3Rlcl9uYW1lKHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3QgYXJlIG5lZWRlZCBiZWNhdXNlIHVuaWNvZGUgbmFtZXMgYXJlIHBhcnNlZAorICAgICAgICAjIGRpZmZlcmVudGx5IGluc2lkZSBmLXN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsIHIiXCh1bmljb2RlIGVycm9yXCkgJ3VuaWNvZGVlc2NhcGUnIGNvZGVjIGNhbid0IGRlY29kZSBieXRlcyBpbiBwb3NpdGlvbiAuKjogbWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBJyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIZXJlIGFyZSB0aGUgbm9uLWYtc3RyaW5nIHZlcnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB3aGljaCBzaG91bGQgZ2l2ZSB0aGUgc2FtZSBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOeyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfbm9fYmFja3NsYXNoZXNfaW5fZXhwcmVzc2lvbl9wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3tcJ2FcJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x0M30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiInJmJ3siXE57TEVGVCBDVVJMWSBCUkFDS0VUfSJ9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcbn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2VzY2FwZXNfZm9yX2JyYWNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE9ubHkgbGl0ZXJhbCBjdXJseSBicmFjZXMgYmVnaW4gYW4gZXhwcmVzc2lvbi4KKyAgICAgICAgIiIiCisgICAgICAgICMgXHg3YiBpcyAneycuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDdiMSsxfX0nLCAnezErMX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjErMScsICd7MSsxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDA3YjErMScsICd7MSsxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0xKzFcTntSSUdIVCBDVVJMWSBCUkFDS0VUfScsICd7MSsxfScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3swfScsICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZicnJ3szKworNH0nJycsICc3JykKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgeCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXJ9JywgIic4ODg4OCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4IikhcjoxMH0nLCAiJzg4ODg4JyAgICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKToxMH0nLCAiODg4ODggICAgICIpCisKKyAgICAgICAgIyBsYW1iZGEgZG9lc24ndCB3b3JrIHdpdGhvdXQgcGFyZW5zLCBiZWNhdXNlIHRoZSBjb2xvbgorICAgICAgICAjICBtYWtlcyB0aGUgcGFyc2VyIHRoaW5rIGl0J3MgYSBmb3JtYXRfc3BlYworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tsYW1iZGEgeDp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgICMgTm90IHRlcnJpYmx5IHVzZWZ1bCwgYnV0IG1ha2Ugc3VyZSB0aGUgeWllbGQgdHVybnMKKyAgICAgICAgIyAgYSBmdW5jdGlvbiBpbnRvIGEgZ2VuZXJhdG9yCisgICAgICAgIGRlZiBmbih5KToKKyAgICAgICAgICAgIGYneTp7eWllbGQgeSoyfScKKworICAgICAgICBnID0gZm4oNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCA4KQorCisgICAgZGVmIHRlc3RfeWllbGRfc2VuZChzZWxmKToKKyAgICAgICAgZGVmIGZuKHgpOgorICAgICAgICAgICAgeWllbGQgZid4Ont5aWVsZCAobGFtYmRhIGk6IHggKiBpKX0nCisKKyAgICAgICAgZyA9IGZuKDEwKQorICAgICAgICB0aGVfbGFtYmRhID0gbmV4dChnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9sYW1iZGEoNCksIDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuc2VuZCgnc3RyaW5nJyksICd4OnN0cmluZycpCisKKyAgICBkZWYgdGVzdF9leHByZXNzaW9uc193aXRoX3RyaXBsZV9xdW90ZWRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJyd4JycnfSIsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJydlcmljJ3MnJyd9IiwgImVyaWMncyIpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpb24gd2l0aGluIGFuIGV4cHJlc3Npb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ4IiAiIiJlcmljInMiIiJ9JywgJ3hlcmljInMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiImVyaWMicyIiIiAieSJ9JywgJ2VyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tyIiIieCIiIiAiIiJlcmljInMiIiIgIiIieSIiIn0nLCAneGVyaWMic3knKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfdmFycyhzZWxmKToKKyAgICAgICAgeCA9IDk4CisgICAgICAgIHkgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9JywgJzk4YWJjJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fXt5fScsICdYOThhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fScsICc5OFhhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9WCcsICc5OGFiY1gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fScsICdYOThZYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX1ZJywgJ1g5OGFiY1knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fVknLCAnOThYYWJjWScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH1Ze3l9WicsICdYOThZYWJjWicpCisKKyAgICBkZWYgdGVzdF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgb3V0ZXIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZid4Ont4fScKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoJzk4NycpKCksICd4Ojk4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoNykoKSwgJ3g6NycpCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHkgPSAyCisgICAgICAgIGRlZiBmKHgsIHdpZHRoKToKKyAgICAgICAgICAgIHJldHVybiBmJ3g9e3gqeTp7d2lkdGh9fScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2ZvbycsIDEwKSwgJ3g9Zm9vZm9vICAgICcpCisgICAgICAgIHggPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMTAsIDEwKSwgJ3g9ICAgICAgICAyMCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbHMoc2VsZik6CisgICAgICAgIHZhbHVlID0gMTIzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid2Ont2YWx1ZX0nLCAndjoxMjMnKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ192YXJpYWJsZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZid2Ont2YWx1ZX0nCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2Zvcm1hdF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBPOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgaWYgbm90IHNwZWM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKicKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOnh9JywgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKX0nLCAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOn0nLCAnKicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szOn0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyFzOn0nLCAnMycpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpnbG9iYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgYV9sb2NhbCA9ICdsb2NhbCB2YXJpYWJsZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2c6Z2xvYmFsIHZhcmlhYmxlIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidnbG9iYWwgdmFyaWFibGUnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpnbG9iYWwgdmFyaWFibGUgbDonbG9jYWwgdmFyaWFibGUnIikKKworICAgICAgICBzZWxmLmFzc2VydEluKCJtb2R1bGUgJ3VuaXR0ZXN0JyBmcm9tIiwgZid7dW5pdHRlc3R9JykKKworICAgIGRlZiB0ZXN0X3NoYWRvd2VkX2dsb2JhbChzZWxmKToKKyAgICAgICAgYV9nbG9iYWwgPSAncmVhbGx5IGEgbG9jYWwnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpyZWFsbHkgYSBsb2NhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsICJnOidyZWFsbHkgYSBsb2NhbCciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOnJlYWxseSBhIGxvY2FsIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidyZWFsbHkgYSBsb2NhbCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOnJlYWxseSBhIGxvY2FsIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBkZWYgZm9vKHgpOgorICAgICAgICAgICAgcmV0dXJuICd4PScgKyBzdHIoeCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2ZvbygxMCl9JywgJ3g9MTAnKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2ZzdHJpbmdzKHNlbGYpOgorICAgICAgICB5ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2YiezB9IiozfScsICcwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2Yie3l9IiozfScsICc1NTUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHJpbmdfcHJlZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICd1bmV4cGVjdGVkIEVPRiB3aGlsZSBwYXJzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZVJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1RicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmcicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVyZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZydScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ1ZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVUicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZiJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZkInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiRicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3RyYWlsaW5nX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ICAzfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIH0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyAgfScsICczJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZXhwcj17IHt4OiB5IGZvciB4LCB5IGluIFsoMSwgMiksIF19fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfSB9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcj17MTogMn0nKQorCisgICAgZGVmIHRlc3Rfbm90X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRoZXJlJ3MgYSBzcGVjaWFsIHRlc3QgZm9yIHRoaXMgYmVjYXVzZSB0aGVyZSdzIGEgc3BlY2lhbAorICAgICAgICAjICBjYXNlIGluIHRoZSBmLXN0cmluZyBwYXJzZXIgdG8gbG9vayBmb3IgIT0gYXMgbm90IGVuZGluZyBhbgorICAgICAgICAjICBleHByZXNzaW9uLiBOb3JtYWxseSBpdCB3b3VsZCwgd2hpbGUgbG9va2luZyBmb3IgIXMgb3IgIXIuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00fScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00On0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzfScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00IXM6LjN9JywgJ1RydScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OjEwLjEwfScsICcgICAgICAzLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXM6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhcjoxMC4xMH0nLCAnMy4xNCAgICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFhOjEwLjEwfScsICczLjE0ICAgICAgJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIn0nLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIXJ9JywgIidhJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIWF9JywgIidhJyIpCisKKyAgICAgICAgIyBOb3QgYSBjb252ZXJzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIXIifScsICJhIXIiKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbiwgYnV0IHNob3cgdGhhdCAhIGlzIGFsbG93ZWQgaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OiE8MTAuMTB9JywgJzMuMTQhISEhISEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szIWd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISBzfSciLCAgIyBubyBzcGFjZSBiZWZvcmUgY29udmVyc2lvbiBjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne3ghc3t5fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3N9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3M6c30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJycgPSAzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezB9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eH0nID0geCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJkZWwgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbCAnJyBmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXHUwMDdifSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSB7IG9yIH0gaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fT4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fX0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezM6e3s+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOjMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHt4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOnMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7fX17JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3snIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICAjIEJ1dCB0aGVzZSBhcmUganVzdCBub3JtYWwgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieyJ9JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ9In0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp7In0ifT4xMH0nLCAnfX19fX19fX19MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mjp7InsifT4xMH0nLCAne3t7e3t7e3t7MicpCisKKyAgICBkZWYgdGVzdF9pZl9jb25kaXRpb25hbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIHNwZWNpYWwgbG9naWMgaW4gY29tcGlsZS5jIHRvIHRlc3QgaWYgdGhlCisgICAgICAgICMgIGNvbmRpdGlvbmFsIGZvciBhbiBpZiAoYW5kIHdoaWxlKSBhcmUgY29uc3RhbnRzLiBFeGVyY2lzZQorICAgICAgICAjICB0aGF0IGNvZGUuCisKKyAgICAgICAgZGVmIHRlc3RfZnN0cmluZyh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9lbXB0eSh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgJycgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcgJyBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcnLCAyKQorICAgICAgICB0ZXN0X2ZzdHJpbmcoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X2VtcHR5KCcnLCAyKQorICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnICcsIDEpCisKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcnLCAxKQorICAgICAgICB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoJyAnLCAxKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZm9ybWF0X3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgeCA9ICd0ZXN0JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3g6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXM6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXI6fScsICIndGVzdCciKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdF9kaWZmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgZCA9IHsnYSc6ICdzdHJpbmcnLAorICAgICAgICAgICAgIDA6ICdpbnRlZ2VyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIGEgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFswXX0nLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiYSJdfScsICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbYV19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7ZFthXX0nLmZvcm1hdChkPWQpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbMF19Jy5mb3JtYXQoZD1kKSwgJ2ludGVnZXInKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3thWzQpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne2EoNF19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBzZWUgaXNzdWUgMjYyODcKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICd1bnN1cHBvcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7KGxhbWJkYTogMCk6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3soMCwpOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVmFsdWVFcnJvciwgJ1Vua25vd24gZm9ybWF0IGNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYnezEwMDA6an0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2k6e2l9JywgJ2k6JyArIHN0cihpKSkKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSB7JyInOiAnZHF1b3RlJywKKyAgICAgICAgICAgICAiJyI6ICdzcXVvdGUnLAorICAgICAgICAgICAgICdmb28nOiAnYmFyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnJ3tkWyInIl19JycnLCAnc3F1b3RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmIiIie2RbJyInXX0iIiIsICdkcXVvdGUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiZm9vIl19JywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7ZFsnZm9vJ119IiwgJ2JhcicpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGFlZjY2ZGEuLjEyZmFiYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC0zMTEsMTAgKzMxMSwxMiBAQAogICAgICAgICBfc3NsX2Nsb3NpbmcgPSBGYWxzZQogCiAgICAgICAgIGRlZiBzZWN1cmVfY29ubmVjdGlvbihzZWxmKToKLSAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNvY2tldCA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCkBAIC0xMDQ5LDEwICsxMDUxLDE5IEBACiAgICAgICAgIGZ0cC5jbG9zZSgpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnTVNHX09PQicsICdGVFBfUE9SVCcsICdNQVhMSU5FJywgJ0NSTEYnLCAnQl9DUkxGJywKKyAgICAgICAgICAgICAgICAgICAgICdFcnJvcicsICdwYXJzZTE1MCcsICdwYXJzZTIyNycsICdwYXJzZTIyOScsICdwYXJzZTI1NycsCisgICAgICAgICAgICAgICAgICAgICAncHJpbnRfbGluZScsICdmdHBjcCcsICd0ZXN0J30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZnRwbGliLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywKICAgICAgICAgICAgICBUZXN0SVB2NkVudmlyb25tZW50LAotICAgICAgICAgICAgIFRlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10KKyAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3MsCisgICAgICAgICAgICAgTWlzY1Rlc3RDYXNlXQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQppbmRleCBiNDMxZTA1Li4yN2ViNTc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtOSw2ICs5LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CitpbXBvcnQgY29udGV4dGxpYgogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIxLDYgKzIyLDE0IEBACiAKIGRlY2ltYWwgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgcmVwbGFjZWRfbW9kdWxlKG5hbWUsIHJlcGxhY2VtZW50KToKKyAgICBvcmlnaW5hbF9tb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQorICAgIHN5cy5tb2R1bGVzW25hbWVdID0gcmVwbGFjZW1lbnQKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBvcmlnaW5hbF9tb2R1bGUKIAogZGVmIGNhcHR1cmUoKmFyZ3MsICoqa3cpOgogICAgICIiImNhcHR1cmUgYWxsIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIiIiCkBAIC0xNjgsNTggKzE3NywzNSBAQAogICAgICAgICBwMi5uZXdfYXR0ciA9ICdzcGFtJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5ld19hdHRyLCAnc3BhbScpCiAKLQotQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCi1jbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IGNfZnVuY3Rvb2xzLnBhcnRpYWwKLQotICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfdW53cml0YWJsZShzZWxmKToKLSAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKLSAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQotCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoaGV4KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgcC5fX2RpY3RfXwotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdwYXJ0aWFsIG9iamVjdCBhbGxvd2VkIF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQnKQotCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgYXJncyA9IChvYmplY3QoKSwgb2JqZWN0KCkpCiAgICAgICAgIGFyZ3NfcmVwciA9ICcsICcuam9pbihyZXByKGEpIGZvciBhIGluIGFyZ3MpCiAgICAgICAgIGt3YXJncyA9IHsnYSc6IG9iamVjdCgpLCAnYic6IG9iamVjdCgpfQogICAgICAgICBrd2FyZ3NfcmVwcnMgPSBbJ2E9e2Ehcn0sIGI9e2Ihcn0nLmZvcm1hdF9tYXAoa3dhcmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdiPXtiIXJ9LCBhPXthIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyldCi0gICAgICAgIGlmIHNlbGYucGFydGlhbCBpcyBjX2Z1bmN0b29scy5wYXJ0aWFsOgorICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaW4gKGNfZnVuY3Rvb2xzLnBhcnRpYWwsIHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgICAgIG5hbWUgPSAnZnVuY3Rvb2xzLnBhcnRpYWwnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5wYXJ0aWFsLl9fbmFtZV9fCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0pJywgcmVwcihmKSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXByKGYpLAotICAgICAgICAgICAgICAgICAgICAgIFsne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwga3dhcmdzX3JlcHIpCisgICAgICAgICAgICAgICAgICAgICAgW2Yne25hbWV9KHtjYXB0dXJlIXJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2FyZ3NfcmVwcn0sIHtrd2FyZ3NfcmVwcn0pJwogICAgICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzX3JlcHIgaW4ga3dhcmdzX3JlcHJzXSkKIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwpAQCAtMjI3LDMwICsyMTMsMzEgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVzKC4uLikpJyAlIChuYW1lLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKC4uLiknICUgKG5hbWUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgJXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIC4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9JXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9Li4uKScgJSAobmFtZSwgY2FwdHVyZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCi0gICAgICAgIGYuYXR0ciA9IFtdCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQorICAgICAgICAgICAgZi5hdHRyID0gW10KKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGZfY29weSksIHNpZ25hdHVyZShmKSkKIAogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKQEAgLTI3NSwxMSArMjYyLDEzIEBACiAgICAgZGVmIHRlc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgZGljdChhdHRyPVtdKSkpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIE5vbmUpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLCAoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwge30pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKQEAgLTMyNiwzOCArMzE1LDM5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyWzBdKSwgdHVwbGUpCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgd2l0aCBzZWxmLkFsbG93UGlja2xlKCk6CisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGYsIHByb3RvKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmFyZ3NbMF0sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICMgSXNzdWUgNjA4MzogUmVmZXJlbmNlIGNvdW50aW5nIGJ1ZwogICAgIGRlZiB0ZXN0X3NldHN0YXRlX3JlZmNvdW50KHNlbGYpOgpAQCAtMzc2LDI0ICszNjYsNjAgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChvYmplY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5fX3NldHN0YXRlX18sIEJhZFNlcXVlbmNlKCkpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQorY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCisKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6CisgICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKKworICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKIAogY2xhc3MgVGVzdFBhcnRpYWxQeShUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHBhcnRpYWwgPSBzdGF0aWNtZXRob2QocHlfZnVuY3Rvb2xzLnBhcnRpYWwpCisgICAgcGFydGlhbCA9IHB5X2Z1bmN0b29scy5wYXJ0aWFsCiAKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fY20gPSByZXBsYWNlZF9tb2R1bGUoImZ1bmN0b29scyIsIHB5X2Z1bmN0b29scykKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2VudGVyX18oKQorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdGIpCiAKIGlmIGNfZnVuY3Rvb2xzOgotICAgIGNsYXNzIFBhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBjbGFzcyBDUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICBwYXNzCiAKK2NsYXNzIFB5UGFydGlhbFN1YmNsYXNzKHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBwYXNzCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFBhcnRpYWxDU3ViY2xhc3MoVGVzdFBhcnRpYWxDKToKICAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IFBhcnRpYWxTdWJjbGFzcworICAgICAgICBwYXJ0aWFsID0gQ1BhcnRpYWxTdWJjbGFzcwogCiAgICAgIyBwYXJ0aWFsIHN1YmNsYXNzZXMgYXJlIG5vdCBvcHRpbWl6ZWQgZm9yIG5lc3RlZCBjYWxscwogICAgIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbiA9IE5vbmUKIAorY2xhc3MgVGVzdFBhcnRpYWxQeVN1YmNsYXNzKFRlc3RQYXJ0aWFsUHkpOgorICAgIHBhcnRpYWwgPSBQeVBhcnRpYWxTdWJjbGFzcwogCiBjbGFzcyBUZXN0UGFydGlhbE1ldGhvZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY4NCw5ICs3MTAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKIAotCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RSZWR1Y2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGZ1bmMgPSBmdW5jdG9vbHMucmVkdWNlCisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIGZ1bmMgPSBjX2Z1bmN0b29scy5yZWR1Y2UKIAogICAgIGRlZiB0ZXN0X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgU3F1YXJlczoKQEAgLTEyNzksNiArMTMwNiwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCiAKKyAgICBkZWYgdGVzdF9rd2FyZ3Nfb3JkZXIoc2VsZik6CisgICAgICAgICMgUEVQIDQ2ODogUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0xMCkKKyAgICAgICAgZGVmIGYoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3Qoa3dhcmdzLml0ZW1zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihhPTEsIGI9MiksIFsoJ2EnLCAxKSwgKCdiJywgMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoYj0yLCBhPTEpLCBbKCdiJywgMiksICgnYScsIDEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhY2hlX2luZm8oKSwKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MiwgbWF4c2l6ZT0xMCwgY3VycnNpemU9MikpCisKICAgICBkZWYgdGVzdF9scnVfY2FjaGVfZGVjb3JhdGlvbihzZWxmKToKICAgICAgICAgZGVmIGYoem9tZzogJ3pvbWdfYW5ub3RhdGlvbicpOgogICAgICAgICAgICAgIiIiZiBkb2Mgc3RyaW5nIiIiCkBAIC0xMzA4LDcgKzEzNDUsNyBAQAogICAgICAgICAgICAgICAgIGYuY2FjaGVfY2xlYXIoKQogCiAgICAgICAgIG9yaWdfc2kgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNikKKyAgICAgICAgc3VwcG9ydC5zZXRzd2l0Y2hpbnRlcnZhbCgxZS02KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIGNyZWF0ZSBuIHRocmVhZHMgaW4gb3JkZXIgdG8gZmlsbCBjYWNoZQogICAgICAgICAgICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1mdWxsLCBhcmdzPVtrXSkKQEAgLTE1ODAsMTMgKzE2MTcsMTUgQEAKICAgICAgICAgYmFzZXMgPSBbYy5TZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNldF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGRpY3QsIGhheXN0YWNrKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKICAgICAgICAgYmFzZXMgPSBbYy5Db250YWluZXIsIGMuTWFwcGluZywgYy5NdXRhYmxlTWFwcGluZywgYy5PcmRlcmVkRGljdF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGMuQ2hhaW5NYXAsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbYy5DaGFpbk1hcCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgICAgICAjIElmIHRoZXJlJ3MgYSBnZW5lcmljIGZ1bmN0aW9uIHdpdGggaW1wbGVtZW50YXRpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICMgYm90aCBTaXplZCBhbmQgQ29udGFpbmVyLCBwYXNzaW5nIGEgZGVmYXVsdGRpY3QgdG8gaXQgcmVzdWx0cyBpbiBhbgpAQCAtMTYwNyw5ICsxNjQ2LDkgQEAKICAgICAgICAgYmFzZXMgPSBbYy5NdXRhYmxlU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmddCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhELCBiYXNlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuTWFwcGluZywgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwgYy5SZXZlcnNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF0pCiAKICAgICAgICAgIyBDb250YWluZXIgYW5kIENhbGxhYmxlIGFyZSByZWdpc3RlcmVkIG9uIGRpZmZlcmVudCBiYXNlIGNsYXNzZXMgYW5kCkBAIC0xNjIyLDcgKzE2NjEsOCBAQAogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oQywgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtDLCBjLkNhbGxhYmxlLCBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYWJjKHNlbGYpOgogICAgICAgICBjID0gY29sbGVjdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggN2IwNzJhZC4uMmYxYzQxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTUsNyArNSw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCByZQogCi1yeCA9IHJlLmNvbXBpbGUoJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQorcnggPSByZS5jb21waWxlKHInXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCiAKIGRlZiBnZXRfZXJyb3JfbG9jYXRpb24obXNnKToKICAgICBtbyA9IHJ4LnNlYXJjaChzdHIobXNnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGE0ZDY4NGIuLmU3Mjc0OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtNjg0LDcgKzY4NCw2IEBACiAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggdGhlIF9fbWFpbl9fIG1vZHVsZSBhbmQgY2hlY2sKICAgICAgICAgIyBpdCBnZXRzIGNvbGxlY3RlZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKQEAgLTY5OSw3ICs2OTgsNiBAQAogICAgICAgICAjIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgbm9uLV9fbWFpbl9fIG1vZHVsZS4KICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBtb2R1bGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCAzZGIxMGI2Li42MGYxZDkyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNSw3ICs1LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBwcHJpbnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCkBAIC0xMTEsNiArMTEwLDcgQEAKIAogQlJFQUtQT0lOVF9GTj0nYnVpbHRpbl9pZCcKIAorQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlBHTywgIm5vdCB1c2VmdWwgZm9yIFBHTyIpCiBjbGFzcyBEZWJ1Z2dlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhhdCB0aGUgZGVidWdnZXIgY2FuIGRlYnVnIFB5dGhvbi4iIiIKQEAgLTE3Nyw2ICsxNzcsNyBAQAogICAgICAgICBhcmdzID0gWyctLWV2YWwtY29tbWFuZD0lcycgJSBjbWQgZm9yIGNtZCBpbiBjb21tYW5kc10KICAgICAgICAgYXJncyArPSBbIi0tYXJncyIsCiAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlXQorICAgICAgICBhcmdzLmV4dGVuZChzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKIAogICAgICAgICBpZiBub3QgaW1wb3J0X3NpdGU6CiAgICAgICAgICAgICAjIC1TIHN1cHByZXNzZXMgdGhlIGRlZmF1bHQgJ2ltcG9ydCBzaXRlJwpAQCAtMjQwLDcgKzI0MSw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2gocicuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsIHJlLkRPVEFMTCkKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZ2RiIG91dHB1dDogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTI5Miw3ICsyOTMsOCBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZGljdGlvbmFyaWVzJwogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoe30pCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInfSwgInsnZm9vJzogJ2Jhcid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQorICAgICAgICAjIFB5dGhvbiBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyIHNpbmNlIDMuNgorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSIpCiAKICAgICBkZWYgdGVzdF9saXN0cyhzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGxpc3RzJwpAQCAtMzU1LDkgKzM1NywxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAnc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgInNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnXSksICJ7J2EnfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGhhbmRsZSBzZXRzIGNvbnRhaW5pbmcgdGhlICJkdW1teSIga2V5IHZhbHVlLAogICAgICAgICAjIHdoaWNoIGhhcHBlbnMgb24gZGVsZXRpb246CkBAIC0zNzAsOSArMzc1LDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICdmcm96ZW5zZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnXSksICJmcm96ZW5zZXQoeydhJ30pIikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFJ1bnRpbWVFcnJvcgpAQCAtNTAxLDYgKzUwOSwxMCBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbnNfaGVscChzZWxmKToKICAgICAgICAgJ0Vuc3VyZSB0aGF0IHRoZSBuZXctc3R5bGUgY2xhc3MgX0hlbHBlciBpbiBzaXRlLnB5IGNhbiBiZSBoYW5kbGVkJworCisgICAgICAgIGlmIHN5cy5mbGFncy5ub19zaXRlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCBzaXRlIG1vZHVsZSwgYnV0IC1TIG9wdGlvbiB3YXMgdXNlZCIpCisKICAgICAgICAgIyAodGhpcyB3YXMgdGhlIGlzc3VlIGNhdXNpbmcgdHJhY2ViYWNrcyBpbgogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQpAQCAtNTM2LDcgKzU0OCw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NDksNyArNTYxLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU2Myw3ICs1NzUsNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTk4LDcgKzYxMCw3IEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaW1wb3J0IHN5czsgaWQoc3lzLnN0ZG91dC5yZWFkbGluZXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTYxMyw3ICs2MjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0nYnVpbHRpbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydwcmludCAoUHlGcmFtZU9iamVjdCopKCgoUHlDb2RlT2JqZWN0Kil2KS0+Y29fem9tYmllZnJhbWUpJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5ET1RBTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtNjY3LDcgKzY3OSw3IEBACiAgICAgZGVmIHRlc3RfcHl1cF9jb21tYW5kKHNlbGYpOgogICAgICAgICAnVmVyaWZ5IHRoYXQgdGhlICJweS11cCIgY29tbWFuZCB3b3JrcycKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktdXAnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicnJ14uKgogI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCkBAIC02ODYsNyArNjk4LDcgQEAKICAgICBkZWYgdGVzdF91cF9hdF90b3Aoc2VsZik6CiAgICAgICAgICdWZXJpZnkgaGFuZGxpbmcgb2YgInB5LXVwIiBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaycKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10gKiA0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10gKiA1KQogICAgICAgICBzZWxmLmFzc2VydEVuZHNXaXRoKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gZmluZCBhbiBvbGRlciBweXRob24gZnJhbWVcbicpCiAKQEAgLTY5Niw3ICs3MDgsNyBAQAogICAgIGRlZiB0ZXN0X3VwX3RoZW5fZG93bihzZWxmKToKICAgICAgICAgJ1ZlcmlmeSAicHktdXAiIGZvbGxvd2VkIGJ5ICJweS1kb3duIicKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LWRvd24nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1kb3duJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKICNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQpAQCAtNzE1LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKIFRyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgPGJ1aWx0LWluIG1ldGhvZCBpZCBvZiBtb2R1bGUgb2JqZWN0IC4qPgogICBGaWxlICIuKmdkYl9zYW1wbGUucHkiLCBsaW5lIDEwLCBpbiBiYXoKICAgICBpZFwoNDJcKQogICBGaWxlICIuKmdkYl9zYW1wbGUucHkiLCBsaW5lIDcsIGluIGJhcgpAQCAtODQxLDcgKzg1NCw3IEBACiAgICAgZGVmIHRlc3RfYmFzaWNfY29tbWFuZChzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGF0IHRoZSAicHktcHJpbnQiIGNvbW1hbmQgd29ya3MnCiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBhcmdzJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktcHJpbnQgYXJncyddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5sb2NhbCAnYXJncycgPSBcKDEsIDIsIDNcKVxuLioiKQogCkBAIC04NTAsNyArODYzLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfUFlVUF9QWURPV04sICJ0ZXN0IHJlcXVpcmVzIHB5LXVwL3B5LWRvd24gY29tbWFuZHMiKQogICAgIGRlZiB0ZXN0X3ByaW50X2FmdGVyX3VwKHNlbGYpOgogICAgICAgICBidCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKHNjcmlwdD1zZWxmLmdldF9zYW1wbGVfc2NyaXB0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktcHJpbnQgYycsICdweS1wcmludCBiJywgJ3B5LXByaW50IGEnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1wcmludCBjJywgJ3B5LXByaW50IGInLCAncHktcHJpbnQgYSddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5sb2NhbCAnYycgPSAzXG5sb2NhbCAnYicgPSAyXG5sb2NhbCAnYScgPSAxXG4uKiIpCiAKQEAgLTg1OCw3ICs4NzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKICAgICBkZWYgdGVzdF9wcmludGluZ19nbG9iYWwoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBfX25hbWVfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LXByaW50IF9fbmFtZV9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmdsb2JhbCAnX19uYW1lX18nID0gJ19fbWFpbl9fJ1xuLioiKQogCkBAIC04NjYsNyArODc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCiAgICAgZGVmIHRlc3RfcHJpbnRpbmdfYnVpbHRpbihzZWxmKToKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXByaW50IGxlbiddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LXByaW50IGxlbiddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5idWlsdGluICdsZW4nID0gPGJ1aWx0LWluIG1ldGhvZCBsZW4gb2YgbW9kdWxlIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cbi4qIikKIApAQCAtODc1LDcgKzg4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQogICAgIGRlZiB0ZXN0X2Jhc2ljX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1sb2NhbHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1sb2NhbHMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYXJncyA9IFwoMSwgMiwgM1wpXG4uKiIpCiAKQEAgLTg4NCw3ICs4OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKICAgICBkZWYgdGVzdF9sb2NhbHNfYWZ0ZXJfdXAoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1sb2NhbHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1sb2NhbHMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYSA9IDFcbmIgPSAyXG5jID0gM1xuLioiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggY2Q2YTQzZC4uZjgxYzgyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMjQ1LDExICsyNDUsMTEgQEAKICAgICAgICAgICAgIHlpZWxkCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAKICAgICAgICAgICAgIG5leHQoZ2VuKCkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIC4qIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiksIFwKICAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogCkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgICAgZyA9IGYoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKICAgICAgICAgICAgICAgICBuZXh0KGcpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGI3N2QxZDcuLmY2OThlMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtOCwxMyArOCwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorYW5kcm9pZF9ub3Rfcm9vdCA9IHN1cHBvcnQuYW5kcm9pZF9ub3Rfcm9vdAogCiAKLWRlZiBzYWZlX3JtZGlyKGRpcm5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcworZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBkYXRhPWInZm9vJyk6CisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAneGInLCAwKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUoZGF0YSkKIAogCiBjbGFzcyBHZW5lcmljVGVzdDoKQEAgLTk3LDUyICs5Niw0NyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHMxW246bisxXSwgczJbbjpuKzFdKQogCiAgICAgZGVmIHRlc3RfZ2V0c2l6ZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKHN1cHBvcnQuVEVTVEZOKSwgMykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCiAKLSAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAiYWIiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCA1KQorICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8gV29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDEyKQorCisgICAgZGVmIHRlc3RfZmlsZXRpbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidmb28nKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgImFiIiwgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJiYXIiKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikKLSAgICAgICAgICAgIGQgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGIiZm9vYmFyIikKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJmb29iYXIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShmaWxlbmFtZSkKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhmaWxlbmFtZSksIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKICAgICBkZWYgdGVzdF9leGlzdHNfZmQoc2VsZik6CkBAIC0xNTQsMTE5ICsxNDgsMTI2IEBACiAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCiAKLSAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgZGVmIHRlc3RfaXNkaXJfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgZGVmIHRlc3RfaXNmaWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQorICAgIGRlZiB0ZXN0X2lzZGlyX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKIAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4sIHRlc3RfZm4pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgZmlsZTEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBmaWxlMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUxKSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKKworICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9zeW1saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhvcy5zeW1saW5rKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAiaGFyZCBsaW5rcyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotCi0gICAgICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHRlc3RfZm5zID0gW3Rlc3RfZm5dKjIKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBzdGF0MSA9IG9zLnN0YXQodGVzdF9mbjEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIG9zLnN0YXQodGVzdF9mbjEpKSkKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc3RhdDIgPSBvcy5zdGF0KHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgc3RhdDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQorCisgICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX3N5bWxpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKG9zLnN5bWxpbmspCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJoYXJkIGxpbmtzIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0gICAgICAgICAgICB0ZXN0X2ZucyA9ICh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBmdW5jKCp0ZXN0X2ZucykKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6Ci0gICAgICAgIGZuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAid2IiKSBhcyBhLCBvcGVuKGZuYW1lLCAid2IiKSBhcyBiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAxOgorICAgICAgICAgICAgZmQxID0gZnAxLmZpbGVubygpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMjoKKyAgICAgICAgICAgICAgICBmZDIgPSBmcDIuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZShmZDEsIGZkMikpCisKIAogY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCkBAIC0zOTAsMTAgKzM5MSwxMyBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAorICAgICAgICAjIGF2b2lkIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5kb3dzCisgICAgICAgIHVuZGVjb2RhYmxlX3BhdGggPSBiJycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSBiJ2ZceGYyXHhmMicKKwogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIHVuZGVjb2RhYmxlX3BhdGgsIGInL2ZvbycsIGInQzpcXCcpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChwYXRoKSwgYnl0ZXMpCiAKICAgICBkZWYgdGVzdF9yZWFscGF0aChzZWxmKToKQEAgLTQ1MiwxNiArNDU2LDE1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCBiJ2J5dGVzJykKICAgICAgICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NwotICAgICAgICAgICAgZXJybXNnID0gcidqb2luXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnbGlzdCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2xpc3QnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKICAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKQEAgLTQ3MywxNCArNDc2LDU5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCi0gICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZpbGVfbmFtZSwgYiJ0ZXN0X2dlbmVyaWNwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5leGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2ZpbGUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZGlyKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wcmVmaXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5jb21tb25wcmVmaXgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRzaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldHNpemUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldG10aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGF0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRjdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRjdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZSkpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCA5ODRhYWM3Li44YTE5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTUsMTAgKzUsNiBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCiBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcywgZ2V0YXJnc19rZXl3b3JkX29ubHkKLXRyeToKLSAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MLCBnZXRhcmdzX0sKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBnZXRhcmdzX0wgPSBOb25lICMgUFlfTE9OR19MT05HIG5vdCBhdmFpbGFibGUKIAogIyA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgogIyA+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgpAQCAtMzA5LDcgKzMwNSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGFyZ3NfbiwgVkVSWV9MQVJHRSkKIAogCi1AdW5pdHRlc3Quc2tpcElmKGdldGFyZ3NfTCBpcyBOb25lLCAnUFlfTE9OR19MT05HIGlzIG5vdCBhdmFpbGFibGUnKQogY2xhc3MgTG9uZ0xvbmdfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X0woc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wKQEAgLTM2NSw3ICszNjAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19mLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoRkxUX01JTiwgLUZMVF9NSU4sIEZMVF9NQVgsIC1GTFRfTUFYLCBJTkYsIC1JTkYpOgpAQCAtMzkwLDcgKzM4Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2QsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChEQkxfTUlOLCAtREJMX01JTiwgREJMX01BWCwgLURCTF9NQVgsIElORiwgLUlORik6CkBAIC00NzQsNyArNDcxLDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfYXJncygqVHVwbGVTdWJjbGFzcyhbMSwgMl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIHR1cGxlKQogCiAgICAgICAgIHJldCA9IGdldF9hcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICgoKSwgTm9uZSkpCkBAIC01MTIsNyArNTA5LDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCoqRGljdFN1YmNsYXNzKHsnYSc6IDEsICdiJzogMn0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgeydhJzogMSwgJ2InOiAyfSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIGRpY3QpCiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoe30sIE5vbmUpKQpAQCAtNjI4LDIwICs2MjUsMjAgQEAKICAgICAgICAgICAgICkKICAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KG9wdGlvbmFsPTIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKIAogICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CkBAIC02NTYsNiArNjUzLDM5IEBACiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQogCiAKK2NsYXNzIFBvc2l0aW9uYWxPbmx5QW5kS2V5d29yZHNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMgYXMgZ2V0YXJncworCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2FyZ3Moc2VsZik6CisgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIGtleXdvcmQ9MyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIpLCAoMSwgMiwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCBrZXl3b3JkPTMpLCAoMSwgLTEsIDMpKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSksICgxLCAtMSwgLTEpKQorICAgICAgICAjIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJnIG1pc3NpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3Moa2V5d29yZD0zKQorCisgICAgZGVmIHRlc3RfZW1wdHlfa2V5d29yZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygxLCAyLCAqKnsnJzogNjY2fSkKKworCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYwpAQCAtODIyLDEwICs4NTIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2VzX2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfZXRfaGFzaChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfZXRfaGFzaApAQCAtODQ4LDEwICs4NzgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2V0X2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfdShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfdQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CmluZGV4IGY1N2U1NDYuLmE4NTI0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYXNlNjQKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnZXR0ZXh0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNTI3LDYgKzUyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19jbGFzc19fLCBEdW1teUdOVVRyYW5zbGF0aW9ucykKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjMnB5JywgJ0VOT0VOVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGdldHRleHQsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dsb2JhbC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CmluZGV4IDM3ZWM2NzIuLjllZWNjZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgZ2xvYmFsIGEKICAgICBnbG9iYWwgYgogIiIiCi0gICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCBwcm9nX3RleHRfMSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsIHByb2dfdGV4dF8xLCBsaW5lbm89NCwgb2Zmc2V0PTQpCiAKICAgICBkZWYgdGVzdDIoc2VsZik6CiAgICAgICAgIHByb2dfdGV4dF8yID0gIiIiXApAQCAtMzIsNyArMzIsNyBAQAogICAgIHByaW50KHgpCiAgICAgZ2xvYmFsIHgKICIiIgotICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgcHJvZ190ZXh0XzIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCBwcm9nX3RleHRfMiwgbGluZW5vPTMsIG9mZnNldD00KQogCiAgICAgZGVmIHRlc3QzKHNlbGYpOgogICAgICAgICBwcm9nX3RleHRfMyA9ICIiIlwKQEAgLTQxLDcgKzQxLDcgQEAKICAgICB4ID0gMgogICAgIGdsb2JhbCB4CiAiIiIKLSAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsIHByb2dfdGV4dF8zKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgcHJvZ190ZXh0XzMsIGxpbmVubz00LCBvZmZzZXQ9NCkKIAogICAgIGRlZiB0ZXN0NChzZWxmKToKICAgICAgICAgcHJvZ190ZXh0XzQgPSAiIiJcCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMTU0ZTNiNi4uNjVlMjZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtOCw2ICs4LDk1IEBACiAjIHRlc3RpbmcgaW1wb3J0ICoKIGZyb20gc3lzIGltcG9ydCAqCiAKKyMgZGlmZmVyZW50IGltcG9ydCBwYXR0ZXJucyB0byBjaGVjayB0aGF0IF9fYW5ub3RhdGlvbnNfXyBkb2VzIG5vdCBpbnRlcmZlcmUKKyMgd2l0aCBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgdGVzdC5hbm5fbW9kdWxlIGFzIGFubl9tb2R1bGUKK2ltcG9ydCB0eXBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUyCitpbXBvcnQgdGVzdAorCisjIFRoZXNlIGFyZSBzaGFyZWQgd2l0aCB0ZXN0X3Rva2VuaXplIGFuZCBvdGhlciB0ZXN0IG1vZHVsZXMuCisjCisjIE5vdGU6IHNpbmNlIHNldmVyYWwgdGVzdCBjYXNlcyBmaWx0ZXIgb3V0IGZsb2F0cyBieSBsb29raW5nIGZvciAiZSIgYW5kICIuIiwKKyMgZG9uJ3QgYWRkIGhleGFkZWNpbWFsIGxpdGVyYWxzIHRoYXQgY29udGFpbiAiZSIgb3IgIkUiLgorVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAnMF8wXzAnLAorICAgICc0XzInLAorICAgICcxXzAwMDBfMDAwMCcsCisgICAgJzBiMTAwMV8wMTAwJywKKyAgICAnMHhmZmZmX2ZmZmYnLAorICAgICcwbzVfN183JywKKyAgICAnMV8wMF8wMC41JywKKyAgICAnMV8wMF8wMC41ZTUnLAorICAgICcxXzAwXzAwZTVfMScsCisgICAgJzFlMV8wJywKKyAgICAnLjFfNCcsCisgICAgJy4xXzRlMScsCisgICAgJzBiXzAnLAorICAgICcweF9mJywKKyAgICAnMG9fNScsCisgICAgJzFfMDBfMDBqJywKKyAgICAnMV8wMF8wMC41aicsCisgICAgJzFfMDBfMDBlNV8xaicsCisgICAgJy4xXzRqJywKKyAgICAnKDFfMi41KzNfM2opJywKKyAgICAnKC41XzZqKScsCitdCitJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgIyBUcmFpbGluZyB1bmRlcnNjb3JlczoKKyAgICAnMF8nLAorICAgICc0Ml8nLAorICAgICcxLjRqXycsCisgICAgJzB4XycsCisgICAgJzBiMV8nLAorICAgICcweGZfJywKKyAgICAnMG81XycsCisgICAgJzAgaWYgMV9FbHNlIDEnLAorICAgICMgVW5kZXJzY29yZXMgaW4gdGhlIGJhc2Ugc2VsZWN0b3I6CisgICAgJzBfYjAnLAorICAgICcwX3hmJywKKyAgICAnMF9vNScsCisgICAgIyBPbGQtc3R5bGUgb2N0YWwsIHN0aWxsIGRpc2FsbG93ZWQ6CisgICAgJzBfNycsCisgICAgJzA5Xzk5JywKKyAgICAjIE11bHRpcGxlIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzOgorICAgICc0X19fX19fXzInLAorICAgICcwLjFfXzQnLAorICAgICcwLjFfXzRqJywKKyAgICAnMGIxMDAxX18wMTAwJywKKyAgICAnMHhmZmZmX19mZmZmJywKKyAgICAnMHhfX18nLAorICAgICcwbzVfXzc3JywKKyAgICAnMWUxX18wJywKKyAgICAnMWUxX18waicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBhIGRvdDoKKyAgICAnMV8uNCcsCisgICAgJzFfLjRqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBkb3Q6CisgICAgJzEuXzQnLAorICAgICcxLl80aicsCisgICAgJy5fNScsCisgICAgJy5fNWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIHNpZ246CisgICAgJzEuMGUrXzEnLAorICAgICcxLjBlK18xaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBqOgorICAgICcxLjRfaicsCisgICAgJzEuNGU1X2onLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgZToKKyAgICAnMV9lMScsCisgICAgJzEuNF9lMScsCisgICAgJzEuNF9lMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBlOgorICAgICcxZV8xJywKKyAgICAnMS40ZV8xJywKKyAgICAnMS40ZV8xaicsCisgICAgIyBDb21wbGV4IGNhc2VzIHdpdGggcGFyZW5zOgorICAgICcoMSsxLjVfal8pJywKKyAgICAnKDErMS41X2opJywKK10KKwogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArMTc2LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSBpZiAwZWxzZSAwLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIjAgaWYgMUVsc2UgMCIpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwobGl0KSwgZXZhbChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGxpdCkKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6IG5vIGxpdGVyYWwgYmVnaW5zIHdpdGggYW4gdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGV2YWwsICJfMCIpCisKICAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCkBAIC0xMzksNiArMjM2LDE5IEBACiAgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAordmFyX2Fubm90X2dsb2JhbDogaW50ICMgYSBnbG9iYWwgYW5ub3RhdGVkIGlzIG5lY2Vzc2FyeSBmb3IgdGVzdF92YXJfYW5ub3QKKworIyBjdXN0b20gbmFtZXNwYWNlIGZvciB0ZXN0aW5nIF9fYW5ub3RhdGlvbnNfXworCitjbGFzcyBDTlM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kY3QgPSB7fQorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2RjdFtpdGVtLmxvd2VyKCldID0gdmFsdWUKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKworCiBjbGFzcyBHcmFtbWFyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQpAQCAtMTU0LDYgKzI2NCwxNjAgQEAKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNzKHNlbGYpOgorICAgICAgICAjIGFsbCB0aGVzZSBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICB2YXIxOiBpbnQgPSA1CisgICAgICAgIHZhcjI6IFtpbnQsIHN0cl0KKyAgICAgICAgbXlfbHN0ID0gWzQyXQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpbnQubmV3X2F0dHI6IGludAorICAgICAgICBbbGlzdF1bMF06IHR5cGUKKyAgICAgICAgbXlfbHN0W29uZSgpLTFdOiBpbnQgPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbHN0LCBbNV0pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc3ludGF4X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBwYXJzZXIgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng6IGludDogc3RyIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBub25sb2NhbCB4OiBpbnRcbiIpCisgICAgICAgICMgQVNUIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJbeCwgMF06IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCk6IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICIoeCwpOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICh4LCB5KTogaW50ID0gKDEsIDIpXG4iKQorICAgICAgICAjIHN5bXRhYmxlIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIyBleGVjdXRpb24gb3JkZXIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogbm9fbmFtZV9hZ2FpbiA9IDEvMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogMS8wID0gMAorICAgICAgICBnbG9iYWwgdmFyX2Fubm90X2dsb2JhbAorCisgICAgICAgICMgZnVuY3Rpb24gc2VtYW50aWNzCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBzdDogc3RyID0gIkhlbGxvIgorICAgICAgICAgICAgYS5iOiBpbnQgPSAoMSwgMikKKyAgICAgICAgICAgIHJldHVybiBzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgZGVmIGZfT0soKToKKyAgICAgICAgICAgIHg6IDEvMAorICAgICAgICBmX09LKCkKKyAgICAgICAgZGVmIGZiYWQoKToKKyAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgcHJpbnQoeCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmJvdW5kTG9jYWxFcnJvcik6CisgICAgICAgICAgICBmYmFkKCkKKyAgICAgICAgZGVmIGYyYmFkKCk6CisgICAgICAgICAgICAobm9fc3VjaF9nbG9iYWwpOiBpbnQKKyAgICAgICAgICAgIHByaW50KG5vX3N1Y2hfZ2xvYmFsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmMmJhZCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgTmFtZUVycm9yKQorCisgICAgICAgICMgY2xhc3Mgc2VtYW50aWNzCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBfX2ZvbzogaW50CisgICAgICAgICAgICBzOiBzdHIgPSAiYXR0ciIKKyAgICAgICAgICAgIHogPSAyCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54OiBpbnQgPSB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fubm90YXRpb25zX18sIHsnX0NfX2Zvbyc6IGludCwgJ3MnOiBzdHJ9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDQmFkOgorICAgICAgICAgICAgICAgIG5vX3N1Y2hfbmFtZV9kZWZpbmVkLmF0dHI6IGludCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ2JhZDIoQyk6CisgICAgICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICAgICAgeC55OiBsaXN0ID0gW10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tZXRhY2xhc3Nfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDTWV0YSh0eXBlKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7J19fYW5ub3RhdGlvbnNfXyc6IENOUygpfQorICAgICAgICBjbGFzcyBDQyhtZXRhY2xhc3M9Q01ldGEpOgorICAgICAgICAgICAgWFg6ICdBTk5PVCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDQy5fX2Fubm90YXRpb25zX19bJ3h4J10sICdBTk5PVCcpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbW9kdWxlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwcmludCh0ZXN0Ll9fYW5ub3RhdGlvbnNfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgIHsxOiAyLCAneCc6IGludCwgJ3knOiBzdHIsICdmJzogdHlwaW5nLlR1cGxlW2ludCwgaW50XX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5NLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnMTIzJzogMTIzLCAnbyc6IHR5cGV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUyLl9fYW5ub3RhdGlvbnNfXywge30pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfaW5fbW9kdWxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGZhaWwgdGhlIHNhbWUgd2F5IHdoZW4gZXhlY3V0ZWQKKyAgICAgICAgIyBvdXRzaWRlIG9mIG1vZHVsZSB3aGVyZSB0aGV5IHdlcmUgZGVmaW5lZAorICAgICAgICBmcm9tIHRlc3QuYW5uX21vZHVsZTMgaW1wb3J0IGZfYmFkX2FubiwgZ19iYWRfYW5uLCBEX2JhZF9hbm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZl9iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ19iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgRF9iYWRfYW5uKDUpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc2ltcGxlX2V4ZWMoc2VsZik6CisgICAgICAgIGducyA9IHt9OyBsbnM9IHt9CisgICAgICAgIGV4ZWMoIidkb2NzdHJpbmcnXG4iCisgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfX1sxXSA9IDJcbiIKKyAgICAgICAgICAgICAieDogaW50ID0gNVxuIiwgZ25zLCBsbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG5zWyJfX2Fubm90YXRpb25zX18iXSwgezE6IDIsICd4JzogaW50fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBnbnNbJ19fYW5ub3RhdGlvbnNfXyddCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfY3VzdG9tX21hcHMoc2VsZik6CisgICAgICAgICMgdGVzdHMgd2l0aCBjdXN0b20gbG9jYWxzKCkgYW5kIF9fYW5ub3RhdGlvbnNfXworICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGV4ZWMoJ1g6IGludDsgWjogc3RyID0gIloiOyAodyk6IGNvbXBsZXggPSAxaicsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd6J10sIHN0cikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ11bJ3cnXQorICAgICAgICBub25sb2NfbnMgPSB7fQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ3g6IGludCA9IDEnLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3JlZmxlYWsoc2VsZik6CisgICAgICAgICMgY29tcGxleCBjYXNlOiBjdXN0b20gbG9jYWxzIHBsdXMgY3VzdG9tIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAjIHRoaXMgd2FzIGNhdXNpbmcgcmVmbGVhaworICAgICAgICBjbnMgPSBDTlMoKQorICAgICAgICBub25sb2NfbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygnWDogc3RyJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIHN0cikKKwogICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKQEAgLTI5NSw2ICs1NTksMTAgQEAKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMixrMj0xMDAsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCkKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMix0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwLCBrMj0xMDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwpOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCAqKmt3ZHMpOiBwYXNzIikKKwogICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIGFmdGVyICphcmdsaXN0CiAgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCkBAIC0zNDEsNyArNjA5LDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmdzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCkBAIC0zNTIsNiArNjIwLDIzIEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCisgICAgICAgICMgQ2hlY2sgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQgaW4gZnVuY2RlZiBhcmd1bWVudCBsaXN0CisgICAgICAgIGRlZiBmKGEsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKCoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsICoqa3dkcywpOiBwYXNzCisKICAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKQEAgLTM3MCw2ICs2NTUsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIpLCAxKzIrMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyLGs9MTApLCAxKzIrMTApCiAKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkCisgICAgICAgIGwxMCA9IGxhbWJkYSBhLDogMAorICAgICAgICBsMTEgPSBsYW1iZGEgKmFyZ3MsOiAwCisgICAgICAgIGwxMiA9IGxhbWJkYSAqKmt3ZHMsOiAwCisgICAgICAgIGwxMyA9IGxhbWJkYSBhLCAqYXJncyw6IDAKKyAgICAgICAgbDE0ID0gbGFtYmRhIGEsICoqa3dkcyw6IDAKKyAgICAgICAgbDE1ID0gbGFtYmRhICphcmdzLCBiLDogMAorICAgICAgICBsMTYgPSBsYW1iZGEgKiwgYiw6IDAKKyAgICAgICAgbDE3ID0gbGFtYmRhICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxOCA9IGxhbWJkYSBhLCAqYXJncywgYiw6IDAKKyAgICAgICAgbDE5ID0gbGFtYmRhIGEsICosIGIsOiAwCisgICAgICAgIGwyMCA9IGxhbWJkYSBhLCAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMjEgPSBsYW1iZGEgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIyID0gbGFtYmRhICosIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIzID0gbGFtYmRhIGEsICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyNCA9IGxhbWJkYSBhLCAqLCBiLCAqKmt3ZHMsOiAwCisKIAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwpAQCAtMTA0MCwxOCArMTM0Miw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKICAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKLSAgICAgICAgYXN5bmMgPSAxCi0gICAgICAgIGF3YWl0ID0gMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQotCi0gICAgICAgIGRlZiBhc3luYygpOgotICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKLSAgICAgICAgICAgIGF3YWl0ID0gMTAKLSAgICAgICAgYXN5bmMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCi0KICAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKICAgICAgICAgICAgIGRlZiBzdW0oKToKICAgICAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDI3MmIwODYuLjY5MDk1YTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw1ICs5MiwxNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKKyAgICBkZWYgdGVzdF9ub25pbnRlZ2VyX2dpZChzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGdycC5nZXRncmFsbCgpCisgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbm8gZ3JvdXBzJykKKyAgICAgICAgIyBDaG9vc2UgYW4gZXhpc3RlbnQgZ2lkLgorICAgICAgICBnaWQgPSBlbnRyaWVzWzBdWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIGZsb2F0KGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIHN0cihnaWQpKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggM2M1MTY3My4uYjQ1N2JkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYXJyYXkKQEAgLTY3LDYgKzY4LDE4IEBACiAgICAgICAgICMgVGVzdCBtdWx0aXBsZSBjbG9zZSgpIGNhbGxzLgogICAgICAgICBmLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JlYWRfd2l0aF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGQgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExICogNTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLm5hbWUsIHN0cikKKwogICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0X3dyaXRlX3h5IG1ldGhvZHMgdGVzdCB0aGF0IHdyaXRlIGFjY2VwdHMKICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0IHR5cGUgYXMgaW5wdXQKICAgICAjIGFuZCB0aGF0IHRoZSBkYXRhIHdyaXR0ZW4gZXF1YWxzIGJ5dGVzKHh5KSBpbiBhbGwgY2FzZXMuCkBAIC00MzQsMTIgKzQ0NywxMiBAQAogCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKIAogICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQogICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC01MjEsNiArNTM0LDE1IEBACiAgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSAqIDUxKQorCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KICAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGM5YjExM2UuLmY3NDhiNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTcsNiArNyw3IEBACiAjCiAKIGltcG9ydCBhcnJheQorZnJvbSBiaW5hc2NpaSBpbXBvcnQgdW5oZXhsaWZ5CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCkBAIC0xOSw2ICsyMCw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IF80RywgYmlnbWVtdGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwogQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKQEAgLTI2LDYgKzI4LDIxIEBACiBjX2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgZnJlc2g9WydfaGFzaGxpYiddKQogcHlfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBibG9ja2VkPVsnX2hhc2hsaWInXSkKIAordHJ5OgorICAgIGltcG9ydCBfYmxha2UyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2JsYWtlMiA9IE5vbmUKKworcmVxdWlyZXNfYmxha2UyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfYmxha2UyLCAncmVxdWlyZXMgX2JsYWtlMicpCisKK3RyeToKKyAgICBpbXBvcnQgX3NoYTMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfc2hhMyA9IE5vbmUKKworcmVxdWlyZXNfc2hhMyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX3NoYTMsICdyZXF1aXJlcyBfc2hhMycpCisKKwogZGVmIGhleHN0cihzKToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBieXRlcyksIHJlcHIocykKICAgICBoID0gIjAxMjM0NTY3ODlhYmNkZWYiCkBAIC0zNSwxMCArNTIsMzMgQEAKICAgICByZXR1cm4gcgogCiAKK1VSTCA9ICJodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L2hhc2hsaWIve30udHh0IgorCitkZWYgcmVhZF92ZWN0b3JzKGhhc2hfbmFtZSk6CisgICAgdXJsID0gVVJMLmZvcm1hdChoYXNoX25hbWUpCisgICAgdHJ5OgorICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwpCisgICAgZXhjZXB0IChPU0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSB7fSIuZm9ybWF0KHVybCkpCisgICAgd2l0aCB0ZXN0ZGF0YToKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcsJykKKyAgICAgICAgICAgIHBhcnRzWzBdID0gYnl0ZXMuZnJvbWhleChwYXJ0c1swXSkKKyAgICAgICAgICAgIHlpZWxkIHBhcnRzCisKKwogY2xhc3MgSGFzaExpYlRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdXBwb3J0ZWRfaGFzaF9uYW1lcyA9ICggJ21kNScsICdNRDUnLCAnc2hhMScsICdTSEExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKworICAgIHNoYWtlcyA9IHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9CiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTU2LDYgKzk2LDExIEBACiAgICAgICAgIGFsZ29yaXRobXMgPSBzZXQoKQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CiAgICAgICAgICAgICBhbGdvcml0aG1zLmFkZChhbGdvcml0aG0ubG93ZXIoKSkKKworICAgICAgICBfYmxha2UyID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2JsYWtlMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhbGdvcml0aG1zLnVwZGF0ZSh7J2JsYWtlMmInLCAnYmxha2Uycyd9KQorCiAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QgPSB7fQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIGFsZ29yaXRobXM6CiAgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W2FsZ29yaXRobV0gPSBzZXQoKQpAQCAtNjQsMTAgKzEwOSwxMCBAQAogICAgICAgICAjIG9mIGhhc2hsaWIubmV3IGdpdmVuIHRoZSBhbGdvcml0aG0gbmFtZS4KICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoZ2V0YXR0cihoYXNobGliLCBhbGdvcml0aG0pKQotICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSk6CisgICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhLCAqKmt3YXJncykKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldykKIAogICAgICAgICBfaGFzaGxpYiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19oYXNobGliJykKQEAgLTk5LDYgKzE0NCwxOCBAQAogICAgICAgICBpZiBfc2hhNTEyOgogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTM4NCcpCiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhNTEyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJzJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJiJykKKworICAgICAgICBfc2hhMyA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19zaGEzJykKKyAgICAgICAgaWYgX3NoYTM6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yMjQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjU2JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzM4NCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM181MTInKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzEyOCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMjU2JykKIAogICAgICAgICBzdXBlcihIYXNoTGliVGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTExLDcgKzE2OCwxMCBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoImIiLCByYW5nZSgxMCkpCiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBjID0gY29ucyhhKQotICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQorICAgICAgICAgICAgaWYgYy5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KDE2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgpCiAKICAgICBkZWYgdGVzdF9hbGdvcml0aG1zX2d1YXJhbnRlZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQsCkBAIC0xNTUsMTQgKzIxNSwyMSBAQAogICAgIGRlZiB0ZXN0X2hleGRpZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgxNiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KDE2KSksIGguaGV4ZGlnZXN0KDE2KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCiAgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCiAKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CkBAIC0xNzcsNDAgKzI0NCw0NiBAQAogICAgICAgICAgICAgbTEudXBkYXRlKGJlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoY2VlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShkZWVzKQorICAgICAgICAgICAgaWYgbTEubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBhcmdzID0gKDE2LCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgpCiAKICAgICAgICAgICAgIG0yID0gY29ucygpCiAgICAgICAgICAgICBtMi51cGRhdGUoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTIuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0yLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgIG0zID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMy5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTMuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgIyB2ZXJpZnkgY29weSgpIGRvZXNuJ3QgdG91Y2ggb3JpZ2luYWwKICAgICAgICAgICAgIG00ID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcykKLSAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgpCisgICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKmFyZ3MpCiAgICAgICAgICAgICBtNF9jb3B5ID0gbTQuY29weSgpCiAgICAgICAgICAgICBtNF9jb3B5LnVwZGF0ZShkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTRfY29weS5kaWdlc3QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCksIG00X2RpZ2VzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTRfY29weS5kaWdlc3QoKmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKmFyZ3MpLCBtNF9kaWdlc3QpCiAKLSAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0KToKKyAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0LCBzaGFrZT1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBsZW5ndGggPSBsZW4oaGV4ZGlnZXN0KS8vMgogICAgICAgICBoZXhkaWdlc3QgPSBoZXhkaWdlc3QubG93ZXIoKQogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgICMgMiBpcyBmb3IgaGFzaGxpYi5uYW1lKC4uLikgYW5kIGhhc2hsaWIubmV3KG5hbWUsIC4uLikKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNvbnN0cnVjdG9ycyksIDIpCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6Ci0gICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEsICoqa3dhcmdzKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uaGV4ZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBoZXhkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICJIYXNoIGFsZ29yaXRobSAlcyBjb25zdHJ1Y3RlZCB1c2luZyAlcyByZXR1cm5lZCBoZXhkaWdlc3QiCiAgICAgICAgICAgICAgICAgICAgICIgJXIgZm9yICVkIGJ5dGUgaW5wdXQgZGF0YSB0aGF0IHNob3VsZCBoYXZlIGhhc2hlZCB0byAlci4iCiAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgbGVuKGRhdGEpLCBoZXhkaWdlc3QpKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5kaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgZGlnZXN0ID0gYnl0ZXMuZnJvbWhleChoZXhkaWdlc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVkLCBkaWdlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgbm90IHNoYWtlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCiAKICAgICBkZWYgY2hlY2tfbm9fdW5pY29kZShzZWxmLCBhbGdvcml0aG1fbmFtZSk6CiAgICAgICAgICMgVW5pY29kZSBvYmplY3RzIGFyZSBub3QgYWxsb3dlZCBhcyBpbnB1dC4KQEAgLTIyNiwxMyArMjk5LDM1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhMzg0JykKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGE1MTInKQogCi0gICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCk6CisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMmInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMnMnKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yMjQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjU2JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzM4NCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM181MTInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzEyOCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMjU2JykKKworICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGg9Tm9uZSk6CiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKICAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYmxvY2tfc2l6ZSwgYmxvY2tfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBkaWdlc3RfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMipkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoKSksIDIqZGlnZXN0X3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmFtZSwgbmFtZSkKICAgICAgICAgICAgICMgc3BsaXQgZm9yIHNoYTNfNTEyIC8gX3NoYTMuc2hhMyBvYmplY3QKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZS5zcGxpdCgiXyIpWzBdLCByZXByKG0pKQpAQCAtMjQ1LDYgKzM0MCwzOCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzODQnLCAxMjgsIDQ4KQogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGE1MTInLCAxMjgsIDY0KQogCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzIyNCcsIDE0NCwgMjgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjU2JywgMTM2LCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18zODQnLCAxMDQsIDQ4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzUxMicsIDcyLCA2NCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMTI4JywgMTY4LCAwLCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMjU2JywgMTM2LCAwLCA2NCkKKworICAgIGRlZiBjaGVja19zaGEzKHNlbGYsIG5hbWUsIGNhcGFjaXR5LCByYXRlLCBzdWZmaXgpOgorICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCisgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6CisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXBhY2l0eSArIHJhdGUsIDE2MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX2NhcGFjaXR5X2JpdHMsIGNhcGFjaXR5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9yYXRlX2JpdHMsIHJhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3N1ZmZpeCwgc3VmZml4KQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9leHRyYV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjI0JywgNDQ4LCAxMTUyLCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMzg0JywgNzY4LCA4MzIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM181MTInLCAxMDI0LCA1NzYsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMTI4JywgMjU2LCAxMzQ0LCBiJ1x4MWYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYWtlXzI1NicsIDUxMiwgMTA4OCwgYidceDFmJykKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMmInLCAxMjgsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdibGFrZTJzJywgNjQsIDMyKQorCiAgICAgZGVmIHRlc3RfY2FzZV9tZDVfMChzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnbWQ1JywgYicnLCAnZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UnKQogCkBAIC0zNzMsNiArNTAwLDIyMSBAQAogICAgICAgICAgICJlNzE4NDgzZDBjZTc2OTY0NGUyZTQyYzdiYzE1YjQ2MzhlMWY5OGIxM2IyMDQ0Mjg1NjMyYTgwM2FmYTk3M2ViIisKICAgICAgICAgICAiZGUwZmYyNDQ4NzdlYTYwYTRjYjA0MzJjZTU3N2MzMWJlYjAwOWM1YzJjNDlhYTJlNGVhZGIyMTdhZDhjYzA5YiIpCiAKKyAgICBkZWYgY2hlY2tfYmxha2UyKHNlbGYsIGNvbnN0cnVjdG9yLCBzYWx0X3NpemUsIHBlcnNvbl9zaXplLCBrZXlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9zaXplLCBtYXhfb2Zmc2V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5TQUxUX1NJWkUsIHNhbHRfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2FsdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihzYWx0PWInYScgKiBpKQorICAgICAgICBzYWx0ID0gYidhJyAqIChzYWx0X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgc2FsdD1zYWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuUEVSU09OX1NJWkUsIHBlcnNvbl9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShwZXJzb25fc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHBlcnNvbj1iJ2EnICogaSkKKyAgICAgICAgcGVyc29uID0gYidhJyAqIChwZXJzb25fc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBwZXJzb249cGVyc29uKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0RJR0VTVF9TSVpFLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0tFWV9TSVpFLCBrZXlfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoa2V5X3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YidhJyAqIGkpCisgICAgICAgIGtleSA9IGInYScgKiAoa2V5X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwga2V5PWtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3RvcigpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJycpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihmYW5vdXQ9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoaW5uZXJfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9MCkKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPSgxPDwzMiktMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0xPDwzMikKKworICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD0wKQorICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD1tYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD1tYXhfb2Zmc2V0KzEpCisKKyAgICAgICAgY29uc3RydWN0b3IoCisgICAgICAgICAgICBzdHJpbmc9YicnLAorICAgICAgICAgICAga2V5PWInJywKKyAgICAgICAgICAgIHNhbHQ9YicnLAorICAgICAgICAgICAgcGVyc29uPWInJywKKyAgICAgICAgICAgIGRpZ2VzdF9zaXplPTE3LAorICAgICAgICAgICAgZmFub3V0PTEsCisgICAgICAgICAgICBkZXB0aD0xLAorICAgICAgICAgICAgbGVhZl9zaXplPTI1NiwKKyAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTUxMiwKKyAgICAgICAgICAgIG5vZGVfZGVwdGg9MSwKKyAgICAgICAgICAgIGlubmVyX3NpemU9NywKKyAgICAgICAgICAgIGxhc3Rfbm9kZT1UcnVlCisgICAgICAgICkKKworICAgIGRlZiBibGFrZTJfcmZjNzY5MyhzZWxmLCBjb25zdHJ1Y3RvciwgbWRfbGVuLCBpbl9sZW4pOgorICAgICAgICBkZWYgc2VsZnRlc3Rfc2VxKGxlbmd0aCwgc2VlZCk6CisgICAgICAgICAgICBtYXNrID0gKDE8PDMyKS0xCisgICAgICAgICAgICBhID0gKDB4REVBRDRCQUQgKiBzZWVkKSAmIG1hc2sKKyAgICAgICAgICAgIGIgPSAxCisgICAgICAgICAgICBvdXQgPSBieXRlYXJyYXkobGVuZ3RoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB0ID0gKGEgKyBiKSAmIG1hc2sKKyAgICAgICAgICAgICAgICBhLCBiID0gYiwgdAorICAgICAgICAgICAgICAgIG91dFtpXSA9ICh0ID4+IDI0KSAmIDB4RkYKKyAgICAgICAgICAgIHJldHVybiBvdXQKKyAgICAgICAgb3V0ZXIgPSBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT0zMikKKyAgICAgICAgZm9yIG91dGxlbiBpbiBtZF9sZW46CisgICAgICAgICAgICBmb3IgaW5sZW4gaW4gaW5fbGVuOgorICAgICAgICAgICAgICAgIGluZGF0YSA9IHNlbGZ0ZXN0X3NlcShpbmxlbiwgaW5sZW4pCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZnRlc3Rfc2VxKG91dGxlbiwgb3V0bGVuKQorICAgICAgICAgICAgICAgIHVua2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUodW5rZXllZC5kaWdlc3QoKSkKKyAgICAgICAgICAgICAgICBrZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwga2V5PWtleSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZShrZXllZC5kaWdlc3QoKSkKKyAgICAgICAgcmV0dXJuIG91dGVyLmhleGRpZ2VzdCgpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJiLCAxNiwgMTYsIDY0LCA2NCwgKDE8PDY0KS0xKQorICAgICAgICBiMmJfbWRfbGVuID0gWzIwLCAzMiwgNDgsIDY0XQorICAgICAgICBiMmJfaW5fbGVuID0gWzAsIDMsIDEyOCwgMTI5LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UyYiwgYjJiX21kX2xlbiwgYjJiX2luX2xlbiksCisgICAgICAgICAgICAiYzIzYTc4MDBkOTgxMjNiZDEwZjUwNmM2MWUyOWRhNTYwM2Q3NjNiOGJiYWQyZTczN2Y1ZTc2NWE3YmNjZDQ3NSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiIiIsCisgICAgICAgICAgIjc4NmEwMmY3NDIwMTU5MDNjNmM2ZmQ4NTI1NTJkMjcyOTEyZjQ3NDBlMTU4NDc2MThhODZlMjE3ZjcxZjU0MTkiKworICAgICAgICAgICJkMjVlMTAzMWFmZWU1ODUzMTM4OTY0NDQ5MzRlYjA0YjkwM2E2ODViMTQ0OGI3NTVkNTZmNzAxYWZlOWJlMmNlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiYWJjIiwKKyAgICAgICAgICAiYmE4MGE1M2Y5ODFjNGQwZDZhMjc5N2I2OWYxMmY2ZTk0YzIxMmYxNDY4NWFjNGI3NGIxMmJiNmZkYmZmYTJkMSIrCisgICAgICAgICAgIjdkODdjNTM5MmFhYjc5MmRjMjUyZDVkZTQ1MzNjYzk1MThkMzhhYThkYmYxOTI1YWI5MjM4NmVkZDQwMDk5MjMiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmJfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMmInKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJzLCA4LCA4LCAzMiwgMzIsICgxPDw0OCktMSkKKyAgICAgICAgYjJzX21kX2xlbiA9IFsxNiwgMjAsIDI4LCAzMl0KKyAgICAgICAgYjJzX2luX2xlbiA9IFswLCAzLCA2NCwgNjUsIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJzLCBiMnNfbWRfbGVuLCBiMnNfaW5fbGVuKSwKKyAgICAgICAgICAgICI2YTQxMWYwOGNlMjVhZGNkZmIwMmFiYTY0MTQ1MWNlYzUzYzU5OGIyNGY0ZmM3ODdmYmRjODg3OTdmNGMxZGZlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiIiwKKyAgICAgICAgICAiNjkyMTdhMzA3OTkwODA5NGUxMTEyMWQwNDIzNTRhN2MxZjU1YjY0ODJjYTFhNTFlMWIyNTBkZmQxZWQwZWVmOSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiImFiYyIsCisgICAgICAgICAgIjUwOGM1ZThjMzI3YzE0ZTJlMWE3MmJhMzRlZWI0NTJmMzc0NThiMjA5ZWQ2M2EyOTRkOTk5YjRjODY2NzU5ODIiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnNfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBiIiIsCisgICAgICAgICAgIjZiNGUwMzQyMzY2N2RiYjczYjZlMTU0NTRmMGViMWFiZDQ1OTdmOWExYjA3OGUzZjViNWE2YmM3IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yMjQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiYTdmZmM2ZjhiZjFlZDc2NjUxYzE0NzU2YTA2MWQ2NjJmNTgwZmY0ZGU0M2I0OWZhODJkODBhNGI4MGY4NDM0YSIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBiIiIsCisgICAgICAgICAgIjBjNjNhNzViODQ1ZTRmN2QwMTEwN2Q4NTJlNGMyNDg1YzUxYTUwYWFhYTk0ZmM2MTk5NWU3MWJiZWU5ODNhMmEiKworICAgICAgICAgICJjMzcxMzgzMTI2NGFkYjQ3ZmI2YmQxZTA1OGQ1ZjAwNCIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMzg0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBiIiIsCisgICAgICAgICAgImE2OWY3M2NjYTIzYTlhYzVjOGI1NjdkYzE4NWE3NTZlOTdjOTgyMTY0ZmUyNTg1OWUwZDFkY2MxNDc1YzgwYTYiKworICAgICAgICAgICIxNWIyMTIzYWYxZjVmOTRjMTFlM2U5NDAyYzNhYzU1OGY1MDAxOTlkOTViNmQzZTMwMTc1ODU4NjI4MWRjZDI2IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM181MTInKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8xMjhfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLAorICAgICAgICAgICI3ZjljMmJhNGU4OGY4MjdkNjE2MDQ1NTA3NjA1ODUzZWQ3M2I4MDkzZjZlZmJjODhlYjFhNmVhY2ZhNjZlZjI2IiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsICI3ZjljIiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTEyOF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMTI4Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBtc2csIG1kLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsCisgICAgICAgICAgIjQ2YjlkZDJiMGJhODhkMTMyMzNiM2ZlYjc0M2VlYjI0M2ZjZDUyZWE2MmI4MWI4MmI1MGMyNzY0NmVkNTc2MmYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwgIjQ2YjkiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIG1zZywgbWQsIFRydWUpCisKICAgICBkZWYgdGVzdF9naWwoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhpbmdzIHdvcmsgZmluZSB3aXRoIGFuIGlucHV0IGxhcmdlciB0aGFuIHRoZSBzaXplIHJlcXVpcmVkCiAgICAgICAgICMgZm9yIG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uICh3aGljaCBpcyBoYXJkd2lyZWQgdG8gMjA0OCkuCkBAIC00NDcsNiArNzg5LDEyIEBACiAgICAgICAgIChiJ3Bhc3NcMHdvcmQnLCBiJ3NhXDBsdCcsIDQwOTYsIDE2KSwKICAgICBdCiAKKyAgICBzY3J5cHRfdGVzdF92ZWN0b3JzID0gWworICAgICAgICAoYicnLCBiJycsIDE2LCAxLCAxLCB1bmhleGxpZnkoJzc3ZDY1NzYyMzg2NTdiMjAzYjE5Y2E0MmMxOGEwNDk3ZjE2YjQ4NDRlMzA3NGFlOGRmZGZmYTNmZWRlMjE0NDJmY2QwMDY5ZGVkMDk0OGY4MzI2YTc1M2EwZmM4MWYxN2U4ZDNlMGZiMmUwZDM2MjhjZjM1ZTIwYzM4ZDE4OTA2JykpLAorICAgICAgICAoYidwYXNzd29yZCcsIGInTmFDbCcsIDEwMjQsIDgsIDE2LCB1bmhleGxpZnkoJ2ZkYmFiZTFjOWQzNDcyMDA3ODU2ZTcxOTBkMDFlOWZlN2M2YWQ3Y2JjODIzNzgzMGU3NzM3NjYzNGIzNzMxNjIyZWFmMzBkOTJlMjJhMzg4NmZmMTA5Mjc5ZDk4MzBkYWM3MjdhZmI5NGE4M2VlNmQ4MzYwY2JkZmEyY2MwNjQwJykpLAorICAgICAgICAoYidwbGVhc2VsZXRtZWluJywgYidTb2RpdW1DaGxvcmlkZScsIDE2Mzg0LCA4LCAxLCB1bmhleGxpZnkoJzcwMjNiZGNiM2FmZDczNDg0NjFjMDZjZDgxZmQzOGViZmRhOGZiYmE5MDRmOGUzZWE5YjU0M2Y2NTQ1ZGExZjJkNTQzMjk1NTYxM2YwZmNmNjJkNDk3MDUyNDJhOWFmOWU2MWU4NWRjMGQ2NTFlNDBkZmNmMDE3YjQ1NTc1ODg3JykpLAorICAgXQorCiAgICAgcGJrZGYyX3Jlc3VsdHMgPSB7CiAgICAgICAgICJzaGExIjogWwogICAgICAgICAgICAgIyBvZmZpY2lhbCB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgNjA3MApAQCAtNTI2LDUgKzg3NCw0NSBAQAogICAgICAgICBzZWxmLl90ZXN0X3Bia2RmMl9obWFjKGNfaGFzaGxpYi5wYmtkZjJfaG1hYykKIAogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjX2hhc2hsaWIsICdzY3J5cHQnKSwKKyAgICAgICAgICAgICAgICAgICAgICcgICB0ZXN0IHJlcXVpcmVzIE9wZW5TU0wgPiAxLjEnKQorICAgIGRlZiB0ZXN0X3NjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIHBhc3N3b3JkLCBzYWx0LCBuLCByLCBwLCBleHBlY3RlZCBpbiBzZWxmLnNjcnlwdF90ZXN0X3ZlY3RvcnM6CisgICAgICAgICAgICByZXN1bHQgPSBoYXNobGliLnNjcnlwdChwYXNzd29yZCwgc2FsdD1zYWx0LCBuPW4sIHI9ciwgcD1wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgICAgICMgdGhpcyB2YWx1ZXMgc2hvdWxkIHdvcmsKKyAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyBwYXNzd29yZCBhbmQgc2FsdCBtdXN0IGJlIGJ5dGVzLWxpa2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD0nc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcmVxdWlyZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBiJ3NhbHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgMiwgOCwgMSwgc2FsdD1iJ3NhbHQnKQorICAgICAgICBmb3IgbiBpbiBbLTEsIDAsIDEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj1uLCByPTgsIHA9MSkKKyAgICAgICAgZm9yIHIgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj1yLCBwPTEpCisgICAgICAgIGZvciBwIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD1wKQorICAgICAgICBmb3IgbWF4bWVtIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heG1lbT1tYXhtZW0pCisgICAgICAgIGZvciBka2xlbiBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBka2xlbj1ka2xlbikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjdlODI1OS4uMmY4YzY0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVW5pdHRlc3RzIGZvciBoZWFwcS4iIiIKIAotaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA5ODgyNmI1Li4wNjdlMTNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgaWdub3JlX3dhcm5pbmcoZnVuYyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTE0MjBiMi4uMzI2ZTM0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBodG1sLnBhcnNlcgogaW1wb3J0IHBwcmludAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBFdmVudENvbGxlY3RvcihodG1sLnBhcnNlci5IVE1MUGFyc2VyKToKQEAgLTcwMiw3ICs3MDEsNyBAQAogCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKLSAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKKyAgICAgICAgICAgIHIiPGEgJD48YiAkPSU+PGMgXD0vPiIsCiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJhIiwgWygiJCIsIE5vbmUpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJiIiwgWygiJCIsICIlIildKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImMiLCBbKCJcXCIsICIvIildKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0OWMwMWFlLi42ZmVlNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTEwNTEsNyArMTA1MSw3IEBACiAgICAgICAgIHVybCA9ICJodHRwOi8vZm9vLmJhci5jb20vIgogICAgICAgICBpbnRlcmFjdF8yOTY1KGMsIHVybCwgInNwYW09ZWdnczsgVmVyc2lvbj0xOyBQb3J0IikKICAgICAgICAgaCA9IGludGVyYWN0XzI5NjUoYywgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsICJcJFBvcnQoW149XXwkKSIsCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgciJcJFBvcnQoW149XXwkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcnQgd2l0aCBubyB2YWx1ZSBub3QgcmV0dXJuZWQgd2l0aCBubyB2YWx1ZSIpCiAKICAgICAgICAgYyA9IENvb2tpZUphcihwb2wpCkBAIC0xMzk2LDkgKzEzOTYsOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ15cJFZlcnNpb249Ij8xIj87JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInUGFydF9OdW1iZXI9Ij9Sb2NrZXRfTGF1bmNoZXJfMDAwMSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInQ3VzdG9tZXI9Ij9XSUxFX0VfQ09ZT1RFIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogCiAgICAgICAgICMKICAgICAgICAgIyAgIDcuICBVc2VyIEFnZW50IC0+IFNlcnZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IDYxZWQ2YmIuLjY4ZjY5NDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTM0NCw2ICszNDQsMTM0IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKQogCiAKK2NsYXNzIFRyYW5zZmVyRW5jb2RpbmdUZXN0KFRlc3RDYXNlKToKKyAgICBleHBlY3RlZF9ib2R5ID0gYiJJdCdzIGp1c3QgYSBmbGVzaCB3b3VuZCIKKworICAgIGRlZiB0ZXN0X2VuZGhlYWRlcnNfY2h1bmtlZChzZWxmKToKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQT1NUJywgJy8nKQorICAgICAgICBjb25uLmVuZGhlYWRlcnMoc2VsZi5fbWFrZV9ib2R5KCksIGVuY29kZV9jaHVua2VkPVRydWUpCisKKyAgICAgICAgXywgXywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgYmUgYXV0b21hdGljYWxseSBjaHVuay1lbmNvZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICMgY2FsbGluZyBjb2RlIGhhcyBleHBsaWNpdGx5IHN0YXRlZCB0aGF0IGl0J3MgdGFraW5nIGNhcmUgb2YgaXQKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keSgpLCB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZCwgc3RyaW5nIGJvZHkKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuZXhwZWN0ZWRfYm9keS5kZWNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBVc2VyLXNwZWNpZmllZCBURSwgYnV0IHJlcXVlc3QoKSBkb2VzIHRoZSBjaHVuayBlbmNvZGluZworICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsCisgICAgICAgICAgICBoZWFkZXJzPXsnVHJhbnNmZXItRW5jb2RpbmcnOiAnZ3ppcCwgY2h1bmtlZCd9LAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGJvZHk9c2VsZi5fbWFrZV9ib2R5KCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2d6aXAsIGNodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIGZvciBlbXB0eV9saW5lcyBpbiAoRmFsc2UsIFRydWUsKToKKyAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoZW1wdHlfbGluZXM9ZW1wdHlfbGluZXMpKQorCisgICAgICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorCisgICAgICAgICAgICAjIENvbnRlbnQtTGVuZ3RoIGFuZCBUcmFuc2Zlci1FbmNvZGluZyBTSE9VTEQgbm90IGJlIHNlbnQgaW4gdGhlCisgICAgICAgICAgICAjIHNhbWUgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorCisgICAgZGVmIHRlc3RfZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsICgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBiIjBcclxuXHJcbiIpCisKKyAgICBkZWYgX21ha2VfYm9keShzZWxmLCBlbXB0eV9saW5lcz1GYWxzZSk6CisgICAgICAgIGxpbmVzID0gc2VsZi5leHBlY3RlZF9ib2R5LnNwbGl0KGInICcpCisgICAgICAgIGZvciBpZHgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgICMgZm9yIHRlc3RpbmcgaGFuZGxpbmcgZW1wdHkgbGluZXMKKyAgICAgICAgICAgIGlmIGVtcHR5X2xpbmVzIGFuZCBpZHggJSAyOgorICAgICAgICAgICAgICAgIHlpZWxkIGInJworICAgICAgICAgICAgaWYgaWR4IDwgbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZSArIGInICcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIF9wYXJzZV9yZXF1ZXN0KHNlbGYsIGRhdGEpOgorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgcmVxdWVzdCA9IGxpbmVzWzBdCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBuID0gMQorICAgICAgICB3aGlsZSBuIDwgbGVuKGxpbmVzKSBhbmQgbGVuKGxpbmVzW25dKSA+IDA6CisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmVzW25dLnNwbGl0KGInOicpCisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIHJldHVybiByZXF1ZXN0LCBoZWFkZXJzLCBiJ1xyXG4nLmpvaW4obGluZXNbbiArIDE6XSkKKworICAgIGRlZiBfcGFyc2VfY2h1bmtlZChzZWxmLCBkYXRhKToKKyAgICAgICAgYm9keSA9IFtdCisgICAgICAgIHRyYWlsZXJzID0ge30KKyAgICAgICAgbiA9IDAKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgICMgcGFyc2UgYm9keQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgc2l6ZSwgY2h1bmsgPSBsaW5lc1tuOm4rMl0KKyAgICAgICAgICAgIHNpemUgPSBpbnQoc2l6ZSwgMTYpCisKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihjaHVuaykpCisgICAgICAgICAgICBib2R5LmFwcGVuZChjaHVuaykKKworICAgICAgICAgICAgbiArPSAyCisgICAgICAgICAgICAjIHdlIC9zaG91bGQvIGhpdCB0aGUgZW5kIGNodW5rLCBidXQgY2hlY2sgYWdhaW5zdCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgIyBsaW5lcyBzbyB3ZSdyZSBub3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBzaG91bGQgd2UgZ2V0CisgICAgICAgICAgICAjIG1hbGZvcm1lZCBkYXRhCisgICAgICAgICAgICBpZiBuID4gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBiJycuam9pbihib2R5KQorCisKIGNsYXNzIEJhc2ljVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhdHVzX2xpbmVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgSFRUUCBzdGF0dXMgbGluZXMKQEAgLTU2NCw3ICs2OTIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCisgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgYm9keToKICAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTU5NCwxMSArNzI0LDExIEBACiAgICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgICB5aWVsZCAnZGF0YV90d28nCiAKLSAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKCk6CisgICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZShpby5UZXh0SU9CYXNlKToKICAgICAgICAgICAgIG1vZGUgPSAncicKICAgICAgICAgICAgIGQgPSBkYXRhKCkKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIGJsb2Nrc2l6ZT0tMSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZC5fX25leHRfXygpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5kKQogCiAgICAgICAgIGV4cGVjdGVkID0gYidkYXRhJwogCkBAIC05NzAsNiArMTEwMCw3IEBACiAKICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3NlcnZlcikKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRocmVhZC5qb2luLCBmbG9hdCgxKSkKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigqc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICBjb25uLnJlcXVlc3QoIkNPTk5FQ1QiLCAiZHVtbXk6MTIzNCIpCiAgICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCkBAIC05ODMsNyArMTExNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYiJwcm94aWVkIGRhdGFcbiIpCiAKIGNsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgpAQCAtMTUxMSwxNCArMTY0MiwxNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFNhbWUgd2l0aCBleHBsaWNpdCBjaGVja19ob3N0bmFtZT1UcnVlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBXaXRoIGNoZWNrX2hvc3RuYW1lPUZhbHNlLCB0aGUgbWlzbWF0Y2hpbmcgaXMgaWdub3JlZAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgcmVzcC5jbG9zZSgpCkBAIC0xNTM1LDggKzE2NjgsOSBAQAogICAgICAgICBoLmNsb3NlKCkKICAgICAgICAgIyBQYXNzaW5nIGNoZWNrX2hvc3RuYW1lIHRvIEhUVFBTQ29ubmVjdGlvbiBzaG91bGQgb3ZlcnJpZGUgdGhlCiAgICAgICAgICMgY29udGV4dCdzIHNldHRpbmcuCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKIApAQCAtMTU3NSw2ICsxNzA5LDI2IEBACiAgICAgICAgIG1lc3NhZ2UgPSBjbGllbnQucGFyc2VfaGVhZGVycyhmKQogICAgICAgICByZXR1cm4gbWVzc2FnZSwgZgogCisgICAgZGVmIHRlc3RfbGlzdF9ib2R5KHNlbGYpOgorICAgICAgICAjIE5vdGUgdGhhdCBubyBjb250ZW50LWxlbmd0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZm9yCisgICAgICAgICMgYW4gaXRlcmFibGUuICBUaGUgcmVxdWVzdCB3aWxsIGZhbGwgYmFjayB0byBzZW5kIGNodW5rZWQKKyAgICAgICAgIyB0cmFuc2ZlciBlbmNvZGluZy4KKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoW2InZm9vJywgYidiYXInXSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgICAgICgoYidmb28nLCBiJ2JhcicpLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICApCisgICAgICAgIGZvciBib2R5LCBleHBlY3RlZCBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJvZHkpOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5zb2NrID0gc2VsZi5zb2NrID0gRmFrZVNvY2tldCgnJykKKworICAgICAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnL3VybCcsIGJvZHkpCisgICAgICAgICAgICAgICAgbXNnLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtVHlwZScsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LUxlbmd0aCcsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXQoJ1RyYW5zZmVyLUVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBmLnJlYWQoKSkKKwogICAgIGRlZiB0ZXN0X21hbnVhbF9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgIyBTZXQgYW4gaW5jb3JyZWN0IGNvbnRlbnQtbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHZlcmlmeSB0aGF0CiAgICAgICAgICMgaXQgd2lsbCBub3QgYmUgb3Zlci1yaWRkZW4gYnkgdGhlIGxpYnJhcnkuCkBAIC0xNjA4LDcgKzE3NjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQogCi0gICAgZGVmIHRlc3RfZmlsZV9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RleHRfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImJvZHkiKQpAQCAtMTYxNyw4ICsxNzcxLDExIEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHknLCBmLnJlYWQoKSkKKyAgICAgICAgICAgICMgTm8gY29udGVudC1sZW5ndGggd2lsbCBiZSBkZXRlcm1pbmVkIGZvciBmaWxlczsgdGhlIGJvZHkKKyAgICAgICAgICAgICMgd2lsbCBiZSBzZW50IHVzaW5nIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJ0cmFuc2Zlci1lbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzRcclxuYm9keVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCkBAIC0xNjI5LDggKzE3ODYsOSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJUcmFuc2Zlci1FbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1MZW5ndGgiLCBtZXNzYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzVcclxuYm9keVx4YzFcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKIAogY2xhc3MgSFRUUFJlc3BvbnNlVGVzdChUZXN0Q2FzZSk6CkBAIC0xNzQxLDEzICsxODk5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDcyZTZlMDguLjRlOTMxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtMTgsNiArMTgsNyBAQAogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE4OSw3ICsxOTAsNyBAQAogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKLSAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CisgICAgZGVmIHRlc3RfaGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQpAQCAtMzY5LDYgKzM3MCw4IEBACiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAndW5kZWNvZGFibGUgbmFtZSBjYW5ub3QgYmUgZGVjb2RlZCBvbiB3aW4zMicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUnKQogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lKHNlbGYpOgpAQCAtMzg4LDcgKzM5MSw3IEBACiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJyArIHF1b3RlZG5hbWUpCiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCkBAIC00NjYsNiArNDY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAnPHRlc3QmPi50eHQnCisgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmdWxscGF0aCwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0NhbiBub3QgY3JlYXRlIGZpbGUgJXMgb24gY3VycmVudCBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0nICUgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJykKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgZW5jID0gcmVzcG9uc2UuaGVhZGVycy5nZXRfY29udGVudF9jaGFyc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayhmdWxscGF0aCkgICMgYXZvaWQgYWZmZWN0aW5nIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmMpCisgICAgICAgIGh0bWxfdGV4dCA9ICc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sX3RleHQuZW5jb2RlKGVuYyksIGJvZHkpCisKIAogY2dpX2ZpbGUxID0gIiIiXAogIyElcwpAQCAtOTE2LDcgKzk0MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzY3OTE6IHNhbWUgZm9yIGhlYWRlcnMKICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKICAgICAgICAgICAgIGInR0VUIC8gSFRUUC8xLjFcclxuWC1Gb286IGJhcicgKyBiJ3InICogNjU1MzcgKyBiJ1xyXG5cclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDAwIExpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDMxIExpbmUgdG9vIGxvbmdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKQEAgLTkyNyw2ICs5NTEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKKyAgICAgICAgICAgIGInPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PiAvIEhUVFAvMS4xJykKKyAgICAgICAgcmVzdWx0ID0gYicnLmpvaW4ocmVzdWx0KQorICAgICAgICB0ZXh0ID0gJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4nCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbC5lc2NhcGUodGV4dCwgcXVvdGU9RmFsc2UpLmVuY29kZSgnYXNjaWknKSwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3RfY2xvc2VfY29ubmVjdGlvbihzZWxmKToKICAgICAgICAgIyBoYW5kbGVfb25lX3JlcXVlc3QoKSBzaG91bGQgYmUgcmVwZWF0ZWRseSBjYWxsZWQgdW50aWwKICAgICAgICAgIyBpdCBzZXRzIGNsb3NlX2Nvbm5lY3Rpb24KQEAgLTk0Miw2ICs5NzMsMTkgQEAKICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGNsb3NlX3ZhbHVlcykKIAorICAgIGRlZiB0ZXN0X2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICMgdGhpcyBpcyB0aGUgb2xkIGNvZGUgdGhhdCBmb3JtYXRzIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZShub3cpCisgICAgICAgIGV4cGVjdGVkID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci53ZWVrZGF5bmFtZVt3ZF0sCisgICAgICAgICAgICBkYXksCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIubW9udGhuYW1lW21vbnRoXSwKKyAgICAgICAgICAgIHllYXIsIGhoLCBtbSwgc3MKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKHRpbWVzdGFtcD1ub3cpLCBleHBlY3RlZCkKKworCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiIFRlc3QgdXJsIHBhcnNpbmcgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5IGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CmluZGV4IDE0MWU4OWUuLmRhMDVkYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKQEAgLTEsMTYgKzEsMjMgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCi0jIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgorIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQsIGlmIGlkbGVsaWIgaXMgbWlzc2luZywKKyMgb3IgaWYgdGNsL3RrIGlzIG5vdCB0aGUgOC41KyBuZWVkZWQgZm9yIHR0ayB3aWRnZXRzLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCi1pZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKK2lmIHRrLlRrVmVyc2lvbiA8IDguNToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiSURMRSByZXF1aXJlcyB0ayA4LjUgb3IgbGF0ZXIuIikKK2lkbGVsaWIgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliJykKIAotIyBXaXRob3V0IHRlc3RfbWFpbiBwcmVzZW50LCByZWdydGVzdC5ydW50ZXN0X2lubmVyIChsaW5lMTIxOSkgY2FsbHMKLSMgdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhpc19tb2R1bGUpIHdoaWNoIGNhbGxzCi0jIGxvYWRfdGVzdHMoKSBpZiBpdCBmaW5kcyBpdC4gKFVuaXR0ZXN0Lm1haW4gZG9lcyB0aGUgc2FtZS4pCi1sb2FkX3Rlc3RzID0gaWRsZXRlc3QubG9hZF90ZXN0cworIyBCZWZvcmUgdGVzdCBpbXBvcnRzLCB0ZWxsIElETEUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGVudmlyb25tZW50LgoraWRsZWxpYi50ZXN0aW5nID0gVHJ1ZQorCisjIHVuaXR0ZXN0Lm1haW4gYW5kIHRlc3QubGlicmVncnRlc3QucnVudGVzdC5ydW50ZXN0X2lubmVyCisjIGNhbGwgbG9hZF90ZXN0cywgd2hlbiBwcmVzZW50LCB0byBkaXNjb3ZlciB0ZXN0cyB0byBydW4uCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0IGltcG9ydCBsb2FkX3Rlc3RzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB0ay5Ob0RlZmF1bHRSb290KCkKKyAgICB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UpCisgICAgdGsuX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQorICAgIHRrLl9kZWZhdWx0X3Jvb3QgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggNmU0YTkwZi4uZjQ1MTkzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtNzksOSArNzksOSBAQAogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAgICAgIG5ld3NvY2tldCwgZnJvbWFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubnN0cmVhbSA9IHNzbC53cmFwX3NvY2tldChuZXdzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29ubnN0cmVhbSA9IGNvbnRleHQud3JhcF9zb2NrZXQobmV3c29ja2V0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5zdHJlYW0sIGZyb21hZGRyCiAKICAgICBJTUFQNF9TU0wgPSBpbWFwbGliLklNQVA0X1NTTApAQCAtNTczLDYgKzU3Myw1NSBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9icmFja2V0X2ZsYWdzKHNlbGYpOgorCisgICAgICAgICMgVGhpcyB2aW9sYXRlcyBSRkMgMzUwMSwgd2hpY2ggZGlzYWxsb3dzICddJyBjaGFyYWN0ZXJzIGluIHRhZyBuYW1lcywKKyAgICAgICAgIyBidXQgaW1hcGxpYiBoYXMgYWxsb3dlZCBwcm9kdWNpbmcgc3VjaCB0YWdzIGZvcmV2ZXIsIG90aGVyIHByb2dyYW1zCisgICAgICAgICMgYWxzbyBwcm9kdWNlIHRoZW0gKGVnOiBPdGhlckluYm94J3MgT3JnYW5pemVyIGFwcCBhcyBvZiAyMDE0MDcxNiksCisgICAgICAgICMgYW5kIEdtYWlsLCBmb3IgZXhhbXBsZSwgYWNjZXB0cyB0aGVtIGFuZCBwcm9kdWNlcyB0aGVtLiAgU28gd2UKKyAgICAgICAgIyBzdXBwb3J0IHRoZW0uICBTZWUgaXNzdWUgIzIxODE1LgorCisgICAgICAgIGNsYXNzIEJyYWNrZXRGbGFnSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IFsnQW5zd2VyZWQnLCAnRmxhZ2dlZCcsICdEZWxldGVkJywgJ1NlZW4nLCAnRHJhZnQnXQorICAgICAgICAgICAgICAgIHN1cGVyKCkuaGFuZGxlKCkKKworICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU0VMRUNUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgZmxhZ19tc2cgPSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKCgnKiBGTEFHUyAoJXMpJyAlIGZsYWdfbXNnKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAyIEVYSVNUUycpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAwIFJFQ0VOVCcpCisgICAgICAgICAgICAgICAgbXNnID0gKCcqIE9LIFtQRVJNQU5FTlRGTEFHUyAlcyBcXCopXSBGbGFncyBwZXJtaXR0ZWQuJworICAgICAgICAgICAgICAgICAgICAgICAgJSBmbGFnX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdbUkVBRC1XUklURV0gU0VMRUNUIGNvbXBsZXRlZC4nKQorCisgICAgICAgICAgICBkZWYgY21kX1NUT1JFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gYXJnc1syXS5zdHJpcCgnKCcpLnN0cmlwKCcpJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuZXh0ZW5kKG5ld19mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnc19tc2cgPSAnKEZMQUdTICglcykpJyAlICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBtc2cgPSAnKiAlcyBGRVRDSCAlcycgJSAoYXJnc1swXSwgZmxhZ3NfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1NUT1JFIGNvbXBsZXRlZC4nKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihCcmFja2V0RmxhZ0hhbmRsZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwgYidabUZyWlE9PVxyXG4nKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5zdG9yZShiJzEnLCAiK0ZMQUdTIiwgIlt0ZXN0XSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQucmVzcG9uc2UoJ1BFUk1BTkVOVEZMQUdTJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorCisgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2lzc3VlNTk0OShzZWxmKToKIAogICAgICAgICBjbGFzcyBFT0ZIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC05MTksOCArOTY4LDEwIEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKaW5kZXggYjU0ZGFmOC4uNDc2YmE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgaW1naGRyCiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCkBAIC00OSw2ICs1MCwxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChOb25lLCBkYXRhKSwgZXhwZWN0ZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGJ5dGVhcnJheShkYXRhKSksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZvciBmaWxlbmFtZSwgZXhwZWN0ZWQgaW4gVEVTVF9GSUxFUzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9J2ltZ2hkcmRhdGEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQocGF0aGxpYi5QYXRoKGZpbGVuYW1lKSksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfdGVzdChzZWxmKToKICAgICAgICAgZGVmIHRlc3RfanVtYm8oaCwgZmlsZSk6CiAgICAgICAgICAgICBpZiBoLnN0YXJ0c3dpdGgoYidlZ2dzJyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CmluZGV4IGVlOWVlMWEuLjRlY2UzNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CkBAIC02LDEzICs2LDEyIEBACiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggMWUzMzI3NC4uNzYwOTA4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTY5LDYgKzY5LDE4IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxvYWQoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfbW9kdWxlX3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgZnJvbSBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlIGltcG9ydCBibGFoCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9taXNzaW5nX2F0dHJfcmFpc2VzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlCisKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICAjIEJyaWVmIGRpZ3Jlc3Npb24gdG8gdGVzdCB0aGF0IGltcG9ydCBpcyBjYXNlLXNlbnNpdGl2ZTogIGlmIHdlIGdvdAogICAgICAgICAjIHRoaXMgZmFyLCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgInJhbmRvbSIgZXhpc3RzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggYzExMmNhNy4uMGRkOWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTksOCArOCw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKLSMgWFhYIGZpbmRfc3BlYyB0ZXN0cwotCiBAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdCh1dGlsLkNBU0VPS1Rlc3RCYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA3MWJmNjdmLi5jOWI0YTM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCA4ZjRiOGJiLi5hNGI1YTY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0yLDggKzIsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA2MDNjN2Q3Li4yOWVjZmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0zLDggKzMsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi0KLWltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKaW5kZXggYzdkM2EyYS4uN2Y2NDU0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNSw2ICs1LDcgQEAKIAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSAuLiBpbXBvcnQgdXRpbAogCiAKQEAgLTMzLDMxICszNCw1MCBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKLSAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgZGVmIGltcG9ydF9tb2R1bGUoc2VsZiwgZ2xvYmFsc18pOgogICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz17J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfdXNpbmdfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgICMgW19fcGFja2FnZV9fXQorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZSd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX25hbWVfXyhzZWxmLCBwYWNrYWdlX2FzX05vbmU9RmFsc2UpOgorICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYpOgogICAgICAgICAjIFtfX25hbWVfX10KLSAgICAgICAgZ2xvYmFsc18gPSB7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW119Ci0gICAgICAgIGlmIHBhY2thZ2VfYXNfTm9uZToKLSAgICAgICAgICAgIGdsb2JhbHNfWydfX3BhY2thZ2VfXyddID0gTm9uZQotICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscz0gZ2xvYmFsc18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbXX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3dhcm5fd2hlbl91c2luZ19fX25hbWVfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0pCiAKICAgICBkZWYgdGVzdF9Ob25lX2FzX19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICAjIFtOb25lXQotICAgICAgICBzZWxmLnRlc3RfdXNpbmdfX19uYW1lX18ocGFja2FnZV9hc19Ob25lPVRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7CisgICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW10sICdfX3BhY2thZ2VfXyc6IE5vbmUgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3BlY19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpc24ndCBkZWZpbmVkLCBmYWxsIGJhY2sgb24gX19zcGVjX18ucGFyZW50LgorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3NwZWNfXyc6IEZha2VTcGVjKCdwa2cuZmFrZScpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3BhY2thZ2VfYW5kX3NwZWNfZGlzYWdyZWUoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhJbXBvcnRXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlZmFrZScpfSkKIAogICAgIGRlZiB0ZXN0X2JhZF9fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6ICc8bm90IHJlYWw+J30KQEAgLTcwLDYgKzkwLDExIEBACiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCiAKK2NsYXNzIEZha2VTcGVjOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisKIGNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKaW5kZXggNzA2OWQ5ZS4uYTdiZjI3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC00Myw2ICs0MywxMCBAQAogICAgICIiIlRlc3QgQVBJLXNwZWNpZmljIGRldGFpbHMgZm9yIF9faW1wb3J0X18gKGUuZy4gcmFpc2luZyB0aGUgcmlnaHQKICAgICBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGluIGFuIGludCBmb3IgdGhlIG1vZHVsZSBuYW1lKS4iIiIKIAorICAgIGRlZiB0ZXN0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdzb21lIG1vZHVsZSB0aGF0IGRvZXMgbm90IGV4aXN0JykKKwogICAgIGRlZiB0ZXN0X25hbWVfcmVxdWlyZXNfcnBhcml0aW9uKHNlbGYpOgogICAgICAgICAjIFJhaXNlIFR5cGVFcnJvciBpZiBhIG5vbi1zdHJpbmcgaXMgcGFzc2VkIGluIGZvciB0aGUgbW9kdWxlIG5hbWUuCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQppbmRleCA4MDQ1NDY1Li4xNDY0MDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC03MywxNiArNzMsMTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUuX19uYW1lX18sICdwa2cubW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfSW1wb3J0RXJyb3Ioc2VsZik6Ci0gICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIEltcG9ydEVycm9yIGJlY2F1c2UgaXQgdHJpZXMgdG8gaW1wb3J0Ci0gICAgICAgICMgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZSBJbXBvcnRFcnJvcgotICAgICAgICAjIHByb3BhZ2F0ZS4KKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIE1vZHVsZU5vdEZvdW5kRXJyb3IgYmVjYXVzZSBpdCB0cmllcworICAgICAgICAjIHRvIGltcG9ydCBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlCisgICAgICAgICMgTW9kdWxlTm90Rm91bmRFcnJvciBwcm9wYWdhdGUuCiAgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgogICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CiAgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaV9kb19ub3RfZXhpc3QnLCBleGMuZXhjZXB0aW9uLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQppbmRleCAzNzU1Yjg0Li4yNDM5NjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CkBAIC0xLDcgKzEsNiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CmluZGV4IGIzMmE4NzYuLjdhYTI2YjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0xNiwxMSArMTYsMTQgQEAKIAogICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgogCisgICAgZmluZCA9IE5vbmUKKyAgICBjaGVja19mb3VuZCA9IE5vbmUKKwogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQobW9kdWxlKSkKIAogICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCkBAIC0zMCw4ICszMyw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCkBAIC00MCw4ICs0Myw4IEBACiAgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CiAgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCkBAIC01MCw3ICs1Myw3IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdtb2R1bGUnLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ21vZHVsZScsIFtdKSkKIAogICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCkBAIC02MCw4ICs2Myw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKIApAQCAtNzMsNyArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhfZW50cnldKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKCdvcycpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhfZW50cnldKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKQEAgLTg1LDggKzg4LDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtwYXRoXSwgcGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuZ2V0Y3dkKCksIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQogCiAgICAgZGVmIHRlc3RfTm9uZV9vbl9zeXNfcGF0aChzZWxmKToKQEAgLTE4MiwxNSArMTg1LDUwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInKSkKIAogCitjbGFzcyBGaW5kTW9kdWxlVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgaW1wb3J0ZXIpCiAKIAotKEZyb3plbl9GaW5kZXJUZXN0cywKLSBTb3VyY2VfRmluZGVyVGVzdHMKLSApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisoRnJvemVuX0ZpbmRNb2R1bGVUZXN0cywKKyBTb3VyY2VfRmluZE1vZHVsZVRlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoRmluZE1vZHVsZVRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisKK2NsYXNzIEZpbmRTcGVjVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGNoZWNrX2ZvdW5kKHNlbGYsIGZvdW5kLCBpbXBvcnRlcik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm91bmQubG9hZGVyLCBpbXBvcnRlcikKKworCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKIAorICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9zcGVjKHNlbGYpOgorICAgICAgICAjIFBhdGhFbnRyeUZpbmRlciB3aXRoIGZpbmRfbW9kdWxlKCkgZGVmaW5lZCBzaG91bGQgd29yay4KKyAgICAgICAgIyBJc3N1ZSAjMjA3NjMuCisgICAgICAgIGNsYXNzIEZpbmRlcjoKKyAgICAgICAgICAgIHBhdGhfbG9jYXRpb24gPSAndGVzdF9maW5kZXJfd2l0aF9maW5kX21vZHVsZScKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoICE9IHNlbGYucGF0aF9sb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6CisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKwogICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgogICAgICAgICAjIElzc3VlICMyMDc2My4KQEAgLTIwNyw3ICsyNDUsNyBAQAogCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bRmluZGVyLnBhdGhfbG9jYXRpb25dK3N5cy5wYXRoWzpdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgotICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdpbXBvcnRsaWInKQogCiAKIChGcm96ZW5fUEVGVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CmluZGV4IDNiYjgxOWYuLjhhOTVhMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVGVzdCByZWxhdGl2ZSBpbXBvcnRzIChQRVAgMzI4KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRzOgogCkBAIC02NSw5ICs2NiwxMSBAQAogICAgICAgICAgICAgICAgIHVuY2FjaGVfbmFtZXMuYXBwZW5kKG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXSkKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfc3BlYygqY3JlYXRlKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgqdW5jYWNoZV9uYW1lcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgICAgICAgICBmb3IgZ2xvYmFsXyBpbiBnbG9iYWxzXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQogCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9tb2R1bGUoc2VsZik6CkBAIC0yMDQsMTEgKzIwNywxOCBAQAogCiAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CiAgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ2EnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZV9leGlzdHNfYWJzb2x1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgeydfX3BhY2thZ2VfXyc6ICcnLCAnX19zcGVjX18nOiBOb25lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0xKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJlMTFmLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLVRlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCi1pbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCi1PdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgotdGhpcyBzY3JpcHQuCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0KLSAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCAzNGI4NmNkLi4xMmNlMGNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTUsNyArNSw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDczZjRjNjIuLmExNTExNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICMgUEVQIDMwMgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKSAjIFhYWAorICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgIyBTYW5pdHkgY2hlY2tzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19jYWNoZWRfXywgY29tcGlsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC54LCA1KQpAQCAtMjQ1LDEyICsyNDUsNyBAQAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgotICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAjIFhYWCBDaGFuZ2UgdG8gdXNlIGV4ZWNfbW9kdWxlKCkuCi0gICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgbWFuaXB1bGF0ZV9ieXRlY29kZShzZWxmLCBuYW1lLCBtYXBwaW5nLCBtYW5pcHVsYXRvciwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCBlNmEyNDE1Li43OTVkNDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xNiwxMCArMTYsMTkgQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19sZWdhY3koc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9tb2R1bGUnKSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggMWUwNzcxYi4uOTgwODU1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKICMgQmVjYXVzZSBzeXMucGF0aCBnZXRzIGVzc2VudGlhbGx5IGJsYW5rZWQsIG5lZWQgdG8gaGF2ZSB1bmljb2RlZGF0YSBhbHJlYWR5CiAjIGltcG9ydGVkIGZvciB0aGUgcGFyc2VyIHRvIHVzZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggZDRiZjkxNS4uYzg2MjQ4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTIwNyw2ICsyMDcsMTAgQEAKIAogICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBzcGVjID0gJ2Egc3BlYycKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbnMuY3JlYXRlX21vZHVsZShzcGVjKSkKKwogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmxvYWRfbW9kdWxlKCdzb21ldGhpbmcnKQpAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICBzdXBwb3J0LnVubG9hZChzZWxmLm1vZHVsZV9uYW1lKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxvYWQsIHNlbGYubW9kdWxlX25hbWUpCiAKKyAgICBkZWYgbG9hZChzZWxmLCBsb2FkZXIpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwgbG9hZGVyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcC5fbG9hZF91bmxvY2tlZChzcGVjKQorCiAgICAgZGVmIG1vY2tfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBtb2NrLnBhdGNoLm9iamVjdChzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcywgJ2dldF9jb2RlJykKIApAQCAtNTI4LDkgKzUzOCw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUuc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfY29kZV9Ob25lKHNlbGYpOgogICAgICAgICAjIElmIGdldF9jb2RlKCkgcmV0dXJucyBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KQEAgLTUzOCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IE5vbmUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWQobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldHVybmVkKHNlbGYpOgogICAgICAgICAjIFRoZSBsb2FkZWQgbW9kdWxlIHNob3VsZCBiZSByZXR1cm5lZC4KQEAgLTU0NiwxNCArNTU0LDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IGNvZGUKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkKGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSkKIAogCiAoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAogIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cwogICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PWluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbD11dGlsKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDZiYzNjNTYuLmIwYTk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC05OSw5ICs5OSw3IEBACiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKIAotICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorICAgIEZha2VNZXRhRmluZGVyID0gTm9uZQogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KQEAgLTE3MSw5ICsxNjksMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAogCi0oRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKLSBTb3VyY2VfRmluZExvYWRlclRlc3RzCi0gKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCitjbGFzcyBGaW5kTG9hZGVyUEVQNDUxVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX3NwZWMobmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gbWFjaGluZXJ5WydTb3VyY2UnXS5Nb2R1bGVTcGVjKG5hbWUsIChuYW1lLCBwYXRoKSkKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVA0NTFUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDQ1MVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDQ1MVRlc3RzLCBpbml0PWluaXQpCisKKworY2xhc3MgRmluZExvYWRlclBFUDMwMlRlc3RzKEZpbmRMb2FkZXJUZXN0cyk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBwYXRoCisKKworKEZyb3plbl9GaW5kTG9hZGVyUEVQMzAyVGVzdHMsCisgU291cmNlX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJQRVAzMDJUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIFJlbG9hZFRlc3RzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CmluZGV4IGNjMzgzYzIuLmZmZDhkYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTY2LDYgKzY2LDggQEAKICAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSkKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCiAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRmMGFmMTIuLmRiY2U5YzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMyw3ICszLDYgQEAKIGluaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIApAQCAtNTgsNyArNTcsNyBAQAogICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA2NjM5NjEyLi5lMzdkOGExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsMTMgKzEsMTAgQEAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW1wb3J0bGliLmFiYwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKICMgbmVlZGVkIHRlc3RzOgogIwpAQCAtNzEsNiArNjgsNyBAQAogICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CiAgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKKwogY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIApAQCAtODcsNyArODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKIAogCi1jbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKK2NsYXNzIER5bmFtaWNQYXRoTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIAogICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKQEAgLTI4OSw1ICsyODcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGggYW5kIHJlbG9hZC4KKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKaW5kZXggOGIzMzNlOC4uNWExNmEwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQpAQCAtNSw2ICs1LDcgQEAKIHV0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBhdGhsaWIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCkBAIC02NTksNiArNjYwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5jYWNoZWQsIHNlbGYuY2FjaGVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3BlYy5oYXNfbG9jYXRpb24pCiAKKyAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobGliLlB1cmVQYXRoKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKKwogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHRfd2l0aG91dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCA0MWNhMzMzLi5kNjE1Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00NiwxNCArNDcsOCBAQAogICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjcmVhdGVfbW9kdWxlJywgc3RyKHdbMF0ubWVzc2FnZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlX3JldHVybnNfTm9uZShzZWxmKToKICAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CkBAIC02NzcsNiArNjcyLDE1IEBACiAgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CkBAIC03MzgsNiArNzQyLDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKwogCiAoRnJvemVuX1BFUDMxNDdUZXN0cywKICBTb3VyY2VfUEVQMzE0N1Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggYzg5M2JjZi4uMDA1YjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJvb3QgPSBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLlJFR0lTVFJZX0tFWQogICAgIGtleSA9IHJvb3QuZm9ybWF0KGZ1bGxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICB0cnk6CiAgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CiAgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCBkMzNkZTllLi44OGVhYWJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0IGltcG9ydCBfcmVhZHlfdG9faW1wb3J0CiAKQEAgLTM4LDcgKzM5LDcgQEAKICMgaXNtb2R1bGUsIGlzY2xhc3MsIGlzbWV0aG9kLCBpc2Z1bmN0aW9uLCBpc3RyYWNlYmFjaywgaXNmcmFtZSwgaXNjb2RlLAogIyBpc2J1aWx0aW4sIGlzcm91dGluZSwgaXNnZW5lcmF0b3IsIGlzZ2VuZXJhdG9yZnVuY3Rpb24sIGdldG1lbWJlcnMsCiAjIGdldGRvYywgZ2V0ZmlsZSwgZ2V0bW9kdWxlLCBnZXRzb3VyY2VmaWxlLCBnZXRjb21tZW50cywgZ2V0c291cmNlLAotIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3NwZWMsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAorIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAogIyBjdXJyZW50ZnJhbWUsIHN0YWNrLCB0cmFjZSwgaXNkYXRhZGVzY3JpcHRvcgogCiAjIE5PVEU6IFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdGVzdHMgcmVsYXRpbmcgdG8gaW50ZXJhY3Rpb24gd2l0aApAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbl0pCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNhc3luY2dlbiwgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQpAQCAtNzIsNiArNzQsNyBAQAogCiAgICAgICAgIGZvciBvdGhlciBpbiBzZWxmLnByZWRpY2F0ZXMgLSBzZXQoW3ByZWRpY2F0ZV0pOgogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uIG9yIFwKICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgxLDYgKzg0LDEwIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGFzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIGFzeW5jIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICB5aWVsZCBpCisKIGFzeW5jIGRlZiBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKICAgICByZXR1cm4gJ3NwYW0nCiAKQEAgLTEyMSw2ICsxMjgsMTAgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKIAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCkBAIC00MDUsNyArNDE2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoZ2l0LmFidXNlKSksIG1vZGZpbGUpCiAgICAgICAgIGZuID0gIl9ub25fZXhpc3RpbmdfZmlsZW5hbWVfdXNlZF9mb3Jfc291cmNlZmlsZV90ZXN0LnB5IgotICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQorICAgICAgICBjbyA9IGNvbXBpbGUoIng9MSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CkBAIC0yOTA3LDYgKzI5MTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJyQnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLmEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCkBAIC0yOTkwLDYgKzMwMDUsMTcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ25hbWUgbXVzdCBiZSBhIHN0cicpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbXBsaWNpdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICBwYXJhbSA9IGluc3BlY3QuUGFyYW1ldGVyKAorICAgICAgICAgICAgJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLm5hbWUsICdpbXBsaWNpdDAnKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignc3BhbScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQogCkBAIC0zMjM4LDYgKzMyNjQsMTcgQEAKICAgICAgICAgYmEgPSBzaWcuYmluZChhcmdzPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJndW1lbnRzLCB7J2t3YXJncyc6IHsnYXJncyc6IDF9fSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9pbXBsaWNpdF9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5NjExOiBnZXRjYWxsYXJncyBzaG91bGQgd29yayB3aXRoIHNldCBjb21wcmVoZW5zaW9ucworICAgICAgICBkZWYgbWFrZV9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7eiAqIHogZm9yIHogaW4gcmFuZ2UoNSl9CisgICAgICAgIHNldGNvbXBfY29kZSA9IG1ha2Vfc2V0Ll9fY29kZV9fLmNvX2NvbnN0c1sxXQorICAgICAgICBzZXRjb21wX2Z1bmMgPSB0eXBlcy5GdW5jdGlvblR5cGUoc2V0Y29tcF9jb2RlLCB7fSkKKworICAgICAgICBpdGVyYXRvciA9IGl0ZXIocmFuZ2UoNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHNldGNvbXBfZnVuYywgaXRlcmF0b3IpLCB7MCwgMSwgNCwgOSwgMTZ9KQorCiAKIGNsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgpAQCAtMzU0OCwxNCArMzU4NSwxNCBAQAogCiAgICAgZGVmIHRlc3RfZGV0YWlscyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3VuaXR0ZXN0JykKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnaW5zcGVjdCcsCisgICAgICAgIGFyZ3MgPSBzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MsICctbScsICdpbnNwZWN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pdHRlc3QnLCAnLS1kZXRhaWxzJykKICAgICAgICAgb3V0cHV0ID0gb3V0LmRlY29kZSgpCiAgICAgICAgICMgSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBvbiB0aGUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fZmlsZV9fLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGI2NmM1ZDYuLjE0YmJkNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIxMiw2ICsyMTQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzJicjQ1cWMnLCAzNSksIDQyOTQ5NjcyOTcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxejE0MXo1JywgMzYpLCA0Mjk0OTY3Mjk3KQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBldmFsKGxpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBpbnQobGl0LnJlcGxhY2UoJ18nLCAnJyksIDApKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGxpdCwgMCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2l0aCBiYXNlcyAhPSAwLCBvbmx5IGZvciB0aGUgY29uc3RydWN0b3I6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIxXzAwIiwgMyksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIwXzEwMCIpLCAxMDApICAjIG5vdCB2YWxpZCBhcyBhIGxpdGVyYWwhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGIiMV8wMCIpLCAxMDApICAjIGJ5dGUgdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiK18xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxX18wMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjEwMF8iKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgIyBCdWcgIzMyMzY6IFJldHVybiBzbWFsbCBsb25ncyBmcm9tIFB5TG9uZ19Gcm9tU3RyaW5nCkBAIC00MzAsMjEgKzQ1MSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gQmFkSW50MigpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBUcnVuY1JldHVybnNCYWRJbnQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBnb29kX2ludCA9IFRydW5jUmV0dXJuc0ludFN1YmNsYXNzKCkKICAgICAgICAgbiA9IGludChnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogICAgICAgICBuID0gSW50U3ViY2xhc3MoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBJbnRTdWJjbGFzcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDUxMTE4ODIuLmFhYTY0ZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMzUwLDcgKzM1MCwxMCBAQAogICAgIGRlZiBsYXJnZV9maWxlX29wcyhzZWxmLCBmKToKICAgICAgICAgYXNzZXJ0IGYucmVhZGFibGUoKQogICAgICAgICBhc3NlcnQgZi53cml0YWJsZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKHNlbGYuTEFSR0UpLCBzZWxmLkxBUkdFKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlayhzZWxmLkxBUkdFKSwgc2VsZi5MQVJHRSkKKyAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIGxhcmdlZmlsZSBzdXBwb3J0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgc2VsZi5MQVJHRSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRlKGIieHh4IiksIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHNlbGYuTEFSR0UgKyAzKQpAQCAtNDk2LDcgKzQ5OSwxMSBAQAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisKKyAgICAgICAgYnl0ZXNfZm4gPSBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzX2ZuLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtODU2LDYgKzg2MywzMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdHJlYW0sIG1ldGhvZCkoYnVmZmVyKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJ1ZmZlciksIGIiMTIzNDUiKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3N1cHBvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgICAgIGRlZiBjaGVja19wYXRoX3N1Y2NlZWRzKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTikpCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4uZW5jb2RlKCd1dGYtOCcpKSkKKworICAgICAgICBiYWRfcGF0aCA9IFBhdGhMaWtlKFR5cGVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5vcGVuKGJhZF9wYXRoLCAndycpCisKKyAgICAgICAgIyBlbnN1cmUgdGhhdCByZWZjb3VudGluZyBpcyBjb3JyZWN0IHdpdGggc29tZSBlcnJvciBjb25kaXRpb25zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAncmVhZC93cml0ZS9hcHBlbmQgbW9kZScpOgorICAgICAgICAgICAgc2VsZi5vcGVuKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSwgJ3J3eGEnKQorCiAKIGNsYXNzIENJT1Rlc3QoSU9UZXN0KToKIApAQCAtMTc4Miw3ICsxODE1LDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZCk6CiAgICAgICAgICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5CeXRlc0lPKGIiYWJjZGVmIiksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKDUpCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZShiJ1wwJyAqIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBhaXIsIG1ldGhvZCkoZGF0YSksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhkYXRhKSwgYiJhYmNkZSIpCiAKQEAgLTMyNDYsOCArMzI3OSw3IEBACiAKIGNsYXNzIFB5VGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gcHlpbwotICAgICNzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCi0gICAgc2h1dGRvd25fZXJyb3IgPSAiVHlwZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiCisgICAgc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgogCiAKIGNsYXNzIEluY3JlbWVudGFsTmV3bGluZURlY29kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKaW5kZXggOTFhZThkOC4uMGUzOTUxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTExOSw3ICsxMTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTEzOSwxMSArMTM5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKIAogICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCi0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQotICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGInXDAnKjEyCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuX19nZXRpdGVtX18sIDEgPDwgNjQpCiAKICAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CiAgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggYTkxNjcwYi4uNTQyYjI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtNTQsNiArNTQsMTQgQEAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgIHJldHVybiBpCiAKK2NsYXNzIERlZmF1bHRJdGVyQ2xhc3M6CisgICAgcGFzcworCitjbGFzcyBOb0l0ZXJDbGFzczoKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBpCisgICAgX19pdGVyX18gPSBOb25lCisKICMgTWFpbiB0ZXN0IHN1aXRlCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk5NSw2ICsxMDAzLDEwIEBACiAgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CiAgICAgICAgIGNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIFNlcXVlbmNlQ2xhc3MsICgwLCkpCiAKKyAgICBkZWYgdGVzdF9lcnJvcl9pdGVyKHNlbGYpOgorICAgICAgICBmb3IgdHlwIGluIChEZWZhdWx0SXRlckNsYXNzLCBOb0l0ZXJDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIHR5cCgpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKaW5kZXggMTUyZjVmYy4uNDFjOTc1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQpAQCAtNDIsNyArNDIsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGVuZ3RoX2hpbnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggZTA1NDMwMy4uZWExZjU3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgd2Vha3JlZgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvcHkKQEAgLTY0NCwyNCArNjQzLDU4IEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb3RvLCBjeWNsZSgnYWJjJykpCiAKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBwYXJ0aWFsIGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSgyKV0gICAgICAjIGNvbnN1bWUgMiBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKworICAgICAgICAgICAgIyB0ZXN0IHdpdGggY29tcGxldGVseSBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoNyldICAgICAgIyBjb25zdW1lIDcgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKICAgICBkZWYgdGVzdF9jeWNsZV9zZXRzdGF0ZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgYm90aCBtb2RlcyBmb3IgcmVzdG9yaW5nIHN0YXRlCisKKyAgICAgICAgIyBNb2RlIDAgaXMgZWZmaWNpZW50LiAgSXQgdXNlcyBhbiBpbmNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQKKyAgICAgICAgIyBpdGVyYXRvciB0byBidWlsZCBhIGN5Y2xlIG9iamVjdCBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aAorICAgICAgICAjIGEgbGlzdCBvZiBwcmV2aW91c2x5IGNvbnN1bWVkIHZhbHVlcy4gIFRoZXJlIGlzIG5vIGRhdGEKKyAgICAgICAgIyBvdmVybGFwIGJldHdlZW4gdGhlIHR3by4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiYycpLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIE1vZGUgMSBpcyBpbmVmZmljaWVudC4gIEl0IHN0YXJ0cyB3aXRoIGEgY3ljbGUgb2JqZWN0IGJ1aWx0CisgICAgICAgICMgZnJvbSBhbiBpdGVyYXRvciBvdmVyIHRoZSByZW1haW5pbmcgZWxlbWVudHMgaW4gYSBwYXJ0aWFsCisgICAgICAgICMgY3ljbGUgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGggYWxsIG9mIHRoZSBwcmV2aW91c2x5CisgICAgICAgICMgc2VlbiB2YWx1ZXMgKHRoaXMgb3ZlcmxhcHMgdmFsdWVzIGluY2x1ZGVkIGluIHRoZSBpdGVyYXRvcikuCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmNkZWZnJyksIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNldHN0YXRlIG5lZWRzIHRvIGJlIGEgdHVwbGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oW2xpc3QoJ2FiY2RlZmcnKSwgMF0pCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaW4gdGhlIHNldHN0YXRlIHR1cGxlIG11c3QgYmUgYSBsaXN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgICAgICBjLl9fc2V0c3RhdGVfXygodHVwbGUoJ2RlZmcnKSwgMCkpCisgICAgICAgIHRha2UoMjAsIGMpCisKKyAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGFuIGludAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAneCcpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoW10sKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoKCksIDApKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZyddKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkZScsICdmZycsICdkZScsICdmZycsICdkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmZycsICdkZScsICdmZycsICdkZScsICdmZyddKQogCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDA4MDdlNmYuLmJhYzM3MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBqc29uCiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggZmRhZmViNi4uN2U1NjhiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNzIsMTAgKzcyLDggQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW5wdXRfdHlwZShzZWxmKToKICAgICAgICAgbXNnID0gJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0cicKLSAgICAgICAgZm9yIHZhbHVlIGluIFsxLCAzLjE0LCBiJ2J5dGVzJywgYidceGZmXHgwMCcsIFtdLCB7fSwgTm9uZV06CisgICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgW10sIHt9LCBOb25lXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHZhbHVlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgotICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoQnl0ZXNJTyhiJ1sxLDIsM10nKSkKIAogICAgIGRlZiB0ZXN0X3N0cmluZ193aXRoX3V0ZjhfYm9tKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTg5NTgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CmluZGV4IDk1ZmY1YjguLjc5MTA1MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKLWltcG9ydCByZQogCiAjIDIwMDctMTAtMDUKIEpTT05ET0NTID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKaW5kZXggYzdjYzhhNy4uMmU4YmJhMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGNvZGVjcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKIApAQCAtNTIsOSArNTMsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmR1bXBzLCBbYiJoaSJdKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfZGVjb2RlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInImhpIicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2FkcywgYidbImhpIl0nKQotCisgICAgICAgIGZvciBlbmNvZGluZywgYm9tIGluIFsKKyAgICAgICAgICAgICAgICAoJ3V0Zi04JywgY29kZWNzLkJPTV9VVEY4KSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0xNmJlJywgY29kZWNzLkJPTV9VVEYxNl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZsZScsIGNvZGVjcy5CT01fVVRGMTZfTEUpLAorICAgICAgICAgICAgICAgICgndXRmLTMyYmUnLCBjb2RlY3MuQk9NX1VURjMyX0JFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmxlJywgY29kZWNzLkJPTV9VVEYzMl9MRSksCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgZGF0YSA9IFsiYVx4YjVcdTIwYWNcVTAwMDFkMTIwIl0KKyAgICAgICAgICAgIGVuY29kZWQgPSBzZWxmLmR1bXBzKGRhdGEpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Fkcyhib20gKyBlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcyhlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBzZWxmLmxvYWRzLCBiJ1siXHg4MCJdJykKKyAgICAgICAgIyBSRkMtNzE1OSBhbmQgRUNNQS00MDQgZXh0ZW5kIEpTT04gdG8gYWxsb3cgZG9jdW1lbnRzIHRoYXQKKyAgICAgICAgIyBjb25zaXN0IG9mIG9ubHkgYSBzdHJpbmcsIHdoaWNoIGNhbiBwcmVzZW50IGEgc3BlY2lhbCBjYXNlCisgICAgICAgICMgbm90IGNvdmVyZWQgYnkgdGhlIGVuY29kaW5nIGRldGVjdGlvbiBwYXR0ZXJucyBzcGVjaWZpZWQgaW4KKyAgICAgICAgIyBSRkMtNDYyNyBmb3IgdXRmLTE2LWxlIChYWCAwMCBYWCAwMCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcygnIlx1MjYwMCInLmVuY29kZSgndXRmLTE2LWxlJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcdTI2MDAnKQorICAgICAgICAjIEVuY29kaW5nIGRldGVjdGlvbiBmb3Igc21hbGwgKDw0KSBieXRlcyBvYmplY3RzCisgICAgICAgICMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzcGVjaWFsIGNhc2UuIFJGQy03MTU5IGFuZCBFQ01BLTQwNAorICAgICAgICAjIGFsbG93IHNpbmdsZSBjb2RlcG9pbnQgSlNPTiBkb2N1bWVudHMgd2hpY2ggYXJlIG9ubHkgdHdvCisgICAgICAgICMgYnl0ZXMgaW4gdXRmLTE2IGVuY29kaW5ncyB3L28gQk9NLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYic1XHgwMCcpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYidceDAwNycpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYic1NycpLCA1NykKIAogICAgIGRlZiB0ZXN0X29iamVjdF9wYWlyc19ob29rX3dpdGhfdW5pY29kZShzZWxmKToKICAgICAgICAgcyA9ICd7InhrZCI6MSwgImtjdyI6MiwgImFydCI6MywgImh4bSI6NCwgInFydCI6NSwgInBhZCI6NiwgImhveSI6N30nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY4MjIwMjQuLjlmNDk4ODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNDdlMmVkZC4uMzc1ZDljNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTMsNiArMyw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0b2tlbml6ZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMTAsOCArMTIsNiBAQAogTk9ORVhJU1RFTlRfRklMRU5BTUUgPSBGSUxFTkFNRSArICcubWlzc2luZycKIElOVkFMSURfTkFNRSA9ICchQCQpKCFAI18xJwogRU1QVFkgPSAnJwotVEVTVFMgPSAnaW5zcGVjdF9mb2RkZXIgaW5zcGVjdF9mb2RkZXIyIG1hcHBpbmdfdGVzdHMnCi1URVNUUyA9IFRFU1RTLnNwbGl0KCkKIFRFU1RfUEFUSCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIE1PRFVMRVMgPSAibGluZWNhY2hlIGFiYyIuc3BsaXQoKQogTU9EVUxFX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoRklMRU5BTUUpCkBAIC0zNyw2ICszNyw2NSBAQAogICAgIHJldHVybiAzJycnICMgTm8gZW5kaW5nIG5ld2xpbmUKIAogCitjbGFzcyBUZW1wRmlsZToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IGZwLm5hbWUKKyAgICAgICAgICAgIGZwLndyaXRlKHNlbGYuZmlsZV9ieXRlX3N0cmluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKworCitjbGFzcyBHZXRMaW5lVGVzdHNHb29kRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2xpc3QgICA9IFsnbGlzdFxuJywgJ29mXG4nLCAnZ29vZFxuJywgJ3N0cmluZ3NcbiddCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9ieXRlX3N0cmluZyA9ICcnLmpvaW4oc2VsZi5maWxlX2xpc3QpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAgICAgIHdpdGggdG9rZW5pemUub3BlbihzZWxmLmZpbGVfbmFtZSkgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZwKToKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnXG4nCisKKyAgICAgICAgICAgICAgICBjYWNoZWRfbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKHNlbGYuZmlsZV9uYW1lLCBpbmRleCArIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBjYWNoZWRfbGluZSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgc2VsZi5maWxlX2xpc3QpCisKKworY2xhc3MgR2V0TGluZVRlc3RzQmFkRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2J5dGVfc3RyaW5nID0gYidCYWQgZGF0YSBnb2VzIGhlcmUnCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lLCBzZWxmLmZpbGVfbmFtZSwgMSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgRW1wdHlGaWxlKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gW10KKworCitjbGFzcyBTaW5nbGVFbXB0eUxpbmUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ1xuJ10KKworCitjbGFzcyBHb29kVW5pY29kZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFsnw6FcbicsICdiXG4nLCAnYWJjZGVmXG4nLCAnw6HDocOhw6HDoVxuJ10KKworCitjbGFzcyBCYWRVbmljb2RlKEdldExpbmVUZXN0c0JhZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2J5dGVfc3RyaW5nID0gYidceDgwYWJjJworCisKIGNsYXNzIExpbmVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CkBAIC01MywxMyArMTEyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRsaW5lKEVNUFRZLCAxKSwgRU1QVFkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShJTlZBTElEX05BTUUsIDEpLCBFTVBUWSkKIAotICAgICAgICAjIENoZWNrIHdoZXRoZXIgbGluZXMgY29ycmVzcG9uZCB0byB0aG9zZSBmcm9tIGZpbGUgaXRlcmF0aW9uCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGdldGxpbmUoZmlsZW5hbWUsIGluZGV4ICsgMSkpCi0KICAgICAgICAgIyBDaGVjayBtb2R1bGUgbG9hZGluZwogICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwpAQCAtODAsMTIgKzEzMiwxMyBAQAogCiAgICAgZGVmIHRlc3RfY2xlYXJjYWNoZShzZWxmKToKICAgICAgICAgY2FjaGVkID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIFRFU1RTOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVF9QQVRILCBlbnRyeSkgKyAnLnB5JworICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwogICAgICAgICAgICAgY2FjaGVkLmFwcGVuZChmaWxlbmFtZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCAxKQogCiAgICAgICAgICMgQXJlIGFsbCBmaWxlcyBjYWNoZWQ/CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2FjaGVkLCBbXSkKICAgICAgICAgY2FjaGVkX2VtcHR5ID0gW2ZuIGZvciBmbiBpbiBjYWNoZWQgaWYgZm4gbm90IGluIGxpbmVjYWNoZS5jYWNoZV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWNoZWRfZW1wdHksIFtdKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggOGY4MmFiNS4uYWVlNjJkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCBmYWUyYzNkLi45OWZhYjU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaXNfYW5kcm9pZAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICAgICAgZW5jID0gY29kZWNzLmxvb2t1cChsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIG9yICdhc2NpaScpLm5hbWUKICAgICAgICAgaWYgZW5jIG5vdCBpbiAoJ3V0Zi04JywgJ2lzbzg4NTktMScsICdjcDEyNTInKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdlbmNvZGluZyBub3Qgc3VpdGFibGUnKQotICAgICAgICBpZiBlbmMgIT0gJ2lzbzg4NTktMScgYW5kIChzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbicgb3IKKyAgICAgICAgaWYgZW5jICE9ICdpc284ODU5LTEnIGFuZCAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIG9yIGlzX2FuZHJvaWQgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnd2NzY29sbC93Y3N4ZnJtIGhhdmUga25vd24gYnVncycpCiAgICAgICAgIEJhc2VMb2NhbGl6ZWRUZXN0LnNldFVwKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggMGU3MGNjZC4uMDhjZGQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNvbmZpZ3BhcnNlcgogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCiBpbXBvcnQgZ2MKQEAgLTMwOCw2ICszMDksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZSgnSU5GTycpLCBsb2dnaW5nLklORk8pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMZXZlbE5hbWUobG9nZ2luZy5JTkZPKSwgJ0lORk8nKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNzkzNShzZWxmKToKKyAgICAgICAgZmF0YWwgPSBsb2dnaW5nLmdldExldmVsTmFtZSgnRkFUQUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhdGFsLCBsb2dnaW5nLkZBVEFMKQorCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdCB0aGUgYnVuZGxlZCBGaWx0ZXIgY2xhc3MuIiIiCkBAIC01NzUsNiArNTgwLDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaC5zaG91bGRGbHVzaChyKSkKICAgICAgICAgaC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9wYXRoX29iamVjdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgUGF0aCBvYmplY3RzIGFyZSBhY2NlcHRlZCBhcyBmaWxlbmFtZSBhcmd1bWVudHMgdG8gaGFuZGxlcnMuCisKKyAgICAgICAgU2VlIElzc3VlICMyNzQ5My4KKyAgICAgICAgIiIiCisgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICBwZm4gPSBwYXRobGliLlBhdGgoZm4pCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5GaWxlSGFuZGxlciwgKHBmbiwgJ3cnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdhJykpLAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdoJykpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBjYXNlcyArPSAoKGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwpCisgICAgICAgIGZvciBjbHMsIGFyZ3MgaW4gY2FzZXM6CisgICAgICAgICAgICBoID0gY2xzKCphcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgpAQCAtOTU4LDcgKzk4Niw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignbWVtJykKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnByb3BhZ2F0ZSA9IDAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKQEAgLTk5NSw2ICsxMDIzLDM2IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCiAKKyAgICBkZWYgdGVzdF9mbHVzaF9vbl9jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgZmx1c2gtb24tY2xvc2UgY29uZmlndXJhdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgIyBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBmbHVzaCBvbiBjbG9zZS4gQ2hlY2sgdGhhdCBpdCBoYXBwZW5zLgorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgbGluZXMgPSBbCisgICAgICAgICAgICAoJ0RFQlVHJywgJzEnKSwKKyAgICAgICAgICAgICgnSU5GTycsICcyJyksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKQorICAgICAgICAjIE5vdyBjb25maWd1cmUgZm9yIGZsdXNoaW5nIG5vdCB0byBiZSBkb25lIG9uIGNsb3NlLgorICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgIyBhc3NlcnQgdGhhdCBubyBuZXcgbGluZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisKIAogY2xhc3MgRXhjZXB0aW9uRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKICAgICAiIiJBIHNwZWNpYWwgZXhjZXB0aW9uIGZvcm1hdHRlci4iIiIKQEAgLTQyNDEsNiArNDI5OSwxNyBAQAogICAgICAgICBtc2cgPSAnUmVjb3JkIG5vdCBmb3VuZCBpbiBldmVudCBsb2csIHdlbnQgYmFjayAlZCByZWNvcmRzJyAlIEdPX0JBQ0sKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2xvZ1RocmVhZHMnLCAnbG9nTXVsdGlwcm9jZXNzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICdsb2dQcm9jZXNzZXMnLCAnY3VycmVudGZyYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdQZXJjZW50U3R5bGUnLCAnU3RyRm9ybWF0U3R5bGUnLCAnU3RyaW5nVGVtcGxhdGVTdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAnRmlsdGVyZXInLCAnUGxhY2VIb2xkZXInLCAnTWFuYWdlcicsICdSb290TG9nZ2VyJywKKyAgICAgICAgICAgICAgICAgICAgICdyb290JywgJ3RocmVhZGluZyd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGxvZ2dpbmcsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KQEAgLTQyNTgsNiArNDMyNyw3IEBACiAgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCiAgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKICAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0LAorICAgICAgICBNaXNjVGVzdENhc2UKICAgICBdCiAgICAgaWYgaGFzYXR0cihsb2dnaW5nLmhhbmRsZXJzLCAnUXVldWVMaXN0ZW5lcicpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoUXVldWVMaXN0ZW5lclRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNGIyZDgxYy4uZmQxNWYwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNjIxLDYgKzYyMSw4IEBACiAgICAgZGVmIHRlc3RfX2Zvcm1hdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICcsJyksICcxMjMsNDU2LDc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ18nKSwgJzEyM180NTZfNzg5JykKIAogICAgICAgICAjIHNpZ24gYW5kIGFsaWduaW5nIGFyZSBpbnRlcmRlcGVuZGVudAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxLCAiLSIpLCAnMScpCkBAIC02NDksOCArNjUxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KGludCgnYmUnLCAxNiksICJYIiksICJCRSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC1pbnQoJ2JlJywgMTYpLCAieCIpLCAiLWJlIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJYIiksICItQkUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcseCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfeCcpLCAnNDk5Nl8wMmQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19YJyksICc0OTk2XzAyRDInKQogCiAgICAgICAgICMgb2N0YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgIm8iKSwgIjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgIm8iKSwgIi0zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIm8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIm8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIi1vIiksICIyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICItbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiIG8iKSwgIiAyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK28iKSwgIisyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIrbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfbycpLCAnMTExXzQ1NDBfMTMyMicpCisKKyAgICAgICAgIyBiaW5hcnkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgImIiKSwgIjExIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTMsICJiIiksICItMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiYiIpLCAiMTAwMTEwMTAwMTAiKQpAQCAtNjYxLDEyICs2ODAsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgYiIpLCAiLTEwMDExMDEwMDEwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIitiIiksICIrMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitiIiksICItMTAwMTEwMTAwMTAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1LCAnX2InKSwgJzExXzAwMDBfMDAxMV8xMDAxJykKIAogICAgICAgICAjIG1ha2Ugc3VyZSB0aGVzZSBhcmUgZXJyb3JzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIjEuMyIpICAjIHByZWNpc2lvbiBkaXNhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIl9jIikgICAjIHVuZGVyc2NvcmUsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIixjIikgICAjIGNvbW1hLCBhbmQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiK2MiKSAgICMgc2lnbiBub3QgYWxsb3dlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoICdjJwogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsXycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLGQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnLF9kJykKKwogICAgICAgICAjIGVuc3VyZSB0aGF0IG9ubHkgaW50IGFuZCBmbG9hdCB0eXBlIHNwZWNpZmllcnMgd29yawogICAgICAgICBmb3IgZm9ybWF0X3NwZWMgaW4gKFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdhJyksIG9yZCgneicpKzEpXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ0EnKSwgb3JkKCdaJykrMSldKToKQEAgLTY4OSw2ICs3MTcsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgaW50LCBmbG9hdCgnLWluZicpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGZsb2F0KCduYW4nKSkKIAorICAgIGRlZiB0ZXN0X21vZF9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBfID0gMSAlIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEzICUgMTAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgMTAsIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAtMTAsIC03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMyAlIC0xMCwgLTMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIDQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIC00LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAlIC00LCAwKQorCiAgICAgZGVmIHRlc3RfdHJ1ZV9kaXZpc2lvbihzZWxmKToKICAgICAgICAgaHVnZSA9IDEgPDwgNDAwMDAKICAgICAgICAgbWh1Z2UgPSAtaHVnZQpAQCAtNzIzLDYgKzc2NSwyNSBAQAogICAgICAgICBmb3IgemVybyBpbiBbImh1Z2UgLyAwIiwgIm1odWdlIC8gMCJdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGV2YWwsIHplcm8sIG5hbWVzcGFjZSkKIAorICAgIGRlZiB0ZXN0X2Zsb29yZGl2KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxIC8vIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gMywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyIC8vIC0zLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAzLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAtMywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAtMywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTEgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExIC8vIDMsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gLTMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyIC8vIDMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIC0zLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAvLyAzLCA0KQorCiAgICAgZGVmIGNoZWNrX3RydWVkaXYoc2VsZiwgYSwgYiwgc2tpcF9zbWFsbD1UcnVlKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHJlc3VsdCBvZiBhL2IgaXMgY29ycmVjdGx5IHJvdW5kZWQsIGJ5CiAgICAgICAgIGNvbXBhcmluZyBpdCB3aXRoIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgY29ycmVjdGx5CkBAIC04NDUsNiArOTA2LDIxIEBACiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIHkpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIC15KQogCisgICAgZGVmIHRlc3RfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgMTAsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAwIDw8IC0xCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9odWdlX2xzaGlmdF9vZl96ZXJvKHNlbGYpOgorICAgICAgICAjIFNob3VsZG4ndCB0cnkgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBhIGh1Z2Ugc2hpZnQuIFNlZSBpc3N1ZSAjMjc4NzAuCisgICAgICAgICMgT3RoZXIgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIGEgZGlmZmVyZW50IGJvdW5kYXJ5IGZvciBvdmVyZmxvdywKKyAgICAgICAgIyBvciBub3QgcmFpc2UgYXQgYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgc3lzLm1heHNpemUsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICAwIDw8IChzeXMubWF4c2l6ZSArIDEpCisKICAgICBkZWYgdGVzdF9zbWFsbF9pbnRzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgMjU3KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSwgaSArIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKaW5kZXggYjY5ZGEwNi4uZDdhODU3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBfY29tcHJlc3Npb24KIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTUyNiw2ICs1MjcsMTYgQEAKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJhIikgYXMgZjoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9QYXRoTGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGZpbGVuYW1lLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCiAgICAgZGVmIHRlc3RfaW5pdF93aXRoX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CiAgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTikgYXMgZjoKQEAgLTk3MywxMSArOTg0LDExIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIHByZXNldD02KQorICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBwcmVzZXQ9NikKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IExaTUFGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpAQCAtMTIxOCw2ICsxMjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQogCisgICAgZGVmIHRlc3Rfd2l0aF9wYXRobGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCiAgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKICAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCA4MGJlYzdhLi4wNjk4ZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IG1hY3BhdGgKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAorZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2dlbmVyaWNwYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKaW5kZXggMDk5MWY3NC4uMmJhOTQ0MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQpAQCAtNywxNyArNywxMiBAQAogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCByZQogaW1wb3J0IGlvCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBtYWlsYm94CiBpbXBvcnQgZ2xvYgotdHJ5OgotICAgIGltcG9ydCBmY250bAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKIAogCiBjbGFzcyBUZXN0QmFzZToKQEAgLTIxNDIsOSArMjEzNyw5IEBACiAgICAgICAgICAgICBpZiBtYm94OgogICAgICAgICAgICAgICAgIGZwLndyaXRlKEZST01fKQogICAgICAgICAgICAgZnAud3JpdGUoRFVNTVlfTUVTU0FHRSkKLSAgICAgICAgaWYgaGFzYXR0cihvcywgImxpbmsiKToKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubGluayh0bXBuYW1lLCBuZXduYW1lKQotICAgICAgICBlbHNlOgorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBQZXJtaXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgd2l0aCBvcGVuKG5ld25hbWUsICJ3IikgYXMgZnA6CiAgICAgICAgICAgICAgICAgZnAud3JpdGUoRFVNTVlfTUVTU0FHRSkKICAgICAgICAgc2VsZi5fbXNnZmlsZXMuYXBwZW5kKG5ld25hbWUpCkBAIC0yMjczLDEyICsyMjY4LDE4IEBACiAiIiIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibGluZXNlcCIsICJmY250bCJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1haWxib3gsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gKFRlc3RNYWlsYm94U3VwZXJjbGFzcywgVGVzdE1haWxkaXIsIFRlc3RNYm94LCBUZXN0TU1ERiwgVGVzdE1ILAogICAgICAgICAgICAgIFRlc3RCYWJ5bCwgVGVzdE1lc3NhZ2UsIFRlc3RNYWlsZGlyTWVzc2FnZSwgVGVzdE1ib3hNZXNzYWdlLAogICAgICAgICAgICAgIFRlc3RNSE1lc3NhZ2UsIFRlc3RCYWJ5bE1lc3NhZ2UsIFRlc3RNTURGTWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TWVzc2FnZUNvbnZlcnNpb24sIFRlc3RQcm94eUZpbGUsIFRlc3RQYXJ0aWFsRmlsZSwKLSAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCkKKyAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCwgTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKaW5kZXggYTg1YzY5MS4uYzA4NDIzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBtYWlsY2FwCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBjb3B5CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTEyMyw3ICsxMjIsNyBAQAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAogICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAotICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIFxcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCiAgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQogICAgICAgICBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggYzdkZWY5YS4uYjM3OGZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTM1LDYgKzEzNSwxMyBAQAogICAgICAgICBmb3IgY29uc3RydWN0b3IgaW4gKHNldCwgZnJvemVuc2V0KToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGNvbnN0cnVjdG9yKHNlbGYuZC5rZXlzKCkpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZW1wdHlfZnJvemVuc2V0X3NpbmdsZXRvbihzZWxmKToKKyAgICAgICAgIyBtYXJzaGFsLmxvYWRzKCkgbXVzdCByZXVzZSB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbgorICAgICAgICBvYmogPSBmcm96ZW5zZXQoKQorICAgICAgICBvYmoyID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqMiwgb2JqKQorCiAKIGNsYXNzIEJ1ZmZlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCBhMzc5YTZhLi5lYWE0MWJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC03LDE0ICs3LDE1IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogZXBzID0gMUUtMDUKIE5BTiA9IGZsb2F0KCduYW4nKQogSU5GID0gZmxvYXQoJ2luZicpCiBOSU5GID0gZmxvYXQoJy1pbmYnKQorRkxPQVRfTUFYID0gc3lzLmZsb2F0X2luZm8ubWF4CiAKICMgZGV0ZWN0IGV2aWRlbmNlIG9mIGRvdWJsZS1yb3VuZGluZzogZnN1bSBpcyBub3QgYWx3YXlzIGNvcnJlY3RseQogIyByb3VuZGVkIG9uIG1hY2hpbmVzIHRoYXQgc3VmZmVyIGZyb20gZG91YmxlIHJvdW5kaW5nLgpAQCAtMzAsNiArMzEsNyBAQAogbWF0aF90ZXN0Y2FzZXMgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICdtYXRoX3Rlc3RjYXNlcy50eHQnKQogdGVzdF9maWxlID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnY21hdGhfdGVzdGNhc2VzLnR4dCcpCiAKKwogZGVmIHRvX3VscHMoeCk6CiAgICAgIiIiQ29udmVydCBhIG5vbi1OYU4gZmxvYXQgeCB0byBhbiBpbnRlZ2VyLCBpbiBzdWNoIGEgd2F5IHRoYXQKICAgICBhZGphY2VudCBmbG9hdHMgYXJlIGNvbnZlcnRlZCB0byBhZGphY2VudCBpbnRlZ2Vycy4gIFRoZW4KQEAgLTM3LDI1ICszOSwzOSBAQAogICAgIGZsb2F0cy4KIAogICAgIFRoZSByZXN1bHRzIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMKLSAgICB3aGVyZSBDIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICB3aGVyZSBuYXRpdmUgZG91YmxlcyBhcmUgcmVwcmVzZW50ZWQgaW4gSUVFRSA3NTQgYmluYXJ5NjQgZm9ybWF0LgogCisgICAgTm90ZTogMC4wIGFuZCAtMC4wIGFyZSBjb252ZXJ0ZWQgdG8gMCBhbmQgLTEsIHJlc3BlY3RpdmVseS4KICAgICAiIiIKICAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KICAgICBpZiBuIDwgMDoKICAgICAgICAgbiA9IH4obisyKio2MykKICAgICByZXR1cm4gbgogCi1kZWYgdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBzPTIwKToKLSAgICAiIiJHaXZlbiBub24tTmFOIGZsb2F0cyBgZXhwZWN0ZWRgIGFuZCBgZ290YCwKLSAgICBjaGVjayB0aGF0IHRoZXkncmUgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcy4KIAotICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuIiIiCitkZWYgdWxwKHgpOgorICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBhCisgICAgZmxvYXQgeCwgc3VjaCB0aGF0IHRoZSBmaXJzdCBmbG9hdCBiaWdnZXIgdGhhbiB4IGlzIHgrdWxwKHgpLgorICAgIFRoZW4sIGdpdmVuIGFuIGV4cGVjdGVkIHJlc3VsdCB4IGFuZCBhIHRvbGVyYW5jZSBvZiBuIHVscHMsCisgICAgdGhlIHJlc3VsdCB5IHNob3VsZCBiZSBzdWNoIHRoYXQgYWJzKHkteCkgPD0gbiAqIHVscCh4KS4KKyAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICAiIiIKKyAgICB4ID0gYWJzKGZsb2F0KHgpKQorICAgIGlmIG1hdGguaXNuYW4oeCkgb3IgbWF0aC5pc2luZih4KToKKyAgICAgICAgcmV0dXJuIHgKIAotICAgIHVscHNfZXJyb3IgPSB0b191bHBzKGdvdCkgLSB0b191bHBzKGV4cGVjdGVkKQotICAgIGlmIGFicyh1bHBzX2Vycm9yKSA8PSB1bHBzOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiAiZXJyb3IgPSB7fSB1bHBzOyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSB1bHBzIi5mb3JtYXQodWxwc19lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVscHMpCisgICAgIyBGaW5kIG5leHQgZmxvYXQgdXAgZnJvbSB4LgorICAgIG4gPSBzdHJ1Y3QudW5wYWNrKCc8cScsIHN0cnVjdC5wYWNrKCc8ZCcsIHgpKVswXQorICAgIHhfbmV4dCA9IHN0cnVjdC51bnBhY2soJzxkJywgc3RydWN0LnBhY2soJzxxJywgbiArIDEpKVswXQorICAgIGlmIG1hdGguaXNpbmYoeF9uZXh0KToKKyAgICAgICAgIyBDb3JuZXIgY2FzZTogeCB3YXMgdGhlIGxhcmdlc3QgZmluaXRlIGZsb2F0LiBUaGVuIGl0J3MKKyAgICAgICAgIyBub3QgYW4gZXhhY3QgcG93ZXIgb2YgdHdvLCBzbyB3ZSBjYW4gdGFrZSB0aGUgZGlmZmVyZW5jZQorICAgICAgICAjIGJldHdlZW4geCBhbmQgdGhlIHByZXZpb3VzIGZsb2F0LgorICAgICAgICB4X3ByZXYgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gLSAxKSlbMF0KKyAgICAgICAgcmV0dXJuIHggLSB4X3ByZXYKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4geF9uZXh0IC0geAogCiAjIEhlcmUncyBhIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgdGhlIG1hdGguZmFjdG9yaWFsIGFsZ29yaXRobSwgZm9yCiAjIGRvY3VtZW50YXRpb24gYW5kIGNvbXBhcmlzb24gcHVycG9zZXMuCkBAIC0xMDcsMjQgKzEyMywyMyBAQAogICAgICAgICBvdXRlciAqPSBpbm5lcgogICAgIHJldHVybiBvdXRlciA8PCAobiAtIGNvdW50X3NldF9iaXRzKG4pKQogCi1kZWYgYWNjX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHJlbF9lcnI9MmUtMTUsIGFic19lcnIgPSA1ZS0zMjMpOgotICAgICIiIkRldGVybWluZSB3aGV0aGVyIG5vbi1OYU4gZmxvYXRzIGEgYW5kIGIgYXJlIGVxdWFsIHRvIHdpdGhpbiBhCi0gICAgKHNtYWxsKSByb3VuZGluZyBlcnJvci4gIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgcmVsX2VyciBhbmQKLSAgICBhYnNfZXJyIGFyZSBjaG9zZW4gdG8gYmUgc3VpdGFibGUgZm9yIHBsYXRmb3JtcyB3aGVyZSBhIGZsb2F0IGlzCi0gICAgcmVwcmVzZW50ZWQgYnkgYW4gSUVFRSA3NTQgZG91YmxlLiAgVGhleSBhbGxvdyBhbiBlcnJvciBvZiBiZXR3ZWVuCi0gICAgOSBhbmQgMTkgdWxwcy4iIiIKK2RlZiB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpOgorICAgICIiIkdpdmVuIGZpbml0ZSBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsIGNoZWNrIHRoYXQgdGhleSdyZQorICAgIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcyBvciB0aGUKKyAgICBnaXZlbiBhYnNvbHV0ZSB0b2xlcmFuY2UsIHdoaWNoZXZlciBpcyBiaWdnZXIuCiAKLSAgICAjIG5lZWQgdG8gc3BlY2lhbCBjYXNlIGluZmluaXRpZXMsIHNpbmNlIGluZiAtIGluZiBnaXZlcyBuYW4KLSAgICBpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBhbmQgZ290ID09IGV4cGVjdGVkOgorICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisgICAgdWxwX2Vycm9yID0gYWJzKHRvX3VscHMoZXhwZWN0ZWQpIC0gdG9fdWxwcyhnb3QpKQorICAgIGFic19lcnJvciA9IGFicyhleHBlY3RlZCAtIGdvdCkKKworICAgICMgU3VjY2VlZCBpZiBlaXRoZXIgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2wuCisgICAgaWYgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2w6CiAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBlcnJvciA9IGdvdCAtIGV4cGVjdGVkCi0KLSAgICBwZXJtaXR0ZWRfZXJyb3IgPSBtYXgoYWJzX2VyciwgcmVsX2VyciAqIGFicyhleHBlY3RlZCkpCi0gICAgaWYgYWJzKGVycm9yKSA8IHBlcm1pdHRlZF9lcnJvcjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge307IHBlcm1pdHRlZCBlcnJvciA9IHt9Ii5mb3JtYXQoZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZF9lcnJvcikKKyAgICBlbHNlOgorICAgICAgICBmbXQgPSAoImVycm9yID0gezouM2d9ICh7OmR9IHVscHMpOyAiCisgICAgICAgICAgICAgICAicGVybWl0dGVkIGVycm9yID0gezouM2d9IG9yIHs6ZH0gdWxwcyIpCisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGFic19lcnJvciwgdWxwX2Vycm9yLCBhYnNfdG9sLCB1bHBfdG9sKQogCiBkZWYgcGFyc2VfbXRlc3RmaWxlKGZuYW1lKToKICAgICAiIiJQYXJzZSBhIGZpbGUgd2l0aCB0ZXN0IHZhbHVlcwpAQCAtMTUxLDYgKzE2Niw3IEBACiAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sIGZsb2F0KGFyZyksIGZsb2F0KGV4cCksIGZsYWdzKQogCisKIGRlZiBwYXJzZV90ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKIApAQCAtMTcyLDggKzE4OCw1MyBAQAogICAgICAgICAgICAgeWllbGQgKGlkLCBmbiwKICAgICAgICAgICAgICAgICAgICBmbG9hdChhcmdfcmVhbCksIGZsb2F0KGFyZ19pbWFnKSwKICAgICAgICAgICAgICAgICAgICBmbG9hdChleHBfcmVhbCksIGZsb2F0KGV4cF9pbWFnKSwKLSAgICAgICAgICAgICAgICAgICBmbGFncwotICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgIGZsYWdzKQorCisKK2RlZiByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgIyBDb21tb24gbG9naWMgb2YgTWF0aFRlc3RzLihmdGVzdCwgdGVzdF90ZXN0Y2FzZXMsIHRlc3RfbXRlc3RjYXNlcykKKyAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICB1bHAoZXhwZWN0ZWQpIG9yIGFic29sdXRlbHkgKGlmIGdpdmVuIGFuZCBncmVhdGVyKS4KKworICAgIEFzIGEgY29udmVuaWVuY2UsIHdoZW4gbmVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0LCBhbmQgZm9yCisgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgIGFzIGZhciBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbmNlcm5lZC4KKworICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisKKyAgICAjIENoZWNrIGV4YWN0bHkgZXF1YWwgKGFwcGxpZXMgYWxzbyB0byBzdHJpbmdzIHJlcHJlc2VudGluZyBleGNlcHRpb25zKQorICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZhaWx1cmUgPSAibm90IGVxdWFsIgorCisgICAgIyBUdXJuIG1peGVkIGZsb2F0IGFuZCBpbnQgY29tcGFyaXNvbiAoZS5nLiBmbG9vcigpKSB0byBhbGwtZmxvYXQKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZ290LCBpbnQpOgorICAgICAgICBnb3QgPSBmbG9hdChnb3QpCisgICAgZWxpZiBpc2luc3RhbmNlKGdvdCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBpbnQpOgorICAgICAgICBleHBlY3RlZCA9IGZsb2F0KGV4cGVjdGVkKQorCisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgZmxvYXQpOgorICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgorICAgICAgICAgICAgIyBQYXNzLCBzaW5jZSBib3RoIG5hbgorICAgICAgICAgICAgZmFpbHVyZSA9IE5vbmUKKyAgICAgICAgZWxpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBvciBtYXRoLmlzaW5mKGdvdCk6CisgICAgICAgICAgICAjIFdlIGFscmVhZHkga25vdyB0aGV5J3JlIG5vdCBlcXVhbCwgZHJvcCB0aHJvdWdoIHRvIGZhaWx1cmUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQm90aCBhcmUgZmluaXRlIGZsb2F0cyAobm93KS4gQXJlIHRoZXkgY2xvc2UgZW5vdWdoPworICAgICAgICAgICAgZmFpbHVyZSA9IHVscF9hYnNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKworICAgICMgYXJndW1lbnRzIGFyZSBub3QgZXF1YWwsIGFuZCBpZiBudW1lcmljLCBhcmUgdG9vIGZhciBhcGFydAorICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgIGZhaWxfZm10ID0gImV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChleHBlY3RlZCwgZ290KQorICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChmYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFpbF9tc2cKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQogCiAjIENsYXNzIHByb3ZpZGluZyBhbiBfX2luZGV4X18gbWV0aG9kLgogY2xhc3MgTXlJbmRleGFibGUob2JqZWN0KToKQEAgLTE4NSwxOCArMjQ2LDI0IEBACiAKIGNsYXNzIE1hdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgdmFsdWUsIGV4cGVjdGVkKToKLSAgICAgICAgaWYgYWJzKHZhbHVlLWV4cGVjdGVkKSA+IGVwczoKLSAgICAgICAgICAgICMgVXNlICVyIGluc3RlYWQgb2YgJWYgc28gdGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICMgZGlzcGxheXMgZnVsbCBwcmVjaXNpb24uIE90aGVyd2lzZSBkaXNjcmVwYW5jaWVzCi0gICAgICAgICAgICAjIGluIHRoZSBsYXN0IGZldyBiaXRzIHdpbGwgbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZwotICAgICAgICAgICAgIyBlcnJvciBtZXNzYWdlcwotICAgICAgICAgICAgc2VsZi5mYWlsKCclcyByZXR1cm5lZCAlciwgZXhwZWN0ZWQgJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUsIGV4cGVjdGVkKSkKKyAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgZ290LCBleHBlY3RlZCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgICAgICIiIkNvbXBhcmUgYXJndW1lbnRzIGV4cGVjdGVkIGFuZCBnb3QsIGFzIGZsb2F0cywgaWYgZWl0aGVyCisgICAgICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICAgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5LCB3aGljaGV2ZXIgaXMgZ3JlYXRlci4KKworICAgICAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgICAgICBub24tZmluaXRlIGZsb2F0cywgZXhhY3QgZXF1YWxpdHkgaXMgZGVtYW5kZWQuIEFsc28sIG5hbj09bmFuCisgICAgICAgIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICIiIgorICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoInt9OiB7fSIuZm9ybWF0KG5hbWUsIGZhaWx1cmUpKQogCiAgICAgZGVmIHRlc3RDb25zdGFudHMoc2VsZik6Ci0gICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2KQotICAgICAgICBzZWxmLmZ0ZXN0KCdlJywgbWF0aC5lLCAyLjcxODI4MTgpCisgICAgICAgICMgUmVmOiBBYnJhbW93aXR6ICYgU3RlZ3VuIChEb3ZlciwgMTk2NSkKKyAgICAgICAgc2VsZi5mdGVzdCgncGknLCBtYXRoLnBpLCAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MykKKyAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAyODcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC50YXUsIDIqbWF0aC5waSkKIAogICAgIGRlZiB0ZXN0QWNvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmFjb3MpCkBAIC0yMDUsNiArMjcyLDggQEAKICAgICAgICAgc2VsZi5mdGVzdCgnYWNvcygxKScsIG1hdGguYWNvcygxKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFjb3MoTkFOKSkpCiAKICAgICBkZWYgdGVzdEFjb3NoKHNlbGYpOgpAQCAtMjI0LDYgKzI5Myw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2FzaW4oMSknLCBtYXRoLmFzaW4oMSksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFzaW4oTkFOKSkpCiAKICAgICBkZWYgdGVzdEFzaW5oKHNlbGYpOgpAQCAtMzc4LDkgKzQ0OSw5IEBACiAKICAgICBkZWYgdGVzdENvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmNvcykKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwKQorICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoLXBpLzIpJywgbWF0aC5jb3MoLW1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoMCknLCBtYXRoLmNvcygwKSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCwgYWJzX3RvbD11bHAoMSkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaSknLCBtYXRoLmNvcyhtYXRoLnBpKSwgLTEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguY29zKElORikpKQpAQCAtNDAzLDYgKzQ3NCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkpJywgbWF0aC5kZWdyZWVzKG1hdGgucGkpLCAxODAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcyhwaS8yKScsIG1hdGguZGVncmVlcyhtYXRoLnBpLzIpLCA5MC4wKQogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKC1waS80KScsIG1hdGguZGVncmVlcygtbWF0aC5waS80KSwgLTQ1LjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMoMCknLCBtYXRoLmRlZ3JlZXMoMCksIDApCiAKICAgICBkZWYgdGVzdEV4cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmV4cCkKQEAgLTQxMiw2ICs0ODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZXhwKElORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChOSU5GKSwgMC4pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZXhwKE5BTikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmV4cCwgMTAwMDAwMCkKIAogICAgIGRlZiB0ZXN0RmFicyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZhYnMpCkBAIC02NTQsNiArNzI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KElORiwgTkFOKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTkFOLCBOSU5GKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTklORiwgTkFOKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmh5cG90LCBGTE9BVF9NQVgsIEZMT0FUX01BWCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdCgxLjAsIE5BTikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmh5cG90KE5BTiwgLTIuMCkpKQogCkBAIC03MDcsOCArNzgxLDEwIEBACiAKICAgICBkZWYgdGVzdExvZzFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMXApCi0gICAgICAgIG49IDIqKjkwCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIGZvciBuIGluIFsyLCAyKio5MCwgMioqMzAwXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMXAoSU5GKSwgSU5GKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgpAQCAtOTIyLDYgKzk5OCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMTgwKScsIG1hdGgucmFkaWFucygxODApLCBtYXRoLnBpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDkwKScsIG1hdGgucmFkaWFucyg5MCksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucygtNDUpJywgbWF0aC5yYWRpYW5zKC00NSksIC1tYXRoLnBpLzQpCisgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMCknLCBtYXRoLnJhZGlhbnMoMCksIDApCiAKICAgICBkZWYgdGVzdFNpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnNpbikKQEAgLTk1MSw2ICsxMDI4LDcgQEAKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCgxKScsIG1hdGguc3FydCgxKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCg0KScsIG1hdGguc3FydCg0KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLnNxcnQoSU5GKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIE5JTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguc3FydChOQU4pKSkKIApAQCAtOTcwLDcgKzEwNDgsOCBAQAogICAgIGRlZiB0ZXN0VGFuaChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnRhbmgpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMCknLCBtYXRoLnRhbmgoMCksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgxKSt0YW5oKC0xKScsIG1hdGgudGFuaCgxKSttYXRoLnRhbmgoLTEpLCAwLAorICAgICAgICAgICAgICAgICAgIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKGluZiknLCBtYXRoLnRhbmgoSU5GKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgtaW5mKScsIG1hdGgudGFuaChOSU5GKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgudGFuaChOQU4pKSkKQEAgLTEwMjAsNyArMTA5OSw4IEBACiAKICAgICBkZWYgdGVzdElzbmFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgibmFuIikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikqIDAuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIi1uYW4iKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSAqIDAuKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigxLikpCkBAIC0xMDg0LDMwICsxMTY0LDY0IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF90ZXN0ZmlsZShzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgorCisgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICAjIFNraXAgaWYgZWl0aGVyIHRoZSBpbnB1dCBvciByZXN1bHQgaXMgY29tcGxleCwgb3IgaWYKLSAgICAgICAgICAgICMgZmxhZ3MgaXMgbm9uZW1wdHkKLSAgICAgICAgICAgIGlmIGFpICE9IDAuIG9yIGVpICE9IDAuIG9yIGZsYWdzOgorICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgKKyAgICAgICAgICAgIGlmIGFpICE9IDAuMCBvciBlaSAhPSAwLjA6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGZuIGluIFsncmVjdCcsICdwb2xhciddOgogICAgICAgICAgICAgICAgICMgbm8gcmVhbCB2ZXJzaW9ucyBvZiByZWN0LCBwb2xhcgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKG1hdGgsIGZuKQorCisgICAgICAgICAgICBpZiAnaW52YWxpZCcgaW4gZmxhZ3Mgb3IgJ2RpdmlkZS1ieS16ZXJvJyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdWYWx1ZUVycm9yJworICAgICAgICAgICAgZWxpZiAnb3ZlcmZsb3cnIGluIGZsYWdzOgorICAgICAgICAgICAgICAgIGVyID0gJ092ZXJmbG93RXJyb3InCisKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKGFyKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoKCJVbmV4cGVjdGVkIFZhbHVlRXJyb3I6ICVzXG4gICAgICAgICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRlc3QgJXM6JXMoJXIpXG4iKSAlIChleGMuYXJnc1swXSwgaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAnVmFsdWVFcnJvcicKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoIlVuZXhwZWN0ZWQgT3ZlcmZsb3dFcnJvciBpbiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0ICVzOiVzKCVyKVxuIiAlIChpZCwgZm4sIGFyKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwobWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuZnRlc3QoIiVzOiVzKCVyKSIgJSAoaWQsIGZuLCBhciksIHJlc3VsdCwgZXIpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ092ZXJmbG93RXJyb3InCisKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXIsIHJlc3VsdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhciwgZmFpbHVyZSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChtc2cpCisKKyAgICAgICAgaWYgZmFpbHVyZXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0ZhaWx1cmVzIGluIHRlc3RfdGVzdGZpbGU6XG4gICcgKworICAgICAgICAgICAgICAgICAgICAgICdcbiAgJy5qb2luKGZhaWx1cmVzKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgZmFpbF9mbXQgPSAie306e30oeyFyfSk6IGV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgogCiAgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZmxhZ3MgaW4gcGFyc2VfbXRlc3RmaWxlKG1hdGhfdGVzdGNhc2VzKToKQEAgLTExMjUsNDEgKzEyMzksNDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIGdvdCA9ICdPdmVyZmxvd0Vycm9yJwogCi0gICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gTm9uZQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpOgotICAgICAgICAgICAgICAgIGlmIG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBtYXRoLmlzbmFuKGdvdCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBub3QgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBpZiBmbiA9PSAnbGdhbW1hJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBmZXcgbXVsdGlwbGVzIG9mIHRoZSBtYWNoaW5lIGFjY3VyYWN5LCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IGFjY19jaGVjayhleHBlY3RlZCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxfZXJyID0gNWUtMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19lcnIgPSA1ZS0xNSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGVyZmMgaGFzIGxlc3MtdGhhbi1pZGVhbCBhY2N1cmFjeSBmb3IgbGFyZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgotICAgICAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFggV291bGQgYmUgYmV0dGVyIHRvIHdlYWtlbiB0aGlzIHRlc3Qgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFyZ2UgeCwgaW5zdGVhZCBvZiBmb3IgYWxsIHguCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCAyMDAwKQorICAgICAgICAgICAgIyBEZWZhdWx0IHRvbGVyYW5jZXMKKyAgICAgICAgICAgIHVscF90b2wsIGFic190b2wgPSA1LCAwLjAKIAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjApCi0gICAgICAgICAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEV4Y2VwdGlvbnMgdG8gdGhlIGRlZmF1bHRzCisgICAgICAgICAgICBpZiBmbiA9PSAnZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgRXhwZXJpbWVudGFsIHJlc3VsdHMgb24gb25lIHBsYXRmb3JtIGdhdmUKKyAgICAgICAgICAgICAgICAjIGFuIGFjY3VyYWN5IG9mIDw9IDEwIHVscHMgYWNyb3NzIHRoZSBlbnRpcmUgZmxvYXQKKyAgICAgICAgICAgICAgICAjIGRvbWFpbi4gV2Ugd2Vha2VuIHRoYXQgdG8gcmVxdWlyZSAyMCB1bHAgYWNjdXJhY3kuCisgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDIwCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBzdHIpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBzdHIpOgotICAgICAgICAgICAgICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2xnYW1tYSc6CisgICAgICAgICAgICAgICAgIyB3ZSB1c2UgYSB3ZWFrZXIgYWNjdXJhY3kgdGVzdCBmb3IgbGdhbW1hOworICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKKyAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KKyAgICAgICAgICAgICAgICAjIGdlbmVyYWwuCisgICAgICAgICAgICAgICAgYWJzX3RvbCA9IDFlLTE1CiAKLSAgICAgICAgICAgIGZhaWxfbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZ290KQotICAgICAgICAgICAgaWYgYWNjdXJhY3lfZmFpbHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChhY2N1cmFjeV9mYWlsdXJlKQotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGZhaWxfbXNnKQorICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYycgYW5kIGFyZyA+PSAwLjA6CisgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCisgICAgICAgICAgICAgICAgIyBhcmd1bWVudHMgKHggfiAyNSBvciBzbyksIG1haW5seSBkdWUgdG8gdGhlCisgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIE9ic2VydmVkIGJldHdlZW4gQ1B5dGhvbiBhbmQgbXBtYXRoIGF0IDI1IGRwOgorICAgICAgICAgICAgICAgICMgICAgICAgeCA8ICAwIDogZXJyIDw9IDIgdWxwCisgICAgICAgICAgICAgICAgIyAgMCA8PSB4IDwgIDEgOiBlcnIgPD0gMTAgdWxwCisgICAgICAgICAgICAgICAgIyAgMSA8PSB4IDwgMTAgOiBlcnIgPD0gMTAwIHVscAorICAgICAgICAgICAgICAgICMgMTAgPD0geCA8IDIwIDogZXJyIDw9IDMwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDIwIDw9IHggICAgICA6IDwgNjAwIHVscAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICBpZiBhcmcgPCAxLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMAorICAgICAgICAgICAgICAgIGVsaWYgYXJnIDwgMTAuMDoKKyAgICAgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDEwMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAwCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhcmcsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQogCiAgICAgICAgIGlmIGZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X210ZXN0ZmlsZTpcbiAgJyArCkBAIC0xMjcyLDcgKzEzOTMsOCBAQAogCiAgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTEwMCcpLCBEZWNpbWFsKCcxLjBlLTEwMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUyMCcpLCBEZWNpbWFsKCcxLjBlMjAnKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKIApAQCAtMTI4MCw4ICsxNDAyLDEwIEBACiAgICAgICAgICMgdGVzdCB3aXRoIEZyYWN0aW9uIHZhbHVlcwogICAgICAgICBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAotICAgICAgICAjIGNvdWxkIHVzZSBzb21lIG1vcmUgZXhhbXBsZXMgaGVyZSEKLSAgICAgICAgZnJhY3Rpb25fZXhhbXBsZXMgPSBbKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSldCisgICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWworICAgICAgICAgICAgKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAwMDAwMDAxKSwgRnJhY3Rpb24oMTAwMDAwMDAwKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAqKjggKyAxLCAxMCoqMjgpLCBGcmFjdGlvbigxLCAxMCoqMjApKV0KICAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKaW5kZXggNjg1NjU5My4uNGUyYzkwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKQEAgLTEwMSw1ICsxMDEsMTEgQEAKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5qcGciKSwgKCJpbWFnZS9qcGVnIiwgTm9uZSkpCiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UucG5nIiksICgiaW1hZ2UvcG5nIiwgTm9uZSkpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1pbWV0eXBlcykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IGYzZjcwY2MuLjU2ZDg1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTcxMyw2ICs3MTMsMTMgQEAKICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JldHVybmluZ190aGVfbnVtYmVyX29mX2J5dGVzX3dyaXR0ZW4oc2VsZik6CisgICAgICAgIG1tID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIiIpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieCIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieXoiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInB5dGhvbiIpLCA2KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdjYW5ub3QgcmVzaXplIGFub255bW91cyBtbWFwcyBvbiBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9yZXNpemVfcGFzdF9wb3Moc2VsZik6CiAgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDgxOTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IDhlZjMzNGYuLmY2NTZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggOGQ3YTIxMy4uMDFhMWNkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC01LDcgKzUsNyBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KLWltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzLCBvcworaW1wb3J0IHVuaXR0ZXN0LCBpbywgY29kZWNzLCBzeXMKIGltcG9ydCBfbXVsdGlieXRlY29kZWMKIAogQUxMX0NKS0VOQ09ESU5HUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CmluZGV4IDJiZjRlNzUuLjlmMjI1MDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQpAQCAtMSw2ICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdmb3JrJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CmluZGV4IDE5M2EwNGEuLjQwN2JiM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQpAQCAtMSw2ICsxLDExIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9ya3NlcnZlcicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCA1MjI3M2VhLi4zMjU5M2RhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTYsNyArNiw2IEBACiAKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5Ci1pbXBvcnQgemlwaW1wb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwpAQCAtMTUsNyArMTQsMTAgQEAKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2spCisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQogCiAjIExvb2sgdXAgd2hpY2ggc3RhcnQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIHRvIHRlc3QKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKaW5kZXggMzM0YWU5ZS4uNjU1ODk1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ3NwYXduJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggMzg3YTRlNy4uMjEwNzRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogCiAjIFNraXAgdGVzdCBpZiBuaXMgbW9kdWxlIGRvZXMgbm90IGV4aXN0LgogbmlzID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCduaXMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDY2ZWY5MzAuLmM0NmRlZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTE1NDQsOCArMTU0NCwxMCBAQAogICAgICAgICAgICAgICAgIGVsaWYgY21kID09IGInU1RBUlRUTFNcclxuJzoKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoYiczODIgQmVnaW4gVExTIG5lZ290aWF0aW9uIG5vd1xyXG4nKQotICAgICAgICAgICAgICAgICAgICBjbGllbnQgPSBzc2wud3JhcF9zb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPWNlcnRmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gY29udGV4dC53cmFwX3NvY2tldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudCkKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudC5tYWtlZmlsZSgncmInKSkKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1FVSVRcclxuJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQppbmRleCAzMGZhNjEyLi41YjU5MGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGZyb20gdW5pY29kZWRhdGEgaW1wb3J0IG5vcm1hbGl6ZSwgdW5pZGF0YV92ZXJzaW9uCiAKIFRFU1REQVRBRklMRSA9ICJOb3JtYWxpemF0aW9uVGVzdC50eHQiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDU4MGYyMDMuLjkwZWRiNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC00NTIsNSArNDUyLDg4IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzcGxpdHVuYyddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gbnRwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9udHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzZGlyKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggNmVmOTNkOS4uNjgwNmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDcgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZQogCiBjbGFzcyBPcGNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjAsNiArMjEsMzIgQEAKICAgICAgICAgaWYgbiAhPSA5MDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgndHJ5IGluc2lkZSBmb3InKQogCisgICAgZGVmIHRlc3Rfc2V0dXBfYW5ub3RhdGlvbnNfbGluZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IFNFVFVQX0FOTk9UQVRJT05TIGRvZXMgbm90IGNyZWF0ZSBzcHVyaW91cyBsaW5lIG51bWJlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKGFubl9tb2R1bGUuX19maWxlX18pIGFzIGY6CisgICAgICAgICAgICAgICAgdHh0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGNvID0gY29tcGlsZSh0eHQsIGFubl9tb2R1bGUuX19maWxlX18sICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28uY29fZmlyc3RsaW5lbm8sIDYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfbm9fYW5ub3RhdGlvbnNfaWZfbm90X25lZWRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQzogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIEMuX19hbm5vdGF0aW9uc19fCisKKyAgICBkZWYgdGVzdF91c2VfZXhpc3RpbmdfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiB7MTogMn19CisgICAgICAgIGV4ZWMoJ3g6IGludCcsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXSwgeyd4JzogaW50LCAxOiAyfSkKKworICAgIGRlZiB0ZXN0X2RvX25vdF9yZWNyZWF0ZV9hbm5vdGF0aW9ucyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlbCBfX2Fubm90YXRpb25zX18KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKwogICAgIGRlZiB0ZXN0X3JhaXNlX2NsYXNzX2V4Y2VwdGlvbnMoc2VsZik6CiAKICAgICAgICAgY2xhc3MgQUNsYXNzKEV4Y2VwdGlvbik6IHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGI1YmE5NzYuLjYyNTQwOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMTIwLDYzICsxMjAsNjMgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hZGQoMywgNCkgPT0gNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hZGQoMywgNCksIDcpCiAKICAgICBkZWYgdGVzdF9iaXR3aXNlX2FuZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmFuZF8oMHhmLCAweGEpID09IDB4YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSwgMHhhKQogCiAgICAgZGVmIHRlc3RfY29uY2F0KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpID09ICdweXRob24nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSA9PSBbMSwgMiwgMywgNF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMShbNSwgNl0pLCBTZXExKFs3XSkpID09IFs1LCA2LCA3XSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSkgPT0gWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpLCAncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoWzEsIDJdLCBbMywgNF0pLCBbMSwgMiwgMywgNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSwgWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSksIFs1LCA2LCA3XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIDEzLCAyOSkKIAogICAgIGRlZiB0ZXN0X2NvdW50T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMykgPT0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSA9PSAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSksIDApCiAKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSBbNCwgMywgMiwgMV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmRlbGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5kZWxpdGVtKGEsIDEpIGlzIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhID09IFs0LCAyLCAxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbNCwgMiwgMV0pCiAKICAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZmxvb3JkaXYoNSwgMikgPT0gMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5mbG9vcmRpdig1LCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X3RydWVkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnRydWVkaXYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci50cnVlZGl2KDUsIDIpID09IDIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci50cnVlZGl2KDUsIDIpLCAyLjUpCiAKICAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSByYW5nZSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5nZXRpdGVtKGEsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X2luZGV4T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIFs0LCAzLCAyLCAxXSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKQEAgLTE4OSwyMSArMTg5LDIxIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSA9PSAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubHNoaWZ0KDUsIDApLCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5tb2QoNSwgMikgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tb2QoNSwgMiksIDEpCiAKICAgICBkZWYgdGVzdF9tdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm11bCg1LCAyKSwgMTApCiAKICAgICBkZWYgdGVzdF9tYXRtdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iub3JfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm9yXygweGEsIDB4NSkgPT0gMHhmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXygweGEsIDB4NSksIDB4ZikKIAogICAgIGRlZiB0ZXN0X3BvcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjUwLDggKzI1MCw4IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSA9PSAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDApID09IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucnNoaWZ0KDUsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgpAQCAtMjY2LDE1ICsyNjYsMTUgQEAKICAgICAgICAgYSA9IGxpc3QocmFuZ2UoMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc2V0aXRlbShhLCAwLCAyKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbMiwgMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzIsIDEsIDJdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCA0LCAyKQogCiAgICAgZGVmIHRlc3Rfc3ViKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnN1Yig1LCAyKSA9PSAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnN1Yig1LCAyKSwgMykKIAogICAgIGRlZiB0ZXN0X3RydXRoKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnhvcikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci54b3IoMHhiLCAweGMpID09IDB4NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci54b3IoMHhiLCAweGMpLCAweDcpCiAKICAgICBkZWYgdGVzdF9pcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggNzYyMWMyNC4uOTFhMDMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCitpbXBvcnQgb3B0cGFyc2UKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uLCBPcHRpb24sIFwKICAgICAgVGl0bGVkSGVscEZvcm1hdHRlciwgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91cCwgXAogICAgICBTVVBQUkVTU19VU0FHRSwgT3B0aW9uRXJyb3IsIE9wdGlvbkNvbmZsaWN0RXJyb3IsIFwKQEAgLTE2NTAsNiArMTY1MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIC1sOiBpbnZhbGlkIGludGVnZXIgdmFsdWU6ICcweDEyeCciKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2NoZWNrX2J1aWx0aW4nLCAnQW1iaWd1b3VzT3B0aW9uRXJyb3InLCAnTk9fREVGQVVMVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG9wdHBhcnNlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQppbmRleCA5MDFkNGIyLi45M2Y4MTJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBjb3B5CiBpbXBvcnQgZ2MKQEAgLTUxLDYgKzUyLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkLml0ZW1zKCkpLAogICAgICAgICAgICAgWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNiksICgnZycsIDcpXSkKIAorICAgIGRlZiB0ZXN0XzQ2OChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgIGl0ZW1zID0gWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNiksICgnZycsIDcpXQorICAgICAgICBzaHVmZmxlKGl0ZW1zKQorICAgICAgICBhcmdkaWN0ID0gT3JkZXJlZERpY3QoaXRlbXMpCisgICAgICAgIGQgPSBPcmRlcmVkRGljdCgqKmFyZ2RpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkLml0ZW1zKCkpLCBpdGVtcykKKwogICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKQEAgLTk3LDYgKzEwNiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgZGVmIHRlc3RfaW5pdF9jYWxscyhzZWxmKToKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCdrZXlzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2l0ZW1zJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKworICAgICAgICBzZWxmLk9yZGVyZWREaWN0KFNwYW0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgWydrZXlzJ10pCisKICAgICBkZWYgdGVzdF9mcm9ta2V5cyhzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCkBAIC0yOTgsOSArMzIwLDExIEBACiAgICAgICAgICMgZG8gbm90IHNhdmUgaW5zdGFuY2UgZGljdGlvbmFyeSBpZiBub3QgbmVlZGVkCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvZC5fX2RpY3RfXywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogICAgICAgICBvZC54ID0gMTAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fZGljdF9fWyd4J10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fcmVkdWNlX18oKVsyXSwgeyd4JzogMTB9KQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CkBAIC00MDMsNiArNDI3LDE0IEBACiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDI4NgorICAgICAgICBzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZyB5ZXN0ZXJkYXkgYmVmb3JlIGRhd24nLnNwbGl0KCkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLmtleXMoKSwgZGljdChvZCkua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLml0ZW1zKCksIGRpY3Qob2QpLml0ZW1zKCkpCisKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIFZlcmlmeSB0aGF0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHVwZGF0ZSgpIHdpdGhvdXQgYnJlYWtpbmcgX19pbml0X18oKQpAQCAtNjExLDYgKzY0MywyNSBAQAogICAgIE9yZGVyZWREaWN0ID0gcHlfY29sbC5PcmRlcmVkRGljdAogCiAKK2NsYXNzIENQeXRob25CdWlsdGluRGljdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCdWlsdGluIGRpY3QgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKworICAgIFJldXNlIHNvbWUgb2YgdGVzdHMgaW4gT3JkZXJlZERpY3Qgc2VsZWN0aXZlbHkuCisgICAgIiIiCisKKyAgICBtb2R1bGUgPSBidWlsdGlucworICAgIE9yZGVyZWREaWN0ID0gZGljdAorCitmb3IgbWV0aG9kIGluICgKKyAgICAidGVzdF9pbml0IHRlc3RfdXBkYXRlIHRlc3RfYWJjIHRlc3RfY2xlYXIgdGVzdF9kZWxpdGVtICIgKworICAgICJ0ZXN0X3NldGl0ZW0gdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbiAiICsKKyAgICAidGVzdF9wb3BpdGVtIHRlc3RfcmVpbnNlcnQgdGVzdF9vdmVycmlkZV91cGRhdGUgIiArCisgICAgInRlc3RfaGlnaGx5X25lc3RlZCB0ZXN0X2hpZ2hseV9uZXN0ZWRfc3ViY2xhc3MgIiArCisgICAgInRlc3RfZGVsaXRlbV9oYXNoX2NvbGxpc2lvbiAiKS5zcGxpdCgpOgorICAgIHNldGF0dHIoQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHMsIG1ldGhvZCwgZ2V0YXR0cihPcmRlcmVkRGljdFRlc3RzLCBtZXRob2QpKQorZGVsIG1ldGhvZAorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCiBjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYyNSwxOCArNjc2LDIwIEBACiAgICAgICAgIHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKIAotICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblBuJykKLSAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpICsgY2FsY3NpemUoJ1AnKQorICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduUTJQJyArICczUG5QbjJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKQorCisgICAgICAgIGVudHJ5c2l6ZSA9IGNhbGNzaXplKCduMlAnKQorICAgICAgICBwID0gY2FsY3NpemUoJ1AnKQogICAgICAgICBub2Rlc2l6ZSA9IGNhbGNzaXplKCdQbjJQJykKIAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKSAgIyA4Ynl0ZSBpbmRpY2llcyArIDgqMi8vMyAqIGVudHJ5IHRhYmxlCiAgICAgICAgIG9kLnggPSAxCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMyldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUgKyAzKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplICsgMypub2Rlc2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMywgMTApXSkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDE2KmVudHJ5c2l6ZSArIDEwKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqcCArIDE2ICsgMTAqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCiAKICAgICAgICAgY2hlY2sob2Qua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgIGNoZWNrKG9kLml0ZW1zKCksIHNpemUoJ1AnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDEwMzgzY2YuLmU5ZmRiMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG1tYXAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKQEAgLTU3LDcgKzU2LDcgQEAKIHRyeToKICAgICBpbXBvcnQgcHdkCiAgICAgYWxsX3VzZXJzID0gW3UucHdfdWlkIGZvciB1IGluIHB3ZC5nZXRwd2FsbCgpXQotZXhjZXB0IEltcG9ydEVycm9yOgorZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgIGFsbF91c2VycyA9IFtdCiB0cnk6CiAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IElOVF9NQVgsIFBZX1NTSVpFX1RfTUFYCkBAIC02NSw2ICs2NCw4IEBACiAgICAgSU5UX01BWCA9IFBZX1NTSVpFX1RfTUFYID0gc3lzLm1heHNpemUKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVuaXhfc2hlbGwKKwogCiByb290X2luX3Bvc2l4ID0gRmFsc2UKIGlmIGhhc2F0dHIob3MsICdnZXRldWlkJyk6CkBAIC04Miw2ICs4MywzMiBAQAogIyBJc3N1ZSAjMTQxMTA6IFNvbWUgdGVzdHMgZmFpbCBvbiBGcmVlQlNEIGlmIHRoZSB1c2VyIGlzIGluIHRoZSB3aGVlbCBncm91cC4KIEhBVkVfV0hFRUxfR1JPVVAgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpIGFuZCBvcy5nZXRnaWQoKSA9PSAwCiAKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MobXNnX3JlZ2V4LCBxdWlldD1GYWxzZSk6CisgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2dfcmVnZXgsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aWV0PXF1aWV0KToKKyAgICAgICAgeWllbGQKKworCitkZWYgcmVxdWlyZXNfb3NfZnVuYyhuYW1lKToKKyAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCBuYW1lKSwgJ3JlcXVpcmVzIG9zLiVzJyAlIG5hbWUpCisKKworY2xhc3MgX1BhdGhMaWtlKG9zLlBhdGhMaWtlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPSIiKToKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5wYXRoKQorCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKIGRlZiBjcmVhdGVfZmlsZShmaWxlbmFtZSwgY29udGVudD1iJ2NvbnRlbnQnKToKICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ4YiIsIDApIGFzIGZwOgogICAgICAgICBmcC53cml0ZShjb250ZW50KQpAQCAtMTQ1LDkgKzE3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIElOVF9NQVggPCBQWV9TU0laRV9UX01BWCIpCiAgICAgQHN1cHBvcnQuYmlnbWVtdGVzdChzaXplPUlOVF9NQVggKyAxMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGFyZ2VfcmVhZChzZWxmLCBzaXplKToKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIndGVzdCcpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiJ3Rlc3QnKQogCiAgICAgICAgICMgSXNzdWUgIzIxOTMyOiBNYWtlIHN1cmUgdGhhdCBvcy5yZWFkKCkgZG9lcyBub3QgcmFpc2UgYW4KICAgICAgICAgIyBPdmVyZmxvd0Vycm9yIGZvciBzaXplIGxhcmdlciB0aGFuIElOVF9NQVgKQEAgLTIwNCwxMSArMjMwLDEyIEBACiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiMSIpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIyIikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIjEiKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBiIjIiKQorCiAgICAgICAgIG9zLnJlcGxhY2Uoc3VwcG9ydC5URVNURk4sIFRFU1RGTjIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zdGF0LCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyJykgYXMgZjoKQEAgLTMwOSw5ICszMzYsNyBAQAogICAgICAgICAgICAgZm5hbWUgPSBzZWxmLmZuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgZW5jb2RlICVhIGZvciB0aGUgZmlsZXN5c3RlbSIgJSBzZWxmLmZuYW1lKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKIAogICAgIGRlZiB0ZXN0X3N0YXRfcmVzdWx0X3BpY2tsZShzZWxmKToKICAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChzZWxmLmZuYW1lKQpAQCAtNDYyLDE5ICs0ODcsMTQgQEAKIAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYuZGlybmFtZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXJuYW1lKQotICAgICAgICB3aXRoIG9wZW4oc2VsZi5mbmFtZSwgJ3diJykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiIkFCQyIpCisgICAgICAgIGNyZWF0ZV9maWxlKHNlbGYuZm5hbWUpCiAKICAgICAgICAgZGVmIHJlc3RvcmVfZmxvYXRfdGltZXMoc3RhdGUpOgotICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgICAgICB3aXRoIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncygnc3RhdF9mbG9hdF90aW1lcycpOgogICAgICAgICAgICAgICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoc3RhdGUpCiAKICAgICAgICAgIyBlbnN1cmUgdGhhdCBzdF9hdGltZSBhbmQgc3RfbXRpbWUgYXJlIGZsb2F0Ci0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICBvbGRfZmxvYXRfdGltZXMgPSBvcy5zdGF0X2Zsb2F0X3RpbWVzKC0xKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfZmxvYXRfdGltZXMsIG9sZF9mbG9hdF90aW1lcykKIApAQCAtNTY2LDcgKzU4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKICAgICBkZWYgdGVzdF91dGltZV9mZChzZWxmKToKICAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBucyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICAjIHVzZSBhIGZpbGUgZGVzY3JpcHRvciB0byB0ZXN0IGZ1dGltZW5zKHRpbWVzcGVjKQogICAgICAgICAgICAgICAgICMgb3IgZnV0aW1lcyh0aW1ldmFsKQogICAgICAgICAgICAgICAgIG9zLnV0aW1lKGZwLmZpbGVubygpLCBucz1ucykKQEAgLTY3OCwxOCArNjk4LDIwIEBACiAgICAgICAgIHJldHVybiBvcy5lbnZpcm9uCiAKICAgICAjIEJ1ZyAxMTEwNDc4Ci0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF91cGRhdGUyKHNlbGYpOgogICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoSEVMTE89IldvcmxkIikKLSAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvICRIRUxMTyciICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICB2YWx1ZSA9IHBvcGVuLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAiV29ybGQiKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICB3aXRoIG9zLnBvcGVuKAotICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvIFwibGluZTFcbmxpbmUyXG5saW5lM1wiJyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHVuaXhfc2hlbGwpIGFzIHBvcGVuOgogICAgICAgICAgICAgaXQgPSBpdGVyKHBvcGVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUyXG4iKQpAQCAtODIwLDYgKzg0Miw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzdXBwb3J0LlRFU1RGTikKIAogICAgICAgICAjIEJ1aWxkOgogICAgICAgICAjICAgICBURVNURk4vCkBAIC04NDIsMTEgKzg2NSwxMSBAQAogICAgICAgICBzZWxmLnN1YjFfcGF0aCA9IGpvaW4oc2VsZi53YWxrX3BhdGgsICJTVUIxIikKICAgICAgICAgc2VsZi5zdWIxMV9wYXRoID0gam9pbihzZWxmLnN1YjFfcGF0aCwgIlNVQjExIikKICAgICAgICAgc3ViMl9wYXRoID0gam9pbihzZWxmLndhbGtfcGF0aCwgIlNVQjIiKQotICAgICAgICBzZWxmLnN1YjIxX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgIlNVQjIxIikKKyAgICAgICAgc3ViMjFfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiU1VCMjEiKQogICAgICAgICB0bXAxX3BhdGggPSBqb2luKHNlbGYud2Fsa19wYXRoLCAidG1wMSIpCiAgICAgICAgIHRtcDJfcGF0aCA9IGpvaW4oc2VsZi5zdWIxX3BhdGgsICJ0bXAyIikKICAgICAgICAgdG1wM19wYXRoID0gam9pbihzdWIyX3BhdGgsICJ0bXAzIikKLSAgICAgICAgdG1wNV9wYXRoID0gam9pbihzZWxmLnN1YjIxX3BhdGgsICJ0bXAzIikKKyAgICAgICAgdG1wNV9wYXRoID0gam9pbihzdWIyMV9wYXRoLCAidG1wMyIpCiAgICAgICAgIHNlbGYubGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKICAgICAgICAgdDJfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIpCiAgICAgICAgIHRtcDRfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIsICJ0bXA0IikKQEAgLTg1Nyw3ICs4ODAsNyBAQAogICAgICAgICAjIENyZWF0ZSBzdHVmZi4KICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5zdWIxMV9wYXRoKQogICAgICAgICBvcy5tYWtlZGlycyhzdWIyX3BhdGgpCi0gICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuc3ViMjFfcGF0aCkKKyAgICAgICAgb3MubWFrZWRpcnMoc3ViMjFfcGF0aCkKICAgICAgICAgb3MubWFrZWRpcnModDJfcGF0aCkKIAogICAgICAgICBmb3IgcGF0aCBpbiB0bXAxX3BhdGgsIHRtcDJfcGF0aCwgdG1wM19wYXRoLCB0bXA0X3BhdGgsIHRtcDVfcGF0aDoKQEAgLTg3NSwxNiArODk4LDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFtdLCBbInRtcDMiXSkKIAotICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIDApCisgICAgICAgIG9zLmNobW9kKHN1YjIxX3BhdGgsIDApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmxpc3RkaXIoc2VsZi5zdWIyMV9wYXRoKQorICAgICAgICAgICAgb3MubGlzdGRpcihzdWIyMV9wYXRoKQogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzdWIyMV9wYXRoLCBzdGF0LlNfSVJXWFUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKKyAgICAgICAgICAgIG9zLmNobW9kKHN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKICAgICAgICAgICAgIG9zLnVubGluayh0bXA1X3BhdGgpCi0gICAgICAgICAgICBvcy5ybWRpcihzZWxmLnN1YjIxX3BhdGgpCi0gICAgICAgICAgICBzZWxmLnN1YjIxX3BhdGggPSBOb25lCisgICAgICAgICAgICBvcy5ybWRpcihzdWIyMV9wYXRoKQogICAgICAgICAgICAgZGVsIHNlbGYuc3ViMl90cmVlWzFdWzoxXQogCiAgICAgZGVmIHRlc3Rfd2Fsa190b3Bkb3duKHNlbGYpOgpAQCAtOTA0LDEwICs5MjYsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMiArIGZsaXBwZWRdLCAoc2VsZi5zdWIxMV9wYXRoLCBbXSwgW10pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszIC0gMiAqIGZsaXBwZWRdLCBzZWxmLnN1YjJfdHJlZSkKIAotICAgIGRlZiB0ZXN0X3dhbGtfcHJ1bmUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmLCB3YWxrX3BhdGg9Tm9uZSk6CisgICAgICAgIGlmIHdhbGtfcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgd2Fsa19wYXRoID0gc2VsZi53YWxrX3BhdGgKICAgICAgICAgIyBQcnVuZSB0aGUgc2VhcmNoLgogICAgICAgICBhbGwgPSBbXQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHNlbGYud2Fsa19wYXRoKToKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIHNlbGYud2Fsayh3YWxrX3BhdGgpOgogICAgICAgICAgICAgYWxsLmFwcGVuZCgocm9vdCwgZGlycywgZmlsZXMpKQogICAgICAgICAgICAgIyBEb24ndCBkZXNjZW5kIGludG8gU1VCMS4KICAgICAgICAgICAgIGlmICdTVUIxJyBpbiBkaXJzOgpAQCAtOTE2LDE3ICs5NDAsMjAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi53YWxrX3BhdGgsIFsiU1VCMiJdLCBbInRtcDEiXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cih3YWxrX3BhdGgpLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQogCiAgICAgICAgIGFsbFsxXVstMV0uc29ydCgpCiAgICAgICAgIGFsbFsxXVsxXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHNlbGYuc3ViMl90cmVlKQogCisgICAgZGVmIHRlc3RfZmlsZV9saWtlX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWxrX3BydW5lKF9QYXRoTGlrZShzZWxmLndhbGtfcGF0aCkpCisKICAgICBkZWYgdGVzdF93YWxrX2JvdHRvbV91cChzZWxmKToKICAgICAgICAgIyBXYWxrIGJvdHRvbS11cC4KICAgICAgICAgYWxsID0gbGlzdChzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgsIHRvcGRvd249RmFsc2UpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQsIGFsbCkKICAgICAgICAgIyBXZSBjYW4ndCBrbm93IHdoaWNoIG9yZGVyIFNVQjEgYW5kIFNVQjIgd2lsbCBhcHBlYXIgaW4uCiAgICAgICAgICMgTm90IGZsaXBwZWQ6ICBTVUIxMSwgU1VCMSwgU1VCMiwgVEVTVEZOCiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCkBAIC05NTcsMjQgKzk4NCw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZG4ndCBmb2xsb3cgc3ltbGluayB3aXRoIGZvbGxvd2xpbmtzPVRydWUiKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIFRlYXIgZXZlcnl0aGluZyBkb3duLiAgVGhpcyBpcyBhIGRlY2VudCB1c2UgZm9yIGJvdHRvbS11cCBvbgotICAgICAgICAjIFdpbmRvd3MsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHJlY3Vyc2l2ZSBkZWxldGUgY29tbWFuZC4gIFRoZQotICAgICAgICAjIChub3Qgc28pIHN1YnRsZXR5IGlzIHRoYXQgcm1kaXIgd2lsbCBmYWlsIHVubGVzcyB0aGUgZGlyJ3MKLSAgICAgICAgIyBraWRzIGFyZSByZW1vdmVkIGZpcnN0LCBzbyBib3R0b20gdXAgaXMgZXNzZW50aWFsLgotICAgICAgICBpZiBzZWxmLnN1YjIxX3BhdGg6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihyb290LCBuYW1lKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhkaXJuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGlybmFtZSkKLSAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgdGVzdF93YWxrX2JhZF9kaXIoc2VsZik6CiAgICAgICAgICMgV2FsayB0b3AtZG93bi4KICAgICAgICAgZXJyb3JzID0gW10KQEAgLTEwNjIsMjkgKzEwNzEsMTEgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgY2xlYW51cAotICAgICAgICBpZiBzZWxmLnN1YjIxX3BhdGg6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogY2xhc3MgQnl0ZXNXYWxrVGVzdHMoV2Fsa1Rlc3RzKToKICAgICAiIiJUZXN0cyBmb3Igb3Mud2FsaygpIHdpdGggYnl0ZXMuIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKICAgICAgICAgc2VsZi5zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKLSAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgotICAgICAgICAgICAgc2VsZi5zdGFjay5lbnRlcl9jb250ZXh0KHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkpCi0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zdGFjay5jbG9zZSgpCkBAIC0xMjYxLDggKzEyNTIsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSkKICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYSkpCkBAIC0xMjczLDggKzEyNjMsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgIG9zLnJlbW92ZWRpcnMoZGlyYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQpAQCAtMTI4NCw3ICsxMjczLDcgQEAKIAogY2xhc3MgRGV2TnVsbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3YicsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGInaGVsbG8nKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAncmInKSBhcyBmOgpAQCAtMTMwMSw2ICsxMjkwLDcgQEAKIAogICAgIGRlZiB0ZXN0X3VyYW5kb21fdmFsdWUoc2VsZik6CiAgICAgICAgIGRhdGExID0gb3MudXJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGExLCBieXRlcykKICAgICAgICAgZGF0YTIgPSBvcy51cmFuZG9tKDE2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKIApAQCAtMTMyMSw2ICsxMzExLDQ5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRyYW5kb20nKSwgJ25lZWQgb3MuZ2V0cmFuZG9tKCknKQorY2xhc3MgR2V0UmFuZG9tVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmdldHJhbmRvbSgxKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRU5PU1lTOgorICAgICAgICAgICAgICAgICMgUHl0aG9uIGNvbXBpbGVkIG9uIGEgbW9yZSByZWNlbnQgTGludXggdmVyc2lvbgorICAgICAgICAgICAgICAgICMgdGhhbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2V0cmFuZG9tKCkgc3lzY2FsbCBmYWlscyB3aXRoIEVOT1NZUyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fdHlwZShzZWxmKToKKyAgICAgICAgZGF0YSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb20wKHNlbGYpOgorICAgICAgICBlbXB0eSA9IG9zLmdldHJhbmRvbSgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVtcHR5LCBiJycpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fcmFuZG9tKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvcywgJ0dSTkRfUkFORE9NJykpCisKKyAgICAgICAgIyBEb24ndCB0ZXN0IG9zLmdldHJhbmRvbSgxLCBvcy5HUk5EX1JBTkRPTSkgdG8gbm90IGNvbnN1bWUgdGhlIHJhcmUKKyAgICAgICAgIyByZXNvdXJjZSAvZGV2L3JhbmRvbQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX25vbmJsb2NrKHNlbGYpOgorICAgICAgICAjIFRoZSBjYWxsIG11c3Qgbm90IGZhaWwuIENoZWNrIGFsc28gdGhhdCB0aGUgZmxhZyBleGlzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfTk9OQkxPQ0spCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAjIFN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV92YWx1ZShzZWxmKToKKyAgICAgICAgZGF0YTEgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIGRhdGEyID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKKworCiAjIG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIGl0IGlzIGltcGxlbWVudGVkIHdpdGggdGhlCiAjIGdldGVudHJvcHkoKSBmdW5jdGlvbiwgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIG9yIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsCiBPU19VUkFORE9NX0RPTlRfVVNFX0ZEID0gKApAQCAtMTM3MSw5ICsxNDA0LDkgQEAKICAgICBkZWYgdGVzdF91cmFuZG9tX2ZkX3Jlb3BlbmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMTIwNzogdXJhbmRvbSgpIHNob3VsZCBkZXRlY3QgaXRzIGZkIHRvIC9kZXYvdXJhbmRvbQogICAgICAgICAjIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCByZW9wZW4gaXQuCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYiJ4IiAqIDI1NikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIngiICogMjU2KQorCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCkBAIC0xMzkwLDcgKzE0MjMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCiAgICAgICAgICAgICB3aXRoIG9wZW4oe1RFU1RGTiFyfSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgICAgICBvcy5kdXAyKGYuZmlsZW5vKCksIGZkKQorICAgICAgICAgICAgICAgIG5ld19mZCA9IGYuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICAjIElzc3VlICMyNjkzNTogcG9zaXggYWxsb3dzIG5ld19mZCBhbmQgZmQgdG8gYmUgZXF1YWwgYnV0CisgICAgICAgICAgICAgICAgIyBzb21lIGxpYmMgaW1wbGVtZW50YXRpb25zIGhhdmUgZHVwMiByZXR1cm4gYW4gZXJyb3IgaW4gdGhpcworICAgICAgICAgICAgICAgICMgY2FzZS4KKyAgICAgICAgICAgICAgICBpZiBuZXdfZmQgIT0gZmQ6CisgICAgICAgICAgICAgICAgICAgIG9zLmR1cDIobmV3X2ZkLCBmZCkKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShvcy51cmFuZG9tKDQpKQogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCiAgICAgICAgICAgICAiIiIuZm9ybWF0KFRFU1RGTj1zdXBwb3J0LlRFU1RGTikKQEAgLTE0MzUsNiArMTQ3Myw3IEBACiAgICAgICAgIG9zLmV4ZWN2ZSA9IG9yaWdfZXhlY3ZlCiAgICAgICAgIG9zLmRlZnBhdGggPSBvcmlnX2RlZnBhdGgKIAorCiBjbGFzcyBFeGVjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYoVVNJTkdfTElOVVhUSFJFQURTLAogICAgICAgICAgICAgICAgICAgICAgImF2b2lkIHRyaWdnZXJpbmcgYSBsaW51eHRocmVhZHMgYnVnOiBzZWUgaXNzdWUgIzQ5NzAiKQpAQCAtMTQ0Miw4ICsxNDgxLDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmV4ZWN2cGUsICdubyBzdWNoIGFwcC0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbJ25vIHN1Y2ggYXBwLSddLCBOb25lKQogCisgICAgZGVmIHRlc3RfZXhlY3Zfd2l0aF9iYWRfYXJnbGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3YsICdub3RlcGFkJywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLmV4ZWN2LCAnbm90ZXBhZCcsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdiwgJ25vdGVwYWQnLCAoJycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3YsICdub3RlcGFkJywgWycnXSkKKwogICAgIGRlZiB0ZXN0X2V4ZWN2cGVfd2l0aF9iYWRfYXJnbGlzdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3ZwZSwgJ25vdGVwYWQnLCBbXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3ZwZSwgJ25vdGVwYWQnLCBbXSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLmV4ZWN2cGUsICdub3RlcGFkJywgWycnXSwge30pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnX2V4ZWN2cGUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gaW50ZXJuYWwgb3MuX2V4ZWN2cGUgZnVuY3Rpb24gdG8gdGVzdC4iKQpAQCAtMTUwMiw2ICsxNTQ5LDE4IEBACiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIGV4aXN0cyA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4aXN0cyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdDsgb3Muc3RhdCBmYWlsZWQgd2l0aCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChzdXBwb3J0LlRFU1RGTiwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdCIgJSBzdXBwb3J0LlRFU1RGTikKKwogICAgIGRlZiB0ZXN0X3JlbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVuYW1lLCBzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4rIi5iYWsiKQogCkBAIC0xNTEyLDEyICsxNTcxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X21rZGlyKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKQotICAgICAgICB0cnk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAieCIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5ta2Rpciwgc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy51dGltZSwgc3VwcG9ydC5URVNURk4sIE5vbmUpCkBAIC0xNTI1LDYgKzE1ODIsNyBAQAogICAgIGRlZiB0ZXN0X2NobW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaG1vZCwgc3VwcG9ydC5URVNURk4sIDApCiAKKwogY2xhc3MgVGVzdEludmFsaWRGRCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2luZ2xlcyA9IFsiZmNoZGlyIiwgImR1cCIsICJmZG9wZW4iLCAiZmRhdGFzeW5jIiwgImZzdGF0IiwKICAgICAgICAgICAgICAgICJmc3RhdHZmcyIsICJmc3luYyIsICJ0Y2dldHBncnAiLCAidHR5bmFtZSJdCkBAIC0xNjM2LDEyICsxNjk0LDkgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKIAogICAgIGRlZiBfdGVzdF9saW5rKHNlbGYsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKLSAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCiAKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInIiKSBhcyBmMSwgb3BlbihmaWxlMiwgInIiKSBhcyBmMjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVvcGVuZmlsZShmMS5maWxlbm8oKSwgZjIuZmlsZW5vKCkpKQogCkBAIC0xOTMyLDYgKzE5ODcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSwKQEAgLTE5NDUsNiArMjAwMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHBhdGggPSBiJ1xcXFw/XFwnICsgb3MuZnNlbmNvZGUob3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIwMjQsNTEgKzIwODEsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChsaW5rKSwgb3Muc3RhdChsaW5rKSkKIAogICAgICAgICBieXRlc19saW5rID0gb3MuZnNlbmNvZGUobGluaykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQogCiAgICAgZGVmIHRlc3RfMTIwODQoc2VsZik6CiAgICAgICAgIGxldmVsMSA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgbGV2ZWwyID0gb3MucGF0aC5qb2luKGxldmVsMSwgImxldmVsMiIpCiAgICAgICAgIGxldmVsMyA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsZXZlbDMiKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGxldmVsMSkKKworICAgICAgICBvcy5ta2RpcihsZXZlbDEpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMikKKyAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKworICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMikKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKKyAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKIAotICAgICAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKIAotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiZmlsZTEiKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKIAotICAgICAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKLSAgICAgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQotICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5mYWlsKGVycikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZmlsZTEpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGxldmVsMSkKKyAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjEwNiw3ICsyMTU1LDcgQEAKIGNsYXNzIE5vbkxvY2FsU3ltbGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiCisgICAgICAgIHIiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgc3RydWN0dXJlOgogCiAgICAgICAgIGJhc2UKQEAgLTIxNzcsMTEgKzIyMjYsMTM3IEBACiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCi0gICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgIyBBZGQgYW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTQ29udmVydGVyKCkuCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgX1BhdGhMaWtlKGFyZ3NbMF0pLCBhcmdzKQogICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIChwaWQsIDApKQogCiAKK2NsYXNzIFNwYXduVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfYXJncyhzZWxmLCAqLCB3aXRoX2Vudj1GYWxzZSwgdXNlX2J5dGVzPUZhbHNlKToKKyAgICAgICAgc2VsZi5leGl0Y29kZSA9IDE3CisKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGlmIG5vdCB3aXRoX2VudjoKKyAgICAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgc3lzLmV4aXQoJXMpJyAlIHNlbGYuZXhpdGNvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICAgICAgIyBjcmVhdGUgYW4gdW5pcXVlIGtleQorICAgICAgICAgICAgc2VsZi5rZXkgPSBzdHIodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgc2VsZi5lbnZbc2VsZi5rZXldID0gc2VsZi5rZXkKKyAgICAgICAgICAgICMgcmVhZCB0aGUgdmFyaWFibGUgZnJvbSBvcy5lbnZpcm9uIHRvIGNoZWNrIHRoYXQgaXQgZXhpc3RzCisgICAgICAgICAgICBjb2RlID0gKCdpbXBvcnQgc3lzLCBvczsgbWFnaWMgPSBvcy5lbnZpcm9uWyVyXTsgc3lzLmV4aXQoJXMpJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmtleSwgc2VsZi5leGl0Y29kZSkpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKworICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBmaWxlbmFtZV0KKyAgICAgICAgaWYgdXNlX2J5dGVzOgorICAgICAgICAgICAgYXJncyA9IFtvcy5mc2VuY29kZShhKSBmb3IgYSBpbiBhcmdzXQorICAgICAgICAgICAgc2VsZi5lbnYgPSB7b3MuZnNlbmNvZGUoayk6IG9zLmZzZW5jb2RlKHYpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmVudi5pdGVtcygpfQorCisgICAgICAgIHJldHVybiBhcmdzCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sJykKKyAgICBkZWYgdGVzdF9zcGF3bmwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmwob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scCcpCisgICAgZGVmIHRlc3Rfc3Bhd25scChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwZScpCisgICAgZGVmIHRlc3Rfc3Bhd25scGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9zcGF3bnYoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnYob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnAnKQorICAgIGRlZiB0ZXN0X3NwYXdudnAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwZScpCisgICAgZGVmIHRlc3Rfc3Bhd252cGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cGUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X25vd2FpdChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHJlc3VsdCA9IG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgcGlkKQorICAgICAgICBzdGF0dXMgPSByZXN1bHRbMV0KKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ1dJRkVYSVRFRCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLldJRkVYSVRFRChzdGF0dXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5XRVhJVFNUQVRVUyhzdGF0dXMpLCBzZWxmLmV4aXRjb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIHNlbGYuZXhpdGNvZGUgPDwgOCkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgYnl0ZXMgaGFuZGxpbmcgaW4gcGFyc2VfYXJnbGlzdCBhbmQgcGFyc2VfZW52bGlzdCAoIzI4MTE0KQorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlLCB1c2VfYnl0ZXM9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sJykKKyAgICBkZWYgdGVzdF9zcGF3bmxfbm9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdubCwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdubCwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0sICcnKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubGUnKQorICAgIGRlZiB0ZXN0X3NwYXdubGVfbm9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdubGUsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd25sZSwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0sICcnLCB7fSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X3NwYXdudl9ub2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd252LCBvcy5QX05PV0FJVCwgYXJnc1swXSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudiwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0sIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnYsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCAoJycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd252LCBvcy5QX05PV0FJVCwgYXJnc1swXSwgWycnXSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlX25vYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnZlLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgKCksIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnZlLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgW10sIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnZlLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgKCcnLCksIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnZlLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgWycnXSwge30pCisKICMgVGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIFRlc3RDYXNlIGNhdXNlZCBhdCBsZWFzdCB0d28gZGlmZmVyZW50IGVycm9ycyBvbgogIyAqbml4IGJ1aWxkYm90cy4gVGVtcG9yYXJpbHkgc2tpcCB0aGlzIHRvIGxldCB0aGUgYnVpbGRib3RzIG1vdmUgYWxvbmcuCiBAdW5pdHRlc3Quc2tpcCgiU2tpcCBkdWUgdG8gcGxhdGZvcm0vZW52aXJvbm1lbnQgZGlmZmVyZW5jZXMgb24gKk5JWCBidWlsZGJvdHMiKQpAQCAtMjIwNCw4ICsyMzc5LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQogICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCi0gICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInVuYWJsZSB0byByZWxpYWJseSB0ZXN0IHNldHByaW9yaXR5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjMxNSw4ICsyNDkwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMua2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgY2xzLkRBVEEpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQ2NiwxMCArMjY0MCwxMSBAQAogICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKICAgICAgICAgZmlsZV9kYXRhID0gYiJhYmNkZWYiCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShmaWxlX2RhdGEpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKWFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVEZOMikKKyAgICAgICAgY3JlYXRlX2ZpbGUoVEVTVEZOMiwgZmlsZV9kYXRhKQorCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKSBhcyBmOgogICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIGxlbihmaWxlX2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNCJdKQogICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQpAQCAtMjQ5MiwzNSArMjY2NywzNyBAQAogZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKICAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CiAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ4YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgotICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCi0gICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworICAgIHJldHVybiBUcnVlCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCitAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDM5KQogY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotCiAgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgogICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmbikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZm4pCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiIiLCAqKmt3YXJncykKICAgICAgICAgeGF0dHIgPSBzZXQoaW5pdF94YXR0cikKICAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QiKQpAQCAtMjUyOCwxOSArMjcwNSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYnllIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQpAQCAtMjU1MywxMSArMjczNSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgc2V0KGluaXRfeGF0dHIpIHwgc2V0KG1hbnkpKQogCiAgICAgZGVmIF9jaGVja194YXR0cnMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgZGVmIG1ha2VfYnl0ZXMocyk6Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZXMocywgImFzY2lpIikKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihzdHIsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIobWFrZV9ieXRlcywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIob3MuZnNlbmNvZGUsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLApAQCAtMjU3MiwxMCArMjc1NCwxMCBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIHJldHVybiBvcy5nZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiBzZXR4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgcmVtb3ZleGF0dHIocGF0aCwgKmFyZ3MpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZXhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIGxpc3R4YXR0cihwYXRoLCAqYXJncyk6CiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CkBAIC0yNTgzLDQzICsyNzY1LDYgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKIAogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKLWNsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICBpbXBvcnQgbnQKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCi0gICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAotICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKLSAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAotICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCi0gICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCi0KLSAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCi0gICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKLQotCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKIGNsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgpAQCAtMjY4Miw2ICsyODI3LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kZWQgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGVuY29kZWQpCisgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChieXRlYXJyYXkoZW5jb2RlZCkpCiAgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChtZW1vcnl2aWV3KGVuY29kZWQpKQogCiAgICAgICAgIHNlbGYuZmlsZW5hbWVzID0gc2VsZi5ieXRlc19maWxlbmFtZXMgKyBzZWxmLnVuaWNvZGVfZmlsZW5hbWVzCkBAIC0yNzAyLDE2ICsyODQ4LDcgQEAKICAgICAgICAgICAgICAgICAoc2VsZi5ieXRlc19maWxlbmFtZXMsIG9zLnJlcGxhY2UsIGIiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlbmFtZSwgImRzdCIpLAogICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCAiZHN0IiksCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTY0MTQ6IERvbid0IHRlc3QgdW5kZWNvZGFibGUgbmFtZXMgd2l0aCBsaXN0ZGlyKCkKLSAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSBXaW5kb3dzIGJ1Zy4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBXaXRoIHRoZSBBTlNJIGNvZGUgcGFnZSA5MzIsIG9zLmxpc3RkaXIoYidceGU3JykgcmV0dXJuIGFuCi0gICAgICAgICAgICAgICAgIyBlbXB0eSBsaXN0IChpbnN0ZWFkIG9mIGZhaWxpbmcpLCB3aGVyZWFzIG9zLmxpc3RkaXIoYidceGZmJykKLSAgICAgICAgICAgICAgICAjIHJhaXNlcyBhIEZpbGVOb3RGb3VuZEVycm9yLiBJdCBsb29rcyBsaWtlIGEgV2luZG93cyBidWc6Ci0gICAgICAgICAgICAgICAgIyBiJ1x4ZTcnIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgRmluZEZpcnN0RmlsZUEoYidceGU3JykKLSAgICAgICAgICAgICAgICAjIGZhaWxzIHdpdGggRVJST1JfRklMRV9OT1RfRk9VTkQgKDIpLCBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAoMykuCi0gICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpc3RkaXIsKSwKKyAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwgKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmdW5jcy5leHRlbmQoKApAQCAtMjc1MiwxMiArMjg4OSwxOSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5yZWFkbGluaywpKQogCisKICAgICAgICAgZm9yIGZpbGVuYW1lcywgZnVuYywgKmZ1bmNfYXJncyBpbiBmdW5jczoKICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAnc2hvdWxkIGJlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXJyLmZpbGVuYW1lLCBuYW1lLCBzdHIoZnVuYykpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biBieSB7fSIuZm9ybWF0KGZ1bmMpKQogCkBAIC0yODU1LDYgKzI5OTksNjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoc2xhdmVfZmQpLCBGYWxzZSkKIAogCitjbGFzcyBQYXRoVENvbnZlcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHR1cGxlcyBvZiAoZnVuY3Rpb24gbmFtZSwgYWxsb3dzIGZkIGFyZ3VtZW50cywgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8KKyAgICAjIGZ1bmN0aW9uLCBjbGVhbnVwIGZ1bmN0aW9uKQorICAgIGZ1bmN0aW9ucyA9IFsKKyAgICAgICAgKCdzdGF0JywgVHJ1ZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2xzdGF0JywgRmFsc2UsICgpLCBOb25lKSwKKyAgICAgICAgKCdhY2Nlc3MnLCBGYWxzZSwgKG9zLkZfT0ssKSwgTm9uZSksCisgICAgICAgICgnY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdsY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdvcGVuJywgRmFsc2UsICgwLCksIGdldGF0dHIob3MsICdjbG9zZScsIE5vbmUpKSwKKyAgICBdCisKKyAgICBkZWYgdGVzdF9wYXRoX3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBzdHJfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBieXRlc19maWxlbmFtZSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4uZW5jb2RlKCdhc2NpaScpCisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBfUGF0aExpa2UoYnl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZkID0gb3Mub3BlbihfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKSwgb3MuT19XUk9OTFl8b3MuT19DUkVBVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKworICAgICAgICBpbnRfZnNwYXRoID0gX1BhdGhMaWtlKGZkKQorICAgICAgICBzdHJfZnNwYXRoID0gX1BhdGhMaWtlKHN0cl9maWxlbmFtZSkKKworICAgICAgICBmb3IgbmFtZSwgYWxsb3dfZmQsIGV4dHJhX2FyZ3MsIGNsZWFudXBfZm4gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIChzdHJfZmlsZW5hbWUsIGJ5dGVzX2ZpbGVuYW1lLCBzdHJfZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19mc3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUsIHBhdGg9cGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihwYXRoLCAqZXh0cmFfYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcycpOgorICAgICAgICAgICAgICAgICAgICBmbihpbnRfZnNwYXRoLCAqZXh0cmFfYXJncykKKworICAgICAgICAgICAgICAgIGlmIGFsbG93X2ZkOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihmZCwgKmV4dHJhX2FyZ3MpICAjIHNob3VsZCBub3QgZmFpbAorICAgICAgICAgICAgICAgICAgICBpZiBjbGVhbnVwX2ZuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3MuUGF0aExpa2UnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuKGZkLCAqZXh0cmFfYXJncykKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X2Jsb2NraW5nJyksCiAgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpJykKIGNsYXNzIEJsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjg3OCwxNSArMzA3OSwxOCBAQAogCiAKIGNsYXNzIFRlc3RTY2FuZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjaGVja19ub19yZXNvdXJjZV93YXJuaW5nID0gc3VwcG9ydC5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYnl0ZXNfcGF0aCA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnBhdGgpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGF0aCkKIAogICAgIGRlZiBjcmVhdGVfZmlsZShzZWxmLCBuYW1lPSJmaWxlLnR4dCIpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiJ3B5dGhvbicpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGIncHl0aG9uJykKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZ2V0X2VudHJpZXMoc2VsZiwgbmFtZXMpOgpAQCAtMjkwOSw2ICszMTEzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdDEsIHN0YXQyKQogCiAgICAgZGVmIGNoZWNrX2VudHJ5KHNlbGYsIGVudHJ5LCBuYW1lLCBpc19kaXIsIGlzX2ZpbGUsIGlzX3N5bWxpbmspOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZW50cnksIG9zLkRpckVudHJ5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkucGF0aCwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaW5vZGUoKSwKQEAgLTI5NzQsMTUgKzMxNzksMTYgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIFRydWUpCiAKICAgICBkZWYgZ2V0X2VudHJ5KHNlbGYsIG5hbWUpOgotICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHNlbGYucGF0aCkpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihwYXRoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEpCiAKICAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgcmV0dXJuIGVudHJ5CiAKLSAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZik6Ci0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgZGVmIGNyZWF0ZV9maWxlX2VudHJ5KHNlbGYsIG5hbWU9J2ZpbGUudHh0Jyk6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZShuYW1lPW5hbWUpCiAgICAgICAgIHJldHVybiBzZWxmLmdldF9lbnRyeShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2N1cnJlbnRfZGlyZWN0b3J5KHNlbGYpOgpAQCAtMzAwMyw2ICszMjA5LDE4IEBACiAgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlbnRyeSksICI8RGlyRW50cnkgJ2ZpbGUudHh0Jz4iKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzcGF0aChlbnRyeSksIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdmaWxlLnR4dCcpKQorCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sX2J5dGVzKHNlbGYpOgorICAgICAgICBieXRlc19maWxlbmFtZSA9IG9zLmZzZW5jb2RlKCdieXRlc2ZpbGUudHh0JykKKyAgICAgICAgYnl0ZXNfZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KG5hbWU9Ynl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZzcGF0aCA9IG9zLmZzcGF0aChieXRlc19lbnRyeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZzcGF0aCwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShzZWxmLnBhdGgpLGJ5dGVzX2ZpbGVuYW1lKSkKKwogICAgIGRlZiB0ZXN0X3JlbW92ZWRfZGlyKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2RpcicpCiAKQEAgLTMwNjYsMTEgKzMyODQsNiBAQAogICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzKHNlbGYpOgotICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICAjIE9uIFdpbmRvd3MsIG9zLnNjYW5kaXIoYnl0ZXMpIG11c3QgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIGInLicpCi0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCiAKICAgICAgICAgcGF0aF9ieXRlcyA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKQEAgLTMxMDAsNiArMzMxMywxMTIgQEAKICAgICAgICAgZm9yIG9iaiBpbiBbMTIzNCwgMS4yMzQsIHt9LCBbXV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIG9iaikKIAorICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIGl0ZXJhdG9yLmNsb3NlKCkKKyAgICAgICAgIyBtdWx0aXBsZSBjbG9zZXMKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggb3Muc2NhbmRpcihzZWxmLnBhdGgpIGFzIGl0ZXJhdG9yOgorICAgICAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlX3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJlc291cmNlV2FybmluZyk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICMgZXhoYXVzdGVkIGl0ZXJhdG9yCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworCitjbGFzcyBUZXN0UEVQNTE5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgQWJzdHJhY3RlZCBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbiB0byB0ZXN0IHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uCisgICAgIyBpZiBhIEMgdmVyc2lvbiBpcyBwcm92aWRlZC4KKyAgICBmc3BhdGggPSBzdGF0aWNtZXRob2Qob3MuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX2J5dGVzKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiBiJ2hlbGxvJywgYidnb29kYnllJywgYidzb21lL3BhdGgvYW5kL2ZpbGUnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLmZzcGF0aChiKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9zdHJpbmcoc2VsZik6CisgICAgICAgIGZvciBzIGluICdoZWxsbycsICdnb29kYnllJywgJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNlbGYuZnNwYXRoKHMpKQorCisgICAgZGVmIHRlc3RfZnNlbmNvZGVfZnNkZWNvZGUoc2VsZik6CisgICAgICAgIGZvciBwIGluICJwYXRoL2xpa2Uvb2JqZWN0IiwgYiJwYXRoL2xpa2Uvb2JqZWN0IjoKKyAgICAgICAgICAgIHBhdGhsaWtlID0gX1BhdGhMaWtlKHApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgc2VsZi5mc3BhdGgocGF0aGxpa2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2VuY29kZShwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwYXRoL2xpa2Uvb2JqZWN0Iiwgb3MuZnNkZWNvZGUocGF0aGxpa2UpKQorCisgICAgZGVmIHRlc3RfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyNmZWVsdGhlZ2lsJywgc2VsZi5mc3BhdGgoX1BhdGhMaWtlKCcjZmVlbHRoZWdpbCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoX1BhdGhMaWtlLCBvcy5QYXRoTGlrZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKF9QYXRoTGlrZSgpLCBvcy5QYXRoTGlrZSkpCisKKyAgICBkZWYgdGVzdF9nYXJiYWdlX2luX2V4Y2VwdGlvbl9vdXQoc2VsZik6CisgICAgICAgIHZhcG9yID0gdHlwZSgnYmxhaCcsICgpLCB7fSkKKyAgICAgICAgZm9yIG8gaW4gaW50LCB0eXBlLCBvcywgdmFwb3IoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIG8pCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudF9yZXF1aXJlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJldHVybnMgYSB2YWx1ZSBvdGhlciB0aGFuIHN0ciBvciBieXRlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgX1BhdGhMaWtlKDQyKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIGF0dHJpYnV0ZSB0aGF0IGlzIG5vdCBjYWxsYWJsZS4KKyAgICAgICAgYyA9IHR5cGUoJ2ZvbycsICgpLCB7fSkKKyAgICAgICAgYy5fX2ZzcGF0aF9fID0gMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBjKCkpCisgICAgICAgICMgX19mc3BhdGhfXyByYWlzZXMgYW4gZXhjZXB0aW9uLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9QYXRoTGlrZShaZXJvRGl2aXNpb25FcnJvcigpKSkKKworIyBPbmx5IHRlc3QgaWYgdGhlIEMgdmVyc2lvbiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIFRlc3RQRVA1MTkgYWxyZWFkeSB0ZXN0ZWQKKyMgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgoraWYgaGFzYXR0cihvcywgIl9mc3BhdGgiKToKKyAgICBjbGFzcyBUZXN0UEVQNTE5UHVyZVB5dGhvbihUZXN0UEVQNTE5KToKKworICAgICAgICAiIiJFeHBsaWNpdGx5IHRlc3QgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIG9zLmZzcGF0aCgpLiIiIgorCisgICAgICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5fZnNwYXRoKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGFiNjU3N2YuLmQ2ZTZmNzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHBhcnNlcgogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTM5LDYgKzEzOCw0NSBAQAogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhID0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiID0gYyA9IGQgPSBlIikKIAorICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieDogaW50ID0gNSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoInk6IExpc3RbVF0gPSBbXTsgejogW2xpc3RdID0gZnVuKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiB0dXBsZSA9ICgxLCAyKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRbZigpXTogaW50ID0gNDIiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJmKGRbeF0pOiBzdHIgPSAnYWJjJyIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIngueS56Lnc6IGNvbXBsZXggPSA0MmoiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBzZWxmLng6IGludCA9IHhcbiIpCisgICAgICAgICMgZG91YmxlIGNoZWNrIGZvciBub25zZW5zZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIjIrMjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIltdOiBpbnQgPSA1Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngsICp5LCB6OiBpbnQgPSByYW5nZSg1KSIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ0OiB0dXBsZSA9IDEsIDIiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygidSA9IHY6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJGYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInguRmFsc2U6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ4LnksOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiWzBdOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiZigpOiBpbnQiLCB7fSwge30pCisKICAgICBkZWYgdGVzdF9zaW1wbGVfYXVnbWVudGVkX2Fzc2lnbm1lbnRzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhICs9IGIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhIC09IGIiKQpAQCAtNjMzLDEyICs2NzEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCiAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiAoJ2ZpbGUucHknLCBiJ2ZpbGUucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKSk6CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiAnZmlsZS5weScsIGInZmlsZS5weSc6CiAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGFyc2VyLmNvbXBpbGVzdCwgc3QsIGxpc3QoYidmaWxlLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3QuY29tcGlsZSwgbGlzdChiJ2ZpbGUucHknKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CmluZGV4IGZhOTZkOWYuLmNlMWNhMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2FuZHJvaWRfbm90X3Jvb3QgPSBzdXBwb3J0LmFuZHJvaWRfbm90X3Jvb3QKIFRFU1RGTiA9IHN1cHBvcnQuVEVTVEZOCiAKIHRyeToKQEAgLTE5MCwxMyArMTkxLDE4IEBACiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUCgnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBQKQorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAiYS9iL2MiCiAgICAgICAgIFAoJ2EnLCAnYicsICdjJykKICAgICAgICAgUCgnL2EnLCAnYicsICdjJykKICAgICAgICAgUCgnYS9iL2MnKQogICAgICAgICBQKCcvYS9iL2MnKQorICAgICAgICBQKFBhdGhMaWtlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJykpLCBQKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksICdiJyksIFAoJ2EvYicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJykpLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpLCBQKCdjJykpLCBQKFBhdGhMaWtlKCkpKQogCiAgICAgZGVmIF9jaGVja19zdHJfc3ViY2xhc3Moc2VsZiwgKmFyZ3MpOgogICAgICAgICAjIElzc3VlICMyMTEyNzogaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBhIFB1cmVQYXRoIG9iamVjdApAQCAtMzg0LDYgKzM5MCwxMiBAQAogICAgICAgICBwYXJ0cyA9IHAucGFydHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0cywgKHNlcCwgJ2EnLCAnYicpKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2InKQorICAgICAgICBzZWxmLl9jaGVja19zdHIocC5fX2ZzcGF0aF9fKCksICgnYS9iJywpKQorICAgICAgICBzZWxmLl9jaGVja19zdHIob3MuZnNwYXRoKHApLCAoJ2EvYicsKSkKKwogICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlcyhzZWxmKToKICAgICAgICAgZm9yIGssIHR1cGxlcyBpbiBzZWxmLmVxdWl2YWxlbmNlcy5pdGVtcygpOgogICAgICAgICAgICAgY2Fub24gPSBrLnJlcGxhY2UoJy8nLCBzZWxmLnNlcCkKQEAgLTE0NzQsMjEgKzE0ODYsMzAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCJkaXJBLy4uL2ZpbGUqIikpLCB7IFAoQkFTRSwgImRpckEvLi4vZmlsZUEiKSB9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoIi4uL3h5enp5IikpLCBzZXQoKSkKIAotICAgIGRlZiBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShzZWxmLCBwLCBleHBlY3RlZCk6Ci0gICAgICAgIHEgPSBwLnJlc29sdmUoKQorCisgICAgZGVmIF9jaGVja19yZXNvbHZlKHNlbGYsIHAsIGV4cGVjdGVkLCBzdHJpY3Q9VHJ1ZSk6CisgICAgICAgIHEgPSBwLnJlc29sdmUoc3RyaWN0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX2Fic29sdXRlKHNlbGYsIHAsIGV4cGVjdGVkKToKLSAgICAgICAgcSA9IHAucmVzb2x2ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCisgICAgIyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlIHJlc29sdXRpb25zCisgICAgX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUgPSBfY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZSA9IF9jaGVja19yZXNvbHZlCiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfY29tbW9uKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgcCA9IFAoQkFTRSwgJ2ZvbycpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBwLnJlc29sdmUoKQorICAgICAgICAgICAgcC5yZXNvbHZlKHN0cmljdD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZXNvbHZlKHN0cmljdD1GYWxzZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykpCisgICAgICAgIHAgPSBQKEJBU0UsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHAucmVzb2x2ZShzdHJpY3Q9RmFsc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oQkFTRSwgJ2ZvbycpKQorICAgICAgICBwID0gUChCQVNFLCAnLi4nLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0PUZhbHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbignZm9vJykpKQogICAgICAgICAjIFRoZXNlIGFyZSBhbGwgcmVsYXRpdmUgc3ltbGlua3MKICAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKQogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIHApCkBAIC0xNDk4LDYgKzE1MTksMTggQEAKICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykpCiAgICAgICAgIHAgPSBQKEJBU0UsICdkaXJCJywgJ2xpbmtEJywgJ2ZpbGVCJykKICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBwID0gUChCQVNFLCAnZGlyQScsICdsaW5rQycsICdmaWxlQicsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGlyQicsICdmaWxlQicsICdmb28nKSwgRmFsc2UpCisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtDJywgJy4uJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgIyBJbiBXaW5kb3dzLCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckFcbGlua1lcLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJBJyB3aXRob3V0IHJlc29sdmluZyBsaW5rWSBmaXJzdC4KKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGlyQScsICdmb28nKSwgRmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEluIFBvc2l4LCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckEvbGlua1kvLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJCLy4uJyBmaXJzdCBiZWZvcmUgcmVzb2x2aW5nIHRvIHBhcmVudCBvZiBkaXJCLgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdmb28nKSwgRmFsc2UpCiAgICAgICAgICMgTm93IGNyZWF0ZSBhYnNvbHV0ZSBzeW1saW5rcwogICAgICAgICBkID0gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9Jy1kaXJEJykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBkKQpAQCAtMTUwNSw2ICsxNTM4LDE4IEBACiAgICAgICAgIG9zLnN5bWxpbmsoam9pbignZGlyQicpLCBvcy5wYXRoLmpvaW4oZCwgJ2xpbmtZJykpCiAgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xpbmtZJywgJ2ZpbGVCJykKICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBwID0gUChCQVNFLCAnZGlyQScsICdsaW5rWCcsICdsaW5rWScsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGlyQicsICdmb28nKSwgRmFsc2UpCisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xpbmtZJywgJy4uJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgIyBJbiBXaW5kb3dzLCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckFcbGlua1lcLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJBJyB3aXRob3V0IHJlc29sdmluZyBsaW5rWSBmaXJzdC4KKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChkLCAnZm9vJyksIEZhbHNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJbiBQb3NpeCwgaWYgbGlua1kgcG9pbnRzIHRvIGRpckIsICdkaXJBL2xpbmtZLy4uJworICAgICAgICAgICAgIyByZXNvbHZlcyB0byAnZGlyQi8uLicgZmlyc3QgYmVmb3JlIHJlc29sdmluZyB0byBwYXJlbnQgb2YgZGlyQi4KKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZm9vJyksIEZhbHNlKQogCiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9yZXNvbHZlX2RvdChzZWxmKToKQEAgLTE1MTQsNyArMTU1OSwxMSBAQAogICAgICAgICBzZWxmLmRpcmxpbmsob3MucGF0aC5qb2luKCcwJywgJzAnKSwgam9pbignMScpKQogICAgICAgICBzZWxmLmRpcmxpbmsob3MucGF0aC5qb2luKCcxJywgJzEnKSwgam9pbignMicpKQogICAgICAgICBxID0gcCAvICcyJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEucmVzb2x2ZSgpLCBwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEucmVzb2x2ZShzdHJpY3Q9VHJ1ZSksIHApCisgICAgICAgIHIgPSBxIC8gJzMnIC8gJzQnCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnJlc29sdmUsIHN0cmljdD1UcnVlKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnJlc29sdmUoc3RyaWN0PUZhbHNlKSwgcCAvICczJykKIAogICAgIGRlZiB0ZXN0X3dpdGgoc2VsZik6CiAgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQpAQCAtMTgxNiw2ICsxODY1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdmaWxlQScgLyAnYmFoJykuaXNfZmlmbygpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgIm1rZmlmbyIpLCAib3MubWtmaWZvKCkgcmVxdWlyZWQiKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3RfaXNfZmlmb190cnVlKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMoQkFTRSwgJ215ZmlmbycpCiAgICAgICAgIG9zLm1rZmlmbyhzdHIoUCkpCkBAIC0xODM4LDcgKzE4ODgsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLmJpbmQoc3RyKFApKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIgaW4gc3RyKGUpOgorICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoZSwgUGVybWlzc2lvbkVycm9yKSBvcgorICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIiBpbiBzdHIoZSkpOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBiaW5kIFVuaXggc29ja2V0OiAiICsgc3RyKGUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoUC5pc19zb2NrZXQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQLmlzX2ZpZm8oKSkKQEAgLTE5NjEsMTAgKzIwMTIsMTAgQEAKIGNsYXNzIFBvc2l4UGF0aFRlc3QoX0Jhc2VQYXRoVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNscyA9IHBhdGhsaWIuUG9zaXhQYXRoCiAKLSAgICBkZWYgX2NoZWNrX3N5bWxpbmtfbG9vcChzZWxmLCAqYXJncyk6CisgICAgZGVmIF9jaGVja19zeW1saW5rX2xvb3Aoc2VsZiwgKmFyZ3MsIHN0cmljdD1UcnVlKToKICAgICAgICAgcGF0aCA9IHNlbGYuY2xzKCphcmdzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICBwcmludChwYXRoLnJlc29sdmUoKSkKKyAgICAgICAgICAgIHByaW50KHBhdGgucmVzb2x2ZShzdHJpY3QpKQogCiAgICAgZGVmIHRlc3Rfb3Blbl9tb2RlKHNlbGYpOgogICAgICAgICBvbGRfbWFzayA9IG9zLnVtYXNrKDApCkBAIC0xOTk3LDcgKzIwNDgsNiBAQAogCiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9yZXNvbHZlX2xvb3Aoc2VsZik6Ci0gICAgICAgICMgTG9vcCBkZXRlY3Rpb24gZm9yIGJyb2tlbiBzeW1saW5rcyB1bmRlciBQT1NJWAogICAgICAgICAjIExvb3BzIHdpdGggcmVsYXRpdmUgc3ltbGlua3MKICAgICAgICAgb3Muc3ltbGluaygnbGlua1gvaW5zaWRlJywgam9pbignbGlua1gnKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWCcpCkBAIC0yMDA1LDYgKzIwNTUsOCBAQAogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtZJykKICAgICAgICAgb3Muc3ltbGluaygnbGlua1ovLi4vbGlua1onLCBqb2luKCdsaW5rWicpKQogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtaJykKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1onLCAnZm9vJywgc3RyaWN0PUZhbHNlKQogICAgICAgICAjIExvb3BzIHdpdGggYWJzb2x1dGUgc3ltbGlua3MKICAgICAgICAgb3Muc3ltbGluayhqb2luKCdsaW5rVS9pbnNpZGUnKSwgam9pbignbGlua1UnKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVScpCkBAIC0yMDEyLDYgKzIwNjQsOCBAQAogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtWJykKICAgICAgICAgb3Muc3ltbGluayhqb2luKCdsaW5rVy8uLi9saW5rVycpLCBqb2luKCdsaW5rVycpKQogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtXJykKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1cnLCAnZm9vJywgc3RyaWN0PUZhbHNlKQogCiAgICAgZGVmIHRlc3RfZ2xvYihzZWxmKToKICAgICAgICAgUCA9IHNlbGYuY2xzCkBAIC0yMDI5LDYgKzIwODMsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpdmVuLCBleHBlY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAucmdsb2IoIkZJTEVkKiIpKSwgc2V0KCkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHB3ZCwgJ2dldHB3YWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3B3ZCBtb2R1bGUgZG9lcyBub3QgZXhwb3NlIGdldHB3YWxsKCknKQogICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3B3ZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BkYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CmluZGV4IDY2YTdiNTUuLjBlYTJhZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CkBAIC0xLDYgKzEsNyBAQAogIyBBIHRlc3Qgc3VpdGUgZm9yIHBkYjsgbm90IHZlcnkgY29tcHJlaGVuc2l2ZSBhdCB0aGUgbW9tZW50LgogCiBpbXBvcnQgZG9jdGVzdAoraW1wb3J0IG9zCiBpbXBvcnQgcGRiCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKQEAgLTM0LDcgKzM1LDcgQEAKICAgICAiIiJUaGlzIHRlc3RzIHRoZSBjdXN0b20gZGlzcGxheWhvb2sgZm9yIHBkYi4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbihmb28sIGJhcik6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHBhc3MKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC03NCw3ICs3NSw3IEBACiAgICAgLi4uICAgICByZXR1cm4gZm9vLnVwcGVyKCkKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgLi4uICAgICBwcmludChyZXQpCiAKQEAgLTE3Myw3ICsxNzQsNyBAQAogICAgICIiIlRlc3QgYmFzaWMgY29tbWFuZHMgcmVsYXRlZCB0byBicmVha3BvaW50cy4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBwcmludCgxKQogICAgIC4uLiAgICAgcHJpbnQoMikKICAgICAuLi4gICAgIHByaW50KDMpCkBAIC0zMDUsNyArMzA2LDcgQEAKICAgICAuLi4gICAgIHJldHVybiBmb28KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWyAgIyBkb2N0ZXN0OiArRUxMSVBTSVMsICtOT1JNQUxJWkVfV0hJVEVTUEFDRQpAQCAtMzI4LDcgKzMyOSw3IEBACiAgICAgLT4gcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIChQZGIpIGxpc3QKICAgICAgIDEgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgMyAgLT4gICAgICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgW0VPRl0KICAgICAoUGRiKSBzdGVwCkBAIC0zOTEsNyArMzkyLDcgQEAKICAgICAuLi4gICAgICAgICBwcmludCgnRXhjZXB0aW9uIScpCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHByaW50KCdOb3QgcmVhY2hlZC4nKQogCkBAIC00MjQsNyArNDI1LDcgQEAKICAgICAtPiAxLzAKICAgICAoUGRiKSBsaXN0CiAgICAgICAxICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgIDMgIC0+ICAgICAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAgIDQgICAgICAgICAgICAgcHJpbnQoJ05vdCByZWFjaGVkLicpCiAgICAgW0VPRl0KQEAgLTQ0OCw3ICs0NDksNyBAQAogCiAgICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgIC4uLiAgICAgaW1wb3J0IHN0cmluZwotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnc3RyaSonXSwgbm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmkqJ10sIG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHN0cmluZy5jYXB3b3JkcygnRk9PJykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC00NzcsNyArNDc4LDcgQEAKICAgICA+Pj4gZGVmIHNraXBfbW9kdWxlKCk6CiAgICAgLi4uICAgICBkZWYgY2FsbGJhY2soKToKICAgICAuLi4gICAgICAgICByZXR1cm4gTm9uZQotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnbW9kdWxlX3RvX3NraXAqJ10sIG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSwgbm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgbW9kLmZvb19wb255KGNhbGxiYWNrKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTUxOCw3ICs1MTksNyBAQAogICAgICIiIlRlc3QgdGhhdCAiY29udGludWUiIGFuZCAibmV4dCIgd29yayBwcm9wZXJseSBpbiBib3R0b20gZnJhbWUgKGlzc3VlICM1Mjk0KS4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYiwgc3lzOyBpbnN0ID0gcGRiLlBkYihub3NpZ2ludD1UcnVlKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYiwgc3lzOyBpbnN0ID0gcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpCiAgICAgLi4uICAgICBpbnN0LnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpbnN0LmJvdGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpICAjIGhhY2tlcnkgdG8gZ2V0IHRoZSByaWdodCBib3RmcmFtZQogICAgIC4uLiAgICAgcHJpbnQoMSkKQEAgLTU1OCw4ICs1NTksNyBAQAogCiBkZWYgcGRiX2ludm9rZShtZXRob2QsIGFyZyk6CiAgICAgIiIiUnVuIHBkYi5tZXRob2QoYXJnKS4iIiIKLSAgICBpbXBvcnQgcGRiCi0gICAgZ2V0YXR0cihwZGIuUGRiKG5vc2lnaW50PVRydWUpLCBtZXRob2QpKGFyZykKKyAgICBnZXRhdHRyKHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKSwgbWV0aG9kKShhcmcpCiAKIAogZGVmIHRlc3RfcGRiX3J1bl93aXRoX2luY29ycmVjdF9hcmd1bWVudCgpOgpAQCAtNjA4LDcgKzYwOCw3IEBACiAgICAgLi4uICAgICB4ID0gMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKQEAgLTY3NCw3ICs2NzQsNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGl0ID0gdGVzdF9nZW4oKQogICAgIC4uLiAgICAgdHJ5OgogICAgIC4uLiAgICAgICAgIGlmIG5leHQoaXQpICE9IDA6CkBAIC03MzQsNyArNzM0LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpdCA9IHRlc3RfZ2VuKCkKICAgICAuLi4gICAgIHRyeToKICAgICAuLi4gICAgICAgICBpZiBuZXh0KGl0KSAhPSAwOgpAQCAtNzg5LDcgKzc4OSw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludChpKQogICAgIC4uLiAgICAgcHJpbnQoImZpbmlzaGVkIikKQEAgLTgzMSw3ICs4MzEsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIDEKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KCd2YWx1ZScsIGkpCiAgICAgLi4uICAgICB4ID0gMTIzCkBAIC04NzYsNyArODc2LDcgQEAKICAgICAuLi4gICAgIHJldHVybiB4CiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludCgndmFsdWUnLCBpKQogICAgIC4uLiAgICAgeCA9IDEyMwpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKICAgICAgICAgICAgICAgICBpbXBvcnQgcGRiCiAKICAgICAgICAgICAgICAgICBkZWYgc3RhcnRfcGRiKCk6Ci0gICAgICAgICAgICAgICAgICAgIHBkYi5QZGIoKS5zZXRfdHJhY2UoKQorICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgICAgICAgICAgICAgICAgeCA9IDEKICAgICAgICAgICAgICAgICAgICAgeSA9IDEKIApAQCAtMTA3OCw2ICsxMDc4LDM4IEBACiAgICAgICAgICAgICAuZm9ybWF0KGV4cGVjdGVkLCBzdGRvdXQpKQogCiAKKyAgICBkZWYgdGVzdF9yZWFkcmNfa3dhcmcoc2VsZik6CisgICAgICAgIHNjcmlwdCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQorCisgICAgICAgICAgICBwcmludCgnaGVsbG8nKQorICAgICAgICAiIiIpCisKKyAgICAgICAgc2F2ZV9ob21lID0gb3MuZW52aXJvbi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJy5wZGJyYycsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiaW52YWxpZFxuIikKKworICAgICAgICAgICAgICAgIHdpdGggb3BlbignbWFpbi5weScsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzY3JpcHQpCisKKyAgICAgICAgICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICdtYWluLnB5J10KKyAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICAgICAgY21kLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHdpdGggcHJvYzoKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKGIncVxuJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiTmFtZUVycm9yOiBuYW1lICdpbnZhbGlkJyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LmRlY29kZSgpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzYXZlX2hvbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnSE9NRSddID0gc2F2ZV9ob21lCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDQxZTUwOTEuLmIwMzM2NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGRpcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gbWF0aCBpbXBvcnQgY29weXNpZ24KIAogZnJvbSB0ZXN0LmJ5dGVjb2RlX2hlbHBlciBpbXBvcnQgQnl0ZWNvZGVUZXN0Q2FzZQogCkBAIC0zMCwyMiArMjksMjUgQEAKIAogICAgIGRlZiB0ZXN0X2dsb2JhbF9hc19jb25zdGFudChzZWxmKToKICAgICAgICAgIyBMT0FEX0dMT0JBTCBOb25lL1RydWUvRmFsc2UgIC0tPiAgTE9BRF9DT05TVCBOb25lL1RydWUvRmFsc2UKLSAgICAgICAgZGVmIGYoeCk6Ci0gICAgICAgICAgICBOb25lCi0gICAgICAgICAgICBOb25lCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB4ID0gTm9uZQorICAgICAgICAgICAgeCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBnKHgpOgotICAgICAgICAgICAgVHJ1ZQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeCA9IFRydWUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBoKHgpOgotICAgICAgICAgICAgRmFsc2UKKyAgICAgICAgZGVmIGgoKToKKyAgICAgICAgICAgIHggPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHgKKwogICAgICAgICBmb3IgZnVuYywgZWxlbSBpbiAoKGYsIE5vbmUpLCAoZywgVHJ1ZSksIChoLCBGYWxzZSkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfQ09OU1QnLCBlbGVtKQorCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAnQWRkaW5nIGEgZG9jc3RyaW5nIG1hZGUgdGhpcyB0ZXN0IGZhaWwgaW4gUHkyLjUuMCcKICAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShmLCAnTE9BRF9DT05TVCcsIE5vbmUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxN2NlZWQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0iIiIKLVRlc3Qgc3VpdGUgdG8gY2hlY2sgY29tcGxpYW5jZSB3aXRoIFBFUCAyNDcsIHRoZSBzdGFuZGFyZCBBUEkKLWZvciBoYXNoaW5nIGFsZ29yaXRobXMKLSIiIgotCi1pbXBvcnQgaG1hYwotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGhhc2hsaWIgaW1wb3J0IG1kNSwgc2hhMSwgc2hhMjI0LCBzaGEyNTYsIHNoYTM4NCwgc2hhNTEyCi0KLWNsYXNzIFBlcDI0N1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIGNoZWNrX21vZHVsZShzZWxmLCBtb2R1bGUsIGtleT1Ob25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnZGlnZXN0X3NpemUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZS5kaWdlc3Rfc2l6ZSBpcyBOb25lIG9yIG1vZHVsZS5kaWdlc3Rfc2l6ZSA+IDApCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KG1vZHVsZS5uZXcsIG1vZHVsZS5kaWdlc3Rfc2l6ZSwga2V5KQotCi0gICAgZGVmIGNoZWNrX29iamVjdChzZWxmLCBjbHMsIGRpZ2VzdF9zaXplLCBrZXksIGRpZ2VzdG1vZD1Ob25lKToKLSAgICAgICAgaWYga2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGlnZXN0bW9kID0gbWQ1Ci0gICAgICAgICAgICBvYmoxID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBoMSA9IGNscyhrZXksIGInc3RyaW5nJywgZGlnZXN0bW9kPWRpZ2VzdG1vZCkuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoa2V5LCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvYmoxID0gY2xzKCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoYidzdHJpbmcnKQotICAgICAgICAgICAgaDEgPSBjbHMoYidzdHJpbmcnKS5kaWdlc3QoKQotICAgICAgICAgICAgb2JqMyA9IGNscygpCi0gICAgICAgICAgICBvYmozLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgICAgICBoMiA9IG9iajMuZGlnZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iajEsICdkaWdlc3Rfc2l6ZScpKQotCi0gICAgICAgIGlmIGRpZ2VzdF9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBkaWdlc3Rfc2l6ZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0X3NpemUsIGxlbihoMSkpCi0gICAgICAgIG9iajEudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgb2JqX2NvcHkgPSBvYmoxLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0KCksIG9ial9jb3B5LmRpZ2VzdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuaGV4ZGlnZXN0KCksIG9ial9jb3B5LmhleGRpZ2VzdCgpKQotCi0gICAgICAgIGRpZ2VzdCwgaGV4ZGlnZXN0ID0gb2JqMS5kaWdlc3QoKSwgb2JqMS5oZXhkaWdlc3QoKQotICAgICAgICBoZDIgPSAiIgotICAgICAgICBmb3IgYnl0ZSBpbiBkaWdlc3Q6Ci0gICAgICAgICAgICBoZDIgKz0gJyUwMngnICUgYnl0ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhkMiwgaGV4ZGlnZXN0KQotCi0gICAgZGVmIHRlc3RfbWQ1KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtZDUsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9zaGEoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTEsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTIyNCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMjU2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEzODQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTUxMiwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X2htYWMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlKGhtYWMsIGtleT1iJ2FiYycpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IGQ0NjdkNTIuLmU2YzVkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0zNCw4ICszNCw2IEBACiAKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAoSW5kZXhFcnJvciwpCi0gICAgYmFkX21hcmtfZXJyb3JzID0gKEluZGV4RXJyb3IsIHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEVPRkVycm9yKQogICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5lcnJvciwgSW5kZXhFcnJvciwgSW1wb3J0RXJyb3IpCkBAIC03MCw4ICs2OCw2IEBACiAgICAgcGlja2xlciA9IHBpY2tsZS5fUGlja2xlcgogICAgIHVucGlja2xlciA9IHBpY2tsZS5fVW5waWNrbGVyCiAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtMTQzLDkgKzEzOSw3IEBACiAgICAgY2xhc3MgQ1VucGlja2xlclRlc3RzKFB5VW5waWNrbGVyVGVzdHMpOgogICAgICAgICB1bnBpY2tsZXIgPSBfcGlja2xlLlVucGlja2xlcgogICAgICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQotICAgICAgICBiYWRfbWFya19lcnJvcnMgPSAoRU9GRXJyb3IsKQotICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKQorICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQogCiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTM0MSw2ICszMzUsOSBAQAogICAgICAgICAgICAgICAgIGlmIChtb2R1bGUyLCBuYW1lMikgPT0gKCdleGNlcHRpb25zJywgJ09TRXJyb3InKToKICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgT1NFcnJvcikpCisgICAgICAgICAgICAgICAgZWxpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cmlidXRlKG1vZHVsZTMsIG5hbWUzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhdHRyLCBJbXBvcnRFcnJvcikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCBuYW1lID0gbWFwcGluZyhtb2R1bGUyLCBuYW1lMikKICAgICAgICAgICAgICAgICAgICAgaWYgbW9kdWxlM1s6MV0gIT0gJ18nOgpAQCAtNDA3LDYgKzQwNCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgT1NFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpKQorICAgICAgICAgICAgICAgIGVsaWYgZXhjIGlzIG5vdCBJbXBvcnRFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIEltcG9ydEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZygnZXhjZXB0aW9ucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKaW5kZXggYmJlNjg3NS4uODZiZWJmYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CkBAIC0xLDkgKzEsOSBAQAotaW1wb3J0IHN0cnVjdAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHBpY2tsZXRvb2xzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPcHRpbWl6ZWRQaWNrbGVUZXN0cyhBYnN0cmFjdFBpY2tsZVRlc3RzLCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzKToKIApAQCAtNTksOCArNTksNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihwaWNrbGUuQklOUFVULCBwaWNrbGVkMikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydieXRlc190eXBlcycsCisgICAgICAgICAgICAgICAgICAgICAnVVBfVE9fTkVXTElORScsICdUQUtFTl9GUk9NX0FSR1VNRU5UMScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDQnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDRVJywKKyAgICAgICAgICAgICAgICAgICAgICdUQUtFTl9GUk9NX0FSR1VNRU5UOFUnLCAnQXJndW1lbnREZXNjcmlwdG9yJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQxJywgJ3JlYWRfdWludDInLCAncmVhZF9pbnQ0JywgJ3JlYWRfdWludDQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdWludDgnLCAncmVhZF9zdHJpbmdubCcsICdyZWFkX3N0cmluZ25sX25vZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAncmVhZF9zdHJpbmcxJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZzQnLCAncmVhZF9ieXRlczEnLCAncmVhZF9ieXRlczQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfYnl0ZXM4JywgJ3JlYWRfdW5pY29kZXN0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmcxJywgJ3JlYWRfdW5pY29kZXN0cmluZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdW5pY29kZXN0cmluZzgnLCAncmVhZF9kZWNpbWFsbmxfc2hvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfZGVjaW1hbG5sX2xvbmcnLCAncmVhZF9mbG9hdG5sJywgJ3JlYWRfZmxvYXQ4JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2xvbmcxJywgJ3JlYWRfbG9uZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3VpbnQxJywgJ3VpbnQyJywgJ2ludDQnLCAndWludDQnLCAndWludDgnLCAnc3RyaW5nbmwnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ25sX25vZXNjYXBlJywgJ3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAnc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nNCcsICdieXRlczEnLCAnYnl0ZXM0JywgJ2J5dGVzOCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZ25sJywgJ3VuaWNvZGVzdHJpbmcxJywgJ3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1bmljb2Rlc3RyaW5nOCcsICdkZWNpbWFsbmxfc2hvcnQnLCAnZGVjaW1hbG5sX2xvbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2Zsb2F0bmwnLCAnZmxvYXQ4JywgJ2xvbmcxJywgJ2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdTdGFja09iamVjdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlpbnQnLCAncHlsb25nJywgJ3B5aW50ZWdlcl9vcl9ib29sJywgJ3B5Ym9vbCcsICdweWZsb2F0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWJ5dGVzX29yX3N0cicsICdweXN0cmluZycsICdweWJ5dGVzJywgJ3B5dW5pY29kZScsCisgICAgICAgICAgICAgICAgICAgICAncHlub25lJywgJ3B5dHVwbGUnLCAncHlsaXN0JywgJ3B5ZGljdCcsICdweXNldCcsCisgICAgICAgICAgICAgICAgICAgICAncHlmcm96ZW5zZXQnLCAnYW55b2JqZWN0JywgJ21hcmtvYmplY3QnLCAnc3RhY2tzbGljZScsCisgICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlSW5mbycsICdvcGNvZGVzJywgJ2NvZGUyb3AnLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwaWNrbGV0b29scywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoT3B0aW1pemVkUGlja2xlVGVzdHMpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xldG9vbHMpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggNmE3YjQ1Zi4uYWQwMWQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzaHV0aWwKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgdW5saW5rLCByZWFwX2NoaWxkcmVuCiAKIGlmIG9zLm5hbWUgIT0gJ3Bvc2l4JzoKQEAgLTE4LDYgKzE5LDggQEAKICAgICAgICAgICAgIHVubGluayhmKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMShzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgdC5hcHBlbmQoc19jb21tYW5kLCBwaXBlcy5TVERJTl9TVERPVVQpCiAgICAgICAgIGYgPSB0Lm9wZW4oVEVTVEZOLCAndycpCkBAIC0yNyw2ICszMCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnSEVMTE8gV09STEQgIzEnKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMihzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnaGVsbG8gd29ybGQgIzInKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQpAQCAtMzYsNiArNDEsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMyJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTMoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCBhODIwNTg3Li5mYzA0ZGNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC04MSw4ICs4MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzMiwgUkVTT1VSQ0VfREFUQSkKIAogICAgICAgICBuYW1lcyA9IFtdCi0gICAgICAgIGZvciBsb2FkZXIsIG5hbWUsIGlzcGtnIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgotICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCisgICAgICAgIGZvciBtb2R1bGVpbmZvIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8sIHBrZ3V0aWwuTW9kdWxlSW5mbykKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZXMsIFsndGVzdF9nZXRkYXRhX3ppcGZpbGUnXSkKIAogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTQxMyw2ICs0MTQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihfX25hbWVfXyA9PSAnX19tYWluX18nLCAnbm90IGNvbXBhdGlibGUgd2l0aCBfX21haW5fXycpCiAgICAgZGVmIHRlc3RfZ2V0X2xvYWRlcl9oYW5kbGVzX21pc3NpbmdfbG9hZGVyX2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgZ2xvYmFsIF9fbG9hZGVyX18KICAgICAgICAgdGhpc19sb2FkZXIgPSBfX2xvYWRlcl9fCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCAxOGRlMTEwLi41Zjg3NWVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKSknXQogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgcmV0dXJuIHAuY29tbXVuaWNhdGUoKQorCiAgICAgICAgIHJlYWwgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQogICAgICAgICBsaW5rID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBvcy5zeW1saW5rKHJlYWwsIGxpbmspCkBAIC0yNjIsNyArMjYzLDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzM4LDcgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCA2OTJjYWM0Li5jNzdhNmJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKQEAgLTUzNCw4ICs1MzMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXIsIGluX2RhdGEpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiUGxpc3RGb3JtYXQiLCAiUExJU1RIRUFERVIifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwbGlzdGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFBsaXN0bGliLCBUZXN0UGxpc3RsaWJEZXByZWNhdGVkKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCwgTWlzY1Rlc3RDYXNlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGJjZWViOTMuLmU1YjE2ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC04LDcgKzgsNiBAQAogaW1wb3J0IGFzeW5jaGF0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBVbmxlc3MKQEAgLTE1MywxMCArMTUyLDEyIEBACiAgICAgICAgIGRlZiBjbWRfc3RscyhzZWxmLCBhcmcpOgogICAgICAgICAgICAgaWYgc2VsZi50bHNfYWN0aXZlIGlzIEZhbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnK09LIEJlZ2luIFRMUyBuZWdvdGlhdGlvbicpCi0gICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIGNlcnRmaWxlPUNFUlRGSUxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICB0bHNfc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQodGxzX3NvY2spCiAgICAgICAgICAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggMmE1OWMzOC4uMDI5ZDA4MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC0xLDYgKzEsNyBAQAogIlRlc3QgcG9zaXggZnVuY3Rpb25zIgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2FuZHJvaWRfbm90X3Jvb3QgPSBzdXBwb3J0LmFuZHJvaWRfbm90X3Jvb3QKIAogIyBTa2lwIHRoZXNlIHRlc3RzIGlmIHRoZXJlIGlzIG5vIHBvc2l4IG1vZHVsZS4KIHBvc2l4ID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdwb3NpeCcpCkBAIC0xMSw3ICsxMiw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zOTgsNyArMzk4LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGZsb2F0KGZwLmZpbGVubygpKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZwLmNsb3NlKCkKQEAgLTQwOCwxOSArNDA4LDIyIEBACiAgICAgZGVmIHRlc3Rfc3RhdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChieXRlYXJyYXkob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdjYW5cJ3Qgc3BlY2lmeSBOb25lIGZvciBwYXRoIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ21rZmlmbycpLCAiZG9uJ3QgaGF2ZSBta2ZpZm8oKSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtmaWZvIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9ta2ZpZm8oc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBwb3NpeC5ta2ZpZm8oc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUikKQEAgLTQyOCw2ICs0MzEsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ21rbm9kJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1NfSUZJRk8nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgaGF2ZSBta25vZCgpL1NfSUZJRk8iKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rbm9kIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9ta25vZChzZWxmKToKICAgICAgICAgIyBUZXN0IHVzaW5nIG1rbm9kKCkgdG8gY3JlYXRlIGEgRklGTyAodGhlIG9ubHkgdXNlIHNwZWNpZmllZAogICAgICAgICAjIGJ5IFBPU0lYKS4KQEAgLTc5OCw3ICs4MDIsMTEgQEAKICAgICAgICAgICAgIGdyb3VwcyA9IGlkZy5yZWFkKCkuc3RyaXAoKQogICAgICAgICAgICAgcmV0ID0gaWRnLmNsb3NlKCkKIAotICAgICAgICBpZiByZXQgaXMgbm90IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWRnX2dyb3VwcyA9IHNldChpbnQoZykgZm9yIGcgaW4gZ3JvdXBzLnNwbGl0KCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgaWRnX2dyb3VwcyA9IHNldCgpCisgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgaWRnX2dyb3VwczoKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJuZWVkIHdvcmtpbmcgJ2lkIC1HJyIpCiAKICAgICAgICAgIyBJc3N1ZXMgMTY2OTg6IE9TIFggQUJJcyBwcmlvciB0byAxMC42IGhhdmUgbGltaXRzIG9uIGdldGdyb3VwcygpCkBAIC04MDksMTIgKzgxNywxMSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZXRncm91cHMoMikgaXMgYnJva2VuIHByaW9yIHRvIDEwLjYiKQogCiAgICAgICAgICMgJ2lkIC1HJyBhbmQgJ29zLmdldGdyb3VwcygpJyBzaG91bGQgcmV0dXJuIHRoZSBzYW1lCi0gICAgICAgICMgZ3JvdXBzLCBpZ25vcmluZyBvcmRlciBhbmQgZHVwbGljYXRlcy4KLSAgICAgICAgIyAjMTA4MjIgLSBpdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHdoZXRoZXIgcG9zaXguZ2V0Z3JvdXBzKCkKLSAgICAgICAgIyBpbmNsdWRlcyB0aGUgZWZmZWN0aXZlIGdpZCBzbyB3ZSBpbmNsdWRlIGl0IGFueXdheSwgc2luY2UgaWQgLUcgZG9lcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNldChbaW50KHgpIGZvciB4IGluIGdyb3Vwcy5zcGxpdCgpXSksCi0gICAgICAgICAgICAgICAgc2V0KHBvc2l4LmdldGdyb3VwcygpICsgW3Bvc2l4LmdldGVnaWQoKV0pKQorICAgICAgICAjIGdyb3VwcywgaWdub3Jpbmcgb3JkZXIsIGR1cGxpY2F0ZXMsIGFuZCB0aGUgZWZmZWN0aXZlIGdpZC4KKyAgICAgICAgIyAjMTA4MjIvIzI2OTQ0IC0gSXQgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB3aGV0aGVyCisgICAgICAgICMgcG9zaXguZ2V0Z3JvdXBzKCkgaW5jbHVkZXMgdGhlIGVmZmVjdGl2ZSBnaWQuCisgICAgICAgIHN5bWRpZmYgPSBpZGdfZ3JvdXBzLnN5bW1ldHJpY19kaWZmZXJlbmNlKHBvc2l4LmdldGdyb3VwcygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHN5bWRpZmYgb3Igc3ltZGlmZiA9PSB7cG9zaXguZ2V0ZWdpZCgpfSkKIAogICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdwogCkBAIC04NjMsOSArODcwLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQogICAgICAgICAgICAgczIgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1wb3NpeC5nZXRjd2QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZmxvYXQoZikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPTEwKioyMCkKQEAgLTkwMyw2ICs5MTAsNyBAQAogICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5saW5rKCkiKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgImhhcmQgbGluayBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3RfbGlua19kaXJfZmQoc2VsZik6CiAgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKICAgICAgICAgdHJ5OgpAQCAtOTI2LDYgKzkzNCw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygob3MubWtub2QgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkKSBhbmQgaGFzYXR0cihzdGF0LCAnU19JRklGTycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IHJlcXVpcmVzIGJvdGggc3RhdC5TX0lGSUZPIGFuZCBkaXJfZmQgc3VwcG9ydCBmb3Igb3MubWtub2QoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtub2Qgbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X21rbm9kX2Rpcl9mZChzZWxmKToKICAgICAgICAgIyBUZXN0IHVzaW5nIG1rbm9kYXQoKSB0byBjcmVhdGUgYSBGSUZPICh0aGUgb25seSB1c2Ugc3BlY2lmaWVkCiAgICAgICAgICMgYnkgUE9TSVgpLgpAQCAtMTAwOSw2ICsxMDE4LDcgQEAKICAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5ta2ZpZm8gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5ta2ZpZm8oKSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtmaWZvIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9ta2ZpZm9fZGlyX2ZkKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKICAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCAwNzgzYzM2Li44YTFlMzNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtNTk2LDUgKzU5Niw4NSBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc2FtZWZpbGUnLCAnc2FtZW9wZW5maWxlJywgJ3NhbWVzdGF0J10KIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHBhdGggPSBwb3NpeHBhdGgKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVfbmFtZSwgJ3hiJywgMCkgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoYiJ0ZXN0X3Bvc2l4cGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtY2FzZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1jYXNlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2FicyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzYWJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9qb2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aC5qb2luKCdhJywgc2VsZi5QYXRoTGlrZSgnYicpLCAnYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5qb2luKCdhJywgJ2InLCAnYycpKQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZXh0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGRyaXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRkcml2ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5iYXNlbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZGlybmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmRpcm5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbGluayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbGluaykKKworICAgIGRlZiB0ZXN0X3BhdGhfbGV4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmxleGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbW91bnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc21vdW50KQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdXNlcikKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdmFycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHZhcnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybXBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Fic3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5hYnNwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWFscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlYWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgY29tbW9uX3BhdGggPSBzZWxmLnBhdGguY29tbW9ucGF0aChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb25fcGF0aCwgc2VsZi5maWxlX25hbWUpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvdy5weSBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CmluZGV4IGJhNjA4ZmIuLmNhYzFhZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBQb3dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCBlZjVlOTllLi4xNWY4OGU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMjc3LDcgKzI3Nyw2IEBACiAgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCiAKLSAgICAgICAgb3MuY2xvc2UobWFzdGVyc1sxXSkKICAgICAgICAgc29ja2V0cGFpclsxXS5jbG9zZSgpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlX3RvX3N0ZGluX2ZkKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKaW5kZXggMTkzMmM2Yi4uM2Q4OWUzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBpbwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgeG1sLnNheAogCiBmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wd2QucHkgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQppbmRleCBiN2IxYTRhLi5hYzljZmY3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B3ZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQpAQCAtNCwxMCArNCwxOSBAQAogCiBwd2QgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3B3ZCcpCiAKK2RlZiBfZ2V0cHdhbGwoKToKKyAgICAjIEFuZHJvaWQgZG9lcyBub3QgaGF2ZSBnZXRwd2FsbC4KKyAgICBpZiBoYXNhdHRyKHB3ZCwgJ2dldHB3YWxsJyk6CisgICAgICAgIHJldHVybiBwd2QuZ2V0cHdhbGwoKQorICAgIGVsaWYgaGFzYXR0cihwd2QsICdnZXRwd3VpZCcpOgorICAgICAgICByZXR1cm4gW3B3ZC5nZXRwd3VpZCgwKV0KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gW10KKwogY2xhc3MgUHdkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF92YWx1ZXMoc2VsZik6Ci0gICAgICAgIGVudHJpZXMgPSBwd2QuZ2V0cHdhbGwoKQorICAgICAgICBlbnRyaWVzID0gX2dldHB3YWxsKCkKIAogICAgICAgICBmb3IgZSBpbiBlbnRyaWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZSksIDcpCkBAIC0zMyw3ICs0Miw3IEBACiAgICAgICAgICAgICAjIGFuZCBjaGVjayBhZnRlcndhcmRzIChkb25lIGluIHRlc3RfdmFsdWVzX2V4dGVuZGVkKQogCiAgICAgZGVmIHRlc3RfdmFsdWVzX2V4dGVuZGVkKHNlbGYpOgotICAgICAgICBlbnRyaWVzID0gcHdkLmdldHB3YWxsKCkKKyAgICAgICAgZW50cmllcyA9IF9nZXRwd2FsbCgpCiAgICAgICAgIGVudHJpZXNieW5hbWUgPSB7fQogICAgICAgICBlbnRyaWVzYnl1aWQgPSB7fQogCkBAIC01NywxMiArNjYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwd2QuZ2V0cHd1aWQsIDMuMTQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHdkLmdldHB3bmFtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHB3ZC5nZXRwd25hbSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHdkLmdldHB3YWxsLCA0MikKKyAgICAgICAgaWYgaGFzYXR0cihwd2QsICdnZXRwd2FsbCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwd2QuZ2V0cHdhbGwsIDQyKQogCiAgICAgICAgICMgdHJ5IHRvIGdldCBzb21lIGVycm9ycwogICAgICAgICBieW5hbWVzID0ge30KICAgICAgICAgYnl1aWRzID0ge30KLSAgICAgICAgZm9yIChuLCBwLCB1LCBnLCBnZWNvcywgZCwgcykgaW4gcHdkLmdldHB3YWxsKCk6CisgICAgICAgIGZvciAobiwgcCwgdSwgZywgZ2Vjb3MsIGQsIHMpIGluIF9nZXRwd2FsbCgpOgogICAgICAgICAgICAgYnluYW1lc1tuXSA9IHUKICAgICAgICAgICAgIGJ5dWlkc1t1XSA9IG4KIApAQCAtOTYsMTMgKzEwNiwxNyBAQAogICAgICAgICAjIGxvb3AsIHNheSksIHB3ZC5nZXRwd3VpZCgpIG1pZ2h0IHN0aWxsIGJlIGFibGUgdG8gZmluZCBkYXRhIGZvciB0aGF0CiAgICAgICAgICMgdWlkLiBVc2luZyBzeXMubWF4aW50IG1heSBwcm92b2tlIHRoZSBzYW1lIHByb2JsZW1zLCBidXQgaG9wZWZ1bGx5CiAgICAgICAgICMgaXQgd2lsbCBiZSBhIG1vcmUgcmVwZWF0YWJsZSBmYWlsdXJlLgorICAgICAgICAjIEFuZHJvaWQgYWNjZXB0cyBhIHZlcnkgbGFyZ2Ugc3BhbiBvZiB1aWRzIGluY2x1ZGluZyBzeXMubWF4c2l6ZSBhbmQKKyAgICAgICAgIyAtMTsgaXQgcmFpc2VzIEtleUVycm9yIHdpdGggMSBvciAyIGZvciBleGFtcGxlLgogICAgICAgICBmYWtldWlkID0gc3lzLm1heHNpemUKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihmYWtldWlkLCBieXVpZHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIGZha2V1aWQpCisgICAgICAgIGlmIG5vdCBzdXBwb3J0LmlzX2FuZHJvaWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCBmYWtldWlkKQogCiAgICAgICAgICMgLTEgc2hvdWxkbid0IGJlIGEgdmFsaWQgdWlkIGJlY2F1c2UgaXQgaGFzIGEgc3BlY2lhbCBtZWFuaW5nIGluIG1hbnkKICAgICAgICAgIyB1aWQtcmVsYXRlZCBmdW5jdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgLTEpCisgICAgICAgIGlmIG5vdCBzdXBwb3J0LmlzX2FuZHJvaWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCAtMSkKICAgICAgICAgIyBzaG91bGQgYmUgb3V0IG9mIHVpZF90IHJhbmdlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIDIqKjEyOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgLTIqKjEyOCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggNmZmYmJiZC4uMmNmZjFjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTE1Niw5ICsxNTYsOSBAQAogICAgICAgICAjIFRoZXNlIHdlcmUgb25jZSBhYm91dCB0aGUgMTAgbG9uZ2VzdCBtb2R1bGVzCiAgICAgICAgIGNtKCdyYW5kb20nLCBpZ25vcmU9KCdSYW5kb20nLCkpICAjIGZyb20gX3JhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIENvcmVHZW5lcmF0b3IKICAgICAgICAgY20oJ2NnaScsIGlnbm9yZT0oJ2xvZycsKSkgICAgICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdwaWNrbGUnKQorICAgICAgICBjbSgncGlja2xlJywgaWdub3JlPSgncGFydGlhbCcsKSkKICAgICAgICAgY20oJ2FpZmMnLCBpZ25vcmU9KCdvcGVuZnAnLCAnX2FpZmNfcGFyYW1zJykpICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdzcmVfcGFyc2UnLCBpZ25vcmU9KCdkdW1wJywgJ2dyb3VwcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKKyAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJywgJ3BvcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKICAgICAgICAgY20oJ3BkYicpCiAgICAgICAgIGNtKCdweWRvYycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IDFmN2FiN2YuLmVkNDM4ZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtODQsNiArODQsOCBAQAogICAgICB8ICBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZToKICAgICAgfFx4MjBceDIwCiAgICAgIHwgIE5PX01FQU5JTkcgPSAnZWdncycKKyAgICAgfFx4MjBceDIwCisgICAgIHwgIF9fYW5ub3RhdGlvbnNfXyA9IHsnTk9fTUVBTklORyc6IDxjbGFzcyAnc3RyJz59CiBceDIwXHgyMFx4MjBceDIwCiAgICAgY2xhc3MgQyhidWlsdGlucy5vYmplY3QpCiAgICAgIHwgIE1ldGhvZHMgZGVmaW5lZCBoZXJlOgpAQCAtMTk2LDYgKzE5OCw4IEBACiBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZTo8YnI+CiA8ZGw+PGR0PjxzdHJvbmc+Tk9fTUVBTklORzwvc3Ryb25nPiA9ICdlZ2dzJzwvZGw+CiAKKzxkbD48ZHQ+PHN0cm9uZz5fX2Fubm90YXRpb25zX188L3N0cm9uZz4gPSB7J05PX01FQU5JTkcnOiAmbHQ7Y2xhc3MgJ3N0cicmZ3Q7fTwvZGw+CisKIDwvdGQ+PC90cj48L3RhYmxlPiA8cD4KIDx0YWJsZSB3aWR0aD0iMTAwJSUiIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MiBib3JkZXI9MCBzdW1tYXJ5PSJzZWN0aW9uIj4KIDx0ciBiZ2NvbG9yPSIjZmZjOGQ4Ij4KQEAgLTI2NCw3ICsyNjgsNyBAQAogVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJy5yZXBsYWNlKCdcbicsIG9zLmxpbmVzZXApCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCi1iYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKK2JhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBNb2R1bGVOb3RGb3VuZEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGV4cGVjdGVkX2R5bmFtaWNhdHRyaWJ1dGVfcGF0dGVybiA9ICIiIgogSGVscCBvbiBjbGFzcyBEQSBpbiBtb2R1bGUgJXM6CkBAIC02MzksOCArNjQzLDkgQEAKICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2RvY19fJ10KICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2NsYXNzX18nXQogICAgICAgICAjIGluc3BlY3QgcmVzb2x2ZXMgZGVzY3JpcHRvcnMgb24gdHlwZSBpbnRvIG1ldGhvZHMsIGJ1dCB2YXJzIGRvZXNuJ3QsCi0gICAgICAgICMgc28gd2UgbmVlZCB0byB1cGRhdGUgX19zdWJjbGFzc2hvb2tfXy4KKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fIGFuZCBfX2luaXRfc3ViY2xhc3NfXy4KICAgICAgICAgZXhwZWN0ZWRbJ19fc3ViY2xhc3Nob29rX18nXSA9IFRlc3RDbGFzcy5fX3N1YmNsYXNzaG9va19fCisgICAgICAgIGV4cGVjdGVkWydfX2luaXRfc3ViY2xhc3NfXyddID0gVGVzdENsYXNzLl9faW5pdF9zdWJjbGFzc19fCiAKICAgICAgICAgbWV0aG9kcyA9IHB5ZG9jLmFsbG1ldGhvZHMoVGVzdENsYXNzKQogICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChtZXRob2RzLCBleHBlY3RlZCkKQEAgLTg2OCw2ICs4NzMsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfc3VtbWFyeV9saW5lKHQud3JhcCksCiAgICAgICAgICAgICAid3JhcCh0ZXh0KSBtZXRob2Qgb2YgdGV4dHdyYXAuVGV4dFdyYXBwZXIgaW5zdGFuY2UiKQogCisgICAgZGVmIHRlc3RfZmllbGRfb3JkZXJfZm9yX25hbWVkX3R1cGxlcyhzZWxmKToKKyAgICAgICAgUGVyc29uID0gbmFtZWR0dXBsZSgnUGVyc29uJywgWyduaWNrbmFtZScsICdmaXJzdG5hbWUnLCAnYWdlZ3JvdXAnXSkKKyAgICAgICAgcyA9IHB5ZG9jLnJlbmRlcl9kb2MoUGVyc29uKQorICAgICAgICBzZWxmLmFzc2VydExlc3Mocy5pbmRleCgnbmlja25hbWUnKSwgcy5pbmRleCgnZmlyc3RuYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCdmaXJzdG5hbWUnKSwgcy5pbmRleCgnYWdlZ3JvdXAnKSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTm9uSGFzaGFibGVGaWVsZHM6CisgICAgICAgICAgICBfZmllbGRzID0gW1tdXQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoZXNlIGRvZXNuJ3QgZmFpbAorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkl0ZXJhYmxlRmllbGRzKQorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkhhc2hhYmxlRmllbGRzKQorCiAgICAgQHJlcXVpcmVzX2RvY3N0cmluZ3MKICAgICBkZWYgdGVzdF9ib3VuZF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgcyA9IFN0cmluZ0lPKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggN2NhYzAxMy4uNzE1NTQ0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHN5cywgb3MsIGlvLCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzLCBpbywgc3VicHJvY2VzcwogaW1wb3J0IHF1b3ByaQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggZTgwZWQxNy4uNWI2YTRmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogZnJvbSBtYXRoIGltcG9ydCBsb2csIGV4cCwgcGksIGZzdW0sIHNpbgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAogY2xhc3MgVGVzdEJhc2ljT3BzOgogICAgICMgU3VwZXJjbGFzcyB3aXRoIHRlc3RzIGNvbW1vbiB0byBhbGwgZ2VuZXJhdG9ycy4KQEAgLTEwOSw2ICsxMTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2VuLnNhbXBsZShbXSwgMCksIFtdKSAgIyB0ZXN0IGVkZ2UgY2FzZSBOPT1rPT0wCiAgICAgICAgICMgRXhjZXB0aW9uIHJhaXNlZCBpZiBzaXplIG9mIHNhbXBsZSBleGNlZWRzIHRoYXQgb2YgcG9wdWxhdGlvbgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmdlbi5zYW1wbGUsIHBvcHVsYXRpb24sIE4rMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5nZW4uc2FtcGxlLCBbXSwgLTEpCiAKICAgICBkZWYgdGVzdF9zYW1wbGVfZGlzdHJpYnV0aW9uKHNlbGYpOgogICAgICAgICAjIEZvciB0aGUgZW50aXJlIGFsbG93YWJsZSByYW5nZSBvZiAwIDw9IGsgPD0gTiwgdmFsaWRhdGUgdGhhdApAQCAtMTQxLDYgKzE0Myw4MyBAQAogICAgIGRlZiB0ZXN0X3NhbXBsZV9vbl9kaWN0cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zYW1wbGUsIGRpY3QuZnJvbWtleXMoJ2FiY2RlZicpLCAyKQogCisgICAgZGVmIHRlc3RfY2hvaWNlcyhzZWxmKToKKyAgICAgICAgY2hvaWNlcyA9IHNlbGYuZ2VuLmNob2ljZXMKKyAgICAgICAgZGF0YSA9IFsncmVkJywgJ2dyZWVuJywgJ2JsdWUnLCAneWVsbG93J10KKyAgICAgICAgc3RyX2RhdGEgPSAnYWJjZCcKKyAgICAgICAgcmFuZ2VfZGF0YSA9IHJhbmdlKDQpCisgICAgICAgIHNldF9kYXRhID0gc2V0KHJhbmdlKDQpKQorCisgICAgICAgICMgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICBmb3Igc2FtcGxlIGluIFsKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgaz01KSwKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgcmFuZ2UoNCksIGs9NSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCB3ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIGN1bV93ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNhbXBsZSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2FtcGxlKSwgbGlzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoc2FtcGxlKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgIyB0ZXN0IGFyZ3VtZW50IGhhbmRsaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtaXNzaW5nIGFyZ3VtZW50cworICAgICAgICAgICAgY2hvaWNlcygyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcyhkYXRhLCBrPTApLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBrID09IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKGRhdGEsIGs9LTEpLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZ2F0aXZlIGsgYmVoYXZlcyBsaWtlIGBgWzBdICogLTFgYAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGs9Mi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrIGlzIGEgZmxvYXQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoc3RyX2RhdGEsIGs9NSkpIDw9IHNldChzdHJfZGF0YSkpICAgICMgcG9wdWxhdGlvbiBpcyBhIHN0cmluZyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMocmFuZ2VfZGF0YSwgaz01KSkgPD0gc2V0KHJhbmdlX2RhdGEpKSAgIyBwb3B1bGF0aW9uIGlzIGEgcmFuZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhzZXRfZGF0YSwgaz0yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9wdWxhdGlvbiBpcyBub3QgYSBzZXF1ZW5jZQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCBOb25lLCBrPTUpKSA8PSBzZXQoZGF0YSkpICAgICAgIyB3ZWlnaHRzIGlzIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIHdlaWdodHM9Tm9uZSwgaz01KSkgPD0gc2V0KGRhdGEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBbMSwyXSwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGVuKHdlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIDEwLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyB3ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgd2VpZ2h0cworICAgICAgICAgICAgICAgIFsxNS4xLCAxMC4yLCAyNS4yLCAzMC4zXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmxvYXQgd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW1RydWUsIEZhbHNlLCBUcnVlLCBGYWxzZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBib29sZWFucyAoaW5jbHVkZSAvIGV4Y2x1ZGUpCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgd2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVsxLDJdLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9MTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSwgaz01KSAgICAgICAgICAgIyBib3RoIHdlaWdodHMgYW5kIGN1bV93ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgY3VtX3dlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIGN1bV93ZWlnaHRzCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9d2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgICMgVGVzdCB3ZWlnaHQgZm9jdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50IG9mIHRoZSBwb3B1bGF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFsxLCAwLCAwLCAwXSksIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMSwgMCwgMF0pLCBbJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDAsIDEsIDBdKSwgWydjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAwLCAwLCAxXSksIFsnZCddKQorCisgICAgICAgICMgVGVzdCBjb25zaXN0ZW5jeSB3aXRoIHJhbmRvbS5jaG9pY2UoKSBmb3IgZW1wdHkgcG9wdWxhdGlvbgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgd2VpZ2h0cz1bXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgY3VtX3dlaWdodHM9W10sIGs9NSkKKwogICAgIGRlZiB0ZXN0X2dhdXNzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBzZWVkKCkgbWV0aG9kIGluaXRpYWxpemVzIGFsbCB0aGUgaGlkZGVuIHN0YXRlLiAgSW4KICAgICAgICAgIyBwYXJ0aWN1bGFyLCB0aHJvdWdoIDIuMi4xIGl0IGZhaWxlZCB0byByZXNldCBhIHBpZWNlIG9mIHN0YXRlIHVzZWQKQEAgLTU1MSw2ICs2MzAsMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0b3AgPCB4IDw9IHN0YXJ0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh4K3N0b3ApJXN0ZXAsIDApCiAKKyAgICBkZWYgdGVzdF9jaG9pY2VzX2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgVGhlIHZhcmlvdXMgd2F5cyBvZiBzcGVjaWZ5aW5nIHdlaWdodHMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0cworICAgICAgICBjaG9pY2VzID0gc2VsZi5nZW4uY2hvaWNlcworICAgICAgICBuID0gMTA0NzI5CisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg4Njc1MzA5KQorICAgICAgICBhID0gc2VsZi5nZW4uY2hvaWNlcyhyYW5nZShuKSwgaz0xMDAwMCkKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDg2NzUzMDkpCisgICAgICAgIGIgPSBzZWxmLmdlbi5jaG9pY2VzKHJhbmdlKG4pLCBbMV0qbiwgaz0xMDAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoODY3NTMwOSkKKyAgICAgICAgYyA9IHNlbGYuZ2VuLmNob2ljZXMocmFuZ2UobiksIGN1bV93ZWlnaHRzPXJhbmdlKDEsIG4rMSksIGs9MTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYykKKworICAgICAgICAjIEFtZXJpYW4gUm91bGV0dGUKKyAgICAgICAgcG9wdWxhdGlvbiA9IFsnUmVkJywgJ0JsYWNrJywgJ0dyZWVuJ10KKyAgICAgICAgd2VpZ2h0cyA9IFsxOCwgMTgsIDJdCisgICAgICAgIGN1bV93ZWlnaHRzID0gWzE4LCAzNiwgMzhdCisgICAgICAgIGV4cGFuZGVkX3BvcHVsYXRpb24gPSBbJ1JlZCddICogMTggKyBbJ0JsYWNrJ10gKiAxOCArIFsnR3JlZW4nXSAqIDIKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDkwMzU3NjgpCisgICAgICAgIGEgPSBzZWxmLmdlbi5jaG9pY2VzKGV4cGFuZGVkX3BvcHVsYXRpb24sIGs9MTAwMDApCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg5MDM1NzY4KQorICAgICAgICBiID0gc2VsZi5nZW4uY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg5MDM1NzY4KQorICAgICAgICBjID0gc2VsZi5nZW4uY2hvaWNlcyhwb3B1bGF0aW9uLCBjdW1fd2VpZ2h0cz1jdW1fd2VpZ2h0cywgaz0xMDAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKQorCiBkZWYgZ2FtbWEoeiwgc3FydDJwaT0oMi4wKnBpKSoqMC41KToKICAgICAjIFJlZmxlY3Rpb24gdG8gcmlnaHQgaGFsZiBvZiBjb21wbGV4IHBsYW5lCiAgICAgaWYgeiA8IDAuNToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IGMwMjJmMDcuLjllMTFlNTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtMSw5ICsxLDEwIEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBidWlsdC1pbiBmdW5jdGlvbnMKIAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHRlc3Quc3VwcG9ydAogCiAjIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9ucyAoMyBhcmdzIG9ubHkpLCBmb3IgY29tcGFyaXNvbgogZGVmIHB5cmFuZ2Uoc3RhcnQsIHN0b3AsIHN0ZXApOgpAQCAtNDk4LDI5ICs0OTksMzIgQEAKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICByYW5nZWl0ZXJfdHlwZSA9IHR5cGUoaXRlcihyYW5nZSgwKSkpCiAKLSAgICAgICAgIyByYW5nZWl0ZXJfbmV3IGRvZXNuJ3QgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cwotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShhPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByYW5nZWl0ZXJfdHlwZSwgMSwgMywgMSkKIAotICAgICAgICAjIHJhbmdlaXRlcl9uZXcgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAxLCAxKQorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgIyByYW5nZWl0ZXJfbmV3IGRvZXNuJ3QgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGE9MSkKIAotICAgICAgICAjIHN0YXJ0LCBzdG9wIGFuZCBzdG9wIG11c3QgZml0IGluIEMgbG9uZwotICAgICAgICBmb3IgZ29vZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCwgX3Rlc3RjYXBpLkxPTkdfTUlOXToKLSAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGdvb2RfdmFsLCBnb29kX3ZhbCwgZ29vZF92YWwpCi0gICAgICAgIGZvciBiYWRfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVggKyAxLCBfdGVzdGNhcGkuTE9OR19NSU4gLSAxXToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgYmFkX3ZhbCwgMSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgMSwgYmFkX3ZhbCwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgYmFkX3ZhbCkKKyAgICAgICAgICAgICMgcmFuZ2VpdGVyX25ldyB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAxLCAxKQogCi0gICAgICAgICMgc3RlcCBtdXN0bid0IGJlIHplcm8KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDApCisgICAgICAgICAgICAjIHN0YXJ0LCBzdG9wIGFuZCBzdG9wIG11c3QgZml0IGluIEMgbG9uZworICAgICAgICAgICAgZm9yIGdvb2RfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVgsIF90ZXN0Y2FwaS5MT05HX01JTl06CisgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoZ29vZF92YWwsIGdvb2RfdmFsLCBnb29kX3ZhbCkKKyAgICAgICAgICAgIGZvciBiYWRfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVggKyAxLCBfdGVzdGNhcGkuTE9OR19NSU4gLSAxXToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCBiYWRfdmFsLCAxLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIGJhZF92YWwsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgYmFkX3ZhbCkKKworICAgICAgICAgICAgIyBzdGVwIG11c3RuJ3QgYmUgemVybworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDApCiAKICAgICBkZWYgdGVzdF9zbGljZShzZWxmKToKICAgICAgICAgZGVmIGNoZWNrKHN0YXJ0LCBzdG9wLCBzdGVwPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKaW5kZXggMDgzNGZlMC4uNGJkYWE0YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CkBAIC0zLDEzICszLDEzIEBACiBpbXBvcnQgaW8KIGltcG9ydCBsb2NhbGUKIGltcG9ydCByZQotZnJvbSByZSBpbXBvcnQgU2Nhbm5lcgogaW1wb3J0IHNyZV9jb21waWxlCi1pbXBvcnQgc3JlX2NvbnN0YW50cwotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKK2Zyb20gcmUgaW1wb3J0IFNjYW5uZXIKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIAogIyBNaXNjIHRlc3RzIGZyb20gVGltIFBldGVycycgcmUuZG9jCkBAIC0xMTUsMTAgKzExNSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKC4pJywgcmUuZXNjYXBlKHMpLCAneCcpLCBzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKC4pJywgbGFtYmRhIG06IHMsICd4JyksIHMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCAnXGc8YT5cZzwxPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsIHInXGc8YT5cZzxhPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsIHInXGc8YT5cZzwxPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgcidcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgcidcZzwxPlxnPDE+JywgJ3h4JyksICd4eHh4JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsIHInXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCkBAIC0xMjksMTEgKzEyOSwxMSBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcXCcgKyBjLCAnYScpLCAnXFwnICsgYykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocideXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQogCiAgICAgZGVmIHRlc3RfYnVnXzQ0OTk2NChzZWxmKToKICAgICAgICAgIyBmYWlscyBmb3IgZ3JvdXAgZm9sbG93ZWQgYnkgb3RoZXIgZXNjYXBlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInKD9QPHVuaz54KScsICdcZzwxPlxnPDE+XFxiJywgJ3h4JyksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPlxiJywgJ3h4JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3h4XGJ4eFxiJykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDkwMDAoc2VsZik6CkBAIC0xODYsMTggKzE4NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNzc3IG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQogCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDExJyArICc4JwotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxODEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTgnICsgJzEnCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcODAwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDgwJyArICcwJworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDknLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTgnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5MCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5OScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDExJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxODEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxOCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcODAwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgODAnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAnJywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDgnLCAxKQogCiAgICAgICAgICMgaW4gcHl0aG9uMi4zIChldGMpLCB0aGVzZSBsb29wIGVuZGxlc3NseSBpbiBzcmVfcGFyc2VyLnB5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoKCgoKCgoKCgoKHgpKSkpKSkpKSkpKScsIHInXDExJywgJ3gnKSwgJ3gnKQpAQCAtMjIxLDI2ICsyMjIsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3grJywgJy0nLCAnYWJ4ZCcpLCAnYWItZCcpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19ncm91cHMoc2VsZik6Ci0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KVwxKD8oMSl5KScpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A8YT4pJywKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQorICAgICAgICByZS5jb21waWxlKHInKD9QPGExPngpXDEoPygxKXkpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A8YT4pJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJ2EnIGFzIGdyb3VwIDI7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwIDEiKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4oP1A9YSkpJywKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPig/UD1hKSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsIDEwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwxPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YS4+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygnLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKQEAgLTI1OSwzNSArMjYwLDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocGF0LCAneGM4eXonKS5zcGFuKCksICgwLCA1KSkKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX3JlZnMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhJywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzxhJywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhIGE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEgYT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhIGEnIiwgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPD4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDFhMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYTEnIiwgMykKICAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwyPicsICd4eCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAyJywgMykKICAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcMicsICd4eCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAyJywgMSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2FiJyIpOgotICAgICAgICAgICAgcmUuc3ViKCcoP1A8YT54KScsICdcZzxhYj4nLCAneHgnKQorICAgICAgICAgICAgcmUuc3ViKCcoP1A8YT54KScsIHInXGc8YWI+JywgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpfCg/UDxiPnkpJywgcidcZzxiPicsICd4eCcpLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpfCg/UDxiPnkpJywgcidcMicsICd4eCcpLCAnJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPC0xPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8LTE+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnLTEnIiwgMykKICAgICAgICAgIyBOZXcgdmFsaWQvaW52YWxpZCBpZGVudGlmaWVycyBpbiBQeXRob24gMwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPMK1PngpJywgcidcZzzCtT4nLCAneHgnKSwgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiPngpJywgcidcZzzwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiPicsICd4eCcpLCAneHgnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8wqk+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzzCqT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICfCqSciLCAzKQogICAgICAgICAjIFN1cHBvcnQgPiAxMDAgZ3JvdXBzLgogICAgICAgICBwYXQgPSAnfCcuam9pbigneCg/UDxhJWQ+JXgpeScgJSAoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMSwgMjAwICsgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHBhdCwgJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHBhdCwgcidcZzwyMDA+JywgJ3hjOHl6eGM4eScpLCAnYzh6YzgnKQogCiAgICAgZGVmIHRlc3RfcmVfc3VibihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCIoP2kpYisiLCAieCIsICJiYmJiIEJCQkIiKSwgKCd4IHgnLCAyKSkKQEAgLTQxOSwxOSArNDIwLDc3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiYycpLmdyb3VwcygpLCAoJ2InLCBOb25lLCAnYicsICdjJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiYycpLmdyb3VwcygiIiksICgnYicsICIiLCAnYicsICdjJykpCiAKLSAgICAgICAgIyBBIHNpbmdsZSBncm91cAotICAgICAgICBtID0gcmUubWF0Y2goJyhhKScsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEsIDEpLCAoJ2EnLCAnYScpKQotCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/Oig/UDxhMT5hKXwoP1A8YjI+YikpKD9QPGMzPmMpPycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdhJykuZ3JvdXAoMSwgMiwgMyksICgnYScsIE5vbmUsIE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYicpLmdyb3VwKCdhMScsICdiMicsICdjMycpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnYicsIE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYWMnKS5ncm91cCgxLCAnYjInLCAzKSwgKCdhJywgTm9uZSwgJ2MnKSkKIAorICAgIGRlZiB0ZXN0X2dyb3VwKHNlbGYpOgorICAgICAgICBjbGFzcyBJbmRleDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisgICAgICAgICMgQSBzaW5nbGUgZ3JvdXAKKyAgICAgICAgbSA9IHJlLm1hdGNoKCcoYSkoYiknLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoKSwgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKEluZGV4KDEpKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgMTw8MTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgSW5kZXgoMTw8MTAwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsICd4JykKKyAgICAgICAgIyBNdWx0aXBsZSBncm91cHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDIsIDEpLCAoJ2InLCAnYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoSW5kZXgoMiksIEluZGV4KDEpKSwgKCdiJywgJ2EnKSkKKworICAgIGRlZiB0ZXN0X21hdGNoX2dldGl0ZW0oc2VsZik6CisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/Oig/UDxhMT5hKXwoP1A8YjI+YikpKD9QPGMzPmMpPycpCisKKyAgICAgICAgbSA9IHBhdC5tYXRjaCgnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYTEnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2IyJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYzMnXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYTE9e2ExfSBiMj17YjJ9IGMzPXtjM30nLmZvcm1hdF9tYXAobSksICdhMT1hIGIyPU5vbmUgYzM9Tm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bM10sIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsnWCddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVstMV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWzRdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVswLCAxXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bKDAsKV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWygwLCAxKV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEtleUVycm9yLCAnYTInKToKKyAgICAgICAgICAgICdhMT17YTJ9Jy5mb3JtYXRfbWFwKG0pCisKKyAgICAgICAgbSA9IHBhdC5tYXRjaCgnYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2ExJ10sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydiMiddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2MzJ10sICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYTE9e2ExfSBiMj17YjJ9IGMzPXtjM30nLmZvcm1hdF9tYXAobSksICdhMT1hIGIyPU5vbmUgYzM9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswXSwgJ2FjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzNdLCAnYycpCisKKyAgICAgICAgIyBDYW5ub3QgYXNzaWduLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBtWzBdID0gMQorCisgICAgICAgICMgTm8gbGVuKCkuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCBtKQorCiAgICAgZGVmIHRlc3RfcmVfZnVsbG1hdGNoKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE2MjAzOiBQcm9wb3NhbDogYWRkIHJlLmZ1bGxtYXRjaCgpIG1ldGhvZC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2gociJhIiwgImEiKS5zcGFuKCksICgwLCAxKSkKQEAgLTQ2MywxOSArNTIyLDE5IEBACiAgICAgICAgICAgICByZS5jb21waWxlKHIiLio/IikuZnVsbG1hdGNoKCJhYmNkIiwgcG9zPTEsIGVuZHBvcz0zKS5zcGFuKCksICgxLCAzKSkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX2V4aXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEpJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYSknKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoJygnLCAnYScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICdhJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICdhJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICdhKScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICdhKScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnYWInKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpYnxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpYnxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdhJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnYScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICcnKSkKIAogICAgICAgICAjIFRlc3RzIGZvciBidWcgIzExNzc4MzE6IGV4ZXJjaXNlIGdyb3VwcyBvdGhlciB0aGFuIHRoZSBmaXJzdCBncm91cApAQCAtNTAwLDEwICs1NTksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHdvIGJyYW5jaGVzJywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9vdmVyZmxvdyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgJ1xnPCVzPicgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywgJ3h4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPyglZCkpJyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDEwKQorICAgICAgICBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0IE1BWEdST1VQUworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCByJ1xnPCVzPicgJSBNQVhHUk9VUFMsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCcgJSBNQVhHUk9VUFMsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBNQVhHUk9VUFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkJyAlIE1BWEdST1VQUywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXHwpPyhbXigpXSspXDEkJywgJ3xhfCcpLmdyb3VwcygpLApAQCAtNTM1LDM3ICs1OTUsMzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiICIpCiAKICAgICBkZWYgdGVzdF9yZXBlYXRfbWlubWF4KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0/JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MSwyfT8kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezF9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfT8kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezEsMn0kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSwzfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSw0fSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSwzfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSwzfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKIAotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MX0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MX0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MSwyfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezF9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezEsMn0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezEsMn0/JCIsICJ4eHgiKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDR9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7M30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MywzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsM30/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDR9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54e30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54e30kIiwgInh7fSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54e30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHt9JCIsICJ4e30iKSkKIAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIneHsyLDF9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWluIHJlcGVhdCBncmVhdGVyIHRoYW4gbWF4IHJlcGVhdCcsIDIpCkBAIC02MzgsMTQgKzY5OCwxMCBAQAogICAgICAgICByZS5wdXJnZSgpICAjIGZvciB3YXJuaW5ncwogICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpDRUZHSElKS0xNTk9QUVJUVlhZJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnXFwlYycgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXFwlYycgJSBjLCAnYScpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnXFwlYycgJSBjKQogICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpBQkNFRkdISUpLTE1OT1BRUlRWWFlaJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnW1xcJWNdJyAlIGMsIGMpLmdyb3VwKCksIGMpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdbXFwlY10nICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1tcXCVjXScgJSBjKQogCiAgICAgZGVmIHRlc3Rfc3RyaW5nX2JvdW5kYXJpZXMoc2VsZik6CiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDcxMwpAQCAtNjkyLDEwICs3NDgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiYVxuXG5iIikKIAogICAgIGRlZiB0ZXN0X2xvb2thaGVhZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW15hXSopKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW2FiY10pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW15hXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW15hXSopKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSopKSIsICJhIGJjIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzXDEpIiwgImEgYSIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKikiLCAiYSBhYSIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1ccyhhYmN8YSkpIiwgImEgYSIpLmdyb3VwKDEpLCAiYSIpCkBAIC04NDMsMTIgKzg5OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKGIiYWJjIiwgYiJBQkMiLCByZS5JfHJlLkwpLmdyb3VwKDApLCBiIkFCQyIpCiAKICAgICBkZWYgdGVzdF9ub3RfbGl0ZXJhbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKFteYV0pIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSopIiwgIiBiYiIpLmdyb3VwKDEpLCAiYmIiKQogCiAgICAgZGVmIHRlc3Rfc2VhcmNoX2NvdmVyYWdlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoYikiLCAiIGIiKS5ncm91cCgxKSwgImIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiYVxzIiwgImEgIikuZ3JvdXAoMCksICJhICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoYikiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQogCiAgICAgZGVmIGFzc2VydE1hdGNoKHNlbGYsIHBhdHRlcm4sIHRleHQsIG1hdGNoPU5vbmUsIHNwYW49Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcj1yZS5tYXRjaCk6CkBAIC05NTMsNyArMTAwOSw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcNTY3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTEnLCAxKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHgxIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHgxeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx1MTIzIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcdTEyMycsIDApCkBAIC05OTgsMTAgKzEwNTQsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4MCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMnh6IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IieiIpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcdTEyMzQiLCBiJ3UxMjM0JykpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlxVMDAwMTIzNDUiLCBiJ1UwMDAxMjM0NScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiXHUxMjM0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlxVMDAwMTIzNDUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQpAQCAtMTAwOSw3ICsxMDYzLDcgQEAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcNTY3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5MScsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAKQEAgLTEwMjMsMTAgKzEwNzcsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdTEyMzRdIiwgYid1JykpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVTAwMDEyMzQ1XSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1x1MTIzNF0iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1xVMDAwMTIzNDVdIikKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDU2N10iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKQEAgLTEwNTQsOCArMTEwNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpP2EnLCdhJykubGFzdGluZGV4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpKGIpP2InLCdhYicpLmxhc3RpbmRleCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyg/UDxhPmEpKD9QPGI+Yik/YicsJ2FiJykubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKIAogICAgIGRlZiB0ZXN0X2J1Z180MTg2MjYoc2VsZik6CiAgICAgICAgICMgYnVncyA0MTg2MjYgYXQgYWwuIC0tIFRlc3RpbmcgR3JlZyBDaGFwbWFuJ3MgYWRkaXRpb24gb2Ygb3AgY29kZQpAQCAtMTIyNyw3ICsxMjc5LDcgQEAKICAgICAgICAgICAgICdcdWZmMTAnLCAjICdcTntGVUxMV0lEVEggRElHSVQgWkVST30nLCBjYXRlZ29yeSAnTmQnCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIGRlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXlxkJCcsIHgpLmdyb3VwKDApLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ15cZCQnLCB4KS5ncm91cCgwKSwgeCkKIAogICAgICAgICBub3RfZGVjaW1hbF9kaWdpdHMgPSBbCiAgICAgICAgICAgICAnXHUyMTY1JywgIyAnXE57Uk9NQU4gTlVNRVJBTCBTSVh9JywgY2F0ZWdvcnkgJ05sJwpAQCAtMTIzNiw3ICsxMjg4LDcgQEAKICAgICAgICAgICAgICdcdTMyYjQnLCAjICdcTntDSVJDTEVEIE5VTUJFUiBUSElSVFkgTklORX0nLCBjYXRlZ29yeSAnTm8nCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vdF9kZWNpbWFsX2RpZ2l0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeXGQkJywgeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ15cZCQnLCB4KSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2FycmF5KHNlbGYpOgogICAgICAgICAjIFNGIGJ1ZiAxNjQ3NTQxCkBAIC0xMjc4LDYgKzEzMzAsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIHVwcGVyX2NoYXIsIGxvd2VyX2NoYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgbG93ZXJfY2hhciwgdXBwZXJfY2hhcikpCiAKKyAgICAgICAgcCA9IHVwcGVyX2NoYXIgKyAnKD9pKScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcycgJSBwCisgICAgICAgICkKKworICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJXMnICUgKCcuPycgKiAxMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIHdhcm5zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHAsIGxvd2VyX2NoYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKHdhcm5zLndhcm5pbmdzWzBdLm1lc3NhZ2UpLAorICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMgKHRydW5jYXRlZCknICUgcFs6MjBdCisgICAgICAgICkKKwogICAgIGRlZiB0ZXN0X2RvbGxhcl9tYXRjaGVzX3R3aWNlKHNlbGYpOgogICAgICAgICAiJCBtYXRjaGVzIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbmQganVzdCBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIFxuIgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgnJCcpCkBAIC0xMzA4LDI5ICsxMzc2LDI5IEBACiAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgcmUuVU5JQ09ERSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCBmbGFncykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgcmUuQVNDSUkgfCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD9hKVx4YzAnLCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCByZS5BU0NJSSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKD9hKVx3JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgICMgQnl0ZXMgcGF0dGVybnMKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5BU0NJSSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHhjMCcsIGZsYWdzIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChiJ1x4ZTAnKSkKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/dSlcdycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICdcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/dSlcdycsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hKVx3JywgcmUuVU5JQ09ERSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YXUpXHcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBicidcdycsIHJlLlVOSUNPREUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJyg/dSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInXHcnLCByZS5VTklDT0RFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD91KVx3JywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD9hKVx3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2F1KVx3JykKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9mbGFnKHNlbGYpOgogICAgICAgICBpbXBvcnQgbG9jYWxlCkBAIC0xMzYxLDI3ICsxNDI5LDU5IEBACiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgcmUuTE9DQUxFKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgcmUuTE9DQUxFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJyg/TClcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInKD9MKVx3JykKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJyg/TCknKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2FMKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP0wpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2FMKScpCisKKyAgICBkZWYgdGVzdF9zY29wZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTphKWInLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6YSliJywgJ2FCJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD8taTphKWInLCAnQWInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8taTphKWInLCAnYUInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6KD8taTphKWIpJywgJ0FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnYUInKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnYSBiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD94OiBhKSBiJywgJyBhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8teDogYSkgYicsICcgYWInLCByZS5WRVJCT1NFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJ2FiJywgcmUuVkVSQk9TRSkpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2EpKD8tYTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWcnLCA4KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pLWk6YSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmJywgNSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8tJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0rJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy16JywgJ3Vua25vd24gZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKScsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taSsnLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWl6JywgJ3Vua25vd24gZmxhZycsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2k6JywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aSsnLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peicsICd1bmtub3duIGZsYWcnLCAzKQogCiAgICAgZGVmIHRlc3RfYnVnXzY1MDkoc2VsZik6CiAgICAgICAgICMgUmVwbGFjZW1lbnQgc3RyaW5ncyBvZiBib3RoIHR5cGVzIG11c3QgcGFyc2UgcHJvcGVybHkuCiAgICAgICAgICMgYWxsIHN0cmluZ3MKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoJ2JcXDEnLCAnYWMnKSwgJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYSguKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhXHUxMjM0JyksICdiXHUxMjM0JykKQEAgLTEzODksNyArMTQ4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihsYW1iZGEgbTogJ3N0cicsICdhNScpLCAnc3RyJykKIAogICAgICAgICAjIGFsbCBieXRlcwotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ2EoXHcpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYWMnKSwgYidiYycpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYVx4Q0QnKSwgYidiXHhDRCcpCkBAIC0xNDI3LDEzICsxNTI3LDYgQEAKICAgICAgICAgIyBUZXN0IGJlaGF2aW91ciB3aGVuIG5vdCBnaXZlbiBhIHN0cmluZyBvciBwYXR0ZXJuIGFzIHBhcmFtZXRlcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlLmNvbXBpbGUsIDApCiAKLSAgICBkZWYgdGVzdF9idWdfMTM4OTkoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzEzODk5OiByZSBwYXR0ZXJuIHIiW1xBXSIgc2hvdWxkIHdvcmsgbGlrZSAiQSIgYnV0IG1hdGNoZXMKLSAgICAgICAgIyBub3RoaW5nLiBEaXR0byBCIGFuZCBaLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCi0KICAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgogICAgICAgICAjIElzc3VlICMxMDE4MjogaW5kaWNlcyB3ZXJlIDMyLWJpdC10cnVuY2F0ZWQuCkBAIC0xNTE4LDcgKzE2MTEsNyBAQAogICAgICAgICBmb3Igc3RyaW5nIGluIChiJ1thYnJhY2FkYWJyYV0nLCBCKGInW2FicmFjYWRhYnJhXScpLAogICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcoYidbYWJyYWNhZGFicmFdJykpOgotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyYicoLispKC4qPylcMScsIHN0cmluZykKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2goYnInKC4rKSguKj8pXDEnLCBzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8JXMuJXMgb2JqZWN0OyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFuPSgxLCAxMiksIG1hdGNoPWInYWJyYWNhZGFicmEnPiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShtKS5fX21vZHVsZV9fLCB0eXBlKG0pLl9fcXVhbG5hbWVfXykpCkBAIC0xNTQ3LDkgKzE2NDAsOSBAQAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dDoKICAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0LCByZS5ERUJVRykKICAgICAgICAgZHVtcCA9ICcnJ1wKLVNVQlBBVFRFUk4gMQorU1VCUEFUVEVSTiAxIDAgMAogICBMSVRFUkFMIDQ2Ci1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgQlJBTkNICiAgICAgSU4KICAgICAgIExJVEVSQUwgOTkKQEAgLTE1NTcsNyArMTY1MCw3IEBACiAgIE9SCiAgICAgTElURVJBTCAxMTIKICAgICBMSVRFUkFMIDEyMQotU1VCUEFUVEVSTiBOb25lCitTVUJQQVRURVJOIE5vbmUgMCAwCiAgIEdST1VQUkVGX0VYSVNUUyAxCiAgICAgQVQgQVRfRU5ECiAgIEVMU0UKQEAgLTE2NzMsMTIgKzE3NjYsNjQgQEAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/eiknLCAndW5rbm93biBleHRlbnNpb24gP3onLCAxKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peiknLCAndW5rbm93biBmbGFnJywgMykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/I2FiYycsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBjb21tZW50JywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PD4pJywgJ3Vua25vd24gZXh0ZW5zaW9uID88PicsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPycsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMikKIAorICAgIGRlZiB0ZXN0X2VudW0oc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI4MDgyOiBDaGVjayB0aGF0IHN0cihmbGFnKSByZXR1cm5zIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nCisgICAgICAgICMgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FTQ0lJJywgc3RyKHJlLkEpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdET1RBTEwnLCBzdHIocmUuUykpCisKKyAgICBkZWYgdGVzdF9wYXR0ZXJuX2NvbXBhcmUoc2VsZik6CisgICAgICAgIHBhdHRlcm4xID0gcmUuY29tcGlsZSgnYWJjJywgcmUuSUdOT1JFQ0FTRSkKKworICAgICAgICAjIGVxdWFsIHRvIGl0c2VsZgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdHRlcm4xLCBwYXR0ZXJuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXR0ZXJuMSAhPSBwYXR0ZXJuMSkKKworICAgICAgICAjIGVxdWFsCisgICAgICAgIHJlLnB1cmdlKCkKKyAgICAgICAgcGF0dGVybjIgPSByZS5jb21waWxlKCdhYmMnLCByZS5JR05PUkVDQVNFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocGF0dGVybjIpLCBoYXNoKHBhdHRlcm4xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXR0ZXJuMiwgcGF0dGVybjEpCisKKyAgICAgICAgIyBub3QgZXF1YWw6IGRpZmZlcmVudCBwYXR0ZXJuCisgICAgICAgIHJlLnB1cmdlKCkKKyAgICAgICAgcGF0dGVybjMgPSByZS5jb21waWxlKCdYWVonLCByZS5JR05PUkVDQVNFKQorICAgICAgICAjIERvbid0IHRlc3QgaGFzaChwYXR0ZXJuMykgIT0gaGFzaChwYXR0ZXJuMSkgYmVjYXVzZSB0aGVyZSBpcyBubworICAgICAgICAjIHdhcnJhbnR5IHRoYXQgaGFzaCB2YWx1ZXMgYXJlIGRpZmZlcmVudAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBhdHRlcm4zLCBwYXR0ZXJuMSkKKworICAgICAgICAjIG5vdCBlcXVhbDogZGlmZmVyZW50IGZsYWcgKGZsYWdzPTApCisgICAgICAgIHJlLnB1cmdlKCkKKyAgICAgICAgcGF0dGVybjQgPSByZS5jb21waWxlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBhdHRlcm40LCBwYXR0ZXJuMSkKKworICAgICAgICAjIG9ubHkgPT0gYW5kICE9IGNvbXBhcmlzb24gb3BlcmF0b3JzIGFyZSBzdXBwb3J0ZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcGF0dGVybjEgPCBwYXR0ZXJuMgorCisgICAgZGVmIHRlc3RfcGF0dGVybl9jb21wYXJlX2J5dGVzKHNlbGYpOgorICAgICAgICBwYXR0ZXJuMSA9IHJlLmNvbXBpbGUoYidhYmMnKQorCisgICAgICAgICMgZXF1YWw6IHRlc3QgYnl0ZXMgcGF0dGVybnMKKyAgICAgICAgcmUucHVyZ2UoKQorICAgICAgICBwYXR0ZXJuMiA9IHJlLmNvbXBpbGUoYidhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocGF0dGVybjIpLCBoYXNoKHBhdHRlcm4xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXR0ZXJuMiwgcGF0dGVybjEpCisKKyAgICAgICAgIyBub3QgZXF1YWw6IHBhdHRlcm4gb2YgYSBkaWZmZXJlbnQgdHlwZXMgKHN0ciB2cyBieXRlcyksCisgICAgICAgICMgY29tcGFyaXNvbiBtdXN0IG5vdCByYWlzZSBhIEJ5dGVzV2FybmluZworICAgICAgICByZS5wdXJnZSgpCisgICAgICAgIHBhdHRlcm4zID0gcmUuY29tcGlsZSgnYWJjJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicsIEJ5dGVzV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGF0dGVybjMsIHBhdHRlcm4xKQorCiAKIGNsYXNzIFBhdHRlcm5SZXByVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjaGVjayhzZWxmLCBwYXR0ZXJuLCBleHBlY3RlZCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQppbmRleCAyYzczZGYyLi4wNmE5MTQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKQEAgLTEyMSw2ICsxMjEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVJNPSd4dGVybS0yNTZjb2xvcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJycpCiAKKyAgICBhdXRvX2hpc3Rvcnlfc2NyaXB0ID0gIiIiXAoraW1wb3J0IHJlYWRsaW5lCityZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KHt9KQoraW5wdXQoKQorcHJpbnQoIkhpc3RvcnkgbGVuZ3RoOiIsIHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCkpCisiIiIKKworICAgIGRlZiB0ZXN0X2F1dG9faGlzdG9yeV9lbmFibGVkKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBydW5fcHR5KHNlbGYuYXV0b19oaXN0b3J5X3NjcmlwdC5mb3JtYXQoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJIaXN0b3J5IGxlbmd0aDogMVxyXG4iLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9hdXRvX2hpc3RvcnlfZGlzYWJsZWQoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHJ1bl9wdHkoc2VsZi5hdXRvX2hpc3Rvcnlfc2NyaXB0LmZvcm1hdChGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJIaXN0b3J5IGxlbmd0aDogMFxyXG4iLCBvdXRwdXQpCisKICAgICBkZWYgdGVzdF9ub25hc2NpaShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVhZGxpbmUuYWRkX2hpc3RvcnkoIlx4RUJceEVGIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CmluZGV4IGUyYzJmMmQuLjc1MWRmMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQpAQCAtMSwyMSArMSw0OCBAQAogIiIiCiBUZXN0cyBvZiByZWdydGVzdC5weS4KKworTm90ZTogdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsLgogIiIiCiAKLWltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBmYXVsdGhhbmRsZXIKLWltcG9ydCBnZXRvcHQKK2ltcG9ydCBpbwogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdCwgc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBsaWJyZWdydGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworUHlfREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldG9iamVjdHMnKQorUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykKK1JPT1RfRElSID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoUk9PVF9ESVIpKQorCitURVNUX0lOVEVSUlVQVEVEID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgIGZyb20gc2lnbmFsIGltcG9ydCBTSUdJTlQKKyAgICB0cnk6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCByYWlzZV9zaWduYWwKKyAgICAgICAgcmFpc2Vfc2lnbmFsKFNJR0lOVCkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIGltcG9ydCBvcworICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBTSUdJTlQpCisgICAgIiIiKQorCiAKIGNsYXNzIFBhcnNlQXJnc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgcmVncnRlc3QncyBhcmd1bWVudCBwYXJzaW5nLiIiIgorICAgICIiIgorICAgIFRlc3QgcmVncnRlc3QncyBhcmd1bWVudCBwYXJzaW5nLCBmdW5jdGlvbiBfcGFyc2VfYXJncygpLgorICAgICIiIgogCiAgICAgZGVmIGNoZWNrRXJyb3Ioc2VsZiwgYXJncywgbXNnKToKICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGVyciwgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICByZWdydGVzdC5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICAgICAgbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoYXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIGVyci5nZXR2YWx1ZSgpKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKQEAgLTIzLDgyICs1MCw4MiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dCwgXAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgICAgICBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdSdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuJywgb3V0LmdldHZhbHVlKCkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10aW1lb3V0JywgJzQuMiddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10aW1lb3V0JywgJzQuMiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRpbWVvdXQsIDQuMikKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10aW1lb3V0J10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRpbWVvdXQnLCAnZm9vJ10sICdpbnZhbGlkIGZsb2F0IHZhbHVlJykKIAogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXdhaXQnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0td2FpdCddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMud2FpdCkKIAogICAgIGRlZiB0ZXN0X3NsYXZlYXJncyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc2xhdmVhcmdzJywgJ1tbXSwge31dJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXNsYXZlYXJncycsICdbW10sIHt9XSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnNsYXZlYXJncywgJ1tbXSwge31dJykKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS1zbGF2ZWFyZ3MnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9zdGFydChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVMnLCAnLS1zdGFydCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnN0YXJ0LCAnZm9vJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZShzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy12J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdnZ2J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdnZ2J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMykKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddICogMykKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddICogMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAzKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtdKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF92ZXJib3NlMihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXcnLCAnLS12ZXJib3NlMic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnZlcmJvc2UyKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZTMoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1XJywgJy0tdmVyYm9zZTMnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy52ZXJib3NlMykKIAogICAgIGRlZiB0ZXN0X3F1aWV0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcScsICctLXF1aWV0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3Rfc2xvdyhzZWxmKToKLSAgICAgICAgZm9yIG9wdCBpbiAnLW8nLCAnLS1zbG93JzoKKyAgICAgICAgZm9yIG9wdCBpbiAnLW8nLCAnLS1zbG93ZXN0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucHJpbnRfc2xvdykKIAogICAgIGRlZiB0ZXN0X2hlYWRlcihzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0taGVhZGVyJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLWhlYWRlciddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuaGVhZGVyKQogCiAgICAgZGVmIHRlc3RfcmFuZG9taXplKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcicsICctLXJhbmRvbWl6ZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJhbmRvbWl6ZSkKIAogICAgIGRlZiB0ZXN0X3JhbmRzZWVkKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1yYW5kc2VlZCcsICcxMjM0NSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1yYW5kc2VlZCcsICcxMjM0NSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnJhbmRvbV9zZWVkLCAxMjM0NSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJhbmRvbWl6ZSkKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS1yYW5kc2VlZCddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKQEAgLTEwNyw3ICsxMzQsNyBAQAogICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctZicsICctLWZyb21maWxlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuZnJvbWZpbGUsICdmb28nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nLCAnLXMnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKQEAgLTExNSw0MiArMTQyLDQyIEBACiAgICAgZGVmIHRlc3RfZXhjbHVkZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXgnLCAnLS1leGNsdWRlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZXhjbHVkZSkKIAogICAgIGRlZiB0ZXN0X3NpbmdsZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXMnLCAnLS1zaW5nbGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5zaW5nbGUpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICctZicsICdmb28nXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKIAogICAgIGRlZiB0ZXN0X21hdGNoKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctbScsICctLW1hdGNoJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ3BhdHRlcm4nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdwYXR0ZXJuJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5tYXRjaF90ZXN0cywgJ3BhdHRlcm4nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9mYWlsZmFzdChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUcnLCAnLS1mYWlsZmFzdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctdiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy12J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZhaWxmYXN0KQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy1XJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLVcnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZmFpbGZhc3QpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVcnKQogCiAgICAgZGVmIHRlc3RfdXNlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdScsICctLXVzZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbmV0d29yayddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxuZXR3b3JrJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBbJ2d1aScsICduZXR3b3JrJ10pCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5vbmUsbmV0d29yayddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxub25lLG5ldHdvcmsnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIFsnbmV0d29yayddKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChyZWdydGVzdC5SRVNPVVJDRV9OQU1FUykKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QobGlicmVncnRlc3QuUkVTT1VSQ0VfTkFNRVMpCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucmVtb3ZlKCdndWknKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2FsbCwtZ3VpJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnYWxsLC1ndWknXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIGV4cGVjdGVkKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgcmVzb3VyY2UnKQpAQCAtMTU4LDMxICsxODUsMzEgQEAKICAgICBkZWYgdGVzdF9tZW1saW1pdChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLU0nLCAnLS1tZW1saW1pdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc0RyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzRHJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5tZW1saW1pdCwgJzRHJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfdGVzdGRpcihzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGVzdGRpcicsICdmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGVzdGRpcicsICdmb28nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50ZXN0ZGlyLCBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgJ2ZvbycpKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRlc3RkaXInXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9ydW5sZWFrcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUwnLCAnLS1ydW5sZWFrcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJ1bmxlYWtzKQogCiAgICAgZGVmIHRlc3RfaHVudHJsZWFrcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVInLCAnLS1odW50cmxlYWtzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzonXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNSwgNCwgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNiwgNCwgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6MyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzozJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNSwgMywgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OjM6bGVha3MubG9nJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjozOmxlYWtzLmxvZyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDYsIDMsICdsZWFrcy5sb2cnKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnNiddLApAQCAtMTkzLDI3ICsyMjAsMjUgQEAKICAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1qJywgJy0tbXVsdGlwcm9jZXNzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzInXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcyJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfbXAsIDIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCBpbnQgdmFsdWUnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctVCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctbCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQotICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctTScsICc0RyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMCcsICctVCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMCcsICctbCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQotICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMCcsICctTScsICc0RyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogCiAgICAgZGVmIHRlc3RfY292ZXJhZ2Uoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1UJywgJy0tY292ZXJhZ2UnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy50cmFjZSkKIAogICAgIGRlZiB0ZXN0X2NvdmVyZGlyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRCcsICctLWNvdmVyZGlyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuY292ZXJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgJ2ZvbycpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCkBAIC0yMjEsMTMgKzI0NiwxMyBAQAogICAgIGRlZiB0ZXN0X25vY292ZXJkaXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1OJywgJy0tbm9jb3ZlcmRpcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobnMuY292ZXJkaXIpCiAKICAgICBkZWYgdGVzdF90aHJlc2hvbGQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy10JywgJy0tdGhyZXNob2xkJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzEwMDAnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcxMDAwJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50aHJlc2hvbGQsIDEwMDApCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCBpbnQgdmFsdWUnKQpAQCAtMjM1LDEzICsyNjAsMTYgQEAKICAgICBkZWYgdGVzdF9ub3dpbmRvd3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1uJywgJy0tbm93aW5kb3dzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycihpby5TdHJpbmdJTygpKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLm5vd2luZG93cykKKyAgICAgICAgICAgICAgICBlcnIgPSBzdGRlcnIuZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkJywgZXJyKQogCiAgICAgZGVmIHRlc3RfZm9yZXZlcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUYnLCAnLS1mb3JldmVyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZm9yZXZlcikKIAogCkBAIC0yNDksMzIgKzI3NywzMiBAQAogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXh4eCddLCAndXNhZ2U6JykKIAogICAgIGRlZiB0ZXN0X2xvbmdfb3B0aW9uX19wYXJ0aWFsKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWknXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3RfdHdvX29wdGlvbnMoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICctLWV4Y2x1ZGUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5leGNsdWRlKQogCiAgICAgZGVmIHRlc3Rfb3B0aW9uX3dpdGhfZW1wdHlfc3RyaW5nX3ZhbHVlKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zdGFydCcsICcnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc3RhcnQnLCAnJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc3RhcnQsICcnKQogCiAgICAgZGVmIHRlc3RfYXJnKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWydmb28nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ2ZvbyddKQogCiAgICAgZGVmIHRlc3Rfb3B0aW9uX2FuZF9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICdmb28nXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWydmb28nXSkKIAogICAgIGRlZiB0ZXN0X2FyZ19vcHRpb25fYXJnKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsndGVzdF91bmFyeW9wJywgJy12JywgJ3Rlc3RfYmlub3AnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJ3Rlc3RfdW5hcnlvcCcsICctdicsICd0ZXN0X2Jpbm9wJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ3Rlc3RfdW5hcnlvcCcsICd0ZXN0X2Jpbm9wJ10pCiAKQEAgLTI4Myw2ICszMTEsNDk2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAndW5yZWNvZ25pemVkIGFyZ3VtZW50czogLS11bmtub3duLW9wdGlvbicpCiAKIAorY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBURVNUX1VOSVFVRV9JRCA9IDEKKyAgICBURVNUTkFNRV9QUkVGSVggPSAndGVzdF9yZWdydGVzdF8nCisgICAgVEVTVE5BTUVfUkVHRVggPSByJ3Rlc3RfW2EtekEtWjAtOV9dKycKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0ZGlyID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorCisgICAgICAgIHNlbGYudG1wdGVzdGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYudG1wdGVzdGRpcikKKworICAgIGRlZiBjcmVhdGVfdGVzdChzZWxmLCBuYW1lPU5vbmUsIGNvZGU9JycpOgorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSAnbm9vcCVzJyAlIEJhc2VUZXN0Q2FzZS5URVNUX1VOSVFVRV9JRAorICAgICAgICAgICAgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lEICs9IDEKKworICAgICAgICAjIHRlc3RfcmVncnRlc3QgY2Fubm90IGJlIHJ1biB0d2ljZSBpbiBwYXJhbGxlbCBiZWNhdXNlCisgICAgICAgICMgb2Ygc2V0VXAoKSBhbmQgY3JlYXRlX3Rlc3QoKQorICAgICAgICBuYW1lID0gc2VsZi5URVNUTkFNRV9QUkVGSVggKyBuYW1lCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50bXB0ZXN0ZGlyLCBuYW1lICsgJy5weScpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICAjIFVzZSAneCcgbW9kZSB0byBlbnN1cmUgdGhhdCB3ZSBkbyBub3Qgb3ZlcnJpZGUgZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd4JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCB3cml0ZSAlczogJXMiICUgKHBhdGgsIGV4YykpCisgICAgICAgICAgICByYWlzZQorICAgICAgICByZXR1cm4gbmFtZQorCisgICAgZGVmIHJlZ2V4X3NlYXJjaChzZWxmLCByZWdleCwgb3V0cHV0KToKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocmVnZXgsIG91dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICBzZWxmLmZhaWwoIiVyIG5vdCBmb3VuZCBpbiAlciIgJSAocmVnZXgsIG91dHB1dCkpCisgICAgICAgIHJldHVybiBtYXRjaAorCisgICAgZGVmIGNoZWNrX2xpbmUoc2VsZiwgb3V0cHV0LCByZWdleCk6CisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyJ14nICsgcmVnZXgsIHJlLk1VTFRJTElORSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHBhcnNlX2V4ZWN1dGVkX3Rlc3RzKHNlbGYsIG91dHB1dCk6CisgICAgICAgIHJlZ2V4ID0gKHInXlswLTldKzpbMC05XSs6WzAtOV0rIFxbICpbMC05XSsoPzovICpbMC05XSspP1xdICglcyknCisgICAgICAgICAgICAgICAgICUgc2VsZi5URVNUTkFNRV9SRUdFWCkKKyAgICAgICAgcGFyc2VyID0gcmUuZmluZGl0ZXIocmVnZXgsIG91dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICByZXR1cm4gbGlzdChtYXRjaC5ncm91cCgxKSBmb3IgbWF0Y2ggaW4gcGFyc2VyKQorCisgICAgZGVmIGNoZWNrX2V4ZWN1dGVkX3Rlc3RzKHNlbGYsIG91dHB1dCwgdGVzdHMsIHNraXBwZWQ9KCksIGZhaWxlZD0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD0oKSwgcmFuZG9taXplPUZhbHNlLCBpbnRlcnJ1cHRlZD1GYWxzZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodGVzdHMsIHN0cik6CisgICAgICAgICAgICB0ZXN0cyA9IFt0ZXN0c10KKyAgICAgICAgaWYgaXNpbnN0YW5jZShza2lwcGVkLCBzdHIpOgorICAgICAgICAgICAgc2tpcHBlZCA9IFtza2lwcGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKGZhaWxlZCwgc3RyKToKKyAgICAgICAgICAgIGZhaWxlZCA9IFtmYWlsZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob21pdHRlZCwgc3RyKToKKyAgICAgICAgICAgIG9taXR0ZWQgPSBbb21pdHRlZF0KKyAgICAgICAgbnRlc3QgPSBsZW4odGVzdHMpCisgICAgICAgIG5za2lwcGVkID0gbGVuKHNraXBwZWQpCisgICAgICAgIG5mYWlsZWQgPSBsZW4oZmFpbGVkKQorICAgICAgICBub21pdHRlZCA9IGxlbihvbWl0dGVkKQorCisgICAgICAgIGV4ZWN1dGVkID0gc2VsZi5wYXJzZV9leGVjdXRlZF90ZXN0cyhvdXRwdXQpCisgICAgICAgIGlmIHJhbmRvbWl6ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGV4ZWN1dGVkKSwgc2V0KHRlc3RzKSwgb3V0cHV0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGVjdXRlZCwgdGVzdHMsIG91dHB1dCkKKworICAgICAgICBkZWYgcGx1cmFsKGNvdW50KToKKyAgICAgICAgICAgIHJldHVybiAncycgaWYgY291bnQgIT0gMSBlbHNlICcnCisKKyAgICAgICAgZGVmIGxpc3RfcmVnZXgobGluZV9mb3JtYXQsIHRlc3RzKToKKyAgICAgICAgICAgIGNvdW50ID0gbGVuKHRlc3RzKQorICAgICAgICAgICAgbmFtZXMgPSAnICcuam9pbihzb3J0ZWQodGVzdHMpKQorICAgICAgICAgICAgcmVnZXggPSBsaW5lX2Zvcm1hdCAlIChjb3VudCwgcGx1cmFsKGNvdW50KSkKKyAgICAgICAgICAgIHJlZ2V4ID0gciclczpcbiAgICAlcyQnICUgKHJlZ2V4LCBuYW1lcykKKyAgICAgICAgICAgIHJldHVybiByZWdleAorCisgICAgICAgIGlmIHNraXBwZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBza2lwcGVkJywgc2tpcHBlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIGZhaWxlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIGZhaWxlZCcsIGZhaWxlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIG9taXR0ZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBvbWl0dGVkJywgb21pdHRlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGdvb2QgPSBudGVzdCAtIG5za2lwcGVkIC0gbmZhaWxlZCAtIG5vbWl0dGVkCisgICAgICAgIGlmIGdvb2Q6CisgICAgICAgICAgICByZWdleCA9IHInJXMgdGVzdCVzIE9LXC4kJyAlIChnb29kLCBwbHVyYWwoZ29vZCkpCisgICAgICAgICAgICBpZiBub3Qgc2tpcHBlZCBhbmQgbm90IGZhaWxlZCBhbmQgZ29vZCA+IDE6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnQWxsICVzJyAlIHJlZ2V4CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBpbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuJykKKworICAgICAgICBpZiBuZmFpbGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gJ0ZBSUxVUkUnCisgICAgICAgIGVsaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAnSU5URVJSVVBURUQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSAnU1VDQ0VTUycKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3RzIHJlc3VsdDogJXMnICUgcmVzdWx0KQorCisgICAgZGVmIHBhcnNlX3JhbmRvbV9zZWVkKHNlbGYsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidVc2luZyByYW5kb20gc2VlZCAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgcmFuZHNlZWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IHJhbmRzZWVkIDw9IDEwMDAwMDAwLCByYW5kc2VlZCkKKyAgICAgICAgcmV0dXJuIHJhbmRzZWVkCisKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgaW5wdXQ9Tm9uZSwgZXhpdGNvZGU9MCwgKiprdyk6CisgICAgICAgIGlmIG5vdCBpbnB1dDoKKyAgICAgICAgICAgIGlucHV0ID0gJycKKyAgICAgICAgaWYgJ3N0ZGVycicgbm90IGluIGt3OgorICAgICAgICAgICAga3dbJ3N0ZGVyciddID0gc3VicHJvY2Vzcy5QSVBFCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLnJ1bihhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQorICAgICAgICBpZiBwcm9jLnJldHVybmNvZGUgIT0gZXhpdGNvZGU6CisgICAgICAgICAgICBtc2cgPSAoIkNvbW1hbmQgJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzXG4iCisgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICJzdGRvdXQ6XG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAlIChzdHIoYXJncyksIHByb2MucmV0dXJuY29kZSwgcHJvYy5zdGRvdXQpKQorICAgICAgICAgICAgaWYgcHJvYy5zdGRlcnI6CisgICAgICAgICAgICAgICAgbXNnICs9ICgiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSBwcm9jLnN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCisgICAgICAgIHJldHVybiBwcm9jCisKKworICAgIGRlZiBydW5fcHl0aG9uKHNlbGYsIGFyZ3MsICoqa3cpOgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLVgnLCAnZmF1bHRoYW5kbGVyJywgJy1JJywgKmFyZ3NdCisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MsICoqa3cpCisgICAgICAgIHJldHVybiBwcm9jLnN0ZG91dAorCisKK2NsYXNzIFByb2dyYW1zVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZhcmlvdXMgd2F5cyB0byBydW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLiBVc2Ugb3B0aW9ucyBjbG9zZQorICAgIHRvIG9wdGlvbnMgdXNlZCBvbiB0aGUgYnVpbGRib3QuCisgICAgIiIiCisKKyAgICBOVEVTVCA9IDQKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICAgICAgIyBDcmVhdGUgTlRFU1QgdGVzdHMgZG9pbmcgbm90aGluZworICAgICAgICBzZWxmLnRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2Uoc2VsZi5OVEVTVCldCisKKyAgICAgICAgc2VsZi5weXRob25fYXJncyA9IFsnLVdkJywgJy1FJywgJy1iYiddCisgICAgICAgIHNlbGYucmVncnRlc3RfYXJncyA9IFsnLXVhbGwnLCAnLXJ3VycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzLmV4dGVuZCgoJy0tdGltZW91dCcsICczNjAwJywgJy1qNCcpKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHNlbGYucmVncnRlc3RfYXJncy5hcHBlbmQoJy1uJykKKworICAgIGRlZiBjaGVja19vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBzZWxmLnRlc3RzLCByYW5kb21pemU9VHJ1ZSkKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgYXJncyk6CisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3B5dGhvbihhcmdzKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfcmVncnRlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvcmVncnRlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3JlZ3J0ZXN0LnB5JykKKworICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCBzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVncnRlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdC5yZWdydGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdC5yZWdydGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdC5hdXRvdGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdC5hdXRvdGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV90ZXN0X2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIGZyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QKKyAgICAgICAgY29kZSA9ICdmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0JworICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLWMnLCBjb2RlLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3Rfc2NyaXB0X2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIExpYi90ZXN0L2F1dG90ZXN0LnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdhdXRvdGVzdC5weScpCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsIHNjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bl90ZXN0cy5weSBzY3JpcHQgaXMgbm90IGluc3RhbGxlZCcpCisgICAgZGVmIHRlc3RfdG9vbHNfc2NyaXB0X3J1bl90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBUb29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdzY3JpcHRzJywgJ3J1bl90ZXN0cy5weScpCisgICAgICAgIGFyZ3MgPSBbc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiBydW5fYmF0Y2goc2VsZiwgKmFyZ3MpOgorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChwcm9jLnN0ZG91dCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5iYXQgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF90b29sc19idWlsZGJvdF90ZXN0KHNlbGYpOgorICAgICAgICAjIFRvb2xzXGJ1aWxkYm90XHRlc3QuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgJ1Rvb2xzJywgJ2J1aWxkYm90JywgJ3Rlc3QuYmF0JykKKyAgICAgICAgdGVzdF9hcmdzID0gWyctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyXQorICAgICAgICBpZiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSA9PSAnNjRiaXQnOgorICAgICAgICAgICAgdGVzdF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgbm90IFB5X0RFQlVHOgorICAgICAgICAgICAgdGVzdF9hcmdzLmFwcGVuZCgnK2QnKSAgICAgIyBSZWxlYXNlIGJ1aWxkLCB1c2UgcHl0aG9uLmV4ZQorICAgICAgICBzZWxmLnJ1bl9iYXRjaChzY3JpcHQsICp0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3BjYnVpbGRfcnQoc2VsZik6CisgICAgICAgICMgUENidWlsZFxydC5iYXQKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCByJ1BDYnVpbGRccnQuYmF0JykKKyAgICAgICAgcnRfYXJncyA9IFsiLXEiXSAgICAgICAgICAgICAjIFF1aWNrLCBkb24ndCBydW4gdGVzdHMgdHdpY2UKKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHJ0X2FyZ3MuYXBwZW5kKCcteDY0JykgICAjIDY0LWJpdCBidWlsZAorICAgICAgICBpZiBQeV9ERUJVRzoKKyAgICAgICAgICAgIHJ0X2FyZ3MuYXBwZW5kKCctZCcpICAgICAjIERlYnVnIGJ1aWxkLCB1c2UgcHl0aG9uX2QuZXhlCisgICAgICAgIHNlbGYucnVuX2JhdGNoKHNjcmlwdCwgKnJ0X2FyZ3MsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzKQorCisKK2NsYXNzIEFyZ3NUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgYXJndW1lbnRzIG9mIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4KKyAgICAiIiIKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgKnRlc3RhcmdzLCAqKmt3KToKKyAgICAgICAgY21kYXJncyA9IFsnLW0nLCAndGVzdCcsICctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyLCAqdGVzdGFyZ3NdCisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9weXRob24oY21kYXJncywgKiprdykKKworICAgIGRlZiB0ZXN0X2ZhaWxpbmdfdGVzdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGEgZmFpbGluZyB0ZXN0CisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICAgICAgY2xhc3MgRmFpbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWxpbmcoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiYnVnIikKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0X29rID0gc2VsZi5jcmVhdGVfdGVzdCgnb2snKQorICAgICAgICB0ZXN0X2ZhaWxpbmcgPSBzZWxmLmNyZWF0ZV90ZXN0KCdmYWlsaW5nJywgY29kZT1jb2RlKQorICAgICAgICB0ZXN0cyA9IFt0ZXN0X29rLCB0ZXN0X2ZhaWxpbmddCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKnRlc3RzLCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMsIGZhaWxlZD10ZXN0X2ZhaWxpbmcpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJjZXMoc2VsZik6CisgICAgICAgICMgdGVzdCAtdSBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIHRlc3RzID0ge30KKyAgICAgICAgZm9yIHJlc291cmNlIGluICgnYXVkaW8nLCAnbmV0d29yaycpOgorICAgICAgICAgICAgY29kZSA9ICdmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnRcbnN1cHBvcnQucmVxdWlyZXMoJXIpJyAlIHJlc291cmNlCisgICAgICAgICAgICB0ZXN0c1tyZXNvdXJjZV0gPSBzZWxmLmNyZWF0ZV90ZXN0KHJlc291cmNlLCBjb2RlKQorICAgICAgICB0ZXN0X25hbWVzID0gc29ydGVkKHRlc3RzLnZhbHVlcygpKQorCisgICAgICAgICMgLXUgYWxsOiAyIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctdScsICdhbGwnLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMpCisKKyAgICAgICAgIyAtdSBhdWRpbzogMSByZXNvdXJjZSBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctdWF1ZGlvJywgKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQ9dGVzdHNbJ25ldHdvcmsnXSkKKworICAgICAgICAjIG5vIG9wdGlvbjogMCByZXNvdXJjZXMgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0X25hbWVzKQorCisgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgorICAgICAgICAjIHRlc3QgLXIgYW5kIC0tcmFuZHNlZWQgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQorICAgICAgICAgICAgcHJpbnQoIlRFU1RSQU5ET006ICVzIiAlIHJhbmRvbS5yYW5kaW50KDEsIDEwMDApKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdyYW5kb20nLCBjb2RlKQorCisgICAgICAgICMgZmlyc3QgcnVuIHRvIGdldCB0aGUgb3V0cHV0IHdpdGggdGhlIHJhbmRvbSBzZWVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctcicsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkID0gc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidURVNUUkFORE9NOiAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgdGVzdF9yYW5kb20gPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgIyB0cnkgdG8gcmVwcm9kdWNlIHdpdGggdGhlIHJhbmRvbSBzZWVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctcicsICctLXJhbmRzZWVkPSVzJyAlIHJhbmRzZWVkLCB0ZXN0KQorICAgICAgICByYW5kc2VlZDIgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5kc2VlZDIsIHJhbmRzZWVkKQorCisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidURVNUUkFORE9NOiAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgdGVzdF9yYW5kb20yID0gaW50KG1hdGNoLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfcmFuZG9tMiwgdGVzdF9yYW5kb20pCisKKyAgICBkZWYgdGVzdF9mcm9tZmlsZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tZnJvbWZpbGUKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZSg1KV0KKworICAgICAgICAjIFdyaXRlIHRoZSBsaXN0IG9mIGZpbGVzIHVzaW5nIGEgZm9ybWF0IHNpbWlsYXIgdG8gcmVncnRlc3Qgb3V0cHV0OgorICAgICAgICAjIFsxLzJdIHRlc3RfMQorICAgICAgICAjIFsyLzJdIHRlc3RfMgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAnMDowMDowMCBbMi83XSB0ZXN0X29wY29kZXMgLS0gdGVzdF9ncmFtbWFyIHRvb2sgMCBzZWMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CisgICAgICAgICAgICAgICAgbGluZSA9ICgiMDA6MDA6JTAyaSBbJXMvJXNdICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5kZXgsIGluZGV4LCBsZW4odGVzdHMpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAiIC0tICVzIHRvb2sgMCBzZWMiICUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWZwKQorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gbmFtZQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICdbMi83XSB0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgorICAgICAgICAgICAgICAgIHByaW50KCJbJXMvJXNdICVzIiAlIChpbmRleCwgbGVuKHRlc3RzKSwgbmFtZSksIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJ3Rlc3Rfb3Bjb2RlcycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgcHJpbnQobmFtZSwgZmlsZT1mcCkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICBkZWYgdGVzdF9pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgY29kZSA9IFRFU1RfSU5URVJSVVBURUQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3NpZ2ludCcsIGNvZGU9Y29kZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHModGVzdCwgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsIG9taXR0ZWQ9dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgZGVmIHRlc3Rfc2xvd2VzdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tc2xvd2VzdAorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDMpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1zbG93ZXN0IiwgKnRlc3RzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisgICAgICAgIHJlZ2V4ID0gKCcxMCBzbG93ZXN0IHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnKD86LSAlczogLipcbil7JXN9JworICAgICAgICAgICAgICAgICAlIChzZWxmLlRFU1ROQU1FX1JFR0VYLCBsZW4odGVzdHMpKSkKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9zbG93X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM3MzogdGVzdCAtLXNsb3dlc3Qgd2l0aCBhbiBpbnRlcnJ1cHRlZCB0ZXN0CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCJzaWdpbnQiLCBjb2RlPWNvZGUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgdGVzdHMgPSAoRmFsc2UsIFRydWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHRlc3RzID0gKEZhbHNlLCkKKyAgICAgICAgZm9yIG11bHRpcHJvY2Vzc2luZyBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCAiLWoyIiwgdGVzdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgiLS1zbG93ZXN0IiwgdGVzdCkKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCphcmdzLCBleGl0Y29kZT0xKQorICAgICAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9dGVzdCwgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgICAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tY292ZXJhZ2UKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2NvdmVyYWdlJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tY292ZXJhZ2UiLCB0ZXN0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKQorICAgICAgICByZWdleCA9IChyJ2xpbmVzICtjb3YlICttb2R1bGUgK1wocGF0aFwpXG4nCisgICAgICAgICAgICAgICAgIHInKD86ICpbMC05XSsgKlswLTldezEsMn0lICpbXiBdKyArXChbXildK1wpKykrJykKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS13YWl0CisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCd3YWl0JykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0td2FpdCIsIHRlc3QsIGlucHV0PSdrZXknKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnUHJlc3MgYW55IGtleSB0byBjb250aW51ZScpCisKKyAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mb3JldmVyCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGb3JldmVyVGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICMgU3RvcmUgdGhlIHN0YXRlIGluIHRoZSBidWlsdGlucyBtb2R1bGUsIGJlY2F1c2UgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgIyBtb2R1bGUgaXMgcmVsb2FkIGF0IGVhY2ggcnVuCisgICAgICAgICAgICAgICAgICAgIGlmICdSVU4nIGluIGJ1aWx0aW5zLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWx0aW5zLl9fZGljdF9fWydSVU4nXSA+PSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZmFpbCBhdCB0aGUgM3JkIHJ1bnMiKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID0gMQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdmb3JldmVyJywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mb3JldmVyJywgdGVzdCwgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSozLCBmYWlsZWQ9dGVzdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBhIGRlYnVnIGJ1aWxkJykKKyAgICBkZWYgdGVzdF9odW50cmxlYWtzX2ZkX2xlYWsoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWh1bnRybGVha3MgZm9yIGZpbGUgZGVzY3JpcHRvciBsZWFrCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICAjIElzc3VlICMyNTMwNjogRGlzYWJsZSBwb3B1cHMgYW5kIGxvZ3MgdG8gc3RkZXJyIG9uIGFzc2VydGlvbgorICAgICAgICAgICAgIyBmYWlsdXJlcyBpbiBNU0NSVAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICMgbm8gV2luZG93cywgbyByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICAgICAgICAgIGNsYXNzIEZETGVha1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2xlYWsoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCisgICAgICAgICAgICAgICAgICAgICMgYnVnOiBuZXZlciBjbG9lcyB0aGUgZmlsZSBkZXNjcmlwdG9yCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2h1bnRybGVha3MnLCBjb2RlPWNvZGUpCisKKyAgICAgICAgZmlsZW5hbWUgPSAncmVmbG9nLnR4dCcKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0taHVudHJsZWFrcycsICczOjM6JywgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdGNvZGU9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdLCBmYWlsZWQ9dGVzdCkKKworICAgICAgICBsaW5lID0gJ2JlZ2lubmluZyA2IHJlcGV0aXRpb25zXG4xMjM0NTZcbi4uLi4uLlxuJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZS5lc2NhcGUobGluZSkpCisKKyAgICAgICAgbGluZTIgPSAnJXMgbGVha2VkIFsxLCAxLCAxXSBmaWxlIGRlc2NyaXB0b3JzLCBzdW09M1xuJyAlIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgb3V0cHV0KQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICByZWZsb2cgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGluZTIsIHJlZmxvZykKKworICAgIGRlZiB0ZXN0X2xpc3RfdGVzdHMoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWxpc3QtdGVzdHMKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpIGluIHJhbmdlKDUpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1saXN0LXRlc3RzJywgKnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5yc3RyaXAoKS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weSBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQppbmRleCAxNTgyY2FhLi41ODcyOWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CkBAIC0yNTMsNiArMjUzLDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhICE9IGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIDwgYikKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBOb25lLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogTm9uZSA8IDQyLCByIic8JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPiBOb25lLCByIic+JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPCBOb25lLCByIic8JyAuKiBvZiAnc3RyJyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPj0gNjY2LCByIic+PScgLiogb2YgJ3N0cicgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8PSBOb25lLCByIic8PScgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyID49IE5vbmUsIHIiJz49JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBbXSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdsaXN0JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogKCkgPiBbXSwgciInPicgLiogb2YgJ3R1cGxlJyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lID49IE5vbmUsIHIiJz49JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBTcGFtKCkgPCA0MiwgciInPCcgLiogb2YgJ1NwYW0nIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBTcGFtKCksIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnU3BhbSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8PSBTcGFtKCksIHIiJzw9JyAuKiBvZiAnU3BhbScgYW5kICdTcGFtJyIpLAorICAgICAgICBdCisgICAgICAgIGZvciBpLCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0cyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIHRlc3RbMV0pOgorICAgICAgICAgICAgICAgICAgICB0ZXN0WzBdKCkKKworCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kaWN0cyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CmluZGV4IDg1M2U3NzMuLjBkYzEwODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdW5pdHRlc3QubW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgcmxjb21wbGV0ZXIKIAogY2xhc3MgQ29tcGxldGVNZToKICAgICAiIiIgVHJpdmlhbCBjbGFzcyB1c2VkIGluIHRlc3Rpbmcgcmxjb21wbGV0ZXIuQ29tcGxldGVyLiAiIiIKICAgICBzcGFtID0gMQorICAgIF9oYW0gPSAyCiAKIAogY2xhc3MgVGVzdFJsY29tcGxldGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUyLDE4ICs1MywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3RyLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ3R1cGxlLmZvb3NwYW1lZ2cnKSwgW10pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKHsnTm9uZS4lcyVzJyAlICh4LCAnKCcgaWYgeCAhPSAnX19kb2NfXycgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGRpcihOb25lKX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLicpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuXycpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuX18nKSwgZXhwZWN0ZWQpCiAKICAgICAgICAgIyB0ZXN0IHdpdGggYSBjdXN0b21pemVkIG5hbWVzcGFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5zcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5zcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZW1lLmVnZycpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1ybygnLCAnQ29tcGxldGVNZS5zcGFtJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUuX2hhbSddKQorICAgICAgICBtYXRjaGVzID0gc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl9fJykKKyAgICAgICAgZm9yIHggaW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LnN0YXJ0c3dpdGgoJ0NvbXBsZXRlTWUuX18nKSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25hbWVfXycsIG1hdGNoZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NvbXBsZXRlTWUuX19uZXdfXygnLCBtYXRjaGVzKQogCi0gICAgICAgIENvbXBsZXRlTWUubWUgPSBDb21wbGV0ZU1lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1lLm1lLnNwYW0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQorICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChDb21wbGV0ZU1lLCAibWUiLCBDb21wbGV0ZU1lLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5tZS5tZS5zcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZWdnLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAKICAgICBkZWYgdGVzdF9leGNlc3NpdmVfZ2V0YXR0cihzZWxmKToKICAgICAgICAgIyBFbnN1cmUgZ2V0YXR0cigpIGlzIGludm9rZWQgbm8gbW9yZSB0aGFuIG9uY2UgcGVyIGF0dHJpYnV0ZQpAQCAtNzgsMTQgKzkzLDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdmLmInLCAwKSwgJ2YuYmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhbGxzLCAxKQogCisgICAgZGVmIHRlc3RfdW5jcmVhdGVkX2F0dHIoc2VsZik6CisgICAgICAgICMgQXR0cmlidXRlcyBsaWtlIHByb3BlcnRpZXMgYW5kIHNsb3RzIHNob3VsZCBiZSBjb21wbGV0ZWQgZXZlbiB3aGVuCisgICAgICAgICMgdGhleSBoYXZlbid0IGJlZW4gY3JlYXRlZCBvbiBhbiBpbnN0YW5jZQorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoImJhciIsKQorICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoZGljdChmPUZvbygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuJywgMCksICdmLmJhcicpCisKICAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgncmxjb21wbGV0ZXIuX3JlYWRsaW5lX2F2YWlsYWJsZScsIEZhbHNlKQogICAgIGRlZiB0ZXN0X2NvbXBsZXRlKHNlbGYpOgogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnJywgMCksICdcdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMCksICdhbmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhbicsIDApLCAnYW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3BhJywgMCksICdwYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ0ZhJywgMCksICdGYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDApLCAnZWxpZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZWwnLCAxKSwgJ2Vsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHInLCAwKSwgJ3RyeTonKQogCiAgICAgZGVmIHRlc3RfZHVwbGljYXRlX2dsb2JhbHMoc2VsZik6CiAgICAgICAgIG5hbWVzcGFjZSA9IHsKQEAgLTk4LDkgKzEyNiwxMCBAQAogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIobmFtZXNwYWNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmFsc2UnLCAwKSwgJ0ZhbHNlJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDEpKSAgIyBObyBkdXBsaWNhdGVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCcpCisgICAgICAgICMgU3BhY2Ugb3IgY29sb24gYWRkZWQgZHVlIHRvIGJlaW5nIGEgcmVzZXJ2ZWQga2V5d29yZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMCksICdhc3NlcnQgJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5OicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMSkpCiAgICAgICAgICMgTm8gb3BlbmluZyBicmFja2V0ICIoIiBiZWNhdXNlIHdlIG92ZXJyb2RlIHRoZSBidWlsdC1pbiBjbGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnbWVtb3J5dmlldycsIDApLCAnbWVtb3J5dmlldycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQppbmRleCBkMDEyNjZmLi4wZjY0YmE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCi1mcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IsIEhUVFBFcnJvcgotZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCiB0cnk6CkBAIC0xMSwyNDYgKzExLDIzOSBAQAogICAgIHRocmVhZGluZyA9IE5vbmUKIAogCi1jbGFzcyBSb2JvdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXg9Tm9uZSwgcGFyc2VyPU5vbmUsIHVybD1Ob25lLCBnb29kPU5vbmUsIGFnZW50PU5vbmUpOgotICAgICAgICAjIHdvcmthcm91bmQgdG8gbWFrZSB1bml0dGVzdCBkaXNjb3Zlcnkgd29yayAoc2VlICMxNzA2NikKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5kZXgsIGludCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgaWYgZ29vZDoKLSAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgZ29vZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBiYWQsICVzKSIgJSAoaW5kZXgsIHVybCkKLSAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5nb29kID0gZ29vZAotICAgICAgICBzZWxmLmFnZW50ID0gYWdlbnQKK2NsYXNzIEJhc2VSb2JvdFRlc3Q6CisgICAgcm9ib3RzX3R4dCA9ICcnCisgICAgYWdlbnQgPSAndGVzdF9yb2JvdHBhcnNlcicKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbXQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi51cmwsIHR1cGxlKToKLSAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLnVybAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gc2VsZi51cmwKLSAgICAgICAgICAgIGFnZW50ID0gc2VsZi5hZ2VudAotICAgICAgICBpZiBzZWxmLmdvb2Q6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHNlbGYucm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKKyAgICAgICAgc2VsZi5wYXJzZXIucGFyc2UobGluZXMpCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RyCisgICAgZGVmIGdldF9hZ2VudF9hbmRfdXJsKHNlbGYsIHVybCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodXJsLCB0dXBsZSk6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gdXJsCisgICAgICAgICAgICByZXR1cm4gYWdlbnQsIHVybAorICAgICAgICByZXR1cm4gc2VsZi5hZ2VudCwgdXJsCiAKLXRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBkZWYgdGVzdF9nb29kX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5nb29kOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLWRlZiBSb2JvdFRlc3QoaW5kZXgsIHJvYm90c190eHQsIGdvb2RfdXJscywgYmFkX3VybHMsCi0gICAgICAgICAgICAgIGFnZW50PSJ0ZXN0X3JvYm90cGFyc2VyIik6CisgICAgZGVmIHRlc3RfYmFkX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5iYWQ6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLSAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHJvYm90c190eHQpLnJlYWRsaW5lcygpCi0gICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlKGxpbmVzKQotICAgIGZvciB1cmwgaW4gZ29vZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAxLCBhZ2VudCkpCi0gICAgZm9yIHVybCBpbiBiYWRfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMCwgYWdlbnQpKQogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLmh0bWwgKGZldGNoZWQgMjAwMikKLQotIyAxLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIERpc2FsbG93OiAvdG1wLyAjIHRoZXNlIHdpbGwgc29vbiBkaXNhcHBlYXIKIERpc2FsbG93OiAvZm9vLmh0bWwKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCddCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvdG1wL3h4eCcsICcvZm9vLmh0bWwnXQogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCddCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnL3RtcC94eHgnLCcvZm9vLmh0bWwnXQogCi1Sb2JvdFRlc3QoMSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMi4KLWRvYyA9ICIiIgorY2xhc3MgQ3Jhd2xEZWxheUFuZEN1c3RvbUFnZW50VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgcm9ib3RzLnR4dCBmb3IgaHR0cDovL3d3dy5leGFtcGxlLmNvbS8KIAogVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQogRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCiAKICMgQ3liZXJtYXBwZXIga25vd3Mgd2hlcmUgdG8gZ28uCiBVc2VyLWFnZW50OiBjeWJlcm1hcHBlcgogRGlzYWxsb3c6CisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJywgKCdjeWJlcm1hcHBlcicsICcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCi0iIiIKIAotZ29vZCA9IFsnLycsJy90ZXN0Lmh0bWwnLCgnY3liZXJtYXBwZXInLCcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCi0KLVJvYm90VGVzdCgyLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAzLgotZG9jID0gIiIiCitjbGFzcyBSZWplY3RBbGxSb2JvdHNUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyBnbyBhd2F5CiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogLwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvJywgJy90bXAvJ10KIAotZ29vZCA9IFtdCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnLycsJy90bXAvJ10KIAotUm9ib3RUZXN0KDMsIGRvYywgZ29vZCwgYmFkKQorY2xhc3MgQmFzZVJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0KToKIAotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy1yZmMuaHRtbCAoZmV0Y2hlZCAyMDAyKQorICAgIGRlZiB0ZXN0X3JlcXVlc3RfcmF0ZShzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2QgKyBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNyYXdsX2RlbGF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoYWdlbnQpLCBzZWxmLmNyYXdsX2RlbGF5CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVlc3RfcmF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkucmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5yZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoYWdlbnQpLnNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5zZWNvbmRzCisgICAgICAgICAgICAgICAgICAgICkKIAotIyA0LgotZG9jID0gIiIiCisKK2NsYXNzIENyYXdsRGVsYXlBbmRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBmaWd0cmVlCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5LzMwCiBEaXNhbGxvdzogL3RtcAogRGlzYWxsb3c6IC9hJTNjZC5odG1sCiBEaXNhbGxvdzogL2ElMmZiLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorICAgICIiIgorICAgIGFnZW50ID0gJ2ZpZ3RyZWUnCisgICAgcmVxdWVzdF9yYXRlID0gbmFtZWR0dXBsZSgncmVxX3JhdGUnLCAncmVxdWVzdHMgc2Vjb25kcycpKDksIDMwKQorICAgIGNyYXdsX2RlbGF5ID0gMworICAgIGdvb2QgPSBbKCdmaWd0cmVlJywgJy9mb28uaHRtbCcpXQorICAgIGJhZCA9IFsnL3RtcCcsICcvdG1wLmh0bWwnLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLAorICAgICAgICAgICAnL2ElMmZiLmh0bWwnLCAnL35qb2UvaW5kZXguaHRtbCddCiAKLWdvb2QgPSBbXSAjIFhGQUlMICcvYS9iLmh0bWwnCi1iYWQgPSBbJy90bXAnLCcvdG1wLmh0bWwnLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCcvYSUyZmIuaHRtbCcsCi0gICAgICAgJy9+am9lL2luZGV4Lmh0bWwnCi0gICAgICAgXQogCi1Sb2JvdFRlc3QoNCwgZG9jLCBnb29kLCBiYWQsICdmaWd0cmVlJykKLVJvYm90VGVzdCg1LCBkb2MsIGdvb2QsIGJhZCwgJ0ZpZ1RyZWUgUm9ib3QgbGlid3d3LXBlcmwvNS4wNCcpCitjbGFzcyBEaWZmZXJlbnRBZ2VudFRlc3QoQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdCk6CisgICAgYWdlbnQgPSAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JworICAgICMgdGhlc2UgYXJlIG5vdCBhY3R1YWxseSB0ZXN0ZWQsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHBhcnNlIGl0CisgICAgIyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGUgaW5wdXQgcGFyYW1ldGVycworICAgIHJlcXVlc3RfcmF0ZSA9IE5vbmUKKyAgICBjcmF3bF9kZWxheSA9IE5vbmUKIAotIyA2LgotZG9jID0gIiIiCisKK2NsYXNzIEludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3RtcC8KIERpc2FsbG93OiAvYSUzQ2QuaHRtbAogRGlzYWxsb3c6IC9hL2IuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5L2JhbmFuYQorICAgICIiIgorICAgIGdvb2QgPSBbJy90bXAnXQorICAgIGJhZCA9IFsnL3RtcC8nLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLCAnL2EvYi5odG1sJywKKyAgICAgICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCisgICAgY3Jhd2xfZGVsYXkgPSAzCiAKLWdvb2QgPSBbJy90bXAnLF0gIyBYRkFJTDogJy9hJTJmYi5odG1sJwotYmFkID0gWycvdG1wLycsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsIi9hL2IuaHRtbCIsCi0gICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCiAKLVJvYm90VGVzdCg2LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQotCi0jIDcuCi1kb2MgPSAiIiIKK2NsYXNzIEludmFsaWRDcmF3bERlbGF5VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLUFnZW50OiAqCiBEaXNhbGxvdzogLy4KLSIiIgorQ3Jhd2wtZGVsYXk6IHBlYXJzCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Zvby5odG1sJ10KKyAgICAjIGJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKKyAgICBiYWQgPSBbXQogCi1nb29kID0gWycvZm9vLmh0bWwnXQotYmFkID0gW10gIyBCdWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCiAKLVJvYm90VGVzdCg3LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIEdvb2dsZTogaHR0cDovL3d3dy5nb29nbGUuY29tL3N1cHBvcnQvd2VibWFzdGVycy9iaW4vYW5zd2VyLnB5P2hsPWVuJmFuc3dlcj00MDM2NAotCi0jIDguCi1kb2MgPSAiIiIKK2NsYXNzIEFub3RoZXJJbnZhbGlkUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIGFsc28gdGVzdCB0aGF0IEFsbG93IGFuZCBEaWFzYWxsb3cgd29ya3Mgd2VsbCB3aXRoIGVhY2ggb3RoZXIKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgorUmVxdWVzdC1yYXRlOiB3aGFsZS9iYW5hbmEKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLVJvYm90VGVzdCg4LCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLSMgOS4gIFRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhIHN1YnN0cmluZyBvZgotIyAgICAgIkdvb2dsZWJvdC1Nb2JpbGUiLCBzbyB0ZXN0IDEwIHdvcmtzIGp1c3QgbGlrZSB0ZXN0IDkuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudE9yZGVyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0aGUgb3JkZXIgb2YgVXNlci1hZ2VudCBzaG91bGQgYmUgY29ycmVjdC4gbm90ZQorICAgICMgdGhhdCB0aGlzIGZpbGUgaXMgaW5jb3JyZWN0IGJlY2F1c2UgIkdvb2dsZWJvdCIgaXMgYQorICAgICMgc3Vic3RyaW5nIG9mICJHb29nbGVib3QtTW9iaWxlIgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIERpc2FsbG93OiAvCiAKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKIEFsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDksIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDEwLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQotCi0jIDExLiAgR2V0IHRoZSBvcmRlciBjb3JyZWN0LgotZG9jID0gIiIiCi1Vc2VyLWFnZW50OiBHb29nbGVib3QtTW9iaWxlCi1BbGxvdzogLwotCi1Vc2VyLWFnZW50OiBHb29nbGVib3QKLURpc2FsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDExLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLWdvb2QgPSBbJy9zb21ldGhpbmcuanBnJ10KLWJhZCA9IFtdCi0KLVJvYm90VGVzdCgxMiwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QtTW9iaWxlIikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgYmFkID0gWycvc29tZXRoaW5nLmpwZyddCiAKIAotIyAxMy4gIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcgaW4gIzguICBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZQotIyAgICAgIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbC4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50R29vZ2xlTW9iaWxlVGVzdChVc2VyQWdlbnRPcmRlcmluZ1Rlc3QpOgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdC1Nb2JpbGUnCisKKworY2xhc3MgR29vZ2xlVVJMT3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcuIFlvdSBuZWVkCisgICAgIyB0byBzcGVjaWZ5IHRoZSBVUkxzIGZyb20gbW9yZSBzcGVjaWZpYyB0byBtb3JlIGdlbmVyYWwKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgotCi1nb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCi1iYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQotCi1Sb2JvdFRlc3QoMTMsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iZ29vZ2xlYm90IikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdnb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKIAotIyAxNC4gRm9yIGlzc3VlICM2MzI1IChxdWVyeSBzdHJpbmcgc3VwcG9ydCkKLWRvYyA9ICIiIgorY2xhc3MgRGlzYWxsb3dRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgc2VlIGlzc3VlICM2MzI1IGZvciBkZXRhaWxzCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoP25hbWU9dmFsdWUKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGgnXQorICAgIGJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGg/bmFtZT12YWx1ZSddCiAKLVJvYm90VGVzdCgxNCwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTUuIEZvciBpc3N1ZSAjNDEwOCAob2JleSBmaXJzdCAqIGVudHJ5KQotZG9jID0gIiIiCitjbGFzcyBVc2VGaXJzdFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBvYmV5IGZpcnN0ICogZW50cnkgKCM0MTA4KQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3NvbWUvcGF0aAogCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoJ10KIAotZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGgnXQogCi1Sb2JvdFRlc3QoMTUsIGRvYywgZ29vZCwgYmFkKQotCi0jIDE2LiBFbXB0eSBxdWVyeSAoaXNzdWUgIzE3NDAzKS4gTm9ybWFsaXppbmcgdGhlIHVybCBmaXJzdC4KLWRvYyA9ICIiIgorY2xhc3MgRW1wdHlRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgbm9ybWFsaXplIHRoZSBVUkwgZmlyc3QgKCMxNzQwMykKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogQWxsb3c6IC9zb21lL3BhdGg/CiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aD8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGg/J10KKyAgICBiYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQotYmFkID0gWycvYW5vdGhlci9wYXRoPyddCiAKLVJvYm90VGVzdCgxNiwgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBEZWZhdWx0RW50cnlUZXN0KEJhc2VSZXF1ZXN0UmF0ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAorVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQorRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8KKyAgICAiIiIKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoMywgMTUpCisgICAgY3Jhd2xfZGVsYXkgPSAxCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KIAogCiBjbGFzcyBSb2JvdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC0yODMsOSArMjc2LDcgQEAKICAgICAgICAgc2VsZi50LmpvaW4oKQogICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYudGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZSgpCi0KKyAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZShzZWxmKToKICAgICAgICAgYWRkciA9IHNlbGYuc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAgICAgICAgIHVybCA9ICdodHRwOi8vJyArIHN1cHBvcnQuSE9TVCArICc6JyArIHN0cihhZGRyWzFdKQpAQCAtMjk1LDI2ICsyODYsNDcgQEAKICAgICAgICAgcGFyc2VyLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5jYW5fZmV0Y2goIioiLCByb2JvdHNfdXJsKSkKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJyVzJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCiAKIGNsYXNzIE5ldHdvcmtUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBAdW5pdHRlc3Quc2tpcCgnZG9lcyBub3QgaGFuZGxlIHRoZSBnemlwIGVuY29kaW5nIGRlbGl2ZXJlZCBieSBweWRvdG9yZycpCi0gICAgZGVmIHRlc3RQeXRob25Pcmcoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCd3d3cucHl0aG9uLm9yZycpOgotICAgICAgICAgICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigKLSAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKQotICAgICAgICAgICAgcGFyc2VyLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICAgICAgICAgIHBhcnNlci5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKSkKKyAgICBiYXNlX3VybCA9ICdodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0LycKKyAgICByb2JvdHNfdHh0ID0gJ3t9ZWxzZXdoZXJlL3JvYm90cy50eHQnLmZvcm1hdChiYXNlX3VybCkKIAotZGVmIGxvYWRfdGVzdHMobG9hZGVyLCBzdWl0ZSwgcGF0dGVybik6Ci0gICAgc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoTmV0d29ya1Rlc3RDYXNlKQotICAgIHN1aXRlLmFkZFRlc3QodGVzdHMpCi0gICAgc3VpdGUuYWRkVGVzdChQYXNzd29yZFByb3RlY3RlZFNpdGVUZXN0Q2FzZSgpKQotICAgIHJldHVybiBzdWl0ZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGNscy5iYXNlX3VybCk6CisgICAgICAgICAgICBjbHMucGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcihjbHMucm9ib3RzX3R4dCkKKyAgICAgICAgICAgIGNscy5wYXJzZXIucmVhZCgpCisKKyAgICBkZWYgdXJsKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gJ3t9e317fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5iYXNlX3VybCwgcGF0aCwgJy8nIGlmIG5vdCBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzFdIGVsc2UgJycKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuZGlzYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmFsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlbGYucGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoJyonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKKworICAgIGRlZiB0ZXN0X2Nhbl9mZXRjaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCdlbHNld2hlcmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYuYmFzZV91cmwpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLnVybCgnYnJpYW4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLnVybCgnd2Vic3RhdHMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLmJhc2VfdXJsKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfNDA0KHNlbGYpOgorICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKHNlbGYudXJsKCdpLXJvYm90LnR4dCcpKQorICAgICAgICBwYXJzZXIucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIucmVxdWVzdF9yYXRlKCcqJykpCiAKIGlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weSBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKaW5kZXggZGI1NWRiNy4uMDJiNGQ2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CkBAIC01NzcsMTMgKzU3NywxNCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fZGVsX3BrZywgcGtnX2RpcikKICAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDIsIG1heF9kZXB0aCsxKToKICAgICAgICAgICAgIHNlbGYuX2FkZF9yZWxhdGl2ZV9tb2R1bGVzKHBrZ19kaXIsICIiLCBkZXB0aCkKLSAgICAgICAgZm9yIGZpbmRlciwgbW9kX25hbWUsIGlzcGtnIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRlciwKKyAgICAgICAgZm9yIG1vZHVsZWluZm8gaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mbywgcGtndXRpbC5Nb2R1bGVJbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8ubW9kdWxlX2ZpbmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIpCi0gICAgICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICBpZiBtb2R1bGVpbmZvLmlzcGtnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CmluZGV4IGZlOGU3ODUuLmViZjg4NTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzY2hlZAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMTczLDE3ICsxNzIsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIucXVldWUsIFtlMSwgZTIsIGUzLCBlNCwgZTVdKQogCiAgICAgZGVmIHRlc3RfYXJnc19rd2FyZ3Moc2VsZik6Ci0gICAgICAgIGZsYWcgPSBbXQotCisgICAgICAgIHNlcSA9IFtdCiAgICAgICAgIGRlZiBmdW4oKmEsICoqYik6Ci0gICAgICAgICAgICBmbGFnLmFwcGVuZChOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCAoMSwyLDMpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB7ImZvbyI6MX0pCisgICAgICAgICAgICBzZXEuYXBwZW5kKChhLCBiKSkKIAorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQogICAgICAgICBzY2hlZHVsZXIgPSBzY2hlZC5zY2hlZHVsZXIodGltZS50aW1lLCB0aW1lLnNsZWVwKQotICAgICAgICB6ID0gc2NoZWR1bGVyLmVudGVyYWJzKDAuMDEsIDEsIGZ1biwgYXJndW1lbnQ9KDEsMiwzKSwga3dhcmdzPXsiZm9vIjoxfSkKKyAgICAgICAgc2NoZWR1bGVyLmVudGVyYWJzKG5vdywgMSwgZnVuKQorICAgICAgICBzY2hlZHVsZXIuZW50ZXJhYnMobm93LCAxLCBmdW4sIGFyZ3VtZW50PSgxLCAyKSkKKyAgICAgICAgc2NoZWR1bGVyLmVudGVyYWJzKG5vdywgMSwgZnVuLCBhcmd1bWVudD0oJ2EnLCAnYicpKQorICAgICAgICBzY2hlZHVsZXIuZW50ZXJhYnMobm93LCAxLCBmdW4sIGFyZ3VtZW50PSgxLCAyKSwga3dhcmdzPXsiZm9vIjogM30pCiAgICAgICAgIHNjaGVkdWxlci5ydW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIFtOb25lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKHNlcSwgWworICAgICAgICAgICAgKCgpLCB7fSksCisgICAgICAgICAgICAoKDEsIDIpLCB7fSksCisgICAgICAgICAgICAoKCdhJywgJ2InKSwge30pLAorICAgICAgICAgICAgKCgxLCAyKSwgeydmb28nOiAzfSkKKyAgICAgICAgXSkKIAogICAgIGRlZiB0ZXN0X3J1bl9ub25fYmxvY2tpbmcoc2VsZik6CiAgICAgICAgIGwgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5IGIvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMWQwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKQEAgLTAsMCArMSwxMjQgQEAKKyIiIlRlc3QgdGhlIHNlY3JldHMgbW9kdWxlLgorCitBcyBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gc2VjcmV0cyBhcmUgdGhpbiB3cmFwcGVycyBhcm91bmQgZnVuY3Rpb25zCitkZWZpbmVkIGVsc2V3aGVyZSwgd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZW0gZXhoYXVzdGl2ZWx5LgorIiIiCisKKworaW1wb3J0IHNlY3JldHMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN0cmluZworCisKKyMgPT09IFVuaXQgdGVzdHMgPT09CisKK2NsYXNzIENvbXBhcmVfRGlnZXN0X1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHNlY3JldHMuY29tcGFyZV9kaWdlc3QgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgdGVzdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCBlcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBmb3IgcyBpbiAoImEiLCAiYmNkIiwgInh5ejEyMyIpOgorICAgICAgICAgICAgYSA9IHMqMTAwCisgICAgICAgICAgICBiID0gcyoxMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X3VuZXF1YWwoc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYXJlX2RpZ2VzdCBmdW5jdGlvbmFsaXR5IHdpdGggdW5lcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmNkIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChiImFiYyIsIGIiYWJjZCIpKQorICAgICAgICBmb3IgcyBpbiAoIngiLCAibW4iLCAiYTFiMmMzIik6CisgICAgICAgICAgICBhID0gcyoxMDAgKyAicSIKKyAgICAgICAgICAgIGIgPSBzKjEwMCArICJrIgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEuZW5jb2RlKCd1dGYtOCcpLCBiLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICBkZWYgdGVzdF9iYWRfdHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJhaXNlcyB3aXRoIG1peGVkIHR5cGVzLgorICAgICAgICBhID0gJ2FiY2RlJworICAgICAgICBiID0gYS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgc3RyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShiLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWNyZXRzLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGIsIGEpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBjb21wYXJlX2RpZ2VzdCByZXR1cm5zIGEgYm9vbC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmMiKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJ4eXoiKSwgYm9vbCkKKworCitjbGFzcyBSYW5kb21fVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgd3JhcHBlcnMgYXJvdW5kIFN5c3RlbVJhbmRvbSBtZXRob2RzLiIiIgorCisgICAgZGVmIHRlc3RfcmFuZGJpdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYml0cy4KKyAgICAgICAgZXJybXNnID0gInJhbmRiaXRzKCVkKSByZXR1cm5lZCAlZCIKKyAgICAgICAgZm9yIG51bWJpdHMgaW4gKDMsIDEyLCAzMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg2KToKKyAgICAgICAgICAgICAgICBuID0gc2VjcmV0cy5yYW5kYml0cyhudW1iaXRzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IG4gPCAyKipudW1iaXRzLCBlcnJtc2cgJSAobnVtYml0cywgbikpCisKKyAgICBkZWYgdGVzdF9jaG9pY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBjaG9pY2UuCisgICAgICAgIGl0ZW1zID0gWzEsIDIsIDQsIDgsIDE2LCAzMiwgNjRdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNob2ljZShpdGVtcykgaW4gaXRlbXMpCisKKyAgICBkZWYgdGVzdF9yYW5kYmVsb3coc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYmVsb3cuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VjcmV0cy5yYW5kYmVsb3coaSksIHJhbmdlKGkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWNyZXRzLnJhbmRiZWxvdywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VjcmV0cy5yYW5kYmVsb3csIC0xKQorCisKK2NsYXNzIFRva2VuX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRva2VuIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiB0ZXN0X3Rva2VuX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0b2tlbl8qIGZ1bmN0aW9ucyBoYW5kbGUgZGVmYXVsdCBzaXplIGNvcnJlY3RseS4KKyAgICAgICAgZm9yIGZ1bmMgaW4gKHNlY3JldHMudG9rZW5fYnl0ZXMsIHNlY3JldHMudG9rZW5faGV4LAorICAgICAgICAgICAgICAgICAgICAgc2VjcmV0cy50b2tlbl91cmxzYWZlKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IiAlIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggTm9uZSIgJSBuYW1lKQorICAgICAgICBzaXplID0gc2VjcmV0cy5ERUZBVUxUX0VOVFJPUFkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhOb25lKSksIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5faGV4KE5vbmUpKSwgMipzaXplKQorCisgICAgZGVmIHRlc3RfdG9rZW5fYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9ieXRlcy4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDgsIDE3LCAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy50b2tlbl9ieXRlcyhuKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhuKSksIG4pCisKKyAgICBkZWYgdGVzdF90b2tlbl9oZXgoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9oZXguCisgICAgICAgIGZvciBuIGluICgxLCAxMiwgMjUsIDkwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5faGV4KG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMipuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBzdHJpbmcuaGV4ZGlnaXRzIGZvciBjIGluIHMpKQorCisgICAgZGVmIHRlc3RfdG9rZW5fdXJsc2FmZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX3VybHNhZmUuCisgICAgICAgIGxlZ2FsID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJy1fJworICAgICAgICBmb3IgbiBpbiAoMSwgMTEsIDI4LCA3Nik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBsZWdhbCBmb3IgYyBpbiBzKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA3NTk0MzAzLi4wMjAyOTgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgc3RyaW5nCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzI5LDYgKzczMCwyNSBAQAogICAgICAgICAgICAgYWRkaGFzaHZhbHVlKGhhc2goZnJvemVuc2V0KFtlIGZvciBlLCBtIGluIGVsZW1tYXNrcyBpZiBtJmldKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhhc2h2YWx1ZXMpLCAyKipuKQogCisgICAgICAgIGRlZiB6Zl9yYW5nZShuKToKKyAgICAgICAgICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2V0LXRoZW9yZXRpY19kZWZpbml0aW9uX29mX25hdHVyYWxfbnVtYmVycworICAgICAgICAgICAgbnVtcyA9IFtmcm96ZW5zZXQoKV0KKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4tMSk6CisgICAgICAgICAgICAgICAgbnVtID0gZnJvemVuc2V0KG51bXMpCisgICAgICAgICAgICAgICAgbnVtcy5hcHBlbmQobnVtKQorICAgICAgICAgICAgcmV0dXJuIG51bXNbOm5dCisKKyAgICAgICAgZGVmIHBvd2Vyc2V0KHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbWFwKGZyb3plbnNldCwgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhzLCBpKSkKKworICAgICAgICBmb3IgbiBpbiByYW5nZSgxOCk6CisgICAgICAgICAgICB0ID0gMiAqKiBuCisgICAgICAgICAgICBtYXNrID0gdCAtIDEKKyAgICAgICAgICAgIGZvciBudW1zIGluIChyYW5nZSwgemZfcmFuZ2UpOgorICAgICAgICAgICAgICAgIHUgPSBsZW4oe2ggJiBtYXNrIGZvciBoIGluIG1hcChoYXNoLCBwb3dlcnNldChudW1zKG4pKSl9KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcig0KnUsIHQpCisKIGNsYXNzIEZyb3plblNldFN1YmNsYXNzKGZyb3plbnNldCk6CiAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCA1NWI1MzNkLi4zOTM2Yzk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTE3MywxNiArMTczLDExNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzICE9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRhdGFbaV1bMF0sIGwsIHNlbGYuZGF0YVtpXVsxOl0pKQogCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdEFtcGVyc2FuZEFuZFBpcGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiAmLCB8IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogJiYsICYsIHwmLCA7JiwgOzsmCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIHwgYW5kIHx8CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJyYmJywgJyYnLCAnfCYnLCAnOyYnLCAnOzsmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3x8JywgJ3wnLCAnJnwnLCAnO3wnLCAnOzt8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNlY2hvIGJ5ZScgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdlY2hvJywgJ2J5ZSddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFNlbWljb2xvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mIDsiIiIKKyAgICAgICAgIyBDb3VsZCB0YWtlIHRoZXNlIGZvcm1zOiA7LCA7OywgOyYsIDs7JgorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc7JywgJzs7JywgJzsmJywgJzs7JicpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRSZWRpcmVjdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mID4iIiIKKyAgICAgICAgIyBvZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgdG8gPCwgfAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc8JywgJ3wnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBvdXQnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzb3V0JyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ291dCddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFBhcmVuKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgKCkiIiIKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBzcmMgPSBbJyggZWNobyBoaSApJywKKyAgICAgICAgICAgICAgICcoZWNobyBoaSknXQorICAgICAgICByZWYgPSBbJygnLCAnZWNobycsICdoaScsICcpJ10KKyAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRDdXN0b20oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyB3aXRoIGN1c3RvbSBjaGFycyIiIgorICAgICAgICByZWYgPSBbJ34vYScsICcmJywgJyYnLCAnYi1jJywgJy0tY29sb3I9YXV0bycsICd8fCcsICdkJywgJyoucHk/J10KKyAgICAgICAgc3MgPSAifi9hICYmIGItYyAtLWNvbG9yPWF1dG8gfHwgZCAqLnB5PyIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RUb2tlblR5cGVzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgdG9rZW5zIGFyZSBzcGxpdCB3aXRoIHR5cGVzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBmb3Igc291cmNlLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYSAmJiBiIHx8IGMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsICdhJyksICgnJiYnLCAnYycpLCAoJ2InLCAnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnfHwnLCAnYycpLCAoJ2MnLCAnYScpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNvdXJjZSwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIG9ic2VydmVkID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdCA9IHMuZ2V0X3Rva2VuKCkKKyAgICAgICAgICAgICAgICBpZiB0ID09IHMuZW9mOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHRbMF0gaW4gcy5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYycKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0dCA9ICdhJworICAgICAgICAgICAgICAgIG9ic2VydmVkLmFwcGVuZCgodCwgdHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNlcnZlZCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uSW5Xb3JkQ2hhcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbnkgcHVuY3R1YXRpb24gY2hhcnMgYXJlIHJlbW92ZWQgZnJvbSB3b3JkY2hhcnMiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhX2JfX2MnLCBwdW5jdHVhdGlvbl9jaGFycz0nXycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ18nLCBzLndvcmRjaGFycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnXycsICdiJywgJ19fJywgJ2MnXSkKKworICAgIGRlZiB0ZXN0UHVuY3R1YXRpb25XaXRoV2hpdGVzcGFjZVNwbGl0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgd2l0aCB3aGl0ZXNwYWNlX3NwbGl0LCBiZWhhdmlvdXIgaXMgYXMgZXhwZWN0ZWQiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIEZhbHNlLCBzbyBzcGxpdHRpbmcgd2lsbCBiZSBiYXNlZCBvbgorICAgICAgICAjIHB1bmN0dWF0aW9uX2NoYXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJyYmJywgJ2InLCAnfCcsICd8JywgJ2MnXSkKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgcy53aGl0ZXNwYWNlX3NwbGl0ID0gVHJ1ZQorICAgICAgICAjIHdoaXRlc3BhY2Vfc3BsaXQgaXMgVHJ1ZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyB3aGl0ZSBzcGFjZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3x8JywgJ2MnXSkKKwogICAgIGRlZiB0ZXN0RW1wdHlTdHJpbmdIYW5kbGluZyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHBhcnNpbmcgb2YgZW1wdHkgc3RyaW5ncyBpcyBjb3JyZWN0bHkgaGFuZGxlZC4iIiIKICAgICAgICAgIyBzZWUgSXNzdWUgIzIxOTk5CiAgICAgICAgIGV4cGVjdGVkID0gWycnLCAnKScsICdhYmMnXQotCi0gICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSkKLSAgICAgICAgc2xpc3QgPSBsaXN0KHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQorICAgICAgICBmb3IgcHVuY3QgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSwgcHVuY3R1YXRpb25fY2hhcnM9cHVuY3QpCisgICAgICAgICAgICBzbGlzdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQogICAgICAgICBleHBlY3RlZCA9IFsiJyciLCAnKScsICdhYmMnXQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIpCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IDcwOWZlZWIuLjJhZDNhMjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC0yMyw3ICsyMyw4IEBACiBpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgY2FwdHVyZWRfc3Rkb3V0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZF9ub3Rfcm9vdCkKIAogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCkBAIC0xMTUsOSArMTE2LDcgQEAKICAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4odmljdGltLCAnc29tZWZpbGUnKSwgJ2ZvbycpCiAgICAgICAgIHZpY3RpbSA9IG9zLmZzZW5jb2RlKHZpY3RpbSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpY3RpbSwgYnl0ZXMpCi0gICAgICAgIHdpbiA9IChvcy5uYW1lID09ICdudCcpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGlmIHdpbiBlbHNlIEV4aXRTdGFjaygpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3JtdHJlZV9mYWlsc19vbl9zeW1saW5rKHNlbGYpOgpAQCAtNzcyLDYgKzc3MSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ3RlbXBvcmFyaWx5IGRpc2FibGVkIG9uIFdpbmRvd3MnKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdsaW5rJyksICdyZXF1aXJlcyBvcy5saW5rJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJoYXJkIGxpbmtzIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9kb250X2NvcHlfZmlsZV9vbnRvX2xpbmtfdG9faXRzZWxmKHNlbGYpOgogICAgICAgICAjIGJ1ZyA4NTExMjMuCiAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKQEAgLTgyNCw2ICs4MjQsNyBAQAogCiAgICAgIyBJc3N1ZSAjMzAwMjogY29weWZpbGUgYW5kIGNvcHl0cmVlIGJsb2NrIGluZGVmaW5pdGVseSBvbiBuYW1lZCBwaXBlcwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJta2ZpZm8iKSwgJ3JlcXVpcmVzIG9zLm1rZmlmbygpJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X2NvcHlmaWxlX25hbWVkX3BpcGUoc2VsZik6CiAgICAgICAgIG9zLm1rZmlmbyhURVNURk4pCiAgICAgICAgIHRyeToKQEAgLTgzNCw2ICs4MzUsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgIm1rZmlmbyIpLCAncmVxdWlyZXMgb3MubWtmaWZvKCknKQogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9jb3B5dHJlZV9uYW1lZF9waXBlKHNlbGYpOgpAQCAtMTMxMiwxMCArMTMxNCwxMCBAQAogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc2luZyB1c2VybmFtZScpCisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzdGluZyB1c2VybmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc2luZyBncm91cG5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXN0aW5nIGdyb3VwbmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQpAQCAtMTg2NCw3ICsxODY2LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yLAorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQogICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDFiODBmZjAuLmFiNDJlZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0yMiwyOSArMjIsNiBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCi1jbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgZXhpdF9zdWJwcm9jZXNzKCk6Ci0gICAgIiIiVXNlIG9zLl9leGl0KDApIHRvIGV4aXQgdGhlIGN1cnJlbnQgc3VicHJvY2Vzcy4KLQotICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgY2F0Y2hlcyB0aGUgU3lzdGVtRXhpdCBhbmQgY29udGludWVzIGV4ZWN1dGluZwotICAgIGluIHBhcmFsbGVsIHdpdGggdGhlIG9yaWdpbmFsIHRlc3QsIHNvIHlvdSB3aW5kIHVwIHdpdGggYW4KLSAgICBleHBvbmVudGlhbCBudW1iZXIgb2YgdGVzdHMgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAgIiIiCi0gICAgb3MuX2V4aXQoMCkKLQotCi1kZWYgaWdub3JpbmdfZWludHIoX19mdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9fZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJldHVybiBOb25lCi0KLQogY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQpAQCAtNjMsMTQ1ICs0MCw2IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICBnYy5kaXNhYmxlKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi51c2luZ19nYzoKLSAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0KLSAgICBkZWYgZm9ybWF0X2ZyYW1lKHNlbGYsIGZyYW1lLCBsaW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhmcmFtZSwgbGltaXQ9bGltaXQpKQotCi0gICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKLQotICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKLSAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoLCBpZ25vcmluZyBFSU5UUi4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBydW5fdGVzdChzZWxmKToKLSAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKLSAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuaGFuZGxlckEpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuaGFuZGxlckIpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKLQotICAgICAgICAjIFZhcmlhYmxlcyB0aGUgc2lnbmFscyB3aWxsIG1vZGlmeToKLSAgICAgICAgc2VsZi5hX2NhbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQotICAgICAgICBpZiBjaGlsZDoKLSAgICAgICAgICAgIHNlbGYud2FpdChjaGlsZCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFfY2FsbGVkOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkgICMgR2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gYmUgZGVsaXZlcmVkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmJfY2FsbGVkKQotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2lnbmFsIGlzbid0IGRlbGl2ZXJlZCB3aGlsZSB0aGUgcHJldmlvdXMKLSAgICAgICAgIyBQb3BlbiBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLCBiZWNhdXNlIF9fZGVsX18gc3dhbGxvd3MKLSAgICAgICAgIyBleGNlcHRpb25zLgotICAgICAgICBkZWwgY2hpbGQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFsna2lsbCcsICctVVNSMScsIHN0cihwaWQpXSkKLSAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsJ3MgZXhjZXB0aW9uLgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0hhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKLSAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0KLSAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKSAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW4uCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAjIFRoZSByYWNlIGNvbmRpdGlvbiBpbiBwYXVzZSBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UsCi0gICAgICAgICAgICAjIHNpbmNlIGFsYXJtIGlzIGdvaW5nIHRvIHJhaXNlIGEgS2V5Ym9hcmRFeGNlcHRpb24sIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgc2tpcCB0aGUgY2FsbC4KLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICAjIEJ1dCBpZiBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSB0aGUgYWxhcm0sIHBhdXNlCi0gICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgicGF1c2UgcmV0dXJuZWQgb2YgaXRzIG93biBhY2NvcmQsIGFuZCB0aGUgc2lnbmFsIgotICAgICAgICAgICAgICAgICAgICAgICIgZGlkbid0IGFycml2ZSBhZnRlciBhbm90aGVyIHNlY29uZC4iKQotCi0gICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nZnJlZWJzZDYnLAotICAgICAgICAnaW50ZXIgcHJvY2VzcyBzaWduYWxzIG5vdCByZWxpYWJsZSAoZG8gbm90IG1peCB3ZWxsIHdpdGggdGhyZWFkaW5nKSAnCi0gICAgICAgICdvbiBmcmVlYnNkNicpCi0gICAgZGVmIHRlc3RfbWFpbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gaW5zdWxhdGUgdGhlIG1haW4KLSAgICAgICAgIyB0ZXN0LXJ1bm5pbmcgcHJvY2VzcyBmcm9tIGFsbCB0aGUgc2lnbmFscy4gSXQgdGhlbgotICAgICAgICAjIGNvbW11bmljYXRlcyB3aXRoIHRoYXQgY2hpbGQgcHJvY2VzcyBvdmVyIGEgcGlwZSBhbmQKLSAgICAgICAgIyByZS1yYWlzZXMgaW5mb3JtYXRpb24gYWJvdXQgYW55IGV4Y2VwdGlvbnMgdGhlIGNoaWxkCi0gICAgICAgICMgcmFpc2VzLiBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW4gc2VsZi5ydW5fdGVzdCgpLgotICAgICAgICBvc19kb25lX3IsIG9zX2RvbmVfdyA9IG9zLnBpcGUoKQotICAgICAgICB3aXRoIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfciwgJ3JiJykpIGFzIGRvbmVfciwgXAotICAgICAgICAgICAgIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfdywgJ3diJykpIGFzIGRvbmVfdzoKLSAgICAgICAgICAgIGNoaWxkID0gb3MuZm9yaygpCi0gICAgICAgICAgICBpZiBjaGlsZCA9PSAwOgotICAgICAgICAgICAgICAgICMgSW4gdGhlIGNoaWxkIHByb2Nlc3M7IHJ1biB0aGUgdGVzdCBhbmQgcmVwb3J0IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRocm91Z2ggdGhlIHBpcGUuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkb25lX3IuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgZG9uZV93IGFnYWluIGhlcmUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIGV4aXRfc3VicHJvY2VzcygpIHdpbGwgc2tpcCB0aGUgZW5jbG9zaW5nIHdpdGggYmxvY2suCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhkb25lX3cpOgotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGRvbmVfdykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoTm9uZSwgZG9uZV93KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VoIG9oLCByYWlzZWQgZnJvbSBwaWNrbGUuJykKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdWJwcm9jZXNzKCkKLQotICAgICAgICAgICAgZG9uZV93LmNsb3NlKCkKLSAgICAgICAgICAgICMgQmxvY2sgZm9yIHVwIHRvIE1BWF9EVVJBVElPTiBzZWNvbmRzIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCi0gICAgICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbZG9uZV9yXSwgW10sIFtdLCBzZWxmLk1BWF9EVVJBVElPTikKLSAgICAgICAgICAgIGlmIGRvbmVfciBpbiByOgotICAgICAgICAgICAgICAgIHRiID0gcGlja2xlLmxvYWQoZG9uZV9yKQotICAgICAgICAgICAgICAgIGlmIHRiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwodGIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9zLmtpbGwoY2hpbGQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQotCi0KLUB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKQEAgLTIyNCw2ICs2MiwxNSBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLCBodXApCiAKKyAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCisgICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKKyAgICAgICAgJ29uIGZyZWVic2Q2JykKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3NpZ25hbGludGVycHJvY3Rlc3Rlci5weScpCisgICAgICAgIGFzc2VydF9weXRob25fb2soc2NyaXB0KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBzcGVjaWZpYyIpCiBjbGFzcyBXaW5kb3dzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGRhMjBhM2QuLmQyNDVmZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTE0LDYgKzE0LDcgQEAKIGltcG9ydCBlbmNvZGluZ3MKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogaW1wb3J0IHVybGxpYi5lcnJvcgoraW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXNjb25maWcKIGZyb20gY29weSBpbXBvcnQgY29weQpAQCAtNzUsNyArNzYsNyBAQAogICAgIGRlZiB0ZXN0X2luaXRfcGF0aGluZm8oc2VsZik6CiAgICAgICAgIGRpcl9zZXQgPSBzaXRlLl9pbml0X3BhdGhpbmZvKCkKICAgICAgICAgZm9yIGVudHJ5IGluIFtzaXRlLm1ha2VwYXRoKHBhdGgpWzFdIGZvciBwYXRoIGluIHN5cy5wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZW50cnksIGRpcl9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmcm9tIHN5cy5wYXRoIG5vdCBmb3VuZCBpbiBzZXQgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgX2luaXRfcGF0aGluZm8oKTogJXMiICUgKGVudHJ5LCBkaXJfc2V0KSkKQEAgLTEzOCwxMCArMTM5LDggQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ0ltcG9ydEVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdNb2R1bGVOb3RGb3VuZEVycm9yJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXMgbm90IHJhaXNlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgZm9yIGZpbGUgcGF0aHMgY29udGFpbmluZyBudWxsIGNoYXJhY3RlcnMiKQogICAgIGRlZiB0ZXN0X2FkZHBhY2thZ2VfaW1wb3J0X2JhZF9wdGhfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA1MjU4CiAgICAgICAgIHB0aF9kaXIsIHB0aF9mbiA9IHNlbGYubWFrZV9wdGgoImFiY1x4MDBkZWZcbiIpCkBAIC0yNDMsMTMgKzI0MiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICBlbHNlOgpAQCAtNDQ2LDEwICs0NDYsOSBAQAogICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLXYnLCAnLWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBwcmludChzZXQoc3lzLm1vZHVsZXMpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RkZXJyID0gc3RkZXJyLmRlY29kZSgndXRmLTgnKQogICAgICAgICBtb2R1bGVzID0gZXZhbChzdGRvdXQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2l0ZScsIG1vZHVsZXMpCkBAIC00NjksNyArNDY4LDEwMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYXBxJywgJ2l0ZXJ0b29scycsICdrZXl3b3JkJywgJ29wZXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBybGliJywgJ3R5cGVzJywgJ3dlYWtyZWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uZGlmZmVyZW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODA5NQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZXMuaW50ZXJzZWN0aW9uKGNvbGxlY3Rpb25fbW9kcyksIHN0ZGVycikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rKHNlbGYpOgorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBub3QgYWRkZWQgYnkgc2l0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgYWRkZWQgaW4gaXNvbGF0ZWQgbW9kZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZF9leHBsaWNpdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUsIHN5czsgc2l0ZS5lbmFibGVybGNvbXBsZXRlcigpOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBlbmFibGVybGNvbXBsZXRlcigpIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3VuZGVycHRoX2V4ZShzZWxmLCBsaW5lcyk6CisgICAgICAgIGV4ZV9maWxlID0gb3MucGF0aC5qb2luKG9zLmdldGVudignVEVNUCcpLCBvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVsxXSkKKyAgICAgICAgc2h1dGlsLmNvcHkoc3lzLmV4ZWN1dGFibGUsIGV4ZV9maWxlKQorCisgICAgICAgIF9wdGhfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlX2ZpbGUpWzBdICsgJy5fcHRoJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oX3B0aF9maWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZikKKyAgICAgICAgICAgIHJldHVybiBleGVfZmlsZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvcy51bmxpbmsoX3B0aF9maWxlKQorICAgICAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2xlYW51cF91bmRlcnB0aF9leGUoc2VsZiwgZXhlX2ZpbGUpOgorICAgICAgICBfcHRoX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4ZV9maWxlKVswXSArICcuX3B0aCcKKyAgICAgICAgb3MudW5saW5rKF9wdGhfZmlsZSkKKyAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF91bmRlcnB0aF9ub3NpdGVfZmlsZShzZWxmKToKKyAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoZW5jb2RpbmdzLl9fZmlsZV9fKSkKKyAgICAgICAgZXhlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZXhlX2ZpbGUgPSBzZWxmLl9jcmVhdGVfdW5kZXJwdGhfZXhlKFsKKyAgICAgICAgICAgICdmYWtlLXBhdGgtbmFtZScsCisgICAgICAgICAgICAqW2xpYnBhdGggZm9yIF8gaW4gcmFuZ2UoMjAwKV0sCisgICAgICAgICAgICAnIyBjb21tZW50JywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZScKKyAgICAgICAgXSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSAnZnJvbS1lbnYnCisgICAgICAgICAgICBlbnZbJ1BBVEgnXSA9ICd7fTt7fScuZm9ybWF0KGV4ZV9wcmVmaXgsIG9zLmdldGVudignUEFUSCcpKQorICAgICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW2V4ZV9maWxlLCAnLWMnLAorICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICdsZW4oc3lzLnBhdGgpID4gMjAwIGFuZCAnCisgICAgICAgICAgICAgICAgJyVyIGluIHN5cy5wYXRoIGFuZCAlciBpbiBzeXMucGF0aCBhbmQgJXIgbm90IGluIHN5cy5wYXRoKScgJSAoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZmFrZS1wYXRoLW5hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgbGlicGF0aCwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdmcm9tLWVudicpLAorICAgICAgICAgICAgICAgICldLCBlbnY9ZW52KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF91bmRlcnB0aF9leGUoZXhlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgIm9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3VuZGVycHRoX2ZpbGUoc2VsZik6CisgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKGVuY29kaW5ncy5fX2ZpbGVfXykpCisgICAgICAgIGV4ZV9wcmVmaXggPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGV4ZV9maWxlID0gc2VsZi5fY3JlYXRlX3VuZGVycHRoX2V4ZShbCisgICAgICAgICAgICAnZmFrZS1wYXRoLW5hbWUnLAorICAgICAgICAgICAgKltsaWJwYXRoIGZvciBfIGluIHJhbmdlKDIwMCldLAorICAgICAgICAgICAgJyMgY29tbWVudCcsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUnCisgICAgICAgIF0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBlbnZbJ1BZVEhPTlBBVEgnXSA9ICdmcm9tLWVudicKKyAgICAgICAgICAgIGVudlsnUEFUSCddID0gJ3t9O3t9Jy5mb3JtYXQoZXhlX3ByZWZpeCwgb3MuZ2V0ZW52KCdQQVRIJykpCisgICAgICAgICAgICByYyA9IHN1YnByb2Nlc3MuY2FsbChbZXhlX2ZpbGUsICctYycsCisgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICclciBpbiBzeXMucGF0aCBhbmQgJXIgaW4gc3lzLnBhdGggYW5kICVyIG5vdCBpbiBzeXMucGF0aCknICUgKAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2Zha2UtcGF0aC1uYW1lJyksCisgICAgICAgICAgICAgICAgICAgIGxpYnBhdGgsCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZnJvbS1lbnYnKSwKKyAgICAgICAgICAgICAgICApXSwgZW52PWVudikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfdW5kZXJwdGhfZXhlKGV4ZV9maWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA4OGRiZmRmLi4zZWViZTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTUzLDEwICs1Myw2IEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0KICAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLApAQCAtMTA4LDEwICsxMDQsOSBAQAogICAgICAgICAgICAgICIiIikpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKICAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQogICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKQEAgLTE3NSwxMyArMTcwLDExIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKIAogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQogCiAKQEAgLTIwNCwxOCArMTk3LDE4IEBACiAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCiAKICAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKQEAgLTI1Nyw5ICsyNTAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIGZvciBsaW5lIGluIFsKICAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKQEAgLTc2NSwxMyArNzU4LDYgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiBjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC04NDUsMTIgKzgzMSw5IEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC0xMDE1LDUgKzk5OCwxNiBAQAogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geworICAgICAgICAgICAgInByb2dyYW0iLCAiRGV2bnVsbCIsICJERUJVR1NUUkVBTSIsICJORVdMSU5FIiwgIkNPTU1BU1BBQ0UiLAorICAgICAgICAgICAgIkRBVEFfU0laRV9ERUZBVUxUIiwgInVzYWdlIiwgIk9wdGlvbnMiLCAicGFyc2VhcmdzIiwKKworICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHNtdHBkLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IDcwYzAzZjkuLjk3ZGMzY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBhcnJheQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgY29udGV4dGxpYgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbApAQCAtNjYsMTAgKzY1LDIyIEBACiAgICAgICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBUcnVlCiAKK2RlZiBfaGF2ZV9zb2NrZXRfYWxnKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBBRl9BTEcgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKwogSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCiAKIEhBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQogCitIQVZFX1NPQ0tFVF9BTEcgPSBfaGF2ZV9zb2NrZXRfYWxnKCkKKwogIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQogU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKIApAQCAtMjY3LDggKzI3OCwxNCBAQAogCiAgICAgZGVmIGNsaWVudFJ1bihzZWxmLCB0ZXN0X2Z1bmMpOgogICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS53YWl0KCkKLSAgICAgICAgc2VsZi5jbGllbnRTZXRVcCgpCi0gICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LnNldCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY2xpZW50U2V0VXAoKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXQoZSkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50VGVhckRvd24oKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS5zZXQoKQogICAgICAgICBpZiBzZWxmLnNlcnZlcl9jcmFzaGVkOgogICAgICAgICAgICAgc2VsZi5jbGllbnRUZWFyRG93bigpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTUwOSw4ICs1MjYsMTEgQEAKICAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLmNsaQogCiAgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCi0gICAgICAgIHNlbGYuc2Vydl9jb25uID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLnNlcnZfY29ubiA9IE5vbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcwogICAgICAgICBzdXBlcigpLmNsaWVudFRlYXJEb3duKCkKIAogCkBAIC01MjksNyArNTQ5LDcgQEAKIAogICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKICAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rdGVtcChkaXI9c2VsZi5kaXJfcGF0aCkKLSAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIHN1cHBvcnQuYmluZF91bml4X3NvY2tldChzb2NrLCBwYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCiAKIGNsYXNzIFVuaXhTdHJlYW1CYXNlKFVuaXhTb2NrZXRUZXN0QmFzZSk6CkBAIC0xMTYxLDYgKzExODEsMTcgQEAKICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2suc2VuZCwgYiJzcGFtIikKIAorICAgIGRlZiB0ZXN0Q2xvc2VFeGNlcHRpb24oc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc29ja2V0LnNvY2tldChmaWxlbm89c29jay5maWxlbm8oKSkuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBXaW5zb2NrIGFwcGFyZW50bHkgcmFpc2VzIEVOT1RTT0NLCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVyci5lcnJubywgKGVycm5vLkVCQURGLCBlcnJuby5FTk9UU09DSykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNsb3NlKCkgc2hvdWxkIHJhaXNlIEVCQURGL0VOT1RTT0NLIikKKwogICAgIGRlZiB0ZXN0TmV3QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIC5mYW1pbHksIC50eXBlIGFuZCAucHJvdG9jb2wKIApAQCAtMTIwNyw2ICsxMjM4LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMuaW9jdGwsIC0xLCBOb25lKQogICAgICAgICBzLmlvY3RsKHNvY2tldC5TSU9fS0VFUEFMSVZFX1ZBTFMsICgxLCAxMDAsIDEwMCkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ1NJT19MT09QQkFDS19GQVNUX1BBVEgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTG9vcGJhY2sgZmFzdCBwYXRoIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCisgICAgZGVmIHRlc3Rfc2lvX2xvb3BiYWNrX2Zhc3RfcGF0aChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgV1NBRU9QTk9UU1VQUCA9IDEwMDQ1CisgICAgICAgICAgICBpZiBleGMud2luZXJyb3IgPT0gV1NBRU9QTk9UU1VQUDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIIGlzIGRlZmluZWQgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IGltcGxlbWVudGVkIGluIHRoaXMgV2luZG93cyB2ZXJzaW9uIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcy5pb2N0bCwgc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIE5vbmUpCisKICAgICBkZWYgdGVzdEdldGFkZHJpbmZvKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQpAQCAtMjg0Myw2ICsyODkwLDcgQEAKICAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKG1zZykpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInNlZSBpc3N1ZSAjMjQ3MjUiKQogICAgIGRlZiB0ZXN0RkRQYXNzRW1wdHkoc2VsZik6CiAgICAgICAgICMgVHJ5IHRvIHBhc3MgYW4gZW1wdHkgRkQgYXJyYXkuICBDYW4gcmVjZWl2ZSBlaXRoZXIgbm8gYXJyYXkKICAgICAgICAgIyBvciBhbiBlbXB0eSBhcnJheS4KQEAgLTQ1MTQsNiArNDU2MiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQuZ2FpZXJyb3IsIE9TRXJyb3IpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQudGltZW91dCwgT1NFcnJvcikpCiAKKyAgICBkZWYgdGVzdF9zZXRibG9ja2luZ19pbnZhbGlkZmQoc2VsZik6CisgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAjMjg0NzEKKworICAgICAgICBzb2NrMCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCkKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoCisgICAgICAgICAgICBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAwLCBzb2NrMC5maWxlbm8oKSkKKyAgICAgICAgc29jazAuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5kZXRhY2gpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKKyAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcsICdMaW51eCBzcGVjaWZpYyB0ZXN0JykKIGNsYXNzIFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDU3OSw3ICs0NjQwLDcgQEAKICAgICBkZWYgYmluZChzZWxmLCBzb2NrLCBwYXRoKToKICAgICAgICAgIyBCaW5kIHRoZSBzb2NrZXQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgICAgICBzdXBwb3J0LmJpbmRfdW5peF9zb2NrZXQoc29jaywgcGF0aCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIHN0cihlKSA9PSAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KApAQCAtNTMyNSw2ICs1Mzg2LDE4MyBAQAogICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQUxHLCAnQUZfQUxHIHJlcXVpcmVkJykKK2NsYXNzIExpbnV4S2VybmVsQ3J5cHRvQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBBRl9BTEcKKyAgICBkZWYgY3JlYXRlX2FsZyhzZWxmLCB0eXAsIG5hbWUpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suYmluZCgodHlwLCBuYW1lKSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIHR5cGUgLyBhbGdvcml0aG0gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChzdHIoZSksIHR5cCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzb2NrCisKKyAgICBkZWYgdGVzdF9zaGEyNTYoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiYmE3ODE2YmY4ZjAxY2ZlYTQxNDE0MGRlNWRhZTIyMjNiMDAzNjFhMzk2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE3N2E5Y2I0MTBmZjYxZjIwMDE1YWQiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdzaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJhYmMiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidhJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidiJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidjJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYicnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2htYWNfc2hhMShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJlZmZjZGY2YWU1ZWIyZmEyZDI3NDE2ZDVmMTg0ZGY5YzI1OWE3Yzc5IikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnaG1hYyhzaGExKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgYiJKZWZlIikKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgIyBBbHRob3VnaCBpdCBzaG91bGQgd29yayB3aXRoIDMuMTkgYW5kIG5ld2VyIHRoZSB0ZXN0IGJsb2NrcyBvbgorICAgICMgVWJ1bnR1IDE1LjEwIHdpdGggS2VybmVsIDQuMi4wLTE5LgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykKKyAgICBkZWYgdGVzdF9hZXNfY2JjKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCcwNmE5MjE0MDM2YjhhMTViNTEyZTAzZDUzNDEyMDAwNicpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnM2RhZmJhNDI5ZDllYjQzMGI0MjJkYTgwMmM5ZmFjNDEnKQorICAgICAgICBtc2cgPSBiIlNpbmdsZSBibG9jayBtc2ciCisgICAgICAgIGNpcGhlcnRleHQgPSBieXRlcy5mcm9taGV4KCdlMzUzNzc5YzEwNzlhZWI4MjcwODk0MmRiZTc3MTgxYScpCisgICAgICAgIG1zZ2xlbiA9IGxlbihtc2cpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdza2NpcGhlcicsICdjYmMoYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2NpcGhlcnRleHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgbXNnKQorCisgICAgICAgICAgICAjIGxvbmcgbWVzc2FnZQorICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMjQKKyAgICAgICAgICAgIGxvbmdtc2cgPSBbbXNnXSAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKGxvbmdtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGVuYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jWzptc2dsZW5dLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbZW5jXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZGVjID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVjKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjLCBtc2cgKiBtdWx0aXBsaWVyKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfYWVhZF9hZXNfZ2NtKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCdjOTM5Y2MxMzM5N2MxZDM3ZGU2YWUwZTFjYjdjNDIzYycpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnYjNkOGNjMDE3Y2JiODliMzllMGY2N2UyJykKKyAgICAgICAgcGxhaW4gPSBieXRlcy5mcm9taGV4KCdjM2IzYzQxZjExM2EzMWI3M2Q5YTVjZDQzMjEwMzA2OScpCisgICAgICAgIGFzc29jID0gYnl0ZXMuZnJvbWhleCgnMjQ4MjU2MDJiZDEyYTk4NGUwMDkyZDNlNDQ4ZWRhNWYnKQorICAgICAgICBleHBlY3RlZF9jdCA9IGJ5dGVzLmZyb21oZXgoJzkzZmU3ZDllOWJmZDEwMzQ4YTU2MDZlNWNhZmE3MzU0JykKKyAgICAgICAgZXhwZWN0ZWRfdGFnID0gYnl0ZXMuZnJvbWhleCgnMDAzMmExZGM4NWYxYzk3ODY5MjVhMmU3MWQ4MjcyZGQnKQorCisgICAgICAgIHRhZ2xlbiA9IGxlbihleHBlY3RlZF90YWcpCisgICAgICAgIGFzc29jbGVuID0gbGVuKGFzc29jKQorCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdhZWFkJywgJ2djbShhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVVUSFNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFnbGVuKQorCisgICAgICAgICAgICAjIHNlbmQgYXNzb2MsIHBsYWluIGFuZCB0YWcgYnVmZmVyIGluIHNlcGFyYXRlIHN0ZXBzCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4sIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGFzc29jLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChwbGFpbiwgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYidceDAwJyAqIHRhZ2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgbm93IHdpdGggbXNnCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhbmMgZGF0YSBtYW51YWxseQorICAgICAgICAgICAgcGFja191aW50MzIgPSBzdHJ1Y3QuU3RydWN0KCdJJykucGFjaworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZygKKyAgICAgICAgICAgICAgICAgICAgW21zZ10sCisgICAgICAgICAgICAgICAgICAgIChbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX09QLCBwYWNrX3VpbnQzMihzb2NrZXQuQUxHX09QX0VOQ1JZUFQpXSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfSVYsIHBhY2tfdWludDMyKGxlbihpdikpICsgaXZdLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FTU09DTEVOLCBwYWNrX3VpbnQzMihhc3NvY2xlbildLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGRlY3J5cHQgYW5kIHZlcmlmeQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgZXhwZWN0ZWRfY3QgKyBleHBlY3RlZF90YWcKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluLCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9kcmJnX3ByX3NoYTI1NihzZWxmKToKKyAgICAgICAgIyBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yLCBwcmVkaWN0aW9uIHJlc2lzdGFuY2UsIHNoYTI1NgorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygncm5nJywgJ2RyYmdfcHJfc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIGV4dHJhX3NlZWQgPSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGV4dHJhX3NlZWQpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgcm4gPSBvcC5yZWN2KDMyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJuKSwgMzIpCisKKyAgICBkZWYgdGVzdF9zZW5kbXNnX2FmYWxnX2FyZ3Moc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygxKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPS0xKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MzUxLDYgKzU1ODksNyBAQAogICAgIHRlc3RzLmV4dGVuZChbVElQQ1Rlc3QsIFRJUENUaHJlYWRhYmxlVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5hcHBlbmQoTGludXhLZXJuZWxDcnlwdG9BUEkpCiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgQ21zZ01hY3JvVGVzdHMsCiAgICAgICAgIFNlbmRtc2dVRFBUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAwZDBmODZmLi4xNDBhNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMywxMiArMywxMSBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNvY2tldHNlcnZlcgpAQCAtNDYsNyArNDUsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGltZWQgb3V0IG9uICVyIiAlIChzb2NrLCkpCiAKLWlmIEhBVkVfVU5JWF9TT0NLRVRTOgoraWYgSEFWRV9VTklYX1NPQ0tFVFMgYW5kIEhBVkVfRk9SS0lORzoKICAgICBjbGFzcyBGb3JraW5nVW5peFN0cmVhbVNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5Vbml4U3RyZWFtU2VydmVyKToKICAgICAgICAgcGFzcwpAQCAtNTgsNiArNTcsNyBAQAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHNpbXBsZV9zdWJwcm9jZXNzKHRlc3RjYXNlKToKKyAgICAiIiJUZXN0cyB0aGF0IGEgY3VzdG9tIGNoaWxkIHByb2Nlc3MgaXMgbm90IHdhaXRlZCBvbiAoSXNzdWUgMTU0MDM4NikiIiIKICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgIyBEb24ndCByYWlzZSBhbiBleGNlcHRpb247IGl0IHdvdWxkIGJlIGNhdWdodCBieSB0aGUgdGVzdCBoYXJuZXNzLgpAQCAtMTAzLDcgKzEwMyw2IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMjc5LDYgKzI3OCwxODIgQEAKICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgc2VydmVyLnNvY2tldC5maWxlbm8oKSkKKworCitjbGFzcyBFcnJvckhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIHNlcnZlcnMgcGFzcyBub3JtYWwgZXhjZXB0aW9ucyBmcm9tIHRoZSBoYW5kbGVyIHRvCisgICAgaGFuZGxlX2Vycm9yKCksIGFuZCB0aGF0IGV4aXRpbmcgZXhjZXB0aW9ucyBsaWtlIFN5c3RlbUV4aXQgYW5kCisgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgYXJlIG5vdCBwYXNzZWQuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsodGVzdC5zdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X3N5bmNfaGFuZGxlZChzZWxmKToKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zeW5jX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdChzZWxmLCBoYW5kbGVkKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4pIGFzIGxvZzoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ0hhbmRsZXIgY2FsbGVkXG4nICsgJ0Vycm9yIGhhbmRsZWRcbicgKiBoYW5kbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5yZWFkKCksIGV4cGVjdGVkKQorCisKK2NsYXNzIEJhc2VFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbik6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjZXB0aW9uCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKEhPU1QsIDApLCBCYWRIYW5kbGVyKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihzZWxmLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYud2FpdF9kb25lKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0Vycm9yIGhhbmRsZWRcbicpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmFkSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0hhbmRsZXIgY2FsbGVkXG4nKQorICAgICAgICByYWlzZSBzZWxmLnNlcnZlci5leGNlcHRpb24oJ1Rlc3QgZXJyb3InKQorCisKK2NsYXNzIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sCisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqcG9zLCAqKmt3KQorCisgICAgZGVmIHNodXRkb3duX3JlcXVlc3Qoc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuc2h1dGRvd25fcmVxdWVzdCgqcG9zLCAqKmt3KQorICAgICAgICBzZWxmLmRvbmUuc2V0KCkKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS53YWl0KCkKKworCitpZiBIQVZFX0ZPUktJTkc6CisgICAgY2xhc3MgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLCBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICAgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgICAgIFtjaGlsZF0gPSBzZWxmLmFjdGl2ZV9jaGlsZHJlbgorICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKworCitjbGFzcyBTb2NrZXRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGUgPSBzZWxmLndmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGVfZmlsZW5vID0gc2VsZi53ZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlcXVlc3RfZmlsZW5vID0gc2VsZi5yZXF1ZXN0LmZpbGVubygpCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgKKyAgICAgICAgICAgIHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLCBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgIHdpdGggczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXJ2ZXIud2ZpbGUsIGlvLkJ1ZmZlcmVkSU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci53ZmlsZV9maWxlbm8sIHNlcnZlci5yZXF1ZXN0X2ZpbGVubykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdmaWxlLndyaXRlKCkgc2VuZHMgZGF0YSBpbW1lZGlhdGVseSwgYW5kIHRoYXQgaXQgZG9lcworICAgICAgICAjIG5vdCB0cnVuY2F0ZSBzZW5kcyB3aGVuIGludGVycnVwdGVkIGJ5IGEgVW5peCBzaWduYWwKKyAgICAgICAgcHRocmVhZF9raWxsID0gdGVzdC5zdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2lnbmFsLCAncHRocmVhZF9raWxsJykKKworICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQxID0gc2VsZi53ZmlsZS53cml0ZShiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgICAgICAgICAgIyBTaG91bGQgYmUgc2VudCBpbW1lZGlhdGVseSwgd2l0aG91dCByZXF1aXJpbmcgZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlY2VpdmVkID0gc2VsZi5yZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgYmlnX2NodW5rID0gYidcMCcgKiB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQyID0gc2VsZi53ZmlsZS53cml0ZShiaWdfY2h1bmspCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgaW50ZXJydXB0ZWQuc2V0KCkKKworICAgICAgICBvcmlnaW5hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR1VTUjEsIG9yaWdpbmFsKQorICAgICAgICByZXNwb25zZTEgPSBOb25lCisgICAgICAgIHJlY2VpdmVkMiA9IE5vbmUKKyAgICAgICAgbWFpbl90aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICAgICAgd2l0aCBzLCBzLm1ha2VmaWxlKCdyYicpIGFzIHJlYWRlcjoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3BvbnNlMQorICAgICAgICAgICAgICAgIHJlc3BvbnNlMSA9IHJlYWRlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgcy5zZW5kYWxsKGInY2xpZW50IHJlc3BvbnNlXG4nKQorCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoMTAwKQorICAgICAgICAgICAgICAgICMgVGhlIG1haW4gdGhyZWFkIHNob3VsZCBub3cgYmUgYmxvY2tpbmcgaW4gYSBzZW5kKCkgc3lzY2FsbC4KKyAgICAgICAgICAgICAgICAjIEJ1dCBpbiB0aGVvcnksIGl0IGNvdWxkIGdldCBpbnRlcnJ1cHRlZCBieSBvdGhlciBzaWduYWxzLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZW4gcmV0cmllZC4gU28ga2VlcCBzZW5kaW5nIHRoZSBzaWduYWwgaW4gYSBsb29wLCBpbgorICAgICAgICAgICAgICAgICMgY2FzZSBhbiBlYXJsaWVyIHNpZ25hbCBoYXBwZW5zIHRvIGJlIGRlbGl2ZXJlZCBhdCBhbgorICAgICAgICAgICAgICAgICMgaW5jb252ZW5pZW50IG1vbWVudC4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2tpbGwobWFpbl90aHJlYWQsIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnJ1cHRlZC53YWl0KHRpbWVvdXQ9ZmxvYXQoMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZWNlaXZlZDIKKyAgICAgICAgICAgICAgICByZWNlaXZlZDIgPSBsZW4ocmVhZGVyLnJlYWQoKSkKKworICAgICAgICBiYWNrZ3JvdW5kID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2NsaWVudCkKKyAgICAgICAgYmFja2dyb3VuZC5zdGFydCgpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGJhY2tncm91bmQuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQxLCBsZW4ocmVzcG9uc2UxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZTEsIGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVjZWl2ZWQsIGInY2xpZW50IHJlc3BvbnNlXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSAtIDEwMCkKKwogCiBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggYTVkMGViZi4uOThjY2FiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKaW5kZXggYmVhN2FiMS4uZTg5M2YzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQpAQCAtNTYsNSArNTYsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3B3ZC5nZXRzcG5hbSwgYnl0ZXNfbmFtZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICdub24tcm9vdCB1c2VyIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RTcHdkTm9uUm9vdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZXRzcG5hbV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG5hbWUgPSAnYmluJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc3B3ZC5nZXRzcG5hbShuYW1lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3B3ZCBlbnRyeSAlciBkb2Vzbid0IGV4aXN0OiAlcyIgJSAobmFtZSwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdbRXJybm8gMTNdIFBlcm1pc3Npb24gZGVuaWVkJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTE1NTgzLi5kMjAzY2RkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMjEsNiArMjEsMTMgQEAKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQorZWxzZToKKyAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorCiBQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIElTX0xJQlJFU1NMID0gc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCdMaWJyZVNTTCcpCkBAIC01NiwxMiArNjMsMTIgQEAKICMgVHdvIGtleXMgYW5kIGNlcnRzIHNpZ25lZCBieSB0aGUgc2FtZSBDQSAoZm9yIFNOSSB0ZXN0cykKIFNJR05FRF9DRVJURklMRSA9IGRhdGFfZmlsZSgia2V5Y2VydDMucGVtIikKIFNJR05FRF9DRVJURklMRTIgPSBkYXRhX2ZpbGUoImtleWNlcnQ0LnBlbSIpCi1TSUdOSU5HX0NBID0gZGF0YV9maWxlKCJweWNhY2VydC5wZW0iKQorIyBTYW1lIGNlcnRpZmljYXRlIGFzIHB5Y2FjZXJ0LnBlbSwgYnV0IHdpdGhvdXQgZXh0cmEgdGV4dCBpbiBmaWxlCitTSUdOSU5HX0NBID0gZGF0YV9maWxlKCJjYXBhdGgiLCAiY2VmZjE3MTAuMCIpCiAjIGNlcnQgd2l0aCBhbGwga2luZHMgb2Ygc3ViamVjdCBhbHQgbmFtZXMKIEFMTFNBTkZJTEUgPSBkYXRhX2ZpbGUoImFsbHNhbnMucGVtIikKIAogUkVNT1RFX0hPU1QgPSAic2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQiCi1SRU1PVEVfUk9PVF9DRVJUID0gZGF0YV9maWxlKCJzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtIikKIAogRU1QVFlDRVJUID0gZGF0YV9maWxlKCJudWxsY2VydC5wZW0iKQogQkFEQ0VSVCA9IGRhdGFfZmlsZSgiYmFkY2VydC5wZW0iKQpAQCAtNzMsNiArODAsMTIgQEAKIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCitPUF9TSU5HTEVfREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKwogCiBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CiAgICAgZXhjX2Zvcm1hdCA9ICcgJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSkpCkBAIC0xMzAsNiArMTQzLDIxIEBACiBuZWVkc19zbmkgPSB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfU05JLCAiU05JIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQogCiAKK2RlZiB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFMsICosCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2FfY2VydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY2VydGZpbGU9Tm9uZSwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbikKKyAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKKyAgICBpZiBjYV9jZXJ0cyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCisgICAgaWYgY2VydGZpbGUgaXMgbm90IE5vbmUgb3Iga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgaWYgY2lwaGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQorICAgIHJldHVybiBjb250ZXh0LndyYXBfc29ja2V0KHNvY2ssICoqa3dhcmdzKQorCiBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKQEAgLTM1MCwxNyArMzc4LDE3IEBACiAgICAgICAgICMgSXNzdWUgIzc5NDM6IGFuIFNTTCBvYmplY3QgZG9lc24ndCBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoCiAgICAgICAgICMgaXRzZWxmLgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHMpCiAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoc3MpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIFJlc291cmNlV2FybmluZykpOgogICAgICAgICAgICAgZGVsIHNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIE9TRXJyb3IgcmFpc2UgYnkgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbSwgMSkKQEAgLTM3NCwxMCArNDAyLDEwIEBACiAgICAgICAgIGZvciB0aW1lb3V0IGluIChOb25lLCAwLjAsIDUuMCk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCiAKLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgZGVmIHRlc3RfZXJyb3JzX3NzbHdyYXAoc2VsZik6CiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIiwKQEAgLTM4NywxMCArNDE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCiAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2FuJ3QgY29ubmVjdCBpbiBzZXJ2ZXItc2lkZSBtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywgY2VydGZpbGU9Tk9ORVhJU1RJTkdDRVJUKQpAQCAtNDEzLDcgKzQ0MSw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKIApAQCAtNjAwLDcgKzYyOCw3IEBACiAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKICAgICAgICAgcy5jbG9zZSgpCkBAIC02MTAsMTUgKzYzOCwxNSBAQAogICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKICAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKIAogICAgIGRlZiB0ZXN0X2RlYWxsb2Nfd2FybihzZWxmKToKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKICAgICAgICAgciA9IHJlcHIoc3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgogICAgICAgICAgICAgc3MgPSBOb25lCkBAIC03MzcsNyArNzY1LDcgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgpAQCAtODA5LDYgKzgzNywyMiBAQAogICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQogICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQogCisgICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5jbG9zZSkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikgICMgUmVzZXJ2ZSBwb3J0IGJ1dCBkb24ndCBsaXN0ZW4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKEhPU1QsIHBvcnQpKQorICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKKyAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgorICAgICAgICBlcnJvcnMgPSAoCisgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAorICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgzNCwxMyArODc4LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CiAgICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIl4kOiw7PyonZG9yb3RoeXgiKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMCwgMiwgMCwgMCksICdPcGVuU1NMIHRvbyBvbGQnKQorICAgIGRlZiB0ZXN0X2dldF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfY2lwaGVycygnQUVTR0NNJykKKyAgICAgICAgbmFtZXMgPSBzZXQoZFsnbmFtZSddIGZvciBkIGluIGN0eC5nZXRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMyNTYtR0NNLVNIQTM4NCcsIG5hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMxMjgtR0NNLVNIQTI1NicsIG5hbWVzKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9vcHRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCi0gICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAwKToKLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICBkZWZhdWx0IHw9IChPUF9OT19DT01QUkVTU0lPTiB8IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSB8CisgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCiAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQpAQCAtMTIwNSwxNiArMTI1OCwyOSBAQAogICAgICAgICAgICAgc3RhdHNbIng1MDkiXSArPSAxCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQogCisgICAgZGVmIF9hc3NlcnRfY29udGV4dF9vcHRpb25zKHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfRUNESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisKIAogICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIGNhZGF0YSA9IGYucmVhZCgpCkBAIC0xMjIyLDQwICsxMjg4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKQEAgLTEyNjMsMTIgKzEzMTMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0xMjkyLDYgKzEzNDIsMTcgQEAKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X2NsaWVudF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgUFJPVE9DT0xfVExTX0NMSUVOVCBoYXMgc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorCisgICAgICAgICMgUFJPVE9DT0xfVExTX1NFUlZFUiBoYXMgZGlmZmVyZW50IGJ1dCBhbHNvIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKwogCiBjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTM5NywxNDAgKzE0NTgsMTA1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQogCiAKLWNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwVW5sZXNzKF9oYXZlX3RocmVhZHMsICJOZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK2NsYXNzIFNpbXBsZUJhY2tncm91bmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QgdG8gYSBzaW1wbGUgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VydmVyLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VydmVyX3NpZGUpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBjaGVjayBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogbm9uLWJsb2NraW5nIGNvbm5lY3RfZXgoKSBzaG91bGQgYWxsb3cgaGFuZHNoYWtlCiAgICAgICAgICMgdG8gcHJvY2VlZCBhZnRlciB0aGUgc29ja2V0IGdldHMgcmVhZHkuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCisgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGlmIHJjID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQ0KSkKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKLSAgICAgICAgICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gKAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1SRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0iZHVtbXkiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGVzIHVzaW5nIHRoZSBgY2FwYXRoYCBhcmd1bWVudApAQCAtMTUzOCwxOTggKzE1NjQsMTMwIEBACiAgICAgICAgICMgT3BlblNTTCAwLjkuOG4gYW5kIDEuMC4wLCBhcyBhIHJlc3VsdCB0aGUgY2FwYXRoIGRpcmVjdG9yeSBtdXN0CiAgICAgICAgICMgY29udGFpbiBib3RoIHZlcnNpb25zIG9mIGVhY2ggY2VydGlmaWNhdGUgKHNhbWUgY29udGVudCwgZGlmZmVyZW50CiAgICAgICAgICMgZmlsZW5hbWUpIGZvciB0aGlzIHRlc3QgdG8gYmUgcG9ydGFibGUgYWNyb3NzIE9wZW5TU0wgcmVsZWFzZXMuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FkYXRhKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oUkVNT1RFX1JPT1RfQ0VSVCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQogICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCi0gICAgICAgICAgICAjIHNhbWUgd2l0aCBERVIKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgc2FtZSB3aXRoIERFUgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAibnQiLCAiQ2FuJ3QgdXNlIGEgc29ja2V0IGFzIGEgZmlsZSB1bmRlciBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9tYWtlZmlsZV9jbG9zZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNTIzODogY3JlYXRpbmcgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggbWFrZWZpbGUoKSBzaG91bGRuJ3QKICAgICAgICAgIyBkZWxheSBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nICJyZWFsIHNvY2tldCIgKGhlcmUgdGVzdGVkIHdpdGggaXRzCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yLCBoZW5jZSBza2lwcGluZyB0aGUgdGVzdCB1bmRlciBXaW5kb3dzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgZmQgPSBzcy5maWxlbm8oKQotICAgICAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgZmQgPSBzcy5maWxlbm8oKQorICAgICAgICBmID0gc3MubWFrZWZpbGUoKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBvcy5yZWFkKGZkLCAwKQorICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KKyAgICAgICAgc3MuY2xvc2UoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbwotICAgICAgICAgICAgc3MuY2xvc2UoKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIsIGNlcnQ9U0lHTklOR19DQSkKIAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAotICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCi0KLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCi0KLSAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShSRU1PVEVfSE9TVCwgNDQzLCBSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKLSAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgQ29ubmVjdGlvbiBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbgorICAgICAgICAjIGluZGVwZW5kZW50IHRlc3QgbWV0aG9kCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6Ci0gICAgICAgIHJlbW90ZSA9IChSRU1PVEVfSE9TVCwgNDQzKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKLSAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLQotICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQotICAgICAgICAjIGNlcnRpZmljYXRlLgotICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAotICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKLSAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCi0gICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKLSAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKLSAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQogCiAgICAgQG5lZWRzX3NuaQogICAgIGRlZiB0ZXN0X2NvbnRleHRfc2V0Z2V0KHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgb2YgYSBjb25uZWN0ZWQgc29ja2V0IGNhbiBiZSByZXBsYWNlZC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKLSAgICAgICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCi0KLQotY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCiAgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CkBAIC0xNzY1LDY0ICsxNzIzLDEyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgotICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKLSAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgZGVmIHRlc3RfYmlvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnbG9jYWxob3N0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhCisgICAgICAgICAgICAjIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9iaW9fcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgcmVxID0gYidGT09cbicKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCiAKIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKLWVsc2U6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKK2NsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCisgICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCisgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpZiByYyA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ05lZWRzIElQdjYnKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfaXB2NihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnaXB2Ni5nb29nbGUuY29tJyk6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKworICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQorICAgICAgICAjIGNlcnRpZmljYXRlLgorICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCisgICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKKyAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKKyAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHRlc3QsIGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQorCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHRlc3QsIGhvc3QsIHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgZWxzZToKKyAgICAgICAgdGVzdC5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKworaWYgX2hhdmVfdGhyZWFkczoKICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAKICAgICBjbGFzcyBUaHJlYWRlZEVjaG9TZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xOTEwLDYgKzE5MzIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJpcHBlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVvZiwgc28gcXVpdCB0aGlzIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zc2xjb25uLnVud3JhcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFueSB0ZXN0cyBzaHV0IHRoZSBUQ1AgY29ubmVjdGlvbiBkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBhbiBTU0wgc2h1dGRvd24uIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW53cmFwKCkgdG8gcmFpc2UgT1NFcnJvciB3aXRoIGVycm5vPTAhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInb3Zlcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgpAQCAtMjAzNyw3ICsyMDY4LDcgQEAKICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb25IYW5kbGVyIChhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgY2VydGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNzbC53cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHRlc3Rfd3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZC5fX2luaXRfXyhzZWxmLCBzZWxmLnNvY2tldCkKQEAgLTIxNDUsNyArMjE3Niw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCiAKICAgICBkZWYgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgaW5kYXRhPWIiRk9PXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgpAQCAtMjE1Niw3ICsyMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgogICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lLCBzZXNzaW9uPXNlc3Npb24pIGFzIHM6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbaW5kYXRhLCBieXRlYXJyYXkoaW5kYXRhKSwgbWVtb3J5dmlldyhpbmRhdGEpXToKICAgICAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKQEAgLTIxODQsNiArMjIxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3JldXNlZCc6IHMuc2Vzc2lvbl9yZXVzZWQsCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uJzogcy5zZXNzaW9uLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKQEAgLTIyNTksMTIgKzIyOTMsNTMgQEAKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluIHtzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc3NsLlBST1RPQ09MX1RMU19TRVJWRVJ9OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICAgICAgIyBzZXJ2ZXJfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUyKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKQEAgLTIzOTgsNyArMjQ3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrLCBcCi0gICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKSBhcyBzOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NDUsNyArMjUyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyX2dvbmUud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjM1LDcgKzI3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2xpZW50OiAgcmVhZCAlciBmcm9tIHNlcnZlciwgc3RhcnRpbmcgVExTLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHNzbC53cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gdGVzdF93cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluZGF0YSA9PSBiIkVORFRMUyIgYW5kIG1zZy5zdGFydHN3aXRoKGIib2siKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRU5EVExTIG9rLCBzd2l0Y2ggYmFjayB0byBjbGVhciB0ZXh0CkBAIC0yNjk0LDcgKzI3NjksNyBAQAogICAgICAgICAgICAgaW5kYXRhID0gYiJGT09cbiIKICAgICAgICAgICAgIHNlcnZlciA9IEFzeW5jb3JlRWNob1NlcnZlcihDRVJURklMRSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKCcxMjcuMC4wLjEnLCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMjcyNyw3ICsyODAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjc0NSwxMiArMjgyMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCwgYWRkciA9IHMucmVjdmZyb21faW50byhiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYls6Y291bnRdCiAKLSAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgZXhwZWN0IHN1Y2Nlc3M/LCAqYXJncywgcmV0dXJuIHZhbHVlIGZ1bmMpCiAgICAgICAgICAgICAgICAgc2VuZF9tZXRob2RzID0gWwotICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10sIGxhbWJkYSB4OiBOb25lKSwKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKICAgICAgICAgICAgICAgICByZWN2X21ldGhvZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICgncmVjdicsIHMucmVjdiwgVHJ1ZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAoJ3JlY3Zmcm9tJywgcy5yZWN2ZnJvbSwgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLApAQCAtMjc1OSwxMCArMjgzNSwxMyBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICBkYXRhX3ByZWZpeCA9ICJQUkVGSVhfIgogCi0gICAgICAgICAgICAgICAgZm9yIG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncyBpbiBzZW5kX21ldGhvZHM6CisgICAgICAgICAgICAgICAgZm9yIChtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFsX21ldGgpIGluIHNlbmRfbWV0aG9kczoKICAgICAgICAgICAgICAgICAgICAgaW5kYXRhID0gKGRhdGFfcHJlZml4ICsgbWV0aF9uYW1lKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJzZW5kaW5nIHdpdGgge30iLmZvcm1hdChtZXRoX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0X3ZhbF9tZXRoKGluZGF0YSksIG1zZz1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhID0gcy5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGRhdGEgIT0gaW5kYXRhLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKApAQCAtMjg0Nyw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCiAgICAgICAgICAgICAjIHJlY3YvcmVhZCgwKSBzaG91bGQgcmV0dXJuIG5vIGRhdGEKQEAgLTI4NjksNyArMjk0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI5MjMsMTIgKzMwMDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldCwgYykKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgICAgICAgICBjID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGMuc2V0dGltZW91dCgwLjIpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCkBAIC0yOTUxLDYgKzMwMzAsNyBAQAogICAgICAgICAgICAgaG9zdCA9ICIxMjcuMC4wLjEiCiAgICAgICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKQogICAgICAgICAgICAgc2VydmVyID0gY29udGV4dC53cmFwX3NvY2tldChzZXJ2ZXIsIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNlcnZlcl9zaWRlKQogCiAgICAgICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgcmVtb3RlID0gTm9uZQpAQCAtMzA1Myw3ICszMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMzA3OCw3ICszMTU4LDcgQEAKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAogICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMzODgsNiArMzQ2OCwxMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisKKyAgICAgICAgICAgICMgZmlyc3QgY29ubmVjdGlvbiB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlc3Npb24gPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZXNzaW9uLnRpbWUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lb3V0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaGFzX3RpY2tldCkKKyAgICAgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+ICgxLCAwLCAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aWNrZXRfbGlmZXRpbWVfaGludCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDApCisKKyAgICAgICAgICAgICMgcmV1c2Ugc2Vzc2lvbgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBzZXNzaW9uPXNlc3Npb24pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMiA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjIuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLCBzZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKworICAgICAgICAgICAgIyBhbm90aGVyIG9uZSB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMyA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2Vzc2lvbjMuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLCBzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24gYWdhaW4KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjQgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb240LmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNCwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMikKKworICAgICAgICBkZWYgdGVzdF9zZXNzaW9uX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIGNvbnRleHQyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQyLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBzZXNzaW9uIGlzIE5vbmUgYmVmb3JlIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IHMuc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLCAnVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gc2V0IHNlc3Npb24gYmVmb3JlIGhhbmRzaGFrZSBhbmQgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHMuc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBUcnVlKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0Mi53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHJlLXVzZSBzZXNzaW9uIHdpdGggYSBkaWZmZXJlbnQgU1NMQ29udGV4dAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LicpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0zNDAwLDcgKzM1ODUsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zNDIyLDE4ICszNjA3LDIwIEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwotICAgICAgICBDRVJURklMRSwgUkVNT1RFX1JPT1RfQ0VSVCwgQllURVNfQ0VSVEZJTEUsCisgICAgICAgIENFUlRGSUxFLCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAogICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0cywKKyAgICAgICAgU2ltcGxlQmFja2dyb3VuZFRlc3RzLAorICAgIF0KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCi0gICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CmluZGV4IGYxYTU5MzguLmNkMDJhNmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgaW1wb3J0X2ZyZXNoX21vZHVsZSwgYW5kcm9pZF9ub3Rfcm9vdAogCiBjX3N0YXQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdzdGF0JywgZnJlc2g9Wydfc3RhdCddKQogcHlfc3RhdCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3N0YXQnLCBibG9ja2VkPVsnX3N0YXQnXSkKQEAgLTE2OCw2ICsxNjgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRTX0lTKCJMTksiLCBzdF9tb2RlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ21rZmlmbycpLCAnb3MubWtmaWZvIG5vdCBhdmFpbGFibGUnKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3RfZmlmbyhzZWxmKToKICAgICAgICAgb3MubWtmaWZvKFRFU1RGTiwgMG83MDApCiAgICAgICAgIHN0X21vZGUsIG1vZGVzdHIgPSBzZWxmLmdldF9tb2RlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQppbmRleCAwMDg5YWU4Li40YjNmZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CkBAIC0yMSw2ICsyMSwxMCBAQAogCiAjID09PSBIZWxwZXIgZnVuY3Rpb25zIGFuZCBjbGFzcyA9PT0KIAorZGVmIHNpZ24oeCk6CisgICAgIiIiUmV0dXJuIC0xLjAgZm9yIG5lZ2F0aXZlcywgaW5jbHVkaW5nIC0wLjAsIG90aGVyd2lzZSArMS4wLiIiIgorICAgIHJldHVybiBtYXRoLmNvcHlzaWduKDEsIHgpCisKIGRlZiBfbmFuX2VxdWFsKGEsIGIpOgogICAgICIiIlJldHVybiBUcnVlIGlmIGEgYW5kIGIgYXJlIGJvdGggdGhlIHNhbWUga2luZCBvZiBOQU4uCiAKQEAgLTI2NCw2ICsyNjgsMTMgQEAKICMgPT09IFRlc3QgdGhlIGhlbHBlcnMgPT09CiAjID09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBUZXN0U2lnbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gc2lnbigpIHdvcmtzIGNvcnJlY3RseS4iIiIKKyAgICBkZWYgdGVzdFplcm9lcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc2lnbmVkIHplcm9lcyByZXBvcnQgdGhlaXIgc2lnbiBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbigwLjApLCArMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKC0wLjApLCAtMSkKKwogCiAjIC0tLSBUZXN0cyBmb3IgYXBwcm94X2VxdWFsIC0tLQogCkBAIC02NTksNyArNjcwLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtT08gYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9kb2NfdGVzdHMoc2VsZik6Ci0gICAgICAgIGZhaWxlZCwgdHJpZWQgPSBkb2N0ZXN0LnRlc3Rtb2Qoc3RhdGlzdGljcykKKyAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzLCBvcHRpb25mbGFncz1kb2N0ZXN0LkVMTElQU0lTKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodHJpZWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFpbGVkLCAwKQogCkBAIC03MDIsOSArNzEzLDkgQEAKICAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgogICAgICAgICBEID0gRGVjaW1hbAogICAgICAgICBfZXhhY3RfcmF0aW8gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEyNSwgMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDEyMzQ1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiLTEuOTgiKSksICgtMTk4LCAxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEsIDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIxMi4zNDUiKSksICgyNDY5LCAyMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC05OSwgNTApKQogCiAgICAgZGVmIHRlc3RfaW5mKHNlbGYpOgogICAgICAgICBJTkYgPSBmbG9hdCgiSU5GIikKQEAgLTc0MywxOCArNzU0LDE4IEBACiAKIAogY2xhc3MgRGVjaW1hbFRvUmF0aW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgX2RlY2ltYWxfdG9fcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAjIFRlc3QgX2V4YWN0X3JhdGlvIHByaXZhdGUgZnVuY3Rpb24uCiAKICAgICBkZWYgdGVzdF9pbmZpbml0eShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSU5GcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGluZiA9IERlY2ltYWwoJ0lORicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1pbmYpLCAoLWluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oaW5mKSwgKGluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X25hbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgTkFOcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGZvciBuYW4gaW4gKERlY2ltYWwoJ05BTicpLCBEZWNpbWFsKCdzTkFOJykpOgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKG5hbikKKyAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8obmFuKQogICAgICAgICAgICAgIyBCZWNhdXNlIE5BTnMgYWx3YXlzIGNvbXBhcmUgbm9uLWVxdWFsLCB3ZSBjYW5ub3QgdXNlIGFzc2VydEVxdWFsLgogICAgICAgICAgICAgIyBOb3IgY2FuIHdlIHVzZSBhbiBpZGVudGl0eSB0ZXN0LCBhcyB3ZSBkb24ndCBndWFyYW50ZWUgYW55dGhpbmcKICAgICAgICAgICAgICMgYWJvdXQgdGhlIG9iamVjdCBpZGVudGl0eS4KQEAgLTc2NywzMCArNzc4LDMwIEBACiAgICAgICAgIGZvciBkIGluIG51bWJlcnM6CiAgICAgICAgICAgICAjIEZpcnN0IHRlc3QgcG9zaXRpdmUgZGVjaW1hbHMuCiAgICAgICAgICAgICBhc3NlcnQgZCA+IDAKLSAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhkKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKICAgICAgICAgICAgICMgVGhlbiB0ZXN0IG5lZ2F0aXZlIGRlY2ltYWxzLgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1kKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG51bSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZW4sIDApCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdCB3aGVuIHRoZSBleHBvbmVudCBpcyBuZWdhdGl2ZS4KLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQsIDEwMDAwKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjAuMTIzNCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsICg2MTcsIDUwMDApKQogCiAgICAgZGVmIHRlc3RfcG9zaXRpdmVfZXhwb25lbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXN1bHRzIHdoZW4gdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQwMDAwLCAxKSkKIAogICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb25fMjA1MzYoc2VsZik6CiAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyMDUzNi4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTM2Ci0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjFlMiIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMWUyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEwMCwgMSkpCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuNDdlNSIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDE0NzAwMCwgMSkpCiAKIApAQCAtOTcxLDYgKzk4MiwzNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9uYW5fZXF1YWwoeCwgbmFuKSkKIAogCitjbGFzcyBGYWlsTmVnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBfZmFpbF9uZWcgcHJpdmF0ZSBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X3Bhc3NfdGhyb3VnaChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuCisgICAgICAgIHZhbHVlcyA9IFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXQorICAgICAgICBuZXcgPSBsaXN0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKHZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzLCBuZXcpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZXNfcmFpc2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5lZ2F0aXZlcyByYWlzZSBhbiBleGNlcHRpb24uCisgICAgICAgIGZvciB4IGluIFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXToKKyAgICAgICAgICAgIHNlcSA9IFsteF0KKyAgICAgICAgICAgIGl0ID0gc3RhdGlzdGljcy5fZmFpbF9uZWcoc2VxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IsIG5leHQsIGl0KQorCisgICAgZGVmIHRlc3RfZXJyb3JfbXNnKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdXNlZC4KKyAgICAgICAgbXNnID0gImJhZG5lc3MgIyVkIiAlIHJhbmRvbS5yYW5kaW50KDEwMDAwLCA5OTk5OSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChzdGF0aXN0aWNzLl9mYWlsX25lZyhbLTFdLCBtc2cpKQorICAgICAgICBleGNlcHQgc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGVycm1zZyA9IGUuYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24sIGJ1dCBpdCBkaWRuJ3QgaGFwcGVuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJtc2csIG1zZykKKworCiAjID09PSBUZXN0cyBmb3IgcHVibGljIGZ1bmN0aW9ucyA9PT0KIAogY2xhc3MgVW5pdmFyaWF0ZUNvbW1vbk1peGluOgpAQCAtMTA4MiwxMyArMTEyMSwxMyBAQAogICAgIE5vdCBhbGwgdGVzdHMgdG8gZG8gd2l0aCB0eXBlcyBuZWVkIGdvIGluIHRoaXMgY2xhc3MuIE9ubHkgdGhvc2UgdGhhdAogICAgIHJlbHkgb24gdGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgc2FtZSB0eXBlIGFzIGl0cyBpbnB1dCBkYXRhLgogICAgICIiIgotICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCi0gICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgotICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KKyAgICBkZWYgcHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnNlcnZlZC4iIiIKICAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CiAgICAgICAgICAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX190cnVlZGl2X18ob3RoZXIpKQorICAgICAgICAgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3J0cnVlZGl2X18ob3RoZXIpKQogICAgICAgICAgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX19zdWJfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgpAQCAtMTA5OCw5ICsxMTM3LDE0IEBACiAgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX2FkZF9fKG90aGVyKSkKICAgICAgICAgICAgIF9fcmFkZF9fID0gX19hZGRfXworICAgICAgICByZXR1cm4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCkKIAorICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCisgICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgorICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KICAgICAgICAgZGF0YSA9IHNlbGYucHJlcGFyZV9kYXRhKCkKLSAgICAgICAgZm9yIGtpbmQgaW4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCk6CisgICAgICAgIGZvciBraW5kIGluIHNlbGYucHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3QoKToKICAgICAgICAgICAgIGQgPSBba2luZCh4KSBmb3IgeCBpbiBkYXRhXQogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mdW5jKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmVzdWx0KSwga2luZCkKQEAgLTEyNzUsMTIgKzEzMTksMTYgQEAKICAgICAgICAgZm9yIHggaW4gKDIzLCA0Mi41LCAxLjNlMTUsIEZyYWN0aW9uKDE1LCAxOSksIERlY2ltYWwoJzAuMjgnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbeF0pLCB4KQogCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0ZWRfc2luZ2xlX3ZhbHVlKHNlbGYpOgogICAgICAgICAjIFRoZSBhdmVyYWdlIG9mIGEgc2luZ2xlIHJlcGVhdGVkIHZhbHVlIGlzIHRoZSB2YWx1ZSBpdHNlbGYuCi0gICAgICAgIGZvciB4IGluICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKToKKyAgICAgICAgZm9yIHggaW4gc2VsZi5wcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3QoKToKICAgICAgICAgICAgIGZvciBjb3VudCBpbiAoMiwgNSwgMTAsIDIwKToKLSAgICAgICAgICAgICAgICBkYXRhID0gW3hdKmNvdW50Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBjb3VudD1jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCiAKIAogY2xhc3MgVGVzdE1lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgpAQCAtMTMwNCw3ICsxMzUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDIyLjAxNTYyNSkKIAogICAgIGRlZiB0ZXN0X2RlY2ltYWxzKHNlbGYpOgotICAgICAgICAjIFRlc3QgbWVhbiB3aXRoIGludHMuCisgICAgICAgICMgVGVzdCBtZWFuIHdpdGggRGVjaW1hbHMuCiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIGRhdGEgPSBbRCgiMS42MzQiKSwgRCgiMi41MTciKSwgRCgiMy45MTIiKSwgRCgiNC4wNzIiKSwgRCgiNS44MTMiKV0KICAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKQEAgLTEzNzksNiArMTQyNyw5NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLm1lYW4oW3RpbnldKm4pLCB0aW55KQogCiAKK2NsYXNzIFRlc3RIYXJtb25pY01lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mdW5jID0gc3RhdGlzdGljcy5oYXJtb25pY19tZWFuCisKKyAgICBkZWYgcHJlcGFyZV9kYXRhKHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRlIG1peGluIG1ldGhvZC4KKyAgICAgICAgdmFsdWVzID0gc3VwZXIoKS5wcmVwYXJlX2RhdGEoKQorICAgICAgICB2YWx1ZXMucmVtb3ZlKDApCisgICAgICAgIHJldHVybiB2YWx1ZXMKKworICAgIGRlZiBwcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC4xMjUnKSkKKworICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4gcmV0dXJucyB6ZXJvIHdoZW4gZ2l2ZW4gemVyby4KKyAgICAgICAgdmFsdWVzID0gWzEsIDAsIDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDApCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByYWlzZXMgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIHZhbHVlLgorICAgICAgICBleGMgPSBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvcgorICAgICAgICBmb3IgdmFsdWVzIGluIChbLTFdLCBbMSwgLTIsIDNdKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlcz12YWx1ZXMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2VsZi5mdW5jLCB2YWx1ZXMpCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIGludHMuCisgICAgICAgIGRhdGEgPSBbMiwgNCwgNCwgOCwgMTYsIDE2XQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgNio0LzUpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfZXhhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggc29tZSBjYXJlZnVsbHkgY2hvc2VuIGZsb2F0cy4KKyAgICAgICAgZGF0YSA9IFsxLzgsIDEvNCwgMS80LCAxLzIsIDEvMl0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDEvNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoWzAuMjUsIDAuNSwgMS4wLCAxLjBdKSwgMC41KQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9uX2xpc3RzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuKFt4XSkgcmV0dXJucyAoYXBwcm94aW1hdGVseSkgeC4KKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsc19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gRGVjaW1hbHMuCisgICAgICAgIEQgPSBEZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFtEKDE1KSwgRCgzMCksIEQoNjApLCBEKDYwKV0pLCBEKDMwKSkKKyAgICAgICAgZGF0YSA9IFtEKCIwLjA1IiksIEQoIjAuMTAiKSwgRCgiMC4yMCIpLCBEKCIwLjIwIildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKCIwLjEwIikpCisgICAgICAgIGRhdGEgPSBbRCgiMS42OCIpLCBEKCIwLjMyIiksIEQoIjUuOTQiKSwgRCgiMi43NSIpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRCg2NjUyOCkvNzA3MjMpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggRnJhY3Rpb25zLgorICAgICAgICBGID0gRnJhY3Rpb24KKyAgICAgICAgZGF0YSA9IFtGKDEsIDIpLCBGKDIsIDMpLCBGKDMsIDQpLCBGKDQsIDUpLCBGKDUsIDYpLCBGKDYsIDcpLCBGKDcsIDgpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRig3KjQyMCwgNDAyOSkpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW5maW5pdHkuCisgICAgICAgIHZhbHVlcyA9IFsyLjAsIGZsb2F0KCdpbmYnKSwgMS4wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyh2YWx1ZXMpLCAyLjApCisKKyAgICBkZWYgdGVzdF9uYW4oc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggTkFOcy4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ25hbicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHNlbGYuZnVuYyh2YWx1ZXMpKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGx5X2RhdGFfcG9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbXVsdGlwbHlpbmcgZXZlcnkgZGF0YSBwb2ludCBieSBhIGNvbnN0YW50LgorICAgICAgICBjID0gMTExCisgICAgICAgIGRhdGEgPSBbMy40LCA0LjUsIDQuOSwgNi43LCA2LjgsIDcuMiwgOC4wLCA4LjEsIDkuNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkqYworICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoW3gqYyBmb3IgeCBpbiBkYXRhXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZG91YmxlZF9kYXRhKHNlbGYpOgorICAgICAgICAjIEhhcm1vbmljIG1lYW4gb2YgW2EsYi4uLnpdIHNob3VsZCBiZSBzYW1lIGFzIGZvciBbYSxhLGIsYi4uLnosel0uCisgICAgICAgIGRhdGEgPSBbcmFuZG9tLnVuaWZvcm0oMSwgNSkgZm9yIF8gaW4gcmFuZ2UoMTAwMCldCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5mdW5jKGRhdGEpCisgICAgICAgIGFjdHVhbCA9IHNlbGYuZnVuYyhkYXRhKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0QXBwcm94RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0TWVkaWFuKE51bWVyaWNUZXN0Q2FzZSwgQXZlcmFnZU1peGluKToKICAgICAjIENvbW1vbiB0ZXN0cyBmb3IgbWVkaWFuIGFuZCBhbGwgbWVkaWFuLiogZnVuY3Rpb25zLgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2MDAsNiArMTczNiwyMiBAQAogICAgICAgICBkYXRhID0gWzIyMCwgMjIwLCAyNDAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjgwLCAyODAsIDMwMCwgMzIwLCAzNDBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEsIDIwKSwgMjY1LjApCiAKKyAgICBkZWYgdGVzdF9kYXRhX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCBtZWRpYW5fZ3JvdXBlZCB3aXRoIHN0ciwgYnl0ZXMgZGF0YSB0eXBlcyBmb3IgZGF0YSBhbmQgaW50ZXJ2YWwKKyAgICAgICAgZGF0YSA9IFsiIiwgIiIsICIiXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gW2IiIiwgYiIiLCBiIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbMSwgMiwgM10KKyAgICAgICAgaW50ZXJ2YWwgPSAiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9IGIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisKIAogY2xhc3MgVGVzdE1vZGUoTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgogICAgICMgVGVzdCBjYXNlcyBmb3IgdGhlIGRpc2NyZXRlIHZlcnNpb24gb2YgbW9kZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CmluZGV4IDc3MmNkMDYuLjcyYjE5MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQpAQCAtMjMsOSArMjMsOSBAQAogICAgICIiIgogICAgIG5ld190ZXh0ID0gcmUuZXNjYXBlKHRleHQpCiAgICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKHJlLmVzY2FwZShhbXBtKSwgYW1wbSkKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1wlJywgJyUnKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXDonLCAnOicpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcPycsICc/JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcJScsICclJykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcOicsICc6JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcPycsICc/JykKICAgICByZXR1cm4gbmV3X3RleHQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CnNpbWlsYXJpdHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQppbmRleCA4N2NmZmU4Li5hYmE0ZmM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQpAQCAtMzEsNiArMzEsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEwNCw2ICsxMDUsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIHIiIiIgJ1xVMDAwMDAwJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiICdcVTAwMDAwMDAnICIiIikKIAorICAgIGRlZiB0ZXN0X2V2YWxfc3RyX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdOVVxcYWJmbnJ0dXZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociInXCVjJyIgJSBiKSwgJ1xcJyArIGNocihiKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0uZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1swXS5saW5lbm8sIDIpCisKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLmxpbmVubywgMikKKwogICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3JhdyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByJ3gnICIiIiksICd4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcidceDAxJyAiIiIpLCAnXFwnICsgJ3gwMScpCkBAIC0xMjEsMTUgKzE0NSwzOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGInXHgwMScgIiIiKSwgYnl0ZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidceDgxJyAiIiIpLCBieXRlKDB4ODEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiJ1xcJyArIGIndTE4ODEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHUxODgxJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXFUwMDAxZDEyMCcgIiIiKSwgYidcXCcgKyBiJ1UwMDAxZDEyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXFUwMDAxZDEyMCcgIiIiKQogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19pbmNvbXBsZXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgciIiIiBiJ1x4JyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiIGInXHgwJyAiIiIpCiAKKyAgICBkZWYgdGVzdF9ldmFsX2J5dGVzX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdcXGFiZm5ydHZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociJiJ1wlYyciICUgYiksIGInXFwnICsgYnl0ZXMoW2JdKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCJiJycnXG5cXHonJyciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3WzBdLmZpbGVuYW1lLCAnPHN0cmluZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0ubGluZW5vLCAyKQorCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZXZhbCgiYicnJ1xuXFx6JycnIikKKyAgICAgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5maWxlbmFtZSwgJzxzdHJpbmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubGluZW5vLCAyKQorCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKaW5kZXggODUxMjZlNi4uMmNmMDkyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHJlCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZSBhcyBkYXRldGltZV9kYXRlCiAKQEAgLTEzMCw3ICsxMjksNyBAQAogICAgIGRlZiB0ZXN0X3BhdHRlcm5fZXNjYXBpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGFueSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHRoYXQgbWlnaHQgYmUgdGFrZW4gYXMKICAgICAgICAgIyByZWdleCBzeW50YXggaXMgZXNjYXBlZC4KLSAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybigiXGQrIikKKyAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybihyIlxkKyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ociJcXGRcKyIsIHBhdHRlcm5fc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHJlIGNoYXJhY3RlcnMgZXNjYXBlZCBwcm9wZXJseSIgJQogICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5fc3RyaW5nKQpAQCAtMTUzLDggKzE1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgdXNpbmcgJyVzJzsgZ3JvdXAgJ2EnID0gJyVzJywgZ3JvdXAgJ2InID0gJXMnIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvdW5kLnN0cmluZywgZm91bmQucmUucGF0dGVybiwgZm91bmQuZ3JvdXAoJ2EnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuZ3JvdXAoJ2InKSkpCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdhJywnQScsJ2InLCdCJywnYycsJ2QnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLCdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ1UnLCd3JywnVycsJ3gnLCdYJywneScsJ1knLCdaJywnJScpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnRycsJ0gnLCdJJywnaicsJ20nLCdNJywncCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdTJywndScsJ1UnLCdWJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKICAgICAgICAgICAgIGNvbXBpbGVkID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIiUiICsgZGlyZWN0aXZlKQogICAgICAgICAgICAgZm91bmQgPSBjb21waWxlZC5tYXRjaCh0aW1lLnN0cmZ0aW1lKCIlIiArIGRpcmVjdGl2ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJNYXRjaGluZyBmYWlsZWQgb24gJyVzJyB1c2luZyAnJXMnIHJlZ2V4IiAlCkBAIC0xNzEsOSArMTcwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21hdGNoaW5nX3dpdGhfZXNjYXBlcyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSBmb3JtYXQgdGhhdCByZXF1aXJlcyBlc2NhcGluZyBvZiBjaGFyYWN0ZXJzIHdvcmtzCi0gICAgICAgIGNvbXBpbGVkX3JlID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIlx3KyAlbSIpCi0gICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2goIlx3KyAxMCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIkVzY2FwaW5nIGZhaWxlZCBvZiBmb3JtYXQgJ1x3KyAxMCciKQorICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKHIiXHcrICVtIikKKyAgICAgICAgZm91bmQgPSBjb21waWxlZF9yZS5tYXRjaChyIlx3KyAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgciJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9kYXRhX3dfcmVnZXhfbWV0YWNoYXJhY3RlcnMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBpZiBsb2NhbGUgZGF0YSBjb250YWlucyByZWdleCBtZXRhY2hhcmFjdGVycyB0aGV5IGFyZQpAQCAtMjE5LDYgKzIxOCwyNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiclcycgZGlkIG5vdCByYWlzZSBWYWx1ZUVycm9yIiAlIGJhZF9mb3JtYXQpCiAKKyAgICAgICAgIyBBbWJpZ3VvdXMgb3IgaW5jb21wbGV0ZSBjYXNlcyB1c2luZyBJU08geWVhci93ZWVrL3dlZWtkYXkgZGlyZWN0aXZlcworICAgICAgICAjIDEuIElTTyB3ZWVrICglVikgaXMgc3BlY2lmaWVkLCBidXQgdGhlIHllYXIgaXMgc3BlY2lmaWVkIHdpdGggJVkKKyAgICAgICAgIyBpbnN0ZWFkIG9mICVHCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUwIiwgIiVZICVWIikKKyAgICAgICAgIyAyLiBJU08geWVhciAoJUcpIGFuZCBJU08gd2VlayAoJVYpIGFyZSBzcGVjaWZpZWQsIGJ1dCB3ZWVrZGF5IGlzIG5vdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MSIsICIlRyAlViIpCisgICAgICAgICMgMy4gSVNPIHllYXIgKCVHKSBhbmQgd2Vla2RheSBhcmUgc3BlY2lmaWVkLCBidXQgSVNPIHdlZWsgKCVWKSBpcyBub3QKKyAgICAgICAgZm9yIHcgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCIlRyAle30iLmZvcm1hdCh3KSkKKyAgICAgICAgIyA0LiBJU08geWVhciBpcyBzcGVjaWZpZWQgYWxvbmUgKGUuZy4gdGltZS5zdHJwdGltZSgnMjAxNScsICclRycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMjAxNSIsICIlRyIpCisgICAgICAgICMgNS4gSnVsaWFuL29yZGluYWwgZGF5ICglaikgaXMgc3BlY2lmaWVkIHdpdGggJUcsIGJ1dCBub3QgJVkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgMjU2IiwgIiVHICVqIikKKworCiAgICAgZGVmIHRlc3Rfc3RycHRpbWVfZXhjZXB0aW9uX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgY2hlY2sgdGhhdCB0aGlzIGRvZXNuJ3QgY2hhaW4gZXhjZXB0aW9ucyBuZWVkbGVzc2x5IChzZWUgIzE3NTcyKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CkBAIC0yOTAsNyArMzA5LDcgQEAKIAogICAgIGRlZiB0ZXN0X3dlZWtkYXkoc2VsZik6CiAgICAgICAgICMgVGVzdCB3ZWVrZGF5IGRpcmVjdGl2ZXMKLSAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ0EnLCAnYScsICd3Jyk6CisgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihkaXJlY3RpdmUsNikKIAogICAgIGRlZiB0ZXN0X2p1bGlhbihzZWxmKToKQEAgLTM4NCw3ICs0MDMsNyBAQAogICAgICAgICAjIHVuYmFsYW5jZWQgcGFyZW50aGVzZXMgd2hlbiB0aGUgcmVnZXggaXMgY29tcGlsZWQgaWYgdGhleSBhcmUgbm90CiAgICAgICAgICMgZXNjYXBlZC4KICAgICAgICAgIyBUZXN0IGluc3RpZ2F0ZWQgYnkgYnVnICM3OTYxNDkgLgotICAgICAgICBuZWVkX2VzY2FwaW5nID0gIi5eJCorP3t9XFtdfCkoIgorICAgICAgICBuZWVkX2VzY2FwaW5nID0gciIuXiQqKz97fVxbXXwpKCIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShuZWVkX2VzY2FwaW5nLCBuZWVkX2VzY2FwaW5nKSkKIAogICAgIGRlZiB0ZXN0X2ZlYjI5X29uX2xlYXBfeWVhcl93aXRob3V0X3llYXIoc2VsZik6CkBAIC00NTMsMjAgKzQ3MiwzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGN1bGF0aW9uIG9mIGRheSBvZiB0aGUgd2VlayBmYWlsZWQ7IgogICAgICAgICAgICAgICAgICAgICAgICAgICIlcyAhPSAlcyIgJSAocmVzdWx0LnRtX3dkYXksIHNlbGYudGltZV90dXBsZS50bV93ZGF5KSkKIAorICAgIGlmIHN1cHBvcnQuaXNfYW5kcm9pZDoKKyAgICAgICAgIyBJc3N1ZSAjMjY5Mjk6IHN0cmZ0aW1lKCkgb24gQW5kcm9pZCBpbmNvcnJlY3RseSBmb3JtYXRzICVWIG9yICVHIGZvcgorICAgICAgICAjIHRoZSBsYXN0IG9yIHRoZSBmaXJzdCBpbmNvbXBsZXRlIHdlZWsgaW4gYSB5ZWFyLgorICAgICAgICBfeW1kX2V4Y2x1ZGVkID0gKCgxOTA1LCAxLCAxKSwgKDE5MDYsIDEyLCAzMSksICgyMDA4LCAxMiwgMjkpLAorICAgICAgICAgICAgICAgICAgICAgICAgKDE5MTcsIDEyLCAzMSkpCisgICAgICAgIF9mb3JtYXRzX2V4Y2x1ZGVkID0gKCclRyAlVicsKQorICAgIGVsc2U6CisgICAgICAgIF95bWRfZXhjbHVkZWQgPSAoKQorICAgICAgICBfZm9ybWF0c19leGNsdWRlZCA9ICgpCisKICAgICBkZWYgdGVzdF93ZWVrX29mX3llYXJfYW5kX2RheV9vZl93ZWVrX2NhbGN1bGF0aW9uKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIGluZmVyIGRhdGUgaWYgZ2l2ZW4geWVhciwgd2VlayBvZiB5ZWFyICglVSBvciAlVykKICAgICAgICAgIyBhbmQgZGF5IG9mIHRoZSB3ZWVrCiAgICAgICAgIGRlZiB0ZXN0X2hlbHBlcih5bWRfdHVwbGUsIHRlc3RfcmVhc29uKToKLSAgICAgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdXJywgJ1UnKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gIiUlWSAlJSVzICUldyIgJSBkaXJlY3RpdmUKLSAgICAgICAgICAgICAgICBkdF9kYXRlID0gZGF0ZXRpbWVfZGF0ZSgqeW1kX3R1cGxlKQotICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwgZm9ybWF0X3N0cmluZykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RycF9vdXRwdXRbOjNdID09IHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcyglcykgdGVzdCBmYWlsZWQgdy8gJyVzJzogJXMgIT0gJXMgKCVzICE9ICVzKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X3JlYXNvbiwgZGlyZWN0aXZlLCBzdHJwX2lucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sIGR0X2RhdGUudGltZXR1cGxlKClbN10pKQorICAgICAgICAgICAgZm9yIHllYXJfd2Vla19mb3JtYXQgaW4gKCclWSAlVycsICclWSAlVScsICclRyAlVicpOgorICAgICAgICAgICAgICAgIGlmICh5ZWFyX3dlZWtfZm9ybWF0IGluIHNlbGYuX2Zvcm1hdHNfZXhjbHVkZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5bWRfdHVwbGUgaW4gc2VsZi5feW1kX2V4Y2x1ZGVkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZm9yIHdlZWtkYXlfZm9ybWF0IGluICgnJXcnLCAnJXUnLCAnJWEnLCAnJUEnKToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IHllYXJfd2Vla19mb3JtYXQgKyAnICcgKyB3ZWVrZGF5X2Zvcm1hdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0X3JlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT15bWRfdHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mb3JtYXRfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiJXI6ICVzICE9ICVzIiAlIChzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwgbXNnKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgMyksICJ3ZWVrIDAiKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgOCksICJjb21tb24gY2FzZSIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAxMyksICJkYXkgb24gU3VuZGF5IikKQEAgLTQ5OCwzMyArNTM0LDQ4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZSh2YWx1ZSwgZm9ybWF0KVs6LTFdLCBleHBlY3RlZCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVVICV3JywgMjAxNCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMCcsICclWSAlVyAldycsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMScsICclRyAlViAldScsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKICAgICAgICAgY2hlY2soJzIwMTUgMCAxJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMicsICclRyAlViAldScsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAyJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMycsICclRyAlViAldScsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMTUgMCAzJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNCcsICclRyAlViAldScsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVSAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVyAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNScsICclRyAlViAldScsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVSAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVyAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNicsICclRyAlViAldScsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVSAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVyAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNycsICclRyAlViAldScsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCiAKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVVICV3JywgMjAwOCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMCcsICclWSAlVyAldycsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMScsICclRyAlViAldScsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMDkgMCAxJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMicsICclRyAlViAldScsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMDkgMCAyJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMycsICclRyAlViAldScsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKICAgICAgICAgY2hlY2soJzIwMDkgMCAzJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNCcsICclRyAlViAldScsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVSAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVyAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNScsICclRyAlViAldScsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVSAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVyAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNicsICclRyAlViAldScsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVSAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVyAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNycsICclRyAlViAldScsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisKIAogY2xhc3MgQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IGNhY2hpbmcgd29ya3MgcHJvcGVybHkuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGVmYmRiZmMuLjRkOWQ2MDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgYWJjCiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN0cnVjdApAQCAtMTUsMjIgKzE2LDEwIEBACiBkZWYgaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoYnl0ZW9yZGVycz1ieXRlb3JkZXJzKToKICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgogICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgbm90IGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ24nLCAnTicpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgeWllbGQgY29kZSwgYnl0ZW9yZGVyCiAKLSMgTmF0aXZlICdxJyBwYWNraW5nIGlzbid0IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgQwotIyBsb25nIGxvbmcgdHlwZS4KLXRyeToKLSAgICBzdHJ1Y3QucGFjaygncScsIDUpCi1leGNlcHQgc3RydWN0LmVycm9yOgotICAgIEhBVkVfTE9OR19MT05HID0gRmFsc2UKLWVsc2U6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBUcnVlCi0KIGRlZiBzdHJpbmdfcmV2ZXJzZShzKToKICAgICByZXR1cm4gc1s6Oi0xXQogCkBAIC0xNTgsOSArMTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcsICduTicKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBuYXRpdmVfcGFpcnMgKz0gJ3FRJywKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJywgJ3FRJwogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgogICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnJywgJ0AnOgogICAgICAgICAgICAgICAgIHNpZ25lZF9zaXplID0gc3RydWN0LmNhbGNzaXplKGJ5dGVvcmRlciArIGZvcm1hdF9wYWlyWzBdKQpAQCAtMTczLDkgKzE2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDQsIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2gnKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaScpLCBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSkKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnaScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdQJykpCiAKQEAgLTM2Niw4ICszNTIsNiBAQAogICAgICAgICAjIFNGIGJ1ZyA3MDU4MzYuICAiPGYiIGFuZCAiPmYiIGhhZCBhIHNldmVyZSByb3VuZGluZyBidWcsIHdoZXJlIGEgY2FycnkKICAgICAgICAgIyBmcm9tIHRoZSBsb3ctb3JkZXIgZGlzY2FyZGVkIGJpdHMgY291bGQgcHJvcGFnYXRlIGludG8gdGhlIGV4cG9uZW50CiAgICAgICAgICMgZmllbGQsIGNhdXNpbmcgdGhlIHJlc3VsdCB0byBiZSB3cm9uZyBieSBhIGZhY3RvciBvZiAyLgotICAgICAgICBpbXBvcnQgbWF0aAotCiAgICAgICAgIGZvciBiYXNlIGluIHJhbmdlKDEsIDMzKToKICAgICAgICAgICAgICMgc21hbGxlciA8LSBsYXJnZXN0IHJlcHJlc2VudGFibGUgZmxvYXQgbGVzcyB0aGFuIGJhc2UuCiAgICAgICAgICAgICBkZWx0YSA9IDAuNQpAQCAtNjU5LDYgKzY0MywxMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCisgICAgZGVmIHRlc3RfaGFsZl9mbG9hdChzZWxmKToKKyAgICAgICAgIyBMaXR0bGUtZW5kaWFuIGV4YW1wbGVzIGZyb206CisgICAgICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmX3ByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3QgPSBbCisgICAgICAgICAgICAoYidceDAwXHgzYycsIDEuMCksCisgICAgICAgICAgICAoYidceDAwXHhjMCcsIC0yLjApLAorICAgICAgICAgICAgKGInXHhmZlx4N2InLCA2NTUwNC4wKSwgIyAgKG1heCBoYWxmIHByZWNpc2lvbikKKyAgICAgICAgICAgIChiJ1x4MDBceDA0JywgMioqLTE0KSwgIyB+PSA2LjEwMzUyICogMTAqKi01IChtaW4gcG9zIG5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDFceDAwJywgMioqLTI0KSwgIyB+PSA1Ljk2MDQ2ICogMTAqKi04IChtaW4gcG9zIHN1Ym5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDBceDAwJywgMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDgwJywgLTAuMCksCisgICAgICAgICAgICAoYidceDAwXHg3YycsIGZsb2F0KCcraW5mJykpLAorICAgICAgICAgICAgKGInXHgwMFx4ZmMnLCBmbG9hdCgnLWluZicpKSwKKyAgICAgICAgICAgIChiJ1x4NTVceDM1JywgMC4zMzMyNTE5NTMxMjUpLCAjIH49IDEvMworICAgICAgICBdCisKKyAgICAgICAgZm9yIGxlX2JpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3Q6CisgICAgICAgICAgICBiZV9iaXRzID0gbGVfYml0c1s6Oi0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc8ZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnPGUnLCBmKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnPmUnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmVfYml0cywgc3RydWN0LnBhY2soJz5lJywgZikpCisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVfYml0cywgc3RydWN0LnBhY2soJ2UnLCBmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgYmVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorCisgICAgICAgICMgQ2hlY2sgZm9yIE5hTiBoYW5kbGluZzoKKyAgICAgICAgZm9ybWF0X2JpdHNfX25hbl9saXN0ID0gWworICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4ZmMnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceGZlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHhmZicpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4N2MnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceDdlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHg3ZicpLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMgaW4gZm9ybWF0X2JpdHNfX25hbl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc3RydWN0LnVucGFjaygnPGUnLCBiaXRzKVswXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc+ZScsIGJpdHNbOjotMV0pWzBdKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgcGFja2luZyBwcm9kdWNlcyBhIGJpdCBwYXR0ZXJuIHJlcHJlc2VudGluZyBhIHF1aWV0IE5hTjoKKyAgICAgICAgIyBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIG1zYiBvZiB0aGUgZnJhY3Rpb24gc2hvdWxkIGFsbCBiZSAxLgorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCBtYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCAtbWF0aC5uYW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2VkWzFdICYgMHg3ZSwgMHg3ZSkKKworICAgICAgICAjIENoZWNrcyBmb3Igcm91bmQtdG8tZXZlbiBiZWhhdmlvcgorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fcm91bmRpbmdfbGlzdCA9IFsKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAxJywgMi4wKiotMjUgKyAyLjAqKi0zNSksICMgUm91bmRzIHRvIG1pbmltdW0gc3Vibm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDAnLCAyLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjQpLCAjIExhcmdlc3Qgc3Vibm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgwM1x4ZmYnLCAyLjAqKi0xNCAtIDIuMCoqLTI1IC0gMi4wKiotNjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCAtIDIuMCoqLTI1KSwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDRceDAwJywgMi4wKiotMTQpLCAjIFNtYWxsZXN0IG5vcm1hbC4KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAxJywgMS4wKzIuMCoqLTExICsgMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTEyKSwgIyByb3VuZHMgdG8gMS4wCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTA0KSwgIyBsYXJnZXN0IG5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg3Ylx4ZmYnLCA2NTUxOSksICMgcm91bmRzIHRvIDY1NTA0CisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMScsIC0yLjAqKi0yNSAtIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAwJywgLTIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjYpLCAjIFVuZGVyZmxvd3MgdG8gemVybworICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDEnLCAtMS4wLTIuMCoqLTExIC0gMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMSksICMgcm91bmRzIHRvIDEuMCAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMCcsIC0xLjAtMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ZmJceGZmJywgLTY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKworICAgICAgICAjIFRoaXMgb3ZlcmZsb3dzLCBhbmQgc28gcmFpc2VzIGFuIGVycm9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAjIFZhbHVlcyB0aGF0IHJvdW5kIHRvIGluZmluaXR5LgorICAgICAgICAgICAgKCc+ZScsIDY1NTIwLjApLAorICAgICAgICAgICAgKCc+ZScsIDY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIDFlMzAwKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgLTY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIC0xZTMwMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgMWUzMDApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgLTFlMzAwKSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0Y29kZSwgZikKKworICAgICAgICAjIERvdWJsZSByb3VuZGluZworICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHg2N1x4ZmYnLCAweDFmZmRmZmZmZmYgKiAyKiotMjYpLCAjIHNob3VsZCBiZSAyMDQ3LCBpZiBkb3VibGUtcm91bmRlZCA2ND4zMj4xNiwgYmVjb21lcyAyMDQ4CisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzMzMWJiOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ViY2xhc3Npbml0LnB5CkBAIC0wLDAgKzEsMjg0IEBACitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBpbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IFRydWUKKworICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoQS5pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEIuaW5pdGlhbGl6ZWQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2RpY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIEEoZGljdCk6CisgICAgICAgICAgICBpbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IFRydWUKKworICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoQS5pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEIuaW5pdGlhbGl6ZWQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2t3YXJncyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBjbHMua3dhcmdzID0ga3dhcmdzCisKKyAgICAgICAgY2xhc3MgQihBLCB4PTMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5rd2FyZ3MsIGRpY3QoeD0zKSkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfd3Jvbmcoc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCB3aGF0ZXZlcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19za2lwcGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXNlV2l0aEluaXQ6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBjbHMKKworICAgICAgICBjbGFzcyBCYXNlV2l0aG91dEluaXQoQmFzZVdpdGhJbml0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBBKEJhc2VXaXRob3V0SW5pdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmluaXRpYWxpemVkLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzKEJhc2VXaXRob3V0SW5pdC5pbml0aWFsaXplZCwgQmFzZVdpdGhvdXRJbml0KQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19kaWFtb25kKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXNlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzID0gW10KKworICAgICAgICBjbGFzcyBMZWZ0KEJhc2UpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIE1pZGRsZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIG1pZGRsZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzICs9IFttaWRkbGVdCisKKyAgICAgICAgY2xhc3MgUmlnaHQoQmFzZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCByaWdodD0icmlnaHQiLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgKz0gW3JpZ2h0XQorCisgICAgICAgIGNsYXNzIEEoTGVmdCwgTWlkZGxlLCBSaWdodCwgbWlkZGxlPSJtaWRkbGUiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEuY2FsbHMsIFsicmlnaHQiLCAibWlkZGxlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGVmdC5jYWxscywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUmlnaHQuY2FsbHMsIFtdKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWUoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEuZC5uYW1lLCAiZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5kLm93bmVyLCBBKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfbWV0YWNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHJldCA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldC5kLm5hbWUsICJkIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJldC5kLm93bmVyLCByZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEsIDApCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsYXNzIE5vdEdvaW5nVG9Xb3JrOgorICAgICAgICAgICAgICAgIGF0dHIgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYk5vdEdvaW5nVG9Xb3JrXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiYXR0clxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYkRlc2NyaXB0b3JcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jYXVzZV9fLCBaZXJvRGl2aXNpb25FcnJvcikKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgTm90R29pbmdUb1dvcms6CisgICAgICAgICAgICAgICAgYXR0ciA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiTm90R29pbmdUb1dvcmtcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJhdHRyXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiRGVzY3JpcHRvclxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NhdXNlX18sIFR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2xvb2t1cChzZWxmKToKKyAgICAgICAgcmVzb2x2ZWQgPSBbXQorICAgICAgICBjbGFzcyBOb25EZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJlc29sdmVkLmFwcGVuZChuYW1lKQorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkID0gTm9uRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX19zZXRfbmFtZV9fJywgcmVzb2x2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc2V0X25hbWVfXyBpcyBsb29rZWQgdXAgaW4gaW5zdGFuY2UgZGljdCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9pbml0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgICAgICAgICBzZWxmLm1ldGFfb3duZXIgPSBzZWxmLm93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX25hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBjbHMub3duZXIgPSBjbHMuZC5vd25lcgorICAgICAgICAgICAgICAgIGNscy5uYW1lID0gY2xzLmQubmFtZQorCisgICAgICAgIGNsYXNzIEIoQSwgbWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5vd25lciwgQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLm5hbWUsICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLm1ldGFfb3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9tb2RpZnlpbmdfZGljdChzZWxmKToKKyAgICAgICAgbm90aWZpZWQgPSBbXQorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cihvd25lciwgbmFtZSArICd4JywgTm9uZSkKKyAgICAgICAgICAgICAgICBub3RpZmllZC5hcHBlbmQobmFtZSkKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgYSA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgYiA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgYyA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgZSA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChub3RpZmllZCwgWydhJywgJ2InLCAnYycsICdkJywgJ2UnXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLm5ld19jbGFzcygiTXlDbGFzcyIsIChvYmplY3QsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpKQorICAgICAgICB0eXBlcy5wcmVwYXJlX2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYub3RoZXJhcmcgPSBvdGhlcmFyZworCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3JzX2NoYW5nZWRfcGVwNDg3KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGZhaWxlZCBiZWZvcmUgUHl0aG9uIDMuNiwgUEVQIDQ4NworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lPW5hbWUsIGJhc2VzPWJhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdD1uYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlDbGFzcy5vdGhlcmFyZywgMSkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIHQgPSB0eXBlKCdOZXdDbGFzcycsIChvYmplY3QsKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19uYW1lX18sICdOZXdDbGFzcycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZShuYW1lPSdOZXdDbGFzcycsIGJhc2VzPShvYmplY3QsKSwgZGljdD17fSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IDc1OGUwOTQuLjg5ZGU2ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsMjAgKzEsMTYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbwotaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWltcG9ydCByZQogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKQEAgLTI1LDYgKzIxLDkgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiBtc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCiAKICMKQEAgLTI5NCw3ICsyOTMsOCBAQAogICAgICAgICAjIFZlcmlmeSBmaXJzdCB0aGF0IHRoZSBjYWxsIHN1Y2NlZWRzIHdpdGhvdXQgdGhlIGV4ZWN1dGFibGUgYXJnLgogICAgICAgICBwcmVfYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIl0KICAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihwcmVfYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPSJkb2Vzbm90ZXhpc3QiKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJleGVjdXRhYmxlIGFyZ3VtZW50IHJlcGxhY2VzIHNoZWxsIikKQEAgLTQ0OCw4ICs0NDgsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCJvcmFuZ2UiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZG91dCBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTQ3OSw4ICs0NzksOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3RkZXJyLndyaXRlKCJzdHJhd2JlcnJ5IiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3RkZXJyLnJlYWQoKSwgYiJzdHJhd2JlcnJ5IikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZGVyciBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTUzNSw4ICs1MzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZW9yYW5nZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9zdGRlcnJfZmlsZShzZWxmKToKICAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBzYW1lIG9wZW4gZmlsZQpAQCAtNzk0LDE4ICs3OTQsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTFcbiIpCi0gICAgICAgIHAuc3RkaW4uZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTNcbiIpCi0gICAgICAgIHAuc3RkaW4uY2xvc2UoKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTNcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLCAibGluZTFcbiIpCisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKKyAgICAgICAgICAgIHAuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKIAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZShzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpCkBAIC04OTQsMzEgKzg5NSw0MiBAQAogICAgICAgICAjCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzItQkUgYXJlIHN1ZmZpY2llbnQgdG8gY2hlY2sgYm90aCB3aXRoIEJPTSBhbmQKICAgICAgICAgIyB3aXRob3V0LCBhbmQgVVRGLTE2IGFuZCBVVEYtMzIuCi0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtMTYnLCAndXRmLTMyLWJlJ106Ci0gICAgICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgIyBJbmRpcmVjdGx5IHZpYSBpby5UZXh0SU9XcmFwcGVyLCBQb3BlbigpIGRlZmF1bHRzIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgYW5kIGVhcmxpZXIgaW4gUHl0aG9uIDMuMiB0bwotICAgICAgICAgICAgIyBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS4KLSAgICAgICAgICAgIGRlZiBnZXRwcmVmZXJyZWRlbmNvZGluZyhkb19zZXRsb2NhbGU9VHJ1ZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nCiAgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCiAgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoJzFcclxuMlxyM1xuNCcuZW5jb2RlKCclcycpKSIgJQogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKICAgICAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsIGNvZGVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBnZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKLSAgICAgICAgICAgICAgICAjIGEgZGlmZmVyZW50IGNvZGUgcGF0aCBpcyB1c2VkIHdoZW4gdGhlIG51bWJlciBvZiBwaXBlcyBpcwotICAgICAgICAgICAgICAgICMgemVybyBvciBvbmUuCi0gICAgICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAorICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGVycm9ycywgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCdpZ25vcmUnLCAnJyksCisgICAgICAgICAgICAoJ3JlcGxhY2UnLCAnXHVmZmZkXHVmZmZkJyksCisgICAgICAgICAgICAoJ3N1cnJvZ2F0ZWVzY2FwZScsICdcdWRjODBcdWRjODAnKSwKKyAgICAgICAgICAgICgnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MFxceDgwJyksCisgICAgICAgIF06CisgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCisgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYidbXHg4MFx4ODBdJykiKQorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAnW3t9XScuZm9ybWF0KGV4cGVjdGVkKSkKKwogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGxlYWsgbm8gcmVzb3VyY2VzCiAgICAgICAgIGlmIG5vdCBtc3dpbmRvd3M6CkBAIC0xMDAzLDYgKzEwMTUsMTkgQEAKICAgICAgICAgIyB0aW1lIHRvIHN0YXJ0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCh0aW1lb3V0PTMpLCAwKQogCisgICAgZGVmIHRlc3Rfd2FpdF9lbmR0aW1lKHNlbGYpOgorICAgICAgICAiIiJDb25maXJtIHRoYXQgdGhlIGRlcHJlY2F0ZWQgZW5kdGltZSBwYXJhbWV0ZXIgd2FybnMuIiIiCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgInBhc3MiXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2Fybl9jbToKKyAgICAgICAgICAgICAgICBwLndhaXQoZW5kdGltZT10aW1lLnRpbWUoKSswLjAxKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKKyAgICAgICAgICAgIHBhc3MgICMgV2UncmUgbm90IHRlc3RpbmcgZW5kdGltZSB0aW1lb3V0IGJlaGF2aW9yLgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5raWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdF9zdWJwcm9jZXNzLnB5Jywgd2Fybl9jbS5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZW5kdGltZScsIHN0cih3YXJuX2NtLndhcm5pbmcpKQorCiAgICAgZGVmIHRlc3RfaW52YWxpZF9idWZzaXplKHNlbGYpOgogICAgICAgICAjIGFuIGludmFsaWQgdHlwZSBvZiB0aGUgYnVmc2l6ZSBhcmd1bWVudCBzaG91bGQgcmFpc2UKICAgICAgICAgIyBUeXBlRXJyb3IuCkBAIC0xNDMxLDYgKzE0NTYsMjcgQEAKICAgICAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLXAucmV0dXJuY29kZSwgc2lnbmFsLlNJR0FCUlQpCiAKKyAgICBkZWYgdGVzdF9DYWxsZWRQcm9jZXNzRXJyb3Jfc3RyX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLWludChzaWduYWwuU0lHQUJSVCksICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgICMgV2UncmUgcmVseWluZyBvbiB0aGUgcmVwcigpIG9mIHRoZSBzaWduYWwuU2lnbmFscyBpbnRlbnVtIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGUgd29yZCBzaWduYWwsIHRoZSBzaWduYWwgbmFtZSBhbmQgdGhlIG51bWVyaWMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpZ25hbCIsIGVycm9yX3N0cmluZy5sb3dlcigpKQorICAgICAgICAjIFdlJ3JlIG5vdCBiZWluZyBzcGVjaWZpYyBhYm91dCB0aGUgc2lnbmFsIG5hbWUgYXMgc29tZSBzaWduYWxzIGhhdmUKKyAgICAgICAgIyBtdWx0aXBsZSBuYW1lcyBhbmQgd2hpY2ggbmFtZSBpcyByZXZlYWxlZCBjYW4gdmFyeS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigiU0lHIiwgZXJyb3Jfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEluKHN0cihzaWduYWwuU0lHQUJSVCksIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfdW5rbm93bl9zaWduYWwoc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKC05ODc2NTQzLCAiZmFrZSBjbWQiKQorICAgICAgICBlcnJvcl9zdHJpbmcgPSBzdHIoZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmtub3duIHNpZ25hbCA5ODc2NTQzLiIsIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfbm9uX3plcm8oc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDIsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vbi16ZXJvIGV4aXQgc3RhdHVzIDIuIiwgZXJyb3Jfc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcHJlZXhlYyhzZWxmKToKICAgICAgICAgIyBESVNDTEFJTUVSOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpcyAqbm90KiBhIGdvb2QgdXNlCiAgICAgICAgICMgb2YgYSBwcmVleGVjX2ZuLiAgVGhpcyBpcyBtZXJlbHkgYSB0ZXN0LgpAQCAtMTQzOSw4ICsxNDg1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKG9zLmdldGVudigiRlJVSVQiKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnB1dGVudigiRlJVSVQiLCAiYXBwbGUiKSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3ByZWV4ZWNfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBkZWYgcmFpc2VfaXQoKToKQEAgLTE1NjEsNyArMTYwNyw3IEBACiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTU4OCw4ICsxNjM0LDggQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJlY2hvICRGUlVJVCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQpAQCAtMTU5OCwxNSArMTY0NCwxNSBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigiZWNobyAkRlJVSVQiLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X2NhbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCBvbiBVTklYCiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTYzMSw4ICsxNjc3LDggQEAKICAgICAgICAgZm9yIHNoIGluIHNoZWxsczoKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICQwIiwgZXhlY3V0YWJsZT1zaCwgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCisgICAgICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoKSwgYnl0ZXMoc2gsICdhc2NpaScpKQogCiAgICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgbWV0aG9kLCAqYXJncyk6CiAgICAgICAgICMgRG8gbm90IGluaGVyaXQgZmlsZSBoYW5kbGVzIGZyb20gdGhlIHBhcmVudC4KQEAgLTIyOTAsNyArMjMzNiw5IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgaWRlbnQgPSBpZChwKQogICAgICAgICBwaWQgPSBwLnBpZAotICAgICAgICBkZWwgcAorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBSZXNvdXJjZVdhcm5pbmcpKToKKyAgICAgICAgICAgIHAgPSBOb25lCisKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKIApAQCAtMjMwOSw3ICsyMzU3LDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICMgY2hlY2sgdGhhdCBwIGlzIGluIHRoZSBhY3RpdmUgcHJvY2Vzc2VzIGxpc3QKICAgICAgICAgc2VsZi5hc3NlcnRJbihpZGVudCwgW2lkKG8pIGZvciBvIGluIHN1YnByb2Nlc3MuX2FjdGl2ZV0pCkBAIC0yNTAxLDggKzI1NTEsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbInNldCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0yNTExLDggKzI1NjEsMjAgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9zaGVsbF9lbmNvZGluZ3Moc2VsZik6CisgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKKyAgICAgICAgZm9yIGVuYyBpbiBbJ2Fuc2knLCAnb2VtJ106CisgICAgICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gInBoeXNhbGlzIgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuYykKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSwgZW5jKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFdpbmRvd3MKQEAgLTI1MzEsMTYgKzI1OTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKLSAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCi0gICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCisgICAgICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCisgICAgICAgICAgICByZXR1cm5jb2RlID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXR1cm5jb2RlLCAwKQogCiAgICAgZGVmIF9raWxsX2RlYWRfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKQEAgLTI1NTMsMTkgKzI2MTMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmMgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICAjIFRoZSBwcm9jZXNzIHNob3VsZCBlbmQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJjID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDIpCiAKICAgICBkZWYgdGVzdF9zZW5kX3NpZ25hbChzZWxmKToKQEAgLTI2MDgsOCArMjY2Niw3IEBACiAKICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IF9fYWxsX18gaXMgcG9wdWxhdGVkIHByb3Blcmx5LiIiIgotICAgICAgICAjIFNUQVJUVVBJTkZPIGFkZGVkIHRvIF9fYWxsX18gaW4gMy42Ci0gICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJTVEFSVFVQSU5GTyIsICJIYW5kbGUifQorICAgICAgICBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkID0geyJsaXN0MmNtZGxpbmUiLCAiSGFuZGxlIn0KICAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQogICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKICAgICAgICAgaW1wb3J0IHR5cGVzCkBAIC0yNjU0LDExICsyNzExLDExIEBACiAgICAgZGVmIHdpdGhfc3BhY2VzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGt3YXJnc1snc3Rkb3V0J10gPSBzdWJwcm9jZXNzLlBJUEUKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgcC5zdGRvdXQucmVhZCAoKS5kZWNvZGUoIm1iY3MiKSwKLSAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKLSAgICAgICAgKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAorICAgICAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZ193aXRoX3NwYWNlcyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgd2l0aCBzcGFjZXMgb24gV2luZG93cwpAQCAtMjcxMCw3ICsyNzY3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAxKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKSBhcyBjOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yKSkgYXMgYzoKICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJ25vbmV4aXN0aW5nX2lfaG9wZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKQEAgLTI3MzMsMTkgKzI3OTAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvYy5zdGRpbi5jbG9zZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHVuaXRfdGVzdHMgPSAoUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUE9TSVhQcm9jZXNzVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgIE1pc2NUZXN0cywKLSAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKLSAgICAgICAgICAgICAgICAgIENvbW1hbmRzV2l0aFNwYWNlcywKLSAgICAgICAgICAgICAgICAgIENvbnRleHRNYW5hZ2VyVGVzdHMsCi0gICAgICAgICAgICAgICAgICBSdW5GdW5jVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgICApCi0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdW5pdF90ZXN0cykKLSAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKaW5kZXggMGY0MTM0ZS4uYmMxZjQ2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CmluZGV4IGI4NDg2M2YuLjQ0N2RlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQpAQCAtMSw3ICsxLDkgQEAKLSIiIlVuaXQgdGVzdHMgZm9yIG5ldyBzdXBlcigpIGltcGxlbWVudGF0aW9uLiIiIgorIiIiVW5pdCB0ZXN0cyBmb3IgemVyby1hcmd1bWVudCBzdXBlcigpICYgcmVsYXRlZCBtYWNoaW5lcnkuIiIiCiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKIAogCiBjbGFzcyBBOgpAQCAtMTQzLDYgKzE0NSwxNjYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC5mKCksIFgpCiAKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fbmV3KHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjM3MjIKKyAgICAgICAgIyBFbnN1cmUgemVyby1hcmcgc3VwZXIoKSB3b3JrcyBhcyBzb29uIGFzIHR5cGUuX19uZXdfXygpIGlzIGNvbXBsZXRlZAorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHRlc3RfY2xhc3MKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICB0ZXN0X2NsYXNzID0gc2VsZi5mKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXN0X2NsYXNzLCBBKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX2RlbGF5ZWQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIFRoaXMgY2FzZSBzaG91bGRuJ3QgdHJpZ2dlciB0aGUgX19jbGFzc2NlbGxfXyBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2FybmluZ3MsIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgbXJvKHNlbGYpOgorICAgICAgICAgICAgICAgICMgc2VsZi5mKCkgZG9lc24ndCB3b3JrIHlldC4uLgorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X19bImYiXSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkubXJvKCkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgdGVzdF9jbGFzcworICAgICAgICAgICAgICAgIHRlc3RfY2xhc3MgPSBfX2NsYXNzX18KKworICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2xhc3MsIEEpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX2V4cGVjdGVkX2JlaGF2aW91cihzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzIzNzIyCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5hbWVzcGFjZV9zbmFwc2hvdAorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9zbmFwc2hvdCA9IG5hbWVzcGFjZS5jb3B5KCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAjIF9fY2xhc3NjZWxsX18gaXMgaW5qZWN0ZWQgaW50byB0aGUgY2xhc3MgbmFtZXNwYWNlIGJ5IHRoZSBjb21waWxlcgorICAgICAgICAjIHdoZW4gYXQgbGVhc3Qgb25lIG1ldGhvZCBuZWVkcyBpdCwgYW5kIHNob3VsZCBiZSBvbWl0dGVkIG90aGVyd2lzZQorICAgICAgICBuYW1lc3BhY2Vfc25hcHNob3QgPSBOb25lCisgICAgICAgIGNsYXNzIFdpdGhvdXRDbGFzc1JlZihtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIl9fY2xhc3NjZWxsX18iLCBuYW1lc3BhY2Vfc25hcHNob3QpCisKKyAgICAgICAgIyBXaXRoIHplcm8tYXJnIHN1cGVyKCkgb3IgYW4gZXhwbGljaXQgX19jbGFzc19fIHJlZmVyZW5jZSwKKyAgICAgICAgIyBfX2NsYXNzY2VsbF9fIGlzIHRoZSBleGFjdCBjZWxsIHJlZmVyZW5jZSB0byBiZSBwb3B1bGF0ZWQgYnkKKyAgICAgICAgIyB0eXBlLl9fbmV3X18KKyAgICAgICAgbmFtZXNwYWNlX3NuYXBzaG90ID0gTm9uZQorICAgICAgICBjbGFzcyBXaXRoQ2xhc3NSZWYobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIGNsYXNzX2NlbGwgPSBuYW1lc3BhY2Vfc25hcHNob3RbIl9fY2xhc3NjZWxsX18iXQorICAgICAgICBtZXRob2RfY2xvc3VyZSA9IFdpdGhDbGFzc1JlZi5mLl9fY2xvc3VyZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1ldGhvZF9jbG9zdXJlKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjbGFzc19jZWxsLCBtZXRob2RfY2xvc3VyZVswXSkKKyAgICAgICAgIyBFbnN1cmUgdGhlIGNlbGwgcmVmZXJlbmNlICpkb2Vzbid0KiBnZXQgdHVybmVkIGludG8gYW4gYXR0cmlidXRlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgV2l0aENsYXNzUmVmLl9fY2xhc3NjZWxsX18KKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzIzNzIyCisgICAgICAgICMgU29tZSBtZXRhY2xhc3NlcyBtYXkgbm90IHBhc3MgdGhlIG9yaWdpbmFsIG5hbWVzcGFjZSB0byB0eXBlLl9fbmV3X18KKyAgICAgICAgIyBXZSB0ZXN0IHRoYXQgY2FzZSBoZXJlIGJ5IGZvcmNpYmx5IGRlbGV0aW5nIF9fY2xhc3NjZWxsX18KKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlLnBvcCgnX19jbGFzc2NlbGxfXycsIE5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgIyBUaGUgZGVmYXVsdCBjYXNlIHNob3VsZCBjb250aW51ZSB0byB3b3JrIHdpdGhvdXQgYW55IHdhcm5pbmdzCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBjbGFzcyBXaXRob3V0Q2xhc3NSZWYobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKKworICAgICAgICAjIFdpdGggemVyby1hcmcgc3VwZXIoKSBvciBhbiBleHBsaWNpdCBfX2NsYXNzX18gcmVmZXJlbmNlLCB3ZSBleHBlY3QKKyAgICAgICAgIyBfX2J1aWxkX2NsYXNzX18gdG8gZW1pdCBhIERlcHJlY2F0aW9uV2FybmluZyBjb21wbGFpbmluZyB0aGF0CisgICAgICAgICMgX19jbGFzc19fIHdhcyBub3Qgc2V0LCBhbmQgYXNraW5nIGlmIF9fY2xhc3NjZWxsX18gd2FzIHByb3BhZ2F0ZWQKKyAgICAgICAgIyB0byB0eXBlLl9fbmV3X18uCisgICAgICAgICMgSW4gUHl0aG9uIDMuNywgdGhhdCB3YXJuaW5nIHdpbGwgYmVjb21lIGEgUnVudGltZUVycm9yLgorICAgICAgICBleHBlY3RlZF93YXJuaW5nID0gKAorICAgICAgICAgICAgJ19fY2xhc3NfXyBub3Qgc2V0LipfX2NsYXNzY2VsbF9fIHByb3BhZ2F0ZWQnLAorICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgICkKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncyhleHBlY3RlZF93YXJuaW5nKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgY2xhc3MgV2l0aENsYXNzUmVmKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICAjIENoZWNrIF9fY2xhc3NfXyBzdGlsbCBnZXRzIHNldCBkZXNwaXRlIHRoZSB3YXJuaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2l0aENsYXNzUmVmKCkuZigpLCBXaXRoQ2xhc3NSZWYpCisKKyAgICAgICAgIyBDaGVjayB0aGUgd2FybmluZyBpcyB0dXJuZWQgaW50byBhbiBlcnJvciBhcyBleHBlY3RlZAorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNsYXNzIFdpdGhDbGFzc1JlZihtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgZGVmIHRlc3RfX19jbGFzc2NlbGxfX19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICAjIE92ZXJ3cml0aW5nIF9fY2xhc3NjZWxsX18gd2l0aCBub25zZW5zZSBpcyBleHBsaWNpdGx5IHByb2hpYml0ZWQKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgY2VsbCk6CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlWydfX2NsYXNzY2VsbF9fJ10gPSBjZWxsCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgZm9yIGJhZF9jZWxsIGluIChOb25lLCAwLCAiIiwgb2JqZWN0KCkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYmFkX2NlbGw9YmFkX2NlbGwpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSwgY2VsbD1iYWRfY2VsbCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3dyb25nX2NlbGwoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICAjIFBvaW50aW5nIHRoZSBjZWxsIHJlZmVyZW5jZSBhdCB0aGUgd3JvbmcgY2xhc3MgaXMgYWxzbyBwcm9oaWJpdGVkCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIGNscyA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgQiA9IHR5cGUoIkIiLCAoKSwgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHJldHVybiBjbHMKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCiAgICAgZGVmIHRlc3Rfb2JzY3VyZV9zdXBlcl9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBzdXBlcigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKaW5kZXggNWUwZjk5MC4uZTgzYTRkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpAQCAtMjQxLDkgKzI0MSw4IEBACiAKICAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiLCBsaW5lbm89MSwgb2Zmc2V0PTkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQotICAgICAgICAjd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6Ci0gICAgICAgICAgICAjc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng9MSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng9MSIpCiAKICAgICBkZWYgdGVzdF9DbGVhbkltcG9ydChzZWxmKToKICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgpAQCAtMzI3LDYgKzMyNiwyOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuT3RoZXJDbGFzcywgc2VsZi5SZWZDbGFzcywgaWdub3JlPWlnbm9yZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgbWlzc2luZ19pdGVtcykKIAorICAgIGRlZiB0ZXN0X2NoZWNrX19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7J3RlbXBkaXInfQorICAgICAgICBibGFja2xpc3QgPSB7J3RlbXBsYXRlJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgICAgIGV4dHJhID0geydUZXh0VGVzdFJlc3VsdCcsICdpbnN0YWxsSGFuZGxlcid9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9hZF90ZXN0cycsICJUZXN0UHJvZ3JhbSIsICJCYXNlVGVzdFN1aXRlIn0KKworICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ1bml0dGVzdC5yZXN1bHQiLCAidW5pdHRlc3QuY2FzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc3VpdGUiLCAidW5pdHRlc3QubG9hZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bml0dGVzdC5tYWluIiwgInVuaXR0ZXN0LnJ1bm5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc2lnbmFscyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19fYWxsX18sIHNlbGYsIHVuaXR0ZXN0KQorCiAgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQogICAgICMgbWFrZV9sZWdhY3lfcHljCiAgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ltYm9sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzA2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpAQCAtMCwwICsxLDU0IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworCisKK1NZTUJPTF9GSUxFICAgICAgICAgICAgICA9IHN1cHBvcnQuZmluZGZpbGUoJ3N5bWJvbC5weScpCitHUkFNTUFSX0ZJTEUgICAgICAgICAgICAgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4nLCAnLi4nLCAnSW5jbHVkZScsICdncmFtaW5pdC5oJykKK1RFU1RfUFlfRklMRSAgICAgICAgICAgICA9ICdzeW1ib2xfdGVzdC5weScKKworCitjbGFzcyBUZXN0U3ltYm9sR2VuZXJhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKHNlbGYsIHNvdXJjZV9maWxlLCBkZXN0X2ZpbGUpOgorICAgICAgICB3aXRoIG9wZW4oc291cmNlX2ZpbGUpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4oZGVzdF9maWxlLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1s6bGluZXMuaW5kZXgoIiMtLXN0YXJ0IGNvbnN0YW50cy0tXG4iKSArIDFdKQorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1tsaW5lcy5pbmRleCgiIy0tZW5kIGNvbnN0YW50cy0tXG4iKTpdKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zeW1ib2xzKHNlbGYsIGdyYW1tYXJfZmlsZSwgdGFyZ2V0X3N5bWJvbF9weV9maWxlKToKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lNQk9MX0ZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfc3ltYm9sX3B5X2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKClbMV0KKyAgICAgICAgcmV0dXJuIHByb2MucmV0dXJuY29kZSwgc3RkZXJyCisKKyAgICBkZWYgY29tcGFyZV9maWxlcyhzZWxmLCBmaWxlMSwgZmlsZTIpOgorICAgICAgICB3aXRoIG9wZW4oZmlsZTEpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMxID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUyKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMiA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMxLCBsaW5lczIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBvcy5wYXRoLmV4aXN0cyhHUkFNTUFSX0ZJTEUpLAorICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgb25seSB3b3JrcyBmcm9tIHNvdXJjZSBidWlsZCBkaXJlY3RvcnknKQorICAgIGRlZiB0ZXN0X3JlYWxfZ3JhbW1hcl9hbmRfc3ltYm9sX2ZpbGUoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgb3V0cHV0KQorCisgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKyAgICAgICAgZXhpdGNvZGUsIHN0ZGVyciA9IHNlbGYuX2dlbmVyYXRlX3N5bWJvbHMoR1JBTU1BUl9GSUxFLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdGNvZGUpCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2ZpbGVzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CmluZGV4IGZiYjFiZGMuLmRmYWVlMTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQpAQCAtMTMzLDYgKzEzMywxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5NaW5lLmxvb2t1cCgiYV9tZXRob2QiKS5pc19hc3NpZ25lZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaW50ZXJuYWwubG9va3VwKCJ4IikuaXNfYXNzaWduZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgc3QxID0gc3ltdGFibGUuc3ltdGFibGUoJ2RlZiBmKCk6XG4gICAgeDogaW50XG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3QyID0gc3QxLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0Mi5sb29rdXAoJ3gnKS5pc19hbm5vdGF0ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDIubG9va3VwKCd4JykuaXNfZ2xvYmFsKCkpCisgICAgICAgIHN0MyA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHggPSAxXG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3Q0ID0gc3QzLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDQubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDQubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisKICAgICBkZWYgdGVzdF9pbXBvcnRlZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudG9wLmxvb2t1cCgic3lzIikuaXNfaW1wb3J0ZWQoKSkKIApAQCAtMTYwLDkgKzE3MSwxMSBAQAogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZm9vKSgiLCAxNCkgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiLCAxMCkgICMgc3ltdGFibGUtYnVpbGQtdGltZQogICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGIic3BhbSIsICJleGVjIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGJ5dGVhcnJheShiInNwYW0iKSwgImV4ZWMiKQotICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBsaXN0KGIic3BhbSIpLCAiZXhlYyIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggMzAxYzE0Mi4uN2Y3ZTZkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTM1LDE0ICszNSw2IEBACiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGtleXdvcmQKIAotSXQncyBhIHN5bnRheCBlcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IHR1cGxlLiAgV2h5IGlzbid0IGl0IGFuCi1lcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IGxpc3Q/ICBJdCB3aWxsIGFsd2F5cyByYWlzZSBzb21lIGVycm9yIGF0Ci1ydW50aW1lLgotCi0+Pj4gKCkgPSAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvICgpCi0KID4+PiBmKCkgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGZ1bmN0aW9uIGNhbGwKQEAgLTM3NCw3ICszNjYsMjMgQEAKICAgICAgLi4uCiAgICBTeW50YXhFcnJvcjogdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzCiAKLU1pc3VzZSBvZiB0aGUgbm9ubG9jYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorTWlzdXNlIG9mIHRoZSBub25sb2NhbCBhbmQgZ2xvYmFsIHN0YXRlbWVudCBjYW4gbGVhZCB0byBhIGZldyB1bmlxdWUgc3ludGF4IGVycm9ycy4KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGdsb2JhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGRlZiBnKCk6CisgICAuLi4gICAgICAgICBwcmludCh4KQorICAgLi4uICAgICAgICAgbm9ubG9jYWwgeAorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFN5bnRheEVycm9yOiBuYW1lICd4JyBpcyB1c2VkIHByaW9yIHRvIG5vbmxvY2FsIGRlY2xhcmF0aW9uCiAKICAgID4+PiBkZWYgZih4KToKICAgIC4uLiAgICAgbm9ubG9jYWwgeApAQCAtNDkzLDEwICs1MDEsNiBAQAogICAgLi4uCiBTeW50YXhFcnJvcjoga2V5d29yZCBhcmd1bWVudCByZXBlYXRlZAogCi0+Pj4gZGVsICgpCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgZGVsZXRlICgpCi0KID4+PiB7MSwgMiwgM30gPSA0MgogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byBsaXRlcmFsCkBAIC01ODAsNyArNTg0LDcgQEAKICAgICAgICAgICAgICAgICBnbG9iYWwgYiAgIyBTeW50YXhXYXJuaW5nCiAgICAgICAgICAgICAiIiIKICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoYWN0aW9uPSdpZ25vcmUnLCBjYXRlZ29yeT1TeW50YXhXYXJuaW5nKQotICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJnbG9iYWwiLCBsaW5lbm89Mywgb2Zmc2V0PTE2KQorICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJnbG9iYWwiKQogICAgICAgICB3YXJuaW5ncy5maWx0ZXJzLnBvcCgwKQogCiAgICAgZGVmIHRlc3RfYnJlYWtfb3V0c2lkZV9sb29wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCA0NDM1ZDY5Li5kZjllYmQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IGdjCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBsb2NhbGUKIAogIyBjb3VudCB0aGUgbnVtYmVyIG9mIHRlc3QgcnVucywgdXNlZCB0byBjcmVhdGUgdW5pcXVlCiAjIHN0cmluZ3MgdG8gaW50ZXJuIGluIHRlc3RfaW50ZXJuKCkKQEAgLTYyNyw2ICs2MjgsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGVzdC5zdXBwb3J0LkZTX05PTkFTQ0lJLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBPUyBzdXBwb3J0IG9mIG5vbi1BU0NJSSBlbmNvZGluZ3MnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSA9PSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBGUyBlbmNvZGluZyB0byBtYXRjaCBsb2NhbGUnKQogICAgIGRlZiB0ZXN0X2lvZW5jb2Rpbmdfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKIApAQCAtNjY5LDggKzY3Miw2IEBACiAgICAgICAgIGZzX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4cGVjdGVkID0gJ3V0Zi04JwotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnbWJjcycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQpAQCAtOTEyLDEzICs5MTMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBpbm5lcgogICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY2xvc3VyZV9fWzBdLCBzaXplKCdQJykpCiAgICAgICAgICMgY29kZQotICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCi0gICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzZpMTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQogICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgogICAgICAgICAgICAgZGVmIGlubmVyKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHgKICAgICAgICAgICAgIHJldHVybiBpbm5lcgotICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQpAQCAtOTM2LDkgKzkzNyw5IEBACiAgICAgICAgICMgbWV0aG9kLXdyYXBwZXIgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBjaGVjayh7fS5fX2l0ZXJfXywgc2l6ZSgnMlAnKSkKICAgICAgICAgIyBkaWN0Ci0gICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyA4KmNhbGNzaXplKCduMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ25RMlAnKSArIGNhbGNzaXplKCcyblAybicpICsgOCArICg4KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyAxNipjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDE2ICsgKDE2KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleXZpZXcKICAgICAgICAgY2hlY2soe30ua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS12YWx1ZXZpZXcKQEAgLTEwOTYsMTMgKzEwOTcsMTMgQEAKICAgICAgICAgICAgICAgICAgICcxMFAnICAgICAgICAgICAgICAgICAjIFB5U2VxdWVuY2VNZXRob2RzCiAgICAgICAgICAgICAgICAgICAnMlAnICAgICAgICAgICAgICAgICAgIyBQeUJ1ZmZlclByb2NzCiAgICAgICAgICAgICAgICAgICAnNFAnKQotICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCi0gICAgICAgIHMgKz0gY2FsY3NpemUoIjJuUG4iKSArIDQqY2FsY3NpemUoIm4yUCIpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA4IGtleXMgYW5kIDUgZW50cmllcworICAgICAgICBzICs9IGNhbGNzaXplKCIyblAybiIpICsgOCArIDUqY2FsY3NpemUoIm4yUCIpCiAgICAgICAgICMgY2xhc3MKICAgICAgICAgY2xhc3MgbmV3c3R5bGVjbGFzcyhvYmplY3QpOiBwYXNzCiAgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MsIHMpCiAgICAgICAgICMgZGljdCB3aXRoIHNoYXJlZCBrZXlzCi0gICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnbjJQJyArICcyblBuJykpCisgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnblEyUCcgKyAnMm5QMm4nKSkKICAgICAgICAgIyB1bmljb2RlCiAgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCiAgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCkBAIC0xMTkxLDYgKzExOTIsMzIgQEAKICAgICAgICAgIyBzeXMuZmxhZ3MKICAgICAgICAgY2hlY2soc3lzLmZsYWdzLCB2c2l6ZSgnJykgKyBzZWxmLlAgKiBsZW4oc3lzLmZsYWdzKSkKIAorICAgIGRlZiB0ZXN0X2FzeW5jZ2VuX2hvb2tzKHNlbGYpOgorICAgICAgICBvbGQgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpbmFsaXplcikKKworICAgICAgICBmaXJzdGl0ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaXJzdGl0ZXI9Zmlyc3RpdGVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzFdLCBOb25lKQorCisgICAgICAgIGZpbmFsaXplciA9IGxhbWJkYSAqYTogTm9uZQorICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKGZpbmFsaXplcj1maW5hbGl6ZXIpCisgICAgICAgIGhvb2tzID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmlyc3RpdGVyLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMF0sIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maW5hbGl6ZXIsIGZpbmFsaXplcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgZmluYWxpemVyKQorCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoKm9sZCkKKyAgICAgICAgY3VyID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maW5hbGl6ZXIpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3lzTW9kdWxlVGVzdCwgU2l6ZW9mVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKaW5kZXggNTA5YmMzZS4uMjVjNTgzNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKQEAgLTMzOCw4ICszMzgsOCBAQAogCiAgICAgZGVmIHRlc3RfMTRfb25saW5lcl9pZihzZWxmKToKICAgICAgICAgZGVmIG9ubGluZXJzKCk6Ci0gICAgICAgICAgICBpZiBUcnVlOiBGYWxzZQotICAgICAgICAgICAgZWxzZTogVHJ1ZQorICAgICAgICAgICAgaWYgVHJ1ZTogeD1GYWxzZQorICAgICAgICAgICAgZWxzZTogeD1UcnVlCiAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICBzZWxmLnJ1bl9hbmRfY29tcGFyZSgKICAgICAgICAgICAgIG9ubGluZXJzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhMjNiZjA2YS4uMzU1YmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKQEAgLTM4NSw3ICszODUsOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh2YXJzWydTTyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnNbJ1NPJ10sIHZhcnNbJ0VYVF9TVUZGSVgnXSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnLCAnTGludXgtc3BlY2lmaWMgdGVzdCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpYXJjaC1zcGVjaWZpYyB0ZXN0JykKICAgICBkZWYgdGVzdF90cmlwbGV0X2luX2V4dF9zdWZmaXgoc2VsZik6CiAgICAgICAgIGltcG9ydCBjdHlwZXMsIHBsYXRmb3JtLCByZQogICAgICAgICBtYWNoaW5lID0gcGxhdGZvcm0ubWFjaGluZSgpCkBAIC0zOTQsOCArMzk2LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgpCiAgICAgICAgICAgICBlbHNlOiAjIDggYnl0ZSBwb2ludGVyIHNpemUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251LnNvJyksIHN1ZmZpeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQppbmRleCAxZWZiODQxLi42MTljYmMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CkBAIC0yMDgwLDYgKzIwODAsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHRhcmZpbGUuaXRuKDB4MTAwMDAwMDAwMDAsIDYsIHRhcmZpbGUuR05VX0ZPUk1BVCkKIAorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyd2ZXJzaW9uJywgJ2dycCcsICdwd2QnLCAnc3ltbGlua19leGNlcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgJ05VTCcsICdCTE9DS1NJWkUnLCAnUkVDT1JEU0laRScsICdHTlVfTUFHSUMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BPU0lYX01BR0lDJywgJ0xFTkdUSF9OQU1FJywgJ0xFTkdUSF9MSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdMRU5HVEhfUFJFRklYJywgJ1JFR1RZUEUnLCAnQVJFR1RZUEUnLCAnTE5LVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnU1lNVFlQRScsICdDSFJUWVBFJywgJ0JMS1RZUEUnLCAnRElSVFlQRScsICdGSUZPVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnQ09OVFRZUEUnLCAnR05VVFlQRV9MT05HTkFNRScsICdHTlVUWVBFX0xPTkdMSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdHTlVUWVBFX1NQQVJTRScsICdYSERUWVBFJywgJ1hHTFRZUEUnLCAnU09MQVJJU19YSERUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTVVBQT1JURURfVFlQRVMnLCAnUkVHVUxBUl9UWVBFUycsICdHTlVfVFlQRVMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BBWF9GSUVMRFMnLCAnUEFYX05BTUVfRklFTERTJywgJ1BBWF9OVU1CRVJfRklFTERTJywKKyAgICAgICAgICAgICAgICAgICAgICdzdG4nLCAnbnRzJywgJ250aScsICdpdG4nLCAnY2FsY19jaGtzdW1zJywgJ2NvcHlmaWxlb2JqJywKKyAgICAgICAgICAgICAgICAgICAgICdmaWxlbW9kZScsCisgICAgICAgICAgICAgICAgICAgICAnRW1wdHlIZWFkZXJFcnJvcicsICdUcnVuY2F0ZWRIZWFkZXJFcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAnRU9GSGVhZGVyRXJyb3InLCAnSW52YWxpZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdTdWJzZXF1ZW50SGVhZGVyRXJyb3InLCAnRXhGaWxlT2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICdtYWluJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgdGFyZmlsZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBjbGFzcyBDb21tYW5kTGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDhlMjE5ZjQuLjUxZDgyZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHRlbG5ldGxpYgotaW1wb3J0IHRpbWUKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNDIsNiArNDEsMTEgQEAKICAgICAgICAgdGVsbmV0ID0gdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpCiAgICAgICAgIHRlbG5ldC5zb2NrLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0Q29udGV4dE1hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpIGFzIHRuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUodG4uZ2V0X3NvY2tldCgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0bi5nZXRfc29ja2V0KCkpCisKICAgICBkZWYgdGVzdFRpbWVvdXREZWZhdWx0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgaXMgTm9uZSkKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KDMwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQppbmRleCBiNjMwNTA5Li4yYzI5MTRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQpAQCAtOCw3ICs4LDYgQEAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBpbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKIGltcG9ydCBzeXMKIF90aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCkBAIC0xOSw2ICsxOCw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKICMgQmV0d2VlbiBmb3JrKCkgYW5kIGV4ZWMoKSwgb25seSBhc3luYy1zYWZlIGZ1bmN0aW9ucyBhcmUgYWxsb3dlZCAoaXNzdWVzCkBAIC00NjIsNyArNDYyLDcgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCwgb2xkX2ludGVydmFsKQogCiAgICAgICAgICMgTWFrZSB0aGUgYnVnIG1vcmUgbGlrZWx5IHRvIG1hbmlmZXN0LgotICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnNldHN3aXRjaGludGVydmFsKDFlLTYpCiAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjApOgogICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogTm9uZSkKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IGY2NmEzYmMuLjFkODdhZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0OWNlZGRhLi43Mjc2YmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI1LDEyICsxMjUsMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3MSw4ICsxNzEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTI5OSw2ICsyOTksMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDVlNzQxMTUuLjM4MmNhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtNDgsNiArNDgsNyBAQAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XzVcMCcpCiAKICAgICBkZWYgdGVzdF96ZXJvX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICB0cnk6IDUuMCAvIDAuMApAQCAtMTAwMCw2ICsxMDAxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQogCisgICAgZGVmIHRlc3Rfb25lX2FyZ3VtZW50X3R5cGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAndHlwZS5fX25ld19fKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbiknCisKKyAgICAgICAgIyBPbmx5IHR5cGUgaXRzZWxmIGNhbiB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSg1KSwgaW50KQorCisgICAgICAgIGNsYXNzIE0odHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE0oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKworICAgICAgICBjbGFzcyBOKHR5cGUsIG1ldGFjbGFzcz1NKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTig1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCiAKIGNsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IGY2OTZhNWIuLjg4M2MzNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTk4Niw2ICs5ODcsMTkgQEAKICAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50Ll9fZm9ybWF0X18oc2VsZiAqIDIsIGZvcm1hdF9zcGVjKQogCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTSgnICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX3N0cl9fID0gTm9uZQorCisgICAgICAgIGNsYXNzIE46CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTignICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX2Zvcm1hdF9fID0gTm9uZQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0KCksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLmZvcm1hdCgpLCAnYWJjJykKQEAgLTEyMDAsNiArMTIxNCwxNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjB4ezowezpkfVh9Ii5mb3JtYXQoMHgwLDE2KSwgIjB4MDAwMDAwMDAwMDAwMDAwMCIpCiAKKyAgICAgICAgIyBCbG9ja2luZyBmYWxsYmFjaworICAgICAgICBtID0gTSgnZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChtKSwgJ00oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7IXN9Ii5mb3JtYXQsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG0pCisgICAgICAgIG4gPSBOKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshc30iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBuKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC0xNTQxLDcgKzE1NjUsNyBAQAogICAgICAgICAgICAgKCcrJywgYicrLScpLAogICAgICAgICAgICAgKCcrLScsIGInKy0tJyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKLSAgICAgICAgICAgICgnXD8nLCBiJytBRnc/JyksCisgICAgICAgICAgICAocidcPycsIGInK0FGdz8nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAogICAgICAgICAgICAgKHInXFw/JywgYicrQUZ3QVhBPycpLAogICAgICAgICAgICAgKHInXFxcPycsIGInK0FGd0FYQUJjPycpLApAQCAtMjQyMCw3ICsyNDQ0LDcgQEAKICAgICAgICAgIyBub24tYXNjaWkgZm9ybWF0LCBhc2NpaSBhcmd1bWVudDogZW5zdXJlIHRoYXQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJworICAgICAgICAgICAgcideUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKICAgICAgICAgICAgICdzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweGU5JCcsCiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKQEAgLTI3OTIsNyArMjgxNiw2IEBACiAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzZWNvbmQgY2FsbCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zX2hhc2gocyksIGNocihrKS5lbmNvZGUoKSAqIChpICsgMSkpCiAKLQogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKICAgICAgICAgZGVmIHBhcnNlKGZvcm1hdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNmVjYzkxMy4uNGZjMTFlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMCw3ICsyMCw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzU5NzE3NjA4NzJiMmY5OGJiOWM3MDFlNmMwZGIzMjczZDc1NmIzZWMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMWZhOTg2NzRhNjgzYWE4YThkOGRlZTBjODQ0OTRmOGQzNjM0NmU2JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIAogICAgICMgVXBkYXRlIHRoaXMgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBkbyBhIGZ1bGwgcmVidWlsZAogICAgICMgKGUuZy4gJ21ha2UgZGlzdGNsZWFuICYmIG1ha2UnKSB0byBnZXQgdGhlIGNvcnJlY3QgY2hlY2tzdW0uCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1ZTc0ODI3Y2QwN2Y5ZTU0NmEzMGYzNGI3YmNmNmNjMmVhYzM4YzhjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjg5MWIxZTY0MzBjNzEyNTMxYjliYzkzNWEzOGUyMmQ3OGJhMWJmMycKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMjIyLDYgKzIyMiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXHUyMDEwJyksICdBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1xVMDAwMjAwMDAnKSwgJ1cnKQogCisgICAgZGVmIHRlc3RfZWFzdF9hc2lhbl93aWR0aF85XzBfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLnVjZF8zXzJfMC5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ04nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdXJykKKwogY2xhc3MgVW5pY29kZU1pc2NUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3RfZmFpbGVkX2ltcG9ydF9kdXJpbmdfY29tcGlsaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQppbmRleCBkMWNjYjM4Li4zZmNiMThmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQpAQCAtMTE3LDYgKzExNywyNyBAQAogICAgICAgLi4uCiAgICAgdGVzdC50ZXN0X3VucGFjay5Cb3pvRXJyb3IKIAorQWxsb3cgdW5wYWNraW5nIGVtcHR5IGl0ZXJhYmxlcworCisgICAgPj4+ICgpID0gW10KKyAgICA+Pj4gW10gPSAoKQorICAgID4+PiBbXSA9IFtdCisgICAgPj4+ICgpID0gKCkKKworVW5wYWNraW5nIG5vbi1pdGVyYWJsZXMgc2hvdWxkIHJhaXNlIFR5cGVFcnJvcgorCisgICAgPj4+ICgpID0gNDIKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVW5wYWNraW5nIHRvIGFuIGVtcHR5IGl0ZXJhYmxlIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yCisKKyAgICA+Pj4gKCkgPSBbNDJdCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogdG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMCkKKwogIiIiCiAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKaW5kZXggNzQzNDZiNC4uNmJlOGY1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKQEAgLTM1Nyw3ICszNTcsNiBAQAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgotICAgIGltcG9ydCBzeXMKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdW5wYWNrX2V4CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3VucGFja19leCwgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggMTc3MjM5OS4uNTA4NDQ4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTQ3MCwxMCArNDcwLDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAic3NsIG1vZHVsZSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfY2FmaWxlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0Ci0gICAgICAgICAgICApCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAorICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0CisgICAgICAgICAgICAgICAgKQogCiBjbGFzcyB1cmxvcGVuX0RhdGFUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxvcGVuKCkgb3BlbmluZyBhIGRhdGEgVVJMLiIiIgpAQCAtNzMwLDcgKzczMSw3IEBACiAKIAogY2xhc3MgUXVvdGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKKyAgICByIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCiAKICAgICBBY2NvcmRpbmcgdG8gUkZDIDIzOTYgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMpLCB0byBlc2NhcGUgYQogICAgIGNoYXJhY3RlciB5b3Ugd3JpdGUgaXQgYXMgJyUnICsgPDIgY2hhcmFjdGVyIFVTLUFTQ0lJIGhleCB2YWx1ZT4uCkBAIC04MDUsNyArODA2LDcgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcXVvdGVkIGFyZSBieSBkZWZhdWx0IHNhbnMKICAgICAgICAgIyBzcGFjZSAoc2VwYXJhdGUgdGVzdCBmb3IgdGhhdCkuCiAgICAgICAgIHNob3VsZF9xdW90ZSA9IFtjaHIobnVtKSBmb3IgbnVtIGluIHJhbmdlKDMyKV0gIyBGb3IgMHgwMCAtIDB4MUYKLSAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZCgnPD4jJSJ7fXxcXltdYCcpCisgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQocic8PiMlInt9fFxeW11gJykKICAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChjaHIoMTI3KSkgIyBGb3IgMHg3RgogICAgICAgICBzaG91bGRfcXVvdGUgPSAnJy5qb2luKHNob3VsZF9xdW90ZSkKICAgICAgICAgZm9yIGNoYXIgaW4gc2hvdWxkX3F1b3RlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IGVkYTdjY2MuLjM0MzI5ZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTcsNiArNyw4IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0zMzUsNyArMzM3LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzLmNsZWFyKCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lLCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKICAgICAgICAgc2VsZi5zZWxlY3RvciA9IHVybAogICAgICAgICBpZiBoZWFkZXJzIGlzIG5vdCBOb25lOgpAQCAtMzQzLDYgKzM0Niw3IEBACiAgICAgICAgIHNlbGYucmVxX2hlYWRlcnMuc29ydCgpCiAgICAgICAgIGlmIGJvZHk6CiAgICAgICAgICAgICBzZWxmLmRhdGEgPSBib2R5CisgICAgICAgIHNlbGYuZW5jb2RlX2NodW5rZWQgPSBlbmNvZGVfY2h1bmtlZAogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKIApAQCAtOTA4LDQxICs5MTIsMTEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiYmF6IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJTcGFtIl0sICJmb28iKQogCi0gICAgICAgICMgQ2hlY2sgaXRlcmFibGUgYm9keSBzdXBwb3J0Ci0gICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6Ci0gICAgICAgICAgICB5aWVsZCBiIm9uZSIKLSAgICAgICAgICAgIHlpZWxkIGIidHdvIgotICAgICAgICAgICAgeWllbGQgYiJ0aHJlZSIKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZShzZWxmKToKKyAgICAgICAgIyBBIHJlZ3VsYXIgZmlsZSAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZCB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMKKyAgICAgICAgIyBhbHJlYWR5IHNldC4KIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAKLSAgICAgICAgIyBBIGZpbGUgb2JqZWN0LgotICAgICAgICAjIFRlc3Qgb25seSBDb250ZW50LUxlbmd0aCBhdHRyaWJ1dGUgb2YgcmVxdWVzdC4KKyAgICAgICAgZmlsZV9vYmogPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgZGVsZXRlPUZhbHNlKQorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX29iai5uYW1lCisgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgZmlsZV9wYXRoKQogCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwge30pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHRlID0gbmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGUsICJjaHVua2VkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSBvYmplY3QgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQKKyAgICAgICAgIyB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMgYWxyZWFkeSBzZXQuCisgICAgICAgICMgKE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgdG8gYSByZWd1bGFyCisgICAgICAgICMgZmlsZSwgdGhhdCBpcyB3aHkgd2UgYXJlIHRlc3RpbmcgYm90aCBjYXNlcy4pCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKICAgICAgICAgZmlsZV9vYmogPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZmlsZV9vYmoud3JpdGUoYiJTb21ldGhpbmdcblNvbWV0aGluZ1xuU29tZXRoaW5nXG4iKQogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwge30pCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgaGVhZGVycyA9IHsiQ29udGVudC1MZW5ndGgiOiAzMH0KKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfcGlwZShzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgcmVhZGluZyBmcm9tIGEgcGlwZS4KKyAgICAgICAgIyBBIHBpcGUgY2Fubm90IGJlIHNlZWsnZWQuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAjIGNvbnRlbnQgbGVuZ3RoIHVwIGZyb250LiAgVGh1cywgZG9fcmVxdWVzdF8oKSBzaG91bGQgZmFsbAorICAgICAgICAjIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgciJwYXNzIl0KKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06CisgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKSBhcyBwcm9jOgorICAgICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBwcm9jLnN0ZG91dCwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICAjIEdlbmVyaWMgaXRlcmFibGUuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZW50CisgICAgICAgICMgbGVuZ3RoIHVwIGZyb250LiAgRmFsbCBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgorICAgICAgICAgICAgeWllbGQgYiJvbmUiCisKKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMTEpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZW1wdHlfc2VxKHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIGJvZHkgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorICAgICAgICByZXEgPSBoLmRvX3JlcXVlc3RfKFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIiksICJjaHVua2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaGFzX2hlYWRlcigiQ29udGVudC1sZW5ndGgiKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9hcnJheShzZWxmKToKICAgICAgICAgIyBhcnJheS5hcnJheSBJdGVyYWJsZSAtIENvbnRlbnQgTGVuZ3RoIGlzIGNhbGN1bGF0ZWQKIAorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCiAgICAgICAgIGl0ZXJhYmxlX2FycmF5ID0gYXJyYXkuYXJyYXkoIkkiLFsxLDIsMyw0XSkKIAogICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDE2fToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCA2OGM1MjNhLi43MGM0YzAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC01NTcsMjYgKzU1NywyOCBAQAogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWZpbGUoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgIyBHb29kIGNlcnQKLSAgICAgICAgZGF0YSA9IHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCi0gICAgICAgICMgQmFkIGNlcnQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgR29vZCBjZXJ0CisgICAgICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIndlIGNhcmUgYSBiaXQiKQorICAgICAgICAgICAgIyBCYWQgY2VydAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCiAgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCiAKICAgICBkZWYgdGVzdF9odHRwc19zbmkoc2VsZik6CiAgICAgICAgIGlmIHNzbCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQppbmRleCBiODExOTMwLi45NDk3MTZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCB0aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQppbmRleCA3MWFiYzE0Li45OWM1YzAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKQEAgLTYwNywyOSArNjA3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCA4MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdldHVybCgpLCB1cmwpCiAKLSAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IGlzIHJldHVybmVkIGFzIE5vbmUKKyAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IHJhaXNlcyBWYWx1ZUVycm9yCiAgICAgICAgIHVybCA9IGIiSFRUUDovL1dXVy5QWVRIT04uT1JHOjY1NTM2L2RvYy8jZnJhZyIKICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIm91dCBvZiByYW5nZSIpOgorICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2JhZF9wb3J0KHNlbGYpOgotICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBub24taW50ZWdlciBwb3J0cy4iIiIKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICAjIE9uY2UgYWdhaW4sIHJlcGVhdCBvdXJzZWx2ZXMgdG8gdGVzdCBieXRlcwotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKKyAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2YgaW52YWxpZCBwb3J0cy4iIiIKKyAgICAgICAgZm9yIGJ5dGVzIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmb3IgcGFyc2UgaW4gKHVybGxpYi5wYXJzZS51cmxzcGxpdCwgdXJsbGliLnBhcnNlLnVybHBhcnNlKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCBpbiAoImZvbyIsICIxLjUiLCAiLTEiLCAiMHgxMCIpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChieXRlcz1ieXRlcywgcGFyc2U9cGFyc2UsIHBvcnQ9cG9ydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSAid3d3LmV4YW1wbGUubmV0OiIgKyBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyIgKyBuZXRsb2MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9IG5ldGxvYy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICBwID0gcGFyc2UodXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgbmV0bG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfd2l0aG91dF9uZXRsb2Moc2VsZik6CiAgICAgICAgICMgVGhpcyBleGFtcGxlIGlzIHN0cmFpZ2h0IGZyb20gUkZDIDMyNjEuICBJdCBsb29rcyBsaWtlIGl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQppbmRleCA4MzU3ZjhiLi42NjJjN2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKQEAgLTEsNiArMSw2IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckRpY3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtYXBwaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChvbmU9MSwgdHdvPTIpLCBkMikKICAgICAgICAgIyBpdGVtIHNlcXVlbmNlIGNvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PVsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKICAgICAgICAgIyBib3RoIHRvZ2V0aGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSwgdHdvPTMsIHRocmVlPTUpLCBkMykKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3Qoe30sIGRpY3Q9Tm9uZSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIE5vbmUpXSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PXsnYSc6IDQyfSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbGxlY3Rpb25zLlVzZXJEaWN0LCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IGY5MmU0ZDMuLjhkZTZjMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyTGlzdAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IGxpc3RfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBVc2VyTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA5YmM4ZWRkLi43MTUyODIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xLDkgKzEsOCBAQAogIyBVc2VyU3RyaW5nIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBidWlsdGluIHN0cmluZyB0eXBlLgogIyBVc2VyU3RyaW5nIGluc3RhbmNlcyBzaG91bGQgYmVoYXZlIHNpbWlsYXIgdG8gYnVpbHRpbiBzdHJpbmcgb2JqZWN0cy4KIAotaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdHJpbmdfdGVzdHMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkgYi9MaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1LnB5IGIvTGliL3Rlc3QvdGVzdF91dS5weQppbmRleCAyNWZmZmJmLi5hZDJmMmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKQEAgLTgsNyArOCw2IEBACiAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgdXUKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBpbwogCiBwbGFpbnRleHQgPSBiIlRoZSBzbW9vdGgtc2NhbGVkIHB5dGhvbiBjcmVwdCBvdmVyIHRoZSBzbGVlcGluZyBkb2dcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQppbmRleCAzOTk5ZDFmLi4wZmY5NzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0xNSwxNiArMTUsOSBAQAogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgRW52aXJvbm1lbnRWYXJHdWFyZCwgcm10cmVlKQotaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB2ZW52CiAKLSMgcGlwIGN1cnJlbnRseSByZXF1aXJlcyBzc2wgc3VwcG9ydCwgc28gd2UgZW5zdXJlIHdlIGhhbmRsZQotIyBpdCBiZWluZyBtaXNzaW5nIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHNzbCA9IE5vbmUKIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM5LDE1ICszMiw5IEBACiBza2lwSW5WZW52ID0gdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBub3QgYXBwcm9wcmlhdGUgaW4gYSB2ZW52JykKIAotIyBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2U6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MQotaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgotICAgIGZhaWxzT25XaW5kb3dzID0gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi1lbHNlOgotICAgIGRlZiBmYWlsc09uV2luZG93cyhmKToKLSAgICAgICAgcmV0dXJuIGYKLQogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisgICAgbWF4RGlmZiA9IDgwICogNTAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCkBAIC01Nyw3ICs0NCw3IEBACiAgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKLSAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQpAQCAtMTIxLDYgKzEwOCwxNyBAQAogICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKIAorICAgIGRlZiB0ZXN0X3Byb21wdChzZWxmKToKKyAgICAgICAgZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZW52X2RpcilbMV0KKworICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKCkKKyAgICAgICAgY29udGV4dCA9IGJ1aWxkZXIuZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LnByb21wdCwgJyglcykgJyAlIGVudl9uYW1lKQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIocHJvbXB0PSdNeSBwcm9tcHQnKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKE15IHByb21wdCkgJykKKwogICAgIEBza2lwSW5WZW52CiAgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CiAgICAgICAgICIiIgpAQCAtMzE4LDE4ICszMTYsMjEgQEAKICAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIsIHdpdGhfcGlwPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydF9waXBfbm90X2luc3RhbGxlZCgpCiAKLSAgICBAZmFpbHNPbldpbmRvd3MKLSAgICBkZWYgdGVzdF9kZXZudWxsX2V4aXN0c19hbmRfaXNfZW1wdHkoc2VsZik6CisgICAgZGVmIHRlc3RfZGV2bnVsbChzZWxmKToKICAgICAgICAgIyBGaXggZm9yIGlzc3VlICMyMDA1MyB1c2VzIG9zLmRldm51bGwgdG8gZm9yY2UgYSBjb25maWcgZmlsZSB0bwogICAgICAgICAjIGFwcGVhciBlbXB0eS4gSG93ZXZlciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1NDEgbWVhbnMKICAgICAgICAgIyB0aGF0IGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgcHJvcGVybHkgb24gV2luZG93cy4gT25jZSB0aGF0IGlzCiAgICAgICAgICMgZml4ZWQsIHRoZSAid2luX2xvY2F0aW9uIiBwYXJ0IG9mIHRlc3Rfd2l0aF9waXAgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCiAKLSAgICAjIFJlcXVlc3RpbmcgcGlwIGZhaWxzIHdpdGhvdXQgU1NMIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzc2wgaXMgTm9uZSwgZW5zdXJlcGlwLl9NSVNTSU5HX1NTTF9NRVNTQUdFKQorICAgICAgICAjIElzc3VlICMyMDU0MTogb3MucGF0aC5leGlzdHMoJ251bCcpIGlzIEZhbHNlIG9uIFdpbmRvd3MKKyAgICAgICAgaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKworCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnc29tZSBkZXBlbmRlbmNpZXMgb2YgcGlwIGltcG9ydCB0aHJlYWRpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG1vZHVsZSB1bmNvbmRpdGlvbmFsbHknKQogICAgICMgSXNzdWUgIzI2NjEwOiBwaXAvcGVwNDI1dGFncy5weSByZXF1aXJlcyBjdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CmluZGV4IDg0YTZmYjUuLjBjZGRmNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpAQCAtMiw3ICsyLDkgQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCByZQogaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCkBAIC03MjAsNiArNzIyLDE3IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCiAKKyAgICBkZWYgdGVzdF9zaG93d2Fybm1zZ19taXNzaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBfc2hvd3dhcm5tc2coKSBtaXNzaW5nIGlzIG9rYXkuCisgICAgICAgIHRleHQgPSAnZGVsIF9zaG93d2Fybm1zZyB0ZXN0JworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBkZWwgc2VsZi5tb2R1bGUuX3Nob3d3YXJubXNnCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRlcnInKSBhcyBzdHJlYW06CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybih0ZXh0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCkBAIC04MjEsMTIgKzgzNCw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX29iamVjdCwgZXhwZWN0ZWRfZmlsZV9saW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZmlsZV9vYmplY3QuZ2V0dmFsdWUoKSkKIAorCiBjbGFzcyBDV2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKIGNsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCisgICAgZGVmIHRlc3RfdHJhY2VtYWxsb2Moc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUodGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICAgICAgICAjIEVtaXQgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgICAgICAgICAgICAgIGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgcmVzID0gYXNzZXJ0X3B5dGhvbl9vaygnLVdkJywgJy1YJywgJ3RyYWNlbWFsbG9jPTInLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzdGRlcnIgPSByZXMuZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisgICAgICAgICMgbm9ybWFsaXplIG5ld2xpbmVzCisgICAgICAgIHN0ZGVyciA9ICdcbicuam9pbihzdGRlcnIuc3BsaXRsaW5lcygpKQorICAgICAgICBzdGRlcnIgPSByZS5zdWIoJzwuKj4nLCAnPC4uLj4nLCBzdGRlcnIpCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAge2ZuYW1lfTo1OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPC4uLj4KKyAgICAgICAgICAgICAgZiA9IE5vbmUKKyAgICAgICAgICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDMKKyAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyA3CisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICcnJykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5mb3JtYXQoZm5hbWU9c3VwcG9ydC5URVNURk4pLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsIGV4cGVjdGVkKQorCiAKIGNsYXNzIENhdGNoV2FybmluZ1Rlc3RzKEJhc2VUZXN0KToKIApAQCAtODk5LDYgKzk0NCw1MSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3bW9kLmZpbHRlcnMgaXMgbm90IG9yaWdfZmlsdGVycykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3bW9kLmZpbHRlcnMgaXMgb3JpZ19maWx0ZXJzKQogCisgICAgZGVmIHRlc3RfcmVjb3JkX292ZXJyaWRlX3Nob3d3YXJuaW5nX2JlZm9yZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjg4MzU6IElmIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgd2FzIG92ZXJyaWRlbiwgbWFrZSBzdXJlCisgICAgICAgICMgdGhhdCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgb3ZlcnJpZGVzIGl0IGFnYWluLgorICAgICAgICB0ZXh0ID0gIlRoaXMgaXMgYSB3YXJuaW5nIgorICAgICAgICB3bW9kID0gc2VsZi5tb2R1bGUKKyAgICAgICAgbXlfbG9nID0gW10KKworICAgICAgICBkZWYgbXlfbG9nZ2VyKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICBub25sb2NhbCBteV9sb2cKKyAgICAgICAgICAgIG15X2xvZy5hcHBlbmQobWVzc2FnZSkKKworICAgICAgICAjIE92ZXJyaWRlIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYmVmb3JlIGNhbGxpbmcgY2F0Y2hfd2FybmluZ3MoKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHdtb2QsICdzaG93d2FybmluZycsIG15X2xvZ2dlcik6CisgICAgICAgICAgICB3aXRoIHdtb2QuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXdtb2QsIHJlY29yZD1UcnVlKSBhcyBsb2c6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh3bW9kLnNob3d3YXJuaW5nLCBteV9sb2dnZXIpCisKKyAgICAgICAgICAgICAgICB3bW9kLnNpbXBsZWZpbHRlcigiYWx3YXlzIikKKyAgICAgICAgICAgICAgICB3bW9kLndhcm4odGV4dCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3bW9kLnNob3d3YXJuaW5nLCBteV9sb2dnZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obG9nKSwgMSwgbG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ1swXS5tZXNzYWdlLmFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbG9nLCBbXSkKKworICAgIGRlZiB0ZXN0X3JlY29yZF9vdmVycmlkZV9zaG93d2FybmluZ19pbnNpZGUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI4ODM1OiBJdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSB3YXJuaW5ncy5zaG93d2FybmluZygpCisgICAgICAgICMgaW4gdGhlIGNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBjb250ZXh0IG1hbmFnZXIuCisgICAgICAgIHRleHQgPSAiVGhpcyBpcyBhIHdhcm5pbmciCisgICAgICAgIHdtb2QgPSBzZWxmLm1vZHVsZQorICAgICAgICBteV9sb2cgPSBbXQorCisgICAgICAgIGRlZiBteV9sb2dnZXIobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKKyAgICAgICAgICAgIG5vbmxvY2FsIG15X2xvZworICAgICAgICAgICAgbXlfbG9nLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIHdpdGggd21vZC5jYXRjaF93YXJuaW5ncyhtb2R1bGU9d21vZCwgcmVjb3JkPVRydWUpIGFzIGxvZzoKKyAgICAgICAgICAgIHdtb2Quc2ltcGxlZmlsdGVyKCJhbHdheXMiKQorICAgICAgICAgICAgd21vZC5zaG93d2FybmluZyA9IG15X2xvZ2dlcgorICAgICAgICAgICAgd21vZC53YXJuKHRleHQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXlfbG9nKSwgMSwgbXlfbG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X2xvZ1swXS5hcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZywgW10pCisKICAgICBkZWYgdGVzdF9jaGVja193YXJuaW5ncyhzZWxmKToKICAgICAgICAgIyBFeHBsaWNpdCB0ZXN0cyBmb3IgdGhlIHRlc3Quc3VwcG9ydCBjb252ZW5pZW5jZSB3cmFwcGVyCiAgICAgICAgIHdtb2QgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5IGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CmluZGV4IDNlZmY3NzMuLjg2NjZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKQEAgLTEsNiArMSw2IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2F2ZQpAQCAtMTAzLDUgKzEwMywxMSBAQAogICAgICAgICBmcmFtZXMgPSBieXRlc3dhcChmcmFtZXMsIDQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnV0FWRV9GT1JNQVRfUENNJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgd2F2ZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDFhYTM1NDAuLjQzY2YyYzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTk0Myw3ICs5NDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIociwgIl9fZGljdF9fIikpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWZzX3dpdGhfY3ljbGUoc2VsZik6Ci0gICAgICAgICMgQnVnICMzMTEwCisgICAgICAgICIiIkNvbmZpcm0gaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMTAwIGlzIGZpeGVkLiIiIgogICAgICAgICAjIEFuIGluc3RhbmNlIG9mIGEgd2Vha3JlZiBzdWJjbGFzcyBjYW4gaGF2ZSBhdHRyaWJ1dGVzLgogICAgICAgICAjIElmIHN1Y2ggYSB3ZWFrcmVmIGhvbGRzIHRoZSBvbmx5IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwKICAgICAgICAgIyBkZWxldGluZyB0aGUgd2Vha3JlZiB3aWxsIGRlbGV0ZSB0aGUgb2JqZWN0LiBJbiB0aGlzIGNhc2UsCkBAIC0xMzU3LDEzICsxMzU3LDE2IEBACiAgICAgICAgIG8gPSBPYmplY3QoMTIzNDU2KQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBuID0gbGVuKGRpY3QpCi0gICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQorICAgICAgICAgICAgIyBTaW5jZSB1bmRlcmxheWluZyBkaWN0IGlzIG9yZGVyZWQsIGZpcnN0IGl0ZW0gaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKICAgICAgICAgICAgIGRpY3Rbb10gPSBvCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbikKKyAgICAgICAgIyBsYXN0IGl0ZW0gaW4gb2JqZWN0cyBpcyByZW1vdmVkIGZyb20gZGljdCBpbiBjb250ZXh0IHNodXRkb3duCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKLSAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQorICAgICAgICAgICAgIyBUaGVuLCAobywgbykgaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAyKQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKaW5kZXggOWNlNjcyYi4uNjkxYjk1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQpAQCAtMSwxMyArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHksIHJlZiwgV2Vha1NldAotaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgY29weQorZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiBpbXBvcnQgc3RyaW5nCi1pbXBvcnQgb3MKLWZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nIGFzIHVzdHIKIGltcG9ydCBnYwogaW1wb3J0IGNvbnRleHRsaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhMmY3YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5CkBAIC0wLDAgKzEsMTQ3IEBACisnJydUZXN0cyBmb3IgV2luZG93c0NvbnNvbGVJTworJycnCisKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IG9ubHkgcmVsZXZhbnQgb24gd2luMzIiKQorCitmcm9tIF90ZXN0Y29uc29sZSBpbXBvcnQgd3JpdGVfaW5wdXQKKworQ29uSU8gPSBpby5fV2luZG93c0NvbnNvbGVJTworCitjbGFzcyBXaW5kb3dzQ29uc29sZUlPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlJhd0lPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uQnVmZmVyZWRJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlRleHRJT0Jhc2UpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9mZChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDEsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMiwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uYW1lKHNlbGYpOgorICAgICAgICBmID0gQ29uSU8oIkNPTiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05JTiQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OT1VUJCcsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiBhc3NlcnRTdGRpblJvdW5kVHJpcChzZWxmLCB0ZXh0KToKKyAgICAgICAgc3RkaW4gPSBvcGVuKCdDT05JTiQnLCAncicpCisgICAgICAgIG9sZF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBzdGRpbgorICAgICAgICAgICAgd3JpdGVfaW5wdXQoCisgICAgICAgICAgICAgICAgc3RkaW4uYnVmZmVyLnJhdywKKyAgICAgICAgICAgICAgICAodGV4dCArICdcclxuJykuZW5jb2RlKCd1dGYtMTYtbGUnLCAnc3Vycm9nYXRlcGFzcycpCisgICAgICAgICAgICApCisgICAgICAgICAgICBhY3R1YWwgPSBpbnB1dCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBvbGRfc3RkaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbnB1dChzZWxmKToKKyAgICAgICAgIyBBU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdhYmMxMjMnKQorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCfPvNGe0KLOu9Ck0JknKQorICAgICAgICAjIENvbWJpbmluZyBjaGFyYWN0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ0HNj0Ig76yWzLNBQcydJykKKyAgICAgICAgIyBOb24tQk1QCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ1xVMDAxMDAwMDBcVTAwMTBmZmZmXFUwMDEwZmZmZCcpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCByZWFkaW5nIGxlc3MgdGhhbiAxIGZ1bGwgY2hhcmFjdGVyIHdvcmtzIHdoZW4gc3RkaW4KKyAgICAgICAgIyBjb250YWlucyBtdWx0aWJ5dGUgVVRGLTggc2VxdWVuY2VzCisgICAgICAgIHNvdXJjZSA9ICfPvNGe0KLOu9Ck0JlcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgIGV4cGVjdGVkID0gJ8+80Z7Qos670KTQmVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9zdXJyb2dhdGVfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIHN1cnJvZ2F0ZSBwYWlycyB0aGF0IGNhbm5vdCBiZSBkZWNvZGVkIHRvIFVURi04IHdpdGhvdXQKKyAgICAgICAgIyByZWFkaW5nIGFuIGV4dHJhIGNoYXJhY3Rlci4KKyAgICAgICAgc291cmNlID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICdcVTAwMTAxRkZGXFUwMDEwMTAwMVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfY3RybF96KHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgIHNvdXJjZSA9ICdceEM0XHgxQVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ1x4QzQnLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKyAgICAgICAgICAgIGEsIGIgPSBzdGRpbi5yZWFkKDEpLCBzdGRpbi5yZWFkYWxsKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMDoxXSwgYSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMTpdLCBiKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQppbmRleCA2MDIwN2ZiLi4yYmU2MWFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQpAQCAtMzcsNiArMzcsNyBAQAogCiB0ZXN0X2RhdGEgPSBbCiAgICAgKCJJbnQgVmFsdWUiLCAgICAgNDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRFdPUkQpLAorICAgICgiUXdvcmQgVmFsdWUiLCAgIDB4MTEyMjMzNDQ1NTY2Nzc4OCwgICAgICAgICAgICAgICAgICAgICAgUkVHX1FXT1JEKSwKICAgICAoIlN0cmluZyBWYWwiLCAgICAiQSBzdHJpbmcgdmFsdWUiLCAgICAgICAgICAgICAgICAgICAgICAgIFJFR19TWiksCiAgICAgKCJTdHJpbmdFeHBhbmQiLCAgIlRoZSBwYXRoIGlzICVwYXRoJSIsICAgICAgICAgICAgICAgICAgICBSRUdfRVhQQU5EX1NaKSwKICAgICAoIk11bHRpLXN0cmluZyIsICBbIkxvdHMiLCAib2YiLCAic3RyaW5nIiwgInZhbHVlcyJdLCAgICAgIFJFR19NVUxUSV9TWiksCkBAIC01Niw3ICs1Nyw3IEBACiAKICAgICBkZWYgZGVsZXRlX3RyZWUoc2VsZiwgcm9vdCwgc3Via2V5KToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGtleSA9IE9wZW5LZXkocm9vdCwgc3Via2V5LCBLRVlfQUxMX0FDQ0VTUykKKyAgICAgICAgICAgIGhrZXkgPSBPcGVuS2V5KHJvb3QsIHN1YmtleSwgMCwgS0VZX0FMTF9BQ0NFU1MpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyBzdWJrZXkgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgIHJldHVybgpAQCAtMzY3LDYgKzM2OCwxOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgRGVsZXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X2tleV9uYW1lKQogCisgICAgZGVmIHRlc3RfcmVhZF9zdHJpbmdfY29udGFpbmluZ19udWxsKHNlbGYpOgorICAgICAgICAjIFRlc3QgZm9yIGlzc3VlIDI1Nzc4OiBSRUdfU1ogc2hvdWxkIG5vdCBjb250YWluIG51bGwgY2hhcmFjdGVycworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIENyZWF0ZUtleShIS0VZX0NVUlJFTlRfVVNFUiwgdGVzdF9rZXlfbmFtZSkgYXMgY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjay5oYW5kbGUsIDApCisgICAgICAgICAgICAgICAgdGVzdF92YWwgPSAiQSBzdHJpbmdceDAwIHdpdGggYSBudWxsIgorICAgICAgICAgICAgICAgIFNldFZhbHVlRXgoY2ssICJ0ZXN0X25hbWUiLCAwLCBSRUdfU1osIHRlc3RfdmFsKQorICAgICAgICAgICAgICAgIHJldF92YWwsIHJldF90eXBlID0gUXVlcnlWYWx1ZUV4KGNrLCAidGVzdF9uYW1lIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldF90eXBlLCBSRUdfU1opCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRfdmFsLCAiQSBzdHJpbmciKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgRGVsZXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X2tleV9uYW1lKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKFJFTU9URV9OQU1FLCAiU2tpcHBpbmcgcmVtb3RlIHJlZ2lzdHJ5IHRlc3RzIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDRhOGFiN2QuLjE3OWUwNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwLCAyMDAwLCAxMDApOgogICAgICAgICAgICAgc2FmZV9CZWVwKGksIDc1KQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX0JlZXAoZHVyYXRpb249NzUsIGZyZXF1ZW5jeT0yMDAwKQorCisKIGNsYXNzIE1lc3NhZ2VCZWVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC03Niw2ICs4MCw5IEBACiAgICAgZGVmIHRlc3RfcXVlc3Rpb24oc2VsZik6CiAgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAod2luc291bmQuTUJfSUNPTlFVRVNUSU9OKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX01lc3NhZ2VCZWVwKHR5cGU9d2luc291bmQuTUJfT0spCisKIAogY2xhc3MgUGxheVNvdW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzk0LDI1IEBACiAgICAgICAgICAgICB3aW5zb3VuZC5QbGF5U291bmQsCiAgICAgICAgICAgICAibm9uZSIsIHdpbnNvdW5kLlNORF9BU1lOQyB8IHdpbnNvdW5kLlNORF9NRU1PUlkKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgYiJiYWQiLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgImJhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbnNvdW5kLlNORF9NRU1PUlkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAxLCAwKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbGFncz13aW5zb3VuZC5TTkRfQUxJQVMsIHNvdW5kPSJTeXN0ZW1FeGl0IikKKworICAgIGRlZiB0ZXN0X3NuZF9tZW1vcnkoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LmZpbmRmaWxlKCdwbHVjay1wY204LndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcj0nYXVkaW9kYXRhJyksICdyYicpIGFzIGY6CisgICAgICAgICAgICBhdWRpb19kYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2FmZV9QbGF5U291bmQoYXVkaW9fZGF0YSwgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgYXVkaW9fZGF0YSA9IGJ5dGVhcnJheShhdWRpb19kYXRhKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorCisgICAgZGVmIHRlc3Rfc25kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmbiA9IHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2Jywgc3ViZGlyPSdhdWRpb2RhdGEnKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbiwgd2luc291bmQuU05EX0ZJTEVOQU1FIHwgd2luc291bmQuU05EX05PREVGQVVMVCkKIAogICAgIGRlZiB0ZXN0X2FsaWFzZXMoc2VsZik6CiAgICAgICAgIGFsaWFzZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggZThkNzg5Yi4uYzcwZjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtMTA5LDcgKzEwOSw3IEBACiAgICAgICAgICAgICB3aXRoIGZvbzogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZvb05vdERlY2xhcmVkKQogCi0gICAgZGVmIHRlc3RFbnRlckF0dHJpYnV0ZUVycm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0RW50ZXJBdHRyaWJ1dGVFcnJvcjEoc2VsZik6CiAgICAgICAgIGNsYXNzIExhY2tzRW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKICAgICAgICAgICAgICAgICBwYXNzCkBAIC0xMTcsNyArMTE3LDE2IEBACiAgICAgICAgIGRlZiBmb29MYWNrc0VudGVyKCk6CiAgICAgICAgICAgICBmb28gPSBMYWNrc0VudGVyKCkKICAgICAgICAgICAgIHdpdGggZm9vOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmb29MYWNrc0VudGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19lbnRlcl9fJywgZm9vTGFja3NFbnRlcikKKworICAgIGRlZiB0ZXN0RW50ZXJBdHRyaWJ1dGVFcnJvcjIoc2VsZik6CisgICAgICAgIGNsYXNzIExhY2tzRW50ZXJBbmRFeGl0KG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGZvb0xhY2tzRW50ZXJBbmRFeGl0KCk6CisgICAgICAgICAgICBmb28gPSBMYWNrc0VudGVyQW5kRXhpdCgpCisgICAgICAgICAgICB3aXRoIGZvbzogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19lbnRlcl9fJywgZm9vTGFja3NFbnRlckFuZEV4aXQpCiAKICAgICBkZWYgdGVzdEV4aXRBdHRyaWJ1dGVFcnJvcihzZWxmKToKICAgICAgICAgY2xhc3MgTGFja3NFeGl0KG9iamVjdCk6CkBAIC0xMjcsNyArMTM2LDcgQEAKICAgICAgICAgZGVmIGZvb0xhY2tzRXhpdCgpOgogICAgICAgICAgICAgZm9vID0gTGFja3NFeGl0KCkKICAgICAgICAgICAgIHdpdGggZm9vOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmb29MYWNrc0V4aXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdfX2V4aXRfXycsIGZvb0xhY2tzRXhpdCkKIAogICAgIGRlZiBhc3NlcnRSYWlzZXNTeW50YXhFcnJvcihzZWxmLCBjb2Rlc3RyKToKICAgICAgICAgZGVmIHNob3VsZFJhaXNlU3ludGF4RXJyb3Iocyk6CkBAIC0xNDAsMTEgKzE0OSw2IEBACiAgICAgICAgICAgICAnd2l0aCBtb2NrIGFzIChOb25lKTpcbicKICAgICAgICAgICAgICcgIHBhc3MnKQogCi0gICAgZGVmIHRlc3RBc3NpZ25tZW50VG9FbXB0eVR1cGxlRXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAnd2l0aCBtb2NrIGFzICgpOlxuJwotICAgICAgICAgICAgJyAgcGFzcycpCi0KICAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb1R1cGxlT25seUNvbnRhaW5pbmdOb25lRXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoJ3dpdGggbW9jayBhcyBOb25lLDpcbiAgcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCkBAIC00NTQsNyArNDU4LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKQEAgLTQ4Miw3ICs0ODYsNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDYxYTc1MGMuLjc3MDhlMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiAgICAgICAgIGRlZiBhcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpOgogICAgICAgICAgICAgc3RhcnRfcmVzcG9uc2UoIjIwMCBPSyIsIFtdKQotICAgICAgICAgICAgcmV0dXJuIFtieXRlcyhzdXBwb3J0LlNPQ0tfTUFYX1NJWkUpXQorICAgICAgICAgICAgcmV0dXJuIFtiJ1wwJyAqIHN1cHBvcnQuU09DS19NQVhfU0laRV0KIAogICAgICAgICBjbGFzcyBXc2dpSGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBXU0dJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCA2Yzc2MTZiLi5jMDE0NGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtOTEsOCArOTEsNiBAQAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIGdldCByaWQgb2YgdGhlIGdsb2JhbCBtb2R1bGUgdmFycwotCiAgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgogICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKQEAgLTEwMCw2ICs5OCwxMCBAQAogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIG5hbWVzID0gKCJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiLCAiX2VsZW1lbnR0cmVlIikKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgRVQsIG5hbWVzLCBibGFja2xpc3Q9KCJIVE1MX0VNUFRZIiwpKQorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CkBAIC0xODIsMTAgKzE4NCwxMiBAQAogCiAgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQorICAgICAgICAgICAgZGlyZWxlbSA9IGRpcihlbGVtZW50KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3RhZycsICdhdHRyaWInLCAndGV4dCcsICd0YWlsJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgbWVtYmVyJyAlIGF0dHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBkaXJlbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyB2aXNpYmxlIGJ5IGRpcicgJSBhdHRyKQogCiAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCiAgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggYmZjZWQxMi4uN2M2MDY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDUgKzEsNSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi1pbXBvcnQgc3lzLCBzdHJ1Y3QKK2ltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB0eXBlcwpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMDJkOWY1Yy4uZGY5Yzc5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC05LDcgKzEwLDYgQEAKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGh0dHAsIGh0dHAuc2VydmVyCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGlvCiBpbXBvcnQgY29udGV4dGxpYgpAQCAtMjM4LDYgKzIzOCw1NCBAQAogICAgICAgICAgICAgICAgICc8L3N0cnVjdD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVzcG9uc2VFcnJvciwgeG1scnBjbGliLmxvYWRzLCBkYXRhKQogCisgICAgZGVmIGNoZWNrX2xvYWRzKHNlbGYsIHMsIHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGR1bXAgPSAnPHBhcmFtcz48cGFyYW0+PHZhbHVlPiVzPC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicgJSBzCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhkdW1wLCAqKmt3YXJncykKKyAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHR5cGUodmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgZGVmIHRlc3RfbG9hZF9zdGFuZGFyZF90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCdzdHJpbmcnLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+c3RyaW5nPC9zdHJpbmc+JywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nPC9zdHJpbmc+JywgJ/CdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxpbnQ+MjA1NjE4Mzk0NzwvaW50PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aW50Pi0yMDU2MTgzOTQ3PC9pbnQ+JywgLTIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aTQ+MjA1NjE4Mzk0NzwvaTQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxkb3VibGU+NDYwOTMuNzgxMjU8L2RvdWJsZT4nLCA0NjA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxib29sZWFuPjA8L2Jvb2xlYW4+JywgRmFsc2UpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkJpbmFyeShiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnKSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICBiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpLAorICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGFycmF5PjxkYXRhPicKKyAgICAgICAgICAgICAgJzx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPicKKyAgICAgICAgICAgICAgJzwvZGF0YT48L2FycmF5PicsIFsxLCAyXSkKKyAgICAgICAgY2hlY2soJzxzdHJ1Y3Q+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5iPC9uYW1lPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YTwvbmFtZT48dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8L3N0cnVjdD4nLCB7J2EnOiAxLCAnYic6IDJ9KQorCisgICAgZGVmIHRlc3RfbG9hZF9leHRlbnNpb25fdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnPG5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxleDpuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8aTE+MjA1PC9pMT4nLCAyMDUpCisgICAgICAgIGNoZWNrKCc8aTI+MjA1NjE8L2kyPicsIDIwNTYxKQorICAgICAgICBjaGVjaygnPGk4Pjk4NzY1NDMyMTA8L2k4PicsIDk4NzY1NDMyMTApCisgICAgICAgIGNoZWNrKCc8YmlnaW50ZWdlcj45ODc2NTQzMjEwMDEyMzQ1Njc4OTwvYmlnaW50ZWdlcj4nLAorICAgICAgICAgICAgICA5ODc2NTQzMjEwMDEyMzQ1Njc4OSkKKyAgICAgICAgY2hlY2soJzxmbG9hdD45My43ODEyNTwvZmxvYXQ+JywgOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8YmlnZGVjaW1hbD45ODc2NTQzMjEwLjAxMjM0NTY3ODk8L2JpZ2RlY2ltYWw+JywKKyAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCc5ODc2NTQzMjEwLjAxMjM0NTY3ODknKSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTE0Nyw3ICsxMTk1LDYgQEAKICAgICAiIiJBIHZhcmlhdGlvbiBvbiBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIHdoaWNoIGdpdmVzIGEgdGV4dCBzdHJlYW0KICAgICBoYXZpbmcgYSBgYnVmZmVyYCBhdHRyaWJ1dGUuCiAgICAgIiIiCi0gICAgaW1wb3J0IGlvCiAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCBlbmNvZGluZz1lbmNvZGluZykKICAgICB0cnk6CkBAIC0xMjIwLDcgKzEyNjcsNyBAQAogICAgICAgICBjb250ZW50ID0gaGFuZGxlW2hhbmRsZS5maW5kKCI8P3htbCIpOl0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW50KHJlLnNlYXJjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCisgICAgICAgICAgICBpbnQocmUuc2VhcmNoKHInQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGI2MGI4MmYuLmFlMGEyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNyArMSw0IEBACiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3lpZWxkX2Zyb20ucHkKaW5kZXggMjNmZmJlZC4uN2U5NzExZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CkBAIC0zODQsOSArMzg0LDEwIEBACiAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCiAgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKCkKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQotICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMig0MikKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlciIgJSAocmV0LCkpCisgICAgICAgICAgICBmb3IgdiBpbiAxLCAoMiwpLCBTdG9wSXRlcmF0aW9uKDMpOgorICAgICAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIodikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVyIiAlIChyZXQsKSkKICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgogICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQogICAgICAgICBkZWYgZzIodiA9IE5vbmUpOgpAQCAtNDEwLDcgKzQxMSwxNyBAQAogICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCiAgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAogICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCi0gICAgICAgICAgICAiZzIgcmV0dXJuZWQgNDIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkICgyLCkiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIFN0b3BJdGVyYXRpb24oMywpIiwKICAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAogICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCiAgICAgICAgIF0pCkBAIC02NzAsMTQgKzY4MSwxNiBAQAogICAgICAgICAgICAgICAgIG5leHQoZ2kpCiAgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCiAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXMiICUgKHJlcHIoZSksKSkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVyIiAlIChlLCkpCiAgICAgICAgIGRlZiBnKHIpOgogICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHN0YXJ0aW5nIikKICAgICAgICAgICAgIHlpZWxkCi0gICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVzIiAlIChyLCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVyIiAlIChyLCkpCiAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICBmKE5vbmUpCi0gICAgICAgIGYoNDIpCisgICAgICAgIGYoMSkKKyAgICAgICAgZigoMiwpKQorICAgICAgICBmKFN0b3BJdGVyYXRpb24oMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWwogICAgICAgICAgICAgImcgc3RhcnRpbmciLAogICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCkBAIC02ODUsOCArNjk4LDE2IEBACiAgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKICAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKICAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAotICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKLSAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIDEiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oMSwpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nICgyLCkiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKDIsKSwpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIFN0b3BJdGVyYXRpb24oMywpIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKFN0b3BJdGVyYXRpb24oMywpLCkiLAogICAgICAgICBdKQogCiAgICAgZGVmIHRlc3Rfc2VuZF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CkBAIC03MDYsMjIgKzcyNywzNCBAQAogICAgICAgICBkZWYgZyhyKToKICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCiAgICAgICAgICAgICB4ID0geWllbGQKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlcyIgJSAoeCwpKQotICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJlY2VpdmVkICVyIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVyIiAlIChyLCkpCiAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICBmKE5vbmUpCi0gICAgICAgIGYoNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICBmKDEpCisgICAgICAgIGYoKDIsKSkKKyAgICAgICAgZihTdG9wSXRlcmF0aW9uKDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbCiAgICAgICAgICAgICAiZyBzdGFydGluZyIsCiAgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCi0gICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkICdzcGFtJyIsCiAgICAgICAgICAgICAiZyByZXR1cm5pbmcgTm9uZSIsCiAgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKICAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKICAgICAgICAgICAgICJmIHNlbmRpbmcgc3BhbSB0byBnIiwKLSAgICAgICAgICAgICJnIHJlY2VpdmVkIHNwYW0iLAotICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKLSAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgJ3NwYW0nIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyAxIiwKKyAgICAgICAgICAgICdmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDEsKScsCisgICAgICAgICAgICAnZyBzdGFydGluZycsCisgICAgICAgICAgICAnZiBzZW5kaW5nIHNwYW0gdG8gZycsCisgICAgICAgICAgICAiZyByZWNlaXZlZCAnc3BhbSciLAorICAgICAgICAgICAgJ2cgcmV0dXJuaW5nICgyLCknLAorICAgICAgICAgICAgJ2YgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKDIsKSwpJywKKyAgICAgICAgICAgICdnIHN0YXJ0aW5nJywKKyAgICAgICAgICAgICdmIHNlbmRpbmcgc3BhbSB0byBnJywKKyAgICAgICAgICAgICJnIHJlY2VpdmVkICdzcGFtJyIsCisgICAgICAgICAgICAnZyByZXR1cm5pbmcgU3RvcEl0ZXJhdGlvbigzLCknLAorICAgICAgICAgICAgJ2YgY2F1Z2h0IFN0b3BJdGVyYXRpb24oU3RvcEl0ZXJhdGlvbigzLCksKScKICAgICAgICAgXSkKIAogICAgIGRlZiB0ZXN0X2NhdGNoaW5nX2V4Y2VwdGlvbl9mcm9tX3N1Ymdlbl9hbmRfcmV0dXJuaW5nKHNlbGYpOgpAQCAtNzI5LDI3ICs3NjIsMjkgQEAKICAgICAgICAgVGVzdCBjYXRjaGluZyBhbiBleGNlcHRpb24gdGhyb3duIGludG8gYQogICAgICAgICBzdWJnZW5lcmF0b3IgYW5kIHJldHVybmluZyBhIHZhbHVlCiAgICAgICAgICIiIgotICAgICAgICB0cmFjZSA9IFtdCiAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHlpZWxkIDEKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiKQotICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgICAgIGRlZiBvdXRlcigpOgogICAgICAgICAgICAgdiA9IHlpZWxkIGZyb20gaW5uZXIoKQotICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSB2KQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSAodiwpKQogICAgICAgICAgICAgeWllbGQgdgotICAgICAgICBnID0gb3V0ZXIoKQotICAgICAgICB0cmFjZS5hcHBlbmQobmV4dChnKSkKLSAgICAgICAgdHJhY2UuYXBwZW5kKGcudGhyb3coVmFsdWVFcnJvcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWwotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgICJpbm5lciBjYXVnaHQgVmFsdWVFcnJvciIsCi0gICAgICAgICAgICAiaW5uZXIgcmV0dXJuZWQgMiB0byBvdXRlciIsCi0gICAgICAgICAgICAyLAotICAgICAgICBdKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiAyLCAoMiwpLCBTdG9wSXRlcmF0aW9uKDIpOgorICAgICAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICAgICAgZyA9IG91dGVyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZChuZXh0KGcpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKHJlcHIoZy50aHJvdyhWYWx1ZUVycm9yKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAorICAgICAgICAgICAgICAgICJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSAodmFsdWUsKSwKKyAgICAgICAgICAgICAgICByZXByKHZhbHVlKSwKKyAgICAgICAgICAgIF0pCiAKICAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuX3RoYXRfcmV0dXJucyhzZWxmKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggMGRkNGJjYS4uMGE0M2IyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHppcGZpbGUKQEAgLTM5LDEwICszOSw2IEBACiAgICAgICAgIHlpZWxkIGYKICAgICAgICAgdGVzdC5hc3NlcnRGYWxzZShmLmNsb3NlZCkKIAotZGVmIG9wZW5VKHppcGZwLCBmbik6Ci0gICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICByZXR1cm4gemlwZnAub3BlbihmbiwgJ3JVJykKLQogY2xhc3MgQWJzdHJhY3RUZXN0c1dpdGhTb3VyY2VGaWxlOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CkBAIC02Miw2ICs1OCw5IEBACiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICJhbm90aGVyLm5hbWUiKQogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBURVNURk4pCiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsIHNlbGYuZGF0YSkKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbignd3JpdHRlbi1vcGVuLXcnLCBtb2RlPSd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKICAgICBkZWYgemlwX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQpAQCAtNzcsNyArNzYsNyBAQAogICAgICAgICAgICAgemlwZnAucHJpbnRkaXIoZmlsZT1mcCkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IGZwLmdldHZhbHVlKCkKICAgICAgICAgICAgIGxpbmVzID0gZGlyZWN0b3J5LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA1KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdGaWxlIE5hbWUnLCBsaW5lc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01vZGlmaWVkJywgbGluZXNbMF0pCkBAIC05MSwyMyArOTAsMjUgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbmFtZWxpc3QKICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogCiAgICAgICAgICAgICAjIENoZWNrIGluZm9saXN0CiAgICAgICAgICAgICBpbmZvcyA9IHppcGZwLmluZm9saXN0KCkKICAgICAgICAgICAgIG5hbWVzID0gW2kuZmlsZW5hbWUgZm9yIGkgaW4gaW5mb3NdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAgICAgICAgICAgICBmb3IgaSBpbiBpbmZvczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkuZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKIAogICAgICAgICAgICAgIyBjaGVjayBnZXRpbmZvCi0gICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIik6CisgICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIiwgIndyaXR0ZW4tb3Blbi13Iik6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8obm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVuYW1lLCBubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKQEAgLTM3MywxNCArMzc0LDE4IEBACiAgICAgdGVzdF9sb3dfY29tcHJlc3Npb24gPSBOb25lCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCi0gICAgICAgICMgd2hlbiBpdCBpcyBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBhbmQgb3BlbiguLi4gbW9kZT0ndycpIGNyZWF0ZSBmaWxlcyB3aXRoCisgICAgICAgICMgbW9kZSAwNjAwLCB3aGVuIHRoZXkgYXJlIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvCisgICAgICAgICMgaW5zdGFuY2UuCiAKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppbmZvID0gemlwZnAuZ2V0aW5mbygnc3RyZmlsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQogCisgICAgICAgICAgICB6aW5mbzIgPSB6aXBmcC5nZXRpbmZvKCd3cml0dGVuLW9wZW4tdycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvMi5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKKwogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKGYsIHppcGZpbGUuWklQX1NUT1JFRCkKQEAgLTQ4OCwxMiArNDkzLDE2IEBACiAKICAgICBkZWYgdGVzdF93cml0ZV90b19yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0cnlpbmcgdG8gY2FsbCB3cml0ZSgpIG9uIGEgcmVhZG9ubHkgWmlwRmlsZSBvYmplY3QKLSAgICAgICAgcmFpc2VzIGEgUnVudGltZUVycm9yLiIiIgorICAgICAgICByYWlzZXMgYSBWYWx1ZUVycm9yLiIiIgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic29tZWZpbGUudHh0IiwgImJvZ3VzIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgemlwZnAub3BlbihURVNURk4sIG1vZGU9J3cnKQogCiAgICAgZGVmIHRlc3RfYWRkX2ZpbGVfYmVmb3JlXzE5ODAoc2VsZik6CiAgICAgICAgICMgU2V0IGF0aW1lIGFuZCBtdGltZSB0byAxOTcwLTAxLTAxCkBAIC0xMDY2LDMyICsxMDc1LDYgQEAKICAgICAgICAgICAgICAgICBkYXRhICs9IHppcGZwLnJlYWQoaW5mbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGF0YSwge2IiZm9vYmFyIiwgYiJiYXJmb28ifSkKIAotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3NwYW0udHh0JywgYidhYmFiYWdhbGFtYWdhJykKLQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIG1vZGUgaW4gJ1UnLCAnclUnOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICB6aXBvcGVuID0gemlwZnAub3Blbignc3BhbS50eHQnLCBtb2RlKQotICAgICAgICAgICAgICAgIHppcG9wZW4uY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX3JlYWRhaGVhZHMoc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLQotICAgICAgICBkYXRhID0gYidhXHJcbicgKiAxNiAqIDEwMjQKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoVEVTVEZOLCBkYXRhKQotCi0gICAgICAgIGRhdGEyID0gYicnCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnAsIFwKLSAgICAgICAgICAgICBvcGVuVSh6aXBmcCwgVEVTVEZOKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gemlwb3BlbjoKLSAgICAgICAgICAgICAgICBkYXRhMiArPSBsaW5lCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBkYXRhMi5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKSkKLQogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2V4dGVuZGVkX2xvY2FsX2hlYWRlcl9pc3N1ZTEyMDIoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JykgYXMgb3JpZ196aXA6CiAgICAgICAgICAgICBmb3IgZGF0YSBpbiAnYWJjZGVmZ2hpamtsbW5vcCc6CkBAIC0xMjcxLDI3ICsxMjU0LDI3IEBACiAgICAgICAgICAgICBmcC53cml0ZSgic2hvcnQgZmlsZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGZpbGUuQmFkWmlwRmlsZSwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCiAKLSAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19SdW50aW1lRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfVmFsdWVFcnJvcihzZWxmKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGVzdHppcCgpIGRvZXNuJ3Qgc3dhbGxvdyBpbmFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuIiIiCiAgICAgICAgIGRhdGEgPSBpby5CeXRlc0lPKCkKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZGF0YSwgbW9kZT0idyIpIGFzIHppcGY6CiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgICMgVGhpcyBpcyBjb3JyZWN0OyBjYWxsaW5nIC5yZWFkIG9uIGEgY2xvc2VkIFppcEZpbGUgc2hvdWxkIHJhaXNlCi0gICAgICAgICMgYSBSdW50aW1lRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKKyAgICAgICAgIyBhIFZhbHVlRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKICAgICAgICAgIyB2ZXJzaW9uIG9mIC50ZXN0emlwIHdvdWxkIHN3YWxsb3cgdGhpcyBleGNlcHRpb24gKGFuZCBhbnkgb3RoZXIpCiAgICAgICAgICMgYW5kIHJlcG9ydCB0aGF0IHRoZSBmaXJzdCBmaWxlIGluIHRoZSBhcmNoaXZlIHdhcyBjb3JydXB0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYudGVzdHppcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnRlc3R6aXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCd6aXBmaWxlIHRlc3QgZGF0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCiAKICAgICBkZWYgdGVzdF9iYWRfY29uc3RydWN0b3JfbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUgY29uc3RydWN0b3IgYXJlIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQogCiAgICAgZGVmIHRlc3RfYmFkX29wZW5fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUgY2F1Z2h0LiIiIgpAQCAtMTI5OSw5ICsxMjgyLDEyIEBACiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHppcGYucmVhZCgiZm9vLnR4dCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgc3VwcG9ydCBpcyByZW1vdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgIlUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJyVSIpCiAKICAgICBkZWYgdGVzdF9yZWFkMChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBjYWxsaW5nIHJlYWQoMCkgb24gYSBaaXBFeHRGaWxlIG9iamVjdCByZXR1cm5zIGFuIGVtcHR5CkBAIC0xMzI0LDcgKzEzMTAsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb21wcmVzc2lvbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBjb21wcmVzc2lvbiBtZXRob2RzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlCiAgICAgICAgIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIyBkYXRhIGlzIGRlY2xhcmVkIGFzIHNocnVuaywgYnV0IGFjdHVhbGx5IGRlZmxhdGVkCkBAIC0xNDcyLDYgKzE0NTgsMzUgQEAKICAgICAgICAgICAgICMgdGVzdHppcCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBjb3JydXB0IGZpbGUsIG9yIE5vbmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHppcGYudGVzdHppcCgpKQogCisgICAgZGVmIHRlc3Rfb3Blbl9jb25mbGljdGluZ19oYW5kbGVzKHNlbGYpOgorICAgICAgICAjIEl0J3Mgb25seSBwb3NzaWJsZSB0byBvcGVuIG9uZSB3cml0YWJsZSBmaWxlIGhhbmRsZSBhdCBhIHRpbWUKKyAgICAgICAgbXNnMSA9IGIiSXQncyBmdW4gdG8gY2hhcnRlciBhbiBhY2NvdW50YW50ISIKKyAgICAgICAgbXNnMiA9IGIiQW5kIHNhaWwgdGhlIHdpZGUgYWNjb3VudGFudCBzZWEiCisgICAgICAgIG1zZzMgPSBiIlRvIGZpbmQsIGV4cGxvcmUgdGhlIGZ1bmRzIG9mZnNob3JlIgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdmb28nLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMSkKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXInLCBtb2RlPSd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdoYW5kbGUnLCBtb2RlPSd3JykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3InKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3N0cicsICdhYmNkZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZShfX2ZpbGVfXywgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHcxLndyaXRlKG1zZzIpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmF6JywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzMpCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2ZvbycpLCBtc2cxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JhcicpLCBtc2cyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JheicpLCBtc2czKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLm5hbWVsaXN0KCksIFsnZm9vJywgJ2JhcicsICdiYXonXSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC0xODA1LDYgKzE4MjAsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCiAKKyAgICBkZWYgdGVzdF9vcGVuX3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ29uZXMnKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBiJzIyMicpCisKIAogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTkxNSw2ICsxOTQ2LDE5IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGYuZmlsZW5vKCksIDEwMCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3doaWxlX3JlYWRpbmcoc2VsZik6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3InKSBhcyByMToKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHIxLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICAgICAgdzEud3JpdGUoc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICBkYXRhMSArPSByMS5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMikgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIHNlbGYuZGF0YTIpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4yKQogCkBAIC0xOTg0LDEzNyArMjAyOCwxOSBAQAogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCi1jbGFzcyBBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0czoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMubGluZV9nZW4gPSBbYnl0ZXMoIlRlc3Qgb2YgemlwZmlsZSBsaW5lICVkLiIgJSBpLCAiYXNjaWkiKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoRklYRURURVNUX1NJWkUpXQotICAgICAgICBjbHMuc2VwcyA9IChiJ1xyJywgYidcclxuJywgYidcbicpCi0gICAgICAgIGNscy5hcmNkYXRhID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKGNscy5zZXBzKToKLSAgICAgICAgICAgIGNscy5hcmNkYXRhW3NdID0gcy5qb2luKGNscy5saW5lX2dlbikgKyBzCitjbGFzcyBaaXBJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5iYXNlbmFtZSh6aS5maWxlbmFtZSksICd0ZXN0X3ppcGZpbGUucHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppLmlzX2RpcigpKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmFyY2ZpbGVzID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKHNlbGYuc2Vwcyk6Ci0gICAgICAgICAgICBzZWxmLmFyY2ZpbGVzW3NdID0gJyVzLSVkJyAlIChURVNURk4sIG4pCi0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmNmaWxlc1tzXSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXJjZGF0YVtzXSkKLQotICAgIGRlZiBtYWtlX3Rlc3RfYXJjaGl2ZShzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIGNvbXByZXNzaW9uKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLmFyY2ZpbGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKGZuLCBmbikKLQotICAgIGRlZiByZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJjZGF0YVtzZXBdLCB6aXBkYXRhKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV9yZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkKDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5hcmNkYXRhW2InXG4nXSkKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZWRhdGEgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZWRhdGEsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCB6aXBsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgaXRlcmxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCBmcCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X2l0ZXJsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgIHVubGluayhURVNURk4pCi0gICAgICAgIHVubGluayhURVNURk4yKQotCi0KLWNsYXNzIFN0b3JlZFVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9TVE9SRUQKLQotQHJlcXVpcmVzX3psaWIKLWNsYXNzIERlZmxhdGVVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0RFRkxBVEVECi0KLUByZXF1aXJlc19iejIKLWNsYXNzIEJ6aXAyVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfQlpJUDIKLQotQHJlcXVpcmVzX2x6bWEKLWNsYXNzIEx6bWFVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKKyAgICBkZWYgdGVzdF9mcm9tX2RpcihzZWxmKToKKyAgICAgICAgZGlycGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoZGlycGF0aCwgJ3N0ZGxpYl90ZXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZW5hbWUsICdzdGRsaWJfdGVzdHMvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHppLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlX3NpemUsIDApCiAKIAogY2xhc3MgQ29tbWFuZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxNzUsNyArMjEwMSw3IEBACiAgICAgICAgICAgICAgICAgZm9yIHppIGluIHpmLmluZm9saXN0KCk6CiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZXh0ZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aS5maWxlbmFtZS5yZXBsYWNlKCcvJywgb3Muc2VwKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgemkuZmlsZW5hbWUuZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgaWYgemkuaXNfZGlyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihwYXRoKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwYXRoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggZDViM2IyMi4uN2RkYmM1MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTM5OCw3ICszOTgsOCBAQAogICAgICAgICBwYWNrZGlyMiA9IHBhY2tkaXIgKyBURVNUUEFDSzIgKyBvcy5zZXAKICAgICAgICAgZmlsZXMgPSB7cGFja2RpciArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCiAgICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgIl9faW5pdF9fIiArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKSwKLSAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpfQorICAgICAgICAgICAgICAgICBwYWNrZGlyMiArIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCisgICAgICAgICAgICAgICAgICJzcGFtIiArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KIAogICAgICAgICB6ID0gWmlwRmlsZShURU1QX1pJUCwgInciKQogICAgICAgICB0cnk6CkBAIC00MTIsNiArNDEzLDE0IEBACiAgICAgICAgICAgICB6aSA9IHppcGltcG9ydC56aXBpbXBvcnRlcihURU1QX1pJUCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuYXJjaGl2ZSwgVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UoVEVTVFBBQ0spLCBUcnVlKQorCisgICAgICAgICAgICBmaW5kX21vZCA9IHppLmZpbmRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRfbW9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRfbW9kLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbmRfbW9kLmlzX3BhY2thZ2UoJ3NwYW0nKSkKKyAgICAgICAgICAgIGxvYWRfbW9kID0gZmluZF9tb2QubG9hZF9tb2R1bGUoJ3NwYW0nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kX21vZC5nZXRfZmlsZW5hbWUoJ3NwYW0nKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZCA9IHppLmxvYWRfbW9kdWxlKFRFU1RQQUNLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5nZXRfZmlsZW5hbWUoVEVTVFBBQ0spLCBtb2QuX19maWxlX18pCiAKQEAgLTQ3MSw2ICs0ODAsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgemkuaXNfcGFja2FnZShURVNUUEFDSzIgKyBvcy5zZXAgKyBURVNUTU9EKSwgRmFsc2UpCiAKKyAgICAgICAgICAgIHBrZ19wYXRoID0gVEVNUF9aSVAgKyBvcy5zZXAgKyBwYWNrZGlyICsgVEVTVFBBQ0syCisgICAgICAgICAgICB6aTIgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIocGtnX3BhdGgpCisgICAgICAgICAgICBmaW5kX21vZF9kb3R0ZWQgPSB6aTIuZmluZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRfbW9kX2RvdHRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZF9kb3R0ZWQsIHppcGltcG9ydC56aXBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoemkyLmlzX3BhY2thZ2UoVEVTVE1PRCkpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kX2RvdHRlZC5sb2FkX21vZHVsZShURVNUTU9EKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBmaW5kX21vZF9kb3R0ZWQuZ2V0X2ZpbGVuYW1lKFRFU1RNT0QpLCBsb2FkX21vZC5fX2ZpbGVfXykKKwogICAgICAgICAgICAgbW9kX3BhdGggPSBURVNUUEFDSzIgKyBvcy5zZXAgKyBURVNUTU9ECiAgICAgICAgICAgICBtb2RfbmFtZSA9IG1vZHVsZV9wYXRoX3RvX2RvdHRlZF9uYW1lKG1vZF9wYXRoKQogICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kX25hbWUpCkBAIC02MjMsOCArNjQyLDEwIEBACiAKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGZpbGVuYW1lKQogICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIob3MuZnNlbmNvZGUoZmlsZW5hbWUpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCi0gICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihtZW1vcnl2aWV3KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihtZW1vcnl2aWV3KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCiAKIAogQHN1cHBvcnQucmVxdWlyZXNfemxpYgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggNTkxMzYyMi4uODRkNTI2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xMiw3ICsxMiw2IEBACiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBsaW5lY2FjaGUKLWltcG9ydCBwZGIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3NjcmlwdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQppbmRleCA2ZmVhODkzLi4yMDE3NGQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3psaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CkBAIC0xNjQsNiArMTY0LDE2IEBACiAgICAgICAgIHggPSB6bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmRlY29tcHJlc3MoeCksIEhBTUxFVF9TQ0VORSkKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUsIGxldmVsPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHpsaWIuY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUsIGxldmVsPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXpsaWIuTUFYX1dCSVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplPXpsaWIuREVGX0JVRl9TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU1MRVRfU0NFTkUpCisKICAgICBkZWYgdGVzdF9zcGVlY2gxMjgoc2VsZik6CiAgICAgICAgICMgY29tcHJlc3MgbW9yZSBkYXRhCiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKQEAgLTIzNCw2ICsyNDQsMjcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkY28udW5jb25zdW1lZF90YWlsLCBieXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkY28udW51c2VkX2RhdGEsIGJ5dGVzKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZHMoc2VsZik6CisgICAgICAgIGxldmVsID0gMgorICAgICAgICBtZXRob2QgPSB6bGliLkRFRkxBVEVECisgICAgICAgIHdiaXRzID0gLTEyCisgICAgICAgIG1lbUxldmVsID0gOQorICAgICAgICBzdHJhdGVneSA9IHpsaWIuWl9GSUxURVJFRAorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmoobGV2ZWw9bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9bWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JpdHM9d2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1MZXZlbD1tZW1MZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemRpY3Q9YiIiKQorICAgICAgICBkbyA9IHpsaWIuZGVjb21wcmVzc29iaih3Yml0cz13Yml0cywgemRpY3Q9YiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjby5jb21wcmVzcyhkYXRhPUhBTUxFVF9TQ0VORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZG8uZGVjb21wcmVzcyhkYXRhPXpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FKSkKKyAgICAgICAgeCA9IGNvLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkgKyBjby5mbHVzaCgpCisgICAgICAgIHkgPSBkby5kZWNvbXByZXNzKHgsIG1heF9sZW5ndGg9bGVuKEhBTUxFVF9TQ0VORSkpICsgZG8uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeSkKKwogICAgIGRlZiB0ZXN0X2NvbXByZXNzb3B0aW9ucyhzZWxmKToKICAgICAgICAgIyBzcGVjaWZ5IGxvdHMgb2Ygb3B0aW9ucyB0byBjb21wcmVzc29iaigpCiAgICAgICAgIGxldmVsID0gMgpAQCAtMjQ5LDEwICsyODAsNiBAQAogICAgICAgICB5MiA9IGRjby5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSEFNTEVUX1NDRU5FLCB5MSArIHkyKQogCi0gICAgICAgICMga2V5d29yZCBhcmd1bWVudHMgc2hvdWxkIGFsc28gYmUgc3VwcG9ydGVkCi0gICAgICAgIHpsaWIuY29tcHJlc3NvYmoobGV2ZWw9bGV2ZWwsIG1ldGhvZD1tZXRob2QsIHdiaXRzPXdiaXRzLAotICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsIHN0cmF0ZWd5PXN0cmF0ZWd5LCB6ZGljdD1iIiIpCi0KICAgICBkZWYgdGVzdF9jb21wcmVzc2luY3JlbWVudGFsKHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG9iamVjdCBpbiBzdGVwcywgZGVjb21wcmVzcyBvYmplY3QgYXMgb25lLXNob3QKICAgICAgICAgZGF0YSA9IEhBTUxFVF9TQ0VORSAqIDEyOApkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggMDZiN2I5Yi4uNDgyOWZmNCAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0yMiw5ICsyMiwxMSBAQAogIyB3aXRoIHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlLCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgdGhlIG9sZAogIyBKYXZhIGluc3BpcmVkIG5hbWVzLgogCi1fX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCi0gICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCitfX2FsbF9fID0gWydnZXRfaWRlbnQnLCAnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsCisgICAgICAgICAgICdlbnVtZXJhdGUnLCAnbWFpbl90aHJlYWQnLCAnVElNRU9VVF9NQVgnLAorICAgICAgICAgICAnRXZlbnQnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLAorICAgICAgICAgICAnQmFycmllcicsICdCcm9rZW5CYXJyaWVyRXJyb3InLCAnVGltZXInLCAnVGhyZWFkRXJyb3InLAorICAgICAgICAgICAnc2V0cHJvZmlsZScsICdzZXR0cmFjZScsICdsb2NhbCcsICdzdGFja19zaXplJ10KIAogIyBSZW5hbWUgc29tZSBzdHVmZiBzbyAiZnJvbSB0aHJlYWRpbmcgaW1wb3J0ICoiIGlzIHNhZmUKIF9zdGFydF9uZXdfdGhyZWFkID0gX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkCmRpZmYgLS1naXQgYS9MaWIvdGltZWl0LnB5IGIvTGliL3RpbWVpdC5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDJkZTg4ZjcuLjI3NzBlZmEKLS0tIGEvTGliL3RpbWVpdC5weQorKysgYi9MaWIvdGltZWl0LnB5CkBAIC0yMDcsNiArMjA3LDI2IEBACiAgICAgICAgICAgICByLmFwcGVuZCh0KQogICAgICAgICByZXR1cm4gcgogCisgICAgZGVmIGF1dG9yYW5nZShzZWxmLCBjYWxsYmFjaz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgbG9vcHMgc28gdGhhdCB0b3RhbCB0aW1lID49IDAuMi4KKworICAgICAgICBDYWxscyB0aGUgdGltZWl0IG1ldGhvZCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZgorICAgICAgICB0ZW4gKDEwLCAxMDAsIDEwMDAsIC4uLikgdXAgdG8gYSBtYXhpbXVtIG9mIG9uZSBiaWxsaW9uLCB1bnRpbAorICAgICAgICB0aGUgdGltZSB0YWtlbiBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kLCBvciB0aGUgbWF4aW11bSBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGBgKG51bWJlciwgdGltZV90YWtlbilgYC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgTm9uZSwgaXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKKyAgICAgICAgZWFjaCB0cmlhbCB3aXRoIHR3byBhcmd1bWVudHM6IGBgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKWBgLgorICAgICAgICAiIiIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgorICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKKyAgICAgICAgICAgIHRpbWVfdGFrZW4gPSBzZWxmLnRpbWVpdChudW1iZXIpCisgICAgICAgICAgICBpZiBjYWxsYmFjazoKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pCisgICAgICAgICAgICBpZiB0aW1lX3Rha2VuID49IDAuMjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICByZXR1cm4gKG51bWJlciwgdGltZV90YWtlbikKKwogZGVmIHRpbWVpdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAogICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIFRpbWVyIG9iamVjdCBhbmQgY2FsbCB0aW1laXQgbWV0aG9kLiIiIgpAQCAtMjk1LDE3ICszMTUsMTYgQEAKICAgICB0ID0gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyKQogICAgIGlmIG51bWJlciA9PSAwOgogICAgICAgICAjIGRldGVybWluZSBudW1iZXIgc28gdGhhdCAwLjIgPD0gdG90YWwgdGltZSA8IDIuMAotICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgICAgICAgICBudW1iZXIgPSAxMCoqaQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHggPSB0LnRpbWVpdChudW1iZXIpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgdC5wcmludF9leGMoKQotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCIlZCBsb29wcyAtPiAlLipnIHNlY3MiICUgKG51bWJlciwgcHJlY2lzaW9uLCB4KSkKLSAgICAgICAgICAgIGlmIHggPj0gMC4yOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGNhbGxiYWNrID0gTm9uZQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgZGVmIGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbik6CisgICAgICAgICAgICAgICAgbXNnID0gIntudW19IGxvb3BzIC0+IHtzZWNzOi57cHJlY31nfSBzZWNzIgorICAgICAgICAgICAgICAgIHByaW50KG1zZy5mb3JtYXQobnVtPW51bWJlciwgc2Vjcz10aW1lX3Rha2VuLCBwcmVjPXByZWNpc2lvbikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG51bWJlciwgXyA9IHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICB0LnByaW50X2V4YygpCisgICAgICAgICAgICByZXR1cm4gMQogICAgIHRyeToKICAgICAgICAgciA9IHQucmVwZWF0KHJlcGVhdCwgbnVtYmVyKQogICAgIGV4Y2VwdDoKQEAgLTMxNywyMCArMzM2LDI2IEBACiAgICAgcHJpbnQoIiVkIGxvb3BzLCIgJSBudW1iZXIsIGVuZD0nICcpCiAgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKICAgICBpZiB0aW1lX3VuaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWMvdW5pdHNbdGltZV91bml0XSwgdGltZV91bml0KSkKKyAgICAgICAgc2NhbGUgPSB1bml0c1t0aW1lX3VuaXRdCiAgICAgZWxzZToKLSAgICAgICAgaWYgdXNlYyA8IDEwMDA6Ci0gICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyB1c2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgdXNlYykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2VjID0gdXNlYyAvIDEwMDAKLSAgICAgICAgICAgIGlmIG1zZWMgPCAxMDAwOgotICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIG1zZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIG1zZWMpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWMgPSBtc2VjIC8gMTAwMAotICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBzZWMpKQorICAgICAgICBzY2FsZXMgPSBbKHNjYWxlLCB1bml0KSBmb3IgdW5pdCwgc2NhbGUgaW4gdW5pdHMuaXRlbXMoKV0KKyAgICAgICAgc2NhbGVzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICBmb3Igc2NhbGUsIHRpbWVfdW5pdCBpbiBzY2FsZXM6CisgICAgICAgICAgICBpZiB1c2VjID49IHNjYWxlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgJXMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3NjYWxlLCB0aW1lX3VuaXQpKQorICAgIGJlc3QgPSBtaW4ocikKKyAgICB1c2VjID0gYmVzdCAqIDFlNiAvIG51bWJlcgorICAgIHdvcnN0ID0gbWF4KHIpCisgICAgaWYgd29yc3QgPj0gYmVzdCAqIDQ6CisgICAgICAgIHVzZWMgPSB3b3JzdCAqIDFlNiAvIG51bWJlcgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2Fybl9leHBsaWNpdCgKKyAgICAgICAgICAgICJUaGUgdGVzdCByZXN1bHRzIGFyZSBsaWtlbHkgdW5yZWxpYWJsZS4gVGhlIHdvcnN0XG4iCisgICAgICAgICAgICAidGltZSAoJS4qZyAlcykgd2FzIG1vcmUgdGhhbiBmb3VyIHRpbWVzIHNsb3dlciB0aGFuIHRoZSBiZXN0IHRpbWUuIiAlCisgICAgICAgICAgICAocHJlY2lzaW9uLCB1c2VjL3NjYWxlLCB0aW1lX3VuaXQpLAorICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAnJywgMCkKICAgICByZXR1cm4gTm9uZQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCAxZWFhYjQ0Li5lZTI0MTVkIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsNiArMzAsNyBAQAogdGsubWFpbmxvb3AoKQogIiIiCiAKK2ltcG9ydCBlbnVtCiBpbXBvcnQgc3lzCiAKIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawpAQCAtMTMyLDYgKzEzMyw1MCBAQAogICAgICAgICBkaWN0W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiBkaWN0CiAKKworY2xhc3MgRXZlbnRUeXBlKHN0ciwgZW51bS5FbnVtKToKKyAgICBLZXlQcmVzcyA9ICcyJworICAgIEtleSA9IEtleVByZXNzLAorICAgIEtleVJlbGVhc2UgPSAnMycKKyAgICBCdXR0b25QcmVzcyA9ICc0JworICAgIEJ1dHRvbiA9IEJ1dHRvblByZXNzLAorICAgIEJ1dHRvblJlbGVhc2UgPSAnNScKKyAgICBNb3Rpb24gPSAnNicKKyAgICBFbnRlciA9ICc3JworICAgIExlYXZlID0gJzgnCisgICAgRm9jdXNJbiA9ICc5JworICAgIEZvY3VzT3V0ID0gJzEwJworICAgIEtleW1hcCA9ICcxMScgICAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgRXhwb3NlID0gJzEyJworICAgIEdyYXBoaWNzRXhwb3NlID0gJzEzJyAgICMgdW5kb2N1bWVudGVkCisgICAgTm9FeHBvc2UgPSAnMTQnICAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBWaXNpYmlsaXR5ID0gJzE1JworICAgIENyZWF0ZSA9ICcxNicKKyAgICBEZXN0cm95ID0gJzE3JworICAgIFVubWFwID0gJzE4JworICAgIE1hcCA9ICcxOScKKyAgICBNYXBSZXF1ZXN0ID0gJzIwJworICAgIFJlcGFyZW50ID0gJzIxJworICAgIENvbmZpZ3VyZSA9ICcyMicKKyAgICBDb25maWd1cmVSZXF1ZXN0ID0gJzIzJworICAgIEdyYXZpdHkgPSAnMjQnCisgICAgUmVzaXplUmVxdWVzdCA9ICcyNScKKyAgICBDaXJjdWxhdGUgPSAnMjYnCisgICAgQ2lyY3VsYXRlUmVxdWVzdCA9ICcyNycKKyAgICBQcm9wZXJ0eSA9ICcyOCcKKyAgICBTZWxlY3Rpb25DbGVhciA9ICcyOScgICAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvblJlcXVlc3QgPSAnMzAnICMgdW5kb2N1bWVudGVkCisgICAgU2VsZWN0aW9uID0gJzMxJyAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBDb2xvcm1hcCA9ICczMicKKyAgICBDbGllbnRNZXNzYWdlID0gJzMzJyAgICAjIHVuZG9jdW1lbnRlZAorICAgIE1hcHBpbmcgPSAnMzQnICAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlydHVhbEV2ZW50ID0gJzM1JywgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBBY3RpdmF0ZSA9ICczNicsCisgICAgRGVhY3RpdmF0ZSA9ICczNycsCisgICAgTW91c2VXaGVlbCA9ICczOCcsCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKwogY2xhc3MgRXZlbnQ6CiAgICAgIiIiQ29udGFpbmVyIGZvciB0aGUgcHJvcGVydGllcyBvZiBhbiBldmVudC4KIApAQCAtMTc0LDcgKzIxOSw0MyBAQAogICAgIHdpZGdldCAtIHdpZGdldCBpbiB3aGljaCB0aGUgZXZlbnQgb2NjdXJyZWQKICAgICBkZWx0YSAtIGRlbHRhIG9mIHdoZWVsIG1vdmVtZW50IChNb3VzZVdoZWVsKQogICAgICIiIgotICAgIHBhc3MKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGF0dHJzID0ge2s6IHYgZm9yIGssIHYgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpIGlmIHYgIT0gJz8/J30KKyAgICAgICAgaWYgbm90IHNlbGYuY2hhcjoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snY2hhciddCisgICAgICAgIGVsaWYgc2VsZi5jaGFyICE9ICc/Pyc6CisgICAgICAgICAgICBhdHRyc1snY2hhciddID0gcmVwcihzZWxmLmNoYXIpCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsICdzZW5kX2V2ZW50JywgVHJ1ZSk6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ3NlbmRfZXZlbnQnXQorICAgICAgICBpZiBzZWxmLnN0YXRlID09IDA6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ3N0YXRlJ10KKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYuc3RhdGUsIGludCk6CisgICAgICAgICAgICBzdGF0ZSA9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgIG1vZHMgPSAoJ1NoaWZ0JywgJ0xvY2snLCAnQ29udHJvbCcsCisgICAgICAgICAgICAgICAgICAgICdNb2QxJywgJ01vZDInLCAnTW9kMycsICdNb2Q0JywgJ01vZDUnLAorICAgICAgICAgICAgICAgICAgICAnQnV0dG9uMScsICdCdXR0b24yJywgJ0J1dHRvbjMnLCAnQnV0dG9uNCcsICdCdXR0b241JykKKyAgICAgICAgICAgIHMgPSBbXQorICAgICAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKG1vZHMpOgorICAgICAgICAgICAgICAgIGlmIHN0YXRlICYgKDEgPDwgaSk6CisgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKG4pCisgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlICYgfigoMTw8IGxlbihtb2RzKSkgLSAxKQorICAgICAgICAgICAgaWYgc3RhdGUgb3Igbm90IHM6CisgICAgICAgICAgICAgICAgcy5hcHBlbmQoaGV4KHN0YXRlKSkKKyAgICAgICAgICAgIGF0dHJzWydzdGF0ZSddID0gJ3wnLmpvaW4ocykKKyAgICAgICAgaWYgc2VsZi5kZWx0YSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydkZWx0YSddCisgICAgICAgICMgd2lkZ2V0IHVzdWFsbHkgaXMga25vd24KKyAgICAgICAgIyBzZXJpYWwgYW5kIHRpbWUgYXJlIG5vdCB2ZXJ5IGludGVyZXN0aW5nCisgICAgICAgICMga2V5c3ltX251bSBkdXBsaWNhdGVzIGtleXN5bQorICAgICAgICAjIHhfcm9vdCBhbmQgeV9yb290IG1vc3RseSBkdXBsaWNhdGUgeCBhbmQgeQorICAgICAgICBrZXlzID0gKCdzZW5kX2V2ZW50JywKKyAgICAgICAgICAgICAgICAnc3RhdGUnLCAna2V5c3ltJywgJ2tleWNvZGUnLCAnY2hhcicsCisgICAgICAgICAgICAgICAgJ251bScsICdkZWx0YScsICdmb2N1cycsCisgICAgICAgICAgICAgICAgJ3gnLCAneScsICd3aWR0aCcsICdoZWlnaHQnKQorICAgICAgICByZXR1cm4gJzwlcyBldmVudCVzPicgJSAoCisgICAgICAgICAgICBzZWxmLnR5cGUsCisgICAgICAgICAgICAnJy5qb2luKCcgJXM9JXMnICUgKGssIGF0dHJzW2tdKSBmb3IgayBpbiBrZXlzIGlmIGsgaW4gYXR0cnMpCisgICAgICAgICkKIAogX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQogX2RlZmF1bHRfcm9vdCA9IE5vbmUKQEAgLTI2MiwxNSArMzQzLDggQEAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdmFsdWUgb2YgdmFyaWFibGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkKLSAgICBkZWYgdHJhY2VfdmFyaWFibGUoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgotICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgogCi0gICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KLSAgICAgICAgQ0FMTEJBQ0sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuCi0gICAgICAgIHRoZSB2YXJpYWJsZSBpcyByZWFkLCB3cml0dGVuIG9yIHVuZGVmaW5lZC4KLQotICAgICAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrLgotICAgICAgICAiIiIKKyAgICBkZWYgX3JlZ2lzdGVyKHNlbGYsIGNhbGxiYWNrKToKICAgICAgICAgZiA9IENhbGxXcmFwcGVyKGNhbGxiYWNrLCBOb25lLCBzZWxmLl9yb290KS5fX2NhbGxfXwogICAgICAgICBjYm5hbWUgPSByZXByKGlkKGYpKQogICAgICAgICB0cnk6CkBAIC0yODUsMTggKzM1OSwzMyBAQAogICAgICAgICBpZiBzZWxmLl90Y2xDb21tYW5kcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMgPSBbXQogICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5hcHBlbmQoY2JuYW1lKQotICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKICAgICAgICAgcmV0dXJuIGNibmFtZQotICAgIHRyYWNlID0gdHJhY2VfdmFyaWFibGUKLSAgICBkZWYgdHJhY2VfdmRlbGV0ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgorCisgICAgZGVmIHRyYWNlX2FkZChzZWxmLCBtb2RlLCBjYWxsYmFjayk6CisgICAgICAgICIiIkRlZmluZSBhIHRyYWNlIGNhbGxiYWNrIGZvciB0aGUgdmFyaWFibGUuCisKKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiLCBvciBhIGxpc3Qgb3IgdHVwbGUgb2YKKyAgICAgICAgc3VjaCBzdHJpbmdzLgorICAgICAgICBDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIHZhcmlhYmxlIGlzCisgICAgICAgIHJlYWQsIHdyaXR0ZW4gb3IgdW5zZXQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKyAgICAgICAgIiIiCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCd0cmFjZScsICdhZGQnLCAndmFyaWFibGUnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUsIG1vZGUsIChjYm5hbWUsKSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgZGVmIHRyYWNlX3JlbW92ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgogICAgICAgICAiIiJEZWxldGUgdGhlIHRyYWNlIGNhbGxiYWNrIGZvciBhIHZhcmlhYmxlLgogCi0gICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KLSAgICAgICAgQ0JOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX3ZhcmlhYmxlIG9yIHRyYWNlLgorICAgICAgICBNb2RlIGlzIG9uZSBvZiAicmVhZCIsICJ3cml0ZSIsICJ1bnNldCIgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4gIE11c3QgYmUgc2FtZSBhcyB3ZXJlIHNwZWNpZmllZCBpbiB0cmFjZV9hZGQoKS4KKyAgICAgICAgY2JuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX2FkZCgpLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmRlbGV0ZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKLSAgICAgICAgY2JuYW1lID0gc2VsZi5fdGsuc3BsaXRsaXN0KGNibmFtZSlbMF0KLSAgICAgICAgZm9yIG0sIGNhIGluIHNlbGYudHJhY2VfdmluZm8oKToKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAncmVtb3ZlJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKICAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CkBAIC0zMDUsMTAgKzM5NCw2NCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzLnJlbW92ZShjYm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorCisgICAgZGVmIHRyYWNlX2luZm8oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhbGwgdHJhY2UgY2FsbGJhY2sgaW5mb3JtYXRpb24uIiIiCisgICAgICAgIHNwbGl0bGlzdCA9IHNlbGYuX3RrLnNwbGl0bGlzdAorICAgICAgICByZXR1cm4gWyhzcGxpdGxpc3QoayksIHYpIGZvciBrLCB2IGluIG1hcChzcGxpdGxpc3QsCisgICAgICAgICAgICBzcGxpdGxpc3Qoc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnaW5mbycsICd2YXJpYWJsZScsIHNlbGYuX25hbWUpKSldCisKKyAgICBkZWYgdHJhY2VfdmFyaWFibGUoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KKyAgICAgICAgQ0FMTEJBQ0sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuCisgICAgICAgIHRoZSB2YXJpYWJsZSBpcyByZWFkLCB3cml0dGVuIG9yIHVuZGVmaW5lZC4KKworICAgICAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfYWRkKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAgICAgICAgY2JuYW1lID0gc2VsZi5fcmVnaXN0ZXIoY2FsbGJhY2spCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZhcmlhYmxlIiwgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICByZXR1cm4gY2JuYW1lCisKKyAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCisKKyAgICBkZWYgdHJhY2VfdmRlbGV0ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgorICAgICAgICAiIiJEZWxldGUgdGhlIHRyYWNlIGNhbGxiYWNrIGZvciBhIHZhcmlhYmxlLgorCisgICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KKyAgICAgICAgQ0JOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX3ZhcmlhYmxlIG9yIHRyYWNlLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfcmVtb3ZlKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmRlbGV0ZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgY2JuYW1lID0gc2VsZi5fdGsuc3BsaXRsaXN0KGNibmFtZSlbMF0KKyAgICAgICAgZm9yIG0sIGNhIGluIHNlbGYudHJhY2VfaW5mbygpOgorICAgICAgICAgICAgaWYgc2VsZi5fdGsuc3BsaXRsaXN0KGNhKVswXSA9PSBjYm5hbWU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3RrLmRlbGV0ZWNvbW1hbmQoY2JuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzLnJlbW92ZShjYm5hbWUpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdHJhY2VfdmluZm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiBhbGwgdHJhY2UgY2FsbGJhY2sgaW5mb3JtYXRpb24uCisKKyAgICAgICAgVGhpcyBkZXByZWNhdGVkIG1ldGhvZCB3cmFwcyBhIGRlcHJlY2F0ZWQgVGNsIG1ldGhvZCB0aGF0IHdpbGwKKyAgICAgICAgbGlrZWx5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gIFVzZSB0cmFjZV9pbmZvKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKICAgICAgICAgcmV0dXJuIFtzZWxmLl90ay5zcGxpdGxpc3QoeCkgZm9yIHggaW4gc2VsZi5fdGsuc3BsaXRsaXN0KAogICAgICAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmluZm8iLCBzZWxmLl9uYW1lKSldCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgIiIiQ29tcGFyaXNvbiBmb3IgZXF1YWxpdHkgKD09KS4KIApAQCAtNDMwLDYgKzU3Myw5IEBACiAKICAgICBCYXNlIGNsYXNzIHdoaWNoIGRlZmluZXMgbWV0aG9kcyBjb21tb24gZm9yIGludGVyaW9yIHdpZGdldHMuIiIiCiAKKyAgICAjIHVzZWQgZm9yIGdlbmVyYXRpbmcgY2hpbGQgd2lkZ2V0IG5hbWVzCisgICAgX2xhc3RfY2hpbGRfaWRzID0gTm9uZQorCiAgICAgIyBYWFggZm9udCBjb21tYW5kPwogICAgIF90Y2xDb21tYW5kcyA9IE5vbmUKICAgICBkZWYgZGVzdHJveShzZWxmKToKQEAgLTQ3NywxMiArNjIzLDYgQEAKICAgICAgICAgZGlzYWJsZWRGb3JlZ3JvdW5kLCBpbnNlcnRCYWNrZ3JvdW5kLCB0cm91Z2hDb2xvci4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKCgndGtfc2V0UGFsZXR0ZScsKQogICAgICAgICAgICAgICArIF9mbGF0dGVuKGFyZ3MpICsgX2ZsYXR0ZW4obGlzdChrdy5pdGVtcygpKSkpCi0gICAgZGVmIHRrX21lbnVCYXIoc2VsZiwgKmFyZ3MpOgotICAgICAgICAiIiJEbyBub3QgdXNlLiBOZWVkZWQgaW4gVGsgMy42IGFuZCBlYXJsaWVyLiIiIgotICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigndGtfbWVudUJhcigpIGRvZXMgbm90aGluZyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIHdhaXRfdmFyaWFibGUoc2VsZiwgbmFtZT0nUFlfVkFSJyk6CiAgICAgICAgICIiIldhaXQgdW50aWwgdGhlIHZhcmlhYmxlIGlzIG1vZGlmaWVkLgogCkBAIC04NTQsOCArOTk0LDcgQEAKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2lkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaWRlbnRpZmllciBJRCBmb3IgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKLSAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaWQnLCBzZWxmLl93KSkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdyksIDApCiAgICAgZGVmIHdpbmZvX2ludGVycHMoc2VsZiwgZGlzcGxheW9mPTApOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgYWxsIFRjbCBpbnRlcnByZXRlcnMgZm9yIHRoaXMgZGlzcGxheS4iIiIKICAgICAgICAgYXJncyA9ICgnd2luZm8nLCAnaW50ZXJwcycpICsgc2VsZi5fZGlzcGxheW9mKGRpc3BsYXlvZikKQEAgLTk3NSwxOCArMTExNCwxNiBAQAogICAgIGRlZiB3aW5mb192aXN1YWxpZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBYIGlkZW50aWZpZXIgZm9yIHRoZSB2aXN1YWwgZm9yIHRoaXMgd2lkZ2V0LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aXN1YWxpZCcsIHNlbGYuX3cpCi0gICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz0wKToKKyAgICBkZWYgd2luZm9fdmlzdWFsc2F2YWlsYWJsZShzZWxmLCBpbmNsdWRlaWRzPUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmlzdWFscyBhdmFpbGFibGUgZm9yIHRoZSBzY3JlZW4KICAgICAgICAgb2YgdGhpcyB3aWRnZXQuCiAKICAgICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IGNvbnNpc3RzIG9mIGEgdmlzdWFsIG5hbWUgKHNlZSB3aW5mb192aXN1YWwpLCBhCi0gICAgICAgIGRlcHRoIGFuZCBpZiBJTkNMVURFSURTPTEgaXMgZ2l2ZW4gYWxzbyB0aGUgWCBpZGVudGlmaWVyLiIiIgotICAgICAgICBkYXRhID0gc2VsZi50ay5zcGxpdCgKLSAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsc2F2YWlsYWJsZScsIHNlbGYuX3csCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlaWRzIGFuZCAnaW5jbHVkZWlkcycgb3IgTm9uZSkpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKLSAgICAgICAgICAgIGRhdGEgPSBbc2VsZi50ay5zcGxpdChkYXRhKV0KLSAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluICBkYXRhXQorICAgICAgICBkZXB0aCBhbmQgaWYgaW5jbHVkZWlkcyBpcyB0cnVlIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKKyAgICAgICAgZGF0YSA9IHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsc2F2YWlsYWJsZScsIHNlbGYuX3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVpZHMnIGlmIGluY2x1ZGVpZHMgZWxzZSBOb25lKQorICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYudGsuc3BsaXRsaXN0KGRhdGEpXQorICAgICAgICByZXR1cm4gW3NlbGYuX193aW5mb19wYXJzZWl0ZW0oeCkgZm9yIHggaW4gZGF0YV0KICAgICBkZWYgX193aW5mb19wYXJzZWl0ZW0oc2VsZiwgdCk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICByZXR1cm4gdFs6MV0gKyB0dXBsZShtYXAoc2VsZi5fX3dpbmZvX2dldGludCwgdFsxOl0pKQpAQCAtMTI4Nyw3ICsxNDI0LDEwIEBACiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjogcGFzcwogICAgICAgICBlLmtleXN5bSA9IEsKICAgICAgICAgZS5rZXlzeW1fbnVtID0gZ2V0aW50X2V2ZW50KE4pCi0gICAgICAgIGUudHlwZSA9IFQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZS50eXBlID0gRXZlbnRUeXBlKFQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgZS50eXBlID0gVAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlLndpZGdldCA9IHNlbGYuX25hbWV0b3dpZGdldChXKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC0xODk3LDkgKzIwMzcsNiBAQAogICAgICAgICBpZiB0Y2xfdmVyc2lvbiAhPSBfdGtpbnRlci5UQ0xfVkVSU0lPTjoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGNsLmggdmVyc2lvbiAoJXMpIGRvZXNuJ3QgbWF0Y2ggbGlidGNsLmEgdmVyc2lvbiAoJXMpIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoX3RraW50ZXIuVENMX1ZFUlNJT04sIHRjbF92ZXJzaW9uKSkKLSAgICAgICAgaWYgVGtWZXJzaW9uIDwgNC4wOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUayA0LjAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkOyBmb3VuZCBUayAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHN0cihUa1ZlcnNpb24pKQogICAgICAgICAjIENyZWF0ZSBhbmQgcmVnaXN0ZXIgdGhlIHRrZXJyb3IgYW5kIGV4aXQgY29tbWFuZHMKICAgICAgICAgIyBXZSBuZWVkIHRvIGlubGluZSBwYXJ0cyBvZiBfcmVnaXN0ZXIgaGVyZSwgXyByZWdpc3RlcgogICAgICAgICAjIHdvdWxkIHJlZ2lzdGVyIGRpZmZlcmVudGx5LW5hbWVkIGNvbW1hbmRzLgpAQCAtMjEyMiw3ICsyMjU5LDE1IEBACiAgICAgICAgICAgICBuYW1lID0gY25mWyduYW1lJ10KICAgICAgICAgICAgIGRlbCBjbmZbJ25hbWUnXQogICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSByZXByKGlkKHNlbGYpKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLmxvd2VyKCkKKyAgICAgICAgICAgIGlmIG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzID0ge30KKyAgICAgICAgICAgIGNvdW50ID0gbWFzdGVyLl9sYXN0X2NoaWxkX2lkcy5nZXQobmFtZSwgMCkgKyAxCisgICAgICAgICAgICBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzW25hbWVdID0gY291bnQKKyAgICAgICAgICAgIGlmIGNvdW50ID09IDE6CisgICAgICAgICAgICAgICAgbmFtZSA9ICchJXMnICUgKG5hbWUsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJyElcyVkJyAlIChuYW1lLCBjb3VudCkKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAgaWYgbWFzdGVyLl93PT0nLic6CiAgICAgICAgICAgICBzZWxmLl93ID0gJy4nICsgbmFtZQpAQCAtMjcxOCwxMiArMjg2Myw2IEBACiAgICAgZGVmIHRrX3BvcHVwKHNlbGYsIHgsIHksIGVudHJ5PSIiKToKICAgICAgICAgIiIiUG9zdCB0aGUgbWVudSBhdCBwb3NpdGlvbiBYLFkgd2l0aCBlbnRyeSBFTlRSWS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKCd0a19wb3B1cCcsIHNlbGYuX3csIHgsIHksIGVudHJ5KQotICAgIGRlZiB0a19iaW5kRm9yVHJhdmVyc2FsKHNlbGYpOgotICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigndGtfYmluZEZvclRyYXZlcnNhbCgpIGRvZXMgbm90aGluZyBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIHJlbW92ZWQgaW4gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJBY3RpdmF0ZSBlbnRyeSBhdCBJTkRFWC4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KQpAQCAtMzM0Niw5ICszNDg1LDYgQEAKICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICBJbWFnZS5fbGFzdF9pZCArPSAxCiAgICAgICAgICAgICBuYW1lID0gInB5aW1hZ2UlciIgJSAoSW1hZ2UuX2xhc3RfaWQsKSAjIHRrIGl0c2VsZiB3b3VsZCB1c2UgaW1hZ2U8eD4KLSAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgZm9yIHN5c3RlbXMgd2hlcmUgaWQoeCkKLSAgICAgICAgICAgICMgY2FuIHJldHVybiBhIG5lZ2F0aXZlIG51bWJlciwgc3VjaCBhcyBMaW51eC9tNjhrOgotICAgICAgICAgICAgaWYgbmFtZVswXSA9PSAnLSc6IG5hbWUgPSAnXycgKyBuYW1lWzE6XQogICAgICAgICBpZiBrdyBhbmQgY25mOiBjbmYgPSBfY25mbWVyZ2UoKGNuZiwga3cpKQogICAgICAgICBlbGlmIGt3OiBjbmYgPSBrdwogICAgICAgICBvcHRpb25zID0gKCkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weSBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQppbmRleCBkMjY4OGRiLi4xZTc1Y2FlIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CkBAIC0xNSwxMSArMTUsNiBAQAogICAgIGNvbW1hbmQgID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCAqKm9wdGlvbnMpOgotCi0gICAgICAgICMgRklYTUU6IHNob3VsZCB0aGlzIGJlIHBsYWNlZCBvbiB0aGUgbW9kdWxlIGxldmVsIGluc3RlYWQ/Ci0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMjoKLSAgICAgICAgICAgIHJhaXNlIFRjbEVycm9yKCJ0aGlzIG1vZHVsZSByZXF1aXJlcyBUayA0LjIgb3IgbmV3ZXIiKQotCiAgICAgICAgIHNlbGYubWFzdGVyICA9IG1hc3RlcgogICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIGlmIG5vdCBtYXN0ZXIgYW5kIG9wdGlvbnMuZ2V0KCdwYXJlbnQnKToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2RpYWxvZy5weSBiL0xpYi90a2ludGVyL2RpYWxvZy5weQppbmRleCBiZTA4NWFiLi5mNjFjNWY3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9kaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvZGlhbG9nLnB5CkBAIC0zLDEwICszLDcgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZnJvbSB0a2ludGVyIGltcG9ydCBfY25mbWVyZ2UKIAotaWYgVGtWZXJzaW9uIDw9IDMuNjoKLSAgICBESUFMT0dfSUNPTiA9ICd3YXJuaW5nJwotZWxzZToKLSAgICBESUFMT0dfSUNPTiA9ICdxdWVzdGhlYWQnCitESUFMT0dfSUNPTiA9ICdxdWVzdGhlYWQnCiAKIAogY2xhc3MgRGlhbG9nKFdpZGdldCk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKaW5kZXggZGJlNWU4OC4uMzNkYzU0YSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQpAQCAtNyw4ICs3LDYgQEAKICIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHRlc3Quc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKaW5kZXggODVlZTJjNy4uOWRjMWUzNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQpAQCAtMTIsNiArMTIsMTQgQEAKICAgICAgICAgZiA9IHRraW50ZXIuRnJhbWUodCwgbmFtZT0nY2hpbGQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICc8dGtpbnRlci5GcmFtZSBvYmplY3QgLnRvcC5jaGlsZD4nKQogCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVkX25hbWVzKHNlbGYpOgorICAgICAgICB0ID0gdGtpbnRlci5Ub3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQpCisgICAgICAgIGYyID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBiID0gdGtpbnRlci5CdXR0b24oZjIpCisgICAgICAgIGZvciBuYW1lIGluIHN0cihiKS5zcGxpdCgnLicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuYW1lLmlzaWRlbnRpZmllcigpLCBtc2c9cmVwcihuYW1lKSkKKwogICAgIGRlZiB0ZXN0X3RrX3NldFBhbGV0dGUoc2VsZik6CiAgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKICAgICAgICAgcm9vdC50a19zZXRQYWxldHRlKCdibGFjaycpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CmluZGV4IGQ4YmE5Y2UuLjJlYjFlMTIgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC04Nyw3ICs4Nyw4IEBACiAgICAgICAgIHYuc2V0KCJ2YWx1ZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2LnNpZGVfZWZmZWN0KQogCi0gICAgZGVmIHRlc3RfdHJhY2Uoc2VsZik6CisgICAgZGVmIHRlc3RfdHJhY2Vfb2xkKHNlbGYpOgorICAgICAgICAjIE9sZCBpbnRlcmZhY2UKICAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKICAgICAgICAgdm5hbWUgPSBzdHIodikKICAgICAgICAgdHJhY2UgPSBbXQpAQCAtMTM2LDYgKzEzNyw1NSBAQAogICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1JyldKQogCisgICAgZGVmIHRlc3RfdHJhY2Uoc2VsZik6CisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCisgICAgICAgIHZuYW1lID0gc3RyKHYpCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIHJlYWRfdHJhY2VyKCphcmdzKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgoJ3JlYWQnLCkgKyBhcmdzKQorICAgICAgICBkZWYgd3JpdGVfdHJhY2VyKCphcmdzKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgoJ3dyaXRlJywpICsgYXJncykKKyAgICAgICAgdHIxID0gdi50cmFjZV9hZGQoJ3JlYWQnLCByZWFkX3RyYWNlcikKKyAgICAgICAgdHIyID0gdi50cmFjZV9hZGQoWyd3cml0ZScsICd1bnNldCddLCB3cml0ZV90cmFjZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3JlYWQnLCksIHRyMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFtdKQorCisgICAgICAgIHYuc2V0KCdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd3cml0ZScpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygncmVhZCcsIHZuYW1lLCAnJywgJ3JlYWQnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBpbmZvID0gc29ydGVkKHYudHJhY2VfaW5mbygpKQorICAgICAgICB2LnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB0cjEpICAjIFdyb25nIG1vZGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodi50cmFjZV9pbmZvKCkpLCBpbmZvKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yKToKKyAgICAgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgJ3NwYW0nKSAgIyBXcm9uZyBjb21tYW5kIG5hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodi50cmFjZV9pbmZvKCkpLCBpbmZvKQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3JlYWQnLCB0cjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50cmFjZV9pbmZvKCksIFsoKCd3cml0ZScsICd1bnNldCcpLCB0cjIpXSkKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlbCB3cml0ZV90cmFjZXIKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHYuc2V0KCdlZ2dzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd3cml0ZScpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlbCB2CisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCd3cml0ZScsIHZuYW1lLCAnJywgJ3Vuc2V0JyldKQorCiAKIGNsYXNzIFRlc3RTdHJpbmdWYXIoVGVzdEJhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKaW5kZXggYzkyNGQ1NS4uODFiNTJlYSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQpAQCAtOTEsOSArOTEsMTAgQEAKICAgICAgICAgd2lkZ2V0ID0gc2VsZi5jcmVhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpZGdldFsndXNlJ10sICcnKQogICAgICAgICBwYXJlbnQgPSBzZWxmLmNyZWF0ZShjb250YWluZXI9VHJ1ZSkKLSAgICAgICAgd2lkID0gcGFyZW50LndpbmZvX2lkKCkKLSAgICAgICAgd2lkZ2V0MiA9IHNlbGYuY3JlYXRlKHVzZT13aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHdpZGdldDJbJ3VzZSddKSwgd2lkKQorICAgICAgICB3aWQgPSBoZXgocGFyZW50LndpbmZvX2lkKCkpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdpZD13aWQpOgorICAgICAgICAgICAgd2lkZ2V0MiA9IHNlbGYuY3JlYXRlKHVzZT13aWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpZGdldDJbJ3VzZSddLCB3aWQpCiAKIAogQGFkZF9zdGFuZGFyZF9vcHRpb25zKFN0YW5kYXJkT3B0aW9uc1Rlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKaW5kZXggYzY4YTY1MC4uYTFiN2NkZiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CkBAIC0xLDYgKzEsNSBAQAogIyAtKi0gZW5jb2Rpbmc6IHV0Zi04IC0qLQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCB0dGsKIAogY2xhc3MgTW9ja1RrQXBwOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQppbmRleCA4YmQyMmQwLi4yNjc2NmE4IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQpAQCAtMTQ4Nyw2ICsxNDg3LDcgQEAKIAogCiAgICAgZGVmIHRlc3Rfc2VsZWN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uLCAnc3BhbScpCiAgICAgICAgICMgaXRlbSAnbm9uZScgZG9lc24ndCBleGlzdAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0a2ludGVyLlRjbEVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbl9zZXQsICdub25lJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fYWRkLCAnbm9uZScpCkBAIC0xNTAwLDI1ICsxNTAxLDMxIEBACiAgICAgICAgIGMzID0gc2VsZi50di5pbnNlcnQoaXRlbTEsICdlbmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGMxLCBpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGMyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMiwpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKGMxLCBpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChpdGVtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGMyLCBpdGVtMikpCiAKLSAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoaXRlbTEsIGMzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgYzIsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGMyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZSgoYzEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKGMxLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKGl0ZW0yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywpKQogCiAgICAgICAgIHNlbGYudHYuaW5zZXJ0KCcnLCAnZW5kJywgaWQ9J3dpdGggc3BhY2VzJykKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCd3aXRoIHNwYWNlcycpCkBAIC0xNTM2LDYgKzE1NDMsNDAgQEAKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGInYnl0ZXNceGUyXHg4Mlx4YWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgnYnl0ZXNceGUyXHg4Mlx4YWMnLCkpCiAKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKworICAgICAgICAjIE9sZCBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZSgoYzEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsIGl0ZW0yKSkKKworICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA3KToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAnRGVwcmVjYXRlZCBBUEkgb2YgVHJlZXZpZXcuc2VsZWN0aW9uKCkgc2hvdWxkIGJlIHJlbW92ZWQnKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCdzZXQnLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignYWRkJywgKGMxLCBpdGVtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCdyZW1vdmUnLCAoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigndG9nZ2xlJywgKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi50di5zZWxlY3Rpb24oTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxlY3Rpb24sIChjMywgaXRlbTIpKQogCiAgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgogICAgICAgICBzZWxmLnR2Wydjb2x1bW5zJ10gPSBbJ0EnLCAnQiddCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90aXgucHkgYi9MaWIvdGtpbnRlci90aXgucHkKaW5kZXggYTEwMDZiZC4uZDljMDk3YSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGl4LnB5CisrKyBiL0xpYi90a2ludGVyL3RpeC5weQpAQCAtMjcsMTAgKzI3LDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZnJvbSB0a2ludGVyIGltcG9ydCBfY25mbWVyZ2UKIAotIyBXQVJOSU5HIC0gVGtWZXJzaW9uIGlzIGEgbGltaXRlZCBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyCi1pZiBUa1ZlcnNpb24gPCAzLjk5OToKLSAgICByYWlzZSBJbXBvcnRFcnJvcigiVGhpcyB2ZXJzaW9uIG9mIFRpeC5weSByZXF1aXJlcyBUayA0LjAgb3IgaGlnaGVyIikKLQogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiAKICMgU29tZSBtb3JlIGNvbnN0YW50cyAoZm9yIGNvbnNpc3RlbmN5IHdpdGggVGtpbnRlcikKQEAgLTQ3MiwxNiArNDY4LDE3IEBACiAgICAgIiIiRGlzcGxheVN0eWxlIC0gaGFuZGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaGFyZWQgYnkKICAgICAobXVsdGlwbGUpIERpc3BsYXkgSXRlbXMiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtdHlwZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgaWYgJ3JlZndpbmRvdycgaW4ga3c6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBrd1sncmVmd2luZG93J10KLSAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBjbmZbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKLSAgICAgICAgICAgIGlmIG5vdCBtYXN0ZXI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUb28gZWFybHkgdG8gY3JlYXRlIGRpc3BsYXkgc3R5bGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiwgbWFzdGVyPU5vbmUsICoqa3cpOgorICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgaWYgJ3JlZndpbmRvdycgaW4ga3c6CisgICAgICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCisgICAgICAgICAgICBlbGlmICdyZWZ3aW5kb3cnIGluIGNuZjoKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSBjbmZbJ3JlZndpbmRvdyddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1hc3RlciA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAorICAgICAgICAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gcm9vdCB3aW5kb3ciKQogICAgICAgICBzZWxmLnRrID0gbWFzdGVyLnRrCiAgICAgICAgIHNlbGYuc3R5bGVuYW1lID0gc2VsZi50ay5jYWxsKCd0aXhEaXNwbGF5U3R5bGUnLCBpdGVtdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2VsZi5fb3B0aW9ucyhjbmYsa3cpICkKQEAgLTExMTYsNyArMTExMyw3IEBACiAKICAgICBkZWYgcGFnZXMoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgY2FsbCBzdWJ3aWRnZXRzX2FsbCBkaXJlY3RseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgLm5iZnJhbWUKLSAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKKyAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnN1YndpZGdldCh4KSkKQEAgLTExNjIsNyArMTE1OSw3IEBACiAKICAgICBkZWYgcGFnZXMoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgY2FsbCBzdWJ3aWRnZXRzX2FsbCBkaXJlY3RseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgLm5iZnJhbWUKLSAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKKyAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnN1YndpZGdldCh4KSkKQEAgLTE1ODUsOCArMTU4Miw3IEBACiAgICAgICAgICcnJ1JldHVybnMgYSBsaXN0IG9mIGl0ZW1zIHdob3NlIHN0YXR1cyBtYXRjaGVzIHN0YXR1cy4gSWYgc3RhdHVzIGlzCiAgICAgIG5vdCBzcGVjaWZpZWQsIHRoZSBsaXN0IG9mIGl0ZW1zIGluIHRoZSAib24iIHN0YXR1cyB3aWxsIGJlIHJldHVybmVkLgogICAgICBNb2RlIGNhbiBiZSBvbiwgb2ZmLCBkZWZhdWx0JycnCi0gICAgICAgIGMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChjKQorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdnZXRzZWxlY3Rpb24nLCBtb2RlKSkKIAogICAgIGRlZiBnZXRzdGF0dXMoc2VsZiwgZW50cnlwYXRoKToKICAgICAgICAgJycnUmV0dXJucyB0aGUgY3VycmVudCBzdGF0dXMgb2YgZW50cnlQYXRoLicnJwpAQCAtMTkwNyw3ICsxOTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG9yIGEgcmVhbCBudW1iZXIgZm9sbG93aW5nIGJ5IHRoZSB3b3JkIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAzLjRjaGFycykgdGhhdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScsICdjb2x1bW4nLCBpbmRleCwKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScsICdjb2x1bW4nLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgc2l6ZV9yb3coc2VsZiwgaW5kZXgsICoqa3cpOgpAQCAtMTkzMiw3ICsxOTI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG9yIGEgcmVhbCBudW1iZXIgZm9sbG93aW5nIGJ5IHRoZSB3b3JkIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAzLjRjaGFycykgdGhhdCBzZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHJvdyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYsICdzaXplJywgJ3JvdycsIGluZGV4LCAqc2VsZi5fb3B0aW9ucyh7fSwga3cpKSkKIAogICAgIGRlZiB1bnNldChzZWxmLCB4LCB5KToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3R0ay5weSBiL0xpYi90a2ludGVyL3R0ay5weQppbmRleCBmNGE2ZDhjLi5jNDc0ZTYwIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90dGsucHkKKysrIGIvTGliL3RraW50ZXIvdHRrLnB5CkBAIC0yOCw2ICsyOCw4IEBACiBpbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCBfZmxhdHRlbiwgX2pvaW4sIF9zdHJpbmdpZnksIF9zcGxpdGRpY3QKIAorX3NlbnRpbmVsID0gb2JqZWN0KCkKKwogIyBWZXJpZnkgaWYgVGsgaXMgbmV3IGVub3VnaCB0byBub3QgbmVlZCB0aGUgVGlsZSBwYWNrYWdlCiBfUkVRVUlSRV9USUxFID0gVHJ1ZSBpZiB0a2ludGVyLlRrVmVyc2lvbiA8IDguNSBlbHNlIEZhbHNlCiAKQEAgLTM4MSw3ICszODMsOSBAQAogICAgICAgICBhIHNlcXVlbmNlIGlkZW50aWZ5aW5nIHRoZSB2YWx1ZSBmb3IgdGhhdCBvcHRpb24uIiIiCiAgICAgICAgIGlmIHF1ZXJ5X29wdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3W3F1ZXJ5X29wdF0gPSBOb25lCi0gICAgICAgIHJldHVybiBfdmFsX29yX2RpY3Qoc2VsZi50aywga3csIHNlbGYuX25hbWUsICJjb25maWd1cmUiLCBzdHlsZSkKKyAgICAgICAgcmVzdWx0ID0gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIGlmIHJlc3VsdCBvciBxdWVyeV9vcHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAogICAgIGRlZiBtYXAoc2VsZiwgc3R5bGUsIHF1ZXJ5X29wdD1Ob25lLCAqKmt3KToKQEAgLTQ2NiwxMiArNDcwLDE0IEBACiAKICAgICBkZWYgZWxlbWVudF9uYW1lcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgbGlzdCBvZiBlbGVtZW50cyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHRoZW1lLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm5hbWVzIikpCisgICAgICAgIHJldHVybiB0dXBsZShuLmxzdHJpcCgnLScpIGZvciBuIGluIHNlbGYudGsuc3BsaXRsaXN0KAorICAgICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm5hbWVzIikpKQogCiAKICAgICBkZWYgZWxlbWVudF9vcHRpb25zKHNlbGYsIGVsZW1lbnRuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGVsZW1lbnRuYW1lJ3Mgb3B0aW9ucy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJvcHRpb25zIiwgZWxlbWVudG5hbWUpKQorICAgICAgICByZXR1cm4gdHVwbGUoby5sc3RyaXAoJy0nKSBmb3IgbyBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJvcHRpb25zIiwgZWxlbWVudG5hbWUpKSkKIAogCiAgICAgZGVmIHRoZW1lX2NyZWF0ZShzZWxmLCB0aGVtZW5hbWUsIHBhcmVudD1Ob25lLCBzZXR0aW5ncz1Ob25lKToKQEAgLTEzOTAsMzEgKzEzOTYsNTMgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWUiLCBpdGVtKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPU5vbmUsIGl0ZW1zPU5vbmUpOgotICAgICAgICAiIiJJZiBzZWxvcCBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHNlbGVjdGVkIGl0ZW1zLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW1zLCAoc3RyLCBieXRlcykpOgotICAgICAgICAgICAgaXRlbXMgPSAoaXRlbXMsKQorICAgIGRlZiBzZWxlY3Rpb24oc2VsZiwgc2Vsb3A9X3NlbnRpbmVsLCBpdGVtcz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgdHVwbGUgb2Ygc2VsZWN0ZWQgaXRlbXMuIiIiCisgICAgICAgIGlmIHNlbG9wIGlzIF9zZW50aW5lbDoKKyAgICAgICAgICAgIHNlbG9wID0gTm9uZQorICAgICAgICBlbGlmIHNlbG9wIGlzIE5vbmU6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgIlRoZSBzZWxvcD1Ob25lIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjciLAorICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMykKKyAgICAgICAgZWxpZiBzZWxvcCBpbiAoJ3NldCcsICdhZGQnLCAncmVtb3ZlJywgJ3RvZ2dsZScpOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3AgYXJndW1lbnQgb2Ygc2VsZWN0aW9uKCkgaXMgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNywgIgorICAgICAgICAgICAgICAgICJ1c2Ugc2VsZWN0aW9uXyVzKCkgaW5zdGVhZCIgJSAoc2Vsb3AsKSwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1Vuc3VwcG9ydGVkIG9wZXJhdGlvbicpCiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgInNlbGVjdGlvbiIsIHNlbG9wLCBpdGVtcykpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fc2V0KHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiaXRlbXMgYmVjb21lcyB0aGUgbmV3IHNlbGVjdGlvbi4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQorICAgIGRlZiBfc2VsZWN0aW9uKHNlbGYsIHNlbG9wLCBpdGVtcyk6CisgICAgICAgIGlmIGxlbihpdGVtcykgPT0gMSBhbmQgaXNpbnN0YW5jZShpdGVtc1swXSwgKHR1cGxlLCBsaXN0KSk6CisgICAgICAgICAgICBpdGVtcyA9IGl0ZW1zWzBdCisKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fYWRkKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiQWRkIGl0ZW1zIHRvIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUaGUgc3BlY2lmaWVkIGl0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigic2V0IiwgaXRlbXMpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fcmVtb3ZlKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiUmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNlbGVjdGlvbi4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorICAgIGRlZiBzZWxlY3Rpb25fYWRkKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIkFkZCBhbGwgb2YgdGhlIHNwZWNpZmllZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oImFkZCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlRvZ2dsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGVhY2ggaXRlbSBpbiBpdGVtcy4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQorICAgIGRlZiBzZWxlY3Rpb25fcmVtb3ZlKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIlJlbW92ZSBhbGwgb2YgdGhlIHNwZWNpZmllZCBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigicmVtb3ZlIiwgaXRlbXMpCisKKworICAgIGRlZiBzZWxlY3Rpb25fdG9nZ2xlKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIlRvZ2dsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGVhY2ggc3BlY2lmaWVkIGl0ZW0uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigidG9nZ2xlIiwgaXRlbXMpCiAKIAogICAgIGRlZiBzZXQoc2VsZiwgaXRlbSwgY29sdW1uPU5vbmUsIHZhbHVlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IGIxZDBjODMuLjgyNWFhOTAgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSBpbyBpbXBvcnQgVGV4dElPV3JhcHBlcgogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCitpbXBvcnQgaXRlcnRvb2xzIGFzIF9pdGVydG9vbHMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSB0b2tlbiBpbXBvcnQgKgpAQCAtMTE5LDE5ICsxMjAsNDEgQEAKIElnbm9yZSA9IFdoaXRlc3BhY2UgKyBhbnkocidcXFxyP1xuJyArIFdoaXRlc3BhY2UpICsgbWF5YmUoQ29tbWVudCkKIE5hbWUgPSByJ1x3KycKIAotSGV4bnVtYmVyID0gcicwW3hYXVswLTlhLWZBLUZdKycKLUJpbm51bWJlciA9IHInMFtiQl1bMDFdKycKLU9jdG51bWJlciA9IHInMFtvT11bMC03XSsnCi1EZWNudW1iZXIgPSByJyg/OjArfFsxLTldWzAtOV0qKScKK0hleG51bWJlciA9IHInMFt4WF0oPzpfP1swLTlhLWZBLUZdKSsnCitCaW5udW1iZXIgPSByJzBbYkJdKD86Xz9bMDFdKSsnCitPY3RudW1iZXIgPSByJzBbb09dKD86Xz9bMC03XSkrJworRGVjbnVtYmVyID0gcicoPzowKD86Xz8wKSp8WzEtOV0oPzpfP1swLTldKSopJwogSW50bnVtYmVyID0gZ3JvdXAoSGV4bnVtYmVyLCBCaW5udW1iZXIsIE9jdG51bWJlciwgRGVjbnVtYmVyKQotRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKycKLVBvaW50ZmxvYXQgPSBncm91cChyJ1swLTldK1wuWzAtOV0qJywgcidcLlswLTldKycpICsgbWF5YmUoRXhwb25lbnQpCi1FeHBmbG9hdCA9IHInWzAtOV0rJyArIEV4cG9uZW50CitFeHBvbmVudCA9IHInW2VFXVstK10/WzAtOV0oPzpfP1swLTldKSonCitQb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XSg/Ol8/WzAtOV0pKlwuKD86WzAtOV0oPzpfP1swLTldKSopPycsCisgICAgICAgICAgICAgICAgICAgcidcLlswLTldKD86Xz9bMC05XSkqJykgKyBtYXliZShFeHBvbmVudCkKK0V4cGZsb2F0ID0gcidbMC05XSg/Ol8/WzAtOV0pKicgKyBFeHBvbmVudAogRmxvYXRudW1iZXIgPSBncm91cChQb2ludGZsb2F0LCBFeHBmbG9hdCkKLUltYWdudW1iZXIgPSBncm91cChyJ1swLTldK1tqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCitJbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XSg/Ol8/WzAtOV0pKltqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCiBOdW1iZXIgPSBncm91cChJbWFnbnVtYmVyLCBGbG9hdG51bWJlciwgSW50bnVtYmVyKQogCi1TdHJpbmdQcmVmaXggPSByJyg/OltiQl1bclJdP3xbclJdW2JCXT98W3VVXSk/JworIyBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZywgcGx1cyBhbGwgb2YgdGhlIHZhbGlkIHN0cmluZyBwcmVmaXhlcy4KK2RlZiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgorICAgICMgVGhlIHZhbGlkIHN0cmluZyBwcmVmaXhlcy4gT25seSBjb250YWluIHRoZSBsb3dlciBjYXNlIHZlcnNpb25zLAorICAgICMgIGFuZCBkb24ndCBjb250YWluIGFueSBwZXJtdWF0aW9ucyAoaW5jbHVkZSAnZnInLCBidXQgbm90CisgICAgIyAgJ3JmJykuIFRoZSB2YXJpb3VzIHBlcm11dGF0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzID0gWydiJywgJ3InLCAndScsICdmJywgJ2JyJywgJ2ZyJ10KKyAgICAjIGlmIHdlIGFkZCBiaW5hcnkgZi1zdHJpbmdzLCBhZGQ6IFsnZmInLCAnZmJyJ10KKyAgICByZXN1bHQgPSBzZXQoWycnXSkKKyAgICBmb3IgcHJlZml4IGluIF92YWxpZF9zdHJpbmdfcHJlZml4ZXM6CisgICAgICAgIGZvciB0IGluIF9pdGVydG9vbHMucGVybXV0YXRpb25zKHByZWZpeCk6CisgICAgICAgICAgICAjIGNyZWF0ZSBhIGxpc3Qgd2l0aCB1cHBlciBhbmQgbG93ZXIgdmVyc2lvbnMgb2YgZWFjaAorICAgICAgICAgICAgIyAgY2hhcmFjdGVyCisgICAgICAgICAgICBmb3IgdSBpbiBfaXRlcnRvb2xzLnByb2R1Y3QoKlsoYywgYy51cHBlcigpKSBmb3IgYyBpbiB0XSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZCgnJy5qb2luKHUpKQorICAgIHJldHVybiByZXN1bHQKKworZGVmIF9jb21waWxlKGV4cHIpOgorICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisKKyMgTm90ZSB0aGF0IHNpbmNlIF9hbGxfc3RyaW5nX3ByZWZpeGVzIGluY2x1ZGVzIHRoZSBlbXB0eSBzdHJpbmcsCisjICBTdHJpbmdQcmVmaXggY2FuIGJlIHRoZSBlbXB0eSBzdHJpbmcgKG1ha2luZyBpdCBvcHRpb25hbCkuCitTdHJpbmdQcmVmaXggPSBncm91cCgqX2FsbF9zdHJpbmdfcHJlZml4ZXMoKSkKIAogIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KIFNpbmdsZSA9IHIiW14nXFxdKig/OlxcLlteJ1xcXSopKiciCkBAIC0xNjksNTAgKzE5MiwyNSBAQAogUHNldWRvRXh0cmFzID0gZ3JvdXAocidcXFxyP1xufFxaJywgQ29tbWVudCwgVHJpcGxlKQogUHNldWRvVG9rZW4gPSBXaGl0ZXNwYWNlICsgZ3JvdXAoUHNldWRvRXh0cmFzLCBOdW1iZXIsIEZ1bm55LCBDb250U3RyLCBOYW1lKQogCi1kZWYgX2NvbXBpbGUoZXhwcik6Ci0gICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKKyMgRm9yIGEgZ2l2ZW4gc3RyaW5nIHByZWZpeCBwbHVzIHF1b3RlcywgZW5kcGF0cyBtYXBzIGl0IHRvIGEgcmVnZXgKKyMgIHRvIG1hdGNoIHRoZSByZW1haW5kZXIgb2YgdGhhdCBzdHJpbmcuIF9wcmVmaXggY2FuIGJlIGVtcHR5LCBmb3IKKyMgIGEgbm9ybWFsIHNpbmdsZSBvciB0cmlwbGUgcXVvdGVkIHN0cmluZyAod2l0aCBubyBwcmVmaXgpLgorZW5kcGF0cyA9IHt9Citmb3IgX3ByZWZpeCBpbiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgorICAgIGVuZHBhdHNbX3ByZWZpeCArICInIl0gPSBTaW5nbGUKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiddID0gRG91YmxlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgIicnJyJdID0gU2luZ2xlMworICAgIGVuZHBhdHNbX3ByZWZpeCArICciIiInXSA9IERvdWJsZTMKIAotZW5kcGF0cyA9IHsiJyI6IFNpbmdsZSwgJyInOiBEb3VibGUsCi0gICAgICAgICAgICInJyciOiBTaW5nbGUzLCAnIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgInInJyciOiBTaW5nbGUzLCAnciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJiJycnIjogU2luZ2xlMywgJ2IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIkInJyciOiBTaW5nbGUzLCAnQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJicicnJyI6IFNpbmdsZTMsICdiciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJiUicnJyI6IFNpbmdsZTMsICdiUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCcicnJyI6IFNpbmdsZTMsICdCciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCUicnJyI6IFNpbmdsZTMsICdCUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyYicnJyI6IFNpbmdsZTMsICdyYiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSYicnJyI6IFNpbmdsZTMsICdSYiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyQicnJyI6IFNpbmdsZTMsICdyQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSQicnJyI6IFNpbmdsZTMsICdSQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJ1JycnIjogU2luZ2xlMywgJ3UiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAotICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KLQotdHJpcGxlX3F1b3RlZCA9IHt9Ci1mb3IgdCBpbiAoIicnJyIsICciIiInLAotICAgICAgICAgICJyJycnIiwgJ3IiIiInLCAiUicnJyIsICdSIiIiJywKLSAgICAgICAgICAiYicnJyIsICdiIiIiJywgIkInJyciLCAnQiIiIicsCi0gICAgICAgICAgImJyJycnIiwgJ2JyIiIiJywgIkJyJycnIiwgJ0JyIiIiJywKLSAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInLAotICAgICAgICAgICJyYicnJyIsICdyYiIiIicsICJyQicnJyIsICdyQiIiIicsCi0gICAgICAgICAgIlJiJycnIiwgJ1JiIiIiJywgIlJCJycnIiwgJ1JCIiIiJywKLSAgICAgICAgICAidScnJyIsICd1IiIiJywgIlUnJyciLCAnVSIiIicsCi0gICAgICAgICAgKToKLSAgICB0cmlwbGVfcXVvdGVkW3RdID0gdAotc2luZ2xlX3F1b3RlZCA9IHt9Ci1mb3IgdCBpbiAoIiciLCAnIicsCi0gICAgICAgICAgInInIiwgJ3IiJywgIlInIiwgJ1IiJywKLSAgICAgICAgICAiYiciLCAnYiInLCAiQiciLCAnQiInLAotICAgICAgICAgICJiciciLCAnYnIiJywgIkJyJyIsICdCciInLAotICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICwKLSAgICAgICAgICAicmInIiwgJ3JiIicsICJyQiciLCAnckIiJywKLSAgICAgICAgICAiUmInIiwgJ1JiIicsICJSQiciLCAnUkIiJyAsCi0gICAgICAgICAgInUnIiwgJ3UiJywgIlUnIiwgJ1UiJywKLSAgICAgICAgICApOgotICAgIHNpbmdsZV9xdW90ZWRbdF0gPSB0CisjIEEgc2V0IG9mIGFsbCBvZiB0aGUgc2luZ2xlIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZyBwcmVmaXhlcywKKyMgIGluY2x1ZGluZyB0aGUgb3BlbmluZyBxdW90ZXMuCitzaW5nbGVfcXVvdGVkID0gc2V0KCkKK3RyaXBsZV9xdW90ZWQgPSBzZXQoKQorZm9yIHQgaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBmb3IgdSBpbiAodCArICciJywgdCArICInIik6CisgICAgICAgIHNpbmdsZV9xdW90ZWQuYWRkKHUpCisgICAgZm9yIHUgaW4gKHQgKyAnIiIiJywgdCArICInJyciKToKKyAgICAgICAgdHJpcGxlX3F1b3RlZC5hZGQodSkKIAogdGFic2l6ZSA9IDgKIApAQCAtNjI2LDYgKzYyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW3Rva2VuXSkKICAgICAgICAgICAgICAgICAgICAgZW5kbWF0Y2ggPSBlbmRwcm9nLm1hdGNoKGxpbmUsIHBvcykKQEAgLTYzOCwxOSArNjM3LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyID0gbGluZVtzdGFydDpdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6Ml0gaW4gc2luZ2xlX3F1b3RlZCBvciBcCi0gICAgICAgICAgICAgICAgICAgIHRva2VuWzozXSBpbiBzaW5nbGVfcXVvdGVkOgorCisgICAgICAgICAgICAgICAgIyBDaGVjayB1cCB0byB0aGUgZmlyc3QgMyBjaGFycyBvZiB0aGUgdG9rZW4gdG8gc2VlIGlmCisgICAgICAgICAgICAgICAgIyAgdGhleSdyZSBpbiB0aGUgc2luZ2xlX3F1b3RlZCBzZXQuIElmIHNvLCB0aGV5IHN0YXJ0CisgICAgICAgICAgICAgICAgIyAgYSBzdHJpbmcuCisgICAgICAgICAgICAgICAgIyBXZSdyZSB1c2luZyB0aGUgZmlyc3QgMywgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICMgICJyYiciIChmb3IgZXhhbXBsZSkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0b2tlbi4gSWYKKyAgICAgICAgICAgICAgICAjICB3ZSBzd2l0Y2ggdG8gbG9uZ2VyIHByZWZpeGVzLCB0aGlzIG5lZWRzIHRvIGJlCisgICAgICAgICAgICAgICAgIyAgYWRqdXN0ZWQuCisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgaW5pdGlhbCA9PSB0b2tlbls6MV0uCisgICAgICAgICAgICAgICAgIyBBbHNvIG5vdGUgdGhhdCBzaW5nbGUgcXVvdGUgY2hlY2tpbmcgbXVzdCBjb21lIGFmdGVyCisgICAgICAgICAgICAgICAgIyAgdHJpcGxlIHF1b3RlIGNoZWNraW5nIChhYm92ZSkuCisgICAgICAgICAgICAgICAgZWxpZiAoaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IKKyAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuWy0xXSA9PSAnXG4nOiAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1tpbml0aWFsXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMV1dIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsyXV0pCisgICAgICAgICAgICAgICAgICAgICAgICAjIEFnYWluLCB1c2luZyB0aGUgZmlyc3QgMyBjaGFycyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHRva2VuLiBUaGlzIGlzIGxvb2tpbmcgZm9yIHRoZSBtYXRjaGluZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHJlZ2V4IGZvciB0aGUgY29ycmVjdCB0eXBlIG9mIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAjICBjaGFyYWN0ZXIuIFNvIGl0J3MgcmVhbGx5IGxvb2tpbmcgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAjICBlbmRwYXRzWyInIl0gb3IgZW5kcGF0c1snIiddLCBieSB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHNraXAgc3RyaW5nIHByZWZpeCBjaGFyYWN0ZXJzLCBpZiBhbnkuCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0cy5nZXQoaW5pdGlhbCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzLmdldCh0b2tlblsxXSkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzLmdldCh0b2tlblsyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9IGxpbmVbc3RhcnQ6XSwgMQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yZGluYXJ5IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKFNUUklORywgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwuaXNpZGVudGlmaWVyKCk6ICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuIGluICgnYXN5bmMnLCAnYXdhaXQnKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZjoKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCBmMTA4MjY2Li5hZTE1NDYxIDEwMDc1NQotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC00OCw2ICs0OCw3IEBACiAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgY292ZXJkaXI9Ii90bXAiKQogIiIiCiBfX2FsbF9fID0gWydUcmFjZScsICdDb3ZlcmFnZVJlc3VsdHMnXQoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtNTgsNyArNTksNiBAQAogaW1wb3J0IGdjCiBpbXBvcnQgZGlzCiBpbXBvcnQgcGlja2xlCi1mcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCiBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiB0cnk6CkBAIC03Nyw1MSArNzcsNiBAQAogICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKICAgICAgICAgdGhyZWFkaW5nLnNldHRyYWNlKE5vbmUpCiAKLWRlZiBfdXNhZ2Uob3V0ZmlsZSk6Ci0gICAgb3V0ZmlsZS53cml0ZSgiIiJVc2FnZTogJXMgW09QVElPTlNdIDxmaWxlPiBbQVJHU10KLQotTWV0YS1vcHRpb25zOgotLS1oZWxwICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIHRoZW4gZXhpdC4KLS0tdmVyc2lvbiAgICAgICAgICAgICBPdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiB0aGVuIGV4aXQuCi0KLU90aGVyd2lzZSwgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBvcHRpb25zIG11c3QgYmUgZ2l2ZW46Ci0tdCwgLS10cmFjZSAgICAgICAgICAgUHJpbnQgZWFjaCBsaW5lIHRvIHN5cy5zdGRvdXQgYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLgotLWMsIC0tY291bnQgICAgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgZWFjaCBsaW5lIGlzIGV4ZWN1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgYW5kIHdyaXRlIHRoZSBjb3VudHMgdG8gPG1vZHVsZT4uY292ZXIgZm9yIGVhY2gKLSAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgZXhlY3V0ZWQsIGluIHRoZSBtb2R1bGUncyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgU2VlIGFsc28gYC0tY292ZXJkaXInLCBgLS1maWxlJywgYC0tbm8tcmVwb3J0JyBiZWxvdy4KLS1sLCAtLWxpc3RmdW5jcyAgICAgICBLZWVwIHRyYWNrIG9mIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYXQgbGVhc3QKLSAgICAgICAgICAgICAgICAgICAgICBvbmNlIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gZXhpdHMuCi0tVCwgLS10cmFja2NhbGxzICAgICAgS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzIHRvIHN5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuCi0tciwgLS1yZXBvcnQgICAgICAgICAgR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkbyBub3QgZXhlY3V0ZQotICAgICAgICAgICAgICAgICAgICAgIGFueSBjb2RlLiAgYC0tZmlsZScgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgICByZWFkLCB3aGljaCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGluIGEgcHJldmlvdXMgcnVuCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aCBgLS1jb3VudCAtLWZpbGU9RklMRScuCi0KLU1vZGlmaWVyczoKLS1mLCAtLWZpbGU9PGZpbGU+ICAgICBGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zLgotLVIsIC0tbm8tcmVwb3J0ICAgICAgIERvIG5vdCBnZW5lcmF0ZSB0aGUgY292ZXJhZ2UgcmVwb3J0IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBhY2N1bXVsYXRlIG92ZXIgc2V2ZXJhbCBydW5zLgotLUMsIC0tY292ZXJkaXI9PGRpcj4gIERpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzLiAgVGhlIGNvdmVyYWdlCi0gICAgICAgICAgICAgICAgICAgICAgcmVwb3J0IGZvciA8cGFja2FnZT4uPG1vZHVsZT4gaXMgd3JpdHRlbiB0byBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyLgotLW0sIC0tbWlzc2luZyAgICAgICAgIEFubm90YXRlIGV4ZWN1dGFibGUgbGluZXMgdGhhdCB3ZXJlIG5vdCBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggJz4+Pj4+PiAnLgotLXMsIC0tc3VtbWFyeSAgICAgICAgIFdyaXRlIGEgYnJpZWYgc3VtbWFyeSBvbiBzdGRvdXQgZm9yIGVhY2ggZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAoQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQuKQotLWcsIC0tdGltaW5nICAgICAgICAgIFByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLgotICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdXNlZCB3aGlsZSB0cmFjaW5nLgotCi1GaWx0ZXJzLCBtYXkgYmUgcmVwZWF0ZWQgbXVsdGlwbGUgdGltZXM6Ci0tLWlnbm9yZS1tb2R1bGU9PG1vZD4gSWdub3JlIHRoZSBnaXZlbiBtb2R1bGUocykgYW5kIGl0cyBzdWJtb2R1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgKGlmIGl0IGlzIGEgcGFja2FnZSkuICBBY2NlcHRzIGNvbW1hIHNlcGFyYXRlZAotICAgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2YgbW9kdWxlIG5hbWVzCi0tLWlnbm9yZS1kaXI9PGRpcj4gICAgSWdub3JlIGZpbGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgKG11bHRpcGxlCi0gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4KLSIiIiAlIHN5cy5hcmd2WzBdKQotCiBQUkFHTUFfTk9DT1ZFUiA9ICIjcHJhZ21hIE5PIENPVkVSIgogCiAjIFNpbXBsZSByeCB0byBmaW5kIGxpbmVzIHdpdGggbm8gY29kZS4KQEAgLTI2NSw3ICsyMjAsMTMgQEAKIAogICAgIGRlZiB3cml0ZV9yZXN1bHRzKHNlbGYsIHNob3dfbWlzc2luZz1UcnVlLCBzdW1tYXJ5PUZhbHNlLCBjb3ZlcmRpcj1Ob25lKToKICAgICAgICAgIiIiCi0gICAgICAgIEBwYXJhbSBjb3ZlcmRpcgorICAgICAgICBXcml0ZSB0aGUgY292ZXJhZ2UgcmVzdWx0cy4KKworICAgICAgICA6cGFyYW0gc2hvd19taXNzaW5nOiBTaG93IGxpbmVzIHRoYXQgaGFkIG5vIGhpdHMuCisgICAgICAgIDpwYXJhbSBzdW1tYXJ5OiBJbmNsdWRlIGNvdmVyYWdlIHN1bW1hcnkgcGVyIG1vZHVsZS4KKyAgICAgICAgOnBhcmFtIGNvdmVyZGlyOiBJZiBOb25lLCB0aGUgcmVzdWx0cyBvZiBlYWNoIG1vZHVsZSBhcmUgcGxhY2VkIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmNhbGxlZGZ1bmNzOgogICAgICAgICAgICAgcHJpbnQoKQpAQCAtNjQ3LDIxMCArNjA4LDEzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZGZ1bmNzPXNlbGYuX2NhbGxlZGZ1bmNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcnM9c2VsZi5fY2FsbGVycykKIAotZGVmIF9lcnJfZXhpdChtc2cpOgotICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChzeXMuYXJndlswXSwgbXNnKSkKLSAgICBzeXMuZXhpdCgxKQorZGVmIG1haW4oKToKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICBpbXBvcnQgZ2V0b3B0CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249J3RyYWNlIDIuMCcpCiAKLSAgICBpZiBhcmd2IGlzIE5vbmU6Ci0gICAgICAgIGFyZ3YgPSBzeXMuYXJndgorICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ01haW4gb3B0aW9ucycsCisgICAgICAgICAgICAnT25lIG9mIHRoZXNlIChvciAtLXJlcG9ydCkgbXVzdCBiZSBnaXZlbicpCisKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctYycsICctLWNvdW50JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0NvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgZWFjaCBsaW5lIGlzIGV4ZWN1dGVkIGFuZCB3cml0ZSAnCisgICAgICAgICAgICAgICAgICd0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoIG1vZHVsZSBleGVjdXRlZCwgaW4gJworICAgICAgICAgICAgICAgICAndGhlIG1vZHVsZVwncyBkaXJlY3RvcnkuIFNlZSBhbHNvIC0tY292ZXJkaXIsIC0tZmlsZSwgJworICAgICAgICAgICAgICAgICAnLS1uby1yZXBvcnQgYmVsb3cuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctdCcsICctLXRyYWNlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZCcpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0ZnVuY3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0IG9uY2UgJworICAgICAgICAgICAgICAgICAnYW5kIHdyaXRlIHRoZSByZXN1bHRzIHRvIHN5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuICcKKyAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBiZSBzcGVjaWZpZWQgYWxvbmdzaWRlIC0tdHJhY2Ugb3IgLS1jb3VudC4nKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1UJywgJy0tdHJhY2tjYWxscycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdLZWVwIHRyYWNrIG9mIGNhbGxlci9jYWxsZWQgcGFpcnMgYW5kIHdyaXRlIHRoZSByZXN1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuJykKKworICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ01vZGlmaWVycycpCisKKyAgICBfZ3JwID0gZ3JwLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctcicsICctLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdHZW5lcmF0ZSBhIHJlcG9ydCBmcm9tIGEgY291bnRzIGZpbGU7IGRvZXMgbm90IGV4ZWN1dGUgYW55ICcKKyAgICAgICAgICAgICAgICAgJ2NvZGUuIC0tZmlsZSBtdXN0IHNwZWNpZnkgdGhlIHJlc3VsdHMgZmlsZSB0byByZWFkLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGluIGEgcHJldmlvdXMgcnVuIHdpdGggLS1jb3VudCAnCisgICAgICAgICAgICAgICAgICctLWZpbGU9RklMRScpCisgICAgX2dycC5hZGRfYXJndW1lbnQoJy1SJywgJy0tbm8tcmVwb3J0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0RvIG5vdCBnZW5lcmF0ZSB0aGUgY292ZXJhZ2UgcmVwb3J0IGZpbGVzLiAnCisgICAgICAgICAgICAgICAgICdVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlJywKKyAgICAgICAgICAgIGhlbHA9J0ZpbGUgdG8gYWNjdW11bGF0ZSBjb3VudHMgb3ZlciBzZXZlcmFsIHJ1bnMnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1DJywgJy0tY292ZXJkaXInLAorICAgICAgICAgICAgaGVscD0nRGlyZWN0b3J5IHdoZXJlIHRoZSByZXBvcnQgZmlsZXMgZ28uIFRoZSBjb3ZlcmFnZSByZXBvcnQgJworICAgICAgICAgICAgICAgICAnZm9yIDxwYWNrYWdlPi48bW9kdWxlPiB3aWxsIGJlIHdyaXR0ZW4gdG8gZmlsZSAnCisgICAgICAgICAgICAgICAgICc8ZGlyPi88cGFja2FnZT4vPG1vZHVsZT4uY292ZXInKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWlzc2luZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQgd2l0aCAnCisgICAgICAgICAgICAgICAgICciPj4+Pj4+ICInKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc3VtbWFyeScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdXcml0ZSBhIGJyaWVmIHN1bW1hcnkgZm9yIGVhY2ggZmlsZSB0byBzeXMuc3Rkb3V0LiAnCisgICAgICAgICAgICAgICAgICdDYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWcnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nUHJlZml4IGVhY2ggbGluZSB3aXRoIHRoZSB0aW1lIHNpbmNlIHRoZSBwcm9ncmFtIHN0YXJ0ZWQuICcKKyAgICAgICAgICAgICAgICAgJ09ubHkgdXNlZCB3aGlsZSB0cmFjaW5nJykKKworICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0ZpbHRlcnMnLAorICAgICAgICAgICAgJ0NhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy0taWdub3JlLW1vZHVsZScsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgIGhlbHA9J0lnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcycKKyAgICAgICAgICAgICAgICAgJyhpZiBpdCBpcyBhIHBhY2thZ2UpLiBBY2NlcHRzIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZSBuYW1lcy4nKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy0taWdub3JlLWRpcicsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgIGhlbHA9J0lnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgJyhtdWx0aXBsZSBkaXJlY3RvcmllcyBjYW4gYmUgam9pbmVkIGJ5IG9zLnBhdGhzZXApLicpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdmaWxlbmFtZScsIG5hcmdzPSc/JywKKyAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcnVuIGFzIG1haW4gcHJvZ3JhbScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnYXJndW1lbnRzJywgbmFyZ3M9YXJncGFyc2UuUkVNQUlOREVSLAorICAgICAgICAgICAgaGVscD0nYXJndW1lbnRzIHRvIHRoZSBwcm9ncmFtJykKKworICAgIG9wdHMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBvcHRzLmlnbm9yZV9kaXI6CisgICAgICAgIHJlbF9wYXRoID0gJ2xpYicsICdweXRob257MC5tYWpvcn0uezAubWlub3J9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbykKKyAgICAgICAgX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICpyZWxfcGF0aCkKKyAgICAgICAgX2V4ZWNfcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAqcmVsX3BhdGgpCisKKyAgICBkZWYgcGFyc2VfaWdub3JlX2RpcihzKToKKyAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmV4cGFuZHZhcnMocykpCisgICAgICAgIHMgPSBzLnJlcGxhY2UoJyRwcmVmaXgnLCBfcHJlZml4KS5yZXBsYWNlKCckZXhlY19wcmVmaXgnLCBfZXhlY19wcmVmaXgpCisgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHMpCisKKyAgICBvcHRzLmlnbm9yZV9tb2R1bGUgPSBbbW9kLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gb3B0cy5pZ25vcmVfbW9kdWxlIGZvciBtb2QgaW4gaS5zcGxpdCgnLCcpXQorICAgIG9wdHMuaWdub3JlX2RpciA9IFtwYXJzZV9pZ25vcmVfZGlyKHMpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX2RpciBmb3IgcyBpbiBpLnNwbGl0KG9zLnBhdGhzZXApXQorCisgICAgaWYgb3B0cy5yZXBvcnQ6CisgICAgICAgIGlmIG5vdCBvcHRzLmZpbGU6CisgICAgICAgICAgICBwYXJzZXIuZXJyb3IoJy1yLy0tcmVwb3J0IHJlcXVpcmVzIC1mLy0tZmlsZScpCisgICAgICAgIHJlc3VsdHMgPSBDb3ZlcmFnZVJlc3VsdHMoaW5maWxlPW9wdHMuZmlsZSwgb3V0ZmlsZT1vcHRzLmZpbGUpCisgICAgICAgIHJldHVybiByZXN1bHRzLndyaXRlX3Jlc3VsdHMob3B0cy5taXNzaW5nLCBvcHRzLnN1bW1hcnksIG9wdHMuY292ZXJkaXIpCisKKyAgICBpZiBub3QgYW55KFtvcHRzLnRyYWNlLCBvcHRzLmNvdW50LCBvcHRzLmxpc3RmdW5jcywgb3B0cy50cmFja2NhbGxzXSk6CisgICAgICAgIHBhcnNlci5lcnJvcignbXVzdCBzcGVjaWZ5IG9uZSBvZiAtLXRyYWNlLCAtLWNvdW50LCAtLXJlcG9ydCwgJworICAgICAgICAgICAgICAgICAgICAgJy0tbGlzdGZ1bmNzLCBvciAtLXRyYWNrY2FsbHMnKQorCisgICAgaWYgb3B0cy5saXN0ZnVuY3MgYW5kIChvcHRzLmNvdW50IG9yIG9wdHMudHJhY2UpOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJykKKworICAgIGlmIG9wdHMuc3VtbWFyeSBhbmQgbm90IG9wdHMuY291bnQ6CisgICAgICAgIHBhcnNlci5lcnJvcignLS1zdW1tYXJ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0JykKKworICAgIGlmIG9wdHMuZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnKQorCisgICAgc3lzLmFyZ3YgPSBvcHRzLmZpbGVuYW1lLCAqb3B0cy5hcmd1bWVudHMKKyAgICBzeXMucGF0aFswXSA9IG9zLnBhdGguZGlybmFtZShvcHRzLmZpbGVuYW1lKQorCisgICAgdCA9IFRyYWNlKG9wdHMuY291bnQsIG9wdHMudHJhY2UsIGNvdW50ZnVuY3M9b3B0cy5saXN0ZnVuY3MsCisgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1vcHRzLnRyYWNrY2FsbHMsIGlnbm9yZW1vZHM9b3B0cy5pZ25vcmVfbW9kdWxlLAorICAgICAgICAgICAgICBpZ25vcmVkaXJzPW9wdHMuaWdub3JlX2RpciwgaW5maWxlPW9wdHMuZmlsZSwKKyAgICAgICAgICAgICAgb3V0ZmlsZT1vcHRzLmZpbGUsIHRpbWluZz1vcHRzLnRpbWluZykKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIHByb2dfYXJndiA9IGdldG9wdC5nZXRvcHQoYXJndlsxOl0sICJ0Y3JSZjpkOm1zQzpsVGciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaGVscCIsICJ2ZXJzaW9uIiwgInRyYWNlIiwgImNvdW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcG9ydCIsICJuby1yZXBvcnQiLCAic3VtbWFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlPSIsICJtaXNzaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZS1tb2R1bGU9IiwgImlnbm9yZS1kaXI9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdmVyZGlyPSIsICJsaXN0ZnVuY3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2tjYWxscyIsICJ0aW1pbmciXSkKKyAgICAgICAgd2l0aCBvcGVuKG9wdHMuZmlsZW5hbWUpIGFzIGZwOgorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBvcHRzLmZpbGVuYW1lLCAnZXhlYycpCisgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgZ2xvYnMgPSB7CisgICAgICAgICAgICAnX19maWxlX18nOiBvcHRzLmZpbGVuYW1lLAorICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKKyAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6IE5vbmUsCisgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCisgICAgICAgIH0KKyAgICAgICAgdC5ydW5jdHgoY29kZSwgZ2xvYnMsIGdsb2JzKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgc3lzLmV4aXQoIkNhbm5vdCBydW4gZmlsZSAlciBiZWNhdXNlOiAlcyIgJSAoc3lzLmFyZ3ZbMF0sIGVycikpCisgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CisgICAgICAgIHBhc3MKIAotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICUgc3lzLmFyZ3ZbMF0pCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCiAKLSAgICB0cmFjZSA9IDAKLSAgICBjb3VudCA9IDAKLSAgICByZXBvcnQgPSAwCi0gICAgbm9fcmVwb3J0ID0gMAotICAgIGNvdW50c19maWxlID0gTm9uZQotICAgIG1pc3NpbmcgPSAwCi0gICAgaWdub3JlX21vZHVsZXMgPSBbXQotICAgIGlnbm9yZV9kaXJzID0gW10KLSAgICBjb3ZlcmRpciA9IE5vbmUKLSAgICBzdW1tYXJ5ID0gMAotICAgIGxpc3RmdW5jcyA9IEZhbHNlCi0gICAgY291bnRjYWxsZXJzID0gRmFsc2UKLSAgICB0aW1pbmcgPSBGYWxzZQotCi0gICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCA9PSAiLS1oZWxwIjoKLSAgICAgICAgICAgIF91c2FnZShzeXMuc3Rkb3V0KQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi0tdmVyc2lvbiI6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ0cmFjZSAyLjBcbiIpCi0gICAgICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgICAgIGlmIG9wdCA9PSAiLVQiIG9yIG9wdCA9PSAiLS10cmFja2NhbGxzIjoKLSAgICAgICAgICAgIGNvdW50Y2FsbGVycyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbCIgb3Igb3B0ID09ICItLWxpc3RmdW5jcyI6Ci0gICAgICAgICAgICBsaXN0ZnVuY3MgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWciIG9yIG9wdCA9PSAiLS10aW1pbmciOgotICAgICAgICAgICAgdGltaW5nID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi10IiBvciBvcHQgPT0gIi0tdHJhY2UiOgotICAgICAgICAgICAgdHJhY2UgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWMiIG9yIG9wdCA9PSAiLS1jb3VudCI6Ci0gICAgICAgICAgICBjb3VudCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItciIgb3Igb3B0ID09ICItLXJlcG9ydCI6Ci0gICAgICAgICAgICByZXBvcnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLVIiIG9yIG9wdCA9PSAiLS1uby1yZXBvcnQiOgotICAgICAgICAgICAgbm9fcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1mIiBvciBvcHQgPT0gIi0tZmlsZSI6Ci0gICAgICAgICAgICBjb3VudHNfZmlsZSA9IHZhbAotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1tIiBvciBvcHQgPT0gIi0tbWlzc2luZyI6Ci0gICAgICAgICAgICBtaXNzaW5nID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1DIiBvciBvcHQgPT0gIi0tY292ZXJkaXIiOgotICAgICAgICAgICAgY292ZXJkaXIgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItcyIgb3Igb3B0ID09ICItLXN1bW1hcnkiOgotICAgICAgICAgICAgc3VtbWFyeSA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItLWlnbm9yZS1tb2R1bGUiOgotICAgICAgICAgICAgZm9yIG1vZCBpbiB2YWwuc3BsaXQoIiwiKToKLSAgICAgICAgICAgICAgICBpZ25vcmVfbW9kdWxlcy5hcHBlbmQobW9kLnN0cmlwKCkpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtZGlyIjoKLSAgICAgICAgICAgIGZvciBzIGluIHZhbC5zcGxpdChvcy5wYXRoc2VwKToKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5leHBhbmR2YXJzKHMpCi0gICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQotCi0gICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCi0gICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGFzc2VydCAwLCAiU2hvdWxkIG5ldmVyIGdldCBoZXJlIgotCi0gICAgaWYgbGlzdGZ1bmNzIGFuZCAoY291bnQgb3IgdHJhY2UpOgotICAgICAgICBfZXJyX2V4aXQoImNhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpIikKLQotICAgIGlmIG5vdCAoY291bnQgb3IgdHJhY2Ugb3IgcmVwb3J0IG9yIGxpc3RmdW5jcyBvciBjb3VudGNhbGxlcnMpOgotICAgICAgICBfZXJyX2V4aXQoIm11c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICIKLSAgICAgICAgICAgICAgICAgICItLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzIikKLQotICAgIGlmIHJlcG9ydCBhbmQgbm9fcmVwb3J0OgotICAgICAgICBfZXJyX2V4aXQoImNhbm5vdCBzcGVjaWZ5IGJvdGggLS1yZXBvcnQgYW5kIC0tbm8tcmVwb3J0IikKLQotICAgIGlmIHJlcG9ydCBhbmQgbm90IGNvdW50c19maWxlOgotICAgICAgICBfZXJyX2V4aXQoIi0tcmVwb3J0IHJlcXVpcmVzIGEgLS1maWxlIikKLQotICAgIGlmIG5vX3JlcG9ydCBhbmQgbGVuKHByb2dfYXJndikgPT0gMDoKLSAgICAgICAgX2Vycl9leGl0KCJtaXNzaW5nIG5hbWUgb2YgZmlsZSB0byBydW4iKQotCi0gICAgIyBldmVyeXRoaW5nIGlzIHJlYWR5Ci0gICAgaWYgcmVwb3J0OgotICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1jb3VudHNfZmlsZSwgb3V0ZmlsZT1jb3VudHNfZmlsZSkKLSAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG1pc3NpbmcsIHN1bW1hcnk9c3VtbWFyeSwgY292ZXJkaXI9Y292ZXJkaXIpCi0gICAgZWxzZToKLSAgICAgICAgc3lzLmFyZ3YgPSBwcm9nX2FyZ3YKLSAgICAgICAgcHJvZ25hbWUgPSBwcm9nX2FyZ3ZbMF0KLSAgICAgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLnNwbGl0KHByb2duYW1lKVswXQotCi0gICAgICAgIHQgPSBUcmFjZShjb3VudCwgdHJhY2UsIGNvdW50ZnVuY3M9bGlzdGZ1bmNzLAotICAgICAgICAgICAgICAgICAgY291bnRjYWxsZXJzPWNvdW50Y2FsbGVycywgaWdub3JlbW9kcz1pZ25vcmVfbW9kdWxlcywKLSAgICAgICAgICAgICAgICAgIGlnbm9yZWRpcnM9aWdub3JlX2RpcnMsIGluZmlsZT1jb3VudHNfZmlsZSwKLSAgICAgICAgICAgICAgICAgIG91dGZpbGU9Y291bnRzX2ZpbGUsIHRpbWluZz10aW1pbmcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3Blbihwcm9nbmFtZSkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBwcm9nbmFtZSwgJ2V4ZWMnKQotICAgICAgICAgICAgIyB0cnkgdG8gZW11bGF0ZSBfX21haW5fXyBuYW1lc3BhY2UgYXMgbXVjaCBhcyBwb3NzaWJsZQotICAgICAgICAgICAgZ2xvYnMgPSB7Ci0gICAgICAgICAgICAgICAgJ19fZmlsZV9fJzogcHJvZ25hbWUsCi0gICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKLSAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAotICAgICAgICAgICAgICAgICdfX2NhY2hlZF9fJzogTm9uZSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgX2Vycl9leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQotICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByZXN1bHRzID0gdC5yZXN1bHRzKCkKLQotICAgICAgICBpZiBub3Qgbm9fcmVwb3J0OgotICAgICAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG1pc3NpbmcsIHN1bW1hcnk9c3VtbWFyeSwgY292ZXJkaXI9Y292ZXJkaXIpCi0KLSMgIERlcHJlY2F0ZWQgQVBJCi1kZWYgdXNhZ2Uob3V0ZmlsZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS51c2FnZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIF91c2FnZShvdXRmaWxlKQotCi1jbGFzcyBJZ25vcmUoX0lnbm9yZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZXM9Tm9uZSwgZGlycz1Ob25lKToKLSAgICAgICAgX3dhcm4oIlRoZSBjbGFzcyB0cmFjZS5JZ25vcmUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICBfSWdub3JlLl9faW5pdF9fKHNlbGYsIG1vZHVsZXMsIGRpcnMpCi0KLWRlZiBtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UubW9kbmFtZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfbW9kbmFtZShwYXRoKQotCi1kZWYgZnVsbG1vZG5hbWUocGF0aCk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5mdWxsbW9kbmFtZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZnVsbG1vZG5hbWUocGF0aCkKLQotZGVmIGZpbmRfbGluZXNfZnJvbV9jb2RlKGNvZGUsIHN0cnMpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXNfZnJvbV9jb2RlKGNvZGUsIHN0cnMpCi0KLWRlZiBmaW5kX2xpbmVzKGNvZGUsIHN0cnMpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9saW5lcygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9saW5lcyhjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9zdHJpbmdzKGZpbGVuYW1lLCBlbmNvZGluZz1Ob25lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfc3RyaW5ncygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9zdHJpbmdzKGZpbGVuYW1lLCBlbmNvZGluZz1Ob25lKQotCi1kZWYgZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKQorICAgIGlmIG5vdCBvcHRzLm5vX3JlcG9ydDoKKyAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQogCiBpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IGM1ZmQ2MTcuLjA5YmRhNzEgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMzg1LDkgKzM4NSwzMCBAQAogICAgICAgICByZXN1bHRpbmcgbGlzdCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmcmFtZSBmcm9tIHRoZSBzdGFjay4KICAgICAgICAgRWFjaCBzdHJpbmcgZW5kcyBpbiBhIG5ld2xpbmU7IHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsCiAgICAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldworICAgICAgICByZXBldGl0aW9ucyBhcmUgc2hvd24sIGZvbGxvd2VkIGJ5IGEgc3VtbWFyeSBsaW5lIHN0YXRpbmcgdGhlIGV4YWN0CisgICAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgogICAgICAgICAiIiIKICAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgbGFzdF9maWxlID0gTm9uZQorICAgICAgICBsYXN0X2xpbmUgPSBOb25lCisgICAgICAgIGxhc3RfbmFtZSA9IE5vbmUKKyAgICAgICAgY291bnQgPSAwCiAgICAgICAgIGZvciBmcmFtZSBpbiBzZWxmOgorICAgICAgICAgICAgaWYgKGxhc3RfZmlsZSBpcyBub3QgTm9uZSBhbmQgbGFzdF9maWxlID09IGZyYW1lLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgIGxhc3RfbGluZSBpcyBub3QgTm9uZSBhbmQgbGFzdF9saW5lID09IGZyYW1lLmxpbmVubyBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X25hbWUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbmFtZSA9PSBmcmFtZS5uYW1lKToKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGNvdW50ID4gMzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmJyAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50LTN9IG1vcmUgdGltZXNdXG4nKQorICAgICAgICAgICAgICAgIGxhc3RfZmlsZSA9IGZyYW1lLmZpbGVuYW1lCisgICAgICAgICAgICAgICAgbGFzdF9saW5lID0gZnJhbWUubGluZW5vCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lID0gZnJhbWUubmFtZQorICAgICAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICAgICAgaWYgY291bnQgPj0gMzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcm93ID0gW10KICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgRmlsZSAie30iLCBsaW5lIHt9LCBpbiB7fVxuJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubywgZnJhbWUubmFtZSkpCkBAIC0zOTcsNiArNDE4LDggQEAKICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc29ydGVkKGZyYW1lLmxvY2Fscy5pdGVtcygpKToKICAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgIHtuYW1lfSA9IHt2YWx1ZX1cbicuZm9ybWF0KG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJy5qb2luKHJvdykpCisgICAgICAgIGlmIGNvdW50ID4gMzoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKQEAgLTQ4NywxMCArNTEwLDkgQEAKICAgICAgICAgICAgIHNlbGYuX2xvYWRfbGluZXMoKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fZXhjZXB0aW9uKHNlbGYsIGV4YywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZnJvbV9leGNlcHRpb24oY2xzLCBleGMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkNyZWF0ZSBhIFRyYWNlYmFja0V4Y2VwdGlvbiBmcm9tIGFuIGV4Y2VwdGlvbi4iIiIKLSAgICAgICAgcmV0dXJuIFRyYWNlYmFja0V4Y2VwdGlvbigKLSAgICAgICAgICAgIHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gY2xzKHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIF9sb2FkX2xpbmVzKHNlbGYpOgogICAgICAgICAiIiJQcml2YXRlIEFQSS4gZm9yY2UgYWxsIGxpbmVzIGluIHRoZSBzdGFjayB0byBiZSBsb2FkZWQuIiIiCmRpZmYgLS1naXQgYS9MaWIvdHJhY2VtYWxsb2MucHkgYi9MaWIvdHJhY2VtYWxsb2MucHkKaW5kZXggNjI4OGRhOC4uNzViMzkxOCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90cmFjZW1hbGxvYy5weQpAQCAtMjQ0LDE3ICsyNDQsMjEgQEAKICAgICBfX3Nsb3RzX18gPSAoIl90cmFjZSIsKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYWNlKToKLSAgICAgICAgIyB0cmFjZSBpcyBhIHR1cGxlOiAoc2l6ZSwgdHJhY2ViYWNrKSwgc2VlIFRyYWNlYmFjayBjb25zdHJ1Y3RvcgotICAgICAgICAjIGZvciB0aGUgZm9ybWF0IG9mIHRoZSB0cmFjZWJhY2sgdHVwbGUKKyAgICAgICAgIyB0cmFjZSBpcyBhIHR1cGxlOiAoZG9tYWluOiBpbnQsIHNpemU6IGludCwgdHJhY2ViYWNrOiB0dXBsZSkuCisgICAgICAgICMgU2VlIFRyYWNlYmFjayBjb25zdHJ1Y3RvciBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlLgogICAgICAgICBzZWxmLl90cmFjZSA9IHRyYWNlCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgc2l6ZShzZWxmKToKKyAgICBkZWYgZG9tYWluKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdHJhY2VbMF0KIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaXplKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdHJhY2VbMV0KKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiB0cmFjZWJhY2soc2VsZik6Ci0gICAgICAgIHJldHVybiBUcmFjZWJhY2soc2VsZi5fdHJhY2VbMV0pCisgICAgICAgIHJldHVybiBUcmFjZWJhY2soc2VsZi5fdHJhY2VbMl0pCiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIChzZWxmLl90cmFjZSA9PSBvdGhlci5fdHJhY2UpCkBAIC0yNjYsOCArMjcwLDggQEAKICAgICAgICAgcmV0dXJuICIlczogJXMiICUgKHNlbGYudHJhY2ViYWNrLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSkpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoIjxUcmFjZSBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgotICAgICAgICAgICAgICAgICUgKF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSwgc2VsZi50cmFjZWJhY2spKQorICAgICAgICByZXR1cm4gKCI8VHJhY2UgZG9tYWluPSVzIHNpemU9JXMsIHRyYWNlYmFjaz0lcj4iCisgICAgICAgICAgICAgICAgJSAoc2VsZi5kb21haW4sIF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSwgc2VsZi50cmFjZWJhY2spKQogCiAKIGNsYXNzIF9UcmFjZXMoU2VxdWVuY2UpOgpAQCAtMzAyLDE5ICszMDYsMjkgQEAKICAgICByZXR1cm4gZmlsZW5hbWUKIAogCi1jbGFzcyBGaWx0ZXI6CitjbGFzcyBCYXNlRmlsdGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUpOgorICAgICAgICBzZWxmLmluY2x1c2l2ZSA9IGluY2x1c2l2ZQorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBGaWx0ZXIoQmFzZUZpbHRlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZmlsZW5hbWVfcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UpOgorICAgICAgICAgICAgICAgICBsaW5lbm89Tm9uZSwgYWxsX2ZyYW1lcz1GYWxzZSwgZG9tYWluPU5vbmUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGluY2x1c2l2ZSkKICAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWVfcGF0dGVybiA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWVfcGF0dGVybikKICAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICAgc2VsZi5hbGxfZnJhbWVzID0gYWxsX2ZyYW1lcworICAgICAgICBzZWxmLmRvbWFpbiA9IGRvbWFpbgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGZpbGVuYW1lX3BhdHRlcm4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuCiAKLSAgICBkZWYgX19tYXRjaF9mcmFtZShzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKKyAgICBkZWYgX21hdGNoX2ZyYW1lX2ltcGwoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CiAgICAgICAgIGZpbGVuYW1lID0gX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZSkKICAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChmaWxlbmFtZSwgc2VsZi5fZmlsZW5hbWVfcGF0dGVybik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTMyNCwxMSArMzM4LDExIEBACiAgICAgICAgICAgICByZXR1cm4gKGxpbmVubyA9PSBzZWxmLmxpbmVubykKIAogICAgIGRlZiBfbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fbWF0Y2hfZnJhbWUoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQorICAgICAgICByZXR1cm4gc2VsZi5fbWF0Y2hfZnJhbWVfaW1wbChmaWxlbmFtZSwgbGluZW5vKSBeIChub3Qgc2VsZi5pbmNsdXNpdmUpCiAKICAgICBkZWYgX21hdGNoX3RyYWNlYmFjayhzZWxmLCB0cmFjZWJhY2spOgogICAgICAgICBpZiBzZWxmLmFsbF9mcmFtZXM6Ci0gICAgICAgICAgICBpZiBhbnkoc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgICAgICAgICBpZiBhbnkoc2VsZi5fbWF0Y2hfZnJhbWVfaW1wbChmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSwgbGluZW5vIGluIHRyYWNlYmFjayk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5jbHVzaXZlCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzM3LDYgKzM1MSwzMCBAQAogICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubyA9IHRyYWNlYmFja1swXQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pCiAKKyAgICBkZWYgX21hdGNoKHNlbGYsIHRyYWNlKToKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICByZXMgPSBzZWxmLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuaW5jbHVzaXZlOgorICAgICAgICAgICAgICAgIHJldHVybiByZXMgYW5kIChkb21haW4gPT0gc2VsZi5kb21haW4pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiByZXMgb3IgKGRvbWFpbiAhPSBzZWxmLmRvbWFpbikKKyAgICAgICAgcmV0dXJuIHJlcworCisKK2NsYXNzIERvbWFpbkZpbHRlcihCYXNlRmlsdGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlLCBkb21haW4pOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGluY2x1c2l2ZSkKKyAgICAgICAgc2VsZi5fZG9tYWluID0gZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZG9tYWluCisKKyAgICBkZWYgX21hdGNoKHNlbGYsIHRyYWNlKToKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICByZXR1cm4gKGRvbWFpbiA9PSBzZWxmLmRvbWFpbikgXiAobm90IHNlbGYuaW5jbHVzaXZlKQorCiAKIGNsYXNzIFNuYXBzaG90OgogICAgICIiIgpAQCAtMzY1LDEzICs0MDMsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZChmcCkKIAogICAgIGRlZiBfZmlsdGVyX3RyYWNlKHNlbGYsIGluY2x1ZGVfZmlsdGVycywgZXhjbHVkZV9maWx0ZXJzLCB0cmFjZSk6Ci0gICAgICAgIHRyYWNlYmFjayA9IHRyYWNlWzFdCiAgICAgICAgIGlmIGluY2x1ZGVfZmlsdGVyczoKLSAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICAgICAgaWYgbm90IGFueSh0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGluY2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIGV4Y2x1ZGVfZmlsdGVyczoKLSAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICAgICAgaWYgYW55KG5vdCB0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgIGZvciB0cmFjZV9maWx0ZXIgaW4gZXhjbHVkZV9maWx0ZXJzKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTM3OSw4ICs0MTYsOCBAQAogICAgIGRlZiBmaWx0ZXJfdHJhY2VzKHNlbGYsIGZpbHRlcnMpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgbmV3IFNuYXBzaG90IGluc3RhbmNlIHdpdGggYSBmaWx0ZXJlZCB0cmFjZXMgc2VxdWVuY2UsIGZpbHRlcnMKLSAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBpbnN0YW5jZXMuICBJZiBmaWx0ZXJzIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhCi0gICAgICAgIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgorICAgICAgICBpcyBhIGxpc3Qgb2YgRmlsdGVyIG9yIERvbWFpbkZpbHRlciBpbnN0YW5jZXMuICBJZiBmaWx0ZXJzIGlzIGFuIGVtcHR5CisgICAgICAgIGxpc3QsIHJldHVybiBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsdGVycywgSXRlcmFibGUpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWx0ZXJzIG11c3QgYmUgYSBsaXN0IG9mIGZpbHRlcnMsIG5vdCAlcyIKQEAgLTQxMiw3ICs0NDksNyBAQAogICAgICAgICB0cmFjZWJhY2tzID0ge30KICAgICAgICAgaWYgbm90IGN1bXVsYXRpdmU6CiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja3NbdHJhY2VfdHJhY2ViYWNrXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTQzMyw3ICs0NzAsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBjdW11bGF0aXZlIHN0YXRpc3RpY3MKICAgICAgICAgICAgIGZvciB0cmFjZSBpbiBzZWxmLnRyYWNlcy5fdHJhY2VzOgotICAgICAgICAgICAgICAgIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCisgICAgICAgICAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICAgICAgICAgIGZvciBmcmFtZSBpbiB0cmFjZV90cmFjZWJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja3NbZnJhbWVdCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weSBiL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CmluZGV4IDcxMWQwYWIuLjBhNTgzMzIgMTAwNjQ0Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CkBAIC04OSwxMyArODksMTIgQEAKIGltcG9ydCBvcwogCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZwotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLWZyb20gaWRsZWxpYi50ZXh0VmlldyBpbXBvcnQgdmlld190ZXh0Citmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnRleHR2aWV3IGltcG9ydCB2aWV3X3RleHQKIGZyb20gdHVydGxlZGVtbyBpbXBvcnQgX19kb2NfXyBhcyBhYm91dF90dXJ0bGVkZW1vCiAKIGltcG9ydCB0dXJ0bGUKLWltcG9ydCB0aW1lCiAKIGRlbW9fZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiBkYXJ3aW4gPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkgYi9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CmluZGV4IDY0YjFkN2QuLmIzYjA5NWIgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKKysrIGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQpAQCAtMjIsNyArMjIsNiBAQAogbW9kZSBhcyBmYXN0IGFzIHBvc3NpYmxlLgogIiIiCiAKLWltcG9ydCBtYXRoCiBmcm9tIHR1cnRsZSBpbXBvcnQgVHVydGxlLCBtYWlubG9vcAogZnJvbSB0aW1lIGltcG9ydCBjbG9jawogCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKaW5kZXggMjZhYmZkYi4uMDIxZmY5OSAxMDA3NTUKLS0tIGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQpAQCAtMTgsNyArMTgsNiBAQAogCiAiIiIKIGZyb20gdHVydGxlIGltcG9ydCBTaGFwZSwgVHVydGxlLCBtYWlubG9vcCwgVmVjMkQgYXMgVmVjCi1mcm9tIHRpbWUgaW1wb3J0IHNsZWVwCiAKIEcgPSA4CiAKZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCA0ODg5MWNkLi5kOGQ4NDcwIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0yNCw2ICsyNCwxMSBAQAogQ29yb3V0aW5lVHlwZSA9IHR5cGUoX2MpCiBfYy5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCiAKK2FzeW5jIGRlZiBfYWcoKToKKyAgICB5aWVsZAorX2FnID0gX2FnKCkKK0FzeW5jR2VuZXJhdG9yVHlwZSA9IHR5cGUoX2FnKQorCiBjbGFzcyBfQzoKICAgICBkZWYgX20oc2VsZik6IHBhc3MKIE1ldGhvZFR5cGUgPSB0eXBlKF9DKCkuX20pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5CmluZGV4IDY2OTg5MGEuLmRjYWM1YTIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC02MCwxOCArNjAsNiBAQAogICAgICkKIAogCi1jbGFzcyBfc2xvdHRlZChvYmplY3QpOgotICAgIF9fc2xvdHNfXyA9IFsnYSddCi0KLQotIyBEbyBub3QgdXNlIHRoaXMgdHVwbGUuICBJdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZCBhcyBhIHB1YmxpYyBBUEkuCi0jIEl0IHdpbGwgYmUgcmVtb3ZlZC4gIEl0IGhhcyBubyBvYnZpb3VzIHNpZ25zIG9mIHVzZXJzIG9uIGdpdGh1Yi4KLURlc2NyaXB0b3JUeXBlcyA9ICgKLSAgICB0eXBlKF9zbG90dGVkLmEpLAotICAgIHByb3BlcnR5LAotKQotCi0KIGRlZiBfZ2V0X3NpZ25hdHVyZV9vYmplY3QoZnVuYywgYXNfaW5zdGFuY2UsIGVhdF9zZWxmKToKICAgICAiIiIKICAgICBHaXZlbiBhbiBhcmJpdHJhcnksIHBvc3NpYmx5IGNhbGxhYmxlIG9iamVjdCwgdHJ5IHRvIGNyZWF0ZSBhIHN1aXRhYmxlCkBAIC0yMDUsNiArMTkzLDEyIEBACiAKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9ub3RfY2FsbGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9ub3RfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKICAgICBkZWYgYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpOgpAQCAtMjM1LDYgKzIyOSw5IEBACiAgICAgZnVuY29weS5hc3NlcnRfaGFzX2NhbGxzID0gYXNzZXJ0X2hhc19jYWxscwogICAgIGZ1bmNvcHkuYXNzZXJ0X2FueV9jYWxsID0gYXNzZXJ0X2FueV9jYWxsCiAgICAgZnVuY29weS5yZXNldF9tb2NrID0gcmVzZXRfbW9jaworICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZCA9IGFzc2VydF9jYWxsZWQKKyAgICBmdW5jb3B5LmFzc2VydF9ub3RfY2FsbGVkID0gYXNzZXJ0X25vdF9jYWxsZWQKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZSA9IGFzc2VydF9jYWxsZWRfb25jZQogCiAgICAgbW9jay5fbW9ja19kZWxlZ2F0ZSA9IGZ1bmNvcHkKIApAQCAtNTI1LDcgKzUyMiw3IEBACiAgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCiAKIAotICAgIGRlZiByZXNldF9tb2NrKHNlbGYsIHZpc2l0ZWQ9Tm9uZSk6CisgICAgZGVmIHJlc2V0X21vY2soc2VsZiwgIHZpc2l0ZWQ9Tm9uZSwqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKToKICAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKICAgICAgICAgaWYgdmlzaXRlZCBpcyBOb25lOgogICAgICAgICAgICAgdmlzaXRlZCA9IFtdCkBAIC01NDAsNiArNTM3LDExIEBACiAgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQogICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCiAKKyAgICAgICAgaWYgcmV0dXJuX3ZhbHVlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCisgICAgICAgIGlmIHNpZGVfZWZmZWN0OgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKwogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC03NzQsNiArNzc2LDI0IEBACiAgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgPT0gMDoKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkLiIgJQorICAgICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIG9ubHkgb25jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKwogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgogCkBAIC04MjIsNyArODQyLDcgQEAKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhbGxfY2FsbHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKLSAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChfQ2FsbExpc3QoY2FsbHMpLCBzZWxmLm1vY2tfY2FsbHMpCiAgICAgICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTk0MSw5ICsxOTYxLDggQEAKIAogICAgIElmIHRoZSBfQ2FsbCBoYXMgbm8gbmFtZSB0aGVuIGl0IHdpbGwgbWF0Y2ggYW55IG5hbWUuCiAgICAgIiIiCi0gICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAorICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9KCksIG5hbWU9JycsIHBhcmVudD1Ob25lLCB0d289RmFsc2UsCiAgICAgICAgICAgICAgICAgZnJvbV9rYWxsPVRydWUpOgotICAgICAgICBuYW1lID0gJycKICAgICAgICAgYXJncyA9ICgpCiAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgIF9sZW4gPSBsZW4odmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5IGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQppbmRleCAyMTEyMjYyLi4yYzVlYTRhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYud2FybmluZ3MgaW4gWydkZWZhdWx0JywgJ2Fsd2F5cyddOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnbW9kdWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGxlYXNlIHVzZSBhc3NlcnRcdysgaW5zdGVhZC4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9cidQbGVhc2UgdXNlIGFzc2VydFx3KyBpbnN0ZWFkLicpCiAgICAgICAgICAgICBzdGFydFRpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgc3RhcnRUZXN0UnVuID0gZ2V0YXR0cihyZXN1bHQsICdzdGFydFRlc3RSdW4nLCBOb25lKQogICAgICAgICAgICAgaWYgc3RhcnRUZXN0UnVuIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGU2ZTJiYzIuLjFiMGU4MzMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgICAgICAjIEVycm9yIG1lc3NhZ2VzIGFyZSBtdWx0aWxpbmUgc28gbm90IHRlc3Rpbmcgb24gZnVsbCBtZXNzYWdlCiAgICAgICAgICMgYXNzZXJ0VHVwbGVFcXVhbCBhbmQgYXNzZXJ0TGlzdEVxdWFsIGRlbGVnYXRlIHRvIHRoaXMgbWV0aG9kCiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydFNlcXVlbmNlRXF1YWwnLCAoW10sIFtOb25lXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJcKyBcW05vbmVcXSQiLCAiXm9vcHMkIiwgciJcKyBcW05vbmVcXSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIlwrIFxbTm9uZVxdJCIsICJeb29wcyQiLCByIlwrIFxbTm9uZVxdJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXFtOb25lXF0gOiBvb3BzJCJdKQogCiAgICAgZGVmIHRlc3RBc3NlcnRTZXRFcXVhbChzZWxmKToKQEAgLTI1MCwyMSArMjUwLDIxIEBACiAKICAgICBkZWYgdGVzdEFzc2VydEluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRJbicsIChOb25lLCBbXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSBub3QgZm91bmQgaW4gXFtcXSA6IG9vcHMkJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3InXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSA6IG9vcHMkJ10pCiAKICAgICBkZWYgdGVzdEFzc2VydE5vdEluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnROb3RJbicsIChOb25lLCBbTm9uZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0gOiBvb3BzJCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLCAiXm9vcHMkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0gOiBvb3BzJCddKQogCiAgICAgZGVmIHRlc3RBc3NlcnREaWN0RXF1YWwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydERpY3RFcXVhbCcsICh7fSwgeydrZXknOiAndmFsdWUnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcKyBceydrZXknOiAndmFsdWUnXH0gOiBvb3BzJCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSA6IG9vcHMkIl0pCiAKICAgICBkZWYgdGVzdEFzc2VydERpY3RDb250YWluc1N1YnNldChzZWxmKToKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQppbmRleCA0Yjk3ODgyLi5iMmY5Yzg4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQpAQCAtMzkwLDcgKzM5MCw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKICAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCiAgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTgwOSw3ICs4MDksNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydhYmMgKCkgLy8nXSkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCiAgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyAoKSAvLyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCAgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC05MjgsNyArOTI4LDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10sIHVuaXR0ZXN0KQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKICAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjICgpIC8vJyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKaW5kZXggZjQ3Mzg3OS4uMjA1NDMxYSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CkBAIC0xLDUgKzEsMyBAQAotaW1wb3J0IHN5cwotCiBkZWYgaXNfaW5zdGFuY2Uob2JqLCBrbGFzcyk6CiAgICAgIiIiVmVyc2lvbiBvZiBpc19pbnN0YW5jZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIF9fY2xhc3NfXyIiIgogICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwga2xhc3MpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CmluZGV4IDM0Nzc2MzQuLmQ1ZjllN2MgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CkBAIC0zMDYsNiArMzA2LDIwIEBACiAgICAgICAgIG90aGVyX2FyZ3MgPSBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgb3RoZXJfYXJncykKIAorICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9uYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJ2ZvbycsCisgICAgICAgICAgICBfQ2FsbCgoKSwgJ2ZvbycpWzBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIF9DYWxsKCgoJ2JhcicsICdiYXJ6JyksICksIClbMF0KKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICBfQ2FsbCgoKCdiYXInLCAnYmFyeicpLCB7J2hlbGxvJzogJ3dvcmxkJ30pLCApWzBdCisgICAgICAgICkKKwogCiBjbGFzcyBTcGVjU2lnbmF0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CmluZGV4IGJiOWI5NTYuLjI0NTY5YjUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGluc3BlY3QKIGltcG9ydCBzeXMKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgTWFnaWNNb2NrLCBfbWFnaWNzCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKaW5kZXggNWY4MmI4Mi4uYjA3YTdjYyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKQEAgLTEyMzksNiArMTIzOSwyNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKICAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQogCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZChzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKwogICAgICNJc3N1ZTIxMjU2IHByaW50b3V0IG9mIGtleXdvcmQgYXJncyBzaG91bGQgYmUgaW4gZGV0ZXJtaW5pc3RpYyBvcmRlcgogICAgIGRlZiB0ZXN0X3NvcnRlZF9jYWxsX3NpZ25hdHVyZShzZWxmKToKICAgICAgICAgbSA9IE1vY2soKQpAQCAtMTI1Niw2ICsxMjc3LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMF0sIGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMV0sIGkpCiAKKyAgICBkZWYgdGVzdF9yZXNldF9yZXR1cm5fc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlLCBzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybihzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3NpZGVlZmZlY3Qoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKHJldHVybl92YWx1ZT0xMCwgc2lkZV9lZmZlY3Q9WzIsM10pCisgICAgICAgIG0ucmVzZXRfbW9jayhzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmV0dXJuX3ZhbHVlLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCiAgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKICAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgogICAgICAgICAgICAgb25lID0gMQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CmluZGV4IGRmY2UzNjkuLmZlNGVjZWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTEwLDkgKzEwLDkgQEAKIGZyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBTb21lQ2xhc3MsIGlzX2luc3RhbmNlCiAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAotICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgc2VudGluZWwsCiAgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgcGF0Y2gsIF9wYXRjaCwKLSAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldCwgX3BhdGNoCisgICAgREVGQVVMVCwgY2FsbCwgX2dldF90YXJnZXQKICkKIAogCkBAIC05NjksOCArOTY5LDE0IEBACiAgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb24oc2VsZik6CiAgICAgICAgIEBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIGF1dG9zcGVjPVRydWUpCiAgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X25vdF9jYWxsZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF9vbmNlKQogICAgICAgICAgICAgZnVuY3Rpb24oMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBmdW5jdGlvbi5hc3NlcnRfbm90X2NhbGxlZCkKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2UoKQogICAgICAgICAgICAgZnVuY3Rpb24oMiwgMykKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgyLCAzKQogCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3BhcnNlLnB5IGIvTGliL3VybGxpYi9wYXJzZS5weQppbmRleCA1NjZmYmY3Li45NTg3NjdhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3BhcnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcGFyc2UucHkKQEAgLTE1Nyw5ICsxNTcsOCBAQAogICAgICAgICBwb3J0ID0gc2VsZi5faG9zdGluZm9bMV0KICAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydCwgMTApCi0gICAgICAgICAgICAjIFJldHVybiBOb25lIG9uIGFuIGlsbGVnYWwgcG9ydAogICAgICAgICAgICAgaWYgbm90ICggMCA8PSBwb3J0IDw9IDY1NTM1KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvcnQgb3V0IG9mIHJhbmdlIDAtNjU1MzUiKQogICAgICAgICByZXR1cm4gcG9ydAogCiAKQEAgLTIyNiw4ICsyMjUsNzEgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIAogX0RlZnJhZ1Jlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdEZWZyYWdSZXN1bHQnLCAndXJsIGZyYWdtZW50JykKLV9TcGxpdFJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdTcGxpdFJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcXVlcnkgZnJhZ21lbnQnKQotX1BhcnNlUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1BhcnNlUmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBwYXJhbXMgcXVlcnkgZnJhZ21lbnQnKQorX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCisgICAgJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCitfUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCisKK19EZWZyYWdSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK0RlZnJhZ1Jlc3VsdCh1cmwsIGZyYWdtZW50KQorCitBIDItdHVwbGUgdGhhdCBjb250YWlucyB0aGUgdXJsIHdpdGhvdXQgZnJhZ21lbnQgaWRlbnRpZmllciBhbmQgdGhlIGZyYWdtZW50CitpZGVudGlmaWVyIGFzIGEgc2VwYXJhdGUgYXJndW1lbnQuCisiIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UudXJsLl9fZG9jX18gPSAiIiJUaGUgVVJMIHdpdGggbm8gZnJhZ21lbnQgaWRlbnRpZmllci4iIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciBzZXBhcmF0ZWQgZnJvbSBVUkwsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEKK3NlY29uZGFyeSByZXNvdXJjZSBieSByZWZlcmVuY2UgdG8gYSBwcmltYXJ5IHJlc291cmNlIGFuZCBhZGRpdGlvbmFsIGlkZW50aWZ5aW5nCitpbmZvcm1hdGlvbi4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1NwbGl0UmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNS10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIFVSTC4gU2ltaWxhciB0bworUGFyc2VSZXN1bHQsIGJ1dCBkb2VzIG5vdCBzcGxpdCBwYXJhbXMuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXyA9ICIiIlNwZWNpZmllcyBVUkwgc2NoZW1lIGZvciB0aGUgcmVxdWVzdC4iIiIKKworX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9ICIiIgorTmV0d29yayBsb2NhdGlvbiB3aGVyZSB0aGUgcmVxdWVzdCBpcyBtYWRlIHRvLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gIiIiCitUaGUgaGllcmFyY2hpY2FsIHBhdGgsIHN1Y2ggYXMgdGhlIHBhdGggdG8gYSBmaWxlIHRvIGRvd25sb2FkLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucXVlcnkuX19kb2NfXyA9ICIiIgorVGhlIHF1ZXJ5IGNvbXBvbmVudCwgdGhhdCBjb250YWlucyBub24taGllcmFyY2hpY2FsIGRhdGEsIHRoYXQgYWxvbmcgd2l0aCBkYXRhCitpbiBwYXRoIGNvbXBvbmVudCwgaWRlbnRpZmllcyBhIHJlc291cmNlIGluIHRoZSBzY29wZSBvZiBVUkkncyBzY2hlbWUgYW5kCituZXR3b3JrIGxvY2F0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYSBzZWNvbmRhcnkgcmVzb3VyY2UKK2J5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCitQYXJzZVJlc3VsdChzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFyYW1zLCAgcXVlcnksIGZyYWdtZW50KQorCitBIDYtdHVwbGUgdGhhdCBjb250YWlucyBjb21wb25lbnRzIG9mIGEgcGFyc2VkIFVSTC4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGFyYW1zLl9fZG9jX18gPSAiIiIKK1BhcmFtZXRlcnMgZm9yIGxhc3QgcGF0aCBlbGVtZW50IHVzZWQgdG8gZGVyZWZlcmVuY2UgdGhlIFVSSSBpbiBvcmRlciB0byBwcm92aWRlCithY2Nlc3MgdG8gcGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvbiB0aGUgcmVzb3VyY2UuCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18KKwogCiAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYWxpYXMgX05ldGxvY1Jlc3VsdE1peGluU3RyCiAjIFJlc3VsdEJhc2UgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRvY3VtZW50ZWQgQVBJLCBidXQgaXQgaXMKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCBhNDZjNjg5Li5iNjY5MGMzIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC0xMzQsMTMgKzEzNCw3MyBAQAogXQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIF9vcGVuZXIgPSBOb25lCiBkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSwgY29udGV4dD1Ob25lKToKKyAgICAnJydPcGVuIHRoZSBVUkwgdXJsLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgUmVxdWVzdCBvYmplY3QuCisKKyAgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0bworICAgIHRoZSBzZXJ2ZXIsIG9yIE5vbmUgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIFNlZSBSZXF1ZXN0IGZvcgorICAgIGRldGFpbHMuCisKKyAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYSAiQ29ubmVjdGlvbjpjbG9zZSIKKyAgICBoZWFkZXIgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCisKKyAgICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yCisgICAgYmxvY2tpbmcgb3BlcmF0aW9ucyBsaWtlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZQorICAgIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGlzIG9ubHkgd29ya3MgZm9yIEhUVFAsCisgICAgSFRUUFMgYW5kIEZUUCBjb25uZWN0aW9ucy4KKworICAgIElmICpjb250ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZSBkZXNjcmliaW5nCisgICAgdGhlIHZhcmlvdXMgU1NMIG9wdGlvbnMuIFNlZSBIVFRQU0Nvbm5lY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFRoZSBvcHRpb25hbCAqY2FmaWxlKiBhbmQgKmNhcGF0aCogcGFyYW1ldGVycyBzcGVjaWZ5IGEgc2V0IG9mIHRydXN0ZWQgQ0EKKyAgICBjZXJ0aWZpY2F0ZXMgZm9yIEhUVFBTIHJlcXVlc3RzLiBjYWZpbGUgc2hvdWxkIHBvaW50IHRvIGEgc2luZ2xlIGZpbGUKKyAgICBjb250YWluaW5nIGEgYnVuZGxlIG9mIENBIGNlcnRpZmljYXRlcywgd2hlcmVhcyBjYXBhdGggc2hvdWxkIHBvaW50IHRvIGEKKyAgICBkaXJlY3Rvcnkgb2YgaGFzaGVkIGNlcnRpZmljYXRlIGZpbGVzLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbgorICAgIHNzbC5TU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucygpLgorCisgICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBpcyBpZ25vcmVkLgorCisgICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggY2FuIHdvcmsgYXMgYSBjb250ZXh0CisgICAgbWFuYWdlciBhbmQgaGFzIG1ldGhvZHMgc3VjaCBhcworCisgICAgKiBnZXR1cmwoKSAtIHJldHVybiB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSByZXRyaWV2ZWQsIGNvbW1vbmx5IHVzZWQgdG8KKyAgICAgIGRldGVybWluZSBpZiBhIHJlZGlyZWN0IHdhcyBmb2xsb3dlZAorCisgICAgKiBpbmZvKCkgLSByZXR1cm4gdGhlIG1ldGEtaW5mb3JtYXRpb24gb2YgdGhlIHBhZ2UsIHN1Y2ggYXMgaGVhZGVycywgaW4gdGhlCisgICAgICBmb3JtIG9mIGFuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoKSBpbnN0YW5jZSAoc2VlIFF1aWNrIFJlZmVyZW5jZSB0bworICAgICAgSFRUUCBIZWFkZXJzKQorCisgICAgKiBnZXRjb2RlKCkgLSByZXR1cm4gdGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLiAgUmFpc2VzIFVSTEVycm9yCisgICAgICBvbiBlcnJvcnMuCisKKyAgICBGb3IgSFRUUCBhbmQgSFRUUFMgVVJMcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlCisgICAgb2JqZWN0IHNsaWdodGx5IG1vZGlmaWVkLiBJbiBhZGRpdGlvbiB0byB0aGUgdGhyZWUgbmV3IG1ldGhvZHMgYWJvdmUsIHRoZQorICAgIG1zZyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIHJlYXNvbiBhdHRyaWJ1dGUgLS0tCisgICAgdGhlIHJlYXNvbiBwaHJhc2UgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciAtLS0gaW5zdGVhZCBvZiB0aGUgcmVzcG9uc2UKKyAgICBoZWFkZXJzIGFzIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgSFRUUFJlc3BvbnNlLgorCisgICAgRm9yIEZUUCwgZmlsZSwgYW5kIGRhdGEgVVJMcyBhbmQgcmVxdWVzdHMgZXhwbGljaXRseSBoYW5kbGVkIGJ5IGxlZ2FjeQorICAgIFVSTG9wZW5lciBhbmQgRmFuY3lVUkxvcGVuZXIgY2xhc3NlcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKKyAgICB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybCBvYmplY3QuCisKKyAgICBOb3RlIHRoYXQgTm9uZSBtYXkgYmUgcmV0dXJuZWQgaWYgbm8gaGFuZGxlciBoYW5kbGVzIHRoZSByZXF1ZXN0ICh0aG91Z2gKKyAgICB0aGUgZGVmYXVsdCBpbnN0YWxsZWQgZ2xvYmFsIE9wZW5lckRpcmVjdG9yIHVzZXMgVW5rbm93bkhhbmRsZXIgdG8gZW5zdXJlCisgICAgdGhpcyBuZXZlciBoYXBwZW5zKS4KKworICAgIEluIGFkZGl0aW9uLCBpZiBwcm94eSBzZXR0aW5ncyBhcmUgZGV0ZWN0ZWQgKGZvciBleGFtcGxlLCB3aGVuIGEgKl9wcm94eQorICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGxpa2UgaHR0cF9wcm94eSBpcyBzZXQpLCBQcm94eUhhbmRsZXIgaXMgZGVmYXVsdAorICAgIGluc3RhbGxlZCBhbmQgbWFrZXMgc3VyZSB0aGUgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcHJveHkuCisKKyAgICAnJycKICAgICBnbG9iYWwgX29wZW5lcgogICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2FybigiY2FmaWxlLCBjcGF0aCBhbmQgY2FkZWZhdWx0IGFyZSBkZXByZWNhdGVkLCB1c2UgYSAiCisgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiWW91IGNhbid0IHBhc3MgYm90aCBjb250ZXh0IGFuZCBhbnkgb2YgY2FmaWxlLCBjYXBhdGgsIGFuZCAiCkBAIC0xMTcwLDYgKzEyMzAsMTEgQEAKICAgICBkZWYgc2V0X2h0dHBfZGVidWdsZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgIHNlbGYuX2RlYnVnbGV2ZWwgPSBsZXZlbAogCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHJldHVybiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLAorICAgICAgICAgICAgcmVxdWVzdC5nZXRfbWV0aG9kKCkpCisKICAgICBkZWYgZG9fcmVxdWVzdF8oc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICAgICAgaWYgbm90IGhvc3Q6CkBAIC0xMTc4LDI0ICsxMjQzLDIyIEBACiAgICAgICAgIGlmIHJlcXVlc3QuZGF0YSBpcyBub3QgTm9uZTogICMgUE9TVAogICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKKyAgICAgICAgICAgICAgICBtc2cgPSAiUE9TVCBkYXRhIHNob3VsZCBiZSBieXRlcywgYW4gaXRlcmFibGUgb2YgYnl0ZXMsICIgXAorICAgICAgICAgICAgICAgICAgICAgICJvciBhIGZpbGUgb2JqZWN0LiBJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAnQ29udGVudC10eXBlJywKICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpCi0gICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb250ZW50LUxlbmd0aCBzaG91bGQgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBpdGVyYWJsZSBkYXRhIG9mIHR5cGUgJXIgJXIiICUgKHR5cGUoZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQorICAgICAgICAgICAgaWYgKG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykKKyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlcXVlc3QpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LWxlbmd0aCcsICclZCcgJSAobGVuKG12KSAqIG12Lml0ZW1zaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJhbnNmZXItZW5jb2RpbmcnLCAnY2h1bmtlZCcpCiAKICAgICAgICAgc2VsX2hvc3QgPSBob3N0CiAgICAgICAgIGlmIHJlcXVlc3QuaGFzX3Byb3h5KCk6CkBAIC0xMjUxLDcgKzEzMTQsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9cmVxLmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6ICMgdGltZW91dCBlcnJvcgogICAgICAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGVycikKICAgICAgICAgICAgIHIgPSBoLmdldHJlc3BvbnNlKCkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CmluZGV4IDhiNjlmZDkuLjlkYWI0YzEgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQpAQCAtMTAsNyArMTAsOSBAQAogICAgIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy9ub3JvYm90cy1yZmMudHh0CiAiIiIKIAotaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHVybGxpYi5wYXJzZQoraW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAKIF9fYWxsX18gPSBbIlJvYm90RmlsZVBhcnNlciJdCiAKQEAgLTEyMCwxMCArMTIyLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5ydWxlbGluZXMuYXBwZW5kKFJ1bGVMaW5lKGxpbmVbMV0sIFRydWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJjcmF3bC1kZWxheSI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJlZm9yZSB0cnlpbmcgdG8gY29udmVydCB0byBpbnQgd2UgbmVlZCB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAjIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyB2YWxpZCBzeW50YXggb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpbGwgY3Jhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVbMV0uc3RyaXAoKS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsYXkgPSBpbnQobGluZVsxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgorICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAicmVxdWVzdC1yYXRlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcnMgPSBsaW5lWzFdLnNwbGl0KCcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYWxsIHZhbHVlcyBhcmUgc2FuZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihudW1iZXJzKSA9PSAyIGFuZCBudW1iZXJzWzBdLnN0cmlwKCkuaXNkaWdpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG51bWJlcnNbMV0uc3RyaXAoKS5pc2RpZ2l0KCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9yYXRlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgncmVxX3JhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdHMgc2Vjb25kcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUgPSByZXFfcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJlcV9yYXRlLnJlcXVlc3RzID0gaW50KG51bWJlcnNbMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUuc2Vjb25kcyA9IGludChudW1iZXJzWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCiAgICAgICAgIGlmIHN0YXRlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9hZGRfZW50cnkoZW50cnkpCiAKLQogICAgIGRlZiBjYW5fZmV0Y2goc2VsZiwgdXNlcmFnZW50LCB1cmwpOgogICAgICAgICAiIiJ1c2luZyB0aGUgcGFyc2VkIHJvYm90cy50eHQgZGVjaWRlIGlmIHVzZXJhZ2VudCBjYW4gZmV0Y2ggdXJsIiIiCiAgICAgICAgIGlmIHNlbGYuZGlzYWxsb3dfYWxsOgpAQCAtMTUzLDYgKzE3NCwyMiBAQAogICAgICAgICAjIGFnZW50IG5vdCBmb3VuZCA9PT4gYWNjZXNzIGdyYW50ZWQKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBjcmF3bF9kZWxheShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuZGVsYXkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5kZWxheQorCisgICAgZGVmIHJlcXVlc3RfcmF0ZShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkucmVxX3JhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5yZXFfcmF0ZQorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnJy5qb2luKFtzdHIoZW50cnkpICsgIlxuIiBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzXSkKIApAQCAtMTgwLDYgKzIxNyw4IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLnVzZXJhZ2VudHMgPSBbXQogICAgICAgICBzZWxmLnJ1bGVsaW5lcyA9IFtdCisgICAgICAgIHNlbGYuZGVsYXkgPSBOb25lCisgICAgICAgIHNlbGYucmVxX3JhdGUgPSBOb25lCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggZTk2ZTdlMC4uMjAwYzgwMCAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ4Nyw3ICs0ODcsNiBAQAogICAgICMgQXNzdW1lIHRoYXQgdGhlIHV1aWRfZ2VuZXJhdGUgZnVuY3Rpb25zIGFyZSBicm9rZW4gZnJvbSAxMC41IG9ud2FyZCwKICAgICAjIHRoZSB0ZXN0IGNhbiBiZSBhZGp1c3RlZCB3aGVuIGEgbGF0ZXIgdmVyc2lvbiBpcyBmaXhlZC4KICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX2luaXRfXy5weSBiL0xpYi92ZW52L19faW5pdF9fLnB5CmluZGV4IDc0MjQ1YWIuLjBhMDk0ZTMgMTAwNjQ0Ci0tLSBhL0xpYi92ZW52L19faW5pdF9fLnB5CisrKyBiL0xpYi92ZW52L19faW5pdF9fLnB5CkBAIC0zLDI4ICszLDYgQEAKIAogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgVmluYXkgU2FqaXAuCiBMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgotCi11c2FnZTogcHl0aG9uIC1tIHZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQotICAgICAgICAgICAgWy0tdXBncmFkZV0KLSAgICAgICAgICAgIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQotCi1DcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCi0KLXBvc2l0aW9uYWwgYXJndW1lbnRzOgotICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KLQotb3B0aW9uYWwgYXJndW1lbnRzOgotICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgLS1zeW1saW5rcyAgICAgICAgICAgIEF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5LgotICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgotICAtLXdpdGhvdXQtcGlwICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogIiIiCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCkBAIC01OCwxNSArMzYsMTcgQEAKICAgICA6cGFyYW0gdXBncmFkZTogSWYgVHJ1ZSwgdXBncmFkZSBhbiBleGlzdGluZyB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50CisgICAgOnBhcmFtIHByb21wdDogQWx0ZXJuYXRpdmUgdGVybWluYWwgcHJlZml4IGZvciB0aGUgZW52aXJvbm1lbnQuCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgorICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIHByb21wdD1Ob25lKToKICAgICAgICAgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlcyA9IHN5c3RlbV9zaXRlX3BhY2thZ2VzCiAgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgogICAgICAgICBzZWxmLnN5bWxpbmtzID0gc3ltbGlua3MKICAgICAgICAgc2VsZi51cGdyYWRlID0gdXBncmFkZQogICAgICAgICBzZWxmLndpdGhfcGlwID0gd2l0aF9waXAKKyAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHQKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CiAgICAgICAgICIiIgpAQCAtMTEyLDcgKzkyLDggQEAKICAgICAgICAgY29udGV4dCA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCiAgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKICAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KLSAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBwcm9tcHQgPSBzZWxmLnByb21wdCBpZiBzZWxmLnByb21wdCBpcyBub3QgTm9uZSBlbHNlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgcHJvbXB0CiAgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoZW52X2RpcikKICAgICAgICAgZW52ID0gb3MuZW52aXJvbgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CkBAIC0zNDgsMjYgKzMyOSwxMSBAQAogCiAKIGRlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgotICAgICIiIgotICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCi0KLSAgICBCeSBkZWZhdWx0LCBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyICp1biphdmFpbGFibGUgdG8KLSAgICB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCwgYW5kIHVzZXMgY29weWluZyByYXRoZXIgdGhhbiBzeW1saW5raW5nIGZvciBmaWxlcwotICAgIG9idGFpbmVkIGZyb20gdGhlIHNvdXJjZSBQeXRob24gaW5zdGFsbGF0aW9uLgotCi0gICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KLSAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlLCBkZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYKLSAgICAgICAgICAgICAgICAgIGl0IGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgotICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50Ci0gICAgIiIiCisgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgorICAgICIiIkNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuIiIiCiAgICAgYnVpbGRlciA9IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9c3lzdGVtX3NpdGVfcGFja2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzLCB3aXRoX3BpcD13aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1wcm9tcHQpCiAgICAgYnVpbGRlci5jcmVhdGUoZW52X2RpcikKIAogZGVmIG1haW4oYXJncz1Ob25lKToKQEAgLTQyNyw2ICszOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHQpJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcm9tcHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHByb21wdCBwcmVmaXggZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGVudmlyb25tZW50LicpCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQogICAgICAgICBpZiBvcHRpb25zLnVwZ3JhZGUgYW5kIG9wdGlvbnMuY2xlYXI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5b3UgY2Fubm90IHN1cHBseSAtLXVwZ3JhZGUgYW5kIC0tY2xlYXIgdG9nZXRoZXIuJykKQEAgLTQzNCw3ICs0MDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PW9wdGlvbnMucHJvbXB0KQogICAgICAgICBmb3IgZCBpbiBvcHRpb25zLmRpcnM6CiAgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQogCmRpZmYgLS1naXQgYS9MaWIvd2FybmluZ3MucHkgYi9MaWIvd2FybmluZ3MucHkKaW5kZXggYzY2MzFmYy4uNWJhZGIwYiAxMDA2NDQKLS0tIGEvTGliL3dhcm5pbmdzLnB5CisrKyBiL0xpYi93YXJuaW5ncy5weQpAQCAtMiwzOSArMiwxMjAgQEAKIAogaW1wb3J0IHN5cwogCisKIF9fYWxsX18gPSBbIndhcm4iLCAid2Fybl9leHBsaWNpdCIsICJzaG93d2FybmluZyIsCiAgICAgICAgICAgICJmb3JtYXR3YXJuaW5nIiwgImZpbHRlcndhcm5pbmdzIiwgInNpbXBsZWZpbHRlciIsCiAgICAgICAgICAgICJyZXNldHdhcm5pbmdzIiwgImNhdGNoX3dhcm5pbmdzIl0KIAotCiBkZWYgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKICAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCi0gICAgaWYgZmlsZSBpcyBOb25lOgotICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgotICAgICAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlIC0gd2FybmluZ3MgZ2V0IGxvc3QKLSAgICAgICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgZmlsZS53cml0ZShmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlLCBsaW5lKQorICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKIAogZGVmIGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CiAgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgotICAgIHMgPSAgIiVzOiVzOiAlczogJXNcbiIgJSAoZmlsZW5hbWUsIGxpbmVubywgY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgaWYgbGluZSBpcyBOb25lOgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBOb25lLCBsaW5lKQorICAgIHJldHVybiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZykKKworZGVmIF9zaG93d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgZmlsZSA9IG1zZy5maWxlCisgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgorICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlOgorICAgICAgICAgICAgIyB3YXJuaW5ncyBnZXQgbG9zdAorICAgICAgICAgICAgcmV0dXJuCisgICAgdGV4dCA9IF9mb3JtYXR3YXJubXNnKG1zZykKKyAgICB0cnk6CisgICAgICAgIGZpbGUud3JpdGUodGV4dCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KKyAgICAgICAgcGFzcworCitkZWYgX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpOgorICAgIHMgPSAgKCIlczolczogJXM6ICVzXG4iCisgICAgICAgICAgJSAobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLCBtc2cuY2F0ZWdvcnkuX19uYW1lX18sCisgICAgICAgICAgICAgbXNnLm1lc3NhZ2UpKQorCisgICAgaWYgbXNnLmxpbmUgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGxpbmVjYWNoZQotICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgbGluZWNhY2hlCiAgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICBsaW5lY2FjaGUgPSBOb25lCisgICAgZWxzZToKKyAgICAgICAgbGluZSA9IG1zZy5saW5lCiAgICAgaWYgbGluZToKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICBzICs9ICIgICVzXG4iICUgbGluZQorCisgICAgaWYgbXNnLnNvdXJjZSBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlbWFsbG9jCisgICAgICAgICAgICB0YiA9IHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrKG1zZy5zb3VyY2UpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCB0cmFjZW1hbGxvYworICAgICAgICAgICAgIyBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG9uJ3Qgd29yayBhbnltb3JlCisgICAgICAgICAgICB0YiA9IE5vbmUKKworICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHMgKz0gJ09iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJworICAgICAgICAgICAgZm9yIGZyYW1lIGluIHRiOgorICAgICAgICAgICAgICAgIHMgKz0gKCcgIEZpbGUgIiVzIiwgbGluZW5vICVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubykpCisKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVjYWNoZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgcyArPSAnICAgICVzXG4nICUgbGluZQogICAgIHJldHVybiBzCiAKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfc2hvd3dhcm5pbmdfb3JpZyA9IHNob3d3YXJuaW5nCisKK2RlZiBfc2hvd3dhcm5tc2cobXNnKToKKyAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCisgICAgdHJ5OgorICAgICAgICBzdyA9IHNob3d3YXJuaW5nCisgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGlmIHN3IGlzIG5vdCBfc2hvd3dhcm5pbmdfb3JpZzoKKyAgICAgICAgICAgICMgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSB3YXMgcmVwbGFjZWQKKyAgICAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShzdyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKKworICAgICAgICAgICAgc3cobXNnLm1lc3NhZ2UsIG1zZy5jYXRlZ29yeSwgbXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLAorICAgICAgICAgICAgICAgbXNnLmZpbGUsIG1zZy5saW5lKQorICAgICAgICAgICAgcmV0dXJuCisgICAgX3Nob3d3YXJubXNnX2ltcGwobXNnKQorCisjIEtlZXAgYSByZWZlcmVuY2UgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIHdhcyByZXBsYWNlZAorX2Zvcm1hdHdhcm5pbmdfb3JpZyA9IGZvcm1hdHdhcm5pbmcKKworZGVmIF9mb3JtYXR3YXJubXNnKG1zZyk6CisgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgorICAgIHRyeToKKyAgICAgICAgZncgPSBmb3JtYXR3YXJuaW5nCisgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGlmIGZ3IGlzIG5vdCBfZm9ybWF0d2FybmluZ19vcmlnOgorICAgICAgICAgICAgIyB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCisgICAgICAgICAgICByZXR1cm4gZncobXNnLm1lc3NhZ2UsIG1zZy5jYXRlZ29yeSwKKyAgICAgICAgICAgICAgICAgICAgICBtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIGxpbmU9bXNnLmxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCiBkZWYgZmlsdGVyd2FybmluZ3MoYWN0aW9uLCBtZXNzYWdlPSIiLCBjYXRlZ29yeT1XYXJuaW5nLCBtb2R1bGU9IiIsIGxpbmVubz0wLAogICAgICAgICAgICAgICAgICAgIGFwcGVuZD1GYWxzZSk6CiAgICAgIiIiSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGxpc3Qgb2Ygd2FybmluZ3MgZmlsdGVycyAoYXQgdGhlIGZyb250KS4KQEAgLTE4NSw3ICsyNjYsNyBAQAogCiAKICMgQ29kZSB0eXBpY2FsbHkgcmVwbGFjZWQgYnkgX3dhcm5pbmdzCi1kZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpOgorZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSk6CiAgICAgIiIiSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgogICAgICMgQ2hlY2sgaWYgbWVzc2FnZSBpcyBhbHJlYWR5IGEgV2FybmluZyBvYmplY3QKICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIFdhcm5pbmcpOgpAQCAtMjM1LDEwICszMTYsMTEgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gbW9kdWxlCiAgICAgcmVnaXN0cnkgPSBnbG9iYWxzLnNldGRlZmF1bHQoIl9fd2FybmluZ3JlZ2lzdHJ5X18iLCB7fSkKICAgICB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsIHJlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgZ2xvYmFscykKKyAgICAgICAgICAgICAgICAgIGdsb2JhbHMsIHNvdXJjZSkKIAogZGVmIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSk6CisgICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZT1Ob25lKToKICAgICBsaW5lbm8gPSBpbnQobGluZW5vKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBmaWxlbmFtZSBvciAiPHVua25vd24+IgpAQCAtMzAzLDIyICszODUsMTggQEAKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGFjdGlvbiAoJXIpIGluIHdhcm5pbmdzLmZpbHRlcnM6XG4gJXMiICUKICAgICAgICAgICAgICAgKGFjdGlvbiwgaXRlbSkpCi0gICAgaWYgbm90IGNhbGxhYmxlKHNob3d3YXJuaW5nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpCiAgICAgIyBQcmludCBtZXNzYWdlIGFuZCBjb250ZXh0Ci0gICAgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8pCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIHNvdXJjZSkKKyAgICBfc2hvd3dhcm5tc2cobXNnKQogCiAKIGNsYXNzIFdhcm5pbmdNZXNzYWdlKG9iamVjdCk6CiAKLSAgICAiIiJIb2xkcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xlIHNob3d3YXJuaW5nKCkgY2FsbC4iIiIKLQogICAgIF9XQVJOSU5HX0RFVEFJTFMgPSAoIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwgImZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiKQorICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiLCAic291cmNlIikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICBsaW5lPU5vbmUpOgorICAgICAgICAgICAgICAgICBsaW5lPU5vbmUsIHNvdXJjZT1Ob25lKToKICAgICAgICAgbG9jYWxfdmFsdWVzID0gbG9jYWxzKCkKICAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5fV0FSTklOR19ERVRBSUxTOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBsb2NhbF92YWx1ZXNbYXR0cl0pCkBAIC0zNzYsMTEgKzQ1NCwxMyBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnNbOl0KICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9zaG93d2FybmluZyA9IHNlbGYuX21vZHVsZS5zaG93d2FybmluZworICAgICAgICBzZWxmLl9zaG93d2Fybm1zZ19pbXBsID0gc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZ19pbXBsCiAgICAgICAgIGlmIHNlbGYuX3JlY29yZDoKICAgICAgICAgICAgIGxvZyA9IFtdCi0gICAgICAgICAgICBkZWYgc2hvd3dhcm5pbmcoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKFdhcm5pbmdNZXNzYWdlKCphcmdzLCAqKmt3YXJncykpCi0gICAgICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzaG93d2FybmluZworICAgICAgICAgICAgc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZ19pbXBsID0gbG9nLmFwcGVuZAorICAgICAgICAgICAgIyBSZXNldCBzaG93d2FybmluZygpIHRvIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgIyB0aGF0IF9zaG93d2Fybm1zZygpIGNhbGxzIF9zaG93d2Fybm1zZ19pbXBsKCkKKyAgICAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNlbGYuX21vZHVsZS5fc2hvd3dhcm5pbmdfb3JpZwogICAgICAgICAgICAgcmV0dXJuIGxvZwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTM5MSw2ICs0NzEsNyBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnMKICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzZWxmLl9zaG93d2FybmluZworICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnX2ltcGwgPSBzZWxmLl9zaG93d2Fybm1zZ19pbXBsCiAKIAogIyBmaWx0ZXJzIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgZmlsdGVyIDUtdHVwbGVzCmRpZmYgLS1naXQgYS9MaWIvd2F2ZS5weSBiL0xpYi93YXZlLnB5CmluZGV4IDhhMTAxZTMuLmY3MWY3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi93YXZlLnB5CisrKyBiL0xpYi93YXZlLnB5CkBAIC03Myw3ICs3Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogCi1fX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciJdCitfX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciIsICJXYXZlX3JlYWQiLCAiV2F2ZV93cml0ZSJdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggN2ZkZGJlOC4uZjcxNTYzYSAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xMSw3ICsxMSw2IEBACiAiIiIKIAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlcgotZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRXcml0ZXIKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgpAQCAtMTI3LDE3ICsxMjYsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYucGFyc2VfcmVxdWVzdCgpOiAjIEFuIGVycm9yIGNvZGUgaGFzIGJlZW4gc2VudCwganVzdCBleGl0CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIEF2b2lkIHBhc3NpbmcgdGhlIHJhdyBmaWxlIG9iamVjdCB3ZmlsZSwgd2hpY2ggY2FuIGRvIHBhcnRpYWwKLSAgICAgICAgIyB3cml0ZXMgKElzc3VlIDI0MjkxKQotICAgICAgICBzdGRvdXQgPSBCdWZmZXJlZFdyaXRlcihzZWxmLndmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLnJmaWxlLCBzdGRvdXQsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKLSAgICAgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91dC5kZXRhY2goKQorICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKKyAgICAgICAgICAgIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKKyAgICAgICAgKQorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfaGFuZGxlciA9IHNlbGYgICAgICAjIGJhY2twb2ludGVyIGZvciBsb2dnaW5nCisgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKIAogCiAKQEAgLTE2MywxMCArMTU2LDkgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKQotICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQotICAgIGltcG9ydCB3ZWJicm93c2VyCi0gICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCi0gICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0Ci0gICAgaHR0cGQuc2VydmVyX2Nsb3NlKCkKKyAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKKyAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKKyAgICAgICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCisgICAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkgICMgc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdApkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weSBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKaW5kZXggNDQ0ZjBiMi4uZTlhMTUzNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CkBAIC0zNTMsMTQgKzM1MywxNCBAQAogY2xhc3MgRG9jdW1lbnRMUzoKICAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCiAKLSAgICBhc3luYyA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpCiAgICAgYXN5bmNfID0gRmFsc2UKKyAgICBsb2NhbHMoKVsnYXN5bmMnXSA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpICAjIEF2b2lkIERlcHJlY2F0aW9uV2FybmluZwogCiAgICAgZGVmIF9nZXRfYXN5bmMoc2VsZik6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9zZXRfYXN5bmMoc2VsZiwgYXN5bmMpOgotICAgICAgICBpZiBhc3luYzoKKyAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBmbGFnKToKKyAgICAgICAgaWYgZmxhZzoKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKAogICAgICAgICAgICAgICAgICJhc3luY2hyb25vdXMgZG9jdW1lbnQgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIikKIApkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggNWRlNDIzMi4uYWI2Yjc5YSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC01OSwxNSArNTksMTUgQEAKIGltcG9ydCByZQogCiB4cGF0aF90b2tlbml6ZXJfcmUgPSByZS5jb21waWxlKAotICAgICIoIgotICAgICInW14nXSonfFwiW15cIl0qXCJ8IgotICAgICI6OnwiCi0gICAgIi8vP3wiCi0gICAgIlwuXC58IgotICAgICJcKFwpfCIKLSAgICAiWy8uKjpcW1xdXChcKUA9XSl8IgotICAgICIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgotICAgICJccysiCisgICAgciIoIgorICAgIHIiJ1teJ10qJ3xcIlteXCJdKlwifCIKKyAgICByIjo6fCIKKyAgICByIi8vP3wiCisgICAgciJcLlwufCIKKyAgICByIlwoXCl8IgorICAgIHIiWy8uKjpcW1xdXChcKUA9XSl8IgorICAgIHIiKCg/Olx7W159XStcfSk/W14vXFtcXVwoXClAPVxzXSspfCIKKyAgICByIlxzKyIKICAgICApCiAKIGRlZiB4cGF0aF90b2tlbml6ZXIocGF0dGVybiwgbmFtZXNwYWNlcz1Ob25lKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZ2V0KGtleSkgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKHIiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CiAgICAgICAgICMgW3RhZ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKQEAgLTE4OCw3ICsxODgsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZmluZCh0YWcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgIHJldHVybiBzZWxlY3QKLSAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItPSciIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnPSd2YWx1ZSddCiAgICAgICAgIHRhZyA9IHByZWRpY2F0ZVswXQogICAgICAgICB2YWx1ZSA9IHByZWRpY2F0ZVstMV0KZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IDkyODIxYzUuLjczNTQwNTYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtODUsNyArODUsNyBAQAogICAgICJUcmVlQnVpbGRlciIsCiAgICAgIlZFUlNJT04iLAogICAgICJYTUwiLCAiWE1MSUQiLAotICAgICJYTUxQYXJzZXIiLAorICAgICJYTUxQYXJzZXIiLCAiWE1MUHVsbFBhcnNlciIsCiAgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCkBAIC05NSw2ICs5NSw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKQEAgLTEwMjksNyArMTAzMCw3IEBACiAgICAgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgcHJlZml4IGlzIHJlc2VydmVkIG9yIGlzIGludmFsaWQuCiAKICAgICAiIiIKLSAgICBpZiByZS5tYXRjaCgibnNcZCskIiwgcHJlZml4KToKKyAgICBpZiByZS5tYXRjaChyIm5zXGQrJCIsIHByZWZpeCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlByZWZpeCBmb3JtYXQgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZSIpCiAgICAgZm9yIGssIHYgaW4gbGlzdChfbmFtZXNwYWNlX21hcC5pdGVtcygpKToKICAgICAgICAgaWYgayA9PSB1cmkgb3IgdiA9PSBwcmVmaXg6CkBAIC0xMDg0LDcgKzEwODUsNyBAQAogICAgICAgICBpZiAiXCIiIGluIHRleHQ6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCJcIiIsICImcXVvdDsiKQogICAgICAgICAjIFRoZSBmb2xsb3dpbmcgYnVzaW5lc3Mgd2l0aCBjYXJyaWFnZSByZXR1cm5zIGlzIHRvIHNhdGlzZnkKLSAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQgCisgICAgICAgICMgU2VjdGlvbiAyLjExIG9mIHRoZSBYTUwgc3BlY2lmaWNhdGlvbiwgc3RhdGluZyB0aGF0CiAgICAgICAgICMgQ1Igb3IgQ1IgTE4gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgganVzdCBMTgogICAgICAgICAjIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI3NlYy1saW5lLWVuZHMKICAgICAgICAgaWYgIlxyXG4iIGluIHRleHQ6CkBAIC0xMjExLDE2ICsxMjEyLDM3IEBACiAgICAgUmV0dXJucyBhbiBpdGVyYXRvciBwcm92aWRpbmcgKGV2ZW50LCBlbGVtKSBwYWlycy4KIAogICAgICIiIgorICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKKyAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgorICAgIHB1bGxwYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQorICAgIGRlZiBpdGVyYXRvcigpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCgxNiAqIDEwMjQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcHVsbHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICByb290ID0gcHVsbHBhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICBpdC5yb290ID0gcm9vdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgY2xvc2Vfc291cmNlOgorICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKyAgICBjbGFzcyBJdGVyUGFyc2VJdGVyYXRvcihjb2xsZWN0aW9ucy5JdGVyYXRvcik6CisgICAgICAgIF9fbmV4dF9fID0gaXRlcmF0b3IoKS5fX25leHRfXworICAgIGl0ID0gSXRlclBhcnNlSXRlcmF0b3IoKQorICAgIGl0LnJvb3QgPSBOb25lCisgICAgZGVsIGl0ZXJhdG9yLCBJdGVyUGFyc2VJdGVyYXRvcgorCiAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX0l0ZXJQYXJzZUl0ZXJhdG9yKHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZSkKLSAgICBleGNlcHQ6Ci0gICAgICAgIGlmIGNsb3NlX3NvdXJjZToKLSAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlCisKKyAgICByZXR1cm4gaXQKIAogCiBjbGFzcyBYTUxQdWxsUGFyc2VyOgpAQCAtMTIzMCw5ICsxMjUyLDcgQEAKICAgICAgICAgIyB1cG9uIGluIHVzZXIgY29kZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzc0MSBmb3IgbW9yZSBkZXRhaWxzLgogCi0gICAgICAgICMgX2VsZW1lbnR0cmVlLmMgZXhwZWN0cyBhIGxpc3QsIG5vdCBhIGRlcXVlCi0gICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IFtdCi0gICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IF9wYXJzZXIgb3IgWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgICAgICAjIHdpcmUgdXAgdGhlIHBhcnNlciBmb3IgZXZlbnQgcmVwb3J0aW5nCiAgICAgICAgIGlmIGV2ZW50cyBpcyBOb25lOgpAQCAtMTI3MCw2NCArMTI5MCwxNCBAQAogICAgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgaXRlcmF0b3IuCiAgICAgICAgICIiIgogICAgICAgICBldmVudHMgPSBzZWxmLl9ldmVudHNfcXVldWUKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGluZGV4ID0gc2VsZi5faW5kZXgKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBldmVudCA9IGV2ZW50c1tzZWxmLl9pbmRleF0KLSAgICAgICAgICAgICAgICAjIEF2b2lkIHJldGFpbmluZyByZWZlcmVuY2VzIHRvIHBhc3QgZXZlbnRzCi0gICAgICAgICAgICAgICAgZXZlbnRzW3NlbGYuX2luZGV4XSA9IE5vbmUKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpbmRleCArPSAxCi0gICAgICAgICAgICAjIENvbXBhY3QgdGhlIGxpc3QgaW4gYSBPKDEpIGFtb3J0aXplZCBmYXNoaW9uCi0gICAgICAgICAgICAjIEFzIG5vdGVkIGFib3ZlLCBfZWxlbWVudHJlZS5jIG5lZWRzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgICAgIGlmIGluZGV4ICogMiA+PSBsZW4oZXZlbnRzKToKLSAgICAgICAgICAgICAgICBldmVudHNbOmluZGV4XSA9IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gaW5kZXgKKyAgICAgICAgd2hpbGUgZXZlbnRzOgorICAgICAgICAgICAgZXZlbnQgPSBldmVudHMucG9wbGVmdCgpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgIHJhaXNlIGV2ZW50CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGV2ZW50CiAKIAotY2xhc3MgX0l0ZXJQYXJzZUl0ZXJhdG9yOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKLSAgICAgICAgIyBwYXJzZXIgYXJndW1lbnQgb2YgaXRlcnBhcnNlIGlzIHJlbW92ZWQsIHRoaXMgY2FuIGJlIGtpbGxlZC4KLSAgICAgICAgc2VsZi5fcGFyc2VyID0gWE1MUHVsbFBhcnNlcihldmVudHM9ZXZlbnRzLCBfcGFyc2VyPXBhcnNlcikKLSAgICAgICAgc2VsZi5fZmlsZSA9IHNvdXJjZQotICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gY2xvc2Vfc291cmNlCi0gICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lCi0KLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgZm9yIGV2ZW50IGluIHNlbGYuX3BhcnNlci5yZWFkX2V2ZW50cygpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIuX3BhcnNlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2ICogMTAyNCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuX2Nsb3NlX2FuZF9yZXR1cm5fcm9vdCgpCi0gICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290Ci0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgotICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotCiBkZWYgWE1MKHRleHQsIHBhcnNlcj1Ob25lKToKICAgICAiIiJQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzdHJpbmcgY29uc3RhbnQuCiAKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggYmJmOWVlNi4uYmQzMjc4ZSAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEzMiw2ICsxMzIsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKQEAgLTE1MSw3ICsxNTIsNyBAQAogICAgIHJldHVybiBzLnJlcGxhY2UoIj4iLCAiJmd0OyIsKQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtNjY3LDYgKzY2OCw4IEBACiAKICAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgICMgcHJlcGFyZSB0byBoYW5kbGUgdGhpcyBlbGVtZW50CisgICAgICAgIGlmICc6JyBpbiB0YWc6CisgICAgICAgICAgICB0YWcgPSB0YWcuc3BsaXQoJzonKVstMV0KICAgICAgICAgaWYgdGFnID09ICJhcnJheSIgb3IgdGFnID09ICJzdHJ1Y3QiOgogICAgICAgICAgICAgc2VsZi5fbWFya3MuYXBwZW5kKGxlbihzZWxmLl9zdGFjaykpCiAgICAgICAgIHNlbGYuX2RhdGEgPSBbXQpAQCAtNjgyLDkgKzY4NSwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWddCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MgIyB1bmtub3duIHRhZyA/Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZihzZWxmLCAiIi5qb2luKHNlbGYuX2RhdGEpKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiB0YWc6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZy5zcGxpdCgnOicpWy0xXV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCiAKICAgICAjCiAgICAgIyBhY2NlbGVyYXRvciBzdXBwb3J0CkBAIC02OTQsOSArNzAxLDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIGRhdGEpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKIAogICAgICMKICAgICAjIGVsZW1lbnQgZGVjb2RlcnMKQEAgLTcyMSwxNCArNzMyLDIzIEBACiAgICAgZGVmIGVuZF9pbnQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYXBwZW5kKGludChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImkxIl0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImkyIl0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk0Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk4Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImludCJdID0gZW5kX2ludAorICAgIGRpc3BhdGNoWyJiaWdpbnRlZ2VyIl0gPSBlbmRfaW50CiAKICAgICBkZWYgZW5kX2RvdWJsZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoZmxvYXQoZGF0YSkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJkb3VibGUiXSA9IGVuZF9kb3VibGUKKyAgICBkaXNwYXRjaFsiZmxvYXQiXSA9IGVuZF9kb3VibGUKKworICAgIGRlZiBlbmRfYmlnZGVjaW1hbChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5hcHBlbmQoRGVjaW1hbChkYXRhKSkKKyAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImJpZ2RlY2ltYWwiXSA9IGVuZF9iaWdkZWNpbWFsCiAKICAgICBkZWYgZW5kX3N0cmluZyhzZWxmLCBkYXRhKToKICAgICAgICAgaWYgc2VsZi5fZW5jb2Rpbmc6CmRpZmYgLS1naXQgYS9MaWIveG1scnBjL3NlcnZlci5weSBiL0xpYi94bWxycGMvc2VydmVyLnB5CmluZGV4IDc4MTc2OTMuLjg0OWJmZGQgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvc2VydmVyLnB5CisrKyBiL0xpYi94bWxycGMvc2VydmVyLnB5CkBAIC05NzEsMTYgKzk3MSwxNSBAQAogICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCi0gICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKLSAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKLSAgICB0cnk6Ci0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKKyAgICAgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICAgICAgcHJpbnQoJ0l0IGlzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBleGFtcGxlIHNlcnZlciB3aXRoaW4gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCAwNDhmNjBhLi43ZjJiNDNjIDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMzcxLDcgKzM3MSw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZW1vZGU9JXInICUgc3RhdC5maWxlbW9kZShoaSkpCiAgICAgICAgIGlmIGxvOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGV4dGVybmFsX2F0dHI9JSN4JyAlIGxvKQotICAgICAgICBpc2RpciA9IHNlbGYuZmlsZW5hbWVbLTE6XSA9PSAnLycKKyAgICAgICAgaXNkaXIgPSBzZWxmLmlzX2RpcigpCiAgICAgICAgIGlmIG5vdCBpc2RpciBvciBzZWxmLmZpbGVfc2l6ZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlX3NpemU9JXInICUgc2VsZi5maWxlX3NpemUpCiAgICAgICAgIGlmICgobm90IGlzZGlyIG9yIHNlbGYuY29tcHJlc3Nfc2l6ZSkgYW5kCkBAIC00NDksNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBlbGlmIGxuID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvdW50cyA9ICgpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3JydXB0IGV4dHJhIGZpZWxkICVzIiUobG4sKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQ29ycnVwdCBleHRyYSBmaWVsZCAlMDR4IChzaXplPSVkKSIgJSAodHAsIGxuKSkKIAogICAgICAgICAgICAgICAgIGlkeCA9IDAKIApAQCAtNDY5LDYgKzQ2OSw0MiBAQAogCiAgICAgICAgICAgICBleHRyYSA9IGV4dHJhW2xuKzQ6XQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZmlsZShjbHMsIGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gYXBwcm9wcmlhdGUgWmlwSW5mbyBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGZpbGVuYW1lIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGFyY25hbWUgaXMgdGhlIG5hbWUgd2hpY2ggaXQgd2lsbCBoYXZlIHdpdGhpbiB0aGUgYXJjaGl2ZSAoYnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIGZpbGVuYW1lLCBidXQgd2l0aG91dCBhIGRyaXZlIGxldHRlciBhbmQgd2l0aAorICAgICAgICBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKKyAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKKyAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQorICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KKyAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKKyAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgorICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKKyAgICAgICAgemluZm8gPSBjbHMoYXJjbmFtZSwgZGF0ZV90aW1lKQorICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKHN0LnN0X21vZGUgJiAweEZGRkYpIDw8IDE2ICAjIFVuaXggYXR0cmlidXRlcworICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKKworICAgICAgICByZXR1cm4gemluZm8KKworICAgIGRlZiBpc19kaXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmZpbGVuYW1lWy0xXSA9PSAnLycKKwogCiBjbGFzcyBfWmlwRGVjcnlwdGVyOgogICAgICIiIkNsYXNzIHRvIGhhbmRsZSBkZWNyeXB0aW9uIG9mIGZpbGVzIHN0b3JlZCB3aXRoaW4gYSBaSVAgYXJjaGl2ZS4KQEAgLTYxOCw3ICs2NTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKICAgICBlbHNlOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKIAogCiBkZWYgX2dldF9jb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgpAQCAtNjUxLDE0ICs2ODcsMTkgQEAKIAogCiBjbGFzcyBfU2hhcmVkRmlsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jayk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2ssIHdyaXRpbmcpOgogICAgICAgICBzZWxmLl9maWxlID0gZmlsZQogICAgICAgICBzZWxmLl9wb3MgPSBwb3MKICAgICAgICAgc2VsZi5fY2xvc2UgPSBjbG9zZQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jaworICAgICAgICBzZWxmLl93cml0aW5nID0gd3JpdGluZwogCiAgICAgZGVmIHJlYWQoc2VsZiwgbj0tMSk6CiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3dyaXRpbmcoKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpcyBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQogICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQobikKICAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCkBAIC03MDIsOSArNzQzLDYgQEAKICAgICAjIFJlYWQgZnJvbSBjb21wcmVzc2VkIGZpbGVzIGluIDRrIGJsb2Nrcy4KICAgICBNSU5fUkVBRF9TSVpFID0gNDA5NgogCi0gICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICBQQVRURVJOID0gcmUuY29tcGlsZShicideKD9QPGNodW5rPlteXHJcbl0rKXwoP1A8bmV3bGluZT5cbnxcclxuPyknKQotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVvYmosIG1vZGUsIHppcGluZm8sIGRlY3J5cHRlcj1Ob25lLAogICAgICAgICAgICAgICAgICBjbG9zZV9maWxlb2JqPUZhbHNlKToKICAgICAgICAgc2VsZi5fZmlsZW9iaiA9IGZpbGVvYmoKQEAgLTcyMSw3ICs3NTksNiBAQAogICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKIAotICAgICAgICBzZWxmLl91bml2ZXJzYWwgPSAnVScgaW4gbW9kZQogICAgICAgICBzZWxmLm5ld2xpbmVzID0gTm9uZQogCiAgICAgICAgICMgQWRqdXN0IHJlYWQgc2l6ZSBmb3IgZW5jcnlwdGVkIGZpbGVzIHNpbmNlIHRoZSBmaXJzdCAxMiBieXRlcwpAQCAtNzU4LDcgKzc5NSw3IEBACiAgICAgICAgIElmIGxpbWl0IGlzIHNwZWNpZmllZCwgYXQgbW9zdCBsaW1pdCBieXRlcyB3aWxsIGJlIHJlYWQuCiAgICAgICAgICIiIgogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWwgYW5kIGxpbWl0IDwgMDoKKyAgICAgICAgaWYgbGltaXQgPCAwOgogICAgICAgICAgICAgIyBTaG9ydGN1dCBjb21tb24gY2FzZSAtIG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyLgogICAgICAgICAgICAgaSA9IHNlbGYuX3JlYWRidWZmZXIuZmluZChiJ1xuJywgc2VsZi5fb2Zmc2V0KSArIDEKICAgICAgICAgICAgIGlmIGkgPiAwOgpAQCAtNzY2LDQxICs4MDMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IGkKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWw6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCi0KLSAgICAgICAgbGluZSA9IGInJwotICAgICAgICB3aGlsZSBsaW1pdCA8IDAgb3IgbGVuKGxpbmUpIDwgbGltaXQ6Ci0gICAgICAgICAgICByZWFkYWhlYWQgPSBzZWxmLnBlZWsoMikKLSAgICAgICAgICAgIGlmIHJlYWRhaGVhZCA9PSBiJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHBhdHRlcm4gcmV0dXJucyBlaXRoZXIgYSBsaW5lIGNodW5rIG9yIGEgbmV3bGluZSwgYnV0IG5vdAotICAgICAgICAgICAgIyBib3RoLiBDb21iaW5lZCB3aXRoIHBlZWsoMiksIHdlIGFyZSBhc3N1cmVkIHRoYXQgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAjICdcclxuJyBpcyBhbHdheXMgcmV0cmlldmVkIGNvbXBsZXRlbHkgYW5kIG5ldmVyIHNwbGl0IGludG8KLSAgICAgICAgICAgICMgc2VwYXJhdGUgbmV3bGluZXMgLSAnXHInLCAnXG4nIGR1ZSB0byBjb2luY2lkZW50YWwgcmVhZGFoZWFkcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIG1hdGNoID0gc2VsZi5QQVRURVJOLnNlYXJjaChyZWFkYWhlYWQpCi0gICAgICAgICAgICBuZXdsaW5lID0gbWF0Y2guZ3JvdXAoJ25ld2xpbmUnKQotICAgICAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLm5ld2xpbmVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMgPSBbXQotICAgICAgICAgICAgICAgIGlmIG5ld2xpbmUgbm90IGluIHNlbGYubmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMuYXBwZW5kKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihuZXdsaW5lKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lICsgYidcbicKLQotICAgICAgICAgICAgY2h1bmsgPSBtYXRjaC5ncm91cCgnY2h1bmsnKQotICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rWzogbGltaXQgLSBsZW4obGluZSldCi0KLSAgICAgICAgICAgIHNlbGYuX29mZnNldCArPSBsZW4oY2h1bmspCi0gICAgICAgICAgICBsaW5lICs9IGNodW5rCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIGxpbWl0KQogCiAgICAgZGVmIHBlZWsoc2VsZiwgbj0xKToKICAgICAgICAgIiIiUmV0dXJucyBidWZmZXJlZCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgcG9zaXRpb24uIiIiCkBAIC05NTgsNiArOTYxLDc2IEBACiAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKIAogCitjbGFzcyBfWmlwV3JpdGVGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgemYsIHppbmZvLCB6aXA2NCk6CisgICAgICAgIHNlbGYuX3ppbmZvID0gemluZm8KKyAgICAgICAgc2VsZi5femlwNjQgPSB6aXA2NAorICAgICAgICBzZWxmLl96aXBmaWxlID0gemYKKyAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBzZWxmLl9maWxlX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NyYyA9IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfZmlsZW9iaihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ppcGZpbGUuZnAKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbmJ5dGVzID0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSArPSBuYnl0ZXMKKyAgICAgICAgc2VsZi5fY3JjID0gY3JjMzIoZGF0YSwgc2VsZi5fY3JjKQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc29yOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoZGF0YSkKKyAgICAgICAgcmV0dXJuIG5ieXRlcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNsb3NlKCkKKyAgICAgICAgIyBGbHVzaCBhbnkgZGF0YSBmcm9tIHRoZSBjb21wcmVzc29yLCBhbmQgdXBkYXRlIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGJ1ZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoYnVmKQorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2NvbXByZXNzX3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUgPSBzZWxmLl9maWxlX3NpemUKKyAgICAgICAgc2VsZi5femluZm8uQ1JDID0gc2VsZi5fY3JjCisgICAgICAgIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorCisgICAgICAgICMgV3JpdGUgdXBkYXRlZCBoZWFkZXIgaW5mbworICAgICAgICBpZiBzZWxmLl96aW5mby5mbGFnX2JpdHMgJiAweDA4OgorICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHNlbGYuX3ppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgc2VsZi5femluZm8uQ1JDLAorICAgICAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUsIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICBzZWxmLl96aXBmaWxlLnN0YXJ0X2RpciA9IHNlbGYuX2ZpbGVvYmoudGVsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5femlwNjQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZV9zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCBaSVA2NCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGltaXQnKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdaSVA2NCBsaW1pdCcpCisgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQorICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKKworICAgICAgICAgICAgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShzZWxmLl96aW5mby5GaWxlSGVhZGVyKHNlbGYuX3ppcDY0KSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aXBmaWxlLnN0YXJ0X2RpcikKKworICAgICAgICBzZWxmLl96aXBmaWxlLl93cml0aW5nID0gRmFsc2UKKworICAgICAgICAjIFN1Y2Nlc3NmdWxseSB3cml0dGVuOiBBZGQgZmlsZSB0byBvdXIgY2FjaGVzCisgICAgICAgIHNlbGYuX3ppcGZpbGUuZmlsZWxpc3QuYXBwZW5kKHNlbGYuX3ppbmZvKQorICAgICAgICBzZWxmLl96aXBmaWxlLk5hbWVUb0luZm9bc2VsZi5femluZm8uZmlsZW5hbWVdID0gc2VsZi5femluZm8KKwogY2xhc3MgWmlwRmlsZToKICAgICAiIiIgQ2xhc3Mgd2l0aCBtZXRob2RzIHRvIG9wZW4sIHJlYWQsIHdyaXRlLCBjbG9zZSwgbGlzdCB6aXAgZmlsZXMuCiAKQEAgLTk4Miw3ICsxMDU1LDcgQEAKICAgICAgICAgIiIiT3BlbiB0aGUgWklQIGZpbGUgd2l0aCBtb2RlIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAogICAgICAgICBvciBhcHBlbmQgJ2EnLiIiIgogICAgICAgICBpZiBtb2RlIG5vdCBpbiAoJ3InLCAndycsICd4JywgJ2EnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiWmlwRmlsZSByZXF1aXJlcyBtb2RlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKIAogICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pCiAKQEAgLTEwMjAsNiArMTA5Myw3IEBACiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgPSAxCiAgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IEZhbHNlCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgbW9kZSA9PSAncic6CkBAIC0xMDU2LDcgKzExMzAsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5fc3RhcnRfZGlzayA9IHNlbGYuZnAudGVsbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKQEAgLTEyMDUsNyArMTI3OSw3IEBACiAgICAgZGVmIHNldHBhc3N3b3JkKHNlbGYsIHB3ZCk6CiAgICAgICAgICIiIlNldCBkZWZhdWx0IHBhc3N3b3JkIGZvciBlbmNyeXB0ZWQgZmlsZXMuIiIiCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCiAgICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgIHNlbGYucHdkID0gcHdkCiAgICAgICAgIGVsc2U6CkBAIC0xMjE5LDcgKzEyOTMsNyBAQAogICAgIEBjb21tZW50LnNldHRlcgogICAgIGRlZiBjb21tZW50KHNlbGYsIGNvbW1lbnQpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21tZW50LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KSkKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY29tbWVudDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKGNvbW1lbnQpLl9fbmFtZV9fKQogICAgICAgICAjIGNoZWNrIGZvciB2YWxpZCBjb21tZW50IGxlbmd0aAogICAgICAgICBpZiBsZW4oY29tbWVudCkgPiBaSVBfTUFYX0NPTU1FTlQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKQEAgLTEyMzQsMzAgKzEzMDgsNTUgQEAKICAgICAgICAgd2l0aCBzZWxmLm9wZW4obmFtZSwgInIiLCBwd2QpIGFzIGZwOgogICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQogCi0gICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4iIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgIlUiLCAiclUiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiLCAiVSIsIG9yICJyVSInKQotICAgICAgICBpZiAnVScgaW4gbW9kZToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBkZWYgb3BlbihzZWxmLCBuYW1lLCBtb2RlPSJyIiwgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4KKworICAgICAgICBuYW1lIGlzIGEgc3RyaW5nIGZvciB0aGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgWklQIGZpbGUsIG9yIGEgWmlwSW5mbworICAgICAgICBvYmplY3QuCisKKyAgICAgICAgbW9kZSBzaG91bGQgYmUgJ3InIHRvIHJlYWQgYSBmaWxlIGFscmVhZHkgaW4gdGhlIFpJUCBmaWxlLCBvciAndycgdG8KKyAgICAgICAgd3JpdGUgdG8gYSBmaWxlIG5ld2x5IGFkZGVkIHRvIHRoZSBhcmNoaXZlLgorCisgICAgICAgIHB3ZCBpcyB0aGUgcGFzc3dvcmQgdG8gZGVjcnlwdCBmaWxlcyAob25seSB1c2VkIGZvciByZWFkaW5nKS4KKworICAgICAgICBXaGVuIHdyaXRpbmcsIGlmIHRoZSBmaWxlIHNpemUgaXMgbm90IGtub3duIGluIGFkdmFuY2UgYnV0IG1heSBleGNlZWQKKyAgICAgICAgMiBHaUIsIHBhc3MgZm9yY2VfemlwNjQgdG8gdXNlIHRoZSBaSVA2NCBmb3JtYXQsIHdoaWNoIGNhbiBoYW5kbGUgbGFyZ2UKKyAgICAgICAgZmlsZXMuICBJZiB0aGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLCBpdCBpcyBiZXN0IHRvIHBhc3MgYSBaaXBJbmZvCisgICAgICAgIGluc3RhbmNlIGZvciBuYW1lLCB3aXRoIHppbmZvLmZpbGVfc2l6ZSBzZXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBtb2RlIG5vdCBpbiB7InIiLCAidyJ9OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiIG9yICJ3IicpCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCisgICAgICAgIGlmIHB3ZCBhbmQgKG1vZGUgPT0gInciKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInB3ZCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgcmVhZGluZyBmaWxlcyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHJlYWQgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB1c2UgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCBaaXBJbmZvKToKICAgICAgICAgICAgICMgJ25hbWUnIGlzIGFscmVhZHkgYW4gaW5mbyBvYmplY3QKICAgICAgICAgICAgIHppbmZvID0gbmFtZQorICAgICAgICBlbGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKG5hbWUpCisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBHZXQgaW5mbyBvYmplY3QgZm9yIG5hbWUKICAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCiAKKyAgICAgICAgaWYgbW9kZSA9PSAndyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3Blbl90b193cml0ZSh6aW5mbywgZm9yY2VfemlwNjQ9Zm9yY2VfemlwNjQpCisKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAiaXMgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQorCisgICAgICAgICMgT3BlbiBmb3IgcmVhZGluZzoKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCArPSAxCi0gICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwgc2VsZi5fZnBjbG9zZSwgc2VsZi5fbG9jaykKKyAgICAgICAgemVmX2ZpbGUgPSBfU2hhcmVkRmlsZShzZWxmLmZwLCB6aW5mby5oZWFkZXJfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2ssIGxhbWJkYTogc2VsZi5fd3JpdGluZykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBTa2lwIHRoZSBmaWxlIGhlYWRlcjoKICAgICAgICAgICAgIGZoZWFkZXIgPSB6ZWZfZmlsZS5yZWFkKHNpemVGaWxlSGVhZGVyKQpAQCAtMTI5Nyw3ICsxMzk2LDcgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgogICAgICAgICAgICAgICAgICAgICBwd2QgPSBzZWxmLnB3ZAogICAgICAgICAgICAgICAgIGlmIG5vdCBwd2Q6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlcyBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGaWxlICVyIGlzIGVuY3J5cHRlZCwgcGFzc3dvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIGZvciBleHRyYWN0aW9uIiAlIG5hbWUpCiAKICAgICAgICAgICAgICAgICB6ZCA9IF9aaXBEZWNyeXB0ZXIocHdkKQpAQCAtMTMxNSwxMyArMTQxNCw1NiBAQAogICAgICAgICAgICAgICAgICAgICAjIGNvbXBhcmUgYWdhaW5zdCB0aGUgQ1JDIG90aGVyd2lzZQogICAgICAgICAgICAgICAgICAgICBjaGVja19ieXRlID0gKHppbmZvLkNSQyA+PiAyNCkgJiAweGZmCiAgICAgICAgICAgICAgICAgaWYgaFsxMV0gIT0gY2hlY2tfYnl0ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUiLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJhZCBwYXNzd29yZCBmb3IgZmlsZSAlciIgJSBuYW1lKQogCiAgICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLCBUcnVlKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZQogCisgICAgZGVmIF9vcGVuX3RvX3dyaXRlKHNlbGYsIHppbmZvLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgIGlmIGZvcmNlX3ppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImZvcmNlX3ppcDY0IGlzIFRydWUsIGJ1dCBhbGxvd1ppcDY0IHdhcyBGYWxzZSB3aGVuIG9wZW5pbmcgIgorICAgICAgICAgICAgICAgICJ0aGUgWklQIGZpbGUuIgorICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3Qgd3JpdGUgdG8gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXIgd3JpdGUgaGFuZGxlIG9wZW4gb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSBmaXJzdCBoYW5kbGUgYmVmb3JlIG9wZW5pbmcgYW5vdGhlci4iKQorCisgICAgICAgICMgU2l6ZXMgYW5kIENSQyBhcmUgb3ZlcndyaXR0ZW4gd2l0aCBjb3JyZWN0IGRhdGEgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgZmlsZQorICAgICAgICBpZiBub3QgaGFzYXR0cih6aW5mbywgJ2ZpbGVfc2l6ZScpOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICB6aW5mby5DUkMgPSAwCisKKyAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAorICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4CisKKyAgICAgICAgaWYgbm90IHppbmZvLmV4dGVybmFsX2F0dHI6CisgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gMG82MDAgPDwgMTYgICMgcGVybWlzc2lvbnM6ID9ydy0tLS0tLS0KKworICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKKyAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCisgICAgICAgICAgICAgICAgKGZvcmNlX3ppcDY0IG9yIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVCkKKworICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpCisKKyAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IFRydWUKKyAgICAgICAgcmV0dXJuIF9aaXBXcml0ZUZpbGUoc2VsZiwgemluZm8sIHppcDY0KQorCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAogICAgICAgICAgICB1c2luZyBpdHMgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseQpAQCAtMTM5MSw3ICsxNTMzLDcgQEAKICAgICAgICAgaWYgdXBwZXJkaXJzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModXBwZXJkaXJzKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHVwcGVyZGlycykKIAotICAgICAgICBpZiBtZW1iZXIuZmlsZW5hbWVbLTFdID09ICcvJzoKKyAgICAgICAgaWYgbWVtYmVyLmlzX2RpcigpOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIodGFyZ2V0cGF0aCk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwYXRoCkBAIC0xNDA4LDkgKzE1NTAsOSBAQAogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdEdXBsaWNhdGUgbmFtZTogJXInICUgemluZm8uZmlsZW5hbWUsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoJ3cnLCAneCcsICdhJyk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgpAQCAtMTQyOSwxMDUgKzE1NzEsNDMgQEAKICAgICAgICAgIiIiUHV0IHRoZSBieXRlcyBmcm9tIGZpbGVuYW1lIGludG8gdGhlIGFyY2hpdmUgdW5kZXIgdGhlIG5hbWUKICAgICAgICAgYXJjbmFtZS4iIiIKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzIgorICAgICAgICAgICAgKQogCi0gICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKLSAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKLSAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKLSAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQotICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KLSAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKLSAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgotICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCi0gICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKLSAgICAgICAgemluZm8gPSBaaXBJbmZvKGFyY25hbWUsIGRhdGVfdGltZSkKLSAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IChzdFswXSAmIDB4RkZGRikgPDwgMTYgICAgICAjIFVuaXggYXR0cmlidXRlcwotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBaSVBfU1RPUkVECi0gICAgICAgIGVsaWYgY29tcHJlc3NfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KKyAgICAgICAgemluZm8gPSBaaXBJbmZvLmZyb21fZmlsZShmaWxlbmFtZSwgYXJjbmFtZSkKKworICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCisgICAgICAgICAgICB6aW5mby5DUkMgPSAwCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogCi0gICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKLSAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAotICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgIGlmIHppbmZvLmlzX2RpcigpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CiAgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQogCi0gICAgICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZwogICAgICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQogICAgICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAotICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQotICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMKLSAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQotICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCi0gICAgICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKLSAgICAgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIHNyYywgc2VsZi5vcGVuKHppbmZvLCAndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZGVzdCwgMTAyNCo4KQogCiAgICAgZGVmIHdyaXRlc3RyKHNlbGYsIHppbmZvX29yX2FyY25hbWUsIGRhdGEsIGNvbXByZXNzX3R5cGU9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIGEgZmlsZSBpbnRvIHRoZSBhcmNoaXZlLiAgVGhlIGNvbnRlbnRzIGlzICdkYXRhJywgd2hpY2gKQEAgLTE1NTAsNDcgKzE2MzAsMjAgQEAKICAgICAgICAgICAgIHppbmZvID0gemluZm9fb3JfYXJjbmFtZQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cy4iCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gbGVuKGRhdGEpICAgICAgICAgICAgIyBVbmNvbXByZXNzZWQgc2l6ZQogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQotICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgotCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KLSAgICAgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBjbzoKLSAgICAgICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgICAgICB6aXA2NCA9IHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIFwKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgICAgICB3aXRoIHNlbGYub3Blbih6aW5mbywgbW9kZT0ndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgZGVzdC53cml0ZShkYXRhKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkNhbGwgdGhlICJjbG9zZSgpIiBtZXRob2QgaW4gY2FzZSB0aGUgdXNlciBmb3Jnb3QuIiIiCkBAIC0xNjAyLDYgKzE2NTUsMTEgQEAKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IGNsb3NlIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIGNsb3NpbmcgdGhlIHppcC4iKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKQEAgLTE3NDYsNyArMTgwNCw3IEBACiAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGhuYW1lKToKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSAncGF0aCcgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSkgZWxzZSAnZmlsZScKLSAgICAgICAgICAgICAgICBwcmludCgnJXMgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCisgICAgICAgICAgICAgICAgcHJpbnQoJyVzICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSAobGFiZWwsIHBhdGhuYW1lKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXIsIG5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGhuYW1lKToKQEAgLTE3NzcsNyArMTgzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXh0ID09ICIucHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBhcmNuYW1lID0gc2VsZi5fZ2V0X2NvZGVuYW1lKHBhdGhbMDotM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSkKQEAgLTE3OTQsNyArMTg1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBjNzZjNGYxLi44ZGZkMDkyIDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEwMSw2ICsxMDEsNyBAQAogCiBGV19QUkVGSVggPSBbIkxpYnJhcnkiLCAiRnJhbWV3b3JrcyIsICJQeXRob24uZnJhbWV3b3JrIl0KIEZXX1ZFUlNJT05fUFJFRklYID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCitGV19TU0xfRElSRUNUT1JZID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCiAKICMgVGhlIGRpcmVjdG9yeSB3ZSdsbCB1c2UgdG8gY3JlYXRlIHRoZSBidWlsZCAod2lsbCBiZSBlcmFzZWQgYW5kIHJlY3JlYXRlZCkKIFdPUktESVIgPSAiL3RtcC9fcHkiCkBAIC0yMDYsNDEgKzIwNywxMSBAQAogCiAgICAgTFRfMTBfNSA9IGJvb2woZ2V0RGVwdGFyZ2V0VHVwbGUoKSA8ICgxMCwgNSkpCiAKLSAgICBpZiBub3QgKDEwLCA1KSA8IGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDEwKToKLSAgICAgICAgIyBUaGUgT3BlblNTTCBsaWJzIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjUgYW5kIGVhcmxpZXIgYXJlCi0gICAgICAgICMgaG9wZWxlc3NseSBvdXQtb2YtZGF0ZSBhbmQgZG8gbm90IGluY2x1ZGUgQXBwbGUncyB0aWUtaW4gdG8KLSAgICAgICAgIyB0aGUgcm9vdCBjZXJ0aWZpY2F0ZXMgaW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgdmlhIFRFQQotICAgICAgICAjIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gT1MgWCAxMC42LiAgTm90ZSB0aGF0IHRoaXMgYXBwbGllcyB0bwotICAgICAgICAjIHByb2dyYW1zIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aCBhIDEwLjUgU0RLIGV2ZW4gd2hlbiBydW4gb24KLSAgICAgICAgIyBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLgotICAgICAgICAjCi0gICAgICAgICMgRGVhbGluZyB3aXRoIENBcyBpcyBtZXNzeS4gIEZvciBub3csIGp1c3Qgc3VwcGx5IGEKLSAgICAgICAgIyBsb2NhbCBsaWJzc2wgYW5kIGxpYmNyeXB0byBmb3IgdGhlIG9sZGVyIGluc3RhbGxlciB2YXJpYW50cwotICAgICAgICAjIChlLmcuIHRoZSBweXRob24ub3JnIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlcikgdGhhdCB1c2UgdGhlCi0gICAgICAgICMgc2FtZSBkZWZhdWx0IHNzbCBjZXJ0ZmlsZSBsb2NhdGlvbiBhcyB0aGUgc3lzdGVtIGxpYnMgZG86Ci0gICAgICAgICMgICAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTC9jZXJ0LnBlbQotICAgICAgICAjIFRoZW4gYXQgbGVhc3QgVExTIGNvbm5lY3Rpb25zIGNhbiBiZSBuZWdvdGlhdGVkIHdpdGggc2l0ZXMgdGhhdAotICAgICAgICAjIHVzZSBzaGEtMjU2IGNlcnRzIGxpa2UgcHl0aG9uLm9yZywgYXNzdW1pbmcgdGhlIHByb3BlciBDQSBjZXJ0cwotICAgICAgICAjIGhhdmUgYmVlbiBzdXBwbGllZC4gIFRoZSBkZWZhdWx0IENBIGNlcnQgbWFuYWdlbWVudCBpc3N1ZXMgZm9yCi0gICAgICAgICMgMTAuNSBhbmQgZWFybGllciBidWlsZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZSwgb3RoZXIgdGhhbiBpdCBpcwotICAgICAgICAjIG5vdyBtb3JlIG9idmlvdXMgd2l0aCBjZXJ0IGNoZWNraW5nIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBsaWJyYXJ5LgotICAgICAgICAjCi0gICAgICAgICMgRm9yIGJ1aWxkcyB3aXRoIDEwLjYgdGhyb3VnaCAxMC45IFNES3MsCi0gICAgICAgICMgY29udGludWUgdG8gdXNlIHRoZSBkZXByZWNhdGVkIGJ1dAotICAgICAgICAjIGxlc3Mgb3V0LW9mLWRhdGUgQXBwbGUgMC45LjggbGlicyBmb3Igbm93LiAgV2hpbGUgdGhleSBhcmUgbGVzcwotICAgICAgICAjIHNlY3VyZSB0aGFuIHVzaW5nIGFuIHVwLXRvLWRhdGUgMS4wLjEgdmVyc2lvbiwgZG9pbmcgc28KLSAgICAgICAgIyBhdm9pZHMgdGhlIGJpZyBwcm9ibGVtcyBvZiBmb3JjaW5nIHVzZXJzIHRvIGhhdmUgdG8gbWFuYWdlCi0gICAgICAgICMgZGVmYXVsdCBDQXMgdGhlbXNlbHZlcywgdGhhbmtzIHRvIHRoZSBBcHBsZSBsaWJzIHVzaW5nIHByaXZhdGUgVEVBCi0gICAgICAgICMgQVBJcyBmb3IgY2VydCB2YWxpZGF0aW9uIGZyb20ga2V5Y2hhaW5zIGlmIHZhbGlkYXRpb24gdXNpbmcgdGhlCi0gICAgICAgICMgc3RhbmRhcmQgT3BlblNTTCBsb2NhdGlvbnMgKC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMLCBub3JtYWxseSBlbXB0eSkKLSAgICAgICAgIyBmYWlscy4KLSAgICAgICAgIwotICAgICAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCi0gICAgICAgICMgT3BlblNTTCBhcyBvZiB0aGUgWGNvZGUgNyByZWxlYXNlIChmb3IgT1MgWCAxMC4xMCspLCB3ZSBkbyBub3QKLSAgICAgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgorICAgICMgU2luY2UgQXBwbGUgcmVtb3ZlZCB0aGUgaGVhZGVyIGZpbGVzIGZvciB0aGUgZGVwcmVjYXRlZCBzeXN0ZW0KKyAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90CisgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgogCi0gICAgICAgIHJlc3VsdC5leHRlbmQoWworICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgIG5hbWU9Ik9wZW5TU0wgMS4wLjJqIiwKICAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjAuMmoudGFyLmd6IiwKQEAgLTI1Miw3ICsyMjMsNyBAQAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKICAgICAgICAgICAgICAgaW5zdGFsbD1Ob25lLAogICAgICAgICAgICksCi0gICAgICAgIF0pCisgICAgXSkKIAogIyAgIERpc2FibGUgZm9yIG5vdwogICAgIGlmIEZhbHNlOiAgICMgaWYgZ2V0RGVwdGFyZ2V0VHVwbGUoKSA+ICgxMCwgNSk6CkBAIC0yOTksOSArMjcwLDkgQEAKICAgICBpZiBQWVRIT05fMzoKICAgICAgICAgcmVzdWx0LmV4dGVuZChbCiAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjUiLAotICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuNS50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nMTlkOTI0ZTA2NmI2ZmZmMGJjOWQxOTgxYjRlNTMxOTYnLAorICAgICAgICAgICAgICBuYW1lPSJYWiA1LjIuMiIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LTUuMi4yLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc3Y2Y2YTg1NDRhN2RhZThlODEwNmZkZjdhZGRmYTI4YycsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwogICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnLAogICAgICAgICAgICAgICBdCkBAIC0zNDQsMTAgKzMxNSwxMSBAQAogICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICApLAogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjguMTEiLAotICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNS9zcWxpdGUtYXV0b2NvbmYtMzA4MTEwMC50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nNzdiNDUxOTI1MTIxMDI4YmVmYmRkYmY0NWVhMmJjNDknLAorICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy4xNC4yIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTYvc3FsaXRlLWF1dG9jb25mLTMxNDAyMDAudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzkwYzUzY2FjYjgxMWRiMjdmOTkwYjgyOTJiZDk2MTU5JywKICAgICAgICAgICAgICAgZXh0cmFfY2ZsYWdzPSgnLU9zICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTNCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFMzX1BBUkVOVEhFU0lTICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX1JUUkVFICcKQEAgLTY3NSw2ICs2NDcsNyBAQAogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCiAgICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MsIENYWAogICAgIGdsb2JhbCBGV19WRVJTSU9OX1BSRUZJWAorICAgIGdsb2JhbCBGV19TU0xfRElSRUNUT1JZCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTczNSw2ICs3MDgsNyBAQAogICAgIENDLCBDWFggPSBnZXRUYXJnZXRDb21waWxlcnMoKQogCiAgICAgRldfVkVSU0lPTl9QUkVGSVggPSBGV19QUkVGSVhbOl0gKyBbIlZlcnNpb25zIiwgZ2V0VmVyc2lvbigpXQorICAgIEZXX1NTTF9ESVJFQ1RPUlkgPSBGV19WRVJTSU9OX1BSRUZJWFs6XSArIFsiZXRjIiwgIm9wZW5zc2wiXQogCiAgICAgcHJpbnQoIi0tIFNldHRpbmdzOiIpCiAgICAgcHJpbnQoIiAgICogU291cmNlIGRpcmVjdG9yeTogICAgJXMiICUgU1JDRElSKQpAQCAtODc2LDcgKzg1MCw3IEBACiAgICAgICAgICAgICAic2hhcmVkIiwKICAgICAgICAgICAgICItLWluc3RhbGxfcHJlZml4PSVzIiVzaGVsbFF1b3RlKGFyY2hiYXNlKSwKICAgICAgICAgICAgICItLXByZWZpeD0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1ZFUlNJT05fUFJFRklYKSwKLSAgICAgICAgICAgICItLW9wZW5zc2xkaXI9L1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wiLAorICAgICAgICAgICAgIi0tb3BlbnNzbGRpcj0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1NTTF9ESVJFQ1RPUlkpLAogICAgICAgICBdCiAgICAgICAgIGlmIG5vX2FzbToKICAgICAgICAgICAgIGNvbmZpZ3VyZV9vcHRzLmFwcGVuZCgibm8tYXNtIikKQEAgLTExOTQsMTIgKzExNjgsMTQgQEAKICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsIGdldFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAnbGliJykpKSkKIAotICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCisgICAgZnJtRGlyVmVyc2lvbmVkID0gb3MucGF0aC5qb2luKGZybURpciwgJ1ZlcnNpb25zJywgdmVyc2lvbikKKyAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgIyBjcmVhdGUgZGlyZWN0b3J5IGZvciBPcGVuU1NMIGNlcnRpZmljYXRlcworICAgIHNzbERpciA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdldGMnLCAnb3BlbnNzbCcpCisgICAgb3MubWFrZWRpcnMoc3NsRGlyKQogCiAgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKLSAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKICAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKQEAgLTEyNDksNiArMTIyNSw4IEBACiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKFZFUlNJT04pJywgVkVSU0lPTikKICAgICAgICAgTERWRVJTSU9OID0gTERWRVJTSU9OLnJlcGxhY2UoJyQoQUJJRkxBR1MpJywgQUJJRkxBR1MpCiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnLScgKyBMRFZFUlNJT04KKyAgICAgICAgaWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKSA+PSAoMywgNik6CisgICAgICAgICAgICBjb25maWdfc3VmZml4ID0gY29uZmlnX3N1ZmZpeCArICctZGFyd2luJwogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnJyAgICAgICMgUHl0aG9uIDIueAogCkBAIC0xMjc0LDcgKzEyNTIsNyBAQAogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQogCi0gICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEgaWYgaXQgZXhpc3RzCisgICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEKICAgICAjCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSByb2J1c3QhICB0ZXN0X3N5c2NvbmZpZ19tb2R1bGUgb2YKICAgICAjIGRpc3R1dGlscy50ZXN0cy50ZXN0X3N5c2NvbmZpZy5TeXNjb25maWdUZXN0Q2FzZSB0ZXN0cyB0aGF0CkBAIC0xMjg4LDI4ICsxMjY2LDMxIEBACiAgICAgIyBfc3lzY29uZmlnZGF0YS5weSkuCiAKICAgICBpbXBvcnQgcHByaW50Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKLSAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0Ci0gICAgICAgIGV4ZWMoZGF0YSkKLSAgICAgICAgdmFycyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCi0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCi0gICAgICAgICAgICB2YXJzW2tdID0gdgorICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAjIFhYWCB0aGlzIGlzIGV4dHJhLWZyYWdpbGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhX21fZGFyd2luX2Rhcndpbi5weScpCisgICAgZWxzZToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQorICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICBmcC5jbG9zZSgpCisgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICBleGVjKGRhdGEpCisgICAgdmFycyA9IHt9CisgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6CisgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQorICAgICAgICB2YXJzW2tdID0gdgogCi0gICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKLSAgICAgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKLSAgICAgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCi0gICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQotICAgICAgICBmcC5jbG9zZSgpCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQorICAgIGZwLmNsb3NlKCkKIAogICAgICMgQWRkIHN5bWxpbmtzIGluIC91c3IvbG9jYWwvYmluLCB1c2luZyByZWxhdGl2ZSBsaW5rcwogICAgIHVzcl9sb2NhbF9iaW4gPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3VzcicsICdsb2NhbCcsICdiaW4nKQpAQCAtMTYzNiw2ICsxNjE3LDggQEAKICAgICBwYXRjaEZpbGUoInJlc291cmNlcy9SZWFkTWUucnRmIiwgIGZuKQogICAgIGZuID0gb3MucGF0aC5qb2luKGZvbGRlciwgIlVwZGF0ZSBTaGVsbCBQcm9maWxlLmNvbW1hbmQiKQogICAgIHBhdGNoU2NyaXB0KCJzY3JpcHRzL3Bvc3RmbGlnaHQucGF0Y2gtcHJvZmlsZSIsICBmbikKKyAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJJbnN0YWxsIENlcnRpZmljYXRlcy5jb21tYW5kIikKKyAgICBwYXRjaFNjcmlwdCgicmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQiLCAgZm4pCiAgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCmluZGV4IDY1ZTNmMTQuLmFjNjg3ODYgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKQEAgLTEsMTA2ICsxLDc2IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNFxjb2NvYXN1YnJ0Zjc1MAoge1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO1xmMVxmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyTmV3UFNNVDt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9Cit7XCpcZXhwYW5kZWRjb2xvcnRibDs7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIFB5dGhvbiAkRlVMTF9WRVJTSU9OIGZvciBNYWMgT1MgWCAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGZvciB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZShzKTogJEFSQ0hJVEVDVFVSRVMuXAogXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGIgXGNmMCBcdWwgXHVsYzAgV2hpY2ggaW5zdGFsbGVyIHZhcmlhbnQgc2hvdWxkIEkgdXNlPwogXGIwIFx1bG5vbmUgXAogXAotUHl0aG9uLm9yZyBwcm92aWRlcyB0d28gaW5zdGFsbGVyIHZhcmlhbnRzIGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgRm9yIFB5dGhvbiAzLjYsIHRoZSBweXRob24ub3JnIHdlYnNpdGUgbm93IHByb3ZpZGVzIG9ubHkgb25lIGluc3RhbGxlciB2YXJpYW50IGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKIFxpIDY0LWJpdC8zMi1iaXQgSW50ZWwKIFxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKIFxpIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkKLVxpMCAgb3IgbGF0ZXI7IGFuZCBvbmUgdGhhdCBpbnN0YWxscyBhIAotXGkgMzItYml0LW9ubHkgKEludGVsIGFuZCBQUEMpCi1caTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCi1caSBNYWMgT1MgWCAxMC41IChMZW9wYXJkKQogXGkwICBvciBsYXRlci4gIFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCiBcaSAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi1caTAgIHZhcmlhbnQuICBVbmxlc3MgeW91IGFyZSBpbnN0YWxsaW5nIHRvIGFuIDEwLjUgc3lzdGVtIG9yIHlvdSBuZWVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBydW4gb24gMTAuNSBzeXN0ZW1zLCB1c2UgdGhlIDEwLjYgdmFyaWFudCBpZiBwb3NzaWJsZS4gIFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggMTAuNiBhbmQgeW91IG1heSBzZWUgYmV0dGVyIHBlcmZvcm1hbmNlIHVzaW5nIDY0LWJpdCBtb2RlLiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBBbHNvIHNlZSAKLVxpIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTAotXGkwICBiZWxvdy4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgdmFyaWVzIGJ5IGluc3RhbGxlciB2YXJpYW50IGFuZCBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgorXGkwICB2YXJpYW50LiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBUaGUgUHl0aG9uIGluc3RhbGxlZCBieSB0aGlzIGluc3RhbGxlciBpcyBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KIFxiIFx1bCBcCiBcCi1VcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYjAgXGNmMCBcdWxub25lIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgVGhpcyB2YXJpYW50IG9mIFB5dGhvbiAzLjYgbm93IGluY2x1ZGVzIGl0cyBvd24gcHJpdmF0ZSBjb3B5IG9mIE9wZW5TU0wgMS4wLjIuICBVbmxpa2UgcHJldmlvdXMgcmVsZWFzZXMsIHRoZSBkZXByZWNhdGVkIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIGFyZSBubyBsb25nZXIgdXNlZC4gIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpIEtleWNoYWluIEFjY2VzcyAKK1xpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAorXGkgc2VjdXJpdHkKK1xpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYXJlIG5vIGxvbmdlciB1c2VkIGFzIGRlZmF1bHRzIGJ5IHRoZSBQeXRob24gCitcZjEgc3NsCitcZjAgIG1vZHVsZS4gIEZvciAzLjYuMCwgYSBzYW1wbGUgY29tbWFuZCBzY3JpcHQgaXMgaW5jbHVkZWQgaW4gCitcZjEgL0FwcGxpY2F0aW9ucy9QeXRob24gMy42CitcZjAgIHRvIGluc3RhbGwgYSBjdXJhdGVkIGJ1bmRsZSBvZiBkZWZhdWx0IHJvb3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHRoaXJkLXBhcnR5IAorXGYxIGNlcnRpZmkKK1xmMCAgcGFja2FnZSAoe1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpIn19e1xmbGRyc2x0IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaX19KS4gIElmIHlvdSBjaG9vc2UgdG8gdXNlIAorXGYxIGNlcnRpZmkKK1xmMCAsIHlvdSBzaG91bGQgY29uc2lkZXIgc3Vic2NyaWJpbmcgdG8gdGhle1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9jZXJ0aWZpLmlvL2VuL2xhdGVzdC8ifX17XGZsZHJzbHQgIHByb2plY3QncyBlbWFpbCB1cGRhdGUgc2VydmljZX19IHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGNlcnRpZmljYXRlIGJ1bmRsZSBpcyB1cGRhdGVkLlwKK1wKK1RoZSBidW5kbGVkIAorXGYxIHBpcAorXGYwICBpbmNsdWRlZCB3aXRoIHRoZSBQeXRob24gMy42IGluc3RhbGxlciBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAorXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgXHVsIFVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucwogXGIwIFx1bG5vbmUgXAogXAogVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIFRraW50ZXIgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIHRvb2xraXQsIHlvdSBuZWVkIHRvIGluc3RhbGwgYSBuZXdlciB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mIHRoZSAKIFxpIFRjbC9UawogXGkwICBmcmFtZXdvcmtzLiAgVmlzaXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrL319IGZvciBjdXJyZW50IGluZm9ybWF0aW9uIGFib3V0IHN1cHBvcnRlZCBhbmQgcmVjb21tZW5kZWQgdmVyc2lvbnMgb2YgCiBcaSBUY2wvVGsKLVxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKK1xpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2Ugb2YgUHl0aG9uIDMuNiwgdGhlIGluc3RhbGxlciBpcyBzdGlsbCBsaW5rZWQgd2l0aCBUY2wvVGsgOC41LlwKIAogXGIgXHVsIFwKLUNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK090aGVyIGNoYW5nZXNcCiAKIFxiMCBcdWxub25lIFwKLVB5dGhvbiAzLjUgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCB3ZXJlIHJlbGVhc2VkIGluIFB5dGhvbiAzLjQuMyBhbmQgUHl0aG9uIDIuNy4xMC4gIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzYvIn19e1xmbGRyc2x0IFBFUCA0NzZ9fSBjaGFuZ2VzIHNldmVyYWwgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzLCBsaWtlIAotXGkgaHR0cGxpYgotXGkwICwgCi1caSB1cmxsaWIKLVxpMCAsIGFuZCAKLVxpIHhtbHJwY2xpYgotXGkwICwgdG8gYnkgZGVmYXVsdCB2ZXJpZnkgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSBzZXJ2ZXJzIG92ZXIgc2VjdXJlIChUTFMpIGNvbm5lY3Rpb25zLiAgVGhlIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyaWVzIHRoYXQgUHl0aG9uIGlzIGxpbmtlZCB0by4gIFByaW9yIHRvIDMuNC4zLCBib3RoIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBzaGlwcGVkIHdpdGggT1MgWC4gIE9TIFggcHJvdmlkZXMgYSBtdWx0aXBsZSBsZXZlbCBzZWN1cml0eSBmcmFtZXdvcmsgdGhhdCBzdG9yZXMgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCi1caSBLZXljaGFpbiBBY2Nlc3MgCi1caTAgYXBwbGljYXRpb24gYW5kIHRoZSAKLVxpIHNlY3VyaXR5Ci1caTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5LlwKLVwKLUZvciBPUyBYIDEwLjUsIEFwcGxlIHByb3ZpZGVzIAotXGkgT3BlblNTTCAwLjkuNwotXGkwICBsaWJyYXJpZXMuICBUaGlzIHZlcnNpb24gb2YgQXBwbGUncyBPcGVuU1NMIAotXGIgZG9lcyBub3QKLVxiMCAgdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yaywgZXZlbiB3aGVuIHVzZWQgb24gbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4gIEluc3RlYWQgaXQgY29uc3VsdHMgYSB0cmFkaXRpb25hbCBPcGVuU1NMIGNvbmNhdGVuYXRlZCBjZXJ0aWZpY2F0ZSBmaWxlICgKLVxpIGNhZmlsZQotXGkwICkgb3IgY2VydGlmaWNhdGUgZGlyZWN0b3J5ICgKLVxpIGNhcGF0aAotXGkwICksIGxvY2F0ZWQgaW4gCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICBUaGVzZSBkaXJlY3RvcmllcyBhcmUgdHlwaWNhbGx5IGVtcHR5IGFuZCBub3QgbWFuYWdlZCBieSBPUyBYOyB5b3UgbXVzdCBtYW5hZ2UgdGhlbSB5b3Vyc2VsZiBvciBzdXBwbHkgeW91ciBvd24gU1NMIGNvbnRleHRzLiAgT3BlblNTTCAwLjkuNyBpcyBvYnNvbGV0ZSBieSBjdXJyZW50IHNlY3VyaXR5IHN0YW5kYXJkcywgbGFja2luZyBhIG51bWJlciBvZiBpbXBvcnRhbnQgZmVhdHVyZXMgZm91bmQgaW4gbGF0ZXIgdmVyc2lvbnMuICBBbW9uZyB0aGUgcHJvYmxlbXMgdGhpcyBjYXVzZXMgaXMgdGhlIGluYWJpbGl0eSB0byB2ZXJpZnkgaGlnaGVyLXNlY3VyaXR5IGNlcnRpZmljYXRlcyBub3cgdXNlZCBieSBweXRob24ub3JnIHNlcnZpY2VzLCBpbmNsdWRpbmcgCi1caSB0e1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaSJ9fXtcZmxkcnNsdCBoZSBQeXRob24gUGFja2FnZSBJbmRleCwgUHlQSX19Ci1caTAgLiAgVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB0aGUgCi1caSAxMC41KyAzMi1iaXQtb25seSBweXRob24ub3JnIHZhcmlhbnQKLVxpMCAgaXMgbGlua2VkIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgCi1caSBPcGVuU1NMIDEuMC4yCi1caTAgOyBpdCBjb25zdWx0cyB0aGUgc2FtZSBkZWZhdWx0IGNlcnRpZmljYXRlIGRpcmVjdG9yeSwgCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICAgQXMgYmVmb3JlLCBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gbWFuYWdlIGNlcnRpZmljYXRlcyB5b3Vyc2VsZiB3aGVuIHlvdSB1c2UgdGhpcyBQeXRob24gdmFyaWFudCBhbmQsIHdpdGggY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHlvdSBtYXkgbm93IG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIGVuc3VyZSB5b3VyIFB5dGhvbiBwcm9ncmFtcyBoYXZlIGFjY2VzcyB0byBDQSBjZXJ0aWZpY2F0ZXMgeW91IHRydXN0LiAgSWYgeW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IHRvIGJ1aWxkIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHdpdGggdGhpcmQtcGFydHkgdG9vbHMgbGlrZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5MmFwcC8ifX17XGZsZHJzbHQgCi1cZjEgcHkyYXBwfX0sIHlvdSBtYXkgbm93IG5lZWQgdG8gYnVuZGxlIENBIGNlcnRpZmljYXRlcyBpbiB0aGVtIG9yIG90aGVyd2lzZSBzdXBwbHkgbm9uLWRlZmF1bHQgU1NMIGNvbnRleHRzLlwKLVwKLUZvciBPUyBYIDEwLjYrLCBBcHBsZSBhbHNvIHByb3ZpZGVzIAotXGkgT3BlblNTTAotXGkwICAKLVxpIDAuOS44IGxpYnJhcmllcwotXGkwIC4gIEFwcGxlJ3MgMC45LjggdmVyc2lvbiBpbmNsdWRlcyBhbiBpbXBvcnRhbnQgYWRkaXRpb25hbCBmZWF0dXJlOiBpZiBhIGNlcnRpZmljYXRlIGNhbm5vdCBiZSB2ZXJpZmllZCB1c2luZyB0aGUgbWFudWFsbHkgYWRtaW5pc3RlcmVkIGNlcnRpZmljYXRlcyBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwICwgdGhlIGNlcnRpZmljYXRlcyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrIEluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIGFyZSBhbHNvIGNvbnN1bHRlZCAodXNpbmcgQXBwbGUgcHJpdmF0ZSBBUElzKS4gIEZvciB0aGlzIHJlYXNvbiwgdGhlIAotXGkgNjQtYml0LzMyLWJpdCAxMC42KyBweXRob24ub3JnIHZhcmlhbnQKLVxpMCAgY29udGludWVzIHRvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlJ3MgT3BlblNTTCAwLjkuOCBzaW5jZSBpdCB3YXMgZmVsdCB0aGF0IHRoZSBsb3NzIG9mIHRoZSBzeXN0ZW0tcHJvdmlkZWQgY2VydGlmaWNhdGVzIGFuZCBtYW5hZ2VtZW50IHRvb2xzIG91dHdlaWdocyB0aGUgYWRkaXRpb25hbCBzZWN1cml0eSBmZWF0dXJlcyBwcm92aWRlZCBieSBuZXdlciB2ZXJzaW9ucyBvZiBPcGVuU1NMLiAgVGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBweXRob24ub3JnIGluc3RhbGxlcnMgYXMgQXBwbGUgaGFzIGRlcHJlY2F0ZWQgdXNlIG9mIHRoZSBzeXN0ZW0tc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMuICBJZiB5b3UgZG8gbmVlZCBmZWF0dXJlcyBmcm9tIG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wsIHRoZXJlIGFyZSB0aGlyZC1wYXJ0eSBPcGVuU1NMIHdyYXBwZXIgcGFja2FnZXMgYXZhaWxhYmxlIHRocm91Z2ggCi1caSBQeVBJCi1caTAgLlwKLVwKLVRoZSBidW5kbGVkIAotXGYxIHBpcAotXGYwICBpbmNsdWRlZCB3aXRoIHRoZSBQeXRob24gMy41IGluc3RhbGxlcnMgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKLVwKLQotXGIgXHVsIE90aGVyIGNoYW5nZXNcCi0KLVxiMCBcdWxub25lIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotXGNmMCBGb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgCitGb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgCiBcaSBXaGF0J3MgbmV3CiBcaTAgIHNlY3Rpb24gaW4gdGhlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jLyJ9fXtcZmxkcnNsdCBEb2N1bWVudGF0aW9uIFNldH19IGZvciB0aGlzIHJlbGVhc2UgYW5kIGl0cyAKIFxpIFJlbGVhc2UgTm90ZXMKIFxpMCAgbGluayBhdCB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8ifX17XGZsZHJzbHQgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvfX0uXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCiAKLVxiIFxjZjAgXHVsIFwKK1xiIFx1bCBcCiBQeXRob24gMyBhbmQgUHl0aG9uIDIgQ28tZXhpc3RlbmNlXAogCiBcYjAgXHVsbm9uZSBcCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgppbmRleCBkZmI3NWQ4Li4zYTlhYjA0IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKQEAgLTEsOCArMSw5IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDNcY29jb2FzdWJydGYxNjAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNAogXGNvY29hc2NyZWVuZm9udHMxe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KK3tcKlxleHBhbmRlZGNvbG9ydGJsO1xjc2dyYXlcYzEwMDAwMDt9CiBccGFwZXJ3MTE5MDVccGFwZXJoMTY4MzdcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzEyMjAwXHZpZXdoMTA4ODBcdmlld2tpbmQwCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCAKIFxiIFB5dGhvbiAkRlVMTF9WRVJTSU9OCkBAIC0xNiw4ICsxNywxNCBAQAogXGIgSURMRQogXGIwIC5cCiBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKLVxiIElNUE9SVEFOVDoKK1xiIFxjZjAgTkVXOgorXGIwICAgVGhlcmUgYXJlIGltcG9ydGFudCBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSByZWdhcmRpbmcgbmV0d29yayBzZWN1cml0eSBhbmQgdHJ1c3QgY2VydGlmaWNhdGVzLiAgUGxlYXNlIHNlZSB0aGUgUmVhZE1lIGZvciBtb3JlIGRldGFpbHMuXAorXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwIElNUE9SVEFOVDoKIFxiMCAgCiBcYiBJRExFCiBcYjAgIGFuZCBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWQyZTJkOAotLS0gL2Rldi9udWxsCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApAQCAtMCwwICsxLDQ4IEBACisjIS9iaW4vc2gKKworL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zL0BQWVZFUkAvYmluL3B5dGhvbkBQWVZFUkAgPDwgIkVPRiIKKworIyBpbnN0YWxsX2NlcnRpZmkucHkKKyMKKyMgc2FtcGxlIHNjcmlwdCB0byBpbnN0YWxsIG9yIHVwZGF0ZSBhIHNldCBvZiBkZWZhdWx0IFJvb3QgQ2VydGlmaWNhdGVzCisjIGZvciB0aGUgc3NsIG1vZHVsZS4gIFVzZXMgdGhlIGNlcnRpZmljYXRlcyBwcm92aWRlZCBieSB0aGUgY2VydGlmaSBwYWNrYWdlOgorIyAgICAgICBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkKKworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNzbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK1NUQVRfMG83NzUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lXR1JQIHwgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitkZWYgbWFpbigpOgorICAgIG9wZW5zc2xfZGlyLCBvcGVuc3NsX2NhZmlsZSA9IG9zLnBhdGguc3BsaXQoCisgICAgICAgIHNzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKS5vcGVuc3NsX2NhZmlsZSkKKworICAgIHByaW50KCIgLS0gcGlwIGluc3RhbGwgLS11cGdyYWRlIGNlcnRpZmkiKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICItRSIsICItcyIsICItbSIsICJwaXAiLCAiaW5zdGFsbCIsICItLXVwZ3JhZGUiLCAiY2VydGlmaSJdKQorCisgICAgaW1wb3J0IGNlcnRpZmkKKworICAgICMgY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkZWZhdWx0IFNTTCBkaXJlY3RvcnkKKyAgICBvcy5jaGRpcihvcGVuc3NsX2RpcikKKyAgICByZWxwYXRoX3RvX2NlcnRpZmlfY2FmaWxlID0gb3MucGF0aC5yZWxwYXRoKGNlcnRpZmkud2hlcmUoKSkKKyAgICBwcmludCgiIC0tIHJlbW92aW5nIGFueSBleGlzdGluZyBmaWxlIG9yIGxpbmsiKQorICAgIHRyeToKKyAgICAgICAgb3MucmVtb3ZlKG9wZW5zc2xfY2FmaWxlKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHByaW50KCIgLS0gY3JlYXRpbmcgc3ltbGluayB0byBjZXJ0aWZpIGNlcnRpZmljYXRlIGJ1bmRsZSIpCisgICAgb3Muc3ltbGluayhyZWxwYXRoX3RvX2NlcnRpZmlfY2FmaWxlLCBvcGVuc3NsX2NhZmlsZSkKKyAgICBwcmludCgiIC0tIHNldHRpbmcgcGVybWlzc2lvbnMiKQorICAgIG9zLmNobW9kKG9wZW5zc2xfY2FmaWxlLCBTVEFUXzBvNzc1KQorICAgIHByaW50KCIgLS0gdXBkYXRlIGNvbXBsZXRlIikKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKK0VPRgpkaWZmIC0tZ2l0IGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5IGIvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CmluZGV4IDk4Njc2MGQuLjU5OTRjMTggMTAwNjQ0Ci0tLSBhL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQorKysgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKQEAgLTY4LDYgKzY4LDYgQEAKICAgICAgICAgYnJlYWsKIAogIyBOb3cgaXQgaXMgc2FmZSB0byBpbXBvcnQgaWRsZWxpYi4KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBtYWluCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbgogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCBhODhiN2Q1Li40OGI1MTgwIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC00OSw2ICs0OSwxMCBAQAogTExWTV9QUk9GX01FUkdFUj1ATExWTV9QUk9GX01FUkdFUkAKIExMVk1fUFJPRl9GSUxFPUBMTFZNX1BST0ZfRklMRUAKIExMVk1fUFJPRl9FUlI9QExMVk1fUFJPRl9FUlJACitEVFJBQ0U9ICAgICAgICAgQERUUkFDRUAKK0RGTEFHUz0gICAgICAgICBAREZMQUdTQAorRFRSQUNFX0hFQURFUlM9IEBEVFJBQ0VfSEVBREVSU0AKK0RUUkFDRV9PQkpTPSAgICBARFRSQUNFX09CSlNACiAKIEdOVUxEPQkJQEdOVUxEQAogCkBAIC0xMTAsNiArMTE0LDcgQEAKIAogIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACitNVUxUSUFSQ0hfQ1BQRkxBR1MgPSBATVVMVElBUkNIX0NQUEZMQUdTQAogCiAjIEluc3RhbGwgcHJlZml4IGZvciBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMKIHByZWZpeD0JCUBwcmVmaXhACkBAIC0yMzUsNyArMjQwLDcgQEAKICMgVGhlIHRhc2sgdG8gcnVuIHdoaWxlIGluc3RydW1lbnRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBwcm9maWxlLW9wdCB0YXJnZXQuCiAjIFdlIGV4Y2x1ZGUgdW5pdHRlc3RzIHdpdGggLXggdGhhdCB0YWtlIGEgcmVkaWN1bGlvdXMgYW1vdW50IG9mIHRpbWUgdG8KICMgcnVuIGluIHRoZSBpbnN0cnVtZW50ZWQgdHJhaW5pbmcgYnVpbGQgb3IgZG8gbm90IHByb3ZpZGUgbXVjaCB2YWx1ZS4KLVBST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvIC14IHRlc3RfYXN5bmNvcmUgdGVzdF9nZGIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yayB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyIHRlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcgdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24gdGVzdF9zdWJwcm9jZXNzCitQUk9GSUxFX1RBU0s9LW0gdGVzdC5yZWdydGVzdCAtLXBnbwogCiAjIHJlcG9ydCBmaWxlcyBmb3IgZ2NvdiAvIGxjb3YgY292ZXJhZ2UgcmVwb3J0CiBDT1ZFUkFHRV9JTkZPPQkkKGFic19idWlsZGRpcikvY292ZXJhZ2UuaW5mbwpAQCAtMjU0LDkgKzI1OSw2IEBACiAJCU1vZHVsZXMvbWFpbi5vIFwKIAkJTW9kdWxlcy9nY21vZHVsZS5vCiAKLSMgVXNlZCBvZiBzaWduYWxtb2R1bGUubyBpcyBub3QgYXZhaWxhYmxlCi1TSUdOQUxfT0JKUz0JQFNJR05BTF9PQkpTQAotCiBJT19IPQkJTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKIAogSU9fT0JKUz0JXApAQCAtMjgxLDE4ICsyODMsNiBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCi1QU1JDUz0JCVwKLQkJUGFyc2VyL2FjY2VsZXIuYyBcCi0JCVBhcnNlci9ncmFtbWFyMS5jIFwKLQkJUGFyc2VyL2xpc3Rub2RlLmMgXAotCQlQYXJzZXIvbm9kZS5jIFwKLQkJUGFyc2VyL3BhcnNlci5jIFwKLQkJUGFyc2VyL2JpdHNldC5jIFwKLQkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAotCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAotCQlQYXJzZXIvZ3JhbW1hci5jIFwKLQkJUGFyc2VyL3BnZW4uYwotCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKQEAgLTMwNywxNiArMjk3LDYgQEAKIAogUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCiAKLVBHU1JDUz0JCVwKLQkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKLQkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCi0JCVB5dGhvbi9teXNucHJpbnRmLmMgXAotCQlQeXRob24vcHljdHlwZS5jIFwKLQkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAotCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAotCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKLQkJUGFyc2VyL3BnZW5tYWluLmMKLQogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKQEAgLTMzMiw3ICszMTIsNiBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXJzZXRvay5oIFwKIAkJJChzcmNkaXIpL1BhcnNlci90b2tlbml6ZXIuaAogCi1QR0VOU1JDUz0JJChQU1JDUykgJChQR1NSQ1MpCiBQR0VOT0JKUz0JJChQT0JKUykgJChQR09CSlMpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNDEsNyArMzIwLDcgQEAKIE9QQ09ERV9IX1NDUklQVD0gJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKIE9QQ09ERV9IPQkkKE9QQ09ERV9IX0RJUikvb3Bjb2RlLmgKIE9QQ09ERV9IX0dFTj0JJChQWVRIT05fRk9SX0dFTikgJChPUENPREVfSF9TQ1JJUFQpICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0gpCi0jCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEFTVAogQVNUX0hfRElSPQlJbmNsdWRlCkBAIC00MTcsNyArMzk2LDggQEAKIAkJUHl0aG9uLyQoRFlOTE9BREZJTEUpIFwKIAkJJChMSUJPQkpTKSBcCiAJCSQoTUFDSERFUF9PQkpTKSBcCi0JCSQoVEhSRUFET0JKKQorCQkkKFRIUkVBRE9CSikgXAorCQkkKERUUkFDRV9PQkpTKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00NzEsMTMgKzQ1MSwyMSBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykKIAogTElCUkFSWV9PQkpTPQlcCiAJCSQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSBcCiAJCVB5dGhvbi9mcm96ZW4ubwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEVHJhY2UKKworIyBPbiBzb21lIHN5c3RlbXMsIG9iamVjdCBmaWxlcyB0aGF0IHJlZmVyZW5jZSBEVHJhY2UgcHJvYmVzIG5lZWQgdG8gYmUgbW9kaWZpZWQKKyMgaW4tcGxhY2UgYnkgZHRyYWNlKDEpLgorRFRSQUNFX0RFUFMgPSBcCisJUHl0aG9uL2NldmFsLm8KKyMgWFhYOiBzaG91bGQgZ2Ntb2R1bGUsIGV0Yy4gYmUgaGVyZSwgdG9vPworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJ1bGVzCiAKQEAgLTUzMywxNSArNTIxLDIzIEBACiAJICAgIC0tYmFzZS1kaXJlY3RvcnkgJChyZWFscGF0aCAkKGFic19idWlsZGRpcikpIFwKIAkgICAgLS1wYXRoICQocmVhbHBhdGggJChhYnNfc3JjZGlyKSkgXAogCSAgICAtLW91dHB1dC1maWxlICQoQ09WRVJBR0VfSU5GTykKLQk6ICMgcmVtb3ZlIDNyZCBwYXJ0eSBtb2R1bGVzIGFuZCBzeXN0ZW0gaGVhZGVycworCTogIyByZW1vdmUgM3JkIHBhcnR5IG1vZHVsZXMsIHN5c3RlbSBoZWFkZXJzIGFuZCBpbnRlcm5hbCBmaWxlcyB3aXRoCisJOiAjIGRlYnVnLCB0ZXN0IG9yIGR1bW15IGZ1bmN0aW9ucy4KIAlAbGNvdiAtLXJlbW92ZSAkKENPVkVSQUdFX0lORk8pIFwKKwkgICAgJyovTW9kdWxlcy9fYmxha2UyL2ltcGwvKicgXAogCSAgICAnKi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpKi8qJyBcCiAJICAgICcqL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvKicgXAorCSAgICAnKi9Nb2R1bGVzL19zaGEzL2tjcC8qJyBcCiAJICAgICcqL01vZHVsZXMvZXhwYXQvKicgXAogCSAgICAnKi9Nb2R1bGVzL3psaWIvKicgXAogCSAgICAnKi9JbmNsdWRlLyonIFwKKwkgICAgJyovTW9kdWxlcy94eCouYycgXAorCSAgICAnKi9QYXJzZXIvbGlzdG5vZGUuYycgXAorCSAgICAnKi9QeXRob24vcHlmcGUuYycgXAorCSAgICAnKi9QeXRob24vcHlzdHJjbXAuYycgXAogCSAgICAnL3Vzci9pbmNsdWRlLyonIFwKIAkgICAgJy91c3IvbG9jYWwvaW5jbHVkZS8qJyBcCisJICAgICcvdXNyL2xpYi9nY2MvKicgXAogCSAgICAtLW91dHB1dC1maWxlICQoQ09WRVJBR0VfSU5GTykKIAlAZ2VuaHRtbCAkKENPVkVSQUdFX0lORk8pIC0tb3V0cHV0LWRpcmVjdG9yeSAkKENPVkVSQUdFX1JFUE9SVCkgXAogCSAgICAkKENPVkVSQUdFX1JFUE9SVF9PUFRJT05TKQpAQCAtNTY0LDcgKzU2MCw3IEBACiAjIFJ1biAiQXJndW1lbnQgQ2xpbmljIiBvdmVyIGFsbCBzb3VyY2UgZmlsZXMKICMgKGRlcGVuZHMgb24gcHl0aG9uIGhhdmluZyBhbHJlYWR5IGJlZW4gYnVpbHQpCiAuUEhPTlk9Y2xpbmljCi1jbGluaWM6ICQoQlVJTERQWVRIT04pCitjbGluaWM6ICQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMKIAkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAuL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgLS1tYWtlCiAKICMgQnVpbGQgdGhlIGludGVycHJldGVyCkBAIC01NzIsNyArNTY4LDcgQEAKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIFByb2dyYW1zL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAotCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoIiVzLSVkLiVkIiAlIChnZXRfcGxhdGZvcm0oKSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKSknID5wbGF0Zm9ybQogCiAjIENyZWF0ZSBidWlsZCBkaXJlY3RvcnkgYW5kIGdlbmVyYXRlIHRoZSBzeXNjb25maWcgYnVpbGQtdGltZSBkYXRhIHRoZXJlLgogIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgpAQCAtNTk0LDYgKzU5MCwxMSBAQAogTW9kdWxlcy9fbWF0aC5vOiBNb2R1bGVzL19tYXRoLmMgTW9kdWxlcy9fbWF0aC5oCiAJJChDQykgLWMgJChDQ1NIQVJFRCkgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJDwKIAorIyBibGFrZTJzIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYmxha2UyYgorJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgLWYgJEAKKwogIyBCdWlsZCB0aGUgc2hhcmVkIG1vZHVsZXMKICMgVW5kZXIgR05VIG1ha2UsIE1BS0VGTEFHUyBhcmUgc29ydGVkIGFuZCBub3JtYWxpemVkOyB0aGUgJ3MnIGZvcgogIyAtcywgLS1zaWxlbnQgb3IgLS1xdWlldCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoYXIuCkBAIC02MDcsNiArNjA4LDcgQEAKIAkJX1RDTFRLX0lOQ0xVREVTPSckKFRDTFRLX0lOQ0xVREVTKScgX1RDTFRLX0xJQlM9JyQoVENMVEtfTElCUyknIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAogCisKICMgQnVpbGQgc3RhdGljIGxpYnJhcnkKICMgYXZvaWQgbG9uZyBjb21tYW5kIGxpbmVzLCBzYW1lIGFzIExJQlJBUllfT0JKUwogJChMSUJSQVJZKTogJChMSUJSQVJZX09CSlMpCkBAIC02MTUsNyArNjE3LDcgQEAKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoUEFSU0VSX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSkVDVF9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQWVRIT05fT0JKUykgUHl0aG9uL2Zyb3plbi5vCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKSAkKFNJR05BTF9PQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RVTEVfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9ET0JKUykKIAkkKFJBTkxJQikgJEAKIApAQCAtNzE5LDExICs3MjEsMTEgQEAKIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgUHl0aG9uL21hcnNoYWwuYwogCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAogCSAgICAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAogCi1QeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorUHl0aG9uL2ltcG9ydGxpYi5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgUHl0aG9uL21hcnNoYWwuYwogCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAogCSAgICAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9pbXBvcnRsaWIuaAogCkBAIC03MzUsNyArNzM3LDYgQEAKIAkJJChPQkpFQ1RfT0JKUykgXAogCQkkKFBZVEhPTl9PQkpTKSBcCiAJCSQoTU9EVUxFX09CSlMpIFwKLQkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpIFwKIAkJJChzcmNkaXIpL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCkBAIC03ODEsNiArNzgyLDcgQEAKIFB5dGhvbi9zeXNtb2R1bGUubzogJChzcmNkaXIpL1B5dGhvbi9zeXNtb2R1bGUuYyBNYWtlZmlsZQogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKIAkJLURBQklGTEFHUz0nIiQoQUJJRkxBR1MpIicgXAorCQkkKE1VTFRJQVJDSF9DUFBGTEFHUykgXAogCQktbyAkQCAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jCiAKICQoSU9fT0JKUyk6ICQoSU9fSCkKQEAgLTg1NiwxMyArODU4LDE0IEBACiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKIAorT2JqZWN0cy9ieXRlc19tZXRob2RzLm86ICQoc3JjZGlyKS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyAkKEJZVEVTVFJfREVQUykKIE9iamVjdHMvYnl0ZXNvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvYnl0ZXNvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKLQogT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgJChCWVRFU1RSX0RFUFMpCiAKIE9iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKLU9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorT2JqZWN0cy9vZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCitPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggJChzcmNkaXIpL09iamVjdHMvZGljdC1jb21tb24uaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKQEAgLTg3Miw2ICs4NzUsMTggQEAKIAogUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmggUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKKyMgR2VuZXJhdGUgRFRyYWNlIHByb2JlIG1hY3JvcywgdGhlbiByZW5hbWUgdGhlbSAoUFlUSE9OXyAtPiBQeURUcmFjZV8pIHRvCisjIGZvbGxvdyBvdXIgbmFtaW5nIGNvbnZlbnRpb25zLiBkdHJhY2UoMSkgdXNlcyB0aGUgb3V0cHV0IGZpbGVuYW1lIHRvIGdlbmVyYXRlCisjIGFuIGluY2x1ZGUgZ3VhcmQsIHNvIHdlIGNhbid0IHVzZSBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBpdHMgb3V0cHV0LgorSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaDogJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuZAorCSQoRFRSQUNFKSAkKERGTEFHUykgLW8gJEAgLWggLXMgJDwKKwk6IHNlZCBpbi1wbGFjZSBlZGl0IHdpdGggUE9TSVgtb25seSB0b29scworCXNlZCAncy9QWVRIT05fL1B5RFRyYWNlXy8nICRAID4gJEAudG1wCisJbXYgJEAudG1wICRACisKK1B5dGhvbi9weWR0cmFjZS5vOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kICQoRFRSQUNFX0RFUFMpCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtRyAtcyAkPCAkKERUUkFDRV9ERVBTKQorCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQogCSQoUFlUSE9OX0ZPUl9HRU4pICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weSA8ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oIE9iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtOTI5LDYgKzk0NCw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCiAJCSQoT1BDT0RFX0gpIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc21vZHVsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCkBAIC05MzcsNiArOTUzLDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCkBAIC05NjgsNyArOTg1LDggQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpIFwKLQkJJChBU1RfSCkKKwkJJChBU1RfSCkgXAorCQkkKERUUkFDRV9IRUFERVJTKQogCiAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIApAQCAtOTc4LDcgKzk5Niw3IEBACiBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQogVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Ci1URVNUVElNRU9VVD0JMzYwMAorVEVTVFRJTUVPVVQ9CTEyMDAKIAogIyBSdW4gYSBiYXNpYyBzZXQgb2YgcmVncmVzc2lvbiB0ZXN0cy4KICMgVGhpcyBleGNsdWRlcyBzb21lIHRlc3RzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZXNvdXJjZS1pbnRlbnNpdmUuCkBAIC0xMDE2LDcgKzEwMzQsNyBAQAogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS1zbG93ZXN0IC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCkBAIC0xMTY5LDE2ICsxMTg3LDE2IEBACiAJKGNkICQoREVTVERJUikkKE1BTkRJUikvbWFuMTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKS4xIHB5dGhvbjMuMSkKIAogIyBJbnN0YWxsIHRoZSBsaWJyYXJ5Ci1QTEFURElSPQlAUExBVERJUkAKLU1BQ0hERVBTPQkkKFBMQVRESVIpCiBYTUxMSUJTVUJESVJTPSAgeG1sIHhtbC9kb20geG1sL2V0cmVlIHhtbC9wYXJzZXJzIHhtbC9zYXgKIExJQlNVQkRJUlM9CXRraW50ZXIgdGtpbnRlci90ZXN0IHRraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIgXAogCQl0a2ludGVyL3Rlc3QvdGVzdF90dGsgc2l0ZS1wYWNrYWdlcyB0ZXN0IFwKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9kdHJhY2VkYXRhIFwKIAkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAorCQl0ZXN0L2xpYnJlZ3J0ZXN0IFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgdGVzdC9zdXBwb3J0IFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydCBcCkBAIC0xMjI3LDggKzEyNDUsOCBAQAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKIAkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKIAkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKLQkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKLWxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYworCQljdXJzZXMgcHlkb2NfZGF0YQorbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKQEAgLTEyNDgsNyArMTI2Niw3IEBACiAJCWVsc2UJdHJ1ZTsgXAogCQlmaTsgXAogCWRvbmUKLQlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5IGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhLnB5OyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weTsgXAogCWRvIFwKIAkJaWYgdGVzdCAteCAkJGk7IHRoZW4gXAogCQkJJChJTlNUQUxMX1NDUklQVCkgJCRpICQoREVTVERJUikkKExJQkRFU1QpOyBcCkBAIC0xMjgzLDYgKzEzMDEsOCBAQAogCQkJZXNhYzsgXAogCQlkb25lOyBcCiAJZG9uZQorCSQoSU5TVEFMTF9EQVRBKSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKS5weSBcCisJCSQoREVTVERJUikkKExJQkRFU1QpOyBcCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9MSUNFTlNFICQoREVTVERJUikkKExJQkRFU1QpL0xJQ0VOU0UudHh0CiAJaWYgdGVzdCAtZCAkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHM7IHRoZW4gXAogCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYyBcCkBAIC0xMzIwLDIzICsxMzQwLDYgQEAKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CiAKLSMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgotJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgotCW1rZGlyICQoc3JjZGlyKS9MaWIvJChQTEFURElSKQotCWNwICQoc3JjZGlyKS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuICQoc3JjZGlyKS9MaWIvJChQTEFURElSKS9yZWdlbgotCWV4cG9ydCBQQVRIOyBQQVRIPSJgcHdkYDokJFBBVEgiOyBcCi0JZXhwb3J0IFBZVEhPTlBBVEg7IFBZVEhPTlBBVEg9ImBwd2RgL0xpYiI7IFwKLQlleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSDsgRFlMRF9GUkFNRVdPUktfUEFUSD0iYHB3ZGAiOyBcCi0JZXhwb3J0IEVYRTsgRVhFPSIkKEJVSUxERVhFKSI7IFwKLQlpZiBbIC1uICIkKE1VTFRJQVJDSCkiIF07IHRoZW4gZXhwb3J0IE1VTFRJQVJDSDsgTVVMVElBUkNIPSQoTVVMVElBUkNIKTsgZmk7IFwKLQlleHBvcnQgUFlUSE9OX0ZPUl9CVUlMRDsgXAotCWlmIFsgIiQoQlVJTERfR05VX1RZUEUpIiA9ICIkKEhPU1RfR05VX1RZUEUpIiBdOyB0aGVuIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoQlVJTERQWVRIT04pIjsgXAotCWVsc2UgXAotCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChQWVRIT05fRk9SX0JVSUxEKSI7IFwKLQlmaTsgXAotCWNkICQoc3JjZGlyKS9MaWIvJChQTEFURElSKTsgJChSVU5TSEFSRUQpIC4vcmVnZW4KLQogcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBNaXNjL3B5dGhvbi1jb25maWcuc2gKIAkjIFN1YnN0aXR1dGlvbiBoYXBwZW5zIGhlcmUsIGFzIHRoZSBjb21wbGV0ZWx5LWV4cGFuZGVkIEJJTkRJUgogCSMgaXMgbm90IGF2YWlsYWJsZSBpbiBjb25maWd1cmUKQEAgLTE0MzMsNyArMTQzNiw3IEBACiAJCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJCS0taW5zdGFsbC1wbGF0bGliPSQoREVTVFNIQVJFRCkgXAogCQktLXJvb3Q9JChERVNURElSKS8KLQktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGEucHkKKwktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkucHkKIAktcm0gLXIgJChERVNURElSKSQoREVTVFNIQVJFRCkvX19weWNhY2hlX18KIAogIyBIZXJlIGFyZSBhIGNvdXBsZSBvZiB0YXJnZXRzIGZvciBNYWNPU1ggYWdhaW4sIHRvIGluc3RhbGwgYSBmdWxsCkBAIC0xNDc5LDEwICsxNDgyLDEwIEBACiAjIEluc3RhbGwgYSBudW1iZXIgb2Ygc3ltbGlua3MgdG8ga2VlcCBzb2Z0d2FyZSB0aGF0IGV4cGVjdHMgYSBub3JtYWwgdW5peAogIyBpbnN0YWxsICh3aGljaCBpbmNsdWRlcyBweXRob24tY29uZmlnKSBoYXBweS4KIGZyYW1ld29ya2luc3RhbGxtYWNsaWI6Ci0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoVkVSU0lPTikuYSIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKFZFUlNJT04pLmEiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAKQEAgLTE1OTcsNiArMTYwMCw3IEBACiAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKIAktcm0gLWYgUHJvZ3JhbXMvX3Rlc3RlbWJlZCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgogCS1maW5kIGJ1aWxkIC10eXBlIGYgLWEgISAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKKwktcm0gLWYgSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaAogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JwpAQCAtMTY2MSw3ICsxNjY1LDYgQEAKIAkJLW8gLW5hbWUgJyoudG1TbmlwcGV0JyBcCiAJCS1vIC1uYW1lICdTZXR1cCcgXAogCQktbyAtbmFtZSAnU2V0dXAuKicgXAotCQktbyAtbmFtZSByZWdlbiBcCiAJCS1vIC1uYW1lIFJFQURNRSBcCiAJCS1vIC1uYW1lIE5FV1MgXAogCQktbyAtbmFtZSBISVNUT1JZIFwKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCA1OWI3NzA0Li4zMWU0ZGYxIDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMjEsNiArMTIxLDcgQEAKIFRob21hcyBCZWxsbWFuCiBBbGV4YW5kZXIg4oCc0KHQsNGI0LDigJ0gQmVsb3BvbHNreQogRWxpIEJlbmRlcnNreQorTmlraGlsIEJlbmVzY2gKIERhdmlkIEJlbmphbWluCiBPc2NhciBCZW5qYW1pbgogQW5kcmV3IEJlbm5ldHRzCkBAIC0xNTcsNiArMTU4LDcgQEAKIE1hdHRoZXcgQm9lZGlja2VyCiBSb2JpbiBCb2VyZGlqawogQW5kcmEgQm9naWxkZWEKK05pa29sYXkgQm9nb3ljaGV2CiBEYXZpZCBCb2xlbgogV291dGVyIEJvbHN0ZXJsZWUKIEdhd2FpbiBCb2x0b24KQEAgLTI0NSw2ICsyNDcsNyBAQAogTWljaGFlbCBDZXRydWxvCiBEYXZlIENoYW1iZXJzCiBQYXNjYWwgQ2hhbWJvbgorTmljaG9sYXMgQ2hhbW1hcwogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKQEAgLTMwOSwxNSArMzEyLDE4IEBACiBEYXZpZCBDb3VybmFwZWF1CiBKdWxpZW4gQ291cnRlYXUKIFN0ZXZlIENvdXNpbnMKK0ZyYW5jaXNjbyBDb3V6bwogQWxleCBDb3ZlbnRyeQogTWF0dGhldyBEaXhvbiBDb3dsZXMKIFJ5YW4gQ295bmVyCiBDaHJpc3RvcGhlciBBLiBDcmFpZwogSmVyZW15IENyYXZlbgogTGF1cmEgQ3JlaWdodG9uCitUeWxlciBDcm9tcHRvbgogU2ltb24gQ3Jvc3MKIEZlbGlwZSBDcnV6CiBEcmV3IENzaWxsYWcKK0FsZXNzYW5kcm8gQ3VjY2kKIEpvYXF1aW4gQ3VlbmNhIEFiZWxhCiBTZWJhc3RpYW4gQ3VmcmUKIEpvaG4gQ3VnaW5pCkBAIC0zNjIsNyArMzY4LDkgQEAKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgogSm9zaXAgRGpvbG9uZ2EKK1dhbHRlciBEw7Zyd2FsZAogSmFyb21pciBEb2xlY2VrCitCcmVuZGFuIERvbmVnYW4KIElzbWFpbCBEb25tZXoKIFJvYmVydCBEb25vaHVlCiBNYXJjb3MgRG9ub2xvCkBAIC0zODksNyArMzk3LDYgQEAKIEthcm1lbiBEeWtzdHJhCiBKb3NpcCBEem9sb25nYQogTWF4aW0gRHp1bWFuZW5rbwotV2FsdGVyIETDtnJ3YWxkCiBIYW5zIEVja2FyZHQKIFJvZG9scGhvIEVja2hhcmR0CiBVbHJpY2ggRWNraGFyZHQKQEAgLTU0OCw4ICs1NTUsMTAgQEAKIExhcnMgR3VzdMOkYmVsCiBUaG9tYXMgR8O8dHRsZXIKIEpvbmFzIEguCitKb3NlcGggSGFja21hbgogQmFycnkgSGFkZG93CiBQaGlsaXBwIEhhZ2VtZWlzdGVyCitKb2huIEhhZ2VuCiBQYXVsIHRlbiBIYWdlbgogUmFzbXVzIEhhaG4KIFBldGVyIEhhaWdodApAQCAtNzg4LDYgKzc5Nyw3IEBACiBNYXJrbyBLb2h0YWxhCiBWYWpyYXNreSBLb2sKIEd1aWRvIEtvbGxlcmllCitKYWNlayBLb8WCb2R6aWVqCiBKYWNlayBLb25pZWN6bnkKIEFya2FkeSBLb3BseWFyb3YKIFBldGVyIEEuIEtvcmVuCkBAIC03OTksNiArODA5LDcgQEAKIEplcnp5IEtvemVyYQogTWFrc2ltIEtvenlhcmNodWsKIFN0ZWZhbiBLcmFoCitSb2xmIEtyYWhsCiBCb2IgS3JhcwogU2ViYXN0aWFuIEtyZWZ0CiBIb2xnZXIgS3Jla2VsCkBAIC04MzEsNiArODQyLDcgQEAKIFRpbm8gTGFuZ2UKIEdsZW5uIExhbmdmb3JkCiBBbmRyZXcgTGFuZ21lYWQKK1dvbGZnYW5nIExhbmduZXIKIERldGxlZiBMYW5uZXJ0CiBTb3JlbiBMYXJzZW4KIEFtb3MgTGF0dGVpZXIKQEAgLTg5NCwyNCArOTA2LDI3IEBACiBHcmVnb3IgTGluZ2wKIEV2ZXJldHQgTGlwbWFuCiBNaXJrbyBMaXNzCitBbGV4YW5kZXIgTGl1CiBOaWNrIExvY2t3b29kCiBTdGVwaGFuaWUgTG9ja3dvb2QKK01hcnRpbiB2b24gTMO2d2lzCiBIdWdvIExvcGVzIFRhdmFyZXMKIEd1aWxsZXJtbyBMw7NwZXotQW5nbGFkYQogQW5uZSBMb3JkCitBbGV4IExvcmRUaG9yc2VuCiBUb20gTG9yZWRvCiBKdXN0aW4gTG92ZQogTmVkIEphY2tzb24gTG92ZWx5CiBQZXRlciBMb3ZldHQKIENoYWxtZXIgTG93ZQogSmFzb24gTG93ZQotTWFydGluIHZvbiBMw7Z3aXMKIFRvbnkgTG93bmRzCiBSYXkgTG95emFnYQogS2FuZy1IYW8gKEtlbm55KSBMdQogTHVrYXMgTHVlZwogTG9yZW4gTHVrZQogRnJlZHJpayBMdW5kaAorTWlrZSBMdW5keQogWmhvbmd5dWUgTHVvCiBNYXJrIEx1dHoKIFRhcmFzIEx5YXB1bgpAQCAtMTE1NCw5ICsxMTY5LDExIEBACiBHZW9mZiBQaGlsYnJpY2sKIEdhdnJpZSBQaGlsaXBzb24KIEFkcmlhbiBQaGlsbGlwcworRHVzdHkgUGhpbGxpcHMKIENocmlzdG9waGVyIEouIFBob2VuaXgKIEphbWVzIFBpY2tlcmluZwogTmVhbGUgUGlja2V0dAorU3RldmUgUGllcmN5CiBKaW0gU3QuIFBpZXJyZQogRGFuIFBpZXJzb24KIE1hcnRpam4gUGlldGVycwpAQCAtMTIwOCw2ICsxMjI1LDcgQEAKIEJheWFyZCBSYW5kZWwKIFZhcnB1IFJhbnRhbGEKIEJyb2RpZSBSYW8KK1LDqW1pIFJhbXBpbgogU2Vua28gUmFzaWMKIEFudHRpIFJhc2luZW4KIE5pa29sYXVzIFJhdGgKQEAgLTEyNTgsNiArMTI3Niw3IEBACiBLZXZpbiBSb2RnZXJzCiBTZWFuIFJvZG1hbgogR2lhbXBhb2xvIFJvZG9sYQorTWF1cm8gUy4gTS4gUm9kcmlndWVzCiBFbHNvbiBSb2RyaWd1ZXoKIEFkaSBSb2liYW4KIEx1aXMgUm9qYXMKQEAgLTEzMDEsNiArMTMyMCw3IEBACiBNYXR0aGlldSBTCiBQYXRyaWNrIFNhYmluCiBTw6liYXN0aWVuIFNhYmzDqQorQW1pdCBTYWhhCiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CiBHZW9yZ2UgU2Fra2lzCkBAIC0xMzM0LDYgKzEzNTQsNyBAQAogUGV0ZXIgU2NobmVpZGVyLUthbXAKIEFydmluIFNjaG5lbGwKIE5vZmFyIFNjaG5pZGVyCitFZCBTY2hvdXRlbgogU2NvdHQgU2NocmFtCiBSb2JpbiBTY2hyZWliZXIKIENoYWQgSi4gU2Nocm9lZGVyCkBAIC0xNDA4LDYgKzE0MjksNyBAQAogUm95IFNtaXRoCiBSeWFuIFNtaXRoLVJvYmVydHMKIFJhZmFsIFNtb3RyenlrCitKb3NoIFNuaWRlcgogRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBOaXIgU29mZmVyCkBAIC0xNDM1LDExICsxNDU3LDEzIEBACiBNYXJlayBTdGVwbmlvd3NraQogQmFydWNoIFN0ZXJpbgogQ2hyaXMgU3Rlcm4KK0VsaSBTdGV2ZW5zCiBBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKIENhc3BlciBTdG9lbAorRGFuaWVsIFN0b2tlcwogTWljaGFlbCBTdG9uZQogU2VyaGl5IFN0b3JjaGFrYQogS2VuIFN0b3gKQEAgLTE0NjUsNiArMTQ4OSw3IEBACiBQaW90ciBTemN6ZXBhbmlhawogQW1pciBTemVrZWx5CiBNYWNpZWogU3p1bGlrCitKb2VsIFRhZGRlaQogQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMKIEhpZGVha2kgVGFrYWhhc2hpCiBUYWthc2UgQXJpaGlybwpAQCAtMTQ3Nyw4ICsxNTAyLDEwIEBACiBDaHJpc3RpYW4gVGFuemVyCiBTdGV2ZW4gVGFzY2h1awogQW15IFRheWxvcgorSnVsaWFuIFRheWxvcgogTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25paworTWFydGluIFRlaWNobWFubgogR3VzdGF2byBUZW1wbGUKIE1pa2hhaWwgVGVyZWtob3YKIFZpY3RvciBUZXJyw7NuCkBAIC0xNjYwLDYgKzE2ODcsNyBAQAogQWxha3NoZW5kcmEgWWFkYXYKIEhpcm9rYXp1IFlhbWFtb3RvCiBLYS1QaW5nIFllZQorQ2hpIEhzdWFuIFllbgogSmFzb24gWWVvCiBFdW5nSnVuIFlpCiBCb2IgWW9kbG93c2tpCkBAIC0xNjg3LDUgKzE3MTUsNCBAQAogRG91ZyBab25na2VyCiBQZXRlciDDhXN0cmFuZAogZXZpbHplcm8KLUNoaSBIc3VhbiBZZW4KIERodXNoeWFudGggUmFtYXNhbXkKZGlmZiAtLWdpdCBhL01pc2MvSElTVE9SWSBiL01pc2MvSElTVE9SWQppbmRleCA5NjU1ZDRjLi43M2VjOTI2IDEwMDY0NAotLS0gYS9NaXNjL0hJU1RPUlkKKysrIGIvTWlzYy9ISVNUT1JZCkBAIC04LDYgKzgsNDMwNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNC0wMy0xNgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIwOTM5OiBGaXggdGVzdF9nZXR1cmwgZmFpbHVyZSBpbiB0ZXN0X3VybGxpYm5ldCBkdWUgdG8KKyAgbmV3IHJlZGlyZWN0IG9mIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8gdG8gaHR0cHM6Ly93d3cucHl0aG9uLm9yZy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIE1lcmdlIGluIGFsbCBkb2N1bWVudGF0aW9uIGNoYW5nZXMgc2luY2UgYnJhbmNoaW5nIDMuNC4wcmMxLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIHJlbGVhc2UgY2FuZGlkYXRlIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTQtMDMtMDkKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIwNzg2OiBGaXggc2lnbmF0dXJlcyBmb3IgZGljdC5fX2RlbGl0ZW1fXyBhbmQKKyAgcHJvcGVydHkuX19kZWxldGVfXyBidWlsdGlucy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMDgzOTogRG9uJ3QgdHJpZ2dlciBhIERlcHJlY2F0aW9uV2FybmluZyBpbiB0aGUgc3RpbGwgc3VwcG9ydGVkCisgIHBrZ3V0aWwuZ2V0X2xvYWRlcigpIEFQSSB3aGVuIF9fbG9hZGVyX18gaXNuJ3Qgc2V0IG9uIGEgbW9kdWxlIChub3IKKyAgd2hlbiBwa2d1dGlsLmZpbmRfbG9hZGVyKCkgaXMgY2FsbGVkIGRpcmVjdGx5KS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NTEyOiBMYXVuY2ggcHlkb2MgLWIgaW5zdGVhZCBvZiBweWRvY2d1aS5weXcgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjA3NDg6IFVuaW5zdGFsbGluZyBwaXAgZG9lcyBub3QgbGVhdmUgYmVoaW5kIHRoZSBweWMgb2YKKyAgdGhlIHVuaW5zdGFsbGVyIGFueW1vcmUuCisKKy0gSXNzdWUgIzIwNTY4OiBUaGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGluc3RhbGxzIHRoZSB1bnZlcnNpb25lZCBgYHBpcGBgCisgIGNvbW1hbmQgaW4gYWRkaXRpb24gdG8gdGhlIHZlcnNpb25lZCBgYHBpcDNgYCBhbmQgYGBwaXAzLjRgYCBjb21tYW5kcy4KKworLSBJc3N1ZSAjMjA3NTc6IFRoZSBlbnN1cmVwaXAgaGVscGVyIGZvciB0aGUgV2luZG93cyB1bmluc3RhbGxlciBub3cgc2tpcHMKKyAgdW5pbnN0YWxsaW5nIHBpcCAocmF0aGVyIHRoYW4gZmFpbGluZykgaWYgdGhlIHVzZXIgaGFzIHVwZGF0ZWQgcGlwIHRvIGEKKyAgZGlmZmVyZW50IHZlcnNpb24gZnJvbSB0aGUgb25lIGJ1bmRsZWQgd2l0aCBlbnN1cmVwaXAuCisKKy0gSXNzdWUgIzIwNDY1OiBVcGRhdGUgT1MgWCBhbmQgV2luZG93cyBpbnN0YWxsZXIgYnVpbGRzIHRvIHVzZQorICBTUUxpdGUgMy44LjMuMS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCByZWxlYXNlIGNhbmRpZGF0ZSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE0LTAyLTIzCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMDYyNTogUGFyYW1ldGVyIG5hbWVzIGluIF9fYW5ub3RhdGlvbnNfXyB3ZXJlIG5vdCBtYW5nbGVkIHByb3Blcmx5LgorICBEaXNjb3ZlcmVkIGJ5IEpvbmFzIFdpZWxpY2tpLCBwYXRjaCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjAyNjE6IEluIHBpY2tsZSwgbG9va3VwIF9fZ2V0bmV3YXJnc19fIGFuZCBfX2dldG5ld2FyZ3NfZXhfXyBvbiB0aGUKKyAgdHlwZSBvZiB0aGUgb2JqZWN0LgorCistIElzc3VlICMyMDYxOTogR2l2ZSB0aGUgQVNUIG5vZGVzIG9mIGtleXdvcmQtb25seSBhcmd1bWVudHMgYSBjb2x1bW4gYW5kIGxpbmUKKyAgbnVtYmVyLgorCistIElzc3VlICMyMDUyNjogUmV2ZXJ0IGNoYW5nZXMgb2YgaXNzdWUgIzE5NDY2IHdoaWNoIGludHJvZHVjZXMgYSByZWdyZXNzaW9uOgorICBkb24ndCBjbGVhciBhbnltb3JlIHRoZSBzdGF0ZSBvZiBQeXRob24gdGhyZWFkcyBlYXJseSBkdXJpbmcgdGhlIFB5dGhvbgorICBzaHV0ZG93bi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMDcxMDogVGhlIHB5ZG9jIHN1bW1hcnkgbGluZSBubyBsb25nZXIgZGlzcGxheXMgdGhlICJzZWxmIiBwYXJhbWV0ZXIKKyAgZm9yIGJvdW5kIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwNTY2OiBDaGFuZ2UgYXN5bmNpby5hc19jb21wbGV0ZWQoKSB0byB1c2UgYSBRdWV1ZSwgdG8KKyAgYXZvaWQgTyhOKioyKSBiZWhhdmlvci4KKworLSBJc3N1ZSAjMjA3MDQ6IEltcGxlbWVudCBuZXcgZGVidWcgQVBJIGluIGFzeW5jaW8uIEFkZCBuZXcgbWV0aG9kcworICBCYXNlRXZlbnRMb29wLnNldF9kZWJ1ZygpIGFuZCBCYXNlRXZlbnRMb29wLmdldF9kZWJ1ZygpLgorICBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyAnYXN5bmNpby50YXNrcy5fREVCVUcnIHZhcmlhYmxlIHdpdGgKKyAgJ1BZVEhPTkFTWU5DSU9ERUJVRycgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKy0gYXN5bmNpbzogUmVmYWN0b3JpbmcgYW5kIGZpeGVzOiBCYXNlRXZlbnRMb29wLnNvY2tfY29ubmVjdCgpIHJhaXNlcyBhbgorICBlcnJvciBpZiB0aGUgYWRkcmVzcyBpcyBub3QgcmVzb2x2ZWQ7IHVzZSBfX3Nsb3RzX18gaW4gSGFuZGxlIGFuZAorICBUaW1lckhhbmRsZTsgYXNfY29tcGxldGVkKCkgYW5kIHdhaXQoKSByYWlzZSBUeXBlRXJyb3IgaWYgdGhlIHBhc3NlZAorICBsaXN0IG9mIEZ1dHVyZXMgaXMgYSBzaW5nbGUgRnV0dXJlOyBjYWxsX3Nvb24oKSBhbmQgb3RoZXIgJ2NhbGxfKigpJworICBmdW5jdGlvbnMgcmFpc2UgVHlwZUVycm9yIGlmIHRoZSBwYXNzZWQgY2FsbGJhY2sgaXMgYSBjb3JvdXRpbmUKKyAgZnVuY3Rpb247IF9Qcm9hY3RvckJhc2VQaXBlVHJhbnNwb3J0IHVzZXMgX0Zsb3dDb250cm9sTWl4aW47CisgIFdyaXRlVHJhbnNwb3J0LnNldF93cml0ZV9idWZmZXJfc2l6ZSgpIGNhbGxzIF9tYXliZV9wYXVzZV9wcm90b2NvbCgpCisgIHRvIGNvbnNpZGVyIHBhdXNpbmcgcmVjZWl2aW5nIGlmIHRoZSB3YXRlcm1hcmsgbGltaXRzIGhhdmUgY2hhbmdlZDsKKyAgZml4IF9jaGVja19yZXNvbHZlZF9hZGRyZXNzKCkgZm9yIElQdjYgYWRkcmVzczsgYW5kIG90aGVyIG1pbm9yCisgIGltcHJvdmVtZW50cywgYWxvbmcgd2l0aCBtdWx0aXBsZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCisKKy0gSXNzdWUgIzIwNjg0OiBGaXggaW5zcGVjdC5nZXRmdWxsYXJnc3BlYygpIHRvIG5vdCB0byBmb2xsb3cgX193cmFwcGVkX18KKyAgY2hhaW5zLiBNYWtlIGl0cyBiZWhhdmlvdXIgY29uc2lzdGVudCB3aXRoIGJvdW5kIG1ldGhvZHMgZmlyc3QgYXJndW1lbnQuCisgIFBhdGNoIGJ5IE5pY2sgQ29naGxhbiBhbmQgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzIwNjgxOiBBZGQgbmV3IGVycm9yIGhhbmRsaW5nIEFQSSBpbiBhc3luY2lvLiBOZXcgQVBJczoKKyAgbG9vcC5zZXRfZXhjZXB0aW9uX2hhbmRsZXIoKSwgbG9vcC5kZWZhdWx0X2V4Y2VwdGlvbl9oYW5kbGVyKCksIGFuZAorICBsb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoKS4KKworLSBJc3N1ZSAjMjA2NzM6IEltcGxlbWVudCBzdXBwb3J0IGZvciBVTklYIERvbWFpbiBTb2NrZXRzIGluIGFzeW5jaW8uCisgIE5ldyBBUElzOiBsb29wLmNyZWF0ZV91bml4X2Nvbm5lY3Rpb24oKSwgbG9vcC5jcmVhdGVfdW5peF9zZXJ2ZXIoKSwKKyAgc3RyZWFtcy5vcGVuX3VuaXhfY29ubmVjdGlvbigpLCBhbmQgc3RyZWFtcy5zdGFydF91bml4X3NlcnZlcigpLgorCistIElzc3VlICMyMDYxNjogQWRkIGEgZm9ybWF0KCkgbWV0aG9kIHRvIHRyYWNlbWFsbG9jLlRyYWNlYmFjay4KKworLSBJc3N1ZSAjMTk3NDQ6IHRoZSBlbnN1cmVwaXAgaW5zdGFsbGF0aW9uIHN0ZXAgbm93IGp1c3QgcHJpbnRzIGEgd2FybmluZyB0bworICBzdGRlcnIgcmF0aGVyIHRoYW4gZmFpbGluZyBvdXRyaWdodCBpZiBTU0wvVExTIGlzIHVuYXZhaWxhYmxlLiBUaGlzIGFsbG93cworICBsb2NhbCBpbnN0YWxsYXRpb24gb2YgUE9TSVggYnVpbGRzIHdpdGhvdXQgU1NML1RMUyBzdXBwb3J0LgorCistIElzc3VlICMyMDU5NDogQXZvaWQgbmFtZSBjbGFzaCB3aXRoIHRoZSBsaWJjIGZ1bmN0aW9uIHBvc2l4X2Nsb3NlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjA2NDE6IFJ1biBNU0kgY3VzdG9tIGFjdGlvbnMgKHBpcCBpbnN0YWxsYXRpb24sIHB5YyBjb21waWxhdGlvbikKKyAgd2l0aCB0aGUgTm9JbXBlcnNvbmF0ZSBmbGFnLCB0byBzdXBwb3J0IGVsZXZhdGVkIGV4ZWN1dGlvbiAoVUFDKS4KKworLSBJc3N1ZSAjMjAyMjE6IFJlbW92ZWQgY29uZmxpY3RpbmcgKG9yIGNpcmN1bGFyKSBoeXBvdCBkZWZpbml0aW9uIHdoZW4KKyAgY29tcGlsZWQgd2l0aCBWUyAyMDEwIG9yIGFib3ZlLiAgSW5pdGlhbCBwYXRjaCBieSBUYWJyZXogTW9oYW1tZWQuCisKKy0gSXNzdWUgIzIwNjA5OiBSZXN0b3JlZCB0aGUgYWJpbGl0eSB0byBidWlsZCA2NC1iaXQgV2luZG93cyBiaW5hcmllcyBvbgorICAzMi1iaXQgV2luZG93cywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgY2hhbmdlIGluIGlzc3VlICMxOTc4OC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCByZWxlYXNlIGNhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE0LTAyLTEwCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxOTI1NTogVGhlIGJ1aWx0aW5zIG1vZHVsZSBpcyByZXN0b3JlZCB0byBpbml0aWFsIHZhbHVlIGJlZm9yZQorICBjbGVhbmluZyBvdGhlciBtb2R1bGVzLiAgVGhlIHN5cyBhbmQgYnVpbHRpbnMgbW9kdWxlcyBhcmUgY2xlYW5lZCBsYXN0LgorCistIElzc3VlICMyMDU4ODogTWFrZSBQeXRob24tYXN0LmMgQzg5IGNvbXBsaWFudC4KKworLSBJc3N1ZSAjMjA0Mzc6IEZpeGVkIDIyIHBvdGVudGlhbCBidWdzIHdoZW4gZGVsZXRpbmcgb2JqZWN0IHJlZmVyZW5jZXMuCisKKy0gSXNzdWUgIzIwNTAwOiBEaXNwbGF5aW5nIGFuIGV4Y2VwdGlvbiBhdCBpbnRlcnByZXRlciBzaHV0ZG93biBubyBsb25nZXIKKyAgcmlza3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBQeU9iamVjdF9TdHIuCisKKy0gSXNzdWUgIzIwNTM4OiBVVEYtNyBpbmNyZW1lbnRhbCBkZWNvZGVyIHByb2R1Y2VkIGluY29uc2lzdGVudCBzdHJpbmcgd2hlbgorICBpbnB1dCB3YXMgdHJ1bmNhdGVkIGluIEJBU0U2NCBzZWN0aW9uLgorCistIElzc3VlICMyMDQwNDogaW8uVGV4dElPV3JhcHBlciAoYW5kIGhlbmNlIHRoZSBvcGVuKCkgYnVpbHRpbikgbm93IHVzZXMgdGhlCisgIGludGVybmFsIGNvZGVjIG1hcmtpbmcgc3lzdGVtIGFkZGVkIGZvciBpc3N1ZSAjMTk2MTkgdG8gdGhyb3cgTG9va3VwRXJyb3IKKyAgZm9yIGtub3duIG5vbi10ZXh0IGVuY29kaW5ncyBhdCBzdHJlYW0gY29uc3RydWN0aW9uIHRpbWUuIFRoZSBleGlzdGluZworICBvdXRwdXQgdHlwZSBjaGVja3MgcmVtYWluIGluIHBsYWNlIHRvIGRlYWwgd2l0aCB1bm1hcmtlZCB0aGlyZCBwYXJ0eQorICBjb2RlY3MuCisKKy0gSXNzdWUgIzE3MTYyOiBBZGQgUHlUeXBlX0dldFNsb3QuCisKKy0gSXNzdWUgIzIwMTYyOiBGaXggYW4gYWxpZ25tZW50IGlzc3VlIGluIHRoZSBzaXBoYXNoMjQoKSBoYXNoIGZ1bmN0aW9uIHdoaWNoCisgIGNhdXNlZCBhIGNyYXNoIG9uIFBvd2VyUEMgNjQtYml0IChwcGM2NCkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjA1MzA6IFRoZSBzaWduYXR1cmVzIGZvciBzbG90IGJ1aWx0aW5zIGhhdmUgYmVlbiB1cGRhdGVkCisgIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGV5IG9ubHkgYWNjZXB0IHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzIwNTE3OiBGdW5jdGlvbnMgaW4gdGhlIG9zIG1vZHVsZSB0aGF0IGFjY2VwdCB0d28gZmlsZW5hbWVzCisgIG5vdyByZWdpc3RlciBib3RoIGZpbGVuYW1lcyBpbiB0aGUgZXhjZXB0aW9uIG9uIGZhaWx1cmUuCisKKy0gSXNzdWUgIzIwNTYzOiBUaGUgaXBhZGRyZXNzIG1vZHVsZSBBUEkgaXMgbm93IGNvbnNpZGVyZWQgc3RhYmxlLgorCistIElzc3VlICMxNDk4MzogZW1haWwuZ2VuZXJhdG9yIG5vdyBhbHdheXMgYWRkcyBhIGxpbmUgZW5kIGFmdGVyIGVhY2ggTUlNRQorICBib3VuZGFyeSBtYXJrZXIsIGluc3RlYWQgb2YgZG9pbmcgc28gb25seSB3aGVuIHRoZXJlIGlzIGFuIGVwaWxvZ3VlLiAgVGhpcworICBmaXhlcyBhbiBSRkMgY29tcGxpYW5jZSBidWcgYW5kIHNvbHZlcyBhbiBpc3N1ZSB3aXRoIHNpZ25lZCBNSU1FIHBhcnRzLgorCistIElzc3VlICMyMDU0MDogRml4IGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiAodnMuIFB5dGhvbiAzLjIpIHdoZW4gbGF5ZXJpbmcKKyAgYSBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbiBvdmVyIGEgVENQIHNvY2tldC4gIEZvciBzbWFsbCBwYXlsb2FkcywgTmFnbGUncworICBhbGdvcml0aG0gd291bGQgaW50cm9kdWNlIGlkbGUgZGVsYXlzIGJlZm9yZSB0aGUgZW50aXJlIHRyYW5zbWlzc2lvbiBvZiBhCisgIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzE2OTgzOiB0aGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzaW5nIGNvZGUgd2lsbCBub3cgZGVjb2RlIGVuY29kZWQgd29yZHMKKyAgdGhhdCBhcmUgKGluY29ycmVjdGx5KSBzdXJyb3VuZGVkIGJ5IHF1b3RlcywgYW5kIHJlZ2lzdGVyIGEgZGVmZWN0LgorCistIElzc3VlICMxOTc3MjogZW1haWwuZ2VuZXJhdG9yIG5vIGxvbmdlciBtdXRhdGVzIHRoZSBtZXNzYWdlIG9iamVjdCB3aGVuCisgIGRvaW5nIGEgZG93bi10cmFuc2Zvcm0gZnJvbSA4Yml0IHRvIDdiaXQgQ1RFcy4KKworLSBJc3N1ZSAjMjA1MzY6IHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBub3cgY29ycmVjdGx5IGhhbmRsZSBEZWNpbWFsIGluc3RhbmNlcworICB3aXRoIHBvc2l0aXZlIGV4cG9uZW50cworCistIElzc3VlICMxODgwNTogdGhlIG5ldG1hc2svaG9zdG1hc2sgcGFyc2luZyBpbiBpcGFkZHJlc3Mgbm93IG1vcmUgcmVsaWFibHkKKyAgZmlsdGVycyBvdXQgaWxsZWdhbCB2YWx1ZXMgYW5kIGNvcnJlY3RseSBhbGxvd3MgYW55IHZhbGlkIHByZWZpeCBsZW5ndGguCisKKy0gSXNzdWUgIzIwNDgxOiBGb3IgYXQgbGVhc3QgUHl0aG9uIDMuNCwgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIHdpbGwgcmVxdWlyZQorICB0aGF0IGFsbCBpbnB1dHMgZm9yIGEgc2luZ2xlIG9wZXJhdGlvbiBiZSBvZiBhIHNpbmdsZSBjb25zaXN0ZW50IHR5cGUsIG9yCisgIGVsc2UgYSBtaXhlZCBvZiBpbnRzIGFuZCBhIHNpbmdsZSBvdGhlciBjb25zaXN0ZW50IHR5cGUuIFRoaXMgYXZvaWRzCisgIHNvbWUgaW50ZXJvcGVyYWJpbGl0eSBpc3N1ZXMgdGhhdCBhcm9zZSB3aXRoIHRoZSBwcmV2aW91cyBhcHByb2FjaCBvZgorICBjb2VyY2luZyB0byBhIHN1aXRhYmxlIGNvbW1vbiB0eXBlLgorCistIElzc3VlICMyMDQ3ODogdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG5vdyB0cmVhdHMgY29sbGVjdGlvbnMuQ291bnRlciBpbnB1dHMKKyAgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUuCisKKy0gSXNzdWUgIzE3MzY5OiBnZXRfZmlsZW5hbWUgd2FzIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmIHRoZSBmaWxlbmFtZQorICBwYXJhbWV0ZXIncyBSRkMyMjMxIGVuY29kaW5nIHdhcyBicm9rZW4gaW4gY2VydGFpbiB3YXlzLiAgVGhpcyB3YXMKKyAgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIHB5dGhvbjIuCisKKy0gSXNzdWUgIzIwMDEzOiBTb21lIGltYXAgc2VydmVycyBkaXNjb25uZWN0IGlmIHRoZSBjdXJyZW50IG1haWxib3ggaXMKKyAgZGVsZXRlZCwgYW5kIGltYXBsaWIgZGlkIG5vdCBoYW5kbGUgdGhhdCBjYXNlIGdyYWNlZnVsbHkuICBOb3cgaXQKKyAgaGFuZGxlcyB0aGUgJ2J5ZScgY29ycmVjdGx5LgorCistIElzc3VlICMyMDUzMTogUmV2ZXJ0IDMuNCB2ZXJzaW9uIG9mIGZpeCBmb3IgIzE5MDYzLCBhbmQgYXBwbHkgdGhlIDMuMworICB2ZXJzaW9uLiAgVGhhdCBpcywgZG8gKm5vdCogcmFpc2UgYW4gZXJyb3IgaWYgdW5pY29kZSBpcyBwYXNzZWQgdG8KKyAgZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkLgorCistIElzc3VlICMyMDQ3NjogSWYgYSBub24tY29tcGF0MzIgcG9saWN5IGlzIHVzZWQgd2l0aCBhbnkgb2YgdGhlIGVtYWlsIHBhcnNlcnMsCisgIEVtYWlsTWVzc2FnZSBpcyBub3cgdXNlZCBhcyB0aGUgZmFjdG9yeSBjbGFzcy4gIFRoZSBmYWN0b3J5IGNsYXNzIHNob3VsZAorICByZWFsbHkgY29tZSBmcm9tIHRoZSBwb2xpY3k7IHRoYXQgd2lsbCBnZXQgZml4ZWQgaW4gMy41LgorCistIElzc3VlICMxOTkyMDogVGFyRmlsZS5saXN0KCkgbm8gbG9uZ2VyIGZhaWxzIHdoZW4gb3V0cHV0cyBhIGxpc3RpbmcKKyAgY29udGFpbmluZyBub24tZW5jb2RhYmxlIGNoYXJhY3RlcnMuICBCYXNlZCBvbiBwYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzIwNTE1OiBGaXggTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGludHJvZHVjZWQgYnkgaXNzdWUgIzIwMzY4LgorCistIElzc3VlICMxOTE4NjogUmVzdG9yZSBuYW1lc3BhY2luZyBvZiBleHBhdCBzeW1ib2xzIGluc2lkZSB0aGUgcHlleHBhdCBtb2R1bGUuCisKKy0gSXNzdWUgIzIwMDUzOiBlbnN1cmVwaXAgKGFuZCBoZW5jZSB2ZW52KSBhcmUgbm8gbG9uZ2VyIGFmZmVjdGVkIGJ5IHRoZQorICBzZXR0aW5ncyBpbiB0aGUgZGVmYXVsdCBwaXAgY29uZmlndXJhdGlvbiBmaWxlLgorCistIElzc3VlICMyMDQyNjogV2hlbiBwYXNzaW5nIHRoZSByZS5ERUJVRyBmbGFnLCByZS5jb21waWxlKCkgZGlzcGxheXMgdGhlCisgIGRlYnVnIG91dHB1dCBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZCwgcmVnYXJkbGVzcyBvZiB0aGUgY29tcGlsYXRpb24gY2FjaGUuCisKKy0gSXNzdWUgIzIwMzY4OiBUaGUgbnVsbCBjaGFyYWN0ZXIgbm93IGNvcnJlY3RseSBwYXNzZWQgZnJvbSBUY2wgdG8gUHl0aG9uLgorICBJbXByb3ZlZCBlcnJvciBoYW5kbGluZyBpbiB2YXJpYWJsZXMtcmVsYXRlZCBjb21tYW5kcy4KKworLSBJc3N1ZSAjMjA0MzU6IEZpeCBfcHlpby5TdHJpbmdJTy5nZXR2YWx1ZSgpIHRvIHRha2UgaW50byBhY2NvdW50IG5ld2xpbmUKKyAgdHJhbnNsYXRpb24gc2V0dGluZ3MuCisKKy0gdHJhY2VtYWxsb2M6IEZpeCBzbGljaW5nIHRyYWNlcyBhbmQgZml4IHNsaWNpbmcgYSB0cmFjZWJhY2suCisKKy0gSXNzdWUgIzIwMzU0OiBGaXggYW4gYWxpZ25tZW50IGlzc3VlIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUgb24gNjQtYml0CisgIHBsYXRmb3Jtcy4gQnVnIHNlZW4gb24gNjQtYml0IExpbnV4IHdoZW4gdXNpbmcgIm1ha2UgcHJvZmlsZS1vcHQiLgorCistIElzc3VlICMxNzE1OTogaW5zcGVjdC5zaWduYXR1cmUgbm93IGFjY2VwdHMgZHVjayB0eXBlcyBvZiBmdW5jdGlvbnMsCisgIHdoaWNoIGFkZHMgc3VwcG9ydCBmb3IgQ3l0aG9uIGZ1bmN0aW9ucy4gSW5pdGlhbCBwYXRjaCBieSBTdGVmYW4gQmVobmVsLgorCistIElzc3VlICMxODgwMTogRml4IGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMgdG8gY29ycmVjdGx5IGNsYXNzaWZ5CisgIG9iamVjdC5fX25ld19fIGFuZCBvYmplY3QuX19pbml0X18uCisKKy0gRml4ZWQgY21hdGguaXNpbmYncyBuYW1lIGluIGl0cyBhcmd1bWVudCBwYXJzaW5nIGNvZGUuCisKKy0gSXNzdWUgIzIwMzExLCAjMjA0NTI6IHBvbGwgYW5kIGVwb2xsIG5vdyByb3VuZCB0aGUgdGltZW91dCBhd2F5IGZyb20gemVybywKKyAgaW5zdGVhZCBvZiByb3VuZGluZyB0b3dhcmRzIHplcm8sIGluIHNlbGVjdCBhbmQgc2VsZWN0b3JzIG1vZHVsZXM6CisgIHNlbGVjdC5lcG9sbC5wb2xsKCksIHNlbGVjdG9ycy5Qb2xsU2VsZWN0b3IucG9sbCgpIGFuZAorICBzZWxlY3RvcnMuRXBvbGxTZWxlY3Rvci5wb2xsKCkuIEZvciBleGFtcGxlLCBhIHRpbWVvdXQgb2Ygb25lIG1pY3Jvc2Vjb25kCisgICgxZS02KSBpcyBub3cgcm91bmRlZCB0byBvbmUgbWlsbGlzZWNvbmRpICgxZS0zKSwgaW5zdGVhZCBvZiBiZWluZyByb3VuZGVkIHRvCisgIHplcm8uICBIb3dldmVyLCB0aGUgZ3JhbnVsYXJpdHkgcHJvcGVydHkgYW5kIGFzeW5jaW8ncyByZXNvbHV0aW9uIGZlYXR1cmUKKyAgd2VyZSByZW1vdmVkIGFnYWluLgorCistIGFzeW5jaW86IFNvbWUgcmVmYWN0b3Jpbmc7IHZhcmlvdXMgZml4ZXM7IGFkZCB3cml0ZSBmbG93IGNvbnRyb2wgdG8KKyAgdW5peCBwaXBlczsgRnV0dXJlLnNldF9leGNlcHRpb24oKSBpbnN0YW50aWF0ZXMgdGhlIGV4Y2VwdGlvbgorICBhcmd1bWVudCBpZiBpdCBpcyBhIGNsYXNzOyBpbXByb3ZlZCBwcm9hY3RvciBwaXBlIHRyYW5zcG9ydDsgc3VwcG9ydAorICB3YWl0X2ZvcihmLCBOb25lKTsgZG9uJ3QgbG9nIGJyb2tlbi9kaXNjb25uZWN0ZWQgcGlwZXM7IHVzZQorICBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYXNzZXJ0IGZvciBmb3JiaWRkZW4gc3VicHJvY2Vzc197c2hlbGwsZXhlY30KKyAgYXJndW1lbnRzOyBhZGRlZCBhIGNvbnZlbmllbmNlIEFQSSBmb3Igc3VicHJvY2VzcyBtYW5hZ2VtZW50OyBhZGRlZAorICBTdHJlYW1SZWFkZXIuYXRfZW9mKCk7IHByb3Blcmx5IGhhbmRsZSBkdXBsaWNhdGUgY29yb3V0aW5lcy9mdXR1cmVzCisgIGluIGdhdGhlcigpLCB3YWl0KCksIGFzX2NvbXBsZXRlZCgpOyB1c2UgYSBieXRlYXJyYXkgZm9yIGJ1ZmZlcmluZworICBpbiBTdHJlYW1SZWFkZXI7IGFuZCBtb3JlLgorCistIElzc3VlICMyMDI4ODogZml4IGhhbmRsaW5nIG9mIGludmFsaWQgbnVtZXJpYyBjaGFycmVmcyBpbiBIVE1MUGFyc2VyLgorCistIElzc3VlICMyMDQyNDogUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGlvLlN0cmluZ0lPIG5vdyBzdXBwb3J0cyBsb25lIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzIwMzA4OiBpbnNwZWN0LnNpZ25hdHVyZSBub3cgd29ya3Mgb24gY2xhc3NlcyB3aXRob3V0IHVzZXItZGVmaW5lZAorICBfX2luaXRfXyBvciBfX25ld19fIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwMzcyOiBpbnNwZWN0LmdldGZpbGUgKGFuZCBhIGJ1bmNoIG9mIG90aGVyIGluc3BlY3QgZnVuY3Rpb25zIHRoYXQKKyAgdXNlIGl0KSBkb2Vzbid0IGNyYXNoIHdpdGggdW5leHBlY3RlZCBBdHRyaWJ1dGVFcnJvciBvbiBjbGFzc2VzIGRlZmluZWQgaW4gQworICB3aXRob3V0IF9fbW9kdWxlX18uCisKKy0gSXNzdWUgIzIwMzU2OiBpbnNwZWN0LnNpZ25hdHVyZSBmb3JtYXR0aW5nIHVzZXMgJy8nIHRvIHNlcGFyYXRlCisgIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGZyb20gb3RoZXJzLgorCistIElzc3VlICMyMDIyMzogaW5zcGVjdC5zaWduYXR1cmUgbm93IHN1cHBvcnRzIG1ldGhvZHMgZGVmaW5lZCB3aXRoCisgIGZ1bmN0b29scy5wYXJ0aWFsbWV0aG9kcy4KKworLSBJc3N1ZSAjMTk0NTY6IG50cGF0aC5qb2luKCkgbm93IGpvaW5zIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSB3aGVuIGEgZHJpdmUKKyAgaXMgcHJlc2VudC4KKworLSBJc3N1ZSAjMTkwNzc6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSBjbGVhbnVwIG5vIGxvbmdlciBmYWlscyB3aGVuCisgIGNhbGxlZCBkdXJpbmcgc2h1dGRvd24uICBFbWl0dGluZyByZXNvdXJjZSB3YXJuaW5nIGluIF9fZGVsX18gbm8gbG9uZ2VyIGZhaWxzLgorICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvaW5lIFBpdHJvdS4KKworLSBJc3N1ZSAjMjAzOTQ6IFNpbGVuY2UgQ292ZXJpdHkgd2FybmluZyBpbiBhdWRpb29wIG1vZHVsZS4KKworLSBJc3N1ZSAjMjAzNjc6IEZpeCBiZWhhdmlvciBvZiBjb25jdXJyZW50LmZ1dHVyZXMuYXNfY29tcGxldGVkKCkgZm9yCisgIGR1cGxpY2F0ZSBhcmd1bWVudHMuICBQYXRjaCBieSBHbGVubiBMYW5nZm9yZC4KKworLSBJc3N1ZSAjODI2MDogVGhlIHJlYWQoKSwgcmVhZGxpbmUoKSBhbmQgcmVhZGxpbmVzKCkgbWV0aG9kcyBvZgorICBjb2RlY3MuU3RyZWFtUmVhZGVyIHJldHVybmVkIGluY29tcGxldGUgZGF0YSB3aGVuIHdlcmUgY2FsbGVkIGFmdGVyCisgIHJlYWRsaW5lKCkgb3IgcmVhZChzaXplKS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCistIElzc3VlICMyMDEwNTogdGhlIGNvZGVjIGV4Y2VwdGlvbiBjaGFpbmluZyBub3cgY29ycmVjdGx5IHNldHMgdGhlCisgIHRyYWNlYmFjayBvZiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGFzIGl0cyBfX3RyYWNlYmFja19fIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMTc0ODE6IGluc3BlY3QuZ2V0ZnVsbGFyZ3NwZWMoKSBub3cgdXNlcyBpbnNwZWN0LnNpZ25hdHVyZSgpIEFQSS4KKworLSBJc3N1ZSAjMTUzMDQ6IGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KCkgY2FuIGJsb2NrIGZvcmV2ZXIgZXZlbiBpZgorICBGdXR1cmVzIGhhdmUgY29tcGxldGVkLiBQYXRjaCBieSBHbGVubiBMYW5nZm9yZC4KKworLSBJc3N1ZSAjMTQ0NTU6IHBsaXN0bGliOiBmaXggc2VyaWFsaXppbmcgaW50ZWdlcnMgaW4gdGhlIHJhbmdlCisgIG9mIGFuIHVuc2lnbmVkIGxvbmcgbG9uZyBidXQgb3V0c2lkZSBvZiB0aGUgcmFuZ2Ugb2Ygc2lnbmVkIGxvbmcgbG9uZyBmb3IKKyAgYmluYXJ5IHBsaXN0IGZpbGVzLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzIwNDA2OiBVc2UgUHl0aG9uIGFwcGxpY2F0aW9uIGljb25zIGZvciBJZGxlIHdpbmRvdyB0aXRsZSBiYXJzLgorICBQYXRjaCBtb3N0bHkgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBVcGRhdGUgdGhlIHB5dGhvbi5naWYgaWNvbiBmb3IgdGhlIElkbGUgY2xhc3Nicm93c2VyIGFuZCBwYXRoYm93c2VyCisgIGZyb20gdGhlIG9sZCBncmVlbiBzbmFrZSB0byB0aGUgbmV3IGJsdWUgYW5kIHllbGxvdyBzbmFrZXMuCisKKy0gSXNzdWUgIzE3NzIxOiBSZW1vdmUgbm9uLWZ1bmN0aW9uYWwgY29uZmlndXJhdGlvbiBkaWFsb2cgaGVscCBidXR0b24gdW50aWwgd2UKKyAgbWFrZSBpdCBhY3R1YWxseSBnaXZlcyBzb21lIGhlbHAgd2hlbiBjbGlja2VkLiBQYXRjaCBieSBHdWlsaGVybWUgU2ltw7Vlcy4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzIwNTMyOiBUZXN0cyB3aGljaCB1c2UgX3Rlc3RjYXBpIG5vdyBhcmUgbWFya2VkIGFzIENQeXRob24gb25seS4KKworLSBJc3N1ZSAjMTk5MjA6IEFkZGVkIHRlc3RzIGZvciBUYXJGaWxlLmxpc3QoKS4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMTk5OTA6IEFkZGVkIHRlc3RzIGZvciB0aGUgaW1naGRyIG1vZHVsZS4gIEJhc2VkIG9uIHBhdGNoIGJ5CisgIENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjA0NzQ6IEZpeCB0ZXN0X3NvY2tldCAidW5leHBlY3RlZCBzdWNjZXNzIiBmYWlsdXJlcyBvbiBPUyBYIDEwLjcrLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjA1MzA6IEFyZ3VtZW50IENsaW5pYydzIHNpZ25hdHVyZSBmb3JtYXQgaGFzIGJlZW4gcmV2aXNlZCBhZ2Fpbi4KKyAgVGhlIG5ldyBzeW50YXggaXMgaGlnaGx5IGh1bWFuIHJlYWRhYmxlIHdoaWxlIHN0aWxsIHByZXZlbnRpbmcgZmFsc2UKKyAgcG9zaXRpdmVzLiAgVGhlIHN5bnRheCBhbHNvIGV4dGVuZHMgUHl0aG9uIHN5bnRheCB0byBkZW5vdGUgInNlbGYiIGFuZAorICBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgYWxsb3dpbmcgaW5zcGVjdC5TaWduYXR1cmUgb2JqZWN0cyB0byBiZQorICB0b3RhbGx5IGFjY3VyYXRlIGZvciBhbGwgc3VwcG9ydGVkIGJ1aWx0aW5zIGluIFB5dGhvbiAzLjQuCisKKy0gSXNzdWUgIzIwNDU2OiBBcmd1bWVudCBDbGluaWMgbm93IG9ic2VydmVzIHRoZSBDIHByZXByb2Nlc3NvciBjb25kaXRpb25hbAorICBjb21waWxhdGlvbiBzdGF0ZW1lbnRzIG9mIHRoZSBDIGZpbGVzIGl0IHBhcnNlcy4gIFdoZW4gYSBDbGluaWMgYmxvY2sgaXMKKyAgaW5zaWRlIGEgY29uZGl0aW9uYWwgY29kZSwgaXQgYWRqdXN0cyBpdHMgb3V0cHV0IHRvIG1hdGNoLCBpbmNsdWRpbmcKKyAgYXV0b21hdGljYWxseSBnZW5lcmF0aW5nIGFuIGVtcHR5IG1ldGhvZGRlZiBtYWNyby4KKworLSBJc3N1ZSAjMjA0NTY6IENsb25lZCBmdW5jdGlvbnMgaW4gQXJndW1lbnQgQ2xpbmljIG5vdyB1c2UgdGhlIGNvcnJlY3QKKyAgbmFtZSwgbm90IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0aGV5IHdlcmUgY2xvbmVkIGZyb20sIGZvciB0ZXh0CisgIHN0cmluZ3MgaW5zaWRlIGdlbmVyYXRlZCBjb2RlLgorCistIElzc3VlICMyMDQ1NjogRml4ZWQgQXJndW1lbnQgQ2xpbmljJ3MgdGVzdCBzdWl0ZSBhbmQgIi0tY29udmVydGVycyIgZmVhdHVyZS4KKworLSBJc3N1ZSAjMjA0NTY6IEFyZ3VtZW50IENsaW5pYyBub3cgYWxsb3dzIHNwZWNpZnlpbmcgZGlmZmVyZW50IG5hbWVzCisgIGZvciBhIHBhcmFtZXRlciBpbiBQeXRob24gYW5kIEMsIHVzaW5nICJhcyIgb24gdGhlIHBhcmFtZXRlciBsaW5lLgorCistIElzc3VlICMyMDMyNjogQXJndW1lbnQgQ2xpbmljIG5vdyB1c2VzIGEgc2ltcGxlLCB1bmlxdWUgc2lnbmF0dXJlIHRvCisgIGFubm90YXRlIHRleHQgc2lnbmF0dXJlcyBpbiBkb2NzdHJpbmdzLCByZXN1bHRpbmcgaW4gZmV3ZXIgZmFsc2UKKyAgcG9zaXRpdmVzLiAgInNlbGYiIHBhcmFtZXRlcnMgYXJlIGFsc28gZXhwbGljaXRseSBtYXJrZWQsIGFsbG93aW5nCisgIGluc3BlY3QuU2lnbmF0dXJlKCkgdG8gYXV0aG9yaXRhdGl2ZWx5IGRldGVjdCAoYW5kIHNraXApIHNhaWQgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMjAzMjY6IEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIHNlcGFyYXRlIGNoZWNrc3VtcyBmb3IgdGhlCisgIGlucHV0IGFuZCBvdXRwdXQgc2VjdGlvbnMgb2YgdGhlIGJsb2NrLCBhbGxvd2luZyBleHRlcm5hbCB0b29scyB0byB2ZXJpZnkKKyAgdGhhdCB0aGUgaW5wdXQgaGFzIG5vdCBjaGFuZ2VkIChhbmQgdGh1cyB0aGUgb3V0cHV0IGlzIG5vdCBvdXQtb2YtZGF0ZSkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyMDQ2NTogVXBkYXRlIFNRTGl0ZSBzaGlwcGVkIHdpdGggT1MgWCBpbnN0YWxsZXIgdG8gMy44LjMuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMyMDUxNzogQWRkZWQgbmV3IGZ1bmN0aW9ucyBhbGxvd2luZyBPU0Vycm9yIGV4Y2VwdGlvbnMgdG8gcmVmZXJlbmNlCisgIHR3byBmaWxlbmFtZXMgaW5zdGVhZCBvZiBvbmU6IFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdHMoKSBhbmQKKyAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3RzKCkuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjA0ODg6IENoYW5nZSB3b3JkaW5nIHRvIHNheSBpbXBvcnRsaWIgaXMgKnRoZSogaW1wbGVtZW50YXRpb24gb2YKKyAgaW1wb3J0IGluc3RlYWQgb2YganVzdCAqYW4qIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICM2Mzg2OiBDbGFyaWZ5IGluIHRoZSB0dXRvcmlhbCB0aGF0IHNwZWNpZnlpbmcgYSBzeW1saW5rIHRvIGV4ZWN1dGUKKyAgbWVhbnMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRlZCBzY3JpcHQgYW5kIG5vdCB0aGUgc3ltbGluayBpcworICBhZGRlZCB0byBzeXMucGF0aC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCBCZXRhIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNC0wMS0yNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjAxODk6IEZvdXIgYWRkaXRpb25hbCBidWlsdGluIHR5cGVzIChQeVR5cGVPYmplY3QsCisgIFB5TWV0aG9kRGVzY3JfVHlwZSwgX1B5TWV0aG9kV3JhcHBlcl9UeXBlLCBhbmQgUHlXcmFwcGVyRGVzY3JfVHlwZSkKKyAgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIHByb3ZpZGUgaW50cm9zcGVjdGlvbiBpbmZvcm1hdGlvbiBmb3IgYnVpbHRpbnMuCisKKy0gSXNzdWUgIzE3ODI1OiBDdXJzb3IgIl4iIGlzIGNvcnJlY3RseSBwb3NpdGlvbmVkIGZvciBTeW50YXhFcnJvciBhbmQKKyAgSW5kZW50YXRpb25FcnJvci4KKworLSBJc3N1ZSAjMjM4MjogU3ludGF4RXJyb3IgY3Vyc29yICJeIiBpcyBub3cgd3JpdHRlbiBhdCBjb3JyZWN0IHBvc2l0aW9uIGluIG1vc3QKKyAgY2FzZXMgd2hlbiBtdWx0aWJ5dGUgY2hhcmFjdGVycyBhcmUgaW4gbGluZSAoYmVmb3JlICJeIikuICBUaGlzIHN0aWxsIG5vdAorICB3b3JrcyBjb3JyZWN0bHkgd2l0aCB3aWRlIEVhc3QgQXNpYW4gY2hhcmFjdGVycy4KKworLSBJc3N1ZSAjMTg5NjA6IFRoZSBmaXJzdCBsaW5lIG9mIFB5dGhvbiBzY3JpcHQgY291bGQgYmUgZXhlY3V0ZWQgdHdpY2Ugd2hlbgorICB0aGUgc291cmNlIGVuY29kaW5nIHdhcyBzcGVjaWZpZWQgb24gdGhlIHNlY29uZCBsaW5lLiAgTm93IHRoZSBzb3VyY2UgZW5jb2RpbmcKKyAgZGVjbGFyYXRpb24gb24gdGhlIHNlY29uZCBsaW5lIGlzbid0IGVmZmVjdGl2ZSBpZiB0aGUgZmlyc3QgbGluZSBjb250YWlucworICBhbnl0aGluZyBleGNlcHQgYSBjb21tZW50LiAgJ3B5dGhvbiAteCcgd29ya3Mgbm93IGFnYWluIHdpdGggZmlsZXMgd2l0aCB0aGUKKyAgc291cmNlIGVuY29kaW5nIGRlY2xhcmF0aW9ucywgYW5kIGNhbiBiZSB1c2VkIHRvIG1ha2UgUHl0aG9uIGJhdGNoIGZpbGVzCisgIG9uIFdpbmRvd3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBhc3luY2lvOiBWYXJpb3VzIGltcHJvdmVtZW50cyBhbmQgc21hbGwgY2hhbmdlcyBub3QgYWxsIGNvdmVyZWQgYnkKKyAgaXNzdWVzIGxpc3RlZCBiZWxvdy4gIEUuZy4gd2FpdF9mb3IoKSBub3cgY2FuY2VscyB0aGUgaW5uZXIgdGFzayBpZgorICB0aGUgdGltZW91dCBvY2NjdXJzOyB0d2Vha2VkIHRoZSBzZXQgb2YgZXhwb3J0ZWQgc3ltYm9sczsgcmVuYW1lZAorICBFbXB0eS9GdWxsIHRvIFF1ZXVlRW1wdHkvUXVldWVGdWxsOyAid2l0aCAoeWllbGQgZnJvbSBsb2NrKSIgbm93CisgIHVzZXMgYSBzZXBhcmF0ZSBjb250ZXh0IG1hbmFnZXI7IHJlYWRleGFjdGx5KCkgcmFpc2VzIGlmIG5vdCBlbm91Z2gKKyAgZGF0YSB3YXMgcmVhZDsgUFRZIHN1cHBvcnQgdHdlYWtzLgorCistIElzc3VlICMyMDMxMTogYXN5bmNpbzogQWRkIGEgZ3JhbnVsYXJpdHkgYXR0cmlidXRlIHRvIEJhc2VFdmVudExvb3A6IG1heGltdW0KKyAgYmV0d2VlbiB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgQmFzZUV2ZW50TG9vcC50aW1lKCkgbWV0aG9kIGFuZCB0aGUgcmVzb2x1dGlvbgorICBvZiB0aGUgc2VsZWN0b3IuIFRoZSBncmFudWFyaWxpdHkgaXMgdXNlZCBpbiB0aGUgc2NoZWR1bGVyIHRvIHJvdW5kIHRpbWUgYW5kCisgIGRlYWRsaW5lLgorCistIElzc3VlICMyMDMxMTogc2VsZWN0b3JzOiBBZGQgYSByZXNvbHV0aW9uIGF0dHJpYnV0ZSB0byBCYXNlU2VsZWN0b3IuCisKKy0gSXNzdWUgIzIwMTg5OiB1bml0dGVzdC5tb2NrIG5vdyBubyBsb25nZXIgYXNzdW1lcyB0aGF0IGFueSBvYmplY3QgZm9yCisgIHdoaWNoIGl0IGNvdWxkIGdldCBhbiBpbnNwZWN0LlNpZ25hdHVyZSBpcyBhIGNhbGxhYmxlIHdyaXR0ZW4gaW4gUHl0aG9uLgorICBGaXggY291cnRlc3kgb2YgTWljaGFlbCBGb29yZC4KKworLSBJc3N1ZSAjMjAzMTc6IEV4aXRTdGFjay5fX2V4aXRfXyBjb3VsZCBjcmVhdGUgYSBzZWxmLXJlZmVyZW50aWFsIGxvb3AgaWYgYW4KKyAgZXhjZXB0aW9uIHJhaXNlZCBieSBhIGNsZWFudXAgb3BlcmF0aW9uIGFscmVhZHkgaGFkIGl0cyBjb250ZXh0IHNldAorICBjb3JyZWN0bHkgKGZvciBleGFtcGxlLCBieSB0aGUgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvcikuIFRoZSBpbmZpbml0ZQorICBsb29wIHRoaXMgY2F1c2VkIGlzIG5vdyBhdm9pZGVkIGJ5IGNoZWNraW5nIGlmIHRoZSBleHBlY3RlZCBjb250ZXh0IGlzCisgIGFscmVhZHkgc2V0IGJlZm9yZSB0cnlpbmcgdG8gZml4IGl0LgorCistIElzc3VlICMyMDM3NDogRml4IGJ1aWxkIHdpdGggR05VIHJlYWRsaW5lID49IDYuMy4KKworLSBJc3N1ZSAjMjAyNjI6IFdhcm5pbmdzIGFyZSByYWlzZWQgbm93IHdoZW4gZHVwbGljYXRlIG5hbWVzIGFyZSBhZGRlZCBpbiB0aGUKKyAgWklQIGZpbGUgb3IgdG9vIGxvbmcgWklQIGZpbGUgY29tbWVudCBpcyB0cnVuY2F0ZWQuCisKKy0gSXNzdWUgIzIwMTY1OiBUaGUgdW5pdHRlc3QgbW9kdWxlIG5vIGxvbmdlciBjb25zaWRlcnMgdGVzdHMgbWFya2VkIHdpdGgKKyAgQGV4cGVjdGVkRmFpbHVyZSBzdWNjZXNzZnVsIGlmIHRoZXkgcGFzcy4KKworLSBJc3N1ZSAjMTg1NzQ6IEFkZGVkIG1pc3NpbmcgbmV3bGluZSBpbiAxMDAtQ29udGludWUgcmVwbHkgZnJvbQorICBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLiBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMyMDI3MDogdXJsbGliLnVybHBhcnNlIG5vdyBzdXBwb3J0cyBlbXB0eSBwb3J0cy4KKworLSBJc3N1ZSAjMjAyNDM6IFRhckZpbGUgbm8gbG9uZ2VyIHJhaXNlIFJlYWRFcnJvciB3aGVuIG9wZW5lZCBpbiB3cml0ZSBtb2RlLgorCistIElzc3VlICMyMDIzODogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAidzpneiIgbW9kZSBkaWRuJ3QKKyAgd3JpdGUgY29tcGxldGUgb3V0cHV0IG9uIGNsb3NlLgorCistIElzc3VlICMyMDI0NTogVGhlIG9wZW4gZnVuY3Rpb25zIGluIHRoZSB0YXJmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5IGhhbmRsZQorICBlbXB0eSBtb2RlLgorCistIElzc3VlICMyMDI0MjogRml4ZWQgYmFzaWNDb25maWcoKSBmb3JtYXQgc3RyaW5ncyBmb3IgdGhlIGFsdGVybmF0aXZlCisgIGZvcm1hdHRpbmcgc3R5bGVzLiBUaGFua3MgdG8ga2VzcGluZGxlciBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIHBhdGNoLgorCistIElzc3VlICMyMDI0NjogRml4IGJ1ZmZlciBvdmVyZmxvdyBpbiBzb2NrZXQucmVjdmZyb21faW50by4KKworLSBJc3N1ZXMgIzIwMjA2IGFuZCAjNTgwMzogRml4IGVkZ2UgY2FzZSBpbiBlbWFpbC5xdW9wcmltaW1lLmVuY29kZSB3aGVyZSBpdAorICB0cnVuY2F0ZWQgbGluZXMgZW5kaW5nIGluIGEgY2hhcmFjdGVyIG5lZWRpbmcgZW5jb2RpbmcgYnV0IG5vIG5ld2xpbmUgYnkKKyAgdXNpbmcgYSBtb3JlIGVmZmljaWVudCBhbGdvcml0aG0gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIGJ1Zy4KKworLSBJc3N1ZSAjMTkwODI6IFdvcmtpbmcgeG1scnBjLnNlcnZlciBhbmQgeG1scnBjLmNsaWVudCBleGFtcGxlcy4gQm90aCBpbgorICBtb2R1bGVzIGFuZCBpbiBkb2N1bWVudGF0aW9uLiBJbml0aWFsIHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjAxMzg6IFRoZSB3c2dpcmVmLmFwcGxpY2F0aW9uX3VyaSgpIGFuZCB3c2dpcmVmLnJlcXVlc3RfdXJpKCkKKyAgZnVuY3Rpb25zIG5vdyBjb25mb3JtIHRvIFBFUCAzMzMzIHdoZW4gaGFuZGxlIG5vbi1BU0NJSSBVUkxzLgorCistIElzc3VlICMxOTA5NzogUmFpc2UgdGhlIGNvcnJlY3QgRXhjZXB0aW9uIHdoZW4gY2dpLkZpZWxkU3RvcmFnZSBpcyBnaXZlbiBhbgorICBpbnZhbGlkIGZpbGVvYmouCisKKy0gSXNzdWUgIzIwMTUyOiBQb3J0ZWQgUHl0aG9uL2ltcG9ydC5jIG92ZXIgdG8gQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMxMzEwNzogYXJncGFyc2UgYW5kIG9wdHBhcnNlIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gb3V0cHV0CisgIGEgaGVscCBvbiBlbnZpcm9ubWVudCB3aXRoIHRvbyBzbWFsbCBDT0xVTU5TLiAgQmFzZWQgb24gcGF0Y2ggYnkKKyAgRWxhemFyIEdlcnNodW5pLgorCistIElzc3VlICMyMDIwNzogQWx3YXlzIGRpc2FibGUgU1NMdjIgZXhjZXB0IHdoZW4gUFJPVE9DT0xfU1NMdjIgaXMgZXhwbGljaXRseQorICBhc2tlZCBmb3IuCisKKy0gSXNzdWUgIzE4OTYwOiBUaGUgdG9rZW5pemUgbW9kdWxlIG5vdyBpZ25vcmUgdGhlIHNvdXJjZSBlbmNvZGluZyBkZWNsYXJhdGlvbgorICBvbiB0aGUgc2Vjb25kIGxpbmUgaWYgdGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcgZXhjZXB0IGEgY29tbWVudC4KKworLSBJc3N1ZSAjMjAwNzg6IFJlYWRpbmcgbWFsZm9ybWVkIHppcGZpbGVzIG5vIGxvbmdlciBoYW5ncyB3aXRoIDEwMCUgQ1BVCisgIGNvbnN1bXB0aW9uLgorCistIElzc3VlICMyMDExMzogb3MucmVhZHYoKSBhbmQgb3Mud3JpdGV2KCkgbm93IHJhaXNlIGFuIE9TRXJyb3IgZXhjZXB0aW9uIG9uCisgIGVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIC0xLgorCistIElzc3VlICMxOTcxOTogTWFrZSBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfbW9kdWxlKCksCisgIFBhdGhFbnRyeUZpbmRlci5maW5kX2xvYWRlcigpLCBhbmQgTG9hZGVyLmxvYWRfbW9kdWxlKCkgdXNlIFBFUCA0NTEgQVBJcyB0bworICBoZWxwIHdpdGggYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuCisKKy0gSXNzdWUgIzIwMTQ0OiBpbnNwZWN0LlNpZ25hdHVyZSBub3cgc3VwcG9ydHMgcGFyc2luZyBzaW1wbGUgc3ltYm9saWMKKyAgY29uc3RhbnRzIGFzIHBhcmFtZXRlciBkZWZhdWx0IHZhbHVlcyBpbiBfX3RleHRfc2lnbmF0dXJlX18uCisKKy0gSXNzdWUgIzIwMDcyOiBGaXhlZCBtdWx0aXBsZSBlcnJvcnMgaW4gdGtpbnRlciB3aXRoIHdhbnRvYmplY3RzIGlzIEZhbHNlLgorCistIElzc3VlICMyMDIyOTogQXZvaWQgcGxpc3RsaWIgZGVwcmVjYXRpb24gd2FybmluZyBpbiBwbGF0Zm9ybS5tYWNfdmVyKCkuCisKKy0gSXNzdWUgIzE0NDU1OiBGaXggc29tZSBwcm9ibGVtcyB3aXRoIHRoZSBuZXcgYmluYXJ5IHBsaXN0IHN1cHBvcnQgaW4gcGxpc3RsaWIuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTczOTA6IEFkZCBQeXRob24gdmVyc2lvbiB0byBJZGxlIGVkaXRvciB3aW5kb3cgdGl0bGUgYmFyLgorICBPcmlnaW5hbCBwYXRjaGVzIGJ5IEVkbW9uZCBCdXJuZXR0IGFuZCBLZW50IEpvaG5zb24uCisKKy0gSXNzdWUgIzE4OTYwOiBJRExFIG5vdyBpZ25vcmVzIHRoZSBzb3VyY2UgZW5jb2RpbmcgZGVjbGFyYXRpb24gb24gdGhlIHNlY29uZAorICBsaW5lIGlmIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIGFueXRoaW5nIGV4Y2VwdCBhIGNvbW1lbnQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyMDM1ODogVGVzdHMgZm9yIGN1cnNlcy53aW5kb3cub3ZlcmxheSBhbmQgY3Vyc2VzLndpbmRvdy5vdmVyd3JpdGUKKyAgbm8gbG9uZ2VyIHNwZWNpZnkgbWlue3Jvdyxjb2x9ID4gbWF4e3Jvdyxjb2x9LgorCistIElzc3VlICMxOTgwNDogVGhlIHRlc3RfZmluZF9tYWMgdGVzdCBpbiB0ZXN0X3V1aWQgaXMgbm93IHNraXBwZWQgaWYgdGhlCisgIGlmY29uZmlnIGV4ZWN1dGFibGUgaXMgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTk4ODY6IFVzZSBiZXR0ZXIgZXN0aW1hdGVkIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGJpZ21lbSB0ZXN0cy4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIwMzkwOiBBcmd1bWVudCBDbGluaWMncyAiZmlsZSIgb3V0cHV0IHByZXNldCBub3cgZGVmYXVsdHMgdG8KKyAgIntkaXJuYW1lfS9jbGluaWMve2Jhc2VuYW1lfS5oIi4KKworLSBJc3N1ZSAjMjAzOTA6IEFyZ3VtZW50IENsaW5pYydzICJjbGFzcyIgZGlyZWN0aXZlIHN5bnRheCBoYXMgYmVlbiBleHRlbmRlZAorICB3aXRoIHR3byBuZXcgcmVxdWlyZWQgYXJndW1lbnRzOiAidHlwZWRlZiIgYW5kICJ0eXBlX29iamVjdCIuCisKKy0gSXNzdWUgIzIwMzkwOiBBcmd1bWVudCBDbGluaWM6IElmIF9fbmV3X18gb3IgX19pbml0X18gZnVuY3Rpb25zIGRpZG4ndCB1c2UKKyAga3dhcmdzIChvciBhcmdzKSwgdGhlIFB5QXJnX05vS2V5d29yZHMgKG9yIFB5QXJnX05vUG9zaXRpb25hbCkgY2FsbHMKKyAgZ2VuZXJhdGVkIGFyZSBvbmx5IHJ1biB3aGVuIHRoZSB0eXBlIG9iamVjdCBpcyBhbiBleGFjdCBtYXRjaC4KKworLSBJc3N1ZSAjMjAzOTA6IEFyZ3VtZW50IENsaW5pYyBub3cgZmFpbHMgaWYgeW91IGhhdmUgcmVxdWlyZWQgcGFyYW1ldGVycyBhZnRlcgorICBvcHRpb25hbCBwYXJhbWV0ZXJzLgorCistIElzc3VlICMyMDM5MDogQXJndW1lbnQgQ2xpbmljIGNvbnZlcnRlcnMgbm93IGhhdmUgYSBuZXcgdGVtcGxhdGUgdGhleSBjYW4KKyAgaW5qZWN0IGNvZGUgaW50bzogIm1vZGlmaWVycyIuICBDb2RlIHB1dCB0aGVyZSBpcyBydW4gaW4gdGhlIHBhcnNpbmcKKyAgZnVuY3Rpb24gYWZ0ZXIgYXJndW1lbnQgcGFyc2luZyBidXQgYmVmb3JlIHRoZSBjYWxsIHRvIHRoZSBpbXBsLgorCistIElzc3VlICMyMDM3NjogQXJndW1lbnQgQ2xpbmljIG5vdyBlc2NhcGVzIGJhY2tzbGFzaGVzIGluIGRvY3N0cmluZ3MuCisKKy0gSXNzdWUgIzIwMzgxOiBBcmd1bWVudCBDbGluaWMgbm93IHNhbml0eSBjaGVja3MgdGhlIGRlZmF1bHQgYXJndW1lbnQgd2hlbgorICBjX2RlZmF1bHQgaXMgYWxzbyBzcGVjaWZpZWQsIHByb3ZpZGluZyBhIG5pY2UgZmFpbHVyZSBtZXNzYWdlIGZvcgorICBkaXNhbGxvd2VkIHZhbHVlcy4KKworLSBJc3N1ZSAjMjAxODk6IEFyZ3VtZW50IENsaW5pYyBub3cgZW5zdXJlcyB0aGF0IHBhcnNlciBmdW5jdGlvbnMgZm9yCisgIF9fbmV3X18gYXJlIGFsd2F5cyBvZiB0eXBlIG5ld2Z1bmMsIHRoZSB0eXBlIG9mIHRoZSB0cF9uZXcgc2xvdC4KKyAgU2ltaWxhcmx5LCBwYXJzZXIgZnVuY3Rpb25zIGZvciBfX2luaXRfXyBhcmUgbm93IGFsd2F5cyBvZiB0eXBlIGluaXRwcm9jLAorICB0aGUgdHlwZSBvZiB0cF9pbml0LgorCistIElzc3VlICMyMDE4OTogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwcmVzc2VzIHRoZSBkb2NzdHJpbmcgZm9yIF9fbmV3X18KKyAgYW5kIF9faW5pdF9fIGZ1bmN0aW9ucyBpZiBubyBkb2NzdHJpbmcgaXMgcHJvdmlkZWQgaW4gdGhlIGlucHV0LgorCistIElzc3VlICMyMDE4OTogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwcmVzc2VzIHRoZSAic2VsZiIgcGFyYW1ldGVyIGluIHRoZQorICBpbXBsIGZvciBAc3RhdGljbWV0aG9kIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjAyOTQ6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgYXJndW1lbnQgcGFyc2luZyBmb3IgX19uZXdfXyBhbmQKKyAgX19pbml0X18gZnVuY3Rpb25zLgorCistIElzc3VlICMyMDI5OTogQXJndW1lbnQgQ2xpbmljIGN1c3RvbSBjb252ZXJ0ZXJzIG1heSBub3cgY2hhbmdlIHRoZSBkZWZhdWx0CisgIHZhbHVlIG9mIGNfZGVmYXVsdCBhbmQgcHlfZGVmYXVsdCB3aXRoIGEgY2xhc3MgbWVtYmVyLgorCistIElzc3VlICMyMDI4NzogQXJndW1lbnQgQ2xpbmljJ3Mgb3V0cHV0IGlzIG5vdyBjb25maWd1cmFibGUsIGFsbG93aW5nCisgIGRlbGF5aW5nIGl0cyBvdXRwdXQgb3IgZXZlbiByZWRpcmVjdGluZyBpdCB0byBhIHNlcGFyYXRlIGZpbGUuCisKKy0gSXNzdWUgIzIwMjI2OiBBcmd1bWVudCBDbGluaWMgbm93IHBlcm1pdHMgc2ltcGxlIGV4cHJlc3Npb25zCisgIChlLmcuICJzeXMubWF4c2l6ZSAtIDEiKSBhcyBkZWZhdWx0IHZhbHVlcyBmb3IgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMTk5MzY6IEFkZGVkIGV4ZWN1dGFibGUgYml0cyBvciBzaGViYW5nIGxpbmVzIHRvIFB5dGhvbiBzY3JpcHRzIHdoaWNoCisgIHJlcXVpcmVzIHRoZW0uICBEaXNhYmxlIGV4ZWN1dGFibGUgYml0cyBhbmQgc2hlYmFuZyBsaW5lcyBpbiB0ZXN0IGFuZAorICBiZW5jaG1hcmsgZmlsZXMgaW4gb3JkZXIgdG8gcHJldmVudCB1c2luZyBhIHJhbmRvbSBzeXN0ZW0gcHl0aG9uLCBhbmQgaW4KKyAgc291cmNlIGZpbGVzIG9mIG1vZHVsZXMgd2hpY2ggZG9uJ3QgcHJvdmlkZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiAgRml4ZWQKKyAgc2hlYmFuZyBsaW5lcyBpbiB0aGUgdW5pdHRlc3RndWkgYW5kIGNoZWNrcGlwIHNjcmlwdHMuCisKKy0gSXNzdWUgIzIwMjY4OiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHBvcnRzIGNsb25pbmcgdGhlIHBhcmFtZXRlcnMgYW5kCisgIHJldHVybiBjb252ZXJ0ZXIgb2YgZXhpc3RpbmcgZnVuY3Rpb25zLgorCistIElzc3VlICMyMDIyODogQXJndW1lbnQgQ2xpbmljIG5vdyBoYXMgc3BlY2lhbCBzdXBwb3J0IGZvciBjbGFzcyBzcGVjaWFsCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwMjE0OiBGaXhlZCBhIG51bWJlciBvZiBzbWFsbCBpc3N1ZXMgYW5kIGRvY3VtZW50YXRpb24gZXJyb3JzIGluCisgIEFyZ3VtZW50IENsaW5pYyAoc2VlIGlzc3VlIGZvciBkZXRhaWxzKS4KKworLSBJc3N1ZSAjMjAxOTY6IEZpeGVkIGEgYnVnIHdoZXJlIEFyZ3VtZW50IENsaW5pYyBkaWQgbm90IGdlbmVyYXRlIGNvcnJlY3QKKyAgcGFyc2luZyBjb2RlIGZvciBmdW5jdGlvbnMgd2l0aCBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyB3aGVyZSBhbGwgYXJndW1lbnRzCisgIGFyZSBvcHRpb25hbC4KKworLSBJc3N1ZSAjMTg5NjA6IDJ0bzMgYW5kIHRoZSBmaW5kbm9jb2RpbmcucHkgc2NyaXB0IG5vdyBpZ25vcmUgdGhlIHNvdXJjZQorICBlbmNvZGluZyBkZWNsYXJhdGlvbiBvbiB0aGUgc2Vjb25kIGxpbmUgaWYgdGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcKKyAgZXhjZXB0IGEgY29tbWVudC4KKworLSBJc3N1ZSAjMTk3MjM6IFRoZSBtYXJrZXIgY29tbWVudHMgQXJndW1lbnQgQ2xpbmljIHVzZXMgaGF2ZSBiZWVuIGNoYW5nZWQKKyAgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KKworLSBJc3N1ZSAjMjAxNTc6IFdoZW4gQXJndW1lbnQgQ2xpbmljIHJlbmFtZXMgYSBwYXJhbWV0ZXIgYmVjYXVzZSBpdHMgbmFtZQorICBjb2xsaWRlcyB3aXRoIGEgQyBrZXl3b3JkLCBpdCBubyBsb25nZXIgZXhwb3NlcyB0aGF0IHJlbmFtZSB0byBQeUFyZ19QYXJzZS4KKworLSBJc3N1ZSAjMjAxNDE6IEltcHJvdmVkIEFyZ3VtZW50IENsaW5pYydzIHN1cHBvcnQgZm9yIHRoZSBQeUFyZ19QYXJzZSAiTyEiCisgIGZvcm1hdCB1bml0LgorCistIElzc3VlICMyMDE0NDogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBzaW1wbGUgc3ltYm9saWMgY29uc3RhbnRzCisgIGFzIHBhcmFtZXRlciBkZWZhdWx0IHZhbHVlcy4KKworLSBJc3N1ZSAjMjAxNDM6IFRoZSBsaW5lIG51bWJlcnMgcmVwb3J0ZWQgaW4gQXJndW1lbnQgQ2xpbmljIGVycm9ycyBhcmUKKyAgbm93IG1vcmUgYWNjdXJhdGUuCisKKy0gSXNzdWUgIzIwMTQyOiBQeV9idWZmZXIgdmFyaWFibGVzIGdlbmVyYXRlZCBieSBBcmd1bWVudCBDbGluaWMgYXJlIG5vdworICBpbml0aWFsaXplZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEyODM3OiBTaWxlbmNlIGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlzb24gd2FybmluZyBvbiBPUyBYIHVuZGVyIENsYW5nIGluCisgIHNvY2tldG1vZHVsZS5jLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEJldGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE0LTAxLTA1CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNzQzMjogRHJvcCBVQ1MyIGZyb20gbmFtZXMgb2YgVW5pY29kZSBmdW5jdGlvbnMgaW4gcHl0aG9uMy5kZWYuCisKKy0gSXNzdWUgIzE5NTI2OiBFeGNsdWRlIGFsbCBuZXcgQVBJIGZyb20gdGhlIHN0YWJsZSBBQkkuIEV4Y2VwdGlvbnMgY2FuIGJlCisgIG1hZGUgaWYgYSBuZWVkIGlzIGRlbW9uc3RyYXRlZC4KKworLSBJc3N1ZSAjMTk5Njk6IFB5Qnl0ZXNfRnJvbUZvcm1hdFYoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IgaWYgIiVjIgorICBhcmd1bWVudCBpcyBub3QgaW4gcmFuZ2UgWzA7IDI1NV0uCisKKy0gSXNzdWUgIzE5OTk1OiAlYywgJW8sICV4LCBhbmQgJVggbm93IGlzc3VlIGEgRGVwcmVjYXRpb25XYXJuaW5nIG9uIG5vbi1pbnRlZ2VyCisgIGlucHV0OyByZXdvcmRlZCBkb2NzIHRvIGNsYXJpZnkgdGhhdCBhbiBpbnRlZ2VyIHR5cGUgc2hvdWxkIGRlZmluZSBib3RoIF9faW50X18KKyAgYW5kIF9faW5kZXhfXy4KKworLSBJc3N1ZSAjMTk3ODc6IFB5VGhyZWFkX3NldF9rZXlfdmFsdWUoKSBub3cgYWx3YXlzIHNldCB0aGUgdmFsdWUuIEluIFB5dGhvbgorICAzLjMsIHRoZSBmdW5jdGlvbiBkaWQgbm90aGluZyBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzIChpZiB0aGUgY3VycmVudCB2YWx1ZQorICBpcyBhIG5vbi1OVUxMIHBvaW50ZXIpLgorCistIElzc3VlICMxNDQzMjogUmVtb3ZlIHRoZSB0aHJlYWQgc3RhdGUgZmllbGQgZnJvbSB0aGUgZnJhbWUgc3RydWN0dXJlLiBGaXggYQorICBjcmFzaCB3aGVuIGEgZ2VuZXJhdG9yIGlzIGNyZWF0ZWQgaW4gYSBDIHRocmVhZCB0aGF0IGlzIGRlc3Ryb3llZCB3aGlsZSB0aGUKKyAgZ2VuZXJhdG9yIGlzIHN0aWxsIHVzZWQuIFRoZSBpc3N1ZSB3YXMgdGhhdCBhIGdlbmVyYXRvciBjb250YWlucyBhIGZyYW1lLCBhbmQKKyAgdGhlIGZyYW1lIGtlcHQgYSByZWZlcmVuY2UgdG8gdGhlIFB5dGhvbiBzdGF0ZSBvZiB0aGUgZGVzdHJveWVkIEMgdGhyZWFkLiBUaGUKKyAgY3Jhc2ggb2NjdXJzIHdoZW4gYSB0cmFjZSBmdW5jdGlvbiBpcyBzZXR1cC4KKworLSBJc3N1ZSAjMTk1NzY6IFB5R0lMU3RhdGVfRW5zdXJlKCkgbm93IGluaXRpYWxpemVzIHRocmVhZHMuIEF0IHN0YXJ0dXAsIFB5dGhvbgorICBoYXMgbm8gY29uY3JldGUgR0lMLiBJZiBQeUdJTFN0YXRlX0Vuc3VyZSgpIGlzIGNhbGxlZCBmcm9tIGEgbmV3IHRocmVhZCBmb3IKKyAgdGhlIGZpcnN0IHRpbWUgYW5kIFB5RXZhbF9Jbml0VGhyZWFkcygpIHdhcyBub3QgY2FsbGVkIHlldCwgYSBHSUwgbmVlZHMgdG8gYmUKKyAgY3JlYXRlZC4KKworLSBJc3N1ZSAjMTc1NzY6IERlcHJlY2F0aW9uIHdhcm5pbmcgZW1pdHRlZCBub3cgd2hlbiBfX2ludF9fKCkgb3IgX19pbmRleF9fKCkKKyAgcmV0dXJuIG5vdCBpbnQgaW5zdGFuY2UuCisKKy0gSXNzdWUgIzE5OTMyOiBGaXggdHlwbyBpbiBpbXBvcnQuaCwgbWlzc2luZyB3aGl0ZXNwYWNlcyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgorCistIElzc3VlICMxOTczNjogQWRkIG1vZHVsZS1sZXZlbCBzdGF0dmZzIGNvbnN0YW50cyBkZWZpbmVkIGZvciBHTlUvZ2xpYmMKKyAgYmFzZWQgc3lzdGVtcy4KKworLSBJc3N1ZSAjMjAwOTc6IEZpeCBiYWQgdXNlIG9mICJzZWxmIiBpbiBpbXBvcnRsaWIncyBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuCisKKy0gSXNzdWUgIzE5NzI5OiBJbiBzdHIuZm9ybWF0KCksIGZpeCByZWN1cnNpdmUgZXhwYW5zaW9uIGluIGZvcm1hdCBzcGVjLgorCistIElzc3VlICMxOTYzODogRml4IHBvc3NpYmxlIGNyYXNoIC8gdW5kZWZpbmVkIGJlaGF2aW91ciBmcm9tIGh1Z2UgKG1vcmUgdGhhbiAyCisgIGJpbGxpb24gY2hhcmFjdGVycykgaW5wdXQgc3RyaW5ncyBpbiBfUHlfZGdfc3RydG9kLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIwMTU0OiBEZWFkbG9jayBpbiBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseSgpLgorCistIElzc3VlICMxNjExMzogUmVtb3ZlIHNoYTMgbW9kdWxlIGFnYWluLgorCistIElzc3VlICMyMDExMTogcGF0aGxpYi5QYXRoLndpdGhfc3VmZml4KCkgbm93IHNhbml0eSBjaGVja3MgdGhlIGdpdmVuIHN1ZmZpeC4KKworLSBGaXggYnJlYWthZ2UgaW4gVGVzdFN1aXRlLmNvdW50VGVzdENhc2VzKCkgaW50cm9kdWNlZCBieSBpc3N1ZSAjMTE3OTguCisKKy0gSXNzdWUgIzIwMTA4OiBBdm9pZCBwYXJhbWV0ZXIgbmFtZSBjbGFzaCBpbiBpbnNwZWN0LmdldGNhbGxhcmdzKCkuCisKKy0gSXNzdWUgIzE5OTE4OiBGaXggUHVyZVBhdGgucmVsYXRpdmVfdG8oKSB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxOTQyMjogRXhwbGljaXRseSBkaXNhbGxvdyBub24tU09DS19TVFJFQU0gc29ja2V0cyBpbiB0aGUgc3NsCisgIG1vZHVsZSwgcmF0aGVyIHRoYW4gc2lsZW50bHkgbGV0IHRoZW0gZW1pdCBjbGVhciB0ZXh0IGRhdGEuCisKKy0gSXNzdWUgIzIwMDQ2OiBMb2NhbGUgYWxpYXMgdGFibGUgbm8gbG9uZ2VyIGNvbnRhaW5zIGVudGl0aWVzIHdoaWNoIGNhbiBiZQorICBjYWxjdWxhdGVkLiAgR2VuZXJhbGl6ZWQgc3VwcG9ydCBvZiB0aGUgZXVybyBtb2RpZmllci4KKworLSBJc3N1ZSAjMjAwMjc6IEZpeGVkIGxvY2FsZSBhbGlhc2VzIGZvciBkZXZhbmFnYXJpIGxvY2FsZXMuCisKKy0gSXNzdWUgIzIwMDY3OiBUa2ludGVyIHZhcmlhYmxlcyBub3cgd29yayB3aGVuIHdhbnRvYmplY3RzIGlzIGZhbHNlLgorCistIElzc3VlICMxOTAyMDogVGtpbnRlciBub3cgdXNlcyBzcGxpdGxpc3QoKSBpbnN0ZWFkIG9mIHNwbGl0KCkgaW4gY29uZmlndXJlCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzE5NzQ0OiBlbnN1cmVwaXAgbm93IHByb3ZpZGVzIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBQeXRob24gaXMKKyAgYnVpbHQgd2l0aG91dCBTU0wvVExTIHN1cHBvcnQgKHBpcCBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCBzdXBwb3J0IHRvIHJ1biwKKyAgZXZlbiBpZiBvbmx5IG9wZXJhdGluZyB3aXRoIGxvY2FsIHdoZWVsIGZpbGVzKQorCistIElzc3VlICMxOTczNDogZW5zdXJlcGlwIG5vdyBpZ25vcmVzIGFsbCBwaXAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGF2b2lkCisgIG9kZCBiZWhhdmlvdXIgYmFzZWQgb24gdXNlciBjb25maWd1cmF0aW9uIHNldHRpbmdzCisKKy0gRml4IFR5cGVFcnJvciBvbiAic2V0dXAucHkgdXBsb2FkIC0tc2hvdy1yZXNwb25zZSIuCisKKy0gSXNzdWUgIzIwMDQ1OiBGaXggInNldHVwLnB5IHJlZ2lzdGVyIC0tbGlzdC1jbGFzc2lmaWVycyIuCisKKy0gSXNzdWUgIzE4ODc5OiBXaGVuIGEgbWV0aG9kIGlzIGxvb2tlZCB1cCBvbiBhIHRlbXBvcmFyeSBmaWxlLCBhdm9pZCBjbG9zaW5nCisgIHRoZSBmaWxlIGJlZm9yZSB0aGUgbWV0aG9kIGlzIHBvc3NpYmx5IGNhbGxlZC4KKworLSBJc3N1ZSAjMjAwMzc6IEF2b2lkIGNyYXNoZXMgd2hlbiBvcGVuaW5nIGEgdGV4dCBmaWxlIGxhdGUgYXQgaW50ZXJwcmV0ZXIKKyAgc2h1dGRvd24uCisKKy0gSXNzdWUgIzE5OTY3OiBUaGFua3MgdG8gdGhlIFBFUCA0NDIsIGFzeW5jaW8uRnV0dXJlIG5vdyB1c2VzIGEKKyAgZGVzdHJ1Y3RvciB0byBsb2cgdW5jYXVnaHQgZXhjZXB0aW9ucywgaW5zdGVhZCBvZiB0aGUgZGVkaWNhdGVkCisgIF9UcmFjZWJhY2tMb2dnZXIgY2xhc3MuCisKKy0gQWRkZWQgYSBUYXNrLmN1cnJlbnRfdGFzaygpIGNsYXNzIG1ldGhvZCB0byBhc3luY2lvLgorCistIElzc3VlICMxOTg1MDogU2V0IFNBX1JFU1RBUlQgaW4gYXN5bmNpbyB3aGVuIHJlZ2lzdGVyaW5nIGEgc2lnbmFsCisgIGhhbmRsZXIgdG8gbGltaXQgRUlOVFIgb2NjdXJyZW5jZXMuCisKKy0gSW1wbGVtZW50ZWQgd3JpdGUgZmxvdyBjb250cm9sIGluIGFzeW5jaW8gZm9yIHByb2FjdG9yIGV2ZW50IGxvb3AgKFdpbmRvd3MpLgorCistIENoYW5nZSB3cml0ZSBidWZmZXIgaW4gYXN5bmNpbyB1c2UgdG8gYXZvaWQgTyhOKioyKSBiZWhhdmlvci4gIE1ha2UKKyAgd3JpdGUoKS9zZW5kdG8oKSBhY2NlcHQgYnl0ZWFycmF5L21lbW9yeXZpZXcuCisKKy0gSXNzdWUgIzIwMDM0OiBVcGRhdGVkIGFsaWFzIG1hcHBpbmcgdG8gbW9zdCByZWNlbnQgbG9jYWxlLmFsaWFzIGZpbGUKKyAgZnJvbSBYLm9yZyBkaXN0cmlidXRpb24gdXNpbmcgbWFrZWxvY2FsZWFsaWFzLnB5LgorCistIElzc3VlICM1ODE1OiBGaXhlZCBzdXBwb3J0IGZvciBsb2NhbGVzIHdpdGggbW9kaWZpZXJzLiAgRml4ZWQgc3VwcG9ydCBmb3IKKyAgbG9jYWxlIGVuY29kaW5ncyB3aXRoIGh5cGhlbnMuCisKKy0gSXNzdWUgIzIwMDI2OiBGaXggdGhlIHNxbGl0ZSBtb2R1bGUgdG8gaGFuZGxlIGNvcnJlY3RseSBpbnZhbGlkIGlzb2xhdGlvbgorICBsZXZlbCAod3JvbmcgdHlwZSkuCisKKy0gSXNzdWUgIzE4ODI5OiBjc3YuRGlhbGVjdCgpIG5vdyBjaGVja3MgdHlwZSBmb3IgZGVsaW1pdGVyLCBlc2NhcGVjaGFyIGFuZAorICBxdW90ZWNoYXIgZmllbGRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMxOTg1NTogdXVpZC5nZXRub2RlKCkgb24gVW5peCBub3cgbG9va3Mgb24gdGhlIFBBVEggZm9yIHRoZQorICBleGVjdXRhYmxlcyB1c2VkIHRvIGZpbmQgdGhlIG1hYyBhZGRyZXNzLCB3aXRoIC9zYmluIGFuZCAvdXNyL3NiaW4gYXMKKyAgZmFsbGJhY2tzLgorCistIElzc3VlICMyMDAwNzogSFRUUFJlc3BvbnNlLnJlYWQoMCkgbm8gbW9yZSBwcmVtYXR1cmVseSBjbG9zZXMgY29ubmVjdGlvbi4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgU2ltb24gU2FwaW4uCisKKy0gSXNzdWUgIzE5OTQ2OiBtdWx0aXByb2Nlc3Npbmcgbm93IHVzZXMgcnVucHkgdG8gaW5pdGlhbGl6ZSBfX21haW5fXyBpbgorICBjaGlsZCBwcm9jZXNzZXMgd2hlbiBuZWNlc3NhcnksIGFsbG93aW5nIGl0IHRvIGNvcnJlY3RseSBoYW5kbGUgc2NyaXB0cworICB3aXRob3V0IHN1ZmZpeGVzIGFuZCBzdWJtb2R1bGVzIHRoYXQgdXNlIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgb3IKKyAgb3RoZXJ3aXNlIHJlbHkgb24gcGFyZW50IG1vZHVsZXMgYmVpbmcgY29ycmVjdGx5IGltcG9ydGVkIHByaW9yIHRvCisgIGV4ZWN1dGlvbi4KKworLSBJc3N1ZSAjMTk5MjE6IFdoZW4gUGF0aC5ta2RpcigpIGlzIGNhbGxlZCB3aXRoIHBhcmVudHM9VHJ1ZSwgYW55IG1pc3NpbmcKKyAgcGFyZW50IGlzIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucywgaWdub3JpbmcgdGhlIG1vZGUgYXJndW1lbnQKKyAgKG1pbWlja2luZyB0aGUgUE9TSVggIm1rZGlyIC1wIiBjb21tYW5kKS4KKworLSBJc3N1ZSAjMTk4ODc6IEltcHJvdmUgdGhlIFBhdGgucmVzb2x2ZSgpIGFsZ29yaXRobSB0byBzdXBwb3J0IGNlcnRhaW4KKyAgc3ltbGluayBjaGFpbnMuCisKKy0gSXNzdWUgIzE5OTEyOiBGaXhlZCBudW1lcm91cyBidWdzIGluIG50cGF0aC5zcGxpdHVuYygpLgorCistIElzc3VlICMxOTkxMTogbnRwYXRoLnNwbGl0ZHJpdmUoKSBub3cgY29ycmVjdGx5IHByb2Nlc3NlcyB0aGUgJ8SwJyBjaGFyYWN0ZXIKKyAgKFUrMDEzMCwgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRSkuCisKKy0gSXNzdWUgIzE5NTMyOiBweXRob24gLW0gY29tcGlsZWFsbCB3aXRoIG5vIGZpbGVuYW1lL2RpcmVjdG9yeSBhcmd1bWVudHMgbm93CisgIHJlc3BlY3RzIHRoZSAtZiBhbmQgLXEgZmxhZ3MgaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtLgorCistIElzc3VlICMxOTYyMzogRml4ZWQgd3JpdGluZyB0byB1bnNlZWthYmxlIGZpbGVzIGluIHRoZSBhaWZjIG1vZHVsZS4KKworLSBJc3N1ZSAjMTk5NDY6IG11bHRpcHJvY2Vzc2luZy5zcGF3biBub3cgcmFpc2VzIEltcG9ydEVycm9yIHdoZW4gdGhlIG1vZHVsZSB0bworICBiZSB1c2VkIGFzIHRoZSBtYWluIG1vZHVsZSBjYW5ub3QgYmUgaW1wb3J0ZWQuCisKKy0gSXNzdWUgIzE3OTE5OiBzZWxlY3QucG9sbC5yZWdpc3RlcigpIGFnYWluIHdvcmtzIHdpdGggcG9sbC5QT0xMTlZBTCBvbiBBSVguCisgIEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGV2ZW50bWFzayBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzE5MDYzOiBpZiBhIENoYXJzZXQncyBib2R5X2VuY29kaW5nIHdhcyBzZXQgdG8gTm9uZSwgdGhlIGVtYWlsCisgIHBhY2thZ2Ugd291bGQgZ2VuZXJhdGUgYSBtZXNzYWdlIGNsYWltaW5nIHRoZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nCisgIHdhcyA3Yml0LCBhbmQgcHJvZHVjZSBnYXJiYWdlIG91dHB1dCBmb3IgdGhlIGNvbnRlbnQuICBUaGlzIG5vdyB3b3Jrcy4KKyAgQSBjb3VwbGUgb2Ygb3RoZXIgc2V0X3BheWxvYWQgbWlzaGFuZGxpbmdzIG9mIG5vbi1BU0NJSSBhcmUgYWxzbyBmaXhlZC4KKyAgSW4gYWRkaXRpb24sIGNhbGxpbmcgc2V0X3BheWxvYWQgd2l0aCBhIHN0cmluZyBhcmd1bWVudCB3aXRob3V0CisgIHNwZWNpZnlpbmcgYSBjaGFyc2V0IG5vdyByYWlzZXMgYW4gZXJyb3IgKHRoaXMgaXMgYSBuZXcgZXJyb3IgaW4gMy40KS4KKworLSBJc3N1ZSAjMTU0NzU6IEFkZCBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9ucyBmb3IgaXRlcnRvb2xzIG9iamVjdHMuCisKKy0gSXNzdWUgIzE5OTQ0OiBGaXggaW1wb3J0bGliLmZpbmRfc3BlYygpIHNvIGl0IGltcG9ydHMgcGFyZW50cyBhcyBuZWVkZWQKKyAgYW5kIG1vdmUgdGhlIGZ1bmN0aW9uIHRvIGltcG9ydGxpYi51dGlsLgorCistIElzc3VlICMxOTg4MDogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gdW5pdHRlc3QuVGVzdENhc2UuIEV4cGxpY2l0bHkgYnJlYWsKKyAgcmVmZXJlbmNlIGN5Y2xlcyBiZXR3ZWVuIGZyYW1lcyBhbmQgdGhlIF9PdXRjb21lIGluc3RhbmNlLgorCistIElzc3VlICMxNzQyOTogcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgbm93IGRlY29kZXMgZmlsZXMgZnJvbSB0aGUgVVRGLTgKKyAgZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsIGluc3RlYWQgb2YgZGVjb2RpbmcgZnJvbSB0aGUKKyAgbG9jYWxlIGVuY29kaW5nIGluIHN0cmljdCBtb2RlLiBJdCBmaXhlcyB0aGUgZnVuY3Rpb24gb24gRmVkb3JhIDE5IHdoaWNoIGlzCisgIHByb2JhYmx5IHRoZSBmaXJzdCBtYWpvciBkaXN0cmlidXRpb24gcmVsZWFzZSB3aXRoIGEgbm9uLUFTQ0lJIG5hbWUuIFBhdGNoCisgIHdyaXR0ZW4gYnkgVG9zaGlvIEt1cmF0b21pLgorCistIElzc3VlICMxOTM0MzogRXhwb3NlIEZyZWVCU0Qtc3BlY2lmaWMgQVBJcyBpbiByZXNvdXJjZSBtb2R1bGUuICBPcmlnaW5hbAorICBwYXRjaCBieSBLb29icy4KKworLSBJc3N1ZSAjMTk5Mjk6IENhbGwgb3MucmVhZCB3aXRoIDMyNzY4IHdpdGhpbiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlCisgIHJhdGhlciB0aGFuIDQwOTYgZm9yIGVmZmljaWVuY3kuICBBIG1pY3JvYmVuY2htYXJrIHNob3dzIExpbnV4IGFuZCBPUyBYCisgIGJvdGggdXNpbmcgfjUwJSBsZXNzIGNwdSB0aW1lIHRoaXMgd2F5LgorCistIElzc3VlICMxOTUwNjogVXNlIGEgbWVtb3J5dmlldyB0byBhdm9pZCBhIGRhdGEgY29weSB3aGVuIHBpcGluZyBkYXRhCisgIHRvIHN0ZGluIHdpdGhpbiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlLiAgNS0xMCUgbGVzcyBjcHUgdXNhZ2UuCisKKy0gSXNzdWUgIzE5ODc2OiBzZWxlY3RvcnMgdW5yZWdpc3RlcigpIG5vIGxvbmdlciByYWlzZXMgVmFsdWVFcnJvciBvciBPU0Vycm9yCisgIGlmIHRoZSBGRCBpcyBjbG9zZWQgKGFzIGxvbmcgYXMgaXQgd2FzIHJlZ2lzdGVyZWQpLgorCistIElzc3VlICMxOTkwODogcGF0aGxpYiBub3cgam9pbnMgcmVsYXRpdmUgV2luZG93cyBwYXRocyBjb3JyZWN0bHkgd2hlbiBhIGRyaXZlCisgIGlzIHByZXNlbnQuICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvaW5lIFBpdHJvdS4KKworLSBJc3N1ZSAjMTkyOTY6IFNpbGVuY2UgY29tcGlsZXIgd2FybmluZyBpbiBkYm1fb3BlbgorCistIElzc3VlICM2Nzg0OiBTdHJpbmdzIGZyb20gUHl0aG9uIDIgY2FuIG5vdyBiZSB1bnBpY2tsZWQgYXMgYnl0ZXMKKyAgb2JqZWN0cyBieSBzZXR0aW5nIHRoZSBlbmNvZGluZyBhcmd1bWVudCBvZiBVbnBpY2tsZXIgdG8gYmUgJ2J5dGVzJy4KKyAgSW5pdGlhbCBwYXRjaCBieSBNZXJsaWpuIHZhbiBEZWVuLgorCistIElzc3VlICMxOTgzOTogRml4IHJlZ3Jlc3Npb24gaW4gYnoyIG1vZHVsZSdzIGhhbmRsaW5nIG9mIG5vbi1iemlwMiBkYXRhIGF0CisgIEVPRiwgYW5kIGFuYWxvZ291cyBidWcgaW4gbHptYSBtb2R1bGUuCisKKy0gSXNzdWUgIzE5ODgxOiBGaXggcGlja2xpbmcgYnVnIHdoZXJlIGNwaWNrbGUgd291bGQgZW1pdCBiYWQgcGlja2xlIGRhdGEgZm9yCisgIGxhcmdlIGJ5dGVzIHN0cmluZyAoaS5lLiwgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiAyKiozMi0xKS4KKworLSBJc3N1ZSAjMTkxMzg6IGRvY3Rlc3QncyBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBub3cgYWxsb3dzIGEgbWF0Y2ggd2hlbgorICBubyBleGNlcHRpb24gZGV0YWlsIGV4aXN0cyAobm8gY29sb24gZm9sbG93aW5nIHRoZSBleGNlcHRpb24ncyBuYW1lLCBvcgorICBhIGNvbG9uIGRvZXMgZm9sbG93IGJ1dCBubyB0ZXh0IGZvbGxvd3MgdGhlIGNvbG9uKS4KKworLSBJc3N1ZSAjMTk5Mjc6IEFkZCBfX2VxX18gdG8gcGF0aC1iYXNlZCBsb2FkZXJzIGluIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTk4Mjc6IE9uIFVOSVgsIHNldGJsb2NraW5nKCkgYW5kIHNldHRpbWVvdXQoKSBtZXRob2RzIG9mCisgIHNvY2tldC5zb2NrZXQgY2FuIG5vdyBhdm9pZCBhIHNlY29uZCBzeXNjYWxsIGlmIHRoZSBpb2N0bCgpIGZ1bmN0aW9uIGNhbiBiZQorICB1c2VkLCBvciBpZiB0aGUgbm9uLWJsb2NraW5nIGZsYWcgb2YgdGhlIHNvY2tldCBpcyB1bmNoYW5nZWQuCisKKy0gSXNzdWUgIzE5Nzg1OiBzbXRwbGliIG5vdyBzdXBwb3J0cyBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lIGFuZCBzZXJ2ZXIgbmFtZQorICBpbmRpY2F0aW9uIGZvciBUTFMvU1NMIGNvbm5lY3Rpb25zLgorCistIElzc3VlICMxOTc4NDogcG9wbGliIG5vdyBzdXBwb3J0cyBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lIGFuZCBzZXJ2ZXIgbmFtZQorICBpbmRpY2F0aW9uIGZvciBUTFMvU1NMIGNvbm5lY3Rpb25zLgorCistIElzc3VlICMxOTc4Mzogbm50cGxpYiBub3cgc3VwcG9ydHMgU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgc2VydmVyIG5hbWUKKyAgaW5kaWNhdGlvbiBmb3IgVExTL1NTTCBjb25uZWN0aW9ucy4KKworLSBJc3N1ZSAjMTk3ODI6IGltYXBsaWIgbm93IHN1cHBvcnRzIFNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIHNlcnZlciBuYW1lCisgIGluZGljYXRpb24gZm9yIFRMUy9TU0wgY29ubmVjdGlvbnMuCisKKy0gSXNzdWUgIzIwMTIzOiBGaXggcHlkb2Muc3lub3BzaXMoKSBmb3IgImJpbmFyeSIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTk4MzQ6IFN1cHBvcnQgdW5waWNrbGluZyBvZiBleGNlcHRpb25zIHBpY2tsZWQgYnkgUHl0aG9uIDIuCisKKy0gSXNzdWUgIzE5NzgxOiBmdHBsaWIgbm93IHN1cHBvcnRzIFNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIHNlcnZlciBuYW1lCisgIGluZGljYXRpb24gZm9yIFRMUy9TU0wgY29ubmVjdGlvbnMuCisKKy0gSXNzdWUgIzE5NTA5OiBBZGQgU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZSB0byBtYXRjaCB0aGUgcGVlcidzIGNlcnRpZmljYXRlCisgIHdpdGggc2VydmVyX2hvc3RuYW1lIG9uIGhhbmRzaGFrZS4KKworLSBJc3N1ZSAjMTU3OTg6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4oKSB0byBubyBsb25nZXIgZmFpbCBpZiBmaWxlCisgIGRlc2NyaXB0b3IgMCwgMSBvciAyIGlzIGNsb3NlZC4KKworLSBJc3N1ZSAjMTc4OTc6IE9wdGltaXplZCB1bnBpY2tsZSBwcmVmZXRjaGluZy4KKworLSBJc3N1ZSAjMzY5MzogTWFrZSB0aGUgZXJyb3IgbWVzc2FnZSBtb3JlIGhlbHBmdWwgd2hlbiB0aGUgYXJyYXkuYXJyYXkoKQorICBjb25zdHJ1Y3RvciBpcyBnaXZlbiBhIHN0ci4gTW92ZSB0aGUgYXJyYXkgbW9kdWxlIHR5cGVjb2RlIGRvY3VtZW50YXRpb24gdG8KKyAgdGhlIGRvY3N0cmluZyBvZiB0aGUgY29uc3RydWN0b3IuCisKKy0gSXNzdWUgIzE5MDg4OiBGaXhlZCBpbmNvcnJlY3QgY2FjaGluZyBvZiB0aGUgY29weXJlZyBtb2R1bGUgaW4KKyAgb2JqZWN0Ll9fcmVkdWNlX18oKSBhbmQgb2JqZWN0Ll9fcmVkdWNlX2V4X18oKS4KKworLSBJc3N1ZSAjMTk2OTg6IFJlbW92ZWQgZXhlY19tb2R1bGUoKSBtZXRob2RzIGZyb20KKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIuCisKKy0gSXNzdWUgIzE4ODY0OiBBZGRlZCBhIHNldHRlciBmb3IgTW9kdWxlU3BlYy5oYXNfbG9jYXRpb24uCisKKy0gRml4ZWQgX3BpY2tsZS5VbnBpY2tsZXIgdG8gbm90IGZhaWwgd2hlbiBsb2FkaW5nIGVtcHR5IHN0cmluZ3MgYXMKKyAgcGVyc2lzdGVudCBJRHMuCisKKy0gSXNzdWUgIzExNDgwOiBGaXhlZCBjb3B5LmNvcHkgdG8gd29yayB3aXRoIGNsYXNzZXMgd2l0aCBjdXN0b20gbWV0YWNsYXNzZXMuCisgIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjNjQ3NzogQWRkZWQgc3VwcG9ydCBmb3IgcGlja2xpbmcgdGhlIHR5cGVzIG9mIGJ1aWx0LWluIHNpbmdsZXRvbnMKKyAgKGkuZS4sIEVsbGlwc2lzLCBOb3RJbXBsZW1lbnRlZCwgTm9uZSkuCisKKy0gSXNzdWUgIzE5NzEzOiBBZGQgcmVtYWluaW5nIFBFUCA0NTEtcmVsYXRlZCBkZXByZWNhdGlvbnMgYW5kIG1vdmUgYXdheQorICBmcm9tIHVzaW5nIGZpbmRfbW9kdWxlL2ZpbmRfbG9hZXIvbG9hZF9tb2R1bGUuCisKKy0gSXNzdWUgIzE5NzA4OiBVcGRhdGUgcGtndXRpbCB0byB1c2UgdGhlIG5ldyBpbXBvcnRlciBBUElzLgorCistIElzc3VlICMxOTcwMzogVXBkYXRlIHB5ZG9jIHRvIHVzZSB0aGUgbmV3IGltcG9ydGVyIEFQSXMuCisKKy0gSXNzdWUgIzE5ODUxOiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW4gcmVsb2FkaW5nIHN1Yi1tb2R1bGVzLgorCistIHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkgc2V0cyBPUF9OT19DT01QUkVTU0lPTiB0byBwcmV2ZW50IENSSU1FLgorCistIElzc3VlICMxOTgwMjogQWRkIHNvY2tldC5TT19QUklPUklUWS4KKworLSBJc3N1ZSAjMTE1MDg6IEZpeGVkIHV1aWQuZ2V0bm9kZSgpIGFuZCB1dWlkLnV1aWQxKCkgb24gZW52aXJvbm1lbnQgd2l0aAorICB2aXJ0dWFsIGludGVyZmFjZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEtlbnQgRnJhemllci4KKworLSBJc3N1ZSAjMTE0ODk6IEpTT04gZGVjb2RlciBub3cgYWNjZXB0cyBsb25lIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzE5NTQ1OiBBdm9pZCBjaGFpbmVkIGV4Y2VwdGlvbnMgd2hpbGUgcGFzc2luZyBzdHJheSAlIHRvCisgIHRpbWUuc3RycHRpbWUoKS4gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzIwMDU4OiBzeXMuc3RkaW4ucmVhZGxpbmUoKSBpbiBJRExFIG5vdyBhbHdheXMgcmV0dXJucyBvbmx5IG9uZSBsaW5lLgorCistIElzc3VlICMxOTQ4MTogcHJpbnQoKSBvZiBzdHJpbmcgc3ViY2xhc3MgaW5zdGFuY2UgaW4gSURMRSBubyBsb25nZXIgaGFuZ3MuCisKKy0gSXNzdWUgIzE4MjcwOiBQcmV2ZW50IHBvc3NpYmxlIElETEUgQXR0cmlidXRlRXJyb3Igb24gT1MgWCB3aGVuIG5vIGluaXRpYWwKKyAgc2hlbGwgd2luZG93IGlzIHByZXNlbnQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyMDA1NTogRml4IHRlc3Rfc2h1dGlsIHVuZGVyIFdpbmRvd3Mgd2l0aCBzeW1saW5rIHByaXZpbGVnZXMgaGVsZC4KKyAgUGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMyMDA3MDogRG9uJ3QgcnVuIHRlc3RfdXJsbGliMm5ldCB3aGVuIG5ldHdvcmsgcmVzb3VyY2VzIGFyZSBub3QKKyAgZW5hYmxlZC4KKworLSBJc3N1ZSAjMTk5Mzg6IFJlLWVuYWJsZWQgdGVzdF9idWdfMTMzMzk4MiBpbiB0ZXN0X2Rpcywgd2hpY2ggaGFkIGJlZW4KKyAgZGlzYWJsZWQgc2luY2UgMy4wIGR1ZSB0byB0aGUgY2hhbmdlcyBpbiBsaXN0Y29tcCBoYW5kbGluZy4KKworLSBJc3N1ZSAjMTkzMjA6IHRlc3RfdGNsIG5vIGxvbmdlciBmYWlscyB3aGVuIHdhbnRvYmplY3RzIGlzIGZhbHNlLgorCistIElzc3VlICMxOTkxOTogRml4IGZsYWt5IFNTTCB0ZXN0LiBjb25uZWN0X2V4KCkgc29tZXRpbWVzIHJldHVybnMKKyAgRVdPVUxEQkxPQ0sgb24gV2luZG93cyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE5OTEyOiBBZGRlZCB0ZXN0cyBmb3IgbnRwYXRoLnNwbGl0dW5jKCkuCisKKy0gSXNzdWUgIzE5ODI4OiBGaXhlZCB0ZXN0X3NpdGUgd2hlbiB0aGUgd2hvbGUgc3VpdGUgaXMgcnVuIHdpdGggLVMuCisKKy0gSXNzdWUgIzE5OTI4OiBJbXBsZW1lbnRlZCBhIHRlc3QgZm9yIHJlcHIoKSBvZiBjZWxsIG9iamVjdHMuCisKKy0gSXNzdWUgIzE5NTM1OiBGaXhlZCB0ZXN0X2RvY3htbHJwYywgdGVzdF9mdW5jdG9vbHMsIHRlc3RfaW5zcGVjdCwgYW5kCisgIHRlc3Rfc3RhdGlzdGljcyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08uCisKKy0gSXNzdWUgIzE5OTI2OiBSZW1vdmVkIHVubmVlZGVkIHRlc3RfbWFpbiBmcm9tIHRlc3RfYWJzdHJhY3RfbnVtYmVycy4KKyAgUGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMxOTU3MjogTW9yZSBza2lwcGVkIHRlc3RzIGV4cGxpY2l0bHkgbWFya2VkIGFzIHNraXBwZWQuCisKKy0gSXNzdWUgIzE5NTk1LCAjMTk5ODc6IFJlLWVuYWJsZWQgYSBsb25nLWRpc2FibGVkIHRlc3QgaW4gdGVzdF93aW5zb3VuZC4KKworLSBJc3N1ZSAjMTk1ODg6IEZpeGVkIHRlc3RzIGluIHRlc3RfcmFuZG9tIHRoYXQgd2VyZSBzaWxlbnRseSBza2lwcGVkIG1vc3QKKyAgb2YgdGhlIHRpbWUuICBQYXRjaCBieSBKdWxpYW4gR2luZGkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxOTcyODogRW5hYmxlIHBpcCBpbnN0YWxsYXRpb24gYnkgZGVmYXVsdCBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNjEzNjogUmVtb3ZlIFZNUyBzdXBwb3J0CisKKy0gSXNzdWUgIzE4MjE1OiBBZGQgc2NyaXB0IFRvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5IHRvIGNvbXBpbGUgYW5kCisgIHJ1biBQeXRob24ncyB1bml0IHRlc3RzIHdpdGggbXVsdGlwbGUgdmVyc2lvbnMgb2YgT3BlblNTTC4KKworLSBJc3N1ZSAjMTk5MjI6IGRlZmluZSBfSU5DTFVERV9fU1REQ19BMV9TT1VSQ0UgaW4gSFAtVVggdG8gaW5jbHVkZSBtYnN0YXRlX3QKKyAgZm9yIG1icnRvd2MoKS4KKworLSBJc3N1ZSAjMTk3ODg6IGtpbGxfcHl0aG9uKF9kKS5leGUgaXMgbm93IHJ1biBhcyBhIFByZUJ1aWxkRXZlbnQgb24gdGhlCisgIHB5dGhvbmNvcmUgc3ViLXByb2plY3QuICBUaGlzIHNob3VsZCBwcmV2ZW50IGJ1aWxkIGVycm9ycyBkdWUgYSBwcmV2aW91cworICBidWlsZCdzIHB5dGhvbihfZCkuZXhlIHN0aWxsIHJ1bm5pbmcuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjAyNjU6IFVwZGF0ZWQgc29tZSBwYXJ0cyBvZiB0aGUgVXNpbmcgV2luZG93cyBkb2N1bWVudC4KKworLSBJc3N1ZSAjMjAyNjY6IFVwZGF0ZWQgc29tZSBwYXJ0cyBvZiB0aGUgV2luZG93cyBGQVEuCisKKy0gSXNzdWUgIzIwMjU1OiBVcGRhdGVkIHRoZSBhYm91dCBhbmQgYnVncyBwYWdlcy4KKworLSBJc3N1ZSAjMjAyNTM6IEZpeGVkIGEgdHlwbyBpbiB0aGUgaXBhZGRyZXNzIGRvY3MgdGhhdCBhZHZlcnRpc2VkIGFuCisgIGlsbGVnYWwgYXR0cmlidXRlIG5hbWUuICBGb3VuZCBieSBJTkFEQSBOYW9raS4KKworLSBJc3N1ZSAjMTg4NDA6IEludHJvZHVjZSB0aGUganNvbiBtb2R1bGUgaW4gdGhlIHR1dG9yaWFsLCBhbmQgZGUtZW1waGFzaXplCisgIHRoZSBwaWNrbGUgbW9kdWxlLgorCistIElzc3VlICMxOTg0NTogVXBkYXRlZCB0aGUgQ29tcGlsaW5nIFB5dGhvbiBvbiBXaW5kb3dzIHNlY3Rpb24uCisKKy0gSXNzdWUgIzE5Nzk1OiBJbXByb3ZlZCBtYXJrdXAgb2YgVHJ1ZS9GYWxzZSBjb25zdGFudHMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxOTY1OTogQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMxOTk3NjogQXJndW1lbnQgQ2xpbmljIE1FVEhfTk9BUkdTIGZ1bmN0aW9ucyBub3cgYWx3YXlzCisgIHRha2UgdHdvIHBhcmFtZXRlcnMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgQmV0YSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTMtMTEtMjQKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gVXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgaW4gbW9yZSBwbGFjZXMgaW4gaW1wb3J0LCBlc3BlY2lhbGx5CisgIGV4Y2VwdGlvbnMuCisKKy0gSXNzdWUgIzE5NjE5OiBzdHIuZW5jb2RlLCBieXRlcy5kZWNvZGUgYW5kIGJ5dGVhcnJheS5kZWNvZGUgbm93IHVzZSBhbgorICBpbnRlcm5hbCBBUEkgdG8gdGhyb3cgTG9va3VwRXJyb3IgZm9yIGtub3duIG5vbi10ZXh0IGVuY29kaW5ncywgcmF0aGVyCisgIHRoYW4gYXR0ZW1wdGluZyB0aGUgZW5jb2Rpbmcgb3IgZGVjb2Rpbmcgb3BlcmF0aW9uIGFuZCB0aGVuIHRocm93aW5nIGEKKyAgVHlwZUVycm9yIGZvciBhbiB1bmV4cGVjdGVkIG91dHB1dCB0eXBlLiAoVGhlIGxhdHRlciBtZWNoYW5pc20gcmVtYWlucworICBpbiBwbGFjZSBmb3IgdGhpcmQgcGFydHkgbm9uLXRleHQgZW5jb2RpbmdzKQorCistIElzc3VlICMxOTE4MzogSW1wbGVtZW50IFBFUCA0NTYgJ3NlY3VyZSBhbmQgaW50ZXJjaGFuZ2VhYmxlIGhhc2ggYWxnb3JpdGhtJy4KKyAgUHl0aG9uIG5vdyB1c2VzIFNpcEhhc2gyNCBvbiBhbGwgbWFqb3IgcGxhdGZvcm1zLgorCistIElzc3VlICMxMjg5MjogVGhlIHV0Zi0xNiogYW5kIHV0Zi0zMiogZW5jb2RlcnMgbm8gbG9uZ2VyIGFsbG93IHN1cnJvZ2F0ZSBjb2RlCisgIHBvaW50cyAoVStEODAwLVUrREZGRikgdG8gYmUgZW5jb2RlZC4gIFRoZSB1dGYtMzIqIGRlY29kZXJzIG5vIGxvbmdlciBkZWNvZGUKKyAgYnl0ZSBzZXF1ZW5jZXMgdGhhdCBjb3JyZXNwb25kIHRvIHN1cnJvZ2F0ZSBjb2RlIHBvaW50cy4gIFRoZSBzdXJyb2dhdGVwYXNzCisgIGVycm9yIGhhbmRsZXIgbm93IHdvcmtzIHdpdGggdGhlIHV0Zi0xNiogYW5kIHV0Zi0zMiogY29kZWNzLiAgQmFzZWQgb24KKyAgcGF0Y2hlcyBieSBWaWN0b3IgU3Rpbm5lciBhbmQgS2FuZy1IYW8gKEtlbm55KSBMdS4KKworLSBJc3N1ZSAjMTc4MDY6IEFkZGVkIGtleXdvcmQtYXJndW1lbnQgc3VwcG9ydCBmb3IgInRhYnNpemUiIHRvCisgIHN0ci9ieXRlcy5leHBhbmR0YWJzKCkuCisKKy0gSXNzdWUgIzE3ODI4OiBPdXRwdXQgdHlwZSBlcnJvcnMgaW4gc3RyLmVuY29kZSgpLCBieXRlcy5kZWNvZGUoKSBhbmQKKyAgYnl0ZWFycmF5LmRlY29kZSgpIG5vdyBkaXJlY3QgdXNlcnMgdG8gY29kZWNzLmVuY29kZSgpIG9yIGNvZGVjcy5kZWNvZGUoKQorICBhcyBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjMTc4Mjg6IFRoZSBpbnRlcnByZXRlciBub3cgYXR0ZW1wdHMgdG8gY2hhaW4gZXJyb3JzIHRoYXQgb2NjdXIgaW4KKyAgY29kZWMgcHJvY2Vzc2luZyB3aXRoIGEgcmVwbGFjZW1lbnQgZXhjZXB0aW9uIG9mIHRoZSBzYW1lIHR5cGUgdGhhdAorICBpbmNsdWRlcyB0aGUgY29kZWMgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZS4gSXQgZW5zdXJlcyBpdCBvbmx5IGRvZXMgdGhpcworICB3aGVuIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVwbGFjZW1lbnQgZXhjZXB0aW9uIHdvbid0IGxvc2UgYW55IGluZm9ybWF0aW9uLgorCistIElzc3VlICMxOTQ2NjogQ2xlYXIgdGhlIGZyYW1lcyBvZiBkYWVtb24gdGhyZWFkcyBlYXJsaWVyIGR1cmluZyB0aGUKKyAgUHl0aG9uIHNodXRkb3duIHRvIGNhbGwgb2JqZWN0IGRlc3RydWN0b3JzLiBTbyAidW5jbG9zZWQgZmlsZSIgcmVzb3VyY2UKKyAgd2FybmluZ3MgYXJlIG5vdyBjb3JyZWN0bHkgZW1pdHRlZCBmb3IgZGFlbW9uIHRocmVhZHMuCisKKy0gSXNzdWUgIzE5NTE0OiBEZWR1cGxpY2F0ZSBzb21lIF9QeV9JREVOVElGSUVSIGRlY2xhcmF0aW9ucy4KKyAgUGF0Y2ggYnkgQW5kcmVpIERvcmlhbiBEdW1hLgorCistIElzc3VlICMxNzkzNjogRml4IE8obioqMikgYmVoYXZpb3VyIHdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIG1hbnkgc3ViY2xhc3NlcworICBvZiBhIGdpdmVuIHR5cGUuCisKKy0gSXNzdWUgIzE5NDI4OiB6aXBpbXBvcnQgbm93IGhhbmRsZXMgZXJyb3JzIHdoZW4gcmVhZGluZyB0cnVuY2F0ZWQgb3IgaW52YWxpZAorICBaSVAgYXJjaGl2ZS4KKworLSBJc3N1ZSAjMTg0MDg6IEFkZCBhIG5ldyBQeUZyYW1lX0Zhc3RUb0xvY2Fsc1dpdGhFcnJvcigpIGZ1bmN0aW9uIHRvIGhhbmRsZQorICBleGNlcHRpb25zIHdoZW4gbWVyZ2luZyBmYXN0IGxvY2FscyBpbnRvIGZfbG9jYWxzIG9mIGEgZnJhbWUuCisgIFB5RXZhbF9HZXRMb2NhbHMoKSBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZmFpbHVyZS4KKworLSBJc3N1ZSAjMTkzNjk6IE9wdGltaXplZCB0aGUgdXNhZ2Ugb2YgX19sZW5ndGhfaGludF9fKCkuCisKKy0gSXNzdWUgIzI4MDI2OiBSYWlzZSBJbXBvcnRFcnJvciB3aGVuIGV4ZWNfbW9kdWxlKCkgZXhpc3RzIGJ1dAorICBjcmVhdGVfbW9kdWxlKCkgaXMgbWlzc2luZy4KKworLSBJc3N1ZSAjMTg2MDM6IEVuc3VyZSB0aGF0IFB5T1NfbXlzdHJpY21wIGFuZCBQeU9TX215c3RybmljbXAgYXJlIGluIHRoZQorICBQeXRob24gZXhlY3V0YWJsZSBhbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KKworLSBJc3N1ZSAjMTkzMDY6IEFkZCBleHRyYSBoaW50cyB0byB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSdzIHN0YWNrCisgIGR1bXBzIHRoYXQgdGhlc2UgYXJlICJ1cHNpZGUgZG93biIuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMzE1ODogZG9jdGVzdCBjYW4gbm93IGZpbmQgZG9jdGVzdHMgaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzCisgIHdyaXR0ZW4gaW4gQy4KKworLSBJc3N1ZSAjMTM0Nzc6IEFkZGVkIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgorICBPcmlnaW5hbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMxOTY3NDogaW5zcGVjdC5zaWduYXR1cmUoKSBub3cgcHJvZHVjZXMgYSBjb3JyZWN0IHNpZ25hdHVyZQorICBmb3Igc29tZSBidWlsdGlucy4KKworLSBJc3N1ZSAjMTk3MjI6IEFkZGVkIG9wY29kZS5zdGFja19lZmZlY3QoKSwgd2hpY2gKKyAgY29tcHV0ZXMgdGhlIHN0YWNrIGVmZmVjdCBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCisKKy0gSXNzdWUgIzE5NzM1OiBJbXBsZW1lbnQgcHJpdmF0ZSBmdW5jdGlvbiBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpIHRvCisgIGNyZWF0ZSBTU0xDb250ZXh0IG9iamVjdHMgaW4gUHl0aG9uJ3Mgc3RkbGliIG1vZHVsZS4gSXQgcHJvdmlkZXMgYSBzaW5nbGUKKyAgY29uZmlndXJhdGlvbiBwb2ludCBhbmQgbWFrZXMgdXNlIG9mIFNTTENvbnRleHQubG9hZF9kZWZhdWx0X2NlcnRzKCkuCisKKy0gSXNzdWUgIzE2MjAzOiBBZGQgcmUuZnVsbG1hdGNoKCkgZnVuY3Rpb24gYW5kIHJlZ2V4LmZ1bGxtYXRjaCgpIG1ldGhvZCwKKyAgd2hpY2ggYW5jaG9yIHRoZSBwYXR0ZXJuIGF0IGJvdGggZW5kcyBvZiB0aGUgc3RyaW5nIHRvIG1hdGNoLgorICBPcmlnaW5hbCBwYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCisKKy0gSXNzdWUgIzEzNTkyOiBJbXByb3ZlZCB0aGUgcmVwciBmb3IgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gb2JqZWN0cy4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgSHVnbyBMb3BlcyBUYXZhcmVzLgorCistIElzc3VlICMxOTY0MTogQWRkZWQgdGhlIGF1ZGlvb3AuYnl0ZXN3YXAoKSBmdW5jdGlvbiB0byBjb252ZXJ0IGJpZy1lbmRpYW4KKyAgc2FtcGxlcyB0byBsaXR0bGUtZW5kaWFuIGFuZCB2aWNlIHZlcnNhLgorCistIElzc3VlICMxNTIwNDogRGVwcmVjYXRlZCB0aGUgJ1UnIG1vZGUgaW4gZmlsZS1saWtlIG9iamVjdHMuCisKKy0gSXNzdWUgIzE3ODEwOiBJbXBsZW1lbnQgUEVQIDMxNTQsIHBpY2tsZSBwcm90b2NvbCA0LgorCistIElzc3VlICMxOTY2ODogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGNwMTEyNSBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTk2ODk6IEFkZCBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpIGZhY3RvcnkgZnVuY3Rpb24uIEl0IGNyZWF0ZXMKKyAgYSBuZXcgU1NMQ29udGV4dCBvYmplY3Qgd2l0aCBzZWN1cmUgZGVmYXVsdCBzZXR0aW5ncy4KKworLSBJc3N1ZSAjMTk3Mjc6IG9zLnV0aW1lKC4uLiwgTm9uZSkgaXMgbm93IHBvdGVudGlhbGx5IG1vcmUgcHJlY2lzZQorICB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxNzIwMTogWklQNjQgZXh0ZW5zaW9ucyBub3cgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gIFBhdGNoIGJ5CisgIFdpbGxpYW0gTWFsbGFyZC4KKworLSBJc3N1ZSAjMTkyOTI6IEFkZCBTU0xDb250ZXh0LmxvYWRfZGVmYXVsdF9jZXJ0cygpIHRvIGxvYWQgZGVmYXVsdCByb290IENBCisgIGNlcnRpZmljYXRlcyBmcm9tIGRlZmF1bHQgc3RvcmVzIG9yIHN5c3RlbSBzdG9yZXMuIEJ5IGRlZmF1bHQgdGhlIG1ldGhvZAorICBsb2FkcyBDQSBjZXJ0cyBmb3IgYXV0aGVudGljYXRpb24gb2Ygc2VydmVyIGNlcnRzLgorCistIElzc3VlICMxOTY3MzogQWRkIHBhdGhsaWIgdG8gdGhlIHN0ZGxpYiBhcyBhIHByb3Zpc2lvbmFsIG1vZHVsZSAoUEVQIDQyOCkuCisKKy0gSXNzdWUgIzE2NTk2OiBwZGIgaW4gYSBnZW5lcmF0b3Igbm93IHByb3Blcmx5IHNraXBzIG92ZXIgeWllbGQgYW5kCisgIHlpZWxkIGZyb20gcmF0aGVyIHRoYW4gc3RlcHBpbmcgb3V0IG9mIHRoZSBnZW5lcmF0b3IgaW50byBpdHMKKyAgY2FsbGVyLiAgKFRoaXMgaXMgZXNzZW50aWFsIGZvciBzdGVwcGluZyB0aHJvdWdoIGFzeW5jaW8gY29yb3V0aW5lcy4pCisKKy0gSXNzdWUgIzE3OTE2OiBBZGRlZCBkaXMuQnl0ZWNvZGUuZnJvbV90cmFjZWJhY2soKSBhbmQKKyAgZGlzLkJ5dGVjb2RlLmN1cnJlbnRfb2Zmc2V0IHRvIGVhc2lseSBkaXNwbGF5ICJjdXJyZW50IGluc3RydWN0aW9uIgorICBtYXJrZXJzIGluIHRoZSBuZXcgZGlzYXNzZW1ibHkgQVBJIChQYXRjaCBieSBDbGF1ZGl1IFBvcGEpLgorCistIElzc3VlICMxOTU1MjogdmVudiBub3cgc3VwcG9ydHMgYm9vdHN0cmFwcGluZyBwaXAgaW50byB2aXJ0dWFsIGVudmlyb25tZW50cworCistIElzc3VlICMxNzEzNDogRmluYWxpemUgaW50ZXJmYWNlIHRvIFdpbmRvd3MnIGNlcnRpZmljYXRlIHN0b3JlLiBDZXJ0IGFuZAorICBDUkwgZW51bWVyYXRpb24gYXJlIG5vdyB0d28gZnVuY3Rpb25zLiBlbnVtX2NlcnRpZmljYXRlcygpIGFsc28gcmV0dXJucworICBwdXJwb3NlIGZsYWdzIGFzIHNldCBvZiBPSURzLgorCistIElzc3VlICMxOTU1NTogUmVzdG9yZSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NPJyksIChhbmQgdGhlIGRpc3R1dGlscworICBlcXVpdmFsZW50KSB3aXRoIGEgRGVwcmVjYXRpb25XYXJuaW5nIHBvaW50aW5nIHBlb3BsZSBhdCAkRVhUX1NVRkZJWC4KKworLSBJc3N1ZSAjODgxMzogQWRkIFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzIHRvIGNoYW5nZSB0aGUgdmVyaWZpY2F0aW9uIGZsYWdzCisgIG9mIHRoZSBjb250ZXh0IGluIG9yZGVyIHRvIGVuYWJsZSBjZXJ0aWZpY2F0aW9uIHJldm9jYXRpb24gbGlzdCAoQ1JMKQorICBjaGVja3Mgb3Igc3RyaWN0IFg1MDkgcnVsZXMuCisKKy0gSXNzdWUgIzE4Mjk0OiBGaXggdGhlIHpsaWIgbW9kdWxlIHRvIG1ha2UgaXQgNjQtYml0IHNhZmUuCisKKy0gSXNzdWUgIzE5NjgyOiBGaXggY29tcGF0aWJpbGl0eSBpc3N1ZSB3aXRoIG9sZCB2ZXJzaW9uIG9mIE9wZW5TU0wgdGhhdAorICB3YXMgaW50cm9kdWNlZCBieSBJc3N1ZSAjMTgzNzkuCisKKy0gSXNzdWUgIzE0NDU1OiBwbGlzdGxpYiBub3cgc3VwcG9ydHMgYmluYXJ5IHBsaXN0cyBhbmQgaGFzIGFuIHVwZGF0ZWQgQVBJLgorCistIElzc3VlICMxOTYzMzogRml4ZWQgd3JpdGluZyBub3QgY29tcHJlc3NlZCAxNi0gYW5kIDMyLWJpdCB3YXZlIGZpbGVzIG9uCisgIGJpZy1lbmRpYW4gcGxhdGZvcm1zLgorCistIElzc3VlICMxODM3OTogU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkgcmV0dXJucyBDQSBpc3N1ZXIgQUlBIGZpZWxkcywgT0NTUAorICBhbmQgQ1JMIGRpc3RyaWJ1dGlvbiBwb2ludHMuCisKKy0gSXNzdWUgIzE4MTM4OiBJbXBsZW1lbnQgY2FkYXRhIGFyZ3VtZW50IG9mIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb24oKQorICB0byBsb2FkIENBIGNlcnRpZmljYXRlcyBhbmQgQ1JMIGZyb20gbWVtb3J5LiBJdCBzdXBwb3J0cyBQRU0gYW5kIERFUgorICBlbmNvZGVkIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE4Nzc1OiBBZGQgbmFtZSBhbmQgYmxvY2tfc2l6ZSBhdHRyaWJ1dGUgdG8gSE1BQyBvYmplY3QuIFRoZXkgbm93CisgIHByb3ZpZGUgdGhlIHNhbWUgQVBJIGVsZW1lbnRzIGFzIG5vbi1rZXllZCBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zLgorCistIElzc3VlICMxNzI3NjogTUQ1IGFzIGRlZmF1bHQgZGlnZXN0bW9kIGZvciBITUFDIGlzIGRlcHJlY2F0ZWQuIFRoZSBITUFDCisgIG1vZHVsZSBzdXBwb3J0cyBkaWdlc3Rtb2QgbmFtZXMsIGUuZy4gaG1hYy5ITUFDKCdzaGExJykuCisKKy0gSXNzdWUgIzE5NDQ5OiBpbiBjc3YncyB3cml0ZXJvdywgaGFuZGxlIG5vbi1zdHJpbmcga2V5cyB3aGVuIGdlbmVyYXRpbmcgdGhlCisgIGVycm9yIG1lc3NhZ2UgdGhhdCBjZXJ0YWluIGtleXMgYXJlIG5vdCBpbiB0aGUgJ2ZpZWxkbmFtZXMnIGxpc3QuCisKKy0gSXNzdWUgIzEzNjMzOiBBZGRlZCBhIG5ldyBjb252ZXJ0X2NoYXJyZWZzIGtleXdvcmQgYXJnIHRvIEhUTUxQYXJzZXIgdGhhdCwKKyAgd2hlbiBUcnVlLCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIGFsbCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KKworLSBJc3N1ZSAjMjkyNzogQWRkZWQgdGhlIHVuZXNjYXBlKCkgZnVuY3Rpb24gdG8gdGhlIGh0bWwgbW9kdWxlLgorCistIElzc3VlICM4NDAyOiBBZGRlZCB0aGUgZXNjYXBlKCkgZnVuY3Rpb24gdG8gdGhlIGdsb2IgbW9kdWxlLgorCistIElzc3VlICMxNzYxODogQWRkIEJhc2U4NSBhbmQgQXNjaWk4NSBlbmNvZGluZy9kZWNvZGluZyB0byB0aGUgYmFzZTY0IG1vZHVsZS4KKworLSBJc3N1ZSAjMTk2MzQ6IHRpbWUuc3RyZnRpbWUoIiV5Iikgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3Igb24gQUlYIHdoZW4gZ2l2ZW4gYQorICB5ZWFyIGJlZm9yZSAxOTAwLgorCistIEZpeCB0ZXN0LnN1cHBvcnQuYmluZF9wb3J0KCkgdG8gbm90IGNhdXNlIGFuIGVycm9yIHdoZW4gUHl0aG9uIHdhcyBjb21waWxlZAorICBvbiBhIHN5c3RlbSB3aXRoIFNPX1JFVVNFUE9SVCBkZWZpbmVkIGluIHRoZSBoZWFkZXJzIGJ1dCBydW4gb24gYSBzeXN0ZW0KKyAgd2l0aCBhbiBPUyBrZXJuZWwgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgcmVhc29uYWJseSBuZXcgc29ja2V0IG9wdGlvbi4KKworLSBGaXggY29tcGlsYXRpb24gZXJyb3IgdW5kZXIgZ2NjIG9mIHRoZSBjdHlwZXMgbW9kdWxlIGJ1bmRsZWQgbGliZmZpIGZvciBhcm0uCisKKy0gSXNzdWUgIzE5NDQ4OiBBZGQgcHJpdmF0ZSBBUEkgdG8gU1NMIG1vZHVsZSB0byBsb29rdXAgQVNOLjEgb2JqZWN0cyBieSBPSUQsCisgIE5JRCwgc2hvcnQgbmFtZSBhbmQgbG9uZyBuYW1lLgorCistIElzc3VlICMxOTI4MjogZGJtLm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisgIChJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYSkKKworLSBJc3N1ZSAjODMxMTogQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBhbnkgYnl0ZXMtbGlrZSBvYmplY3RzIGluIHRoZSBhaWZjLAorICBzdW5hdSwgYW5kIHdhdmUgbW9kdWxlcy4KKworLSBJc3N1ZSAjNTIwMjogQWRkZWQgc3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyBpbiB0aGUgd2F2ZSBtb2R1bGUuCisKKy0gSXNzdWUgIzE5NTQ0IGFuZCBJc3N1ZSAjMTE4MDogUmVzdG9yZSBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZQorICB+Ly5weWRpc3R1dGlscy5jZmcgaW4gRGlzdHV0aWxzLCBhY2NpZGVudGFsbHkgcmVtb3ZlZCBpbiBiYWNrb3V0IG9mCisgIGRpc3R1dGlsczIgY2hhbmdlcy4KKworLSBJc3N1ZSAjMTk1MjM6IENsb3NlZCBGaWxlSGFuZGxlciBsZWFrIHdoaWNoIG9jY3VycmVkIHdoZW4gZGVsYXkgd2FzIHNldC4KKworLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM2NTE2OiBSZXN0b3JlIHN1cHBvcnQgZm9yIC0tdXNlciBhbmQgLS1ncm91cAorICBwYXJhbWV0ZXJzIHRvIHNkaXN0IGNvbW1hbmQgYWNjaWRlbnRhbGx5IHJvbGxlZCBiYWNrIGFzIHBhcnQgb2YgdGhlCisgIGRpc3R1dGlsczIgcm9sbGJhY2suCisKKy0gSXNzdWUgIzEzNjc0OiBQcmV2ZW50ZWQgdGltZS5zdHJmdGltZSBmcm9tIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBnaXZlbgorICBhIHllYXIgYmVmb3JlIDE5MDAgYW5kIGEgZm9ybWF0IG9mICV5LgorCistIElzc3VlICMxOTQwNjogaW1wbGVtZW50YXRpb24gb2YgdGhlIGVuc3VyZXBpcCBtb2R1bGUgKHBhcnQgb2YgUEVQIDQ1MykuCisgIFBhdGNoIGJ5IERvbmFsZCBTdHVmZnQgYW5kIE5pY2sgQ29naGxhbi4KKworLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM2Mjg2OiBSZXN0b3JlIHVzZSBvZiB1cmxsaWIgb3ZlciBodHRwIGFsbG93aW5nIHVzZQorICBvZiBodHRwX3Byb3h5IGZvciBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQsIGEgZmVhdHVyZSBhY2NpZGVudGFsbHkgbG9zdAorICBpbiB0aGUgcm9sbGJhY2sgb2YgZGlzdHV0aWxzMi4KKworLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM3NDU3OiBSZXN0b3JlIHRoZSByZWFkX3BrZ19maWxlIG1ldGhvZCB0bworICBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YSBhY2NpZGVudGFsbHkgcmVtb3ZlZCBpbiB0aGUgdW5kbyBvZgorICBkaXN0dXRpbHMyLgorCistIElzc3VlICMxNjY4NTogQWRkZWQgc3VwcG9ydCBmb3IgYW55IGJ5dGVzLWxpa2Ugb2JqZWN0cyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCisgIFJlbW92ZWQgc3VwcG9ydCBmb3Igc3RyaW5ncy4KKworLSBJc3N1ZSAjNzE3MTogQWRkIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgYGBpbmV0X250b3BgYCBhbmQgYGBpbmV0X3B0b25gYAorICB0byBzb2NrZXQgbW9kdWxlLiBQYXRjaCBieSBBdHN1byBJc2hpbW90by4KKworLSBJc3N1ZSAjMTkyNjE6IEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgMjQtYml0IHNhbXBsZXMgaW4gdGhlIHN1bmF1IG1vZHVsZS4KKworLSBJc3N1ZSAjMTA5Nzc5NzogQWRkZWQgQ1AyNzMgZW5jb2RpbmcsIHVzZWQgb24gSUJNIG1haW5mcmFtZXMgaW4KKyAgR2VybWFueSBhbmQgQXVzdHJpYS4gIE1hcHBpbmcgcHJvdmlkZWQgYnkgTWljaGFlbCBCaWVyZW5mZWxkLgorCistIElzc3VlICMxNTc1MDIwOiBGaXhlZCBzdXBwb3J0IG9mIDI0LWJpdCB3YXZlIGZpbGVzIG9uIGJpZy1lbmRpYW4gcGxhdGZvcm1zLgorCistIElzc3VlICMxOTM3ODogRml4ZWQgYSBudW1iZXIgb2YgY2FzZXMgaW4gdGhlIGRpcyBtb2R1bGUgd2hlcmUgdGhlIG5ldworICAiZmlsZSIgcGFyYW1ldGVyIHdhcyBub3QgYmVpbmcgaG9ub3VyZWQgY29ycmVjdGx5CisKKy0gSXNzdWUgIzE5Mzc4OiBSZW1vdmVkIHRoZSAiZGlzLkJ5dGVjb2RlLnNob3dfaW5mbyIgbWV0aG9kCisKKy0gSXNzdWUgIzE5Mzc4OiBSZW5hbWVkIHRoZSAiZGlzLkJ5dGVjb2RlLmRpc3BsYXlfY29kZSIgbWV0aG9kIHRvCisgICJkaXMuQnl0ZWNvZGUuZGlzIiBhbmQgY29udmVydGVkIGl0IHRvIHJldHVybmluZyBhIHN0cmluZyByYXRoZXIgdGhhbgorICBwcmludGluZyBvdXRwdXQuCisKKy0gSXNzdWUgIzE5Mzc4OiB0aGUgImxpbmVfb2Zmc2V0IiBwYXJhbWV0ZXIgaW4gdGhlIG5ldyAiZGlzLmdldF9pbnN0cnVjdGlvbnMiCisgIEFQSSBoYXMgYmVlbiByZW5hbWVkIHRvICJmaXJzdF9saW5lIiAoYW5kIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCB1c2FnZQorICBjaGFuZ2VkIGFjY29yZGluZ2x5KS4gVGhpcyBzaG91bGQgcmVkdWNlIGNvbmZ1c2lvbiB3aXRoIHRoZSBtb3JlIGNvbW1vbiB1c2UKKyAgb2YgIm9mZnNldCIgaW4gdGhlIGRpcyBkb2NzIHRvIHJlZmVyIHRvIGJ5dGVjb2RlIG9mZnNldHMuCisKKy0gSXNzdWUgIzE4Njc4OiBDb3JyZWN0ZWQgc3B3ZCBzdHJ1Y3QgbWVtYmVyIG5hbWVzIGluIHNwd2QgbW9kdWxlOgorICBzcF9uYW0tPnNwX25hbXAsIGFuZCBzcF9wd2QtPnNwX3B3ZHAuICBUaGUgb2xkIG5hbWVzIGFyZSBrZXB0IGFzIGV4dHJhCisgIHN0cnVjdHNlcSBtZW1iZXJzLCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjNjE1NzogRml4ZWQgdGtpbnRlci5UZXh0LmRlYnVnKCkuICB0a2ludGVyLlRleHQuYmJveCgpIG5vdyByYWlzZXMKKyAgVHlwZUVycm9yIGluc3RlYWQgb2YgVGNsRXJyb3Igb24gd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4gIE9yaWdpbmFsIHBhdGNoCisgIGJ5IEd1aWxoZXJtZSBQb2xvLgorCistIElzc3VlICMxMDE5NzogUmV3b3JrIHN1YnByb2Nlc3MuZ2V0W3N0YXR1c11vdXRwdXQgdG8gdXNlIHN1YnByb2Nlc3MKKyAgZnVuY3Rpb25hbGl0eSBhbmQgdGh1cyB0byB3b3JrIG9uIFdpbmRvd3MuIFBhdGNoIGJ5IE5pY2sgQ29naGxhbgorCistIElzc3VlICM2MTYwOiBUaGUgYmJveCgpIG1ldGhvZCBvZiB0a2ludGVyLlNwaW5ib3ggbm93IHJldHVybnMgYSB0dXBsZSBvZgorICBpbnRlZ2VycyBpbnN0ZWFkIG9mIGEgc3RyaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKKy0gSXNzdWUgIzE5NDAzOiBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZG91dCBpcyBub3cgcmVlbnRyYW50CisKKy0gSXNzdWUgIzE5Mjg2OiBEaXJlY3RvcmllcyBpbiBgYHBhY2thZ2VfZGF0YWBgIGFyZSBubyBsb25nZXIgYWRkZWQgdG8KKyAgdGhlIGZpbGVsaXN0LCBwcmV2ZW50aW5nIGZhaWx1cmUgb3V0bGluZWQgaW4gdGhlIHRpY2tldC4KKworLSBJc3N1ZSAjMTk0ODA6IEhUTUxQYXJzZXIgbm93IGFjY2VwdHMgYWxsIHZhbGlkIHN0YXJ0LXRhZyBuYW1lcyBhcyBkZWZpbmVkCisgIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZC4KKworLSBJc3N1ZSAjMTUxMTQ6IFRoZSBodG1sLnBhcnNlciBtb2R1bGUgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIHRoZQorICBzdHJpY3QgYXJndW1lbnQgb2YgSFRNTFBhcnNlciBvciB0aGUgSFRNTFBhcnNlci5lcnJvciBtZXRob2QgYXJlIHVzZWQuCisKKy0gSXNzdWUgIzE5NDEwOiBVbmRvIHRoZSBzcGVjaWFsLWNhc2luZyByZW1vdmFsIG9mICcnIGZvcgorICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuCisKKy0gSXNzdWUgIzE5NDI0OiBGaXggdGhlIHdhcm5pbmdzIG1vZHVsZSB0byBhY2NlcHQgZmlsZW5hbWUgY29udGFpbmluZyBzdXJyb2dhdGUKKyAgY2hhcmFjdGVycy4KKworLSBJc3N1ZSAjMTk0MzU6IEZpeCBkaXJlY3RvcnkgdHJhdmVyc2FsIGF0dGFjayBvbiBDR0lIdHRwUmVxdWVzdEhhbmRsZXIuCisKKy0gSXNzdWUgIzE5MjI3OiBSZW1vdmUgcHRocmVhZF9hdGZvcmsoKSBoYW5kbGVyLiBUaGUgaGFuZGxlciB3YXMgYWRkZWQgdG8KKyAgc29sdmUgIzE4NzQ3IGJ1dCBoYXMgY2F1c2VkIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTk0MjA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSBvZgorICBfaGFzaG9wZW5zc2wuYworCistIElzc3VlICMxOTMyOTogT3B0aW1pemVkIGNvbXBpbGluZyBjaGFyc2V0cyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLgorCistIElzc3VlICMxOTIyNzogVHJ5IHRvIGZpeCBkZWFkbG9ja3MgY2F1c2VkIGJ5IHJlLXNlZWRpbmcgdGhlbiBPcGVuU1NMCisgIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBvbiBmb3JrKCkuCisKKy0gSXNzdWUgIzE2MDM3OiBIVFRQTWVzc2FnZS5yZWFkaGVhZGVycygpIHJhaXNlcyBhbiBIVFRQRXhjZXB0aW9uIHdoZW4gbW9yZSB0aGFuCisgIDEwMCBoZWFkZXJzIGFyZSByZWFkLiAgQWRhcHRlZCBmcm9tIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCisKKy0gSXNzdWUgIzE2MDQwOiBDVkUtMjAxMy0xNzUyOiBubnRwbGliOiBMaW1pdCBtYXhpbXVtIGxpbmUgbGVuZ3RocyB0byAyMDQ4IHRvCisgIHByZXZlbnQgcmVhZGxpbmUoKSBjYWxscyBmcm9tIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuICBQYXRjaCBieSBKeXJraQorICBQdWxsaWFpbmVuLgorCistIElzc3VlICMxNjA0MTogQ1ZFLTIwMTMtMTc1MjogcG9wbGliOiBMaW1pdCBtYXhpbXVtIGxpbmUgbGVuZ3RocyB0byAyMDQ4IHRvCisgIHByZXZlbnQgcmVhZGxpbmUoKSBjYWxscyBmcm9tIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuICBQYXRjaCBieSBKeXJraQorICBQdWxsaWFpbmVuLgorCistIElzc3VlICMxNzk5NzogQ2hhbmdlIGJlaGF2aW9yIG9mIGBgc3NsLm1hdGNoX2hvc3RuYW1lKClgYCB0byBmb2xsb3cgUkZDIDYxMjUsCisgIGZvciBzZWN1cml0eSByZWFzb25zLiAgSXQgbm93IGRvZXNuJ3QgbWF0Y2ggbXVsdGlwbGUgd2lsZGNhcmRzIG5vciB3aWxkY2FyZHMKKyAgaW5zaWRlIElETiBmcmFnbWVudHMuCisKKy0gSXNzdWUgIzE2MDM5OiBDVkUtMjAxMy0xNzUyOiBDaGFuZ2UgdXNlIG9mIHJlYWRsaW5lIGluIGltYXBsaWIgbW9kdWxlIHRvIGxpbWl0CisgIGxpbmUgbGVuZ3RoLiAgUGF0Y2ggYnkgRW1pbCBMaW5kLgorCistIElzc3VlICMxOTMzMDogdGhlIHVubmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlCisgIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbmV3IGNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0IGFuZAorICBjb250ZXh0bGliLnN1cHByZXNzIGNvbnRleHQgbWFuYWdlcnMsIHdoaWNoIGFsc28gZW5zdXJlcyB0aGV5IHByb3ZpZGUKKyAgcmVhc29uYWJsZSBoZWxwKCkgb3V0cHV0IG9uIGluc3RhbmNlcworCistIElzc3VlICMxOTM5MzogRml4IHN5bXRhYmxlLnN5bXRhYmxlIGZ1bmN0aW9uIHRvIG5vdCBiZSBjb25mdXNlZCB3aGVuIHRoZXJlIGFyZQorICBmdW5jdGlvbnMgb3IgY2xhc3NlcyBuYW1lZCAidG9wIi4KKworLSBJc3N1ZSAjMTg2ODU6IFJlc3RvcmUgcmUgcGVyZm9ybWFuY2UgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgorCistIElzc3VlICMxOTMzOTogdGVsbmV0bGliIG1vZHVsZSBpcyBub3cgdXNpbmcgdGltZS5tb25vdG9uaWMoKSB3aGVuIGF2YWlsYWJsZQorICB0byBjb21wdXRlIHRpbWVvdXQuCisKKy0gSXNzdWUgIzE5Mzk5OiBmaXggc3BvcmFkaWMgdGVzdF9zdWJwcm9jZXNzIGZhaWx1cmUuCisKKy0gSXNzdWUgIzEzMjM0OiBGaXggb3MubGlzdGRpciB0byB3b3JrIHdpdGggZXh0ZW5kZWQgcGF0aHMgb24gV2luZG93cy4KKyAgUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCisKKy0gSXNzdWUgIzE5Mzc1OiBUaGUgc2l0ZSBtb2R1bGUgYWRkaW5nIGEgInNpdGUtcHl0aG9uIiBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsCisgIGlmIGl0IGV4aXN0cywgaXMgbm93IGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE5Mzc5OiBMYXppbHkgaW1wb3J0IGxpbmVjYWNoZSBpbiB0aGUgd2FybmluZ3MgbW9kdWxlLCB0byBtYWtlCisgIHN0YXJ0dXAgd2l0aCB3YXJuaW5ncyBmYXN0ZXIgdW50aWwgYSB3YXJuaW5nIGdldHMgcHJpbnRlZC4KKworLSBJc3N1ZSAjMTkyODg6IEZpeGVkIHRoZSAiaW4iIG9wZXJhdG9yIG9mIGRibS5nbnUgZGF0YWJhc2VzIGZvciBzdHJpbmcKKyAgYXJndW1lbnQuICBPcmlnaW5hbCBwYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KKworLSBJc3N1ZSAjMTkyODc6IEZpeGVkIHRoZSAiaW4iIG9wZXJhdG9yIG9mIGRibS5uZGJtIGRhdGFiYXNlcyBmb3Igc3RyaW5nCisgIGFyZ3VtZW50LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCisKKy0gSXNzdWUgIzE5MzI3OiBGaXhlZCB0aGUgd29ya2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdG9vIGJpZyBjaGFyc2V0LgorCistIElzc3VlICMxNzQwMDogTmV3ICdpc19nbG9iYWwnIGF0dHJpYnV0ZSBmb3IgaXBhZGRyZXNzIHRvIHRlbGwgaWYgYW4gYWRkcmVzcworICBpcyBhbGxvY2F0ZWQgYnkgSUFOQSBmb3IgZ2xvYmFsIG9yIHByaXZhdGUgbmV0d29ya3MuCisKKy0gSXNzdWUgIzE5MzUwOiBJbmNyZWFzaW5nIHRoZSB0ZXN0IGNvdmVyYWdlIG9mIG1hY3VybDJwYXRoLiBQYXRjaCBieSBDb2xpbgorICBXaWxsaWFtcy4KKworLSBJc3N1ZSAjMTkzNjU6IE9wdGltaXplZCB0aGUgcGFyc2luZyBvZiBsb25nIHJlcGxhY2VtZW50IHN0cmluZyBpbiByZS5zdWIqKCkKKyAgZnVuY3Rpb25zLgorCistIElzc3VlICMxOTM1MjogRml4IHVuaXR0ZXN0IGRpc2NvdmVyeSB3aGVuIGEgbW9kdWxlIGNhbiBiZSByZWFjaGVkCisgIHRocm91Z2ggc2V2ZXJhbCBwYXRocyAoZS5nLiB1bmRlciBEZWJpYW4vVWJ1bnR1IHdpdGggdmlydHVhbGVudikuCisKKy0gSXNzdWUgIzE1MjA3OiBGaXggbWltZXR5cGVzIHRvIHJlYWQgZnJvbSBjb3JyZWN0IHBhcnQgb2YgV2luZG93cyByZWdpc3RyeQorICBPcmlnaW5hbCBwYXRjaCBieSBEYXZlIENoYW1iZXJzCisKKy0gSXNzdWUgIzE2NTk1OiBBZGQgcHJsaW1pdCgpIHRvIHJlc291cmNlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTkzMjQ6IEV4cG9zZSBMaW51eC1zcGVjaWZpYyBjb25zdGFudHMgaW4gcmVzb3VyY2UgbW9kdWxlLgorCistIExvYWQgU1NMJ3MgZXJyb3Igc3RyaW5ncyBpbiBoYXNobGliLgorCistIElzc3VlICMxODUyNzogVXBncmFkZSBpbnRlcm5hbCBjb3B5IG9mIHpsaWIgdG8gMS4yLjguCisKKy0gSXNzdWUgIzE5Mjc0OiBBZGQgYSBmaWx0ZXJmdW5jIHBhcmFtZXRlciB0byBQeVppcEZpbGUud3JpdGVweS4KKworLSBJc3N1ZSAjODk2NDogZml4IHBsYXRmb3JtLl9zeXNfdmVyc2lvbiB0byBoYW5kbGUgSXJvblB5dGhvbiAyLjYrLgorICBQYXRjaCBieSBNYXJ0aW4gTWF0dXNpYWsuCisKKy0gSXNzdWUgIzE5NDEzOiBSZXN0b3JlIHByZS0zLjMgcmVsb2FkKCkgc2VtYW50aWNzIG9mIHJlLWZpbmRpbmcgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTg5NTg6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IganNvbi5sb2FkKHMpIHdoaWxlIHBhc3NpbmcgYSBzdHJpbmcKKyAgdGhhdCBzdGFydHMgd2l0aCBhIFVURi04IEJPTS4KKworLSBJc3N1ZSAjMTkzMDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IganNvbi5sb2FkKHMpIHdoaWxlIHBhc3Npbmcgb2JqZWN0cworICBvZiB0aGUgd3JvbmcgdHlwZS4KKworLSBJc3N1ZSAjMTYwMzg6IENWRS0yMDEzLTE3NTI6IGZ0cGxpYjogTGltaXQgYW1vdW50IG9mIGRhdGEgcmVhZCBieQorICBsaW1pdGluZyB0aGUgY2FsbCB0byByZWFkbGluZSgpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWljaGHFggorICBKYXN0cnrEmWJza2kgYW5kIEdpYW1wYW9sbyBSb2RvbGEuCisKKy0gSXNzdWUgIzE3MDg3OiBJbXByb3ZlZCB0aGUgcmVwciBmb3IgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIG9iamVjdHMuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxOTY2NDogdGVzdF91c2VyZGljdCdzIHJlcHIgdGVzdCBubyBsb25nZXIgZGVwZW5kcyBvbiB0aGUgb3JkZXIKKyAgb2YgZGljdCBlbGVtZW50cy4KKworLSBJc3N1ZSAjMTk0NDA6IENsZWFuIHVwIHRlc3RfY2FwaSBieSByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBfX2Z1dHVyZV9fCisgIGltcG9ydCwgY29udmVydGluZyBmcm9tIHRlc3RfbWFpbiB0byB1bml0dGVzdC5tYWluLCBhbmQgcnVubmluZyB0aGUKKyAgX3Rlc3RjYXBpIG1vZHVsZSB0ZXN0cyBhcyBzdWJUZXN0cyBvZiBhIHVuaXR0ZXN0IFRlc3RDYXNlIG1ldGhvZC4KKworLSBJc3N1ZSAjMTkzNzg6IHRoZSBtYWluIGRpcyBtb2R1bGUgdGVzdHMgYXJlIG5vdyBydW4gd2l0aCBib3RoIHN0ZG91dAorICByZWRpcmVjdGlvbiAqYW5kKiBwYXNzaW5nIGFuIGV4cGxpY2l0IGZpbGUgcGFyYW1ldGVyCisKKy0gSXNzdWUgIzE5Mzc4OiByZW1vdmVkIHRoZSBub3QtYWN0dWFsbHktaGVscGZ1bCBhc3NlcnRJbnN0cnVjdGlvbk1hdGNoZXMKKyAgYW5kIGFzc2VydEJ5dGVjb2RlRXhhY3RseU1hdGNoZXMgaGVscGVycyBmcm9tIGJ5dGVjb2RlX2hlbHBlcgorCistIElzc3VlICMxODcwMjogQWxsIHNraXBwZWQgdGVzdHMgbm93IHJlcG9ydGVkIGFzIHNraXBwZWQuCisKKy0gSXNzdWUgIzE5NDM5OiBpbnRlcnByZXRlciBlbWJlZGRpbmcgdGVzdHMgYXJlIG5vdyBleGVjdXRlZCBvbiBXaW5kb3dzCisgIChQYXRjaCBieSBaYWNoYXJ5IFdhcmUpCisKKy0gSXNzdWUgIzE5MDg1OiBBZGRlZCBiYXNpYyB0ZXN0cyBmb3IgYWxsIHRraW50ZXIgd2lkZ2V0IG9wdGlvbnMuCisKKy0gSXNzdWUgIzE5Mzg0OiBGaXggdGVzdF9weV9jb21waWxlIGZvciByb290IHVzZXIsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxODMyNjogQ2xhcmlmeSB0aGF0IGxpc3Quc29ydCdzIGFyZ3VtZW50cyBhcmUga2V5d29yZC1vbmx5LiAgQWxzbywKKyAgYXR0ZW1wdCB0byByZWR1Y2UgY29uZnVzaW9uIGluIHRoZSBnbG9zc2FyeSBieSBub3Qgc2F5aW5nIHRoZXJlIGFyZQorICBkaWZmZXJlbnQgInR5cGVzIiBvZiBhcmd1bWVudHMgYW5kIHBhcmFtZXRlcnMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxOTM1ODogIm1ha2UgY2xpbmljIiBub3cgcnVucyB0aGUgQXJndW1lbnQgQ2xpbmljIHByZXByb2Nlc3NvcgorICBvdmVyIGFsbCBDUHl0aG9uIHNvdXJjZSBmaWxlcy4KKworLSBVcGRhdGUgU1FMaXRlIHRvIDMuOC4xLCB4eiB0byA1LjAuNSwgYW5kIFRjbC9UayB0byA4LjYuMSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNjYzMjogRW5hYmxlIERFUCBhbmQgQVNMUiBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNzc5MTogRHJvcCBQUkVGSVggYW5kIEVYRUNfUFJFRklYIGRlZmluaXRpb25zIGZyb20gUEMvcHljb25maWcuaAorCistIEFkZCB3b3JrYXJvdW5kIGZvciBWUyAyMDEwIG5tYWtlIGNsZWFuIGlzc3VlLiBWUyAyMDEwIGRvZXNuJ3Qgc2V0IHVwIFBBVEgKKyAgZm9yIG5tYWtlLmV4ZSBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE5NTUwOiBJbXBsZW1lbnQgV2luZG93cyBpbnN0YWxsZXIgY2hhbmdlcyBvZiBQRVAgNDUzIChlbnN1cmVwaXApLgorCistIElzc3VlICMxOTUyMDogRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gdGhlIF9zaGEzIG1vZHVsZSBvbiAzMmJpdCBXaW5kb3dzLgorCistIElzc3VlICMxOTM1NjogQXZvaWQgdXNpbmcgYSBDIHZhcmlhYmxlZCBuYW1lZCAiX3NlbGYiLCBpdCdzIGEgcmVzZXJ2ZWQKKyAgd29yZCBpbiBzb21lIEMgY29tcGlsZXJzLgorCistIElzc3VlICMxNTc5MjogQ29ycmVjdCBidWlsZCBvcHRpb25zIG9uIFdpbjY0LiBQYXRjaCBieSBKZXJlbXkgS2xvdGguCisKKy0gSXNzdWUgIzE5MzczOiBBcHBseSB1cHN0cmVhbSBjaGFuZ2UgdG8gVGsgOC41LjE1IGZpeGluZyBPUyBYIDEwLjkKKyAgc2NyZWVuIHJlZnJlc2ggcHJvYmxlbSBmb3IgT1MgWCBpbnN0YWxsZXIgYnVpbGQuCisKKy0gSXNzdWUgIzE5NjQ5OiBPbiBPUyBYLCB0aGUgc2FtZSBzZXQgb2YgZmlsZSBuYW1lcyBhcmUgbm93IGluc3RhbGxlZAorICBpbiBiaW4gZGlyZWN0b3JpZXMgZm9yIGFsbCBjb25maWd1cmF0aW9uczogbm9uLWZyYW1ld29yayB2cyBmcmFtZXdvcmssCisgIGFuZCBzaW5nbGUgYXJjaCB2cyB1bml2ZXJzYWwgYnVpbGRzLiAgcHl0aG9ueC55LTMyIGlzIG5vdyBhbHdheXMKKyAgaW5zdGFsbGVkIGZvciA2NC1iaXQvMzItYml0IHVuaXZlcnNhbCBidWlsZHMuICBUaGUgb2Jzb2xldGUgYW5kCisgIHVuZG9jdW1lbnRlZCBweXRob253KiBzeW1saW5rcyBhcmUgbm8gbG9uZ2VyIGluc3RhbGxlZCBhbnl3aGVyZS4KKworLSBJc3N1ZSAjMTk1NTM6IFBFUCA0NTMgLSAibWFrZSBpbnN0YWxsIiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgbm93IGluc3RhbGwgb3IKKyAgdXBncmFkZSBwaXAgYnkgZGVmYXVsdCwgdXNpbmcgdGhlIGJ1bmRsZWQgcGlwIHByb3ZpZGVkIGJ5IHRoZSBuZXcgZW5zdXJlcGlwCisgIG1vZHVsZS4gIEEgbmV3IGNvbmZpZ3VyZSBvcHRpb24sIC0td2l0aC1lbnN1cmVwaXBbPXVwZ3JhZGV8aW5zdGFsbHxub10sIGlzCisgIGF2YWlsYWJsZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBlbnN1cmVwaXAgIi0tdXBncmFkZSIgb3B0aW9uLiAgVGhlIG9wdGlvbgorICBjYW4gYWxzbyBiZSBzZXQgd2l0aCAibWFrZSBbYWx0XWluc3RhbGwgRU5TVVJFUElQPVt1cGdyYWRlfGluc3RhbGx8bm9dIi4KKworLSBJc3N1ZSAjMTk1NTE6IFBFUCA0NTMgLSB0aGUgT1MgWCBpbnN0YWxsZXIgbm93IGluc3RhbGxzIHBpcCBieSBkZWZhdWx0LgorCistIFVwZGF0ZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgZm9yIE9TIFggaW5zdGFsbGVyczogeHogNS4wLjMgLT4gNS4wLjUsCisgIFNRTGl0ZSAzLjcuMTMgLT4gMy44LjEKKworLSBJc3N1ZSAjMTU2NjM6IFJldmVydCBPUyBYIGluc3RhbGxlciBidWlsdC1pbiBUY2wvVGsgc3VwcG9ydCBmb3IgMy40LjBiMS4KKyAgU29tZSB0aGlyZC1wYXJ0eSBwcm9qZWN0cywgc3VjaCBhcyBNYXRwbG90bGliIGFuZCBQSUwvUGlsbG93LAorICBkZXBlbmRlZCBvbiBiZWluZyBhYmxlIHRvIGJ1aWxkIHdpdGggVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluCisgIC9MaWJyYXJ5L0ZyYW1ld29ya3MuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxOTczMDogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBhbGwgdGhlIGV4aXN0aW5nIFB5QXJnCisgICJmb3JtYXQgdW5pdHMiIGFzIGxlZ2FjeSBjb252ZXJ0ZXJzLCBhcyB3ZWxsIGFzIHR3byBuZXcgZmVhdHVyZXM6CisgICJzZWxmIGNvbnZlcnRlcnMiIGFuZCB0aGUgInZlcnNpb24iIGRpcmVjdGl2ZS4KKworLSBJc3N1ZSAjMTk1NTI6IHB5dmVudiBub3cgYm9vdHN0cmFwcyBwaXAgaW50byB2aXJ0dWFsIGVudmlyb25tZW50cyBieQorICBkZWZhdWx0IChwYXNzIC0td2l0aG91dC1waXAgdG8gcmVxdWVzdCB0aGUgb2xkIGJlaGF2aW91cikKKworLSBJc3N1ZSAjMTkzOTA6IEFyZ3VtZW50IENsaW5pYyBubyBsb25nZXIgYWNjZXB0cyBtYWxmb3JtZWQgUHl0aG9uCisgIGFuZCBDIGlkcy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCBBbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDEzLTEwLTIwCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxOTMwMTogR2l2ZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdGhhdCBhcmUgZXhwbGljaXRseSBtYXJrZWQgZ2xvYmFsIGEKKyAgZ2xvYmFsIHF1YWxuYW1lLgorCistIElzc3VlICMxOTI3OTogVVRGLTcgZGVjb2RlciBubyBsb25nZXIgcHJvZHVjZXMgaWxsZWdhbCBzdHJpbmdzLgorCistIElzc3VlICMxNjYxMjogQWRkICJBcmd1bWVudCBDbGluaWMiLCBhIGNvbXBpbGUtdGltZSBwcmVwcm9jZXNzb3IgZm9yCisgIEMgZmlsZXMgdG8gZ2VuZXJhdGUgYXJndW1lbnQgcGFyc2luZyBjb2RlLiAgKFNlZSBQRVAgNDM2LikKKworLSBJc3N1ZSAjMTg4MTA6IFNoaWZ0IHN0YXQgY2FsbHMgaW4gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIHN1Y2ggdGhhdAorICB0aGUgY29kZSBpcyBvcHRpbWlzdGljIHRoYXQgaWYgc29tZXRoaW5nIGV4aXN0cyBpbiBhIGRpcmVjdG9yeSBuYW1lZCBleGFjdGx5CisgIGxpa2UgdGhlIHBvc3NpYmxlIHBhY2thZ2UgYmVpbmcgc2VhcmNoZWQgZm9yIHRoYXQgaXQncyBpbiBhY3R1YWxpdHkgYQorICBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE4NDE2OiBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIgbm93IHRyZWF0cyAnJyBhcyB0aGUgY3dkIGFuZAorICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgbm8gbG9uZ2VyIHNwZWNpYWwtY2FzZXMgJycgdG8gJy4nLiBUaGlzIGxlYWRzCisgIHRvIG1vZHVsZXMgaW1wb3J0ZWQgZnJvbSBjd2QgdG8gbm93IHBvc3Nlc3MgYW4gYWJzb2x1dGUgZmlsZSBwYXRoIGZvcgorICBfX2ZpbGVfXyAodGhpcyBkb2VzIG5vdCBhZmZlY3QgbW9kdWxlcyBzcGVjaWZpZWQgYnkgcGF0aCBvbiB0aGUgQ0xJIGJ1dCBpdAorICBkb2VzIGFmZmVjdCAtbS9ydW5weSkuIEl0IGFsc28gYWxsb3dzIEZpbGVGaW5kZXIgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGJ5IG5vdAorICBoYXZpbmcgYW4gZWRnZSBjYXNlLgorCistIElzc3VlICM0NTU1OiBBbGwgZXhwb3J0ZWQgQyBzeW1ib2xzIGFyZSBub3cgcHJlZml4ZWQgd2l0aCBlaXRoZXIKKyAgIlB5IiBvciAiX1B5Ii4KKworLSBJc3N1ZSAjMTkyMTk6IFNwZWVkIHVwIG1hcnNoYWwubG9hZHMoKSwgYW5kIG1ha2UgcHljIGZpbGVzIHNsaWdodGx5CisgICg1JSB0byAxMCUpIHNtYWxsZXIuCisKKy0gSXNzdWUgIzE5MjIxOiBVcGdyYWRlIFVuaWNvZGUgZGF0YWJhc2UgdG8gdmVyc2lvbiA2LjMuMC4KKworLSBJc3N1ZSAjMTY3NDI6IFRoZSByZXN1bHQgb2YgdGhlIEMgY2FsbGJhY2sgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBtdXN0CisgIG5vdyBiZSBhIHN0cmluZyBhbGxvY2F0ZWQgYnkgUHlNZW1fUmF3TWFsbG9jKCkgb3IgUHlNZW1fUmF3UmVhbGxvYygpIChvciBOVUxMCisgIGlmIGFuIGVycm9yIG9jY3VycmVkKSwgaW5zdGVhZCBvZiBhIHN0cmluZyBhbGxvY2F0ZWQgYnkgUHlNZW1fTWFsbG9jKCkgb3IKKyAgUHlNZW1fUmVhbGxvYygpLgorCistIElzc3VlICMxOTE5OTogUmVtb3ZlIGBgUHlUaHJlYWRTdGF0ZS50aWNrX2NvdW50ZXJgYCBmaWVsZAorCistIEZpeCBtYWNybyBleHBhbnNpb24gb2YgX1B5RXJyX09DQ1VSUkVEKCksIGFuZCBtYWtlIHN1cmUgdG8gdXNlIGl0IGluIGF0CisgIGxlYXN0IG9uZSBwbGFjZSBzbyBhcyB0byBhdm9pZCByZWdyZXNzaW9ucy4KKworLSBJc3N1ZSAjMTkwODc6IEltcHJvdmUgYnl0ZWFycmF5IGFsbG9jYXRpb24gaW4gb3JkZXIgdG8gYWxsb3cgY2hlYXAgcG9wcGluZworICBvZiBkYXRhIGF0IHRoZSBmcm9udCAoc2xpY2UgZGVsZXRpb24pLgorCistIElzc3VlICMxOTAxNDogbWVtb3J5dmlldy5jYXN0KCkgaXMgbm93IGFsbG93ZWQgb24gemVyby1sZW5ndGggdmlld3MuCisKKy0gSXNzdWUgIzE4NjkwOiBtZW1vcnl2aWV3IGlzIG5vdyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQgd2l0aAorICBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UKKworLSBJc3N1ZSAjMTkwNzg6IG1lbW9yeXZpZXcgbm93IGNvcnJlY3RseSBzdXBwb3J0cyB0aGUgcmV2ZXJzZWQgYnVpbHRpbgorICAoUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhKQorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE3NDU3OiB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSBub3cgd29ya3Mgd2l0aCBuYW1lc3BhY2UgcGFja2FnZXMuCisgIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMTgyMzU6IEZpeCB0aGUgc3lzY29uZmlnIHZhcmlhYmxlcyBMRFNIQVJFRCBhbmQgQkxEU0hBUkVEIHVuZGVyIEFJWC4KKyAgUGF0Y2ggYnkgRGF2aWQgRWRlbHNvaG4uCisKKy0gSXNzdWUgIzE4NjA2OiBBZGQgdGhlIG5ldyAic3RhdGlzdGljcyIgbW9kdWxlIChQRVAgNDUwKS4gIENvbnRyaWJ1dGVkCisgIGJ5IFN0ZXZlbiBEJ0FwcmFuby4KKworLSBJc3N1ZSAjMTI4NjY6IFRoZSBhdWRpb29wIG1vZHVsZSBub3cgc3VwcG9ydHMgMjQtYml0IHNhbXBsZXMuCisKKy0gSXNzdWUgIzE5MjU0OiBQcm92aWRlIGFuIG9wdGltaXplZCBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgcGJrZGYyX2htYWMuCisKKy0gSXNzdWVzICMxOTIwMSwgSXNzdWUgIzE5MjIyLCBJc3N1ZSAjMTkyMjM6IEFkZCAieCIgbW9kZSAoZXhjbHVzaXZlIGNyZWF0aW9uKQorICBpbiBvcGVuaW5nIGZpbGUgdG8gYnoyLCBnemlwIGFuZCBsem1hIG1vZHVsZXMuIFBhdGNoZXMgYnkgVGltIEhlYW5leSBhbmQKKyAgVmFqcmFza3kgS29rLgorCistIEZpeCBhIHJlZmVyZW5jZSBjb3VudCBsZWFrIGluIF9zcmUuCisKKy0gSXNzdWUgIzE5MjYyOiBJbml0aWFsIGNoZWNrIGluIG9mIHRoZSAnYXN5bmNpbycgcGFja2FnZSAoYS5rLmEuIFR1bGlwLAorICBhLmsuYS4gUEVQIDMxNTYpLiAgVGhlcmUgYXJlIG5vIGRvY3MgeWV0LCBhbmQgdGhlIFBFUCBpcyBzbGlnaHRseQorICBvdXQgb2YgZGF0ZSB3aXRoIHRoZSBjb2RlLiAgVGhpcyBtb2R1bGUgd2lsbCBoYXZlICpwcm92aXNpb25hbCogc3RhdHVzCisgIGluIFB5dGhvbiAzLjQuCisKKy0gSXNzdWUgIzE5Mjc2OiBGaXhlZCB0aGUgd2F2ZSBtb2R1bGUgb24gNjQtYml0IGJpZy1lbmRpYW4gcGxhdGZvcm1zLgorCistIElzc3VlICMxOTI2NjogUmVuYW1lIHRoZSBuZXctaW4tMy40IGBgY29udGV4dGxpYi5pZ25vcmVgYCBjb250ZXh0IG1hbmFnZXIKKyAgdG8gYGBjb250ZXh0bGliLnN1cHByZXNzYGAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggZXhpc3RpbmcKKyAgZGVzY3JpcHRpb25zIG9mIHRoYXQgb3BlcmF0aW9uIGVsc2V3aGVyZSBpbiB0aGUgbGFuZ3VhZ2UgYW5kIHN0YW5kYXJkCisgIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiAoUGF0Y2ggYnkgWmVybyBQaXJhZXVzKS4KKworLSBJc3N1ZSAjMTg4OTE6IENvbXBsZXRlZCB0aGUgbmV3IGVtYWlsIHBhY2thZ2UgKHByb3Zpc2lvbmFsKSBBUEkgYWRkaXRpb25zCisgIGJ5IGFkZGluZyBuZXcgY2xhc3NlcyBFbWFpbE1lc3NhZ2UsIE1JTUVQYXJ0LCBhbmQgQ29udGVudE1hbmFnZXIuCisKKy0gSXNzdWUgIzE4MjgxOiBVbnVzZWQgc3RhdCBjb25zdGFudHMgcmVtb3ZlZCBmcm9tIGB0YXJmaWxlYC4KKworLSBJc3N1ZSAjMTg5OTk6IE11bHRpcHJvY2Vzc2luZyBub3cgc3VwcG9ydHMgJ2NvbnRleHRzJyB3aXRoIHRoZSBzYW1lIEFQSQorICBhcyB0aGUgbW9kdWxlLCBidXQgYm91bmQgdG8gc3BlY2lmaWVkIHN0YXJ0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzE4NDY4OiBUaGUgcmUuc3BsaXQsIHJlLmZpbmRhbGwsIGFuZCByZS5zdWIgZnVuY3Rpb25zIGFuZCB0aGUgZ3JvdXAoKQorICBhbmQgZ3JvdXBzKCkgbWV0aG9kcyBvZiBtYXRjaCBvYmplY3Qgbm93IGFsd2F5cyByZXR1cm4gYSBzdHJpbmcgb3IgYSBieXRlcworICBvYmplY3QuCisKKy0gSXNzdWUgIzE4NzI1OiBUaGUgdGV4dHdyYXAgbW9kdWxlIG5vdyBzdXBwb3J0cyB0cnVuY2F0aW5nIG11bHRpbGluZSB0ZXh0LgorCistIElzc3VlICMxODc3NjogYXRleGl0IGNhbGxiYWNrcyBub3cgZGlzcGxheSB0aGVpciBmdWxsIHRyYWNlYmFjayB3aGVuIHRoZXkKKyAgcmFpc2UgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNzgyNzogQWRkIHRoZSBtaXNzaW5nIGRvY3VtZW50YXRpb24gZm9yIGBgY29kZWNzLmVuY29kZWBgIGFuZAorICBgYGNvZGVjcy5kZWNvZGVgYC4KKworLSBJc3N1ZSAjMTkyMTg6IFJlbmFtZSBjb2xsZWN0aW9ucy5hYmMgdG8gX2NvbGxlY3Rpb25zX2FiYyBpbiBvcmRlciB0bworICBzcGVlZCB1cCBpbnRlcnByZXRlciBzdGFydC4KKworLSBJc3N1ZSAjMTg1ODI6IEFkZCAncGJrZGYyX2htYWMnIHRvIHRoZSBoYXNobGliIG1vZHVsZS4gSXQgaW1wbGVtZW50cyBQS0NTIzUKKyAgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb25zIHdpdGggSE1BQyBhcyBwc2V1ZG9yYW5kb20gZnVuY3Rpb24uCisKKy0gSXNzdWUgIzE5MTMxOiBUaGUgYWlmYyBtb2R1bGUgbm93IGNvcnJlY3RseSByZWFkcyBhbmQgd3JpdGVzIHNhbXB3aWR0aCBvZgorICBjb21wcmVzc2VkIHN0cmVhbXMuCisKKy0gSXNzdWUgIzE5MjA5OiBSZW1vdmUgaW1wb3J0IG9mIGNvcHlyZWcgZnJvbSB0aGUgb3MgbW9kdWxlIHRvIHNwZWVkIHVwCisgIGludGVycHJldGVyIHN0YXJ0dXAuIHN0YXRfcmVzdWx0IGFuZCBzdGF0dmZzX3Jlc3VsdCBhcmUgbm93IGhhcmQtY29kZWQgdG8KKyAgcmVzaWRlIGluIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzE5MjA1OiBEb24ndCBpbXBvcnQgdGhlICdyZScgbW9kdWxlIGluIHNpdGUgYW5kIHN5c2NvbmZpZyBtb2R1bGUgdG8KKyAgc3BlZWQgdXAgaW50ZXJwcmV0ZXIgc3RhcnQuCisKKy0gSXNzdWUgIzk1NDg6IEFkZCBhIG1pbmltYWwgIl9ib290bG9jYWxlIiBtb2R1bGUgdGhhdCBpcyBpbXBvcnRlZCBieSB0aGUKKyAgX2lvIG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBmdWxsIGxvY2FsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzE4NzY0OiBSZW1vdmUgdGhlICdwcmludCcgYWxpYXMgZm9yIHRoZSBQREIgJ3AnIGNvbW1hbmQgc28gdGhhdCBpdCBubworICBsb25nZXIgc2hhZG93cyB0aGUgcHJpbnQgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzE5MTU4OiBBIHJhcmUgcmFjZSBpbiBCb3VuZGVkU2VtYXBob3JlIGNvdWxkIGFsbG93IC5yZWxlYXNlKCkgdG9vCisgIG9mdGVuLgorCistIElzc3VlICMxNTgwNTogQWRkIGNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0KCkuCisKKy0gSXNzdWUgIzE4NzE2OiBEZXByZWNhdGUgdGhlIGZvcm1hdHRlciBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNzEyOiAydG8zIGhhcyBhIG5ldyAiYXNzZXJ0cyIgZml4ZXIgdGhhdCByZXBsYWNlcyBkZXByZWNhdGVkIG5hbWVzCisgIG9mIHVuaXR0ZXN0IG1ldGhvZHMgKGUuZy4gZmFpbFVubGVzc0VxdWFsIC0+IGFzc2VydEVxdWFsKS4KKworLSBJc3N1ZSAjMTgwMzc6IDJ0bzMgbm93IGVzY2FwZXMgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGluIG5hdGl2ZSBzdHJpbmdzLgorCistIElzc3VlICMxNzgzOTogYmFzZTY0LmRlY29kZWJ5dGVzIGFuZCBiYXNlNjQuZW5jb2RlYnl0ZXMgbm93IGFjY2VwdCBhbnkKKyAgb2JqZWN0IHRoYXQgZXhwb3J0cyBhIDEgZGltZW5zaW9uYWwgYXJyYXkgb2YgYnl0ZXMgKHRoaXMgbWVhbnMgdGhlIHNhbWUKKyAgaXMgbm93IGFsc28gdHJ1ZSBmb3IgYmFzZTY0X2NvZGVjKQorCistIElzc3VlICMxOTEzMjogVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIGNvbXBhY3QgbW9kZS4KKworLSBJc3N1ZSAjMTkxMzc6IFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBjb3JyZWN0bHkgZm9ybWF0cyBpbnN0YW5jZXMgb2Ygc2V0IGFuZAorICBmcm96ZW5zZXQgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTAwNDI6IGZ1bmN0b29scy50b3RhbF9vcmRlcmluZyBub3cgY29ycmVjdGx5IGhhbmRsZXMKKyAgTm90SW1wbGVtZW50ZWQgYmVpbmcgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgY29tcGFyaXNvbiBmdW5jdGlvbiAoUGF0Y2gKKyAgYnkgS2F0aWUgTWlsbGVyKQorCistIElzc3VlICMxOTA5MjogY29udGV4dGxpYi5FeGl0U3RhY2sgbm93IGNvcnJlY3RseSByZXJhaXNlcyBleGNlcHRpb25zCisgIGZyb20gdGhlIF9fZXhpdF9fIGNhbGxiYWNrcyBvZiBpbm5lciBjb250ZXh0IG1hbmFnZXJzIChQYXRjaCBieSBIcnZvamUKKyAgTmlrxaFpxIcpCisKKy0gSXNzdWUgIzEyNjQxOiBBdm9pZCBwYXNzaW5nICItbW5vLWN5Z3dpbiIgdG8gdGhlIG1pbmd3MzIgY29tcGlsZXIsIGV4Y2VwdAorICB3aGVuIG5lY2Vzc2FyeS4gIFBhdGNoIGJ5IE9zY2FyIEJlbmphbWluLgorCistIElzc3VlICM1ODQ1OiBJbiBzaXRlLnB5LCBvbmx5IGxvYWQgcmVhZGxpbmUgaGlzdG9yeSBmcm9tIH4vLnB5dGhvbl9oaXN0b3J5CisgIGlmIG5vIGhpc3RvcnkgaGFzIGJlZW4gcmVhZCBhbHJlYWR5LiAgVGhpcyBhdm9pZHMgZG91YmxlIHdyaXRlcyB0byB0aGUKKyAgaGlzdG9yeSBmaWxlIGF0IHNodXRkb3duLgorCistIFByb3Blcmx5IGluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBhIFNTTCBvYmplY3QgYWZ0ZXIgYWxsb2NhdGlvbi4KKworLSBJc3N1ZSAjMTkwOTU6IFNTTFNvY2tldC5nZXRwZWVyY2VydCgpIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIHRoZQorICBTU0wgaGFuZHNoYWtlIGhhc24ndCBiZWVuIGRvbmUuCisKKy0gSXNzdWUgIzQzNjY6IEZpeCBidWlsZGluZyBleHRlbnNpb25zIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiAtLWVuYWJsZS1zaGFyZWQKKyAgaXMgdXNlZC4KKworLSBJc3N1ZSAjMTkwMzA6IEZpeGVkIGBpbnNwZWN0LmdldG1lbWJlcnNgIGFuZCBgaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRyc2AKKyAgdG8gYXR0ZW1wdCBhY3RpdmF0aW5nIGRlc2NyaXB0b3JzIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYSBfX2RpY3RfXyBzZWFyY2gKKyAgZm9yIGZhdWx0eSBkZXNjcmlwdG9ycy4gIGBpbnNwZWN0LmNsYXNzaWZ5X2NsYXNzX2F0dHJzYCBubyBsb25nZXIgcmV0dXJucworICBBdHRyaWJ1dGVzIHdob3NlIGhvbWUgY2xhc3MgaXMgTm9uZS4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE3NzI2NzM6IFRoZSB0eXBlIG9mIGBjaGFyKmAgYXJndW1lbnRzIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuCisKKy0gSXNzdWUgIzE2MTI5OiBBZGRlZCBhIGBQeV9TZXRTdGFuZGFyZFN0cmVhbUVuY29kaW5nYCBwcmUtaW5pdGlhbGl6YXRpb24gQVBJCisgIHRvIGFsbG93IGVtYmVkZGluZyBhcHBsaWNhdGlvbnMgbGlrZSBCbGVuZGVyIHRvIGZvcmNlIGEgcGFydGljdWxhcgorICBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHN0YW5kYXJkIElPIHN0cmVhbXMgKGluaXRpYWwgcGF0Y2ggYnkKKyAgQmFzdGllbiBNb250YWduZSkKKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE5Mjc1OiBGaXggdGVzdF9zaXRlIG9uIEFNRDY0IFNub3cgTGVvcGFyZAorCistIElzc3VlICMxNDQwNzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IGluIHRlc3RfY29uY3VycmVudF9mdXR1cmVzLgorCistIElzc3VlICMxODkxOTogVW5pZmllZCBhbmQgZXh0ZW5kZWQgdGVzdHMgZm9yIGF1ZGlvIG1vZHVsZXM6IGFpZmMsIHN1bmF1IGFuZAorICB3YXZlLgorCistIElzc3VlICMxODcxNDogQWRkZWQgdGVzdHMgZm9yIGBgcGRiLmZpbmRfZnVuY3Rpb24oKWBgLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE4NzU4OiBGaXhlZCBhbmQgaW1wcm92ZWQgY3Jvc3MtcmVmZXJlbmNlcy4KKworLSBJc3N1ZSAjMTg5NzI6IE1vZGVybml6ZSBlbWFpbCBleGFtcGxlcyBhbmQgdXNlIHRoZSBhcmdwYXJzZSBtb2R1bGUgaW4gdGhlbS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE5MTMwOiBDb3JyZWN0IFBDYnVpbGQvcmVhZG1lLnR4dCwgUHl0aG9uIDMuMyBhbmQgMy40IHJlcXVpcmUgVlMgMjAxMC4KKworLSBJc3N1ZSAjMTU2NjM6IFVwZGF0ZSBPUyBYIDEwLjYrIGluc3RhbGxlciB0byB1c2UgVGNsL1RrIDguNS4xNS4KKworLSBJc3N1ZSAjMTQ0OTk6IEZpeCBzZXZlcmFsIHByb2JsZW1zIHdpdGggT1MgWCB1bml2ZXJzYWwgYnVpbGQgc3VwcG9ydDoKKyAgICAxLiBwcGMgYXJjaCBkZXRlY3Rpb24gZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIGJyb2tlIHdpdGggWGNvZGUgNQorICAgIDIuIHBwYyBhcmNoIGRldGVjdGlvbiBpbiBjb25maWd1cmUgZGlkIG5vdCB3b3JrIG9uIE9TIFggMTAuNAorICAgIDMuIC1zeXNyb290IGFuZCAtYXJjaCBmbGFncyB3ZXJlIHVubmVjZXNzYXJpbHkgZHVwbGljYXRlZAorICAgIDQuIHRoZXJlIHdhcyBubyBvYnZpb3VzIHdheSB0byBjb25maWd1cmUgYW4gaW50ZWwtMzIgb25seSBidWlsZC4KKworLSBJc3N1ZSAjMTkwMTk6IENoYW5nZSB0aGUgT1MgWCBpbnN0YWxsZXIgYnVpbGQgc2NyaXB0IHRvIHVzZSBDRkxBR1MgaW5zdGVhZAorICBvZiBPUFQgZm9yIHNwZWNpYWwgYnVpbGQgb3B0aW9ucy4gIEJ5IHNldHRpbmcgT1BULCBzb21lIGNvbXBpbGVyLXNwZWNpZmljCisgIG9wdGlvbnMgbGlrZSAtZndyYXB2IHdlcmUgb3ZlcnJpZGRlbiBhbmQgdGh1cyBub3QgdXNlZCwgd2hpY2ggY291bGQgcmVzdWx0CisgIGluIGJyb2tlbiBpbnRlcnByZXRlcnMgd2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEFscGhhIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTMtMDktMjkKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE4ODE4OiBUaGUgImVuY29kaW5nbmFtZSIgcGFydCBvZiBQWVRIT05JT0VOQ09ESU5HIGlzIG5vdyBvcHRpb25hbC4KKworLSBJc3N1ZSAjMTkwOTg6IFByZXZlbnQgb3ZlcmZsb3cgaW4gdGhlIGNvbXBpbGVyIHdoZW4gdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBzZXQKKyAgYWJzdXJkbHkgaGlnaC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxODkyOTogYGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMoKWAgbm93IGNvcnJlY3RseSBmaW5kcyBjbGFzcworICBhdHRyaWJ1dGVzIHJldHVybmVkIGJ5IGBkaXIoKWAgdGhhdCBhcmUgbG9jYXRlZCBpbiB0aGUgbWV0YWNsYXNzLgorCistIElzc3VlICMxODk1MDogRml4IG1pc2NlbGxhbmVvdXMgYnVncyBpbiB0aGUgc3VuYXUgbW9kdWxlLgorICBBdV9yZWFkLnJlYWRmcmFtZXMoKSBub3cgdXBkYXRlcyBjdXJyZW50IGZpbGUgcG9zaXRpb24gYW5kIHJlYWRzIGNvcnJlY3QKKyAgbnVtYmVyIG9mIGZyYW1lcyBmcm9tIG11bHRpY2hhbm5lbCBzdHJlYW0uICBBdV93cml0ZS53cml0ZWZyYW1lc3JhdygpIG5vdworICBjb3JyZWN0bHkgdXBkYXRlcyBjdXJyZW50IGZpbGUgcG9zaXRpb24uICBBdV9yZWFkLmdldG5mcmFtZXMoKSBub3cgcmV0dXJucyBhbgorICBpbnRlZ2VyIChhcyBpbiBQeXRob24gMikuICBBdV9yZWFkIGFuZCBBdV93cml0ZSBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggZmlsZQorICBvYmplY3QgaWYgc3RhcnQgZmlsZSBwb3NpdGlvbiBpcyBub3QgYSB6ZXJvLgorCistIElzc3VlICMxODU5NDogVGhlIGZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpIHdhcyBuZXZlciB0YWtlbgorICBkdWUgdG8gYW4gb3Zlci1yZXN0cmljdGl2ZSB0eXBlIGNoZWNrLgorCistIElzc3VlICMxOTA1MzogWmlwRXh0RmlsZS5yZWFkMSgpIHdpdGggbm9uLXplcm8gYXJndW1lbnQgbm8gbW9yZSByZXR1cm5zIGVtcHR5CisgIGJ5dGVzIHVudGlsIGVuZCBvZiBkYXRhLgorCistIGxvZ2dpbmc6IGFkZGVkIHN1cHBvcnQgZm9yIFVuaXggZG9tYWluIHNvY2tldHMgdG8gU29ja2V0SGFuZGxlciBhbmQKKyAgRGF0YWdyYW1IYW5kbGVyLgorCistIElzc3VlICMxODk5NjogVGVzdENhc2UuYXNzZXJ0RXF1YWwoKSBub3cgbW9yZSBjbGV2ZXJseSBzaG9ydGVuIGRpZmZlcmluZworICBzdHJpbmdzIGluIGVycm9yIHJlcG9ydC4KKworLSBJc3N1ZSAjMTkwMzQ6IHJlcHIoKSBmb3IgdGtpbnRlci5UY2xfT2JqIG5vdyBleHBvc2VzIHN0cmluZyByZXBlcmVzZW50YXRpb24uCisKKy0gSXNzdWUgIzE4OTc4OiBgYHVybGxpYi5yZXF1ZXN0LlJlcXVlc3RgYCBub3cgYWxsb3dzIHRoZSBtZXRob2QgdG8gYmUKKyAgaW5kaWNhdGVkIG9uIHRoZSBjbGFzcyBhbmQgbm8gbG9uZ2VyIHNldHMgaXQgdG8gTm9uZSBpbiBgYF9faW5pdF9fYGAuCisKKy0gSXNzdWUgIzE4NjI2OiB0aGUgaW5zcGVjdCBtb2R1bGUgbm93IG9mZmVycyBhIGJhc2ljIGNvbW1hbmQgbGluZQorICBpbnRyb3NwZWN0aW9uIGludGVyZmFjZSAoSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEpCisKKy0gSXNzdWUgIzMwMTU6IEZpeGVkIHRraW50ZXIgd2l0aCB3YW50b2JqZWN0PUZhbHNlLiAgQW55IFRjbCBjb21tYW5kIGNhbGwKKyAgcmV0dXJuZWQgZW1wdHkgc3RyaW5nLgorCistIElzc3VlICMxOTAzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vdyBtYWtlcyBhbGwgY2hhbmdlcyB0byBtYWlsZGlyIGZpbGVzCisgIGJlZm9yZSBtb3ZpbmcgdGhlbSBpbnRvIHBsYWNlLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcworICB0aGF0IG1heSBiZSBhY2Nlc3NpbmcgdGhlIG1haWxkaXIgZGlyZWN0b3J5LgorCistIElzc3VlICMxNDk4NDogT24gUE9TSVggc3lzdGVtcywgd2hlbiBuZXRyYyBpcyBjYWxsZWQgd2l0aG91dCBhIGZpbGVuYW1lCisgIGFyZ3VtZW50IChhbmQgdGhlcmVmb3JlIGlzIHJlYWRpbmcgdGhlIHVzZXIncyAkSE9NRS8ubmV0cmMgZmlsZSksIGl0IG5vdworICBlbmZvcmNlcyB0aGUgc2FtZSBzZWN1cml0eSBydWxlcyBhcyB0eXBpY2FsIGZ0cCBjbGllbnRzOiB0aGUgLm5ldHJjIGZpbGUgbXVzdAorICBiZSBvd25lZCBieSB0aGUgdXNlciB0aGF0IG93bnMgdGhlIHByb2Nlc3MgYW5kIG11c3Qgbm90IGJlIHJlYWRhYmxlIGJ5IGFueQorICBvdGhlciB1c2VyLgorCistIElzc3VlICMxODg3MzogVGhlIHRva2VuaXplIG1vZHVsZSBub3cgZGV0ZWN0cyBQeXRob24gc291cmNlIGNvZGUgZW5jb2RpbmcKKyAgb25seSBpbiBjb21tZW50IGxpbmVzLgorCistIElzc3VlICMxNzc2NDogRW5hYmxlIGh0dHAuc2VydmVyIHRvIGJpbmQgdG8gYSB1c2VyIHNwZWNpZmllZCBuZXR3b3JrCisgIGludGVyZmFjZS4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1hbHRlIFN3YXJ0LgorCistIElzc3VlICMxODkzNzogQWRkIGFuIGFzc2VydExvZ3MoKSBjb250ZXh0IG1hbmFnZXIgdG8gdW5pdHRlc3QuVGVzdENhc2UKKyAgdG8gZW5zdXJlIHRoYXQgYSBibG9jayBvZiBjb2RlIGVtaXRzIGEgbWVzc2FnZSB1c2luZyB0aGUgbG9nZ2luZyBtb2R1bGUuCisKKy0gSXNzdWUgIzE3MzI0OiBGaXggaHR0cC5zZXJ2ZXIncyByZXF1ZXN0IGhhbmRsaW5nIGNhc2Ugb24gdHJhaWxpbmcgJy8nLiBQYXRjaAorICBjb250cmlidXRlZCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzE5MDE4OiBUaGUgaGVhcHEubWVyZ2UoKSBmdW5jdGlvbiBubyBsb25nZXIgc3VwcHJlc3NlcyBJbmRleEVycm9yCisgIGluIHRoZSB1bmRlcmx5aW5nIGl0ZXJhYmxlcy4KKworLSBJc3N1ZSAjMTg3ODQ6IFRoZSB1dWlkIG1vZHVsZSBubyBsb25nZXIgYXR0ZW1wdHMgdG8gbG9hZCBsaWJjIHZpYSBjdHlwZXMuQ0RMTAorICBpZiBhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZm91bmQgaW4gbGlidXVpZC4gIFBhdGNoIGJ5CisgIEV2Z2VueSBTb2xvZ3Vib3YuCisKKy0gVGhlIDplbnZ2YXI6YFBZVEhPTkZBVUxUSEFORExFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgbm93IG9ubHkgZW5hYmxlcyB0aGUKKyAgZmF1bHRoYW5kbGVyIG1vZHVsZSBpZiB0aGUgdmFyaWFibGUgaXMgbm9uLWVtcHR5LiBTYW1lIGJlaGF2aW91ciB0aGFuIG90aGVyCisgIHZhcmlhYmxlcyBsaWtlIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KKworLSBJc3N1ZSAjMTU2NTUyNTogTmV3IGZ1bmN0aW9uIGBgdHJhY2ViYWNrLmNsZWFyX2ZyYW1lc2BgIHdpbGwgY2xlYXIKKyAgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhbGwgdGhlIHN0YWNrIGZyYW1lcyByZWZlcmVuY2VkIGJ5IGEgdHJhY2ViYWNrCisgIG9iamVjdC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE4OTUyOiBGaXggcmVncmVzc2lvbiBpbiBzdXBwb3J0IGRhdGEgZG93bmxvYWRzIGludHJvZHVjZWQgd2hlbgorICB0ZXN0LnN1cHBvcnQgd2FzIGNvbnZlcnRlZCB0byBhIHBhY2thZ2UuIFJlZ3Jlc3Npb24gbm90aWNlZCBieSBaYWNoYXJ5CisgIFdhcmUuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTg4NzM6IElETEUgbm93IGRldGVjdHMgUHl0aG9uIHNvdXJjZSBjb2RlIGVuY29kaW5nIG9ubHkgaW4gY29tbWVudAorICBsaW5lcy4KKworLSBJc3N1ZSAjMTg5ODg6IFRoZSAiVGFiIiBrZXkgbm93IHdvcmtzIHdoZW4gYSB3b3JkIGlzIGFscmVhZHkgYXV0b2NvbXBsZXRlZC4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNzAwMzogVW5pZmllZCB0aGUgc2l6ZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgaW8gbW9kdWxlIHdpdGggY29tbW9uCisgIHByYWN0aWNlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTg1OTY6IFN1cHBvcnQgdGhlIHVzZSBvZiBhZGRyZXNzIHNhbml0eSBjaGVja2luZyBpbiByZWNlbnQgdmVyc2lvbnMKKyAgb2YgY2xhbmcgYW5kIEdDQyBieSBhcHByb3ByaWF0ZWx5IG1hcmtpbmcga25vd24gZmFsc2UgYWxhcm1zIGluIHRoZSBzbWFsbAorICBvYmplY3QgYWxsb2NhdG9yLiBQYXRjaCBjb250cmlidXRlZCBieSBEaGlydSBLaG9saWEuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxODg3MzogMnRvMyBhbmQgdGhlIGZpbmRub2NvZGluZy5weSBzY3JpcHQgbm93IGRldGVjdCBQeXRob24gc291cmNlCisgIGNvZGUgZW5jb2Rpbmcgb25seSBpbiBjb21tZW50IGxpbmVzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTMtMDktMDkKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE4OTQyOiBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSBvdXRwdXQgd2FzIGRhbWFnZWQgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTg1NzE6IEltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNDQ2OiBmaWxlIGRlc2NyaXB0b3JzIGFuZCBmaWxlCisgIGhhbmRsZXMgYXJlIG5vdyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZTsgYWRkIGZ1bmN0aW9ucworICBvcy5nZXQvc2V0X2luaGVyaXRhYmxlKCksIG9zLmdldC9zZXRfaGFuZGxlX2luaGVyaXRhYmxlKCkgYW5kCisgIHNvY2tldC5zb2NrZXQuZ2V0L3NldF9pbmhlcml0YWJsZSgpLgorCistIElzc3VlICMxMTYxOTogVGhlIHBhcnNlciBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG8gbm90IGVuY29kZSBVbmljb2RlCisgIGZpbGVuYW1lcyBhbnltb3JlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE4ODA4OiBOb24tZGFlbW9uIHRocmVhZHMgYXJlIG5vdyBhdXRvbWF0aWNhbGx5IGpvaW5lZCB3aGVuCisgIGEgc3ViLWludGVycHJldGVyIGlzIHNodXRkb3duIChpdCB3b3VsZCBwcmV2aW91c2x5IGR1bXAgYSBmYXRhbCBlcnJvcikuCisKKy0gUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBvbiBzeXN0ZW1zIHdpdGhvdXQgZ2V0Y3dkKCkuCisKKy0gSXNzdWUgIzE4Nzc0OiBSZW1vdmUgbGFzdCBiaXRzIG9mIEdOVSBQVEggdGhyZWFkIGNvZGUgYW5kIHRocmVhZF9wdGguaC4KKworLSBJc3N1ZSAjMTg3NzE6IEFkZCBvcHRpbWl6YXRpb24gdG8gc2V0IG9iamVjdCBsb29rdXBzIHRvIHJlZHVjZSB0aGUgY29zdAorICBvZiBoYXNoIGNvbGxpc2lvbnMuICBUaGUgY29yZSBpZGVhIGlzIHRvIGluc3BlY3QgYSBzZWNvbmQga2V5L2hhc2ggcGFpcgorICBmb3IgZWFjaCBjYWNoZSBsaW5lIHJldHJpZXZlZC4KKworLSBJc3N1ZSAjMTYxMDU6IFdoZW4gYSBzaWduYWwgaGFuZGxlciBmYWlscyB0byB3cml0ZSB0byB0aGUgZmlsZSBkZXNjcmlwdG9yCisgIHJlZ2lzdGVyZWQgd2l0aCBgYHNpZ25hbC5zZXRfd2FrZXVwX2ZkKClgYCwgcmVwb3J0IGFuIGV4Y2VwdGlvbiBpbnN0ZWFkCisgIG9mIGlnbm9yaW5nIHRoZSBlcnJvci4KKworLSBJc3N1ZSAjMTg3MjI6IFJlbW92ZSB1c2VzIG9mIHRoZSAicmVnaXN0ZXIiIGtleXdvcmQgaW4gQyBjb2RlLgorCistIElzc3VlICMxODY2NzogQWRkIG1pc3NpbmcgIkhBVkVfRkNIT1dOQVQiIHN5bWJvbCB0byBwb3NpeC5faGF2ZV9mdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE2NDk5OiBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgaXNvbGF0ZWQgbW9kZS4KKworLSBJc3N1ZSAjMTUzMDE6IFBhcnNpbmcgZmQsIHVpZCwgYW5kIGdpZCBwYXJhbWV0ZXJzIGZvciBidWlsdGlucworICBpbiBNb2R1bGVzL3Bvc2l4bW9kdWxlLmMgaXMgbm93IGZhciBtb3JlIHJvYnVzdC4KKworLSBJc3N1ZSAjMTgzNjg6IFB5T1NfU3RkaW9SZWFkbGluZSgpIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgd2hlbiByZWFsbG9jKCkKKyAgZmFpbC4KKworLSBJc3N1ZSAjMTc5MzQ6IEFkZCBhIGNsZWFyKCkgbWV0aG9kIHRvIGZyYW1lIG9iamVjdHMsIHRvIGhlbHAgY2xlYW4gdXAKKyAgZXhwZW5zaXZlIGRldGFpbHMgKGxvY2FsIHZhcmlhYmxlcykgYW5kIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMuCisKKy0gSXNzdWUgIzE4NzgwOiAlLWZvcm1hdHRpbmcgY29kZXMgJWQsICVpLCBhbmQgJXUgbm93IHRyZWF0IGludC1zdWJjbGFzc2VzCisgIGFzIGludCAoZGlzcGxheXMgdmFsdWUgb2YgaW50LXN1YmNsYXNzIGluc3RlYWQgb2Ygc3RyKGludC1zdWJjbGFzcykgKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxODgwODogVGhyZWFkLmpvaW4oKSBub3cgd2FpdHMgZm9yIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBzdGF0ZSB0bworICBiZSBkZXN0cm95ZWQgYmVmb3JlIHJldHVybmluZy4gIFRoaXMgcHJldmVudHMgdW5wcmVkaWN0YWJsZSBhYm9ydHMgaW4KKyAgUHlfRW5kSW50ZXJwcmV0ZXIoKSB3aGVuIHNvbWUgbm9uLWRhZW1vbiB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICMxODQ1ODogUHJldmVudCBjcmFzaGVzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbGliZWRpdC4gIEl0cyByZWFkbGluZQorICBlbXVsYXRpb24gaGFzIGNoYW5nZWQgZnJvbSAwLWJhc2VkIGluZGV4aW5nIHRvIDEtYmFzZWQgbGlrZSBnbnUgcmVhZGxpbmUuCisKKy0gSXNzdWUgIzE4ODUyOiBIYW5kbGUgY2FzZSBvZiBgYHJlYWRsaW5lLl9fZG9jX19gYCBiZWluZyBgYE5vbmVgYCBpbiB0aGUgbmV3CisgIHJlYWRsaW5lIGFjdGl2YXRpb24gY29kZSBpbiBgYHNpdGUucHlgYC4KKworLSBJc3N1ZSAjMTg2NzI6IEZpeGVkIGZvcm1hdCBzcGVjaWZpZXJzIGZvciBQeV9zc2l6ZV90IGluIGRlYnVnZ2luZyBvdXRwdXQgaW4KKyAgdGhlIF9zcmUgbW9kdWxlLgorCistIElzc3VlICMxODgzMDogaW5zcGVjdC5nZXRjbGFzc3RyZWUoKSBubyBsb25nZXIgcHJvZHVjZXMgZHVwbGljYXRlIGVudHJpZXMgZXZlbgorICB3aGVuIGlucHV0IGxpc3QgY29udGFpbnMgZHVwbGljYXRlcy4KKworLSBJc3N1ZSAjMTg4Nzg6IHN1bmF1Lm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuICBCYXNlZCBvbgorICBwYXRjaGVzIGJ5IENsYXVkaXUgUG9wYSBhbmQgUi4gRGF2aWQgTXVycmF5LgorCistIElzc3VlICMxODkwOTogRml4IF90a2ludGVyLnRrYXBwLmludGVycGFkZHIoKSBvbiBXaW5kb3dzIDY0LWJpdCwgZG9uJ3QgY2FzdAorICA2NC1iaXQgcG9pbnRlciB0byBsb25nICgzMiBiaXRzKS4KKworLSBJc3N1ZSAjMTg4NzY6IFRoZSBGaWxlSU8ubW9kZSBhdHRyaWJ1dGUgbm93IGJldHRlciByZWZsZWN0cyB0aGUgYWN0dWFsIG1vZGUKKyAgdW5kZXIgd2hpY2ggdGhlIGZpbGUgd2FzIG9wZW5lZC4gIFBhdGNoIGJ5IEVyaWsgQnJheS4KKworLSBJc3N1ZSAjMTY4NTM6IEFkZCBuZXcgc2VsZWN0b3JzIG1vZHVsZS4KKworLSBJc3N1ZSAjMTg4ODI6IEFkZCB0aHJlYWRpbmcubWFpbl90aHJlYWQoKSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTg5MDE6IFRoZSBzdW5hdSBnZXRwYXJhbXMgbWV0aG9kIG5vdyByZXR1cm5zIGEgbmFtZWR0dXBsZSByYXRoZXIgdGhhbgorICBhIHBsYWluIHR1cGxlLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxNzQ4NzogVGhlIHJlc3VsdCBvZiB0aGUgd2F2ZSBnZXRwYXJhbXMgbWV0aG9kIG5vdyBpcyBwaWNrbGVhYmxlIGFnYWluLgorICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE4NzU2OiBvcy51cmFuZG9tKCkgbm93IHVzZXMgYSBsYXppbHktb3BlbmVkIHBlcnNpc3RlbnQgZmlsZQorICBkZXNjcmlwdG9yLCBzbyBhcyB0byBhdm9pZCB1c2luZyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4KKyAgcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorCistIElzc3VlICMxODQxODogQWZ0ZXIgZm9yaygpLCByZWluaXQgYWxsIHRocmVhZHMgc3RhdGVzLCBub3Qgb25seSBhY3RpdmUgb25lcy4KKyAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCisKKy0gSXNzdWUgIzE3OTc0OiBTd2l0Y2ggdW5pdHRlc3QgZnJvbSB1c2luZyBnZXRvcHQgdG8gdXNpbmcgYXJncGFyc2UuCisKKy0gSXNzdWUgIzExNzk4OiBUZXN0U3VpdGUgbm93IGRyb3BzIHJlZmVyZW5jZXMgdG8gb3duIHRlc3RzIGFmdGVyIGV4ZWN1dGlvbi4KKworLSBJc3N1ZSAjMTY2MTE6IGh0dHAuY29va2llIG5vdyBjb3JyZWN0bHkgcGFyc2VzIHRoZSAnc2VjdXJlJyBhbmQgJ2h0dHBvbmx5JworICBjb29raWUgZmxhZ3MuCisKKy0gSXNzdWUgIzExOTczOiBGaXggYSBwcm9ibGVtIGluIGtldmVudC4gVGhlIGZsYWdzIGFuZCBmZmxhZ3MgZmllbGRzIGFyZSBub3cKKyAgcHJvcGVybHkgaGFuZGxlZCBhcyB1bnNpZ25lZC4KKworLSBJc3N1ZSAjMTg4MDc6IGBgcHl2ZW52YGAgbm93IHRha2VzIGEgLS1jb3BpZXMgYXJndW1lbnQgYWxsb3dpbmcgY29waWVzCisgIGluc3RlYWQgb2Ygc3ltbGlua3MgZXZlbiB3aGVyZSBzeW1saW5rcyBhcmUgYXZhaWxhYmxlIGFuZCB0aGUgZGVmYXVsdC4KKworLSBJc3N1ZSAjMTg1Mzg6IGBgcHl0aG9uIC1tIGRpc2BgIG5vdyB1c2VzIGFyZ3BhcnNlIGZvciBhcmd1bWVudCBwcm9jZXNzaW5nLgorICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5LgorCistIElzc3VlICMxODM5NDogQ2xvc2UgY2dpLkZpZWxkU3RvcmFnZSdzIG9wdGlvbmFsIGZpbGUuCisKKy0gSXNzdWUgIzE3NzAyOiBPbiBlcnJvciwgb3MuZW52aXJvbmIgbm93IHN1cHByZXNzZXMgdGhlIGV4Y2VwdGlvbiBjb250ZXh0CisgIHdoZW4gcmFpc2luZyBhIG5ldyBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBrZXkuCisKKy0gSXNzdWUgIzE2ODA5OiBGaXhlZCBzb21lIHRraW50ZXIgaW5jb21wYWJpbGl0aWVzIHdpdGggVGNsL1RrIDguNi4KKworLSBJc3N1ZSAjMTY4MDk6IFRraW50ZXIncyBzcGxpdGxpc3QoKSBhbmQgc3BsaXQoKSBtZXRob2RzIG5vdyBhY2NlcHQgVGNsX09iagorICBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTcyMTE6IFlpZWxkIGEgbmFtZWR0dXBsZSBpbiBwa2d1dGlsLgorICBQYXRjaCBieSBSYW1jaGFuZHJhIEFwdGUuCisKKy0gSXNzdWUgIzE4MzI0OiBzZXRfcGF5bG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmluYXJ5IGlucHV0LiAgVGhpcyBhbHNvCisgIHN1cGVyc2VkZXMgdGhlIHByZXZpb3VzIGZpeGVzIGZvciAjMTQzNjAsICMxNzE3LCBhbmQgIzE2NTY0LgorCistIElzc3VlICMxODc5NDogQWRkIGEgZmlsZW5vKCkgbWV0aG9kIGFuZCBhIGNsb3NlZCBhdHRyaWJ1dGUgdG8gc2VsZWN0LmRldnBvbGwKKyAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTcxMTk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gcHJvY2Vzc2luZyBsYXJnZSBzdHJpbmdzIGFuZCB0dXBsZXMKKyAgaW4gdGhlIHRraW50ZXIgbW9kdWxlLgorCistIElzc3VlICMxNTM1MjogUmVidWlsZCBmcm96ZW4gbW9kdWxlcyB3aGVuIG1hcnNoYWwuYyBpcyBjaGFuZ2VkLgorCistIElzc3VlICMxODc0NzogUmUtc2VlZCBPcGVuU1NMJ3MgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFmdGVyIGZvcmsuCisgIEEgcHRocmVhZF9hdGZvcmsoKSBwYXJlbnQgaGFuZGxlciBpcyB1c2VkIHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBwaWQsIHRpbWUKKyAgYW5kIHNvbWUgc3RhY2sgZGF0YS4KKworLSBJc3N1ZSAjODg2NTogQ29uY3VycmVudCBpbnZvY2F0aW9uIG9mIHNlbGVjdC5wb2xsLnBvbGwoKSBub3cgcmFpc2VzIGEKKyAgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IENocmlzdGlhbiBTY2h1YmVydC4KKworLSBJc3N1ZSAjMTg3Nzc6IFRoZSBzc2wgbW9kdWxlIG5vdyB1c2VzIHRoZSBuZXcgQ1JZUFRPX1RIUkVBRElEIEFQSSBvZgorICBPcGVuU1NMIDEuMC4wKyBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIENSWVBUTyBpZCBjYWxsYmFjayBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTg3Njg6IENvcnJlY3QgZG9jIHN0cmluZyBvZiBSQU5EX2VkZygpLiBQYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzE4MTc4OiBGaXggY3R5cGVzIG9uIEJTRC4gZGxtYWxsb2MuYyB3YXMgY29tcGlsZWQgdHdpY2Ugd2hpY2ggYnJva2UKKyAgbWFsbG9jIHdlYWsgc3ltYm9scy4KKworLSBJc3N1ZSAjMTg3MDk6IEZpeCBDVkUtMjAxMy00MjM4LiBUaGUgU1NMIG1vZHVsZSBub3cgaGFuZGxlcyBOVUxMIGJ5dGVzCisgIGluc2lkZSBzdWJqZWN0QWx0TmFtZSBjb3JyZWN0bHkuIEZvcm1lcmx5IHRoZSBtb2R1bGUgaGFzIHVzZWQgT3BlblNTTCdzCisgIEdFTkVSQUxfTkFNRV9wcmludCgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIEFTTi4xCisgIHN0cmluZ3MgZm9yIGBgcmZjODIyTmFtZWBgIChlbWFpbCksIGBgZE5TTmFtZWBgIChETlMpIGFuZAorICBgYHVuaWZvcm1SZXNvdXJjZUlkZW50aWZpZXJgYCAoVVJJKS4KKworLSBJc3N1ZSAjMTg3MDE6IFJlbW92ZSBzdXBwb3J0IG9mIG9sZCBDUHl0aG9uIHZlcnNpb25zICg8My4wKSBmcm9tIEMgY29kZS4KKworLSBJc3N1ZSAjMTg3NTY6IEltcHJvdmUgZXJyb3IgcmVwb3J0aW5nIGluIG9zLnVyYW5kb20oKSB3aGVuIHRoZSBmYWlsdXJlCisgIGlzIGR1ZSB0byBzb21ldGhpbmcgZWxzZSB0aGFuIC9kZXYvdXJhbmRvbSBub3QgZXhpc3RpbmcgKGZvciBleGFtcGxlLAorICBleGhhdXN0aW5nIHRoZSBmaWxlIGRlc2NyaXB0b3IgbGltaXQpLgorCistIElzc3VlICMxODY3MzogQWRkIE9fVE1QRklMRSB0byBvcyBtb2R1bGUuIE9fVE1QRklMRSByZXF1aXJlcyBMaW51eCBrZXJuZWwKKyAgMy4xMSBvciBuZXdlci4gSXQncyBvbmx5IGRlZmluZWQgb24gc3lzdGVtIHdpdGggMy4xMSB1YXBpIGhlYWRlcnMsIHRvby4KKworLSBJc3N1ZSAjMTg1MzI6IENoYW5nZSB0aGUgYnVpbHRpbiBoYXNoIGFsZ29yaXRobXMnIG5hbWVzIHRvIGxvd2VyIGNhc2UgbmFtZXMKKyAgYXMgcHJvbWlzZWQgYnkgaGFzaGxpYidzIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzg3MTM6IGFkZCBuZXcgc3B3YW4gYW5kIGZvcmtzZXJ2ZXIgc3RhcnQgbWV0aG9kcywgYW5kIG5ldyBmdW5jdGlvbnMKKyAgZ2V0X2FsbF9zdGFydF9tZXRob2RzLCBnZXRfc3RhcnRfbWV0aG9kLCBhbmQgc2V0X3N0YXJ0X21ldGhvZCwgdG8KKyAgbXVsdGlwcm9jZXNzaW5nLgorCistIElzc3VlICMxODQwNTogSW1wcm92ZSB0aGUgZW50cm9weSBvZiBjcnlwdC5ta3NhbHQoKS4KKworLSBJc3N1ZSAjMTIwMTU6IFRoZSB0ZW1wZmlsZSBtb2R1bGUgbm93IHVzZXMgYSBzdWZmaXggb2YgOCByYW5kb20gY2hhcmFjdGVycworICBpbnN0ZWFkIG9mIDYsIHRvIHJlZHVjZSB0aGUgcmlzayBvZiBmaWxlbmFtZSBjb2xsaXNpb24uIFRoZSBlbnRyb3B5IHdhcworICByZWR1Y2VkIHdoZW4gdXBwZXJjYXNlIGxldHRlcnMgd2VyZSByZW1vdmVkIGZyb20gdGhlIGNoYXJzZXQgdXNlZCB0byBnZW5lcmF0ZQorICByYW5kb20gY2hhcmFjdGVycy4KKworLSBJc3N1ZSAjMTg1ODU6IEFkZCA6ZnVuYzpgdGV4dHdyYXAuc2hvcnRlbmAgdG8gY29sbGFwc2UgYW5kIHRydW5jYXRlIGEKKyAgcGllY2Ugb2YgdGV4dCB0byBhIGdpdmVuIGxlbmd0aC4KKworLSBJc3N1ZSAjMTg1OTg6IFR3ZWFrIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIHRvCisgIGluY2x1ZGUgdGhlIG1vZHVsZSBuYW1lIHdoZW4gYSBrZXkgYXJndW1lbnQgaXMgbWlzc2luZy4KKworLSBJc3N1ZSAjMTkxNTE6IEZpeCBkb2NzdHJpbmcgYW5kIHVzZSBvZiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKSB0bworICByZWZsZWN0IDItdHVwbGVzLgorCistIElzc3VlICMxOTE1MjogQWRkIEV4dGVuc2lvbkZpbGVMb2FkZXIuZ2V0X2ZpbGVuYW1lKCkuCisKKy0gSXNzdWUgIzE4Njc2OiBDaGFuZ2UgJ3Bvc2l0aXZlJyB0byAnbm9uLW5lZ2F0aXZlJyBpbiBxdWV1ZS5weSBwdXQgYW5kIGdldAorICBkb2NzdHJpbmdzIGFuZCBWYWx1ZUVycm9yIG1lc3NhZ2VzLiBQYXRjaCBieSBaaG9uZ3l1ZSBMdW8KKworLSBGaXggcmVmY291bnRpbmcgaXNzdWUgd2l0aCBleHRlbnNpb24gdHlwZXMgaW4gdGtpbnRlci4KKworLSBJc3N1ZSAjODExMjogeGxtcnBjLnNlcnZlcidzIERvY1hNTFJQQ1NlcnZlciBzZXJ2ZXIgbm8gbG9uZ2VyIHJhaXNlcyBhbiBlcnJvcgorICBpZiBtZXRob2RzIGhhdmUgYW5ub3RhdGlvbnM7IGl0IG5vdyBjb3JyZWN0bHkgZGlzcGxheXMgdGhlIGFubm90YXRpb25zLgorCistIElzc3VlICMxODYwMDogQWRkZWQgcG9saWN5IGFyZ3VtZW50IHRvIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hc19zdHJpbmcsCisgIGFuZCBhc19ieXRlcyBhbmQgX19ieXRlc19fIG1ldGhvZHMgdG8gTWVzc2FnZS4KKworLSBJc3N1ZSAjMTg2NzE6IE91dHB1dCBtb3JlIGluZm9ybWF0aW9uIHdoZW4gbG9nZ2luZyBleGNlcHRpb25zIG9jY3VyLgorCistIElzc3VlICMxODYyMTogUHJldmVudCB0aGUgc2l0ZSBtb2R1bGUncyBwYXRjaGVkIGJ1aWx0aW5zIGZyb20ga2VlcGluZworICB0b28gbWFueSByZWZlcmVuY2VzIGFsaXZlIGZvciB0b28gbG9uZy4KKworLSBJc3N1ZSAjNDg4NTogQWRkIHdlYWtyZWYgc3VwcG9ydCB0byBtbWFwIG9iamVjdHMuICBQYXRjaCBieSBWYWxlcmllIExhbWJlcnQuCisKKy0gSXNzdWUgIzg4NjA6IEZpeGVkIHJvdW5kaW5nIGluIHRpbWVkZWx0YSBjb25zdHJ1Y3Rvci4KKworLSBJc3N1ZSAjMTg4NDk6IEZpeGVkIGEgV2luZG93cy1zcGVjaWZpYyB0ZW1wZmlsZSBidWcgd2hlcmUgY29sbGlzaW9uIHdpdGggYW4KKyAgZXhpc3RpbmcgZGlyZWN0b3J5IGNhdXNlZCBta3N0ZW1wIGFuZCByZWxhdGVkIEFQSXMgdG8gZmFpbCBpbnN0ZWFkIG9mCisgIHJldHJ5aW5nLiBSZXBvcnQgYW5kIGZpeCBieSBWbGFkIFNoY2hlcmJpbmEuCisKKy0gSXNzdWUgIzE4OTIwOiBhcmdwYXJzZSdzIGRlZmF1bHQgZGVzdGluYXRpb24gZm9yIHRoZSB2ZXJzaW9uIGFjdGlvbiAoLXYsCisgIC0tdmVyc2lvbikgaGFzIGFsc28gYmVlbiBjaGFuZ2VkIHRvIHN0ZG91dCwgdG8gbWF0Y2ggdGhlIFB5dGhvbiBleGVjdXRhYmxlLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTg2MjM6IEZhY3RvciBvdXQgdGhlIF9TdXBwcmVzc0NvcmVGaWxlcyBjb250ZXh0IG1hbmFnZXIgaW50bworICB0ZXN0LnN1cHBvcnQuICBQYXRjaCBieSBWYWxlcmllIExhbWJlcnQuCisKKy0gSXNzdWUgIzEyMDM3OiBGaXggdGVzdF9lbWFpbCBmb3IgZGVza3RvcCBXaW5kb3dzLgorCistIElzc3VlICMxNTUwNzogdGVzdF9zdWJwcm9jZXNzJ3MgdGVzdF9zZW5kX3NpZ25hbCBjb3VsZCBmYWlsIGlmIHRoZSB0ZXN0CisgIHJ1bm5lciB3ZXJlIHJ1biBpbiBhbiBlbnZpcm9ubWVudCB3aGVyZSB0aGUgcHJvY2VzcyBpbmhlcml0ZWQgYW4gaWdub3JlCisgIHNldHRpbmcgZm9yIFNJR0lOVC4gIFJlc3RvcmUgdGhlIFNJR0lOVCBoYW5kbGVyIHRvIHRoZSBkZXNpcmVkCisgIEtleWJvYXJkSW50ZXJydXB0IHJhaXNpbmcgb25lIGR1cmluZyB0aGF0IHRlc3QuCisKKy0gSXNzdWUgIzE2Nzk5OiBTd2l0Y2hlZCBmcm9tIGdldG9wdCB0byBhcmdwYXJzZSBzdHlsZSBpbiByZWdydGVzdCdzIGFyZ3VtZW50CisgIHBhcnNpbmcuICBBZGRlZCBtb3JlIHRlc3RzIGZvciByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcuCisKKy0gSXNzdWUgIzE4NzkyOiBVc2UgIjEyNy4wLjAuMSIgb3IgIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0IiBhcyBtdWNoIGFzCisgIHBvc3NpYmxlLCBzaW5jZSAibG9jYWxob3N0IiBnb2VzIHRocm91Z2ggYSBETlMgbG9va3VwIHVuZGVyIHJlY2VudCBXaW5kb3dzCisgIHZlcnNpb25zLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE4NDg5OiBBZGQgdGVzdHMgZm9yIFNlYXJjaEVuZ2luZS4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE4NzQzOiBGaXggcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgIlN0cmluZ0lPIiBtb2R1bGUuCisKKy0gSXNzdWUgIzE4NzgzOiBSZW1vdmVkIGV4aXN0aW5nIG1lbnRpb25zIG9mIFB5dGhvbiBsb25nIHR5cGUgaW4gZG9jc3RyaW5ncywKKyAgZXJyb3IgbWVzc2FnZXMgYW5kIGNvbW1lbnRzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTU4NDogUHJvdmlkZSBjb25maWd1cmUgb3B0aW9ucyB0byBvdmVycmlkZSBkZWZhdWx0IHNlYXJjaCBwYXRocyBmb3IKKyAgVGNsIGFuZCBUayB3aGVuIGJ1aWxkaW5nIF90a2ludGVyLgorCistIElzc3VlICMxNTY2MzogVGNsL1RrIDguNS4xNCBpcyBub3cgaW5jbHVkZWQgd2l0aCB0aGUgT1MgWCAxMC42KyA2NC0vMzItYml0CisgIGluc3RhbGxlci4gIEl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKKyAgVGNsL1RrIDguNSB0byB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbXMgaW4gdGhlIEFwcGxlLXN1cHBsaWVkIFRjbC9UayA4LjUKKyAgc2hpcHBlZCBpbiBPUyBYIDEwLjYgYW5kIGxhdGVyIHJlbGVhc2VzLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTg5MjI6IE5vdyBUaGUgTGliL3NtdHBkLnB5IGFuZCBUb29scy9pMThuL21zZ2ZtdC5weSBzY3JpcHRzIHdyaXRlCisgIHRoZWlyIHZlcnNpb24gc3RyaW5ncyB0byBzdGRvdXQsIGFuZCBub3QgdG8gc2RlcnIuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgQWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxMy0wOC0wMworCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTY3NDE6IEZpeCBhbiBlcnJvciByZXBvcnRpbmcgaW4gaW50KCkuCisKKy0gSXNzdWUgIzE3ODk5OiBGaXggcmFyZSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBvcy5saXN0ZGlyKCkuCisKKy0gSXNzdWUgIzEwMjQxOiBDbGVhciBleHRlbnNpb24gbW9kdWxlIGRpY3QgY29waWVzIGF0IGludGVycHJldGVyIHNodXRkb3duLgorICBQYXRjaCBieSBOZWlsIFNjaGVtZW5hdWVyLCBtaW5pbWFsbHkgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzkwMzU6IGlzbW91bnQgbm93IHJlY29nbmlzZXMgdm9sdW1lcyBtb3VudGVkIGJlbG93IGEgZHJpdmUgcm9vdAorICBvbiBXaW5kb3dzLiBPcmlnaW5hbCBwYXRjaCBieSBBdHN1byBJc2hpbW90by4KKworLSBJc3N1ZSAjMTgyMTQ6IEltcHJvdmUgZmluYWxpemF0aW9uIG9mIFB5dGhvbiBtb2R1bGVzIHRvIGF2b2lkIHNldHRpbmcKKyAgdGhlaXIgZ2xvYmFscyB0byBOb25lLCBpbiBtb3N0IGNhc2VzLgorCistIElzc3VlICMxODExMjogUEVQIDQ0MiBpbXBsZW1lbnRhdGlvbiAoc2FmZSBvYmplY3QgZmluYWxpemF0aW9uKS4KKworLSBJc3N1ZSAjMTg1NTI6IENoZWNrIHJldHVybiB2YWx1ZSBvZiBQeUFyZW5hX0FkZFB5T2JqZWN0KCkgaW4KKyAgb2JqMmFzdF9vYmplY3QoKS4KKworLSBJc3N1ZSAjMTg1NjA6IEZpeCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHN1bSgpLgorCistIElzc3VlICMxODUyMDogQWRkIGEgbmV3IFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCkgZnVuY3Rpb24sIHNhbWUgdGhhbgorICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCkgZXhjZXB0IHRoYXQgaXQgaGFzIGEgcmV0dXJuIHZhbHVlICgwIG9uIHN1Y2Nlc3MsCisgIC0xIG9uIGVycm9yKS4KKworLSBJc3N1ZSAjMTU5MDU6IEZpeCB0aGVvcmV0aWNhbCBidWZmZXIgb3ZlcmZsb3cgaW4gaGFuZGxpbmcgb2Ygc3lzLmFyZ3ZbMF0sCisgIHByZWZpeCBhbmQgZXhlY19wcmVmaXggaWYgdGhlIG9wZXJhdGlvbiBzeXN0ZW0gZG9lcyBub3Qgb2JleSBNQVhQQVRITEVOLgorCistIElzc3VlICMxODQwODogRml4IG1hbnkgdmFyaW91cyBidWdzIGluIGNvZGUgaGFuZGxpbmcgZXJyb3JzLCBlc3BlY2lhbGx5CisgIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgKE1lbW9yeUVycm9yKS4KKworLSBJc3N1ZSAjMTgzNDQ6IEZpeCBwb3RlbnRpYWwgcmVmLWxlYWtzIGluIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbCgpLgorCistIElzc3VlICMxODM0MjogVXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgd2hlbiBhbiBpbXBvcnQgZmFpbHMgd2hlbiB1c2luZworICBgYGZyb20gLi4uIGltcG9ydCAuLi5gYC4KKworLSBJc3N1ZSAjMTc4NzI6IEZpeCBhIHNlZ2ZhdWx0IGluIG1hcnNoYWwubG9hZCgpIHdoZW4gaW5wdXQgc3RyZWFtIHJldHVybnMKKyAgbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KKworLSBJc3N1ZSAjMTgzMzg6IGBweXRob24gLS12ZXJzaW9uYCBub3cgcHJpbnRzIHZlcnNpb24gc3RyaW5nIHRvIHN0ZG91dCwgYW5kCisgIG5vdCB0byBzdGRlcnIuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnIGFuZCBNaWNoYWVsIERpY2tlbnMuCisKKy0gSXNzdWUgIzE4NDI2OiBGaXggTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEMgZXh0ZW5zaW9uIGltcG9ydCB3aGVuCisgIFB5TW9kdWxlX0dldERlZigpIHJldHVybnMgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzE3MjA2OiBPbiBXaW5kb3dzLCBpbmNyZWFzZSB0aGUgc3RhY2sgc2l6ZSBmcm9tIDIgTUIgdG8gNC4yIE1CIHRvIGZpeAorICBhIHN0YWNrIG92ZXJmbG93IGluIHRoZSBtYXJzaGFsIG1vZHVsZSAoZml4IGEgY3Jhc2ggaW4gdGVzdF9tYXJzaGFsKS4KKyAgUGF0Y2ggd3JpdHRlbiBieSBKZXJlbXkgS2xvdGguCisKKy0gSXNzdWUgIzMzMjk6IEltcGxlbWVudCB0aGUgUEVQIDQ0NTogQWRkIG5ldyBBUElzIHRvIGN1c3RvbWl6ZSBQeXRob24gbWVtb3J5CisgIGFsbG9jYXRvcnMuCisKKy0gSXNzdWUgIzE4MzI4OiBSZW9yZGVyIG9wcyBpbiBQeVRocmVhZFN0YXRlX0RlbGV0ZSooKSBmdW5jdGlvbnMuIE5vdyB0aGUKKyAgdHN0YXRlIGlzIGZpcnN0IHJlbW92ZWQgZnJvbSBUTFMgYW5kIHRoZW4gZGVhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzEzNDgzOiBVc2UgVmlydHVhbEFsbG9jIGluIG9ibWFsbG9jIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE4MTg0OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBub3cgcmFpc2UKKyAgT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGFyZ3VtZW50IG9mICVjIGZvcm1hdCBpcyBvdXQgb2YgcmFuZ2UuCisKKy0gSXNzdWUgIzE4MTExOiBUaGUgbWluKCkgYW5kIG1heCgpIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIGRlZmF1bHQgYXJndW1lbnQKKyAgdG8gYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIGEgVmFsdWVFcnJvciBvbiBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBCZXJtYW4uKQorCistIElzc3VlICMxODEzNzogRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgb24gcHJlY2lzaW9uIGluIGZsb2F0Ll9fZm9ybWF0X18oKQorICBhbmQgY29tcGxleC5fX2Zvcm1hdF9fKCkuCisKKy0gSXNzdWUgIzE1NzY3OiBJbnRyb2R1Y2UgTW9kdWxlTm90Rm91bmRFcnJvciB3aGljaCBpcyByYWlzZWQgd2hlbiBhIG1vZHVsZQorICBjb3VsZCBub3QgYmUgZm91bmQuCisKKy0gSXNzdWUgIzE4MTgzOiBGaXggdmFyaW91cyB1bmljb2RlIG9wZXJhdGlvbnMgb24gc3RyaW5ncyB3aXRoIGxhcmdlIHVuaWNvZGUKKyAgY29kZXBvaW50cy4KKworLSBJc3N1ZSAjMTgxODA6IEZpeCByZWYgbGVhayBpbiBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoKS4KKworLSBJc3N1ZSAjMTgwMzg6IFN5bnRheEVycm9yIHJhaXNlZCBkdXJpbmcgY29tcGlsYXRpb24gc291cmNlcyB3aXRoIGlsbGVnYWwKKyAgZW5jb2Rpbmcgbm93IGFsd2F5cyBjb250YWlucyBhbiBlbmNvZGluZyBuYW1lLgorCistIElzc3VlICMxNzkzMTogUmVzb2x2ZSBjb25mdXNpb24gb24gV2luZG93cyBiZXR3ZWVuIHBpZHMgYW5kIHByb2Nlc3MKKyAgaGFuZGxlcy4KKworLSBUd2VhayB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugd2hlbiB0aGUgbWFnaWMgbnVtYmVyIG9yIHNpemUgdmFsdWUgaW4gYSBieXRlY29kZQorICBmaWxlIGlzIHRydW5jYXRlZC4KKworLSBJc3N1ZSAjMTc5MzI6IEZpeCBhbiBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlIG9uIFdpbmRvd3MgNjQtYml0IGluIGl0ZXJhdG9yczoKKyAgY2hhbmdlIHRoZSBDIHR5cGUgb2Ygc2VxaXRlcm9iamVjdC5pdF9pbmRleCBmcm9tIGxvbmcgdG8gUHlfc3NpemVfdC4KKworLSBJc3N1ZSAjMTgwNjU6IERvbid0IHNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lIGZvciBmcm96ZW4gcGFja2FnZXMuCisKKy0gSXNzdWUgIzE4MDg4OiBXaGVuIHJlbG9hZGluZyBhIG1vZHVsZSwgdW5jb25kaXRpb25hbGx5IHJlc2V0IGFsbCByZWxldmFudAorICBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUgKGUuZy4gX19uYW1lX18sIF9fbG9hZGVyX18sIF9fcGFja2FnZV9fLCBfX2ZpbGVfXywKKyAgX19jYWNoZWRfXykuCisKKy0gSXNzdWUgIzE3OTM3OiBUcnkgaGFyZGVyIHRvIGNvbGxlY3QgY3ljbGljIGdhcmJhZ2UgYXQgc2h1dGRvd24uCisKKy0gSXNzdWUgIzEyMzcwOiBQcmV2ZW50IGNsYXNzIGJvZGllcyBmcm9tIGludGVyZmVyaW5nIHdpdGggdGhlIF9fY2xhc3NfXworICBjbG9zdXJlLgorCistIElzc3VlICMxNzY0NDogRml4IGEgY3Jhc2ggaW4gc3RyLmZvcm1hdCB3aGVuIGN1cmx5IGJyYWNlcyBhcmUgdXNlZCBpbiBzcXVhcmUKKyAgYnJhY2tldHMuCisKKy0gSXNzdWUgIzE3MjM3OiBGaXggY3Jhc2ggaW4gdGhlIEFTQ0lJIGRlY29kZXIgb24gbTY4ay4KKworLSBJc3N1ZSAjMTc5Mjc6IEZyYW1lIG9iamVjdHMga2VwdCBhcmd1bWVudHMgYWxpdmUgaWYgdGhleSBoYWQgYmVlbgorICBjb3BpZWQgaW50byBhIGNlbGwsIGV2ZW4gaWYgdGhlIGNlbGwgd2FzIGNsZWFyZWQuCisKKy0gSXNzdWUgIzE1NDU0NjM6IEF0IHNodXRkb3duLCBkZWZlciBmaW5hbGl6YXRpb24gb2YgY29kZWMgbW9kdWxlcyBzbworICB0aGF0IHN0ZGVyciByZW1haW5zIHVzYWJsZS4KKworLSBJc3N1ZSAjNzMzMDogSW1wbGVtZW50IHdpZHRoIGFuZCBwcmVjaXNpb24gKGV4OiAiJTUuM3MiKSBmb3IgdGhlIGZvcm1hdAorICBzdHJpbmcgb2YgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBmdW5jdGlvbiwgb3JpZ2luYWwgcGF0Y2ggd3JpdHRlbiBieSBZc2ogUmF5LgorCistIElzc3VlICMxNTQ1NDYzOiBHbG9iYWwgdmFyaWFibGVzIGNhdWdodCBpbiByZWZlcmVuY2UgY3ljbGVzIGFyZSBub3cKKyAgZ2FyYmFnZS1jb2xsZWN0ZWQgYXQgc2h1dGRvd24uCisKKy0gSXNzdWUgIzE3MDk0OiBDbGVhciBzdGFsZSB0aHJlYWQgc3RhdGVzIGFmdGVyIGZvcmsoKS4gIE5vdGUgdGhhdCB0aGlzCisgIGlzIGEgcG90ZW50aWFsbHkgZGlzcnVwdGl2ZSBjaGFuZ2Ugc2luY2UgaXQgbWF5IHJlbGVhc2Ugc29tZSBzeXN0ZW0KKyAgcmVzb3VyY2VzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSByZW1haW4gcGVycGV0dWFsbHkgYWxpdmUgKGUuZy4gZGF0YWJhc2UKKyAgY29ubmVjdGlvbnMga2VwdCBpbiB0aHJlYWQtbG9jYWwgc3RvcmFnZSkuCisKKy0gSXNzdWUgIzE3NDA4OiBBdm9pZCB1c2luZyBhbiBvYnNvbGV0ZSBpbnN0YW5jZSBvZiB0aGUgY29weXJlZyBtb2R1bGUgd2hlbgorICB0aGUgaW50ZXJwcmV0ZXIgaXMgc2h1dGRvd24gYW5kIHRoZW4gc3RhcnRlZCBhZ2Fpbi4KKworLSBJc3N1ZSAjNTg0NTogRW5hYmxlIHRhYi1jb21wbGV0aW9uIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBieQorICBkZWZhdWx0LCB0aGFua3MgdG8gYSBuZXcgc3lzLl9faW50ZXJhY3RpdmVob29rX18uCisKKy0gSXNzdWUgIzE3MTE1LDE3MTE2OiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gbm93IGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gYW5kCisgIF9fbG9hZGVyX18gYXR0cmlidXRlcyB0byBOb25lLgorCistIElzc3VlICMxNzg1MzogRW5zdXJlIGxvY2FscyBvZiBhIGNsYXNzIHRoYXQgc2hhZG93IGZyZWUgdmFyaWFibGVzIGFsd2F5cyB3aW4KKyAgb3ZlciB0aGUgY2xvc3VyZXMuCisKKy0gSXNzdWUgIzE3ODYzOiBJbiB0aGUgaW50ZXJhY3RpdmUgY29uc29sZSwgZG9uJ3QgbG9vcCBmb3JldmVyIGlmIHRoZSBlbmNvZGluZworICBjYW4ndCBiZSBmZXRjaGVkIGZyb20gc3RkaW4uCisKKy0gSXNzdWUgIzE3ODY3OiBSYWlzZSBhbiBJbXBvcnRFcnJvciBpZiBfX2ltcG9ydF9fIGlzIG5vdCBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCisKKy0gSXNzdWUgIzE4Njk4OiBFbnN1cmUgaW1wb3J0bGliLnJlbG9hZCgpIHJldHVybnMgdGhlIG1vZHVsZSBvdXQgb2Ygc3lzLm1vZHVsZXMuCisKKy0gSXNzdWUgIzE3ODU3OiBQcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdpdGggcHJlLTMuNS4wIHZlcnNpb25zIG9mIHNxbGl0ZTMsCisgIHN1Y2ggYXMgd2FzIHNoaXBwZWQgd2l0aCBDZW50b3MgNSBhbmQgTWFjIE9TIFggMTAuNC4KKworLSBJc3N1ZSAjMTc0MTM6IHN5cy5zZXR0cmFjZSBjYWxsYmFja3Mgd2VyZSBiZWluZyBwYXNzZWQgYSBzdHJpbmcgaW5zdGVhZCBvZiBhbgorICBleGNlcHRpb24gaW5zdGFuY2UgZm9yIHRoZSAndmFsdWUnIGVsZW1lbnQgb2YgdGhlIGFyZyB0dXBsZSBpZiB0aGUgZXhjZXB0aW9uCisgIG9yaWdpbmF0ZWQgZnJvbSBDIGNvZGU7IG5vdyBhbiBleGNlcHRpb24gaW5zdGFuY2UgaXMgYWx3YXlzIHByb3ZpZGVkLgorCistIElzc3VlICMxNzc4MjogRml4IHVuZGVmaW5lZCBiZWhhdmlvdXIgb24gcGxhdGZvcm1zIHdoZXJlCisgIGBgc3RydWN0IHRpbWVzcGVjYGAncyAidHZfbnNlYyIgbWVtYmVyIGlzIG5vdCBhIEMgbG9uZy4KKworLSBJc3N1ZSAjMTc3MjI6IFdoZW4gbG9va2luZyB1cCBfX3JvdW5kX18sIHJlc29sdmUgZGVzY3JpcHRvcnMuCisKKy0gSXNzdWUgIzE2MDYxOiBTcGVlZCB1cCBzdHIucmVwbGFjZSgpIGZvciByZXBsYWNpbmcgMS1jaGFyYWN0ZXIgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTc3MTU6IEZpeCBzZWdtZW50YXRpb24gZmF1bHQgZnJvbSByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpbiBhIF9fdHJ1bmNfXworICBtZXRob2QuCisKKy0gSXNzdWUgIzE3NjQzOiBBZGQgX19jYWxsYmFja19fIGF0dHJpYnV0ZSB0byB3ZWFrcmVmLnJlZi4KKworLSBJc3N1ZSAjMTY0NDc6IEZpeGVkIHBvdGVudGlhbCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBzZXR0aW5nIF9fbmFtZV9fIG9uIGEKKyAgY2xhc3MuCisKKy0gSXNzdWUgIzE3NjY5OiBGaXggY3Jhc2ggaW52b2x2aW5nIGZpbmFsaXphdGlvbiBvZiBnZW5lcmF0b3JzIHVzaW5nIHlpZWxkIGZyb20uCisKKy0gSXNzdWUgIzE0NDM5OiBQeXRob24gbm93IHByaW50cyB0aGUgdHJhY2ViYWNrIG9uIHJ1bnB5IGZhaWx1cmUgYXQgc3RhcnR1cC4KKworLSBJc3N1ZSAjMTc0Njk6IEZpeCBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKCkgYW5kIHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKQorICB3aGVuIHJ1bm5pbmcgb24gdmFsZ3JpbmQuCisKKy0gSXNzdWUgIzE3NjE5OiBNYWtlIGlucHV0KCkgY2hlY2sgZm9yIEN0cmwtQyBjb3JyZWN0bHkgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTczNTc6IEFkZCBtaXNzaW5nIHZlcmJvc2l0eSBtZXNzYWdlcyBmb3IgLXYvLXZ2IHRoYXQgd2VyZSBsb3N0IGR1cmluZworICB0aGUgaW1wb3J0bGliIHRyYW5zaXRpb24uCisKKy0gSXNzdWUgIzE3NjEwOiBEb24ndCByZWx5IG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvciBvZiB0aGUgQyBxc29ydCgpIGZ1bmN0aW9uLgorCistIElzc3VlICMxNzMyMzogVGhlICJbWCByZWZzLCBZIGJsb2Nrc10iIHByaW50ZWQgYnkgZGVidWcgYnVpbGRzIGhhcyBiZWVuCisgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBJdCBjYW4gYmUgcmUtZW5hYmxlZCB3aXRoIHRoZSBgLVggc2hvd3JlZmNvdW50YCBvcHRpb24uCisKKy0gSXNzdWUgIzE3MzI4OiBGaXggcG9zc2libGUgcmVmbGVhayBpbiBkaWN0LnNldGRlZmF1bHQuCisKKy0gSXNzdWUgIzE3Mjc1OiBDb3JyZWN0ZWQgY2xhc3MgbmFtZSBpbiBpbml0IGVycm9yIG1lc3NhZ2VzIG9mIHRoZSBDIHZlcnNpb24gb2YKKyAgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tLgorCistIElzc3VlICM3OTYzOiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2UgdGhhdCBpc3N1ZWQgd2hlbiBvYmplY3QgaXMKKyAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgorCistIElzc3VlICM4NzQ1OiBTbWFsbCBzcGVlZCB1cCB6aXBpbXBvcnQgb24gV2luZG93cy4gUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjNTMwODogUmFpc2UgVmFsdWVFcnJvciB3aGVuIG1hcnNoYWxsaW5nIHRvbyBsYXJnZSBvYmplY3QgKGEgc2VxdWVuY2UKKyAgd2l0aCBzaXplID49IDIqKjMxKSwgaW5zdGVhZCBvZiBwcm9kdWNpbmcgaWxsZWdhbCBtYXJzaGFsIGRhdGEuCisKKy0gSXNzdWUgIzEyOTgzOiBCeXRlcyBsaXRlcmFscyB3aXRoIGludmFsaWQgYGBceGBgIGVzY2FwZSBub3cgcmFpc2UgYSBTeW50YXhFcnJvcgorICBhbmQgYSBmdWxsIHRyYWNlYmFjayBpbmNsdWRpbmcgbGluZSBudW1iZXIuCisKKy0gSXNzdWUgIzE2OTY3OiBJbiBmdW5jdGlvbiBkZWZpbml0aW9uLCBldmFsdWF0ZSBwb3NpdGlvbmFsIGRlZmF1bHRzIGJlZm9yZQorICBrZXl3b3JkLW9ubHkgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzE3MTczOiBSZW1vdmUgdXNlcyBvZiBsb2NhbGUtZGVwZW5kZW50IEMgZnVuY3Rpb25zIChpc2FscGhhKCkgZXRjLikKKyAgaW4gdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMxNzEzNzogV2hlbiBhIFVuaWNvZGUgc3RyaW5nIGlzIHJlc2l6ZWQsIHRoZSBpbnRlcm5hbCB3aWRlIGNoYXJhY3RlcgorICBzdHJpbmcgKHdzdHIpIGZvcm1hdCBpcyBub3cgY2xlYXJlZC4KKworLSBJc3N1ZSAjMTcwNDM6IFRoZSB1bmljb2RlLWludGVybmFsIGRlY29kZXIgbm8gbG9uZ2VyIHJlYWQgcGFzdCB0aGUgZW5kIG9mCisgIGlucHV0IGJ1ZmZlci4KKworLSBJc3N1ZSAjMTcwOTg6IEFsbCBtb2R1bGVzIG5vdyBoYXZlIF9fbG9hZGVyX18gc2V0IGV2ZW4gaWYgdGhleSBwcmUtZXhpc3QgdGhlCisgIGJvb3RzdHJhcHBpbmcgb2YgaW1wb3J0bGliLgorCistIElzc3VlICMxNjk3OTogRml4IGVycm9yIGhhbmRsaW5nIGJ1Z3MgaW4gdGhlIHVuaWNvZGUtZXNjYXBlLWRlY29kZSBkZWNvZGVyLgorCistIElzc3VlICMxNjc3MjogVGhlIGJhc2UgYXJndW1lbnQgdG8gdGhlIGludCBjb25zdHJ1Y3RvciBubyBsb25nZXIgYWNjZXB0cworICBmbG9hdHMsIG9yIG90aGVyIG5vbi1pbnRlZ2VyIG9iamVjdHMgd2l0aCBhbiBfX2ludF9fIG1ldGhvZC4gIE9iamVjdHMKKyAgd2l0aCBhbiBfX2luZGV4X18gbWV0aG9kIGFyZSBub3cgYWNjZXB0ZWQuCisKKy0gSXNzdWUgIzEwMTU2OiBJbiB0aGUgaW50ZXJwcmV0ZXIncyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdW5pY29kZSBnbG9iYWxzCisgIGFyZSBub3cgaW5pdGlhbGl6ZWQgZHluYW1pY2FsbHkgYXMgbmVlZGVkLgorCistIElzc3VlICMxNjk4MDogRml4IHByb2Nlc3Npbmcgb2YgZXNjYXBlZCBub24tYXNjaWkgYnl0ZXMgaW4gdGhlCisgIHVuaWNvZGUtZXNjYXBlLWRlY29kZSBkZWNvZGVyLgorCistIElzc3VlICMxNjk3NTogRml4IGVycm9yIGhhbmRsaW5nIGJ1ZyBpbiB0aGUgZXNjYXBlLWRlY29kZSBieXRlcyBkZWNvZGVyLgorCistIElzc3VlICMxNDg1MDogTm93IGEgY2hhcm1hcCBkZWNvZGVyIHRyZWF0cyBVK0ZGRkUgYXMgInVuZGVmaW5lZCBtYXBwaW5nIgorICBpbiBhbnkgbWFwcGluZywgbm90IG9ubHkgaW4gYSBzdHJpbmcuCisKKy0gSXNzdWUgIzE2NjEzOiBBZGQgKm0qIGFyZ3VtZW50IHRvIGBgY29sbGVjdGlvbnMuQ2hhaW5tYXAubmV3X2NoaWxkYGAgdG8KKyAgYWxsb3cgdGhlIG5ldyBjaGlsZCBtYXAgdG8gYmUgc3BlY2lmaWVkIGV4cGxpY2l0bHkuCisKKy0gSXNzdWUgIzE2NzMwOiBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgbm93IG5vIGxvbmdlcnMgcmFpc2VzIGFuCisgIGV4Y2VwdGlvbiB3aGVuIHRyeWluZyB0byBwb3B1bGF0ZSBpdHMgY2FjaGUgYW5kIGl0IGZpbmRzIG91dCB0aGUgZGlyZWN0b3J5IGlzCisgIHVucmVhZGFibGUgb3IgaGFzIHR1cm5lZCBpbnRvIGEgZmlsZS4gUmVwb3J0ZWQgYW5kIGRpYWdub3NlZCBieQorICBEYXZpZCBQcml0Y2hhcmQuCisKKy0gSXNzdWUgIzE2OTA2OiBGaXggYSBsb2dpYyBlcnJvciB0aGF0IHByZXZlbnRlZCBtb3N0IHN0YXRpYyBzdHJpbmdzIGZyb20gYmVpbmcKKyAgY2xlYXJlZC4KKworLSBJc3N1ZSAjMTE0NjE6IEZpeCB0aGUgaW5jcmVtZW50YWwgVVRGLTE2IGRlY29kZXIuIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCistIElzc3VlICMxNjg1NjogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IGZyb20gY2FsbGluZyByZXByKCkgb24gYSBkaWN0IHdpdGgKKyAgYSBrZXkgd2hvc2UgcmVwciByYWlzZSBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzE2MzY3OiBGaXggRmlsZUlPLnJlYWRhbGwoKSBvbiBXaW5kb3dzIGZvciBmaWxlcyBsYXJnZXIgdGhhbiAyIEdCLgorCistIElzc3VlICMxNjc2MTogQ2FsbGluZyBpbnQoKSB3aXRoIGJhc2UgYXJndW1lbnQgb25seSBub3cgcmFpc2VzIFR5cGVFcnJvci4KKworLSBJc3N1ZSAjMTY3NTk6IFN1cHBvcnQgdGhlIGZ1bGwgRFdPUkQgKHVuc2lnbmVkIGxvbmcpIHJhbmdlIGluIFJlZzJQeQorICB3aGVuIHJldHJpZXZpbmcgYSBSRUdfRFdPUkQgdmFsdWUuIFRoaXMgY29ycmVjdHMgZnVuY3Rpb25zIGxpa2UKKyAgd2lucmVnLlF1ZXJ5VmFsdWVFeCB0aGF0IG1heSBoYXZlIGJlZW4gcmV0dXJuaW5nIHRydW5jYXRlZCB2YWx1ZXMuCisKKy0gSXNzdWUgIzE0NDIwOiBTdXBwb3J0IHRoZSBmdWxsIERXT1JEICh1bnNpZ25lZCBsb25nKSByYW5nZSBpbiBQeTJSZWcKKyAgd2hlbiBwYXNzZWQgYSBSRUdfRFdPUkQgdmFsdWUuIEZpeGVzIE92ZXJmbG93RXJyb3IgaW4gd2lucmVnLlNldFZhbHVlRXguCisKKy0gSXNzdWUgIzExOTM5OiBTZXQgdGhlIHN0X2RldiBhdHRyaWJ1dGUgb2Ygc3RhdF9yZXN1bHQgdG8gYWxsb3cgV2luZG93cyB0bworICB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3MucGF0aC5zYW1lZmlsZS9zYW1lb3BlbmZpbGUvc2FtZXN0YXQgaW1wbGVtZW50YXRpb25zCisgIHVzZWQgYnkgb3RoZXIgcGxhdGZvcm1zLgorCistIElzc3VlICMxNjc3MjogVGhlIGludCgpIGNvbnN0cnVjdG9yJ3Mgc2Vjb25kIGFyZ3VtZW50IChiYXNlKSBubyBsb25nZXIKKyAgYWNjZXB0cyBub24gaW50ZWdlciB2YWx1ZXMuICBDb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW9yIGluIFB5dGhvbiAyLgorCistIElzc3VlICMxNDQ3MDogUmVtb3ZlIHc5eHBvcGVuIHN1cHBvcnQgcGVyIFBFUCAxMS4KKworLSBJc3N1ZSAjOTg1NjogUmVwbGFjZSBkZXByZWNhdGlvbiB3YXJuaW5nIHdpdGggcmFpc2luZyBUeXBlRXJyb3IKKyAgaW4gb2JqZWN0Ll9fZm9ybWF0X18uIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjMTY1OTc6IEluIGJ1ZmZlcmVkIGFuZCB0ZXh0IElPLCBjYWxsIGNsb3NlKCkgb24gdGhlIHVuZGVybHlpbmcgc3RyZWFtCisgIGlmIGludm9raW5nIGZsdXNoKCkgZmFpbHMuCisKKy0gSXNzdWUgIzE2NzIyOiBJbiB0aGUgYnl0ZXMoKSBjb25zdHJ1Y3RvciwgdHJ5IHRvIGNhbGwgX19ieXRlc19fIG9uIHRoZQorICBhcmd1bWVudCBiZWZvcmUgX19pbmRleF9fLgorCistIElzc3VlICMxNjQyMTogbG9hZGluZyBtdWx0aXBsZSBtb2R1bGVzIGZyb20gb25lIHNoYXJlZCBvYmplY3QgaXMgbm93CisgIGhhbmRsZWQgY29ycmVjdGx5IChwcmV2aW91c2x5LCB0aGUgZmlyc3QgbW9kdWxlIGxvYWRlZCBmcm9tIHRoYXQgZmlsZQorICB3YXMgc2lsZW50bHkgcmV0dXJuZWQpLiBQYXRjaCBieSBWw6FjbGF2IMWgbWlsYXVlci4KKworLSBJc3N1ZSAjMTY2MDI6IFdoZW4gYSB3ZWFrcmVmJ3MgdGFyZ2V0IHdhcyBwYXJ0IG9mIGEgbG9uZyBkZWFsbG9jYXRpb24KKyAgY2hhaW4sIHRoZSBvYmplY3QgY291bGQgcmVtYWluIHJlYWNoYWJsZSB0aHJvdWdoIGl0cyB3ZWFrcmVmIGV2ZW4gdGhvdWdoCisgIGl0cyByZWZjb3VudCBoYWQgZHJvcHBlZCB0byB6ZXJvLgorCistIElzc3VlICMxNjQ5NTogUmVtb3ZlIGV4dHJhbmVvdXMgTlVMTCBlbmNvZGluZyBjaGVjayBmcm9tIGJ5dGVzX2RlY29kZSgpLgorCistIElzc3VlICMxNjYxOTogQ3JlYXRlIE5hbWVDb25zdGFudCBBU1QgY2xhc3MgdG8gcmVwcmVzZW50IE5vbmUsIFRydWUsIGFuZCBGYWxzZQorICBsaXRlcmFscy4gQXMgYSByZXN1bHQsIHRoZXNlIGNvbnN0YW50cyBhcmUgbmV2ZXIgbG9hZGVkIGF0IHJ1bnRpbWUgZnJvbQorICBidWlsdGlucy4KKworLSBJc3N1ZSAjMTY0NTU6IE9uIEZyZWVCU0QgYW5kIFNvbGFyaXMsIGlmIHRoZSBsb2NhbGUgaXMgQywgdGhlCisgIEFTQ0lJL3N1cnJvZ2F0ZWVzY2FwZSBjb2RlYyBpcyBub3cgdXNlZCAoaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nKSB0bworICBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuIFRoaXMgY2hhbmdlIGZpeGVzIGluY29uc2lzdGVuY2llcyB3aXRoCisgIG9zLmZzZW5jb2RlKCkgYW5kIG9zLmZzZGVjb2RlKCksIGJlY2F1c2UgdGhlc2Ugb3BlcmF0aW5nIHN5c3RlbXMgYW5ub3VuY2UgYW4KKyAgQVNDSUkgbG9jYWxlIGVuY29kaW5nLCBidXQgYWN0dWFsbHkgdXNlIHRoZSBJU08tODg1OS0xIGVuY29kaW5nIGluIHByYWN0aWNlLgorCistIElzc3VlICMxNjU2MjogT3B0aW1pemUgZGljdCBlcXVhbGl0eSB0ZXN0aW5nLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTY1ODg6IFNpbGVuY2UgdW51c2VkLWJ1dC1zZXQgd2FybmluZ3MgaW4gUHl0aG9uL3RocmVhZF9wdGhyZWFkCisKKy0gSXNzdWUgIzE2NTkyOiBzdHJpbmdsaWJfYnl0ZXNfam9pbiBkb2Vzbid0IHJhaXNlIE1lbW9yeUVycm9yIG9uIGFsbG9jYXRpb24KKyAgZmFpbHVyZS4KKworLSBJc3N1ZSAjMTY1NDY6IEZpeDogYXN0LllpZWxkRnJvbSBhcmd1bWVudCBpcyBub3cgbWFuZGF0b3J5LgorCistIElzc3VlICMxNjUxNDogRml4IHJlZ3Jlc3Npb24gY2F1c2luZyBhIHRyYWNlYmFjayB3aGVuIHN5cy5wYXRoWzBdIGlzIE5vbmUKKyAgKGFjdHVhbGx5LCBhbnkgbm9uLXN0cmluZyBvciBub24tYnl0ZXMgdHlwZSkuCisKKy0gSXNzdWUgIzE2MzA2OiBGaXggbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgd2hlbiB1bmtub3duIGNvbW1hbmQgbGluZQorICBwYXJhbWV0ZXJzIHdoZXJlIHBhc3NlZCB0byB0aGUgaW50ZXJwcmV0ZXIuICBQYXRjaCBieSBIaWV1IE5ndXllbi4KKworLSBJc3N1ZSAjMTYyMTU6IEZpeCBwb3RlbnRpYWwgZG91YmxlIG1lbW9yeSBmcmVlIGluIHN0ci5yZXBsYWNlKCkuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNjI5MDogQSBmbG9hdCByZXR1cm4gdmFsdWUgZnJvbSB0aGUgX19jb21wbGV4X18gc3BlY2lhbCBtZXRob2QgaXMgbm8KKyAgbG9uZ2VyIGFjY2VwdGVkIGluIHRoZSBjb21wbGV4KCkgY29uc3RydWN0b3IuCisKKy0gSXNzdWUgIzE2NDE2OiBPbiBNYWMgT1MgWCwgb3BlcmF0aW5nIHN5c3RlbSBkYXRhIGFyZSBub3cgYWx3YXlzCisgIGVuY29kZWQvZGVjb2RlZCB0by9mcm9tIFVURi04L3N1cnJvZ2F0ZWVzY2FwZSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nCisgICh3aGljaCBtYXkgYmUgQVNDSUkgaWYgbm8gbG9jYWxlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCksIHRvIGF2b2lkCisgIGluY29uc2lzdGVuY2llcyB3aXRoIG9zLmZzZW5jb2RlKCkgYW5kIG9zLmZzZGVjb2RlKCkgZnVuY3Rpb25zIHdoaWNoIGFyZQorICBhbHJlYWR5IHVzaW5nIFVURi04L3N1cnJvZ2F0ZWVzY2FwZS4KKworLSBJc3N1ZSAjMTY0NTM6IEZpeCBlcXVhbGl0eSB0ZXN0aW5nIG9mIGRlYWQgd2Vha3JlZiBvYmplY3RzLgorCistIElzc3VlICM5NTM1OiBGaXggcGVuZGluZyBzaWduYWxzIHRoYXQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJ1dCBub3QgeWV0CisgIGhhbmRsZWQgYnkgUHl0aG9uIHRvIG5vdCBwZXJzaXN0IGFmdGVyIG9zLmZvcmsoKSBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjMTQ3OTQ6IEZpeCBzbGljZS5pbmRpY2VzIHRvIHJldHVybiBjb3JyZWN0IHJlc3VsdHMgZm9yIGh1Z2UgdmFsdWVzLAorICByYXRoZXIgdGhhbiByYWlzaW5nIE92ZXJmbG93RXJyb3IuCisKKy0gSXNzdWUgIzE1MDAxOiBmaXggc2VnZmF1bHQgb24gImRlbCBzeXMubW9kdWxlc1snX19tYWluX18nXSIuIFBhdGNoIGJ5IFZpY3RvcgorICBTdGlubmVyLgorCistIElzc3VlICM4MjcxOiB0aGUgdXRmLTggZGVjb2RlciBub3cgb3V0cHV0cyB0aGUgY29ycmVjdCBudW1iZXIgb2YgVStGRkZECisgIGNoYXJhY3RlcnMgd2hlbiB1c2VkIHdpdGggdGhlICdyZXBsYWNlJyBlcnJvciBoYW5kbGVyIG9uIGludmFsaWQgdXRmLTgKKyAgc2VxdWVuY2VzLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYSwgdGVzdHMgYnkgRXppbyBNZWxvdHRpLgorCistIElzc3VlICM1NzY1OiBBcHBseSBhIGhhcmQgcmVjdXJzaW9uIGxpbWl0IGluIHRoZSBjb21waWxlciBpbnN0ZWFkIG9mCisgIGJsb3dpbmcgdGhlIHN0YWNrIGFuZCBzZWdmYXVsdGluZy4gSW5pdGlhbCBwYXRjaCBieSBBbmRyZWEgR3JpZmZpbmkuCisKKy0gSXNzdWUgIzE2NDAyOiBXaGVuIHNsaWNpbmcgYSByYW5nZSwgZml4IHNoYWRvd2luZyBvZiBleGNlcHRpb25zIGZyb20KKyAgX19pbmRleF9fLgorCistIElzc3VlICMxNjMzNjogZml4IGlucHV0IGNoZWNraW5nIGluIHRoZSBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzg0MDE6IGFzc2lnbmluZyBhbiBpbnQgdG8gYSBieXRlYXJyYXkgc2xpY2UgKGUuZy4gYlszOjRdID0gNSkgbm93CisgIHJhaXNlcyBhbiBlcnJvci4KKworLSBJc3N1ZSAjNzMxNzogRGlzcGxheSBmdWxsIHRyYWNlYmFja3Mgd2hlbiBhbiBlcnJvciBvY2N1cnMgYXN5bmNocm9ub3VzbHkuCisgIFBhdGNoIGJ5IEFsb24gSG9yZXYgd2l0aCB1cGRhdGUgYnkgQWxleGV5IEthY2hheWV2LgorCistIElzc3VlICMxNjMwOTogTWFrZSBQWVRIT05QQVRIPSIiIGJlaGF2aW9yIHRoZSBzYW1lIGFzIGlmIFBZVEhPTlBBVEgKKyAgbm90IHNldCBhdCBhbGwuCisKKy0gSXNzdWUgIzEwMTg5OiBJbXByb3ZlIHRoZSBlcnJvciByZXBvcnRpbmcgb2YgU3ludGF4RXJyb3JzIHJlbGF0ZWQgdG8gZ2xvYmFsCisgIGFuZCBub25sb2NhbCBzdGF0ZW1lbnRzLgorCistIEZpeCBzZWdmYXVsdHMgb24gc2V0dGluZyBfX3F1YWxuYW1lX18gb24gYnVpbHRpbiB0eXBlcyBhbmQgYXR0ZW1wdGluZyB0bworICBkZWxldGUgaXQgb24gYW55IHR5cGUuCisKKy0gSXNzdWUgIzE0NjI1OiBSZXdyaXRlIHRoZSBVVEYtMzIgZGVjb2Rlci4gSXQgaXMgbm93IDN4IHRvIDR4IGZhc3Rlci4gUGF0Y2gKKyAgd3JpdHRlbiBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNjM0NTogRml4IGFuIGluZmluaXRlIGxvb3Agd2hlbiBgYGZyb21rZXlzYGAgb24gYSBkaWN0IHN1YmNsYXNzCisgIHJlY2VpdmVkIGEgbm9uZW1wdHkgZGljdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvci4KKworLSBJc3N1ZSAjMTYyNzE6IEZpeCBzdHJhbmdlIGJ1Z3MgdGhhdCByZXN1bHRlZCBmcm9tIF9fcXVhbG5hbWVfXyBhcHBlYXJpbmcgaW4gYQorICBjbGFzcydzIF9fZGljdF9fIGFuZCBvbiB0eXBlLgorCistIElzc3VlICMxMjgwNTogTWFrZSBieXRlcy5qb2luIGFuZCBieXRlYXJyYXkuam9pbiBmYXN0ZXIgd2hlbiB0aGUgc2VwYXJhdG9yCisgIGlzIGVtcHR5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjNjA3NDogRW5zdXJlIGNhY2hlZCBieXRlY29kZSBmaWxlcyBjYW4gYWx3YXlzIGJlIHVwZGF0ZWQgYnkgdGhlCisgIHVzZXIgdGhhdCBjcmVhdGVkIHRoZW0sIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVhZC1vbmx5LgorCistIElzc3VlICMxNTk1ODogYnl0ZXMuam9pbiBhbmQgYnl0ZWFycmF5LmpvaW4gbm93IGFjY2VwdCBhcmJpdHJhcnkgYnVmZmVyCisgIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NzgzOiBJbXByb3ZlIGludCgpIGRvY3N0cmluZyBhbmQgc3dpdGNoIGRvY3N0cmluZ3MgZm9yIHN0cigpLAorICByYW5nZSgpLCBhbmQgc2xpY2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgorCistIElzc3VlICMxNjE2MDogU3ViY2xhc3Mgc3VwcG9ydCBub3cgd29ya3MgZm9yIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKworLSBJc3N1ZSAjMTYxNDg6IEltcGxlbWVudCBQRVAgNDI0LCBhZGRpbmcgb3BlcmF0b3IubGVuZ3RoX2hpbnQgYW5kCisgIFB5T2JqZWN0X0xlbmd0aEhpbnQuCisKKy0gVXBncmFkZSBVbmljb2RlIGRhdGEgKFVDRCkgdG8gdmVyc2lvbiA2LjIuCisKKy0gSXNzdWUgIzE1Mzc5OiBGaXggcGFzc2luZyBvZiBub24tQk1QIGNoYXJhY3RlcnMgYXMgaW50ZWdlcnMgZm9yIHRoZSBjaGFybWFwCisgIGRlY29kZXIgKGFscmVhZHkgd29ya2luZyBhcyB1bmljb2RlIHN0cmluZ3MpLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUxNDQ6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gaGFuZGxpbmcgcG9pbnRlcnMgYXMgaW50ZWdlcgorICB2YWx1ZXMsIGJ5IHVzaW5nIGBQeV91aW50cHRyX3RgIGluc3RlYWQgb2YgYHNpemVfdGAuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTk2NTogRXhwbGljaXRseSBjYXN0IGBBVF9GRENXRGAgYXMgKGludCkuICBSZXF1aXJlZCBvbiBTb2xhcmlzIDEwCisgICh3aGljaCBkZWZpbmVzIGBBVF9GRENXRGAgYXMgYGAweGZmZDE5NTUzYGApLCBoYXJtbGVzcyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE1ODM5OiBDb252ZXJ0IFN5c3RlbUVycm9ycyBpbiBgc3VwZXIoKWAgdG8gUnVudGltZUVycm9ycy4KKworLSBJc3N1ZSAjMTU0NDg6IEJ1ZmZlcmVkIElPIG5vdyBmcmVlcyB0aGUgYnVmZmVyIHdoZW4gY2xvc2VkLCBpbnN0ZWFkCisgIG9mIHdoZW4gZGVhbGxvY2F0aW5nLgorCistIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYGFzdC5wYXJzZSgpYCBpbiBhbgorICBleGNlcHRpb24gaGFuZGxlciBvbiBjb2RlIHdpdGggc3ludGF4IGVycm9ycy4KKworLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCisgIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgorCistIElzc3VlICMxNTgwMTogTWFrZSBzdXJlIG1hcHBpbmdzIHBhc3NlZCB0byAnJScgZm9ybWF0dGluZyBhcmUgYWN0dWFsbHkKKyAgc3Vic2NyaXB0YWJsZS4KKworLSBJc3N1ZSAjMTUxMTE6IF9faW1wb3J0X18gc2hvdWxkIHByb3BhZ2F0ZSBJbXBvcnRFcnJvciB3aGVuIHJhaXNlZCBhcyBhCisgIHNpZGUtZWZmZWN0IG9mIGEgbW9kdWxlIHRyaWdnZXJlZCBmcm9tIHVzaW5nIGZyb21saXN0LgorCistIElzc3VlICMxNTAyMjogQWRkIHBpY2tsZSBhbmQgY29tcGFyaXNvbiBzdXBwb3J0IHRvIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM0MzMxOiBBZGRlZCBmdW5jdG9vbHMucGFydGlhbG1ldGhvZCAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQorCistIElzc3VlICMxMzQ2MTogRml4IGEgY3Jhc2ggaW4gdGhlIFRleHRJT1dyYXBwZXIudGVsbCBtZXRob2Qgb24gNjQtYml0CisgIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IFlvZ2VzaCBDaGF1ZGhhcmkuCisKKy0gSXNzdWUgIzE4NjgxOiBGaXggYSBOYW1lRXJyb3IgaW4gaW1wb3J0bGliLnJlbG9hZCgpIChub3RpY2VkIGJ5IFdlaXpoYW8gTGkpLgorCistIElzc3VlICMxNDMyMzogRXhwYW5kZWQgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGNvZWZmaWNpZW50cyBmb3IgdGhlCisgIFJHQiAtLSBZSVEgY29udmVyc2lvbnMgc28gdGhhdCB0aGV5IG1hdGNoIHRoZSBGQ0MgTlRTQyB2ZXJzaW9ucy4KKworLSBJc3N1ZSAjMTc5OTg6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciBpbiByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lLgorCistIElzc3VlICMxNzU1NzogRml4IG9zLmdldGdyb3VwcygpIHRvIHdvcmsgd2l0aCB0aGUgbW9kaWZpZWQgYmVoYXZpb3Igb2YKKyAgZ2V0Z3JvdXBzKDIpIG9uIE9TIFggMTAuOC4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hdGV1c3ogTGVuaWsuCisKKy0gSXNzdWUgIzE4NjA4OiBBdm9pZCBrZWVwaW5nIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgbG9jYWxlIG1vZHVsZQorICBpbnNpZGUgdGhlIF9pbyBtb2R1bGUuCisKKy0gSXNzdWUgIzE4NjE5OiBGaXggYXRleGl0IGxlYWtpbmcgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgZnJvbSBzdWItaW50ZXJwcmV0ZXJzLAorICBhbmQgbWFrZSBpdCBHQy1hd2FyZS4KKworLSBJc3N1ZSAjMTU2OTk6IFRoZSByZWFkbGluZSBtb2R1bGUgbm93IHVzZXMgUEVQIDMxMjEtc3R5bGUgbW9kdWxlCisgIGluaXRpYWxpemF0aW9uLCBzbyBhcyB0byByZWNsYWltIGFsbG9jYXRlZCByZXNvdXJjZXMgKFB5dGhvbiBjYWxsYmFja3MpCisgIGF0IHNodXRkb3duLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNzYxNjogd2F2ZS5vcGVuIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgorCistIElzc3VlICMxODU5OTogRml4IG5hbWUgYXR0cmlidXRlIG9mIF9zaGExLnNoYTEoKSBvYmplY3QuIEl0IG5vdyByZXR1cm5zCisgICdTSEExJyBpbnN0ZWFkIG9mICdTSEEnLgorCistIElzc3VlICMxMzI2NjogQWRkZWQgaW5zcGVjdC51bndyYXAgdG8gZWFzaWx5IHVucmF2ZWwgX193cmFwcGVkX18gY2hhaW5zCisgIChpbml0aWFsIHBhdGNoIGJ5IERhbmllbCBVcmJhbiBhbmQgQWFyb24gSWxlcykKKworLSBJc3N1ZSAjMTg1NjE6IFNraXAgbmFtZSBpbiBjdHlwZXMnIF9idWlsZF9jYWxsYXJncygpIGlmIG5hbWUgaXMgTlVMTC4KKworLSBJc3N1ZSAjMTg1NTk6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgZXJyb3IgaW4gX3BpY2tsZSBtb2R1bGUKKworLSBJc3N1ZSAjMTg1NTY6IENoZWNrIHRoZSByZXR1cm4gdHlwZSBvZiBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpIGluIGN0eXBlJ3MKKyAgVV9zZXQoKS4KKworLSBJc3N1ZSAjMTc4MTg6IGFpZmMuZ2V0cGFyYW1zIG5vdyByZXR1cm5zIGEgbmFtZWR0dXBsZS4KKworLSBJc3N1ZSAjMTg1NDk6IEVsaW1pbmF0ZSBkZWFkIGNvZGUgaW4gc29ja2V0X250b2hsKCkKKworLSBJc3N1ZSAjMTg1MzA6IFJlbW92ZSBhZGRpdGlvbmFsIHN0YXQgY2FsbCBmcm9tIHBvc2l4cGF0aC5pc21vdW50LgorICBQYXRjaCBieSBBbGV4IEdheW5vci4KKworLSBJc3N1ZSAjMTg1MTQ6IEZpeCB1bnJlYWNoYWJsZSBQeV9ERUNSRUYoKSBjYWxsIGluIFB5Q0RhdGFfRnJvbUJhc2VPYmooKQorCistIElzc3VlICM5MTc3OiBDYWxsaW5nIHJlYWQoKSBvciB3cml0ZSgpIG5vdyByYWlzZXMgVmFsdWVFcnJvciwgbm90CisgIEF0dHJpYnV0ZUVycm9yLCBvbiBhIGNsb3NlZCBTU0wgc29ja2V0LiAgUGF0Y2ggYnkgU2Vua28gUmFzaWMuCisKKy0gSXNzdWUgIzE4NTEzOiBGaXggYmVoYXZpb3VyIG9mIGNtYXRoLnJlY3Qgdy5yLnQuIHNpZ25lZCB6ZXJvcyBvbiBPUyBYIDEwLjggKworICBnY2MuCisKKy0gSXNzdWUgIzE4NDc5OiBDaGFuZ2VkIHZlbnYgQWN0aXZhdGUucHMxIHRvIG1ha2UgZGVhY3RpdmF0ZSBhIGZ1bmN0aW9uLCBhbmQKKyAgcmVtb3ZlZCBEZWFjdGl2YXRlLnBzMS4KKworLSBJc3N1ZSAjMTg0ODA6IEFkZCBtaXNzaW5nIGNhbGwgdG8gUHlUeXBlX1JlYWR5IHRvIHRoZSBfZWxlbWVudHRyZWUgZXh0ZW5zaW9uLgorCistIElzc3VlICMxNzc3ODogRml4IHRlc3QgZGlzY292ZXJ5IGZvciB0ZXN0X211bHRpcHJvY2Vzc2luZy4gKFBhdGNoIGJ5CisgIFphY2hhcnkgV2FyZS4pCisKKy0gSXNzdWUgIzE4MzkzOiBUaGUgcHJpdmF0ZSBtb2R1bGUgX2dlc3RhbHQgYW5kIHByaXZhdGUgZnVuY3Rpb25zCisgIHBsYXRmb3JtLl9tYWNfdmVyX2dlc3RhbHQsIHBsYXRmb3JtLl9tYWNfdmVyX2xvb2t1cCBhbmQKKyAgcGxhdGZvcm0uX2JjZDJzdHIgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBwdWJsaWMKKyAgaW50ZXJmYWNlIG9mIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCisKKy0gSXNzdWUgIzE3NDgyOiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgKGFuZCBmdW5jdG9vbHMud3JhcHMpIG5vdyBzZXQgdGhlCisgIF9fd3JhcHBlZF9fIGF0dHJpYnV0ZSBjb3JyZWN0bHkgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBoYXMgYQorICBfX3dyYXBwZWRfXyBhdHRyaWJ1dGUgc2V0LgorCistIElzc3VlICMxODQzMTogVGhlIG5ldyBlbWFpbCBoZWFkZXIgcGFyc2VyIG5vdyBkZWNvZGVzIFJGQzIwNDcgZW5jb2RlZCB3b3JkcworICBpbiBzdHJ1Y3R1cmVkIGhlYWRlcnMuCisKKy0gSXNzdWUgIzE4NDMyOiBUaGUgc2NoZWQgbW9kdWxlJ3MgcXVldWUgbWV0aG9kIHdhcyBpbmNvcnJlY3RseSByZXR1cm5pbmcKKyAgYW4gaXRlcmF0b3IgaW5zdGVhZCBvZiBhIGxpc3QuCisKKy0gSXNzdWUgIzE4MDQ0OiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgd2FzIG1pcy1wYXJzaW5nIGVuY29kZWQgd29yZHMgd2hlcmUKKyAgYW4gZW5jb2RlZCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgZm9sbG93ZWQgdGhlICc/JyB0aGF0IGZvbGxvd3MgdGhlIENURQorICBjaGFyYWN0ZXIsIHJlc3VsdGluZyBpbiBhIGRlY29kaW5nIGZhaWx1cmUuICBUaGV5IGFyZSBub3cgZGVjb2RlZCBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE4MTAxOiBUY2wuc3BsaXQoKSBub3cgcHJvY2VzcyBzdHJpbmdzIG5lc3RlZCBpbiBhIHR1cGxlIGFzIGl0CisgIGRvIHdpdGggYnl0ZSBzdHJpbmdzLgorCistIElzc3VlICMxODExNjogZ2V0cGFzcyB3YXMgYWx3YXlzIGdldHRpbmcgYW4gZXJyb3Igd2hlbiB0ZXN0aW5nIC9kZXYvdHR5LAorICBhbmQgdGh1cyB3YXMgYWx3YXlzIGZhbGxpbmcgYmFjayB0byBzdGRpbiwgYW5kIHdvdWxkIHRoZW4gcmFpc2UgYW4gZXhjZXB0aW9uCisgIGlmIHN0ZGluIGNvdWxkIG5vdCBiZSB1c2VkIChzdWNoIGFzIC9kZXYvbnVsbCkuICBJdCBhbHNvIGxlYWtlZCBhbiBvcGVuIGZpbGUuCisgIEFsbCBvZiB0aGVzZSBpc3N1ZXMgYXJlIG5vdyBmaXhlZC4KKworLSBJc3N1ZSAjMTcxOTg6IEZpeCBhIE5hbWVFcnJvciBpbiB0aGUgZGJtIG1vZHVsZS4gIFBhdGNoIGJ5IFZhbGVudGluYQorICBNdWtoYW1lZHpoYW5vdmEuCisKKy0gSXNzdWUgIzE4MDEzOiBGaXggY2dpLkZpZWxkU3RvcmFnZSB0byBwYXJzZSB0aGUgVzNDIHNhbXBsZSBmb3JtLgorCistIElzc3VlICMxODAyMDogaW1wcm92ZSBodG1sLmVzY2FwZSBzcGVlZCBieSBhbiBvcmRlciBvZiBtYWduaXR1ZGUuCisgIFBhdGNoIGJ5IE1hdHQgQnJ5YW50LgorCistIElzc3VlICMxODM0NzogRWxlbWVudFRyZWUncyBodG1sIHNlcmlhbGl6ZXIgbm93IHByZXNlcnZlcyB0aGUgY2FzZSBvZgorICBjbG9zaW5nIHRhZ3MuCisKKy0gSXNzdWUgIzE3MjYxOiBFbnN1cmUgbXVsdGlwcm9jZXNzaW5nJ3MgcHJveGllcyB1c2UgcHJvcGVyIGFkZHJlc3MuCisKKy0gSXNzdWUgIzE4MzQzOiBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoKSBub3cga2VlcHMgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyCisgIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZSwgc28gZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoKSByZXN0b3JlcworICBjb3JyZWN0bHkgdGhlIG9yaWdpbmFsIHNpZ25hbCBoYW5kbGVyLgorCistIElzc3VlICMxNzA5NzogTWFrZSBtdWx0aXByb2Nlc3NpbmcgaWdub3JlIEVJTlRSLgorCistIElzc3VlICMxODMzOTogTmVnYXRpdmUgaW50cyBrZXlzIGluIHVucGlja2xlci5tZW1vIGRpY3Qgbm8gbG9uZ2VyIGNhdXNlIGEKKyAgc2VnZmF1bHQgaW5zaWRlIHRoZSBfcGlja2xlIEMgZXh0ZW5zaW9uLgorCistIElzc3VlICMxODI0MDogVGhlIEhNQUMgbW9kdWxlIGlzIG5vIGxvbmdlciByZXN0cmljdGVkIHRvIGJ5dGVzIGFuZCBhY2NlcHRzCisgIGFueSBieXRlcy1saWtlIG9iamVjdCwgZS5nLiBtZW1vcnl2aWV3LiBPcmlnaW5hbCBwYXRjaCBieSBKb25hcyBCb3Jnc3Ryw7ZtLgorCistIElzc3VlICMxODIyNDogUmVtb3ZlZCBweWRvYyBzY3JpcHQgZnJvbSBjcmVhdGVkIHZlbnYsIGFzIGl0IGNhdXNlcyBwcm9ibGVtcworICBvbiBXaW5kb3dzIGFuZCBhZGRzIG5vIHZhbHVlIG92ZXIgYW5kIGFib3ZlIHB5dGhvbiAtbSBweWRvYyAuLi4KKworLSBJc3N1ZSAjMTgxNTU6IFRoZSBjc3YgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBjc3YgZmlsZXMgdGhhdCB1c2UKKyAgYSBkZWxpbWl0ZXIgY2hhcmFjdGVyIHRoYXQgaGFzIGEgc3BlY2lhbCBtZWFuaW5nIGluIHJlZ2V4ZXMsIGluc3RlYWQgb2YKKyAgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNDM2MDogZW5jb2RlX3F1b3ByaSBjYW4gbm93IGJlIHN1Y2Nlc3NmdWxseSB1c2VkIGFzIGFuIGVuY29kZXIKKyAgd2hlbiBjb25zdHJ1Y3RpbmcgYSBNSU1FQXBwbGljYXRpb24gb2JqZWN0LgorCistIElzc3VlICMxMTM5MDogQWRkIC1vIGFuZCAtZiBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byB0aGUgZG9jdGVzdCBDTEkgdG8KKyAgc3BlY2lmeSBkb2N0ZXN0IG9wdGlvbnMgKGFuZCBjb252ZXJ0IGl0IHRvIHVzaW5nIGFyZ3BhcnNlKS4KKworLSBJc3N1ZSAjMTgxMzU6IHNzbC5TU0xTb2NrZXQud3JpdGUoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGlucHV0CisgIHN0cmluZyBpbiBsb25nZXIgdGhhbiAyIGdpZ2FieXRlcywgYW5kIHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpCisgIHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHBhc3N3b3JkIGlzIGxvbmdlciB0aGFuIDIgZ2lnYWJ5dGVzLiBUaGUgc3NsCisgIG1vZHVsZSBkb2VzIG5vdCBzdXBwb3J0IHBhcnRpYWwgd3JpdGUuCisKKy0gSXNzdWUgIzExMDE2OiBBZGQgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhdCBtb2R1bGUgYXMgX3N0YXQuCisKKy0gSXNzdWUgIzE4MjQ4OiBGaXggbGliZmZpIGJ1aWxkIG9uIEFJWC4KKworLSBJc3N1ZSAjMTgyNTk6IERlY2xhcmUgc2V0aG9zdG5hbWUgaW4gc29ja2V0bW9kdWxlLmMgZm9yIEFJWAorCistIElzc3VlICMxODE0NzogQWRkIGRpYWdub3N0aWMgZnVuY3Rpb25zIHRvIHNzbC5TU0xDb250ZXh0KCkuIGdldF9jYV9saXN0KCkKKyAgbGlzdHMgYWxsIGxvYWRlZCBDQSBjZXJ0aWZpY2F0ZXMgYW5kIGNlcnRfc3RvcmVfc3RhdHMoKSByZXR1cm5zIGFtb3VudCBvZgorICBsb2FkZWQgWC41MDkgY2VydHMsIFguNTA5IENBIGNlcnRzIGFuZCBDUkxzLgorCistIElzc3VlICMxODE2NzogY2dpLkZpZWxkU3RvcmFnZSBubyBsb25nZXIgZmFpbHMgdG8gaGFuZGxlIG11bHRpcGFydC9mb3JtLWRhdGEKKyAgd2hlbiBgYFxyXG5gYCBhcHBlYXJzIGF0IGVuZCBvZiA2NTUzNSBieXRlcyB3aXRob3V0IG90aGVyIG5ld2xpbmVzLgorCistIElzc3VlICMxODA3NjogSW50cm9kdWNlIGltcG9ydGxpYi51dGlsLmRlY29kZV9zb3VyY2UoKS4KKworLSBJc3N1ZSAjMTgzNTc6IGFkZCB0ZXN0cyBmb3IgZGljdHZpZXcgc2V0IGRpZmZlcmVuY2UuCisgIFBhdGNoIGJ5IEZyYXNlciBUd2VlZGFsZS4KKworLSBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5nZXRfc291cmNlKCkgbm8gbG9uZ2VyIGNoYW5nZXMgU3ludGF4RXJyb3Igb3IKKyAgVW5pY29kZURlY29kZUVycm9yIGludG8gSW1wb3J0RXJyb3IuCisKKy0gSXNzdWUgIzE4MDU4LCAxODA1NzogTWFrZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UgbG9hZGVyIG1lZXQgdGhlCisgIGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlciBBQkMsIGFsbG93aW5nIGZvciBuYW1lc3BhY2UgcGFja2FnZXMgdG8gd29yayB3aXRoCisgIHJ1bnB5LgorCistIElzc3VlICMxNzE3NzogVGhlIGltcCBtb2R1bGUgaXMgcGVuZGluZyBkZXByZWNhdGlvbi4KKworLSBzdWJwcm9jZXNzOiBQcmV2ZW50IGEgcG9zc2libGUgZG91YmxlIGNsb3NlIG9mIHBhcmVudCBwaXBlIGZkcyB3aGVuIHRoZQorICBzdWJwcm9jZXNzIGV4ZWMgcnVucyBpbnRvIGFuIGVycm9yLiAgUHJldmVudCBhIHJlZ3VsYXIgbXVsdGktY2xvc2Ugb2YgdGhlCisgIC9kZXYvbnVsbCBmZCB3aGVuIGFueSBvZiBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgd2FzIHNldCB0byBERVZOVUxMLgorCistIElzc3VlICMxODE5NDogSW50cm9kdWNlIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCkgYW5kCisgIHNvdXJjZV9mcm9tX2NhY2hlKCkgd2hpbGUgZG9jdW1lbnRpbmcgdGhlIGVxdWl2YWxlbnQgZnVuY3Rpb25zIGluIGltcCBhcworICBkZXByZWNhdGVkLgorCistIElzc3VlICMxNzkwNzogRG9jdW1lbnQgaW1wLm5ld19tb2R1bGUoKSBhcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICB0eXBlcy5Nb2R1bGVUeXBlLgorCistIElzc3VlICMxODE5MjogSW50cm9kdWNlIGltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUiBhbmQgZG9jdW1lbnQgYXMgZGVwcmVjYXRlZAorICBpbXAuZ2V0X21hZ2ljKCkuCisKKy0gSXNzdWUgIzE4MTQ5OiBBZGQgZmlsZWNtcC5jbGVhcl9jYWNoZSgpIHRvIG1hbnVhbGx5IGNsZWFyIHRoZSBmaWxlY21wIGNhY2hlLgorICBQYXRjaCBieSBNYXJrIExldml0dAorCistIElzc3VlICMxODE5MzogQWRkIGltcG9ydGxpYi5yZWxvYWQoKS4KKworLSBJc3N1ZSAjMTgxNTc6IFN0b3AgdXNpbmcgaW1wLmxvYWRfbW9kdWxlKCkgaW4gcHlkb2MuCisKKy0gSXNzdWUgIzE2MTAyOiBNYWtlIHV1aWQuX25ldGJpb3NfZ2V0bm9kZSgpIHdvcmsgYWdhaW4gb24gUHl0aG9uIDMuCisKKy0gSXNzdWUgIzE3MTM0OiBBZGQgc3NsLmVudW1fY2VydF9zdG9yZSgpIGFzIGludGVyZmFjZSB0byBXaW5kb3dzJyBjZXJ0IHN0b3JlLgorCistIElzc3VlICMxODE0MzogSW1wbGVtZW50IHNzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSBpbiBvcmRlciB0byBkZWJ1ZworICB0aGUgZGVmYXVsdCBsb2NhdGlvbnMgZm9yIGNhZmlsZSBhbmQgY2FwYXRoLgorCistIElzc3VlICMxNzMxNDogTW92ZSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvdmVyIHRvIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTE5NTk6IFNNVFBTZXJ2ZXIgYW5kIFNNVFBDaGFubmVsIG5vdyB0YWtlIGFuIG9wdGlvbmFsIG1hcCwgdXNlIG9mCisgIHdoaWNoIGF2b2lkcyBhZmZlY3RpbmcgZ2xvYmFsIHN0YXRlLgorCistIElzc3VlICMxODEwOTogb3MudW5hbWUoKSBub3cgZGVjb2RlcyBmaWVsZHMgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLCBhbmQKKyAgc29ja2V0LmdldGhvc3RuYW1lKCkgbm93IGRlY29kZXMgdGhlIGhvc3RuYW1lIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZywKKyAgaW5zdGVhZCBvZiB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcgaW4gc3RyaWN0IG1vZGUuCisKKy0gSXNzdWUgIzE4MDg5OiBJbXBsZW1lbnQgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmxvYWRfbW9kdWxlLgorCistIElzc3VlICMxODA4ODogSW50cm9kdWNlIGltcG9ydGxpYi5hYmMuTG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzIGZvciBzZXR0aW5nCisgIG1vZHVsZSBhdHRyaWJ1dGVzLiBMZWFkcyB0byB0aGUgcGVuZGluZyBkZXByZWNhdGlvbiBvZgorICBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlci4KKworLSBJc3N1ZSAjMTc0MDM6IHVybGxpYi5wYXJzZS5yb2JvdHBhcnNlciBub3JtYWxpemVzIHRoZSB1cmxzIGJlZm9yZSBhZGRpbmcgdG8KKyAgcnVsZWxpbmUuIFRoaXMgaGVscHMgaW4gaGFuZGxpbmcgY2VydGFpbiB0eXBlcyBpbnZhbGlkIHVybHMgaW4gYSBjb25zZXJ2YXRpdmUKKyAgbWFubmVyLiBQYXRjaCBjb250cmlidXRlZCBieSBNaGVyIE1vdnNpc3lhbi4KKworLSBJc3N1ZSAjMTgwNzA6IEhhdmUgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBzZXQgYXR0cmlidXRlcworICB1bmNvbmRpdGlvbmFsbHkgaW4gb3JkZXIgdG8gcHJvcGVybHkgc3VwcG9ydCByZWxvYWRpbmcuCisKKy0gQWRkZWQgaW1wb3J0bGliLnV0aWwubW9kdWxlX3RvX2xvYWQgdG8gcmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRvIHByb3ZpZGUgdGhlCisgIHByb3BlciBtb2R1bGUgb2JqZWN0IHRvIGxvYWQuCisKKy0gSXNzdWUgIzE4MDI1OiBGaXhlZCBhIHNlZ2ZhdWx0IGluIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvKCkgd2hlbiByYXcKKyAgc3RyZWFtJ3MgcmVhZCgpIHJldHVybnMgbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KKworLSBJc3N1ZSAjMTgwMTE6IEFzIHdhcyBvcmlnaW5hbGx5IGludGVuZGVkLCBiYXNlNjQuYjMyZGVjb2RlKCkgbm93IHJhaXNlcyBhCisgIGJpbmFzY2lpLkVycm9yIGlmIHRoZXJlIGFyZSBub24tYjMyLWFscGhhYmV0IGNoYXJhY3RlcnMgcHJlc2VudCBpbiB0aGUgaW5wdXQKKyAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVHlwZUVycm9yLgorCistIElzc3VlICMxODA3MjogSW1wbGVtZW50IGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5nZXRfY29kZSgpIGFuZAorICBpbXBvcnRsaWIuYWJjLkV4ZWN1dGlvbkxvYWRlci5nZXRfY29kZSgpLgorCistIElzc3VlICM4MjQwOiBTZXQgdGhlIFNTTF9NT0RFX0FDQ0VQVF9NT1ZJTkdfV1JJVEVfQlVGRkVSIGZsYWcgb24gU1NMCisgIHNvY2tldHMuCisKKy0gSXNzdWUgIzE3MjY5OiBXb3JrYXJvdW5kIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8gY3Jhc2ggb24gTWFjT1MgWAorICB3aXRoIHBvcnQgTm9uZSBvciAiMCIgYW5kIGZsYWdzIEFJX05VTUVSSUNTRVJWLgorCistIElzc3VlICMxNjk4NjogRWxlbWVudFRyZWUgbm93IGNvcnJlY3RseSB3b3JrcyB3aXRoIHN0cmluZyBpbnB1dCB3aGVuIHRoZQorICBpbnRlcm5hbCBYTUwgZW5jb2RpbmcgaXMgbm90IFVURi04IG9yIFVTLUFTQ0lJLgorCistIElzc3VlICMxNzk5Njogc29ja2V0IG1vZHVsZSBub3cgZXhwb3NlcyBBRl9MSU5LIGNvbnN0YW50IG9uIEJTRCBhbmQgT1NYLgorCistIElzc3VlICMxNzkwMDogQWxsb3dlZCBwaWNrbGluZyBvZiByZWN1cnNpdmUgT3JkZXJlZERpY3RzLiAgRGVjcmVhc2VkIHBpY2tsZWQKKyAgc2l6ZSBhbmQgcGlja2xpbmcgdGltZS4KKworLSBJc3N1ZSAjMTc5MTQ6IEFkZCBvcy5jcHVfY291bnQoKS4gUGF0Y2ggYnkgWW9nZXNoIENoYXVkaGFyaSwgYmFzZWQgb24gYW4KKyAgaW5pdGlhbCBwYXRjaCBieSBUcmVudCBOZWxzb24uCisKKy0gSXNzdWUgIzE3ODEyOiBGaXhlZCBxdWFkcmF0aWMgY29tcGxleGl0eSBvZiBiYXNlNjQuYjMyZW5jb2RlKCkuCisgIE9wdGltaXplIGJhc2U2NC5iMzJlbmNvZGUoKSBhbmQgYmFzZTY0LmIzMmRlY29kZSgpIChzcGVlZCB1cCB0byAzeCkuCisKKy0gSXNzdWUgIzE3OTgwOiBGaXggcG9zc2libGUgYWJ1c2Ugb2Ygc3NsLm1hdGNoX2hvc3RuYW1lKCkgZm9yIGRlbmlhbCBvZgorICBzZXJ2aWNlIHVzaW5nIGNlcnRpZmljYXRlcyB3aXRoIG1hbnkgd2lsZGNhcmRzIChDVkUtMjAxMy0yMDk5KS4KKworLSBJc3N1ZSAjMTU3NTg6IEZpeCBGaWxlSU8ucmVhZGFsbCgpIHNvIGl0IG5vIGxvbmdlciBoYXMgTyhuKioyKSBjb21wbGV4aXR5LgorCistIElzc3VlICMxNDU5NjogVGhlIHN0cnVjdC5TdHJ1Y3QoKSBvYmplY3RzIG5vdyB1c2UgYSBtb3JlIGNvbXBhY3QKKyAgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE3OTgxOiBsb2dnaW5nJ3MgU3lzTG9nSGFuZGxlciBub3cgY2xvc2VzIHRoZSBzb2NrZXQgd2hlbiBpdCBjYXRjaGVzCisgIHNvY2tldCBPU0Vycm9ycy4KKworLSBJc3N1ZSAjMTc5NjQ6IEZpeCBvcy5zeXNjb25mKCk6IHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgQyBzeXNjb25mKCkgZnVuY3Rpb24KKyAgaXMgbG9uZywgbm90IGludC4KKworLSBGaXggdHlwb3MgaW4gdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUuCisKKy0gSXNzdWUgIzE3NzU0OiBNYWtlIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUuCisKKy0gSXNzdWUgIzE3OTY4OiBGaXggbWVtb3J5IGxlYWsgaW4gb3MubGlzdHhhdHRyKCkuCisKKy0gSXNzdWUgIzE3NjA2OiBGaXhlZCBzdXBwb3J0IG9mIGVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIHRoZSBYTUxHZW5lcmF0b3IKKyAgY2hhcmFjdGVycygpIGFuZCBpZ25vcmFibGVXaGl0ZXNwYWNlKCkgbWV0aG9kcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlYmFzdGlhbgorICBPcnRpeiBWYXNxdWV6LgorCistIElzc3VlICMxNzczMjogSWdub3JlIGRpc3R1dGlscy5jZmcgb3B0aW9ucyBwZXJ0YWluaW5nIHRvIGluc3RhbGwgcGF0aHMgaWYgYQorICB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZS4KKworLSBJc3N1ZSAjMTc5MTU6IEZpeCBpbnRlcm9wZXJhYmlsaXR5IG9mIHhtbC5zYXggd2l0aCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkKKyAgY29kZWNzLm9wZW4oKS4KKworLSBJc3N1ZSAjMTY2MDE6IFJlc3RhcnRpbmcgaXRlcmF0aW9uIG92ZXIgdGFyZmlsZSByZWFsbHkgcmVzdGFydHMgcmF0aGVyCisgIHRoYW4gY29udGludWluZyBmcm9tIHdoZXJlIGl0IGxlZnQgb2ZmLiAgUGF0Y2ggYnkgTWljaGFlbCBCaXJ0d2VsbC4KKworLSBJc3N1ZSAjMTcyODk6IFRoZSByZWFkbGluZSBtb2R1bGUgbm93IHBsYXlzIG5pY2VyIHdpdGggZXh0ZXJuYWwgbW9kdWxlcworICBvciBhcHBsaWNhdGlvbnMgY2hhbmdpbmcgdGhlIHJsX2NvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnMgZ2xvYmFsCisgIHZhcmlhYmxlLiAgSW5pdGlhbCBwYXRjaCBieSBCcmFkbGV5IEZyb2VobGUuCisKKy0gSXNzdWUgIzEyMTgxOiBzZWxlY3QgbW9kdWxlOiBGaXggc3RydWN0IGtldmVudCBkZWZpbml0aW9uIG9uIE9wZW5CU0QgNjQtYml0CisgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgRmVkZXJpY28gU2Nod2luZHQuCisKKy0gSXNzdWUgIzExODE2OiBtdWx0aXBsZSBpbXByb3ZlbWVudHMgdG8gdGhlIGRpcyBtb2R1bGU6IGdldF9pbnN0cnVjdGlvbnMKKyAgZ2VuZXJhdG9yLCBhYmlsaXR5IHRvIHJlZGlyZWN0IG91dHB1dCB0byBhIGZpbGUsIEJ5dGVjb2RlIGFuZCBJbnN0cnVjdGlvbgorICBhYnN0cmFjdGlvbnMuIFBhdGNoIGJ5IE5pY2sgQ29naGxhbiwgUnlhbiBLZWxseSBhbmQgVGhvbWFzIEtsdXl2ZXIuCisKKy0gSXNzdWUgIzEzODMxOiBFbWJlZCBzdHJpbmdpZmljYXRpb24gb2YgcmVtb3RlIHRyYWNlYmFjayBpbiBsb2NhbAorICB0cmFjZWJhY2sgcmFpc2VkIHdoZW4gcG9vbCB0YXNrIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzE1NTI4OiBBZGQgd2Vha3JlZi5maW5hbGl6ZSB0byBzdXBwb3J0IGZpbmFsaXphdGlvbiB1c2luZworICB3ZWFrcmVmIGNhbGxiYWNrcy4KKworLSBJc3N1ZSAjMTQxNzM6IEF2b2lkIGNyYXNoaW5nIHdoZW4gcmVhZGluZyBhIHNpZ25hbCBoYW5kbGVyIGR1cmluZworICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMTU5MDI6IEZpeCBpbXAubG9hZF9tb2R1bGUoKSBhY2NlcHRpbmcgTm9uZSBhcyBhIGZpbGUgd2hlbiBsb2FkaW5nIGFuCisgIGV4dGVuc2lvbiBtb2R1bGUuCisKKy0gSXNzdWUgIzEzNzIxOiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKSBhbmQgU1NMU29ja2V0LmRvX2hhbmRzaGFrZSgpIG5vdworICByYWlzZSBhbiBPU0Vycm9yIHdpdGggRU5PVENPTk4sIGluc3RlYWQgb2YgYW4gQXR0cmlidXRlRXJyb3IsIHdoZW4gdGhlCisgIFNTTFNvY2tldCBpcyBub3QgY29ubmVjdGVkLgorCistIElzc3VlICMxNDY3OTogYWRkIGFuIF9fYWxsX18gKHRoYXQgY29udGFpbnMgb25seSBIVE1MUGFyc2VyKSB0byBodG1sLnBhcnNlci4KKworLSBJc3N1ZSAjMTc4MDI6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBodG1sLnBhcnNlci4gIEluaXRpYWwgdGVzdHMgYnkKKyAgVGhvbWFzIEJhcmxvdy4KKworLSBJc3N1ZSAjMTczNTg6IE1vZHVsZXMgbG9hZGVkIGJ5IGltcC5sb2FkX3NvdXJjZSgpIGFuZCBsb2FkX2NvbXBpbGVkKCkgKGFuZCBieQorICBleHRlbnNpb24gbG9hZF9tb2R1bGUoKSkgbm93IGhhdmUgYSBiZXR0ZXIgY2hhbmNlIG9mIHdvcmtpbmcgd2hlbiByZWxvYWRlZC4KKworLSBJc3N1ZSAjMTc4MDQ6IE5ldyBmdW5jdGlvbiBgYHN0cnVjdC5pdGVyX3VucGFja2BgIGFsbG93cyBmb3Igc3RyZWFtaW5nCisgIHN0cnVjdCB1bnBhY2tpbmcuCisKKy0gSXNzdWUgIzE3ODMwOiBXaGVuIGtleXdvcmQucHkgaXMgdXNlZCB0byB1cGRhdGUgYSBrZXl3b3JkIGZpbGUsIGl0IG5vdworICBwcmVzZXJ2ZXMgdGhlIGxpbmUgZW5kaW5ncyBvZiB0aGUgb3JpZ2luYWwgZmlsZS4KKworLSBJc3N1ZSAjMTcyNzI6IE1ha2luZyB0aGUgdXJsbGliLnJlcXVlc3QncyBSZXF1ZXN0LmZ1bGxfdXJsIGEgZGVzY3JpcHRvci4KKyAgRml4ZXMgYnVncyB3aXRoIGFzc2lnbm1lbnQgdG8gZnVsbF91cmwuIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzE3MzUzOiBQbGlzdGxpYiBlbWl0dGVkIGVtcHR5IGRhdGEgdGFncyB3aXRoIGRlZXBseSBuZXN0ZWQgZGF0YXN0cnVjdHVyZXMKKworLSBJc3N1ZSAjMTE3MTQ6IFVzZSAnd2l0aCcgc3RhdGVtZW50cyB0byBhc3N1cmUgYSBTZW1hcGhvcmUgcmVsZWFzZXMgYQorICBjb25kaXRpb24gdmFyaWFibGUuICBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgUmFjaGVsLgorCistIElzc3VlICMxNjYyNDogYHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0YCBub3cgYWNjZXB0cyBhbiBgaW5wdXRgIGFyZ3VtZW50LAorICBhbGxvd2luZyB0aGUgc3VicHJvY2VzcydzIHN0ZGluIHRvIGJlIHByb3ZpZGVkIGFzIGEgKGJ5dGUpIHN0cmluZy4KKyAgUGF0Y2ggYnkgWmFjayBXZWluYmVyZy4KKworLSBJc3N1ZSAjMTc3OTU6IFJldmVydGVkIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIFN5c0xvZ0hhbmRsZXIgd2l0aAorICBVbml4IGRvbWFpbiBzb2NrZXRzLgorCistIElzc3VlICMxNjY5NDogQWRkIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIG1vZHVsZS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxMTE4MjogcmVtb3ZlIHRoZSB1bnVzZWQgYW5kIHVuZG9jdW1lbnRlZCBweWRvYy5TY2FubmVyIGNsYXNzLgorICBQYXRjaCBieSBNYXJ0aW4gTW9ycmlzb24uCisKKy0gSXNzdWUgIzE3NzQxOiBBZGQgRWxlbWVudFRyZWUuWE1MUHVsbFBhcnNlciwgYW4gZXZlbnQtZHJpdmVuIHBhcnNlciBmb3IKKyAgbm9uLWJsb2NraW5nIGFwcGxpY2F0aW9ucy4KKworLSBJc3N1ZSAjMTc1NTU6IEZpeCBGb3JrQXdhcmVUaHJlYWRMb2NrIHNvIHRoYXQgc2l6ZSBvZiBhZnRlciBmb3JrCisgIHJlZ2lzdHJ5IGRvZXMgbm90IGdyb3cgZXhwb25lbnRpYWxseSB3aXRoIGdlbmVyYXRpb24gb2YgcHJvY2Vzcy4KKworLSBJc3N1ZSAjMTc3MDc6IGZpeCByZWdyZXNzaW9uIGluIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSdzIGdldCgpIG1ldGhvZCB3aGVyZQorICBpdCBkaWQgbm90IGJsb2NrIGZvciBzaG9ydCB0aW1lb3V0cy4KKworLSBJc3N1ZSAjMTc3MjA6IEZpeCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHBpY2tsZS5VbnBpY2tsZXIgdG8gY29ycmVjdGx5CisgIHByb2Nlc3MgdGhlIEFQUEVORFMgb3Bjb2RlIHdoZW4gaXQgaXMgdXNlZCBvbiBub24tbGlzdCBvYmplY3RzLgorCistIElzc3VlICMxNzAxMjogc2h1dGlsLndoaWNoKCkgbm8gbG9uZ2VyIGZhbGxzIGJhY2sgdG8gdGhlIFBBVEggZW52aXJvbm1lbnQKKyAgdmFyaWFibGUgaWYgYW4gZW1wdHkgcGF0aCBhcmd1bWVudCBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNzcxMDogRml4IHBpY2tsZSByYWlzaW5nIGEgU3lzdGVtRXJyb3Igb24gYm9ndXMgaW5wdXQuCisKKy0gSXNzdWUgIzE3MzQxOiBJbmNsdWRlIHRoZSBpbnZhbGlkIG5hbWUgaW4gdGhlIGVycm9yIG1lc3NhZ2VzIGZyb20gcmUgYWJvdXQKKyAgaW52YWxpZCBncm91cCBuYW1lcy4KKworLSBJc3N1ZSAjMTc3MDI6IG9zLmVudmlyb24gbm93IHJhaXNlcyBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudAorICB2YXJpYWJsZSBuYW1lIChzdHIgb24gVU5JWCksIGluc3RlYWQgb2YgdXNpbmcgdGhlIGVuY29kZWQgbmFtZSAoYnl0ZXMgb24KKyAgVU5JWCkuCisKKy0gSXNzdWUgIzE2MTYzOiBNYWtlIHRoZSBpbXBvcnRsaWIgYmFzZWQgdmVyc2lvbiBvZiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzCisgIHdvcmsgZm9yIHN1Ym1vZHVsZXMuIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBJc3N1ZSAjMTY4MDQ6IEZpeCBhIGJ1ZyBpbiB0aGUgJ3NpdGUnIG1vZHVsZSB0aGF0IGNhdXNlZCBydW5uaW5nCisgICdweXRob24gLVMgLW0gc2l0ZScgdG8gaW5jb3JyZWN0bHkgdGhyb3cgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNTQ4MDogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFuZCB1bnVzZWQgVFlQRV9JTlQ2NCBjb2RlIGZyb20gbWFyc2hhbC4KKyAgSW5pdGlhbCBwYXRjaCBieSBEYW5pZWwgUml0aS4KKworLSBJc3N1ZSAjMjExODogU01UUEV4Y2VwdGlvbiBpcyBub3cgYSBzdWJjbGFzcyBvZiBPU0Vycm9yLgorCistIElzc3VlICMxNzAxNjogR2V0IHJpZCBvZiBwb3NzaWJsZSBwb2ludGVyIHdyYXBhcm91bmRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cworICBpbiB0aGUgcmUgbW9kdWxlLiAgUGF0Y2ggYnkgTmlja29sYWkgWmVsZG92aWNoLgorCistIElzc3VlICMxNjY1ODogYWRkIG1pc3NpbmcgcmV0dXJuIHRvIEhUVFBDb25uZWN0aW9uLnNlbmQoKS4KKyAgUGF0Y2ggYnkgSmVmZiBLbnVwcC4KKworLSBJc3N1ZSAjOTU1NjogdGhlIGxvZ2dpbmcgcGFja2FnZSBub3cgYWxsb3dzIHNwZWNpZnlpbmcgYSB0aW1lLW9mLWRheSBmb3IgYQorICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIgdG8gcm90YXRlLgorCistIElzc3VlICMxNDk3MTogdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGdldHMgY29uZnVzZWQgd2hlbiBhIGZ1bmN0aW9uCisgIGhhcyBhIGRpZmZlcmVudCBfX25hbWVfXyB0aGFuIGl0cyBuYW1lIGluIHRoZSBUZXN0Q2FzZSBjbGFzcyBkaWN0aW9uYXJ5LgorCistIElzc3VlICMxNzQ4NzogVGhlIHdhdmUgZ2V0cGFyYW1zIG1ldGhvZCBub3cgcmV0dXJucyBhIG5hbWVkdHVwbGUgcmF0aGVyIHRoYW4KKyAgYSBwbGFpbiB0dXBsZS4KKworLSBJc3N1ZSAjMTc2NzU6IHNvY2tldCByZXByKCkgcHJvdmlkZXMgbG9jYWwgYW5kIHJlbW90ZSBhZGRyZXNzZXMgKGlmIGFueSkuCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnCisKKy0gSXNzdWUgIzE3MDkzOiBNYWtlIHRoZSBBQkNzIGluIGltcG9ydGxpYi5hYmMgcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBvciByYWlzZQorICByZWFzb25hYmxlIGV4Y2VwdGlvbnMgZm9yIHRoZWlyIG1ldGhvZHMgdG8gbWFrZSB0aGVtIG1vcmUgYW1lbmFibGUgdG8gc3VwZXIoKQorICBjYWxscy4KKworLSBJc3N1ZSAjMTc1NjY6IE1ha2UgaW1wb3J0bGliLmFiYy5Mb2FkZXIubW9kdWxlX3JlcHIoKSBvcHRpb25hbCBpbnN0ZWFkIG9mIGFuCisgIGFic3RyYWN0bWV0aG9kOyBub3cgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igc28gYXMgdG8gYmUgaWdub3JlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMxNzY3ODogUmVtb3ZlIHRoZSB1c2Ugb2YgZGVwcmVjYXRlZCBtZXRob2QgaW4gaHR0cC9jb29raWVqYXIucHkgYnkKKyAgY2hhbmdpbmcgdGhlIGNhbGwgdG8gZ2V0X29yaWdpbl9yZXFfaG9zdCgpIHRvIG9yaWdpbl9yZXFfaG9zdC4KKworLSBJc3N1ZSAjMTc2NjY6IEZpeCByZWFkaW5nIGd6aXAgZmlsZXMgd2l0aCBhbiBleHRyYSBmaWVsZC4KKworLSBJc3N1ZSAjMTY0NzU6IFN1cHBvcnQgb2JqZWN0IGluc3RhbmNpbmcsIHJlY3Vyc2lvbiBhbmQgaW50ZXJuZWQgc3RyaW5ncworICBpbiBtYXJzaGFsCisKKy0gSXNzdWUgIzE3NTAyOiBQcm9jZXNzIERFRkFVTFQgdmFsdWVzIGluIG1vY2sgc2lkZV9lZmZlY3QgdGhhdCByZXR1cm5zIGl0ZXJhdG9yLgorCistIElzc3VlICMxNjc5NTogT24gdGhlIGFzdC5hcmd1bWVudHMgb2JqZWN0LCB1bmlmeSB2YXJhcmcgd2l0aCB2YXJhcmdhbm5vdGF0aW9uCisgIGFuZCBrd2FyZyBhbmQga3dhcmdhbm5vdGF0aW9uLiBDaGFuZ2UgdGhlIGNvbHVtbiBvZmZzZXQgb2YgYXN0LkF0dHJpYnV0ZSB0byBiZQorICBhdCB0aGUgYXR0cmlidXRlIG5hbWUuCisKKy0gSXNzdWUgIzE3NDM0OiBQcm9wZXJseSByYWlzZSBhIFN5bnRheEVycm9yIHdoZW4gYSBzdHJpbmcgb2NjdXJzIGJldHdlZW4gZnV0dXJlCisgIGltcG9ydHMuCisKKy0gSXNzdWUgIzE3MTE3OiBJbXBvcnQgYW5kIEBpbXBvcnRsaWIudXRpbC5zZXRfbG9hZGVyIG5vdyBzZXQgX19sb2FkZXJfXyB3aGVuCisgIGl0IGhhcyBhIHZhbHVlIG9mIE5vbmUgb3IgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LgorCistIElzc3VlICMxNzAzMjogVGhlICJnbG9iYWwiIGluIHRoZSAiTmFtZUVycm9yOiBnbG9iYWwgbmFtZSAneCcgaXMgbm90IGRlZmluZWQiCisgIGVycm9yIG1lc3NhZ2UgaGFzIGJlZW4gcmVtb3ZlZC4gIFBhdGNoIGJ5IFJhbSBSYWNodW0uCisKKy0gSXNzdWUgIzE4MDgwOiBXaGVuIGJ1aWxkaW5nIGEgQyBleHRlbnNpb24gbW9kdWxlIG9uIE9TIFgsIGlmIHRoZSBjb21waWxlcgorICBpcyBvdmVycmlkZGVuIHdpdGggdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlLCB1c2UgdGhlIG5ldyBjb21waWxlciBhcworICB0aGUgZGVmYXVsdCBmb3IgbGlua2luZyBpZiBMRFNIQVJFRCBpcyBub3QgYWxzbyBvdmVycmlkZGVuLiAgVGhpcyByZXN0b3JlcworICBEaXN0dXRpbHMgYmVoYXZpb3IgaW50cm9kdWNlZCBpbiAzLjIuMyBhbmQgaW5hZHZlcnRlbnRseSBkcm9wcGVkIGluIDMuMy4wLgorCistIElzc3VlICMxODExMzogRml4ZWQgYSByZWZjb3VudCBsZWFrIGluIHRoZSBjdXJzZXMucGFuZWwgbW9kdWxlJ3MKKyAgc2V0X3VzZXJwdHIoKSBtZXRob2QuICBSZXBvcnRlZCBieSBBdHN1byBJc2hpbW90by4KKworLSBJbXBsZW1lbnQgUEVQIDQ0MyAiU2luZ2xlLWRpc3BhdGNoIGdlbmVyaWMgZnVuY3Rpb25zIi4KKworLSBJbXBsZW1lbnQgUEVQIDQzNSAiQWRkaW5nIGFuIEVudW0gdHlwZSB0byB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkiLgorCistIElzc3VlICMxNTU5NjogRmFzdGVyIHBpY2tsaW5nIG9mIHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTc1NzI6IEF2b2lkIGNoYWluZWQgZXhjZXB0aW9ucyB3aGVuIHBhc3NpbmcgYmFkIGRpcmVjdGl2ZXMgdG8KKyAgdGltZS5zdHJwdGltZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE3NDM1OiB0aHJlYWRpbmcuVGltZXIncyBfX2luaXRfXyBtZXRob2Qgbm8gbG9uZ2VyIHVzZXMgbXV0YWJsZQorICBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGFyZ3MgYW5kIGt3YXJncyBwYXJhbWV0ZXJzLgorCistIElzc3VlICMxNzUyNjogZml4IGFuIEluZGV4RXJyb3IgcmFpc2VkIHdoaWxlIHBhc3NpbmcgY29kZSB3aXRob3V0IGZpbGVuYW1lIHRvCisgIGluc3BlY3QuZmluZHNvdXJjZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBUeWxlciBEb3lsZS4KKworLSBJc3N1ZSAjMTc1NDA6IEFkZGVkIHN0eWxlIHBhcmFtZXRlciB0byBsb2dnaW5nIGZvcm1hdHRlciBjb25maWd1cmF0aW9uIGJ5IGRpY3QuCisKKy0gSXNzdWUgIzE2NjkyOiBUaGUgc3NsIG1vZHVsZSBub3cgc3VwcG9ydHMgVExTIDEuMSBhbmQgVExTIDEuMi4gIEluaXRpYWwKKyAgcGF0Y2ggYnkgTWljaGVsZSBPcnLDuS4KKworLSBJc3N1ZSAjMTcwMjU6IG11bHRpcHJvY2Vzc2luZzogUmVkdWNlIFF1ZXVlIGFuZCBTaW1wbGVRdWV1ZSBjb250ZW50aW9uLgorCistIElzc3VlICMxNzUzNjogQWRkIHRvIHdlYmJyb3dzZXIncyBicm93c2VyIGxpc3Q6IHd3dy1icm93c2VyLCB4LXd3dy1icm93c2VyLAorICBpY2V3ZWFzZWwsIGljZWFwZS4KKworLSBJc3N1ZSAjMTcxNTA6IHBwcmludCBub3cgdXNlcyBsaW5lIGNvbnRpbnVhdGlvbnMgdG8gd3JhcCBsb25nIHN0cmluZworICBsaXRlcmFscy4KKworLSBJc3N1ZSAjMTc0ODg6IENoYW5nZSB0aGUgc3VicHJvY2Vzcy5Qb3BlbiBidWZzaXplIHBhcmFtZXRlciBkZWZhdWx0IHZhbHVlCisgIGZyb20gdW5idWZmZXJlZCAoMCkgdG8gYnVmZmVyaW5nICgtMSkgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIGV4aXN0aW5nIGNvZGUKKyAgZXhwZWN0cyBhbmQgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBpbiBQeXRob24gMiB0byBhdm9pZAorICBpbnRyb2R1Y2luZyBoYXJkIHRvIHRyYWNrIGRvd24gYnVncy4KKworLSBJc3N1ZSAjMTc1MjE6IENvcnJlY3RlZCBub24tZW5hYmxpbmcgb2YgbG9nZ2VyIGZvbGxvd2luZyB0d28gY2FsbHMgdG8KKyAgZmlsZUNvbmZpZygpLgorCistIElzc3VlICMxNzUwODogQ29ycmVjdGVkIGxvZ2dpbmcgTWVtb3J5SGFuZGxlciBjb25maWd1cmF0aW9uIGluIGRpY3RDb25maWcoKQorICB3aGVyZSB0aGUgdGFyZ2V0IGhhbmRsZXIgd2Fzbid0IGNvbmZpZ3VyZWQgZmlyc3QuCisKKy0gSXNzdWUgIzE3MjA5OiBjdXJzZXMud2luZG93LmdldF93Y2goKSBub3cgY29ycmVjdGx5IGhhbmRsZXMgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgKENUUkwrYykuCisKKy0gSXNzdWUgIzU3MTM6IHNtdHBsaWIgbm93IGhhbmRsZXMgNDIxIChjbG9zaW5nIGNvbm5lY3Rpb24pIGVycm9yIGNvZGVzIHdoZW4KKyAgc2VuZGluZyBtYWlsIGJ5IGNsb3NpbmcgdGhlIHNvY2tldCBhbmQgcmVwb3J0aW5nIHRoZSA0MjEgZXJyb3IgY29kZSB2aWEgdGhlCisgIGV4Y2VwdGlvbiBhcHByb3ByaWF0ZSB0byB0aGUgY29tbWFuZCB0aGF0IHJlY2VpdmVkIHRoZSBlcnJvciByZXNwb25zZS4KKworLSBJc3N1ZSAjMTY5OTc6IHVuaXR0ZXN0LlRlc3RDYXNlIG5vdyBwcm92aWRlcyBhIHN1YlRlc3QoKSBjb250ZXh0IG1hbmFnZXIKKyAgdG8gcHJvY2VkdXJhbGx5IGdlbmVyYXRlLCBpbiBhbiBlYXN5IHdheSwgc21hbGwgdGVzdCBpbnN0YW5jZXMuCisKKy0gSXNzdWUgIzE3NDg1OiBBbHNvIGRlbGV0ZSB0aGUgUmVxdWVzdCBDb250ZW50LUxlbmd0aCBoZWFkZXIgaWYgdGhlIGRhdGEKKyAgYXR0cmlidXRlIGlzIGRlbGV0ZWQuICAoRm9sbG93IG9uIHRvIGlzc3VlIElzc3VlICMxNjQ2NCkuCisKKy0gSXNzdWUgIzE1OTI3OiBDVlMgbm93IGNvcnJlY3RseSBwYXJzZXMgZXNjYXBlZCBuZXdsaW5lcyBhbmQgY2FycmlhZ2UKKyAgd2hlbiBwYXJzaW5nIHdpdGggcXVvdGluZyB0dXJuZWQgb2ZmLgorCistIElzc3VlICMxNzQ2NzogYWRkIHJlYWRsaW5lIGFuZCByZWFkbGluZXMgc3VwcG9ydCB0byBtb2NrX29wZW4gaW4KKyAgdW5pdHRlc3QubW9jay4KKworLSBJc3N1ZSAjMTMyNDg6IHJlbW92ZWQgZGVwcmVjYXRlZCBhbmQgdW5kb2N1bWVudGVkIGRpZmZsaWIuaXNianVuaywKKyAgaXNicG9wdWxhci4KKworLSBJc3N1ZSAjMTcxOTI6IFVwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4wLjEzLiAgVGhpcworICBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgc3RhY2sgbWlzYWxpZ25tZW50IGlzc3VlIG9uIHg4NiBhbmQgaXNzdWVzIG9uCisgIHNvbWUgbW9yZSByZWNlbnQgcGxhdGZvcm1zLgorCistIElzc3VlICM4ODYyOiBGaXhlZCBjdXJzZXMgY2xlYW51cCB3aGVuIGdldGtleSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KKworLSBJc3N1ZSAjMTc0NDM6IGltYXBsaWIuSU1BUDRfc3RyZWFtIHdhcyB1c2luZyB0aGUgZGVmYXVsdCB1bmJ1ZmZlcmVkIElPCisgIGluIHN1YnByb2Nlc3MsIGJ1dCB0aGUgaW1hcCBjb2RlIGFzc3VtZXMgYnVmZmVyZWQgSU8uICBJbiBQeXRob24yIHRoaXMKKyAgd29ya2VkIGJ5IGFjY2lkZW50LiAgSU1BUDRfc3RyZWFtIG5vdyBleHBsaWNpdGx5IHVzZXMgYnVmZmVyZWQgSU8uCisKKy0gSXNzdWUgIzE3NDc2OiBGaXhlZCByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIgaW4gdW5kb2N1bWVudGVkIHB5ZG9jCisgICdhbGxtZXRob2RzJzsgaXQgd2FzIG1pc3NpbmcgdW5ib3VuZCBtZXRob2RzIG9uIHRoZSBjbGFzcy4KKworLSBJc3N1ZSAjMTc0NzQ6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2RzIG9mIFJlcXVlc3QgY2xhc3MuCisKKy0gSXNzdWUgIzE2NzA5OiB1bml0dGVzdCBkaXNjb3ZlciBvcmRlciBpcyBuby1sb25nZXIgZmlsZXN5c3RlbSBzcGVjaWZpYy4gUGF0Y2gKKyAgYnkgSmVmZiBSYW1uYW5pLgorCistIFVzZSB0aGUgSFRUUFMgUHlQSSB1cmwgZm9yIHVwbG9hZCwgb3ZlcnJpZGluZyBhbnkgcGxhaW4gSFRUUCBVUkwgaW4gcHlwaXJjLgorCistIElzc3VlICM1MDI0OiBzbmRoZHIud2hpY2hoZHIgbm93IHJldHVybnMgdGhlIGZyYW1lIGNvdW50IGZvciBXQVYgZmlsZXMKKyAgcmF0aGVyIHRoYW4gLTEuCisKKy0gSXNzdWUgIzE3NDYwOiBSZW1vdmUgdGhlIHN0cmljdCBhcmd1bWVudCBvZiBIVFRQQ29ubmVjdGlvbiBhbmQgcmVtb3ZpbmcgdGhlCisgIERlcHJlY2F0aW9uV2FybmluZyBiZWluZyBpc3N1ZWQgZnJvbSAzLjIgb253YXJkcy4KKworLSBJc3N1ZSAjMTY4ODA6IERvIG5vdCBhc3N1bWUgX2ltcC5sb2FkX2R5bmFtaWMoKSBpcyBkZWZpbmVkIGluIHRoZSBpbXAgbW9kdWxlLgorCistIElzc3VlICMxNjM4OTogRml4ZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbiAzLjEgaW4gdGhlCisgIGNhY2hpbmcgb2YgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4KKworLSBBZGRlZCBtaXNzaW5nIEZlZWRQYXJzZXIgYW5kIEJ5dGVzRmVlZFBhcnNlciB0byBlbWFpbC5wYXJzZXIuX19hbGxfXy4KKworLSBJc3N1ZSAjMTc0MzE6IEZpeCBtaXNzaW5nIGltcG9ydCBvZiBCeXRlc0ZlZWRQYXJzZXIgaW4gZW1haWwucGFyc2VyLgorCistIElzc3VlICMxMjkyMTogaHR0cC5zZXJ2ZXIncyBzZW5kX2Vycm9yIHRha2VzIGFuIGV4cGxhaW4gYXJndW1lbnQgdG8gc2VuZCBtb3JlCisgIGluZm9ybWF0aW9uIGluIHJlc3BvbnNlLiBQYXRjaCBjb250cmlidXRlZCBieSBLYXJsLgorCistIElzc3VlICMxNzQxNDogQWRkIHRpbWVpdCwgcmVwZWF0LCBhbmQgZGVmYXVsdF90aW1lciB0byB0aW1laXQuX19hbGxfXy4KKworLSBJc3N1ZSAjMTI4NTA4NjogR2V0IHJpZCBvZiB0aGUgcmVmY291bnRpbmcgaGFjayBhbmQgc3BlZWQgdXAKKyAgdXJsbGliLnBhcnNlLnVucXVvdGUoKSBhbmQgdXJsbGliLnBhcnNlLnVucXVvdGVfdG9fYnl0ZXMoKS4KKworLSBJc3N1ZSAjMTcwOTk6IEhhdmUgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgcmFpc2UgVmFsdWVFcnJvciB3aGVuIF9fbG9hZGVyX18KKyAgaXMgbm90IHNldCwgaGFybW9uaXppbmcgd2l0aCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgYXR0cmlidXRlIGlzIHNldCB0byBOb25lLgorCistIEV4cG9zZSB0aGUgT19QQVRIIGNvbnN0YW50IGluIHRoZSBvcyBtb2R1bGUgaWYgaXQgaXMgYXZhaWxhYmxlLgorCistIElzc3VlICMxNzM2ODogRml4IGFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gdGhlIFB5dGhvbiBKU09OIGRlY29kZXIgdGhhdCBjYXVzZWQKKyAgYSBmYWlsdXJlIHdoaWxlIGRlY29kaW5nIGVtcHR5IG9iamVjdCBsaXRlcmFscyB3aGVuIG9iamVjdF9wYWlyc19ob29rIHdhcworICBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzE3Mzg1OiBGaXggcXVhZHJhdGljIGJlaGF2aW9yIGluIHRocmVhZGluZy5Db25kaXRpb24uICBUaGUgRklGTworICBxdWV1ZSBub3cgdXNlcyBhIGRlcXVlIGluc3RlYWQgb2YgYSBsaXN0LgorCistIElzc3VlICMxNTgwNjogQWRkIGNvbnRleHRsaWIuaWdub3JlKCkuICBUaGlzIGNyZWF0ZXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KKyAgaWdub3JlIHNwZWNpZmllZCBleGNlcHRpb25zLCByZXBsYWNpbmcgdGhlICJleGNlcHQgU29tZUV4Y2VwdGlvbjogcGFzcyIgaWRpb20uCisKKy0gSXNzdWUgIzE0NjQ1OiBUaGUgZW1haWwgZ2VuZXJhdG9yIGNsYXNzZXMgbm93IHByb2R1Y2Ugb3V0cHV0IHVzaW5nIHRoZQorICBzcGVjaWZpZWQgbGluZXNlcCB0aHJvdWdob3V0LiAgUHJldmlvdXNseSBpZiB0aGUgcHJvbG9nLCBlcGlsb2csIG9yCisgIGJvZHkgd2VyZSBzdG9yZWQgd2l0aCBhIGRpZmZlcmVudCBsaW5lc2VwLCB0aGF0IGxpbmVzZXAgd2FzIHVzZWQuICBUaGlzCisgIGZpeCBjb3JyZWN0cyBhbiBSRkMgbm9uLWNvbXBsaWFuY2UgaXNzdWUgd2l0aCBzbXRwbGliLnNlbmRfbWVzc2FnZS4KKworLSBJc3N1ZSAjMTcyNzg6IEZpeCBhIGNyYXNoIGluIGhlYXBxLmhlYXBwdXNoKCkgYW5kIGhlYXBxLmhlYXBwb3AoKSB3aGVuCisgIHRoZSBsaXN0IGlzIGJlaW5nIHJlc2l6ZWQgY29uY3VycmVudGx5LgorCistIElzc3VlICMxNjk2MjogVXNlIGdldGRlbnRzNjQgaW5zdGVhZCBvZiB0aGUgb2Jzb2xldGUgZ2V0ZGVudHMgc3lzY2FsbAorICBpbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgb24gTGludXguCisKKy0gSXNzdWUgIzE2OTM1OiB1bml0dGVzdCBub3cgY291bnRzIHRoZSBtb2R1bGUgYXMgc2tpcHBlZCBpZiBpdCByYWlzZXMgU2tpcFRlc3QsCisgIGluc3RlYWQgb2YgY291bnRpbmcgaXQgYXMgYW4gZXJyb3IuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3MDE4OiBNYWtlIFByb2Nlc3Muam9pbigpIHJldHJ5IGlmIG9zLndhaXRwaWQoKSBmYWlscyB3aXRoIEVJTlRSLgorCistIElzc3VlICMxNzIyMzogYXJyYXkgbW9kdWxlOiBGaXggYSBjcmFzaGVyIHdoZW4gY29udmVydGluZyBhbiBhcnJheSBjb250YWluaW5nCisgIGludmFsaWQgY2hhcmFjdGVycyAob3V0c2lkZSByYW5nZSBbVSswMDAwOyBVKzEwZmZmZl0pIHRvIFVuaWNvZGU6CisgIHJlcHIoYXJyYXkpLCBzdHIoYXJyYXkpIGFuZCBhcnJheS50b3VuaWNvZGUoKS4gUGF0Y2ggd3JpdHRlbiBieSBNYW51ZWwgSmFjb2IuCisKKy0gSXNzdWUgIzE3MTk3OiBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgcmVmYWN0b3JlZCBzbyB0aGF0IGNvZGUgb2YgcnVuKCkgYW5kCisgIHJ1bmN0eCgpIHV0aWxpdHkgZnVuY3Rpb25zIGlzIG5vdCBkdXBsaWNhdGVkIGluIGJvdGggbW9kdWxlcy4KKworLSBJc3N1ZSAjMTQ3MjA6IHNxbGl0ZTM6IENvbnZlcnQgZGF0ZXRpbWUgbWljcm9zZWNvbmRzIGNvcnJlY3RseS4KKyAgUGF0Y2ggYnkgTG93ZSBUaGlkZXJtYW4uCisKKy0gSXNzdWUgIzE1MTMyOiBBbGxvdyBhIGxpc3QgZm9yIHRoZSBkZWZhdWx0VGVzdCBhcmd1bWVudCBvZgorICB1bml0dGVzdC5UZXN0UHJvZ3JhbS4gUGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KKworLSBJc3N1ZSAjMTcyMjU6IEpTT04gZGVjb2RlciBub3cgY291bnRzIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcKKyAgd2l0aCAxLCBhcyBpbiBvdGhlciBsaW5lcy4KKworLSBJc3N1ZSAjNjYyMzogQWRkZWQgZXhwbGljaXQgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmdHBsaWIubmV0cmMsIHdoaWNoIGhhcworICBiZWVuIGRlcHJlY2F0ZWQgYW5kIHVuZG9jdW1lbnRlZCBmb3IgYSBsb25nIHRpbWUuCisKKy0gSXNzdWUgIzEzNzAwOiBGaXggYnl0ZS9zdHJpbmcgaGFuZGxpbmcgaW4gaW1hcGxpYiBhdXRoZW50aWNhdGlvbiB3aGVuIGFuCisgIGF1dGhvYmplY3QgaXMgc3BlY2lmaWVkLgorCistIElzc3VlICMxMzE1MzogVGtpbnRlciBmdW5jdGlvbnMgbm93IHJhaXNlIFRjbEVycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciB3aGVuCisgIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyLgorCistIElzc3VlICM5NjY5OiBQcm90ZWN0IHJlIGFnYWluc3QgaW5maW5pdGUgbG9vcHMgb24gemVyby13aWR0aCBtYXRjaGluZyBpbgorICBub24tZ3JlZWR5IHJlcGVhdC4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KKworLSBJc3N1ZSAjMTMxNjk6IFRoZSBtYXhpbWFsIHJlcGV0aXRpb24gbnVtYmVyIGluIGEgcmVndWxhciBleHByZXNzaW9uIGhhcyBiZWVuCisgIGluY3JlYXNlZCBmcm9tIDY1NTM0IHRvIDIxNDc0ODM2NDcgKG9uIDMyLWJpdCBwbGF0Zm9ybSkgb3IgNDI5NDk2NzI5NCAob24KKyAgNjQtYml0KS4KKworLSBJc3N1ZSAjMTcxNDM6IEZpeCBhIG1pc3NpbmcgaW1wb3J0IGluIHRoZSB0cmFjZSBtb2R1bGUuICBJbml0aWFsIHBhdGNoIGJ5CisgIEJlcmtlciBQZWtzYWcuCisKKy0gSXNzdWUgIzE1MjIwOiBlbWFpbC5mZWVkcGFyc2VyJ3MgbGluZSBzcGxpdHRpbmcgYWxnb3JpdGhtIGlzIG5vdyBzaW1wbGVyIGFuZAorICBmYXN0ZXIuCisKKy0gSXNzdWUgIzE2NzQzOiBGaXggbW1hcCBvdmVyZmxvdyBjaGVjayBvbiAzMiBiaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTY5OTY6IHdlYmJyb3dzZXIgbW9kdWxlIG5vdyB1c2VzIHNodXRpbC53aGljaCgpIHRvIGZpbmQgYQorICB3ZWItYnJvd3NlciBvbiB0aGUgZXhlY3V0YWJsZSBzZWFyY2ggcGF0aC4KKworLSBJc3N1ZSAjMTY4MDA6IHRlbXBmaWxlLmdldHRlbXBkaXIoKSBubyBsb25nZXIgbGVmdCB0ZW1wb3JhcnkgZmlsZXMgd2hlbgorICB0aGUgZGlzayBpcyBmdWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQW1pciBTemVrZWx5LgorCistIElzc3VlICMxNzE5MjogSW1wb3J0IGxpYmZmaS0zLjAuMTIuCisKKy0gSXNzdWUgIzE2NTY0OiBGaXhlZCByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIgaW4gdGhlIG9wZXJhdGlvbiBvZgorICBlbWFpbC5lbmNvZGVycy5lbmNvZGVfN29yOGJpdCB3aGVuIHVzZWQgd2l0aCBiaW5hcnkgZGF0YS4KKworLSBJc3N1ZSAjMTcwNTI6IHVuaXR0ZXN0IGRpc2NvdmVyeSBzaG91bGQgdXNlIHNlbGYudGVzdExvYWRlci4KKworLSBJc3N1ZSAjNDU5MTogVWlkIGFuZCBnaWQgdmFsdWVzIGxhcmdlciB0aGFuIDIqKjMxIGFyZSBzdXBwb3J0ZWQgbm93LgorCistIElzc3VlICMxNzE0MTogcmFuZG9tLnZvbm1pc2VzdmFyaWF0ZSgpIG5vIGxvbmdlciBoYW5ncyBmb3IgbGFyZ2Uga2FwcGFzLgorCistIElzc3VlICMxNzE0OTogRml4IHJhbmRvbS52b25taXNlc3ZhcmlhdGUgdG8gYWx3YXlzIHJldHVybiByZXN1bHRzIGluCisgIFswLCAyKm1hdGgucGldLgorCistIElzc3VlICMxNDcwNTQ4OiBYTUxHZW5lcmF0b3Igbm93IHdvcmtzIHdpdGggYmluYXJ5IG91dHB1dCBzdHJlYW1zLgorCistIElzc3VlICM2OTc1OiBvcy5wYXRoLnJlYWxwYXRoKCkgbm93IGNvcnJlY3RseSByZXNvbHZlcyBtdWx0aXBsZSBuZXN0ZWQKKyAgc3ltbGlua3Mgb24gUE9TSVggcGxhdGZvcm1zLgorCistIElzc3VlICMxMzc3Mzogc3FsaXRlMy5jb25uZWN0KCkgZ2V0cyBhIG5ldyBgdXJpYCBwYXJhbWV0ZXIgdG8gcGFzcyB0aGUKKyAgZmlsZW5hbWUgYXMgYSBVUkksIGFsbG93aW5nIGN1c3RvbSBvcHRpb25zIHRvIGJlIHBhc3NlZC4KKworLSBJc3N1ZSAjMTY1NjQ6IEZpeGVkIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMiBpbiB0aGUgb3BlcmF0aW9uIG9mCisgIGVtYWlsLmVuY29kZXJzLmVuY29kZV9ub29wIHdoZW4gdXNlZCB3aXRoIGJpbmFyeSBkYXRhLgorCistIElzc3VlICMxMDM1NTogVGhlIG1vZGUsIG5hbWUsIGVuY29kaW5nIGFuZCBuZXdsaW5lcyBwcm9wZXJ0aWVzIG5vdyB3b3JrIG9uCisgIFNwb29sZWRUZW1wb3JhcnlGaWxlIG9iamVjdHMgZXZlbiB3aGVuIHRoZXkgaGF2ZSBub3QgeWV0IHJvbGxlZCBvdmVyLgorICBPYnNvbGV0ZSBtZXRob2QgeHJlYWRsaW5lICh3aGljaCBoYXMgbmV2ZXIgd29ya2VkIGluIFB5dGhvbiAzKSBoYXMgYmVlbgorICByZW1vdmVkLgorCistIElzc3VlICMxNjY4NjogRml4ZWQgYSBsb3Qgb2YgYnVncyBpbiBhdWRpb29wIG1vZHVsZS4gIEZpeGVkIGNyYXNoZXMgaW4KKyAgYXZncHAoKSwgbWF4cHAoKSBhbmQgcmF0ZWN2KCkuICBGaXhlZCBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGFkZCgpLCBiaWFzKCksCisgIGFuZCByYXRlY3YoKS4gIHJldmVyc2UoKSwgbGluMmxpbigpIGFuZCByYXRlY3YoKSBubyBtb3JlIGxvc2UgcHJlY2lzaW9uIGZvcgorICAzMi1iaXQgc2FtcGxlcy4gIG1heCgpIGFuZCBybXMoKSBubyBtb3JlIHJldHVybnMgYSBuZWdhdGl2ZSByZXN1bHQgYW5kCisgIHZhcmlvdXMgb3RoZXIgZnVuY3Rpb25zIG5vdyB3b3JrIGNvcnJlY3RseSB3aXRoIDMyLWJpdCBzYW1wbGUgLTB4ODAwMDAwMDAuCisKKy0gSXNzdWUgIzE3MDczOiBGaXggc29tZSBpbnRlZ2VyIG92ZXJmbG93cyBpbiBzcWxpdGUzIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY3MjM6IGh0dHBsaWIuSFRUUFJlc3BvbnNlIG5vIGxvbmdlciBtYXJrZWQgY2xvc2VkIHdoZW4gdGhlIGNvbm5lY3Rpb24KKyAgaXMgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKy0gSXNzdWUgIzE1MzU5OiBBZGQgQ0FOX0JDTSBwcm90b2NvbCBzdXBwb3J0IHRvIHRoZSBzb2NrZXQgbW9kdWxlLiBQYXRjaCBieQorICBCcmlhbiBUaG9ybmUuCisKKy0gSXNzdWUgIzE2OTQ4OiBGaXggcXVvdGVkIHByaW50YWJsZSBib2R5IGVuY29kaW5nIGZvciBub24tbGF0aW4xIGNoYXJhY3RlcgorICBzZXRzIGluIHRoZSBlbWFpbCBwYWNrYWdlLgorCistIElzc3VlICMxNjgxMTogRml4IGZvbGRpbmcgb2YgaGVhZGVycyB3aXRoIG5vIHZhbHVlIGluIHRoZSBwcm92aXNpb25hbCBlbWFpbAorICBwb2xpY2llcy4KKworLSBJc3N1ZSAjMTcxMzI6IFVwZGF0ZSBzeW1ib2wgZm9yICJ5aWVsZCBmcm9tIiBncmFtbWFyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzE3MDc2OiBNYWtlIGNvcHlpbmcgb2YgeGF0dHJzIG1vcmUgdG9sZXJhbnQgb2YgbWlzc2luZyBGUyBzdXBwb3J0LgorICBQYXRjaCBieSBUaG9tYXMgV291dGVycy4KKworLSBJc3N1ZSAjMTcwODk6IEV4cGF0IHBhcnNlciBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggc3RyaW5nIGlucHV0IHdoZW4gdGhlCisgIGludGVybmFsIFhNTCBlbmNvZGluZyBpcyBub3QgVVRGLTggb3IgVVMtQVNDSUkuICBJdCBhbHNvIG5vdyBhY2NlcHRzIGJ5dGVzCisgIGFuZCBzdHJpbmdzIGxhcmdlciB0aGFuIDIgR2lCLgorCistIElzc3VlICM2MDgzOiBGaXggbXVsdGlwbGUgc2VnbWVudGF0aW9uIGZhdWx0cyBvY2N1cnJlZCB3aGVuIFB5QXJnX1BhcnNlVHVwbGUKKyAgcGFyc2VzIG5lc3RlZCBtdXRhdGluZyBzZXF1ZW5jZS4KKworLSBJc3N1ZSAjNTI4OTogRml4IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBvbiBTb2xhcmlzLgorCistIElzc3VlICMxNzEwNjogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IGluIGlvLlRleHRJT1dyYXBwZXIgd2hlbiBhbiB1bmRlcmx5aW5nCisgIHN0cmVhbSBvciBhIGRlY29kZXIgcHJvZHVjZXMgZGF0YSBvZiBhbiB1bmV4cGVjdGVkIHR5cGUgKGkuZS4gd2hlbgorICBpby5UZXh0SU9XcmFwcGVyIGluaXRpYWxpemVkIHdpdGggdGV4dCBzdHJlYW0gb3IgdXNlIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjKS4KKworLSBJc3N1ZSAjMTcwMTU6IFdoZW4gaXQgaGFzIGEgc3BlYywgYSBNb2NrIG9iamVjdCBub3cgaW5zcGVjdHMgaXRzIHNpZ25hdHVyZQorICB3aGVuIG1hdGNoaW5nIGNhbGxzLCBzbyB0aGF0IGFyZ3VtZW50cyBjYW4gYmUgbWF0Y2hlZCBwb3NpdGlvbmFsbHkgb3IKKyAgYnkgbmFtZS4KKworLSBJc3N1ZSAjMTU2MzM6IGh0dHBsaWIuSFRUUFJlc3BvbnNlIGlzIG5vdyBtYXJrIGNsb3NlZCB3aGVuIHRoZSBzZXJ2ZXIKKyAgc2VuZHMgbGVzcyB0aGFuIHRoZSBhZHZlcnRpc2VkIENvbnRlbnQtTGVuZ3RoLgorCistIElzc3VlICMxMjI2ODogVGhlIGlvIG1vZHVsZSBmaWxlIG9iamVjdCB3cml0ZSBtZXRob2RzIG5vIGxvbmdlciBhYm9ydCBlYXJseQorICB3aGVuIG9uZSBvZiBpdHMgd3JpdGUgc3lzdGVtIGNhbGxzIGlzIGludGVycnVwdGVkIChFSU5UUikuCisKKy0gSXNzdWUgIzY5NzI6IFRoZSB6aXBmaWxlIG1vZHVsZSBubyBsb25nZXIgb3ZlcndyaXRlcyBmaWxlcyBvdXRzaWRlIG9mCisgIGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdoZW4gZXh0cmFjdGluZyBtYWxpY2lvdXMgemlwIGZpbGVzLgorCistIElzc3VlICM0ODQ0OiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwRmlsZSB3aGVuIG9wZW5zIGEgWklQIGZpbGUgd2l0aCBhbgorICBpbmNvbXBsZXRlICJFbmQgb2YgQ2VudHJhbCBEaXJlY3RvcnkiIHJlY29yZC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEd1aWxoZXJtZQorICBQb2xvIGFuZCBBbGFuIE1jSW50eXJlLgorCistIElzc3VlICMxNzA3MTogU2lnbmF0dXJlLmJpbmQoKSBub3cgd29ya3Mgd2hlbiBvbmUgb2YgdGhlIGtleXdvcmQgYXJndW1lbnRzCisgIGlzIG5hbWVkIGBgc2VsZmBgLgorCistIElzc3VlICMxMjAwNDogRml4IGFuIGludGVybmFsIGVycm9yIGluIFB5WmlwRmlsZSB3aGVuIHdyaXRpbmcgYW4gaW52YWxpZAorICBQeXRob24gZmlsZS4gIFBhdGNoIGJ5IEJlbiBNb3JnYW4uCisKKy0gSGF2ZSBweV9jb21waWxlIHVzZSBpbXBvcnRsaWIgYXMgbXVjaCBhcyBwb3NzaWJsZSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorICBDb2RlIG5vdyByYWlzZXMgRmlsZUV4aXN0c0Vycm9yIGlmIHRoZSBmaWxlIHBhdGggdG8gYmUgdXNlZCBmb3IgdGhlCisgIGJ5dGUtY29tcGlsZWQgZmlsZSBpcyBhIHN5bWxpbmsgb3Igbm9uLXJlZ3VsYXIgZmlsZSBhcyBhIHdhcm5pbmcgdGhhdCBpbXBvcnQKKyAgd2lsbCBub3Qga2VlcCB0aGUgZmlsZSBwYXRoIHR5cGUgaWYgaXQgd3JpdGVzIHRvIHRoYXQgcGF0aC4KKworLSBJc3N1ZSAjMTY5NzI6IEhhdmUgc2l0ZS5hZGRwYWNrYWdlKCkgY29uc2lkZXIgYWxyZWFkeSBrbm93biBwYXRocyBldmVuIHdoZW4KKyAgbm9uZSBhcmUgZXhwbGljaXRseSBwYXNzZWQgaW4uIEJ1ZyByZXBvcnQgYW5kIGZpeCBieSBLaXJpbGwuCisKKy0gSXNzdWUgIzE2MDIxMzM6IG9uIE1hYyBPUyBYIGEgc2hhcmVkIGxpYnJhcnkgYnVpbGQgKGBgLS1lbmFibGUtc2hhcmVkYGApCisgIG5vdyBmaWxscyB0aGUgYGBvcy5lbnZpcm9uYGAgdmFyaWFibGUgY29ycmVjdGx5LgorCistIElzc3VlICMxNTUwNTogYHVuaXR0ZXN0Lmluc3RhbGxIYW5kbGVyYCBubyBsb25nZXIgYXNzdW1lcyBTSUdJTlQgaGFuZGxlciBpcworICBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QuCisKKy0gSXNzdWUgIzEzNDU0OiBGaXggYSBjcmFzaCB3aGVuIGRlbGV0aW5nIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgYnkgaXRlcnRvb2xzLnRlZSgpCisgIGlmIGFsbCBvdGhlciBpdGVyYXRvcnMgd2VyZSB2ZXJ5IGFkdmFuY2VkIGJlZm9yZS4KKworLSBJc3N1ZSAjMTI0MTE6IEZpeCB0byBjZ2kucGFyc2VfbXVsdGlwYXJ0IHRvIGNvcnJlY3RseSB1c2UgYnl0ZXMgYm91bmRhcmllcworICBhbmQgYnl0ZXMgZGF0YS4gUGF0Y2ggYnkgSm9uYXMgV2FnbmVyLgorCistIElzc3VlICMxNjk1Nzogc2h1dGlsLndoaWNoKCkgbm8gbG9uZ2VyIHNlYXJjaGVzIGEgYmFyZSBmaWxlIG5hbWUgaW4gdGhlCisgIGN1cnJlbnQgZGlyZWN0b3J5IG9uIFVuaXggYW5kIG5vIGxvbmdlciBzZWFyY2hlcyBhIHJlbGF0aXZlIGZpbGUgcGF0aCB3aXRoCisgIGEgZGlyZWN0b3J5IHBhcnQgaW4gUEFUSCBkaXJlY3Rvcmllcy4gIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCistIElzc3VlICMxMTU5MDUxOiBHemlwRmlsZSBub3cgcmFpc2VzIEVPRkVycm9yIHdoZW4gcmVhZGluZyBhIGNvcnJ1cHRlZCBmaWxlCisgIHdpdGggdHJ1bmNhdGVkIGhlYWRlciBvciBmb290ZXIuCisKKy0gSXNzdWUgIzE2OTkzOiBzaHV0aWwud2hpY2goKSBub3cgcHJlc2VydmVzIHRoZSBjYXNlIG9mIHRoZSBwYXRoIGFuZCBleHRlbnNpb24KKyAgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTY5OTI6IE9uIFdpbmRvd3MgaW4gc2lnbmFsLnNldF93YWtldXBfZmQsIHZhbGlkYXRlIHRoZSBmaWxlCisgIGRlc2NyaXB0b3IgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE2NDIyOiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gdmVyc2lvbiwgdGhlIEMgdmVyc2lvbiBvZgorICBkZWNpbWFsIG5vdyB1c2VzIHN0cmluZ3MgaW5zdGVhZCBvZiBpbnRlZ2VycyBmb3Igcm91bmRpbmcgbW9kZSBjb25zdGFudHMuCisKKy0gSXNzdWUgIzE1ODYxOiB0a2ludGVyIG5vdyBjb3JyZWN0bHkgd29ya3Mgd2l0aCBsaXN0cyBhbmQgdHVwbGVzIGNvbnRhaW5pbmcKKyAgc3RyaW5ncyB3aXRoIHdoaXRlc3BhY2VzLCBiYWNrc2xhc2hlcyBvciB1bmJhbGFuY2VkIGJyYWNlcy4KKworLSBJc3N1ZSAjOTcyMDogemlwZmlsZSBub3cgd3JpdGVzIGNvcnJlY3QgbG9jYWwgaGVhZGVycyBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4KKyAgNCBHaUIuCisKKy0gSXNzdWUgIzE2OTU1OiBGaXggdGhlIHBvbGwoKSBtZXRob2QgZm9yIG11bHRpcHJvY2Vzc2luZydzIHNvY2tldAorICBjb25uZWN0aW9ucyBvbiBXaW5kb3dzLgorCistIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBub3cgcHJvcGVybHkgY2xvc2VzIHRoZSBpbnB1dCBmaWxlLgorCistIElzc3VlICMxNTAzMTogUmVmYWN0b3Igc29tZSAucHljIG1hbmFnZW1lbnQgY29kZSB0byBjdXQgZG93biBvbiBjb2RlCisgIGR1cGxpY2F0aW9uLiBUaGFua3MgdG8gUm9uYW4gTGFteSBmb3IgdGhlIHJlcG9ydCBhbmQgdGFraW5nIGFuIGluaXRpYWwgc3RhYgorICBhdCB0aGUgcHJvYmxlbS4KKworLSBJc3N1ZSAjMTYzOTg6IE9wdGltaXplIGRlcXVlLnJvdGF0ZSgpIHNvIHRoYXQgaXQgb25seSBtb3ZlcyBwb2ludGVycworICBhbmQgZG9lc24ndCB0b3VjaCB0aGUgdW5kZXJseWluZyBkYXRhIHdpdGggaW5jcmVmcyBhbmQgZGVjcmVmcy4KKworLSBJc3N1ZSAjMTY5MDA6IElzc3VlIGEgUmVzb3VyY2VXYXJuaW5nIHdoZW4gYW4gc3NsIHNvY2tldCBpcyBsZWZ0IHVuY2xvc2VkLgorCistIElzc3VlICMxMzg5OTogYGBcQWBgLCBgYFxaYGAsIGFuZCBgYFxCYGAgbm93IGNvcnJlY3RseSBtYXRjaCB0aGUgQSwgWiwKKyAgYW5kIEIgbGl0ZXJhbHMgd2hlbiB1c2VkIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3NlcyAoZS5nLiBgYCdbXEFdJ2BgKS4KKyAgUGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgorCistIElzc3VlICMxNTU0NTogRml4IHJlZ3Jlc3Npb24gaW4gc3FsaXRlMydzIGl0ZXJkdW1wIG1ldGhvZCB3aGVyZSBpdCB3YXMKKyAgZmFpbGluZyBpZiB0aGUgY29ubmVjdGlvbiB1c2VkIGEgcm93IGZhY3RvcnkgKHN1Y2ggYXMgc3FsaXRlMy5Sb3cpIHRoYXQKKyAgcHJvZHVjZWQgdW5zb3J0YWJsZSBvYmplY3RzLiAoUmVncmVzc2lvbiB3YXMgaW50cm9kdWNlZCBieSBmaXggZm9yIDk3NTApLgorCistIGZjbnRsOiBhZGQgRl9EVVBGRF9DTE9FWEVDIGNvbnN0YW50LCBhdmFpbGFibGUgb24gTGludXggMi42LjI0Ky4KKworLSBJc3N1ZSAjMTU5NzI6IEZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIG9zIGZ1bmN0aW9ucyBleHBlY3RpbmcgYSBmaWxlIG5hbWUgb3IKKyAgZmlsZSBkZXNjcmlwdG9yIHJlY2VpdmUgdGhlIGluY29ycmVjdCB0eXBlLgorCistIElzc3VlICM4MTA5OiBUaGUgc3NsIG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIHNlcnZlci1zaWRlIFNOSSwgdGhhbmtzCisgIHRvIGEgOm1ldGg6YFNTTENvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tgIG1ldGhvZC4gIFBhdGNoIGJ5IERhbmllbAorICBCbGFjay4KKworLSBJc3N1ZSAjMTY4NjA6IEluIHRlbXBmaWxlLCB1c2UgT19DTE9FWEVDIHdoZW4gYXZhaWxhYmxlIHRvIHNldCB0aGUKKyAgY2xvc2Utb24tZXhlYyBmbGFnIGF0b21pY2FsbHkuCisKKy0gSXNzdWUgIzE2Njc0OiByYW5kb20uZ2V0cmFuZGJpdHMoKSBpcyBub3cgMjAtNDAlIGZhc3RlciBmb3Igc21hbGwgaW50ZWdlcnMuCisKKy0gSXNzdWUgIzE2MDA5OiBKU09OIGVycm9yIG1lc3NhZ2VzIG5vdyBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzE2ODI4OiBGaXggZXJyb3IgaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IGJ6Mi5jb21wcmVzcyhiJycpIGFuZAorICBiejIuQloyQ29tcHJlc3Nvci5jb21wcmVzcyhiJycpLiBJbml0aWFsIHBhdGNoIGJ5IE1hcnRpbiBQYWNrbWFuLgorCistIElzc3VlICMxNjgzMzogSW4gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24sIGRvIG5vdCBjb25jYXRlbmF0ZSB0aGUgcmVxdWVzdAorICBoZWFkZXJzIGFuZCBib2R5IHdoZW4gdGhlIHBheWxvYWQgZXhjZWVkcyAxNiBLQiwgc2luY2UgaXQgY2FuIGNvbnN1bWUgbW9yZQorICBtZW1vcnkgZm9yIG5vIGJlbmVmaXQuICBQYXRjaCBieSBCZW5ubyBMZXNsaWUuCisKKy0gSXNzdWUgIzE2NTQxOiB0a19zZXRQYWxldHRlKCkgbm93IHdvcmtzIHdpdGgga2V5d29yZCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzE2ODIwOiBJbiBjb25maWdwYXJzZXIsIGBwYXJzZXIucG9waXRlbSgpYCBubyBsb25nZXIgcmFpc2VzIFZhbHVlRXJyb3IuCisgIFRoaXMgbWFrZXMgYHBhcnNlci5jbGVhbigpYCB3b3JrIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTY4MjA6IEluIGNvbmZpZ3BhcnNlciwgYGBwYXJzZXJbJ3NlY3Rpb24nXSA9IHt9YGAgbm93IHByZXNlcnZlcworICBzZWN0aW9uIG9yZGVyIHdpdGhpbiB0aGUgcGFyc2VyLiBUaGlzIG1ha2VzIGBwYXJzZXIudXBkYXRlKClgIHByZXNlcnZlIHNlY3Rpb24KKyAgb3JkZXIgYXMgd2VsbC4KKworLSBJc3N1ZSAjMTY4MjA6IEluIGNvbmZpZ3BhcnNlciwgYGBwYXJzZXJbJ0RFRkFVTFQnXSA9IHt9YGAgbm93IGNvcnJlY3RseQorICBjbGVhcnMgcHJldmlvdXMgdmFsdWVzIHN0b3JlZCBpbiB0aGUgZGVmYXVsdCBzZWN0aW9uLiBTYW1lIGdvZXMgZm9yCisgIGBgcGFyc2VyLnVwZGF0ZSh7J0RFRkFVTFQnOiB7fX0pYGAuCisKKy0gSXNzdWUgIzk1ODY6IFJlZGVmaW5lIFNFTV9GQUlMRUQgb24gTWFjT1NYIHRvIGtlZXAgY29tcGlsZXIgaGFwcHkuCisKKy0gSXNzdWUgIzE2Nzg3OiBJbmNyZWFzZSBhc3luY29yZSBhbmQgYXN5bmNoYXQgZGVmYXVsdCBvdXRwdXQgYnVmZmVycyBzaXplLCB0bworICBkZWNyZWFzZSBDUFUgdXNhZ2UgYW5kIGluY3JlYXNlIHRocm91Z2hwdXQuCisKKy0gSXNzdWUgIzEwNTI3OiBtYWtlIG11bHRpcHJvY2Vzc2luZyB1c2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxNjY4ODogTm93IHJlZ2V4ZXMgY29udGFpbmVkIGJhY2tyZWZlcmVuY2VzIGNvcnJlY3RseSB3b3JrIHdpdGgKKyAgbm9uLUFTQ0lJIHN0cmluZ3MuICBQYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCisKKy0gSXNzdWUgIzE2NDg2OiBNYWtlIGFpZmMgZmlsZXMgYWN0IGFzIGNvbnRleHQgbWFuYWdlcnMuCisKKy0gSXNzdWUgIzE2NDg1OiBOb3cgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xvc2VkIGlmIGZpbGUgaGVhZGVyIHBhdGNoaW5nIGZhaWxlZAorICBvbiBjbG9zaW5nIGFuIGFpZmMgZmlsZS4KKworLSBJc3N1ZSAjMTY2NDA6IFJ1biBsZXNzIGNvZGUgdW5kZXIgYSBsb2NrIGluIHNjaGVkIG1vZHVsZS4KKworLSBJc3N1ZSAjMTYxNjU6IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBubyBsb25nZXIgYmxvY2tzIGEgc2NoZWR1bGVyIGZvciBvdGhlcgorICB0aHJlYWRzLgorCistIElzc3VlICMxNjY0MTogRGVmYXVsdCB2YWx1ZXMgb2Ygc2NoZWQuc2NoZWR1bGVyLmVudGVyKCkgYXJlIG5vIGxvbmdlcgorICBtb2RpZmlhYmxlLgorCistIElzc3VlICMxNjYxODogTWFrZSBnbG9iLmdsb2IgbWF0Y2ggY29uc2lzdGVudGx5IGFjcm9zcyBzdHJpbmdzIGFuZCBieXRlcworICByZWdhcmRpbmcgbGVhZGluZyBkb3RzLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTY3ODg6IEFkZCBzYW1lc3RhdCB0byBMaWIvbnRwYXRoLnB5CisKKy0gSXNzdWUgIzE2NzEzOiBQYXJzaW5nIG9mICd0ZWwnIHVybHMgdXNpbmcgdXJscGFyc2Ugc2VwYXJhdGVzIHBhcmFtcyBmcm9tCisgIHBhdGguCisKKy0gSXNzdWUgIzE2NDQzOiBBZGQgZG9jc3RyaW5ncyB0byByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggb2JqZWN0cy4KKyAgUGF0Y2ggYnkgQW50b24gS2FzeWFub3YuCisKKy0gSXNzdWUgIzE1NzAxOiBGaXggSFRUUEVycm9yIGluZm8gbWV0aG9kIGNhbGwgdG8gcmV0dXJuIHRoZSBoZWFkZXJzIGluZm9ybWF0aW9uLgorCistIElzc3VlICMxNjc1MjogQWRkIGEgbWlzc2luZyBpbXBvcnQgdG8gbW9kdWxlZmluZGVyLiBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMxNjY0NjogZnRwbGliLkZUUC5tYWtlcG9ydCgpIG1pZ2h0IGxvc2Ugc29ja2V0IGVycm9yIGRldGFpbHMuCisgIChwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthKQorCistIElzc3VlICMxNjYyNjogRml4IGluZmluaXRlIHJlY3Vyc2lvbiBpbiBnbG9iLmdsb2IoKSBvbiBXaW5kb3dzIHdoZW4gdGhlCisgIHBhdHRlcm4gY29udGFpbnMgYSB3aWxkY2FyZCBpbiB0aGUgZHJpdmUgb3IgVU5DIHBhdGguICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTc4MzogRXhjZXB0IGZvciB0aGUgbnVtYmVyIG1ldGhvZHMsIHRoZSBDIHZlcnNpb24gb2YgZGVjaW1hbCBub3cKKyAgc3VwcG9ydHMgYWxsIE5vbmUgZGVmYXVsdCB2YWx1ZXMgcHJlc2VudCBpbiBkZWNpbWFsLnB5LiBUaGVzZSB2YWx1ZXMgd2VyZQorICBsYXJnZWx5IHVuZG9jdW1lbnRlZC4KKworLSBJc3N1ZSAjMTExNzU6IGFyZ3BhcnNlLkZpbGVUeXBlIG5vdyBhY2NlcHRzIGVuY29kaW5nIGFuZCBlcnJvcnMKKyAgYXJndW1lbnRzLiBQYXRjaCBieSBMdWNhcyBNYXlzdHJlLgorCistIElzc3VlICMxNjQ4ODogZXBvbGwoKSBvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSBgd2l0aGAgc3RhdGVtZW50LiAgUGF0Y2gKKyAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTYyOTg6IEluIEhUVFBSZXNwb25zZS5yZWFkKCksIGNsb3NlIHRoZSBzb2NrZXQgd2hlbiB0aGVyZSBpcyBubworICBDb250ZW50LUxlbmd0aCBhbmQgdGhlIGluY29taW5nIHN0cmVhbSBpcyBmaW5pc2hlZC4gIFBhdGNoIGJ5IEVyYW4KKyAgUnVuZHN0ZWluLgorCistIElzc3VlICMxNjA0OTogQWRkIGFiYy5BQkMgY2xhc3MgdG8gZW5hYmxlIHRoZSB1c2Ugb2YgaW5oZXJpdGFuY2UgdG8gY3JlYXRlCisgIEFCQ3MsIHJhdGhlciB0aGFuIHRoZSBtb3JlIGN1bWJlcnNvbWUgbWV0YWNsYXNzPUFCQ01ldGEuIFBhdGNoIGJ5IEJydW5vCisgIER1cHVpcy4KKworLSBFeHBvc2UgdGhlIFRDUF9GQVNUT1BFTiBhbmQgTVNHX0ZBU1RPUEVOIGZsYWdzIGluIHNvY2tldCB3aGVuIHRoZXkncmUKKyAgYXZhaWxhYmxlLgorCistIElzc3VlICMxNTcwMTogQWRkIGEgLmhlYWRlcnMgYXR0cmlidXRlIHRvIHVybGxpYi5lcnJvci5IVFRQRXJyb3IuIFBhdGNoCisgIGNvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gSXNzdWUgIzE1ODcyOiBGaXggMy4zIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSB0aGUgbmV3IGZkLWJhc2VkIHNodXRpbC5ybXRyZWUKKyAgdGhhdCBjYXVzZWQgaXQgdG8gbm90IGlnbm9yZSBjZXJ0YWluIGVycm9ycyB3aGVuIGlnbm9yZV9lcnJvcnMgd2FzIHNldC4KKyAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYSBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTYyNDg6IERpc2FibGUgY29kZSBleGVjdXRpb24gZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGJ5CisgIHRraW50ZXIgd2hlbiB0aGUgLUUgZmxhZyBpcyBwYXNzZWQgdG8gUHl0aG9uLiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxMzM5MDogTmV3IGZ1bmN0aW9uIDpmdW5jOmBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzKClgIHJldHVybnMgdGhlCisgIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzIGN1cnJlbnRseSBhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzE2NjI4OiBGaXggYSBtZW1vcnkgbGVhayBpbiBjdHlwZXMucmVzaXplKCkuCisKKy0gSXNzdWUgIzEzNjE0OiBGaXggc2V0dXAucHkgcmVnaXN0ZXIgZmFpbHVyZSB3aXRoIGludmFsaWQgcnN0IGluIGRlc2NyaXB0aW9uLgorICBQYXRjaCBieSBKdWxpZW4gQ291cnRlYXUgYW5kIFBpZXJyZSBQYXVsIExlZmVidnJlLgorCistIElzc3VlICMxMzUxMjogQ3JlYXRlIH4vLnB5cGlyYyBzZWN1cmVseSAoQ1ZFLTIwMTEtNDk0NCkuICBJbml0aWFsIHBhdGNoIGJ5CisgIFBoaWxpcCBKZW52ZXksIHRlc3RlZCBieSBNYWdlaWEgYW5kIERlYmlhbi4KKworLSBJc3N1ZSAjNzcxOTogTWFrZSBkaXN0dXRpbHMgaWdub3JlIGBgLm5mcypgYCBmaWxlcyBpbnN0ZWFkIG9mIGNob2tpbmcgbGF0ZXIKKyAgb24uICBJbml0aWFsIHBhdGNoIGJ5IFNpbGVudEdob3N0IGFuZCBKZWZmIFJhbW5hbmkuCisKKy0gSXNzdWUgIzEzMTIwOiBBbGxvdyBjYWxsaW5nIHBkYi5zZXRfdHJhY2UoKSBmcm9tIHRocmVhZC4KKyAgUGF0Y2ggYnkgSWx5YSBTYW5kbGVyLgorCistIElzc3VlICMxNjU4NTogTWFrZSBDSksgZW5jb2RlcnMgc3VwcG9ydCBlcnJvciBoYW5kbGVycyB0aGF0IHJldHVybiBieXRlcyBwZXIKKyAgUEVQIDM4My4KKworLSBJc3N1ZSAjMTAxODI6IFRoZSByZSBtb2R1bGUgZG9lc24ndCB0cnVuY2F0ZSBpbmRpY2VzIHRvIDMyIGJpdHMgYW55bW9yZS4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTYzMzM6IHVzZSAoIiwiLCAiOiAiKSBhcyBkZWZhdWx0IHNlcGFyYXRvciBpbiBqc29uIHdoZW4gaW5kZW50IGlzCisgIHNwZWNpZmllZCwgdG8gYXZvaWQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE2NTczOiBJbiAydG8zLCB0cmVhdCBlbnVtZXJhdGUoKSBsaWtlIGEgY29uc3VtaW5nIGNhbGwsIHNvIHN1cGVyZmx1b3VzCisgIGxpc3QoKSBjYWxscyBhcmVuJ3QgYWRkZWQgdG8gZmlsdGVyKCksIG1hcCgpLCBhbmQgemlwKCkgd2hpY2ggYXJlIGRpcmVjdGx5CisgIHBhc3NlZCBlbnVtZXJhdGUoKS4KKworLSBJc3N1ZSAjMTY0NjQ6IFJlc2V0IHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgd2hlbiBhIHVybGxpYiBSZXF1ZXN0IGlzIHJldXNlZAorICB3aXRoIG5ldyBkYXRhLgorCistIElzc3VlICMxMjg0ODogVGhlIHB1cmUgUHl0aG9uIHBpY2tsZSBpbXBsZW1lbnRhdGlvbiBub3cgdHJlYXRzIG9iamVjdAorICBsZW5ndGhzIGFzIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VycywgbGlrZSB0aGUgQyBpbXBsZW1lbnRhdGlvbiBkb2VzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNjQyMzogdXJsbGliLnJlcXVlc3Qgbm93IGhhcyBzdXBwb3J0IGZvciBgYGRhdGE6YGAgVVJMcy4gIFBhdGNoIGJ5CisgIE1hdGhpYXMgUGFuemVuYsO2Y2suCisKKy0gSXNzdWUgIzQ0NzM6IEFkZCBhIFBPUDMuc3RscygpIHRvIHN3aXRjaCBhIGNsZWFyLXRleHQgUE9QMyBzZXNzaW9uIGludG8KKyAgYW4gZW5jcnlwdGVkIFBPUDMgc2Vzc2lvbiwgb24gc3VwcG9ydGVkIHNlcnZlcnMuICBQYXRjaCBieSBMb3JlbnpvIENhdHVjY2kuCisKKy0gSXNzdWUgIzQ0NzM6IEFkZCBhIFBPUDMuY2FwYSgpIG1ldGhvZCB0byBxdWVyeSB0aGUgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQKKyAgYnkgdGhlIFBPUDMgc2VydmVyLiAgUGF0Y2ggYnkgTG9yZW56byBDYXR1Y2NpLgorCistIElzc3VlICM0NDczOiBFbnN1cmUgdGhlIHNvY2tldCBpcyBzaHV0ZG93biBjbGVhbmx5IGluIFBPUDMuY2xvc2UoKS4KKyAgUGF0Y2ggYnkgTG9yZW56byBDYXR1Y2NpLgorCistIElzc3VlICMxNjUyMjogYWRkZWQgRkFJTF9GQVNUIGZsYWcgdG8gZG9jdGVzdC4KKworLSBJc3N1ZSAjMTU2Mjc6IEFkZCB0aGUgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLnNvdXJjZV90b19jb2RlKCkgbWV0aG9kLgorCistIElzc3VlICMxNjQwODogRml4IGZpbGUgZGVzY3JpcHRvcnMgbm90IGJlaW5nIGNsb3NlZCBpbiBlcnJvciBjb25kaXRpb25zCisgIGluIHRoZSB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0NjMxOiBBZGQgYSBuZXcgOmNsYXNzOmB3ZWFrcmVmLldlYWtNZXRob2RgIHRvIHNpbXVsYXRlIHdlYWsKKyAgcmVmZXJlbmNlcyB0byBib3VuZCBtZXRob2RzLgorCistIElzc3VlICMxNjQ2OTogRml4IGV4Y2VwdGlvbnMgZnJvbSBmbG9hdCAtPiBGcmFjdGlvbiBhbmQgRGVjaW1hbCAtPiBGcmFjdGlvbgorICBjb252ZXJzaW9ucyBmb3Igc3BlY2lhbCB2YWx1ZXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRob3NlIGZvciBmbG9hdCAtPiBpbnQKKyAgYW5kIERlY2ltYWwgLT4gaW50LiAgUGF0Y2ggYnkgQWxleGV5IEthY2hheWV2LgorCistIElzc3VlICMxNjQ4MTogbXVsdGlwcm9jZXNzaW5nIG5vIGxvbmdlciBsZWFrcyBwcm9jZXNzIGhhbmRsZXMgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTI0Mjg6IEFkZCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0b29scy5wYXJ0aWFsKCkuCisgIFBhdGNoIGJ5IEJyaWFuIFRob3JuZS4KKworLSBJc3N1ZSAjMTYxNDA6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgZG91YmxlIGNsb3NlcyBpdHMgY2hpbGQKKyAgc3VicHJvY2Vzcy5QSVBFIHBhcmVudCBmaWxlIGRlc2NyaXB0b3JzIG9uIGNoaWxkIGVycm9yIHByaW9yIHRvIGV4ZWMoKS4KKworLSBSZW1vdmUgYSBiYXJlIHByaW50IHRvIHN0ZG91dCBmcm9tIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSB0aGF0IGNvdWxkIGhhdmUKKyAgaGFwcGVuZWQgaWYgdGhlIGNoaWxkIHByb2Nlc3Mgd3JvdGUgZ2FyYmFnZSB0byBpdHMgcHJlLWV4ZWMgZXJyb3IgcGlwZS4KKworLSBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IHJhaXNlcyBpdHMgb3duIFN1YnByb2Nlc3NFcnJvciBpbnN0ZWFkIG9mIGEKKyAgUnVudGltZUVycm9yIGluIHZhcmlvdXMgZXJyb3Igc2l0dWF0aW9ucyB3aGljaCBzaG91bGQgbm90IG5vcm1hbGx5IGhhcHBlbi4KKworLSBJc3N1ZSAjMTYzMjc6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgbGVha3MgZmlsZSBkZXNjcmlwdG9ycworICB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyIHBpcGVzIHRvIHRoZSBjaGlsZCB3aGVuIGZvcmsoKSBmYWlscy4KKworLSBJc3N1ZSAjMTQzOTY6IEhhbmRsZSB0aGUgb2RkIHJhcmUgY2FzZSBvZiB3YWl0cGlkIHJldHVybmluZyAwIHdoZW4gbm90CisgIGV4cGVjdGVkIGluIHN1YnByb2Nlc3MuUG9wZW4ud2FpdCgpLgorCistIElzc3VlICMxNjQxMTogRml4IGEgYnVnIHdoZXJlIHpsaWIuZGVjb21wcmVzc29iaigpLmZsdXNoKCkgbWlnaHQgdHJ5IHRvIGFjY2VzcworICBwcmV2aW91c2x5LWZyZWVkIG1lbW9yeS4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTYzNTc6IGZpeCBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgU1NMU29ja2V0IGNyZWF0ZWQgdGhyb3VnaAorICBTU0xDb250ZXh0LndyYXBfc29ja2V0KCkuICBPcmlnaW5hbCBwYXRjaCBieSBKZWZmIE1jTmVpbC4KKworLSBJc3N1ZSAjMTY0MDk6IFRoZSByZXBvcnRob29rIGNhbGxiYWNrIG1hZGUgYnkgdGhlIGxlZ2FjeQorICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSBBUEkgbm93IHByb3Blcmx5IHN1cHBsaWVzIGEgY29uc3RhbnQgbm9uLXplcm8KKyAgYmxvY2tfc2l6ZSBhcyBpdCBkaWQgaW4gUHl0aG9uIDMuMiBhbmQgMi43LiAgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZgorICB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIucmV0cmlldmUuCisKKy0gSXNzdWUgIzE2NDMxOiBVc2UgdGhlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBEZWNpbWFsIHN1YnR5cGUKKyAgZnJvbSBhIERlY2ltYWwgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE1NjQxOiBDbGVhbiB1cCBkZXByZWNhdGVkIGNsYXNzZXMgZnJvbSBpbXBvcnRsaWIuCisgIFBhdGNoIGJ5IFRhcmFzIEx5YXB1bi4KKworLSBJc3N1ZSAjMTYzNTA6IHpsaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgYWNjdW11bGF0ZXMgZGF0YSBmcm9tCisgIHN1Y2Nlc3NpdmUgY2FsbHMgYWZ0ZXIgRU9GIGluIHVudXNlZF9kYXRhLCBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhcmd1bWVudAorICB0byB0aGUgbGFzdCBjYWxsLiBkZWNvbXByZXNzb2JqKCkuZmx1c2goKSBub3cgY29ycmVjdGx5IHNldHMgdW51c2VkX2RhdGEgYW5kCisgIHVuY29uc3VtZWRfdGFpbC4gQSBidWcgaW4gdGhlIGhhbmRsaW5nIG9mIE1lbW9yeUVycm9yIHdoZW4gc2V0dGluZyB0aGUKKyAgdW5jb25zdW1lZF90YWlsIGF0dHJpYnV0ZSBoYXMgYWxzbyBiZWVuIGZpeGVkLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMjc1OTogc3JlX3BhcnNlIG5vdyByYWlzZXMgYSBwcm9wZXIgZXJyb3Igd2hlbiB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAKKyAgaXMgbWlzc2luZy4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTYxNTI6IGZpeCB0b2tlbml6ZSB0byBpZ25vcmUgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBjb2RlIHdoZW4KKyAgbm8gbmV3bGluZSBpcyBmb3VuZC4gIFBhdGNoIGJ5IE5lZCBCYXRjaGVsZGVyLgorCistIElzc3VlICMxNjI4NDogUHJldmVudCBrZWVwaW5nIHVubmVjZXNzYXJ5IHJlZmVyZW5jZXMgdG8gd29ya2VyIGZ1bmN0aW9ucworICBpbiBjb25jdXJyZW50LmZ1dHVyZXMgVGhyZWFkUG9vbEV4ZWN1dG9yLgorCistIElzc3VlICMxNjIzMDogRml4IGEgY3Jhc2ggaW4gc2VsZWN0LnNlbGVjdCgpIHdoZW4gb25lIG9mIHRoZSBsaXN0cyBjaGFuZ2VzCisgIHNpemUgd2hpbGUgaXRlcmF0ZWQgb24uICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNjIyODogRml4IGEgY3Jhc2ggaW4gdGhlIGpzb24gbW9kdWxlIHdoZXJlIGEgbGlzdCBjaGFuZ2VzIHNpemUKKyAgd2hpbGUgaXQgaXMgYmVpbmcgZW5jb2RlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE2MzUxOiBOZXcgZnVuY3Rpb24gZ2MuZ2V0X3N0YXRzKCkgcmV0dXJucyBwZXItZ2VuZXJhdGlvbiBjb2xsZWN0aW9uCisgIHN0YXRpc3RpY3MuCisKKy0gSXNzdWUgIzE0ODk3OiBFbmhhbmNlIGVycm9yIG1lc3NhZ2VzIG9mIHN0cnVjdC5wYWNrIGFuZAorICBzdHJ1Y3QucGFja19pbnRvLiBQYXRjaCBieSBNYXR0aSBNw6RraS4KKworLSBJc3N1ZSAjMTYzMTY6IG1pbWV0eXBlcyBub3cgcmVjb2duaXplcyB0aGUgLnh6IGFuZCAudHh6ICgudGFyLnh6KSBleHRlbnNpb25zLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMjg5MDogY2dpdGIgbm8gbG9uZ2VyIHByaW50cyBzcHVyaW91cyA8cD4gdGFncyBpbiB0ZXh0CisgIG1vZGUgd2hlbiB0aGUgbG9nZGlyIG9wdGlvbiBpcyBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzE2MzA3OiBGaXggbXVsdGlwcm9jZXNzaW5nLlBvb2wubWFwX2FzeW5jIG5vdCBjYWxsaW5nIGl0cyBjYWxsYmFja3MuCisgIFBhdGNoIGJ5IEphbm5lIEthcmlsYS4KKworLSBJc3N1ZSAjMTYzMDU6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvY2N1cnJpbmcgd2hlbiBpbnRlcnJ1cHRpbmcKKyAgbWF0aC5mYWN0b3JpYWwuCisKKy0gSXNzdWUgIzE2MTE2OiBGaXggaW5jbHVkZSBhbmQgbGlicmFyeSBwYXRocyB0byBiZSBjb3JyZWN0IHdoZW4gYnVpbGRpbmcgQworICBleHRlbnNpb25zIGluIHZlbnZzLgorCistIElzc3VlICMxNjI0NTogRml4IHRoZSB2YWx1ZSBvZiBhIGZldyBlbnRpdGllcyBpbiBodG1sLmVudGl0aWVzLmh0bWw1LgorCistIElzc3VlICMxNjMwMTogRml4IHRoZSBsb2NhbGhvc3QgdmVyaWZpY2F0aW9uIGluIHVybGxpYi9yZXF1ZXN0LnB5IGZvciBgYGZpbGU6Ly9gYAorICB1cmxzLgorCistIElzc3VlICMxNjI1MDogRml4IHRoZSBpbnZvY2F0aW9ucyBvZiBVUkxFcnJvciB3aGljaCBoYWQgbWlzcGxhY2VkIGZpbGVuYW1lCisgIGF0dHJpYnV0ZSBmb3IgZXhjZXB0aW9uLgorCistIElzc3VlICMxMDgzNjogRml4IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaWxlIG5vdCBmb3VuZCBpbiB1cmxyZXRyaWV2ZQorICBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjMTQzOTg6IEZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCisKKy0gSXNzdWUgIzEyNjkyOiBGaXggcmVzb3VyY2UgbGVhayBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHRhbGtpbmcgdG8gYW4gSFRUUAorICBzZXJ2ZXIgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIGEgYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlciBpbiBpdHMgcmVzcG9uc2VzLgorCistIElzc3VlICMxMjAzNDogRml4IGJvZ3VzIGNhY2hpbmcgb2YgcmVzdWx0IGluIGNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZS4KKyAgUGF0Y2ggYnkgQXRzdW8gSXNoaW1vdG8uCisKKy0gSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBgbHptYS5MWk1BRmlsZWAgKHNlZSBhbHNvIGlzc3VlICMxNjAzNCkuCisKKy0gSXNzdWUgIzE2MjIwOiB3c2dpcmVmIG5vdyBhbHdheXMgY2FsbHMgY2xvc2UoKSBvbiBhbiBpdGVyYWJsZSByZXNwb25zZS4KKyAgUGF0Y2ggYnkgQnJlbnQgVHViYnMuCisKKy0gSXNzdWUgIzE2MjcwOiB1cmxsaWIgbWF5IGhhbmcgd2hlbiB1c2VkIGZvciByZXRyaWV2aW5nIGZpbGVzIHZpYSBGVFAgYnkgdXNpbmcKKyAgYSBjb250ZXh0IG1hbmFnZXIuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLSBJc3N1ZSAjMTY0NjE6IFdhdmUgbGlicmFyeSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggNEdCIHdhdiBmaWxlcywKKyAgYW5kIHNhbXBsZSByYXRlIG9mIDQ0MTAwIEh6LgorCistIElzc3VlICMxNjE3NjogUHJvcGVybHkgaWRlbnRpZnkgV2luZG93cyA4IHZpYSBwbGF0Zm9ybS5wbGF0Zm9ybSgpCisKKy0gSXNzdWUgIzE2MDg4OiBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyJ3Mgc2VuZF9lcnJvciBtZXRob2QgaW5jbHVkZXMgYQorICBDb250ZW50LUxlbmd0aCBoZWFkZXIgaW4gaXRzIHJlc3BvbnNlIG5vdy4gUGF0Y2ggYnkgQW50b2luZSBQaXRyb3UuCisKKy0gSXNzdWUgIzE2MTE0OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm8gbG9uZ2VyIHByb3ZpZGVzIGEgbWlzbGVhZGluZyBlcnJvcgorICBtZXNzYWdlIHN0YXRpbmcgdGhhdCBhcmdzWzBdIGRpZCBub3QgZXhpc3Qgd2hlbiBlaXRoZXIgdGhlIGN3ZCBvciBleGVjdXRhYmxlCisgIGtleXdvcmQgYXJndW1lbnRzIHNwZWNpZmllZCBhIHBhdGggdGhhdCBkaWQgbm90IGV4aXN0LgorCistIElzc3VlICMxNjE2OTogRml4IGN0eXBlcy5XaW5FcnJvcigpJ3MgY29uZnVzaW9uIGJldHdlZW4gZXJybm8gYW5kIHdpbmVycm9yLgorCistIElzc3VlICMxNjExMDogbG9nZ2luZy5maWxlQ29uZmlnIG5vdyBhY2NlcHRzIGEgcHJlLWluaXRpYWxpc2VkIENvbmZpZ1BhcnNlcgorICBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMTQ5MjcwNDogc2h1dGlsLmNvcHlmaWxlKCkgcmFpc2VzIGEgZGlzdGluY3QgU2FtZUZpbGVFcnJvciBub3cgaWYKKyAgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgZmlsZS4gUGF0Y2ggYnkgQXRzdW8gSXNoaW1vdG8uCisKKy0gSXNzdWUgIzEzODk2OiBNYWtlIHNoZWxmIGluc3RhbmNlcyB3b3JrIHdpdGggJ3dpdGgnIGFzIGNvbnRleHQgbWFuYWdlcnMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzE1NDE3OiBBZGQgc3VwcG9ydCBmb3IgY3NoIGFuZCBmaXNoIGluIHZlbnYgYWN0aXZhdGlvbiBzY3JpcHRzLgorCistIElzc3VlICMxNDM3NzogRWxlbWVudFRyZWUud3JpdGUgYW5kIHNvbWUgb2YgdGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMgaGF2ZQorICBhIG5ldyBwYXJhbWV0ZXIgLSAqc2hvcnRfZW1wdHlfZWxlbWVudHMqLiBJdCBjb250cm9scyBob3cgZWxlbWVudHMgd2l0aCBubworICBjb250ZW50cyBhcmUgZW1pdHRlZC4KKworLSBJc3N1ZSAjMTYwODk6IEFsbG93IEVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIHRvIHdvcmsgYWdhaW4gd2l0aCBhIG5vbi1FbGVtZW50CisgIGVsZW1lbnRfZmFjdG9yeSAoZml4ZXMgYSByZWdyZXNzaW9uIGluIFNpbXBsZVRBTCkuCisKKy0gSXNzdWUgIzk2NTA6IExpc3QgY29tbW9ubHkgdXNlZCBmb3JtYXQgY29kZXMgaW4gdGltZS5zdHJmdGltZSBhbmQKKyAgdGltZS5zdHJwdGltZSBkb2NzdHRpbmdzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWlrZSBIb3kuCisKKy0gSXNzdWUgIzE1NDUyOiBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gc29ja2V0IGxpc3RlbmVyIG5vdyBoYXMgYSB2ZXJpZnkgb3B0aW9uCisgIHRoYXQgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGFwcGx5IGEgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIHRvIHRoZQorICByZWNlaXZlZCBjb25maWd1cmF0aW9uIGRhdGEgYmVmb3JlIGl0IGlzIGFjdGVkIHVwb24uCisKKy0gSXNzdWUgIzE2MDM0OiBGaXggcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgaW4gdGhlIG5ldyBgYnoyLkJaMkZpbGVgCisgIGltcGxlbWVudGF0aW9uLiAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIGBwdHkuc3Bhd24oKWAgbm93IHJldHVybnMgdGhlIGNoaWxkIHByb2Nlc3Mgc3RhdHVzIHJldHVybmVkIGJ5IGBvcy53YWl0cGlkKClgLgorCistIElzc3VlICMxNTc1NjogYHN1YnByb2Nlc3MucG9sbCgpYCBub3cgcHJvcGVybHkgaGFuZGxlcyBgZXJybm8uRUNISUxEYCB0bworICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdCBiZSB3YWl0ZWQKKyAgb24uCisKKy0gSXNzdWUgIzE1MzIzOiBJbXByb3ZlIGZhaWx1cmUgbWVzc2FnZSBvZiBgTW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpYC4KKworLSBJc3N1ZSAjMTYwNjQ6IGBgdW5pdHRlc3QgLW1gYCBjbGFpbXMgZXhlY3V0YWJsZSBpcyAicHl0aG9uIiwgbm90ICJweXRob24zIi4KKworLSBJc3N1ZSAjMTIzNzY6IFBhc3Mgb24gcGFyYW1ldGVycyBpbiBgVGV4dFRlc3RSZXN1bHQuX19pbml0X18oKWAgc3VwZXIgY2FsbC4KKworLSBJc3N1ZSAjMTUyMjI6IEluc2VydCBibGFuayBsaW5lIGFmdGVyIGVhY2ggbWVzc2FnZSBpbiBtYm94IG1haWxib3hlcy4KKworLSBJc3N1ZSAjMTYwMTM6IEZpeCBgY3N2LlJlYWRlcmAgcGFyc2luZyBpc3N1ZSB3aXRoIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXJzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQyMTogRml4IGFuIE92ZXJmbG93RXJyb3IgaW4gYENhbGVuZGFyLml0ZXJtb250aGRhdGVzKClgIGFmdGVyCisgIGBkYXRldGltZS5NQVhZRUFSYC4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCisKKy0gSXNzdWUgIzE2MTEyOiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSBhcmd1bWVudCB0bworICAvdXNyL2Jpbi9maWxlLiAgUGF0Y2ggYnkgRGF2aWQgQmVuamFtaW4uCisKKy0gSXNzdWUgIzE1OTcwOiBgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCBub3cgc2VyaWFsaXplcyBjb3JyZWN0bHkgdGhlIGVtcHR5IEhUTUwKKyAgZWxlbWVudHMgJ21ldGEnIGFuZCAncGFyYW0nLgorCistIElzc3VlICMxNTg0MjogVGhlIGBTb2NrZXRJTy57cmVhZGFibGUsd3JpdGFibGUsc2Vla2FibGV9YCBtZXRob2RzIG5vdyByYWlzZQorICBWYWx1ZUVycm9yIHdoZW4gdGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYS4KKworLSBJc3N1ZSAjMTU4NzY6IEZpeCBhIHJlZmxlYWsgaW4gdGhlIGBjdXJzZXNgIG1vZHVsZTogd2luZG93LmVuY29kaW5nLgorCistIElzc3VlICMxNTg4MTogRml4IGBhdGV4aXRgIGhvb2sgaW4gYG11bHRpcHJvY2Vzc2luZ2AuICBPcmlnaW5hbCBwYXRjaCBieSBDaHJpcworICBNY0Rvbm91Z2guCisKKy0gSXNzdWUgIzE1ODQxOiBUaGUgcmVhZGFibGUoKSwgd3JpdGFibGUoKSBhbmQgc2Vla2FibGUoKSBtZXRob2RzIG9mCisgIGBpby5CeXRlc0lPYCBhbmQgYGlvLlN0cmluZ0lPYCBvYmplY3RzIG5vdyByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIG9iamVjdAorICBoYXMgYmVlbiBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgorCistIElzc3VlICMxNTQ0NzogVXNlIGBzdWJwcm9jZXNzLkRFVk5VTExgIGluIHdlYmJyb3dzZXIsIGluc3RlYWQgb2Ygb3BlbmluZworICBgb3MuZGV2bnVsbGAgZXhwbGljaXRseSBhbmQgbGVhdmluZyBpdCBvcGVuLgorCistIElzc3VlICMxNTUwOTogYHdlYmJyb3dzZXIuVW5peEJyb3dzZXJgIG5vIGxvbmdlciBwYXNzZXMgZW1wdHkgYXJndW1lbnRzIHRvCisgIFBvcGVuIHdoZW4gYGAlYWN0aW9uYGAgc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCisKKy0gSXNzdWUgIzEyNzc2LCBpc3N1ZSAjMTE4Mzk6IENhbGwgYGFyZ3BhcnNlYCB0eXBlIGZ1bmN0aW9uIChzcGVjaWZpZWQgYnkKKyAgYWRkX2FyZ3VtZW50KSBvbmx5IG9uY2UuIEJlZm9yZSwgdGhlIHR5cGUgZnVuY3Rpb24gd2FzIGNhbGxlZCB0d2ljZSBpbiB0aGUKKyAgY2FzZSB3aGVyZSB0aGUgZGVmYXVsdCB3YXMgc3BlY2lmaWVkIGFuZCB0aGUgYXJndW1lbnQgd2FzIGdpdmVuIGFzIHdlbGwuICBUaGlzCisgIHdhcyBlc3BlY2lhbGx5IHByb2JsZW1hdGljIGZvciB0aGUgRmlsZVR5cGUgdHlwZSwgYXMgYSBkZWZhdWx0IGZpbGUgd291bGQKKyAgYWx3YXlzIGJlIG9wZW5lZCwgZXZlbiBpZiBhIGZpbGUgYXJndW1lbnQgd2FzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICMxNTkwNjogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSBjYXVzZWQgYnkgdGhlIHByZWNlZGluZyBjaGFuZ2UsCisgIHdoZW4gYGBhY3Rpb249J2FwcGVuZCdgYCwgYGB0eXBlPSdzdHInYGAgYW5kIGBgZGVmYXVsdD1bXWBgLgorCistIElzc3VlICMxNjExMzogQWRkZWQgc2hhMyBtb2R1bGUgYmFzZWQgb24gdGhlIEtlY2NhayByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24KKyAgMy4yLiBUaGUgYGhhc2hsaWJgIG1vZHVsZSBoYXMgZm91ciBhZGRpdGlvbmFsIGhhc2ggYWxnb3JpdGhtczogYHNoYTNfMjI0YCwKKyAgYHNoYTNfMjU2YCwgYHNoYTNfMzg0YCBhbmQgYHNoYTNfNTEyYC4gQXMgcGFydCBvZiB0aGUgcGF0Y2ggc29tZSBjb21tb24KKyAgY29kZSB3YXMgbW92ZWQgZnJvbSBfaGFzaG9wZW5zc2wuYyB0byBoYXNobGliLmguCisKKy0gY3R5cGVzLmNhbGxfY29tbWV0aG9kIHdhcyByZW1vdmVkLCBzaW5jZSBpdHMgb25seSB1c2FnZSB3YXMgaW4gdGhlIGRlZnVuY3QKKyAgc2FtcGxlcyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE2NjkyOiBBZGRlZCBUTFN2MS4xIGFuZCBUTFN2MS4yIHN1cHBvcnQgZm9yIHRoZSBzc2wgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTY4MzI6IGFkZCBhYmMuZ2V0X2NhY2hlX3Rva2VuKCkgdG8gZXhwb3NlIGNhY2hlIHZhbGlkaXR5IGNoZWNraW5nCisgIHN1cHBvcnQgaW4gQUJDTWV0YS4KKworSURMRQorLS0tLQorCistIElzc3VlICMxODQyOTogRm9ybWF0IC8gRm9ybWF0IFBhcmFncmFwaCwgbm93IHdvcmtzIHdoZW4gY29tbWVudCBibG9ja3MKKyAgYXJlIHNlbGVjdGVkLiBBcyB3aXRoIHRleHQgYmxvY2tzLCB0aGlzIHdvcmtzIGJlc3Qgd2hlbiB0aGUgc2VsZWN0aW9uCisgIG9ubHkgaW5jbHVkZXMgY29tcGxldGUgbGluZXMuCisKKy0gSXNzdWUgIzE4MjI2OiBBZGQgZG9jc3RyaW5ncyBhbmQgdW5pdHRlc3RzIGZvciBGb3JtYXRQYXJhZ3JhcGgucHkuCisgIE9yaWdpbmFsIHBhdGNoZXMgYnkgVG9kZCBSb3ZpdG8gYW5kIFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMTgyNzk6IEZvcm1hdCAtIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2Ugbm8gbG9uZ2VyIG1hcmtzIGEgZmlsZSBhcworICBjaGFuZ2VkIHdoZW4gaXQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuIFRoaXMgZml4IGZvbGxvd2VkIHRoZSBhZGRpdGlvbiBvZiBhCisgIHRlc3QgZmlsZSBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGhpbCBXZWJzdGVyICh0aGUgaXNzdWUncyBtYWluIGdvYWwpLgorCistIElzc3VlICM3MTM2OiBJbiB0aGUgSWRsZSBGaWxlIG1lbnUsICJOZXcgV2luZG93IiBpcyByZW5hbWVkICJOZXcgRmlsZSIuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdCwgUm9nZXQgU2Vyd3ksIGFuZCBUb2RkIFJvdml0by4KKworLSBSZW1vdmUgZGVhZCBpbXBvcnRzIG9mIGltcC4KKworLSBJc3N1ZSAjMTgxOTY6IEF2b2lkIGRpc3BsYXlpbmcgc3B1cmlvdXMgU3lzdGVtRXhpdCB0cmFjZWJhY2tzLgorCistIElzc3VlICM1NDkyOiBBdm9pZCB0cmFjZWJhY2sgd2hlbiBleGl0aW5nIElETEUgY2F1c2VkIGJ5IGEgcmFjZSBjb25kaXRpb24uCisKKy0gSXNzdWUgIzE3NTExOiBLZWVwIElETEUgZmluZCBkaWFsb2cgb3BlbiBhZnRlciBjbGlja2luZyAiRmluZCBOZXh0Ii4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FyYWggSy4KKworLSBJc3N1ZSAjMTgwNTU6IE1vdmUgSURMRSBvZmYgb2YgaW1wIGFuZCBvbiB0byBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE1MzkyOiBDcmVhdGUgYSB1bml0dGVzdCBmcmFtZXdvcmsgZm9yIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgUmFqYWdvcGFsYXNhcm1hIEpheWFrcmlzaG5hbi4KKyAgU2VlIExpYi9pZGxlbGliL2lkbGVfdGVzdC9SRUFETUUudHh0IGZvciBob3cgdG8gcnVuIElkbGUgdGVzdHMuCisKKy0gSXNzdWUgIzE0MTQ2OiBIaWdobGlnaHQgc291cmNlIGxpbmUgd2hpbGUgZGVidWdnaW5nIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE3ODM4OiBBbGxvdyBzeXMuc3RkaW4gdG8gYmUgcmVhc3NpZ25lZC4KKworLSBJc3N1ZSAjMTM0OTU6IEF2b2lkIGxvYWRpbmcgdGhlIGNvbG9yIGRlbGVnYXRvciB0d2ljZSBpbiBJRExFLgorCistIElzc3VlICMxNzc5ODogQWxsb3cgSURMRSB0byBlZGl0IG5ldyBmaWxlcyB3aGVuIHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmUuCisKKy0gSXNzdWUgIzE0NzM1OiBVcGRhdGUgSURMRSBkb2NzIHRvIG9taXQgIkNvbnRyb2wteiBvbiBXaW5kb3dzIi4KKworLSBJc3N1ZSAjMTc1MzI6IEFsd2F5cyBpbmNsdWRlIE9wdGlvbnMgbWVudSBmb3IgSURMRSBvbiBPUyBYLgorICBQYXRjaCBieSBHdWlsaGVybWUgU2ltw7Vlcy4KKworLSBJc3N1ZSAjMTc1ODU6IEZpeGVkIElETEUgcmVncmVzc2lvbi4gTm93IGNsb3NlcyB3aGVuIHVzaW5nIGV4aXQoKSBvciBxdWl0KCkuCisKKy0gSXNzdWUgIzE3NjU3OiBTaG93IGZ1bGwgVGsgdmVyc2lvbiBpbiBJRExFJ3MgYWJvdXQgZGlhbG9nLgorICBQYXRjaCBieSBUb2RkIFJvdml0by4KKworLSBJc3N1ZSAjMTc2MTM6IFByZXZlbnQgdHJhY2ViYWNrIHdoZW4gcmVtb3Zpbmcgc3ludGF4IGNvbG9yaXplciBpbiBJRExFLgorCistIElzc3VlICMxMjA3NTg5OiBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwYXRjaCBmb3IgcmlnaHQtY2xpY2sgbWVudSBpbiBJRExFLgorCistIElzc3VlICMxNjg4NzogSURMRSBub3cgYWNjZXB0cyBDYW5jZWwgaW4gdGFiaWZ5L3VudGFiaWZ5IGRpYWxvZyBib3guCisKKy0gSXNzdWUgIzE3NjI1OiBJbiBJRExFLCBjbG9zZSB0aGUgcmVwbGFjZSBkaWFsb2cgYWZ0ZXIgaXQgaXMgdXNlZC4KKworLSBJc3N1ZSAjMTQyNTQ6IElETEUgbm93IGhhbmRsZXMgcmVhZGxpbmUgY29ycmVjdGx5IGFjcm9zcyBzaGVsbCByZXN0YXJ0cy4KKworLSBJc3N1ZSAjMTc2MTQ6IElETEUgbm8gbG9uZ2VyIHJhaXNlcyBleGNlcHRpb24gd2hlbiBxdWlja2x5IGNsb3NpbmcgYSBmaWxlLgorCistIElzc3VlICM2Njk4OiBJRExFIG5vdyBvcGVucyBqdXN0IGFuIGVkaXRvciB3aW5kb3cgd2hlbiBjb25maWd1cmVkIHRvIGRvIHNvLgorCistIElzc3VlICM4OTAwOiBVc2luZyBrZXlib2FyZCBzaG9ydGN1dHMgaW4gSURMRSB0byBvcGVuIGEgZmlsZSBubyBsb25nZXIKKyAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjNjY0OTogRml4ZWQgbWlzc2luZyBleGl0IHN0YXR1cyBpbiBJRExFLiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KKworLSBJc3N1ZSAjMTcxMTQ6IElETEUgbm93IHVzZXMgbm9uLXN0cmljdCBjb25maWcgcGFyc2VyLgorCistIElzc3VlICM5MjkwOiBJbiBJRExFIHRoZSBzeXMuc3RkKiBzdHJlYW1zIG5vdyBpbXBsZW1lbnQgaW8uVGV4dElPQmFzZQorICBpbnRlcmZhY2UgYW5kIHN1cHBvcnQgYWxsIG1hbmRhdG9yeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgorCistIElzc3VlICM1MDY2OiBVcGRhdGUgSURMRSBkb2NzLiBQYXRjaCBieSBUb2RkIFJvdml0by4KKworLSBJc3N1ZSAjMTY4Mjk6IElETEUgcHJpbnRpbmcgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZXJlIGFyZSBzcGFjZXMgb3Igb3RoZXIKKyAgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIHBhdGguCisKKy0gSXNzdWUgIzE2NDkxOiBJRExFIG5vdyBwcmludHMgY2hhaW5lZCBleGNlcHRpb24gdHJhY2ViYWNrcy4KKworLSBJc3N1ZSAjMTY4MTk6IElETEUgbWV0aG9kIGNvbXBsZXRpb24gbm93IGNvcnJlY3RseSB3b3JrcyBmb3IgYnl0ZXMgbGl0ZXJhbHMuCisKKy0gSXNzdWUgIzE2NTA0OiBJRExFIG5vdyBjYXRjaGVzIFN5bnRheEVycm9ycyByYWlzZWQgYnkgdG9rZW5pemVyLiBQYXRjaCBieQorICBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTY1MTE6IFVzZSBkZWZhdWx0IElETEUgd2lkdGggYW5kIGhlaWdodCBpZiBjb25maWcgcGFyYW0gaXMgbm90IHZhbGlkLgorICBQYXRjaCBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMjA3NTg5OiBBZGQgQ3V0L0NvcHkvUGFzdGUgaXRlbXMgdG8gSURMRSByaWdodCBjbGljayBDb250ZXh0IE1lbnUuCisgIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgorCistIElzc3VlICMxNjEyMzogSURMRSAtIGRlcHJlY2F0ZSBydW5uaW5nIHdpdGhvdXQgYSBzdWJwcm9jZXNzLgorICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE2NjYzMTg6IEFkZCBhIHRlc3QgdGhhdCBzaHV0aWwuY29weXRyZWUoKSByZXRhaW5zIGRpcmVjdG9yeQorICBwZXJtaXNzaW9ucy4gIFBhdGNoIGJ5IENhdGhlcmluZSBEZXZsaW4uCisKKy0gSXNzdWUgIzE4MjczOiBtb3ZlIHRoZSB0ZXN0cyBpbiBMaWIvdGVzdC9qc29uX3Rlc3RzIHRvIExpYi90ZXN0L3Rlc3RfanNvbgorICBhbmQgbWFrZSB0aGVtIGRpc2NvdmVyYWJsZSBieSB1bml0dGVzdC4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBGaXggYSBmY250bCB0ZXN0IGNhc2Ugb24gS0ZyZWVCU0QsIERlYmlhbiAjNzA4NjUzIChQZXRyIFNhbGluZ2VyKS4KKworLSBJc3N1ZSAjMTgzOTY6IEZpeCBzcHVyaW91cyB0ZXN0IGZhaWx1cmUgaW4gdGVzdF9zaWduYWwgb24gV2luZG93cyB3aGVuCisgIGZhdWx0aGFuZGxlciBpcyBlbmFibGVkIChQYXRjaCBieSBKZXJlbXkgS2xvdGgpCisKKy0gSXNzdWUgIzE3MDQ2OiBGaXggYnJva2VuIHRlc3RfZXhlY3V0YWJsZV93aXRob3V0X2N3ZCBpbiB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzE1NDE1OiBBZGQgbmV3IHRlbXBfZGlyKCkgYW5kIGNoYW5nZV9jd2QoKSBjb250ZXh0IG1hbmFnZXJzIHRvCisgIHRlc3Quc3VwcG9ydCwgYW5kIHJlZmFjdG9yIHRlbXBfY3dkKCkgdG8gdXNlIHRoZW0uICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTU0OTQ6IHRlc3Quc3VwcG9ydCBpcyBub3cgYSBwYWNrYWdlIHJhdGhlciB0aGFuIGEgbW9kdWxlIChJbml0aWFsCisgIHBhdGNoIGJ5IEluZHJhIFRhbGlwKQorCistIElzc3VlICMxNzk0NDogdGVzdF96aXBmaWxlIG5vdyBkaXNjb3ZlcmFibGUgYW5kIHVzZXMgc3ViY2xhc3NpbmcgdG8KKyAgZ2VuZXJhdGUgdGVzdHMgZm9yIGRpZmZlcmVudCBjb21wcmVzc2lvbiB0eXBlcy4gIEZpeGVkIGEgYnVnIHdpdGggc2tpcHBpbmcKKyAgc29tZSB0ZXN0cyBkdWUgdG8gdXNlIG9mIGV4aGF1c3RlZCBpdGVyYXRvcnMuCisKKy0gSXNzdWUgIzE4MjY2OiB0ZXN0X2xhcmdlZmlsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSBhbmQKKyAgc3VwcG9ydHMgcnVubmluZyBvbmx5IHNlbGVjdGVkIHRlc3RzLiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzc2NzogdGVzdF9sb2NhbGUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTgzNzU6IEFzc3VtZSAtLXJhbmRvbWl6ZSB3aGVuIC0tcmFuZHNlZWQgaXMgdXNlZCBmb3IgcnVubmluZyB0aGUKKyAgdGVzdHN1aXRlLgorCistIElzc3VlICMxMTE4NTogRml4IHRlc3Rfd2FpdDQgdW5kZXIgQUlYLiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCisKKy0gSXNzdWUgIzE4MjA3OiBGaXggdGVzdF9zc2wgZm9yIHNvbWUgdmVyc2lvbnMgb2YgT3BlblNTTCB0aGF0IGlnbm9yZSBzZWNvbmRzCisgIGluIEFTTjFfVElNRSBmaWVsZHMuCisKKy0gSXNzdWUgIzE4MDk0OiB0ZXN0X3V1aWQgbm8gbG9uZ2VyIHJlcG9ydHMgc2tpcHBlZCB0ZXN0cyBhcyBwYXNzZWQuCisKKy0gSXNzdWUgIzE3OTkyOiBBZGQgdGltZW91dHMgdG8gYXN5bmNvcmUgYW5kIGFzeW5jaGF0IHRlc3RzIHNvIHRoYXQgdGhleSB3b24ndAorICBhY2NpZGVudGFsbHkgaGFuZy4KKworLSBJc3N1ZSAjMTc4MzM6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBzZWVuIG9uIG1hY2hpbmVzIHdoZXJlIGRlYnVnIHN5bWJvbHMKKyAgZm9yIGdsaWJjIGFyZSBhdmFpbGFibGUgKHNlZW4gb24gUFBDNjQgTGludXgpLgorCistIElzc3VlICM3ODU1OiBBZGQgdGVzdHMgZm9yIGN0eXBlcy93aW5yZWcgZm9yIGlzc3VlcyBmb3VuZCBpbiBJcm9uUHl0aG9uLgorICBJbml0aWFsIHBhdGNoIGJ5IERpbm8gVmllaGxhbmQuCisKKy0gSXNzdWUgIzExMDc4OiB0ZXN0X19fYWxsX18gbm93IGNoZWNrcyBmb3IgZHVwbGljYXRlcyBpbiBfX2FsbF9fLgorICBJbml0aWFsIHBhdGNoIGJ5IFIuIERhdmlkIE11cnJheS4KKworLSBJc3N1ZSAjMTc3MTI6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBvbiBVYnVudHUgMTMuMDQuCisKKy0gSXNzdWUgIzE3ODM1OiBGaXggdGVzdF9pbyB3aGVuIHRoZSBkZWZhdWx0IE9TIHBpcGUgYnVmZmVyIHNpemUgaXMgbGFyZ2VyCisgIHRoYW4gb25lIG1pbGxpb24gYnl0ZXMuCisKKy0gSXNzdWUgIzE3MDY1OiBVc2UgcHJvY2Vzcy11bmlxdWUga2V5IGZvciB3aW5yZWcgdGVzdHMgdG8gYXZvaWQgZmFpbHVyZXMgaWYKKyAgdGVzdCBpcyBydW4gbXVsdGlwbGUgdGltZXMgaW4gcGFyYWxsZWwgKGVnOiBvbiBhIGJ1aWxkYm90IGhvc3QpLgorCistIElzc3VlICMxMjgyMDogYWRkIHRlc3RzIGZvciB0aGUgeG1sLmRvbS5taW5pY29tcGF0IG1vZHVsZS4KKyAgUGF0Y2ggYnkgSm9obiBDaGFuZGxlciBhbmQgUGhpbCBDb25uZWxsLgorCistIElzc3VlICMxNzY5MTogdGVzdF91bml2bmV3bGluZXMgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTc3OTA6IHRlc3Rfc2V0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3Nzg5OiB0ZXN0X3JhbmRvbSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzc3OTogdGVzdF9vc3hfZW52IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3NzY2OiB0ZXN0X2l0ZXJsZW4gbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTc2OTA6IHRlc3RfdGltZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzY5MjogdGVzdF9zcWxpdGUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTE5OTU6IHRlc3RfcHlkb2MgZG9lc24ndCBpbXBvcnQgYWxsIHN5cy5wYXRoIG1vZHVsZXMgYW55bW9yZS4KKworLSBJc3N1ZSAjMTc0NDg6IHRlc3Rfc2F4IG5vdyBza2lwcyBpZiB0aGVyZSBhcmUgbm8geG1sIHBhcnNlcnMgYXZhaWxhYmxlCisgIGluc3RlYWQgb2YgcmFpc2luZyBhbiBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTE0MjA6IG1ha2UgdGVzdCBzdWl0ZSBwYXNzIHdpdGggLUIvRE9OVFdSSVRFQllURUNPREUgc2V0LgorICBJbml0aWFsIHBhdGNoIGJ5IFRob21hcyBXb3V0ZXJzLgorCistIElzc3VlICMxMDY1MjogbWFrZSB0Y2wvdGsgdGVzdHMgcnVuIGFmdGVyIF9fYWxsX18gdGVzdCwgcGF0Y2ggYnkKKyAgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxMTk2MzogcmVtb3ZlIGh1bWFuIHZlcmlmaWNhdGlvbiBmcm9tIHRlc3RfcGFyc2VyIGFuZCB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzExNzMyOiBhZGQgYSBuZXcgc3VwcHJlc3NfY3Jhc2hfcG9wdXAoKSBjb250ZXh0IG1hbmFnZXIgdG8gdGVzdC5zdXBwb3J0CisgIHRoYXQgZGlzYWJsZXMgY3Jhc2ggcG9wdXBzIG9uIFdpbmRvd3MgYW5kIHVzZSBpdCBpbiB0ZXN0X2ZhdWx0aGFuZGxlciBhbmQKKyAgdGVzdF9jYXBpLgorCistIElzc3VlICMxMzg5ODogdGVzdF9zc2wgbm8gbG9uZ2VyIHByaW50cyBhIHNwdXJpb3VzIHN0YWNrIHRyYWNlIG9uIFVidW50dS4KKworLSBJc3N1ZSAjMTcyODM6IFNoYXJlIGNvZGUgYmV0d2VlbiBgX19tYWluX18ucHlgIGFuZCBgcmVncnRlc3QucHlgIGluCisgIGBMaWIvdGVzdGAuCisKKy0gSXNzdWUgIzE3MjQ5OiBjb252ZXJ0IGEgdGVzdCBpbiB0ZXN0X2NhcGkgdG8gdXNlIHVuaXR0ZXN0IGFuZCByZWFwIHRocmVhZHMuCisKKy0gSXNzdWUgIzE3MTA3OiBUZXN0IGNsaWVudC1zaWRlIFNOSSBzdXBwb3J0IGluIHVybGxpYi5yZXF1ZXN0IHRoYW5rcyB0bworICB0aGUgbmV3IHNlcnZlci1zaWRlIFNOSSBzdXBwb3J0IGluIHRoZSBzc2wgbW9kdWxlLiAgSW5pdGlhbCBwYXRjaCBieQorICBEYW5pZWwgQmxhY2suCisKKy0gSXNzdWUgIzE3MDQxOiBGaXggdGVzdGluZyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGggdGhlCisgIC0td2l0aG91dC1kb2Mtc3RyaW5ncy4KKworLSBJc3N1ZSAjMTY5MjM6IEZpeCBSZXNvdXJjZVdhcm5pbmdzIGluIHRlc3Rfc3NsLgorCistIElzc3VlICMxNTUzOTogQWRkZWQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5LgorCistIElzc3VlICMxNzQ3OTogdGVzdF9pbyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzA2NjogdGVzdF9yb2JvdHBhcnNlciBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMzNDogdGVzdF9pbmRleCBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMzMzogdGVzdF9pbWFwbGliIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3MDgyOiB0ZXN0X2RibSogbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzA3OTogdGVzdF9jdHlwZXMgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTczMDQ6IHRlc3RfaGFzaCBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMwMzogdGVzdF9mdXR1cmUqIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTcxNjM6IHRlc3RfZmlsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjkyNTogdGVzdF9jb25maWdwYXJzZXIgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MTg6IHRlc3RfY29kZWNzIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE2OTE5OiB0ZXN0X2NyeXB0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE2OTEwOiB0ZXN0X2J5dGVzLCB0ZXN0X3VuaWNvZGUsIGFuZCB0ZXN0X3VzZXJzdHJpbmcgbm93IHdvcmsgd2l0aAorICB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MDU6IHRlc3Rfd2FybmluZ3Mgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBJc3N1ZSAjMTY4OTg6IHRlc3RfYnVmaW8gbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4ODg6IHRlc3RfYXJyYXkgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4OTY6IHRlc3RfYXN5bmNvcmUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4OTc6IHRlc3RfYmlzZWN0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBJbml0aWFsIHBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4NTI6IHRlc3RfZ2VuZXJpY3BhdGgsIHRlc3RfcG9zaXhwYXRoLCB0ZXN0X250cGF0aCwgYW5kIHRlc3RfbWFjcGF0aAorICBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjc0ODogdGVzdF9oZWFwcSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKworLSBJc3N1ZSAjMTA2NDY6IFRlc3RzIHJlYXJyYW5nZWQgZm9yIG9zLnNhbWVmaWxlL3NhbWVzdGF0IHRvIGNoZWNrIGZvciBub3QKKyAganVzdCBzeW1saW5rcyBidXQgYWxzbyBoYXJkIGxpbmtzLgorCistIElzc3VlICMxNTMwMjogU3dpdGNoIHJlZ3J0ZXN0IGZyb20gdXNpbmcgZ2V0b3B0IHRvIHVzaW5nIGFyZ3BhcnNlLgorCistIElzc3VlICMxNTMyNDogRml4IHJlZ3J0ZXN0IHBhcnNpbmcgb2YgLS1mcm9tZmlsZSwgLS1tYXRjaCwgYW5kIC0tcmFuZG9taXplCisgIG9wdGlvbnMuCisKKy0gSXNzdWUgIzE2NzAyOiB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgdGVzdHMgbm93IGNvcnJlY3RseSBpZ25vcmVzIHByb3hpZXMgZm9yCisgIGxvY2FsaG9zdCB0ZXN0cy4KKworLSBJc3N1ZSAjMTY2NjQ6IEFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBnbG9iJ3MgYmVoYXZpb3VyIGNvbmNlcm5pbmcgZW50cmllcworICBzdGFydGluZyB3aXRoIGEgIi4iLiAgUGF0Y2ggYnkgU2ViYXN0aWFuIEtyZWZ0LgorCistIElzc3VlICMxMzM5MDogVGhlIGBgLVJgYCBvcHRpb24gdG8gcmVncnRlc3Qgbm93IGFsc28gY2hlY2tzIGZvciBtZW1vcnkKKyAgYWxsb2NhdGlvbiBsZWFrcywgdXNpbmcgOmZ1bmM6YHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKWAuCisKKy0gSXNzdWUgIzE2NTU5OiBBZGQgbW9yZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlLCBpbmNsdWRpbmcgc29tZSBmcm9tIHRoZQorICBvZmZpY2lhbCB0ZXN0IHN1aXRlIGF0IGpzb24ub3JnLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTY2NjE6IEZpeCB0aGUgYG9zLmdldGdyb3VwbGlzdCgpYCB0ZXN0IGJ5IG5vdCBhc3N1bWluZyB0aGF0IGl0IGdpdmVzCisgIHRoZSBzYW1lIG91dHB1dCBhcyA6Y29tbWFuZDpgaWQgLUdgLgorCistIElzc3VlICMxNjExNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBleGVjdXRhYmxlIGFyZ3VtZW50IHRvCisgIHN1YnByb2Nlc3MuUG9wZW4oKS4gIEluaXRpYWwgcGF0Y2ggYnkgS3VzaGFsIERhcy4KKworLSBJc3N1ZSAjMTYxMjY6IFB5RXJyX0Zvcm1hdCBmb3JtYXQgbWlzbWF0Y2ggaW4gX3Rlc3RjYXBpbW9kdWxlLmMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MzA0OiBGaXggd2FybmluZyBtZXNzYWdlIHdoZW4gYG9zLmNoZGlyKClgIGZhaWxzIGluc2lkZQorICBgdGVzdC5zdXBwb3J0LnRlbXBfY3dkKClgLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBgVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wKClgLiBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTU1NzogQWRkZWQgYSB0ZXN0IHN1aXRlIGZvciB0aGUgd2ViYnJvd3NlciBtb2R1bGUsIHRoYW5rcyB0byBBbnRvbgorICBCYXJrb3Zza3kuCisKKy0gSXNzdWUgIzE2Njk4OiBTa2lwIHBvc2l4IHRlc3RfZ2V0Z3JvdXBzIHdoZW4gYnVpbHQgd2l0aCBPUyBYCisgIGRlcGxveW1lbnQgdGFyZ2V0IHByaW9yIHRvIDEwLjYuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNjA2NzogQWRkIGRlc2NyaXB0aW9uIGludG8gTVNJIGZpbGUgdG8gcmVwbGFjZSBpbnN0YWxsZXIncworICB0ZW1wb3JhcnkgbmFtZS4KKworLSBJc3N1ZSAjMTgyNTc6IEZpeCByZWFkbGluayB1c2FnZSBpbiBweXRob24tY29uZmlnLiAgSW5zdGFsbCB0aGUgcHl0aG9uCisgIHZlcnNpb24gYWdhaW4gb24gRGFyd2luLgorCistIElzc3VlICMxODQ4MTogQWRkIEMgY292ZXJhZ2UgcmVwb3J0aW5nIHdpdGggZ2NvdiBhbmQgbGNvdi4gQSBuZXcgbWFrZSB0YXJnZXQKKyAgImNvdmVyYWdlLXJlcG9ydCIgY3JlYXRlcyBhbiBpbnN0cnVtZW50ZWQgUHl0aG9uIGJ1aWxkLCBydW5zIHVuaXQgdGVzdHMKKyAgYW5kIGNyZWF0ZXMgYSBIVE1MLiBUaGUgcmVwb3J0IGNhbiBiZSB1cGRhdGVkIHdpdGggIm1ha2UgY292ZXJhZ2UtbGNvdiIuCisKKy0gSXNzdWUgIzE3ODQ1OiBDbGFyaWZpZWQgdGhlIG1lc3NhZ2UgcHJpbnRlZCB3aGVuIHNvbWUgbW9kdWxlIGFyZSBub3QgYnVpbHQuCisKKy0gSXNzdWUgIzE4MjU2OiBDb21waWxhdGlvbiBmaXggZm9yIHJlY2VudCBBSVggcmVsZWFzZXMuICBQYXRjaCBieQorICBEYXZpZCBFZGVsc29obi4KKworLSBJc3N1ZSAjMTc1NDc6IEluIGNvbmZpZ3VyZSwgZXhwbGljaXRseSBwYXNzIC1XZm9ybWF0IGZvciB0aGUgYmVuZWZpdCBmb3IgR0NDCisgIDQuOC4KKworLSBJc3N1ZSAjMTUxNzI6IERvY3VtZW50IE5BU00gMi4xMCsgYXMgcmVxdWlyZW1lbnQgZm9yIGJ1aWxkaW5nIE9wZW5TU0wgMS4wLjEKKyAgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTc1OTE6IFVzZSBsb3dlcmNhc2UgZmlsZW5hbWVzIHdoZW4gaW5jbHVkaW5nIFdpbmRvd3MgaGVhZGVyIGZpbGVzLgorICBQYXRjaCBieSBSb3VtZW4gUGV0cm92LgorCistIElzc3VlICMxNzU1MDogRml4IHRoZSAtLWVuYWJsZS1wcm9maWxpbmcgY29uZmlndXJlIHN3aXRjaC4KKworLSBJc3N1ZSAjMTc0MjU6IEJ1aWxkIHdpdGggb3BlbnNzbCAxLjAuMWQgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTY3NTQ6IEZpeCB0aGUgaW5jb3JyZWN0IHNoYXJlZCBsaWJyYXJ5IGV4dGVuc2lvbiBvbiBsaW51eC4gSW50cm9kdWNlCisgIHR3byBtYWtlZmlsZSBtYWNyb3MgU0hMSUJfU1VGRklYIGFuZCBFWFRfU1VGRklYLiBTTyBub3cgaGFzIHRoZSB2YWx1ZSBvZgorICBTSExJQl9TVUZGSVggYWdhaW4gKGFzIGluIDIueCBhbmQgMy4xKS4gVGhlIFNPIG1hY3JvIGlzIHJlbW92ZWQgaW4gMy40LgorCistIElzc3VlICM1MDMzOiBGaXggYnVpbGRpbmcgb2YgdGhlIHNxbGl0ZTMgZXh0ZW5zaW9uIG1vZHVsZSB3aGVuIHRoZQorICBTUUxpdGUgbGlicmFyeSB2ZXJzaW9uIGhhcyAiYmV0YSIgaW4gaXQuIFBhdGNoIGJ5IEFuZHJlYXMgUGVsbWUuCisKKy0gSXNzdWUgIzE3MjI4OiBGaXggYnVpbGRpbmcgd2l0aG91dCBweW1hbGxvYy4KKworLSBJc3N1ZSAjMzcxODogVXNlIEFDX0FSR19WQVIgdG8gc2V0IE1BQ0hERVAgaW4gY29uZmlndXJlLmFjLgorCistIElzc3VlICMxNjIzNTogSW1wbGVtZW50IHB5dGhvbi1jb25maWcgYXMgYSBzaGVsbCBzY3JpcHQuCisKKy0gSXNzdWUgIzE2NzY5OiBSZW1vdmUgb3V0ZGF0ZWQgVmlzdWFsIFN0dWRpbyBwcm9qZWN0cy4KKworLSBJc3N1ZSAjMTcwMzE6IEZpeCBydW5uaW5nIHJlZ2VuIGluIGNyb3NzIGJ1aWxkcy4KKworLSBJc3N1ZSAjMzc1NDogZml4IHR5cG8gaW4gcHRocmVhZCBBQ19DQUNIRV9WQUwuCisKKy0gSXNzdWUgIzE1NDg0OiBGaXggX1BZVEhPTl9QUk9KRUNUX0JBU0UgZm9yIHNyY2RpciAhPSBidWlsZGRpciBidWlsZHM7CisgIHVzZSBfUFlUSE9OX1BST0pFQ1RfQkFTRSBpbiBkaXN0dXRpbHMvc3lzY29uZmlnLnB5LgorCistIERyb3Agc3VwcG9ydCBmb3IgV2luZG93cyAyMDAwIChjaGFuZ2VzZXQgZTUyZGYwNWI0OTZhKS4KKworLSBJc3N1ZSAjMTcwMjk6IExldCBoMnB5IHNlYXJjaCB0aGUgbXVsdGlhcmNoIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTY5NTM6IEZpeCBzb2NrZXQgbW9kdWxlIGNvbXBpbGF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoCisgIEhBVkVfQlJPS0VOX1BPTEwuIFBhdGNoIGJ5IEplZmZyZXkgQXJtc3Ryb25nLgorCistIElzc3VlICMxNjMyMDogUmVtb3ZlIHJlZHVuZGFudCBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9yIHN0cmluZ3MgYW5kIGJ5dGVzLgorCistIENyb3NzIGNvbXBpbGluZyBuZWVkcyBob3N0IGFuZCBidWlsZCBzZXR0aW5ncy4gY29uZmlndXJlIG5vIGxvbmdlcgorICBjcmVhdGVzIGEgYnJva2VuIFBZVEhPTl9GT1JfQlVJTEQgdmFyaWFibGUgd2hlbiAtLWJ1aWxkIGlzIG1pc3NpbmcuCisKKy0gRml4IGNyb3NzIGNvbXBpbGluZyBpc3N1ZSBpbiBzZXR1cC5weSwgZW5zdXJlIHRoYXQgbGliX2RpcnMgYW5kIGluY19kaXJzIGFyZQorICBkZWZpbmVkIGluIGNyb3NzIGNvbXBpbGluZyBtb2RlLCB0b28uCisKKy0gSXNzdWUgIzE2ODM2OiBFbmFibGUgSVB2NiBzdXBwb3J0IGV2ZW4gaWYgSVB2NiBpcyBkaXNhYmxlZCBvbiB0aGUgYnVpbGQgaG9zdC4KKworLSBJc3N1ZSAjMTY1OTM6IEhhdmUgQlNEICdtYWtlIC1zJyBkbyB0aGUgcmlnaHQgdGhpbmcsIHRoYW5rcyB0byBEYW5pZWwgU2hhaGFmCisKKy0gSXNzdWUgIzE2MjYyOiBmaXggb3V0LW9mLXNyYy10cmVlIGJ1aWxkcywgaWYgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzE1Mjk4OiBlbnN1cmUgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGluIGJ1aWxkIGRpcmVjdG9yeSwgbm90CisgIHNvdXJjZSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1ODMzOiBGaXggYSByZWdyZXNzaW9uIGluIDMuMyB0aGF0IHJlc3VsdGVkIGluIGV4Y2VwdGlvbnMgYmVpbmcKKyAgcmFpc2VkIGlmIGltcG9ydGxpYiBmYWlsZWQgdG8gd3JpdGUgYnl0ZS1jb21waWxlZCBmaWxlcy4gIFRoaXMgYWZmZWN0ZWQKKyAgYXR0ZW1wdHMgdG8gYnVpbGQgUHl0aG9uIG91dC1vZi10cmVlIGZyb20gYSByZWFkLW9ubHkgc291cmNlIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTU5MjM6IEZpeCBhIG1pc3Rha2UgaW4gYGBhc2RsX2MucHlgYCB0aGF0IHJlc3VsdGVkIGluIGEgVHlwZUVycm9yCisgIGFmdGVyIDI4MDFiZjg3NWEyNCAoc2VlICMxNTgwMSkuCisKKy0gSXNzdWUgIzE2MTM1OiBSZW1vdmUgT1MvMiBzdXBwb3J0LgorCistIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWQtb25seQorICBzb3VyY2UgZGlyZWN0b3J5LiAgKFNvbWV3aGF0IHJlbGF0ZWQgdG8gaXNzdWUgIzk4NjAuKQorCistIElzc3VlICMxNTU4NzogRW5hYmxlIFRrIGhpZ2gtcmVzb2x1dGlvbiB0ZXh0IHJlbmRlcmluZyBvbiBNYWNzIHdpdGgKKyAgUmV0aW5hIGRpc3BsYXlzLiAgQXBwbGllcyB0byBUa2ludGVyIGFwcHMsIHN1Y2ggYXMgSURMRSwgb24gT1MgWAorICBmcmFtZXdvcmsgYnVpbGRzIGxpbmtlZCB3aXRoIENvY29hIFRrIDguNS4KKworLSBJc3N1ZSAjMTcxNjE6IG1ha2UgaW5zdGFsbCBub3cgYWxzbyBpbnN0YWxscyBhIHB5dGhvbjMgbWFuIHBhZ2UuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxODM1MTogRml4IHZhcmlvdXMgaXNzdWVzIGluIGEgZnVuY3Rpb24gaW4gaW1wb3J0bGliIHByb3ZpZGVkIHRvIGhlbHAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgKGFuZCB0aHVzIGJ5IGV4dGVuc2lvbgorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgpIGFuZCBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KCkpLgorCistIElzc3VlICMxNTc2NzogQWRkZWQgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcygpLgorCistIFB5RXJyX1NldEltcG9ydEVycm9yKCkgbm93IHNldHMgVHlwZUVycm9yIHdoZW4gaXRzIG1zZyBhcmd1bWVudCBpcyBzZXQuCisKKy0gSXNzdWUgIzkzNjk6IFRoZSB0eXBlcyBvZiBgY2hhcipgIGFyZ3VtZW50cyBvZiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKSBhbmQKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZCgpIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuICBCYXNlZCBvbiBwYXRjaGVzIGJ5CisgIErDtnJnIE3DvGxsZXIgYW5kIExhcnMgQnVpdGluY2suCisKKy0gSXNzdWUgIzE3MjA2OiBQeV9DTEVBUigpLCBQeV9ERUNSRUYoKSwgUHlfWElOQ1JFRigpIGFuZCBQeV9YREVDUkVGKCkgbm93CisgIGV4cGFuZCB0aGVpciBhcmd1bWVudHMgb25jZSBpbnN0ZWFkIG9mIG11bHRpcGxlIHRpbWVzLiAgUGF0Y2ggd3JpdHRlbiBieSBJbGxpYQorICBQb2xvc3VraGluLgorCistIElzc3VlICMxNzUyMjogQWRkIHRoZSBQeUdJTFN0YXRlX0NoZWNrKCkgQVBJLgorCistIElzc3VlICMxNzMyNzogQWRkIFB5RGljdF9TZXREZWZhdWx0LgorCistIElzc3VlICMxNjg4MTogRml4IFB5X0FSUkFZX0xFTkdUSCBtYWNybyBmb3IgR0NDIDwgMy4xLgorCistIElzc3VlICMxNjUwNTogUmVtb3ZlIHVudXNlZCBQeV9UUEZMQUdTX0lOVF9TVUJDTEFTUy4KKworLSBJc3N1ZSAjMTYwODY6IFB5VHlwZU9iamVjdC50cF9mbGFncyBhbmQgUHlUeXBlX1NwZWMuZmxhZ3MgYXJlIG5vdyB1bnNpZ25lZAorICAodW5zaWduZWQgbG9uZyBhbmQgdW5zaWduZWQgaW50KSB0byBhdm9pZCBhbiB1bmRlZmluZWQgYmVoYXZpb3VyIHdpdGgKKyAgUHlfVFBGTEFHU19UWVBFX1NVQkNMQVNTICgoMSA8PCAzMSkuIFB5VHlwZV9HZXRGbGFncygpIHJlc3VsdCB0eXBlIGlzCisgIG5vdyB1bnNpZ25lZCB0b28gKHVuc2lnbmVkIGxvbmcsIGluc3RlYWQgb2YgbG9uZykuCisKKy0gSXNzdWUgIzE2MTY2OiBBZGQgUFlfTElUVExFX0VORElBTiBhbmQgUFlfQklHX0VORElBTiBtYWNyb3MgYW5kIHVuaWZpZWQKKyAgZW5kaWFubmVzcyBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzMDA2OiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbmRleGluZyBvZiBkaWN0Ll9fbWlzc2luZ19fLgorICBBZGQgYW4gZW50cnkgaW4gdGhlIGxhbmd1YWdlIGRhdGFtb2RlbCBzcGVjaWFsIG1ldGhvZHMgc2VjdGlvbi4KKyAgUmV2aXNlIGFuZCBpbmRleCBpdHMgZGlzY3Vzc2lvbiBpbiB0aGUgc3RkdHlwZXMgbWFwcGluZy9kaWN0IHNlY3Rpb24uCisKKy0gSXNzdWUgIzE3NzAxOiBJbXByb3Zpbmcgc3RyZnRpbWUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTg0NDA6IENsYXJpZnkgdGhhdCBgaGFzaCgpYCBjYW4gdHJ1bmNhdGUgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4KKyAgb2JqZWN0J3MgY3VzdG9tIGBfX2hhc2hfXygpYCBtZXRob2QuCisKKy0gSXNzdWUgIzE3ODQ0OiBBZGQgbGlua3MgdG8gZW5jb2RlcnMgYW5kIGRlY29kZXJzIGZvciBieXRlcy10by1ieXRlcyBjb2RlY3MuCisKKy0gSXNzdWUgIzE0MDk3OiBpbXByb3ZlIHRoZSAiaW50cm9kdWN0aW9uIiBwYWdlIG9mIHRoZSB0dXRvcmlhbC4KKworLSBJc3N1ZSAjMTc5Nzc6IFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgY2FkZWZhdWx0IGFyZ3VtZW50J3MgZGVmYXVsdCB2YWx1ZQorICBpbiB1cmxsaWIucmVxdWVzdC51cmxvcGVuKCkgaXMgZml4ZWQgdG8gbWF0Y2ggdGhlIGNvZGUuCisKKy0gSXNzdWUgIzY2OTY6IGFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgUHJvZmlsZSBvYmplY3RzLCBhbmQgaW1wcm92ZQorICBwcm9maWxlL2NQcm9maWxlIGRvY3MuICBQYXRjaCBieSBUb20gUGluY2tuZXkuCisKKy0gSXNzdWUgIzE1OTQwOiBTcGVjaWZ5IGVmZmVjdCBvZiBsb2NhbGUgb24gdGltZSBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE3NTM4OiBEb2N1bWVudCBYTUwgdnVsbmVyYWJpbHRpZXMKKworLSBJc3N1ZSAjMTY2NDI6IHNjaGVkLnNjaGVkdWxlciB0aW1lZnVuYyBpbml0aWFsIGRlZmF1bHQgaXMgdGltZS5tb25vdG9uaWMuCisgIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0ZQorCistIElzc3VlICMxNzA0NzogcmVtb3ZlIGRvdWJsZWQgd29yZHMgaW4gZG9jcyBhbmQgZG9jc3RyaW5ncworICByZXBvcnRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBNYXR0aGV3IEJhcm5ldHQuCisKKy0gSXNzdWUgIzE1NDY1OiBEb2N1bWVudCB0aGUgdmVyc2lvbmluZyBtYWNyb3MgaW4gdGhlIEMgQVBJIGRvY3MgcmF0aGVyIHRoYW4KKyAgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9jcy4gUGF0Y2ggYnkgS3VzaGFsIERhcy4KKworLSBJc3N1ZSAjMTY0MDY6IENvbWJpbmUgdGhlIHBhZ2VzIGZvciB1cGxvYWRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRvIFB5UEkuCisKKy0gSXNzdWUgIzE2NDAzOiBEb2N1bWVudCBob3cgZGlzdHV0aWxzIHVzZXMgdGhlIG1haW50YWluZXIgZmllbGQgaW4KKyAgUEtHLUlORk8uIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCisKKy0gSXNzdWUgIzE2Njk1OiBEb2N1bWVudCBob3cgZ2xvYiBoYW5kbGVzIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGEKKyAgZG90LiBJbml0aWFsIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCisKKy0gSXNzdWUgIzg4OTA6IFN0b3AgYWR2ZXJ0aXNpbmcgYW4gaW5zZWN1cmUgcHJhY3RpY2UgYnkgcmVwbGFjaW5nIHVzZXMKKyAgb2YgdGhlIC90bXAgZGlyZWN0b3J5IHdpdGggYmV0dGVyIGFsdGVybmF0aXZlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKyAgUGF0Y2ggYnkgR2VvZmYgV2lsc29uLgorCistIElzc3VlICMxNzIwMzogYWRkIGxvbmcgb3B0aW9uIG5hbWVzIHRvIHVuaXR0ZXN0IGRpc2NvdmVyeSBkb2NzLgorCistIElzc3VlICMxMzA5NDogYWRkICJXaHkgZG8gbGFtYmRhcyBkZWZpbmVkIGluIGEgbG9vcCB3aXRoIGRpZmZlcmVudCB2YWx1ZXMKKyAgYWxsIHJldHVybiB0aGUgc2FtZSByZXN1bHQ/IiBwcm9ncmFtbWluZyBGQVEuCisKKy0gSXNzdWUgIzE0OTAxOiBVcGRhdGUgcG9ydGlvbnMgb2YgdGhlIFdpbmRvd3MgRkFRLgorICBQYXRjaCBieSBBc2hpc2ggTml0aW4gUGF0aWwuCisKKy0gSXNzdWUgIzE2MjY3OiBCZXR0ZXIgZG9jdW1lbnQgdGhlIDMuMysgYXBwcm9hY2ggdG8gY29tYmluaW5nCisgIEBhYnN0cmFjdG1ldGhvZCB3aXRoIEBzdGF0aWNtZXRob2QsIEBjbGFzc21ldGhvZCBhbmQgQHByb3BlcnR5CisKKy0gSXNzdWUgIzE1MjA5OiBDbGFyaWZ5IGV4Y2VwdGlvbiBjaGFpbmluZyBkZXNjcmlwdGlvbiBpbiBleGNlcHRpb25zIG1vZHVsZQorICBkb2N1bWVudGF0aW9uCisKKy0gSXNzdWUgIzE1OTkwOiBJbXByb3ZlIGFyZ3VtZW50L3BhcmFtZXRlciBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNjIwOTogTW92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN0ciBidWlsdC1pbiBmdW5jdGlvbiB0byBhIG5ldworICBzdHIgY2xhc3MgZW50cnkgaW4gdGhlICJUZXh0IFNlcXVlbmNlIFR5cGUiIHNlY3Rpb24uCisKKy0gSXNzdWUgIzEzNTM4OiBJbXByb3ZlIHN0cigpIGFuZCBvYmplY3QuX19zdHJfXygpIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE2NDg5OiBNYWtlIGl0IGNsZWFyZXIgdGhhdCBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBuZWVkcyBwYXJlbnQKKyAgcGFja2FnZXMgdG8gYmUgZXhwbGljaXRseSBpbXBvcnRlZC4KKworLSBJc3N1ZSAjMTY0MDA6IFVwZGF0ZSB0aGUgZGVzY3JpcHRpb24gb2Ygd2hpY2ggdmVyc2lvbnMgb2YgYSBnaXZlbiBwYWNrYWdlCisgIFB5UEkgZGlzcGxheXMuCisKKy0gSXNzdWUgIzE1Njc3OiBEb2N1bWVudCB0aGF0IHpsaWIgYW5kIGd6aXAgYWNjZXB0IGEgY29tcHJlc3Npb24gbGV2ZWwgb2YgMCB0bworICBtZWFuICdubyBjb21wcmVzc2lvbicuIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTYxOTc6IFVwZGF0ZSB3aW5yZWcgZG9jc3RyaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiB0byBtYXRjaCBjb2RlLgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzgwNDA6IGFkZGVkIGEgdmVyc2lvbiBzd2l0Y2hlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4gIFBhdGNoIGJ5CisgIFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMxNjI0MTogRG9jdW1lbnQgLVggZmF1bHRoYW5kbGVyIGNvbW1hbmQgbGluZSBvcHRpb24uCisgIFBhdGNoIGJ5IE1hcmVrIMWgdXBwYS4KKworLSBBZGRpdGlvbmFsIGNvbW1lbnRzIGFuZCBzb21lIHN0eWxlIGNoYW5nZXMgaW4gdGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBVUkwKKyAgcmV0cmlldmFsIGV4YW1wbGUKKworLSBJc3N1ZSAjMTYxMTU6IEltcHJvdmUgc3VicHJvY2Vzcy5Qb3BlbigpIGRvY3VtZW50YXRpb24gYXJvdW5kIGFyZ3MsIHNoZWxsLAorICBhbmQgZXhlY3V0YWJsZSBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCisgIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCisKKy0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3IgYHN1YnByb2Nlc3MuUG9wZW4oKWAncyBjd2QKKyAgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE1OTc5OiBJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNjAzNjogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0LWluIGBpbnQoKWAncyBzaWduYXR1cmUgYW5kCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTU5MzU6IENsYXJpZmljYXRpb24gb2YgYGFyZ3BhcnNlYCBkb2NzLCByZTogYWRkX2FyZ3VtZW50KCkgdHlwZSBhbmQKKyAgZGVmYXVsdCBhcmd1bWVudHMuICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTE5NjQ6IERvY3VtZW50IGEgY2hhbmdlIGluIHYzLjIgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBpbmRlbnQKKyAgcGFyYW1ldGVyIG9mIGpzb24gZW5jb2Rpbmcgb3BlcmF0aW9ucy4KKworLSBJc3N1ZSAjMTUxMTY6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGFwcHNjcmlwdCBhcyBpdCBpcyBubyBsb25nZXIgYmVpbmcKKyAgc3VwcG9ydGVkLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTg4MTc6IEZpeCBhIHJlc291cmNlIHdhcm5pbmcgaW4gTGliL2FpZmMucHkgZGVtby4gIFBhdGNoIGJ5CisgIFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMTg0Mzk6IE1ha2UgcGF0Y2hjaGVjayB3b3JrIG9uIFdpbmRvd3MgZm9yIEFDS1MsIE5FV1MuCisKKy0gSXNzdWUgIzE4NDQ4OiBGaXggYSB0eXBvIGluIFRvb2xzL2RlbW8vZWlmZmVsLnB5LgorCistIElzc3VlICMxODQ1NzogRml4ZWQgc2F2aW5nIG9mIGZvcm11bGFzIGFuZCBjb21wbGV4IG51bWJlcnMgaW4KKyAgVG9vbHMvZGVtby9zczEucHkuCisKKy0gSXNzdWUgIzE4NDQ5OiBNYWtlIFRvb2xzL2RlbW8vc3MxLnB5IHdvcmsgYWdhaW4gb24gUHl0aG9uIDMuICBQYXRjaCBieQorICBGw6l2cnkgVGhpYmF1bHQuCisKKy0gSXNzdWUgIzEyOTkwOiBUaGUgIlB5dGhvbiBMYXVuY2hlciIgb24gT1NYIGNvdWxkIG5vdCBsYXVuY2ggcHl0aG9uIHNjcmlwdHMKKyAgdGhhdCBoYXZlIHBhdGhzIHRoYXQgaW5jbHVkZSB3aWRlIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzE1MjM5OiBNYWtlIG1rc3RyaW5ncHJlcC5weSB3b3JrIGFnYWluIG9uIFB5dGhvbiAzLgorCistIElzc3VlICMxNzAyODogQWxsb3dlZCBQeXRob24gYXJndW1lbnRzIHRvIGJlIHN1cHBsaWVkIHRvIHRoZSBXaW5kb3dzCisgIGxhdW5jaGVyLgorCistIElzc3VlICMxNzE1NjogcHlnZXR0ZXh0LnB5IG5vdyBkZXRlY3RzIHRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMgYW5kCisgIGNvcnJlY3RseSB3cml0ZXMgYW5kIGVzY2FwZXMgbm9uLWFzY2lpIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzE1NTM5OiBGaXggYSBudW1iZXIgb2YgYnVncyBpbiBUb29scy9zY3JpcHRzL3BpbmRlbnQucHkuICBOb3cKKyAgcGluZGVudC5weSB3b3JrcyB3aXRoIGEgIndpdGgiIHN0YXRlbWVudC4gIHBpbmRlbnQucHkgbm8gbG9uZ2VyIHByb2R1Y2VzCisgIGltcHJvcGVyIGluZGVudGF0aW9uLiAgcGluZGVudC5weSBub3cgd29ya3Mgd2l0aCBjb250aW51ZWQgbGluZXMgYnJva2VuIGFmdGVyCisgICJjbGFzcyIgb3IgImRlZiIga2V5d29yZHMgYW5kIHdpdGggY29udGludWF0aW9ucyBhdCB0aGUgc3RhcnQgb2YgbGluZS4KKworLSBJc3N1ZSAjMTE3OTc6IEFkZCBhIDJ0bzMgZml4ZXIgdGhhdCBtYXBzIHJlbG9hZCgpIHRvIGltcC5yZWxvYWQoKS4KKworLSBJc3N1ZSAjMTA5NjY6IFJlbW92ZSB0aGUgY29uY2VwdCBvZiB1bmV4cGVjdGVkIHNraXBwZWQgdGVzdHMuCisKKy0gSXNzdWUgIzk4OTM6IFJlbW92ZWQgdGhlIE1pc2MvVmltIGRpcmVjdG9yeS4KKworLSBSZW1vdmVkIHRoZSBNaXNjL1RleHRNYXRlIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTYyNDU6IEFkZCB0aGUgVG9vbHMvc2NyaXB0cy9wYXJzZV9odG1sNV9lbnRpdGllcy5weSBzY3JpcHQgdG8gcGFyc2UKKyAgdGhlIGxpc3Qgb2YgSFRNTDUgZW50aXRpZXMgYW5kIHVwZGF0ZSB0aGUgaHRtbC5lbnRpdGllcy5odG1sNSBkaWN0aW9uYXJ5LgorCistIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE2NTQ5OiBNYWtlIGpzb24udG9vbCB3b3JrIGFnYWluIG9uIFB5dGhvbiAzIGFuZCBhZGQgdGVzdHMuCisgIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZyBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTMzMDE6IHVzZSBhc3QubGl0ZXJhbF9ldmFsKCkgaW5zdGVhZCBvZiBldmFsKCkgaW4gVG9vbHMvaTE4bi9tc2dmbXQucHkuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTg1Njk6IFRoZSBpbnN0YWxsZXIgbm93IGFkZHMgLnB5IHRvIHRoZSBQQVRIRVhUIHZhcmlhYmxlIHdoZW4gZXh0ZW5zaW9ucworICBhcmUgcmVnaXN0ZXJlZC4gUGF0Y2ggYnkgUGF1bCBNb29yZS4KKworCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggZGY5ZDBkZC4uODEzMWJmYyAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxNCArMiw0NSBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMSByZWxlYXNlIGNhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiAyMDE3LTAxLTE2CisqUmVsZWFzZSBkYXRlOiBYWFhYLVhYLVhYKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjkwMzQ6IEZpeCBtZW1vcnkgbGVhayBhbmQgdXNlLWFmdGVyLWZyZWUgaW4gb3MgbW9kdWxlIChwYXRoX2NvbnZlcnRlcikuCisKKy0gSXNzdWUgIzI5MTU5OiBGaXggcmVncmVzc2lvbiBpbiBieXRlcyh4KSB3aGVuIHguX19pbmRleF9fKCkgcmFpc2VzIEV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMjg5MzI6IERvIG5vdCBpbmNsdWRlIDxzeXMvcmFuZG9tLmg+IGlmIGl0IGRvZXMgbm90IGV4aXN0LgorCistIElzc3VlICMyNTY3NzogQ29ycmVjdCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIHN5bnRheCBlcnJvciBjYXJldCBmb3IKKyAgaW5kZW50ZWQgYmxvY2tzLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWljaGFlbCBMYXl6ZWxsLgorCistIElzc3VlICMyOTAwMDogRml4ZWQgYnl0ZXMgZm9ybWF0dGluZyBvZiBvY3RhbHMgd2l0aCB6ZXJvIHBhZGRpbmcgaW4gYWx0ZXJuYXRlCisgIGZvcm0uCisKKy0gSXNzdWUgIzI2OTE5OiBPbiBBbmRyb2lkLCBvcGVyYXRpbmcgc3lzdGVtIGRhdGEgaXMgbm93IGFsd2F5cyBlbmNvZGVkL2RlY29kZWQKKyAgdG8vZnJvbSBVVEYtOCwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIHRvIGF2b2lkIGluY29uc2lzdGVuY2llcyB3aXRoCisgIG9zLmZzZW5jb2RlKCkgYW5kIG9zLmZzZGVjb2RlKCkgd2hpY2ggYXJlIGFscmVhZHkgdXNpbmcgVVRGLTguCisKKy0gSXNzdWUgIzI4OTkxOiAgZnVuY3Rvb2xzLmxydV9jYWNoZSgpIHdhcyBzdXNjZXB0aWJsZSB0byBhbiBvYnNjdXJlIHJlZW50cmFuY3kKKyAgYnVnIHRyaWdnZXJhYmxlIGJ5IGEgbW9ua2V5LXBhdGNoZWQgbGVuKCkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI4NzM5OiBmLXN0cmluZyBleHByZXNzaW9ucyBhcmUgbm8gbG9uZ2VyIGFjY2VwdGVkIGFzIGRvY3N0cmluZ3MgYW5kCisgIGJ5IGFzdC5saXRlcmFsX2V2YWwoKSBldmVuIGlmIHRoZXkgZG8gbm90IGluY2x1ZGUgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzI4NTEyOiBGaXhlZCBzZXR0aW5nIHRoZSBvZmZzZXQgYXR0cmlidXRlIG9mIFN5bnRheEVycm9yIGJ5CisgIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoKSBhbmQgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3QoKS4KKworLSBJc3N1ZSAjMjg5MTg6IEZpeCB0aGUgY3Jvc3MgY29tcGlsYXRpb24gb2YgeHhsaW1pdGVkIHdoZW4gUHl0aG9uIGhhcyBiZWVuCisgIGJ1aWx0IHdpdGggUHlfREVCVUcgZGVmaW5lZC4KKworLSBJc3N1ZSAjMjg3MzE6IE9wdGltaXplIF9QeURpY3RfTmV3UHJlc2l6ZWQoKSB0byBjcmVhdGUgY29ycmVjdCBzaXplIGRpY3QuCisgIEltcHJvdmUgc3BlZWQgb2YgZGljdCBsaXRlcmFsIHdpdGggY29uc3RhbnQga2V5cyB1cCB0byAzMCUuCisKIExpYnJhcnkKIC0tLS0tLS0KIApAQCAtMTcsMTQzICs0OCwxMiBAQAogICBsZWFkaW5nIGRvdHMgY291bGQgbWF0Y2ggcmVsYXRlZCBob3N0bmFtZXMgYWdhaW4gKGUuZy4gLmIuYyBtYXRjaGVzIGEuYi5jKS4KICAgUGF0Y2ggYnkgTWlsYW4gT2JlcmtpcmNoLgogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzI4OTYxOiBGaXggdW5pdHRlc3QubW9jay5fQ2FsbCBoZWxwZXI6IGRvbid0IGlnbm9yZSB0aGUgbmFtZSBwYXJhbWV0ZXIKKyAgYW55bW9yZS4gUGF0Y2ggd3JpdHRlbiBieSBKaWFqdW4gSHVhbmcuCiAKLVJlbGVhc2UgZGF0ZTogMjAxNy0wMS0wMgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjkwNzM6IGJ5dGVhcnJheSBmb3JtYXR0aW5nIG5vIGxvbmdlciB0cnVuY2F0ZXMgb24gZmlyc3QgbnVsbCBieXRlLgotCi0tIElzc3VlICMyODkzMjogRG8gbm90IGluY2x1ZGUgPHN5cy9yYW5kb20uaD4gaWYgaXQgZG9lcyBub3QgZXhpc3QuCi0KLS0gSXNzdWUgIzI4MTQ3OiBGaXggYSBtZW1vcnkgbGVhayBpbiBzcGxpdC10YWJsZSBkaWN0aW9uYXJpZXM6IHNldGF0dHIoKQotICBtdXN0IG5vdCBjb252ZXJ0IGNvbWJpbmVkIHRhYmxlIGludG8gc3BsaXQgdGFibGUuCi0KLS0gSXNzdWUgIzI1Njc3OiBDb3JyZWN0IHRoZSBwb3NpdGlvbmluZyBvZiB0aGUgc3ludGF4IGVycm9yIGNhcmV0IGZvcgotICBpbmRlbnRlZCBibG9ja3MuICBCYXNlZCBvbiBwYXRjaCBieSBNaWNoYWVsIExheXplbGwuCi0KLS0gSXNzdWUgIzI5MDAwOiBGaXhlZCBieXRlcyBmb3JtYXR0aW5nIG9mIG9jdGFscyB3aXRoIHplcm8gcGFkZGluZyBpbiBhbHRlcm5hdGUKLSAgZm9ybS4KLQotLSBJc3N1ZSAjMjg1MTI6IEZpeGVkIHNldHRpbmcgdGhlIG9mZnNldCBhdHRyaWJ1dGUgb2YgU3ludGF4RXJyb3IgYnkKLSAgUHlFcnJfU3ludGF4TG9jYXRpb25FeCgpIGFuZCBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdCgpLgotCi0tIElzc3VlICMyODk5MTogIGZ1bmN0b29scy5scnVfY2FjaGUoKSB3YXMgc3VzY2VwdGlibGUgdG8gYW4gb2JzY3VyZSByZWVudHJhbmN5Ci0gIGJ1ZyBjYXVzZWQgYnkgYSBtb25rZXktcGF0Y2hlZCBsZW4oKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjg2NDg6IEZpeGVkIGNyYXNoIGluIFB5X0RlY29kZUxvY2FsZSgpIGluIGRlYnVnIGJ1aWxkIG9uIE1hYyBPUyBYCi0gIHdoZW4gZGVjb2RlIGFzdHJhbCBjaGFyYWN0ZXJzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzE5Mzk4OiBFeHRyYSBzbGFzaCBubyBsb25nZXIgYWRkZWQgdG8gc3lzLnBhdGggY29tcG9uZW50cyBpbiBjYXNlIG9mCi0gIGVtcHR5IGNvbXBpbGUtdGltZSBQWVRIT05QQVRIIGNvbXBvbmVudHMuCi0KLS0gSXNzdWUgIzI4NDI2OiBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGluIGRlYnVnCi0gIGJ1aWxkLgotCi0tIElzc3VlICMyMzc4MjogRml4ZWQgcG9zc2libGUgbWVtb3J5IGxlYWsgaW4gX1B5VHJhY2ViYWNrX0FkZCgpIGFuZCBleGNlcHRpb24KLSAgbG9zcyBpbiBQeVRyYWNlQmFja19IZXJlKCkuCi0KLS0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCi0gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KLSAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCi0KLS0gSXNzdWUgIzI4Mzc2OiBUaGUgY29uc3RydWN0b3Igb2YgcmFuZ2VfaXRlcmF0b3Igbm93IGNoZWNrcyB0aGF0IHN0ZXAgaXMgbm90IDAuCi0gIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgotCi0tIElzc3VlICMyNjkwNjogUmVzb2x2aW5nIHNwZWNpYWwgbWV0aG9kcyBvZiB1bmluaXRpYWxpemVkIHR5cGUgbm93IGNhdXNlcwotICBpbXBsaWNpdCBpbml0aWFsaXphdGlvbiBvZiB0aGUgdHlwZSBpbnN0ZWFkIG9mIGEgZmFpbC4KLQotLSBJc3N1ZSAjMTgyODc6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCB0cF9uYW1lIGlzIG5vdCBOVUxMLgotICBPcmlnaW5hbCBwYXRjaCBieSBOaWtsYXMgS29lcC4KLQotLSBJc3N1ZSAjMjQwOTg6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIHdoZW4gQVNUIGlzIGNoYW5nZWQgaW4gcHJvY2VzcyBvZgotICBjb21waWxpbmcgaXQuCi0KLS0gSXNzdWUgIzI4MzUwOiBTdHJpbmcgY29uc3RhbnRzIHdpdGggbnVsbCBjaGFyYWN0ZXIgbm8gbG9uZ2VyIGludGVybmVkLgotCi0tIElzc3VlICMyNjYxNzogRml4IGNyYXNoIHdoZW4gR0MgcnVucyBkdXJpbmcgd2Vha3JlZiBjYWxsYmFja3MuCi0KLS0gSXNzdWUgIzI3OTQyOiBTdHJpbmcgY29uc3RhbnRzIG5vdyBpbnRlcm5lZCByZWN1cnNpdmVseSBpbiB0dXBsZXMgYW5kIGZyb3plbnNldHMuCi0KLS0gSXNzdWUgIzIxNTc4OiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBJbXBvcnRFcnJvciBjYWxsZWQgd2l0aAotICBpbnZhbGlkIGtleXdvcmQgYXJncy4KLQotLSBJc3N1ZSAjMjgyMDM6IEZpeCBpbmNvcnJlY3QgdHlwZSBpbiBlcnJvciBtZXNzYWdlIGZyb20KLSAgYGBjb21wbGV4KDEuMCwgezI6M30pYGAuIFBhdGNoIGJ5IFNvdW15YSBTaGFybWEuCi0KLS0gSXNzdWUgIzI3OTU1OiBGYWxsYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSBkZXZpY2Ugd2hlbiB0aGUgZ2V0cmFuZG9tKCkKLSAgc3lzY2FsbCBmYWlscyB3aXRoIEVQRVJNLCBmb3IgZXhhbXBsZSB3aGVuIGJsb2NrZWQgYnkgU0VDQ09NUC4KLQotLSBJc3N1ZSAjMjgxMzE6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gemlwaW1wb3J0J3MgY29tcGlsZV9zb3VyY2UoKS4gIHppcGltcG9ydAotICBzaG91bGQgdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbiBsZXZlbCBhcyB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzI1MjIxOiBGaXggY29ycnVwdGVkIHJlc3VsdCBmcm9tIFB5TG9uZ19Gcm9tTG9uZygwKSB3aGVuCi0gIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIE5TTUFMTFBPU0lOVFMgPSAwLgotCi0tIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCi0gIChwYXRjaCBieSBFcnlrIFN1bikKLQotLSBJc3N1ZSAjMjgxODk6IGRpY3RpdGVtc19jb250YWlucyBubyBsb25nZXIgc3dhbGxvd3MgY29tcGFyZSBlcnJvcnMuCi0gIChQYXRjaCBieSBYaWFuZyBaaGFuZykKLQotLSBJc3N1ZSAjMjc4MTI6IFByb3Blcmx5IGNsZWFyIG91dCBhIGdlbmVyYXRvcidzIGZyYW1lJ3MgYmFja3JlZmVyZW5jZSB0byB0aGUKLSAgZ2VuZXJhdG9yIHRvIHByZXZlbnQgY3Jhc2hlcyBpbiBmcmFtZS5jbGVhcigpLgotCi0tIElzc3VlICMyNzgxMTogRml4IGEgY3Jhc2ggd2hlbiBhIGNvcm91dGluZSB0aGF0IGhhcyBub3QgYmVlbiBhd2FpdGVkIGlzCi0gIGZpbmFsaXplZCB3aXRoIHdhcm5pbmdzLWFzLWVycm9ycyBlbmFibGVkLgotCi0tIElzc3VlICMyNzU4NzogRml4IGFub3RoZXIgaXNzdWUgZm91bmQgYnkgUFZTLVN0dWRpbzogTnVsbCBwb2ludGVyIGNoZWNrCi0gIGFmdGVyIHVzZSBvZiAnZGVmJyBpbiBfUHlTdGF0ZV9BZGRNb2R1bGUoKS4KLSAgSW5pdGlhbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgotCi0tIElzc3VlICMyNjAyMDogc2V0IGxpdGVyYWwgZXZhbHVhdGlvbiBvcmRlciBkaWQgbm90IG1hdGNoIGRvY3VtZW50ZWQgYmVoYXZpb3VyLgotCi0tIElzc3VlICMyNzc4MjogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbXBvcnQgbm93IGNvcnJlY3RseSBhbGxvd3MgdGhlCi0gIGBgbV9tZXRob2RzYGAgZmllbGQgdG8gYmUgdXNlZCB0byBhZGQgbW9kdWxlIGxldmVsIGZ1bmN0aW9ucyB0byBpbnN0YW5jZXMKLSAgb2Ygbm9uLW1vZHVsZSB0eXBlcyByZXR1cm5lZCBmcm9tIGBgUHlfY3JlYXRlX21vZGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc5MzY6IFRoZSByb3VuZCgpIGZ1bmN0aW9uIGFjY2VwdGVkIGEgc2Vjb25kIE5vbmUgYXJndW1lbnQKLSAgZm9yIHNvbWUgdHlwZXMgYnV0IG5vdCBmb3Igb3RoZXJzLiAgRml4ZWQgdGhlIGluY29uc2lzdGVuY3kgYnkKLSAgYWNjZXB0aW5nIE5vbmUgZm9yIGFsbCBudW1lcmljIHR5cGVzLgotCi0tIElzc3VlICMyNzQ4NzogV2FybiBpZiBhIHN1Ym1vZHVsZSBhcmd1bWVudCB0byAicHl0aG9uIC1tIiBvcgotICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQotICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgotCi0tIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgotICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQotICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscwotICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGhhbmRsaW5nIGFuCi0gIGVycm9yIG9mIG5vbi1zdHJpbmcgcGFja2FnZSBuYW1lLgotCi0tIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgotICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgotCi0tIElzc3VlICMyNzQ3MzogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBieXRlcyBhbmQgYnl0ZWFycmF5Ci0gIGNvbmNhdGVuYXRpb25zLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQotICBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCi0gIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzQ0MzogX19sZW5ndGhfaGludF9fKCkgb2YgYnl0ZWFycmF5IGl0ZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEKLSAgbmVnYXRpdmUgaW50ZWdlciBmb3IgYSByZXNpemVkIGJ5dGVhcnJheS4KLQotLSBJc3N1ZSAjMjc5NDI6IEZpeCBtZW1vcnkgbGVhayBpbiBjb2Rlb2JqZWN0LmMKLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMjkyMDM6ICBmdW5jdG9vbHMubHJ1X2NhY2hlKCkgbm93IHJlc3BlY3RzIFBFUCA0NjggYW5kIHByZXNlcnZlcworICB0aGUgb3JkZXIgb2Yga2V5d29yZCBhcmd1bWVudHMuICBmKGE9MSwgYj0yKSBpcyBub3cgY2FjaGVkIHNlcGFyYXRlbHkKKyAgZnJvbSBmKGI9MiwgYT0xKSBzaW5jZSBib3RoIGNhbGxzIGNvdWxkIHBvdGVudGlhbGx5IGdpdmUgZGlmZmVyZW50IHJlc3VsdHMuCiAKIC0gSXNzdWUgIzE1ODEyOiBpbnNwZWN0LmdldGZyYW1laW5mbygpIG5vdyBjb3JyZWN0bHkgc2hvd3MgdGhlIGZpcnN0IGxpbmUgb2YKICAgYSBjb250ZXh0LiAgUGF0Y2ggYnkgU2FtIEJyZWVzZS4KQEAgLTE2MSw2ICs2MSwxNCBAQAogLSBJc3N1ZSAjMjkwOTQ6IE9mZnNldHMgaW4gYSBaSVAgZmlsZSBjcmVhdGVkIHdpdGggZXh0ZXJuIGZpbGUgb2JqZWN0IGFuZCBtb2RlcwogICAidyIgYW5kICJ4IiBub3cgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4KIAorLSBJc3N1ZSAjMjkwODU6IEFsbG93IHJhbmRvbS5SYW5kb20uc2VlZCgpIHRvIHVzZSBoaWdoIHF1YWxpdHkgT1MgcmFuZG9tbmVzcworICByYXRoZXIgdGhhbiB0aGUgcGlkIGFuZCB0aW1lLgorCistIElzc3VlICMyOTA2MTogRml4ZWQgYnVnIGluIHNlY3JldHMucmFuZGJlbG93KCkgd2hpY2ggd291bGQgaGFuZyB3aGVuIGdpdmVuCisgIGEgbmVnYXRpdmUgaW5wdXQuICBQYXRjaCBieSBCcmVuZGFuIERvbmVnYW4uCisKKy0gSXNzdWUgIzI5MDc5OiBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gcGF0aGxpYi5yZXNvbHZlKCkgb24gV2luZG93cworCiAtIElzc3VlICMxMzA1MTogRml4ZWQgcmVjdXJzaW9uIGVycm9ycyBpbiBsYXJnZSBvciByZXNpemVkCiAgIGN1cnNlcy50ZXh0cGFkLlRleHRib3guICBCYXNlZCBvbiBwYXRjaCBieSBUeWNobyBBbmRlcnNlbi4KIApAQCAtMTc2LDYgKzg0LDkgQEAKIAogLSBJc3N1ZSAyODkyMzogUmVtb3ZlIGVkaXRvciBhcnRpZmFjdHMgZnJvbSBUaXgucHkuCiAKKy0gSXNzdWUgIzI5MDU1OiAgTmVhdGVuLXVwIGVtcHR5IHBvcHVsYXRpb24gZXJyb3Igb24gcmFuZG9tLmNob2ljZSgpCisgIGJ5IHN1cHByZXNzaW5nIHRoZSB1cHN0cmVhbSBleGNlcHRpb24uCisKIC0gSXNzdWUgIzI4ODcxOiBGaXhlZCBhIGNyYXNoIHdoZW4gZGVhbGxvY2F0ZSBkZWVwIEVsZW1lbnRUcmVlLgogCiAtIElzc3VlICMxOTU0MjogRml4IGJ1Z3MgaW4gV2Vha1ZhbHVlRGljdGlvbmFyeS5zZXRkZWZhdWx0KCkgYW5kCkBAIC0xOTIsMTkgKzEwMywzMTEgQEAKIC0gSXNzdWUgIzI4ODQ3OiBkYm0uZHVtYiBub3cgc3VwcG9ydHMgcmVhZGluZyByZWFkLW9ubHkgZmlsZXMgYW5kIG5vIGxvbmdlcgogICB3cml0ZXMgdGhlIGluZGV4IGZpbGUgd2hlbiBpdCBpcyBub3QgY2hhbmdlZC4KIAorLSBJc3N1ZSAjMjY5Mzc6IFRoZSBjaG93bigpIG1ldGhvZCBvZiB0aGUgdGFyZmlsZS5UYXJGaWxlIGNsYXNzIGRvZXMgbm90IGZhaWwKKyAgbm93IHdoZW4gdGhlIGdycCBtb2R1bGUgY2Fubm90IGJlIGltcG9ydGVkLCBhcyBmb3IgZXhhbXBsZSBvbiBBbmRyb2lkCisgIHBsYXRmb3Jtcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNTc3ODogd2lucmVnIGRvZXMgbm90IHRydW5jYXRlIHN0cmluZyBjb3JyZWN0bHkgKFBhdGNoIGJ5IEVyeWsgU3VuKQorCistIElzc3VlICMyODg5NjogRGVwcmVjYXRlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBhbmQgZGlzYWJsZSBpdCBieSBkZWZhdWx0LgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjkwNTg6IEFsbCBzdGFibGUgQVBJIGV4dGVuc2lvbnMgYWRkZWQgYWZ0ZXIgUHl0aG9uIDMuMiBhcmUgbm93CisgIGF2YWlsYWJsZSBvbmx5IHdoZW4gUHlfTElNSVRFRF9BUEkgaXMgc2V0IHRvIHRoZSBQWV9WRVJTSU9OX0hFWCB2YWx1ZSBvZgorICB0aGUgbWluaW11bSBQeXRob24gdmVyc2lvbiBzdXBwb3J0aW5nIHRoaXMgQVBJLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjg5NTA6IERpc2FsbG93IC1qMCB0byBiZSBjb21iaW5lZCB3aXRoIC1ULy1sIGluIHJlZ3J0ZXN0CisgIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzI4NjgzOiBGaXggdGhlIHRlc3RzIHRoYXQgYmluZCgpIGEgdW5peCBzb2NrZXQgYW5kIHJhaXNlCisgIFBlcm1pc3Npb25FcnJvciBvbiBBbmRyb2lkIGZvciBhIG5vbi1yb290IHVzZXIuCisKKy0gSXNzdWUgIzI2OTM5OiBBZGQgdGhlIHN1cHBvcnQuc2V0c3dpdGNoaW50ZXJ2YWwoKSBmdW5jdGlvbiB0byBmaXgKKyAgdGVzdF9mdW5jdG9vbHMgaGFuZ2luZyBvbiB0aGUgQW5kcm9pZCBhcm12NyBxZW11IGVtdWxhdG9yLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjY4NTE6IFNldCBBbmRyb2lkIGNvbXBpbGF0aW9uIGFuZCBsaW5rIGZsYWdzLgorCistIElzc3VlICMyODc2ODogRml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIF9zZXRtb2RlLiBQYXRjaCBieQorICBNYXNheXVraSBZYW1hbW90bworCistIElzc3VlICMyOTA4MDogUmVtb3ZlcyBoYXJkIGRlcGVuZGVuY3kgb24gaGcuZXhlIGZyb20gUENCdWlsZC9idWlsZC5iYXQKKworLSBJc3N1ZSAjMjM5MDM6IEFkZGVkIG1pc3NlZCBuYW1lcyB0byBQQy9weXRob24zLmRlZi4KKworLSBJc3N1ZSAjMjg3NjI6IGxvY2tmKCkgaXMgYXZhaWxhYmxlIG9uIEFuZHJvaWQgQVBJIGxldmVsIDI0LCBidXQgdGhlIEZfTE9DSworICBtYWNybyBpcyBub3QgZGVmaW5lZCBpbiBhbmRyb2lkLW5kay1yMTMuCisKKy0gSXNzdWUgIzI4NTM4OiBGaXggdGhlIGNvbXBpbGF0aW9uIGVycm9yIHRoYXQgb2NjdXJzIGJlY2F1c2UgaWZfbmFtZWluZGV4KCkgaXMKKyAgYXZhaWxhYmxlIG9uIEFuZHJvaWQgQVBJIGxldmVsIDI0LCBidXQgdGhlIGlmX25hbWVpbmRleCBzdHJ1Y3R1cmUgaXMgbm90CisgIGRlZmluZWQuCisKKy0gSXNzdWUgIzIwMjExOiBEbyBub3QgYWRkIHRoZSBkaXJlY3RvcnkgZm9yIGluc3RhbGxpbmcgQyBoZWFkZXIgZmlsZXMgYW5kIHRoZQorICBkaXJlY3RvcnkgZm9yIGluc3RhbGxpbmcgb2JqZWN0IGNvZGUgbGlicmFyaWVzIHRvIHRoZSBjcm9zcyBjb21waWxhdGlvbgorICBzZWFyY2ggcGF0aHMuIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBQZXRhenpvbmkuCisKKy0gSXNzdWUgIzI4ODQ5OiBEbyBub3QgZGVmaW5lIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoIG9uIEFuZHJvaWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0xMi0yMyoKKworLSBObyBjaGFuZ2VzIHNpbmNlIHJlbGVhc2UgY2FuZGlkYXRlIDIKKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCByZWxlYXNlIGNhbmRpZGF0ZSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0xMi0xNioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI4MTQ3OiBGaXggYSBtZW1vcnkgbGVhayBpbiBzcGxpdC10YWJsZSBkaWN0aW9uYXJpZXM6IHNldGF0dHIoKQorICBtdXN0IG5vdCBjb252ZXJ0IGNvbWJpbmVkIHRhYmxlIGludG8gc3BsaXQgdGFibGUuIFBhdGNoIHdyaXR0ZW4gYnkgSU5BREEKKyAgTmFva2kuCisKKy0gSXNzdWUgIzI4OTkwOiBGaXggYXN5bmNpbyBTU0wgaGFuZ2luZyBpZiBjb25uZWN0aW9uIGlzIGNsb3NlZCBiZWZvcmUKKyAgaGFuZHNoYWtlIGlzIGNvbXBsZXRlZC4gKFBhdGNoIGJ5IEhvSG8tSG8pCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyODc3MDogRml4IHB5dGhvbi1nZGIucHkgZm9yIGZhc3RjYWxscy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODg5NjogRGVwcmVjYXRlIFdpbmRvd3NSZWdpc3RyeUZpbmRlci4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4ODk4OiBQcmV2ZW50IGdkYiBidWlsZCBlcnJvcnMgZHVlIHRvIEhBVkVfTE9OR19MT05HIHJlZGVmaW5pdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCByZWxlYXNlIGNhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0xMi0wNioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzNzIyOiBSYXRoZXIgdGhhbiBzaWxlbnRseSBwcm9kdWNpbmcgYSBjbGFzcyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydAorICB6ZXJvLWFyZ3VtZW50IGBgc3VwZXIoKWBgIGluIG1ldGhvZHMsIGZhaWxpbmcgdG8gcGFzcyB0aGUgbmV3CisgIGBgX19jbGFzc2NlbGxfX2BgIG5hbWVzcGFjZSBlbnRyeSB1cCB0byBgYHR5cGUuX19uZXdfX2BgIG5vdyByZXN1bHRzIGluIGEKKyAgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQgYSBjbGFzcyB0aGF0IHN1cHBvcnRzIHplcm8tYXJndW1lbnQgYGBzdXBlcigpYGAuCisKKy0gSXNzdWUgIzI4Nzk3OiBNb2RpZnlpbmcgdGhlIGNsYXNzIF9fZGljdF9fIGluc2lkZSB0aGUgX19zZXRfbmFtZV9fIG1ldGhvZCBvZgorICBhIGRlc2NyaXB0b3IgdGhhdCBpcyB1c2VkIGluc2lkZSB0aGF0IGNsYXNzIG5vIGxvbmdlciBwcmV2ZW50cyBjYWxsaW5nIHRoZQorICBfX3NldF9uYW1lX18gbWV0aG9kIG9mIG90aGVyIGRlc2NyaXB0b3JzLgorCistIElzc3VlICMyODc4MjogRml4IGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBgYHlpZWxkIGZyb21gYCB3aGVuIGNoZWNraW5nCisgIGlmIHRoZSBuZXh0IGluc3RydWN0aW9uIGlzIFlJRUxEX0ZST00uIFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSBXT1JEQ09ERQorICAoaXNzdWUgIzI2NjQ3KS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNzAzMDogVW5rbm93biBlc2NhcGVzIGluIHJlLnN1YigpIHJlcGxhY2VtZW50IHRlbXBsYXRlIGFyZSBhbGxvd2VkCisgIGFnYWluLiAgQnV0IHRoZXkgc3RpbGwgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgZGlzYWJsZWQgaW4gMy43LgorCistIElzc3VlICMyODgzNTogRml4IGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgIGNhbGwgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBpZiBpdCB3YXMgb3ZlcnJpZGVuIGluc2lkZSB0aGUgY29udGV4dCBtYW5hZ2VyLgorCistIElzc3VlICMyNzE3MjogVG8gYXNzaXN0IHdpdGggdXBncmFkZXMgZnJvbSAyLjcsIHRoZSBwcmV2aW91c2x5IGRvY3VtZW50ZWQKKyAgZGVwcmVjYXRpb24gb2YgYGBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKClgYCBoYXMgYmVlbiByZXZlcnNlZC4gVGhpcyBkZWNpc2lvbgorICBtYXkgYmUgcmV2aXNpdGVkIGFnYWluIGFmdGVyIHRoZSBQeXRob24gMi43IGJyYW5jaCBpcyBubyBsb25nZXIgb2ZmaWNpYWxseQorICBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzI0MTQyOiBSZWFkaW5nIGEgY29ycnVwdCBjb25maWcgZmlsZSBsZWZ0IGNvbmZpZ3BhcnNlciBpbiBhbgorICBpbnZhbGlkIHN0YXRlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRmxvcmlhbiBIw7ZjaC4KKworLSBJc3N1ZSAjMjg4NDM6IEZpeCBhc3luY2lvIEMgVGFzayB0byBoYW5kbGUgZXhjZXB0aW9ucyBfX3RyYWNlYmFja19fLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjg4MDg6IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKCkgbm93IG5ldmVyIHJhaXNlcyBleGNlcHRpb25zLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzNzIyOiBUaGUgZGF0YSBtb2RlbCByZWZlcmVuY2UgYW5kIHRoZSBwb3J0aW5nIHNlY3Rpb24gaW4gdGhlIFdoYXQncworICBOZXcgZ3VpZGUgbm93IGNvdmVyIHRoZSBhZGRpdGlvbmFsIGBgX19jbGFzc2NlbGxfX2BgIGhhbmRsaW5nIG5lZWRlZCBmb3IKKyAgY3VzdG9tIG1ldGFjbGFzc2VzIHRvIGZ1bGx5IHN1cHBvcnQgUEVQIDQ4NyBhbmQgemVyby1hcmd1bWVudCBgYHN1cGVyKClgYC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI4MDIzOiBGaXggcHl0aG9uLWdkYi5weSBkaWRuJ3Qgc3VwcG9ydCBuZXcgZGljdCBpbXBsZW1lbnRhdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMTEtMjEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODUzMjogU2hvdyBzeXMudmVyc2lvbiB3aGVuIC1WIG9wdGlvbiBpcyBzdXBwbGllZCB0d2ljZS4KKworLSBJc3N1ZSAjMjcxMDA6IFRoZSB3aXRoLXN0YXRlbWVudCBub3cgY2hlY2tzIGZvciBfX2VudGVyX18gYmVmb3JlIGl0CisgIGNoZWNrcyBmb3IgX19leGl0X18uICBUaGlzIGdpdmVzIGxlc3MgY29uZnVzaW5nIGVycm9yIG1lc3NhZ2VzIHdoZW4KKyAgYm90aCBtZXRob2RzIGFyZSBtaXNzaW5nLiBQYXRjaCBieSBKb25hdGhhbiBFbGxpbmd0b24uCisKKy0gSXNzdWUgIzI4NzQ2OiBGaXggdGhlIHNldF9pbmhlcml0YWJsZSgpIGZpbGUgZGVzY3JpcHRvciBtZXRob2Qgb24gcGxhdGZvcm1zCisgIHRoYXQgZG8gbm90IGhhdmUgdGhlIGlvY3RsIEZJT0NMRVggYW5kIEZJT05DTEVYIGNvbW1hbmRzLgorCistIElzc3VlICMyNjkyMDogRml4IG5vdCBnZXR0aW5nIHRoZSBsb2NhbGUncyBjaGFyc2V0IHVwb24gaW5pdGlhbGl6aW5nIHRoZQorICBpbnRlcnByZXRlciwgb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IGhhdmUgbGFuZ2luZm8uCisKKy0gSXNzdWUgIzI4NjQ4OiBGaXhlZCBjcmFzaCBpbiBQeV9EZWNvZGVMb2NhbGUoKSBpbiBkZWJ1ZyBidWlsZCBvbiBNYWMgT1MgWAorICB3aGVuIGRlY29kZSBhc3RyYWwgY2hhcmFjdGVycy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxOTM5ODogRXh0cmEgc2xhc2ggbm8gbG9uZ2VyIGFkZGVkIHRvIHN5cy5wYXRoIGNvbXBvbmVudHMgaW4gY2FzZSBvZgorICBlbXB0eSBjb21waWxlLXRpbWUgUFlUSE9OUEFUSCBjb21wb25lbnRzLgorCistIElzc3VlICMyODY2NTogIEltcHJvdmUgc3BlZWQgb2YgdGhlIFNUT1JFX0RFUkVGIG9wY29kZSBieSA0MCUuCisKKy0gSXNzdWUgIzI4NTgzOiBQeURpY3RfU2V0RGVmYXVsdCBkaWRuJ3QgY29tYmluZSBzcGxpdCB0YWJsZSB3aGVuIG5lZWRlZC4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3MjQzOiBDaGFuZ2UgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyAtPiBEZXByZWNhdGlvbldhcm5pbmcuCisgIEFzIGl0IHdhcyBhZ3JlZWQgaW4gdGhlIGlzc3VlLCBfX2FpdGVyX18gcmV0dXJuaW5nIGFuIGF3YWl0YWJsZQorICBzaG91bGQgcmVzdWx0IGluIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaW4gMy41IGFuZCBpbgorICBEZXByZWNhdGlvbldhcm5pbmcgaW4gMy42LgorCistIElzc3VlICMyNjE4MjogRml4IGEgcmVmbGVhayBpbiBjb2RlIHRoYXQgcmFpc2VzIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjg3MjE6IEZpeCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyBhY2xvc2UoKSBhbmQgYXRocm93KCkgdG8KKyAgaGFuZGxlIFN0b3BBc3luY0l0ZXJhdGlvbiBwcm9wYWdhdGlvbiBwcm9wZXJseS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNjI3MzogQWRkIG5ldyA6ZGF0YTpgc29ja2V0LlRDUF9DT05HRVNUSU9OYCAoTGludXggMi42LjEzKSBhbmQKKyAgOmRhdGE6YHNvY2tldC5UQ1BfVVNFUl9USU1FT1VUYCAoTGludXggMi42LjM3KSBjb25zdGFudHMuIFBhdGNoIHdyaXR0ZW4gYnkKKyAgT21hciBTYW5kb3ZhbC4KKworLSBJc3N1ZSAjMjg3NTI6IFJlc3RvcmVkIHRoZSBfX3JlZHVjZV9fKCkgbWV0aG9kcyBvZiBkYXRldGltZSBvYmplY3RzLgorCistIElzc3VlICMyODcyNzogUmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5zLCBfc3JlLlNSRV9QYXR0ZXJuIG9iamVjdHMgY3JlYXRlZAorICBieSByZS5jb21waWxlKCksIGJlY29tZSBjb21wYXJhYmxlIChvbmx5IHg9PXkgYW5kIHghPXkgb3BlcmF0b3JzKS4gVGhpcworICBjaGFuZ2Ugc2hvdWxkIGZpeCB0aGUgaXNzdWUgIzE4MzgzOiBkb24ndCBkdXBsaWNhdGUgd2FybmluZyBmaWx0ZXJzIHdoZW4gdGhlCisgIHdhcm5pbmdzIG1vZHVsZSBpcyByZWxvYWRlZCAodGhpbmcgdXN1YWxseSBvbmx5IGRvbmUgaW4gdW5pdCB0ZXN0cykuCisKKy0gSXNzdWUgIzIwNTcyOiBUaGUgc3VicHJvY2Vzcy5Qb3Blbi53YWl0IG1ldGhvZCdzIHVuZG9jdW1lbnRlZAorICBlbmR0aW1lIHBhcmFtZXRlciBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgorCiAtIElzc3VlICMyNTY1OTogSW4gY3R5cGVzLCBwcmV2ZW50IGEgY3Jhc2ggY2FsbGluZyB0aGUgZnJvbV9idWZmZXIoKSBhbmQKICAgZnJvbV9idWZmZXJfY29weSgpIG1ldGhvZHMgb24gYWJzdHJhY3QgY2xhc3NlcyBsaWtlIEFycmF5LgogCi0tIElzc3VlICMyODczMjogRml4IGNyYXNoIGluIG9zLnNwYXdudigpIHdpdGggbm8gZWxlbWVudHMgaW4gYXJncworLSBJc3N1ZSAjMTk3MTc6IE1ha2VzIFBhdGgucmVzb2x2ZSgpIHN1Y2NlZWQgb24gcGF0aHMgdGhhdCBkbyBub3QgZXhpc3QuCisgIFBhdGNoIGJ5IFZhanJhc2t5IEtvawogCi0tIElzc3VlICMyODQ4NTogQWx3YXlzIHJhaXNlIFZhbHVlRXJyb3IgZm9yIG5lZ2F0aXZlCi0gIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIod29ya2Vycz0uLi4pIHBhcmFtZXRlciwgZXZlbiB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCi0gIHVuYXZhaWxhYmxlLgorLSBJc3N1ZSAjMjg1NjM6IEZpeGVkIHBvc3NpYmxlIERvUyBhbmQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHdoZW4gaGFuZGxlCisgIHBsdXJhbCBmb3JtIHNlbGVjdGlvbnMgaW4gdGhlIGdldHRleHQgbW9kdWxlLiAgVGhlIGV4cHJlc3Npb24gcGFyc2VyIG5vdworICBzdXBwb3J0cyBleGFjdCBzeW50YXggc3VwcG9ydGVkIGJ5IEdOVSBnZXR0ZXh0LgogCiAtIElzc3VlICMyODM4NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gX2lvLlRleHRJT1dyYXBwZXIgZGVhbGxvY2F0b3Igd2hlbgogICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgaW52b2tlZCBpbiBvdGhlciB0aHJlYWQuICBCYXNlZCBvbiBwYXRjaCBieQogICBTZWJhc3RpYW4gQ3VmcmUuCiAKKy0gSXNzdWUgIzI4NjAwOiBPcHRpbWl6ZSBsb29wLmNhbGxfc29vbi4KKworLSBJc3N1ZSAjMjg2MTM6IEZpeCBnZXRfZXZlbnRfbG9vcCgpIHJldHVybiB0aGUgY3VycmVudCBsb29wIGlmCisgIGNhbGxlZCBmcm9tIGNvcm91dGluZXMvY2FsbGJhY2tzLgorCistIElzc3VlICMyODYzNDogRml4IGFzeW5jaW8uaXNmdXR1cmUoKSB0byBzdXBwb3J0IHVuaXR0ZXN0Lk1vY2suCisKKy0gSXNzdWUgIzI2MDgxOiBGaXggcmVmbGVhayBpbiBfYXN5bmNpby5GdXR1cmUuX19pdGVyX18oKS50aHJvdy4KKworLSBJc3N1ZSAjMjg2Mzk6IEZpeCBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGFsd2F5cyByZXR1cm4gYm9vbAorICBQYXRjaCBieSBKdXN0aW4gTWF5ZmllbGQuCisKKy0gSXNzdWUgIzI4NjUyOiBNYWtlIGxvb3AgbWV0aG9kcyByZWplY3Qgc29ja2V0IGtpbmRzIHRoZXkgZG8gbm90IHN1cHBvcnQuCisKKy0gSXNzdWUgIzI4NjUzOiBGaXggYSByZWZsZWFrIGluIGZ1bmN0b29scy5scnVfY2FjaGUuCisKKy0gSXNzdWUgIzI4NzAzOiBGaXggYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uIHRvIGhhbmRsZSBNb2NrIG9iamVjdHMuCisKKy0gSXNzdWUgIzI4NzA0OiBGaXggY3JlYXRlX3VuaXhfc2VydmVyIHRvIHN1cHBvcnQgUGF0aC1saWtlIG9iamVjdHMKKyAgKFBFUCA1MTkpLgorCistIElzc3VlICMyODcyMDogQWRkIGNvbGxlY3Rpb25zLmFiYy5Bc3luY0dlbmVyYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODUxMzogRG9jdW1lbnRlZCBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHppcGZpbGUuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyODY2NjogTm93IHRlc3Quc3VwcG9ydC5ybXRyZWUgaXMgYWJsZSB0byByZW1vdmUgdW53cml0YWJsZSBvcgorICB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzLgorCistIElzc3VlICMyMzgzOTogVmFyaW91cyBjYWNoZXMgbm93IGFyZSBjbGVhcmVkIGJlZm9yZSBydW5uaW5nIGV2ZXJ5IHRlc3QgZmlsZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwNjU2OiBGaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgb24gQUlYLiAgUGF0Y2ggYnkgVHJpc3RhbiBDYXJlbCBhbmQKKyAgTWljaGFlbCBIYXViZW53YWxsbmVyLgorCistIElzc3VlICMyNjM1OTogUmVuYW1lIC0td2l0aC1vcHRpbWlhdGlvbnMgdG8gLS1lbmFibGUtb3B0aW1pemF0aW9ucy4KKworLSBJc3N1ZSAjMjg2NzY6IFByZXZlbnQgbWlzc2luZyAnZ2V0ZW50cm9weScgZGVjbGFyYXRpb24gd2FybmluZyBvbiBtYWNPUy4KKyAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEwLTMxKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgxMjg6IERlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIGludmFsaWQgc3RyIGFuZCBieXRlIGVzY2FwZQorICBzZXF1ZW5jZXMgbm93IHByaW50cyBiZXR0ZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIGVycm9yCisgIG9jY3Vycy4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQgRXJpYyBTbWl0aC4KKworLSBJc3N1ZSAjMjg1MDk6IGRpY3QudXBkYXRlKCkgbm8gbG9uZ2VyIGFsbG9jYXRlIHVubmVjZXNzYXJ5IGxhcmdlIG1lbW9yeS4KKworLSBJc3N1ZSAjMjg0MjY6IEZpeGVkIHBvdGVudGlhbCBjcmFzaCBpbiBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KCkgaW4gZGVidWcKKyAgYnVpbGQuCisKKy0gSXNzdWUgIzI4NTE3OiBGaXhlZCBvZi1ieS1vbmUgZXJyb3IgaW4gdGhlIHBlZXBob2xlIG9wdGltaXplciB0aGF0IGNhdXNlZAorICBrZWVwaW5nIHVucmVhY2hhYmxlIGNvZGUuCisKKy0gSXNzdWUgIzI4MjE0OiBJbXByb3ZlZCBleGNlcHRpb24gcmVwb3J0aW5nIGZvciBwcm9ibGVtYXRpYyBfX3NldF9uYW1lX18KKyAgYXR0cmlidXRlcy4KKworLSBJc3N1ZSAjMjM3ODI6IEZpeGVkIHBvc3NpYmxlIG1lbW9yeSBsZWFrIGluIF9QeVRyYWNlYmFja19BZGQoKSBhbmQgZXhjZXB0aW9uCisgIGxvc3MgaW4gUHlUcmFjZUJhY2tfSGVyZSgpLgorCistIElzc3VlICMyODQ3MTogRml4ICJQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwiCisgIGNyYXNoIGluIHNvY2tldC5zZXRibG9ja2luZy4KKworTGlicmFyeQorLS0tLS0tLQorCiAtIElzc3VlICMyNzUxNzogTFpNQSBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igbm8gbG9uZ2VyIHJhaXNlIGV4Y2VwdGlvbnMgaWYKICAgZ2l2ZW4gZW1wdHkgZGF0YSB0d2ljZS4gIFBhdGNoIGJ5IEJlbmphbWluIEZvZ2xlLgogCkBAIC0yMjEsNiArNDI0LDkgQEAKICAgYnkgcmVwcmVzZW50aW5nIHRoZSBzY2FsZSBhcyBmbG9hdCB2YWx1ZSBpbnRlcm5hbGx5IGluIFRrLiAgdGtpbnRlci5JbnRWYXIKICAgbm93IHdvcmtzIGlmIGZsb2F0IHZhbHVlIGlzIHNldCB0byB1bmRlcmx5aW5nIFRrIHZhcmlhYmxlLgogCistIElzc3VlICMxODg0NDogVGhlIHZhcmlvdXMgd2F5cyBvZiBzcGVjaWZ5aW5nIHdlaWdodHMgZm9yIHJhbmRvbS5jaG9pY2VzKCkKKyAgbm93IHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0IHNlcXVlbmNlcy4KKwogLSBJc3N1ZSAjMjgyNTU6IGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLnBybW9udGgoKSBubyBsb25nZXIgcHJpbnRzIGEgc3BhY2UKICAgYXQgdGhlIHN0YXJ0IG9mIG5ldyBsaW5lIGFmdGVyIHByaW50aW5nIGEgbW9udGgncyBjYWxlbmRhci4gIFBhdGNoIGJ5CiAgIFhpYW5nIFpoYW5nLgpAQCAtMjMwLDMwICs0MzYsMTk0IEBACiAKIC0gSXNzdWUgIzI4MzUzOiBvcy5md2FsaygpIG5vIGxvbmdlciBmYWlscyBvbiBicm9rZW4gbGlua3MuCiAKKy0gSXNzdWUgIzI4NDMwOiBGaXggaXRlcmF0b3Igb2YgQyBpbXBsZW1lbnRlZCBhc3luY2lvLkZ1dHVyZSBkb2Vzbid0IGFjY2VwdAorICBub24tTm9uZSB2YWx1ZSBpcyBwYXNzZWQgdG8gaXQuc2VuZCh2YWwpLgorCistIElzc3VlICMyNzAyNTogR2VuZXJhdGVkIG5hbWVzIGZvciBUa2ludGVyIHdpZGdldHMgbm93IHN0YXJ0IGJ5IHRoZSAiISIgcHJlZml4CisgIGZvciByZWFkYWJpbGl0eSAod2FzICJgIikuCisKIC0gSXNzdWUgIzI1NDY0OiBGaXhlZCBITGlzdC5oZWFkZXJfZXhpc3RzKCkgaW4gdGtpbnRlci50aXggbW9kdWxlIGJ5IGFkZGluCiAgIGEgd29ya2Fyb3VuZCB0byBUaXggbGlicmFyeSBidWcuCiAKLS0gSXNzdWUgIzI4NDg4OiBzaHV0aWwubWFrZV9hcmNoaXZlKCkgbm8gbG9uZ2VyIGFkZCBlbnRyeSAiLi8iIHRvIFpJUCBhcmNoaXZlLgorLSBJc3N1ZSAjMjg0ODg6IHNodXRpbC5tYWtlX2FyY2hpdmUoKSBubyBsb25nZXIgYWRkcyBlbnRyeSAiLi8iIHRvIFpJUCBhcmNoaXZlLgorCistIElzc3VlICMyNTk1MzogcmUuc3ViKCkgbm93IHJhaXNlcyBhbiBlcnJvciBmb3IgaW52YWxpZCBudW1lcmljYWwgZ3JvdXAKKyAgcmVmZXJlbmNlIGluIHJlcGxhY2VtZW50IHRlbXBsYXRlIGV2ZW4gaWYgdGhlIHBhdHRlcm4gaXMgbm90IGZvdW5kIGluCisgIHRoZSBzdHJpbmcuICBFcnJvciBtZXNzYWdlIGZvciBpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSBub3cgaW5jbHVkZXMgdGhlCisgIGdyb3VwIGluZGV4IGFuZCB0aGUgcG9zaXRpb24gb2YgdGhlIHJlZmVyZW5jZS4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzE4MjE5OiBPcHRpbWl6ZSBjc3YuRGljdFdyaXRlciBmb3IgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMuCisgIFBhdGNoIGJ5IE1hcmlhdHRhIFdpamF5YS4KKworLSBJc3N1ZSAjMjg0NDg6IEZpeCBDIGltcGxlbWVudGVkIGFzeW5jaW8uRnV0dXJlIGRpZG4ndCB3b3JrIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI4NDgwOiBGaXggZXJyb3IgYnVpbGRpbmcgc29ja2V0IG1vZHVsZSB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCisgIGRpc2FibGVkLgogCiAtIElzc3VlICMyNDQ1MjogTWFrZSB3ZWJicm93c2VyIHN1cHBvcnQgQ2hyb21lIG9uIE1hYyBPUyBYLgogCiAtIElzc3VlICMyMDc2NjogRml4IHJlZmVyZW5jZXMgbGVha2VkIGJ5IHBkYiBpbiB0aGUgaGFuZGxpbmcgb2YgU0lHSU5UCiAgIGhhbmRsZXJzLgogCistIElzc3VlICMyODQ5MjogRml4IGhvdyBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gX2FzeW5jaW8uRnV0dXJlLgorCistIElzc3VlICMyODUwMDogRml4IGFzeW5jaW8gdG8gaGFuZGxlIGFzeW5jIGdlbnMgR0MgZnJvbSBhbm90aGVyIHRocmVhZC4KKworLSBJc3N1ZSAjMjY5MjM6IEZpeCBhc3luY2lvLkdhdGhlciB0byByZWZ1c2UgYmVpbmcgY2FuY2VsbGVkIG9uY2UgYWxsCisgIGNoaWxkcmVuIGFyZSBkb25lLgorICBQYXRjaCBieSBKb2hhbm5lcyBFYmtlLgorCistIElzc3VlICMyNjc5NjogRG9uJ3QgY29uZmlndXJlIHRoZSBudW1iZXIgb2Ygd29ya2VycyBmb3IgZGVmYXVsdAorICB0aHJlYWRwb29sIGV4ZWN1dG9yLgorICBJbml0aWFsIHBhdGNoIGJ5IEhhbnMgTGF3cmVuei4KKworLSBJc3N1ZSAjMjg1NDQ6IEltcGxlbWVudCBhc3luY2lvLlRhc2sgaW4gQy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODUyMjogRml4ZXMgbWlzaGFuZGxlZCBidWZmZXIgcmVhbGxvY2F0aW9uIGluIGdldHBhdGhwLmMKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4NDQ0OiBGaXggbWlzc2luZyBleHRlbnNpb25zIG1vZHVsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCisKKy0gSXNzdWUgIzI4MjA4OiBVcGRhdGUgV2luZG93cyBidWlsZCBhbmQgT1MgWCBpbnN0YWxsZXJzIHRvIHVzZSBTUUxpdGUgMy4xNC4yLgorCistIElzc3VlICMyODI0ODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgYW5kIE9TIFggaW5zdGFsbGVycyB0byB1c2UgT3BlblNTTCAxLjAuMmouCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNjk0NDogRml4IHRlc3RfcG9zaXggZm9yIEFuZHJvaWQgd2hlcmUgJ2lkIC1HJyBpcyBlbnRpcmVseSB3cm9uZyBvcgorICBtaXNzaW5nIHRoZSBlZmZlY3RpdmUgZ2lkLgorCistIElzc3VlICMyODQwOTogcmVncnRlc3Q6IGZpeCB0aGUgcGFyc2VyIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEwLTEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgxODM6IE9wdGltaXplIGFuZCBjbGVhbnVwIGRpY3QgaXRlcmF0aW9uLgorCistIElzc3VlICMyNjA4MTogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBhc3luY2lvLkZ1dHVyZS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCisgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KKyAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy0gSXNzdWUgIzI4Mzc2OiBDcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvcgorICB0eXBlIG5vdyBpcyBkZXByZWNhdGVkLiAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy0gSXNzdWUgIzI4Mzc2OiBUaGUgY29uc3RydWN0b3Igb2YgcmFuZ2VfaXRlcmF0b3Igbm93IGNoZWNrcyB0aGF0IHN0ZXAgaXMgbm90IDAuCisgIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgorCistIElzc3VlICMyNjkwNjogUmVzb2x2aW5nIHNwZWNpYWwgbWV0aG9kcyBvZiB1bmluaXRpYWxpemVkIHR5cGUgbm93IGNhdXNlcworICBpbXBsaWNpdCBpbml0aWFsaXphdGlvbiBvZiB0aGUgdHlwZSBpbnN0ZWFkIG9mIGEgZmFpbC4KKworLSBJc3N1ZSAjMTgyODc6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCB0cF9uYW1lIGlzIG5vdCBOVUxMLgorICBPcmlnaW5hbCBwYXRjaCBieSBOaWtsYXMgS29lcC4KKworLSBJc3N1ZSAjMjQwOTg6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIHdoZW4gQVNUIGlzIGNoYW5nZWQgaW4gcHJvY2VzcyBvZgorICBjb21waWxpbmcgaXQuCisKKy0gSXNzdWUgIzI4MjAxOiBEaWN0IHJlZHVjZXMgcG9zc2liaWxpdHkgb2YgMm5kIGNvbmZsaWN0IGluIGhhc2ggdGFibGUgd2hlbgorICBoYXNoZXMgaGF2ZSBzYW1lIGxvd2VyIGJpdHMuCisKKy0gSXNzdWUgIzI4MzUwOiBTdHJpbmcgY29uc3RhbnRzIHdpdGggbnVsbCBjaGFyYWN0ZXIgbm8gbG9uZ2VyIGludGVybmVkLgorCistIElzc3VlICMyNjYxNzogRml4IGNyYXNoIHdoZW4gR0MgcnVucyBkdXJpbmcgd2Vha3JlZiBjYWxsYmFja3MuCisKKy0gSXNzdWUgIzI3OTQyOiBTdHJpbmcgY29uc3RhbnRzIG5vdyBpbnRlcm5lZCByZWN1cnNpdmVseSBpbiB0dXBsZXMgYW5kIGZyb3plbnNldHMuCisKKy0gSXNzdWUgIzIxNTc4OiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBJbXBvcnRFcnJvciBjYWxsZWQgd2l0aAorICBpbnZhbGlkIGtleXdvcmQgYXJncy4KKworLSBJc3N1ZSAjMjgyMDM6IEZpeCBpbmNvcnJlY3QgdHlwZSBpbiBjb21wbGV4KDEuMCwgezI6M30pIGVycm9yIG1lc3NhZ2UuCisgIFBhdGNoIGJ5IFNvdW15YSBTaGFybWEuCisKKy0gSXNzdWUgIzI4MDg2OiBTaW5nbGUgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQgb2YgdHVwbGUgc3VidHlwZSB3YXMgcGFzc2VkCisgIHVuc2NhdGhlZCB0byB0aGUgQy1kZWZpbmVkIGZ1bmN0aW9uLiAgTm93IGl0IGlzIGNvbnZlcnRlZCB0byBleGFjdCB0dXBsZS4KKworLSBJc3N1ZSAjMjgyMTQ6IE5vdyBfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIHRoZQorICBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMjc5NTU6IEZhbGxiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIGRldmljZSB3aGVuIHRoZSBnZXRyYW5kb20oKQorICBzeXNjYWxsIGZhaWxzIHdpdGggRVBFUk0sIGZvciBleGFtcGxlIHdoZW4gYmxvY2tlZCBieSBTRUNDT01QLgorCistIElzc3VlICMyODE5MjogRG9uJ3QgaW1wb3J0IHJlYWRsaW5lIGluIGlzb2xhdGVkIG1vZGUuCisKKy0gVXBncmFkZSBpbnRlcm5hbCB1bmljb2RlIGRhdGFiYXNlcyB0byBVbmljb2RlIHZlcnNpb24gOS4wLjAuCisKKy0gSXNzdWUgIzI4MTMxOiBGaXggYSByZWdyZXNzaW9uIGluIHppcGltcG9ydCdzIGNvbXBpbGVfc291cmNlKCkuICB6aXBpbXBvcnQKKyAgc2hvdWxkIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMyODEyNjogUmVwbGFjZSBQeV9NRU1DUFkgd2l0aCBtZW1jcHkoKS4gVmlzdWFsIFN0dWRpbyBjYW4gcHJvcGVybHkKKyAgb3B0aW1pemUgbWVtY3B5KCkuCisKKy0gSXNzdWUgIzI4MTIwOiBGaXggZGljdC5wb3AoKSBmb3Igc3BsaXR0ZWQgZGljdGlvbmFyeSB3aGVuIHRyeWluZyB0byByZW1vdmUgYQorICAicGVuZGluZyBrZXkiIChOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlKS4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2MTgyOiBSYWlzZSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhc3luYyBhbmQgYXdhaXQga2V5d29yZHMgYXJlCisgIHVzZWQgYXMgdmFyaWFibGUvYXR0cmlidXRlL2NsYXNzL2Z1bmN0aW9uIG5hbWUuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjc5OTg6IEZpeGVkIGJ5dGVzIHBhdGggc3VwcG9ydCBpbiBvcy5zY2FuZGlyKCkgb24gV2luZG93cy4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4uCisKKy0gSXNzdWUgIzI4MzE3OiBUaGUgZGlzYXNzZW1ibGVyIG5vdyBkZWNvZGVzIEZPUk1BVF9WQUxVRSBhcmd1bWVudC4KKwogLSBJc3N1ZSAjMjYyOTM6IEZpeGVkIHdyaXRpbmcgWklQIGZpbGVzIHRoYXQgc3RhcnRzIG5vdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKICAgZmlsZS4gIE9mZnNldHMgaW4gWklQIGZpbGUgbm93IGFyZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUgaW4KICAgY29uZm9ybWluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4KIAorLSBJc3N1ZSAjMjgzODA6IHVuaXR0ZXN0Lm1vY2sgTW9jayBhdXRvc3BlYyBmdW5jdGlvbnMgbm93IHByb3Blcmx5IHN1cHBvcnQKKyAgYXNzZXJ0X2NhbGxlZCwgYXNzZXJ0X25vdF9jYWxsZWQsIGFuZCBhc3NlcnRfY2FsbGVkX29uY2UuCisKKy0gSXNzdWUgIzI3MTgxIHJlbW92ZSBzdGF0aXN0aWNzLmdlb21ldHJpY19tZWFuIGFuZCBkZWZlciB1bnRpbCAzLjcuCisKKy0gSXNzdWUgIzI4MjI5OiBsem1hIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKwogLSBJc3N1ZSAjMjgzMjE6IEZpeGVkIHdyaXRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHdpdGggYmluYXJ5IGZvcm1hdCBpbiBwbGlzdGxpYi4KIAorLSBJc3N1ZSAjMjgyMjU6IGJ6MiBtb2R1bGUgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBJbml0aWFsIHBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjgyMjc6IGd6aXAgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCisKKy0gSXNzdWUgIzI3MzU4OiBPcHRpbWl6ZWQgbWVyZ2luZyB2YXIta2V5d29yZCBhcmd1bWVudHMgYW5kIGltcHJvdmVkIGVycm9yCisgIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLW1hcHBpbmcgYXMgYSB2YXIta2V5d29yZCBhcmd1bWVudC4KKworLSBJc3N1ZSAjMjgyNTc6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLWl0ZXJhYmxlIGFzCisgIGEgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQuICBBZGRlZCBvcGNvZGUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTC4KKwogLSBJc3N1ZSAjMjgzMjI6IEZpeGVkIHBvc3NpYmxlIGNyYXNoZXMgd2hlbiB1bnBpY2tsZSBpdGVydG9vbHMgb2JqZWN0cyBmcm9tCiAgIGluY29ycmVjdCBwaWNrbGUgZGF0YS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgogCi0tIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCi0gIHVzYWdlIHBhdHRlcm5zLgorLSBJc3N1ZSAjMjgyMjg6IGltZ2hkciBub3cgc3VwcG9ydHMgcGF0aGxpYi4KIAotLSBJc3N1ZSAjMTcwMzE3ODogRml4IHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIC0tbGluay1vYmplY3RzIG9wdGlvbiB0byB0aGUKLSAgZGlzdHV0aWxzIGJ1aWxkX2V4dCBjb21tYW5kLgorLSBJc3N1ZSAjMjgyMjY6IGNvbXBpbGVhbGwgbm93IHN1cHBvcnRzIHBhdGhsaWIuCisKKy0gSXNzdWUgIzI4MzE0OiBGaXggZnVuY3Rpb24gZGVjbGFyYXRpb24gKEMgZmxhZ3MpIGZvciB0aGUgZ2V0aXRlcmF0b3IoKSBtZXRob2QKKyAgb2YgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQuCisKKy0gSXNzdWUgIzI4MTQ4OiBTdG9wIHVzaW5nIGxvY2FsdGltZSgpIGFuZCBnbXRpbWUoKSBpbiB0aGUgdGltZQorICBtb2R1bGUuCisKKyAgSW50cm9kdWNlZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBfUHlUaW1lX2xvY2FsdGltZSBBUEkgdGhhdCBpcworICBzaW1pbGFyIHRvIFBPU0lYIGxvY2FsdGltZV9yLCBidXQgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBQYXRjaAorICBieSBFZCBTY2hvdXRlbi4KIAogLSBJc3N1ZSAjMjgyNTM6IEZpeGVkIGNhbGVuZGFyIGZ1bmN0aW9ucyBmb3IgZXh0cmVtZSBtb250aHM6IDAwMDEtMDEKICAgYW5kIDk5OTktMTIuCkBAIC0yNjksMTAgKzYzOSwxNSBAQAogLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKICAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMTg4NDQ6IHJhbmRvbS5jaG9pY2VzKCkgbm93IGhhcyBrIGFzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIGNvbW1vbiBjYXNlcyBhbmQgY29tZSBpbnRvIGxpbmUKKyAgd2l0aCB0aGUgc2lnbmF0dXJlIHVzZWQgaW4gb3RoZXIgbGFuZ3VhZ2VzLgorCiAtIElzc3VlICMxODg5MzogRml4IGludmFsaWQgZXhjZXB0aW9uIGhhbmRsaW5nIGluIExpYi9jdHlwZXMvbWFjaG9saWIvZHlsZC5weS4KICAgUGF0Y2ggYnkgTWFkaXNvbiBNYXkuCiAKIC0gSXNzdWUgIzI3NjExOiBGaXhlZCBzdXBwb3J0IG9mIGRlZmF1bHQgcm9vdCB3aW5kb3cgaW4gdGhlIHRraW50ZXIudGl4IG1vZHVsZS4KKyAgQWRkZWQgdGhlIG1hc3RlciBwYXJhbWV0ZXIgaW4gdGhlIERpc3BsYXlTdHlsZSBjb25zdHJ1Y3Rvci4KIAogLSBJc3N1ZSAjMjczNDg6IEluIHRoZSB0cmFjZWJhY2sgbW9kdWxlLCByZXN0b3JlIHRoZSBmb3JtYXR0aW5nIG9mIGV4Y2VwdGlvbgogICBtZXNzYWdlcyBsaWtlICJFeGNlcHRpb246IE5vbmUiLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbgpAQCAtMjgwLDYgKzY1NSwxNSBAQAogCiAtIElzc3VlICMyNTY1MTogQWxsb3cgZmFsc3kgdmFsdWVzIHRvIGJlIHVzZWQgZm9yIG1zZyBwYXJhbWV0ZXIgb2Ygc3ViVGVzdCgpLgogCistIElzc3VlICMyNzc3ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gb3MuZ2V0cmFuZG9tKCkgd2hlbiB0aGUgZ2V0cmFuZG9tKCkgaXMKKyAgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIGEgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGEgUHl0aG9uIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMjgyMDA6IEZpeCBtZW1vcnkgbGVhayBvbiBXaW5kb3dzIGluIHRoZSBvcyBtb2R1bGUgKGZpeAorICBwYXRoX2NvbnZlcnRlcigpIGZ1bmN0aW9uKS4KKworLSBJc3N1ZSAjMjU0MDA6IFJvYm90RmlsZVBhcnNlciBub3cgY29ycmVjdGx5IHJldHVybnMgZGVmYXVsdCB2YWx1ZXMgZm9yCisgIGNyYXdsX2RlbGF5IGFuZCByZXF1ZXN0X3JhdGUuICBJbml0aWFsIHBhdGNoIGJ5IFBldGVyIFdpcnR6LgorCiAtIElzc3VlICMyNzkzMjogUHJldmVudCBtZW1vcnkgbGVhayBpbiB3aW4zMl92ZXIoKS4KIAogLSBGaXggVW5ib3VuZExvY2FsRXJyb3IgaW4gc29ja2V0Ll9zZW5kZmlsZV91c2Vfc2VuZGZpbGUuCkBAIC0yODcsNiArNjcxLDEwIEBACiAtIElzc3VlICMyODA3NTogQ2hlY2sgZm9yIEVSUk9SX0FDQ0VTU19ERU5JRUQgaW4gV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZgogICBvcy5zdGF0KCkuICBQYXRjaCBieSBFcnlrIFN1bi4KIAorLSBJc3N1ZSAjMjI0OTM6IFdhcm5pbmcgbWVzc2FnZSBlbWl0dGVkIGJ5IHVzaW5nIGlubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mCisgIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgY29udGFpbnMgYSAodHJ1bmNhdGVkKSByZWdleCBwYXR0ZXJuLgorICBQYXRjaCBieSBUaW0gR3JhaGFtLgorCiAtIElzc3VlICMyNTI3MDogUHJldmVudCBjb2RlY3MuZXNjYXBlX2VuY29kZSgpIGZyb20gcmFpc2luZyBTeXN0ZW1FcnJvciB3aGVuCiAgIGFuIGVtcHR5IGJ5dGVzdHJpbmcgaXMgcGFzc2VkLgogCkBAIC0yOTUsMjAgKzY4MywzMjMgQEAKIC0gSXNzdWUgIzI1ODk1OiBFbmFibGUgV2ViU29ja2V0IFVSTCBzY2hlbWVzIGluIHVybGxpYi5wYXJzZS51cmxqb2luLgogICBQYXRjaCBieSBHZXJnZWx5IEltcmVoIGFuZCBNYXJrdXMgSG9sdGVybWFubi4KIAorLSBJc3N1ZSAjMjgxMTQ6IEZpeCBhIGNyYXNoIGluIHBhcnNlX2Vudmxpc3QoKSB3aGVuIGVudiBjb250YWlucyBieXRlIHN0cmluZ3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgorCiAtIElzc3VlICMyNzU5OTogRml4ZWQgYnVmZmVyIG92ZXJydW4gaW4gYmluYXNjaWkuYjJhX3FwKCkgYW5kIGJpbmFzY2lpLmEyYl9xcCgpLgogCi0tIElzc3VlICMxOTAwMzptIGVtYWlsLmdlbmVyYXRvciBub3cgcmVwbGFjZXMgb25seSBcciBhbmQvb3IgXG4gbGluZQotICBlbmRpbmdzLCBwZXIgdGhlIFJGQywgaW5zdGVhZCBvZiBhbGwgdW5pY29kZSBsaW5lIGVuZGluZ3MuCistIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KKyAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgorCistIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KKyAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KKworLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCisgIFBhdGNoIGJ5IGljZWJveS4KKworLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCisgIFBhdGNoIGJ5IElOQURBIE5hb2tpLgorCistIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KKworLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KKyAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KKworLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMgbm8KKyAgbG9vcCBhdHRhY2hlZC4KKyAgUGF0Y2ggYnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI4MzY5OiBSYWlzZSBSdW50aW1lRXJyb3Igd2hlbiB0cmFuc3BvcnQncyBGRCBpcyB1c2VkIHdpdGgKKyAgYWRkX3JlYWRlciwgYWRkX3dyaXRlciwgZXRjLgorCistIElzc3VlICMyODM3MDogU3BlZWR1cCBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseS4KKyAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgorCistIElzc3VlICMyODM3MTogRGVwcmVjYXRlIHBhc3NpbmcgYXN5bmNpby5IYW5kbGVzIHRvIHJ1bl9pbl9leGVjdXRvci4KKworLSBJc3N1ZSAjMjgzNzI6IEZpeCBhc3luY2lvIHRvIHN1cHBvcnQgZm9ybWF0dGluZyBvZiBub24tcHl0aG9uIGNvcm91dGluZXMuCisKKy0gSXNzdWUgIzI4Mzk5OiBSZW1vdmUgVU5JWCBzb2NrZXQgZnJvbSBGUyBiZWZvcmUgYmluZGluZy4KKyAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgorCistIElzc3VlICMyNzk3MjogUHJvaGliaXQgVGFza3MgdG8gYXdhaXQgb24gdGhlbXNlbHZlcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODQwMjogQWRkcyBzaWduZWQgY2F0YWxvZyBmaWxlcyBmb3Igc3RkbGliIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI4MzMzOiBFbmFibGVzIFVuaWNvZGUgZm9yIHBzMS9wczIgYW5kIGlucHV0KCkgcHJvbXB0cy4gKFBhdGNoIGJ5CisgIEVyeWsgU3VuKQorCistIElzc3VlICMyODI1MTogSW1wcm92ZW1lbnRzIHRvIGhlbHAgbWFudWFscyBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKKyAgNjQtYml0CisKKy0gSXNzdWUgIzI4MTYxOiBPcGVuaW5nIENPTiBmb3Igd3JpdGUgYWNjZXNzIGZhaWxzCisKKy0gSXNzdWUgIzI4MTYyOiBXaW5kb3dzQ29uc29sZUlPIHJlYWRhbGwoKSBmYWlscyBpZiBmaXJzdCBsaW5lIHN0YXJ0cyB3aXRoCisgIEN0cmwrWgorCistIElzc3VlICMyODE2MzogV2luZG93c0NvbnNvbGVJTyBmaWxlbm8oKSBwYXNzZXMgd3JvbmcgZmxhZ3MgdG8KKyAgX29wZW5fb3NmaGFuZGxlCisKKy0gSXNzdWUgIzI4MTY0OiBfUHlJT19nZXRfY29uc29sZV90eXBlIGZhaWxzIGZvciB2YXJpb3VzIHBhdGhzCisKKy0gSXNzdWUgIzI4MTM3OiBSZW5hbWVzIFdpbmRvd3MgcGF0aCBmaWxlIHRvIC5fcHRoCisKKy0gSXNzdWUgIzI4MTM4OiBXaW5kb3dzIC5fcHRoIGZpbGUgc2hvdWxkIGFsbG93IGltcG9ydCBzaXRlCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyODQyNjogRGVwcmVjYXRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoKSwKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpLCBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSgpIGFuZAorICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSgpLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KKyAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KKworLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KKworLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKKyAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyODIxNzogQWRkcyBfdGVzdGNvbnNvbGUgbW9kdWxlIHRvIHRlc3QgY29uc29sZSBpbnB1dC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDktMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzcyMjogVGhlIF9fY2xhc3NfXyBjZWxsIHVzZWQgYnkgemVyby1hcmd1bWVudCBzdXBlcigpIGlzIG5vdworICBpbml0aWFsaXplZCBmcm9tIHR5cGUuX19uZXdfXyByYXRoZXIgdGhhbiBfX2J1aWxkX2NsYXNzX18sIHNvIGNsYXNzIG1ldGhvZHMKKyAgcmVseWluZyBvbiB0aGF0IHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHdoZW4gY2FsbGVkIGZyb20gbWV0YWNsYXNzIG1ldGhvZHMKKyAgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCistIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbiBQeXRob24KKyAgaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KKworLSBJc3N1ZSAjMjcwODA6IEltcGxlbWVudCBmb3JtYXR0aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuICBJbml0aWFsIHBhdGNoCisgIGJ5IENocmlzIEFuZ2VsaWNvLgorCistIElzc3VlICMyNzE5OTogSW4gdGFyZmlsZSwgZXhwb3NlIGNvcHlmaWxlb2JqIGJ1ZnNpemUgdG8gaW1wcm92ZSB0aHJvdWdocHV0LgorICBQYXRjaCBieSBKYXNvbiBGcmllZC4KKworLSBJc3N1ZSAjMjc5NDg6IEluIGYtc3RyaW5ncywgb25seSBhbGxvdyBiYWNrc2xhc2hlcyBpbnNpZGUgdGhlIGJyYWNlcworICAod2hlcmUgdGhlIGV4cHJlc3Npb25zIGFyZSkuICBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIDMuNgorICBhbHBoYSByZWxlYXNlcywgd2hlcmUgYmFja3NsYXNoZXMgYXJlIGFsbG93ZWQgYW55d2hlcmUgaW4gYW4KKyAgZi1zdHJpbmcuICBBbHNvLCByZXF1aXJlIHRoYXQgZXhwcmVzc2lvbnMgaW5zaWRlIGYtc3RyaW5ncyBiZQorICBlbmNsb3NlZCB3aXRoaW4gbGl0ZXJhbCBicmFjZXMsIGFuZCBub3QgZXNjYXBlcyBsaWtlCisgIGYnXHg3YiJoaSJceDdkJy4KKworLSBJc3N1ZSAjMjgwNDY6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcyBmcm9tIHN5cy5wYXRoLgorCistIElzc3VlICMyODA3MTogQWRkIGVhcmx5LW91dCBmb3IgZGlmZmVyZW5jaW5nIGZyb20gYW4gZW1wdHkgc2V0LgorCistIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCisgIChwYXRjaCBieSBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjU4NTY6IFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSBvZiBleHRlbnNpb24gY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgIG5vdyBpcyBpbnRlcm5lZC4gVGhpcyBsZWFkcyB0byBtb3JlIGNvbXBhY3QgcGlja2xlIGRhdGEgd2l0aCBwcm90b2NvbCA0LgorCistIElzc3VlICMyNzIxMzogUmV3b3JrIENBTExfRlVOQ1RJT04qIG9wY29kZXMgdG8gcHJvZHVjZSBzaG9ydGVyIGFuZCBtb3JlCisgIGVmZmljaWVudCBieXRlY29kZS4gUGF0Y2ggYnkgRGVtdXIgUnVtZWQsIGRlc2lnbiBieSBTZXJoaXkgU3RvcmNoYWthLAorICByZXZpZXdlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMjYzMzE6IEltcGxlbWVudCB0b2tlbml6aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuIFBhdGNoIGJ5IEdlb3JnIEJyYW5kbC4KKworLSBJc3N1ZSAjMjc5OTk6IE1ha2UgImdsb2JhbCBhZnRlciB1c2UiIGEgU3ludGF4RXJyb3IsIGFuZCBkaXR0byBmb3Igbm9ubG9jYWwuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjgwMDM6IEltcGxlbWVudCBQRVAgNTI1IC0tIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzLgorCistIElzc3VlICMyNzk4NTogSW1wbGVtZW50IFBFUCA1MjYgLS0gU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyNjA1ODogQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBkaWN0IHR5cGUsIGluY3JlbWVudGVkCisgIGF0IGVhY2ggZGljdGlvbmFyeSBjcmVhdGlvbiBhbmQgYXQgZWFjaCBkaWN0aW9uYXJ5IGNoYW5nZS4gSW1wbGVtZW50YXRpb24gb2YKKyAgdGhlIFBFUCA1MDkuCisKKy0gSXNzdWUgIzI3MzY0OiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZQorICBub3cgZ2VuZXJhdGVzIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjczNTA6IGBkaWN0YCBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGxpa2UgUHlQeS4gSXQgaXMgbW9yZSBjb21wYWN0CisgIGFuZCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorICAoQ29uY2VwdCBkZXZlbG9wZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgYW5kIHBhdGNoIGJ5IEluYWRhIE5hb2tpLikKKworLSBJc3N1ZSAjMjc5MTE6IFJlbW92ZSB1bm5lY2Vzc2FyeSBlcnJvciBjaGVja3MgaW4KKyAgYGBleGVjX2J1aWx0aW5fb3JfZHluYW1pYygpYGAuCisKKy0gSXNzdWUgIzI3MDc4OiBBZGRlZCBCVUlMRF9TVFJJTkcgb3Bjb2RlLiAgT3B0aW1pemVkIGYtc3RyaW5ncyBldmFsdWF0aW9uLgorCistIElzc3VlICMxNzg4NDogUHl0aG9uIG5vdyByZXF1aXJlcyBzeXN0ZW1zIHdpdGggaW50dHlwZXMuaCBhbmQgc3RkaW50LmgKKworLSBJc3N1ZSAjMjc5NjE6IFJlcXVpcmUgcGxhdGZvcm1zIHRvIHN1cHBvcnQgYGBsb25nIGxvbmdgYC4gUHl0aG9uIGhhc24ndAorICBjb21waWxlZCB3aXRob3V0IGBgbG9uZyBsb25nYGAgZm9yIHllYXJzLCBzbyB0aGlzIGlzIGJhc2ljYWxseSBhIGZvcm1hbGl0eS4KKworLSBJc3N1ZSAjMjczNTU6IFJlbW92ZWQgc3VwcG9ydCBmb3IgV2luZG93cyBDRS4gIEl0IHdhcyBuZXZlciBmaW5pc2hlZCwKKyAgYW5kIFdpbmRvd3MgQ0UgaXMgbm8gbG9uZ2VyIGEgcmVsZXZhbnQgcGxhdGZvcm0gZm9yIFB5dGhvbi4KKworLSBJbXBsZW1lbnQgUEVQIDUyMy4KKworLSBJc3N1ZSAjMjc4NzA6IEEgbGVmdCBzaGlmdCBvZiB6ZXJvIGJ5IGEgbGFyZ2UgaW50ZWdlciBubyBsb25nZXIgYXR0ZW1wdHMKKyAgdG8gYWxsb2NhdGUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisKKy0gSXNzdWUgIzI1NDAyOiBJbiBpbnQtdG8tZGVjaW1hbC1zdHJpbmcgY29udmVyc2lvbiwgaW1wcm92ZSB0aGUgZXN0aW1hdGUKKyAgb2YgdGhlIGludGVybWVkaWF0ZSBtZW1vcnkgcmVxdWlyZWQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcmlseSBzdHJpY3QKKyAgb3ZlcmZsb3cgY2hlY2suIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI3MjE0OiBJbiBsb25nX2ludmVydCwgYmUgbW9yZSBjYXJlZnVsIGFib3V0IG1vZGlmeWluZyBvYmplY3QKKyAgcmV0dXJuZWQgYnkgbG9uZ19hZGQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgY2hlY2sgZm9yIHNtYWxsIGxvbmdzLgorICBUaGFua3MgT3JlbiBNaWxtYW4gZm9yIGFuYWx5c2lzIGFuZCBwYXRjaC4KKworLSBJc3N1ZSAjMjc1MDY6IFN1cHBvcnQgcGFzc2luZyB0aGUgYnl0ZXMvYnl0ZWFycmF5LnRyYW5zbGF0ZSgpICJkZWxldGUiCisgIGFyZ3VtZW50IGJ5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCisgIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KKworLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcworICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KKworLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjaworICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KKworLSBJc3N1ZSAjMjc3OTI6IFRoZSBtb2R1bG8gb3BlcmF0aW9uIGFwcGxpZWQgdG8gYGBib29sYGAgYW5kIG90aGVyCisgIGBgaW50YGAgc3ViY2xhc3NlcyBub3cgYWx3YXlzIHJldHVybnMgYW4gYGBpbnRgYC4gUHJldmlvdXNseQorICB0aGUgcmV0dXJuIHR5cGUgZGVwZW5kZWQgb24gdGhlIGlucHV0IHZhbHVlcy4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2OTg0OiBpbnQoKSBub3cgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgZXhhY3QgaW50LgorCistIElzc3VlICMyNTYwNDogRml4IGEgbWlub3IgYnVnIGluIGludGVnZXIgdHJ1ZSBkaXZpc2lvbjsgdGhpcyBidWcgY291bGQKKyAgcG90ZW50aWFsbHkgaGF2ZSBjYXVzZWQgb2ZmLWJ5LW9uZS11bHAgcmVzdWx0cyBvbiBwbGF0Zm9ybXMgd2l0aAorICB1bnJlbGlhYmxlIGxkZXhwIGltcGxlbWVudGF0aW9ucy4KKworLSBJc3N1ZSAjMjQyNTQ6IE1ha2UgY2xhc3MgZGVmaW5pdGlvbiBuYW1lc3BhY2Ugb3JkZXJlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzY2MjogRml4IGFuIG92ZXJmbG93IGNoZWNrIGluIGBgTGlzdF9OZXdgYDogdGhlIG9yaWdpbmFsIGNvZGUgd2FzCisgIGNoZWNraW5nIGFnYWluc3QgYGBQeV9TSVpFX01BWGBgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgdXBwZXIgYm91bmQgb2YKKyAgYGBQeV9TU0laRV9UX01BWGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQorICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCisgIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50CisgIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5CisgIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKKyAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKKyAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KKworLSBJc3N1ZSAjMjcxNTc6IE1ha2Ugb25seSB0eXBlKCkgaXRzZWxmIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0uCisgIFBhdGNoIGJ5IEVyeWsgU3VuIGFuZCBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgorICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQorICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjgwMDg6IEltcGxlbWVudCBQRVAgNTMwIC0tIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KKworLSBJc3N1ZSAjMjc5NDI6IEZpeCBtZW1vcnkgbGVhayBpbiBjb2Rlb2JqZWN0LmMKKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyODczMjogRml4IGNyYXNoIGluIG9zLnNwYXdudigpIHdpdGggbm8gZWxlbWVudHMgaW4gYXJncworCistIElzc3VlICMyODQ4NTogQWx3YXlzIHJhaXNlIFZhbHVlRXJyb3IgZm9yIG5lZ2F0aXZlCisgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIod29ya2Vycz0uLi4pIHBhcmFtZXRlciwgZXZlbiB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCisgIHVuYXZhaWxhYmxlLgorCistIElzc3VlICMyODAzNzogVXNlIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoKSBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgQ29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiBtYW51YWxseS4KKworLSBJc3N1ZSAjMjUyODM6IEF0dHJpYnV0ZXMgdG1fZ210b2ZmIGFuZCB0bV96b25lIGFyZSBub3cgYXZhaWxhYmxlIG9uCisgIGFsbCBwbGF0Zm9ybXMgaW4gdGhlIHJldHVybiB2YWx1ZXMgb2YgdGltZS5sb2NhbHRpbWUoKSBhbmQKKyAgdGltZS5nbXRpbWUoKS4KKworLSBJc3N1ZSAjMjQ0NTQ6IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3QgZ3JvdXBzIGFyZSBub3cKKyAgYWNjZXNzaWJsZSB1c2luZyBfX2dldGl0ZW1fXy4gICJtb1t4XSIgaXMgZXF1aXZhbGVudCB0bworICAibW8uZ3JvdXAoeCkiLgorCistIElzc3VlICMxMDc0MDogc3FsaXRlMyBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbgorICBiZWZvcmUgRERMIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzE3OTQxOiBBZGQgYSAqbW9kdWxlKiBwYXJhbWV0ZXIgdG8gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpLgorCistIElzc3VlICMyMjQ5MzogSW5saW5lIGZsYWdzIG5vdyBzaG91bGQgYmUgdXNlZCBvbmx5IGF0IHRoZSBzdGFydCBvZiB0aGUKKyAgcmVndWxhciBleHByZXNzaW9uLiAgRGVwcmVjYXRpb24gd2FybmluZyBpcyBlbWl0dGVkIGlmIHVzZXMgdGhlbSBpbiB0aGUKKyAgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKKy0gSXNzdWUgIzI2ODg1OiB4bWxycGMgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQKKyAgYnkgQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzIGFuZCBOb25lLgorCistIElzc3VlICMyODA3MDogRml4ZWQgcGFyc2luZyBpbmxpbmUgdmVyYm9zZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzE5NTAwOiBBZGQgY2xpZW50LXNpZGUgU1NMIHNlc3Npb24gcmVzdW1wdGlvbiB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjMjgwMjI6IERlcHJlY2F0ZSBzc2wtcmVsYXRlZCBhcmd1bWVudHMgaW4gZmF2b3Igb2YgU1NMQ29udGV4dC4gVGhlCisgIGRlcHJlY2F0aW9uIGluY2x1ZGUgbWFudWFsIGNyZWF0aW9uIG9mIFNTTFNvY2tldCBhbmQgY2VydGZpbGUva2V5ZmlsZQorICAob3Igc2ltaWxhcikgaW4gZnRwbGliLCBodHRwbGliLCBpbWFwbGliLCBzbXRwbGliLCBwb3BsaWIgYW5kIHVybGxpYi4KKworLSBJc3N1ZSAjMjgwNDM6IFNTTENvbnRleHQgaGFzIGltcHJvdmVkIGRlZmF1bHQgc2V0dGluZ3M6IE9QX05PX1NTTHYyLAorICBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgT1BfU0lOR0xFX0RIX1VTRSwgT1BfU0lOR0xFX0VDREhfVVNFIGFuZCBISUdIIGNpcGhlcnMgd2l0aG91dCBNRDUuCisKKy0gSXNzdWUgIzI0NjkzOiBDaGFuZ2VkIHNvbWUgUnVudGltZUVycm9yJ3MgaW4gdGhlIHppcGZpbGUgbW9kdWxlIHRvIG1vcmUKKyAgYXBwcm9wcmlhdGUgdHlwZXMuIEltcHJvdmVkIHNvbWUgZXJyb3IgbWVzc2FnZXMgYW5kIGRlYnVnZ2luZyBvdXRwdXQuCisKKy0gSXNzdWUgIzE3OTA5OiBgYGpzb24ubG9hZGBgIGFuZCBgYGpzb24ubG9hZHNgYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQKKyAgZW5jb2RlZCBhcyBVVEYtOCwgVVRGLTE2IG9yIFVURi0zMi4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcxMzc6IHRoZSBwdXJlIFB5dGhvbiBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgYGZ1bmN0b29scy5wYXJ0aWFsYGAKKyAgbm93IG1hdGNoZXMgdGhlIGJlaGF2aW91ciBvZiBpdHMgYWNjZWxlcmF0ZWQgQyBjb3VudGVycGFydCBmb3Igc3ViY2xhc3NpbmcsCisgIHBpY2tsaW5nIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uIHB1cnBvc2VzLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5IGFuZAorICBTZXJoaXkgU3RvcmNoYWthLgorCistIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCisgIHVzYWdlIHBhdHRlcm5zLgorCistIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQorICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCiAKIC0gSXNzdWUgIzI4MDE5OiBpdGVydG9vbHMuY291bnQoKSBubyBsb25nZXIgcm91bmRzIG5vbi1pbnRlZ2VyIHN0ZXAgaW4gcmFuZ2UKICAgYmV0d2VlbiAxLjAgYW5kIDIuMCB0byAxLgogCistIElzc3VlICMxODQwMTogUGRiIG5vdyBzdXBwb3J0cyB0aGUgJ3JlYWRyYycga2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sCisgIHdoZXRoZXIgLnBkYnJjIGZpbGVzIHNob3VsZCBiZSByZWFkLiAgUGF0Y2ggYnkgTWFydGluIE1hdHVzaWFrIGFuZAorICBTYW0gS2ltYnJlbC4KKwogLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCiAgIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCiAKIC0gSXNzdWUgIzE0OTc3OiBtYWlsY2FwIG5vdyByZXNwZWN0cyB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzIGluIHRoZSBtYWlsY2FwCiAgIGZpbGVzICgiZmlyc3QgbWF0Y2giKSwgYXMgcmVxdWlyZWQgYnkgUkZDIDE1NDIuICBQYXRjaCBieSBNaWNoYWVsIExhemFyLgogCistIElzc3VlICMyODA4MjogQ29udmVydCByZSBmbGFnIGNvbnN0YW50cyB0byBJbnRGbGFnLgorCistIElzc3VlICMyODAyNTogQ29udmVydCBhbGwgc3NsIG1vZHVsZSBjb25zdGFudHMgdG8gSW50RW51bSBhbmQgSW50RmxhZ3MuCisgIFNTTENvbnRleHQgcHJvcGVydGllcyBub3cgcmV0dXJuIGZsYWdzIGFuZCBlbnVtcy4KKworLSBJc3N1ZSAjMjM1OTE6IEFkZCBGbGFnLCBJbnRGbGFnLCBhbmQgYXV0bygpIHRvIGVudW0gbW9kdWxlLgorCistIElzc3VlICM0MzMwMjg6IEFkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjQ1OTQ6IFZhbGlkYXRlcyBwZXJzaXN0IHBhcmFtZXRlciB3aGVuIG9wZW5pbmcgTVNJIGRhdGFiYXNlCiAKIC0gSXNzdWUgIzE3NTgyOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93cyBwcmVzZXJ2ZXMgd2hpdGVzcGFjZXMgaW4gYXR0cmlidXRlcwpAQCAtMzE3LDkgKzEwMDgsMTkgQEAKIC0gSXNzdWUgIzI4MDQ3OiBGaXhlZCBjYWxjdWxhdGlvbiBvZiBsaW5lIGxlbmd0aCB1c2VkIGZvciB0aGUgYmFzZTY0IENURQogICBpbiB0aGUgbmV3IGVtYWlsIHBvbGljaWVzLgogCistIElzc3VlICMyNzU3NjogRml4IGNhbGwgb3JkZXIgaW4gT3JkZXJlZERpY3QuX19pbml0X18oKS4KKworLSBlbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvciBub3cgc3VwcG9ydHMgdGhlIHBvbGljeSBrZXl3b3JkLgorCistIElzc3VlICMyODAyNzogUmVtb3ZlIHVuZG9jdW1lbnRlZCBtb2R1bGVzIGZyb20gYGBMaWIvcGxhdC0qYGA6IElOLCBDRFJPTSwKKyAgRExGQ04sIFRZUEVTLCBDRElPLCBhbmQgU1RST1BUUy4KKwogLSBJc3N1ZSAjMjc0NDU6IERvbid0IHBhc3Mgc3RyKF9jaGFyc2V0KSB0byBNSU1FVGV4dC5zZXRfcGF5bG9hZCgpLgogICBQYXRjaCBieSBDbGF1ZGUgUGFyb3ouCiAKKy0gSXNzdWUgIzI0Mjc3OiBUaGUgbmV3IGVtYWlsIEFQSSBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwsIGFuZCB0aGUgZG9jcworICBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBlbXBoYXNpemUgdGhlIG5ldyBBUEkuCisKIC0gSXNzdWUgIzIyNDUwOiB1cmxsaWIgbm93IGluY2x1ZGVzIGFuICJBY2NlcHQ6ICovKiIgaGVhZGVyIGFtb25nIHRoZQogICBkZWZhdWx0IGhlYWRlcnMuICBUaGlzIG1ha2VzIHRoZSByZXN1bHRzIG9mIFJFU1QgQVBJIHJlcXVlc3RzIG1vcmUKICAgY29uc2lzdGVudCBhbmQgcHJlZGljdGFibGUgZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgpAQCAtMzI4LDYgKzEwMjksMTAgQEAKICAgYmV0d2VlbiBydW5zIGdpdmVuIHRoZSBzYW1lIEdyYW1tYXIudHh0IGlucHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGhhc2gKICAgcmFuZG9taXphdGlvbiBzZXR0aW5nLgogCistIElzc3VlICMyODAwNTogQWxsb3cgSW1wb3J0RXJyb3JzIGluIGVuY29kaW5nIGltcGxlbWVudGF0aW9uIHRvIHByb3BhZ2F0ZS4KKworLSBJc3N1ZSAjMjY2Njc6IFN1cHBvcnQgcGF0aC1saWtlIG9iamVjdHMgaW4gaW1wb3J0bGliLnV0aWwuCisKIC0gSXNzdWUgIzI3NTcwOiBBdm9pZCB6ZXJvLWxlbmd0aCBtZW1jcHkoKSBldGMgY2FsbHMgd2l0aCBudWxsIHNvdXJjZQogICBwb2ludGVycyBpbiB0aGUgImN0eXBlcyIgYW5kICJhcnJheSIgbW9kdWxlcy4KIApAQCAtMzM1LDE5ICsxMDQwLDcyIEBACiAgIGNoYXJhY3RlcnMsIG5vdCBvbiBhcmJpdHJhcnkgdW5pY29kZSBsaW5lIGJyZWFrcy4gIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbgogICBIVFRQIGhlYWRlciBwYXJzaW5nLgogCistIElzc3VlIDI3MzMxOiBUaGUgZW1haWwubWltZSBjbGFzc2VzIG5vdyBhbGwgYWNjZXB0IGFuIG9wdGlvbmFsIHBvbGljeSBrZXl3b3JkLgorCiAtIElzc3VlIDI3OTg4OiBGaXggZW1haWwgaXRlcl9hdHRhY2htZW50cyBpbmNvcnJlY3QgbXV0YXRpb24gb2YgcGF5bG9hZCBsaXN0LgogCistIElzc3VlICMxNjExMzogQWRkIFNIQS0zIGFuZCBTSEFLRSBzdXBwb3J0IHRvIGhhc2hsaWIgbW9kdWxlLgorCistIEVsaW1pbmF0ZSBhIHRhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUgd2FybmluZyBpbiBfc2Nwcm94eS5jLgorCistIElzc3VlICMyNzc3NjogVGhlIDpmdW5jOmBvcy51cmFuZG9tYCBmdW5jdGlvbiBkb2VzIG5vdyBibG9jayBvbiBMaW51eCAzLjE3CisgIGFuZCBuZXdlciB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlCisgIHRoZSBzZWN1cml0eS4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgOnBlcDpgNTI0YC4KKworLSBJc3N1ZSAjMjc3Nzg6IEV4cG9zZSB0aGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYXMgYSBuZXcKKyAgOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKIC0gSXNzdWUgIzI3NjkxOiBGaXggc3NsIG1vZHVsZSdzIHBhcnNpbmcgb2YgR0VOX1JJRCBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUKICAgZmllbGRzIGluIFguNTA5IGNlcnRzLgogCistIElzc3VlICMxODg0NDogQWRkIHJhbmRvbS5jaG9pY2VzKCkuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgYWJvdXQgdHJ1bmNhdGVkIHBpY2tsZSBkYXRhIGluCisgIEMgaW1wbGVtZW50YXRpb24gb2YgdW5waWNrbGVyLiAgVW5waWNrbGluZ0Vycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZgorICBBdHRyaWJ1dGVFcnJvciBhbmQgVmFsdWVFcnJvciBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMyNjc5ODogQWRkIEJMQUtFMiAoYmxha2UyYiBhbmQgYmxha2UycykgdG8gaGFzaGxpYi4KKworLSBJc3N1ZSAjMjYwMzI6IE9wdGltaXplZCBnbG9iYmluZyBpbiBwYXRobGliIGJ5IHVzaW5nIG9zLnNjYW5kaXIoKTsgaXQgaXMgbm93CisgIGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NTk2OiBPcHRpbWl6ZWQgZ2xvYigpIGFuZCBpZ2xvYigpIGZ1bmN0aW9ucyBpbiB0aGUKKyAgZ2xvYiBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjc5Mjg6IEFkZCBzY3J5cHQgKHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uKSB0bworICBoYXNobGliIG1vZHVsZSAocmVxdWlyZXMgT3BlblNTTCAxLjEuMCkuCisKIC0gSXNzdWUgIzI3ODUwOiBSZW1vdmUgM0RFUyBmcm9tIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0IHRvIGNvdW50ZXIKICAgbWVhc3VyZSBzd2VldDMyIGF0dGFjayAoQ1ZFLTIwMTYtMjE4MykuCiAKIC0gSXNzdWUgIzI3NzY2OiBBZGQgQ2hhQ2hhMjAgUG9seTEzMDUgdG8gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwZXIgbGlzdC4KICAgKFJlcXVpcmVkIE9wZW5TU0wgMS4xLjAgb3IgTGlicmVTU0wpLgogCistIElzc3VlICMyNTM4NzogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdpbnNvdW5kLk1lc3NhZ2VCZWVwLgorCistIElzc3VlICMyNzg2NjogQWRkIFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKSBtZXRob2QgdG8gZ2V0IGEgbGlzdCBvZiBhbGwKKyAgZW5hYmxlZCBjaXBoZXJzLgorCistIElzc3VlICMyNzc0NDogQWRkIEFGX0FMRyAoTGludXggS2VybmVsIGNyeXB0bykgdG8gc29ja2V0IG1vZHVsZS4KKwogLSBJc3N1ZSAjMjY0NzA6IFBvcnQgc3NsIGFuZCBoYXNobGliIG1vZHVsZSB0byBPcGVuU1NMIDEuMS4wLgogCistIElzc3VlICMxMTYyMDogRml4IHN1cHBvcnQgZm9yIFNORF9NRU1PUlkgaW4gd2luc291bmQuUGxheVNvdW5kLiAgQmFzZWQgb24gYQorICBwYXRjaCBieSBUaW0gTGVzaGVyLgorCistIElzc3VlICMxMTczNDogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGhhbGYtcHJlY2lzaW9uIGZsb2F0cyB0byB0aGUKKyAgc3RydWN0IG1vZHVsZS4gQmFzZWQgb24gYSBwYXRjaCBieSBFbGkgU3RldmVucy4KKworLSBJc3N1ZSAjMjc5MTk6IERlcHJlY2F0ZWQgYGBleHRyYV9wYXRoYGAgZGlzdHJpYnV0aW9uIG9wdGlvbiBpbiBkaXN0dXRpbHMKKyAgcGFja2FnaW5nLgorCistIElzc3VlICMyMzIyOTogQWRkIG5ldyBgYGNtYXRoYGAgY29uc3RhbnRzOiBgYGNtYXRoLmluZmBgIGFuZCBgYGNtYXRoLm5hbmBgIHRvCisgIG1hdGNoIGBgbWF0aC5pbmZgYCBhbmQgYGBtYXRoLm5hbmBgLCBhbmQgYWxzbyBgYGNtYXRoLmluZmpgYCBhbmQKKyAgYGBjbWF0aC5uYW5qYGAgdG8gbWF0Y2ggdGhlIGZvcm1hdCB1c2VkIGJ5IGNvbXBsZXggcmVwci4KKworLSBJc3N1ZSAjMjc4NDI6IFRoZSBjc3YuRGljdFJlYWRlciBub3cgcmV0dXJucyByb3dzIG9mIHR5cGUgT3JkZXJlZERpY3QuCisgIChDb250cmlidXRlZCBieSBTdGV2ZSBIb2xkZW4uKQorCiAtIFJlbW92ZSBzdXBwb3J0IGZvciBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRvIG9zLmFjY2Vzcy4gSXQgbmV2ZXIgd29ya2VkIGJ1dAogICBwcmV2aW91c2x5IGRpZG4ndCByYWlzZS4KIApAQCAtMzY5LDI1ICsxMTI3LDI3NiBAQAogLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCiAgIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KIAorLSBJc3N1ZSAjMTIzMTk6IENodW5rZWQgdHJhbnNmZXIgZW5jb2Rpbmcgc3VwcG9ydCBhZGRlZCB0bworICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiByZXF1ZXN0cy4gIFRoZQorICB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyIGNsYXNzIGRvZXMgbm90IGVuZm9yY2UgYSBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgYW55IG1vcmUuICBJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHksIGJ1dCBubworICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIHRoZSBsaWJyYXJ5IG5vdyBmYWxscyBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyLQorICBlbmNvZGluZy4KKwogLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nOgogICAtIENvbGxlY3Rpb24gKG9ubHkgZm9yIDMuNikgKElzc3VlICMyNzU5OCkKICAgLSBBZGQgRnJvemVuU2V0IHRvIF9fYWxsX18gKHVwc3RyZWFtICMyNjEpCiAgIC0gZml4IGNyYXNoIGluIF9nZXRfdHlwZV92YXJzKCkgKHVwc3RyZWFtICMyNTkpCiAgIC0gUmVtb3ZlIHRoZSBkaWN0IGNvbnN0cmFpbnQgaW4gRm9yd2FyZFJlZi5fZXZhbF90eXBlICh1cHN0cmVhbSAjMjUyKQogCistIElzc3VlICMyNzgzMjogTWFrZSBgYF9ub3JtYWxpemVgYCBwYXJhbWV0ZXIgdG8gYGBGcmFjdGlvbmBgIGNvbnN0dWN0b3IKKyAga2V5d29yZC1vbmx5LCBzbyB0aGF0IGBgRnJhY3Rpb24oMiwgMywgNClgYCBub3cgcmFpc2VzIGBgVHlwZUVycm9yYGAuCisKIC0gSXNzdWUgIzI3NTM5OiBGaXggdW5ub3JtYWxpc2VkIGBgRnJhY3Rpb24uX19wb3dfX2BgIHJlc3VsdCBpbiB0aGUgY2FzZQogICBvZiBuZWdhdGl2ZSBleHBvbmVudCBhbmQgbmVnYXRpdmUgYmFzZS4KIAogLSBJc3N1ZSAjMjE3MTg6IGN1cnNvci5kZXNjcmlwdGlvbiBpcyBub3cgYXZhaWxhYmxlIGZvciBxdWVyaWVzIHVzaW5nIENURXMuCiAKKy0gSXNzdWUgIzI3ODE5OiBJbiBkaXN0dXRpbHMgc2Rpc3RzLCBzaW1wbHkgcHJvZHVjZSB0aGUgImd6dGFyIiAoZ3ppcHBlZCB0YXIKKyAgZm9ybWF0KSBkaXN0cmlidXRpb25zIG9uIGFsbCBwbGF0Zm9ybXMgdW5sZXNzICJmb3JtYXRzIiBpcyBzdXBwbGllZC4KKwogLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAogICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgogCistIElzc3VlICM5OTk4OiBPbiBMaW51eCwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG5vdyBsb29rcyBpbiBMRF9MSUJSQVJZX1BBVEgKKyAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzI3NTczOiBleGl0IG1lc3NhZ2UgZm9yIGNvZGUuaW50ZXJhY3QgaXMgbm93IGNvbmZpZ3VyYWJsZS4KKworLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCisgIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICM2NzY2OiBEaXN0cmlidXRlZCByZWZlcmVuY2UgY291bnRpbmcgYWRkZWQgdG8gbXVsdGlwcm9jZXNzaW5nCisgIHRvIHN1cHBvcnQgbmVzdGluZyBvZiBzaGFyZWQgdmFsdWVzIC8gcHJveHkgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCisgIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgorCistIGFzeW5jaW86IEFkZCBzZXRfcHJvdG9jb2wgLyBnZXRfcHJvdG9jb2wgdG8gVHJhbnNwb3J0cy4KKworLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKworLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCistIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCisKKy0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CisgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjY5MDA6IEV4Y2x1ZGVkIHVuZGVyc2NvcmVkIG5hbWVzIGFuZCBvdGhlciBwcml2YXRlIEFQSSBmcm9tIGxpbWl0ZWQgQVBJLgorCistIElzc3VlICMyNjAyNzogQWRkIHN1cHBvcnQgZm9yIHBhdGgtbGlrZSBvYmplY3RzIGluIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpICYKKyAgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjc0Mjc6IEFkZGl0aW9uYWwgdGVzdHMgZm9yIHRoZSBtYXRoIG1vZHVsZS4gUGF0Y2ggYnkgRnJhbmNpc2NvIENvdXpvLgorCistIElzc3VlICMyNzk1MzogU2tpcCBtYXRoIGFuZCBjbWF0aCB0ZXN0cyB0aGF0IGZhaWwgb24gT1MgWCAxMC40IGR1ZSB0byBhCisgIHBvb3IgbGlibSBpbXBsZW1lbnRhdGlvbiBvZiB0YW4uCisKKy0gSXNzdWUgIzI2MDQwOiBJbXByb3ZlIHRlc3RfbWF0aCBhbmQgdGVzdF9jbWF0aCBjb3ZlcmFnZSBhbmQgcmlnb3VyLiBQYXRjaCBieQorICBKZWZmIEFsbGVuLgorCistIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCisgIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQorCistIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKKworLSBJc3N1ZSAjMjc5NzY6IERlcHJlY2F0ZSBidWlsZGluZyBfY3R5cGVzIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgb24KKyAgbm9uLU9TWCBVTklYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKKyAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KKyAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKKyAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KKworLSBJc3N1ZSAjMjE1OTA6IFN1cHBvcnQgZm9yIERUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jlcy4KKworLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbGllcyBQR08gdG8gdGhlIGJ1aWx0LWluIG1vZHVsZXMuCisKKy0gSXNzdWUgIzI2NTM5OiBBZGQgdGhlIC0td2l0aC1vcHRpbWl6YXRpb25zIGZsYWcgdG8gdHVybiBvbiBMVE8gYW5kIFBHTyBidWlsZAorICBzdXBwb3J0IHdoZW4gYXZhaWxhYmxlLgorCistIElzc3VlICMyNzkxNzogU2V0IHBsYXRmb3JtIHRyaXBsZXRzIGZvciBBbmRyb2lkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjU4MjU6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIHRoZSAkKExJQlBMKSBpbnN0YWxsYXRpb24gcGF0aCBvbiBBSVguCisgIFRoaXMgcGF0aCB3YXMgY2hhbmdlZCBpbiAzLjJhNC4KKworLSBVcGRhdGUgT1MgWCBpbnN0YWxsZXIgdG8gdXNlIFNRTGl0ZSAzLjE0LjEgYW5kIFhaIDUuMi4yLgorCistIElzc3VlICMyMTEyMjogRml4IExUTyBidWlsZHMgb24gT1MgWC4KKworLSBJc3N1ZSAjMTcxMjg6IEJ1aWxkIE9TIFggaW5zdGFsbGVyIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgT3BlblNTTC4KKyAgQWxzbyBwcm92aWRlIGEgc2FtcGxlIEluc3RhbGwgQ2VydGlmaWNhdGVzIGNvbW1hbmQgc2NyaXB0IHRvIGluc3RhbGwgYQorICBzZXQgb2Ygcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgY2VydGlmaSBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCisgIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCisgIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4MDY1OiBVcGRhdGUgeHogZGVwZW5kZW5jeSB0byA1LjIuMiBhbmQgYnVpbGQgaXQgZnJvbSBzb3VyY2UuCisKKy0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KKyAgaW5zdGFsbC4KKworLSBJc3N1ZSAjMTYwMjogV2luZG93cyBjb25zb2xlIGRvZXNuJ3QgaW5wdXQgb3IgcHJpbnQgVW5pY29kZSAoUEVQIDUyOCkKKworLSBJc3N1ZSAjMjc3ODE6IENoYW5nZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBvbiBXaW5kb3dzIHRvIFVURi04IChQRVAgNTI5KQorCistIElzc3VlICMyNzczMTogT3B0LW91dCBvZiBNQVhfUEFUSCBvbiBXaW5kb3dzIDEwCisKKy0gSXNzdWUgIzYxMzU6IEFkZHMgZW5jb2RpbmcgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIHRvIHN1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzI3OTU5OiBBZGRzIG9lbSBlbmNvZGluZywgYWxpYXMgYW5zaSB0byBtYmNzLCBtb3ZlIGFsaWFzbWJjcyB0bworICBjb2RlYyBsb29rdXAuCisKKy0gSXNzdWUgIzI3OTgyOiBUaGUgZnVuY3Rpb25zIG9mIHRoZSB3aW5zb3VuZCBtb2R1bGUgbm93IGFjY2VwdCBrZXl3b3JkCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjAzNjY6IEJ1aWxkIGZ1bGwgdGV4dCBzZWFyY2ggc3VwcG9ydCBpbnRvIFNRTGl0ZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNzc1NjogQWRkcyBuZXcgaWNvbnMgZm9yIFB5dGhvbiBmaWxlcyBhbmQgcHJvY2Vzc2VzIG9uIFdpbmRvd3MuCisgIERlc2lnbnMgYnkgQ2hlcnJ5IFdhbmcuCisKKy0gSXNzdWUgIzI3ODgzOiBVcGRhdGUgc3FsaXRlIHRvIDMuMTQuMS4wIG9uIFdpbmRvd3MuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDgtMTUqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzcwNDogT3B0aW1pemVkIGNyZWF0aW5nIGJ5dGVzIGFuZCBieXRlYXJyYXkgZnJvbSBieXRlLWxpa2Ugb2JqZWN0cworICBhbmQgaXRlcmFibGVzLiAgU3BlZWQgdXAgdG8gMyB0aW1lcyBmb3Igc2hvcnQgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIE5hb2tpIEluYWRhLgorCistIElzc3VlICMyNjgyMzogTGFyZ2Ugc2VjdGlvbnMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcmUgbm93CisgIGFiYnJldmlhdGVkIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiBieSB0aGUgYnVpbHRpbgorICB0cmFjZWJhY2sgcmVuZGVyaW5nLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU3NDogRGVjcmVhc2VkIGFuIG92ZXJoZWFkIG9mIHBhcnNpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zCisgIGltcGxlbWVudGVkIHdpdGggdXNpbmcgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMyMjU1NzogTm93IGltcG9ydGluZyBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZXMgaXMgdXAgdG8gMi41IHRpbWVzCisgIGZhc3Rlci4KKworLSBJc3N1ZSAjMTc1OTY6IEluY2x1ZGUgPHdpbmNyeXB0Lmg+IHRvIGhlbHAgd2l0aCBNaW4gR1cgYnVpbGRpbmcuCisKKy0gSXNzdWUgIzE3NTk5OiBPbiBXaW5kb3dzLCByZW5hbWUgdGhlIHByaXZhdGVseSBkZWZpbmVkIFJFUEFSU0VfREFUQV9CVUZGRVIKKyAgc3RydWN0dXJlIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBNaW4gR1cuCisKKy0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCisgIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBsaXN0IGFuZCB0dXBsZSBvcGVyYXRpb25zLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscworICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGEgY3Jhc2ggaWYKKyAgcmFpc2UgYSB3YXJuaW5nIGFib3V0IHVuYWJsaW5nIHRvIHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yCisgIF9fcGFja2FnZV9fLgorCistIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgorICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgorCistIElzc3VlICMyNzM2NjogSW1wbGVtZW50ZWQgUEVQIDQ4NyAoU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uKS4KKyAgVXBvbiBzdWJjbGFzc2luZywgdGhlIF9faW5pdF9zdWJjbGFzc19fIGNsYXNzbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgYmFzZQorICBjbGFzcy4gRGVzY3JpcHRvcnMgYXJlIGluaXRpYWxpemVkIHdpdGggX19zZXRfbmFtZV9fIGFmdGVyIGNsYXNzIGNyZWF0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI2MDI3LCAjMjc1MjQ6IEFkZCBQRVAgNTE5L19fZnNwYXRoX18oKSBzdXBwb3J0IHRvIHRoZSBvcyBhbmQgb3MucGF0aAorICBtb2R1bGVzLiBJbmNsdWRlcyBjb2RlIGZyb20gSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3NTk4OiBBZGQgQ29sbGVjdGlvbnMgdG8gY29sbGVjdGlvbnMuYWJjLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyLgorCistIElzc3VlICMyNTk1ODogU3VwcG9ydCAiYW50aS1yZWdpc3RyYXRpb24iIG9mIHNwZWNpYWwgbWV0aG9kcyBmcm9tCisgIHZhcmlvdXMgQUJDcywgbGlrZSBfX2hhc2hfXywgX19pdGVyX18gb3IgX19sZW5fXy4gIEFsbCB0aGVzZSAoYW5kCisgIHNldmVyYWwgbW9yZSkgY2FuIGJlIHNldCB0byBOb25lIGluIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCB0aGUKKyAgYmVoYXZpb3Igd2lsbCBiZSBhcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGF0IGFsbC4KKyAgKFByZXZpb3VzbHksIHRoaXMgbWVjaGFuaXNtIGV4aXN0ZWQgb25seSBmb3IgX19oYXNoX18sIHRvIG1ha2UKKyAgbXV0YWJsZSBjbGFzc2VzIHVuaGFzaGFibGUuKSAgQ29kZSBjb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQKKyAgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMxNjc2NDogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmRlY29tcHJlc3MoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzczNjogUHJldmVudCBzZWdmYXVsdCBhZnRlciBpbnRlcnByZXRlciByZS1pbml0aWFsaXphdGlvbiBkdWUKKyAgdG8gcmVmIGNvdW50IHByb2JsZW0gaW50cm9kdWNlZCBpbiBjb2RlIGZvciBJc3N1ZSAjMjcwMzggaW4gMy42LjBhMy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1NjI4OiAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBmb3IKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMTIzNDU6IEFkZCBtYXRoZW1hdGljYWwgY29uc3RhbnQgdGF1IHRvIG1hdGggYW5kIGNtYXRoLiBTZWUgYWxzbworICBQRVAgNjI4LgorCistIElzc3VlICMyNjgyMzogdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mb3JtYXQgbm93IGFiYnJldmlhdGVzIGxhcmdlIHNlY3Rpb25zIG9mCisgIHJlcGVhdGVkIGxpbmVzIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiAodGhpcyBjaGFuZ2UKKyAgdGhlbiBmdXJ0aGVyIGFmZmVjdHMgb3RoZXIgdHJhY2ViYWNrIGRpc3BsYXkgb3BlcmF0aW9ucyBpbiB0aGUgbW9kdWxlKS4gUGF0Y2gKKyAgYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc2NjQ6IEFkZCB0byBjb25jdXJyZW50LmZ1dHVyZXMudGhyZWFkLlRocmVhZFBvb2xFeGVjdXRvcigpCisgIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSB0aHJlYWQgbmFtZSBwcmVmaXguCisKKy0gSXNzdWUgIzI3MTgxOiBBZGQgZ2VvbWV0cmljX21lYW4gYW5kIGhhcm1vbmljX21lYW4gdG8gc3RhdGlzdGljcyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTczOiBjb2RlLmludGVyYWN0IG5vdyBwcmludHMgYW4gbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKKy0gSXNzdWUgIzY0MjI6IEFkZCBhdXRvcmFuZ2UgbWV0aG9kIHRvIHRpbWVpdC5UaW1lciBvYmplY3RzLgorCiAtIElzc3VlICMyNzc3MzogQ29ycmVjdCBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGVycm9ycyBzZXJ2ZXJfaG9zdG5hbWUgaW4KICAgX3NzbC53cmFwX3NvY2tldCgpLgogCiAtIElzc3VlICMyNjc1MDogdW5pdHRlc3QubW9jay5jcmVhdGVfYXV0b3NwZWMoKSBub3cgd29ya3MgcHJvcGVybHkgZm9yCi0gIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4KKyAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLiAgUmVtb3ZlcyB0aGUgbmV2ZXIKKyAgcHVibGljbHkgdXNlZCwgbmV2ZXIgZG9jdW1lbnRlZCB1bml0dGVzdC5tb2NrLkRlc2NyaXB0b3JUeXBlcyB0dXBsZS4KKworLSBJc3N1ZSAjMjY3NTQ6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGggaW4gY29tcGlsZSgpIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY4MDA6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGhzIGluIG9zIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY5ODE6IEFkZCBfb3JkZXJfIGNvbXBhdGliaWxpdHkgc2hpbSB0byBlbnVtLkVudW0gZm9yCisgIFB5dGhvbiAyLzMgY29kZSBiYXNlcy4KKworLSBJc3N1ZSAjMjc2NjE6IEFkZGVkIHR6aW5mbyBrZXl3b3JkIGFyZ3VtZW50IHRvIGRhdGV0aW1lLmNvbWJpbmUuCiAKIC0gSW4gdGhlIGN1cnNlcyBtb2R1bGUsIHJhaXNlIGFuIGVycm9yIGlmIHdpbmRvdy5nZXRzdHIoKSBvciB3aW5kb3cuaW5zdHIoKSBpcwogICBwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KQEAgLTQwNiw2ICsxNDE1LDkgQEAKICAgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2ggaW5kaWNhdGVzCiAgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KIAorLSBJc3N1ZSAjNzA2MzogUmVtb3ZlIGRlYWQgY29kZSBmcm9tIHRoZSAiYXJyYXkiIG1vZHVsZSdzIHNsaWNlIGhhbmRsaW5nLgorICBQYXRjaCBieSBDaHVjay4KKwogLSBJc3N1ZSAjMjc2NTY6IERvIG5vdCBhc3N1bWUgc2NoZWQuaCBkZWZpbmVzIGFueSBTQ0hFRF8qIGNvbnN0YW50cy4KIAogLSBJc3N1ZSAjMjcxMzA6IEluIHRoZSAiemxpYiIgbW9kdWxlLCBmaXggaGFuZGxpbmcgb2YgbGFyZ2UgYnVmZmVycwpAQCAtNDEzLDYgKzE0MjUsMTUgQEAKICAgd2VyZSBsaW1pdGVkIHRvIDQgR2lCLCBhbmQgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb3BlcmF0aW9ucyBkaWQgbm90CiAgIHByb3Blcmx5IGhhbmRsZSByZXN1bHRzIG9mIDQgR2lCLgogCistIElzc3VlICMyNDc3MzogSW1wbGVtZW50ZWQgUEVQIDQ5NSAoTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbikuCisKKy0gRXhwb3NlIHRoZSBFUE9MTEVYQ0xVU0lWRSBjb25zdGFudCAod2hlbiBpdCBpcyBkZWZpbmVkKSBpbiB0aGUgc2VsZWN0IG1vZHVsZS4KKworLSBJc3N1ZSAjMjc1Njc6IEV4cG9zZSB0aGUgRVBPTExSREhVUCBhbmQgUE9MTFJESFVQIGNvbnN0YW50cyBpbiB0aGUgc2VsZWN0CisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludCBuZWdhdGlvbiBvdmVyZmxvdyBpbiB0aGUgImF1ZGlvb3AiIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc1MzM6IFJlbGVhc2UgR0lMIGluIG50Ll9pc2RpcgogCiAtIElzc3VlICMxNzcxMTogRml4ZWQgdW5waWNrbGluZyBieSB0aGUgcGVyc2lzdGVudCBJRCB3aXRoIHByb3RvY29sIDAuCkBAIC00MjAsNiArMTQ0MSwxMTMgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDctMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzQ3MzogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBieXRlcyBhbmQgYnl0ZWFycmF5CisgIGNvbmNhdGVuYXRpb25zLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzIzMDM0OiBUaGUgb3V0cHV0IG9mIGEgc3BlY2lhbCBQeXRob24gYnVpbGQgd2l0aCBkZWZpbmVkIENPVU5UX0FMTE9DUywKKyAgU0hPV19BTExPQ19DT1VOVCBvciBTSE9XX1RSQUNLX0NPVU5UIG1hY3JvcyBpcyBub3cgb2ZmIGJ5ICBkZWZhdWx0LiAgSXQgY2FuCisgIGJlIHJlLWVuYWJsZWQgdXNpbmcgdGhlICItWCBzaG93YWxsb2Njb3VudCIgb3B0aW9uLiAgSXQgbm93IG91dHB1dHMgdG8gc3RkZXJyCisgIGluc3RlYWQgb2Ygc3Rkb3V0LgorCistIElzc3VlICMyNzQ0MzogX19sZW5ndGhfaGludF9fKCkgb2YgYnl0ZWFycmF5IGl0ZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEKKyAgbmVnYXRpdmUgaW50ZWdlciBmb3IgYSByZXNpemVkIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjMjcwMDc6IFRoZSBmcm9taGV4KCkgY2xhc3MgbWV0aG9kcyBvZiBieXRlcyBhbmQgYnl0ZWFycmF5IHN1YmNsYXNzZXMKKyAgbm93IHJldHVybiBhbiBpbnN0YW5jZSBvZiBjb3JyZXNwb25kaW5nIHN1YmNsYXNzLgorCitMaWJyYXJ5CistLS0tLS0tCisKIC0gSXNzdWUgIzI2ODQ0OiBGaXggZXJyb3IgbWVzc2FnZSBmb3IgaW1wLmZpbmRfbW9kdWxlKCkgdG8gcmVmZXIgdG8gJ3BhdGgnCiAgIGluc3RlYWQgb2YgJ25hbWUnLiBQYXRjaCBieSBMZXYgTWF4aW1vdi4KIApAQCAtNDMwLDIyICsxNTU4LDU0IEBACiAgIGNvbmZpcm1pbmcgdGhlIG5ldHNjYXBlIGNvb2tpZSBmb3JtYXQgYW5kIG1ha2luZyBpdCBjb25zaXN0ZW50IHdpdGgKICAgZG9jdW1lbnRhdGlvbi4KIAotLSBJc3N1ZSAjMjY2NjQ6IEZpeCBhY3RpdmF0ZS5maXNoIGJ5IHJlbW92aW5nIG1pcy11c2Ugb2YgYGAkYGAuCistIElzc3VlICMyMTcwODogRGVwcmVjYXRlZCBkYm0uZHVtYiBiZWhhdmlvciB0aGF0IGRpZmZlcnMgZnJvbSBjb21tb24gZGJtCisgIGJlaGF2aW9yOiBjcmVhdGluZyBhIGRhdGFiYXNlIGluICdyJyBhbmQgJ3cnIG1vZGVzIGFuZCBtb2RpZnlpbmcgYSBkYXRhYmFzZQorICBpbiAncicgbW9kZS4KIAotLSBJc3N1ZSAjMjIxMTU6IEZpeGVkIHRyYWNpbmcgVGtpbnRlciB2YXJpYWJsZXM6IHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nCi0gIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93IGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZgotICBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCistIElzc3VlICMyNjcyMTogQ2hhbmdlIHRoZSBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGUgYXR0cmlidXRlCisgIHRvIGltcGxlbWVudCBCdWZmZXJlZElPQmFzZS4gSW4gcGFydGljdWxhciwgdGhlIHdyaXRlKCkgbWV0aG9kIG5vIGxvbmdlcgorICBkb2VzIHBhcnRpYWwgd3JpdGVzLgogCi0tIEZpeCBhIHNjb3BpbmcgaXNzdWUgaW4gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlciB3aGljaCB0cmlnZ2VyZWQgYW4KLSAgVW5ib3VuZExvY2FsRXJyb3Igd2hlbiBsYXp5LWxvYWRpbmcgYSBtb2R1bGUgdGhhdCB3YXMgYWxyZWFkeSBwdXQgaW50bwotICBzeXMubW9kdWxlcy4KKy0gSXNzdWUgIzIyMTE1OiBBZGRlZCBtZXRob2RzIHRyYWNlX2FkZCwgdHJhY2VfcmVtb3ZlIGFuZCB0cmFjZV9pbmZvIGluIHRoZQorICB0a2ludGVyLlZhcmlhYmxlIGNsYXNzLiAgVGhleSByZXBsYWNlIG9sZCBtZXRob2RzIHRyYWNlX3ZhcmlhYmxlLCB0cmFjZSwKKyAgdHJhY2VfdmRlbGV0ZSBhbmQgdHJhY2VfdmluZm8gdGhhdCB1c2Ugb2Jzb2xldGUgVGNsIGNvbW1hbmRzIGFuZCBtaWdodAorICBub3Qgd29yayBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgVGNsLiAgRml4ZWQgb2xkIHRyYWNpbmcgbWV0aG9kczoKKyAgdHJhY2VfdmRlbGV0ZSgpIHdpdGggd3JvbmcgbW9kZSBubyBsb25nZXIgYnJlYWsgdHJhY2luZywgdHJhY2VfdmluZm8oKSBub3cKKyAgYWx3YXlzIHJldHVybnMgYSBsaXN0IG9mIHBhaXJzIG9mIHN0cmluZ3MsIHRyYWNpbmcgaW4gdGhlICJ1IiBtb2RlIG5vdyB3b3Jrcy4KKworLSBJc3N1ZSAjMjYyNDM6IE9ubHkgdGhlIGxldmVsIGFyZ3VtZW50IHRvIHpsaWIuY29tcHJlc3MoKSBpcyBrZXl3b3JkIGFyZ3VtZW50CisgIG5vdy4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBwb3NpdGlvbmFsLW9ubHkuCisKKy0gSXNzdWUgIzI3MDM4OiBFeHBvc2UgdGhlIERpckVudHJ5IHR5cGUgYXMgb3MuRGlyRW50cnkuIENvZGUgcGF0Y2ggYnkKKyAgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3MTg2OiBVcGRhdGUgb3MuZnNwYXRoKCkvUHlPU19GU1BhdGgoKSB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mCisgIF9fZnNwYXRoX18oKSB0byBiZSBlaXRoZXIgc3RyIG9yIGJ5dGVzLgorCistIElzc3VlICMxODcyNjogQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdGhlIGR1bXAoKSwgZHVtcHMoKSwKKyAgbG9hZCgpIGFuZCBsb2FkcygpIGZ1bmN0aW9ucyBhbmQgSlNPTkVuY29kZXIgYW5kIEpTT05EZWNvZGVyIGNsYXNzCisgIGNvbnN0cnVjdG9ycyBpbiB0aGUganNvbiBtb2R1bGUgYXJlIG5vdyBrZXl3b3JkLW9ubHkuCisKKy0gSXNzdWUgIzI3MzE5OiBNZXRob2RzIHNlbGVjdGlvbl9zZXQoKSwgc2VsZWN0aW9uX2FkZCgpLCBzZWxlY3Rpb25fcmVtb3ZlKCkKKyAgYW5kIHNlbGVjdGlvbl90b2dnbGUoKSBvZiB0dGsuVHJlZVZpZXcgbm93IGFsbG93IHBhc3NpbmcgbXVsdGlwbGUgaXRlbXMgYXMKKyAgbXVsdGlwbGUgYXJndW1lbnRzIGluc3RlYWQgb2YgcGFzc2luZyB0aGVtIGFzIGEgdHVwbGUuICBEZXByZWNhdGVkCisgIHVuZG9jdW1lbnRlZCBhYmlsaXR5IG9mIGNhbGxpbmcgdGhlIHNlbGVjdGlvbigpIG1ldGhvZCB3aXRoIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjcwNzk6IEZpeGVkIGN1cnNlcy5hc2NpaSBmdW5jdGlvbnMgaXNibGFuaygpLCBpc2NudHJsKCkgYW5kIGlzcHVuY3QoKS4KIAorLSBJc3N1ZSAjMjcyOTQ6IE51bWVyaWNhbCBzdGF0ZSBpbiB0aGUgcmVwciBmb3IgVGtpbnRlciBldmVudCBvYmplY3RzIGlzIG5vdworICByZXByZXNlbnRlZCBhcyBhIGNvbWJpbmF0aW9uIG9mIGtub3duIGZsYWdzLgorCistIElzc3VlICMyNzE3NzogTWF0Y2ggb2JqZWN0cyBpbiB0aGUgcmUgbW9kdWxlIG5vdyBzdXBwb3J0IGluZGV4LWxpa2Ugb2JqZWN0cworICBhcyBncm91cCBpbmRpY2VzLiAgQmFzZWQgb24gcGF0Y2hlcyBieSBKZXJvZW4gRGVtZXllciBhbmQgWGlhbmcgWmhhbmcuCisKIC0gSXNzdWUgIzI2NzU0OiBTb21lIGZ1bmN0aW9ucyAoY29tcGlsZSgpIGV0YykgYWNjZXB0ZWQgYSBmaWxlbmFtZSBhcmd1bWVudAogICBlbmNvZGVkIGFzIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzLiBOb3cgb25seSBzdHJpbmdzIGFuZCBieXRlLWxpa2Ugb2JqZWN0cwogICBhcmUgYWNjZXB0ZWQuCiAKKy0gSXNzdWUgIzI2NTM2OiBzb2NrZXQuaW9jdGwgbm93IHN1cHBvcnRzIFNJT19MT09QQkFDS19GQVNUX1BBVEguIFBhdGNoIGJ5CisgIERhbmllbCBTdG9rZXMuCisKIC0gSXNzdWUgIzI3MDQ4OiBQcmV2ZW50cyBkaXN0dXRpbHMgZmFpbGluZyBvbiBXaW5kb3dzIHdoZW4gZW52aXJvbm1lbnQKICAgdmFyaWFibGVzIGNvbnRhaW4gbm9uLUFTQ0lJIGNoYXJhY3RlcnMKIApAQCAtNDY0LDkgKzE2MjQsMTUgQEAKICAgTGludXguICBUcnVuY2F0ZSBzaXplIHRvIElOVF9NQVggYW5kIGxvb3AgdW50aWwgd2UgY29sbGVjdGVkIGVub3VnaCByYW5kb20KICAgYnl0ZXMsIGluc3RlYWQgb2YgY2FzdGluZyBhIGRpcmVjdGx5IFB5X3NzaXplX3QgdG8gaW50LgogCistIElzc3VlICMxNjg2NDogc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIG5vdyBzdXBwb3J0cyBSRVBMQUNFIHN0YXRlbWVudC4KKyAgSW5pdGlhbCBwYXRjaCBieSBBbGV4IExvcmRUaG9yc2VuLgorCiAtIElzc3VlICMyNjM4NjogRml4ZWQgdHRrLlRyZWVWaWV3IHNlbGVjdGlvbiBvcGVyYXRpb25zIHdpdGggaXRlbSBpZCdzCiAgIGNvbnRhaW5pbmcgc3BhY2VzLgogCistIElzc3VlICM4NjM3OiBIb25vciBhIHBhZ2VyIHNldCBieSB0aGUgZW52IHZhciBNQU5QQUdFUiAoaW4gcHJlZmVyZW5jZSB0bworICBvbmUgc2V0IGJ5IHRoZSBlbnYgdmFyIFBBR0VSKS4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyMjYzNjogQXZvaWQgc2hlbGwgaW5qZWN0aW9uIHByb2JsZW1zIHdpdGgKICAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkuCiAKQEAgLTQ3NywyNjQgKzE2NDMsNDAwIEBACiAtIElzc3VlICMyNzM5MjogQWRkIGxvb3AuY29ubmVjdF9hY2NlcHRlZF9zb2NrZXQoKS4KICAgUGF0Y2ggYnkgSmltIEZ1bHRvbi4KIAotLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCi0gIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgotCi0tIElzc3VlICMyMTIwMTogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgbXVsdGlwcm9jZXNzaW5nIGVycm9yIG1lc3NhZ2UuICBUaGFua3MKLSAgdG8gV29qY2llY2ggV2FsY3phayBmb3IgcGF0Y2guCi0KLS0gSXNzdWUgIzI3NDU2OiBhc3luY2lvOiBTZXQgVENQX05PREVMQVkgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCi0gIFBhdGNoIGJ5IEtldmluIENvbndheS4KLQotLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCi0gIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCi0KLS0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgotICBQYXRjaCBieSBpY2Vib3kuCi0KLS0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgotICBQYXRjaCBieSBJTkFEQSBOYW9raS4KLQotLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCi0KLS0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCi0gIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCi0KLS0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzCi0gIG5vIGxvb3AgYXR0YWNoZWQuCi0gIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgotCi0tIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCi0gIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KLQotLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCi0gIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KLQotLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCi0KLS0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgotCi0tIElzc3VlICMyODM5OTogUmVtb3ZlIFVOSVggc29ja2V0IGZyb20gRlMgYmVmb3JlIGJpbmRpbmcuCi0gIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KLQotLSBJc3N1ZSAjMjc5NzI6IFByb2hpYml0IFRhc2tzIHRvIGF3YWl0IG9uIHRoZW1zZWx2ZXMuCi0KLS0gSXNzdWUgIzI2OTIzOiBGaXggYXN5bmNpby5HYXRoZXIgdG8gcmVmdXNlIGJlaW5nIGNhbmNlbGxlZCBvbmNlIGFsbCAKLSAgY2hpbGRyZW4gYXJlIGRvbmUuCi0gIFBhdGNoIGJ5IEpvaGFubmVzIEVia2UuCi0KLS0gSXNzdWUgIzI2Nzk2OiBEb24ndCBjb25maWd1cmUgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBkZWZhdWx0IAotICB0aHJlYWRwb29sIGV4ZWN1dG9yLgotICBJbml0aWFsIHBhdGNoIGJ5IEhhbnMgTGF3cmVuei4KLQotLSBJc3N1ZSAjMjg2MDA6IE9wdGltaXplIGxvb3AuY2FsbF9zb29uKCkuCi0KLS0gSXNzdWUgIzI4NjEzOiBGaXggZ2V0X2V2ZW50X2xvb3AoKSByZXR1cm4gdGhlIGN1cnJlbnQgbG9vcCBpZiAKLSAgY2FsbGVkIGZyb20gY29yb3V0aW5lcy9jYWxsYmFja3MuCi0KLS0gSXNzdWUgIzI4NjM5OiBGaXggaW5zcGVjdC5pc2F3YWl0YWJsZSB0byBhbHdheXMgcmV0dXJuIGJvb2wKLSAgUGF0Y2ggYnkgSnVzdGluIE1heWZpZWxkLgotCi0tIElzc3VlICMyODY1MjogTWFrZSBsb29wIG1ldGhvZHMgcmVqZWN0IHNvY2tldCBraW5kcyB0aGV5IGRvIG5vdCBzdXBwb3J0LgotCi0tIElzc3VlICMyODY1MzogRml4IGEgcmVmbGVhayBpbiBmdW5jdG9vbHMubHJ1X2NhY2hlLgotCi0tIElzc3VlICMyODcwMzogRml4IGFzeW5jaW8uaXNjb3JvdXRpbmVmdW5jdGlvbiB0byBoYW5kbGUgTW9jayBvYmplY3RzLgotCi0tIElzc3VlICMyNDE0MjogUmVhZGluZyBhIGNvcnJ1cHQgY29uZmlnIGZpbGUgbGVmdCB0aGUgcGFyc2VyIGluIGFuCi0gIGludmFsaWQgc3RhdGUuICBPcmlnaW5hbCBwYXRjaCBieSBGbG9yaWFuIEjDtmNoLgotCi0tIElzc3VlICMyODk5MDogRml4IFNTTCBoYW5naW5nIGlmIGNvbm5lY3Rpb24gaXMgY2xvc2VkIGJlZm9yZSBoYW5kc2hha2UgCi0gIGNvbXBsZXRlZC4KLSAgKFBhdGNoIGJ5IEhvSG8tSG8pCi0KIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgotICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgorLSBJc3N1ZSAjMjc0Nzc6IElETEUgc2VhcmNoIGRpYWxvZ3Mgbm93IHVzZSB0dGsgd2lkZ2V0cy4KIAotLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCiAKLS0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KLQotLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKLSAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KLQotLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCi0gIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQotICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KLQotLSBJc3N1ZSAjMjU1MDc6IElETEUgbm8gbG9uZ2VyIHJ1bnMgYnVnZ3kgY29kZSBiZWNhdXNlIG9mIGl0cyB0a2ludGVyIGltcG9ydHMuCi0gIFVzZXJzIG11c3QgaW5jbHVkZSB0aGUgc2FtZSBpbXBvcnRzIHJlcXVpcmVkIHRvIHJ1biBkaXJlY3RseSBpbiBQeXRob24uCistIElzc3VlICMyNzQ1MjogbWFrZSBjb21tYW5kIGxpbmUgImlkbGUtdGVzdD4gcHl0aG9uIHRlc3RfaGVscC5weSIgd29yay4KKyAgX19maWxlX18gaXMgcmVsYXRpdmUgd2hlbiBweXRob24gaXMgc3RhcnRlZCBpbiB0aGUgZmlsZSdzIGRpcmVjdG9yeS4KIAogLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgogCistIElzc3VlICMyNzM4MDogSURMRTogYWRkIHF1ZXJ5LnB5IHdpdGggYmFzZSBRdWVyeSBkaWFsb2cgYW5kIHR0ayB3aWRnZXRzLgorICBNb2R1bGUgaGFkIHN1YmNsYXNzZXMgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlLCB3aGljaCBhcmUKKyAgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSB1c2VycyBieSBjb25maWdkaWFsb2cgYW5kIGZpbGUgPT5Mb2FkIE1vZHVsZS4KKyAgRWFjaCBzdWJjbGFzcyBoYXMgaXR3IG93biB2YWxpZGl0eSBjaGVja3MuICBVc2luZyBNb2R1bGVOYW1lIGFsbG93cyB1c2VycworICB0byBlZGl0IGJhZCBtb2R1bGUgbmFtZXMgaW5zdGVhZCBvZiBzdGFydGluZyBvdmVyLgorICBBZGQgdGVzdHMgYW5kIGRlbGV0ZSB0aGUgdHdvIGZpbGVzIGNvbWJpbmVkIGludG8gdGhlIG5ldyBvbmUuCisKKy0gSXNzdWUgIzI3MzcyOiBUZXN0X2lkbGUgbm8gbG9uZ2VyIGNoYW5nZXMgdGhlIGxvY2FsZS4KKwogLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCiAKIC0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCiAgIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQogICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0MTM3OiBSdW4gSURMRSwgdGVzdF9pZGxlLCBhbmQgaHRlc3Qgd2l0aCB0a2ludGVyIGRlZmF1bHQgcm9vdAorICBkaXNhYmxlZC4gIEZpeCBjb2RlIGFuZCB0ZXN0cyB0aGF0IGZhaWwgd2l0aCB0aGlzIHJlc3RyaWN0aW9uLiAgRml4IGh0ZXN0cyB0bworICBub3QgY3JlYXRlIGEgc2Vjb25kIGFuZCByZWR1bmRhbnQgcm9vdCBhbmQgbWFpbmxvb3AuCisKKy0gSXNzdWUgIzI3MzEwOiBGaXggSURMRS5hcHAgZmFpbHVyZSB0byBsYXVuY2ggb24gT1MgWCBkdWUgdG8gdmVzdGlnaWFsIGltcG9ydC4KKwogQyBBUEkKIC0tLS0tCiAKLS0gSXNzdWUgIzI4ODA4OiBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygpIG5vdyBuZXZlciByYWlzZXMgZXhjZXB0aW9ucy4KLQogLSBJc3N1ZSAjMjY3NTQ6IFB5VW5pY29kZV9GU0RlY29kZXIoKSBhY2NlcHRlZCBhIGZpbGVuYW1lIGFyZ3VtZW50IGVuY29kZWQgYXMKLSAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGVzLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCisgIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzLiBOb3cgb25seSBzdHJpbmdzIGFuZCBieXRlLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCiAKLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjg1MTM6IERvY3VtZW50ZWQgY29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB6aXBmaWxlLgotCi1UZXN0cworQnVpbGQKIC0tLS0tCiAKLS0gSXNzdWUgIzI4OTUwOiBEaXNhbGxvdyAtajAgdG8gYmUgY29tYmluZWQgd2l0aCAtVC8tbC8tTSBpbiByZWdydGVzdAotICBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCisgIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KIAotLSBJc3N1ZSAjMjg2NjY6IE5vdyB0ZXN0LnN1cHBvcnQucm10cmVlIGlzIGFibGUgdG8gcmVtb3ZlIHVud3JpdGFibGUgb3IKLSAgdW5yZWFkYWJsZSBkaXJlY3Rvcmllcy4KKy0gSXNzdWUgIzI3NDQyOiBFeHBvc2UgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHRoYXQgcHl0aG9uIHdhcyBidWlsdCBhZ2FpbnN0LCBpbgorICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCkgYXMgJ0FORFJPSURfQVBJX0xFVkVMJy4KIAotLSBJc3N1ZSAjMjM4Mzk6IFZhcmlvdXMgY2FjaGVzIG5vdyBhcmUgY2xlYXJlZCBiZWZvcmUgcnVubmluZyBldmVyeSB0ZXN0IGZpbGUuCistIElzc3VlICMyNzQzNDogVGhlIGludGVycHJldGVyIHRoYXQgcnVucyB0aGUgY3Jvc3MtYnVpbGQsIGZvdW5kIGluIFBBVEgsIG11c3QKKyAgbm93IGJlIG9mIHRoZSBzYW1lIGZlYXR1cmUgdmVyc2lvbiAoZS5nLiAzLjYpIGFzIHRoZSBzb3VyY2UgYmVpbmcgYnVpbHQuCiAKLS0gSXNzdWUgIzI4NDA5OiByZWdydGVzdDogZml4IHRoZSBwYXJzZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKy0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgogCi0tIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCi0gIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorLSBJc3N1ZSAjMjM5Njg6IFJlbmFtZSB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IGZyb20gcGxhdC0kKE1BQ0hERVApIHRvCisgIHBsYXQtJChQTEFURk9STV9UUklQTEVUKS4KKyAgUmVuYW1lIHRoZSBjb25maWcgZGlyZWN0b3J5IChMSUJQTCkgZnJvbSBjb25maWctJChMRFZFUlNJT04pIHRvCisgIGNvbmZpZy0kKExEVkVSU0lPTiktJChQTEFURk9STV9UUklQTEVUKS4KKyAgSW5zdGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmYyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgaW50byB0aGUgcGxhdGZvcm0KKyAgZGlyZWN0b3J5IGFuZCByZW5hbWUgaXQgdG8gaW5jbHVkZSB0aGUgQUJJRkxBR1MuCiAKLS0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAotICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorLSBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjc5NTI6IEdldCBUb29scy9zY3JpcHRzL2ZpeGNpZC5weSB3b3JraW5nIHdpdGggUHl0aG9uIDMgYW5kIHRoZQotICBjdXJyZW50ICJyZSIgbW9kdWxlLCBhdm9pZCBpbnZhbGlkIFB5dGhvbiBiYWNrc2xhc2ggZXNjYXBlcywgYW5kIGZpeCBhIGJ1ZwotICBwYXJzaW5nIGVzY2FwZWQgQyBxdW90ZSBzaWducy4KLQogLSBJc3N1ZSAjMjczMzI6IEZpeGVkIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25zCiAgIGdlbmVyYXRlZCBieSBBcmd1bWVudCBDbGluaWMuICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCiAtIElzc3VlICMyNzQxODogRml4ZWQgVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkuCiAKLVdpbmRvd3MKLS0tLS0tLS0KK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKy0gSXNzdWUgIzE5NDg5OiBNb3ZlZCB0aGUgc2VhcmNoIGJveCBmcm9tIHRoZSBzaWRlYmFyIHRvIHRoZSBoZWFkZXIgYW5kIGZvb3RlcgorICBvZiBlYWNoIHBhZ2UuICBQYXRjaCBieSBBbW1hciBBc2thci4KIAotLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCi0gIDY0LWJpdAotCi0tIElzc3VlICMyNTE0NDogRW5zdXJlcyBUYXJnZXREaXIgaXMgc2V0IGJlZm9yZSBjb250aW51aW5nIHdpdGggY3VzdG9tCi0gIGluc3RhbGwuCi0KLS0gSXNzdWUgIzI3NDY5OiBBZGRzIGEgc2hlbGwgZXh0ZW5zaW9uIHRvIHRoZSBsYXVuY2hlciBzbyB0aGF0IGRyYWcgYW5kIGRyb3AKLSAgd29ya3MgY29ycmVjdGx5LgotCi0tIElzc3VlICMyNzMwOTogRW5hYmxlZCBwcm9wZXIgV2luZG93cyBzdHlsZXMgaW4gcHl0aG9uW3ddLmV4ZSBtYW5pZmVzdC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzI5MDgwOiBSZW1vdmVzIGhhcmQgZGVwZW5kZW5jeSBvbiBoZy5leGUgZnJvbSBQQ0J1aWxkL2J1aWxkLmJhdAotCi0tIElzc3VlICMyMzkwMzogQWRkZWQgbWlzc2VkIG5hbWVzIHRvIFBDL3B5dGhvbjMuZGVmLgotCi0tIElzc3VlICMxMDY1NjogRml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIG9uIEFJWC4gIFBhdGNoIGJ5IFRyaXN0YW4gQ2FyZWwgYW5kCi0gIE1pY2hhZWwgSGF1YmVud2FsbG5lci4KLQotLSBJc3N1ZSAjMjYzNTk6IFJlbmFtZSAtLXdpdGgtb3B0aW1pYXRpb25zIHRvIC0tZW5hYmxlLW9wdGltaXphdGlvbnMuCi0KLS0gSXNzdWUgIzI4NDQ0OiBGaXggbWlzc2luZyBleHRlbnNpb25zIG1vZHVsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCi0KLS0gSXNzdWUgIzI4MjQ4OiBVcGRhdGUgV2luZG93cyBidWlsZCBhbmQgT1MgWCBpbnN0YWxsZXJzIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KLQotLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KLSAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCi0gIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKLSAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5Ci0KLS0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCi0gIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCi0gIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCi0gIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCi0KLS0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGxpZXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgotCi0tIElzc3VlICMyNjM1OTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBjb25maWd1cmUgZmxhZy4KLQotLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKLSAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKLQotLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwIGFuZCBsZF9zb19haXgsCi0gIHdoaWNoIGFyZSByZXF1aXJlZCBvbiBBSVguICBUaGlzIHVwZGF0ZXMgcmVmZXJlbmNlcyB0byBhbiBpbnN0YWxsYXRpb24gcGF0aAotICB0aGF0IHdhcyBjaGFuZ2VkIGluIDMuMmE0LCBhbmQgdW5kb2VzIGNoYW5nZWQgcmVmZXJlbmNlcyB0byB0aGUgYnVpbGQgdHJlZQotICB0aGF0IHdlcmUgbWFkZSBpbiAzLjUuMGExLgotCi0tIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQotICBDaGkgSHN1YW4gWWVuLgotCi0tIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKLSAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KLSAgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQotICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KLQotLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KLSAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgotCi0tIElzc3VlICMyODY3NjogUHJldmVudCBtaXNzaW5nICdnZXRlbnRyb3B5JyBkZWNsYXJhdGlvbiB3YXJuaW5nIG9uIG1hY09TLgotICBQYXRjaCBieSBHYXJldGggUmVlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMjYKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgorLSBJc3N1ZSAjMjcyODU6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgdGhlIGRlcHJlY2F0aW9uIG9mIGBgcHl2ZW52YGAKKyAgYW5kIG5vcm1hbGl6ZSBvbiB0aGUgdGVybSAidmlydHVhbCBlbnZpcm9ubWVudCIuIFBhdGNoIGJ5IFN0ZXZlIFBpZXJjeS4KIAogVGVzdHMKIC0tLS0tCiAKLS0gSXNzdWUgIzI2ODY3OiBVYnVudHUncyBvcGVuc3NsIE9QX05PX1NTTHYzIGlzIGZvcmNlZCBvbiBieSBkZWZhdWx0OyBmaXggdGVzdC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGluIGlkbGVsaWIvTkVXUy50eHQgLSBtaW5pbWFsIHBhcnQgZm9yIDMuNS4yLgorLSBJc3N1ZSAjMjcwMjc6IEFkZGVkIHRlc3Quc3VwcG9ydC5pc19hbmRyb2lkIHRoYXQgaXMgVHJ1ZSB3aGVuIHRoaXMgaXMgYW4KKyAgQW5kcm9pZCBidWlsZC4KIAogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMiByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTIKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTMqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyNzA5NTogU2ltcGxpZmllZCBNQUtFX0ZVTkNUSU9OIGFuZCByZW1vdmVkIE1BS0VfQ0xPU1VSRSBvcGNvZGVzLgorICBQYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjcxOTA6IFJhaXNlIE5vdFN1cHBvcnRlZEVycm9yIGlmIHNxbGl0ZTMgaXMgb2xkZXIgdGhhbiAzLjMuMS4KKyAgUGF0Y2ggYnkgRGF2ZSBTYXd5ZXIuCisKKy0gSXNzdWUgIzI3Mjg2OiBGaXhlZCBjb21waWxpbmcgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlLiAgQ2FsbGluZworICBmdW5jdGlvbiB3aXRoIGdlbmVyYWxpemVkIHVucGFja2luZyAoUEVQIDQ0OCkgYW5kIGNvbmZsaWN0aW5nIGtleXdvcmQgbmFtZXMKKyAgY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLgorCistIElzc3VlICMyNzE0MDogQWRkZWQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcGVuKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKIC0gSXNzdWUgIzI3MDY2OiBGaXhlZCBTeXN0ZW1FcnJvciBpZiBhIGN1c3RvbSBvcGVuZXIgKGZvciBvcGVuKCkpIHJldHVybnMgYQogICBuZWdhdGl2ZSBudW1iZXIgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMjY5ODM6IGZsb2F0KCkgbm93IGFsd2F5cyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgZXhhY3QgZmxvYXQuCisgIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgX19mbG9hdF9fIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YKKyAgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQuICBJbiBhIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gdGhpcyBjYW4KKyAgYmUgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzI3MDk3OiBQeXRob24gaW50ZXJwcmV0ZXIgaXMgbm93IGFib3V0IDclIGZhc3RlciBkdWUgdG8gb3B0aW1pemVkCisgIGluc3RydWN0aW9uIGRlY29kaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzI2NjQ3OiBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyMzI3NTogQWxsb3cgYXNzaWduaW5nIHRvIGFuIGVtcHR5IHRhcmdldCBsaXN0IGluIHJvdW5kIGJyYWNrZXRzOgorICAoKSA9IGl0ZXJhYmxlLgorCistIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCisgIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cworICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisKKworTGlicmFyeQorLS0tLS0tLQorCistIENvbW1lbnQgb3V0IHNvY2tldCAoU09fUkVVU0VQT1JUKSBhbmQgcG9zaXggKE9fU0hMT0NLLCBPX0VYTE9DSykgY29uc3RhbnRzCisgIGV4cG9zZWQgb24gdGhlIEFQSSB3aGljaCBhcmUgbm90IGltcGxlbWVudGVkIG9uIEdOVS9IdXJkLiBUaGV5IHdvdWxkIG5vdAorICB3b3JrIGF0IHJ1bnRpbWUgYW55d2F5LgorCistIElzc3VlICMyNzAyNTogR2VuZXJhdGVkIG5hbWVzIGZvciBUa2ludGVyIHdpZGdldHMgYXJlIG5vdyBtb3JlIG1lYW5mdWwKKyAgYW5kIHJlY29nbml6aXJhYmxlLgorCistIElzc3VlICMyNTQ1NTogRml4ZWQgY3Jhc2hlcyBpbiByZXByIG9mIHJlY3Vyc2l2ZSBFbGVtZW50VHJlZS5FbGVtZW50IGFuZAorICBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzLgorCistIElzc3VlICMyNzI5NDogSW1wcm92ZWQgcmVwciBmb3IgVGtpbnRlciBldmVudCBvYmplY3RzLgorCistIElzc3VlICMyMDUwODogSW1wcm92ZSBleGNlcHRpb24gbWVzc2FnZSBvZiBJUHZ7NCw2fU5ldHdvcmsuX19nZXRpdGVtX18uCisgIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCisKKy0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCisgIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20uCisKKy0gSXNzdWUgIzIxMzg2OiBJbXBsZW1lbnQgbWlzc2luZyBJUHY0QWRkcmVzcy5pc19nbG9iYWwgcHJvcGVydHkuICBJdCB3YXMKKyAgZG9jdW1lbnRlZCBzaW5jZSAwN2E1NjEwYmFlOWQuICBJbml0aWFsIHBhdGNoIGJ5IFJvZ2VyIEx1ZXRoaS4KKworLSBJc3N1ZSAjMjcwMjk6IFJlbW92ZWQgZGVwcmVjYXRlZCBzdXBwb3J0IG9mIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGZyb20KKyAgWmlwRmlsZS5vcGVuKCkuCisKKy0gSXNzdWUgIzI3MDMwOiBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucyBub3cgYXJlIGVycm9ycy4gIFRoZSByZS5MT0NBTEUgZmxhZyBub3cgY2FuIGJlIHVzZWQKKyAgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gRGlyRW50cnkgKHBhcnQgb2YgUEVQIDUxOSkuCisgIEluaXRpYWwgcGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcworICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBvcy5QYXRoTGlrZSBzdXBwb3J0IHRvIHBhdGhsaWIsIHJlbW92aW5nIGl0cyBwcm92aXNpb25hbAorICBzdGF0dXMgKHBhcnQgb2YgUEVQIDUxOSkuIEluaXRpYWwgcGF0Y2ggYnkgRHVzdHkgUGhpbGxpcHMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcy5mc2VuY29kZSgpIGFuZAorICBvcy5mc2RlY29kZSgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNzE4NjogSW50cm9kdWNlIG9zLlBhdGhMaWtlIGFuZCBvcy5mc3BhdGgoKSAocGFydCBvZiBQRVAgNTE5KS4KKworLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAorICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAorICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKKyAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KKyAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgorICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKKyAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KKworLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQorICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAorICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11CisgIEtvc2hpYmEuCisKKy0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KKyAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscworICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZworICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAorICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KKworLSBJc3N1ZSAjMjM4ODM6IEFkZGVkIG1pc3NpbmcgQVBJcyB0byBfX2FsbF9fIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXMKKyAgZm9yIHRoZSBmb2xsb3dpbmcgbW9kdWxlczogY2dpLCBtYWlsYm94LCBtaW1ldHlwZXMsIHBsaXN0bGliIGFuZCBzbXRwZC4KKyAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLgorCistIElzc3VlICMyNzE2NDogSW4gdGhlIHpsaWIgbW9kdWxlLCBhbGxvdyBkZWNvbXByZXNzaW5nIHJhdyBEZWZsYXRlIHN0cmVhbXMKKyAgd2l0aCBhIHByZWRlZmluZWQgemRpY3QuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQyOTE6IEZpeCB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIuV1NHSVJlcXVlc3RIYW5kbGVyIHRvIGNvbXBsZXRlbHkKKyAgd3JpdGUgZGF0YSB0byB0aGUgY2xpZW50LiAgUHJldmlvdXNseSBpdCBjb3VsZCBkbyBwYXJ0aWFsIHdyaXRlcyBhbmQKKyAgdHJ1bmNhdGUgZGF0YS4gIEFsc28sIHdzZ2lyZWYuaGFuZGxlci5TZXJ2ZXJIYW5kbGVyIGNhbiBub3cgaGFuZGxlIHN0ZG91dAorICBkb2luZyBwYXJ0aWFsIHdyaXRlcywgYnV0IHRoaXMgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjEyNzI6IFVzZSBfc3lzY29uZmlnZGF0YS5weSB0byBpbml0aWFsaXplIGRpc3R1dGlscy5zeXNjb25maWcuCisKKy0gSXNzdWUgIzE5NjExOiA6bW9kOmBpbnNwZWN0YCBub3cgcmVwb3J0cyB0aGUgaW1wbGljaXQgYGAuMGBgIHBhcmFtZXRlcnMKKyAgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgY29tcHJlaGVuc2lvbiBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzCisgIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQgYGBpbXBsaWNpdDBgYC4KKyAgUGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcworICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQorICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KKworLSBzaWduYWwsIHNvY2tldCwgYW5kIHNzbCBtb2R1bGUgSW50RW51bSBjb25zdGFudCBuYW1lIGxvb2t1cHMgbm93IHJldHVybiBhCisgIGNvbnNpc3RlbnQgbmFtZSBmb3IgdmFsdWVzIGhhdmluZyBtdWx0aXBsZSBuYW1lcy4gIEV4OiBzaWduYWwuU2lnbmFscyg2KQorICBub3cgcmVmZXJzIHRvIGl0c2VsZiBhcyBzaWduYWwuU0lHQUxSTSByYXRoZXIgdGhhbiBmbGlwcGluZyBiZXR3ZWVuIHRoYXQKKyAgYW5kIHNpZ25hbC5TSUdJT1QgYmFzZWQgb24gdGhlIGludGVycHJldGVyJ3MgaGFzaCByYW5kb21pemF0aW9uIHNlZWQuCisKKy0gSXNzdWUgIzI3MTY3OiBDbGFyaWZ5IHRoZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBlcnJvciBtZXNzYWdlIHRleHQKKyAgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVkIGR1ZSB0byBhIHNpZ25hbC4KKworLSBJc3N1ZSAjMjU5MzE6IERvbid0IGRlZmluZSBzb2NrZXRzZXJ2ZXIuRm9ya2luZyogbmFtZXMgb24gcGxhdGZvcm1zIHN1Y2gKKyAgYXMgV2luZG93cyB0aGF0IGRvIG5vdCBzdXBwb3J0IG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzI2NTI2OiBSZXBsYWNlIGN1c3RvbSBwYXJzZSB0cmVlIHZhbGlkYXRpb24gaW4gdGhlIHBhcnNlcgorICBtb2R1bGUgd2l0aCBhIHNpbXBsZSBERkEgdmFsaWRhdG9yLgorCistIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCisgIFBlcm1pc3Npb25FcnJvcgorCistIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncworICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KKworLSBJc3N1ZSAjMjMwMjY6IHdpbnJlZy5RdWVyeVZhbHVlRXgoKSBub3cgcmV0dXJuIGFuIGludGVnZXIgZm9yIFJFR19RV09SRCB0eXBlLgorCistIElzc3VlICMyNjc0MTogc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzI3MDU2OiBPcHRpbWl6ZSBwaWNrbGUubG9hZCgpIGFuZCBwaWNrbGUubG9hZHMoKSwgdXAgdG8gMTAlIGZhc3RlcgorICB0byBkZXNlcmlhbGl6ZSBhIGxvdCBvZiBzbWFsbCBvYmplY3RzLgorCistIElzc3VlICMyMTI3MTogTmV3IGtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGluIHJlc2V0X21vY2sgY2FsbC4KKworSURMRQorLS0tLQorCistIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgorICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKKyAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXpvZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKworLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CisgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KKyAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgorICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAorCistIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCisgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCisKKy0gSXNzdWUgIzI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiBgYGltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT05gYCBpcyB0aGUgc2FtZSBhcworICBgYGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldYGAKKyAgMy4gQWZ0ZXIgYGBvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKWBgLAorICBgYG9iLmtleXMoKSA9PSBsaXN0KG9iLm9iamVjdC5rZXlzKWBgLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCistIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgorICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGBpZGxlbGliLyoucHlgIGFuZCBgaWRsZV90ZXN0L3Rlc3RfKi5weWAgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKKy0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgorICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgorCistIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgorCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCisKKy0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgorCistIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjQ4NDogQ2hhbmdlIHRoZSBkZWZhdWx0IFBZVEhPTkRPQ1MgVVJMIHRvICJodHRwczoiLCBhbmQgZml4IHRoZQorICByZXN1bHRpbmcgbGlua3MgdG8gdXNlIGxvd2VyY2FzZS4gIFBhdGNoIGJ5IFNlYW4gUm9kbWFuLCB0ZXN0IGJ5IEthdXNoaWsKKyAgTmFkaWt1ZGl0aS4KKworLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KKworLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KKyAgUGF0Y2ggYnkgWW9uaSBMYXZpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjUyODU6IHJlZ3J0ZXN0IG5vdyB1c2VzIHN1YnByb2Nlc3NlcyB3aGVuIHRoZSAtajEgY29tbWFuZCBsaW5lIG9wdGlvbgorICBpcyB1c2VkOiBlYWNoIHRlc3QgZmlsZSBydW5zIGluIGEgZnJlc2ggY2hpbGQgcHJvY2Vzcy4gQmVmb3JlLCB0aGUgLWoxIG9wdGlvbgorICB3YXMgaWdub3JlZC4KKworLSBJc3N1ZSAjMjUyODU6IFRvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IHNjcmlwdCBub3cgdXNlcyAtajEgYnkgZGVmYXVsdCB0byBydW4KKyAgZWFjaCB0ZXN0IGZpbGUgaW4gZnJlc2ggY2hpbGQgcHJvY2Vzcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzA2NDogVGhlIHB5LmV4ZSBsYXVuY2hlciBub3cgZGVmYXVsdHMgdG8gUHl0aG9uIDMuCisgIFRoZSBXaW5kb3dzIGxhdW5jaGVyIGBgcHkuZXhlYGAgbm8gbG9uZ2VyIHByZWZlcnMgYW4gaW5zdGFsbGVkCisgIFB5dGhvbiAyIHZlcnNpb24gb3ZlciBQeXRob24gMyBieSBkZWZhdWx0IHdoZW4gdXNlZCBpbnRlcmFjdGl2ZWx5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorCitNaXNjCistLS0tCisKKy0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCisgIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNzE4NjogQWRkIHRoZSBQeU9TX0ZTUGF0aCgpIGZ1bmN0aW9uIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNjI4MjogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkgbm93IHN1cHBvcnRzIHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjYyODI6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IGFuZCBrZXl3b3JkCisgIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNi0wNS0xNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKwogLSBJc3N1ZSAjMjAwNDE6IEZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC03NDMsMTEgKzIwNDUsMTcgQEAKIAogLSBJc3N1ZSAjMjY5OTE6IEZpeCBwb3NzaWJsZSByZWZsZWFrIHdoZW4gY3JlYXRpbmcgYSBmdW5jdGlvbiB3aXRoIGFubm90YXRpb25zLgogCi0tIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5Ci0gIEpvZSBKZXZuaWsuCistIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIEJhc2VkIG9uCisgIHBhdGNoIGJ5IEpvZSBKZXZuaWsuCiAKIC0gSXNzdWUgIzIzNjQwOiBpbnQuZnJvbV9ieXRlcygpIG5vIGxvbmdlciBieXBhc3NlcyBjb25zdHJ1Y3RvcnMgZm9yIHN1YmNsYXNzZXMuCiAKKy0gSXNzdWUgIzI3MDA1OiBPcHRpbWl6ZWQgdGhlIGZsb2F0LmZyb21oZXgoKSBjbGFzcyBtZXRob2QgZm9yIGV4YWN0IGZsb2F0LgorICBJdCBpcyBub3cgMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzE4NTMxOiBTaW5nbGUgdmFyLWtleXdvcmQgYXJndW1lbnQgb2YgZGljdCBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IGRpY3QuCisKIC0gSXNzdWUgIzI2ODExOiBnYy5nZXRfb2JqZWN0cygpIG5vIGxvbmdlciBjb250YWlucyBhIGJyb2tlbiB0dXBsZSB3aXRoIE5VTEwKICAgcG9pbnRlci4KIApAQCAtNzU3LDExICsyMDY1LDI2IEBACiAgIGludGVycG9sYXRpb24gaW4gLnB5cGlyYyBmaWxlcywgbWF0Y2hpbmcgYmVoYXZpb3IgaW4gUHl0aG9uCiAgIDIuNyBhbmQgU2V0dXB0b29scyAxOS4wLgogCistIElzc3VlICMyNjI0OTogTWVtb3J5IGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAKKyAgcmF0aGVyIHRoYW4gc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuIEFwcGxpY2F0aW9ucyBjYWxsaW5nCisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2Agd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgY2FuIG5vdyBjcmFzaDogdXNlCisgIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdmFsaWRhdGUgdGhlIHVzYWdlIG9mIG1lbW9yeQorICBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI2ODAyOiBPcHRpbWl6ZSBmdW5jdGlvbiBjYWxscyBvbmx5IHVzaW5nIHVucGFja2luZyBsaWtlCisgIGBgZnVuYygqdHVwbGUpYGAgKG5vIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnQsIG5vIGtleXdvcmQpOiBhdm9pZCBjb3B5aW5nCisgIHRoZSB0dXBsZS4gUGF0Y2ggd3JpdHRlbiBieSBKb2UgSmV2bmlrLgorCiAtIElzc3VlICMyNjY1OTogTWFrZSB0aGUgYnVpbHRpbiBzbGljZSB0eXBlIHN1cHBvcnQgY3ljbGUgY29sbGVjdGlvbi4KIAogLSBJc3N1ZSAjMjY3MTg6IHN1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICBOT1RFOiBBIGRpcmVjdCBjYWxsIG9mIHN1cGVyLl9faW5pdF9fIGlzIG5vdCBlbmRvcnNlZCEKIAorLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCisKKy0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorCiAtIElzc3VlICMyNTMzOTogUFlUSE9OSU9FTkNPRElORyBub3cgaGFzIHByaW9yaXR5IG92ZXIgbG9jYWxlIGluIHNldHRpbmcgdGhlCiAgIGVycm9yIGhhbmRsZXIgZm9yIHN0ZGluIGFuZCBzdGRvdXQuCiAKQEAgLTc3MCw5ICsyMDkzLDQxIEBACiAgIGJ5dGVhcnJheSwgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBPcmRlcmVkRGljdCwgY29ycmVzcG9uZGluZwogICB2aWV3cyBhbmQgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgogCistIElzc3VlICMyNjU3NDogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQKKyAgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGAuIFBhdGNoIHdyaXR0ZW4gYnkgSm9zaCBTbmlkZXIuCisKIC0gSXNzdWUgIzI2NTgxOiBJZiBjb2RpbmcgY29va2llIGlzIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyBvbiBhIGxpbmUgaW4KICAgUHl0aG9uIHNvdXJjZSBjb2RlIGZpbGUsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiB0byBhY2NvdW50LgogCistIElzc3VlICMxOTcxMTogQWRkIHRlc3RzIGZvciByZWxvYWRpbmcgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMyMTA5OTogU3dpdGNoIGFwcGxpY2FibGUgaW1wb3J0bGliIHRlc3RzIHRvIHVzZSBQRVAgNDUxIEFQSS4KKworLSBJc3N1ZSAjMjY1NjM6IERlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgcmFpc2UgYSBmYXRhbAorICBlcnJvciBpZiBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZmFtaWx5IGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTY0OiBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgdXNlCisgIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworICBhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzI2NTU4OiBUaGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKKyAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCBub3cgZGV0ZWN0IHdoZW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTE2OiBBZGQgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlCisgIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGNhbiBub3cgYWxzbyBiZQorICB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKKy0gSXNzdWUgIzI2NTE2OiBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBub3cKKyAgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmCisgIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKy0gSXNzdWUgIzI2NTE2OiBJbiBkZWJ1ZyBtb2RlLCBkZWJ1ZyBob29rcyBhcmUgbm93IGFsc28gaW5zdGFsbGVkIG9uIFB5dGhvbgorICBtZW1vcnkgYWxsb2NhdG9ycyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgcHltYWxsb2MuCisKIC0gSXNzdWUgIzI2NDY0OiBGaXggc3RyLnRyYW5zbGF0ZSgpIHdoZW4gc3RyaW5nIGlzIEFTQ0lJIGFuZCBmaXJzdCByZXBsYWNlbWVudHMKICAgcmVtb3ZlcyBjaGFyYWN0ZXIsIGJ1dCBuZXh0IHJlcGxhY2VtZW50IHVzZXMgYSBub24tQVNDSUkgY2hhcmFjdGVyIG9yIGEKICAgc3RyaW5nIGxvbmdlciB0aGFuIDEgY2hhcmFjdGVyLiBSZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNS4wLgpAQCAtNzg1LDExICsyMTQwLDM3IEBACiAtIElzc3VlICMyNjMwMjogQ29ycmVjdCBiZWhhdmlvciB0byByZWplY3QgY29tbWEgYXMgYSBsZWdhbCBjaGFyYWN0ZXIgZm9yCiAgIGNvb2tpZSBuYW1lcy4KIAorLSBJc3N1ZSAjMjYxMzY6IFVwZ3JhZGUgdGhlIHdhcm5pbmcgd2hlbiBhIGdlbmVyYXRvciByYWlzZXMgU3RvcEl0ZXJhdGlvbgorICBmcm9tIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgQW5pc2gKKyAgU2hhaC4KKworLSBJc3N1ZSAjMjYyMDQ6IFRoZSBjb21waWxlciBub3cgaWdub3JlcyBhbGwgY29uc3RhbnQgc3RhdGVtZW50czogYnl0ZXMsIHN0ciwKKyAgaW50LCBmbG9hdCwgY29tcGxleCwgbmFtZSBjb25zdGFudHMgKE5vbmUsIEZhbHNlLCBUcnVlKSwgRWxsaXBzaXMKKyAgYW5kIGFzdC5Db25zdGFudDsgbm90IG9ubHkgc3RyIGFuZCBpbnQuIEZvciBleGFtcGxlLCBgYDEuMGBgIGlzIG5vdyBpZ25vcmVkCisgIGluIGBgZGVmIGYoKTogMS4wYGAuCisKIC0gSXNzdWUgIzQ4MDY6IEF2b2lkIG1hc2tpbmcgdGhlIG9yaWdpbmFsIFR5cGVFcnJvciBleGNlcHRpb24gd2hlbiB1c2luZyBzdGFyCiAgICgqKSB1bnBhY2tpbmcgaW4gZnVuY3Rpb24gY2FsbHMuICBCYXNlZCBvbiBwYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1IGFuZAogICBEYW5pZWwgVXJiYW4uCiAKLS0gSXNzdWUgIzI3MTM4OiBGaXggdGhlIGRvYyBjb21tZW50IGZvciBGaWxlRmluZGVyLmZpbmRfc3BlYygpLgorLSBJc3N1ZSAjMjYxNDY6IEFkZCBhIG5ldyBraW5kIG9mIEFTVCBub2RlOiBgYGFzdC5Db25zdGFudGBgLiBJdCBjYW4gYmUgdXNlZAorICBieSBleHRlcm5hbCBBU1Qgb3B0aW1pemVycywgYnV0IHRoZSBjb21waWxlciBkb2VzIG5vdCBlbWl0IGRpcmVjdGx5IHN1Y2gKKyAgbm9kZS4KKworLSBJc3N1ZSAjMjM2MDE6ICBTcGVkLXVwIGFsbG9jYXRpb24gb2YgZGljdCBrZXkgb2JqZWN0cyBieSB1c2luZyBQeXRob24ncworICBzbWFsbCBvYmplY3QgYWxsb2NhdG9yLiAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBUYXlsb3IuKQorCistIElzc3VlICMxODAxODogSW1wb3J0IHJhaXNlcyBJbXBvcnRFcnJvciBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yIGlmIGEgcmVsYXRpdmUKKyAgaW1wb3J0IGlzIGF0dGVtcHRlZCB3aXRob3V0IGEga25vd24gcGFyZW50IHBhY2thZ2UuCisKKy0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKKyAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAorICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCisgIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGZsb2F0YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCisgIGFyZSBlcXVhbC4KKworLSBJc3N1ZSAjMjYxMDc6IFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cworICBjaGFuZ2VzIHRvIHN1cHBvcnQgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuCiAKIC0gSXNzdWUgIzI2MTU0OiBBZGQgYSBuZXcgcHJpdmF0ZSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBmdW5jdGlvbiB0byBnZXQKICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IgaWYgaXQgaXMgTlVMTC4KQEAgLTc5OCwxNSArMjE3OSw4IEBACiAgIFB5dGhvbiAzLjUuMSB0byBoaWRlIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhdG9taWMgQyB0eXBlcywgdG8gYXZvaWQKICAgY29tcGlsZXIgaXNzdWVzLgogCi0tIElzc3VlICMyNjE5NDogIERlcXVlLmluc2VydCgpIGdhdmUgb2RkIHJlc3VsdHMgZm9yIGJvdW5kZWQgZGVxdWVzIHRoYXQgaGFkCi0gIHJlYWNoZWQgdGhlaXIgbWF4aW11bSBzaXplLiAgTm93IGFuIEluZGV4RXJyb3Igd2lsbCBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nCi0gIHRvIGluc2VydCBpbnRvIGEgZnVsbCBkZXF1ZS4KLQotLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAotICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCi0gIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKLSAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgaW50YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCi0gIGFyZSBlcXVhbC4KKy0gSXNzdWUgIzI1NzkxOiBJZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgb3IgaWYgbmVpdGhlciBfX3BhY2thZ2VfXyBvcgorICBfX3NwZWNfXyBhcmUgZGVmaW5lZCB0aGVuIEltcG9ydFdhcm5pbmcgaXMgcmFpc2VkLgogCiAtIElzc3VlICMyMjk5NTogW1VQREFURV0gQ29tbWVudCBvdXQgdGhlIG9uZSBvZiB0aGUgcGlja2xlYWJpbGl0eSB0ZXN0cyBpbgogICBfUHlPYmplY3RfR2V0U3RhdGUoKSBkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgpAQCAtODMzLDcgKzIyMDcsMTAgQEAKIC0gSXNzdWUgIzI1NzA5OiBGaXhlZCBwcm9ibGVtIHdpdGggaW4tcGxhY2Ugc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIHV0Zi04CiAgIGNhY2hlLgogCi0tIElzc3VlICMyNzE0NzogTWVudGlvbiBQRVAgNDIwIGluIHRoZSBpbXBvcnRsaWIgZG9jcy4KKy0gSXNzdWUgIzUzMTk6IE5ldyBQeV9GaW5hbGl6ZUV4KCkgQVBJIGFsbG93aW5nIFB5dGhvbiB0byBzZXQgYW4gZXhpdCBzdGF0dXMKKyAgb2YgMTIwIG9uIGZhaWx1cmUgdG8gZmx1c2ggYnVmZmVyZWQgc3RyZWFtcy4KKworLSBJc3N1ZSAjMjU0ODU6IHRlbG5ldGxpYi5UZWxuZXQgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgogCiAtIElzc3VlICMyNDA5NzogRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlCiAgIF9fZ2V0YXR0cl9fLgpAQCAtODQyLDYgKzIyMTksODggQEAKICAgX19ieXRlc19fLCBfX3RydW5jX18sIGFuZCBfX2Zsb2F0X18gcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mCiAgIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCB0byBzdWJjbGFzc2VzIG9mIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCiAKKy0gSXNzdWUgIzI1NjMwOiBGaXggYSBwb3NzaWJsZSBzZWdmYXVsdCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZyBpbiBmdW5jdGlvbnMKKyAgdGhhdCBhY2NlcHQgZmlsZXN5c3RlbSBwYXRocy4KKworLSBJc3N1ZSAjMjM1NjQ6IEZpeGVkIGEgcGFydGlhbGx5IGJyb2tlbiBzYW5pdHkgY2hlY2sgaW4gdGhlIF9wb3NpeHN1YnByb2Nlc3MKKyAgaW50ZXJuYWxzIHJlZ2FyZGluZyBob3cgZmRzX3RvX3Bhc3Mgd2VyZSBwYXNzZWQgdG8gdGhlIGNoaWxkLiAgVGhlIGJ1ZyBoYWQKKyAgbm8gYWN0dWFsIGltcGFjdCBhcyBzdWJwcm9jZXNzLnB5IGFscmVhZHkgYXZvaWRlZCBpdC4KKworLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUKKyAgd2l0aCBhIG51bGwgYnl0ZS4KKworLSBJc3N1ZSAjMjU0NjI6IFRoZSBoYXNoIG9mIHRoZSBrZXkgbm93IGlzIGNhbGN1bGF0ZWQgb25seSBvbmNlIGluIG1vc3QKKyAgb3BlcmF0aW9ucyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMjk5NTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdworICByZWplY3RzIGJ1aWx0aW4gdHlwZXMgd2l0aCBub3QgZGVmaW5lZCBfX25ld19fLgorCistIElzc3VlICMyNDgwMjogQXZvaWQgYnVmZmVyIG92ZXJyZWFkcyB3aGVuIGludCgpLCBmbG9hdCgpLCBjb21waWxlKCksIGV4ZWMoKQorICBhbmQgZXZhbCgpIGFyZSBwYXNzZWQgYnl0ZXMtbGlrZSBvYmplY3RzLiAgVGhlc2Ugb2JqZWN0cyBhcmUgbm90CisgIG5lY2Vzc2FyaWx5IHRlcm1pbmF0ZWQgYnkgYSBudWxsIGJ5dGUsIGJ1dCB0aGUgZnVuY3Rpb25zIGFzc3VtZWQgdGhleSB3ZXJlLgorCistIElzc3VlICMyNTU1NTogRml4IHBhcnNlciBhbmQgQVNUOiBmaWxsIGxpbmVubyBhbmQgY29sX29mZnNldCBvZiAiYXJnIiBub2RlCisgIHdoZW4gY29tcGlsaW5nIEFTVCBmcm9tIFB5dGhvbiBvYmplY3RzLgorCistIElzc3VlICMyNDcyNjogRml4ZWQgYSBjcmFzaCBhbmQgbGVha2luZyBOVUxMIGluIHJlcHIoKSBvZiBPcmRlcmVkRGljdCB0aGF0CisgIHdhcyBtdXRhdGVkIGJ5IGRpcmVjdCBjYWxscyBvZiBkaWN0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzI1NDQ5OiBJdGVyYXRpbmcgT3JkZXJlZERpY3Qgd2l0aCBrZXlzIHdpdGggdW5zdGFibGUgaGFzaCBub3cgcmFpc2VzCisgIEtleUVycm9yIGluIEMgaW1wbGVtZW50YXRpb25zIGFzIHdlbGwgYXMgaW4gUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMyNTM5NTogRml4ZWQgY3Jhc2ggd2hlbiBoaWdobHkgbmVzdGVkIE9yZGVyZWREaWN0IHN0cnVjdHVyZXMgd2VyZQorICBnYXJiYWdlIGNvbGxlY3RlZC4KKworLSBJc3N1ZSAjMjU0MDE6IE9wdGltaXplIGJ5dGVzLmZyb21oZXgoKSBhbmQgYnl0ZWFycmF5LmZyb21oZXgoKTogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLgorCistIElzc3VlICMyNTM5OTogT3B0aW1pemUgYnl0ZWFycmF5ICUgYXJncyB1c2luZyB0aGUgbmV3IHByaXZhdGUgX1B5Qnl0ZXNXcml0ZXIKKyAgQVBJLiBGb3JtYXR0aW5nIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mjc0OiBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBub3cgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IgaWYgdGhlIG5ldworICByZWN1cnNpb24gbGltaXQgaXMgdG9vIGxvdyBkZXBlbmRpbmcgYXQgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLiBNb2RpZnkKKyAgYWxzbyB0aGUgImxvd2VyLXdhdGVyIG1hcmsiIGZvcm11bGEgdG8gbWFrZSBpdCBtb25vdG9uaWMuIFRoaXMgbWFyayBpcyB1c2VkCisgIHRvIGRlY2lkZSB3aGVuIHRoZSBvdmVyZmxvd2VkIGZsYWcgb2YgdGhlIHRocmVhZCBzdGF0ZSBpcyByZXNldC4KKworLSBJc3N1ZSAjMjQ0MDI6IEZpeCBpbnB1dCgpIHRvIHByb21wdCB0byB0aGUgcmVkaXJlY3RlZCBzdGRvdXQgd2hlbgorICBzeXMuc3Rkb3V0LmZpbGVubygpIGZhaWxzLgorCistIElzc3VlICMyNTM0OTogT3B0aW1pemUgYnl0ZXMgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlciBBUEkuCisgIEZvcm1hdHRpbmcgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNDgwNjogUHJldmVudCBidWlsdGluIHR5cGVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN1YmNsYXNzZWQgZnJvbQorICBiZWluZyBzdWJjbGFzc2VkIHRocm91Z2ggbXVsdGlwbGUgaW5oZXJpdGFuY2UuCisKKy0gSXNzdWUgIzI1MzAxOiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IKKyAgaGFuZGxlcnM6IGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLgorCistIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLSBJc3N1ZSAjMjUyNjc6IFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgLgorICBQYXRjaCBjby13cml0dGVuIHdpdGggU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUyODA6IEltcG9ydCB0cmFjZSBtZXNzYWdlcyBlbWl0dGVkIGluIHZlcmJvc2UgKC12KSBtb2RlIGFyZSBubworICBsb25nZXIgZm9ybWF0dGVkIHR3aWNlLgorCistIElzc3VlICMyNTIyNzogT3B0aW1pemUgQVNDSUkgYW5kIGxhdGluMSBlbmNvZGVycyB3aXRoIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgCisgIGVycm9yIGhhbmRsZXI6IHRoZSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdC4gSW5pdGlhbCBwYXRjaAorICB3cml0dGVuIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI1MDAzOiBPbiBTb2xhcmlzIDExLjMgb3IgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgdXNlcyB0aGUKKyAgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLiBUaGUgZ2V0ZW50cm9weSgpCisgIGZ1bmN0aW9uIGlzIGJsb2NraW5nIHRvIGdlbmVyYXRlIHZlcnkgZ29vZCBxdWFsaXR5IGVudHJvcHksIG9zLnVyYW5kb20oKQorICBkb2Vzbid0IG5lZWQgc3VjaCBoaWdoLXF1YWxpdHkgZW50cm9weS4KKworLSBJc3N1ZSAjOTIzMjogTW9kaWZ5IFB5dGhvbidzIGdyYW1tYXIgdG8gYWxsb3cgdHJhaWxpbmcgY29tbWFzIGluIHRoZQorICBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uICBGb3IgZXhhbXBsZSwgImRlZiBmKFwqLCBhID0KKyAgMywpOiBwYXNzIiBpcyBub3cgbGVnYWwuIFBhdGNoIGZyb20gTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0OTY1OiBJbXBsZW1lbnQgUEVQIDQ5OCAiTGl0ZXJhbCBTdHJpbmcgSW50ZXJwb2xhdGlvbiIuIFRoaXMKKyAgYWxsb3dzIHlvdSB0byBlbWJlZCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzLCB3aGljaCBhcmUKKyAgY29udmVydGVkIHRvIG5vcm1hbCBzdHJpbmdzIGF0IHJ1biB0aW1lLiBHaXZlbiB4PTMsIHRoZW4KKyAgZid2YWx1ZT17eH0nID09ICd2YWx1ZT0zJy4gUGF0Y2ggYnkgRXJpYyBWLiBTbWl0aC4KKwogLSBJc3N1ZSAjMjY0Nzg6IEZpeCBzZW1hbnRpYyBidWdzIHdoZW4gdXNpbmcgYmluYXJ5IG9wZXJhdG9ycyB3aXRoIGRpY3Rpb25hcnkKICAgdmlld3MgYW5kIHR1cGxlcy4KIApAQCAtODUwLDc5ICsyMzA5LDI3IEBACiAKIC0gSXNzdWUgIzI1NjYwOiBGaXggVEFCIGtleSBiZWhhdmlvdXIgaW4gUkVQTCB3aXRoIHJlYWRsaW5lLgogCistIElzc3VlICMyNjI4ODogT3B0aW1pemUgUHlMb25nX0FzRG91YmxlLgorCistIElzc3VlcyAjMjYyODkgYW5kICMyNjMxNTogT3B0aW1pemUgZmxvb3IgYW5kIG1vZHVsbyBkaXZpc2lvbiBmb3IKKyAgc2luZ2xlLWRpZ2l0IGxvbmdzLiAgTWljcm9iZW5jaG1hcmtzIHNob3cgMi0yLjV4IGltcHJvdmVtZW50LiAgQnVpbHQtaW4KKyAgJ2Rpdm1vZCcgZnVuY3Rpb24gaXMgbm93IGFsc28gfjEwJSBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1ODg3OiBSYWlzZSBhIFJ1bnRpbWVFcnJvciB3aGVuIGEgY29yb3V0aW5lIG9iamVjdCBpcyBhd2FpdGVkCiAgIG1vcmUgdGhhbiBvbmNlLgogCi0tIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cwotICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCi0gIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0KLQogTGlicmFyeQogLS0tLS0tLQogCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCi0KLS0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCi0gIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20KLQotLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcwotICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgotCi0tIElzc3VlICMyMDkwMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGNvbW1hbmQgbm93IGRlY29kZXMgSFRUUCByZXNwb25zZXMKLSAgY29ycmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBpbmdyaWQuCi0KLS0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgcHJvdmlkZXMgc2V2ZXJhbCBuZXcgY2xhc3NlcyBhbmQKLSAgZmVhdHVyZXM6IEBvdmVybG9hZCBvdXRzaWRlIHN0dWJzLCBSZXZlcnNpYmxlLCBEZWZhdWx0RGljdCwgVGV4dCwKLSAgQ29udGV4dE1hbmFnZXIsIFR5cGVbXSwgTmV3VHlwZSgpLCBUWVBFX0NIRUNLSU5HLCBhbmQgbnVtZXJvdXMgYnVnCi0gIGZpeGVzIChub3RlIHRoYXQgc29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluCi0gIG15cHkgb3Igb3RoZXIgc3RhdGljIGFuYWx5emVycykuICBBbHNvIGNsYXNzZXMgZm9yIFBFUCA0OTIKLSAgKEF3YWl0YWJsZSwgQXN5bmNJdGVyYWJsZSwgQXN5bmNJdGVyYXRvcikgaGF2ZSBiZWVuIGFkZGVkIChpbiBmYWN0Ci0gIHRoZXkgbWFkZSBpdCBpbnRvIDMuNS4xIGJ1dCB3ZXJlIG5ldmVyIG1lbnRpb25lZCkuCi0KLS0gSXNzdWUgIzI1NzM4OiBTdG9wIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KLSAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIENvbnRlbnQKLSAgaGVhZGVyIGZpZWxkcyBpbiByZXNwb25zZXMgdGhhdCBkb24ndCBoYXZlIGEgYm9keS4gIFBhdGNoIGJ5IFN1c3VtdQotICBLb3NoaWJhLgotCi0tIElzc3VlICMyMTMxMzogRml4IHRoZSAicGxhdGZvcm0iIG1vZHVsZSB0byB0b2xlcmF0ZSB3aGVuIHN5cy52ZXJzaW9uCi0gIGNvbnRhaW5zIHRydW5jYXRlZCBidWlsZCBpbmZvcm1hdGlvbi4KLQotLSBbU2VjdXJpdHldIElzc3VlICMyNjgzOTogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgY2FsbHMKLSAgYGBnZXRyYW5kb20oKWBgIHdpdGggYGBHUk5EX05PTkJMT0NLYGAgdG8gZmFsbCBiYWNrIG9uIHJlYWRpbmcKLSAgYGAvZGV2L3VyYW5kb21gYCBpZiB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90IGluaXRpYWxpemVkIHlldC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDb2xtIEJ1Y2tsZXkuCi0KLS0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcwotICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQotICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAotICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0Ci0gIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMyNjgwOTogQWRkIGBgX19hbGxfX2BgIHRvIDptb2Q6YHN0cmluZ2AuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgotCi0tIElzc3VlICMyNjM3Mzogc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSBub3cgY29ycmVjdGx5IGlnbm9yZXMKLSAgQnJva2VuUGlwZUVycm9yIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllcyBiZWZvcmUgLmNvbW11bmljYXRlKCkKLSAgaXMgY2FsbGVkIGluIG1vcmUvYWxsIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzIxNzc2OiBkaXN0dXRpbHMudXBsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBIVFRQRXJyb3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCi0gIFBlcm1pc3Npb25FcnJvcgotCi0tIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncwotICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KLQogLSBJc3N1ZSAjMjcwNTc6IEZpeCBvcy5zZXRfaW5oZXJpdGFibGUoKSBvbiBBbmRyb2lkLCBpb2N0bCgpIGlzIGJsb2NrZWQgYnkKICAgU0VMaW51eCBhbmQgZmFpbHMgd2l0aCBFQUNDRVNTLiBUaGUgZnVuY3Rpb24gbm93IGZhbGxzIGJhY2sgdG8gZmNudGwoKS4KICAgUGF0Y2ggd3JpdHRlbiBieSBNaWNoYcWCIEJlZG5hcnNraS4KIAogLSBJc3N1ZSAjMjcwMTQ6IEZpeCBpbmZpbml0ZSByZWN1cnNpb24gdXNpbmcgdHlwaW5nLnB5LiAgVGhhbmtzIHRvIEthbGxlIFR1dXJlIQogCistIElzc3VlICMyNzAzMTogUmVtb3ZlZCBkdW1teSBtZXRob2RzIGluIFRraW50ZXIgd2lkZ2V0IGNsYXNzZXM6IHRrX21lbnVCYXIoKQorICBhbmQgdGtfYmluZEZvclRyYXZlcnNhbCgpLgorCiAtIElzc3VlICMxNDEzMjogRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcwogICBhIHF1ZXJ5IHN0cmluZy4gIE9yaWdpbmFsIGZpeCBieSBKw6FuIEphbmVjaC4KIApAQCAtOTMyLDYgKzIzMzksMTggQEAKICAgdG8gYmUgQVNDSUktZW5jb2RhYmxlLCBvdGhlcndpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IgaXMgcmFpc2VkLiAgQmFzZWQgb24KICAgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KIAorLSBJc3N1ZSAjMjcwMzM6IFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBkZWNvZGVfZGF0YSBwYXJhbWV0ZXIgZm9yCisgIHNtdHBkLlNNVFBDaGFubmVsIGFuZCBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9ycyBpcyBjaGFuZ2VkIHRvIEZhbHNlLgorCistIElzc3VlICMyNzAzNDogUmVtb3ZlZCBkZXByZWNhdGVkIGNsYXNzIGFzeW5jaGF0LmZpZm8uCisKKy0gSXNzdWUgIzI2ODcwOiBBZGRlZCByZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KCksIHdoaWNoIGNhbiBzdG9wIGVudHJpZXMKKyAgYmVpbmcgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgVHlsZXIKKyAgQ3JvbXB0b24uCisKKy0gSXNzdWUgIzI2MDM5OiB6aXBmaWxlLlppcEZpbGUub3BlbigpIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBkYXRhIGludG8gYSBaSVAKKyAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzI2ODkyOiBIb25vciBkZWJ1Z2xldmVsIGZsYWcgaW4gdXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENoaSBIc3VhbiBZZW4uCiAKQEAgLTk0Niw2ICsyMzY1LDE0IEBACiAtIElzc3VlICMyNjk3NzogUmVtb3ZlZCB1bm5lY2Vzc2FyeSwgYW5kIGlnbm9yZWQsIGNhbGwgdG8gc3VtIG9mIHNxdWFyZXMgaGVscGVyCiAgIGluIHN0YXRpc3RpY3MucHZhcmlhbmNlLgogCistIElzc3VlICMyNjAwMjogVXNlIGJpc2VjdCBpbiBzdGF0aXN0aWNzLm1lZGlhbiBpbnN0ZWFkIG9mIGEgbGluZWFyIHNlYXJjaC4KKyAgUGF0Y2ggYnkgVXBlbmRyYSBLdW1hLgorCistIElzc3VlICMyNTk3NDogTWFrZSB1c2Ugb2YgbmV3IERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIG1ldGhvZCBpbiBzdGF0aXN0aWNzCisgIG1vZHVsZS4gUGF0Y2ggYnkgU3RlZmFuIEtyYWguCisKKy0gSXNzdWUgIzI2OTk2OiBBZGQgc2VjcmV0cyBtb2R1bGUgYXMgZGVzY3JpYmVkIGluIFBFUCA1MDYuCisKIC0gSXNzdWUgIzI2ODgxOiBUaGUgbW9kdWxlZmluZGVyIG1vZHVsZSBub3cgc3VwcG9ydHMgZXh0ZW5kZWQgb3Bjb2RlIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjM4MTU6IEZpeGVkIGNyYXNoZXMgcmVsYXRlZCB0byBkaXJlY3RseSBjcmVhdGVkIGluc3RhbmNlcyBvZiB0eXBlcyBpbgpAQCAtOTU3LDYgKzIzODQsMTEgQEAKIC0gSXNzdWUgIzI2ODczOiB4bWxycGMgbm93IHJhaXNlcyBSZXNwb25zZUVycm9yIG9uIHVuc3VwcG9ydGVkIHR5cGUgdGFncwogICBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgogCistIElzc3VlICMyNjkxNTogIFRoZSBfX2NvbnRhaW5zX18gbWV0aG9kcyBpbiB0aGUgY29sbGVjdGlvbnMgQUJDcyBub3cgY2hlY2sKKyAgZm9yIGlkZW50aXR5IGJlZm9yZSBjaGVja2luZyBlcXVhbGl0eS4gIFRoaXMgYmV0dGVyIG1hdGNoZXMgdGhlIGJlaGF2aW9yCisgIG9mIHRoZSBjb25jcmV0ZSBjbGFzc2VzLCBhbGxvd3Mgc2Vuc2libGUgaGFuZGxpbmcgb2YgTmFOcywgYW5kIG1ha2VzIGl0CisgIGVhc2llciB0byByZWFzb24gYWJvdXQgY29udGFpbmVyIGludmFyaWFudHMuCisKIC0gSXNzdWUgIzI2NzExOiBGaXhlZCB0aGUgY29tcGFyaXNvbiBvZiBwbGlzdGxpYi5EYXRhIHdpdGggb3RoZXIgdHlwZXMuCiAKIC0gSXNzdWUgIzI0MTE0OiBGaXggYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBgY3R5cGVzLnV0aWxgLgpAQCAtOTcwLDYgKzI0MDIsMTIgQEAKICAgbmFtZXMgdGhhdCBoYXBwZW4gdG8gaGF2ZSBhIGJ5cGFzc2VkIGhvc3RuYW1lIGFzIGEgc3VmZml4LiAgUGF0Y2ggYnkgWGlhbmcKICAgWmhhbmcuCiAKKy0gSXNzdWUgIzI0OTAyOiBQcmludCBzZXJ2ZXIgVVJMIG9uIGh0dHAuc2VydmVyIHN0YXJ0dXAuICBJbml0aWFsIHBhdGNoIGJ5CisgIEZlbGl4IEthaXNlci4KKworLSBJc3N1ZSAjMjU3ODg6IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSBub3cgc3VwcG9ydHMgYW4gImVycm9ycyIgYXJndW1lbnQKKyAgZm9yIHBhc3NpbmcgdG8gb3Blbi4gIE9yaWdpbmFsIHBhdGNoIGJ5IEpvc2VwaCBIYWNrbWFuLgorCiAtIElzc3VlICMyNjYzNDogcmVjdXJzaXZlX3JlcHIoKSBub3cgc2V0cyBfX3F1YWxuYW1lX18gb2Ygd3JhcHBlci4gIFBhdGNoIGJ5CiAgIFhpYW5nIFpoYW5nLgogCkBAIC0xMDA1LDI2ICsyNDQzLDU0IEBACiAtIElzc3VlICMyNjcxNzogU3RvcCBlbmNvZGluZyBMYXRpbi0xLWl6ZWQgV1NHSSBwYXRocyB3aXRoIFVURi04LiAgUGF0Y2ggYnkKICAgQW50aG9ueSBTb3R0aWxlLgogCistIElzc3VlICMyNjc4MjogQWRkIFNUQVJUVVBJTkZPIHRvIHN1YnByb2Nlc3MuX19hbGxfXyBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNjQwNDogQWRkIGNvbnRleHQgbWFuYWdlciB0byBzb2NrZXRzZXJ2ZXIuICBQYXRjaCBieSBBdml2IFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjczNTogRml4IDpmdW5jOmBvcy51cmFuZG9tYCBvbiBTb2xhcmlzIDExLjMgYW5kIG5ld2VyIHdoZW4gcmVhZGluZwogICBtb3JlIHRoYW4gMSwwMjQgYnl0ZXM6IGNhbGwgYGBnZXRyYW5kb20oKWBgIG11bHRpcGxlIHRpbWVzIHdpdGggYSBsaW1pdCBvZgogICAxMDI0IGJ5dGVzIHBlciBjYWxsLgogCistIElzc3VlICMyNjU4NTogRWxpbWluYXRlIGh0dHAuc2VydmVyLl9xdW90ZV9odG1sKCkgYW5kIHVzZQorICBodG1sLmVzY2FwZShxdW90ZT1GYWxzZSkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjY2ODU6IFJhaXNlIE9TRXJyb3IgaWYgY2xvc2luZyBhIHNvY2tldCBmYWlscy4KKwogLSBJc3N1ZSAjMTYzMjk6IEFkZCAud2VibSB0byBtaW1ldHlwZXMudHlwZXNfbWFwLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCiAKIC0gSXNzdWUgIzEzOTUyOiBBZGQgLmNzdiB0byBtaW1ldHlwZXMudHlwZXNfbWFwLiAgUGF0Y2ggYnkgR2VvZmYgV2lsc29uLgogCistIElzc3VlICMyNjU4NzogdGhlIHNpdGUgbW9kdWxlIG5vdyBhbGxvd3MgLnB0aCBmaWxlcyB0byBzcGVjaWZ5IGZpbGVzIHRvIGJlCisgIGFkZGVkIHRvIHN5cy5wYXRoIChlLmcuIHppcCBmaWxlcykuCisKKy0gSXNzdWUgIzI1NjA5OiBJbnRyb2R1Y2UgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyIGFuZAorICB0eXBpbmcuQ29udGV4dE1hbmFnZXIuCisKIC0gSXNzdWUgIzI2NzA5OiBGaXhlZCBZMjAzOCBwcm9ibGVtIGluIGxvYWRpbmcgYmluYXJ5IFBMaXN0cy4KIAogLSBJc3N1ZSAjMjM3MzU6IEhhbmRsZSB0ZXJtaW5hbCByZXNpemluZyB3aXRoIFJlYWRsaW5lIDYuMysgYnkgaW5zdGFsbGluZyBvdXIKICAgb3duIFNJR1dJTkNIIGhhbmRsZXIuICBQYXRjaCBieSBFcmljIFByaWNlLgogCistIElzc3VlICMyNTk1MTogQ2hhbmdlIFNTTFNvY2tldC5zZW5kYWxsKCkgdG8gcmV0dXJuIE5vbmUsIGFzIGV4cGxpY2l0bHkKKyAgZG9jdW1lbnRlZCBmb3IgcGxhaW4gc29ja2V0IG9iamVjdHMuICBQYXRjaCBieSBBdml2IFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjU4NjogSW4gaHR0cC5zZXJ2ZXIsIHJlc3BvbmQgd2l0aCAiNDEzIFJlcXVlc3QgaGVhZGVyIGZpZWxkcyB0b28KICAgbGFyZ2UiIGlmIHRoZXJlIGFyZSB0b28gbWFueSBoZWFkZXIgZmllbGRzIHRvIHBhcnNlLCByYXRoZXIgdGhhbiBraWxsaW5nCiAgIHRoZSBjb25uZWN0aW9uIGFuZCByYWlzaW5nIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMjY2NzY6IEFkZGVkIG1pc3NpbmcgWE1MUHVsbFBhcnNlciB0byBFbGVtZW50VHJlZS5fX2FsbF9fLgorCiAtIElzc3VlICMyMjg1NDogQ2hhbmdlIEJ1ZmZlcmVkUmVhZGVyLndyaXRhYmxlKCkgYW5kCiAgIEJ1ZmZlcmVkV3JpdGVyLnJlYWRhYmxlKCkgdG8gYWx3YXlzIHJldHVybiBGYWxzZS4KIAorLSBJc3N1ZSAjMjY0OTI6IEV4aGF1c3RlZCBpdGVyYXRvciBvZiBhcnJheS5hcnJheSBub3cgY29uZm9ybXMgd2l0aCB0aGUgYmVoYXZpb3IKKyAgb2YgaXRlcmF0b3JzIG9mIG90aGVyIG11dGFibGUgc2VxdWVuY2VzOiBpdCBsZWZ0cyBleGhhdXN0ZWQgZXZlbiBpZiBpdGVyYXRlZAorICBhcnJheSBpcyBleHRlbmRlZC4KKworLSBJc3N1ZSAjMjY2NDE6IGRvY3Rlc3QuRG9jRmlsZVRlc3QgYW5kIGRvY3Rlc3QudGVzdGZpbGUoKSBub3cgc3VwcG9ydAorICBwYWNrYWdlcyAobW9kdWxlIHNwbGl0dGVkIGludG8gbXVsdGlwbGUgZGlyZWN0b3JpZXMpIGZvciB0aGUgcGFja2FnZQorICBwYXJhbWV0ZXIuCisKIC0gSXNzdWUgIzI1MTk1OiBGaXggYSByZWdyZXNzaW9uIGluIG1vY2suTWFnaWNNb2NrLiBfQ2FsbCBpcyBhIHN1YmNsYXNzIG9mCiAgIHR1cGxlIChjaGFuZ2VzZXQgMzYwM2JhZTYzYzEzIG9ubHkgd29ya3MgZm9yIGNsYXNzZXMpIHNvIHdlIG5lZWQgdG8KICAgaW1wbGVtZW50IF9fbmVfXyBvdXJzZWx2ZXMuICBQYXRjaCBieSBBbmRyZXcgUGx1bW1lci4KQEAgLTEwMzcsMTYgKzI1MDMsNDUgQEAKIAogLSBJc3N1ZSAjMjY2MTY6IEZpeGVkIGEgYnVnIGluIGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2QuCiAKLS0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyBvbgotICBgYGxpbmVjYWNoZS5nZXRsaW5lKC4uLilgYCB0byBiZSBhYmxlIHRvIGxvZyA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQKLSAgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorLSBJc3N1ZSAjMjY2Mzc6IFRoZSA6bW9kOmBpbXBvcnRsaWJgIG1vZHVsZSBub3cgZW1pdHMgYW4gOmV4YzpgSW1wb3J0RXJyb3JgCisgIHJhdGhlciB0aGFuIGEgOmV4YzpgVHlwZUVycm9yYCBpZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdHJpZWQgZHVyaW5nIHRoZQorICBQeXRob24gc2h1dGRvd24gcHJvY2VzcyBidXQgOmRhdGE6YHN5cy5wYXRoYCBpcyBhbHJlYWR5IGNsZWFyZWQgKHNldCB0bworICBgYE5vbmVgYCkuCisKKy0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyB3aGVuCisgIGNhbGxpbmcgOmZ1bmM6YGxpbmVjYWNoZS5nZXRsaW5lYCBhbmQKKyAgOmZ1bmM6YHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrYCB0byBiZSBhYmxlIHRvIGxvZworICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorCistIElzc3VlICMyMzg0ODogT24gV2luZG93cywgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIG5vdyBhbHNvIGluc3RhbGxzIGFuCisgIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgb24gYW55IFdpbmRvd3MKKyAgZXhjZXB0aW9uLCBub3Qgb25seSBvbiBVTklYIHNpZ25hbHMgKFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCkuCisKKy0gSXNzdWUgIzI2NTMwOiBBZGQgQyBmdW5jdGlvbnMgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVHJhY2tgIGFuZAorICA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19VbnRyYWNrYCB0byB0cmFjayBtZW1vcnkgYmxvY2tzIHVzaW5nIHRoZQorICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlLiBBZGQgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrYCB0byBnZXQKKyAgdGhlIHRyYWNlYmFjayBvZiBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzI2NTg4OiBUaGUgX3RyYWNlbWFsbG9jIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBvZgorICBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcyAoZG9tYWlucykuCiAKIC0gSXNzdWUgIzI0MjY2OiBDdHJsK0MgZHVyaW5nIFJlYWRsaW5lIGhpc3Rvcnkgc2VhcmNoIG5vdyBjYW5jZWxzIHRoZSBzZWFyY2gKICAgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggUmVhZGxpbmUgNy4KIAorLSBJc3N1ZSAjMjY1OTA6IEltcGxlbWVudCBhIHNhZmUgZmluYWxpemVyIGZvciB0aGUgX3NvY2tldC5zb2NrZXQgdHlwZS4gSXQgbm93CisgIHJlbGVhc2VzIHRoZSBHSUwgdG8gY2xvc2UgdGhlIHNvY2tldC4KKworLSBJc3N1ZSAjMTg3ODc6IHNwd2QuZ2V0c3BuYW0oKSBub3cgcmFpc2VzIGEgUGVybWlzc2lvbkVycm9yIGlmIHRoZSB1c2VyCisgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCiAtIElzc3VlICMyNjU2MDogQXZvaWQgcG90ZW50aWFsIFZhbHVlRXJyb3IgaW4gQmFzZUhhbmRsZXIuc3RhcnRfcmVzcG9uc2UuCiAgIEluaXRpYWwgcGF0Y2ggYnkgUGV0ZXIgSW5nbGVzYnkuCiAKKy0gSXNzdWUgIzI2NTY3OiBBZGQgYSBuZXcgZnVuY3Rpb24gOmM6ZnVuYzpgUHlFcnJfUmVzb3VyY2VXYXJuaW5nYCBmdW5jdGlvbiB0bworICBwYXNzIHRoZSBkZXN0cm95ZWQgb2JqZWN0LiBBZGQgYSAqc291cmNlKiBhdHRyaWJ1dGUgdG8KKyAgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuIEFkZCB3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSB3aGljaCB1c2VzCisgIHRyYWNlbWFsbG9jIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIHNvdXJjZSBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNjMxMzogc3NsLnB5IF9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgaWYgd2luZG93cwogICBjZXJ0IHN0b3JlIGlzIGVtcHR5LiBQYXRjaCBieSBCYWppLgogCkBAIC0xMDY4LDI0ICsyNTYzLDM5IEBACiAtIElzc3VlICMyMzcxODogRml4ZWQgcGFyc2luZyB0aW1lIGluIHdlZWsgMCBiZWZvcmUgSmFuIDEuICBPcmlnaW5hbCBwYXRjaCBieQogICBUYW3DoXMgQmVuY2UgR2VkYWkuCiAKKy0gSXNzdWUgIzI2MzIzOiBBZGQgTW9jay5hc3NlcnRfY2FsbGVkKCkgYW5kIE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgbWV0aG9kcyB0byB1bml0dGVzdC5tb2NrLiBQYXRjaCB3cml0dGVuIGJ5IEFtaXQgU2FoYS4KKwogLSBJc3N1ZSAjMjA1ODk6IEludm9raW5nIFBhdGgub3duZXIoKSBhbmQgUGF0aC5ncm91cCgpIG9uIFdpbmRvd3Mgbm93IHJhaXNlCiAgIE5vdEltcGxlbWVudGVkRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvci4KIAogLSBJc3N1ZSAjMjYxNzc6IEZpeGVkIHRoZSBrZXlzKCkgbWV0aG9kIGZvciBDYW52YXMgYW5kIFNjcm9sbGJhciB3aWRnZXRzLgogCi0tIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLgotICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCistIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIGZpbGVpbnB1dC4KKyAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorCistIElzc3VlICMxOTQ3NTogQWRkZWQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgdG8gdGhlIGRhdGV0aW1lCisgIGlzb2Zvcm1hdCgpIG1ldGhvZCB0byBjaG9vc2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgdGltZSBjb21wb25lbnQuCiAKIC0gSXNzdWUgIzIyMDI6IEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbgogICBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyLmdldF9hbGdvcml0aG1faW1wbHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdGhpZXUKICAgRHVwdXkuCiAKKy0gSXNzdWUgIzI2MTY3OiBNaW5pbWl6ZWQgb3ZlcmhlYWQgaW4gY29weS5jb3B5KCkgYW5kIGNvcHkuZGVlcGNvcHkoKS4KKyAgT3B0aW1pemVkIGNvcHlpbmcgYW5kIGRlZXBjb3B5aW5nIGJ5dGVhcnJheXMsIE5vdEltcGxlbWVudGVkLCBzbGljZXMsCisgIHNob3J0IGxpc3RzLCB0dXBsZXMsIGRpY3RzLCBzZXRzLgorCiAtIElzc3VlICMyNTcxODogRml4ZWQgcGlja2xpbmcgYW5kIGNvcHlpbmcgdGhlIGFjY3VtdWxhdGUoKSBpdGVyYXRvciB3aXRoCiAgIHRvdGFsIGlzIE5vbmUuCiAKIC0gSXNzdWUgIzI2NDc1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkKICAgZmxhZy4KIAorLSBJc3N1ZSAjMjY0ODI6IEFsbG93ZWQgcGlja2xpbmcgcmVjdXJzaXZlIGRlcXVldWVzLgorCistIElzc3VlICMyNjMzNTogTWFrZSBtbWFwLndyaXRlKCkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlCisgIG90aGVyIHdyaXRlIG1ldGhvZHMuICBQYXRjaCBieSBKYWt1YiBTdGFzaWFrLgorCiAtIElzc3VlICMyNjQ1NzogRml4ZWQgdGhlIHN1Ym5ldHMoKSBtZXRob2RzIGluIElQIG5ldHdvcmsgY2xhc3NlcyBmb3IgdGhlIGNhc2UKICAgd2hlbiByZXN1bHRpbmcgcHJlZml4IGxlbmd0aCBpcyBlcXVhbCB0byBtYXhpbWFsIHByZWZpeCBsZW5ndGguCiAgIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgpAQCAtMTEwMiw3ICsyNjEyLDcgQEAKIAogLSBJc3N1ZSAjMjYxODY6IFJlbW92ZSBhbiBpbnZhbGlkIHR5cGUgY2hlY2sgaW4gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci4KIAotLSBJc3N1ZSAjMjYzNjc6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgcmFpc2VzIFN5c3RlbUVycm9yIGxpa2UKKy0gSXNzdWUgIzI2MzY3OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHJhaXNlcyBJbXBvcnRFcnJvciBsaWtlCiAgIGJ1aWx0aW5zLl9faW1wb3J0X18oKSB3aGVuIGBgbGV2ZWxgYCBpcyBzcGVjaWZpZWQgYnV0IHdpdGhvdXQgYW4gYWNjb21wYW55aW5nCiAgIHBhY2thZ2Ugc3BlY2lmaWVkLgogCkBAIC0xMTEwLDE5ICsyNjIwLDM5IEBACiAgIHRoZSBjb25uZWN0ZWQgc29ja2V0KSB3aGVuIHZlcmlmeV9yZXF1ZXN0KCkgcmV0dXJucyBmYWxzZS4gIFBhdGNoIGJ5IEF2aXYKICAgUGFsaXZvZGEuCiAKKy0gSXNzdWUgIzIzNDMwOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlciBtb2R1bGUgdG8gb25seSBjYXRjaCBleGNlcHRpb25zCisgIHJhaXNlZCBmcm9tIGEgcmVxdWVzdCBoYW5kbGVyIHRoYXQgYXJlIGRlcml2ZWQgZnJvbSBFeGNlcHRpb24gKGluc3RlYWQgb2YKKyAgQmFzZUV4Y2VwdGlvbikuICBUaGVyZWZvcmUgU3lzdGVtRXhpdCBhbmQgS2V5Ym9hcmRJbnRlcnJ1cHQgbm8gbG9uZ2VyCisgIHRyaWdnZXIgdGhlIGhhbmRsZV9lcnJvcigpIG1ldGhvZCwgYW5kIHdpbGwgbm93IHRvIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQKKyAgc2VydmVyLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzI1OTM5OiBPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4KICAgc3NsLmVudW1fY2VydGlmaWNhdGVzLgogCiAtIElzc3VlICMyNTk5NTogb3Mud2FsaygpIG5vIGxvbmdlciB1c2VzIEZEcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHRyZWUgZGVwdGguCiAKKy0gSXNzdWUgIzI1OTk0OiBBZGRlZCB0aGUgY2xvc2UoKSBtZXRob2QgYW5kIHRoZSBzdXBwb3J0IG9mIHRoZSBjb250ZXh0IG1hbmFnZXIKKyAgcHJvdG9jb2wgZm9yIHRoZSBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCisKKy0gSXNzdWUgIzIzOTkyOiBtdWx0aXByb2Nlc3Npbmc6IG1ha2UgTWFwUmVzdWx0IG5vdCBmYWlsLWZhc3QgdXBvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI2MjQzOiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIHRvIHpsaWIuY29tcHJlc3MoKS4gIFBhdGNoIGJ5IEF2aXYKKyAgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2MTE3OiBUaGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yIG5vdyBjbG9zZXMgZmlsZSBkZXNjcmlwdG9yIG5vdCBvbmx5CiAgIHdoZW4gdGhlIGl0ZXJhdGlvbiBpcyBmaW5pc2hlZCwgYnV0IHdoZW4gaXQgd2FzIGZhaWxlZCB3aXRoIGVycm9yLgogCistIElzc3VlICMyNTk0OTogX19kaWN0X18gZm9yIGFuIE9yZGVyZWREaWN0IGluc3RhbmNlIGlzIG5vdyBjcmVhdGVkIG9ubHkgd2hlbgorICBuZWVkZWQuCisKIC0gSXNzdWUgIzI1OTExOiBSZXN0b3JlZCBzdXBwb3J0IG9mIGJ5dGVzIHBhdGhzIGluIG9zLndhbGsoKSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMyNjA0NTogQWRkIFVURi04IHN1Z2dlc3Rpb24gdG8gZXJyb3IgbWVzc2FnZSB3aGVuIHBvc3RpbmcgYQogICBub24tTGF0aW4tMSBzdHJpbmcgd2l0aCBodHRwLmNsaWVudC4KIAorLSBJc3N1ZSAjMjYwMzk6IEFkZGVkIHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoKSBhbmQgemlwaW5mby5aaXBJbmZvLmlzX2RpcigpLgorICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMTI5MjM6IFJlc2V0IEZhbmN5VVJMb3BlbmVyJ3MgcmVkaXJlY3QgY291bnRlciBldmVuIGlmIHRoZXJlIGlzIGFuCiAgIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgQnJpYW4gQnJhemlsIGFuZCBEYW5pZWwgUm9jY28uCiAKQEAgLTExNDMsNiArMjY3MywxMCBAQAogICBnZXRob3N0YnluYW1lX2V4KCkgZnVuY3Rpb25zIG9mIHRoZSBzb2NrZXQgbW9kdWxlIG5vdyBkZWNvZGUgdGhlIGhvc3RuYW1lCiAgIGZyb20gdGhlIEFOU0kgY29kZSBwYWdlIHJhdGhlciB0aGFuIFVURi04LgogCistIElzc3VlICMyNjA5OTogVGhlIHNpdGUgbW9kdWxlIG5vdyB3cml0ZXMgYW4gZXJyb3IgaW50byBzdGRlcnIgaWYKKyAgc2l0ZWN1c3RvbWl6ZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIGJ1dCBleGVjdXRpbmcgdGhlIG1vZHVsZSByYWlzZSBhbgorICBJbXBvcnRFcnJvci4gU2FtZSBjaGFuZ2UgZm9yIHVzZXJjdXN0b21pemUuCisKIC0gSXNzdWUgIzI2MTQ3OiB4bWxycGMgbm93IHdvcmtzIHdpdGggc3RyaW5ncyBub3QgZW5jb2RhYmxlIHdpdGggdXNlZAogICBub24tVVRGLTggZW5jb2RpbmcuCiAKQEAgLTExNTMsMTMgKzI2ODcsMjEgQEAKIC0gSXNzdWUgIzI2MDEzOiBBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggYnJva2VuIHByb3RvY29sIDIgcGlja2xlcyBjcmVhdGVkCiAgIGluIG9sZCBQeXRob24gMyB2ZXJzaW9ucyAoMy40LjMgYW5kIGxvd2VyKS4KIAorLSBJc3N1ZSAjMjYxMjk6IERlcHJlY2F0ZWQgYWNjZXB0aW5nIG5vbi1pbnRlZ2VycyBpbiBncnAuZ2V0Z3JnaWQoKS4KKwogLSBJc3N1ZSAjMjU4NTA6IFVzZSBjcm9zcy1jb21waWxhdGlvbiBieSBkZWZhdWx0IGZvciA2NC1iaXQgV2luZG93cy4KIAotLSBJc3N1ZSAjMTc2MzM6IEltcHJvdmUgemlwaW1wb3J0J3Mgc3VwcG9ydCBmb3IgbmFtZXNwYWNlIHBhY2thZ2VzLgorLSBJc3N1ZSAjMjU4MjI6IEFkZCBkb2NzdHJpbmdzIHRvIHRoZSBmaWVsZHMgb2YgdXJsbGliLnBhcnNlIHJlc3VsdHMuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFN3YXRpIEphaXN3YWwuCisKKy0gSXNzdWUgIzIyNjQyOiBDb252ZXJ0IHRyYWNlIG1vZHVsZSBvcHRpb24gcGFyc2luZyBtZWNoYW5pc20gdG8gYXJncGFyc2UuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNpbGVudEdob3N0LgogCiAtIElzc3VlICMyNDcwNTogRml4IHN5c2NvbmZpZy5fcGFyc2VfbWFrZWZpbGUgbm90IGV4cGFuZGluZyAke30gdmFycwogICBhcHBlYXJpbmcgYmVmb3JlICQoKSB2YXJzLgogCistIElzc3VlICMyNjA2OTogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFwaXMgaW4gdGhlIHRyYWNlIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjIxMzg6IEZpeCBtb2NrLnBhdGNoIGJlaGF2aW9yIHdoZW4gcGF0Y2hpbmcgZGVzY3JpcHRvcnMuIFJlc3RvcmUKICAgb3JpZ2luYWwgdmFsdWVzIGFmdGVyIHBhdGNoaW5nLiBQYXRjaCBjb250cmlidXRlZCBieSBTZWFuIE1jQ3VsbHkuCiAKQEAgLTExNzIsMTMgKzI3MTQsMjggQEAKIC0gSXNzdWUgIzI0MTIwOiBJZ25vcmUgUGVybWlzc2lvbkVycm9yIHdoZW4gdHJhdmVyc2luZyBhIHRyZWUgd2l0aAogICBwYXRobGliLlBhdGguW3JdZ2xvYigpLiAgUGF0Y2ggYnkgVWxyaWNoIFBldHJpLgogCistIElzc3VlICMyMTgxNTogQWNjZXB0IF0gY2hhcmFjdGVycyBpbiB0aGUgZGF0YSBwb3J0aW9uIG9mIGltYXAgcmVzcG9uc2VzLAorICBpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZsYWdzIHdpdGggc3F1YXJlIGJyYWNrZXRzIGFjY2VwdGVkIGFuZCBwcm9kdWNlZAorICBieSBzZXJ2ZXJzIHN1Y2ggYXMgZ21haWwuCisKIC0gSXNzdWUgIzI1NDQ3OiBmaWxlaW5wdXQgbm93IHVzZXMgc3lzLnN0ZGluIGFzLWlzIGlmIGl0IGRvZXMgbm90IGhhdmUgYQogICBidWZmZXIgYXR0cmlidXRlIChyZXN0b3JlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KIAorLSBJc3N1ZSAjMjU5NzE6IE9wdGltaXplZCBjcmVhdGluZyBGcmFjdGlvbnMgZnJvbSBmbG9hdHMgYnkgMiB0aW1lcyBhbmQgZnJvbQorICBEZWNpbWFscyBieSAzIHRpbWVzLgorCistIElzc3VlICMyNTgwMjogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZCB0aGUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZSgpLgorCistIElzc3VlICMyNTkyODogQWRkIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpLgorCiAtIElzc3VlICMyNTQ0NzogQ29weWluZyB0aGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3Qgbm93IGFsd2F5cyB3b3JrcywKLSAgaW5kZXBlbmRlZGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCisgIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKICAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKKy0gSXNzdWUgIzI1NzY4OiBIYXZlIHRoZSBmdW5jdGlvbnMgaW4gY29tcGlsZWFsbCByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZCBvZgorICBpbnRzIGFuZCBhZGQgcHJvcGVyIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIGZvciB0aGUgcmV0dXJuIHZhbHVlcy4KKwogLSBJc3N1ZSAjMjQxMDM6IEZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLlhNTFB1bGxQYXJzZXIuCiAKIC0gSXNzdWUgIzI1ODYwOiBvcy5md2FsaygpIG5vIGxvbmdlciBza2lwcyByZW1haW5pbmcgZGlyZWN0b3JpZXMgd2hlbiBlcnJvcgpAQCAtMTE4Niw4ICsyNzQzLDIyIEBACiAKIC0gSXNzdWUgIzI1OTE0OiBGaXhlZCBhbmQgc2ltcGxpZmllZCBPcmRlcmVkRGljdC5fX3NpemVvZl9fLgogCistIElzc3VlICMyNTg2OTogT3B0aW1pemVkIGRlZXBjb3B5aW5nIEVsZW1lbnRUcmVlOyBpdCBpcyBub3cgMjAgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTg3MzogT3B0aW1pemVkIGl0ZXJhdGluZyBFbGVtZW50VHJlZS4gIEl0ZXJhdGluZyBlbGVtZW50cworICBFbGVtZW50Lml0ZXIoKSBpcyBub3cgNDAlIGZhc3RlciwgaXRlcmF0aW5nIHRleHQgRWxlbWVudC5pdGVydGV4dCgpCisgIGlzIG5vdyB1cCB0byAyLjUgdGltZXMgZmFzdGVyLgorCiAtIElzc3VlICMyNTkwMjogRml4ZWQgdmFyaW91cyByZWZjb3VudCBpc3N1ZXMgaW4gRWxlbWVudFRyZWUgaXRlcmF0aW9uLgogCistIElzc3VlICMyMjIyNzogVGhlIFRhckZpbGUgaXRlcmF0b3IgaXMgcmVpbXBsZW1lbnRlZCB1c2luZyBnZW5lcmF0b3IuCisgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlciB0aGF0IHVzaW5nIGNsYXNzLgorCistIElzc3VlICMyNTYzODogT3B0aW1pemVkIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpOyBpdCBpcyBub3cgMnggZmFzdGVyLgorICBPcHRpbWl6ZWQgRWxlbWVudFRyZWUgcGFyc2luZzsgaXQgaXMgbm93IDEwJSBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBkZXRlY3RpbmcgZXJyb3JzIGluIGJyb2tlbiBwaWNrbGUgZGF0YS4KKwogLSBJc3N1ZSAjMjU3MTc6IFJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiB0b2xlcmF0aW5nIG1vc3QgZnN0YXQoKQogICBlcnJvcnMgd2hlbiBvcGVuaW5nIGZpbGVzLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGluIDMuNWExLCBhbmQgc3RvcHBlZAogICBhbm9ueW1vdXMgdGVtcG9yYXJ5IGZpbGVzIGZyb20gd29ya2luZyBpbiBzcGVjaWFsIGNhc2VzLgpAQCAtMTE5OSw2ICsyNzcwLDkgQEAKIC0gSXNzdWUgIzI1NzY0OiBJbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUsIHByZXNlcnZlIGFueSBleGNlcHRpb24gY2F1c2VkIGJ5CiAgIGZvcmsoKSBmYWlsdXJlIHdoZW4gcHJlZXhlY19mbiBpcyB1c2VkLgogCistIElzc3VlICMyNTc3MTogVHdlYWsgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKQorICB3aGVuICdwYWNrYWdlJyBpc24ndCBzcGVjaWZpZWQgYnV0IG5lY2Vzc2FyeS4KKwogLSBJc3N1ZSAjNjQ3ODogX3N0cnB0aW1lJ3MgcmVnZXhwIGNhY2hlIG5vdyBpcyByZXNldCBhZnRlciBjaGFuZ2luZyB0aW1lem9uZQogICB3aXRoIHRpbWUudHpzZXQoKS4KIApAQCAtMTIyMCw2ICsyNzk0LDkgQEAKIC0gSXNzdWUgIzEwMTMxOiBGaXhlZCBkZWVwIGNvcHlpbmcgb2YgbWluaWRvbSBkb2N1bWVudHMuICBCYXNlZCBvbiBwYXRjaAogICBieSBNYXJpYW4gR2FuaXNpbi4KIAorLSBJc3N1ZSAjNzk5MDogZGlyKCkgb24gRWxlbWVudFRyZWUuRWxlbWVudCBub3cgbGlzdHMgcHJvcGVydGllczogInRhZyIsCisgICJ0ZXh0IiwgInRhaWwiIGFuZCAiYXR0cmliIi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCiAtIElzc3VlICMyNTcyNTogRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBwaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKICAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCiAKQEAgLTEyMzUsNiArMjgxMiwyMDMgQEAKIC0gSXNzdWUgIzI1NjI0OiBaaXBGaWxlIG5vdyBhbHdheXMgd3JpdGVzIGEgWklQX1NUT1JFRCBoZWFkZXIgZm9yIGRpcmVjdG9yeQogICBlbnRyaWVzLiAgUGF0Y2ggYnkgRGluZ3l1YW4gV2FuZy4KIAorLSBJc3N1ZSAjMjU2MjY6IENoYW5nZSB0aHJlZSB6bGliIGZ1bmN0aW9ucyB0byBhY2NlcHQgc2l6ZXMgdGhhdCBmaXQgaW4KKyAgUHlfc3NpemVfdCwgYnV0IGludGVybmFsbHkgY2FwIHRob3NlIHNpemVzIHRvIFVJTlRfTUFYLiAgVGhpcyByZXNvbHZlcyBhCisgIHJlZ3Jlc3Npb24gaW4gMy41IHdoZXJlIEd6aXBGaWxlLnJlYWQoKSBmYWlsZWQgdG8gcmVhZCBjaHVua3MgbGFyZ2VyIHRoYW4gMgorICBvciA0IEdpQi4gIFRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgemxpYi5EZWNvbXByZXNzLmRlY29tcHJlc3MoKSBtYXhfbGVuZ3RoCisgIHBhcmFtZXRlciwgdGhlIHpsaWIuZGVjb21wcmVzcygpIGJ1ZnNpemUgcGFyYW1ldGVyLCBhbmQgdGhlCisgIHpsaWIuRGVjb21wcmVzcy5mbHVzaCgpIGxlbmd0aCBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzI1NTgzOiBBdm9pZCBpbmNvcnJlY3QgZXJyb3JzIHJhaXNlZCBieSBvcy5tYWtlZGlycyhleGlzdF9vaz1UcnVlKQorICB3aGVuIHRoZSBPUyBnaXZlcyBwcmlvcml0eSB0byBlcnJvcnMgc3VjaCBhcyBFQUNDRVMgb3ZlciBFRVhJU1QuCisKKy0gSXNzdWUgIzI1NTkzOiBDaGFuZ2Ugc2VtYW50aWNzIG9mIEV2ZW50TG9vcC5zdG9wKCkgaW4gYXN5bmNpby4KKworLSBJc3N1ZSAjNjk3MzogV2hlbiB3ZSBrbm93IGEgc3VicHJvY2Vzcy5Qb3BlbiBwcm9jZXNzIGhhcyBkaWVkLCBkbworICBub3QgYWxsb3cgdGhlIHNlbmRfc2lnbmFsKCksIHRlcm1pbmF0ZSgpLCBvciBraWxsKCkgbWV0aG9kcyB0byBkbworICBhbnl0aGluZyBhcyB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHNpZ25hbCBhIGRpZmZlcmVudCBwcm9jZXNzLgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjYWxlbmRhciwgY3N2LCBlbnVtLCBmaWxlaW5wdXQsIGZ0cGxpYiwgbG9nZ2luZywKKyAgb3B0cGFyc2UsIHRhcmZpbGUsIHRocmVhZGluZyBhbmQgd2F2ZS4gIEFsc28gYWRkZWQgYQorICB0ZXN0LnN1cHBvcnQuY2hlY2tfX2FsbF9fKCkgaGVscGVyLiAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLCBNYXVybworICBTLiBNLiBSb2RyaWd1ZXMgYW5kIEpvZWwgVGFkZGVpLgorCistIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgorICBhdHRyaWJ1dGUuICBBbHNvIGNvbXBsZXRlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBzbG90cworICB3aGljaCBhcmUgbGlzdGVkIGJ5IGRpcigpIGJ1dCBub3QgeWV0IGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UuCisKKy0gSXNzdWUgIzI1NDk4OiBGaXggYSBjcmFzaCB3aGVuIGdhcmJhZ2UtY29sbGVjdGluZyBjdHlwZXMgb2JqZWN0cyBjcmVhdGVkCisgIGJ5IHdyYXBwaW5nIGEgbWVtb3J5dmlldy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBtYWRlIGluIDMuNWExLiAgQmFzZWQKKyAgb24gcGF0Y2ggYnkgRXJ5a3N1bi4KKworLSBJc3N1ZSAjMjU1ODQ6IEFkZGVkICJlc2NhcGUiIHRvIHRoZSBfX2FsbF9fIGxpc3QgaW4gdGhlIGdsb2IgbW9kdWxlLgorCistIElzc3VlICMyNTU4NDogRml4ZWQgcmVjdXJzaXZlIGdsb2IoKSB3aXRoIHBhdHRlcm5zIHN0YXJ0aW5nIHdpdGggJ1wqXConLgorCistIElzc3VlICMyNTQ0NjogRml4IHJlZ3Jlc3Npb24gaW4gc210cGxpYidzIEFVVEggTE9HSU4gc3VwcG9ydC4KKworLSBJc3N1ZSAjMTgwMTA6IEZpeCB0aGUgcHlkb2Mgd2ViIHNlcnZlcidzIG1vZHVsZSBzZWFyY2ggZnVuY3Rpb24gdG8gaGFuZGxlCisgIGV4Y2VwdGlvbnMgZnJvbSBpbXBvcnRpbmcgcGFja2FnZXMuCisKKy0gSXNzdWUgIzI1NTU0OiBHb3QgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gcmVndWxhciBleHByZXNzaW9uIHBhcnNpbmcuCisKKy0gSXNzdWUgIzE4OTczOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUgbm93IHVzZXMgYXJncGFyc2UKKyAgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjU1MTA6IGZpbGVpbnB1dC5GaWxlSW5wdXQucmVhZGxpbmUoKSBub3cgcmV0dXJucyBiJycgaW5zdGVhZCBvZiAnJworICBhdCB0aGUgZW5kIGlmIHRoZSBGaWxlSW5wdXQgd2FzIG9wZW5lZCB3aXRoIGJpbmFyeSBtb2RlLgorICBQYXRjaCBieSBSeW9zdWtlIEl0by4KKworLSBJc3N1ZSAjMjU1MDM6IEZpeGVkIGluc3BlY3QuZ2V0ZG9jKCkgZm9yIGluaGVyaXRlZCBkb2NzdHJpbmdzIG9mIHByb3BlcnRpZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEpvaG4gTWFyayBWYW5kZW5iZXJnLgorCistIElzc3VlICMyNTUxNTogQWx3YXlzIHVzZSBvcy51cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbW5lc3MgaW4gdXVpZC51dWlkNC4KKworLSBJc3N1ZSAjMjE4Mjc6IEZpeGVkIHRleHR3cmFwLmRlZGVudCgpIGZvciB0aGUgY2FzZSB3aGVuIGxhcmdlc3QgY29tbW9uCisgIHdoaXRlc3BhY2UgaXMgYSBzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCisKKy0gSXNzdWUgIzI1NDQ3OiBUaGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3RzIG5vdyBjYW4gYmUgY29waWVkIGFuZCBwaWNrbGVkCisgIChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIG9iamVjdCB1bmNoYW5nZWQpLgorCistIElzc3VlICMyNTM5MDogdHlwaW5nOiBEb24ndCBjcmFzaCBvbiBVbmlvbltzdHIsIFBhdHRlcm5dLgorCistIElzc3VlICMyNTQ0MTogYXN5bmNpbzogUmFpc2UgZXJyb3IgZnJvbSBkcmFpbigpIHdoZW4gc29ja2V0IGlzIGNsb3NlZC4KKworLSBJc3N1ZSAjMjU0MTA6IENsZWFuZWQgdXAgYW5kIGZpeGVkIG1pbm9yIGJ1Z3MgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZgorICBPcmRlcmVkRGljdC4KKworLSBJc3N1ZSAjMjU0MTE6IEltcHJvdmVkIFVuaWNvZGUgc3VwcG9ydCBpbiBTTVRQSGFuZGxlciB0aHJvdWdoIGJldHRlciB1c2Ugb2YKKyAgdGhlIGVtYWlsIHBhY2thZ2UuIFRoYW5rcyB0byB1c2VyIHNpbW9uMDQgZm9yIHRoZSBwYXRjaC4KKworLSBNb3ZlIHRoZSBpbXAgbW9kdWxlIGZyb20gYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjU0MDc6IFJlbW92ZSBtZW50aW9ucyBvZiB0aGUgZm9ybWF0dGVyIG1vZHVsZSBiZWluZyByZW1vdmVkIGluCisgIFB5dGhvbiAzLjYuCisKKy0gSXNzdWUgIzI1NDA2OiBGaXhlZCBhIGJ1ZyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0Lm1vdmVfdG9fZW5kKCkKKyAgdGhhdCBjYXVzZWQgc2VnbWVudGF0aW9uIGZhdWx0IG9yIGhhbmcgaW4gaXRlcmF0aW5nIGFmdGVyIG1vdmluZyBzZXZlcmFsCisgIGl0ZW1zIHRvIHRoZSBzdGFydCBvZiBvcmRlcmVkIGRpY3QuCisKKy0gSXNzdWUgIzI1MzgyOiBwaWNrbGV0b29scy5kaXMoKSBub3cgb3V0cHV0cyBpbXBsaWNpdCBtZW1vIGluZGV4IGZvciB0aGUKKyAgTUVNT0laRSBvcGNvZGUuCisKKy0gSXNzdWUgIzI1MzU3OiBBZGQgYW4gb3B0aW9uYWwgbmV3bGluZSBwYXJhbWVyIHRvIGJpbmFzY2lpLmIyYV9iYXNlNjQoKS4KKyAgYmFzZTY0LmI2NGVuY29kZSgpIHVzZXMgaXQgdG8gYXZvaWQgYSBtZW1vcnkgY29weS4KKworLSBJc3N1ZSAjMjQxNjQ6IE9iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cywKKyAgY2FuIG5vdyBiZSBwaWNrbGVkIHVzaW5nIHBpY2tsZSBwcm90b2NvbHMgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCisKKy0gSXNzdWUgIzI1MzY0OiB6aXBmaWxlIG5vdyB3b3JrcyBpbiB0aHJlYWRzIGRpc2FibGVkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjUzMjg6IHNtdHBkJ3MgU01UUENoYW5uZWwgbm93IGNvcnJlY3RseSByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGJvdGgKKyAgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBhcmUgc2V0IHRvIHRydWUuCisKKy0gSXNzdWUgIzE2MDk5OiBSb2JvdEZpbGVQYXJzZXIgbm93IHN1cHBvcnRzIENyYXdsLWRlbGF5IGFuZCBSZXF1ZXN0LXJhdGUKKyAgZXh0ZW5zaW9ucy4gIFBhdGNoIGJ5IE5pa29sYXkgQm9nb3ljaGV2LgorCistIElzc3VlICMyNTMxNjogZGlzdHV0aWxzIHJhaXNlcyBPU0Vycm9yIGluc3RlYWQgb2YgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorICB3aGVuIE1TVkMgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMjUzODA6IEZpeGVkIHByb3RvY29sIGZvciB0aGUgU1RBQ0tfR0xPQkFMIG9wY29kZSBpbgorICBwaWNrbGV0b29scy5vcGNvZGVzLgorCistIElzc3VlICMyMzk3MjogVXBkYXRlcyBhc3luY2lvIGRhdGFncmFtIGNyZWF0ZSBtZXRob2QgYWxsb3dpbmcgcmV1c2Vwb3J0CisgIGFuZCByZXVzZWFkZHIgc29ja2V0IG9wdGlvbnMgdG8gYmUgc2V0IHByaW9yIHRvIGJpbmRpbmcgdGhlIHNvY2tldC4KKyAgTWlycm9yaW5nIHRoZSBleGlzdGluZyBhc3luY2lvIGNyZWF0ZV9zZXJ2ZXIgbWV0aG9kIHRoZSByZXVzZWFkZHIgb3B0aW9uCisgIGZvciBkYXRhZ3JhbSBzb2NrZXRzIGRlZmF1bHRzIHRvIFRydWUgaWYgdGhlIE8vUyBpcyAncG9zaXgnIChleGNlcHQgaWYgdGhlCisgIHBsYXRmb3JtIGlzIEN5Z3dpbikuIFBhdGNoIGJ5IENocmlzIExhd3MuCisKKy0gSXNzdWUgIzI1MzA0OiBBZGQgYXN5bmNpby5ydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoKS4gIFRoaXMgbGV0cyB5b3UKKyAgc3VibWl0IGEgY29yb3V0aW5lIHRvIGEgbG9vcCBmcm9tIGFub3RoZXIgdGhyZWFkLCByZXR1cm5pbmcgYQorICBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLiAgQnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI1MjMyOiBGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUKKyAgZmlyc3QgcXVlc3Rpb24gbWFyayAoPykgcmF0aGVyIHRoYW4gdGhlIGxhc3QuIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI0NjU3OiBQcmV2ZW50IENHSVJlcXVlc3RIYW5kbGVyIGZyb20gY29sbGFwc2luZyBzbGFzaGVzIGluIHRoZQorICBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1Mjg3OiBEb24ndCBhZGQgY3J5cHQuTUVUSE9EX0NSWVBUIHRvIGNyeXB0Lm1ldGhvZHMgaWYgaXQncyBub3QKKyAgc3VwcG9ydGVkLiBDaGVjayBpZiBpdCBpcyBzdXBwb3J0ZWQsIGl0IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgZm9yCisgIGV4YW1wbGUuCisKKy0gSXNzdWUgIzIzNjAwOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby5mcm9tdXRjKCkgd2FzIHJldHVybmluZworICB3cm9uZyByZXN1bHRzIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzI1MjAzOiBGYWlsZWQgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoKSBubyBsb25nZXIgbGVmdCB0aGUKKyAgbW9kdWxlIGluIGluY29uc2lzdGVudCBzdGF0ZS4KKworLSBJc3N1ZSAjMjUwMTE6IHJsY29tcGxldGVyIG5vdyBvbWl0cyBwcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyB1bmxlc3MKKyAgdGhlIHByZWZpeCBzdGFydHMgd2l0aCB1bmRlcnNjb3Jlcy4KKworLSBJc3N1ZSAjMjUyMDk6IHJsY29tcGxldGVyIG5vdyBjYW4gYWRkIGEgc3BhY2Ugb3IgYSBjb2xvbiBhZnRlciBjb21wbGV0ZWQKKyAga2V5d29yZC4KKworLSBJc3N1ZSAjMjIyNDE6IHRpbWV6b25lLnV0YyBuYW1lIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90ICdVVEMtMDA6MDAnLgorCistIElzc3VlICMyMzUxNzogZnJvbXRpbWVzdGFtcCgpIGFuZCB1dGNmcm9tdGltZXN0YW1wKCkgbWV0aG9kcyBvZgorICBkYXRldGltZS5kYXRldGltZSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvCisgIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIChST1VORF9IQUxGX0VWRU4pLCBhcyByb3VuZChmbG9hdCksIGluc3RlYWQgb2Ygcm91bmRpbmcKKyAgdG93YXJkcyAtSW5maW5pdHkgKFJPVU5EX0ZMT09SKS4KKworLSBJc3N1ZSAjMjM1NTI6IFRpbWVpdCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCisgIGJldHdlZW4gYmVzdCBhbmQgd29yc3QgdGltZXMuIFBhdGNoIGZyb20gU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ2MzM6IHNpdGUtcGFja2FnZXMvUkVBRE1FIC0+IFJFQURNRS50eHQuCisKKy0gSXNzdWUgIzI0ODc5OiBoZWxwKCkgYW5kIHB5ZG9jIGNhbiBub3cgbGlzdCBuYW1lZCB0dXBsZSBmaWVsZHMgaW4gdGhlCisgIG9yZGVyIHRoZXkgd2VyZSBkZWZpbmVkIHJhdGhlciB0aGFuIGFscGhhYmV0aWNhbGx5LiAgVGhlIG9yZGVyaW5nIGlzCisgIGRldGVybWluZWQgYnkgdGhlIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisKKy0gSXNzdWUgIzI0ODc0OiBJbXByb3ZlIHNwZWVkIG9mIGl0ZXJ0b29scy5jeWNsZSgpIGFuZCBtYWtlIGl0cworICBwaWNrbGUgbW9yZSBjb21wYWN0LgorCistIEZpeCBjcmFzaCBpbiBpdGVydG9vbHMuY3ljbGUuX19zZXRzdGF0ZV9fKCkgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgd2Fzbid0CisgIGEgbGlzdC4KKworLSBJc3N1ZSAjMjAwNTk6IHVybGxpYi5wYXJzZSByYWlzZXMgVmFsdWVFcnJvciBvbiBhbGwgaW52YWxpZCBwb3J0cy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjQzNjA6IEltcHJvdmUgX19yZXByX18gb2YgYXJncGFyc2UuTmFtZXNwYWNlKCkgZm9yIGludmFsaWQKKyAgaWRlbnRpZmllcnMuICBQYXRjaCBieSBNYXR0aGlhcyBCdXNzb25uaWVyLgorCistIElzc3VlICMyMzQyNjogcnVuX3NldHVwIHdhcyBicm9rZW4gaW4gZGlzdHV0aWxzLgorICBQYXRjaCBmcm9tIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlICMxMzkzODogMnRvMyBjb252ZXJ0cyBTdHJpbmdUeXBlcyB0byBhIHR1cGxlLiBQYXRjaCBmcm9tIE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjMjA5MTogb3BlbigpIGFjY2VwdGVkIGEgJ1UnIG1vZGUgc3RyaW5nIGNvbnRhaW5pbmcgJysnLCBidXQgJ1UnIGNhbgorICBvbmx5IGJlIHVzZWQgd2l0aCAncicuIFBhdGNoIGZyb20gSmVmZiBCYWxvZ2ggYW5kIEpvaG4gTydDb25ub3IuCisKKy0gSXNzdWUgIzg1ODU6IGltcHJvdmVkIHRlc3RzIGZvciB6aXBpbXBvcnRlcjIuIFBhdGNoIGZyb20gTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCisgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCisKKy0gSXNzdWUgIzI0NDI2OiBGYXN0IHNlYXJjaGluZyBvcHRpbWl6YXRpb24gaW4gcmVndWxhciBleHByZXNzaW9ucyBub3cgd29ya3MKKyAgZm9yIHBhdHRlcm5zIHRoYXQgc3RhcnRzIHdpdGggY2FwdHVyaW5nIGdyb3Vwcy4gIEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbgorICBub3cgY2FuJ3QgYmUgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLgorCistIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCisgIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgZGVwcmVjYXRlZCBpbnNwZWN0LmdldG1vZHVsZWluZm8gZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI1NTc4OiBGaXggKGFub3RoZXIpIG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VyKCkuCisKKy0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZworICBzc2wuU1NMQ29udGV4dC4KKworLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLSBJc3N1ZSAjMjU0NzE6IFNvY2tldHMgcmV0dXJuZWQgZnJvbSBhY2NlcHQoKSBzaG91bGRuJ3QgYXBwZWFyIHRvIGJlCisgIG5vbmJsb2NraW5nLgorCistIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCisgIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKwogLSBTa2lwIGdldGFkZHJpbmZvIGlmIGhvc3QgaXMgYWxyZWFkeSByZXNvbHZlZC4KICAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCiAKQEAgLTEyNTQsNTMgKzMwMjgsOSBAQAogCiAtIElzc3VlICMyNzA0MTogYXN5bmNpbzogQWRkIGxvb3AuY3JlYXRlX2Z1dHVyZSBtZXRob2QKIAotLSBJc3N1ZSAjMjcyMjM6IGFzeW5jaW86IEZpeCBfcmVhZF9yZWFkeSBhbmQgX3dyaXRlX3JlYWR5IHRvIHJlc3BlY3QKLSAgX2Nvbm5fbG9zdC4KLSAgUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KLQotLSBJc3N1ZSAjMjI5NzA6IGFzeW5jaW86IEZpeCBpbmNvbnNpc3RlbmN5IGNhbmNlbGxpbmcgQ29uZGl0aW9uLndhaXQuCi0gIFBhdGNoIGJ5IERhdmlkIENvbGVzLgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCi0gIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAotICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKLSAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KLQotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCi0gIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgotICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCi0gIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0Ci0KLS0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKLSAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KLSAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgotICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgotCi0tIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgotCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIElETEUncyB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KLQotLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCi0KLS0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgotCiAtIElzc3VlICMyMDY0MDogQWRkIHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0LgogICBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCiAKQEAgLTEzMTQsMTQgKzMwNDQsMTAzIEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKKy0gSXNzdWUgIzE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQorICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgorICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzI0NDU1OiBQcmV2ZW50IElETEUgZnJvbSBoYW5naW5nIHdoZW4gYSkgY2xvc2luZyB0aGUgc2hlbGwgd2hpbGUgdGhlCisgIGRlYnVnZ2VyIGlzIGFjdGl2ZSAoMTUzNDcpOyBiKSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSBbWF0gYnV0dG9uCisgICgxNTM0OCk7IGFuZCBjKSBhY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuCisgIFRoZSBwYXRjaCBieSBNYXJrIFJvc2VtYW4gZG9lcyB0aGlzIGJ5IG1ha2luZyB0d28gY2hhbmdlcy4KKyAgMS4gU3VzcGVuZCBhbmQgcmVzdW1lIHRoZSBndWkuaW50ZXJhY3Rpb24gbWV0aG9kIHdpdGggdGhlIHRjbCB2d2FpdAorICBtZWNoYW5pc20gaW50ZW5kZWQgZm9yIHRoaXMgcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLgorICAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkgZXhpc3RpbmcgaW50ZXJhY3Rpb24gdG8gdGVybWluYXRlIGZpcnN0LgorCistIENoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UKKyAgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgdGhlIHByb2dyYW0gcmVmZXJyZWQgdG8gaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nCisgIHVzZXIgcHJvZ3JhbSwgbm90IElETEUgaXRzZWxmLgorCistIElzc3VlICMyNDc1MDogSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUzMTM6IENoYW5nZSB0aGUgaGFuZGxpbmcgb2YgbmV3IGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWVzIHRvIGJldHRlcgorICBhZGRyZXNzIHRoZSBjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLgorICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCisKKy0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKKyAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgVGhlIGZvcm1lciB0YWJzIGFyZSBub3cgYSBzb3J0ZWQKKyAgbGlzdC4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjI3MjY6IFJlLWFjdGl2YXRlIHRoZSBjb25maWcgZGlhbG9nIGhlbHAgYnV0dG9uIHdpdGggc29tZSBjb250ZW50CisgIGFib3V0IHRoZSBvdGhlciBidXR0b25zIGFuZCB0aGUgbmV3IElETEUgRGFyayB0aGVtZS4KKworLSBJc3N1ZSAjMjQ4MjA6IElETEUgbm93IGhhcyBhbiAnSURMRSBEYXJrJyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lLgorICBJdCBpcyBtb3JlIG9yIGxlc3MgSURMRSBDbGFzc2ljIGludmVydGVkLCB3aXRoIGEgY29iYWx0IGJsdWUgYmFja2dyb3VuZC4KKyAgU3RyaW5ncywgY29tbWVudHMsIGtleXdvcmRzLCAuLi4gYXJlIHN0aWxsIGdyZWVuLCByZWQsIG9yYW5nZSwgLi4uIC4KKyAgVG8gdXNlIGl0IHdpdGggSURMRXMgcmVsZWFzZWQgYmVmb3JlIE5vdmVtYmVyIDIwMTUsIGhpdCB0aGUKKyAgJ1NhdmUgYXMgTmV3IEN1c3RvbSBUaGVtZScgYnV0dG9uIGFuZCBlbnRlciBhIG5ldyBuYW1lLAorICBzdWNoIGFzICdDdXN0b20gRGFyaycuICBUaGUgY3VzdG9tIHRoZW1lIHdpbGwgd29yayB3aXRoIGFueSBJRExFCisgIHJlbGVhc2UsIGFuZCBjYW4gYmUgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzI1MjI0OiBSRUFETUUudHh0IGlzIG5vdyBhbiBpZGxlbGliIGluZGV4IGZvciBJRExFIGRldmVsb3BlcnMgYW5kCisgIGN1cmlvdXMgdXNlcnMuICBUaGUgcHJldmlvdXMgdXNlciBjb250ZW50IGlzIG5vdyBpbiB0aGUgSURMRSBkb2MgY2hhcHRlci4KKyAgJ0lETEUnIG5vdyBtZWFucyAnSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBhbmQgTGVhcm5pbmcgRW52aXJvbm1lbnQnLgorCistIElzc3VlICMyNDgyMDogVXNlcnMgY2FuIG5vdyBzZXQgYnJlYWtwb2ludCBjb2xvcnMgaW4KKyAgU2V0dGluZ3MgLT4gQ3VzdG9tIEhpZ2hsaWdodGluZy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5NzI6IEluYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kIG5vdyBtYXRjaGVzIGFjdGl2ZSBzZWxlY3Rpb24KKyAgYmFja2dyb3VuZCwgYXMgY29uZmlndXJlZCBieSB1c2Vycywgb24gYWxsIHN5c3RlbXMuICBGb3VuZCBpdGVtcyBhcmUgbm93CisgIGFsd2F5cyBoaWdobGlnaHRlZCBvbiBXaW5kb3dzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0NTcwOiBJZGxlOiBtYWtlIGNhbGx0aXAgYW5kIGNvbXBsZXRpb24gYm94ZXMgYXBwZWFyIG9uIE1hY3MKKyAgYWZmZWN0ZWQgYnkgYSB0ayByZWdyZXNzaW9uLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTg4OiBJZGxlIFNjcm9sbGVkTGlzdCBjb250ZXh0IG1lbnVzICh1c2VkIGluIGRlYnVnZ2VyKQorICBub3cgd29yayBvbiBNYWMgQXF1YS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ4MDE6IE1ha2UgcmlnaHQtY2xpY2sgZm9yIGNvbnRleHQgbWVudSB3b3JrIG9uIE1hYyBBcXVhLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTczOiBBc3NvY2lhdGUgdGtpbnRlciBtZXNzYWdlYm94ZXMgd2l0aCBhIHNwZWNpZmljIHdpZGdldC4KKyAgRm9yIE1hYyBPU1gsIG1ha2UgdGhlbSBhICdzaGVldCcuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTk4OiBFbmhhbmNlIHRoZSBpbml0aWFsIGh0bWwgdmlld2VyIG5vdyB1c2VkIGZvciBJZGxlIEhlbHAuCisgICogUHJvcGVybHkgaW5kZW50IGZpeGVkLXBpdGNoIHRleHQgKHBhdGNoIGJ5IE1hcmsgUm9zZW1hbikuCisgICogR2l2ZSBjb2RlIHNuaXBwZXQgYSB2ZXJ5IFNwaGlueC1saWtlIGxpZ2h0IGJsdWVpc2gtZ3JheSBiYWNrZ3JvdW5kLgorICAqIFJlLXVzZSBpbml0aWFsIHdpZHRoIGFuZCBoZWlnaHQgc2V0IGJ5IHVzZXJzIGZvciBzaGVsbCBhbmQgZWRpdG9yLgorICAqIFdoZW4gdGhlIFRhYmxlIG9mIENvbnRlbnRzIChUT0MpIG1lbnUgaXMgdXNlZCwgcHV0IHRoZSBzZWN0aW9uIGhlYWRlcgorICBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCisKKy0gSXNzdWUgIzI1MjI1OiBDb25kZW5zZSBhbmQgcmV3cml0ZSBJZGxlIGRvYyBzZWN0aW9uIG9uIHRleHQgY29sb3JzLgorCistIElzc3VlICMyMTk5NTogRXhwbGFpbiBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gSURMRSBhbmQgY29uc29sZSBQeXRob24uCisKKy0gSXNzdWUgIzIyODIwOiBFeHBsYWluIG5lZWQgZm9yICpwcmludCogd2hlbiBydW5uaW5nIGZpbGUgZnJvbSBJZGxlIGVkaXRvci4KKworLSBJc3N1ZSAjMjUyMjQ6IERvYzogYXVnbWVudCBJZGxlIGZlYXR1cmUgbGlzdCBhbmQgbm8tc3VicHJvY2VzcyBzZWN0aW9uLgorCistIElzc3VlICMyNTIxOTogVXBkYXRlIGRvYyBmb3IgSWRsZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgU29tZSB3ZXJlIG1pc3NpbmcgYW5kIG5vdGVzIHdlcmUgbm90IGNvcnJlY3QuCisKKy0gSXNzdWUgIzI0ODYxOiBNb3N0IG9mIGlkbGVsaWIgaXMgcHJpdmF0ZSBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCisgIFVzZSBpZGxlaWIuaWRsZS4qIHRvIHN0YXJ0IElkbGUuIFNlZSBpZGxlbGliLl9faW5pdF9fLl9fZG9jX18uCisKKy0gSXNzdWUgIzI1MTk5OiBJZGxlOiBhZGQgc3luY2hyb25pemF0aW9uIGNvbW1lbnRzIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzE2ODkzOiBSZXBsYWNlIGhlbHAudHh0IHdpdGggaGVscC5odG1sIGZvciBJZGxlIGRvYyBkaXNwbGF5LgorICBUaGUgbmV3IGlkbGVsaWIvaGVscC5odG1sIGlzIHJzdHJpcHBlZCBEb2MvYnVpbGQvaHRtbC9saWJyYXJ5L2lkbGUuaHRtbC4KKyAgSXQgbG9va3MgYmV0dGVyIHRoYW4gaGVscC50eHQgYW5kIHdpbGwgYmV0dGVyIGRvY3VtZW50IElkbGUgYXMgcmVsZWFzZWQuCisgIFRoZSB0a2ludGVyIGh0bWwgdmlld2VyIHRoYXQgd29ya3MgZm9yIHRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBSb3NlIFJvc2VtYW4uCisgIFRoZSBub3cgdW51c2VkIEVkaXRvcldpbmRvdy5IZWxwRGlhbG9nIGNsYXNzIGFuZCBoZWx0LnR4dCBmaWxlIGFyZSBkZXByZWNhdGVkLgorCistIElzc3VlICMyNDE5OTogRGVwcmVjYXRlIHVudXNlZCBpZGxlbGliLmlkbGV2ZXIgd2l0aCBwb3NzaWJsZSByZW1vdmFsIGluIDMuNi4KKworLSBJc3N1ZSAjMjQ3OTA6IFJlbW92ZSBleHRyYW5lb3VzIGNvZGUgKHdoaWNoIGFsc28gY3JlYXRlIDIgJiAzIGNvbmZsaWN0cykuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCi0gIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgotCi0tIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgotCiAtIElzc3VlICMyNjczNjogVXNlZCBIVFRQUyBmb3IgZXh0ZXJuYWwgbGlua3MgaW4gdGhlIGRvY3VtZW50YXRpb24gaWYgcG9zc2libGUuCiAKIC0gSXNzdWUgIzY5NTM6IFJld29yayB0aGUgUmVhZGxpbmUgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gZ3JvdXAgcmVsYXRlZApAQCAtMTMzMCw4ICszMTQ5LDggQEAKIAogLSBJc3N1ZSAjMjM2MDY6IEFkZHMgbm90ZSB0byBjdHlwZXMgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgY2RsbC5tc3ZjcnQuCiAKLS0gSXNzdWUgIzI1NTAwOiBGaXggZG9jdW1lbnRhdGlvbiB0byBub3QgY2xhaW0gdGhhdCBfX2ltcG9ydF9fIGlzIHNlYXJjaGVkIGZvcgotICBpbiB0aGUgZ2xvYmFsIHNjb3BlLgorLSBJc3N1ZSAjMjQ5NTI6IENsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4KKyAgdGhlICJ0aHJlYWRpbmciIGFuZCAiX3RocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCiAKIC0gSXNzdWUgIzI2MDE0OiBVcGRhdGUgMy54IHBhY2thZ2luZyBkb2N1bWVudGF0aW9uOgogICAqICJTZWUgYWxzbyIgbGlua3MgdG8gdGhlIG5ldyBkb2NzIGFyZSBub3cgcHJvdmlkZWQgaW4gdGhlIGxlZ2FjeSBwYWdlcwpAQCAtMTM0Myw2ICszMTYyLDkgQEAKIC0gSXNzdWUgIzIxOTE2OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHR1cnRsZSBtb2R1bGUuICBQYXRjaCBieSBpbmdyaWQsCiAgIEdyZWdvcnkgTG95c2UgYW5kIEplbGxlIFppamxzdHJhLgogCistIElzc3VlICMyNjI5NTogV2hlbiB1c2luZyAicHl0aG9uMyAtbSB0ZXN0IC0tdGVzdGRpcj1URVNURElSIiwgcmVncnRlc3QKKyAgZG9lc24ndCBhZGQgInRlc3QuIiBwcmVmaXggdG8gdGVzdCBtb2R1bGUgbmFtZXMuCisKIC0gSXNzdWUgIzI2NTIzOiBUaGUgbXVsdGlwcm9jZXNzaW5nIHRocmVhZCBwb29sIChtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUG9vbCkKICAgd2FzIHVudGVzdGVkLgogCkBAIC0xMzUxLDMxICszMTczLDUwIEBACiAtIElzc3VlICMyNjMyNTogQWRkZWQgdGVzdC5zdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKSB0byBjaGVjayB0aGF0CiAgIG5vIFJlc291cmNlV2FybmluZyBpcyBlbWl0dGVkLgogCi0tIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2Ugc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQuICBUaGlzCistIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2UgaXRzIGludGVybmFsIGxvY2FsIHNlcnZlciBtb3JlLiAgVGhpcwogICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgogCiAtIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCiAgIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KIAorLSBJc3N1ZSAjMjU0NDk6IEFkZGVkIHRlc3RzIGZvciBPcmRlcmVkRGljdCBzdWJjbGFzc2VzLgorCistIElzc3VlICMyNTE4ODogQWRkIC1QLy0tcGdvIHRvIHRlc3QucmVncnRlc3QgdG8gc3VwcHJlc3MgZXJyb3Igb3V0cHV0IHdoZW4KKyAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGEgUEdPIGJ1aWxkLiBJbml0aWFsIHBhdGNoIGJ5CisgIEFsZWNzYW5kcnUgUGF0cmFzY3UuCisKKy0gSXNzdWUgIzIyODA2OiBBZGQgYGBweXRob24gLW0gdGVzdCAtLWxpc3QtdGVzdHNgYCBjb21tYW5kIHRvIGxpc3QgdGVzdHMuCisKKy0gSXNzdWUgIzE4MTc0OiBgYHB5dGhvbiAtbSB0ZXN0IC0taHVudHJsZWFrcyAuLi5gYCBub3cgYWxzbyBjaGVja3MgZm9yIGxlYWsgb2YKKyAgZmlsZSBkZXNjcmlwdG9ycy4gUGF0Y2ggd3JpdHRlbiBieSBSaWNoYXJkIE91ZGtlcmsuCisKKy0gSXNzdWUgIzI1MjYwOiBGaXggYGBweXRob24gLW0gdGVzdCAtLWNvdmVyYWdlYGAgb24gV2luZG93cy4gUmVtb3ZlIHRoZQorICBsaXN0IG9mIGlnbm9yZWQgZGlyZWN0b3JpZXMuCisKKy0gYGBQQ2J1aWxkXHJ0LmJhdGBgIG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKIC0gSXNzdWUgIzI2NTgzOiBTa2lwIHRlc3RfdGltZXN0YW1wX292ZXJmbG93IGluIHRlc3RfaW1wb3J0IGlmIGJ5dGVjb2RlCiAgIGZpbGVzIGNhbm5vdCBiZSB3cml0dGVuLgogCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjMjEyNzc6IERvbid0IHRyeSB0byBsaW5rIF9jdHlwZXMgd2l0aCBhIGZmaV9jb252ZW5pZW5jZSBsaWJyYXJ5LgorCiAtIElzc3VlICMyNjg4NDogRml4IGxpbmtpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgZm9yIGNyb3NzIGJ1aWxkcy4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzI2OTMyOiBGaXhlZCBzdXBwb3J0IG9mIFJUTERfKiBjb25zdGFudHMgZGVmaW5lZCBhcyBlbnVtIHZhbHVlcywKKyAgbm90IHZpYSBtYWNyb3MgKGluIHBhcnRpY3VsYXIgb24gQW5kcm9pZCkuICBQYXRjaCBieSBDaGkgSHN1YW4gWWVuLgorCiAtIElzc3VlICMyMjM1OTogRGlzYWJsZSB0aGUgcnVsZXMgZm9yIHJ1bm5pbmcgX2ZyZWV6ZV9pbXBvcnRsaWIgYW5kIHBnZW4gd2hlbgogICBjcm9zcy1jb21waWxpbmcuICBUaGUgb3V0cHV0IG9mIHRoZXNlIHByb2dyYW1zIGlzIG5vcm1hbGx5IHNhdmVkIHdpdGggdGhlCiAgIHNvdXJjZSBjb2RlIGFueXdheSwgYW5kIGlzIHN0aWxsIHJlZ2VuZXJhdGVkIHdoZW4gZG9pbmcgYSBuYXRpdmUgYnVpbGQuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCi0tIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCiAtIElzc3VlICMyMTY2ODogTGluayBhdWRpb29wLCBfZGF0ZXRpbWUsIF9jdHlwZXNfdGVzdCBtb2R1bGVzIHRvIGxpYm0sCi0gIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBYYXZpZXIgZGUgR2F5ZS4KKyAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IENoaSBIc3VhbiBZZW4uCiAKIC0gSXNzdWUgIzI1NzAyOiBBIC0td2l0aC1sdG8gY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwKICAgZW5hYmxlIGxpbmsgdGltZSBvcHRpbWl6YXRpb25zIGF0IGJ1aWxkIHRpbWUgZHVyaW5nIGEgbWFrZSBwcm9maWxlLW9wdC4KQEAgLTEzOTQsMjIgKzMyMzUsMjQgQEAKIAogLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmcuCiAKLS0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KLSAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcwotICB3ZXJlIGNvbmN1cnJlbnQuCi0KIC0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCiAgIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKLSAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCi0gIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KKyAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIHJlbW92ZWQuCiAKIC0gSXNzdWUgIzI1ODI3OiBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBJQ0MgdG8gYGBjb25maWd1cmVgYCwgaW5jbHVkaW5nCiAgIGEgbmV3IGBgLS13aXRoLWljY2BgIGZsYWcuCiAKIC0gSXNzdWUgIzI1Njk2OiBGaXggaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBvbiBVTklYIHdpdGggbWFrZSAtajkuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKLSAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI0OTg2OiBJdCBpcyBub3cgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIG9uIFdpbmRvd3Mgd2l0aG91dCBlcnJvcnMKKyAgd2hlbiBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KKyAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcworICB3ZXJlIGNvbmN1cnJlbnQuCisKKy0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKKyAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yZy4KIAogLSBJc3N1ZSAjMjYyNjg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmYuCiAKQEAgLTE0MzYsNiArMzI3OSw4IEBACiAtIElzc3VlICMyNjA2NTogRXhjbHVkZXMgdmVudiBmcm9tIGxpYnJhcnkgd2hlbiBnZW5lcmF0aW5nIGVtYmVkZGFibGUKICAgZGlzdHJvLgogCistIElzc3VlICMyNTAyMjogUmVtb3ZlZCB2ZXJ5IG91dGRhdGVkIFBDL2V4YW1wbGVfbnQvIGRpcmVjdG9yeS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTE0NTIsMTEgKzMyOTcsMjEgQEAKIAogLSBJc3N1ZSAjMjYzMTY6IEZpeCB2YXJpYWJsZSBuYW1lIHR5cG8gaW4gQXJndW1lbnQgQ2xpbmljLgogCi1NaXNjCi0tLS0tCistIElzc3VlICMyNTQ0MDogRml4IG91dHB1dCBvZiBweXRob24tY29uZmlnIC0tZXh0ZW5zaW9uLXN1ZmZpeC4KIAotLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKLSAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKy0gSXNzdWUgIzI1MTU0OiBUaGUgcHl2ZW52IHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICBgcHl0aG9uMyAtbSB2ZW52YC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI2MzEyOiBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkIGluIGFsbCBwcm9ncmFtbWluZyBidWdzIHdpdGggdXNpbmcKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkuICBSdW50aW1lRXJyb3IgZGlkIHJhaXNlZCBiZWZvcmUgaW4gc29tZQorICBwcm9ncmFtbWluZyBidWdzLgorCistIElzc3VlICMyNjE5ODogVmFsdWVFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIGJ1ZmZlcgorICBvdmVyZmxvdyBpbiBwYXJzaW5nICJlcyMiIGFuZCAiZXQjIiBmb3JtYXQgdW5pdHMuICBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkCisgIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIHByb2dyYW1taWNhbCBlcnJvciBpbiBwYXJzaW5nIGZvcm1hdCBzdHJpbmcuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgZmluYWw/CkBAIC0xODc4LDkgKzM3MzMsNiBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgotICBQYXRjaCBieSBZb25pIExhdmkuCi0KIC0gSXNzdWUgIzEyMDY3OiBSZXdyaXRlIENvbXBhcmlzb25zIHNlY3Rpb24gaW4gdGhlIEV4cHJlc3Npb25zIGNoYXB0ZXIgb2YgdGhlCiAgIGxhbmd1YWdlIHJlZmVyZW5jZS4gU29tZSBvZiB0aGUgZGV0YWlscyBvZiBjb21wYXJpbmcgbWl4ZWQgdHlwZXMgd2VyZQogICBpbmNvcnJlY3Qgb3IgYW1iaWd1b3VzLiBOb3RJbXBsZW1lbnRlZCBpcyBvbmx5IHJlbGV2YW50IGF0IGEgbG93ZXIgbGV2ZWwKQEAgLTIyMTAsMTIgKzQwNjIsNiBAQAogCiAtIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KIAotLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCi0gIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCi0KLS0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKLSAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKLQogLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCiAKIC0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCkBAIC0yMjI2LDYgKzQwNzIsOSBAQAogLSBJc3N1ZSAjMTUwMTQ6IFNNVFAuYXV0aCgpIGFuZCBTTVRQLmxvZ2luKCkgbm93IHN1cHBvcnQgUkZDIDQ5NTQncyBvcHRpb25hbAogICBpbml0aWFsLXJlc3BvbnNlIGFyZ3VtZW50IHRvIHRoZSBTTVRQIEFVVEggY29tbWFuZC4KIAorLSBJc3N1ZSAjNjU0OTogUmVtb3ZlIGh5cGhlbiBmcm9tIHR0ay5TdHlsZSgpLmVsZW1lbnQgb3B0aW9ucy4gIE9ubHkgcmV0dXJuIHJlc3VsdAorICBmcm9tIHR0ay5TdHlsZSgpLmNvbmZpZ3VyZSBpZiBhIHJlc3VsdCB3YXMgZ2VuZXJhdGVkIG9yIGEgcXVlcnkgc3VibWl0dGVkLgorCiAtIElzc3VlICMyNDY2OTogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KICAgUGF0Y2ggYnkgS2FpIEdyb25lci4KIApAQCAtMjIzNyw3ICs0MDg2LDYgQEAKIC0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKICAgMS4wLjJkLgogCi0KIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMz8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMjM5OCw2ICs0MjQ2LDkgQEAKIC0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgogICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCistIElzc3VlICMyMzM1OTogT3B0aW1pemUgc2V0IG9iamVjdCBpbnRlcm5hbHMgYnkgc3BlY2lhbGl6aW5nIHRoZQorICBoYXNoIHRhYmxlIHNlYXJjaCBpbnRvIGEgbG9va3VwIGZ1bmN0aW9uIGFuZCBhbiBpbnNlcnQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKICAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCiAKQEAgLTI1MTgsOCArNDM2OSw4IEBACiAtIElzc3VlICMxMzIyOiBwbGF0Zm9ybS5kaXN0KCkgYW5kIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUKICAgbm93IGRlcHJlY2F0ZWQuICBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbgotICBub3cgaXMgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgorLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbiBub3cgaXMKKyAgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgogCiAtIElzc3VlICMyNDA2NDogUHJvcGVydHkoKSBkb2NzdHJpbmdzIGFyZSBub3cgd3JpdGVhYmxlLgogICAoUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4pCkBAIC0yOTQwLDggKzQ3OTEsOCBAQAogICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCiAKIC0gSXNzdWUgIzIzNjIyOiBVbmtub3duIGVzY2FwZXMgaW4gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGNvbnNpc3Qgb2YgYGAnXCdgYAotICBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluCi0gIFB5dGhvbiAzLjYuCisgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4KKyAgaW4gUHl0aG9uIDMuNi4KIAogLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKICAgYSBrZXl3b3JkIGFyZ3VtZW50LiAgc3RyaW5nLkZvcm1hdHRlciBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBhbmQKQEAgLTUwMzcsNDI4OSArNjg4OCw0IEBACiAgICIuY3AzNS13aW4zMi5weWQiKSB3aWxsIG5vdyBiZSBsb2FkZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSB3aXRob3V0IHRhZ3MuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjA/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTAzLTE2Ci0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjA5Mzk6IEZpeCB0ZXN0X2dldHVybCBmYWlsdXJlIGluIHRlc3RfdXJsbGlibmV0IGR1ZSB0bwotICBuZXcgcmVkaXJlY3Qgb2YgaHR0cDovL3d3dy5weXRob24ub3JnLyB0byBodHRwczovL3d3dy5weXRob24ub3JnLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gTWVyZ2UgaW4gYWxsIGRvY3VtZW50YXRpb24gY2hhbmdlcyBzaW5jZSBicmFuY2hpbmcgMy40LjByYzEuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgcmVsZWFzZSBjYW5kaWRhdGUgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0wMy0wOQotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjA3ODY6IEZpeCBzaWduYXR1cmVzIGZvciBkaWN0Ll9fZGVsaXRlbV9fIGFuZAotICBwcm9wZXJ0eS5fX2RlbGV0ZV9fIGJ1aWx0aW5zLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzIwODM5OiBEb24ndCB0cmlnZ2VyIGEgRGVwcmVjYXRpb25XYXJuaW5nIGluIHRoZSBzdGlsbCBzdXBwb3J0ZWQKLSAgcGtndXRpbC5nZXRfbG9hZGVyKCkgQVBJIHdoZW4gX19sb2FkZXJfXyBpc24ndCBzZXQgb24gYSBtb2R1bGUgKG5vcgotICB3aGVuIHBrZ3V0aWwuZmluZF9sb2FkZXIoKSBpcyBjYWxsZWQgZGlyZWN0bHkpLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ1MTI6IExhdW5jaCBweWRvYyAtYiBpbnN0ZWFkIG9mIHB5ZG9jZ3VpLnB5dyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMyMDc0ODogVW5pbnN0YWxsaW5nIHBpcCBkb2VzIG5vdCBsZWF2ZSBiZWhpbmQgdGhlIHB5YyBvZgotICB0aGUgdW5pbnN0YWxsZXIgYW55bW9yZS4KLQotLSBJc3N1ZSAjMjA1Njg6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaW5zdGFsbHMgdGhlIHVudmVyc2lvbmVkIGBgcGlwYGAKLSAgY29tbWFuZCBpbiBhZGRpdGlvbiB0byB0aGUgdmVyc2lvbmVkIGBgcGlwM2BgIGFuZCBgYHBpcDMuNGBgIGNvbW1hbmRzLgotCi0tIElzc3VlICMyMDc1NzogVGhlIGVuc3VyZXBpcCBoZWxwZXIgZm9yIHRoZSBXaW5kb3dzIHVuaW5zdGFsbGVyIG5vdyBza2lwcwotICB1bmluc3RhbGxpbmcgcGlwIChyYXRoZXIgdGhhbiBmYWlsaW5nKSBpZiB0aGUgdXNlciBoYXMgdXBkYXRlZCBwaXAgdG8gYQotICBkaWZmZXJlbnQgdmVyc2lvbiBmcm9tIHRoZSBvbmUgYnVuZGxlZCB3aXRoIGVuc3VyZXBpcC4KLQotLSBJc3N1ZSAjMjA0NjU6IFVwZGF0ZSBPUyBYIGFuZCBXaW5kb3dzIGluc3RhbGxlciBidWlsZHMgdG8gdXNlCi0gIFNRTGl0ZSAzLjguMy4xLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIHJlbGVhc2UgY2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDItMjMKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIwNjI1OiBQYXJhbWV0ZXIgbmFtZXMgaW4gX19hbm5vdGF0aW9uc19fIHdlcmUgbm90IG1hbmdsZWQgcHJvcGVybHkuCi0gIERpc2NvdmVyZWQgYnkgSm9uYXMgV2llbGlja2ksIHBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgotCi0tIElzc3VlICMyMDI2MTogSW4gcGlja2xlLCBsb29rdXAgX19nZXRuZXdhcmdzX18gYW5kIF9fZ2V0bmV3YXJnc19leF9fIG9uIHRoZQotICB0eXBlIG9mIHRoZSBvYmplY3QuCi0KLS0gSXNzdWUgIzIwNjE5OiBHaXZlIHRoZSBBU1Qgbm9kZXMgb2Yga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBhIGNvbHVtbiBhbmQgbGluZQotICBudW1iZXIuCi0KLS0gSXNzdWUgIzIwNTI2OiBSZXZlcnQgY2hhbmdlcyBvZiBpc3N1ZSAjMTk0NjYgd2hpY2ggaW50cm9kdWNlcyBhIHJlZ3Jlc3Npb246Ci0gIGRvbid0IGNsZWFyIGFueW1vcmUgdGhlIHN0YXRlIG9mIFB5dGhvbiB0aHJlYWRzIGVhcmx5IGR1cmluZyB0aGUgUHl0aG9uCi0gIHNodXRkb3duLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzIwNzEwOiBUaGUgcHlkb2Mgc3VtbWFyeSBsaW5lIG5vIGxvbmdlciBkaXNwbGF5cyB0aGUgInNlbGYiIHBhcmFtZXRlcgotICBmb3IgYm91bmQgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMjA1NjY6IENoYW5nZSBhc3luY2lvLmFzX2NvbXBsZXRlZCgpIHRvIHVzZSBhIFF1ZXVlLCB0bwotICBhdm9pZCBPKE4qKjIpIGJlaGF2aW9yLgotCi0tIElzc3VlICMyMDcwNDogSW1wbGVtZW50IG5ldyBkZWJ1ZyBBUEkgaW4gYXN5bmNpby4gQWRkIG5ldyBtZXRob2RzCi0gIEJhc2VFdmVudExvb3Auc2V0X2RlYnVnKCkgYW5kIEJhc2VFdmVudExvb3AuZ2V0X2RlYnVnKCkuCi0gIEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nICdhc3luY2lvLnRhc2tzLl9ERUJVRycgdmFyaWFibGUgd2l0aAotICAnUFlUSE9OQVNZTkNJT0RFQlVHJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotLSBhc3luY2lvOiBSZWZhY3RvcmluZyBhbmQgZml4ZXM6IEJhc2VFdmVudExvb3Auc29ja19jb25uZWN0KCkgcmFpc2VzIGFuCi0gIGVycm9yIGlmIHRoZSBhZGRyZXNzIGlzIG5vdCByZXNvbHZlZDsgdXNlIF9fc2xvdHNfXyBpbiBIYW5kbGUgYW5kCi0gIFRpbWVySGFuZGxlOyBhc19jb21wbGV0ZWQoKSBhbmQgd2FpdCgpIHJhaXNlIFR5cGVFcnJvciBpZiB0aGUgcGFzc2VkCi0gIGxpc3Qgb2YgRnV0dXJlcyBpcyBhIHNpbmdsZSBGdXR1cmU7IGNhbGxfc29vbigpIGFuZCBvdGhlciAnY2FsbF8qKCknCi0gIGZ1bmN0aW9ucyByYWlzZSBUeXBlRXJyb3IgaWYgdGhlIHBhc3NlZCBjYWxsYmFjayBpcyBhIGNvcm91dGluZQotICBmdW5jdGlvbjsgX1Byb2FjdG9yQmFzZVBpcGVUcmFuc3BvcnQgdXNlcyBfRmxvd0NvbnRyb2xNaXhpbjsKLSAgV3JpdGVUcmFuc3BvcnQuc2V0X3dyaXRlX2J1ZmZlcl9zaXplKCkgY2FsbHMgX21heWJlX3BhdXNlX3Byb3RvY29sKCkKLSAgdG8gY29uc2lkZXIgcGF1c2luZyByZWNlaXZpbmcgaWYgdGhlIHdhdGVybWFyayBsaW1pdHMgaGF2ZSBjaGFuZ2VkOwotICBmaXggX2NoZWNrX3Jlc29sdmVkX2FkZHJlc3MoKSBmb3IgSVB2NiBhZGRyZXNzOyBhbmQgb3RoZXIgbWlub3IKLSAgaW1wcm92ZW1lbnRzLCBhbG9uZyB3aXRoIG11bHRpcGxlIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KLQotLSBJc3N1ZSAjMjA2ODQ6IEZpeCBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKCkgdG8gbm90IHRvIGZvbGxvdyBfX3dyYXBwZWRfXwotICBjaGFpbnMuIE1ha2UgaXRzIGJlaGF2aW91ciBjb25zaXN0ZW50IHdpdGggYm91bmQgbWV0aG9kcyBmaXJzdCBhcmd1bWVudC4KLSAgUGF0Y2ggYnkgTmljayBDb2dobGFuIGFuZCBZdXJ5IFNlbGl2YW5vdi4KLQotLSBJc3N1ZSAjMjA2ODE6IEFkZCBuZXcgZXJyb3IgaGFuZGxpbmcgQVBJIGluIGFzeW5jaW8uIE5ldyBBUElzOgotICBsb29wLnNldF9leGNlcHRpb25faGFuZGxlcigpLCBsb29wLmRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIoKSwgYW5kCi0gIGxvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcigpLgotCi0tIElzc3VlICMyMDY3MzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIFVOSVggRG9tYWluIFNvY2tldHMgaW4gYXN5bmNpby4KLSAgTmV3IEFQSXM6IGxvb3AuY3JlYXRlX3VuaXhfY29ubmVjdGlvbigpLCBsb29wLmNyZWF0ZV91bml4X3NlcnZlcigpLAotICBzdHJlYW1zLm9wZW5fdW5peF9jb25uZWN0aW9uKCksIGFuZCBzdHJlYW1zLnN0YXJ0X3VuaXhfc2VydmVyKCkuCi0KLS0gSXNzdWUgIzIwNjE2OiBBZGQgYSBmb3JtYXQoKSBtZXRob2QgdG8gdHJhY2VtYWxsb2MuVHJhY2ViYWNrLgotCi0tIElzc3VlICMxOTc0NDogdGhlIGVuc3VyZXBpcCBpbnN0YWxsYXRpb24gc3RlcCBub3cganVzdCBwcmludHMgYSB3YXJuaW5nIHRvCi0gIHN0ZGVyciByYXRoZXIgdGhhbiBmYWlsaW5nIG91dHJpZ2h0IGlmIFNTTC9UTFMgaXMgdW5hdmFpbGFibGUuIFRoaXMgYWxsb3dzCi0gIGxvY2FsIGluc3RhbGxhdGlvbiBvZiBQT1NJWCBidWlsZHMgd2l0aG91dCBTU0wvVExTIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzIwNTk0OiBBdm9pZCBuYW1lIGNsYXNoIHdpdGggdGhlIGxpYmMgZnVuY3Rpb24gcG9zaXhfY2xvc2UuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMyMDY0MTogUnVuIE1TSSBjdXN0b20gYWN0aW9ucyAocGlwIGluc3RhbGxhdGlvbiwgcHljIGNvbXBpbGF0aW9uKQotICB3aXRoIHRoZSBOb0ltcGVyc29uYXRlIGZsYWcsIHRvIHN1cHBvcnQgZWxldmF0ZWQgZXhlY3V0aW9uIChVQUMpLgotCi0tIElzc3VlICMyMDIyMTogUmVtb3ZlZCBjb25mbGljdGluZyAob3IgY2lyY3VsYXIpIGh5cG90IGRlZmluaXRpb24gd2hlbgotICBjb21waWxlZCB3aXRoIFZTIDIwMTAgb3IgYWJvdmUuICBJbml0aWFsIHBhdGNoIGJ5IFRhYnJleiBNb2hhbW1lZC4KLQotLSBJc3N1ZSAjMjA2MDk6IFJlc3RvcmVkIHRoZSBhYmlsaXR5IHRvIGJ1aWxkIDY0LWJpdCBXaW5kb3dzIGJpbmFyaWVzIG9uCi0gIDMyLWJpdCBXaW5kb3dzLCB3aGljaCB3YXMgYnJva2VuIGJ5IHRoZSBjaGFuZ2UgaW4gaXNzdWUgIzE5Nzg4LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDItMTAKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE5MjU1OiBUaGUgYnVpbHRpbnMgbW9kdWxlIGlzIHJlc3RvcmVkIHRvIGluaXRpYWwgdmFsdWUgYmVmb3JlCi0gIGNsZWFuaW5nIG90aGVyIG1vZHVsZXMuICBUaGUgc3lzIGFuZCBidWlsdGlucyBtb2R1bGVzIGFyZSBjbGVhbmVkIGxhc3QuCi0KLS0gSXNzdWUgIzIwNTg4OiBNYWtlIFB5dGhvbi1hc3QuYyBDODkgY29tcGxpYW50LgotCi0tIElzc3VlICMyMDQzNzogRml4ZWQgMjIgcG90ZW50aWFsIGJ1Z3Mgd2hlbiBkZWxldGluZyBvYmplY3QgcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjMjA1MDA6IERpc3BsYXlpbmcgYW4gZXhjZXB0aW9uIGF0IGludGVycHJldGVyIHNodXRkb3duIG5vIGxvbmdlcgotICByaXNrcyB0cmlnZ2VyaW5nIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIFB5T2JqZWN0X1N0ci4KLQotLSBJc3N1ZSAjMjA1Mzg6IFVURi03IGluY3JlbWVudGFsIGRlY29kZXIgcHJvZHVjZWQgaW5jb25zaXN0ZW50IHN0cmluZyB3aGVuCi0gIGlucHV0IHdhcyB0cnVuY2F0ZWQgaW4gQkFTRTY0IHNlY3Rpb24uCi0KLS0gSXNzdWUgIzIwNDA0OiBpby5UZXh0SU9XcmFwcGVyIChhbmQgaGVuY2UgdGhlIG9wZW4oKSBidWlsdGluKSBub3cgdXNlcyB0aGUKLSAgaW50ZXJuYWwgY29kZWMgbWFya2luZyBzeXN0ZW0gYWRkZWQgZm9yIGlzc3VlICMxOTYxOSB0byB0aHJvdyBMb29rdXBFcnJvcgotICBmb3Iga25vd24gbm9uLXRleHQgZW5jb2RpbmdzIGF0IHN0cmVhbSBjb25zdHJ1Y3Rpb24gdGltZS4gVGhlIGV4aXN0aW5nCi0gIG91dHB1dCB0eXBlIGNoZWNrcyByZW1haW4gaW4gcGxhY2UgdG8gZGVhbCB3aXRoIHVubWFya2VkIHRoaXJkIHBhcnR5Ci0gIGNvZGVjcy4KLQotLSBJc3N1ZSAjMTcxNjI6IEFkZCBQeVR5cGVfR2V0U2xvdC4KLQotLSBJc3N1ZSAjMjAxNjI6IEZpeCBhbiBhbGlnbm1lbnQgaXNzdWUgaW4gdGhlIHNpcGhhc2gyNCgpIGhhc2ggZnVuY3Rpb24gd2hpY2gKLSAgY2F1c2VkIGEgY3Jhc2ggb24gUG93ZXJQQyA2NC1iaXQgKHBwYzY0KS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMDUzMDogVGhlIHNpZ25hdHVyZXMgZm9yIHNsb3QgYnVpbHRpbnMgaGF2ZSBiZWVuIHVwZGF0ZWQKLSAgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZXkgb25seSBhY2NlcHQgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMjA1MTc6IEZ1bmN0aW9ucyBpbiB0aGUgb3MgbW9kdWxlIHRoYXQgYWNjZXB0IHR3byBmaWxlbmFtZXMKLSAgbm93IHJlZ2lzdGVyIGJvdGggZmlsZW5hbWVzIGluIHRoZSBleGNlcHRpb24gb24gZmFpbHVyZS4KLQotLSBJc3N1ZSAjMjA1NjM6IFRoZSBpcGFkZHJlc3MgbW9kdWxlIEFQSSBpcyBub3cgY29uc2lkZXJlZCBzdGFibGUuCi0KLS0gSXNzdWUgIzE0OTgzOiBlbWFpbC5nZW5lcmF0b3Igbm93IGFsd2F5cyBhZGRzIGEgbGluZSBlbmQgYWZ0ZXIgZWFjaCBNSU1FCi0gIGJvdW5kYXJ5IG1hcmtlciwgaW5zdGVhZCBvZiBkb2luZyBzbyBvbmx5IHdoZW4gdGhlcmUgaXMgYW4gZXBpbG9ndWUuICBUaGlzCi0gIGZpeGVzIGFuIFJGQyBjb21wbGlhbmNlIGJ1ZyBhbmQgc29sdmVzIGFuIGlzc3VlIHdpdGggc2lnbmVkIE1JTUUgcGFydHMuCi0KLS0gSXNzdWUgIzIwNTQwOiBGaXggYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uICh2cy4gUHl0aG9uIDMuMikgd2hlbiBsYXllcmluZwotICBhIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9uIG92ZXIgYSBUQ1Agc29ja2V0LiAgRm9yIHNtYWxsIHBheWxvYWRzLCBOYWdsZSdzCi0gIGFsZ29yaXRobSB3b3VsZCBpbnRyb2R1Y2UgaWRsZSBkZWxheXMgYmVmb3JlIHRoZSBlbnRpcmUgdHJhbnNtaXNzaW9uIG9mIGEKLSAgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTY5ODM6IHRoZSBuZXcgZW1haWwgaGVhZGVyIHBhcnNpbmcgY29kZSB3aWxsIG5vdyBkZWNvZGUgZW5jb2RlZCB3b3JkcwotICB0aGF0IGFyZSAoaW5jb3JyZWN0bHkpIHN1cnJvdW5kZWQgYnkgcXVvdGVzLCBhbmQgcmVnaXN0ZXIgYSBkZWZlY3QuCi0KLS0gSXNzdWUgIzE5NzcyOiBlbWFpbC5nZW5lcmF0b3Igbm8gbG9uZ2VyIG11dGF0ZXMgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdoZW4KLSAgZG9pbmcgYSBkb3duLXRyYW5zZm9ybSBmcm9tIDhiaXQgdG8gN2JpdCBDVEVzLgotCi0tIElzc3VlICMyMDUzNjogdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlIERlY2ltYWwgaW5zdGFuY2VzCi0gIHdpdGggcG9zaXRpdmUgZXhwb25lbnRzCi0KLS0gSXNzdWUgIzE4ODA1OiB0aGUgbmV0bWFzay9ob3N0bWFzayBwYXJzaW5nIGluIGlwYWRkcmVzcyBub3cgbW9yZSByZWxpYWJseQotICBmaWx0ZXJzIG91dCBpbGxlZ2FsIHZhbHVlcyBhbmQgY29ycmVjdGx5IGFsbG93cyBhbnkgdmFsaWQgcHJlZml4IGxlbmd0aC4KLQotLSBJc3N1ZSAjMjA0ODE6IEZvciBhdCBsZWFzdCBQeXRob24gMy40LCB0aGUgc3RhdGlzdGljcyBtb2R1bGUgd2lsbCByZXF1aXJlCi0gIHRoYXQgYWxsIGlucHV0cyBmb3IgYSBzaW5nbGUgb3BlcmF0aW9uIGJlIG9mIGEgc2luZ2xlIGNvbnNpc3RlbnQgdHlwZSwgb3IKLSAgZWxzZSBhIG1peGVkIG9mIGludHMgYW5kIGEgc2luZ2xlIG90aGVyIGNvbnNpc3RlbnQgdHlwZS4gVGhpcyBhdm9pZHMKLSAgc29tZSBpbnRlcm9wZXJhYmlsaXR5IGlzc3VlcyB0aGF0IGFyb3NlIHdpdGggdGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mCi0gIGNvZXJjaW5nIHRvIGEgc3VpdGFibGUgY29tbW9uIHR5cGUuCi0KLS0gSXNzdWUgIzIwNDc4OiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbm93IHRyZWF0cyBjb2xsZWN0aW9ucy5Db3VudGVyIGlucHV0cwotICBsaWtlIGFueSBvdGhlciBpdGVyYWJsZS4KLQotLSBJc3N1ZSAjMTczNjk6IGdldF9maWxlbmFtZSB3YXMgcmFpc2luZyBhbiBleGNlcHRpb24gaWYgdGhlIGZpbGVuYW1lCi0gIHBhcmFtZXRlcidzIFJGQzIyMzEgZW5jb2Rpbmcgd2FzIGJyb2tlbiBpbiBjZXJ0YWluIHdheXMuICBUaGlzIHdhcwotICBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gcHl0aG9uMi4KLQotLSBJc3N1ZSAjMjAwMTM6IFNvbWUgaW1hcCBzZXJ2ZXJzIGRpc2Nvbm5lY3QgaWYgdGhlIGN1cnJlbnQgbWFpbGJveCBpcwotICBkZWxldGVkLCBhbmQgaW1hcGxpYiBkaWQgbm90IGhhbmRsZSB0aGF0IGNhc2UgZ3JhY2VmdWxseS4gIE5vdyBpdAotICBoYW5kbGVzIHRoZSAnYnllJyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzIwNTMxOiBSZXZlcnQgMy40IHZlcnNpb24gb2YgZml4IGZvciAjMTkwNjMsIGFuZCBhcHBseSB0aGUgMy4zCi0gIHZlcnNpb24uICBUaGF0IGlzLCBkbyAqbm90KiByYWlzZSBhbiBlcnJvciBpZiB1bmljb2RlIGlzIHBhc3NlZCB0bwotICBlbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWQuCi0KLS0gSXNzdWUgIzIwNDc2OiBJZiBhIG5vbi1jb21wYXQzMiBwb2xpY3kgaXMgdXNlZCB3aXRoIGFueSBvZiB0aGUgZW1haWwgcGFyc2VycywKLSAgRW1haWxNZXNzYWdlIGlzIG5vdyB1c2VkIGFzIHRoZSBmYWN0b3J5IGNsYXNzLiAgVGhlIGZhY3RvcnkgY2xhc3Mgc2hvdWxkCi0gIHJlYWxseSBjb21lIGZyb20gdGhlIHBvbGljeTsgdGhhdCB3aWxsIGdldCBmaXhlZCBpbiAzLjUuCi0KLS0gSXNzdWUgIzE5OTIwOiBUYXJGaWxlLmxpc3QoKSBubyBsb25nZXIgZmFpbHMgd2hlbiBvdXRwdXRzIGEgbGlzdGluZwotICBjb250YWluaW5nIG5vbi1lbmNvZGFibGUgY2hhcmFjdGVycy4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMjA1MTU6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW50cm9kdWNlZCBieSBpc3N1ZSAjMjAzNjguCi0KLS0gSXNzdWUgIzE5MTg2OiBSZXN0b3JlIG5hbWVzcGFjaW5nIG9mIGV4cGF0IHN5bWJvbHMgaW5zaWRlIHRoZSBweWV4cGF0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMjAwNTM6IGVuc3VyZXBpcCAoYW5kIGhlbmNlIHZlbnYpIGFyZSBubyBsb25nZXIgYWZmZWN0ZWQgYnkgdGhlCi0gIHNldHRpbmdzIGluIHRoZSBkZWZhdWx0IHBpcCBjb25maWd1cmF0aW9uIGZpbGUuCi0KLS0gSXNzdWUgIzIwNDI2OiBXaGVuIHBhc3NpbmcgdGhlIHJlLkRFQlVHIGZsYWcsIHJlLmNvbXBpbGUoKSBkaXNwbGF5cyB0aGUKLSAgZGVidWcgb3V0cHV0IGV2ZXJ5IHRpbWUgaXQgaXMgY2FsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSBjb21waWxhdGlvbiBjYWNoZS4KLQotLSBJc3N1ZSAjMjAzNjg6IFRoZSBudWxsIGNoYXJhY3RlciBub3cgY29ycmVjdGx5IHBhc3NlZCBmcm9tIFRjbCB0byBQeXRob24uCi0gIEltcHJvdmVkIGVycm9yIGhhbmRsaW5nIGluIHZhcmlhYmxlcy1yZWxhdGVkIGNvbW1hbmRzLgotCi0tIElzc3VlICMyMDQzNTogRml4IF9weWlvLlN0cmluZ0lPLmdldHZhbHVlKCkgdG8gdGFrZSBpbnRvIGFjY291bnQgbmV3bGluZQotICB0cmFuc2xhdGlvbiBzZXR0aW5ncy4KLQotLSB0cmFjZW1hbGxvYzogRml4IHNsaWNpbmcgdHJhY2VzIGFuZCBmaXggc2xpY2luZyBhIHRyYWNlYmFjay4KLQotLSBJc3N1ZSAjMjAzNTQ6IEZpeCBhbiBhbGlnbm1lbnQgaXNzdWUgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBvbiA2NC1iaXQKLSAgcGxhdGZvcm1zLiBCdWcgc2VlbiBvbiA2NC1iaXQgTGludXggd2hlbiB1c2luZyAibWFrZSBwcm9maWxlLW9wdCIuCi0KLS0gSXNzdWUgIzE3MTU5OiBpbnNwZWN0LnNpZ25hdHVyZSBub3cgYWNjZXB0cyBkdWNrIHR5cGVzIG9mIGZ1bmN0aW9ucywKLSAgd2hpY2ggYWRkcyBzdXBwb3J0IGZvciBDeXRob24gZnVuY3Rpb25zLiBJbml0aWFsIHBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCi0KLS0gSXNzdWUgIzE4ODAxOiBGaXggaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRycyB0byBjb3JyZWN0bHkgY2xhc3NpZnkKLSAgb2JqZWN0Ll9fbmV3X18gYW5kIG9iamVjdC5fX2luaXRfXy4KLQotLSBGaXhlZCBjbWF0aC5pc2luZidzIG5hbWUgaW4gaXRzIGFyZ3VtZW50IHBhcnNpbmcgY29kZS4KLQotLSBJc3N1ZSAjMjAzMTEsICMyMDQ1MjogcG9sbCBhbmQgZXBvbGwgbm93IHJvdW5kIHRoZSB0aW1lb3V0IGF3YXkgZnJvbSB6ZXJvLAotICBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvd2FyZHMgemVybywgaW4gc2VsZWN0IGFuZCBzZWxlY3RvcnMgbW9kdWxlczoKLSAgc2VsZWN0LmVwb2xsLnBvbGwoKSwgc2VsZWN0b3JzLlBvbGxTZWxlY3Rvci5wb2xsKCkgYW5kCi0gIHNlbGVjdG9ycy5FcG9sbFNlbGVjdG9yLnBvbGwoKS4gRm9yIGV4YW1wbGUsIGEgdGltZW91dCBvZiBvbmUgbWljcm9zZWNvbmQKLSAgKDFlLTYpIGlzIG5vdyByb3VuZGVkIHRvIG9uZSBtaWxsaXNlY29uZGkgKDFlLTMpLCBpbnN0ZWFkIG9mIGJlaW5nIHJvdW5kZWQgdG8KLSAgemVyby4gIEhvd2V2ZXIsIHRoZSBncmFudWxhcml0eSBwcm9wZXJ0eSBhbmQgYXN5bmNpbydzIHJlc29sdXRpb24gZmVhdHVyZQotICB3ZXJlIHJlbW92ZWQgYWdhaW4uCi0KLS0gYXN5bmNpbzogU29tZSByZWZhY3RvcmluZzsgdmFyaW91cyBmaXhlczsgYWRkIHdyaXRlIGZsb3cgY29udHJvbCB0bwotICB1bml4IHBpcGVzOyBGdXR1cmUuc2V0X2V4Y2VwdGlvbigpIGluc3RhbnRpYXRlcyB0aGUgZXhjZXB0aW9uCi0gIGFyZ3VtZW50IGlmIGl0IGlzIGEgY2xhc3M7IGltcHJvdmVkIHByb2FjdG9yIHBpcGUgdHJhbnNwb3J0OyBzdXBwb3J0Ci0gIHdhaXRfZm9yKGYsIE5vbmUpOyBkb24ndCBsb2cgYnJva2VuL2Rpc2Nvbm5lY3RlZCBwaXBlczsgdXNlCi0gIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhc3NlcnQgZm9yIGZvcmJpZGRlbiBzdWJwcm9jZXNzX3tzaGVsbCxleGVjfQotICBhcmd1bWVudHM7IGFkZGVkIGEgY29udmVuaWVuY2UgQVBJIGZvciBzdWJwcm9jZXNzIG1hbmFnZW1lbnQ7IGFkZGVkCi0gIFN0cmVhbVJlYWRlci5hdF9lb2YoKTsgcHJvcGVybHkgaGFuZGxlIGR1cGxpY2F0ZSBjb3JvdXRpbmVzL2Z1dHVyZXMKLSAgaW4gZ2F0aGVyKCksIHdhaXQoKSwgYXNfY29tcGxldGVkKCk7IHVzZSBhIGJ5dGVhcnJheSBmb3IgYnVmZmVyaW5nCi0gIGluIFN0cmVhbVJlYWRlcjsgYW5kIG1vcmUuCi0KLS0gSXNzdWUgIzIwMjg4OiBmaXggaGFuZGxpbmcgb2YgaW52YWxpZCBudW1lcmljIGNoYXJyZWZzIGluIEhUTUxQYXJzZXIuCi0KLS0gSXNzdWUgIzIwNDI0OiBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgaW8uU3RyaW5nSU8gbm93IHN1cHBvcnRzIGxvbmUgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjMjAzMDg6IGluc3BlY3Quc2lnbmF0dXJlIG5vdyB3b3JrcyBvbiBjbGFzc2VzIHdpdGhvdXQgdXNlci1kZWZpbmVkCi0gIF9faW5pdF9fIG9yIF9fbmV3X18gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMjAzNzI6IGluc3BlY3QuZ2V0ZmlsZSAoYW5kIGEgYnVuY2ggb2Ygb3RoZXIgaW5zcGVjdCBmdW5jdGlvbnMgdGhhdAotICB1c2UgaXQpIGRvZXNuJ3QgY3Jhc2ggd2l0aCB1bmV4cGVjdGVkIEF0dHJpYnV0ZUVycm9yIG9uIGNsYXNzZXMgZGVmaW5lZCBpbiBDCi0gIHdpdGhvdXQgX19tb2R1bGVfXy4KLQotLSBJc3N1ZSAjMjAzNTY6IGluc3BlY3Quc2lnbmF0dXJlIGZvcm1hdHRpbmcgdXNlcyAnLycgdG8gc2VwYXJhdGUKLSAgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgZnJvbSBvdGhlcnMuCi0KLS0gSXNzdWUgIzIwMjIzOiBpbnNwZWN0LnNpZ25hdHVyZSBub3cgc3VwcG9ydHMgbWV0aG9kcyBkZWZpbmVkIHdpdGgKLSAgZnVuY3Rvb2xzLnBhcnRpYWxtZXRob2RzLgotCi0tIElzc3VlICMxOTQ1NjogbnRwYXRoLmpvaW4oKSBub3cgam9pbnMgcmVsYXRpdmUgcGF0aHMgY29ycmVjdGx5IHdoZW4gYSBkcml2ZQotICBpcyBwcmVzZW50LgotCi0tIElzc3VlICMxOTA3NzogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGNsZWFudXAgbm8gbG9uZ2VyIGZhaWxzIHdoZW4KLSAgY2FsbGVkIGR1cmluZyBzaHV0ZG93bi4gIEVtaXR0aW5nIHJlc291cmNlIHdhcm5pbmcgaW4gX19kZWxfXyBubyBsb25nZXIgZmFpbHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgotCi0tIElzc3VlICMyMDM5NDogU2lsZW5jZSBDb3Zlcml0eSB3YXJuaW5nIGluIGF1ZGlvb3AgbW9kdWxlLgotCi0tIElzc3VlICMyMDM2NzogRml4IGJlaGF2aW9yIG9mIGNvbmN1cnJlbnQuZnV0dXJlcy5hc19jb21wbGV0ZWQoKSBmb3IKLSAgZHVwbGljYXRlIGFyZ3VtZW50cy4gIFBhdGNoIGJ5IEdsZW5uIExhbmdmb3JkLgotCi0tIElzc3VlICM4MjYwOiBUaGUgcmVhZCgpLCByZWFkbGluZSgpIGFuZCByZWFkbGluZXMoKSBtZXRob2RzIG9mCi0gIGNvZGVjcy5TdHJlYW1SZWFkZXIgcmV0dXJuZWQgaW5jb21wbGV0ZSBkYXRhIHdoZW4gd2VyZSBjYWxsZWQgYWZ0ZXIKLSAgcmVhZGxpbmUoKSBvciByZWFkKHNpemUpLiAgQmFzZWQgb24gcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzIwMTA1OiB0aGUgY29kZWMgZXhjZXB0aW9uIGNoYWluaW5nIG5vdyBjb3JyZWN0bHkgc2V0cyB0aGUKLSAgdHJhY2ViYWNrIG9mIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gYXMgaXRzIF9fdHJhY2ViYWNrX18gYXR0cmlidXRlLgotCi0tIElzc3VlICMxNzQ4MTogaW5zcGVjdC5nZXRmdWxsYXJnc3BlYygpIG5vdyB1c2VzIGluc3BlY3Quc2lnbmF0dXJlKCkgQVBJLgotCi0tIElzc3VlICMxNTMwNDogY29uY3VycmVudC5mdXR1cmVzLndhaXQoKSBjYW4gYmxvY2sgZm9yZXZlciBldmVuIGlmCi0gIEZ1dHVyZXMgaGF2ZSBjb21wbGV0ZWQuIFBhdGNoIGJ5IEdsZW5uIExhbmdmb3JkLgotCi0tIElzc3VlICMxNDQ1NTogcGxpc3RsaWI6IGZpeCBzZXJpYWxpemluZyBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UKLSAgb2YgYW4gdW5zaWduZWQgbG9uZyBsb25nIGJ1dCBvdXRzaWRlIG9mIHRoZSByYW5nZSBvZiBzaWduZWQgbG9uZyBsb25nIGZvcgotICBiaW5hcnkgcGxpc3QgZmlsZXMuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjA0MDY6IFVzZSBQeXRob24gYXBwbGljYXRpb24gaWNvbnMgZm9yIElkbGUgd2luZG93IHRpdGxlIGJhcnMuCi0gIFBhdGNoIG1vc3RseSBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIFVwZGF0ZSB0aGUgcHl0aG9uLmdpZiBpY29uIGZvciB0aGUgSWRsZSBjbGFzc2Jyb3dzZXIgYW5kIHBhdGhib3dzZXIKLSAgZnJvbSB0aGUgb2xkIGdyZWVuIHNuYWtlIHRvIHRoZSBuZXcgYmx1ZSBhbmQgeWVsbG93IHNuYWtlcy4KLQotLSBJc3N1ZSAjMTc3MjE6IFJlbW92ZSBub24tZnVuY3Rpb25hbCBjb25maWd1cmF0aW9uIGRpYWxvZyBoZWxwIGJ1dHRvbiB1bnRpbCB3ZQotICBtYWtlIGl0IGFjdHVhbGx5IGdpdmVzIHNvbWUgaGVscCB3aGVuIGNsaWNrZWQuIFBhdGNoIGJ5IEd1aWxoZXJtZSBTaW3DtWVzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMjA1MzI6IFRlc3RzIHdoaWNoIHVzZSBfdGVzdGNhcGkgbm93IGFyZSBtYXJrZWQgYXMgQ1B5dGhvbiBvbmx5LgotCi0tIElzc3VlICMxOTkyMDogQWRkZWQgdGVzdHMgZm9yIFRhckZpbGUubGlzdCgpLiAgQmFzZWQgb24gcGF0Y2ggYnkgVmFqcmFza3kgS29rLgotCi0tIElzc3VlICMxOTk5MDogQWRkZWQgdGVzdHMgZm9yIHRoZSBpbWdoZHIgbW9kdWxlLiAgQmFzZWQgb24gcGF0Y2ggYnkKLSAgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyMDQ3NDogRml4IHRlc3Rfc29ja2V0ICJ1bmV4cGVjdGVkIHN1Y2Nlc3MiIGZhaWx1cmVzIG9uIE9TIFggMTAuNysuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMDUzMDogQXJndW1lbnQgQ2xpbmljJ3Mgc2lnbmF0dXJlIGZvcm1hdCBoYXMgYmVlbiByZXZpc2VkIGFnYWluLgotICBUaGUgbmV3IHN5bnRheCBpcyBoaWdobHkgaHVtYW4gcmVhZGFibGUgd2hpbGUgc3RpbGwgcHJldmVudGluZyBmYWxzZQotICBwb3NpdGl2ZXMuICBUaGUgc3ludGF4IGFsc28gZXh0ZW5kcyBQeXRob24gc3ludGF4IHRvIGRlbm90ZSAic2VsZiIgYW5kCi0gIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBhbGxvd2luZyBpbnNwZWN0LlNpZ25hdHVyZSBvYmplY3RzIHRvIGJlCi0gIHRvdGFsbHkgYWNjdXJhdGUgZm9yIGFsbCBzdXBwb3J0ZWQgYnVpbHRpbnMgaW4gUHl0aG9uIDMuNC4KLQotLSBJc3N1ZSAjMjA0NTY6IEFyZ3VtZW50IENsaW5pYyBub3cgb2JzZXJ2ZXMgdGhlIEMgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsCi0gIGNvbXBpbGF0aW9uIHN0YXRlbWVudHMgb2YgdGhlIEMgZmlsZXMgaXQgcGFyc2VzLiAgV2hlbiBhIENsaW5pYyBibG9jayBpcwotICBpbnNpZGUgYSBjb25kaXRpb25hbCBjb2RlLCBpdCBhZGp1c3RzIGl0cyBvdXRwdXQgdG8gbWF0Y2gsIGluY2x1ZGluZwotICBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgYW4gZW1wdHkgbWV0aG9kZGVmIG1hY3JvLgotCi0tIElzc3VlICMyMDQ1NjogQ2xvbmVkIGZ1bmN0aW9ucyBpbiBBcmd1bWVudCBDbGluaWMgbm93IHVzZSB0aGUgY29ycmVjdAotICBuYW1lLCBub3QgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoZXkgd2VyZSBjbG9uZWQgZnJvbSwgZm9yIHRleHQKLSAgc3RyaW5ncyBpbnNpZGUgZ2VuZXJhdGVkIGNvZGUuCi0KLS0gSXNzdWUgIzIwNDU2OiBGaXhlZCBBcmd1bWVudCBDbGluaWMncyB0ZXN0IHN1aXRlIGFuZCAiLS1jb252ZXJ0ZXJzIiBmZWF0dXJlLgotCi0tIElzc3VlICMyMDQ1NjogQXJndW1lbnQgQ2xpbmljIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyBkaWZmZXJlbnQgbmFtZXMKLSAgZm9yIGEgcGFyYW1ldGVyIGluIFB5dGhvbiBhbmQgQywgdXNpbmcgImFzIiBvbiB0aGUgcGFyYW1ldGVyIGxpbmUuCi0KLS0gSXNzdWUgIzIwMzI2OiBBcmd1bWVudCBDbGluaWMgbm93IHVzZXMgYSBzaW1wbGUsIHVuaXF1ZSBzaWduYXR1cmUgdG8KLSAgYW5ub3RhdGUgdGV4dCBzaWduYXR1cmVzIGluIGRvY3N0cmluZ3MsIHJlc3VsdGluZyBpbiBmZXdlciBmYWxzZQotICBwb3NpdGl2ZXMuICAic2VsZiIgcGFyYW1ldGVycyBhcmUgYWxzbyBleHBsaWNpdGx5IG1hcmtlZCwgYWxsb3dpbmcKLSAgaW5zcGVjdC5TaWduYXR1cmUoKSB0byBhdXRob3JpdGF0aXZlbHkgZGV0ZWN0IChhbmQgc2tpcCkgc2FpZCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICMyMDMyNjogQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgc2VwYXJhdGUgY2hlY2tzdW1zIGZvciB0aGUKLSAgaW5wdXQgYW5kIG91dHB1dCBzZWN0aW9ucyBvZiB0aGUgYmxvY2ssIGFsbG93aW5nIGV4dGVybmFsIHRvb2xzIHRvIHZlcmlmeQotICB0aGF0IHRoZSBpbnB1dCBoYXMgbm90IGNoYW5nZWQgKGFuZCB0aHVzIHRoZSBvdXRwdXQgaXMgbm90IG91dC1vZi1kYXRlKS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzIwNDY1OiBVcGRhdGUgU1FMaXRlIHNoaXBwZWQgd2l0aCBPUyBYIGluc3RhbGxlciB0byAzLjguMy4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzIwNTE3OiBBZGRlZCBuZXcgZnVuY3Rpb25zIGFsbG93aW5nIE9TRXJyb3IgZXhjZXB0aW9ucyB0byByZWZlcmVuY2UKLSAgdHdvIGZpbGVuYW1lcyBpbnN0ZWFkIG9mIG9uZTogUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cygpIGFuZAotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHMoKS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMDQ4ODogQ2hhbmdlIHdvcmRpbmcgdG8gc2F5IGltcG9ydGxpYiBpcyAqdGhlKiBpbXBsZW1lbnRhdGlvbiBvZgotICBpbXBvcnQgaW5zdGVhZCBvZiBqdXN0ICphbiogaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzYzODY6IENsYXJpZnkgaW4gdGhlIHR1dG9yaWFsIHRoYXQgc3BlY2lmeWluZyBhIHN5bWxpbmsgdG8gZXhlY3V0ZQotICBtZWFucyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGVkIHNjcmlwdCBhbmQgbm90IHRoZSBzeW1saW5rIGlzCi0gIGFkZGVkIHRvIHN5cy5wYXRoLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEJldGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTAxLTI2Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMDE4OTogRm91ciBhZGRpdGlvbmFsIGJ1aWx0aW4gdHlwZXMgKFB5VHlwZU9iamVjdCwKLSAgUHlNZXRob2REZXNjcl9UeXBlLCBfUHlNZXRob2RXcmFwcGVyX1R5cGUsIGFuZCBQeVdyYXBwZXJEZXNjcl9UeXBlKQotICBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gcHJvdmlkZSBpbnRyb3NwZWN0aW9uIGluZm9ybWF0aW9uIGZvciBidWlsdGlucy4KLQotLSBJc3N1ZSAjMTc4MjU6IEN1cnNvciAiXiIgaXMgY29ycmVjdGx5IHBvc2l0aW9uZWQgZm9yIFN5bnRheEVycm9yIGFuZAotICBJbmRlbnRhdGlvbkVycm9yLgotCi0tIElzc3VlICMyMzgyOiBTeW50YXhFcnJvciBjdXJzb3IgIl4iIGlzIG5vdyB3cml0dGVuIGF0IGNvcnJlY3QgcG9zaXRpb24gaW4gbW9zdAotICBjYXNlcyB3aGVuIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGFyZSBpbiBsaW5lIChiZWZvcmUgIl4iKS4gIFRoaXMgc3RpbGwgbm90Ci0gIHdvcmtzIGNvcnJlY3RseSB3aXRoIHdpZGUgRWFzdCBBc2lhbiBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxODk2MDogVGhlIGZpcnN0IGxpbmUgb2YgUHl0aG9uIHNjcmlwdCBjb3VsZCBiZSBleGVjdXRlZCB0d2ljZSB3aGVuCi0gIHRoZSBzb3VyY2UgZW5jb2Rpbmcgd2FzIHNwZWNpZmllZCBvbiB0aGUgc2Vjb25kIGxpbmUuICBOb3cgdGhlIHNvdXJjZSBlbmNvZGluZwotICBkZWNsYXJhdGlvbiBvbiB0aGUgc2Vjb25kIGxpbmUgaXNuJ3QgZWZmZWN0aXZlIGlmIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zCi0gIGFueXRoaW5nIGV4Y2VwdCBhIGNvbW1lbnQuICAncHl0aG9uIC14JyB3b3JrcyBub3cgYWdhaW4gd2l0aCBmaWxlcyB3aXRoIHRoZQotICBzb3VyY2UgZW5jb2RpbmcgZGVjbGFyYXRpb25zLCBhbmQgY2FuIGJlIHVzZWQgdG8gbWFrZSBQeXRob24gYmF0Y2ggZmlsZXMKLSAgb24gV2luZG93cy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIGFzeW5jaW86IFZhcmlvdXMgaW1wcm92ZW1lbnRzIGFuZCBzbWFsbCBjaGFuZ2VzIG5vdCBhbGwgY292ZXJlZCBieQotICBpc3N1ZXMgbGlzdGVkIGJlbG93LiAgRS5nLiB3YWl0X2ZvcigpIG5vdyBjYW5jZWxzIHRoZSBpbm5lciB0YXNrIGlmCi0gIHRoZSB0aW1lb3V0IG9jY2N1cnM7IHR3ZWFrZWQgdGhlIHNldCBvZiBleHBvcnRlZCBzeW1ib2xzOyByZW5hbWVkCi0gIEVtcHR5L0Z1bGwgdG8gUXVldWVFbXB0eS9RdWV1ZUZ1bGw7ICJ3aXRoICh5aWVsZCBmcm9tIGxvY2spIiBub3cKLSAgdXNlcyBhIHNlcGFyYXRlIGNvbnRleHQgbWFuYWdlcjsgcmVhZGV4YWN0bHkoKSByYWlzZXMgaWYgbm90IGVub3VnaAotICBkYXRhIHdhcyByZWFkOyBQVFkgc3VwcG9ydCB0d2Vha3MuCi0KLS0gSXNzdWUgIzIwMzExOiBhc3luY2lvOiBBZGQgYSBncmFudWxhcml0eSBhdHRyaWJ1dGUgdG8gQmFzZUV2ZW50TG9vcDogbWF4aW11bQotICBiZXR3ZWVuIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBCYXNlRXZlbnRMb29wLnRpbWUoKSBtZXRob2QgYW5kIHRoZSByZXNvbHV0aW9uCi0gIG9mIHRoZSBzZWxlY3Rvci4gVGhlIGdyYW51YXJpbGl0eSBpcyB1c2VkIGluIHRoZSBzY2hlZHVsZXIgdG8gcm91bmQgdGltZSBhbmQKLSAgZGVhZGxpbmUuCi0KLS0gSXNzdWUgIzIwMzExOiBzZWxlY3RvcnM6IEFkZCBhIHJlc29sdXRpb24gYXR0cmlidXRlIHRvIEJhc2VTZWxlY3Rvci4KLQotLSBJc3N1ZSAjMjAxODk6IHVuaXR0ZXN0Lm1vY2sgbm93IG5vIGxvbmdlciBhc3N1bWVzIHRoYXQgYW55IG9iamVjdCBmb3IKLSAgd2hpY2ggaXQgY291bGQgZ2V0IGFuIGluc3BlY3QuU2lnbmF0dXJlIGlzIGEgY2FsbGFibGUgd3JpdHRlbiBpbiBQeXRob24uCi0gIEZpeCBjb3VydGVzeSBvZiBNaWNoYWVsIEZvb3JkLgotCi0tIElzc3VlICMyMDMxNzogRXhpdFN0YWNrLl9fZXhpdF9fIGNvdWxkIGNyZWF0ZSBhIHNlbGYtcmVmZXJlbnRpYWwgbG9vcCBpZiBhbgotICBleGNlcHRpb24gcmFpc2VkIGJ5IGEgY2xlYW51cCBvcGVyYXRpb24gYWxyZWFkeSBoYWQgaXRzIGNvbnRleHQgc2V0Ci0gIGNvcnJlY3RseSAoZm9yIGV4YW1wbGUsIGJ5IHRoZSBAY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yKS4gVGhlIGluZmluaXRlCi0gIGxvb3AgdGhpcyBjYXVzZWQgaXMgbm93IGF2b2lkZWQgYnkgY2hlY2tpbmcgaWYgdGhlIGV4cGVjdGVkIGNvbnRleHQgaXMKLSAgYWxyZWFkeSBzZXQgYmVmb3JlIHRyeWluZyB0byBmaXggaXQuCi0KLS0gSXNzdWUgIzIwMzc0OiBGaXggYnVpbGQgd2l0aCBHTlUgcmVhZGxpbmUgPj0gNi4zLgotCi0tIElzc3VlICMyMDI2MjogV2FybmluZ3MgYXJlIHJhaXNlZCBub3cgd2hlbiBkdXBsaWNhdGUgbmFtZXMgYXJlIGFkZGVkIGluIHRoZQotICBaSVAgZmlsZSBvciB0b28gbG9uZyBaSVAgZmlsZSBjb21tZW50IGlzIHRydW5jYXRlZC4KLQotLSBJc3N1ZSAjMjAxNjU6IFRoZSB1bml0dGVzdCBtb2R1bGUgbm8gbG9uZ2VyIGNvbnNpZGVycyB0ZXN0cyBtYXJrZWQgd2l0aAotICBAZXhwZWN0ZWRGYWlsdXJlIHN1Y2Nlc3NmdWwgaWYgdGhleSBwYXNzLgotCi0tIElzc3VlICMxODU3NDogQWRkZWQgbWlzc2luZyBuZXdsaW5lIGluIDEwMC1Db250aW51ZSByZXBseSBmcm9tCi0gIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCi0KLS0gSXNzdWUgIzIwMjcwOiB1cmxsaWIudXJscGFyc2Ugbm93IHN1cHBvcnRzIGVtcHR5IHBvcnRzLgotCi0tIElzc3VlICMyMDI0MzogVGFyRmlsZSBubyBsb25nZXIgcmFpc2UgUmVhZEVycm9yIHdoZW4gb3BlbmVkIGluIHdyaXRlIG1vZGUuCi0KLS0gSXNzdWUgIzIwMjM4OiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICJ3Omd6IiBtb2RlIGRpZG4ndAotICB3cml0ZSBjb21wbGV0ZSBvdXRwdXQgb24gY2xvc2UuCi0KLS0gSXNzdWUgIzIwMjQ1OiBUaGUgb3BlbiBmdW5jdGlvbnMgaW4gdGhlIHRhcmZpbGUgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlCi0gIGVtcHR5IG1vZGUuCi0KLS0gSXNzdWUgIzIwMjQyOiBGaXhlZCBiYXNpY0NvbmZpZygpIGZvcm1hdCBzdHJpbmdzIGZvciB0aGUgYWx0ZXJuYXRpdmUKLSAgZm9ybWF0dGluZyBzdHlsZXMuIFRoYW5rcyB0byBrZXNwaW5kbGVyIGZvciB0aGUgYnVnIHJlcG9ydCBhbmQgcGF0Y2guCi0KLS0gSXNzdWUgIzIwMjQ2OiBGaXggYnVmZmVyIG92ZXJmbG93IGluIHNvY2tldC5yZWN2ZnJvbV9pbnRvLgotCi0tIElzc3VlcyAjMjAyMDYgYW5kICM1ODAzOiBGaXggZWRnZSBjYXNlIGluIGVtYWlsLnF1b3ByaW1pbWUuZW5jb2RlIHdoZXJlIGl0Ci0gIHRydW5jYXRlZCBsaW5lcyBlbmRpbmcgaW4gYSBjaGFyYWN0ZXIgbmVlZGluZyBlbmNvZGluZyBidXQgbm8gbmV3bGluZSBieQotICB1c2luZyBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgYnVnLgotCi0tIElzc3VlICMxOTA4MjogV29ya2luZyB4bWxycGMuc2VydmVyIGFuZCB4bWxycGMuY2xpZW50IGV4YW1wbGVzLiBCb3RoIGluCi0gIG1vZHVsZXMgYW5kIGluIGRvY3VtZW50YXRpb24uIEluaXRpYWwgcGF0Y2ggY29udHJpYnV0ZWQgYnkgVmFqcmFza3kgS29rLgotCi0tIElzc3VlICMyMDEzODogVGhlIHdzZ2lyZWYuYXBwbGljYXRpb25fdXJpKCkgYW5kIHdzZ2lyZWYucmVxdWVzdF91cmkoKQotICBmdW5jdGlvbnMgbm93IGNvbmZvcm0gdG8gUEVQIDMzMzMgd2hlbiBoYW5kbGUgbm9uLUFTQ0lJIFVSTHMuCi0KLS0gSXNzdWUgIzE5MDk3OiBSYWlzZSB0aGUgY29ycmVjdCBFeGNlcHRpb24gd2hlbiBjZ2kuRmllbGRTdG9yYWdlIGlzIGdpdmVuIGFuCi0gIGludmFsaWQgZmlsZW9iai4KLQotLSBJc3N1ZSAjMjAxNTI6IFBvcnRlZCBQeXRob24vaW1wb3J0LmMgb3ZlciB0byBBcmd1bWVudCBDbGluaWMuCi0KLS0gSXNzdWUgIzEzMTA3OiBhcmdwYXJzZSBhbmQgb3B0cGFyc2Ugbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBvdXRwdXQKLSAgYSBoZWxwIG9uIGVudmlyb25tZW50IHdpdGggdG9vIHNtYWxsIENPTFVNTlMuICBCYXNlZCBvbiBwYXRjaCBieQotICBFbGF6YXIgR2Vyc2h1bmkuCi0KLS0gSXNzdWUgIzIwMjA3OiBBbHdheXMgZGlzYWJsZSBTU0x2MiBleGNlcHQgd2hlbiBQUk9UT0NPTF9TU0x2MiBpcyBleHBsaWNpdGx5Ci0gIGFza2VkIGZvci4KLQotLSBJc3N1ZSAjMTg5NjA6IFRoZSB0b2tlbml6ZSBtb2R1bGUgbm93IGlnbm9yZSB0aGUgc291cmNlIGVuY29kaW5nIGRlY2xhcmF0aW9uCi0gIG9uIHRoZSBzZWNvbmQgbGluZSBpZiB0aGUgZmlyc3QgbGluZSBjb250YWlucyBhbnl0aGluZyBleGNlcHQgYSBjb21tZW50LgotCi0tIElzc3VlICMyMDA3ODogUmVhZGluZyBtYWxmb3JtZWQgemlwZmlsZXMgbm8gbG9uZ2VyIGhhbmdzIHdpdGggMTAwJSBDUFUKLSAgY29uc3VtcHRpb24uCi0KLS0gSXNzdWUgIzIwMTEzOiBvcy5yZWFkdigpIGFuZCBvcy53cml0ZXYoKSBub3cgcmFpc2UgYW4gT1NFcnJvciBleGNlcHRpb24gb24KLSAgZXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgLTEuCi0KLS0gSXNzdWUgIzE5NzE5OiBNYWtlIGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9tb2R1bGUoKSwKLSAgUGF0aEVudHJ5RmluZGVyLmZpbmRfbG9hZGVyKCksIGFuZCBMb2FkZXIubG9hZF9tb2R1bGUoKSB1c2UgUEVQIDQ1MSBBUElzIHRvCi0gIGhlbHAgd2l0aCBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjMjAxNDQ6IGluc3BlY3QuU2lnbmF0dXJlIG5vdyBzdXBwb3J0cyBwYXJzaW5nIHNpbXBsZSBzeW1ib2xpYwotICBjb25zdGFudHMgYXMgcGFyYW1ldGVyIGRlZmF1bHQgdmFsdWVzIGluIF9fdGV4dF9zaWduYXR1cmVfXy4KLQotLSBJc3N1ZSAjMjAwNzI6IEZpeGVkIG11bHRpcGxlIGVycm9ycyBpbiB0a2ludGVyIHdpdGggd2FudG9iamVjdHMgaXMgRmFsc2UuCi0KLS0gSXNzdWUgIzIwMjI5OiBBdm9pZCBwbGlzdGxpYiBkZXByZWNhdGlvbiB3YXJuaW5nIGluIHBsYXRmb3JtLm1hY192ZXIoKS4KLQotLSBJc3N1ZSAjMTQ0NTU6IEZpeCBzb21lIHByb2JsZW1zIHdpdGggdGhlIG5ldyBiaW5hcnkgcGxpc3Qgc3VwcG9ydCBpbiBwbGlzdGxpYi4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNzM5MDogQWRkIFB5dGhvbiB2ZXJzaW9uIHRvIElkbGUgZWRpdG9yIHdpbmRvdyB0aXRsZSBiYXIuCi0gIE9yaWdpbmFsIHBhdGNoZXMgYnkgRWRtb25kIEJ1cm5ldHQgYW5kIEtlbnQgSm9obnNvbi4KLQotLSBJc3N1ZSAjMTg5NjA6IElETEUgbm93IGlnbm9yZXMgdGhlIHNvdXJjZSBlbmNvZGluZyBkZWNsYXJhdGlvbiBvbiB0aGUgc2Vjb25kCi0gIGxpbmUgaWYgdGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcgZXhjZXB0IGEgY29tbWVudC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzIwMzU4OiBUZXN0cyBmb3IgY3Vyc2VzLndpbmRvdy5vdmVybGF5IGFuZCBjdXJzZXMud2luZG93Lm92ZXJ3cml0ZQotICBubyBsb25nZXIgc3BlY2lmeSBtaW57cm93LGNvbH0gPiBtYXh7cm93LGNvbH0uCi0KLS0gSXNzdWUgIzE5ODA0OiBUaGUgdGVzdF9maW5kX21hYyB0ZXN0IGluIHRlc3RfdXVpZCBpcyBub3cgc2tpcHBlZCBpZiB0aGUKLSAgaWZjb25maWcgZXhlY3V0YWJsZSBpcyBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxOTg4NjogVXNlIGJldHRlciBlc3RpbWF0ZWQgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgYmlnbWVtIHRlc3RzLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjAzOTA6IEFyZ3VtZW50IENsaW5pYydzICJmaWxlIiBvdXRwdXQgcHJlc2V0IG5vdyBkZWZhdWx0cyB0bwotICAie2Rpcm5hbWV9L2NsaW5pYy97YmFzZW5hbWV9LmgiLgotCi0tIElzc3VlICMyMDM5MDogQXJndW1lbnQgQ2xpbmljJ3MgImNsYXNzIiBkaXJlY3RpdmUgc3ludGF4IGhhcyBiZWVuIGV4dGVuZGVkCi0gIHdpdGggdHdvIG5ldyByZXF1aXJlZCBhcmd1bWVudHM6ICJ0eXBlZGVmIiBhbmQgInR5cGVfb2JqZWN0Ii4KLQotLSBJc3N1ZSAjMjAzOTA6IEFyZ3VtZW50IENsaW5pYzogSWYgX19uZXdfXyBvciBfX2luaXRfXyBmdW5jdGlvbnMgZGlkbid0IHVzZQotICBrd2FyZ3MgKG9yIGFyZ3MpLCB0aGUgUHlBcmdfTm9LZXl3b3JkcyAob3IgUHlBcmdfTm9Qb3NpdGlvbmFsKSBjYWxscwotICBnZW5lcmF0ZWQgYXJlIG9ubHkgcnVuIHdoZW4gdGhlIHR5cGUgb2JqZWN0IGlzIGFuIGV4YWN0IG1hdGNoLgotCi0tIElzc3VlICMyMDM5MDogQXJndW1lbnQgQ2xpbmljIG5vdyBmYWlscyBpZiB5b3UgaGF2ZSByZXF1aXJlZCBwYXJhbWV0ZXJzIGFmdGVyCi0gIG9wdGlvbmFsIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzIwMzkwOiBBcmd1bWVudCBDbGluaWMgY29udmVydGVycyBub3cgaGF2ZSBhIG5ldyB0ZW1wbGF0ZSB0aGV5IGNhbgotICBpbmplY3QgY29kZSBpbnRvOiAibW9kaWZpZXJzIi4gIENvZGUgcHV0IHRoZXJlIGlzIHJ1biBpbiB0aGUgcGFyc2luZwotICBmdW5jdGlvbiBhZnRlciBhcmd1bWVudCBwYXJzaW5nIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gdGhlIGltcGwuCi0KLS0gSXNzdWUgIzIwMzc2OiBBcmd1bWVudCBDbGluaWMgbm93IGVzY2FwZXMgYmFja3NsYXNoZXMgaW4gZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjMjAzODE6IEFyZ3VtZW50IENsaW5pYyBub3cgc2FuaXR5IGNoZWNrcyB0aGUgZGVmYXVsdCBhcmd1bWVudCB3aGVuCi0gIGNfZGVmYXVsdCBpcyBhbHNvIHNwZWNpZmllZCwgcHJvdmlkaW5nIGEgbmljZSBmYWlsdXJlIG1lc3NhZ2UgZm9yCi0gIGRpc2FsbG93ZWQgdmFsdWVzLgotCi0tIElzc3VlICMyMDE4OTogQXJndW1lbnQgQ2xpbmljIG5vdyBlbnN1cmVzIHRoYXQgcGFyc2VyIGZ1bmN0aW9ucyBmb3IKLSAgX19uZXdfXyBhcmUgYWx3YXlzIG9mIHR5cGUgbmV3ZnVuYywgdGhlIHR5cGUgb2YgdGhlIHRwX25ldyBzbG90LgotICBTaW1pbGFybHksIHBhcnNlciBmdW5jdGlvbnMgZm9yIF9faW5pdF9fIGFyZSBub3cgYWx3YXlzIG9mIHR5cGUgaW5pdHByb2MsCi0gIHRoZSB0eXBlIG9mIHRwX2luaXQuCi0KLS0gSXNzdWUgIzIwMTg5OiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHByZXNzZXMgdGhlIGRvY3N0cmluZyBmb3IgX19uZXdfXwotICBhbmQgX19pbml0X18gZnVuY3Rpb25zIGlmIG5vIGRvY3N0cmluZyBpcyBwcm92aWRlZCBpbiB0aGUgaW5wdXQuCi0KLS0gSXNzdWUgIzIwMTg5OiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHByZXNzZXMgdGhlICJzZWxmIiBwYXJhbWV0ZXIgaW4gdGhlCi0gIGltcGwgZm9yIEBzdGF0aWNtZXRob2QgZnVuY3Rpb25zLgotCi0tIElzc3VlICMyMDI5NDogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBhcmd1bWVudCBwYXJzaW5nIGZvciBfX25ld19fIGFuZAotICBfX2luaXRfXyBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzIwMjk5OiBBcmd1bWVudCBDbGluaWMgY3VzdG9tIGNvbnZlcnRlcnMgbWF5IG5vdyBjaGFuZ2UgdGhlIGRlZmF1bHQKLSAgdmFsdWUgb2YgY19kZWZhdWx0IGFuZCBweV9kZWZhdWx0IHdpdGggYSBjbGFzcyBtZW1iZXIuCi0KLS0gSXNzdWUgIzIwMjg3OiBBcmd1bWVudCBDbGluaWMncyBvdXRwdXQgaXMgbm93IGNvbmZpZ3VyYWJsZSwgYWxsb3dpbmcKLSAgZGVsYXlpbmcgaXRzIG91dHB1dCBvciBldmVuIHJlZGlyZWN0aW5nIGl0IHRvIGEgc2VwYXJhdGUgZmlsZS4KLQotLSBJc3N1ZSAjMjAyMjY6IEFyZ3VtZW50IENsaW5pYyBub3cgcGVybWl0cyBzaW1wbGUgZXhwcmVzc2lvbnMKLSAgKGUuZy4gInN5cy5tYXhzaXplIC0gMSIpIGFzIGRlZmF1bHQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICMxOTkzNjogQWRkZWQgZXhlY3V0YWJsZSBiaXRzIG9yIHNoZWJhbmcgbGluZXMgdG8gUHl0aG9uIHNjcmlwdHMgd2hpY2gKLSAgcmVxdWlyZXMgdGhlbS4gIERpc2FibGUgZXhlY3V0YWJsZSBiaXRzIGFuZCBzaGViYW5nIGxpbmVzIGluIHRlc3QgYW5kCi0gIGJlbmNobWFyayBmaWxlcyBpbiBvcmRlciB0byBwcmV2ZW50IHVzaW5nIGEgcmFuZG9tIHN5c3RlbSBweXRob24sIGFuZCBpbgotICBzb3VyY2UgZmlsZXMgb2YgbW9kdWxlcyB3aGljaCBkb24ndCBwcm92aWRlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuICBGaXhlZAotICBzaGViYW5nIGxpbmVzIGluIHRoZSB1bml0dGVzdGd1aSBhbmQgY2hlY2twaXAgc2NyaXB0cy4KLQotLSBJc3N1ZSAjMjAyNjg6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgY2xvbmluZyB0aGUgcGFyYW1ldGVycyBhbmQKLSAgcmV0dXJuIGNvbnZlcnRlciBvZiBleGlzdGluZyBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzIwMjI4OiBBcmd1bWVudCBDbGluaWMgbm93IGhhcyBzcGVjaWFsIHN1cHBvcnQgZm9yIGNsYXNzIHNwZWNpYWwKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMjAyMTQ6IEZpeGVkIGEgbnVtYmVyIG9mIHNtYWxsIGlzc3VlcyBhbmQgZG9jdW1lbnRhdGlvbiBlcnJvcnMgaW4KLSAgQXJndW1lbnQgQ2xpbmljIChzZWUgaXNzdWUgZm9yIGRldGFpbHMpLgotCi0tIElzc3VlICMyMDE5NjogRml4ZWQgYSBidWcgd2hlcmUgQXJndW1lbnQgQ2xpbmljIGRpZCBub3QgZ2VuZXJhdGUgY29ycmVjdAotICBwYXJzaW5nIGNvZGUgZm9yIGZ1bmN0aW9ucyB3aXRoIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIHdoZXJlIGFsbCBhcmd1bWVudHMKLSAgYXJlIG9wdGlvbmFsLgotCi0tIElzc3VlICMxODk2MDogMnRvMyBhbmQgdGhlIGZpbmRub2NvZGluZy5weSBzY3JpcHQgbm93IGlnbm9yZSB0aGUgc291cmNlCi0gIGVuY29kaW5nIGRlY2xhcmF0aW9uIG9uIHRoZSBzZWNvbmQgbGluZSBpZiB0aGUgZmlyc3QgbGluZSBjb250YWlucyBhbnl0aGluZwotICBleGNlcHQgYSBjb21tZW50LgotCi0tIElzc3VlICMxOTcyMzogVGhlIG1hcmtlciBjb21tZW50cyBBcmd1bWVudCBDbGluaWMgdXNlcyBoYXZlIGJlZW4gY2hhbmdlZAotICB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgotCi0tIElzc3VlICMyMDE1NzogV2hlbiBBcmd1bWVudCBDbGluaWMgcmVuYW1lcyBhIHBhcmFtZXRlciBiZWNhdXNlIGl0cyBuYW1lCi0gIGNvbGxpZGVzIHdpdGggYSBDIGtleXdvcmQsIGl0IG5vIGxvbmdlciBleHBvc2VzIHRoYXQgcmVuYW1lIHRvIFB5QXJnX1BhcnNlLgotCi0tIElzc3VlICMyMDE0MTogSW1wcm92ZWQgQXJndW1lbnQgQ2xpbmljJ3Mgc3VwcG9ydCBmb3IgdGhlIFB5QXJnX1BhcnNlICJPISIKLSAgZm9ybWF0IHVuaXQuCi0KLS0gSXNzdWUgIzIwMTQ0OiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHBvcnRzIHNpbXBsZSBzeW1ib2xpYyBjb25zdGFudHMKLSAgYXMgcGFyYW1ldGVyIGRlZmF1bHQgdmFsdWVzLgotCi0tIElzc3VlICMyMDE0MzogVGhlIGxpbmUgbnVtYmVycyByZXBvcnRlZCBpbiBBcmd1bWVudCBDbGluaWMgZXJyb3JzIGFyZQotICBub3cgbW9yZSBhY2N1cmF0ZS4KLQotLSBJc3N1ZSAjMjAxNDI6IFB5X2J1ZmZlciB2YXJpYWJsZXMgZ2VuZXJhdGVkIGJ5IEFyZ3VtZW50IENsaW5pYyBhcmUgbm93Ci0gIGluaXRpYWxpemVkIHdpdGggYSBkZWZhdWx0IHZhbHVlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTI4Mzc6IFNpbGVuY2UgYSB0YXV0b2xvZ2ljYWwgY29tcGFyaXNvbiB3YXJuaW5nIG9uIE9TIFggdW5kZXIgQ2xhbmcgaW4KLSAgc29ja2V0bW9kdWxlLmMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgQmV0YSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDEtMDUKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3NDMyOiBEcm9wIFVDUzIgZnJvbSBuYW1lcyBvZiBVbmljb2RlIGZ1bmN0aW9ucyBpbiBweXRob24zLmRlZi4KLQotLSBJc3N1ZSAjMTk1MjY6IEV4Y2x1ZGUgYWxsIG5ldyBBUEkgZnJvbSB0aGUgc3RhYmxlIEFCSS4gRXhjZXB0aW9ucyBjYW4gYmUKLSAgbWFkZSBpZiBhIG5lZWQgaXMgZGVtb25zdHJhdGVkLgotCi0tIElzc3VlICMxOTk2OTogUHlCeXRlc19Gcm9tRm9ybWF0VigpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciBpZiAiJWMiCi0gIGFyZ3VtZW50IGlzIG5vdCBpbiByYW5nZSBbMDsgMjU1XS4KLQotLSBJc3N1ZSAjMTk5OTU6ICVjLCAlbywgJXgsIGFuZCAlWCBub3cgaXNzdWUgYSBEZXByZWNhdGlvbldhcm5pbmcgb24gbm9uLWludGVnZXIKLSAgaW5wdXQ7IHJld29yZGVkIGRvY3MgdG8gY2xhcmlmeSB0aGF0IGFuIGludGVnZXIgdHlwZSBzaG91bGQgZGVmaW5lIGJvdGggX19pbnRfXwotICBhbmQgX19pbmRleF9fLgotCi0tIElzc3VlICMxOTc4NzogUHlUaHJlYWRfc2V0X2tleV92YWx1ZSgpIG5vdyBhbHdheXMgc2V0IHRoZSB2YWx1ZS4gSW4gUHl0aG9uCi0gIDMuMywgdGhlIGZ1bmN0aW9uIGRpZCBub3RoaW5nIGlmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgKGlmIHRoZSBjdXJyZW50IHZhbHVlCi0gIGlzIGEgbm9uLU5VTEwgcG9pbnRlcikuCi0KLS0gSXNzdWUgIzE0NDMyOiBSZW1vdmUgdGhlIHRocmVhZCBzdGF0ZSBmaWVsZCBmcm9tIHRoZSBmcmFtZSBzdHJ1Y3R1cmUuIEZpeCBhCi0gIGNyYXNoIHdoZW4gYSBnZW5lcmF0b3IgaXMgY3JlYXRlZCBpbiBhIEMgdGhyZWFkIHRoYXQgaXMgZGVzdHJveWVkIHdoaWxlIHRoZQotICBnZW5lcmF0b3IgaXMgc3RpbGwgdXNlZC4gVGhlIGlzc3VlIHdhcyB0aGF0IGEgZ2VuZXJhdG9yIGNvbnRhaW5zIGEgZnJhbWUsIGFuZAotICB0aGUgZnJhbWUga2VwdCBhIHJlZmVyZW5jZSB0byB0aGUgUHl0aG9uIHN0YXRlIG9mIHRoZSBkZXN0cm95ZWQgQyB0aHJlYWQuIFRoZQotICBjcmFzaCBvY2N1cnMgd2hlbiBhIHRyYWNlIGZ1bmN0aW9uIGlzIHNldHVwLgotCi0tIElzc3VlICMxOTU3NjogUHlHSUxTdGF0ZV9FbnN1cmUoKSBub3cgaW5pdGlhbGl6ZXMgdGhyZWFkcy4gQXQgc3RhcnR1cCwgUHl0aG9uCi0gIGhhcyBubyBjb25jcmV0ZSBHSUwuIElmIFB5R0lMU3RhdGVfRW5zdXJlKCkgaXMgY2FsbGVkIGZyb20gYSBuZXcgdGhyZWFkIGZvcgotICB0aGUgZmlyc3QgdGltZSBhbmQgUHlFdmFsX0luaXRUaHJlYWRzKCkgd2FzIG5vdCBjYWxsZWQgeWV0LCBhIEdJTCBuZWVkcyB0byBiZQotICBjcmVhdGVkLgotCi0tIElzc3VlICMxNzU3NjogRGVwcmVjYXRpb24gd2FybmluZyBlbWl0dGVkIG5vdyB3aGVuIF9faW50X18oKSBvciBfX2luZGV4X18oKQotICByZXR1cm4gbm90IGludCBpbnN0YW5jZS4KLQotLSBJc3N1ZSAjMTk5MzI6IEZpeCB0eXBvIGluIGltcG9ydC5oLCBtaXNzaW5nIHdoaXRlc3BhY2VzIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMuCi0KLS0gSXNzdWUgIzE5NzM2OiBBZGQgbW9kdWxlLWxldmVsIHN0YXR2ZnMgY29uc3RhbnRzIGRlZmluZWQgZm9yIEdOVS9nbGliYwotICBiYXNlZCBzeXN0ZW1zLgotCi0tIElzc3VlICMyMDA5NzogRml4IGJhZCB1c2Ugb2YgInNlbGYiIGluIGltcG9ydGxpYidzIFdpbmRvd3NSZWdpc3RyeUZpbmRlci4KLQotLSBJc3N1ZSAjMTk3Mjk6IEluIHN0ci5mb3JtYXQoKSwgZml4IHJlY3Vyc2l2ZSBleHBhbnNpb24gaW4gZm9ybWF0IHNwZWMuCi0KLS0gSXNzdWUgIzE5NjM4OiBGaXggcG9zc2libGUgY3Jhc2ggLyB1bmRlZmluZWQgYmVoYXZpb3VyIGZyb20gaHVnZSAobW9yZSB0aGFuIDIKLSAgYmlsbGlvbiBjaGFyYWN0ZXJzKSBpbnB1dCBzdHJpbmdzIGluIF9QeV9kZ19zdHJ0b2QuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjAxNTQ6IERlYWRsb2NrIGluIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5KCkuCi0KLS0gSXNzdWUgIzE2MTEzOiBSZW1vdmUgc2hhMyBtb2R1bGUgYWdhaW4uCi0KLS0gSXNzdWUgIzIwMTExOiBwYXRobGliLlBhdGgud2l0aF9zdWZmaXgoKSBub3cgc2FuaXR5IGNoZWNrcyB0aGUgZ2l2ZW4gc3VmZml4LgotCi0tIEZpeCBicmVha2FnZSBpbiBUZXN0U3VpdGUuY291bnRUZXN0Q2FzZXMoKSBpbnRyb2R1Y2VkIGJ5IGlzc3VlICMxMTc5OC4KLQotLSBJc3N1ZSAjMjAxMDg6IEF2b2lkIHBhcmFtZXRlciBuYW1lIGNsYXNoIGluIGluc3BlY3QuZ2V0Y2FsbGFyZ3MoKS4KLQotLSBJc3N1ZSAjMTk5MTg6IEZpeCBQdXJlUGF0aC5yZWxhdGl2ZV90bygpIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE5NDIyOiBFeHBsaWNpdGx5IGRpc2FsbG93IG5vbi1TT0NLX1NUUkVBTSBzb2NrZXRzIGluIHRoZSBzc2wKLSAgbW9kdWxlLCByYXRoZXIgdGhhbiBzaWxlbnRseSBsZXQgdGhlbSBlbWl0IGNsZWFyIHRleHQgZGF0YS4KLQotLSBJc3N1ZSAjMjAwNDY6IExvY2FsZSBhbGlhcyB0YWJsZSBubyBsb25nZXIgY29udGFpbnMgZW50aXRpZXMgd2hpY2ggY2FuIGJlCi0gIGNhbGN1bGF0ZWQuICBHZW5lcmFsaXplZCBzdXBwb3J0IG9mIHRoZSBldXJvIG1vZGlmaWVyLgotCi0tIElzc3VlICMyMDAyNzogRml4ZWQgbG9jYWxlIGFsaWFzZXMgZm9yIGRldmFuYWdhcmkgbG9jYWxlcy4KLQotLSBJc3N1ZSAjMjAwNjc6IFRraW50ZXIgdmFyaWFibGVzIG5vdyB3b3JrIHdoZW4gd2FudG9iamVjdHMgaXMgZmFsc2UuCi0KLS0gSXNzdWUgIzE5MDIwOiBUa2ludGVyIG5vdyB1c2VzIHNwbGl0bGlzdCgpIGluc3RlYWQgb2Ygc3BsaXQoKSBpbiBjb25maWd1cmUKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTk3NDQ6IGVuc3VyZXBpcCBub3cgcHJvdmlkZXMgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIFB5dGhvbiBpcwotICBidWlsdCB3aXRob3V0IFNTTC9UTFMgc3VwcG9ydCAocGlwIGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHN1cHBvcnQgdG8gcnVuLAotICBldmVuIGlmIG9ubHkgb3BlcmF0aW5nIHdpdGggbG9jYWwgd2hlZWwgZmlsZXMpCi0KLS0gSXNzdWUgIzE5NzM0OiBlbnN1cmVwaXAgbm93IGlnbm9yZXMgYWxsIHBpcCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYXZvaWQKLSAgb2RkIGJlaGF2aW91ciBiYXNlZCBvbiB1c2VyIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MKLQotLSBGaXggVHlwZUVycm9yIG9uICJzZXR1cC5weSB1cGxvYWQgLS1zaG93LXJlc3BvbnNlIi4KLQotLSBJc3N1ZSAjMjAwNDU6IEZpeCAic2V0dXAucHkgcmVnaXN0ZXIgLS1saXN0LWNsYXNzaWZpZXJzIi4KLQotLSBJc3N1ZSAjMTg4Nzk6IFdoZW4gYSBtZXRob2QgaXMgbG9va2VkIHVwIG9uIGEgdGVtcG9yYXJ5IGZpbGUsIGF2b2lkIGNsb3NpbmcKLSAgdGhlIGZpbGUgYmVmb3JlIHRoZSBtZXRob2QgaXMgcG9zc2libHkgY2FsbGVkLgotCi0tIElzc3VlICMyMDAzNzogQXZvaWQgY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYSB0ZXh0IGZpbGUgbGF0ZSBhdCBpbnRlcnByZXRlcgotICBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjMTk5Njc6IFRoYW5rcyB0byB0aGUgUEVQIDQ0MiwgYXN5bmNpby5GdXR1cmUgbm93IHVzZXMgYQotICBkZXN0cnVjdG9yIHRvIGxvZyB1bmNhdWdodCBleGNlcHRpb25zLCBpbnN0ZWFkIG9mIHRoZSBkZWRpY2F0ZWQKLSAgX1RyYWNlYmFja0xvZ2dlciBjbGFzcy4KLQotLSBBZGRlZCBhIFRhc2suY3VycmVudF90YXNrKCkgY2xhc3MgbWV0aG9kIHRvIGFzeW5jaW8uCi0KLS0gSXNzdWUgIzE5ODUwOiBTZXQgU0FfUkVTVEFSVCBpbiBhc3luY2lvIHdoZW4gcmVnaXN0ZXJpbmcgYSBzaWduYWwKLSAgaGFuZGxlciB0byBsaW1pdCBFSU5UUiBvY2N1cnJlbmNlcy4KLQotLSBJbXBsZW1lbnRlZCB3cml0ZSBmbG93IGNvbnRyb2wgaW4gYXN5bmNpbyBmb3IgcHJvYWN0b3IgZXZlbnQgbG9vcCAoV2luZG93cykuCi0KLS0gQ2hhbmdlIHdyaXRlIGJ1ZmZlciBpbiBhc3luY2lvIHVzZSB0byBhdm9pZCBPKE4qKjIpIGJlaGF2aW9yLiAgTWFrZQotICB3cml0ZSgpL3NlbmR0bygpIGFjY2VwdCBieXRlYXJyYXkvbWVtb3J5dmlldy4KLQotLSBJc3N1ZSAjMjAwMzQ6IFVwZGF0ZWQgYWxpYXMgbWFwcGluZyB0byBtb3N0IHJlY2VudCBsb2NhbGUuYWxpYXMgZmlsZQotICBmcm9tIFgub3JnIGRpc3RyaWJ1dGlvbiB1c2luZyBtYWtlbG9jYWxlYWxpYXMucHkuCi0KLS0gSXNzdWUgIzU4MTU6IEZpeGVkIHN1cHBvcnQgZm9yIGxvY2FsZXMgd2l0aCBtb2RpZmllcnMuICBGaXhlZCBzdXBwb3J0IGZvcgotICBsb2NhbGUgZW5jb2RpbmdzIHdpdGggaHlwaGVucy4KLQotLSBJc3N1ZSAjMjAwMjY6IEZpeCB0aGUgc3FsaXRlIG1vZHVsZSB0byBoYW5kbGUgY29ycmVjdGx5IGludmFsaWQgaXNvbGF0aW9uCi0gIGxldmVsICh3cm9uZyB0eXBlKS4KLQotLSBJc3N1ZSAjMTg4Mjk6IGNzdi5EaWFsZWN0KCkgbm93IGNoZWNrcyB0eXBlIGZvciBkZWxpbWl0ZXIsIGVzY2FwZWNoYXIgYW5kCi0gIHF1b3RlY2hhciBmaWVsZHMuICBPcmlnaW5hbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzE5ODU1OiB1dWlkLmdldG5vZGUoKSBvbiBVbml4IG5vdyBsb29rcyBvbiB0aGUgUEFUSCBmb3IgdGhlCi0gIGV4ZWN1dGFibGVzIHVzZWQgdG8gZmluZCB0aGUgbWFjIGFkZHJlc3MsIHdpdGggL3NiaW4gYW5kIC91c3Ivc2JpbiBhcwotICBmYWxsYmFja3MuCi0KLS0gSXNzdWUgIzIwMDA3OiBIVFRQUmVzcG9uc2UucmVhZCgwKSBubyBtb3JlIHByZW1hdHVyZWx5IGNsb3NlcyBjb25uZWN0aW9uLgotICBPcmlnaW5hbCBwYXRjaCBieSBTaW1vbiBTYXBpbi4KLQotLSBJc3N1ZSAjMTk5NDY6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBydW5weSB0byBpbml0aWFsaXplIF9fbWFpbl9fIGluCi0gIGNoaWxkIHByb2Nlc3NlcyB3aGVuIG5lY2Vzc2FyeSwgYWxsb3dpbmcgaXQgdG8gY29ycmVjdGx5IGhhbmRsZSBzY3JpcHRzCi0gIHdpdGhvdXQgc3VmZml4ZXMgYW5kIHN1Ym1vZHVsZXMgdGhhdCB1c2UgZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0cyBvcgotICBvdGhlcndpc2UgcmVseSBvbiBwYXJlbnQgbW9kdWxlcyBiZWluZyBjb3JyZWN0bHkgaW1wb3J0ZWQgcHJpb3IgdG8KLSAgZXhlY3V0aW9uLgotCi0tIElzc3VlICMxOTkyMTogV2hlbiBQYXRoLm1rZGlyKCkgaXMgY2FsbGVkIHdpdGggcGFyZW50cz1UcnVlLCBhbnkgbWlzc2luZwotICBwYXJlbnQgaXMgY3JlYXRlZCB3aXRoIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zLCBpZ25vcmluZyB0aGUgbW9kZSBhcmd1bWVudAotICAobWltaWNraW5nIHRoZSBQT1NJWCAibWtkaXIgLXAiIGNvbW1hbmQpLgotCi0tIElzc3VlICMxOTg4NzogSW1wcm92ZSB0aGUgUGF0aC5yZXNvbHZlKCkgYWxnb3JpdGhtIHRvIHN1cHBvcnQgY2VydGFpbgotICBzeW1saW5rIGNoYWlucy4KLQotLSBJc3N1ZSAjMTk5MTI6IEZpeGVkIG51bWVyb3VzIGJ1Z3MgaW4gbnRwYXRoLnNwbGl0dW5jKCkuCi0KLS0gSXNzdWUgIzE5OTExOiBudHBhdGguc3BsaXRkcml2ZSgpIG5vdyBjb3JyZWN0bHkgcHJvY2Vzc2VzIHRoZSAnxLAnIGNoYXJhY3RlcgotICAoVSswMTMwLCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFKS4KLQotLSBJc3N1ZSAjMTk1MzI6IHB5dGhvbiAtbSBjb21waWxlYWxsIHdpdGggbm8gZmlsZW5hbWUvZGlyZWN0b3J5IGFyZ3VtZW50cyBub3cKLSAgcmVzcGVjdHMgdGhlIC1mIGFuZCAtcSBmbGFncyBpbnN0ZWFkIG9mIGlnbm9yaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzE5NjIzOiBGaXhlZCB3cml0aW5nIHRvIHVuc2Vla2FibGUgZmlsZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgotCi0tIElzc3VlICMxOTk0NjogbXVsdGlwcm9jZXNzaW5nLnNwYXduIG5vdyByYWlzZXMgSW1wb3J0RXJyb3Igd2hlbiB0aGUgbW9kdWxlIHRvCi0gIGJlIHVzZWQgYXMgdGhlIG1haW4gbW9kdWxlIGNhbm5vdCBiZSBpbXBvcnRlZC4KLQotLSBJc3N1ZSAjMTc5MTk6IHNlbGVjdC5wb2xsLnJlZ2lzdGVyKCkgYWdhaW4gd29ya3Mgd2l0aCBwb2xsLlBPTExOVkFMIG9uIEFJWC4KLSAgRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgZXZlbnRtYXNrIHBhcmFtZXRlci4KLQotLSBJc3N1ZSAjMTkwNjM6IGlmIGEgQ2hhcnNldCdzIGJvZHlfZW5jb2Rpbmcgd2FzIHNldCB0byBOb25lLCB0aGUgZW1haWwKLSAgcGFja2FnZSB3b3VsZCBnZW5lcmF0ZSBhIG1lc3NhZ2UgY2xhaW1pbmcgdGhlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcKLSAgd2FzIDdiaXQsIGFuZCBwcm9kdWNlIGdhcmJhZ2Ugb3V0cHV0IGZvciB0aGUgY29udGVudC4gIFRoaXMgbm93IHdvcmtzLgotICBBIGNvdXBsZSBvZiBvdGhlciBzZXRfcGF5bG9hZCBtaXNoYW5kbGluZ3Mgb2Ygbm9uLUFTQ0lJIGFyZSBhbHNvIGZpeGVkLgotICBJbiBhZGRpdGlvbiwgY2FsbGluZyBzZXRfcGF5bG9hZCB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IHdpdGhvdXQKLSAgc3BlY2lmeWluZyBhIGNoYXJzZXQgbm93IHJhaXNlcyBhbiBlcnJvciAodGhpcyBpcyBhIG5ldyBlcnJvciBpbiAzLjQpLgotCi0tIElzc3VlICMxNTQ3NTogQWRkIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb25zIGZvciBpdGVydG9vbHMgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTk5NDQ6IEZpeCBpbXBvcnRsaWIuZmluZF9zcGVjKCkgc28gaXQgaW1wb3J0cyBwYXJlbnRzIGFzIG5lZWRlZAotICBhbmQgbW92ZSB0aGUgZnVuY3Rpb24gdG8gaW1wb3J0bGliLnV0aWwuCi0KLS0gSXNzdWUgIzE5ODgwOiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB1bml0dGVzdC5UZXN0Q2FzZS4gRXhwbGljaXRseSBicmVhawotICByZWZlcmVuY2UgY3ljbGVzIGJldHdlZW4gZnJhbWVzIGFuZCB0aGUgX091dGNvbWUgaW5zdGFuY2UuCi0KLS0gSXNzdWUgIzE3NDI5OiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSBub3cgZGVjb2RlcyBmaWxlcyBmcm9tIHRoZSBVVEYtOAotICBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwgaW5zdGVhZCBvZiBkZWNvZGluZyBmcm9tIHRoZQotICBsb2NhbGUgZW5jb2RpbmcgaW4gc3RyaWN0IG1vZGUuIEl0IGZpeGVzIHRoZSBmdW5jdGlvbiBvbiBGZWRvcmEgMTkgd2hpY2ggaXMKLSAgcHJvYmFibHkgdGhlIGZpcnN0IG1ham9yIGRpc3RyaWJ1dGlvbiByZWxlYXNlIHdpdGggYSBub24tQVNDSUkgbmFtZS4gUGF0Y2gKLSAgd3JpdHRlbiBieSBUb3NoaW8gS3VyYXRvbWkuCi0KLS0gSXNzdWUgIzE5MzQzOiBFeHBvc2UgRnJlZUJTRC1zcGVjaWZpYyBBUElzIGluIHJlc291cmNlIG1vZHVsZS4gIE9yaWdpbmFsCi0gIHBhdGNoIGJ5IEtvb2JzLgotCi0tIElzc3VlICMxOTkyOTogQ2FsbCBvcy5yZWFkIHdpdGggMzI3Njggd2l0aGluIHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUKLSAgcmF0aGVyIHRoYW4gNDA5NiBmb3IgZWZmaWNpZW5jeS4gIEEgbWljcm9iZW5jaG1hcmsgc2hvd3MgTGludXggYW5kIE9TIFgKLSAgYm90aCB1c2luZyB+NTAlIGxlc3MgY3B1IHRpbWUgdGhpcyB3YXkuCi0KLS0gSXNzdWUgIzE5NTA2OiBVc2UgYSBtZW1vcnl2aWV3IHRvIGF2b2lkIGEgZGF0YSBjb3B5IHdoZW4gcGlwaW5nIGRhdGEKLSAgdG8gc3RkaW4gd2l0aGluIHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUuICA1LTEwJSBsZXNzIGNwdSB1c2FnZS4KLQotLSBJc3N1ZSAjMTk4NzY6IHNlbGVjdG9ycyB1bnJlZ2lzdGVyKCkgbm8gbG9uZ2VyIHJhaXNlcyBWYWx1ZUVycm9yIG9yIE9TRXJyb3IKLSAgaWYgdGhlIEZEIGlzIGNsb3NlZCAoYXMgbG9uZyBhcyBpdCB3YXMgcmVnaXN0ZXJlZCkuCi0KLS0gSXNzdWUgIzE5OTA4OiBwYXRobGliIG5vdyBqb2lucyByZWxhdGl2ZSBXaW5kb3dzIHBhdGhzIGNvcnJlY3RseSB3aGVuIGEgZHJpdmUKLSAgaXMgcHJlc2VudC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgotCi0tIElzc3VlICMxOTI5NjogU2lsZW5jZSBjb21waWxlciB3YXJuaW5nIGluIGRibV9vcGVuCi0KLS0gSXNzdWUgIzY3ODQ6IFN0cmluZ3MgZnJvbSBQeXRob24gMiBjYW4gbm93IGJlIHVucGlja2xlZCBhcyBieXRlcwotICBvYmplY3RzIGJ5IHNldHRpbmcgdGhlIGVuY29kaW5nIGFyZ3VtZW50IG9mIFVucGlja2xlciB0byBiZSAnYnl0ZXMnLgotICBJbml0aWFsIHBhdGNoIGJ5IE1lcmxpam4gdmFuIERlZW4uCi0KLS0gSXNzdWUgIzE5ODM5OiBGaXggcmVncmVzc2lvbiBpbiBiejIgbW9kdWxlJ3MgaGFuZGxpbmcgb2Ygbm9uLWJ6aXAyIGRhdGEgYXQKLSAgRU9GLCBhbmQgYW5hbG9nb3VzIGJ1ZyBpbiBsem1hIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTk4ODE6IEZpeCBwaWNrbGluZyBidWcgd2hlcmUgY3BpY2tsZSB3b3VsZCBlbWl0IGJhZCBwaWNrbGUgZGF0YSBmb3IKLSAgbGFyZ2UgYnl0ZXMgc3RyaW5nIChpLmUuLCB3aXRoIHNpemUgZ3JlYXRlciB0aGFuIDIqKjMyLTEpLgotCi0tIElzc3VlICMxOTEzODogZG9jdGVzdCdzIElHTk9SRV9FWENFUFRJT05fREVUQUlMIG5vdyBhbGxvd3MgYSBtYXRjaCB3aGVuCi0gIG5vIGV4Y2VwdGlvbiBkZXRhaWwgZXhpc3RzIChubyBjb2xvbiBmb2xsb3dpbmcgdGhlIGV4Y2VwdGlvbidzIG5hbWUsIG9yCi0gIGEgY29sb24gZG9lcyBmb2xsb3cgYnV0IG5vIHRleHQgZm9sbG93cyB0aGUgY29sb24pLgotCi0tIElzc3VlICMxOTkyNzogQWRkIF9fZXFfXyB0byBwYXRoLWJhc2VkIGxvYWRlcnMgaW4gaW1wb3J0bGliLgotCi0tIElzc3VlICMxOTgyNzogT24gVU5JWCwgc2V0YmxvY2tpbmcoKSBhbmQgc2V0dGltZW91dCgpIG1ldGhvZHMgb2YKLSAgc29ja2V0LnNvY2tldCBjYW4gbm93IGF2b2lkIGEgc2Vjb25kIHN5c2NhbGwgaWYgdGhlIGlvY3RsKCkgZnVuY3Rpb24gY2FuIGJlCi0gIHVzZWQsIG9yIGlmIHRoZSBub24tYmxvY2tpbmcgZmxhZyBvZiB0aGUgc29ja2V0IGlzIHVuY2hhbmdlZC4KLQotLSBJc3N1ZSAjMTk3ODU6IHNtdHBsaWIgbm93IHN1cHBvcnRzIFNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIHNlcnZlciBuYW1lCi0gIGluZGljYXRpb24gZm9yIFRMUy9TU0wgY29ubmVjdGlvbnMuCi0KLS0gSXNzdWUgIzE5Nzg0OiBwb3BsaWIgbm93IHN1cHBvcnRzIFNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIHNlcnZlciBuYW1lCi0gIGluZGljYXRpb24gZm9yIFRMUy9TU0wgY29ubmVjdGlvbnMuCi0KLS0gSXNzdWUgIzE5NzgzOiBubnRwbGliIG5vdyBzdXBwb3J0cyBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lIGFuZCBzZXJ2ZXIgbmFtZQotICBpbmRpY2F0aW9uIGZvciBUTFMvU1NMIGNvbm5lY3Rpb25zLgotCi0tIElzc3VlICMxOTc4MjogaW1hcGxpYiBub3cgc3VwcG9ydHMgU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgc2VydmVyIG5hbWUKLSAgaW5kaWNhdGlvbiBmb3IgVExTL1NTTCBjb25uZWN0aW9ucy4KLQotLSBJc3N1ZSAjMjAxMjM6IEZpeCBweWRvYy5zeW5vcHNpcygpIGZvciAiYmluYXJ5IiBtb2R1bGVzLgotCi0tIElzc3VlICMxOTgzNDogU3VwcG9ydCB1bnBpY2tsaW5nIG9mIGV4Y2VwdGlvbnMgcGlja2xlZCBieSBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTk3ODE6IGZ0cGxpYiBub3cgc3VwcG9ydHMgU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgc2VydmVyIG5hbWUKLSAgaW5kaWNhdGlvbiBmb3IgVExTL1NTTCBjb25uZWN0aW9ucy4KLQotLSBJc3N1ZSAjMTk1MDk6IEFkZCBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lIHRvIG1hdGNoIHRoZSBwZWVyJ3MgY2VydGlmaWNhdGUKLSAgd2l0aCBzZXJ2ZXJfaG9zdG5hbWUgb24gaGFuZHNoYWtlLgotCi0tIElzc3VlICMxNTc5ODogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbigpIHRvIG5vIGxvbmdlciBmYWlsIGlmIGZpbGUKLSAgZGVzY3JpcHRvciAwLCAxIG9yIDIgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxNzg5NzogT3B0aW1pemVkIHVucGlja2xlIHByZWZldGNoaW5nLgotCi0tIElzc3VlICMzNjkzOiBNYWtlIHRoZSBlcnJvciBtZXNzYWdlIG1vcmUgaGVscGZ1bCB3aGVuIHRoZSBhcnJheS5hcnJheSgpCi0gIGNvbnN0cnVjdG9yIGlzIGdpdmVuIGEgc3RyLiBNb3ZlIHRoZSBhcnJheSBtb2R1bGUgdHlwZWNvZGUgZG9jdW1lbnRhdGlvbiB0bwotICB0aGUgZG9jc3RyaW5nIG9mIHRoZSBjb25zdHJ1Y3Rvci4KLQotLSBJc3N1ZSAjMTkwODg6IEZpeGVkIGluY29ycmVjdCBjYWNoaW5nIG9mIHRoZSBjb3B5cmVnIG1vZHVsZSBpbgotICBvYmplY3QuX19yZWR1Y2VfXygpIGFuZCBvYmplY3QuX19yZWR1Y2VfZXhfXygpLgotCi0tIElzc3VlICMxOTY5ODogUmVtb3ZlZCBleGVjX21vZHVsZSgpIG1ldGhvZHMgZnJvbQotICBpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciBhbmQgRXh0ZW5zaW9uRmlsZUxvYWRlci4KLQotLSBJc3N1ZSAjMTg4NjQ6IEFkZGVkIGEgc2V0dGVyIGZvciBNb2R1bGVTcGVjLmhhc19sb2NhdGlvbi4KLQotLSBGaXhlZCBfcGlja2xlLlVucGlja2xlciB0byBub3QgZmFpbCB3aGVuIGxvYWRpbmcgZW1wdHkgc3RyaW5ncyBhcwotICBwZXJzaXN0ZW50IElEcy4KLQotLSBJc3N1ZSAjMTE0ODA6IEZpeGVkIGNvcHkuY29weSB0byB3b3JrIHdpdGggY2xhc3NlcyB3aXRoIGN1c3RvbSBtZXRhY2xhc3Nlcy4KLSAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICM2NDc3OiBBZGRlZCBzdXBwb3J0IGZvciBwaWNrbGluZyB0aGUgdHlwZXMgb2YgYnVpbHQtaW4gc2luZ2xldG9ucwotICAoaS5lLiwgRWxsaXBzaXMsIE5vdEltcGxlbWVudGVkLCBOb25lKS4KLQotLSBJc3N1ZSAjMTk3MTM6IEFkZCByZW1haW5pbmcgUEVQIDQ1MS1yZWxhdGVkIGRlcHJlY2F0aW9ucyBhbmQgbW92ZSBhd2F5Ci0gIGZyb20gdXNpbmcgZmluZF9tb2R1bGUvZmluZF9sb2Flci9sb2FkX21vZHVsZS4KLQotLSBJc3N1ZSAjMTk3MDg6IFVwZGF0ZSBwa2d1dGlsIHRvIHVzZSB0aGUgbmV3IGltcG9ydGVyIEFQSXMuCi0KLS0gSXNzdWUgIzE5NzAzOiBVcGRhdGUgcHlkb2MgdG8gdXNlIHRoZSBuZXcgaW1wb3J0ZXIgQVBJcy4KLQotLSBJc3N1ZSAjMTk4NTE6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiByZWxvYWRpbmcgc3ViLW1vZHVsZXMuCi0KLS0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKSBzZXRzIE9QX05PX0NPTVBSRVNTSU9OIHRvIHByZXZlbnQgQ1JJTUUuCi0KLS0gSXNzdWUgIzE5ODAyOiBBZGQgc29ja2V0LlNPX1BSSU9SSVRZLgotCi0tIElzc3VlICMxMTUwODogRml4ZWQgdXVpZC5nZXRub2RlKCkgYW5kIHV1aWQudXVpZDEoKSBvbiBlbnZpcm9ubWVudCB3aXRoCi0gIHZpcnR1YWwgaW50ZXJmYWNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgS2VudCBGcmF6aWVyLgotCi0tIElzc3VlICMxMTQ4OTogSlNPTiBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjMTk1NDU6IEF2b2lkIGNoYWluZWQgZXhjZXB0aW9ucyB3aGlsZSBwYXNzaW5nIHN0cmF5ICUgdG8KLSAgdGltZS5zdHJwdGltZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjAwNTg6IHN5cy5zdGRpbi5yZWFkbGluZSgpIGluIElETEUgbm93IGFsd2F5cyByZXR1cm5zIG9ubHkgb25lIGxpbmUuCi0KLS0gSXNzdWUgIzE5NDgxOiBwcmludCgpIG9mIHN0cmluZyBzdWJjbGFzcyBpbnN0YW5jZSBpbiBJRExFIG5vIGxvbmdlciBoYW5ncy4KLQotLSBJc3N1ZSAjMTgyNzA6IFByZXZlbnQgcG9zc2libGUgSURMRSBBdHRyaWJ1dGVFcnJvciBvbiBPUyBYIHdoZW4gbm8gaW5pdGlhbAotICBzaGVsbCB3aW5kb3cgaXMgcHJlc2VudC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzIwMDU1OiBGaXggdGVzdF9zaHV0aWwgdW5kZXIgV2luZG93cyB3aXRoIHN5bWxpbmsgcHJpdmlsZWdlcyBoZWxkLgotICBQYXRjaCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzIwMDcwOiBEb24ndCBydW4gdGVzdF91cmxsaWIybmV0IHdoZW4gbmV0d29yayByZXNvdXJjZXMgYXJlIG5vdAotICBlbmFibGVkLgotCi0tIElzc3VlICMxOTkzODogUmUtZW5hYmxlZCB0ZXN0X2J1Z18xMzMzOTgyIGluIHRlc3RfZGlzLCB3aGljaCBoYWQgYmVlbgotICBkaXNhYmxlZCBzaW5jZSAzLjAgZHVlIHRvIHRoZSBjaGFuZ2VzIGluIGxpc3Rjb21wIGhhbmRsaW5nLgotCi0tIElzc3VlICMxOTMyMDogdGVzdF90Y2wgbm8gbG9uZ2VyIGZhaWxzIHdoZW4gd2FudG9iamVjdHMgaXMgZmFsc2UuCi0KLS0gSXNzdWUgIzE5OTE5OiBGaXggZmxha3kgU1NMIHRlc3QuIGNvbm5lY3RfZXgoKSBzb21ldGltZXMgcmV0dXJucwotICBFV09VTERCTE9DSyBvbiBXaW5kb3dzIG9yIFZNcyBob3N0ZWQgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTk5MTI6IEFkZGVkIHRlc3RzIGZvciBudHBhdGguc3BsaXR1bmMoKS4KLQotLSBJc3N1ZSAjMTk4Mjg6IEZpeGVkIHRlc3Rfc2l0ZSB3aGVuIHRoZSB3aG9sZSBzdWl0ZSBpcyBydW4gd2l0aCAtUy4KLQotLSBJc3N1ZSAjMTk5Mjg6IEltcGxlbWVudGVkIGEgdGVzdCBmb3IgcmVwcigpIG9mIGNlbGwgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTk1MzU6IEZpeGVkIHRlc3RfZG9jeG1scnBjLCB0ZXN0X2Z1bmN0b29scywgdGVzdF9pbnNwZWN0LCBhbmQKLSAgdGVzdF9zdGF0aXN0aWNzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTy4KLQotLSBJc3N1ZSAjMTk5MjY6IFJlbW92ZWQgdW5uZWVkZWQgdGVzdF9tYWluIGZyb20gdGVzdF9hYnN0cmFjdF9udW1iZXJzLgotICBQYXRjaCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzE5NTcyOiBNb3JlIHNraXBwZWQgdGVzdHMgZXhwbGljaXRseSBtYXJrZWQgYXMgc2tpcHBlZC4KLQotLSBJc3N1ZSAjMTk1OTUsICMxOTk4NzogUmUtZW5hYmxlZCBhIGxvbmctZGlzYWJsZWQgdGVzdCBpbiB0ZXN0X3dpbnNvdW5kLgotCi0tIElzc3VlICMxOTU4ODogRml4ZWQgdGVzdHMgaW4gdGVzdF9yYW5kb20gdGhhdCB3ZXJlIHNpbGVudGx5IHNraXBwZWQgbW9zdAotICBvZiB0aGUgdGltZS4gIFBhdGNoIGJ5IEp1bGlhbiBHaW5kaS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE5NzI4OiBFbmFibGUgcGlwIGluc3RhbGxhdGlvbiBieSBkZWZhdWx0IG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE2MTM2OiBSZW1vdmUgVk1TIHN1cHBvcnQKLQotLSBJc3N1ZSAjMTgyMTU6IEFkZCBzY3JpcHQgVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkgdG8gY29tcGlsZSBhbmQKLSAgcnVuIFB5dGhvbidzIHVuaXQgdGVzdHMgd2l0aCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBPcGVuU1NMLgotCi0tIElzc3VlICMxOTkyMjogZGVmaW5lIF9JTkNMVURFX19TVERDX0ExX1NPVVJDRSBpbiBIUC1VWCB0byBpbmNsdWRlIG1ic3RhdGVfdAotICBmb3IgbWJydG93YygpLgotCi0tIElzc3VlICMxOTc4ODoga2lsbF9weXRob24oX2QpLmV4ZSBpcyBub3cgcnVuIGFzIGEgUHJlQnVpbGRFdmVudCBvbiB0aGUKLSAgcHl0aG9uY29yZSBzdWItcHJvamVjdC4gIFRoaXMgc2hvdWxkIHByZXZlbnQgYnVpbGQgZXJyb3JzIGR1ZSBhIHByZXZpb3VzCi0gIGJ1aWxkJ3MgcHl0aG9uKF9kKS5leGUgc3RpbGwgcnVubmluZy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMDI2NTogVXBkYXRlZCBzb21lIHBhcnRzIG9mIHRoZSBVc2luZyBXaW5kb3dzIGRvY3VtZW50LgotCi0tIElzc3VlICMyMDI2NjogVXBkYXRlZCBzb21lIHBhcnRzIG9mIHRoZSBXaW5kb3dzIEZBUS4KLQotLSBJc3N1ZSAjMjAyNTU6IFVwZGF0ZWQgdGhlIGFib3V0IGFuZCBidWdzIHBhZ2VzLgotCi0tIElzc3VlICMyMDI1MzogRml4ZWQgYSB0eXBvIGluIHRoZSBpcGFkZHJlc3MgZG9jcyB0aGF0IGFkdmVydGlzZWQgYW4KLSAgaWxsZWdhbCBhdHRyaWJ1dGUgbmFtZS4gIEZvdW5kIGJ5IElOQURBIE5hb2tpLgotCi0tIElzc3VlICMxODg0MDogSW50cm9kdWNlIHRoZSBqc29uIG1vZHVsZSBpbiB0aGUgdHV0b3JpYWwsIGFuZCBkZS1lbXBoYXNpemUKLSAgdGhlIHBpY2tsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE5ODQ1OiBVcGRhdGVkIHRoZSBDb21waWxpbmcgUHl0aG9uIG9uIFdpbmRvd3Mgc2VjdGlvbi4KLQotLSBJc3N1ZSAjMTk3OTU6IEltcHJvdmVkIG1hcmt1cCBvZiBUcnVlL0ZhbHNlIGNvbnN0YW50cy4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE5NjU5OiBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBBcmd1bWVudCBDbGluaWMuCi0KLS0gSXNzdWUgIzE5OTc2OiBBcmd1bWVudCBDbGluaWMgTUVUSF9OT0FSR1MgZnVuY3Rpb25zIG5vdyBhbHdheXMKLSAgdGFrZSB0d28gcGFyYW1ldGVycy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCBCZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxMy0xMS0yNAotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBVc2UgdGhlIHJlcHIgb2YgYSBtb2R1bGUgbmFtZSBpbiBtb3JlIHBsYWNlcyBpbiBpbXBvcnQsIGVzcGVjaWFsbHkKLSAgZXhjZXB0aW9ucy4KLQotLSBJc3N1ZSAjMTk2MTk6IHN0ci5lbmNvZGUsIGJ5dGVzLmRlY29kZSBhbmQgYnl0ZWFycmF5LmRlY29kZSBub3cgdXNlIGFuCi0gIGludGVybmFsIEFQSSB0byB0aHJvdyBMb29rdXBFcnJvciBmb3Iga25vd24gbm9uLXRleHQgZW5jb2RpbmdzLCByYXRoZXIKLSAgdGhhbiBhdHRlbXB0aW5nIHRoZSBlbmNvZGluZyBvciBkZWNvZGluZyBvcGVyYXRpb24gYW5kIHRoZW4gdGhyb3dpbmcgYQotICBUeXBlRXJyb3IgZm9yIGFuIHVuZXhwZWN0ZWQgb3V0cHV0IHR5cGUuIChUaGUgbGF0dGVyIG1lY2hhbmlzbSByZW1haW5zCi0gIGluIHBsYWNlIGZvciB0aGlyZCBwYXJ0eSBub24tdGV4dCBlbmNvZGluZ3MpCi0KLS0gSXNzdWUgIzE5MTgzOiBJbXBsZW1lbnQgUEVQIDQ1NiAnc2VjdXJlIGFuZCBpbnRlcmNoYW5nZWFibGUgaGFzaCBhbGdvcml0aG0nLgotICBQeXRob24gbm93IHVzZXMgU2lwSGFzaDI0IG9uIGFsbCBtYWpvciBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEyODkyOiBUaGUgdXRmLTE2KiBhbmQgdXRmLTMyKiBlbmNvZGVycyBubyBsb25nZXIgYWxsb3cgc3Vycm9nYXRlIGNvZGUKLSAgcG9pbnRzIChVK0Q4MDAtVStERkZGKSB0byBiZSBlbmNvZGVkLiAgVGhlIHV0Zi0zMiogZGVjb2RlcnMgbm8gbG9uZ2VyIGRlY29kZQotICBieXRlIHNlcXVlbmNlcyB0aGF0IGNvcnJlc3BvbmQgdG8gc3Vycm9nYXRlIGNvZGUgcG9pbnRzLiAgVGhlIHN1cnJvZ2F0ZXBhc3MKLSAgZXJyb3IgaGFuZGxlciBub3cgd29ya3Mgd2l0aCB0aGUgdXRmLTE2KiBhbmQgdXRmLTMyKiBjb2RlY3MuICBCYXNlZCBvbgotICBwYXRjaGVzIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBLYW5nLUhhbyAoS2VubnkpIEx1LgotCi0tIElzc3VlICMxNzgwNjogQWRkZWQga2V5d29yZC1hcmd1bWVudCBzdXBwb3J0IGZvciAidGFic2l6ZSIgdG8KLSAgc3RyL2J5dGVzLmV4cGFuZHRhYnMoKS4KLQotLSBJc3N1ZSAjMTc4Mjg6IE91dHB1dCB0eXBlIGVycm9ycyBpbiBzdHIuZW5jb2RlKCksIGJ5dGVzLmRlY29kZSgpIGFuZAotICBieXRlYXJyYXkuZGVjb2RlKCkgbm93IGRpcmVjdCB1c2VycyB0byBjb2RlY3MuZW5jb2RlKCkgb3IgY29kZWNzLmRlY29kZSgpCi0gIGFzIGFwcHJvcHJpYXRlLgotCi0tIElzc3VlICMxNzgyODogVGhlIGludGVycHJldGVyIG5vdyBhdHRlbXB0cyB0byBjaGFpbiBlcnJvcnMgdGhhdCBvY2N1ciBpbgotICBjb2RlYyBwcm9jZXNzaW5nIHdpdGggYSByZXBsYWNlbWVudCBleGNlcHRpb24gb2YgdGhlIHNhbWUgdHlwZSB0aGF0Ci0gIGluY2x1ZGVzIHRoZSBjb2RlYyBuYW1lIGluIHRoZSBlcnJvciBtZXNzYWdlLiBJdCBlbnN1cmVzIGl0IG9ubHkgZG9lcyB0aGlzCi0gIHdoZW4gdGhlIGNyZWF0aW9uIG9mIHRoZSByZXBsYWNlbWVudCBleGNlcHRpb24gd29uJ3QgbG9zZSBhbnkgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzE5NDY2OiBDbGVhciB0aGUgZnJhbWVzIG9mIGRhZW1vbiB0aHJlYWRzIGVhcmxpZXIgZHVyaW5nIHRoZQotICBQeXRob24gc2h1dGRvd24gdG8gY2FsbCBvYmplY3QgZGVzdHJ1Y3RvcnMuIFNvICJ1bmNsb3NlZCBmaWxlIiByZXNvdXJjZQotICB3YXJuaW5ncyBhcmUgbm93IGNvcnJlY3RseSBlbWl0dGVkIGZvciBkYWVtb24gdGhyZWFkcy4KLQotLSBJc3N1ZSAjMTk1MTQ6IERlZHVwbGljYXRlIHNvbWUgX1B5X0lERU5USUZJRVIgZGVjbGFyYXRpb25zLgotICBQYXRjaCBieSBBbmRyZWkgRG9yaWFuIER1bWEuCi0KLS0gSXNzdWUgIzE3OTM2OiBGaXggTyhuKioyKSBiZWhhdmlvdXIgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgbWFueSBzdWJjbGFzc2VzCi0gIG9mIGEgZ2l2ZW4gdHlwZS4KLQotLSBJc3N1ZSAjMTk0Mjg6IHppcGltcG9ydCBub3cgaGFuZGxlcyBlcnJvcnMgd2hlbiByZWFkaW5nIHRydW5jYXRlZCBvciBpbnZhbGlkCi0gIFpJUCBhcmNoaXZlLgotCi0tIElzc3VlICMxODQwODogQWRkIGEgbmV3IFB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yKCkgZnVuY3Rpb24gdG8gaGFuZGxlCi0gIGV4Y2VwdGlvbnMgd2hlbiBtZXJnaW5nIGZhc3QgbG9jYWxzIGludG8gZl9sb2NhbHMgb2YgYSBmcmFtZS4KLSAgUHlFdmFsX0dldExvY2FscygpIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBmYWlsdXJlLgotCi0tIElzc3VlICMxOTM2OTogT3B0aW1pemVkIHRoZSB1c2FnZSBvZiBfX2xlbmd0aF9oaW50X18oKS4KLQotLSBJc3N1ZSAjMTg2MDM6IEVuc3VyZSB0aGF0IFB5T1NfbXlzdHJpY21wIGFuZCBQeU9TX215c3RybmljbXAgYXJlIGluIHRoZQotICBQeXRob24gZXhlY3V0YWJsZSBhbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KLQotLSBJc3N1ZSAjMTkzMDY6IEFkZCBleHRyYSBoaW50cyB0byB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSdzIHN0YWNrCi0gIGR1bXBzIHRoYXQgdGhlc2UgYXJlICJ1cHNpZGUgZG93biIuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzE1ODogZG9jdGVzdCBjYW4gbm93IGZpbmQgZG9jdGVzdHMgaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzCi0gIHdyaXR0ZW4gaW4gQy4KLQotLSBJc3N1ZSAjMTM0Nzc6IEFkZGVkIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgotICBPcmlnaW5hbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgotCi0tIElzc3VlICMxOTY3NDogaW5zcGVjdC5zaWduYXR1cmUoKSBub3cgcHJvZHVjZXMgYSBjb3JyZWN0IHNpZ25hdHVyZQotICBmb3Igc29tZSBidWlsdGlucy4KLQotLSBJc3N1ZSAjMTk3MjI6IEFkZGVkIG9wY29kZS5zdGFja19lZmZlY3QoKSwgd2hpY2gKLSAgY29tcHV0ZXMgdGhlIHN0YWNrIGVmZmVjdCBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCi0KLS0gSXNzdWUgIzE5NzM1OiBJbXBsZW1lbnQgcHJpdmF0ZSBmdW5jdGlvbiBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpIHRvCi0gIGNyZWF0ZSBTU0xDb250ZXh0IG9iamVjdHMgaW4gUHl0aG9uJ3Mgc3RkbGliIG1vZHVsZS4gSXQgcHJvdmlkZXMgYSBzaW5nbGUKLSAgY29uZmlndXJhdGlvbiBwb2ludCBhbmQgbWFrZXMgdXNlIG9mIFNTTENvbnRleHQubG9hZF9kZWZhdWx0X2NlcnRzKCkuCi0KLS0gSXNzdWUgIzE2MjAzOiBBZGQgcmUuZnVsbG1hdGNoKCkgZnVuY3Rpb24gYW5kIHJlZ2V4LmZ1bGxtYXRjaCgpIG1ldGhvZCwKLSAgd2hpY2ggYW5jaG9yIHRoZSBwYXR0ZXJuIGF0IGJvdGggZW5kcyBvZiB0aGUgc3RyaW5nIHRvIG1hdGNoLgotICBPcmlnaW5hbCBwYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCi0KLS0gSXNzdWUgIzEzNTkyOiBJbXByb3ZlZCB0aGUgcmVwciBmb3IgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gb2JqZWN0cy4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgSHVnbyBMb3BlcyBUYXZhcmVzLgotCi0tIElzc3VlICMxOTY0MTogQWRkZWQgdGhlIGF1ZGlvb3AuYnl0ZXN3YXAoKSBmdW5jdGlvbiB0byBjb252ZXJ0IGJpZy1lbmRpYW4KLSAgc2FtcGxlcyB0byBsaXR0bGUtZW5kaWFuIGFuZCB2aWNlIHZlcnNhLgotCi0tIElzc3VlICMxNTIwNDogRGVwcmVjYXRlZCB0aGUgJ1UnIG1vZGUgaW4gZmlsZS1saWtlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE3ODEwOiBJbXBsZW1lbnQgUEVQIDMxNTQsIHBpY2tsZSBwcm90b2NvbCA0LgotCi0tIElzc3VlICMxOTY2ODogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGNwMTEyNSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTk2ODk6IEFkZCBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpIGZhY3RvcnkgZnVuY3Rpb24uIEl0IGNyZWF0ZXMKLSAgYSBuZXcgU1NMQ29udGV4dCBvYmplY3Qgd2l0aCBzZWN1cmUgZGVmYXVsdCBzZXR0aW5ncy4KLQotLSBJc3N1ZSAjMTk3Mjc6IG9zLnV0aW1lKC4uLiwgTm9uZSkgaXMgbm93IHBvdGVudGlhbGx5IG1vcmUgcHJlY2lzZQotICB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxNzIwMTogWklQNjQgZXh0ZW5zaW9ucyBub3cgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gIFBhdGNoIGJ5Ci0gIFdpbGxpYW0gTWFsbGFyZC4KLQotLSBJc3N1ZSAjMTkyOTI6IEFkZCBTU0xDb250ZXh0LmxvYWRfZGVmYXVsdF9jZXJ0cygpIHRvIGxvYWQgZGVmYXVsdCByb290IENBCi0gIGNlcnRpZmljYXRlcyBmcm9tIGRlZmF1bHQgc3RvcmVzIG9yIHN5c3RlbSBzdG9yZXMuIEJ5IGRlZmF1bHQgdGhlIG1ldGhvZAotICBsb2FkcyBDQSBjZXJ0cyBmb3IgYXV0aGVudGljYXRpb24gb2Ygc2VydmVyIGNlcnRzLgotCi0tIElzc3VlICMxOTY3MzogQWRkIHBhdGhsaWIgdG8gdGhlIHN0ZGxpYiBhcyBhIHByb3Zpc2lvbmFsIG1vZHVsZSAoUEVQIDQyOCkuCi0KLS0gSXNzdWUgIzE2NTk2OiBwZGIgaW4gYSBnZW5lcmF0b3Igbm93IHByb3Blcmx5IHNraXBzIG92ZXIgeWllbGQgYW5kCi0gIHlpZWxkIGZyb20gcmF0aGVyIHRoYW4gc3RlcHBpbmcgb3V0IG9mIHRoZSBnZW5lcmF0b3IgaW50byBpdHMKLSAgY2FsbGVyLiAgKFRoaXMgaXMgZXNzZW50aWFsIGZvciBzdGVwcGluZyB0aHJvdWdoIGFzeW5jaW8gY29yb3V0aW5lcy4pCi0KLS0gSXNzdWUgIzE3OTE2OiBBZGRlZCBkaXMuQnl0ZWNvZGUuZnJvbV90cmFjZWJhY2soKSBhbmQKLSAgZGlzLkJ5dGVjb2RlLmN1cnJlbnRfb2Zmc2V0IHRvIGVhc2lseSBkaXNwbGF5ICJjdXJyZW50IGluc3RydWN0aW9uIgotICBtYXJrZXJzIGluIHRoZSBuZXcgZGlzYXNzZW1ibHkgQVBJIChQYXRjaCBieSBDbGF1ZGl1IFBvcGEpLgotCi0tIElzc3VlICMxOTU1MjogdmVudiBub3cgc3VwcG9ydHMgYm9vdHN0cmFwcGluZyBwaXAgaW50byB2aXJ0dWFsIGVudmlyb25tZW50cwotCi0tIElzc3VlICMxNzEzNDogRmluYWxpemUgaW50ZXJmYWNlIHRvIFdpbmRvd3MnIGNlcnRpZmljYXRlIHN0b3JlLiBDZXJ0IGFuZAotICBDUkwgZW51bWVyYXRpb24gYXJlIG5vdyB0d28gZnVuY3Rpb25zLiBlbnVtX2NlcnRpZmljYXRlcygpIGFsc28gcmV0dXJucwotICBwdXJwb3NlIGZsYWdzIGFzIHNldCBvZiBPSURzLgotCi0tIElzc3VlICMxOTU1NTogUmVzdG9yZSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NPJyksIChhbmQgdGhlIGRpc3R1dGlscwotICBlcXVpdmFsZW50KSB3aXRoIGEgRGVwcmVjYXRpb25XYXJuaW5nIHBvaW50aW5nIHBlb3BsZSBhdCAkRVhUX1NVRkZJWC4KLQotLSBJc3N1ZSAjODgxMzogQWRkIFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzIHRvIGNoYW5nZSB0aGUgdmVyaWZpY2F0aW9uIGZsYWdzCi0gIG9mIHRoZSBjb250ZXh0IGluIG9yZGVyIHRvIGVuYWJsZSBjZXJ0aWZpY2F0aW9uIHJldm9jYXRpb24gbGlzdCAoQ1JMKQotICBjaGVja3Mgb3Igc3RyaWN0IFg1MDkgcnVsZXMuCi0KLS0gSXNzdWUgIzE4Mjk0OiBGaXggdGhlIHpsaWIgbW9kdWxlIHRvIG1ha2UgaXQgNjQtYml0IHNhZmUuCi0KLS0gSXNzdWUgIzE5NjgyOiBGaXggY29tcGF0aWJpbGl0eSBpc3N1ZSB3aXRoIG9sZCB2ZXJzaW9uIG9mIE9wZW5TU0wgdGhhdAotICB3YXMgaW50cm9kdWNlZCBieSBJc3N1ZSAjMTgzNzkuCi0KLS0gSXNzdWUgIzE0NDU1OiBwbGlzdGxpYiBub3cgc3VwcG9ydHMgYmluYXJ5IHBsaXN0cyBhbmQgaGFzIGFuIHVwZGF0ZWQgQVBJLgotCi0tIElzc3VlICMxOTYzMzogRml4ZWQgd3JpdGluZyBub3QgY29tcHJlc3NlZCAxNi0gYW5kIDMyLWJpdCB3YXZlIGZpbGVzIG9uCi0gIGJpZy1lbmRpYW4gcGxhdGZvcm1zLgotCi0tIElzc3VlICMxODM3OTogU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkgcmV0dXJucyBDQSBpc3N1ZXIgQUlBIGZpZWxkcywgT0NTUAotICBhbmQgQ1JMIGRpc3RyaWJ1dGlvbiBwb2ludHMuCi0KLS0gSXNzdWUgIzE4MTM4OiBJbXBsZW1lbnQgY2FkYXRhIGFyZ3VtZW50IG9mIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb24oKQotICB0byBsb2FkIENBIGNlcnRpZmljYXRlcyBhbmQgQ1JMIGZyb20gbWVtb3J5LiBJdCBzdXBwb3J0cyBQRU0gYW5kIERFUgotICBlbmNvZGVkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE4Nzc1OiBBZGQgbmFtZSBhbmQgYmxvY2tfc2l6ZSBhdHRyaWJ1dGUgdG8gSE1BQyBvYmplY3QuIFRoZXkgbm93Ci0gIHByb3ZpZGUgdGhlIHNhbWUgQVBJIGVsZW1lbnRzIGFzIG5vbi1rZXllZCBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNzI3NjogTUQ1IGFzIGRlZmF1bHQgZGlnZXN0bW9kIGZvciBITUFDIGlzIGRlcHJlY2F0ZWQuIFRoZSBITUFDCi0gIG1vZHVsZSBzdXBwb3J0cyBkaWdlc3Rtb2QgbmFtZXMsIGUuZy4gaG1hYy5ITUFDKCdzaGExJykuCi0KLS0gSXNzdWUgIzE5NDQ5OiBpbiBjc3YncyB3cml0ZXJvdywgaGFuZGxlIG5vbi1zdHJpbmcga2V5cyB3aGVuIGdlbmVyYXRpbmcgdGhlCi0gIGVycm9yIG1lc3NhZ2UgdGhhdCBjZXJ0YWluIGtleXMgYXJlIG5vdCBpbiB0aGUgJ2ZpZWxkbmFtZXMnIGxpc3QuCi0KLS0gSXNzdWUgIzEzNjMzOiBBZGRlZCBhIG5ldyBjb252ZXJ0X2NoYXJyZWZzIGtleXdvcmQgYXJnIHRvIEhUTUxQYXJzZXIgdGhhdCwKLSAgd2hlbiBUcnVlLCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIGFsbCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjMjkyNzogQWRkZWQgdGhlIHVuZXNjYXBlKCkgZnVuY3Rpb24gdG8gdGhlIGh0bWwgbW9kdWxlLgotCi0tIElzc3VlICM4NDAyOiBBZGRlZCB0aGUgZXNjYXBlKCkgZnVuY3Rpb24gdG8gdGhlIGdsb2IgbW9kdWxlLgotCi0tIElzc3VlICMxNzYxODogQWRkIEJhc2U4NSBhbmQgQXNjaWk4NSBlbmNvZGluZy9kZWNvZGluZyB0byB0aGUgYmFzZTY0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTk2MzQ6IHRpbWUuc3RyZnRpbWUoIiV5Iikgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3Igb24gQUlYIHdoZW4gZ2l2ZW4gYQotICB5ZWFyIGJlZm9yZSAxOTAwLgotCi0tIEZpeCB0ZXN0LnN1cHBvcnQuYmluZF9wb3J0KCkgdG8gbm90IGNhdXNlIGFuIGVycm9yIHdoZW4gUHl0aG9uIHdhcyBjb21waWxlZAotICBvbiBhIHN5c3RlbSB3aXRoIFNPX1JFVVNFUE9SVCBkZWZpbmVkIGluIHRoZSBoZWFkZXJzIGJ1dCBydW4gb24gYSBzeXN0ZW0KLSAgd2l0aCBhbiBPUyBrZXJuZWwgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgcmVhc29uYWJseSBuZXcgc29ja2V0IG9wdGlvbi4KLQotLSBGaXggY29tcGlsYXRpb24gZXJyb3IgdW5kZXIgZ2NjIG9mIHRoZSBjdHlwZXMgbW9kdWxlIGJ1bmRsZWQgbGliZmZpIGZvciBhcm0uCi0KLS0gSXNzdWUgIzE5NDQ4OiBBZGQgcHJpdmF0ZSBBUEkgdG8gU1NMIG1vZHVsZSB0byBsb29rdXAgQVNOLjEgb2JqZWN0cyBieSBPSUQsCi0gIE5JRCwgc2hvcnQgbmFtZSBhbmQgbG9uZyBuYW1lLgotCi0tIElzc3VlICMxOTI4MjogZGJtLm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCi0gIChJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYSkKLQotLSBJc3N1ZSAjODMxMTogQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBhbnkgYnl0ZXMtbGlrZSBvYmplY3RzIGluIHRoZSBhaWZjLAotICBzdW5hdSwgYW5kIHdhdmUgbW9kdWxlcy4KLQotLSBJc3N1ZSAjNTIwMjogQWRkZWQgc3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyBpbiB0aGUgd2F2ZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE5NTQ0IGFuZCBJc3N1ZSAjMTE4MDogUmVzdG9yZSBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZQotICB+Ly5weWRpc3R1dGlscy5jZmcgaW4gRGlzdHV0aWxzLCBhY2NpZGVudGFsbHkgcmVtb3ZlZCBpbiBiYWNrb3V0IG9mCi0gIGRpc3R1dGlsczIgY2hhbmdlcy4KLQotLSBJc3N1ZSAjMTk1MjM6IENsb3NlZCBGaWxlSGFuZGxlciBsZWFrIHdoaWNoIG9jY3VycmVkIHdoZW4gZGVsYXkgd2FzIHNldC4KLQotLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM2NTE2OiBSZXN0b3JlIHN1cHBvcnQgZm9yIC0tdXNlciBhbmQgLS1ncm91cAotICBwYXJhbWV0ZXJzIHRvIHNkaXN0IGNvbW1hbmQgYWNjaWRlbnRhbGx5IHJvbGxlZCBiYWNrIGFzIHBhcnQgb2YgdGhlCi0gIGRpc3R1dGlsczIgcm9sbGJhY2suCi0KLS0gSXNzdWUgIzEzNjc0OiBQcmV2ZW50ZWQgdGltZS5zdHJmdGltZSBmcm9tIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBnaXZlbgotICBhIHllYXIgYmVmb3JlIDE5MDAgYW5kIGEgZm9ybWF0IG9mICV5LgotCi0tIElzc3VlICMxOTQwNjogaW1wbGVtZW50YXRpb24gb2YgdGhlIGVuc3VyZXBpcCBtb2R1bGUgKHBhcnQgb2YgUEVQIDQ1MykuCi0gIFBhdGNoIGJ5IERvbmFsZCBTdHVmZnQgYW5kIE5pY2sgQ29naGxhbi4KLQotLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM2Mjg2OiBSZXN0b3JlIHVzZSBvZiB1cmxsaWIgb3ZlciBodHRwIGFsbG93aW5nIHVzZQotICBvZiBodHRwX3Byb3h5IGZvciBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQsIGEgZmVhdHVyZSBhY2NpZGVudGFsbHkgbG9zdAotICBpbiB0aGUgcm9sbGJhY2sgb2YgZGlzdHV0aWxzMi4KLQotLSBJc3N1ZSAjMTk1NDQgYW5kIElzc3VlICM3NDU3OiBSZXN0b3JlIHRoZSByZWFkX3BrZ19maWxlIG1ldGhvZCB0bwotICBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YSBhY2NpZGVudGFsbHkgcmVtb3ZlZCBpbiB0aGUgdW5kbyBvZgotICBkaXN0dXRpbHMyLgotCi0tIElzc3VlICMxNjY4NTogQWRkZWQgc3VwcG9ydCBmb3IgYW55IGJ5dGVzLWxpa2Ugb2JqZWN0cyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCi0gIFJlbW92ZWQgc3VwcG9ydCBmb3Igc3RyaW5ncy4KLQotLSBJc3N1ZSAjNzE3MTogQWRkIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgYGBpbmV0X250b3BgYCBhbmQgYGBpbmV0X3B0b25gYAotICB0byBzb2NrZXQgbW9kdWxlLiBQYXRjaCBieSBBdHN1byBJc2hpbW90by4KLQotLSBJc3N1ZSAjMTkyNjE6IEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgMjQtYml0IHNhbXBsZXMgaW4gdGhlIHN1bmF1IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA5Nzc5NzogQWRkZWQgQ1AyNzMgZW5jb2RpbmcsIHVzZWQgb24gSUJNIG1haW5mcmFtZXMgaW4KLSAgR2VybWFueSBhbmQgQXVzdHJpYS4gIE1hcHBpbmcgcHJvdmlkZWQgYnkgTWljaGFlbCBCaWVyZW5mZWxkLgotCi0tIElzc3VlICMxNTc1MDIwOiBGaXhlZCBzdXBwb3J0IG9mIDI0LWJpdCB3YXZlIGZpbGVzIG9uIGJpZy1lbmRpYW4gcGxhdGZvcm1zLgotCi0tIElzc3VlICMxOTM3ODogRml4ZWQgYSBudW1iZXIgb2YgY2FzZXMgaW4gdGhlIGRpcyBtb2R1bGUgd2hlcmUgdGhlIG5ldwotICAiZmlsZSIgcGFyYW1ldGVyIHdhcyBub3QgYmVpbmcgaG9ub3VyZWQgY29ycmVjdGx5Ci0KLS0gSXNzdWUgIzE5Mzc4OiBSZW1vdmVkIHRoZSAiZGlzLkJ5dGVjb2RlLnNob3dfaW5mbyIgbWV0aG9kCi0KLS0gSXNzdWUgIzE5Mzc4OiBSZW5hbWVkIHRoZSAiZGlzLkJ5dGVjb2RlLmRpc3BsYXlfY29kZSIgbWV0aG9kIHRvCi0gICJkaXMuQnl0ZWNvZGUuZGlzIiBhbmQgY29udmVydGVkIGl0IHRvIHJldHVybmluZyBhIHN0cmluZyByYXRoZXIgdGhhbgotICBwcmludGluZyBvdXRwdXQuCi0KLS0gSXNzdWUgIzE5Mzc4OiB0aGUgImxpbmVfb2Zmc2V0IiBwYXJhbWV0ZXIgaW4gdGhlIG5ldyAiZGlzLmdldF9pbnN0cnVjdGlvbnMiCi0gIEFQSSBoYXMgYmVlbiByZW5hbWVkIHRvICJmaXJzdF9saW5lIiAoYW5kIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCB1c2FnZQotICBjaGFuZ2VkIGFjY29yZGluZ2x5KS4gVGhpcyBzaG91bGQgcmVkdWNlIGNvbmZ1c2lvbiB3aXRoIHRoZSBtb3JlIGNvbW1vbiB1c2UKLSAgb2YgIm9mZnNldCIgaW4gdGhlIGRpcyBkb2NzIHRvIHJlZmVyIHRvIGJ5dGVjb2RlIG9mZnNldHMuCi0KLS0gSXNzdWUgIzE4Njc4OiBDb3JyZWN0ZWQgc3B3ZCBzdHJ1Y3QgbWVtYmVyIG5hbWVzIGluIHNwd2QgbW9kdWxlOgotICBzcF9uYW0tPnNwX25hbXAsIGFuZCBzcF9wd2QtPnNwX3B3ZHAuICBUaGUgb2xkIG5hbWVzIGFyZSBrZXB0IGFzIGV4dHJhCi0gIHN0cnVjdHNlcSBtZW1iZXJzLCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjNjE1NzogRml4ZWQgdGtpbnRlci5UZXh0LmRlYnVnKCkuICB0a2ludGVyLlRleHQuYmJveCgpIG5vdyByYWlzZXMKLSAgVHlwZUVycm9yIGluc3RlYWQgb2YgVGNsRXJyb3Igb24gd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IEd1aWxoZXJtZSBQb2xvLgotCi0tIElzc3VlICMxMDE5NzogUmV3b3JrIHN1YnByb2Nlc3MuZ2V0W3N0YXR1c11vdXRwdXQgdG8gdXNlIHN1YnByb2Nlc3MKLSAgZnVuY3Rpb25hbGl0eSBhbmQgdGh1cyB0byB3b3JrIG9uIFdpbmRvd3MuIFBhdGNoIGJ5IE5pY2sgQ29naGxhbgotCi0tIElzc3VlICM2MTYwOiBUaGUgYmJveCgpIG1ldGhvZCBvZiB0a2ludGVyLlNwaW5ib3ggbm93IHJldHVybnMgYSB0dXBsZSBvZgotICBpbnRlZ2VycyBpbnN0ZWFkIG9mIGEgc3RyaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCi0KLS0gSXNzdWUgIzE5NDAzOiBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZG91dCBpcyBub3cgcmVlbnRyYW50Ci0KLS0gSXNzdWUgIzE5Mjg2OiBEaXJlY3RvcmllcyBpbiBgYHBhY2thZ2VfZGF0YWBgIGFyZSBubyBsb25nZXIgYWRkZWQgdG8KLSAgdGhlIGZpbGVsaXN0LCBwcmV2ZW50aW5nIGZhaWx1cmUgb3V0bGluZWQgaW4gdGhlIHRpY2tldC4KLQotLSBJc3N1ZSAjMTk0ODA6IEhUTUxQYXJzZXIgbm93IGFjY2VwdHMgYWxsIHZhbGlkIHN0YXJ0LXRhZyBuYW1lcyBhcyBkZWZpbmVkCi0gIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZC4KLQotLSBJc3N1ZSAjMTUxMTQ6IFRoZSBodG1sLnBhcnNlciBtb2R1bGUgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIHRoZQotICBzdHJpY3QgYXJndW1lbnQgb2YgSFRNTFBhcnNlciBvciB0aGUgSFRNTFBhcnNlci5lcnJvciBtZXRob2QgYXJlIHVzZWQuCi0KLS0gSXNzdWUgIzE5NDEwOiBVbmRvIHRoZSBzcGVjaWFsLWNhc2luZyByZW1vdmFsIG9mICcnIGZvcgotICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuCi0KLS0gSXNzdWUgIzE5NDI0OiBGaXggdGhlIHdhcm5pbmdzIG1vZHVsZSB0byBhY2NlcHQgZmlsZW5hbWUgY29udGFpbmluZyBzdXJyb2dhdGUKLSAgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjMTk0MzU6IEZpeCBkaXJlY3RvcnkgdHJhdmVyc2FsIGF0dGFjayBvbiBDR0lIdHRwUmVxdWVzdEhhbmRsZXIuCi0KLS0gSXNzdWUgIzE5MjI3OiBSZW1vdmUgcHRocmVhZF9hdGZvcmsoKSBoYW5kbGVyLiBUaGUgaGFuZGxlciB3YXMgYWRkZWQgdG8KLSAgc29sdmUgIzE4NzQ3IGJ1dCBoYXMgY2F1c2VkIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTk0MjA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSBvZgotICBfaGFzaG9wZW5zc2wuYwotCi0tIElzc3VlICMxOTMyOTogT3B0aW1pemVkIGNvbXBpbGluZyBjaGFyc2V0cyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLgotCi0tIElzc3VlICMxOTIyNzogVHJ5IHRvIGZpeCBkZWFkbG9ja3MgY2F1c2VkIGJ5IHJlLXNlZWRpbmcgdGhlbiBPcGVuU1NMCi0gIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBvbiBmb3JrKCkuCi0KLS0gSXNzdWUgIzE2MDM3OiBIVFRQTWVzc2FnZS5yZWFkaGVhZGVycygpIHJhaXNlcyBhbiBIVFRQRXhjZXB0aW9uIHdoZW4gbW9yZSB0aGFuCi0gIDEwMCBoZWFkZXJzIGFyZSByZWFkLiAgQWRhcHRlZCBmcm9tIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzE2MDQwOiBDVkUtMjAxMy0xNzUyOiBubnRwbGliOiBMaW1pdCBtYXhpbXVtIGxpbmUgbGVuZ3RocyB0byAyMDQ4IHRvCi0gIHByZXZlbnQgcmVhZGxpbmUoKSBjYWxscyBmcm9tIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuICBQYXRjaCBieSBKeXJraQotICBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxNjA0MTogQ1ZFLTIwMTMtMTc1MjogcG9wbGliOiBMaW1pdCBtYXhpbXVtIGxpbmUgbGVuZ3RocyB0byAyMDQ4IHRvCi0gIHByZXZlbnQgcmVhZGxpbmUoKSBjYWxscyBmcm9tIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuICBQYXRjaCBieSBKeXJraQotICBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxNzk5NzogQ2hhbmdlIGJlaGF2aW9yIG9mIGBgc3NsLm1hdGNoX2hvc3RuYW1lKClgYCB0byBmb2xsb3cgUkZDIDYxMjUsCi0gIGZvciBzZWN1cml0eSByZWFzb25zLiAgSXQgbm93IGRvZXNuJ3QgbWF0Y2ggbXVsdGlwbGUgd2lsZGNhcmRzIG5vciB3aWxkY2FyZHMKLSAgaW5zaWRlIElETiBmcmFnbWVudHMuCi0KLS0gSXNzdWUgIzE2MDM5OiBDVkUtMjAxMy0xNzUyOiBDaGFuZ2UgdXNlIG9mIHJlYWRsaW5lIGluIGltYXBsaWIgbW9kdWxlIHRvIGxpbWl0Ci0gIGxpbmUgbGVuZ3RoLiAgUGF0Y2ggYnkgRW1pbCBMaW5kLgotCi0tIElzc3VlICMxOTMzMDogdGhlIHVubmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlCi0gIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbmV3IGNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0IGFuZAotICBjb250ZXh0bGliLnN1cHByZXNzIGNvbnRleHQgbWFuYWdlcnMsIHdoaWNoIGFsc28gZW5zdXJlcyB0aGV5IHByb3ZpZGUKLSAgcmVhc29uYWJsZSBoZWxwKCkgb3V0cHV0IG9uIGluc3RhbmNlcwotCi0tIElzc3VlICMxOTM5MzogRml4IHN5bXRhYmxlLnN5bXRhYmxlIGZ1bmN0aW9uIHRvIG5vdCBiZSBjb25mdXNlZCB3aGVuIHRoZXJlIGFyZQotICBmdW5jdGlvbnMgb3IgY2xhc3NlcyBuYW1lZCAidG9wIi4KLQotLSBJc3N1ZSAjMTg2ODU6IFJlc3RvcmUgcmUgcGVyZm9ybWFuY2UgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgotCi0tIElzc3VlICMxOTMzOTogdGVsbmV0bGliIG1vZHVsZSBpcyBub3cgdXNpbmcgdGltZS5tb25vdG9uaWMoKSB3aGVuIGF2YWlsYWJsZQotICB0byBjb21wdXRlIHRpbWVvdXQuCi0KLS0gSXNzdWUgIzE5Mzk5OiBmaXggc3BvcmFkaWMgdGVzdF9zdWJwcm9jZXNzIGZhaWx1cmUuCi0KLS0gSXNzdWUgIzEzMjM0OiBGaXggb3MubGlzdGRpciB0byB3b3JrIHdpdGggZXh0ZW5kZWQgcGF0aHMgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCi0KLS0gSXNzdWUgIzE5Mzc1OiBUaGUgc2l0ZSBtb2R1bGUgYWRkaW5nIGEgInNpdGUtcHl0aG9uIiBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsCi0gIGlmIGl0IGV4aXN0cywgaXMgbm93IGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzE5Mzc5OiBMYXppbHkgaW1wb3J0IGxpbmVjYWNoZSBpbiB0aGUgd2FybmluZ3MgbW9kdWxlLCB0byBtYWtlCi0gIHN0YXJ0dXAgd2l0aCB3YXJuaW5ncyBmYXN0ZXIgdW50aWwgYSB3YXJuaW5nIGdldHMgcHJpbnRlZC4KLQotLSBJc3N1ZSAjMTkyODg6IEZpeGVkIHRoZSAiaW4iIG9wZXJhdG9yIG9mIGRibS5nbnUgZGF0YWJhc2VzIGZvciBzdHJpbmcKLSAgYXJndW1lbnQuICBPcmlnaW5hbCBwYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMTkyODc6IEZpeGVkIHRoZSAiaW4iIG9wZXJhdG9yIG9mIGRibS5uZGJtIGRhdGFiYXNlcyBmb3Igc3RyaW5nCi0gIGFyZ3VtZW50LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCi0KLS0gSXNzdWUgIzE5MzI3OiBGaXhlZCB0aGUgd29ya2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdG9vIGJpZyBjaGFyc2V0LgotCi0tIElzc3VlICMxNzQwMDogTmV3ICdpc19nbG9iYWwnIGF0dHJpYnV0ZSBmb3IgaXBhZGRyZXNzIHRvIHRlbGwgaWYgYW4gYWRkcmVzcwotICBpcyBhbGxvY2F0ZWQgYnkgSUFOQSBmb3IgZ2xvYmFsIG9yIHByaXZhdGUgbmV0d29ya3MuCi0KLS0gSXNzdWUgIzE5MzUwOiBJbmNyZWFzaW5nIHRoZSB0ZXN0IGNvdmVyYWdlIG9mIG1hY3VybDJwYXRoLiBQYXRjaCBieSBDb2xpbgotICBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMTkzNjU6IE9wdGltaXplZCB0aGUgcGFyc2luZyBvZiBsb25nIHJlcGxhY2VtZW50IHN0cmluZyBpbiByZS5zdWIqKCkKLSAgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxOTM1MjogRml4IHVuaXR0ZXN0IGRpc2NvdmVyeSB3aGVuIGEgbW9kdWxlIGNhbiBiZSByZWFjaGVkCi0gIHRocm91Z2ggc2V2ZXJhbCBwYXRocyAoZS5nLiB1bmRlciBEZWJpYW4vVWJ1bnR1IHdpdGggdmlydHVhbGVudikuCi0KLS0gSXNzdWUgIzE1MjA3OiBGaXggbWltZXR5cGVzIHRvIHJlYWQgZnJvbSBjb3JyZWN0IHBhcnQgb2YgV2luZG93cyByZWdpc3RyeQotICBPcmlnaW5hbCBwYXRjaCBieSBEYXZlIENoYW1iZXJzCi0KLS0gSXNzdWUgIzE2NTk1OiBBZGQgcHJsaW1pdCgpIHRvIHJlc291cmNlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTkzMjQ6IEV4cG9zZSBMaW51eC1zcGVjaWZpYyBjb25zdGFudHMgaW4gcmVzb3VyY2UgbW9kdWxlLgotCi0tIExvYWQgU1NMJ3MgZXJyb3Igc3RyaW5ncyBpbiBoYXNobGliLgotCi0tIElzc3VlICMxODUyNzogVXBncmFkZSBpbnRlcm5hbCBjb3B5IG9mIHpsaWIgdG8gMS4yLjguCi0KLS0gSXNzdWUgIzE5Mjc0OiBBZGQgYSBmaWx0ZXJmdW5jIHBhcmFtZXRlciB0byBQeVppcEZpbGUud3JpdGVweS4KLQotLSBJc3N1ZSAjODk2NDogZml4IHBsYXRmb3JtLl9zeXNfdmVyc2lvbiB0byBoYW5kbGUgSXJvblB5dGhvbiAyLjYrLgotICBQYXRjaCBieSBNYXJ0aW4gTWF0dXNpYWsuCi0KLS0gSXNzdWUgIzE5NDEzOiBSZXN0b3JlIHByZS0zLjMgcmVsb2FkKCkgc2VtYW50aWNzIG9mIHJlLWZpbmRpbmcgbW9kdWxlcy4KLQotLSBJc3N1ZSAjMTg5NTg6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IganNvbi5sb2FkKHMpIHdoaWxlIHBhc3NpbmcgYSBzdHJpbmcKLSAgdGhhdCBzdGFydHMgd2l0aCBhIFVURi04IEJPTS4KLQotLSBJc3N1ZSAjMTkzMDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IganNvbi5sb2FkKHMpIHdoaWxlIHBhc3Npbmcgb2JqZWN0cwotICBvZiB0aGUgd3JvbmcgdHlwZS4KLQotLSBJc3N1ZSAjMTYwMzg6IENWRS0yMDEzLTE3NTI6IGZ0cGxpYjogTGltaXQgYW1vdW50IG9mIGRhdGEgcmVhZCBieQotICBsaW1pdGluZyB0aGUgY2FsbCB0byByZWFkbGluZSgpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWljaGHFggotICBKYXN0cnrEmWJza2kgYW5kIEdpYW1wYW9sbyBSb2RvbGEuCi0KLS0gSXNzdWUgIzE3MDg3OiBJbXByb3ZlZCB0aGUgcmVwciBmb3IgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIG9iamVjdHMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxOTY2NDogdGVzdF91c2VyZGljdCdzIHJlcHIgdGVzdCBubyBsb25nZXIgZGVwZW5kcyBvbiB0aGUgb3JkZXIKLSAgb2YgZGljdCBlbGVtZW50cy4KLQotLSBJc3N1ZSAjMTk0NDA6IENsZWFuIHVwIHRlc3RfY2FwaSBieSByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBfX2Z1dHVyZV9fCi0gIGltcG9ydCwgY29udmVydGluZyBmcm9tIHRlc3RfbWFpbiB0byB1bml0dGVzdC5tYWluLCBhbmQgcnVubmluZyB0aGUKLSAgX3Rlc3RjYXBpIG1vZHVsZSB0ZXN0cyBhcyBzdWJUZXN0cyBvZiBhIHVuaXR0ZXN0IFRlc3RDYXNlIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTkzNzg6IHRoZSBtYWluIGRpcyBtb2R1bGUgdGVzdHMgYXJlIG5vdyBydW4gd2l0aCBib3RoIHN0ZG91dAotICByZWRpcmVjdGlvbiAqYW5kKiBwYXNzaW5nIGFuIGV4cGxpY2l0IGZpbGUgcGFyYW1ldGVyCi0KLS0gSXNzdWUgIzE5Mzc4OiByZW1vdmVkIHRoZSBub3QtYWN0dWFsbHktaGVscGZ1bCBhc3NlcnRJbnN0cnVjdGlvbk1hdGNoZXMKLSAgYW5kIGFzc2VydEJ5dGVjb2RlRXhhY3RseU1hdGNoZXMgaGVscGVycyBmcm9tIGJ5dGVjb2RlX2hlbHBlcgotCi0tIElzc3VlICMxODcwMjogQWxsIHNraXBwZWQgdGVzdHMgbm93IHJlcG9ydGVkIGFzIHNraXBwZWQuCi0KLS0gSXNzdWUgIzE5NDM5OiBpbnRlcnByZXRlciBlbWJlZGRpbmcgdGVzdHMgYXJlIG5vdyBleGVjdXRlZCBvbiBXaW5kb3dzCi0gIChQYXRjaCBieSBaYWNoYXJ5IFdhcmUpCi0KLS0gSXNzdWUgIzE5MDg1OiBBZGRlZCBiYXNpYyB0ZXN0cyBmb3IgYWxsIHRraW50ZXIgd2lkZ2V0IG9wdGlvbnMuCi0KLS0gSXNzdWUgIzE5Mzg0OiBGaXggdGVzdF9weV9jb21waWxlIGZvciByb290IHVzZXIsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODMyNjogQ2xhcmlmeSB0aGF0IGxpc3Quc29ydCdzIGFyZ3VtZW50cyBhcmUga2V5d29yZC1vbmx5LiAgQWxzbywKLSAgYXR0ZW1wdCB0byByZWR1Y2UgY29uZnVzaW9uIGluIHRoZSBnbG9zc2FyeSBieSBub3Qgc2F5aW5nIHRoZXJlIGFyZQotICBkaWZmZXJlbnQgInR5cGVzIiBvZiBhcmd1bWVudHMgYW5kIHBhcmFtZXRlcnMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxOTM1ODogIm1ha2UgY2xpbmljIiBub3cgcnVucyB0aGUgQXJndW1lbnQgQ2xpbmljIHByZXByb2Nlc3NvcgotICBvdmVyIGFsbCBDUHl0aG9uIHNvdXJjZSBmaWxlcy4KLQotLSBVcGRhdGUgU1FMaXRlIHRvIDMuOC4xLCB4eiB0byA1LjAuNSwgYW5kIFRjbC9UayB0byA4LjYuMSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNjYzMjogRW5hYmxlIERFUCBhbmQgQVNMUiBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNzc5MTogRHJvcCBQUkVGSVggYW5kIEVYRUNfUFJFRklYIGRlZmluaXRpb25zIGZyb20gUEMvcHljb25maWcuaAotCi0tIEFkZCB3b3JrYXJvdW5kIGZvciBWUyAyMDEwIG5tYWtlIGNsZWFuIGlzc3VlLiBWUyAyMDEwIGRvZXNuJ3Qgc2V0IHVwIFBBVEgKLSAgZm9yIG5tYWtlLmV4ZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE5NTUwOiBJbXBsZW1lbnQgV2luZG93cyBpbnN0YWxsZXIgY2hhbmdlcyBvZiBQRVAgNDUzIChlbnN1cmVwaXApLgotCi0tIElzc3VlICMxOTUyMDogRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gdGhlIF9zaGEzIG1vZHVsZSBvbiAzMmJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxOTM1NjogQXZvaWQgdXNpbmcgYSBDIHZhcmlhYmxlZCBuYW1lZCAiX3NlbGYiLCBpdCdzIGEgcmVzZXJ2ZWQKLSAgd29yZCBpbiBzb21lIEMgY29tcGlsZXJzLgotCi0tIElzc3VlICMxNTc5MjogQ29ycmVjdCBidWlsZCBvcHRpb25zIG9uIFdpbjY0LiBQYXRjaCBieSBKZXJlbXkgS2xvdGguCi0KLS0gSXNzdWUgIzE5MzczOiBBcHBseSB1cHN0cmVhbSBjaGFuZ2UgdG8gVGsgOC41LjE1IGZpeGluZyBPUyBYIDEwLjkKLSAgc2NyZWVuIHJlZnJlc2ggcHJvYmxlbSBmb3IgT1MgWCBpbnN0YWxsZXIgYnVpbGQuCi0KLS0gSXNzdWUgIzE5NjQ5OiBPbiBPUyBYLCB0aGUgc2FtZSBzZXQgb2YgZmlsZSBuYW1lcyBhcmUgbm93IGluc3RhbGxlZAotICBpbiBiaW4gZGlyZWN0b3JpZXMgZm9yIGFsbCBjb25maWd1cmF0aW9uczogbm9uLWZyYW1ld29yayB2cyBmcmFtZXdvcmssCi0gIGFuZCBzaW5nbGUgYXJjaCB2cyB1bml2ZXJzYWwgYnVpbGRzLiAgcHl0aG9ueC55LTMyIGlzIG5vdyBhbHdheXMKLSAgaW5zdGFsbGVkIGZvciA2NC1iaXQvMzItYml0IHVuaXZlcnNhbCBidWlsZHMuICBUaGUgb2Jzb2xldGUgYW5kCi0gIHVuZG9jdW1lbnRlZCBweXRob253KiBzeW1saW5rcyBhcmUgbm8gbG9uZ2VyIGluc3RhbGxlZCBhbnl3aGVyZS4KLQotLSBJc3N1ZSAjMTk1NTM6IFBFUCA0NTMgLSAibWFrZSBpbnN0YWxsIiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgbm93IGluc3RhbGwgb3IKLSAgdXBncmFkZSBwaXAgYnkgZGVmYXVsdCwgdXNpbmcgdGhlIGJ1bmRsZWQgcGlwIHByb3ZpZGVkIGJ5IHRoZSBuZXcgZW5zdXJlcGlwCi0gIG1vZHVsZS4gIEEgbmV3IGNvbmZpZ3VyZSBvcHRpb24sIC0td2l0aC1lbnN1cmVwaXBbPXVwZ3JhZGV8aW5zdGFsbHxub10sIGlzCi0gIGF2YWlsYWJsZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBlbnN1cmVwaXAgIi0tdXBncmFkZSIgb3B0aW9uLiAgVGhlIG9wdGlvbgotICBjYW4gYWxzbyBiZSBzZXQgd2l0aCAibWFrZSBbYWx0XWluc3RhbGwgRU5TVVJFUElQPVt1cGdyYWRlfGluc3RhbGx8bm9dIi4KLQotLSBJc3N1ZSAjMTk1NTE6IFBFUCA0NTMgLSB0aGUgT1MgWCBpbnN0YWxsZXIgbm93IGluc3RhbGxzIHBpcCBieSBkZWZhdWx0LgotCi0tIFVwZGF0ZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgZm9yIE9TIFggaW5zdGFsbGVyczogeHogNS4wLjMgLT4gNS4wLjUsCi0gIFNRTGl0ZSAzLjcuMTMgLT4gMy44LjEKLQotLSBJc3N1ZSAjMTU2NjM6IFJldmVydCBPUyBYIGluc3RhbGxlciBidWlsdC1pbiBUY2wvVGsgc3VwcG9ydCBmb3IgMy40LjBiMS4KLSAgU29tZSB0aGlyZC1wYXJ0eSBwcm9qZWN0cywgc3VjaCBhcyBNYXRwbG90bGliIGFuZCBQSUwvUGlsbG93LAotICBkZXBlbmRlZCBvbiBiZWluZyBhYmxlIHRvIGJ1aWxkIHdpdGggVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluCi0gIC9MaWJyYXJ5L0ZyYW1ld29ya3MuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxOTczMDogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBhbGwgdGhlIGV4aXN0aW5nIFB5QXJnCi0gICJmb3JtYXQgdW5pdHMiIGFzIGxlZ2FjeSBjb252ZXJ0ZXJzLCBhcyB3ZWxsIGFzIHR3byBuZXcgZmVhdHVyZXM6Ci0gICJzZWxmIGNvbnZlcnRlcnMiIGFuZCB0aGUgInZlcnNpb24iIGRpcmVjdGl2ZS4KLQotLSBJc3N1ZSAjMTk1NTI6IHB5dmVudiBub3cgYm9vdHN0cmFwcyBwaXAgaW50byB2aXJ0dWFsIGVudmlyb25tZW50cyBieQotICBkZWZhdWx0IChwYXNzIC0td2l0aG91dC1waXAgdG8gcmVxdWVzdCB0aGUgb2xkIGJlaGF2aW91cikKLQotLSBJc3N1ZSAjMTkzOTA6IEFyZ3VtZW50IENsaW5pYyBubyBsb25nZXIgYWNjZXB0cyBtYWxmb3JtZWQgUHl0aG9uCi0gIGFuZCBDIGlkcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCBBbHBoYSA0PwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDEzLTEwLTIwCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxOTMwMTogR2l2ZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdGhhdCBhcmUgZXhwbGljaXRseSBtYXJrZWQgZ2xvYmFsIGEKLSAgZ2xvYmFsIHF1YWxuYW1lLgotCi0tIElzc3VlICMxOTI3OTogVVRGLTcgZGVjb2RlciBubyBsb25nZXIgcHJvZHVjZXMgaWxsZWdhbCBzdHJpbmdzLgotCi0tIElzc3VlICMxNjYxMjogQWRkICJBcmd1bWVudCBDbGluaWMiLCBhIGNvbXBpbGUtdGltZSBwcmVwcm9jZXNzb3IgZm9yCi0gIEMgZmlsZXMgdG8gZ2VuZXJhdGUgYXJndW1lbnQgcGFyc2luZyBjb2RlLiAgKFNlZSBQRVAgNDM2LikKLQotLSBJc3N1ZSAjMTg4MTA6IFNoaWZ0IHN0YXQgY2FsbHMgaW4gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIHN1Y2ggdGhhdAotICB0aGUgY29kZSBpcyBvcHRpbWlzdGljIHRoYXQgaWYgc29tZXRoaW5nIGV4aXN0cyBpbiBhIGRpcmVjdG9yeSBuYW1lZCBleGFjdGx5Ci0gIGxpa2UgdGhlIHBvc3NpYmxlIHBhY2thZ2UgYmVpbmcgc2VhcmNoZWQgZm9yIHRoYXQgaXQncyBpbiBhY3R1YWxpdHkgYQotICBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE4NDE2OiBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIgbm93IHRyZWF0cyAnJyBhcyB0aGUgY3dkIGFuZAotICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgbm8gbG9uZ2VyIHNwZWNpYWwtY2FzZXMgJycgdG8gJy4nLiBUaGlzIGxlYWRzCi0gIHRvIG1vZHVsZXMgaW1wb3J0ZWQgZnJvbSBjd2QgdG8gbm93IHBvc3Nlc3MgYW4gYWJzb2x1dGUgZmlsZSBwYXRoIGZvcgotICBfX2ZpbGVfXyAodGhpcyBkb2VzIG5vdCBhZmZlY3QgbW9kdWxlcyBzcGVjaWZpZWQgYnkgcGF0aCBvbiB0aGUgQ0xJIGJ1dCBpdAotICBkb2VzIGFmZmVjdCAtbS9ydW5weSkuIEl0IGFsc28gYWxsb3dzIEZpbGVGaW5kZXIgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGJ5IG5vdAotICBoYXZpbmcgYW4gZWRnZSBjYXNlLgotCi0tIElzc3VlICM0NTU1OiBBbGwgZXhwb3J0ZWQgQyBzeW1ib2xzIGFyZSBub3cgcHJlZml4ZWQgd2l0aCBlaXRoZXIKLSAgIlB5IiBvciAiX1B5Ii4KLQotLSBJc3N1ZSAjMTkyMTk6IFNwZWVkIHVwIG1hcnNoYWwubG9hZHMoKSwgYW5kIG1ha2UgcHljIGZpbGVzIHNsaWdodGx5Ci0gICg1JSB0byAxMCUpIHNtYWxsZXIuCi0KLS0gSXNzdWUgIzE5MjIxOiBVcGdyYWRlIFVuaWNvZGUgZGF0YWJhc2UgdG8gdmVyc2lvbiA2LjMuMC4KLQotLSBJc3N1ZSAjMTY3NDI6IFRoZSByZXN1bHQgb2YgdGhlIEMgY2FsbGJhY2sgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBtdXN0Ci0gIG5vdyBiZSBhIHN0cmluZyBhbGxvY2F0ZWQgYnkgUHlNZW1fUmF3TWFsbG9jKCkgb3IgUHlNZW1fUmF3UmVhbGxvYygpIChvciBOVUxMCi0gIGlmIGFuIGVycm9yIG9jY3VycmVkKSwgaW5zdGVhZCBvZiBhIHN0cmluZyBhbGxvY2F0ZWQgYnkgUHlNZW1fTWFsbG9jKCkgb3IKLSAgUHlNZW1fUmVhbGxvYygpLgotCi0tIElzc3VlICMxOTE5OTogUmVtb3ZlIGBgUHlUaHJlYWRTdGF0ZS50aWNrX2NvdW50ZXJgYCBmaWVsZAotCi0tIEZpeCBtYWNybyBleHBhbnNpb24gb2YgX1B5RXJyX09DQ1VSUkVEKCksIGFuZCBtYWtlIHN1cmUgdG8gdXNlIGl0IGluIGF0Ci0gIGxlYXN0IG9uZSBwbGFjZSBzbyBhcyB0byBhdm9pZCByZWdyZXNzaW9ucy4KLQotLSBJc3N1ZSAjMTkwODc6IEltcHJvdmUgYnl0ZWFycmF5IGFsbG9jYXRpb24gaW4gb3JkZXIgdG8gYWxsb3cgY2hlYXAgcG9wcGluZwotICBvZiBkYXRhIGF0IHRoZSBmcm9udCAoc2xpY2UgZGVsZXRpb24pLgotCi0tIElzc3VlICMxOTAxNDogbWVtb3J5dmlldy5jYXN0KCkgaXMgbm93IGFsbG93ZWQgb24gemVyby1sZW5ndGggdmlld3MuCi0KLS0gSXNzdWUgIzE4NjkwOiBtZW1vcnl2aWV3IGlzIG5vdyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQgd2l0aAotICBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UKLQotLSBJc3N1ZSAjMTkwNzg6IG1lbW9yeXZpZXcgbm93IGNvcnJlY3RseSBzdXBwb3J0cyB0aGUgcmV2ZXJzZWQgYnVpbHRpbgotICAoUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhKQotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3NDU3OiB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSBub3cgd29ya3Mgd2l0aCBuYW1lc3BhY2UgcGFja2FnZXMuCi0gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMTgyMzU6IEZpeCB0aGUgc3lzY29uZmlnIHZhcmlhYmxlcyBMRFNIQVJFRCBhbmQgQkxEU0hBUkVEIHVuZGVyIEFJWC4KLSAgUGF0Y2ggYnkgRGF2aWQgRWRlbHNvaG4uCi0KLS0gSXNzdWUgIzE4NjA2OiBBZGQgdGhlIG5ldyAic3RhdGlzdGljcyIgbW9kdWxlIChQRVAgNDUwKS4gIENvbnRyaWJ1dGVkCi0gIGJ5IFN0ZXZlbiBEJ0FwcmFuby4KLQotLSBJc3N1ZSAjMTI4NjY6IFRoZSBhdWRpb29wIG1vZHVsZSBub3cgc3VwcG9ydHMgMjQtYml0IHNhbXBsZXMuCi0KLS0gSXNzdWUgIzE5MjU0OiBQcm92aWRlIGFuIG9wdGltaXplZCBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgcGJrZGYyX2htYWMuCi0KLS0gSXNzdWVzICMxOTIwMSwgSXNzdWUgIzE5MjIyLCBJc3N1ZSAjMTkyMjM6IEFkZCAieCIgbW9kZSAoZXhjbHVzaXZlIGNyZWF0aW9uKQotICBpbiBvcGVuaW5nIGZpbGUgdG8gYnoyLCBnemlwIGFuZCBsem1hIG1vZHVsZXMuIFBhdGNoZXMgYnkgVGltIEhlYW5leSBhbmQKLSAgVmFqcmFza3kgS29rLgotCi0tIEZpeCBhIHJlZmVyZW5jZSBjb3VudCBsZWFrIGluIF9zcmUuCi0KLS0gSXNzdWUgIzE5MjYyOiBJbml0aWFsIGNoZWNrIGluIG9mIHRoZSAnYXN5bmNpbycgcGFja2FnZSAoYS5rLmEuIFR1bGlwLAotICBhLmsuYS4gUEVQIDMxNTYpLiAgVGhlcmUgYXJlIG5vIGRvY3MgeWV0LCBhbmQgdGhlIFBFUCBpcyBzbGlnaHRseQotICBvdXQgb2YgZGF0ZSB3aXRoIHRoZSBjb2RlLiAgVGhpcyBtb2R1bGUgd2lsbCBoYXZlICpwcm92aXNpb25hbCogc3RhdHVzCi0gIGluIFB5dGhvbiAzLjQuCi0KLS0gSXNzdWUgIzE5Mjc2OiBGaXhlZCB0aGUgd2F2ZSBtb2R1bGUgb24gNjQtYml0IGJpZy1lbmRpYW4gcGxhdGZvcm1zLgotCi0tIElzc3VlICMxOTI2NjogUmVuYW1lIHRoZSBuZXctaW4tMy40IGBgY29udGV4dGxpYi5pZ25vcmVgYCBjb250ZXh0IG1hbmFnZXIKLSAgdG8gYGBjb250ZXh0bGliLnN1cHByZXNzYGAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggZXhpc3RpbmcKLSAgZGVzY3JpcHRpb25zIG9mIHRoYXQgb3BlcmF0aW9uIGVsc2V3aGVyZSBpbiB0aGUgbGFuZ3VhZ2UgYW5kIHN0YW5kYXJkCi0gIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiAoUGF0Y2ggYnkgWmVybyBQaXJhZXVzKS4KLQotLSBJc3N1ZSAjMTg4OTE6IENvbXBsZXRlZCB0aGUgbmV3IGVtYWlsIHBhY2thZ2UgKHByb3Zpc2lvbmFsKSBBUEkgYWRkaXRpb25zCi0gIGJ5IGFkZGluZyBuZXcgY2xhc3NlcyBFbWFpbE1lc3NhZ2UsIE1JTUVQYXJ0LCBhbmQgQ29udGVudE1hbmFnZXIuCi0KLS0gSXNzdWUgIzE4MjgxOiBVbnVzZWQgc3RhdCBjb25zdGFudHMgcmVtb3ZlZCBmcm9tIGB0YXJmaWxlYC4KLQotLSBJc3N1ZSAjMTg5OTk6IE11bHRpcHJvY2Vzc2luZyBub3cgc3VwcG9ydHMgJ2NvbnRleHRzJyB3aXRoIHRoZSBzYW1lIEFQSQotICBhcyB0aGUgbW9kdWxlLCBidXQgYm91bmQgdG8gc3BlY2lmaWVkIHN0YXJ0IG1ldGhvZHMuCi0KLS0gSXNzdWUgIzE4NDY4OiBUaGUgcmUuc3BsaXQsIHJlLmZpbmRhbGwsIGFuZCByZS5zdWIgZnVuY3Rpb25zIGFuZCB0aGUgZ3JvdXAoKQotICBhbmQgZ3JvdXBzKCkgbWV0aG9kcyBvZiBtYXRjaCBvYmplY3Qgbm93IGFsd2F5cyByZXR1cm4gYSBzdHJpbmcgb3IgYSBieXRlcwotICBvYmplY3QuCi0KLS0gSXNzdWUgIzE4NzI1OiBUaGUgdGV4dHdyYXAgbW9kdWxlIG5vdyBzdXBwb3J0cyB0cnVuY2F0aW5nIG11bHRpbGluZSB0ZXh0LgotCi0tIElzc3VlICMxODc3NjogYXRleGl0IGNhbGxiYWNrcyBub3cgZGlzcGxheSB0aGVpciBmdWxsIHRyYWNlYmFjayB3aGVuIHRoZXkKLSAgcmFpc2UgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxNzgyNzogQWRkIHRoZSBtaXNzaW5nIGRvY3VtZW50YXRpb24gZm9yIGBgY29kZWNzLmVuY29kZWBgIGFuZAotICBgYGNvZGVjcy5kZWNvZGVgYC4KLQotLSBJc3N1ZSAjMTkyMTg6IFJlbmFtZSBjb2xsZWN0aW9ucy5hYmMgdG8gX2NvbGxlY3Rpb25zX2FiYyBpbiBvcmRlciB0bwotICBzcGVlZCB1cCBpbnRlcnByZXRlciBzdGFydC4KLQotLSBJc3N1ZSAjMTg1ODI6IEFkZCAncGJrZGYyX2htYWMnIHRvIHRoZSBoYXNobGliIG1vZHVsZS4gSXQgaW1wbGVtZW50cyBQS0NTIzUKLSAgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb25zIHdpdGggSE1BQyBhcyBwc2V1ZG9yYW5kb20gZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE5MTMxOiBUaGUgYWlmYyBtb2R1bGUgbm93IGNvcnJlY3RseSByZWFkcyBhbmQgd3JpdGVzIHNhbXB3aWR0aCBvZgotICBjb21wcmVzc2VkIHN0cmVhbXMuCi0KLS0gSXNzdWUgIzE5MjA5OiBSZW1vdmUgaW1wb3J0IG9mIGNvcHlyZWcgZnJvbSB0aGUgb3MgbW9kdWxlIHRvIHNwZWVkIHVwCi0gIGludGVycHJldGVyIHN0YXJ0dXAuIHN0YXRfcmVzdWx0IGFuZCBzdGF0dmZzX3Jlc3VsdCBhcmUgbm93IGhhcmQtY29kZWQgdG8KLSAgcmVzaWRlIGluIHRoZSBvcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE5MjA1OiBEb24ndCBpbXBvcnQgdGhlICdyZScgbW9kdWxlIGluIHNpdGUgYW5kIHN5c2NvbmZpZyBtb2R1bGUgdG8KLSAgc3BlZWQgdXAgaW50ZXJwcmV0ZXIgc3RhcnQuCi0KLS0gSXNzdWUgIzk1NDg6IEFkZCBhIG1pbmltYWwgIl9ib290bG9jYWxlIiBtb2R1bGUgdGhhdCBpcyBpbXBvcnRlZCBieSB0aGUKLSAgX2lvIG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBmdWxsIGxvY2FsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE4NzY0OiBSZW1vdmUgdGhlICdwcmludCcgYWxpYXMgZm9yIHRoZSBQREIgJ3AnIGNvbW1hbmQgc28gdGhhdCBpdCBubwotICBsb25nZXIgc2hhZG93cyB0aGUgcHJpbnQgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE5MTU4OiBBIHJhcmUgcmFjZSBpbiBCb3VuZGVkU2VtYXBob3JlIGNvdWxkIGFsbG93IC5yZWxlYXNlKCkgdG9vCi0gIG9mdGVuLgotCi0tIElzc3VlICMxNTgwNTogQWRkIGNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0KCkuCi0KLS0gSXNzdWUgIzE4NzE2OiBEZXByZWNhdGUgdGhlIGZvcm1hdHRlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwNzEyOiAydG8zIGhhcyBhIG5ldyAiYXNzZXJ0cyIgZml4ZXIgdGhhdCByZXBsYWNlcyBkZXByZWNhdGVkIG5hbWVzCi0gIG9mIHVuaXR0ZXN0IG1ldGhvZHMgKGUuZy4gZmFpbFVubGVzc0VxdWFsIC0+IGFzc2VydEVxdWFsKS4KLQotLSBJc3N1ZSAjMTgwMzc6IDJ0bzMgbm93IGVzY2FwZXMgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGluIG5hdGl2ZSBzdHJpbmdzLgotCi0tIElzc3VlICMxNzgzOTogYmFzZTY0LmRlY29kZWJ5dGVzIGFuZCBiYXNlNjQuZW5jb2RlYnl0ZXMgbm93IGFjY2VwdCBhbnkKLSAgb2JqZWN0IHRoYXQgZXhwb3J0cyBhIDEgZGltZW5zaW9uYWwgYXJyYXkgb2YgYnl0ZXMgKHRoaXMgbWVhbnMgdGhlIHNhbWUKLSAgaXMgbm93IGFsc28gdHJ1ZSBmb3IgYmFzZTY0X2NvZGVjKQotCi0tIElzc3VlICMxOTEzMjogVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIGNvbXBhY3QgbW9kZS4KLQotLSBJc3N1ZSAjMTkxMzc6IFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBjb3JyZWN0bHkgZm9ybWF0cyBpbnN0YW5jZXMgb2Ygc2V0IGFuZAotICBmcm96ZW5zZXQgc3ViY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTAwNDI6IGZ1bmN0b29scy50b3RhbF9vcmRlcmluZyBub3cgY29ycmVjdGx5IGhhbmRsZXMKLSAgTm90SW1wbGVtZW50ZWQgYmVpbmcgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgY29tcGFyaXNvbiBmdW5jdGlvbiAoUGF0Y2gKLSAgYnkgS2F0aWUgTWlsbGVyKQotCi0tIElzc3VlICMxOTA5MjogY29udGV4dGxpYi5FeGl0U3RhY2sgbm93IGNvcnJlY3RseSByZXJhaXNlcyBleGNlcHRpb25zCi0gIGZyb20gdGhlIF9fZXhpdF9fIGNhbGxiYWNrcyBvZiBpbm5lciBjb250ZXh0IG1hbmFnZXJzIChQYXRjaCBieSBIcnZvamUKLSAgTmlrxaFpxIcpCi0KLS0gSXNzdWUgIzEyNjQxOiBBdm9pZCBwYXNzaW5nICItbW5vLWN5Z3dpbiIgdG8gdGhlIG1pbmd3MzIgY29tcGlsZXIsIGV4Y2VwdAotICB3aGVuIG5lY2Vzc2FyeS4gIFBhdGNoIGJ5IE9zY2FyIEJlbmphbWluLgotCi0tIElzc3VlICM1ODQ1OiBJbiBzaXRlLnB5LCBvbmx5IGxvYWQgcmVhZGxpbmUgaGlzdG9yeSBmcm9tIH4vLnB5dGhvbl9oaXN0b3J5Ci0gIGlmIG5vIGhpc3RvcnkgaGFzIGJlZW4gcmVhZCBhbHJlYWR5LiAgVGhpcyBhdm9pZHMgZG91YmxlIHdyaXRlcyB0byB0aGUKLSAgaGlzdG9yeSBmaWxlIGF0IHNodXRkb3duLgotCi0tIFByb3Blcmx5IGluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBhIFNTTCBvYmplY3QgYWZ0ZXIgYWxsb2NhdGlvbi4KLQotLSBJc3N1ZSAjMTkwOTU6IFNTTFNvY2tldC5nZXRwZWVyY2VydCgpIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIHRoZQotICBTU0wgaGFuZHNoYWtlIGhhc24ndCBiZWVuIGRvbmUuCi0KLS0gSXNzdWUgIzQzNjY6IEZpeCBidWlsZGluZyBleHRlbnNpb25zIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiAtLWVuYWJsZS1zaGFyZWQKLSAgaXMgdXNlZC4KLQotLSBJc3N1ZSAjMTkwMzA6IEZpeGVkIGBpbnNwZWN0LmdldG1lbWJlcnNgIGFuZCBgaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRyc2AKLSAgdG8gYXR0ZW1wdCBhY3RpdmF0aW5nIGRlc2NyaXB0b3JzIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYSBfX2RpY3RfXyBzZWFyY2gKLSAgZm9yIGZhdWx0eSBkZXNjcmlwdG9ycy4gIGBpbnNwZWN0LmNsYXNzaWZ5X2NsYXNzX2F0dHJzYCBubyBsb25nZXIgcmV0dXJucwotICBBdHRyaWJ1dGVzIHdob3NlIGhvbWUgY2xhc3MgaXMgTm9uZS4KLQotQyBBUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NzI2NzM6IFRoZSB0eXBlIG9mIGBjaGFyKmAgYXJndW1lbnRzIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuCi0KLS0gSXNzdWUgIzE2MTI5OiBBZGRlZCBhIGBQeV9TZXRTdGFuZGFyZFN0cmVhbUVuY29kaW5nYCBwcmUtaW5pdGlhbGl6YXRpb24gQVBJCi0gIHRvIGFsbG93IGVtYmVkZGluZyBhcHBsaWNhdGlvbnMgbGlrZSBCbGVuZGVyIHRvIGZvcmNlIGEgcGFydGljdWxhcgotICBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHN0YW5kYXJkIElPIHN0cmVhbXMgKGluaXRpYWwgcGF0Y2ggYnkKLSAgQmFzdGllbiBNb250YWduZSkKLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE5Mjc1OiBGaXggdGVzdF9zaXRlIG9uIEFNRDY0IFNub3cgTGVvcGFyZAotCi0tIElzc3VlICMxNDQwNzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IGluIHRlc3RfY29uY3VycmVudF9mdXR1cmVzLgotCi0tIElzc3VlICMxODkxOTogVW5pZmllZCBhbmQgZXh0ZW5kZWQgdGVzdHMgZm9yIGF1ZGlvIG1vZHVsZXM6IGFpZmMsIHN1bmF1IGFuZAotICB3YXZlLgotCi0tIElzc3VlICMxODcxNDogQWRkZWQgdGVzdHMgZm9yIGBgcGRiLmZpbmRfZnVuY3Rpb24oKWBgLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4NzU4OiBGaXhlZCBhbmQgaW1wcm92ZWQgY3Jvc3MtcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjMTg5NzI6IE1vZGVybml6ZSBlbWFpbCBleGFtcGxlcyBhbmQgdXNlIHRoZSBhcmdwYXJzZSBtb2R1bGUgaW4gdGhlbS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE5MTMwOiBDb3JyZWN0IFBDYnVpbGQvcmVhZG1lLnR4dCwgUHl0aG9uIDMuMyBhbmQgMy40IHJlcXVpcmUgVlMgMjAxMC4KLQotLSBJc3N1ZSAjMTU2NjM6IFVwZGF0ZSBPUyBYIDEwLjYrIGluc3RhbGxlciB0byB1c2UgVGNsL1RrIDguNS4xNS4KLQotLSBJc3N1ZSAjMTQ0OTk6IEZpeCBzZXZlcmFsIHByb2JsZW1zIHdpdGggT1MgWCB1bml2ZXJzYWwgYnVpbGQgc3VwcG9ydDoKLSAgICAxLiBwcGMgYXJjaCBkZXRlY3Rpb24gZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIGJyb2tlIHdpdGggWGNvZGUgNQotICAgIDIuIHBwYyBhcmNoIGRldGVjdGlvbiBpbiBjb25maWd1cmUgZGlkIG5vdCB3b3JrIG9uIE9TIFggMTAuNAotICAgIDMuIC1zeXNyb290IGFuZCAtYXJjaCBmbGFncyB3ZXJlIHVubmVjZXNzYXJpbHkgZHVwbGljYXRlZAotICAgIDQuIHRoZXJlIHdhcyBubyBvYnZpb3VzIHdheSB0byBjb25maWd1cmUgYW4gaW50ZWwtMzIgb25seSBidWlsZC4KLQotLSBJc3N1ZSAjMTkwMTk6IENoYW5nZSB0aGUgT1MgWCBpbnN0YWxsZXIgYnVpbGQgc2NyaXB0IHRvIHVzZSBDRkxBR1MgaW5zdGVhZAotICBvZiBPUFQgZm9yIHNwZWNpYWwgYnVpbGQgb3B0aW9ucy4gIEJ5IHNldHRpbmcgT1BULCBzb21lIGNvbXBpbGVyLXNwZWNpZmljCi0gIG9wdGlvbnMgbGlrZSAtZndyYXB2IHdlcmUgb3ZlcnJpZGRlbiBhbmQgdGh1cyBub3QgdXNlZCwgd2hpY2ggY291bGQgcmVzdWx0Ci0gIGluIGJyb2tlbiBpbnRlcnByZXRlcnMgd2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEFscGhhIDM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTMtMDktMjkKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4ODE4OiBUaGUgImVuY29kaW5nbmFtZSIgcGFydCBvZiBQWVRIT05JT0VOQ09ESU5HIGlzIG5vdyBvcHRpb25hbC4KLQotLSBJc3N1ZSAjMTkwOTg6IFByZXZlbnQgb3ZlcmZsb3cgaW4gdGhlIGNvbXBpbGVyIHdoZW4gdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBzZXQKLSAgYWJzdXJkbHkgaGlnaC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxODkyOTogYGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMoKWAgbm93IGNvcnJlY3RseSBmaW5kcyBjbGFzcwotICBhdHRyaWJ1dGVzIHJldHVybmVkIGJ5IGBkaXIoKWAgdGhhdCBhcmUgbG9jYXRlZCBpbiB0aGUgbWV0YWNsYXNzLgotCi0tIElzc3VlICMxODk1MDogRml4IG1pc2NlbGxhbmVvdXMgYnVncyBpbiB0aGUgc3VuYXUgbW9kdWxlLgotICBBdV9yZWFkLnJlYWRmcmFtZXMoKSBub3cgdXBkYXRlcyBjdXJyZW50IGZpbGUgcG9zaXRpb24gYW5kIHJlYWRzIGNvcnJlY3QKLSAgbnVtYmVyIG9mIGZyYW1lcyBmcm9tIG11bHRpY2hhbm5lbCBzdHJlYW0uICBBdV93cml0ZS53cml0ZWZyYW1lc3JhdygpIG5vdwotICBjb3JyZWN0bHkgdXBkYXRlcyBjdXJyZW50IGZpbGUgcG9zaXRpb24uICBBdV9yZWFkLmdldG5mcmFtZXMoKSBub3cgcmV0dXJucyBhbgotICBpbnRlZ2VyIChhcyBpbiBQeXRob24gMikuICBBdV9yZWFkIGFuZCBBdV93cml0ZSBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggZmlsZQotICBvYmplY3QgaWYgc3RhcnQgZmlsZSBwb3NpdGlvbiBpcyBub3QgYSB6ZXJvLgotCi0tIElzc3VlICMxODU5NDogVGhlIGZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpIHdhcyBuZXZlciB0YWtlbgotICBkdWUgdG8gYW4gb3Zlci1yZXN0cmljdGl2ZSB0eXBlIGNoZWNrLgotCi0tIElzc3VlICMxOTA1MzogWmlwRXh0RmlsZS5yZWFkMSgpIHdpdGggbm9uLXplcm8gYXJndW1lbnQgbm8gbW9yZSByZXR1cm5zIGVtcHR5Ci0gIGJ5dGVzIHVudGlsIGVuZCBvZiBkYXRhLgotCi0tIGxvZ2dpbmc6IGFkZGVkIHN1cHBvcnQgZm9yIFVuaXggZG9tYWluIHNvY2tldHMgdG8gU29ja2V0SGFuZGxlciBhbmQKLSAgRGF0YWdyYW1IYW5kbGVyLgotCi0tIElzc3VlICMxODk5NjogVGVzdENhc2UuYXNzZXJ0RXF1YWwoKSBub3cgbW9yZSBjbGV2ZXJseSBzaG9ydGVuIGRpZmZlcmluZwotICBzdHJpbmdzIGluIGVycm9yIHJlcG9ydC4KLQotLSBJc3N1ZSAjMTkwMzQ6IHJlcHIoKSBmb3IgdGtpbnRlci5UY2xfT2JqIG5vdyBleHBvc2VzIHN0cmluZyByZXBlcmVzZW50YXRpb24uCi0KLS0gSXNzdWUgIzE4OTc4OiBgYHVybGxpYi5yZXF1ZXN0LlJlcXVlc3RgYCBub3cgYWxsb3dzIHRoZSBtZXRob2QgdG8gYmUKLSAgaW5kaWNhdGVkIG9uIHRoZSBjbGFzcyBhbmQgbm8gbG9uZ2VyIHNldHMgaXQgdG8gTm9uZSBpbiBgYF9faW5pdF9fYGAuCi0KLS0gSXNzdWUgIzE4NjI2OiB0aGUgaW5zcGVjdCBtb2R1bGUgbm93IG9mZmVycyBhIGJhc2ljIGNvbW1hbmQgbGluZQotICBpbnRyb3NwZWN0aW9uIGludGVyZmFjZSAoSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEpCi0KLS0gSXNzdWUgIzMwMTU6IEZpeGVkIHRraW50ZXIgd2l0aCB3YW50b2JqZWN0PUZhbHNlLiAgQW55IFRjbCBjb21tYW5kIGNhbGwKLSAgcmV0dXJuZWQgZW1wdHkgc3RyaW5nLgotCi0tIElzc3VlICMxOTAzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vdyBtYWtlcyBhbGwgY2hhbmdlcyB0byBtYWlsZGlyIGZpbGVzCi0gIGJlZm9yZSBtb3ZpbmcgdGhlbSBpbnRvIHBsYWNlLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcwotICB0aGF0IG1heSBiZSBhY2Nlc3NpbmcgdGhlIG1haWxkaXIgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNDk4NDogT24gUE9TSVggc3lzdGVtcywgd2hlbiBuZXRyYyBpcyBjYWxsZWQgd2l0aG91dCBhIGZpbGVuYW1lCi0gIGFyZ3VtZW50IChhbmQgdGhlcmVmb3JlIGlzIHJlYWRpbmcgdGhlIHVzZXIncyAkSE9NRS8ubmV0cmMgZmlsZSksIGl0IG5vdwotICBlbmZvcmNlcyB0aGUgc2FtZSBzZWN1cml0eSBydWxlcyBhcyB0eXBpY2FsIGZ0cCBjbGllbnRzOiB0aGUgLm5ldHJjIGZpbGUgbXVzdAotICBiZSBvd25lZCBieSB0aGUgdXNlciB0aGF0IG93bnMgdGhlIHByb2Nlc3MgYW5kIG11c3Qgbm90IGJlIHJlYWRhYmxlIGJ5IGFueQotICBvdGhlciB1c2VyLgotCi0tIElzc3VlICMxODg3MzogVGhlIHRva2VuaXplIG1vZHVsZSBub3cgZGV0ZWN0cyBQeXRob24gc291cmNlIGNvZGUgZW5jb2RpbmcKLSAgb25seSBpbiBjb21tZW50IGxpbmVzLgotCi0tIElzc3VlICMxNzc2NDogRW5hYmxlIGh0dHAuc2VydmVyIHRvIGJpbmQgdG8gYSB1c2VyIHNwZWNpZmllZCBuZXR3b3JrCi0gIGludGVyZmFjZS4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1hbHRlIFN3YXJ0LgotCi0tIElzc3VlICMxODkzNzogQWRkIGFuIGFzc2VydExvZ3MoKSBjb250ZXh0IG1hbmFnZXIgdG8gdW5pdHRlc3QuVGVzdENhc2UKLSAgdG8gZW5zdXJlIHRoYXQgYSBibG9jayBvZiBjb2RlIGVtaXRzIGEgbWVzc2FnZSB1c2luZyB0aGUgbG9nZ2luZyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE3MzI0OiBGaXggaHR0cC5zZXJ2ZXIncyByZXF1ZXN0IGhhbmRsaW5nIGNhc2Ugb24gdHJhaWxpbmcgJy8nLiBQYXRjaAotICBjb250cmlidXRlZCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzE5MDE4OiBUaGUgaGVhcHEubWVyZ2UoKSBmdW5jdGlvbiBubyBsb25nZXIgc3VwcHJlc3NlcyBJbmRleEVycm9yCi0gIGluIHRoZSB1bmRlcmx5aW5nIGl0ZXJhYmxlcy4KLQotLSBJc3N1ZSAjMTg3ODQ6IFRoZSB1dWlkIG1vZHVsZSBubyBsb25nZXIgYXR0ZW1wdHMgdG8gbG9hZCBsaWJjIHZpYSBjdHlwZXMuQ0RMTAotICBpZiBhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZm91bmQgaW4gbGlidXVpZC4gIFBhdGNoIGJ5Ci0gIEV2Z2VueSBTb2xvZ3Vib3YuCi0KLS0gVGhlIDplbnZ2YXI6YFBZVEhPTkZBVUxUSEFORExFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgbm93IG9ubHkgZW5hYmxlcyB0aGUKLSAgZmF1bHRoYW5kbGVyIG1vZHVsZSBpZiB0aGUgdmFyaWFibGUgaXMgbm9uLWVtcHR5LiBTYW1lIGJlaGF2aW91ciB0aGFuIG90aGVyCi0gIHZhcmlhYmxlcyBsaWtlIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KLQotLSBJc3N1ZSAjMTU2NTUyNTogTmV3IGZ1bmN0aW9uIGBgdHJhY2ViYWNrLmNsZWFyX2ZyYW1lc2BgIHdpbGwgY2xlYXIKLSAgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhbGwgdGhlIHN0YWNrIGZyYW1lcyByZWZlcmVuY2VkIGJ5IGEgdHJhY2ViYWNrCi0gIG9iamVjdC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE4OTUyOiBGaXggcmVncmVzc2lvbiBpbiBzdXBwb3J0IGRhdGEgZG93bmxvYWRzIGludHJvZHVjZWQgd2hlbgotICB0ZXN0LnN1cHBvcnQgd2FzIGNvbnZlcnRlZCB0byBhIHBhY2thZ2UuIFJlZ3Jlc3Npb24gbm90aWNlZCBieSBaYWNoYXJ5Ci0gIFdhcmUuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTg4NzM6IElETEUgbm93IGRldGVjdHMgUHl0aG9uIHNvdXJjZSBjb2RlIGVuY29kaW5nIG9ubHkgaW4gY29tbWVudAotICBsaW5lcy4KLQotLSBJc3N1ZSAjMTg5ODg6IFRoZSAiVGFiIiBrZXkgbm93IHdvcmtzIHdoZW4gYSB3b3JkIGlzIGFscmVhZHkgYXV0b2NvbXBsZXRlZC4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNzAwMzogVW5pZmllZCB0aGUgc2l6ZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgaW8gbW9kdWxlIHdpdGggY29tbW9uCi0gIHByYWN0aWNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTg1OTY6IFN1cHBvcnQgdGhlIHVzZSBvZiBhZGRyZXNzIHNhbml0eSBjaGVja2luZyBpbiByZWNlbnQgdmVyc2lvbnMKLSAgb2YgY2xhbmcgYW5kIEdDQyBieSBhcHByb3ByaWF0ZWx5IG1hcmtpbmcga25vd24gZmFsc2UgYWxhcm1zIGluIHRoZSBzbWFsbAotICBvYmplY3QgYWxsb2NhdG9yLiBQYXRjaCBjb250cmlidXRlZCBieSBEaGlydSBLaG9saWEuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODg3MzogMnRvMyBhbmQgdGhlIGZpbmRub2NvZGluZy5weSBzY3JpcHQgbm93IGRldGVjdCBQeXRob24gc291cmNlCi0gIGNvZGUgZW5jb2Rpbmcgb25seSBpbiBjb21tZW50IGxpbmVzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wIEFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTMtMDktMDkKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4OTQyOiBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSBvdXRwdXQgd2FzIGRhbWFnZWQgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTg1NzE6IEltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNDQ2OiBmaWxlIGRlc2NyaXB0b3JzIGFuZCBmaWxlCi0gIGhhbmRsZXMgYXJlIG5vdyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZTsgYWRkIGZ1bmN0aW9ucwotICBvcy5nZXQvc2V0X2luaGVyaXRhYmxlKCksIG9zLmdldC9zZXRfaGFuZGxlX2luaGVyaXRhYmxlKCkgYW5kCi0gIHNvY2tldC5zb2NrZXQuZ2V0L3NldF9pbmhlcml0YWJsZSgpLgotCi0tIElzc3VlICMxMTYxOTogVGhlIHBhcnNlciBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG8gbm90IGVuY29kZSBVbmljb2RlCi0gIGZpbGVuYW1lcyBhbnltb3JlIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE4ODA4OiBOb24tZGFlbW9uIHRocmVhZHMgYXJlIG5vdyBhdXRvbWF0aWNhbGx5IGpvaW5lZCB3aGVuCi0gIGEgc3ViLWludGVycHJldGVyIGlzIHNodXRkb3duIChpdCB3b3VsZCBwcmV2aW91c2x5IGR1bXAgYSBmYXRhbCBlcnJvcikuCi0KLS0gUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBvbiBzeXN0ZW1zIHdpdGhvdXQgZ2V0Y3dkKCkuCi0KLS0gSXNzdWUgIzE4Nzc0OiBSZW1vdmUgbGFzdCBiaXRzIG9mIEdOVSBQVEggdGhyZWFkIGNvZGUgYW5kIHRocmVhZF9wdGguaC4KLQotLSBJc3N1ZSAjMTg3NzE6IEFkZCBvcHRpbWl6YXRpb24gdG8gc2V0IG9iamVjdCBsb29rdXBzIHRvIHJlZHVjZSB0aGUgY29zdAotICBvZiBoYXNoIGNvbGxpc2lvbnMuICBUaGUgY29yZSBpZGVhIGlzIHRvIGluc3BlY3QgYSBzZWNvbmQga2V5L2hhc2ggcGFpcgotICBmb3IgZWFjaCBjYWNoZSBsaW5lIHJldHJpZXZlZC4KLQotLSBJc3N1ZSAjMTYxMDU6IFdoZW4gYSBzaWduYWwgaGFuZGxlciBmYWlscyB0byB3cml0ZSB0byB0aGUgZmlsZSBkZXNjcmlwdG9yCi0gIHJlZ2lzdGVyZWQgd2l0aCBgYHNpZ25hbC5zZXRfd2FrZXVwX2ZkKClgYCwgcmVwb3J0IGFuIGV4Y2VwdGlvbiBpbnN0ZWFkCi0gIG9mIGlnbm9yaW5nIHRoZSBlcnJvci4KLQotLSBJc3N1ZSAjMTg3MjI6IFJlbW92ZSB1c2VzIG9mIHRoZSAicmVnaXN0ZXIiIGtleXdvcmQgaW4gQyBjb2RlLgotCi0tIElzc3VlICMxODY2NzogQWRkIG1pc3NpbmcgIkhBVkVfRkNIT1dOQVQiIHN5bWJvbCB0byBwb3NpeC5faGF2ZV9mdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE2NDk5OiBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgaXNvbGF0ZWQgbW9kZS4KLQotLSBJc3N1ZSAjMTUzMDE6IFBhcnNpbmcgZmQsIHVpZCwgYW5kIGdpZCBwYXJhbWV0ZXJzIGZvciBidWlsdGlucwotICBpbiBNb2R1bGVzL3Bvc2l4bW9kdWxlLmMgaXMgbm93IGZhciBtb3JlIHJvYnVzdC4KLQotLSBJc3N1ZSAjMTgzNjg6IFB5T1NfU3RkaW9SZWFkbGluZSgpIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgd2hlbiByZWFsbG9jKCkKLSAgZmFpbC4KLQotLSBJc3N1ZSAjMTc5MzQ6IEFkZCBhIGNsZWFyKCkgbWV0aG9kIHRvIGZyYW1lIG9iamVjdHMsIHRvIGhlbHAgY2xlYW4gdXAKLSAgZXhwZW5zaXZlIGRldGFpbHMgKGxvY2FsIHZhcmlhYmxlcykgYW5kIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMuCi0KLS0gSXNzdWUgIzE4NzgwOiAlLWZvcm1hdHRpbmcgY29kZXMgJWQsICVpLCBhbmQgJXUgbm93IHRyZWF0IGludC1zdWJjbGFzc2VzCi0gIGFzIGludCAoZGlzcGxheXMgdmFsdWUgb2YgaW50LXN1YmNsYXNzIGluc3RlYWQgb2Ygc3RyKGludC1zdWJjbGFzcykgKS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxODgwODogVGhyZWFkLmpvaW4oKSBub3cgd2FpdHMgZm9yIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBzdGF0ZSB0bwotICBiZSBkZXN0cm95ZWQgYmVmb3JlIHJldHVybmluZy4gIFRoaXMgcHJldmVudHMgdW5wcmVkaWN0YWJsZSBhYm9ydHMgaW4KLSAgUHlfRW5kSW50ZXJwcmV0ZXIoKSB3aGVuIHNvbWUgbm9uLWRhZW1vbiB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLgotCi0tIElzc3VlICMxODQ1ODogUHJldmVudCBjcmFzaGVzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbGliZWRpdC4gIEl0cyByZWFkbGluZQotICBlbXVsYXRpb24gaGFzIGNoYW5nZWQgZnJvbSAwLWJhc2VkIGluZGV4aW5nIHRvIDEtYmFzZWQgbGlrZSBnbnUgcmVhZGxpbmUuCi0KLS0gSXNzdWUgIzE4ODUyOiBIYW5kbGUgY2FzZSBvZiBgYHJlYWRsaW5lLl9fZG9jX19gYCBiZWluZyBgYE5vbmVgYCBpbiB0aGUgbmV3Ci0gIHJlYWRsaW5lIGFjdGl2YXRpb24gY29kZSBpbiBgYHNpdGUucHlgYC4KLQotLSBJc3N1ZSAjMTg2NzI6IEZpeGVkIGZvcm1hdCBzcGVjaWZpZXJzIGZvciBQeV9zc2l6ZV90IGluIGRlYnVnZ2luZyBvdXRwdXQgaW4KLSAgdGhlIF9zcmUgbW9kdWxlLgotCi0tIElzc3VlICMxODgzMDogaW5zcGVjdC5nZXRjbGFzc3RyZWUoKSBubyBsb25nZXIgcHJvZHVjZXMgZHVwbGljYXRlIGVudHJpZXMgZXZlbgotICB3aGVuIGlucHV0IGxpc3QgY29udGFpbnMgZHVwbGljYXRlcy4KLQotLSBJc3N1ZSAjMTg4Nzg6IHN1bmF1Lm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuICBCYXNlZCBvbgotICBwYXRjaGVzIGJ5IENsYXVkaXUgUG9wYSBhbmQgUi4gRGF2aWQgTXVycmF5LgotCi0tIElzc3VlICMxODkwOTogRml4IF90a2ludGVyLnRrYXBwLmludGVycGFkZHIoKSBvbiBXaW5kb3dzIDY0LWJpdCwgZG9uJ3QgY2FzdAotICA2NC1iaXQgcG9pbnRlciB0byBsb25nICgzMiBiaXRzKS4KLQotLSBJc3N1ZSAjMTg4NzY6IFRoZSBGaWxlSU8ubW9kZSBhdHRyaWJ1dGUgbm93IGJldHRlciByZWZsZWN0cyB0aGUgYWN0dWFsIG1vZGUKLSAgdW5kZXIgd2hpY2ggdGhlIGZpbGUgd2FzIG9wZW5lZC4gIFBhdGNoIGJ5IEVyaWsgQnJheS4KLQotLSBJc3N1ZSAjMTY4NTM6IEFkZCBuZXcgc2VsZWN0b3JzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTg4ODI6IEFkZCB0aHJlYWRpbmcubWFpbl90aHJlYWQoKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTg5MDE6IFRoZSBzdW5hdSBnZXRwYXJhbXMgbWV0aG9kIG5vdyByZXR1cm5zIGEgbmFtZWR0dXBsZSByYXRoZXIgdGhhbgotICBhIHBsYWluIHR1cGxlLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMxNzQ4NzogVGhlIHJlc3VsdCBvZiB0aGUgd2F2ZSBnZXRwYXJhbXMgbWV0aG9kIG5vdyBpcyBwaWNrbGVhYmxlIGFnYWluLgotICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzE4NzU2OiBvcy51cmFuZG9tKCkgbm93IHVzZXMgYSBsYXppbHktb3BlbmVkIHBlcnNpc3RlbnQgZmlsZQotICBkZXNjcmlwdG9yLCBzbyBhcyB0byBhdm9pZCB1c2luZyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4KLSAgcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotCi0tIElzc3VlICMxODQxODogQWZ0ZXIgZm9yaygpLCByZWluaXQgYWxsIHRocmVhZHMgc3RhdGVzLCBub3Qgb25seSBhY3RpdmUgb25lcy4KLSAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCi0KLS0gSXNzdWUgIzE3OTc0OiBTd2l0Y2ggdW5pdHRlc3QgZnJvbSB1c2luZyBnZXRvcHQgdG8gdXNpbmcgYXJncGFyc2UuCi0KLS0gSXNzdWUgIzExNzk4OiBUZXN0U3VpdGUgbm93IGRyb3BzIHJlZmVyZW5jZXMgdG8gb3duIHRlc3RzIGFmdGVyIGV4ZWN1dGlvbi4KLQotLSBJc3N1ZSAjMTY2MTE6IGh0dHAuY29va2llIG5vdyBjb3JyZWN0bHkgcGFyc2VzIHRoZSAnc2VjdXJlJyBhbmQgJ2h0dHBvbmx5JwotICBjb29raWUgZmxhZ3MuCi0KLS0gSXNzdWUgIzExOTczOiBGaXggYSBwcm9ibGVtIGluIGtldmVudC4gVGhlIGZsYWdzIGFuZCBmZmxhZ3MgZmllbGRzIGFyZSBub3cKLSAgcHJvcGVybHkgaGFuZGxlZCBhcyB1bnNpZ25lZC4KLQotLSBJc3N1ZSAjMTg4MDc6IGBgcHl2ZW52YGAgbm93IHRha2VzIGEgLS1jb3BpZXMgYXJndW1lbnQgYWxsb3dpbmcgY29waWVzCi0gIGluc3RlYWQgb2Ygc3ltbGlua3MgZXZlbiB3aGVyZSBzeW1saW5rcyBhcmUgYXZhaWxhYmxlIGFuZCB0aGUgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMTg1Mzg6IGBgcHl0aG9uIC1tIGRpc2BgIG5vdyB1c2VzIGFyZ3BhcnNlIGZvciBhcmd1bWVudCBwcm9jZXNzaW5nLgotICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5LgotCi0tIElzc3VlICMxODM5NDogQ2xvc2UgY2dpLkZpZWxkU3RvcmFnZSdzIG9wdGlvbmFsIGZpbGUuCi0KLS0gSXNzdWUgIzE3NzAyOiBPbiBlcnJvciwgb3MuZW52aXJvbmIgbm93IHN1cHByZXNzZXMgdGhlIGV4Y2VwdGlvbiBjb250ZXh0Ci0gIHdoZW4gcmFpc2luZyBhIG5ldyBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBrZXkuCi0KLS0gSXNzdWUgIzE2ODA5OiBGaXhlZCBzb21lIHRraW50ZXIgaW5jb21wYWJpbGl0aWVzIHdpdGggVGNsL1RrIDguNi4KLQotLSBJc3N1ZSAjMTY4MDk6IFRraW50ZXIncyBzcGxpdGxpc3QoKSBhbmQgc3BsaXQoKSBtZXRob2RzIG5vdyBhY2NlcHQgVGNsX09iagotICBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTgzMjQ6IHNldF9wYXlsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBiaW5hcnkgaW5wdXQuICBUaGlzIGFsc28KLSAgc3VwZXJzZWRlcyB0aGUgcHJldmlvdXMgZml4ZXMgZm9yICMxNDM2MCwgIzE3MTcsIGFuZCAjMTY1NjQuCi0KLS0gSXNzdWUgIzE4Nzk0OiBBZGQgYSBmaWxlbm8oKSBtZXRob2QgYW5kIGEgY2xvc2VkIGF0dHJpYnV0ZSB0byBzZWxlY3QuZGV2cG9sbAotICBvYmplY3RzLgotCi0tIElzc3VlICMxNzExOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBwcm9jZXNzaW5nIGxhcmdlIHN0cmluZ3MgYW5kIHR1cGxlcwotICBpbiB0aGUgdGtpbnRlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE4NzQ3OiBSZS1zZWVkIE9wZW5TU0wncyBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYWZ0ZXIgZm9yay4KLSAgQSBwdGhyZWFkX2F0Zm9yaygpIHBhcmVudCBoYW5kbGVyIGlzIHVzZWQgdG8gc2VlZCB0aGUgUFJORyB3aXRoIHBpZCwgdGltZQotICBhbmQgc29tZSBzdGFjayBkYXRhLgotCi0tIElzc3VlICM4ODY1OiBDb25jdXJyZW50IGludm9jYXRpb24gb2Ygc2VsZWN0LnBvbGwucG9sbCgpIG5vdyByYWlzZXMgYQotICBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLiAgUGF0Y2ggYnkgQ2hyaXN0aWFuIFNjaHViZXJ0LgotCi0tIElzc3VlICMxODc3NzogVGhlIHNzbCBtb2R1bGUgbm93IHVzZXMgdGhlIG5ldyBDUllQVE9fVEhSRUFESUQgQVBJIG9mCi0gIE9wZW5TU0wgMS4wLjArIGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgQ1JZUFRPIGlkIGNhbGxiYWNrIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxODc2ODogQ29ycmVjdCBkb2Mgc3RyaW5nIG9mIFJBTkRfZWRnKCkuIFBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTgxNzg6IEZpeCBjdHlwZXMgb24gQlNELiBkbG1hbGxvYy5jIHdhcyBjb21waWxlZCB0d2ljZSB3aGljaCBicm9rZQotICBtYWxsb2Mgd2VhayBzeW1ib2xzLgotCi0tIElzc3VlICMxODcwOTogRml4IENWRS0yMDEzLTQyMzguIFRoZSBTU0wgbW9kdWxlIG5vdyBoYW5kbGVzIE5VTEwgYnl0ZXMKLSAgaW5zaWRlIHN1YmplY3RBbHROYW1lIGNvcnJlY3RseS4gRm9ybWVybHkgdGhlIG1vZHVsZSBoYXMgdXNlZCBPcGVuU1NMJ3MKLSAgR0VORVJBTF9OQU1FX3ByaW50KCkgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgQVNOLjEKLSAgc3RyaW5ncyBmb3IgYGByZmM4MjJOYW1lYGAgKGVtYWlsKSwgYGBkTlNOYW1lYGAgKEROUykgYW5kCi0gIGBgdW5pZm9ybVJlc291cmNlSWRlbnRpZmllcmBgIChVUkkpLgotCi0tIElzc3VlICMxODcwMTogUmVtb3ZlIHN1cHBvcnQgb2Ygb2xkIENQeXRob24gdmVyc2lvbnMgKDwzLjApIGZyb20gQyBjb2RlLgotCi0tIElzc3VlICMxODc1NjogSW1wcm92ZSBlcnJvciByZXBvcnRpbmcgaW4gb3MudXJhbmRvbSgpIHdoZW4gdGhlIGZhaWx1cmUKLSAgaXMgZHVlIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gL2Rldi91cmFuZG9tIG5vdCBleGlzdGluZyAoZm9yIGV4YW1wbGUsCi0gIGV4aGF1c3RpbmcgdGhlIGZpbGUgZGVzY3JpcHRvciBsaW1pdCkuCi0KLS0gSXNzdWUgIzE4NjczOiBBZGQgT19UTVBGSUxFIHRvIG9zIG1vZHVsZS4gT19UTVBGSUxFIHJlcXVpcmVzIExpbnV4IGtlcm5lbAotICAzLjExIG9yIG5ld2VyLiBJdCdzIG9ubHkgZGVmaW5lZCBvbiBzeXN0ZW0gd2l0aCAzLjExIHVhcGkgaGVhZGVycywgdG9vLgotCi0tIElzc3VlICMxODUzMjogQ2hhbmdlIHRoZSBidWlsdGluIGhhc2ggYWxnb3JpdGhtcycgbmFtZXMgdG8gbG93ZXIgY2FzZSBuYW1lcwotICBhcyBwcm9taXNlZCBieSBoYXNobGliJ3MgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjODcxMzogYWRkIG5ldyBzcHdhbiBhbmQgZm9ya3NlcnZlciBzdGFydCBtZXRob2RzLCBhbmQgbmV3IGZ1bmN0aW9ucwotICBnZXRfYWxsX3N0YXJ0X21ldGhvZHMsIGdldF9zdGFydF9tZXRob2QsIGFuZCBzZXRfc3RhcnRfbWV0aG9kLCB0bwotICBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzE4NDA1OiBJbXByb3ZlIHRoZSBlbnRyb3B5IG9mIGNyeXB0Lm1rc2FsdCgpLgotCi0tIElzc3VlICMxMjAxNTogVGhlIHRlbXBmaWxlIG1vZHVsZSBub3cgdXNlcyBhIHN1ZmZpeCBvZiA4IHJhbmRvbSBjaGFyYWN0ZXJzCi0gIGluc3RlYWQgb2YgNiwgdG8gcmVkdWNlIHRoZSByaXNrIG9mIGZpbGVuYW1lIGNvbGxpc2lvbi4gVGhlIGVudHJvcHkgd2FzCi0gIHJlZHVjZWQgd2hlbiB1cHBlcmNhc2UgbGV0dGVycyB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUgY2hhcnNldCB1c2VkIHRvIGdlbmVyYXRlCi0gIHJhbmRvbSBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxODU4NTogQWRkIDpmdW5jOmB0ZXh0d3JhcC5zaG9ydGVuYCB0byBjb2xsYXBzZSBhbmQgdHJ1bmNhdGUgYQotICBwaWVjZSBvZiB0ZXh0IHRvIGEgZ2l2ZW4gbGVuZ3RoLgotCi0tIElzc3VlICMxODU5ODogVHdlYWsgZXhjZXB0aW9uIG1lc3NhZ2UgZm9yIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgdG8KLSAgaW5jbHVkZSB0aGUgbW9kdWxlIG5hbWUgd2hlbiBhIGtleSBhcmd1bWVudCBpcyBtaXNzaW5nLgotCi0tIElzc3VlICMxOTE1MTogRml4IGRvY3N0cmluZyBhbmQgdXNlIG9mIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpIHRvCi0gIHJlZmxlY3QgMi10dXBsZXMuCi0KLS0gSXNzdWUgIzE5MTUyOiBBZGQgRXh0ZW5zaW9uRmlsZUxvYWRlci5nZXRfZmlsZW5hbWUoKS4KLQotLSBJc3N1ZSAjMTg2NzY6IENoYW5nZSAncG9zaXRpdmUnIHRvICdub24tbmVnYXRpdmUnIGluIHF1ZXVlLnB5IHB1dCBhbmQgZ2V0Ci0gIGRvY3N0cmluZ3MgYW5kIFZhbHVlRXJyb3IgbWVzc2FnZXMuIFBhdGNoIGJ5IFpob25neXVlIEx1bwotCi0tIEZpeCByZWZjb3VudGluZyBpc3N1ZSB3aXRoIGV4dGVuc2lvbiB0eXBlcyBpbiB0a2ludGVyLgotCi0tIElzc3VlICM4MTEyOiB4bG1ycGMuc2VydmVyJ3MgRG9jWE1MUlBDU2VydmVyIHNlcnZlciBubyBsb25nZXIgcmFpc2VzIGFuIGVycm9yCi0gIGlmIG1ldGhvZHMgaGF2ZSBhbm5vdGF0aW9uczsgaXQgbm93IGNvcnJlY3RseSBkaXNwbGF5cyB0aGUgYW5ub3RhdGlvbnMuCi0KLS0gSXNzdWUgIzE4NjAwOiBBZGRlZCBwb2xpY3kgYXJndW1lbnQgdG8gZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZywKLSAgYW5kIGFzX2J5dGVzIGFuZCBfX2J5dGVzX18gbWV0aG9kcyB0byBNZXNzYWdlLgotCi0tIElzc3VlICMxODY3MTogT3V0cHV0IG1vcmUgaW5mb3JtYXRpb24gd2hlbiBsb2dnaW5nIGV4Y2VwdGlvbnMgb2NjdXIuCi0KLS0gSXNzdWUgIzE4NjIxOiBQcmV2ZW50IHRoZSBzaXRlIG1vZHVsZSdzIHBhdGNoZWQgYnVpbHRpbnMgZnJvbSBrZWVwaW5nCi0gIHRvbyBtYW55IHJlZmVyZW5jZXMgYWxpdmUgZm9yIHRvbyBsb25nLgotCi0tIElzc3VlICM0ODg1OiBBZGQgd2Vha3JlZiBzdXBwb3J0IHRvIG1tYXAgb2JqZWN0cy4gIFBhdGNoIGJ5IFZhbGVyaWUgTGFtYmVydC4KLQotLSBJc3N1ZSAjODg2MDogRml4ZWQgcm91bmRpbmcgaW4gdGltZWRlbHRhIGNvbnN0cnVjdG9yLgotCi0tIElzc3VlICMxODg0OTogRml4ZWQgYSBXaW5kb3dzLXNwZWNpZmljIHRlbXBmaWxlIGJ1ZyB3aGVyZSBjb2xsaXNpb24gd2l0aCBhbgotICBleGlzdGluZyBkaXJlY3RvcnkgY2F1c2VkIG1rc3RlbXAgYW5kIHJlbGF0ZWQgQVBJcyB0byBmYWlsIGluc3RlYWQgb2YKLSAgcmV0cnlpbmcuIFJlcG9ydCBhbmQgZml4IGJ5IFZsYWQgU2hjaGVyYmluYS4KLQotLSBJc3N1ZSAjMTg5MjA6IGFyZ3BhcnNlJ3MgZGVmYXVsdCBkZXN0aW5hdGlvbiBmb3IgdGhlIHZlcnNpb24gYWN0aW9uICgtdiwKLSAgLS12ZXJzaW9uKSBoYXMgYWxzbyBiZWVuIGNoYW5nZWQgdG8gc3Rkb3V0LCB0byBtYXRjaCB0aGUgUHl0aG9uIGV4ZWN1dGFibGUuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxODYyMzogRmFjdG9yIG91dCB0aGUgX1N1cHByZXNzQ29yZUZpbGVzIGNvbnRleHQgbWFuYWdlciBpbnRvCi0gIHRlc3Quc3VwcG9ydC4gIFBhdGNoIGJ5IFZhbGVyaWUgTGFtYmVydC4KLQotLSBJc3N1ZSAjMTIwMzc6IEZpeCB0ZXN0X2VtYWlsIGZvciBkZXNrdG9wIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE1NTA3OiB0ZXN0X3N1YnByb2Nlc3MncyB0ZXN0X3NlbmRfc2lnbmFsIGNvdWxkIGZhaWwgaWYgdGhlIHRlc3QKLSAgcnVubmVyIHdlcmUgcnVuIGluIGFuIGVudmlyb25tZW50IHdoZXJlIHRoZSBwcm9jZXNzIGluaGVyaXRlZCBhbiBpZ25vcmUKLSAgc2V0dGluZyBmb3IgU0lHSU5ULiAgUmVzdG9yZSB0aGUgU0lHSU5UIGhhbmRsZXIgdG8gdGhlIGRlc2lyZWQKLSAgS2V5Ym9hcmRJbnRlcnJ1cHQgcmFpc2luZyBvbmUgZHVyaW5nIHRoYXQgdGVzdC4KLQotLSBJc3N1ZSAjMTY3OTk6IFN3aXRjaGVkIGZyb20gZ2V0b3B0IHRvIGFyZ3BhcnNlIHN0eWxlIGluIHJlZ3J0ZXN0J3MgYXJndW1lbnQKLSAgcGFyc2luZy4gIEFkZGVkIG1vcmUgdGVzdHMgZm9yIHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZy4KLQotLSBJc3N1ZSAjMTg3OTI6IFVzZSAiMTI3LjAuMC4xIiBvciAiOjoxIiBpbnN0ZWFkIG9mICJsb2NhbGhvc3QiIGFzIG11Y2ggYXMKLSAgcG9zc2libGUsIHNpbmNlICJsb2NhbGhvc3QiIGdvZXMgdGhyb3VnaCBhIEROUyBsb29rdXAgdW5kZXIgcmVjZW50IFdpbmRvd3MKLSAgdmVyc2lvbnMuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTg0ODk6IEFkZCB0ZXN0cyBmb3IgU2VhcmNoRW5naW5lLiBPcmlnaW5hbCBwYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg3NDM6IEZpeCByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGVudCAiU3RyaW5nSU8iIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTg3ODM6IFJlbW92ZWQgZXhpc3RpbmcgbWVudGlvbnMgb2YgUHl0aG9uIGxvbmcgdHlwZSBpbiBkb2NzdHJpbmdzLAotICBlcnJvciBtZXNzYWdlcyBhbmQgY29tbWVudHMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNTg0OiBQcm92aWRlIGNvbmZpZ3VyZSBvcHRpb25zIHRvIG92ZXJyaWRlIGRlZmF1bHQgc2VhcmNoIHBhdGhzIGZvcgotICBUY2wgYW5kIFRrIHdoZW4gYnVpbGRpbmcgX3RraW50ZXIuCi0KLS0gSXNzdWUgIzE1NjYzOiBUY2wvVGsgOC41LjE0IGlzIG5vdyBpbmNsdWRlZCB3aXRoIHRoZSBPUyBYIDEwLjYrIDY0LS8zMi1iaXQKLSAgaW5zdGFsbGVyLiAgSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgdmVyc2lvbiBvZgotICBUY2wvVGsgOC41IHRvIHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtcyBpbiB0aGUgQXBwbGUtc3VwcGxpZWQgVGNsL1RrIDguNQotICBzaGlwcGVkIGluIE9TIFggMTAuNiBhbmQgbGF0ZXIgcmVsZWFzZXMuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODkyMjogTm93IFRoZSBMaWIvc210cGQucHkgYW5kIFRvb2xzL2kxOG4vbXNnZm10LnB5IHNjcmlwdHMgd3JpdGUKLSAgdGhlaXIgdmVyc2lvbiBzdHJpbmdzIHRvIHN0ZG91dCwgYW5kIG5vdCB0byBzZGVyci4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMCBBbHBoYSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDEzLTA4LTAzCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjc0MTogRml4IGFuIGVycm9yIHJlcG9ydGluZyBpbiBpbnQoKS4KLQotLSBJc3N1ZSAjMTc4OTk6IEZpeCByYXJlIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIG9zLmxpc3RkaXIoKS4KLQotLSBJc3N1ZSAjMTAyNDE6IENsZWFyIGV4dGVuc2lvbiBtb2R1bGUgZGljdCBjb3BpZXMgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0gIFBhdGNoIGJ5IE5laWwgU2NoZW1lbmF1ZXIsIG1pbmltYWxseSBtb2RpZmllZC4KLQotLSBJc3N1ZSAjOTAzNTogaXNtb3VudCBub3cgcmVjb2duaXNlcyB2b2x1bWVzIG1vdW50ZWQgYmVsb3cgYSBkcml2ZSByb290Ci0gIG9uIFdpbmRvd3MuIE9yaWdpbmFsIHBhdGNoIGJ5IEF0c3VvIElzaGltb3RvLgotCi0tIElzc3VlICMxODIxNDogSW1wcm92ZSBmaW5hbGl6YXRpb24gb2YgUHl0aG9uIG1vZHVsZXMgdG8gYXZvaWQgc2V0dGluZwotICB0aGVpciBnbG9iYWxzIHRvIE5vbmUsIGluIG1vc3QgY2FzZXMuCi0KLS0gSXNzdWUgIzE4MTEyOiBQRVAgNDQyIGltcGxlbWVudGF0aW9uIChzYWZlIG9iamVjdCBmaW5hbGl6YXRpb24pLgotCi0tIElzc3VlICMxODU1MjogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIFB5QXJlbmFfQWRkUHlPYmplY3QoKSBpbgotICBvYmoyYXN0X29iamVjdCgpLgotCi0tIElzc3VlICMxODU2MDogRml4IHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gc3VtKCkuCi0KLS0gSXNzdWUgIzE4NTIwOiBBZGQgYSBuZXcgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoKSBmdW5jdGlvbiwgc2FtZSB0aGFuCi0gIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoKSBleGNlcHQgdGhhdCBpdCBoYXMgYSByZXR1cm4gdmFsdWUgKDAgb24gc3VjY2VzcywKLSAgLTEgb24gZXJyb3IpLgotCi0tIElzc3VlICMxNTkwNTogRml4IHRoZW9yZXRpY2FsIGJ1ZmZlciBvdmVyZmxvdyBpbiBoYW5kbGluZyBvZiBzeXMuYXJndlswXSwKLSAgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBpZiB0aGUgb3BlcmF0aW9uIHN5c3RlbSBkb2VzIG5vdCBvYmV5IE1BWFBBVEhMRU4uCi0KLS0gSXNzdWUgIzE4NDA4OiBGaXggbWFueSB2YXJpb3VzIGJ1Z3MgaW4gY29kZSBoYW5kbGluZyBlcnJvcnMsIGVzcGVjaWFsbHkKLSAgb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSAoTWVtb3J5RXJyb3IpLgotCi0tIElzc3VlICMxODM0NDogRml4IHBvdGVudGlhbCByZWYtbGVha3MgaW4gX2J1ZmZlcmVkcmVhZGVyX3JlYWRfYWxsKCkuCi0KLS0gSXNzdWUgIzE4MzQyOiBVc2UgdGhlIHJlcHIgb2YgYSBtb2R1bGUgbmFtZSB3aGVuIGFuIGltcG9ydCBmYWlscyB3aGVuIHVzaW5nCi0gIGBgZnJvbSAuLi4gaW1wb3J0IC4uLmBgLgotCi0tIElzc3VlICMxNzg3MjogRml4IGEgc2VnZmF1bHQgaW4gbWFyc2hhbC5sb2FkKCkgd2hlbiBpbnB1dCBzdHJlYW0gcmV0dXJucwotICBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLgotCi0tIElzc3VlICMxODMzODogYHB5dGhvbiAtLXZlcnNpb25gIG5vdyBwcmludHMgdmVyc2lvbiBzdHJpbmcgdG8gc3Rkb3V0LCBhbmQKLSAgbm90IHRvIHN0ZGVyci4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcgYW5kIE1pY2hhZWwgRGlja2Vucy4KLQotLSBJc3N1ZSAjMTg0MjY6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gQyBleHRlbnNpb24gaW1wb3J0IHdoZW4KLSAgUHlNb2R1bGVfR2V0RGVmKCkgcmV0dXJucyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTcyMDY6IE9uIFdpbmRvd3MsIGluY3JlYXNlIHRoZSBzdGFjayBzaXplIGZyb20gMiBNQiB0byA0LjIgTUIgdG8gZml4Ci0gIGEgc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIG1hcnNoYWwgbW9kdWxlIChmaXggYSBjcmFzaCBpbiB0ZXN0X21hcnNoYWwpLgotICBQYXRjaCB3cml0dGVuIGJ5IEplcmVteSBLbG90aC4KLQotLSBJc3N1ZSAjMzMyOTogSW1wbGVtZW50IHRoZSBQRVAgNDQ1OiBBZGQgbmV3IEFQSXMgdG8gY3VzdG9taXplIFB5dGhvbiBtZW1vcnkKLSAgYWxsb2NhdG9ycy4KLQotLSBJc3N1ZSAjMTgzMjg6IFJlb3JkZXIgb3BzIGluIFB5VGhyZWFkU3RhdGVfRGVsZXRlKigpIGZ1bmN0aW9ucy4gTm93IHRoZQotICB0c3RhdGUgaXMgZmlyc3QgcmVtb3ZlZCBmcm9tIFRMUyBhbmQgdGhlbiBkZWFsbG9jYXRlZC4KLQotLSBJc3N1ZSAjMTM0ODM6IFVzZSBWaXJ0dWFsQWxsb2MgaW4gb2JtYWxsb2Mgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTgxODQ6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgYW5kIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIG5vdyByYWlzZQotICBPdmVyZmxvd0Vycm9yIHdoZW4gYW4gYXJndW1lbnQgb2YgJWMgZm9ybWF0IGlzIG91dCBvZiByYW5nZS4KLQotLSBJc3N1ZSAjMTgxMTE6IFRoZSBtaW4oKSBhbmQgbWF4KCkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgZGVmYXVsdCBhcmd1bWVudAotICB0byBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIHJhaXNpbmcgYSBWYWx1ZUVycm9yIG9uIGFuIGVtcHR5IHNlcXVlbmNlLgotICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIEJlcm1hbi4pCi0KLS0gSXNzdWUgIzE4MTM3OiBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdyBvbiBwcmVjaXNpb24gaW4gZmxvYXQuX19mb3JtYXRfXygpCi0gIGFuZCBjb21wbGV4Ll9fZm9ybWF0X18oKS4KLQotLSBJc3N1ZSAjMTgxODM6IEZpeCB2YXJpb3VzIHVuaWNvZGUgb3BlcmF0aW9ucyBvbiBzdHJpbmdzIHdpdGggbGFyZ2UgdW5pY29kZQotICBjb2RlcG9pbnRzLgotCi0tIElzc3VlICMxODE4MDogRml4IHJlZiBsZWFrIGluIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cygpLgotCi0tIElzc3VlICMxODAzODogU3ludGF4RXJyb3IgcmFpc2VkIGR1cmluZyBjb21waWxhdGlvbiBzb3VyY2VzIHdpdGggaWxsZWdhbAotICBlbmNvZGluZyBub3cgYWx3YXlzIGNvbnRhaW5zIGFuIGVuY29kaW5nIG5hbWUuCi0KLS0gSXNzdWUgIzE3OTMxOiBSZXNvbHZlIGNvbmZ1c2lvbiBvbiBXaW5kb3dzIGJldHdlZW4gcGlkcyBhbmQgcHJvY2VzcwotICBoYW5kbGVzLgotCi0tIFR3ZWFrIHRoZSBleGNlcHRpb24gbWVzc2FnZSB3aGVuIHRoZSBtYWdpYyBudW1iZXIgb3Igc2l6ZSB2YWx1ZSBpbiBhIGJ5dGVjb2RlCi0gIGZpbGUgaXMgdHJ1bmNhdGVkLgotCi0tIElzc3VlICMxNzkzMjogRml4IGFuIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgb24gV2luZG93cyA2NC1iaXQgaW4gaXRlcmF0b3JzOgotICBjaGFuZ2UgdGhlIEMgdHlwZSBvZiBzZXFpdGVyb2JqZWN0Lml0X2luZGV4IGZyb20gbG9uZyB0byBQeV9zc2l6ZV90LgotCi0tIElzc3VlICMxODA2NTogRG9uJ3Qgc2V0IF9fcGF0aF9fIHRvIHRoZSBwYWNrYWdlIG5hbWUgZm9yIGZyb3plbiBwYWNrYWdlcy4KLQotLSBJc3N1ZSAjMTgwODg6IFdoZW4gcmVsb2FkaW5nIGEgbW9kdWxlLCB1bmNvbmRpdGlvbmFsbHkgcmVzZXQgYWxsIHJlbGV2YW50Ci0gIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZSAoZS5nLiBfX25hbWVfXywgX19sb2FkZXJfXywgX19wYWNrYWdlX18sIF9fZmlsZV9fLAotICBfX2NhY2hlZF9fKS4KLQotLSBJc3N1ZSAjMTc5Mzc6IFRyeSBoYXJkZXIgdG8gY29sbGVjdCBjeWNsaWMgZ2FyYmFnZSBhdCBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjMTIzNzA6IFByZXZlbnQgY2xhc3MgYm9kaWVzIGZyb20gaW50ZXJmZXJpbmcgd2l0aCB0aGUgX19jbGFzc19fCi0gIGNsb3N1cmUuCi0KLS0gSXNzdWUgIzE3NjQ0OiBGaXggYSBjcmFzaCBpbiBzdHIuZm9ybWF0IHdoZW4gY3VybHkgYnJhY2VzIGFyZSB1c2VkIGluIHNxdWFyZQotICBicmFja2V0cy4KLQotLSBJc3N1ZSAjMTcyMzc6IEZpeCBjcmFzaCBpbiB0aGUgQVNDSUkgZGVjb2RlciBvbiBtNjhrLgotCi0tIElzc3VlICMxNzkyNzogRnJhbWUgb2JqZWN0cyBrZXB0IGFyZ3VtZW50cyBhbGl2ZSBpZiB0aGV5IGhhZCBiZWVuCi0gIGNvcGllZCBpbnRvIGEgY2VsbCwgZXZlbiBpZiB0aGUgY2VsbCB3YXMgY2xlYXJlZC4KLQotLSBJc3N1ZSAjMTU0NTQ2MzogQXQgc2h1dGRvd24sIGRlZmVyIGZpbmFsaXphdGlvbiBvZiBjb2RlYyBtb2R1bGVzIHNvCi0gIHRoYXQgc3RkZXJyIHJlbWFpbnMgdXNhYmxlLgotCi0tIElzc3VlICM3MzMwOiBJbXBsZW1lbnQgd2lkdGggYW5kIHByZWNpc2lvbiAoZXg6ICIlNS4zcyIpIGZvciB0aGUgZm9ybWF0Ci0gIHN0cmluZyBvZiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGZ1bmN0aW9uLCBvcmlnaW5hbCBwYXRjaCB3cml0dGVuIGJ5IFlzaiBSYXkuCi0KLS0gSXNzdWUgIzE1NDU0NjM6IEdsb2JhbCB2YXJpYWJsZXMgY2F1Z2h0IGluIHJlZmVyZW5jZSBjeWNsZXMgYXJlIG5vdwotICBnYXJiYWdlLWNvbGxlY3RlZCBhdCBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjMTcwOTQ6IENsZWFyIHN0YWxlIHRocmVhZCBzdGF0ZXMgYWZ0ZXIgZm9yaygpLiAgTm90ZSB0aGF0IHRoaXMKLSAgaXMgYSBwb3RlbnRpYWxseSBkaXNydXB0aXZlIGNoYW5nZSBzaW5jZSBpdCBtYXkgcmVsZWFzZSBzb21lIHN5c3RlbQotICByZXNvdXJjZXMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHJlbWFpbiBwZXJwZXR1YWxseSBhbGl2ZSAoZS5nLiBkYXRhYmFzZQotICBjb25uZWN0aW9ucyBrZXB0IGluIHRocmVhZC1sb2NhbCBzdG9yYWdlKS4KLQotLSBJc3N1ZSAjMTc0MDg6IEF2b2lkIHVzaW5nIGFuIG9ic29sZXRlIGluc3RhbmNlIG9mIHRoZSBjb3B5cmVnIG1vZHVsZSB3aGVuCi0gIHRoZSBpbnRlcnByZXRlciBpcyBzaHV0ZG93biBhbmQgdGhlbiBzdGFydGVkIGFnYWluLgotCi0tIElzc3VlICM1ODQ1OiBFbmFibGUgdGFiLWNvbXBsZXRpb24gaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIGJ5Ci0gIGRlZmF1bHQsIHRoYW5rcyB0byBhIG5ldyBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXy4KLQotLSBJc3N1ZSAjMTcxMTUsMTcxMTY6IE1vZHVsZSBpbml0aWFsaXphdGlvbiBub3cgaW5jbHVkZXMgc2V0dGluZyBfX3BhY2thZ2VfXyBhbmQKLSAgX19sb2FkZXJfXyBhdHRyaWJ1dGVzIHRvIE5vbmUuCi0KLS0gSXNzdWUgIzE3ODUzOiBFbnN1cmUgbG9jYWxzIG9mIGEgY2xhc3MgdGhhdCBzaGFkb3cgZnJlZSB2YXJpYWJsZXMgYWx3YXlzIHdpbgotICBvdmVyIHRoZSBjbG9zdXJlcy4KLQotLSBJc3N1ZSAjMTc4NjM6IEluIHRoZSBpbnRlcmFjdGl2ZSBjb25zb2xlLCBkb24ndCBsb29wIGZvcmV2ZXIgaWYgdGhlIGVuY29kaW5nCi0gIGNhbid0IGJlIGZldGNoZWQgZnJvbSBzdGRpbi4KLQotLSBJc3N1ZSAjMTc4Njc6IFJhaXNlIGFuIEltcG9ydEVycm9yIGlmIF9faW1wb3J0X18gaXMgbm90IGZvdW5kIGluIF9fYnVpbHRpbnNfXy4KLQotLSBJc3N1ZSAjMTg2OTg6IEVuc3VyZSBpbXBvcnRsaWIucmVsb2FkKCkgcmV0dXJucyB0aGUgbW9kdWxlIG91dCBvZiBzeXMubW9kdWxlcy4KLQotLSBJc3N1ZSAjMTc4NTc6IFByZXZlbnQgYnVpbGQgZmFpbHVyZXMgd2l0aCBwcmUtMy41LjAgdmVyc2lvbnMgb2Ygc3FsaXRlMywKLSAgc3VjaCBhcyB3YXMgc2hpcHBlZCB3aXRoIENlbnRvcyA1IGFuZCBNYWMgT1MgWCAxMC40LgotCi0tIElzc3VlICMxNzQxMzogc3lzLnNldHRyYWNlIGNhbGxiYWNrcyB3ZXJlIGJlaW5nIHBhc3NlZCBhIHN0cmluZyBpbnN0ZWFkIG9mIGFuCi0gIGV4Y2VwdGlvbiBpbnN0YW5jZSBmb3IgdGhlICd2YWx1ZScgZWxlbWVudCBvZiB0aGUgYXJnIHR1cGxlIGlmIHRoZSBleGNlcHRpb24KLSAgb3JpZ2luYXRlZCBmcm9tIEMgY29kZTsgbm93IGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBpcyBhbHdheXMgcHJvdmlkZWQuCi0KLS0gSXNzdWUgIzE3NzgyOiBGaXggdW5kZWZpbmVkIGJlaGF2aW91ciBvbiBwbGF0Zm9ybXMgd2hlcmUKLSAgYGBzdHJ1Y3QgdGltZXNwZWNgYCdzICJ0dl9uc2VjIiBtZW1iZXIgaXMgbm90IGEgQyBsb25nLgotCi0tIElzc3VlICMxNzcyMjogV2hlbiBsb29raW5nIHVwIF9fcm91bmRfXywgcmVzb2x2ZSBkZXNjcmlwdG9ycy4KLQotLSBJc3N1ZSAjMTYwNjE6IFNwZWVkIHVwIHN0ci5yZXBsYWNlKCkgZm9yIHJlcGxhY2luZyAxLWNoYXJhY3RlciBzdHJpbmdzLgotCi0tIElzc3VlICMxNzcxNTogRml4IHNlZ21lbnRhdGlvbiBmYXVsdCBmcm9tIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGluIGEgX190cnVuY19fCi0gIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTc2NDM6IEFkZCBfX2NhbGxiYWNrX18gYXR0cmlidXRlIHRvIHdlYWtyZWYucmVmLgotCi0tIElzc3VlICMxNjQ0NzogRml4ZWQgcG90ZW50aWFsIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHNldHRpbmcgX19uYW1lX18gb24gYQotICBjbGFzcy4KLQotLSBJc3N1ZSAjMTc2Njk6IEZpeCBjcmFzaCBpbnZvbHZpbmcgZmluYWxpemF0aW9uIG9mIGdlbmVyYXRvcnMgdXNpbmcgeWllbGQgZnJvbS4KLQotLSBJc3N1ZSAjMTQ0Mzk6IFB5dGhvbiBub3cgcHJpbnRzIHRoZSB0cmFjZWJhY2sgb24gcnVucHkgZmFpbHVyZSBhdCBzdGFydHVwLgotCi0tIElzc3VlICMxNzQ2OTogRml4IF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3MoKSBhbmQgc3lzLmdldGFsbG9jYXRlZGJsb2NrcygpCi0gIHdoZW4gcnVubmluZyBvbiB2YWxncmluZC4KLQotLSBJc3N1ZSAjMTc2MTk6IE1ha2UgaW5wdXQoKSBjaGVjayBmb3IgQ3RybC1DIGNvcnJlY3RseSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNzM1NzogQWRkIG1pc3NpbmcgdmVyYm9zaXR5IG1lc3NhZ2VzIGZvciAtdi8tdnYgdGhhdCB3ZXJlIGxvc3QgZHVyaW5nCi0gIHRoZSBpbXBvcnRsaWIgdHJhbnNpdGlvbi4KLQotLSBJc3N1ZSAjMTc2MTA6IERvbid0IHJlbHkgb24gbm9uLXN0YW5kYXJkIGJlaGF2aW9yIG9mIHRoZSBDIHFzb3J0KCkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE3MzIzOiBUaGUgIltYIHJlZnMsIFkgYmxvY2tzXSIgcHJpbnRlZCBieSBkZWJ1ZyBidWlsZHMgaGFzIGJlZW4KLSAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHdpdGggdGhlIGAtWCBzaG93cmVmY291bnRgIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTczMjg6IEZpeCBwb3NzaWJsZSByZWZsZWFrIGluIGRpY3Quc2V0ZGVmYXVsdC4KLQotLSBJc3N1ZSAjMTcyNzU6IENvcnJlY3RlZCBjbGFzcyBuYW1lIGluIGluaXQgZXJyb3IgbWVzc2FnZXMgb2YgdGhlIEMgdmVyc2lvbiBvZgotICBCdWZmZXJlZFdyaXRlciBhbmQgQnVmZmVyZWRSYW5kb20uCi0KLS0gSXNzdWUgIzc5NjM6IEZpeGVkIG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB0aGF0IGlzc3VlZCB3aGVuIG9iamVjdCBpcwotICBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzg3NDU6IFNtYWxsIHNwZWVkIHVwIHppcGltcG9ydCBvbiBXaW5kb3dzLiBQYXRjaCBieSBDYXRhbGluIElhY29iLgotCi0tIElzc3VlICM1MzA4OiBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gbWFyc2hhbGxpbmcgdG9vIGxhcmdlIG9iamVjdCAoYSBzZXF1ZW5jZQotICB3aXRoIHNpemUgPj0gMioqMzEpLCBpbnN0ZWFkIG9mIHByb2R1Y2luZyBpbGxlZ2FsIG1hcnNoYWwgZGF0YS4KLQotLSBJc3N1ZSAjMTI5ODM6IEJ5dGVzIGxpdGVyYWxzIHdpdGggaW52YWxpZCBgYFx4YGAgZXNjYXBlIG5vdyByYWlzZSBhIFN5bnRheEVycm9yCi0gIGFuZCBhIGZ1bGwgdHJhY2ViYWNrIGluY2x1ZGluZyBsaW5lIG51bWJlci4KLQotLSBJc3N1ZSAjMTY5Njc6IEluIGZ1bmN0aW9uIGRlZmluaXRpb24sIGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdHMgYmVmb3JlCi0gIGtleXdvcmQtb25seSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTcxNzM6IFJlbW92ZSB1c2VzIG9mIGxvY2FsZS1kZXBlbmRlbnQgQyBmdW5jdGlvbnMgKGlzYWxwaGEoKSBldGMuKQotICBpbiB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzE3MTM3OiBXaGVuIGEgVW5pY29kZSBzdHJpbmcgaXMgcmVzaXplZCwgdGhlIGludGVybmFsIHdpZGUgY2hhcmFjdGVyCi0gIHN0cmluZyAod3N0cikgZm9ybWF0IGlzIG5vdyBjbGVhcmVkLgotCi0tIElzc3VlICMxNzA0MzogVGhlIHVuaWNvZGUtaW50ZXJuYWwgZGVjb2RlciBubyBsb25nZXIgcmVhZCBwYXN0IHRoZSBlbmQgb2YKLSAgaW5wdXQgYnVmZmVyLgotCi0tIElzc3VlICMxNzA5ODogQWxsIG1vZHVsZXMgbm93IGhhdmUgX19sb2FkZXJfXyBzZXQgZXZlbiBpZiB0aGV5IHByZS1leGlzdCB0aGUKLSAgYm9vdHN0cmFwcGluZyBvZiBpbXBvcnRsaWIuCi0KLS0gSXNzdWUgIzE2OTc5OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVncyBpbiB0aGUgdW5pY29kZS1lc2NhcGUtZGVjb2RlIGRlY29kZXIuCi0KLS0gSXNzdWUgIzE2NzcyOiBUaGUgYmFzZSBhcmd1bWVudCB0byB0aGUgaW50IGNvbnN0cnVjdG9yIG5vIGxvbmdlciBhY2NlcHRzCi0gIGZsb2F0cywgb3Igb3RoZXIgbm9uLWludGVnZXIgb2JqZWN0cyB3aXRoIGFuIF9faW50X18gbWV0aG9kLiAgT2JqZWN0cwotICB3aXRoIGFuIF9faW5kZXhfXyBtZXRob2QgYXJlIG5vdyBhY2NlcHRlZC4KLQotLSBJc3N1ZSAjMTAxNTY6IEluIHRoZSBpbnRlcnByZXRlcidzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB1bmljb2RlIGdsb2JhbHMKLSAgYXJlIG5vdyBpbml0aWFsaXplZCBkeW5hbWljYWxseSBhcyBuZWVkZWQuCi0KLS0gSXNzdWUgIzE2OTgwOiBGaXggcHJvY2Vzc2luZyBvZiBlc2NhcGVkIG5vbi1hc2NpaSBieXRlcyBpbiB0aGUKLSAgdW5pY29kZS1lc2NhcGUtZGVjb2RlIGRlY29kZXIuCi0KLS0gSXNzdWUgIzE2OTc1OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVnIGluIHRoZSBlc2NhcGUtZGVjb2RlIGJ5dGVzIGRlY29kZXIuCi0KLS0gSXNzdWUgIzE0ODUwOiBOb3cgYSBjaGFybWFwIGRlY29kZXIgdHJlYXRzIFUrRkZGRSBhcyAidW5kZWZpbmVkIG1hcHBpbmciCi0gIGluIGFueSBtYXBwaW5nLCBub3Qgb25seSBpbiBhIHN0cmluZy4KLQotLSBJc3N1ZSAjMTY2MTM6IEFkZCAqbSogYXJndW1lbnQgdG8gYGBjb2xsZWN0aW9ucy5DaGFpbm1hcC5uZXdfY2hpbGRgYCB0bwotICBhbGxvdyB0aGUgbmV3IGNoaWxkIG1hcCB0byBiZSBzcGVjaWZpZWQgZXhwbGljaXRseS4KLQotLSBJc3N1ZSAjMTY3MzA6IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciBub3cgbm8gbG9uZ2VycyByYWlzZXMgYW4KLSAgZXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIHBvcHVsYXRlIGl0cyBjYWNoZSBhbmQgaXQgZmluZHMgb3V0IHRoZSBkaXJlY3RvcnkgaXMKLSAgdW5yZWFkYWJsZSBvciBoYXMgdHVybmVkIGludG8gYSBmaWxlLiBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5Ci0gIERhdmlkIFByaXRjaGFyZC4KLQotLSBJc3N1ZSAjMTY5MDY6IEZpeCBhIGxvZ2ljIGVycm9yIHRoYXQgcHJldmVudGVkIG1vc3Qgc3RhdGljIHN0cmluZ3MgZnJvbSBiZWluZwotICBjbGVhcmVkLgotCi0tIElzc3VlICMxMTQ2MTogRml4IHRoZSBpbmNyZW1lbnRhbCBVVEYtMTYgZGVjb2Rlci4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzE2ODU2OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgZnJvbSBjYWxsaW5nIHJlcHIoKSBvbiBhIGRpY3Qgd2l0aAotICBhIGtleSB3aG9zZSByZXByIHJhaXNlIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTYzNjc6IEZpeCBGaWxlSU8ucmVhZGFsbCgpIG9uIFdpbmRvd3MgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuCi0KLS0gSXNzdWUgIzE2NzYxOiBDYWxsaW5nIGludCgpIHdpdGggYmFzZSBhcmd1bWVudCBvbmx5IG5vdyByYWlzZXMgVHlwZUVycm9yLgotCi0tIElzc3VlICMxNjc1OTogU3VwcG9ydCB0aGUgZnVsbCBEV09SRCAodW5zaWduZWQgbG9uZykgcmFuZ2UgaW4gUmVnMlB5Ci0gIHdoZW4gcmV0cmlldmluZyBhIFJFR19EV09SRCB2YWx1ZS4gVGhpcyBjb3JyZWN0cyBmdW5jdGlvbnMgbGlrZQotICB3aW5yZWcuUXVlcnlWYWx1ZUV4IHRoYXQgbWF5IGhhdmUgYmVlbiByZXR1cm5pbmcgdHJ1bmNhdGVkIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTQ0MjA6IFN1cHBvcnQgdGhlIGZ1bGwgRFdPUkQgKHVuc2lnbmVkIGxvbmcpIHJhbmdlIGluIFB5MlJlZwotICB3aGVuIHBhc3NlZCBhIFJFR19EV09SRCB2YWx1ZS4gRml4ZXMgT3ZlcmZsb3dFcnJvciBpbiB3aW5yZWcuU2V0VmFsdWVFeC4KLQotLSBJc3N1ZSAjMTE5Mzk6IFNldCB0aGUgc3RfZGV2IGF0dHJpYnV0ZSBvZiBzdGF0X3Jlc3VsdCB0byBhbGxvdyBXaW5kb3dzIHRvCi0gIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcy5wYXRoLnNhbWVmaWxlL3NhbWVvcGVuZmlsZS9zYW1lc3RhdCBpbXBsZW1lbnRhdGlvbnMKLSAgdXNlZCBieSBvdGhlciBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzE2NzcyOiBUaGUgaW50KCkgY29uc3RydWN0b3IncyBzZWNvbmQgYXJndW1lbnQgKGJhc2UpIG5vIGxvbmdlcgotICBhY2NlcHRzIG5vbiBpbnRlZ2VyIHZhbHVlcy4gIENvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3IgaW4gUHl0aG9uIDIuCi0KLS0gSXNzdWUgIzE0NDcwOiBSZW1vdmUgdzl4cG9wZW4gc3VwcG9ydCBwZXIgUEVQIDExLgotCi0tIElzc3VlICM5ODU2OiBSZXBsYWNlIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2l0aCByYWlzaW5nIFR5cGVFcnJvcgotICBpbiBvYmplY3QuX19mb3JtYXRfXy4gUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICMxNjU5NzogSW4gYnVmZmVyZWQgYW5kIHRleHQgSU8sIGNhbGwgY2xvc2UoKSBvbiB0aGUgdW5kZXJseWluZyBzdHJlYW0KLSAgaWYgaW52b2tpbmcgZmx1c2goKSBmYWlscy4KLQotLSBJc3N1ZSAjMTY3MjI6IEluIHRoZSBieXRlcygpIGNvbnN0cnVjdG9yLCB0cnkgdG8gY2FsbCBfX2J5dGVzX18gb24gdGhlCi0gIGFyZ3VtZW50IGJlZm9yZSBfX2luZGV4X18uCi0KLS0gSXNzdWUgIzE2NDIxOiBsb2FkaW5nIG11bHRpcGxlIG1vZHVsZXMgZnJvbSBvbmUgc2hhcmVkIG9iamVjdCBpcyBub3cKLSAgaGFuZGxlZCBjb3JyZWN0bHkgKHByZXZpb3VzbHksIHRoZSBmaXJzdCBtb2R1bGUgbG9hZGVkIGZyb20gdGhhdCBmaWxlCi0gIHdhcyBzaWxlbnRseSByZXR1cm5lZCkuIFBhdGNoIGJ5IFbDoWNsYXYgxaBtaWxhdWVyLgotCi0tIElzc3VlICMxNjYwMjogV2hlbiBhIHdlYWtyZWYncyB0YXJnZXQgd2FzIHBhcnQgb2YgYSBsb25nIGRlYWxsb2NhdGlvbgotICBjaGFpbiwgdGhlIG9iamVjdCBjb3VsZCByZW1haW4gcmVhY2hhYmxlIHRocm91Z2ggaXRzIHdlYWtyZWYgZXZlbiB0aG91Z2gKLSAgaXRzIHJlZmNvdW50IGhhZCBkcm9wcGVkIHRvIHplcm8uCi0KLS0gSXNzdWUgIzE2NDk1OiBSZW1vdmUgZXh0cmFuZW91cyBOVUxMIGVuY29kaW5nIGNoZWNrIGZyb20gYnl0ZXNfZGVjb2RlKCkuCi0KLS0gSXNzdWUgIzE2NjE5OiBDcmVhdGUgTmFtZUNvbnN0YW50IEFTVCBjbGFzcyB0byByZXByZXNlbnQgTm9uZSwgVHJ1ZSwgYW5kIEZhbHNlCi0gIGxpdGVyYWxzLiBBcyBhIHJlc3VsdCwgdGhlc2UgY29uc3RhbnRzIGFyZSBuZXZlciBsb2FkZWQgYXQgcnVudGltZSBmcm9tCi0gIGJ1aWx0aW5zLgotCi0tIElzc3VlICMxNjQ1NTogT24gRnJlZUJTRCBhbmQgU29sYXJpcywgaWYgdGhlIGxvY2FsZSBpcyBDLCB0aGUKLSAgQVNDSUkvc3Vycm9nYXRlZXNjYXBlIGNvZGVjIGlzIG5vdyB1c2VkIChpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvCi0gIGRlY29kZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gVGhpcyBjaGFuZ2UgZml4ZXMgaW5jb25zaXN0ZW5jaWVzIHdpdGgKLSAgb3MuZnNlbmNvZGUoKSBhbmQgb3MuZnNkZWNvZGUoKSwgYmVjYXVzZSB0aGVzZSBvcGVyYXRpbmcgc3lzdGVtcyBhbm5vdW5jZSBhbgotICBBU0NJSSBsb2NhbGUgZW5jb2RpbmcsIGJ1dCBhY3R1YWxseSB1c2UgdGhlIElTTy04ODU5LTEgZW5jb2RpbmcgaW4gcHJhY3RpY2UuCi0KLS0gSXNzdWUgIzE2NTYyOiBPcHRpbWl6ZSBkaWN0IGVxdWFsaXR5IHRlc3RpbmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjU4ODogU2lsZW5jZSB1bnVzZWQtYnV0LXNldCB3YXJuaW5ncyBpbiBQeXRob24vdGhyZWFkX3B0aHJlYWQKLQotLSBJc3N1ZSAjMTY1OTI6IHN0cmluZ2xpYl9ieXRlc19qb2luIGRvZXNuJ3QgcmFpc2UgTWVtb3J5RXJyb3Igb24gYWxsb2NhdGlvbgotICBmYWlsdXJlLgotCi0tIElzc3VlICMxNjU0NjogRml4OiBhc3QuWWllbGRGcm9tIGFyZ3VtZW50IGlzIG5vdyBtYW5kYXRvcnkuCi0KLS0gSXNzdWUgIzE2NTE0OiBGaXggcmVncmVzc2lvbiBjYXVzaW5nIGEgdHJhY2ViYWNrIHdoZW4gc3lzLnBhdGhbMF0gaXMgTm9uZQotICAoYWN0dWFsbHksIGFueSBub24tc3RyaW5nIG9yIG5vbi1ieXRlcyB0eXBlKS4KLQotLSBJc3N1ZSAjMTYzMDY6IEZpeCBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyB3aGVuIHVua25vd24gY29tbWFuZCBsaW5lCi0gIHBhcmFtZXRlcnMgd2hlcmUgcGFzc2VkIHRvIHRoZSBpbnRlcnByZXRlci4gIFBhdGNoIGJ5IEhpZXUgTmd1eWVuLgotCi0tIElzc3VlICMxNjIxNTogRml4IHBvdGVudGlhbCBkb3VibGUgbWVtb3J5IGZyZWUgaW4gc3RyLnJlcGxhY2UoKS4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2MjkwOiBBIGZsb2F0IHJldHVybiB2YWx1ZSBmcm9tIHRoZSBfX2NvbXBsZXhfXyBzcGVjaWFsIG1ldGhvZCBpcyBubwotICBsb25nZXIgYWNjZXB0ZWQgaW4gdGhlIGNvbXBsZXgoKSBjb25zdHJ1Y3Rvci4KLQotLSBJc3N1ZSAjMTY0MTY6IE9uIE1hYyBPUyBYLCBvcGVyYXRpbmcgc3lzdGVtIGRhdGEgYXJlIG5vdyBhbHdheXMKLSAgZW5jb2RlZC9kZWNvZGVkIHRvL2Zyb20gVVRGLTgvc3Vycm9nYXRlZXNjYXBlLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcKLSAgKHdoaWNoIG1heSBiZSBBU0NJSSBpZiBubyBsb2NhbGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0KSwgdG8gYXZvaWQKLSAgaW5jb25zaXN0ZW5jaWVzIHdpdGggb3MuZnNlbmNvZGUoKSBhbmQgb3MuZnNkZWNvZGUoKSBmdW5jdGlvbnMgd2hpY2ggYXJlCi0gIGFscmVhZHkgdXNpbmcgVVRGLTgvc3Vycm9nYXRlZXNjYXBlLgotCi0tIElzc3VlICMxNjQ1MzogRml4IGVxdWFsaXR5IHRlc3Rpbmcgb2YgZGVhZCB3ZWFrcmVmIG9iamVjdHMuCi0KLS0gSXNzdWUgIzk1MzU6IEZpeCBwZW5kaW5nIHNpZ25hbHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgYnV0IG5vdCB5ZXQKLSAgaGFuZGxlZCBieSBQeXRob24gdG8gbm90IHBlcnNpc3QgYWZ0ZXIgb3MuZm9yaygpIGluIHRoZSBjaGlsZCBwcm9jZXNzLgotCi0tIElzc3VlICMxNDc5NDogRml4IHNsaWNlLmluZGljZXMgdG8gcmV0dXJuIGNvcnJlY3QgcmVzdWx0cyBmb3IgaHVnZSB2YWx1ZXMsCi0gIHJhdGhlciB0aGFuIHJhaXNpbmcgT3ZlcmZsb3dFcnJvci4KLQotLSBJc3N1ZSAjMTUwMDE6IGZpeCBzZWdmYXVsdCBvbiAiZGVsIHN5cy5tb2R1bGVzWydfX21haW5fXyddIi4gUGF0Y2ggYnkgVmljdG9yCi0gIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzgyNzE6IHRoZSB1dGYtOCBkZWNvZGVyIG5vdyBvdXRwdXRzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBVK0ZGRkQKLSAgY2hhcmFjdGVycyB3aGVuIHVzZWQgd2l0aCB0aGUgJ3JlcGxhY2UnIGVycm9yIGhhbmRsZXIgb24gaW52YWxpZCB1dGYtOAotICBzZXF1ZW5jZXMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLCB0ZXN0cyBieSBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzU3NjU6IEFwcGx5IGEgaGFyZCByZWN1cnNpb24gbGltaXQgaW4gdGhlIGNvbXBpbGVyIGluc3RlYWQgb2YKLSAgYmxvd2luZyB0aGUgc3RhY2sgYW5kIHNlZ2ZhdWx0aW5nLiBJbml0aWFsIHBhdGNoIGJ5IEFuZHJlYSBHcmlmZmluaS4KLQotLSBJc3N1ZSAjMTY0MDI6IFdoZW4gc2xpY2luZyBhIHJhbmdlLCBmaXggc2hhZG93aW5nIG9mIGV4Y2VwdGlvbnMgZnJvbQotICBfX2luZGV4X18uCi0KLS0gSXNzdWUgIzE2MzM2OiBmaXggaW5wdXQgY2hlY2tpbmcgaW4gdGhlIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlci4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjODQwMTogYXNzaWduaW5nIGFuIGludCB0byBhIGJ5dGVhcnJheSBzbGljZSAoZS5nLiBiWzM6NF0gPSA1KSBub3cKLSAgcmFpc2VzIGFuIGVycm9yLgotCi0tIElzc3VlICM3MzE3OiBEaXNwbGF5IGZ1bGwgdHJhY2ViYWNrcyB3aGVuIGFuIGVycm9yIG9jY3VycyBhc3luY2hyb25vdXNseS4KLSAgUGF0Y2ggYnkgQWxvbiBIb3JldiB3aXRoIHVwZGF0ZSBieSBBbGV4ZXkgS2FjaGF5ZXYuCi0KLS0gSXNzdWUgIzE2MzA5OiBNYWtlIFBZVEhPTlBBVEg9IiIgYmVoYXZpb3IgdGhlIHNhbWUgYXMgaWYgUFlUSE9OUEFUSAotICBub3Qgc2V0IGF0IGFsbC4KLQotLSBJc3N1ZSAjMTAxODk6IEltcHJvdmUgdGhlIGVycm9yIHJlcG9ydGluZyBvZiBTeW50YXhFcnJvcnMgcmVsYXRlZCB0byBnbG9iYWwKLSAgYW5kIG5vbmxvY2FsIHN0YXRlbWVudHMuCi0KLS0gRml4IHNlZ2ZhdWx0cyBvbiBzZXR0aW5nIF9fcXVhbG5hbWVfXyBvbiBidWlsdGluIHR5cGVzIGFuZCBhdHRlbXB0aW5nIHRvCi0gIGRlbGV0ZSBpdCBvbiBhbnkgdHlwZS4KLQotLSBJc3N1ZSAjMTQ2MjU6IFJld3JpdGUgdGhlIFVURi0zMiBkZWNvZGVyLiBJdCBpcyBub3cgM3ggdG8gNHggZmFzdGVyLiBQYXRjaAotICB3cml0dGVuIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2MzQ1OiBGaXggYW4gaW5maW5pdGUgbG9vcCB3aGVuIGBgZnJvbWtleXNgYCBvbiBhIGRpY3Qgc3ViY2xhc3MKLSAgcmVjZWl2ZWQgYSBub25lbXB0eSBkaWN0IGZyb20gdGhlIGNvbnN0cnVjdG9yLgotCi0tIElzc3VlICMxNjI3MTogRml4IHN0cmFuZ2UgYnVncyB0aGF0IHJlc3VsdGVkIGZyb20gX19xdWFsbmFtZV9fIGFwcGVhcmluZyBpbiBhCi0gIGNsYXNzJ3MgX19kaWN0X18gYW5kIG9uIHR5cGUuCi0KLS0gSXNzdWUgIzEyODA1OiBNYWtlIGJ5dGVzLmpvaW4gYW5kIGJ5dGVhcnJheS5qb2luIGZhc3RlciB3aGVuIHRoZSBzZXBhcmF0b3IKLSAgaXMgZW1wdHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICM2MDc0OiBFbnN1cmUgY2FjaGVkIGJ5dGVjb2RlIGZpbGVzIGNhbiBhbHdheXMgYmUgdXBkYXRlZCBieSB0aGUKLSAgdXNlciB0aGF0IGNyZWF0ZWQgdGhlbSwgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBpcyByZWFkLW9ubHkuCi0KLS0gSXNzdWUgIzE1OTU4OiBieXRlcy5qb2luIGFuZCBieXRlYXJyYXkuam9pbiBub3cgYWNjZXB0IGFyYml0cmFyeSBidWZmZXIKLSAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ3ODM6IEltcHJvdmUgaW50KCkgZG9jc3RyaW5nIGFuZCBzd2l0Y2ggZG9jc3RyaW5ncyBmb3Igc3RyKCksCi0gIHJhbmdlKCksIGFuZCBzbGljZSgpIHRvIHVzZSBtdWx0aS1saW5lIHNpZ25hdHVyZXMuCi0KLS0gSXNzdWUgIzE2MTYwOiBTdWJjbGFzcyBzdXBwb3J0IG5vdyB3b3JrcyBmb3IgdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgotCi0tIElzc3VlICMxNjE0ODogSW1wbGVtZW50IFBFUCA0MjQsIGFkZGluZyBvcGVyYXRvci5sZW5ndGhfaGludCBhbmQKLSAgUHlPYmplY3RfTGVuZ3RoSGludC4KLQotLSBVcGdyYWRlIFVuaWNvZGUgZGF0YSAoVUNEKSB0byB2ZXJzaW9uIDYuMi4KLQotLSBJc3N1ZSAjMTUzNzk6IEZpeCBwYXNzaW5nIG9mIG5vbi1CTVAgY2hhcmFjdGVycyBhcyBpbnRlZ2VycyBmb3IgdGhlIGNoYXJtYXAKLSAgZGVjb2RlciAoYWxyZWFkeSB3b3JraW5nIGFzIHVuaWNvZGUgc3RyaW5ncykuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTE0NDogRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgd2hlbiBoYW5kbGluZyBwb2ludGVycyBhcyBpbnRlZ2VyCi0gIHZhbHVlcywgYnkgdXNpbmcgYFB5X3VpbnRwdHJfdGAgaW5zdGVhZCBvZiBgc2l6ZV90YC4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1OTY1OiBFeHBsaWNpdGx5IGNhc3QgYEFUX0ZEQ1dEYCBhcyAoaW50KS4gIFJlcXVpcmVkIG9uIFNvbGFyaXMgMTAKLSAgKHdoaWNoIGRlZmluZXMgYEFUX0ZEQ1dEYCBhcyBgYDB4ZmZkMTk1NTNgYCksIGhhcm1sZXNzIG9uIG90aGVyIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTU4Mzk6IENvbnZlcnQgU3lzdGVtRXJyb3JzIGluIGBzdXBlcigpYCB0byBSdW50aW1lRXJyb3JzLgotCi0tIElzc3VlICMxNTQ0ODogQnVmZmVyZWQgSU8gbm93IGZyZWVzIHRoZSBidWZmZXIgd2hlbiBjbG9zZWQsIGluc3RlYWQKLSAgb2Ygd2hlbiBkZWFsbG9jYXRpbmcuCi0KLS0gSXNzdWUgIzE1ODQ2OiBGaXggU3lzdGVtRXJyb3Igd2hpY2ggaGFwcGVuZWQgd2hlbiB1c2luZyBgYXN0LnBhcnNlKClgIGluIGFuCi0gIGV4Y2VwdGlvbiBoYW5kbGVyIG9uIGNvZGUgd2l0aCBzeW50YXggZXJyb3JzLgotCi0tIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KLSAgUGF0Y2ggYnkgRmVsaXBlIENydXouCi0KLS0gSXNzdWUgIzE1ODAxOiBNYWtlIHN1cmUgbWFwcGluZ3MgcGFzc2VkIHRvICclJyBmb3JtYXR0aW5nIGFyZSBhY3R1YWxseQotICBzdWJzY3JpcHRhYmxlLgotCi0tIElzc3VlICMxNTExMTogX19pbXBvcnRfXyBzaG91bGQgcHJvcGFnYXRlIEltcG9ydEVycm9yIHdoZW4gcmFpc2VkIGFzIGEKLSAgc2lkZS1lZmZlY3Qgb2YgYSBtb2R1bGUgdHJpZ2dlcmVkIGZyb20gdXNpbmcgZnJvbWxpc3QuCi0KLS0gSXNzdWUgIzE1MDIyOiBBZGQgcGlja2xlIGFuZCBjb21wYXJpc29uIHN1cHBvcnQgdG8gdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzQzMzE6IEFkZGVkIGZ1bmN0b29scy5wYXJ0aWFsbWV0aG9kIChJbml0aWFsIHBhdGNoIGJ5IEFsb24gSG9yZXYpCi0KLS0gSXNzdWUgIzEzNDYxOiBGaXggYSBjcmFzaCBpbiB0aGUgVGV4dElPV3JhcHBlci50ZWxsIG1ldGhvZCBvbiA2NC1iaXQKLSAgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgWW9nZXNoIENoYXVkaGFyaS4KLQotLSBJc3N1ZSAjMTg2ODE6IEZpeCBhIE5hbWVFcnJvciBpbiBpbXBvcnRsaWIucmVsb2FkKCkgKG5vdGljZWQgYnkgV2VpemhhbyBMaSkuCi0KLS0gSXNzdWUgIzE0MzIzOiBFeHBhbmRlZCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgY29lZmZpY2llbnRzIGZvciB0aGUKLSAgUkdCIC0tIFlJUSBjb252ZXJzaW9ucyBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIEZDQyBOVFNDIHZlcnNpb25zLgotCi0tIElzc3VlICMxNzk5ODogRml4IGFuIGludGVybmFsIGVycm9yIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUuCi0KLS0gSXNzdWUgIzE3NTU3OiBGaXggb3MuZ2V0Z3JvdXBzKCkgdG8gd29yayB3aXRoIHRoZSBtb2RpZmllZCBiZWhhdmlvciBvZgotICBnZXRncm91cHMoMikgb24gT1MgWCAxMC44LiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWF0ZXVzeiBMZW5pay4KLQotLSBJc3N1ZSAjMTg2MDg6IEF2b2lkIGtlZXBpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBsb2NhbGUgbW9kdWxlCi0gIGluc2lkZSB0aGUgX2lvIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTg2MTk6IEZpeCBhdGV4aXQgbGVha2luZyBjYWxsYmFja3MgcmVnaXN0ZXJlZCBmcm9tIHN1Yi1pbnRlcnByZXRlcnMsCi0gIGFuZCBtYWtlIGl0IEdDLWF3YXJlLgotCi0tIElzc3VlICMxNTY5OTogVGhlIHJlYWRsaW5lIG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMS1zdHlsZSBtb2R1bGUKLSAgaW5pdGlhbGl6YXRpb24sIHNvIGFzIHRvIHJlY2xhaW0gYWxsb2NhdGVkIHJlc291cmNlcyAoUHl0aG9uIGNhbGxiYWNrcykKLSAgYXQgc2h1dGRvd24uICBPcmlnaW5hbCBwYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE3NjE2OiB3YXZlLm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCi0KLS0gSXNzdWUgIzE4NTk5OiBGaXggbmFtZSBhdHRyaWJ1dGUgb2YgX3NoYTEuc2hhMSgpIG9iamVjdC4gSXQgbm93IHJldHVybnMKLSAgJ1NIQTEnIGluc3RlYWQgb2YgJ1NIQScuCi0KLS0gSXNzdWUgIzEzMjY2OiBBZGRlZCBpbnNwZWN0LnVud3JhcCB0byBlYXNpbHkgdW5yYXZlbCBfX3dyYXBwZWRfXyBjaGFpbnMKLSAgKGluaXRpYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuIGFuZCBBYXJvbiBJbGVzKQotCi0tIElzc3VlICMxODU2MTogU2tpcCBuYW1lIGluIGN0eXBlcycgX2J1aWxkX2NhbGxhcmdzKCkgaWYgbmFtZSBpcyBOVUxMLgotCi0tIElzc3VlICMxODU1OTogRml4IE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBlcnJvciBpbiBfcGlja2xlIG1vZHVsZQotCi0tIElzc3VlICMxODU1NjogQ2hlY2sgdGhlIHJldHVybiB0eXBlIG9mIFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgaW4gY3R5cGUncwotICBVX3NldCgpLgotCi0tIElzc3VlICMxNzgxODogYWlmYy5nZXRwYXJhbXMgbm93IHJldHVybnMgYSBuYW1lZHR1cGxlLgotCi0tIElzc3VlICMxODU0OTogRWxpbWluYXRlIGRlYWQgY29kZSBpbiBzb2NrZXRfbnRvaGwoKQotCi0tIElzc3VlICMxODUzMDogUmVtb3ZlIGFkZGl0aW9uYWwgc3RhdCBjYWxsIGZyb20gcG9zaXhwYXRoLmlzbW91bnQuCi0gIFBhdGNoIGJ5IEFsZXggR2F5bm9yLgotCi0tIElzc3VlICMxODUxNDogRml4IHVucmVhY2hhYmxlIFB5X0RFQ1JFRigpIGNhbGwgaW4gUHlDRGF0YV9Gcm9tQmFzZU9iaigpCi0KLS0gSXNzdWUgIzkxNzc6IENhbGxpbmcgcmVhZCgpIG9yIHdyaXRlKCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yLCBub3QKLSAgQXR0cmlidXRlRXJyb3IsIG9uIGEgY2xvc2VkIFNTTCBzb2NrZXQuICBQYXRjaCBieSBTZW5rbyBSYXNpYy4KLQotLSBJc3N1ZSAjMTg1MTM6IEZpeCBiZWhhdmlvdXIgb2YgY21hdGgucmVjdCB3LnIudC4gc2lnbmVkIHplcm9zIG9uIE9TIFggMTAuOCArCi0gIGdjYy4KLQotLSBJc3N1ZSAjMTg0Nzk6IENoYW5nZWQgdmVudiBBY3RpdmF0ZS5wczEgdG8gbWFrZSBkZWFjdGl2YXRlIGEgZnVuY3Rpb24sIGFuZAotICByZW1vdmVkIERlYWN0aXZhdGUucHMxLgotCi0tIElzc3VlICMxODQ4MDogQWRkIG1pc3NpbmcgY2FsbCB0byBQeVR5cGVfUmVhZHkgdG8gdGhlIF9lbGVtZW50dHJlZSBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzE3Nzc4OiBGaXggdGVzdCBkaXNjb3ZlcnkgZm9yIHRlc3RfbXVsdGlwcm9jZXNzaW5nLiAoUGF0Y2ggYnkKLSAgWmFjaGFyeSBXYXJlLikKLQotLSBJc3N1ZSAjMTgzOTM6IFRoZSBwcml2YXRlIG1vZHVsZSBfZ2VzdGFsdCBhbmQgcHJpdmF0ZSBmdW5jdGlvbnMKLSAgcGxhdGZvcm0uX21hY192ZXJfZ2VzdGFsdCwgcGxhdGZvcm0uX21hY192ZXJfbG9va3VwIGFuZAotICBwbGF0Zm9ybS5fYmNkMnN0ciBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIHB1YmxpYwotICBpbnRlcmZhY2Ugb2YgdGhlIHBsYXRmb3JtIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTc0ODI6IGZ1bmN0b29scy51cGRhdGVfd3JhcHBlciAoYW5kIGZ1bmN0b29scy53cmFwcykgbm93IHNldCB0aGUKLSAgX193cmFwcGVkX18gYXR0cmlidXRlIGNvcnJlY3RseSBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGhhcyBhCi0gIF9fd3JhcHBlZF9fIGF0dHJpYnV0ZSBzZXQuCi0KLS0gSXNzdWUgIzE4NDMxOiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgbm93IGRlY29kZXMgUkZDMjA0NyBlbmNvZGVkIHdvcmRzCi0gIGluIHN0cnVjdHVyZWQgaGVhZGVycy4KLQotLSBJc3N1ZSAjMTg0MzI6IFRoZSBzY2hlZCBtb2R1bGUncyBxdWV1ZSBtZXRob2Qgd2FzIGluY29ycmVjdGx5IHJldHVybmluZwotICBhbiBpdGVyYXRvciBpbnN0ZWFkIG9mIGEgbGlzdC4KLQotLSBJc3N1ZSAjMTgwNDQ6IFRoZSBuZXcgZW1haWwgaGVhZGVyIHBhcnNlciB3YXMgbWlzLXBhcnNpbmcgZW5jb2RlZCB3b3JkcyB3aGVyZQotICBhbiBlbmNvZGVkIGNoYXJhY3RlciBpbW1lZGlhdGVseSBmb2xsb3dlZCB0aGUgJz8nIHRoYXQgZm9sbG93cyB0aGUgQ1RFCi0gIGNoYXJhY3RlciwgcmVzdWx0aW5nIGluIGEgZGVjb2RpbmcgZmFpbHVyZS4gIFRoZXkgYXJlIG5vdyBkZWNvZGVkIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTgxMDE6IFRjbC5zcGxpdCgpIG5vdyBwcm9jZXNzIHN0cmluZ3MgbmVzdGVkIGluIGEgdHVwbGUgYXMgaXQKLSAgZG8gd2l0aCBieXRlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE4MTE2OiBnZXRwYXNzIHdhcyBhbHdheXMgZ2V0dGluZyBhbiBlcnJvciB3aGVuIHRlc3RpbmcgL2Rldi90dHksCi0gIGFuZCB0aHVzIHdhcyBhbHdheXMgZmFsbGluZyBiYWNrIHRvIHN0ZGluLCBhbmQgd291bGQgdGhlbiByYWlzZSBhbiBleGNlcHRpb24KLSAgaWYgc3RkaW4gY291bGQgbm90IGJlIHVzZWQgKHN1Y2ggYXMgL2Rldi9udWxsKS4gIEl0IGFsc28gbGVha2VkIGFuIG9wZW4gZmlsZS4KLSAgQWxsIG9mIHRoZXNlIGlzc3VlcyBhcmUgbm93IGZpeGVkLgotCi0tIElzc3VlICMxNzE5ODogRml4IGEgTmFtZUVycm9yIGluIHRoZSBkYm0gbW9kdWxlLiAgUGF0Y2ggYnkgVmFsZW50aW5hCi0gIE11a2hhbWVkemhhbm92YS4KLQotLSBJc3N1ZSAjMTgwMTM6IEZpeCBjZ2kuRmllbGRTdG9yYWdlIHRvIHBhcnNlIHRoZSBXM0Mgc2FtcGxlIGZvcm0uCi0KLS0gSXNzdWUgIzE4MDIwOiBpbXByb3ZlIGh0bWwuZXNjYXBlIHNwZWVkIGJ5IGFuIG9yZGVyIG9mIG1hZ25pdHVkZS4KLSAgUGF0Y2ggYnkgTWF0dCBCcnlhbnQuCi0KLS0gSXNzdWUgIzE4MzQ3OiBFbGVtZW50VHJlZSdzIGh0bWwgc2VyaWFsaXplciBub3cgcHJlc2VydmVzIHRoZSBjYXNlIG9mCi0gIGNsb3NpbmcgdGFncy4KLQotLSBJc3N1ZSAjMTcyNjE6IEVuc3VyZSBtdWx0aXByb2Nlc3NpbmcncyBwcm94aWVzIHVzZSBwcm9wZXIgYWRkcmVzcy4KLQotLSBJc3N1ZSAjMTgzNDM6IGZhdWx0aGFuZGxlci5yZWdpc3RlcigpIG5vdyBrZWVwcyB0aGUgcHJldmlvdXMgc2lnbmFsIGhhbmRsZXIKLSAgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLCBzbyBmYXVsdGhhbmRsZXIudW5yZWdpc3RlcigpIHJlc3RvcmVzCi0gIGNvcnJlY3RseSB0aGUgb3JpZ2luYWwgc2lnbmFsIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzE3MDk3OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBpZ25vcmUgRUlOVFIuCi0KLS0gSXNzdWUgIzE4MzM5OiBOZWdhdGl2ZSBpbnRzIGtleXMgaW4gdW5waWNrbGVyLm1lbW8gZGljdCBubyBsb25nZXIgY2F1c2UgYQotICBzZWdmYXVsdCBpbnNpZGUgdGhlIF9waWNrbGUgQyBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzE4MjQwOiBUaGUgSE1BQyBtb2R1bGUgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgdG8gYnl0ZXMgYW5kIGFjY2VwdHMKLSAgYW55IGJ5dGVzLWxpa2Ugb2JqZWN0LCBlLmcuIG1lbW9yeXZpZXcuIE9yaWdpbmFsIHBhdGNoIGJ5IEpvbmFzIEJvcmdzdHLDtm0uCi0KLS0gSXNzdWUgIzE4MjI0OiBSZW1vdmVkIHB5ZG9jIHNjcmlwdCBmcm9tIGNyZWF0ZWQgdmVudiwgYXMgaXQgY2F1c2VzIHByb2JsZW1zCi0gIG9uIFdpbmRvd3MgYW5kIGFkZHMgbm8gdmFsdWUgb3ZlciBhbmQgYWJvdmUgcHl0aG9uIC1tIHB5ZG9jIC4uLgotCi0tIElzc3VlICMxODE1NTogVGhlIGNzdiBtb2R1bGUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGNzdiBmaWxlcyB0aGF0IHVzZQotICBhIGRlbGltaXRlciBjaGFyYWN0ZXIgdGhhdCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgaW4gcmVnZXhlcywgaW5zdGVhZCBvZgotICB0aHJvd2luZyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzE0MzYwOiBlbmNvZGVfcXVvcHJpIGNhbiBub3cgYmUgc3VjY2Vzc2Z1bGx5IHVzZWQgYXMgYW4gZW5jb2RlcgotICB3aGVuIGNvbnN0cnVjdGluZyBhIE1JTUVBcHBsaWNhdGlvbiBvYmplY3QuCi0KLS0gSXNzdWUgIzExMzkwOiBBZGQgLW8gYW5kIC1mIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHRoZSBkb2N0ZXN0IENMSSB0bwotICBzcGVjaWZ5IGRvY3Rlc3Qgb3B0aW9ucyAoYW5kIGNvbnZlcnQgaXQgdG8gdXNpbmcgYXJncGFyc2UpLgotCi0tIElzc3VlICMxODEzNTogc3NsLlNTTFNvY2tldC53cml0ZSgpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciBpZiB0aGUgaW5wdXQKLSAgc3RyaW5nIGluIGxvbmdlciB0aGFuIDIgZ2lnYWJ5dGVzLCBhbmQgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkKLSAgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgcGFzc3dvcmQgaXMgbG9uZ2VyIHRoYW4gMiBnaWdhYnl0ZXMuIFRoZSBzc2wKLSAgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgcGFydGlhbCB3cml0ZS4KLQotLSBJc3N1ZSAjMTEwMTY6IEFkZCBDIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGF0IG1vZHVsZSBhcyBfc3RhdC4KLQotLSBJc3N1ZSAjMTgyNDg6IEZpeCBsaWJmZmkgYnVpbGQgb24gQUlYLgotCi0tIElzc3VlICMxODI1OTogRGVjbGFyZSBzZXRob3N0bmFtZSBpbiBzb2NrZXRtb2R1bGUuYyBmb3IgQUlYCi0KLS0gSXNzdWUgIzE4MTQ3OiBBZGQgZGlhZ25vc3RpYyBmdW5jdGlvbnMgdG8gc3NsLlNTTENvbnRleHQoKS4gZ2V0X2NhX2xpc3QoKQotICBsaXN0cyBhbGwgbG9hZGVkIENBIGNlcnRpZmljYXRlcyBhbmQgY2VydF9zdG9yZV9zdGF0cygpIHJldHVybnMgYW1vdW50IG9mCi0gIGxvYWRlZCBYLjUwOSBjZXJ0cywgWC41MDkgQ0EgY2VydHMgYW5kIENSTHMuCi0KLS0gSXNzdWUgIzE4MTY3OiBjZ2kuRmllbGRTdG9yYWdlIG5vIGxvbmdlciBmYWlscyB0byBoYW5kbGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YQotICB3aGVuIGBgXHJcbmBgIGFwcGVhcnMgYXQgZW5kIG9mIDY1NTM1IGJ5dGVzIHdpdGhvdXQgb3RoZXIgbmV3bGluZXMuCi0KLS0gSXNzdWUgIzE4MDc2OiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuZGVjb2RlX3NvdXJjZSgpLgotCi0tIElzc3VlICMxODM1NzogYWRkIHRlc3RzIGZvciBkaWN0dmlldyBzZXQgZGlmZmVyZW5jZS4KLSAgUGF0Y2ggYnkgRnJhc2VyIFR3ZWVkYWxlLgotCi0tIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLmdldF9zb3VyY2UoKSBubyBsb25nZXIgY2hhbmdlcyBTeW50YXhFcnJvciBvcgotICBVbmljb2RlRGVjb2RlRXJyb3IgaW50byBJbXBvcnRFcnJvci4KLQotLSBJc3N1ZSAjMTgwNTgsIDE4MDU3OiBNYWtlIHRoZSBuYW1lc3BhY2UgcGFja2FnZSBsb2FkZXIgbWVldCB0aGUKLSAgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyIEFCQywgYWxsb3dpbmcgZm9yIG5hbWVzcGFjZSBwYWNrYWdlcyB0byB3b3JrIHdpdGgKLSAgcnVucHkuCi0KLS0gSXNzdWUgIzE3MTc3OiBUaGUgaW1wIG1vZHVsZSBpcyBwZW5kaW5nIGRlcHJlY2F0aW9uLgotCi0tIHN1YnByb2Nlc3M6IFByZXZlbnQgYSBwb3NzaWJsZSBkb3VibGUgY2xvc2Ugb2YgcGFyZW50IHBpcGUgZmRzIHdoZW4gdGhlCi0gIHN1YnByb2Nlc3MgZXhlYyBydW5zIGludG8gYW4gZXJyb3IuICBQcmV2ZW50IGEgcmVndWxhciBtdWx0aS1jbG9zZSBvZiB0aGUKLSAgL2Rldi9udWxsIGZkIHdoZW4gYW55IG9mIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB3YXMgc2V0IHRvIERFVk5VTEwuCi0KLS0gSXNzdWUgIzE4MTk0OiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoKSBhbmQKLSAgc291cmNlX2Zyb21fY2FjaGUoKSB3aGlsZSBkb2N1bWVudGluZyB0aGUgZXF1aXZhbGVudCBmdW5jdGlvbnMgaW4gaW1wIGFzCi0gIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzE3OTA3OiBEb2N1bWVudCBpbXAubmV3X21vZHVsZSgpIGFzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCi0gIHR5cGVzLk1vZHVsZVR5cGUuCi0KLS0gSXNzdWUgIzE4MTkyOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSIGFuZCBkb2N1bWVudCBhcyBkZXByZWNhdGVkCi0gIGltcC5nZXRfbWFnaWMoKS4KLQotLSBJc3N1ZSAjMTgxNDk6IEFkZCBmaWxlY21wLmNsZWFyX2NhY2hlKCkgdG8gbWFudWFsbHkgY2xlYXIgdGhlIGZpbGVjbXAgY2FjaGUuCi0gIFBhdGNoIGJ5IE1hcmsgTGV2aXR0Ci0KLS0gSXNzdWUgIzE4MTkzOiBBZGQgaW1wb3J0bGliLnJlbG9hZCgpLgotCi0tIElzc3VlICMxODE1NzogU3RvcCB1c2luZyBpbXAubG9hZF9tb2R1bGUoKSBpbiBweWRvYy4KLQotLSBJc3N1ZSAjMTYxMDI6IE1ha2UgdXVpZC5fbmV0Ymlvc19nZXRub2RlKCkgd29yayBhZ2FpbiBvbiBQeXRob24gMy4KLQotLSBJc3N1ZSAjMTcxMzQ6IEFkZCBzc2wuZW51bV9jZXJ0X3N0b3JlKCkgYXMgaW50ZXJmYWNlIHRvIFdpbmRvd3MnIGNlcnQgc3RvcmUuCi0KLS0gSXNzdWUgIzE4MTQzOiBJbXBsZW1lbnQgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIGluIG9yZGVyIHRvIGRlYnVnCi0gIHRoZSBkZWZhdWx0IGxvY2F0aW9ucyBmb3IgY2FmaWxlIGFuZCBjYXBhdGguCi0KLS0gSXNzdWUgIzE3MzE0OiBNb3ZlIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG92ZXIgdG8gaW1wb3J0bGliLgotCi0tIElzc3VlICMxMTk1OTogU01UUFNlcnZlciBhbmQgU01UUENoYW5uZWwgbm93IHRha2UgYW4gb3B0aW9uYWwgbWFwLCB1c2Ugb2YKLSAgd2hpY2ggYXZvaWRzIGFmZmVjdGluZyBnbG9iYWwgc3RhdGUuCi0KLS0gSXNzdWUgIzE4MTA5OiBvcy51bmFtZSgpIG5vdyBkZWNvZGVzIGZpZWxkcyBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGFuZAotICBzb2NrZXQuZ2V0aG9zdG5hbWUoKSBub3cgZGVjb2RlcyB0aGUgaG9zdG5hbWUgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLAotICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZyBpbiBzdHJpY3QgbW9kZS4KLQotLSBJc3N1ZSAjMTgwODk6IEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIubG9hZF9tb2R1bGUuCi0KLS0gSXNzdWUgIzE4MDg4OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmFiYy5Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMgZm9yIHNldHRpbmcKLSAgbW9kdWxlIGF0dHJpYnV0ZXMuIExlYWRzIHRvIHRoZSBwZW5kaW5nIGRlcHJlY2F0aW9uIG9mCi0gIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLgotCi0tIElzc3VlICMxNzQwMzogdXJsbGliLnBhcnNlLnJvYm90cGFyc2VyIG5vcm1hbGl6ZXMgdGhlIHVybHMgYmVmb3JlIGFkZGluZyB0bwotICBydWxlbGluZS4gVGhpcyBoZWxwcyBpbiBoYW5kbGluZyBjZXJ0YWluIHR5cGVzIGludmFsaWQgdXJscyBpbiBhIGNvbnNlcnZhdGl2ZQotICBtYW5uZXIuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1oZXIgTW92c2lzeWFuLgotCi0tIElzc3VlICMxODA3MDogSGF2ZSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlcigpIHNldCBhdHRyaWJ1dGVzCi0gIHVuY29uZGl0aW9uYWxseSBpbiBvcmRlciB0byBwcm9wZXJseSBzdXBwb3J0IHJlbG9hZGluZy4KLQotLSBBZGRlZCBpbXBvcnRsaWIudXRpbC5tb2R1bGVfdG9fbG9hZCB0byByZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdG8gcHJvdmlkZSB0aGUKLSAgcHJvcGVyIG1vZHVsZSBvYmplY3QgdG8gbG9hZC4KLQotLSBJc3N1ZSAjMTgwMjU6IEZpeGVkIGEgc2VnZmF1bHQgaW4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGludG8oKSB3aGVuIHJhdwotICBzdHJlYW0ncyByZWFkKCkgcmV0dXJucyBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLgotCi0tIElzc3VlICMxODAxMTogQXMgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQsIGJhc2U2NC5iMzJkZWNvZGUoKSBub3cgcmFpc2VzIGEKLSAgYmluYXNjaWkuRXJyb3IgaWYgdGhlcmUgYXJlIG5vbi1iMzItYWxwaGFiZXQgY2hhcmFjdGVycyBwcmVzZW50IGluIHRoZSBpbnB1dAotICBzdHJpbmcsIGluc3RlYWQgb2YgYSBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzE4MDcyOiBJbXBsZW1lbnQgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmdldF9jb2RlKCkgYW5kCi0gIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyLmdldF9jb2RlKCkuCi0KLS0gSXNzdWUgIzgyNDA6IFNldCB0aGUgU1NMX01PREVfQUNDRVBUX01PVklOR19XUklURV9CVUZGRVIgZmxhZyBvbiBTU0wKLSAgc29ja2V0cy4KLQotLSBJc3N1ZSAjMTcyNjk6IFdvcmthcm91bmQgZm9yIHNvY2tldC5nZXRhZGRyaW5mbyBjcmFzaCBvbiBNYWNPUyBYCi0gIHdpdGggcG9ydCBOb25lIG9yICIwIiBhbmQgZmxhZ3MgQUlfTlVNRVJJQ1NFUlYuCi0KLS0gSXNzdWUgIzE2OTg2OiBFbGVtZW50VHJlZSBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggc3RyaW5nIGlucHV0IHdoZW4gdGhlCi0gIGludGVybmFsIFhNTCBlbmNvZGluZyBpcyBub3QgVVRGLTggb3IgVVMtQVNDSUkuCi0KLS0gSXNzdWUgIzE3OTk2OiBzb2NrZXQgbW9kdWxlIG5vdyBleHBvc2VzIEFGX0xJTksgY29uc3RhbnQgb24gQlNEIGFuZCBPU1guCi0KLS0gSXNzdWUgIzE3OTAwOiBBbGxvd2VkIHBpY2tsaW5nIG9mIHJlY3Vyc2l2ZSBPcmRlcmVkRGljdHMuICBEZWNyZWFzZWQgcGlja2xlZAotICBzaXplIGFuZCBwaWNrbGluZyB0aW1lLgotCi0tIElzc3VlICMxNzkxNDogQWRkIG9zLmNwdV9jb3VudCgpLiBQYXRjaCBieSBZb2dlc2ggQ2hhdWRoYXJpLCBiYXNlZCBvbiBhbgotICBpbml0aWFsIHBhdGNoIGJ5IFRyZW50IE5lbHNvbi4KLQotLSBJc3N1ZSAjMTc4MTI6IEZpeGVkIHF1YWRyYXRpYyBjb21wbGV4aXR5IG9mIGJhc2U2NC5iMzJlbmNvZGUoKS4KLSAgT3B0aW1pemUgYmFzZTY0LmIzMmVuY29kZSgpIGFuZCBiYXNlNjQuYjMyZGVjb2RlKCkgKHNwZWVkIHVwIHRvIDN4KS4KLQotLSBJc3N1ZSAjMTc5ODA6IEZpeCBwb3NzaWJsZSBhYnVzZSBvZiBzc2wubWF0Y2hfaG9zdG5hbWUoKSBmb3IgZGVuaWFsIG9mCi0gIHNlcnZpY2UgdXNpbmcgY2VydGlmaWNhdGVzIHdpdGggbWFueSB3aWxkY2FyZHMgKENWRS0yMDEzLTIwOTkpLgotCi0tIElzc3VlICMxNTc1ODogRml4IEZpbGVJTy5yZWFkYWxsKCkgc28gaXQgbm8gbG9uZ2VyIGhhcyBPKG4qKjIpIGNvbXBsZXhpdHkuCi0KLS0gSXNzdWUgIzE0NTk2OiBUaGUgc3RydWN0LlN0cnVjdCgpIG9iamVjdHMgbm93IHVzZSBhIG1vcmUgY29tcGFjdAotICBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTc5ODE6IGxvZ2dpbmcncyBTeXNMb2dIYW5kbGVyIG5vdyBjbG9zZXMgdGhlIHNvY2tldCB3aGVuIGl0IGNhdGNoZXMKLSAgc29ja2V0IE9TRXJyb3JzLgotCi0tIElzc3VlICMxNzk2NDogRml4IG9zLnN5c2NvbmYoKTogdGhlIHJldHVybiB0eXBlIG9mIHRoZSBDIHN5c2NvbmYoKSBmdW5jdGlvbgotICBpcyBsb25nLCBub3QgaW50LgotCi0tIEZpeCB0eXBvcyBpbiB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTc3NTQ6IE1ha2UgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgaW5kZXBlbmRlbnQgb2YgdGhlIGxvY2FsZS4KLQotLSBJc3N1ZSAjMTc5Njg6IEZpeCBtZW1vcnkgbGVhayBpbiBvcy5saXN0eGF0dHIoKS4KLQotLSBJc3N1ZSAjMTc2MDY6IEZpeGVkIHN1cHBvcnQgb2YgZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gdGhlIFhNTEdlbmVyYXRvcgotICBjaGFyYWN0ZXJzKCkgYW5kIGlnbm9yYWJsZVdoaXRlc3BhY2UoKSBtZXRob2RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2ViYXN0aWFuCi0gIE9ydGl6IFZhc3F1ZXouCi0KLS0gSXNzdWUgIzE3NzMyOiBJZ25vcmUgZGlzdHV0aWxzLmNmZyBvcHRpb25zIHBlcnRhaW5pbmcgdG8gaW5zdGFsbCBwYXRocyBpZiBhCi0gIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlLgotCi0tIElzc3VlICMxNzkxNTogRml4IGludGVyb3BlcmFiaWxpdHkgb2YgeG1sLnNheCB3aXRoIGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieQotICBjb2RlY3Mub3BlbigpLgotCi0tIElzc3VlICMxNjYwMTogUmVzdGFydGluZyBpdGVyYXRpb24gb3ZlciB0YXJmaWxlIHJlYWxseSByZXN0YXJ0cyByYXRoZXIKLSAgdGhhbiBjb250aW51aW5nIGZyb20gd2hlcmUgaXQgbGVmdCBvZmYuICBQYXRjaCBieSBNaWNoYWVsIEJpcnR3ZWxsLgotCi0tIElzc3VlICMxNzI4OTogVGhlIHJlYWRsaW5lIG1vZHVsZSBub3cgcGxheXMgbmljZXIgd2l0aCBleHRlcm5hbCBtb2R1bGVzCi0gIG9yIGFwcGxpY2F0aW9ucyBjaGFuZ2luZyB0aGUgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycyBnbG9iYWwKLSAgdmFyaWFibGUuICBJbml0aWFsIHBhdGNoIGJ5IEJyYWRsZXkgRnJvZWhsZS4KLQotLSBJc3N1ZSAjMTIxODE6IHNlbGVjdCBtb2R1bGU6IEZpeCBzdHJ1Y3Qga2V2ZW50IGRlZmluaXRpb24gb24gT3BlbkJTRCA2NC1iaXQKLSAgcGxhdGZvcm1zLiBQYXRjaCBieSBGZWRlcmljbyBTY2h3aW5kdC4KLQotLSBJc3N1ZSAjMTE4MTY6IG11bHRpcGxlIGltcHJvdmVtZW50cyB0byB0aGUgZGlzIG1vZHVsZTogZ2V0X2luc3RydWN0aW9ucwotICBnZW5lcmF0b3IsIGFiaWxpdHkgdG8gcmVkaXJlY3Qgb3V0cHV0IHRvIGEgZmlsZSwgQnl0ZWNvZGUgYW5kIEluc3RydWN0aW9uCi0gIGFic3RyYWN0aW9ucy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLCBSeWFuIEtlbGx5IGFuZCBUaG9tYXMgS2x1eXZlci4KLQotLSBJc3N1ZSAjMTM4MzE6IEVtYmVkIHN0cmluZ2lmaWNhdGlvbiBvZiByZW1vdGUgdHJhY2ViYWNrIGluIGxvY2FsCi0gIHRyYWNlYmFjayByYWlzZWQgd2hlbiBwb29sIHRhc2sgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTU1Mjg6IEFkZCB3ZWFrcmVmLmZpbmFsaXplIHRvIHN1cHBvcnQgZmluYWxpemF0aW9uIHVzaW5nCi0gIHdlYWtyZWYgY2FsbGJhY2tzLgotCi0tIElzc3VlICMxNDE3MzogQXZvaWQgY3Jhc2hpbmcgd2hlbiByZWFkaW5nIGEgc2lnbmFsIGhhbmRsZXIgZHVyaW5nCi0gIGludGVycHJldGVyIHNodXRkb3duLgotCi0tIElzc3VlICMxNTkwMjogRml4IGltcC5sb2FkX21vZHVsZSgpIGFjY2VwdGluZyBOb25lIGFzIGEgZmlsZSB3aGVuIGxvYWRpbmcgYW4KLSAgZXh0ZW5zaW9uIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTM3MjE6IFNTTFNvY2tldC5nZXRwZWVyY2VydCgpIGFuZCBTU0xTb2NrZXQuZG9faGFuZHNoYWtlKCkgbm93Ci0gIHJhaXNlIGFuIE9TRXJyb3Igd2l0aCBFTk9UQ09OTiwgaW5zdGVhZCBvZiBhbiBBdHRyaWJ1dGVFcnJvciwgd2hlbiB0aGUKLSAgU1NMU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQuCi0KLS0gSXNzdWUgIzE0Njc5OiBhZGQgYW4gX19hbGxfXyAodGhhdCBjb250YWlucyBvbmx5IEhUTUxQYXJzZXIpIHRvIGh0bWwucGFyc2VyLgotCi0tIElzc3VlICMxNzgwMjogRml4IGFuIFVuYm91bmRMb2NhbEVycm9yIGluIGh0bWwucGFyc2VyLiAgSW5pdGlhbCB0ZXN0cyBieQotICBUaG9tYXMgQmFybG93LgotCi0tIElzc3VlICMxNzM1ODogTW9kdWxlcyBsb2FkZWQgYnkgaW1wLmxvYWRfc291cmNlKCkgYW5kIGxvYWRfY29tcGlsZWQoKSAoYW5kIGJ5Ci0gIGV4dGVuc2lvbiBsb2FkX21vZHVsZSgpKSBub3cgaGF2ZSBhIGJldHRlciBjaGFuY2Ugb2Ygd29ya2luZyB3aGVuIHJlbG9hZGVkLgotCi0tIElzc3VlICMxNzgwNDogTmV3IGZ1bmN0aW9uIGBgc3RydWN0Lml0ZXJfdW5wYWNrYGAgYWxsb3dzIGZvciBzdHJlYW1pbmcKLSAgc3RydWN0IHVucGFja2luZy4KLQotLSBJc3N1ZSAjMTc4MzA6IFdoZW4ga2V5d29yZC5weSBpcyB1c2VkIHRvIHVwZGF0ZSBhIGtleXdvcmQgZmlsZSwgaXQgbm93Ci0gIHByZXNlcnZlcyB0aGUgbGluZSBlbmRpbmdzIG9mIHRoZSBvcmlnaW5hbCBmaWxlLgotCi0tIElzc3VlICMxNzI3MjogTWFraW5nIHRoZSB1cmxsaWIucmVxdWVzdCdzIFJlcXVlc3QuZnVsbF91cmwgYSBkZXNjcmlwdG9yLgotICBGaXhlcyBidWdzIHdpdGggYXNzaWdubWVudCB0byBmdWxsX3VybC4gUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KLQotLSBJc3N1ZSAjMTczNTM6IFBsaXN0bGliIGVtaXR0ZWQgZW1wdHkgZGF0YSB0YWdzIHdpdGggZGVlcGx5IG5lc3RlZCBkYXRhc3RydWN0dXJlcwotCi0tIElzc3VlICMxMTcxNDogVXNlICd3aXRoJyBzdGF0ZW1lbnRzIHRvIGFzc3VyZSBhIFNlbWFwaG9yZSByZWxlYXNlcyBhCi0gIGNvbmRpdGlvbiB2YXJpYWJsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBSYWNoZWwuCi0KLS0gSXNzdWUgIzE2NjI0OiBgc3VicHJvY2Vzcy5jaGVja19vdXRwdXRgIG5vdyBhY2NlcHRzIGFuIGBpbnB1dGAgYXJndW1lbnQsCi0gIGFsbG93aW5nIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4gdG8gYmUgcHJvdmlkZWQgYXMgYSAoYnl0ZSkgc3RyaW5nLgotICBQYXRjaCBieSBaYWNrIFdlaW5iZXJnLgotCi0tIElzc3VlICMxNzc5NTogUmV2ZXJ0ZWQgYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2UgaW4gU3lzTG9nSGFuZGxlciB3aXRoCi0gIFVuaXggZG9tYWluIHNvY2tldHMuCi0KLS0gSXNzdWUgIzE2Njk0OiBBZGQgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgbW9kdWxlLgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzExMTgyOiByZW1vdmUgdGhlIHVudXNlZCBhbmQgdW5kb2N1bWVudGVkIHB5ZG9jLlNjYW5uZXIgY2xhc3MuCi0gIFBhdGNoIGJ5IE1hcnRpbiBNb3JyaXNvbi4KLQotLSBJc3N1ZSAjMTc3NDE6IEFkZCBFbGVtZW50VHJlZS5YTUxQdWxsUGFyc2VyLCBhbiBldmVudC1kcml2ZW4gcGFyc2VyIGZvcgotICBub24tYmxvY2tpbmcgYXBwbGljYXRpb25zLgotCi0tIElzc3VlICMxNzU1NTogRml4IEZvcmtBd2FyZVRocmVhZExvY2sgc28gdGhhdCBzaXplIG9mIGFmdGVyIGZvcmsKLSAgcmVnaXN0cnkgZG9lcyBub3QgZ3JvdyBleHBvbmVudGlhbGx5IHdpdGggZ2VuZXJhdGlvbiBvZiBwcm9jZXNzLgotCi0tIElzc3VlICMxNzcwNzogZml4IHJlZ3Jlc3Npb24gaW4gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlJ3MgZ2V0KCkgbWV0aG9kIHdoZXJlCi0gIGl0IGRpZCBub3QgYmxvY2sgZm9yIHNob3J0IHRpbWVvdXRzLgotCi0tIElzc3VlICMxNzcyMDogRml4IHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgcGlja2xlLlVucGlja2xlciB0byBjb3JyZWN0bHkKLSAgcHJvY2VzcyB0aGUgQVBQRU5EUyBvcGNvZGUgd2hlbiBpdCBpcyB1c2VkIG9uIG5vbi1saXN0IG9iamVjdHMuCi0KLS0gSXNzdWUgIzE3MDEyOiBzaHV0aWwud2hpY2goKSBubyBsb25nZXIgZmFsbHMgYmFjayB0byB0aGUgUEFUSCBlbnZpcm9ubWVudAotICB2YXJpYWJsZSBpZiBhbiBlbXB0eSBwYXRoIGFyZ3VtZW50IGlzIHNwZWNpZmllZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE3NzEwOiBGaXggcGlja2xlIHJhaXNpbmcgYSBTeXN0ZW1FcnJvciBvbiBib2d1cyBpbnB1dC4KLQotLSBJc3N1ZSAjMTczNDE6IEluY2x1ZGUgdGhlIGludmFsaWQgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMgZnJvbSByZSBhYm91dAotICBpbnZhbGlkIGdyb3VwIG5hbWVzLgotCi0tIElzc3VlICMxNzcwMjogb3MuZW52aXJvbiBub3cgcmFpc2VzIEtleUVycm9yIHdpdGggdGhlIG9yaWdpbmFsIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlIG5hbWUgKHN0ciBvbiBVTklYKSwgaW5zdGVhZCBvZiB1c2luZyB0aGUgZW5jb2RlZCBuYW1lIChieXRlcyBvbgotICBVTklYKS4KLQotLSBJc3N1ZSAjMTYxNjM6IE1ha2UgdGhlIGltcG9ydGxpYiBiYXNlZCB2ZXJzaW9uIG9mIHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnMKLSAgd29yayBmb3Igc3VibW9kdWxlcy4gSW5pdGlhbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgotCi0tIElzc3VlICMxNjgwNDogRml4IGEgYnVnIGluIHRoZSAnc2l0ZScgbW9kdWxlIHRoYXQgY2F1c2VkIHJ1bm5pbmcKLSAgJ3B5dGhvbiAtUyAtbSBzaXRlJyB0byBpbmNvcnJlY3RseSB0aHJvdyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzE1NDgwOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgYW5kIHVudXNlZCBUWVBFX0lOVDY0IGNvZGUgZnJvbSBtYXJzaGFsLgotICBJbml0aWFsIHBhdGNoIGJ5IERhbmllbCBSaXRpLgotCi0tIElzc3VlICMyMTE4OiBTTVRQRXhjZXB0aW9uIGlzIG5vdyBhIHN1YmNsYXNzIG9mIE9TRXJyb3IuCi0KLS0gSXNzdWUgIzE3MDE2OiBHZXQgcmlkIG9mIHBvc3NpYmxlIHBvaW50ZXIgd3JhcGFyb3VuZHMgYW5kIGludGVnZXIgb3ZlcmZsb3dzCi0gIGluIHRoZSByZSBtb2R1bGUuICBQYXRjaCBieSBOaWNrb2xhaSBaZWxkb3ZpY2guCi0KLS0gSXNzdWUgIzE2NjU4OiBhZGQgbWlzc2luZyByZXR1cm4gdG8gSFRUUENvbm5lY3Rpb24uc2VuZCgpLgotICBQYXRjaCBieSBKZWZmIEtudXBwLgotCi0tIElzc3VlICM5NTU2OiB0aGUgbG9nZ2luZyBwYWNrYWdlIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyBhIHRpbWUtb2YtZGF5IGZvciBhCi0gIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciB0byByb3RhdGUuCi0KLS0gSXNzdWUgIzE0OTcxOiB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSBubyBsb25nZXIgZ2V0cyBjb25mdXNlZCB3aGVuIGEgZnVuY3Rpb24KLSAgaGFzIGEgZGlmZmVyZW50IF9fbmFtZV9fIHRoYW4gaXRzIG5hbWUgaW4gdGhlIFRlc3RDYXNlIGNsYXNzIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzE3NDg3OiBUaGUgd2F2ZSBnZXRwYXJhbXMgbWV0aG9kIG5vdyByZXR1cm5zIGEgbmFtZWR0dXBsZSByYXRoZXIgdGhhbgotICBhIHBsYWluIHR1cGxlLgotCi0tIElzc3VlICMxNzY3NTogc29ja2V0IHJlcHIoKSBwcm92aWRlcyBsb2NhbCBhbmQgcmVtb3RlIGFkZHJlc3NlcyAoaWYgYW55KS4KLSAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScKLQotLSBJc3N1ZSAjMTcwOTM6IE1ha2UgdGhlIEFCQ3MgaW4gaW1wb3J0bGliLmFiYyBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIG9yIHJhaXNlCi0gIHJlYXNvbmFibGUgZXhjZXB0aW9ucyBmb3IgdGhlaXIgbWV0aG9kcyB0byBtYWtlIHRoZW0gbW9yZSBhbWVuYWJsZSB0byBzdXBlcigpCi0gIGNhbGxzLgotCi0tIElzc3VlICMxNzU2NjogTWFrZSBpbXBvcnRsaWIuYWJjLkxvYWRlci5tb2R1bGVfcmVwcigpIG9wdGlvbmFsIGluc3RlYWQgb2YgYW4KLSAgYWJzdHJhY3RtZXRob2Q7IG5vdyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvciBzbyBhcyB0byBiZSBpZ25vcmVkIGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzE3Njc4OiBSZW1vdmUgdGhlIHVzZSBvZiBkZXByZWNhdGVkIG1ldGhvZCBpbiBodHRwL2Nvb2tpZWphci5weSBieQotICBjaGFuZ2luZyB0aGUgY2FsbCB0byBnZXRfb3JpZ2luX3JlcV9ob3N0KCkgdG8gb3JpZ2luX3JlcV9ob3N0LgotCi0tIElzc3VlICMxNzY2NjogRml4IHJlYWRpbmcgZ3ppcCBmaWxlcyB3aXRoIGFuIGV4dHJhIGZpZWxkLgotCi0tIElzc3VlICMxNjQ3NTogU3VwcG9ydCBvYmplY3QgaW5zdGFuY2luZywgcmVjdXJzaW9uIGFuZCBpbnRlcm5lZCBzdHJpbmdzCi0gIGluIG1hcnNoYWwKLQotLSBJc3N1ZSAjMTc1MDI6IFByb2Nlc3MgREVGQVVMVCB2YWx1ZXMgaW4gbW9jayBzaWRlX2VmZmVjdCB0aGF0IHJldHVybnMgaXRlcmF0b3IuCi0KLS0gSXNzdWUgIzE2Nzk1OiBPbiB0aGUgYXN0LmFyZ3VtZW50cyBvYmplY3QsIHVuaWZ5IHZhcmFyZyB3aXRoIHZhcmFyZ2Fubm90YXRpb24KLSAgYW5kIGt3YXJnIGFuZCBrd2FyZ2Fubm90YXRpb24uIENoYW5nZSB0aGUgY29sdW1uIG9mZnNldCBvZiBhc3QuQXR0cmlidXRlIHRvIGJlCi0gIGF0IHRoZSBhdHRyaWJ1dGUgbmFtZS4KLQotLSBJc3N1ZSAjMTc0MzQ6IFByb3Blcmx5IHJhaXNlIGEgU3ludGF4RXJyb3Igd2hlbiBhIHN0cmluZyBvY2N1cnMgYmV0d2VlbiBmdXR1cmUKLSAgaW1wb3J0cy4KLQotLSBJc3N1ZSAjMTcxMTc6IEltcG9ydCBhbmQgQGltcG9ydGxpYi51dGlsLnNldF9sb2FkZXIgbm93IHNldCBfX2xvYWRlcl9fIHdoZW4KLSAgaXQgaGFzIGEgdmFsdWUgb2YgTm9uZSBvciB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QuCi0KLS0gSXNzdWUgIzE3MDMyOiBUaGUgImdsb2JhbCIgaW4gdGhlICJOYW1lRXJyb3I6IGdsb2JhbCBuYW1lICd4JyBpcyBub3QgZGVmaW5lZCIKLSAgZXJyb3IgbWVzc2FnZSBoYXMgYmVlbiByZW1vdmVkLiAgUGF0Y2ggYnkgUmFtIFJhY2h1bS4KLQotLSBJc3N1ZSAjMTgwODA6IFdoZW4gYnVpbGRpbmcgYSBDIGV4dGVuc2lvbiBtb2R1bGUgb24gT1MgWCwgaWYgdGhlIGNvbXBpbGVyCi0gIGlzIG92ZXJyaWRkZW4gd2l0aCB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUsIHVzZSB0aGUgbmV3IGNvbXBpbGVyIGFzCi0gIHRoZSBkZWZhdWx0IGZvciBsaW5raW5nIGlmIExEU0hBUkVEIGlzIG5vdCBhbHNvIG92ZXJyaWRkZW4uICBUaGlzIHJlc3RvcmVzCi0gIERpc3R1dGlscyBiZWhhdmlvciBpbnRyb2R1Y2VkIGluIDMuMi4zIGFuZCBpbmFkdmVydGVudGx5IGRyb3BwZWQgaW4gMy4zLjAuCi0KLS0gSXNzdWUgIzE4MTEzOiBGaXhlZCBhIHJlZmNvdW50IGxlYWsgaW4gdGhlIGN1cnNlcy5wYW5lbCBtb2R1bGUncwotICBzZXRfdXNlcnB0cigpIG1ldGhvZC4gIFJlcG9ydGVkIGJ5IEF0c3VvIElzaGltb3RvLgotCi0tIEltcGxlbWVudCBQRVAgNDQzICJTaW5nbGUtZGlzcGF0Y2ggZ2VuZXJpYyBmdW5jdGlvbnMiLgotCi0tIEltcGxlbWVudCBQRVAgNDM1ICJBZGRpbmcgYW4gRW51bSB0eXBlIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSIuCi0KLS0gSXNzdWUgIzE1NTk2OiBGYXN0ZXIgcGlja2xpbmcgb2YgdW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxNzU3MjogQXZvaWQgY2hhaW5lZCBleGNlcHRpb25zIHdoZW4gcGFzc2luZyBiYWQgZGlyZWN0aXZlcyB0bwotICB0aW1lLnN0cnB0aW1lKCkuICBJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMTc0MzU6IHRocmVhZGluZy5UaW1lcidzIF9faW5pdF9fIG1ldGhvZCBubyBsb25nZXIgdXNlcyBtdXRhYmxlCi0gIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgYXJncyBhbmQga3dhcmdzIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzE3NTI2OiBmaXggYW4gSW5kZXhFcnJvciByYWlzZWQgd2hpbGUgcGFzc2luZyBjb2RlIHdpdGhvdXQgZmlsZW5hbWUgdG8KLSAgaW5zcGVjdC5maW5kc291cmNlKCkuICBJbml0aWFsIHBhdGNoIGJ5IFR5bGVyIERveWxlLgotCi0tIElzc3VlICMxNzU0MDogQWRkZWQgc3R5bGUgcGFyYW1ldGVyIHRvIGxvZ2dpbmcgZm9ybWF0dGVyIGNvbmZpZ3VyYXRpb24gYnkgZGljdC4KLQotLSBJc3N1ZSAjMTY2OTI6IFRoZSBzc2wgbW9kdWxlIG5vdyBzdXBwb3J0cyBUTFMgMS4xIGFuZCBUTFMgMS4yLiAgSW5pdGlhbAotICBwYXRjaCBieSBNaWNoZWxlIE9ycsO5LgotCi0tIElzc3VlICMxNzAyNTogbXVsdGlwcm9jZXNzaW5nOiBSZWR1Y2UgUXVldWUgYW5kIFNpbXBsZVF1ZXVlIGNvbnRlbnRpb24uCi0KLS0gSXNzdWUgIzE3NTM2OiBBZGQgdG8gd2ViYnJvd3NlcidzIGJyb3dzZXIgbGlzdDogd3d3LWJyb3dzZXIsIHgtd3d3LWJyb3dzZXIsCi0gIGljZXdlYXNlbCwgaWNlYXBlLgotCi0tIElzc3VlICMxNzE1MDogcHByaW50IG5vdyB1c2VzIGxpbmUgY29udGludWF0aW9ucyB0byB3cmFwIGxvbmcgc3RyaW5nCi0gIGxpdGVyYWxzLgotCi0tIElzc3VlICMxNzQ4ODogQ2hhbmdlIHRoZSBzdWJwcm9jZXNzLlBvcGVuIGJ1ZnNpemUgcGFyYW1ldGVyIGRlZmF1bHQgdmFsdWUKLSAgZnJvbSB1bmJ1ZmZlcmVkICgwKSB0byBidWZmZXJpbmcgKC0xKSB0byBtYXRjaCB0aGUgYmVoYXZpb3IgZXhpc3RpbmcgY29kZQotICBleHBlY3RzIGFuZCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIGluIFB5dGhvbiAyIHRvIGF2b2lkCi0gIGludHJvZHVjaW5nIGhhcmQgdG8gdHJhY2sgZG93biBidWdzLgotCi0tIElzc3VlICMxNzUyMTogQ29ycmVjdGVkIG5vbi1lbmFibGluZyBvZiBsb2dnZXIgZm9sbG93aW5nIHR3byBjYWxscyB0bwotICBmaWxlQ29uZmlnKCkuCi0KLS0gSXNzdWUgIzE3NTA4OiBDb3JyZWN0ZWQgbG9nZ2luZyBNZW1vcnlIYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW4gZGljdENvbmZpZygpCi0gIHdoZXJlIHRoZSB0YXJnZXQgaGFuZGxlciB3YXNuJ3QgY29uZmlndXJlZCBmaXJzdC4KLQotLSBJc3N1ZSAjMTcyMDk6IGN1cnNlcy53aW5kb3cuZ2V0X3djaCgpIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBLZXlib2FyZEludGVycnVwdAotICAoQ1RSTCtjKS4KLQotLSBJc3N1ZSAjNTcxMzogc210cGxpYiBub3cgaGFuZGxlcyA0MjEgKGNsb3NpbmcgY29ubmVjdGlvbikgZXJyb3IgY29kZXMgd2hlbgotICBzZW5kaW5nIG1haWwgYnkgY2xvc2luZyB0aGUgc29ja2V0IGFuZCByZXBvcnRpbmcgdGhlIDQyMSBlcnJvciBjb2RlIHZpYSB0aGUKLSAgZXhjZXB0aW9uIGFwcHJvcHJpYXRlIHRvIHRoZSBjb21tYW5kIHRoYXQgcmVjZWl2ZWQgdGhlIGVycm9yIHJlc3BvbnNlLgotCi0tIElzc3VlICMxNjk5NzogdW5pdHRlc3QuVGVzdENhc2Ugbm93IHByb3ZpZGVzIGEgc3ViVGVzdCgpIGNvbnRleHQgbWFuYWdlcgotICB0byBwcm9jZWR1cmFsbHkgZ2VuZXJhdGUsIGluIGFuIGVhc3kgd2F5LCBzbWFsbCB0ZXN0IGluc3RhbmNlcy4KLQotLSBJc3N1ZSAjMTc0ODU6IEFsc28gZGVsZXRlIHRoZSBSZXF1ZXN0IENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpZiB0aGUgZGF0YQotICBhdHRyaWJ1dGUgaXMgZGVsZXRlZC4gIChGb2xsb3cgb24gdG8gaXNzdWUgSXNzdWUgIzE2NDY0KS4KLQotLSBJc3N1ZSAjMTU5Mjc6IENWUyBub3cgY29ycmVjdGx5IHBhcnNlcyBlc2NhcGVkIG5ld2xpbmVzIGFuZCBjYXJyaWFnZQotICB3aGVuIHBhcnNpbmcgd2l0aCBxdW90aW5nIHR1cm5lZCBvZmYuCi0KLS0gSXNzdWUgIzE3NDY3OiBhZGQgcmVhZGxpbmUgYW5kIHJlYWRsaW5lcyBzdXBwb3J0IHRvIG1vY2tfb3BlbiBpbgotICB1bml0dGVzdC5tb2NrLgotCi0tIElzc3VlICMxMzI0ODogcmVtb3ZlZCBkZXByZWNhdGVkIGFuZCB1bmRvY3VtZW50ZWQgZGlmZmxpYi5pc2JqdW5rLAotICBpc2Jwb3B1bGFyLgotCi0tIElzc3VlICMxNzE5MjogVXBkYXRlIHRoZSBjdHlwZXMgbW9kdWxlJ3MgbGliZmZpIHRvIHYzLjAuMTMuICBUaGlzCi0gIHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSBzdGFjayBtaXNhbGlnbm1lbnQgaXNzdWUgb24geDg2IGFuZCBpc3N1ZXMgb24KLSAgc29tZSBtb3JlIHJlY2VudCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzg4NjI6IEZpeGVkIGN1cnNlcyBjbGVhbnVwIHdoZW4gZ2V0a2V5IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgotCi0tIElzc3VlICMxNzQ0MzogaW1hcGxpYi5JTUFQNF9zdHJlYW0gd2FzIHVzaW5nIHRoZSBkZWZhdWx0IHVuYnVmZmVyZWQgSU8KLSAgaW4gc3VicHJvY2VzcywgYnV0IHRoZSBpbWFwIGNvZGUgYXNzdW1lcyBidWZmZXJlZCBJTy4gIEluIFB5dGhvbjIgdGhpcwotICB3b3JrZWQgYnkgYWNjaWRlbnQuICBJTUFQNF9zdHJlYW0gbm93IGV4cGxpY2l0bHkgdXNlcyBidWZmZXJlZCBJTy4KLQotLSBJc3N1ZSAjMTc0NzY6IEZpeGVkIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMiBpbiB1bmRvY3VtZW50ZWQgcHlkb2MKLSAgJ2FsbG1ldGhvZHMnOyBpdCB3YXMgbWlzc2luZyB1bmJvdW5kIG1ldGhvZHMgb24gdGhlIGNsYXNzLgotCi0tIElzc3VlICMxNzQ3NDogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZHMgb2YgUmVxdWVzdCBjbGFzcy4KLQotLSBJc3N1ZSAjMTY3MDk6IHVuaXR0ZXN0IGRpc2NvdmVyIG9yZGVyIGlzIG5vLWxvbmdlciBmaWxlc3lzdGVtIHNwZWNpZmljLiBQYXRjaAotICBieSBKZWZmIFJhbW5hbmkuCi0KLS0gVXNlIHRoZSBIVFRQUyBQeVBJIHVybCBmb3IgdXBsb2FkLCBvdmVycmlkaW5nIGFueSBwbGFpbiBIVFRQIFVSTCBpbiBweXBpcmMuCi0KLS0gSXNzdWUgIzUwMjQ6IHNuZGhkci53aGljaGhkciBub3cgcmV0dXJucyB0aGUgZnJhbWUgY291bnQgZm9yIFdBViBmaWxlcwotICByYXRoZXIgdGhhbiAtMS4KLQotLSBJc3N1ZSAjMTc0NjA6IFJlbW92ZSB0aGUgc3RyaWN0IGFyZ3VtZW50IG9mIEhUVFBDb25uZWN0aW9uIGFuZCByZW1vdmluZyB0aGUKLSAgRGVwcmVjYXRpb25XYXJuaW5nIGJlaW5nIGlzc3VlZCBmcm9tIDMuMiBvbndhcmRzLgotCi0tIElzc3VlICMxNjg4MDogRG8gbm90IGFzc3VtZSBfaW1wLmxvYWRfZHluYW1pYygpIGlzIGRlZmluZWQgaW4gdGhlIGltcCBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2Mzg5OiBGaXhlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uIDMuMSBpbiB0aGUKLSAgY2FjaGluZyBvZiBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zLgotCi0tIEFkZGVkIG1pc3NpbmcgRmVlZFBhcnNlciBhbmQgQnl0ZXNGZWVkUGFyc2VyIHRvIGVtYWlsLnBhcnNlci5fX2FsbF9fLgotCi0tIElzc3VlICMxNzQzMTogRml4IG1pc3NpbmcgaW1wb3J0IG9mIEJ5dGVzRmVlZFBhcnNlciBpbiBlbWFpbC5wYXJzZXIuCi0KLS0gSXNzdWUgIzEyOTIxOiBodHRwLnNlcnZlcidzIHNlbmRfZXJyb3IgdGFrZXMgYW4gZXhwbGFpbiBhcmd1bWVudCB0byBzZW5kIG1vcmUKLSAgaW5mb3JtYXRpb24gaW4gcmVzcG9uc2UuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEthcmwuCi0KLS0gSXNzdWUgIzE3NDE0OiBBZGQgdGltZWl0LCByZXBlYXQsIGFuZCBkZWZhdWx0X3RpbWVyIHRvIHRpbWVpdC5fX2FsbF9fLgotCi0tIElzc3VlICMxMjg1MDg2OiBHZXQgcmlkIG9mIHRoZSByZWZjb3VudGluZyBoYWNrIGFuZCBzcGVlZCB1cAotICB1cmxsaWIucGFyc2UudW5xdW90ZSgpIGFuZCB1cmxsaWIucGFyc2UudW5xdW90ZV90b19ieXRlcygpLgotCi0tIElzc3VlICMxNzA5OTogSGF2ZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSByYWlzZSBWYWx1ZUVycm9yIHdoZW4gX19sb2FkZXJfXwotICBpcyBub3Qgc2V0LCBoYXJtb25pemluZyB3aXRoIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgc2V0IHRvIE5vbmUuCi0KLS0gRXhwb3NlIHRoZSBPX1BBVEggY29uc3RhbnQgaW4gdGhlIG9zIG1vZHVsZSBpZiBpdCBpcyBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzE3MzY4OiBGaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUgUHl0aG9uIEpTT04gZGVjb2RlciB0aGF0IGNhdXNlZAotICBhIGZhaWx1cmUgd2hpbGUgZGVjb2RpbmcgZW1wdHkgb2JqZWN0IGxpdGVyYWxzIHdoZW4gb2JqZWN0X3BhaXJzX2hvb2sgd2FzCi0gIHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjMTczODU6IEZpeCBxdWFkcmF0aWMgYmVoYXZpb3IgaW4gdGhyZWFkaW5nLkNvbmRpdGlvbi4gIFRoZSBGSUZPCi0gIHF1ZXVlIG5vdyB1c2VzIGEgZGVxdWUgaW5zdGVhZCBvZiBhIGxpc3QuCi0KLS0gSXNzdWUgIzE1ODA2OiBBZGQgY29udGV4dGxpYi5pZ25vcmUoKS4gIFRoaXMgY3JlYXRlcyBhIGNvbnRleHQgbWFuYWdlciB0bwotICBpZ25vcmUgc3BlY2lmaWVkIGV4Y2VwdGlvbnMsIHJlcGxhY2luZyB0aGUgImV4Y2VwdCBTb21lRXhjZXB0aW9uOiBwYXNzIiBpZGlvbS4KLQotLSBJc3N1ZSAjMTQ2NDU6IFRoZSBlbWFpbCBnZW5lcmF0b3IgY2xhc3NlcyBub3cgcHJvZHVjZSBvdXRwdXQgdXNpbmcgdGhlCi0gIHNwZWNpZmllZCBsaW5lc2VwIHRocm91Z2hvdXQuICBQcmV2aW91c2x5IGlmIHRoZSBwcm9sb2csIGVwaWxvZywgb3IKLSAgYm9keSB3ZXJlIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxpbmVzZXAsIHRoYXQgbGluZXNlcCB3YXMgdXNlZC4gIFRoaXMKLSAgZml4IGNvcnJlY3RzIGFuIFJGQyBub24tY29tcGxpYW5jZSBpc3N1ZSB3aXRoIHNtdHBsaWIuc2VuZF9tZXNzYWdlLgotCi0tIElzc3VlICMxNzI3ODogRml4IGEgY3Jhc2ggaW4gaGVhcHEuaGVhcHB1c2goKSBhbmQgaGVhcHEuaGVhcHBvcCgpIHdoZW4KLSAgdGhlIGxpc3QgaXMgYmVpbmcgcmVzaXplZCBjb25jdXJyZW50bHkuCi0KLS0gSXNzdWUgIzE2OTYyOiBVc2UgZ2V0ZGVudHM2NCBpbnN0ZWFkIG9mIHRoZSBvYnNvbGV0ZSBnZXRkZW50cyBzeXNjYWxsCi0gIGluIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBvbiBMaW51eC4KLQotLSBJc3N1ZSAjMTY5MzU6IHVuaXR0ZXN0IG5vdyBjb3VudHMgdGhlIG1vZHVsZSBhcyBza2lwcGVkIGlmIGl0IHJhaXNlcyBTa2lwVGVzdCwKLSAgaW5zdGVhZCBvZiBjb3VudGluZyBpdCBhcyBhbiBlcnJvci4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTcwMTg6IE1ha2UgUHJvY2Vzcy5qb2luKCkgcmV0cnkgaWYgb3Mud2FpdHBpZCgpIGZhaWxzIHdpdGggRUlOVFIuCi0KLS0gSXNzdWUgIzE3MjIzOiBhcnJheSBtb2R1bGU6IEZpeCBhIGNyYXNoZXIgd2hlbiBjb252ZXJ0aW5nIGFuIGFycmF5IGNvbnRhaW5pbmcKLSAgaW52YWxpZCBjaGFyYWN0ZXJzIChvdXRzaWRlIHJhbmdlIFtVKzAwMDA7IFUrMTBmZmZmXSkgdG8gVW5pY29kZToKLSAgcmVwcihhcnJheSksIHN0cihhcnJheSkgYW5kIGFycmF5LnRvdW5pY29kZSgpLiBQYXRjaCB3cml0dGVuIGJ5IE1hbnVlbCBKYWNvYi4KLQotLSBJc3N1ZSAjMTcxOTc6IHByb2ZpbGUvY1Byb2ZpbGUgbW9kdWxlcyByZWZhY3RvcmVkIHNvIHRoYXQgY29kZSBvZiBydW4oKSBhbmQKLSAgcnVuY3R4KCkgdXRpbGl0eSBmdW5jdGlvbnMgaXMgbm90IGR1cGxpY2F0ZWQgaW4gYm90aCBtb2R1bGVzLgotCi0tIElzc3VlICMxNDcyMDogc3FsaXRlMzogQ29udmVydCBkYXRldGltZSBtaWNyb3NlY29uZHMgY29ycmVjdGx5LgotICBQYXRjaCBieSBMb3dlIFRoaWRlcm1hbi4KLQotLSBJc3N1ZSAjMTUxMzI6IEFsbG93IGEgbGlzdCBmb3IgdGhlIGRlZmF1bHRUZXN0IGFyZ3VtZW50IG9mCi0gIHVuaXR0ZXN0LlRlc3RQcm9ncmFtLiBQYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxNzIyNTogSlNPTiBkZWNvZGVyIG5vdyBjb3VudHMgY29sdW1ucyBpbiB0aGUgZmlyc3QgbGluZSBzdGFydGluZwotICB3aXRoIDEsIGFzIGluIG90aGVyIGxpbmVzLgotCi0tIElzc3VlICM2NjIzOiBBZGRlZCBleHBsaWNpdCBEZXByZWNhdGlvbldhcm5pbmcgZm9yIGZ0cGxpYi5uZXRyYywgd2hpY2ggaGFzCi0gIGJlZW4gZGVwcmVjYXRlZCBhbmQgdW5kb2N1bWVudGVkIGZvciBhIGxvbmcgdGltZS4KLQotLSBJc3N1ZSAjMTM3MDA6IEZpeCBieXRlL3N0cmluZyBoYW5kbGluZyBpbiBpbWFwbGliIGF1dGhlbnRpY2F0aW9uIHdoZW4gYW4KLSAgYXV0aG9iamVjdCBpcyBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzEzMTUzOiBUa2ludGVyIGZ1bmN0aW9ucyBub3cgcmFpc2UgVGNsRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIHdoZW4KLSAgYSBzdHJpbmcgYXJndW1lbnQgY29udGFpbnMgbm9uLUJNUCBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzk2Njk6IFByb3RlY3QgcmUgYWdhaW5zdCBpbmZpbml0ZSBsb29wcyBvbiB6ZXJvLXdpZHRoIG1hdGNoaW5nIGluCi0gIG5vbi1ncmVlZHkgcmVwZWF0LiAgUGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgotCi0tIElzc3VlICMxMzE2OTogVGhlIG1heGltYWwgcmVwZXRpdGlvbiBudW1iZXIgaW4gYSByZWd1bGFyIGV4cHJlc3Npb24gaGFzIGJlZW4KLSAgaW5jcmVhc2VkIGZyb20gNjU1MzQgdG8gMjE0NzQ4MzY0NyAob24gMzItYml0IHBsYXRmb3JtKSBvciA0Mjk0OTY3Mjk0IChvbgotICA2NC1iaXQpLgotCi0tIElzc3VlICMxNzE0MzogRml4IGEgbWlzc2luZyBpbXBvcnQgaW4gdGhlIHRyYWNlIG1vZHVsZS4gIEluaXRpYWwgcGF0Y2ggYnkKLSAgQmVya2VyIFBla3NhZy4KLQotLSBJc3N1ZSAjMTUyMjA6IGVtYWlsLmZlZWRwYXJzZXIncyBsaW5lIHNwbGl0dGluZyBhbGdvcml0aG0gaXMgbm93IHNpbXBsZXIgYW5kCi0gIGZhc3Rlci4KLQotLSBJc3N1ZSAjMTY3NDM6IEZpeCBtbWFwIG92ZXJmbG93IGNoZWNrIG9uIDMyIGJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxNjk5Njogd2ViYnJvd3NlciBtb2R1bGUgbm93IHVzZXMgc2h1dGlsLndoaWNoKCkgdG8gZmluZCBhCi0gIHdlYi1icm93c2VyIG9uIHRoZSBleGVjdXRhYmxlIHNlYXJjaCBwYXRoLgotCi0tIElzc3VlICMxNjgwMDogdGVtcGZpbGUuZ2V0dGVtcGRpcigpIG5vIGxvbmdlciBsZWZ0IHRlbXBvcmFyeSBmaWxlcyB3aGVuCi0gIHRoZSBkaXNrIGlzIGZ1bGwuICBPcmlnaW5hbCBwYXRjaCBieSBBbWlyIFN6ZWtlbHkuCi0KLS0gSXNzdWUgIzE3MTkyOiBJbXBvcnQgbGliZmZpLTMuMC4xMi4KLQotLSBJc3N1ZSAjMTY1NjQ6IEZpeGVkIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMiBpbiB0aGUgb3BlcmF0aW9uIG9mCi0gIGVtYWlsLmVuY29kZXJzLmVuY29kZV83b3I4Yml0IHdoZW4gdXNlZCB3aXRoIGJpbmFyeSBkYXRhLgotCi0tIElzc3VlICMxNzA1MjogdW5pdHRlc3QgZGlzY292ZXJ5IHNob3VsZCB1c2Ugc2VsZi50ZXN0TG9hZGVyLgotCi0tIElzc3VlICM0NTkxOiBVaWQgYW5kIGdpZCB2YWx1ZXMgbGFyZ2VyIHRoYW4gMioqMzEgYXJlIHN1cHBvcnRlZCBub3cuCi0KLS0gSXNzdWUgIzE3MTQxOiByYW5kb20udm9ubWlzZXN2YXJpYXRlKCkgbm8gbG9uZ2VyIGhhbmdzIGZvciBsYXJnZSBrYXBwYXMuCi0KLS0gSXNzdWUgIzE3MTQ5OiBGaXggcmFuZG9tLnZvbm1pc2VzdmFyaWF0ZSB0byBhbHdheXMgcmV0dXJuIHJlc3VsdHMgaW4KLSAgWzAsIDIqbWF0aC5waV0uCi0KLS0gSXNzdWUgIzE0NzA1NDg6IFhNTEdlbmVyYXRvciBub3cgd29ya3Mgd2l0aCBiaW5hcnkgb3V0cHV0IHN0cmVhbXMuCi0KLS0gSXNzdWUgIzY5NzU6IG9zLnBhdGgucmVhbHBhdGgoKSBub3cgY29ycmVjdGx5IHJlc29sdmVzIG11bHRpcGxlIG5lc3RlZAotICBzeW1saW5rcyBvbiBQT1NJWCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEzNzczOiBzcWxpdGUzLmNvbm5lY3QoKSBnZXRzIGEgbmV3IGB1cmlgIHBhcmFtZXRlciB0byBwYXNzIHRoZQotICBmaWxlbmFtZSBhcyBhIFVSSSwgYWxsb3dpbmcgY3VzdG9tIG9wdGlvbnMgdG8gYmUgcGFzc2VkLgotCi0tIElzc3VlICMxNjU2NDogRml4ZWQgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yIGluIHRoZSBvcGVyYXRpb24gb2YKLSAgZW1haWwuZW5jb2RlcnMuZW5jb2RlX25vb3Agd2hlbiB1c2VkIHdpdGggYmluYXJ5IGRhdGEuCi0KLS0gSXNzdWUgIzEwMzU1OiBUaGUgbW9kZSwgbmFtZSwgZW5jb2RpbmcgYW5kIG5ld2xpbmVzIHByb3BlcnRpZXMgbm93IHdvcmsgb24KLSAgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgb2JqZWN0cyBldmVuIHdoZW4gdGhleSBoYXZlIG5vdCB5ZXQgcm9sbGVkIG92ZXIuCi0gIE9ic29sZXRlIG1ldGhvZCB4cmVhZGxpbmUgKHdoaWNoIGhhcyBuZXZlciB3b3JrZWQgaW4gUHl0aG9uIDMpIGhhcyBiZWVuCi0gIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzE2Njg2OiBGaXhlZCBhIGxvdCBvZiBidWdzIGluIGF1ZGlvb3AgbW9kdWxlLiAgRml4ZWQgY3Jhc2hlcyBpbgotICBhdmdwcCgpLCBtYXhwcCgpIGFuZCByYXRlY3YoKS4gIEZpeGVkIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYWRkKCksIGJpYXMoKSwKLSAgYW5kIHJhdGVjdigpLiAgcmV2ZXJzZSgpLCBsaW4ybGluKCkgYW5kIHJhdGVjdigpIG5vIG1vcmUgbG9zZSBwcmVjaXNpb24gZm9yCi0gIDMyLWJpdCBzYW1wbGVzLiAgbWF4KCkgYW5kIHJtcygpIG5vIG1vcmUgcmV0dXJucyBhIG5lZ2F0aXZlIHJlc3VsdCBhbmQKLSAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggMzItYml0IHNhbXBsZSAtMHg4MDAwMDAwMC4KLQotLSBJc3N1ZSAjMTcwNzM6IEZpeCBzb21lIGludGVnZXIgb3ZlcmZsb3dzIGluIHNxbGl0ZTMgbW9kdWxlLgotCi0tIElzc3VlICMxNjcyMzogaHR0cGxpYi5IVFRQUmVzcG9uc2Ugbm8gbG9uZ2VyIG1hcmtlZCBjbG9zZWQgd2hlbiB0aGUgY29ubmVjdGlvbgotICBpcyBhdXRvbWF0aWNhbGx5IGNsb3NlZC4KLQotLSBJc3N1ZSAjMTUzNTk6IEFkZCBDQU5fQkNNIHByb3RvY29sIHN1cHBvcnQgdG8gdGhlIHNvY2tldCBtb2R1bGUuIFBhdGNoIGJ5Ci0gIEJyaWFuIFRob3JuZS4KLQotLSBJc3N1ZSAjMTY5NDg6IEZpeCBxdW90ZWQgcHJpbnRhYmxlIGJvZHkgZW5jb2RpbmcgZm9yIG5vbi1sYXRpbjEgY2hhcmFjdGVyCi0gIHNldHMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzE2ODExOiBGaXggZm9sZGluZyBvZiBoZWFkZXJzIHdpdGggbm8gdmFsdWUgaW4gdGhlIHByb3Zpc2lvbmFsIGVtYWlsCi0gIHBvbGljaWVzLgotCi0tIElzc3VlICMxNzEzMjogVXBkYXRlIHN5bWJvbCBmb3IgInlpZWxkIGZyb20iIGdyYW1tYXIgY2hhbmdlcy4KLQotLSBJc3N1ZSAjMTcwNzY6IE1ha2UgY29weWluZyBvZiB4YXR0cnMgbW9yZSB0b2xlcmFudCBvZiBtaXNzaW5nIEZTIHN1cHBvcnQuCi0gIFBhdGNoIGJ5IFRob21hcyBXb3V0ZXJzLgotCi0tIElzc3VlICMxNzA4OTogRXhwYXQgcGFyc2VyIG5vdyBjb3JyZWN0bHkgd29ya3Mgd2l0aCBzdHJpbmcgaW5wdXQgd2hlbiB0aGUKLSAgaW50ZXJuYWwgWE1MIGVuY29kaW5nIGlzIG5vdCBVVEYtOCBvciBVUy1BU0NJSS4gIEl0IGFsc28gbm93IGFjY2VwdHMgYnl0ZXMKLSAgYW5kIHN0cmluZ3MgbGFyZ2VyIHRoYW4gMiBHaUIuCi0KLS0gSXNzdWUgIzYwODM6IEZpeCBtdWx0aXBsZSBzZWdtZW50YXRpb24gZmF1bHRzIG9jY3VycmVkIHdoZW4gUHlBcmdfUGFyc2VUdXBsZQotICBwYXJzZXMgbmVzdGVkIG11dGF0aW5nIHNlcXVlbmNlLgotCi0tIElzc3VlICM1Mjg5OiBGaXggY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG9uIFNvbGFyaXMuCi0KLS0gSXNzdWUgIzE3MTA2OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgaW4gaW8uVGV4dElPV3JhcHBlciB3aGVuIGFuIHVuZGVybHlpbmcKLSAgc3RyZWFtIG9yIGEgZGVjb2RlciBwcm9kdWNlcyBkYXRhIG9mIGFuIHVuZXhwZWN0ZWQgdHlwZSAoaS5lLiB3aGVuCi0gIGlvLlRleHRJT1dyYXBwZXIgaW5pdGlhbGl6ZWQgd2l0aCB0ZXh0IHN0cmVhbSBvciB1c2UgYnl0ZXMtdG8tYnl0ZXMgY29kZWMpLgotCi0tIElzc3VlICMxNzAxNTogV2hlbiBpdCBoYXMgYSBzcGVjLCBhIE1vY2sgb2JqZWN0IG5vdyBpbnNwZWN0cyBpdHMgc2lnbmF0dXJlCi0gIHdoZW4gbWF0Y2hpbmcgY2FsbHMsIHNvIHRoYXQgYXJndW1lbnRzIGNhbiBiZSBtYXRjaGVkIHBvc2l0aW9uYWxseSBvcgotICBieSBuYW1lLgotCi0tIElzc3VlICMxNTYzMzogaHR0cGxpYi5IVFRQUmVzcG9uc2UgaXMgbm93IG1hcmsgY2xvc2VkIHdoZW4gdGhlIHNlcnZlcgotICBzZW5kcyBsZXNzIHRoYW4gdGhlIGFkdmVydGlzZWQgQ29udGVudC1MZW5ndGguCi0KLS0gSXNzdWUgIzEyMjY4OiBUaGUgaW8gbW9kdWxlIGZpbGUgb2JqZWN0IHdyaXRlIG1ldGhvZHMgbm8gbG9uZ2VyIGFib3J0IGVhcmx5Ci0gIHdoZW4gb25lIG9mIGl0cyB3cml0ZSBzeXN0ZW0gY2FsbHMgaXMgaW50ZXJydXB0ZWQgKEVJTlRSKS4KLQotLSBJc3N1ZSAjNjk3MjogVGhlIHppcGZpbGUgbW9kdWxlIG5vIGxvbmdlciBvdmVyd3JpdGVzIGZpbGVzIG91dHNpZGUgb2YKLSAgaXRzIGRlc3RpbmF0aW9uIHBhdGggd2hlbiBleHRyYWN0aW5nIG1hbGljaW91cyB6aXAgZmlsZXMuCi0KLS0gSXNzdWUgIzQ4NDQ6IFppcEZpbGUgbm93IHJhaXNlcyBCYWRaaXBGaWxlIHdoZW4gb3BlbnMgYSBaSVAgZmlsZSB3aXRoIGFuCi0gIGluY29tcGxldGUgIkVuZCBvZiBDZW50cmFsIERpcmVjdG9yeSIgcmVjb3JkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgR3VpbGhlcm1lCi0gIFBvbG8gYW5kIEFsYW4gTWNJbnR5cmUuCi0KLS0gSXNzdWUgIzE3MDcxOiBTaWduYXR1cmUuYmluZCgpIG5vdyB3b3JrcyB3aGVuIG9uZSBvZiB0aGUga2V5d29yZCBhcmd1bWVudHMKLSAgaXMgbmFtZWQgYGBzZWxmYGAuCi0KLS0gSXNzdWUgIzEyMDA0OiBGaXggYW4gaW50ZXJuYWwgZXJyb3IgaW4gUHlaaXBGaWxlIHdoZW4gd3JpdGluZyBhbiBpbnZhbGlkCi0gIFB5dGhvbiBmaWxlLiAgUGF0Y2ggYnkgQmVuIE1vcmdhbi4KLQotLSBIYXZlIHB5X2NvbXBpbGUgdXNlIGltcG9ydGxpYiBhcyBtdWNoIGFzIHBvc3NpYmxlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCi0gIENvZGUgbm93IHJhaXNlcyBGaWxlRXhpc3RzRXJyb3IgaWYgdGhlIGZpbGUgcGF0aCB0byBiZSB1c2VkIGZvciB0aGUKLSAgYnl0ZS1jb21waWxlZCBmaWxlIGlzIGEgc3ltbGluayBvciBub24tcmVndWxhciBmaWxlIGFzIGEgd2FybmluZyB0aGF0IGltcG9ydAotICB3aWxsIG5vdCBrZWVwIHRoZSBmaWxlIHBhdGggdHlwZSBpZiBpdCB3cml0ZXMgdG8gdGhhdCBwYXRoLgotCi0tIElzc3VlICMxNjk3MjogSGF2ZSBzaXRlLmFkZHBhY2thZ2UoKSBjb25zaWRlciBhbHJlYWR5IGtub3duIHBhdGhzIGV2ZW4gd2hlbgotICBub25lIGFyZSBleHBsaWNpdGx5IHBhc3NlZCBpbi4gQnVnIHJlcG9ydCBhbmQgZml4IGJ5IEtpcmlsbC4KLQotLSBJc3N1ZSAjMTYwMjEzMzogb24gTWFjIE9TIFggYSBzaGFyZWQgbGlicmFyeSBidWlsZCAoYGAtLWVuYWJsZS1zaGFyZWRgYCkKLSAgbm93IGZpbGxzIHRoZSBgYG9zLmVudmlyb25gYCB2YXJpYWJsZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE1NTA1OiBgdW5pdHRlc3QuaW5zdGFsbEhhbmRsZXJgIG5vIGxvbmdlciBhc3N1bWVzIFNJR0lOVCBoYW5kbGVyIGlzCi0gIHNldCB0byBhIGNhbGxhYmxlIG9iamVjdC4KLQotLSBJc3N1ZSAjMTM0NTQ6IEZpeCBhIGNyYXNoIHdoZW4gZGVsZXRpbmcgYW4gaXRlcmF0b3IgY3JlYXRlZCBieSBpdGVydG9vbHMudGVlKCkKLSAgaWYgYWxsIG90aGVyIGl0ZXJhdG9ycyB3ZXJlIHZlcnkgYWR2YW5jZWQgYmVmb3JlLgotCi0tIElzc3VlICMxMjQxMTogRml4IHRvIGNnaS5wYXJzZV9tdWx0aXBhcnQgdG8gY29ycmVjdGx5IHVzZSBieXRlcyBib3VuZGFyaWVzCi0gIGFuZCBieXRlcyBkYXRhLiBQYXRjaCBieSBKb25hcyBXYWduZXIuCi0KLS0gSXNzdWUgIzE2OTU3OiBzaHV0aWwud2hpY2goKSBubyBsb25nZXIgc2VhcmNoZXMgYSBiYXJlIGZpbGUgbmFtZSBpbiB0aGUKLSAgY3VycmVudCBkaXJlY3Rvcnkgb24gVW5peCBhbmQgbm8gbG9uZ2VyIHNlYXJjaGVzIGEgcmVsYXRpdmUgZmlsZSBwYXRoIHdpdGgKLSAgYSBkaXJlY3RvcnkgcGFydCBpbiBQQVRIIGRpcmVjdG9yaWVzLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzExNTkwNTE6IEd6aXBGaWxlIG5vdyByYWlzZXMgRU9GRXJyb3Igd2hlbiByZWFkaW5nIGEgY29ycnVwdGVkIGZpbGUKLSAgd2l0aCB0cnVuY2F0ZWQgaGVhZGVyIG9yIGZvb3Rlci4KLQotLSBJc3N1ZSAjMTY5OTM6IHNodXRpbC53aGljaCgpIG5vdyBwcmVzZXJ2ZXMgdGhlIGNhc2Ugb2YgdGhlIHBhdGggYW5kIGV4dGVuc2lvbgotICBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNjk5MjogT24gV2luZG93cyBpbiBzaWduYWwuc2V0X3dha2V1cF9mZCwgdmFsaWRhdGUgdGhlIGZpbGUKLSAgZGVzY3JpcHRvciBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTY0MjI6IEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFB5dGhvbiB2ZXJzaW9uLCB0aGUgQyB2ZXJzaW9uIG9mCi0gIGRlY2ltYWwgbm93IHVzZXMgc3RyaW5ncyBpbnN0ZWFkIG9mIGludGVnZXJzIGZvciByb3VuZGluZyBtb2RlIGNvbnN0YW50cy4KLQotLSBJc3N1ZSAjMTU4NjE6IHRraW50ZXIgbm93IGNvcnJlY3RseSB3b3JrcyB3aXRoIGxpc3RzIGFuZCB0dXBsZXMgY29udGFpbmluZwotICBzdHJpbmdzIHdpdGggd2hpdGVzcGFjZXMsIGJhY2tzbGFzaGVzIG9yIHVuYmFsYW5jZWQgYnJhY2VzLgotCi0tIElzc3VlICM5NzIwOiB6aXBmaWxlIG5vdyB3cml0ZXMgY29ycmVjdCBsb2NhbCBoZWFkZXJzIGZvciBmaWxlcyBsYXJnZXIgdGhhbgotICA0IEdpQi4KLQotLSBJc3N1ZSAjMTY5NTU6IEZpeCB0aGUgcG9sbCgpIG1ldGhvZCBmb3IgbXVsdGlwcm9jZXNzaW5nJ3Mgc29ja2V0Ci0gIGNvbm5lY3Rpb25zIG9uIFdpbmRvd3MuCi0KLS0gU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG5vdyBwcm9wZXJseSBjbG9zZXMgdGhlIGlucHV0IGZpbGUuCi0KLS0gSXNzdWUgIzE1MDMxOiBSZWZhY3RvciBzb21lIC5weWMgbWFuYWdlbWVudCBjb2RlIHRvIGN1dCBkb3duIG9uIGNvZGUKLSAgZHVwbGljYXRpb24uIFRoYW5rcyB0byBSb25hbiBMYW15IGZvciB0aGUgcmVwb3J0IGFuZCB0YWtpbmcgYW4gaW5pdGlhbCBzdGFiCi0gIGF0IHRoZSBwcm9ibGVtLgotCi0tIElzc3VlICMxNjM5ODogT3B0aW1pemUgZGVxdWUucm90YXRlKCkgc28gdGhhdCBpdCBvbmx5IG1vdmVzIHBvaW50ZXJzCi0gIGFuZCBkb2Vzbid0IHRvdWNoIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2l0aCBpbmNyZWZzIGFuZCBkZWNyZWZzLgotCi0tIElzc3VlICMxNjkwMDogSXNzdWUgYSBSZXNvdXJjZVdhcm5pbmcgd2hlbiBhbiBzc2wgc29ja2V0IGlzIGxlZnQgdW5jbG9zZWQuCi0KLS0gSXNzdWUgIzEzODk5OiBgYFxBYGAsIGBgXFpgYCwgYW5kIGBgXEJgYCBub3cgY29ycmVjdGx5IG1hdGNoIHRoZSBBLCBaLAotICBhbmQgQiBsaXRlcmFscyB3aGVuIHVzZWQgaW5zaWRlIGNoYXJhY3RlciBjbGFzc2VzIChlLmcuIGBgJ1tcQV0nYGApLgotICBQYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCi0KLS0gSXNzdWUgIzE1NTQ1OiBGaXggcmVncmVzc2lvbiBpbiBzcWxpdGUzJ3MgaXRlcmR1bXAgbWV0aG9kIHdoZXJlIGl0IHdhcwotICBmYWlsaW5nIGlmIHRoZSBjb25uZWN0aW9uIHVzZWQgYSByb3cgZmFjdG9yeSAoc3VjaCBhcyBzcWxpdGUzLlJvdykgdGhhdAotICBwcm9kdWNlZCB1bnNvcnRhYmxlIG9iamVjdHMuIChSZWdyZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgOTc1MCkuCi0KLS0gZmNudGw6IGFkZCBGX0RVUEZEX0NMT0VYRUMgY29uc3RhbnQsIGF2YWlsYWJsZSBvbiBMaW51eCAyLjYuMjQrLgotCi0tIElzc3VlICMxNTk3MjogRml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gb3MgZnVuY3Rpb25zIGV4cGVjdGluZyBhIGZpbGUgbmFtZSBvcgotICBmaWxlIGRlc2NyaXB0b3IgcmVjZWl2ZSB0aGUgaW5jb3JyZWN0IHR5cGUuCi0KLS0gSXNzdWUgIzgxMDk6IFRoZSBzc2wgbW9kdWxlIG5vdyBoYXMgc3VwcG9ydCBmb3Igc2VydmVyLXNpZGUgU05JLCB0aGFua3MKLSAgdG8gYSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfc2VydmVybmFtZV9jYWxsYmFja2AgbWV0aG9kLiAgUGF0Y2ggYnkgRGFuaWVsCi0gIEJsYWNrLgotCi0tIElzc3VlICMxNjg2MDogSW4gdGVtcGZpbGUsIHVzZSBPX0NMT0VYRUMgd2hlbiBhdmFpbGFibGUgdG8gc2V0IHRoZQotICBjbG9zZS1vbi1leGVjIGZsYWcgYXRvbWljYWxseS4KLQotLSBJc3N1ZSAjMTY2NzQ6IHJhbmRvbS5nZXRyYW5kYml0cygpIGlzIG5vdyAyMC00MCUgZmFzdGVyIGZvciBzbWFsbCBpbnRlZ2Vycy4KLQotLSBJc3N1ZSAjMTYwMDk6IEpTT04gZXJyb3IgbWVzc2FnZXMgbm93IHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjMTY4Mjg6IEZpeCBlcnJvciBpbmNvcnJlY3RseSByYWlzZWQgYnkgYnoyLmNvbXByZXNzKGInJykgYW5kCi0gIGJ6Mi5CWjJDb21wcmVzc29yLmNvbXByZXNzKGInJykuIEluaXRpYWwgcGF0Y2ggYnkgTWFydGluIFBhY2ttYW4uCi0KLS0gSXNzdWUgIzE2ODMzOiBJbiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiwgZG8gbm90IGNvbmNhdGVuYXRlIHRoZSByZXF1ZXN0Ci0gIGhlYWRlcnMgYW5kIGJvZHkgd2hlbiB0aGUgcGF5bG9hZCBleGNlZWRzIDE2IEtCLCBzaW5jZSBpdCBjYW4gY29uc3VtZSBtb3JlCi0gIG1lbW9yeSBmb3Igbm8gYmVuZWZpdC4gIFBhdGNoIGJ5IEJlbm5vIExlc2xpZS4KLQotLSBJc3N1ZSAjMTY1NDE6IHRrX3NldFBhbGV0dGUoKSBub3cgd29ya3Mgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTY4MjA6IEluIGNvbmZpZ3BhcnNlciwgYHBhcnNlci5wb3BpdGVtKClgIG5vIGxvbmdlciByYWlzZXMgVmFsdWVFcnJvci4KLSAgVGhpcyBtYWtlcyBgcGFyc2VyLmNsZWFuKClgIHdvcmsgY29ycmVjdGx5LgotCi0tIElzc3VlICMxNjgyMDogSW4gY29uZmlncGFyc2VyLCBgYHBhcnNlclsnc2VjdGlvbiddID0ge31gYCBub3cgcHJlc2VydmVzCi0gIHNlY3Rpb24gb3JkZXIgd2l0aGluIHRoZSBwYXJzZXIuIFRoaXMgbWFrZXMgYHBhcnNlci51cGRhdGUoKWAgcHJlc2VydmUgc2VjdGlvbgotICBvcmRlciBhcyB3ZWxsLgotCi0tIElzc3VlICMxNjgyMDogSW4gY29uZmlncGFyc2VyLCBgYHBhcnNlclsnREVGQVVMVCddID0ge31gYCBub3cgY29ycmVjdGx5Ci0gIGNsZWFycyBwcmV2aW91cyB2YWx1ZXMgc3RvcmVkIGluIHRoZSBkZWZhdWx0IHNlY3Rpb24uIFNhbWUgZ29lcyBmb3IKLSAgYGBwYXJzZXIudXBkYXRlKHsnREVGQVVMVCc6IHt9fSlgYC4KLQotLSBJc3N1ZSAjOTU4NjogUmVkZWZpbmUgU0VNX0ZBSUxFRCBvbiBNYWNPU1ggdG8ga2VlcCBjb21waWxlciBoYXBweS4KLQotLSBJc3N1ZSAjMTY3ODc6IEluY3JlYXNlIGFzeW5jb3JlIGFuZCBhc3luY2hhdCBkZWZhdWx0IG91dHB1dCBidWZmZXJzIHNpemUsIHRvCi0gIGRlY3JlYXNlIENQVSB1c2FnZSBhbmQgaW5jcmVhc2UgdGhyb3VnaHB1dC4KLQotLSBJc3N1ZSAjMTA1Mjc6IG1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBwb2xsKCkgaW5zdGVhZCBvZiBzZWxlY3QoKSBpZiBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzE2Njg4OiBOb3cgcmVnZXhlcyBjb250YWluZWQgYmFja3JlZmVyZW5jZXMgY29ycmVjdGx5IHdvcmsgd2l0aAotICBub24tQVNDSUkgc3RyaW5ncy4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KLQotLSBJc3N1ZSAjMTY0ODY6IE1ha2UgYWlmYyBmaWxlcyBhY3QgYXMgY29udGV4dCBtYW5hZ2Vycy4KLQotLSBJc3N1ZSAjMTY0ODU6IE5vdyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBjbG9zZWQgaWYgZmlsZSBoZWFkZXIgcGF0Y2hpbmcgZmFpbGVkCi0gIG9uIGNsb3NpbmcgYW4gYWlmYyBmaWxlLgotCi0tIElzc3VlICMxNjY0MDogUnVuIGxlc3MgY29kZSB1bmRlciBhIGxvY2sgaW4gc2NoZWQgbW9kdWxlLgotCi0tIElzc3VlICMxNjE2NTogc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG5vIGxvbmdlciBibG9ja3MgYSBzY2hlZHVsZXIgZm9yIG90aGVyCi0gIHRocmVhZHMuCi0KLS0gSXNzdWUgIzE2NjQxOiBEZWZhdWx0IHZhbHVlcyBvZiBzY2hlZC5zY2hlZHVsZXIuZW50ZXIoKSBhcmUgbm8gbG9uZ2VyCi0gIG1vZGlmaWFibGUuCi0KLS0gSXNzdWUgIzE2NjE4OiBNYWtlIGdsb2IuZ2xvYiBtYXRjaCBjb25zaXN0ZW50bHkgYWNyb3NzIHN0cmluZ3MgYW5kIGJ5dGVzCi0gIHJlZ2FyZGluZyBsZWFkaW5nIGRvdHMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjc4ODogQWRkIHNhbWVzdGF0IHRvIExpYi9udHBhdGgucHkKLQotLSBJc3N1ZSAjMTY3MTM6IFBhcnNpbmcgb2YgJ3RlbCcgdXJscyB1c2luZyB1cmxwYXJzZSBzZXBhcmF0ZXMgcGFyYW1zIGZyb20KLSAgcGF0aC4KLQotLSBJc3N1ZSAjMTY0NDM6IEFkZCBkb2NzdHJpbmdzIHRvIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3RzLgotICBQYXRjaCBieSBBbnRvbiBLYXN5YW5vdi4KLQotLSBJc3N1ZSAjMTU3MDE6IEZpeCBIVFRQRXJyb3IgaW5mbyBtZXRob2QgY2FsbCB0byByZXR1cm4gdGhlIGhlYWRlcnMgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzE2NzUyOiBBZGQgYSBtaXNzaW5nIGltcG9ydCB0byBtb2R1bGVmaW5kZXIuIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCi0KLS0gSXNzdWUgIzE2NjQ2OiBmdHBsaWIuRlRQLm1ha2Vwb3J0KCkgbWlnaHQgbG9zZSBzb2NrZXQgZXJyb3IgZGV0YWlscy4KLSAgKHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EpCi0KLS0gSXNzdWUgIzE2NjI2OiBGaXggaW5maW5pdGUgcmVjdXJzaW9uIGluIGdsb2IuZ2xvYigpIG9uIFdpbmRvd3Mgd2hlbiB0aGUKLSAgcGF0dGVybiBjb250YWlucyBhIHdpbGRjYXJkIGluIHRoZSBkcml2ZSBvciBVTkMgcGF0aC4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NzgzOiBFeGNlcHQgZm9yIHRoZSBudW1iZXIgbWV0aG9kcywgdGhlIEMgdmVyc2lvbiBvZiBkZWNpbWFsIG5vdwotICBzdXBwb3J0cyBhbGwgTm9uZSBkZWZhdWx0IHZhbHVlcyBwcmVzZW50IGluIGRlY2ltYWwucHkuIFRoZXNlIHZhbHVlcyB3ZXJlCi0gIGxhcmdlbHkgdW5kb2N1bWVudGVkLgotCi0tIElzc3VlICMxMTE3NTogYXJncGFyc2UuRmlsZVR5cGUgbm93IGFjY2VwdHMgZW5jb2RpbmcgYW5kIGVycm9ycwotICBhcmd1bWVudHMuIFBhdGNoIGJ5IEx1Y2FzIE1heXN0cmUuCi0KLS0gSXNzdWUgIzE2NDg4OiBlcG9sbCgpIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGB3aXRoYCBzdGF0ZW1lbnQuICBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjI5ODogSW4gSFRUUFJlc3BvbnNlLnJlYWQoKSwgY2xvc2UgdGhlIHNvY2tldCB3aGVuIHRoZXJlIGlzIG5vCi0gIENvbnRlbnQtTGVuZ3RoIGFuZCB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIGZpbmlzaGVkLiAgUGF0Y2ggYnkgRXJhbgotICBSdW5kc3RlaW4uCi0KLS0gSXNzdWUgIzE2MDQ5OiBBZGQgYWJjLkFCQyBjbGFzcyB0byBlbmFibGUgdGhlIHVzZSBvZiBpbmhlcml0YW5jZSB0byBjcmVhdGUKLSAgQUJDcywgcmF0aGVyIHRoYW4gdGhlIG1vcmUgY3VtYmVyc29tZSBtZXRhY2xhc3M9QUJDTWV0YS4gUGF0Y2ggYnkgQnJ1bm8KLSAgRHVwdWlzLgotCi0tIEV4cG9zZSB0aGUgVENQX0ZBU1RPUEVOIGFuZCBNU0dfRkFTVE9QRU4gZmxhZ3MgaW4gc29ja2V0IHdoZW4gdGhleSdyZQotICBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzE1NzAxOiBBZGQgYSAuaGVhZGVycyBhdHRyaWJ1dGUgdG8gdXJsbGliLmVycm9yLkhUVFBFcnJvci4gUGF0Y2gKLSAgY29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZy4KLQotLSBJc3N1ZSAjMTU4NzI6IEZpeCAzLjMgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBuZXcgZmQtYmFzZWQgc2h1dGlsLnJtdHJlZQotICB0aGF0IGNhdXNlZCBpdCB0byBub3QgaWdub3JlIGNlcnRhaW4gZXJyb3JzIHdoZW4gaWdub3JlX2Vycm9ycyB3YXMgc2V0LgotICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhIGFuZCBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjI0ODogRGlzYWJsZSBjb2RlIGV4ZWN1dGlvbiBmcm9tIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgYnkKLSAgdGtpbnRlciB3aGVuIHRoZSAtRSBmbGFnIGlzIHBhc3NlZCB0byBQeXRob24uICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzEzMzkwOiBOZXcgZnVuY3Rpb24gOmZ1bmM6YHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKWAgcmV0dXJucyB0aGUKLSAgbnVtYmVyIG9mIG1lbW9yeSBibG9ja3MgY3VycmVudGx5IGFsbG9jYXRlZC4KLQotLSBJc3N1ZSAjMTY2Mjg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIGN0eXBlcy5yZXNpemUoKS4KLQotLSBJc3N1ZSAjMTM2MTQ6IEZpeCBzZXR1cC5weSByZWdpc3RlciBmYWlsdXJlIHdpdGggaW52YWxpZCByc3QgaW4gZGVzY3JpcHRpb24uCi0gIFBhdGNoIGJ5IEp1bGllbiBDb3VydGVhdSBhbmQgUGllcnJlIFBhdWwgTGVmZWJ2cmUuCi0KLS0gSXNzdWUgIzEzNTEyOiBDcmVhdGUgfi8ucHlwaXJjIHNlY3VyZWx5IChDVkUtMjAxMS00OTQ0KS4gIEluaXRpYWwgcGF0Y2ggYnkKLSAgUGhpbGlwIEplbnZleSwgdGVzdGVkIGJ5IE1hZ2VpYSBhbmQgRGViaWFuLgotCi0tIElzc3VlICM3NzE5OiBNYWtlIGRpc3R1dGlscyBpZ25vcmUgYGAubmZzKmBgIGZpbGVzIGluc3RlYWQgb2YgY2hva2luZyBsYXRlcgotICBvbi4gIEluaXRpYWwgcGF0Y2ggYnkgU2lsZW50R2hvc3QgYW5kIEplZmYgUmFtbmFuaS4KLQotLSBJc3N1ZSAjMTMxMjA6IEFsbG93IGNhbGxpbmcgcGRiLnNldF90cmFjZSgpIGZyb20gdGhyZWFkLgotICBQYXRjaCBieSBJbHlhIFNhbmRsZXIuCi0KLS0gSXNzdWUgIzE2NTg1OiBNYWtlIENKSyBlbmNvZGVycyBzdXBwb3J0IGVycm9yIGhhbmRsZXJzIHRoYXQgcmV0dXJuIGJ5dGVzIHBlcgotICBQRVAgMzgzLgotCi0tIElzc3VlICMxMDE4MjogVGhlIHJlIG1vZHVsZSBkb2Vzbid0IHRydW5jYXRlIGluZGljZXMgdG8gMzIgYml0cyBhbnltb3JlLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjMzMzogdXNlICgiLCIsICI6ICIpIGFzIGRlZmF1bHQgc2VwYXJhdG9yIGluIGpzb24gd2hlbiBpbmRlbnQgaXMKLSAgc3BlY2lmaWVkLCB0byBhdm9pZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTY1NzM6IEluIDJ0bzMsIHRyZWF0IGVudW1lcmF0ZSgpIGxpa2UgYSBjb25zdW1pbmcgY2FsbCwgc28gc3VwZXJmbHVvdXMKLSAgbGlzdCgpIGNhbGxzIGFyZW4ndCBhZGRlZCB0byBmaWx0ZXIoKSwgbWFwKCksIGFuZCB6aXAoKSB3aGljaCBhcmUgZGlyZWN0bHkKLSAgcGFzc2VkIGVudW1lcmF0ZSgpLgotCi0tIElzc3VlICMxNjQ2NDogUmVzZXQgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciB3aGVuIGEgdXJsbGliIFJlcXVlc3QgaXMgcmV1c2VkCi0gIHdpdGggbmV3IGRhdGEuCi0KLS0gSXNzdWUgIzEyODQ4OiBUaGUgcHVyZSBQeXRob24gcGlja2xlIGltcGxlbWVudGF0aW9uIG5vdyB0cmVhdHMgb2JqZWN0Ci0gIGxlbmd0aHMgYXMgdW5zaWduZWQgMzItYml0IGludGVnZXJzLCBsaWtlIHRoZSBDIGltcGxlbWVudGF0aW9uIGRvZXMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2NDIzOiB1cmxsaWIucmVxdWVzdCBub3cgaGFzIHN1cHBvcnQgZm9yIGBgZGF0YTpgYCBVUkxzLiAgUGF0Y2ggYnkKLSAgTWF0aGlhcyBQYW56ZW5iw7Zjay4KLQotLSBJc3N1ZSAjNDQ3MzogQWRkIGEgUE9QMy5zdGxzKCkgdG8gc3dpdGNoIGEgY2xlYXItdGV4dCBQT1AzIHNlc3Npb24gaW50bwotICBhbiBlbmNyeXB0ZWQgUE9QMyBzZXNzaW9uLCBvbiBzdXBwb3J0ZWQgc2VydmVycy4gIFBhdGNoIGJ5IExvcmVuem8gQ2F0dWNjaS4KLQotLSBJc3N1ZSAjNDQ3MzogQWRkIGEgUE9QMy5jYXBhKCkgbWV0aG9kIHRvIHF1ZXJ5IHRoZSBjYXBhYmlsaXRpZXMgYWR2ZXJ0aXNlZAotICBieSB0aGUgUE9QMyBzZXJ2ZXIuICBQYXRjaCBieSBMb3JlbnpvIENhdHVjY2kuCi0KLS0gSXNzdWUgIzQ0NzM6IEVuc3VyZSB0aGUgc29ja2V0IGlzIHNodXRkb3duIGNsZWFubHkgaW4gUE9QMy5jbG9zZSgpLgotICBQYXRjaCBieSBMb3JlbnpvIENhdHVjY2kuCi0KLS0gSXNzdWUgIzE2NTIyOiBhZGRlZCBGQUlMX0ZBU1QgZmxhZyB0byBkb2N0ZXN0LgotCi0tIElzc3VlICMxNTYyNzogQWRkIHRoZSBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGUoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzE2NDA4OiBGaXggZmlsZSBkZXNjcmlwdG9ycyBub3QgYmVpbmcgY2xvc2VkIGluIGVycm9yIGNvbmRpdGlvbnMKLSAgaW4gdGhlIHppcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ2MzE6IEFkZCBhIG5ldyA6Y2xhc3M6YHdlYWtyZWYuV2Vha01ldGhvZGAgdG8gc2ltdWxhdGUgd2VhawotICByZWZlcmVuY2VzIHRvIGJvdW5kIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzE2NDY5OiBGaXggZXhjZXB0aW9ucyBmcm9tIGZsb2F0IC0+IEZyYWN0aW9uIGFuZCBEZWNpbWFsIC0+IEZyYWN0aW9uCi0gIGNvbnZlcnNpb25zIGZvciBzcGVjaWFsIHZhbHVlcyB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhvc2UgZm9yIGZsb2F0IC0+IGludAotICBhbmQgRGVjaW1hbCAtPiBpbnQuICBQYXRjaCBieSBBbGV4ZXkgS2FjaGF5ZXYuCi0KLS0gSXNzdWUgIzE2NDgxOiBtdWx0aXByb2Nlc3Npbmcgbm8gbG9uZ2VyIGxlYWtzIHByb2Nlc3MgaGFuZGxlcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxMjQyODogQWRkIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rvb2xzLnBhcnRpYWwoKS4KLSAgUGF0Y2ggYnkgQnJpYW4gVGhvcm5lLgotCi0tIElzc3VlICMxNjE0MDogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBkb3VibGUgY2xvc2VzIGl0cyBjaGlsZAotICBzdWJwcm9jZXNzLlBJUEUgcGFyZW50IGZpbGUgZGVzY3JpcHRvcnMgb24gY2hpbGQgZXJyb3IgcHJpb3IgdG8gZXhlYygpLgotCi0tIFJlbW92ZSBhIGJhcmUgcHJpbnQgdG8gc3Rkb3V0IGZyb20gdGhlIHN1YnByb2Nlc3MgbW9kdWxlIHRoYXQgY291bGQgaGF2ZQotICBoYXBwZW5lZCBpZiB0aGUgY2hpbGQgcHJvY2VzcyB3cm90ZSBnYXJiYWdlIHRvIGl0cyBwcmUtZXhlYyBlcnJvciBwaXBlLgotCi0tIFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cgcmFpc2VzIGl0cyBvd24gU3VicHJvY2Vzc0Vycm9yIGluc3RlYWQgb2YgYQotICBSdW50aW1lRXJyb3IgaW4gdmFyaW91cyBlcnJvciBzaXR1YXRpb25zIHdoaWNoIHNob3VsZCBub3Qgbm9ybWFsbHkgaGFwcGVuLgotCi0tIElzc3VlICMxNjMyNzogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBsZWFrcyBmaWxlIGRlc2NyaXB0b3JzCi0gIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIgcGlwZXMgdG8gdGhlIGNoaWxkIHdoZW4gZm9yaygpIGZhaWxzLgotCi0tIElzc3VlICMxNDM5NjogSGFuZGxlIHRoZSBvZGQgcmFyZSBjYXNlIG9mIHdhaXRwaWQgcmV0dXJuaW5nIDAgd2hlbiBub3QKLSAgZXhwZWN0ZWQgaW4gc3VicHJvY2Vzcy5Qb3Blbi53YWl0KCkuCi0KLS0gSXNzdWUgIzE2NDExOiBGaXggYSBidWcgd2hlcmUgemxpYi5kZWNvbXByZXNzb2JqKCkuZmx1c2goKSBtaWdodCB0cnkgdG8gYWNjZXNzCi0gIHByZXZpb3VzbHktZnJlZWQgbWVtb3J5LiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjM1NzogZml4IGNhbGxpbmcgYWNjZXB0KCkgb24gYSBTU0xTb2NrZXQgY3JlYXRlZCB0aHJvdWdoCi0gIFNTTENvbnRleHQud3JhcF9zb2NrZXQoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEplZmYgTWNOZWlsLgotCi0tIElzc3VlICMxNjQwOTogVGhlIHJlcG9ydGhvb2sgY2FsbGJhY2sgbWFkZSBieSB0aGUgbGVnYWN5Ci0gIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlIEFQSSBub3cgcHJvcGVybHkgc3VwcGxpZXMgYSBjb25zdGFudCBub24temVybwotICBibG9ja19zaXplIGFzIGl0IGRpZCBpbiBQeXRob24gMy4yIGFuZCAyLjcuICBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mCi0gIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lci5yZXRyaWV2ZS4KLQotLSBJc3N1ZSAjMTY0MzE6IFVzZSB0aGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBhIERlY2ltYWwgc3VidHlwZQotICBmcm9tIGEgRGVjaW1hbCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTU2NDE6IENsZWFuIHVwIGRlcHJlY2F0ZWQgY2xhc3NlcyBmcm9tIGltcG9ydGxpYi4KLSAgUGF0Y2ggYnkgVGFyYXMgTHlhcHVuLgotCi0tIElzc3VlICMxNjM1MDogemxpYi5kZWNvbXByZXNzb2JqKCkuZGVjb21wcmVzcygpIG5vdyBhY2N1bXVsYXRlcyBkYXRhIGZyb20KLSAgc3VjY2Vzc2l2ZSBjYWxscyBhZnRlciBFT0YgaW4gdW51c2VkX2RhdGEsIGluc3RlYWQgb2Ygb25seSBzYXZpbmcgdGhlIGFyZ3VtZW50Ci0gIHRvIHRoZSBsYXN0IGNhbGwuIGRlY29tcHJlc3NvYmooKS5mbHVzaCgpIG5vdyBjb3JyZWN0bHkgc2V0cyB1bnVzZWRfZGF0YSBhbmQKLSAgdW5jb25zdW1lZF90YWlsLiBBIGJ1ZyBpbiB0aGUgaGFuZGxpbmcgb2YgTWVtb3J5RXJyb3Igd2hlbiBzZXR0aW5nIHRoZQotICB1bmNvbnN1bWVkX3RhaWwgYXR0cmlidXRlIGhhcyBhbHNvIGJlZW4gZml4ZWQuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEyNzU5OiBzcmVfcGFyc2Ugbm93IHJhaXNlcyBhIHByb3BlciBlcnJvciB3aGVuIHRoZSBuYW1lIG9mIHRoZSBncm91cAotICBpcyBtaXNzaW5nLiAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjE1MjogZml4IHRva2VuaXplIHRvIGlnbm9yZSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGNvZGUgd2hlbgotICBubyBuZXdsaW5lIGlzIGZvdW5kLiAgUGF0Y2ggYnkgTmVkIEJhdGNoZWxkZXIuCi0KLS0gSXNzdWUgIzE2Mjg0OiBQcmV2ZW50IGtlZXBpbmcgdW5uZWNlc3NhcnkgcmVmZXJlbmNlcyB0byB3b3JrZXIgZnVuY3Rpb25zCi0gIGluIGNvbmN1cnJlbnQuZnV0dXJlcyBUaHJlYWRQb29sRXhlY3V0b3IuCi0KLS0gSXNzdWUgIzE2MjMwOiBGaXggYSBjcmFzaCBpbiBzZWxlY3Quc2VsZWN0KCkgd2hlbiBvbmUgb2YgdGhlIGxpc3RzIGNoYW5nZXMKLSAgc2l6ZSB3aGlsZSBpdGVyYXRlZCBvbi4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2MjI4OiBGaXggYSBjcmFzaCBpbiB0aGUganNvbiBtb2R1bGUgd2hlcmUgYSBsaXN0IGNoYW5nZXMgc2l6ZQotICB3aGlsZSBpdCBpcyBiZWluZyBlbmNvZGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTYzNTE6IE5ldyBmdW5jdGlvbiBnYy5nZXRfc3RhdHMoKSByZXR1cm5zIHBlci1nZW5lcmF0aW9uIGNvbGxlY3Rpb24KLSAgc3RhdGlzdGljcy4KLQotLSBJc3N1ZSAjMTQ4OTc6IEVuaGFuY2UgZXJyb3IgbWVzc2FnZXMgb2Ygc3RydWN0LnBhY2sgYW5kCi0gIHN0cnVjdC5wYWNrX2ludG8uIFBhdGNoIGJ5IE1hdHRpIE3DpGtpLgotCi0tIElzc3VlICMxNjMxNjogbWltZXR5cGVzIG5vdyByZWNvZ25pemVzIHRoZSAueHogYW5kIC50eHogKC50YXIueHopIGV4dGVuc2lvbnMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEyODkwOiBjZ2l0YiBubyBsb25nZXIgcHJpbnRzIHNwdXJpb3VzIDxwPiB0YWdzIGluIHRleHQKLSAgbW9kZSB3aGVuIHRoZSBsb2dkaXIgb3B0aW9uIGlzIHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjMTYzMDc6IEZpeCBtdWx0aXByb2Nlc3NpbmcuUG9vbC5tYXBfYXN5bmMgbm90IGNhbGxpbmcgaXRzIGNhbGxiYWNrcy4KLSAgUGF0Y2ggYnkgSmFubmUgS2FyaWxhLgotCi0tIElzc3VlICMxNjMwNTogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycmluZyB3aGVuIGludGVycnVwdGluZwotICBtYXRoLmZhY3RvcmlhbC4KLQotLSBJc3N1ZSAjMTYxMTY6IEZpeCBpbmNsdWRlIGFuZCBsaWJyYXJ5IHBhdGhzIHRvIGJlIGNvcnJlY3Qgd2hlbiBidWlsZGluZyBDCi0gIGV4dGVuc2lvbnMgaW4gdmVudnMuCi0KLS0gSXNzdWUgIzE2MjQ1OiBGaXggdGhlIHZhbHVlIG9mIGEgZmV3IGVudGl0aWVzIGluIGh0bWwuZW50aXRpZXMuaHRtbDUuCi0KLS0gSXNzdWUgIzE2MzAxOiBGaXggdGhlIGxvY2FsaG9zdCB2ZXJpZmljYXRpb24gaW4gdXJsbGliL3JlcXVlc3QucHkgZm9yIGBgZmlsZTovL2BgCi0gIHVybHMuCi0KLS0gSXNzdWUgIzE2MjUwOiBGaXggdGhlIGludm9jYXRpb25zIG9mIFVSTEVycm9yIHdoaWNoIGhhZCBtaXNwbGFjZWQgZmlsZW5hbWUKLSAgYXR0cmlidXRlIGZvciBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEwODM2OiBGaXggZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpbGUgbm90IGZvdW5kIGluIHVybHJldHJpZXZlCi0gIEluaXRpYWwgcGF0Y2ggYnkgRXppbyBNZWxvdHRpLgotCi0tIElzc3VlICMxNDM5ODogRml4IHNpemUgdHJ1bmNhdGlvbiBhbmQgb3ZlcmZsb3cgYnVncyBpbiB0aGUgYnoyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTI2OTI6IEZpeCByZXNvdXJjZSBsZWFrIGluIHVybGxpYi5yZXF1ZXN0IHdoZW4gdGFsa2luZyB0byBhbiBIVFRQCi0gIHNlcnZlciB0aGF0IGRvZXMgbm90IGluY2x1ZGUgYSBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyIGluIGl0cyByZXNwb25zZXMuCi0KLS0gSXNzdWUgIzEyMDM0OiBGaXggYm9ndXMgY2FjaGluZyBvZiByZXN1bHQgaW4gY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLgotICBQYXRjaCBieSBBdHN1byBJc2hpbW90by4KLQotLSBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGBsem1hLkxaTUFGaWxlYCAoc2VlIGFsc28gaXNzdWUgIzE2MDM0KS4KLQotLSBJc3N1ZSAjMTYyMjA6IHdzZ2lyZWYgbm93IGFsd2F5cyBjYWxscyBjbG9zZSgpIG9uIGFuIGl0ZXJhYmxlIHJlc3BvbnNlLgotICBQYXRjaCBieSBCcmVudCBUdWJicy4KLQotLSBJc3N1ZSAjMTYyNzA6IHVybGxpYiBtYXkgaGFuZyB3aGVuIHVzZWQgZm9yIHJldHJpZXZpbmcgZmlsZXMgdmlhIEZUUCBieSB1c2luZwotICBhIGNvbnRleHQgbWFuYWdlci4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgotCi0tIElzc3VlICMxNjQ2MTogV2F2ZSBsaWJyYXJ5IHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCA0R0Igd2F2IGZpbGVzLAotICBhbmQgc2FtcGxlIHJhdGUgb2YgNDQxMDAgSHouCi0KLS0gSXNzdWUgIzE2MTc2OiBQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKLQotLSBJc3N1ZSAjMTYwODg6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIncyBzZW5kX2Vycm9yIG1ldGhvZCBpbmNsdWRlcyBhCi0gIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpbiBpdHMgcmVzcG9uc2Ugbm93LiBQYXRjaCBieSBBbnRvaW5lIFBpdHJvdS4KLQotLSBJc3N1ZSAjMTYxMTQ6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgcHJvdmlkZXMgYSBtaXNsZWFkaW5nIGVycm9yCi0gIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IGFyZ3NbMF0gZGlkIG5vdCBleGlzdCB3aGVuIGVpdGhlciB0aGUgY3dkIG9yIGV4ZWN1dGFibGUKLSAga2V5d29yZCBhcmd1bWVudHMgc3BlY2lmaWVkIGEgcGF0aCB0aGF0IGRpZCBub3QgZXhpc3QuCi0KLS0gSXNzdWUgIzE2MTY5OiBGaXggY3R5cGVzLldpbkVycm9yKCkncyBjb25mdXNpb24gYmV0d2VlbiBlcnJubyBhbmQgd2luZXJyb3IuCi0KLS0gSXNzdWUgIzE2MTEwOiBsb2dnaW5nLmZpbGVDb25maWcgbm93IGFjY2VwdHMgYSBwcmUtaW5pdGlhbGlzZWQgQ29uZmlnUGFyc2VyCi0gIGluc3RhbmNlLgotCi0tIElzc3VlICMxNDkyNzA0OiBzaHV0aWwuY29weWZpbGUoKSByYWlzZXMgYSBkaXN0aW5jdCBTYW1lRmlsZUVycm9yIG5vdyBpZgotICBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZSBmaWxlLiBQYXRjaCBieSBBdHN1byBJc2hpbW90by4KLQotLSBJc3N1ZSAjMTM4OTY6IE1ha2Ugc2hlbGYgaW5zdGFuY2VzIHdvcmsgd2l0aCAnd2l0aCcgYXMgY29udGV4dCBtYW5hZ2Vycy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTU0MTc6IEFkZCBzdXBwb3J0IGZvciBjc2ggYW5kIGZpc2ggaW4gdmVudiBhY3RpdmF0aW9uIHNjcmlwdHMuCi0KLS0gSXNzdWUgIzE0Mzc3OiBFbGVtZW50VHJlZS53cml0ZSBhbmQgc29tZSBvZiB0aGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9ucyBoYXZlCi0gIGEgbmV3IHBhcmFtZXRlciAtICpzaG9ydF9lbXB0eV9lbGVtZW50cyouIEl0IGNvbnRyb2xzIGhvdyBlbGVtZW50cyB3aXRoIG5vCi0gIGNvbnRlbnRzIGFyZSBlbWl0dGVkLgotCi0tIElzc3VlICMxNjA4OTogQWxsb3cgRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIgdG8gd29yayBhZ2FpbiB3aXRoIGEgbm9uLUVsZW1lbnQKLSAgZWxlbWVudF9mYWN0b3J5IChmaXhlcyBhIHJlZ3Jlc3Npb24gaW4gU2ltcGxlVEFMKS4KLQotLSBJc3N1ZSAjOTY1MDogTGlzdCBjb21tb25seSB1c2VkIGZvcm1hdCBjb2RlcyBpbiB0aW1lLnN0cmZ0aW1lIGFuZAotICB0aW1lLnN0cnB0aW1lIGRvY3N0dGluZ3MuICBPcmlnaW5hbCBwYXRjaCBieSBNaWtlIEhveS4KLQotLSBJc3N1ZSAjMTU0NTI6IGxvZ2dpbmcgY29uZmlndXJhdGlvbiBzb2NrZXQgbGlzdGVuZXIgbm93IGhhcyBhIHZlcmlmeSBvcHRpb24KLSAgdGhhdCBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYXBwbHkgYSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gdG8gdGhlCi0gIHJlY2VpdmVkIGNvbmZpZ3VyYXRpb24gZGF0YSBiZWZvcmUgaXQgaXMgYWN0ZWQgdXBvbi4KLQotLSBJc3N1ZSAjMTYwMzQ6IEZpeCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBpbiB0aGUgbmV3IGBiejIuQloyRmlsZWAKLSAgaW1wbGVtZW50YXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gYHB0eS5zcGF3bigpYCBub3cgcmV0dXJucyB0aGUgY2hpbGQgcHJvY2VzcyBzdGF0dXMgcmV0dXJuZWQgYnkgYG9zLndhaXRwaWQoKWAuCi0KLS0gSXNzdWUgIzE1NzU2OiBgc3VicHJvY2Vzcy5wb2xsKClgIG5vdyBwcm9wZXJseSBoYW5kbGVzIGBlcnJuby5FQ0hJTERgIHRvCi0gIHJldHVybiBhIHJldHVybmNvZGUgb2YgMCB3aGVuIHRoZSBjaGlsZCBoYXMgYWxyZWFkeSBleGl0ZWQgb3IgY2Fubm90IGJlIHdhaXRlZAotICBvbi4KLQotLSBJc3N1ZSAjMTUzMjM6IEltcHJvdmUgZmFpbHVyZSBtZXNzYWdlIG9mIGBNb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKClgLgotCi0tIElzc3VlICMxNjA2NDogYGB1bml0dGVzdCAtbWBgIGNsYWltcyBleGVjdXRhYmxlIGlzICJweXRob24iLCBub3QgInB5dGhvbjMiLgotCi0tIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIGBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXygpYCBzdXBlciBjYWxsLgotCi0tIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzLgotCi0tIElzc3VlICMxNjAxMzogRml4IGBjc3YuUmVhZGVyYCBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDIxOiBGaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBgQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKWAgYWZ0ZXIKLSAgYGRhdGV0aW1lLk1BWFlFQVJgLiAgUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KLQotLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCi0gIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KLQotLSBJc3N1ZSAjMTU5NzA6IGB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAotICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCi0KLS0gSXNzdWUgIzE1ODQyOiBUaGUgYFNvY2tldElPLntyZWFkYWJsZSx3cml0YWJsZSxzZWVrYWJsZX1gIG1ldGhvZHMgbm93IHJhaXNlCi0gIFZhbHVlRXJyb3Igd2hlbiB0aGUgZmlsZS1saWtlIG9iamVjdCBpcyBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgotCi0tIElzc3VlICMxNTg3NjogRml4IGEgcmVmbGVhayBpbiB0aGUgYGN1cnNlc2AgbW9kdWxlOiB3aW5kb3cuZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzE1ODgxOiBGaXggYGF0ZXhpdGAgaG9vayBpbiBgbXVsdGlwcm9jZXNzaW5nYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IENocmlzCi0gIE1jRG9ub3VnaC4KLQotLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YKLSAgYGlvLkJ5dGVzSU9gIGFuZCBgaW8uU3RyaW5nSU9gIG9iamVjdHMgbm93IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgb2JqZWN0Ci0gIGhhcyBiZWVuIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCi0KLS0gSXNzdWUgIzE1NDQ3OiBVc2UgYHN1YnByb2Nlc3MuREVWTlVMTGAgaW4gd2ViYnJvd3NlciwgaW5zdGVhZCBvZiBvcGVuaW5nCi0gIGBvcy5kZXZudWxsYCBleHBsaWNpdGx5IGFuZCBsZWF2aW5nIGl0IG9wZW4uCi0KLS0gSXNzdWUgIzE1NTA5OiBgd2ViYnJvd3Nlci5Vbml4QnJvd3NlcmAgbm8gbG9uZ2VyIHBhc3NlcyBlbXB0eSBhcmd1bWVudHMgdG8KLSAgUG9wZW4gd2hlbiBgYCVhY3Rpb25gYCBzdWJzdGl0dXRpb25zIHByb2R1Y2UgZW1wdHkgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTI3NzYsIGlzc3VlICMxMTgzOTogQ2FsbCBgYXJncGFyc2VgIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieQotICBhZGRfYXJndW1lbnQpIG9ubHkgb25jZS4gQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZQotICBjYXNlIHdoZXJlIHRoZSBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMKLSAgd2FzIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZAotICBhbHdheXMgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKLSAgd2hlbiBgYGFjdGlvbj0nYXBwZW5kJ2BgLCBgYHR5cGU9J3N0cidgYCBhbmQgYGBkZWZhdWx0PVtdYGAuCi0KLS0gSXNzdWUgIzE2MTEzOiBBZGRlZCBzaGEzIG1vZHVsZSBiYXNlZCBvbiB0aGUgS2VjY2FrIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbgotICAzLjIuIFRoZSBgaGFzaGxpYmAgbW9kdWxlIGhhcyBmb3VyIGFkZGl0aW9uYWwgaGFzaCBhbGdvcml0aG1zOiBgc2hhM18yMjRgLAotICBgc2hhM18yNTZgLCBgc2hhM18zODRgIGFuZCBgc2hhM181MTJgLiBBcyBwYXJ0IG9mIHRoZSBwYXRjaCBzb21lIGNvbW1vbgotICBjb2RlIHdhcyBtb3ZlZCBmcm9tIF9oYXNob3BlbnNzbC5jIHRvIGhhc2hsaWIuaC4KLQotLSBjdHlwZXMuY2FsbF9jb21tZXRob2Qgd2FzIHJlbW92ZWQsIHNpbmNlIGl0cyBvbmx5IHVzYWdlIHdhcyBpbiB0aGUgZGVmdW5jdAotICBzYW1wbGVzIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTY2OTI6IEFkZGVkIFRMU3YxLjEgYW5kIFRMU3YxLjIgc3VwcG9ydCBmb3IgdGhlIHNzbCBtb2R1bGVzLgotCi0tIElzc3VlICMxNjgzMjogYWRkIGFiYy5nZXRfY2FjaGVfdG9rZW4oKSB0byBleHBvc2UgY2FjaGUgdmFsaWRpdHkgY2hlY2tpbmcKLSAgc3VwcG9ydCBpbiBBQkNNZXRhLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE4NDI5OiBGb3JtYXQgLyBGb3JtYXQgUGFyYWdyYXBoLCBub3cgd29ya3Mgd2hlbiBjb21tZW50IGJsb2NrcwotICBhcmUgc2VsZWN0ZWQuIEFzIHdpdGggdGV4dCBibG9ja3MsIHRoaXMgd29ya3MgYmVzdCB3aGVuIHRoZSBzZWxlY3Rpb24KLSAgb25seSBpbmNsdWRlcyBjb21wbGV0ZSBsaW5lcy4KLQotLSBJc3N1ZSAjMTgyMjY6IEFkZCBkb2NzdHJpbmdzIGFuZCB1bml0dGVzdHMgZm9yIEZvcm1hdFBhcmFncmFwaC5weS4KLSAgT3JpZ2luYWwgcGF0Y2hlcyBieSBUb2RkIFJvdml0byBhbmQgUGhpbCBXZWJzdGVyLgotCi0tIElzc3VlICMxODI3OTogRm9ybWF0IC0gU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZSBubyBsb25nZXIgbWFya3MgYSBmaWxlIGFzCi0gIGNoYW5nZWQgd2hlbiBpdCBoYXMgbm90IGJlZW4gY2hhbmdlZC4gVGhpcyBmaXggZm9sbG93ZWQgdGhlIGFkZGl0aW9uIG9mIGEKLSAgdGVzdCBmaWxlIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBQaGlsIFdlYnN0ZXIgKHRoZSBpc3N1ZSdzIG1haW4gZ29hbCkuCi0KLS0gSXNzdWUgIzcxMzY6IEluIHRoZSBJZGxlIEZpbGUgbWVudSwgIk5ldyBXaW5kb3ciIGlzIHJlbmFtZWQgIk5ldyBGaWxlIi4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LCBSb2dldCBTZXJ3eSwgYW5kIFRvZGQgUm92aXRvLgotCi0tIFJlbW92ZSBkZWFkIGltcG9ydHMgb2YgaW1wLgotCi0tIElzc3VlICMxODE5NjogQXZvaWQgZGlzcGxheWluZyBzcHVyaW91cyBTeXN0ZW1FeGl0IHRyYWNlYmFja3MuCi0KLS0gSXNzdWUgIzU0OTI6IEF2b2lkIHRyYWNlYmFjayB3aGVuIGV4aXRpbmcgSURMRSBjYXVzZWQgYnkgYSByYWNlIGNvbmRpdGlvbi4KLQotLSBJc3N1ZSAjMTc1MTE6IEtlZXAgSURMRSBmaW5kIGRpYWxvZyBvcGVuIGFmdGVyIGNsaWNraW5nICJGaW5kIE5leHQiLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYXJhaCBLLgotCi0tIElzc3VlICMxODA1NTogTW92ZSBJRExFIG9mZiBvZiBpbXAgYW5kIG9uIHRvIGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTUzOTI6IENyZWF0ZSBhIHVuaXR0ZXN0IGZyYW1ld29yayBmb3IgSURMRS4KLSAgSW5pdGlhbCBwYXRjaCBieSBSYWphZ29wYWxhc2FybWEgSmF5YWtyaXNobmFuLgotICBTZWUgTGliL2lkbGVsaWIvaWRsZV90ZXN0L1JFQURNRS50eHQgZm9yIGhvdyB0byBydW4gSWRsZSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTQxNDY6IEhpZ2hsaWdodCBzb3VyY2UgbGluZSB3aGlsZSBkZWJ1Z2dpbmcgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTc4Mzg6IEFsbG93IHN5cy5zdGRpbiB0byBiZSByZWFzc2lnbmVkLgotCi0tIElzc3VlICMxMzQ5NTogQXZvaWQgbG9hZGluZyB0aGUgY29sb3IgZGVsZWdhdG9yIHR3aWNlIGluIElETEUuCi0KLS0gSXNzdWUgIzE3Nzk4OiBBbGxvdyBJRExFIHRvIGVkaXQgbmV3IGZpbGVzIHdoZW4gc3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjMTQ3MzU6IFVwZGF0ZSBJRExFIGRvY3MgdG8gb21pdCAiQ29udHJvbC16IG9uIFdpbmRvd3MiLgotCi0tIElzc3VlICMxNzUzMjogQWx3YXlzIGluY2x1ZGUgT3B0aW9ucyBtZW51IGZvciBJRExFIG9uIE9TIFguCi0gIFBhdGNoIGJ5IEd1aWxoZXJtZSBTaW3DtWVzLgotCi0tIElzc3VlICMxNzU4NTogRml4ZWQgSURMRSByZWdyZXNzaW9uLiBOb3cgY2xvc2VzIHdoZW4gdXNpbmcgZXhpdCgpIG9yIHF1aXQoKS4KLQotLSBJc3N1ZSAjMTc2NTc6IFNob3cgZnVsbCBUayB2ZXJzaW9uIGluIElETEUncyBhYm91dCBkaWFsb2cuCi0gIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgotCi0tIElzc3VlICMxNzYxMzogUHJldmVudCB0cmFjZWJhY2sgd2hlbiByZW1vdmluZyBzeW50YXggY29sb3JpemVyIGluIElETEUuCi0KLS0gSXNzdWUgIzEyMDc1ODk6IEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHBhdGNoIGZvciByaWdodC1jbGljayBtZW51IGluIElETEUuCi0KLS0gSXNzdWUgIzE2ODg3OiBJRExFIG5vdyBhY2NlcHRzIENhbmNlbCBpbiB0YWJpZnkvdW50YWJpZnkgZGlhbG9nIGJveC4KLQotLSBJc3N1ZSAjMTc2MjU6IEluIElETEUsIGNsb3NlIHRoZSByZXBsYWNlIGRpYWxvZyBhZnRlciBpdCBpcyB1c2VkLgotCi0tIElzc3VlICMxNDI1NDogSURMRSBub3cgaGFuZGxlcyByZWFkbGluZSBjb3JyZWN0bHkgYWNyb3NzIHNoZWxsIHJlc3RhcnRzLgotCi0tIElzc3VlICMxNzYxNDogSURMRSBubyBsb25nZXIgcmFpc2VzIGV4Y2VwdGlvbiB3aGVuIHF1aWNrbHkgY2xvc2luZyBhIGZpbGUuCi0KLS0gSXNzdWUgIzY2OTg6IElETEUgbm93IG9wZW5zIGp1c3QgYW4gZWRpdG9yIHdpbmRvdyB3aGVuIGNvbmZpZ3VyZWQgdG8gZG8gc28uCi0KLS0gSXNzdWUgIzg5MDA6IFVzaW5nIGtleWJvYXJkIHNob3J0Y3V0cyBpbiBJRExFIHRvIG9wZW4gYSBmaWxlIG5vIGxvbmdlcgotICByYWlzZXMgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICM2NjQ5OiBGaXhlZCBtaXNzaW5nIGV4aXQgc3RhdHVzIGluIElETEUuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgotCi0tIElzc3VlICMxNzExNDogSURMRSBub3cgdXNlcyBub24tc3RyaWN0IGNvbmZpZyBwYXJzZXIuCi0KLS0gSXNzdWUgIzkyOTA6IEluIElETEUgdGhlIHN5cy5zdGQqIHN0cmVhbXMgbm93IGltcGxlbWVudCBpby5UZXh0SU9CYXNlCi0gIGludGVyZmFjZSBhbmQgc3VwcG9ydCBhbGwgbWFuZGF0b3J5IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCi0KLS0gSXNzdWUgIzUwNjY6IFVwZGF0ZSBJRExFIGRvY3MuIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgotCi0tIElzc3VlICMxNjgyOTogSURMRSBwcmludGluZyBubyBsb25nZXIgZmFpbHMgaWYgdGhlcmUgYXJlIHNwYWNlcyBvciBvdGhlcgotICBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgcGF0aC4KLQotLSBJc3N1ZSAjMTY0OTE6IElETEUgbm93IHByaW50cyBjaGFpbmVkIGV4Y2VwdGlvbiB0cmFjZWJhY2tzLgotCi0tIElzc3VlICMxNjgxOTogSURMRSBtZXRob2QgY29tcGxldGlvbiBub3cgY29ycmVjdGx5IHdvcmtzIGZvciBieXRlcyBsaXRlcmFscy4KLQotLSBJc3N1ZSAjMTY1MDQ6IElETEUgbm93IGNhdGNoZXMgU3ludGF4RXJyb3JzIHJhaXNlZCBieSB0b2tlbml6ZXIuIFBhdGNoIGJ5Ci0gIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxNjUxMTogVXNlIGRlZmF1bHQgSURMRSB3aWR0aCBhbmQgaGVpZ2h0IGlmIGNvbmZpZyBwYXJhbSBpcyBub3QgdmFsaWQuCi0gIFBhdGNoIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEyMDc1ODk6IEFkZCBDdXQvQ29weS9QYXN0ZSBpdGVtcyB0byBJRExFIHJpZ2h0IGNsaWNrIENvbnRleHQgTWVudS4KLSAgUGF0Y2ggYnkgVG9kZCBSb3ZpdG8uCi0KLS0gSXNzdWUgIzE2MTIzOiBJRExFIC0gZGVwcmVjYXRlIHJ1bm5pbmcgd2l0aG91dCBhIHN1YnByb2Nlc3MuCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTY2NjMxODogQWRkIGEgdGVzdCB0aGF0IHNodXRpbC5jb3B5dHJlZSgpIHJldGFpbnMgZGlyZWN0b3J5Ci0gIHBlcm1pc3Npb25zLiAgUGF0Y2ggYnkgQ2F0aGVyaW5lIERldmxpbi4KLQotLSBJc3N1ZSAjMTgyNzM6IG1vdmUgdGhlIHRlc3RzIGluIExpYi90ZXN0L2pzb25fdGVzdHMgdG8gTGliL3Rlc3QvdGVzdF9qc29uCi0gIGFuZCBtYWtlIHRoZW0gZGlzY292ZXJhYmxlIGJ5IHVuaXR0ZXN0LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIEZpeCBhIGZjbnRsIHRlc3QgY2FzZSBvbiBLRnJlZUJTRCwgRGViaWFuICM3MDg2NTMgKFBldHIgU2FsaW5nZXIpLgotCi0tIElzc3VlICMxODM5NjogRml4IHNwdXJpb3VzIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NpZ25hbCBvbiBXaW5kb3dzIHdoZW4KLSAgZmF1bHRoYW5kbGVyIGlzIGVuYWJsZWQgKFBhdGNoIGJ5IEplcmVteSBLbG90aCkKLQotLSBJc3N1ZSAjMTcwNDY6IEZpeCBicm9rZW4gdGVzdF9leGVjdXRhYmxlX3dpdGhvdXRfY3dkIGluIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTU0MTU6IEFkZCBuZXcgdGVtcF9kaXIoKSBhbmQgY2hhbmdlX2N3ZCgpIGNvbnRleHQgbWFuYWdlcnMgdG8KLSAgdGVzdC5zdXBwb3J0LCBhbmQgcmVmYWN0b3IgdGVtcF9jd2QoKSB0byB1c2UgdGhlbS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTQ5NDogdGVzdC5zdXBwb3J0IGlzIG5vdyBhIHBhY2thZ2UgcmF0aGVyIHRoYW4gYSBtb2R1bGUgKEluaXRpYWwKLSAgcGF0Y2ggYnkgSW5kcmEgVGFsaXApCi0KLS0gSXNzdWUgIzE3OTQ0OiB0ZXN0X3ppcGZpbGUgbm93IGRpc2NvdmVyYWJsZSBhbmQgdXNlcyBzdWJjbGFzc2luZyB0bwotICBnZW5lcmF0ZSB0ZXN0cyBmb3IgZGlmZmVyZW50IGNvbXByZXNzaW9uIHR5cGVzLiAgRml4ZWQgYSBidWcgd2l0aCBza2lwcGluZwotICBzb21lIHRlc3RzIGR1ZSB0byB1c2Ugb2YgZXhoYXVzdGVkIGl0ZXJhdG9ycy4KLQotLSBJc3N1ZSAjMTgyNjY6IHRlc3RfbGFyZ2VmaWxlIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IGFuZAotICBzdXBwb3J0cyBydW5uaW5nIG9ubHkgc2VsZWN0ZWQgdGVzdHMuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3NzY3OiB0ZXN0X2xvY2FsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxODM3NTogQXNzdW1lIC0tcmFuZG9taXplIHdoZW4gLS1yYW5kc2VlZCBpcyB1c2VkIGZvciBydW5uaW5nIHRoZQotICB0ZXN0c3VpdGUuCi0KLS0gSXNzdWUgIzExMTg1OiBGaXggdGVzdF93YWl0NCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KLQotLSBJc3N1ZSAjMTgyMDc6IEZpeCB0ZXN0X3NzbCBmb3Igc29tZSB2ZXJzaW9ucyBvZiBPcGVuU1NMIHRoYXQgaWdub3JlIHNlY29uZHMKLSAgaW4gQVNOMV9USU1FIGZpZWxkcy4KLQotLSBJc3N1ZSAjMTgwOTQ6IHRlc3RfdXVpZCBubyBsb25nZXIgcmVwb3J0cyBza2lwcGVkIHRlc3RzIGFzIHBhc3NlZC4KLQotLSBJc3N1ZSAjMTc5OTI6IEFkZCB0aW1lb3V0cyB0byBhc3luY29yZSBhbmQgYXN5bmNoYXQgdGVzdHMgc28gdGhhdCB0aGV5IHdvbid0Ci0gIGFjY2lkZW50YWxseSBoYW5nLgotCi0tIElzc3VlICMxNzgzMzogRml4IHRlc3RfZ2RiIGZhaWx1cmVzIHNlZW4gb24gbWFjaGluZXMgd2hlcmUgZGVidWcgc3ltYm9scwotICBmb3IgZ2xpYmMgYXJlIGF2YWlsYWJsZSAoc2VlbiBvbiBQUEM2NCBMaW51eCkuCi0KLS0gSXNzdWUgIzc4NTU6IEFkZCB0ZXN0cyBmb3IgY3R5cGVzL3dpbnJlZyBmb3IgaXNzdWVzIGZvdW5kIGluIElyb25QeXRob24uCi0gIEluaXRpYWwgcGF0Y2ggYnkgRGlubyBWaWVobGFuZC4KLQotLSBJc3N1ZSAjMTEwNzg6IHRlc3RfX19hbGxfXyBub3cgY2hlY2tzIGZvciBkdXBsaWNhdGVzIGluIF9fYWxsX18uCi0gIEluaXRpYWwgcGF0Y2ggYnkgUi4gRGF2aWQgTXVycmF5LgotCi0tIElzc3VlICMxNzcxMjogRml4IHRlc3RfZ2RiIGZhaWx1cmVzIG9uIFVidW50dSAxMy4wNC4KLQotLSBJc3N1ZSAjMTc4MzU6IEZpeCB0ZXN0X2lvIHdoZW4gdGhlIGRlZmF1bHQgT1MgcGlwZSBidWZmZXIgc2l6ZSBpcyBsYXJnZXIKLSAgdGhhbiBvbmUgbWlsbGlvbiBieXRlcy4KLQotLSBJc3N1ZSAjMTcwNjU6IFVzZSBwcm9jZXNzLXVuaXF1ZSBrZXkgZm9yIHdpbnJlZyB0ZXN0cyB0byBhdm9pZCBmYWlsdXJlcyBpZgotICB0ZXN0IGlzIHJ1biBtdWx0aXBsZSB0aW1lcyBpbiBwYXJhbGxlbCAoZWc6IG9uIGEgYnVpbGRib3QgaG9zdCkuCi0KLS0gSXNzdWUgIzEyODIwOiBhZGQgdGVzdHMgZm9yIHRoZSB4bWwuZG9tLm1pbmljb21wYXQgbW9kdWxlLgotICBQYXRjaCBieSBKb2huIENoYW5kbGVyIGFuZCBQaGlsIENvbm5lbGwuCi0KLS0gSXNzdWUgIzE3NjkxOiB0ZXN0X3VuaXZuZXdsaW5lcyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzc5MDogdGVzdF9zZXQgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTc3ODk6IHRlc3RfcmFuZG9tIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3Nzc5OiB0ZXN0X29zeF9lbnYgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTc3NjY6IHRlc3RfaXRlcmxlbiBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzY5MDogdGVzdF90aW1lIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3NjkyOiB0ZXN0X3NxbGl0ZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxMTk5NTogdGVzdF9weWRvYyBkb2Vzbid0IGltcG9ydCBhbGwgc3lzLnBhdGggbW9kdWxlcyBhbnltb3JlLgotCi0tIElzc3VlICMxNzQ0ODogdGVzdF9zYXggbm93IHNraXBzIGlmIHRoZXJlIGFyZSBubyB4bWwgcGFyc2VycyBhdmFpbGFibGUKLSAgaW5zdGVhZCBvZiByYWlzaW5nIGFuIEltcG9ydEVycm9yLgotCi0tIElzc3VlICMxMTQyMDogbWFrZSB0ZXN0IHN1aXRlIHBhc3Mgd2l0aCAtQi9ET05UV1JJVEVCWVRFQ09ERSBzZXQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgVGhvbWFzIFdvdXRlcnMuCi0KLS0gSXNzdWUgIzEwNjUyOiBtYWtlIHRjbC90ayB0ZXN0cyBydW4gYWZ0ZXIgX19hbGxfXyB0ZXN0LCBwYXRjaCBieQotICBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzExOTYzOiByZW1vdmUgaHVtYW4gdmVyaWZpY2F0aW9uIGZyb20gdGVzdF9wYXJzZXIgYW5kIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTE3MzI6IGFkZCBhIG5ldyBzdXBwcmVzc19jcmFzaF9wb3B1cCgpIGNvbnRleHQgbWFuYWdlciB0byB0ZXN0LnN1cHBvcnQKLSAgdGhhdCBkaXNhYmxlcyBjcmFzaCBwb3B1cHMgb24gV2luZG93cyBhbmQgdXNlIGl0IGluIHRlc3RfZmF1bHRoYW5kbGVyIGFuZAotICB0ZXN0X2NhcGkuCi0KLS0gSXNzdWUgIzEzODk4OiB0ZXN0X3NzbCBubyBsb25nZXIgcHJpbnRzIGEgc3B1cmlvdXMgc3RhY2sgdHJhY2Ugb24gVWJ1bnR1LgotCi0tIElzc3VlICMxNzI4MzogU2hhcmUgY29kZSBiZXR3ZWVuIGBfX21haW5fXy5weWAgYW5kIGByZWdydGVzdC5weWAgaW4KLSAgYExpYi90ZXN0YC4KLQotLSBJc3N1ZSAjMTcyNDk6IGNvbnZlcnQgYSB0ZXN0IGluIHRlc3RfY2FwaSB0byB1c2UgdW5pdHRlc3QgYW5kIHJlYXAgdGhyZWFkcy4KLQotLSBJc3N1ZSAjMTcxMDc6IFRlc3QgY2xpZW50LXNpZGUgU05JIHN1cHBvcnQgaW4gdXJsbGliLnJlcXVlc3QgdGhhbmtzIHRvCi0gIHRoZSBuZXcgc2VydmVyLXNpZGUgU05JIHN1cHBvcnQgaW4gdGhlIHNzbCBtb2R1bGUuICBJbml0aWFsIHBhdGNoIGJ5Ci0gIERhbmllbCBCbGFjay4KLQotLSBJc3N1ZSAjMTcwNDE6IEZpeCB0ZXN0aW5nIHdoZW4gUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aCB0aGUKLSAgLS13aXRob3V0LWRvYy1zdHJpbmdzLgotCi0tIElzc3VlICMxNjkyMzogRml4IFJlc291cmNlV2FybmluZ3MgaW4gdGVzdF9zc2wuCi0KLS0gSXNzdWUgIzE1NTM5OiBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBUb29scy9zY3JpcHRzL3BpbmRlbnQucHkuCi0KLS0gSXNzdWUgIzE3NDc5OiB0ZXN0X2lvIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3MDY2OiB0ZXN0X3JvYm90cGFyc2VyIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3MzM0OiB0ZXN0X2luZGV4IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3MzMzOiB0ZXN0X2ltYXBsaWIgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTcwODI6IHRlc3RfZGJtKiBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3MDc5OiB0ZXN0X2N0eXBlcyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzMwNDogdGVzdF9oYXNoIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3MzAzOiB0ZXN0X2Z1dHVyZSogbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzE2MzogdGVzdF9maWxlIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE2OTI1OiB0ZXN0X2NvbmZpZ3BhcnNlciBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjkxODogdGVzdF9jb2RlY3Mgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTY5MTk6IHRlc3RfY3J5cHQgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTY5MTA6IHRlc3RfYnl0ZXMsIHRlc3RfdW5pY29kZSwgYW5kIHRlc3RfdXNlcnN0cmluZyBub3cgd29yayB3aXRoCi0gIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjkwNTogdGVzdF93YXJuaW5ncyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgSW5pdGlhbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgotCi0tIElzc3VlICMxNjg5ODogdGVzdF9idWZpbyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjg4ODogdGVzdF9hcnJheSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjg5NjogdGVzdF9hc3luY29yZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjg5NzogdGVzdF9iaXNlY3Qgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIEluaXRpYWwgcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjg1MjogdGVzdF9nZW5lcmljcGF0aCwgdGVzdF9wb3NpeHBhdGgsIHRlc3RfbnRwYXRoLCBhbmQgdGVzdF9tYWNwYXRoCi0gIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE2NzQ4OiB0ZXN0X2hlYXBxIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotCi0tIElzc3VlICMxMDY0NjogVGVzdHMgcmVhcnJhbmdlZCBmb3Igb3Muc2FtZWZpbGUvc2FtZXN0YXQgdG8gY2hlY2sgZm9yIG5vdAotICBqdXN0IHN5bWxpbmtzIGJ1dCBhbHNvIGhhcmQgbGlua3MuCi0KLS0gSXNzdWUgIzE1MzAyOiBTd2l0Y2ggcmVncnRlc3QgZnJvbSB1c2luZyBnZXRvcHQgdG8gdXNpbmcgYXJncGFyc2UuCi0KLS0gSXNzdWUgIzE1MzI0OiBGaXggcmVncnRlc3QgcGFyc2luZyBvZiAtLWZyb21maWxlLCAtLW1hdGNoLCBhbmQgLS1yYW5kb21pemUKLSAgb3B0aW9ucy4KLQotLSBJc3N1ZSAjMTY3MDI6IHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0cyBub3cgY29ycmVjdGx5IGlnbm9yZXMgcHJveGllcyBmb3IKLSAgbG9jYWxob3N0IHRlc3RzLgotCi0tIElzc3VlICMxNjY2NDogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGdsb2IncyBiZWhhdmlvdXIgY29uY2VybmluZyBlbnRyaWVzCi0gIHN0YXJ0aW5nIHdpdGggYSAiLiIuICBQYXRjaCBieSBTZWJhc3RpYW4gS3JlZnQuCi0KLS0gSXNzdWUgIzEzMzkwOiBUaGUgYGAtUmBgIG9wdGlvbiB0byByZWdydGVzdCBub3cgYWxzbyBjaGVja3MgZm9yIG1lbW9yeQotICBhbGxvY2F0aW9uIGxlYWtzLCB1c2luZyA6ZnVuYzpgc3lzLmdldGFsbG9jYXRlZGJsb2NrcygpYC4KLQotLSBJc3N1ZSAjMTY1NTk6IEFkZCBtb3JlIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUsIGluY2x1ZGluZyBzb21lIGZyb20gdGhlCi0gIG9mZmljaWFsIHRlc3Qgc3VpdGUgYXQganNvbi5vcmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjY2MTogRml4IHRoZSBgb3MuZ2V0Z3JvdXBsaXN0KClgIHRlc3QgYnkgbm90IGFzc3VtaW5nIHRoYXQgaXQgZ2l2ZXMKLSAgdGhlIHNhbWUgb3V0cHV0IGFzIDpjb21tYW5kOmBpZCAtR2AuCi0KLS0gSXNzdWUgIzE2MTE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgdG8KLSAgc3VicHJvY2Vzcy5Qb3BlbigpLiAgSW5pdGlhbCBwYXRjaCBieSBLdXNoYWwgRGFzLgotCi0tIElzc3VlICMxNjEyNjogUHlFcnJfRm9ybWF0IGZvcm1hdCBtaXNtYXRjaCBpbiBfdGVzdGNhcGltb2R1bGUuYy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMDQ6IEZpeCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBgb3MuY2hkaXIoKWAgZmFpbHMgaW5zaWRlCi0gIGB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKWAuICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTU4MDI6IEZpeCB0ZXN0IGxvZ2ljIGluIGBUZXN0TWFpbGRpci50ZXN0X2NyZWF0ZV90bXAoKWAuIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NTU3OiBBZGRlZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSB3ZWJicm93c2VyIG1vZHVsZSwgdGhhbmtzIHRvIEFudG9uCi0gIEJhcmtvdnNreS4KLQotLSBJc3N1ZSAjMTY2OTg6IFNraXAgcG9zaXggdGVzdF9nZXRncm91cHMgd2hlbiBidWlsdCB3aXRoIE9TIFgKLSAgZGVwbG95bWVudCB0YXJnZXQgcHJpb3IgdG8gMTAuNi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDY3OiBBZGQgZGVzY3JpcHRpb24gaW50byBNU0kgZmlsZSB0byByZXBsYWNlIGluc3RhbGxlcidzCi0gIHRlbXBvcmFyeSBuYW1lLgotCi0tIElzc3VlICMxODI1NzogRml4IHJlYWRsaW5rIHVzYWdlIGluIHB5dGhvbi1jb25maWcuICBJbnN0YWxsIHRoZSBweXRob24KLSAgdmVyc2lvbiBhZ2FpbiBvbiBEYXJ3aW4uCi0KLS0gSXNzdWUgIzE4NDgxOiBBZGQgQyBjb3ZlcmFnZSByZXBvcnRpbmcgd2l0aCBnY292IGFuZCBsY292LiBBIG5ldyBtYWtlIHRhcmdldAotICAiY292ZXJhZ2UtcmVwb3J0IiBjcmVhdGVzIGFuIGluc3RydW1lbnRlZCBQeXRob24gYnVpbGQsIHJ1bnMgdW5pdCB0ZXN0cwotICBhbmQgY3JlYXRlcyBhIEhUTUwuIFRoZSByZXBvcnQgY2FuIGJlIHVwZGF0ZWQgd2l0aCAibWFrZSBjb3ZlcmFnZS1sY292Ii4KLQotLSBJc3N1ZSAjMTc4NDU6IENsYXJpZmllZCB0aGUgbWVzc2FnZSBwcmludGVkIHdoZW4gc29tZSBtb2R1bGUgYXJlIG5vdCBidWlsdC4KLQotLSBJc3N1ZSAjMTgyNTY6IENvbXBpbGF0aW9uIGZpeCBmb3IgcmVjZW50IEFJWCByZWxlYXNlcy4gIFBhdGNoIGJ5Ci0gIERhdmlkIEVkZWxzb2huLgotCi0tIElzc3VlICMxNzU0NzogSW4gY29uZmlndXJlLCBleHBsaWNpdGx5IHBhc3MgLVdmb3JtYXQgZm9yIHRoZSBiZW5lZml0IGZvciBHQ0MKLSAgNC44LgotCi0tIElzc3VlICMxNTE3MjogRG9jdW1lbnQgTkFTTSAyLjEwKyBhcyByZXF1aXJlbWVudCBmb3IgYnVpbGRpbmcgT3BlblNTTCAxLjAuMQotICBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNzU5MTogVXNlIGxvd2VyY2FzZSBmaWxlbmFtZXMgd2hlbiBpbmNsdWRpbmcgV2luZG93cyBoZWFkZXIgZmlsZXMuCi0gIFBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCi0KLS0gSXNzdWUgIzE3NTUwOiBGaXggdGhlIC0tZW5hYmxlLXByb2ZpbGluZyBjb25maWd1cmUgc3dpdGNoLgotCi0tIElzc3VlICMxNzQyNTogQnVpbGQgd2l0aCBvcGVuc3NsIDEuMC4xZCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNjc1NDogRml4IHRoZSBpbmNvcnJlY3Qgc2hhcmVkIGxpYnJhcnkgZXh0ZW5zaW9uIG9uIGxpbnV4LiBJbnRyb2R1Y2UKLSAgdHdvIG1ha2VmaWxlIG1hY3JvcyBTSExJQl9TVUZGSVggYW5kIEVYVF9TVUZGSVguIFNPIG5vdyBoYXMgdGhlIHZhbHVlIG9mCi0gIFNITElCX1NVRkZJWCBhZ2FpbiAoYXMgaW4gMi54IGFuZCAzLjEpLiBUaGUgU08gbWFjcm8gaXMgcmVtb3ZlZCBpbiAzLjQuCi0KLS0gSXNzdWUgIzUwMzM6IEZpeCBidWlsZGluZyBvZiB0aGUgc3FsaXRlMyBleHRlbnNpb24gbW9kdWxlIHdoZW4gdGhlCi0gIFNRTGl0ZSBsaWJyYXJ5IHZlcnNpb24gaGFzICJiZXRhIiBpbiBpdC4gUGF0Y2ggYnkgQW5kcmVhcyBQZWxtZS4KLQotLSBJc3N1ZSAjMTcyMjg6IEZpeCBidWlsZGluZyB3aXRob3V0IHB5bWFsbG9jLgotCi0tIElzc3VlICMzNzE4OiBVc2UgQUNfQVJHX1ZBUiB0byBzZXQgTUFDSERFUCBpbiBjb25maWd1cmUuYWMuCi0KLS0gSXNzdWUgIzE2MjM1OiBJbXBsZW1lbnQgcHl0aG9uLWNvbmZpZyBhcyBhIHNoZWxsIHNjcmlwdC4KLQotLSBJc3N1ZSAjMTY3Njk6IFJlbW92ZSBvdXRkYXRlZCBWaXN1YWwgU3R1ZGlvIHByb2plY3RzLgotCi0tIElzc3VlICMxNzAzMTogRml4IHJ1bm5pbmcgcmVnZW4gaW4gY3Jvc3MgYnVpbGRzLgotCi0tIElzc3VlICMzNzU0OiBmaXggdHlwbyBpbiBwdGhyZWFkIEFDX0NBQ0hFX1ZBTC4KLQotLSBJc3N1ZSAjMTU0ODQ6IEZpeCBfUFlUSE9OX1BST0pFQ1RfQkFTRSBmb3Igc3JjZGlyICE9IGJ1aWxkZGlyIGJ1aWxkczsKLSAgdXNlIF9QWVRIT05fUFJPSkVDVF9CQVNFIGluIGRpc3R1dGlscy9zeXNjb25maWcucHkuCi0KLS0gRHJvcCBzdXBwb3J0IGZvciBXaW5kb3dzIDIwMDAgKGNoYW5nZXNldCBlNTJkZjA1YjQ5NmEpLgotCi0tIElzc3VlICMxNzAyOTogTGV0IGgycHkgc2VhcmNoIHRoZSBtdWx0aWFyY2ggc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNjk1MzogRml4IHNvY2tldCBtb2R1bGUgY29tcGlsYXRpb24gb24gcGxhdGZvcm1zIHdpdGgKLSAgSEFWRV9CUk9LRU5fUE9MTC4gUGF0Y2ggYnkgSmVmZnJleSBBcm1zdHJvbmcuCi0KLS0gSXNzdWUgIzE2MzIwOiBSZW1vdmUgcmVkdW5kYW50IE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb3Igc3RyaW5ncyBhbmQgYnl0ZXMuCi0KLS0gQ3Jvc3MgY29tcGlsaW5nIG5lZWRzIGhvc3QgYW5kIGJ1aWxkIHNldHRpbmdzLiBjb25maWd1cmUgbm8gbG9uZ2VyCi0gIGNyZWF0ZXMgYSBicm9rZW4gUFlUSE9OX0ZPUl9CVUlMRCB2YXJpYWJsZSB3aGVuIC0tYnVpbGQgaXMgbWlzc2luZy4KLQotLSBGaXggY3Jvc3MgY29tcGlsaW5nIGlzc3VlIGluIHNldHVwLnB5LCBlbnN1cmUgdGhhdCBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlCi0gIGRlZmluZWQgaW4gY3Jvc3MgY29tcGlsaW5nIG1vZGUsIHRvby4KLQotLSBJc3N1ZSAjMTY4MzY6IEVuYWJsZSBJUHY2IHN1cHBvcnQgZXZlbiBpZiBJUHY2IGlzIGRpc2FibGVkIG9uIHRoZSBidWlsZCBob3N0LgotCi0tIElzc3VlICMxNjU5MzogSGF2ZSBCU0QgJ21ha2UgLXMnIGRvIHRoZSByaWdodCB0aGluZywgdGhhbmtzIHRvIERhbmllbCBTaGFoYWYKLQotLSBJc3N1ZSAjMTYyNjI6IGZpeCBvdXQtb2Ytc3JjLXRyZWUgYnVpbGRzLCBpZiBtZXJjdXJpYWwgaXMgbm90IGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTUyOTg6IGVuc3VyZSBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgaW4gYnVpbGQgZGlyZWN0b3J5LCBub3QKLSAgc291cmNlIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTU4MzM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gMy4zIHRoYXQgcmVzdWx0ZWQgaW4gZXhjZXB0aW9ucyBiZWluZwotICByYWlzZWQgaWYgaW1wb3J0bGliIGZhaWxlZCB0byB3cml0ZSBieXRlLWNvbXBpbGVkIGZpbGVzLiAgVGhpcyBhZmZlY3RlZAotICBhdHRlbXB0cyB0byBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWQtb25seSBzb3VyY2UgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNTkyMzogRml4IGEgbWlzdGFrZSBpbiBgYGFzZGxfYy5weWBgIHRoYXQgcmVzdWx0ZWQgaW4gYSBUeXBlRXJyb3IKLSAgYWZ0ZXIgMjgwMWJmODc1YTI0IChzZWUgIzE1ODAxKS4KLQotLSBJc3N1ZSAjMTYxMzU6IFJlbW92ZSBPUy8yIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzE1ODE5OiBNYWtlIHN1cmUgd2UgY2FuIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZC1vbmx5Ci0gIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBpc3N1ZSAjOTg2MC4pCi0KLS0gSXNzdWUgIzE1NTg3OiBFbmFibGUgVGsgaGlnaC1yZXNvbHV0aW9uIHRleHQgcmVuZGVyaW5nIG9uIE1hY3Mgd2l0aAotICBSZXRpbmEgZGlzcGxheXMuICBBcHBsaWVzIHRvIFRraW50ZXIgYXBwcywgc3VjaCBhcyBJRExFLCBvbiBPUyBYCi0gIGZyYW1ld29yayBidWlsZHMgbGlua2VkIHdpdGggQ29jb2EgVGsgOC41LgotCi0tIElzc3VlICMxNzE2MTogbWFrZSBpbnN0YWxsIG5vdyBhbHNvIGluc3RhbGxzIGEgcHl0aG9uMyBtYW4gcGFnZS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE4MzUxOiBGaXggdmFyaW91cyBpc3N1ZXMgaW4gYSBmdW5jdGlvbiBpbiBpbXBvcnRsaWIgcHJvdmlkZWQgdG8gaGVscAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSAoYW5kIHRodXMgYnkgZXh0ZW5zaW9uCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKCkgYW5kIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgoKSkuCi0KLS0gSXNzdWUgIzkzNjk6IFRoZSB0eXBlcyBvZiBgY2hhcipgIGFyZ3VtZW50cyBvZiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKSBhbmQKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZCgpIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuICBCYXNlZCBvbiBwYXRjaGVzIGJ5Ci0gIErDtnJnIE3DvGxsZXIgYW5kIExhcnMgQnVpdGluY2suCi0KLS0gSXNzdWUgIzE3MjA2OiBQeV9DTEVBUigpLCBQeV9ERUNSRUYoKSwgUHlfWElOQ1JFRigpIGFuZCBQeV9YREVDUkVGKCkgbm93Ci0gIGV4cGFuZCB0aGVpciBhcmd1bWVudHMgb25jZSBpbnN0ZWFkIG9mIG11bHRpcGxlIHRpbWVzLiAgUGF0Y2ggd3JpdHRlbiBieSBJbGxpYQotICBQb2xvc3VraGluLgotCi0tIElzc3VlICMxNzUyMjogQWRkIHRoZSBQeUdJTFN0YXRlX0NoZWNrKCkgQVBJLgotCi0tIElzc3VlICMxNzMyNzogQWRkIFB5RGljdF9TZXREZWZhdWx0LgotCi0tIElzc3VlICMxNjg4MTogRml4IFB5X0FSUkFZX0xFTkdUSCBtYWNybyBmb3IgR0NDIDwgMy4xLgotCi0tIElzc3VlICMxNjUwNTogUmVtb3ZlIHVudXNlZCBQeV9UUEZMQUdTX0lOVF9TVUJDTEFTUy4KLQotLSBJc3N1ZSAjMTYwODY6IFB5VHlwZU9iamVjdC50cF9mbGFncyBhbmQgUHlUeXBlX1NwZWMuZmxhZ3MgYXJlIG5vdyB1bnNpZ25lZAotICAodW5zaWduZWQgbG9uZyBhbmQgdW5zaWduZWQgaW50KSB0byBhdm9pZCBhbiB1bmRlZmluZWQgYmVoYXZpb3VyIHdpdGgKLSAgUHlfVFBGTEFHU19UWVBFX1NVQkNMQVNTICgoMSA8PCAzMSkuIFB5VHlwZV9HZXRGbGFncygpIHJlc3VsdCB0eXBlIGlzCi0gIG5vdyB1bnNpZ25lZCB0b28gKHVuc2lnbmVkIGxvbmcsIGluc3RlYWQgb2YgbG9uZykuCi0KLS0gSXNzdWUgIzE2MTY2OiBBZGQgUFlfTElUVExFX0VORElBTiBhbmQgUFlfQklHX0VORElBTiBtYWNyb3MgYW5kIHVuaWZpZWQKLSAgZW5kaWFubmVzcyBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIzMDA2OiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbmRleGluZyBvZiBkaWN0Ll9fbWlzc2luZ19fLgotICBBZGQgYW4gZW50cnkgaW4gdGhlIGxhbmd1YWdlIGRhdGFtb2RlbCBzcGVjaWFsIG1ldGhvZHMgc2VjdGlvbi4KLSAgUmV2aXNlIGFuZCBpbmRleCBpdHMgZGlzY3Vzc2lvbiBpbiB0aGUgc3RkdHlwZXMgbWFwcGluZy9kaWN0IHNlY3Rpb24uCi0KLS0gSXNzdWUgIzE3NzAxOiBJbXByb3Zpbmcgc3RyZnRpbWUgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTg0NDA6IENsYXJpZnkgdGhhdCBgaGFzaCgpYCBjYW4gdHJ1bmNhdGUgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4KLSAgb2JqZWN0J3MgY3VzdG9tIGBfX2hhc2hfXygpYCBtZXRob2QuCi0KLS0gSXNzdWUgIzE3ODQ0OiBBZGQgbGlua3MgdG8gZW5jb2RlcnMgYW5kIGRlY29kZXJzIGZvciBieXRlcy10by1ieXRlcyBjb2RlY3MuCi0KLS0gSXNzdWUgIzE0MDk3OiBpbXByb3ZlIHRoZSAiaW50cm9kdWN0aW9uIiBwYWdlIG9mIHRoZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTc5Nzc6IFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgY2FkZWZhdWx0IGFyZ3VtZW50J3MgZGVmYXVsdCB2YWx1ZQotICBpbiB1cmxsaWIucmVxdWVzdC51cmxvcGVuKCkgaXMgZml4ZWQgdG8gbWF0Y2ggdGhlIGNvZGUuCi0KLS0gSXNzdWUgIzY2OTY6IGFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgUHJvZmlsZSBvYmplY3RzLCBhbmQgaW1wcm92ZQotICBwcm9maWxlL2NQcm9maWxlIGRvY3MuICBQYXRjaCBieSBUb20gUGluY2tuZXkuCi0KLS0gSXNzdWUgIzE1OTQwOiBTcGVjaWZ5IGVmZmVjdCBvZiBsb2NhbGUgb24gdGltZSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE3NTM4OiBEb2N1bWVudCBYTUwgdnVsbmVyYWJpbHRpZXMKLQotLSBJc3N1ZSAjMTY2NDI6IHNjaGVkLnNjaGVkdWxlciB0aW1lZnVuYyBpbml0aWFsIGRlZmF1bHQgaXMgdGltZS5tb25vdG9uaWMuCi0gIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0ZQotCi0tIElzc3VlICMxNzA0NzogcmVtb3ZlIGRvdWJsZWQgd29yZHMgaW4gZG9jcyBhbmQgZG9jc3RyaW5ncwotICByZXBvcnRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBNYXR0aGV3IEJhcm5ldHQuCi0KLS0gSXNzdWUgIzE1NDY1OiBEb2N1bWVudCB0aGUgdmVyc2lvbmluZyBtYWNyb3MgaW4gdGhlIEMgQVBJIGRvY3MgcmF0aGVyIHRoYW4KLSAgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9jcy4gUGF0Y2ggYnkgS3VzaGFsIERhcy4KLQotLSBJc3N1ZSAjMTY0MDY6IENvbWJpbmUgdGhlIHBhZ2VzIGZvciB1cGxvYWRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRvIFB5UEkuCi0KLS0gSXNzdWUgIzE2NDAzOiBEb2N1bWVudCBob3cgZGlzdHV0aWxzIHVzZXMgdGhlIG1haW50YWluZXIgZmllbGQgaW4KLSAgUEtHLUlORk8uIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzE2Njk1OiBEb2N1bWVudCBob3cgZ2xvYiBoYW5kbGVzIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGEKLSAgZG90LiBJbml0aWFsIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzg4OTA6IFN0b3AgYWR2ZXJ0aXNpbmcgYW4gaW5zZWN1cmUgcHJhY3RpY2UgYnkgcmVwbGFjaW5nIHVzZXMKLSAgb2YgdGhlIC90bXAgZGlyZWN0b3J5IHdpdGggYmV0dGVyIGFsdGVybmF0aXZlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSAgUGF0Y2ggYnkgR2VvZmYgV2lsc29uLgotCi0tIElzc3VlICMxNzIwMzogYWRkIGxvbmcgb3B0aW9uIG5hbWVzIHRvIHVuaXR0ZXN0IGRpc2NvdmVyeSBkb2NzLgotCi0tIElzc3VlICMxMzA5NDogYWRkICJXaHkgZG8gbGFtYmRhcyBkZWZpbmVkIGluIGEgbG9vcCB3aXRoIGRpZmZlcmVudCB2YWx1ZXMKLSAgYWxsIHJldHVybiB0aGUgc2FtZSByZXN1bHQ/IiBwcm9ncmFtbWluZyBGQVEuCi0KLS0gSXNzdWUgIzE0OTAxOiBVcGRhdGUgcG9ydGlvbnMgb2YgdGhlIFdpbmRvd3MgRkFRLgotICBQYXRjaCBieSBBc2hpc2ggTml0aW4gUGF0aWwuCi0KLS0gSXNzdWUgIzE2MjY3OiBCZXR0ZXIgZG9jdW1lbnQgdGhlIDMuMysgYXBwcm9hY2ggdG8gY29tYmluaW5nCi0gIEBhYnN0cmFjdG1ldGhvZCB3aXRoIEBzdGF0aWNtZXRob2QsIEBjbGFzc21ldGhvZCBhbmQgQHByb3BlcnR5Ci0KLS0gSXNzdWUgIzE1MjA5OiBDbGFyaWZ5IGV4Y2VwdGlvbiBjaGFpbmluZyBkZXNjcmlwdGlvbiBpbiBleGNlcHRpb25zIG1vZHVsZQotICBkb2N1bWVudGF0aW9uCi0KLS0gSXNzdWUgIzE1OTkwOiBJbXByb3ZlIGFyZ3VtZW50L3BhcmFtZXRlciBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjIwOTogTW92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN0ciBidWlsdC1pbiBmdW5jdGlvbiB0byBhIG5ldwotICBzdHIgY2xhc3MgZW50cnkgaW4gdGhlICJUZXh0IFNlcXVlbmNlIFR5cGUiIHNlY3Rpb24uCi0KLS0gSXNzdWUgIzEzNTM4OiBJbXByb3ZlIHN0cigpIGFuZCBvYmplY3QuX19zdHJfXygpIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE2NDg5OiBNYWtlIGl0IGNsZWFyZXIgdGhhdCBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBuZWVkcyBwYXJlbnQKLSAgcGFja2FnZXMgdG8gYmUgZXhwbGljaXRseSBpbXBvcnRlZC4KLQotLSBJc3N1ZSAjMTY0MDA6IFVwZGF0ZSB0aGUgZGVzY3JpcHRpb24gb2Ygd2hpY2ggdmVyc2lvbnMgb2YgYSBnaXZlbiBwYWNrYWdlCi0gIFB5UEkgZGlzcGxheXMuCi0KLS0gSXNzdWUgIzE1Njc3OiBEb2N1bWVudCB0aGF0IHpsaWIgYW5kIGd6aXAgYWNjZXB0IGEgY29tcHJlc3Npb24gbGV2ZWwgb2YgMCB0bwotICBtZWFuICdubyBjb21wcmVzc2lvbicuIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTYxOTc6IFVwZGF0ZSB3aW5yZWcgZG9jc3RyaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiB0byBtYXRjaCBjb2RlLgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzgwNDA6IGFkZGVkIGEgdmVyc2lvbiBzd2l0Y2hlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4gIFBhdGNoIGJ5Ci0gIFl1cnkgU2VsaXZhbm92LgotCi0tIElzc3VlICMxNjI0MTogRG9jdW1lbnQgLVggZmF1bHRoYW5kbGVyIGNvbW1hbmQgbGluZSBvcHRpb24uCi0gIFBhdGNoIGJ5IE1hcmVrIMWgdXBwYS4KLQotLSBBZGRpdGlvbmFsIGNvbW1lbnRzIGFuZCBzb21lIHN0eWxlIGNoYW5nZXMgaW4gdGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBVUkwKLSAgcmV0cmlldmFsIGV4YW1wbGUKLQotLSBJc3N1ZSAjMTYxMTU6IEltcHJvdmUgc3VicHJvY2Vzcy5Qb3BlbigpIGRvY3VtZW50YXRpb24gYXJvdW5kIGFyZ3MsIHNoZWxsLAotICBhbmQgZXhlY3V0YWJsZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCi0gIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCi0KLS0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3IgYHN1YnByb2Nlc3MuUG9wZW4oKWAncyBjd2QKLSAgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzE1OTc5OiBJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjAzNjogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0LWluIGBpbnQoKWAncyBzaWduYXR1cmUgYW5kCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTU5MzU6IENsYXJpZmljYXRpb24gb2YgYGFyZ3BhcnNlYCBkb2NzLCByZTogYWRkX2FyZ3VtZW50KCkgdHlwZSBhbmQKLSAgZGVmYXVsdCBhcmd1bWVudHMuICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTE5NjQ6IERvY3VtZW50IGEgY2hhbmdlIGluIHYzLjIgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBpbmRlbnQKLSAgcGFyYW1ldGVyIG9mIGpzb24gZW5jb2Rpbmcgb3BlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTUxMTY6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGFwcHNjcmlwdCBhcyBpdCBpcyBubyBsb25nZXIgYmVpbmcKLSAgc3VwcG9ydGVkLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg4MTc6IEZpeCBhIHJlc291cmNlIHdhcm5pbmcgaW4gTGliL2FpZmMucHkgZGVtby4gIFBhdGNoIGJ5Ci0gIFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTg0Mzk6IE1ha2UgcGF0Y2hjaGVjayB3b3JrIG9uIFdpbmRvd3MgZm9yIEFDS1MsIE5FV1MuCi0KLS0gSXNzdWUgIzE4NDQ4OiBGaXggYSB0eXBvIGluIFRvb2xzL2RlbW8vZWlmZmVsLnB5LgotCi0tIElzc3VlICMxODQ1NzogRml4ZWQgc2F2aW5nIG9mIGZvcm11bGFzIGFuZCBjb21wbGV4IG51bWJlcnMgaW4KLSAgVG9vbHMvZGVtby9zczEucHkuCi0KLS0gSXNzdWUgIzE4NDQ5OiBNYWtlIFRvb2xzL2RlbW8vc3MxLnB5IHdvcmsgYWdhaW4gb24gUHl0aG9uIDMuICBQYXRjaCBieQotICBGw6l2cnkgVGhpYmF1bHQuCi0KLS0gSXNzdWUgIzEyOTkwOiBUaGUgIlB5dGhvbiBMYXVuY2hlciIgb24gT1NYIGNvdWxkIG5vdCBsYXVuY2ggcHl0aG9uIHNjcmlwdHMKLSAgdGhhdCBoYXZlIHBhdGhzIHRoYXQgaW5jbHVkZSB3aWRlIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzE1MjM5OiBNYWtlIG1rc3RyaW5ncHJlcC5weSB3b3JrIGFnYWluIG9uIFB5dGhvbiAzLgotCi0tIElzc3VlICMxNzAyODogQWxsb3dlZCBQeXRob24gYXJndW1lbnRzIHRvIGJlIHN1cHBsaWVkIHRvIHRoZSBXaW5kb3dzCi0gIGxhdW5jaGVyLgotCi0tIElzc3VlICMxNzE1NjogcHlnZXR0ZXh0LnB5IG5vdyBkZXRlY3RzIHRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMgYW5kCi0gIGNvcnJlY3RseSB3cml0ZXMgYW5kIGVzY2FwZXMgbm9uLWFzY2lpIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzE1NTM5OiBGaXggYSBudW1iZXIgb2YgYnVncyBpbiBUb29scy9zY3JpcHRzL3BpbmRlbnQucHkuICBOb3cKLSAgcGluZGVudC5weSB3b3JrcyB3aXRoIGEgIndpdGgiIHN0YXRlbWVudC4gIHBpbmRlbnQucHkgbm8gbG9uZ2VyIHByb2R1Y2VzCi0gIGltcHJvcGVyIGluZGVudGF0aW9uLiAgcGluZGVudC5weSBub3cgd29ya3Mgd2l0aCBjb250aW51ZWQgbGluZXMgYnJva2VuIGFmdGVyCi0gICJjbGFzcyIgb3IgImRlZiIga2V5d29yZHMgYW5kIHdpdGggY29udGludWF0aW9ucyBhdCB0aGUgc3RhcnQgb2YgbGluZS4KLQotLSBJc3N1ZSAjMTE3OTc6IEFkZCBhIDJ0bzMgZml4ZXIgdGhhdCBtYXBzIHJlbG9hZCgpIHRvIGltcC5yZWxvYWQoKS4KLQotLSBJc3N1ZSAjMTA5NjY6IFJlbW92ZSB0aGUgY29uY2VwdCBvZiB1bmV4cGVjdGVkIHNraXBwZWQgdGVzdHMuCi0KLS0gSXNzdWUgIzk4OTM6IFJlbW92ZWQgdGhlIE1pc2MvVmltIGRpcmVjdG9yeS4KLQotLSBSZW1vdmVkIHRoZSBNaXNjL1RleHRNYXRlIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTYyNDU6IEFkZCB0aGUgVG9vbHMvc2NyaXB0cy9wYXJzZV9odG1sNV9lbnRpdGllcy5weSBzY3JpcHQgdG8gcGFyc2UKLSAgdGhlIGxpc3Qgb2YgSFRNTDUgZW50aXRpZXMgYW5kIHVwZGF0ZSB0aGUgaHRtbC5lbnRpdGllcy5odG1sNSBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2NTQ5OiBNYWtlIGpzb24udG9vbCB3b3JrIGFnYWluIG9uIFB5dGhvbiAzIGFuZCBhZGQgdGVzdHMuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZyBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTMzMDE6IHVzZSBhc3QubGl0ZXJhbF9ldmFsKCkgaW5zdGVhZCBvZiBldmFsKCkgaW4gVG9vbHMvaTE4bi9tc2dmbXQucHkuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg1Njk6IFRoZSBpbnN0YWxsZXIgbm93IGFkZHMgLnB5IHRvIHRoZSBQQVRIRVhUIHZhcmlhYmxlIHdoZW4gZXh0ZW5zaW9ucwotICBhcmUgcmVnaXN0ZXJlZC4gUGF0Y2ggYnkgUGF1bCBNb29yZS4KLQogKiooRm9yIGluZm9ybWF0aW9uIGFib3V0IG9sZGVyIHZlcnNpb25zLCBjb25zdWx0IHRoZSBISVNUT1JZIGZpbGUuKSoqCmRpZmYgLS1naXQgYS9NaXNjL1JFQURNRS52YWxncmluZCBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCmluZGV4IGI1YTlhMzIuLjkwOGYxMzcgMTAwNjQ0Ci0tLSBhL01pc2MvUkVBRE1FLnZhbGdyaW5kCisrKyBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCkBAIC0yLDYgKzIsOSBAQAogUHl0aG9uLiAgVmFsZ3JpbmQgaXMgdXNlZCBwZXJpb2RpY2FsbHkgYnkgUHl0aG9uIGRldmVsb3BlcnMgdG8gdHJ5CiB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciBpbnZhbGlkIG1lbW9yeSByZWFkcy93cml0ZXMuCiAKK1VQREFURTogUHl0aG9uIDMuNiBub3cgc3VwcG9ydHMgUFlUSE9OTUFMTE9DPW1hbGxvYyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGljaAorY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSBtYWxsb2MoKSBhbGxvY2F0b3Igb2YgdGhlIEMgbGlicmFyeS4KKwogSWYgeW91IGRvbid0IHdhbnQgdG8gcmVhZCBhYm91dCB0aGUgZGV0YWlscyBvZiB1c2luZyBWYWxncmluZCwgdGhlcmUKIGFyZSBzdGlsbCB0d28gdGhpbmdzIHlvdSBtdXN0IGRvIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5ncy4gIEZpcnN0LAogeW91IG11c3QgdXNlIGEgc3VwcHJlc3Npb25zIGZpbGUuICBPbmUgaXMgc3VwcGxpZWQgaW4KZGlmZiAtLWdpdCBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQgYi9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CmluZGV4IDMwMDQxNzQuLjgyZmEyM2UgMTAwNjQ0Ci0tLSBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKKysrIGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dApAQCAtNjUsOSArNjUsOSBAQAogICAgIHNpbXBseSBieSB2aXJ0dWUgb2YgYmVpbmcgaW4gdGhlIGxpc3QuCiAKIGVudnZhciBQWVRIT05EVU1QUkVGUwotICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemUoKSBhcnJhbmdlcyB0byBwcmludCBhIGxpc3Qgb2YgYWxsCisgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBQeV9GaW5hbGl6ZUV4KCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAogICAgIHN0aWxsLWxpdmUgaGVhcCBvYmplY3RzLiAgVGhpcyBpcyBwcmludGVkIHR3aWNlLCBpbiBkaWZmZXJlbnQgZm9ybWF0cywKLSAgICBiZWZvcmUgYW5kIGFmdGVyIFB5X0ZpbmFsaXplIGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCisgICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZUV4IGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCiAgICAgZmlyc3Qgb3V0cHV0IGJsb2NrIHByb2R1Y2VzIHRoZSByZXByKCkgb2YgZWFjaCBvYmplY3Qgc28gaXMgbW9yZQogICAgIGluZm9ybWF0aXZlOyBob3dldmVyLCBhIGxvdCBvZiBzdHVmZiBkZXN0aW5lZCB0byBkaWUgaXMgc3RpbGwgYWxpdmUgdGhlbi4KICAgICBUaGUgc2Vjb25kIG91dHB1dCBibG9jayBpcyBtdWNoIGhhcmRlciB0byB3b3JrIHdpdGggKHJlcHIoKSBjYW4ndCBiZSBpbnZva2VkCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogZW52dmFyIFBZVEhPTk1BTExPQ1NUQVRTCiAgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBhIHJlcG9ydCBvZiBweW1hbGxvYyBzdW1tYXJ5IHN0YXRpc3RpY3MgaXMgcHJpbnRlZCB0bwotICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplKCkuCisgICAgc3RkZXJyIHdoZW5ldmVyIGEgbmV3IGFyZW5hIGlzIGFsbG9jYXRlZCwgYW5kIGFsc28gYnkgUHlfRmluYWxpemVFeCgpLgogCiBDaGFuZ2VkIGluIDIuNTogIFRoZSBudW1iZXIgb2YgZXh0cmEgYnl0ZXMgYWxsb2NhdGVkIGlzIDQqc2l6ZW9mKHNpemVfdCkuCiBCZWZvcmUgaXQgd2FzIDE2IG9uIGFsbCBib3hlcywgcmVmbGVjdGluZyB0aGF0IFB5dGhvbiBjb3VsZG4ndCBtYWtlIHVzZSBvZgpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICovCiAgICAgaW50IHRwX21heGFsbG9jOwogCi1BbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplKCkKK0FsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGtlZXBzIHRoZXNlIGNvdW50cyB1cCB0byBkYXRlLiAgUHlfRmluYWxpemVFeCgpCiBkaXNwbGF5cyBhIHN1bW1hcnkgb2YgdGhlIGluZm8gcmV0dXJuZWQgYnkgc3lzLmdldGNvdW50cygpIChzZWUgYmVsb3cpLCBhbG9uZwogd2l0aCBhc3NvcnRlZCBvdGhlciBzcGVjaWFsIGFsbG9jYXRpb24gY291bnRzIChsaWtlIHRoZSBudW1iZXIgb2YgdHVwbGUKIGFsbG9jYXRpb25zIHNhdGlzZmllZCBieSBhIHR1cGxlIGZyZWUtbGlzdCwgdGhlIG51bWJlciBvZiAxLWNoYXJhY3RlciBzdHJpbmdzCkBAIC0yMzQsMjkgKzIzNCwzIEBACiBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgbWFkZS4gIEl0IGtlZXBzIGRldGFpbGVkIHN0YXRpc3RpY3MgYWJvdXQgd2hhdCBraW5kIG9mCiBvYmplY3Qgd2FzIGNhbGxlZCBhbmQgd2hldGhlciB0aGUgY2FsbCBoaXQgYW55IG9mIHRoZSBzcGVjaWFsIGZhc3QgcGF0aHMgaW4gdGhlCiBjb2RlLgotCi0KLVdJVEhfVFNDCi0tLS0tLS0tLQotCi1TdXBlci1sb3dsZXZlbCBwcm9maWxpbmcgb2YgdGhlIGludGVycHJldGVyLiAgV2hlbiBlbmFibGVkLCB0aGUgc3lzIG1vZHVsZSBncm93cwotYSBuZXcgZnVuY3Rpb246Ci0KLXNldHRzY2R1bXAoYm9vbCkKLSAgICBJZiB0cnVlLCB0ZWxsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gZHVtcCBWTSBtZWFzdXJlbWVudHMgdG8gc3RkZXJyLiAgSWYKLSAgICBmYWxzZSwgdHVybiBvZmYgZHVtcC4gIFRoZSBtZWFzdXJlbWVudHMgYXJlIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IncwotICAgIHRpbWUtc3RhbXAgY291bnRlci4KLQotVGhpcyBidWlsZCBvcHRpb24gcmVxdWlyZXMgYSBzbWFsbCBhbW91bnQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gIEN1cnJlbnRseQotdGhpcyBjb2RlIGlzIHByZXNlbnQgZm9yIGxpbnV4L3g4NiBhbmQgYW55IFBvd2VyUEMgcGxhdGZvcm0gdGhhdCB1c2VzIEdDQwotKGkuZS4gT1MgWCBhbmQgbGludXgvcHBjKS4KLQotT24gdGhlIFBvd2VyUEMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIHRpbWUgYmFzZSByZWdpc3RlciBpcyBpbmNyZW1lbnRlZCBpcyBub3QKLWRlZmluZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9uLCBzbyB5b3UnbGwgbmVlZCB0byBmaW5kIHRoZSBtYW51YWwgZm9yCi15b3VyIHNwZWNpZmljIHByb2Nlc3Nvci4gIEZvciB0aGUgNzUwQ1gsIDc1MENYZSBhbmQgNzUwRlggKGFsbCBzb2xkIGFzIHRoZSBHMykKLXdlIGZpbmQ6Ci0KLSAgICBUaGUgdGltZSBiYXNlIGNvdW50ZXIgaXMgY2xvY2tlZCBhdCBhIGZyZXF1ZW5jeSB0aGF0IGlzIG9uZS1mb3VydGggdGhhdCBvZgotICAgIHRoZSBidXMgY2xvY2suCi0KLVRoaXMgYnVpbGQgaXMgZW5hYmxlZCBieSB0aGUgLS13aXRoLXRzYyBmbGFnIHRvIGNvbmZpZ3VyZS4KZGlmZiAtLWdpdCBhL01pc2MvY292ZXJpdHlfbW9kZWwuYyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwppbmRleCA3NDlmMmYwLi4xYWU2MTc5IDEwMDY0NAotLS0gYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMKKysrIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIGFzc2VydChvcCkgLyogZW1wdHkgKi8KIHR5cGVkZWYgaW50IHNkaWdpdDsKIHR5cGVkZWYgbG9uZyBQeV9zc2l6ZV90OwotdHlwZWRlZiBsb25nIGxvbmcgUFlfTE9OR19MT05HOwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB3Y2hhcl90OwogdHlwZWRlZiBzdHJ1Y3Qge30gUHlPYmplY3Q7CiB0eXBlZGVmIHN0cnVjdCB7fSBncmFtbWFyOwpAQCAtNjMsNyArNjIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeU9iamVjdCAqUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogfQpAQCAtOTQsNyArOTMsNyBAQAogfQogCiAvKiBQYXJzZXIvcGdlbm1haW4uYyAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgZ3JhbW1hciAqZzsKICAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zaW5rX18oZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24ubWFuIGIvTWlzYy9weXRob24ubWFuCmluZGV4IDI4ZjE5YjYuLjM4NWI2NTQgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLm1hbgorKysgYi9NaXNjL3B5dGhvbi5tYW4KQEAgLTE5NCw3ICsxOTQsOCBAQAogYXQgZXhpdC4KIC5UUAogLkIgXC1WICIsICIgXC1cLXZlcnNpb24KLVByaW50cyB0aGUgUHl0aG9uIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0cy4KK1ByaW50cyB0aGUgUHl0aG9uIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0cy4gIFdoZW4gZ2l2ZW4KK3R3aWNlLCBwcmludCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZC4KIC5UUAogLkJJICJcLVcgIiBhcmd1bWVudAogV2FybmluZyBjb250cm9sLiAgUHl0aG9uIHNvbWV0aW1lcyBwcmludHMgd2FybmluZyBtZXNzYWdlIHRvCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbiBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCmluZGV4IGFkYWMwMzAuLjY0NTA1MjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCisrKyBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCkBAIC02LDggKzYsNSBAQAogIyBUaHJlYWRpbmcKIEBVU0VfVEhSRUFEX01PRFVMRUBfdGhyZWFkIF90aHJlYWRtb2R1bGUuYwogCi0jIFRoZSBzaWduYWwgbW9kdWxlCi1AVVNFX1NJR05BTF9NT0RVTEVAX3NpZ25hbCBzaWduYWxtb2R1bGUuYwotCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIHByZXZpb3VzbHkgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYnVpbHQKICMgYnkgdGhlIHNldHVwLnB5IHNjcmlwdCBpbiBQeXRob24gMi4xIGFuZCBsYXRlci4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCAwNmJhNmFkLi44Yjg3ZmM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMTcsNiArMTE3LDcgQEAKIF9jb2xsZWN0aW9ucyBfY29sbGVjdGlvbnNtb2R1bGUuYyAjIENvbnRhaW5lciB0eXBlcwogaXRlcnRvb2xzIGl0ZXJ0b29sc21vZHVsZS5jICAgICMgRnVuY3Rpb25zIGNyZWF0aW5nIGl0ZXJhdG9ycyBmb3IgZWZmaWNpZW50IGxvb3BpbmcKIGF0ZXhpdCBhdGV4aXRtb2R1bGUuYyAgICAgICMgUmVnaXN0ZXIgZnVuY3Rpb25zIHRvIGJlIHJ1biBhdCBpbnRlcnByZXRlci1zaHV0ZG93bgorX3NpZ25hbCBzaWduYWxtb2R1bGUuYwogX3N0YXQgX3N0YXQuYwkJCSMgc3RhdC5oIGludGVyZmFjZQogdGltZSB0aW1lbW9kdWxlLmMJIyAtbG0gIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwogCkBAIC0xODAsNiArMTgxLDcgQEAKICNfZGF0ZXRpbWUgX2RhdGV0aW1lbW9kdWxlLmMJIyBkYXRldGltZSBhY2NlbGVyYXRvcgogI19iaXNlY3QgX2Jpc2VjdG1vZHVsZS5jCSMgQmlzZWN0aW9uIGFsZ29yaXRobXMKICNfaGVhcHEgX2hlYXBxbW9kdWxlLmMJIyBIZWFwIHF1ZXVlIGFsZ29yaXRobQorI19hc3luY2lvIF9hc3luY2lvbW9kdWxlLmMgICMgRmFzdCBhc3luY2lvIEZ1dHVyZQogCiAjdW5pY29kZWRhdGEgdW5pY29kZWRhdGEuYyAgICAjIHN0YXRpYyBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZQogCkBAIC0yNDksNiArMjUxLDggQEAKICNfc2hhMjU2IHNoYTI1Nm1vZHVsZS5jCiAjX3NoYTUxMiBzaGE1MTJtb2R1bGUuYwogCisjIF9ibGFrZSBtb2R1bGUKKyNfYmxha2UyIF9ibGFrZTIvYmxha2UybW9kdWxlLmMgX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyBfYmxha2UyL2JsYWtlMnNfaW1wbC5jCiAKICMgVGhlIF90a2ludGVyIG1vZHVsZS4KICMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYyBiL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmY5MDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jCkBAIC0wLDAgKzEsMjQ2OSBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfYXN5bmNpbworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OGZkMTc4NjJhYTk4OWM2OV0qLworCisKKy8qIGlkZW50aWZpZXJzIHVzZWQgZnJvbSBzb21lIGZ1bmN0aW9ucyAqLworX1B5X0lERU5USUZJRVIoYWRkX2RvbmVfY2FsbGJhY2spOworX1B5X0lERU5USUZJRVIoY2FsbF9zb29uKTsKK19QeV9JREVOVElGSUVSKGNhbmNlbCk7CitfUHlfSURFTlRJRklFUihzZW5kKTsKK19QeV9JREVOVElGSUVSKHRocm93KTsKK19QeV9JREVOVElGSUVSKF9zdGVwKTsKK19QeV9JREVOVElGSUVSKF9zY2hlZHVsZV9jYWxsYmFja3MpOworX1B5X0lERU5USUZJRVIoX3dha2V1cCk7CisKKworLyogU3RhdGUgb2YgdGhlIF9hc3luY2lvIG1vZHVsZSAqLworc3RhdGljIFB5T2JqZWN0ICphbGxfdGFza3M7CitzdGF0aWMgUHlPYmplY3QgKmN1cnJlbnRfdGFza3M7CitzdGF0aWMgUHlPYmplY3QgKnRyYWNlYmFja19leHRyYWN0X3N0YWNrOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX2dldF9ldmVudF9sb29wOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb190YXNrX3JlcHJfaW5mb19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmM7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fdGFza19wcmludF9zdGFja19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0NhbmNlbGxlZEVycm9yOworc3RhdGljIFB5T2JqZWN0ICppbnNwZWN0X2lzZ2VuZXJhdG9yOworCisKK3R5cGVkZWYgZW51bSB7CisgICAgU1RBVEVfUEVORElORywKKyAgICBTVEFURV9DQU5DRUxMRUQsCisgICAgU1RBVEVfRklOSVNIRUQKK30gZnV0X3N0YXRlOworCisjZGVmaW5lIEZ1dHVyZU9ial9IRUFEKHByZWZpeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0X0hFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfbG9vcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX2NhbGxiYWNrczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19leGNlcHRpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3NvdXJjZV90YjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZ1dF9zdGF0ZSBwcmVmaXgjI19zdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQgcHJlZml4IyNfbG9nX3RiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHByZWZpeCMjX2Jsb2NraW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpkaWN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfd2Vha3JlZmxpc3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBGdXR1cmVPYmpfSEVBRChmdXQpCit9IEZ1dHVyZU9iajsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEZ1dHVyZU9ial9IRUFEKHRhc2spCisgICAgUHlPYmplY3QgKnRhc2tfZnV0X3dhaXRlcjsKKyAgICBQeU9iamVjdCAqdGFza19jb3JvOworICAgIGludCB0YXNrX211c3RfY2FuY2VsOworICAgIGludCB0YXNrX2xvZ19kZXN0cm95X3BlbmRpbmc7Cit9IFRhc2tPYmo7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgVGFza09iaiAqc3dfdGFzazsKKyAgICBQeU9iamVjdCAqc3dfYXJnOworfSBUYXNrU2VuZE1ldGhXcmFwcGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFRhc2tPYmogKnd3X3Rhc2s7Cit9IFRhc2tXYWtldXBNZXRoV3JhcHBlcjsKKworCisjaW5jbHVkZSAiY2xpbmljL19hc3luY2lvbW9kdWxlLmMuaCIKKworCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBfYXN5bmNpby5GdXR1cmUgIkZ1dHVyZU9iaiAqIiAiJkZ1dHVyZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MDBkM2U0YWJjYTcxMWUwZl0qLworCisvKiBHZXQgRnV0dXJlSXRlciBmcm9tIEZ1dHVyZSAqLworc3RhdGljIFB5T2JqZWN0KiBmdXR1cmVfbmV3X2l0ZXIoUHlPYmplY3QgKik7CitzdGF0aWMgaW5saW5lIGludCBmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICopOworCitzdGF0aWMgaW50CitmdXR1cmVfc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0KiBpdGVyczsKKyAgICBpbnQgaTsKKworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiTlVMTCBjYWxsYmFja3MiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpdGVycyA9IFB5TGlzdF9HZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbik7CisgICAgaWYgKGl0ZXJzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGZ1dC0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZXJzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaGFuZGxlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNiID0gUHlMaXN0X0dFVF9JVEVNKGl0ZXJzLCBpKTsKKworICAgICAgICBoYW5kbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9zb29uLCAiT08iLCBjYiwgZnV0LCBOVUxMKTsKKworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Z1dHVyZV9pbml0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqbG9vcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihnZXRfZGVidWcpOworCisgICAgaWYgKGxvb3AgPT0gTlVMTCB8fCBsb29wID09IFB5X05vbmUpIHsKKyAgICAgICAgbG9vcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKGxvb3ApOworICAgIH0KKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9sb29wKTsKKyAgICBmdXQtPmZ1dF9sb29wID0gbG9vcDsKKworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZnV0LT5mdXRfbG9vcCwgJlB5SWRfZ2V0X2RlYnVnLCBOVUxMKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHJlcykpIHsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgZnV0LT5mdXRfc291cmNlX3RiID0gUHlPYmplY3RfQ2FsbE9iamVjdCh0cmFjZWJhY2tfZXh0cmFjdF9zdGFjaywgTlVMTCk7CisgICAgICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2NhbGxiYWNrcyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGZ1dC0+ZnV0X2NhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9zZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqcmVzKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICBmdXQtPmZ1dF9yZXN1bHQgPSByZXM7CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9GSU5JU0hFRDsKKworICAgIGlmIChmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfc2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmV4YykKK3sKKyAgICBQeU9iamVjdCAqZXhjX3ZhbCA9IE5VTEw7CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2soZXhjKSkgeworICAgICAgICBleGNfdmFsID0gUHlPYmplY3RfQ2FsbE9iamVjdChleGMsIE5VTEwpOworICAgICAgICBpZiAoZXhjX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXhjX3ZhbCA9IGV4YzsKKyAgICAgICAgUHlfSU5DUkVGKGV4Y192YWwpOworICAgIH0KKyAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2soZXhjX3ZhbCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBleGNlcHRpb24gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0KilQeV9UWVBFKGV4Y192YWwpID09IFB5RXhjX1N0b3BJdGVyYXRpb24pIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24gaW50ZXJhY3RzIGJhZGx5IHdpdGggZ2VuZXJhdG9ycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9leGNlcHRpb24gPSBleGNfdmFsOworICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfRklOSVNIRUQ7CisKKyAgICBpZiAoZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZnV0LT5mdXRfbG9nX3RiID0gMTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorZnV0dXJlX2dldF9yZXN1bHQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICoqcmVzdWx0KQoreworICAgIFB5T2JqZWN0ICpleGM7CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIGV4YyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvcik7CisgICAgICAgIGlmIChleGMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgICpyZXN1bHQgPSBleGM7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9GSU5JU0hFRCkgeworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIlJlc3VsdCBpcyBub3QgcmVhZHkuIik7CisgICAgICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgZXhjID0gX1B5T2JqZWN0X0NhbGxBcmcxKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsIG1zZyk7CisgICAgICAgIFB5X0RFQ1JFRihtc2cpOworICAgICAgICBpZiAoZXhjID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgICpyZXN1bHQgPSBleGM7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDA7CisgICAgaWYgKGZ1dC0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgICAgICAqcmVzdWx0ID0gZnV0LT5mdXRfZXhjZXB0aW9uOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICAqcmVzdWx0ID0gZnV0LT5mdXRfcmVzdWx0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5T2JqZWN0ICpoYW5kbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9zb29uLCAiT08iLCBhcmcsIGZ1dCwgTlVMTCk7CisKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihoYW5kbGUpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgZXJyID0gUHlMaXN0X0FwcGVuZChmdXQtPmZ1dF9jYWxsYmFja3MsIGFyZyk7CisgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfY2FuY2VsKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9DQU5DRUxMRUQ7CisKKyAgICBpZiAoZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5fX2luaXRfXworCisgICAgKgorICAgIGxvb3A6ICdPJyA9IE5VTEwKKworVGhpcyBjbGFzcyBpcyAqYWxtb3N0KiBjb21wYXRpYmxlIHdpdGggY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZS4KKworICAgIERpZmZlcmVuY2VzOgorCisgICAgLSByZXN1bHQoKSBhbmQgZXhjZXB0aW9uKCkgZG8gbm90IHRha2UgYSB0aW1lb3V0IGFyZ3VtZW50IGFuZAorICAgICAgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGZ1dHVyZSBpc24ndCBkb25lIHlldC4KKworICAgIC0gQ2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCBhZGRfZG9uZV9jYWxsYmFjaygpIGFyZSBhbHdheXMgY2FsbGVkCisgICAgICB2aWEgdGhlIGV2ZW50IGxvb3AncyBjYWxsX3Nvb25fdGhyZWFkc2FmZSgpLgorCisgICAgLSBUaGlzIGNsYXNzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkKKyAgICAgIG1ldGhvZHMgaW4gdGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBwYWNrYWdlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfYXN5bmNpb19GdXR1cmVfX19pbml0X19faW1wbChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpsb29wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllZDc1Nzk5ZWFjY2I1ZDYgaW5wdXQ9OGUxNjgxZjIzNjA1YmUyZF0qLworCit7CisgICAgcmV0dXJuIGZ1dHVyZV9pbml0KHNlbGYsIGxvb3ApOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfY2xlYXIoRnV0dXJlT2JqICpmdXQpCit7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfbG9vcCk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9yZXN1bHQpOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICBQeV9DTEVBUihmdXQtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfdHJhdmVyc2UoRnV0dXJlT2JqICpmdXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2xvb3ApOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgUHlfVklTSVQoZnV0LT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnJlc3VsdAorCitSZXR1cm4gdGhlIHJlc3VsdCB0aGlzIGZ1dHVyZSByZXByZXNlbnRzLgorCitJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzIENhbmNlbGxlZEVycm9yLiAgSWYgdGhlCitmdXR1cmUncyByZXN1bHQgaXNuJ3QgeWV0IGF2YWlsYWJsZSwgcmFpc2VzIEludmFsaWRTdGF0ZUVycm9yLiAgSWYKK3RoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjM1Zjk0MDkzNmE0YjFlNSBpbnB1dD00OWVjZjljZjVlYzUwZGM1XSovCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgcmVzID0gZnV0dXJlX2dldF9yZXN1bHQoc2VsZiwgJnJlc3VsdCk7CisKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGFzc2VydChyZXMgPT0gMSk7CisKKyAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhyZXN1bHQpLCByZXN1bHQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuZXhjZXB0aW9uCisKK1JldHVybiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzIHNldCBvbiB0aGlzIGZ1dHVyZS4KKworVGhlIGV4Y2VwdGlvbiAob3IgTm9uZSBpZiBubyBleGNlcHRpb24gd2FzIHNldCkgaXMgcmV0dXJuZWQgb25seSBpZgordGhlIGZ1dHVyZSBpcyBkb25lLiAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcworQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LCByYWlzZXMKK0ludmFsaWRTdGF0ZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OGIyMGQ0Zjg1NWUwNzEwIGlucHV0PTczMzU0N2E3MGM4NDFjNjhdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlICE9IFNUQVRFX0ZJTklTSEVEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiUmVzdWx0IGlzIG5vdCByZWFkeS4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5mdXRfbG9nX3RiID0gMDsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmZ1dF9leGNlcHRpb24pOworICAgICAgICByZXR1cm4gc2VsZi0+ZnV0X2V4Y2VwdGlvbjsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnNldF9yZXN1bHQKKworICAgIHJlczogJ08nCisgICAgLworCitNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuCisKK0lmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXMKK0ludmFsaWRTdGF0ZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3NldF9yZXN1bHQoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqcmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2MjBhYmZjMjc5NmJmYjYgaW5wdXQ9ODYxOTU2NWUwNTAzMzU3ZV0qLworeworICAgIHJldHVybiBmdXR1cmVfc2V0X3Jlc3VsdChzZWxmLCByZXMpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuc2V0X2V4Y2VwdGlvbgorCisgICAgZXhjZXB0aW9uOiAnTycKKyAgICAvCisKK01hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgYW4gZXhjZXB0aW9uLgorCitJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzCitJbnZhbGlkU3RhdGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9zZXRfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmV4Y2VwdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMWMxYjBjZDMyMWJlMzYwIGlucHV0PTEzNzdkYmUxNWU2ZWExODZdKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX3NldF9leGNlcHRpb24oc2VsZiwgZXhjZXB0aW9uKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmFkZF9kb25lX2NhbGxiYWNrCisKKyAgICBmbjogJ08nCisgICAgLworCitBZGQgYSBjYWxsYmFjayB0byBiZSBydW4gd2hlbiB0aGUgZnV0dXJlIGJlY29tZXMgZG9uZS4KKworVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IC0gdGhlIGZ1dHVyZSBvYmplY3QuIElmCit0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgaXMgY2FsbGVkLCB0aGUgY2FsbGJhY2sgaXMKK3NjaGVkdWxlZCB3aXRoIGNhbGxfc29vbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpmbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MTllMDk2MjliMmVjMmI1IGlucHV0PThjY2UxODdlMzJjZWM2YThdKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKHNlbGYsIGZuKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnJlbW92ZV9kb25lX2NhbGxiYWNrCisKKyAgICBmbjogJ08nCisgICAgLworCitSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlICJjYWxsIHdoZW4gZG9uZSIgbGlzdC4KKworUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrcyByZW1vdmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3JlbW92ZV9kb25lX2NhbGxiYWNrKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmZuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhYjFmYjUyYjI0ZWYzMWYgaW5wdXQ9M2ZlZGI3M2UxNDA5YzMxY10qLworeworICAgIFB5T2JqZWN0ICpuZXdsaXN0OworICAgIFB5X3NzaXplX3QgbGVuLCBpLCBqPTA7CisKKyAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUoc2VsZi0+ZnV0X2NhbGxiYWNrcyk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoMCk7CisgICAgfQorCisgICAgbmV3bGlzdCA9IFB5TGlzdF9OZXcobGVuKTsKKyAgICBpZiAobmV3bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpbnQgcmV0OworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShzZWxmLT5mdXRfY2FsbGJhY2tzLCBpKTsKKworICAgICAgICBpZiAoKHJldCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChmbiwgaXRlbSwgUHlfRVEpKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShuZXdsaXN0LCBqLCBpdGVtKTsKKyAgICAgICAgICAgIGorKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUxpc3RfU2V0U2xpY2UobmV3bGlzdCwgaiwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKHNlbGYtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbiwgbmV3bGlzdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuIC0gaik7CisKK2ZhaWw6CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuY2FuY2VsCisKK0NhbmNlbCB0aGUgZnV0dXJlIGFuZCBzY2hlZHVsZSBjYWxsYmFja3MuCisKK0lmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIG9yIGNhbmNlbGxlZCwgcmV0dXJuIEZhbHNlLiAgT3RoZXJ3aXNlLAorY2hhbmdlIHRoZSBmdXR1cmUncyBzdGF0ZSB0byBjYW5jZWxsZWQsIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kCityZXR1cm4gVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTQ1YjkzMmJhOGJkNjhhMSBpbnB1dD01MTU3MDlhMTI3OTk1MTA5XSovCit7CisgICAgcmV0dXJuIGZ1dHVyZV9jYW5jZWwoc2VsZik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5jYW5jZWxsZWQKKworUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDUxOTdjZWQ1ODYzNTdkIGlucHV0PTk0M2FiOGI3YjdiMTdlNDVdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5kb25lCisKK1JldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgZG9uZS4KKworRG9uZSBtZWFucyBlaXRoZXIgdGhhdCBhIHJlc3VsdCAvIGV4Y2VwdGlvbiBhcmUgYXZhaWxhYmxlLCBvciB0aGF0IHRoZQorZnV0dXJlIHdhcyBjYW5jZWxsZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZG9uZV9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNDRjNWFjMzUxMTQ1MDk2IGlucHV0PTI4ZDdiMjNmZGI2NWQyYWNdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9ibG9ja2luZyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfYmxvY2tpbmcpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfc2V0X2Jsb2NraW5nKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqdmFsKQoreworICAgIGludCBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKHZhbCk7CisgICAgaWYgKGlzX3RydWUgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSBpc190cnVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9sb2dfdHJhY2ViYWNrKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9sb2dfdGIpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9sb29wKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9sb29wID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9sb29wKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfbG9vcDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2NhbGxiYWNrczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X3Jlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9leGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2V4Y2VwdGlvbjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfc291cmNlX3RyYWNlYmFjayhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9zb3VyY2VfdGIpOworICAgIHJldHVybiBmdXQtPmZ1dF9zb3VyY2VfdGI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3N0YXRlKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKFBFTkRJTkcpOworICAgIF9QeV9JREVOVElGSUVSKENBTkNFTExFRCk7CisgICAgX1B5X0lERU5USUZJRVIoRklOSVNIRUQpOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworCisgICAgc3dpdGNoIChmdXQtPmZ1dF9zdGF0ZSkgeworICAgIGNhc2UgU1RBVEVfUEVORElORzoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfUEVORElORyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfQ0FOQ0VMTEVEOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9DQU5DRUxMRUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX0ZJTklTSEVEOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9GSU5JU0hFRCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCAoMCk7CisgICAgfQorICAgIFB5X0lOQ1JFRihyZXQpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5fcmVwcl9pbmZvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYTY5ZTkwMWJkMTc2Y2ZiIGlucHV0PWYyMTUwNGQ4ZTJhZTFjYTJdKi8KK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgYXN5bmNpb19mdXR1cmVfcmVwcl9pbmZvX2Z1bmMsIHNlbGYsIE5VTEwpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuX3NjaGVkdWxlX2NhbGxiYWNrcworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWU4OTU4ZDg5ZWExYzVkYyBpbnB1dD00ZjVmMjk1ZjI2M2Y0YTg4XSovCit7CisgICAgaW50IHJldCA9IGZ1dHVyZV9zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfcmVwcihGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfcmVwcl9pbmZvKTsKKworICAgIFB5T2JqZWN0ICpfcmVwcl9pbmZvID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX3JlcHJfaW5mbyk7ICAvLyBib3Jyb3dlZAorICAgIGlmIChfcmVwcl9pbmZvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJpbmZvID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKFB5T2JqZWN0KilmdXQsIF9yZXByX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKHJpbmZvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnNwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiAiKTsKKyAgICBpZiAoc3AgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocmluZm8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcmluZm9fcyA9IFB5VW5pY29kZV9Kb2luKHNwLCByaW5mbyk7CisgICAgUHlfREVDUkVGKHNwKTsKKyAgICBQeV9ERUNSRUYocmluZm8pOworICAgIGlmIChyaW5mb19zID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJzdHIgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0eXBlX25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShmdXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyIpOworICAgIGlmICh0eXBlX25hbWUgIT0gTlVMTCkgeworICAgICAgICByc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlUyAlUz4iLCB0eXBlX25hbWUsIHJpbmZvX3MpOworICAgICAgICBQeV9ERUNSRUYodHlwZV9uYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHJpbmZvX3MpOworICAgIHJldHVybiByc3RyOworfQorCitzdGF0aWMgdm9pZAorRnV0dXJlT2JqX2ZpbmFsaXplKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKGNhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIF9QeV9JREVOVElGSUVSKG1lc3NhZ2UpOworICAgIF9QeV9JREVOVElGSUVSKGV4Y2VwdGlvbik7CisgICAgX1B5X0lERU5USUZJRVIoZnV0dXJlKTsKKyAgICBfUHlfSURFTlRJRklFUihzb3VyY2VfdHJhY2ViYWNrKTsKKworICAgIGlmICghZnV0LT5mdXRfbG9nX3RiKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZ1dC0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKTsKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAwOzsKKworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHlwZV9uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbWVzc2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgY29udGV4dCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICB0eXBlX25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShmdXQpLCAiX19uYW1lX18iKTsKKyAgICBpZiAodHlwZV9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVTIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkIiwgdHlwZV9uYW1lKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfbWVzc2FnZSwgbWVzc2FnZSkgPCAwIHx8CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX2V4Y2VwdGlvbiwgZnV0LT5mdXRfZXhjZXB0aW9uKSA8IDAgfHwKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfZnV0dXJlLCAoUHlPYmplY3QqKWZ1dCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiAhPSBOVUxMKSB7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9zb3VyY2VfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0LT5mdXRfc291cmNlX3RiKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIGNvbnRleHQpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKworZmluYWxseToKKyAgICBQeV9DTEVBUihjb250ZXh0KTsKKyAgICBQeV9DTEVBUih0eXBlX25hbWUpOworICAgIFB5X0NMRUFSKG1lc3NhZ2UpOworICAgIFB5X0NMRUFSKGZ1bmMpOworICAgIFB5X0NMRUFSKHJlcyk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgRnV0dXJlVHlwZV9hc19hc3luYyA9IHsKKyAgICAodW5hcnlmdW5jKWZ1dHVyZV9uZXdfaXRlciwgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBGdXR1cmVUeXBlX21ldGhvZHNbXSA9IHsKKyAgICBfQVNZTkNJT19GVVRVUkVfUkVTVUxUX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9SRVNVTFRfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0FERF9ET05FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9SRU1PVkVfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxMRURfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0RPTkVfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX19SRVBSX0lORk9fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX19TQ0hFRFVMRV9DQUxMQkFDS1NfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworI2RlZmluZSBGVVRVUkVfQ09NTU9OX0dFVFNFVExJU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX3N0YXRlIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3N0YXRlLCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2Jsb2NraW5nLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcilGdXR1cmVPYmpfc2V0X2Jsb2NraW5nLCBOVUxMfSwgICAgICAgXAorICAgIHsiX2xvb3AiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9vcCwgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2NhbGxiYWNrcyIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9jYWxsYmFja3MsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgXAorICAgIHsiX3Jlc3VsdCIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9yZXN1bHQsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2V4Y2VwdGlvbiIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9leGNlcHRpb24sIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgXAorICAgIHsiX2xvZ190cmFjZWJhY2siLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9nX3RyYWNlYmFjaywgTlVMTCwgTlVMTH0sICAgICAgXAorICAgIHsiX3NvdXJjZV90cmFjZWJhY2siLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfc291cmNlX3RyYWNlYmFjaywgTlVMTCwgTlVMTH0sCisKK3N0YXRpYyBQeUdldFNldERlZiBGdXR1cmVUeXBlX2dldHNldGxpc3RbXSA9IHsKKyAgICBGVVRVUkVfQ09NTU9OX0dFVFNFVExJU1QKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyB2b2lkIEZ1dHVyZU9ial9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBGdXR1cmVUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYXN5bmNpby5GdXR1cmUiLAorICAgIHNpemVvZihGdXR1cmVPYmopLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgLnRwX2RlYWxsb2MgPSBGdXR1cmVPYmpfZGVhbGxvYywKKyAgICAudHBfYXNfYXN5bmMgPSAmRnV0dXJlVHlwZV9hc19hc3luYywKKyAgICAudHBfcmVwciA9IChyZXByZnVuYylGdXR1cmVPYmpfcmVwciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLAorICAgIC50cF9kb2MgPSBfYXN5bmNpb19GdXR1cmVfX19pbml0X19fX2RvY19fLAorICAgIC50cF90cmF2ZXJzZSA9ICh0cmF2ZXJzZXByb2MpRnV0dXJlT2JqX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KUZ1dHVyZU9ial9jbGVhciwKKyAgICAudHBfd2Vha2xpc3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGZ1dF93ZWFrcmVmbGlzdCksCisgICAgLnRwX2l0ZXIgPSAoZ2V0aXRlcmZ1bmMpZnV0dXJlX25ld19pdGVyLAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlVHlwZV9tZXRob2RzLAorICAgIC50cF9nZXRzZXQgPSBGdXR1cmVUeXBlX2dldHNldGxpc3QsCisgICAgLnRwX2RpY3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGRpY3QpLAorICAgIC50cF9pbml0ID0gKGluaXRwcm9jKV9hc3luY2lvX0Z1dHVyZV9fX2luaXRfXywKKyAgICAudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXcsCisgICAgLnRwX2ZpbmFsaXplID0gKGRlc3RydWN0b3IpRnV0dXJlT2JqX2ZpbmFsaXplLAorfTsKKworI2RlZmluZSBGdXR1cmVfQ2hlY2tFeGFjdChvYmopIChQeV9UWVBFKG9iaikgPT0gJkZ1dHVyZVR5cGUpCisKK3N0YXRpYyBpbmxpbmUgaW50CitmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKEZ1dHVyZV9DaGVja0V4YWN0KGZ1dCkpIHsKKyAgICAgICAgcmV0dXJuIGZ1dHVyZV9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGBmdXRgIGlzIGEgc3ViY2xhc3Mgb2YgRnV0dXJlICovCisgICAgICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgKFB5T2JqZWN0KilmdXQsICZQeUlkX19zY2hlZHVsZV9jYWxsYmFja3MsIE5VTEwpOworICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihyZXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitGdXR1cmVPYmpfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBGdXR1cmVPYmogKmZ1dCA9IChGdXR1cmVPYmogKilzZWxmOworCisgICAgaWYgKEZ1dHVyZV9DaGVja0V4YWN0KGZ1dCkpIHsKKyAgICAgICAgLyogV2hlbiBmdXQgaXMgc3ViY2xhc3Mgb2YgRnV0dXJlLCBmaW5hbGl6ZXIgaXMgY2FsbGVkIGZyb20KKyAgICAgICAgICogc3VidHlwZV9kZWFsbG9jLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKSA8IDApIHsKKyAgICAgICAgICAgIC8vIHJlc3VycmVjdGVkLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3dlYWtyZWZsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyhzZWxmKTsKKyAgICB9CisKKyAgICAodm9pZClGdXR1cmVPYmpfY2xlYXIoZnV0KTsKKyAgICBQeV9UWVBFKGZ1dCktPnRwX2ZyZWUoZnV0KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogRnV0dXJlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEZ1dHVyZU9iaiAqZnV0dXJlOworfSBmdXR1cmVpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorRnV0dXJlSXRlcl9kZWFsbG9jKGZ1dHVyZWl0ZXJvYmplY3QgKml0KQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soaXQpOworICAgIFB5X1hERUNSRUYoaXQtPmZ1dHVyZSk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfaXRlcm5leHQoZnV0dXJlaXRlcm9iamVjdCAqaXQpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBGdXR1cmVPYmogKmZ1dCA9IGl0LT5mdXR1cmU7CisKKyAgICBpZiAoZnV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgaWYgKCFmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICAgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSAxOworICAgICAgICAgICAgUHlfSU5DUkVGKGZ1dCk7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZnV0OworICAgICAgICB9CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Bc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ5aWVsZCBmcm9tIHdhc24ndCB1c2VkIHdpdGggZnV0dXJlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IF9hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChmdXQpOworICAgIGlmIChyZXMgIT0gTlVMTCkgeworICAgICAgICAvKiBUaGUgcmVzdWx0IG9mIHRoZSBGdXR1cmUgaXMgbm90IGFuIGV4Y2VwdGlvbi4gKi8KKyAgICAgICAgaWYgKF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUocmVzKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgaXQtPmZ1dHVyZSA9IE5VTEw7CisgICAgUHlfREVDUkVGKGZ1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3NlbmQoZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICAvKiBGdXR1cmUuX19pdGVyX18gZG9lc24ndCBjYXJlIGFib3V0IHZhbHVlcyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhlCisgICAgICogZ2VuZXJhdG9yLCBpdCBqdXN0IHJldHVybnMgInNlbGYucmVzdWx0KCkuCisgICAgICovCisgICAgcmV0dXJuIEZ1dHVyZUl0ZXJfaXRlcm5leHQoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3Rocm93KGZ1dHVyZWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp0eXBlPU5VTEwsICp2YWw9TlVMTCwgKnRiPU5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9PIiwgJnR5cGUsICZ2YWwsICZ0YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZhbCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHZhbCA9IE5VTEw7CisgICAgfQorICAgIGlmICh0YiA9PSBQeV9Ob25lKSB7CisgICAgICAgIHRiID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKHRiICE9IE5VTEwgJiYgIVB5VHJhY2VCYWNrX0NoZWNrKHRiKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAidGhyb3coKSB0aGlyZCBhcmd1bWVudCBtdXN0IGJlIGEgdHJhY2ViYWNrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih0eXBlKTsKKyAgICBQeV9YSU5DUkVGKHZhbCk7CisgICAgUHlfWElOQ1JFRih0Yik7CisKKyAgICBpZiAoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSkgeworICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJnR5cGUsICZ2YWwsICZ0Yik7CisgICAgICAgIC8qIE5vIG5lZWQgdG8gY2FsbCBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sgc2luY2Ugd2UnbGwgYmUgY2FsbGluZworICAgICAgICAgICBQeUVycl9SZXN0b3JlIGZvciBgdHlwZWAsIGB2YWxgLCBhbmQgYHRiYC4gKi8KKyAgICB9IGVsc2UgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodHlwZSkpIHsKKyAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFuY2UgZXhjZXB0aW9uIG1heSBub3QgaGF2ZSBhIHNlcGFyYXRlIHZhbHVlIik7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgdmFsID0gdHlwZTsKKyAgICAgICAgdHlwZSA9IFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3ModHlwZSk7CisgICAgICAgIFB5X0lOQ1JFRih0eXBlKTsKKyAgICAgICAgaWYgKHRiID09IE5VTEwpCisgICAgICAgICAgICB0YiA9IFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjayh2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9ucyBtdXN0IGJlIGNsYXNzZXMgZGVyaXZpbmcgQmFzZUV4Y2VwdGlvbiBvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFuY2VzIG9mIHN1Y2ggYSBjbGFzcyIpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgUHlfQ0xFQVIoc2VsZi0+ZnV0dXJlKTsKKworICAgIFB5RXJyX1Jlc3RvcmUodHlwZSwgdmFsLCB0Yik7CisKKyAgICByZXR1cm4gRnV0dXJlSXRlcl9pdGVybmV4dChzZWxmKTsKKworICBmYWlsOgorICAgIFB5X0RFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgUHlfWERFQ1JFRih0Yik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX2Nsb3NlKGZ1dHVyZWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZnV0dXJlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorRnV0dXJlSXRlcl90cmF2ZXJzZShmdXR1cmVpdGVyb2JqZWN0ICppdCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoaXQtPmZ1dHVyZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBGdXR1cmVJdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZUl0ZXJfc2VuZCwgTUVUSF9PLCBOVUxMfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKUZ1dHVyZUl0ZXJfdGhyb3csIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX2Nsb3NlLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBGdXR1cmVJdGVyVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2FzeW5jaW8uRnV0dXJlSXRlciIsCisgICAgLnRwX2Jhc2ljc2l6ZSA9IHNpemVvZihmdXR1cmVpdGVyb2JqZWN0KSwKKyAgICAudHBfaXRlbXNpemUgPSAwLAorICAgIC50cF9kZWFsbG9jID0gKGRlc3RydWN0b3IpRnV0dXJlSXRlcl9kZWFsbG9jLAorICAgIC50cF9nZXRhdHRybyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKUZ1dHVyZUl0ZXJfdHJhdmVyc2UsCisgICAgLnRwX2l0ZXIgPSBQeU9iamVjdF9TZWxmSXRlciwKKyAgICAudHBfaXRlcm5leHQgPSAoaXRlcm5leHRmdW5jKUZ1dHVyZUl0ZXJfaXRlcm5leHQsCisgICAgLnRwX21ldGhvZHMgPSBGdXR1cmVJdGVyX21ldGhvZHMsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX25ld19pdGVyKFB5T2JqZWN0ICpmdXQpCit7CisgICAgZnV0dXJlaXRlcm9iamVjdCAqaXQ7CisKKyAgICBpZiAoIVB5T2JqZWN0X1R5cGVDaGVjayhmdXQsICZGdXR1cmVUeXBlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KGZ1dHVyZWl0ZXJvYmplY3QsICZGdXR1cmVJdGVyVHlwZSk7CisgICAgaWYgKGl0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQpOworICAgIGl0LT5mdXR1cmUgPSAoRnV0dXJlT2JqKilmdXQ7CisgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOworICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKiBUYXNrICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIF9hc3luY2lvLlRhc2sgIlRhc2tPYmogKiIgIiZUYXNrX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03MTlkY2VmMGZjYzAzYjM3XSovCisKK3N0YXRpYyBpbnQgdGFza19jYWxsX3N0ZXBfc29vbihUYXNrT2JqICosIFB5T2JqZWN0ICopOworc3RhdGljIGlubGluZSBQeU9iamVjdCAqIHRhc2tfY2FsbF93YWtldXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKiB0YXNrX2NhbGxfc3RlcChUYXNrT2JqICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogdGFza193YWtldXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIHRhc2tfc3RlcChUYXNrT2JqICosIFB5T2JqZWN0ICopOworCisvKiAtLS0tLSBUYXNrLl9zdGVwIHdyYXBwZXIgKi8KKworc3RhdGljIGludAorVGFza1NlbmRNZXRoV3JhcHBlcl9jbGVhcihUYXNrU2VuZE1ldGhXcmFwcGVyICpvKQoreworICAgIFB5X0NMRUFSKG8tPnN3X3Rhc2spOworICAgIFB5X0NMRUFSKG8tPnN3X2FyZyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitUYXNrU2VuZE1ldGhXcmFwcGVyX2RlYWxsb2MoVGFza1NlbmRNZXRoV3JhcHBlciAqbykKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKG8pOworICAgICh2b2lkKVRhc2tTZW5kTWV0aFdyYXBwZXJfY2xlYXIobyk7CisgICAgUHlfVFlQRShvKS0+dHBfZnJlZShvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfY2FsbChUYXNrU2VuZE1ldGhXcmFwcGVyICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICByZXR1cm4gdGFza19jYWxsX3N0ZXAoby0+c3dfdGFzaywgby0+c3dfYXJnKTsKK30KKworc3RhdGljIGludAorVGFza1NlbmRNZXRoV3JhcHBlcl90cmF2ZXJzZShUYXNrU2VuZE1ldGhXcmFwcGVyICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvLT5zd190YXNrKTsKKyAgICBQeV9WSVNJVChvLT5zd19hcmcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorVGFza1NlbmRNZXRoV3JhcHBlcl9nZXRfX19zZWxmX18oVGFza1NlbmRNZXRoV3JhcHBlciAqbykKK3sKKyAgICBpZiAoby0+c3dfdGFzaykgeworICAgICAgICBQeV9JTkNSRUYoby0+c3dfdGFzayk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QqKW8tPnN3X3Rhc2s7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgVGFza1NlbmRNZXRoV3JhcHBlcl9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfX3NlbGZfXyIsIChnZXR0ZXIpVGFza1NlbmRNZXRoV3JhcHBlcl9nZXRfX19zZWxmX18sIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IFRhc2tTZW5kTWV0aFdyYXBwZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiVGFza1NlbmRNZXRoV3JhcHBlciIsCisgICAgLnRwX2Jhc2ljc2l6ZSA9IHNpemVvZihUYXNrU2VuZE1ldGhXcmFwcGVyKSwKKyAgICAudHBfaXRlbXNpemUgPSAwLAorICAgIC50cF9nZXRzZXQgPSBUYXNrU2VuZE1ldGhXcmFwcGVyX2dldHNldGxpc3QsCisgICAgLnRwX2RlYWxsb2MgPSAoZGVzdHJ1Y3RvcilUYXNrU2VuZE1ldGhXcmFwcGVyX2RlYWxsb2MsCisgICAgLnRwX2NhbGwgPSAodGVybmFyeWZ1bmMpVGFza1NlbmRNZXRoV3JhcHBlcl9jYWxsLAorICAgIC50cF9nZXRhdHRybyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKVRhc2tTZW5kTWV0aFdyYXBwZXJfdHJhdmVyc2UsCisgICAgLnRwX2NsZWFyID0gKGlucXVpcnkpVGFza1NlbmRNZXRoV3JhcHBlcl9jbGVhciwKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrU2VuZE1ldGhXcmFwcGVyX25ldyhUYXNrT2JqICp0YXNrLCBQeU9iamVjdCAqYXJnKQoreworICAgIFRhc2tTZW5kTWV0aFdyYXBwZXIgKm87CisgICAgbyA9IFB5T2JqZWN0X0dDX05ldyhUYXNrU2VuZE1ldGhXcmFwcGVyLCAmVGFza1NlbmRNZXRoV3JhcHBlcl9UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih0YXNrKTsKKyAgICBvLT5zd190YXNrID0gdGFzazsKKworICAgIFB5X1hJTkNSRUYoYXJnKTsKKyAgICBvLT5zd19hcmcgPSBhcmc7CisKKyAgICBQeU9iamVjdF9HQ19UcmFjayhvKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KikgbzsKK30KKworLyogLS0tLS0gVGFzay5fd2FrZXVwIHdyYXBwZXIgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tXYWtldXBNZXRoV3JhcHBlcl9jYWxsKFRhc2tXYWtldXBNZXRoV3JhcHBlciAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqZnV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfCIsICZmdXQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiB0YXNrX2NhbGxfd2FrZXVwKG8tPnd3X3Rhc2ssIGZ1dCk7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tXYWtldXBNZXRoV3JhcHBlcl9jbGVhcihUYXNrV2FrZXVwTWV0aFdyYXBwZXIgKm8pCit7CisgICAgUHlfQ0xFQVIoby0+d3dfdGFzayk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tXYWtldXBNZXRoV3JhcHBlcl90cmF2ZXJzZShUYXNrV2FrZXVwTWV0aFdyYXBwZXIgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoby0+d3dfdGFzayk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfZGVhbGxvYyhUYXNrV2FrZXVwTWV0aFdyYXBwZXIgKm8pCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhvKTsKKyAgICAodm9pZClUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2xlYXIobyk7CisgICAgUHlfVFlQRShvKS0+dHBfZnJlZShvKTsKK30KKworUHlUeXBlT2JqZWN0IFRhc2tXYWtldXBNZXRoV3JhcHBlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJUYXNrV2FrZXVwTWV0aFdyYXBwZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoVGFza1dha2V1cE1ldGhXcmFwcGVyKSwKKyAgICAudHBfaXRlbXNpemUgPSAwLAorICAgIC50cF9kZWFsbG9jID0gKGRlc3RydWN0b3IpVGFza1dha2V1cE1ldGhXcmFwcGVyX2RlYWxsb2MsCisgICAgLnRwX2NhbGwgPSAodGVybmFyeWZ1bmMpVGFza1dha2V1cE1ldGhXcmFwcGVyX2NhbGwsCisgICAgLnRwX2dldGF0dHJvID0gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsCisgICAgLnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgIC50cF90cmF2ZXJzZSA9ICh0cmF2ZXJzZXByb2MpVGFza1dha2V1cE1ldGhXcmFwcGVyX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KVRhc2tXYWtldXBNZXRoV3JhcHBlcl9jbGVhciwKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfbmV3KFRhc2tPYmogKnRhc2spCit7CisgICAgVGFza1dha2V1cE1ldGhXcmFwcGVyICpvOworICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoVGFza1dha2V1cE1ldGhXcmFwcGVyLCAmVGFza1dha2V1cE1ldGhXcmFwcGVyX1R5cGUpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHRhc2spOworICAgIG8tPnd3X3Rhc2sgPSB0YXNrOworCisgICAgUHlPYmplY3RfR0NfVHJhY2sobyk7CisgICAgcmV0dXJuIChQeU9iamVjdCopIG87Cit9CisKKy8qIC0tLS0tIFRhc2sgKi8KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5fX2luaXRfXworCisgICAgY29ybzogJ08nCisgICAgKgorICAgIGxvb3A6ICdPJyA9IE5VTEwKKworQSBjb3JvdXRpbmUgd3JhcHBlZCBpbiBhIEZ1dHVyZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2FzeW5jaW9fVGFza19fX2luaXRfX19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpjb3JvLCBQeU9iamVjdCAqbG9vcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZjI0Nzc0YzIyODdmYzJmIGlucHV0PTcxZDhkMjhjMjAxYTE4Y2RdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKGFkZCk7CisKKyAgICBpZiAoZnV0dXJlX2luaXQoKEZ1dHVyZU9iaiopc2VsZiwgbG9vcCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHNlbGYtPnRhc2tfZnV0X3dhaXRlciA9IE5VTEw7CisgICAgc2VsZi0+dGFza19tdXN0X2NhbmNlbCA9IDA7CisgICAgc2VsZi0+dGFza19sb2dfZGVzdHJveV9wZW5kaW5nID0gMTsKKworICAgIFB5X0lOQ1JFRihjb3JvKTsKKyAgICBzZWxmLT50YXNrX2Nvcm8gPSBjb3JvOworCisgICAgaWYgKHRhc2tfY2FsbF9zdGVwX3Nvb24oc2VsZiwgTlVMTCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGFsbF90YXNrcywgJlB5SWRfYWRkLCBzZWxmLCBOVUxMKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitUYXNrT2JqX2NsZWFyKFRhc2tPYmogKnRhc2spCit7CisgICAgKHZvaWQpRnV0dXJlT2JqX2NsZWFyKChGdXR1cmVPYmoqKSB0YXNrKTsKKyAgICBQeV9DTEVBUih0YXNrLT50YXNrX2Nvcm8pOworICAgIFB5X0NMRUFSKHRhc2stPnRhc2tfZnV0X3dhaXRlcik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tPYmpfdHJhdmVyc2UoVGFza09iaiAqdGFzaywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQodGFzay0+dGFza19jb3JvKTsKKyAgICBQeV9WSVNJVCh0YXNrLT50YXNrX2Z1dF93YWl0ZXIpOworICAgICh2b2lkKUZ1dHVyZU9ial90cmF2ZXJzZSgoRnV0dXJlT2JqKikgdGFzaywgdmlzaXQsIGFyZyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrT2JqX2dldF9sb2dfZGVzdHJveV9wZW5kaW5nKFRhc2tPYmogKnRhc2spCit7CisgICAgaWYgKHRhc2stPnRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tPYmpfc2V0X2xvZ19kZXN0cm95X3BlbmRpbmcoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKnZhbCkKK3sKKyAgICBpbnQgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWwpOworICAgIGlmIChpc190cnVlIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRhc2stPnRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZyA9IGlzX3RydWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrT2JqX2dldF9tdXN0X2NhbmNlbChUYXNrT2JqICp0YXNrKQoreworICAgIGlmICh0YXNrLT50YXNrX211c3RfY2FuY2VsKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tPYmpfZ2V0X2Nvcm8oVGFza09iaiAqdGFzaykKK3sKKyAgICBpZiAodGFzay0+dGFza19jb3JvKSB7CisgICAgICAgIFB5X0lOQ1JFRih0YXNrLT50YXNrX2Nvcm8pOworICAgICAgICByZXR1cm4gdGFzay0+dGFza19jb3JvOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorVGFza09ial9nZXRfZnV0X3dhaXRlcihUYXNrT2JqICp0YXNrKQoreworICAgIGlmICh0YXNrLT50YXNrX2Z1dF93YWl0ZXIpIHsKKyAgICAgICAgUHlfSU5DUkVGKHRhc2stPnRhc2tfZnV0X3dhaXRlcik7CisgICAgICAgIHJldHVybiB0YXNrLT50YXNrX2Z1dF93YWl0ZXI7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2FzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sKKworICAgIGxvb3A6ICdPJyA9IE5VTEwKKworUmV0dXJuIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrIGluIGFuIGV2ZW50IGxvb3Agb3IgTm9uZS4KKworQnkgZGVmYXVsdCB0aGUgY3VycmVudCB0YXNrIGZvciB0aGUgY3VycmVudCBldmVudCBsb29wIGlzIHJldHVybmVkLgorCitOb25lIGlzIHJldHVybmVkIHdoZW4gY2FsbGVkIG5vdCBpbiB0aGUgY29udGV4dCBvZiBhIFRhc2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFza19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmxvb3ApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTlmYmU3MzMyYzUxNmUwMyBpbnB1dD1jZDc4NDUzN2YwMmNmODMzXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgbG9vcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gUHlEaWN0X0dldEl0ZW0oY3VycmVudF90YXNrcywgbG9vcCk7CisgICAgICAgIFB5X0RFQ1JFRihsb29wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IFB5RGljdF9HZXRJdGVtKGN1cnJlbnRfdGFza3MsIGxvb3ApOworICAgIH0KKworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfYWxsX3Rhc2tzKFB5T2JqZWN0ICpsb29wKQoreworICAgIFB5T2JqZWN0ICp0YXNrOworICAgIFB5T2JqZWN0ICp0YXNrX2xvb3A7CisgICAgUHlPYmplY3QgKnNldDsKKyAgICBQeU9iamVjdCAqaXRlcjsKKworICAgIGFzc2VydChsb29wICE9IE5VTEwpOworCisgICAgc2V0ID0gUHlTZXRfTmV3KE5VTEwpOworICAgIGlmIChzZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihhbGxfdGFza3MpOworICAgIGlmIChpdGVyID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIHdoaWxlICgodGFzayA9IFB5SXRlcl9OZXh0KGl0ZXIpKSkgeworICAgICAgICB0YXNrX2xvb3AgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhc2ssICJfbG9vcCIpOworICAgICAgICBpZiAodGFza19sb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YXNrKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGFza19sb29wID09IGxvb3ApIHsKKyAgICAgICAgICAgIGlmIChQeVNldF9BZGQoc2V0LCB0YXNrKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YXNrX2xvb3ApOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YXNrKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHRhc2tfbG9vcCk7CisgICAgICAgIFB5X0RFQ1JFRih0YXNrKTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgcmV0dXJuIHNldDsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKHNldCk7CisgICAgUHlfWERFQ1JFRihpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfYXN5bmNpby5UYXNrLmFsbF90YXNrcworCisgICAgbG9vcDogJ08nID0gTlVMTAorCitSZXR1cm4gYSBzZXQgb2YgYWxsIHRhc2tzIGZvciBhbiBldmVudCBsb29wLgorCitCeSBkZWZhdWx0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbG9vcCBhcmUgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2FsbF90YXNrc19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmxvb3ApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTFmOWIyMDc0OWNjY2E1ZCBpbnB1dD1jZDY0YWE1Zjg4YmQ1YzQ5XSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgbG9vcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gdGFza19hbGxfdGFza3MobG9vcCk7CisgICAgICAgIFB5X0RFQ1JFRihsb29wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IHRhc2tfYWxsX3Rhc2tzKGxvb3ApOworICAgIH0KKworICAgIHJldHVybiByZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suX3JlcHJfaW5mbworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvX2ltcGwoVGFza09iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ5MGViNjZkNWJhMzRiIGlucHV0PTNjNmQwNTFlZDNkZGVjOGJdKi8KK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgYXN5bmNpb190YXNrX3JlcHJfaW5mb19mdW5jLCBzZWxmLCBOVUxMKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5jYW5jZWwKKworUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLgorCitUaGlzIGFycmFuZ2VzIGZvciBhIENhbmNlbGxlZEVycm9yIHRvIGJlIHRocm93biBpbnRvIHRoZQord3JhcHBlZCBjb3JvdXRpbmUgb24gdGhlIG5leHQgY3ljbGUgdGhyb3VnaCB0aGUgZXZlbnQgbG9vcC4KK1RoZSBjb3JvdXRpbmUgdGhlbiBoYXMgYSBjaGFuY2UgdG8gY2xlYW4gdXAgb3IgZXZlbiBkZW55Cit0aGUgcmVxdWVzdCB1c2luZyB0cnkvZXhjZXB0L2ZpbmFsbHkuCisKK1VubGlrZSBGdXR1cmUuY2FuY2VsLCB0aGlzIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZQordGFzayB3aWxsIGJlIGNhbmNlbGxlZDogdGhlIGV4Y2VwdGlvbiBtaWdodCBiZSBjYXVnaHQgYW5kCithY3RlZCB1cG9uLCBkZWxheWluZyBjYW5jZWxsYXRpb24gb2YgdGhlIHRhc2sgb3IgcHJldmVudGluZworY2FuY2VsbGF0aW9uIGNvbXBsZXRlbHkuICBUaGUgdGFzayBtYXkgYWxzbyByZXR1cm4gYSB2YWx1ZSBvcgorcmFpc2UgYSBkaWZmZXJlbnQgZXhjZXB0aW9uLgorCitJbW1lZGlhdGVseSBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIFRhc2suY2FuY2VsbGVkKCkgd2lsbAorbm90IHJldHVybiBUcnVlICh1bmxlc3MgdGhlIHRhc2sgd2FzIGFscmVhZHkgY2FuY2VsbGVkKS4gIEEKK3Rhc2sgd2lsbCBiZSBtYXJrZWQgYXMgY2FuY2VsbGVkIHdoZW4gdGhlIHdyYXBwZWQgY29yb3V0aW5lCit0ZXJtaW5hdGVzIHdpdGggYSBDYW5jZWxsZWRFcnJvciBleGNlcHRpb24gKGV2ZW4gaWYgY2FuY2VsKCkKK3dhcyBub3QgY2FsbGVkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY2FuY2VsX2ltcGwoVGFza09iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YmZjMDQ3OWRhOWQ1NzU3IGlucHV0PTEzZjliZjQ5NjY5NWNiNTJdKi8KK3sKKyAgICBpZiAoc2VsZi0+dGFza19zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+dGFza19mdXRfd2FpdGVyKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIGludCBpc190cnVlOworCisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT50YXNrX2Z1dF93YWl0ZXIsICZQeUlkX2NhbmNlbCwgTlVMTCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzX3RydWUpIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICB9CisgICAgfQorCisgICAgc2VsZi0+dGFza19tdXN0X2NhbmNlbCA9IDE7CisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suZ2V0X3N0YWNrCisKKyAgICAqCisgICAgbGltaXQ6ICdPJyA9IE5vbmUKKworUmV0dXJuIHRoZSBsaXN0IG9mIHN0YWNrIGZyYW1lcyBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgorCitJZiB0aGUgY29yb3V0aW5lIGlzIG5vdCBkb25lLCB0aGlzIHJldHVybnMgdGhlIHN0YWNrIHdoZXJlIGl0IGlzCitzdXNwZW5kZWQuICBJZiB0aGUgY29yb3V0aW5lIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIHdhcworY2FuY2VsbGVkLCB0aGlzIHJldHVybnMgYW4gZW1wdHkgbGlzdC4gIElmIHRoZSBjb3JvdXRpbmUgd2FzCit0ZXJtaW5hdGVkIGJ5IGFuIGV4Y2VwdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIHRyYWNlYmFjaworZnJhbWVzLgorCitUaGUgZnJhbWVzIGFyZSBhbHdheXMgb3JkZXJlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCisKK1RoZSBvcHRpb25hbCBsaW1pdCBnaXZlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvCityZXR1cm47IGJ5IGRlZmF1bHQgYWxsIGF2YWlsYWJsZSBmcmFtZXMgYXJlIHJldHVybmVkLiAgSXRzCittZWFuaW5nIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSBzdGFjayBvciBhIHRyYWNlYmFjayBpcworcmV0dXJuZWQ6IHRoZSBuZXdlc3QgZnJhbWVzIG9mIGEgc3RhY2sgYXJlIHJldHVybmVkLCBidXQgdGhlCitvbGRlc3QgZnJhbWVzIG9mIGEgdHJhY2ViYWNrIGFyZSByZXR1cm5lZC4gIChUaGlzIG1hdGNoZXMgdGhlCitiZWhhdmlvciBvZiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4pCisKK0ZvciByZWFzb25zIGJleW9uZCBvdXIgY29udHJvbCwgb25seSBvbmUgc3RhY2sgZnJhbWUgaXMKK3JldHVybmVkIGZvciBhIHN1c3BlbmRlZCBjb3JvdXRpbmUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2dldF9zdGFja19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpsaW1pdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jOWFlZWVlYmQxZTE4MTE4IGlucHV0PWIxOTIwMjMwYTc2NmQxN2FdKi8KK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgYXN5bmNpb190YXNrX2dldF9zdGFja19mdW5jLCBzZWxmLCBsaW1pdCwgTlVMTCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2sucHJpbnRfc3RhY2sKKworICAgICoKKyAgICBsaW1pdDogJ08nID0gTm9uZQorICAgIGZpbGU6ICdPJyA9IE5vbmUKKworUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgorCitUaGlzIHByb2R1Y2VzIG91dHB1dCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUsCitmb3IgdGhlIGZyYW1lcyByZXRyaWV2ZWQgYnkgZ2V0X3N0YWNrKCkuICBUaGUgbGltaXQgYXJndW1lbnQKK2lzIHBhc3NlZCB0byBnZXRfc3RhY2soKS4gIFRoZSBmaWxlIGFyZ3VtZW50IGlzIGFuIEkvTyBzdHJlYW0KK3RvIHdoaWNoIHRoZSBvdXRwdXQgaXMgd3JpdHRlbjsgYnkgZGVmYXVsdCBvdXRwdXQgaXMgd3JpdHRlbgordG8gc3lzLnN0ZGVyci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2tfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMzOWUxMDMxNGNkM2Y0ZCBpbnB1dD0xOWYxZTk5YWI1NDAwYmMzXSovCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgIGFzeW5jaW9fdGFza19wcmludF9zdGFja19mdW5jLCBzZWxmLCBsaW1pdCwgZmlsZSwgTlVMTCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suX3N0ZXAKKworICAgIGV4YzogJ08nID0gTlVMTAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fc3RlcF9pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpleGMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2VkMjNmMGNlZmQ1YWU0MiBpbnB1dD1hZGE0YjIzMjRlNTM3MGFmXSovCit7CisgICAgcmV0dXJuIHRhc2tfc3RlcChzZWxmLCBleGMgPT0gUHlfTm9uZSA/IE5VTEwgOiBleGMpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLl93YWtldXAKKworICAgIGZ1dDogJ08nCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX193YWtldXBfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqZnV0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1Y2IzNDFjNzYwZmQwNzEgaW5wdXQ9MTFlZTQ5MThhNWJkYmYyMV0qLworeworICAgIHJldHVybiB0YXNrX3dha2V1cChzZWxmLCBmdXQpOworfQorCitzdGF0aWMgdm9pZAorVGFza09ial9maW5hbGl6ZShUYXNrT2JqICp0YXNrKQoreworICAgIF9QeV9JREVOVElGSUVSKGNhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIF9QeV9JREVOVElGSUVSKHRhc2spOworICAgIF9QeV9JREVOVElGSUVSKG1lc3NhZ2UpOworICAgIF9QeV9JREVOVElGSUVSKHNvdXJjZV90cmFjZWJhY2spOworCisgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgaWYgKHRhc2stPnRhc2tfc3RhdGUgIT0gU1RBVEVfUEVORElORyB8fCAhdGFzay0+dGFza19sb2dfZGVzdHJveV9wZW5kaW5nKSB7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgY29udGV4dCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIlRhc2sgd2FzIGRlc3Ryb3llZCBidXQgaXQgaXMgcGVuZGluZyEiKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfbWVzc2FnZSwgbWVzc2FnZSkgPCAwIHx8CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX3Rhc2ssIChQeU9iamVjdCopdGFzaykgPCAwKQorICAgIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIGlmICh0YXNrLT50YXNrX3NvdXJjZV90YiAhPSBOVUxMKSB7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9zb3VyY2VfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay0+dGFza19zb3VyY2VfdGIpIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQodGFzay0+dGFza19sb29wLCAmUHlJZF9jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZnVuYyk7CisgICAgICAgIH0KKyAgICB9CisKK2ZpbmFsbHk6CisgICAgUHlfQ0xFQVIoY29udGV4dCk7CisgICAgUHlfQ0xFQVIobWVzc2FnZSk7CisgICAgUHlfQ0xFQVIoZnVuYyk7CisgICAgUHlfQ0xFQVIocmVzKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworCitkb25lOgorICAgIEZ1dHVyZU9ial9maW5hbGl6ZSgoRnV0dXJlT2JqKil0YXNrKTsKK30KKworc3RhdGljIHZvaWQgVGFza09ial9kZWFsbG9jKFB5T2JqZWN0ICopOyAgLyogTmVlZHMgVGFza19DaGVja0V4YWN0ICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBUYXNrVHlwZV9tZXRob2RzW10gPSB7CisgICAgX0FTWU5DSU9fRlVUVVJFX1JFU1VMVF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfRVhDRVBUSU9OX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfUkVTVUxUX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfRVhDRVBUSU9OX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9BRERfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfUkVNT1ZFX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0NBTkNFTExFRF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfRE9ORV9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX0NVUlJFTlRfVEFTS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX0FMTF9UQVNLU19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX0NBTkNFTF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX0dFVF9TVEFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX1BSSU5UX1NUQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfX1dBS0VVUF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX19TVEVQX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfX1JFUFJfSU5GT19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgVGFza1R5cGVfZ2V0c2V0bGlzdFtdID0geworICAgIEZVVFVSRV9DT01NT05fR0VUU0VUTElTVAorICAgIHsiX2xvZ19kZXN0cm95X3BlbmRpbmciLCAoZ2V0dGVyKVRhc2tPYmpfZ2V0X2xvZ19kZXN0cm95X3BlbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpVGFza09ial9zZXRfbG9nX2Rlc3Ryb3lfcGVuZGluZywgTlVMTH0sCisgICAgeyJfbXVzdF9jYW5jZWwiLCAoZ2V0dGVyKVRhc2tPYmpfZ2V0X211c3RfY2FuY2VsLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9jb3JvIiwgKGdldHRlcilUYXNrT2JqX2dldF9jb3JvLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9mdXRfd2FpdGVyIiwgKGdldHRlcilUYXNrT2JqX2dldF9mdXRfd2FpdGVyLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGFza1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9hc3luY2lvLlRhc2siLAorICAgIHNpemVvZihUYXNrT2JqKSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIC50cF9iYXNlID0gJkZ1dHVyZVR5cGUsCisgICAgLnRwX2RlYWxsb2MgPSBUYXNrT2JqX2RlYWxsb2MsCisgICAgLnRwX2FzX2FzeW5jID0gJkZ1dHVyZVR5cGVfYXNfYXN5bmMsCisgICAgLnRwX3JlcHIgPSAocmVwcmZ1bmMpRnV0dXJlT2JqX3JlcHIsCisgICAgLnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwKKyAgICAudHBfZG9jID0gX2FzeW5jaW9fVGFza19fX2luaXRfX19fZG9jX18sCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylUYXNrT2JqX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KVRhc2tPYmpfY2xlYXIsCisgICAgLnRwX3dlYWtsaXN0b2Zmc2V0ID0gb2Zmc2V0b2YoVGFza09iaiwgdGFza193ZWFrcmVmbGlzdCksCisgICAgLnRwX2l0ZXIgPSAoZ2V0aXRlcmZ1bmMpZnV0dXJlX25ld19pdGVyLAorICAgIC50cF9tZXRob2RzID0gVGFza1R5cGVfbWV0aG9kcywKKyAgICAudHBfZ2V0c2V0ID0gVGFza1R5cGVfZ2V0c2V0bGlzdCwKKyAgICAudHBfZGljdG9mZnNldCA9IG9mZnNldG9mKFRhc2tPYmosIGRpY3QpLAorICAgIC50cF9pbml0ID0gKGluaXRwcm9jKV9hc3luY2lvX1Rhc2tfX19pbml0X18sCisgICAgLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3LAorICAgIC50cF9maW5hbGl6ZSA9IChkZXN0cnVjdG9yKVRhc2tPYmpfZmluYWxpemUsCit9OworCisjZGVmaW5lIFRhc2tfQ2hlY2tFeGFjdChvYmopIChQeV9UWVBFKG9iaikgPT0gJlRhc2tUeXBlKQorCitzdGF0aWMgdm9pZAorVGFza09ial9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFRhc2tPYmogKnRhc2sgPSAoVGFza09iaiAqKXNlbGY7CisKKyAgICBpZiAoVGFza19DaGVja0V4YWN0KHNlbGYpKSB7CisgICAgICAgIC8qIFdoZW4gZnV0IGlzIHN1YmNsYXNzIG9mIFRhc2ssIGZpbmFsaXplciBpcyBjYWxsZWQgZnJvbQorICAgICAgICAgKiBzdWJ0eXBlX2RlYWxsb2MuCisgICAgICAgICAqLworICAgICAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKHNlbGYpIDwgMCkgeworICAgICAgICAgICAgLy8gcmVzdXJyZWN0ZWQuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGFzay0+dGFza193ZWFrcmVmbGlzdCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoc2VsZik7CisgICAgfQorCisgICAgKHZvaWQpVGFza09ial9jbGVhcih0YXNrKTsKKyAgICBQeV9UWVBFKHRhc2spLT50cF9mcmVlKHRhc2spOworfQorCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKK3Rhc2tfY2FsbF93YWtldXAoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmZ1dCkKK3sKKyAgICBpZiAoVGFza19DaGVja0V4YWN0KHRhc2spKSB7CisgICAgICAgIHJldHVybiB0YXNrX3dha2V1cCh0YXNrLCBmdXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogYHRhc2tgIGlzIGEgc3ViY2xhc3Mgb2YgVGFzayAqLworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoKFB5T2JqZWN0Kil0YXNrLCAmUHlJZF9fd2FrZXVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0LCBOVUxMKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgordGFza19jYWxsX3N0ZXAoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoVGFza19DaGVja0V4YWN0KHRhc2spKSB7CisgICAgICAgIHJldHVybiB0YXNrX3N0ZXAodGFzaywgYXJnKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGB0YXNrYCBpcyBhIHN1YmNsYXNzIG9mIFRhc2sgKi8KKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBhcmcgPSBQeV9Ob25lOworICAgICAgICB9CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncygoUHlPYmplY3QqKXRhc2ssICZQeUlkX19zdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBOVUxMKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3Rhc2tfY2FsbF9zdGVwX3Nvb24oVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqaGFuZGxlOworCisgICAgUHlPYmplY3QgKmNiID0gVGFza1NlbmRNZXRoV3JhcHBlcl9uZXcodGFzaywgYXJnKTsKKyAgICBpZiAoY2IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3ModGFzay0+dGFza19sb29wLCAmUHlJZF9jYWxsX3Nvb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2IsIE5VTEwpOworICAgIFB5X0RFQ1JFRihjYik7CisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfc2V0X2Vycm9yX3Nvb24oVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV0LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICBQeU9iamVjdCogbXNnOworCisgICAgdmFfbGlzdCB2YXJnczsKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgorICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworCisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhldCwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYobXNnKTsKKyAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh0YXNrX2NhbGxfc3RlcF9zb29uKHRhc2ssIGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfREVDUkVGKGUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFza19zdGVwX2ltcGwoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV4YykKK3sKKyAgICBpbnQgcmVzOworICAgIGludCBjbGVhcl9leGMgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb3JvID0gdGFzay0+dGFza19jb3JvOworICAgIFB5T2JqZWN0ICpvOworCisgICAgaWYgKHRhc2stPnRhc2tfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX3N0ZXAoKTogYWxyZWFkeSBkb25lOiAlUiAlUiIsCisgICAgICAgICAgICAgICAgICAgICB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgZXhjID8gZXhjIDogUHlfTm9uZSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICBhc3NlcnQoZXhjICE9IFB5X05vbmUpOworCisgICAgICAgIGlmIChleGMpIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGlmIGV4YyBpcyBhIENhbmNlbGxlZEVycm9yICovCisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgYXN5bmNpb19DYW5jZWxsZWRFcnJvcik7CisgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgLyogQW4gZXJyb3Igb2NjdXJyZWQsIGFib3J0ICovCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZXhjIGlzIG5vdCBDYW5jZWxsZWRFcnJvcjsgcmVzZXQgaXQgdG8gTlVMTCAqLworICAgICAgICAgICAgICAgIGV4YyA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWV4YykgeworICAgICAgICAgICAgLyogZXhjIHdhcyBub3QgYSBDYW5jZWxsZWRFcnJvciAqLworICAgICAgICAgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhhc3luY2lvX0NhbmNlbGxlZEVycm9yLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICghZXhjKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYXJfZXhjID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHRhc2stPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgIH0KKworICAgIFB5X0NMRUFSKHRhc2stPnRhc2tfZnV0X3dhaXRlcik7CisKKyAgICBpZiAoZXhjID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoY29ybykgfHwgUHlDb3JvX0NoZWNrRXhhY3QoY29ybykpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCopY29ybywgUHlfTm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncygKKyAgICAgICAgICAgICAgICBjb3JvLCAmUHlJZF9zZW5kLCBQeV9Ob25lLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoCisgICAgICAgICAgICBjb3JvLCAmUHlJZF90aHJvdywgZXhjLCBOVUxMKTsKKyAgICAgICAgaWYgKGNsZWFyX2V4YykgeworICAgICAgICAgICAgLyogV2UgY3JlYXRlZCAnZXhjJyBkdXJpbmcgdGhpcyBjYWxsICovCisgICAgICAgICAgICBQeV9DTEVBUihleGMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpldCwgKmV2LCAqdGI7CisKKyAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmbykgPT0gMCkgeworICAgICAgICAgICAgLyogVGhlIGVycm9yIGlzIFN0b3BJdGVyYXRpb24gYW5kIHRoYXQgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgdGhlIHVuZGVybHlpbmcgY29yb3V0aW5lIGhhcyByZXNvbHZlZCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IGZ1dHVyZV9zZXRfcmVzdWx0KChGdXR1cmVPYmoqKXRhc2ssIG8pOworICAgICAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoYXN5bmNpb19DYW5jZWxsZWRFcnJvcikpIHsKKyAgICAgICAgICAgIC8qIENhbmNlbGxlZEVycm9yICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZ1dHVyZV9jYW5jZWwoKEZ1dHVyZU9iaiopdGFzayk7CisgICAgICAgIH0KKworICAgICAgICAvKiBTb21lIG90aGVyIGV4Y2VwdGlvbjsgcG9wIGl0IGFuZCBjYWxsIFRhc2suc2V0X2V4Y2VwdGlvbigpICovCisgICAgICAgIFB5RXJyX0ZldGNoKCZldCwgJmV2LCAmdGIpOworICAgICAgICBhc3NlcnQoZXQpOworICAgICAgICBpZiAoIWV2IHx8ICFQeU9iamVjdF9UeXBlQ2hlY2soZXYsIChQeVR5cGVPYmplY3QgKikgZXQpKSB7CisgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayhldiwgdGIpOworICAgICAgICB9CisgICAgICAgIG8gPSBmdXR1cmVfc2V0X2V4Y2VwdGlvbigoRnV0dXJlT2JqKil0YXNrLCBldik7CisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgLyogQW4gZXhjZXB0aW9uIGluIFRhc2suc2V0X2V4Y2VwdGlvbigpICovCisgICAgICAgICAgICBQeV9YREVDUkVGKGV0KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICAgICAgUHlfWERFQ1JFRihldik7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KG8gPT0gUHlfTm9uZSk7CisgICAgICAgIFB5X0NMRUFSKG8pOworCisgICAgICAgIGlmICghUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGV0LCBQeUV4Y19FeGNlcHRpb24pKSB7CisgICAgICAgICAgICAvKiBXZSd2ZSBnb3QgYSBCYXNlRXhjZXB0aW9uOyByZS1yYWlzZSBpdCAqLworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShldCwgZXYsIHRiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorCisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgUHlfWERFQ1JFRihldik7CisKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSAoUHlPYmplY3QqKXRhc2spIHsKKyAgICAgICAgLyogV2UgaGF2ZSBhIHRhc2sgdGhhdCB3YW50cyB0byBhd2FpdCBvbiBpdHNlbGYgKi8KKyAgICAgICAgZ290byBzZWxmX2F3YWl0OworICAgIH0KKworICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGlzIEZ1dHVyZU9iaiBvciBUYXNrT2JqIChhbmQgbm90IGEgc3ViY2xhc3MpICovCisgICAgaWYgKEZ1dHVyZV9DaGVja0V4YWN0KHJlc3VsdCkgfHwgVGFza19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgUHlPYmplY3QgKndyYXBwZXI7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIEZ1dHVyZU9iaiAqZnV0ID0gKEZ1dHVyZU9iaiopcmVzdWx0OworCisgICAgICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGZ1dHVyZSBpcyBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBsb29wICovCisgICAgICAgIGlmIChmdXQtPmZ1dF9sb29wICE9IHRhc2stPnRhc2tfbG9vcCkgeworICAgICAgICAgICAgZ290byBkaWZmZXJlbnRfbG9vcDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICAgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSAwOworCisgICAgICAgICAgICAvKiByZXN1bHQuYWRkX2RvbmVfY2FsbGJhY2sodGFzay5fd2FrZXVwKSAqLworICAgICAgICAgICAgd3JhcHBlciA9IFRhc2tXYWtldXBNZXRoV3JhcHBlcl9uZXcodGFzayk7CisgICAgICAgICAgICBpZiAod3JhcHBlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gZnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKChGdXR1cmVPYmoqKXJlc3VsdCwgd3JhcHBlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgICAgICAgICAgLyogdGFzay5fZnV0X3dhaXRlciA9IHJlc3VsdCAqLworICAgICAgICAgICAgdGFzay0+dGFza19mdXRfd2FpdGVyID0gcmVzdWx0OyAgLyogbm8gaW5jcmVmIGlzIG5lY2Vzc2FyeSAqLworCisgICAgICAgICAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyOworICAgICAgICAgICAgICAgIHIgPSBmdXR1cmVfY2FuY2VsKGZ1dCk7CisgICAgICAgICAgICAgICAgaWYgKHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHIgPT0gUHlfVHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICB0YXNrLT50YXNrX211c3RfY2FuY2VsID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8geWllbGRfaW5zdGVhZG9mX3lmOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgaXMgYSBGdXR1cmUtY29tcGF0aWJsZSBvYmplY3QgKi8KKyAgICBvID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhyZXN1bHQsICJfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmciKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG8gPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfQ0xFQVIobyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBgcmVzdWx0YCBpcyBhIEZ1dHVyZS1jb21wYXRpYmxlIG9iamVjdCAqLworICAgICAgICAgICAgUHlPYmplY3QgKndyYXBwZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworCisgICAgICAgICAgICBpbnQgYmxvY2tpbmcgPSBQeU9iamVjdF9Jc1RydWUobyk7CisgICAgICAgICAgICBQeV9DTEVBUihvKTsKKyAgICAgICAgICAgIGlmIChibG9ja2luZyA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGZ1dHVyZSBpcyBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBsb29wICovCisgICAgICAgICAgICBQeU9iamVjdCAqb2xvb3AgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHJlc3VsdCwgIl9sb29wIik7CisgICAgICAgICAgICBpZiAob2xvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvbG9vcCAhPSB0YXNrLT50YXNrX2xvb3ApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob2xvb3ApOworICAgICAgICAgICAgICAgIGdvdG8gZGlmZmVyZW50X2xvb3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob2xvb3ApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmxvY2tpbmcpIHsKKyAgICAgICAgICAgICAgICAvKiByZXN1bHQuX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nID0gRmFsc2UgKi8KKyAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgIl9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZyIsIFB5X0ZhbHNlKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogcmVzdWx0LmFkZF9kb25lX2NhbGxiYWNrKHRhc2suX3dha2V1cCkgKi8KKyAgICAgICAgICAgICAgICB3cmFwcGVyID0gVGFza1dha2V1cE1ldGhXcmFwcGVyX25ldyh0YXNrKTsKKyAgICAgICAgICAgICAgICBpZiAod3JhcHBlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2FkZF9kb25lX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgICAgICAgICAgICAgIC8qIHRhc2suX2Z1dF93YWl0ZXIgPSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICB0YXNrLT50YXNrX2Z1dF93YWl0ZXIgPSByZXN1bHQ7ICAvKiBubyBpbmNyZWYgaXMgbmVjZXNzYXJ5ICovCisKKyAgICAgICAgICAgICAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcjsKKyAgICAgICAgICAgICAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgICAgICAgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfY2FuY2VsLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZShyKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzX3RydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2stPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2luc3RlYWRvZl95ZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGlzIE5vbmUgKi8KKyAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogQmFyZSB5aWVsZCByZWxpbnF1aXNoZXMgY29udHJvbCBmb3Igb25lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiAqLworICAgICAgICBpZiAodGFza19jYWxsX3N0ZXBfc29vbih0YXNrLCBOVUxMKSkgeworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICBvID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhpbnNwZWN0X2lzZ2VuZXJhdG9yLCByZXN1bHQsIE5VTEwpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgLyogQW4gZXhjZXB0aW9uIGluIGluc3BlY3QuaXNnZW5lcmF0b3IgKi8KKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICByZXMgPSBQeU9iamVjdF9Jc1RydWUobyk7CisgICAgUHlfQ0xFQVIobyk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAvKiBBbiBleGNlcHRpb24gd2hpbGUgY2hlY2tpbmcgaWYgJ3ZhbCcgaXMgVHJ1ZSAqLworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmIChyZXMgPT0gMSkgeworICAgICAgICAvKiBgcmVzdWx0YCBpcyBhIGdlbmVyYXRvciAqLworICAgICAgICBQeU9iamVjdCAqcmV0OworICAgICAgICByZXQgPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICAgICAgdGFzaywgUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInlpZWxkIHdhcyB1c2VkIGluc3RlYWQgb2YgeWllbGQgZnJvbSBmb3IgIgorICAgICAgICAgICAgImdlbmVyYXRvciBpbiB0YXNrICVSIHdpdGggJVMiLCB0YXNrLCByZXN1bHQpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAvKiBUaGUgYHJlc3VsdGAgaXMgbm9uZSBvZiB0aGUgYWJvdmUgKi8KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gdGFza19zZXRfZXJyb3Jfc29vbigKKyAgICAgICAgdGFzaywgUHlFeGNfUnVudGltZUVycm9yLCAiVGFzayBnb3QgYmFkIHlpZWxkOiAlUiIsIHJlc3VsdCk7CisKK3NlbGZfYXdhaXQ6CisgICAgbyA9IHRhc2tfc2V0X2Vycm9yX3Nvb24oCisgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgIlRhc2sgY2Fubm90IGF3YWl0IG9uIGl0c2VsZjogJVIiLCB0YXNrKTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworeWllbGRfaW5zdGVhZG9mX3lmOgorICAgIG8gPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICB0YXNrLCBQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJ5aWVsZCB3YXMgdXNlZCBpbnN0ZWFkIG9mIHlpZWxkIGZyb20gIgorICAgICAgICAiaW4gdGFzayAlUiB3aXRoICVSIiwKKyAgICAgICAgdGFzaywgcmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworZGlmZmVyZW50X2xvb3A6CisgICAgbyA9IHRhc2tfc2V0X2Vycm9yX3Nvb24oCisgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgIlRhc2sgJVIgZ290IEZ1dHVyZSAlUiBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBsb29wIiwKKyAgICAgICAgdGFzaywgcmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YXNrX3N0ZXAoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV4YykKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpvdDsKKworICAgIGlmIChQeURpY3RfU2V0SXRlbShjdXJyZW50X3Rhc2tzLAorICAgICAgICAgICAgICAgICAgICAgICB0YXNrLT50YXNrX2xvb3AsIChQeU9iamVjdCopdGFzaykgPT0gLTEpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSB0YXNrX3N0ZXBfaW1wbCh0YXNrLCBleGMpOworCisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpldCwgKmV2LCAqdGI7CisgICAgICAgIFB5RXJyX0ZldGNoKCZldCwgJmV2LCAmdGIpOworICAgICAgICBvdCA9IF9QeURpY3RfUG9wKGN1cnJlbnRfdGFza3MsIHRhc2stPnRhc2tfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGV0KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICAgICAgUHlfWERFQ1JFRihldik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYob3QpOworICAgICAgICBQeUVycl9SZXN0b3JlKGV0LCBldiwgdGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG90ID0gX1B5RGljdF9Qb3AoY3VycmVudF90YXNrcywgdGFzay0+dGFza19sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob3QpOworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfd2FrZXVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpvKQoreworICAgIGFzc2VydChvKTsKKworICAgIGlmIChGdXR1cmVfQ2hlY2tFeGFjdChvKSB8fCBUYXNrX0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlPYmplY3QgKmZ1dF9yZXN1bHQgPSBOVUxMOworICAgICAgICBpbnQgcmVzID0gZnV0dXJlX2dldF9yZXN1bHQoKEZ1dHVyZU9iaiopbywgJmZ1dF9yZXN1bHQpOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN3aXRjaChyZXMpIHsKKyAgICAgICAgY2FzZSAtMToKKyAgICAgICAgICAgIGFzc2VydChmdXRfcmVzdWx0ID09IE5VTEwpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB0YXNrX2NhbGxfc3RlcCh0YXNrLCBOVUxMKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydChyZXMgPT0gMSk7CisgICAgICAgICAgICByZXN1bHQgPSB0YXNrX2NhbGxfc3RlcCh0YXNrLCBmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeU9iamVjdCAqZnV0X3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInJlc3VsdCIsIE5VTEwpOworICAgIGlmIChmdXRfcmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICBQeUVycl9GZXRjaCgmZXQsICZldiwgJnRiKTsKKyAgICAgICAgaWYgKCFldiB8fCAhUHlPYmplY3RfVHlwZUNoZWNrKGV2LCAoUHlUeXBlT2JqZWN0ICopIGV0KSkgeworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZldCwgJmV2LCAmdGIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gdGFza19jYWxsX3N0ZXAodGFzaywgZXYpOworCisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgUHlfWERFQ1JFRihldik7CisKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRhc2tfY2FsbF9zdGVwKHRhc2ssIE5VTEwpOworICAgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogTW9kdWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK3N0YXRpYyB2b2lkCittb2R1bGVfZnJlZSh2b2lkICptKQoreworICAgIFB5X0NMRUFSKGN1cnJlbnRfdGFza3MpOworICAgIFB5X0NMRUFSKGFsbF90YXNrcyk7CisgICAgUHlfQ0xFQVIodHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2spOworICAgIFB5X0NMRUFSKGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3ApOworICAgIFB5X0NMRUFSKGFzeW5jaW9fZnV0dXJlX3JlcHJfaW5mb19mdW5jKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmMpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fdGFza19nZXRfc3RhY2tfZnVuYyk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb190YXNrX3ByaW50X3N0YWNrX2Z1bmMpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IpOworICAgIFB5X0NMRUFSKGluc3BlY3RfaXNnZW5lcmF0b3IpOworfQorCitzdGF0aWMgaW50Cittb2R1bGVfaW5pdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjbHM7CisKKyNkZWZpbmUgV0lUSF9NT0QoTkFNRSkgXAorICAgIFB5X0NMRUFSKG1vZHVsZSk7IFwKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoTkFNRSk7IFwKKyAgICBpZiAobW9kdWxlID09IE5VTEwpIHsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKKyNkZWZpbmUgR0VUX01PRF9BVFRSKFZBUiwgTkFNRSkgXAorICAgIFZBUiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCBOQU1FKTsgXAorICAgIGlmIChWQVIgPT0gTlVMTCkgeyBcCisgICAgICAgIGdvdG8gZmFpbDsgXAorICAgIH0KKworICAgIFdJVEhfTU9EKCJhc3luY2lvLmV2ZW50cyIpCisgICAgR0VUX01PRF9BVFRSKGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsICJnZXRfZXZlbnRfbG9vcCIpCisKKyAgICBXSVRIX01PRCgiYXN5bmNpby5iYXNlX2Z1dHVyZXMiKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYywgIl9mdXR1cmVfcmVwcl9pbmZvIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgIkludmFsaWRTdGF0ZUVycm9yIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIkNhbmNlbGxlZEVycm9yIikKKworICAgIFdJVEhfTU9EKCJhc3luY2lvLmJhc2VfdGFza3MiKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmMsICJfdGFza19yZXByX2luZm8iKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmMsICJfdGFza19nZXRfc3RhY2siKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfcHJpbnRfc3RhY2tfZnVuYywgIl90YXNrX3ByaW50X3N0YWNrIikKKworICAgIFdJVEhfTU9EKCJpbnNwZWN0IikKKyAgICBHRVRfTU9EX0FUVFIoaW5zcGVjdF9pc2dlbmVyYXRvciwgImlzZ2VuZXJhdG9yIikKKworICAgIFdJVEhfTU9EKCJ0cmFjZWJhY2siKQorICAgIEdFVF9NT0RfQVRUUih0cmFjZWJhY2tfZXh0cmFjdF9zdGFjaywgImV4dHJhY3Rfc3RhY2siKQorCisgICAgV0lUSF9NT0QoIndlYWtyZWYiKQorICAgIEdFVF9NT0RfQVRUUihjbHMsICJXZWFrU2V0IikKKyAgICBhbGxfdGFza3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgTlVMTCk7CisgICAgUHlfQ0xFQVIoY2xzKTsKKyAgICBpZiAoYWxsX3Rhc2tzID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGN1cnJlbnRfdGFza3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGN1cnJlbnRfdGFza3MgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgUHlfQ0xFQVIobW9kdWxlKTsKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBQeV9DTEVBUihtb2R1bGUpOworICAgIG1vZHVsZV9mcmVlKE5VTEwpOworICAgIHJldHVybiAtMTsKKworI3VuZGVmIFdJVEhfTU9ECisjdW5kZWYgR0VUX01PRF9BVFRSCit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLCAiQWNjZWxlcmF0b3IgbW9kdWxlIGZvciBhc3luY2lvIik7CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2FzeW5jaW9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgIC8qIG1fYmFzZSAqLworICAgICJfYXN5bmNpbyIsICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBtb2R1bGVfZG9jLCAgICAgICAgICAgICAgICAgLyogbV9kb2MgKi8KKyAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIChmcmVlZnVuYyltb2R1bGVfZnJlZSAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYXN5bmNpbyh2b2lkKQoreworICAgIGlmIChtb2R1bGVfaW5pdCgpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmRnV0dXJlVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZGdXR1cmVJdGVyVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZUYXNrU2VuZE1ldGhXcmFwcGVyX1R5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYoUHlUeXBlX1JlYWR5KCZUYXNrV2FrZXVwTWV0aFdyYXBwZXJfVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZUYXNrVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZfYXN5bmNpb21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoJkZ1dHVyZVR5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkZ1dHVyZSIsIChQeU9iamVjdCAqKSZGdXR1cmVUeXBlKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKCZGdXR1cmVUeXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZUYXNrVHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVGFzayIsIChQeU9iamVjdCAqKSZUYXNrVHlwZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRigmVGFza1R5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggMDJiNTVkMS4uMjJkZGJmMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTEyLDcgKzEyLDggQEAKIGludGVybmFsX2Jpc2VjdF9yaWdodChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpAQCAtMTE1LDcgKzExNiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfbGVmdChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weSBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDFjZjI2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKQEAgLTAsMCArMSw0OSBAQAorIyEvdXNyL2Jpbi9weXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0JMQUtFMiA9IG9zLnBhdGguam9pbihIRVJFLCAnaW1wbCcpCisKK1BVQkxJQ19TRUFSQ0ggPSByZS5jb21waWxlKHInXCBpbnQgKGJsYWtlMltic11wP1thLXpfXSopXCgnKQorCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoQkxBS0UyKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihCTEFLRTIsIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCisKK2RlZiBmaW5kX3B1YmxpYygpOgorICAgIHB1YmxpY19mdW5jcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gZ2V0ZmlsZXMoKToKKyAgICAgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICMgZmluZCBwdWJsaWMgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgbW8gPSBQVUJMSUNfU0VBUkNILnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1vOgorICAgICAgICAgICAgICAgICAgICBwdWJsaWNfZnVuY3MuYWRkKG1vLmdyb3VwKDEpKQorCisgICAgZm9yIGYgaW4gc29ydGVkKHB1YmxpY19mdW5jcyk6CisgICAgICAgIHByaW50KCcjZGVmaW5lIHswOjwxOH0gUHlCbGFrZTJfezB9Jy5mb3JtYXQoZikpCisKKyAgICByZXR1cm4gcHVibGljX2Z1bmNzCisKKworZGVmIG1haW4oKToKKyAgICBsaW5lcyA9IFtdCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihIRVJFLCAnYmxha2UyYl9pbXBsLmMnKSkgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ2JsYWtlMmInLCAnYmxha2UycycpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdCTEFLRTJiJywgJ0JMQUtFMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyQicsICdCTEFLRTJTJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMnNfaW1wbC5jJyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAjIGZpbmRfcHVibGljKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjUwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisvKiBXQVJOSU5HOiBhdXRvZ2VuZXJhdGVkIGZpbGUhCisgKgorICogVGhlIGJsYWtlMnNfaW1wbC5jIGlzIGF1dG9nZW5lcmF0ZWQgZnJvbSBibGFrZTJiX2ltcGwuYy4KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKyNpbmNsdWRlICJibGFrZTJucy5oIgorCisjZGVmaW5lIEhBVkVfQkxBS0UyQiAxCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgUHlfTE9DQUxfSU5MSU5FKHR5cGUpCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorI2luY2x1ZGUgImltcGwvYmxha2UyLWltcGwuaCIgLyogZm9yIHNlY3VyZV96ZXJvX21lbW9yeSgpIGFuZCBzdG9yZTQ4KCkgKi8KKworI2lmZGVmIEJMQUtFMl9VU0VfU1NFCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJiLmMiCisjZWxzZQorI2luY2x1ZGUgImltcGwvYmxha2UyYi1yZWYuYyIKKyNlbmRpZgorCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYmxha2UyYl9wYXJhbSAgICBwYXJhbTsKKyAgICBibGFrZTJiX3N0YXRlICAgIHN0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQkxBS0UyYk9iamVjdDsKKworI2luY2x1ZGUgImNsaW5pYy9ibGFrZTJiX2ltcGwuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2JsYWtlMmIKK2NsYXNzIF9ibGFrZTJiLmJsYWtlMmIgIkJMQUtFMmJPYmplY3QgKiIgIiZQeUJsYWtlMl9CTEFLRTJiVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTY4OTMzNThjNjYyMmFlY2ZdKi8KKworCitzdGF0aWMgQkxBS0UyYk9iamVjdCAqCituZXdfQkxBS0UyYk9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgQkxBS0UyYk9iamVjdCAqc2VsZjsKKyAgICBzZWxmID0gKEJMQUtFMmJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2JsYWtlMmIuYmxha2UyYi5fX25ld19fIGFzIHB5X2JsYWtlMmJfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKyAgICAqCisgICAgZGlnZXN0X3NpemU6IGludChjX2RlZmF1bHQ9IkJMQUtFMkJfT1VUQllURVMiKSA9IF9ibGFrZTJiLmJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisgICAga2V5OiBQeV9idWZmZXIgPSBOb25lCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIHBlcnNvbjogUHlfYnVmZmVyID0gTm9uZQorICAgIGZhbm91dDogaW50ID0gMQorICAgIGRlcHRoOiBpbnQgPSAxCisgICAgbGVhZl9zaXplIGFzIGxlYWZfc2l6ZV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX29mZnNldCBhcyBub2RlX29mZnNldF9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX2RlcHRoOiBpbnQgPSAwCisgICAgaW5uZXJfc2l6ZTogaW50ID0gMAorICAgIGxhc3Rfbm9kZTogYm9vbCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBCTEFLRTJiIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzUwNmQ4ZDg5MGU1ZjEzYiBpbnB1dD1lNDE1NDhkZmEwODY2MDMxXSovCit7CisgICAgQkxBS0UyYk9iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVhZl9zaXplID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbm9kZV9vZmZzZXQgPSAwOworCisgICAgc2VsZiA9IG5ld19CTEFLRTJiT2JqZWN0KHR5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBaZXJvIHBhcmFtZXRlciBibG9jay4gKi8KKyAgICBtZW1zZXQoJnNlbGYtPnBhcmFtLCAwLCBzaXplb2Yoc2VsZi0+cGFyYW0pKTsKKworICAgIC8qIFNldCBkaWdlc3Qgc2l6ZS4gKi8KKyAgICBpZiAoZGlnZXN0X3NpemUgPD0gMCB8fCBkaWdlc3Rfc2l6ZSA+IEJMQUtFMkJfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRpZ2VzdF9zaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGggPSBkaWdlc3Rfc2l6ZTsKKworICAgIC8qIFNldCBzYWx0IHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHNhbHQtPm9iaiAhPSBOVUxMKSAmJiBzYWx0LT5sZW4pIHsKKyAgICAgICAgaWYgKHNhbHQtPmxlbiA+IEJMQUtFMkJfU0FMVEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBzYWx0IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9TQUxUQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0uc2FsdCwgc2FsdC0+YnVmLCBzYWx0LT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCBwZXJzb25hbGl6YXRpb24gcGFyYW1ldGVyLiAqLworICAgIGlmICgocGVyc29uLT5vYmogIT0gTlVMTCkgJiYgcGVyc29uLT5sZW4pIHsKKyAgICAgICAgaWYgKHBlcnNvbi0+bGVuID4gQkxBS0UyQl9QRVJTT05BTEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBwZXJzb24gbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX1BFUlNPTkFMQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0ucGVyc29uYWwsIHBlcnNvbi0+YnVmLCBwZXJzb24tPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHRyZWUgcGFyYW1ldGVycy4gKi8KKyAgICBpZiAoZmFub3V0IDwgMCB8fCBmYW5vdXQgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImZhbm91dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmZhbm91dCA9ICh1aW50OF90KWZhbm91dDsKKworICAgIGlmIChkZXB0aCA8PSAwIHx8IGRlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkZXB0aCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRlcHRoID0gKHVpbnQ4X3QpZGVwdGg7CisKKyAgICBpZiAobGVhZl9zaXplX29iaiAhPSBOVUxMKSB7CisgICAgICAgIGxlYWZfc2l6ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhsZWFmX3NpemVfb2JqKTsKKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVhZl9zaXplID4gMHhGRkZGRkZGRlUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibGVhZl9zaXplIGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmLT5wYXJhbS5sZWFmX2xlbmd0aCA9ICh1bnNpZ25lZCBpbnQpbGVhZl9zaXplOworCisgICAgaWYgKG5vZGVfb2Zmc2V0X29iaiAhPSBOVUxMKSB7CisgICAgICAgIG5vZGVfb2Zmc2V0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhub2RlX29mZnNldF9vYmopOworICAgICAgICBpZiAobm9kZV9vZmZzZXQgPT0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JMQUtFMlMKKyAgICBpZiAobm9kZV9vZmZzZXQgPiAweEZGRkZGRkZGRkZGRlVMTCkgeworICAgICAgICAvKiBtYXhpbXVtIDIqKjQ4IC0gMSAqLworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJub2RlX29mZnNldCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAgICBzdG9yZTQ4KCYoc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQpLCBub2RlX29mZnNldCk7CisjZWxzZQorICAgIHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisjZW5kaWYKKworICAgIGlmIChub2RlX2RlcHRoIDwgMCB8fCBub2RlX2RlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub2RlX2RlcHRoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisKKyAgICBpZiAoaW5uZXJfc2l6ZSA8IDAgfHwgaW5uZXJfc2l6ZSA+IEJMQUtFMkJfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImlubmVyX3NpemUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIGlzICVkIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uaW5uZXJfbGVuZ3RoID0gaW5uZXJfc2l6ZTsKKworICAgIC8qIFNldCBrZXkgbGVuZ3RoLiAqLworICAgIGlmICgoa2V5LT5vYmogIT0gTlVMTCkgJiYga2V5LT5sZW4pIHsKKyAgICAgICAgaWYgKGtleS0+bGVuID4gQkxBS0UyQl9LRVlCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0ga2V5IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHNlbGYtPnBhcmFtLmtleV9sZW5ndGggPSAodWludDhfdClrZXktPmxlbjsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGhhc2ggc3RhdGUuICovCisgICAgaWYgKGJsYWtlMmJfaW5pdF9wYXJhbSgmc2VsZi0+c3RhdGUsICZzZWxmLT5wYXJhbSkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImVycm9yIGluaXRpYWxpemluZyBoYXNoIHN0YXRlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGxhc3Qgbm9kZSBmbGFnIChtdXN0IGNvbWUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24pLiAqLworICAgIHNlbGYtPnN0YXRlLmxhc3Rfbm9kZSA9IGxhc3Rfbm9kZTsKKworICAgIC8qIFByb2Nlc3Mga2V5IGJsb2NrIGlmIGFueS4gKi8KKyAgICBpZiAoc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCkgeworICAgICAgICB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgICAgIG1lbXNldChibG9jaywgMCwgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIG1lbWNweShibG9jaywga2V5LT5idWYsIGtleS0+bGVuKTsKKyAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIHNlY3VyZV96ZXJvX21lbW9yeShibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgfQorCisgICAgLyogUHJvY2VzcyBpbml0aWFsIGRhdGEgaWYgYW55LiAqLworICAgIGlmIChkYXRhICE9IE5VTEwpIHsKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKGRhdGEsICZidWYsIGdvdG8gZXJyb3IpOworCisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODljZDMzNTUwYWIxNTQzIGlucHV0PTRjOWMzMTlmMThmMTA3NDddKi8KK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpjcHk7CisKKyAgICBpZiAoKGNweSA9IG5ld19CTEFLRTJiT2JqZWN0KFB5X1RZUEUoc2VsZikpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgY3B5LT5wYXJhbSA9IHNlbGYtPnBhcmFtOworICAgIGNweS0+c3RhdGUgPSBzZWxmLT5zdGF0ZTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiljcHk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZShCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4ODhmMDdjNGNkZGJlOTQgaW5wdXQ9M2VjYjhjMTNlZTQyNjBmMl0qLworeworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKQorICAgICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworCisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkgeworICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9jaywgMSk7CisgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9jayk7CisgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UgeworICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgIH0KKyNlbHNlCisgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyNlbmRpZiAvKiAhV0lUSF9USFJFQUQgKi8KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMTNhNzkzNjBkOTg0NzQwIGlucHV0PWFjMmZhNDYyZWJiMWI5YzddKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2UyYl9maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNTAzNjExNzE1YjI0YmQgaW5wdXQ9ZDU4ZjBiMmYzNzgxMmUzM10qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmJfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJiX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHB5X2JsYWtlMmJfbWV0aG9kc1tdID0geworICAgIF9CTEFLRTJCX0JMQUtFMkJfQ09QWV9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0RJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9nZXRfbmFtZShCTEFLRTJiT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiYmxha2UyYiIpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X2Jsb2NrX3NpemUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJMQUtFMkJfQkxPQ0tCWVRFUyk7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9nZXRfZGlnZXN0X3NpemUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBweV9ibGFrZTJiX2dldHNldHRlcnNbXSA9IHsKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X25hbWUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2UyYl9nZXRfYmxvY2tfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJkaWdlc3Rfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2UyYl9nZXRfZGlnZXN0X3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitzdGF0aWMgdm9pZAorcHlfYmxha2UyYl9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIEJMQUtFMmJPYmplY3QgKm9iaiA9IChCTEFLRTJiT2JqZWN0ICopc2VsZjsKKworICAgIC8qIFRyeSBub3QgdG8gbGVhdmUgc3RhdGUgaW4gbWVtb3J5LiAqLworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5wYXJhbSwgc2l6ZW9mKG9iai0+cGFyYW0pKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+c3RhdGUsIHNpemVvZihvYmotPnN0YXRlKSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAob2JqLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhvYmotPmxvY2spOworICAgICAgICBvYmotPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCitQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9ibGFrZTIuYmxha2UyYiIsICAgICAgICAvKiB0cF9uYW1lICAgICAgICAgICAgKi8KKyAgICBzaXplb2YoQkxBS0UyYk9iamVjdCksICAgIC8qIHRwX3NpemUgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgICAgICAgICovCisgICAgcHlfYmxha2UyYl9kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICAgICAgICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAvKiB0cF9mbGFncyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX25ld19fZG9jX18sICAgIC8qIHRwX2RvYyAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfbWV0aG9kcywgICAgICAgLyogdHBfbWV0aG9kcyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX2dldHNldHRlcnMsICAgIC8qIHRwX2dldHNldCAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgICAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9uZXcsICAgICAgICAgICAvKiB0cF9uZXcgICAgICAgICAgICAgKi8KK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhM2Q0MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJtb2R1bGUuYwpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIFdyaXR0ZW4gaW4gMjAxMyBieSBEbWl0cnkgQ2hlc3RueWtoIDxkbWl0cnlAY29kaW5ncm9ib3RzLmNvbT4KKyAqIE1vZGlmaWVkIGZvciBDUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorICoKKyAqIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgYXV0aG9yIGhhdmUgZGVkaWNhdGVkIGFsbAorICogY29weXJpZ2h0IGFuZCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhpcyBzb2Z0d2FyZSB0bworICogdGhlIHB1YmxpYyBkb21haW4gd29ybGR3aWRlLiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQKKyAqIGFueSB3YXJyYW50eS4gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2luY2x1ZGUgImltcGwvYmxha2UyLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGU7CitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlOworCisKK1B5RG9jX1NUUlZBUihibGFrZTJtb2RfX2RvY19fLAorIl9ibGFrZTJiIHByb3ZpZGVzIEJMQUtFMmIgZm9yIGhhc2hsaWJcbiIKKyk7CisKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBibGFrZTJtb2RfZnVuY3Rpb25zW10gPSB7CisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGJsYWtlMl9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfYmxha2UyIiwKKyAgICBibGFrZTJtb2RfX2RvY19fLAorICAgIC0xLAorICAgIGJsYWtlMm1vZF9mdW5jdGlvbnMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworI2RlZmluZSBBRERfSU5UKGQsIG5hbWUsIHZhbHVlKSBkbyB7IFwKKyAgICBQeU9iamVjdCAqeCA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7IFwKKyAgICBpZiAoIXgpIHsgXAorICAgICAgICBQeV9ERUNSRUYobSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgbmFtZSwgeCkgPCAwKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKG0pOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlfREVDUkVGKHgpOyBcCit9IHdoaWxlKDApCisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYmxha2UyKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisgICAgUHlPYmplY3QgKmQ7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZibGFrZTJfbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIEJMQUtFMmIgKi8KKyAgICBQeV9UWVBFKCZQeUJsYWtlMl9CTEFLRTJiVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCbGFrZTJfQkxBS0UyYlR5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoJlB5Qmxha2UyX0JMQUtFMmJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImJsYWtlMmIiLCAoUHlPYmplY3QgKikmUHlCbGFrZTJfQkxBS0UyYlR5cGUpOworCisgICAgZCA9IFB5Qmxha2UyX0JMQUtFMmJUeXBlLnRwX2RpY3Q7CisgICAgQUREX0lOVChkLCAiU0FMVF9TSVpFIiwgQkxBS0UyQl9TQUxUQllURVMpOworICAgIEFERF9JTlQoZCwgIlBFUlNPTl9TSVpFIiwgQkxBS0UyQl9QRVJTT05BTEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfS0VZX1NJWkUiLCBCTEFLRTJCX0tFWUJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJCX09VVEJZVEVTKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX1NBTFRfU0laRSIsIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9QRVJTT05fU0laRSIsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfTUFYX0tFWV9TSVpFIiwgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyQl9PVVRCWVRFUyk7CisKKyAgICAvKiBCTEFLRTJzICovCisgICAgUHlfVFlQRSgmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Qmxha2UyX0JMQUtFMnNUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZQeUJsYWtlMl9CTEFLRTJzVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJibGFrZTJzIiwgKFB5T2JqZWN0ICopJlB5Qmxha2UyX0JMQUtFMnNUeXBlKTsKKworICAgIGQgPSBQeUJsYWtlMl9CTEFLRTJzVHlwZS50cF9kaWN0OworICAgIEFERF9JTlQoZCwgIlNBTFRfU0laRSIsIEJMQUtFMlNfU0FMVEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJQRVJTT05fU0laRSIsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0tFWV9TSVpFIiwgQkxBS0UyU19LRVlCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyU19PVVRCWVRFUyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19TQUxUX1NJWkUiLCBCTEFLRTJTX1NBTFRCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfUEVSU09OX1NJWkUiLCBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX01BWF9LRVlfU0laRSIsIEJMQUtFMlNfS0VZQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX01BWF9ESUdFU1RfU0laRSIsIEJMQUtFMlNfT1VUQllURVMpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaCBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYmNlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaApAQCAtMCwwICsxLDMyIEBACisvKiBQcmVmaXggYWxsIHB1YmxpYyBibGFrZTIgc3ltYm9scyB3aXRoIFB5Qmxha2UyXworICovCisKKyNpZm5kZWYgUHlfQkxBS0UyX05TCisjZGVmaW5lIFB5X0JMQUtFMl9OUworCisjZGVmaW5lIGJsYWtlMmIgICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJiCisjZGVmaW5lIGJsYWtlMmJfY29tcHJlc3MgICBQeUJsYWtlMl9ibGFrZTJiX2NvbXByZXNzCisjZGVmaW5lIGJsYWtlMmJfZmluYWwgICAgICBQeUJsYWtlMl9ibGFrZTJiX2ZpbmFsCisjZGVmaW5lIGJsYWtlMmJfaW5pdCAgICAgICBQeUJsYWtlMl9ibGFrZTJiX2luaXQKKyNkZWZpbmUgYmxha2UyYl9pbml0X2tleSAgIFB5Qmxha2UyX2JsYWtlMmJfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2UyYl9pbml0X3BhcmFtIFB5Qmxha2UyX2JsYWtlMmJfaW5pdF9wYXJhbQorI2RlZmluZSBibGFrZTJiX3VwZGF0ZSAgICAgUHlCbGFrZTJfYmxha2UyYl91cGRhdGUKKyNkZWZpbmUgYmxha2UyYnAgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMmJwCisjZGVmaW5lIGJsYWtlMmJwX2ZpbmFsICAgICBQeUJsYWtlMl9ibGFrZTJicF9maW5hbAorI2RlZmluZSBibGFrZTJicF9pbml0ICAgICAgUHlCbGFrZTJfYmxha2UyYnBfaW5pdAorI2RlZmluZSBibGFrZTJicF9pbml0X2tleSAgUHlCbGFrZTJfYmxha2UyYnBfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2UyYnBfdXBkYXRlICAgIFB5Qmxha2UyX2JsYWtlMmJwX3VwZGF0ZQorI2RlZmluZSBibGFrZTJzICAgICAgICAgICAgUHlCbGFrZTJfYmxha2UycworI2RlZmluZSBibGFrZTJzX2NvbXByZXNzICAgUHlCbGFrZTJfYmxha2Uyc19jb21wcmVzcworI2RlZmluZSBibGFrZTJzX2ZpbmFsICAgICAgUHlCbGFrZTJfYmxha2Uyc19maW5hbAorI2RlZmluZSBibGFrZTJzX2luaXQgICAgICAgUHlCbGFrZTJfYmxha2Uyc19pbml0CisjZGVmaW5lIGJsYWtlMnNfaW5pdF9rZXkgICBQeUJsYWtlMl9ibGFrZTJzX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMnNfaW5pdF9wYXJhbSBQeUJsYWtlMl9ibGFrZTJzX2luaXRfcGFyYW0KKyNkZWZpbmUgYmxha2Uyc191cGRhdGUgICAgIFB5Qmxha2UyX2JsYWtlMnNfdXBkYXRlCisjZGVmaW5lIGJsYWtlMnNwICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJzcAorI2RlZmluZSBibGFrZTJzcF9maW5hbCAgICAgUHlCbGFrZTJfYmxha2Uyc3BfZmluYWwKKyNkZWZpbmUgYmxha2Uyc3BfaW5pdCAgICAgIFB5Qmxha2UyX2JsYWtlMnNwX2luaXQKKyNkZWZpbmUgYmxha2Uyc3BfaW5pdF9rZXkgIFB5Qmxha2UyX2JsYWtlMnNwX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMnNwX3VwZGF0ZSAgICBQeUJsYWtlMl9ibGFrZTJzcF91cGRhdGUKKworI2VuZGlmIC8qIFB5X0JMQUtFMl9OUyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZDJlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisvKiBXQVJOSU5HOiBhdXRvZ2VuZXJhdGVkIGZpbGUhCisgKgorICogVGhlIGJsYWtlMnNfaW1wbC5jIGlzIGF1dG9nZW5lcmF0ZWQgZnJvbSBibGFrZTJzX2ltcGwuYy4KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKyNpbmNsdWRlICJibGFrZTJucy5oIgorCisjZGVmaW5lIEhBVkVfQkxBS0UyUyAxCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgUHlfTE9DQUxfSU5MSU5FKHR5cGUpCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorI2luY2x1ZGUgImltcGwvYmxha2UyLWltcGwuaCIgLyogZm9yIHNlY3VyZV96ZXJvX21lbW9yeSgpIGFuZCBzdG9yZTQ4KCkgKi8KKworI2lmZGVmIEJMQUtFMl9VU0VfU1NFCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJzLmMiCisjZWxzZQorI2luY2x1ZGUgImltcGwvYmxha2Uycy1yZWYuYyIKKyNlbmRpZgorCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0Uyc1R5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYmxha2Uyc19wYXJhbSAgICBwYXJhbTsKKyAgICBibGFrZTJzX3N0YXRlICAgIHN0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQkxBS0Uyc09iamVjdDsKKworI2luY2x1ZGUgImNsaW5pYy9ibGFrZTJzX2ltcGwuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2JsYWtlMnMKK2NsYXNzIF9ibGFrZTJzLmJsYWtlMnMgIkJMQUtFMnNPYmplY3QgKiIgIiZQeUJsYWtlMl9CTEFLRTJzVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWVkYmZjZjc1NTdhNjg1YTddKi8KKworCitzdGF0aWMgQkxBS0Uyc09iamVjdCAqCituZXdfQkxBS0Uyc09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgQkxBS0Uyc09iamVjdCAqc2VsZjsKKyAgICBzZWxmID0gKEJMQUtFMnNPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2JsYWtlMnMuYmxha2Uycy5fX25ld19fIGFzIHB5X2JsYWtlMnNfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKyAgICAqCisgICAgZGlnZXN0X3NpemU6IGludChjX2RlZmF1bHQ9IkJMQUtFMlNfT1VUQllURVMiKSA9IF9ibGFrZTJzLmJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFCisgICAga2V5OiBQeV9idWZmZXIgPSBOb25lCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIHBlcnNvbjogUHlfYnVmZmVyID0gTm9uZQorICAgIGZhbm91dDogaW50ID0gMQorICAgIGRlcHRoOiBpbnQgPSAxCisgICAgbGVhZl9zaXplIGFzIGxlYWZfc2l6ZV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX29mZnNldCBhcyBub2RlX29mZnNldF9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX2RlcHRoOiBpbnQgPSAwCisgICAgaW5uZXJfc2l6ZTogaW50ID0gMAorICAgIGxhc3Rfbm9kZTogYm9vbCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBCTEFLRTJzIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmUwNjBiMjU4YThjYmZjNiBpbnB1dD00NThjZmRjYjNkMGQ0N2ZmXSovCit7CisgICAgQkxBS0Uyc09iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVhZl9zaXplID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbm9kZV9vZmZzZXQgPSAwOworCisgICAgc2VsZiA9IG5ld19CTEFLRTJzT2JqZWN0KHR5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBaZXJvIHBhcmFtZXRlciBibG9jay4gKi8KKyAgICBtZW1zZXQoJnNlbGYtPnBhcmFtLCAwLCBzaXplb2Yoc2VsZi0+cGFyYW0pKTsKKworICAgIC8qIFNldCBkaWdlc3Qgc2l6ZS4gKi8KKyAgICBpZiAoZGlnZXN0X3NpemUgPD0gMCB8fCBkaWdlc3Rfc2l6ZSA+IEJMQUtFMlNfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRpZ2VzdF9zaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGggPSBkaWdlc3Rfc2l6ZTsKKworICAgIC8qIFNldCBzYWx0IHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHNhbHQtPm9iaiAhPSBOVUxMKSAmJiBzYWx0LT5sZW4pIHsKKyAgICAgICAgaWYgKHNhbHQtPmxlbiA+IEJMQUtFMlNfU0FMVEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBzYWx0IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19TQUxUQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0uc2FsdCwgc2FsdC0+YnVmLCBzYWx0LT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCBwZXJzb25hbGl6YXRpb24gcGFyYW1ldGVyLiAqLworICAgIGlmICgocGVyc29uLT5vYmogIT0gTlVMTCkgJiYgcGVyc29uLT5sZW4pIHsKKyAgICAgICAgaWYgKHBlcnNvbi0+bGVuID4gQkxBS0UyU19QRVJTT05BTEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBwZXJzb24gbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0ucGVyc29uYWwsIHBlcnNvbi0+YnVmLCBwZXJzb24tPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHRyZWUgcGFyYW1ldGVycy4gKi8KKyAgICBpZiAoZmFub3V0IDwgMCB8fCBmYW5vdXQgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImZhbm91dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmZhbm91dCA9ICh1aW50OF90KWZhbm91dDsKKworICAgIGlmIChkZXB0aCA8PSAwIHx8IGRlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkZXB0aCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRlcHRoID0gKHVpbnQ4X3QpZGVwdGg7CisKKyAgICBpZiAobGVhZl9zaXplX29iaiAhPSBOVUxMKSB7CisgICAgICAgIGxlYWZfc2l6ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhsZWFmX3NpemVfb2JqKTsKKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVhZl9zaXplID4gMHhGRkZGRkZGRlUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibGVhZl9zaXplIGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmLT5wYXJhbS5sZWFmX2xlbmd0aCA9ICh1bnNpZ25lZCBpbnQpbGVhZl9zaXplOworCisgICAgaWYgKG5vZGVfb2Zmc2V0X29iaiAhPSBOVUxMKSB7CisgICAgICAgIG5vZGVfb2Zmc2V0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhub2RlX29mZnNldF9vYmopOworICAgICAgICBpZiAobm9kZV9vZmZzZXQgPT0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JMQUtFMlMKKyAgICBpZiAobm9kZV9vZmZzZXQgPiAweEZGRkZGRkZGRkZGRlVMTCkgeworICAgICAgICAvKiBtYXhpbXVtIDIqKjQ4IC0gMSAqLworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJub2RlX29mZnNldCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAgICBzdG9yZTQ4KCYoc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQpLCBub2RlX29mZnNldCk7CisjZWxzZQorICAgIHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisjZW5kaWYKKworICAgIGlmIChub2RlX2RlcHRoIDwgMCB8fCBub2RlX2RlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub2RlX2RlcHRoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisKKyAgICBpZiAoaW5uZXJfc2l6ZSA8IDAgfHwgaW5uZXJfc2l6ZSA+IEJMQUtFMlNfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImlubmVyX3NpemUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIGlzICVkIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uaW5uZXJfbGVuZ3RoID0gaW5uZXJfc2l6ZTsKKworICAgIC8qIFNldCBrZXkgbGVuZ3RoLiAqLworICAgIGlmICgoa2V5LT5vYmogIT0gTlVMTCkgJiYga2V5LT5sZW4pIHsKKyAgICAgICAgaWYgKGtleS0+bGVuID4gQkxBS0UyU19LRVlCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0ga2V5IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19LRVlCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHNlbGYtPnBhcmFtLmtleV9sZW5ndGggPSAodWludDhfdClrZXktPmxlbjsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGhhc2ggc3RhdGUuICovCisgICAgaWYgKGJsYWtlMnNfaW5pdF9wYXJhbSgmc2VsZi0+c3RhdGUsICZzZWxmLT5wYXJhbSkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImVycm9yIGluaXRpYWxpemluZyBoYXNoIHN0YXRlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGxhc3Qgbm9kZSBmbGFnIChtdXN0IGNvbWUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24pLiAqLworICAgIHNlbGYtPnN0YXRlLmxhc3Rfbm9kZSA9IGxhc3Rfbm9kZTsKKworICAgIC8qIFByb2Nlc3Mga2V5IGJsb2NrIGlmIGFueS4gKi8KKyAgICBpZiAoc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCkgeworICAgICAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgICAgIG1lbXNldChibG9jaywgMCwgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIG1lbWNweShibG9jaywga2V5LT5idWYsIGtleS0+bGVuKTsKKyAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIHNlY3VyZV96ZXJvX21lbW9yeShibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgfQorCisgICAgLyogUHJvY2VzcyBpbml0aWFsIGRhdGEgaWYgYW55LiAqLworICAgIGlmIChkYXRhICE9IE5VTEwpIHsKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKGRhdGEsICZidWYsIGdvdG8gZXJyb3IpOworCisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzViYWRhNDA0YjdhZWQ3IGlucHV0PWM4ODU4ZTg4N2FlNGEwN2FdKi8KK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpjcHk7CisKKyAgICBpZiAoKGNweSA9IG5ld19CTEFLRTJzT2JqZWN0KFB5X1RZUEUoc2VsZikpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgY3B5LT5wYXJhbSA9IHNlbGYtPnBhcmFtOworICAgIGNweS0+c3RhdGUgPSBzZWxmLT5zdGF0ZTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiljcHk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZShCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlODQzOGExZDNjZWRlODcgaW5wdXQ9NDdhNDA4YjlhM2NjMDVjNV0qLworeworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKQorICAgICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworCisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkgeworICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9jaywgMSk7CisgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9jayk7CisgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UgeworICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgIH0KKyNlbHNlCisgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyNlbmRpZiAvKiAhV0lUSF9USFJFQUQgKi8KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MGU4MWE0OGM2Zjc5Y2Y5IGlucHV0PWZlYjlhMjIwMTM1YmRlYmFdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2Uyc19maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRiNmM1MDI4YzBhM2MyZTUgaW5wdXQ9NGU0ODc3YjhiZDdhZWE5MV0qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnNfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJzX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHB5X2JsYWtlMnNfbWV0aG9kc1tdID0geworICAgIF9CTEFLRTJTX0JMQUtFMlNfQ09QWV9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX0RJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19nZXRfbmFtZShCTEFLRTJzT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiYmxha2UycyIpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X2Jsb2NrX3NpemUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJMQUtFMlNfQkxPQ0tCWVRFUyk7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19nZXRfZGlnZXN0X3NpemUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBweV9ibGFrZTJzX2dldHNldHRlcnNbXSA9IHsKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X25hbWUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2Uyc19nZXRfYmxvY2tfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJkaWdlc3Rfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2Uyc19nZXRfZGlnZXN0X3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitzdGF0aWMgdm9pZAorcHlfYmxha2Uyc19kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIEJMQUtFMnNPYmplY3QgKm9iaiA9IChCTEFLRTJzT2JqZWN0ICopc2VsZjsKKworICAgIC8qIFRyeSBub3QgdG8gbGVhdmUgc3RhdGUgaW4gbWVtb3J5LiAqLworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5wYXJhbSwgc2l6ZW9mKG9iai0+cGFyYW0pKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+c3RhdGUsIHNpemVvZihvYmotPnN0YXRlKSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAob2JqLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhvYmotPmxvY2spOworICAgICAgICBvYmotPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCitQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0Uyc1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9ibGFrZTIuYmxha2UycyIsICAgICAgICAvKiB0cF9uYW1lICAgICAgICAgICAgKi8KKyAgICBzaXplb2YoQkxBS0Uyc09iamVjdCksICAgIC8qIHRwX3NpemUgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgICAgICAgICovCisgICAgcHlfYmxha2Uyc19kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICAgICAgICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAvKiB0cF9mbGFncyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX25ld19fZG9jX18sICAgIC8qIHRwX2RvYyAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfbWV0aG9kcywgICAgICAgLyogdHBfbWV0aG9kcyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX2dldHNldHRlcnMsICAgIC8qIHRwX2dldHNldCAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgICAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19uZXcsICAgICAgICAgICAvKiB0cF9uZXcgICAgICAgICAgICAgKi8KK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmggYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFjMDczYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2UyYl9pbXBsLmMuaApAQCAtMCwwICsxLDEyNSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X2JsYWtlMmJfbmV3X19kb2NfXywKKyJibGFrZTJiKHN0cmluZz1Ob25lLCAqLCBkaWdlc3Rfc2l6ZT1fYmxha2UyYi5ibGFrZTJiLk1BWF9ESUdFU1RfU0laRSxcbiIKKyIgICAgICAgIGtleT1Ob25lLCBzYWx0PU5vbmUsIHBlcnNvbj1Ob25lLCBmYW5vdXQ9MSwgZGVwdGg9MSxcbiIKKyIgICAgICAgIGxlYWZfc2l6ZT1Ob25lLCBub2RlX29mZnNldD1Ob25lLCBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCxcbiIKKyIgICAgICAgIGxhc3Rfbm9kZT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBCTEFLRTJiIGhhc2ggb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAiZGlnZXN0X3NpemUiLCAia2V5IiwgInNhbHQiLCAicGVyc29uIiwgImZhbm91dCIsICJkZXB0aCIsICJsZWFmX3NpemUiLCAibm9kZV9vZmZzZXQiLCAibm9kZV9kZXB0aCIsICJpbm5lcl9zaXplIiwgImxhc3Rfbm9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJGl5KnkqeSppaU9PaWlwOmJsYWtlMmIiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKyAgICBpbnQgZGlnZXN0X3NpemUgPSBCTEFLRTJCX09VVEJZVEVTOworICAgIFB5X2J1ZmZlciBrZXkgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHBlcnNvbiA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmFub3V0ID0gMTsKKyAgICBpbnQgZGVwdGggPSAxOworICAgIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqID0gTlVMTDsKKyAgICBpbnQgbm9kZV9kZXB0aCA9IDA7CisgICAgaW50IGlubmVyX3NpemUgPSAwOworICAgIGludCBsYXN0X25vZGUgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgJmZhbm91dCwgJmRlcHRoLCAmbGVhZl9zaXplX29iaiwgJm5vZGVfb2Zmc2V0X29iaiwgJm5vZGVfZGVwdGgsICZpbm5lcl9zaXplLCAmbGFzdF9ub2RlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X2JsYWtlMmJfbmV3X2ltcGwodHlwZSwgZGF0YSwgZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCBmYW5vdXQsIGRlcHRoLCBsZWFmX3NpemVfb2JqLCBub2RlX29mZnNldF9vYmosIG5vZGVfZGVwdGgsIGlubmVyX3NpemUsIGxhc3Rfbm9kZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Iga2V5ICovCisgICAgaWYgKGtleS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZrZXkpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHBlcnNvbiAqLworICAgIGlmIChwZXJzb24ub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGVyc29uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfY29weSwgTUVUSF9OT0FSR1MsIF9ibGFrZTJiX2JsYWtlMmJfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2NvcHkoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZSwgTUVUSF9PLCBfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl9kaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1YTU0ODUyYzk4ZTUxYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmggYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5MDhkMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2Uyc19pbXBsLmMuaApAQCAtMCwwICsxLDEyNSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X2JsYWtlMnNfbmV3X19kb2NfXywKKyJibGFrZTJzKHN0cmluZz1Ob25lLCAqLCBkaWdlc3Rfc2l6ZT1fYmxha2Uycy5ibGFrZTJzLk1BWF9ESUdFU1RfU0laRSxcbiIKKyIgICAgICAgIGtleT1Ob25lLCBzYWx0PU5vbmUsIHBlcnNvbj1Ob25lLCBmYW5vdXQ9MSwgZGVwdGg9MSxcbiIKKyIgICAgICAgIGxlYWZfc2l6ZT1Ob25lLCBub2RlX29mZnNldD1Ob25lLCBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCxcbiIKKyIgICAgICAgIGxhc3Rfbm9kZT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBCTEFLRTJzIGhhc2ggb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAiZGlnZXN0X3NpemUiLCAia2V5IiwgInNhbHQiLCAicGVyc29uIiwgImZhbm91dCIsICJkZXB0aCIsICJsZWFmX3NpemUiLCAibm9kZV9vZmZzZXQiLCAibm9kZV9kZXB0aCIsICJpbm5lcl9zaXplIiwgImxhc3Rfbm9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJGl5KnkqeSppaU9PaWlwOmJsYWtlMnMiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKyAgICBpbnQgZGlnZXN0X3NpemUgPSBCTEFLRTJTX09VVEJZVEVTOworICAgIFB5X2J1ZmZlciBrZXkgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHBlcnNvbiA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmFub3V0ID0gMTsKKyAgICBpbnQgZGVwdGggPSAxOworICAgIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqID0gTlVMTDsKKyAgICBpbnQgbm9kZV9kZXB0aCA9IDA7CisgICAgaW50IGlubmVyX3NpemUgPSAwOworICAgIGludCBsYXN0X25vZGUgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgJmZhbm91dCwgJmRlcHRoLCAmbGVhZl9zaXplX29iaiwgJm5vZGVfb2Zmc2V0X29iaiwgJm5vZGVfZGVwdGgsICZpbm5lcl9zaXplLCAmbGFzdF9ub2RlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X2JsYWtlMnNfbmV3X2ltcGwodHlwZSwgZGF0YSwgZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCBmYW5vdXQsIGRlcHRoLCBsZWFmX3NpemVfb2JqLCBub2RlX29mZnNldF9vYmosIG5vZGVfZGVwdGgsIGlubmVyX3NpemUsIGxhc3Rfbm9kZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Iga2V5ICovCisgICAgaWYgKGtleS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZrZXkpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHBlcnNvbiAqLworICAgIGlmIChwZXJzb24ub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGVyc29uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfY29weSwgTUVUSF9OT0FSR1MsIF9ibGFrZTJzX2JsYWtlMnNfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2NvcHkoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZSwgTUVUSF9PLCBfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc19kaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1ZWE3OTAzZjljY2Y3NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0NTViMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1jb25maWcuaApAQCAtMCwwICsxLDc0IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJfQ09ORklHX0hfXworI2RlZmluZSBfX0JMQUtFMl9DT05GSUdfSF9fCisKKy8qIFRoZXNlIGRvbid0IHdvcmsgZXZlcnl3aGVyZSAqLworI2lmIGRlZmluZWQoX19TU0UyX18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FtZDY0X18pCisjZGVmaW5lIEhBVkVfU1NFMgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fU1NTRTNfXykKKyNkZWZpbmUgSEFWRV9TU1NFMworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fU1NFNF8xX18pCisjZGVmaW5lIEhBVkVfU1NFNDEKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FWWF9fKQorI2RlZmluZSBIQVZFX0FWWAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fWE9QX18pCisjZGVmaW5lIEhBVkVfWE9QCisjZW5kaWYKKworCisjaWZkZWYgSEFWRV9BVlgyCisjaWZuZGVmIEhBVkVfQVZYCisjZGVmaW5lIEhBVkVfQVZYCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9YT1AKKyNpZm5kZWYgSEFWRV9BVlgKKyNkZWZpbmUgSEFWRV9BVlgKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0FWWAorI2lmbmRlZiBIQVZFX1NTRTQxCisjZGVmaW5lIEhBVkVfU1NFNDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NTRTQxCisjaWZuZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgSEFWRV9TU1NFMworI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgSEFWRV9TU0UyCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEhBVkVfU1NFMikKKyNlcnJvciAiVGhpcyBjb2RlIHJlcXVpcmVzIGF0IGxlYXN0IFNTRTIuIgorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItaW1wbC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmUzYzBmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0lNUExfSF9fCisjZGVmaW5lIF9fQkxBS0UyX0lNUExfSF9fCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50MzJfdCkgbG9hZDMyKCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQzMl90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHVpbnQzMl90IHcgPSAqcCsrOworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8ICA4OworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8IDE2OworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8IDI0OworICByZXR1cm4gdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSBsb2FkNjQoIGNvbnN0IHZvaWQgKnNyYyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgdWludDY0X3QgdzsKKyAgbWVtY3B5KCZ3LCBzcmMsIHNpemVvZiB3KTsKKyAgcmV0dXJuIHc7CisjZWxzZQorICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgdWludDY0X3QgdyA9ICpwKys7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgIDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMTY7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMjQ7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMzI7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDA7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNTY7CisgIHJldHVybiB3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmUzMiggdm9pZCAqZHN0LCB1aW50MzJfdCB3ICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICBtZW1jcHkoZHN0LCAmdywgc2l6ZW9mIHcpOworI2Vsc2UKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh2b2lkKSBzdG9yZTY0KCB2b2lkICpkc3QsIHVpbnQ2NF90IHcgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIG1lbWNweShkc3QsICZ3LCBzaXplb2Ygdyk7CisjZWxzZQorICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSBsb2FkNDgoIGNvbnN0IHZvaWQgKnNyYyApCit7CisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApc3JjOworICB1aW50NjRfdCB3ID0gKnArKzsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAgODsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAxNjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAyNDsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAzMjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCA0MDsKKyAgcmV0dXJuIHc7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmU0OCggdm9pZCAqZHN0LCB1aW50NjRfdCB3ICkKK3sKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDMyX3QpIHJvdGwzMiggY29uc3QgdWludDMyX3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPDwgYyApIHwgKCB3ID4+ICggMzIgLSBjICkgKTsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgcm90bDY0KCBjb25zdCB1aW50NjRfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA8PCBjICkgfCAoIHcgPj4gKCA2NCAtIGMgKSApOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQzMl90KSByb3RyMzIoIGNvbnN0IHVpbnQzMl90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3ID4+IGMgKSB8ICggdyA8PCAoIDMyIC0gYyApICk7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIHJvdHI2NCggY29uc3QgdWludDY0X3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPj4gYyApIHwgKCB3IDw8ICggNjQgLSBjICkgKTsKK30KKworLyogcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemluZyBvdXQgbWVtc2V0KCkgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc2VjdXJlX3plcm9fbWVtb3J5KHZvaWQgKnYsIHNpemVfdCBuKQoreworICBzdGF0aWMgdm9pZCAqKCpjb25zdCB2b2xhdGlsZSBtZW1zZXRfdikodm9pZCAqLCBpbnQsIHNpemVfdCkgPSAmbWVtc2V0OworICBtZW1zZXRfdih2LCAwLCBuKTsKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5ZmRmNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJfSF9fCisjZGVmaW5lIF9fQkxBS0UyX0hfXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZmRlZiBCTEFLRTJfTk9fSU5MSU5FCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIHR5cGUKKyNlbmRpZgorCisjaWZuZGVmIEJMQUtFMl9MT0NBTF9JTkxJTkUKKyNkZWZpbmUgQkxBS0UyX0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgaW5saW5lIHR5cGUKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyAgZW51bSBibGFrZTJzX2NvbnN0YW50CisgIHsKKyAgICBCTEFLRTJTX0JMT0NLQllURVMgPSA2NCwKKyAgICBCTEFLRTJTX09VVEJZVEVTICAgPSAzMiwKKyAgICBCTEFLRTJTX0tFWUJZVEVTICAgPSAzMiwKKyAgICBCTEFLRTJTX1NBTFRCWVRFUyAgPSA4LAorICAgIEJMQUtFMlNfUEVSU09OQUxCWVRFUyA9IDgKKyAgfTsKKworICBlbnVtIGJsYWtlMmJfY29uc3RhbnQKKyAgeworICAgIEJMQUtFMkJfQkxPQ0tCWVRFUyA9IDEyOCwKKyAgICBCTEFLRTJCX09VVEJZVEVTICAgPSA2NCwKKyAgICBCTEFLRTJCX0tFWUJZVEVTICAgPSA2NCwKKyAgICBCTEFLRTJCX1NBTFRCWVRFUyAgPSAxNiwKKyAgICBCTEFLRTJCX1BFUlNPTkFMQllURVMgPSAxNgorICB9OworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2Uyc19zdGF0ZQorICB7CisgICAgdWludDMyX3QgaFs4XTsKKyAgICB1aW50MzJfdCB0WzJdOworICAgIHVpbnQzMl90IGZbMl07CisgICAgdWludDhfdCAgYnVmWzIgKiBCTEFLRTJTX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgIGJ1ZmxlbjsKKyAgICB1aW50OF90ICBsYXN0X25vZGU7CisgIH0gYmxha2Uyc19zdGF0ZTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJfc3RhdGUKKyAgeworICAgIHVpbnQ2NF90IGhbOF07CisgICAgdWludDY0X3QgdFsyXTsKKyAgICB1aW50NjRfdCBmWzJdOworICAgIHVpbnQ4X3QgIGJ1ZlsyICogQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICBidWZsZW47CisgICAgdWludDhfdCAgbGFzdF9ub2RlOworICB9IGJsYWtlMmJfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJzcF9zdGF0ZQorICB7CisgICAgYmxha2Uyc19zdGF0ZSBTWzhdWzFdOworICAgIGJsYWtlMnNfc3RhdGUgUlsxXTsKKyAgICB1aW50OF90IGJ1Zls4ICogQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgIGJ1ZmxlbjsKKyAgfSBibGFrZTJzcF9zdGF0ZTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJwX3N0YXRlCisgIHsKKyAgICBibGFrZTJiX3N0YXRlIFNbNF1bMV07CisgICAgYmxha2UyYl9zdGF0ZSBSWzFdOworICAgIHVpbnQ4X3QgYnVmWzQgKiBCTEFLRTJCX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgYnVmbGVuOworICB9IGJsYWtlMmJwX3N0YXRlOworCisKKyNwcmFnbWEgcGFjayhwdXNoLCAxKQorICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMnNfcGFyYW0KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDhfdCAgbm9kZV9vZmZzZXRbNl07Ly8gMTQKKyAgICB1aW50OF90ICBub2RlX2RlcHRoOyAgICAvKiAxNSAqLworICAgIHVpbnQ4X3QgIGlubmVyX2xlbmd0aDsgIC8qIDE2ICovCisgICAgLyogdWludDhfdCAgcmVzZXJ2ZWRbMF07ICovCisgICAgdWludDhfdCAgc2FsdFtCTEFLRTJTX1NBTFRCWVRFU107IC8qIDI0ICovCisgICAgdWludDhfdCAgcGVyc29uYWxbQkxBS0UyU19QRVJTT05BTEJZVEVTXTsgIC8qIDMyICovCisgIH0gYmxha2Uyc19wYXJhbTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJfcGFyYW0KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDY0X3Qgbm9kZV9vZmZzZXQ7ICAgLyogMTYgKi8KKyAgICB1aW50OF90ICBub2RlX2RlcHRoOyAgICAvKiAxNyAqLworICAgIHVpbnQ4X3QgIGlubmVyX2xlbmd0aDsgIC8qIDE4ICovCisgICAgdWludDhfdCAgcmVzZXJ2ZWRbMTRdOyAgLyogMzIgKi8KKyAgICB1aW50OF90ICBzYWx0W0JMQUtFMkJfU0FMVEJZVEVTXTsgLyogNDggKi8KKyAgICB1aW50OF90ICBwZXJzb25hbFtCTEFLRTJCX1BFUlNPTkFMQllURVNdOyAgLyogNjQgKi8KKyAgfSBibGFrZTJiX3BhcmFtOworI3ByYWdtYSBwYWNrKHBvcCkKKworICAvKiBTdHJlYW1pbmcgQVBJICovCisgIGludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2Uyc19pbml0X3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICk7CisgIGludCBibGFrZTJzX3VwZGF0ZSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKTsKKyAgaW50IGJsYWtlMmJfdXBkYXRlKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMmJfZmluYWwoIGJsYWtlMmJfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2Uyc3BfaW5pdCggYmxha2Uyc3Bfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzcF9pbml0X2tleSggYmxha2Uyc3Bfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJzcF91cGRhdGUoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnNwX2ZpbmFsKCBibGFrZTJzcF9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIGludCBibGFrZTJicF9pbml0KCBibGFrZTJicF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJwX2luaXRfa2V5KCBibGFrZTJicF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJwX3VwZGF0ZSggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2UyYnBfZmluYWwoIGJsYWtlMmJwX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgLyogU2ltcGxlIEFQSSAqLworICBpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJiKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKworICBpbnQgYmxha2Uyc3AoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYnAoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworCisgIHN0YXRpYyBpbmxpbmUgaW50IGJsYWtlMiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKKyAgeworICAgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBrZXksIG91dGxlbiwgaW5sZW4sIGtleWxlbiApOworICB9CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDA0YTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX0xPQURfU1NFMl9IX18KKyNkZWZpbmUgX19CTEFLRTJCX0xPQURfU1NFMl9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG00KQorI2RlZmluZSBMT0FEX01TR18wXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTcsIG01KQorI2RlZmluZSBMT0FEX01TR18wXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18wXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTEzKQorI2RlZmluZSBMT0FEX01TR18xXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTkpCisjZGVmaW5lIExPQURfTVNHXzFfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTgsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzFfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG03KQorI2RlZmluZSBMT0FEX01TR18yXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMiwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG01KQorI2RlZmluZSBMT0FEX01TR18yXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtOCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTcpCisjZGVmaW5lIExPQURfTVNHXzJfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTYsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTQsIG0xKQorI2RlZmluZSBMT0FEX01TR18zXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNyk7IGIxID0gX21tX3NldF9lcGk2NHgobTExLCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzNfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTQpCisjZGVmaW5lIExPQURfTVNHXzNfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEwLCBtNik7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0wKQorI2RlZmluZSBMT0FEX01TR180XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG01LCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTQpCisjZGVmaW5lIExPQURfTVNHXzRfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTExLCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTIsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG04KQorI2RlZmluZSBMT0FEX01TR181XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0wKQorI2RlZmluZSBMT0FEX01TR181XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTExKQorI2RlZmluZSBMT0FEX01TR181XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTEzKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTE0KQorI2RlZmluZSBMT0FEX01TR182XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpCisjZGVmaW5lIExPQURfTVNHXzZfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzZfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTYsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTkpCisjZGVmaW5lIExPQURfTVNHXzZfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG03KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG0yKQorI2RlZmluZSBMT0FEX01TR183XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtMTMpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzdfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG01KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTgpCisjZGVmaW5lIExPQURfTVNHXzdfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG02KQorI2RlZmluZSBMT0FEX01TR184XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTYpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzhfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTksIG0xNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0zKQorI2RlZmluZSBMT0FEX01TR184XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0xKQorI2RlZmluZSBMT0FEX01TR184XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG00KQorI2RlZmluZSBMT0FEX01TR185XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtNykKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTE1KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG0zKQorI2RlZmluZSBMT0FEX01TR185XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18xMF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNywgbTUpCisjZGVmaW5lIExPQURfTVNHXzEwXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18xMF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtOSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTgsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTAsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTExKQorI2RlZmluZSBMT0FEX01TR18xMV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTQxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJhMTM0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oCkBAIC0wLDAgKzEsNDA0IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX0xPQURfU1NFNDFfSF9fCisjZGVmaW5lIF9fQkxBS0UyQl9MT0FEX1NTRTQxX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18wXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzBfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0zLCBtNywgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fc2h1ZmZsZV9lcGkzMihtMCwgX01NX1NIVUZGTEUoMSwwLDMsMikpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNSwgbTIpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTYsIG01LCA4KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTYsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG01LCBtMSwgMHhGMCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0zKTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTIsIG0wLCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTUpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtMCk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0yLCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTIsIG03LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM180KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMywgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtMik7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtNSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTAsIG0zLCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTIsIG03LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNywgbTUsIDB4RjApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMywgbTEsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG02LCBtMCwgOCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG00LCBtNiwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsIG0zKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNSwgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtMywgMHhGMCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG03LCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG0yKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTcsIG00LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNiwgbTAsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG01LCBtNiwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0zKTsgXAorYjEgPSBfbW1fc2h1ZmZsZV9lcGkzMihtNCwgX01NX1NIVUZGTEUoMSwwLDMsMikpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtNSwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG0zKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTYsIG0xLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNywgbTUsIDgpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG01KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMywgbTcpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMCwgbTUsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG03LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG00LCBtMSwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBtNjsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTUsIG0wLCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTMsIDB4RjApOyBcCitiMSA9IG0yOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsIG0yKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTMsIG0yLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTQpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMSwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG03LCBtNSwgOCk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMik7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0zLCBtNywgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3NodWZmbGVfZXBpMzIobTAsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTFfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJlZi5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjM3NWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYwpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBibGFrZTJiX0lWWzhdID0KK3sKKyAgMHg2YTA5ZTY2N2YzYmNjOTA4VUxMLCAweGJiNjdhZTg1ODRjYWE3M2JVTEwsCisgIDB4M2M2ZWYzNzJmZTk0ZjgyYlVMTCwgMHhhNTRmZjUzYTVmMWQzNmYxVUxMLAorICAweDUxMGU1MjdmYWRlNjgyZDFVTEwsIDB4OWIwNTY4OGMyYjNlNmMxZlVMTCwKKyAgMHgxZjgzZDlhYmZiNDFiZDZiVUxMLCAweDViZTBjZDE5MTM3ZTIxNzlVTEwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMmJfc2lnbWFbMTJdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfQorfTsKKworCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMmJfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50NjRfdCBpbmMgKQoreworICBTLT50WzBdICs9IGluYzsKKyAgUy0+dFsxXSArPSAoIFMtPnRbMF0gPCBpbmMgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCBsZWFmX2xlbmd0aCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNjQoICZQLT5ub2RlX29mZnNldCwgbm9kZV9vZmZzZXQgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJCX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMkJfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyQl9QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJCX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luaXQwKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJiX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMmJfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMmJfaW5pdF9wYXJhbSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgYmxha2UyYl9wYXJhbSAqUCApCit7CisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBQICk7CisgIHNpemVfdCBpOworCisgIGJsYWtlMmJfaW5pdDAoIFMgKTsKKworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldIF49IGxvYWQ2NCggcCArIHNpemVvZiggUy0+aFtpXSApICogaSApOworCisgIHJldHVybiAwOworfQorCisKKworaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBibGFrZTJiX3BhcmFtIFBbMV07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0gMDsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU2NCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgbWVtc2V0KCBQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKCBQLT5yZXNlcnZlZCApICk7CisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworICByZXR1cm4gYmxha2UyYl9pbml0X3BhcmFtKCBTLCBQICk7Cit9CisKKworaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2UyYl9wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAha2V5IHx8ICFrZXlsZW4gfHwga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0ga2V5bGVuOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTY0KCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICBtZW1zZXQoIFAtPnJlc2VydmVkLCAwLCBzaXplb2YoIFAtPnJlc2VydmVkICkgKTsKKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisKKyAgaWYoIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgUCApIDwgMCApIHJldHVybiAtMTsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2UyYl91cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBibGFrZTJiX2NvbXByZXNzKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU10gKQoreworICB1aW50NjRfdCBtWzE2XTsKKyAgdWludDY0X3QgdlsxNl07CisgIGludCBpOworCisgIGZvciggaSA9IDA7IGkgPCAxNjsgKytpICkKKyAgICBtW2ldID0gbG9hZDY0KCBibG9jayArIGkgKiBzaXplb2YoIG1baV0gKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIHZbaV0gPSBTLT5oW2ldOworCisgIHZbIDhdID0gYmxha2UyYl9JVlswXTsKKyAgdlsgOV0gPSBibGFrZTJiX0lWWzFdOworICB2WzEwXSA9IGJsYWtlMmJfSVZbMl07CisgIHZbMTFdID0gYmxha2UyYl9JVlszXTsKKyAgdlsxMl0gPSBTLT50WzBdIF4gYmxha2UyYl9JVls0XTsKKyAgdlsxM10gPSBTLT50WzFdIF4gYmxha2UyYl9JVls1XTsKKyAgdlsxNF0gPSBTLT5mWzBdIF4gYmxha2UyYl9JVls2XTsKKyAgdlsxNV0gPSBTLT5mWzFdIF4gYmxha2UyYl9JVls3XTsKKyNkZWZpbmUgRyhyLGksYSxiLGMsZCkgXAorICBkbyB7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMmJfc2lnbWFbcl1bMippKzBdXTsgXAorICAgIGQgPSByb3RyNjQoZCBeIGEsIDMyKTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyNjQoYiBeIGMsIDI0KTsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2UyYl9zaWdtYVtyXVsyKmkrMV1dOyBcCisgICAgZCA9IHJvdHI2NChkIF4gYSwgMTYpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHI2NChiIF4gYywgNjMpOyBcCisgIH0gd2hpbGUoMCkKKyNkZWZpbmUgUk9VTkQocikgIFwKKyAgZG8geyBcCisgICAgRyhyLDAsdlsgMF0sdlsgNF0sdlsgOF0sdlsxMl0pOyBcCisgICAgRyhyLDEsdlsgMV0sdlsgNV0sdlsgOV0sdlsxM10pOyBcCisgICAgRyhyLDIsdlsgMl0sdlsgNl0sdlsxMF0sdlsxNF0pOyBcCisgICAgRyhyLDMsdlsgM10sdlsgN10sdlsxMV0sdlsxNV0pOyBcCisgICAgRyhyLDQsdlsgMF0sdlsgNV0sdlsxMF0sdlsxNV0pOyBcCisgICAgRyhyLDUsdlsgMV0sdlsgNl0sdlsxMV0sdlsxMl0pOyBcCisgICAgRyhyLDYsdlsgMl0sdlsgN10sdlsgOF0sdlsxM10pOyBcCisgICAgRyhyLDcsdlsgM10sdlsgNF0sdlsgOV0sdlsxNF0pOyBcCisgIH0gd2hpbGUoMCkKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKyAgUk9VTkQoIDEwICk7CisgIFJPVU5EKCAxMSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gPSBTLT5oW2ldIF4gdltpXSBeIHZbaSArIDhdOworCisjdW5kZWYgRworI3VuZGVmIFJPVU5ECisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiBub3cgaW4gYnl0ZXMgKi8KK2ludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIChzaXplX3QpaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSAoc2l6ZV90KWlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIElzIHRoaXMgY29ycmVjdD8gKi8KK2ludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyQl9PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPT0gMCB8fCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyQl9CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgUy0+YnVmbGVuICk7CisgIGJsYWtlMmJfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmU2NCggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiwgYXQgbGVhc3QsIHNob3VsZCBiZSB1aW50NjRfdC4gT3RoZXJzIGNhbiBiZSBzaXplX3QuICovCitpbnQgYmxha2UyYiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2UyYl9zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiggTlVMTCA9PSBrZXkgJiYga2V5bGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMmJfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMmJfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMmIoIG91dCwgaW4sIE5VTEwsIEJMQUtFMkJfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyQl9TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyQl9LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmIoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJCX09VVEJZVEVTLCBpLCBCTEFLRTJCX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMmJfa2V5ZWRfa2F0W2ldLCBCTEFLRTJCX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2UyMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yb3VuZC5oCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX1JPVU5EX0hfXworI2RlZmluZSBfX0JMQUtFMkJfUk9VTkRfSF9fCisKKyNkZWZpbmUgTE9BRFUocCkgIF9tbV9sb2FkdV9zaTEyOCggKGNvbnN0IF9fbTEyOGkgKikocCkgKQorI2RlZmluZSBTVE9SRVUocCxyKSBfbW1fc3RvcmV1X3NpMTI4KChfX20xMjhpICopKHApLCByKQorCisjZGVmaW5lIFRPRihyZWcpIF9tbV9jYXN0c2kxMjhfcHMoKHJlZykpCisjZGVmaW5lIFRPSShyZWcpIF9tbV9jYXN0cHNfc2kxMjgoKHJlZykpCisKKyNkZWZpbmUgTElLRUxZKHgpIF9fYnVpbHRpbl9leHBlY3QoKHgpLDEpCisKKworLyogTWljcm9hcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjcm9zICovCisjaWZuZGVmIEhBVkVfWE9QCisjaWZkZWYgSEFWRV9TU1NFMworI2RlZmluZSBfbW1fcm90aV9lcGk2NCh4LCBjKSBcCisgICAgKC0oYykgPT0gMzIpID8gX21tX3NodWZmbGVfZXBpMzIoKHgpLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSkgIFwKKyAgICA6ICgtKGMpID09IDI0KSA/IF9tbV9zaHVmZmxlX2VwaTgoKHgpLCByMjQpIFwKKyAgICA6ICgtKGMpID09IDE2KSA/IF9tbV9zaHVmZmxlX2VwaTgoKHgpLCByMTYpIFwKKyAgICA6ICgtKGMpID09IDYzKSA/IF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpNjQoKHgpLCAtKGMpKSwgX21tX2FkZF9lcGk2NCgoeCksICh4KSkpICBcCisgICAgOiBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCh4KSwgLShjKSksIF9tbV9zbGxpX2VwaTY0KCh4KSwgNjQtKC0oYykpKSkKKyNlbHNlCisjZGVmaW5lIF9tbV9yb3RpX2VwaTY0KHIsIGMpIF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpNjQoIChyKSwgLShjKSApLF9tbV9zbGxpX2VwaTY0KCAociksIDY0LSgtKGMpKSApKQorI2VuZGlmCisjZWxzZQorLyogLi4uICovCisjZW5kaWYKKworCisKKyNkZWZpbmUgRzEocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpIFwKKyAgcm93MWwgPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWwsIGIwKSwgcm93MmwpOyBcCisgIHJvdzFoID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFoLCBiMSksIHJvdzJoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3hvcl9zaTEyOChyb3c0bCwgcm93MWwpOyBcCisgIHJvdzRoID0gX21tX3hvcl9zaTEyOChyb3c0aCwgcm93MWgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1fcm90aV9lcGk2NChyb3c0bCwgLTMyKTsgXAorICByb3c0aCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRoLCAtMzIpOyBcCisgIFwKKyAgcm93M2wgPSBfbW1fYWRkX2VwaTY0KHJvdzNsLCByb3c0bCk7IFwKKyAgcm93M2ggPSBfbW1fYWRkX2VwaTY0KHJvdzNoLCByb3c0aCk7IFwKKyAgXAorICByb3cybCA9IF9tbV94b3Jfc2kxMjgocm93MmwsIHJvdzNsKTsgXAorICByb3cyaCA9IF9tbV94b3Jfc2kxMjgocm93MmgsIHJvdzNoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3JvdGlfZXBpNjQocm93MmwsIC0yNCk7IFwKKyAgcm93MmggPSBfbW1fcm90aV9lcGk2NChyb3cyaCwgLTI0KTsgXAorIAorI2RlZmluZSBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSkgXAorICByb3cxbCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxbCwgYjApLCByb3cybCk7IFwKKyAgcm93MWggPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWgsIGIxKSwgcm93MmgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1feG9yX3NpMTI4KHJvdzRsLCByb3cxbCk7IFwKKyAgcm93NGggPSBfbW1feG9yX3NpMTI4KHJvdzRoLCByb3cxaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRsLCAtMTYpOyBcCisgIHJvdzRoID0gX21tX3JvdGlfZXBpNjQocm93NGgsIC0xNik7IFwKKyAgXAorICByb3czbCA9IF9tbV9hZGRfZXBpNjQocm93M2wsIHJvdzRsKTsgXAorICByb3czaCA9IF9tbV9hZGRfZXBpNjQocm93M2gsIHJvdzRoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3hvcl9zaTEyOChyb3cybCwgcm93M2wpOyBcCisgIHJvdzJoID0gX21tX3hvcl9zaTEyOChyb3cyaCwgcm93M2gpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1fcm90aV9lcGk2NChyb3cybCwgLTYzKTsgXAorICByb3cyaCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJoLCAtNjMpOyBcCisgCisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKQorI2RlZmluZSBESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3cyaCwgcm93MmwsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzJsLCByb3cyaCwgOCk7IFwKKyAgcm93MmwgPSB0MDsgXAorICByb3cyaCA9IHQxOyBcCisgIFwKKyAgdDAgPSByb3czbDsgXAorICByb3czbCA9IHJvdzNoOyBcCisgIHJvdzNoID0gdDA7ICAgIFwKKyAgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3c0aCwgcm93NGwsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzRsLCByb3c0aCwgOCk7IFwKKyAgcm93NGwgPSB0MTsgXAorICByb3c0aCA9IHQwOworCisjZGVmaW5lIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93MmwsIHJvdzJoLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3cyaCwgcm93MmwsIDgpOyBcCisgIHJvdzJsID0gdDA7IFwKKyAgcm93MmggPSB0MTsgXAorICBcCisgIHQwID0gcm93M2w7IFwKKyAgcm93M2wgPSByb3czaDsgXAorICByb3czaCA9IHQwOyBcCisgIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93NGwsIHJvdzRoLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3c0aCwgcm93NGwsIDgpOyBcCisgIHJvdzRsID0gdDE7IFwKKyAgcm93NGggPSB0MDsKKyNlbHNlCisKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSByb3c0bDtcCisgIHQxID0gcm93Mmw7XAorICByb3c0bCA9IHJvdzNsO1wKKyAgcm93M2wgPSByb3czaDtcCisgIHJvdzNoID0gcm93NGw7XAorICByb3c0bCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0aCwgX21tX3VucGFja2xvX2VwaTY0KHQwLCB0MCkpOyBcCisgIHJvdzRoID0gX21tX3VucGFja2hpX2VwaTY0KHQwLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93NGgsIHJvdzRoKSk7IFwKKyAgcm93MmwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93MmwsIF9tbV91bnBhY2tsb19lcGk2NChyb3cyaCwgcm93MmgpKTsgXAorICByb3cyaCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3cyaCwgX21tX3VucGFja2xvX2VwaTY0KHQxLCB0MSkpCisKKyNkZWZpbmUgVU5ESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IHJvdzNsO1wKKyAgcm93M2wgPSByb3czaDtcCisgIHJvdzNoID0gdDA7XAorICB0MCA9IHJvdzJsO1wKKyAgdDEgPSByb3c0bDtcCisgIHJvdzJsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzJoLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmwsIHJvdzJsKSk7IFwKKyAgcm93MmggPSBfbW1fdW5wYWNraGlfZXBpNjQodDAsIF9tbV91bnBhY2tsb19lcGk2NChyb3cyaCwgcm93MmgpKTsgXAorICByb3c0bCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0bCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzRoLCByb3c0aCkpOyBcCisgIHJvdzRoID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzRoLCBfbW1fdW5wYWNrbG9fZXBpNjQodDEsIHQxKSkKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSAiYmxha2UyYi1sb2FkLXNzZTQxLmgiCisjZWxzZQorI2luY2x1ZGUgImJsYWtlMmItbG9hZC1zc2UyLmgiCisjZW5kaWYKKworI2RlZmluZSBST1VORChyKSBcCisgIExPQURfTVNHXyAjI3IgIyNfMShiMCwgYjEpOyBcCisgIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzIoYjAsIGIxKTsgXAorICBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMyhiMCwgYjEpOyBcCisgIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzQoYjAsIGIxKTsgXAorICBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgVU5ESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiNjViYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmIuYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKKyNpbmNsdWRlICJibGFrZTItY29uZmlnLmgiCisKKyNpZmRlZiBfTVNDX1ZFUgorI2luY2x1ZGUgPGludHJpbi5oPiAvKiBmb3IgX21tX3NldF9lcGk2NHggKi8KKyNlbmRpZgorI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9BVlgpCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJibGFrZTJiLXJvdW5kLmgiCisKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBibGFrZTJiX0lWWzhdID0KK3sKKyAgMHg2YTA5ZTY2N2YzYmNjOTA4VUxMLCAweGJiNjdhZTg1ODRjYWE3M2JVTEwsCisgIDB4M2M2ZWYzNzJmZTk0ZjgyYlVMTCwgMHhhNTRmZjUzYTVmMWQzNmYxVUxMLAorICAweDUxMGU1MjdmYWRlNjgyZDFVTEwsIDB4OWIwNTY4OGMyYjNlNmMxZlVMTCwKKyAgMHgxZjgzZDlhYmZiNDFiZDZiVUxMLCAweDViZTBjZDE5MTM3ZTIxNzlVTEwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMmJfc2lnbWFbMTJdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfQorfTsKKworCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3NldF9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMmJfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ2NF90IGluYyApCit7CisjaWYgX194ODZfNjRfXworICAvKiBBREQvQURDIGNoYWluICovCisgIF9fdWludDEyOF90IHQgPSAoICggX191aW50MTI4X3QgKVMtPnRbMV0gPDwgNjQgKSB8IFMtPnRbMF07CisgIHQgKz0gaW5jOworICBTLT50WzBdID0gKCB1aW50NjRfdCApKCB0ID4+ICAwICk7CisgIFMtPnRbMV0gPSAoIHVpbnQ2NF90ICkoIHQgPj4gNjQgKTsKKyNlbHNlCisgIFMtPnRbMF0gKz0gaW5jOworICBTLT50WzFdICs9ICggUy0+dFswXSA8IGluYyApOworI2VuZGlmCisgIHJldHVybiAwOworfQorCisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2Zhbm91dCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBQLT5sZWFmX2xlbmd0aCA9IGxlYWZfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIFAtPm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9zYWx0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyQl9TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJCX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyQl9QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbml0MCggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJiX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0IHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKQoreworICAvKmJsYWtlMmJfaW5pdDAoIFMgKTsgKi8KKyAgY29uc3QgdWludDhfdCAqIHYgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBibGFrZTJiX0lWICk7CisgIGNvbnN0IHVpbnQ4X3QgKiBwID0gKCBjb25zdCB1aW50OF90ICogKSggUCApOworICB1aW50OF90ICogaCA9ICggdWludDhfdCAqICkoIFMtPmggKTsKKyAgaW50IGk7CisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJiX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9PVVRCWVRFUzsgKytpICkgaFtpXSA9IHZbaV0gXiBwW2ldOworCisgIHJldHVybiAwOworfQorCisKKy8qIFNvbWUgc29ydCBvZiBkZWZhdWx0IHBhcmFtZXRlciBibG9jayBpbml0aWFsaXphdGlvbiwgZm9yIHNlcXVlbnRpYWwgYmxha2UyYiAqLworaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBjb25zdCBibGFrZTJiX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIHJldHVybiBibGFrZTJiX2luaXRfcGFyYW0oIFMsICZQICk7Cit9CisKK2ludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGNvbnN0IGJsYWtlMmJfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAga2V5bGVuLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICggIWtleWxlbiApIHx8IGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgJlAgKSA8IDAgKQorICAgIHJldHVybiAwOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJiX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jb21wcmVzcyggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdICkKK3sKKyAgX19tMTI4aSByb3cxbCwgcm93MWg7CisgIF9fbTEyOGkgcm93MmwsIHJvdzJoOworICBfX20xMjhpIHJvdzNsLCByb3czaDsKKyAgX19tMTI4aSByb3c0bCwgcm93NGg7CisgIF9fbTEyOGkgYjAsIGIxOworICBfX20xMjhpIHQwLCB0MTsKKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpICYmICFkZWZpbmVkKEhBVkVfWE9QKQorICBjb25zdCBfX20xMjhpIHIxNiA9IF9tbV9zZXRyX2VwaTgoIDIsIDMsIDQsIDUsIDYsIDcsIDAsIDEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDgsIDkgKTsKKyAgY29uc3QgX19tMTI4aSByMjQgPSBfbW1fc2V0cl9lcGk4KCAzLCA0LCA1LCA2LCA3LCAwLCAxLCAyLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDgsIDksIDEwICk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIGNvbnN0IF9fbTEyOGkgbTAgPSBMT0FEVSggYmxvY2sgKyAwMCApOworICBjb25zdCBfX20xMjhpIG0xID0gTE9BRFUoIGJsb2NrICsgMTYgKTsKKyAgY29uc3QgX19tMTI4aSBtMiA9IExPQURVKCBibG9jayArIDMyICk7CisgIGNvbnN0IF9fbTEyOGkgbTMgPSBMT0FEVSggYmxvY2sgKyA0OCApOworICBjb25zdCBfX20xMjhpIG00ID0gTE9BRFUoIGJsb2NrICsgNjQgKTsKKyAgY29uc3QgX19tMTI4aSBtNSA9IExPQURVKCBibG9jayArIDgwICk7CisgIGNvbnN0IF9fbTEyOGkgbTYgPSBMT0FEVSggYmxvY2sgKyA5NiApOworICBjb25zdCBfX20xMjhpIG03ID0gTE9BRFUoIGJsb2NrICsgMTEyICk7CisjZWxzZQorICBjb25zdCB1aW50NjRfdCAgbTAgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgMF07CisgIGNvbnN0IHVpbnQ2NF90ICBtMSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAxXTsKKyAgY29uc3QgdWludDY0X3QgIG0yID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDJdOworICBjb25zdCB1aW50NjRfdCAgbTMgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgM107CisgIGNvbnN0IHVpbnQ2NF90ICBtNCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA0XTsKKyAgY29uc3QgdWludDY0X3QgIG01ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDVdOworICBjb25zdCB1aW50NjRfdCAgbTYgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgNl07CisgIGNvbnN0IHVpbnQ2NF90ICBtNyA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA3XTsKKyAgY29uc3QgdWludDY0X3QgIG04ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDhdOworICBjb25zdCB1aW50NjRfdCAgbTkgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgOV07CisgIGNvbnN0IHVpbnQ2NF90IG0xMCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzEwXTsKKyAgY29uc3QgdWludDY0X3QgbTExID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTFdOworICBjb25zdCB1aW50NjRfdCBtMTIgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxMl07CisgIGNvbnN0IHVpbnQ2NF90IG0xMyA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzEzXTsKKyAgY29uc3QgdWludDY0X3QgbTE0ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTRdOworICBjb25zdCB1aW50NjRfdCBtMTUgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxNV07CisjZW5kaWYKKyAgcm93MWwgPSBMT0FEVSggJlMtPmhbMF0gKTsKKyAgcm93MWggPSBMT0FEVSggJlMtPmhbMl0gKTsKKyAgcm93MmwgPSBMT0FEVSggJlMtPmhbNF0gKTsKKyAgcm93MmggPSBMT0FEVSggJlMtPmhbNl0gKTsKKyAgcm93M2wgPSBMT0FEVSggJmJsYWtlMmJfSVZbMF0gKTsKKyAgcm93M2ggPSBMT0FEVSggJmJsYWtlMmJfSVZbMl0gKTsKKyAgcm93NGwgPSBfbW1feG9yX3NpMTI4KCBMT0FEVSggJmJsYWtlMmJfSVZbNF0gKSwgTE9BRFUoICZTLT50WzBdICkgKTsKKyAgcm93NGggPSBfbW1feG9yX3NpMTI4KCBMT0FEVSggJmJsYWtlMmJfSVZbNl0gKSwgTE9BRFUoICZTLT5mWzBdICkgKTsKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKyAgUk9VTkQoIDEwICk7CisgIFJPVU5EKCAxMSApOworICByb3cxbCA9IF9tbV94b3Jfc2kxMjgoIHJvdzNsLCByb3cxbCApOworICByb3cxaCA9IF9tbV94b3Jfc2kxMjgoIHJvdzNoLCByb3cxaCApOworICBTVE9SRVUoICZTLT5oWzBdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbMF0gKSwgcm93MWwgKSApOworICBTVE9SRVUoICZTLT5oWzJdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbMl0gKSwgcm93MWggKSApOworICByb3cybCA9IF9tbV94b3Jfc2kxMjgoIHJvdzRsLCByb3cybCApOworICByb3cyaCA9IF9tbV94b3Jfc2kxMjgoIHJvdzRoLCByb3cyaCApOworICBTVE9SRVUoICZTLT5oWzRdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbNF0gKSwgcm93MmwgKSApOworICBTVE9SRVUoICZTLT5oWzZdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbNl0gKSwgcm93MmggKSApOworICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2UyYl91cGRhdGUoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IGlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmJfZmluYWwoIGJsYWtlMmJfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKQoreworICBpZiggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMkJfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIFMtPmJ1ZmxlbiApOworICBibGFrZTJiX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgbWVtY3B5KCBvdXQsICZTLT5oWzBdLCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuICkKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMmJfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMmJfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMmIoIG91dCwgaW4sIE5VTEwsIEJMQUtFMkJfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyQl9TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyQl9LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmIoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJCX09VVEJZVEVTLCBpLCBCTEFLRTJCX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMmJfa2V5ZWRfa2F0W2ldLCBCTEFLRTJCX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2UyLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGVmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9TU0UyX0hfXworI2RlZmluZSBfX0JMQUtFMlNfTE9BRF9TU0UyX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTYsbTQsbTIsbTApCisjZGVmaW5lIExPQURfTVNHXzBfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTcsbTUsbTMsbTEpCisjZGVmaW5lIExPQURfTVNHXzBfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE0LG0xMixtMTAsbTgpCisjZGVmaW5lIExPQURfTVNHXzBfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG0xMyxtMTEsbTkpCisjZGVmaW5lIExPQURfTVNHXzFfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG05LG00LG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNixtMTUsbTgsbTEwKQorI2RlZmluZSBMT0FEX01TR18xXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG0xMSxtMCxtMSkKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtNyxtMixtMTIpCisjZGVmaW5lIExPQURfTVNHXzJfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG01LG0xMixtMTEpCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG0yLG0wLG04KQorI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG05LG03LG0zLG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNCxtMSxtNixtMTQpCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTExLG0xMyxtMyxtNykKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTQsbTEyLG0xLG05KQorI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNCxtNSxtMikKKyNkZWZpbmUgTE9BRF9NU0dfM180KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtMCxtMTAsbTYpCisjZGVmaW5lIExPQURfTVNHXzRfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0yLG01LG05KQorI2RlZmluZSBMT0FEX01TR180XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNCxtNyxtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtNixtMTEsbTE0KQorI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtOCxtMTIsbTEpCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTAsbTYsbTIpCisjZGVmaW5lIExPQURfTVNHXzVfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTExLG0xMCxtMTIpCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEsbTE1LG03LG00KQorI2RlZmluZSBMT0FEX01TR181XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG05LG0xNCxtNSxtMTMpCisjZGVmaW5lIExPQURfTVNHXzZfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTQsbTE0LG0xLG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTEzLG0xNSxtNSkKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtOSxtNixtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTEsbTIsbTMsbTcpCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTEyLG03LG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtMSxtMTQsbTExKQorI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0yLG04LG0xNSxtNSkKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTYsbTQsbTApCisjZGVmaW5lIExPQURfTVNHXzhfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTAsbTExLG0xNCxtNikKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtMyxtOSxtMTUpCisjZGVmaW5lIExPQURfTVNHXzhfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0xLG0xMyxtMTIpCisjZGVmaW5lIExPQURfTVNHXzhfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTUsbTQsbTcsbTIpCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEsbTcsbTgsbTEwKQorI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG02LG00LG0yKQorI2RlZmluZSBMT0FEX01TR185XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtMyxtOSxtMTUpCisjZGVmaW5lIExPQURfTVNHXzlfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTAsbTEyLG0xNCxtMTEpCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2U0MS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YmYwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaApAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19MT0FEX1NTRTQxX0hfXworI2RlZmluZSBfX0JMQUtFMlNfTE9BRF9TU0U0MV9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0wKSwgVE9GKG0xKSwgX01NX1NIVUZGTEUoMiwwLDIsMCkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0wKSwgVE9GKG0xKSwgX01NX1NIVUZGTEUoMywxLDMsMSkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzMoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0yKSwgVE9GKG0zKSwgX01NX1NIVUZGTEUoMiwwLDIsMCkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0yKSwgVE9GKG0zKSwgX01NX1NIVUZGTEUoMywxLDMsMSkpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTIsIDB4MEMpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweEYwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMSwwLDMpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzIoYnVmKSBcCit0MCA9IF9tbV9zaHVmZmxlX2VwaTMyKG0yLF9NTV9TSFVGRkxFKDAsMCwyLDApKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTMsMHhDMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMSwgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0yLCB0MCwgMHgzMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KG0wLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweDBDKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMywwLDEpKTsKKworI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMixtMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0zLG0xLDB4MEMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMywxLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTMyKG0yLG0wKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsIG0wLCAweEYwKTsgXAordDIgPSBfbW1fc2xsaV9zaTEyOChtMywgOCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgdDIsIDB4QzApOworCisjZGVmaW5lIExPQURfTVNHXzJfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMiwgMHgzQyk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTEsIDEyKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMSwgMHgzMyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLCB0MCwgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgwLDEsMiwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMih0MCwgbTIpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgbTMsIDB4MEMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMywxLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTIsIDgpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMCwweDBDKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsIHQwLCAweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMCwxLDMpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMSwweDBGKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsIG0zLCAweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsIF9NTV9TSFVGRkxFKDMsMCwxLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMik7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAorYnVmID0gX21tX3VucGFja2xvX2VwaTY0KHQxLHQwKTsKKworI2RlZmluZSBMT0FEX01TR180XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTY0KG0wLG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDAsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTEsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NChtMCxtMSk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMzKTsKKworI2RlZmluZSBMT0FEX01TR180XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGk2NChtMyxtMSk7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLG0wKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4MzMpOworCisjZGVmaW5lIExPQURfTVNHXzRfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLG0yLDB4MDMpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KHQwLCA4KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsbTMsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDIsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCx0MSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGJ1ZikgXAordDAgPSBfbW1fc3JsaV9zaTEyOChtMiwgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0wLG0zLDB4MDMpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHgzQyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTAsMHgwQyk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTMsIDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMiwzLDApKTsKKworI2RlZmluZSBMT0FEX01TR181XzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QxPSBfbW1fc2h1ZmZsZV9lcGkzMihtMywgX01NX1NIVUZGTEUoMCwyLDAsMSkpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMSwgMTIpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMywweDMzKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4QzApOworCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0zLG0yLDB4MzApOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDEsMywwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsbTIpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCA0KTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIoX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MEMpLCBfTU1fU0hVRkZMRSgyLDMsMSwwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCx0MCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLCBfTU1fU0hVRkZMRSgzLDAsMSwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNih0MCxtMywweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsX01NX1NIVUZGTEUoMiwwLDMsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0yLG0zLDB4MzApOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0wLDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDAzKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMCwyLDMpKTsKKworI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTY0KG0xLG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzQyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDAsMiwzLDEpKTsKKworI2RlZmluZSBMT0FEX01TR183XzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAorYnVmID0gX21tX3VucGFja2xvX2VwaTY0KHQwLHQxKTsKKworI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTY0KHQwLG0wKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsbTIsMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlaGlfZXBpMTYodDIsX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0zKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTIsdDAsMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLF9NTV9TSFVGRkxFKDAsMiwxLDMpKTsKKworI2RlZmluZSBMT0FEX01TR184XzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMixtMCwweDBDKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOCh0MCw0KTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLG0zLDB4MEYpOworCisjZGVmaW5lIExPQURfTVNHXzhfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0xLG0wLDB4MzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MCxfTU1fU0hVRkZMRSgxLDAsMywyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTIsMHgwMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLG0yLDB4MzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMSwzLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzlfMihidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTAsNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLHQwLDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSxfTU1fU0hVRkZMRSgxLDIsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMixtMyk7IFwKK3QyID0gX21tX3VucGFja2hpX2VwaTY0KHQwLHQxKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMywwLDIsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzlfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0zLG0yLDB4QzApOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgwLDEsMiwzKSk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNiNWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC14b3AuaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19MT0FEX1hPUF9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfWE9QX0hfXworCisjZGVmaW5lIFRPQih4KSAoKHgpKjQqMHgwMTAxMDEwMSArIDB4MDMwMjAxMDApIC8qIC4ub3Igbm90IFRPQiAqLworCisvKiBCYXNpYyBWUFBFUk0gZW11bGF0aW9uLCBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLworLypzdGF0aWMgX19tMTI4aSBfbW1fcGVybV9lcGk4KGNvbnN0IF9fbTEyOGkgc3JjMSwgY29uc3QgX19tMTI4aSBzcmMyLCBjb25zdCBfX20xMjhpIHNlbCkKK3sKKyAgIGNvbnN0IF9fbTEyOGkgc2l4dGVlbiA9IF9tbV9zZXQxX2VwaTgoMTYpOworICAgY29uc3QgX19tMTI4aSB0MCA9IF9tbV9zaHVmZmxlX2VwaTgoc3JjMSwgc2VsKTsKKyAgIGNvbnN0IF9fbTEyOGkgczEgPSBfbW1fc2h1ZmZsZV9lcGk4KHNyYzIsIF9tbV9zdWJfZXBpOChzZWwsIHNpeHRlZW4pKTsKKyAgIGNvbnN0IF9fbTEyOGkgbWFzayA9IF9tbV9vcl9zaTEyOChfbW1fY21wZXFfZXBpOChzZWwsIHNpeHRlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9jbXBndF9lcGk4KHNlbCwgc2l4dGVlbikpOyAvKiAoPj0xNikgPSAweGZmIDogMDAgKi8KKyAgIHJldHVybiBfbW1fYmxlbmR2X2VwaTgodDAsIHMxLCBtYXNrKTsKK30qLworCisjZGVmaW5lIExPQURfTVNHXzBfMShidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDIpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDUpLFRPQigzKSxUT0IoMSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMiwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQig0KSxUT0IoMiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzBfNChidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTIsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoNSksVE9CKDMpLFRPQigxKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNSksVE9CKDApLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDIpLFRPQigwKSxUT0IoNCksVE9CKDYpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDApLFRPQigwKSxUT0IoMSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDIpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigxKSxUT0IoMCksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQig0KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQigwKSxUT0IoNCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNyksVE9CKDMpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigxKSxUT0IoNiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigzKSxUT0IoNykpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDUpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigxKSxUT0IoNSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDUpLFRPQigyKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMCksVE9CKDYpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDIpLFRPQig2KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQig1KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMiksVE9CKDEpLFRPQig1KSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig2KSxUT0IoMCksVE9CKDApKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig0KSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQig0KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQig2KSxUT0IoMikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDYpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDEpLFRPQigwKSxUT0IoNyksVE9CKDQpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDApLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDEpLFRPQig1KSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMCksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig2KSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigwKSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDUpLFRPQig3KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQig2KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoNSksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMiksVE9CKDMpLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigwKSxUT0IoNyksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDQpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDEpLFRPQigwKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDYpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigyKSxUT0IoMCksVE9CKDApLFRPQig1KSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDQpLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDcpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNiksVE9CKDQpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMCksVE9CKDYpKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigzKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNykpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDEpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDUpLFRPQig0KSkgKTsgXAorIAorI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDQpLFRPQig3KSxUT0IoMikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMSksVE9CKDcpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDQpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDYpLFRPQig0KSxUT0IoMikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDMpLFRPQig1KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig3KSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoNiksVE9CKDApKSApOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yZWYuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYzNjc1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMKQEAgLTAsMCArMSw0MTEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCitzdGF0aWMgY29uc3QgdWludDMyX3QgYmxha2Uyc19JVls4XSA9Cit7CisgIDB4NkEwOUU2NjdVTCwgMHhCQjY3QUU4NVVMLCAweDNDNkVGMzcyVUwsIDB4QTU0RkY1M0FVTCwKKyAgMHg1MTBFNTI3RlVMLCAweDlCMDU2ODhDVUwsIDB4MUY4M0Q5QUJVTCwgMHg1QkUwQ0QxOVVMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJzX3NpZ21hWzEwXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorfTsKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDMyX3QgaW5jICkKK3sKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7CisgIHJldHVybiAwOworfQorCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCBsZWFmX2xlbmd0aCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNDgoIFAtPm5vZGVfb2Zmc2V0LCBub2RlX29mZnNldCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfc2FsdCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMlNfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyU19TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJTX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5pdDAoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2Uyc19JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdDIgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApCit7CisgIGNvbnN0IHVpbnQzMl90ICpwID0gKCBjb25zdCB1aW50MzJfdCAqICkoIFAgKTsKKyAgc2l6ZV90IGk7CisKKyAgYmxha2Uyc19pbml0MCggUyApOworCisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gXj0gbG9hZDMyKCAmcFtpXSApOworCisgIHJldHVybiAwOworfQorCisKKy8qIFNlcXVlbnRpYWwgYmxha2UycyBpbml0aWFsaXphdGlvbiAqLworaW50IGJsYWtlMnNfaW5pdCggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBibGFrZTJzX3BhcmFtIFBbMV07CisKKyAgLyogTW92ZSBpbnRlcnZhbCB2ZXJpZmljYXRpb24gaGVyZT8gKi8KKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0gMDsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU0OCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgLyogbWVtc2V0KFAtPnJlc2VydmVkLCAwLCBzaXplb2YoUC0+cmVzZXJ2ZWQpICk7ICovCisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworICByZXR1cm4gYmxha2Uyc19pbml0X3BhcmFtKCBTLCBQICk7Cit9CisKK2ludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfcGFyYW0gUFsxXTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggIWtleSB8fCAha2V5bGVuIHx8IGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IGtleWxlbjsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU0OCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgLyogbWVtc2V0KFAtPnJlc2VydmVkLCAwLCBzaXplb2YoUC0+cmVzZXJ2ZWQpICk7ICovCisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworCisgIGlmKCBibGFrZTJzX2luaXRfcGFyYW0oIFMsIFAgKSA8IDAgKSByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMnNfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmxha2Uyc19jb21wcmVzcyggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdICkKK3sKKyAgdWludDMyX3QgbVsxNl07CisgIHVpbnQzMl90IHZbMTZdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgMTY7ICsraSApCisgICAgbVtpXSA9IGxvYWQzMiggYmxvY2sgKyBpICogc2l6ZW9mKCBtW2ldICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICB2W2ldID0gUy0+aFtpXTsKKworICB2WyA4XSA9IGJsYWtlMnNfSVZbMF07CisgIHZbIDldID0gYmxha2Uyc19JVlsxXTsKKyAgdlsxMF0gPSBibGFrZTJzX0lWWzJdOworICB2WzExXSA9IGJsYWtlMnNfSVZbM107CisgIHZbMTJdID0gUy0+dFswXSBeIGJsYWtlMnNfSVZbNF07CisgIHZbMTNdID0gUy0+dFsxXSBeIGJsYWtlMnNfSVZbNV07CisgIHZbMTRdID0gUy0+ZlswXSBeIGJsYWtlMnNfSVZbNl07CisgIHZbMTVdID0gUy0+ZlsxXSBeIGJsYWtlMnNfSVZbN107CisjZGVmaW5lIEcocixpLGEsYixjLGQpIFwKKyAgZG8geyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJzX3NpZ21hW3JdWzIqaSswXV07IFwKKyAgICBkID0gcm90cjMyKGQgXiBhLCAxNik7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjMyKGIgXiBjLCAxMik7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMnNfc2lnbWFbcl1bMippKzFdXTsgXAorICAgIGQgPSByb3RyMzIoZCBeIGEsIDgpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHIzMihiIF4gYywgNyk7IFwKKyAgfSB3aGlsZSgwKQorI2RlZmluZSBST1VORChyKSAgXAorICBkbyB7IFwKKyAgICBHKHIsMCx2WyAwXSx2WyA0XSx2WyA4XSx2WzEyXSk7IFwKKyAgICBHKHIsMSx2WyAxXSx2WyA1XSx2WyA5XSx2WzEzXSk7IFwKKyAgICBHKHIsMix2WyAyXSx2WyA2XSx2WzEwXSx2WzE0XSk7IFwKKyAgICBHKHIsMyx2WyAzXSx2WyA3XSx2WzExXSx2WzE1XSk7IFwKKyAgICBHKHIsNCx2WyAwXSx2WyA1XSx2WzEwXSx2WzE1XSk7IFwKKyAgICBHKHIsNSx2WyAxXSx2WyA2XSx2WzExXSx2WzEyXSk7IFwKKyAgICBHKHIsNix2WyAyXSx2WyA3XSx2WyA4XSx2WzEzXSk7IFwKKyAgICBHKHIsNyx2WyAzXSx2WyA0XSx2WyA5XSx2WzE0XSk7IFwKKyAgfSB3aGlsZSgwKQorICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gPSBTLT5oW2ldIF4gdltpXSBeIHZbaSArIDhdOworCisjdW5kZWYgRworI3VuZGVmIFJPVU5ECisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJzX3VwZGF0ZSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIChzaXplX3QpaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSAoc2l6ZV90KWlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK2ludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyU19PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPT0gMCB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJTX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCAoIHVpbnQzMl90IClTLT5idWZsZW4gKTsKKyAgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIC8qIE91dHB1dCBmdWxsIGhhc2ggdG8gdGVtcCBidWZmZXIgKi8KKyAgICBzdG9yZTMyKCBidWZmZXIgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGksIFMtPmhbaV0gKTsKKyAgICAKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCitpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMnNfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMnNfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMnMoIG91dCwgaW4sIE5VTEwsIEJMQUtFMlNfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyU19TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyU19LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnMoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJTX09VVEJZVEVTLCBpLCBCTEFLRTJTX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMnNfa2V5ZWRfa2F0W2ldLCBCTEFLRTJTX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NzBkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJvdW5kLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19ST1VORF9IX18KKyNkZWZpbmUgX19CTEFLRTJTX1JPVU5EX0hfXworCisjZGVmaW5lIExPQURVKHApICBfbW1fbG9hZHVfc2kxMjgoIChjb25zdCBfX20xMjhpICopKHApICkKKyNkZWZpbmUgU1RPUkVVKHAscikgX21tX3N0b3JldV9zaTEyOCgoX19tMTI4aSAqKShwKSwgcikKKworI2RlZmluZSBUT0YocmVnKSBfbW1fY2FzdHNpMTI4X3BzKChyZWcpKQorI2RlZmluZSBUT0kocmVnKSBfbW1fY2FzdHBzX3NpMTI4KChyZWcpKQorCisjZGVmaW5lIExJS0VMWSh4KSBfX2J1aWx0aW5fZXhwZWN0KCh4KSwxKQorCisKKy8qIE1pY3JvYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyAqLworI2lmbmRlZiBIQVZFX1hPUAorI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgX21tX3JvdGlfZXBpMzIociwgYykgKCBcCisgICAgICAgICAgICAgICAgKDg9PS0oYykpID8gX21tX3NodWZmbGVfZXBpOChyLHI4KSBcCisgICAgICAgICAgICAgIDogKDE2PT0tKGMpKSA/IF9tbV9zaHVmZmxlX2VwaTgocixyMTYpIFwKKyAgICAgICAgICAgICAgOiBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTMyKCAociksIC0oYykgKSxfbW1fc2xsaV9lcGkzMiggKHIpLCAzMi0oLShjKSkgKSkgKQorI2Vsc2UKKyNkZWZpbmUgX21tX3JvdGlfZXBpMzIociwgYykgX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGkzMiggKHIpLCAtKGMpICksX21tX3NsbGlfZXBpMzIoIChyKSwgMzItKC0oYykpICkpCisjZW5kaWYKKyNlbHNlCisvKiAuLi4gKi8KKyNlbmRpZgorCisKKyNkZWZpbmUgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYpIFwKKyAgcm93MSA9IF9tbV9hZGRfZXBpMzIoIF9tbV9hZGRfZXBpMzIoIHJvdzEsIGJ1ZiksIHJvdzIgKTsgXAorICByb3c0ID0gX21tX3hvcl9zaTEyOCggcm93NCwgcm93MSApOyBcCisgIHJvdzQgPSBfbW1fcm90aV9lcGkzMihyb3c0LCAtMTYpOyBcCisgIHJvdzMgPSBfbW1fYWRkX2VwaTMyKCByb3czLCByb3c0ICk7ICAgXAorICByb3cyID0gX21tX3hvcl9zaTEyOCggcm93Miwgcm93MyApOyBcCisgIHJvdzIgPSBfbW1fcm90aV9lcGkzMihyb3cyLCAtMTIpOworCisjZGVmaW5lIEcyKHJvdzEscm93Mixyb3czLHJvdzQsYnVmKSBcCisgIHJvdzEgPSBfbW1fYWRkX2VwaTMyKCBfbW1fYWRkX2VwaTMyKCByb3cxLCBidWYpLCByb3cyICk7IFwKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIHJvdzQsIHJvdzEgKTsgXAorICByb3c0ID0gX21tX3JvdGlfZXBpMzIocm93NCwgLTgpOyBcCisgIHJvdzMgPSBfbW1fYWRkX2VwaTMyKCByb3czLCByb3c0ICk7ICAgXAorICByb3cyID0gX21tX3hvcl9zaTEyOCggcm93Miwgcm93MyApOyBcCisgIHJvdzIgPSBfbW1fcm90aV9lcGkzMihyb3cyLCAtNyk7CisKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCkgXAorICByb3c0ID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzQsIF9NTV9TSFVGRkxFKDIsMSwwLDMpICk7IFwKKyAgcm93MyA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3czLCBfTU1fU0hVRkZMRSgxLDAsMywyKSApOyBcCisgIHJvdzIgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MiwgX01NX1NIVUZGTEUoMCwzLDIsMSkgKTsKKworI2RlZmluZSBVTkRJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpIFwKKyAgcm93NCA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3c0LCBfTU1fU0hVRkZMRSgwLDMsMiwxKSApOyBcCisgIHJvdzMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MywgX01NX1NIVUZGTEUoMSwwLDMsMikgKTsgXAorICByb3cyID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzIsIF9NTV9TSFVGRkxFKDIsMSwwLDMpICk7CisKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgImJsYWtlMnMtbG9hZC14b3AuaCIKKyNlbGlmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlICJibGFrZTJzLWxvYWQtc3NlNDEuaCIKKyNlbHNlCisjaW5jbHVkZSAiYmxha2Uycy1sb2FkLXNzZTIuaCIKKyNlbmRpZgorCisjZGVmaW5lIFJPVU5EKHIpICBcCisgIExPQURfTVNHXyAjI3IgIyNfMShidWYxKTsgXAorICBHMShyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjEpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMihidWYyKTsgXAorICBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjIpOyBcCisgIERJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMyhidWYzKTsgXAorICBHMShyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjMpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfNChidWY0KTsgXAorICBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjQpOyBcCisgIFVORElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCk7IFwKKyAKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzODVkYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMuYwpAQCAtMCwwICsxLDQzNSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKKyNpbmNsdWRlICJibGFrZTItY29uZmlnLmgiCisKKworI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9BVlgpCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJibGFrZTJzLXJvdW5kLmgiCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBibGFrZTJzX0lWWzhdID0KK3sKKyAgMHg2QTA5RTY2N1VMLCAweEJCNjdBRTg1VUwsIDB4M0M2RUYzNzJVTCwgMHhBNTRGRjUzQVVMLAorICAweDUxMEU1MjdGVUwsIDB4OUIwNTY4OENVTCwgMHgxRjgzRDlBQlVMLCAweDVCRTBDRDE5VUwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMnNfc2lnbWFbMTBdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCit9OworCisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2lzX2xhc3RibG9jayggY29uc3QgYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQzMl90IGluYyApCit7CisgIHVpbnQ2NF90IHQgPSAoICggdWludDY0X3QgKVMtPnRbMV0gPDwgMzIgKSB8IFMtPnRbMF07CisgIHQgKz0gaW5jOworICBTLT50WzBdID0gKCB1aW50MzJfdCApKCB0ID4+ICAwICk7CisgIFMtPnRbMV0gPSAoIHVpbnQzMl90ICkoIHQgPj4gMzIgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIFAtPmxlYWZfbGVuZ3RoID0gbGVhZl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9vZmZzZXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ2NF90IG5vZGVfb2Zmc2V0ICkKK3sKKyAgc3RvcmU0OCggUC0+bm9kZV9vZmZzZXQsIG5vZGVfb2Zmc2V0ICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9zYWx0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyU19TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJTX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyU19QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbml0MCggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2Uyc19zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJzX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0MiB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2Uyc19pbml0X3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICkKK3sKKyAgLypibGFrZTJzX2luaXQwKCBTICk7ICovCisgIGNvbnN0IHVpbnQ4X3QgKiB2ID0gKCBjb25zdCB1aW50OF90ICogKSggYmxha2Uyc19JViApOworICBjb25zdCB1aW50OF90ICogcCA9ICggY29uc3QgdWludDhfdCAqICkoIFAgKTsKKyAgdWludDhfdCAqIGggPSAoIHVpbnQ4X3QgKiApKCBTLT5oICk7CisgIGludCBpOworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2Uyc19zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfT1VUQllURVM7ICsraSApIGhbaV0gPSB2W2ldIF4gcFtpXTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTb21lIHNvcnQgb2YgZGVmYXVsdCBwYXJhbWV0ZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIGZvciBzZXF1ZW50aWFsIGJsYWtlMnMgKi8KK2ludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgY29uc3QgYmxha2Uyc19wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIHswfSwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfQorICB9OworICAvKiBNb3ZlIGludGVydmFsIHZlcmlmaWNhdGlvbiBoZXJlPyAqLworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworICByZXR1cm4gYmxha2Uyc19pbml0X3BhcmFtKCBTLCAmUCApOworfQorCisKK2ludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGNvbnN0IGJsYWtlMnNfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAga2V5bGVuLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIHswfSwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfQorICB9OworCisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAoICFrZXkgKSB8fCAoICFrZXlsZW4gKSB8fCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2luaXRfcGFyYW0oIFMsICZQICkgPCAwICkKKyAgICByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMnNfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY29tcHJlc3MoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXSApCit7CisgIF9fbTEyOGkgcm93MSwgcm93Miwgcm93Mywgcm93NDsKKyAgX19tMTI4aSBidWYxLCBidWYyLCBidWYzLCBidWY0OworI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyAgX19tMTI4aSB0MCwgdDE7CisjaWYgIWRlZmluZWQoSEFWRV9YT1ApCisgIF9fbTEyOGkgdDI7CisjZW5kaWYKKyNlbmRpZgorICBfX20xMjhpIGZmMCwgZmYxOworI2lmIGRlZmluZWQoSEFWRV9TU1NFMykgJiYgIWRlZmluZWQoSEFWRV9YT1ApCisgIGNvbnN0IF9fbTEyOGkgcjggPSBfbW1fc2V0X2VwaTgoIDEyLCAxNSwgMTQsIDEzLCA4LCAxMSwgMTAsIDksIDQsIDcsIDYsIDUsIDAsIDMsIDIsIDEgKTsKKyAgY29uc3QgX19tMTI4aSByMTYgPSBfbW1fc2V0X2VwaTgoIDEzLCAxMiwgMTUsIDE0LCA5LCA4LCAxMSwgMTAsIDUsIDQsIDcsIDYsIDEsIDAsIDMsIDIgKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyAgY29uc3QgX19tMTI4aSBtMCA9IExPQURVKCBibG9jayArICAwMCApOworICBjb25zdCBfX20xMjhpIG0xID0gTE9BRFUoIGJsb2NrICsgIDE2ICk7CisgIGNvbnN0IF9fbTEyOGkgbTIgPSBMT0FEVSggYmxvY2sgKyAgMzIgKTsKKyAgY29uc3QgX19tMTI4aSBtMyA9IExPQURVKCBibG9jayArICA0OCApOworI2Vsc2UKKyAgY29uc3QgdWludDMyX3QgIG0wID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDBdOworICBjb25zdCB1aW50MzJfdCAgbTEgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgMV07CisgIGNvbnN0IHVpbnQzMl90ICBtMiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAyXTsKKyAgY29uc3QgdWludDMyX3QgIG0zID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDNdOworICBjb25zdCB1aW50MzJfdCAgbTQgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgNF07CisgIGNvbnN0IHVpbnQzMl90ICBtNSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA1XTsKKyAgY29uc3QgdWludDMyX3QgIG02ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDZdOworICBjb25zdCB1aW50MzJfdCAgbTcgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgN107CisgIGNvbnN0IHVpbnQzMl90ICBtOCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA4XTsKKyAgY29uc3QgdWludDMyX3QgIG05ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDldOworICBjb25zdCB1aW50MzJfdCBtMTAgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxMF07CisgIGNvbnN0IHVpbnQzMl90IG0xMSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzExXTsKKyAgY29uc3QgdWludDMyX3QgbTEyID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTJdOworICBjb25zdCB1aW50MzJfdCBtMTMgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxM107CisgIGNvbnN0IHVpbnQzMl90IG0xNCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzE0XTsKKyAgY29uc3QgdWludDMyX3QgbTE1ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTVdOworI2VuZGlmCisgIHJvdzEgPSBmZjAgPSBMT0FEVSggJlMtPmhbMF0gKTsKKyAgcm93MiA9IGZmMSA9IExPQURVKCAmUy0+aFs0XSApOworICByb3czID0gX21tX3NldHJfZXBpMzIoIDB4NkEwOUU2NjcsIDB4QkI2N0FFODUsIDB4M0M2RUYzNzIsIDB4QTU0RkY1M0EgKTsKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIF9tbV9zZXRyX2VwaTMyKCAweDUxMEU1MjdGLCAweDlCMDU2ODhDLCAweDFGODNEOUFCLCAweDVCRTBDRDE5ICksIExPQURVKCAmUy0+dFswXSApICk7CisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFNUT1JFVSggJlMtPmhbMF0sIF9tbV94b3Jfc2kxMjgoIGZmMCwgX21tX3hvcl9zaTEyOCggcm93MSwgcm93MyApICkgKTsKKyAgU1RPUkVVKCAmUy0+aFs0XSwgX21tX3hvcl9zaTEyOCggZmYxLCBfbW1feG9yX3NpMTI4KCByb3cyLCByb3c0ICkgKSApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4gbm93IGluIGJ5dGVzICovCitpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IGlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIElzIHRoaXMgY29ycmVjdD8gKi8KK2ludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyU19PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyU19CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgKCB1aW50MzJfdCApUy0+YnVmbGVuICk7CisgIGJsYWtlMnNfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmUzMiggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiwgYXQgbGVhc3QsIHNob3VsZCBiZSB1aW50NjRfdC4gT3RoZXJzIGNhbiBiZSBzaXplX3QuICovCitpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMnNfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMnNfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMnMoIG91dCwgaW4sIE5VTEwsIEJMQUtFMlNfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyU19TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyU19LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworCisgICAgaWYoIGJsYWtlMnMoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJTX09VVEJZVEVTLCBpLCBCTEFLRTJTX0tFWUJZVEVTICkgPCAwIHx8CisgICAgICAgIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJzX2tleWVkX2thdFtpXSwgQkxBS0UyU19PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKaW5kZXggNjdlMWI2NS4uNWNlYTQyYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYnoybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKQEAgLTU5NCw3ICs1OTQsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2J6Mi5CWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJCWjJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgbWF4X2xlbmd0aDogUHlfc3NpemVfdD0tMQogCkBAIC02MTcsNyArNjE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzZTQxMDQ1ZGViMjQwYTMgaW5wdXQ9OTU1OGI0MjRjOGIwMDUxNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzZTQxMDQ1ZGViMjQwYTMgaW5wdXQ9NTJlMWZmYzY2YThlYTYyNF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IDliMTE5NGUuLjU4NmI3M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC0yMCwxMCArMjAsNiBAQAogICAgICA8ZW5jb2Rpbmc+X2RlY29kZShjaGFyX2J1ZmZlcl9vYmpbLGVycm9ycz0nc3RyaWN0J10pIC0+CiAgICAgICAgIChVbmljb2RlIG9iamVjdCwgYnl0ZXMgY29uc3VtZWQpCiAKLSAgIDxlbmNvZGluZz5fZW5jb2RlKCkgaW50ZXJmYWNlcyBhbHNvIGFjY2VwdCBub24tVW5pY29kZSBvYmplY3QgYXMKLSAgIGlucHV0LiBUaGUgb2JqZWN0cyBhcmUgdGhlbiBjb252ZXJ0ZWQgdG8gVW5pY29kZSB1c2luZwotICAgUHlVbmljb2RlX0Zyb21PYmplY3QoKSBwcmlvciB0byBhcHBseWluZyB0aGUgY29udmVyc2lvbi4KLQogICAgVGhlc2UgPGVuY29kaW5nPnMgYXJlIGF2YWlsYWJsZTogdXRmXzgsIHVuaWNvZGVfZXNjYXBlLAogICAgcmF3X3VuaWNvZGVfZXNjYXBlLCB1bmljb2RlX2ludGVybmFsLCBsYXRpbl8xLCBhc2NpaSAoNy1iaXQpLAogICAgbWJjcyAob24gd2luMzIpLgpAQCAtNjA4LDcgKzYwNCw3IEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19kZWNvZGUKQEAgLTYzMCw2ICs2MjYsMjUgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5vZW1fZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGExNjE3NjEyZjNmY2FkOCBpbnB1dD05NWI4YTkyYzQ0NmIwM2NkXSovCit7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKENQX09FTUNQLAorICAgICAgICBkYXRhLT5idWYsIGRhdGEtPmxlbiwgZXJyb3JzLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2RlY29kZQogICAgIGNvZGVwYWdlOiBpbnQKICAgICBkYXRhOiBQeV9idWZmZXIKQEAgLTY1MSw3ICs2NjYsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03MTgsNyArNzMzLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfN19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTcyNiwyNCArNzQxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1kMWE0NzU3OWU3OWNiZTE1XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfOF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTc1MSwxOSArNzU3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD0yYzIyZDQwNTMyZjA3MWYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD00MmUzYmE3M2M0MzkyZWVmXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLyogVGhpcyB2ZXJzaW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYnl0ZW9yZGVyIHBhcmFtZXRlciBvZiB0aGUKQEAgLTc3NSw3ICs3NzIsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIGJ5dGVvcmRlcjogaW50ID0gMAogICAgIC8KQEAgLTc4NCwyNCArNzgxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PTM5MzVhNDg5YjJkNTM4NWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PWZmNDY0MTZiMDRlZGI5NDRdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTgwOSwyNCArNzk3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWJjMjdkZjA1ZDFkMjBkZmVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWNiMzg1NDU1ZWE4ZjJmZTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfYmVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MzQsMTkgKzgxMywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD01YTY5ZDQxMTI3NjM0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD05MTE5OTk3MDY2YmRhZWZkXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC04NTgsNyArODI4LDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC04NjcsMjQgKzgzNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD1jNWU3N2RhODJmYmU1YzJhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04OTIsMjQgKzg1MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD05OTkzYjI1ZmUwODc3ODQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTE3LDI0ICs4NjksMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9NDU5NTYxN2IxODE2OTAwMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9ZDNlMGNjYWEwMjkyMDQzMV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTQyLDI0ICs4ODUsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTY1ZDllZWZjYTY1YjQ1NWFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05NjcsMjQgKzkwMSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD01YWEzM2U0YTEzMzM5MWFiXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubGF0aW5fMV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk5MiwyNCArOTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9MzBiMTFjOWU0OWE2NTE1MF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5hc2NpaV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTEwMTcsMjQgKzkzMywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ZDg3ZTI1YTEwYTU5M2ZlZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ODQzYTFkMjY4ZTZkZmE4ZV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY2hhcm1hcF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIG1hcHBpbmc6IG9iamVjdCA9IE5VTEwKICAgICAvCkBAIC0xMDQzLDIyICs5NTAsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9ODVmNDE3MjY2MWU4ZGFkOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9MDc1MmNkZTA3YTZkNmQwMF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMTA3NCwzNiArOTcyLDQyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD1kZTQ3MWUwODE1OTQ3NTUzXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Cit9CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm9lbV9lbmNvZGUKKyAgICBzdHI6IHVuaWNvZGUKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVkNTk4MmM3MzdkZTY0OSBpbnB1dD0zZmM1ZjAwMjhhYWQzY2RhXSovCit7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9PRU1DUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlCiAgICAgY29kZV9wYWdlOiBpbnQKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTExMTEsMjQgKzEwMTUsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Nzg2NDIxYWU2MTdkNjgwYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjE2LDYgKzExMDksOCBAQAogICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX1JFR0lTVEVSX0VSUk9SX01FVEhPRERFRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggMTBmYmNmZS4uNjYwODc5OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIDAgPD0gbGVmdGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogMCA8PSByaWdodGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBzaXplX3Qgc3RhdGU7ICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOworICAgIFB5X3NzaXplX3QgbWF4bGVuOyAgICAgICAgICAvKiBtYXhsZW4gaXMgLTEgZm9yIHVuYm91bmRlZCBkZXF1ZXMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IGRlcXVlb2JqZWN0OwogCkBAIC0xMDgsMjkgKzEwOCwxOCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAotLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCi0gICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgotKi8KLQotI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCi0KIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKLSNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxMAorI2RlZmluZSBNQVhGUkVFQkxPQ0tTIDE2CiBzdGF0aWMgUHlfc3NpemVfdCBudW1mcmVlYmxvY2tzID0gMDsKIHN0YXRpYyBibG9jayAqZnJlZWJsb2Nrc1tNQVhGUkVFQkxPQ0tTXTsKIAogc3RhdGljIGJsb2NrICoKLW5ld2Jsb2NrKFB5X3NzaXplX3QgbGVuKSB7CituZXdibG9jayh2b2lkKSB7CiAgICAgYmxvY2sgKmI7Ci0gICAgaWYgKGxlbiA+PSBNQVhfREVRVUVfTEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBibG9ja3MgdG8gdGhlIGRlcXVlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAobnVtZnJlZWJsb2NrcykgewogICAgICAgICBudW1mcmVlYmxvY2tzLS07CiAgICAgICAgIHJldHVybiBmcmVlYmxvY2tzW251bWZyZWVibG9ja3NdOwpAQCAtMTU0LDEyICsxNDMsNiBAQAogICAgIH0KIH0KIAotLyogWFhYIFRvZG86Ci0gICBJZiBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLCBtYWtlIHRoZQotICAgZGVxdWUgb2JqZWN0IDY0IGJ5dGUgYWxpZ25lZCBzbyB0aGF0IGFsbCBvZiB0aGUgZmllbGRzCi0gICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNzEsNyArMTU0LDcgQEAKICAgICBpZiAoZGVxdWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBiID0gbmV3YmxvY2soMCk7CisgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZGVxdWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwNyw3ICsxOTAsNyBAQAogICAgIFB5X1NJWkUoZGVxdWUpLS07CiAgICAgZGVxdWUtPnN0YXRlKys7CiAKLSAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKKyAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPCAwKSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtMjcwLDQyICsyNTMsMjQgQEAKIC8qIFRoZSBkZXF1ZSdzIHNpemUgbGltaXQgaXMgZC5tYXhsZW4uICBUaGUgbGltaXQgY2FuIGJlIHplcm8gb3IgcG9zaXRpdmUuCiAgKiBJZiB0aGVyZSBpcyBubyBsaW1pdCwgdGhlbiBkLm1heGxlbiA9PSAtMS4KICAqCi0gKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMgZ3Jvd24gcGFzdAotICogdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0IGJ5IHBvcHBpbmcgYW4KLSAqIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLAotICogYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KKyAqIEFmdGVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gYSBkZXF1ZSwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzaXplIGhhcworICogZ3Jvd24gcGFzdCB0aGUgbGltaXQuIElmIGl0IGhhcywgd2UgZ2V0IHRoZSBzaXplIGJhY2sgZG93biB0byB0aGUgbGltaXQKKyAqIGJ5IHBvcHBpbmcgYW4gaXRlbSBvZmYgb2YgdGhlIG9wcG9zaXRlIGVuZC4gIFRoZSBtZXRob2RzIHRoYXQgY2FuCisgKiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLCBhcHBlbmRsZWZ0KCksIGV4dGVuZCgpLCBhbmQgZXh0ZW5kbGVmdCgpLgorICoKKyAqIFRoZSBtYWNybyB0byBjaGVjayB3aGV0aGVyIGEgZGVxdWUgbmVlZHMgdG8gYmUgdHJpbW1lZCB1c2VzIGEgc2luZ2xlCisgKiB1bnNpZ25lZCB0ZXN0IHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIDAgPD0gbWF4bGVuIDwgUHlfU0laRShkZXF1ZSkuCiAgKi8KIAotc3RhdGljIHZvaWQKLWRlcXVlX3RyaW1fcmlnaHQoZGVxdWVvYmplY3QgKmRlcXVlKQotewotICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgewotICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOwotICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7Ci0gICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICB9Ci19CisjZGVmaW5lIE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikgKChzaXplX3QpKG1heGxlbikgPCAoc2l6ZV90KShQeV9TSVpFKGRlcXVlKSkpCiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV90cmltX2xlZnQoZGVxdWVvYmplY3QgKmRlcXVlKQorc3RhdGljIGludAorZGVxdWVfYXBwZW5kX2ludGVybmFsKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbWF4bGVuKQogewotICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgewotICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOwotICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgfQotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCi17Ci0gICAgZGVxdWUtPnN0YXRlKys7CiAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIENIRUNLX0VORChkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CkBAIC0zMTMsMjQgKzI3OCwzNiBAQAogICAgICAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOwogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IC0xOwogICAgIH0KLSAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKKyAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcGxlZnQoZGVxdWUsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgIGlmIChkZXF1ZV9hcHBlbmRfaW50ZXJuYWwoZGVxdWUsIGl0ZW0sIGRlcXVlLT5tYXhsZW4pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLCAiQWRkIGFuIGVsZW1lbnQgdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfYXBwZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQorc3RhdGljIGludAorZGVxdWVfYXBwZW5kbGVmdF9pbnRlcm5hbChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IG1heGxlbikKIHsKLSAgICBkZXF1ZS0+c3RhdGUrKzsKICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgIGlmIChiID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgYi0+cmlnaHRsaW5rID0gZGVxdWUtPmxlZnRibG9jazsKICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rKTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmsgPSBiOwpAQCAtMzM4LDM3ICszMTUsNjUgQEAKICAgICAgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOwogICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQkxPQ0tMRU47CiAgICAgfQotICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICBkZXF1ZV90cmltX3JpZ2h0KGRlcXVlKTsKKyAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgZGVxdWUtPm1heGxlbikpIHsKKyAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfYXBwZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICBpZiAoZGVxdWVfYXBwZW5kbGVmdF9pbnRlcm5hbChkZXF1ZSwgaXRlbSwgZGVxdWUtPm1heGxlbikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGFwcGVuZGxlZnRfZG9jLCAiQWRkIGFuIGVsZW1lbnQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIik7CiAKK3N0YXRpYyBQeU9iamVjdCoKK2ZpbmFsaXplX2l0ZXJhdG9yKFB5T2JqZWN0ICppdCkKK3sKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X0RFQ1JFRihpdCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CiAKIC8qIFJ1biBhbiBpdGVyYXRvciB0byBleGhhdXN0aW9uLiAgU2hvcnRjdXQgZm9yCiAgICB0aGUgZXh0ZW5kL2V4dGVuZGxlZnQgbWV0aG9kcyB3aGVuIG1heGxlbiA9PSAwLiAqLwogc3RhdGljIFB5T2JqZWN0KgogY29uc3VtZV9pdGVyYXRvcihQeU9iamVjdCAqaXQpCiB7CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOwogICAgIFB5T2JqZWN0ICppdGVtOwogCi0gICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OworICAgIHdoaWxlICgoaXRlbSA9IGl0ZXJuZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBmaW5hbGl6ZV9pdGVyYXRvcihpdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9leHRlbmQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKKyAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgUHlfc3NpemVfdCBtYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOwogCiAgICAgLyogSGFuZGxlIGNhc2Ugd2hlcmUgaWQoZGVxdWUpID09IGlkKGl0ZXJhYmxlKSAqLwogICAgIGlmICgoUHlPYmplY3QgKilkZXF1ZSA9PSBpdGVyYWJsZSkgewpAQCAtMzgxLDYgKzM4NiwxMyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG1heGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7CisKICAgICAvKiBTcGFjZSBzYXZpbmcgaGV1cmlzdGljLiAgU3RhcnQgZmlsbGluZyBmcm9tIHRoZSBsZWZ0ICovCiAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtMzg5LDE3ICs0MDEsMTAgQEAKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAwOwogICAgIH0KIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOwotCi0gICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKKyAgICB3aGlsZSAoKGl0ZW0gPSBpdGVybmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewotICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CkBAIC00MTUsMTQgKzQyMCwxNCBAQAogICAgICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgICAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOworICAgICAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBmaW5hbGl6ZV9pdGVyYXRvcihpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLApAQCAtNDMyLDYgKzQzNyw4IEBACiBkZXF1ZV9leHRlbmRsZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIFB5X3NzaXplX3QgbWF4bGVuID0gZGVxdWUtPm1heGxlbjsKIAogICAgIC8qIEhhbmRsZSBjYXNlIHdoZXJlIGlkKGRlcXVlKSA9PSBpZChpdGVyYWJsZSkgKi8KICAgICBpZiAoKFB5T2JqZWN0ICopZGVxdWUgPT0gaXRlcmFibGUpIHsKQEAgLTQ0NCw2ICs0NTEsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXhsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOworCiAgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgcmlnaHQgKi8KICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC00NTIsMTcgKzQ2NiwxMCBAQAogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMjsKICAgICB9CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IDApCi0gICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKLQotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CisgICAgd2hpbGUgKChpdGVtID0gaXRlcm5leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChkZXF1ZS0+bGVmdGluZGV4ID09IDApIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwpAQCAtNDc4LDE0ICs0ODUsMTQgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CisgICAgICAgIGlmIChORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBQeURvY19TVFJWQVIoZXh0ZW5kbGVmdF9kb2MsCkBAIC01MDQsNyArNTExLDQwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKmRlcXVlX2NvcHkoUHlPYmplY3QgKmRlcXVlKTsKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBkZXF1ZW9iamVjdCAqb2xkX2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWU7CisgICAgaWYgKFB5X1RZUEUoZGVxdWUpID09ICZkZXF1ZV90eXBlKSB7CisgICAgICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgICAgIFB5T2JqZWN0ICpydjsKKworICAgICAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9uZXcoJmRlcXVlX3R5cGUsIChQeU9iamVjdCAqKU5VTEwsIChQeU9iamVjdCAqKU5VTEwpOworICAgICAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbmV3X2RlcXVlLT5tYXhsZW4gPSBvbGRfZGVxdWUtPm1heGxlbjsKKyAgICAgICAgLyogRmFzdCBwYXRoIGZvciB0aGUgZGVxdWVfcmVwZWF0KCkgY29tbW9uIGNhc2Ugd2hlcmUgbGVuKGRlcXVlKSA9PSAxICovCisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IG9sZF9kZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW29sZF9kZXF1ZS0+bGVmdGluZGV4XTsKKyAgICAgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKG5ld19kZXF1ZSwgaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBydiA9IGRlcXVlX2V4dGVuZChuZXdfZGVxdWUsIGRlcXVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocnYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfZGVxdWU7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2xkX2RlcXVlLT5tYXhsZW4gPCAwKQorICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPIiwgZGVxdWUsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiT2kiLAorICAgICAgICAgICAgZGVxdWUsIG9sZF9kZXF1ZS0+bWF4bGVuLCBOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKGNvcHlfZG9jLCAiUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIGEgZGVxdWUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9jb25jYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqb3RoZXIpCkBAIC01MzQsMzggKzU3NCwxMDIgQEAKICAgICByZXR1cm4gbmV3X2RlcXVlOwogfQogCi1zdGF0aWMgdm9pZCBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpOworc3RhdGljIHZvaWQKK2RlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBibG9jayAqYjsKKyAgICBibG9jayAqcHJldmJsb2NrOworICAgIGJsb2NrICpsZWZ0YmxvY2s7CisgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7CisgICAgUHlfc3NpemVfdCBuLCBtOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5T2JqZWN0ICoqaXRlbXB0ciwgKipsaW1pdDsKKworICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCisgICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCisgICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCisgICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQorICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKKworICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCisgICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgorICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKKyAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgorICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgorICAgICovCisKKyAgICBiID0gbmV3YmxvY2soKTsKKyAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGdvdG8gYWx0ZXJuYXRlX21ldGhvZDsKKyAgICB9CisKKyAgICAvKiBSZW1lbWJlciB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCAqLworICAgIG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisKKyAgICAvKiBTZXQgdGhlIGRlcXVlIHRvIGJlIGVtcHR5IHVzaW5nIHRoZSBuZXdseSBhbGxvY2F0ZWQgYmxvY2sgKi8KKyAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7CisgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKKyAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CisgICAgZGVxdWUtPmxlZnRibG9jayA9IGI7CisgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOworICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOworICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOworICAgIGRlcXVlLT5zdGF0ZSsrOworCisgICAgLyogTm93IHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4IGFyZSBkaXNjb25uZWN0ZWQgZnJvbQorICAgICAgIHRoZSBlbXB0eSBkZXF1ZSBhbmQgd2UgY2FuIHVzZSB0aGVtIHRvIGRlY3JlZiB0aGUgcG9pbnRlcnMuCisgICAgKi8KKyAgICBtID0gKEJMT0NLTEVOIC0gbGVmdGluZGV4ID4gbikgPyBuIDogQkxPQ0tMRU4gLSBsZWZ0aW5kZXg7CisgICAgaXRlbXB0ciA9ICZsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4XTsKKyAgICBsaW1pdCA9IGl0ZW1wdHIgKyBtOworICAgIG4gLT0gbTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoaXRlbXB0ciA9PSBsaW1pdCkgeworICAgICAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIENIRUNLX05PVF9FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOworICAgICAgICAgICAgcHJldmJsb2NrID0gbGVmdGJsb2NrOworICAgICAgICAgICAgbGVmdGJsb2NrID0gbGVmdGJsb2NrLT5yaWdodGxpbms7CisgICAgICAgICAgICBtID0gKG4gPiBCTE9DS0xFTikgPyBCTE9DS0xFTiA6IG47CisgICAgICAgICAgICBpdGVtcHRyID0gbGVmdGJsb2NrLT5kYXRhOworICAgICAgICAgICAgbGltaXQgPSBpdGVtcHRyICsgbTsKKyAgICAgICAgICAgIG4gLT0gbTsKKyAgICAgICAgICAgIGZyZWVibG9jayhwcmV2YmxvY2spOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSAqKGl0ZW1wdHIrKyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9CisgICAgQ0hFQ0tfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKKyAgICBmcmVlYmxvY2sobGVmdGJsb2NrKTsKKyAgICByZXR1cm47CisKKyAgYWx0ZXJuYXRlX21ldGhvZDoKKyAgICB3aGlsZSAoUHlfU0laRShkZXF1ZSkpIHsKKyAgICAgICAgaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK2RlcXVlX2NsZWFybWV0aG9kKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBYWFggYWRkIGEgc3BlY2lhbCBjYXNlIGZvciB3aGVuIG1heGxlbiBpcyBkZWZpbmVkICovCi0gICAgaWYgKG4gPCAwKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIGlmIChuID4gMCAmJiBQeV9TSVpFKGRlcXVlKSA+IE1BWF9ERVFVRV9MRU4gLyBuKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX25ldygmZGVxdWVfdHlwZSwgKFB5T2JqZWN0ICopTlVMTCwgKFB5T2JqZWN0ICopTlVMTCk7Ci0gICAgbmV3X2RlcXVlLT5tYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOwotCi0gICAgZm9yICggOyBuIDsgbi0tKSB7Ci0gICAgICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZChuZXdfZGVxdWUsIChQeU9iamVjdCAqKWRlcXVlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X2RlcXVlOworICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorUHlEb2NfU1RSVkFSKGNsZWFyX2RvYywgIlJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUuIik7CisKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9pbnBsYWNlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKIHsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBtLCBzaXplOwogICAgIFB5T2JqZWN0ICpzZXE7CiAgICAgUHlPYmplY3QgKnJ2OwogCkBAIC01ODEsMjcgKzY4NSw0NyBAQAogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiAgICAgfQogCi0gICAgaWYgKHNpemUgPiBNQVhfREVRVUVfTEVOIC8gbikgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0KICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIC8qIGNvbW1vbiBjYXNlLCByZXBlYXRpbmcgYSBzaW5nbGUgZWxlbWVudCAqLwogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF07CiAKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCisgICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID49IDAgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCiAgICAgICAgICAgICBuID0gZGVxdWUtPm1heGxlbjsKIAotICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7IGkrKykgewotICAgICAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQoZGVxdWUsIGl0ZW0pOwotICAgICAgICAgICAgaWYgKHJ2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyApIHsKKyAgICAgICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKKyAgICAgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CisgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKGRlcXVlKSArPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYi0+bGVmdGxpbmsgPSBkZXF1ZS0+cmlnaHRibG9jazsKKyAgICAgICAgICAgICAgICBDSEVDS19FTkQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOworICAgICAgICAgICAgICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG0gPSBuIC0gMSAtIGk7CisgICAgICAgICAgICBpZiAobSA+IEJMT0NLTEVOIC0gMSAtIGRlcXVlLT5yaWdodGluZGV4KQorICAgICAgICAgICAgICAgIG0gPSBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleDsKKyAgICAgICAgICAgIGkgKz0gbTsKKyAgICAgICAgICAgIHdoaWxlIChtLS0pIHsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X1NJWkUoZGVxdWUpICs9IGk7CiAgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKICAgICB9CiAKKyAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU1NJWkVfVF9NQVggLyAoc2l6ZV90KW4pIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCiAgICAgc2VxID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKICAgICBpZiAoc2VxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBzZXE7CkBAIC02MTksNiArNzQzLDIwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQoreworICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfY29weSgoUHlPYmplY3QgKikgZGVxdWUpOworICAgIGlmIChuZXdfZGVxdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcnYgPSBkZXF1ZV9pbnBsYWNlX3JlcGVhdChuZXdfZGVxdWUsIG4pOworICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgIHJldHVybiBydjsKK30KKwogLyogVGhlIHJvdGF0ZSgpIG1ldGhvZCBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyB1c2VkIGludGVybmFsbHkKIGFzIGEgcHJpbWl0aXZlIGZvciBvdGhlciBtZXRob2RzLgogCkBAIC02NzEsNyArODA5LDcgQEAKICAgICB3aGlsZSAobiA+IDApIHsKICAgICAgICAgaWYgKGxlZnRpbmRleCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKGxlbik7CisgICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfQpAQCAtNzAyLDcgKzg0MCw3IEBACiAgICAgICAgICAgICAgICAgKihkZXN0KyspID0gKihzcmMrKyk7CiAgICAgICAgICAgICB9IHdoaWxlICgtLW0pOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyaWdodGluZGV4IDwgMCkgewogICAgICAgICAgICAgYXNzZXJ0KGxlZnRibG9jayAhPSByaWdodGJsb2NrKTsKICAgICAgICAgICAgIGFzc2VydChiID09IE5VTEwpOwogICAgICAgICAgICAgYiA9IHJpZ2h0YmxvY2s7CkBAIC03MTUsNyArODUzLDcgQEAKICAgICB3aGlsZSAobiA8IDApIHsKICAgICAgICAgaWYgKHJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKGxlbik7CisgICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfQpAQCAtNzkwLDExICs5MjgsMTEgQEAKICAgICBibG9jayAqcmlnaHRibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXggPSBkZXF1ZS0+cmlnaHRpbmRleDsKLSAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSAvIDI7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpID4+IDE7CiAgICAgUHlPYmplY3QgKnRtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgLyogVmFsaWRhdGUgdGhhdCBwb2ludGVycyBoYXZlbid0IG1ldCBpbiB0aGUgbWlkZGxlICovCiAgICAgICAgIGFzc2VydChsZWZ0YmxvY2sgIT0gcmlnaHRibG9jayB8fCBsZWZ0aW5kZXggPCByaWdodGluZGV4KTsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2spOwpAQCAtODE0LDcgKzk1Miw3IEBACiAKICAgICAgICAgLyogU3RlcCBiYWNrd2FyZHMgd2l0aCB0aGUgcmlnaHQgYmxvY2svaW5kZXggcGFpciAqLwogICAgICAgICByaWdodGluZGV4LS07Ci0gICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyaWdodGluZGV4IDwgMCkgewogICAgICAgICAgICAgcmlnaHRibG9jayA9IHJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgcmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMTsKICAgICAgICAgfQpAQCAtODMxLDIwICs5NjksMTkgQEAKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7Ci0gICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBpbnQgY21wOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICBuKys7CisgICAgd2hpbGUgKC0tbikgewogICAgICAgICBDSEVDS19OT1RfRU5EKGIpOwogICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7Ci0gICAgICAgIGlmIChjbXAgPiAwKQotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY291bnQgKz0gY21wOwogCiAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC04NzEsMTIgKzEwMDgsMTIgQEAKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7Ci0gICAgUHlfc3NpemVfdCBpOwogICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBpbnQgY21wOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICBuKys7CisgICAgd2hpbGUgKC0tbikgewogICAgICAgICBDSEVDS19OT1RfRU5EKGIpOwogICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CkBAIC05MDYsMTEgKzEwNDMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9pbmRleChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKGRlcXVlKTsKKyAgICBQeV9zc2l6ZV90IGksIG4sIHN0YXJ0PTAsIHN0b3A9UHlfU0laRShkZXF1ZSk7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGJsb2NrICpiID0gZGVxdWUtPmxlZnRibG9jazsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CisgICAgaW50IGNtcDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPJk8mOmluZGV4IiwgJnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0YXJ0LApAQCAtOTI4LDIyICsxMDY2LDMyIEBACiAgICAgfQogICAgIGlmIChzdG9wID4gUHlfU0laRShkZXF1ZSkpCiAgICAgICAgIHN0b3AgPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBpZiAoc3RhcnQgPiBzdG9wKQorICAgICAgICBzdGFydCA9IHN0b3A7CisgICAgYXNzZXJ0KDAgPD0gc3RhcnQgJiYgc3RhcnQgPD0gc3RvcCAmJiBzdG9wIDw9IFB5X1NJWkUoZGVxdWUpKTsKIAotICAgIGZvciAoaT0wIDsgaTxzdG9wIDsgaSsrKSB7Ci0gICAgICAgIGlmIChpID49IHN0YXJ0KSB7Ci0gICAgICAgICAgICBpbnQgY21wOwotICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKLSAgICAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKLSAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgLyogWFhYIFJlcGxhY2UgdGhpcyBsb29wIHdpdGggZmFzdGVyIGNvZGUgZnJvbSBkZXF1ZV9pdGVtKCkgKi8KKyAgICBmb3IgKGk9MCA7IGk8c3RhcnQgOyBpKyspIHsKKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgbiA9IHN0b3AgLSBpICsgMTsKKyAgICB3aGlsZSAoLS1uKSB7CisgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKKyAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHN0b3AgLSBuKTsKKyAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKHN0YXJ0X3N0YXRlICE9IGRlcXVlLT5zdGF0ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpbmRleCsrOwogICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKQEAgLTEwMzcsODQgKzExODUsMTAgQEAKIFB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAogIkQucmVtb3ZlKHZhbHVlKSAtLSByZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2YWx1ZS4iKTsKIAotc3RhdGljIHZvaWQKLWRlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBibG9jayAqYjsKLSAgICBibG9jayAqcHJldmJsb2NrOwotICAgIGJsb2NrICpsZWZ0YmxvY2s7Ci0gICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuOwotICAgIFB5T2JqZWN0ICppdGVtOwotCi0gICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIC8qIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyBhIGRlcXVlLCBkZWNyZWZzIGNhbiBjYXVzZSB0aGUKLSAgICAgICBkZXF1ZSB0byBtdXRhdGUuICBUbyBhdm9pZCBmYXRhbCBjb25mdXNpb24sIHdlIGhhdmUgdG8gbWFrZSB0aGUKLSAgICAgICBkZXF1ZSBlbXB0eSBiZWZvcmUgY2xlYXJpbmcgdGhlIGJsb2NrcyBhbmQgbmV2ZXIgcmVmZXIgdG8KLSAgICAgICBhbnl0aGluZyB2aWEgZGVxdWUtPnJlZiB3aGlsZSBjbGVhcmluZy4gIChUaGlzIGlzIHRoZSBzYW1lCi0gICAgICAgdGVjaG5pcXVlIHVzZWQgZm9yIGNsZWFyaW5nIGxpc3RzLCBzZXRzLCBhbmQgZGljdHMuKQotCi0gICAgICAgTWFraW5nIHRoZSBkZXF1ZSBlbXB0eSByZXF1aXJlcyBhbGxvY2F0aW5nIGEgbmV3IGVtcHR5IGJsb2NrLiAgSW4KLSAgICAgICB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCBtZW1vcnkgaXMgZnVsbCwgd2UgZmFsbCBiYWNrIHRvIGFuCi0gICAgICAgYWx0ZXJuYXRlIG1ldGhvZCB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBibG9jay4gIFJlcGVhdGluZwotICAgICAgIHBvcHMgaW4gYSB3aGlsZS1sb29wIGlzIHNsb3dlciwgcG9zc2libHkgcmUtZW50cmFudCAoYW5kIGEgY2xldmVyCi0gICAgICAgYWR2ZXJzYXJ5IGNvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHRlcm1pbmF0ZSkuCi0gICAgKi8KLQotICAgIGIgPSBuZXdibG9jaygwKTsKLSAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gYWx0ZXJuYXRlX21ldGhvZDsKLSAgICB9Ci0KLSAgICAvKiBSZW1lbWJlciB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCAqLwotICAgIGxlZnRibG9jayA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKLSAgICBuID0gUHlfU0laRShkZXF1ZSk7Ci0KLSAgICAvKiBTZXQgdGhlIGRlcXVlIHRvIGJlIGVtcHR5IHVzaW5nIHRoZSBuZXdseSBhbGxvY2F0ZWQgYmxvY2sgKi8KLSAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7Ci0gICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKLSAgICBQeV9TSVpFKGRlcXVlKSA9IDA7Ci0gICAgZGVxdWUtPmxlZnRibG9jayA9IGI7Ci0gICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOwotICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwotICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgIGRlcXVlLT5zdGF0ZSsrOwotCi0gICAgLyogTm93IHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4IGFyZSBkaXNjb25uZWN0ZWQgZnJvbQotICAgICAgIHRoZSBlbXB0eSBkZXF1ZSBhbmQgd2UgY2FuIHVzZSB0aGVtIHRvIGRlY3JlZiB0aGUgcG9pbnRlcnMuCi0gICAgKi8KLSAgICB3aGlsZSAobi0tKSB7Ci0gICAgICAgIGl0ZW0gPSBsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4XTsKLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICBsZWZ0aW5kZXgrKzsKLSAgICAgICAgaWYgKGxlZnRpbmRleCA9PSBCTE9DS0xFTiAmJiBuKSB7Ci0gICAgICAgICAgICBDSEVDS19OT1RfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKLSAgICAgICAgICAgIHByZXZibG9jayA9IGxlZnRibG9jazsKLSAgICAgICAgICAgIGxlZnRibG9jayA9IGxlZnRibG9jay0+cmlnaHRsaW5rOwotICAgICAgICAgICAgbGVmdGluZGV4ID0gMDsKLSAgICAgICAgICAgIGZyZWVibG9jayhwcmV2YmxvY2spOwotICAgICAgICB9Ci0gICAgfQotICAgIENIRUNLX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7Ci0gICAgZnJlZWJsb2NrKGxlZnRibG9jayk7Ci0gICAgcmV0dXJuOwotCi0gIGFsdGVybmF0ZV9tZXRob2Q6Ci0gICAgd2hpbGUgKFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOwotICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBpbnQKIHZhbGlkX2luZGV4KFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBsaW1pdCkKIHsKLSAgICAvKiBUaGUgY2FzdCB0byBzaXplX3QgbGV0IHVzIHVzZSBqdXN0IGEgc2luZ2xlIGNvbXBhcmlzb24KKyAgICAvKiBUaGUgY2FzdCB0byBzaXplX3QgbGV0cyB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCiAgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KICAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQpAQCAtMTE0MywxNCArMTIxNywxNiBAQAogICAgICAgICBpID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgJSBCTE9DS0xFTik7CiAgICAgICAgIGlmIChpbmRleCA8IChQeV9TSVpFKGRlcXVlKSA+PiAxKSkgewogICAgICAgICAgICAgYiA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgbisrOworICAgICAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKICAgICAgICAgICAgICAgICAgICAgKChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEpKQogICAgICAgICAgICAgICAgICAgICAvIEJMT0NLTEVOIC0gbik7CiAgICAgICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7Ci0gICAgICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgbisrOworICAgICAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTk0LDE0ICsxMjcwLDE2IEBACiAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICBuKys7CisgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCiAgICAgICAgICAgICAgICAgKChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEpKQogICAgICAgICAgICAgICAgIC8gQkxPQ0tMRU4gLSBuKTsKICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwotICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICBuKys7CisgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CiAgICAgfQogICAgIFB5X0lOQ1JFRih2KTsKQEAgLTEyMTEsMTUgKzEyODksNiBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfY2xlYXJtZXRob2QoZGVxdWVvYmplY3QgKmRlcXVlKQotewotICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotUHlEb2NfU1RSVkFSKGNsZWFyX2RvYywgIlJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUuIik7Ci0KIHN0YXRpYyB2b2lkCiBkZXF1ZV9kZWFsbG9jKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKQEAgLTEyNDMsNiArMTMxMiw3IEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICBQeV9zc2l6ZV90IGluZGV4bG8gPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgaW5kZXhoaWdoOwogCiAgICAgZm9yIChiID0gZGVxdWUtPmxlZnRibG9jazsgYiAhPSBkZXF1ZS0+cmlnaHRibG9jazsgYiA9IGItPnJpZ2h0bGluaykgewogICAgICAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPCBCTE9DS0xFTiA7IGluZGV4KyspIHsKQEAgLTEyNTEsNyArMTMyMSw4IEBACiAgICAgICAgIH0KICAgICAgICAgaW5kZXhsbyA9IDA7CiAgICAgfQotICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8PSBkZXF1ZS0+cmlnaHRpbmRleDsgaW5kZXgrKykgeworICAgIGluZGV4aGlnaCA9IGRlcXVlLT5yaWdodGluZGV4OworICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8PSBpbmRleGhpZ2g7IGluZGV4KyspIHsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBQeV9WSVNJVChpdGVtKTsKICAgICB9CkBAIC0xMjU5LDQ1ICsxMzMwLDMzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuID09IC0xKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPIiwgZGVxdWUsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiT2kiLAotICAgICAgICAgICAgZGVxdWUsICgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiwgTlVMTCk7Ci19Ci0KLVB5RG9jX1NUUlZBUihjb3B5X2RvYywgIlJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIGRlcXVlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfcmVkdWNlKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKnJlc3VsdCwgKmFzbGlzdDsKKyAgICBQeU9iamVjdCAqZGljdCwgKml0OwogICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWRlcXVlLCAmUHlJZF9fX2RpY3RfXyk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXNsaXN0ID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKLSAgICBpZiAoYXNsaXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKKyAgICB9CisKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoKFB5T2JqZWN0ICopZGVxdWUpOworICAgIGlmIChpdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgZGVxdWUtPm1heGxlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKU8iLCBQeV9UWVBFKGRlcXVlKSwgYXNsaXN0LCBQeV9Ob25lLCBkaWN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPbilPIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgZGVxdWUtPm1heGxlbiwgZGljdCk7CisKKyAgICBpZiAoZGVxdWUtPm1heGxlbiA8IDApIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKU5OIiwgUHlfVFlQRShkZXF1ZSksIGRpY3QsIGl0KTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICBQeV9ERUNSRUYoYXNsaXN0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pTk4iLCBQeV9UWVBFKGRlcXVlKSwgZGVxdWUtPm1heGxlbiwgZGljdCwgaXQpOworICAgIH0KIH0KIAogUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwpAQCAtMTMyMCw3ICsxMzc5LDcgQEAKICAgICAgICAgUHlfUmVwckxlYXZlKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gIT0gLTEpCisgICAgaWYgKCgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiA+PSAwKQogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZGVxdWUoJVIsIG1heGxlbj0lemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNsaXN0LCAoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4pOwogICAgIGVsc2UKQEAgLTEzODEsNyArMTQ0MCw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICBQeV9ERUNSRUYoeSk7Ci0gICAgICAgIGlmIChiID09IC0xKQorICAgICAgICBpZiAoYiA8IDApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogICAgIC8qIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiBvbmUgZGVxdWUgb3IgYm90aCAqLwpAQCAtMTQxNiw4ICsxNDc1LDE0IEBACiAgICAgUHlfc3NpemVfdCBtYXhsZW4gPSAtMTsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAibWF4bGVuIiwgMH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RhcmdzLCAifE9POmRlcXVlIiwga3dsaXN0LCAmaXRlcmFibGUsICZtYXhsZW5vYmopKQotICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGt3ZGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZXF1ZSgpIiwgMCwgMiwgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RhcmdzLCAifE9POmRlcXVlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlcmFibGUsICZtYXhsZW5vYmopKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAobWF4bGVub2JqICE9IE5VTEwgJiYgbWF4bGVub2JqICE9IFB5X05vbmUpIHsKICAgICAgICAgbWF4bGVuID0gUHlMb25nX0FzU3NpemVfdChtYXhsZW5vYmopOwogICAgICAgICBpZiAobWF4bGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0xNDQ2LDcgKzE1MTEsNyBAQAogICAgIFB5X3NzaXplX3QgYmxvY2tzOwogCiAgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShkZXF1ZSkpOwotICAgIGJsb2NrcyA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgKyBCTE9DS0xFTiAtIDEpIC8gQkxPQ0tMRU47CisgICAgYmxvY2tzID0gKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOwogICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxID09CiAgICAgICAgICAgIChibG9ja3MgLSAxKSAqIEJMT0NLTEVOICsgZGVxdWUtPnJpZ2h0aW5kZXgpOwogICAgIHJlcyArPSBibG9ja3MgKiBzaXplb2YoYmxvY2spOwpAQCAtMTQ2NSw3ICsxNTMwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9nZXRfbWF4bGVuKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAtMSkKKyAgICBpZiAoZGVxdWUtPm1heGxlbiA8IDApCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGVxdWUtPm1heGxlbik7CiB9CkBAIC0xODA2LDcgKzE4NzEsNyBAQAogICAgIGl0ZW0gPSBpdC0+Yi0+ZGF0YVtpdC0+aW5kZXhdOwogICAgIGl0LT5pbmRleC0tOwogICAgIGl0LT5jb3VudGVyLS07Ci0gICAgaWYgKGl0LT5pbmRleCA9PSAtMSAmJiBpdC0+Y291bnRlciA+IDApIHsKKyAgICBpZiAoaXQtPmluZGV4IDwgMCAmJiBpdC0+Y291bnRlciA+IDApIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChpdC0+Yi0+bGVmdGxpbmspOwogICAgICAgICBpdC0+YiA9IGl0LT5iLT5sZWZ0bGluazsKICAgICAgICAgaXQtPmluZGV4ID0gQkxPQ0tMRU4gLSAxOwpAQCAtMTk4MCw3ICsyMDQ1LDcgQEAKICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBkZC0+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjIzNSwxMyArMjMwMCwxNSBAQAogCiAgICAgICAgICAgICBvbGR2YWwgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBuZXd2YWwsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgfQpAQCAtMjI2Nyw3ICsyMzM0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihvbGR2YWwpOwogICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQorICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpIDwgMCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Nzdi5jIGIvTW9kdWxlcy9fY3N2LmMKaW5kZXggYjQyODI3OS4uN2E3ODU0MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3N2LmMKKysrIGIvTW9kdWxlcy9fY3N2LmMKQEAgLTYwLDEwICs2MCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUXVvdGVTdHlsZSBzdHlsZTsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiB9IFN0eWxlRGVzYzsKIAotc3RhdGljIFN0eWxlRGVzYyBxdW90ZV9zdHlsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CiAgICAgeyBRVU9URV9NSU5JTUFMLCAgICAiUVVPVEVfTUlOSU1BTCIgfSwKICAgICB7IFFVT1RFX0FMTCwgICAgICAgICJRVU9URV9BTEwiIH0sCiAgICAgeyBRVU9URV9OT05OVU1FUklDLCAiUVVPVEVfTk9OTlVNRVJJQyIgfSwKQEAgLTI4Niw3ICsyODYsNyBAQAogc3RhdGljIGludAogZGlhbGVjdF9jaGVja19xdW90aW5nKGludCBxdW90aW5nKQogewotICAgIFN0eWxlRGVzYyAqcXM7CisgICAgY29uc3QgU3R5bGVEZXNjICpxczsKIAogICAgIGZvciAocXMgPSBxdW90ZV9zdHlsZXM7IHFzLT5uYW1lOyBxcysrKSB7CiAgICAgICAgIGlmICgoaW50KXFzLT5zdHlsZSA9PSBxdW90aW5nKQpAQCAtNTE4LDE1ICs1MTgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY2FsbF9kaWFsZWN0KFB5T2JqZWN0ICpkaWFsZWN0X2luc3QsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmN0b3JfYXJnczsKLSAgICBQeU9iamVjdCAqZGlhbGVjdDsKLQotICAgIGN0b3JfYXJncyA9IFB5X0J1aWxkVmFsdWUoZGlhbGVjdF9pbnN0ID8gIihPKSIgOiAiKCkiLCBkaWFsZWN0X2luc3QpOwotICAgIGlmIChjdG9yX2FyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGlhbGVjdCA9IFB5T2JqZWN0X0NhbGwoKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZSwgY3Rvcl9hcmdzLCBrd2FyZ3MpOwotICAgIFB5X0RFQ1JFRihjdG9yX2FyZ3MpOwotICAgIHJldHVybiBkaWFsZWN0OworICAgIFB5T2JqZWN0ICp0eXBlID0gKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZTsKKyAgICBpZiAoZGlhbGVjdF9pbnN0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHR5cGUsICZkaWFsZWN0X2luc3QsIDEsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCBOVUxMLCAwLCBrd2FyZ3MpOworICAgIH0KIH0KIAogLyoKQEAgLTE2NDgsNyArMTY0Niw3IEBACiBQeUluaXRfX2Nzdih2b2lkKQogewogICAgIFB5T2JqZWN0ICptb2R1bGU7Ci0gICAgU3R5bGVEZXNjICpzdHlsZTsKKyAgICBjb25zdCBTdHlsZURlc2MgKnN0eWxlOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmRGlhbGVjdF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKaW5kZXggYjMyYTBjZS4uZGYzYWVkZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCkBAIC0xMTEsMTIgKzExMSw2IEBACiAjaWZuZGVmIElTX0lOVFJFU09VUkNFCiAjZGVmaW5lIElTX0lOVFJFU09VUkNFKHgpICgoKHNpemVfdCkoeCkgPj4gMTYpID09IDApCiAjZW5kaWYKLSMgaWZkZWYgX1dJTjMyX1dDRQotLyogVW5saWtlIGRlc2t0b3AgV2luZG93cywgV2luQ0UgaGFzIGJvdGggVyBhbmQgQSB2YXJpYW50cyBvZgotICAgR2V0UHJvY0FkZHJlc3MsIGJ1dCB0aGUgZGVmYXVsdCBXIHZlcnNpb24gaXMgbm90IHdoYXQgd2Ugd2FudCAqLwotIyAgdW5kZWYgR2V0UHJvY0FkZHJlc3MKLSMgIGRlZmluZSBHZXRQcm9jQWRkcmVzcyBHZXRQcm9jQWRkcmVzc0EKLSMgZW5kaWYKICNlbHNlCiAjaW5jbHVkZSAiY3R5cGVzX2RsZmNuLmgiCiAjZW5kaWYKQEAgLTQzNSw3ICs0MjksNyBAQAogICAgIHJldHVybiBTdHJ1Y3RVbmlvblR5cGVfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMsIDApOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2FkZHJlc3NfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KICJDLmZyb21fYWRkcmVzcyhpbnRlZ2VyKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTMsNyArNDQ3LDcgQEAKICAgICByZXR1cm4gUHlDRGF0YV9BdEFkZHJlc3ModHlwZSwgYnVmKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQogIkMuZnJvbV9idWZmZXIob2JqZWN0LCBvZmZzZXQ9MCkgLT4gQyBpbnN0YW5jZVxuY3JlYXRlIGEgQyBpbnN0YW5jZSBmcm9tIGEgd3JpdGVhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBpbnQKQEAgLTUyNyw3ICs1MjEsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfY29weV9kb2NbXSA9CiAiQy5mcm9tX2J1ZmZlcl9jb3B5KG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHJlYWRhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NzIsNyArNTY2LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBpbl9kbGxfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgaW5fZGxsX2RvY1tdID0KICJDLmluX2RsbChkbGwsIG5hbWUpIC0+IEMgaW5zdGFuY2VcbmFjY2VzcyBhIEMgaW5zdGFuY2UgaW4gYSBkbGwiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjI5LDcgKzYyMyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGFkZHJlc3MpOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fcGFyYW1fZG9jW10gPQogIkNvbnZlcnQgYSBQeXRob24gb2JqZWN0IGludG8gYSBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlci4iOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ5NCw3ICsxNDg4LDcgQEAKIAogKi8KIAotc3RhdGljIGNoYXIgKlNJTVBMRV9UWVBFX0NIQVJTID0gImNiQmhIaUlsTGRmdXpacVFQWE92P2ciOworc3RhdGljIGNvbnN0IGNoYXIgU0lNUExFX1RZUEVfQ0hBUlNbXSA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNfd2NoYXJfcF9mcm9tX3BhcmFtKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUpCkBAIC0xNzM1LDcgKzE3MjksNyBAQAogICAgIGlmIChzdGdkICYmIENEYXRhT2JqZWN0X0NoZWNrKHZhbHVlKSAmJiBzdGdkLT5wcm90byAmJiBQeVVuaWNvZGVfQ2hlY2soc3RnZC0+cHJvdG8pKSB7CiAgICAgICAgIFB5Q0FyZ09iamVjdCAqcGFyZzsKIAotICAgICAgICBzd2l0Y2ggKF9QeVVuaWNvZGVfQXNTdHJpbmcoc3RnZC0+cHJvdG8pWzBdKSB7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0FzVVRGOChzdGdkLT5wcm90bylbMF0pIHsKICAgICAgICAgY2FzZSAneic6IC8qIGNfY2hhcl9wICovCiAgICAgICAgIGNhc2UgJ1onOiAvKiBjX3djaGFyX3AgKi8KICAgICAgICAgICAgIHBhcmcgPSBQeUNBcmdPYmplY3RfbmV3KCk7CkBAIC0xODQ3LDcgKzE4NDEsNyBAQAogCiAgICAgZGljdCA9IFB5T2JqZWN0X3N0Z2RpY3QoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgYXNzZXJ0KGRpY3QpOyAvKiBDYW5ub3QgYmUgTlVMTCBmb3IgQ0RhdGFPYmplY3QgaW5zdGFuY2VzICovCi0gICAgZm10ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhkaWN0LT5wcm90byk7CisgICAgZm10ID0gUHlVbmljb2RlX0FzVVRGOChkaWN0LT5wcm90byk7CiAgICAgYXNzZXJ0KGZtdCk7CiAKICAgICBmZCA9IF9jdHlwZXNfZ2V0X2ZpZWxkZGVzYyhmbXQpOwpAQCAtMjA3MSw3ICsyMDY1LDcgQEAKICAgICBhc3NlcnQoZGljdCk7CiAKICAgICAvKiBJIHRoaW5rIHdlIGNhbiByZWx5IG9uIHRoaXMgYmVpbmcgYSBvbmUtY2hhcmFjdGVyIHN0cmluZyAqLwotICAgIGZtdCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZGljdC0+cHJvdG8pOworICAgIGZtdCA9IFB5VW5pY29kZV9Bc1VURjgoZGljdC0+cHJvdG8pOwogICAgIGFzc2VydChmbXQpOwogCiAgICAgZmQgPSBfY3R5cGVzX2dldF9maWVsZGRlc2MoZm10KTsKQEAgLTI0MTksNyArMjQxMyw3IEBACiAgICAgY2hhciAqY3AgPSBzdHJpbmc7CiAgICAgc2l6ZV90IGJ5dGVzX2xlZnQ7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHN0cmluZykgLSAxID4gc2l6ZW9mKFB5X3NzaXplX3QpICogMik7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzdHJpbmcpIC0gMSA+IHNpemVvZihQeV9zc2l6ZV90KSAqIDIpOwogICAgIGNwICs9IHNwcmludGYoY3AsICIleCIsIFB5X1NBRkVfRE9XTkNBU1QoaW5kZXgsIFB5X3NzaXplX3QsIGludCkpOwogICAgIHdoaWxlICh0YXJnZXQtPmJfYmFzZSkgewogICAgICAgICBieXRlc19sZWZ0ID0gc2l6ZW9mKHN0cmluZykgLSAoY3AgLSBzdHJpbmcpIC0gMTsKQEAgLTMwODAsNyArMzA3NCw3IEBACiB9OwogCiAjaWZkZWYgTVNfV0lOMzIKLXN0YXRpYyBQUFJPQyBGaW5kQWRkcmVzcyh2b2lkICpoYW5kbGUsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0eXBlKQorc3RhdGljIFBQUk9DIEZpbmRBZGRyZXNzKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR5cGUpCiB7CiAjaWZkZWYgTVNfV0lONjQKICAgICAvKiB3aW42NCBoYXMgbm8gc3RkY2FsbCBjYWxsaW5nIGNvbnYsIHNvIGl0IHNob3VsZApAQCAtMzE0MCw3ICszMTM0LDcgQEAKICAgICAgICAgLyogc2ltcGxlIHBvaW50ZXIgdHlwZXMsIGNfdm9pZF9wLCBjX3djaGFyX3AsIEJTVFIsIC4uLiAqLwogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soZGljdC0+cHJvdG8pCiAvKiBXZSBvbmx5IGFsbG93IGNfdm9pZF9wLCBjX2NoYXJfcCBhbmQgY193Y2hhcl9wIGFzIGEgc2ltcGxlIG91dHB1dCBwYXJhbWV0ZXIgdHlwZSAqLwotICAgICAgICAmJiAoc3RyY2hyKCJQeloiLCBfUHlVbmljb2RlX0FzU3RyaW5nKGRpY3QtPnByb3RvKVswXSkpKSB7CisgICAgICAgICYmIChzdHJjaHIoIlB6WiIsIFB5VW5pY29kZV9Bc1VURjgoZGljdC0+cHJvdG8pWzBdKSkpIHsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC0zMjE0LDcgKzMyMDgsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0X25hbWUoUHlPYmplY3QgKm9iaiwgY2hhciAqKnBuYW1lKQorX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKipwbmFtZSkKIHsKICNpZmRlZiBNU19XSU4zMgogICAgIGlmIChQeUxvbmdfQ2hlY2sob2JqKSkgewpAQCAtMzIzMCw3ICszMjI0LDcgQEAKICAgICAgICAgcmV0dXJuICpwbmFtZSA/IDEgOiAwOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSAgICAgICAgKnBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhvYmopOworICAgICAgICAqcG5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KG9iaik7CiAgICAgICAgIHJldHVybiAqcG5hbWUgPyAxIDogMDsKICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTMyNDIsNyArMzIzNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlDRnVuY1B0cl9Gcm9tRGxsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBpbnQgKCogYWRkcmVzcykodm9pZCk7CiAgICAgUHlPYmplY3QgKmZ0dXBsZTsKICAgICBQeU9iamVjdCAqZGxsOwpAQCAtNTEzMiwxMyArNTEyNiwxMiBAQAogCiAjaWZkZWYgTVNfV0lOMzIKIAotc3RhdGljIGNoYXIgY29tZXJyb3JfZG9jW10gPSAiUmFpc2VkIHdoZW4gYSBDT00gbWV0aG9kIGNhbGwgZmFpbGVkLiI7CitzdGF0aWMgY29uc3QgY2hhciBjb21lcnJvcl9kb2NbXSA9ICJSYWlzZWQgd2hlbiBhIENPTSBtZXRob2QgY2FsbCBmYWlsZWQuIjsKIAogaW50CiBjb21lcnJvcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKmhyZXN1bHQsICp0ZXh0LCAqZGV0YWlsczsKLSAgICBQeUJhc2VFeGNlcHRpb25PYmplY3QgKmJzZWxmOwogICAgIFB5T2JqZWN0ICphOwogICAgIGludCBzdGF0dXM7CiAKQEAgLTUxNjUsOSArNTE1OCw4IEBACiAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoc2VsZiwgImRldGFpbHMiLCBkZXRhaWxzKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGJzZWxmID0gKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGY7CiAgICAgUHlfSU5DUkVGKGFyZ3MpOwotICAgIFB5X1NFVFJFRihic2VsZi0+YXJncywgYXJncyk7CisgICAgUHlfU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmFyZ3MsIGFyZ3MpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC01MjQ3LDcgKzUyMzksNyBAQAogICAgIGRpY3QgPSBQeVR5cGVfc3RnZGljdChhcmcpOwogICAgIGlmIChkaWN0KSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGljdC0+cHJvdG8pCi0gICAgICAgICAgICAmJiAoc3RyY2hyKCJzUHpVWlhPIiwgX1B5VW5pY29kZV9Bc1N0cmluZyhkaWN0LT5wcm90bylbMF0pKSkgeworICAgICAgICAgICAgJiYgKHN0cmNocigic1B6VVpYTyIsIFB5VW5pY29kZV9Bc1VURjgoZGljdC0+cHJvdG8pWzBdKSkpIHsKICAgICAgICAgICAgIC8qIHNpbXBsZSBwb2ludGVyIHR5cGVzLCBjX3ZvaWRfcCwgY193Y2hhcl9wLCBCU1RSLCAuLi4gKi8KICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC01NDk3LDE0ICs1NDg5LDE0IEBACiAjZW5kaWYKIAogLyogSWYgUlRMRF9MT0NBTCBpcyBub3QgZGVmaW5lZCAoV2luZG93cyEpLCBzZXQgaXQgdG8gemVyby4gKi8KLSNpZm5kZWYgUlRMRF9MT0NBTAorI2lmICFIQVZFX0RFQ0xfUlRMRF9MT0NBTAogI2RlZmluZSBSVExEX0xPQ0FMIDAKICNlbmRpZgogCiAvKiBJZiBSVExEX0dMT0JBTCBpcyBub3QgZGVmaW5lZCAoY3lnd2luKSwgc2V0IGl0IHRvIHRoZSBzYW1lIHZhbHVlIGFzCiAgICBSVExEX0xPQ0FMLgogKi8KLSNpZm5kZWYgUlRMRF9HTE9CQUwKKyNpZiAhSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAjZGVmaW5lIFJUTERfR0xPQkFMIFJUTERfTE9DQUwKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKaW5kZXggM2M3Zjg5Mi4uNjI5ZGRmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYwpAQCAtMjMzLDE2ICsyMzMsMTUgQEAKICAgICByZXR1cm4gKCpmdW5jKSh0YWJsZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX3FfYmhpbGZkcShzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkLCBQWV9MT05HX0xPTkcgcSkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19xX2JoaWxmZHEoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGQsIGxvbmcgbG9uZyBxKQogewotICAgIHJldHVybiAoUFlfTE9OR19MT05HKShiICsgaCArIGkgKyBsICsgZiArIGQgKyBxKTsKKyAgICByZXR1cm4gKGxvbmcgbG9uZykoYiArIGggKyBpICsgbCArIGYgKyBkICsgcSk7CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19xX2JoaWxmZChzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLCBkb3VibGUgZCkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19xX2JoaWxmZChzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLCBkb3VibGUgZCkKIHsKLSAgICByZXR1cm4gKFBZX0xPTkdfTE9ORykoYiArIGggKyBpICsgbCArIGYgKyBkKTsKKyAgICByZXR1cm4gKGxvbmcgbG9uZykoYiArIGggKyBpICsgbCArIGYgKyBkKTsKIH0KIAogRVhQT1JUKGludCkgX3Rlc3RmdW5jX2NhbGxiYWNrX2lfaWYoaW50IHZhbHVlLCBpbnQgKCpmdW5jKShpbnQpKQpAQCAtMjU1LDEwICsyNTQsMTAgQEAKICAgICByZXR1cm4gc3VtOwogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfY2FsbGJhY2tfcV9xZihQWV9MT05HX0xPTkcgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9MT05HX0xPTkcgKCpmdW5jKShQWV9MT05HX0xPTkcpKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX2NhbGxiYWNrX3FfcWYobG9uZyBsb25nIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nICgqZnVuYykobG9uZyBsb25nKSkKIHsKLSAgICBQWV9MT05HX0xPTkcgc3VtID0gMDsKKyAgICBsb25nIGxvbmcgc3VtID0gMDsKIAogICAgIHdoaWxlICh2YWx1ZSAhPSAwKSB7CiAgICAgICAgIHN1bSArPSBmdW5jKHZhbHVlKTsKQEAgLTI2Nyw4ICsyNjYsNiBAQAogICAgIHJldHVybiBzdW07CiB9CiAKLSNlbmRpZgotCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hhciAqbmFtZTsKICAgICBjaGFyICp2YWx1ZTsKQEAgLTM4NCw4ICszODEsOCBAQAogewogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBsYXN0X3RmX2FyZ19zOwotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgbGFzdF90Zl9hcmdfdTsKK0VYUE9SVChsb25nIGxvbmcpIGxhc3RfdGZfYXJnX3M7CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBsYXN0X3RmX2FyZ191OwogCiBzdHJ1Y3QgQklUUyB7CiAgICAgaW50IEE6IDEsIEI6MiwgQzozLCBEOjQsIEU6IDUsIEY6IDYsIEc6IDcsIEg6IDgsIEk6IDk7CkBAIC00NDgsOCArNDQ1LDggQEAKICAgICB7IE5VTEwsIE5VTEwsIDAsIE5VTEx9LAogfTsKIAotI2RlZmluZSBTIGxhc3RfdGZfYXJnX3MgPSAoUFlfTE9OR19MT05HKWMKLSNkZWZpbmUgVSBsYXN0X3RmX2FyZ191ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyljCisjZGVmaW5lIFMgbGFzdF90Zl9hcmdfcyA9IChsb25nIGxvbmcpYworI2RlZmluZSBVIGxhc3RfdGZfYXJnX3UgPSAodW5zaWduZWQgbG9uZyBsb25nKWMKIAogRVhQT1JUKHNpZ25lZCBjaGFyKSB0Zl9iKHNpZ25lZCBjaGFyIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGNoYXIpIHRmX0IodW5zaWduZWQgY2hhciBjKSB7IFU7IHJldHVybiBjLzM7IH0KQEAgLTQ1OSw4ICs0NTYsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgdGZfSSh1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgdGZfbChsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIHRmX0wodW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIHRmX3EoUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgdGZfUSh1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSB0Zl9xKGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIHRmX1EodW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSB0Zl9mKGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgdGZfZChkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIHRmX0QobG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC00NzQsOCArNDcxLDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIF9fc3RkY2FsbCBzX3RmX0kodW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIF9fc3RkY2FsbCBzX3RmX2wobG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSBfX3N0ZGNhbGwgc190Zl9MKHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9xKFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX1EodW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfcShsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9RKHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgX19zdGRjYWxsIHNfdGZfZihmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2QoZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9EKGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNDkwLDggKzQ4Nyw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSB0Zl9iSShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgdGZfYmwoc2lnbmVkIGNoYXIgeCwgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSB0Zl9iTChzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgdGZfYnEoc2lnbmVkIGNoYXIgeCwgUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgdGZfYnEoc2lnbmVkIGNoYXIgeCwgbG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSB0Zl9iZihzaWduZWQgY2hhciB4LCBmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIHRmX2JkKHNpZ25lZCBjaGFyIHgsIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgdGZfYkQoc2lnbmVkIGNoYXIgeCwgbG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC01MDYsOCArNTAzLDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIF9fc3RkY2FsbCBzX3RmX2JJKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSBfX3N0ZGNhbGwgc190Zl9ibChzaWduZWQgY2hhciB4LCBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JMKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9icShzaWduZWQgY2hhciB4LCBQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9icShzaWduZWQgY2hhciB4LCBsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIF9fc3RkY2FsbCBzX3RmX2JmKHNpZ25lZCBjaGFyIHgsIGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfYmQoc2lnbmVkIGNoYXIgeCwgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9iRChzaWduZWQgY2hhciB4LCBsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYwppbmRleCA5MTQxM2Q3Li5iOTU4ZjMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCkBAIC03Nyw3ICs3Nyw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1QcmludEVycm9yKGNoYXIgKm1zZywgLi4uKQorUHJpbnRFcnJvcihjb25zdCBjaGFyICptc2csIC4uLikKIHsKICAgICBjaGFyIGJ1Zls1MTJdOwogICAgIFB5T2JqZWN0ICpmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKaW5kZXggYWJkM2JjOS4uN2Q1NDJmYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKQEAgLTM4Miw3ICszODIsNyBAQAogICAgICAgICAgICB3aG9zZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgICAgbWFjaGluZSBtb2RlLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHByaXZpbGVkZ2VkIGluc3RydWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBwcml2aWxlZ2VkIGluc3RydWN0aW9uIik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OOgpAQCAtNDc0LDcgKzQ3NCw2IEBACiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLmwpOwogICAgICAgICBicmVhazsKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6CiAgICAgY2FzZSAnUSc6CiAgICAgICAgIHNwcmludGYoYnVmZmVyLApAQCAtNDg1LDcgKzQ4NCw2IEBACiAjZW5kaWYKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUucSk7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgY2FzZSAnZCc6CiAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiPGNwYXJhbSAnJWMnICglZik+IiwKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUuZCk7CkBAIC01OTMsOSArNTkxLDcgQEAKICAgICBzaG9ydCBoOwogICAgIGludCBpOwogICAgIGxvbmcgbDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBxOwotI2VuZGlmCisgICAgbG9uZyBsb25nIHE7CiAgICAgbG9uZyBkb3VibGUgRDsKICAgICBkb3VibGUgZDsKICAgICBmbG9hdCBmOwpAQCAtOTMwLDcgKzkyNiw3IEBACiAgKiBSYWlzZSBhIG5ldyBleGNlcHRpb24gJ2V4Y19jbGFzcycsIGFkZGluZyBhZGRpdGlvbmFsIHRleHQgdG8gdGhlIG9yaWdpbmFsCiAgKiBleGNlcHRpb24gc3RyaW5nLgogICovCi12b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNoYXIgKmZtdCwgLi4uKQordm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhcmdzOwogICAgIFB5T2JqZWN0ICp0cCwgKnYsICp0YiwgKnMsICpjbHNfc3RyLCAqbXNnX3N0cjsKQEAgLTEyMDMsNyArMTE5OSw3IEBACiAKICNpZmRlZiBNU19XSU4zMgogCi1zdGF0aWMgY2hhciBmb3JtYXRfZXJyb3JfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0X2Vycm9yX2RvY1tdID0KICJGb3JtYXRFcnJvcihbaW50ZWdlcl0pIC0+IHN0cmluZ1xuXAogXG5cCiBDb252ZXJ0IGEgd2luMzIgZXJyb3IgY29kZSBpbnRvIGEgc3RyaW5nLiBJZiB0aGUgZXJyb3IgY29kZSBpcyBub3RcblwKQEAgLTEyMjcsNyArMTIyMyw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgbG9hZF9saWJyYXJ5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGxvYWRfbGlicmFyeV9kb2NbXSA9CiAiTG9hZExpYnJhcnkobmFtZSkgLT4gaGFuZGxlXG5cCiBcblwKIExvYWQgYW4gZXhlY3V0YWJsZSAodXN1YWxseSBhIERMTCksIGFuZCByZXR1cm4gYSBoYW5kbGUgdG8gaXQuXG5cCkBAIC0xMjU2LDcgKzEyNTIsNyBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBjaGFyIGZyZWVfbGlicmFyeV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcmVlX2xpYnJhcnlfZG9jW10gPQogIkZyZWVMaWJyYXJ5KGhhbmRsZSkgLT4gdm9pZFxuXAogXG5cCiBGcmVlIHRoZSBoYW5kbGUgb2YgYW4gZXhlY3V0YWJsZSBwcmV2aW91c2x5IGxvYWRlZCBieSBMb2FkTGlicmFyeS5cbiI7CkBAIC0xMjcxLDcgKzEyNjcsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1zdGF0aWMgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvcHlfY29tX3BvaW50ZXJfZG9jW10gPQogIkNvcHlDb21Qb2ludGVyKHNyYywgZHN0KSAtPiBIUkVTVUxUIHZhbHVlXG4iOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTMwOSw3ICsxMzA1LDcgQEAKICAgICBQeU9iamVjdCAqbmFtZSwgKm5hbWUyOwogICAgIGNoYXIgKm5hbWVfc3RyOwogICAgIHZvaWQgKiBoYW5kbGU7Ci0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaW50IG1vZGUgPSBSVExEX05PVyB8IFJUTERfTE9DQUw7CiAjZWxzZQogICAgIC8qIGN5Z3dpbiBkb2Vzbid0IGRlZmluZSBSVExEX0xPQ0FMICovCkBAIC0xNDQxLDcgKzE0MzcsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBmdW5jdGlvbnMKICAqLwotc3RhdGljIGNoYXIgc2l6ZW9mX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHNpemVvZl9kb2NbXSA9CiAic2l6ZW9mKEMgdHlwZSkgLT4gaW50ZWdlclxuIgogInNpemVvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBzaXplIGluIGJ5dGVzIG9mIGEgQyBpbnN0YW5jZSI7CkBAIC0xNDYyLDcgKzE0NTgsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciBhbGlnbm1lbnRfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYWxpZ25tZW50X2RvY1tdID0KICJhbGlnbm1lbnQoQyB0eXBlKSAtPiBpbnRlZ2VyXG4iCiAiYWxpZ25tZW50KEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYSBDIGluc3RhbmNlIjsKQEAgLTE0ODUsNyArMTQ4MSw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyIGJ5cmVmX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGJ5cmVmX2RvY1tdID0KICJieXJlZihDIGluc3RhbmNlWywgb2Zmc2V0PTBdKSAtPiBieXJlZi1vYmplY3RcbiIKICJSZXR1cm4gYSBwb2ludGVyIGxvb2thbGlrZSB0byBhIEMgaW5zdGFuY2UsIG9ubHkgdXNhYmxlXG4iCiAiYXMgZnVuY3Rpb24gYXJndW1lbnQiOwpAQCAtMTUyOSw3ICsxNTI1LDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcGFyZzsKIH0KIAotc3RhdGljIGNoYXIgYWRkcmVzc29mX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFkZHJlc3NvZl9kb2NbXSA9CiAiYWRkcmVzc29mKEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEMgaW5zdGFuY2UgaW50ZXJuYWwgYnVmZmVyIjsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IGQ2NjZiZTUuLmE0MzU4NWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTM3OSwxNCArMzc5LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBleHBlY3RlZCBpbnN0ZWFkIG9mIGZsb2F0Iik7CkBAIC00MDIsMjMgKzQwMCwyMSBAQAogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSB1bnNpZ25lZCBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqcCkKK2dldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBleHBlY3RlZCBpbnN0ZWFkIG9mIGZsb2F0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqcCA9IHg7CiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZgotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEludGVnZXIgZmllbGRzLCB3aXRoIGJpdGZpZWxkIHN1cHBvcnQKICAqLwpAQCAtNzE1LDE0ICs3MTEsNiBAQAogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0M5OV9CT09MCi0jZGVmaW5lIEJPT0xfVFlQRSBfQm9vbAotI2Vsc2UKLSNkZWZpbmUgQk9PTF9UWVBFIGNoYXIKLSN1bmRlZiBTSVpFT0ZfX0JPT0wKLSNkZWZpbmUgU0laRU9GX19CT09MIDEKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogYm9vbF9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKQEAgLTczMCwxMCArNzE4LDEwIEBACiAgICAgY2FzZSAtMToKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2FzZSAwOgotICAgICAgICAqKEJPT0xfVFlQRSAqKXB0ciA9IDA7CisgICAgICAgICooX0Jvb2wgKilwdHIgPSAwOwogICAgICAgICBfUkVUKHZhbHVlKTsKICAgICBkZWZhdWx0OgotICAgICAgICAqKEJPT0xfVFlQRSAqKXB0ciA9IDE7CisgICAgICAgICooX0Jvb2wgKilwdHIgPSAxOwogICAgICAgICBfUkVUKHZhbHVlKTsKICAgICB9CiB9CkBAIC03NDEsNyArNzI5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBib29sX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSooQk9PTF9UWVBFICopcHRyKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSooX0Jvb2wgKilwdHIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODg4LDE2ICs4NzYsMTUgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcodmFsKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiBzdGF0aWMgUHlPYmplY3QgKgogcV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOwotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB2YWw7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJngsIHB0ciwgc2l6ZW9mKHgpKTsKLSAgICB4ID0gU0VUKFBZX0xPTkdfTE9ORywgeCwgdmFsLCBzaXplKTsKKyAgICB4ID0gU0VUKGxvbmcgbG9uZywgeCwgdmFsLCBzaXplKTsKICAgICBtZW1jcHkocHRyLCAmeCwgc2l6ZW9mKHgpKTsKICAgICBfUkVUKHZhbHVlKTsKIH0KQEAgLTkwNSwxMyArODkyLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9zZXRfc3codm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOwotICAgIFBZX0xPTkdfTE9ORyBmaWVsZDsKKyAgICBsb25nIGxvbmcgdmFsOworICAgIGxvbmcgbG9uZyBmaWVsZDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmZmllbGQsIHB0ciwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwotICAgIGZpZWxkID0gU0VUKFBZX0xPTkdfTE9ORywgZmllbGQsIHZhbCwgc2l6ZSk7CisgICAgZmllbGQgPSBTRVQobG9uZyBsb25nLCBmaWVsZCwgdmFsLCBzaXplKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7CiAgICAgbWVtY3B5KHB0ciwgJmZpZWxkLCBzaXplb2YoZmllbGQpKTsKICAgICBfUkVUKHZhbHVlKTsKQEAgLTkyMCw3ICs5MDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsKTsKQEAgLTkyOSw3ICs5MTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0X3N3KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgdmFsID0gU1dBUF84KHZhbCk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CkBAIC05MzksMTIgKzkyNiwxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfdWxvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmeCwgcHRyLCBzaXplb2YoeCkpOwotICAgIHggPSBTRVQoUFlfTE9OR19MT05HLCB4LCB2YWwsIHNpemUpOworICAgIHggPSBTRVQobG9uZyBsb25nLCB4LCB2YWwsIHNpemUpOwogICAgIG1lbWNweShwdHIsICZ4LCBzaXplb2YoeCkpOwogICAgIF9SRVQodmFsdWUpOwogfQpAQCAtOTUyLDEzICs5MzksMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX3NldF9zdyh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZpZWxkOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpZWxkOwogICAgIGlmIChnZXRfdWxvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmZmllbGQsIHB0ciwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwotICAgIGZpZWxkID0gU0VUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgZmllbGQsIHZhbCwgc2l6ZSk7CisgICAgZmllbGQgPSBTRVQodW5zaWduZWQgbG9uZyBsb25nLCBmaWVsZCwgdmFsLCBzaXplKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7CiAgICAgbWVtY3B5KHB0ciwgJmZpZWxkLCBzaXplb2YoZmllbGQpKTsKICAgICBfUkVUKHZhbHVlKTsKQEAgLTk2Nyw3ICs5NTQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWwpOwpAQCAtOTc2LDEzICs5NjMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX2dldF9zdyh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIHZhbCA9IFNXQVBfOCh2YWwpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsKTsKIH0KLSNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIG5vbi1pbnRlZ2VyIGFjY2Vzc29yIG1ldGhvZHMsIG5vdCBzdXBwb3J0aW5nIGJpdCBmaWVsZHMKQEAgLTE0OTAsMTAgKzE0NzYsOCBAQAogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICB2ID0gKHZvaWQgKilQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKHZhbHVlKTsKICNlbHNlCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZWxpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKKyMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCiAgICAgdiA9ICh2b2lkICopUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodmFsdWUpOwogI2VuZGlmCkBAIC0xNTM4LDE0ICsxNTIyLDEyIEBACiAjZWxzZQogIyBlcnJvcgogI2VuZGlmCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKICAgICB7ICdxJywgcV9zZXQsIHFfZ2V0LCAmZmZpX3R5cGVfc2ludDY0LCBxX3NldF9zdywgcV9nZXRfc3d9LAogICAgIHsgJ1EnLCBRX3NldCwgUV9nZXQsICZmZmlfdHlwZV91aW50NjQsIFFfc2V0X3N3LCBRX2dldF9zd30sCiAjZWxzZQogIyBlcnJvcgogI2VuZGlmCi0jZW5kaWYKICAgICB7ICdQJywgUF9zZXQsIFBfZ2V0LCAmZmZpX3R5cGVfcG9pbnRlcn0sCiAgICAgeyAneicsIHpfc2V0LCB6X2dldCwgJmZmaV90eXBlX3BvaW50ZXJ9LAogI2lmZGVmIENUWVBFU19VTklDT0RFCkBAIC0xNjM1LDEwICsxNjE3LDggQEAKICNlbmRpZgogKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgUFlfTE9OR19MT05HIHg7IH0gc19sb25nX2xvbmc7Ci0jZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihQWV9MT05HX0xPTkcpKQotI2VuZGlmCit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgbG9uZyBsb25nIHg7IH0gc19sb25nX2xvbmc7CisjZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihsb25nIGxvbmcpKQogCiAvKiBmcm9tIGZmaS5oOgogdHlwZWRlZiBzdHJ1Y3QgX2ZmaV90eXBlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmggYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKaW5kZXggZjJkZjVjMC4uNWQzYjk2NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaApAQCAtMzEsOSArMzEsNyBAQAogICAgICAgICAgICAgICAgIGxvbmcgbDsKICAgICAgICAgICAgICAgICBmbG9hdCBmOwogICAgICAgICAgICAgICAgIGRvdWJsZSBkOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgUFlfTE9OR19MT05HIGxsOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxsOwogICAgICAgICAgICAgICAgIGxvbmcgZG91YmxlIEQ7CiB9OwogCkBAIC0zMDMsOSArMzAxLDcgQEAKICAgICAgICAgc2hvcnQgaDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGxvbmcgbDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgcTsKLSNlbmRpZgorICAgICAgICBsb25nIGxvbmcgcTsKICAgICAgICAgbG9uZyBkb3VibGUgRDsKICAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGZsb2F0IGY7CkBAIC0zMjcsNyArMzIzLDcgQEAKIFB5Q0RhdGFfc2V0KFB5T2JqZWN0ICpkc3QsIFB5T2JqZWN0ICp0eXBlLCBTRVRGVU5DIHNldGZ1bmMsIFB5T2JqZWN0ICp2YWx1ZSwKICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBQeV9zc2l6ZV90IHNpemUsIGNoYXIgKnB0cik7CiAKLWV4dGVybiB2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNoYXIgKmZtdCwgLi4uKTsKK2V4dGVybiB2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogc3RydWN0IGJhc2VzcGVjIHsKICAgICBDRGF0YU9iamVjdCAqYmFzZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCmluZGV4IDZlNDc0YjcuLjU1YzJkNzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwpAQCAtNTI1LDcgKzUyNSw3IEBACiAjZGVmaW5lIE1NQVBfQ0xFQVJTIDEKICNlbmRpZiAgLyogTU1BUF9DTEVBUlMgKi8KICNpZm5kZWYgSEFWRV9NUkVNQVAKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogI2RlZmluZSBIQVZFX01SRU1BUCAxCiAjZWxzZSAgIC8qIGxpbnV4ICovCiAjZGVmaW5lIEhBVkVfTVJFTUFQIDAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGYxZjlmLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZGVidWcuYyAtIENvcHlyaWdodCAoYykgMTk5NiBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotLyogR2VuZXJhbCBkZWJ1Z2dpbmcgcm91dGluZXMgKi8KLQotdm9pZCBmZmlfc3RvcF9oZXJlKHZvaWQpCi17Ci0gIC8qIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KLSAgICAgUGxhY2UgYSBicmVha3BvaW50IG9uIGZmaV9zdG9wX2hlcmUgdG8gYmUgbm90aWZpZWQgb2YgCi0gICAgIHNpZ25pZmljYW50IGV2ZW50cy4gKi8KLX0KLQotLyogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgdmlhIHRoZSBGRklfQVNTRVJUKCkgbWFjcm8gKi8KLQotdm9pZCBmZmlfYXNzZXJ0KGNoYXIgKmV4cHIsIGNoYXIgKmZpbGUsIGludCBsaW5lKQotewotICBmcHJpbnRmKHN0ZGVyciwgIkFTU0VSVElPTiBGQUlMVVJFOiAlcyBhdCAlczolZFxuIiwgZXhwciwgZmlsZSwgbGluZSk7Ci0gIGZmaV9zdG9wX2hlcmUoKTsKLSAgYWJvcnQoKTsKLX0KLQotLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiBhbiBmZmlfdHlwZSBzdHJ1Y3R1cmUgKi8KLQotdm9pZCBmZmlfdHlwZV90ZXN0KGZmaV90eXBlICphLCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLSAgRkZJX0FTU0VSVF9BVChhICE9IE5VTEwsIGZpbGUsIGxpbmUpOwotCi0gIC8qQC11c2VkZWZAKi8KLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlIDw9IEZGSV9UWVBFX0xBU1QsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPT0gRkZJX1RZUEVfVk9JRCB8fCBhLT5zaXplID4gMCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA9PSBGRklfVFlQRV9WT0lEIHx8IGEtPmFsaWdubWVudCA+IDAsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgIT0gRkZJX1RZUEVfU1RSVUNUIHx8IGEtPmVsZW1lbnRzICE9IE5VTEwsIGZpbGUsIGxpbmUpOwotICAvKkA9dXNlZGVmQCovCi19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTkzYWFhLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCAgUmVkIEhhdCwgSW5jLgotICAgCi0gICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQxNDIpICAgIC8qIGJlbmlnbiByZWRlZmluaXRpb24gb2YgdHlwZSAqLwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi0vKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCi0gICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyAqLwotCi0vKkAtZXhwb3J0aGVhZGVyQCovCi12b2lkIGZmaV9wcmVwX2FyZ3MoY2hhciAqc3RhY2ssIGV4dGVuZGVkX2NpZiAqZWNpZikKLS8qQD1leHBvcnRoZWFkZXJAKi8KLXsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7Ci0gIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7Ci0gIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7Ci0gIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7Ci0KLSAgYXJncCA9IHN0YWNrOwotCi0gIGlmICggZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7Ci0gICAgKih2b2lkICoqKSBhcmdwID0gZWNpZi0+cnZhbHVlOwotICAgIGFyZ3AgKz0gNDsKLSAgfQotCi0gIHBfYXJndiA9IGVjaWYtPmF2YWx1ZTsKLQotICBmb3IgKGkgPSBlY2lmLT5jaWYtPm5hcmdzLCBwX2FyZyA9IGVjaWYtPmNpZi0+YXJnX3R5cGVzOwotICAgICAgIChpICE9IDApOwotICAgICAgIGktLSwgcF9hcmcrKykKLSAgICB7Ci0gICAgICBzaXplX3QgejsKLSAgICAgIHNpemVfdCBhcmdhbGlnbiA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgICBpZiAoYXJnYWxpZ24gPiA0KQotICAgICAgICBhcmdhbGlnbiA9IDQ7Ci0jZW5kaWYKLSAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKChhcmdhbGlnbiAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFyZ2FsaWduKTsKLSAgICAgIH0KLQotCSAgeiA9ICgqcF9hcmcpLT5zaXplOwotCSAgaWYgKHogPCBzaXplb2YoaW50KSkKLQkgICAgewotCSAgICAgIHogPSBzaXplb2YoaW50KTsKLQkgICAgICBzd2l0Y2ggKCgqcF9hcmcpLT50eXBlKQotCQl7Ci0JCWNhc2UgRkZJX1RZUEVfU0lOVDg6Ci0JCSAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkqKFNJTlQ4ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9VSU5UODoKLQkJICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQ4ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9TSU5UMTY6Ci0JCSAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkqKFNJTlQxNiAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfVUlOVDE2OgotCQkgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDE2ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICAgICAgICAgICAgICAvKiAqcF9hcmd2IG1heSBub3QgYmUgYWxpZ25lZCBmb3IgYSBVSU5UMzIgKi8KLSAgICAgICAgICAgICAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKLQkJICBicmVhazsKLQotCQlkZWZhdWx0OgotCQkgIEZGSV9BU1NFUlQoMCk7Ci0JCX0KLQkgICAgfQotCSAgZWxzZSBpZiAoeiA9PSBzaXplb2YoaW50KSkKLQkgICAgewotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwotCSAgICB9Ci0JICBwX2FyZ3YrKzsKLQkgIGFyZ3AgKz0gejsKLSAgICB9Ci0gIAotICByZXR1cm47Ci19Ci0KLS8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKQotewotICAvKiBTZXQgdGhlIHJldHVybiB0eXBlIGZsYWcgKi8KLSAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQotICAgIHsKLSAgICBjYXNlIEZGSV9UWVBFX1ZPSUQ6Ci0gICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLSAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKLSAgICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpIGNpZi0+cnR5cGUtPnR5cGU7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgotICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX1NJTlQ2NDsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9JTlQ7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgcmV0dXJuIEZGSV9PSzsKLX0KLQotLypALWRlY2x1bmRlZkAqLwotLypALWV4cG9ydGhlYWRlckAqLwotZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTVih2b2lkICgqKShjaGFyICosIGV4dGVuZGVkX2NpZiAqKSwgCi0JCQkgIC8qQG91dEAqLyBleHRlbmRlZF9jaWYgKiwgCi0JCQkgIHVuc2lnbmVkLCB1bnNpZ25lZCwgCi0JCQkgIC8qQG91dEAqLyB1bnNpZ25lZCAqLCAKLQkJCSAgdm9pZCAoKmZuKSgpKTsKLS8qQD1kZWNsdW5kZWZAKi8KLS8qQD1leHBvcnRoZWFkZXJAKi8KLQotLyogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIHZvaWQgZm9yIGN0eXBlcyAqLwotaW50IGZmaV9jYWxsKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCSAgICAgIHZvaWQgKCpmbikoKSwgCi0JICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JICAgICAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWUpCi17Ci0gIGV4dGVuZGVkX2NpZiBlY2lmOwotCi0gIGVjaWYuY2lmID0gY2lmOwotICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKLSAgCi0gIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0IGhhdmUgYSByZXR1cm4JKi8KLSAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBvbmUJCSAgICAgICAgKi8KLQotICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAmJiAKLSAgICAgIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkpCi0gICAgewotICAgICAgLypALXN5c3VucmVjb2dAKi8KLSAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKGNpZi0+cnR5cGUtPnNpemUpOwotICAgICAgLypAPXN5c3VucmVjb2dAKi8KLSAgICB9Ci0gIGVsc2UKLSAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKLSAgICAKLSAgCi0gIHN3aXRjaCAoY2lmLT5hYmkpIAotICAgIHsKLSAgICBjYXNlIEZGSV9TWVNWOgotICAgICAgLypALXVzZWRlZkAqLwotICAgICAgZmZpX2NhbGxfU1lTVihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywgCi0JCSAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwotICAgICAgLypAPXVzZWRlZkAqLwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEZGSV9BU1NFUlQoMCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gIC8qIEkgdGhpbmsgY2FsY3VsYXRpbmcgdGhlIHJlYWwgc3RhY2sgcG9pbnRlciBkZWx0YSBpcyBub3QgdXNlZnVsCi0gICAgIGJlY2F1c2Ugc3RkY2FsbCBpcyBub3Qgc3VwcG9ydGVkICovCi0gIHJldHVybiAwOwotfQotCi0vKiogcHJpdmF0ZSBtZW1iZXJzICoqLwotCi1zdGF0aWMgdm9pZCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YgKGNoYXIgKnN0YWNrLCB2b2lkICoqcmV0LAotCQkJCQkgdm9pZCoqIGFyZ3MsIGZmaV9jaWYqIGNpZik7Ci0KLS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZmaV9jbG9zdXJlX1NZU1YgaW4gc3lzdi5hc20gKi8KLQotdW5zaWduZWQgaW50Ci1mZmlfY2xvc3VyZV9TWVNWX2lubmVyIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgY2hhciAqaW5fYXJncywgdm9pZCAqcnZhbHVlKQotewotICBmZmlfY2lmICpjaWYgPSBjbG9zdXJlLT5jaWY7Ci0gIHZvaWQgKipvdXRfYXJnczsKLQotICBvdXRfYXJncyA9ICh2b2lkICoqKSBhbGxvY2EoY2lmLT5uYXJncyAqIHNpemVvZiAodm9pZCAqKSk7ICAKLQotICAvKiB0aGlzIGNhbGwgd2lsbCBpbml0aWFsaXplIG91dF9hcmdzLCBzdWNoIHRoYXQgZWFjaAotICAgKiBlbGVtZW50IGluIHRoYXQgYXJyYXkgcG9pbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIAotICAgKiB2YWx1ZSBvbiB0aGUgc3RhY2s7IGFuZCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucwotICAgKiBhIHN0cnVjdHVyZSwgaXQgd2lsbCByZS1zZXQgcnZhbHVlIHRvIHBvaW50IHRvIHRoZQotICAgKiBzdHJ1Y3R1cmUgcmV0dXJuIGFkZHJlc3MuICAqLwotCi0gIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihpbl9hcmdzLCAmcnZhbHVlLCBvdXRfYXJncywgY2lmKTsKLSAgCi0gIChjbG9zdXJlLT5mdW4pKGNpZiwgcnZhbHVlLCBvdXRfYXJncywgY2xvc3VyZS0+dXNlcl9kYXRhKTsKLQotICAvKiBUZWxsIGZmaV9jbG9zdXJlX1NZU1Ygd2hhdCB0aGUgcmV0dXJudHlwZSBpcyAqLwotICByZXR1cm4gY2lmLT5mbGFnczsKLX0KLQotLypALWV4cG9ydGhlYWRlckAqLwotc3RhdGljIHZvaWQgCi1mZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoY2hhciAqc3RhY2ssIHZvaWQgKipydmFsdWUsCi0JCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmKQotLypAPWV4cG9ydGhlYWRlckAqLwotewotICB1bnNpZ25lZCBpbnQgaTsKLSAgdm9pZCAqKnBfYXJndjsKLSAgY2hhciAqYXJncDsKLSAgZmZpX3R5cGUgKipwX2FyZzsKLQotICBhcmdwID0gc3RhY2s7Ci0KLSAgaWYgKCBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCApIHsKLSAgICAqcnZhbHVlID0gKih2b2lkICoqKSBhcmdwOwotICAgIGFyZ3AgKz0gNDsKLSAgfQotCi0gIHBfYXJndiA9IGF2YWx1ZTsKLQotICBmb3IgKGkgPSBjaWYtPm5hcmdzLCBwX2FyZyA9IGNpZi0+YXJnX3R5cGVzOyAoaSAhPSAwKTsgaS0tLCBwX2FyZysrKQotICAgIHsKLSAgICAgIHNpemVfdCB6OwotICAgICAgc2l6ZV90IGFyZ2FsaWduID0gKCpwX2FyZyktPmFsaWdubWVudDsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICAgIGlmIChhcmdhbGlnbiA+IDQpCi0gICAgICAgIGFyZ2FsaWduID0gNDsKLSNlbmRpZgotICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKGFyZ2FsaWduIC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYXJnYWxpZ24pOwotICAgICAgfQotCi0gICAgICB6ID0gKCpwX2FyZyktPnNpemU7Ci0gICAgICBpZiAoeiA8IHNpemVvZihpbnQpKQotICAgICAgICB6ID0gc2l6ZW9mKGludCk7Ci0KLSAgICAgICpwX2FyZ3YgPSAodm9pZCopIGFyZ3A7Ci0KLSAgICAgIHBfYXJndisrOwotICAgICAgYXJncCArPSB6OwotICAgIH0KLX0KLQotLyoKLSAgICBhZGQgICBpcCwgcGMsICMtOCAgICAgOyBpcCA9IGFkZHJlc3Mgb2YgdGhpcyB0cmFtcG9saW5lID09IGFkZHJlc3Mgb2YgZmZpX2Nsb3N1cmUKLSAgICBsZHIgICBwYywgW3BjLCAjLTRdICAgOyBqdW1wIHRvIF9fZnVuCi0gICAgRENEIF9fZnVuCi0qLwotI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FKFRSQU1QLEZVTikgXAoteyBcCi0gICAgdW5zaWduZWQgaW50ICpfX3RyYW1wID0gKHVuc2lnbmVkIGludCAqKShUUkFNUCk7IFwKLSAgICBfX3RyYW1wWzBdID0gMHhlMjRmYzAwODsgICAgICAgICAgICAvKiBhZGQgICBpcCwgcGMsICMtOCAgICAqLyBcCi0gICAgX190cmFtcFsxXSA9IDB4ZTUxZmYwMDQ7ICAgICAgICAgICAgLyogbGRyICAgcGMsIFtwYywgIy00XSAgKi8gXAotICAgIF9fdHJhbXBbMl0gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCi0gIH0KLQotLyogdGhlIGNpZiBtdXN0IGFscmVhZHkgYmUgcHJlcCdlZCAqLwotCi0vKiBkZWZpbmVkIGluIHN5c3YuYXNtICovCi12b2lkIGZmaV9jbG9zdXJlX1NZU1Yodm9pZCk7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2Nsb3N1cmUgKGZmaV9jbG9zdXJlKiBjbG9zdXJlLAotCQkgIGZmaV9jaWYqIGNpZiwKLQkJICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopLAotCQkgIHZvaWQgKnVzZXJfZGF0YSkKLXsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOwotICAKLSAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCAmZmZpX2Nsb3N1cmVfU1lTVik7Ci0KLSAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKLSAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwotICBjbG9zdXJlLT5mdW4gID0gZnVuOwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAvKiBUaGlzIGlzIGltcG9ydGFudCB0byBhbGxvdyBjYWxsaW5nIHRoZSB0cmFtcG9saW5lIHNhZmVseSAqLwotICBGbHVzaEluc3RydWN0aW9uQ2FjaGUoR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMCk7Ci0jZW5kaWYKLQotICByZXR1cm4gRkZJX09LOwotfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzk3NWI2Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBsaWJmZmkgMi4wMC1iZXRhLXdpbmNlIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBUaGUgYmFzaWMgQVBJIGlzIGRlc2NyaWJlZCBpbiB0aGUgUkVBRE1FIGZpbGUuCi0KLSAgIFRoZSByYXcgQVBJIGlzIGRlc2lnbmVkIHRvIGJ5cGFzcyBzb21lIG9mIHRoZSBhcmd1bWVudCBwYWNraW5nCi0gICBhbmQgdW5wYWNraW5nIG9uIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIGl0IGNhbiBiZSBhdm9pZGVkLgotCi0gICBUaGUgY2xvc3VyZSBBUEkgYWxsb3dzIGludGVycHJldGVkIGZ1bmN0aW9ucyB0byBiZSBwYWNrYWdlZCB1cAotICAgaW5zaWRlIGEgQyBmdW5jdGlvbiBwb2ludGVyLCBzbyB0aGF0IHRoZXkgY2FuIGJlIGNhbGxlZCBhcyBDIGZ1bmN0aW9ucywKLSAgIHdpdGggbm8gdW5kZXJzdGFuZGluZyBvbiB0aGUgY2xpZW50IHNpZGUgdGhhdCB0aGV5IGFyZSBpbnRlcnByZXRlZC4KLSAgIEl0IGNhbiBhbHNvIGJlIHVzZWQgaW4gb3RoZXIgY2FzZXMgaW4gd2hpY2ggaXQgaXMgbmVjZXNzYXJ5IHRvIHBhY2thZ2UKLSAgIHVwIGEgdXNlciBzcGVjaWZpZWQgcGFyYW1ldGVyIGFuZCBhIGZ1bmN0aW9uIHBvaW50ZXIgYXMgYSBzaW5nbGUKLSAgIGZ1bmN0aW9uIHBvaW50ZXIuCi0KLSAgIFRoZSBjbG9zdXJlIEFQSSBtdXN0IGJlIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGdldCBpdHMgZnVuY3Rpb25hbGl0eSwKLSAgIGUuZy4gZm9yIHVzZSBieSBnaWouICBSb3V0aW5lcyBhcmUgcHJvdmlkZWQgdG8gZW11bGF0ZSB0aGUgcmF3IEFQSQotICAgaWYgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gZG9lc24ndCBhbGxvdyBmYXN0ZXIgaW1wbGVtZW50YXRpb24uCi0KLSAgIE1vcmUgZGV0YWlscyBvbiB0aGUgcmF3IGFuZCBjbG91cmUgQVBJIGNhbiBiZSBmb3VuZCBpbjoKLQotICAgaHR0cDovL2djYy5nbnUub3JnL21sL2phdmEvMTk5OS1xMy9tc2cwMDEzOC5odG1sCi0KLSAgIGFuZAotCi0gICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvamF2YS8xOTk5LXEzL21zZzAwMTc0Lmh0bWwKLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX0gKLSNkZWZpbmUgTElCRkZJX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiBTcGVjaWZ5IHdoaWNoIGFyY2hpdGVjdHVyZSBsaWJmZmkgaXMgY29uZmlndXJlZCBmb3IuICovCi0vKiNkZWZpbmUgQFRBUkdFVEAqLwotCi0vKiAtLS0tIFN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpdGFyZ2V0Lmg+Ci0KLSNpZm5kZWYgTElCRkZJX0FTTQotCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLS8qIExPTkdfTE9OR19NQVggaXMgbm90IGFsd2F5cyBkZWZpbmVkIChub3QgaWYgU1RSSUNUX0FOU0ksIGZvciBleGFtcGxlKS4KLSAgIEJ1dCB3ZSBjYW4gZmluZCBpdCBlaXRoZXIgdW5kZXIgdGhlIGNvcnJlY3QgQU5TSSBuYW1lLCBvciB1bmRlciBHTlUKLSAgIEMncyBpbnRlcm5hbCBuYW1lLiAgKi8KLSNpZmRlZiBMT05HX0xPTkdfTUFYCi0jIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HX0xPTkdfTUFYCi0jZWxzZQotIyBpZmRlZiBMTE9OR19NQVgKLSMgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMTE9OR19NQVgKLSMgZWxzZQotIyAgaWZkZWYgX19HTlVDX18KLSMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KLSMgIGVuZGlmCi0jICBpZmRlZiBfTVNDX1ZFUgotIyAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBfSTY0X01BWAotIyAgZW5kaWYKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgU0NIQVJfTUFYID09IDEyNwotIyBkZWZpbmUgZmZpX3R5cGVfdWNoYXIgICAgICAgICAgICAgICAgZmZpX3R5cGVfdWludDgKLSMgZGVmaW5lIGZmaV90eXBlX3NjaGFyICAgICAgICAgICAgICAgIGZmaV90eXBlX3NpbnQ4Ci0jZWxzZQotICNlcnJvciAiY2hhciBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2lmIFNIUlRfTUFYID09IDMyNzY3Ci0jIGRlZmluZSBmZmlfdHlwZV91c2hvcnQgICAgICAgZmZpX3R5cGVfdWludDE2Ci0jIGRlZmluZSBmZmlfdHlwZV9zc2hvcnQgICAgICAgZmZpX3R5cGVfc2ludDE2Ci0jZWxpZiBTSFJUX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGRlZmluZSBmZmlfdHlwZV91c2hvcnQgICAgICAgZmZpX3R5cGVfdWludDMyCi0jIGRlZmluZSBmZmlfdHlwZV9zc2hvcnQgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxzZQotICNlcnJvciAic2hvcnQgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNpZiBJTlRfTUFYID09IDMyNzY3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDE2Ci0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDE2Ci0jZWxpZiBJTlRfTUFYID09IDIxNDc0ODM2NDcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50MzIKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbGlmIElOVF9NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQ2NAotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQ2NAotI2Vsc2UKLSAjZXJyb3IgImludCBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2RlZmluZSBmZmlfdHlwZV91bG9uZyAgICAgICAgIGZmaV90eXBlX3VpbnQ2NAotI2RlZmluZSBmZmlfdHlwZV9zbG9uZyAgICAgICAgIGZmaV90eXBlX3NpbnQ2NAotI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgaWYgRkZJX0xPTkdfTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotICAjZXJyb3IgIm5vIDY0LWJpdCBkYXRhIHR5cGUgc3VwcG9ydGVkIgotIyBlbmRpZgotI2VsaWYgTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotLyogVGhlIGNsb3N1cmUgY29kZSBhc3N1bWVzIHRoYXQgdGhpcyB3b3JrcyBvbiBwb2ludGVycywgaS5lLiBhIHNpemVfdAkqLwotLyogY2FuIGhvbGQgYSBwb2ludGVyLgkJCQkJCQkqLwotCi10eXBlZGVmIHN0cnVjdCBfZmZpX3R5cGUKLXsKLSAgc2l6ZV90IHNpemU7Ci0gIHVuc2lnbmVkIHNob3J0IGFsaWdubWVudDsKLSAgdW5zaWduZWQgc2hvcnQgdHlwZTsKLSAgLypAbnVsbEAqLyBzdHJ1Y3QgX2ZmaV90eXBlICoqZWxlbWVudHM7Ci19IGZmaV90eXBlOwotCi0vKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiB0eXBlcy5jICovCi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9kb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9wb2ludGVyOwotCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEZGSV9PSyA9IDAsCi0gIEZGSV9CQURfVFlQRURFRiwKLSAgRkZJX0JBRF9BQkkgCi19IGZmaV9zdGF0dXM7Ci0KLXR5cGVkZWYgdW5zaWduZWQgRkZJX1RZUEU7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgZmZpX2FiaSBhYmk7Ci0gIHVuc2lnbmVkIG5hcmdzOwotICAvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphcmdfdHlwZXM7Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqcnR5cGU7Ci0gIHVuc2lnbmVkIGJ5dGVzOwotICB1bnNpZ25lZCBmbGFnczsKLSNpZmRlZiBGRklfRVhUUkFfQ0lGX0ZJRUxEUwotICBGRklfRVhUUkFfQ0lGX0ZJRUxEUzsKLSNlbmRpZgotfSBmZmlfY2lmOwotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciB0aGUgcmF3IEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIEZGSV9TSVpFT0ZfQVJHCi0jIGlmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgNAotIyBlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgOAotIyBlbmRpZgotI2VuZGlmCi0KLXR5cGVkZWYgdW5pb24gewotICBmZmlfc2FyZyAgc2ludDsKLSAgZmZpX2FyZyAgIHVpbnQ7Ci0gIGZsb2F0CSAgICBmbHQ7Ci0gIGNoYXIgICAgICBkYXRhW0ZGSV9TSVpFT0ZfQVJHXTsKLSAgdm9pZCogICAgIHB0cjsKLX0gZmZpX3JhdzsKLQotdm9pZCBmZmlfcmF3X2NhbGwgKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCQkgICB2b2lkICgqZm4pKCksIAotCQkgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkJICAgLypAZGVwZW5kZW50QCovIGZmaV9yYXcgKmF2YWx1ZSk7Ci0KLXZvaWQgZmZpX3B0cmFycmF5X3RvX3JhdyAoZmZpX2NpZiAqY2lmLCB2b2lkICoqYXJncywgZmZpX3JhdyAqcmF3KTsKLXZvaWQgZmZpX3Jhd190b19wdHJhcnJheSAoZmZpX2NpZiAqY2lmLCBmZmlfcmF3ICpyYXcsIHZvaWQgKiphcmdzKTsKLXNpemVfdCBmZmlfcmF3X3NpemUgKGZmaV9jaWYgKmNpZik7Ci0KLS8qIFRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZSByYXcgQVBJLCBleGNlcHQgaXQgdXNlcyBKYXZhIHBhcmFtZXRlcgkqLwotLyogcGFja2luZywgZXZlbiBvbiA2NC1iaXQgbWFjaGluZXMuICBJLmUuIG9uIDY0LWJpdCBtYWNoaW5lcwkJKi8KLS8qIGxvbmdzIGFuZCBkb3VibGVzIGFyZSBmb2xsb3dlZCBieSBhbiBlbXB0eSA2NC1iaXQgd29yZC4JCSovCi0KLXZvaWQgZmZpX2phdmFfcmF3X2NhbGwgKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCQkgICAgICAgIHZvaWQgKCpmbikoKSwgCi0JCSAgICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JCSAgICAgICAgLypAZGVwZW5kZW50QCovIGZmaV9yYXcgKmF2YWx1ZSk7Ci0KLXZvaWQgZmZpX2phdmFfcHRyYXJyYXlfdG9fcmF3IChmZmlfY2lmICpjaWYsIHZvaWQgKiphcmdzLCBmZmlfcmF3ICpyYXcpOwotdm9pZCBmZmlfamF2YV9yYXdfdG9fcHRyYXJyYXkgKGZmaV9jaWYgKmNpZiwgZmZpX3JhdyAqcmF3LCB2b2lkICoqYXJncyk7Ci1zaXplX3QgZmZpX2phdmFfcmF3X3NpemUgKGZmaV9jaWYgKmNpZik7Ci0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZiBGRklfQ0xPU1VSRVMKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotICBmZmlfY2lmICAgKmNpZjsKLSAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7Ci0gIHZvaWQgICAgICAqdXNlcl9kYXRhOwotfSBmZmlfY2xvc3VyZTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfY2xvc3VyZSAoZmZpX2Nsb3N1cmUqLAotCQkgIGZmaV9jaWYgKiwKLQkJICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopLAotCQkgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLQotICBmZmlfY2lmICAgKmNpZjsKLQotI2lmICFGRklfTkFUSVZFX1JBV19BUEkKLQotICAvKiBpZiB0aGlzIGlzIGVuYWJsZWQsIHRoZW4gYSByYXcgY2xvc3VyZSBoYXMgdGhlIHNhbWUgbGF5b3V0IAotICAgICBhcyBhIHJlZ3VsYXIgY2xvc3VyZS4gIFdlIHVzZSB0aGlzIHRvIGluc3RhbGwgYW4gaW50ZXJtZWRpYXRlIAotICAgICBoYW5kbGVyIHRvIGRvIHRoZSB0cmFuc2FsdGlvbiwgdm9pZCoqIC0+IGZmaV9yYXcqLiAqLwotCi0gIHZvaWQgICAgICgqdHJhbnNsYXRlX2FyZ3MpKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7Ci0gIHZvaWQgICAgICAqdGhpc19jbG9zdXJlOwotCi0jZW5kaWYKLQotICB2b2lkICAgICAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopOwotICB2b2lkICAgICAgKnVzZXJfZGF0YTsKLQotfSBmZmlfcmF3X2Nsb3N1cmU7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX3Jhd19jbG9zdXJlIChmZmlfcmF3X2Nsb3N1cmUqLAotCQkgICAgICBmZmlfY2lmICpjaWYsCi0JCSAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKSwKLQkJICAgICAgdm9pZCAqdXNlcl9kYXRhKTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfamF2YV9yYXdfY2xvc3VyZSAoZmZpX3Jhd19jbG9zdXJlKiwKLQkJICAgICAgICAgICBmZmlfY2lmICpjaWYsCi0JCSAgICAgICAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopLAotCQkgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLSNlbmRpZiAvKiBGRklfQ0xPU1VSRVMgKi8KLQotLyogLS0tLSBQdWJsaWMgaW50ZXJmYWNlIGRlZmluaXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX2NpZiAqY2lmLCAKLQkJCWZmaV9hYmkgYWJpLAotCQkJdW5zaWduZWQgaW50IG5hcmdzLCAKLQkJCS8qQGRlcGVuZGVudEAqLyAvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfdHlwZSAqcnR5cGUsIAotCQkJLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXR5cGVzKTsKLQotLyogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIHZvaWQgZm9yIGN0eXBlcyAqLwotaW50IGZmaV9jYWxsKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCSAgICAgIHZvaWQgKCpmbikoKSwgCi0JICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JICAgICAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWUpOwotCi0vKiBVc2VmdWwgZm9yIGVsaW1pbmF0aW5nIGNvbXBpbGVyIHdhcm5pbmdzICovCi0jZGVmaW5lIEZGSV9GTihmKSAoKHZvaWQgKCopKCkpZikKLQotLyogLS0tLSBEZWZpbml0aW9ucyBzaGFyZWQgd2l0aCBhc3NlbWJseSBjb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2VuZGlmCi0KLS8qIElmIHRoZXNlIGNoYW5nZSwgdXBkYXRlIHNyYy9taXBzL2ZmaXRhcmdldC5oLiAqLwotI2RlZmluZSBGRklfVFlQRV9WT0lEICAgICAgIDAgICAgCi0jZGVmaW5lIEZGSV9UWVBFX0lOVCAgICAgICAgMQotI2RlZmluZSBGRklfVFlQRV9GTE9BVCAgICAgIDIgICAgCi0jZGVmaW5lIEZGSV9UWVBFX0RPVUJMRSAgICAgMwotI2lmIDAgLypASEFWRV9MT05HX0RPVUJMRUAqLwotI2RlZmluZSBGRklfVFlQRV9MT05HRE9VQkxFIDQKLSNlbHNlCi0jZGVmaW5lIEZGSV9UWVBFX0xPTkdET1VCTEUgRkZJX1RZUEVfRE9VQkxFCi0jZW5kaWYKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDggICAgICA1ICAgCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQ4ICAgICAgNgotI2RlZmluZSBGRklfVFlQRV9VSU5UMTYgICAgIDcgCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQxNiAgICAgOAotI2RlZmluZSBGRklfVFlQRV9VSU5UMzIgICAgIDkKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDMyICAgICAxMAotI2RlZmluZSBGRklfVFlQRV9VSU5UNjQgICAgIDExCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQ2NCAgICAgMTIKLSNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUICAgICAxMwotI2RlZmluZSBGRklfVFlQRV9QT0lOVEVSICAgIDE0Ci0KLS8qIFRoaXMgc2hvdWxkIGFsd2F5cyByZWZlciB0byB0aGUgbGFzdCB0eXBlIGNvZGUgKGZvciBzYW5pdHkgY2hlY2tzKSAqLwotI2RlZmluZSBGRklfVFlQRV9MQVNUICAgICAgIEZGSV9UWVBFX1BPSU5URVIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY4NzlkMS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoYykgMTk5NiAgUmVkIEhhdCwgSW5jLgotCi0gICBDb21tb24gaW50ZXJuYWwgZGVmaW5pdGlvbnMgYW5kIG1hY3Jvcy4gT25seSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nCi0gICBsaWJmZmkuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIEZGSV9DT01NT05fSAotI2RlZmluZSBGRklfQ09NTU9OX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0jaW5jbHVkZSA8ZmZpY29uZmlnLmg+Ci0KLS8qIERvIG5vdCBtb3ZlIHRoaXMuIFNvbWUgdmVyc2lvbnMgb2YgQUlYIGFyZSB2ZXJ5IHBpY2t5IGFib3V0IHdoZXJlCi0gICB0aGlzIGlzIHBvc2l0aW9uZWQuICovCi0jaWZkZWYgX19HTlVDX18KLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0jZWxzZQotIyBpZiBIQVZFX0FMTE9DQV9ICi0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLSMgZWxzZQotIyAgaWZkZWYgX0FJWAotICNwcmFnbWEgYWxsb2NhCi0jICBlbHNlCi0jICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KLWNoYXIgKmFsbG9jYSAoKTsKLSMgICBlbmRpZgotIyAgZW5kaWYKLSMgZW5kaWYKLSNlbmRpZgotCi0vKiBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBtZW1jcHkuICovCi0jaWYgU1REQ19IRUFERVJTCi0jIGluY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSMgaWZuZGVmIEhBVkVfTUVNQ1BZCi0jICBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEZGSV9ERUJVRykgCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi0jaWZkZWYgRkZJX0RFQlVHCi0vKkBleGl0c0AqLyB2b2lkIGZmaV9hc3NlcnQoLypAdGVtcEAqLyBjaGFyICpleHByLCAvKkB0ZW1wQCovIGNoYXIgKmZpbGUsIGludCBsaW5lKTsKLXZvaWQgZmZpX3N0b3BfaGVyZSh2b2lkKTsKLXZvaWQgZmZpX3R5cGVfdGVzdCgvKkB0ZW1wQCovIC8qQG91dEAqLyBmZmlfdHlwZSAqYSwgLypAdGVtcEAqLyBjaGFyICpmaWxlLCBpbnQgbGluZSk7Ci0KLSNkZWZpbmUgRkZJX0FTU0VSVCh4KSAoKHgpID8gKHZvaWQpMCA6IGZmaV9hc3NlcnQoI3gsIF9fRklMRV9fLF9fTElORV9fKSkKLSNkZWZpbmUgRkZJX0FTU0VSVF9BVCh4LCBmLCBsKSAoKHgpID8gMCA6IGZmaV9hc3NlcnQoI3gsIChmKSwgKGwpKSkKLSNkZWZpbmUgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKHgpIGZmaV90eXBlX3Rlc3QgKHgsIF9fRklMRV9fLCBfX0xJTkVfXykKLSNlbHNlCi0jZGVmaW5lIEZGSV9BU1NFUlQoeCkgCi0jZGVmaW5lIEZGSV9BU1NFUlRfQVQoeCwgZiwgbCkKLSNkZWZpbmUgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKHgpCi0jZW5kaWYKLQotI2RlZmluZSBBTElHTih2LCBhKSAgKCgoKChzaXplX3QpICh2KSktMSkgfCAoKGEpLTEpKSsxKQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZik7Ci0KLS8qIEV4dGVuZGVkIGNpZiwgdXNlZCBpbiBjYWxsYmFjayBmcm9tIGFzc2VtYmx5IHJvdXRpbmUgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWY7Ci0gIC8qQGRlcGVuZGVudEAqLyB2b2lkICpydmFsdWU7Ci0gIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlOwotfSBleHRlbmRlZF9jaWY7Ci0KLS8qIFRlcnNlIHNpemVkIHR5cGUgZGVmaW5pdGlvbnMuICAqLwotI2lmIGRlZmluZWQoX19HTlVDX18pCi0KLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQ4ICBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UOCAgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDE2IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fSElfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQxNiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDMyIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQ2NCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UNjQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwotCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotCi10eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgVUlOVDg7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDggICAgU0lOVDg7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgVUlOVDE2OwotdHlwZWRlZiBzaWduZWQgX19pbnQxNiAgIFNJTlQxNjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiBVSU5UMzI7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDMyICAgU0lOVDMyOwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IFVJTlQ2NDsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQgICBTSU5UNjQ7Ci0KLSNlbHNlCi0jZXJyb3IgIk5lZWQgdHlwZWRlZnMgaGVyZSIKLSNlbmRpZgotCi10eXBlZGVmIGZsb2F0IEZMT0FUMzI7Ci0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3OTY0Yy4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKiBmZmljb25maWcuaCBjcmVhdGVkIG1hbnVhbGx5IGZvciBXaW5kb3dzIENFIG9uIEFSTSAqLwotLyogZmZpY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCi0KLS8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCi0jZGVmaW5lIEJZVEVPUkRFUiAxMjM0Ci0KLS8qIERlZmluZSB0byBvbmUgb2YgYF9nZXRiNjcnLCBgR0VUQjY3JywgYGdldGI2NycgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAKLSAgIHN5c3RlbXMuIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGBhbGxvY2EuYycgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLgotICAgKi8KLS8qICN1bmRlZiBDUkFZX1NUQUNLU0VHX0VORCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB1c2luZyBgYWxsb2NhLmMnLiAqLwotLyogI3VuZGVmIENfQUxMT0NBICovCi0KLS8qIERlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS4gKi8KLS8qICN1bmRlZiBFSF9GUkFNRV9GTEFHUyAqLwotCi0vKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuICovCi0jaWZkZWYgREVCVUcgIC8qIERlZmluZWQgYnkgdGhlIHByb2plY3Qgc2V0dGluZ3MgZm9yIERlYnVnIGJ1aWxkcyAqLwotI2RlZmluZSBGRklfREVCVUcKLSNlbHNlCi0jdW5kZWYgRkZJX0RFQlVHCi0jZW5kaWYKLQotLyogRGVmaW5lIHRoaXMgaXMgeW91IGRvIG5vdCB3YW50IHN1cHBvcnQgZm9yIHRoZSByYXcgQVBJLiAqLwotLyogI3VuZGVmIEZGSV9OT19SQVdfQVBJICovCi0KLS8qIERlZmluZSB0aGlzIGlzIHlvdSBkbyBub3Qgd2FudCBzdXBwb3J0IGZvciBhZ2dyZWdhdGUgdHlwZXMuICovCi0vKiAjdW5kZWYgRkZJX05PX1NUUlVDVFMgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYGFsbG9jYScsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICovCi0jZGVmaW5lIEhBVkVfQUxMT0NBIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPGFsbG9jYS5oPiBhbmQgaXQgc2hvdWxkIGJlIHVzZWQgKG5vdCBvbiBVbHRyaXgpLgotICAgKi8KLS8qICN1bmRlZiBIQVZFX0FMTE9DQV9IICovCi0KLS8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAucmVnaXN0ZXIuICovCi0vKiAjdW5kZWYgSEFWRV9BU19SRUdJU1RFUl9QU0VVRE9fT1AgKi8KLQotLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgUEMgcmVsYXRpdmUgcmVsb2NzLgotICAgKi8KLS8qICN1bmRlZiBIQVZFX0FTX1NQQVJDX1VBX1BDUkVMICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9JTlRUWVBFU19IICovCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbG9uZyBkb3VibGUgdHlwZSBhbmQgaXQgaXMgYmlnZ2VyIHRoYW4gYSBkb3VibGUgKi8KLS8qIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBNU1ZDIGJ1aWxkLCBidXQgZXZlbiB0aGVyZSBpdCBzaG91bGQgbm90IGJlIGRlZmluZWQgKi8KLS8qICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtY3B5JyBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9NRU1DUFkgMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qIFdpbkNFIGhhcyB0aGlzIGJ1dCBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gdXNlIGl0ICovCi0vKiAjdW5kZWYgSEFWRV9NRU1PUllfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1tYXAnIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUCAqLwotCi0vKiBEZWZpbmUgaWYgbW1hcCB3aXRoIE1BUF9BTk9OKFlNT1VTKSB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfQU5PTiAqLwotCi0vKiBEZWZpbmUgaWYgbW1hcCBvZiAvZGV2L3plcm8gd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0RFVl9aRVJPICovCi0KLS8qIERlZmluZSBpZiByZWFkLW9ubHkgbW1hcCBvZiBhIHBsYWluIGZpbGUgd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0ZJTEUgKi8KLQotLyogRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5LiAqLwotLyogI3VuZGVmIEhBVkVfUk9fRUhfRlJBTUUgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TVERJTlRfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NUUklOR1NfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL21tYW4uaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfTU1BTl9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfU1RBVF9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9VTklTVERfSCAqLwotCi0vKiBEZWZpbmUgaWYgdGhlIGhvc3QgbWFjaGluZSBzdG9yZXMgd29yZHMgb2YgbXVsdGktd29yZCBpbnRlZ2VycyBpbgotICAgYmlnLWVuZGlhbiBvcmRlci4gKi8KLS8qICN1bmRlZiBIT1NUX1dPUkRTX0JJR19FTkRJQU4gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91ciBDIGNvbXBpbGVyIGRvZXNuJ3QgYWNjZXB0IC1jIGFuZCAtbyB0b2dldGhlci4gKi8KLS8qICN1bmRlZiBOT19NSU5VU19DX01JTlVTX08gKi8KLQotLyogTmFtZSBvZiBwYWNrYWdlICovCi0vKiAjdW5kZWYgUEFDS0FHRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVCAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9OQU1FICovCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1NUUklORyAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9UQVJOQU1FICovCi0KLS8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OICovCi0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdHlwZSBkb3VibGUgKi8KLSNkZWZpbmUgU0laRU9GX0RPVUJMRSA4Ci0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdHlwZSBsb25nIGRvdWJsZSAqLwotI2RlZmluZSBTSVpFT0ZfTE9OR19ET1VCTEUgOAotCi0vKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKLSAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQotICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0IHJ1bi10aW1lLgotCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJkIGhpZ2hlciBhZGRyZXNzZXMKLQlTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKLQlTVEFDS19ESVJFQ1RJT04gPSAwID0+IGRpcmVjdGlvbiBvZiBncm93dGggdW5rbm93biAqLwotLyogI3VuZGVmIFNUQUNLX0RJUkVDVElPTiAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLQotLyogRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuCi0gICAqLwotLyogI3VuZGVmIFVTSU5HX1BVUklGWSAqLwotCi0vKiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCi0vKiAjdW5kZWYgVkVSU0lPTiAqLwotCi0vKiB3aGV0aGVyIGJ5dGVvcmRlciBpcyBiaWdlbmRpYW4gKi8KLS8qICN1bmRlZiBXT1JEU19CSUdFTkRJQU4gKi8KLQotI2RlZmluZSBhbGxvY2EgX2FsbG9jYQotCi0jZGVmaW5lIGFib3J0KCkgZXhpdCg5OTkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjI3YjI1Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLSAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVJNLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICi0jZGVmaW5lIExJQkZGSV9UQVJHRVRfSAotCi0jaWZuZGVmIExJQkZGSV9BU00KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwotdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwotCi10eXBlZGVmIGVudW0gZmZpX2FiaSB7Ci0gIEZGSV9GSVJTVF9BQkkgPSAwLAotICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKLX0gZmZpX2FiaTsKLSNlbmRpZgotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZGVmaW5lIEZGSV9DTE9TVVJFUyAxCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMTIKLQotI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZGNlMmYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYworKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJlcF9jaWYuYyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCAgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0KLS8qIFJvdW5kIHVwIHRvIEZGSV9TSVpFT0ZfQVJHLiAqLwotCi0jZGVmaW5lIFNUQUNLX0FSR19TSVpFKHgpIEFMSUdOKHgsIEZGSV9TSVpFT0ZfQVJHKQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgaW5pdGlhbGl6YXRpb24gb2YgYWdncmVnYXRlIHR5cGUKLSAgIHNwZWNpZmljYXRpb25zLiAqLwotCi1zdGF0aWMgZmZpX3N0YXR1cyBpbml0aWFsaXplX2FnZ3JlZ2F0ZSgvKkBvdXRAKi8gZmZpX3R5cGUgKmFyZykKLXsKLSAgZmZpX3R5cGUgKipwdHI7IAotCi0gIEZGSV9BU1NFUlQoYXJnICE9IE5VTEwpOwotCi0gIC8qQC11c2VkZWZAKi8KLQotICBGRklfQVNTRVJUKGFyZy0+ZWxlbWVudHMgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5zaXplID09IDApOwotICBGRklfQVNTRVJUKGFyZy0+YWxpZ25tZW50ID09IDApOwotCi0gIHB0ciA9ICYoYXJnLT5lbGVtZW50c1swXSk7Ci0KLSAgd2hpbGUgKCgqcHRyKSAhPSBOVUxMKQotICAgIHsKLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCi0JcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgICAgIAotICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSAqLwotICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwotCi0gICAgICBhcmctPnNpemUgPSBBTElHTihhcmctPnNpemUsICgqcHRyKS0+YWxpZ25tZW50KTsKLSAgICAgIGFyZy0+c2l6ZSArPSAoKnB0ciktPnNpemU7Ci0KLSAgICAgIGFyZy0+YWxpZ25tZW50ID0gKGFyZy0+YWxpZ25tZW50ID4gKCpwdHIpLT5hbGlnbm1lbnQpID8gCi0JYXJnLT5hbGlnbm1lbnQgOiAoKnB0ciktPmFsaWdubWVudDsKLQotICAgICAgcHRyKys7Ci0gICAgfQotCi0gIC8qIFN0cnVjdHVyZSBzaXplIGluY2x1ZGVzIHRhaWwgcGFkZGluZy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvcgotICAgICBzdHJ1Y3R1cmVzIHRoYXQgZml0IGluIG9uZSByZWdpc3RlciBvbiBBQklzIGxpa2UgdGhlIFBvd2VyUEM2NAotICAgICBMaW51eCBBQkkgdGhhdCByaWdodCBqdXN0aWZ5IHNtYWxsIHN0cnVjdHMgaW4gYSByZWdpc3Rlci4KLSAgICAgSXQncyBhbHNvIG5lZWRlZCBmb3IgbmVzdGVkIHN0cnVjdHVyZSBsYXlvdXQsIGZvciBleGFtcGxlCi0gICAgIHN0cnVjdCBBIHsgbG9uZyBhOyBjaGFyIGI7IH07IHN0cnVjdCBCIHsgc3RydWN0IEEgeDsgY2hhciB5OyB9OwotICAgICBzaG91bGQgZmluZCB5IGF0IGFuIG9mZnNldCBvZiAyKnNpemVvZihsb25nKSBhbmQgcmVzdWx0IGluIGEKLSAgICAgdG90YWwgc2l6ZSBvZiAzKnNpemVvZihsb25nKS4gICovCi0gIGFyZy0+c2l6ZSA9IEFMSUdOIChhcmctPnNpemUsIGFyZy0+YWxpZ25tZW50KTsKLQotICBpZiAoYXJnLT5zaXplID09IDApCi0gICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgZWxzZQotICAgIHJldHVybiBGRklfT0s7Ci0KLSAgLypAPXVzZWRlZkAqLwotfQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgZmZpX2NpZiBwcmVwYXJhdGlvbiwgdGhlbiBjYWxsCi0gICBtYWNoaW5lIGRlcGVuZGVudCByb3V0aW5lLiAqLwotCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZigvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfY2lmICpjaWYsIAotCQkJZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywgCi0JCQkvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUgKnJ0eXBlLCAKLQkJCS8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmF0eXBlcykKLXsKLSAgdW5zaWduZWQgYnl0ZXMgPSAwOwotICB1bnNpZ25lZCBpbnQgaTsKLSAgZmZpX3R5cGUgKipwdHI7Ci0KLSAgRkZJX0FTU0VSVChjaWYgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7Ci0KLSAgY2lmLT5hYmkgPSBhYmk7Ci0gIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7Ci0gIGNpZi0+cnR5cGUgPSBydHlwZTsKLQotICBjaWYtPmZsYWdzID0gMDsKLQotICAvKiBJbml0aWFsaXplIHRoZSByZXR1cm4gdHlwZSBpZiBuZWNlc3NhcnkgKi8KLSAgLypALXVzZWRlZkAqLwotICBpZiAoKGNpZi0+cnR5cGUtPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKGNpZi0+cnR5cGUpICE9IEZGSV9PSykpCi0gICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgLypAPXVzZWRlZkAqLwotCi0gIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIHJldHVybiB0eXBlICovCi0gIEZGSV9BU1NFUlRfVkFMSURfVFlQRShjaWYtPnJ0eXBlKTsKLQotICAvKiB4ODYtNjQgYW5kIHMzOTAgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGluIHByZXBfbWFjaGRlcC4gICovCi0jaWYgIWRlZmluZWQgTTY4SyAmJiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAKLSAgLyogTWFrZSBzcGFjZSBmb3IgdGhlIHJldHVybiBzdHJ1Y3R1cmUgcG9pbnRlciAqLwotICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgIC8qIE1TVkMgcmV0dXJucyBzbWFsbCBzdHJ1Y3R1cmVzIGluIHJlZ2lzdGVycy4gIEJ1dCB3ZSBoYXZlIGEgZGlmZmVyZW50Ci0gICAgICB3b3JrYXJvdW5kOiBwcmV0ZW5kIGludDMyIG9yIGludDY0IHJldHVybiB0eXBlLCBhbmQgY29udmVydGluZyB0bwotICAgICAgc3RydWN0dXJlIGFmdGVyd2FyZHMuICovCi0jaWZkZWYgU1BBUkMKLSAgICAgICYmIChjaWYtPmFiaSAhPSBGRklfVjkgfHwgY2lmLT5ydHlwZS0+c2l6ZSA+IDMyKQotI2VuZGlmCi0gICAgICApCi0gICAgYnl0ZXMgPSBTVEFDS19BUkdfU0laRShzaXplb2Yodm9pZCopKTsKLSNlbmRpZgotCi0gIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKLSAgICB7Ci0KLSAgICAgIC8qIEluaXRpYWxpemUgYW55IHVuaW5pdGlhbGl6ZWQgYWdncmVnYXRlIHR5cGUgZGVmaW5pdGlvbnMgKi8KLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCi0JcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLQotICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSwgZG8gdGhpcyAKLQkgY2hlY2sgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uLiAgKi8KLSAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKLQotI2lmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MAotI2lmZGVmIFNQQVJDCi0gICAgICBpZiAoKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLQkgICAmJiAoKCpwdHIpLT5zaXplID4gMTYgfHwgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKLQkgIHx8ICgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotCSAgICAgICYmIGNpZi0+YWJpICE9IEZGSV9WOSkpCi0JYnl0ZXMgKz0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgIGVsc2UKLSNlbmRpZgotCXsKLSNpZm5kZWYgX01TQ19WRVIKLQkJLyogRG9uJ3Qga25vdyBpZiB0aGlzIGlzIGEgbGliZmZpIGJ1ZyBvciBub3QuICBBdCBsZWFzdCBvbgotCQkgICBXaW5kb3dzIHdpdGggTVNWQywgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXJzIGFyZSAqbm90KgotCQkgICBhbGlnbmVkIGluIHRoZSBzYW1lIHdheSBhcyBzdHJ1Y3R1cmUgZmllbGRzIGFyZSwgdGhleSBhcmUKLQkJICAgb25seSBhbGlnbmVkIGluIGludGVnZXIgYm91bmRhcmllcy4KLQotCQkgICBUaGlzIGRvZXNuJ3QgZG8gYW55IGhhcm0gZm9yIGNkZWNsIGZ1bmN0aW9ucyBhbmQgY2xvc3VyZXMsCi0JCSAgIHNpbmNlIHRoZSBjYWxsZXIgY2xlYW5zIHVwIHRoZSBzdGFjaywgYnV0IGl0IGlzIHdyb25nIGZvcgotCQkgICBzdGRjYWxsIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY2FsbGVlIGNsZWFucy4KLQkJKi8KLQotCSAgLyogQWRkIGFueSBwYWRkaW5nIGlmIG5lY2Vzc2FyeSAqLwotCSAgaWYgKCgoKnB0ciktPmFsaWdubWVudCAtIDEpICYgYnl0ZXMpCi0JICAgIGJ5dGVzID0gQUxJR04oYnl0ZXMsICgqcHRyKS0+YWxpZ25tZW50KTsKLQkgIAotI2VuZGlmCi0JICBieXRlcyArPSBTVEFDS19BUkdfU0laRSgoKnB0ciktPnNpemUpOwotCX0KLSNlbmRpZgotICAgIH0KLQotICBjaWYtPmJ5dGVzID0gYnl0ZXM7Ci0KLSAgLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNzhiOTAuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20KKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotOyAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4IFJlZCBIYXQsIEluYy4KLTsgIAotOyAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAotOwotOyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi07ICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLTsgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotOyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotOyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi07ICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLTsgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLTsKLTsgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi07ICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLTsKLTsgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLTsgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLTsgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLTsgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLTsgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotOyAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi07ICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi07ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi07I2RlZmluZSBMSUJGRklfQVNNICAgICAKLTsjaW5jbHVkZSA8ZmZpY29uZmlnLmg+Ci07I2luY2x1ZGUgPGZmaS5oPgotOyNpZmRlZiBIQVZFX01BQ0hJTkVfQVNNX0gKLTsjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KLTsjZWxzZQotOyNpZmRlZiBfX1VTRVJfTEFCRUxfUFJFRklYX18KLTsjZGVmaW5lIENPTkNBVDEoYSwgYikgQ09OQ0FUMihhLCBiKQotOyNkZWZpbmUgQ09OQ0FUMihhLCBiKSBhICMjIGIKLQotOy8qIFVzZSB0aGUgcmlnaHQgcHJlZml4IGZvciBnbG9iYWwgbGFiZWxzLiAgKi8KLTsjZGVmaW5lIENOQU1FKHgpIENPTkNBVDEgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgeCkKLTsjZWxzZQotOyNkZWZpbmUgQ05BTUUoeCkgeAotOyNlbmRpZgotOyNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIENOQU1FKHgpOyAudHlwZSBDTkFNRSh4KSwlZnVuY3Rpb247IENOQU1FKHgpOgotOyNlbmRpZgotCi0KLUZGSV9UWVBFX1ZPSUQgICAgICAgRVFVIDAKLUZGSV9UWVBFX0lOVCAgICAgICAgRVFVIDEKLUZGSV9UWVBFX0ZMT0FUICAgICAgRVFVIDIKLUZGSV9UWVBFX0RPVUJMRSAgICAgRVFVIDMKLTtGRklfVFlQRV9MT05HRE9VQkxFIEVRVSA0Ci1GRklfVFlQRV9VSU5UOCAgICAgIEVRVSA1Ci1GRklfVFlQRV9TSU5UOCAgICAgIEVRVSA2Ci1GRklfVFlQRV9VSU5UMTYgICAgIEVRVSA3Ci1GRklfVFlQRV9TSU5UMTYgICAgIEVRVSA4Ci1GRklfVFlQRV9VSU5UMzIgICAgIEVRVSA5Ci1GRklfVFlQRV9TSU5UMzIgICAgIEVRVSAxMAotRkZJX1RZUEVfVUlOVDY0ICAgICBFUVUgMTEKLUZGSV9UWVBFX1NJTlQ2NCAgICAgRVFVIDEyCi1GRklfVFlQRV9TVFJVQ1QgICAgIEVRVSAxMwotRkZJX1RZUEVfUE9JTlRFUiAgICBFUVUgMTQKLQotOyBXaW5DRSBhbHdheXMgdXNlcyBzb2Z0d2FyZSBmbG9hdGluZyBwb2ludCAoSSB0aGluaykKLV9fU09GVEZQX18gRVFVIHtUUlVFfQotCi0KLSAgICBBUkVBIHwudGV4dHwsIENPREUsIEFSTSAgICAgOyAudGV4dAotCi0KLSAgICA7IGExOiAgIGZmaV9wcmVwX2FyZ3MKLSAgICA7IGEyOiAgICZlY2lmCi0gICAgOyBhMzogICBjaWYtPmJ5dGVzCi0gICAgOyBhNDogICBmaWctPmZsYWdzCi0gICAgOyBzcCswOiBlY2lmLnJ2YWx1ZQotICAgIDsgc3ArNDogZm4KLQotICAgIDsgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCi07RU5UUlkoZmZpX2NhbGxfU1lTVikKLQotICAgIEVYUE9SVCB8ZmZpX2NhbGxfU1lTVnwKLQotfGZmaV9jYWxsX1NZU1Z8IFBST0MKLQotICAgIDsgU2F2ZSByZWdpc3RlcnMKLSAgICBzdG1mZCBzcCEsIHthMS1hNCwgZnAsIGxyfQotICAgIG1vdiAgIGZwLCBzcAotCi0gICAgOyBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuCi0gICAgc3ViICAgc3AsIGZwLCBhMwotCi0gICAgOyBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KLSAgICBtb3YgICBpcCwgYTEKLSAgICBtb3YgICBhMSwgc3AKLSAgICA7ICAgICBhMiBhbHJlYWR5IHNldAotCi0gICAgOyBBbmQgY2FsbAotICAgIG1vdiAgIGxyLCBwYwotICAgIG1vdiAgIHBjLCBpcAotCi0gICAgOyBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMKLSAgICBsZHIgICBhMSwgW3NwLCAjMF0KLSAgICBsZHIgICBhMiwgW3NwLCAjNF0KLSAgICBsZHIgICBhMywgW3NwLCAjOF0KLSAgICBsZHIgICBhNCwgW3NwLCAjMTJdCi0KLSAgICA7IGFuZCBhZGp1c3Qgc3RhY2sKLSAgICBsZHIgICBpcCwgW2ZwLCAjOF0KLSAgICBjbXAgICBpcCwgIzE2Ci0gICAgbW92Z2UgaXAsICMxNgotICAgIGFkZCAgIHNwLCBzcCwgaXAKLQotICAgIDsgY2FsbCBmdW5jdGlvbgotICAgIG1vdiAgIGxyLCBwYwotICAgIGxkciAgIHBjLCBbZnAsICMyOF0KLQotICAgIDsgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCi0gICAgbW92ICAgc3AsIGZwCi0KLSAgICA7IExvYWQgYTMgd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgbGRyICAgYTMsIFtzcCwgIzI0XQotCi0gICAgOyBMb2FkIGE0IHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUgCi0gICAgbGRyICAgYTQsIFtzcCwgIzEyXQotCi0gICAgOyBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KLSAgICBjbXAgICBhMywgIzAKLSAgICBiZXEgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIElOVAotICAgIGNtcCAgIGE0LCAjRkZJX1RZUEVfSU5UCi0gICAgc3RyZXEgYTEsIFthM10KLSAgICBiZXEgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIEZMT0FUCi0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX0ZMT0FUCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIHN0cmVxICAgYTEsIFthM10KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFzICBmMCwgW2EzXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIERPVUJMRSBvciBMT05HRE9VQkxFCi0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX0RPVUJMRQotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBzdG1lcWlhIGEzLCB7YTEsIGEyfQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcWQgIGYwLCBbYTNdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gU0lOVDY0IG9yIFVJTlQ2NAotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9TSU5UNjQKLSAgICBzdG1lcWlhIGEzLCB7YTEsIGEyfQotCi1jYWxsX2VwaWxvZ3VlCi0gICAgbGRtZmQgICBzcCEsIHthMS1hNCwgZnAsIHBjfQotCi07LmZmaV9jYWxsX1NZU1ZfZW5kOgotICAgIDsuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9TWVNWKSwuZmZpX2NhbGxfU1lTVl9lbmQtQ05BTUUoZmZpX2NhbGxfU1lTVikKLSAgICBFTkRQCi0KLQotUkVTRVJWRV9SRVRVUk4gRVFVIDE2Ci0KLSAgICA7IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0cmFtcG9saW5lCi0gICAgOyBJdCBpcyBOT1QgY2FsbGFibGUgZnJvbSBDCi0gICAgOyBpcCA9IHBvaW50ZXIgdG8gc3RydWN0IGZmaV9jbG9zdXJlCi0KLSAgICBJTVBPUlQgfGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJ8Ci0KLSAgICBFWFBPUlQgfGZmaV9jbG9zdXJlX1NZU1Z8Ci18ZmZpX2Nsb3N1cmVfU1lTVnwgUFJPQwotCi0gICAgOyBTdG9yZSB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzIG9uIHRoZSBzdGFjawotICAgIHN0bWZkICAgc3AhLCB7YTEtYTR9Ci0gICAgOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjawotICAgIHN0bWZkICAgc3AhLCB7bHJ9Ci0KLSAgICBtb3YgICAgIGExLCBpcCAgICAgICAgICAgIDsgZmlyc3QgYXJnID0gYWRkcmVzcyBvZiBmZmlfY2xvc3VyZQotICAgIGFkZCAgICAgYTIsIHNwLCAjNCAgICAgICAgOyBzZWNvbmQgYXJnID0gc3ArNCAocG9pbnRzIHRvIHNhdmVkIGExKQotCi0gICAgOyBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBub24tc3RydWN0IHJldHVybiB2YWx1ZQotICAgIHN1YiAgICAgc3AsIHNwLCAjUkVTRVJWRV9SRVRVUk4KLSAgICBtb3YgICAgIGEzLCBzcCAgICAgICAgICAgIDsgdGhpcmQgYXJnID0gcmV0dXJuIHZhbHVlIGFkZHJlc3MKLQotICAgIDsgc3RhdGljIHVuc2lnbmVkIGludAotICAgIDsgZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIGNoYXIgKmluX2FyZ3MsIHZvaWQgKnJ2YWx1ZSkKLSAgICBibCAgICAgIGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKLSAgICA7IGExIG5vdyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUgY29kZSAKLQotICAgIDsgQXQgdGhpcyBwb2ludCB0aGUgcmV0dXJuIHZhbHVlIGlzIG9uIHRoZSBzdGFjawotICAgIDsgVHJhbnNmZXIgaXQgdG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzIGlmIG5lY2Vzc2FyeQotCi07IHJldHVybiBJTlQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfSU5UCi0gICAgbGRyZXEgICBhMSwgW3NwXQotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBGTE9BVAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9GTE9BVAotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBsZHJlcSAgIGExLCBbc3BdCi0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxcyAgZjAsIFtzcF0KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBET1VCTEUgb3IgTE9OR0RPVUJMRQotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9ET1VCTEUKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgbGRtZXFpYSBzcCwge2ExLCBhMn0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFkICBmMCwgW3NwXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIFNJTlQ2NCBvciBVSU5UNjQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfU0lOVDY0Ci0gICAgbGRtZXFpYSBzcCwge2ExLCBhMn0KLQotY2xvc3VyZV9lcGlsb2d1ZQotICAgIGFkZCAgICAgc3AsIHNwLCAjUkVTRVJWRV9SRVRVUk4gICA7IHJlbW92ZSByZXR1cm4gdmFsdWUgYnVmZmVyCi0gICAgbGRtZmQgICBzcCEsIHtpcH0gICAgICAgICA7IGlwID0gcG9wIHJldHVybiBhZGRyZXNzCi0gICAgYWRkICAgICBzcCwgc3AsICMxNiAgICAgICA7IHJlbW92ZSBzYXZlZCBhcmd1bWVudCByZWdpc3RlcnMge2ExLWE0fSBmcm9tIHRoZSBzdGFjawotICAgIG1vdiAgICAgcGMsIGlwICAgICAgICAgICAgOyByZXR1cm4KLQotICAgIEVORFAgICAgOyBmZmlfY2xvc3VyZV9TWVNWCi0KLSAgICBFTkQKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCmluZGV4IDZjMGZkYTkuLjcxNmQxZTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYwpAQCAtNDg5LDcgKzQ4OSw3IEBACiAKICAgICAgICAgaWYgKGlzU3RydWN0ICYmICFpc1BhY2tlZCkgewogICAgICAgICAgICAgY2hhciAqZmllbGRmbXQgPSBkaWN0LT5mb3JtYXQgPyBkaWN0LT5mb3JtYXQgOiAiQiI7Ci0gICAgICAgICAgICBjaGFyICpmaWVsZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgY2hhciAqZmllbGRuYW1lID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKICAgICAgICAgICAgIGNoYXIgKnB0cjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgY2hhciAqYnVmOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwppbmRleCAyMjhmNDk3Li4xOGVmMzM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYworKysgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogUmVsZWFzZSBOdW1iZXIgKi8KIAotc3RhdGljIGNoYXIgKlB5Q3Vyc2VzVmVyc2lvbiA9ICIyLjEiOworc3RhdGljIGNvbnN0IGNoYXIgUHlDdXJzZXNWZXJzaW9uW10gPSAiMi4xIjsKIAogLyogSW5jbHVkZXMgKi8KIApAQCAtNTYsNyArNTYsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDg5NmQ0MGQuLjNiZjJjYTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0yMzA3LDcgKzIzMDcsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IGY0MTljYjIuLjI5MTkyMGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2RlZmluZSBEQVRFX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JTlVURQogI2RlZmluZSBEQVRFX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX1NFQ09ORAogI2RlZmluZSBEQVRFX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIERBVEVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRAogCiAvKiBEYXRlIGFjY2Vzc29ycyBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUuICovCiAjZGVmaW5lIFNFVF9ZRUFSKG8sIHYpICAgICAgICAgICgoKG8pLT5kYXRhWzBdID0gKCh2KSAmIDB4ZmYwMCkgPj4gOCksIFwKQEAgLTcxLDEyICs3MiwxNCBAQAogICAgICgoKG8pLT5kYXRhWzddID0gKCh2KSAmIDB4ZmYwMDAwKSA+PiAxNiksIFwKICAgICAgKChvKS0+ZGF0YVs4XSA9ICgodikgJiAweDAwZmYwMCkgPj4gOCksIFwKICAgICAgKChvKS0+ZGF0YVs5XSA9ICgodikgJiAweDAwMDBmZikpKQorI2RlZmluZSBEQVRFX1NFVF9GT0xEKG8sIHYpICAgKFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSA9ICh2KSkKIAogLyogVGltZSBhY2Nlc3NvcnMgZm9yIHRpbWUuICovCiAjZGVmaW5lIFRJTUVfR0VUX0hPVVIgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUgogI2RlZmluZSBUSU1FX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JTlVURQogI2RlZmluZSBUSU1FX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORAogI2RlZmluZSBUSU1FX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIFRJTUVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRAogI2RlZmluZSBUSU1FX1NFVF9IT1VSKG8sIHYpICAgICAoUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pID0gKHYpKQogI2RlZmluZSBUSU1FX1NFVF9NSU5VVEUobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9NSU5VVEUobykgPSAodikpCiAjZGVmaW5lIFRJTUVfU0VUX1NFQ09ORChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORChvKSA9ICh2KSkKQEAgLTg0LDYgKzg3LDcgQEAKICAgICAoKChvKS0+ZGF0YVszXSA9ICgodikgJiAweGZmMDAwMCkgPj4gMTYpLCBcCiAgICAgICgobyktPmRhdGFbNF0gPSAoKHYpICYgMHgwMGZmMDApID4+IDgpLCBcCiAgICAgICgobyktPmRhdGFbNV0gPSAoKHYpICYgMHgwMDAwZmYpKSkKKyNkZWZpbmUgVElNRV9TRVRfRk9MRChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgPSAodikpCiAKIC8qIERlbHRhIGFjY2Vzc29ycyBmb3IgdGltZWRlbHRhLiAqLwogI2RlZmluZSBHRVRfVERfREFZUyhvKSAgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhICopKG8pKS0+ZGF5cykKQEAgLTE4NCwxMiArMTg4LDEyIEBACiAgKiBhbmQgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGF0IG1vbnRoIGluIHRoZSBzYW1lIHllYXIuICBUaGVzZQogICogYXJlIGNvcnJlY3QgZm9yIG5vbi1sZWFwIHllYXJzIG9ubHkuCiAgKi8KLXN0YXRpYyBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKICAgICAwLCAvKiB1bnVzZWQ7IHRoaXMgdmVjdG9yIHVzZXMgMS1iYXNlZCBpbmRleGluZyAqLwogICAgIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEKIH07CiAKLXN0YXRpYyBpbnQgX2RheXNfYmVmb3JlX21vbnRoW10gPSB7CitzdGF0aWMgY29uc3QgaW50IF9kYXlzX2JlZm9yZV9tb250aFtdID0gewogICAgIDAsIC8qIHVudXNlZDsgdGhpcyB2ZWN0b3IgdXNlcyAxLWJhc2VkIGluZGV4aW5nICovCiAgICAgMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzQKIH07CkBAIC00MTcsNyArNDIxLDcgQEAKICAqIGFyZW4ndCwgcmFpc2UgVmFsdWVFcnJvciBhbmQgcmV0dXJuIC0xLgogICovCiBzdGF0aWMgaW50Ci1jaGVja190aW1lX2FyZ3MoaW50IGgsIGludCBtLCBpbnQgcywgaW50IHVzKQorY2hlY2tfdGltZV9hcmdzKGludCBoLCBpbnQgbSwgaW50IHMsIGludCB1cywgaW50IGZvbGQpCiB7CiAgICAgaWYgKGggPCAwIHx8IGggPiAyMykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTQzOSw2ICs0NDMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChmb2xkICE9IDAgJiYgZm9sZCAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY3NCw4ICs2ODMsOCBAQAogCiAvKiBDcmVhdGUgYSBkYXRldGltZSBpbnN0YW5jZSB3aXRoIG5vIHJhbmdlIGNoZWNraW5nLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW5ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKLSAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X2RhdGV0aW1lX2V4MihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIGludCBmb2xkLCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC02OTIsMTggKzcwMSwyNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pICAgICAgICAgICBcCi0gICAgbmV3X2RhdGV0aW1lX2V4KHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICAgICAgICAgICAgXAorc3RhdGljIFB5T2JqZWN0ICoKK25ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgMCwgdHlwZSk7Cit9CisKKyNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpIFwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsIFwKICAgICAgICAgICAgICAgICAgICAgJlB5RGF0ZVRpbWVfRGF0ZVRpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lIGluc3RhbmNlIHdpdGggbm8gcmFuZ2UgY2hlY2tpbmcuICovCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3X3RpbWVfZXgoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAotICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X3RpbWVfZXgyKGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBpbnQgZm9sZCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewogICAgIFB5RGF0ZVRpbWVfVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC03MjAsMTIgKzczOCwyMCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X3RpbWUoaGgsIG1tLCBzcywgdXMsIHR6aW5mbykgICAgICAgICAgICAgICAgXAotICAgIG5ld190aW1lX2V4KGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICZQeURhdGVUaW1lX1RpbWVUeXBlKQorc3RhdGljIFB5T2JqZWN0ICoKK25ld190aW1lX2V4KGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3X3RpbWVfZXgyKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sIDAsIHR5cGUpOworfQorCisjZGVmaW5lIG5ld190aW1lKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X3RpbWVfZXgyKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsICZQeURhdGVUaW1lX1RpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lZGVsdGEgaW5zdGFuY2UuICBOb3JtYWxpemUgdGhlIG1lbWJlcnMgaWZmIG5vcm1hbGl6ZSBpcwogICogdHJ1ZS4gIFBhc3NpbmcgZmFsc2UgaXMgYSBzcGVlZCBvcHRpbWl6YXRpb24sIGlmIHlvdSBrbm93IGZvciBzdXJlCkBAIC04NzMsNyArODk5LDcgQEAKICAqIHRoaXMgcmV0dXJucyBOVUxMLiAgRWxzZSByZXN1bHQgaXMgcmV0dXJuZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX3R6aW5mb19tZXRob2QoUHlPYmplY3QgKnR6aW5mbywgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR6aW5mb2FyZykKK2NhbGxfdHppbmZvX21ldGhvZChQeU9iamVjdCAqdHppbmZvLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHppbmZvYXJnKQogewogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAKQEAgLTg4NywxMCArOTEzLDEwIEBACiAgICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lIHx8IG9mZnNldCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIGlmIChQeURlbHRhX0NoZWNrKG9mZnNldCkpIHsKLSAgICAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwIHx8IEdFVF9URF9TRUNPTkRTKG9mZnNldCkgJSA2MCAhPSAwKSB7CisgICAgICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoKEdFVF9URF9EQVlTKG9mZnNldCkgPT0gLTEgJiYgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSA9PSAwKSB8fApAQCAtMTAwMiw2ICsxMDI4LDMwIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKKy8qIHJlcHIgaXMgbGlrZSAic29tZWNsYXNzKGFyZzEsIGFyZzIpIi4gIElmIGZvbGQgaXNuJ3QgMCwKKyAqIHN0dWZmCisgKiAgICAgIiwgZm9sZD0iICsgcmVwcih0emluZm8pCisgKiBiZWZvcmUgdGhlIGNsb3NpbmcgIikiLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorYXBwZW5kX2tleXdvcmRfZm9sZChQeU9iamVjdCAqcmVwciwgaW50IGZvbGQpCit7CisgICAgUHlPYmplY3QgKnRlbXA7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcHIpKTsKKyAgICBpZiAoZm9sZCA9PSAwKQorICAgICAgICByZXR1cm4gcmVwcjsKKyAgICAvKiBHZXQgcmlkIG9mIHRoZSB0cmFpbGluZyAnKScuICovCisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOworICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLCBmb2xkPSVkKSIsIHRlbXAsIGZvbGQpOworICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJpbmcgZm9ybWF0IGhlbHBlcnMuCiAgKi8KQEAgLTEwMDksMTAgKzEwNTksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmb3JtYXRfY3RpbWUoUHlEYXRlVGltZV9EYXRlICpkYXRlLCBpbnQgaG91cnMsIGludCBtaW51dGVzLCBpbnQgc2Vjb25kcykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqRGF5TmFtZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IERheU5hbWVzW10gPSB7CiAgICAgICAgICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iCiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqTW9udGhOYW1lc1tdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgTW9udGhOYW1lc1tdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKQEAgLTEwNTcsMTAgKzExMDcsOCBAQAogICAgIH0KICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMob2Zmc2V0KSA8IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBvZmZzZXQ7CiAgICAgICAgIHNpZ24gPSAnLSc7Ci0gICAgICAgIG9mZnNldCA9IGRlbHRhX25lZ2F0aXZlKChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYob2Zmc2V0LCBkZWx0YV9uZWdhdGl2ZSgoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCkpOwogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMTA3MiwxMCArMTEyMCwxMSBAQAogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIG1pbnV0ZXMgPSBkaXZtb2Qoc2Vjb25kcywgNjAsICZzZWNvbmRzKTsKICAgICBob3VycyA9IGRpdm1vZChtaW51dGVzLCA2MCwgJm1pbnV0ZXMpOwotICAgIGFzc2VydChzZWNvbmRzID09IDApOwotICAgIC8qIFhYWCBpZ25vcmUgc3ViLW1pbnV0ZSBkYXRhLCBjdXJyZW50bHkgbm90IGFsbG93ZWQuICovCi0gICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOwotCisgICAgaWYgKHNlY29uZHMgPT0gMCkKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOworICAgIGVsc2UKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLAorICAgICAgICAgICAgICAgICAgICAgIHNlcCwgbWludXRlcywgc2VwLCBzZWNvbmRzKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTE3MCw3ICsxMjE5LDcgQEAKICAgICBhc3NlcnQob2JqZWN0ICYmIGZvcm1hdCAmJiB0aW1ldHVwbGUpOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soZm9ybWF0KSk7CiAgICAgLyogQ29udmVydCB0aGUgaW5wdXQgZm9ybWF0IHRvIGEgQyBzdHJpbmcgYW5kIHNpemUgKi8KLSAgICBwaW4gPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShmb3JtYXQsICZmbGVuKTsKKyAgICBwaW4gPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShmb3JtYXQsICZmbGVuKTsKICAgICBpZiAoIXBpbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyMzgsNyArMTI4Nyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3NlcnQoWnJlcGxhY2VtZW50ICE9IE5VTEwpOwogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhacmVwbGFjZW1lbnQpKTsKLSAgICAgICAgICAgIHB0b2FwcGVuZCA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKFpyZXBsYWNlbWVudCwKKyAgICAgICAgICAgIHB0b2FwcGVuZCA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKFpyZXBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm50b2FwcGVuZCk7CiAgICAgICAgICAgICBpZiAocHRvYXBwZW5kID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBEb25lOwpAQCAtMTMyMyw3ICsxMzcyLDcgQEAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOwogCi0gICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgIigpIik7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzMDcsNyArMjM1Niw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0sCiB9OwogCi1zdGF0aWMgY2hhciBkZWx0YV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkZWx0YV9kb2NbXSA9CiBQeURvY19TVFIoIkRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgdmFsdWVzLiIpOwogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRlbHRhX2FzX251bWJlciA9IHsKQEAgLTI0NjIsMjcgKzI1MTEsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgc3RydWN0IHRtICp0bTsKKyAgICBzdHJ1Y3QgdG0gdG07CiAgICAgdGltZV90IHQ7CiAKICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1fbWRheSk7CiB9CiAKIC8qIFJldHVybiBuZXcgZGF0ZSBmcm9tIGN1cnJlbnQgdGltZS4KQEAgLTI2NDgsNyArMjY4OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCBOVUxMKTsKIH0KIAogCkBAIC0yNjc0LDcgKzI3MTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCBOVUxMKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjc4Niw5ICsyODI3LDEwIEBACiBzdGF0aWMgUHlfaGFzaF90CiBkYXRlX2hhc2goUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkKKyAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKICAgICAgICAgc2VsZi0+aGFzaGNvZGUgPSBnZW5lcmljX2hhc2goCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKXNlbGYtPmRhdGEsIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOworICAgIH0KIAogICAgIHJldHVybiBzZWxmLT5oYXNoY29kZTsKIH0KQEAgLTI4ODYsNyArMjkyOCw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGRhdGVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGUoeWVhciwgbW9udGgsIGRheSkgLS0+IGRhdGUgb2JqZWN0Iik7CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgZGF0ZV9hc19udW1iZXIgPSB7CkBAIC0zMDQ3LDEwICszMDg5LDggQEAKICAgICBpZiAoZHN0ID09IFB5X05vbmUpCiAgICAgICAgIGdvdG8gSW5jb25zaXN0ZW50OwogICAgIGlmIChkZWx0YV9ib29sKChQeURhdGVUaW1lX0RlbHRhICopZHN0KSAhPSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICB9CkBAIC0zMDgwLDM3ICszMTIwLDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHppbmZvX3JlZHVjZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnN0YXRlLCAqdG1wOworICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGU7CiAgICAgUHlPYmplY3QgKmdldGluaXRhcmdzLCAqZ2V0c3RhdGU7CiAgICAgX1B5X0lERU5USUZJRVIoX19nZXRpbml0YXJnc19fKTsKICAgICBfUHlfSURFTlRJRklFUihfX2dldHN0YXRlX18pOwogCi0gICAgdG1wID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGdldGluaXRhcmdzID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldGluaXRhcmdzX18pOwogICAgIGlmIChnZXRpbml0YXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldGluaXRhcmdzLCB0bXApOworICAgICAgICBhcmdzID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhnZXRpbml0YXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRpbml0YXJncyk7CiAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGFyZ3MgPSB0bXA7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKworICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogCiAgICAgZ2V0c3RhdGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0c3RhdGVfXyk7CiAgICAgaWYgKGdldHN0YXRlICE9IE5VTEwpIHsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldHN0YXRlLCB0bXApOworICAgICAgICBzdGF0ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZ2V0c3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0c3RhdGUpOwogICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMTksMTMgKzMxNTYsMTIgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgc3RhdGUgPSBQeV9Ob25lOwogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIoc2VsZik7Ci0gICAgICAgIGlmIChkaWN0cHRyICYmICpkaWN0cHRyICYmIFB5RGljdF9TaXplKCpkaWN0cHRyKSkKKyAgICAgICAgaWYgKGRpY3RwdHIgJiYgKmRpY3RwdHIgJiYgUHlEaWN0X1NpemUoKmRpY3RwdHIpKSB7CiAgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0cHRyOworICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHRtcCk7Ci0KICAgICBpZiAoc3RhdGUgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGFyZ3MpOwpAQCAtMzE1NSw3ICszMTkxLDcgQEAKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHR6aW5mb19kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0emluZm9fZG9jW10gPQogUHlEb2NfU1RSKCJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBvYmplY3RzLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVFpJbmZvVHlwZSA9IHsKQEAgLTMyODcsNiArMzMyMywxMSBAQAogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+bmFtZSk7CiAgICAgICAgIHJldHVybiBzZWxmLT5uYW1lOwogICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0ICopc2VsZiA9PSBQeURhdGVUaW1lX1RpbWVab25lX1VUQyB8fAorICAgICAgICAgICAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA9PSAwICYmCisgICAgICAgICAgICBHRVRfVERfU0VDT05EUyhzZWxmLT5vZmZzZXQpID09IDAgJiYKKyAgICAgICAgICAgIEdFVF9URF9NSUNST1NFQ09ORFMoc2VsZi0+b2Zmc2V0KSA9PSAwKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJVVEMiKTsKICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA8IDApIHsKICAgICAgICAgc2lnbiA9ICctJzsKQEAgLTMzODIsNyArMzQyMyw3IEBACiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0aW1lem9uZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lem9uZV9kb2NbXSA9CiBQeURvY19TVFIoIkZpeGVkIG9mZnNldCBmcm9tIFVUQyBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UaW1lWm9uZVR5cGUgPSB7CkBAIC0zNDY2LDEyICszNTA3LDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfZm9sZChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFRJTUVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgdGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcil0aW1lX2hvdXJ9LAogICAgIHsibWludXRlIiwgICAgICAoZ2V0dGVyKXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilweV90aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpdGltZV9taWNyb3NlY29uZH0sCi0gICAgeyJ0emluZm8iLCAgICAgICAgICAoZ2V0dGVyKXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcil0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpdGltZV9mb2xkfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTM0ODAsNyArMzUyOCw3IEBACiAgKi8KIAogc3RhdGljIGNoYXIgKnRpbWVfa3dzW10gPSB7ImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWNyb3NlY29uZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgTlVMTH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgImZvbGQiLCBOVUxMfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKQEAgLTM0OTIsMTMgKzM1NDAsMTQgQEAKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSAwOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA+PSAxICYmCiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSAmJgotICAgICAgICAoKHVuc2lnbmVkIGNoYXIpIChQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMF0pKSA8IDI0KQorICAgICAgICAoMHg3RiAmICgodW5zaWduZWQgY2hhcikgKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVswXSkpKSA8IDI0KQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9UaW1lICptZTsKICAgICAgICAgY2hhciBhd2FyZTsKQEAgLTM1MjMsMTkgKzM1NzIsMjYgQEAKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgICAgICBtZS0+dHppbmZvID0gdHppbmZvOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBkYXRhWzBdICYgKDEgPDwgNykpIHsKKyAgICAgICAgICAgICAgICBtZS0+ZGF0YVswXSAtPSAxMjg7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAwOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltZTsKICAgICB9CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPIiwgdGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpIiwgdGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG91ciwgJm1pbnV0ZSwgJnNlY29uZCwgJnVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvKSkgewotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpIHsKKyAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgZm9sZCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4KGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKKyAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4Mihob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLCBmb2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTM1ODUsNiArMzY0MSw3IEBACiAgICAgaW50IG0gPSBUSU1FX0dFVF9NSU5VVEUoc2VsZik7CiAgICAgaW50IHMgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgaWYgKHVzKQpAQCAtMzU5NywzMyArMzY1NCw2OCBAQAogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJWQsICVkKSIsIHR5cGVfbmFtZSwgaCwgbSk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfdHppbmZvKHJlc3VsdCwgc2VsZi0+dHppbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgZm9sZCkKKyAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfZm9sZChyZXN1bHQsIGZvbGQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3N0cihQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQordGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGNoYXIgYnVmWzEwMF07CisgICAgY2hhciAqdGltZXNwZWMgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgc3RhdGljIGNoYXIgKnNwZWNzW11bMl0gPSB7CisgICAgICAgIHsiaG91cnMiLCAiJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZCJ9LAorICAgICAgICB7Im1pbGxpc2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKHVzKQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQuJTA2ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8czppc29mb3JtYXQiLCBrZXl3b3JkcywgJnRpbWVzcGVjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbWlsbGlzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgIHVzID0gdXMgLyAxMDAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnaXZlbl9zcGVjID09IFB5X0FSUkFZX0xFTkdUSChzcGVjcykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJVbmtub3duIHRpbWVzcGVjIHZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoc3BlY3NbZ2l2ZW5fc3BlY11bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksIFRJTUVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7CisgICAgfQogCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8ICFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNzUwLDkgKzM4NDIsMjMgQEAKIHRpbWVfaGFzaChQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvZmZzZXQ7Ci0KLSAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKFRJTUVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X3RpbWVfZXgyKFRJTUVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3OTgsMTUgKzM5MDQsMjQgQEAKICAgICBpbnQgc3MgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX2t3cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaU8iLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSB0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQpAQCAtMzgxOSw3ICszOTM0LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX1RpbWUgKnNlbGYpCit0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC0zODI3LDYgKzM5NDIsOSBAQAogICAgIGJhc2VzdGF0ZSA9ICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgVElNRV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSBmaXJzdCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzBdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtMzgzNywxNiArMzk1NSwyNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgordGltZV9yZWR1Y2VfZXgoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcHJvdG87CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmLCBwcm90bykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogdGltZV9yZWR1Y2UoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmKSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCB0aW1lX2dldHN0YXRlKHNlbGYsIDIpKTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogCi0gICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIlJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTU1subW1tbW1tXSIKLSAgICAgICAgICAgICAgICJbK0hIOk1NXS4iKX0sCisgICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiUmV0dXJuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsIFtISFs6TU1bOlNTWy5tbW1bdXV1XV1dXV0iCisgICAgICAgICAgICAgICAiWytISDpNTV0uXG5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuXG4iKX0sCiAKICAgICB7InN0cmZ0aW1lIiwgICAgICAgIChQeUNGdW5jdGlvbil0aW1lX3N0cmZ0aW1lLCAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJmb3JtYXQgLT4gc3RyZnRpbWUoKSBzdHlsZSBzdHJpbmcuIil9LApAQCAtMzg2NiwxMyArMzk5NSwxNiBAQAogICAgIHsicmVwbGFjZSIsICAgICAoUHlDRnVuY3Rpb24pdGltZV9yZXBsYWNlLCAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoIlJldHVybiB0aW1lIHdpdGggbmV3IHNwZWNpZmllZCBmaWVsZHMuIil9LAogCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVkdWNlX2V4LCAgICAgICAgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9fcmVkdWNlX2V4X18ocHJvdG8pIC0+IChjbHMsIHN0YXRlKSIpfSwKKwogICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbil0aW1lX3JlZHVjZSwgICAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lX2RvY1tdID0KIFB5RG9jX1NUUigidGltZShbaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV0pIC0tPiBhIHRpbWUgb2JqZWN0XG5cCiBcblwKIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuIGluc3RhbmNlIG9mXG5cCkBAIC0zOTYwLDEyICs0MDkyLDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX2ZvbGQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgdm9pZCAqdW51c2VkKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoREFURV9HRVRfRk9MRChzZWxmKSk7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiBkYXRldGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcilkYXRldGltZV9ob3VyfSwKICAgICB7Im1pbnV0ZSIsICAgICAgKGdldHRlcilkYXRldGltZV9taW51dGV9LAogICAgIHsic2Vjb25kIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpZGF0ZXRpbWVfbWljcm9zZWNvbmR9LAotICAgIHsidHppbmZvIiwgICAgICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsidHppbmZvIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfZm9sZH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zOTc1LDcgKzQxMTQsNyBAQAogCiBzdGF0aWMgY2hhciAqZGF0ZXRpbWVfa3dzW10gPSB7CiAgICAgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsCi0gICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsIE5VTEwKKyAgICAibWljcm9zZWNvbmQiLCAidHppbmZvIiwgImZvbGQiLCBOVUxMCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzk5MCw2ICs0MTI5LDcgQEAKICAgICBpbnQgbWludXRlID0gMDsKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CisgICAgaW50IGZvbGQgPSAwOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KQEAgLTM5OTcsNyArNDEzNyw3IEBACiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfREFURVRJTUVfREFUQVNJWkUgJiYKLSAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0pKQorICAgICAgICBNT05USF9JU19TQU5FKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVsyXSAmIDB4N0YpKQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqbWU7CiAgICAgICAgIGNoYXIgYXdhcmU7CkBAIC00MDIyLDI4ICs0MTYyLDczIEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICAgICAgbWUtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwZGF0YVsyXSAmICgxIDw8IDcpKSB7CisgICAgICAgICAgICAgICAgbWUtPmRhdGFbMl0gLT0gMTI4OworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWU7CiAgICAgfQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyIsIGRhdGV0aW1lX2t3cywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiaWlpfGlpaWlPJGkiLCBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeWVhciwgJm1vbnRoLCAmZGF5LCAmaG91ciwgJm1pbnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29uZCwgJnVzZWNvbmQsICZ0emluZm8sICZmb2xkKSkgewogICAgICAgICBpZiAoY2hlY2tfZGF0ZV9hcmdzKHllYXIsIG1vbnRoLCBkYXkpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgc2VsZiA9IG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZCwgdHlwZSk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCi0vKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBsb2NhbHRpbWUoKSBhbmQgZ210aW1lKCkuICovCi10eXBlZGVmIHN0cnVjdCB0bSAqKCpUTV9GVU5DKShjb25zdCB0aW1lX3QgKnRpbWVyKTsKKy8qIFRNX0ZVTkMgaXMgdGhlIHNoYXJlZCB0eXBlIG9mIF9QeVRpbWVfbG9jYWx0aW1lKCkgYW5kCisgKiBfUHlUaW1lX2dtdGltZSgpLiAqLwordHlwZWRlZiBpbnQgKCpUTV9GVU5DKSh0aW1lX3QgdGltZXIsIHN0cnVjdCB0bSopOworCisvKiBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAqIDIzIGhvdXJzIGF0IDE5NjktMDktMzAgMTM6MDA6MDAgaW4gS3dhamFsZWluLiAqLworc3RhdGljIGxvbmcgbG9uZyBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwOworLyogTkI6IGRhdGUoMTk3MCwxLDEpLnRvb3JkaW5hbCgpID09IDcxOTE2MyAqLworc3RhdGljIGxvbmcgbG9uZyBlcG9jaCA9IDcxOTE2M0xMICogMjQgKiA2MCAqIDYwOworCitzdGF0aWMgbG9uZyBsb25nCit1dGNfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQpCit7CisgICAgbG9uZyBsb25nIG9yZGluYWwgPSB5bWRfdG9fb3JkKHllYXIsIG1vbnRoLCBkYXkpOworICAgIHJldHVybiAoKG9yZGluYWwgKiAyNCArIGhvdXIpICogNjAgKyBtaW51dGUpICogNjAgKyBzZWNvbmQ7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsKGxvbmcgbG9uZyB1KQoreworICAgIHN0cnVjdCB0bSBsb2NhbF90aW1lOworICAgIHRpbWVfdCB0OworICAgIHUgLT0gZXBvY2g7CisgICAgdCA9IHU7CisgICAgaWYgKHQgIT0gdSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIC8qIFhYWDogYWRkIGJvdW5kcyBjaGVja2luZyAqLworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmbG9jYWxfdGltZSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiB1dGNfdG9fc2Vjb25kcyhsb2NhbF90aW1lLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9zZWMpOworfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCiAgKiBCdWlsZCBkYXRldGltZSBmcm9tIGEgdGltZV90IGFuZCBhIGRpc3RpbmN0IGNvdW50IG9mIG1pY3Jvc2Vjb25kcy4KQEAgLTQwNTMsNzIgKzQyMzgsNDYgQEAKIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgdGltZV90IHRpbWV0LCBpbnQgdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewotICAgIHN0cnVjdCB0bSAqdG07CisgICAgc3RydWN0IHRtIHRtOworICAgIGludCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZm9sZCA9IDA7CiAKLSAgICB0bSA9IGYoJnRpbWV0KTsKLSAgICBpZiAodG0gPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQorICAgIGlmIChmKHRpbWV0LCAmdG0pICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgeWVhciA9IHRtLnRtX3llYXIgKyAxOTAwOworICAgIG1vbnRoID0gdG0udG1fbW9uICsgMTsKKyAgICBkYXkgPSB0bS50bV9tZGF5OworICAgIGhvdXIgPSB0bS50bV9ob3VyOworICAgIG1pbnV0ZSA9IHRtLnRtX21pbjsKICAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKLSAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAorICAgICAqIGluZGljYXRlZCBieSB0bS50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKICAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKICAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0CiAgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KICAgICAgKi8KLSAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQotICAgICAgICB0bS0+dG1fc2VjID0gNTk7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKLX0KKyAgICBzZWNvbmQgPSBQeV9NSU4oNTksIHRtLnRtX3NlYyk7CiAKLXN0YXRpYyB0aW1lX3QKLV9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCkKLXsKLSAgICB0aW1lX3QgcmVzdWx0OwotICAgIGRvdWJsZSBkaWZmOworICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSAmJiBmID09IF9QeVRpbWVfbG9jYWx0aW1lKSB7CisgICAgICAgIGxvbmcgbG9uZyBwcm9iZV9zZWNvbmRzLCByZXN1bHRfc2Vjb25kcywgdHJhbnNpdGlvbjsKIAotICAgIHJlc3VsdCA9ICh0aW1lX3QpeDsKLSAgICAvKiBIb3cgbXVjaCBpbmZvIGRpZCB3ZSBsb3NlPyAgdGltZV90IG1heSBiZSBhbiBpbnRlZ3JhbCBvcgotICAgICAqIGZsb2F0aW5nIHR5cGUsIGFuZCB3ZSBkb24ndCBrbm93IHdoaWNoLiAgSWYgaXQncyBpbnRlZ3JhbCwKLSAgICAgKiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgQyB0cnVuY2F0ZXMsIHJvdW5kcywgcmV0dXJucyB0aGUgZmxvb3IsCi0gICAgICogZXRjLiAgSWYgd2UgbG9zdCBhIHNlY29uZCBvciBtb3JlLCB0aGUgQyByb3VuZGluZyBpcwotICAgICAqIHVucmVhc29uYWJsZSwgb3IgdGhlIGlucHV0IGp1c3QgZG9lc24ndCBmaXQgaW4gYSB0aW1lX3Q7Ci0gICAgICogY2FsbCBpdCBhbiBlcnJvciByZWdhcmRsZXNzLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjYXN0IHRvCi0gICAgICogdGltZV90IGNhbiBjYXVzZSBhIEMgZXJyb3IgdG9vLCBidXQgbm90aGluZyB3ZSBjYW4gZG8gdG8KLSAgICAgKiB3b3JtIGFyb3VuZCB0aGF0LgotICAgICAqLwotICAgIGRpZmYgPSB4IC0gKGRvdWJsZSlyZXN1bHQ7Ci0gICAgaWYgKGRpZmYgPD0gLTEuMCB8fCBkaWZmID49IDEuMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKLSAgICAgICAgcmVzdWx0ID0gKHRpbWVfdCktMTsKKyAgICAgICAgcmVzdWx0X3NlY29uZHMgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsKKyAgICAgICAgLyogUHJvYmUgbWF4X2ZvbGRfc2Vjb25kcyB0byBkZXRlY3QgYSBmb2xkLiAqLworICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCAtIG1heF9mb2xkX3NlY29uZHMpOworICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0cmFuc2l0aW9uID0gcmVzdWx0X3NlY29uZHMgLSBwcm9iZV9zZWNvbmRzIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24gPCAwKSB7CisgICAgICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCArIHRyYW5zaXRpb24pOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSByZXN1bHRfc2Vjb25kcykKKyAgICAgICAgICAgICAgICBmb2xkID0gMTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBSb3VuZCBhIGRvdWJsZSB0byB0aGUgbmVhcmVzdCBsb25nLiAgfHh8IG11c3QgYmUgc21hbGwgZW5vdWdoIHRvIGZpdAotICogaW4gYSBDIGxvbmc7IHRoaXMgaXMgbm90IGNoZWNrZWQuCi0gKi8KLXN0YXRpYyBkb3VibGUKLV9QeVRpbWVfUm91bmRIYWxmRXZlbihkb3VibGUgeCkKLXsKLSAgICBkb3VibGUgcm91bmRlZCA9IHJvdW5kKHgpOwotICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQotICAgICAgICAvKiBoYWxmd2F5IGNhc2U6IHJvdW5kIHRvIGV2ZW4gKi8KLSAgICAgICAgcm91bmRlZCA9IDIuMCpyb3VuZCh4LzIuMCk7Ci0gICAgcmV0dXJuIHJvdW5kZWQ7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGUsIHNlY29uZCwgdXMsIHR6aW5mbywgZm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopY2xzKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDEyOSwzMiArNDI4OCwxNyBAQAogICogdG8gZ2V0IHRoYXQgbXVjaCBwcmVjaXNpb24gKGUuZy4sIEMgdGltZSgpIGlzbid0IGdvb2QgZW5vdWdoKS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgZG91YmxlIHRpbWVzdGFtcCwKK2RhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgUHlPYmplY3QgKnRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgdGltZV90IHRpbWV0OwotICAgIGRvdWJsZSBmcmFjdGlvbjsKLSAgICBpbnQgdXM7CisgICAgbG9uZyB1czsKIAotICAgIHRpbWV0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRpbWVzdGFtcCk7Ci0gICAgaWYgKHRpbWV0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZXQsICZ1cywgX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcmFjdGlvbiA9IHRpbWVzdGFtcCAtIChkb3VibGUpdGltZXQ7Ci0gICAgdXMgPSAoaW50KV9QeVRpbWVfUm91bmRIYWxmRXZlbihmcmFjdGlvbiAqIDFlNik7Ci0gICAgaWYgKHVzIDwgMCkgewotICAgICAgICAvKiBUcnVuY2F0aW9uIHRvd2FyZHMgemVybyBpcyBub3Qgd2hhdCB3ZSB3YW50ZWQKLSAgICAgICAgICAgZm9yIG5lZ2F0aXZlIG51bWJlcnMgKFB5dGhvbidzIG1vZCBzZW1hbnRpY3MpICovCi0gICAgICAgIHRpbWV0IC09IDE7Ci0gICAgICAgIHVzICs9IDEwMDAwMDA7Ci0gICAgfQotICAgIC8qIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCi0gICAgICogZnVsbCBzZWNvbmQsIHJvdW5kIHVwLiBPdGhlcndpc2UsIFZhbHVlRXJyb3JzIGFyZSByYWlzZWQKLSAgICAgKiBmb3Igc29tZSBmbG9hdHMuICovCi0gICAgaWYgKHVzID09IDEwMDAwMDApIHsKLSAgICAgICAgdGltZXQgKz0gMTsKLSAgICAgICAgdXMgPSAwOwotICAgIH0KLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgdXMsIHR6aW5mbyk7CisKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDIwMSwxNCArNDM0NSwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKChQeU9iamVjdCAqKXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IGxvY2FsdGltZSA6IGdtdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfZ210aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6KTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyMTksNyArNDM2MSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjbm93KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpkdW1teSkKIHsKLSAgICByZXR1cm4gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZShjbHMsIGdtdGltZSwgUHlfTm9uZSk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBfUHlUaW1lX2dtdGltZSwgUHlfTm9uZSk7CiB9CiAKIC8qIFJldHVybiBuZXcgbG9jYWwgZGF0ZXRpbWUgZnJvbSB0aW1lc3RhbXAgKFB5dGhvbiB0aW1lc3RhbXAgLS0gYSBkb3VibGUpLiAqLwpAQCAtNDIyNywyNiArNDM2OSwyNCBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJOIiwgc2VsZik7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNDI1NSwxMSArNDM5NSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBfUHlUaW1lX2dtdGltZSwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDI4OCwyNyArNDQyOCwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2NvbWJpbmUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZGF0ZSIsICJ0aW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsICJ0emluZm8iLCBOVUxMfTsKICAgICBQeU9iamVjdCAqZGF0ZTsKICAgICBQeU9iamVjdCAqdGltZTsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIU8hOmNvbWJpbmUiLCBrZXl3b3JkcywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPIXxPOmNvbWJpbmUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUeXBlLCAmZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7Ci0KLSAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKLSAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSwgJnR6aW5mbykpIHsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoSEFTVFpJTkZPKHRpbWUpKQorICAgICAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0emluZm8gPSBQeV9Ob25lOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQodGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgREFURV9TRVRfRk9MRChyZXN1bHQsIFRJTUVfR0VUX0ZPTEQodGltZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDM3Niw3ICs0NTIxLDcgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBuZXdfZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NDY5LDkgKzQ2MTQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgICAgICBpZiAob2ZmZGlmZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9mZmRpZmYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTIxLDYgKzQ2NjQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKHNlbGYpLCBHRVRfTU9OVEgoc2VsZiksIEdFVF9EQVkoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpKTsKICAgICB9CisgICAgaWYgKGJhc2VyZXByICE9IE5VTEwgJiYgREFURV9HRVRfRk9MRChzZWxmKSAhPSAwKQorICAgICAgICBiYXNlcmVwciA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQoYmFzZXJlcHIsIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogICAgIGlmIChiYXNlcmVwciA9PSBOVUxMIHx8ICEgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gYmFzZXJlcHI7CiAgICAgcmV0dXJuIGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhiYXNlcmVwciwgc2VsZi0+dHppbmZvKTsKQEAgLTQ1MzYsMjUgKzQ2ODEsNTUgQEAKIGRhdGV0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGludCBzZXAgPSAnVCc7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsIE5VTEx9OworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic2VwIiwgInRpbWVzcGVjIiwgTlVMTH07CiAgICAgY2hhciBidWZmZXJbMTAwXTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Qzppc29mb3JtYXQiLCBrZXl3b3JkcywgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Q3M6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXAsICZ0aW1lc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZikpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8ICFIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00NTgxLDYgKzQ3NTYsNzAgQEAKIC8qIE1pc2NlbGxhbmVvdXMgbWV0aG9kcy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ZsaXBfZm9sZChQeU9iamVjdCAqZHQpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oZHQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopZHQpLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFEQVRFX0dFVF9GT0xEKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGR0KSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfZmxpcF9mb2xkX29mZnNldChQeU9iamVjdCAqZHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmZsaXBfZHQ7CisKKyAgICBmbGlwX2R0ID0gZmxpcF9mb2xkKGR0KTsKKyAgICBpZiAoZmxpcF9kdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBkYXRldGltZV91dGNvZmZzZXQoZmxpcF9kdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZsaXBfZHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBFUCA0OTUgZXhjZXB0aW9uOiBXaGVuZXZlciBvbmUgb3IgYm90aCBvZiB0aGUgb3BlcmFuZHMgaW4KKyAqIGludGVyLXpvbmUgY29tcGFyaXNvbiBpcyBzdWNoIHRoYXQgaXRzIHV0Y29mZnNldCgpIGRlcGVuZHMKKyAqIG9uIHRoZSB2YWx1ZSBvZiBpdHMgZm9sZCBmb2xkIGF0dHJpYnV0ZSwgdGhlIHJlc3VsdCBpcyBGYWxzZS4KKyAqCisgKiBSZXR1cm4gMSBpZiBleGNlcHRpb24gYXBwbGllcywgMCBpZiBub3QsICBhbmQgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK3BlcDQ5NV9lcV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9mZnNldF9zZWxmLCBQeU9iamVjdCAqb2Zmc2V0X290aGVyKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIFB5T2JqZWN0ICpmbGlwX29mZnNldDsKKworICAgIGZsaXBfb2Zmc2V0ID0gZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoc2VsZik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X3NlbGYgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfc2VsZikpCisgICAgeworICAgICAgICByZXN1bHQgPSAxOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KG90aGVyKTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChmbGlwX29mZnNldCAhPSBvZmZzZXRfb3RoZXIgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfb3RoZXIpKQorICAgICAgICByZXN1bHQgPSAxOworIGRvbmU6CisgICAgUHlfREVDUkVGKGZsaXBfb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNDYyNyw2ICs0ODY2LDEzIEBACiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX0RhdGVUaW1lICopc2VsZiktPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopb3RoZXIpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob2Zmc2V0MSAhPSBQeV9Ob25lICYmIG9mZnNldDIgIT0gUHlfTm9uZSkgewpAQCAtNDY0Miw2ICs0ODg4LDEzIEBACiAgICAgICAgICAgICBkaWZmID0gR0VUX1REX1NFQ09ORFMoZGVsdGEpIHwKICAgICAgICAgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKGRlbHRhKTsKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKQEAgLTQ2NjcsOSArNDkyMCwyNiBAQAogZGF0ZXRpbWVfaGFzaChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ3MjMsNzYgKzQ5OTMsODAgQEAKICAgICBpbnQgc3MgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBEQVRFX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmbSwgJmQsICZoaCwgJm1tLCAmc3MsICZ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpaWlpTyIsIHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IGRhdGV0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK2xvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVfdCB0aW1lc3RhbXApCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRtICp0aW1lcDsKLSAgICB0aW1lX3QgdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpkZWx0YTsKLSAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKLSAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZV90bTsKICAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOwogCi0gICAgZGVsdGEgPSBuZXdfZGVsdGEoeW1kX3RvX29yZChHRVRfWUVBUih1dGNfdGltZSksIEdFVF9NT05USCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHV0Y190aW1lKSkgLSA3MTkxNjMsCi0gICAgICAgICAgICAgICAgICAgICAgNjAgKiAoNjAgKiBEQVRFX0dFVF9IT1VSKHV0Y190aW1lKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHV0Y190aW1lKSkgKwotICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHRpbWVzdGFtcCwgJmxvY2FsX3RpbWVfdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7Ci0gICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKLSAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7Ci0gICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeV9ERUNSRUYoZGVsdGEpOwotICAgIHRpbWVzdGFtcCA9IFB5TG9uZ19Bc0xvbmcoc2Vjb25kcyk7Ci0gICAgUHlfREVDUkVGKHNlY29uZHMpOwotICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdGltZXAgPSBsb2NhbHRpbWUoJnRpbWVzdGFtcCk7CiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQotICAgIHpvbmUgPSB0aW1lcC0+dG1fem9uZTsKLSAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCB0aW1lcC0+dG1fZ210b2ZmLCAwLCAxKTsKKyAgICB6b25lID0gbG9jYWxfdGltZV90bS50bV96b25lOworICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIGxvY2FsX3RpbWVfdG0udG1fZ210b2ZmLCAwLCAxKTsKICNlbHNlIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lOwotICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKHRpbWVwLT50bV95ZWFyICsgMTkwMCwgdGltZXAtPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX21kYXksIHRpbWVwLT50bV9ob3VyLCB0aW1lcC0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9zZWMsIERBVEVfR0VUX01JQ1JPU0VDT05EKHV0Y190aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZS0+dHppbmZvKTsKLSAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgKFB5T2JqZWN0Kil1dGNfdGltZSk7Ci0gICAgICAgIC8qIFhYWDogYmVmb3JlIHJlbHlpbmcgb24gdHpuYW1lLCB3ZSBzaG91bGQgY29tcGFyZSBkZWx0YQotICAgICAgICAgICB0byB0aGUgb2Zmc2V0IGltcGxpZWQgYnkgdGltZXpvbmUvYWx0em9uZSAqLwotICAgICAgICBpZiAoZGF5bGlnaHQgJiYgdGltZXAtPnRtX2lzZHN0ID49IDApCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lW3RpbWVwLT50bV9pc2RzdCAlIDJdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lWzBdOworICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZSwgKnV0Y190aW1lOworICAgICAgICBzdHJ1Y3QgdG0gdXRjX3RpbWVfdG07CisgICAgICAgIGNoYXIgYnVmWzEwMF07CisgICAgICAgIHN0cmZ0aW1lKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlWiIsICZsb2NhbF90aW1lX3RtKTsKKyAgICAgICAgem9uZSA9IGJ1ZjsKKyAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZShsb2NhbF90aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fc2VjLCAwLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVRpbWVfZ210aW1lKHRpbWVzdGFtcCwgJnV0Y190aW1lX3RtKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHV0Y190aW1lID0gbmV3X2RhdGV0aW1lKHV0Y190aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmICh1dGNfdGltZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIHV0Y190aW1lKTsKICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICBQeV9ERUNSRUYodXRjX3RpbWUpOwogICAgIH0KICNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgaWYgKGRlbHRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoem9uZSAhPSBOVUxMKSB7CiAgICAgICAgIG5hbWVvID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgICAgIGlmIChuYW1lbyA9PSBOVUxMKQpAQCAtNDgwNSwxMiArNTA3OSw2NSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK3sKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKworICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopdXRjX3RpbWUsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOworICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlY29uZHMgPSBkaXZpZGVfdGltZWRlbHRhX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EZWx0YSAqKWRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRpbWVzdGFtcCA9IF9QeUxvbmdfQXNUaW1lX3Qoc2Vjb25kcyk7CisgICAgUHlfREVDUkVGKHNlY29uZHMpOworICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCBmb2xkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoUHlEYXRlVGltZV9EYXRlVGltZSAqbG9jYWxfZHQpCit7CisgICAgbG9uZyBsb25nIHNlY29uZHM7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChsb2NhbF9kdCkpOworICAgIGlmIChzZWNvbmRzID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2sgKi8KKyAgICB0aW1lc3RhbXAgPSBzZWNvbmRzIC0gZXBvY2g7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKIHN0YXRpYyBQeURhdGVUaW1lX0RhdGVUaW1lICoKIGRhdGV0aW1lX2FzdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBQeU9iamVjdCAqdGVtcDsKKyAgICBQeU9iamVjdCAqc2VsZl90emluZm87CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CiAKQEAgLTQ4MjEsMjcgKzUxNDgsMjcgQEAKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCi0gICAgICAgIGdvdG8gTmVlZEF3YXJlOworICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKSB7CisgICAgICAgIHNlbGZfdHppbmZvID0gbG9jYWxfdGltZXpvbmVfZnJvbV9sb2NhbChzZWxmKTsKKyAgICAgICAgaWYgKHNlbGZfdHppbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmX3R6aW5mbyA9IHNlbGYtPnR6aW5mbzsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGZfdHppbmZvKTsKKyAgICB9CiAKICAgICAvKiBDb252ZXJzaW9uIHRvIHNlbGYncyBvd24gdGltZSB6b25lIGlzIGEgTk9QLiAqLwotICAgIGlmIChzZWxmLT50emluZm8gPT0gdHppbmZvKSB7CisgICAgaWYgKHNlbGZfdHppbmZvID09IHR6aW5mbykgeworICAgICAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KIAogICAgIC8qIENvbnZlcnQgc2VsZiB0byBVVEMuICovCi0gICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KChQeU9iamVjdCAqKXNlbGYsIE5VTEwpOworICAgIG9mZnNldCA9IGNhbGxfdXRjb2Zmc2V0KHNlbGZfdHppbmZvLCAoUHlPYmplY3QgKilzZWxmKTsKKyAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmZzZXQpOwotICAgICAgTmVlZEF3YXJlOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImFzdGltZXpvbmUoKSBjYW5ub3QgYmUgYXBwbGllZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBuYWl2ZSBkYXRldGltZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICAvKiByZXN1bHQgPSBzZWxmIC0gb2Zmc2V0ICovCiAgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOwpAQCAtNDg0OSw2ICs1MTc2LDMyIEBACiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qIE1ha2Ugc3VyZSByZXN1bHQgaXMgYXdhcmUgYW5kIFVUQy4gKi8KKyAgICBpZiAoIUhBU1RaSU5GTyhyZXN1bHQpKSB7CisgICAgICAgIHRlbXAgPSAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopCisgICAgICAgICAgICAgICAgICAgbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlc3VsdCBpcyBhbHJlYWR5IGF3YXJlIC0ganVzdCByZXBsYWNlIHR6aW5mby4gKi8KKyAgICAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOworICAgICAgICByZXN1bHQtPnR6aW5mbyA9IFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0LT50emluZm8pOworICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgfQorCiAgICAgLyogQXR0YWNoIG5ldyB0emluZm8gYW5kIGxldCBmcm9tdXRjKCkgZG8gdGhlIHJlc3QuICovCiAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOwogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkgewpAQCAtNDg5Niw2ICs1MjQ5LDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogfQogCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCkKK3sKKyAgICBsb25nIGxvbmcgdCwgYSwgYiwgdTEsIHUyLCB0MSwgdDIsIGx0OworICAgIHQgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgLyogT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LiAqLworICAgIGx0ID0gbG9jYWwodCk7CisgICAgaWYgKGx0ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgYSA9IGx0IC0gdDsKKyAgICB1MSA9IHQgLSBhOworICAgIHQxID0gbG9jYWwodTEpOworICAgIGlmICh0MSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MSA9PSB0KSB7CisgICAgICAgIC8qIFdlIGZvdW5kIG9uZSBzb2x1dGlvbiwgYnV0IGl0IG1heSBub3QgYmUgdGhlIG9uZSB3ZSBuZWVkLgorICAgICAgICAgKiBMb29rIGZvciBhbiBlYXJsaWVyIHNvbHV0aW9uIChpZiBgZm9sZGAgaXMgMCksIG9yIGEKKyAgICAgICAgICogbGF0ZXIgb25lIChpZiBgZm9sZGAgaXMgMSkuICovCisgICAgICAgIGlmIChmb2xkKQorICAgICAgICAgICAgdTIgPSB1MSArIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHUyID0gdTEgLSBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBsdCA9IGxvY2FsKHUyKTsKKyAgICAgICAgaWYgKGx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBiID0gbHQgLSB1MjsKKyAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAgICAgIHJldHVybiB1MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGIgPSB0MSAtIHUxOworICAgICAgICBhc3NlcnQoYSAhPSBiKTsKKyAgICB9CisgICAgdTIgPSB0IC0gYjsKKyAgICB0MiA9IGxvY2FsKHUyKTsKKyAgICBpZiAodDIgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDIgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUyOworICAgIGlmICh0MSA9PSB0KQorICAgICAgICByZXR1cm4gdTE7CisgICAgLyogV2UgaGF2ZSBmb3VuZCBib3RoIG9mZnNldHMgYSBhbmQgYiwgYnV0IG5laXRoZXIgdCAtIGEgbm9yIHQgLSBiIGlzCisgICAgICogYSBzb2x1dGlvbi4gIFRoaXMgbWVhbnMgdCBpcyBpbiB0aGUgZ2FwLiAqLworICAgIHJldHVybiBmb2xkP1B5X01JTih1MSwgdTIpOlB5X01BWCh1MSwgdTIpOworfQorCisvKiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KKyNkZWZpbmUgRVBPQ0hfU0VDT05EUyAoNzE5MTYzTEwgKiAyNCAqIDYwICogNjApCisKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV90aW1lc3RhbXAoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKQEAgLTQ5MTAsMzMgKzUzMTMsMTggQEAKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cnVjdCB0bSB0aW1lOwotICAgICAgICB0aW1lX3QgdGltZXN0YW1wOwotICAgICAgICBtZW1zZXQoKHZvaWQgKikgJnRpbWUsICdcMCcsIHNpemVvZihzdHJ1Y3QgdG0pKTsKLSAgICAgICAgdGltZS50bV95ZWFyID0gR0VUX1lFQVIoc2VsZikgLSAxOTAwOwotICAgICAgICB0aW1lLnRtX21vbiA9IEdFVF9NT05USChzZWxmKSAtIDE7Ci0gICAgICAgIHRpbWUudG1fbWRheSA9IEdFVF9EQVkoc2VsZik7Ci0gICAgICAgIHRpbWUudG1faG91ciA9IERBVEVfR0VUX0hPVVIoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fbWluID0gREFURV9HRVRfTUlOVVRFKHNlbGYpOwotICAgICAgICB0aW1lLnRtX3NlYyA9IERBVEVfR0VUX1NFQ09ORChzZWxmKTsKLSAgICAgICAgdGltZS50bV93ZGF5ID0gLTE7Ci0gICAgICAgIHRpbWUudG1faXNkc3QgPSAtMTsKLSAgICAgICAgdGltZXN0YW1wID0gbWt0aW1lKCZ0aW1lKTsKLSAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkKLSNpZm5kZWYgX0FJWAotICAgICAgICAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsCi0gICAgICAgICAgICAgKiBidXQgdG1fd2RheSBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLwotICAgICAgICAgICAgJiYgdGltZS50bV93ZGF5ID09IC0xCi0jZWxzZQotICAgICAgICAgICAgLyogb24gQUlYLCB0bV93ZGF5IGlzIGFsd2F5cyBzZXRzLCBldmVuIG9uIGVycm9yICovCi0jZW5kaWYKLSAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgICAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CisgICAgICAgIGlmIChzZWNvbmRzID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHRpbWVzdGFtcCArIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKKyAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMgLSBFUE9DSF9TRUNPTkRTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5NTYsNyArNTM0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDk2Niw3ICs1MzU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICBHRVRfRFRfVFpJTkZPKHNlbGYpKTsKKyAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MDE4LDcgKzU0MDgsNyBAQAogICogX19nZXRzdGF0ZV9fIGlzbid0IGV4cG9zZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQorZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC01MDI2LDYgKzU0MTYsOSBAQAogICAgIGJhc2VzdGF0ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilzZWxmLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKICAgICBpZiAoYmFzZXN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHByb3RvID4gMyAmJiBEQVRFX0dFVF9GT0xEKHNlbGYpKQorICAgICAgICAgICAgLyogU2V0IHRoZSBmaXJzdCBiaXQgb2YgdGhlIHRoaXJkIGJ5dGUgKi8KKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJhc2VzdGF0ZSlbMl0gfD0gKDEgPDwgNyk7CiAgICAgICAgIGlmICghIEhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygxLCBiYXNlc3RhdGUpOwogICAgICAgICBlbHNlCkBAIC01MDM2LDkgKzU0MjksMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX3JlZHVjZV9leChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcHJvdG87CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZiwgcHJvdG8pKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3JlZHVjZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZiwgMikpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZGF0ZXRpbWVfbWV0aG9kc1tdID0gewpAQCAtNTA5Myw5ICs1NDk2LDEyIEBACiAKICAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2lzb2Zvcm1hdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJbc2VwXSAtPiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCAiCi0gICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRISDpNTTpTU1subW1tbW1tXVsrSEg6TU1dLlxuXG4iCisgICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dWytISDpNTV0uXG4iCiAgICAgICAgICAgICAgICAic2VwIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGhlIHllYXIgZnJvbSB0aGUgdGltZSwgYW5kICIKLSAgICAgICAgICAgICAgICJkZWZhdWx0cyB0byAnVCcuIil9LAorICAgICAgICAgICAgICAgImRlZmF1bHRzIHRvICdUJy5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUiCisgICAgICAgICAgICAgICAiIChhbGxvd2VkIHZhbHVlcyBhcmUgJ2F1dG8nLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywiCisgICAgICAgICAgICAgICAiICdtaWxsaXNlY29uZHMnLCBhbmQgJ21pY3Jvc2Vjb25kcycpLlxuIil9LAogCiAgICAgeyJ1dGNvZmZzZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdXRjb2Zmc2V0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc2VsZi50emluZm8udXRjb2Zmc2V0KHNlbGYpLiIpfSwKQEAgLTUxMTIsMTMgKzU1MTgsMTYgQEAKICAgICB7ImFzdGltZXpvbmUiLCAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2FzdGltZXpvbmUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigidHogLT4gY29udmVydCB0byBsb2NhbCB0aW1lIGluIG5ldyB0aW1lem9uZSB0elxuIil9LAogCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZV9leCwgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCisKICAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfcmVkdWNlLCAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfXygpIC0+IChjbHMsIHN0YXRlKSIpfSwKIAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBkYXRldGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkYXRldGltZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLHR6aW5mb11dXV1dKVxuXAogXG5cCiBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuXG5cCkBAIC01MjAxLDcgKzU2MTAsOSBAQAogICAgIG5ld190aW1lX2V4LAogICAgIG5ld19kZWx0YV9leCwKICAgICBkYXRldGltZV9mcm9tdGltZXN0YW1wLAotICAgIGRhdGVfZnJvbXRpbWVzdGFtcAorICAgIGRhdGVfZnJvbXRpbWVzdGFtcCwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyLAorICAgIG5ld190aW1lX2V4MgogfTsKIAogCkBAIC01MjgyLDEyICs1NjkzLDEyIEBACiAgICAgLyogdGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9UaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld190aW1lKDAsIDAsIDAsIDAsIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTMwMCwxMiArNTcxMSwxMiBAQAogICAgIC8qIGRhdGV0aW1lIHZhbHVlcyAqLwogICAgIGQgPSBQeURhdGVUaW1lX0RhdGVUaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X2RhdGV0aW1lKDEsIDEsIDEsIDAsIDAsIDAsIDAsIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1pbiIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCi0gICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWF4IiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CkBAIC01MzQ3LDcgKzU3NTgsNyBAQAogCiAgICAgLyogRXBvY2ggKi8KICAgICBQeURhdGVUaW1lX0Vwb2NoID0gbmV3X2RhdGV0aW1lKDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywgMCk7CiAgICAgaWYgKFB5RGF0ZVRpbWVfRXBvY2ggPT0gTlVMTCkKICAgICAgIHJldHVybiBOVUxMOwogCkBAIC01MzgyLDE5ICs1NzkzLDE5IEBACiAgICAgLyogQSA0LXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciA0IHNpbmdsZSB5ZWFycy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0WSA9PSA0ICogMzY1ICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNFkgPT0gNCAqIDM2NSArIDEpOwogICAgIGFzc2VydChESTRZID09IGRheXNfYmVmb3JlX3llYXIoNCsxKSk7CiAKICAgICAvKiBTaW1pbGFybHksIGEgNDAwLXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkCiAgICAgICogZ2V0IGZyb20gcGFzdGluZyB0b2dldGhlciA0IDEwMC15ZWFyIGN5Y2xlcy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKICAgICBhc3NlcnQoREk0MDBZID09IGRheXNfYmVmb3JlX3llYXIoNDAwKzEpKTsKIAogICAgIC8qIE9UT0gsIGEgMTAwLXllYXIgY3ljbGUgaGFzIG9uZSBmZXdlciBsZWFwIGRheSB0aGFuIHdlJ2QgZ2V0IGZyb20KICAgICAgKiBwYXN0aW5nIHRvZ2V0aGVyIDI1IDQteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREkxMDBZID09IDI1ICogREk0WSAtIDEpOwogICAgIGFzc2VydChESTEwMFkgPT0gZGF5c19iZWZvcmVfeWVhcigxMDArMSkpOwogCiAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCBlYTg3OTBiLi44MDQ5NzhhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMTQsMTYgKzE0LDE2IEBACiAgKi8KICNpZiBkZWZpbmVkKEhBVkVfTkRCTV9IKQogI2luY2x1ZGUgPG5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fTkRCTV9IKQogI2luY2x1ZGUgPGdkYm0vbmRibS5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJHTlUgZ2RibSI7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0RCTV9EQVNIX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtLW5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0JFUktEQl9IKQogI2luY2x1ZGUgPGRiLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkJlcmtlbGV5IERCIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkJlcmtlbGV5IERCIjsKICNlbHNlCiAjZXJyb3IgIk5vIG5kYm0uaCBhdmFpbGFibGUhIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKaW5kZXggNmVmZGM5MS4uOTk1Njc4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaW5jbHVkZSAiZG9jc3RyaW5ncy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogCiAKICNpZiAhZGVmaW5lZChNUERfVkVSU0lPTl9IRVgpIHx8IE1QRF9WRVJTSU9OX0hFWCA8IDB4MDIwNDAxMDAKQEAgLTE4OTAsMTIgKzE4ODksMTMgQEAKIC8qIFJldHVybiB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgYSBudW1lcmljIFVuaWNvZGUgc3RyaW5nLiBUaGUgbnVtZXJpYwogICAgc3RyaW5nIG1heSBjb250YWluIGFzY2lpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFsxLCAxMjddLCBhbnkgVW5pY29kZQogICAgc3BhY2UgYW5kIGFueSB1bmljb2RlIGRpZ2l0LiBJZiBzdHJpcF93cyBpcyB0cnVlLCBsZWFkaW5nIGFuZCB0cmFpbGluZwotICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4KKyAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuIElmIGlnbm9yZV91bmRlcnNjb3JlcyBpcyB0cnVlLCB1bmRlcnNjb3JlcyBhcmUKKyAgIGlnbm9yZWQuCiAKICAgIFJldHVybiBOVUxMIGlmIG1hbGxvYyBmYWlscyBhbmQgYW4gZW1wdHkgc3RyaW5nIGlmIGludmFsaWQgY2hhcmFjdGVycwogICAgYXJlIGZvdW5kLiAqLwogc3RhdGljIGNoYXIgKgotbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzKQorbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzLCBpbnQgaWdub3JlX3VuZGVyc2NvcmVzKQogewogICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtMTkzMCw2ICsxOTMwLDkgQEAKIAogICAgIGZvciAoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKGlnbm9yZV91bmRlcnNjb3JlcyAmJiBjaCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPD0gMTI3KSB7CiAgICAgICAgICAgICAqY3ArKyA9IGNoOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMDEyLDcgKzIwMTUsNyBAQAogICAgIFB5T2JqZWN0ICpkZWM7CiAgICAgY2hhciAqczsKIAotICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDApOworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDAsIDApOwogICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjAzMiw3ICsyMDM1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxLCAxKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTMzOTQsNiArMzM5NywxMDUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHB5bG9uZzsKIH0KIAorLyogQ29udmVydCBhIERlY2ltYWwgdG8gaXRzIGV4YWN0IGludGVnZXIgcmF0aW8gcmVwcmVzZW50YXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FzX2ludGVnZXJfcmF0aW8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleHBvbmVudCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRChzZWxmKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQoc2VsZikpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworCisgICAgdG1wID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghbXBkX3Fjb3B5KE1QRCh0bXApLCBNUEQoc2VsZiksICZzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleHAgPSBtcGRfaXN6ZXJvKE1QRCh0bXApKSA/IDAgOiBNUEQodG1wKS0+ZXhwOworICAgIE1QRCh0bXApLT5leHAgPSAwOworCisgICAgLyogY29udGV4dCBhbmQgcm91bmRpbmcgYXJlIHVudXNlZCBoZXJlOiB0aGUgY29udmVyc2lvbiBpcyBleGFjdCAqLworICAgIG51bWVyYXRvciA9IGRlY19hc19sb25nKHRtcCwgY29udGV4dCwgTVBEX1JPVU5EX0ZMT09SKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBleHBvbmVudCA9IFB5TG9uZ19Gcm9tU3NpemVfdChleHAgPCAwID8gLWV4cCA6IGV4cCk7CisgICAgaWYgKGV4cG9uZW50ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB0bXAgPSBQeUxvbmdfRnJvbUxvbmcoMTApOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5X1NFVFJFRihleHBvbmVudCwgX3B5X2xvbmdfcG93ZXIodG1wLCBleHBvbmVudCwgUHlfTm9uZSkpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGV4cCA+PSAwKSB7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX211bHRpcGx5KG51bWVyYXRvciwgZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGVub21pbmF0b3IgPSBleHBvbmVudDsKKyAgICAgICAgZXhwb25lbnQgPSBOVUxMOworICAgICAgICB0bXAgPSBfUHlMb25nX0dDRChudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShudW1lcmF0b3IsIHRtcCkpOworICAgICAgICBQeV9TRVRSRUYoZGVub21pbmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShkZW5vbWluYXRvciwgdG1wKSk7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwgfHwgZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGV4cG9uZW50KTsKKyAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKKyAgICBQeV9YREVDUkVGKG51bWVyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5RGVjX1RvSW50ZWdyYWxWYWx1ZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00NzAyLDYgKzQ4MDQsNyBAQAogICAvKiBNaXNjZWxsYW5lb3VzICovCiAgIHsgImZyb21fZmxvYXQiLCBkZWNfZnJvbV9mbG9hdCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGRvY19mcm9tX2Zsb2F0IH0sCiAgIHsgImFzX3R1cGxlIiwgUHlEZWNfQXNUdXBsZSwgTUVUSF9OT0FSR1MsIGRvY19hc190dXBsZSB9LAorICB7ICJhc19pbnRlZ2VyX3JhdGlvIiwgZGVjX2FzX2ludGVnZXJfcmF0aW8sIE1FVEhfTk9BUkdTLCBkb2NfYXNfaW50ZWdlcl9yYXRpbyB9LAogCiAgIC8qIFNwZWNpYWwgbWV0aG9kcyAqLwogICB7ICJfX2NvcHlfXyIsIGRlY19jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCA3MTAyOWE5Li5mN2ZkNmU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtNzAsNiArNzAsMTUgQEAKIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCiBcbiIpOwogCitQeURvY19TVFJWQVIoZG9jX2FzX2ludGVnZXJfcmF0aW8sCisiYXNfaW50ZWdlcl9yYXRpbygkc2VsZiwgLylcbi0tXG5cblwKK0RlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIC0+IChpbnQsIGludClcblwKK1xuXAorUmV0dXJuIGEgcGFpciBvZiBpbnRlZ2Vycywgd2hvc2UgcmF0aW8gaXMgZXhhY3RseSBlcXVhbCB0byB0aGUgb3JpZ2luYWxcblwKK0RlY2ltYWwgYW5kIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvci4gVGhlIHJhdGlvIGlzIGluIGxvd2VzdCB0ZXJtcy5cblwKK1JhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgYSBWYWx1ZUVycm9yIG9uIE5hTnMuXG5cCitcbiIpOworCiBQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKICJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKaW5kZXggMzVkZTZiOC4uZGZlMTUyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSAiY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCiAjaW5jbHVkZSAiYmFzZWFyaXRoLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwppbmRleCBhNDVhNDI5Li4zYWFkZmIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImlvLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCmluZGV4IDBmNDFmZTUuLmE4NTRlMDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwpAQCAtMzAsNyArMzAsMTIgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKKworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjMyKQorI2VuZGlmCiAKIAogLyogR3VhcmFudGVlZCBtaW5pbXVtIGFsbG9jYXRpb24gZm9yIGEgY29lZmZpY2llbnQuIE1heSBiZSBjaGFuZ2VkIG9uY2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCnJlbmFtZSB0byBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaAppbmRleCA5Yzk4ZDFhLi5lZmQ3MTE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oCkBAIC0yNiw4ICsyNiw4IEBACiAgKi8KIAogCi0jaWZuZGVmIE1FTU9SWV9ICi0jZGVmaW5lIE1FTU9SWV9ICisjaWZuZGVmIE1QQUxMT0NfSAorI2RlZmluZSBNUEFMTE9DX0gKIAogCiAjaW5jbHVkZSAibXBkZWNpbWFsLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwppbmRleCA1OTNmOWY1Li4zMjhhYjkyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJiaXRzLmgiCiAjaW5jbHVkZSAiY29udm9sdXRlLmgiCiAjaW5jbHVkZSAiY3J0LmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAibXBhbGxvYy5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgInVtb2Rhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAppbmRleCA1Y2E3NDEzLi5kYWYyYjlkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKQEAgLTQ4LDYgKzQ4LDggQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCiAjaWZkZWYgX01TQ19WRVIKICAgI2luY2x1ZGUgInZjY29tcGF0LmgiCkBAIC01OSwxMiArNjEsNiBAQAogICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5ECiAgICNkZWZpbmUgRVhUSU5MSU5FIGV4dGVybiBpbmxpbmUKICNlbHNlCi0gICNpZmRlZiBIQVZFX1NURElOVF9ICi0gICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAjZW5kaWYKLSAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAjZW5kaWYKICAgI2lmbmRlZiBfX0dOVUNfU1REQ19JTkxJTkVfXwogICAgICNkZWZpbmUgX19HTlVDX1NURENfSU5MSU5FX18gMQogICAjZW5kaWYKQEAgLTEwOCw5ICsxMDQsOSBAQAogCiAjZGVmaW5lIE1QRF9NQUpPUl9WRVJTSU9OIDIKICNkZWZpbmUgTVBEX01JTk9SX1ZFUlNJT04gNAotI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAxCisjZGVmaW5lIE1QRF9NSUNST19WRVJTSU9OIDIKIAotI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjEiCisjZGVmaW5lIE1QRF9WRVJTSU9OICIyLjQuMiIKIAogI2RlZmluZSBNUERfVkVSU0lPTl9IRVggKChNUERfTUFKT1JfVkVSU0lPTiA8PCAyNCkgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE1QRF9NSU5PUl9WRVJTSU9OIDw8IDE2KSB8IFwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaAppbmRleCBmNThlMDIzLi5kZDEzMWQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCkBAIC0zMiw3ICszMiw2IEBACiAKIC8qIFZpc3VhbCBDIGZpeGVzOiBubyBzdGRpbnQuaCwgbm8gc25wcmludGYgLi4uICovCiAjaWZkZWYgX01TQ19WRVIKLSAgI2luY2x1ZGUgInZjc3RkaW50LmgiCiAgICN1bmRlZiBpbmxpbmUKICAgI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKICAgI3VuZGVmIHJhbmRvbQpAQCAtNDksMTAgKzQ4LDYgQEAKICAgI3VuZGVmIHN0cnRvbGwKICAgI2RlZmluZSBzdHJ0b2xsIF9zdHJ0b2k2NAogICAjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCi0gICNkZWZpbmUgUFJJaTY0ICJJNjRpIgotICAjZGVmaW5lIFBSSXU2NCAiSTY0dSIKLSAgI2RlZmluZSBQUklpMzIgIkkzMmkiCi0gICNkZWZpbmUgUFJJdTMyICJJMzJ1IgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggYWI3ZDViZC4uZjkwNzUzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC01MCw4ICs1MCw4IEBACiAgICAgICAgICdfX2Fic19fJywgJ19fYm9vbF9fJywgJ19fY2VpbF9fJywgJ19fY29tcGxleF9fJywgJ19fY29weV9fJywKICAgICAgICAgJ19fZmxvb3JfXycsICdfX2Zsb2F0X18nLCAnX19oYXNoX18nLCAnX19pbnRfXycsICdfX25lZ19fJywKICAgICAgICAgJ19fcG9zX18nLCAnX19yZWR1Y2VfXycsICdfX3JlcHJfXycsICdfX3N0cl9fJywgJ19fdHJ1bmNfXycsCi0gICAgICAgICdhZGp1c3RlZCcsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywgJ2NvcHlfYWJzJywKLSAgICAgICAgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAorICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfaW50ZWdlcl9yYXRpbycsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywKKyAgICAgICAgJ2NvcHlfYWJzJywgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAogICAgICAgICAnaXNfbmFuJywgJ2lzX3FuYW4nLCAnaXNfc2lnbmVkJywgJ2lzX3NuYW4nLCAnaXNfemVybycsICdyYWRpeCcKICAgICApLAogICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgpAQCAtMTI4LDcgKzEyOCw3IEBACiAjIEZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYSByZXN0cmljdGVkIGV4cG9uZW50IHJhbmdlIGZvciByZWFzb25hYmxlIHJ1bnRpbWVzLgogVW5hcnlSZXN0cmljdGVkID0gWwogICAnX19jZWlsX18nLCAnX19mbG9vcl9fJywgJ19faW50X18nLCAnX190cnVuY19fJywKLSAgJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX3ZhbHVlJworICAnYXNfaW50ZWdlcl9yYXRpbycsICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKIF0KIAogQmluYXJ5UmVzdHJpY3RlZCA9IFsnX19yb3VuZF9fJ10KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IDdkNTBkZDAuLjJjZGE5OGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtNTcsOSArNTcsOSBAQAogICAgdGhhdCBhbGwgdXNlIG9mIHRleHQgYW5kIHRhaWwgYXMgb2JqZWN0IHBvaW50ZXJzIG11c3QgYmUgd3JhcHBlZCBpbgogICAgSk9JTl9PQkouICBzZWUgY29tbWVudHMgaW4gdGhlIEVsZW1lbnRPYmplY3QgZGVmaW5pdGlvbiBmb3IgbW9yZQogICAgaW5mby4gKi8KLSNkZWZpbmUgSk9JTl9HRVQocCkgKChQeV91aW50cHRyX3QpIChwKSAmIDEpCi0jZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgoUHlfdWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKLSNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+KFB5X3VpbnRwdHJfdCkxKSkKKyNkZWZpbmUgSk9JTl9HRVQocCkgKCh1aW50cHRyX3QpIChwKSAmIDEpCisjZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgodWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKKyNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgodWludHB0cl90KSAocCkgJiB+KHVpbnRwdHJfdCkxKSkKIAogLyogUHlfQ0xFQVIgZm9yIGEgUHlPYmplY3QqIHRoYXQgdXNlcyBhIGpvaW4gZmxhZy4gUGFzcyB0aGUgcG9pbnRlciBieQogICogcmVmZXJlbmNlIHNpbmNlIHRoaXMgZnVuY3Rpb24gc2V0cyBpdCB0byBOVUxMLgpAQCAtMTI5LDMwICsxMjksNiBAQAogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCi1kZWVwY29weShQeU9iamVjdCogb2JqZWN0LCBQeU9iamVjdCogbWVtbykKLXsKLSAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCi0gICAgUHlPYmplY3QqIGFyZ3M7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKLQotICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiZGVlcGNvcHkgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgb2JqZWN0LCBtZW1vKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3Qoc3QtPmRlZXBjb3B5X29iaiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUxPQ0FMKFB5T2JqZWN0KikKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKICAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCkBAIC00MjAsMTAgKzM5Niw4IEBACiAgICAgUHlfWERFQ1JFRihhdHRyaWIpOwogCiAgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLwotICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOwogICAgIFB5X0lOQ1JFRih0YWcpOwotICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoc2VsZl9lbGVtLT50YWcsIHRhZyk7CiAKICAgICB0bXAgPSBzZWxmX2VsZW0tPnRleHQ7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtNzUwLDYgKzcyNCw5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CiB9CiAKKy8qIEhlbHBlciBmb3IgYSBkZWVwIGNvcHkuICovCitMT0NBTChQeU9iamVjdCAqKSBkZWVwY29weShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19kZWVwY29weV9fCiAKQEAgLTgyMiw3ICs3OTksNyBAQAogICAgIH0KIAogICAgIC8qIGFkZCBvYmplY3QgdG8gbWVtbyBkaWN0aW9uYXJ5IChzbyBkZWVwY29weSB3b24ndCB2aXNpdCBpdCBhZ2FpbikgKi8KLSAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgoUHlfdWludHB0cl90KSBzZWxmKTsKKyAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgodWludHB0cl90KSBzZWxmKTsKICAgICBpZiAoIWlkKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC04NDAsNiArODE3LDUzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK0xPQ0FMKFB5T2JqZWN0ICopCitkZWVwY29weShQeU9iamVjdCAqb2JqZWN0LCBQeU9iamVjdCAqbWVtbykKK3sKKyAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3Q7CisgICAgUHlPYmplY3QgKnN0YWNrWzJdOworCisgICAgLyogRmFzdCBwYXRocyAqLworICAgIGlmIChvYmplY3QgPT0gUHlfTm9uZSB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIGlmIChQeV9SRUZDTlQob2JqZWN0KSA9PSAxKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICBpbnQgc2ltcGxlID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChvYmplY3QsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgIVB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2ltcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiBQeURpY3RfQ29weShvYmplY3QpOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoIHRvIGdlbmVyYWwgY2FzZSAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fKChFbGVtZW50T2JqZWN0ICopb2JqZWN0LCBtZW1vKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEdlbmVyYWwgY2FzZSAqLworICAgIHN0ID0gRVRfU1RBVEVfR0xPQkFMOworICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3RhY2tbMF0gPSBvYmplY3Q7CisgICAgc3RhY2tbMV0gPSBtZW1vOworICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGwoc3QtPmRlZXBjb3B5X29iaiwgc3RhY2ssIDIpOworfQorCisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fc2l6ZW9mX18gLT4gUHlfc3NpemVfdAogCkBAIC0xNzY1LDcgKzE3ODksNyBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOwogCiAgICAgICAgICAgICAvKiByZWN5Y2xlIGlzIGEgbGlzdCB0aGF0IHdpbGwgY29udGFpbiBhbGwgdGhlIGNoaWxkcmVuCiAgICAgICAgICAgICAgKiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCkBAIC0xODk0LDkyICsxOTE4LDkwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCitlbGVtZW50X3RhZ19nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBQeU9iamVjdCogcmVzOwotICAgIGNoYXIgKm5hbWUgPSAiIjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCi0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotCi0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBoYW5kbGUgY29tbW9uIGF0dHJpYnV0ZXMgZmlyc3QgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IHNlbGYtPnRhZzsKLSAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7Ci0gICAgICAgIFB5X1hJTkNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvKiBtZXRob2RzICovCi0gICAgcmVzID0gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0Kikgc2VsZiwgbmFtZW9iaik7Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmV0dXJuIHJlczsKLQotICAgIC8qIGxlc3MgY29tbW9uIGF0dHJpYnV0ZXMgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBQeU9iamVjdCAqcmVzID0gc2VsZi0+dGFnOwogICAgIFB5X0lOQ1JFRihyZXMpOwogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQKLWVsZW1lbnRfc2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmosIFB5T2JqZWN0KiB2YWx1ZSkKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfdGV4dF9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBjaGFyICpuYW1lID0gIiI7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4gLTE7CitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RhaWxfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RhaWwoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfYXR0cmliX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgICAgIHNlbGYtPnRleHQgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRleHQpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOwotICAgICAgICBzZWxmLT50YWlsID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIsIHZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiQ2FuJ3Qgc2V0IGFyYml0cmFyeSBhdHRyaWJ1dGVzIG9uIEVsZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIC0xOworLyogbWFjcm8gZm9yIHNldHRlciB2YWxpZGF0aW9uICovCisjZGVmaW5lIF9WQUxJREFURV9BVFRSX1ZBTFVFKFYpICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgoVikgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvciwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBlbGVtZW50IGF0dHJpYnV0ZSIpOyAgICAgIFwKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCitzdGF0aWMgaW50CitlbGVtZW50X3RhZ19zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT50YWcsIHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF90ZXh0X3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKKyAgICBzZWxmLT50ZXh0ID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGFpbF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7CisgICAgc2VsZi0+dGFpbCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2F0dHJpYl9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5OTksMjIgKzIwMjEsMjIgQEAKICAqIHByZS1vcmRlciB0cmF2ZXJzYWwuIFRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggc3ViLWVsZW1lbnQgc2hvdWxkIGJlIHJldHVybmVkCiAgKiBuZXh0LCBhIHN0YWNrIG9mIHBhcmVudHMgaXMgbWFpbnRhaW5lZC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YWNrLWJhc2VkCiAgKiBpdGVyYXRpdmUgcHJlLW9yZGVyIHRyYXZlcnNhbCBvZiBhIHRyZWUuCi0gKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIHNpbmdsZS1saW5rZWQgbGlzdCBzdGFydGluZyBhdCBwYXJlbnRfc3RhY2suCi0gKiBFYWNoIHN0YWNrIG5vZGUgY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCisgKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIGNvbnRpbnVvdXMgYXJyYXkuCisgKiBFYWNoIHN0YWNrIGl0ZW0gY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCiAgKiB0aGUgY3VycmVudCBvbmUgaXMgZXhoYXVzdGVkLCBhbmQgdGhlIG5leHQgY2hpbGQgdG8gZXhhbWluZSBpbiB0aGF0IHBhcmVudC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90IHsKICAgICBFbGVtZW50T2JqZWN0ICpwYXJlbnQ7CiAgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKLSAgICBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90ICpuZXh0OwogfSBQYXJlbnRMb2NhdG9yOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjazsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja191c2VkOworICAgIFB5X3NzaXplX3QgcGFyZW50X3N0YWNrX3NpemU7CiAgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OwogICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOwotICAgIGludCByb290X2RvbmU7CiAgICAgaW50IGdldHRleHQ7CiB9IEVsZW1lbnRJdGVyT2JqZWN0OwogCkBAIC0yMDIyLDEzICsyMDQ0LDExIEBACiBzdGF0aWMgdm9pZAogZWxlbWVudGl0ZXJfZGVhbGxvYyhFbGVtZW50SXRlck9iamVjdCAqaXQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7Ci0gICAgd2hpbGUgKHApIHsKLSAgICAgICAgUGFyZW50TG9jYXRvciAqdGVtcCA9IHA7Ci0gICAgICAgIFB5X1hERUNSRUYocC0+cGFyZW50KTsKLSAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgIFB5T2JqZWN0X0ZyZWUodGVtcCk7Ci0gICAgfQorICAgIFB5X3NzaXplX3QgaSA9IGl0LT5wYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1hERUNSRUYoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOworICAgIFB5TWVtX0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CiAKICAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKICAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOwpAQCAtMjA0MCwxMSArMjA2MCw5IEBACiBzdGF0aWMgaW50CiBlbGVtZW50aXRlcl90cmF2ZXJzZShFbGVtZW50SXRlck9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFB5X1ZJU0lUKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgd2hpbGUgKGktLSkKKyAgICAgICAgUHlfVklTSVQoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOwogCiAgICAgUHlfVklTSVQoaXQtPnJvb3RfZWxlbWVudCk7CiAgICAgUHlfVklTSVQoaXQtPnNvdWdodF90YWcpOwpAQCAtMjA1MywxNyArMjA3MSwyNSBAQAogCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnRpdGVyX25leHQuIEFkZCBhIG5ldyBwYXJlbnQgdG8gdGhlIHBhcmVudCBzdGFjay4KICAqLwotc3RhdGljIFBhcmVudExvY2F0b3IgKgotcGFyZW50X3N0YWNrX3B1c2hfbmV3KFBhcmVudExvY2F0b3IgKnN0YWNrLCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCitzdGF0aWMgaW50CitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoRWxlbWVudEl0ZXJPYmplY3QgKml0LCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqbmV3X25vZGUgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKLSAgICBpZiAobmV3X25vZGUpIHsKLSAgICAgICAgbmV3X25vZGUtPnBhcmVudCA9IHBhcmVudDsKLSAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7Ci0gICAgICAgIG5ld19ub2RlLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgICAgIG5ld19ub2RlLT5uZXh0ID0gc3RhY2s7CisgICAgUGFyZW50TG9jYXRvciAqaXRlbTsKKworICAgIGlmIChpdC0+cGFyZW50X3N0YWNrX3VzZWQgPj0gaXQtPnBhcmVudF9zdGFja19zaXplKSB7CisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBpdC0+cGFyZW50X3N0YWNrX3NpemUgKiAyOyAgLyogbmV2ZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICAgICAgUHlNZW1fUmVzaXplKHBhcmVudF9zdGFjaywgUGFyZW50TG9jYXRvciwgbmV3X3NpemUpOworICAgICAgICBpZiAocGFyZW50X3N0YWNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2s7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IG5ld19zaXplOwogICAgIH0KLSAgICByZXR1cm4gbmV3X25vZGU7CisgICAgaXRlbSA9IGl0LT5wYXJlbnRfc3RhY2sgKyBpdC0+cGFyZW50X3N0YWNrX3VzZWQrKzsKKyAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICBpdGVtLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgaXRlbS0+Y2hpbGRfaW5kZXggPSAwOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjA4MCwxNTEgKzIxMDYsOTEgQEAKICAgICAgKiAgIC0gaXRlcnRleHQoKSBhbHNvIGhhcyB0byBoYW5kbGUgdGFpbCwgYWZ0ZXIgZmluaXNoaW5nIHdpdGggYWxsIHRoZQogICAgICAqICAgICBjaGlsZHJlbiBvZiBhIG5vZGUuCiAgICAgICovCi0gICAgRWxlbWVudE9iamVjdCAqY3VyX3BhcmVudDsKLSAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OwogICAgIGludCByYzsKICAgICBFbGVtZW50T2JqZWN0ICplbGVtOworICAgIFB5T2JqZWN0ICp0ZXh0OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHJlYWNoZWQgaW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZXJhdGlvbiwgd2hlcmUKLSAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gVGhlIHJvb3RfZG9uZSBmbGFnIGdpdmVzIHVzIGluZGljYXRpb24KLSAgICAgICAgICogd2hldGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgaXRlcmF0aW5nIChzbyByb290X2RvbmUgaXMgMCksIGluIHdoaWNoCi0gICAgICAgICAqIGNhc2UgdGhlIHJvb3QgaXMgcmV0dXJuZWQuIElmIHJvb3RfZG9uZSBpcyAxIGFuZCB3ZSdyZSBoZXJlLCB0aGUKKyAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gSWYgcm9vdF9lbGVtZW50IGlzIE5VTEwgYW5kIHdlJ3JlIGhlcmUsIHRoZQogICAgICAgICAgKiBpdGVyYXRvciBpcyBleGhhdXN0ZWQuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgaWYgKGl0LT5yb290X2RvbmUpIHsKKyAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrX3VzZWQpIHsKKyAgICAgICAgICAgIGlmICghaXQtPnJvb3RfZWxlbWVudCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OwotICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgaXQtPnJvb3RfZG9uZSA9IDE7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCi0gICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgotICAgICAgICAgKi8KLSAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKLSAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopY3VyX3BhcmVudC0+ZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4Kys7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxlbSA9IGl0LT5yb290X2VsZW1lbnQ7ICAvKiBzdGVhbHMgYSByZWZlcmVuY2UgKi8KKyAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnRhaWw7Ci0gICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0OwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIHRhaWwgPSBlbGVtZW50X2dldF90YWlsKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIGlmICghdGFpbCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGFpbCA9IFB5X05vbmU7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV4dCA9IGl0LT5wYXJlbnRfc3RhY2stPm5leHQ7Ci0gICAgICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OwotICAgICAgICAgICAgUHlPYmplY3RfRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBuZXh0OwotICAgICAgICAgICAgUHlfWERFQ1JFRihjdXJfcGFyZW50KTsKLQotICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgaGVyZTsKLSAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKLSAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCisgICAgICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRhaWwpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWlsOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKml0ZW0gPSAmaXQtPnBhcmVudF9zdGFja1tpdC0+cGFyZW50X3N0YWNrX3VzZWQgLSAxXTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXggPSBpdGVtLT5jaGlsZF9pbmRleDsKKyAgICAgICAgICAgIEVsZW1lbnRPYmplY3RFeHRyYSAqZXh0cmE7CisgICAgICAgICAgICBlbGVtID0gaXRlbS0+cGFyZW50OworICAgICAgICAgICAgZXh0cmEgPSBlbGVtLT5leHRyYTsKKyAgICAgICAgICAgIGlmICghZXh0cmEgfHwgY2hpbGRfaW5kZXggPj0gZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfdXNlZC0tOworICAgICAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFja191c2VkIGhlcmU7CisgICAgICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgorICAgICAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQgJiYgaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90YWlsKGVsZW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGdldHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKKyAgICAgICAgICAgIGl0ZW0tPmNoaWxkX2luZGV4Kys7CisgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LCBlbGVtKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOworICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29udGludWU7CisKK2dldHRleHQ6CisgICAgICAgIGlmICghdGV4dCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGV4dCk7CisgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgUHlfREVDUkVGKHRleHQpOworICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI3Niw2ICsyMjQyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAorI2RlZmluZSBJTklUX1BBUkVOVF9TVEFDS19TSVpFIDgKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCkKQEAgLTIyODgsMjIgKzIyNTUsMjAgQEAKIAogICAgIFB5X0lOQ1JFRih0YWcpOwogICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOwotICAgIGl0LT5yb290X2RvbmUgPSAwOwogICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgaXQtPnJvb3RfZWxlbWVudCA9IHNlbGY7CiAKICAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CiAKLSAgICBpdC0+cGFyZW50X3N0YWNrID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7CisgICAgaXQtPnBhcmVudF9zdGFjayA9IFB5TWVtX05ldyhQYXJlbnRMb2NhdG9yLCBJTklUX1BBUkVOVF9TVEFDS19TSVpFKTsKICAgICBpZiAoaXQtPnBhcmVudF9zdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgPSBOVUxMOwotICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4ID0gMDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5uZXh0ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IElOSVRfUEFSRU5UX1NUQUNLX1NJWkU7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CkBAIC0yMzI4LDcgKzIyOTMsNyBAQAogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3Rvcnk7CiAKICAgICAvKiBlbGVtZW50IHRyYWNpbmcgKi8KLSAgICBQeU9iamVjdCAqZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kOyAvKiB0aGUgYXBwZW5kIG1ldGhvZCBvZiB0aGUgbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgKi8KICAgICBQeU9iamVjdCAqc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KICAgICBQeU9iamVjdCAqZW5kX2V2ZW50X29iajsKICAgICBQeU9iamVjdCAqc3RhcnRfbnNfZXZlbnRfb2JqOwpAQCAtMjM2Myw3ICsyMzI4LDcgQEAKICAgICAgICAgfQogICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+ZXZlbnRzX2FwcGVuZCA9IE5VTEw7CiAgICAgICAgIHQtPnN0YXJ0X2V2ZW50X29iaiA9IHQtPmVuZF9ldmVudF9vYmogPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9uc19ldmVudF9vYmogPSB0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKICAgICB9CkBAIC0yMzgyLDEzICsyMzQ3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFjZmE3NTU4OTcwZWU5NiBpbnB1dD0xYjQyNGVlZWZjMzUyNDljXSovCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKICAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7Ci0gICAgICAgIHRtcCA9IHNlbGYtPmVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCBlbGVtZW50X2ZhY3RvcnkpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjQxMyw3ICsyMzc0LDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5ldmVudHNfYXBwZW5kKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFjayk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZGF0YSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+bGFzdCk7CkBAIC0yNDk0LDEzICsyNDU1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGUpCiB7CiAgICAgaWYgKGFjdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgUHlPYmplY3QgKmV2ZW50ID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIGlmIChldmVudCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPmV2ZW50c19hcHBlbmQsIGV2ZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGV2ZW50KTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcykgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0yNTI5LDEwICsyNDkxLDE3IEBACiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KIAotICAgIGlmIChzZWxmLT5lbGVtZW50X2ZhY3RvcnkgJiYgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICE9IFB5X05vbmUpIHsKLSAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc2VsZi0+ZWxlbWVudF9mYWN0b3J5IHx8IHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIG5vZGUgPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOworICAgIH0gZWxzZSBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOworICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfQogICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI5OTEsMTIgKzI5NjAsOCBAQAogICAgICAgICAgICAgYXR0cmliX2luICs9IDI7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICAvKiBQYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KLSAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIWF0dHJpYikgewotICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAogICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKQEAgLTMwMDUsNiArMjk3MCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBlbHNlIGlmIChzZWxmLT5oYW5kbGVfc3RhcnQpIHsKKyAgICAgICAgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmICghYXR0cmliKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTMwNzgsNyArMzA1MSw3IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGFyZ2V0LT5ldmVudHMgfHwgIXRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF1cmkpCkBAIC0zMTAxLDcgKzMwNzQsNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQodGFyZ2V0LCB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmosIFB5X05vbmUpOwpAQCAtMzQyOCw3ICszNDAxLDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX2Nsb3NlKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9jbG9zZSwgIiIpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5oYW5kbGVfY2xvc2UpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIHJlczsKQEAgLTM1OTAsNyArMzU2Myw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9zZXRldmVudHMKIAotICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMaXN0X1R5cGUnKQorICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0CiAgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMzYwMCwxMiArMzU3MywxMiBAQAogX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9YWJmOTA4MzBhMWMzYjBmY10qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAgICAgUHlfc3NpemVfdCBpOwogICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0YXJnZXQ7Ci0gICAgUHlPYmplY3QgKmV2ZW50c19zZXE7CisgICAgUHlPYmplY3QgKmV2ZW50c19hcHBlbmQsICpldmVudHNfc2VxOwogCiAgICAgaWYgKCFUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzYxOCw4ICszNTkxLDEwIEBACiAKICAgICB0YXJnZXQgPSAoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQ7CiAKLSAgICBQeV9JTkNSRUYoZXZlbnRzX3F1ZXVlKTsKLSAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzLCBldmVudHNfcXVldWUpOworICAgIGV2ZW50c19hcHBlbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV2ZW50c19xdWV1ZSwgImFwcGVuZCIpOworICAgIGlmIChldmVudHNfYXBwZW5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1hTRVRSRUYodGFyZ2V0LT5ldmVudHNfYXBwZW5kLCBldmVudHNfYXBwZW5kKTsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KICAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CkBAIC0zNzI5LDcgKzM3MDQsNyBAQAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRgogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRgogCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRgogCiAgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGCkBAIC0zNzUyLDYgKzM3MjcsMjYgQEAKICAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGVsZW1lbnRfZ2V0c2V0bGlzdFtdID0geworICAgIHsidGFnIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RhZ19nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWdfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMifSwKKyAgICB7InRleHQiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGV4dF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90ZXh0X3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIHN0YXJ0IHRhZywgb3IgTm9uZSJ9LAorICAgIHsidGFpbCIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWlsX2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X3RhaWxfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgb2YgdGV4dCBkaXJlY3RseSBhZnRlciB0aGUgZW5kIHRhZywgb3IgTm9uZSJ9LAorICAgIHsiYXR0cmliIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X2F0dHJpYl9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF9hdHRyaWJfc2V0dGVyLAorICAgICAgICAiQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIn0sCisgICAge05VTEx9LAorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLApAQCAtMzc2OCw4ICszNzYzLDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwpAQCAtMzc4Miw3ICszNzc3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgZWxlbWVudF9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggOWM5YWI1Zi4uY2E2MWZjZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTEyOCw0NCArMTI4LDYwIEBACiB7CiAgICAgUHlPYmplY3QgKnJldDsKICAgICBQeU9iamVjdCAqYXJnYXBwbCwgKmt3YXBwbDsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAKICAgICBhc3NlcnQgKFB5Q2FsbGFibGVfQ2hlY2socHRvLT5mbikpOwogICAgIGFzc2VydCAoUHlUdXBsZV9DaGVjayhwdG8tPmFyZ3MpKTsKICAgICBhc3NlcnQgKFB5RGljdF9DaGVjayhwdG8tPmt3KSk7CiAKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShwdG8tPmFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IGFyZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICB9IGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkgewotICAgICAgICBhcmdhcHBsID0gcHRvLT5hcmdzOwotICAgICAgICBQeV9JTkNSRUYocHRvLT5hcmdzKTsKLSAgICB9IGVsc2UgeworICAgICAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShwdG8tPmFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKTsKKyAgICAgICAgYXJnYXBwbCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IE5VTEw7CiAgICAgICAgIGFyZ2FwcGwgPSBQeVNlcXVlbmNlX0NvbmNhdChwdG8tPmFyZ3MsIGFyZ3MpOwotICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKQorICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCiAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ2FwcGwpKTsKICAgICB9CiAKICAgICBpZiAoUHlEaWN0X1NpemUocHRvLT5rdykgPT0gMCkgewogICAgICAgICBrd2FwcGwgPSBrdzsKICAgICAgICAgUHlfWElOQ1JFRihrd2FwcGwpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBrd2FwcGwgPSBQeURpY3RfQ29weShwdG8tPmt3KTsKICAgICAgICAgaWYgKGt3YXBwbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoa3cgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RGljdF9NZXJnZShrd2FwcGwsIGt3LCAxKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoYXJnYXBwbCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXBwbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7Ci0gICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIGlmIChzdGFjaykgeworICAgICAgICByZXQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHB0by0+Zm4sIHN0YWNrLCBuYXJncywga3dhcHBsKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGwocHRvLT5mbiwgYXJnYXBwbCwga3dhcHBsKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIH0KICAgICBQeV9YREVDUkVGKGt3YXBwbCk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTIxMyw3ICsyMjksNyBAQAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKHB0byktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIi4uLiIpOwogICAgIH0KIAogICAgIGFyZ2xpc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CkBAIC00NjEsMTIgKzQ3NywxMiBAQAoga2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqYXJnczsKICAgICBQeU9iamVjdCAqeDsKICAgICBQeU9iamVjdCAqeTsKICAgICBQeU9iamVjdCAqY29tcGFyZTsKICAgICBQeU9iamVjdCAqYW5zd2VyOwogICAgIHN0YXRpYyBQeU9iamVjdCAqemVybzsKKyAgICBQeU9iamVjdCogc3RhY2tbMl07CiAKICAgICBpZiAoemVybyA9PSBOVUxMKSB7CiAgICAgICAgIHplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC00OTAsMTcgKzUwNiwxMyBAQAogICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CiAgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgogICAgICAqLwotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIHN0YWNrWzBdID0geDsKKyAgICBzdGFja1sxXSA9IHk7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNvbXBhcmUsIHN0YWNrLCAyKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKHgpOwotICAgIFB5X0lOQ1JFRih5KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIHgpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgeSk7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbChjb21wYXJlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBhbnN3ZXIgPSBQeU9iamVjdF9SaWNoQ29tcGFyZShyZXMsIHplcm8sIG9wKTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gYW5zd2VyOwpAQCAtNjkyLDggKzcwNCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbHJ1X2NhY2hlX21ha2Vfa2V5KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywgaW50IHR5cGVkKQogewotICAgIFB5T2JqZWN0ICprZXksICpzb3J0ZWRfaXRlbXM7Ci0gICAgUHlfc3NpemVfdCBrZXlfc2l6ZSwgcG9zLCBrZXlfcG9zOworICAgIFB5T2JqZWN0ICprZXksICprZXl3b3JkLCAqdmFsdWU7CisgICAgUHlfc3NpemVfdCBrZXlfc2l6ZSwgcG9zLCBrZXlfcG9zLCBrd2RzX3NpemU7CiAKICAgICAvKiBzaG9ydCBwYXRoLCBrZXkgd2lsbCBtYXRjaCBhcmdzIGFueXdheSwgd2hpY2ggaXMgYSB0dXBsZSAqLwogICAgIGlmICghdHlwZWQgJiYgIWt3ZHMpIHsKQEAgLTcwMSwyOCArNzEzLDE4IEBACiAgICAgICAgIHJldHVybiBhcmdzOwogICAgIH0KIAotICAgIGlmIChrd2RzICYmIFB5RGljdF9TaXplKGt3ZHMpID4gMCkgewotICAgICAgICBzb3J0ZWRfaXRlbXMgPSBQeURpY3RfSXRlbXMoa3dkcyk7Ci0gICAgICAgIGlmICghc29ydGVkX2l0ZW1zKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeUxpc3RfU29ydChzb3J0ZWRfaXRlbXMpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHNvcnRlZF9pdGVtcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzb3J0ZWRfaXRlbXMgPSBOVUxMOworICAgIGt3ZHNfc2l6ZSA9IGt3ZHMgPyBQeURpY3RfU2l6ZShrd2RzKSA6IDA7CisgICAgYXNzZXJ0KGt3ZHNfc2l6ZSA+PSAwKTsKIAogICAgIGtleV9zaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKLSAgICBpZiAoc29ydGVkX2l0ZW1zKQotICAgICAgICBrZXlfc2l6ZSArPSBQeUxpc3RfR0VUX1NJWkUoc29ydGVkX2l0ZW1zKTsKKyAgICBpZiAoa3dkc19zaXplKQorICAgICAgICBrZXlfc2l6ZSArPSBrd2RzX3NpemUgKiAyICsgMTsKICAgICBpZiAodHlwZWQpCi0gICAgICAgIGtleV9zaXplICo9IDI7Ci0gICAgaWYgKHNvcnRlZF9pdGVtcykKLSAgICAgICAga2V5X3NpemUrKzsKKyAgICAgICAga2V5X3NpemUgKz0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSArIGt3ZHNfc2l6ZTsKIAogICAgIGtleSA9IFB5VHVwbGVfTmV3KGtleV9zaXplKTsKICAgICBpZiAoa2V5ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBrZXlfcG9zID0gMDsKICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7ICsrcG9zKSB7CkBAIC03MzAsMTQgKzczMiwxNiBAQAogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGl0ZW0pOwogICAgIH0KLSAgICBpZiAoc29ydGVkX2l0ZW1zKSB7CisgICAgaWYgKGt3ZHNfc2l6ZSkgewogICAgICAgICBQeV9JTkNSRUYoa3dkX21hcmspOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBrd2RfbWFyayk7Ci0gICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlMaXN0X0dFVF9TSVpFKHNvcnRlZF9pdGVtcyk7ICsrcG9zKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShzb3J0ZWRfaXRlbXMsIHBvcyk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICAgICAgZm9yIChwb3MgPSAwOyBQeURpY3RfTmV4dChrd2RzLCAmcG9zLCAma2V5d29yZCwgJnZhbHVlKTspIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXl3b3JkKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGtleXdvcmQpOworICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIHZhbHVlKTsKICAgICAgICAgfQorICAgICAgICBhc3NlcnQoa2V5X3BvcyA9PSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpICsga3dkc19zaXplICogMiArIDEpOwogICAgIH0KICAgICBpZiAodHlwZWQpIHsKICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOyArK3BvcykgewpAQCAtNzQ1LDIwICs3NDksMTUgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGl0ZW0pOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzb3J0ZWRfaXRlbXMpIHsKLSAgICAgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlMaXN0X0dFVF9TSVpFKHNvcnRlZF9pdGVtcyk7ICsrcG9zKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRwX2l0ZW1zID0gUHlMaXN0X0dFVF9JVEVNKHNvcnRlZF9pdGVtcywgcG9zKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IChQeU9iamVjdCAqKVB5X1RZUEUoUHlUdXBsZV9HRVRfSVRFTSh0cF9pdGVtcywgMSkpOworICAgICAgICBpZiAoa3dkc19zaXplKSB7CisgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IFB5RGljdF9OZXh0KGt3ZHMsICZwb3MsICZrZXl3b3JkLCAmdmFsdWUpOykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gKFB5T2JqZWN0ICopUHlfVFlQRSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGl0ZW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydChrZXlfcG9zID09IGtleV9zaXplKTsKLQotZG9uZToKLSAgICBpZiAoc29ydGVkX2l0ZW1zKQotICAgICAgICBQeV9ERUNSRUYoc29ydGVkX2l0ZW1zKTsKICAgICByZXR1cm4ga2V5OwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKaW5kZXggYjg0MGJmNS4uZGFhZTcxZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwpAQCAtNjE0LDcgKzYxNCw3IEBACiAgICAgcmV0dXJuIG5ld2RibW9iamVjdChuYW1lLCBpZmxhZ3MsIG1vZGUpOwogfQogCi1zdGF0aWMgY2hhciBkYm1tb2R1bGVfb3Blbl9mbGFnc1tdID0gInJ3Y24iCitzdGF0aWMgY29uc3QgY2hhciBkYm1tb2R1bGVfb3Blbl9mbGFnc1tdID0gInJ3Y24iCiAjaWZkZWYgR0RCTV9GQVNUCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCmluZGV4IGZmNTc2MTQuLmRhYTRmM2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKKysrIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwpAQCAtMjUsNiArMjUsMTIgQEAKICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KICNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgogCisjaW5jbHVkZSAiY2xpbmljL19oYXNob3BlbnNzbC5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2hhc2hsaWIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMyYjRmZjA4MWJhYzRiZTFdKi8KKwogI2RlZmluZSBNVU5DSF9TSVpFIElOVF9NQVgKIAogI2lmbmRlZiBIQVNIX09CSl9DT05TVFJVQ1RPUgpAQCAtNzEzLDYgKzcxOSwxMjggQEAKIAogI2VuZGlmCiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorI2RlZmluZSBQWV9TQ1JZUFQgMQorCisvKltjbGluaWMgaW5wdXRdCitfaGFzaGxpYi5zY3J5cHQKKworICAgIHBhc3N3b3JkOiBQeV9idWZmZXIKKyAgICAqCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIG4gYXMgbl9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgciBhcyByX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICBwIGFzIHBfb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIG1heG1lbTogbG9uZyA9IDAKKyAgICBka2xlbjogbG9uZyA9IDY0CisKKworc2NyeXB0IHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2hhc2hsaWJfc2NyeXB0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpwYXNzd29yZCwgUHlfYnVmZmVyICpzYWx0LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5fb2JqLCBQeU9iamVjdCAqcl9vYmosIFB5T2JqZWN0ICpwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4bWVtLCBsb25nIGRrbGVuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0ODQ5ZTJhYTJiN2I0NmMgaW5wdXQ9NDhhN2Q2M2JmM2Y3NWM0Ml0qLworeworICAgIFB5T2JqZWN0ICprZXlfb2JqID0gTlVMTDsKKyAgICBjaGFyICprZXk7CisgICAgaW50IHJldHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIG4sIHIsIHA7CisKKyAgICBpZiAocGFzc3dvcmQtPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgaXMgdG9vIGxvbmcuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzYWx0LT5idWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNhbHQgaXMgcmVxdWlyZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzYWx0LT5sZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNhbHQgaXMgdG9vIGxvbmcuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobl9vYmopOworICAgIGlmIChuID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuIDwgMiB8fCBuICYgKG4gLSAxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuIG11c3QgYmUgYSBwb3dlciBvZiAyLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHJfb2JqKTsKKyAgICBpZiAociA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHBfb2JqKTsKKyAgICBpZiAocCA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobWF4bWVtIDwgMCB8fCBtYXhtZW0gPiBJTlRfTUFYKSB7CisgICAgICAgIC8qIE9wZW5TU0wgMS4xLjAgcmVzdHJpY3RzIG1heG1lbSB0byAzMk1CLiBJdCBtYXkgY2hhbmdlIGluIHRoZQorICAgICAgICAgICBmdXR1cmUuIFRoZSBtYXhtZW0gY29uc3RhbnQgaXMgcHJpdmF0ZSB0byBPcGVuU1NMLiAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJtYXhtZW0gbXVzdCBiZSBwb3NpdGl2ZSBhbmQgc21hbGxlciB0aGFuICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGRrbGVuIDwgMSB8fCBka2xlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJka2xlbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4gJWQiLAorICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogbGV0IE9wZW5TU0wgdmFsaWRhdGUgdGhlIHJlc3QgKi8KKyAgICByZXR2YWwgPSBFVlBfUEJFX3NjcnlwdChOVUxMLCAwLCBOVUxMLCAwLCBuLCByLCBwLCBtYXhtZW0sIE5VTEwsIDApOworICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgIC8qIHNvcnJ5LCBjYW4ndCBkbyBtdWNoIGJldHRlciAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhcmFtZW10ZXIgY29tYmluYXRpb24gZm9yIG4sIHIsIHAsIG1heG1lbS4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICB9CisKKyAgICBrZXlfb2JqID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBka2xlbik7CisgICAgaWYgKGtleV9vYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAga2V5ID0gUHlCeXRlc19BU19TVFJJTkcoa2V5X29iaik7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0dmFsID0gRVZQX1BCRV9zY3J5cHQoCisgICAgICAgIChjb25zdCBjaGFyKilwYXNzd29yZC0+YnVmLCAoc2l6ZV90KXBhc3N3b3JkLT5sZW4sCisgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopc2FsdC0+YnVmLCAoc2l6ZV90KXNhbHQtPmxlbiwKKyAgICAgICAgbiwgciwgcCwgbWF4bWVtLAorICAgICAgICAodW5zaWduZWQgY2hhciAqKWtleSwgKHNpemVfdClka2xlbgorICAgICk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgIFB5X0NMRUFSKGtleV9vYmopOworICAgICAgICBfc2V0RXhjZXB0aW9uKFB5RXhjX1ZhbHVlRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGtleV9vYmo7Cit9CisjZW5kaWYKKwogLyogU3RhdGUgZm9yIG91ciBjYWxsYmFjayBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBhY2N1bXVsYXRlIGEgcmVzdWx0LiAqLwogdHlwZWRlZiBzdHJ1Y3QgX2ludGVybmFsX25hbWVfbWFwcGVyX3N0YXRlIHsKICAgICBQeU9iamVjdCAqc2V0OwpAQCAtODM2LDYgKzk2NCw3IEBACiAgICAgeyJwYmtkZjJfaG1hYyIsIChQeUNGdW5jdGlvbilwYmtkZjJfaG1hYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgIHBia2RmMl9obWFjX19kb2NfX30sCiAjZW5kaWYKKyAgICBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYobWQ1KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGExKSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGEyMjQpLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKaW5kZXggMTM2YWJmNS4uYjQ5OWUxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCkBAIC02Niw3ICs2Niw3IEBACiAKICAgICAvKiBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuICovCiAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKLSAgICBsaW1pdCA9IGVuZHBvcyAvIDI7ICAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLworICAgIGxpbWl0ID0gZW5kcG9zID4+IDE7ICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KQEAgLTc4LDYgKzc4LDcgQEAKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOyAgICAgICAgIC8qIGFyciBtYXkgaGF2ZSBjaGFuZ2VkICovCiAgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CkBAIC04NSw3ICs4Niw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CiAgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKICAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CkBAIC0zNDcsNyArMzQ3LDcgQEAKICAgICAgICBuIGlzIG9kZCA9IDIqaisxLCB0aGlzIGlzICgyKmorMS0xKS8yID0gaiBzbyBqLTEgaXMgdGhlIGxhcmdlc3QsCiAgICAgICAgYW5kIHRoYXQncyBhZ2FpbiBuLy8yLTEuCiAgICAgKi8KLSAgICBmb3IgKGkgPSBuLzIgLSAxIDsgaSA+PSAwIDsgaS0tKQorICAgIGZvciAoaSA9IChuID4+IDEpIC0gMSA7IGkgPj0gMCA7IGktLSkKICAgICAgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNDIwLDcgKzQyMCw3IEBACiAKICAgICAvKiBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuICovCiAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKLSAgICBsaW1pdCA9IGVuZHBvcyAvIDI7ICAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLworICAgIGxpbWl0ID0gZW5kcG9zID4+IDE7ICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KQEAgLTQzMiw2ICs0MzIsNyBAQAogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7ICAgICAgICAgLyogYXJyIG1heSBoYXZlIGNoYW5nZWQgKi8KICAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKQEAgLTQzOSw3ICs0NDAsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIE1vdmUgdGhlIHNtYWxsZXIgY2hpbGQgdXAuICovCi0gICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOwogICAgICAgICB0bXAyID0gYXJyW3Bvc107CiAgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuYwppbmRleCBlOWYyMmFmLi5mNGQzY2JkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuYwpAQCAtMjAsNiArMjAsOSBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfU1RBVF9IICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8Y29uc29sZWFwaS5oPgorI2VuZGlmCiAKIC8qIFZhcmlvdXMgaW50ZXJuZWQgc3RyaW5ncyAqLwogCkBAIC01Miw3ICs1NSw2IEBACiBQeU9iamVjdCAqX1B5SU9fZW1wdHlfYnl0ZXM7CiBQeU9iamVjdCAqX1B5SU9femVybzsKIAotDAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAiVGhlIGlvIG1vZHVsZSBwcm92aWRlcyB0aGUgUHl0aG9uIGludGVyZmFjZXMgdG8gc3RyZWFtIGhhbmRsaW5nLiBUaGVcbiIKICJidWlsdGluIG9wZW4gZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS5cbiIKQEAgLTIzOCwyMCArMjQwLDMzIEBACiAgICAgaW50IHRleHQgPSAwLCBiaW5hcnkgPSAwLCB1bml2ZXJzYWwgPSAwOwogCiAgICAgY2hhciByYXdtb2RlWzZdLCAqbTsKLSAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzYXR0eTsKKyAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzX251bWJlcjsKKyAgICBsb25nIGlzYXR0eTsKIAotICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciwgKndyYXBwZXIsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciwgKndyYXBwZXIsICpyZXN1bHQgPSBOVUxMLCAqcGF0aF9vcl9mZCA9IE5VTEw7CiAKICAgICBfUHlfSURFTlRJRklFUihfYmxrc2l6ZSk7CiAgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKICAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlKSAmJgotCSFQeUJ5dGVzX0NoZWNrKGZpbGUpICYmCi0JIVB5TnVtYmVyX0NoZWNrKGZpbGUpKSB7CisgICAgaXNfbnVtYmVyID0gUHlOdW1iZXJfQ2hlY2soZmlsZSk7CisKKyAgICBpZiAoaXNfbnVtYmVyKSB7CisgICAgICAgIHBhdGhfb3JfZmQgPSBmaWxlOworICAgICAgICBQeV9JTkNSRUYocGF0aF9vcl9mZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGF0aF9vcl9mZCA9IFB5T1NfRlNQYXRoKGZpbGUpOworICAgICAgICBpZiAocGF0aF9vcl9mZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaXNfbnVtYmVyICYmCisgICAgICAgICFQeVVuaWNvZGVfQ2hlY2socGF0aF9vcl9mZCkgJiYKKyAgICAgICAgIVB5Qnl0ZXNfQ2hlY2socGF0aF9vcl9mZCkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgZmlsZTogJVIiLCBmaWxlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogRGVjb2RlIG1vZGUgKi8KQEAgLTI5Miw3ICszMDcsNyBAQAogICAgICAgICBpZiAoc3RyY2hyKG1vZGUraSsxLCBjKSkgewogICAgICAgICAgIGludmFsaWRfbW9kZToKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBtb2RlOiAnJXMnIiwgbW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAogICAgIH0KQEAgLTMwNyw1NCArMzIyLDY3IEBACiAKICAgICAvKiBQYXJhbWV0ZXJzIHZhbGlkYXRpb24gKi8KICAgICBpZiAodW5pdmVyc2FsKSB7Ci0gICAgICAgIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykgeworICAgICAgICBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcgfHwgdXBkYXRpbmcpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlIFUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggeCcsICd3JywgJ2EnLCBvciAnKyciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIHJlYWRpbmcgPSAxOwogICAgIH0KIAogICAgIGlmICh0ZXh0ICYmIGJpbmFyeSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGNyZWF0aW5nICsgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIGVuY29kaW5nICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVuY29kaW5nIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgZXJyb3JzICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVycm9ycyBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIG5ld2xpbmUgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIC8qIENyZWF0ZSB0aGUgUmF3IGZpbGUgc3RyZWFtICovCi0gICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisgICAgeworICAgICAgICBQeU9iamVjdCAqUmF3SU9fY2xhc3MgPSAoUHlPYmplY3QgKikmUHlGaWxlSU9fVHlwZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBfUHlJT19nZXRfY29uc29sZV90eXBlKHBhdGhfb3JfZmQpICE9ICdcMCcpIHsKKyAgICAgICAgICAgIFJhd0lPX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5V2luZG93c0NvbnNvbGVJT19UeXBlOworICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFJhd0lPX2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBwYXRoX29yX2ZkLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworICAgIH0KKwogICAgIGlmIChyYXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmVzdWx0ID0gcmF3OwogCisgICAgUHlfREVDUkVGKHBhdGhfb3JfZmQpOworICAgIHBhdGhfb3JfZmQgPSBOVUxMOworCiAgICAgbW9kZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwogICAgIGlmIChtb2Rlb2JqID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC00MzcsMTAgKzQ2NSwxMCBAQAogCiAgICAgLyogd3JhcHMgaW50byBhIFRleHRJT1dyYXBwZXIgKi8KICAgICB3cmFwcGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeVRleHRJT1dyYXBwZXJfVHlwZSwKLQkJCQkgICAgIk9zc3NpIiwKLQkJCQkgICAgYnVmZmVyLAotCQkJCSAgICBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAotCQkJCSAgICBsaW5lX2J1ZmZlcmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3Nzc2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nKTsKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHJlc3VsdCA9IHdyYXBwZXI7CkBAIC00NjAsNiArNDg4LDcgQEAKICAgICAgICAgUHlfWERFQ1JFRihjbG9zZV9yZXN1bHQpOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICB9CisgICAgUHlfWERFQ1JFRihwYXRoX29yX2ZkKTsKICAgICBQeV9YREVDUkVGKG1vZGVvYmopOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjkxLDYgKzcyMCwxMiBAQAogICAgIFB5U3RyaW5nSU9fVHlwZS50cF9iYXNlID0gJlB5VGV4dElPQmFzZV9UeXBlOwogICAgIEFERF9UWVBFKCZQeVN0cmluZ0lPX1R5cGUsICJTdHJpbmdJTyIpOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFdpbmRvd3NDb25zb2xlSU8gKi8KKyAgICBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZS50cF9iYXNlID0gJlB5UmF3SU9CYXNlX1R5cGU7CisgICAgQUREX1RZUEUoJlB5V2luZG93c0NvbnNvbGVJT19UeXBlLCAiX1dpbmRvd3NDb25zb2xlSU8iKTsKKyNlbmRpZgorCiAgICAgLyogQnVmZmVyZWRSZWFkZXIgKi8KICAgICBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUudHBfYmFzZSA9ICZQeUJ1ZmZlcmVkSU9CYXNlX1R5cGU7CiAgICAgQUREX1RZUEUoJlB5QnVmZmVyZWRSZWFkZXJfVHlwZSwgIkJ1ZmZlcmVkUmVhZGVyIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaCBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCmluZGV4IDBjNmVhZTIuLmRhYWViZDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCkBAIC0xOSw2ICsxOSwxMyBAQAogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVRleHRJT1dyYXBwZXJfVHlwZTsKIGV4dGVybiBQeVR5cGVPYmplY3QgUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGU7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5V2luZG93c0NvbnNvbGVJT19UeXBlOworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisjZGVmaW5lIFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhvcCkgKFB5T2JqZWN0X1R5cGVDaGVjaygob3ApLCAoUHlUeXBlT2JqZWN0KilfUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUpKQorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBleHRlcm4gaW50IF9QeUlPX0NvbnZlcnRTc2l6ZV90KFB5T2JqZWN0ICosIHZvaWQgKik7CiAKQEAgLTYwLDcgKzY3LDcgQEAKICAgICogT3RoZXJ3aXNlLCB0aGUgbGluZSBlbmRpbmcgaXMgc3BlY2lmaWVkIGJ5IHJlYWRubCwgYSBzdHIgb2JqZWN0ICovCiBleHRlcm4gUHlfc3NpemVfdCBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CisgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKIAogLyogUmV0dXJuIDEgaWYgYW4gRW52aXJvbm1lbnRFcnJvciB3aXRoIGVycm5vID09IEVJTlRSIGlzIHNldCAoYW5kIHRoZW4KICAgIGNsZWFycyB0aGUgZXJyb3IgaW5kaWNhdG9yKSwgMCBvdGhlcndpc2UuCkBAIC04NSwxMiArOTIsMTIgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIFdpbmRvd3MgdXNlcyBsb25nIGxvbmcgZm9yIG9mZnNldHMgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIFB5X29mZl90OwordHlwZWRlZiBsb25nIGxvbmcgUHlfb2ZmX3Q7CiAjIGRlZmluZSBQeUxvbmdfQXNPZmZfdCAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICMgZGVmaW5lIFB5TG9uZ19Gcm9tT2ZmX3QgICBQeUxvbmdfRnJvbUxvbmdMb25nCi0jIGRlZmluZSBQWV9PRkZfVF9NQVggICAgICAgUFlfTExPTkdfTUFYCi0jIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgUFlfTExPTkdfTUlOCi0jIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgUFlfTE9OR19MT05HIC8qIHR5cGUgY29tcGF0aWJsZSB3aXRoIG9mZl90ICovCisjIGRlZmluZSBQWV9PRkZfVF9NQVggICAgICAgTExPTkdfTUFYCisjIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgTExPTkdfTUlOCisjIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgbG9uZyBsb25nICAgIC8qIHR5cGUgY29tcGF0aWJsZSB3aXRoIG9mZl90ICovCiAjIGRlZmluZSBQWV9QUklkT0ZGICAgICAgICAgImxsZCIgICAgICAgIC8qIGZvcm1hdCB0byB1c2UgZm9yIHRoYXQgdHlwZSAqLwogCiAjZWxzZQpAQCAtMTA0LDEyICsxMTEsMTIgQEAKICMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9TU0laRV9UX01JTgogIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFB5X3NzaXplX3QKICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAiemQiCi0jZWxpZiAoSEFWRV9MT05HX0xPTkcgJiYgU0laRU9GX09GRl9UID09IFNJWkVPRl9MT05HX0xPTkcpCisjZWxpZiAoU0laRU9GX09GRl9UID09IFNJWkVPRl9MT05HX0xPTkcpCiAjIGRlZmluZSBQeUxvbmdfQXNPZmZfdCAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICMgZGVmaW5lIFB5TG9uZ19Gcm9tT2ZmX3QgICBQeUxvbmdfRnJvbUxvbmdMb25nCi0jIGRlZmluZSBQWV9PRkZfVF9NQVggICAgICAgUFlfTExPTkdfTUFYCi0jIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgUFlfTExPTkdfTUlOCi0jIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgUFlfTE9OR19MT05HCisjIGRlZmluZSBQWV9PRkZfVF9NQVggICAgICAgTExPTkdfTUFYCisjIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgTExPTkdfTUlOCisjIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgbG9uZyBsb25nCiAjIGRlZmluZSBQWV9QUklkT0ZGICAgICAgICAgImxsZCIKICNlbGlmIChTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkcpCiAjIGRlZmluZSBQeUxvbmdfQXNPZmZfdCAgICAgUHlMb25nX0FzTG9uZwpAQCAtMTQ1LDYgKzE1MiwxMCBAQAogZXh0ZXJuIF9QeUlPX1N0YXRlICpfUHlJT19nZXRfbW9kdWxlX3N0YXRlKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19nZXRfbG9jYWxlX21vZHVsZShfUHlJT19TdGF0ZSAqKTsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBjaGFyIF9QeUlPX2dldF9jb25zb2xlX3R5cGUoUHlPYmplY3QgKik7CisjZW5kaWYKKwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfY2xvc2U7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9kZWNvZGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKaW5kZXggNmQ2Nzc1MS4uY2JlNzQyNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCisrKyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwpAQCAtNjU5LDcgKzY1OSw3IEBACiAKIC8qIFNldHMgdGhlIGN1cnJlbnQgZXJyb3IgdG8gQmxvY2tpbmdJT0Vycm9yICovCiBzdGF0aWMgdm9pZAotX3NldF9CbG9ja2luZ0lPRXJyb3IoY2hhciAqbXNnLCBQeV9zc2l6ZV90IHdyaXR0ZW4pCitfc2V0X0Jsb2NraW5nSU9FcnJvcihjb25zdCBjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKIHsKICAgICBQeU9iamVjdCAqZXJyOwogICAgIFB5RXJyX0NsZWFyKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKaW5kZXggOWU1ZDc4Yi4uYTFiYTEyMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jCisrKyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwpAQCAtODcsNyArODcsNyBAQAogc3RhdGljIGludAogdW5zaGFyZV9idWZmZXIoYnl0ZXNpbyAqc2VsZiwgc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlPYmplY3QgKm5ld19idWYsICpvbGRfYnVmOworICAgIFB5T2JqZWN0ICpuZXdfYnVmOwogICAgIGFzc2VydChTSEFSRURfQlVGKHNlbGYpKTsKICAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKICAgICBhc3NlcnQoc2l6ZSA+PSAoc2l6ZV90KXNlbGYtPnN0cmluZ19zaXplKTsKQEAgLTk2LDkgKzk2LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfYnVmKSwgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSwKICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOwotICAgIG9sZF9idWYgPSBzZWxmLT5idWY7Ci0gICAgc2VsZi0+YnVmID0gbmV3X2J1ZjsKLSAgICBQeV9ERUNSRUYob2xkX2J1Zik7CisgICAgUHlfU0VUUkVGKHNlbGYtPmJ1ZiwgbmV3X2J1Zik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKaW5kZXggNmM4OGUzMi4uZjJlOTFhOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKQEAgLTEyNyw3ICsxMjcsNyBAQAogIm9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLiIpOwogCiAjZGVmaW5lIF9JT19PUEVOX01FVEhPRERFRiAgICBcCi0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKV9pb19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2lvX29wZW5fX2RvY19ffSwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfRkFTVENBTEwsIF9pb19vcGVuX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfaW9fb3Blbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBjb25zdCBjaGFyICptb2RlLApAQCAtMTM1LDEwICsxMzUsMTEgQEAKICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQsIFB5T2JqZWN0ICpvcGVuZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2lvX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfaW9fb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpenp6aU86b3BlbiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgYnVmZmVyaW5nID0gLTE7CkBAIC0xNDgsMTIgKzE0OSwxMyBAQAogICAgIGludCBjbG9zZWZkID0gMTsKICAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZtb2RlLCAmYnVmZmVyaW5nLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fb3Blbl9pbXBsKG1vZHVsZSwgZmlsZSwgbW9kZSwgYnVmZmVyaW5nLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLCBjbG9zZWZkLCBvcGVuZXIpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmMyYzAwM2NiN2RhZWFmZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzViOGZjOGI4MzEwMmJiZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKaW5kZXggNDM3ZTI3NS4uNTgxNDRhNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaApAQCAtMTksMTQgKzE5LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00OCwxNCArNTAsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTk5LDggKzEwMyw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cGVlayIsCi0gICAgICAgICZzaXplKSkKKyAgICAgICAgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9wZWVrX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0xMjUsOCArMTMwLDkgQEAKICAgICBQeV9zc2l6ZV90IG4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0xNTAsOCArMTU2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnJlYWQxIiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMTc1LDE0ICsxODIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIwNCwxNCArMjEzLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMzQsOCArMjQ1LDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI2MSw4ICsyNzMsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKQorICAgICAgICAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfc2Vla19pbXBsKHNlbGYsIHRhcmdldG9iaiwgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTI4OCw4ICszMDEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcG9zKSkKKyAgICAgICAgJnBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoc2VsZiwgcG9zKTsKIAogZXhpdDoKQEAgLTMxMCwxMyArMzI0LDE1IEBACiBfaW9fQnVmZmVyZWRSZWFkZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bjpCdWZmZXJlZFJlYWRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJhdzsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJlYWRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSZWFkZXJfX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKQEAgLTM0MSwxMyArMzU3LDE1IEBACiBfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bjpCdWZmZXJlZFdyaXRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJhdzsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFdyaXRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKQEAgLTM3MSwxNCArMzg5LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGVfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQxMCwxMSArNDMwLDEzIEBACiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJlB5QnVmZmVyZWRSV1BhaXJfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQnVmZmVyZWRSV1BhaXIiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJ1ZmZlcmVkUldQYWlyIiwKLSAgICAgICAgJnJlYWRlciwgJndyaXRlciwgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgJnJlYWRlciwgJndyaXRlciwgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19pbXBsKChyd3BhaXIgKilzZWxmLCByZWFkZXIsIHdyaXRlciwgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtNDM5LDE2ICs0NjEsMTggQEAKIF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkUmFuZG9tIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmFuZG9tIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJiYjVlMjM5YjRmZmU2ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTk1NmYzOTRlY2RlNGNmOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKaW5kZXggNWYyYWJiMC4uYzY0Y2U1YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaApAQCAtMTcxLDggKzE3MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yMTUsOCArMjE2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGxpbmVfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMjQ3LDggKzI0OSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZXMiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMjc2LDE0ICsyNzksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMTEsOCArMzE2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMzQ1LDggKzM1MSw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fc2Vla19pbXBsKHNlbGYsIHBvcywgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTQwOCwxNSArNDE1LDE3IEBACiBfaW9fQnl0ZXNJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImluaXRpYWxfYnl0ZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpCeXRlc0lPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZpbml0dmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmluaXR2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKChieXRlc2lvICopc2VsZiwgaW5pdHZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwY2UyYzYyNzI3MTg0MzEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzODJlOGViNTc4ZWVhNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaAppbmRleCAxMDQyMDA4Li45MDhmZTBmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaApAQCAtNDksMTUgKzQ5LDE3IEBACiBfaW9fRmlsZUlPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpuYW1lb2JqOwogICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CiAgICAgaW50IGNsb3NlZmQgPSAxOwogICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaU86RmlsZUlPIiwgX2tleXdvcmRzLAotICAgICAgICAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLCAmb3BlbmVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19fX2luaXRfX19pbXBsKChmaWxlaW8gKilzZWxmLCBuYW1lb2JqLCBtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOwogCiBleGl0OgpAQCAtMTU0LDE0ICsxNTYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIxMCw4ICsyMTQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI0MCwxNCArMjQ1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4MCw4ICsyODcsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fc2Vla19pbXBsKHNlbGYsIHBvcywgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTMzMyw4ICszNDEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcG9zb2JqKSkKKyAgICAgICAgJnBvc29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3RydW5jYXRlX2ltcGwoc2VsZiwgcG9zb2JqKTsKIAogZXhpdDoKQEAgLTM2NCw0ICszNzMsNCBAQAogI2lmbmRlZiBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgogICAgICNkZWZpbmUgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kY2JjMzliNDY2NTk4NDkyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTkyNGJjMGVlMTFkNThlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKaW5kZXggOTc2MmYxMS4uZWRiZjczYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKQEAgLTE4Niw4ICsxODYsOSBAQAogICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChzZWxmLCBsaW1pdCk7CiAKIGV4aXQ6CkBAIC0yMTcsOCArMjE4LDkgQEAKICAgICBQeV9zc2l6ZV90IGhpbnQgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChzZWxmLCBoaW50KTsKIAogZXhpdDoKQEAgLTI1MSw4ICsyNTMsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkIiwKLSAgICAgICAgJm4pKQorICAgICAgICAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1Jhd0lPQmFzZV9yZWFkX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0yNzYsNCArMjc5LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI4NzQ5NTJmNWNjMjQ4YTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmNTNmZWQ5MjhkOGUwMmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKaW5kZXggYThlMzJhMy4uZDJjMDVkNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCkBAIC02MSw4ICs2MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtOTEsOCArOTIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMTIzLDggKzEyNSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0xNTcsOCArMTYwLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fc2Vla19pbXBsKHNlbGYsIHBvcywgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTIxNywxMyArMjIxLDE1IEBACiBfaW9fU3RyaW5nSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluaXRpYWxfdmFsdWUiLCAibmV3bGluZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImluaXRpYWxfdmFsdWUiLCAibmV3bGluZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPTzpTdHJpbmdJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLAotICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fX19pbml0X19faW1wbCgoc3RyaW5naW8gKilzZWxmLCB2YWx1ZSwgbmV3bGluZV9vYmopOwogCiBleGl0OgpAQCAtMjgzLDQgKzI4OSw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19TdHJpbmdJT19zZWVrYWJsZV9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwNjFjZjNhMjBjZDE0ZWQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVkZDVjMmEyMTNlNzU0MDUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaAppbmRleCBkYzdlOGM3Li5mMzljMzU1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaApAQCAtMjQsMTQgKzI0LDE2IEBACiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVjb2RlciIsICJ0cmFuc2xhdGUiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGVjb2RlciIsICJ0cmFuc2xhdGUiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2l8TzpJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGVjb2RlcjsKICAgICBpbnQgdHJhbnNsYXRlOwogICAgIFB5T2JqZWN0ICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT2l8TzpJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZGVjb2RlciwgJnRyYW5zbGF0ZSwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZGVjb2RlciwgJnRyYW5zbGF0ZSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKChubGRlY29kZXJfb2JqZWN0ICopc2VsZiwgZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNDQsMjMgKzQ2LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98aTpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbnB1dDsKICAgICBpbnQgZmluYWwgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOwogCiBleGl0OgpAQCAtMTUzLDcgKzE1Nyw4IEBACiBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98enp6aWk6VGV4dElPV3JhcHBlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKQEAgLTE2MSw5ICsxNjYsMTAgQEAKICAgICBpbnQgbGluZV9idWZmZXJpbmcgPSAwOwogICAgIGludCB3cml0ZV90aHJvdWdoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98enp6aWk6VGV4dElPV3JhcHBlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmJ1ZmZlciwgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwoKHRleHRpbyAqKXNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgbGluZV9idWZmZXJpbmcsIHdyaXRlX3Rocm91Z2gpOwogCiBleGl0OgpAQCAtMjA0LDggKzIxMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRleHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOndyaXRlIiwgJnRleHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbChzZWxmLCB0ZXh0KTsKIAogZXhpdDoKQEAgLTIzMCw4ICsyMzcsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0yNTYsOCArMjY0LDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cmVhZGxpbmUiLAotICAgICAgICAmc2l6ZSkpCisgICAgICAgICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0yODMsOCArMjkyLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLAotICAgICAgICAmY29va2llT2JqLCAmd2hlbmNlKSkKKyAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9zZWVrX2ltcGwoc2VsZiwgY29va2llT2JqLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMzI3LDggKzMzNyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3MpKQorICAgICAgICAmcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwoc2VsZiwgcG9zKTsKIAogZXhpdDoKQEAgLTQ1Myw0ICs0NjQsNCBAQAogewogICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY5MDYwOGY4NWFhYjhiYTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc4YWQxNGViYTE2NjcyNTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL3dpbmNvbnNvbGVpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDRmY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3dpbmNvbnNvbGVpby5jLmgKQEAgLTAsMCArMSwzMzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2UgdGhlIGhhbmRsZS5cbiIKKyJcbiIKKyJBIGNsb3NlZCBoYW5kbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgorImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19fX2RvY19fLAorIl9XaW5kb3dzQ29uc29sZUlPKGZpbGUsIG1vZGU9XCdyXCcsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgY29uc29sZSBidWZmZXIgYnkgZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIlRoZSBtb2RlIGNhbiBiZSBcJ3JiXCcgKGRlZmF1bHQpLCBvciBcJ3diXCcgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBieXRlcy4gQWxsXG4iCisib3RoZXIgbW9kZSBjaGFyYWN0ZXJzIHdpbGwgYmUgaWdub3JlZC4gTW9kZSBcJ2JcJyB3aWxsIGJlIGFzc3VtZWQgaWYgaXQgaXNcbiIKKyJvbWl0dGVkLiBUaGUgKm9wZW5lciogcGFyYW1ldGVyIGlzIGFsd2F5cyBpZ25vcmVkLiIpOworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSwgaW50IGNsb3NlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb3BlbmVyKTsKKworc3RhdGljIGludAorX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzaU86X1dpbmRvd3NDb25zb2xlSU8iLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CisgICAgaW50IGNsb3NlZmQgPSAxOworICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLCAmb3BlbmVyKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKCh3aW5jb25zb2xlaW8gKilzZWxmLCBuYW1lb2JqLCBtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX19kb2NfXywKKyJmaWxlbm8oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS5cbiIKKyJcbiIKKyJmaWxlbm8gaXMgb25seSBzZXQgd2hlbiBhIGZpbGUgZGVzY3JpcHRvciBpcyB1c2VkIHRvIG9wZW5cbiIKKyJvbmUgb2YgdGhlIHN0YW5kYXJkIHN0cmVhbXMuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYgICAgXAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm8sIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm8od2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIGlucHV0IGJ1ZmZlci4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgY29uc29sZSBpcyBhbiBvdXRwdXQgYnVmZmVyLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvLCBNRVRIX08sIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG8od2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX19kb2NfXywKKyJyZWFkYWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBjb25zb2xlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFsbCIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbCwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCB3aGVuIHNpemUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLFxuIgorInNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWQod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgYiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGJ1ZmZlciBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi5cbiIKKyJUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGUsIE1FVEhfTywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBiICovCisgICAgaWYgKGIub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFsd2F5cyBUcnVlLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5KHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllYmE5MTZmODUzN2ZmZjcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vZmlsZWlvLmMgYi9Nb2R1bGVzL19pby9maWxlaW8uYwppbmRleCA5MTljZjUwLi42ODU0YTQ0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9maWxlaW8uYworKysgYi9Nb2R1bGVzL19pby9maWxlaW8uYwpAQCAtOSw2ICs5LDkgQEAKICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9JT19ICisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgogI2lmZGVmIEhBVkVfRkNOVExfSAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjZW5kaWYKQEAgLTkyLDggKzk1LDcgQEAKICAgICBpZiAoc2VsZi0+ZmQgPj0gMCAmJiBzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZyhzb3VyY2UsIDEsICJ1bmNsb3NlZCBmaWxlICVSIiwgc291cmNlKSkgewogICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQogICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgc2VsZik7CkBAIC0xMTgsMTggKzEyMCwxMyBAQAogICAgICAgICBpbnQgZmQgPSBzZWxmLT5mZDsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwotICAgICAgICAgICAgaWYgKGVyciA8IDApCi0gICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBlcnIgPSBjbG9zZShmZCk7CisgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOwpAQCAtNTQ2LDcgKzU0Myw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1lcnJfbW9kZShjaGFyICphY3Rpb24pCitlcnJfbW9kZShjb25zdCBjaGFyICphY3Rpb24pCiB7CiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fU1RBVEUoKTsKICAgICBpZiAoc3RhdGUgIT0gTlVMTCkKQEAgLTcwMSw4ICs2OTgsNiBAQAogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtOTE1LDE4ICs5MTAsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKKyAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKICNlbHNlCi0gICAgICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgotICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICByZXMgPSAtMTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKQEAgLTEwNDksNyArMTA0MSw3IEBACiB9CiAjZW5kaWYgLyogSEFWRV9GVFJVTkNBVEUgKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogbW9kZV9zdHJpbmcoZmlsZWlvICpzZWxmKQogewogICAgIGlmIChzZWxmLT5jcmVhdGVkKSB7CkBAIC0xMTE3LDEwICsxMTA5LDcgQEAKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGlmIChfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gMDsKKyAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9pb2Jhc2UuYyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCmluZGV4IDU3NTQxYTguLjQ3MmVmM2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2lvYmFzZS5jCisrKyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCkBAIC04MjgsNyArODI4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgKGRlc3RydWN0b3IpaW9iYXNlX2ZpbmFsaXplLCAvKiB0cF9maW5hbGl6ZSAqLworICAgIGlvYmFzZV9maW5hbGl6ZSwgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAwNmI0MTQ0Li44NTQyZWZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTQzOCw3ICs0MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9yZWFkbGluZSwgTlVMTCk7CiAgICAgICAgIGlmIChsaW5lICYmICFQeVVuaWNvZGVfQ2hlY2sobGluZSkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIHN0ciBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIHN0ciBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgUHlfVFlQRShsaW5lKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcwOCw3ICs3MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV3bGluZV9vYmopLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBuZXdsaW5lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuZXdsaW5lX29iaik7CisgICAgICAgIG5ld2xpbmUgPSBQeVVuaWNvZGVfQXNVVEY4KG5ld2xpbmVfb2JqKTsKICAgICAgICAgaWYgKG5ld2xpbmUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDQ2Yzk5YjUuLjFjNzIwMGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC01MzEsNyArNTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLApAQCAtNTY3LDcgKzU2Nyw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzEwYzYyMjUwOGI1NzZjYiBpbnB1dD1jNTNmYjUwNWE3NmRiYmUyXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Miw3ICs3NzIsNyBAQAogICAgIGVuY29kZWZ1bmNfdCBlbmNvZGVmdW5jOwogfSBlbmNvZGVmdW5jZW50cnk7CiAKLXN0YXRpYyBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKK3N0YXRpYyBjb25zdCBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKICAgICB7ImFzY2lpIiwgICAgICAgKGVuY29kZWZ1bmNfdCkgYXNjaWlfZW5jb2RlfSwKICAgICB7Imlzbzg4NTktMSIsICAgKGVuY29kZWZ1bmNfdCkgbGF0aW4xX2VuY29kZX0sCiAgICAgeyJ1dGYtOCIsICAgICAgIChlbmNvZGVmdW5jX3QpIHV0ZjhfZW5jb2RlfSwKQEAgLTkyMSw3ICs5MjEsNyBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZW5jb2RpbmcpOwogICAgIH0KICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgIT0gTlVMTCkgewotICAgICAgICBlbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc2VsZi0+ZW5jb2RpbmcpOworICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9Bc1VURjgoc2VsZi0+ZW5jb2RpbmcpOwogICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtOTY0LDcgKzk2NCw3IEBACiAgICAgfQogICAgIHNlbGYtPndyaXRldHJhbnNsYXRlID0gKG5ld2xpbmUgPT0gTlVMTCB8fCBuZXdsaW5lWzBdICE9ICdcMCcpOwogICAgIGlmICghc2VsZi0+cmVhZHVuaXZlcnNhbCAmJiBzZWxmLT5yZWFkbmwpIHsKLSAgICAgICAgc2VsZi0+d3JpdGVubCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc2VsZi0+cmVhZG5sKTsKKyAgICAgICAgc2VsZi0+d3JpdGVubCA9IFB5VW5pY29kZV9Bc1VURjgoc2VsZi0+cmVhZG5sKTsKICAgICAgICAgaWYgKHNlbGYtPndyaXRlbmwgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmICghc3RyY21wKHNlbGYtPndyaXRlbmwsICJcbiIpKQpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhyZXMpKSB7Ci0gICAgICAgICAgICBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKKyAgICAgICAgICAgIGNvbnN0IGVuY29kZWZ1bmNlbnRyeSAqZSA9IGVuY29kZWZ1bmNzOwogICAgICAgICAgICAgd2hpbGUgKGUtPm5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhyZXMsIGUtPm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmVuY29kZWZ1bmMgPSBlLT5lbmNvZGVmdW5jOwpAQCAtMTYzNyw4ICsxNjM3LDggQEAKIC8qIE5PVEU6IGBlbmRgIG11c3QgcG9pbnQgdG8gdGhlIHJlYWwgZW5kIG9mIHRoZSBQeV9VQ1M0IHN0b3JhZ2UsCiAgICB0aGF0IGlzIHRvIHRoZSBOVUwgY2hhcmFjdGVyLiBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZQogICAgaW5jb3JyZWN0IHJlc3VsdHMuICovCi1zdGF0aWMgY2hhciAqCi1maW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY2hhciAqcywgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQorc3RhdGljIGNvbnN0IGNoYXIgKgorZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKIHsKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICBhc3NlcnQoY2ggPCAyNTYpOwpAQCAtMTY1OCwxMyArMTY1OCwxMyBAQAogUHlfc3NpemVfdAogX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogewogICAgIFB5X3NzaXplX3QgbGVuID0gKChjaGFyKillbmQgLSAoY2hhciopc3RhcnQpL2tpbmQ7CiAKICAgICBpZiAodHJhbnNsYXRlZCkgewogICAgICAgICAvKiBOZXdsaW5lcyBhcmUgYWxyZWFkeSB0cmFuc2xhdGVkLCBvbmx5IHNlYXJjaCBmb3IgXG4gKi8KLSAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgJ1xuJyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOwogICAgICAgICBpZiAocG9zICE9IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgMTsKICAgICAgICAgZWxzZSB7CkBAIC0xNjc2LDcgKzE2NzYsNyBAQAogICAgICAgICAvKiBVbml2ZXJzYWwgbmV3bGluZSBzZWFyY2guIEZpbmQgYW55IG9mIFxyLCBcclxuLCBcbgogICAgICAgICAgKiBUaGUgZGVjb2RlciBlbnN1cmVzIHRoYXQgXHJcbiBhcmUgbm90IHNwbGl0IGluIHR3byBwaWVjZXMKICAgICAgICAgICovCi0gICAgICAgIGNoYXIgKnMgPSBzdGFydDsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0YXJ0OwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBub24tY29udHJvbCBjaGFycy4gVGhlIGxvb3AgYWx3YXlzIGVuZHMKQEAgLTE3MDYsMjEgKzE3MDYsMjEgQEAKICAgICAgICAgLyogQXNzdW1lIHRoYXQgcmVhZG5sIGlzIGFuIEFTQ0lJIGNoYXJhY3Rlci4gKi8KICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlYWRubCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwogICAgICAgICBpZiAocmVhZG5sX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCBubFswXSk7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCBubFswXSk7CiAgICAgICAgICAgICBpZiAocG9zICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjaGFyICpzID0gc3RhcnQ7Ci0gICAgICAgICAgICBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOwotICAgICAgICAgICAgY2hhciAqcG9zOworICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICAgICAgY29uc3QgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvczsKICAgICAgICAgICAgIGlmIChlIDwgcykKICAgICAgICAgICAgICAgICBlID0gczsKICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwgfHwgcG9zID49IGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCByZWFkbmxfbGVuOyBpKyspIHsKQEAgLTI2ODIsNyArMjY4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX3JlYWRsaW5lLCBOVUxMKTsKICAgICAgICAgaWYgKGxpbmUgJiYgIVB5VW5pY29kZV9DaGVjayhsaW5lKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYW4gc3RyIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgc3RyIG9iamVjdCwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJyUuMjAwcyciLCBQeV9UWVBFKGxpbmUpLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMgYi9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjAwYTllCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMKQEAgLTAsMCArMSwxMTU0IEBACisvKgorICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIFdpbmRvd3MgY29uc29sZSBJL08KKworICAgIENsYXNzZXMgZGVmaW5lZCBoZXJlOiBfV2luZG93c0NvbnNvbGVJTworCisgICAgV3JpdHRlbiBieSBTdGV2ZSBEb3dlcgorKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBNU19XSU5ET1dTCisKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkZGVmLmg+IC8qIEZvciBvZmZzZXRvZiAqLworCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgIl9pb21vZHVsZS5oIgorCisvKiBCVUZTSVogZGV0ZXJtaW5lcyBob3cgbWFueSBjaGFyYWN0ZXJzIGNhbiBiZSB0eXBlZCBhdCB0aGUgY29uc29sZQorICAgYmVmb3JlIGl0IHN0YXJ0cyBibG9ja2luZy4gKi8KKyNpZiBCVUZTSVogPCAoMTYqMTAyNCkKKyNkZWZpbmUgU01BTExDSFVOSyAoMioxMDI0KQorI2VsaWYgKEJVRlNJWiA+PSAoMiA8PCAyNSkpCisjZXJyb3IgInVucmVhc29uYWJsZSBCVUZTSVogPiA2NE1CIGRlZmluZWQiCisjZWxzZQorI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgorI2VuZGlmCisKKy8qIEJVRk1BWCBkZXRlcm1pbmVzIGhvdyBtYW55IGJ5dGVzIGNhbiBiZSByZWFkIGluIG9uZSBnby4gKi8KKyNkZWZpbmUgQlVGTUFYICgzMioxMDI0KjEwMjQpCisKKy8qIFNNQUxMQlVGIGRldGVybWluZXMgaG93IG1hbnkgdXRmLTggY2hhcmFjdGVycyB3aWxsIGJlCisgICBidWZmZXJlZCB3aXRoaW4gdGhlIHN0cmVhbSwgaW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkcworICAgb2YgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgKi8KKyNkZWZpbmUgU01BTExCVUYgNAorCitjaGFyIF9nZXRfY29uc29sZV90eXBlKEhBTkRMRSBoYW5kbGUpIHsKKyAgICBEV09SRCBtb2RlLCBwZWVrX2NvdW50OworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuICdcMCc7CisKKyAgICBpZiAoIUdldENvbnNvbGVNb2RlKGhhbmRsZSwgJm1vZGUpKQorICAgICAgICByZXR1cm4gJ1wwJzsKKworICAgIC8qIFBlZWsgYXQgdGhlIGhhbmRsZSB0byBzZWUgd2hldGhlciBpdCBpcyBhbiBpbnB1dCBvciBvdXRwdXQgaGFuZGxlICovCisgICAgaWYgKEdldE51bWJlck9mQ29uc29sZUlucHV0RXZlbnRzKGhhbmRsZSwgJnBlZWtfY291bnQpKQorICAgICAgICByZXR1cm4gJ3InOworICAgIHJldHVybiAndyc7Cit9CisKK2NoYXIgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShQeU9iamVjdCAqcGF0aF9vcl9mZCkgeworICAgIGludCBmZDsKKworICAgIGZkID0gUHlMb25nX0FzTG9uZyhwYXRoX29yX2ZkKTsKKyAgICBQeUVycl9DbGVhcigpOworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIEhBTkRMRSBoYW5kbGU7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIGlmICghaGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuICdcMCc7CisgICAgICAgIHJldHVybiBfZ2V0X2NvbnNvbGVfdHlwZShoYW5kbGUpOworICAgIH0KKworICAgIFB5T2JqZWN0ICpkZWNvZGVkLCAqZGVjb2RlZF91cHBlcjsKKworICAgIGludCBkID0gUHlVbmljb2RlX0ZTRGVjb2RlcihwYXRoX29yX2ZkLCAmZGVjb2RlZCk7CisgICAgaWYgKCFkKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSkgeworICAgICAgICBQeV9DTEVBUihkZWNvZGVkKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorICAgIGRlY29kZWRfdXBwZXIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGRlY29kZWQsICJ1cHBlciIsICIiKTsKKyAgICBQeV9DTEVBUihkZWNvZGVkKTsKKyAgICBpZiAoIWRlY29kZWRfdXBwZXIpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorCisgICAgY2hhciBtID0gJ1wwJzsKKyAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTklOJCIpKSB7CisgICAgICAgIG0gPSAncic7CisgICAgfSBlbHNlIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OT1VUJCIpKSB7CisgICAgICAgIG0gPSAndyc7CisgICAgfSBlbHNlIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OIikpIHsKKyAgICAgICAgbSA9ICd4JzsKKyAgICB9CisKKyAgICBQeV9DTEVBUihkZWNvZGVkX3VwcGVyKTsKKyAgICByZXR1cm4gbTsKK30KKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLl9XaW5kb3dzQ29uc29sZUlPICJ3aW5jb25zb2xlaW8gKiIgIiZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWU4OTdmZGMxZmJhNGUxMzFdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBmZDsKKyAgICB1bnNpZ25lZCBpbnQgY3JlYXRlZCA6IDE7CisgICAgdW5zaWduZWQgaW50IHJlYWRhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgd3JpdGFibGUgOiAxOworICAgIHVuc2lnbmVkIGludCBjbG9zZWhhbmRsZSA6IDE7CisgICAgY2hhciBmaW5hbGl6aW5nOworICAgIHVuc2lnbmVkIGludCBibGtzaXplOworICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBjaGFyIGJ1ZltTTUFMTEJVRl07CisgICAgd2NoYXJfdCB3YnVmOworfSB3aW5jb25zb2xlaW87CisKK1B5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKworX1B5X0lERU5USUZJRVIobmFtZSk7CisKK2ludAorX1B5V2luZG93c0NvbnNvbGVJT19jbG9zZWQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuICgod2luY29uc29sZWlvICopc2VsZiktPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK30KKworCisvKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgd2l0aCBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUuICovCitzdGF0aWMgaW50CitpbnRlcm5hbF9jbG9zZSh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgICAgIGlmIChzZWxmLT5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgICAgIGNsb3NlKHNlbGYtPmZkKTsKKyAgICAgICAgICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgfQorICAgICAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZi0+aGFuZGxlKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5jbG9zZQorCitDbG9zZSB0aGUgaGFuZGxlLgorCitBIGNsb3NlZCBoYW5kbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdlZjk1YjY2YzI5MDU3YiBpbnB1dD0xODU2MTdlMzQ5YWU0YzdiXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgaW50IHJjOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9jbG9zZSwgIk8iLCBzZWxmKTsKKyAgICBpZiAoIXNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgcmMgPSBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICBpZiAocmMgPCAwKQorICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHdpbmNvbnNvbGVpbyAqc2VsZjsKKworICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CisKKyAgICBzZWxmID0gKHdpbmNvbnNvbGVpbyAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKKyAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOworICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMDsKKyAgICAgICAgc2VsZi0+Ymxrc2l6ZSA9IDA7CisgICAgICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5fX2luaXRfXworICAgIGZpbGUgYXMgbmFtZW9iajogb2JqZWN0CisgICAgbW9kZTogc3RyID0gInIiCisgICAgY2xvc2VmZDogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQorICAgIG9wZW5lcjogb2JqZWN0ID0gTm9uZQorCitPcGVuIGEgY29uc29sZSBidWZmZXIgYnkgZmlsZSBkZXNjcmlwdG9yLgorCitUaGUgbW9kZSBjYW4gYmUgJ3JiJyAoZGVmYXVsdCksIG9yICd3YicgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBieXRlcy4gQWxsCitvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlICdiJyB3aWxsIGJlIGFzc3VtZWQgaWYgaXQgaXMKK29taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2ZkOWNiY2RkOGQ5NTQyOSBpbnB1dD02MWJlMzk2MzNhODZmNWQ3XSovCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICB3Y2hhcl90ICpuYW1lID0gTlVMTDsKKyAgICBjaGFyIGNvbnNvbGVfdHlwZSA9ICdcMCc7CisgICAgaW50IHJldCA9IDA7CisgICAgaW50IHJ3YSA9IDA7CisgICAgaW50IGZkID0gLTE7CisgICAgaW50IGZkX2lzX293biA9IDA7CisKKyAgICBhc3NlcnQoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHNlbGYpKTsKKyAgICBpZiAoc2VsZi0+aGFuZGxlID49IDApIHsKKyAgICAgICAgaWYgKHNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgICAgICAvKiBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LiAqLworICAgICAgICAgICAgaWYgKGludGVybmFsX2Nsb3NlKHNlbGYpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgfQorCisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZkID0gX1B5TG9uZ19Bc0ludChuYW1lb2JqKTsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGZpbGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIHNlbGYtPmZkID0gZmQ7CisKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkbmFtZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihkZWNvZGVkbmFtZSk7CisKKyAgICAgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKG5hbWVvYmosICh2b2lkKikmZGVjb2RlZG5hbWUpOworICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgICAgIG5hbWUgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhkZWNvZGVkbmFtZSwgJmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9QeUlPX2dldF9jb25zb2xlX3R5cGUoZGVjb2RlZG5hbWUpOworICAgICAgICBQeV9DTEVBUihkZWNvZGVkbmFtZSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaWYgKHdjc2xlbihuYW1lKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzID0gbW9kZTsKKyAgICB3aGlsZSAoKnMpIHsKKyAgICAgICAgc3dpdGNoICgqcysrKSB7CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGNvbnNvbGVfdHlwZSA9ICdyJzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT53cml0YWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY29uc29sZV90eXBlID09ICd4JykKKyAgICAgICAgICAgICAgICBjb25zb2xlX3R5cGUgPSAndyc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1vZGU6ICUuMjAwcyIsIG1vZGUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcndhKQorICAgICAgICBnb3RvIGJhZF9tb2RlOworCisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBzZWxmLT5oYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIERXT1JEIGFjY2VzcyA9IEdFTkVSSUNfUkVBRDsKKworICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDE7CisgICAgICAgIGlmICghY2xvc2VmZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgICAgIGFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAvKiBBdHRlbXB0IHRvIG9wZW4gZm9yIHJlYWQvd3JpdGUgaW5pdGlhbGx5LCB0aGVuIGZhbGwgYmFjaworICAgICAgICAgICBvbiB0aGUgc3BlY2lmaWMgYWNjZXNzLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBtb2Rlcm4gbmFtZXMKKyAgICAgICAgICAgQ09OSU4kIGFuZCBDT05PVVQkLCB3aGljaCBhbGxvdyByZWFkaW5nL3dyaXRpbmcgc3RhdGUgYXMKKyAgICAgICAgICAgd2VsbCBhcyByZWFkaW5nL3dyaXRpbmcgY29udGVudC4gKi8KKyAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgYWNjZXNzLAorICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIEdldExhc3RFcnJvcigpLCBuYW1lb2JqKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29uc29sZV90eXBlID09ICdcMCcpCisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9nZXRfY29uc29sZV90eXBlKHNlbGYtPmhhbmRsZSk7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUgJiYgY29uc29sZV90eXBlICE9ICd3JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIGlucHV0IGJ1ZmZlciBmb3Igd3JpdGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoc2VsZi0+cmVhZGFibGUgJiYgY29uc29sZV90eXBlICE9ICdyJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIG91dHB1dCBidWZmZXIgZm9yIHJlYWRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBzZWxmLT5ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKyAgICBtZW1zZXQoc2VsZi0+YnVmLCAwLCA0KTsKKworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX25hbWUsIG5hbWVvYmopIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGdvdG8gZG9uZTsKKworYmFkX21vZGU6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZCBvciB3cml0ZSBtb2RlIik7CitlcnJvcjoKKyAgICByZXQgPSAtMTsKKyAgICBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKworZG9uZToKKyAgICBpZiAobmFtZSkKKyAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Cit3aW5jb25zb2xlaW9fdHJhdmVyc2Uod2luY29uc29sZWlvICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord2luY29uc29sZWlvX2NsZWFyKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3dpbmNvbnNvbGVpb19kZWFsbG9jKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBzZWxmLT5maW5hbGl6aW5nID0gMTsKKyAgICBpZiAoX1B5SU9CYXNlX2ZpbmFsaXplKChQeU9iamVjdCAqKSBzZWxmKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9jbG9zZWQodm9pZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9tb2RlKGNvbnN0IGNoYXIgKmFjdGlvbikKK3sKKyAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19TVEFURSgpOworICAgIGlmIChzdGF0ZSAhPSBOVUxMKQorICAgICAgICBQeUVycl9Gb3JtYXQoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICJDb25zb2xlIGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0ICVzIiwgYWN0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KKworZmlsZW5vIGlzIG9ubHkgc2V0IHdoZW4gYSBmaWxlIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvcGVuCitvbmUgb2YgdGhlIHN0YW5kYXJkIHN0cmVhbXMuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDA2ZmE3NGNlM2I1Y2ZiZiBpbnB1dD0wNzlhZGMzMzBkZGFhYmU2XSovCit7CisgICAgaWYgKHNlbGYtPmZkIDwgMCAmJiBzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19SRE9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIH0KKyAgICBpZiAoc2VsZi0+ZmQgPCAwKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoImZpbGVubyIpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIGlucHV0IGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWY5Y2VmMjc0M2JlY2YwIGlucHV0PTZiZTlkZWZiNTMwMmRhYWVdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLndyaXRhYmxlCisKK1RydWUgaWYgY29uc29sZSBpcyBhbiBvdXRwdXQgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYTJhZDdlYWU1YWJmNjcgaW5wdXQ9Y2VmYmQ4YWJjMjRkZjZhMF0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgc2VsZi0+d3JpdGFibGUpOworfQorCitzdGF0aWMgRFdPUkQKK19idWZsZW4od2luY29uc29sZWlvICpzZWxmKQoreworICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBTTUFMTEJVRjsgKytpKSB7CisgICAgICAgIGlmICghc2VsZi0+YnVmW2ldKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBTTUFMTEJVRjsKK30KKworc3RhdGljIERXT1JECitfY29weWZyb21idWYod2luY29uc29sZWlvICpzZWxmLCBjaGFyICpidWYsIERXT1JEIGxlbikKK3sKKyAgICBEV09SRCBuID0gMDsKKworICAgIHdoaWxlIChzZWxmLT5idWZbMF0gJiYgbGVuLS0pIHsKKyAgICAgICAgYnVmW24rK10gPSBzZWxmLT5idWZbMF07CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgU01BTExCVUY7ICsraSkKKyAgICAgICAgICAgIHNlbGYtPmJ1ZltpIC0gMV0gPSBzZWxmLT5idWZbaV07CisgICAgICAgIHNlbGYtPmJ1ZltTTUFMTEJVRiAtIDFdID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIHdjaGFyX3QgKgorcmVhZF9jb25zb2xlX3coSEFORExFIGhhbmRsZSwgRFdPUkQgbWF4bGVuLCBEV09SRCAqcmVhZGxlbikgeworICAgIGludCBlcnIgPSAwLCBzaWcgPSAwOworCisgICAgd2NoYXJfdCAqYnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYyhtYXhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmICghYnVmKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgKnJlYWRsZW4gPSAwOworCisgICAgLy9EZWJ1Z0JyZWFrKCk7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIERXT1JEIG9mZiA9IDA7CisgICAgd2hpbGUgKG9mZiA8IG1heGxlbikgeworICAgICAgICBEV09SRCBuLCBsZW4gPSBtaW4obWF4bGVuIC0gb2ZmLCBCVUZTSVopOworICAgICAgICBTZXRMYXN0RXJyb3IoMCk7CisgICAgICAgIEJPT0wgcmVzID0gUmVhZENvbnNvbGVXKGhhbmRsZSwgJmJ1ZltvZmZdLCBsZW4sICZuLCBOVUxMKTsKKworICAgICAgICBpZiAoIXJlcykgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlcnIgPSAwOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgMTAwLCBGQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCkgeworICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCisgICAgICAgICAgICAgICAgc2lnID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CisgICAgICAgICAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCisgICAgICAgICAgICAgICAgaWYgKHNpZyA8IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICpyZWFkbGVuICs9IG47CisKKyAgICAgICAgLyogSWYgd2UgZGlkbid0IHJlYWQgYSBmdWxsIGJ1ZmZlciB0aGF0IHRpbWUsIGRvbid0IHRyeQorICAgICAgICAgICBhZ2FpbiBvciB3ZSB3aWxsIGJsb2NrIGEgc2Vjb25kIHRpbWUuICovCisgICAgICAgIGlmIChuIDwgbGVuKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIElmIHRoZSBidWZmZXIgZW5kZWQgd2l0aCBhIG5ld2xpbmUsIGJyZWFrIG91dCAqLworICAgICAgICBpZiAoYnVmWypyZWFkbGVuIC0gMV0gPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIGVuZHMgd2l0aCBhIGhpZ2ggc3Vycm9nYXRlLCBleHBhbmQgdGhlCisgICAgICAgICAgIGJ1ZmZlciBhbmQgcmVhZCBhbiBleHRyYSBjaGFyYWN0ZXIuICovCisgICAgICAgIFdPUkQgY2hhcl90eXBlOworICAgICAgICBpZiAob2ZmICsgQlVGU0laID49IG1heGxlbiAmJgorICAgICAgICAgICAgR2V0U3RyaW5nVHlwZVcoQ1RfQ1RZUEUzLCAmYnVmWypyZWFkbGVuIC0gMV0sIDEsICZjaGFyX3R5cGUpICYmCisgICAgICAgICAgICBjaGFyX3R5cGUgPT0gQzNfSElHSFNVUlJPR0FURSkgeworICAgICAgICAgICAgd2NoYXJfdCAqbmV3YnVmOworICAgICAgICAgICAgbWF4bGVuICs9IDE7CisgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCisgICAgICAgICAgICBuZXdidWYgPSAod2NoYXJfdCopUHlNZW1fUmVhbGxvYyhidWYsIG1heGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgIGlmICghbmV3YnVmKSB7CisgICAgICAgICAgICAgICAgc2lnID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgICAgICAvKiBPbmx5IGFkdmFuY2UgYnkgbiBhbmQgbm90IEJVRlNJWiBpbiB0aGlzIGNhc2UgKi8KKyAgICAgICAgICAgIG9mZiArPSBuOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBvZmYgKz0gQlVGU0laOworICAgIH0KKworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoc2lnKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnJlYWRsZW4gPiAwICYmIGJ1ZlswXSA9PSBMJ1x4MWEnKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgaWYgKCFidWYpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBidWZbMF0gPSBMJ1wwJzsKKyAgICAgICAgKnJlYWRsZW4gPSAwOworICAgIH0KKworICAgIHJldHVybiBidWY7CisKK2Vycm9yOgorICAgIGlmIChidWYpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlfc3NpemVfdAorcmVhZGludG8od2luY29uc29sZWlvICpzZWxmLCBjaGFyICpidWYsIFB5X3NzaXplX3QgbGVuKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgZXJyX2Nsb3NlZCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghc2VsZi0+cmVhZGFibGUpIHsKKyAgICAgICAgZXJyX21vZGUoInJlYWRpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChsZW4gPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogRWFjaCBjaGFyYWN0ZXIgbWF5IHRha2UgdXAgdG8gNCBieXRlcyBpbiB0aGUgZmluYWwgYnVmZmVyLgorICAgICAgIFRoaXMgaXMgaGlnaGx5IGNvbnNlcnZhdGl2ZSwgYnV0IG5lY2Vzc2FyeSB0byBhdm9pZAorICAgICAgIGZhaWx1cmUgZm9yIGFueSBnaXZlbiBVbmljb2RlIGlucHV0IChlLmcuIFxVMDAxMGZmZmYpLgorICAgICAgIElmIHRoZSBjYWxsZXIgcmVxdWVzdHMgZmV3ZXIgdGhhbiA0IGJ5dGVzLCB3ZSBidWZmZXIgb25lCisgICAgICAgY2hhcmFjdGVyLgorICAgICovCisgICAgRFdPUkQgd2xlbiA9IChEV09SRCkobGVuIC8gNCk7CisgICAgaWYgKHdsZW4gPT0gMCkgeworICAgICAgICB3bGVuID0gMTsKKyAgICB9CisKKyAgICBEV09SRCByZWFkX2xlbiA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBidWYsIChEV09SRClsZW4pOworICAgIGlmIChyZWFkX2xlbikgeworICAgICAgICBidWYgPSAmYnVmW3JlYWRfbGVuXTsKKyAgICAgICAgbGVuIC09IHJlYWRfbGVuOworICAgICAgICB3bGVuIC09IDE7CisgICAgfQorICAgIGlmIChsZW4gPT0gcmVhZF9sZW4gfHwgd2xlbiA9PSAwKQorICAgICAgICByZXR1cm4gcmVhZF9sZW47CisKKyAgICBEV09SRCBuOworICAgIHdjaGFyX3QgKndidWYgPSByZWFkX2NvbnNvbGVfdyhzZWxmLT5oYW5kbGUsIHdsZW4sICZuKTsKKyAgICBpZiAod2J1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG4gPT0gMCkgeworICAgICAgICBQeU1lbV9GcmVlKHdidWYpOworICAgICAgICByZXR1cm4gcmVhZF9sZW47CisgICAgfQorCisgICAgaW50IGVyciA9IDA7CisgICAgRFdPUkQgdThuID0gMDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAobGVuIDwgNCkgeworICAgICAgICBpZiAoV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIHNlbGYtPmJ1Ziwgc2l6ZW9mKHNlbGYtPmJ1ZikgLyBzaXplb2Yoc2VsZi0+YnVmWzBdKSwKKyAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKSkKKyAgICAgICAgICAgIHU4biA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBidWYsIChEV09SRClsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHU4biA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgIGJ1ZiwgKERXT1JEKWxlbiwgTlVMTCwgTlVMTCk7CisgICAgfQorCisgICAgaWYgKHU4bikgeworICAgICAgICByZWFkX2xlbiArPSB1OG47CisgICAgICAgIHU4biA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgeworICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBuZWVkZWQgYnVmZmVyIGZvciBhIG1vcmUgdXNlZnVsIGVycm9yLCBhcyB0aGlzCisgICAgICAgICAgICAgICAgbWVhbnMgb3VyICIvIDQiIGxvZ2ljIGFib3ZlIGlzIGluc3VmZmljaWVudCBmb3Igc29tZSBpbnB1dC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICB1OG4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUod2J1Zik7CisKKyAgICBpZiAodThuKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJCdWZmZXIgaGFkIHJvb20gZm9yICVkIGJ5dGVzIGJ1dCAlZCBieXRlcyByZXF1aXJlZCIsCisgICAgICAgICAgICBsZW4sIHU4bik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIHJlYWRfbGVuOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCisKK1NhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2ZDFiZGZhM2YyMGFmMzkgaW5wdXQ9NGVkNjhkYTQ4YTZiYWZmZV0qLworeworICAgIFB5X3NzaXplX3QgbGVuID0gcmVhZGludG8oc2VsZiwgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKKyAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7Cit9CisKK3N0YXRpYyBEV09SRAorbmV3X2J1ZmZlcnNpemUod2luY29uc29sZWlvICpzZWxmLCBEV09SRCBjdXJyZW50c2l6ZSkKK3sKKyAgICBEV09SRCBhZGRlbmQ7CisKKyAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCisgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGlmIChjdXJyZW50c2l6ZSA+IDY1NTM2KQorICAgICAgICBhZGRlbmQgPSBjdXJyZW50c2l6ZSA+PiAzOworICAgIGVsc2UKKyAgICAgICAgYWRkZW5kID0gMjU2ICsgY3VycmVudHNpemU7CisgICAgaWYgKGFkZGVuZCA8IFNNQUxMQ0hVTkspCisgICAgICAgIC8qIEF2b2lkIHRpbnkgcmVhZCgpIGNhbGxzLiAqLworICAgICAgICBhZGRlbmQgPSBTTUFMTENIVU5LOworICAgIHJldHVybiBhZGRlbmQgKyBjdXJyZW50c2l6ZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRhbGwKKworUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBjb25zb2xlLCByZXR1cm5lZCBhcyBieXRlcy4KKworUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNmQzMTJjNjg0ZjZlMjNiIGlucHV0PTQwMjRkNjQ5YTEwMDZlNjldKi8KK3sKKyAgICB3Y2hhcl90ICpidWY7CisgICAgRFdPUkQgYnVmc2l6ZSwgbiwgbGVuID0gMDsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgRFdPUkQgYnl0ZXNfc2l6ZSwgcm47CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworCisgICAgYnVmc2l6ZSA9IEJVRlNJWjsKKworICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2MoKGJ1ZnNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHdjaGFyX3QgKnN1YmJ1ZjsKKworICAgICAgICBpZiAobGVuID49IChQeV9zc2l6ZV90KWJ1ZnNpemUpIHsKKyAgICAgICAgICAgIERXT1JEIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCBsZW4pOworICAgICAgICAgICAgaWYgKG5ld3NpemUgPiBCVUZNQVgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobmV3c2l6ZSA8IGJ1ZnNpemUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiBhIFB5dGhvbiBieXRlcyBvYmplY3QgY2FuIGhvbGQiKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZzaXplID0gbmV3c2l6ZTsKKworICAgICAgICAgICAgYnVmID0gUHlNZW1fUmVhbGxvYyhidWYsIChidWZzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdWJidWYgPSByZWFkX2NvbnNvbGVfdyhzZWxmLT5oYW5kbGUsIGJ1ZnNpemUgLSBsZW4sICZuKTsKKworICAgICAgICBpZiAoc3ViYnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPiAwKQorICAgICAgICAgICAgd2NzbmNweV9zKCZidWZbbGVuXSwgYnVmc2l6ZSAtIGxlbiArIDEsIHN1YmJ1Ziwgbik7CisKKyAgICAgICAgUHlNZW1fRnJlZShzdWJidWYpOworCisgICAgICAgIC8qIHdoZW4gdGhlIHJlYWQgaXMgZW1wdHkgd2UgYnJlYWsgKi8KKyAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGxlbiArPSBuOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCAmJiBfYnVmbGVuKHNlbGYpID09IDApIHsKKyAgICAgICAgLyogd2hlbiB0aGUgcmVzdWx0IHN0YXJ0cyB3aXRoIF5aIHdlIHJldHVybiBhbiBlbXB0eSBidWZmZXIgKi8KKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CisKKyAgICBpZiAobGVuKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVmLCBsZW4sCisgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWJ5dGVzX3NpemUpIHsKKyAgICAgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBieXRlc19zaXplID0gMDsKKyAgICB9CisKKyAgICBieXRlc19zaXplICs9IF9idWZsZW4oc2VsZik7CisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzX3NpemUpOworICAgIHJuID0gX2NvcHlmcm9tYnVmKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgYnl0ZXNfc2l6ZSk7CisKKyAgICBpZiAobGVuKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVmLCBsZW4sCisgICAgICAgICAgICAmUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpW3JuXSwgYnl0ZXNfc2l6ZSAtIHJuLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWJ5dGVzX3NpemUpIHsKKyAgICAgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKworICAgICAgICAvKiBhZGQgYmFjayB0aGUgbnVtYmVyIG9mIHByZXNlcnZlZCBieXRlcyAqLworICAgICAgICBieXRlc19zaXplICs9IHJuOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAoYnl0ZXNfc2l6ZSA8IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIG4gKiBzaXplb2Yod2NoYXJfdCkpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ5dGVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZAorICAgIHNpemU6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCB3aGVuIHNpemUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLAorc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01N2RmNjhhZjlmNGIyMmQwIGlucHV0PTZjNTZmY2VlYzQ2MGYxZGRdKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBieXRlc19zaXplOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CisgICAgaWYgKHNpemUgPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnl0ZXNfc2l6ZSA9IHJlYWRpbnRvKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChieXRlc19zaXplIDwgMCkgeworICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChieXRlc19zaXplIDwgUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIGJ5dGVzX3NpemUpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KK1RoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3NWJkYjE2ZmJmOTEzN2IgaW5wdXQ9YmUzNWZiNjI0Zjk3Yzk0MV0qLworeworICAgIEJPT0wgcmVzID0gVFJVRTsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIERXT1JEIGxlbiwgd2xlbiwgbiA9IDA7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOworCisgICAgaWYgKGItPmxlbiA+IEJVRk1BWCkKKyAgICAgICAgbGVuID0gQlVGTUFYOworICAgIGVsc2UKKyAgICAgICAgbGVuID0gKERXT1JEKWItPmxlbjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgTlVMTCwgMCk7CisKKyAgICAvKiBpc3N1ZTExMzk1IHRoZXJlIGlzIGFuIHVuc3BlY2lmaWVkIHVwcGVyIGJvdW5kIG9uIGhvdyBtYW55IGJ5dGVzCisgICAgICAgY2FuIGJlIHdyaXR0ZW4gYXQgb25jZS4gV2UgY2FwIGF0IDMyayAtIHRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvCisgICAgICAgaGFuZGxlIHBhcnRpYWwgd3JpdGVzLgorICAgICAgIFNpbmNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgaW5wdXQgYnl0ZXMgYXJlIGJlaW5nIGlnbm9yZWQsIHdlCisgICAgICAgaGF2ZSB0byByZWR1Y2UgYW5kIHJlY2FsY3VsYXRlLiAqLworICAgIHdoaWxlICh3bGVuID4gMzI3NjYgLyBzaXplb2Yod2NoYXJfdCkpIHsKKyAgICAgICAgbGVuIC89IDI7CisgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghd2xlbikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2Mod2xlbiAqIHNpemVvZih3Y2hhcl90KSk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIHdidWYsIHdsZW4pOworICAgIGlmICh3bGVuKSB7CisgICAgICAgIHJlcyA9IFdyaXRlQ29uc29sZVcoc2VsZi0+aGFuZGxlLCB3YnVmLCB3bGVuLCAmbiwgTlVMTCk7CisgICAgICAgIGlmIChuIDwgd2xlbikgeworICAgICAgICAgICAgLyogV3JvdGUgZmV3ZXIgY2hhcmFjdGVycyB0aGFuIGV4cGVjdGVkLCB3aGljaCBtZWFucyBvdXIKKyAgICAgICAgICAgICAqIGxlbiB2YWx1ZSBtYXkgYmUgd3JvbmcuIFNvIHJlY2FsY3VsYXRlIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgd2VyZSB3cml0dGVuLiBBcyB0aGlzIGNvdWxkIHBvdGVudGlhbGx5CisgICAgICAgICAgICAgKiByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdmFsdWUsIHdlIGFsc28gdmFsaWRhdGUgdGhhdCB2YWx1ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLAorICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQod2xlbiA9PSBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJlcyA9IDA7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzKSB7CisgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBQeU1lbV9GcmVlKHdidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKHdidWYpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19yZXByKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uX1dpbmRvd3NDb25zb2xlSU8gW2Nsb3NlZF0+Iik7CisKKyAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSdyYicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSd3YicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIl9XaW5kb3dzQ29uc29sZUlPIGhhcyBpbnZhbGlkIG1vZGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmlzYXR0eQorCitBbHdheXMgVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWVhYzA5ZDI4N2MxMWJkNyBpbnB1dD05YjkxNTkxZGJlMzU2Zjg2XSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX2dldHN0YXRlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisjaW5jbHVkZSAiY2xpbmljL3dpbmNvbnNvbGVpby5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5jb25zb2xlaW9fbWV0aG9kc1tdID0geworICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXdpbmNvbnNvbGVpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKy8qICdjbG9zZWQnIGFuZCAnbW9kZScgYXJlIGF0dHJpYnV0ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBGaWxlSU8uICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xvc2VkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWZkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5jbG9zZWhhbmRsZSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X21vZGUod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzZWxmLT5yZWFkYWJsZSA/ICJyYiIgOiAid2IiKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWdldF9jbG9zZWQsIE5VTEwsICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAorICAgIHsiY2xvc2VmZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZmQsIE5VTEwsCisgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4ifSwKKyAgICB7Im1vZGUiLCAoZ2V0dGVyKWdldF9tb2RlLCBOVUxMLCAiU3RyaW5nIGdpdmluZyB0aGUgZmlsZSBtb2RlIn0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIHdpbmNvbnNvbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBibGtzaXplKSwgMH0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5fV2luZG93c0NvbnNvbGVJTyIsCisgICAgc2l6ZW9mKHdpbmNvbnNvbGVpbyksCisgICAgMCwKKyAgICAoZGVzdHJ1Y3Rvcil3aW5jb25zb2xlaW9fZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyl3aW5jb25zb2xlaW9fcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXdpbmNvbnNvbGVpb190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpd2luY29uc29sZWlvX2NsZWFyLCAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZih3aW5jb25zb2xlaW8sIHdlYWtyZWZsaXN0KSwgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHdpbmNvbnNvbGVpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHdpbmNvbnNvbGVpb19tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgZGljdCksICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXywgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB3aW5jb25zb2xlaW9fbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5V2luZG93c0NvbnNvbGVJT19UeXBlID0gKFB5T2JqZWN0KikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggNDdjOWIwZC4uNWIzZDgwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtMTEyLDcgKzExMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2VuY29kZWRfY29uc3QoUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZAotcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCk7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9lbmNvZGVfc3RyaW5nKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzIxLDcgKzMyMSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCityYWlzZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgLyogVXNlIEpTT05EZWNvZGVFcnJvciBleGNlcHRpb24gdG8gcmFpc2UgYSBuaWNlIGxvb2tpbmcgVmFsdWVFcnJvciBzdWJjbGFzcyAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqSlNPTkRlY29kZUVycm9yID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKaW5kZXggYjEzMDdlZi4uZmViMzgwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogLyogdGhlIGdyb3VwaW5nIGlzIHRlcm1pbmF0ZWQgYnkgZWl0aGVyIDAgb3IgQ0hBUl9NQVggKi8KIHN0YXRpYyBQeU9iamVjdCoKLWNvcHlfZ3JvdXBpbmcoY2hhciogcykKK2NvcHlfZ3JvdXBpbmcoY29uc3QgY2hhciogcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqdmFsID0gTlVMTDsKQEAgLTYyMiw1MyArNjIyLDM0IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19sb2NhbGUodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICp4OworICAgIFB5T2JqZWN0ICptOwogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGludCBpOwogI2VuZGlmCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfbG9jYWxlbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DVFlQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0NUWVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfVElNRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX1RJTUUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DT0xMQVRFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ09MTEFURSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX01PTkVUQVJZKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTU9ORVRBUlkiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NUWVBFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19USU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19DT0xMQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NT05FVEFSWSk7CiAKICNpZmRlZiBMQ19NRVNTQUdFUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTUVTU0FHRVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NRVNTQUdFUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTUVTU0FHRVMpOwogI2VuZGlmIC8qIExDX01FU1NBR0VTICovCiAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX05VTUVSSUMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19OVU1FUklDIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDSEFSX01BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTlVNRVJJQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDSEFSX01BWCk7CiAKICAgICBFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibG9jYWxlLkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVycm9yIiwgRXJyb3IpOworICAgIGlmIChFcnJvciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXJyb3IiLCBFcnJvcik7CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKICAgICBmb3IgKGkgPSAwOyBsYW5naW5mb19jb25zdGFudHNbaV0ubmFtZTsgaSsrKSB7CkBAIC02NzYsNiArNjU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdpbmZvX2NvbnN0YW50c1tpXS52YWx1ZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCA3ODc2ZTcxLi4wZTc2MjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMiwxNyArMiwxMyBAQAogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAicm90YXRpbmd0cmVlLmgiCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgbG9uZyBsb25ncyEiCi0jZW5kaWYKLQogLyoqKiBTZWxlY3Rpb24gb2YgYSBoaWdoLXByZWNpc2lvbiB0aW1lciAqKiovCiAKICNpZmRlZiBNU19XSU5ET1dTCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBMQVJHRV9JTlRFR0VSIGxpOwpAQCAtMzksMTEgKzM1LDExIEBACiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBQWV9MT05HX0xPTkcgcmV0OworICAgIGxvbmcgbG9uZyByZXQ7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCiAgICAgZ2V0dGltZW9mZGF5KCZ0dik7CiAjZWxzZQpAQCAtNzAsOCArNjYsOCBAQAogLyogcmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGFub3RoZXIgZnVuY3Rpb24gKi8KIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlclN1YkVudHJ5IHsKICAgICByb3RhdGluZ19ub2RlX3QgaGVhZGVyOwotICAgIFBZX0xPTkdfTE9ORyB0dDsKLSAgICBQWV9MT05HX0xPTkcgaXQ7CisgICAgbG9uZyBsb25nIHR0OworICAgIGxvbmcgbG9uZyBpdDsKICAgICBsb25nIGNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtODEsOCArNzcsOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7CiAgICAgUHlPYmplY3QgKnVzZXJPYmo7IC8qIFB5Q29kZU9iamVjdCwgb3IgYSBkZXNjcmlwdGl2ZSBzdHIgZm9yIGJ1aWx0aW5zICovCi0gICAgUFlfTE9OR19MT05HIHR0OyAvKiB0b3RhbCB0aW1lIGluIHRoaXMgZW50cnkgKi8KLSAgICBQWV9MT05HX0xPTkcgaXQ7IC8qIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykgKi8KKyAgICBsb25nIGxvbmcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLworICAgIGxvbmcgbG9uZyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLwogICAgIGxvbmcgY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyB0aGlzIHdhcyBjYWxsZWQgKi8KICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsgLyogaG93IG1hbnkgdGltZXMgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCiAgICAgbG9uZyByZWN1cnNpb25MZXZlbDsKQEAgLTkwLDggKzg2LDggQEAKIH0gUHJvZmlsZXJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCB7Ci0gICAgUFlfTE9OR19MT05HIHQwOwotICAgIFBZX0xPTkdfTE9ORyBzdWJ0OworICAgIGxvbmcgbG9uZyB0MDsKKyAgICBsb25nIGxvbmcgc3VidDsKICAgICBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCAqcHJldmlvdXM7CiAgICAgUHJvZmlsZXJFbnRyeSAqY3R4RW50cnk7CiB9IFByb2ZpbGVyQ29udGV4dDsKQEAgLTEyMSw5ICsxMTcsOSBAQAogI2RlZmluZSBET1VCTEVfVElNRVJfUFJFQ0lTSU9OICAgNDI5NDk2NzI5Ni4wCiBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOwogCi1zdGF0aWMgUFlfTE9OR19MT05HIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQorc3RhdGljIGxvbmcgbG9uZyBDYWxsRXh0ZXJuYWxUaW1lcihQcm9maWxlck9iamVjdCAqcE9iaikKIHsKLSAgICBQWV9MT05HX0xPTkcgcmVzdWx0OworICAgIGxvbmcgbG9uZyByZXN1bHQ7CiAgICAgUHlPYmplY3QgKm8gPSBQeU9iamVjdF9DYWxsKHBPYmotPmV4dGVybmFsVGltZXIsIGVtcHR5X3R1cGxlLCBOVUxMKTsKICAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShwT2JqLT5leHRlcm5hbFRpbWVyKTsKQEAgLTEzNiwxMSArMTMyLDExIEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBpbnRlcnByZXQgdGhlIHJlc3VsdCBhcyBhIGRvdWJsZSBtZWFzdXJlZCBpbiBzZWNvbmRzLgotICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBQWV9MT05HX0xPTkcgaW50ZXJuYWxseQorICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBsb25nIGxvbmcgaW50ZXJuYWxseQogICAgICAgICAgICB3ZSBjb252ZXJ0IGl0IHRvIGEgbGFyZ2UgaW50ZWdlciAqLwogICAgICAgICBkb3VibGUgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZShvKTsKICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgZGVsYXllZCB0byB0aGUgY29kZSBiZWxvdyAqLwotICAgICAgICByZXN1bHQgPSAoUFlfTE9OR19MT05HKSAodmFsICogRE9VQkxFX1RJTUVSX1BSRUNJU0lPTik7CisgICAgICAgIHJlc3VsdCA9IChsb25nIGxvbmcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKICAgICB9CiAgICAgUHlfREVDUkVGKG8pOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zNDIsOCArMzM4LDggQEAKIHN0YXRpYyB2b2lkCiBTdG9wKFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQcm9maWxlckNvbnRleHQgKnNlbGYsIFByb2ZpbGVyRW50cnkgKmVudHJ5KQogewotICAgIFBZX0xPTkdfTE9ORyB0dCA9IENBTExfVElNRVIocE9iaikgLSBzZWxmLT50MDsKLSAgICBQWV9MT05HX0xPTkcgaXQgPSB0dCAtIHNlbGYtPnN1YnQ7CisgICAgbG9uZyBsb25nIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOworICAgIGxvbmcgbG9uZyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKICAgICBpZiAoc2VsZi0+cHJldmlvdXMpCiAgICAgICAgIHNlbGYtPnByZXZpb3VzLT5zdWJ0ICs9IHR0OwogICAgIHBPYmotPmN1cnJlbnRQcm9maWxlckNvbnRleHQgPSBzZWxmLT5wcmV2aW91czsKQEAgLTc2Miw3ICs3NTgsNiBAQAogc3RhdGljIGludAogcHJvZmlsZXJfaW5pdChQcm9maWxlck9iamVjdCAqcE9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbzsKICAgICBQeU9iamVjdCAqdGltZXIgPSBOVUxMOwogICAgIGRvdWJsZSB0aW1ldW5pdCA9IDAuMDsKICAgICBpbnQgc3ViY2FsbHMgPSAxOwpAQCAtNzc3LDExICs3NzIsOSBAQAogCiAgICAgaWYgKHNldFN1YmNhbGxzKHBPYmosIHN1YmNhbGxzKSA8IDAgfHwgc2V0QnVpbHRpbnMocE9iaiwgYnVpbHRpbnMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIG8gPSBwT2JqLT5leHRlcm5hbFRpbWVyOwotICAgIHBPYmotPmV4dGVybmFsVGltZXIgPSB0aW1lcjsKLSAgICBQeV9YSU5DUkVGKHRpbWVyKTsKLSAgICBQeV9YREVDUkVGKG8pOwogICAgIHBPYmotPmV4dGVybmFsVGltZXJVbml0ID0gdGltZXVuaXQ7CisgICAgUHlfWElOQ1JFRih0aW1lcik7CisgICAgUHlfWFNFVFJFRihwT2JqLT5leHRlcm5hbFRpbWVyLCB0aW1lcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBlN2IxZWQ5Li5iYjc3NTUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0xOCwxMiArMTgsNiBAQAogCiAjaW5jbHVkZSA8bHptYS5oPgogCi0KLSNpZm5kZWYgUFlfTE9OR19MT05HCi0jZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIFBZX0xPTkdfTE9ORyB0byBiZSBkZWZpbmVkIgotI2VuZGlmCi0KLQogI2lmZGVmIFdJVEhfVEhSRUFECiAjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAogICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCkBAIC0xNjMsNyArMTU3LDcgQEAKICAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAogICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAotICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgbG9uZyBsb25nKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CiAgICAgICBzaXplLCBidXQgbGlrZSAiSSIgaXQgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAogICAgICAgbHptYV9tb2RlIGFuZCBsem1hX21hdGNoX2ZpbmRlciAtIHRoZXNlIGFyZSBlbnVtZXJhdGlvbiB0eXBlcywgYW5kCkBAIC0xNzYsMTIgKzE3MCwxMiBAQAogICAgIHN0YXRpYyBpbnQgXAogICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAogICAgIHsgXAotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7IFwKICAgICAgICAgXAogICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKICAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTM5OCw3ICszOTIsNyBAQAogICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCiAKIHN0YXRpYyBpbnQKLXNwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQogewogICAgIGludCBzdGF0dXM7CiAgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKQEAgLTU1NSw3ICs1NDksNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTU2OSw3ICs1NjIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD04YjYwY2IxM2UwY2U2NDIwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD02NDAxOWVhYzdmMmNjOGQwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTU4NSw4ICs1NzgsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuZmx1c2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKLQogRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgogCiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgpAQCAtNTk2LDcgKzU4Nyw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9mbHVzaF9pbXBsKENvbXByZXNzb3IgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD0zMDYwZmIyNmY5YjQwNDJjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD02YjM2OTMwM2Y2N2FkMGE4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTcwMCw3ICs2OTEsNiBAQAogLypbLWNsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCiAgICAgZm9ybWF0OiBpbnQoY19kZWZhdWx0PSJGT1JNQVRfWFoiKSA9IEZPUk1BVF9YWgogICAgICAgICBUaGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQuICBUaGlzIGNhbgogICAgICAgICBiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuCkBAIC0xMDcwLDcgKzEwNjAsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKQEAgLTEwOTMsNyArMTA4Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD1mMmJiOTAyY2MxY2FmMjAzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD02MGMxZjEzNTgyMGUzMDlkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTExMzMsNyArMTEyMiw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9BVVRPIikgPSBGT1JNQVRfQVVUTwogICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgb2YgdGhlIGlucHV0IHN0cmVhbS4gIElmIHRoaXMgaXMKICAgICAgICAgRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0CkBAIC0xMTU5LDcgKzExNDcsNyBAQAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9ODFmZTY4NGE2YzJmOGEyN10qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xNDU0LDcgKzE0NDIsNyBAQAogLyogU29tZSBvZiBvdXIgY29uc3RhbnRzIGFyZSBtb3JlIHRoYW4gMzIgYml0cyB3aWRlLCBzbyBQeU1vZHVsZV9BZGRJbnRDb25zdGFudAogICAgd291bGQgbm90IHdvcmsgY29ycmVjdGx5IG9uIHBsYXRmb3JtcyB3aXRoIDMyLWJpdCBsb25ncy4gKi8KIHN0YXRpYyBpbnQKLW1vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBQWV9MT05HX0xPTkcgdmFsdWUpCittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyBsb25nIHZhbHVlKQogewogICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAgICAgaWYgKG8gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwppbmRleCA0YWU2MzhlLi5kOTJhOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCiAgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCi0jaWZuZGVmIFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQKKyNpZiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKICAgICB7InNlbV91bmxpbmsiLCBfUHlNcF9zZW1fdW5saW5rLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgogICAgIHtOVUxMfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IDlhZWVhOGQuLjUxMmJjMTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTYwLDcgKzYwLDcgQEAKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJrIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJLIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORwogI2Vsc2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX29wZXJhdG9yLmMgYi9Nb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IGRmZmYxZDIuLmZiOGVhZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwpAQCAtMTExMSw2ICsxMTExLDggQEAKICAgICAgICAgUHlPYmplY3QgKmZ1bmN0b29sczsKICAgICAgICAgUHlPYmplY3QgKnBhcnRpYWw7CiAgICAgICAgIFB5T2JqZWN0ICpjb25zdHJ1Y3RvcjsKKyAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3NbMl07CisKICAgICAgICAgX1B5X0lERU5USUZJRVIocGFydGlhbCk7CiAgICAgICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CiAgICAgICAgIGlmICghZnVuY3Rvb2xzKQpAQCAtMTExOSwxNyArMTEyMSwxMSBAQAogICAgICAgICBQeV9ERUNSRUYoZnVuY3Rvb2xzKTsKICAgICAgICAgaWYgKCFwYXJ0aWFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKilQeV9UWVBFKG1jKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgbWMtPm5hbWUpOwotICAgICAgICBjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0NhbGwocGFydGlhbCwgbmV3YXJncywgbWMtPmt3ZHMpOwotICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICAgICAgbmV3YXJnc1swXSA9IChQeU9iamVjdCAqKVB5X1RZUEUobWMpOworICAgICAgICBuZXdhcmdzWzFdID0gbWMtPm5hbWU7CisgICAgICAgIGNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwYXJ0aWFsLCBuZXdhcmdzLCAyLCBtYy0+a3dkcyk7CisKICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBjb25zdHJ1Y3RvciwgbWMtPmFyZ3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggMGY2MmIxYy4uOTIwYjQ2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTE1Myw2ICsxNTMsOSBAQAogICAgIFB5T2JqZWN0ICpjb2RlY3NfZW5jb2RlOwogICAgIC8qIGJ1aWx0aW5zLmdldGF0dHIsIHVzZWQgZm9yIHNhdmluZyBuZXN0ZWQgbmFtZXMgd2l0aCBwcm90b2NvbCA8IDQgKi8KICAgICBQeU9iamVjdCAqZ2V0YXR0cjsKKyAgICAvKiBmdW5jdG9vbHMucGFydGlhbCwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIF9fbmV3b2JqX2V4X18gd2l0aCBwcm90b2NvbHMKKyAgICAgICAyIGFuZCAzICovCisgICAgUHlPYmplY3QgKnBhcnRpYWw7CiB9IFBpY2tsZVN0YXRlOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBfcGlja2xlIG1vZHVsZSBkZWZpbml0aW9uLiAqLwpAQCAtMTkwLDYgKzE5Myw3IEBACiAgICAgUHlfQ0xFQVIoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X0NMRUFSKHN0LT5jb2RlY3NfZW5jb2RlKTsKICAgICBQeV9DTEVBUihzdC0+Z2V0YXR0cik7CisgICAgUHlfQ0xFQVIoc3QtPnBhcnRpYWwpOwogfQogCiAvKiBJbml0aWFsaXplIHRoZSBnaXZlbiBwaWNrbGUgbW9kdWxlIHN0YXRlLiAqLwpAQCAtMjAwLDYgKzIwNCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuY3Rvb2xzID0gTlVMTDsKIAogICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CiAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCkBAIC0zMTQsMTIgKzMxOSwyMSBAQAogICAgIH0KICAgICBQeV9DTEVBUihjb2RlY3MpOwogCisgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICBpZiAoIWZ1bmN0b29scykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzdC0+cGFydGlhbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuY3Rvb2xzLCAicGFydGlhbCIpOworICAgIGlmICghc3QtPnBhcnRpYWwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKKwogICAgIHJldHVybiAwOwogCiAgIGVycm9yOgogICAgIFB5X0NMRUFSKGNvcHlyZWcpOwogICAgIFB5X0NMRUFSKGNvbXBhdF9waWNrbGUpOwogICAgIFB5X0NMRUFSKGNvZGVjcyk7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKICAgICBfUGlja2xlX0NsZWFyU3RhdGUoc3QpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTMzMSw0MyArMzQ1LDIwIEBACiBfUGlja2xlX0Zhc3RDYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmFyZ190dXBsZSA9IFB5VHVwbGVfTmV3KDEpOwogCi0gICAgLyogTm90ZTogdGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJldXNlIHRoZSBhcmd1bWVudCB0dXBsZS4gVGhpcyB1c2VkIHRvIGdpdmUKLSAgICAgICBhIHNsaWdodCBwZXJmb3JtYW5jZSBib29zdCB3aXRoIG9sZGVyIHBpY2tsZSBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbWFueQotICAgICAgIHVuYnVmZmVyZWQgcmVhZHMgb2NjdXJyZWQgKHRodXMgbmVlZGluZyBtYW55IGZ1bmN0aW9uIGNhbGxzKS4KLQotICAgICAgIEhvd2V2ZXIsIHRoaXMgb3B0aW1pemF0aW9uIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgd2FzIHRvbyBjb21wbGljYXRlZAotICAgICAgIHRvIGdldCByaWdodC4gSXQgYWJ1c2VkIHRoZSBDIEFQSSBmb3IgdHVwbGVzIHRvIG11dGF0ZSB0aGVtIHdoaWNoIGxlZAotICAgICAgIHRvIHN1YnRsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIEZ1cnRoZXJtb3JlLCB0aGUKLSAgICAgICBpbnRyb2R1Y3Rpb24gb2YgcHJvdG9jb2wgNCBhbmQgdGhlIHByZWZldGNoaW5nIG9wdGltaXphdGlvbiB2aWEgcGVlaygpCi0gICAgICAgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgd2UgZG8uIFRodXMsIHRoZQotICAgICAgIGJlbmVmaXRzIGJlY2FtZSBtYXJnaW5hbCBhdCBiZXN0LiAqLwotCi0gICAgaWYgKGFyZ190dXBsZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdfdHVwbGUsIDAsIG9iaik7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdfdHVwbGUsIE5VTEwpOwotICAgIFB5X0NMRUFSKGFyZ190dXBsZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG9iaik7CisgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBpbnQKLXN0YWNrX3VuZGVyZmxvdyh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKiBJbnRlcm5hbCBkYXRhIHR5cGUgdXNlZCBhcyB0aGUgdW5waWNrbGluZyBzdGFjay4gKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAogICAgIFB5T2JqZWN0ICoqZGF0YTsKKyAgICBpbnQgbWFya19zZXQ7ICAgICAgICAgIC8qIGlzIE1BUksgc2V0PyAqLworICAgIFB5X3NzaXplX3QgZmVuY2U7ICAgICAgLyogcG9zaXRpb24gb2YgdG9wIE1BUksgb3IgMCAqLwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogbnVtYmVyIG9mIHNsb3RzIGluIGRhdGEgYWxsb2NhdGVkICovCiB9IFBkYXRhOwogCkBAIC0zOTgsNiArMzg5LDggQEAKICAgICBpZiAoIShzZWxmID0gUHlPYmplY3RfTmV3KFBkYXRhLCAmUGRhdGFfVHlwZSkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9TSVpFKHNlbGYpID0gMDsKKyAgICBzZWxmLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+ZmVuY2UgPSAwOwogICAgIHNlbGYtPmFsbG9jYXRlZCA9IDg7CiAgICAgc2VsZi0+ZGF0YSA9IFB5TWVtX01BTExPQyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOwogICAgIGlmIChzZWxmLT5kYXRhKQpAQCAtNDE1LDggKzQwOCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpID0gUHlfU0laRShzZWxmKTsKIAotICAgIGlmIChjbGVhcnRvIDwgMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGFzc2VydChjbGVhcnRvID49IHNlbGYtPmZlbmNlKTsKICAgICBpZiAoY2xlYXJ0byA+PSBpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDUyLDYgKzQ0NCwxNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIGludAorUGRhdGFfc3RhY2tfdW5kZXJmbG93KFBkYXRhICpzZWxmKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+bWFya19zZXQgPworICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBNQVJLIGZvdW5kIiA6CisgICAgICAgICAgICAgICAgICAgICJ1bnBpY2tsaW5nIHN0YWNrIHVuZGVyZmxvdyIpOworICAgIHJldHVybiAtMTsKK30KKwogLyogRCBpcyBhIFBkYXRhKi4gIFBvcCB0aGUgdG9wbW9zdCBlbGVtZW50IGFuZCBzdG9yZSBpdCBpbnRvIFYsIHdoaWNoCiAgKiBtdXN0IGJlIGFuIGx2YWx1ZSBob2xkaW5nIFB5T2JqZWN0Ki4gIE9uIHN0YWNrIHVuZGVyZmxvdywgVW5waWNrbGluZ0Vycm9yCiAgKiBpcyByYWlzZWQgYW5kIFYgaXMgc2V0IHRvIE5VTEwuCkBAIC00NTksOSArNDYyLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQZGF0YV9wb3AoUGRhdGEgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiYmFkIHBpY2tsZSBkYXRhIik7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPD0gc2VsZi0+ZmVuY2UpIHsKKyAgICAgICAgUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHNlbGYtPmRhdGFbLS1QeV9TSVpFKHNlbGYpXTsKQEAgLTQ5Myw2ICs0OTUsMTAgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CiAKKyAgICBpZiAoc3RhcnQgPCBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBsZW4gPSBQeV9TSVpFKHNlbGYpIC0gc3RhcnQ7CiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQpAQCAtODYwLDcgKzg2Niw3IEBACiB7CiAgICAgc2l6ZV90IGk7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzaXplX3QpIDw9IDgpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzaXplX3QpOyBpKyspIHsKICAgICAgICAgb3V0W2ldID0gKHVuc2lnbmVkIGNoYXIpKCh2YWx1ZSA+PiAoOCAqIGkpKSAmIDB4ZmYpOwpAQCAtMTA4Niw2ICsxMDkyLDE0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2JhZF9yZWFkbGluZSh2b2lkKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwpAQCAtMTEzNCw5ICsxMTQ4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKG4gPT0gUkVBRF9XSE9MRV9MSU5FKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBkYXRhID0gUHlPYmplY3RfQ2FsbChzZWxmLT5yZWFkbGluZSwgZW1wdHlfdHVwbGUsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZW1wdHlfdHVwbGUpOworICAgICAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5yZWFkbGluZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbGVuOwpAQCAtMTE3NCw2ICsxMTg2LDM2IEBACiAgICAgcmV0dXJuIHJlYWRfc2l6ZTsKIH0KIAorLyogRG9uJ3QgY2FsbCBpdCBkaXJlY3RseTogdXNlIF9VbnBpY2tsZXJfUmVhZCgpICovCitzdGF0aWMgUHlfc3NpemVfdAorX1VucGlja2xlcl9SZWFkSW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBudW1fcmVhZDsKKworICAgICpzID0gTlVMTDsKKyAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhc2UgaXMgaGFuZGxlZCBieSB0aGUgX1VucGlja2xlcl9SZWFkKCkgbWFjcm8gZm9yIGVmZmljaWVuY3kgKi8KKyAgICBhc3NlcnQoc2VsZi0+bmV4dF9yZWFkX2lkeCArIG4gPiBzZWxmLT5pbnB1dF9sZW4pOworCisgICAgaWYgKCFzZWxmLT5yZWFkKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIG4pOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPCBuKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47CisgICAgcmV0dXJuIG47Cit9CisKIC8qIFJlYWQgYG5gIGJ5dGVzIGZyb20gdGhlIHVucGlja2xlcidzIGRhdGEgc291cmNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gYCpzYC4KIAogICAgVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIGRhdGEgcmVhZHMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgdW5waWNrbGVyJ3MKQEAgLTExODcsMzggKzEyMjksMTIgQEAKIAogICAgUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlCiAgICBudW1iZXIgb2YgY2hhcnMgcmVhZC4gKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fVW5waWNrbGVyX1JlYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICoqcywgUHlfc3NpemVfdCBuKQotewotICAgIFB5X3NzaXplX3QgbnVtX3JlYWQ7Ci0KLSAgICAqcyA9IE5VTEw7Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKLSAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIHdvdWxkIG92ZXJmbG93IChpbnZhbGlkIGJ5dGVjb2RlKSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA8PSBzZWxmLT5pbnB1dF9sZW4pIHsKLSAgICAgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ICs9IG47Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICBpZiAoIXNlbGYtPnJlYWQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7Ci0gICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChudW1fcmVhZCA8IG4pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyOwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBuOwotICAgIHJldHVybiBuOwotfQorI2RlZmluZSBfVW5waWNrbGVyX1JlYWQoc2VsZiwgcywgbikgXAorICAgICgoKG4pIDw9IChzZWxmKS0+aW5wdXRfbGVuIC0gKHNlbGYpLT5uZXh0X3JlYWRfaWR4KSAgICAgIFwKKyAgICAgPyAoKihzKSA9IChzZWxmKS0+aW5wdXRfYnVmZmVyICsgKHNlbGYpLT5uZXh0X3JlYWRfaWR4LCBcCisgICAgICAgIChzZWxmKS0+bmV4dF9yZWFkX2lkeCArPSAobiksICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAobikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfVW5waWNrbGVyX1JlYWRJbXBsKHNlbGYsIChzKSwgKG4pKSkKIAogc3RhdGljIFB5X3NzaXplX3QKIF9VbnBpY2tsZXJfQ29weUxpbmUoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpsaW5lLCBQeV9zc2l6ZV90IGxlbiwKQEAgLTEyMzgsNyArMTI1NCw3IEBACiB9CiAKIC8qIFJlYWQgYSBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmVhbS9idWZmZXIuIElmIHdlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQKLSAgIGJlZm9yZSBoaXR0aW5nIFxuLCByZXR1cm4gdGhlIGRhdGEgd2UgZm91bmQuCisgICBiZWZvcmUgaGl0dGluZyBcbiwgcmFpc2UgYW4gZXJyb3IuCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFycyByZWFkLCBvciAtMSBvbiBmYWlsdXJlLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTEyNTQsMjAgKzEyNzAsMTYgQEAKICAgICAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIGxpbmVfc3RhcnQsIG51bV9yZWFkLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChzZWxmLT5yZWFkKSB7Ci0gICAgICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgUkVBRF9XSE9MRV9MSU5FKTsKLSAgICAgICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOwotICAgICAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBzZWxmLT5pbnB1dF9idWZmZXIsIG51bV9yZWFkLCByZXN1bHQpOwotICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAotICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSd2ZSBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gUmV0dXJuIHRoZQotICAgICAgIHJlbWFpbmluZyBzdHJpbmcgYW5kIGxldCB0aGUgY2FsbGVyIGZpZ3VyZSBpdCBvdXQuICovCi0gICAgKnJlc3VsdCA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgbnVtX3JlYWQgPSBpIC0gc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gaTsKLSAgICByZXR1cm4gbnVtX3JlYWQ7CisgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPT0gMCB8fCBzZWxmLT5pbnB1dF9idWZmZXJbbnVtX3JlYWQgLSAxXSAhPSAnXG4nKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOworICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiB9CiAKIC8qIFJldHVybnMgLTEgKHdpdGggYW4gZXhjZXB0aW9uIHNldCkgb24gZmFpbHVyZSwgMCBvbiBzdWNjZXNzLiBUaGUgbWVtbyBhcnJheQpAQCAtMTkzNCw3ICsxOTQ2LDcgQEAKICAgICAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgc3RyaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUocmVwciwgJnNpemUpOworICAgICAgICBzdHJpbmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShyZXByLCAmc2l6ZSk7CiAgICAgICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTIwOTEsMzggKzIxMDMsMzUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiByYXdfdW5pY29kZV9lc2NhcGUoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKLSAgICBzaXplX3QgZXhwYW5kc2l6ZTsKICAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCiAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG9iaik7CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG9iaik7Ci0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCi0gICAgICAgIGV4cGFuZHNpemUgPSAxMDsKLSAgICBlbHNlCi0gICAgICAgIGV4cGFuZHNpemUgPSA2OwogCi0gICAgaWYgKChzaXplX3Qpc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIHJlcHI7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChyZXByKSA9PSAxKTsKKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKICAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIC8qIC0xOiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgICAgICAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBwLCAxMC0xKTsKKyAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ1UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKQEAgLTIxMzQsOCArMjE0MywxMyBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KKyAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzLCAnXFwnIGFuZCAnXG4nIHRvICdcdXh4eHgnICovCiAgICAgICAgIGVsc2UgaWYgKGNoID49IDI1NiB8fCBjaCA9PSAnXFwnIHx8IGNoID09ICdcbicpIHsKKyAgICAgICAgICAgIC8qIC0xOiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgICAgICAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBwLCA2LTEpOworICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwpAQCAtMjE0NywxNCArMjE2MSwxNiBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KLSAgICBzaXplID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHNpemUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlcHI7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHApOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50Ci13cml0ZV91dGY4KFBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKmRhdGEsIFB5X3NzaXplX3Qgc2l6ZSkKK3dyaXRlX3V0ZjgoUGlja2xlck9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZGF0YSwgUHlfc3NpemVfdCBzaXplKQogewogICAgIGNoYXIgaGVhZGVyWzldOwogICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtMjg1Myw3ICsyODY5LDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKIAotICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfaXRlbXMsICIoKSIpOworICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTM1MzAsMTEgKzM1NDYsOSBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKLSAgICAgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7Ci0gICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7Ci0gICAgICAgICAgICAgICAgdXNlX25ld29ial9leCA9IF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJSWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCAmUHlJZF9fX25ld29ial9leF9fKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgdXNlX25ld29ial9leCA9IF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJSWQoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsICZQeUlkX19fbmV3b2JqX2V4X18pOwogICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJSWQobmFtZSwgJlB5SWRfX19uZXdvYmpfXyk7CkBAIC0zNTc3LDExICszNTkxLDU4IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2F2ZShzZWxmLCBjbHMsIDApIDwgMCB8fAotICAgICAgICAgICAgc2F2ZShzZWxmLCBhcmdzLCAwKSA8IDAgfHwKLSAgICAgICAgICAgIHNhdmUoc2VsZiwga3dhcmdzLCAwKSA8IDAgfHwKLSAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZuZXdvYmpfZXhfb3AsIDEpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgeworICAgICAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2xzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIGFyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwga3dhcmdzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBfUGlja2xlcl9Xcml0ZShzZWxmLCAmbmV3b2JqX2V4X29wLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjbHNfbmV3OworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhQeV9TSVpFKGFyZ3MpICsgMik7CisgICAgICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAgICAgY2xzX25ldyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25ld19fKTsKKyAgICAgICAgICAgIGlmIChjbHNfbmV3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCBjbHNfbmV3KTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihjbHMpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAxLCBjbHMpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoYXJncyk7IGkrKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpICsgMiwgaXRlbSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxhYmxlID0gUHlPYmplY3RfQ2FsbChzdC0+cGFydGlhbCwgbmV3YXJncywga3dhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2F2ZShzZWxmLCBjYWxsYWJsZSwgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBuZXdhcmdzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBfUGlja2xlcl9Xcml0ZShzZWxmLCAmcmVkdWNlX29wLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKHVzZV9uZXdvYmopIHsKQEAgLTM4NzEsMTAgKzM5MzIsNyBAQAogICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGEgX19yZWR1Y2VfXyBtZXRob2QuICovCiAgICAgICAgICAgICByZWR1Y2VfZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX3JlZHVjZV9fKTsKICAgICAgICAgICAgIGlmIChyZWR1Y2VfZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmVtcHR5X3R1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gUHlPYmplY3RfQ2FsbChyZWR1Y2VfZnVuYywgZW1wdHlfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW1wdHlfdHVwbGUpOworICAgICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcocmVkdWNlX2Z1bmMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5QaWNrbGluZ0Vycm9yLApAQCAtNDM5MSw3ICs0NDQ5LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJ21lbW8nIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIFBpY2tsZXJNZW1vUHJveHkgb2JqZWN0IgorICAgICAgICAgICAgICAgICAgICAgIidtZW1vJyBhdHRyaWJ1dGUgbXVzdCBiZSBhIFBpY2tsZXJNZW1vUHJveHkgb2JqZWN0IgogICAgICAgICAgICAgICAgICAgICAgIm9yIGRpY3QsIG5vdCAlLjIwMHMiLCBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtNDQyMCw4ICs0NDc4LDYgQEAKIHN0YXRpYyBpbnQKIFBpY2tsZXJfc2V0X3BlcnNpZChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIGRlbGV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTQ0MzMsMTAgKzQ0ODksOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgdG1wID0gc2VsZi0+cGVyc19mdW5jOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgc2VsZi0+cGVyc19mdW5jID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOyAgICAgIC8qIHNlbGYtPnBlcnNfZnVuYyBjYW4gYmUgTlVMTCwgc28gYmUgY2FyZWZ1bC4gKi8KKyAgICBQeV9YU0VUUkVGKHNlbGYtPnBlcnNfZnVuYywgdmFsdWUpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NTE4LDEzICs0NTcyLDE5IEBACiBzdGF0aWMgUHlfc3NpemVfdAogbWFya2VyKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKLSAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgUHlfc3NpemVfdCBtYXJrOworCiAgICAgaWYgKHNlbGYtPm51bV9tYXJrcyA8IDEpIHsKKyAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgImNvdWxkIG5vdCBmaW5kIE1BUksiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHJldHVybiBzZWxmLT5tYXJrc1stLXNlbGYtPm51bV9tYXJrc107CisgICAgbWFyayA9IHNlbGYtPm1hcmtzWy0tc2VsZi0+bnVtX21hcmtzXTsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSBzZWxmLT5udW1fbWFya3MgIT0gMDsKKyAgICBzZWxmLT5zdGFjay0+ZmVuY2UgPSBzZWxmLT5udW1fbWFya3MgPworICAgICAgICAgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzIC0gMV0gOiAwOworICAgIHJldHVybiBtYXJrOwogfQogCiBzdGF0aWMgaW50CkBAIC00NTM1LDE0ICs0NTk1LDYgQEAKIH0KIAogc3RhdGljIGludAotYmFkX3JlYWRsaW5lKHZvaWQpCi17Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAicGlja2xlIGRhdGEgd2FzIHRydW5jYXRlZCIpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIGludAogbG9hZF9pbnQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKQEAgLTQ5ODUsNyArNTAzNyw3IEBACiAgICAgUHlPYmplY3QgKnR1cGxlOwogCiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDwgbGVuKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogCiAgICAgdHVwbGUgPSBQZGF0YV9wb3B0dXBsZShzZWxmLT5zdGFjaywgUHlfU0laRShzZWxmLT5zdGFjaykgLSBsZW4pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQpAQCAtNTA2Nyw2ICs1MTE5LDEzIEBACiAgICAgaWYgKChkaWN0ID0gUHlEaWN0X05ldygpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKKyAgICBpZiAoKGogLSBpKSAlIDIgIT0gMCkgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAib2RkIG51bWJlciBvZiBpdGVtcyBmb3IgRElDVCIpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKICAgICBmb3IgKGsgPSBpICsgMTsgayA8IGo7IGsgKz0gMikgewogICAgICAgICBrZXkgPSBzZWxmLT5zdGFjay0+ZGF0YVtrIC0gMV07CiAgICAgICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFba107CkBAIC01MTM0LDcgKzUxOTMsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSBpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIGFyZ3MgPSBQZGF0YV9wb3B0dXBsZShzZWxmLT5zdGFjaywgaSArIDEpOwogICAgIGlmIChhcmdzID09IE5VTEwpCkBAIC01NDU3LDEyICs1NTE2LDE1IEBACiAgICAgICovCiAgICAgaWYgKHNlbGYtPm51bV9tYXJrcyA+IDAgJiYgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzIC0gMV0gPT0gbGVuKSB7CiAgICAgICAgIHNlbGYtPm51bV9tYXJrcy0tOwotICAgIH0gZWxzZSBpZiAobGVuID4gMCkgeworICAgICAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSBzZWxmLT5udW1fbWFya3MgIT0gMDsKKyAgICAgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gc2VsZi0+bnVtX21hcmtzID8KKyAgICAgICAgICAgICAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA6IDA7CisgICAgfSBlbHNlIGlmIChsZW4gPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKKyAgICBlbHNlIHsKICAgICAgICAgbGVuLS07CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5zdGFjay0+ZGF0YVtsZW5dKTsKICAgICAgICAgUHlfU0laRShzZWxmLT5zdGFjaykgPSBsZW47Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTU0ODQsMTAgKzU1NDYsMTAgQEAKIGxvYWRfZHVwKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqbGFzdDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwogCi0gICAgaWYgKChsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKSkgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChsZW4gPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBsYXN0ID0gc2VsZi0+c3RhY2stPmRhdGFbbGVuIC0gMV07CiAgICAgUERBVEFfQVBQRU5EKHNlbGYtPnN0YWNrLCBsYXN0LCAtMSk7CiAgICAgcmV0dXJuIDA7CkBAIC01NjcwLDggKzU3MzIsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKGxlbiA8IDIpCiAgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIGtleSA9IFB5TG9uZ19Gcm9tU3RyaW5nKHMsIE5VTEwsIDEwKTsKQEAgLTU2OTksOCArNTc2MSw4IEBACiAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIGlkeCA9IFB5X0NIQVJNQVNLKHNbMF0pOwpAQCAtNTcxOCw4ICs1NzgwLDggQEAKICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCA0KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgaWR4ID0gY2FsY19iaW5zaXplKHMsIDQpOwpAQCAtNTczNyw4ICs1Nzk5LDggQEAKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIHJldHVybiBfVW5waWNrbGVyX01lbW9QdXQoc2VsZiwgc2VsZi0+bWVtb19sZW4sIHZhbHVlKTsKQEAgLTU3NTIsOCArNTgxNCw4IEBACiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CiAKICAgICBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKLSAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKIApAQCAtNTgwMiw4ICs1ODY0LDggQEAKIHN0YXRpYyBpbnQKIGxvYWRfYXBwZW5kKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSAxIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSAxIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgcmV0dXJuIGRvX2FwcGVuZChzZWxmLCBQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEpOwogfQogCkBAIC01ODI1LDggKzU4ODcsOCBAQAogICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKHggPiBsZW4gfHwgeCA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKHggPiBsZW4gfHwgeCA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0geCkgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKChsZW4gLSB4KSAlIDIgIT0gMCkgewpAQCAtNTg3OSw4ICs1OTQxLDggQEAKICAgICBpZiAobWFyayA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKLSAgICBpZiAobWFyayA+IGxlbiB8fCBtYXJrIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAobWFyayA+IGxlbiB8fCBtYXJrIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgaWYgKGxlbiA9PSBtYXJrKSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKIApAQCAtNTkzNSw4ICs1OTk3LDggQEAKICAgICAvKiBTdGFjayBpcyAuLi4gaW5zdGFuY2UsIHN0YXRlLiAgV2Ugd2FudCB0byBsZWF2ZSBpbnN0YW5jZSBhdAogICAgICAqIHRoZSBzdGFjayB0b3AsIHBvc3NpYmx5IG11dGF0ZWQgdmlhIGluc3RhbmNlLl9fc2V0c3RhdGVfXyhzdGF0ZSkuCiAgICAgICovCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDwgMikKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDIgPCBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogCiAgICAgUERBVEFfUE9QKHNlbGYtPnN0YWNrLCBzdGF0ZSk7CiAgICAgaWYgKHN0YXRlID09IE5VTEwpCkBAIC02MDcyLDcgKzYxMzQsOCBAQAogICAgICAgICBzZWxmLT5tYXJrc19zaXplID0gKFB5X3NzaXplX3QpYWxsb2M7CiAgICAgfQogCi0gICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzKytdID0gUHlfU0laRShzZWxmLT5zdGFjayk7CisgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gMTsKKyAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MrK10gPSBzZWxmLT5zdGFjay0+ZmVuY2UgPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNjE1NSw2ICs2MjE4LDggQEAKICAgICBjaGFyICpzID0gTlVMTDsKIAogICAgIHNlbGYtPm51bV9tYXJrcyA9IDA7CisgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gMDsKKyAgICBzZWxmLT5zdGFjay0+ZmVuY2UgPSAwOwogICAgIHNlbGYtPnByb3RvID0gMDsKICAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykpCiAgICAgICAgIFBkYXRhX2NsZWFyKHNlbGYtPnN0YWNrLCAwKTsKQEAgLTYxNjcsOCArNjIzMiwxMyBAQAogICAgIGNhc2Ugb3Bjb2RlOiBpZiAobG9hZF9mdW5jKHNlbGYsIChhcmcpKSA8IDApIGJyZWFrOyBjb250aW51ZTsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApIHsKKyAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKHN0LT5VbnBpY2tsaW5nRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKChlbnVtIG9wY29kZSlzWzBdKSB7CiAgICAgICAgIE9QKE5PTkUsIGxvYWRfbm9uZSkKQEAgLTYyNDAsMTUgKzYzMTAsMTkgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoc1swXSA9PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19FT0ZFcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvYWQga2V5LCAnJWMnLiIsIHNbMF0pOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSAqczsKKyAgICAgICAgICAgICAgICBpZiAoMHgyMCA8PSBjICYmIGMgPD0gMHg3ZSAmJiBjICE9ICdcJycgJiYgYyAhPSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICclYycuIiwgYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvYWQga2V5LCAnXFx4JTAyeCcuIiwgYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAvKiBhbmQgd2UgYXJlIGRvbmUhICovCkBAIC02ODU5LDggKzY5MzMsNiBAQAogc3RhdGljIGludAogVW5waWNrbGVyX3NldF9wZXJzbG9hZChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgZGVsZXRpb24gaXMgbm90IHN1cHBvcnRlZCIpOwpAQCAtNjg3MywxMCArNjk0NSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0bXAgPSBzZWxmLT5wZXJzX2Z1bmM7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzZWxmLT5wZXJzX2Z1bmMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7ICAgICAgLyogc2VsZi0+cGVyc19mdW5jIGNhbiBiZSBOVUxMLCBzbyBiZSBjYXJlZnVsLiAqLworICAgIFB5X1hTRVRSRUYoc2VsZi0+cGVyc19mdW5jLCB2YWx1ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggYzAyNDBlMi4uNTAwN2EzOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTIxLDggKzIxLDcgQEAKICNpbmNsdWRlIDxkaXJlbnQuaD4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX0FORFJPSURfXykgJiYgIWRlZmluZWQoU1lTX2dldGRlbnRzNjQpCi0vKiBBbmRyb2lkIGRvZXNuJ3QgZXhwb3NlIHN5c2NhbGxzLCBhZGQgdGhlIGRlZmluaXRpb24gbWFudWFsbHkuICovCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykgJiYgX19BTkRST0lEX0FQSV9fIDwgMjEgJiYgIWRlZmluZWQoU1lTX2dldGRlbnRzNjQpCiAjIGluY2x1ZGUgPHN5cy9saW51eC1zeXNjYWxscy5oPgogIyBkZWZpbmUgU1lTX2dldGRlbnRzNjQgIF9fTlJfZ2V0ZGVudHM2NAogI2VuZGlmCkBAIC03Miw3ICs3MSw3IEBACiAKIC8qIENvbnZlcnQgQVNDSUkgdG8gYSBwb3NpdGl2ZSBpbnQsIG5vIGxpYmMgY2FsbC4gbm8gb3ZlcmZsb3cuIC0xIG9uIGVycm9yLiAqLwogc3RhdGljIGludAotX3Bvc19pbnRfZnJvbV9hc2NpaShjaGFyICpuYW1lKQorX3Bvc19pbnRfZnJvbV9hc2NpaShjb25zdCBjaGFyICpuYW1lKQogewogICAgIGludCBudW0gPSAwOwogICAgIHdoaWxlICgqbmFtZSA+PSAnMCcgJiYgKm5hbWUgPD0gJzknKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IDk1YWQ0YTQuLjBkMzI4MmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC02OCw5ICs2OCw4IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDx0aW1lLmg+ICAgICAgICAgICAgICAgLyogZm9yIHNlZWRpbmcgdG8gY3VycmVudCB0aW1lICovCi0KLSNpZm5kZWYgUFlfVUlOVDMyX1QKLSMgIGVycm9yICJGYWlsZWQgdG8gZmluZCBhbiBleGFjdC13aWR0aCAzMi1iaXQgaW50ZWdlciB0eXBlIgorI2lmZGVmIEhBVkVfUFJPQ0VTU19ICisjICBpbmNsdWRlIDxwcm9jZXNzLmg+ICAgICAgICAgIC8qIG5lZWRlZCBmb3IgZ2V0cGlkKCkgKi8KICNlbmRpZgogCiAvKiBQZXJpb2QgcGFyYW1ldGVycyAtLSBUaGVzZSBhcmUgYWxsIG1hZ2ljLiAgRG9uJ3QgY2hhbmdlLiAqLwpAQCAtODMsNyArODIsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBpbnQgaW5kZXg7Ci0gICAgUFlfVUlOVDMyX1Qgc3RhdGVbTl07CisgICAgdWludDMyX3Qgc3RhdGVbTl07CiB9IFJhbmRvbU9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBSYW5kb21fVHlwZTsKQEAgLTk1LDEzICs5NCwxMyBAQAogCiAKIC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50ZXJ2YWwgKi8KLXN0YXRpYyBQWV9VSU5UMzJfVAorc3RhdGljIHVpbnQzMl90CiBnZW5yYW5kX2ludDMyKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICBQWV9VSU5UMzJfVCB5OwotICAgIHN0YXRpYyBQWV9VSU5UMzJfVCBtYWcwMVsyXT17MHgwVSwgTUFUUklYX0F9OworICAgIHVpbnQzMl90IHk7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hZzAxWzJdID0gezB4MFUsIE1BVFJJWF9BfTsKICAgICAvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCi0gICAgUFlfVUlOVDMyX1QgKm10OworICAgIHVpbnQzMl90ICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7CiAgICAgaWYgKHNlbGYtPmluZGV4ID49IE4pIHsgLyogZ2VuZXJhdGUgTiB3b3JkcyBhdCBvbmUgdGltZSAqLwpAQCAtMTM2LDIxICsxMzUsMjEgQEAKICAqIG9wdGltaXplIHRoZSBkaXZpc2lvbiBhd2F5IGF0IGNvbXBpbGUtdGltZS4gIDY3MTA4ODY0IGlzIDIqKjI2LiAgSW4KICAqIGVmZmVjdCwgYSBjb250YWlucyAyNyByYW5kb20gYml0cyBzaGlmdGVkIGxlZnQgMjYsIGFuZCBiIGZpbGxzIGluIHRoZQogICogbG93ZXIgMjYgYml0cyBvZiB0aGUgNTMtYml0IG51bWVyYXRvci4KLSAqIFRoZSBvcmdpbmFsIGNvZGUgY3JlZGl0ZWQgSXNha3UgV2FkYSBmb3IgdGhpcyBhbGdvcml0aG0sIDIwMDIvMDEvMDkuCisgKiBUaGUgb3JpZ2luYWwgY29kZSBjcmVkaXRlZCBJc2FrdSBXYWRhIGZvciB0aGlzIGFsZ29yaXRobSwgMjAwMi8wMS8wOS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9yYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIFBZX1VJTlQzMl9UIGE9Z2VucmFuZF9pbnQzMihzZWxmKT4+NSwgYj1nZW5yYW5kX2ludDMyKHNlbGYpPj42OworICAgIHVpbnQzMl90IGE9Z2VucmFuZF9pbnQzMihzZWxmKT4+NSwgYj1nZW5yYW5kX2ludDMyKHNlbGYpPj42OwogICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGEqNjcxMDg4NjQuMCtiKSooMS4wLzkwMDcxOTkyNTQ3NDA5OTIuMCkpOwogfQogCiAvKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEgc2VlZCAqLwogc3RhdGljIHZvaWQKLWluaXRfZ2VucmFuZChSYW5kb21PYmplY3QgKnNlbGYsIFBZX1VJTlQzMl9UIHMpCitpbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCB1aW50MzJfdCBzKQogewogICAgIGludCBtdGk7Ci0gICAgUFlfVUlOVDMyX1QgKm10OworICAgIHVpbnQzMl90ICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7CiAgICAgbXRbMF09IHM7CkBAIC0xNjksMTEgKzE2OCwxMSBAQAogLyogaW5pdGlhbGl6ZSBieSBhbiBhcnJheSB3aXRoIGFycmF5LWxlbmd0aCAqLwogLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqLwogLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCi1zdGF0aWMgUHlPYmplY3QgKgotaW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIFBZX1VJTlQzMl9UIGluaXRfa2V5W10sIHNpemVfdCBrZXlfbGVuZ3RoKQorc3RhdGljIHZvaWQKK2luaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCB1aW50MzJfdCBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKIHsKICAgICBzaXplX3QgaSwgaiwgazsgICAgICAgLyogd2FzIHNpZ25lZCBpbiB0aGUgb3JpZ2luYWwgY29kZS4gUkRIIDEyLzE2LzIwMDIgKi8KLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpbml0X2dlbnJhbmQoc2VsZiwgMTk2NTAyMThVKTsKQEAgLTE4MSwyMSArMTgwLDE5IEBACiAgICAgayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CiAgICAgZm9yICg7IGs7IGstLSkgewogICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1VSkpCi0gICAgICAgICAgICAgICAgICsgaW5pdF9rZXlbal0gKyAoUFlfVUlOVDMyX1QpajsgLyogbm9uIGxpbmVhciAqLworICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKHVpbnQzMl90KWo7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOyBqKys7CiAgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9CiAgICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7CiAgICAgfQogICAgIGZvciAoaz1OLTE7IGs7IGstLSkgewogICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVSkpCi0gICAgICAgICAgICAgICAgIC0gKFBZX1VJTlQzMl9UKWk7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgICAgICAgICAgLSAodWludDMyX3QpaTsgLyogbm9uIGxpbmVhciAqLwogICAgICAgICBpKys7CiAgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9CiAgICAgfQogCiAgICAgbXRbMF0gPSAweDgwMDAwMDAwVTsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKIC8qCkBAIC0yMDMsMTIgKzIwMCw0MyBAQAogICogVHdpc3RlciBkb3dubG9hZC4KICAqLwogCitzdGF0aWMgaW50CityYW5kb21fc2VlZF91cmFuZG9tKFJhbmRvbU9iamVjdCAqc2VsZikKK3sKKyAgICBQWV9VSU5UMzJfVCBrZXlbTl07CisKKyAgICBpZiAoX1B5T1NfVVJhbmRvbU5vbmJsb2NrKGtleSwgc2l6ZW9mKGtleSkpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBQeV9BUlJBWV9MRU5HVEgoa2V5KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCityYW5kb21fc2VlZF90aW1lX3BpZChSYW5kb21PYmplY3QgKnNlbGYpCit7CisgICAgX1B5VGltZV90IG5vdzsKKyAgICB1aW50MzJfdCBrZXlbNV07CisKKyAgICBub3cgPSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrKCk7CisgICAga2V5WzBdID0gKFBZX1VJTlQzMl9UKShub3cgJiAweGZmZmZmZmZmVSk7CisgICAga2V5WzFdID0gKFBZX1VJTlQzMl9UKShub3cgPj4gMzIpOworCisgICAga2V5WzJdID0gKFBZX1VJTlQzMl9UKWdldHBpZCgpOworCisgICAgbm93ID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgIGtleVszXSA9IChQWV9VSU5UMzJfVCkobm93ICYgMHhmZmZmZmZmZlUpOworICAgIGtleVs0XSA9IChQWV9VSU5UMzJfVCkobm93ID4+IDMyKTsKKworICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBQeV9BUlJBWV9MRU5HVEgoa2V5KSk7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiByYW5kb21fc2VlZChSYW5kb21PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOyAgICAgICAgICAgIC8qIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgKi8KICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgUFlfVUlOVDMyX1QgKmtleSA9IE5VTEw7CisgICAgdWludDMyX3QgKmtleSA9IE5VTEw7CiAgICAgc2l6ZV90IGJpdHMsIGtleXVzZWQ7CiAgICAgaW50IHJlczsKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKQEAgLTIxNiwxNCArMjQ0LDE3IEBACiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2VlZCIsIDAsIDEsICZhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICB0aW1lX3Qgbm93OworICAgICBpZiAoYXJnID09IE5VTEwgfHwgYXJnID09IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKHJhbmRvbV9zZWVkX3VyYW5kb20oc2VsZikgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAoUFlfVUlOVDMyX1Qpbm93KTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgICAgIC8qIFJlYWRpbmcgc3lzdGVtIGVudHJvcHkgZmFpbGVkLCBmYWxsIGJhY2sgb24gdGhlIHdvcnN0IGVudHJvcHk6CisgICAgICAgICAgICAgICB1c2UgdGhlIGN1cnJlbnQgdGltZSBhbmQgcHJvY2VzcyBpZGVudGlmaWVyLiAqLworICAgICAgICAgICAgcmFuZG9tX3NlZWRfdGltZV9waWQoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQorCiAgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCiAgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCiAgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KQEAgLTI0OCw3ICsyNzksNyBAQAogICAgIGtleXVzZWQgPSBiaXRzID09IDAgPyAxIDogKGJpdHMgLSAxKSAvIDMyICsgMTsKIAogICAgIC8qIENvbnZlcnQgc2VlZCB0byBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKKyAgICBrZXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CiAgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI2NywxMyArMjk4LDE3IEBACiAgICAgICAgIHNpemVfdCBpLCBqOwogICAgICAgICAvKiBSZXZlcnNlIGFuIGFycmF5LiAqLwogICAgICAgICBmb3IgKGkgPSAwLCBqID0ga2V5dXNlZCAtIDE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICAgICAgUFlfVUlOVDMyX1QgdG1wID0ga2V5W2ldOworICAgICAgICAgICAgdWludDMyX3QgdG1wID0ga2V5W2ldOwogICAgICAgICAgICAga2V5W2ldID0ga2V5W2pdOwogICAgICAgICAgICAga2V5W2pdID0gdG1wOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgcmVzdWx0ID0gaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXN1bHQgPSBQeV9Ob25lOworCiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CiAgICAgUHlNZW1fRnJlZShrZXkpOwpAQCAtMzI5LDcgKzM2NCw3IEBACiAgICAgICAgIGVsZW1lbnQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwogICAgICAgICBpZiAoZWxlbWVudCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKFBZX1VJTlQzMl9UKWVsZW1lbnQ7CisgICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKHVpbnQzMl90KWVsZW1lbnQ7CiAgICAgfQogCiAgICAgaW5kZXggPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpKTsKQEAgLTM0OSw4ICszODQsOCBAQAogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGssIGksIHdvcmRzOwotICAgIFBZX1VJTlQzMl9UIHI7Ci0gICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKKyAgICB1aW50MzJfdCByOworICAgIHVpbnQzMl90ICp3b3JkYXJyYXk7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRyYW5kYml0cyIsICZrKSkKQEAgLTM2Niw3ICs0MDEsNyBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKICAgICB3b3JkcyA9IChrIC0gMSkgLyAzMiArIDE7Ci0gICAgd29yZGFycmF5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CisgICAgd29yZGFycmF5ID0gKHVpbnQzMl90ICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CiAgICAgaWYgKHdvcmRhcnJheSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2Nwcm94eS5jIGIvTW9kdWxlcy9fc2Nwcm94eS5jCmluZGV4IDY2YjZlMzQuLjFjZTRiNzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NjcHJveHkuYworKysgYi9Nb2R1bGVzL19zY3Byb3h5LmMKQEAgLTcxLDE2ICs3MSwxMiBAQAogICAgIHJlc3VsdCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoJmtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyAhPSBOVUxMKSB7Ci0gICAgICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCi0gICAgICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOwotICAgICAgICBpZiAoYU51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZyhjZm51bV90b19pbnQzMihhTnVtKSk7Ci0gICAgICAgIH0KLSAgICB9ICBlbHNlIHsKKyAgICBhTnVtID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlEaWN0LAorICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOworICAgIGlmIChhTnVtID09IE5VTEwpIHsKICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZygwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKICAgICB9CiAKICAgICBpZiAodiA9PSBOVUxMKSBnb3RvIGVycm9yOwpAQCAtMTMwLDcgKzEyNiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCitzZXRfcHJveHkoUHlPYmplY3QqIHByb3hpZXMsIGNvbnN0IGNoYXIqIHByb3RvLCBDRkRpY3Rpb25hcnlSZWYgcHJveHlEaWN0LAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuYWJsZWRLZXksCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgaG9zdEtleSwgQ0ZTdHJpbmdSZWYgcG9ydEtleSkKIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzRiMWQxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0tlY2NhayBDb2RlIFBhY2thZ2UKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIGZpbGVzIGluIGtjcCBhcmUgdGFrZW4gZnJvbSB0aGUgS2VjY2FrIENvZGUgUGFja2FnZS4gVGhleSBoYXZlIGJlZW4KK3NsaWdodGx5IHRvIGJlIEM4OSBjb21wYXRpYmxlLiBUaGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhlYWRlciBmaWxlCitLZWNjYWtQLTE2MDAtU25QLmggaGEgYmVlbiByZW5hbWVkIHRvIEtlY2Nha1AtMTYwMC1TblAtb3B0MzIuaCBvcgorS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oLgorCitUaGUgNjRiaXQgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCBnZW5lcmljNjRsYy9saWJrZWNjYWsuYS5wYWNrIHRhcmdldCwgdGhlCiszMmJpdCBmaWxlcyB3aXRoIGdlbmVyaWMzMmxjL2xpYmtlY2Nhay5hLnBhY2suCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weSBiL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xN2M1NmIzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5CkBAIC0wLDAgKzEsNTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgICBDaHJpc3RpYW4gSGVpbWVzIChjaHJpc3RpYW5AcHl0aG9uLm9yZykKKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorIworIyBjbGVhbnVwIEtlY2NhayBzb3VyY2VzCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0NQUDEgPSByZS5jb21waWxlKCJeLy8oLiopIikKK0NQUDIgPSByZS5jb21waWxlKCJcIC8vKC4qKSIpCisKK1NUQVRJQ1MgPSAoInZvaWQgIiwgImludCAiLCAiSGFzaFJldHVybiAiLAorICAgICAgICAgICAiY29uc3QgVUlOVDY0ICIsICJVSU5UMTYgIiwgIiAgICBpbnQgcHJlZml4IyMiKQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitLRUNDQUsgPSBvcy5wYXRoLmpvaW4oSEVSRSwgImtjcCIpCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoS0VDQ0FLKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihLRUNDQUssIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCitkZWYgY2xlYW51cChmKToKKyAgICBidWYgPSBbXQorICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICMgbWFyayBhbGwgZnVuY3Rpb25zIGFuZCBnbG9iYWwgZGF0YSBhcyBzdGF0aWMKKyAgICAgICAgI2lmIGxpbmUuc3RhcnRzd2l0aChTVEFUSUNTKToKKyAgICAgICAgIyAgICBidWYuYXBwZW5kKCJzdGF0aWMgIiArIGxpbmUpCisgICAgICAgICMgICAgY29udGludWUKKyAgICAgICAgIyByZW1vdmUgVUlOVDY0IHR5cGVkZWYsIHdlIGhhdmUgb3VyIG93bgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCIpOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIyByZW1vdmUgI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIKKyAgICAgICAgaWYgImJyZ19lbmRpYW4uaCIgaW4gbGluZToKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIi8qICVzICovXG4iICUgbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyB0cmFuc2Zvcm0gQysrIGNvbW1lbnRzIGludG8gQU5TSSBDIGNvbW1lbnRzCisgICAgICAgIGxpbmUgPSBDUFAxLnN1YihyIi8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGxpbmUgPSBDUFAyLnN1YihyIiAvKlwxICovXG4iLCBsaW5lKQorICAgICAgICBidWYuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuICIiLmpvaW4oYnVmKQorCitmb3IgbmFtZSBpbiBnZXRmaWxlcygpOgorICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICByZXMgPSBjbGVhbnVwKGYpCisgICAgd2l0aCBvcGVuKG5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShyZXMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaCBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODhlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaApAQCAtMCwwICsxLDE1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X3NoYTNfbmV3X19kb2NfXywKKyJzaGEzXzIyNChzdHJpbmc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zaGEzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTNfMjI0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X3NoYTNfbmV3X2ltcGwodHlwZSwgZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2NvcHksIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X3VwZGF0ZSwgTUVUSF9PLCBfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9kaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ims6aGV4ZGlnZXN0IiwgX2tleXdvcmRzLCAwfTsKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGVuZ3RoKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChzZWxmLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg4OGJlYWI0NTEzNmE1NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5ZmI0MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpAQCAtMCwwICsxLDgyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiS2VjY2FrSGFzaC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hJbml0aWFsaXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpCit7CisgICAgSGFzaFJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoZGVsaW1pdGVkU3VmZml4ID09IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJlc3VsdCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCZpbnN0YW5jZS0+c3BvbmdlLCByYXRlLCBjYXBhY2l0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBTVUNDRVNTKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGluc3RhbmNlLT5maXhlZE91dHB1dExlbmd0aCA9IGhhc2hiaXRsZW47CisgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZFN1ZmZpeDsKKyAgICByZXR1cm4gU1VDQ0VTUzsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpID09IDApCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiKCZpbnN0YW5jZS0+c3BvbmdlLCBkYXRhLCBkYXRhYml0bGVuLzgpOworICAgIGVsc2UgeworICAgICAgICBIYXNoUmV0dXJuIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgICAgIGlmIChyZXQgPT0gU1VDQ0VTUykgeworICAgICAgICAgICAgLyogVGhlIGxhc3QgcGFydGlhbCBieXRlIGlzIGFzc3VtZWQgdG8gYmUgYWxpZ25lZCBvbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxhc3RCeXRlID0gZGF0YVtkYXRhYml0bGVuLzhdOworICAgICAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhlIGxhc3QgZmV3IGJpdHMgcHJvdmlkZWQgaGVyZSB3aXRoIHRob3NlIG9mIHRoZSBzdWZmaXggKi8KKworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgZGVsaW1pdGVkTGFzdEJ5dGVzID0gKHVuc2lnbmVkIHNob3J0KSgodW5zaWduZWQgc2hvcnQpbGFzdEJ5dGUgfCAoKHVuc2lnbmVkIHNob3J0KWluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPDwgKGRhdGFiaXRsZW4gJSA4KSkpOworICAgICAgICAgICAgaWYgKChkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGMDApID09IDB4MDAwMCkgeworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBvbmVCeXRlWzFdOworICAgICAgICAgICAgICAgIG9uZUJ5dGVbMF0gPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgICAgIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIG9uZUJ5dGUsIDEpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSAoZGVsaW1pdGVkTGFzdEJ5dGVzID4+IDgpICYgMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoRmluYWwoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKQoreworICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCZpbnN0YW5jZS0+c3BvbmdlLCBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4KTsKKyAgICBpZiAocmV0ID09IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgaGFzaHZhbCwgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoLzgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJldDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoU3F1ZWV6ZShLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbikKK3sKKyAgICBpZiAoKGRhdGFiaXRsZW4gJSA4KSAhPSAwKQorICAgICAgICByZXR1cm4gRkFJTDsKKyAgICByZXR1cm4gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkM2RjNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApAQCAtMCwwICsxLDExNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworI2RlZmluZSBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEJpdFNlcXVlbmNlOwordHlwZWRlZiBzaXplX3QgRGF0YUxlbmd0aDsKK3R5cGVkZWYgZW51bSB7IFNVQ0NFU1MgPSAwLCBGQUlMID0gMSwgQkFEX0hBU0hMRU4gPSAyIH0gSGFzaFJldHVybjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbnN0YW5jZSBzcG9uZ2U7CisgICAgdW5zaWduZWQgaW50IGZpeGVkT3V0cHV0TGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkU3VmZml4OworfSBLZWNjYWtfSGFzaEluc3RhbmNlOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uIGluc3RhbmNlIHVzZWQgaW4gc2VxdWVudGlhbCBoYXNoaW5nIG1vZGUuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSB0byBiZSBpbml0aWFsaXplZC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaGFzaGJpdGxlbiAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBiaXRzLAorICAqICAgICAgICAgICAgICAgICAgICAgb3IgMCBmb3IgYW4gYXJiaXRyYXJpbHktbG9uZyBvdXRwdXQuCisgICogQHBhcmFtICBkZWxpbWl0ZWRTdWZmaXggQml0cyB0aGF0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhcHBlbmRlZCB0byB0aGUgZW5kCisgICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGlucHV0IG1lc3NhZ2UsIGFzIGluIGRvbWFpbiBzZXBhcmF0aW9uLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBieXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBsaWtlIHRoZSBAYSBkZWxpbWl0ZWREYXRhIHBhcmFtZXRlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBLZWNjYWtfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBmdW5jdGlvbi4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjPTE2MDAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpOworCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQUtFMTI4IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMzQ0LCAgMjU2LCAgIDAsIDB4MUYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UyNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTIyNCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTE1MiwgIDQ0OCwgMjI0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjU2IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1NihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMDg4LCAgNTEyLCAyNTYsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0zODQgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsICA4MzIsICA3NjgsIDM4NCwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTUxMiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDU3NiwgMTAyNCwgNTEyLCAweDA2KQorCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgdG8gYmUgYWJzb3JiZWQuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuCisgICogICAgICAgICAgICAgICAgICAgICBXaGVuIEBhIGRhdGFiaXRMZW4gaXMgbm90IGEgbXVsdGlwbGUgb2YgOCwgdGhlIGxhc3QgYml0cyBvZiBkYXRhIG11c3QgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUgKGxpdHRsZS1lbmRpYW4gY29udmVudGlvbikuCisgICogQHBhcmFtICBkYXRhYml0TGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJpdHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBJbiB0aGUgcHJldmlvdXMgY2FsbCB0byBLZWNjYWtfSGFzaFVwZGF0ZSgpLCBkYXRhYml0bGVuIHdhcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFVwZGF0ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIGFsbCBpbnB1dCBibG9ja3MgaGF2ZSBiZWVuIGlucHV0IGFuZCB0byBnZXQKKyAgKiBvdXRwdXQgYml0cyBpZiB0aGUgbGVuZ3RoIHdhcyBzcGVjaWZpZWQgd2hlbiBjYWxsaW5nIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgaGFzaEluc3RhbmNlICAgIFBvaW50ZXIgdG8gdGhlIGhhc2ggaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogSWYgQGEgaGFzaGJpdGxlbiB3YXMgbm90IDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBudW1iZXIgb2YKKyAgKiAgICAgb3V0cHV0IGJpdHMgaXMgZXF1YWwgdG8gQGEgaGFzaGJpdGxlbi4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyAwIGluIHRoZSBjYWxsIHRvIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLCB0aGUgb3V0cHV0IGJpdHMKKyAgKiAgICAgbXVzdCBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIEtlY2Nha19IYXNoU3F1ZWV6ZSgpIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiBpbml0aWFsaXplZCBieSBJbml0KCkuCisgICogQHBhcmFtICBoYXNodmFsICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKTsKKworIC8qKgorICAqIEZ1bmN0aW9uIHRvIHNxdWVlemUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhYml0bGVuICBUaGUgbnVtYmVyIG9mIG91dHB1dCBiaXRzIGRlc2lyZWQgKG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4KS4KKyAgKiBAcHJlICAgIEtlY2Nha19IYXNoRmluYWwoKSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZC4KKyAgKiBAcHJlICAgIEBhIGRhdGFiaXRsZW4gaXMgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCkBAIC0wLDAgKzEsMjIwOCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQ2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFVJTlQ2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFVJTlQ2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFVJTlQ2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFVJTlQ2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFVJTlQ2NCBCYmEsIEJiZSwgQmJpLCBCYm8sIEJidTsgXAorICAgIFVJTlQ2NCBCZ2EsIEJnZSwgQmdpLCBCZ28sIEJndTsgXAorICAgIFVJTlQ2NCBCa2EsIEJrZSwgQmtpLCBCa28sIEJrdTsgXAorICAgIFVJTlQ2NCBCbWEsIEJtZSwgQm1pLCBCbW8sIEJtdTsgXAorICAgIFVJTlQ2NCBCc2EsIEJzZSwgQnNpLCBCc28sIEJzdTsgXAorICAgIFVJTlQ2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBVSU5UNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVUlOVDY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVUlOVDY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVUlOVDY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVUlOVDY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVUlOVDY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhIFwKKyAgICBDYSA9IEFiYV5BZ2FeQWthXkFtYV5Bc2E7IFwKKyAgICBDZSA9IEFiZV5BZ2VeQWtlXkFtZV5Bc2U7IFwKKyAgICBDaSA9IEFiaV5BZ2leQWtpXkFtaV5Bc2k7IFwKKyAgICBDbyA9IEFib15BZ29eQWtvXkFtb15Bc287IFwKKyAgICBDdSA9IEFidV5BZ3VeQWt1XkFtdV5Bc3U7IFwKKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCAgQmJvICYgIEJidSApOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oICBCZ2UgfCAgQmdpICk7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oICBCZ3UgfCAgQmdhICk7IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oICBCa2kgJiAgQmtvICk7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oICBCa2EgJiAgQmtlICk7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pfCAgQm11ICk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIEUjI3NvID0gICBCc28gXiggIEJzdSB8ICBCc2EgKTsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIENhID0gRSMjYmE7IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBDZSA9IEUjI2JlOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCh+QmJvKSYgIEJidSApOyBcCisgICAgQ2kgPSBFIyNiaTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIENvID0gRSMjYm87IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKKyAgICBDdSA9IEUjI2J1OyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oKH5CZ2UpJiAgQmdpICk7IFwKKyAgICBDYSBePSBFIyNnYTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIENlIF49IEUjI2dlOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgQ2kgXj0gRSMjZ2k7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oKH5CZ3UpJiAgQmdhICk7IFwKKyAgICBDbyBePSBFIyNnbzsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorICAgIEN1IF49IEUjI2d1OyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgQ2EgXj0gRSMja2E7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oKH5Ca2kpJiAgQmtvICk7IFwKKyAgICBDZSBePSBFIyNrZTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIENpIF49IEUjI2tpOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgQ28gXj0gRSMja287IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oKH5Ca2EpJiAgQmtlICk7IFwKKyAgICBDdSBePSBFIyNrdTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIENhIF49IEUjI21hOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgQ2UgXj0gRSMjbWU7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pJiAgQm11ICk7IFwKKyAgICBDaSBePSBFIyNtaTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIENvIF49IEUjI21vOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCisgICAgQ3UgXj0gRSMjbXU7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIENhIF49IEUjI3NhOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgQ2UgXj0gRSMjc2U7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBDaSBePSBFIyNzaTsgXAorICAgIEUjI3NvID0gICBCc28gXigofkJzdSkmICBCc2EgKTsgXAorICAgIENvIF49IEUjI3NvOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCisgICAgQ3UgXj0gRSMjc3U7IFwKK1wKKworLyogLS0tIENvZGUgZm9yIHJvdW5kICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXigofkJiZSkmICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oKH5CYnUpJiAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXigofkJnbykmICBCZ3UgKTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXigofkJrZSkmICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gICBCa28gXigofkJrdSkmICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXigofkJtaSkmICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXigofkJtYSkmICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCh+QnNvKSYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCitcCisKKyNlbmRpZiAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGUoWCwgc3RhdGUpIFwKKyAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddOyBcCisgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICBYIyNtYSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKworI2RlZmluZSBjb3B5U3RhdGVWYXJpYWJsZXMoWCwgWSkgXAorICAgIFgjI2JhID0gWSMjYmE7IFwKKyAgICBYIyNiZSA9IFkjI2JlOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dlID0gWSMjZ2U7IFwKKyAgICBYIyNnaSA9IFkjI2dpOyBcCisgICAgWCMjZ28gPSBZIyNnbzsgXAorICAgIFgjI2d1ID0gWSMjZ3U7IFwKKyAgICBYIyNrYSA9IFkjI2thOyBcCisgICAgWCMja2UgPSBZIyNrZTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtZSA9IFkjI21lOyBcCisgICAgWCMjbWkgPSBZIyNtaTsgXAorICAgIFgjI21vID0gWSMjbW87IFwKKyAgICBYIyNtdSA9IFkjI211OyBcCisgICAgWCMjc2EgPSBZIyNzYTsgXAorICAgIFgjI3NlID0gWSMjc2U7IFwKKyAgICBYIyNzaSA9IFkjI3NpOyBcCisgICAgWCMjc28gPSBZIyNzbzsgXAorICAgIFgjI3N1ID0gWSMjc3U7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kQWRkKFgsIHN0YXRlLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdOyBcCisgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdOyBcCisgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSA9IHN0YXRlWyAxXV5pbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XV5pbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF1eaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgIFgjI21pID0gc3RhdGVbMTddOyBcCisgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdOyBcCisgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XTsgXAorICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdXmlucHV0WzIxXTsgXAorICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XV5pbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgYWRkSW5wdXQoWCwgaW5wdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPT0gMjEpIHsgXAorICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSBePSBpbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1IF49IGlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSBePSBpbnB1dFsxNV07IFwKKyAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgIH0gXAorICAgIGVsc2UgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgXj0gaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvIF49IGlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSBpbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKworI2RlZmluZSBjb3B5VG9TdGF0ZUFuZE91dHB1dChYLCBzdGF0ZSwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgb3V0cHV0KFgsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSBYIyNuYW1lOworCisjZGVmaW5lIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSB+WCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gfihpbnB1dFtpbmRleF0gXiBYIyNuYW1lKTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsgXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEyXT0gWCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNkZWZpbmUgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNlbmRpZgorCisjZGVmaW5lIHdyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21hIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTEsIGtlKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMywgc28pIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgdW53cmFwKFgsIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgdHJhaWxpbmdCaXRzKSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE1LCBtYSkgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjQsIHN1KSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZjc2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImluLXBsYWNlIDMyLWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24iCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OWEzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCIKKworI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbiAgICAgICJnZW5lcmljIDY0LWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gKCIgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb25fY29uZmlnICIpIgorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzICAgIDIwMAorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCAgICAgIDgKKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3Bfc3VwcG9ydGVkCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2RlZmluZSBLZWNjYWtQMTYwMF9TdGF0aWNJbml0aWFsaXplKCkKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZShzdGF0ZSwgYnl0ZSwgb2Zmc2V0KSBcCisgICAgKCh1bnNpZ25lZCBjaGFyKikoc3RhdGUpKVsob2Zmc2V0KV0gXj0gKGJ5dGUpCisjZWxzZQordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOworI2VuZGlmCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOworc2l6ZV90IEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYih2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyM2YwOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApAQCAtMCwwICsxLDcgQEAKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAtb3B0NjQuaCIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIgorI2Vsc2UKKyAgI2Vycm9yICJObyBLZWNjYWtPcHQiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmOWZmZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jCkBAIC0wLDAgKzEsMTE2MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgICAgPHN0cmluZy5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOworLyogV0FSTklORzogb24gOC1iaXQgYW5kIDE2LWJpdCBwbGF0Zm9ybXMsIHRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5OiAqLworCisvKnR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICBVSU5UMzI7ICovCisKKworI2RlZmluZSBST0wzMihhLCBvZmZzZXQpICgoKChVSU5UMzIpYSkgPDwgKG9mZnNldCkpIF4gKCgoVUlOVDMyKWEpID4+ICgzMi0ob2Zmc2V0KSkpKQorCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChsb3cpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAxID0gKGhpZ2gpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gXj0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCBePSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRBTkQobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiAmPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkICY9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuID0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworLyogQ3JlZGl0IHRvIEhlbnJ5IFMuIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgQWRkaXNvbi1XZXNsZXksIDIwMDIgKi8KKworI2RlZmluZSBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChldmVuKTsgXAorICAgICAgICB0ZW1wMSA9IChvZGQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgdGVtcDEgPSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7IFwKKyAgICAgICAgdGVtcDAgPSB0ZW1wOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOworCisjZGVmaW5lIGZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBsb3cgPSB0ZW1wMDsgXAorICAgICAgICBoaWdoID0gdGVtcDE7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUihldmVuLCBvZGQsIGxvd0luLCBoaWdoSW4sIGxvd091dCwgaGlnaE91dCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvd091dCA9IGxvd0luIF4gdGVtcDA7IFwKKyAgICAgICAgaGlnaE91dCA9IGhpZ2hJbiBeIHRlbXAxOworCit2b2lkIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMHhGRiwgb2Zmc2V0KTsKKyAgICBtZW1zZXQobGFuZUFzQnl0ZXMrb2Zmc2V0LCAweDAwLCBsZW5ndGgpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQrbGVuZ3RoLCAweEZGLCA4LW9mZnNldC1sZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKQoreworICAgIG1lbXNldChzdGF0ZSwgMCwgMjAwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uID0gb2Zmc2V0Lzg7CisgICAgdW5zaWduZWQgaW50IG9mZnNldEluTGFuZSA9IG9mZnNldCU4OworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIGlmIChvZmZzZXRJbkxhbmUgPCA0KSB7CisgICAgICAgIGxvdyA9IChVSU5UMzIpYnl0ZSA8PCAob2Zmc2V0SW5MYW5lKjgpOworICAgICAgICBoaWdoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxvdyA9IDA7CisgICAgICAgIGhpZ2ggPSAoVUlOVDMyKWJ5dGUgPDwgKChvZmZzZXRJbkxhbmUtNCkqOCk7CisgICAgfQorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMCwgOCk7CisgICAgbWVtY3B5KGxhbmVBc0J5dGVzK29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGxvdyA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKTsKKyAgICBoaWdoID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworI2Vsc2UKKyAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1sxXSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgIGhpZ2ggPSBsYW5lQXNCeXRlc1s0XQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s3XSkgPDwgMjQpOworI2VuZGlmCisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBjb25zdCBVSU5UMzIgKiBwSSA9IChjb25zdCBVSU5UMzIgKilkYXRhOworICAgIFVJTlQzMiAqIHBTID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBsYW5lUG9zaXRpb24sIG9mZnNldCwgbGVuZ3RoKTsKKyAgICBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgbGFuZVBvc2l0aW9uLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGJ5dGVDb3VudC84OyBpKyspIHsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lc1tpKjIrMF0gPSAwOworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMisxXSA9IDA7CisgICAgfQorICAgIGlmIChieXRlQ291bnQlOCAhPSAwKQorICAgICAgICBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyhzdGF0ZSwgYnl0ZUNvdW50LzgsIDAsIGJ5dGVDb3VudCU4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisKKyAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSkgPSBsb3c7CisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpID0gaGlnaDsKKyNlbHNlCisgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworI2VuZGlmCisgICAgbWVtY3B5KGRhdGEsIGxhbmVBc0J5dGVzK29mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIFVJTlQzMiAqIHBJID0gKFVJTlQzMiAqKWRhdGE7CisgICAgY29uc3QgVUlOVDMyICogcFMgPSAoIGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgIG1lbWNweShwSSsrLCAmbG93LCA0KTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZoaWdoLCA0KTsKKyNlbHNlCisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgKihwSSsrKSwgKihwSSsrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbWVtY3B5KGRhdGErbGFuZVBvc2l0aW9uKjgsIGxhbmVBc0J5dGVzLCA4KTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIGxhbmVBc0J5dGVzW29mZnNldCtpXTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWlucHV0OworICAgIFVJTlQzMiAqIHBPID0gKFVJTlQzMiAqKW91dHB1dDsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9IChjb25zdCBVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgbG93LCBoaWdoLCB0LCB4MCwgeDEpOworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGxvdzsKKyAgICAgICAgKihwTysrKSA9ICoocEkrKykgXiBoaWdoOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUigqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCAqKHBPKyspLCAqKHBPKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzBdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzFdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworICAgIH0KKyNlbmRpZgorfQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBVSU5UMzIgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyWzIqMjQrMV0gPQoreworICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4YVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDAwOFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4M1VMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MlVMLAorICAgIDB4MDAwMDAwRkZVTAorfTsKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMCgpIFwKKyAgICAgICAgQ3ggPSBBYnUwXkFndTBeQWt1MF5BbXUwXkFzdTA7IFwKKyAgICAgICAgRHUxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYnUxXkFndTFeQWt1MV5BbXUxXkFzdTE7IFwKKyAgICAgICAgRHUwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFiaTBeQWdpMF5Ba2kwXkFtaTBeQXNpMDsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBYmkxXkFnaTFeQWtpMV5BbWkxXkFzaTE7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFnYTBeQWthMF5BbWEwXkFzYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBYm8wXkFnbzBeQWtvMF5BbW8wXkFzbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQxKCkgXAorICAgICAgICBDeCA9IEFzdTBeQWd1MF5BbXUwXkFidTFeQWt1MTsgXAorICAgICAgICBEdTEgPSBBZ2UxXkFtZTBeQWJlMF5Ba2UxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFzdTFeQWd1MV5BbXUxXkFidTBeQWt1MDsgXAorICAgICAgICBEdTAgPSBBZ2UwXkFtZTFeQWJlMV5Ba2UwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWtpMV5Bc2kxXkFnaTBeQW1pMV5BYmkwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFraTBeQXNpMF5BZ2kxXkFtaTBeQWJpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWthMV5Bc2EwXkFnYTBeQW1hMTsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFrYTBeQXNhMV5BZ2ExXkFtYTA7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBbW8wXkFibzFeQWtvMF5Bc28xXkFnbzA7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFtbzFeQWJvMF5Ba28xXkFzbzBeQWdvMTsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDIoKSBcCisgICAgICAgIEN4ID0gQWt1MV5BZ3UwXkFidTFeQXN1MV5BbXUxOyBcCisgICAgICAgIER1MSA9IEFtZTBeQWtlMF5BZ2UwXkFiZTBeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQWt1MF5BZ3UxXkFidTBeQXN1MF5BbXUwOyBcCisgICAgICAgIER1MCA9IEFtZTFeQWtlMV5BZ2UxXkFiZTFeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBZ2kxXkFiaTFeQXNpMV5BbWkwXkFraTE7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWdpMF5BYmkwXkFzaTBeQW1pMV5Ba2kwOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Bc2ExXkFtYTFeQWthMV5BZ2ExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQXNhMF5BbWEwXkFrYTBeQWdhMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFzbzBeQW1vMF5Ba28xXkFnbzBeQWJvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQXNvMV5BbW8xXkFrbzBeQWdvMV5BYm8xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMygpIFwKKyAgICAgICAgQ3ggPSBBbXUxXkFndTBeQXN1MV5Ba3UwXkFidTA7IFwKKyAgICAgICAgRHUxID0gQWtlMF5BYmUxXkFtZTFeQWdlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBbXUwXkFndTFeQXN1MF5Ba3UxXkFidTE7IFwKKyAgICAgICAgRHUwID0gQWtlMV5BYmUwXkFtZTBeQWdlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFzaTBeQWtpMF5BYmkxXkFtaTFeQWdpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBc2kxXkFraTFeQWJpMF5BbWkwXkFnaTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFtYTBeQWdhMV5Bc2ExXkFrYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BbWExXkFnYTBeQXNhMF5Ba2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWdvMV5Bc28wXkFrbzBeQWJvMF5BbW8xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBZ28wXkFzbzFeQWtvMV5BYm8xXkFtbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IG5Sb3VuZHMpCit7CisgICAgeworICAgICAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7CisgICAgICAgIFVJTlQzMiBEYTEsIERlMSwgRGkxLCBEbzEsIER1MTsKKyAgICAgICAgVUlOVDMyIENhMCwgQ2UwLCBDaTAsIENvMCwgQ3UwOworICAgICAgICBVSU5UMzIgQ3gsIEN5LCBDeiwgQ3c7CisgICAgICAgICNkZWZpbmUgQmEgQ2EwCisgICAgICAgICNkZWZpbmUgQmUgQ2UwCisgICAgICAgICNkZWZpbmUgQmkgQ2kwCisgICAgICAgICNkZWZpbmUgQm8gQ28wCisgICAgICAgICNkZWZpbmUgQnUgQ3UwCisgICAgICAgIGNvbnN0IFVJTlQzMiAqcFJvdW5kQ29uc3RhbnRzID0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyKygyNC1uUm91bmRzKSoyOworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgI2RlZmluZSBBYmEwIHN0YXRlQXNIYWxmTGFuZXNbIDBdCisgICAgICAgICNkZWZpbmUgQWJhMSBzdGF0ZUFzSGFsZkxhbmVzWyAxXQorICAgICAgICAjZGVmaW5lIEFiZTAgc3RhdGVBc0hhbGZMYW5lc1sgMl0KKyAgICAgICAgI2RlZmluZSBBYmUxIHN0YXRlQXNIYWxmTGFuZXNbIDNdCisgICAgICAgICNkZWZpbmUgQWJpMCBzdGF0ZUFzSGFsZkxhbmVzWyA0XQorICAgICAgICAjZGVmaW5lIEFiaTEgc3RhdGVBc0hhbGZMYW5lc1sgNV0KKyAgICAgICAgI2RlZmluZSBBYm8wIHN0YXRlQXNIYWxmTGFuZXNbIDZdCisgICAgICAgICNkZWZpbmUgQWJvMSBzdGF0ZUFzSGFsZkxhbmVzWyA3XQorICAgICAgICAjZGVmaW5lIEFidTAgc3RhdGVBc0hhbGZMYW5lc1sgOF0KKyAgICAgICAgI2RlZmluZSBBYnUxIHN0YXRlQXNIYWxmTGFuZXNbIDldCisgICAgICAgICNkZWZpbmUgQWdhMCBzdGF0ZUFzSGFsZkxhbmVzWzEwXQorICAgICAgICAjZGVmaW5lIEFnYTEgc3RhdGVBc0hhbGZMYW5lc1sxMV0KKyAgICAgICAgI2RlZmluZSBBZ2UwIHN0YXRlQXNIYWxmTGFuZXNbMTJdCisgICAgICAgICNkZWZpbmUgQWdlMSBzdGF0ZUFzSGFsZkxhbmVzWzEzXQorICAgICAgICAjZGVmaW5lIEFnaTAgc3RhdGVBc0hhbGZMYW5lc1sxNF0KKyAgICAgICAgI2RlZmluZSBBZ2kxIHN0YXRlQXNIYWxmTGFuZXNbMTVdCisgICAgICAgICNkZWZpbmUgQWdvMCBzdGF0ZUFzSGFsZkxhbmVzWzE2XQorICAgICAgICAjZGVmaW5lIEFnbzEgc3RhdGVBc0hhbGZMYW5lc1sxN10KKyAgICAgICAgI2RlZmluZSBBZ3UwIHN0YXRlQXNIYWxmTGFuZXNbMThdCisgICAgICAgICNkZWZpbmUgQWd1MSBzdGF0ZUFzSGFsZkxhbmVzWzE5XQorICAgICAgICAjZGVmaW5lIEFrYTAgc3RhdGVBc0hhbGZMYW5lc1syMF0KKyAgICAgICAgI2RlZmluZSBBa2ExIHN0YXRlQXNIYWxmTGFuZXNbMjFdCisgICAgICAgICNkZWZpbmUgQWtlMCBzdGF0ZUFzSGFsZkxhbmVzWzIyXQorICAgICAgICAjZGVmaW5lIEFrZTEgc3RhdGVBc0hhbGZMYW5lc1syM10KKyAgICAgICAgI2RlZmluZSBBa2kwIHN0YXRlQXNIYWxmTGFuZXNbMjRdCisgICAgICAgICNkZWZpbmUgQWtpMSBzdGF0ZUFzSGFsZkxhbmVzWzI1XQorICAgICAgICAjZGVmaW5lIEFrbzAgc3RhdGVBc0hhbGZMYW5lc1syNl0KKyAgICAgICAgI2RlZmluZSBBa28xIHN0YXRlQXNIYWxmTGFuZXNbMjddCisgICAgICAgICNkZWZpbmUgQWt1MCBzdGF0ZUFzSGFsZkxhbmVzWzI4XQorICAgICAgICAjZGVmaW5lIEFrdTEgc3RhdGVBc0hhbGZMYW5lc1syOV0KKyAgICAgICAgI2RlZmluZSBBbWEwIHN0YXRlQXNIYWxmTGFuZXNbMzBdCisgICAgICAgICNkZWZpbmUgQW1hMSBzdGF0ZUFzSGFsZkxhbmVzWzMxXQorICAgICAgICAjZGVmaW5lIEFtZTAgc3RhdGVBc0hhbGZMYW5lc1szMl0KKyAgICAgICAgI2RlZmluZSBBbWUxIHN0YXRlQXNIYWxmTGFuZXNbMzNdCisgICAgICAgICNkZWZpbmUgQW1pMCBzdGF0ZUFzSGFsZkxhbmVzWzM0XQorICAgICAgICAjZGVmaW5lIEFtaTEgc3RhdGVBc0hhbGZMYW5lc1szNV0KKyAgICAgICAgI2RlZmluZSBBbW8wIHN0YXRlQXNIYWxmTGFuZXNbMzZdCisgICAgICAgICNkZWZpbmUgQW1vMSBzdGF0ZUFzSGFsZkxhbmVzWzM3XQorICAgICAgICAjZGVmaW5lIEFtdTAgc3RhdGVBc0hhbGZMYW5lc1szOF0KKyAgICAgICAgI2RlZmluZSBBbXUxIHN0YXRlQXNIYWxmTGFuZXNbMzldCisgICAgICAgICNkZWZpbmUgQXNhMCBzdGF0ZUFzSGFsZkxhbmVzWzQwXQorICAgICAgICAjZGVmaW5lIEFzYTEgc3RhdGVBc0hhbGZMYW5lc1s0MV0KKyAgICAgICAgI2RlZmluZSBBc2UwIHN0YXRlQXNIYWxmTGFuZXNbNDJdCisgICAgICAgICNkZWZpbmUgQXNlMSBzdGF0ZUFzSGFsZkxhbmVzWzQzXQorICAgICAgICAjZGVmaW5lIEFzaTAgc3RhdGVBc0hhbGZMYW5lc1s0NF0KKyAgICAgICAgI2RlZmluZSBBc2kxIHN0YXRlQXNIYWxmTGFuZXNbNDVdCisgICAgICAgICNkZWZpbmUgQXNvMCBzdGF0ZUFzSGFsZkxhbmVzWzQ2XQorICAgICAgICAjZGVmaW5lIEFzbzEgc3RhdGVBc0hhbGZMYW5lc1s0N10KKyAgICAgICAgI2RlZmluZSBBc3UwIHN0YXRlQXNIYWxmTGFuZXNbNDhdCisgICAgICAgICNkZWZpbmUgQXN1MSBzdGF0ZUFzSGFsZkxhbmVzWzQ5XQorCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIC0tLSBDb2RlIGZvciA0IHJvdW5kcyAqLworCisgICAgICAgICAgICAvKiAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMCgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFraTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1vMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc3UwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWthMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFiZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbXUwXkR1MCksIDQpOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFiZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2EwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNvMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYnUxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDEoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1lMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2kxXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzbzFeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWt1MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTBeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMF5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTFeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UxXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTFeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTBeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTBeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJ1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBZ2UwXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUwXkR1MSksIDQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWthMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmUxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnbzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXN1MV5EdTEpLCAxNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UwXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTFeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMV5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUxXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTBeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMF5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUwXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQyKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBZ28wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtdTFeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMF5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MF5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWEwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzFeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzBeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2ExXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1lMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiaTFeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzdTFeRHUwKSwgNCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2EwXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQW1lMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMF5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MF5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzYTFeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdlMV5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYm8xXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMF5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UwXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kxXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMygpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmUwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiaTBeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJvMF5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYnUwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMV5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8xXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMF5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTBeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMV5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMV5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrZTBeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa3UwXkR1MCksIDQpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFrZTFeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWEwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1vMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbXUwXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTFeRHUwKSwgMTMpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMF5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTBeRHUxKSwgMjApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMV5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28xXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTFeRHUwKSwgMTkpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICpwUm91bmRDb25zdGFudHMgIT0gMHhGRiApOworCisgICAgICAgICN1bmRlZiBBYmEwCisgICAgICAgICN1bmRlZiBBYmExCisgICAgICAgICN1bmRlZiBBYmUwCisgICAgICAgICN1bmRlZiBBYmUxCisgICAgICAgICN1bmRlZiBBYmkwCisgICAgICAgICN1bmRlZiBBYmkxCisgICAgICAgICN1bmRlZiBBYm8wCisgICAgICAgICN1bmRlZiBBYm8xCisgICAgICAgICN1bmRlZiBBYnUwCisgICAgICAgICN1bmRlZiBBYnUxCisgICAgICAgICN1bmRlZiBBZ2EwCisgICAgICAgICN1bmRlZiBBZ2ExCisgICAgICAgICN1bmRlZiBBZ2UwCisgICAgICAgICN1bmRlZiBBZ2UxCisgICAgICAgICN1bmRlZiBBZ2kwCisgICAgICAgICN1bmRlZiBBZ2kxCisgICAgICAgICN1bmRlZiBBZ28wCisgICAgICAgICN1bmRlZiBBZ28xCisgICAgICAgICN1bmRlZiBBZ3UwCisgICAgICAgICN1bmRlZiBBZ3UxCisgICAgICAgICN1bmRlZiBBa2EwCisgICAgICAgICN1bmRlZiBBa2ExCisgICAgICAgICN1bmRlZiBBa2UwCisgICAgICAgICN1bmRlZiBBa2UxCisgICAgICAgICN1bmRlZiBBa2kwCisgICAgICAgICN1bmRlZiBBa2kxCisgICAgICAgICN1bmRlZiBBa28wCisgICAgICAgICN1bmRlZiBBa28xCisgICAgICAgICN1bmRlZiBBa3UwCisgICAgICAgICN1bmRlZiBBa3UxCisgICAgICAgICN1bmRlZiBBbWEwCisgICAgICAgICN1bmRlZiBBbWExCisgICAgICAgICN1bmRlZiBBbWUwCisgICAgICAgICN1bmRlZiBBbWUxCisgICAgICAgICN1bmRlZiBBbWkwCisgICAgICAgICN1bmRlZiBBbWkxCisgICAgICAgICN1bmRlZiBBbW8wCisgICAgICAgICN1bmRlZiBBbW8xCisgICAgICAgICN1bmRlZiBBbXUwCisgICAgICAgICN1bmRlZiBBbXUxCisgICAgICAgICN1bmRlZiBBc2EwCisgICAgICAgICN1bmRlZiBBc2ExCisgICAgICAgICN1bmRlZiBBc2UwCisgICAgICAgICN1bmRlZiBBc2UxCisgICAgICAgICN1bmRlZiBBc2kwCisgICAgICAgICN1bmRlZiBBc2kxCisgICAgICAgICN1bmRlZiBBc28wCisgICAgICAgICN1bmRlZiBBc28xCisgICAgICAgICN1bmRlZiBBc3UwCisgICAgICAgICN1bmRlZiBBc3UxCisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICAgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHN0YXRlLCAxMik7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDI0KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAxYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCkBAIC0wLDAgKzEsMyBAQAorI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgImxhbmUgY29tcGxlbWVudGluZywgYWxsIHJvdW5kcyB1bnJvbGxlZCIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworI2RlZmluZSBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMKQEAgLTAsMCArMSw0NzQgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjaWYgTk9UX1BZVEhPTgordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworLyogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IFVJTlQ2NDsgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZykKKyNkZWZpbmUgVXNlQmViaWdva2ltaXNhCisjZW5kaWYKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgX3JvdGw2NChhLCBvZmZzZXQpCisjZWxpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZVNITEQpCisgICAgI2RlZmluZSBST0w2NCh4LE4pICh7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19vdXQ7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19pbiA9IHg7IFwKKyAgICBfX2FzbV9fICgic2hsZCAlMiwlMCwlMCIgOiAiPXIiKF9fb3V0KSA6ICIwIihfX2luKSwgImkiKE4pKTsgXAorICAgIF9fb3V0OyBcCisgICAgfSkKKyNlbHNlCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgKCgoKFVJTlQ2NClhKSA8PCBvZmZzZXQpIF4gKCgoVUlOVDY0KWEpID4+ICg2NC1vZmZzZXQpKSkKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyIKKyNpZmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEZ1bGxVbnJvbGxpbmcKKyNlbHNlCisjZGVmaW5lIFVucm9sbGluZyBLZWNjYWtQMTYwMF91bnJvbGxpbmcKKyNlbmRpZgorI2luY2x1ZGUgIktlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIgorI2luY2x1ZGUgIlNuUC1SZWxhbmVkLmgiCisKK3N0YXRpYyBjb25zdCBVSU5UNjQgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1syNF0gPSB7CisgICAgMHgwMDAwMDAwMDAwMDAwMDAxVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4MlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwOGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDAwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4YlVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwOGFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDg4VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODlVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAzVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwMlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwODBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDgwVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDhVTEwgfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgKChVSU5UNjQqKXN0YXRlKVsgMV0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDJdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyA4XSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMTddID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzIwXSA9IH4oVUlOVDY0KTA7CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDY0IGxhbmU7CisgICAgaWYgKGxlbmd0aCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYW5lID0gZGF0YVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGFuZSA9IDA7CisgICAgICAgIG1lbWNweSgmbGFuZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisgICAgbGFuZSA8PD0gb2Zmc2V0Kjg7CisjZWxzZQorICAgIFVJTlQ2NCBsYW5lID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBsYW5lIHw9ICgoVUlOVDY0KWRhdGFbaV0pIDw8ICgoaStvZmZzZXQpKjgpOworI2VuZGlmCisgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dIF49IGxhbmU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgLyogSWYgZWl0aGVyIHBvaW50ZXIgaXMgbWlzYWxpZ25lZCwgZmFsbCBiYWNrIHRvIGJ5dGUtd2lzZSB4b3IuICovCisKKyAgICBpZiAoKCgoKHVpbnRwdHJfdClzdGF0ZSkgJiA3KSAhPSAwKSB8fCAoKCgodWludHB0cl90KWRhdGEpICYgNykgIT0gMCkpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsYW5lQ291bnQgKiA4OyBpKyspIHsKKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbaV0gXj0gZGF0YVtpXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgLyogT3RoZXJ3aXNlLi4uICovCisKKyAgICAgIGZvciggOyAoaSs4KTw9bGFuZUNvdW50OyBpKz04KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs0XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs0XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNV0gXj0gKChVSU5UNjQqKWRhdGEpW2krNV07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzZdIF49ICgoVUlOVDY0KilkYXRhKVtpKzZdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs3XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs3XTsKKyAgICAgIH0KKyAgICAgIGZvciggOyAoaSs0KTw9bGFuZUNvdW50OyBpKz00KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzIpPD1sYW5lQ291bnQ7IGkrPTIpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgfQorICAgICAgaWYgKGk8bGFuZUNvdW50KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgVUlOVDggKmN1ckRhdGEgPSBkYXRhOworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyssIGN1ckRhdGErPTgpIHsKKyAgICAgICAgVUlOVDY0IGxhbmUgPSAoVUlOVDY0KWN1ckRhdGFbMF0KKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVsxXSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzJdIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzNdIDw8IDI0KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzRdIDw8MzIpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNV0gPDwgNDApCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNl0gPDwgNDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbN10gPDwgNTYpOworICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2ldIF49IGxhbmU7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9IGJ5dGU7CisgICAgbGFuZSA8PD0gKG9mZnNldCU4KSo4OworICAgICgoVUlOVDY0KilzdGF0ZSlbb2Zmc2V0LzhdIF49IGxhbmU7Cit9CisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0FkZExhbmVzLCBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbbGFuZVBvc2l0aW9uKjgrb2Zmc2V0K2ldID0gfmRhdGFbaV07CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgbWVtY3B5KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCtvZmZzZXQsIGRhdGEsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKQorICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSB+KChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9ICgoY29uc3QgVUlOVDY0KilkYXRhKVtsYW5lUG9zaXRpb25dOworI2Vsc2UKKyAgICBtZW1jcHkoc3RhdGUsIGRhdGEsIGxhbmVDb3VudCo4KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxieXRlQ291bnQvODsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSAwOworICAgIGlmIChieXRlQ291bnQlOCAhPSAwKSB7CisgICAgICAgIGxhbmVQb3NpdGlvbiA9IGJ5dGVDb3VudC84OworICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICBtZW1zZXQoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4LCAweEZGLCBieXRlQ291bnQlOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDAsIGJ5dGVDb3VudCU4KTsKKyAgICB9CisjZWxzZQorICAgIG1lbXNldChzdGF0ZSwgMCwgYnl0ZUNvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZUFzTGFuZXMpCisgICAgcm91bmRzMjQKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMxMgorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBtZW1jcHkoZGF0YSwgKFVJTlQ4KilsYW5lMStvZmZzZXQsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBsYW5lID4+PSBvZmZzZXQqODsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGRhdGFbaV0gPSBsYW5lICYgMHhGRjsKKyAgICAgICAgbGFuZSA+Pj0gODsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgZnJvbVdvcmRUb0J5dGVzKFVJTlQ4ICpieXRlcywgY29uc3QgVUlOVDY0IHdvcmQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPCg2NC84KTsgaSsrKQorICAgICAgICBieXRlc1tpXSA9ICh3b3JkID4+ICg4KmkpKSAmIDB4RkY7Cit9CisjZW5kaWYKKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBtZW1jcHkoZGF0YSwgc3RhdGUsIGxhbmVDb3VudCo4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKQorICAgICAgICBmcm9tV29yZFRvQnl0ZXMoZGF0YSsoaSo4KSwgKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXSk7CisjZW5kaWYKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMV0gPSB+KChVSU5UNjQqKWRhdGEpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMl0gPSB+KChVSU5UNjQqKWRhdGEpWyAyXTsKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiA4KSB7CisgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyA4XSA9IH4oKFVJTlQ2NCopZGF0YSlbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTJdID0gfigoVUlOVDY0KilkYXRhKVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzE3XSA9IH4oKFVJTlQ2NCopZGF0YSlbMTddOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzIwXSA9IH4oKFVJTlQ2NCopZGF0YSlbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBVSU5UNjQgbGFuZTFbMV07CisgICAgICAgIGxhbmUxWzBdID0gbGFuZTsKKyAgICAgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gKChVSU5UOCopbGFuZTEpW29mZnNldCtpXTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAobGFuZSAmIDB4RkYpOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworICAgIHVuc2lnbmVkIGludCBpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgY2hhciB0ZW1wWzhdOworICAgIHVuc2lnbmVkIGludCBqOworI2VuZGlmCisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKSB7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbaV0gPSAoKFVJTlQ2NCopaW5wdXQpW2ldIF4gKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXTsKKyNlbHNlCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyh0ZW1wLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyAgICAgICAgZm9yKGo9MDsgajw4OyBqKyspCisgICAgICAgICAgICBvdXRwdXRbaSo4K2pdID0gaW5wdXRbaSo4K2pdIF4gdGVtcFtqXTsKKyNlbmRpZgorICAgIH0KKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAxXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMV07CisgICAgICAgIGlmIChsYW5lQ291bnQgPiAyKSB7CisgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgMl0gPSB+KChVSU5UNjQqKW91dHB1dClbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgOF0gPSB+KChVSU5UNjQqKW91dHB1dClbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsxMl0gPSB+KChVSU5UNjQqKW91dHB1dClbMTJdOworICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzE3XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsyMF0gPSB+KChVSU5UNjQqKW91dHB1dClbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YUJ5dGVMZW4gPSBkYXRhQnl0ZUxlbjsKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworICAgIFVJTlQ2NCAqaW5EYXRhQXNMYW5lcyA9IChVSU5UNjQqKWRhdGE7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICB3aGlsZShkYXRhQnl0ZUxlbiA+PSBsYW5lQ291bnQqOCkgeworICAgICAgICBhZGRJbnB1dChBLCBpbkRhdGFBc0xhbmVzLCBsYW5lQ291bnQpCisgICAgICAgIHJvdW5kczI0CisgICAgICAgIGluRGF0YUFzTGFuZXMgKz0gbGFuZUNvdW50OworICAgICAgICBkYXRhQnl0ZUxlbiAtPSBsYW5lQ291bnQqODsKKyAgICB9CisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorICAgIHJldHVybiBvcmlnaW5hbERhdGFCeXRlTGVuIC0gZGF0YUJ5dGVMZW47Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWNlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcwpAQCAtMCwwICsxLDE4NSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmIChkZWZpbmVkKEZ1bGxVbnJvbGxpbmcpKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MTIpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAzLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA2LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDcsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgOCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA5LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMTAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDYpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz02KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzUsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSA0KQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz00KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAzKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSsrKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbHNlCisjZXJyb3IgIlVucm9sbGluZyBpcyBub3QgY29ycmVjdGx5IHNwZWNpZmllZCEiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYjczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKworI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICNpbmNsdWRlICJkaXNwbGF5SW50ZXJtZWRpYXRlVmFsdWVzLmgiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGgyMDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMjAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQMjAwX1Blcm11dGVfMThyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YyMDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg0MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQNDAwCisgICAgI2RlZmluZSBTblBfd2lkdGggNDAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQNDAwX1Blcm11dGVfMjByb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGNDAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y0MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg4MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQODAwCisgICAgI2RlZmluZSBTblBfd2lkdGggODAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQODAwX1Blcm11dGVfMjJyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGODAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y4MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDE2MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMTYwMAorICAgICNkZWZpbmUgU25QX3dpZHRoIDE2MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQpCisgICAgICAgICNkZWZpbmUgU25QX0Zhc3RMb29wX0Fic29yYiBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRiYWRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZm5kZWYgX0tlY2Nha1Nwb25nZV9oXworI2RlZmluZSBfS2VjY2FrU3BvbmdlX2hfCisKKy8qKiBHZW5lcmFsIGluZm9ybWF0aW9uCisgICoKKyAgKiBUaGUgZm9sbG93aW5nIHR5cGUgYW5kIGZ1bmN0aW9ucyBhcmUgbm90IGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaGVpcgorICAqIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJpYywgd2l0aCB0aGUgcHJlZml4IFByZWZpeCByZXBsYWNlZCBieQorICAqIC0gS2VjY2FrV2lkdGgyMDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzIwMF0KKyAgKiAtIEtlY2Nha1dpZHRoNDAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls0MDBdCisgICogLSBLZWNjYWtXaWR0aDgwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbODAwXQorICAqIC0gS2VjY2FrV2lkdGgxNjAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZlsxNjAwXQorICAqCisgICogSW4gYWxsIHRoZXNlIGZ1bmN0aW9ucywgdGhlIHJhdGUgYW5kIGNhcGFjaXR5IG11c3Qgc3VtIHRvIHRoZSB3aWR0aCBvZiB0aGUKKyAgKiBjaG9zZW4gcGVybXV0YXRpb24uIEZvciBpbnN0YW5jZSwgdG8gdXNlIHRoZSBzcG9uZ2UgZnVuY3Rpb24KKyAgKiBLZWNjYWtbcj0xMzQ0LCBjPTI1Nl0sIG9uZSBtdXN0IHVzZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlKCkgb3IgYSBjb21iaW5hdGlvbgorICAqIG9mIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCksIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoKSwKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBhbmQKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgpLgorICAqCisgICogVGhlIFByZWZpeF9TcG9uZ2VJbnN0YW5jZSBjb250YWlucyB0aGUgc3BvbmdlIGluc3RhbmNlIGF0dHJpYnV0ZXMgZm9yIHVzZQorICAqIHdpdGggdGhlIFByZWZpeF9TcG9uZ2UqIGZ1bmN0aW9ucy4KKyAgKiBJdCBnYXRoZXJzIHRoZSBzdGF0ZSBwcm9jZXNzZWQgYnkgdGhlIHBlcm11dGF0aW9uIGFzIHdlbGwgYXMgdGhlIHJhdGUsCisgICogdGhlIHBvc2l0aW9uIG9mIGlucHV0L291dHB1dCBieXRlcyBpbiB0aGUgc3RhdGUgYW5kIHRoZSBwaGFzZQorICAqIChhYnNvcmJpbmcgb3Igc3F1ZWV6aW5nKS4KKyAgKi8KKworI2lmZGVmIERvbnRSZWFsbHlJbmNsdWRlX0RvY3VtZW50YXRpb25Pbmx5CisvKiogRnVuY3Rpb24gdG8gZXZhbHVhdGUgdGhlIHNwb25nZSBmdW5jdGlvbiBLZWNjYWtbciwgY10gaW4gYSBzaW5nbGUgY2FsbC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaW5wdXQgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKGJlZm9yZSB0aGUgc3VmZml4KS4KKyAgKiBAcGFyYW0gIGlucHV0Qnl0ZUxlbiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtZXNzYWdlIGluIGJ5dGVzLgorICAqIEBwYXJhbSAgc3VmZml4ICAgICAgICAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBzdWZmaXggYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBhYnNvcmJlZCBhZnRlciBAYSBpbnB1dC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnRpbmcgZnJvbSAwPUxTQiB0byA3PU1TQikgYW5kIGZvbGxvd2VkIGJ5IGJpdHMgMAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgbm8gYml0cyBhcmUgdG8gYmUgYWJzb3JiZWQsIHRoZW4gQGEgc3VmZml4IG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgMi1iaXQgc2VxdWVuY2UgMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBzdWZmaXggbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA1LWJpdCBzZXF1ZW5jZSAwLDEsMCwwLDEgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDctYml0IHNlcXVlbmNlIDEsMSwwLDEsMCwwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLgorICAqIEBwYXJhbSAgb3V0cHV0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCisgICogQHBhcmFtICBvdXRwdXRCeXRlTGVuICAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBieXRlcy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcHJlICAgIEBhIHN1ZmZpeCDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uLgorICAqIFRoZSBwaGFzZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGlzIHNldCB0byBhYnNvcmJpbmcuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHByZSAgICBPbmUgbXVzdCBoYXZlIHIrYyBlcXVhbCB0byB0aGUgc3VwcG9ydGVkIHdpZHRoIG9mIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgKiAgICAgICAgIGFuZCB0aGUgcmF0ZSBhIG11bHRpcGxlIG9mIDggYml0cyAob25lIGJ5dGUpIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYnl0ZXMgZm9yIHRoZSBzcG9uZ2UgZnVuY3Rpb24gdG8gYWJzb3JiLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFCeXRlTGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwcmUgICAgVGhlIHNwb25nZSBmdW5jdGlvbiBtdXN0IGJlIGluIHRoZSBhYnNvcmJpbmcgcGhhc2UsCisgICogICAgICAgICBpLmUuLCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZSgpIG9yIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpCisgICogICAgICAgICBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZS4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUFic29yYihQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYml0cyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIKKyAgKiBhbmQgdGhlbiB0byBzd2l0Y2ggdG8gdGhlIHNxdWVlemluZyBwaGFzZS4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZERhdGEgICBCeXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgdHJhaWxpbmcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgPGk+bjwvaT4gYml0cyBtdXN0IGJlIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb25zLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICBmcm9tIHBvc2l0aW9uIDxpPm48L2k+KzEgdG8gcG9zaXRpb24gNy4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEBwcmUgICAgQGEgZGVsaW1pdGVkRGF0YSDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YSBmcm9tIHRoZSBzcG9uZ2UgZnVuY3Rpb24uCisgICogSWYgdGhlIHNwb25nZSBmdW5jdGlvbiB3YXMgaW4gdGhlIGFic29yYmluZyBwaGFzZSwgdGhpcyBmdW5jdGlvbgorICAqIHN3aXRjaGVzIGl0IHRvIHRoZSBzcXVlZXppbmcgcGhhc2UKKyAgKiBhcyBpZiBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoc3BvbmdlSW5zdGFuY2UsIDB4MDEpIHdhcyBjYWxsZWQuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gVGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgZGVzaXJlZC4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZVNxdWVlemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYWxpZ24uaCIKKworI2RlZmluZSBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShwcmVmaXgsIHNpemUsIGFsaWdubWVudCkgXAorICAgIEFMSUdOKGFsaWdubWVudCkgdHlwZWRlZiBzdHJ1Y3QgcHJlZml4IyNfU3BvbmdlSW5zdGFuY2VTdHJ1Y3QgeyBcCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3RhdGVbc2l6ZV07IFwKKyAgICAgICAgdW5zaWduZWQgaW50IHJhdGU7IFwKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVJT0luZGV4OyBcCisgICAgICAgIGludCBzcXVlZXppbmc7IFwKKyAgICB9IHByZWZpeCMjX1Nwb25nZUluc3RhbmNlOworCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKHByZWZpeCkgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VJbml0aWFsaXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlQWJzb3JiKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlU3F1ZWV6ZShwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKyNpZm5kZWYgS2VjY2FrUDIwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTIwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDIwMCwgS2VjY2FrUDIwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMjAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoMjAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDQwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTQwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDQwMCwgS2VjY2FrUDQwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQNDAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoNDAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDgwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTgwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDgwMCwgS2VjY2FrUDgwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQODAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoODAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMTYwMCwgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcywgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgxNjAwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwNzM5ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKQEAgLTAsMCArMSwzMzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNkZWZpbmUgSk9JTjAoYSwgYikgICAgICAgICAgICAgICAgICAgICBhICMjIGIKKyNkZWZpbmUgSk9JTihhLCBiKSAgICAgICAgICAgICAgICAgICAgICBKT0lOMChhLCBiKQorCisjZGVmaW5lIFNwb25nZSAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2UpCisjZGVmaW5lIFNwb25nZUluc3RhbmNlICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VJbnN0YW5jZSkKKyNkZWZpbmUgU3BvbmdlSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluaXRpYWxpemUpCisjZGVmaW5lIFNwb25nZUFic29yYiAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmIpCisjZGVmaW5lIFNwb25nZUFic29yYkxhc3RGZXdCaXRzICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cykKKyNkZWZpbmUgU3BvbmdlU3F1ZWV6ZSAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZVNxdWVlemUpCisKKyNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfRXh0cmFjdEJ5dGVzKQorCitpbnQgU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbikKK3sKKyAgICBBTElHTihTblBfc3RhdGVBbGlnbm1lbnQpIHVuc2lnbmVkIGNoYXIgc3RhdGVbU25QX3N0YXRlU2l6ZUluQnl0ZXNdOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VySW5wdXQgPSBpbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJPdXRwdXQgPSBvdXRwdXQ7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gcmF0ZS84OworCisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoc3VmZml4ID09IDApCisgICAgICAgIHJldHVybiAxOworCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhdGUgKi8KKworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoc3RhdGUpOworCisgICAgLyogRmlyc3QsIGFic29yYiB3aG9sZSBibG9ja3MgKi8KKworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICBpZiAoKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgJiYgKGlucHV0Qnl0ZUxlbiA+PSByYXRlSW5CeXRlcykpIHsKKyAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICBzaXplX3QgajsKKyAgICAgICAgaiA9IFNuUF9GYXN0TG9vcF9BYnNvcmIoc3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VySW5wdXQsIGlucHV0Qnl0ZUxlbik7CisgICAgICAgIGN1cklucHV0ICs9IGo7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSBqOworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlKGlucHV0Qnl0ZUxlbiA+PSAoc2l6ZV90KXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1cklucHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgY3VySW5wdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBUaGVuLCBhYnNvcmIgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KWlucHV0Qnl0ZUxlbjsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAocGFydCkiLCBjdXJJbnB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCBwYXJ0aWFsQmxvY2spOworCisgICAgLyogRmluYWxseSwgYWJzb3JiIHRoZSBzdWZmaXggKi8KKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gc3VmZml4OworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChsYXN0IGZldyBiaXRzICsgZmlyc3QgYml0IG9mIHBhZGRpbmcpIiwgZGVsaW1pdGVkRGF0YTEsIDEpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICAvKiBMYXN0IGZldyBiaXRzLCB3aG9zZSBkZWxpbWl0ZXIgY29pbmNpZGVzIHdpdGggZmlyc3QgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCBzdWZmaXgsIHBhcnRpYWxCbG9jayk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChzdWZmaXggPj0gMHg4MCkgJiYgKHBhcnRpYWxCbG9jayA9PSAocmF0ZUluQnl0ZXMtMSkpKQorICAgICAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShzdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisKKyAgICAvKiBGaXJzdCwgb3V0cHV0IHdob2xlIGJsb2NrcyAqLworCisgICAgd2hpbGUob3V0cHV0Qnl0ZUxlbiA+IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyT3V0cHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBjdXJPdXRwdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIG91dHB1dEJ5dGVMZW4gLT0gcmF0ZUluQnl0ZXM7CisgICAgfQorCisgICAgLyogRmluYWxseSwgb3V0cHV0IHdoYXQgcmVtYWlucyAqLworCisgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludClvdXRwdXRCeXRlTGVuOworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGN1ck91dHB1dCwgMCwgcGFydGlhbEJsb2NrKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJPdXRwdXQsIHBhcnRpYWxCbG9jayk7CisgICAgI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlSW5pdGlhbGl6ZShTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpCit7CisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworICAgIFNuUF9Jbml0aWFsaXplKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPnJhdGUgPSByYXRlOworICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgaW5zdGFuY2UtPnNxdWVlemluZyA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlQWJzb3JiKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VyRGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gMCkgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIC8qIHByb2Nlc3NpbmcgZnVsbCBibG9ja3MgZmlyc3QgKi8KKworICAgICAgICAgICAgaWYgKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZhc3QgbGFuZTogd2hvbGUgbGFuZSByYXRlICovCisKKyAgICAgICAgICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihpbnN0YW5jZS0+c3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VyRGF0YSwgZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgICAgICBpICs9IGo7CisgICAgICAgICAgICAgICAgY3VyRGF0YSArPSBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBmb3Ioaj1kYXRhQnl0ZUxlbi1pOyBqPj1yYXRlSW5CeXRlczsgai09cmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyNpZmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KShkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCbG9jaytpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPiByYXRlSW5CeXRlcykKKyAgICAgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSByYXRlSW5CeXRlcy1pbnN0YW5jZS0+Ynl0ZUlPSW5kZXg7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGRlbGltaXRlZERhdGEgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGExWzFdOworICAgICAgICBkZWxpbWl0ZWREYXRhMVswXSA9IGRlbGltaXRlZERhdGE7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoaW5zdGFuY2UtPnN0YXRlLCBkZWxpbWl0ZWREYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgpOworICAgIC8qIElmIHRoZSBmaXJzdCBiaXQgb2YgcGFkZGluZyBpcyBhdCBwb3NpdGlvbiByYXRlLTEsIHdlIG5lZWQgYSB3aG9sZSBuZXcgYmxvY2sgZm9yIHRoZSBzZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIGlmICgoZGVsaW1pdGVkRGF0YSA+PSAweDgwKSAmJiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIDB4ODAsIHJhdGVJbkJ5dGVzLTEpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYmxvY2tbU25QX3dpZHRoLzhdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIFNuUF93aWR0aC84KTsKKyAgICAgICAgYmxvY2tbcmF0ZUluQnl0ZXMtMV0gPSAweDgwOworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNlY29uZCBiaXQgb2YgcGFkZGluZyIsIGJsb2NrLCByYXRlSW5CeXRlcyk7CisgICAgfQorICAgICNlbmRpZgorICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheVRleHQoMSwgIi0tLSBTd2l0Y2hpbmcgdG8gc3F1ZWV6aW5nIHBoYXNlIC0tLSIpOworICAgICNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VTcXVlZXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gaW5zdGFuY2UtPnJhdGUvODsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworCisgICAgaWYgKCFpbnN0YW5jZS0+c3F1ZWV6aW5nKQorICAgICAgICBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhpbnN0YW5jZSwgMHgwMSk7CisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpICYmIChkYXRhQnl0ZUxlbiA+PSAoaSArIHJhdGVJbkJ5dGVzKSkpIHsKKyAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayIsIGN1ckRhdGEsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSBkYXRhQnl0ZUxlbiAtIGo7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBub3JtYWwgbGFuZTogdXNpbmcgdGhlIG1lc3NhZ2UgcXVldWUgKi8KKworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgaW5zdGFuY2UtPmJ5dGVJT0luZGV4LCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJEYXRhLCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3VuZGVmIFNwb25nZQorI3VuZGVmIFNwb25nZUluc3RhbmNlCisjdW5kZWYgU3BvbmdlSW5pdGlhbGl6ZQorI3VuZGVmIFNwb25nZUFic29yYgorI3VuZGVmIFNwb25nZUFic29yYkxhc3RGZXdCaXRzCisjdW5kZWYgU3BvbmdlU3F1ZWV6ZQorI3VuZGVmIFNuUF9zdGF0ZVNpemVJbkJ5dGVzCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RCeXRlcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTExOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKy8qIGV4cGVjdCBQbFNuUF9iYXNlUGFyYWxsZWxpc20sIFBsU25QX3RhcmdldFBhcmFsbGVsaXNtICovCisKKy8qIGV4cGVjdCBTblBfc3RhdGVTaXplSW5CeXRlcywgU25QX3N0YXRlQWxpZ25tZW50ICovCisKKy8qIGV4cGVjdCBwcmVmaXggKi8KKworLyogZXhwZWN0IFNuUF8qICovCisKKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICBKT0lOKHByZWZpeCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFBsU25QX0luaXRpYWxpemVBbGwgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZSkKKyNkZWZpbmUgUGxTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0FkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9BZGRMYW5lc0FsbCAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZUJ5dGVzICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdExhbmVzQWxsICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKworI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZVNpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2Vsc2UKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNTaXplSW5CeXRlcykKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNBbGlnbm1lbnQpCisjZW5kaWYKKyNkZWZpbmUgUGxTblBfZmFjdG9yICgoUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20pLyhQbFNuUF9iYXNlUGFyYWxsZWxpc20pKQorI2RlZmluZSBTblBfc3RhdGVPZmZzZXQgKCgoU25QX3N0YXRlU2l6ZUluQnl0ZXMrKFNuUF9zdGF0ZUFsaWdubWVudC0xKSkvU25QX3N0YXRlQWxpZ25tZW50KSpTblBfc3RhdGVBbGlnbm1lbnQpCisjZGVmaW5lIHN0YXRlV2l0aEluZGV4KGkpICgodW5zaWduZWQgY2hhciAqKXN0YXRlcysoKGkpKlNuUF9zdGF0ZU9mZnNldCkpCisKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICAgIEpPSU4oU25QLCBfSW5pdGlhbGl6ZUFsbCkKKyNkZWZpbmUgU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGUpCisjZGVmaW5lIFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlcykKKyNkZWZpbmUgU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZExhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlQnl0ZXMpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVMYW5lc0FsbCkKKyNkZWZpbmUgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZVdpdGhaZXJvZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0TGFuZXNBbGwpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwpCisKK3ZvaWQgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSggdm9pZCApCit7CisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKK30KKwordm9pZCBQbFNuUF9Jbml0aWFsaXplQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspCisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0luaXRpYWxpemUoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbHNlCisgICAgICAgIFNuUF9Jbml0aWFsaXplQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRCeXRlKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgYnl0ZSwgb2Zmc2V0KTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBieXRlLCBvZmZzZXQpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwodm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBkYXRhICs9IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSpsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlQ291bnQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGVDb3VudCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbCh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbChzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKworI2lmIChkZWZpbmVkKFNuUF9QZXJtdXRlXzEycm91bmRzKSB8fCBkZWZpbmVkKFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKSkKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZV8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFBsU25QX0V4dHJhY3RCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0TGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXMqUGxTblBfYmFzZVBhcmFsbGVsaXNtOworICAgIH0KK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKGNvbnN0IHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBpbnB1dCwgb3V0cHV0LCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBpbnB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgICAgIG91dHB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCisjdW5kZWYgUGxTblBfZmFjdG9yCisjdW5kZWYgU25QX3N0YXRlT2Zmc2V0CisjdW5kZWYgc3RhdGVXaXRoSW5kZXgKKyN1bmRlZiBKT0lOMAorI3VuZGVmIEpPSU4KKyN1bmRlZiBQbFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgUGxTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFBsU25QX0FkZEJ5dGUKKyN1bmRlZiBQbFNuUF9BZGRCeXRlcworI3VuZGVmIFBsU25QX0FkZExhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBQbFNuUF9QZXJtdXRlQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgU25QX0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0FkZExhbmVzQWxsCisjdW5kZWYgU25QX092ZXJ3cml0ZUJ5dGVzCisjdW5kZWYgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlTGFuZXNBbGwKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfU25QX1JlbGFuZWRfaF8KKyNkZWZpbmUgX1NuUF9SZWxhbmVkX2hfCisKKyNkZWZpbmUgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0FkZExhbmVzLCBTblBfQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfQWRkTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX092ZXJ3cml0ZUxhbmVzLCBTblBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0TGFuZXMsIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzKHN0YXRlLCBkYXRhLCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMsIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZExhbmVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGlucHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAob3V0cHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VySW5wdXQgPSAoaW5wdXQpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfY3VyT3V0cHV0ID0gKG91dHB1dCk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VySW5wdXQsIF9jdXJPdXRwdXQsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VySW5wdXQgKz0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2N1ck91dHB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaCBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY1MGZlOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfYWxpZ25faF8KKyNkZWZpbmUgX2FsaWduX2hfCisKKy8qIG9uIE1hYyBPUy1YIGFuZCBwb3NzaWJseSBvdGhlcnMsIEFMSUdOKHgpIGlzIGRlZmluZWQgaW4gcGFyYW0uaCwgYW5kIC1XZXJyb3IgY2hva2VzIG9uIHRoZSByZWRlZi4gKi8KKworI2lmZGVmIEFMSUdOCisjdW5kZWYgQUxJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNkZWZpbmUgQUxJR04oeCkgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoeCkpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUxJR04oeCkgX19kZWNsc3BlYyhhbGlnbih4KSkKKyNlbGlmIGRlZmluZWQoX19BUk1DQ19WRVJTSU9OKQorI2RlZmluZSBBTElHTih4KSBfX2FsaWduKHgpCisjZWxzZQorI2RlZmluZSBBTElHTih4KQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWFhYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMKQEAgLTAsMCArMSw3NTcgQEAKKy8qIFNIQTMgbW9kdWxlCisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBTSEEzIGFsZ29yaXRobQorICoKKyAqIFNlZSBiZWxvdyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGNvZGUgdGhpcyBtb2R1bGUgd2FzCisgKiBiYXNlZCB1cG9uLiBBZGRpdGlvbmFsIHdvcmsgcGVyZm9ybWVkIGJ5OgorICoKKyAqICBBbmRyZXcgS3VjaGxpbmcgKGFta0BhbWsuY2EpCisgKiAgR3JlZyBTdGVpbiAoZ3N0ZWluQGx5cmEub3JnKQorICogIFRyZXZvciBQZXJyaW4gKHRyZXZwQHRyZXZwLm5ldCkKKyAqICBHcmVnb3J5IFAuIFNtaXRoIChncmVnQGtyeXB0by5vcmcpCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorICoKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBLTMgKEtlY2NhaykgYW5kIFNIQUtFCisgKgorICogVGhlIGNvZGUgaXMgYmFzZWQgb24gS2VjY2FrQ29kZVBhY2thZ2UgZnJvbSAyMDE2LTA0LTIzCisgKiBjb21taXQgNjQ3ZjkzMDc5YWZjNGFkYTNkMjM3Mzc0NzdhNmU1MjUxMWNhNDFmZAorICoKKyAqIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgYWx0ZXJlZCBpbiB0aGlzIHBvaW50czoKKyAqICAtIEMrKyBjb21tZW50cyBhcmUgY29udmVydGVkIHRvIEFOU0kgQyBjb21tZW50cy4KKyAqICAtIGFsbCBmdW5jdGlvbiBuYW1lcyBhcmUgbWFuZ2xlZAorICogIC0gdHlwZWRlZiBmb3IgVUlOVDY0IGlzIGNvbW1lbnRlZCBvdXQuCisgKiAgLSBicmdfZW5kaWFuLmggaXMgcmVtb3ZlZAorICoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBfX3NwYXJjCisgIC8qIG9wdDY0IHVzZXMgdW4tYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHRoYXQgY2F1c2VzIGEgQlVTIGVycm9yIHdpdGggbXNnCisgICAqICdpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50JyBvbiBTUEFSQy4gKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFBZX0JJR19FTkRJQU4KKyAgLyogb3B0NjQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFNJWkVPRl9WT0lEX1AgPT0gOCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiBvcHQ2NCB3b3JrcyBvbmx5IG9uIGxpdHRsZS1lbmRpYW4gNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgNjQKKyNlbHNlCisgIC8qIG9wdDMyIGlzIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgMzIgYW5kIDY0Yml0IHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VuZGlmCisKKyNpZiBLZWNjYWtPcHQgPT0gNjQgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsKKyNlbmRpZgorCisvKiByZXBsYWNlbWVudCBmb3IgYnJnX2VuZGlhbi5oICovCisjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMTIzNAorI2RlZmluZSBJU19CSUdfRU5ESUFOIDQzMjEKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisjaWYgUFlfQklHX0VORElBTgorI2RlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbmRpZgorCisvKiBtYW5nbGUgbmFtZXMgKi8KKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiIF9QeVNIQTNfS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiCisjZGVmaW5lIEtlY2Nha19IYXNoRmluYWwgX1B5U0hBM19LZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFNxdWVlemUgX1B5U0hBM19LZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgS2VjY2FrX0hhc2hVcGRhdGUgX1B5U0hBM19LZWNjYWtfSGFzaFVwZGF0ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9Jbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYgorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyNkZWZpbmUgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplCisjaWYgS2VjY2FrT3B0ID09IDMyCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyBfUHlTSEEzX0tlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyBfUHlTSEEzX0tlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvCisjZW5kaWYKKworLyogd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBLZWNjYWtQMTYwMCAqLworI2RlZmluZSBLZWNjYWtQMjAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDQwMF9leGNsdWRlZCAxCisjZGVmaW5lIEtlY2Nha1A4MDBfZXhjbHVkZWQgMQorCisvKiBpbmxpbmUgYWxsIEtlY2NhayBkZXBlbmRlbmNpZXMgKi8KKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5jIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuYyIKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgImtjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIgorI2VuZGlmCisKKyNkZWZpbmUgU0hBM19NQVhfRElHRVNUU0laRSA2NCAvKiA2NCBCeXRlcyAoNTEyIEJpdHMpIGZvciAyMjQgdG8gNTEyICovCisjZGVmaW5lIFNIQTNfTEFORVNJWkUgKDIwICogOCkgLyogRXh0cmFjdExhbmUgbmVlZHMgbWF4IHVpbnQ2NF90WzIwXSBleHRyYS4gKi8KKyNkZWZpbmUgU0hBM19zdGF0ZSBLZWNjYWtfSGFzaEluc3RhbmNlCisjZGVmaW5lIFNIQTNfaW5pdCBLZWNjYWtfSGFzaEluaXRpYWxpemUKKyNkZWZpbmUgU0hBM19wcm9jZXNzIEtlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIFNIQTNfZG9uZSBLZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIFNIQTNfc3F1ZWV6ZSBLZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgU0hBM19jb3B5c3RhdGUoZGVzdCwgc3JjKSBtZW1jcHkoJihkZXN0KSwgJihzcmMpLCBzaXplb2YoU0hBM19zdGF0ZSkpCisKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEzCitjbGFzcyBfc2hhMy5zaGEzXzIyNCAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjI0dHlwIgorY2xhc3MgX3NoYTMuc2hhM18yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzI1NnR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfMzg0ICJTSEEzb2JqZWN0ICoiICImU0hBM18zODR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzUxMiAiU0hBM29iamVjdCAqIiAiJlNIQTNfNTEydHlwIgorY2xhc3MgX3NoYTMuc2hha2VfMTI4ICJTSEEzb2JqZWN0ICoiICImU0hBS0UxMjh0eXBlIgorY2xhc3MgX3NoYTMuc2hha2VfMjU2ICJTSEEzb2JqZWN0ICoiICImU0hBS0UyNTZ0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjhhNTM2ODBmMzcwMjg1YV0qLworCisvKiBUaGUgc3RydWN0dXJlIGZvciBzdG9yaW5nIFNIQTMgaW5mbyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNIQTNfc3RhdGUgaGFzaF9zdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IFNIQTNvYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzI1NnR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM181MTJ0eXBlOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzM4NHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha181MTJ0eXBlOworI2VuZGlmCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQUtFMTI4dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UyNTZ0eXBlOworCisjaW5jbHVkZSAiY2xpbmljL3NoYTNtb2R1bGUuYy5oIgorCitzdGF0aWMgU0hBM29iamVjdCAqCituZXdTSEEzb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisgICAgbmV3b2JqID0gKFNIQTNvYmplY3QgKilQeU9iamVjdF9OZXcoU0hBM29iamVjdCwgdHlwZSk7CisgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIG5ld29iai0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gbmV3b2JqOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX3NoYTMuc2hhM18yMjQuX19uZXdfXyBhcyBweV9zaGEzX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZDVjMzQyNzllNjliZjA5IGlucHV0PWQ3YzU4MmI5NTBhODU4YjZdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmID0ge05VTEwsIE5VTEx9OworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgc2VsZiA9IG5ld1NIQTNvYmplY3QodHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjI0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzM4NCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfNTEyKCZzZWxmLT5oYXNoX3N0YXRlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCAxMTUyLCA0NDgsIDIyNCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDEwODgsIDUxMiwgMjU2LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgODMyLCA3NjgsIDM4NCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDU3NiwgMTAyNCwgNTEyLCAweDAxKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1IoZGF0YSwgJmJ1ZiwgZ290byBlcnJvcik7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgaWYgKGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICAgICAgLyogaW52YXJpYW50OiBOZXcgb2JqZWN0cyBjYW4ndCBiZSBhY2Nlc3NlZCBieSBvdGhlciBjb2RlIHlldCwKKyAgICAgICAgICAgICAqIHRodXMgaXQncyBzYWZlIHRvIHJlbGVhc2UgdGhlIEdJTCB3aXRob3V0IGxvY2tpbmcgdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworI2VuZGlmCisgICAgICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgaWYgKGRhdGEgJiYgYnVmLm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvKiBJbnRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKK3N0YXRpYyB2b2lkCitTSEEzX2RlYWxsb2MoU0hBM29iamVjdCAqc2VsZikKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzUzNzQxMWVjZGNkYTRjIGlucHV0PTkzYTQ0YWFlYmVhNTFiYThdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisKKyAgICBpZiAoKG5ld29iaiA9IG5ld1NIQTNvYmplY3QoUHlfVFlQRShzZWxmKSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUobmV3b2JqLT5oYXNoX3N0YXRlLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZDUzMTg0MmUyMGIyZDViIGlucHV0PWE1ODA3OTE3ZDIxOWIzMGVdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NWFkMDMyNTc5MDY5MThkIGlucHV0PTJkOTFiYjZlMGQxMTRlZTNdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfdXBkYXRlKFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDY3MjFkNTViNDgzZTBhZiBpbnB1dD1iZTQ0YmYwZDFjMjc5NzkxXSovCit7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworICAgIC8qIGFkZCBuZXcgZGF0YSwgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXMgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgfQorICAgIC8qIE9uY2UgYSBsb2NrIGV4aXN0cyBhbGwgY29kZSBwYXRocyBtdXN0IGJlIHN5bmNocm9uaXplZC4gV2UgaGF2ZSB0bworICAgICAqIHJlbGVhc2UgdGhlIEdJTCBldmVuIGZvciBzbWFsbCBidWZmZXJzIGFzIGFjcXVpcmluZyB0aGUgbG9jayBtYXkgdGFrZQorICAgICAqIGFuIHVubGltaXRlZCBhbW91bnQgb2YgdGltZSB3aGVuIGFub3RoZXIgdGhyZWFkIHVwZGF0ZXMgdGhpcyBvYmplY3QKKyAgICAgKiB3aXRoIGxvdHMgb2YgZGF0YS4gKi8KKyAgICBpZiAoc2VsZi0+bG9jaykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgIH0KKyNlbHNlCisgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIFNIQTMgVXBkYXRlKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIFNIQTNfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9ibG9ja19zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IHJhdGUgPSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmF0ZSAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9uYW1lKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAodHlwZSA9PSAmU0hBM18yMjR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMjU2Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM181MTJ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM181MTIiKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMjI0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfNTEyIik7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMTI4dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYWtlXzEyOCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UyNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMjU2Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfZGlnZXN0X3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfY2FwYWNpdHlfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCBjYXBhY2l0eSA9IDE2MDAgLSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY2FwYWNpdHkpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9yYXRlX2JpdHMoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3N1ZmZpeChTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc3VmZml4WzJdOworICAgIHN1ZmZpeFswXSA9IHNlbGYtPmhhc2hfc3RhdGUuZGVsaW1pdGVkU3VmZml4OworICAgIHN1ZmZpeFsxXSA9IDA7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilzdWZmaXgsIDEpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBTSEEzX2dldHNldGVyc1tdID0geworICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpU0hBM19nZXRfYmxvY2tfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilTSEEzX2dldF9uYW1lLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImRpZ2VzdF9zaXplIiwgKGdldHRlcilTSEEzX2dldF9kaWdlc3Rfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfY2FwYWNpdHlfYml0cyIsIChnZXR0ZXIpU0hBM19nZXRfY2FwYWNpdHlfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfcmF0ZV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9yYXRlX2JpdHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiX3N1ZmZpeCIsIChnZXR0ZXIpU0hBM19nZXRfc3VmZml4LCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCisKKyNkZWZpbmUgU0hBM19UWVBFKHR5cGVfb2JqLCB0eXBlX25hbWUsIHR5cGVfZG9jLCB0eXBlX21ldGhvZHMpIFwKKyAgICBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqID0geyBcCisgICAgICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCisgICAgICAgIHR5cGVfbmFtZSwgICAgICAgICAgLyogdHBfbmFtZSAqLyBcCisgICAgICAgIHNpemVvZihTSEEzb2JqZWN0KSwgLyogdHBfc2l6ZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8gXAorICAgICAgICAvKiAgbWV0aG9kcyAgKi8gXAorICAgICAgICAoZGVzdHJ1Y3RvcilTSEEzX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLyBcCisgICAgICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8gXAorICAgICAgICB0eXBlX2RvYywgICAgICAgICAgIC8qIHRwX2RvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovIFwKKyAgICAgICAgdHlwZV9tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICovIFwKKyAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovIFwKKyAgICAgICAgU0hBM19nZXRzZXRlcnMsICAgICAvKiB0cF9nZXRzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLyBcCisgICAgICAgIHB5X3NoYTNfbmV3LCAgICAgICAgLyogdHBfbmV3ICovIFwKKyAgICB9CisKK1B5RG9jX1NUUlZBUihzaGEzXzI1Nl9fZG9jX18sCisic2hhM18yNTYoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKHNoYTNfMzg0X19kb2NfXywKKyJzaGEzXzM4NChbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM181MTJfX2RvY19fLAorInNoYTNfNTEyKFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNjQgYnl0ZXMuIik7CisKK1NIQTNfVFlQRShTSEEzXzIyNHR5cGUsICJfc2hhMy5zaGEzXzIyNCIsIHB5X3NoYTNfbmV3X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzI1NnR5cGUsICJfc2hhMy5zaGEzXzI1NiIsIHNoYTNfMjU2X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzM4NHR5cGUsICJfc2hhMy5zaGEzXzM4NCIsIHNoYTNfMzg0X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzUxMnR5cGUsICJfc2hhMy5zaGEzXzUxMiIsIHNoYTNfNTEyX19kb2NfXywgU0hBM19tZXRob2RzKTsKKworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitQeURvY19TVFJWQVIoa2VjY2FrXzIyNF9fZG9jX18sCisia2VjY2FrXzIyNChbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18yNTZfX2RvY19fLAorImtlY2Nha18yNTYoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMzIgYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfMzg0X19kb2NfXywKKyJrZWNjYWtfMzg0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzUxMl9fZG9jX18sCisia2VjY2FrXzUxMihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKEtlY2Nha18yMjR0eXBlLCAiX3NoYTMua2VjY2FrXzIyNCIsIGtlY2Nha18yMjRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18yNTZ0eXBlLCAiX3NoYTMua2VjY2FrXzI1NiIsIGtlY2Nha18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18zODR0eXBlLCAiX3NoYTMua2VjY2FrXzM4NCIsIGtlY2Nha18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha181MTJ0eXBlLCAiX3NoYTMua2VjY2FrXzUxMiIsIGtlY2Nha181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworI2VuZGlmCisKKworc3RhdGljIFB5T2JqZWN0ICoKK19TSEFLRV9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBkaWdlc3RsZW4sIGludCBoZXgpCit7CisgICAgdW5zaWduZWQgY2hhciAqZGlnZXN0ID0gTlVMTDsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIC8qIEV4dHJhY3RMYW5lIG5lZWRzIGF0IGxlYXN0IFNIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFIGFuZAorICAgICAqIFNIQTNfTEFORVNJWkUgZXh0cmEgc3BhY2UuCisgICAgICovCisgICAgZGlnZXN0ID0gKHVuc2lnbmVkIGNoYXIqKVB5TWVtX01hbGxvYyhkaWdlc3RsZW4gKyBTSEEzX0xBTkVTSVpFKTsKKyAgICBpZiAoZGlnZXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgTlVMTCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIGRvbmUoKSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICByZXMgPSBTSEEzX3NxdWVlemUoJnRlbXAsIGRpZ2VzdCwgZGlnZXN0bGVuICogOCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFNxdWVlemUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGhleCkgeworICAgICAgICAgcmVzdWx0ID0gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgZGlnZXN0bGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdGxlbik7CisgICAgfQorICBlcnJvcjoKKyAgICBpZiAoZGlnZXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShkaWdlc3QpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5kaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzEzNjA1ZTJmODdiYjhmIGlucHV0PTYwOGM4Y2E4MGFlOWQxMTVdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDApOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5oZXhkaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY4ZTJmMWU0OTA5NDRhOCBpbnB1dD02NGU1NmI0NzYwZGI0NTczXSovCit7CisgICAgcmV0dXJuIF9TSEFLRV9kaWdlc3Qoc2VsZiwgbGVuZ3RoLCAxKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBS0VfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5RG9jX1NUUlZBUihzaGFrZV8xMjhfX2RvY19fLAorInNoYWtlXzEyOChbc3RyaW5nXSkgLT4gU0hBS0Ugb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEFLRSBoYXNoIG9iamVjdC4iKTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzI1Nl9fZG9jX18sCisic2hha2VfMjU2KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitTSEEzX1RZUEUoU0hBS0UxMjh0eXBlLCAiX3NoYTMuc2hha2VfMTI4Iiwgc2hha2VfMTI4X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBS0UyNTZ0eXBlLCAiX3NoYTMuc2hha2VfMjU2Iiwgc2hha2VfMjU2X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CisKKworLyogSW5pdGlhbGl6ZSB0aGlzIG1vZHVsZS4gKi8KK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX1NIQTNtb2R1bGUgPSB7CisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl9zaGEzIiwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgLTEsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwKK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fc2hhMyh2b2lkKQoreworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKworICAgIGlmICgobSA9IFB5TW9kdWxlX0NyZWF0ZSgmX1NIQTNtb2R1bGUpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworI2RlZmluZSBpbml0X3NoYTN0eXBlKG5hbWUsIHR5cGUpICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfVFlQRSh0eXBlKSA9ICZQeVR5cGVfVHlwZTsgXAorICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgeyBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopdHlwZSk7ICBcCisgICAgICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSwgKFB5T2JqZWN0ICopdHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQorCisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18yMjQiLCAmU0hBM18yMjR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzI1NiIsICZTSEEzXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMzg0IiwgJlNIQTNfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM181MTIiLCAmU0hBM181MTJ0eXBlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yMjQiLCAmS2VjY2FrXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yNTYiLCAmS2VjY2FrXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18zODQiLCAmS2VjY2FrXzM4NHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha181MTIiLCAmS2VjY2FrXzUxMnR5cGUpOworI2VuZGlmCisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMTI4IiwgJlNIQUtFMTI4dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMjU2IiwgJlNIQUtFMjU2dHlwZSk7CisKKyN1bmRlZiBpbml0X3NoYTN0eXBlCisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImtlY2Nha29wdCIsIEtlY2Nha09wdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiaW1wbGVtZW50YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbikgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIG07CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihtKTsKKyAgICByZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKaW5kZXggMzY4OWE0ZS4uNjJjNTg5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKQEAgLTI0NCw4ICsyNDQsNyBAQAogICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY2FjaGVfbWV0aG9kc1tdID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKaW5kZXggNzBkMDk5NS4uMWM2YWE1NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCkBAIC0xNjUsNyArMTY1LDYgQEAKICAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAKLSAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICBzZWxmLT5kZXRlY3RfdHlwZXMgPSBkZXRlY3RfdHlwZXM7CiAgICAgc2VsZi0+dGltZW91dCA9IHRpbWVvdXQ7CiAgICAgKHZvaWQpc3FsaXRlM19idXN5X3RpbWVvdXQoc2VsZi0+ZGIsIChpbnQpKHRpbWVvdXQqMTAwMCkpOwpAQCAtMjAyLDI2ICsyMDEsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBFbXB0eSB0aGUgZW50aXJlIHN0YXRlbWVudCBjYWNoZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLXZvaWQgcHlzcWxpdGVfZmx1c2hfc3RhdGVtZW50X2NhY2hlKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYpCi17Ci0gICAgcHlzcWxpdGVfTm9kZSogbm9kZTsKLSAgICBweXNxbGl0ZV9TdGF0ZW1lbnQqIHN0YXRlbWVudDsKLQotICAgIG5vZGUgPSBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmZpcnN0OwotCi0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgc3RhdGVtZW50ID0gKHB5c3FsaXRlX1N0YXRlbWVudCopKG5vZGUtPmRhdGEpOwotICAgICAgICAodm9pZClweXNxbGl0ZV9zdGF0ZW1lbnRfZmluYWxpemUoc3RhdGVtZW50KTsKLSAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7Ci0gICAgfQotCi0gICAgUHlfU0VUUkVGKHNlbGYtPnN0YXRlbWVudF9jYWNoZSwKLSAgICAgICAgICAgICAgKHB5c3FsaXRlX0NhY2hlICopUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZweXNxbGl0ZV9DYWNoZVR5cGUsICJPIiwgc2VsZikpOwotICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKLX0KLQogLyogYWN0aW9uIGluIChBQ1RJT05fUkVTRVQsIEFDVElPTl9GSU5BTElaRSkgKi8KIHZvaWQgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgaW50IGFjdGlvbiwgaW50IHJlc2V0X2N1cnNvcnMpCiB7CkBAIC0zNjYsOCArMzQ1LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogLyoKQEAgLTQwNiw5ICszODQsNyBAQAogICAgIH0KIAogICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMTsKLSAgICB9IGVsc2UgeworICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgfQogCkBAIC00MzksNyArNDE1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByYyA9IHNxbGl0ZTNfcHJlcGFyZShzZWxmLT5kYiwgIkNPTU1JVCIsIC0xLCAmc3RhdGVtZW50LCAmdGFpbCk7CkBAIC00NTAsOSArNDI2LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC00ODQsNyArNDU4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAgICAgICAgIHB5c3FsaXRlX2RvX2FsbF9zdGF0ZW1lbnRzKHNlbGYsIEFDVElPTl9SRVNFVCwgMSk7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNDk2LDkgKzQ3MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICByYyA9IHB5c3FsaXRlX3N0ZXAoc3RhdGVtZW50LCBzZWxmKTsKLSAgICAgICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgICAgIH0KIApAQCAtNTMzLDcgKzUwNSw3IEBACiAgICAgfSBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHB5X3ZhbCkpIHsKICAgICAgICAgc3FsaXRlM19yZXN1bHRfZG91YmxlKGNvbnRleHQsIFB5RmxvYXRfQXNEb3VibGUocHlfdmFsKSk7CiAgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socHlfdmFsKSkgewotICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHB5X3ZhbCk7CisgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5VW5pY29kZV9Bc1VURjgocHlfdmFsKTsKICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBzcWxpdGUzX3Jlc3VsdF90ZXh0KGNvbnRleHQsIHN0ciwgLTEsIFNRTElURV9UUkFOU0lFTlQpOwpAQCAtNjczLDcgKzY0NSw3IEBACiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAKICAgICBpZiAoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9PSAwKSB7Ci0gICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCAiIik7CisgICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCBOVUxMKTsKIAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IDA7CkBAIC03NDUsNyArNzE3LDcgQEAKICAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZ0Yik7CiAgICAgcmVzdG9yZSA9IDE7CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CisgICAgZnVuY3Rpb25fcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgqYWdncmVnYXRlX2luc3RhbmNlLCAmUHlJZF9maW5hbGl6ZSwgTlVMTCk7CiAKICAgICBQeV9ERUNSRUYoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSk7CiAKQEAgLTg3NCw4ICs4NDYsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGZ1bmMsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05MDYsOCArODc3LDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhZ2dyZWdhdGVfY2xhc3MsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05NjMsNyArOTMzLDcgQEAKIAogICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKICNlbmRpZgotICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKXVzZXJfYXJnLCAiIik7CisgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsIE5VTEwpOwogCiAgICAgaWYgKCFyZXQpIHsKICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewpAQCAtMTA0Miw4ICsxMDEyLDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhdXRob3JpemVyX2NiLCBQeV9Ob25lKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTA3Miw4ICsxMDQxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF90cmFjZV9jYWxsYmFjayhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKQEAgLTExMDAsOCArMTA2OCw3IEBACiAgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIF90cmFjZV9jYWxsYmFjaywgdHJhY2VfY2FsbGJhY2spOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2lmZGVmIEhBVkVfTE9BRF9FWFRFTlNJT04KQEAgLTExMjQsOCArMTA5MSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAiRXJyb3IgZW5hYmxpbmcgbG9hZCBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMTQ4LDggKzExMTQsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgZXJybXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xMTg2LDYgKzExNTEsMTcgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24ocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgdm9pZCogdW51c2VkKQoreworICAgIGlmICghcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmRiKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCiBzdGF0aWMgaW50IHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogaXNvbGF0aW9uX2xldmVsKQogewogICAgIGlmIChpc29sYXRpb25fbGV2ZWwgPT0gUHlfTm9uZSkgewpAQCAtMTE5Niw3ICsxMTcyLDYgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAKICAgICAgICAgc2VsZi0+YmVnaW5fc3RhdGVtZW50ID0gTlVMTDsKLSAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpjYW5kaWRhdGU7CiAgICAgICAgIFB5T2JqZWN0ICp1cHBlcmNhc2VfbGV2ZWw7CkBAIC0xMjk5LDcgKzEyNzQsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTMyOCw3ICsxMzAzLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzNTcsNyArMTMzMiw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xNTUyLDcgKzE1MjcsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgdXBwZXJjYXNlX25hbWVfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyh1cHBlcmNhc2VfbmFtZSk7CisgICAgdXBwZXJjYXNlX25hbWVfc3RyID0gUHlVbmljb2RlX0FzVVRGOCh1cHBlcmNhc2VfbmFtZSk7CiAgICAgaWYgKCF1cHBlcmNhc2VfbmFtZV9zdHIpCiAgICAgICAgIGdvdG8gZmluYWxseTsKIApAQCAtMTYyMSw3ICsxNTk2LDcgQEAKICAgICAgICAgbWV0aG9kX25hbWUgPSAicm9sbGJhY2siOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCBtZXRob2RfbmFtZSwgIiIpOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCBtZXRob2RfbmFtZSwgTlVMTCk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTYzMCwxMiArMTYwNSwxMyBAQAogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotc3RhdGljIGNoYXIgY29ubmVjdGlvbl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb25uZWN0aW9uX2RvY1tdID0KIFB5RG9jX1NUUigiU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb24gb2JqZWN0LiIpOwogCiBzdGF0aWMgUHlHZXRTZXREZWYgY29ubmVjdGlvbl9nZXRzZXRbXSA9IHsKICAgICB7Imlzb2xhdGlvbl9sZXZlbCIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X2lzb2xhdGlvbl9sZXZlbCwgKHNldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9pc29sYXRpb25fbGV2ZWx9LAogICAgIHsidG90YWxfY2hhbmdlcyIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X3RvdGFsX2NoYW5nZXMsIChzZXR0ZXIpMH0sCisgICAgeyJpbl90cmFuc2FjdGlvbiIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X2luX3RyYW5zYWN0aW9uLCAoc2V0dGVyKTB9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMTY5Nyw3ICsxNjczLDYgQEAKICAgICB7Ik5vdFN1cHBvcnRlZEVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIE5vdFN1cHBvcnRlZEVycm9yKSwgUkVBRE9OTFl9LAogICAgIHsicm93X2ZhY3RvcnkiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgcm93X2ZhY3RvcnkpfSwKICAgICB7InRleHRfZmFjdG9yeSIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCB0ZXh0X2ZhY3RvcnkpfSwKLSAgICB7ImluX3RyYW5zYWN0aW9uIiwgVF9CT09MLCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCBpblRyYW5zYWN0aW9uKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaCBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKaW5kZXggYWRiZmI1NC4uMjg2MGEwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCkBAIC0zNywxMCArMzcsNiBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBzcWxpdGUzKiBkYjsKIAotICAgIC8qIDEgaWYgd2UgYXJlIGN1cnJlbnRseSB3aXRoaW4gYSB0cmFuc2FjdGlvbiwgaS4gZS4gaWYgYSBCRUdJTiBoYXMgYmVlbgotICAgICAqIGlzc3VlZCAqLwotICAgIGNoYXIgaW5UcmFuc2FjdGlvbjsKLQogICAgIC8qIHRoZSB0eXBlIGRldGVjdGlvbiBtb2RlLiBPbmx5IDAsIFBBUlNFX0RFQ0xUWVBFUywgUEFSU0VfQ09MTkFNRVMgb3IgYQogICAgICAqIGJpdHdpc2UgY29tYmluYXRpb24gdGhlcmVvZiBtYWtlcyBzZW5zZSAqLwogICAgIGludCBkZXRlY3RfdHlwZXM7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZTE2NzZkZS4uMzlmN2E2NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMjcsNDUgKzI3LDcgQEAKIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9pdGVybmV4dChweXNxbGl0ZV9DdXJzb3IqIHNlbGYpOwogCi1zdGF0aWMgY2hhciogZXJybXNnX2ZldGNoX2Fjcm9zc19yb2xsYmFjayA9ICJDdXJzb3IgbmVlZGVkIHRvIGJlIHJlc2V0IGJlY2F1c2Ugb2YgY29tbWl0L3JvbGxiYWNrIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGZldGNoZWQgZnJvbS4iOwotCi1zdGF0aWMgcHlzcWxpdGVfU3RhdGVtZW50S2luZCBkZXRlY3Rfc3RhdGVtZW50X3R5cGUoY29uc3QgY2hhciogc3RhdGVtZW50KQotewotICAgIGNoYXIgYnVmWzIwXTsKLSAgICBjb25zdCBjaGFyKiBzcmM7Ci0gICAgY2hhciogZHN0OwotCi0gICAgc3JjID0gc3RhdGVtZW50OwotICAgIC8qIHNraXAgb3ZlciB3aGl0ZXBhY2UgKi8KLSAgICB3aGlsZSAoKnNyYyA9PSAnXHInIHx8ICpzcmMgPT0gJ1xuJyB8fCAqc3JjID09ICcgJyB8fCAqc3JjID09ICdcdCcpIHsKLSAgICAgICAgc3JjKys7Ci0gICAgfQotCi0gICAgaWYgKCpzcmMgPT0gMCkKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9JTlZBTElEOwotCi0gICAgZHN0ID0gYnVmOwotICAgICpkc3QgPSAwOwotICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIChkc3QgLSBidWYpIDwgKChQeV9zc2l6ZV90KXNpemVvZihidWYpIC0gMikpIHsKLSAgICAgICAgKmRzdCsrID0gUHlfVE9MT1dFUigqc3JjKyspOwotICAgIH0KLQotICAgICpkc3QgPSAwOwotCi0gICAgaWYgKCFzdHJjbXAoYnVmLCAic2VsZWN0IikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9TRUxFQ1Q7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgImluc2VydCIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfSU5TRVJUOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJ1cGRhdGUiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1VQREFURTsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiZGVsZXRlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9ERUxFVEU7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgInJlcGxhY2UiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1JFUExBQ0U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9PVEhFUjsKLSAgICB9Ci19CitzdGF0aWMgY29uc3QgY2hhciBlcnJtc2dfZmV0Y2hfYWNyb3NzX3JvbGxiYWNrW10gPSAiQ3Vyc29yIG5lZWRlZCB0byBiZSByZXNldCBiZWNhdXNlIG9mIGNvbW1pdC9yb2xsYmFjayBhbmQgY2FuIG5vIGxvbmdlciBiZSBmZXRjaGVkIGZyb20uIjsKIAogc3RhdGljIGludCBweXNxbGl0ZV9jdXJzb3JfaW5pdChweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewpAQCAtMTQzLDcgKzEwNSw3IEBACiAgICAgUHlPYmplY3QqIHJldHZhbDsKICAgICBfUHlfSURFTlRJRklFUih1cHBlcik7CiAKLSAgICB1cGNhc2Vfa2V5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChrZXksICZQeUlkX3VwcGVyLCAiIik7CisgICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgTlVMTCk7CiAgICAgaWYgKCF1cGNhc2Vfa2V5KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI0Miw4ICsyMDQsNyBAQAogICAgIGNvbnN0IGNoYXIqIHBvczsKIAogICAgIGlmICghY29sbmFtZSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAKICAgICBmb3IgKHBvcyA9IGNvbG5hbWU7OyBwb3MrKykgewpAQCAtNDI4LDkgKzM4OSw5IEBACiAgICAgUHlPYmplY3QqIGZ1bmNfYXJnczsKICAgICBQeU9iamVjdCogcmVzdWx0OwogICAgIGludCBudW1jb2xzOwotICAgIGludCBzdGF0ZW1lbnRfdHlwZTsKICAgICBQeU9iamVjdCogZGVzY3JpcHRvcjsKICAgICBQeU9iamVjdCogc2Vjb25kX2FyZ3VtZW50ID0gTlVMTDsKKyAgICBzcWxpdGVfaW50NjQgbGFzdHJvd2lkOwogCiAgICAgaWYgKCFjaGVja19jdXJzb3Ioc2VsZikpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTUwNCwxNCArNDY1LDE0IEBACiAgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIG9wZXJhdGlvbl9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUob3BlcmF0aW9uLCAmb3BlcmF0aW9uX2xlbik7CisgICAgb3BlcmF0aW9uX2NzdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShvcGVyYXRpb24sICZvcGVyYXRpb25fbGVuKTsKICAgICBpZiAob3BlcmF0aW9uX2NzdHIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIHJlc2V0IGRlc2NyaXB0aW9uIGFuZCByb3djb3VudCAqLwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBQeV9TRVRSRUYoc2VsZi0+ZGVzY3JpcHRpb24sIFB5X05vbmUpOwotICAgIHNlbGYtPnJvd2NvdW50ID0gLTFMOworICAgIHNlbGYtPnJvd2NvdW50ID0gMEw7CiAKICAgICBmdW5jX2FyZ3MgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAoIWZ1bmNfYXJncykgewpAQCAtNTUwLDQzICs1MTEsMTkgQEAKICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfbWFya19kaXJ0eShzZWxmLT5zdGF0ZW1lbnQpOwogCi0gICAgc3RhdGVtZW50X3R5cGUgPSBkZXRlY3Rfc3RhdGVtZW50X3R5cGUob3BlcmF0aW9uX2NzdHIpOwotICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5iZWdpbl9zdGF0ZW1lbnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnRfdHlwZSkgewotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfVVBEQVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfREVMRVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfUkVQTEFDRToKLSAgICAgICAgICAgICAgICBpZiAoIXNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gX3B5c3FsaXRlX2Nvbm5lY3Rpb25fYmVnaW4oc2VsZi0+Y29ubmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX09USEVSOgotICAgICAgICAgICAgICAgIC8qIGl0J3MgYSBEREwgc3RhdGVtZW50IG9yIHNvbWV0aGluZyBzaW1pbGFyCi0gICAgICAgICAgICAgICAgICAgLSB3ZSBiZXR0ZXIgQ09NTUlUIGZpcnN0IHNvIGl0IHdvcmtzIGZvciBhbGwgY2FzZXMgKi8KLSAgICAgICAgICAgICAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbikgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBweXNxbGl0ZV9jb25uZWN0aW9uX2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfU0VMRUNUOgotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllvdSBjYW5ub3QgZXhlY3V0ZSBTRUxFQ1Qgc3RhdGVtZW50cyBpbiBleGVjdXRlbWFueSgpLiIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgZG8gbm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24gaWYgYQorICAgICAgIERETCBzdGF0ZW1lbnQgaXMgZW5jb3VudGVyZWQuICBJZiBhbnlib2R5IHdhbnRzIHRyYW5zYWN0aW9uYWwgRERMLAorICAgICAgIHRoZXkgY2FuIGlzc3VlIGEgQkVHSU4gc3RhdGVtZW50IG1hbnVhbGx5LiAqLworICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5iZWdpbl9zdGF0ZW1lbnQgJiYgIXNxbGl0ZTNfc3RtdF9yZWFkb25seShzZWxmLT5zdGF0ZW1lbnQtPnN0KSAmJiAhc2VsZi0+c3RhdGVtZW50LT5pc19kZGwpIHsKKyAgICAgICAgaWYgKHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfcHlzcWxpdGVfY29ubmVjdGlvbl9iZWdpbihzZWxmLT5jb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCi0KICAgICB3aGlsZSAoMSkgewogICAgICAgICBwYXJhbWV0ZXJzID0gUHlJdGVyX05leHQocGFyYW1ldGVyc19pdGVyKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKSB7CkBAIC02NzIsNiArNjA5LDIwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIXNxbGl0ZTNfc3RtdF9yZWFkb25seShzZWxmLT5zdGF0ZW1lbnQtPnN0KSkgeworICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgKz0gKGxvbmcpc3FsaXRlM19jaGFuZ2VzKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50PSAtMUw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW11bHRpcGxlKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdHJvd2lkKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGxhc3Ryb3dpZCA9IHNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQobGFzdHJvd2lkKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChyYyA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwgImV4ZWN1dGVtYW55KCkgY2FuIG9ubHkgZXhlY3V0ZSBETUwgc3RhdGVtZW50cy4iKTsKQEAgLTY4NiwyOSArNjM3LDYgQEAKICAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHN0YXRlbWVudF90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9VUERBVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9ERUxFVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9JTlNFUlQ6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9SRVBMQUNFOgotICAgICAgICAgICAgICAgIGlmIChzZWxmLT5yb3djb3VudCA9PSAtMUwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgPSAwTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgKz0gKGxvbmcpc3FsaXRlM19jaGFuZ2VzKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAgICAgfQotCi0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0cm93aWQpOwotICAgICAgICBpZiAoIW11bHRpcGxlICYmIHN0YXRlbWVudF90eXBlID09IFNUQVRFTUVOVF9JTlNFUlQpIHsKLSAgICAgICAgICAgIHNxbGl0ZV9pbnQ2NCBsYXN0cm93aWQ7Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBsYXN0cm93aWQgPSBzcWxpdGUzX2xhc3RfaW5zZXJ0X3Jvd2lkKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KGxhc3Ryb3dpZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBQeV9Ob25lOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQpAQCAtNzE2LDE1ICs2NDQsNiBAQAogICAgIH0KIAogZXJyb3I6Ci0gICAgLyoganVzdCB0byBiZSBzdXJlIChpbXBsaWNpdCBST0xMQkFDS3Mgd2l0aCBPTiBDT05GTElDVCBST0xMQkFDSy9PUgotICAgICAqIFJPTExCQUNLIGNvdWxkIGhhdmUgaGFwcGVuZWQgKi8KLSAgICAjaWZkZWYgU1FMSVRFX1ZFUlNJT05fTlVNQkVSCi0gICAgI2lmIFNRTElURV9WRVJTSU9OX05VTUJFUiA+PSAzMDAyMDAyCi0gICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24gJiYgc2VsZi0+Y29ubmVjdGlvbi0+ZGIpCi0gICAgICAgIHNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24gPSAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgI2VuZGlmCi0gICAgI2VuZGlmCi0KICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnMpOwogICAgIFB5X1hERUNSRUYocGFyYW1ldGVyc19pdGVyKTsKICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnNfbGlzdCk7CkBAIC03NzAsNyArNjg5LDcgQEAKICAgICBzZWxmLT5yZXNldCA9IDA7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHNjcmlwdF9vYmopKSB7Ci0gICAgICAgIHNjcmlwdF9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzY3JpcHRfb2JqKTsKKyAgICAgICAgc2NyaXB0X2NzdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHNjcmlwdF9vYmopOwogICAgICAgICBpZiAoIXNjcmlwdF9jc3RyKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtOTEzLDggKzgzMiw3IEBACiAKICAgICByb3cgPSBweXNxbGl0ZV9jdXJzb3JfaXRlcm5leHQoc2VsZik7CiAgICAgaWYgKCFyb3cgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCiAgICAgcmV0dXJuIHJvdzsKQEAgLTk5NSw4ICs5MTMsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX25vb3AocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgLyogZG9uJ3QgY2FyZSwgcmV0dXJuIE5vbmUgKi8KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfY2xvc2UocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncykKQEAgLTEwMTIsOCArOTI5LDcgQEAKIAogICAgIHNlbGYtPmNsb3NlZCA9IDE7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjdXJzb3JfbWV0aG9kc1tdID0gewpAQCAtMTA0OSw3ICs5NjUsNyBAQAogICAgIHtOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgY3Vyc29yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGN1cnNvcl9kb2NbXSA9CiBQeURvY19TVFIoIlNRTGl0ZSBkYXRhYmFzZSBjdXJzb3IgY2xhc3MuIik7CiAKIFB5VHlwZU9iamVjdCBweXNxbGl0ZV9DdXJzb3JUeXBlID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCmluZGV4IDExOGJhMzguLjI4YmJkNWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKQEAgLTUxLDEyICs1MSw2IEBACiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9DdXJzb3I7CiAKLXR5cGVkZWYgZW51bSB7Ci0gICAgU1RBVEVNRU5UX0lOVkFMSUQsIFNUQVRFTUVOVF9JTlNFUlQsIFNUQVRFTUVOVF9ERUxFVEUsCi0gICAgU1RBVEVNRU5UX1VQREFURSwgU1RBVEVNRU5UX1JFUExBQ0UsIFNUQVRFTUVOVF9TRUxFQ1QsCi0gICAgU1RBVEVNRU5UX09USEVSCi19IHB5c3FsaXRlX1N0YXRlbWVudEtpbmQ7Ci0KIGV4dGVybiBQeVR5cGVPYmplY3QgcHlzcWxpdGVfQ3Vyc29yVHlwZTsKIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9leGVjdXRlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCmluZGV4IDdhN2U4NjAuLmNjNDUzMzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKQEAgLTEzOSw4ICsxMzksNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgIkNoYW5naW5nIHRoZSBzaGFyZWRfY2FjaGUgZmxhZyBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xNzIsOCArMTcxLDcgQEAKICAgICBpZiAocmMgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIobW9kdWxlX3JlZ2lzdGVyX2FkYXB0ZXJfZG9jLApAQCAtMTk0LDcgKzE5Miw3IEBACiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9yaWdfbmFtZSwgJlB5SWRfdXBwZXIsIE5VTEwpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTIyMSw4ICsyMTksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihlbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrc19kb2MsCkBAIC0yNjEsMTMgKzI1OCwxMyBAQAogfTsKIAogc3RydWN0IF9JbnRDb25zdGFudFBhaXIgewotICAgIGNoYXIqIGNvbnN0YW50X25hbWU7CisgICAgY29uc3QgY2hhciAqY29uc3RhbnRfbmFtZTsKICAgICBpbnQgY29uc3RhbnRfdmFsdWU7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfSW50Q29uc3RhbnRQYWlyIEludENvbnN0YW50UGFpcjsKIAotc3RhdGljIEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0geworc3RhdGljIGNvbnN0IEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0gewogICAgIHsiUEFSU0VfREVDTFRZUEVTIiwgUEFSU0VfREVDTFRZUEVTfSwKICAgICB7IlBBUlNFX0NPTE5BTUVTIiwgUEFSU0VfQ09MTkFNRVN9LAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKaW5kZXggMDc1ODRlMy4uNTMzNDJmMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwpAQCAtOTgsNyArOTgsNyBAQAogICAgICAgICBQeV9YSU5DUkVGKGl0ZW0pOwogICAgICAgICByZXR1cm4gaXRlbTsKICAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhpZHgpKSB7Ci0gICAgICAgIGtleSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoaWR4KTsKKyAgICAgICAga2V5ID0gUHlVbmljb2RlX0FzVVRGOChpZHgpOwogICAgICAgICBpZiAoa2V5ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqb2JqOwogICAgICAgICAgICAgb2JqID0gUHlUdXBsZV9HRVRfSVRFTShzZWxmLT5kZXNjcmlwdGlvbiwgaSk7CiAgICAgICAgICAgICBvYmogPSBQeVR1cGxlX0dFVF9JVEVNKG9iaiwgMCk7Ci0gICAgICAgICAgICBjb21wYXJlX2tleSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2JqKTsKKyAgICAgICAgICAgIGNvbXBhcmVfa2V5ID0gUHlVbmljb2RlX0FzVVRGOChvYmopOwogICAgICAgICAgICAgaWYgKCFjb21wYXJlX2tleSkgewogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IGU4NzA2MzMuLjBkZjY2MWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTU0LDExICs1NCwxMiBAQAogICAgIGludCByYzsKICAgICBjb25zdCBjaGFyKiBzcWxfY3N0cjsKICAgICBQeV9zc2l6ZV90IHNxbF9jc3RyX2xlbjsKKyAgICBjb25zdCBjaGFyKiBwOwogCiAgICAgc2VsZi0+c3QgPSBOVUxMOwogICAgIHNlbGYtPmluX3VzZSA9IDA7CiAKLSAgICBzcWxfY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHNxbCwgJnNxbF9jc3RyX2xlbik7CisgICAgc3FsX2NzdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzcWwsICZzcWxfY3N0cl9sZW4pOwogICAgIGlmIChzcWxfY3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIHJjID0gUFlTUUxJVEVfU1FMX1dST05HX1RZUEU7CiAgICAgICAgIHJldHVybiByYzsKQEAgLTcyLDYgKzczLDIzIEBACiAgICAgUHlfSU5DUkVGKHNxbCk7CiAgICAgc2VsZi0+c3FsID0gc3FsOwogCisgICAgLyogZGV0ZXJtaW5lIGlmIHRoZSBzdGF0ZW1lbnQgaXMgYSBEREwgc3RhdGVtZW50ICovCisgICAgc2VsZi0+aXNfZGRsID0gMDsKKyAgICBmb3IgKHAgPSBzcWxfY3N0cjsgKnAgIT0gMDsgcCsrKSB7CisgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgc2VsZi0+aXNfZGRsID0gKFB5T1Nfc3RybmljbXAocCwgImNyZWF0ZSAiLCA3KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB8fCAoUHlPU19zdHJuaWNtcChwLCAiZHJvcCAiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB8fCAoUHlPU19zdHJuaWNtcChwLCAicmVpbmRleCAiLCA4KSA9PSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJjID0gc3FsaXRlM19wcmVwYXJlKGNvbm5lY3Rpb24tPmRiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNxbF9jc3RyLApAQCAtMTM0LDcgKzE1Miw3IEBACiAgICAgICAgICAgICByYyA9IHNxbGl0ZTNfYmluZF9kb3VibGUoc2VsZi0+c3QsIHBvcywgUHlGbG9hdF9Bc0RvdWJsZShwYXJhbWV0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVfVU5JQ09ERToKLSAgICAgICAgICAgIHN0cmluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHBhcmFtZXRlciwgJmJ1Zmxlbik7CisgICAgICAgICAgICBzdHJpbmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShwYXJhbWV0ZXIsICZidWZsZW4pOwogICAgICAgICAgICAgaWYgKHN0cmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGlmIChidWZsZW4gPiBJTlRfTUFYKSB7CkBAIC0zMDcsNyArMzI1LDcgQEAKICAgICBQeV9zc2l6ZV90IHNxbF9sZW47CiAgICAgc3FsaXRlM19zdG10KiBuZXdfc3Q7CiAKLSAgICBzcWxfY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHNlbGYtPnNxbCwgJnNxbF9sZW4pOworICAgIHNxbF9jc3RyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc2VsZi0+c3FsLCAmc3FsX2xlbik7CiAgICAgaWYgKHNxbF9jc3RyID09IE5VTEwpIHsKICAgICAgICAgcmMgPSBQWVNRTElURV9TUUxfV1JPTkdfVFlQRTsKICAgICAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCmluZGV4IDQ2ODE0NDMuLjZlZWYxNjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKICAgICBzcWxpdGUzX3N0bXQqIHN0OwogICAgIFB5T2JqZWN0KiBzcWw7CiAgICAgaW50IGluX3VzZTsKKyAgICBpbnQgaXNfZGRsOwogICAgIFB5T2JqZWN0KiBpbl93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gcHlzcWxpdGVfU3RhdGVtZW50OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwppbmRleCAzMTJmZTNiLi4zNTFiMWI0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKQEAgLTExMyw3ICsxMTMsNiBAQAogUHlPYmplY3QgKgogX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChzcWxpdGVfaW50NjQgdmFsdWUpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICMgaWYgU0laRU9GX0xPTkdfTE9ORyA8IDgKICAgICBpZiAodmFsdWUgPiBQWV9MTE9OR19NQVggfHwgdmFsdWUgPCBQWV9MTE9OR19NSU4pIHsKICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgmdmFsdWUsIHNpemVvZih2YWx1ZSksCkBAIC0xMjQsMTQgKzEyMyw2IEBACiAgICAgaWYgKHZhbHVlID4gTE9OR19NQVggfHwgdmFsdWUgPCBMT05HX01JTikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOwogIyBlbmRpZgotI2Vsc2UKLSMgaWYgU0laRU9GX0xPTkcgPCA4Ci0gICAgaWYgKHZhbHVlID4gTE9OR19NQVggfHwgdmFsdWUgPCBMT05HX01JTikgewotICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19MSVRUTEVfRU5ESUFOLCAxIC8qIHNpZ25lZCAqLyk7Ci0gICAgfQotIyBlbmRpZgotI2VuZGlmCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHZhbHVlLCBzcWxpdGVfaW50NjQsIGxvbmcpKTsKIH0KIApAQCAtMTM5LDIzICsxMzAsMTMgQEAKIF9weXNxbGl0ZV9sb25nX2FzX2ludDY0KFB5T2JqZWN0ICogcHlfdmFsKQogewogICAgIGludCBvdmVyZmxvdzsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwotI2Vsc2UKLSAgICBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwogICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFvdmVyZmxvdykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjIGlmIFNJWkVPRl9MT05HX0xPTkcgPiA4CiAgICAgICAgIGlmICgtMHg4MDAwMDAwMDAwMDAwMDAwTEwgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHg3RkZGRkZGRkZGRkZGRkZGTEwpCiAjIGVuZGlmCi0jZWxzZQotIyBpZiBTSVpFT0ZfTE9ORyA+IDgKLSAgICAgICAgaWYgKC0weDgwMDAwMDAwMDAwMDAwMDBMIDw9IHZhbHVlICYmIHZhbHVlIDw9IDB4N0ZGRkZGRkZGRkZGRkZGRkwpCi0jIGVuZGlmCi0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAgICAgZWxzZSBpZiAoc2l6ZW9mKHZhbHVlKSA8IHNpemVvZihzcWxpdGVfaW50NjQpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcmUuYyBiL01vZHVsZXMvX3NyZS5jCmluZGV4IDA5YjU4MzUuLjk3OWU2MWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NyZS5jCisrKyBiL01vZHVsZXMvX3NyZS5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiBvdGhlciBjb21wYXRpYmlsaXR5IHdvcmsuCiAgKi8KIAotc3RhdGljIGNoYXIgY29weXJpZ2h0W10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQogICAgICIgU1JFIDIuMi4yIENvcHlyaWdodCAoYykgMTk5Ny0yMDAyIGJ5IFNlY3JldCBMYWJzIEFCICI7CiAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgpAQCAtNjIsOSArNjIsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIG9wdGlvbmFsIGZlYXR1cmVzICovCiAKLS8qIGVuYWJsZXMgZmFzdCBzZWFyY2hpbmcgKi8KLSNkZWZpbmUgVVNFX0ZBU1RfU0VBUkNICi0KIC8qIGVuYWJsZXMgY29weS9kZWVwY29weSBoYW5kbGluZyAod29yayBpbiBwcm9ncmVzcykgKi8KICN1bmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAKQEAgLTcxNyw3ICs3MTQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1jYWxsKGNoYXIqIG1vZHVsZSwgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBhcmdzKQorY2FsbChjb25zdCBjaGFyKiBtb2R1bGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCogbmFtZTsKICAgICBQeU9iamVjdCogbW9kOwpAQCAtMTA1OSw3ICsxMDU2LDYgQEAKICAgICBQeU9iamVjdCogam9pbmVyOwogICAgIFB5T2JqZWN0KiBpdGVtOwogICAgIFB5T2JqZWN0KiBmaWx0ZXI7Ci0gICAgUHlPYmplY3QqIGFyZ3M7CiAgICAgUHlPYmplY3QqIG1hdGNoOwogICAgIHZvaWQqIHB0cjsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKQEAgLTExNjEsMTMgKzExNTcsNyBAQAogICAgICAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIDEpOwogICAgICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBtYXRjaCk7Ci0gICAgICAgICAgICBpZiAoIWFyZ3MpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWF0Y2gpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpdGVtID0gUHlPYmplY3RfQ2FsbE9iamVjdChmaWx0ZXIsIGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgaXRlbSA9IF9QeU9iamVjdF9DYWxsQXJnMShmaWx0ZXIsIG1hdGNoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXRjaCk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE1MTYsMTQgKzE1MDYsMTIgQEAKIAogICAgIHNlbGYtPmdyb3VwcyA9IGdyb3VwczsKIAotICAgIFB5X1hJTkNSRUYoZ3JvdXBpbmRleCk7CisgICAgUHlfSU5DUkVGKGdyb3VwaW5kZXgpOwogICAgIHNlbGYtPmdyb3VwaW5kZXggPSBncm91cGluZGV4OwogCi0gICAgUHlfWElOQ1JFRihpbmRleGdyb3VwKTsKKyAgICBQeV9JTkNSRUYoaW5kZXhncm91cCk7CiAgICAgc2VsZi0+aW5kZXhncm91cCA9IGluZGV4Z3JvdXA7CiAKLSAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7Ci0KICAgICBpZiAoIV92YWxpZGF0ZShzZWxmKSkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU5Miw3ICsxNTgwLDcgQEAKICAgICAgICAgc2tpcCA9ICpjb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBWVFJBQ0UoKCIlbHUgKHNraXAgdG8gJXApXG4iLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylza2lwLCBjb2RlK3NraXApKTsgICAgICAgIFwKLSAgICAgICAgaWYgKHNraXAtYWRqID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpICAgICAgXAorICAgICAgICBpZiAoc2tpcC1hZGogPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCiAgICAgICAgICAgICBGQUlMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY29kZSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCkBAIC0xNjI2LDcgKzE2MTQsNyBAQAogCiAgICAgICAgIGNhc2UgU1JFX09QX0NIQVJTRVQ6CiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvU1JFX0NPREVfQklUUzsgLyogMjU2LWJpdCBiaXRtYXAgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzQsNyArMTYyMiw3IEBACiAgICAgICAgIGNhc2UgU1JFX09QX0JJR0NIQVJTRVQ6CiAgICAgICAgICAgICBHRVRfQVJHOyAvKiBOdW1iZXIgb2YgYmxvY2tzICovCiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvc2l6ZW9mKFNSRV9DT0RFKTsgLyogMjU2LWJ5dGUgdGFibGUgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgZWFjaCBieXRlIHBvaW50cyB0byBhIHZhbGlkIGJsb2NrICovCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTE2NDMsNyArMTYzMSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIG9mZnNldCA9IGFyZyAqICgyNTYvU1JFX0NPREVfQklUUyk7IC8qIDI1Ni1iaXQgYml0bWFwIHRpbWVzIGFyZyAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc5NCwxMSArMTc4MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfbGVuID0gYXJnOwogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgICAgICAvKiBIZXJlIGNvbWVzIHRoZSBwcmVmaXggc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKFB5X3VpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+ICh1aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgICAgIGNvZGUgKz0gcHJlZml4X2xlbjsKICAgICAgICAgICAgICAgICAgICAgLyogQW5kIGhlcmUgY29tZXMgdGhlIG92ZXJsYXAgdGFibGUgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgLyogRWFjaCBvdmVybGFwIHZhbHVlIHNob3VsZCBiZSA8IHByZWZpeF9sZW4gKi8KICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWZpeF9sZW47IGkrKykgewpAQCAtMTkyNyw3ICsxOTE1LDcgQEAKICAgICAgICAgICAgICAgIHRvIGFsbG93IGFyYml0cmFyeSBqdW1wcyBhbnl3aGVyZSBpbiB0aGUgY29kZTsgc28gd2UganVzdCBsb29rCiAgICAgICAgICAgICAgICBmb3IgYSBKVU1QIG9wY29kZSBwcmVjZWRpbmcgb3VyIHNraXAgdGFyZ2V0LgogICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKKyAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKICAgICAgICAgICAgICAgICBjb2RlW3NraXAtM10gPT0gU1JFX09QX0pVTVApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVlRSQUNFKCgiYm90aCB0aGVuIGFuZCBlbHNlIHBhcnRzIHByZXNlbnRcbiIpKTsKQEAgLTIwNTIsOCArMjA0MCw5IEBACiAgICAgICAgIC8qIERlZmF1bHQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoUHlMb25nX0NoZWNrKGluZGV4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Bc1NzaXplX3QoaW5kZXgpOworICAgIGlmIChQeUluZGV4X0NoZWNrKGluZGV4KSkgeworICAgICAgICByZXR1cm4gUHlOdW1iZXJfQXNTc2l6ZV90KGluZGV4LCBOVUxMKTsKKyAgICB9CiAKICAgICBpID0gLTE7CiAKQEAgLTIxMzAsNiArMjExOSwxMiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK21hdGNoX2dldGl0ZW0oTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lKQoreworICAgIHJldHVybiBtYXRjaF9nZXRzbGljZShzZWxmLCBuYW1lLCBQeV9Ob25lKTsKK30KKwogLypbY2xpbmljIGlucHV0XQogX3NyZS5TUkVfTWF0Y2guZ3JvdXBzCiAKQEAgLTI2NTIsNiArMjY0Nyw3NSBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKSBzY2FubmVyOwogfQogCitzdGF0aWMgUHlfaGFzaF90CitwYXR0ZXJuX2hhc2goUGF0dGVybk9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9oYXNoX3QgaGFzaCwgaGFzaDI7CisKKyAgICBoYXNoID0gUHlPYmplY3RfSGFzaChzZWxmLT5wYXR0ZXJuKTsKKyAgICBpZiAoaGFzaCA9PSAtMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFzaDIgPSBfUHlfSGFzaEJ5dGVzKHNlbGYtPmNvZGUsIHNpemVvZihzZWxmLT5jb2RlWzBdKSAqIHNlbGYtPmNvZGVzaXplKTsKKyAgICBoYXNoIF49IGhhc2gyOworCisgICAgaGFzaCBePSBzZWxmLT5mbGFnczsKKyAgICBoYXNoIF49IHNlbGYtPmlzYnl0ZXM7CisgICAgaGFzaCBePSBzZWxmLT5jb2Rlc2l6ZTsKKworICAgIGlmIChoYXNoID09IC0xKSB7CisgICAgICAgIGhhc2ggPSAtMjsKKyAgICB9CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3BhdHRlcm5fcmljaGNvbXBhcmUoUHlPYmplY3QgKmxlZnRvLCBQeU9iamVjdCAqcmlnaHRvLCBpbnQgb3ApCit7CisgICAgUGF0dGVybk9iamVjdCAqbGVmdCwgKnJpZ2h0OworICAgIGludCBjbXA7CisKKyAgICBpZiAob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChQeV9UWVBFKGxlZnRvKSAhPSAmUGF0dGVybl9UeXBlIHx8IFB5X1RZUEUocmlnaHRvKSAhPSAmUGF0dGVybl9UeXBlKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisKKyAgICBpZiAobGVmdG8gPT0gcmlnaHRvKSB7CisgICAgICAgIC8qIGEgcGF0dGVybiBpcyBlcXVhbCB0byBpdHNlbGYgKi8KKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhvcCA9PSBQeV9FUSk7CisgICAgfQorCisgICAgbGVmdCA9IChQYXR0ZXJuT2JqZWN0ICopbGVmdG87CisgICAgcmlnaHQgPSAoUGF0dGVybk9iamVjdCAqKXJpZ2h0bzsKKworICAgIGNtcCA9IChsZWZ0LT5mbGFncyA9PSByaWdodC0+ZmxhZ3MKKyAgICAgICAgICAgJiYgbGVmdC0+aXNieXRlcyA9PSByaWdodC0+aXNieXRlcworICAgICAgICAgICAmJiBsZWZ0LT5jb2Rlc2l6ZSA9PSByaWdodC0+Y29kZXNpemUpOworICAgIGlmIChjbXApIHsKKyAgICAgICAgLyogQ29tcGFyZSB0aGUgY29kZSBhbmQgdGhlIHBhdHRlcm4gYmVjYXVzZSB0aGUgc2FtZSBwYXR0ZXJuIGNhbgorICAgICAgICAgICBwcm9kdWNlIGRpZmZlcmVudCBjb2RlcyBkZXBlbmRpbmcgb24gdGhlIGxvY2FsZSB1c2VkIHRvIGNvbXBpbGUgdGhlCisgICAgICAgICAgIHBhdHRlcm4gd2hlbiB0aGUgcmUuTE9DQUxFIGZsYWcgaXMgdXNlZC4gRG9uJ3QgY29tcGFyZSBncm91cHMsCisgICAgICAgICAgIGluZGV4Z3JvdXAgbm9yIGdyb3VwaW5kZXg6IHRoZXkgYXJlIGRlcml2YXRlZCBmcm9tIHRoZSBwYXR0ZXJuLiAqLworICAgICAgICBjbXAgPSAobWVtY21wKGxlZnQtPmNvZGUsIHJpZ2h0LT5jb2RlLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihsZWZ0LT5jb2RlWzBdKSAqIGxlZnQtPmNvZGVzaXplKSA9PSAwKTsKKyAgICB9CisgICAgaWYgKGNtcCkgeworICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wobGVmdC0+cGF0dGVybiwgcmlnaHQtPnBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9FUSk7CisgICAgICAgIGlmIChjbXAgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAob3AgPT0gUHlfTkUpIHsKKyAgICAgICAgY21wID0gIWNtcDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhjbXApOworfQorCiAjaW5jbHVkZSAiY2xpbmljL19zcmUuYy5oIgogCiBzdGF0aWMgUHlNZXRob2REZWYgcGF0dGVybl9tZXRob2RzW10gPSB7CkBAIC0yNjk2LDcgKzI3NjAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAoaGFzaGZ1bmMpcGF0dGVybl9oYXNoLCAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCkBAIC0yNzA2LDcgKzI3NzAsNyBAQAogICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIHBhdHRlcm5fcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwpAQCAtMjcxNSw2ICsyNzc5LDEzIEBACiAgICAgcGF0dGVybl9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCisvKiBNYXRjaCBvYmplY3RzIGRvIG5vdCBzdXBwb3J0IGxlbmd0aCBvciBhc3NpZ25tZW50LCBidXQgZG8gc3VwcG9ydAorICAgX19nZXRpdGVtX18uICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtYXRjaF9hc19tYXBwaW5nID0geworICAgIE5VTEwsCisgICAgKGJpbmFyeWZ1bmMpbWF0Y2hfZ2V0aXRlbSwKKyAgICBOVUxMCit9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgbWF0Y2hfbWV0aG9kc1tdID0gewogICAgIHsiZ3JvdXAiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2dyb3VwX2RvY30sCkBAIC0yNzYwLDcgKzI4MzEsNyBAQAogICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgJm1hdGNoX2FzX21hcHBpbmcsICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCBhNzljM2E4Li5iMTk4ODU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiAjZW5kaWYKIAogI2RlZmluZSBUTFNfbWV0aG9kIFNTTHYyM19tZXRob2QKKyNkZWZpbmUgVExTX2NsaWVudF9tZXRob2QgU1NMdjIzX2NsaWVudF9tZXRob2QKKyNkZWZpbmUgVExTX3NlcnZlcl9tZXRob2QgU1NMdjIzX3NlcnZlcl9tZXRob2QKIAogc3RhdGljIGludCBYNTA5X05BTUVfRU5UUllfc2V0KGNvbnN0IFg1MDlfTkFNRV9FTlRSWSAqbmUpCiB7CkBAIC0xNDcsMTAgKzE0OSwxMiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorLyogTENPVl9FWENMX1NUQVJUICovCiBzdGF0aWMgaW50IENPTVBfZ2V0X3R5cGUoY29uc3QgQ09NUF9NRVRIT0QgKm1ldGgpCiB7CiAgICAgcmV0dXJuIG1ldGgtPnR5cGU7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmCiAKIHN0YXRpYyBwZW1fcGFzc3dvcmRfY2IgKlNTTF9DVFhfZ2V0X2RlZmF1bHRfcGFzc3dkX2NiKFNTTF9DVFggKmN0eCkKQEAgLTE4Nyw2ICsxOTEsMTkgQEAKIHsKICAgICByZXR1cm4gc3RvcmUtPnBhcmFtOwogfQorCitzdGF0aWMgaW50CitTU0xfU0VTU0lPTl9oYXNfdGlja2V0KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiAocy0+dGxzZXh0X3RpY2tsZW4gPiAwKSA/IDEgOiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworU1NMX1NFU1NJT05fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiBzLT50bHNleHRfdGlja19saWZldGltZV9oaW50OworfQorCiAjZW5kaWYgLyogT3BlblNTTCA8IDEuMS4wIG9yIExpYnJlU1NMICovCiAKIApAQCAtMjIwLDE0ICsyMzcsMTYgQEAKIGVudW0gcHlfc3NsX3ZlcnNpb24gewogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIsCiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMz0xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUywKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMsIC8qIFNTTHYyMyAqLwogI2lmIEhBVkVfVExTdjFfMgogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMgorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMiwKICNlbHNlCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTMQorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAjZW5kaWYKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UPTB4MTAsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUiwKIH07CiAKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMjkzLDI1ICszMTIsMzUgQEAKICAgICBpbnQgZW9mX3dyaXR0ZW47CiB9IFB5U1NMTWVtb3J5QklPOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworICAgIFB5U1NMQ29udGV4dCAqY3R4OworfSBQeVNTTFNlc3Npb247CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU29ja2V0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlOwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgX3NzbAogY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCiBjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKIGNsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitjbGFzcyBfc3NsLlNTTFNlc3Npb24gIlB5U1NMU2Vzc2lvbiAqIiAiJlB5U1NMU2Vzc2lvbl9UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2JmN2NiODMyNjM4ZTJlMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmRjNjdmYWZlZWFhODEwOV0qLwogCiAjaW5jbHVkZSAiY2xpbmljL19zc2wuYy5oIgogCiBzdGF0aWMgaW50IFB5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCk7CiAKKwogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQogI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKKyNkZWZpbmUgUHlTU0xTZXNzaW9uX0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU2Vzc2lvbl9UeXBlKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNPQ0tFVF9JU19OT05CTE9DS0lORywKQEAgLTQ1NSw3ICs0ODQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCitQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKICAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CiAgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKQEAgLTUzNyw3ICs1NjYsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgeworX3NldFNTTEVycm9yIChjb25zdCBjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCiAgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwpAQCAtMTU0Nyw2ICsxNTc2LDY1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorc3RhdGljIFB5T2JqZWN0ICoKK2NpcGhlcl90b19kaWN0KGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKworICAgIHVuc2lnbmVkIGxvbmcgY2lwaGVyX2lkOworICAgIGludCBhbGdfYml0cywgc3RyZW5ndGhfYml0cywgbGVuOworICAgIGNoYXIgYnVmWzUxMl0gPSB7MH07CisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGludCBhZWFkLCBuaWQ7CisgICAgY29uc3QgY2hhciAqc2tjaXBoZXIgPSBOVUxMLCAqZGlnZXN0ID0gTlVMTCwgKmt4ID0gTlVMTCwgKmF1dGggPSBOVUxMOworI2VuZGlmCisKKyAgICAvKiBjYW4gYmUgTlVMTCAqLworICAgIGNpcGhlcl9uYW1lID0gU1NMX0NJUEhFUl9nZXRfbmFtZShjaXBoZXIpOworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKKyAgICBjaXBoZXJfaWQgPSBTU0xfQ0lQSEVSX2dldF9pZChjaXBoZXIpOworICAgIFNTTF9DSVBIRVJfZGVzY3JpcHRpb24oY2lwaGVyLCBidWYsIHNpemVvZihidWYpIC0gMSk7CisgICAgbGVuID0gc3RybGVuKGJ1Zik7CisgICAgaWYgKGxlbiA+IDEgJiYgYnVmW2xlbi0xXSA9PSAnXG4nKQorICAgICAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICBzdHJlbmd0aF9iaXRzID0gU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsICZhbGdfYml0cyk7CisKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgYWVhZCA9IFNTTF9DSVBIRVJfaXNfYWVhZChjaXBoZXIpOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2NpcGhlcl9uaWQoY2lwaGVyKTsKKyAgICBza2NpcGhlciA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2RpZ2VzdF9uaWQoY2lwaGVyKTsKKyAgICBkaWdlc3QgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9reF9uaWQoY2lwaGVyKTsKKyAgICBreCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2F1dGhfbmlkKGNpcGhlcik7CisgICAgYXV0aCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIntza3Nzc3Nzc3Npc2kiCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAic09zc3Nzc3NzcyIKKyNlbmRpZgorICAgICAgICAifSIsCisgICAgICAgICJpZCIsIGNpcGhlcl9pZCwKKyAgICAgICAgIm5hbWUiLCBjaXBoZXJfbmFtZSwKKyAgICAgICAgInByb3RvY29sIiwgY2lwaGVyX3Byb3RvY29sLAorICAgICAgICAiZGVzY3JpcHRpb24iLCBidWYsCisgICAgICAgICJzdHJlbmd0aF9iaXRzIiwgc3RyZW5ndGhfYml0cywKKyAgICAgICAgImFsZ19iaXRzIiwgYWxnX2JpdHMKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgICAgICwiYWVhZCIsIGFlYWQgPyBQeV9UcnVlIDogUHlfRmFsc2UsCisgICAgICAgICJzeW1tZXRyaWMiLCBza2NpcGhlciwKKyAgICAgICAgImRpZ2VzdCIsIGRpZ2VzdCwKKyAgICAgICAgImtlYSIsIGt4LAorICAgICAgICAiYXV0aCIsIGF1dGgKKyNlbmRpZgorICAgICAgICk7Cit9CisjZW5kaWYKKwogLypbY2xpbmljIGlucHV0XQogX3NzbC5fU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0yMjU1LDYgKzIzNDMsMTUyIEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKworc3RhdGljIFNTTF9TRVNTSU9OKgorX3NzbF9zZXNzaW9uX2R1cChTU0xfU0VTU0lPTiAqc2Vzc2lvbikgeworICAgIFNTTF9TRVNTSU9OICpuZXdzZXNzaW9uID0gTlVMTDsKKyAgICBpbnQgc2xlbjsKKyAgICB1bnNpZ25lZCBjaGFyICpzZW5jID0gTlVMTCwgKnA7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3RfcDsKKworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIHNlc3Npb24iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBnZXQgbGVuZ3RoICovCisgICAgc2xlbiA9IGkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCBOVUxMKTsKKyAgICBpZiAoc2xlbiA9PSAwIHx8IHNsZW4gPiAweEZGMDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICgoc2VuYyA9IFB5TWVtX01hbGxvYyhzbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBwID0gc2VuYzsKKyAgICBpZiAoIWkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCAmcCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGNvbnN0X3AgPSBzZW5jOworICAgIG5ld3Nlc3Npb24gPSBkMmlfU1NMX1NFU1NJT04oTlVMTCwgJmNvbnN0X3AsIHNsZW4pOworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICByZXR1cm4gbmV3c2Vzc2lvbjsKKyAgZXJyb3I6CisgICAgaWYgKHNlbmMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbmMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICAvKiBnZXRfc2Vzc2lvbiBjYW4gcmV0dXJuIHNlc3Npb25zIGZyb20gYSBzZXJ2ZXItc2lkZSBjb25uZWN0aW9uLAorICAgICAqIGl0IGRvZXMgbm90IGNoZWNrIGZvciBoYW5kc2hha2UgZG9uZSBvciBjbGllbnQgc29ja2V0LiAqLworICAgIFB5U1NMU2Vzc2lvbiAqcHlzZXNzOworICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworCisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uIGFzIHdvcmthcm91bmQgZm9yIHNlc3Npb24gYnVnIGluIE9wZW5TU0wgMS4xLjAsCisgICAgICogaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvMTU1MCAqLworICAgIHNlc3Npb24gPSBTU0xfZ2V0MF9zZXNzaW9uKHNlbGYtPnNzbCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBpZiAoKHNlc3Npb24gPSBfc3NsX3Nlc3Npb25fZHVwKHNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgc2Vzc2lvbiA9IFNTTF9nZXQxX3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNlbmRpZgorICAgIHB5c2VzcyA9IFB5T2JqZWN0X0dDX05ldyhQeVNTTFNlc3Npb24sICZQeVNTTFNlc3Npb25fVHlwZSk7CisgICAgaWYgKHB5c2VzcyA9PSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFzc2VydChzZWxmLT5jdHgpOworICAgIHB5c2Vzcy0+Y3R4ID0gc2VsZi0+Y3R4OworICAgIFB5X0lOQ1JFRihweXNlc3MtPmN0eCk7CisgICAgcHlzZXNzLT5zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhweXNlc3MpOworICAgIHJldHVybiAoUHlPYmplY3QgKilweXNlc3M7Cit9CisKK3N0YXRpYyBpbnQgUHlTU0xfc2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisjZW5kaWYKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJWYWx1ZSBpcyBub3QgYSBTU0xTZXNzaW9uLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHB5c2VzcyA9IChQeVNTTFNlc3Npb24gKil2YWx1ZTsKKworICAgIGlmIChzZWxmLT5jdHgtPmN0eCAhPSBweXNlc3MtPmN0eC0+Y3R4KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNlc3Npb24gcmVmZXJzIHRvIGEgZGlmZmVyZW50IFNTTENvbnRleHQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPnNvY2tldF90eXBlICE9IFBZX1NTTF9DTElFTlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCBzZXNzaW9uIGZvciBzZXJ2ZXItc2lkZSBTU0xTb2NrZXQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmhhbmRzaGFrZV9kb25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uICovCisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChweXNlc3MtPnNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gU1NMX3NldF9zZXNzaW9uKHNlbGYtPnNzbCwgc2Vzc2lvbik7CisgICAgLyogZnJlZSBkdXBsaWNhdGUsIFNTTF9zZXRfc2Vzc2lvbigpIGJ1bXBzIHJlZiBjb3VudCAqLworICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisjZWxzZQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHB5c2Vzcy0+c2Vzc2lvbik7CisjZW5kaWYKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9zZXRfc2Vzc2lvbl9kb2MsCisiX3NldHRlcl9zZXNzaW9uKHNlc3Npb24pXG5cCitcCitHZXQgLyBzZXQgU1NMU2Vzc2lvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uX3JldXNlZChQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfc2Vzc2lvbl9yZXVzZWQoc2VsZi0+c3NsKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvYywKKyJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlPyIpOworCiBzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKICAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKQEAgLTIyNjQsNiArMjQ5OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2N9LAogICAgIHsib3duZXIiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfb3duZXIsIChzZXR0ZXIpIFB5U1NMX3NldF9vd25lciwKICAgICAgICAgICAgICAgUHlTU0xfZ2V0X293bmVyX2RvY30sCisgICAgeyJzZXNzaW9uIiwgKGdldHRlcikgUHlTU0xfZ2V0X3Nlc3Npb24sCisgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X3Nlc3Npb24sIFB5U1NMX3NldF9zZXNzaW9uX2RvY30sCisgICAgeyJzZXNzaW9uX3JldXNlZCIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvY30sCiAgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yMzIzLDYgKzI1NjEsMzMgQEAKICAqIF9TU0xDb250ZXh0IG9iamVjdHMKICAqLwogCitzdGF0aWMgaW50Citfc2V0X3ZlcmlmeV9tb2RlKFNTTF9DVFggKmN0eCwgZW51bSBweV9zc2xfY2VydF9yZXF1aXJlbWVudHMgbikKK3sKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgKCp2ZXJpZnlfY2IpKGludCwgWDUwOV9TVE9SRV9DVFggKikgPSBOVUxMOworCisgICAgc3dpdGNoKG4pIHsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX05PTkU6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX05PTkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfT1BUSU9OQUw6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfUkVRVUlSRUQ6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB2YWx1ZSBmb3IgdmVyaWZ5X21vZGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBrZWVwIGN1cnJlbnQgdmVyaWZ5IGNiICovCisgICAgdmVyaWZ5X2NiID0gU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrKGN0eCk7CisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgbW9kZSwgdmVyaWZ5X2NiKTsKKyAgICByZXR1cm4gMDsKK30KKwogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBfc3NsLl9TU0xDb250ZXh0Ll9fbmV3X18KQEAgLTIzMzcsNiArMjYwMiw3IEBACiAgICAgUHlTU0xDb250ZXh0ICpzZWxmOwogICAgIGxvbmcgb3B0aW9uczsKICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOworICAgIGludCByZXN1bHQ7CiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CiAjZW5kaWYKQEAgLTIzNTgsOCArMjYyNCwxMiBAQAogICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjJfbWV0aG9kKCkpOwogI2VuZGlmCi0gICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpCisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpIC8qIFNTTHYyMyAqLwogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX2NsaWVudF9tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKQorICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfc2VydmVyX21ldGhvZCgpKTsKICAgICBlbHNlCiAgICAgICAgIHByb3RvX3ZlcnNpb24gPSAtMTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMjM5MiwxNiArMjY2Miw1NyBAQAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKICAgICAvKiBEb24ndCBjaGVjayBob3N0IG5hbWUgYnkgZGVmYXVsdCAqLwotICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMTsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAwOworICAgICAgICBpZiAoX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIFBZX1NTTF9DRVJUX05PTkUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICAvKiBEZWZhdWx0cyAqLwotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEwgJiB+U1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUzsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wzKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKyAgICAvKiBNaW5pbWFsIHNlY3VyaXR5IGZsYWdzIGZvciBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlIGNvbnRleHQuCisgICAgICogQ2xpZW50IHNvY2tldHMgaWdub3JlIHNlcnZlci1zaWRlIHBhcmFtZXRlcnMuICovCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fQ09NUFJFU1NJT047CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9ESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfREhfVVNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTsKKyNlbmRpZgogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKIAorICAgIC8qIEEgYmFyZSBtaW5pbXVtIGNpcGhlciBsaXN0IHdpdGhvdXQgY29tcGxldGx5IGJyb2tlbiBjaXBoZXIgc3VpdGVzLgorICAgICAqIEl0J3MgZmFyIGZyb20gcGVyZmVjdCBidXQgZ2l2ZXMgdXNlcnMgYSBiZXR0ZXIgaGVhZCBzdGFydC4gKi8KKyAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKSB7CisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTDohTUQ1Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogU1NMdjIgbmVlZHMgTUQ1ICovCisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTCIpOworICAgIH0KKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgLyogU2V0IFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUy4gVGhpcyBwb3RlbnRpYWxseSBncmVhdGx5IHJlZHVjZXMgbWVtb3J5CiAgICAgICAgdXNhZ2UgZm9yIG5vIGNvc3QgYXQgYWxsLiBIb3dldmVyLCBkb24ndCBkbyB0aGlzIGZvciBPcGVuU1NMIHZlcnNpb25zCkBAIC0yNTA2LDYgKzI4MTcsNTIgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jaXBoZXJzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NmU0ZDY4YTQwNmRmYzQgaW5wdXQ9YTJhYWRjOWFmODliNzljNV0qLworeworICAgIFNTTCAqc3NsID0gTlVMTDsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc2sgPSBOVUxMOworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcjsKKyAgICBpbnQgaT0wOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqZGN0OworCisgICAgc3NsID0gU1NMX25ldyhzZWxmLT5jdHgpOworICAgIGlmIChzc2wgPT0gTlVMTCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBzayA9IFNTTF9nZXRfY2lwaGVycyhzc2wpOworCisgICAgcmVzdWx0ID0gUHlMaXN0X05ldyhza19TU0xfQ0lQSEVSX251bShzaykpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKHNrKTsgaSsrKSB7CisgICAgICAgIGNpcGhlciA9IHNrX1NTTF9DSVBIRVJfdmFsdWUoc2ssIGkpOworICAgICAgICBkY3QgPSBjaXBoZXJfdG9fZGljdChjaXBoZXIpOworICAgICAgICBpZiAoZGN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlc3VsdCwgaSwgZGN0KTsKKyAgICB9CisKKyAgZXhpdDoKKyAgICBpZiAoc3NsICE9IE5VTEwpCisgICAgICAgIFNTTF9mcmVlKHNzbCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorI2VuZGlmCisKKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKIHN0YXRpYyBpbnQKIGRvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLApAQCAtMjY2MiwyOCArMzAxOSwxNiBAQAogc3RhdGljIGludAogc2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZywgdm9pZCAqYykKIHsKLSAgICBpbnQgbiwgbW9kZTsKKyAgICBpbnQgbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImkiLCAmbikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobiA9PSBQWV9TU0xfQ0VSVF9OT05FKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfT1BUSU9OQUwpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7Ci0gICAgZWxzZSBpZiAobiA9PSBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKG1vZGUgPT0gU1NMX1ZFUklGWV9OT05FICYmIHNlbGYtPmNoZWNrX2hvc3RuYW1lKSB7CisgICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHZlcmlmeV9tb2RlIHRvIENFUlRfTk9ORSB3aGVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja19ob3N0bmFtZSBpcyBlbmFibGVkLiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIG1vZGUsIE5VTEwpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjczLDYgKzQwMTgsNyBAQAogICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCiAgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzkzOCw2ICs0Mjg0LDE5NCBAQAogfTsKIAogCisvKgorICogU1NMIFNlc3Npb24gb2JqZWN0CisgKi8KKworc3RhdGljIHZvaWQKK1B5U1NMU2Vzc2lvbl9kZWFsbG9jKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIFB5X1hERUNSRUYoc2VsZi0+Y3R4KTsKKyAgICBpZiAoc2VsZi0+c2Vzc2lvbiAhPSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2VsZi0+c2Vzc2lvbik7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9yaWNoY29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBpbnQgb3ApCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmIChsZWZ0ID09IE5VTEwgfHwgcmlnaHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sobGVmdCkgfHwgIVB5U1NMU2Vzc2lvbl9DaGVjayhyaWdodCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChsZWZ0ID09IHJpZ2h0KSB7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbGVmdF9pZCwgKnJpZ2h0X2lkOworICAgICAgICB1bnNpZ25lZCBpbnQgbGVmdF9sZW4sIHJpZ2h0X2xlbjsKKyAgICAgICAgbGVmdF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKWxlZnQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZWZ0X2xlbik7CisgICAgICAgIHJpZ2h0X2lkID0gU1NMX1NFU1NJT05fZ2V0X2lkKCgoUHlTU0xTZXNzaW9uICopcmlnaHQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmlnaHRfbGVuKTsKKyAgICAgICAgaWYgKGxlZnRfbGVuID09IHJpZ2h0X2xlbikgeworICAgICAgICAgICAgcmVzdWx0ID0gbWVtY21wKGxlZnRfaWQsIHJpZ2h0X2lkLCBsZWZ0X2xlbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChvcCkgeworICAgICAgY2FzZSBQeV9FUToKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgUHlfTkU6CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X0xUOgorICAgICAgY2FzZSBQeV9MRToKKyAgICAgIGNhc2UgUHlfR1Q6CisgICAgICBjYXNlIFB5X0dFOgorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fdHJhdmVyc2UoUHlTU0xTZXNzaW9uICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fY2xlYXIoUHlTU0xTZXNzaW9uICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmN0eCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZShQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lKHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2MsCisiU2Vzc2lvbiBjcmVhdGlvbiB0aW1lIChzZWNvbmRzIHNpbmNlIGVwb2NoKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoU1NMX1NFU1NJT05fZ2V0X3RpbWVvdXQoc2VsZi0+c2Vzc2lvbikpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvYywKKyJTZXNzaW9uIHRpbWVvdXQgKGRlbHRhIGluIHNlY29uZHMpLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHVuc2lnbmVkIGxvbmcgaGludCA9IFNTTF9TRVNTSU9OX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChzZWxmLT5zZXNzaW9uKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoaGludCk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvYywKKyJUaWNrZXQgbGlmZSB0aW1lIGhpbnQuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppZDsKKyAgICB1bnNpZ25lZCBpbnQgbGVuOworICAgIGlkID0gU1NMX1NFU1NJT05fZ2V0X2lkKHNlbGYtPnNlc3Npb24sICZsZW4pOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopaWQsIGxlbik7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWRfZG9jLAorIlNlc3Npb24gaWQiKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfU0VTU0lPTl9oYXNfdGlja2V0KHNlbGYtPnNlc3Npb24pKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jLAorIkRvZXMgdGhlIHNlc3Npb24gY29udGFpbiBhIHRpY2tldD8iKTsKKworCitzdGF0aWMgUHlHZXRTZXREZWYgUHlTU0xTZXNzaW9uX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Imhhc190aWNrZXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldF9kb2N9LAorICAgIHsiaWQiLCAgIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvY30sCisgICAgeyJ0aWNrZXRfbGlmZXRpbWVfaGludCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQsCisgICAgICAgICAgICAgIE5VTEwsIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnRfZG9jfSwKKyAgICB7InRpbWUiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWUsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2N9LAorICAgIHsidGltZW91dCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvY30sCisgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc3NsLlNlc3Npb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihQeVNTTFNlc3Npb24pLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIChkZXN0cnVjdG9yKVB5U1NMU2Vzc2lvbl9kZWFsbG9jLCAgICAgICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgKHRyYXZlcnNlcHJvYylQeVNTTFNlc3Npb25fdHJhdmVyc2UsICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIChpbnF1aXJ5KVB5U1NMU2Vzc2lvbl9jbGVhciwgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICBQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KKyAgICBQeVNTTFNlc3Npb25fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLworfTsKKworCiAvKiBoZWxwZXIgcm91dGluZXMgZm9yIHNlZWRpbmcgdGhlIFNTTCBQUk5HICovCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLlJBTkRfYWRkCkBAIC00MDU5LDYgKzQ1OTMsNyBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUdECisvKiBMQ09WX0VYQ0xfU1RBUlQgKi8KIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuUkFORF9lZ2QKICAgICBwYXRoOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNDb252ZXJ0ZXIiKQpAQCAtNDA4NCw2ICs0NjE5LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhieXRlcyk7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fRUdEICovCiAKIApAQCAtNDU0MiwxMyArNTA3OCwxMiBAQAogCiAgICAgaWYgKF9zc2xfbG9ja3MgPT0gTlVMTCkgewogICAgICAgICBfc3NsX2xvY2tzX2NvdW50ID0gQ1JZUFRPX251bV9sb2NrcygpOwotICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fTmV3KFB5VGhyZWFkX3R5cGVfbG9jaywgX3NzbF9sb2Nrc19jb3VudCk7CisgICAgICAgIF9zc2xfbG9ja3MgPSBQeU1lbV9DYWxsb2MoX3NzbF9sb2Nrc19jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSk7CiAgICAgICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQoX3NzbF9sb2NrcywgMCwKLSAgICAgICAgICAgICAgIHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spICogX3NzbF9sb2Nrc19jb3VudCk7CiAgICAgICAgIGZvciAoaSA9IDA7ICBpIDwgX3NzbF9sb2Nrc19jb3VudDsgIGkrKykgewogICAgICAgICAgICAgX3NzbF9sb2Nrc1tpXSA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKICAgICAgICAgICAgIGlmIChfc3NsX2xvY2tzW2ldID09IE5VTEwpIHsKQEAgLTQ2MjMsNiArNTE1OCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMTWVtb3J5QklPX1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTZXNzaW9uX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC00Njk0LDYgKzUyMzIsMTAgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFNlc3Npb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xTZXNzaW9uX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1dBTlRfUkVBRCIsCkBAIC00Nzk4LDYgKzUzNDAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU19DTElFTlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfU0VSVkVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTdjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEpOwogI2lmIEhBVkVfVExTdjFfMgpAQCAtNDgyMCw2ICs1MzY2LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVElDS0VUIiwgU1NMX09QX05PX1RJQ0tFVCk7CiAjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfRUNESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0VDREhfVVNFKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBmOTY1NTQxLi43OTZkMTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtNjAsNiArNjAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7Cit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzdF9ib29sOwogCiAjZGVmaW5lIFNIT1JUX0FMSUdOIChzaXplb2Yoc3Rfc2hvcnQpIC0gc2l6ZW9mKHNob3J0KSkKICNkZWZpbmUgSU5UX0FMSUdOIChzaXplb2Yoc3RfaW50KSAtIHNpemVvZihpbnQpKQpAQCAtNjgsMjIgKzY5LDEyIEBACiAjZGVmaW5lIERPVUJMRV9BTElHTiAoc2l6ZW9mKHN0X2RvdWJsZSkgLSBzaXplb2YoZG91YmxlKSkKICNkZWZpbmUgVk9JRF9QX0FMSUdOIChzaXplb2Yoc3Rfdm9pZF9wKSAtIHNpemVvZih2b2lkICopKQogI2RlZmluZSBTSVpFX1RfQUxJR04gKHNpemVvZihzdF9zaXplX3QpIC0gc2l6ZW9mKHNpemVfdCkpCisjZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzdF9ib29sKSAtIHNpemVvZihfQm9vbCkpCiAKIC8qIFdlIGNhbid0IHN1cHBvcnQgcSBhbmQgUSBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgdGhlIGNvbXBpbGVyIGRvZXM7CiAgICBpbiBzdGQgbW9kZSwgdGhleSdyZSA4IGJ5dGVzIG9uIGFsbCBwbGF0Zm9ybXMuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzX2Jvb2w7Ci0jZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzX2Jvb2wpIC0gc2l6ZW9mKEJPT0xfVFlQRSkpCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI2RlZmluZSBCT09MX0FMSUdOIDAKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogI2lmZGVmIF9fcG93ZXJjCiAjcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKQEAgLTE2NCwxNCArMTU1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIHYgPSBnZXRfcHlsb25nKHYpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0xNzksNyArMTY4LDcgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09IChQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0xOTIsOSArMTgxLDkgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjAyLDcgKzE5MSw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0yMTIsOCArMjAxLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCiAKIHN0YXRpYyBpbnQKQEAgLTI2Nyw2ICsyNTQsMzMgQEAKIC8qIEZsb2F0aW5nIHBvaW50IGhlbHBlcnMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gX1B5RmxvYXRfVW5wYWNrMigodW5zaWduZWQgY2hhciAqKXAsIGxlKTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Cit9CisKK3N0YXRpYyBpbnQKK3BhY2tfaGFsZmZsb2F0KGNoYXIgKnAsICAgICAgLyogc3RhcnQgb2YgMi1ieXRlIHN0cmluZyAqLworICAgICAgICAgICAgICAgUHlPYmplY3QgKnYsICAvKiB2YWx1ZSB0byBwYWNrICovCisgICAgICAgICAgICAgICBpbnQgbGUpICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGEgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gX1B5RmxvYXRfUGFjazIoeCwgKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiB1bnBhY2tfZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDQtYnl0ZSBzdHJpbmcgKi8KICAgICAgICAgIGludCBsZSkgICAgICAgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KIHsKQEAgLTQzNiw0MCArNDUwLDQ2IEBACiAvKiBOYXRpdmUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgcSBvciBRIHVubGVzcyB0aGUgcGxhdGZvcm0gQyBzdXBwb3J0cwogICAgbG9uZyBsb25nIChvciwgb24gV2luZG93cywgX19pbnQ2NCkuICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBudV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfYm9vbChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoeCAhPSAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgorbnVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CisjZWxzZQorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBudV9mbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeDsKQEAgLTY0MywxMiArNjYzLDEwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgaW50CiBucF9sb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CkBAIC02NTgsMjAgKzY3NiwxOSBAQAogc3RhdGljIGludAogbnBfdWxvbmdsb25nKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogCiBzdGF0aWMgaW50CiBucF9ib29sKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgaW50IHk7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICB5ID0gUHlPYmplY3RfSXNUcnVlKHYpOwogICAgIGlmICh5IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjgxLDYgKzY5OCwxNiBAQAogfQogCiBzdGF0aWMgaW50CitucF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworI2Vsc2UKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAogbnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBmbG9hdCB4ID0gKGZsb2F0KVB5RmxvYXRfQXNEb3VibGUodik7CkBAIC03MjMsNyArNzUwLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGZvcm1hdGRlZiBuYXRpdmVfdGFibGVbXSA9IHsKK3N0YXRpYyBjb25zdCBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CiAgICAgeyd4JywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBOVUxMfSwKICAgICB7J2InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X2J5dGUsICAgICAgICBucF9ieXRlfSwKICAgICB7J0InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X3VieXRlLCAgICAgICBucF91Ynl0ZX0sCkBAIC03MzgsMTEgKzc2NSwxMCBAQAogICAgIHsnTCcsICAgICAgIHNpemVvZihsb25nKSwgICBMT05HX0FMSUdOLCAgICAgbnVfdWxvbmcsICAgICAgIG5wX3Vsb25nfSwKICAgICB7J24nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NzaXplX3QsICAgICBucF9zc2l6ZV90fSwKICAgICB7J04nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NpemVfdCwgICAgICBucF9zaXplX3R9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgeydxJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKLSAgICB7J1EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKLSNlbmRpZgotICAgIHsnPycsICAgICAgIHNpemVvZihCT09MX1RZUEUpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydxJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKKyAgICB7J1EnLCAgICAgICBzaXplb2YobG9uZyBsb25nKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKKyAgICB7Jz8nLCAgICAgICBzaXplb2YoX0Jvb2wpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydlJywgICAgICAgc2l6ZW9mKHNob3J0KSwgIFNIT1JUX0FMSUdOLCAgICBudV9oYWxmZmxvYXQsICAgbnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICBzaXplb2YoZmxvYXQpLCAgRkxPQVRfQUxJR04sICAgIG51X2Zsb2F0LCAgICAgICBucF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgc2l6ZW9mKGRvdWJsZSksIERPVUJMRV9BTElHTiwgICBudV9kb3VibGUsICAgICAgbnBfZG91YmxlfSwKICAgICB7J1AnLCAgICAgICBzaXplb2Yodm9pZCAqKSwgVk9JRF9QX0FMSUdOLCAgIG51X3ZvaWRfcCwgICAgICBucF92b2lkX3B9LApAQCAtNzgzLDggKzgwOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTc5MiwzNyArODE3LDMwIEBACiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgKmJ5dGVzKys7CiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05MjIsNiArOTQwLDEyIEBACiB9CiAKIHN0YXRpYyBpbnQKK2JwX2hhbGZmbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAwKTsKK30KKworc3RhdGljIGludAogYnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBkb3VibGUgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CkBAIC05NzIsNiArOTk2LDcgQEAKICAgICB7J3EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2xvbmdsb25nLCAgICBicF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV91bG9uZ2xvbmcsICAgYnBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwKKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2hhbGZmbG9hdCwgICBicF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfZmxvYXQsICAgICAgIGJwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2RvdWJsZSwgICAgICBicF9kb3VibGV9LAogICAgIHswfQpAQCAtMTAxMSw4ICsxMDM2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsdV9sb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewpAQCAtMTAyMCwzNyArMTA0NCwzMCBAQAogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICAvKiBFeHRlbmQgdGhlIHNpZ24gYml0LiAqLwogICAgIGlmIChTSVpFT0ZfTE9OR19MT05HID4gZi0+c2l6ZSkKLSAgICAgICAgeCB8PSAtKHggJiAoKFBZX0xPTkdfTE9ORykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKKyAgICAgICAgeCB8PSAtKHggJiAoKGxvbmcgbG9uZykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKICAgICBpZiAoeCA+PSBMT05HX01JTiAmJiB4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMSAgLyogc2lnbmVkICovKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbHVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CiAgICAgICAgIHggPSAoeDw8OCkgfCBieXRlc1stLWldOwogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICBpZiAoeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMCAgLyogc2lnbmVkICovKTsKLSNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAxKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNDIsNiArMTE1OSwxMiBAQAogfQogCiBzdGF0aWMgaW50CitscF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMSk7Cit9CisKK3N0YXRpYyBpbnQKIGxwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtMTE4Miw2ICsxMjA1LDcgQEAKICAgICB7J1EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X3Vsb25nbG9uZywgICBscF91bG9uZ2xvbmd9LAogICAgIHsnPycsICAgICAgIDEsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfYm9vbCwgICAgICAgIGJwX2Jvb2x9LCAvKiBTdGQgcmVwIG5vdCBlbmRpYW4gZGVwLAogICAgICAgICBidXQgcG90ZW50aWFsbHkgZGlmZmVyZW50IGZyb20gbmF0aXZlIHJlcCAtLSByZXVzZSBieF9ib29sIGZ1bmNzLiAqLworICAgIHsnZScsICAgICAgIDIsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfaGFsZmZsb2F0LCAgIGxwX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgNCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV9mbG9hdCwgICAgICAgbHBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZG91YmxlLCAgICAgIGxwX2RvdWJsZX0sCiAgICAgezB9CkBAIC0xMTg5LDcgKzEyMTMsNyBAQAogCiAKIHN0YXRpYyBjb25zdCBmb3JtYXRkZWYgKgotd2hpY2h0YWJsZShjaGFyICoqcGZtdCkKK3doaWNodGFibGUoY29uc3QgY2hhciAqKnBmbXQpCiB7CiAgICAgY29uc3QgY2hhciAqZm10ID0gKCpwZm10KSsrOyAvKiBNYXkgYmUgYmFja2VkIG91dCBvZiBsYXRlciAqLwogICAgIHN3aXRjaCAoKmZtdCkgewpAQCAtMTI2OCw3ICsxMjkyLDcgQEAKIAogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPnNfZm9ybWF0KTsKIAotICAgIGYgPSB3aGljaHRhYmxlKChjaGFyICoqKSZmbXQpOworICAgIGYgPSB3aGljaHRhYmxlKCZmbXQpOwogCiAgICAgcyA9IGZtdDsKICAgICBzaXplID0gMDsKQEAgLTE0NTYsNyArMTQ4MCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjaGFyICpzdGFydGZyb20pIHsKK3NfdW5wYWNrX2ludGVybmFsKFB5U3RydWN0T2JqZWN0ICpzb3NlbGYsIGNvbnN0IGNoYXIgKnN0YXJ0ZnJvbSkgewogICAgIGZvcm1hdGNvZGUgKmNvZGU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlUdXBsZV9OZXcoc29zZWxmLT5zX2xlbik7CkBAIC0yMjM5LDcgKzIyNjMsNyBAQAogICB4OiBwYWQgYnl0ZSAobm8gZGF0YSk7IGM6Y2hhcjsgYjpzaWduZWQgYnl0ZTsgQjp1bnNpZ25lZCBieXRlO1xuXAogICA/OiBfQm9vbCAocmVxdWlyZXMgQzk5OyBpZiBub3QgYXZhaWxhYmxlLCBjaGFyIGlzIHVzZWQgaW5zdGVhZClcblwKICAgaDpzaG9ydDsgSDp1bnNpZ25lZCBzaG9ydDsgaTppbnQ7IEk6dW5zaWduZWQgaW50O1xuXAotICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCisgIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZTsgZTpoYWxmLWZsb2F0LlxuXAogU3BlY2lhbCBjYXNlcyAocHJlY2VkaW5nIGRlY2ltYWwgY291bnQgaW5kaWNhdGVzIGxlbmd0aCk6XG5cCiAgIHM6c3RyaW5nIChhcnJheSBvZiBjaGFyKTsgcDogcGFzY2FsIHN0cmluZyAod2l0aCBjb3VudCBieXRlKS5cblwKIFNwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXApAQCAtMjI3OSw3ICsyMzAzLDcgQEAKIAogICAgIC8qIENoZWNrIGVuZGlhbiBhbmQgc3dhcCBpbiBmYXN0ZXIgZnVuY3Rpb25zICovCiAgICAgewotICAgICAgICBmb3JtYXRkZWYgKm5hdGl2ZSA9IG5hdGl2ZV90YWJsZTsKKyAgICAgICAgY29uc3QgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CiAgICAgICAgIGZvcm1hdGRlZiAqb3RoZXIsICpwdHI7CiAjaWYgUFlfTElUVExFX0VORElBTgogICAgICAgICBvdGhlciA9IGxpbGVuZGlhbl90YWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwppbmRleCA0M2RiOGE4Li40ZTFjZTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC04NTAsNiArODUwLDcgQEAKICAgICBQeV9zc2l6ZV90ICpkZXN0OwogICAgIFB5X3NzaXplX3QgeCwgaTsKIAorICAgIC8qIG5kaW0gPSBsZW4gPD0gTkRfTUFYX05ESU0sIHNvIFB5TWVtX05ldygpIGlzIGFjdHVhbGx5IG5vdCBuZWVkZWQuICovCiAgICAgZGVzdCA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBsZW4pOwogICAgIGlmIChkZXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IDA2MGE5MmQuLmYwOTIwNWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtNjAsOSArNjAsNyBAQAogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9ORywgbG9uZyk7CiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9WT0lEX1AsIHZvaWQqKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1RJTUVfVCwgdGltZV90KTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9OR19MT05HLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIGxvbmcgbG9uZyk7CiAKICN1bmRlZiBDSEVDS19TSVpFT0YKIApAQCAtMTAwLDIyICs5OCwxNCBAQAogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzEsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzIsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzQsIDApOwotI2lmZGVmIEhBVkVfSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQzMl9ULCA0KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQzMl9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQzMl9ULCAwKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQ2NF9ULCA4KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQ2NF9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQ2NF9ULCAwKTsKLSNlbmRpZgorICAgIENIRUNLX1NJWkVPRihpbnQzMl90LCA0KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQzMl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQzMl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50NjRfdCwgOCk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50NjRfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50NjRfdCwgMCk7CiAKICAgICAvKiBwb2ludGVyL3NpemUgdHlwZXMgKi8KICAgICBDSEVDS19TSVpFT0Yoc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CkBAIC0xMjMsMTAgKzExMywxMCBAQAogICAgIENIRUNLX1NJWkVPRihQeV9zc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfc3NpemVfdCwgMSk7CiAKLSAgICBDSEVDS19TSVpFT0YoUHlfdWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUHlfdWludHB0cl90LCAwKTsKLSAgICBDSEVDS19TSVpFT0YoUHlfaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV9pbnRwdHJfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnRwdHJfdCwgMCk7CisgICAgQ0hFQ0tfU0laRU9GKGludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50cHRyX3QsIDEpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMjQ4LDEzICsyMzgsMzcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorZGljdF9nZXRpdGVtX2tub3duaGFzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm1wLCAqa2V5LCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgaGFzaDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09uOmRpY3RfZ2V0aXRlbV9rbm93bmhhc2giLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbXAsICZrZXksICZoYXNoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1wLCBrZXksIChQeV9oYXNoX3QpaGFzaCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9YSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogc3RhdGljIFB5T2JqZWN0KgogZGljdF9oYXNzcGxpdHRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6ZGljdF9oYXNzcGxpdHRhYmxlIiwgJlB5RGljdF9UeXBlLCAmYXJnKSkgeworICAgIGlmICghUHlEaWN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJkaWN0X2hhc3NwbGl0dGFibGUoKSBhcmd1bWVudCBtdXN0IGJlIGRpY3QsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoX1B5RGljdF9IYXNTcGxpdFRhYmxlKChQeURpY3RPYmplY3QqKWFyZykpOwogfQogCkBAIC0zNjYsMTIgKzM4MCwxMiBAQAogfQogCiAKLS8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQorLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIAogICAgTm90ZSB0aGF0IHRoZSBtZWF0IG9mIHRoZSB0ZXN0IGlzIGNvbnRhaW5lZCBpbiB0ZXN0Y2FwaV9sb25nLmguCiAgICBUaGlzIGlzIHJldm9sdGluZywgYnV0IGRlbGljYXRlIGNvZGUgZHVwbGljYXRpb24gaXMgd29yc2U6ICAiYWxtb3N0Ci0gICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IFBZX0xPTkdfTE9ORywgYnV0IHRoZSB1YmlxdWl0b3VzCisgICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IGxvbmcgbG9uZywgYnV0IHRoZSB1YmlxdWl0b3VzCiAgICBkZXBlbmRlbmNlIG9uIHR5cGUgbmFtZXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgYSBwYXJhbWV0ZXJpemVkCiAgICBmdW5jdGlvbi4gIEEgZ2lhbnQgbWFjcm8gd291bGQgYmUgZXZlbiB3b3JzZSB0aGFuIHRoaXMuICBBIEMrKyB0ZW1wbGF0ZQogICAgd291bGQgYmUgcGVyZmVjdC4KQEAgLTQxMSw4ICs0MjUsNiBAQAogI3VuZGVmIEZfVV9UT19QWQogI3VuZGVmIEZfUFlfVE9fVQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlX3Rlc3RfbG9uZ2xvbmdfZXJyb3IoY29uc3QgY2hhciogbXNnKQogewpAQCAtNDIwLDcgKzQzMiw3IEBACiB9CiAKICNkZWZpbmUgVEVTVE5BTUUgICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpX2lubmVyCi0jZGVmaW5lIFRZUEVOQU1FICAgICAgICBQWV9MT05HX0xPTkcKKyNkZWZpbmUgVFlQRU5BTUUgICAgICAgIGxvbmcgbG9uZwogI2RlZmluZSBGX1NfVE9fUFkgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZwogI2RlZmluZSBGX1BZX1RPX1MgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICNkZWZpbmUgRl9VX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwpAQCAtNjA3LDcgKzYxOSw3IEBACiB9CiAKIC8qIFRlc3QgdGhlIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgQVBJLiBHZW5lcmFsIGNvbnZlcnNpb24gdG8KLSAgIFBZX0xPTkdfTE9ORyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKKyAgIGxvbmcgbG9uZyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKICAgIGNvbmNlbnRyYXRlIG9uIHByb3BlciBoYW5kbGluZyBvZiBvdmVyZmxvdy4KICovCiAKQEAgLTYxNSw3ICs2MjcsNyBAQAogdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpudW0sICpvbmUsICp0ZW1wOwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICBsb25nIGxvbmcgdmFsdWU7CiAgICAgaW50IG92ZXJmbG93OwogCiAgICAgLyogVGVzdCB0aGF0IG92ZXJmbG93IGlzIHNldCBwcm9wZXJseSBmb3IgYSBsYXJnZSB2YWx1ZS4gKi8KQEAgLTgzMyw3ICs4NDUsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0vKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgUFlfTE9OR19MT05HCisvKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgbG9uZyBsb25nCiAgICBmb3IgYm90aCBsb25nIGFuZCBpbnQgYXJndW1lbnRzLiAgVGhlIHRlc3QgbWF5IGxlYWsgYSBsaXR0bGUgbWVtb3J5IGlmCiAgICBpdCBmYWlscy4KICovCkBAIC04NDEsNyArODUzLDcgQEAKIHRlc3RfTF9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm51bTsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTg3OSw4ICs4OTEsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0jZW5kaWYgIC8qIGlmZGVmIEhBVkVfTE9OR19MT05HICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByZXR1cm5fbm9uZSh2b2lkICp1bnVzZWQpCiB7CkBAIC0xMDEwLDcgKzEwMjAsNyBAQAogZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiKGlpKWl8KGkoaWkpKShpaWkpaSI7CiAgICAgaW50IGludF9hcmdzWzEwXT17LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTF9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmbXQsIGtleXdvcmRzLApAQCAtMTAzNyw2ICsxMDQ3LDIxIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKIH0KIAorLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7IiIsICIiLCAia2V5d29yZCIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGlpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZCk7Cit9CisKIC8qIEZ1bmN0aW9ucyB0byBjYWxsIFB5QXJnX1BhcnNlVHVwbGUgd2l0aCBpbnRlZ2VyIGZvcm1hdCBjb2RlcywKICAgIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICovCkBAIC0xMTMwLDExICsxMTU1LDEwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CkBAIC0xMTQzLDEyICsxMTY3LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19LKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOwogfQotI2VuZGlmCiAKIC8qIFRoaXMgZnVuY3Rpb24gbm90IG9ubHkgdGVzdHMgdGhlICdrJyBnZXRhcmdzIGNvZGUsIGJ1dCBhbHNvIHRoZQogICAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgZnVuY3Rpb25zLiAqLwpAQCAtMTE3MCw3ICsxMTkzLDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gVUxPTkdfTUFYKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfa19jb2RlIiwKLSAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOworICAgICAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwogCiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgbnVtKTsKIApAQCAtMTE4OSw3ICsxMjEyLDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gKHVuc2lnbmVkIGxvbmcpLTB4NDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0yMjAyLDcgKzIyMjUsNyBAQAogICAgIFB5T2JqZWN0ICpyYzsKICAgICBpbnQgc3VjY2VzczsKICAgICBQeUdJTFN0YXRlX1NUQVRFIHMgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwotICAgIHJjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKWNhbGxhYmxlLCAiIik7CisgICAgcmMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKChQeU9iamVjdCAqKWNhbGxhYmxlKTsKICAgICBzdWNjZXNzID0gKHJjICE9IE5VTEwpOwogICAgIFB5X1hERUNSRUYocmMpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShzKTsKQEAgLTIzMzYsMTAgKzIzNTksOCBAQAogICAgIENIRUNLXzFfRk9STUFUKCIlenUiLCBzaXplX3QpOwogCiAgICAgLyogIiVsbGQiIGFuZCAiJWxsdSIgc3VwcG9ydCBhZGRlZCBpbiBQeXRob24gMi43LiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgUFlfTE9OR19MT05HKTsKLSNlbmRpZgorICAgIENIRUNLXzFfRk9STUFUKCIlbGx1IiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICBDSEVDS18xX0ZPUk1BVCgiJWxsZCIsIGxvbmcgbG9uZyk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIApAQCAtMjM4NCw3ICsyNDA1LDcgQEAKICAgICByZXN1bHQgPSBQeU9TX3N0cmluZ190b19kb3VibGUoU1RSLCBOVUxMLCBOVUxMKTsgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlc3VsdCAhPSAoZG91YmxlKWV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBtc2cgPSAiY29udmVyc2lvbiBvZiAiIFNUUiAiIHRvIGZsb2F0IGZhaWxlZCI7ICAgICAgICAgIFwKICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtMjk3Niw3ICsyOTk3LDkgQEAKIHN0YXRpYyBpbnQKIGNoZWNrX3RpbWVfcm91bmRpbmcoaW50IHJvdW5kKQogewotICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgICAgICAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgcm91bmRpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTM0NzEsNyArMzQ5NCw3IEBACiAgICAgLyogQWxsb2NhdGUgYSBQeXRob24gdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZCAqLwogICAgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjaywgIiIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogICAgIFB5X0NMRUFSKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrKTsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkgewpAQCAtMzc2MSw3ICszNzg0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X3B5dGltZV9hc3NlY29uZHNkb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHRzOwogICAgIGRvdWJsZSBkOwogCkBAIC0zNzc1LDcgKzM3OTgsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CkBAIC0zNzg5LDcgKzM4MTIsNyBAQAogICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbCh0LCAmdHYsIHJvdW5kKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygoUFlfTE9OR19MT05HKXR2LnR2X3NlYyk7CisgICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyBsb25nKXR2LnR2X3NlYyk7CiAgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgc2Vjb25kcywgdHYudHZfdXNlYyk7CkBAIC0zNzk5LDcgKzM4MjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogCkBAIC0zODE1LDcgKzM4MzgsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdCwgbXM7CiAKQEAgLTM4MzMsNyArMzg1Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzg1Nyw2ICszODgwLDE1MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggLSAxKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYnVmZmVyX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZmZlciBvdmVyZmxvdyB0byBjaGVjayB0aGF0IFB5TWVtX0ZyZWUoKSBkZXRlY3RzCisgICAgICAgdGhlIG92ZXJmbG93IHdoZW4gZGVidWcgaG9va3MgYXJlIGluc3RhbGxlZC4gKi8KKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTYpOworICAgIGJ1ZmZlclsxNl0gPSAneCc7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX2FwaV9taXN1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgbWlzdXNhZ2Ugb2YgUHl0aG9uIGFsbG9jYXRvcnM6CisgICAgICAgYWxsb2NvY2F0ZSB3aXRoIFB5TWVtIGJ1dCByZWxlYXNlIHdpdGggUHlNZW1fUmF3LiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgUHlNZW1fUmF3RnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX21hbGxvY193aXRob3V0X2dpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWcgdG8gdGVzdCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnM6CisgICAgICAgY2FsbCBQeU1lbV9NYWxsb2MoKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5T2JqZWN0X01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdHJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmVsZWFzZV9naWwgPSAwOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPbnxpIiwgJmRvbWFpbiwgJnB0cl9vYmosICZzaXplLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1RyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIsIHNpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIl9QeVRyYWNlTWFsbG9jX1RyYWNrIGVycm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdW50cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVW50cmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZ2V0X3ZlcnNpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RGljdE9iamVjdCAqZGljdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPISIsICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZlcnNpb24gPSBkaWN0LT5tYV92ZXJzaW9uX3RhZzsKKworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodW5zaWduZWQgUFlfTE9OR19MT05HKSA+PSBzaXplb2YodmVyc2lvbikpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl2ZXJzaW9uKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTM4NjcsNiArNDAzNiw3IEBACiAgICAgeyJ0ZXN0X2RhdGV0aW1lX2NhcGkiLCAgdGVzdF9kYXRldGltZV9jYXBpLCAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9saXN0X2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9saXN0X2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2RpY3RfaXRlcmF0aW9uIiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2RpY3RfaXRlcmF0aW9uLE1FVEhfTk9BUkdTfSwKKyAgICB7ImRpY3RfZ2V0aXRlbV9rbm93bmhhc2giLCAgZGljdF9nZXRpdGVtX2tub3duaGFzaCwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImRpY3RfaGFzc3BsaXR0YWJsZSIsICAgICAgZGljdF9oYXNzcGxpdHRhYmxlLCAgICAgICAgICAgICAgTUVUSF9PfSwKICAgICB7InRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCkBAIC0zOTAzLDYgKzQwNzMsOSBAQAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0YXJnc19rZXl3b3JkX29ubHkiLCAoUHlDRnVuY3Rpb24pZ2V0YXJnc19rZXl3b3JkX29ubHksCiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCisgICAgeyJnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMiLAorICAgICAgKFB5Q0Z1bmN0aW9uKWdldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcywKKyAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3NfYiIsICAgICAgICAgICAgICAgZ2V0YXJnc19iLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfQiIsICAgICAgICAgICAgICAgZ2V0YXJnc19CLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfaCIsICAgICAgICAgICAgICAgZ2V0YXJnc19oLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTM5MTMsMTQgKzQwODYsMTIgQEAKICAgICB7ImdldGFyZ3NfbCIsICAgICAgICAgICAgICAgZ2V0YXJnc19sLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfbiIsICAgICAgICAgICAgICAgZ2V0YXJnc19uLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfcCIsICAgICAgICAgICAgICAgZ2V0YXJnc19wLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsiZ2V0YXJnc19MIiwgICAgICAgICAgICAgICBnZXRhcmdzX0wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19LIiwgICAgICAgICAgICAgICBnZXRhcmdzX0ssICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGVzdF9sb25nbG9uZ19hcGkiLCAgICAgICB0ZXN0X2xvbmdsb25nX2FwaSwgICAgICAgICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3ciLAogICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93LCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X0xfY29kZSIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X0xfY29kZSwgICAgICAgIE1FVEhfTk9BUkdTfSwKLSNlbmRpZgogICAgIHsiZ2V0YXJnc19mIiwgICAgICAgICAgICAgICBnZXRhcmdzX2YsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19kIiwgICAgICAgICAgICAgICBnZXRhcmdzX2QsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19EIiwgICAgICAgICAgICAgICBnZXRhcmdzX0QsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtNDA1MSw2ICs0MjIyLDE0IEBACiAgICAgeyJQeVRpbWVfQXNNaWxsaXNlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pbGxpc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7IlB5VGltZV9Bc01pY3Jvc2Vjb25kcyIsIHRlc3RfUHlUaW1lX0FzTWljcm9zZWNvbmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0X3JlY3Vyc2lvbl9kZXB0aCIsIGdldF9yZWN1cnNpb25fZGVwdGgsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX2J1ZmZlcl9vdmVyZmxvdyIsIHB5bWVtX2J1ZmZlcl9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAorICAgIHsicHltZW1fYXBpX21pc3VzZSIsIHB5bWVtX2FwaV9taXN1c2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX21hbGxvY193aXRob3V0X2dpbCIsIHB5bWVtX21hbGxvY193aXRob3V0X2dpbCwgTUVUSF9OT0FSR1N9LAorICAgIHsicHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsIiwgcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsLCBNRVRIX05PQVJHU30sCisgICAgeyJ0cmFjZW1hbGxvY190cmFjayIsIHRyYWNlbWFsbG9jX3RyYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfdW50cmFjayIsIHRyYWNlbWFsbG9jX3VudHJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJ0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrIiwgdHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImRpY3RfZ2V0X3ZlcnNpb24iLCBkaWN0X2dldF92ZXJzaW9uLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNDA3MCwxMCArNDI0OSw4IEBACiAgICAgZmxvYXQgZmxvYXRfbWVtYmVyOwogICAgIGRvdWJsZSBkb3VibGVfbWVtYmVyOwogICAgIGNoYXIgaW5wbGFjZV9tZW1iZXJbNl07Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgbG9uZ2xvbmdfbWVtYmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB1bG9uZ2xvbmdfbWVtYmVyOwotI2VuZGlmCisgICAgbG9uZyBsb25nIGxvbmdsb25nX21lbWJlcjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdsb25nX21lbWJlcjsKIH0gYWxsX3N0cnVjdG1lbWJlcnM7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTQwOTUsMTAgKzQyNzIsOCBAQAogICAgIHsiVF9GTE9BVCIsIFRfRkxPQVQsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5mbG9hdF9tZW1iZXIpLCAwLCBOVUxMfSwKICAgICB7IlRfRE9VQkxFIiwgVF9ET1VCTEUsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5kb3VibGVfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX1NUUklOR19JTlBMQUNFIiwgVF9TVFJJTkdfSU5QTEFDRSwgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmlucGxhY2VfbWVtYmVyKSwgMCwgTlVMTH0sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7IlRfTE9OR0xPTkciLCBUX0xPTkdMT05HLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMubG9uZ2xvbmdfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX1VMT05HTE9ORyIsIFRfVUxPTkdMT05HLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMudWxvbmdsb25nX21lbWJlciksIDAsIE5VTEx9LAotI2VuZGlmCiAgICAge05VTEx9CiB9OwogCkBAIC00MTEwLDE1ICs0Mjg1LDkgQEAKICAgICAgICAgIlRfQk9PTCIsICJUX0JZVEUiLCAiVF9VQllURSIsICJUX1NIT1JUIiwgIlRfVVNIT1JUIiwKICAgICAgICAgIlRfSU5UIiwgIlRfVUlOVCIsICJUX0xPTkciLCAiVF9VTE9ORyIsICJUX1BZU1NJWkVUIiwKICAgICAgICAgIlRfRkxPQVQiLCAiVF9ET1VCTEUiLCAiVF9TVFJJTkdfSU5QTEFDRSIsCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgIlRfTE9OR0xPTkciLCAiVF9VTE9OR0xPTkciLAotI2VuZGlmCiAgICAgICAgIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQgPSAifGJiQmhIaUlsa25mZHMjIgotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICJMSyIKLSNlbmRpZgotICAgICAgICA7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAifGJiQmhIaUlsa25mZHMjTEsiOwogICAgIHRlc3Rfc3RydWN0bWVtYmVycyAqb2I7CiAgICAgY29uc3QgY2hhciAqcyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdHJpbmdfbGVuID0gMDsKQEAgLTQxNDAsMTAgKzQzMDksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy5mbG9hdF9tZW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iLT5zdHJ1Y3RtZW1iZXJzLmRvdWJsZV9tZW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnMsICZzdHJpbmdfbGVuCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICZvYi0+c3RydWN0bWVtYmVycy5sb25nbG9uZ19tZW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iLT5zdHJ1Y3RtZW1iZXJzLnVsb25nbG9uZ19tZW1iZXIKLSNlbmRpZgogICAgICAgICApKSB7CiAgICAgICAgIFB5X0RFQ1JFRihvYik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDQ2OSw2ICs0NjM2LDcgQEAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlBZX1NTSVpFX1RfTUFYIiwgUHlMb25nX0Zyb21Tc2l6ZV90KFBZX1NTSVpFX1RfTUFYKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQWV9TU0laRV9UX01JTiIsIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01JTikpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0laRU9GX1BZR0NfSEVBRCIsIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplb2YoUHlHQ19IZWFkKSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0laRU9GX1RJTUVfVCIsIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplb2YodGltZV90KSkpOwogICAgIFB5X0lOQ1JFRigmUHlJbnN0YW5jZU1ldGhvZF9UeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluc3RhbmNlbWV0aG9kIiwgKFB5T2JqZWN0ICopJlB5SW5zdGFuY2VNZXRob2RfVHlwZSk7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMgYi9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCmluZGV4IDQxZGE5OTcuLjRkYWEzNGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKKysrIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwpAQCAtNjEsNyArNjEsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1FeGFtcGxlX3NldGF0dHIoRXhhbXBsZU9iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitFeGFtcGxlX3NldGF0dHIoRXhhbXBsZU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RraW50ZXIuYyBiL01vZHVsZXMvX3RraW50ZXIuYwppbmRleCAxNjNjODdmLi4zZTk2YWEwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190a2ludGVyLmMKKysrIGIvTW9kdWxlcy9fdGtpbnRlci5jCkBAIC00NjIsNyArNDYyLDcgQEAKICAgICAgICAgICAgICAgICB2ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbSh2LCBpLCB3KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgdyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgVGNsX0ZyZWUoRlJFRUNBU1QgYXJndik7CkBAIC00ODAsMTMgKzQ4MCwxMyBAQAogICAgICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAgICAgICAgIFB5T2JqZWN0ICplbGVtLCAqbmV3ZWxlbSwgKnJlc3VsdDsKIAotICAgICAgICBzaXplID0gUHlUdXBsZV9TaXplKGFyZyk7CisgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZyk7CiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgICAgIC8qIFJlY3Vyc2l2ZWx5IGludm9rZSBTcGxpdE9iaiBmb3IgYWxsIHR1cGxlIGl0ZW1zLgogICAgICAgICAgICBJZiB0aGlzIGRvZXMgbm90IHJldHVybiBhIG5ldyBvYmplY3QsIG5vIGFjdGlvbiBpcwogICAgICAgICAgICBuZWVkZWQuICovCiAgICAgICAgIGZvcihpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmcsIGkpOworICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJnLCBpKTsKICAgICAgICAgICAgIG5ld2VsZW0gPSBTcGxpdE9iaihlbGVtKTsKICAgICAgICAgICAgIGlmICghbmV3ZWxlbSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTUwMiwxMiArNTAyLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IGk7IGsrKykgewotICAgICAgICAgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZywgayk7CisgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgayk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaywgZWxlbSk7CisgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBrLCBlbGVtKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUyOSw3ICs1MjksNyBAQAogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIG5ld2VsZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIG5ld2VsZW0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTUxLDcgKzU1MSw3IEBACiAgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhhcmcpKSB7CiAgICAgICAgIGludCBhcmdjOwogICAgICAgICBjb25zdCBjaGFyICoqYXJndjsKLSAgICAgICAgY2hhciAqbGlzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcoYXJnKTsKKyAgICAgICAgY2hhciAqbGlzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyk7CiAKICAgICAgICAgaWYgKFRjbF9TcGxpdExpc3QoKFRjbF9JbnRlcnAgKilOVUxMLCBsaXN0LCAmYXJnYywgJmFyZ3YpICE9IFRDTF9PSykgewogICAgICAgICAgICAgUHlfSU5DUkVGKGFyZyk7CkBAIC01NTksNyArNTU5LDcgQEAKICAgICAgICAgfQogICAgICAgICBUY2xfRnJlZShGUkVFQ0FTVCBhcmd2KTsKICAgICAgICAgaWYgKGFyZ2MgPiAxKQotICAgICAgICAgICAgcmV0dXJuIFNwbGl0KFB5Qnl0ZXNfQXNTdHJpbmcoYXJnKSk7CisgICAgICAgICAgICByZXR1cm4gU3BsaXQoUHlCeXRlc19BU19TVFJJTkcoYXJnKSk7CiAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCwgcmV0dXJuaW5nIGFyZy4gKi8KICAgICB9CiAgICAgUHlfSU5DUkVGKGFyZyk7CkBAIC03NTgsNyArNzU4LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGNsX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyh1dGY4X3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodXRmOF9wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDTF9HTE9CQUxfT05MWSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHV0ZjhfcGF0aCk7CiAgICAgICAgICAgICB9CkBAIC04NDEsNyArODQxLDcgQEAKICAgICBQeV9ERUNSRUYodHApOwogfQogCi1zdGF0aWMgY2hhcioKK3N0YXRpYyBjb25zdCBjaGFyICoKIFB5VGNsT2JqZWN0X1RjbFN0cmluZyhQeU9iamVjdCAqc2VsZikKIHsKICAgICByZXR1cm4gVGNsX0dldFN0cmluZygoKFB5VGNsT2JqZWN0KilzZWxmKS0+dmFsdWUpOwpAQCAtOTc2LDcgKzk3Niw3IEBACiB9OwogCiAKLSNpZiBQWV9TSVpFX01BWCA+IElOVF9NQVgKKyNpZiBTSVpFX01BWCA+IElOVF9NQVgKICNkZWZpbmUgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHMgIT0gTlVMTCAmJiBzdHJsZW4ocykgPj0gSU5UX01BWCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic3RyaW5nIGlzIHRvbyBsb25nIik7IFwKQEAgLTExODIsMTAgKzExODIsOCBAQAogewogICAgICAgICBUY2xfV2lkZUludCB3aWRlVmFsdWU7CiAgICAgICAgIGlmIChUY2xfR2V0V2lkZUludEZyb21PYmooVGthcHBfSW50ZXJwKHRrYXBwKSwgdmFsdWUsICZ3aWRlVmFsdWUpID09IFRDTF9PSykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBpZiAoc2l6ZW9mKHdpZGVWYWx1ZSkgPD0gU0laRU9GX0xPTkdfTE9ORykKICAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh3aWRlVmFsdWUpOwotI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCh1bnNpZ25lZCBjaGFyICopKHZvaWQgKikmd2lkZVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod2lkZVZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwKQEAgLTEzMDYsNyArMTMwNCw3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE1MTcsOCArMTUxNSw4IEBACiAgICAgaW50IGZsYWdzID0gVENMX0VWQUxfRElSRUNUIHwgVENMX0VWQUxfR0xPQkFMOwogCiAgICAgLyogSWYgYXJncyBpcyBhIHNpbmdsZSB0dXBsZSwgcmVwbGFjZSB3aXRoIGNvbnRlbnRzIG9mIHR1cGxlICovCi0gICAgaWYgKDEgPT0gUHlUdXBsZV9TaXplKGFyZ3MpKXsKLSAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJncywgMCk7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrKGl0ZW0pKQogICAgICAgICAgICAgYXJncyA9IGl0ZW07CiAgICAgfQpAQCAtMTcyNiwxNCArMTcyNCwxNCBAQAogdmFybmFtZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmluLCB2b2lkICpfb3V0KQogewogICAgIGNoYXIgKnM7Ci0gICAgY2hhciAqKm91dCA9IChjaGFyKiopX291dDsKKyAgICBjb25zdCBjaGFyICoqb3V0ID0gKGNvbnN0IGNoYXIqKilfb3V0OwogICAgIGlmIChQeUJ5dGVzX0NoZWNrKGluKSkgewotICAgICAgICBpZiAoUHlCeXRlc19TaXplKGluKSA+IElOVF9NQVgpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoaW4pID4gSU5UX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJieXRlcyBvYmplY3QgaXMgdG9vIGxvbmciKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIHMgPSBQeUJ5dGVzX0FzU3RyaW5nKGluKTsKLSAgICAgICAgaWYgKHN0cmxlbihzKSAhPSAoc2l6ZV90KVB5Qnl0ZXNfU2l6ZShpbikpIHsKKyAgICAgICAgcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGluKTsKKyAgICAgICAgaWYgKHN0cmxlbihzKSAhPSAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUoaW4pKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgYnl0ZSIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTE4NDYsNyArMTg0NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogU2V0VmFyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGZsYWdzKQogewotICAgIGNoYXIgKm5hbWUxLCAqbmFtZTI7CisgICAgY29uc3QgY2hhciAqbmFtZTEsICpuYW1lMjsKICAgICBQeU9iamVjdCAqbmV3VmFsdWU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgVGNsX09iaiAqbmV3dmFsLCAqb2s7CkBAIC0xOTE1LDcgKzE5MTMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIEdldFZhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBmbGFncykKIHsKLSAgICBjaGFyICpuYW1lMSwgKm5hbWUyPU5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTEsICpuYW1lMj1OVUxMOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIFRjbF9PYmogKnRyZXM7CiAKQEAgLTIyNzQsMTAgKzIyNzIsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKLSAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKKyAgICAgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQpAQCAtMjMwNCwxMSArMjMwMywxMiBAQAogCiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKGFyZ3ZbaV0pOwotICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgdiA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCBzKTsKICAgICB9CiAKICAgZmluYWxseToKQEAgLTIzNDksMTAgKzIzNDksMTEgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKLSAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKKyAgICAgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQpAQCAtMjQxMCwxMCArMjQxMSwxMSBAQAogCiAgICAgZm9yIChpID0gMDsgaSA8IChhcmdjIC0gMSk7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKGFyZ3ZbaSArIDFdKTsKLSAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbShhcmcsIGksIHMpKSB7CisgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgUHlfREVDUkVGKGFyZyk7CiAgICAgICAgICAgICByZXR1cm4gUHl0aG9uQ21kX0Vycm9yKGludGVycCk7CiAgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmcsIGksIHMpOwogICAgIH0KICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBhcmcpOwogICAgIFB5X0RFQ1JFRihhcmcpOwpAQCAtMjQ4NSw3ICsyNDg3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLmNyZWF0ZWNvbW1hbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgbmFtZTogc3RyCiAgICAgZnVuYzogb2JqZWN0CiAgICAgLwpAQCAtMjQ5NSw3ICsyNDk2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmExYzc5YTRlZTJhZjQxMCBpbnB1dD0yYmMyYzA0NmEwOTE0MjM0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmExYzc5YTRlZTJhZjQxMCBpbnB1dD0yNTU3ODVjYjcwZWRjNmEwXSovCiB7CiAgICAgUHl0aG9uQ21kX0NsaWVudERhdGEgKmRhdGE7CiAgICAgaW50IGVycjsKQEAgLTI1NjEsNyArMjU2Miw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC5kZWxldGVjb21tYW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIG5hbWU6IHN0cgogICAgIC8KIApAQCAtMjU2OSw3ICsyNTY5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjdlOGNiNTg0NWUwZDJkIGlucHV0PWI2MzA2NDY4ZjEwYjIxOWNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjdlOGNiNTg0NWUwZDJkIGlucHV0PTUzZTk5NTJlYWUxZjg1ZjVdKi8KIHsKICAgICBpbnQgZXJyOwogCkBAIC0yNzYyLDEzICsyNzYyLDExIEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a3RpbWVydG9rZW4uZGVsZXRldGltZXJoYW5kbGVyCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrdHRPYmplY3QgKiIpCi0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfaW1wbChUa3R0T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkN2ZlMTdmMzI4Y2ZhNTUgaW5wdXQ9MjViYTVkZDU5NGU1MjA4NF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkN2ZlMTdmMzI4Y2ZhNTUgaW5wdXQ9NDBiZDA3MGZmODVmNWNmM10qLwogewogICAgIFRrdHRPYmplY3QgKnYgPSBzZWxmOwogICAgIFB5T2JqZWN0ICpmdW5jID0gdi0+ZnVuYzsKQEAgLTI4OTQsNyArMjg5Miw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC5tYWlubG9vcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICB0aHJlc2hvbGQ6IGludCA9IDAKICAgICAvCiAKQEAgLTI5MDIsNyArMjg5OSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgdGhyZXNob2xkKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYThlYWJiZTU3ODQxYjAgaW5wdXQ9YWQ1N2M5YzFkZDJiOTQ3MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYThlYWJiZTU3ODQxYjAgaW5wdXQ9MDM2YmNkY2YwM2Q1ZWNhMF0qLwogewogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKQEAgLTMwNzIsMTMgKzMwNjksMTEgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLndpbGxkaXNwYXRjaAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKLQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUzZjQ2ZDI0NDY0MjE1NSBpbnB1dD0yNjMwNjk5NzY3ODA4OTcwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUzZjQ2ZDI0NDY0MjE1NSBpbnB1dD1kODhmNTk3MDg0M2Q2ZGFiXSovCiB7CiAgICAgc2VsZi0+ZGlzcGF0Y2hpbmcgPSAxOwogCkBAIC0zNjI5LDE0ICszNjI0LDE0IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19BU19TVFJJTkcoY2V4ZSkpOwogCiAgICAgICAgICAgICBpZiAoc2V0X3ZhcikgewogICAgICAgICAgICAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMKTsKICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdjc19wYXRoKTsKICAgICAgICAgICAgIH0KICNlbHNlCi0gICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19BU19TVFJJTkcoY2V4ZSkpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKGNleGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYyBiL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKaW5kZXggNjViZjdhMy4uZWM4YmQ5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYworKysgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCkBAIC0zOSw3ICszOSwxMSBAQAogICAgIC8qIGxpbWl0IG9mIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIGEgdHJhY2ViYWNrLCAxIGJ5IGRlZmF1bHQuCiAgICAgICAgVmFyaWFibGUgcHJvdGVjdGVkIGJ5IHRoZSBHSUwuICovCiAgICAgaW50IG1heF9uZnJhbWU7Ci19IHRyYWNlbWFsbG9jX2NvbmZpZyA9IHtUUkFDRU1BTExPQ19OT1RfSU5JVElBTElaRUQsIDAsIDF9OworCisgICAgLyogdXNlIGRvbWFpbiBpbiB0cmFjZSBrZXk/CisgICAgICAgVmFyaWFibGUgcHJvdGVjdGVkIGJ5IHRoZSBHSUwuICovCisgICAgaW50IHVzZV9kb21haW47Cit9IHRyYWNlbWFsbG9jX2NvbmZpZyA9IHtUUkFDRU1BTExPQ19OT1RfSU5JVElBTElaRUQsIDAsIDEsIDB9OwogCiAjaWYgZGVmaW5lZChUUkFDRV9SQVdfTUFMTE9DKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQogLyogVGhpcyBsb2NrIGlzIG5lZWRlZCBiZWNhdXNlIHRyYWNlbWFsbG9jX2ZyZWUoKSBpcyBjYWxsZWQgd2l0aG91dApAQCAtNTQsMTAgKzU4LDIxIEBACiAjICBkZWZpbmUgVEFCTEVTX1VOTE9DSygpCiAjZW5kaWYKIAorCisjZGVmaW5lIERFRkFVTFRfRE9NQUlOIDAKKworLyogUGFjayB0aGUgZnJhbWVfdCBzdHJ1Y3R1cmUgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50LiAqLwordHlwZWRlZiBzdHJ1Y3QKKyNpZmRlZiBfX0dOVUNfXworX19hdHRyaWJ1dGVfXygocGFja2VkKSkKKyNlbmRpZgoreworICAgIHVpbnRwdHJfdCBwdHI7CisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluOworfSBwb2ludGVyX3Q7CisKIC8qIFBhY2sgdGhlIGZyYW1lX3Qgc3RydWN0dXJlIHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludCBvbiA2NC1iaXQKLSAgIGFyY2hpdGVjdHVyZXM6IDEyIGJ5dGVzIGluc3RlYWQgb2YgMTYuIFRoaXMgb3B0aW1pemF0aW9uIG1pZ2h0IHByb2R1Y2UKLSAgIFNJR0JVUyBvbiBhcmNoaXRlY3R1cmVzIG5vdCBzdXBwb3J0aW5nIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzZXMgKDY0LWJpdAotICAgTUlQUyBDUFU/KTogb24gc3VjaCBhcmNoaXRlY3R1cmUsIHRoZSBzdHJ1Y3R1cmUgbXVzdCBub3QgYmUgcGFja2VkLiAqLworICAgYXJjaGl0ZWN0dXJlczogMTIgYnl0ZXMgaW5zdGVhZCBvZiAxNi4gKi8KIHR5cGVkZWYgc3RydWN0CiAjaWZkZWYgX19HTlVDX18KIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCkBAIC02NSwxMCArODAsMTMgQEAKIF9kZWNsc3BlYyhhbGlnbig0KSkKICNlbmRpZgogeworICAgIC8qIGZpbGVuYW1lIGNhbm5vdCBiZSBOVUxMOiAiPHVua25vd24+IiBpcyB1c2VkIGlmIHRoZSBQeXRob24gZnJhbWUKKyAgICAgICBmaWxlbmFtZSBpcyBOVUxMICovCiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIHVuc2lnbmVkIGludCBsaW5lbm87CiB9IGZyYW1lX3Q7CiAKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5X3VoYXNoX3QgaGFzaDsKICAgICBpbnQgbmZyYW1lOwpAQCAtODEsNiArOTksNyBAQAogI2RlZmluZSBNQVhfTkZSQU1FIFwKICAgICAgICAgKChJTlRfTUFYIC0gKGludClzaXplb2YodHJhY2ViYWNrX3QpKSAvIChpbnQpc2l6ZW9mKGZyYW1lX3QpICsgMSkKIAorCiBzdGF0aWMgUHlPYmplY3QgKnVua25vd25fZmlsZW5hbWUgPSBOVUxMOwogc3RhdGljIHRyYWNlYmFja190IHRyYWNlbWFsbG9jX2VtcHR5X3RyYWNlYmFjazsKIApAQCAtOTMsNiArMTEyLDcgQEAKICAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwogfSB0cmFjZV90OwogCisKIC8qIFNpemUgaW4gYnl0ZXMgb2YgY3VycmVudGx5IHRyYWNlZCBtZW1vcnkuCiAgICBQcm90ZWN0ZWQgYnkgVEFCTEVTX0xPQ0soKS4gKi8KIHN0YXRpYyBzaXplX3QgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA9IDA7CkBAIC0xMTksNiArMTM5LDcgQEAKICAgIFByb3RlY3RlZCBieSBUQUJMRVNfTE9DSygpLiAqLwogc3RhdGljIF9QeV9oYXNodGFibGVfdCAqdHJhY2VtYWxsb2NfdHJhY2VzID0gTlVMTDsKIAorCiAjaWZkZWYgVFJBQ0VfREVCVUcKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKQEAgLTEzMyw2ICsxNTQsNyBAQAogfQogI2VuZGlmCiAKKwogI2lmIGRlZmluZWQoV0lUSF9USFJFQUQpICYmIGRlZmluZWQoVFJBQ0VfUkFXX01BTExPQykKICNkZWZpbmUgUkVFTlRSQU5UX1RIUkVBRExPQ0FMCiAKQEAgLTE0Myw3ICsxNjUsNyBAQAogIyAgZXJyb3IgIm5lZWQgbmF0aXZlIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIgogI2VuZGlmCiAKLXN0YXRpYyBpbnQgdHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleTsKK3N0YXRpYyBpbnQgdHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSA9IC0xOwogCiAvKiBBbnkgbm9uLU5VTEwgcG9pbnRlciBjYW4gYmUgdXNlZCAqLwogI2RlZmluZSBSRUVOVFJBTlQgUHlfVHJ1ZQpAQCAtMTUxLDcgKzE3MywxMCBAQAogc3RhdGljIGludAogZ2V0X3JlZW50cmFudCh2b2lkKQogewotICAgIHZvaWQgKnB0ciA9IFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSk7CisgICAgdm9pZCAqcHRyOworCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgIT0gLTEpOworICAgIHB0ciA9IFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSk7CiAgICAgaWYgKHB0ciAhPSBOVUxMKSB7CiAgICAgICAgIGFzc2VydChwdHIgPT0gUkVFTlRSQU5UKTsKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjQsMTIgKzE4OSwxNCBAQAogc2V0X3JlZW50cmFudChpbnQgcmVlbnRyYW50KQogewogICAgIGFzc2VydChyZWVudHJhbnQgPT0gMCB8fCByZWVudHJhbnQgPT0gMSk7CisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgIT0gLTEpOworCiAgICAgaWYgKHJlZW50cmFudCkgewotICAgICAgICBhc3NlcnQoUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KSA9PSBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KCFnZXRfcmVlbnRyYW50KCkpOwogICAgICAgICBQeVRocmVhZF9zZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXksIFJFRU5UUkFOVCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBhc3NlcnQoUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KSA9PSBSRUVOVFJBTlQpOworICAgICAgICBhc3NlcnQoZ2V0X3JlZW50cmFudCgpKTsKICAgICAgICAgUHlUaHJlYWRfc2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5LCBOVUxMKTsKICAgICB9CiB9CkBAIC0xOTQsMjcgKzIyMSw3NSBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBpbnQKLWhhc2h0YWJsZV9jb21wYXJlX3VuaWNvZGUoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQorCitzdGF0aWMgUHlfdWhhc2hfdAoraGFzaHRhYmxlX2hhc2hfcHlvYmplY3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICBpZiAoa2V5ICE9IE5VTEwgJiYgZW50cnktPmtleSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gKFB5VW5pY29kZV9Db21wYXJlKChQeU9iamVjdCAqKWtleSwgKFB5T2JqZWN0ICopZW50cnktPmtleSkgPT0gMCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4ga2V5ID09IGVudHJ5LT5rZXk7CisgICAgUHlPYmplY3QgKm9iajsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIG9iaik7CisgICAgcmV0dXJuIFB5T2JqZWN0X0hhc2gob2JqKTsKIH0KIAotc3RhdGljIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgaGFzaHRhYmxlX2FsbG9jID0ge21hbGxvYywgZnJlZX07CisKK3N0YXRpYyBpbnQKK2hhc2h0YWJsZV9jb21wYXJlX3VuaWNvZGUoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKK3sKKyAgICBQeU9iamVjdCAqa2V5MSwgKmtleTI7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBrZXkxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwga2V5Mik7CisKKyAgICBpZiAoa2V5MSAhPSBOVUxMICYmIGtleTIgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVfQ29tcGFyZShrZXkxLCBrZXkyKSA9PSAwKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBrZXkxID09IGtleTI7Cit9CisKKworc3RhdGljIFB5X3VoYXNoX3QKK2hhc2h0YWJsZV9oYXNoX3BvaW50ZXJfdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQoreworICAgIHBvaW50ZXJfdCBwdHI7CisgICAgUHlfdWhhc2hfdCBoYXNoOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgcHRyKTsKKworICAgIGhhc2ggPSAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoKHZvaWQqKXB0ci5wdHIpOworICAgIGhhc2ggXj0gcHRyLmRvbWFpbjsKKyAgICByZXR1cm4gaGFzaDsKK30KKworCitzdGF0aWMgaW50CitoYXNodGFibGVfY29tcGFyZV9wb2ludGVyX3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQoreworICAgIHBvaW50ZXJfdCBwdHIxLCBwdHIyOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgcHRyMSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHB0cjIpOworCisgICAgLyogY29tcGFyZSBwb2ludGVyIGJlZm9yZSBkb21haW4sIGJlY2F1c2UgcG9pbnRlciBpcyBtb3JlIGxpa2VseSB0byBiZQorICAgICAgIGRpZmZlcmVudCAqLworICAgIHJldHVybiAocHRyMS5wdHIgPT0gcHRyMi5wdHIgJiYgcHRyMS5kb21haW4gPT0gcHRyMi5kb21haW4pOworCit9CisKIAogc3RhdGljIF9QeV9oYXNodGFibGVfdCAqCi1oYXNodGFibGVfbmV3KHNpemVfdCBkYXRhX3NpemUsCitoYXNodGFibGVfbmV3KHNpemVfdCBrZXlfc2l6ZSwgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpCiB7Ci0gICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoZGF0YV9zaXplLCAwLAorICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgaGFzaHRhYmxlX2FsbG9jID0ge21hbGxvYywgZnJlZX07CisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2Z1bmMsIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCAmaGFzaHRhYmxlX2FsbG9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFzaHRhYmxlX2FsbG9jKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHJhd19tYWxsb2Moc2l6ZV90IHNpemUpCiB7CkBAIC0yMjcsMjEgKzMwMiwyOCBAQAogICAgIGFsbG9jYXRvcnMucmF3LmZyZWUoYWxsb2NhdG9ycy5yYXcuY3R4LCBwdHIpOwogfQogCisKIHN0YXRpYyBQeV91aGFzaF90Ci1oYXNodGFibGVfaGFzaF90cmFjZWJhY2soY29uc3Qgdm9pZCAqa2V5KQoraGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCiB7Ci0gICAgY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjayA9IGtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgdHJhY2ViYWNrKTsKICAgICByZXR1cm4gdHJhY2ViYWNrLT5oYXNoOwogfQogCisKIHN0YXRpYyBpbnQKLWhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayhjb25zdCB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmhlKQoraGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKIHsKLSAgICBjb25zdCB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrMiA9IGhlLT5rZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazEsICp0cmFjZWJhY2syOwogICAgIGNvbnN0IGZyYW1lX3QgKmZyYW1lMSwgKmZyYW1lMjsKICAgICBpbnQgaTsKIAorICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHRyYWNlYmFjazEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCB0cmFjZWJhY2syKTsKKwogICAgIGlmICh0cmFjZWJhY2sxLT5uZnJhbWUgIT0gdHJhY2ViYWNrMi0+bmZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjYwLDYgKzM0Miw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2dldF9mcmFtZShQeUZyYW1lT2JqZWN0ICpweWZyYW1lLCBmcmFtZV90ICpmcmFtZSkKIHsKQEAgLTMxMCwxNSArMzkzLDE1IEBACiAgICAgfQogCiAgICAgLyogaW50ZXJuIHRoZSBmaWxlbmFtZSAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSk7CisgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGZpbGVuYW1lKTsKICAgICBpZiAoZW50cnkgIT0gTlVMTCkgewotICAgICAgICBmaWxlbmFtZSA9IChQeU9iamVjdCAqKWVudHJ5LT5rZXk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBlbnRyeSwgZmlsZW5hbWUpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogdHJhY2VtYWxsb2NfZmlsZW5hbWVzIGlzIHJlc3BvbnNpYmxlIHRvIGtlZXAgYSByZWZlcmVuY2UKICAgICAgICAgICAgdG8gdGhlIGZpbGVuYW1lICovCiAgICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7Ci0gICAgICAgIGlmIChfUHlfaGFzaHRhYmxlX3NldCh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGZpbGVuYW1lLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGZpbGVuYW1lKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CiAjaWZkZWYgVFJBQ0VfREVCVUcKICAgICAgICAgICAgIHRyYWNlbWFsbG9jX2Vycm9yKCJmYWlsZWQgdG8gaW50ZXJuIHRoZSBmaWxlbmFtZSIpOwpAQCAtMzMxLDYgKzQxNCw3IEBACiAgICAgZnJhbWUtPmZpbGVuYW1lID0gZmlsZW5hbWU7CiB9CiAKKwogc3RhdGljIFB5X3VoYXNoX3QKIHRyYWNlYmFja19oYXNoKHRyYWNlYmFja190ICp0cmFjZWJhY2spCiB7CkBAIC0zNTUsNiArNDM5LDcgQEAKICAgICByZXR1cm4geDsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2ViYWNrX2dldF9mcmFtZXModHJhY2ViYWNrX3QgKnRyYWNlYmFjaykKIHsKQEAgLTM4Miw2ICs0NjcsNyBAQAogICAgIH0KIH0KIAorCiBzdGF0aWMgdHJhY2ViYWNrX3QgKgogdHJhY2ViYWNrX25ldyh2b2lkKQogewpAQCAtNDAxLDkgKzQ4Nyw5IEBACiAgICAgdHJhY2ViYWNrLT5oYXNoID0gdHJhY2ViYWNrX2hhc2godHJhY2ViYWNrKTsKIAogICAgIC8qIGludGVybiB0aGUgdHJhY2ViYWNrICovCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCB0cmFjZWJhY2spOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgdHJhY2ViYWNrKTsKICAgICBpZiAoZW50cnkgIT0gTlVMTCkgewotICAgICAgICB0cmFjZWJhY2sgPSAodHJhY2ViYWNrX3QgKillbnRyeS0+a2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIGVudHJ5LCB0cmFjZWJhY2spOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdHJhY2ViYWNrX3QgKmNvcHk7CkBAIC00MjAsNyArNTA2LDcgQEAKICAgICAgICAgfQogICAgICAgICBtZW1jcHkoY29weSwgdHJhY2ViYWNrLCB0cmFjZWJhY2tfc2l6ZSk7CiAKLSAgICAgICAgaWYgKF9QeV9oYXNodGFibGVfc2V0KHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIGNvcHksIE5VTEwsIDApIDwgMCkgeworICAgICAgICBpZiAoX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIGNvcHkpIDwgMCkgewogICAgICAgICAgICAgcmF3X2ZyZWUoY29weSk7CiAjaWZkZWYgVFJBQ0VfREVCVUcKICAgICAgICAgICAgIHRyYWNlbWFsbG9jX2Vycm9yKCJmYWlsZWQgdG8gaW50ZXJuIHRoZSB0cmFjZWJhY2s6IHB1dGRhdGEgZmFpbGVkIik7CkBAIC00MzIsNTMgKzUxOCwxNjEgQEAKICAgICByZXR1cm4gdHJhY2ViYWNrOwogfQogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2FkZF90cmFjZSh2b2lkICpwdHIsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfdXNlX2RvbWFpbl9jYihfUHlfaGFzaHRhYmxlX3QgKm9sZF90cmFjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKLSAgICB0cmFjZV90IHRyYWNlOwotICAgIGludCByZXM7CisgICAgdWludHB0cl90IHB0cjsKKyAgICBwb2ludGVyX3Qga2V5OworICAgIF9QeV9oYXNodGFibGVfdCAqbmV3X3RyYWNlcyA9IChfUHlfaGFzaHRhYmxlX3QgKil1c2VyX2RhdGE7CisgICAgY29uc3Qgdm9pZCAqcGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKG9sZF90cmFjZXMsIGVudHJ5KTsKIAotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7Ci0jZW5kaWYKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKG9sZF90cmFjZXMsIGVudHJ5LCBwdHIpOworICAgIGtleS5wdHIgPSBwdHI7CisgICAga2V5LmRvbWFpbiA9IERFRkFVTFRfRE9NQUlOOwogCi0gICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrX25ldygpOwotICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9zZXQobmV3X3RyYWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtleSksICZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF90cmFjZXMtPmRhdGFfc2l6ZSwgcGRhdGEpOworfQorCisKKy8qIENvbnZlcnQgdHJhY2VtYWxsb2NfdHJhY2VzIGZyb20gY29tcGFjdCBrZXkgKHVpbnRwdHJfdCkgdG8gcG9pbnRlcl90IGtleS4KKyAqIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLworc3RhdGljIGludAordHJhY2VtYWxsb2NfdXNlX2RvbWFpbih2b2lkKQoreworICAgIF9QeV9oYXNodGFibGVfdCAqbmV3X3RyYWNlcyA9IE5VTEw7CisKKyAgICBhc3NlcnQoIXRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKTsKKworICAgIG5ld190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZihwb2ludGVyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfaGFzaF9wb2ludGVyX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2NvbXBhcmVfcG9pbnRlcl90KTsKKyAgICBpZiAobmV3X3RyYWNlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKLQotICAgIHRyYWNlLnNpemUgPSBzaXplOwotICAgIHRyYWNlLnRyYWNlYmFjayA9IHRyYWNlYmFjazsKLQotICAgIHJlcyA9IF9QeV9IQVNIVEFCTEVfU0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7Ci0gICAgaWYgKHJlcyA9PSAwKSB7Ci0gICAgICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IDw9IFBZX1NJWkVfTUFYIC0gc2l6ZSk7Ci0gICAgICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgKz0gc2l6ZTsKLSAgICAgICAgaWYgKHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPiB0cmFjZW1hbGxvY19wZWFrX3RyYWNlZF9tZW1vcnkpCi0gICAgICAgICAgICB0cmFjZW1hbGxvY19wZWFrX3RyYWNlZF9tZW1vcnkgPSB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5OwogICAgIH0KIAotICAgIHJldHVybiByZXM7CisgICAgaWYgKF9QeV9oYXNodGFibGVfZm9yZWFjaCh0cmFjZW1hbGxvY190cmFjZXMsIHRyYWNlbWFsbG9jX3VzZV9kb21haW5fY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfdHJhY2VzKSA8IDApCisgICAgeworICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kobmV3X3RyYWNlcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2VzKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBuZXdfdHJhY2VzOworCisgICAgdHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4gPSAxOworCisgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKLXRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZSh2b2lkICpwdHIpCit0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UoX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQogewogICAgIHRyYWNlX3QgdHJhY2U7CisgICAgaW50IHJlbW92ZWQ7CiAKLSAgICBpZiAoX1B5X2hhc2h0YWJsZV9wb3AodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsICZ0cmFjZSwgc2l6ZW9mKHRyYWNlKSkpIHsKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpOworCisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgICAgICByZW1vdmVkID0gX1B5X0hBU0hUQUJMRV9QT1AodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXksIHRyYWNlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlbW92ZWQgPSBfUHlfSEFTSFRBQkxFX1BPUCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOworICAgIH0KKyAgICBpZiAoIXJlbW92ZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID49IHRyYWNlLnNpemUpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgLT0gdHJhY2Uuc2l6ZTsKK30KKworI2RlZmluZSBSRU1PVkVfVFJBQ0UocHRyKSBcCisgICAgICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UoREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpKHB0cikpCisKKworc3RhdGljIGludAordHJhY2VtYWxsb2NfYWRkX3RyYWNlKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKyAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworICAgIHRyYWNlX3QgdHJhY2U7CisgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90KiBlbnRyeTsKKyAgICBpbnQgcmVzOworCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKTsKKworICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja19uZXcoKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4gJiYgZG9tYWluICE9IERFRkFVTFRfRE9NQUlOKSB7CisgICAgICAgIC8qIGZpcnN0IHRyYWNlIHVzaW5nIGEgbm9uLXplcm8gZG9tYWluIHdoZXJlYXMgdHJhY2VzIHVzZSBjb21wYWN0CisgICAgICAgICAgICh1aW50cHRyX3QpIGtleXM6IHN3aXRjaCB0byBwb2ludGVyX3Qga2V5cy4gKi8KKyAgICAgICAgaWYgKHRyYWNlbWFsbG9jX3VzZV9kb21haW4oKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIpOworICAgIH0KKworICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7CisgICAgICAgIC8qIHRoZSBtZW1vcnkgYmxvY2sgaXMgYWxyZWFkeSB0cmFja2VkICovCisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHRyYWNlbWFsbG9jX3RyYWNlcywgZW50cnksIHRyYWNlKTsKICAgICAgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPj0gdHJhY2Uuc2l6ZSk7CiAgICAgICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgLT0gdHJhY2Uuc2l6ZTsKKworICAgICAgICB0cmFjZS5zaXplID0gc2l6ZTsKKyAgICAgICAgdHJhY2UudHJhY2ViYWNrID0gdHJhY2ViYWNrOworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1dSSVRFX0RBVEEodHJhY2VtYWxsb2NfdHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdHJhY2Uuc2l6ZSA9IHNpemU7CisgICAgICAgIHRyYWNlLnRyYWNlYmFjayA9IHRyYWNlYmFjazsKKworICAgICAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgICAgIHJlcyA9IF9QeV9IQVNIVEFCTEVfU0VUKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IDw9IFNJWkVfTUFYIC0gc2l6ZSk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSArPSBzaXplOworICAgIGlmICh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID4gdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5KQorICAgICAgICB0cmFjZW1hbGxvY19wZWFrX3RyYWNlZF9tZW1vcnkgPSB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5OworICAgIHJldHVybiAwOwogfQogCisjZGVmaW5lIEFERF9UUkFDRShwdHIsIHNpemUpIFwKKyAgICAgICAgICAgIHRyYWNlbWFsbG9jX2FkZF90cmFjZShERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdCkocHRyKSwgc2l6ZSkKKworCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX2FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogICAgIHZvaWQgKnB0cjsKIAotICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBQWV9TSVpFX01BWCAvIGVsc2l6ZSk7CisgICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFNJWkVfTUFYIC8gZWxzaXplKTsKIAogICAgIGlmICh1c2VfY2FsbG9jKQogICAgICAgICBwdHIgPSBhbGxvYy0+Y2FsbG9jKGFsbG9jLT5jdHgsIG5lbGVtLCBlbHNpemUpOwpAQCAtNDg4LDcgKzY4Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0ciwgbmVsZW0gKiBlbHNpemUpIDwgMCkgeworICAgIGlmIChBRERfVFJBQ0UocHRyLCBuZWxlbSAqIGVsc2l6ZSkgPCAwKSB7CiAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cik7CkBAIC00OTgsNiArNjkyLDcgQEAKICAgICByZXR1cm4gcHRyOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNTEyLDkgKzcwNywxNCBAQAogICAgICAgICAvKiBhbiBleGlzdGluZyBtZW1vcnkgYmxvY2sgaGFzIGJlZW4gcmVzaXplZCAqLwogCiAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOwogCi0gICAgICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyMiwgbmV3X3NpemUpIDwgMCkgeworICAgICAgICAvKiB0cmFjZW1hbGxvY19hZGRfdHJhY2UoKSB1cGRhdGVzIHRoZSB0cmFjZSBpZiB0aGVyZSBpcyBhbHJlYWR5CisgICAgICAgICAgIGEgdHJhY2UgYXQgYWRkcmVzcyAoZG9tYWluLCBwdHIyKSAqLworICAgICAgICBpZiAocHRyMiAhPSBwdHIpIHsKKyAgICAgICAgICAgIFJFTU9WRV9UUkFDRShwdHIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEFERF9UUkFDRShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CiAgICAgICAgICAgICAvKiBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuIFRoZSBlcnJvciBjYW5ub3QgYmUgcmVwb3J0ZWQgdG8KICAgICAgICAgICAgICAgIHRoZSBjYWxsZXIsIGJlY2F1c2UgcmVhbGxvYygpIG1heSBhbHJlYWR5IGhhdmUgc2hydW5rIHRoZQogICAgICAgICAgICAgICAgbWVtb3J5IGJsb2NrIGFuZCBzbyByZW1vdmVkIGJ5dGVzLgpAQCAtNTMyLDcgKzczMiw3IEBACiAgICAgICAgIC8qIG5ldyBhbGxvY2F0aW9uICovCiAKICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CisgICAgICAgIGlmIChBRERfVFJBQ0UocHRyMiwgbmV3X3NpemUpIDwgMCkgewogICAgICAgICAgICAgLyogRmFpbGVkIHRvIGFsbG9jYXRlIGEgdHJhY2UgZm9yIHRoZSBuZXcgbWVtb3J5IGJsb2NrICovCiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgICAgICBhbGxvYy0+ZnJlZShhbGxvYy0+Y3R4LCBwdHIyKTsKQEAgLTU0Myw2ICs3NDMsNyBAQAogICAgIHJldHVybiBwdHIyOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19mcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKQogewpAQCAtNTU3LDEwICs3NTgsMTEgQEAKICAgICBhbGxvYy0+ZnJlZShhbGxvYy0+Y3R4LCBwdHIpOwogCiAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKKyAgICBSRU1PVkVfVFJBQ0UocHRyKTsKICAgICBUQUJMRVNfVU5MT0NLKCk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19hbGxvY19naWwoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewpAQCAtNTg1LDE4ICs3ODcsMjEgQEAKICAgICByZXR1cm4gcHRyOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfbWFsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMCwgY3R4LCAxLCBzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX2NhbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX2FsbG9jX2dpbCgxLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvY19naWwodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTYxMiw3ICs4MTcsNyBAQAogICAgICAgICBwdHIyID0gYWxsb2MtPnJlYWxsb2MoYWxsb2MtPmN0eCwgcHRyLCBuZXdfc2l6ZSk7CiAgICAgICAgIGlmIChwdHIyICE9IE5VTEwgJiYgcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKKyAgICAgICAgICAgIFJFTU9WRV9UUkFDRShwdHIpOwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwdHIyOwpAQCAtNjI5LDYgKzgzNCw3IEBACiAgICAgcmV0dXJuIHB0cjI7CiB9CiAKKwogI2lmZGVmIFRSQUNFX1JBV19NQUxMT0MKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X2FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKQEAgLTY2MywxOCArODY5LDIxIEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19tYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDAsIGN0eCwgMSwgc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfY2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19yYXdfYWxsb2MoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC02OTEsNyArOTAwLDcgQEAKIAogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcHRyMjsKQEAgLTcxNSwyMiArOTI0LDMxIEBACiB9CiAjZW5kaWYgICAvKiBUUkFDRV9SQVdfTUFMTE9DICovCiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfY2xlYXJfZmlsZW5hbWUoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQordHJhY2VtYWxsb2NfY2xlYXJfZmlsZW5hbWUoX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWUgPSAoUHlPYmplY3QgKillbnRyeS0+a2V5OworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBmaWxlbmFtZSk7CiAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgaW50Ci10cmFjZWJhY2tfZnJlZV90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQordHJhY2ViYWNrX2ZyZWVfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfdCAqaHQsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2sgPSAodHJhY2ViYWNrX3QgKillbnRyeS0+a2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgdHJhY2ViYWNrKTsKICAgICByYXdfZnJlZSh0cmFjZWJhY2spOwogICAgIHJldHVybiAwOwogfQogCisKIC8qIHJlZW50cmFudCBmbGFnIG11c3QgYmUgc2V0IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBhbmQgR0lMIG11c3QgYmUgaGVsZCAqLwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcyh2b2lkKQpAQCAtNzUzLDYgKzk3MSw3IEBACiAgICAgX1B5X2hhc2h0YWJsZV9jbGVhcih0cmFjZW1hbGxvY19maWxlbmFtZXMpOwogfQogCisKIHN0YXRpYyBpbnQKIHRyYWNlbWFsbG9jX2luaXQodm9pZCkKIHsKQEAgLTc4OSwyMSArMTAwOCwyOSBAQAogICAgIH0KICNlbmRpZgogCi0gICAgdHJhY2VtYWxsb2NfZmlsZW5hbWVzID0gaGFzaHRhYmxlX25ldygwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfaGFzaF9mdW5jKVB5T2JqZWN0X0hhc2gsCisgICAgdHJhY2VtYWxsb2NfZmlsZW5hbWVzID0gaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfaGFzaF9weW9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3VuaWNvZGUpOwogCi0gICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrcyA9IGhhc2h0YWJsZV9uZXcoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyloYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2spOworICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZWJhY2tfdCAqKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfaGFzaF90cmFjZWJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKTsKIAotICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHRyYWNlX3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZihwb2ludGVyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfaGFzaF9wb2ludGVyX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2NvbXBhcmVfcG9pbnRlcl90KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHVpbnRwdHJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRyYWNlX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CisgICAgfQogCiAgICAgaWYgKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9PSBOVUxMIHx8IHRyYWNlbWFsbG9jX3RyYWNlYmFja3MgPT0gTlVMTAotICAgICAgICB8fCB0cmFjZW1hbGxvY190cmFjZXMgPT0gTlVMTCkKLSAgICB7CisgICAgICAgfHwgdHJhY2VtYWxsb2NfdHJhY2VzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTgyMyw2ICsxMDUwLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZGVpbml0KHZvaWQpCiB7CkBAIC04MzMsOSArMTA2MSw5IEBACiAgICAgdHJhY2VtYWxsb2Nfc3RvcCgpOwogCiAgICAgLyogZGVzdHJveSBoYXNoIHRhYmxlcyAqLwotICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZXMpOwogICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZWJhY2tzKTsKICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfZmlsZW5hbWVzKTsKKyAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2VzKTsKIAogI2lmIGRlZmluZWQoV0lUSF9USFJFQUQpICYmIGRlZmluZWQoVFJBQ0VfUkFXX01BTExPQykKICAgICBpZiAodGFibGVzX2xvY2sgIT0gTlVMTCkgewpAQCAtODQ2LDExICsxMDc0LDEzIEBACiAKICNpZmRlZiBSRUVOVFJBTlRfVEhSRUFETE9DQUwKICAgICBQeVRocmVhZF9kZWxldGVfa2V5KHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOworICAgIHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgPSAtMTsKICNlbmRpZgogCiAgICAgUHlfWERFQ1JFRih1bmtub3duX2ZpbGVuYW1lKTsKIH0KIAorCiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19zdGFydChpbnQgbWF4X25mcmFtZSkKIHsKQEAgLTkwNyw2ICsxMTM3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2Nfc3RvcCh2b2lkKQogewpAQCAtOTIzLDggKzExNTQsOSBAQAogICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmYWxsb2NhdG9ycy5tZW0pOwogICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2NhdG9ycy5vYmopOwogCi0gICAgLyogcmVsZWFzZSBtZW1vcnkgKi8KICAgICB0cmFjZW1hbGxvY19jbGVhcl90cmFjZXMoKTsKKworICAgIC8qIHJlbGVhc2UgbWVtb3J5ICovCiAgICAgcmF3X2ZyZWUodHJhY2VtYWxsb2NfdHJhY2ViYWNrKTsKICAgICB0cmFjZW1hbGxvY190cmFjZWJhY2sgPSBOVUxMOwogfQpAQCAtOTM1LDYgKzExNjcsNyBAQAogICAgICJUcnVlIGlmIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUgaXMgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zLFxuIgogICAgICJGYWxzZSBvdGhlcndpc2UuIik7CiAKKwogc3RhdGljIFB5T2JqZWN0KgogcHlfdHJhY2VtYWxsb2NfaXNfdHJhY2luZyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTk0Niw2ICsxMTc5LDcgQEAKICAgICAiXG4iCiAgICAgIkNsZWFyIHRyYWNlcyBvZiBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZCBieSBQeXRob24uIik7CiAKKwogc3RhdGljIFB5T2JqZWN0KgogcHlfdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtOTU5LDYgKzExOTMsNyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKIGZyYW1lX3RvX3B5b2JqZWN0KGZyYW1lX3QgKmZyYW1lKQogewpAQCAtOTY4LDggKzEyMDMsNiBAQAogICAgIGlmIChmcmFtZV9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoZnJhbWUtPmZpbGVuYW1lID09IE5VTEwpCi0gICAgICAgIGZyYW1lLT5maWxlbmFtZSA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKGZyYW1lLT5maWxlbmFtZSk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShmcmFtZV9vYmosIDAsIGZyYW1lLT5maWxlbmFtZSk7CiAKQEAgLTk4Myw2ICsxMjE2LDcgQEAKICAgICByZXR1cm4gZnJhbWVfb2JqOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrLCBfUHlfaGFzaHRhYmxlX3QgKmludGVybl90YWJsZSkKIHsKQEAgLTEwMjEsMzMgKzEyNTUsNDMgQEAKICAgICByZXR1cm4gZnJhbWVzOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKLXRyYWNlX3RvX3B5b2JqZWN0KHRyYWNlX3QgKnRyYWNlLCBfUHlfaGFzaHRhYmxlX3QgKmludGVybl90cmFjZWJhY2tzKQordHJhY2VfdG9fcHlvYmplY3QoX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB0cmFjZV90ICp0cmFjZSwKKyAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfdCAqaW50ZXJuX3RyYWNlYmFja3MpCiB7CiAgICAgUHlPYmplY3QgKnRyYWNlX29iaiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnNpemUsICp0cmFjZWJhY2s7CisgICAgUHlPYmplY3QgKm9iajsKIAotICAgIHRyYWNlX29iaiA9IFB5VHVwbGVfTmV3KDIpOworICAgIHRyYWNlX29iaiA9IFB5VHVwbGVfTmV3KDMpOwogICAgIGlmICh0cmFjZV9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzaXplID0gUHlMb25nX0Zyb21TaXplX3QodHJhY2UtPnNpemUpOwotICAgIGlmIChzaXplID09IE5VTEwpIHsKKyAgICBvYmogPSBQeUxvbmdfRnJvbVNpemVfdChkb21haW4pOworICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYodHJhY2Vfb2JqKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAwLCBzaXplKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMCwgb2JqKTsKIAotICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS0+dHJhY2ViYWNrLCBpbnRlcm5fdHJhY2ViYWNrcyk7Ci0gICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKSB7CisgICAgb2JqID0gUHlMb25nX0Zyb21TaXplX3QodHJhY2UtPnNpemUpOworICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYodHJhY2Vfb2JqKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAxLCB0cmFjZWJhY2spOworICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAxLCBvYmopOworCisgICAgb2JqID0gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlLT50cmFjZWJhY2ssIGludGVybl90cmFjZWJhY2tzKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMiwgb2JqKTsKIAogICAgIHJldHVybiB0cmFjZV9vYmo7CiB9CiAKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIF9QeV9oYXNodGFibGVfdCAqdHJhY2VzOwogICAgIF9QeV9oYXNodGFibGVfdCAqdHJhY2ViYWNrczsKQEAgLTEwNTUsMTYgKzEyOTksMjYgQEAKIH0gZ2V0X3RyYWNlc190OwogCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19nZXRfdHJhY2VzX2ZpbGwoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQordHJhY2VtYWxsb2NfZ2V0X3RyYWNlc19maWxsKF9QeV9oYXNodGFibGVfdCAqdHJhY2VzLCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKICAgICBnZXRfdHJhY2VzX3QgKmdldF90cmFjZXMgPSB1c2VyX2RhdGE7Ci0gICAgdHJhY2VfdCAqdHJhY2U7CisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluOworICAgIHRyYWNlX3QgdHJhY2U7CiAgICAgUHlPYmplY3QgKnRyYWNlbWFsbG9jX29iajsKICAgICBpbnQgcmVzOwogCi0gICAgdHJhY2UgPSAodHJhY2VfdCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShlbnRyeSk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHBvaW50ZXJfdCBrZXk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkodHJhY2VzLCBlbnRyeSwga2V5KTsKKyAgICAgICAgZG9tYWluID0ga2V5LmRvbWFpbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRvbWFpbiA9IERFRkFVTFRfRE9NQUlOOworICAgIH0KKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQSh0cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAKLSAgICB0cmFjZW1hbGxvY19vYmogPSB0cmFjZV90b19weW9iamVjdCh0cmFjZSwgZ2V0X3RyYWNlcy0+dHJhY2ViYWNrcyk7CisgICAgdHJhY2VtYWxsb2Nfb2JqID0gdHJhY2VfdG9fcHlvYmplY3QoZG9tYWluLCAmdHJhY2UsIGdldF90cmFjZXMtPnRyYWNlYmFja3MpOwogICAgIGlmICh0cmFjZW1hbGxvY19vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAKQEAgLTEwNzYsMTQgKzEzMzAsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQordHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiKF9QeV9oYXNodGFibGVfdCAqdHJhY2ViYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBQeU9iamVjdCAqb2JqID0gKFB5T2JqZWN0ICopX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSk7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQSh0cmFjZWJhY2tzLCBlbnRyeSwgb2JqKTsKICAgICBQeV9ERUNSRUYob2JqKTsKICAgICByZXR1cm4gMDsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlc19kb2MsCiAgICAgIl9nZXRfdHJhY2VzKCkgLT4gbGlzdFxuIgogICAgICJcbiIKQEAgLTExMTAsNyArMTM2OSw4IEBACiAKICAgICAvKiB0aGUgdHJhY2ViYWNrIGhhc2ggdGFibGUgaXMgdXNlZCB0ZW1wb3JhcmlseSB0byBpbnRlcm4gdHJhY2ViYWNrIHR1cGxlCiAgICAgICAgb2YgKGZpbGVuYW1lLCBsaW5lbm8pIHR1cGxlcyAqLwotICAgIGdldF90cmFjZXMudHJhY2ViYWNrcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLAorICAgIGdldF90cmFjZXMudHJhY2ViYWNrcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHRyYWNlYmFja190ICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5T2JqZWN0ICopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOwogICAgIGlmIChnZXRfdHJhY2VzLnRyYWNlYmFja3MgPT0gTlVMTCkgewpAQCAtMTE0MiwxNSArMTQwMiw0MyBAQAogZmluYWxseToKICAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZWJhY2tzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoKGdldF90cmFjZXMudHJhY2ViYWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiLCBOVUxMKTsKICAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KGdldF90cmFjZXMudHJhY2ViYWNrcyk7CiAgICAgfQotICAgIGlmIChnZXRfdHJhY2VzLnRyYWNlcyAhPSBOVUxMKQorICAgIGlmIChnZXRfdHJhY2VzLnRyYWNlcyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShnZXRfdHJhY2VzLnRyYWNlcyk7CisgICAgfQogCiAgICAgcmV0dXJuIGdldF90cmFjZXMubGlzdDsKIH0KIAorCitzdGF0aWMgdHJhY2ViYWNrX3QqCit0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKK3sKKyAgICB0cmFjZV90IHRyYWNlOworICAgIGludCBmb3VuZDsKKworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgVEFCTEVTX0xPQ0soKTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgICAgIGZvdW5kID0gX1B5X0hBU0hUQUJMRV9HRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXksIHRyYWNlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvdW5kID0gX1B5X0hBU0hUQUJMRV9HRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICB9CisgICAgVEFCTEVTX1VOTE9DSygpOworCisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gdHJhY2UudHJhY2ViYWNrOworfQorCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfb2JqZWN0X3RyYWNlYmFja19kb2MsCiAgICAgIl9nZXRfb2JqZWN0X3RyYWNlYmFjayhvYmopXG4iCiAgICAgIlxuIgpAQCAtMTE2NSwxMSArMTQ1Myw3IEBACiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlOwogICAgIHZvaWQgKnB0cjsKLSAgICB0cmFjZV90IHRyYWNlOwotICAgIGludCBmb3VuZDsKLQotICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CiAKICAgICB0eXBlID0gUHlfVFlQRShvYmopOwogICAgIGlmIChQeVR5cGVfSVNfR0ModHlwZSkpCkBAIC0xMTc3LDE2ICsxNDYxLDQ4IEBACiAgICAgZWxzZQogICAgICAgICBwdHIgPSAodm9pZCAqKW9iajsKIAotICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgZm91bmQgPSBfUHlfSEFTSFRBQkxFX0dFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOwotICAgIFRBQkxFU19VTkxPQ0soKTsKLQotICAgIGlmICghZm91bmQpCisgICAgdHJhY2ViYWNrID0gdHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdClwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlLnRyYWNlYmFjaywgTlVMTCk7CisgICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZWJhY2ssIE5VTEwpOwogfQogCisKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSBfUHlfd3JpdGVfbm9yYWlzZShmZCwgc3RyLCAoaW50KXN0cmxlbihzdHIpKQorCitzdGF0aWMgdm9pZAorX1B5TWVtX0R1bXBGcmFtZShpbnQgZmQsIGZyYW1lX3QgKiBmcmFtZSkKK3sKKyAgICBQVVRTKGZkLCAiICBGaWxlIFwiIik7CisgICAgX1B5X0R1bXBBU0NJSShmZCwgZnJhbWUtPmZpbGVuYW1lKTsKKyAgICBQVVRTKGZkLCAiXCIsIGxpbmUgIik7CisgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCBmcmFtZS0+bGluZW5vKTsKKyAgICBQVVRTKGZkLCAiXG4iKTsKK30KKworLyogRHVtcCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQgaW50byBmaWxlIGRlc2NyaXB0b3IKKyAgIGZkLiBUaGUgZnVuY3Rpb24gbWF5IGJsb2NrIG9uIFRBQkxFU19MT0NLKCkgYnV0IGl0IGlzIHVubGlrZWx5LiAqLwordm9pZAorX1B5TWVtX0R1bXBUcmFjZWJhY2soaW50IGZkLCBjb25zdCB2b2lkICpwdHIpCit7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKyAgICBpbnQgaTsKKworICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIFBVVFMoZmQsICJNZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOworICAgIGZvciAoaT0wOyBpIDwgdHJhY2ViYWNrLT5uZnJhbWU7IGkrKykgeworICAgICAgICBfUHlNZW1fRHVtcEZyYW1lKGZkLCAmdHJhY2ViYWNrLT5mcmFtZXNbaV0pOworICAgIH0KKyAgICBQVVRTKGZkLCAiXG4iKTsKK30KKworI3VuZGVmIFBVVFMKKworCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2Nfc3RhcnRfZG9jLAogICAgICJzdGFydChuZnJhbWU6IGludD0xKVxuIgogICAgICJcbiIKQEAgLTEyMjIsNiArMTUzOCw3IEBACiAgICAgIlN0b3AgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIGFuZCBjbGVhciB0cmFjZXNcbiIKICAgICAib2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX3N0b3AoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC0xMjI5LDYgKzE1NDYsNyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrX2xpbWl0X2RvYywKICAgICAiZ2V0X3RyYWNlYmFja19saW1pdCgpIC0+IGludFxuIgogICAgICJcbiIKQEAgLTEyNDQsNiArMTU2Miw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh0cmFjZW1hbGxvY19jb25maWcubWF4X25mcmFtZSk7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZW1hbGxvY19tZW1vcnlfZG9jLAogICAgICJnZXRfdHJhY2VtYWxsb2NfbWVtb3J5KCkgLT4gaW50XG4iCiAgICAgIlxuIgpAQCAtMTI2Nyw2ICsxNTg2LDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTiIsIHNpemVfb2JqKTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlZF9tZW1vcnlfZG9jLAogICAgICJnZXRfdHJhY2VkX21lbW9yeSgpIC0+IChpbnQsIGludClcbiIKICAgICAiXG4iCkBAIC0xMjkyLDYgKzE2MTIsNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTiIsIHNpemVfb2JqLCBwZWFrX3NpemVfb2JqKTsKIH0KIAorCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7ImlzX3RyYWNpbmciLCAoUHlDRnVuY3Rpb24pcHlfdHJhY2VtYWxsb2NfaXNfdHJhY2luZywKICAgICAgTUVUSF9OT0FSR1MsIHRyYWNlbWFsbG9jX2lzX3RyYWNpbmdfZG9jfSwKQEAgLTEzNDIsNiArMTY2Myw3IEBACiAgICAgcmV0dXJuIG07CiB9CiAKKwogc3RhdGljIGludAogcGFyc2Vfc3lzX3hvcHRpb25zKFB5T2JqZWN0ICp2YWx1ZSkKIHsKQEAgLTEzNzAsNiArMTY5Miw3IEBACiAgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobmZyYW1lLCBsb25nLCBpbnQpOwogfQogCisKIGludAogX1B5VHJhY2VNYWxsb2NfSW5pdCh2b2lkKQogewpAQCAtMTQyOCw2ICsxNzUxLDcgQEAKICAgICByZXR1cm4gdHJhY2VtYWxsb2Nfc3RhcnQobmZyYW1lKTsKIH0KIAorCiB2b2lkCiBfUHlUcmFjZU1hbGxvY19GaW5pKHZvaWQpCiB7CkBAIC0xNDM3LDMgKzE3NjEsNTkgQEAKICAgICB0cmFjZW1hbGxvY19kZWluaXQoKTsKIH0KIAoraW50CitfUHlUcmFjZU1hbGxvY19UcmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpbnQgcmVzOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxfc3RhdGU7CisjZW5kaWYKKworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2MgaXMgbm90IHRyYWNpbmc6IGRvIG5vdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgZ2lsX3N0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKKyNlbmRpZgorCisgICAgVEFCTEVTX0xPQ0soKTsKKyAgICByZXMgPSB0cmFjZW1hbGxvY19hZGRfdHJhY2UoZG9tYWluLCBwdHIsIHNpemUpOworICAgIFRBQkxFU19VTkxPQ0soKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKGdpbF9zdGF0ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzOworfQorCisKK2ludAorX1B5VHJhY2VNYWxsb2NfVW50cmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykgeworICAgICAgICAvKiB0cmFjZW1hbGxvYyBpcyBub3QgdHJhY2luZzogZG8gbm90aGluZyAqLworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgVEFCTEVTX0xPQ0soKTsKKyAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UoZG9tYWluLCBwdHIpOworICAgIFRBQkxFU19VTkxPQ0soKTsKKworICAgIHJldHVybiAwOworfQorCisKK1B5T2JqZWN0KgorX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKK3sKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworCisgICAgdHJhY2ViYWNrID0gdHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhkb21haW4sIHB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrLCBOVUxMKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dpbmFwaS5jIGIvTW9kdWxlcy9fd2luYXBpLmMKaW5kZXggZWRjNmNmNC4uOTFkNGYwMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fd2luYXBpLmMKKysrIGIvTW9kdWxlcy9fd2luYXBpLmMKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKICAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUiLCBkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKLSAgICAgICAgICAgICdpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKVxuICAgIFB5X1JFVFVSTl9OT05FO1xuJykKKyAgICAgICAgICAgICdpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7XG4gICAgUHlfUkVUVVJOX05PTkU7XG59XG4nKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7XG4nKQogCkBAIC0xODgsNyArMTg4LDcgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpO1xuJykKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTM3NDA3Njk3OTU5NmViYmFdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTk0ODE5ZTcyZDJjNmQ1NThdKi8KIAogI2luY2x1ZGUgImNsaW5pYy9fd2luYXBpLmMuaCIKIApAQCAtNDg2LDcgKzQ4Niw3IEBACiAgICAgY29uc3QgVVNIT1JUIHByZWZpeF9sZW4gPSA0OwogICAgIFVTSE9SVCBwcmludF9sZW4gPSAwOwogICAgIFVTSE9SVCByZGJfc2l6ZSA9IDA7Ci0gICAgUFJFUEFSU0VfREFUQV9CVUZGRVIgcmRiID0gTlVMTDsKKyAgICBfUHlfUFJFUEFSU0VfREFUQV9CVUZGRVIgcmRiID0gTlVMTDsKIAogICAgIC8qIEp1bmN0aW9uIHBvaW50IGNyZWF0aW9uICovCiAgICAgSEFORExFIGp1bmN0aW9uID0gTlVMTDsKQEAgLTU0MiwxOCArNTQyLDE4IEBACiAgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBwcmludCBuYW1lIGluIGJ5dGVzCiAgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBzdWJzdGl0dXRlIG5hbWUgaW4gYnl0ZXMKICAgICAgICAgIC0gdGhlIHNpemUgb2YgdHdvIE5VTCB0ZXJtaW5hdG9ycyBpbiBieXRlcyAqLwotICAgIHJkYl9zaXplID0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSArCisgICAgcmRiX3NpemUgPSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSArCiAgICAgICAgIHNpemVvZihyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyKSAtCiAgICAgICAgIHNpemVvZihyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIpICsKICAgICAgICAgLyogVHdvICsxJ3MgZm9yIE5VTCB0ZXJtaW5hdG9ycy4gKi8KICAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4gKyAxICsgcHJpbnRfbGVuICsgMSkgKiBzaXplb2YoV0NIQVIpOwotICAgIHJkYiA9IChQUkVQQVJTRV9EQVRBX0JVRkZFUilQeU1lbV9SYXdNYWxsb2MocmRiX3NpemUpOworICAgIHJkYiA9IChfUHlfUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKICAgICBpZiAocmRiID09IE5VTEwpCiAgICAgICAgIGdvdG8gY2xlYW51cDsKIAogICAgIG1lbXNldChyZGIsIDAsIHJkYl9zaXplKTsKICAgICByZGItPlJlcGFyc2VUYWcgPSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVDsKLSAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFOworICAgIHJkYi0+UmVwYXJzZURhdGFMZW5ndGggPSByZGJfc2l6ZSAtIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFOwogICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVPZmZzZXQgPSAwOwogICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVMZW5ndGggPQogICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbikgKiBzaXplb2YoV0NIQVIpOwpAQCAtNjc0LDcgKzY3NCw3IEBACiAvKiBoZWxwZXJzIGZvciBjcmVhdGVwcm9jZXNzICovCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nCi1nZXR1bG9uZyhQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQorZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBQeU9iamVjdCogdmFsdWU7CiAgICAgdW5zaWduZWQgbG9uZyByZXQ7CkBAIC02OTAsNyArNjkwLDcgQEAKIH0KIAogc3RhdGljIEhBTkRMRQotZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCitnZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBQeU9iamVjdCogdmFsdWU7CiAgICAgSEFORExFIHJldDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYWRkcmluZm8uaCBiL01vZHVsZXMvYWRkcmluZm8uaAppbmRleCAxY2I2ZjBlLi5jM2M4NjI0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2FkZHJpbmZvLmgKKysrIGIvTW9kdWxlcy9hZGRyaW5mby5oCkBAIC0xNDEsMTEgKzE0MSw3IEBACiAgKiBSRkMgMjU1MzogcHJvdG9jb2wtaW5kZXBlbmRlbnQgcGxhY2Vob2xkZXIgZm9yIHNvY2tldCBhZGRyZXNzZXMKICAqLwogI2RlZmluZSBfU1NfTUFYU0laRSAgICAgMTI4Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSNkZWZpbmUgX1NTX0FMSUdOU0laRSAgIChzaXplb2YoUFlfTE9OR19MT05HKSkKLSNlbHNlCi0jZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKGRvdWJsZSkpCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KKyNkZWZpbmUgX1NTX0FMSUdOU0laRSAgIChzaXplb2YobG9uZyBsb25nKSkKICNkZWZpbmUgX1NTX1BBRDFTSVpFICAgIChfU1NfQUxJR05TSVpFIC0gc2l6ZW9mKHVfY2hhcikgKiAyKQogI2RlZmluZSBfU1NfUEFEMlNJWkUgICAgKF9TU19NQVhTSVpFIC0gc2l6ZW9mKHVfY2hhcikgKiAyIC0gXAogICAgICAgICAgICAgICAgIF9TU19QQUQxU0laRSAtIF9TU19BTElHTlNJWkUpCkBAIC0xNTgsMTEgKzE1NCw3IEBACiAgICAgdW5zaWduZWQgc2hvcnQgc3NfZmFtaWx5OyAgICAgICAgICAgLyogYWRkcmVzcyBmYW1pbHkgKi8KICNlbmRpZiAvKiBIQVZFX1NPQ0tBRERSX1NBX0xFTiAqLwogICAgIGNoYXIgICAgICAgIF9fc3NfcGFkMVtfU1NfUEFEMVNJWkVdOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIF9fc3NfYWxpZ247ICAgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KLSNlbHNlCi0gICAgZG91YmxlIF9fc3NfYWxpZ247ICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KKyAgICBsb25nIGxvbmcgX19zc19hbGlnbjsgICAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwogICAgIGNoYXIgICAgICAgIF9fc3NfcGFkMltfU1NfUEFEMlNJWkVdOwogfTsKICNlbmRpZiAvKiAhSEFWRV9TT0NLQUREUl9TVE9SQUdFICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggYTQ5NjZiNC4uMmNhYThlZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMzEsNyArMzEsNyBAQAogICAgIGludCBpdGVtc2l6ZTsKICAgICBQeU9iamVjdCAqICgqZ2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QpOwogICAgIGludCAoKnNldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKLSAgICBjaGFyICpmb3JtYXRzOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdHM7CiAgICAgaW50IGlzX2ludGVnZXJfdHlwZTsKICAgICBpbnQgaXNfc2lnbmVkOwogfTsKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBQeU9iamVjdF9WQVJfSEVBRAogICAgIGNoYXIgKm9iX2l0ZW07CiAgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKm9iX2Rlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpvYl9kZXNjcjsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiAgICAgaW50IG9iX2V4cG9ydHM7ICAvKiBOdW1iZXIgb2YgZXhwb3J0ZWQgYnVmZmVycyAqLwogfSBhcnJheW9iamVjdDsKQEAgLTQxOCwyMiArNDE4LDIwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgUHlPYmplY3QgKgogcV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQogewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKCgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSk7CiB9CiAKIHN0YXRpYyBpbnQKIHFfc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ4KSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChpID49IDApCi0gICAgICAgICgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICAgICAgKChsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OwogICAgIHJldHVybiAwOwogfQogCkBAIC00NDEsMjAgKzQzOSwyMCBAQAogUVFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKAotICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7CisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldKTsKIH0KIAogc3RhdGljIGludAogUVFfc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgewogICAgICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKLSAgICAgICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKHggPT0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFBZX0xPTkdfTE9ORyB5OworICAgICAgICBsb25nIGxvbmcgeTsKICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ5KSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKHkgPCAwKSB7CkBAIC00NjIsMTQgKzQ2MCwxMyBAQAogICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmcgaXMgbGVzcyB0aGFuIG1pbmltdW0iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICB4ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl5OworICAgICAgICB4ID0gKHVuc2lnbmVkIGxvbmcgbG9uZyl5OwogICAgIH0KIAogICAgIGlmIChpID49IDApCi0gICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OwogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBmX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCkBAIC01MTEsNyArNTA4LDcgQEAKICAqIERvbid0IGZvcmdldCB0byB1cGRhdGUgdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKCkgaWYgeW91IGFkZCBhIG5ldwogICogdHlwZWNvZGUuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgYXJyYXlkZXNjciBkZXNjcmlwdG9yc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyIGRlc2NyaXB0b3JzW10gPSB7CiAgICAgeydiJywgMSwgYl9nZXRpdGVtLCBiX3NldGl0ZW0sICJiIiwgMSwgMX0sCiAgICAgeydCJywgMSwgQkJfZ2V0aXRlbSwgQkJfc2V0aXRlbSwgIkIiLCAxLCAwfSwKICAgICB7J3UnLCBzaXplb2YoUHlfVU5JQ09ERSksIHVfZ2V0aXRlbSwgdV9zZXRpdGVtLCAidSIsIDAsIDB9LApAQCAtNTIxLDEwICs1MTgsOCBAQAogICAgIHsnSScsIHNpemVvZihpbnQpLCBJSV9nZXRpdGVtLCBJSV9zZXRpdGVtLCAiSSIsIDEsIDB9LAogICAgIHsnbCcsIHNpemVvZihsb25nKSwgbF9nZXRpdGVtLCBsX3NldGl0ZW0sICJsIiwgMSwgMX0sCiAgICAgeydMJywgc2l6ZW9mKGxvbmcpLCBMTF9nZXRpdGVtLCBMTF9zZXRpdGVtLCAiTCIsIDEsIDB9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgeydxJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIHFfZ2V0aXRlbSwgcV9zZXRpdGVtLCAicSIsIDEsIDF9LAotICAgIHsnUScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBRUV9nZXRpdGVtLCBRUV9zZXRpdGVtLCAiUSIsIDEsIDB9LAotI2VuZGlmCisgICAgeydxJywgc2l6ZW9mKGxvbmcgbG9uZyksIHFfZ2V0aXRlbSwgcV9zZXRpdGVtLCAicSIsIDEsIDF9LAorICAgIHsnUScsIHNpemVvZihsb25nIGxvbmcpLCBRUV9nZXRpdGVtLCBRUV9zZXRpdGVtLCAiUSIsIDEsIDB9LAogICAgIHsnZicsIHNpemVvZihmbG9hdCksIGZfZ2V0aXRlbSwgZl9zZXRpdGVtLCAiZiIsIDAsIDB9LAogICAgIHsnZCcsIHNpemVvZihkb3VibGUpLCBkX2dldGl0ZW0sIGRfc2V0aXRlbSwgImQiLCAwLCAwfSwKICAgICB7J1wwJywgMCwgMCwgMCwgMCwgMCwgMH0gLyogU2VudGluZWwgKi8KQEAgLTUzOSw3ICs1MzQsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YWQ0M2QzN2U5NDJhODg1NF0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3YXJyYXlvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeV9zc2l6ZV90IHNpemUsIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcikKK25ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCiB7CiAgICAgYXJyYXlvYmplY3QgKm9wOwogICAgIHNpemVfdCBuYnl0ZXM7CkBAIC04NDEsMTAgKzgzNiwxMCBAQAogICAgICAgICBtZW1zZXQobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW1bMF0sIG5ld2J5dGVzKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBvbGRieXRlczsKLSAgICAgICAgUHlfTUVNQ1BZKG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtLCBvbGRieXRlcyk7CisgICAgICAgIG1lbWNweShucC0+b2JfaXRlbSwgYS0+b2JfaXRlbSwgb2xkYnl0ZXMpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5ld2J5dGVzKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG5jb3B5ID0gKGRvbmUgPD0gbmV3Ynl0ZXMtZG9uZSkgPyBkb25lIDogbmV3Ynl0ZXMtZG9uZTsKLSAgICAgICAgICAgIFB5X01FTUNQWShucC0+b2JfaXRlbStkb25lLCBucC0+b2JfaXRlbSwgbmNvcHkpOworICAgICAgICAgICAgbWVtY3B5KG5wLT5vYl9pdGVtK2RvbmUsIG5wLT5vYl9pdGVtLCBuY29weSk7CiAgICAgICAgICAgICBkb25lICs9IG5jb3B5OwogICAgICAgICB9CiAgICAgfQpAQCAtODUyLDM3ICs4NDcsMTAgQEAKIH0KIAogc3RhdGljIGludAotYXJyYXlfYXNzX3NsaWNlKGFycmF5b2JqZWN0ICphLCBQeV9zc2l6ZV90IGlsb3csIFB5X3NzaXplX3QgaWhpZ2gsIFB5T2JqZWN0ICp2KQorYXJyYXlfZGVsX3NsaWNlKGFycmF5b2JqZWN0ICphLCBQeV9zc2l6ZV90IGlsb3csIFB5X3NzaXplX3QgaWhpZ2gpCiB7CiAgICAgY2hhciAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IG47IC8qIFNpemUgb2YgcmVwbGFjZW1lbnQgYXJyYXkgKi8KICAgICBQeV9zc2l6ZV90IGQ7IC8qIENoYW5nZSBpbiBzaXplICovCi0jZGVmaW5lIGIgKChhcnJheW9iamVjdCAqKXYpCi0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgbiA9IDA7Ci0gICAgZWxzZSBpZiAoYXJyYXlfQ2hlY2sodikpIHsKLSAgICAgICAgbiA9IFB5X1NJWkUoYik7Ci0gICAgICAgIGlmIChhID09IGIpIHsKLSAgICAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSAiYVtpOmpdID0gYSIgLS0gY29weSBiIGZpcnN0ICovCi0gICAgICAgICAgICBpbnQgcmV0OwotICAgICAgICAgICAgdiA9IGFycmF5X3NsaWNlKGIsIDAsIG4pOwotICAgICAgICAgICAgaWYgKCF2KQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHJldCA9IGFycmF5X2Fzc19zbGljZShhLCBpbG93LCBpaGlnaCwgdik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0gICAgICAgIGlmIChiLT5vYl9kZXNjciAhPSBhLT5vYl9kZXNjcikgewotICAgICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICJjYW4gb25seSBhc3NpZ24gYXJyYXkgKG5vdCBcIiUuMjAwc1wiKSB0byBhcnJheSBzbGljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKGlsb3cgPCAwKQogICAgICAgICBpbG93ID0gMDsKICAgICBlbHNlIGlmIChpbG93ID4gUHlfU0laRShhKSkKQEAgLTg5NCw3ICs4NjIsNyBAQAogICAgIGVsc2UgaWYgKGloaWdoID4gUHlfU0laRShhKSkKICAgICAgICAgaWhpZ2ggPSBQeV9TSVpFKGEpOwogICAgIGl0ZW0gPSBhLT5vYl9pdGVtOwotICAgIGQgPSBuIC0gKGloaWdoLWlsb3cpOworICAgIGQgPSBpaGlnaC1pbG93OwogICAgIC8qIElzc3VlICM0NTA5OiBJZiB0aGUgYXJyYXkgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMgYW5kIHRoZSBzbGljZQogICAgICAgIGFzc2lnbm1lbnQgd291bGQgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBhcnJheSwgZmFpbCBlYXJseSB0byBtYWtlCiAgICAgICAgc3VyZSB3ZSBkb24ndCBtb2RpZnkgaXQuICovCkBAIC05MDMsMjUgKzg3MSwxNCBAQAogICAgICAgICAgICAgImNhbm5vdCByZXNpemUgYW4gYXJyYXkgdGhhdCBpcyBleHBvcnRpbmcgYnVmZmVycyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmIChkIDwgMCkgeyAvKiBEZWxldGUgLWQgaXRlbXMgKi8KLSAgICAgICAgbWVtbW92ZShpdGVtICsgKGloaWdoK2QpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKKyAgICBpZiAoZCA+IDApIHsgLyogRGVsZXRlIGQgaXRlbXMgKi8KKyAgICAgICAgbWVtbW92ZShpdGVtICsgKGloaWdoLWQpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKICAgICAgICAgICAgIGl0ZW0gKyBpaGlnaCphLT5vYl9kZXNjci0+aXRlbXNpemUsCiAgICAgICAgICAgICAoUHlfU0laRShhKS1paGlnaCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplKTsKLSAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpICsgZCkgPT0gLTEpCisgICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSAtIGQpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbHNlIGlmIChkID4gMCkgeyAvKiBJbnNlcnQgZCBpdGVtcyAqLwotICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgKyBkKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbWVtbW92ZShpdGVtICsgKGloaWdoK2QpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKLSAgICAgICAgICAgIGl0ZW0gKyBpaGlnaCphLT5vYl9kZXNjci0+aXRlbXNpemUsCi0gICAgICAgICAgICAoUHlfU0laRShhKS1paGlnaCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplKTsKLSAgICB9Ci0gICAgaWYgKG4gPiAwKQotICAgICAgICBtZW1jcHkoaXRlbSArIGlsb3cqYS0+b2JfZGVzY3ItPml0ZW1zaXplLCBiLT5vYl9pdGVtLAotICAgICAgICAgICAgICAgbipiLT5vYl9kZXNjci0+aXRlbXNpemUpOwogICAgIHJldHVybiAwOwotI3VuZGVmIGIKIH0KIAogc3RhdGljIGludApAQCAtOTMzLDcgKzg5MCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGFycmF5X2Fzc19zbGljZShhLCBpLCBpKzEsIHYpOworICAgICAgICByZXR1cm4gYXJyYXlfZGVsX3NsaWNlKGEsIGksIGkrMSk7CiAgICAgcmV0dXJuICgqYS0+b2JfZGVzY3ItPnNldGl0ZW0pKGEsIGksIHYpOwogfQogCkBAIC0xMTYzLDggKzExMjAsNyBAQAogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZmksIHYsIFB5X0VRKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGZpKTsKICAgICAgICAgaWYgKGNtcCA+IDApIHsKLSAgICAgICAgICAgIGlmIChhcnJheV9hc3Nfc2xpY2Uoc2VsZiwgaSwgaSsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKU5VTEwpICE9IDApCisgICAgICAgICAgICBpZiAoYXJyYXlfZGVsX3NsaWNlKHNlbGYsIGksIGkrMSkgIT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMTIwNyw3ICsxMTYzLDcgQEAKICAgICB2ID0gZ2V0YXJyYXlpdGVtKChQeU9iamVjdCAqKXNlbGYsIGkpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcnJheV9hc3Nfc2xpY2Uoc2VsZiwgaSwgaSsxLCAoUHlPYmplY3QgKilOVUxMKSAhPSAwKSB7CisgICAgaWYgKGFycmF5X2RlbF9zbGljZShzZWxmLCBpLCBpKzEpICE9IDApIHsKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xODYxLDE2ICsxODE3LDE0IEBACiAgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyk7CiAgICAgICAgIGlzX3NpZ25lZCA9IDA7CiAgICAgICAgIGJyZWFrOwotI2lmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6Ci0gICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlICdRJzoKLSAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7CiAgICAgICAgIGlzX3NpZ25lZCA9IDA7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFVOS05PV05fRk9STUFUOwogICAgIH0KQEAgLTE5NTQsNyArMTkwOCw3IEBACiB7CiAgICAgUHlPYmplY3QgKmNvbnZlcnRlZF9pdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoIVB5VHlwZV9DaGVjayhhcnJheXR5cGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0yMDkyLDcgKzIwNDYsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IGl0ZW1jb3VudCA9IFB5X1NJWkUoaXRlbXMpIC8gbWZfZGVzY3Iuc2l6ZTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbWVtc3RyID0KICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcoaXRlbXMpOwotICAgICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgICAgICAvKiBJZiBwb3NzaWJsZSwgdHJ5IHRvIHBhY2sgYXJyYXkncyBpdGVtcyB1c2luZyBhIGRhdGEgdHlwZQogICAgICAgICAgKiB0aGF0IGZpdHMgYmV0dGVyLiBUaGlzIG1heSByZXN1bHQgaW4gYW4gYXJyYXkgd2l0aCBuYXJyb3dlcgpAQCAtMjU2Miw3ICsyNTE2LDcgQEAKICAgICB2aWV3LT5mb3JtYXQgPSBOVUxMOwogICAgIHZpZXctPmludGVybmFsID0gTlVMTDsKICAgICBpZiAoKGZsYWdzICYgUHlCVUZfRk9STUFUKSA9PSBQeUJVRl9GT1JNQVQpIHsKLSAgICAgICAgdmlldy0+Zm9ybWF0ID0gc2VsZi0+b2JfZGVzY3ItPmZvcm1hdHM7CisgICAgICAgIHZpZXctPmZvcm1hdCA9IChjaGFyICopc2VsZi0+b2JfZGVzY3ItPmZvcm1hdHM7CiAjaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIGlmIChzZWxmLT5vYl9kZXNjci0+dHlwZWNvZGUgPT0gJ3UnKSB7CiAgICAgICAgICAgICB2aWV3LT5mb3JtYXQgPSAidyI7CkBAIC0yNjAzLDcgKzI1NTcsNyBAQAogewogICAgIGludCBjOwogICAgIFB5T2JqZWN0ICppbml0aWFsID0gTlVMTCwgKml0ID0gTlVMTDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKHR5cGUgPT0gJkFycmF5dHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoImFycmF5LmFycmF5KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzMyLDExICsyNjg2LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIHEsIFEsIGYgb3IgZCkiKTsKLSNlbHNlCi0gICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgZiBvciBkKSIpOwotI2VuZGlmCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTI4ODMsOSArMjgzMywyMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5aXRlcl9uZXh0KGFycmF5aXRlcm9iamVjdCAqaXQpCiB7CisgICAgYXJyYXlvYmplY3QgKmFvOworCisgICAgYXNzZXJ0KGl0ICE9IE5VTEwpOwogICAgIGFzc2VydChQeUFycmF5SXRlcl9DaGVjayhpdCkpOwotICAgIGlmIChpdC0+aW5kZXggPCBQeV9TSVpFKGl0LT5hbykpCi0gICAgICAgIHJldHVybiAoKml0LT5nZXRpdGVtKShpdC0+YW8sIGl0LT5pbmRleCsrKTsKKyAgICBhbyA9IGl0LT5hbzsKKyAgICBpZiAoYW8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYXNzZXJ0KGFycmF5X0NoZWNrKGFvKSk7CisgICAgaWYgKGl0LT5pbmRleCA8IFB5X1NJWkUoYW8pKSB7CisgICAgICAgIHJldHVybiAoKml0LT5nZXRpdGVtKShhbywgaXQtPmluZGV4KyspOworICAgIH0KKyAgICBpdC0+YW8gPSBOVUxMOworICAgIFB5X0RFQ1JFRihhbyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTI5MTQsOCArMjg3NSwxMSBAQAogYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc4OThhNTJlOGU2NmUwMTYgaW5wdXQ9YTA2MmVhMWU5OTUxNDE3YV0qLwogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YW8sIHNlbGYtPmluZGV4KTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIik7CisgICAgaWYgKHNlbGYtPmFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgZnVuYyk7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIGZ1bmMsIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTI5OTUsNyArMjk1OSw3IEBACiAgICAgY2hhciBidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGRlc2NyaXB0b3JzKV0sICpwOwogICAgIFB5T2JqZWN0ICp0eXBlY29kZXM7CiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmQXJyYXl0eXBlKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggMWUxMzFkMi4uZGNkNzc4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTUsOCArNSw2IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKIAotdHlwZWRlZiBzaG9ydCBQeUludDE2OwotCiAjaWYgZGVmaW5lZChfX0NIQVJfVU5TSUdORURfXykKICNpZiBkZWZpbmVkKHNpZ25lZCkKIC8qIFRoaXMgbW9kdWxlIGN1cnJlbnRseSBkb2VzIG5vdCB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgb25seSB1bnNpZ25lZApAQCAtNTEsMTMgKzQ5LDE1IEBACiAjZGVmaW5lIFNFR19TSElGVCAgICAgICAoNCkgICAgICAgICAgICAgLyogTGVmdCBzaGlmdCBmb3Igc2VnbWVudCBudW1iZXIuICovCiAjZGVmaW5lIFNFR19NQVNLICAgICAgICAoMHg3MCkgICAgICAgICAgLyogU2VnbWVudCBmaWVsZCBtYXNrLiAqLwogCi1zdGF0aWMgUHlJbnQxNiBzZWdfYWVuZFs4XSA9IHsweDFGLCAweDNGLCAweDdGLCAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRkYsIDB4M0ZGLCAweDdGRiwgMHhGRkZ9Owotc3RhdGljIFB5SW50MTYgc2VnX3VlbmRbOF0gPSB7MHgzRiwgMHg3RiwgMHhGRiwgMHgxRkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNGRiwgMHg3RkYsIDB4RkZGLCAweDFGRkZ9Oworc3RhdGljIGNvbnN0IGludDE2X3Qgc2VnX2FlbmRbOF0gPSB7CisgICAgMHgxRiwgMHgzRiwgMHg3RiwgMHhGRiwgMHgxRkYsIDB4M0ZGLCAweDdGRiwgMHhGRkYKK307CitzdGF0aWMgY29uc3QgaW50MTZfdCBzZWdfdWVuZFs4XSA9IHsKKyAgICAweDNGLCAweDdGLCAweEZGLCAweDFGRiwgMHgzRkYsIDB4N0ZGLCAweEZGRiwgMHgxRkZGCit9OwogCi1zdGF0aWMgUHlJbnQxNgotc2VhcmNoKFB5SW50MTYgdmFsLCBQeUludDE2ICp0YWJsZSwgaW50IHNpemUpCitzdGF0aWMgaW50MTZfdAorc2VhcmNoKGludDE2X3QgdmFsLCBjb25zdCBpbnQxNl90ICp0YWJsZSwgaW50IHNpemUpCiB7CiAgICAgaW50IGk7CiAKQEAgLTcwLDcgKzcwLDcgQEAKICNkZWZpbmUgc3RfdWxhdzJsaW5lYXIxNih1YykgKF9zdF91bGF3MmxpbmVhcjE2W3VjXSkKICNkZWZpbmUgc3RfYWxhdzJsaW5lYXIxNih1YykgKF9zdF9hbGF3MmxpbmVhcjE2W3VjXSkKIAotc3RhdGljIFB5SW50MTYgX3N0X3VsYXcybGluZWFyMTZbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQxNl90IF9zdF91bGF3MmxpbmVhcjE2WzI1Nl0gPSB7CiAgICAgLTMyMTI0LCAgLTMxMTAwLCAgLTMwMDc2LCAgLTI5MDUyLCAgLTI4MDI4LCAgLTI3MDA0LCAgLTI1OTgwLAogICAgIC0yNDk1NiwgIC0yMzkzMiwgIC0yMjkwOCwgIC0yMTg4NCwgIC0yMDg2MCwgIC0xOTgzNiwgIC0xODgxMiwKICAgICAtMTc3ODgsICAtMTY3NjQsICAtMTU5OTYsICAtMTU0ODQsICAtMTQ5NzIsICAtMTQ0NjAsICAtMTM5NDgsCkBAIC0xNDMsMTAgKzE0MywxMCBAQAogICogSm9obiBXaWxleSAmIFNvbnMsIHBwcyA5OC0xMTEgYW5kIDQ3Mi00NzYuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyCi1zdF8xNGxpbmVhcjJ1bGF3KFB5SW50MTYgcGNtX3ZhbCkgICAgICAgLyogMidzIGNvbXBsZW1lbnQgKDE0LWJpdCByYW5nZSkgKi8KK3N0XzE0bGluZWFyMnVsYXcoaW50MTZfdCBwY21fdmFsKSAgICAgICAvKiAyJ3MgY29tcGxlbWVudCAoMTQtYml0IHJhbmdlKSAqLwogewotICAgIFB5SW50MTYgICAgICAgICBtYXNrOwotICAgIFB5SW50MTYgICAgICAgICBzZWc7CisgICAgaW50MTZfdCAgICAgICAgIG1hc2s7CisgICAgaW50MTZfdCAgICAgICAgIHNlZzsKICAgICB1bnNpZ25lZCBjaGFyICAgdXZhbDsKIAogICAgIC8qIHUtbGF3IGludmVydHMgYWxsIGJpdHMgKi8KQEAgLTE3Niw3ICsxNzYsNyBAQAogCiB9CiAKLXN0YXRpYyBQeUludDE2IF9zdF9hbGF3MmxpbmVhcjE2WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgaW50MTZfdCBfc3RfYWxhdzJsaW5lYXIxNlsyNTZdID0gewogICAgICAtNTUwNCwgICAtNTI0OCwgICAtNjAxNiwgICAtNTc2MCwgICAtNDQ4MCwgICAtNDIyNCwgICAtNDk5MiwKICAgICAgLTQ3MzYsICAgLTc1NTIsICAgLTcyOTYsICAgLTgwNjQsICAgLTc4MDgsICAgLTY1MjgsICAgLTYyNzIsCiAgICAgIC03MDQwLCAgIC02Nzg0LCAgIC0yNzUyLCAgIC0yNjI0LCAgIC0zMDA4LCAgIC0yODgwLCAgIC0yMjQwLApAQCAtMjM3LDEwICsyMzcsMTAgQEAKICAqIEpvaG4gV2lsZXkgJiBTb25zLCBwcHMgOTgtMTExIGFuZCA0NzItNDc2LgogICovCiBzdGF0aWMgdW5zaWduZWQgY2hhcgotc3RfbGluZWFyMmFsYXcoUHlJbnQxNiBwY21fdmFsKSAvKiAyJ3MgY29tcGxlbWVudCAoMTMtYml0IHJhbmdlKSAqLworc3RfbGluZWFyMmFsYXcoaW50MTZfdCBwY21fdmFsKSAvKiAyJ3MgY29tcGxlbWVudCAoMTMtYml0IHJhbmdlKSAqLwogewotICAgIFB5SW50MTYgICAgICAgICBtYXNrOwotICAgIHNob3J0ICAgICAgICAgICBzZWc7CisgICAgaW50MTZfdCAgICAgICAgIG1hc2s7CisgICAgaW50MTZfdCAgICAgICAgIHNlZzsKICAgICB1bnNpZ25lZCBjaGFyICAgYXZhbDsKIAogICAgIC8qIEEtbGF3IHVzaW5nIGV2ZW4gYml0IGludmVyc2lvbiAqLwpAQCAtMjcwLDEyICsyNzAsMTIgQEAKIC8qIEVuZCBvZiBjb2RlIHRha2VuIGZyb20gc294ICovCiAKIC8qIEludGVsIEFEUENNIHN0ZXAgdmFyaWF0aW9uIHRhYmxlICovCi1zdGF0aWMgaW50IGluZGV4VGFibGVbMTZdID0geworc3RhdGljIGNvbnN0IGludCBpbmRleFRhYmxlWzE2XSA9IHsKICAgICAtMSwgLTEsIC0xLCAtMSwgMiwgNCwgNiwgOCwKICAgICAtMSwgLTEsIC0xLCAtMSwgMiwgNCwgNiwgOCwKIH07CiAKLXN0YXRpYyBpbnQgc3RlcHNpemVUYWJsZVs4OV0gPSB7CitzdGF0aWMgY29uc3QgaW50IHN0ZXBzaXplVGFibGVbODldID0gewogICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTYsIDE3LAogICAgIDE5LCAyMSwgMjMsIDI1LCAyOCwgMzEsIDM0LCAzNywgNDEsIDQ1LAogICAgIDUwLCA1NSwgNjAsIDY2LCA3MywgODAsIDg4LCA5NywgMTA3LCAxMTgsCkBAIC0yOTQsOCArMjk0LDggQEAKIAogCiAjZGVmaW5lIEdFVElOVDgoY3AsIGkpICAgICAgICAgIEdFVElOVFgoc2lnbmVkIGNoYXIsIChjcCksIChpKSkKLSNkZWZpbmUgR0VUSU5UMTYoY3AsIGkpICAgICAgICAgR0VUSU5UWChzaG9ydCwgKGNwKSwgKGkpKQotI2RlZmluZSBHRVRJTlQzMihjcCwgaSkgICAgICAgICBHRVRJTlRYKFBZX0lOVDMyX1QsIChjcCksIChpKSkKKyNkZWZpbmUgR0VUSU5UMTYoY3AsIGkpICAgICAgICAgR0VUSU5UWChpbnQxNl90LCAoY3ApLCAoaSkpCisjZGVmaW5lIEdFVElOVDMyKGNwLCBpKSAgICAgICAgIEdFVElOVFgoaW50MzJfdCwgKGNwKSwgKGkpKQogCiAjaWYgV09SRFNfQklHRU5ESUFOCiAjZGVmaW5lIEdFVElOVDI0KGNwLCBpKSAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTMxMSw4ICszMTEsOCBAQAogCiAKICNkZWZpbmUgU0VUSU5UOChjcCwgaSwgdmFsKSAgICAgU0VUSU5UWChzaWduZWQgY2hhciwgKGNwKSwgKGkpLCAodmFsKSkKLSNkZWZpbmUgU0VUSU5UMTYoY3AsIGksIHZhbCkgICAgU0VUSU5UWChzaG9ydCwgKGNwKSwgKGkpLCAodmFsKSkKLSNkZWZpbmUgU0VUSU5UMzIoY3AsIGksIHZhbCkgICAgU0VUSU5UWChQWV9JTlQzMl9ULCAoY3ApLCAoaSksICh2YWwpKQorI2RlZmluZSBTRVRJTlQxNihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKGludDE2X3QsIChjcCksIChpKSwgKHZhbCkpCisjZGVmaW5lIFNFVElOVDMyKGNwLCBpLCB2YWwpICAgIFNFVElOVFgoaW50MzJfdCwgKGNwKSwgKGkpLCAodmFsKSkKIAogI2lmIFdPUkRTX0JJR0VORElBTgogI2RlZmluZSBTRVRJTlQyNChjcCwgaSwgdmFsKSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQ0NCw3ICs0NDQsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgZnJhZ21lbnQtPmxlbjsgaSArPSB3aWR0aCkgewogICAgICAgICBpbnQgdmFsID0gR0VUUkFXU0FNUExFKHdpZHRoLCBmcmFnbWVudC0+YnVmLCBpKTsKLSAgICAgICAgaWYgKHZhbCA8IDApIGFic3ZhbCA9ICgtdmFsKTsKKyAgICAgICAgLyogQ2FzdCB0byB1bnNpZ25lZCBiZWZvcmUgbmVnYXRpbmcuIFVuc2lnbmVkIG92ZXJmbG93IGlzIHdlbGwtCisgICAgICAgIGRlZmluZWQsIGJ1dCBzaWduZWQgb3ZlcmZsb3cgaXMgbm90LiAqLworICAgICAgICBpZiAodmFsIDwgMCkgYWJzdmFsID0gKHVuc2lnbmVkIGludCktKGludDY0X3QpdmFsOwogICAgICAgICBlbHNlIGFic3ZhbCA9IHZhbDsKICAgICAgICAgaWYgKGFic3ZhbCA+IG1heCkgbWF4ID0gYWJzdmFsOwogICAgIH0KQEAgLTU0MCw3ICs1NDIsNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXMpOwogfQogCi1zdGF0aWMgZG91YmxlIF9zdW0yKGNvbnN0IHNob3J0ICphLCBjb25zdCBzaG9ydCAqYiwgUHlfc3NpemVfdCBsZW4pCitzdGF0aWMgZG91YmxlIF9zdW0yKGNvbnN0IGludDE2X3QgKmEsIGNvbnN0IGludDE2X3QgKmIsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBkb3VibGUgc3VtID0gMC4wOwpAQCAtNTk4LDcgKzYwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NzUyMzA2ZDgzY2JiYWRhIGlucHV0PTYyYzMwNTYwNWUxODNjOWFdKi8KIHsKLSAgICBjb25zdCBzaG9ydCAqY3AxLCAqY3AyOworICAgIGNvbnN0IGludDE2X3QgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgUHlfc3NpemVfdCBqLCBiZXN0X2o7CiAgICAgZG91YmxlIGFqX20xLCBhal9sbTE7CkBAIC02MDgsOSArNjEwLDkgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwgIlN0cmluZ3Mgc2hvdWxkIGJlIGV2ZW4tc2l6ZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNwMSA9IChjb25zdCBzaG9ydCAqKWZyYWdtZW50LT5idWY7CisgICAgY3AxID0gKGNvbnN0IGludDE2X3QgKilmcmFnbWVudC0+YnVmOwogICAgIGxlbjEgPSBmcmFnbWVudC0+bGVuID4+IDE7Ci0gICAgY3AyID0gKGNvbnN0IHNob3J0ICopcmVmZXJlbmNlLT5idWY7CisgICAgY3AyID0gKGNvbnN0IGludDE2X3QgKilyZWZlcmVuY2UtPmJ1ZjsKICAgICBsZW4yID0gcmVmZXJlbmNlLT5sZW4gPj4gMTsKIAogICAgIGlmIChsZW4xIDwgbGVuMikgewpAQCAtNjY3LDcgKzY2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNGVhOTU2NTJjMWFmY2Y4IGlucHV0PTgxNjY4MDMwMWQwMTJiMjFdKi8KIHsKLSAgICBjb25zdCBzaG9ydCAqY3AxLCAqY3AyOworICAgIGNvbnN0IGludDE2X3QgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBkb3VibGUgc3VtX3JpXzIsIHN1bV9haWpfcmksIHJlc3VsdDsKIApAQCAtNjc5LDggKzY4MSw4IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTYW1wbGVzIHNob3VsZCBiZSBzYW1lIHNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNwMSA9IChjb25zdCBzaG9ydCAqKWZyYWdtZW50LT5idWY7Ci0gICAgY3AyID0gKGNvbnN0IHNob3J0ICopcmVmZXJlbmNlLT5idWY7CisgICAgY3AxID0gKGNvbnN0IGludDE2X3QgKilmcmFnbWVudC0+YnVmOworICAgIGNwMiA9IChjb25zdCBpbnQxNl90ICopcmVmZXJlbmNlLT5idWY7CiAgICAgbGVuID0gZnJhZ21lbnQtPmxlbiA+PiAxOwogICAgIHN1bV9yaV8yID0gX3N1bTIoY3AyLCBjcDIsIGxlbik7CiAgICAgc3VtX2Fpal9yaSA9IF9zdW0yKGNwMSwgY3AyLCBsZW4pOwpAQCAtNzA5LDcgKzcxMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDA4MTI4MjMzNTIzMDQwIGlucHV0PTJmMzA0ODAxZWQ0MjM4M2NdKi8KIHsKLSAgICBjb25zdCBzaG9ydCAqY3AxOworICAgIGNvbnN0IGludDE2X3QgKmNwMTsKICAgICBQeV9zc2l6ZV90IGxlbjE7CiAgICAgUHlfc3NpemVfdCBqLCBiZXN0X2o7CiAgICAgZG91YmxlIGFqX20xLCBhal9sbTE7CkBAIC03MTksNyArNzIxLDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwgIlN0cmluZ3Mgc2hvdWxkIGJlIGV2ZW4tc2l6ZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNwMSA9IChjb25zdCBzaG9ydCAqKWZyYWdtZW50LT5idWY7CisgICAgY3AxID0gKGNvbnN0IGludDE2X3QgKilmcmFnbWVudC0+YnVmOwogICAgIGxlbjEgPSBmcmFnbWVudC0+bGVuID4+IDE7CiAKICAgICBpZiAobGVuZ3RoIDwgMCB8fCBsZW4xIDwgbGVuZ3RoKSB7CkBAIC0xMTIwLDEyICsxMTIyLDEyIEBACiAgICAgICAgIGlmICh3aWR0aCA9PSAxKQogICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1bnNpZ25lZCBjaGFyLCBmcmFnbWVudC0+YnVmLCBpKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMikKLSAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodW5zaWduZWQgc2hvcnQsIGZyYWdtZW50LT5idWYsIGkpOworICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1aW50MTZfdCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDMpCiAgICAgICAgICAgICB2YWwgPSAoKHVuc2lnbmVkIGludClHRVRJTlQyNChmcmFnbWVudC0+YnVmLCBpKSkgJiAweGZmZmZmZnU7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXNzZXJ0KHdpZHRoID09IDQpOwotICAgICAgICAgICAgdmFsID0gR0VUSU5UWChQWV9VSU5UMzJfVCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CisgICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVpbnQzMl90LCBmcmFnbWVudC0+YnVmLCBpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhbCArPSAodW5zaWduZWQgaW50KWJpYXM7CkBAIC0xMTM1LDEyICsxMTM3LDEyIEBACiAgICAgICAgIGlmICh3aWR0aCA9PSAxKQogICAgICAgICAgICAgU0VUSU5UWCh1bnNpZ25lZCBjaGFyLCBuY3AsIGksIHZhbCk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDIpCi0gICAgICAgICAgICBTRVRJTlRYKHVuc2lnbmVkIHNob3J0LCBuY3AsIGksIHZhbCk7CisgICAgICAgICAgICBTRVRJTlRYKHVpbnQxNl90LCBuY3AsIGksIHZhbCk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDMpCiAgICAgICAgICAgICBTRVRJTlQyNChuY3AsIGksIChpbnQpdmFsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhc3NlcnQod2lkdGggPT0gNCk7Ci0gICAgICAgICAgICBTRVRJTlRYKFBZX1VJTlQzMl9ULCBuY3AsIGksIHZhbCk7CisgICAgICAgICAgICBTRVRJTlRYKHVpbnQzMl90LCBuY3AsIGksIHZhbCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJ2OwpAQCAtMTMzMiw3ICsxMzM0LDcgQEAKICAgICB3ZWlnaHRBIC89IGQ7CiAgICAgd2VpZ2h0QiAvPSBkOwogCi0gICAgaWYgKChzaXplX3QpbmNoYW5uZWxzID4gUFlfU0laRV9NQVgvc2l6ZW9mKGludCkpIHsKKyAgICBpZiAoKHNpemVfdCluY2hhbm5lbHMgPiBTSVpFX01BWC9zaXplb2YoaW50KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnkgZm9yIG91dHB1dCBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2JpbmFzY2lpLmMgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKaW5kZXggMTI1YzFjYi4uZWU2NmE0OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9iaW5hc2NpaS5jCisrKyBiL01vZHVsZXMvYmluYXNjaWkuYwpAQCAtNzQsNyArNzQsNyBAQAogI2RlZmluZSBTS0lQIDB4N0UKICNkZWZpbmUgRkFJTCAweDdECiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHRhYmxlX2EyYl9ocXhbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2EyYl9ocXhbMjU2XSA9IHsKIC8qICAgICAgIF5AICAgIF5BICAgIF5CICAgIF5DICAgIF5EICAgIF5FICAgIF5GICAgIF5HICAgKi8KIC8qIDAqLyAgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwKIC8qICAgICAgIFxiICAgIFx0ICAgIFxuICAgIF5LICAgIF5MICAgIFxyICAgIF5OICAgIF5PICAgKi8KQEAgLTEyNSwxMCArMTI1LDEwIEBACiAgICAgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwgRkFJTCwKIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9ocXhbXSA9CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfaHF4W10gPQogIiFcIiMkJSYnKCkqKywtMDEyMzQ1Njg5QEFCQ0RFRkdISUpLTE1OUFFSU1RVVlhZWltgYWJjZGVmaGlqa2xtcHFyIjsKIAotc3RhdGljIGNoYXIgdGFibGVfYTJiX2Jhc2U2NFtdID0geworc3RhdGljIGNvbnN0IGNoYXIgdGFibGVfYTJiX2Jhc2U2NFtdID0gewogICAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLAogICAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLAogICAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsNjIsIC0xLC0xLC0xLDYzLApAQCAtMTQ0LDEyICsxNDQsMTIgQEAKIC8qIE1heCBiaW5hcnkgY2h1bmsgc2l6ZTsgbGltaXRlZCBvbmx5IGJ5IGF2YWlsYWJsZSBtZW1vcnkgKi8KICNkZWZpbmUgQkFTRTY0X01BWEJJTiAoKFBZX1NTSVpFX1RfTUFYIC0gMykgLyAyKQogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfYmFzZTY0W10gPQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2Jhc2U2NFtdID0KICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjsKIAogCiAKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBjcmN0YWJfaHF4WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY3JjdGFiX2hxeFsyNTZdID0gewogICAgIDB4MDAwMCwgMHgxMDIxLCAweDIwNDIsIDB4MzA2MywgMHg0MDg0LCAweDUwYTUsIDB4NjBjNiwgMHg3MGU3LAogICAgIDB4ODEwOCwgMHg5MTI5LCAweGExNGEsIDB4YjE2YiwgMHhjMThjLCAweGQxYWQsIDB4ZTFjZSwgMHhmMWVmLAogICAgIDB4MTIzMSwgMHgwMjEwLCAweDMyNzMsIDB4MjI1MiwgMHg1MmI1LCAweDQyOTQsIDB4NzJmNywgMHg2MmQ2LApAQCAtMjU2LDcgKzI1Niw4IEBACiBiaW5hc2NpaV9hMmJfdXVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTAyN2Y4ZTBiMDU5ODc0MiBpbnB1dD03Y2FmZWFmNzNkZjYzZDFjXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKQEAgLTM0MiwxMyArMzQzLDE1IEBACiBiaW5hc2NpaV9iMmFfdXVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDA3MDY3MGU1MmU0YWE2YiBpbnB1dD0wMGZkZjQ1OGNlOGI0NjViXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7Ci0gICAgUHlfc3NpemVfdCBiaW5fbGVuOworICAgIFB5X3NzaXplX3QgYmluX2xlbiwgb3V0X2xlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogICAgIGJpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGJpbl9sZW4gPSBkYXRhLT5sZW47CiAgICAgaWYgKCBiaW5fbGVuID4gNDUgKSB7CkBAIC0zNTgsOSArMzYxLDEwIEBACiAgICAgfQogCiAgICAgLyogV2UncmUgbGF6eSBhbmQgYWxsb2NhdGUgdG8gbXVjaCAoZml4ZWQgdXAgbGF0ZXIpICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAyICsgKGJpbl9sZW4rMikvMyo0KSkgPT0gTlVMTCApCisgICAgb3V0X2xlbiA9IDIgKyAoYmluX2xlbiArIDIpIC8gMyAqIDQ7CisgICAgYXNjaWlfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIG91dF9sZW4pOworICAgIGlmIChhc2NpaV9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzY2lpX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIC8qIFN0b3JlIHRoZSBsZW5ndGggKi8KICAgICAqYXNjaWlfZGF0YSsrID0gJyAnICsgKGJpbl9sZW4gJiAwNzcpOwpAQCAtMzgyLDE3ICszODYsMTIgQEAKICAgICB9CiAgICAgKmFzY2lpX2RhdGErKyA9ICdcbic7ICAgICAgIC8qIEFwcGVuZCBhIGNvdXJ0ZXN5IG5ld2xpbmUgKi8KIAotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAKIHN0YXRpYyBpbnQKLWJpbmFzY2lpX2ZpbmRfdmFsaWQodW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzbGVuLCBpbnQgbnVtKQorYmluYXNjaWlfZmluZF92YWxpZChjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBQeV9zc2l6ZV90IHNsZW4sIGludCBudW0pCiB7CiAgICAgLyogRmluZHMgJiByZXR1cm5zIHRoZSAobnVtKzEpdGgKICAgICAqKiB2YWxpZCBjaGFyYWN0ZXIgZm9yIGJhc2U2NCwgb3IgLTEgaWYgbm9uZS4KQEAgLTQyOSwxMyArNDI4LDE0IEBACiBiaW5hc2NpaV9hMmJfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA2MjgyMjNmMTlmZDNmOWIgaW5wdXQ9NTg3MmFjZjZlMWNhYzI0M10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogICAgIGludCBxdWFkX3BvcyA9IDA7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYXNjaWlfZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBhc2NpaV9sZW4gPSBkYXRhLT5sZW47CkBAIC00NDcsMTEgKzQ0NywxMiBAQAogCiAgICAgYmluX2xlbiA9ICgoYXNjaWlfbGVuKzMpLzQpKjM7IC8qIFVwcGVyIGJvdW5kLCBjb3JyZWN0ZWQgbGF0ZXIgKi8KIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKICAgICAvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBiaW5fbGVuKSkgPT0gTlVMTCApCisgICAgYmluX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBiaW5fbGVuKTsKKyAgICBpZiAoYmluX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYmluX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKLSAgICBiaW5fbGVuID0gMDsKIAogICAgIGZvciggOyBhc2NpaV9sZW4gPiAwOyBhc2NpaV9sZW4tLSwgYXNjaWlfZGF0YSsrKSB7CiAgICAgICAgIHRoaXNfY2ggPSAqYXNjaWlfZGF0YTsKQEAgLTQ5NiwzMSArNDk3LDE3IEBACiAgICAgICAgIGlmICggbGVmdGJpdHMgPj0gOCApIHsKICAgICAgICAgICAgIGxlZnRiaXRzIC09IDg7CiAgICAgICAgICAgICAqYmluX2RhdGErKyA9IChsZWZ0Y2hhciA+PiBsZWZ0Yml0cykgJiAweGZmOwotICAgICAgICAgICAgYmluX2xlbisrOwogICAgICAgICAgICAgbGVmdGNoYXIgJj0gKCgxIDw8IGxlZnRiaXRzKSAtIDEpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGxlZnRiaXRzICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW5jb3JyZWN0IHBhZGRpbmciKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogQW5kIHNldCBzdHJpbmcgc2l6ZSBjb3JyZWN0bHkuIElmIHRoZSByZXN1bHQgc3RyaW5nIGlzIGVtcHR5Ci0gICAgKiogKGJlY2F1c2UgdGhlIGlucHV0IHdhcyBhbGwgaW52YWxpZCkgcmV0dXJuIHRoZSBzaGFyZWQgZW1wdHkKLSAgICAqKiBzdHJpbmcgaW5zdGVhZDsgX1B5Qnl0ZXNfUmVzaXplKCkgd29uJ3QgZG8gdGhpcyBmb3IgdXMuCi0gICAgKi8KLSAgICBpZiAoYmluX2xlbiA+IDApIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIGJpbl9sZW4pIDwgMCkgewotICAgICAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICBydiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBiaW5fZGF0YSk7CiB9CiAKIApAQCAtNTI4LDI0ICs1MTUsMjcgQEAKIGJpbmFzY2lpLmIyYV9iYXNlNjQKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgotICAgIC8KKyAgICAqCisgICAgbmV3bGluZTogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQogCiBCYXNlNjQtY29kZSBsaW5lIG9mIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkOTY2NjMxNzA3NzhkYzMgaW5wdXQ9MTRlYzRlNDczNzExNzRhOV0qLworYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IG5ld2xpbmUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGFkNjJjOGU4NDg1ZDNiMyBpbnB1dD03YjJlYTZmYTM4ZDg5MjRjXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7Ci0gICAgUHlfc3NpemVfdCBiaW5fbGVuOworICAgIFB5X3NzaXplX3QgYmluX2xlbiwgb3V0X2xlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBiaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBiaW5fbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQoYmluX2xlbiA+PSAwKTsKIApAQCAtNTU1LDExICs1NDUsMTQgQEAKICAgICB9CiAKICAgICAvKiBXZSdyZSBsYXp5IGFuZCBhbGxvY2F0ZSB0b28gbXVjaCAoZml4ZWQgdXAgbGF0ZXIpLgotICAgICAgICIrMyIgbGVhdmVzIHJvb20gZm9yIHVwIHRvIHR3byBwYWQgY2hhcmFjdGVycyBhbmQgYSB0cmFpbGluZwotICAgICAgIG5ld2xpbmUuICBOb3RlIHRoYXQgJ2InIGdldHMgZW5jb2RlZCBhcyAnWWc9PVxuJyAoMSBpbiwgNSBvdXQpLiAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYmluX2xlbioyICsgMykpID09IE5VTEwgKQorICAgICAgICIrMiIgbGVhdmVzIHJvb20gZm9yIHVwIHRvIHR3byBwYWQgY2hhcmFjdGVycy4KKyAgICAgICBOb3RlIHRoYXQgJ2InIGdldHMgZW5jb2RlZCBhcyAnWWc9PVxuJyAoMSBpbiwgNSBvdXQpLiAqLworICAgIG91dF9sZW4gPSBiaW5fbGVuKjIgKyAyOworICAgIGlmIChuZXdsaW5lKQorICAgICAgICBvdXRfbGVuKys7CisgICAgYXNjaWlfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIG91dF9sZW4pOworICAgIGlmIChhc2NpaV9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzY2lpX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggOyBiaW5fbGVuID4gMCA7IGJpbl9sZW4tLSwgYmluX2RhdGErKyApIHsKICAgICAgICAgLyogU2hpZnQgdGhlIGRhdGEgaW50byBvdXIgYnVmZmVyICovCkBAIC01ODEsMTQgKzU3NCwxMCBAQAogICAgICAgICAqYXNjaWlfZGF0YSsrID0gdGFibGVfYjJhX2Jhc2U2NFsobGVmdGNoYXImMHhmKSA8PCAyXTsKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IEJBU0U2NF9QQUQ7CiAgICAgfQotICAgICphc2NpaV9kYXRhKysgPSAnXG4nOyAgICAgICAvKiBBcHBlbmQgYSBjb3VydGVzeSBuZXdsaW5lICovCisgICAgaWYgKG5ld2xpbmUpCisgICAgICAgICphc2NpaV9kYXRhKysgPSAnXG4nOyAgICAgICAvKiBBcHBlbmQgYSBjb3VydGVzeSBuZXdsaW5lICovCiAKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtNjA0LDE2ICs1OTMsMTkgQEAKIGJpbmFzY2lpX2EyYl9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ2ZDhjNTRkNTRlYTFjMSBpbnB1dD0wZDkxNGM2ODBlMGVlZDU1XSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CisgICAgUHlPYmplY3QgKnJlczsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgZG9uZSA9IDA7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYXNjaWlfZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBsZW4gPSBkYXRhLT5sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKQEAgLTYyMyw5ICs2MTUsOSBAQAogICAgIC8qIEFsbG9jYXRlIGEgc3RyaW5nIHRoYXQgaXMgdG9vIGJpZyAoZml4ZWQgbGF0ZXIpCiAgICAgICAgQWRkIHR3byB0byB0aGUgaW5pdGlhbCBsZW5ndGggdG8gcHJldmVudCBpbnRlcm5pbmcgd2hpY2gKICAgICAgICB3b3VsZCBwcmVjbHVkZSBzdWJzZXF1ZW50IHJlc2l6aW5nLiAgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbisyKSkgPT0gTlVMTCApCisgICAgYmluX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4gKyAyKTsKKyAgICBpZiAoYmluX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYmluX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggOyBsZW4gPiAwIDsgbGVuLS0sIGFzY2lpX2RhdGErKyApIHsKICAgICAgICAgLyogR2V0IHRoZSBieXRlIGFuZCBsb29rIGl0IHVwICovCkBAIC02MzQsNyArNjI2LDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIHRoaXNfY2ggPT0gRkFJTCApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIklsbGVnYWwgY2hhciIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIHRoaXNfY2ggPT0gRE9ORSApIHsKQEAgLTY1NiwyMSArNjQ4LDE0IEBACiAgICAgaWYgKCBsZWZ0Yml0cyAmJiAhZG9uZSApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEluY29tcGxldGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiU3RyaW5nIGhhcyBpbmNvbXBsZXRlIG51bWJlciBvZiBieXRlcyIpOwotICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChiaW5fZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIGlmIChydikgewotICAgICAgICBQeU9iamVjdCAqcnJ2ID0gUHlfQnVpbGRWYWx1ZSgiT2kiLCBydiwgZG9uZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgICAgIHJldHVybiBycnY7Ci0gICAgfQogCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJpbl9kYXRhKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaSIsIHJlcywgZG9uZSk7CiB9CiAKIApAQCAtNjg3LDExICs2NzIsMTMgQEAKIGJpbmFzY2lpX3JsZWNvZGVfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM5M2Q3OTMzOGY1ZjU2MjkgaW5wdXQ9ZTFmMTcxMjQ0N2E4MmIwOV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmluX2RhdGEsICpvdXRfZGF0YTsKLSAgICBQeU9iamVjdCAqcnY7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRfZGF0YTsKICAgICB1bnNpZ25lZCBjaGFyIGNoOwogICAgIFB5X3NzaXplX3QgaW4sIGluZW5kLCBsZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKICAgICBpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGxlbiA9IGRhdGEtPmxlbjsKIApAQCAtNzAxLDkgKzY4OCw5IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgLyogV29yc3QgY2FzZTogb3V0cHV0IGlzIHR3aWNlIGFzIGJpZyBhcyBpbnB1dCAoZml4ZWQgbGF0ZXIpICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4qMisyKSkgPT0gTlVMTCApCisgICAgb3V0X2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4gKiAyICsgMik7CisgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG91dF9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIGluPTA7IGluPGxlbjsgaW4rKykgewogICAgICAgICBjaCA9IGluX2RhdGFbaW5dOwpAQCAtNzI5LDEyICs3MTYsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAob3V0X2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIG91dF9kYXRhKTsKIH0KIAogCkBAIC03NTEsMTUgKzczNCwxNyBAQAogYmluYXNjaWlfYjJhX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMGFhNWE3MDRiYzlmN2RlIGlucHV0PTk1OTZlYmUwMTlmZTEyYmFdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBiaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBsZW4gPSBkYXRhLT5sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKQEAgLTc2Nyw5ICs3NTIsOSBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIEFsbG9jYXRlIGEgYnVmZmVyIHRoYXQgaXMgYXQgbGVhc3QgbGFyZ2UgZW5vdWdoICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4qMisyKSkgPT0gTlVMTCApCisgICAgYXNjaWlfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbiAqIDIgKyAyKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgbGVuID4gMCA7IGxlbi0tLCBiaW5fZGF0YSsrICkgewogICAgICAgICAvKiBTaGlmdCBpbnRvIG91ciBidWZmZXIsIGFuZCBvdXRwdXQgYW55IDZiaXRzIHJlYWR5ICovCkBAIC03ODYsMTIgKzc3MSw4IEBACiAgICAgICAgIGxlZnRjaGFyIDw8PSAoNi1sZWZ0Yml0cyk7CiAgICAgICAgICphc2NpaV9kYXRhKysgPSB0YWJsZV9iMmFfaHF4W2xlZnRjaGFyICYgMHgzZl07CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIApAQCAtODA4LDEzICs3ODksMTUgQEAKIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgyNjYxOTU2NWRlMWM2YyBpbnB1dD01NGNkZDQ5ZmMwMTQ0MDJjXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqaW5fZGF0YSwgKm91dF9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb3V0X2RhdGE7CiAgICAgdW5zaWduZWQgY2hhciBpbl9ieXRlLCBpbl9yZXBlYXQ7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgaW5fbGVuLCBvdXRfbGVuLCBvdXRfbGVuX2xlZnQ7CisgICAgUHlfc3NpemVfdCBpbl9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBpbl9sZW4gPSBkYXRhLT5sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAogICAgIGFzc2VydChpbl9sZW4gPj0gMCk7CiAKQEAgLTgyNSw1OSArODA4LDQ4IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgLyogQWxsb2NhdGUgYSBidWZmZXIgb2YgcmVhc29uYWJsZSBzaXplLiBSZXNpemVkIHdoZW4gbmVlZGVkICovCi0gICAgb3V0X2xlbiA9IGluX2xlbioyOwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0X2xlbikpID09IE5VTEwgKQorICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgaW5fbGVuKTsKKyAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb3V0X2xlbl9sZWZ0ID0gb3V0X2xlbjsKLSAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOworCisgICAgLyogVXNlIG92ZXJhbGxvY2F0aW9uICovCisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKICAgICAvKgogICAgICoqIFdlIG5lZWQgdHdvIG1hY3JvcyBoZXJlIHRvIGdldC9wdXQgYnl0ZXMgYW5kIGhhbmRsZQogICAgICoqIGVuZC1vZi1idWZmZXIgZm9yIGlucHV0IGFuZCBvdXRwdXQgc3RyaW5ncy4KICAgICAqLwotI2RlZmluZSBJTkJZVEUoYikgXAotICAgIGRvIHsgXAotICAgICAgICAgICAgIGlmICggLS1pbl9sZW4gPCAwICkgeyBcCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhJbmNvbXBsZXRlLCAiIik7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsgXAotICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgXAotICAgICAgICAgICAgIH0gXAotICAgICAgICAgICAgIGIgPSAqaW5fZGF0YSsrOyBcCisjZGVmaW5lIElOQllURShiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBpZiAoIC0taW5fbGVuIDwgMCApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhJbmNvbXBsZXRlLCAiIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBiID0gKmluX2RhdGErKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIE9VVEJZVEUoYikgXAotICAgIGRvIHsgXAotICAgICAgICAgICAgIGlmICggLS1vdXRfbGVuX2xlZnQgPCAwICkgeyBcCi0gICAgICAgICAgICAgICAgICAgICAgaWYgKCBvdXRfbGVuID4gUFlfU1NJWkVfVF9NQVggLyAyKSByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsgXAotICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LCAyKm91dF9sZW4pIDwgMCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgeyBQeV9YREVDUkVGKHJ2KTsgcmV0dXJuIE5VTEw7IH0gXAotICAgICAgICAgICAgICAgICAgICAgIG91dF9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3V0X2xlbjsgXAotICAgICAgICAgICAgICAgICAgICAgIG91dF9sZW5fbGVmdCA9IG91dF9sZW4tMTsgXAotICAgICAgICAgICAgICAgICAgICAgIG91dF9sZW4gPSBvdXRfbGVuICogMjsgXAotICAgICAgICAgICAgIH0gXAotICAgICAgICAgICAgICpvdXRfZGF0YSsrID0gYjsgXAotICAgIH0gd2hpbGUoMCkKLQotICAgICAgICAvKgotICAgICAgICAqKiBIYW5kbGUgZmlyc3QgYnl0ZSBzZXBhcmF0ZWx5IChzaW5jZSB3ZSBoYXZlIHRvIGdldCBhbmdyeQotICAgICAgICAqKiBpbiBjYXNlIG9mIGFuIG9ycGhhbmVkIFJMRSBjb2RlKS4KLSAgICAgICAgKi8KLSAgICAgICAgSU5CWVRFKGluX2J5dGUpOworICAgIC8qCisgICAgKiogSGFuZGxlIGZpcnN0IGJ5dGUgc2VwYXJhdGVseSAoc2luY2Ugd2UgaGF2ZSB0byBnZXQgYW5ncnkKKyAgICAqKiBpbiBjYXNlIG9mIGFuIG9ycGhhbmVkIFJMRSBjb2RlKS4KKyAgICAqLworICAgIElOQllURShpbl9ieXRlKTsKIAogICAgIGlmIChpbl9ieXRlID09IFJVTkNIQVIpIHsKICAgICAgICAgSU5CWVRFKGluX3JlcGVhdCk7CisgICAgICAgIC8qIG9ubHkgMSBieXRlIHdpbGwgYmUgd3JpdHRlbiwgYnV0IDIgYnl0ZXMgd2VyZSBwcmVhbGxvY2F0ZWQ6CisgICAgICAgICAgIHN1YnRyYWN0IDEgYnl0ZSB0byBwcmV2ZW50IG92ZXJhbGxvY2F0aW9uICovCisgICAgICAgIHdyaXRlci5taW5fc2l6ZS0tOworCiAgICAgICAgIGlmIChpbl9yZXBlYXQgIT0gMCkgewogICAgICAgICAgICAgLyogTm90ZSBFcnJvciwgbm90IEluY29tcGxldGUgKHdoaWNoIGlzIGF0IHRoZSBlbmQKICAgICAgICAgICAgICoqIG9mIHRoZSBzdHJpbmcgb25seSkuIFRoaXMgaXMgYSBwcm9ncmFtbWVyIGVycm9yLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIk9ycGhhbmVkIFJMRSBjb2RlIGF0IHN0YXJ0Iik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIE9VVEJZVEUoUlVOQ0hBUik7CisgICAgICAgICpvdXRfZGF0YSsrID0gUlVOQ0hBUjsKICAgICB9IGVsc2UgewotICAgICAgICBPVVRCWVRFKGluX2J5dGUpOworICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgfQogCiAgICAgd2hpbGUoIGluX2xlbiA+IDAgKSB7CkBAIC04ODUsMjYgKzg1NywzOSBAQAogCiAgICAgICAgIGlmIChpbl9ieXRlID09IFJVTkNIQVIpIHsKICAgICAgICAgICAgIElOQllURShpbl9yZXBlYXQpOworICAgICAgICAgICAgLyogb25seSAxIGJ5dGUgd2lsbCBiZSB3cml0dGVuLCBidXQgMiBieXRlcyB3ZXJlIHByZWFsbG9jYXRlZDoKKyAgICAgICAgICAgICAgIHN1YnRyYWN0IDEgYnl0ZSB0byBwcmV2ZW50IG92ZXJhbGxvY2F0aW9uICovCisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUtLTsKKwogICAgICAgICAgICAgaWYgKCBpbl9yZXBlYXQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAvKiBKdXN0IGFuIGVzY2FwZWQgUlVOQ0hBUiB2YWx1ZSAqLwotICAgICAgICAgICAgICAgIE9VVEJZVEUoUlVOQ0hBUik7CisgICAgICAgICAgICAgICAgKm91dF9kYXRhKysgPSBSVU5DSEFSOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBQaWNrIHVwIHZhbHVlIGFuZCBvdXRwdXQgYSBzZXF1ZW5jZSBvZiBpdCAqLwogICAgICAgICAgICAgICAgIGluX2J5dGUgPSBvdXRfZGF0YVstMV07CisKKyAgICAgICAgICAgICAgICAvKiBlbmxhcmdlIHRoZSBidWZmZXIgaWYgbmVlZGVkICovCisgICAgICAgICAgICAgICAgaWYgKGluX3JlcGVhdCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogLTEgYmVjYXVzZSB3ZSBhbHJlYWR5IHByZWFsbG9jYXRlZCAxIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICAgICAgb3V0X2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIG91dF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fcmVwZWF0IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB3aGlsZSAoIC0taW5fcmVwZWF0ID4gMCApCi0gICAgICAgICAgICAgICAgICAgIE9VVEJZVEUoaW5fYnl0ZSk7CisgICAgICAgICAgICAgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIE5vcm1hbCBieXRlICovCi0gICAgICAgICAgICBPVVRCWVRFKGluX2J5dGUpOworICAgICAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAob3V0X2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBvdXRfZGF0YSk7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIApAQCAtOTIyLDcgKzkwNyw3IEBACiBiaW5hc2NpaV9jcmNfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCB1bnNpZ25lZCBpbnQgY3JjKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlYzJhNzg1OTBkMTkxNzAgaW5wdXQ9ZjE4MjQwZmY4YzcwNWI3OV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgY3JjICY9IDB4ZmZmZjsKQEAgLTEwMDAsNyArOTg1LDcgQEAKICAgICAgdXNpbmcgYnl0ZS1zd2FwIGluc3RydWN0aW9ucy4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgdW5zaWduZWQgaW50IGNyY18zMl90YWJbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgY3JjXzMyX3RhYlsyNTZdID0gewogMHgwMDAwMDAwMFUsIDB4NzcwNzMwOTZVLCAweGVlMGU2MTJjVSwgMHg5OTA5NTFiYVUsIDB4MDc2ZGM0MTlVLAogMHg3MDZhZjQ4ZlUsIDB4ZTk2M2E1MzVVLCAweDllNjQ5NWEzVSwgMHgwZWRiODgzMlUsIDB4NzlkY2I4YTRVLAogMHhlMGQ1ZTkxZVUsIDB4OTdkMmQ5ODhVLCAweDA5YjY0YzJiVSwgMHg3ZWIxN2NiZFUsIDB4ZTdiODJkMDdVLApAQCAtMTA3Myw3ICsxMDU4LDcgQEAKICNpZmRlZiBVU0VfWkxJQl9DUkMzMgogLyogVGhpcyB3YXMgdGFrZW4gZnJvbSB6bGlibW9kdWxlLmMgUHlabGliX2NyYzMyIChidXQgaXMgUFlfU1NJWkVfVF9DTEVBTikgKi8KIHsKLSAgICBCeXRlICpidWY7CisgICAgY29uc3QgQnl0ZSAqYnVmOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBzaWduZWRfdmFsOwogCkBAIC0xMDg0LDcgKzEwNjksNyBAQAogfQogI2Vsc2UgIC8qIFVTRV9aTElCX0NSQzMyICovCiB7IC8qIEJ5IEppbSBBaGxzdHJvbTsgQWxsIHJpZ2h0cyB0cmFuc2ZlcnJlZCB0byBDTlJJICovCi0gICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgdW5zaWduZWQgaW50IHJlc3VsdDsKIApAQCAtMTE2Nyw3ICsxMTUyLDcgQEAKIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmhleHN0cikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wY2MxYTEzOWFmMGVlZWNiIGlucHV0PTllMWU3ZjJmOTRkYjI0ZmRdKi8KIHsKLSAgICBjaGFyKiBhcmdidWY7CisgICAgY29uc3QgY2hhciogYXJnYnVmOwogICAgIFB5X3NzaXplX3QgYXJnbGVuOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAgICAgY2hhciogcmV0YnVmOwpAQCAtMTIyNCw3ICsxMjA5LDcgQEAKICAgICByZXR1cm4gYmluYXNjaWlfYTJiX2hleF9pbXBsKG1vZHVsZSwgaGV4c3RyKTsKIH0KIAotc3RhdGljIGludCB0YWJsZV9oZXhbMTI4XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgdGFibGVfaGV4WzEyOF0gPSB7CiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLAogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCkBAIC0xMjU1LDcgKzEyNDAsOCBAQAogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKICAgICBjaGFyIGNoOwotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpvZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm9kYXRhOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbiA9IDA7CiAgICAgUHlPYmplY3QgKnJ2OwogCkBAIC0xMzYyLDEzICsxMzQ4LDE0IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTk4ODQ0NzJlYmIxYTk0YyBpbnB1dD03ZjJhOWFhYTAwOGU5MmIyXSovCiB7CiAgICAgUHlfc3NpemVfdCBpbiwgb3V0OwotICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFidWYsICpvZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhYnVmOworICAgIHVuc2lnbmVkIGNoYXIgKm9kYXRhOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbiA9IDAsIG9kYXRhbGVuID0gMDsKICAgICBQeU9iamVjdCAqcnY7CiAgICAgdW5zaWduZWQgaW50IGxpbmVsZW4gPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgY2g7CiAgICAgaW50IGNybGYgPSAwOwotICAgIHVuc2lnbmVkIGNoYXIgKnA7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsKIAogICAgIGRhdGFidWYgPSBkYXRhLT5idWY7CiAgICAgZGF0YWxlbiA9IGRhdGEtPmxlbjsKQEAgLTEzNzcsNyArMTM2NCw3IEBACiAgICAgLyogWFhYOiB0aGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2lkZSBlZmZlY3Qgb2YgY29udmVydGluZyBhbGwgb2YKICAgICAgKiB0aGUgZW5kIG9mIGxpbmVzIHRvIGJlIHRoZSBzYW1lIGRlcGVuZGluZyBvbiB0aGlzIGRldGVjdGlvbgogICAgICAqIGhlcmUgKi8KLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKikgbWVtY2hyKGRhdGFidWYsICdcbicsIGRhdGFsZW4pOworICAgIHAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtZW1jaHIoZGF0YWJ1ZiwgJ1xuJywgZGF0YWxlbik7CiAgICAgaWYgKChwICE9IE5VTEwpICYmIChwID4gZGF0YWJ1ZikgJiYgKCoocC0xKSA9PSAnXHInKSkKICAgICAgICAgY3JsZiA9IDE7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKaW5kZXggYjcyYTNmMC4uMmFlMjhlYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVuYyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmcpOworICAgIGVuYyA9IFB5VW5pY29kZV9Bc1VURjgoZW5jb2RpbmcpOwogICAgIGlmIChlbmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmggYi9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCmluZGV4IDhhNDdmZjguLjg0ZmZkMTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaApAQCAtMTQsNyArMTQsNyBAQAogInJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFVuaWNvZGVFbmNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0VOQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfX30sCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZSwgTUVUSF9GQVNUQ0FMTCwgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLApAQCAtMjIsMTYgKzIyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98ejplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbnB1dDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6OmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTUwLDcgKzUyLDcgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLlwiIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLApAQCAtNTgsMjIgKzYwLDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfHo6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKHNlbGYsICZpbnB1dCwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLwotICAgIGlmIChpbnB1dC5vYmopCisgICAgaWYgKGlucHV0Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODQsNyArODksNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfX30sCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwKQEAgLTkyLDE2ICs5NywxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98aTplbmNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOwogCiBleGl0OgpAQCAtMTMxLDcgKzEzOCw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLApAQCAtMTM5LDIyICsxNDYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aTpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBpbnB1dCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgZmluYWwgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLwotICAgIGlmIChpbnB1dC5vYmopCisgICAgaWYgKGlucHV0Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTk2LDggKzIwNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnNpemVvYmopKQorICAgICAgICAmc2l6ZW9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRfaW1wbChzZWxmLCBzaXplb2JqKTsKIAogZXhpdDoKQEAgLTIyNCw4ICsyMzUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmc2l6ZW9iaikpCisgICAgICAgICZzaXplb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplb2JqKTsKIAogZXhpdDoKQEAgLTI1Miw4ICsyNjQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnNpemVoaW50b2JqKSkKKyAgICAgICAgJnNpemVoaW50b2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoc2VsZiwgc2l6ZWhpbnRvYmopOwogCiBleGl0OgpAQCAtMzE3LDQgKzMzMCw0IEBACiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX19fQ1JFQVRFX0NPREVDX01FVEhPRERFRiAgICBcCiAgICAgeyJfX2NyZWF0ZV9jb2RlYyIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWMsIE1FVEhfTywgX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjX19kb2NfX30sCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWViYjIxZTE4YzMwNDNkMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTM0YjllMzZjYjk4NTkzOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwppbmRleCBmNWM4NDIxLi5kMWRhMTg5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKQEAgLTg1LDcgKzg1LDcgQEAKICAgICBjb25zdCBjaGFyICpzdHI7CiAKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGVycm9ycykpOwotICAgIHN0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZXJyb3JzKTsKKyAgICBzdHIgPSBQeVVuaWNvZGVfQXNVVEY4KGVycm9ycyk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjYiA9IFB5Q29kZWNfTG9va3VwRXJyb3Ioc3RyKTsKQEAgLTEzOCw3ICsxMzgsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyh2YWx1ZSk7CisgICAgc3RyID0gUHlVbmljb2RlX0FzVVRGOCh2YWx1ZSk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19hc3luY2lvbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19hc3luY2lvbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTJkMjUyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2FzeW5jaW9tb2R1bGUuYy5oCkBAIC0wLDAgKzEsNTIwIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fX19kb2NfXywKKyJGdXR1cmUoKiwgbG9vcD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiVGhpcyBjbGFzcyBpcyAqYWxtb3N0KiBjb21wYXRpYmxlIHdpdGggY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZS5cbiIKKyJcbiIKKyIgICAgRGlmZmVyZW5jZXM6XG4iCisiXG4iCisiICAgIC0gcmVzdWx0KCkgYW5kIGV4Y2VwdGlvbigpIGRvIG5vdCB0YWtlIGEgdGltZW91dCBhcmd1bWVudCBhbmRcbiIKKyIgICAgICByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgZnV0dXJlIGlzblwndCBkb25lIHlldC5cbiIKKyJcbiIKKyIgICAgLSBDYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIGFkZF9kb25lX2NhbGxiYWNrKCkgYXJlIGFsd2F5cyBjYWxsZWRcbiIKKyIgICAgICB2aWEgdGhlIGV2ZW50IGxvb3BcJ3MgY2FsbF9zb29uX3RocmVhZHNhZmUoKS5cbiIKKyJcbiIKKyIgICAgLSBUaGlzIGNsYXNzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKClcbiIKKyIgICAgICBtZXRob2RzIGluIHRoZSBjb25jdXJyZW50LmZ1dHVyZXMgcGFja2FnZS4iKTsKKworc3RhdGljIGludAorX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fX2ltcGwoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqbG9vcCk7CisKK3N0YXRpYyBpbnQKK19hc3luY2lvX0Z1dHVyZV9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxvb3AiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8JE86RnV0dXJlIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbG9vcCA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZsb29wKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX0Z1dHVyZV9fX2luaXRfX19pbXBsKChGdXR1cmVPYmogKilzZWxmLCBsb29wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9fZG9jX18sCisicmVzdWx0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSByZXN1bHQgdGhpcyBmdXR1cmUgcmVwcmVzZW50cy5cbiIKKyJcbiIKKyJJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzIENhbmNlbGxlZEVycm9yLiAgSWYgdGhlXG4iCisiZnV0dXJlXCdzIHJlc3VsdCBpc25cJ3QgeWV0IGF2YWlsYWJsZSwgcmFpc2VzIEludmFsaWRTdGF0ZUVycm9yLiAgSWZcbiIKKyJ0aGUgZnV0dXJlIGlzIGRvbmUgYW5kIGhhcyBhbiBleGNlcHRpb24gc2V0LCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX1JFU1VMVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9yZXN1bHQsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfcmVzdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfcmVzdWx0X2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9yZXN1bHQoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfcmVzdWx0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uX19kb2NfXywKKyJleGNlcHRpb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcyBzZXQgb24gdGhpcyBmdXR1cmUuXG4iCisiXG4iCisiVGhlIGV4Y2VwdGlvbiAob3IgTm9uZSBpZiBubyBleGNlcHRpb24gd2FzIHNldCkgaXMgcmV0dXJuZWQgb25seSBpZlxuIgorInRoZSBmdXR1cmUgaXMgZG9uZS4gIElmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXNcbiIKKyJDYW5jZWxsZWRFcnJvci4gIElmIHRoZSBmdXR1cmUgaXNuXCd0IGRvbmUgeWV0LCByYWlzZXNcbiIKKyJJbnZhbGlkU3RhdGVFcnJvci4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfRVhDRVBUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJleGNlcHRpb24iLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbiwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9leGNlcHRpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9leGNlcHRpb25faW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbihGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9leGNlcHRpb25faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9zZXRfcmVzdWx0X19kb2NfXywKKyJzZXRfcmVzdWx0KCRzZWxmLCByZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuXG4iCisiXG4iCisiSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJhaXNlc1xuIgorIkludmFsaWRTdGF0ZUVycm9yLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfUkVTVUxUX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfcmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9zZXRfcmVzdWx0LCBNRVRIX08sIF9hc3luY2lvX0Z1dHVyZV9zZXRfcmVzdWx0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfc2V0X2V4Y2VwdGlvbl9fZG9jX18sCisic2V0X2V4Y2VwdGlvbigkc2VsZiwgZXhjZXB0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBhbiBleGNlcHRpb24uXG4iCisiXG4iCisiSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJhaXNlc1xuIgorIkludmFsaWRTdGF0ZUVycm9yLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfRVhDRVBUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfZXhjZXB0aW9uIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9zZXRfZXhjZXB0aW9uLCBNRVRIX08sIF9hc3luY2lvX0Z1dHVyZV9zZXRfZXhjZXB0aW9uX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2tfX2RvY19fLAorImFkZF9kb25lX2NhbGxiYWNrKCRzZWxmLCBmbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFkZCBhIGNhbGxiYWNrIHRvIGJlIHJ1biB3aGVuIHRoZSBmdXR1cmUgYmVjb21lcyBkb25lLlxuIgorIlxuIgorIlRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBmdXR1cmUgb2JqZWN0LiBJZlxuIgorInRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHRoZSBjYWxsYmFjayBpc1xuIgorInNjaGVkdWxlZCB3aXRoIGNhbGxfc29vbi4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfQUREX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZF9kb25lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFjaywgTUVUSF9PLCBfYXN5bmNpb19GdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2tfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9yZW1vdmVfZG9uZV9jYWxsYmFja19fZG9jX18sCisicmVtb3ZlX2RvbmVfY2FsbGJhY2soJHNlbGYsIGZuLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYSBjYWxsYmFjayBmcm9tIHRoZSBcImNhbGwgd2hlbiBkb25lXCIgbGlzdC5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2FsbGJhY2tzIHJlbW92ZWQuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX1JFTU9WRV9ET05FX0NBTExCQUNLX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmVfZG9uZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfcmVtb3ZlX2RvbmVfY2FsbGJhY2ssIE1FVEhfTywgX2FzeW5jaW9fRnV0dXJlX3JlbW92ZV9kb25lX2NhbGxiYWNrX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfY2FuY2VsX19kb2NfXywKKyJjYW5jZWwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDYW5jZWwgdGhlIGZ1dHVyZSBhbmQgc2NoZWR1bGUgY2FsbGJhY2tzLlxuIgorIlxuIgorIklmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIG9yIGNhbmNlbGxlZCwgcmV0dXJuIEZhbHNlLiAgT3RoZXJ3aXNlLFxuIgorImNoYW5nZSB0aGUgZnV0dXJlXCdzIHN0YXRlIHRvIGNhbmNlbGxlZCwgc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmRcbiIKKyJyZXR1cm4gVHJ1ZS4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMX01FVEhPRERFRiAgICBcCisgICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX2NhbmNlbCwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxfaW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWRfX2RvY19fLAorImNhbmNlbGxlZCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMTEVEX01FVEhPRERFRiAgICBcCisgICAgeyJjYW5jZWxsZWQiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZCwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWRfaW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9kb25lX19kb2NfXywKKyJkb25lKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSBpcyBkb25lLlxuIgorIlxuIgorIkRvbmUgbWVhbnMgZWl0aGVyIHRoYXQgYSByZXN1bHQgLyBleGNlcHRpb24gYXJlIGF2YWlsYWJsZSwgb3IgdGhhdCB0aGVcbiIKKyJmdXR1cmUgd2FzIGNhbmNlbGxlZC4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfRE9ORV9NRVRIT0RERUYgICAgXAorICAgIHsiZG9uZSIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfZG9uZSwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9kb25lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZG9uZV9pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZG9uZShGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9kb25lX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19fZG9jX18sCisiX3JlcHJfaW5mbygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX19SRVBSX0lORk9fTUVUSE9EREVGICAgIFwKKyAgICB7Il9yZXByX2luZm8iLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm8sIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm9faW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm8oRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfX2RvY19fLAorIl9zY2hlZHVsZV9jYWxsYmFja3MoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9fU0NIRURVTEVfQ0FMTEJBQ0tTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2NoZWR1bGVfY2FsbGJhY2tzIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfX19pbml0X19fX2RvY19fLAorIlRhc2soY29ybywgKiwgbG9vcD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQSBjb3JvdXRpbmUgd3JhcHBlZCBpbiBhIEZ1dHVyZS4iKTsKKworc3RhdGljIGludAorX2FzeW5jaW9fVGFza19fX2luaXRfX19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpjb3JvLCBQeU9iamVjdCAqbG9vcCk7CisKK3N0YXRpYyBpbnQKK19hc3luY2lvX1Rhc2tfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjb3JvIiwgImxvb3AiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRPOlRhc2siLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpjb3JvOworICAgIFB5T2JqZWN0ICpsb29wID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmNvcm8sICZsb29wKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfX19pbml0X19faW1wbCgoVGFza09iaiAqKXNlbGYsIGNvcm8sIGxvb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFza19fZG9jX18sCisiY3VycmVudF90YXNrKCR0eXBlLCAvLCBsb29wPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2sgaW4gYW4gZXZlbnQgbG9vcCBvciBOb25lLlxuIgorIlxuIgorIkJ5IGRlZmF1bHQgdGhlIGN1cnJlbnQgdGFzayBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbG9vcCBpcyByZXR1cm5lZC5cbiIKKyJcbiIKKyJOb25lIGlzIHJldHVybmVkIHdoZW4gY2FsbGVkIG5vdCBpbiB0aGUgY29udGV4dCBvZiBhIFRhc2suIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19DVVJSRU5UX1RBU0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImN1cnJlbnRfdGFzayIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFzaywgTUVUSF9GQVNUQ0FMTHxNRVRIX0NMQVNTLCBfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFza19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2tfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpsb29wKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsb29wIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Y3VycmVudF90YXNrIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbG9vcCA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxvb3ApKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2tfaW1wbCh0eXBlLCBsb29wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19hbGxfdGFza3NfX2RvY19fLAorImFsbF90YXNrcygkdHlwZSwgLywgbG9vcD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgc2V0IG9mIGFsbCB0YXNrcyBmb3IgYW4gZXZlbnQgbG9vcC5cbiIKKyJcbiIKKyJCeSBkZWZhdWx0IGFsbCB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbG9vcCBhcmUgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19BTExfVEFTS1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImFsbF90YXNrcyIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX2FsbF90YXNrcywgTUVUSF9GQVNUQ0FMTHxNRVRIX0NMQVNTLCBfYXN5bmNpb19UYXNrX2FsbF90YXNrc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19hbGxfdGFza3NfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpsb29wKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsb29wIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86YWxsX3Rhc2tzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbG9vcCA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxvb3ApKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19hbGxfdGFza3NfaW1wbCh0eXBlLCBsb29wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvX19kb2NfXywKKyJfcmVwcl9pbmZvKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX19SRVBSX0lORk9fTUVUSE9EREVGICAgIFwKKyAgICB7Il9yZXByX2luZm8iLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19yZXByX2luZm9faW1wbChUYXNrT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3JlcHJfaW5mbyhUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19UYXNrX19yZXByX2luZm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfY2FuY2VsX19kb2NfXywKKyJjYW5jZWwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXF1ZXN0IHRoYXQgdGhpcyB0YXNrIGNhbmNlbCBpdHNlbGYuXG4iCisiXG4iCisiVGhpcyBhcnJhbmdlcyBmb3IgYSBDYW5jZWxsZWRFcnJvciB0byBiZSB0aHJvd24gaW50byB0aGVcbiIKKyJ3cmFwcGVkIGNvcm91dGluZSBvbiB0aGUgbmV4dCBjeWNsZSB0aHJvdWdoIHRoZSBldmVudCBsb29wLlxuIgorIlRoZSBjb3JvdXRpbmUgdGhlbiBoYXMgYSBjaGFuY2UgdG8gY2xlYW4gdXAgb3IgZXZlbiBkZW55XG4iCisidGhlIHJlcXVlc3QgdXNpbmcgdHJ5L2V4Y2VwdC9maW5hbGx5LlxuIgorIlxuIgorIlVubGlrZSBGdXR1cmUuY2FuY2VsLCB0aGlzIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuIgorInRhc2sgd2lsbCBiZSBjYW5jZWxsZWQ6IHRoZSBleGNlcHRpb24gbWlnaHQgYmUgY2F1Z2h0IGFuZFxuIgorImFjdGVkIHVwb24sIGRlbGF5aW5nIGNhbmNlbGxhdGlvbiBvZiB0aGUgdGFzayBvciBwcmV2ZW50aW5nXG4iCisiY2FuY2VsbGF0aW9uIGNvbXBsZXRlbHkuICBUaGUgdGFzayBtYXkgYWxzbyByZXR1cm4gYSB2YWx1ZSBvclxuIgorInJhaXNlIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi5cbiIKKyJcbiIKKyJJbW1lZGlhdGVseSBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIFRhc2suY2FuY2VsbGVkKCkgd2lsbFxuIgorIm5vdCByZXR1cm4gVHJ1ZSAodW5sZXNzIHRoZSB0YXNrIHdhcyBhbHJlYWR5IGNhbmNlbGxlZCkuICBBXG4iCisidGFzayB3aWxsIGJlIG1hcmtlZCBhcyBjYW5jZWxsZWQgd2hlbiB0aGUgd3JhcHBlZCBjb3JvdXRpbmVcbiIKKyJ0ZXJtaW5hdGVzIHdpdGggYSBDYW5jZWxsZWRFcnJvciBleGNlcHRpb24gKGV2ZW4gaWYgY2FuY2VsKClcbiIKKyJ3YXMgbm90IGNhbGxlZCkuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19DQU5DRUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX2NhbmNlbCwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX1Rhc2tfY2FuY2VsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2NhbmNlbF9pbXBsKFRhc2tPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jYW5jZWwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fVGFza19jYW5jZWxfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrX19kb2NfXywKKyJnZXRfc3RhY2soJHNlbGYsIC8sICosIGxpbWl0PU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGxpc3Qgb2Ygc3RhY2sgZnJhbWVzIGZvciB0aGlzIHRhc2tcJ3MgY29yb3V0aW5lLlxuIgorIlxuIgorIklmIHRoZSBjb3JvdXRpbmUgaXMgbm90IGRvbmUsIHRoaXMgcmV0dXJucyB0aGUgc3RhY2sgd2hlcmUgaXQgaXNcbiIKKyJzdXNwZW5kZWQuICBJZiB0aGUgY29yb3V0aW5lIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIHdhc1xuIgorImNhbmNlbGxlZCwgdGhpcyByZXR1cm5zIGFuIGVtcHR5IGxpc3QuICBJZiB0aGUgY29yb3V0aW5lIHdhc1xuIgorInRlcm1pbmF0ZWQgYnkgYW4gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgdGhlIGxpc3Qgb2YgdHJhY2ViYWNrXG4iCisiZnJhbWVzLlxuIgorIlxuIgorIlRoZSBmcmFtZXMgYXJlIGFsd2F5cyBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC5cbiIKKyJcbiIKKyJUaGUgb3B0aW9uYWwgbGltaXQgZ2l2ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0b1xuIgorInJldHVybjsgYnkgZGVmYXVsdCBhbGwgYXZhaWxhYmxlIGZyYW1lcyBhcmUgcmV0dXJuZWQuICBJdHNcbiIKKyJtZWFuaW5nIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSBzdGFjayBvciBhIHRyYWNlYmFjayBpc1xuIgorInJldHVybmVkOiB0aGUgbmV3ZXN0IGZyYW1lcyBvZiBhIHN0YWNrIGFyZSByZXR1cm5lZCwgYnV0IHRoZVxuIgorIm9sZGVzdCBmcmFtZXMgb2YgYSB0cmFjZWJhY2sgYXJlIHJldHVybmVkLiAgKFRoaXMgbWF0Y2hlcyB0aGVcbiIKKyJiZWhhdmlvciBvZiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4pXG4iCisiXG4iCisiRm9yIHJlYXNvbnMgYmV5b25kIG91ciBjb250cm9sLCBvbmx5IG9uZSBzdGFjayBmcmFtZSBpc1xuIgorInJldHVybmVkIGZvciBhIHN1c3BlbmRlZCBjb3JvdXRpbmUuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19HRVRfU1RBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9zdGFjayIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX2dldF9zdGFjaywgTUVUSF9GQVNUQ0FMTCwgX2FzeW5jaW9fVGFza19nZXRfc3RhY2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmxpbWl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGltaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8JE86Z2V0X3N0YWNrIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbGltaXQgPSBQeV9Ob25lOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsaW1pdCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX2dldF9zdGFja19pbXBsKHNlbGYsIGxpbWl0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19wcmludF9zdGFja19fZG9jX18sCisicHJpbnRfc3RhY2soJHNlbGYsIC8sICosIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlByaW50IHRoZSBzdGFjayBvciB0cmFjZWJhY2sgZm9yIHRoaXMgdGFza1wncyBjb3JvdXRpbmUuXG4iCisiXG4iCisiVGhpcyBwcm9kdWNlcyBvdXRwdXQgc2ltaWxhciB0byB0aGF0IG9mIHRoZSB0cmFjZWJhY2sgbW9kdWxlLFxuIgorImZvciB0aGUgZnJhbWVzIHJldHJpZXZlZCBieSBnZXRfc3RhY2soKS4gIFRoZSBsaW1pdCBhcmd1bWVudFxuIgorImlzIHBhc3NlZCB0byBnZXRfc3RhY2soKS4gIFRoZSBmaWxlIGFyZ3VtZW50IGlzIGFuIEkvTyBzdHJlYW1cbiIKKyJ0byB3aGljaCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW47IGJ5IGRlZmF1bHQgb3V0cHV0IGlzIHdyaXR0ZW5cbiIKKyJ0byBzeXMuc3RkZXJyLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfUFJJTlRfU1RBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InByaW50X3N0YWNrIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2ssIE1FVEhfRkFTVENBTEwsIF9hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2tfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19wcmludF9zdGFjayhUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImxpbWl0IiwgImZpbGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8JE9POnByaW50X3N0YWNrIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbGltaXQgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpmaWxlID0gUHlfTm9uZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGltaXQsICZmaWxlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2tfaW1wbChzZWxmLCBsaW1pdCwgZmlsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfX3N0ZXBfX2RvY19fLAorIl9zdGVwKCRzZWxmLCAvLCBleGM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19fU1RFUF9NRVRIT0RERUYgICAgXAorICAgIHsiX3N0ZXAiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19fc3RlcCwgTUVUSF9GQVNUQ0FMTCwgX2FzeW5jaW9fVGFza19fc3RlcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fc3RlcF9pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpleGMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fc3RlcChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImV4YyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOl9zdGVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZXhjKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfX3N0ZXBfaW1wbChzZWxmLCBleGMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX193YWtldXBfX2RvY19fLAorIl93YWtldXAoJHNlbGYsIC8sIGZ1dClcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19fV0FLRVVQX01FVEhPRERFRiAgICBcCisgICAgeyJfd2FrZXVwIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfX3dha2V1cCwgTUVUSF9GQVNUQ0FMTCwgX2FzeW5jaW9fVGFza19fd2FrZXVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX193YWtldXBfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqZnV0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3dha2V1cChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZ1dCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86X3dha2V1cCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZ1dDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZnV0KSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfX3dha2V1cF9pbXBsKHNlbGYsIGZ1dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZjAzNjMyMWJiMDgzMDY2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKaW5kZXggM2VkODMwMy4uMWNhODEwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDExICs4MiwxMyBAQAogICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyQ29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKLSAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQorICAgICAgICAmY29tcHJlc3NsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyQ29tcHJlc3NvciAqKXNlbGYsIGNvbXByZXNzbGV2ZWwpOwogCiBleGl0OgpAQCAtMTExLDI5ICsxMTUsMzIgQEAKICJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1NSwxNCArMTYyLDE2IEBACiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJEZWNvbXByZXNzb3JfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIkJaMkRlY29tcHJlc3NvciIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiQloyRGVjb21wcmVzc29yIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkRlY29tcHJlc3NvciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyRGVjb21wcmVzc29yIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKEJaMkRlY29tcHJlc3NvciAqKXNlbGYpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmMjliNzZiMzMxNGZjNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2U1N2FmMGIzNjhkM2U1NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCmluZGV4IGFmMDZjNmQuLjA1NjI4N2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC01NCwyNCArNTUsMjYgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2NvZGVjc19lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTEsMjQgKzk0LDI2IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKIAogI2RlZmluZSBfQ09ERUNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29kZWNzX2RlY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19jb2RlY3NfZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEzMyw4ICsxMzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOl9mb3JnZXRfY29kZWMiLCAmZW5jb2RpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpfZm9yZ2V0X2NvZGVjIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYxLDE0ICsxNjcsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTkzLDggKzIwMSw5IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmUHlCeXRlc19UeXBlLCAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIGRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yMjEsOCArMjMwLDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yNTAsMTQgKzI2MCwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl83X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgzLDE0ICsyOTUsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfOF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxNiwxNCArMzMwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM0OSwxNCArMzY1LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM4MiwxNCArNDAwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQxNywxNCArNDM3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ1MCwxNCArNDcyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4MywxNCArNTA3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUxNiwxNCArNTQyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU1MSwxNCArNTc5LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU4MywxNCArNjEzLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MTUsMTQgKzY0NywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NDcsMTQgKzY4MSwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6bGF0aW5fMV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY3OSwxNCArNzE1LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejphc2NpaV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03MTIsMTkgKzc1MCwyMSBAQAogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2RlY29kZV9fZG9jX18sCiAibWJjc19kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgpAQCAtNzQ3LDIxICs3ODcsNjIgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX29lbV9kZWNvZGVfX2RvY19fLAorIm9lbV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6b2VtX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfX2RvY19fLAogImNvZGVfcGFnZV9kZWNvZGUoJG1vZHVsZSwgY29kZXBhZ2UsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKQEAgLTc4NSwxOSArODY2LDIxIEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAotICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfX2RvY19fLAogInJlYWRidWZmZXJfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtODE5LDE0ICs5MDIsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJlYWRidWZmZXJfZW5jb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NTEsOCArOTM2LDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC04NzgsOSArOTY0LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzdfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzdfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTA2LDkgKzk5MywxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl84X2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl84X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTkzNSw5ICsxMDIzLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMTZfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8xNl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC05NjMsOSArMTA1MiwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9sZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTk5MSw5ICsxMDgxLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2JlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8xNl9iZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTAyMCw5ICsxMTExLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMzJfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC0xMDQ4LDkgKzExNDAsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMDc2LDkgKzExNjksMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTA0LDkgKzExOTgsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTMyLDkgKzEyMjcsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTYwLDkgKzEyNTYsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpsYXRpbl8xX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTg4LDkgKzEyODUsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejphc2NpaV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMjE3LDkgKzEzMTUsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CkBAIC0xMjQzLDE1ICsxMzQyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1hcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9idWlsZF9pbXBsKG1vZHVsZSwgbWFwKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX18sCiAibWJjc19lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEyNzEsMTggKzEzNzEsNTEgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6Om1iY3NfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX18sCisib2VtX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpvZW1fZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX29lbV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfXywKICJjb2RlX3BhZ2VfZW5jb2RlKCRtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEzMDQsMTYgKzE0MzcsMTcgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCi0gICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaVV8ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX19kb2NfXywKICJyZWdpc3Rlcl9lcnJvcigkbW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIsIC8pXG4iCkBAIC0xMzQwLDggKzE0NzQsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpyZWdpc3Rlcl9lcnJvciIsCi0gICAgICAgICZlcnJvcnMsICZoYW5kbGVyKSkKKyAgICAgICAgJmVycm9ycywgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKG1vZHVsZSwgZXJyb3JzLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTEzNjksOCArMTUwNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2Vycm9yX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTEzODEsNiArMTUxNywxMCBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KQEAgLTEzODksNyArMTUyOSwxMSBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MmZlZDk0ZTJhYjc2NWJhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZDZhZmNhYmRlMTBlZDc5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCmluZGV4IGEzYzM3MWMuLjQxMmM2ZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAgICAgY29uc3QgY2hhciAqc2FsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6Y3J5cHQiLAotICAgICAgICAmd29yZCwgJnNhbHQpKQorICAgICAgICAmd29yZCwgJnNhbHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY3J5cHRfY3J5cHRfaW1wbChtb2R1bGUsIHdvcmQsIHNhbHQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA0OTNhOTY5MTUzNzY5MCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGRmYzg4MjY0ZTY2MmRmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCmluZGV4IDVlMTE3NDIuLjYyZmYxYzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCkBAIC00MCwyMiArNDAsMjYgQEAKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjgsNCArNzIsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzZmZjNWY4ZDc5Y2JmYmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKaW5kZXggNjg4YzkwMy4uZGNiOTkyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCkBAIC0xNCwyNCArMTQsMjYgQEAKICJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7CiAKICNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKKyAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfRkFTVENBTEx8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2RhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bm93IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y0NWM2NzBkNmU0OTUzYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGFhYWMwNzA1YWRkNjFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCmluZGV4IDQ5Y2JjZWIuLjA2Y2Y3ZTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCkBAIC02MCw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZGJtX2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTMsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxLDExICsxMzMsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZmYxMmYxNjhjZGY4YjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OWFkZjk2NmVmMDQ3NWZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCmluZGV4IDg2YjRjNGMuLjFiMzA5Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTg3LDggKzg4LDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzQsMjMgKzEzNiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpmaW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE2Myw3ICsxNjcsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKQEAgLTE3MSwxNyArMTc1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmZpbmR0ZXh0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpmaW5kdGV4dCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE5NCwyMyArMjAwLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMjIzLDIzICsyMzEsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX19kb2NfX30sCisgICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzppdGVyZmluZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTI1MiwyMyArMjYyLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpnZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMjk4LDIxICszMTAsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJfTUVUSE9EREVGICAgIFwKLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOml0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnRhZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKHNlbGYsIHRhZyk7CiAKIGV4aXQ6CkBAIC0zNTYsOCArMzcwLDkgQEAKICAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCi0gICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICAmaW5kZXgsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKHNlbGYsIGluZGV4LCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQxOSw4ICs0MzQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgJnRhZywgJmF0dHJpYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKHNlbGYsIHRhZywgYXR0cmliKTsKIAogZXhpdDoKQEAgLTQ0NCw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQ3Myw4ICs0OTAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0IiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9pbXBsKHNlbGYsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDg5LDEyICs1MDcsMTQgQEAKIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X19faW1wbCgoVHJlZUJ1aWxkZXJPYmplY3QgKilzZWxmLCBlbGVtZW50X2ZhY3RvcnkpOwogCiBleGl0OgpAQCAtNTU1LDggKzU3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZ0YWcsICZhdHRycykpCisgICAgICAgICZ0YWcsICZhdHRycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChzZWxmLCB0YWcsIGF0dHJzKTsKIAogZXhpdDoKQEAgLTU3MSwxNCArNTkyLDE2IEBACiBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PejpYTUxQYXJzZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X19faW1wbCgoWE1MUGFyc2VyT2JqZWN0ICopc2VsZiwgaHRtbCwgdGFyZ2V0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC02NDAsOCArNjYzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRvY3R5cGUiLAogICAgICAgICAzLCAzLAotICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkKKyAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKTsKIAogZXhpdDoKQEAgLTY2OCwxMiArNjkyLDE0IEBACiAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZTsKICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsCi0gICAgICAgICZQeUxpc3RfVHlwZSwgJmV2ZW50c19xdWV1ZSwgJmV2ZW50c190b19yZXBvcnQpKQorICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIl9zZXRldmVudHMiLAorICAgICAgICAxLCAyLAorICAgICAgICAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjViOGJmN2U3ZjIxNTFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjRhNTcxYTk4Y2VkMzE2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKaW5kZXggMmQ4N2NmYy4uZmRkNTg5YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMjMsOCArMjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01Myw4ICs1NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTQ3LDggKzE0OSw5IEBACiAgICAgY29uc3QgY2hhciAqa2V5OwogICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOwogCiBleGl0OgpAQCAtMjQyLDExICsyNDUsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YWM3YTg5ODU4YTk3NjVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZDBmNWQ0ZTNkNzliODBjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NDUzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikpCisKK1B5RG9jX1NUUlZBUihfaGFzaGxpYl9zY3J5cHRfX2RvY19fLAorInNjcnlwdCgkbW9kdWxlLCAvLCBwYXNzd29yZCwgKiwgc2FsdD1Ob25lLCBuPU5vbmUsIHI9Tm9uZSwgcD1Ob25lLFxuIgorIiAgICAgICBtYXhtZW09MCwgZGtsZW49NjQpXG4iCisiLS1cbiIKKyJcbiIKKyJzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uIik7CisKKyNkZWZpbmUgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRiAgICBcCisgICAgeyJzY3J5cHQiLCAoUHlDRnVuY3Rpb24pX2hhc2hsaWJfc2NyeXB0LCBNRVRIX0ZBU1RDQUxMLCBfaGFzaGxpYl9zY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqcGFzc3dvcmQsIFB5X2J1ZmZlciAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuX29iaiwgUHlPYmplY3QgKnJfb2JqLCBQeU9iamVjdCAqcF9vYmosCisgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG1lbSwgbG9uZyBka2xlbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXNzd29yZCIsICJzYWx0IiwgIm4iLCAiciIsICJwIiwgIm1heG1lbSIsICJka2xlbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCR5Kk8hTyFPIWxsOnNjcnlwdCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlfYnVmZmVyIHBhc3N3b3JkID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5T2JqZWN0ICpuX29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJfb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcF9vYmogPSBQeV9Ob25lOworICAgIGxvbmcgbWF4bWVtID0gMDsKKyAgICBsb25nIGRrbGVuID0gNjQ7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhc3N3b3JkLCAmc2FsdCwgJlB5TG9uZ19UeXBlLCAmbl9vYmosICZQeUxvbmdfVHlwZSwgJnJfb2JqLCAmUHlMb25nX1R5cGUsICZwX29iaiwgJm1heG1lbSwgJmRrbGVuKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9oYXNobGliX3NjcnlwdF9pbXBsKG1vZHVsZSwgJnBhc3N3b3JkLCAmc2FsdCwgbl9vYmosIHJfb2JqLCBwX29iaiwgbWF4bWVtLCBka2xlbik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGFzc3dvcmQgKi8KKyAgICBpZiAocGFzc3dvcmQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFzc3dvcmQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSkgKi8KKworI2lmbmRlZiBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMThjZDcwMzZmYTBmYjUyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAppbmRleCBmOGQzOGVhLi45ZTYwNzU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCkBAIC0yNSwxNCArMjUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc5LDI5ICs4MSwzMiBAQAogInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0xaTUFfTFpNQURFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMzcsMTQgKzE0MiwxNiBAQAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZvcm1hdCA9IEZPUk1BVF9BVVRPOwogICAgIFB5T2JqZWN0ICptZW1saW1pdCA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKmZpbHRlcnMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLAotICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXQsICZmaWx0ZXJzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKIAogZXhpdDoKQEAgLTE3MSw4ICsxNzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaGVja19pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX2ltcGwobW9kdWxlLCBjaGVja19pZCk7CiAKIGV4aXQ6CkBAIC0xOTksOCArMjA3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCiBleGl0OgpAQCAtMjM0LDE1ICsyNDMsMTcgQEAKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKLSAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpCisgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZW5jb2RlZF9wcm9wcyAqLwotICAgIGlmIChlbmNvZGVkX3Byb3BzLm9iaikKKyAgICBpZiAoZW5jb2RlZF9wcm9wcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZlbmNvZGVkX3Byb3BzKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZhZGEwNjAyMGZkMzE4Y2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYyN2FiYWU0NjAxMjI3MDYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAppbmRleCBhNWY2NDQyLi41MTNjYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMjMsMTQgKzIzLDE2IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8TzpzdGFja19lZmZlY3QiLAotICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKQorICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwobW9kdWxlLCBvcGNvZGUsIG9wYXJnKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg0ZDZkZTE0MDMwM2QxMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ5MWM2YTc2NTA5Nzg1MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaCBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCmluZGV4IGJkMTJkMmEuLjlhZDRjMzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCkBAIC01Myw4ICs1Myw5IEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTkyLDE0ICs5MywxNiBAQAogX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T3A6UGlja2xlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTIxMiw4ICsyMTUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmluZF9jbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZtb2R1bGVfbmFtZSwgJmdsb2JhbF9uYW1lKSkKKyAgICAgICAgJm1vZHVsZV9uYW1lLCAmZ2xvYmFsX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKHNlbGYsIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMzksOCArMjQzLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yODEsMTUgKzI4NiwxNyBAQAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMzc3LDI1ICszODQsMjcgQEAKICIyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wX19kb2NfX30sCisgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wX2ltcGwobW9kdWxlLCBvYmosIGZpbGUsIHByb3RvY29sLCBmaXhfaW1wb3J0cyk7CiAKIGV4aXQ6CkBAIC00MjEsMjQgKzQzMCwyNiBAQAogIlB5dGhvbiAyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wc19fZG9jX199LAorICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TyRwOmR1bXBzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TyRwOmR1bXBzIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTQ3NSwyNSArNDg2LDI3IEBACiAic3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfTE9BRF9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKKyAgICB7ImxvYWQiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfbG9hZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9sb2FkX2ltcGwobW9kdWxlLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MjEsMjggKzUzNCwzMCBAQAogInN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4iKTsKIAogI2RlZmluZSBfUElDS0xFX0xPQURTX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9sb2Fkc19fZG9jX199LAorICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9sb2Fkc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2Fkc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9sb2FkcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRhdGE7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzY1N2U1NWQ2YTc0OGFmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MmJlMTM3YjNjMDljYjlmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKaW5kZXggMzI4MTcxNy4uMDYxMjAwNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGNvZGVzaXplX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDgsMTEgKzQ5LDEzIEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmdldGxvd2VyIiwKLSAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkKKyAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGxvd2VyX2ltcGwobW9kdWxlLCBjaGFyYWN0ZXIsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjYsNyArNjksNyBAQAogIk1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fTUFUQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTc0LDE4ICs3NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTEwMCw3ICsxMDUsNyBAQAogIk1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZyIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRiAgICBcCi0gICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtMTA4LDE4ICsxMTMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CiAKIGV4aXQ6CkBAIC0xMzYsNyArMTQzLDcgQEAKICJSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TRUFSQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNDQsMTggKzE1MSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTE3MCw3ICsxNzksNyBAQAogIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNzgsMTggKzE4NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqc291cmNlID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmc291cmNlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBzb3VyY2UpOwogCiBleGl0OgpAQCAtMjA1LDI0ICsyMTYsMjYgQEAKICJGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5ESVRFUl9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAKIGV4aXQ6CkBAIC0yMzUsMjQgKzI0OCwyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TQ0FOTkVSX01FVEhPRERFRiAgICBcCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogCiBleGl0OgpAQCAtMjY2LDI0ICsyODEsMjYgQEAKICJTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQsIFB5T2JqZWN0ICpzb3VyY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAwOwogICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoc2VsZiwgc3RyaW5nLCBtYXhzcGxpdCwgc291cmNlKTsKIAogZXhpdDoKQEAgLTI5NywyNCArMzE0LDI2IEBACiAiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJfTUVUSE9EREVGICAgIFwKLSAgICB7InN1YiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1YiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCisgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3ViKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT3xuOnN1YiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3ViIiwgX2tleXdvcmRzLAotICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOwogCiBleGl0OgpAQCAtMzI4LDI0ICszNDcsMjYgQEAKICJSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJOX01FVEhPRERFRiAgICBcCi0gICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3VibiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAorICAgIHsic3VibiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfG46c3VibiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3VibiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CiAKIGV4aXQ6CkBAIC0zNzUsMjEgKzM5NiwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKIAogZXhpdDoKQEAgLTQwMyw3ICs0MjYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilfc3JlX2NvbXBpbGUsIE1FVEhfRkFTVENBTEwsIF9zcmVfY29tcGlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9jb21waWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKQEAgLTQxMSwxMCArNDM0LDExIEBACiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdHRlcm4iLCAiZmxhZ3MiLCAiY29kZSIsICJncm91cHMiLCAiZ3JvdXBpbmRleCIsICJpbmRleGdyb3VwIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0dGVybiIsICJmbGFncyIsICJjb2RlIiwgImdyb3VwcyIsICJncm91cGluZGV4IiwgImluZGV4Z3JvdXAiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaU8hbk9POmNvbXBpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuOwogICAgIGludCBmbGFnczsKICAgICBQeU9iamVjdCAqY29kZTsKQEAgLTQyMiw5ICs0NDYsMTAgQEAKICAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKICAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CiAKIGV4aXQ6CkBAIC00MzgsMjEgKzQ2MywyMyBAQAogIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAotICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0ZW1wbGF0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRlbXBsYXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpleHBhbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0ZW1wbGF0ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86ZXhwYW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmdGVtcGxhdGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGVtcGxhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoc2VsZiwgdGVtcGxhdGUpOwogCiBleGl0OgpAQCAtNDY5LDIxICs0OTYsMjMgQEAKICIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfX30sCisgICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpncm91cHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwyMSArNTI5LDIzIEBACiAiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQRElDVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9fZG9jX199LAorICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Z3JvdXBkaWN0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpncm91cGRpY3QiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NDIsMTEgKzU3MywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3N0YXJ0X2ltcGwoc2VsZiwgZ3JvdXApOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NzQsMTEgKzYwNywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZW5kIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9lbmRfaW1wbChzZWxmLCBncm91cCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYwNSw4ICs2NDAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOwogCiBleGl0OgpAQCAtNjM2LDIxICs2NzIsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CiAKIGV4aXQ6CkBAIC02OTAsNCArNzI4LDQgQEAKIHsKICAgICByZXR1cm4gX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGNlOWU1Yjc0OGNlNTMyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGEyNDZiY2ExOTYzYmM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zc2wuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKaW5kZXggODUyZTM2NS4uMjlmNTgzOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTM2LDggKzM2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTcxLDggKzcyLDkgQEAKICAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKLSAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOwogCiBleGl0OgpAQCAtMjA5LDE0ICsyMTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF93cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNjAsMTIgKzI2NCwxNCBAQAogCiAgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZsZW4pKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzYsOCArMjgyLDkgQEAKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMzMiwxMSArMzM5LDEzIEBACiAgICAgaW50IHByb3RvX3ZlcnNpb247CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMQ29udGV4dF9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIl9TU0xDb250ZXh0Iiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJfU1NMQ29udGV4dCIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6X1NTTENvbnRleHQiLAotICAgICAgICAmcHJvdG9fdmVyc2lvbikpCisgICAgICAgICZwcm90b192ZXJzaW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfaW1wbCh0eXBlLCBwcm90b192ZXJzaW9uKTsKIAogZXhpdDoKQEAgLTM2MCwxNCArMzY5LDM2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfX2RvY19fLAorImdldF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMKSAqLworCiBQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfX2RvY19fLAogIl9zZXRfbnBuX3Byb3RvY29scygkc2VsZiwgcHJvdG9zLCAvKVxuIgogIi0tXG4iCkBAIC0zODYsMTQgKzQxNywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDE2LDE0ICs0NDksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KLSAgICBpZiAocHJvdG9zLm9iaikKKyAgICBpZiAocHJvdG9zLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQzNCwyNCArNDY5LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKyAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbiwgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZTsKICAgICBQeU9iamVjdCAqa2V5ZmlsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhc3N3b3JkID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086bG9hZF9jZXJ0X2NoYWluIiwgX2tleXdvcmRzLAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChzZWxmLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgcGFzc3dvcmQpOwogCiBleGl0OgpAQCAtNDY0LDcgKzUwMSw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLApAQCAtNDczLDE3ICs1MTAsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmNhZmlsZSwgJmNhcGF0aCwgJmNhZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKHNlbGYsIGNhZmlsZSwgY2FwYXRoLCBjYWRhdGEpOwogCiBleGl0OgpAQCAtNTA0LDI0ICs1NDMsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfU09DS0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAorICAgIHsiX3dyYXBfc29ja2V0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0LCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VydmVyX3NpZGUsIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzb2NrOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC01MzUsNyArNTc2LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfQklPX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAorICAgIHsiX3dyYXBfYmlvIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKQEAgLTU0MywxOCArNTg0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmc7CiAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLAotICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOwogCiBleGl0OgpAQCAtNjU3LDIxICs3MDAsMjMgQEAKICJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKyAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBiaW5hcnlfZm9ybSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZiaW5hcnlfZm9ybSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZiaW5hcnlfZm9ybSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKHNlbGYsIGJpbmFyeV9mb3JtKTsKIAogZXhpdDoKQEAgLTY4NywxMSArNzMyLDEzIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJNZW1vcnlCSU8iLCBhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIk1lbW9yeUJJTyIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CiAKIGV4aXQ6CkBAIC03MjIsOCArNzY5LDkgQEAKICAgICBpbnQgbGVuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWQiLAotICAgICAgICAmbGVuKSkKKyAgICAgICAgJmxlbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKIAogZXhpdDoKQEAgLTc1MCwxNCArNzk4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MDUsMTQgKzg1NSwxNiBAQAogICAgIGRvdWJsZSBlbnRyb3B5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAotICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICAmdmlldywgJmVudHJvcHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KLSAgICBpZiAodmlldy5vYmopCisgICAgaWYgKHZpZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgzNSw4ICs4ODcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYnl0ZXNfaW1wbChtb2R1bGUsIG4pOwogCiBleGl0OgpAQCAtODY0LDggKzkxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC05MTYsOCArOTcwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlJBTkRfZWdkIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfZWdkX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk1NiwyMiArMTAxMSwyNCBAQAogImxvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLiIpOwogCiAjZGVmaW5lIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYgICAgXAotICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfdHh0Mm9ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eHQiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsic3xwOnR4dDJvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnR4dDsKICAgICBpbnQgbmFtZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnR4dCwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHh0LCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CiAKIGV4aXQ6CkBAIC05OTYsOCArMTA1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfbmlkMm9ial9pbXBsKG1vZHVsZSwgbmlkKTsKIAogZXhpdDoKQEAgLTEwMTksMjEgKzEwNzcsMjMgQEAKICJhIHNldCBvZiBPSURzIG9yIHRoZSBib29sZWFuIFRydWUuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKKyAgICB7ImVudW1fY2VydGlmaWNhdGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY2VydGlmaWNhdGVzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnN0b3JlX25hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzOmVudW1fY2VydGlmaWNhdGVzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA1NiwyMSArMTExNiwyMyBAQAogIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisgICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NybHMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX2VudW1fY3Jsc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NybHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzOmVudW1fY3JscyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jcmxzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKIAogZXhpdDoKQEAgLTEwODcsNiArMTE0OSwxMCBAQAogICAgICNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGKSAqLwpAQCAtMTEwMiw0ICsxMTY4LDQgQEAKICNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmZiMTA1OTRkODM1MWRjNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg1OWIyMWZlNjhhNjExNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKaW5kZXggNzdhZjA4My4uZWRkNTM4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnNjcmlwdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOwogCiBleGl0OgpAQCAtNDQsOCArNDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChzZWxmLCBmaWxlTmFtZSk7CiAKIGV4aXQ6CkBAIC02OSw4ICs3MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpyZWNvcmQiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC05NCw4ICs5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbXNnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmFkZGVycmluZm8iLCAmbXNnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mb19pbXBsKHNlbGYsIG1zZyk7CiAKIGV4aXQ6CkBAIC0xNDMsOCArMTQ3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xNjgsOCArMTczLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xOTMsOCArMTk5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yMTgsOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByYm9vbGVhbiIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yNjIsOCArMjcwLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086Y3JlYXRlY29tbWFuZCIsCi0gICAgICAgICZuYW1lLCAmZnVuYykpCisgICAgICAgICZuYW1lLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSwgZnVuYyk7CiAKIGV4aXQ6CkBAIC0yODcsOCArMjk2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zMTgsOCArMzI4LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKLSAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKIAogZXhpdDoKQEAgLTM3Nyw4ICszODgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAotICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKHNlbGYsIG1pbGxpc2Vjb25kcywgZnVuYyk7CiAKIGV4aXQ6CkBAIC00MDMsOCArNDE1LDkgQEAKICAgICBpbnQgdGhyZXNob2xkID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6bWFpbmxvb3AiLAotICAgICAgICAmdGhyZXNob2xkKSkKKyAgICAgICAgJnRocmVzaG9sZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKHNlbGYsIHRocmVzaG9sZCk7CiAKIGV4aXQ6CkBAIC00MjksOCArNDQyLDkgQEAKICAgICBpbnQgZmxhZ3MgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpkb29uZWV2ZW50IiwKLSAgICAgICAgJmZsYWdzKSkKKyAgICAgICAgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnRfaW1wbChzZWxmLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01NTEsOCArNTY1LDkgQEAKICAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKLSAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CiAKIGV4aXQ6CkBAIC01NzksOCArNTk0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmV3X3ZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKG1vZHVsZSwgbmV3X3ZhbCk7CiAKIGV4aXQ6CkBAIC02MDYsOCArNjIyLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjIxLDQgKzYzOCw0IEBACiAjaWZuZGVmIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgogICAgICNkZWZpbmUgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY5MDU3YzhiZjI4ODYzM2QgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzNmM1NzhiNzFkNjkwOTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCmluZGV4IDJkOTM2NzkuLmFiODRjMzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKQEAgLTIxLDggKzIxLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwobW9kdWxlLCBvYmplY3QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MCwxMSArNTEsMTIgQEAKICAgICBQeU9iamVjdCAqa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIU86X3JlbW92ZV9kZWFkX3dlYWtyZWYiLAotICAgICAgICAmUHlEaWN0X1R5cGUsICZkY3QsICZrZXkpKQorICAgICAgICAmUHlEaWN0X1R5cGUsICZkY3QsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dlYWtyZWZfX3JlbW92ZV9kZWFkX3dlYWtyZWZfaW1wbChtb2R1bGUsIGRjdCwga2V5KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3NjRjYjY0YTZmNjZmZmQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU4NjBkZDgxOGE0NGJjOWIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAppbmRleCBhYzM4ZDM3Li41YmZiYWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB3YWl0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOwogCiBleGl0OgpAQCAtNzksOCArODAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOwogCiBleGl0OgpAQCAtOTMsMjMgKzk1LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKLSAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisgICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgpAQCAtMTQ3LDEzICsxNTEsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2trIiBGX1BPSU5URVIgImtrIiBGX0hBTkRMRSAiOkNyZWF0ZUZpbGUiLAotICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE4MCw4ICsxODcsOSBAQAogICAgIExQV1NUUiBkc3RfcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAotICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChtb2R1bGUsIHNyY19wYXRoLCBkc3RfcGF0aCk7CiAKIGV4aXQ6CkBAIC0yMjAsMTMgKzIyOCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2tra2trIiBGX1BPSU5URVIgIjpDcmVhdGVOYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKQorICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLCBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LCBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yNTgsOCArMjY5LDkgQEAKICAgICBEV09SRCBzaXplOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKLSAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zMDgsOCArMzIwLDkgQEAKICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCi0gICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CiAKIGV4aXQ6CkBAIC0zNTEsMTMgKzM2NCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICIiIEZfSEFORExFICIiIEZfSEFORExFICJraXxrOkR1cGxpY2F0ZUhhbmRsZSIsCi0gICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKQorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzgxLDggKzM5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgVUlOVCBFeGl0Q29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChtb2R1bGUsIEV4aXRDb2RlKTsKIAogZXhpdDoKQEAgLTQwOCwxMCArNDI1LDEyIEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDM3LDExICs0NTYsMTMgQEAKICAgICBIQU5ETEUgcHJvY2VzczsKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKG1vZHVsZSwgcHJvY2Vzcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDY2LDggKzQ4Nyw5IEBACiAgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDk5LDggKzUyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKIAogZXhpdDoKQEAgLTUzMSwxMyArNTU0LDE2IEBACiAgICAgRFdPUkQgc3RkX2hhbmRsZTsKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFN0ZEhhbmRsZV9pbXBsKG1vZHVsZSwgc3RkX2hhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTYzLDggKzU4OSw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0VmVyc2lvbl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU5MywxMyArNjIwLDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImtpazpPcGVuUHJvY2VzcyIsCi0gICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpCisgICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9PcGVuUHJvY2Vzc19pbXBsKG1vZHVsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjUsOCArNjU1LDkgQEAKICAgICBpbnQgc2l6ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgICZoYW5kbGUsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfUGVla05hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplKTsKIAogZXhpdDoKQEAgLTYzOSwyNCArNjcwLDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHNpemU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC02ODgsOCArNzIxLDkgQEAKICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIk9PTzpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsCi0gICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKQorICAgICAgICAmbmFtZWRfcGlwZSwgJm1vZGUsICZtYXhfY29sbGVjdGlvbl9jb3VudCwgJmNvbGxlY3RfZGF0YV90aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03MTcsOCArNzUxLDkgQEAKICAgICBVSU5UIGV4aXRfY29kZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKLSAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgICZoYW5kbGUsICZleGl0X2NvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzX2ltcGwobW9kdWxlLCBoYW5kbGUsIGV4aXRfY29kZSk7CiAKIGV4aXQ6CkBAIC03NDQsOCArNzc5LDkgQEAKICAgICBEV09SRCB0aW1lb3V0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKLSAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03NzQsOCArODEwLDkgQEAKICAgICBEV09SRCBtaWxsaXNlY29uZHMgPSBJTkZJTklURTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2l8azpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKLSAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKIAogZXhpdDoKQEAgLTgwOCwxMSArODQ1LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgJmhhbmRsZSwgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwobW9kdWxlLCBoYW5kbGUsIG1pbGxpc2Vjb25kcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTgyNSwyNyArODY0LDI5IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1dSSVRFRklMRV9NRVRIT0RERUYgICAgXAotICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfV3JpdGVGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgUHlPYmplY3QgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV3JpdGVGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGJ1ZmZlciwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRjNGIyYTlmY2IwYmVhMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDZkNjM4MmE2NjYyYzRhOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKaW5kZXggMGM3MDYxYS4uM2I5ZmNkYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaApAQCAtNzcsOCArNzcsOSBAQAogICAgIFB5X3NzaXplX3QgaSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLAotICAgICAgICAmaSkpCisgICAgICAgICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOwogCiBleGl0OgpAQCAtMTE0LDggKzExNSw5IEBACiAgICAgUHlPYmplY3QgKnY7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsCi0gICAgICAgICZpLCAmdikpCisgICAgICAgICZpLCAmdikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpLCB2KTsKIAogZXhpdDoKQEAgLTIxMSw4ICsyMTMsOSBAQAogICAgIFB5X3NzaXplX3QgbjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAotICAgICAgICAmZiwgJm4pKQorICAgICAgICAmZiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKIAogZXhpdDoKQEAgLTI3NSwxNCArMjc4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzA1LDE0ICszMTAsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNzksOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp1c3RyOwogICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC00NTMsOCArNDYxLDkgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86X2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCisgICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX2ltcGwobW9kdWxlLCBhcnJheXR5cGUsIHR5cGVjb2RlLCBtZm9ybWF0X2NvZGUsIGl0ZW1zKTsKIAogZXhpdDoKQEAgLTQ5Niw0ICs1MDUsNCBAQAogCiAjZGVmaW5lIEFSUkFZX0FSUkFZSVRFUkFUT1JfX19TRVRTVEFURV9fX01FVEhPRERFRiAgICBcCiAgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX18sIE1FVEhfTywgYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMDVkZjNmNTc5NjAzOWU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjA1NGZiNzY0YzhjYzY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKaW5kZXggNjJlMzEzYjUuLmJlNGI3MTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmluOmdldHNhbXBsZSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU2LDE0ICs1OCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04OCwxNCArOTIsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptaW5tYXgiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTIwLDE0ICsxMjYsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTUyLDE0ICsxNjAsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpybXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTg1LDE3ICsxOTUsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIyMSwxNyArMjM0LDIwIEBACiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjpmaW5kZmFjdG9yIiwKLSAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCAmcmVmZXJlbmNlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgcmVmZXJlbmNlICovCi0gICAgaWYgKHJlZmVyZW5jZS5vYmopCisgICAgaWYgKHJlZmVyZW5jZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZyZWZlcmVuY2UpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNTcsMTQgKzI3MywxNiBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Km46ZmluZG1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpCisgICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRtYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjg5LDE0ICszMDcsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmdwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMyMSwxNCArMzQxLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4cHAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWF4cHBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTMsMTQgKzM3NSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2Nyb3NzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzg3LDE0ICs0MTEsMTYgQEAKICAgICBkb3VibGUgZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkOm11bCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tdWxfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGZhY3Rvcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyMiwxNCArNDQ4LDE2IEBACiAgICAgZG91YmxlIHJmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9tb25vX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDU3LDE0ICs0ODUsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9zdGVyZW8iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDkxLDE3ICs1MjEsMjAgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCi0gICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50MSAqLwotICAgIGlmIChmcmFnbWVudDEub2JqKQorICAgIGlmIChmcmFnbWVudDEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQxKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQyICovCi0gICAgaWYgKGZyYWdtZW50Mi5vYmopCisgICAgaWYgKGZyYWdtZW50Mi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01MjcsMTQgKzU2MCwxNiBAQAogICAgIGludCBiaWFzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmJpYXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9iaWFzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBiaWFzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTU5LDE0ICs1OTQsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpyZXZlcnNlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JldmVyc2VfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01OTEsMTQgKzYyOCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2J5dGVzd2FwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjI1LDE0ICs2NjQsMTYgQEAKICAgICBpbnQgbmV3d2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6bGluMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NjYsMTQgKzcwNywxNiBAQAogICAgIGludCB3ZWlnaHRCID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaWlpT3xpaTpyYXRlY3YiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjk4LDE0ICs3NDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4ydWxhdyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ydWxhd19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTczMCwxNCArNzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03NjIsMTQgKzgwOSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJhbGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzk0LDE0ICs4NDMsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphbGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hbGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgyOCwxNCArODc5LDE2IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFkcGNtX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg2MiwxNSArOTE1LDE3IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRwY20ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zODVmYjA5ZmEyMWE2MmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGFiNzRjM2ZhNTdjMzljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCA2YWNlNGQ1Li43NDNiZjQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC0yMCw4ICsyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtNTAsMTQgKzUxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDggKzgzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC05MywzMSArOTcsMzcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19fLAotImIyYV9iYXNlNjQoJG1vZHVsZSwgZGF0YSwgLylcbiIKKyJiMmFfYmFzZTY0KCRtb2R1bGUsIC8sIGRhdGEsICosIG5ld2xpbmU9VHJ1ZSlcbiIKICItLVxuIgogIlxuIgogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnwkaTpiMmFfYmFzZTY0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgbmV3bGluZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbmV3bGluZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEsIG5ld2xpbmUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE0MCw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTE3MCwxNCArMTgxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIwMCwxNCArMjEzLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzMCwxNCArMjQ1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI2MywxNyArMjgwLDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yOTksMTcgKzMxOSwyMCBAQAogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzM1LDE0ICszNTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9oZXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaGV4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzY3LDE0ICszOTIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmhleGxpZnkiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDAwLDggKzQyNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hleF9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKIGV4aXQ6CkBAIC00MzIsOCArNDYwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bmhleGxpZnkiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfdW5oZXhsaWZ5X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQ1MSwyMiArNDgwLDI0IEBACiAiRGVjb2RlIGEgc3RyaW5nIG9mIHFwLWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfUVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBiaW5hc2NpaV9hMmJfcXBfX2RvY19ffSwKKyAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3FwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9xcF9pbXBsKG1vZHVsZSwgJmRhdGEsIGhlYWRlcik7CiAKIGV4aXQ6CkBAIC00ODgsMzIgKzUxOSwzNSBAQAogImFyZSBib3RoIGVuY29kZWQuICBXaGVuIHF1b3RldGFicyBpcyBzZXQsIHNwYWNlIGFuZCB0YWJzIGFyZSBlbmNvZGVkLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2IyYV9xcF9fZG9jX199LAorICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAicXVvdGV0YWJzIiwgImlzdGV4dCIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpaWk6YjJhX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgcXVvdGV0YWJzID0gMDsKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmcXVvdGV0YWJzLCAmaXN0ZXh0LCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZkNzBkNWVkZDkzNzNkOTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1OGViMDk3MzFjYjc4NzcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCmluZGV4IGEyNTUzNTMuLjA1NDMxZmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKQEAgLTIxLDggKzIxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CkBAIC02Miw4ICs2Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMTAzLDggKzEwNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2FzaW5faW1wbChtb2R1bGUsIHopOwpAQCAtMTQ0LDggKzE0Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMTg1LDggKzE4OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2F0YW5faW1wbChtb2R1bGUsIHopOwpAQCAtMjI2LDggKzIzMSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMjY3LDggKzI3Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NfaW1wbChtb2R1bGUsIHopOwpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMzQ5LDggKzM1Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpleHAiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9leHBfaW1wbChtb2R1bGUsIHopOwpAQCAtMzkwLDggKzM5OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6bG9nMTAiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nMTBfaW1wbChtb2R1bGUsIHopOwpAQCAtNDMxLDggKzQ0MSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOwpAQCAtNDcyLDggKzQ4Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNTEzLDggKzUyNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOwpAQCAtNTU0LDggKzU2Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5faW1wbChtb2R1bGUsIHopOwpAQCAtNTk1LDggKzYwOSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNjM5LDggKzY1NCw5IEBACiAgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCi0gICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICAmeCwgJnlfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2xvZ19pbXBsKG1vZHVsZSwgeCwgeV9vYmopOwogCiBleGl0OgpAQCAtNjY1LDggKzY4MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwaGFzZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BoYXNlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTY5Myw4ICs3MTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cG9sYXIiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9wb2xhcl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03MjEsOCArNzM5LDkgQEAKICAgICBkb3VibGUgcGhpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkZDpyZWN0IiwKLSAgICAgICAgJnIsICZwaGkpKQorICAgICAgICAmciwgJnBoaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOwogCiBleGl0OgpAQCAtNzQ3LDggKzc2Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc3Myw4ICs3OTMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNuYW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc25hbl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03OTksOCArODIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtODI5LDMyICs4NTEsMzUgQEAKICJub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiBpbmYgYW5kIC1pbmYgYXJlIG9ubHkgY2xvc2UgdG8gdGhlbXNlbHZlcy4iKTsKIAogI2RlZmluZSBDTUFUSF9JU0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBjbWF0aF9pc2Nsb3NlX19kb2NfX30sCisgICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfRkFTVENBTEwsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIGludAogY21hdGhfaXNjbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorY21hdGhfaXNjbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImEiLCAiYiIsICJyZWxfdG9sIiwgImFic190b2wiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfY29tcGxleCBhOwogICAgIFB5X2NvbXBsZXggYjsKICAgICBkb3VibGUgcmVsX3RvbCA9IDFlLTA5OwogICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiRER8JGRkOmlzY2xvc2UiLCBfa2V5d29yZHMsCi0gICAgICAgICZhLCAmYiwgJnJlbF90b2wsICZhYnNfdG9sKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2lzY2xvc2VfaW1wbChtb2R1bGUsIGEsIGIsIHJlbF90b2wsIGFic190b2wpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzIxOTQwMjliN2ZiMWU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NzhmNTk3MDJiNDE2NTVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAppbmRleCA2NzY2MGViLi44NGEwMDRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKIAogZXhpdDoKQEAgLTkxLDggKzkyLDkgQEAKICAgICBpbnQgbXV0YXRlX2FyZyA9IDE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXxPcDppb2N0bCIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZvYl9hcmcsICZtdXRhdGVfYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2lvY3RsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgb2JfYXJnLCBtdXRhdGVfYXJnKTsKIAogZXhpdDoKQEAgLTEyMiw4ICsxMjQsOSBAQAogICAgIGludCBjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKIAogZXhpdDoKQEAgLTE3NSwxMSArMTc4LDEyIEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPT2k6bG9ja2YiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgbGVub2JqLCBzdGFydG9iaiwgd2hlbmNlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3YjEzMDZiODY0YzAxYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2Y2ZmNzZhOGZiMmM5YTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKaW5kZXggMmM0N2E0Mi4uMDI4MmI0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCkBAIC0xMSwyMSArMTEsMjMgQEAKICJJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUkdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JnaWQiLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdyZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdyZ2lkX19kb2NfX30sCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncmdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdyZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKIAogZXhpdDoKQEAgLTQxLDIxICs0MywyMyBAQAogIklmIG5hbWUgaXMgbm90IHZhbGlkLCByYWlzZSBLZXlFcnJvci4iKTsKIAogI2RlZmluZSBHUlBfR0VUR1JOQU1fTUVUSE9EREVGICAgIFwKLSAgICB7ImdldGdybmFtIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncm5hbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGdycF9nZXRncm5hbV9fZG9jX199LAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX0ZBU1RDQUxMLCBncnBfZ2V0Z3JuYW1fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGdycF9nZXRncm5hbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOmdldGdybmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZ3JwX2dldGdybmFtX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTgyLDQgKzg2LDQgQEAKIHsKICAgICByZXR1cm4gZ3JwX2dldGdyYWxsX2ltcGwobW9kdWxlKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWUwOWZlZWZjNTRhMmNiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjQxN2FlMGE3Mjk4ZTBlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCmluZGV4IDBiZDk1OGEuLmE4NDFmZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9NRDVfTUQ1X01FVEhPRERFRiAgICBcCi0gICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbWQ1X21kNV9fZG9jX199LAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX0ZBU1RDQUxMLCBfbWQ1X21kNV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX21kNV9tZDVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tZDVfbWQ1KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOm1kNSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzptZDUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGNkM2NjOTZlMzU1NjNkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRjZDUwZGIwNTBmMjU4OSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKaW5kZXggYjM1MjFkOC4uZjYzYTNiZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMjcsMjMgKzI3LDI1IEBACiAiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19TVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0X19kb2NfX30sCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdCIsICJwYXRoIiwgMCwgMSk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC02MywyMiArNjUsMjQgQEAKICJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2xzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsc3RhdCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMSwxNyArMTI1LDE4IEBACiAiICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQUNDRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfYWNjZXNzX19kb2NfX30sCisgICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX0ZBU1RDQUxMLCBvc19hY2Nlc3NfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfYWNjZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJhY2Nlc3MiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKQEAgLTEzOSwxMiArMTQ0LDE0IEBACiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2FjY2Vzc19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZWZmZWN0aXZlX2lkcywgZm9sbG93X3N5bWxpbmtzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTc4LDExICsxODUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgY2hhciAqX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dHR5bmFtZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMjQsMjEgKzIzMywyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX0NIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NoZGlyX19kb2NfX30sCisgICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTI2MCwyMSArMjcxLDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNoZGlyX19kb2NfX30sCisgICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmY2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZjaGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaGRpcl9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzEwLDI1ICszMjMsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NobW9kX19kb2NfX30sCisgICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NobW9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfCRPJnA6Y2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNobW9kIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNITU9EKTsKICAgICBpbnQgbW9kZTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC0zNDksMjIgKzM2NCwyNCBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG1vZF9fZG9jX199LAorICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpmY2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNobW9kX2ltcGwobW9kdWxlLCBmZCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zODUsMjIgKzQwMiwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOwogCiAjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNobW9kIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maTpsY2htb2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUpOwogCiBleGl0OgpAQCAtNDI3LDI0ICs0NDYsMjYgQEAKICJ1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hmbGFnc19fZG9jX199LAorICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaGZsYWdzIiwgInBhdGgiLCAwLCAwKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfHA6Y2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC00NjgsMjIgKzQ4OSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2xjaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hmbGFnc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01MDQsMjEgKzUyNywyMyBAQAogIkNoYW5nZSByb290IGRpcmVjdG9yeSB0byBwYXRoLiIpOwogCiAjZGVmaW5lIE9TX0NIUk9PVF9NRVRIT0RERUYgICAgXAotICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nocm9vdF9fZG9jX199LAorICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hyb290X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaHJvb3RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmNocm9vdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hyb290IiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNocm9vdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nocm9vdF9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNTM5LDIxICs1NjQsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrLiIpOwogCiAjZGVmaW5lIE9TX0ZTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzeW5jX19kb2NfX30sCisgICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9GQVNUQ0FMTCwgb3NfZnN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZnN5bmMiLCBfa2V5d29yZHMsCi0gICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNTkzLDIxICs2MjAsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrIHdpdGhvdXQgZm9yY2luZyB1cGRhdGUgb2YgbWV0YWRhdGEuIik7CiAKICNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmRhdGFzeW5jX19kb2NfX30sCisgICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZkYXRhc3luY19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmZGF0YXN5bmMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZkYXRhc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNjQ5LDI2ICs2NzgsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nob3duX19kb2NfX30sCisgICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNob3duIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIT1dOKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCwgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTY5MSwyMyArNzIyLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG93bl9fZG9jX199LAorICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaU8mTyY6ZmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaG93bl9pbXBsKG1vZHVsZSwgZmQsIHVpZCwgZ2lkKTsKIAogZXhpdDoKQEAgLTcyOCwyMyArNzYxLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hvd25fX2RvY19ffSwKKyAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfRkFTVENBTEwsIG9zX2xjaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGNob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG93biIsICJwYXRoIiwgMCwgMCk7CiAgICAgdWlkX3QgdWlkOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtODEyLDI2ICs4NDcsMjggQEAKICIgIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTElOS19NRVRIT0RERUYgICAgXAotICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlua19fZG9jX199LAorICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc19saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19saW5rX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJnA6bGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgibGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC04NjMsMjEgKzkwMCwyMyBAQAogImVudHJpZXMgXCcuXCcgYW5kIFwnLi5cJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKIAogI2RlZmluZSBPU19MSVNURElSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0ZGlyX19kb2NfX30sCisgICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3RkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3RkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3RkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3RkaXIiLCAicGF0aCIsIDEsIFBBVEhfSEFWRV9GRE9QRU5ESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0ZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05MDYsOCArOTQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfZ2V0ZnVsbHBhdGhuYW1lIiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkzOSw4ICs5NzksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmaW5hbHBhdGhuYW1lX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk2OSw4ICsxMDEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfaXNkaXIiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTkxLDIxICsxMDMzLDIzIEBACiAiQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlzbW91bnQgb24gV2luMzIuIik7CiAKICNkZWZpbmUgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCisgICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtMTAyOCwyMyArMTA3MiwyNSBAQAogIlRoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogI2RlZmluZSBPU19NS0RJUl9NRVRIT0RERUYgICAgXAotICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2Rpcl9fZG9jX199LAorICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfRkFTVENBTEwsIG9zX21rZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2Rpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta2RpciIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2RpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEwNzQsOCArMTEyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGluY3JlbWVudDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX25pY2VfaW1wbChtb2R1bGUsIGluY3JlbWVudCk7CiAKIGV4aXQ6CkBAIC0xMDkzLDIyICsxMTQwLDI0IEBACiAiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfRkFTVENBTEwsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwcmlvcml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdoaWNoOwogICAgIGludCB3aG87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHByaW9yaXR5X2ltcGwobW9kdWxlLCB3aGljaCwgd2hvKTsKIAogZXhpdDoKQEAgLTExMjYsMjMgKzExNzUsMjUgQEAKICJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgcHJpb3JpdHkpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKICAgICBpbnQgcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3aGljaCwgJndobywgJnByaW9yaXR5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8sIHByaW9yaXR5KTsKIAogZXhpdDoKQEAgLTExNjQsMjUgKzEyMTUsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVuYW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW5hbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyY6cmVuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjA3LDI1ICsxMjYwLDI3IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOwogCiAjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVwbGFjZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlcGxhY2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlcGxhY2VfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQpOwogCiBleGl0OgpAQCAtMTI0OSwyMiArMTMwNCwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9GQVNUQ0FMTCwgb3Nfcm1kaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JtZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JtZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJtZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ybWRpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjgzLDI1ICsxMzQwLDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21tYW5kKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ1OnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmNvbW1hbmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxOSwyNSArMTM3OSwyOCBAQAogIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKIAogI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKLSAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfRkFTVENBTEwsIG9zX3N5c3RlbV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3Nfc3lzdGVtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNvbW1hbmQgPSBOVUxMOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzNjcsOCArMTQzMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1hc2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnVtYXNrIiwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW1hc2tfaW1wbChtb2R1bGUsIG1hc2spOwogCiBleGl0OgpAQCAtMTM4NywyMiArMTQ1MSwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAotICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9GQVNUQ0FMTCwgb3NfdW5saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191bmxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnVubGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE0MjQsMjIgKzE0OTAsMjQgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVfTUVUSE9EREVGICAgIFwKLSAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmVfX2RvY19ffSwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVtb3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xNTA0LDI2ICsxNTcyLDI4IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19VVElNRV9NRVRIT0RERUYgICAgXAotICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc191dGltZV9fZG9jX199LAorICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfRkFTVENBTEwsIG9zX3V0aW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191dGltZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLCBQeU9iamVjdCAqbnMsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdXRpbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1dGltZSIsICJwYXRoIiwgMCwgUEFUSF9VVElNRV9IQVZFX0ZEKTsKICAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXRpbWVfaW1wbChtb2R1bGUsICZwYXRoLCB0aW1lcywgbnMsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTE1NDAsMjEgKzE2MTAsMjMgQEAKICJFeGl0IHRvIHRoZSBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgc3RhdHVzLCB3aXRob3V0IG5vcm1hbCBleGl0IHByb2Nlc3NpbmcuIik7CiAKICNkZWZpbmUgT1NfX0VYSVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2V4aXRfX2RvY19ffSwKKyAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX0ZBU1RDQUxMLCBvc19fZXhpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2V4aXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19leGl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6X2V4aXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOl9leGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZXhpdF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKIAogZXhpdDoKQEAgLTE1NzgsMjMgKzE2NTAsMjQgQEAKICAgICB7ImV4ZWN2IiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIG9zX2V4ZWN2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZXhlY3YoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImV4ZWN2IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTYxNywyMyArMTY5MCwyNSBAQAogIiAgICBEaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzLiIpOwogCiAjZGVmaW5lIE9TX0VYRUNWRV9NRVRIT0RERUYgICAgXAotICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2V4ZWN2ZV9fZG9jX199LAorICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfZXhlY3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk9POmV4ZWN2ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3ZlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkVYRUNWRSk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdmVfaW1wbChtb2R1bGUsICZwYXRoLCBhcmd2LCBlbnYpOwogCiBleGl0OgpAQCAtMTY0NSw3ICsxNzIwLDcgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9FWEVDVikgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudl9fZG9jX18sCiAic3Bhd252KCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIC8pXG4iCkBAIC0xNjY0LDMxICsxNzM5LDMyIEBACiAgICAgeyJzcGF3bnYiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zcGF3bnYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1vZGU7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNwYXdudiIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsICZwYXRoLCBhcmd2KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudmVfX2RvY19fLAogInNwYXdudmUoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52LCAvKVxuIgpAQCAtMTcwOSw3ICsxNzg1LDcgQEAKICAgICB7InNwYXdudmUiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252ZSwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKK29zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3MTcsMjMgKzE3OTMsMjQgQEAKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsCi0gICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgICAgICZtb2RlLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpICovCiAKICNpZiBkZWZpbmVkKEhBVkVfRk9SSzEpCiAKQEAgLTE3OTIsMjEgKzE4NjksMjMgQEAKICJHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4MjQsMjEgKzE5MDMsMjMgQEAKICJHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4NjksOCArMTk1MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMTg5NywxMiArMTk3OSwxNCBAQAogb3Nfc2NoZWRfcGFyYW0oUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLAotICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3BhcmFtX2ltcGwodHlwZSwgc2NoZWRfcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTkzOCw4ICsyMDIyLDkgQEAKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCi0gICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCwgcG9saWN5LCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMTk3MSw4ICsyMDU2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMDA3LDggKzIwOTMsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCi0gICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkLCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMjA0MCwxMSArMjEyNywxMyBAQAogICAgIHBpZF90IHBpZDsKICAgICBkb3VibGUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChtb2R1bGUsIHBpZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUZsb2F0X0Zyb21Eb3VibGUoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDk5LDggKzIxODgsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAotICAgICAgICAmcGlkLCAmbWFzaykpCisgICAgICAgICZwaWQsICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldGFmZmluaXR5X2ltcGwobW9kdWxlLCBwaWQsIG1hc2spOwogCiBleGl0OgpAQCAtMjExNSw3ICsyMjA1LDcgQEAKICJzY2hlZF9nZXRhZmZpbml0eSgkbW9kdWxlLCBwaWQsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuXG4iCiAiXG4iCiAiVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4iKTsKIApAQCAtMjEzMSw4ICsyMjIxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMjU5LDYgKzIzNTAsOCBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEdJRCkgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9HRVRQSUQpCisKIFB5RG9jX1NUUlZBUihvc19nZXRwaWRfX2RvY19fLAogImdldHBpZCgkbW9kdWxlLCAvKVxuIgogIi0tXG4iCkBAIC0yMjc3LDYgKzIzNzAsOCBAQAogICAgIHJldHVybiBvc19nZXRwaWRfaW1wbChtb2R1bGUpOwogfQogCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBJRCkgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRHUk9VUFMpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRncm91cHNfX2RvY19fLApAQCAtMjMwOCwyMSArMjQwMywyMyBAQAogIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHBnaWRfX2RvY19ffSwKKyAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cGdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0cGdpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cGdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTI0NjYsOCArMjU2Myw5IEBACiAgICAgUHlfc3NpemVfdCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAibjpraWxsIiwKLSAgICAgICAgJnBpZCwgJnNpZ25hbCkpCisgICAgICAgICZwaWQsICZzaWduYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbF9pbXBsKG1vZHVsZSwgcGlkLCBzaWduYWwpOwogCiBleGl0OgpAQCAtMjQ5OCw4ICsyNTk2LDkgQEAKICAgICBpbnQgc2lnbmFsOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6a2lsbHBnIiwKLSAgICAgICAgJnBnaWQsICZzaWduYWwpKQorICAgICAgICAmcGdpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxscGdfaW1wbChtb2R1bGUsIHBnaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNTI4LDggKzI2MjcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBvcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bsb2NrX2ltcGwobW9kdWxlLCBvcCk7CiAKIGV4aXQ6CkBAIC0yNTU4LDggKzI2NTgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IHVpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0dWlkX2ltcGwobW9kdWxlLCB1aWQpOwogCiBleGl0OgpAQCAtMjU4OCw4ICsyNjg5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1aWRfdCBldWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZXVpZF9pbXBsKG1vZHVsZSwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjE4LDggKzI3MjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGVnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRlZ2lkX2ltcGwobW9kdWxlLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI2NTAsOCArMjc1Myw5IEBACiAgICAgdWlkX3QgZXVpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmV1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQpOwogCiBleGl0OgpAQCAtMjY4Miw4ICsyNzg2LDkgQEAKICAgICBnaWRfdCBlZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJlZ2lkIiwKLSAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZWdpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCk7CiAKIGV4aXQ6CkBAIC0yNzEyLDggKzI4MTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0Z2lkX2ltcGwobW9kdWxlLCBnaWQpOwogCiBleGl0OgpAQCAtMjc0NywyMSArMjg1MywyMyBAQAogIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CiAKICNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGICAgIFwKLSAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDNfX2RvY19ffSwKKyAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX0ZBU1RDQUxMLCBvc193YWl0M19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdDNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0MyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6d2FpdDMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTp3YWl0MyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9wdGlvbnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0M19pbXBsKG1vZHVsZSwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yNzgyLDIyICsyODkwLDI0IEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0NF9fZG9jX199LAorICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQ0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdDQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQ0X2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjg0MCw4ICsyOTUwLDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0aWQiLAotICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkKKyAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0aWRfaW1wbChtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjg3Nyw4ICsyOTg4LDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yOTA0LDE4ICszMDE2LDE5IEBACiAgICAgeyJ3YWl0cGlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgb3Nfd2FpdHBpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOworb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdHBpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBwaWQ7CisgICAgaW50cHRyX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5NjgsMjUgKzMwODEsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeW1saW5rX19kb2NfX30sCisgICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfRkFTVENBTEwsIG9zX3N5bWxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N5bWxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCiAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N5bWxpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHRhcmdldF9pc19kaXJlY3RvcnksIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zMDQ2LDggKzMxNjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0c2lkIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHNpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTMxMDAsOCArMzIxNiw5IEBACiAgICAgcGlkX3QgcGdycDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICIiIF9QeV9QQVJTRV9QSUQgIjpzZXRwZ2lkIiwKLSAgICAgICAgJnBpZCwgJnBncnApKQorICAgICAgICAmcGlkLCAmcGdycCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQsIHBncnApOwogCiBleGl0OgpAQCAtMzEzMCw4ICszMjQ3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RjZ2V0cGdycF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzE2Miw4ICszMjgwLDkgQEAKICAgICBwaWRfdCBwZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwKLSAgICAgICAgJmZkLCAmcGdpZCkpCisgICAgICAgICZmZCwgJnBnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNzZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCwgcGdpZCk7CiAKIGV4aXQ6CkBAIC0zMTg0LDI4ICszMzAzLDMxIEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX0ZBU1RDQUxMLCBvc19vcGVuX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX29wZW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmbGFncywgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgib3BlbiIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBtb2RlID0gNTExOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19vcGVuX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIG1vZGUsIGRpcl9mZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMyMjIsMjEgKzMzNDQsMjMgQEAKICJDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19DTE9TRV9NRVRIT0RERUYgICAgXAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jbG9zZV9fZG9jX199LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfRkFTVENBTEwsIG9zX2Nsb3NlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMjYzLDggKzMzODcsOSBAQAogICAgIGludCBmZF9oaWdoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpjbG9zZXJhbmdlIiwKLSAgICAgICAgJmZkX2xvdywgJmZkX2hpZ2gpKQorICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZXJhbmdlX2ltcGwobW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gpOwogCiBleGl0OgpAQCAtMzI5MCwxMSArMzQxNSwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2R1cF9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzA4LDIzICszNDM1LDI1IEBACiAiRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19EVVAyX01FVEhPRERFRiAgICBcCi0gICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kdXAyX19kb2NfX30sCisgICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfRkFTVENBTEwsIG9zX2R1cDJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2R1cDJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBmZDIsIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZHVwMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWl8cDpkdXAyIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAgICAgaW50IGZkMjsKICAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWl8cDpkdXAyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2R1cDJfaW1wbChtb2R1bGUsIGZkLCBmZDIsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTMzNjEsOCArMzQ5MCw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKLSAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTMzOTYsMTEgKzM1MjYsMTMgQEAKICAgICBQeV9vZmZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZpOmxzZWVrIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2xzZWVrX2ltcGwobW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tUHlfb2ZmX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNDI3LDggKzM1NTksOSBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpbjpyZWFkIiwKLSAgICAgICAgJmZkLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzQ2NiwxMSArMzU5OSwxMyBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcmVhZHZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUwNSw4ICszNjQwLDkgQEAKICAgICBQeV9vZmZfdCBvZmZzZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3ByZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQpOwogCiBleGl0OgpAQCAtMzUzNiwxNyArMzY3MiwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwKLSAgICAgICAgJmZkLCAmZGF0YSkpCisgICAgICAgICZmZCwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmRhdGEpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzU2MSwyMSArMzcwMCwyMyBAQAogIkVxdWl2YWxlbnQgdG8gb3Muc3RhdChmZCkuIik7CiAKICNkZWZpbmUgT1NfRlNUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN0YXRfX2RvY19ffSwKKyAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX0ZBU1RDQUxMLCBvc19mc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZnN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzYwNCwxMSArMzc0NSwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2lzYXR0eV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNjY2LDggKzM4MDksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwaXBlMiIsICZmbGFncykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3BpcGUyX2ltcGwobW9kdWxlLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC0zNzAyLDExICszODQ2LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGV2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM3NDMsMTcgKzM4ODksMjAgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsCi0gICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3B3cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZidWZmZXIsIG9mZnNldCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3NzQsMjMgKzM5MjMsMjUgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS0ZJRk9fTUVUSE9EREVGICAgIFwKLSAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2ZpZm9fX2RvY19ffSwKKyAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfRkFTVENBTEwsIG9zX21rZmlmb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtmaWZvX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZmlmbyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA0Mzg7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZmlmb19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zODIzLDI1ICszOTc0LDI3IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTUtOT0RfTUVUSE9EREVGICAgIFwKLSAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtub2RfX2RvY19ffSwKKyAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX0ZBU1RDQUxMLCBvc19ta25vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtub2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBkZXZfdCBkZXZpY2UsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtub2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtub2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlID0gMzg0OwogICAgIGRldl90IGRldmljZSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ta25vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRldmljZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4NzQsMTEgKzQwMjcsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1ham9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFqb3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5MDgsMTEgKzQwNjMsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1pbm9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWlub3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NDQsMTEgKzQxMDEsMTMgQEAKICAgICBkZXZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTptYWtlZGV2IiwKLSAgICAgICAgJm1ham9yLCAmbWlub3IpKQorICAgICAgICAmbWFqb3IsICZtaW5vcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFrZWRldl9pbXBsKG1vZHVsZSwgbWFqb3IsIG1pbm9yKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfUHlMb25nX0Zyb21EZXYoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTc5LDggKzQxMzgsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnRydW5jYXRlX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwMDEsMjIgKzQxNjEsMjQgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc190cnVuY2F0ZV9fZG9jX199LAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfRkFTVENBTEwsIG9zX3RydW5jYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc190cnVuY2F0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlfb2ZmX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3RydW5jYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ0cnVuY2F0ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZUUlVOQ0FURSk7CiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190cnVuY2F0ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDU1LDggKzQyMTcsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFsbG9jYXRlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDA5OCw4ICs0MjYxLDkgQEAKICAgICBpbnQgYWR2aWNlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoLCAmYWR2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhZHZpc2VfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYWR2aWNlKTsKIAogZXhpdDoKQEAgLTQxMzAsOCArNDI5NCw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpwdXRlbnYiLAotICAgICAgICAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wdXRlbnZfaW1wbChtb2R1bGUsIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQxNjIsOCArNDMyNyw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpwdXRlbnYiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZ2YWx1ZSkpCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE5Nyw4ICs0MzYzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5zZXRlbnZfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDIyOCw4ICs0Mzk1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zdHJlcnJvcl9pbXBsKG1vZHVsZSwgY29kZSk7CiAKIGV4aXQ6CkBAIC00MjU3LDExICs0NDI1LDEzIEBACiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6V0NPUkVEVU1QIiwgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0NPUkVEVU1QX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MjgyLDI1ICs0NDUyLDI4IEBACiAiam9iIGNvbnRyb2wgc3RvcC4iKTsKIAogI2RlZmluZSBPU19XSUZDT05USU5VRURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZDT05USU5VRURfX2RvY19ffSwKKyAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZDT05USU5VRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZDT05USU5VRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkNPTlRJTlVFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDMxOCwyNSArNDQ5MSwyOCBAQAogIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHN0b3BwZWQuIik7CiAKICNkZWZpbmUgT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU1RPUFBFRF9fZG9jX199LAorICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNUT1BQRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZTVE9QUEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTVE9QUEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzU0LDI1ICs0NTMwLDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4iKTsKIAogI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAorICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNJR05BTEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZTSUdOQUxFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNJR05BTEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzkwLDI1ICs0NTY5LDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyBleGl0ZWQgdmlhIHRoZSBleGl0KCkgc3lzdGVtIGNhbGwuIik7CiAKICNkZWZpbmUgT1NfV0lGRVhJVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGRVhJVEVEX19kb2NfX30sCisgICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZFWElURURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGRVhJVEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGRVhJVEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZFWElURURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ0MjYsMjUgKzQ2MDgsMjggQEAKICJSZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUgZnJvbSBzdGF0dXMuIik7CiAKICNkZWZpbmUgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGICAgIFwKLSAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0VYSVRTVEFUVVNfX2RvY19ffSwKKyAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX0ZBU1RDQUxMLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XRVhJVFNUQVRVU19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0VYSVRTVEFUVVMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0VYSVRTVEFUVVMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XRVhJVFNUQVRVU19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ2MiwyNSArNDY0NywyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1RFUk1TSUdfX2RvY19ffSwKKyAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XVEVSTVNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XVEVSTVNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1RFUk1TSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1RFUk1TSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XVEVSTVNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ5OCwyNSArNDY4NiwyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1NUT1BTSUdfX2RvY19ffSwKKyAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XU1RPUFNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XU1RPUFNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1NUT1BTSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1NUT1BTSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XU1RPUFNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDU0Nyw4ICs0NzM4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdHZmc19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDU3MCwyMSArNDc2MiwyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRWRlNfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXR2ZnNfX2RvY19ffSwKKyAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdHZmc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdHZmc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdHZmcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0dmZzIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlNUQVRWRlMpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3RhdHZmcyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXR2ZnNfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTQ2MDUsMjEgKzQ3OTksMjMgQEAKICJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKIAogI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfRkFTVENBTEwsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXRkaXNrdXNhZ2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZGlza3VzYWdlX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTQ2NTMsMTEgKzQ4NDksMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLAotICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2ZwYXRoY29uZl9pbXBsKG1vZHVsZSwgZmQsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Njc5LDI2ICs0ODc3LDI5IEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfUEFUSENPTkZfTUVUSE9EREVGICAgIFwKLSAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcGF0aGNvbmZfX2RvY19ffSwKKyAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX0ZBU1RDQUxMLCBvc19wYXRoY29uZl9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3NfcGF0aGNvbmZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3BhdGhjb25mKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInBhdGhjb25mIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlBBVEhDT05GKTsKICAgICBpbnQgbmFtZTsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnBhdGhjb25mIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3BhdGhjb25mX2ltcGwobW9kdWxlLCAmcGF0aCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3MzAsOCArNDkzMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NvbmZzdHJfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDc2MSwxMSArNDk2MywxMyBAQAogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c2NvbmZfaW1wbChtb2R1bGUsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Nzk1LDYgKzQ5OTksNjEgQEAKICAgICByZXR1cm4gb3NfYWJvcnRfaW1wbChtb2R1bGUpOwogfQogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3RhcnRmaWxlX19kb2NfXywKKyJzdGFydGZpbGUoJG1vZHVsZSwgLywgZmlsZXBhdGgsIG9wZXJhdGlvbj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pXG4iCisiXG4iCisiU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG4iCisiXG4iCisiV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG4iCisiZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuIgorImFyZ3VtZW50IHRvIHRoZSBET1MgXCJzdGFydFwiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyXG4iCisiYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuIgorIldoZW4gYW5vdGhlciBcIm9wZXJhdGlvblwiIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgZG9uZSB3aXRoXG4iCisidGhlIGZpbGUuICBBIHR5cGljYWwgb3BlcmF0aW9uIGlzIFwicHJpbnRcIi5cbiIKKyJcbiIKKyJzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLlxuIgorIlRoZXJlIGlzIG5vIG9wdGlvbiB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY2xvc2UsIGFuZCBubyB3YXlcbiIKKyJ0byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb25cJ3MgZXhpdCBzdGF0dXMuXG4iCisiXG4iCisiVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuIgorImFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG4iCisidGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuXCd0IHdvcmsgaWYgaXQgaXMuIik7CisKKyNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydGZpbGUiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhcnRmaWxlLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGFydGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGFydGZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlcGF0aCIsICJvcGVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnx1OnN0YXJ0ZmlsZSIsIF9rZXl3b3JkcywgMH07CisgICAgcGF0aF90IGZpbGVwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXJ0ZmlsZSIsICJmaWxlcGF0aCIsIDAsIDApOworICAgIFB5X1VOSUNPREUgKm9wZXJhdGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZmaWxlcGF0aCwgJm9wZXJhdGlvbikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdGFydGZpbGVfaW1wbChtb2R1bGUsICZmaWxlcGF0aCwgb3BlcmF0aW9uKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmaWxlcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmZmlsZXBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKQogCiBQeURvY19TVFJWQVIob3NfZ2V0bG9hZGF2Z19fZG9jX18sCkBAIC00ODMxLDIxICs1MDkwLDIzIEBACiAiSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuIik7CiAKICNkZWZpbmUgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRiAgICBcCi0gICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCisgICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX0ZBU1RDQUxMLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2RldmljZV9lbmNvZGluZ19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTQ4NzUsOCArNTEzNiw5IEBACiAgICAgdWlkX3Qgc3VpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZzdWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc3VpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCwgc3VpZCk7CiAKIGV4aXQ6CkBAIC00OTA4LDggKzUxNzAsOSBAQAogICAgIGdpZF90IHNnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXNnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQpOwogCiBleGl0OgpAQCAtNDk3NiwyNCArNTIzOSwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX0dFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHhhdHRyX19kb2NfX30sCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOmdldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUwMjIsMjYgKzUyODcsMjggQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXR4YXR0cl9fZG9jX199LAorICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3NldHhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXR4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8meSp8aSRwOnNldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBQeV9idWZmZXIgdmFsdWUgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZsYWdzID0gMDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCAmdmFsdWUsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTA1MCw4ICs1MzE3LDkgQEAKICAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KICAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CiAgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KLSAgICBpZiAodmFsdWUub2JqKQorICAgIGlmICh2YWx1ZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YWx1ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUwNzIsMjQgKzUzNDAsMjYgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmV4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZleGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkcDpyZW1vdmV4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAicGF0aCIsIDAsIDEpOwogICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmV4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTE4LDIyICs1Mzg4LDI0IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfTElTVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlzdHhhdHRyX19kb2NfX30sCisgICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19saXN0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3R4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3R4YXR0ciIsICJwYXRoIiwgMSwgMSk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTE2Myw4ICs1NDM1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3VyYW5kb21faW1wbChtb2R1bGUsIHNpemUpOwogCiBleGl0OgpAQCAtNTE3NSw3ICs1NDQ4LDExIEBACiAiY3B1X2NvdW50KCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLiIpOworIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuXG4iCisiXG4iCisiVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuXG4iCisidXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aFxuIgorImBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgIik7CiAKICNkZWZpbmUgT1NfQ1BVX0NPVU5UX01FVEhPRERFRiAgICBcCiAgICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pb3NfY3B1X2NvdW50LCBNRVRIX05PQVJHUywgb3NfY3B1X2NvdW50X19kb2NfX30sCkBAIC01MjA4LDExICs1NDg1LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyMzksOCArNTUxOCw5IEBACiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLAotICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUyNTksMjAgKzU1MzksMjIgQEAKICAgICB7ImdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9PLCBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKLW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUpOworb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyOTMsMTkgKzU1NzUsMjAgQEAKICAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBpbmhlcml0YWJsZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJwOnNldF9oYW5kbGVfaW5oZXJpdGFibGUiLAotICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKQorICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBpbmhlcml0YWJsZSk7CiAKIGV4aXQ6CkBAIC01MzE0LDYgKzU1OTcsNzUgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAorUHlEb2NfU1RSVkFSKG9zX2ZzcGF0aF9fZG9jX18sCisiZnNwYXRoKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC5cbiIKKyJcbiIKKyJJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZVxuIgorIm9iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyXG4iCisidHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfRlNQQVRIX01FVEhPRERFRiAgICBcCisgICAgeyJmc3BhdGgiLCAoUHlDRnVuY3Rpb24pb3NfZnNwYXRoLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3BhdGhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmZzcGF0aCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnNwYXRoX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmFuZG9tX19kb2NfXywKKyJnZXRyYW5kb20oJG1vZHVsZSwgLywgc2l6ZSwgZmxhZ3M9MClcbiIKKyItLVxuIgorIlxuIgorIk9idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyYW5kb20iLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmFuZG9tLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRyYW5kb21fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNpemUiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJufGk6Z2V0cmFuZG9tIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2l6ZSwgJmZsYWdzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpICovCisKICNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCkBAIC01NDk0LDYgKzU4NDYsMTAgQEAKICAgICAjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHSURfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX0dFVFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRQSURfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHUk9VUFNfTUVUSE9EREVGKSAqLwpAQCAtNTc0Miw2ICs2MDk4LDEwIEBACiAgICAgI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU0NPTkZfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TVEFSVEZJTEVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19HRVRMT0FEQVZHX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVExPQURBVkdfTUVUSE9EREVGKSAqLwpAQCAtNTc4NSw0ICs2MTQ1LDggQEAKICNpZm5kZWYgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzY5MGI3MjU0OWQyNTI0ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisKKyNpZm5kZWYgT1NfR0VUUkFORE9NX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJBTkRPTV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTBjZmI3ZWJjNDRlZmI2NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaAppbmRleCBjYjE5MWEwLi5mOWUwNjQ0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB3ZF9nZXRwd25hbV9pbXBsKG1vZHVsZSwgYXJnKTsKIAogZXhpdDoKQEAgLTY4LDQgKzY5LDQgQEAKICNpZm5kZWYgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBXRF9HRVRQV0FMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBlYTFjNWM4MzJmMGMxYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmM0MWQ4ZDg4ZWMyMDZkOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaCBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCmluZGV4IGM1YjVjNzEuLjc1YTA5NmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCkBAIC0yNSw4ICsyNSw5IEBACiAgICAgaW50IGlzZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLAotICAgICAgICAmZGF0YSwgJmlzZmluYWwpKQorICAgICAgICAmZGF0YSwgJmlzZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbChzZWxmLCBkYXRhLCBpc2ZpbmFsKTsKIAogZXhpdDoKQEAgLTYwLDggKzYxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpiYXNlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX2ltcGwoc2VsZiwgYmFzZSk7CiAKIGV4aXQ6CkBAIC0xMjksOCArMTMxLDkgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCi0gICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKQorICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX2ltcGwoc2VsZiwgY29udGV4dCwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYwLDggKzE2Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6U2V0UGFyYW1FbnRpdHlQYXJzaW5nIiwgJmZsYWcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbChzZWxmLCBmbGFnKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTcsOSBAQAogICAgIGludCBmbGFnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsCi0gICAgICAgICZmbGFnKSkKKyAgICAgICAgJmZsYWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMjI4LDI0ICsyMzMsMjYgQEAKICJSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuIik7CiAKICNkZWZpbmUgUFlFWFBBVF9QQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCisgICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfRkFTVENBTEwsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXB5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZuYW1lc3BhY2Vfc2VwYXJhdG9yLCAmaW50ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwobW9kdWxlLCBlbmNvZGluZywgbmFtZXNwYWNlX3NlcGFyYXRvciwgaW50ZXJuKTsKIAogZXhpdDoKQEAgLTI3MCw4ICsyNzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGxvbmcgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X0Vycm9yU3RyaW5nX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTI4MSw0ICsyODksNCBAQAogI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDc5Y2ZhYjYwN2U5ZGM4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lODg5ZjdjNmFmNmNjNDJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKaW5kZXggNWI4ZGI4MC4uYjA4ZTkyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKQEAgLTcyLDI0ICs3MiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTFfU0hBMV9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTFfc2hhMV9fZG9jX199LAorICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX0ZBU1RDQUxMLCBfc2hhMV9zaGExX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMV9zaGExX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTFfc2hhMShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGExIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMV9zaGExX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2YTE5NGZiYjBiOTRmMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQzMDQ1MGYzZjgwNjg5NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaAppbmRleCA2NjE1NjljLi4xMTVkYjUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKQEAgLTcyLDIxICs3MiwyMyBAQAogIlJldHVybiBhIG5ldyBTSEEtMjU2IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyNTZfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCisgICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTI1Nl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyNTYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjU2IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTI1NiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyNTZfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC0xMDAsMjQgKzEwMiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCisgICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyMjQsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTIyNF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyMjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjI0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTIyNCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyMjRfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YTFmYzU0ODBlMzk5Zjk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTQzOWQ3MGRiN2VhZDVjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCmluZGV4IGQ2NGMyYTQuLmEyYjU3ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApAQCAtMiw4ICsyLDYgQEAKIHByZXNlcnZlCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfY29weV9fZG9jX18sCiAiY29weSgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtMjIsMTAgKzIwLDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9jb3B5X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9kaWdlc3RfX2RvY19fLAogImRpZ2VzdCgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtNDQsMTAgKzM4LDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX18sCiAiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC02NiwxMCArNTYsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfXywKICJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKICItLVxuIgpAQCAtNzksMTAgKzY1LDYgQEAKICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKICAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX199LAogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhNTEyX19kb2NfXywKICJzaGE1MTIoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgogIi0tXG4iCkBAIC05MCwzMSArNzIsMjkgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAorICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGE1MTJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhNTEyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTUxMiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhNTEyX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGEzODRfX2RvY19fLAogInNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTEyMiw1MCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0zODQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKKyAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGE1MTJfc2hhMzg0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhNTEyX3NoYTM4NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEzODQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMzg0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTM4NF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmI4N2Y0OTRkZjUwZmZjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MThmMTU1OThjMzQ4NzA0NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaAppbmRleCBjOGY0Y2Q1Li5mOGQ1YmQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKQEAgLTIzLDExICsyMywxMyBAQAogICAgIGludCBzZWNvbmRzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2FsYXJtX2ltcGwobW9kdWxlLCBzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODUsOCArODcsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpzaWduYWwiLAotICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpCisgICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlcik7CiAKIGV4aXQ6CkBAIC0xMTcsOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgc2lnbmFsbnVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRzaWduYWwiLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRzaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC0xNTAsOCArMTU0LDkgQEAKICAgICBpbnQgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwKLSAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKQorICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnaW50ZXJydXB0X2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGZsYWcpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5NCw5IEBACiAgICAgZG91YmxlIGludGVydmFsID0gMC4wOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsCi0gICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpCisgICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCwgc2Vjb25kcywgaW50ZXJ2YWwpOwogCiBleGl0OgpAQCAtMjE5LDggKzIyNSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdoaWNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCk7CiAKIGV4aXQ6CkBAIC0yNTEsOCArMjU4LDkgQEAKICAgICBQeU9iamVjdCAqbWFzazsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwKLSAgICAgICAgJmhvdywgJm1hc2spKQorICAgICAgICAmaG93LCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwobW9kdWxlLCBob3csIG1hc2spOwogCiBleGl0OgpAQCAtMzQ0LDggKzM1Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzaWd0aW1lZHdhaXQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKQorICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0X29iaik7CiAKIGV4aXQ6CkBAIC0zNzYsOCArMzg1LDkgQEAKICAgICBpbnQgc2lnbmFsbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLAotICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkKKyAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9raWxsX2ltcGwobW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC00MjksNCArNDM5LDQgQEAKICNpZm5kZWYgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmYTU5ODQxMmJmYjhkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY5OTBlZjBkMGJhNzJiNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCmluZGV4IGUyNmFjZjEuLmIyNDc5ZmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCkBAIC0yNCw4ICsyNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFyZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHNwbmFtIiwgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzcHdkX2dldHNwbmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjUsNCArNjYsNCBAQAogI2lmbmRlZiBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTUFdEX0dFVFNQQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTBmNjgxYjM2ZjU0YzMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wN2NkOGFmMGFmZDc3ZmU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaCBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAppbmRleCBkNTIwYzFlLi5kNDgxY2NiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCkBAIC0yNyw4ICsyNyw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGVjaW1hbCIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTksOCArNjAsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRpZ2l0IiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTIsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm51bWVyaWMiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExOCw4ICsxMjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeV9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNDYsOCArMTUwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmJpZGlyZWN0aW9uYWwiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMTc1LDExICsxODAsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjb21iaW5pbmciLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjA4LDExICsyMTUsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjM3LDggKzI0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzplYXN0X2FzaWFuX3dpZHRoIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI2NSw4ICsyNzUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0yOTYsOCArMzA3LDkgQEAKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPITpub3JtYWxpemUiLAotICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQorICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKHNlbGYsIGZvcm0sIGlucHV0KTsKIAogZXhpdDoKQEAgLTMyNyw4ICszMzksOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm5hbWUiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1OCwxMSArMzcxLDEyIEBACiAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBQeV9zc2l6ZV9jbGVhbl90IG5hbWVfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKHNlbGYsIG5hbWUsIG5hbWVfbGVuZ3RoKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmOGRhMzNjNmJjNmVmYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzMTNjZTEyOWRhODdiMmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAppbmRleCBiMWFmN2NlLi5mZGEzOTJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaApAQCAtMyw0NCArMyw0OCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIoemxpYl9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoJG1vZHVsZSwgYnl0ZXMsIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgLylcbiIKKyJjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04pXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLlxuIgogIlxuIgotIiAgYnl0ZXNcbiIKKyIgIGRhdGFcbiIKICIgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC5cbiIKICIgIGxldmVsXG4iCi0iICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkuIik7CisiICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKTsKK3psaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBsZXZlbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9jb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBieXRlcyA9IHtOVUxMLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibGV2ZWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpOmNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6Y29tcHJlc3MiLAotICAgICAgICAmYnl0ZXMsICZsZXZlbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbGV2ZWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmYnl0ZXMsIGxldmVsKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIGxldmVsKTsKIAogZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBieXRlcyAqLwotICAgIGlmIChieXRlcy5vYmopCi0gICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnl0ZXMpOworICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUsIC8pXG4iCisiZGVjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFKVxuIgogIi0tXG4iCiAiXG4iCiAiUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS5cbiIKQEAgLTUzLDI5ICs1NywzMyBAQAogIiAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3psaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJ3Yml0cyIsICJidWZzaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aU8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBERUZfQlVGX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGlPJjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfZGVjb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIHdiaXRzLCBidWZzaXplKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMTEsMTcgKzExOSwxOCBAQAogIiAgICBjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgdG8gb2NjdXIgaW4gdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU09CSl9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKICAgICBpbnQgbWV0aG9kID0gREVGTEFURUQ7CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwpAQCAtMTI5LDE1ICsxMzgsMTcgQEAKICAgICBpbnQgc3RyYXRlZ3kgPSBaX0RFRkFVTFRfU1RSQVRFR1k7CiAgICAgUHlfYnVmZmVyIHpkaWN0ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc29ial9pbXBsKG1vZHVsZSwgbGV2ZWwsIG1ldGhvZCwgd2JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwgJnpkaWN0KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciB6ZGljdCAqLwotICAgIGlmICh6ZGljdC5vYmopCisgICAgaWYgKHpkaWN0Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnpkaWN0KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTU1LDIyICsxNjYsMjQgQEAKICIgICAgZGljdGlvbmFyeSBhcyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIHRoYXQgcHJvZHVjZWQgdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdiaXRzLCBQeU9iamVjdCAqemRpY3QpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeU9iamVjdCAqemRpY3QgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3Yml0cywgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndiaXRzLCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzb2JqX2ltcGwobW9kdWxlLCB3Yml0cywgemRpY3QpOwogCiBleGl0OgpAQCAtMjAyLDIwICsyMTUsMjIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIG1heF9sZW5ndGg9MCwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCAvLCBtYXhfbGVuZ3RoPTApXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuXG4iCkBAIC0yMzIsMjggKzI0NywzMiBAQAogIkNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGNsZWFyIHRoZXNlIGJ1ZmZlcnMuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoremxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfE8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfE8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsIHNzaXplX3RfY29udmVydGVyLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODMsOCArMzAyLDkgQEAKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCi0gICAgICAgICZtb2RlKSkKKyAgICAgICAgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIG1vZGUpOwogCiBleGl0OgpAQCAtMzU3LDggKzM3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGggPSBERUZfQlVGX1NJWkU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpmbHVzaCIsCi0gICAgICAgIHNzaXplX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTM5MCwxNCArNDExLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STphZGxlcjMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9hZGxlcjMyX2ltcGwobW9kdWxlLCAmZGF0YSwgdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyNywxNCArNDUwLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCi0gICAgICAgICZkYXRhLCAmdmFsdWUpKQorICAgICAgICAmZGF0YSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDQyLDQgKzQ2Nyw0IEBACiAjaWZuZGVmIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICAgICAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3MTFlZjAyZDFkNTc3NmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhNGUyYmZlNzUwNDIzYTMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCmluZGV4IGNiYTQyYTcuLjgzMTk3NjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKQEAgLTgxLDYgKzgxLDU0IEBACiAjZW5kaWYKICNkZWZpbmUgQ01fU0NBTEVfRE9XTiAoLShDTV9TQ0FMRV9VUCsxKS8yKQogCisvKiBDb25zdGFudHMgY21hdGguaW5mLCBjbWF0aC5pbmZqLCBjbWF0aC5uYW4sIGNtYXRoLm5hbmouCisgICBjbWF0aC5uYW4gYW5kIGNtYXRoLm5hbmogYXJlIGRlZmluZWQgb25seSB3aGVuIGVpdGhlcgorICAgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUiBpcyAqbm90KiBkZWZpbmVkICh3aGljaCBzaG91bGQgYmUKKyAgIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gb24gbWFjaGluZXMgdXNpbmcgYW4gSUVFRSA3NTQKKyAgIHJlcHJlc2VudGF0aW9uKSwgb3IgUHlfTkFOIGlzIGRlZmluZWQuICovCisKK3N0YXRpYyBkb3VibGUKK21faW5mKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfSFVHRV9WQUw7CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfaW5maih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9pbmYoKTsKKyAgICByZXR1cm4gcjsKK30KKworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorCitzdGF0aWMgZG91YmxlCittX25hbih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9OQU47CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfbmFuaih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9uYW4oKTsKKyAgICByZXR1cm4gcjsKK30KKworI2VuZGlmCisKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hc2luaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwogc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXRhbmhfaW1wbChQeU9iamVjdCAqLCBQeV9jb21wbGV4KTsKQEAgLTEyMzksNiArMTI4NywxMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLAogICAgICAgICAgICAgICAgICAgICAgICBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRhdSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1RBVSkpOyAvKiAycGkgKi8KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmZqIiwgUHlDb21wbGV4X0Zyb21DQ29tcGxleChjX2luZmooKSkpOworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1fbmFuKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfbmFuaigpKSk7CisjZW5kaWYKIAogICAgIC8qIGluaXRpYWxpemUgc3BlY2lhbCB2YWx1ZSB0YWJsZXMgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKaW5kZXggZjFmZGE0OC4uMWMxZTRmYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYworKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0xMTksNyArMTE5LDcgQEAKICAgICAgICBoYW5kbGVyIGZhaWxzIGluIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpICovCiAgICAge1NJR1NFR1YsIDAsICJTZWdtZW50YXRpb24gZmF1bHQiLCB9CiB9Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZmF1bHRoYW5kbGVyX25zaWduYWxzID0gXAorc3RhdGljIGNvbnN0IHNpemVfdCBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCiAgICAgUHlfQVJSQVlfTEVOR1RIKGZhdWx0aGFuZGxlcl9oYW5kbGVycyk7CiAKICNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KGZpbGUpOwogICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICByZXR1cm4gZmQ7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgZWxzZSB7CkBAIC0yMDIsOCArMjAyLDkgQEAKIHN0YXRpYyBQeVRocmVhZFN0YXRlKgogZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSBidXQgdmVyeSB1bmxpa2VseS4uLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM0LDExICsyMzUsMTIgQEAKICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLwogICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CiAjZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAjZW5kaWYKIAotICAgIGlmIChhbGxfdGhyZWFkcykKLSAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBpbnRlcnAsIHRzdGF0ZSk7CisgICAgaWYgKGFsbF90aHJlYWRzKSB7CisgICAgICAgICh2b2lkKV9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKICAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOwpAQCAtMjcyLDcgKzI3NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGFsbF90aHJlYWRzKSB7Ci0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKICAgICAgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBlcnJtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODgsNiArMjkwLDE5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcikKK3sKKyAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorfQorCiAKIC8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KIApAQCAtMzA2LDcgKzMyMSw3IEBACiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoaW50IHNpZ251bSkKIHsKICAgICBjb25zdCBpbnQgZmQgPSBmYXRhbF9lcnJvci5mZDsKLSAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSBOVUxMOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKQEAgLTMyNCwxMiArMzM5LDcgQEAKICAgICB9CiAKICAgICAvKiByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyICovCi0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAodm9pZClzaWdhY3Rpb24oc2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOwotI2Vsc2UKLSAgICAodm9pZClzaWduYWwoc2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOwogCiAgICAgUFVUUyhmZCwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CiAgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CkBAIC0zNTEsMjAgKzM2MSwxMTcgQEAKICAgICByYWlzZShzaWdudW0pOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIExPTkcgV0lOQVBJCitmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIoc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMgKmV4Y19pbmZvKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIERXT1JEIGNvZGUgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25Db2RlOworICAgIERXT1JEIGZsYWdzID0gZXhjX2luZm8tPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uRmxhZ3M7CisKKyAgICAvKiBvbmx5IGxvZyBmYXRhbCBleGNlcHRpb25zICovCisgICAgaWYgKGZsYWdzICYgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFKSB7CisgICAgICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgICAgfQorCisgICAgUFVUUyhmZCwgIldpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAiKTsKKyAgICBzd2l0Y2ggKGNvZGUpCisgICAgeworICAgIC8qIG9ubHkgZm9ybWF0IG1vc3QgY29tbW9uIGVycm9ycyAqLworICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT046IFBVVFMoZmQsICJhY2Nlc3MgdmlvbGF0aW9uIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImZsb2F0IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9PVkVSRkxPVzogUFVUUyhmZCwgImZsb2F0IG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImludCBkaXZpZGUgYnkgemVybyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9JTlRfT1ZFUkZMT1c6IFBVVFMoZmQsICJpbnRlZ2VyIG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOX1BBR0VfRVJST1I6IFBVVFMoZmQsICJwYWdlIGVycm9yIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XOiBQVVRTKGZkLCAic3RhY2sgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUFVUUyhmZCwgImNvZGUgIik7CisgICAgICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgY29kZSk7CisgICAgfQorICAgIFBVVFMoZmQsICJcblxuIik7CisKKyAgICBpZiAoY29kZSA9PSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikgeworICAgICAgICAvKiBkaXNhYmxlIHNpZ25hbCBoYW5kbGVyIGZvciBTSUdTRUdWICovCisgICAgICAgIHNpemVfdCBpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKGhhbmRsZXItPnNpZ251bSA9PSBTSUdTRUdWKSB7CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhmZCwgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsX2Vycm9yLmludGVycCk7CisKKyAgICAvKiBjYWxsIHRoZSBuZXh0IGV4Y2VwdGlvbiBoYW5kbGVyICovCisgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Cit9CisjZW5kaWYKKwogLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCiAKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9lbmFibGUodm9pZCkKK3sKKyAgICBzaXplX3QgaTsKKworICAgIGlmIChmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgICAgIGludCBlcnI7CisKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGFzc2VydCghaGFuZGxlci0+ZW5hYmxlZCk7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7CisgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgorICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisjaWZkZWYgSEFWRV9TSUdBTFRTVEFDSworICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgc2lnYWx0c3RhY2soKSAqLworICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlcnIgPSBzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmYWN0aW9uLCAmaGFuZGxlci0+cHJldmlvdXMpOworI2Vsc2UKKyAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcik7CisgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAxOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBBZGRWZWN0b3JlZEV4Y2VwdGlvbkhhbmRsZXIoMSwgZmF1bHRoYW5kbGVyX2V4Y19oYW5kbGVyKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QqCi1mYXVsdGhhbmRsZXJfZW5hYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2ZhdWx0aGFuZGxlcl9weV9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKICAgICBpbnQgYWxsX3RocmVhZHMgPSAxOwotICAgIHVuc2lnbmVkIGludCBpOwotICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotI2VuZGlmCi0gICAgaW50IGVycjsKICAgICBpbnQgZmQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogCkBAIC0zODYsMzcgKzQ5MywxMCBAQAogICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CiAgICAgZmF0YWxfZXJyb3IuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CiAKLSAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKLSAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDE7Ci0KLSAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewotICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yOwotICAgICAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgotICAgICAgICAgICAgICAgaXRzIG93biBzaWduYWwgaGFuZGxlciAqLwotICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKLSNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCi0gICAgICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qIENhbGwgdGhlIHNpZ25hbCBoYW5kbGVyIG9uIGFuIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sKLSAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCi0gICAgICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZWxzZQotICAgICAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKLSAgICAgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7Ci0gICAgICAgIH0KKyAgICBpZiAoZmF1bHRoYW5kbGVyX2VuYWJsZSgpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDMwLDE0ICs1MTAsNyBAQAogICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMDsKICAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewogICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOwotI2VuZGlmCi0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ2OSw3ICs1NDIsNiBAQAogewogICAgIFB5TG9ja1N0YXR1cyBzdDsKICAgICBjb25zdCBjaGFyKiBlcnJtc2c7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKICAgICBpbnQgb2s7CiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQogICAgIHNpZ3NldF90IHNldDsKQEAgLTQ4OSwxMiArNTYxLDkgQEAKICAgICAgICAgLyogVGltZW91dCA9PiBkdW1wIHRyYWNlYmFjayAqLwogICAgICAgICBhc3NlcnQoc3QgPT0gUFlfTE9DS19GQUlMVVJFKTsKIAotICAgICAgICAvKiBnZXQgdGhlIHRocmVhZCBob2xkaW5nIHRoZSBHSUwsIE5VTEwgaWYgbm8gdGhyZWFkIGhvbGQgdGhlIEdJTCAqLwotICAgICAgICBjdXJyZW50ID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7Ci0KICAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKIAotICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgTlVMTCk7CiAgICAgICAgIG9rID0gKGVycm1zZyA9PSBOVUxMKTsKIAogICAgICAgICBpZiAodGhyZWFkLmV4aXQpCkBAIC04OTQsNyArOTYzLDcgQEAKIGZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcmVsZWFzZV9naWwgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X3JlYWRfbnVsbCIsICZyZWxlYXNlX2dpbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfc2lnc2VndiIsICZyZWxlYXNlX2dpbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHJlbGVhc2VfZ2lsKSB7CkBAIC05MDcsNiArOTc2LDQ5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQodm9pZCAqcGxvY2spCit7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrICpsb2NrID0gKFB5VGhyZWFkX3R5cGVfbG9jayAqKXBsb2NrOworCisgICAgUHlfRmF0YWxFcnJvcigiaW4gbmV3IHRocmVhZCIpOworCisgICAgLyogbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgZG9uZSAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyB0aHJlYWQ7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisKKyAgICBsb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChsb2NrID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2ssIFdBSVRfTE9DSyk7CisKKyAgICB0aHJlYWQgPSBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQsIGxvY2spOworICAgIGlmICh0aHJlYWQgPT0gLTEpIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAidW5hYmxlIHRvIHN0YXJ0IHRoZSB0aHJlYWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogd2FpdCB1bnRpbCB0aGUgdGhyZWFkIGNvbXBsZXRlczogaXQgd2lsbCBuZXZlciBvY2N1ciwgc2luY2UgUHlfRmF0YWxFcnJvcigpCisgICAgICAgZXhpdHMgdGhlIHByb2Nlc3MgaW1tZWRpYWx0eS4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobG9jayk7CisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9zaWdmcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtOTUxLDYgKzEwNjMsOCBAQAogfQogCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorI2RlZmluZSBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKKwogI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKICAgIC8qIElzc3VlICMyMzY1NDogVHVybiBvZmYgSUNDJ3MgdGFpbCBjYWxsIG9wdGltaXphdGlvbiBmb3IgdGhlCiAgICAgKiBzdGFja19vdmVyZmxvdyBnZW5lcmF0b3IuIElDQyB0dXJucyB0aGUgcmVjdXJzaXZlIHRhaWwgY2FsbCBpbnRvCkBAIC05NTgsMTIgKzEwNzIsMTIgQEAKICMgIHByYWdtYSBpbnRlbCBvcHRpbWl6YXRpb25fbGV2ZWwgMAogI2VuZGlmCiBzdGF0aWMKLVB5X3VpbnRwdHJfdAotc3RhY2tfb3ZlcmZsb3coUHlfdWludHB0cl90IG1pbl9zcCwgUHlfdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3VpbnRwdHJfdAorc3RhY2tfb3ZlcmZsb3codWludHB0cl90IG1pbl9zcCwgdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKIHsKICAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZidWZmZXI7CisgICAgdWludHB0cl90IHNwID0gKHVpbnRwdHJfdCkmYnVmZmVyOwogICAgICpkZXB0aCArPSAxOwogICAgIGlmIChzcCA8IG1pbl9zcCB8fCBtYXhfc3AgPCBzcCkKICAgICAgICAgcmV0dXJuIHNwOwpAQCAtOTc2LDggKzEwOTAsOCBAQAogZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZkZXB0aDsKLSAgICBQeV91aW50cHRyX3Qgc3RvcDsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZkZXB0aDsKKyAgICB1aW50cHRyX3Qgc3RvcDsKIAogICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICBkZXB0aCA9IDA7CkBAIC05OTQsNyArMTEwOCw3IEBACiAgICAgICAgIHNpemUsIGRlcHRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZgorI2VuZGlmICAgLyogZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKSAqLwogCiAKIHN0YXRpYyBpbnQKQEAgLTEwMTcsMTIgKzExMzEsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY29kZSwgZmxhZ3MgPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSXxJOl9yYWlzZV9leGNlcHRpb24iLCAmY29kZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOworICAgIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzLCAwLCBOVUxMKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJmYXVsdGhhbmRsZXIgbW9kdWxlLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7ImVuYWJsZSIsCi0gICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZW5hYmxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9weV9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCiAgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAogICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCkBAIC0xMDY1LDE2ICsxMTkyLDI1IEBACiAgICAgICAgICAgICAgICAiYSBTSUdTRUdWIG9yIFNJR0JVUyBzaWduYWwgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSIpfSwKICAgICB7Il9zaWdzZWd2IiwgZmF1bHRoYW5kbGVyX3NpZ3NlZ3YsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnc2VndihyZWxlYXNlX2dpbD1GYWxzZSk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICB7Il9mYXRhbF9lcnJvcl9jX3RocmVhZCIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZmF0YWxfZXJyb3JfY190aHJlYWQoKTogIgorICAgICAgICAgICAgICAgImNhbGwgUHlfRmF0YWxFcnJvcigpIGluIGEgbmV3IEMgdGhyZWFkLiIpfSwKKyNlbmRpZgogICAgIHsiX3NpZ2FicnQiLCBmYXVsdGhhbmRsZXJfc2lnYWJydCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKICAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCiAgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKLSNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjaWZkZWYgRkFVTFRIQU5ETEVSX1NUQUNLX09WRVJGTE9XCiAgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKICNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7Il9yYWlzZV9leGNlcHRpb24iLCBmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigicmFpc2VfZXhjZXB0aW9uKGNvZGUsIGZsYWdzPTApOiBDYWxsIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzKS4iKX0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDkzLDcgKzEyMjksMzMgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfZmF1bHRoYW5kbGVyKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogQWRkIGNvbnN0YW50cyBmb3IgdW5pdCB0ZXN0cyAqLworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGNvZGVzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmFpc2VFeGNlcHRpb24oKSBmbGFncyAocHJlZml4ZWQgYnkgYW4gdW5kZXJzY29yZSkgKi8KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gbTsKIH0KIAogLyogQ2FsbCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgaWYgdGhlIFBZVEhPTkZBVUxUSEFORExFUiBlbnZpcm9ubWVudCB2YXJpYWJsZQpAQCAtMTEyOCw3ICsxMjkwLDcgQEAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2djbW9kdWxlLmMgYi9Nb2R1bGVzL2djbW9kdWxlLmMKaW5kZXggY2I3MjIyZC4uNzU0MzQ4ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nY21vZHVsZS5jCisrKyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIgICAgICAgIC8qIGZvciBQeUZyYW1lX0NsZWFyRnJlZUxpc3QgKi8KKyNpbmNsdWRlICJweWR0cmFjZS5oIgogI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCkBAIC03MzgsNyArNzM5LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLWRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQorZGVidWdfY3ljbGUoY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJnYzogJXMgPCVzICVwPlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOwpAQCAtODkyLDYgKzg5Myw3IEBACiAgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKCk7CiB9CiAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCkBAIC05MjQsNiArOTI2LDkgQEAKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCisgICAgaWYgKFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQoKSkKKyAgICAgICAgUHlEVHJhY2VfR0NfU1RBUlQoZ2VuZXJhdGlvbik7CisKICAgICAvKiB1cGRhdGUgY29sbGVjdGlvbiBhbmQgYWxsb2NhdGlvbiBjb3VudGVycyAqLwogICAgIGlmIChnZW5lcmF0aW9uKzEgPCBOVU1fR0VORVJBVElPTlMpCiAgICAgICAgIGdlbmVyYXRpb25zW2dlbmVyYXRpb24rMV0uY291bnQgKz0gMTsKQEAgLTEwNjgsNiArMTA3MywxMCBAQAogICAgIHN0YXRzLT5jb2xsZWN0aW9ucysrOwogICAgIHN0YXRzLT5jb2xsZWN0ZWQgKz0gbTsKICAgICBzdGF0cy0+dW5jb2xsZWN0YWJsZSArPSBuOworCisgICAgaWYgKFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19ET05FKG4rbSk7CisKICAgICByZXR1cm4gbittOwogfQogCkBAIC0xNTg4LDYgKzE1OTcsMTUgQEAKIH0KIAogUHlfc3NpemVfdAorX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKQoreworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gUHlHQ19Db2xsZWN0KCk7Cit9CisKK1B5X3NzaXplX3QKIF9QeUdDX0NvbGxlY3ROb0ZhaWwodm9pZCkKIHsKICAgICBQeV9zc2l6ZV90IG47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMgYi9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKaW5kZXggZDgxNjdlYS4uYjZmYjUzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRhZGRyaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKiwgaW50KTsKIHN0YXRpYyBpbnQgc3RyX2lzbnVtYmVyKGNvbnN0IGNoYXIgKik7CiAKLXN0YXRpYyBjaGFyICphaV9lcnJsaXN0W10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFpX2Vycmxpc3RbXSA9IHsKICAgICAic3VjY2Vzcy4iLAogICAgICJhZGRyZXNzIGZhbWlseSBmb3IgaG9zdG5hbWUgbm90IHN1cHBvcnRlZC4iLCAgICAgICAvKiBFQUlfQUREUkZBTUlMWSAqLwogICAgICJ0ZW1wb3JhcnkgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uIiwgICAgICAgICAgICAvKiBFQUlfQUdBSU4gICAgICAqLwpAQCAtMTk4LDcgKzE5OCw3IEBACiAKICNkZWZpbmUgRVJSKGVycikgeyBlcnJvciA9IChlcnIpOyBnb3RvIGJhZDsgfQogCi1jaGFyICoKK2NvbnN0IGNoYXIgKgogZ2FpX3N0cmVycm9yKGludCBlY29kZSkKIHsKICAgICBpZiAoZWNvZGUgPCAwIHx8IGVjb2RlID4gRUFJX01BWCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggYzQzOGI4ZS4uMGY5MTY0MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTQ2MCw4ICs0NjAsOCBAQAogewogICAgIGV4dGVybiB3Y2hhcl90ICpQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKIAotICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307Ci0gICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CisgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKICAgICBjaGFyICpfcnRweXBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsgLyogWFhYIHVzZSB3aWRlIHZlcnNpb24gb24gV2luZG93cyAqLwogICAgIHdjaGFyX3QgKnJ0cHlwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICpob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggM2ExMzRhMC4uOTQzN2FlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC0xMDAsMTQgKzEwMCwyNSBAQAogICAgIGdpZF90IGdpZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CiAKLSAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKLSAgICBpZiAoIXB5X2ludF9pZCkKKyAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKGlkLCAmZ2lkKSkgeworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihweV9pbnRfaWQsICZnaWQpKSB7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXAgaWQgbXVzdCBiZSBpbnQsIG5vdCAlLjIwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLT5vYl90eXBlLT50cF9uYW1lKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOworICAgICAgICBpZiAoIXB5X2ludF9pZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKIAogICAgIGlmICgocCA9IGdldGdyZ2lkKGdpZCkpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmdpZF9vYmogPSBfUHlMb25nX0Zyb21HaWQoZ2lkKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaGxpYi5oIGIvTW9kdWxlcy9oYXNobGliLmgKaW5kZXggMzU4MDQ1My4uNTMwYjZiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9oYXNobGliLmgKKysrIGIvTW9kdWxlcy9oYXNobGliLmgKQEAgLTIsMzAgKzIsMzMgQEAKIAogLyoKICAqIEdpdmVuIGEgUHlPYmplY3QqIG9iaiwgZmlsbCBpbiB0aGUgUHlfYnVmZmVyKiB2aWV3cCB3aXRoIHRoZSByZXN1bHQKLSAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgYSByZXR1cm4gTlVMTAotICogb24gYW55IGVycm9ycy4KKyAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgdGhlIGVycmFjdGlvbgorICogb24gYW55IGVycm9ycywgZS5nLiAncmV0dXJuIE5VTEwnIG9yICdnb3RvIGVycm9yJy4KICAqLwotI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgdmlld3ApIGRvIHsgXAorI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1Iob2JqLCB2aWV3cCwgZXJyYWN0aW9uKSBkbyB7IFwKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjaygob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlLW9iamVjdHMgbXVzdCBiZSBlbmNvZGVkIGJlZm9yZSBoYXNoaW5nIik7XAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcigob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIEFQSSByZXF1aXJlZCIpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKChvYmopLCAodmlld3ApLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmICgodmlld3ApLT5uZGltID4gMSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOyBcCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCh2aWV3cCkpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAotICAgIH0gd2hpbGUoMCk7CisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgXAorICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCByZXR1cm4gTlVMTCkKIAogLyoKICAqIEhlbHBlciBjb2RlIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgaGFzaCBvYmplY3Qgd2hlbiB0aGUgR0lMIGlzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5jIGIvTW9kdWxlcy9oYXNodGFibGUuYwppbmRleCBmZGRkYzE5Li4wNTQ3YTZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5jCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmMKQEAgLTEsNSArMSw1IEBACi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlIGNmdWhhc2gKLSAgIHByb2plY3Q6CisvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlCisgICBjZnVoYXNoIHByb2plY3Q6CiAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmNmdS8KIAogICAgQ29weXJpZ2h0IG9mIGNmdWhhc2g6CkBAIC01OSw3ICs1OSwyMSBAQAogI2RlZmluZSBFTlRSWV9ORVhUKEVOVFJZKSBcCiAgICAgICAgICgoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICopX1B5X1NMSVNUX0lURU1fTkVYVChFTlRSWSkpCiAjZGVmaW5lIEhBU0hUQUJMRV9JVEVNX1NJWkUoSFQpIFwKLSAgICAgICAgKHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpICsgKEhUKS0+ZGF0YV9zaXplKQorICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5rZXlfc2l6ZSArIChIVCktPmRhdGFfc2l6ZSkKKworI2RlZmluZSBFTlRSWV9SRUFEX1BEQVRBKFRBQkxFLCBFTlRSWSwgREFUQV9TSVpFLCBQREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoKFBEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRU5UUllfV1JJVEVfUERBVEEoVEFCTEUsIEVOVFJZLCBEQVRBX1NJWkUsIFBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChQREFUQSksIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkIGhhc2h0YWJsZV9yZWhhc2goX1B5X2hhc2h0YWJsZV90ICpodCk7CkBAIC03MCw2ICs4NCw3IEBACiAgICAgbGlzdC0+aGVhZCA9IE5VTEw7CiB9CiAKKwogc3RhdGljIHZvaWQKIF9QeV9zbGlzdF9wcmVwZW5kKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICppdGVtKQogewpAQCAtNzcsNiArOTIsNyBAQAogICAgIGxpc3QtPmhlYWQgPSBpdGVtOwogfQogCisKIHN0YXRpYyB2b2lkCiBfUHlfc2xpc3RfcmVtb3ZlKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICpwcmV2aW91cywKICAgICAgICAgICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqaXRlbSkKQEAgLTg3LDI0ICsxMDMsMjYgQEAKICAgICAgICAgbGlzdC0+aGVhZCA9IGl0ZW0tPm5leHQ7CiB9CiAKLVB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9pbnQoY29uc3Qgdm9pZCAqa2V5KQotewotICAgIHJldHVybiAoUHlfdWhhc2hfdClrZXk7Ci19CiAKIFB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICByZXR1cm4gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkICopa2V5KTsKKyAgICB2b2lkICprZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBrZXkpOworICAgIHJldHVybiAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoa2V5KTsKIH0KIAorCiBpbnQKLV9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQorX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQogewotICAgIHJldHVybiBlbnRyeS0+a2V5ID09IGtleTsKKyAgICBjb25zdCB2b2lkICpwa2V5MiA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgcmV0dXJuIChtZW1jbXAocGtleSwgcGtleTIsIGh0LT5rZXlfc2l6ZSkgPT0gMCk7CiB9CiAKKwogLyogbWFrZXMgc3VyZSB0aGUgcmVhbCBzaXplIG9mIHRoZSBidWNrZXRzIGFycmF5IGlzIGEgcG93ZXIgb2YgMiAqLwogc3RhdGljIHNpemVfdAogcm91bmRfc2l6ZShzaXplX3QgcykKQEAgLTExOCwxMyArMTM2LDEyIEBACiAgICAgcmV0dXJuIGk7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGRhdGFfc2l6ZSwgc2l6ZV90IGluaXRfc2l6ZSwKK19QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpCiB7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpodDsKQEAgLTE0NCw2ICsxNjEsNyBAQAogCiAgICAgaHQtPm51bV9idWNrZXRzID0gcm91bmRfc2l6ZShpbml0X3NpemUpOwogICAgIGh0LT5lbnRyaWVzID0gMDsKKyAgICBodC0+a2V5X3NpemUgPSBrZXlfc2l6ZTsKICAgICBodC0+ZGF0YV9zaXplID0gZGF0YV9zaXplOwogCiAgICAgYnVja2V0c19zaXplID0gaHQtPm51bV9idWNrZXRzICogc2l6ZW9mKGh0LT5idWNrZXRzWzBdKTsKQEAgLTE1NiwyOCArMTc0LDI3IEBACiAKICAgICBodC0+aGFzaF9mdW5jID0gaGFzaF9mdW5jOwogICAgIGh0LT5jb21wYXJlX2Z1bmMgPSBjb21wYXJlX2Z1bmM7Ci0gICAgaHQtPmNvcHlfZGF0YV9mdW5jID0gY29weV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmZyZWVfZGF0YV9mdW5jID0gZnJlZV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmdldF9kYXRhX3NpemVfZnVuYyA9IGdldF9kYXRhX3NpemVfZnVuYzsKICAgICBodC0+YWxsb2MgPSBhbGxvYzsKICAgICByZXR1cm4gaHQ7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3KHNpemVfdCBkYXRhX3NpemUsCitfUHlfaGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpCiB7Ci0gICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoZGF0YV9zaXplLCBIQVNIVEFCTEVfTUlOX1NJWkUsCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIVEFCTEVfTUlOX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKKwogc2l6ZV90CiBfUHlfaGFzaHRhYmxlX3NpemUoX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKICAgICBzaXplX3Qgc2l6ZTsKLSAgICBzaXplX3QgaHY7CiAKICAgICBzaXplID0gc2l6ZW9mKF9QeV9oYXNodGFibGVfdCk7CiAKQEAgLTE4NywyMiArMjA0LDEwIEBACiAgICAgLyogZW50cmllcyAqLwogICAgIHNpemUgKz0gaHQtPmVudHJpZXMgKiBIQVNIVEFCTEVfSVRFTV9TSVpFKGh0KTsKIAotICAgIC8qIGRhdGEgbGlua2VkIGZyb20gZW50cmllcyAqLwotICAgIGlmIChodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jKSB7Ci0gICAgICAgIGZvciAoaHYgPSAwOyBodiA8IGh0LT5udW1fYnVja2V0czsgaHYrKykgewotICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKLQotICAgICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotCi0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIHNpemUgKz0gaHQtPmdldF9kYXRhX3NpemVfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KICAgICByZXR1cm4gc2l6ZTsKIH0KIAorCiAjaWZkZWYgUHlfREVCVUcKIHZvaWQKIF9QeV9oYXNodGFibGVfcHJpbnRfc3RhdHMoX1B5X2hhc2h0YWJsZV90ICpodCkKQEAgLTI0MywzOCArMjQ4LDQ1IEBACiB9CiAjZW5kaWYKIAotLyogR2V0IGFuIGVudHJ5LiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LiAqLworCiBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKgotX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gZW50cnk7CiB9CiAKKwogc3RhdGljIGludAotX2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCAqcHJldmlvdXM7CiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIHByZXZpb3VzID0gTlVMTDsKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcHJldmlvdXMgPSBlbnRyeTsKICAgICB9CkBAIC0yODcsNyArMjk5LDcgQEAKICAgICBodC0+ZW50cmllcy0tOwogCiAgICAgaWYgKGRhdGEgIT0gTlVMTCkKLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgICAgICBFTlRSWV9SRUFEX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAKICAgICBpZiAoKGZsb2F0KWh0LT5lbnRyaWVzIC8gKGZsb2F0KWh0LT5udW1fYnVja2V0cyA8IEhBU0hUQUJMRV9MT1cpCkBAIC0yOTUsMjYgKzMwNywyNyBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIGhhc2guIFRoZSBrZXkgbXVzdCBub3QgYmUgcHJlc2VudCBpbiB0aGUgaGFzaCB0YWJsZS4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIG1lbW9yeSBlcnJvci4gKi8KKwogaW50Ci1fUHlfaGFzaHRhYmxlX3NldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksCi0gICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9zZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgLyogRG9uJ3Qgd3JpdGUgdGhlIGFzc2VydGlvbiBvbiBhIHNpbmdsZSBsaW5lIGJlY2F1c2UgaXQgaXMgaW50ZXJlc3RpbmcKICAgICAgICB0byBrbm93IHRoZSBkdXBsaWNhdGVkIGVudHJ5IGlmIHRoZSBhc3NlcnRpb24gZmFpbGVkLiBUaGUgZW50cnkgY2FuCiAgICAgICAgYmUgcmVhZCB1c2luZyBhIGRlYnVnZ2VyLiAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleSk7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5X3NpemUsIHBrZXkpOwogICAgIGFzc2VydChlbnRyeSA9PSBOVUxMKTsKICNlbmRpZgogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgZW50cnkgPSBodC0+YWxsb2MubWFsbG9jKEhBU0hUQUJMRV9JVEVNX1NJWkUoaHQpKTsKQEAgLTMyMywxMiArMzM2LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlbnRyeS0+a2V5ID0gKHZvaWQgKilrZXk7CiAgICAgZW50cnktPmtleV9oYXNoID0ga2V5X2hhc2g7Ci0KLSAgICBhc3NlcnQoZGF0YV9zaXplID09IGh0LT5kYXRhX3NpemUpOworICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSksIHBrZXksIGh0LT5rZXlfc2l6ZSk7CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIG1lbWNweShfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpLCBkYXRhLCBkYXRhX3NpemUpOworICAgICAgICBFTlRSWV9XUklURV9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAKICAgICBfUHlfc2xpc3RfcHJlcGVuZCgmaHQtPmJ1Y2tldHNbaW5kZXhdLCAoX1B5X3NsaXN0X2l0ZW1fdCopZW50cnkpOwogICAgIGh0LT5lbnRyaWVzKys7CkBAIC0zMzgsNDggKzM0OSw1MCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBHZXQgZGF0YSBmcm9tIGFuIGVudHJ5LiBDb3B5IGVudHJ5IGRhdGEgaW50byBkYXRhIGFuZCByZXR1cm4gMSBpZiB0aGUgZW50cnkKLSAgIGV4aXN0cywgcmV0dXJuIDAgaWYgdGhlIGVudHJ5IGRvZXMgbm90IGV4aXN0LiAqLworCiBpbnQKLV9QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSxjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCiAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7CiAKLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXkpOworICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5KTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgIEVOVFJZX1JFQURfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogICAgIHJldHVybiAxOwogfQogCisKIGludAotX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoaHQtPmZyZWVfZGF0YV9mdW5jID09IE5VTEwpOwotICAgIHJldHVybiBfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBkYXRhLCBkYXRhX3NpemUpOworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIGRhdGEsIGRhdGFfc2l6ZSk7CiB9CiAKLS8qIERlbGV0ZSBhbiBlbnRyeS4gVGhlIGVudHJ5IG11c3QgZXhpc3QuICovCisKKy8qIENvZGUgY29tbWVudGVkIHNpbmNlIHRoZSBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIGluIFB5dGhvbiAqLworI2lmIDAKIHZvaWQKLV9QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSkKK19QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgaW50IGZvdW5kID0gX2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleSwgTlVMTCwgMCk7CisgICAgaW50IGZvdW5kID0gX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5LCBOVUxMLCAwKTsKICAgICBhc3NlcnQoZm91bmQpOwogI2Vsc2UKLSAgICAodm9pZClfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBOVUxMLCAwKTsKKyAgICAodm9pZClfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIE5VTEwsIDApOwogI2VuZGlmCiB9CisjZW5kaWYKIAotLyogUHJvdG90eXBlIGZvciBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yZWFjaAotICAga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIGhhc2ggYnkgaGFzaHRhYmxlX2ZvcmVhY2goKS4gIEl0ZXJhdGlvbgotICAgc3RvcHMgaWYgYSBub24temVybyB2YWx1ZSBpcyByZXR1cm5lZC4gKi8KKwogaW50CiBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpmdW5jKSAoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqYXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwpAQCAtMzg3LDcgKzQwMCw3IEBACiAKICAgICBmb3IgKGh2ID0gMDsgaHYgPCBodC0+bnVtX2J1Y2tldHM7IGh2KyspIHsKICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCByZXMgPSBmdW5jKGVudHJ5LCBhcmcpOworICAgICAgICAgICAgaW50IHJlcyA9IGZ1bmMoaHQsIGVudHJ5LCBhcmcpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CkBAIC0zOTUsNiArNDA4LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAogaGFzaHRhYmxlX3JlaGFzaChfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDI2LDcgKzQ0MCw4IEBACiAgICAgICAgIGZvciAoZW50cnkgPSBCVUNLRVRTX0hFQUQob2xkX2J1Y2tldHNbYnVja2V0XSk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gbmV4dCkgewogICAgICAgICAgICAgc2l6ZV90IGVudHJ5X2luZGV4OwogCi0gICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhlbnRyeS0+a2V5KSA9PSBlbnRyeS0+a2V5X2hhc2gpOworCisgICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhodCwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KSkgPT0gZW50cnktPmtleV9oYXNoKTsKICAgICAgICAgICAgIG5leHQgPSBFTlRSWV9ORVhUKGVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5X2luZGV4ID0gZW50cnktPmtleV9oYXNoICYgKG5ld19zaXplIC0gMSk7CiAKQEAgLTQzNyw2ICs0NTIsNyBAQAogICAgIGh0LT5hbGxvYy5mcmVlKG9sZF9idWNrZXRzKTsKIH0KIAorCiB2b2lkCiBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00NDYsOCArNDYyLDYgQEAKICAgICBmb3IgKGk9MDsgaSA8IGh0LT5udW1fYnVja2V0czsgaSsrKSB7CiAgICAgICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpKTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBuZXh0KSB7CiAgICAgICAgICAgICBuZXh0ID0gRU5UUllfTkVYVChlbnRyeSk7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgX1B5X3NsaXN0X2luaXQoJmh0LT5idWNrZXRzW2ldKTsKQEAgLTQ1Niw2ICs0NzAsNyBAQAogICAgIGhhc2h0YWJsZV9yZWhhc2goaHQpOwogfQogCisKIHZvaWQKIF9QeV9oYXNodGFibGVfZGVzdHJveShfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDY1LDggKzQ4MCw2IEBACiAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKmVudHJ5ID0gaHQtPmJ1Y2tldHNbaV0uaGVhZDsKICAgICAgICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICplbnRyeV9uZXh0ID0gZW50cnktPm5leHQ7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9IGVudHJ5X25leHQ7CiAgICAgICAgIH0KQEAgLTQ3NiwzOSArNDg5LDMxIEBACiAgICAgaHQtPmFsbG9jLmZyZWUoaHQpOwogfQogCi0vKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlICovCisKIF9QeV9oYXNodGFibGVfdCAqCiBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpCiB7CisgICAgY29uc3Qgc2l6ZV90IGtleV9zaXplID0gc3JjLT5rZXlfc2l6ZTsKKyAgICBjb25zdCBzaXplX3QgZGF0YV9zaXplID0gc3JjLT5kYXRhX3NpemU7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpkc3Q7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKICAgICBzaXplX3QgYnVja2V0OwogICAgIGludCBlcnI7Ci0gICAgdm9pZCAqZGF0YSwgKm5ld19kYXRhOwogCi0gICAgZHN0ID0gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzcmMtPmRhdGFfc2l6ZSwgc3JjLT5udW1fYnVja2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywgc3JjLT5jb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5jb3B5X2RhdGFfZnVuYywgc3JjLT5mcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmdldF9kYXRhX3NpemVfZnVuYywgJnNyYy0+YWxsb2MpOworICAgIGRzdCA9IF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+bnVtX2J1Y2tldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Y29tcGFyZV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNyYy0+YWxsb2MpOwogICAgIGlmIChkc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGJ1Y2tldD0wOyBidWNrZXQgPCBzcmMtPm51bV9idWNrZXRzOyBidWNrZXQrKykgewogICAgICAgICBlbnRyeSA9IFRBQkxFX0hFQUQoc3JjLCBidWNrZXQpOwogICAgICAgICBmb3IgKDsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGlmIChzcmMtPmNvcHlfZGF0YV9mdW5jKSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIG5ld19kYXRhID0gc3JjLT5jb3B5X2RhdGFfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgICAgICBpZiAobmV3X2RhdGEgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBlbnRyeS0+a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOwotICAgICAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwgZW50cnktPmtleSwgZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgICAgICAgICBjb25zdCB2b2lkICpwZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoc3JjLCBlbnRyeSk7CisgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGtleV9zaXplLCBwa2V5LCBkYXRhX3NpemUsIHBkYXRhKTsKICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZHN0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNyw0ICs1MjIsMyBAQAogICAgIH0KICAgICByZXR1cm4gZHN0OwogfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5oIGIvTW9kdWxlcy9oYXNodGFibGUuaAppbmRleCBhOWY5OTkzLi5kYmVjMjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5oCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmgKQEAgLTEsOSArMSwxMCBAQAogI2lmbmRlZiBQeV9IQVNIVEFCTEVfSAogI2RlZmluZSBQeV9IQVNIVEFCTEVfSAotCiAvKiBUaGUgd2hvbGUgQVBJIGlzIHByaXZhdGUgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorLyogU2luZ2xlIGxpbmtlZCBsaXN0ICovCisKIHR5cGVkZWYgc3RydWN0IF9QeV9zbGlzdF9pdGVtX3MgewogICAgIHN0cnVjdCBfUHlfc2xpc3RfaXRlbV9zICpuZXh0OwogfSBfUHlfc2xpc3RfaXRlbV90OwpAQCAtMTYsMzMgKzE3LDY2IEBACiAKICNkZWZpbmUgX1B5X1NMSVNUX0hFQUQoU0xJU1QpICgoKF9QeV9zbGlzdF90ICopU0xJU1QpLT5oZWFkKQogCisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlIGVudHJ5ICovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiB1c2VkIGJ5IF9QeV9oYXNodGFibGVfdC5idWNrZXRzIHRvIGxpbmsgZW50cmllcyAqLwogICAgIF9QeV9zbGlzdF9pdGVtX3QgX1B5X3NsaXN0X2l0ZW07CiAKLSAgICBjb25zdCB2b2lkICprZXk7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKIAotICAgIC8qIGRhdGEgZm9sbG93cyAqLworICAgIC8qIGtleSAoa2V5X3NpemUgYnl0ZXMpIGFuZCB0aGVuIGRhdGEgKGRhdGFfc2l6ZSBieXRlcykgZm9sbG93cyAqLwogfSBfUHlfaGFzaHRhYmxlX2VudHJ5X3Q7CiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSBcCi0gICAgICAgICgoY2hhciAqKShFTlRSWSkgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkpCiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChFTlRSWSkgXAotICAgICAgICAoKih2b2lkICoqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSkpCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoVEFCTEUsIEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIChUQUJMRSktPmtleV9zaXplKSkKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShUQUJMRSwgREFUQSwgREFUQV9TSVpFLCBFTlRSWSkgXAorLyogR2V0IGEga2V5IHZhbHVlIGZyb20gcGtleTogdXNlIG1lbWNweSgpIHJhdGhlciB0aGFuIGEgcG9pbnRlciBkZXJlZmVyZW5jZQorICAgdG8gYXZvaWQgbWVtb3J5IGFsaWdubWVudCBpc3N1ZXMuICovCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoVEFCTEUsIFBLRVksIERTVF9LRVkpIFwKICAgICBkbyB7IFwKLSAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKLSAgICAgICAgbWVtY3B5KERBVEEsIF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSksIERBVEFfU0laRSk7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEU1RfS0VZKSA9PSAoVEFCTEUpLT5rZXlfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoRFNUX0tFWSksIChQS0VZKSwgc2l6ZW9mKERTVF9LRVkpKTsgXAogICAgIH0gd2hpbGUgKDApCiAKLXR5cGVkZWYgUHlfdWhhc2hfdCAoKl9QeV9oYXNodGFibGVfaGFzaF9mdW5jKSAoY29uc3Qgdm9pZCAqa2V5KTsKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpIChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpOwotdHlwZWRlZiB2b2lkKiAoKl9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMpKHZvaWQgKmRhdGEpOwotdHlwZWRlZiB2b2lkICgqX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYykodm9pZCAqZGF0YSk7Ci10eXBlZGVmIHNpemVfdCAoKl9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jKSh2b2lkICpkYXRhKTsKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShUQUJMRSwgRU5UUlksIEtFWSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKEtFWSkgPT0gKFRBQkxFKS0+a2V5X3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKEtFWSksIF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShFTlRSWSksIHNpemVvZihLRVkpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoVEFCTEUsIEVOVFJZLCBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoREFUQSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfV1JJVEVfREFUQShUQUJMRSwgRU5UUlksIERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEQVRBKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgICYoREFUQSksIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisKKy8qIF9QeV9oYXNodGFibGU6IHByb3RvdHlwZXMgKi8KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IF9QeV9oYXNodGFibGVfdDsKKwordHlwZWRlZiBQeV91aGFzaF90ICgqX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpIChzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSk7Cit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKSAoc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmhlKTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrICovCkBAIC01Miw3NyArODYsMTI2IEBACiAgICAgdm9pZCAoKmZyZWUpICh2b2lkICpwdHIpOwogfSBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90OwogCi10eXBlZGVmIHN0cnVjdCB7CisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlICovCisKK3R5cGVkZWYgc3RydWN0IF9QeV9oYXNodGFibGVfdCB7CiAgICAgc2l6ZV90IG51bV9idWNrZXRzOwogICAgIHNpemVfdCBlbnRyaWVzOyAvKiBUb3RhbCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGFibGUuICovCiAgICAgX1B5X3NsaXN0X3QgKmJ1Y2tldHM7CisgICAgc2l6ZV90IGtleV9zaXplOwogICAgIHNpemVfdCBkYXRhX3NpemU7CiAKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMgY29weV9kYXRhX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBhbGxvYzsKIH0gX1B5X2hhc2h0YWJsZV90OwogCi0vKiBoYXNoIGFuZCBjb21wYXJlIGZ1bmN0aW9ucyBmb3IgaW50ZWdlcnMgYW5kIHBvaW50ZXJzICovCi1QeUFQSV9GVU5DKFB5X3VoYXNoX3QpIF9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KTsKLVB5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX2ludChjb25zdCB2b2lkICprZXkpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KTsKKy8qIGhhc2ggYSBwb2ludGVyICh2b2lkKikgKi8KK1B5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX3B0cigKKyAgICBzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5KTsKKworLyogY29tcGFyaXNvbiB1c2luZyBtZW1jbXAoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpOwogCiBQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX25ldygKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKTsKKwogUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9uZXdfZnVsbCgKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpOwotUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9jbGVhcihfUHlfaGFzaHRhYmxlX3QgKmh0KTsKKwogUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koX1B5X2hhc2h0YWJsZV90ICpodCk7CiAKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMpIChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICphcmcpOworLyogUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCB0YWJsZSAqLworUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpOworCit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jKSAoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIENhbGwgZnVuYygpIG9uIGVhY2ggZW50cnkgb2YgdGhlIGhhc2h0YWJsZS4KKyAgIEl0ZXJhdGlvbiBzdG9wcyBpZiBmdW5jKCkgcmVzdWx0IGlzIG5vbi16ZXJvLCBpbiB0aGlzIGNhc2UgaXQncyB0aGUgcmVzdWx0CisgICBvZiB0aGUgY2FsbC4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfZm9yZWFjaCgKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsIHZvaWQgKmFyZyk7CisgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywKKyAgICB2b2lkICphcmcpOworCiBQeUFQSV9GVU5DKHNpemVfdCkgX1B5X2hhc2h0YWJsZV9zaXplKF9QeV9oYXNodGFibGVfdCAqaHQpOwogCi1QeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfZW50cnlfdCopIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5KTsKKy8qIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgaGFzaC4gVGhlIGtleSBtdXN0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gbWVtb3J5IGVycm9yLgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sCisgICBidXQgdXNlIF9QeV9IQVNIVEFCTEVfU0VUKCkgYW5kIF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSgpIG1hY3JvcyAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfc2V0KAogICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX3BvcCgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2RlbGV0ZSgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSk7CisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogI2RlZmluZSBfUHlfSEFTSFRBQkxFX1NFVChUQUJMRSwgS0VZLCBEQVRBKSBcCi0gICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIEtFWSwgJihEQVRBKSwgc2l6ZW9mKERBVEEpKQorICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCBzaXplb2YoREFUQSksICYoREFUQSkpCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKFRBQkxFLCBLRVkpIFwKKyAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgMCwgTlVMTCkKKworCisvKiBHZXQgYW4gZW50cnkuCisgICBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoKQorICAgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV9lbnRyeV90KikgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSk7CisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoVEFCTEUsIEtFWSkgXAorICAgIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpKQorCisKKy8qIEdldCBkYXRhIGZyb20gYW4gZW50cnkuIENvcHkgZW50cnkgZGF0YSBpbnRvIGRhdGEgYW5kIHJldHVybiAxIGlmIHRoZSBlbnRyeQorICAgZXhpc3RzLCByZXR1cm4gMCBpZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX0dFVCgpIG1hY3JvICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIHZvaWQgKmRhdGEpOwogCiAjZGVmaW5lIF9QeV9IQVNIVEFCTEVfR0VUKFRBQkxFLCBLRVksIERBVEEpIFwKLSAgICBfUHlfaGFzaHRhYmxlX2dldChUQUJMRSwgS0VZLCAmKERBVEEpLCBzaXplb2YoREFUQSkpCisgICAgX1B5X2hhc2h0YWJsZV9nZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKworCisvKiBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9QT1AoKSBtYWNybyAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfcG9wKAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICB2b2lkICpkYXRhKTsKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1BPUChUQUJMRSwgS0VZLCBEQVRBKSBcCisgICAgX1B5X2hhc2h0YWJsZV9wb3AoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKwogCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IGJlMGY0OTguLjZiZjA0Y2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMSw0ICsxLDUgQEAKIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKQEAgLTcsNyArOCw3IEBACiAqLwogCiAKLS8qIGdyb3VwYnkgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogZ3JvdXBieSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNzQsNyArNzUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdyb3VwYnlfbmV4dChncm91cGJ5b2JqZWN0ICpnYm8pCiB7Ci0gICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXIsICp0bXA7CisgICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXI7CiAKICAgICAvKiBza2lwIHRvIG5leHQgaXRlcmF0aW9uIGdyb3VwICovCiAgICAgZm9yICg7OykgewpAQCAtODUsOCArODYsNyBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCByY21wOwogCi0gICAgICAgICAgICByY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGdiby0+dGd0a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm8tPmN1cnJrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIHJjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSwgUHlfRVEpOwogICAgICAgICAgICAgaWYgKHJjbXAgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChyY21wID09IDApCkBAIC0xMDEsMjcgKzEwMSwxOSBAQAogICAgICAgICAgICAgbmV3a2V5ID0gbmV3dmFsdWU7CiAgICAgICAgICAgICBQeV9JTkNSRUYobmV3dmFsdWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLCBuZXd2YWx1ZSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAobmV3a2V5ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdG1wID0gZ2JvLT5jdXJya2V5OwotICAgICAgICBnYm8tPmN1cnJrZXkgPSBuZXdrZXk7Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKLQotICAgICAgICB0bXAgPSBnYm8tPmN1cnJ2YWx1ZTsKLSAgICAgICAgZ2JvLT5jdXJydmFsdWUgPSBuZXd2YWx1ZTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKGdiby0+Y3VycmtleSwgbmV3a2V5KTsKKyAgICAgICAgUHlfWFNFVFJFRihnYm8tPmN1cnJ2YWx1ZSwgbmV3dmFsdWUpOwogICAgIH0KIAogICAgIFB5X0lOQ1JFRihnYm8tPmN1cnJrZXkpOwotICAgIHRtcCA9IGdiby0+dGd0a2V5OwotICAgIGdiby0+dGd0a2V5ID0gZ2JvLT5jdXJya2V5OwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKGdiby0+dGd0a2V5LCBnYm8tPmN1cnJrZXkpOwogCiAgICAgZ3JvdXBlciA9IF9ncm91cGVyX2NyZWF0ZShnYm8sIGdiby0+dGd0a2V5KTsKICAgICBpZiAoZ3JvdXBlciA9PSBOVUxMKQpAQCAtMTc4LDcgKzE3MCw3IEBACiAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogUHlEb2NfU1RSVkFSKGdyb3VwYnlfZG9jLApAQCAtMzAxLDggKzI5Myw3IEBACiAgICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsIG5ld3ZhbHVlLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzAsOCArMzIxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZ3JvdXBlcl9yZWR1Y2UoX2dyb3VwZXJvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgbHotPnBhcmVudCwgbHotPnRndGtleSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0gewpAQCAtMzY0LDcgKzM1NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylfZ3JvdXBlcl90cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpX2dyb3VwZXJfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC0zODUsOCArMzc1LDcgQEAKIH07CiAKIAotCi0vKiB0ZWUgb2JqZWN0IGFuZCB3aXRoIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIG9iamVjdHMgKioqKioqKioqKioqKioqLworLyogdGVlIG9iamVjdCBhbmQgd2l0aCBzdXBwb3J0aW5nIGZ1bmN0aW9uIGFuZCBvYmplY3RzICoqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBUaGUgdGVlZGF0YW9iamVjdCBwcmUtYWxsb2NhdGVzIHNwYWNlIGZvciBMSU5LQ0VMTFMgbnVtYmVyIG9mIG9iamVjdHMuCiAgICBUbyBoZWxwIHRoZSBvYmplY3QgZml0IG5lYXRseSBpbnNpZGUgY2FjaGUgbGluZXMgKHNwYWNlIGZvciAxNiB0byAzMgpAQCAtNDAxLDcgKzM5MCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICppdDsKLSAgICBpbnQgbnVtcmVhZDsgIC8qIDAgPD0gbnVtcmVhZCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgbnVtcmVhZDsgICAgICAgICAgICAgICAgLyogMCA8PSBudW1yZWFkIDw9IExJTktDRUxMUyAqLwogICAgIFB5T2JqZWN0ICpuZXh0bGluazsKICAgICBQeU9iamVjdCAqKHZhbHVlc1tMSU5LQ0VMTFNdKTsKIH0gdGVlZGF0YW9iamVjdDsKQEAgLTQwOSw3ICszOTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB0ZWVkYXRhb2JqZWN0ICpkYXRhb2JqOwotICAgIGludCBpbmRleDsgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgaW5kZXg7ICAgICAgICAgICAgICAgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHRlZW9iamVjdDsKIApAQCAtNDY2LDYgKzQ1NSw3IEBACiB0ZWVkYXRhb2JqZWN0X3RyYXZlcnNlKHRlZWRhdGFvYmplY3QgKnRkbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICogYXJnKQogewogICAgIGludCBpOworCiAgICAgUHlfVklTSVQodGRvLT5pdCk7CiAgICAgZm9yIChpID0gMDsgaSA8IHRkby0+bnVtcmVhZDsgaSsrKQogICAgICAgICBQeV9WSVNJVCh0ZG8tPnZhbHVlc1tpXSk7CkBAIC01MTUsNiArNTA1LDcgQEAKICAgICBpbnQgaTsKICAgICAvKiBjcmVhdGUgYSB0ZW1wb3JhcnkgbGlzdCBvZiBhbHJlYWR5IGl0ZXJhdGVkIHZhbHVlcyAqLwogICAgIFB5T2JqZWN0ICp2YWx1ZXMgPSBQeUxpc3RfTmV3KHRkby0+bnVtcmVhZCk7CisKICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTAgOyBpPHRkby0+bnVtcmVhZCA7IGkrKykgewpAQCAtNTgyLDcgKzU3Myw3IEBACiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgICAgICAgICAvKiBNdXN0IGZpbGwgaW4gdHlwZSB2YWx1ZSBsYXRlciAqLwogICAgICJpdGVydG9vbHMuX3RlZV9kYXRhb2JqZWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZih0ZWVkYXRhb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwpAQCAtNjAyLDcgKzU5Myw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICB0ZWVkYXRhb2JqZWN0X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGVlZGF0YW9iamVjdF90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZWVkYXRhb2JqZWN0X2NsZWFyLCAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC03NjIsOSArNzUzLDkgQEAKICJJdGVyYXRvciB3cmFwcGVkIHRvIG1ha2UgaXQgY29weWFibGUiKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRlZV9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAotICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgICAgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAorICAgIHsiX19jb3B5X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9jb3B5LCAgICAgTUVUSF9OT0FSR1MsIHRlZWNvcHlfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0ZWVfc2V0c3RhdGUsIE1FVEhfTywgICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC03OTQsNyArNzg1LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXRlZV90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXRlZV9jbGVhciwgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZih0ZWVvYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YodGVlb2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl0ZWVfbmV4dCwgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICB0ZWVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC04NjAsMTIgKzg1MSwxMyBAQAogInRlZShpdGVyYWJsZSwgbj0yKSAtLT4gdHVwbGUgb2YgbiBpbmRlcGVuZGVudCBpdGVyYXRvcnMuIik7CiAKIAotLyogY3ljbGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjeWNsZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKml0OwogICAgIFB5T2JqZWN0ICpzYXZlZDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGludCBmaXJzdHBhc3M7CiB9IGN5Y2xlb2JqZWN0OwogCkBAIC05MDUsNiArODk3LDcgQEAKICAgICB9CiAgICAgbHotPml0ID0gaXQ7CiAgICAgbHotPnNhdmVkID0gc2F2ZWQ7CisgICAgbHotPmluZGV4ID0gMDsKICAgICBsei0+Zmlyc3RwYXNzID0gMDsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKilsejsKQEAgLTkxNCwxNSArOTA3LDE2IEBACiBjeWNsZV9kZWFsbG9jKGN5Y2xlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKGx6KTsKLSAgICBQeV9YREVDUkVGKGx6LT5zYXZlZCk7CiAgICAgUHlfWERFQ1JFRihsei0+aXQpOworICAgIFB5X1hERUNSRUYobHotPnNhdmVkKTsKICAgICBQeV9UWVBFKGx6KS0+dHBfZnJlZShseik7CiB9CiAKIHN0YXRpYyBpbnQKIGN5Y2xlX3RyYXZlcnNlKGN5Y2xlb2JqZWN0ICpseiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQobHotPml0KTsKKyAgICBpZiAobHotPml0KQorICAgICAgICBQeV9WSVNJVChsei0+aXQpOwogICAgIFB5X1ZJU0lUKGx6LT5zYXZlZCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05MzEsNDUgKzkyNSw1NiBAQAogY3ljbGVfbmV4dChjeWNsZW9iamVjdCAqbHopCiB7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlPYmplY3QgKml0OwotICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICB3aGlsZSAoMSkgeworICAgIGlmIChsei0+aXQgIT0gTlVMTCkgewogICAgICAgICBpdGVtID0gUHlJdGVyX05leHQobHotPml0KTsKICAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKCFsei0+Zmlyc3RwYXNzICYmIFB5TGlzdF9BcHBlbmQobHotPnNhdmVkLCBpdGVtKSkgeworICAgICAgICAgICAgaWYgKGx6LT5maXJzdHBhc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsei0+c2F2ZWQsIGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5TGlzdF9TaXplKGx6LT5zYXZlZCkgPT0gMCkKKyAgICAgICAgLyogTm90ZTogIFN0b3BJdGVyYXRpb24gaXMgYWxyZWFkeSBjbGVhcmVkIGJ5IFB5SXRlcl9OZXh0KCkgKi8KKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7Ci0gICAgICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRtcCA9IGx6LT5pdDsKLSAgICAgICAgbHotPml0ID0gaXQ7Ci0gICAgICAgIGx6LT5maXJzdHBhc3MgPSAxOwotICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlfQ0xFQVIobHotPml0KTsKICAgICB9CisgICAgaWYgKFB5X1NJWkUobHotPnNhdmVkKSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGx6LT5zYXZlZCwgbHotPmluZGV4KTsKKyAgICBsei0+aW5kZXgrKzsKKyAgICBpZiAobHotPmluZGV4ID49IFB5X1NJWkUobHotPnNhdmVkKSkKKyAgICAgICAgbHotPmluZGV4ID0gMDsKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgcmV0dXJuIGl0ZW07CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9yZWR1Y2UoY3ljbGVvYmplY3QgKmx6KQogewotICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQKLSAgICAgKiB0aGUgc2F2ZWQgc3RhdGUgb24gaXQuCi0gICAgICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykoT2kpIiwgUHlfVFlQRShseiksCi0gICAgICAgIGx6LT5pdCwgbHotPnNhdmVkLCBsei0+Zmlyc3RwYXNzKTsKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0IHRoZSBzYXZlZCBzdGF0ZSAqLworICAgIGlmIChsei0+aXQgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChsei0+aW5kZXggIT0gMCkgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19zZXRzdGF0ZV9fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGl0LCAmUHlJZF9fX3NldHN0YXRlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiIsIGx6LT5pbmRleCk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTikoT2kpIiwgUHlfVFlQRShseiksIGl0LCBsei0+c2F2ZWQsIDEpOwogICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwgbHotPml0LCBsei0+c2F2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZpcnN0cGFzcyk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9zZXRzdGF0ZShjeWNsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKQEAgLTk4Myw5ICs5ODgsMTAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPIWkiLCAmUHlMaXN0X1R5cGUsICZzYXZlZCwgJmZpcnN0cGFzcykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hJTkNSRUYoc2F2ZWQpOworICAgIFB5X0lOQ1JFRihzYXZlZCk7CiAgICAgUHlfWFNFVFJFRihsei0+c2F2ZWQsIHNhdmVkKTsKICAgICBsei0+Zmlyc3RwYXNzID0gZmlyc3RwYXNzICE9IDA7CisgICAgbHotPmluZGV4ID0gMDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTA1NCw3ICsxMDYwLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKml0OwotICAgIGxvbmcgICAgICAgICBzdGFydDsKKyAgICBsb25nIHN0YXJ0OwogfSBkcm9wd2hpbGVvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZHJvcHdoaWxlX3R5cGU7CkBAIC0xMTQ0LDggKzExNTAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRyb3B3aGlsZV9yZWR1Y2UoZHJvcHdoaWxlb2JqZWN0ICpseikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdGFydCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTk2LDEzICsxMjAxLDEzIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGRyb3B3aGlsZV9kb2MsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZHJvcHdoaWxlX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpZHJvcHdoaWxlX3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZHJvcHdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZHJvcHdoaWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEyMjMsNyArMTIyOCw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICppdDsKLSAgICBsb25nICAgICAgICAgc3RvcDsKKyAgICBsb25nIHN0b3A7CiB9IHRha2V3aGlsZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0YWtld2hpbGVfdHlwZTsKQEAgLTEyOTgsNyArMTMwMyw3IEBACiAgICAgfQogICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGdvb2QpOwogICAgIFB5X0RFQ1JFRihnb29kKTsKLSAgICBpZiAob2sgPT0gMSkKKyAgICBpZiAob2sgPiAwKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgaWYgKG9rID09IDApCkBAIC0xMzA5LDE0ICsxMzE0LDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGFrZXdoaWxlX3JlZHVjZSh0YWtld2hpbGVvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlKHRha2V3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKICAgICBpbnQgc3RvcCA9IFB5T2JqZWN0X0lzVHJ1ZShzdGF0ZSk7CisKICAgICBpZiAoc3RvcCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGx6LT5zdG9wID0gc3RvcDsKQEAgLTEzNjAsNyArMTM2NSw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIHRha2V3aGlsZV9kb2MsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpdGFrZXdoaWxlX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpdGFrZXdoaWxlX3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC0xMzgxLDcgKzEzODYsNyBAQAogfTsKIAogCi0vKiBpc2xpY2Ugb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGlzbGljZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTE0MTcsNyArMTQyMiw4IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQzMiwxNCArMTQzOCwxNiBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOworICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgIgorICAgICAgICAgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHN0YXJ0PDAgfHwgc3RvcDwtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgIkluZGljZXMgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICJJbmRpY2VzIGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgIgorICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1MzYsNiArMTU0NCw3IEBACiAgICAgICogdGhlbiAnc2V0c3RhdGUnIHdpdGggdGhlIG5leHQgYW5kIGNvdW50CiAgICAgICovCiAgICAgUHlPYmplY3QgKnN0b3A7CisKICAgICBpZiAobHotPml0ID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmVtcHR5X2xpc3Q7CiAgICAgICAgIFB5T2JqZWN0ICplbXB0eV9pdDsKQEAgLTE1NjUsNiArMTU3NCw3IEBACiBpc2xpY2Vfc2V0c3RhdGUoaXNsaWNlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIFB5X3NzaXplX3QgY250ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisKICAgICBpZiAoY250ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGx6LT5jbnQgPSBjbnQ7CkBAIC0xNzc5LDcgKzE3ODksNyBAQAogfTsKIAogCi0vKiBjaGFpbiBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY2hhaW4gb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTg1NSwzMiArMTg2NSwzMiBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogCiAgICAgaWYgKGx6LT5zb3VyY2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxyZWFkeSBzdG9wcGVkICovCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgLyogYWxyZWFkeSBzdG9wcGVkICovCiAKICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFB5SXRlcl9OZXh0KGx6LT5zb3VyY2UpOwogICAgICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIG1vcmUgaW5wdXQgc291cmNlcyAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG5vIG1vcmUgaW5wdXQgc291cmNlcyAqLwogICAgICAgICB9CiAgICAgICAgIGx6LT5hY3RpdmUgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKICAgICAgICAgaWYgKGx6LT5hY3RpdmUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IG5vdCBpdGVyYWJsZSAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIGlucHV0IG5vdCBpdGVyYWJsZSAqLwogICAgICAgICB9CiAgICAgfQotICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChsei0+YWN0aXZlKTsKKyAgICBpdGVtID0gKCpQeV9UWVBFKGx6LT5hY3RpdmUpLT50cF9pdGVybmV4dCkobHotPmFjdGl2ZSk7CiAgICAgaWYgKGl0ZW0gIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBpbnB1dCByYWlzZWQgYW4gZXhjZXB0aW9uICovCiAgICAgfQogICAgIFB5X0NMRUFSKGx6LT5hY3RpdmUpOwotICAgIHJldHVybiBjaGFpbl9uZXh0KGx6KTsgICAgICAgICAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCisgICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTQwLDEzICsxOTUwLDEzIEBACiB0aGF0IGV2YWx1YXRlcyBsYXppbHkuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjaGFpbl9tZXRob2RzW10gPSB7Ci0gICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgICAgICAgICAgICBNRVRIX08gfCBNRVRIX0NMQVNTLAotICAgICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCisgICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgTUVUSF9PIHwgTUVUSF9DTEFTUywKKyAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY2hhaW5fc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjaGFpbl90eXBlID0gewpAQCAtMTk5OCwxMCArMjAwOCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgICAgICAgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHBvb2wgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBwcm9kdWN0IGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBwb29sICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcHJvZHVjdG9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGU7CkBAIC0yMDIwLDcgKzIwMzAsOCBAQAogICAgICAgICBQeU9iamVjdCAqdG1wYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICBpZiAodG1wYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHRtcGFyZ3MsIGt3ZHMsICJ8bjpwcm9kdWN0Iiwga3dsaXN0LCAmcmVwZWF0KSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0bXBhcmdzLCBrd2RzLCAifG46cHJvZHVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnJlcGVhdCkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXBhcmdzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0yMzA5LDcgKzIzMjAsNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5wcm9kdWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihwcm9kdWN0b2JqZWN0KSwgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YocHJvZHVjdG9iamVjdCksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvcilwcm9kdWN0X2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCkBAIC0yMzUxLDE1ICsyMzYyLDE1IEBACiB9OwogCiAKLS8qIGNvbWJpbmF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY29tYmluYXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY29tYmluYXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gY29tYmluYXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNvbWJpbmF0aW9uc190eXBlOwpAQCAtMjU2OSwxNyArMjU4MCwxNiBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKIAotICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCi0gICAgeworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbWF4OwogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCiAgICAgICAgIG1heCA9IGkgKyBuIC0gbHotPnI7CkBAIC0yNjY1LDcgKzI2NzUsNyBAQAogfTsKIAogCi0vKiBjb21iaW5hdGlvbnMgd2l0aCByZXBsYWNlbWVudCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNvbWJpbmF0aW9ucyB3aXRoIHJlcGxhY2VtZW50IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogRXF1aXZhbGVudCB0bzoKIApAQCAtMjY5NSwxMSArMjcwNSwxMSBAQAogKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLwogICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KICAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBjd3JvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY3dyX3R5cGU7CkBAIC0yNzE2LDggKzI3MjYsOSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgInIiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlcmFibGUsICZyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCAmaXRlcmFibGUsICZyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwb29sID0gUHlTZXF1ZW5jZV9UdXBsZShpdGVyYWJsZSk7CkBAIC0yODgyLDggKzI4OTMsNyBAQAogICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobHotPnIpOwogICAgICAgICBpZiAoIWluZGljZXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICAgICAgeworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKQEAgLTI5MDksMTAgKzI5MTksMTAgQEAKICAgICB9CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7Ci0gICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLwogICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KQEAgLTI5OTYsNyArMzAwNiw3IEBACiB9OwogCiAKLS8qIHBlcm11dGF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKiBwZXJtdXRhdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIGRlZiBwZXJtdXRhdGlvbnMoaXRlcmFibGUsIHI9Tm9uZSk6CiAgICAgJ3Blcm11dGF0aW9ucyhyYW5nZSgzKSwgMikgLS0+ICgwLDEpICgwLDIpICgxLDApICgxLDIpICgyLDApICgyLDEpJwpAQCAtMzAyMywxMiArMzAzMywxMiBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIGVsZW1lbnQgaW4gdGhlIHBvb2wgKi8KLSAgICBQeV9zc2l6ZV90ICpjeWNsZXM7ICAgICAgICAgICAgICAgICAvKiBvbmUgcm9sbG92ZXIgY291bnRlciBwZXIgZWxlbWVudCBpbiB0aGUgcmVzdWx0ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgcGVybXV0YXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBlbGVtZW50IGluIHRoZSBwb29sICovCisgICAgUHlfc3NpemVfdCAqY3ljbGVzOyAgICAgLyogb25lIHJvbGxvdmVyIGNvdW50ZXIgcGVyIGVsZW1lbnQgaW4gdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcGVybXV0YXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHBlcm11dGF0aW9uc190eXBlOwpAQCAtMzI0Myw3ICszMjUzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOwogICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5pbmRpY2VzW2ldKTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0zMjUzLDggKzMyNjMsNyBAQAogICAgICAgICBjeWNsZXMgPSBQeVR1cGxlX05ldyhwby0+cik7CiAgICAgICAgIGlmIChjeWNsZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaT0wIDsgaTxwby0+ciA7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5jeWNsZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTMyODcsMTUgKzMyOTYsMTIgQEAKICAgICB9CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fAotICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpCi0gICAgeworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8bjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShpbmRpY2VzLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOwogICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0zMzA4LDggKzMzMTQsNyBAQAogICAgICAgICBwby0+aW5kaWNlc1tpXSA9IGluZGV4OwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShjeWNsZXMsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTMzNTAsMTEgKzMzNTUsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwZXJtdXRhdGlvbnNfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHBlcm11dGF0aW9uc29iamVjdCksICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTMzNzEsMTMgKzMzNzYsMTMgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXBlcm11dGF0aW9uc190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylwZXJtdXRhdGlvbnNfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIChpdGVybmV4dGZ1bmMpcGVybXV0YXRpb25zX25leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgcGVybXVhdGlvbnNfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTMzODgsMTEgKzMzOTMsMTEgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgcGVybXV0YXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBwZXJtdXRhdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCi0vKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTM0NTksOSArMzQ2NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9uZXh0KGFjY3VtdWxhdGVvYmplY3QgKmx6KQogewotICAgIFB5T2JqZWN0ICp2YWwsICpvbGR0b3RhbCwgKm5ld3RvdGFsOworICAgIFB5T2JqZWN0ICp2YWwsICpuZXd0b3RhbDsKIAotICAgIHZhbCA9IFB5SXRlcl9OZXh0KGx6LT5pdCk7CisgICAgdmFsID0gKCpQeV9UWVBFKGx6LT5pdCktPnRwX2l0ZXJuZXh0KShsei0+aXQpOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM0NzksMTEgKzM0ODQsOCBAQAogICAgIGlmIChuZXd0b3RhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG9sZHRvdGFsID0gbHotPnRvdGFsOwotICAgIGx6LT50b3RhbCA9IG5ld3RvdGFsOwotICAgIFB5X0RFQ1JFRihvbGR0b3RhbCk7Ci0KICAgICBQeV9JTkNSRUYobmV3dG90YWwpOworICAgIFB5X1NFVFJFRihsei0+dG90YWwsIG5ld3RvdGFsKTsKICAgICByZXR1cm4gbmV3dG90YWw7CiB9CiAKQEAgLTM1MTAsNyArMzUxMiw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pTyIsIFB5X1RZUEUobHopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5pdCwgbHotPmJpbm9wP2x6LT5iaW5vcDpQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT50b3RhbD9sei0+dG90YWw6UHlfTm9uZSk7Ci0gfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9zZXRzdGF0ZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQpAQCAtMzY3Miw3ICszNjc0LDcgQEAKIAogICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShzZWxlY3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChvayA9PSAxKQorICAgICAgICBpZiAob2sgPiAwKQogICAgICAgICAgICAgcmV0dXJuIGRhdHVtOwogICAgICAgICBQeV9ERUNSRUYoZGF0dW0pOwogICAgICAgICBpZiAob2sgPCAwKQpAQCAtMzY4NSw3ICszNjg3LDcgQEAKIHsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKICAgICAgICAgbHotPmRhdGEsIGx6LT5zZWxlY3RvcnMpOwotICAgIH0KK30KIAogc3RhdGljIFB5TWV0aG9kRGVmIGNvbXByZXNzX21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21wcmVzc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCkBAIC0zNzA0LDQ0ICszNzA2LDQ0IEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5jb21wcmVzcyIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihjb21wcmVzc29iamVjdCksICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpY29tcHJlc3NfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8Ci0gICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvbXByZXNzX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpY29tcHJlc3NfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY29tcHJlc3NfbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGNvbXByZXNzX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgY29tcHJlc3NfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0zODIyLDggKzM4MjQsNyBAQAogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzg0Miw5ICszODQzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWx0ZXJmYWxzZV9yZWR1Y2UoZmlsdGVyZmFsc2VvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICBsei0+ZnVuYywgbHotPml0KTsKLSAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyZmFsc2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcmZhbHNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKQEAgLTM4NjQsNyArMzg2NCw3IEBACiAgICAgc2l6ZW9mKGZpbHRlcmZhbHNlb2JqZWN0KSwgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTM4ODIsNyArMzg4Miw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGZpbHRlcmZhbHNlX2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZmlsdGVyZmFsc2VfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWZpbHRlcmZhbHNlX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtNDEzNCwxNSArNDEzNCwxNSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBjb3VudF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvdW50X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpY291bnRfdHJhdmVyc2UsICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY291bnRfbmV4dCwgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC00MzA4LDkgKzQzMDgsNyBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKLS8qIHppcGxvbmdlc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgorLyogemlwbG9uZ2VzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNDM0OSw3ICs0MzQ3LDcgQEAKICAgICBpdHR1cGxlID0gUHlUdXBsZV9OZXcodHVwbGVzaXplKTsKICAgICBpZiAoaXR0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGk9MDsgaSA8IHR1cGxlc2l6ZTsgKytpKSB7CisgICAgZm9yIChpPTA7IGkgPCB0dXBsZXNpemU7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbSk7CiAgICAgICAgIGlmIChpdCA9PSBOVUxMKSB7CkBAIC00NDkwLDYgKzQ0ODgsNyBAQAogICAgICAqLwogICAgIGludCBpOwogICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoUHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSkpOworCiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTA7IGk8UHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSk7IGkrKykgewpAQCAtNDU0MCw3ICs0NTM5LDcgQEAKICAgICBzaXplb2YoemlwbG9uZ2VzdG9iamVjdCksICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNDU1Nyw4ICs0NTU2LDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgemlwX2xvbmdlc3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXppcF9sb25nZXN0X3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIHppcF9sb25nZXN0X2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpemlwX2xvbmdlc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC00NTc0LDcgKzQ1NzMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICB6aXBfbG9uZ2VzdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHppcF9sb25nZXN0X25ldywgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggZTRjOTU1ZS4uNGNiZTM3NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTcsNiArNyw5IEBACiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaWZkZWYgSEFWRV9JT19ICisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgogI2lmZGVmIEhBVkVfRkNOVExfSAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjZW5kaWYKQEAgLTQyLDExICs0NSwxMSBAQAogI2RlZmluZSBQUk9HUkFNX09QVFMgQkFTRV9PUFRTCiAKIC8qIFNob3J0IHVzYWdlIG1lc3NhZ2UgKHdpdGggJXMgZm9yIGFyZ3YwKSAqLwotc3RhdGljIGNoYXIgKnVzYWdlX2xpbmUgPQorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfbGluZVtdID0KICJ1c2FnZTogJWxzIFtvcHRpb25dIC4uLiBbLWMgY21kIHwgLW0gbW9kIHwgZmlsZSB8IC1dIFthcmddIC4uLlxuIjsKIAogLyogTG9uZyB1c2FnZSBtZXNzYWdlLCBzcGxpdCBpbnRvIHBhcnRzIDwgNTEyIGJ5dGVzICovCi1zdGF0aWMgY2hhciAqdXNhZ2VfMSA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8xW10gPSAiXAogT3B0aW9ucyBhbmQgYXJndW1lbnRzIChhbmQgY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMpOlxuXAogLWIgICAgIDogaXNzdWUgd2FybmluZ3MgYWJvdXQgc3RyKGJ5dGVzX2luc3RhbmNlKSwgc3RyKGJ5dGVhcnJheV9pbnN0YW5jZSlcblwKICAgICAgICAgIGFuZCBjb21wYXJpbmcgYnl0ZXMvYnl0ZWFycmF5IHdpdGggc3RyLiAoLWJiOiBpc3N1ZSBlcnJvcnMpXG5cCkBAIC01Niw3ICs1OSw3IEBACiAtRSAgICAgOiBpZ25vcmUgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHN1Y2ggYXMgUFlUSE9OUEFUSClcblwKIC1oICAgICA6IHByaW50IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0IChhbHNvIC0taGVscClcblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfMiA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8yW10gPSAiXAogLWkgICAgIDogaW5zcGVjdCBpbnRlcmFjdGl2ZWx5IGFmdGVyIHJ1bm5pbmcgc2NyaXB0OyBmb3JjZXMgYSBwcm9tcHQgZXZlblxuXAogICAgICAgICAgaWYgc3RkaW4gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdGVybWluYWw7IGFsc28gUFlUSE9OSU5TUEVDVD14XG5cCiAtSSAgICAgOiBpc29sYXRlIFB5dGhvbiBmcm9tIHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQgKGltcGxpZXMgLUUgYW5kIC1zKVxuXApAQCAtNjcsMTkgKzcwLDIwIEBACiAtcyAgICAgOiBkb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aDsgYWxzbyBQWVRIT05OT1VTRVJTSVRFXG5cCiAtUyAgICAgOiBkb24ndCBpbXBseSAnaW1wb3J0IHNpdGUnIG9uIGluaXRpYWxpemF0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzMgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfM1tdID0gIlwKIC11ICAgICA6IHVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyLCBzdGRpbiBhbHdheXMgYnVmZmVyZWQ7XG5cCiAgICAgICAgICBhbHNvIFBZVEhPTlVOQlVGRkVSRUQ9eFxuXAogICAgICAgICAgc2VlIG1hbiBwYWdlIGZvciBkZXRhaWxzIG9uIGludGVybmFsIGJ1ZmZlcmluZyByZWxhdGluZyB0byAnLXUnXG5cCiAtdiAgICAgOiB2ZXJib3NlICh0cmFjZSBpbXBvcnQgc3RhdGVtZW50cyk7IGFsc28gUFlUSE9OVkVSQk9TRT14XG5cCiAgICAgICAgICBjYW4gYmUgc3VwcGxpZWQgbXVsdGlwbGUgdGltZXMgdG8gaW5jcmVhc2UgdmVyYm9zaXR5XG5cCiAtViAgICAgOiBwcmludCB0aGUgUHl0aG9uIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0IChhbHNvIC0tdmVyc2lvbilcblwKKyAgICAgICAgIHdoZW4gZ2l2ZW4gdHdpY2UsIHByaW50IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkXG5cCiAtVyBhcmcgOiB3YXJuaW5nIGNvbnRyb2w7IGFyZyBpcyBhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZW5vXG5cCiAgICAgICAgICBhbHNvIFBZVEhPTldBUk5JTkdTPWFyZ1xuXAogLXggICAgIDogc2tpcCBmaXJzdCBsaW5lIG9mIHNvdXJjZSwgYWxsb3dpbmcgdXNlIG9mIG5vbi1Vbml4IGZvcm1zIG9mICMhY21kXG5cCiAtWCBvcHQgOiBzZXQgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzQgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNFtdID0gIlwKIGZpbGUgICA6IHByb2dyYW0gcmVhZCBmcm9tIHNjcmlwdCBmaWxlXG5cCiAtICAgICAgOiBwcm9ncmFtIHJlYWQgZnJvbSBzdGRpbiAoZGVmYXVsdDsgaW50ZXJhY3RpdmUgbW9kZSBpZiBhIHR0eSlcblwKIGFyZyAuLi46IGFyZ3VtZW50cyBwYXNzZWQgdG8gcHJvZ3JhbSBpbiBzeXMuYXJndlsxOl1cblxuXApAQCAtODgsMjIgKzkyLDIzIEBACiBQWVRIT05QQVRIICAgOiAnJWxjJy1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyBwcmVmaXhlZCB0byB0aGVcblwKICAgICAgICAgICAgICAgIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoLiAgVGhlIHJlc3VsdCBpcyBzeXMucGF0aC5cblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNSA9CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV81W10gPQogIlBZVEhPTkhPTUUgICA6IGFsdGVybmF0ZSA8cHJlZml4PiBkaXJlY3RvcnkgKG9yIDxwcmVmaXg+JWxjPGV4ZWNfcHJlZml4PikuXG4iCiAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuXG4iCiAiUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuXG4iCiAiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKLSJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAotIjsKLXN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuXAotICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZVxuXAotICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcblwKLSAgIHByZWRpY3RhYmxlIHNlZWQuXG5cCi0iOworIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG4iOworc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNltdID0KKyJQWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcbiIKKyIgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG4iCisiICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcbiIKKyIgICBwcmVkaWN0YWJsZSBzZWVkLlxuIgorIlBZVEhPTk1BTExPQzogc2V0IHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3NcbiIKKyIgICBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFVzZSBQWVRIT05NQUxMT0M9ZGVidWcgdG8gaW5zdGFsbCBkZWJ1Z1xuIgorIiAgIGhvb2tzLlxuIjsKIAogc3RhdGljIGludAotdXNhZ2UoaW50IGV4aXRjb2RlLCB3Y2hhcl90KiBwcm9ncmFtKQordXNhZ2UoaW50IGV4aXRjb2RlLCBjb25zdCB3Y2hhcl90KiBwcm9ncmFtKQogewogICAgIEZJTEUgKmYgPSBleGl0Y29kZSA/IHN0ZGVyciA6IHN0ZG91dDsKIApAQCAtMzQxLDYgKzM0Niw3IEBACiAgICAgaW50IGhlbHAgPSAwOwogICAgIGludCB2ZXJzaW9uID0gMDsKICAgICBpbnQgc2F3X3VuYnVmZmVyZWRfZmxhZyA9IDA7CisgICAgY2hhciAqb3B0OwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb24gPSBOVUxMOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbnMgPSBOVUxMOwpAQCAtMzY1LDYgKzM3MSwxMyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0MiKTsKKyAgICBpZiAoX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhvcHQpIDwgMCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAiRXJyb3IgaW4gUFlUSE9OTUFMTE9DOiB1bmtub3duIGFsbG9jYXRvciBcIiVzXCIhXG4iLCBvcHQpOworICAgICAgICBleGl0KDEpOworICAgIH0KKwogICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtNDczLDcgKzQ4Niw4IEBACiAgICAgICAgICAgICB3YXJuaW5nX29wdGlvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoX1B5T1Nfb3B0YXJnLCAtMSk7CiAgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb24gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbikgPT0gLTEpCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbHVyZSBpbiBoYW5kbGluZyBvZiAtVyBhcmd1bWVudCIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdfb3B0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MDIsNyArNTE2LDcgQEAKICAgICAgICAgcmV0dXJuIHVzYWdlKDAsIGFyZ3ZbMF0pOwogCiAgICAgaWYgKHZlcnNpb24pIHsKLSAgICAgICAgcHJpbnRmKCJQeXRob24gJXNcbiIsIFBZX1ZFUlNJT04pOworICAgICAgICBwcmludGYoIlB5dGhvbiAlc1xuIiwgdmVyc2lvbiA+PSAyID8gUHlfR2V0VmVyc2lvbigpIDogUFlfVkVSU0lPTik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNjU0LDcgKzY2OCw3IEBACiAgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZSh3YnVmKTsKIAogICAgICAgICAgICAgLyogRG9uJ3QgZnJlZSB3YnVmLCB0aGUgYXJndW1lbnQgdG8gUHlfU2V0UHJvZ3JhbU5hbWUKLSAgICAgICAgICAgICAqIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBQeV9GaW5hbGl6ZSBpcyBjYWxsZWQuCisgICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCBQeV9GaW5hbGl6ZUV4IGlzIGNhbGxlZC4KICAgICAgICAgICAgICAqLwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CkBAIC02OTMsNyArNzA3LDggQEAKICAgICBQeVN5c19TZXRBcmd2KGFyZ2MtX1B5T1Nfb3B0aW5kLCBhcmd2K19QeU9TX29wdGluZCk7CiAKICAgICBpZiAoKFB5X0luc3BlY3RGbGFnIHx8IChjb21tYW5kID09IE5VTEwgJiYgZmlsZW5hbWUgPT0gTlVMTCAmJiBtb2R1bGUgPT0gTlVMTCkpICYmCi0gICAgICAgIGlzYXR0eShmaWxlbm8oc3RkaW4pKSkgeworICAgICAgICBpc2F0dHkoZmlsZW5vKHN0ZGluKSkgJiYKKyAgICAgICAgIVB5X0lzb2xhdGVkRmxhZykgewogICAgICAgICBQeU9iamVjdCAqdjsKICAgICAgICAgdiA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgicmVhZGxpbmUiKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTc4NSw3ICs4MDAsMTEgQEAKICAgICAgICAgc3RzID0gUHlSdW5fQW55RmlsZUZsYWdzKHN0ZGluLCAiPHN0ZGluPiIsICZjZikgIT0gMDsKICAgICB9CiAKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIC8qIFZhbHVlIHVubGlrZWx5IHRvIGJlIGNvbmZ1c2VkIHdpdGggYSBub24tZXJyb3IgZXhpdCBzdGF0dXMgb3IKKyAgICAgICAgb3RoZXIgc3BlY2lhbCBtZWFuaW5nICovCisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKICNpZmRlZiBfX0lOU1VSRV9fCiAgICAgLyogSW5zdXJlKysgaXMgYSBtZW1vcnkgYW5hbHlzaXMgdG9vbCB0aGF0IGFpZHMgaW4gZGlzY292ZXJpbmcKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKaW5kZXggYjk0NWJkNi4uOTVlYTRmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKQEAgLTg3NSw3ICs4NzUsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbWF0aF8yKFB5T2JqZWN0ICphcmdzLCBkb3VibGUgKCpmdW5jKSAoZG91YmxlLCBkb3VibGUpLCBjaGFyICpmdW5jbmFtZSkKK21hdGhfMihQeU9iamVjdCAqYXJncywgZG91YmxlICgqZnVuYykgKGRvdWJsZSwgZG91YmxlKSwgY29uc3QgY2hhciAqZnVuY25hbWUpCiB7CiAgICAgUHlPYmplY3QgKm94LCAqb3k7CiAgICAgZG91YmxlIHgsIHksIHI7CkBAIC0xNjcyLDcgKzE2NzIsNyBAQAogICAgaW4gdGhhdCBpbnQgaXMgbGFyZ2VyIHRoYW4gUFlfU1NJWkVfVF9NQVguICovCiAKIHN0YXRpYyBQeU9iamVjdCoKLWxvZ2hlbHBlcihQeU9iamVjdCogYXJnLCBkb3VibGUgKCpmdW5jKShkb3VibGUpLCBjaGFyICpmdW5jbmFtZSkKK2xvZ2hlbHBlcihQeU9iamVjdCogYXJnLCBkb3VibGUgKCpmdW5jKShkb3VibGUpLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIHsKICAgICAvKiBJZiBpdCBpcyBpbnQsIGRvIGl0IG91cnNlbHZlcy4gKi8KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKQEAgLTIxNDQsNiArMjE0NCw3IEBACiAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInBpIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfUEkpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImUiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9FKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0YXUiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9UQVUpKTsgIC8qIDJwaSAqLwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKICNpZiAhZGVmaW5lZChQWV9OT19TSE9SVF9GTE9BVF9SRVBSKSB8fCBkZWZpbmVkKFB5X05BTikKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX25hbigpKSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCBmOTRhY2M3Li4wNGJjMDZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgTUQ1X0lOVDMyOyAvKiAzMi1iaXQgaW50ZWdlciAqLwotdHlwZWRlZiBQWV9MT05HX0xPTkcgTUQ1X0lOVDY0OyAvKiA2NC1iaXQgaW50ZWdlciAqLwordHlwZWRlZiBsb25nIGxvbmcgTUQ1X0lOVDY0OyAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCA0ZWI5Mjc0Li41ZjE2MTVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtOTMsNyArOTMsNyBAQAogICAgIFB5X3NzaXplX3QgIHNpemU7CiAgICAgUHlfc3NpemVfdCAgcG9zOyAgICAvKiByZWxhdGl2ZSB0byBvZmZzZXQgKi8KICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUFlfTE9OR19MT05HIG9mZnNldDsKKyAgICBsb25nIGxvbmcgb2Zmc2V0OwogI2Vsc2UKICAgICBvZmZfdCAgICAgICBvZmZzZXQ7CiAjZW5kaWYKQEAgLTM5Nyw4ICszOTcsNyBAQAogICAgIG1lbWNweSgmc2VsZi0+ZGF0YVtzZWxmLT5wb3NdLCBkYXRhLmJ1ZiwgZGF0YS5sZW4pOwogICAgIHNlbGYtPnBvcyArPSBkYXRhLmxlbjsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChkYXRhLmxlbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MzQsNyArNDMzLDcgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHNlbGYtPmZpbGVfaGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIERXT1JEIGxvdyxoaWdoOwotICAgICAgICBQWV9MT05HX0xPTkcgc2l6ZTsKKyAgICAgICAgbG9uZyBsb25nIHNpemU7CiAgICAgICAgIGxvdyA9IEdldEZpbGVTaXplKHNlbGYtPmZpbGVfaGFuZGxlLCAmaGlnaCk7CiAgICAgICAgIGlmIChsb3cgPT0gSU5WQUxJRF9GSUxFX1NJWkUpIHsKICAgICAgICAgICAgIC8qIEl0IG1pZ2h0IGJlIHRoYXQgdGhlIGZ1bmN0aW9uIGFwcGVhcnMgdG8gaGF2ZSBmYWlsZWQsCkBAIC00NDUsNyArNDQ0LDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoIWhpZ2ggJiYgbG93IDwgTE9OR19NQVgpCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWxvdyk7Ci0gICAgICAgIHNpemUgPSAoKChQWV9MT05HX0xPTkcpaGlnaCk8PDMyKSArIGxvdzsKKyAgICAgICAgc2l6ZSA9ICgoKGxvbmcgbG9uZyloaWdoKTw8MzIpICsgbG93OwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhzaXplKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnNpemUpOwpAQCAtMTIyNyw3ICsxMjI2LDcgQEAKIAogLyogQSBub3RlIG9uIHNpemVzIGFuZCBvZmZzZXRzOiB3aGlsZSB0aGUgYWN0dWFsIG1hcCBzaXplIG11c3QgaG9sZCBpbiBhCiAgICBQeV9zc2l6ZV90LCBib3RoIHRoZSB0b3RhbCBmaWxlIHNpemUgYW5kIHRoZSBzdGFydCBvZmZzZXQgY2FuIGJlIGxvbmdlcgotICAgdGhhbiBhIFB5X3NzaXplX3QsIHNvIHdlIHVzZSBQWV9MT05HX0xPTkcgd2hpY2ggaXMgYWx3YXlzIDY0LWJpdC4KKyAgIHRoYW4gYSBQeV9zc2l6ZV90LCBzbyB3ZSB1c2UgbG9uZyBsb25nIHdoaWNoIGlzIGFsd2F5cyA2NC1iaXQuCiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzNSw3ICsxMjM0LDcgQEAKIHsKICAgICBtbWFwX29iamVjdCAqbV9vYmo7CiAgICAgUHlfc3NpemVfdCBtYXBfc2l6ZTsKLSAgICBQWV9MT05HX0xPTkcgb2Zmc2V0ID0gMCwgc2l6ZTsKKyAgICBsb25nIGxvbmcgb2Zmc2V0ID0gMCwgc2l6ZTsKICAgICBEV09SRCBvZmZfaGk7ICAgICAgIC8qIHVwcGVyIDMyIGJpdHMgb2Ygb2Zmc2V0ICovCiAgICAgRFdPUkQgb2ZmX2xvOyAgICAgICAvKiBsb3dlciAzMiBiaXRzIG9mIG9mZnNldCAqLwogICAgIERXT1JEIHNpemVfaGk7ICAgICAgLyogdXBwZXIgMzIgYml0cyBvZiBzaXplICovCkBAIC0xMjk2LDEwICsxMjk1LDYgQEAKICAgICAgKi8KICAgICBpZiAoZmlsZW5vICE9IC0xICYmIGZpbGVubyAhPSAwKSB7CiAgICAgICAgIC8qIEVuc3VyZSB0aGF0IGZpbGVubyBpcyB3aXRoaW4gdGhlIENSVCdzIHZhbGlkIHJhbmdlICovCi0gICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVubykpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyk7CiAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMzQ5LDcgKzEzNDQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0Vycihkd0Vycik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNpemUgPSAoKChQWV9MT05HX0xPTkcpIGhpZ2gpIDw8IDMyKSArIGxvdzsKKyAgICAgICAgICAgIHNpemUgPSAoKChsb25nIGxvbmcpIGhpZ2gpIDw8IDMyKSArIGxvdzsKICAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBtbWFwIGFuIGVtcHR5IGZpbGUiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbmlzbW9kdWxlLmMgYi9Nb2R1bGVzL25pc21vZHVsZS5jCmluZGV4IDY0ZWI1ZGIuLmI2YTg1NWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbmlzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwpAQCAtNzYsMTEgKzc2LDcgQEAKIAogICAgICpwZml4ID0gMDsKICAgICBmb3IgKGk9MDsgYWxpYXNlc1tpXS5hbGlhcyAhPSAwTDsgaSsrKSB7Ci0gICAgICAgIGlmICghc3RyY21wIChhbGlhc2VzW2ldLmFsaWFzLCBtYXApKSB7Ci0gICAgICAgICAgICAqcGZpeCA9IGFsaWFzZXNbaV0uZml4OwotICAgICAgICAgICAgcmV0dXJuIGFsaWFzZXNbaV0ubWFwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghc3RyY21wIChhbGlhc2VzW2ldLm1hcCwgbWFwKSkgeworICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5hbGlhcywgbWFwKSB8fCAhc3RyY21wIChhbGlhc2VzW2ldLm1hcCwgbWFwKSkgewogICAgICAgICAgICAgKnBmaXggPSBhbGlhc2VzW2ldLmZpeDsKICAgICAgICAgICAgIHJldHVybiBhbGlhc2VzW2ldLm1hcDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCmluZGV4IDU0MjMzMDguLjVmMDUwNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYworKysgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKQEAgLTMxLDkgKzMxLDEzIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2lmZGVmIF9fQU5EUk9JRF9fCisjaW5jbHVkZSA8bGludXgvc291bmRjYXJkLmg+CisjZWxzZQogI2luY2x1ZGUgPHN5cy9zb3VuZGNhcmQuaD4KKyNlbmRpZgogCi0jaWYgZGVmaW5lZChsaW51eCkKKyNpZmRlZiBfX2xpbnV4X18KIAogI2lmbmRlZiBIQVZFX1NURElOVF9ICiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludDMyX3Q7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL292ZXJsYXBwZWQuYyBiL01vZHVsZXMvb3ZlcmxhcHBlZC5jCmluZGV4IGY4NWU1YmMuLjBhYTg2NTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3ZlcmxhcHBlZC5jCisrKyBiL01vZHVsZXMvb3ZlcmxhcHBlZC5jCkBAIC05NzMsMjggKzk3MywyOCBAQAogc3RhdGljIGludAogcGFyc2VfYWRkcmVzcyhQeU9iamVjdCAqb2JqLCBTT0NLQUREUiAqQWRkcmVzcywgaW50IExlbmd0aCkKIHsKLSAgICBjaGFyICpIb3N0OworICAgIFB5X1VOSUNPREUgKkhvc3Q7CiAgICAgdW5zaWduZWQgc2hvcnQgUG9ydDsKICAgICB1bnNpZ25lZCBsb25nIEZsb3dJbmZvOwogICAgIHVuc2lnbmVkIGxvbmcgU2NvcGVJZDsKIAogICAgIG1lbXNldChBZGRyZXNzLCAwLCBMZW5ndGgpOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAic0giLCAmSG9zdCwgJlBvcnQpKQorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInVIIiwgJkhvc3QsICZQb3J0KSkKICAgICB7CiAgICAgICAgIEFkZHJlc3MtPnNhX2ZhbWlseSA9IEFGX0lORVQ7Ci0gICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NBKEhvc3QsIEFGX0lORVQsIE5VTEwsIEFkZHJlc3MsICZMZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzVyhIb3N0LCBBRl9JTkVULCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFNldEZyb21XaW5kb3dzRXJyKFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICAoKFNPQ0tBRERSX0lOKilBZGRyZXNzKS0+c2luX3BvcnQgPSBodG9ucyhQb3J0KTsKICAgICAgICAgcmV0dXJuIExlbmd0aDsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJzSGtrIiwgJkhvc3QsICZQb3J0LCAmRmxvd0luZm8sICZTY29wZUlkKSkKKyAgICBlbHNlIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInVIa2siLCAmSG9zdCwgJlBvcnQsICZGbG93SW5mbywgJlNjb3BlSWQpKQogICAgIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgQWRkcmVzcy0+c2FfZmFtaWx5ID0gQUZfSU5FVDY7Ci0gICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NBKEhvc3QsIEFGX0lORVQ2LCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc1coSG9zdCwgQUZfSU5FVDYsIE5VTEwsIEFkZHJlc3MsICZMZW5ndGgpIDwgMCkgewogICAgICAgICAgICAgU2V0RnJvbVdpbmRvd3NFcnIoV1NBR2V0TGFzdEVycm9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwppbmRleCA2NDcxYjhlLi5iMjU2Njk1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC01Myw3ICs1Myw3IEBACiAvKiAgU3RyaW5nIGNvbnN0YW50cyB1c2VkIHRvIGluaXRpYWxpemUgbW9kdWxlIGF0dHJpYnV0ZXMuCiAgKgogICovCi1zdGF0aWMgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHBhcnNlcl9jb3B5cmlnaHRfc3RyaW5nW10gPQogIkNvcHlyaWdodCAxOTk1LTE5OTYgYnkgVmlyZ2luaWEgUG9seXRlY2huaWMgSW5zdGl0dXRlICYgU3RhdGVcblwKIFVuaXZlcnNpdHksIEJsYWNrc2J1cmcsIFZpcmdpbmlhLCBVU0EsIGFuZCBGcmVkIEwuIERyYWtlLCBKci4sIFJlc3RvbixcblwKIFZpcmdpbmlhLCBVU0EuICBQb3J0aW9ucyBjb3B5cmlnaHQgMTk5MS0xOTk1IGJ5IFN0aWNodGluZyBNYXRoZW1hdGlzY2hcblwKQEAgLTYzLDcgKzYzLDcgQEAKIFB5RG9jX1NUUlZBUihwYXJzZXJfZG9jX3N0cmluZywKICJUaGlzIGlzIGFuIGludGVyZmFjZSB0byBQeXRob24ncyBpbnRlcm5hbCBwYXJzZXIuIik7CiAKLXN0YXRpYyBjaGFyIHBhcnNlcl92ZXJzaW9uX3N0cmluZ1tdID0gIjAuNSI7CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOwogCiAKIHR5cGVkZWYgUHlPYmplY3QqICgqU2VxTWFrZXIpIChQeV9zc2l6ZV90IGxlbmd0aCk7CkBAIC01NzgsMTMgKzU3OCwxMyBAQAogfQogCiAKLS8qICBlcnJfc3RyaW5nKGNoYXIqIG1lc3NhZ2UpCisvKiAgZXJyX3N0cmluZyhjb25zdCBjaGFyKiBtZXNzYWdlKQogICoKICAqICBTZXRzIHRoZSBlcnJvciBzdHJpbmcgZm9yIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIFBhcnNlckVycm9yLgogICoKICAqLwogc3RhdGljIHZvaWQKLWVycl9zdHJpbmcoY2hhciAqbWVzc2FnZSkKK2Vycl9zdHJpbmcoY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKICAgICBQeUVycl9TZXRTdHJpbmcocGFyc2VyX2Vycm9yLCBtZXNzYWdlKTsKIH0KQEAgLTU5Nyw3ICs1OTcsNyBAQAogICoKICAqLwogc3RhdGljIFB5T2JqZWN0KgotcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQorcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQogewogICAgIGNoYXIqICAgICBzdHJpbmcgPSAwOwogICAgIFB5T2JqZWN0KiByZXMgICAgPSAwOwpAQCAtNjcwLDkgKzY3MCw3NSBAQAogCiAKIHN0YXRpYyBub2RlKiBidWlsZF9ub2RlX3RyZWUoUHlPYmplY3QgKnR1cGxlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9lbmNvZGluZ19kZWNsKG5vZGUgKnRyZWUpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub2RlKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHR5cGUgPSBUWVBFKHRyZWUpOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgZGZhICpudF9kZmE7CisgICAgc3RhdGUgKmRmYV9zdGF0ZTsKKyAgICBpbnQgcG9zLCBhcmM7CisKKyAgICBhc3NlcnQoSVNOT05URVJNSU5BTCh0eXBlKSk7CisgICAgdHlwZSAtPSBOVF9PRkZTRVQ7CisgICAgaWYgKHR5cGUgPj0gX1B5UGFyc2VyX0dyYW1tYXIuZ19uZGZhcykgeworICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSAlZC4iLCBUWVBFKHRyZWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG50X2RmYSA9ICZfUHlQYXJzZXJfR3JhbW1hci5nX2RmYVt0eXBlXTsKKyAgICBSRVEodHJlZSwgbnRfZGZhLT5kX3R5cGUpOworCisgICAgLyogUnVuIHRoZSBERkEgZm9yIHRoaXMgbm9udGVybWluYWwuICovCisgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtudF9kZmEtPmRfaW5pdGlhbF07CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBuY2g7ICsrcG9zKSB7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgcG9zKTsKKyAgICAgICAgaW50IGNoX3R5cGUgPSBUWVBFKGNoKTsKKyAgICAgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgICAgICBzaG9ydCBhX2xhYmVsID0gZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsOworICAgICAgICAgICAgYXNzZXJ0KGFfbGFiZWwgPCBfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICAgICAgaWYgKF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZSA9PSBjaF90eXBlKSB7CisgICAgIAkgICAgICAgIC8qIFRoZSBjaGlsZCBpcyBhY2NlcHRhYmxlOyBpZiBub24tdGVybWluYWwsIHZhbGlkYXRlIGl0IHJlY3Vyc2l2ZWx5LiAqLworICAgICAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKGNoX3R5cGUpICYmICF2YWxpZGF0ZV9ub2RlKGNoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHN0YXRlLCBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBjaGlsZC4gKi8KKyAgICAgICAgICAgICAgICBkZmFfc3RhdGUgPSAmbnRfZGZhLT5kX3N0YXRlW2RmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2Fycm93XTsKKyAgICAgICAgICAgICAgICBnb3RvIGFyY19mb3VuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBXaGF0IHdvdWxkIHRoaXMgc3RhdGUgaGF2ZSBhY2NlcHRlZD8gKi8KKyAgICAgICAgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmMtPmFfbGJsOworICAgICAgICAgICAgaW50IG5leHRfdHlwZTsKKyAgICAgICAgICAgIGlmICghYV9sYWJlbCkgLyogV291bGRuJ3QgYWNjZXB0IGFueSBtb3JlIGNoaWxkcmVuICovCisgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX251bV9jaGlsZHJlbjsKKworICAgICAgICAgICAgbmV4dF90eXBlID0gX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9sYWJlbFthX2xhYmVsXS5sYl90eXBlOworICAgICAgICAgICAgaWYgKElTTk9OVEVSTUlOQUwobmV4dF90eXBlKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90eXBlLCBjaF90eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiSWxsZWdhbCB0ZXJtaW5hbDogZXhwZWN0ZWQgJXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5UGFyc2VyX1Rva2VuTmFtZXNbbmV4dF90eXBlXSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCithcmNfZm91bmQ6CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvKiBBcmUgd2UgaW4gYSBmaW5hbCBzdGF0ZT8gSWYgc28sIHJldHVybiAxIGZvciBzdWNjZXNzZnVsIHZhbGlkYXRpb24uICovCisgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgIGlmICghZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworaWxsZWdhbF9udW1fY2hpbGRyZW46CisgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKKyAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG50X2RmYS0+ZF9uYW1lKTsKKyAgICByZXR1cm4gMDsKK30KIAogLyogIFB5T2JqZWN0KiBwYXJzZXJfdHVwbGUyc3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogICoKQEAgLTY4MSw3ICs3NDcsNyBAQAogICogIHR1cGxlIGNhbiBiZSB2YWxpZGF0ZWQuICBJdCBkb2VzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGZpcnN0IGNvZGUgb2YgdGhlCiAgKiAgdHVwbGUsIGFuZCwgaWYgYWNjZXB0YWJsZSwgYnVpbGRzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIElmIHRoaXMKICAqICBzdGVwIHN1Y2NlZWRzLCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gaXMgdmFsaWRhdGVkIGFzIGZ1bGx5IGFzCi0gKiAgcG9zc2libGUgd2l0aCB0aGUgdmFyaW91cyB2YWxpZGF0ZV8qKCkgcm91dGluZXMgZGVmaW5lZCBiZWxvdy4KKyAqICBwb3NzaWJsZSB3aXRoIHRoZSByZWN1cnNpdmUgdmFsaWRhdGVfbm9kZSgpIHJvdXRpbmUgZGVmaW5lZCBhYm92ZS4KICAqCiAgKiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNoYW5nZWQgaWYgc3VwcG9ydCBpcyB0byBiZSBhZGRlZCBmb3IgUHlTVF9GUkFHTUVOVAogICogIFNUIG9iamVjdHMuCkBAIC03MTAsMzMgKzc3NiwzNSBAQAogICAgICAqLwogICAgIHRyZWUgPSBidWlsZF9ub2RlX3RyZWUodHVwbGUpOwogICAgIGlmICh0cmVlICE9IDApIHsKLSAgICAgICAgaW50IHN0YXJ0X3N5bSA9IFRZUEUodHJlZSk7Ci0gICAgICAgIGlmIChzdGFydF9zeW0gPT0gZXZhbF9pbnB1dCkgeworICAgICAgICBub2RlICp2YWxpZGF0aW9uX3Jvb3QgPSB0cmVlOworICAgICAgICBpbnQgdHJlZV90eXBlID0gMDsKKyAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7CisgICAgICAgIGNhc2UgZXZhbF9pbnB1dDoKICAgICAgICAgICAgIC8qICBNaWdodCBiZSBhbiBldmFsIGZvcm0uICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHJfdHJlZSh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX0VYUFIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBmaWxlX2lucHV0KSB7Ci0gICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2ZpbGVfaW5wdXQodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3RhcnRfc3ltID09IGVuY29kaW5nX2RlY2wpIHsKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfRVhQUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGVuY29kaW5nX2RlY2w6CiAgICAgICAgICAgICAvKiBUaGlzIGxvb2tzIGxpa2UgYW4gZW5jb2RpbmdfZGVjbCBzbyBmYXIuICovCi0gICAgICAgICAgICBpZiAodmFsaWRhdGVfZW5jb2RpbmdfZGVjbCh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX1NVSVRFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChOQ0godHJlZSkgIT0gMSkKKyAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcm9vdCA9IENISUxEKHRyZWUsIDApOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKKyAgICAgICAgICAgIC8qICBUaGlzIGxvb2tzIGxpa2UgYW4gZXhlYyBmb3JtIHNvIGZhci4gICovCisKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfU1VJVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qICBUaGlzIGlzIGEgZnJhZ21lbnQsIGF0IGJlc3QuICovCiAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICAgICAgICAgIGVycl9zdHJpbmcoInBhcnNlIHRyZWUgZG9lcyBub3QgdXNlIGEgdmFsaWQgc3RhcnQgc3ltYm9sIik7CisgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbGlkYXRlX25vZGUodmFsaWRhdGlvbl9yb290KSkKKyAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIHRyZWVfdHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwogICAgIH0KICAgICAvKiAgTWFrZSBzdXJlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBhbGwgZXJyb3JzLiAgV2Ugc2hvdWxkIG5ldmVyCiAgICAgICogIGdldCB0aGlzLCBidXQgd2UnZCBkbyB3ZWxsIHRvIGJlIHN1cmUgc29tZXRoaW5nIGlzIGRvbmUuCkBAIC04NDQsNyArOTEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUodGVtcCwgJmxlbik7CisgICAgICAgICAgICB0ZW1wX3N0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHRlbXAsICZsZW4pOwogICAgICAgICAgICAgaWYgKHRlbXBfc3RyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihlbGVtKTsKQEAgLTk0NSw3ICsxMDEzLDcgQEAKICAgICAgICAgICAgIGlmIChyZXMgJiYgZW5jb2RpbmcpIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZW1wOwotICAgICAgICAgICAgICAgIHRlbXAgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShlbmNvZGluZywgJmxlbik7CisgICAgICAgICAgICAgICAgdGVtcCA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGVuY29kaW5nLCAmbGVuKTsKICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmcpOwpAQCAtOTgxLDI0MzMgKzEwNDksNiBAQAogfQogCiAKLS8qCi0gKiAgVmFsaWRhdGlvbiByb3V0aW5lcyB1c2VkIHdpdGhpbiB0aGUgdmFsaWRhdGlvbiBzZWN0aW9uOgotICovCi1zdGF0aWMgaW50IHZhbGlkYXRlX3Rlcm1pbmFsKG5vZGUgKnRlcm1pbmFsLCBpbnQgdHlwZSwgY2hhciAqc3RyaW5nKTsKLQotI2RlZmluZSB2YWxpZGF0ZV9hbXBlcnNhbmQoY2gpICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBBTVBFUiwgIiYiKQotI2RlZmluZSB2YWxpZGF0ZV9jaXJjdW1mbGV4KGNoKSB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgQ0lSQ1VNRkxFWCwgIl4iKQotI2RlZmluZSB2YWxpZGF0ZV9jb2xvbihjaCkgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBDT0xPTiwgIjoiKQotI2RlZmluZSB2YWxpZGF0ZV9jb21tYShjaCkgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBDT01NQSwgIiwiKQotI2RlZmluZSB2YWxpZGF0ZV9kZWRlbnQoY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIERFREVOVCwgIiIpCi0jZGVmaW5lIHZhbGlkYXRlX2VxdWFsKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIEVRVUFMLCAiPSIpCi0jZGVmaW5lIHZhbGlkYXRlX2luZGVudChjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgSU5ERU5ULCAoY2hhciopTlVMTCkKLSNkZWZpbmUgdmFsaWRhdGVfbHBhcmVuKGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIExQQVIsICIoIikKLSNkZWZpbmUgdmFsaWRhdGVfbmV3bGluZShjaCkgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgIE5FV0xJTkUsIChjaGFyKilOVUxMKQotI2RlZmluZSB2YWxpZGF0ZV9ycGFyZW4oY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgUlBBUiwgIikiKQotI2RlZmluZSB2YWxpZGF0ZV9zZW1pKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgU0VNSSwgIjsiKQotI2RlZmluZSB2YWxpZGF0ZV9zdGFyKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgU1RBUiwgIioiKQotI2RlZmluZSB2YWxpZGF0ZV92YmFyKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgVkJBUiwgInwiKQotI2RlZmluZSB2YWxpZGF0ZV9kb3VibGVzdGFyKGNoKSB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgRE9VQkxFU1RBUiwgIioqIikKLSNkZWZpbmUgdmFsaWRhdGVfZG90KGNoKSAgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgICBET1QsICIuIikKLSNkZWZpbmUgdmFsaWRhdGVfYXQoY2gpICAgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgICAgQVQsICJAIikKLSNkZWZpbmUgdmFsaWRhdGVfcmFycm93KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBSQVJST1csICItPiIpCi0jZGVmaW5lIHZhbGlkYXRlX25hbWUoY2gsIHN0cikgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBOQU1FLCBzdHIpCi0KLSNkZWZpbmUgVkFMSURBVEVSKG4pICAgIHN0YXRpYyBpbnQgdmFsaWRhdGVfIyNuKG5vZGUgKnRyZWUpCi0KLVZBTElEQVRFUihub2RlKTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKHNtYWxsX3N0bXQpOwotVkFMSURBVEVSKGNsYXNzKTsgICAgICAgICAgICAgICBWQUxJREFURVIobm9kZSk7Ci1WQUxJREFURVIocGFyYW1ldGVycyk7ICAgICAgICAgIFZBTElEQVRFUihzdWl0ZSk7Ci1WQUxJREFURVIodGVzdGxpc3QpOyAgICAgICAgICAgIFZBTElEQVRFUih2YXJhcmdzbGlzdCk7Ci1WQUxJREFURVIodmZwZGVmKTsKLVZBTElEQVRFUihzdG10KTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKHNpbXBsZV9zdG10KTsKLVZBTElEQVRFUihleHByX3N0bXQpOyAgICAgICAgICAgVkFMSURBVEVSKHBvd2VyKTsKLVZBTElEQVRFUihkZWxfc3RtdCk7Ci1WQUxJREFURVIocmV0dXJuX3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihyYWlzZV9zdG10KTsKLVZBTElEQVRFUihpbXBvcnRfc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKGltcG9ydF9zdG10KTsKLVZBTElEQVRFUihpbXBvcnRfbmFtZSk7ICAgICAgICAgVkFMSURBVEVSKHlpZWxkX3N0bXQpOwotVkFMSURBVEVSKGdsb2JhbF9zdG10KTsgICAgICAgICBWQUxJREFURVIobm9ubG9jYWxfc3RtdCk7Ci1WQUxJREFURVIoYXNzZXJ0X3N0bXQpOwotVkFMSURBVEVSKGNvbXBvdW5kX3N0bXQpOyAgICAgICBWQUxJREFURVIodGVzdF9vcl9zdGFyX2V4cHIpOwotVkFMSURBVEVSKHdoaWxlKTsgICAgICAgICAgICAgICBWQUxJREFURVIoZm9yKTsKLVZBTElEQVRFUih0cnkpOyAgICAgICAgICAgICAgICAgVkFMSURBVEVSKGV4Y2VwdF9jbGF1c2UpOwotVkFMSURBVEVSKHRlc3QpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoYW5kX3Rlc3QpOwotVkFMSURBVEVSKG5vdF90ZXN0KTsgICAgICAgICAgICBWQUxJREFURVIoY29tcGFyaXNvbik7Ci1WQUxJREFURVIoY29tcF9vcCk7Ci1WQUxJREFURVIoc3Rhcl9leHByKTsgICAgICAgICAgIFZBTElEQVRFUihleHByKTsKLVZBTElEQVRFUih4b3JfZXhwcik7ICAgICAgICAgICAgVkFMSURBVEVSKGFuZF9leHByKTsKLVZBTElEQVRFUihzaGlmdF9leHByKTsgICAgICAgICAgVkFMSURBVEVSKGFyaXRoX2V4cHIpOwotVkFMSURBVEVSKHRlcm0pOyAgICAgICAgICAgICAgICBWQUxJREFURVIoZmFjdG9yKTsKLVZBTElEQVRFUihhdG9tKTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWYpOwotVkFMSURBVEVSKHRyYWlsZXIpOyAgICAgICAgICAgICBWQUxJREFURVIoc3Vic2NyaXB0KTsKLVZBTElEQVRFUihzdWJzY3JpcHRsaXN0KTsgICAgICAgVkFMSURBVEVSKHNsaWNlb3ApOwotVkFMSURBVEVSKGV4cHJsaXN0KTsgICAgICAgICAgICBWQUxJREFURVIoZGljdG9yc2V0bWFrZXIpOwotVkFMSURBVEVSKGFyZ2xpc3QpOyAgICAgICAgICAgICBWQUxJREFURVIoYXJndW1lbnQpOwotVkFMSURBVEVSKGNvbXBfZm9yKTsKLVZBTElEQVRFUihjb21wX2l0ZXIpOyAgICAgICAgICAgVkFMSURBVEVSKGNvbXBfaWYpOwotVkFMSURBVEVSKHRlc3RsaXN0X2NvbXApOyAgICAgICBWQUxJREFURVIoeWllbGRfZXhwcik7Ci1WQUxJREFURVIob3JfdGVzdCk7Ci1WQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7Ci1WQUxJREFURVIoeWllbGRfYXJnKTsKLVZBTElEQVRFUihhc3luY19mdW5jZGVmKTsgICAgICAgVkFMSURBVEVSKGFzeW5jX3N0bXQpOwotVkFMSURBVEVSKGF0b21fZXhwcik7Ci0KLSN1bmRlZiBWQUxJREFURVIKLQotI2RlZmluZSBpc19ldmVuKG4pICAgICAgKCgobikgJiAxKSA9PSAwKQotI2RlZmluZSBpc19vZGQobikgICAgICAgKCgobikgJiAxKSA9PSAxKQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX250eXBlKG5vZGUgKm4sIGludCB0KQotewotICAgIGlmIChUWVBFKG4pICE9IHQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIkV4cGVjdGVkIG5vZGUgdHlwZSAlZCwgZ290ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICB0LCBUWVBFKG4pKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0KLS8qICBWZXJpZmllcyB0aGF0IHRoZSBudW1iZXIgb2YgY2hpbGQgbm9kZXMgaXMgZXhhY3RseSAnbnVtJywgcmFpc2luZwotICogIGFuIGV4Y2VwdGlvbiBpZiBpdCBpc24ndC4gIFRoZSBleGNlcHRpb24gbWVzc2FnZSBkb2VzIG5vdCBpbmRpY2F0ZQotICogIHRoZSBleGFjdCBudW1iZXIgb2Ygbm9kZXMsIGFsbG93aW5nIHRoaXMgdG8gYmUgdXNlZCB0byByYWlzZSB0aGUKLSAqICAicmlnaHQiIGV4Y2VwdGlvbiB3aGVuIHRoZSB3cm9uZyBudW1iZXIgb2Ygbm9kZXMgaXMgcHJlc2VudCBpbiBhCi0gKiAgc3BlY2lmaWMgdmFyaWFudCBvZiBhIHN0YXRlbWVudCdzIHN5bnRheC4gIFRoaXMgaXMgY29tbW9ubHkgdXNlZAotICogIGluIHRoYXQgZmFzaGlvbi4KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfbnVtbm9kZXMobm9kZSAqbiwgaW50IG51bSwgY29uc3QgY2hhciAqY29uc3QgbmFtZSkKLXsKLSAgICBpZiAoTkNIKG4pICE9IG51bSkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG5hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVybWluYWwobm9kZSAqdGVybWluYWwsIGludCB0eXBlLCBjaGFyICpzdHJpbmcpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0ZXJtaW5hbCwgdHlwZSkKLSAgICAgICAgICAgICAgICYmICgoc3RyaW5nID09IDApIHx8IChzdHJjbXAoc3RyaW5nLCBTVFIodGVybWluYWwpKSA9PSAwKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIHRlcm1pbmFsOiBleHBlY3RlZCBcIiVzXCIiLCBzdHJpbmcpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLS8qICBYICgnLCcgWCkgWycsJ10gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKG5vZGUgKnRyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdF9ub2RlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCp2YWxpZGF0ZV9jaGlsZF9mdW5jX2luYykobm9kZSAqLCBpbnQgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKCA7IHJlcyAmJiAqcG9zIDwgbmNoOyApIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKHRyZWUsIHBvcyk7Ci0gICAgICAgICAgICBpZiAoIXJlcyB8fCAqcG9zID49IG5jaCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsICgqcG9zKSsrKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIFggKCcsJyBYKSBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3Qobm9kZSAqdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmMpKG5vZGUgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaXN0X25vZGVfdHlwZV9uYW1lKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChuY2ggJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgbGlzdF9ub2RlX3R5cGUpKTsKLSAgICBpbnQgcG9zID0gMDsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIGxpc3Rfbm9kZV90eXBlX25hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yICggOyByZXMgJiYgcG9zIDwgbmNoOyApIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmMoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICAgICAgICAgIGlmICghcmVzIHx8IHBvcyA+PSBuY2gpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBwb3MrKykpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIHZhbGlkYXRlX2NsYXNzKCkKLSAqCi0gKiAgY2xhc3NkZWY6Ci0gKiAgICAgICdjbGFzcycgTkFNRSBbJygnIHRlc3RsaXN0ICcpJ10gJzonIHN1aXRlCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NsYXNzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNsYXNzZGVmKSAmJgotICAgICAgICAgICAgICAgICgobmNoID09IDQpIHx8IChuY2ggPT0gNikgfHwgKG5jaCA9PSA3KSkpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImNsYXNzIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJjbGFzcyIpOwotICAgIH0KLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKCh2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwgMikpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDMpKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIDQpKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSA2KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLDIpKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsMykpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGlmX3N0bXQ6Ci0gKiAgICAgICdpZicgdGVzdCAnOicgc3VpdGUgKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkqIFsnZWxzZScgJzonIHN1aXRlXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBpZl9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSA0KQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImlmIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICBpZiAocmVzICYmICgobmNoICUgNCkgPT0gMykpIHsKLSAgICAgICAgLyogIC4uLiAnZWxzZScgJzonIHN1aXRlICAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBuY2ggLSAzKSwgImVsc2UiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgICAgICBuY2ggLT0gMzsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJpZiIpOwotICAgIGlmICgobmNoICUgNCkgIT0gMCkKLSAgICAgICAgLyogV2lsbCBjYXRjaCB0aGUgY2FzZSBmb3IgbmNoIDwgNCAqLwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAwLCAiaWYiKTsKLSAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA+IDQpKSB7Ci0gICAgICAgIC8qICAuLi4gKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkrIC4uLiAgKi8KLSAgICAgICAgaW50IGogPSA0OwotICAgICAgICB3aGlsZSAoKGogPCBuY2gpICYmIHJlcykgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgaiksICJlbGlmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBqICsgMikpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBqICsgMSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgaiArIDMpKSk7Ci0gICAgICAgICAgICBqICs9IDQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBwYXJhbWV0ZXJzOgotICogICAgICAnKCcgW3ZhcmFyZ3NsaXN0XSAnKScKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3BhcmFtZXRlcnMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBwYXJhbWV0ZXJzKSAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInBhcmFtZXRlcnMiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICB2YWxpZGF0ZV9zdWl0ZSgpCi0gKgotICogIHN1aXRlOgotICogICAgICBzaW1wbGVfc3RtdAotICogICAgfCBORVdMSU5FIElOREVOVCBzdG10KyBERURFTlQKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3VpdGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc3VpdGUpICYmICgobmNoID09IDEpIHx8IChuY2ggPj0gNCkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAxKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc2ltcGxlX3N0bXQoQ0hJTEQodHJlZSwgMCkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICAvKiAgTkVXTElORSBJTkRFTlQgc3RtdCsgREVERU5UICAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmV3bGluZShDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2luZGVudChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kZWRlbnQoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgICAgICBpZiAocmVzICYmIChuY2ggPiA0KSkgewotICAgICAgICAgICAgaW50IGkgPSAzOwotICAgICAgICAgICAgLS1uY2g7ICAgICAgICAgICAgICAgICAgICAgIC8qIGZvcmdldCB0aGUgREVERU5UICAgICAqLwotICAgICAgICAgICAgZm9yICggOyByZXMgJiYgKGkgPCBuY2gpOyArK2kpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoIDwgNCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJzdWl0ZSIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIHRlc3RsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdCwgInRlc3RsaXN0IikpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIobm9kZSAqdGwpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0bCwgdGVzdGxpc3Rfc3Rhcl9leHByLCB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0bGlzdCIpKTsKLX0KLQotCi0vKiB2YWxpZGF0ZSBlaXRoZXIgdmZwZGVmIG9yIHRmcGRlZi4KLSAqIHZmcGRlZjogTkFNRQotICogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmZwZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpZiAoVFlQRSh0cmVlKSA9PSB2ZnBkZWYpIHsKLSAgICAgICAgcmV0dXJuIG5jaCA9PSAxICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgIH0KLSAgICBlbHNlIGlmIChUWVBFKHRyZWUpID09IHRmcGRlZikgewotICAgICAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykgewotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpICYmCi0gICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMSkpICYmCi0gICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZgotICogLi5vciB0ZnBkZWYgaW4gcGxhY2Ugb2YgdmZwZGVmLiB2ZnBkZWY6IE5BTUU7IHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3ZhcmFyZ3NsaXN0X3RyYWlsZXIobm9kZSAqdHJlZSwgaW50IHN0YXJ0KQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IDA7Ci0KLSAgICBpZiAobmNoIDw9IHN0YXJ0KSB7Ci0gICAgICAgIGVycl9zdHJpbmcoImV4cGVjdGVkIHZhcmlhYmxlIGFyZ3VtZW50IHRyYWlsZXIgZm9yIHZhcmFyZ3NsaXN0Iik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IFNUQVIpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogJyonIFt2ZnBkZWZdCi0gICAgICAgICAqLwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKTsKLSAgICAgICAgaWYgKHJlcyAmJiBzdGFydCA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IHZmcGRlZiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gdGZwZGVmKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSk7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKgotICAgICAgICAgKi8KLSAgICAgICAgd2hpbGUgKHJlcyAmJiBzdGFydCArIDEgPCBuY2ggJiYgKAotICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQgKyAxKSkgPT0gdmZwZGVmIHx8Ci0gICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCArIDEpKSA9PSB0ZnBkZWYpKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgICAgICAgICBpZiAocmVzICYmIHN0YXJ0ICsgMSA8IG5jaCAmJiBUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gRVFVQUwpCi0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogWycsJyAnKionIHZmcGRlZl0KLSAgICAgICAgICovCi0gICAgICAgIGlmIChyZXMgJiYgc3RhcnQgKyAyIDwgbmNoICYmIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQrMSkpID09IERPVUJMRVNUQVIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogJyoqJyB2ZnBkZWYKLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdGFydCArIDEgPCBuY2gpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgdmZwZGVmIGFmdGVyICoqIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgKiBvciAqKiBpbiB2YXJhcmdzbGlzdCB0cmFpbGVyIik7Ci0gICAgfQotCi0gICAgaWYgKHJlcyAmJiBzdGFydCAhPSBuY2gpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygidW5leHBlY3RlZCBleHRyYSBjaGlsZHJlbiBpbiB2YXJhcmdzbGlzdCB0cmFpbGVyIik7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogdmFsaWRhdGVfdmFyYXJnc2xpc3QoKQotICoKLSAqIFZhbGlkYXRlIHR5cGVkYXJnc2xpc3Qgb3IgdmFyYXJnc2xpc3QuCi0gKgotICogdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICogICAgICAgICAgICAgICAgICgnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwKLSAqICAgICAgICAgICAgICAgICAgJyoqJyB0ZnBkZWYpCi0gKiAgICAgICAgICAgICAgICAgfCB0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCi0gKiB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICogdmFyYXJnc2xpc3Q6ICgodmZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAqICAgICAgICAgICAgICAgKCcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogIFsnLCcgJyoqJyB2ZnBkZWZdIHwKLSAqICAgICAgICAgICAgICAgICcqKicgdmZwZGVmKQotICogICAgICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKLSAqIHZmcGRlZjogTkFNRQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmFyYXJnc2xpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoVFlQRSh0cmVlKSA9PSB2YXJhcmdzbGlzdCB8fAotICAgICAgICAgICAgICAgVFlQRSh0cmVlKSA9PSB0eXBlZGFyZ3NsaXN0KSAmJgotICAgICAgICAgICAgICAobmNoICE9IDApOwotICAgIGludCBzeW07Ci0gICAgbm9kZSAqY2g7Ci0gICAgaW50IGkgPSAwOwotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChuY2ggPCAxKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoInZhcmFyZ3NsaXN0IG1pc3NpbmcgY2hpbGQgbm9kZXMiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHdoaWxlIChpIDwgbmNoKSB7Ci0gICAgICAgIGNoID0gQ0hJTEQodHJlZSwgaSk7Ci0gICAgICAgIHN5bSA9IFRZUEUoY2gpOwotICAgICAgICBpZiAoc3ltID09IHZmcGRlZiB8fCBzeW0gPT0gdGZwZGVmKSB7Ci0gICAgICAgICAgICAvKiB2YWxpZGF0ZSAodmZwZGVmIFsnPScgdGVzdF0gJywnKSsgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZmcGRlZihjaCk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICBpZiAocmVzICYmIChpKzIgPD0gbmNoKSAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBFUVVBTCkgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgaSA8IG5jaCkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc3ltID09IERPVUJMRVNUQVIgfHwgc3ltID09IFNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0X3RyYWlsZXIodHJlZSwgaSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGZvcm1hdGlvbiBmb3IgdmFyYXJnc2xpc3QiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qICBjb21wX2l0ZXI6ICBjb21wX2ZvciB8IGNvbXBfaWYKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9pdGVyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wX2l0ZXIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29tcF9pdGVyIikpOwotICAgIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gY29tcF9mb3IpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDApKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaWYoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIGNvbXBfZm9yOiAgJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0IFtjb21wX2l0ZXJdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBfZm9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKG5jaCA9PSA1KQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2l0ZXIoQ0hJTEQodHJlZSwgNCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImNvbXBfZm9yIik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZvciIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJpbiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgY29tcF9pZjogICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9pZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLQotICAgIGlmIChuY2ggPT0gMykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pdGVyKENISUxEKHRyZWUsIDIpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJjb21wX2lmIik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImlmIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3Rfbm9jb25kKENISUxEKHRyZWUsIDEpKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qICBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHN0bXQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAic3RtdCIpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgdHJlZSA9IENISUxEKHRyZWUsIDApOwotCi0gICAgICAgIGlmIChUWVBFKHRyZWUpID09IHNpbXBsZV9zdG10KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2ltcGxlX3N0bXQodHJlZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBvdW5kX3N0bXQodHJlZSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zaW1wbGVfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzaW1wbGVfc3RtdCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gMikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NtYWxsX3N0bXQoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAobmNoIDwgMikKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInNpbXBsZV9zdG10Iik7Ci0gICAgLS1uY2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yZ2V0IHRoZSBORVdMSU5FICAgICovCi0gICAgaWYgKHJlcyAmJiBpc19ldmVuKG5jaCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3NlbWkoQ0hJTEQodHJlZSwgLS1uY2gpKTsKLSAgICBpZiAocmVzICYmIChuY2ggPiAyKSkgewotICAgICAgICBpbnQgaTsKLQotICAgICAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfc2VtaShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zbWFsbF9zdG10KENISUxEKHRyZWUsIGkgKyAxKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc21hbGxfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzbWFsbF9zdG10Iik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBudHlwZSA9IFRZUEUoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgICAgIGlmICggIChudHlwZSA9PSBleHByX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBkZWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IHBhc3Nfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGZsb3dfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGltcG9ydF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZ2xvYmFsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBub25sb2NhbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gYXNzZXJ0X3N0bXQpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgc21hbGxfc3RtdCBjaGlsZCB0eXBlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY2hpbGQgbm9kZSBvZiBzbWFsbF9zdG10OiAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGNvbXBvdW5kX3N0bXQ6Ci0gKiAgICAgIGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wb3VuZF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wb3VuZF9zdG10KQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbXBvdW5kX3N0bXQiKSk7Ci0gICAgaW50IG50eXBlOwotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAoMCk7Ci0KLSAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0gICAgbnR5cGUgPSBUWVBFKHRyZWUpOwotICAgIGlmICggIChudHlwZSA9PSBpZl9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB3aGlsZV9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBmb3Jfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gdHJ5X3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHdpdGhfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZnVuY2RlZikKLSAgICAgICAgICB8fCAobnR5cGUgPT0gYXN5bmNfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gY2xhc3NkZWYpCi0gICAgICAgICAgfHwgKG50eXBlID09IGRlY29yYXRlZCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUodHJlZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBjb21wb3VuZCBzdGF0ZW1lbnQgdHlwZTogJWQuIiwgVFlQRSh0cmVlKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3Qobm9kZSAqdHJlZSwgaW50IHRzZSkKLXsKLSAgICBpZiAoVFlQRSh0cmVlKSA9PSB5aWVsZF9leHByKSB7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZV95aWVsZF9leHByKHRyZWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHRzZSkKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIodHJlZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV90ZXN0bGlzdCh0cmVlKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBleHByX3N0bXQpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3Rfc3Rhcl9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBpZiAocmVzICYmIG5jaCA9PSAzCi0gICAgICAgICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGF1Z2Fzc2lnbikgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2RlcyhDSElMRCh0cmVlLCAxKSwgMSwgImF1Z2Fzc2lnbiIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChDSElMRCh0cmVlLCAyKSwgMCk7Ci0KLSAgICAgICAgaWYgKHJlcykgewotICAgICAgICAgICAgY2hhciAqcyA9IFNUUihDSElMRChDSElMRCh0cmVlLCAxKSwgMCkpOwotCi0gICAgICAgICAgICByZXMgPSAoc3RyY21wKHMsICIrPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi09IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiKj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIvPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi8vPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIiU9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiJj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICJ8PSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIl49IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiPDw9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiPj49IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiKio9IikgPT0gMCk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGF1Z21lbnRlZCBhc3NpZ25tZW50IG9wZXJhdG9yIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaiA9IDE7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KENISUxEKHRyZWUsIGogKyAxKSwgMSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWxfc3RtdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImRlbF9zdG10IikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJkZWwiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcmxpc3QoQ0hJTEQodHJlZSwgMSkpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXR1cm5fc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCByZXR1cm5fc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicmV0dXJuIikpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyoKLSAqICByYWlzZV9zdG10OgotICoKLSAqICAncmFpc2UnIFt0ZXN0IFsnZnJvbScgdGVzdF1dCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JhaXNlX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcmFpc2Vfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAicmFpc2UiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInJhaXNlIik7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA+PSAyKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiZnJvbSIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAzKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiB5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmIChuY2ggPCAxIHx8IG5jaCA+IDIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChuY2ggPT0gMikgewotICAgICAgICBpZiAoIXZhbGlkYXRlX3lpZWxkX2FyZyhDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIHlpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9hcmcobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfYXJnKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3dpdGNoIChuY2gpIHsKLSAgICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0vKiB5aWVsZF9zdG10OiB5aWVsZF9leHByCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAieWllbGRfc3RtdCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV95aWVsZF9leHByKENISUxEKHRyZWUsIDApKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9hc19uYW1lKTsKLQotICAgIGlmIChvaykgewotICAgICAgICBpZiAobmNoID09IDEpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgTlVMTCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJpbXBvcnRfYXNfbmFtZSIpOwotICAgIH0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLQotLyogZG90dGVkX25hbWU6ICBOQU1FICgiLiIgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRvdHRlZF9uYW1lKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpKTsKLSAgICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfZG90KENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBpKzEpLCBOVUxMKSk7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogZG90dGVkX2FzX25hbWU6ICBkb3R0ZWRfbmFtZSBbTkFNRSBOQU1FXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRvdHRlZF9hc19uYW1lKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksIE5VTEwpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGRvdHRlZF9hc19uYW1lIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBkb3R0ZWRfYXNfbmFtZSAoJywnIGRvdHRlZF9hc19uYW1lKSogKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9hc19uYW1lcyhub2RlICp0cmVlKQotewotICAgICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgICAgICBpbnQgcmVzID0gaXNfb2RkKG5jaCkgJiYgdmFsaWRhdGVfZG90dGVkX2FzX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBpbnQgaTsKLQotICAgICAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90dGVkX2FzX25hbWUoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiBpbXBvcnRfYXNfbmFtZSAoJywnIGltcG9ydF9hc19uYW1lKSogWycsJ10gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lKENISUxEKHRyZWUsIDApKTsKLSAgICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSArIDEgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lKENISUxEKHRyZWUsIGkgKyAxKSkpOwotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAnaW1wb3J0JyBkb3R0ZWRfYXNfbmFtZXMgKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImltcG9ydF9uYW1lIikKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaW1wb3J0IikKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgMSkpKTsKLX0KLQotLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvdW50IHRoZSBudW1iZXIgb2YgbGVhZGluZyBkb3RzIChvciBlbGxpcHNpcyB0b2tlbnMpIGluCi0gKiAnZnJvbSAuLi5tb2R1bGUgaW1wb3J0IG5hbWUnCi0gKi8KLXN0YXRpYyBpbnQKLWNvdW50X2Zyb21fZG90cyhub2RlICp0cmVlKQotewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDE7IGkgPCBOQ0godHJlZSk7IGkrKykKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaSkpICE9IERPVCAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSAhPSBFTExJUFNJUykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIHJldHVybiBpIC0gMTsKLX0KLQotLyogaW1wb3J0X2Zyb206ICgnZnJvbScgKCcuJyogZG90dGVkX25hbWUgfCAnLicrKQotICogICAgICAgICAgICAgICAnaW1wb3J0JyAoJyonIHwgJygnIGltcG9ydF9hc19uYW1lcyAnKScgfCBpbXBvcnRfYXNfbmFtZXMpKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfZnJvbShub2RlICp0cmVlKQotewotICAgICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgICAgICBpbnQgbmRvdHMgPSBjb3VudF9mcm9tX2RvdHModHJlZSk7Ci0gICAgICAgIGludCBoYXZlbmFtZSA9IChUWVBFKENISUxEKHRyZWUsIG5kb3RzICsgMSkpID09IGRvdHRlZF9uYW1lKTsKLSAgICAgICAgaW50IG9mZnNldCA9IG5kb3RzICsgaGF2ZW5hbWU7Ci0gICAgICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfZnJvbSkKLSAgICAgICAgICAgICAgICAmJiAob2Zmc2V0ID49IDEpCi0gICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAzICsgb2Zmc2V0KQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmcm9tIikKLSAgICAgICAgICAgICAgICAmJiAoIWhhdmVuYW1lIHx8IHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIG5kb3RzICsgMSkpKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMSksICJpbXBvcnQiKTsKLQotICAgICAgICBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpID09IExQQVIpCi0gICAgICAgICAgICByZXMgPSAoKG5jaCA9PSBvZmZzZXQgKyA1KQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG9mZnNldCArIDQpKSk7Ci0gICAgICAgIGVsc2UgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIG9mZnNldCArIDIpKSAhPSBTVEFSKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKENISUxEKHRyZWUsIG9mZnNldCArIDIpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIGltcG9ydF9zdG10OiBpbXBvcnRfbmFtZSB8IGltcG9ydF9mcm9tICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJpbXBvcnRfc3RtdCIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgbnR5cGUgPSBUWVBFKENISUxEKHRyZWUsIDApKTsKLQotICAgICAgICBpZiAobnR5cGUgPT0gaW1wb3J0X25hbWUgfHwgbnR5cGUgPT0gaW1wb3J0X2Zyb20pCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBpbXBvcnRfc3RtdCBjaGlsZCB0eXBlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY2hpbGQgbm9kZSBvZiBpbXBvcnRfc3RtdDogJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBnbG9iYWxfc3RtdDoKLSAqCi0gKiAgJ2dsb2JhbCcgTkFNRSAoJywnIE5BTUUpKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9nbG9iYWxfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBnbG9iYWxfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX2V2ZW4obmNoKSAmJiAobmNoID49IDIpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGdsb2JhbCBzdGF0ZW1lbnQiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZ2xvYmFsIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBqICsgMSksIE5BTUUpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotLyogIG5vbmxvY2FsX3N0bXQ6Ci0gKgotICogICdub25sb2NhbCcgTkFNRSAoJywnIE5BTUUpKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ub25sb2NhbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIG5vbmxvY2FsX3N0bXQpCi0gICAgICAgICAgICAgICAmJiBpc19ldmVuKG5jaCkgJiYgKG5jaCA+PSAyKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBub25sb2NhbCBzdGF0ZW1lbnQiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibm9ubG9jYWwiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIGogKyAxKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIGFzc2VydF9zdG10OgotICoKLSAqICAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXNzZXJ0X3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXNzZXJ0X3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJhc3NlcnQiKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFzc2VydCBzdGF0ZW1lbnQiKTsKLSAgICBpZiAocmVzICYmIChuY2ggPiAyKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAzKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3doaWxlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdoaWxlX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSA0KSB8fCAobmNoID09IDcpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIndoaWxlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNykpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDQpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA1KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDYpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZm9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGZvcl9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gNikgfHwgKG5jaCA9PSA5KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmb3IiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcmxpc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiaW4iKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDUpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gOSkpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDYpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA3KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDgpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHRyeV9zdG10OgotICogICAgICAndHJ5JyAnOicgc3VpdGUgKGV4Y2VwdF9jbGF1c2UgJzonIHN1aXRlKSsgWydlbHNlJyAnOicgc3VpdGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZpbmFsbHknICc6JyBzdWl0ZV0KLSAqICAgIHwgJ3RyeScgJzonIHN1aXRlICdmaW5hbGx5JyAnOicgc3VpdGUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3RyeShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHBvcyA9IDM7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB0cnlfc3RtdCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gNikgJiYgKChuY2ggJSAzKSA9PSAwKSk7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInRyeSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgIGVsc2UgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSAiZXhjZXB0IjsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgbmNoIC0gMykpICE9IGV4Y2VwdF9jbGF1c2UpCi0gICAgICAgICAgICBuYW1lID0gU1RSKENISUxEKHRyZWUsIG5jaCAtIDMpKTsKLQotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciB0cnkvJXMgbm9kZS4iLCBuYW1lKTsKLSAgICB9Ci0gICAgLyogSGFuZGxlIHRyeS9maW5hbGx5IHN0YXRlbWVudCAqLwotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gTkFNRSkgJiYKLSAgICAgICAgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgcG9zKSksICJmaW5hbGx5IikgPT0gMCkpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDYsICJ0cnkvZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDUpKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0gICAgLyogdHJ5L2V4Y2VwdCBzdGF0ZW1lbnQ6IHNraXAgcGFzdCBleGNlcHRfY2xhdXNlIHNlY3Rpb25zICovCi0gICAgd2hpbGUgKHJlcyAmJiBwb3MgPCBuY2ggJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gZXhjZXB0X2NsYXVzZSkpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2V4Y2VwdF9jbGF1c2UoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICAgICAgcG9zICs9IDM7Ci0gICAgfQotICAgIC8qIHNraXAgZWxzZSBjbGF1c2UgKi8KLSAgICBpZiAocmVzICYmIHBvcyA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBOQU1FKSAmJgotICAgICAgICAoc3RyY21wKFNUUihDSElMRCh0cmVlLCBwb3MpKSwgImVsc2UiKSA9PSAwKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgICAgICBwb3MgKz0gMzsKLSAgICB9Ci0gICAgaWYgKHJlcyAmJiBwb3MgPCBuY2gpIHsKLSAgICAgICAgLyogbGFzdCBjbGF1c2UgbXVzdCBiZSBhIGZpbmFsbHkgKi8KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgImZpbmFsbHkiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgcG9zICsgMywgInRyeS9leGNlcHQvZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leGNlcHRfY2xhdXNlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4Y2VwdF9jbGF1c2UpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZXhjZXB0IikpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID4gMSkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJhcyIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAzKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXN0KSAmJiBpc19vZGQobmNoKTsKLQotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGxhbWJkZWYpKQotICAgICAgICByZXMgPSAoKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbGFtYmRlZihDSElMRCh0cmVlLCAwKSkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgcmVzID0gKHJlcyAmJiAobmNoID09IDEgfHwgKG5jaCA9PSA1ICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiaWYiKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMyksICJlbHNlIikgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgNCkpKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Rfbm9jb25kKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgdGVzdF9ub2NvbmQpICYmIChuY2ggPT0gMSk7Ci0KLSAgICBpZiAocmVzICYmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBsYW1iZGVmX25vY29uZCkpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9sYW1iZGVmX25vY29uZChDSElMRCh0cmVlLCAwKSkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX29yX3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBvcl90ZXN0KSAmJiBpc19vZGQobmNoKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IHBvczsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAib3IiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF90ZXN0KENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hbmRfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFuZF90ZXN0KQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25vdF90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJhbmQiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ub3RfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIG5vdF90ZXN0KSAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJub3QiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25vdF90ZXN0KENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcGFyaXNvbihDSElMRCh0cmVlLCAwKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wYXJpc29uKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcGFyaXNvbikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21wX29wKENISUxEKHRyZWUsIHBvcykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9vcChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0KLSAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBfb3ApKQotICAgICAgICByZXR1cm4gKDApOwotICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICAvKgotICAgICAgICAgKiAgT25seSBjaGlsZCB3aWxsIGJlIGEgdGVybWluYWwgd2l0aCBhIHdlbGwtZGVmaW5lZCBzeW1ib2xpYyBuYW1lCi0gICAgICAgICAqICBvciBhIE5BTUUgd2l0aCBhIHN0cmluZyBvZiBlaXRoZXIgJ2lzJyBvciAnaW4nCi0gICAgICAgICAqLwotICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0gICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgIGNhc2UgTEVTUzoKLSAgICAgICAgICBjYXNlIEdSRUFURVI6Ci0gICAgICAgICAgY2FzZSBFUUVRVUFMOgotICAgICAgICAgIGNhc2UgRVFVQUw6Ci0gICAgICAgICAgY2FzZSBMRVNTRVFVQUw6Ci0gICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6Ci0gICAgICAgICAgY2FzZSBOT1RFUVVBTDoKLSAgICAgICAgICAgICAgcmVzID0gMTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBOQU1FOgotICAgICAgICAgICAgICByZXMgPSAoKHN0cmNtcChTVFIodHJlZSksICJpbiIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICB8fCAoc3RyY21wKFNUUih0cmVlKSwgImlzIikgPT0gMCkpOwotICAgICAgICAgICAgICBpZiAoIXJlcykgewotICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvcGVyYXRvciAnJXMnIiwgU1RSKHRyZWUpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGNvbXBhcmlzb24gb3BlcmF0b3IgdHlwZSIpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmICgocmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImNvbXBfb3AiKSkgIT0gMCkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmICgoKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMCkpLCAiaXMiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3RyY21wKFNUUihDSElMRCh0cmVlLCAxKSksICJub3QiKSA9PSAwKSkKLSAgICAgICAgICAgICAgICAgICB8fCAoKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMCkpLCAibm90IikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMSkpLCAiaW4iKSA9PSAwKSkpKTsKLSAgICAgICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJ1bmtub3duIGNvbXBhcmlzb24gb3BlcmF0b3IiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N0YXJfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdGFyX2V4cHIpOwotICAgIGlmICghcmVzKSByZXR1cm4gcmVzOwotICAgIGlmICghdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInN0YXJfZXhwciIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIFNUQVIpICYmICAgICAgXAotICAgICAgICB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDEpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4cHIpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfeG9yX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX3hvcl9leHByKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmJhcihDSElMRCh0cmVlLCBqIC0gMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV94b3JfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB4b3JfZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hbmRfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY2lyY3VtZmxleChDSElMRCh0cmVlLCBqIC0gMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hbmRfZXhwcihDSElMRCh0cmVlLCBqKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FuZF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYW5kX2V4cHIpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc2hpZnRfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfYW1wZXJzYW5kKENISUxEKHRyZWUsIHBvcykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zaGlmdF9leHByKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfY2hhaW5fdHdvX29wcyhub2RlICp0cmVlLCBpbnQgKCp0ZXJtdmFsaWQpKG5vZGUgKiksIGludCBvcDEsIGludCBvcDIpCi0gewotICAgIGludCBwb3MgPSAxOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgKCp0ZXJtdmFsaWQpKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKCA7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgIT0gb3AxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgb3AyKTsKLSAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgIHJlcyA9ICgqdGVybXZhbGlkKShDSElMRCh0cmVlLCBwb3MgKyAxKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zaGlmdF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzaGlmdF9leHByKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfY2hhaW5fdHdvX29wcyh0cmVlLCB2YWxpZGF0ZV9hcml0aF9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUU0hJRlQsIFJJR0hUU0hJRlQpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcml0aF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcml0aF9leHByKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfY2hhaW5fdHdvX29wcyh0cmVlLCB2YWxpZGF0ZV90ZXJtLCBQTFVTLCBNSU5VUykpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlcm0obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zID0gMTsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgdGVybSkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoIDsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKCgoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBTVEFSKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gU0xBU0gpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBET1VCTEVTTEFTSCkKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFBFUkNFTlQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZhY3RvcjoKLSAqCi0gKiAgZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ZhY3Rvcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBmYWN0b3IpCi0gICAgICAgICAgICAgICAmJiAoKChuY2ggPT0gMikKLSAgICAgICAgICAgICAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBQTFVTKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IE1JTlVTKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFRJTERFKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgICAgICAgICB8fCAoKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wb3dlcihDSElMRCh0cmVlLCAwKSkpKSk7Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBwb3dlcjoKLSAqCi0gKiAgcG93ZXI6IGF0b21fZXhwciB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Bvd2VyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHBvd2VyKSAmJiAobmNoID49IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmIChuY2ggPiAxKSB7Ci0gICAgICAgIGlmIChuY2ggIT0gMykgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdwb3dlciciKTsKLSAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMikpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGF0b21fZXhwcjoKLSAqCi0gKiAgYXRvbV9leHByOiBbQVdBSVRdIGF0b20gdHJhaWxlcioKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXRvbV9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHN0YXJ0ID0gMDsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0gICAgaW50IHBvczsKLQotICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGF0b21fZXhwcikgJiYgKG5jaCA+PSAxKTsKLSAgICBpZiAoIXJlcykgewotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotCi0gICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IEFXQUlUKSB7Ci0gICAgICAgIHN0YXJ0ID0gMTsKLSAgICAgICAgaWYgKG5jaCA8IDIpIHsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIG5vZGVzIGZvciAnYXRvbV9leHByJyIpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlcyA9IHZhbGlkYXRlX2F0b20oQ0hJTEQodHJlZSwgc3RhcnQpKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHBvcyA9IHN0YXJ0ICsgMTsKLSAgICAgICAgd2hpbGUgKHJlcyAmJiAocG9zIDwgbmNoKSAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSB0cmFpbGVyKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYXRvbShub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbSk7Ci0KLSAgICBpZiAocmVzICYmIG5jaCA8IDEpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIG5jaCsxLCAiYXRvbSIpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgc3dpdGNoIChUWVBFKENISUxEKHRyZWUsIDApKSkgewotICAgICAgICAgIGNhc2UgTFBBUjoKLSAgICAgICAgICAgIHJlcyA9ICgobmNoIDw9IDMpCi0gICAgICAgICAgICAgICAgICAgJiYgKHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSkpKTsKLQotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpPT15aWVsZF9leHByKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3RfY29tcChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIExTUUI6Ci0gICAgICAgICAgICBpZiAobmNoID09IDIpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIFJTUUIpOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDMpCi0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3RsaXN0X2NvbXAoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDIpLCBSU1FCKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbGlzdCBkaXNwbGF5IGF0b20iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTEJSQUNFOgotICAgICAgICAgICAgcmVzID0gKChuY2ggPD0gMykKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2ggLSAxKSwgUkJSQUNFKSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIE5BTUU6Ci0gICAgICAgICAgY2FzZSBOVU1CRVI6Ci0gICAgICAgICAgY2FzZSBFTExJUFNJUzoKLSAgICAgICAgICAgIHJlcyA9IChuY2ggPT0gMSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFNUUklORzoKLSAgICAgICAgICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyArK3BvcykKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBTVFJJTkcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHRlc3RsaXN0X2NvbXA6Ci0gKiAgICAodGVzdHxzdGFyX2V4cHIpICggY29tcF9mb3IgfCAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXSApCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0X2NvbXAobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvazsKLQotICAgIGlmIChuY2ggPT0gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJtaXNzaW5nIGNoaWxkIG5vZGVzIG9mIHRlc3RsaXN0X2NvbXAiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG5jaCA9PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgIG9rID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG9rID0gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICB0ZXN0bGlzdF9jb21wLAotICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICJ0ZXN0bGlzdF9jb21wIik7Ci0gICAgfQotICAgIHJldHVybiBvazsKLX0KLQotLyogIGRlY29yYXRvcjoKLSAqICAgICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWNvcmF0b3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgb2s7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBkZWNvcmF0b3IpICYmCi0gICAgICAgICAgKG5jaCA9PSAzIHx8IG5jaCA9PSA1IHx8IG5jaCA9PSA2KSAmJgotICAgICAgICAgIHZhbGlkYXRlX2F0KENISUxEKHRyZWUsIDApKSAmJgotICAgICAgICAgIHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDEpKSAmJgotICAgICAgICAgIHZhbGlkYXRlX25ld2xpbmUoUkNISUxEKHRyZWUsIC0xKSkpOwotCi0gICAgaWYgKG9rICYmIG5jaCAhPSAzKSB7Ci0gICAgICAgIG9rID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKFJDSElMRCh0cmVlLCAtMikpKTsKLQotICAgICAgICBpZiAob2sgJiYgbmNoID09IDYpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMykpOwotICAgIH0KLQotICAgIHJldHVybiBvazsKLX0KLQotLyogIGRlY29yYXRvcnM6Ci0gKiAgICBkZWNvcmF0b3IrCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRvcnMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgaSwgbmNoLCBvazsKLSAgICBuY2ggPSBOQ0godHJlZSk7Ci0gICAgb2sgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkZWNvcmF0b3JzKSAmJiBuY2ggPj0gMTsKLQotICAgIGZvciAoaSA9IDA7IG9rICYmIGkgPCBuY2g7ICsraSkKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV9kZWNvcmF0b3IoQ0hJTEQodHJlZSwgaSkpOwotCi0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgd2l0aF9pdGVtOgotICogICB0ZXN0IFsnYXMnIGV4cHJdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3dpdGhfaXRlbShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdpdGhfaXRlbSkKLSAgICAgICAgICAgICAgJiYgKG5jaCA9PSAxIHx8IG5jaCA9PSAzKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0gICAgaWYgKG9rICYmIG5jaCA9PSAzKQotICAgICAgICBvayA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDIpKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgd2l0aF9zdG10OgotICogICAgMCAgICAgIDEgICAgICAgICAgLi4uICAgICAgICAgICAgIC0yICAgLTEKLSAqICAgJ3dpdGgnIHdpdGhfaXRlbSAoJywnIHdpdGhfaXRlbSkqICc6JyBzdWl0ZQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV93aXRoX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgaTsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB3aXRoX3N0bXQpCi0gICAgICAgICYmIChuY2ggJSAyID09IDApCi0gICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ3aXRoIikKLSAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oUkNISUxEKHRyZWUsIC0yKSkKLSAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoUkNISUxEKHRyZWUsIC0xKSkpOwotICAgIGZvciAoaSA9IDE7IG9rICYmIGkgPCBuY2ggLSAyOyBpICs9IDIpCi0gICAgICAgIG9rID0gdmFsaWRhdGVfd2l0aF9pdGVtKENISUxEKHRyZWUsIGkpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUgKi8KLQotc3RhdGljIGludAotdmFsaWRhdGVfZnVuY2RlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGZ1bmNkZWYpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSA1KSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlZiIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcGFyYW1ldGVycyhDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA0KSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSA3KSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlZiIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcGFyYW1ldGVycyhDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9yYXJyb3coQ0hJTEQodHJlZSwgMykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA1KSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA2KSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBmdW5jZGVmIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3luY19mdW5jZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfZnVuY2RlZik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDIpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBhc3luY19mdW5jZGVmIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3luY19zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFzeW5jX3N0bXQpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIEFTWU5DKSk7Ci0KLSAgICBpZiAobmNoICE9IDIpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX3N0bXQiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZnVuY2RlZikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gd2l0aF9zdG10KSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGZvcl9zdG10KSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mb3IoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0KLS8qIGRlY29yYXRlZAotICogICBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRlZChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRlZCkKLSAgICAgICAgICAgICAgJiYgKG5jaCA9PSAyKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kZWNvcmF0b3JzKFJDSElMRCh0cmVlLCAtMikpKTsKLSAgICBpZiAoVFlQRShSQ0hJTEQodHJlZSwgLTEpKSA9PSBmdW5jZGVmKQotICAgICAgICBvayA9IG9rICYmIHZhbGlkYXRlX2Z1bmNkZWYoUkNISUxEKHRyZWUsIC0xKSk7Ci0gICAgZWxzZQotICAgICAgICBvayA9IG9rICYmIHZhbGlkYXRlX2NsYXNzKFJDSElMRCh0cmVlLCAtMSkpOwotICAgIHJldHVybiBvazsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbGFtYmRlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBsYW1iZGVmKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMykgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJsYW1iZGEiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImxhbWJkZWYiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9sYW1iZGVmX25vY29uZChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBsYW1iZGVmX25vY29uZCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDMpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibGFtYmRhIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJsYW1iZGVmX25vY29uZCIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBhcmdsaXN0OgotICoKLSAqICAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddIHwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdIHwgJyoqJyB0ZXN0KQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcmdsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgaSA9IDA7Ci0gICAgaW50IG9rID0gMTsKLQotICAgIGlmIChuY2ggPD0gMCkKLSAgICAgICAgLyogcmFpc2UgdGhlIHJpZ2h0IGVycm9yIGZyb20gaGF2aW5nIGFuIGludmFsaWQgbnVtYmVyIG9mIGNoaWxkcmVuICovCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBuY2ggKyAxLCAiYXJnbGlzdCIpOwotCi0gICAgaWYgKG5jaCA+IDEpIHsKLSAgICAgICAgZm9yIChpPTA7IGk8bmNoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBhcmd1bWVudCkgewotICAgICAgICAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMiAmJiBUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyX3N0cmluZygibmVlZCAnKCcsICcpJyBmb3IgZ2VuZXJhdG9yIGV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgd2hpbGUgKG9rICYmIG5jaC1pID49IDIpIHsKLSAgICAgICAgLyogc2tpcCBsZWFkaW5nIChhcmd1bWVudCAnLCcpICovCi0gICAgICAgIG9rID0gKHZhbGlkYXRlX2FyZ3VtZW50KENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgb2sgPSAxOwotICAgIGlmIChuY2gtaSA+IDApIHsKLSAgICAgICAgaW50IHN5bSA9IFRZUEUoQ0hJTEQodHJlZSwgaSkpOwotCi0gICAgICAgIGlmIChzeW0gPT0gYXJndW1lbnQpIHsKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfYXJndW1lbnQoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgaWYgKG9rICYmIGkrMSAhPSBuY2gpIHsKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFyZ2xpc3Qgc3BlY2lmaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKGV4dHJhIHN0dWZmIG9uIGVuZCkiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXJnbGlzdCBzcGVjaWZpY2F0aW9uIik7Ci0gICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChvayk7Ci19Ci0KLQotCi0vKiAgYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKLSAqICAgICAgICAgICAgICB0ZXN0ICc9JyB0ZXN0IHwKLSAqICAgICAgICAgICAgICAnKionIHRlc3QgfAotICogICAgICAgICAgICAgICcqJyB0ZXN0ICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXJndW1lbnQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMikgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0KLS8qICB0cmFpbGVyOgotICoKLSAqICAnKCcgW2FyZ2xpc3RdICcpJyB8ICdbJyBzdWJzY3JpcHRsaXN0ICddJyB8ICcuJyBOQU1FCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3RyYWlsZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0cmFpbGVyKSAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgc3dpdGNoIChUWVBFKENISUxEKHRyZWUsIDApKSkgewotICAgICAgICAgIGNhc2UgTFBBUjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSk7Ci0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIExTUUI6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgInRyYWlsZXIiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1YnNjcmlwdGxpc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMiksIFJTUUIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRE9UOgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJ0cmFpbGVyIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJ0cmFpbGVyIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgc3Vic2NyaXB0bGlzdDoKLSAqCi0gKiAgc3Vic2NyaXB0ICgnLCcgc3Vic2NyaXB0KSogWycsJ10KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3Vic2NyaXB0bGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgc3Vic2NyaXB0bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnNjcmlwdCwgInN1YnNjcmlwdGxpc3QiKSk7Ci19Ci0KLQotLyogIHN1YnNjcmlwdDoKLSAqCi0gKiAgJy4nICcuJyAnLicgfCB0ZXN0IHwgW3Rlc3RdICc6JyBbdGVzdF0gW3NsaWNlb3BdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N1YnNjcmlwdChub2RlICp0cmVlKQotewotICAgIGludCBvZmZzZXQgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHN1YnNjcmlwdCkgJiYgKG5jaCA+PSAxKSAmJiAobmNoIDw9IDQpOwotCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgZXJyX3N0cmluZygiaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzdWJzY3JpcHQgbm9kZSIpOwotICAgICAgICByZXR1cm4gKDApOwotICAgIH0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9UKQotICAgICAgICAvKiB0YWtlIGNhcmUgb2YgKCcuJyAnLicgJy4nKSBwb3NzaWJpbGl0eSAqLwotICAgICAgICByZXR1cm4gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJzdWJzY3JpcHQiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDIpKSk7Ci0gICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSB0ZXN0KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLSAgICAvKiAgTXVzdCBiZSBbdGVzdF0gJzonIFt0ZXN0XSBbc2xpY2VvcF0sCi0gICAgICogIGJ1dCBhdCBsZWFzdCBvbmUgb2YgdGhlIG9wdGlvbmFsIGNvbXBvbmVudHMgd2lsbAotICAgICAqICBiZSBwcmVzZW50LCBidXQgd2UgZG9uJ3Qga25vdyB3aGljaCB5ZXQuCi0gICAgICovCi0gICAgaWYgKChUWVBFKENISUxEKHRyZWUsIDApKSAhPSBDT0xPTikgfHwgKG5jaCA9PSA0KSkgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgb2Zmc2V0ID0gMTsKLSAgICB9Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgcmVtID0gbmNoIC0gKytvZmZzZXQ7Ci0gICAgICAgIGlmIChyZW0pIHsKLSAgICAgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIG9mZnNldCkpID09IHRlc3QpIHsKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICsrb2Zmc2V0OwotICAgICAgICAgICAgICAgIC0tcmVtOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlcyAmJiByZW0pCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2xpY2VvcChDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc2xpY2VvcChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpIHx8IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJzbGljZW9wIikpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIHNsaWNlb3ApOwotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzbGljZW9wIik7Ci0gICAgfQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDApKTsKLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByKG5vZGUgKm4pCi17Ci0gICAgaWYgKFRZUEUobikgPT0gdGVzdCkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3Qobik7Ci0gICAgcmV0dXJuIHZhbGlkYXRlX3N0YXJfZXhwcihuKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIobm9kZSAqbikKLXsKLSAgICBpZiAoVFlQRShuKSA9PSBleHByKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihuKTsKLSAgICByZXR1cm4gdmFsaWRhdGVfc3Rhcl9leHByKG4pOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCBleHBybGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJfb3Jfc3Rhcl9leHByLCAiZXhwcmxpc3QiKSk7Ci19Ci0KLS8qIEluY3JlbWVudGluZyB2YWxpZGF0ZSBmdW5jdGlvbnMgcmV0dXJucyBub256ZXJvIGlmZiBzdWNjZXNzIChsaWtlIG90aGVyCi0gKiB2YWxpZGF0ZSBmdW5jdGlvbnMsIGFuZCBhZHZhbmNlICppIGJ5IHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoZWQgcGF0dGVybi4gKi8KLQotLyogdGVzdCAnOicgdGVzdCAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAoKmkpKyspKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAoKmkpKyspKSk7Ci19Ci0KLS8qIHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIgKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RpY3RfZWxlbWVudF9pbmMobm9kZSAqdHJlZSwgaW50ICppKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgaWYgKG5jaCAtICppID49IDIpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgKmkrMSkpID09IENPTE9OKSB7Ci0gICAgICAgICAgICAvKiB0ZXN0ICc6JyB0ZXN0ICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsIGkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogJyoqJyBleHByICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAoKmkpKyspKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsICgqaSkrKykpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKgotICogIGRpY3RvcnNldG1ha2VyOgotICoKLSAqICAgKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpCi0gKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpKSogWycsJ10pKSB8Ci0gKiAgICAgKCh0ZXN0IHwgJyonIHRlc3QpCi0gKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCAnKicgdGVzdCkpKiBbJywnXSkpICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGljdG9yc2V0bWFrZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0gICAgaW50IGkgPSAwOwotCi0gICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZGljdG9yc2V0bWFrZXIpOwotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChuY2ggLSBpIDwgMSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG5jaCAtIGkgPj0gMgotICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgaSsxKSkgPT0gQ09MT04pIHx8Ci0gICAgICAgICAgICAoVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gRE9VQkxFU1RBUikpKSB7Ci0gICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheSBvciBkaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIGlmIChuY2ggLSBpID49IDQgJiYgVFlQRShDSElMRCh0cmVlLCBpKzMpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgLyogRGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgJmkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5LiAqLwotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKAotICAgICAgICAgICAgICAgICAgICB0cmVlLAotICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKLSAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYywKLSAgICAgICAgICAgICAgICAgICAgJmksCi0gICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogU2V0IGRpc3BsYXkgb3Igc2V0IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIGlmIChuY2ggLSBpID49IDIgJiYgVFlQRShDSElMRCh0cmVlLCBpICsgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBTZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBTZXQgZGlzcGxheS4gKi8KLSAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobmNoIC0gaSA+IDApIHsKLSAgICAgICAgZXJyX3N0cmluZygiSWxsZWdhbCB0cmFpbGluZyBub2RlcyBmb3IgZGljdG9yc2V0bWFrZXIuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V2YWxfaW5wdXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBldmFsX2lucHV0KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2ggLSAxKSwgRU5ETUFSS0VSKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgKG5jaCAtIDEpKTsgKytwb3MpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIE5FV0xJTkUpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vZGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgICBuY2ggID0gMDsgICAgICAgICAgICAgICAgICAgICAvKiBudW0uIGNoaWxkcmVuIG9uIGN1cnJlbnQgbm9kZSAgKi8KLSAgICBpbnQgICByZXMgID0gMTsgICAgICAgICAgICAgICAgICAgICAvKiByZXN1bHQgdmFsdWUgICAgICAgICAgICAgICAgICAgKi8KLSAgICBub2RlKiBuZXh0ID0gMDsgICAgICAgICAgICAgICAgICAgICAvKiBub2RlIHRvIHByb2Nlc3MgYWZ0ZXIgdGhpcyBvbmUgKi8KLQotICAgIHdoaWxlIChyZXMgJiYgKHRyZWUgIT0gMCkpIHsKLSAgICAgICAgbmNoICA9IE5DSCh0cmVlKTsKLSAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBEZWZpbml0aW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBhc3luY19mdW5jZGVmOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfZnVuY2RlZih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXN5bmNfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FzeW5jX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZ1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aXRoX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNsYXNzZGVmOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2xhc3ModHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlY29yYXRlZDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RlY29yYXRlZCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICAiVHJpdmlhbCIgcGFyc2UgdHJlZSBub2Rlcy4KLSAgICAgICAgICAgICAqICAoV2h5IGRpZCBJIGNhbGwgdGhlc2UgdHJpdmlhbD8pCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIHN0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBzbWFsbF9zdG10OgotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBleHByX3N0bXQgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8Ci0gICAgICAgICAgICAgKiAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IG5vbmxvY2FsX3N0bXQgfCBhc3NlcnRfc3RtdAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zbWFsbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmbG93X3N0bXQ6Ci0gICAgICAgICAgICByZXMgID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJmbG93X3N0bXQiKQotICAgICAgICAgICAgICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGJyZWFrX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gY29udGludWVfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSB5aWVsZF9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHJldHVybl9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHJhaXNlX3N0bXQpKSk7Ci0gICAgICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgICAgIG5leHQgPSBDSElMRCh0cmVlLCAwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZmxvd19zdG10IHR5cGUiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgeWllbGRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3lpZWxkX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgQ29tcG91bmQgc3RhdGVtZW50cy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc2ltcGxlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29tcG91bmRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBvdW5kX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgRnVuZGFtZW50YWwgc3RhdGVtZW50cy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2UgZXhwcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXhwcl9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBkZWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RlbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBwYXNzX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInBhc3MiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJwYXNzIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBicmVha19zdG10OgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJicmVhayIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImJyZWFrIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb250aW51ZV9zdG10OgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb250aW51ZSIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImNvbnRpbnVlIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSByZXR1cm5fc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3JldHVybl9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSByYWlzZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmFpc2Vfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X25hbWU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfbmFtZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X2Zyb206Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfZnJvbSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZ2xvYmFsX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9nbG9iYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugbm9ubG9jYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vbmxvY2FsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFzc2VydF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXNzZXJ0X3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGlmX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pZih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugd2hpbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3doaWxlKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmb3Jfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Zvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdHJ5X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90cnkodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHN1aXRlOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3VpdGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgRXhwcmVzc2lvbiBub2Rlcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2UgdGVzdGxpc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgeWllbGRfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3lpZWxkX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHRlc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhbmRfdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FuZF90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub3RfdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vdF90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wYXJpc29uOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcGFyaXNvbih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcmxpc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHBybGlzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29tcF9vcDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfb3AodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGV4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB4b3JfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3hvcl9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhbmRfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FuZF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBzaGlmdF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2hpZnRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXJpdGhfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FyaXRoX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHRlcm06Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXJtKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmYWN0b3I6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mYWN0b3IodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBvd2VyOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcG93ZXIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGF0b206Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hdG9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLyogSG9wZWZ1bGx5IG5ldmVyIHJlYWNoZWQhICovCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlIik7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgdHJlZSA9IG5leHQ7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfZXZhbF9pbnB1dCh0cmVlKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJjb3VsZCBub3QgdmFsaWRhdGUgZXhwcmVzc2lvbiB0dXBsZSIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBmaWxlX2lucHV0OgotICogICAgICAoTkVXTElORSB8IHN0bXQpKiBFTkRNQVJLRVIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSkgLSAxOwotICAgIGludCByZXMgPSAoKG5jaCA+PSAwKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgbmNoKSwgRU5ETUFSS0VSKSk7Ci0KLSAgICBmb3IgKGogPSAwOyByZXMgJiYgKGogPCBuY2gpOyArK2opIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaikpID09IHN0bXQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIGopKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbmV3bGluZShDSElMRCh0cmVlLCBqKSk7Ci0gICAgfQotICAgIC8qICBUaGlzIHN0YXlzIGluIHRvIHByZXZlbnQgYW55IGludGVybmFsIGZhaWx1cmVzIGZyb20gZ2V0dGluZyB0byB0aGUKLSAgICAgKiAgdXNlci4gIEhvcGVmdWxseSwgdGhpcyB3b24ndCBiZSBuZWVkZWQuICBJZiBhIHVzZXIgcmVwb3J0cyBnZXR0aW5nCi0gICAgICogIHRoaXMsIHdlIGhhdmUgc29tZSBkZWJ1Z2dpbmcgdG8gZG8uCi0gICAgICovCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoIlZBTElEQVRJT04gRkFJTFVSRTogcmVwb3J0IHRoaXMgdG8gdGhlIG1haW50YWluZXIhIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2VuY29kaW5nX2RlY2wobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoKG5jaCA9PSAxKQotICAgICAgICAmJiB2YWxpZGF0ZV9maWxlX2lucHV0KENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiRXJyb3IgUGFyc2luZyBlbmNvZGluZ19kZWNsIik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCiBzdGF0aWMgUHlPYmplY3QqCiBwaWNrbGVfY29uc3RydWN0b3IgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggM2U0NDZhNS4uMzNlZTcwZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtMzIsNiArMzIsMTIgQEAKICNpbmNsdWRlICJ3aW5yZXBhcnNlLmgiCiAjZW5kaWYKIAorLyogT24gYW5kcm9pZCBBUEkgbGV2ZWwgMjEsICdBVF9FQUNDRVNTJyBpcyBub3QgZGVjbGFyZWQgYWx0aG91Z2gKKyAqIEhBVkVfRkFDQ0VTU0FUIGlzIGRlZmluZWQuICovCisjaWZkZWYgX19BTkRST0lEX18KKyN1bmRlZiBIQVZFX0ZBQ0NFU1NBVAorI2VuZGlmCisKICNpbmNsdWRlIDxzdGRpby5oPiAgLyogbmVlZGVkIGZvciBjdGVybWlkKCkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0xMjcsNiArMTMzLDEzIEBACiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX1JBTkRPTV9ICisjICBpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyMgIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKICMgIGRlZmluZSBURVJNU0laRV9VU0VfQ09OSU8KICNlbGlmIGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkKQEAgLTE1MSw2ICsxNjQsOCBAQAogI2RlZmluZSBIQVZFX0dFVExPR0lOICAgMQogI2RlZmluZSBIQVZFX1NQQVdOViAgICAgMQogI2RlZmluZSBIQVZFX0VYRUNWICAgICAgMQorI2RlZmluZSBIQVZFX1dTUEFXTlYgICAgMQorI2RlZmluZSBIQVZFX1dFWEVDViAgICAgMQogI2RlZmluZSBIQVZFX1BJUEUgICAgICAgMQogI2RlZmluZSBIQVZFX1NZU1RFTSAgICAgMQogI2RlZmluZSBIQVZFX0NXQUlUICAgICAgMQpAQCAtNjM0LDIyICs2NDksMTQgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jICBkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSNlbHNlCi0jICBkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZwotI2VuZGlmCisjZGVmaW5lIF9QeUxvbmdfRnJvbURldiBQeUxvbmdfRnJvbUxvbmdMb25nCiAKIAogI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCiBzdGF0aWMgaW50CiBfUHlfRGV2X0NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCB2b2lkICpwKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgKigoZGV2X3QgKilwKSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKTsKLSNlbHNlCi0gICAgKigoZGV2X3QgKilwKSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhvYmopOwotI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwpAQCAtNjcxLDIxICs2NzgsMjAgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1fZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnAsIGNvbnN0IGNoYXIgKmFsbG93ZWQpCitfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnApCiB7CiAgICAgaW50IG92ZXJmbG93OwogICAgIGxvbmcgbG9uZ192YWx1ZTsKIAogICAgIFB5T2JqZWN0ICppbmRleCA9IFB5TnVtYmVyX0luZGV4KG8pOwogICAgIGlmIChpbmRleCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQsIFB5X1RZUEUobyktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKGluZGV4KSk7CiAgICAgbG9uZ192YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpbmRleCwgJm92ZXJmbG93KTsKICAgICBQeV9ERUNSRUYoaW5kZXgpOworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgaWYgKG92ZXJmbG93ID4gMCB8fCBsb25nX3ZhbHVlID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmZCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSIpOwpAQCAtNzA4LDcgKzcxNCwxNSBAQAogICAgICAgICAqKGludCAqKXAgPSBERUZBVUxUX0RJUl9GRDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHJldHVybiBfZmRfY29udmVydGVyKG8sIChpbnQgKilwLCAiaW50ZWdlciIpOworICAgIGVsc2UgaWYgKFB5SW5kZXhfQ2hlY2sobykpIHsKKyAgICAgICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiB9CiAKIApAQCAtNzIzLDcgKzczNyw3IEBACiAgKgogICogICAqIE9uIFdpbmRvd3MsIGlmIHdlIGdldCBhIChVbmljb2RlKSBzdHJpbmcgd2UKICAqICAgICBleHRyYWN0IHRoZSB3Y2hhcl90ICogYW5kIHJldHVybiBpdDsgaWYgd2UgZ2V0Ci0gKiAgICAgYnl0ZXMgd2UgZXh0cmFjdCB0aGUgY2hhciAqIGFuZCByZXR1cm4gdGhhdC4KKyAqICAgICBieXRlcyB3ZSBkZWNvZGUgdG8gd2NoYXJfdCAqIGFuZCByZXR1cm4gdGhhdC4KICAqCiAgKiAgICogT24gYWxsIG90aGVyIHBsYXRmb3Jtcywgc3RyaW5ncyBhcmUgZW5jb2RlZAogICogICAgIHRvIGJ5dGVzIHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgdGhlbiB3ZQpAQCAtNzU1LDcgKzc2OSw5IEBACiAgKiAgICAgYW5kIHdhcyBub3QgZW5jb2RlZC4gIChPbmx5IHVzZWQgb24gV2luZG93cy4pCiAgKiAgIHBhdGgubmFycm93CiAgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgYnl0ZXMsCi0gKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLgorICogICAgIG9yIGl0IHdhcyBVbmljb2RlIGFuZCB3YXMgZW5jb2RlZCB0byBieXRlcy4gKE9uIFdpbmRvd3MsCisgKiAgICAgaXMgYSBub24temVybyBpbnRlZ2VyIGlmIHRoZSBwYXRoIHdhcyBleHByZXNzZWQgYXMgYnl0ZXMuCisgKiAgICAgVGhlIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGluY29tcGF0aWJsZSB0byBwcmV2ZW50IG1pc3VzZS4pCiAgKiAgIHBhdGguZmQKICAqICAgICBDb250YWlucyBhIGZpbGUgZGVzY3JpcHRvciBpZiBwYXRoLmFjY2VwdF9mZCB3YXMgdHJ1ZQogICogICAgIGFuZCB0aGUgY2FsbGVyIHByb3ZpZGVkIGEgc2lnbmVkIGludGVnZXIgaW5zdGVhZCBvZiBhbnkKQEAgLTc2OSw3ICs3ODUsOSBAQAogICogICAgIFRoZSBsZW5ndGggb2YgdGhlIHBhdGggaW4gY2hhcmFjdGVycywgaWYgc3BlY2lmaWVkIGFzCiAgKiAgICAgYSBzdHJpbmcuCiAgKiAgIHBhdGgub2JqZWN0Ci0gKiAgICAgVGhlIG9yaWdpbmFsIG9iamVjdCBwYXNzZWQgaW4uCisgKiAgICAgVGhlIG9yaWdpbmFsIG9iamVjdCBwYXNzZWQgaW4gKGlmIGdldCBhIFBhdGhMaWtlIG9iamVjdCwKKyAqICAgICB0aGUgcmVzdWx0IG9mIFB5T1NfRlNQYXRoKCkgaXMgdHJlYXRlZCBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0KS4KKyAqICAgICBPd24gYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KICAqICAgcGF0aC5jbGVhbnVwCiAgKiAgICAgRm9yIGludGVybmFsIHVzZSBvbmx5LiAgTWF5IHBvaW50IHRvIGEgdGVtcG9yYXJ5IG9iamVjdC4KICAqICAgICAoUGF5IG5vIGF0dGVudGlvbiB0byB0aGUgbWFuIGJlaGluZCB0aGUgY3VydGFpbi4pCkBAIC03OTksMzAgKzgxNyw0NSBAQAogICAgIGNvbnN0IGNoYXIgKmFyZ3VtZW50X25hbWU7CiAgICAgaW50IG51bGxhYmxlOwogICAgIGludCBhbGxvd19mZDsKLSAgICB3Y2hhcl90ICp3aWRlOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBjb25zdCB3Y2hhcl90ICp3aWRlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIG5hcnJvdzsKKyNlbHNlCisgICAgY29uc3QgY2hhciAqbmFycm93OworI2VuZGlmCiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiAgICAgUHlPYmplY3QgKmNsZWFudXA7CiB9IHBhdGhfdDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCisgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgRkFMU0UsIC0xLCAwLCBOVUxMLCBOVUxMfQorI2Vsc2UKICNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCiAgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgTlVMTCwgLTEsIDAsIE5VTEwsIE5VTEx9CisjZW5kaWYKIAogc3RhdGljIHZvaWQKLXBhdGhfY2xlYW51cChwYXRoX3QgKnBhdGgpIHsKLSAgICBpZiAocGF0aC0+Y2xlYW51cCkgewotICAgICAgICBQeV9DTEVBUihwYXRoLT5jbGVhbnVwKTsKLSAgICB9CitwYXRoX2NsZWFudXAocGF0aF90ICpwYXRoKQoreworICAgIFB5X0NMRUFSKHBhdGgtPm9iamVjdCk7CisgICAgUHlfQ0xFQVIocGF0aC0+Y2xlYW51cCk7CiB9CiAKIHN0YXRpYyBpbnQKLXBhdGhfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkKK3sKICAgICBwYXRoX3QgKnBhdGggPSAocGF0aF90ICopcDsKLSAgICBQeU9iamVjdCAqdW5pY29kZSwgKmJ5dGVzOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBQeU9iamVjdCAqYnl0ZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKKyAgICBpbnQgaXNfaW5kZXgsIGlzX2J1ZmZlciwgaXNfYnl0ZXMsIGlzX3VuaWNvZGU7CisgICAgY29uc3QgY2hhciAqbmFycm93OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd28gPSBOVUxMOworICAgIGNvbnN0IHdjaGFyX3QgKndpZGU7CisjZW5kaWYKIAogI2RlZmluZSBGT1JNQVRfRVhDRVBUSU9OKGV4YywgZm10KSBcCiAgICAgUHlFcnJfRm9ybWF0KGV4YywgIiVzJXMiIGZtdCwgXApAQCAtODM2LDEyMiArODY5LDE5NCBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICAvKiBlbnN1cmUgaXQncyBhbHdheXMgc2FmZSB0byBjYWxsIHBhdGhfY2xlYW51cCgpICovCi0gICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CisgICAgLyogRW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKS4gKi8KKyAgICBwYXRoLT5vYmplY3QgPSBwYXRoLT5jbGVhbnVwID0gTlVMTDsKKyAgICAvKiBwYXRoLT5vYmplY3Qgb3ducyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgb2JqZWN0ICovCisgICAgUHlfSU5DUkVGKG8pOwogCi0gICAgaWYgKG8gPT0gUHlfTm9uZSkgewotICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgaWYgKChvID09IFB5X05vbmUpICYmIHBhdGgtPm51bGxhYmxlKSB7CiAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQogICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwotICAgICAgICBwYXRoLT5sZW5ndGggPSAwOwotICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworI2VuZGlmCiAgICAgICAgIHBhdGgtPmZkID0gLTE7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICBnb3RvIHN1Y2Nlc3NfZXhpdDsKICAgICB9CiAKLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21PYmplY3Qobyk7Ci0gICAgaWYgKHVuaWNvZGUpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHdjaGFyX3QgKndpZGU7CisgICAgLyogT25seSBjYWxsIHRoaXMgaGVyZSBzbyB0aGF0IHdlIGRvbid0IHRyZWF0IHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgICBvcy5mc3BhdGgoKSBhcyBhbiBmZCBvciBidWZmZXIuICovCisgICAgaXNfaW5kZXggPSBwYXRoLT5hbGxvd19mZCAmJiBQeUluZGV4X0NoZWNrKG8pOworICAgIGlzX2J1ZmZlciA9IFB5T2JqZWN0X0NoZWNrQnVmZmVyKG8pOworICAgIGlzX2J5dGVzID0gUHlCeXRlc19DaGVjayhvKTsKKyAgICBpc191bmljb2RlID0gUHlVbmljb2RlX0NoZWNrKG8pOwogCi0gICAgICAgIHdpZGUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmbGVuZ3RoKTsKKyAgICBpZiAoIWlzX2luZGV4ICYmICFpc19idWZmZXIgJiYgIWlzX3VuaWNvZGUgJiYgIWlzX2J5dGVzKSB7CisgICAgICAgIC8qIElubGluZSBQeU9TX0ZTUGF0aCgpIGZvciBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuICovCisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisKKyAgICAgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fZnNwYXRoX18pOworICAgICAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2Zvcm1hdDsKKyAgICAgICAgfQorICAgICAgICAvKiBzdGlsbCBvd25zIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QgKi8KKyAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICBvID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAoTlVMTCA9PSBvKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc191bmljb2RlID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc19ieXRlcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2Zvcm1hdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpc191bmljb2RlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUobywgJmxlbmd0aCk7CiAgICAgICAgIGlmICghd2lkZSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CiAgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CiAgICAgICAgIH0KIAogICAgICAgICBwYXRoLT53aWRlID0gd2lkZTsKLSAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKLSAgICAgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBGQUxTRTsKICAgICAgICAgcGF0aC0+ZmQgPSAtMTsKLSAgICAgICAgcGF0aC0+Y2xlYW51cCA9IHVuaWNvZGU7Ci0gICAgICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICAgICAgZ290byBzdWNjZXNzX2V4aXQ7CiAjZWxzZQotICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCi0gICAgICAgICAgICBieXRlcyA9IE5VTEw7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIobykpCi0gICAgICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChvKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworICAgIGVsc2UgaWYgKGlzX2J5dGVzKSB7CisgICAgICAgIGJ5dGVzID0gbzsKKyAgICAgICAgUHlfSU5DUkVGKGJ5dGVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfYnVmZmVyKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7CiAgICAgICAgIGlmICghYnl0ZXMpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBpZiAocGF0aC0+YWxsb3dfZmQpIHsKLSAgICAgICAgICAgICAgICBpbnQgZmQ7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IF9mZF9jb252ZXJ0ZXIobywgJmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciIpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFieXRlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQorICAgIGVsc2UgaWYgKGlzX2luZGV4KSB7CisgICAgICAgIGlmICghX2ZkX2NvbnZlcnRlcihvLCAmcGF0aC0+ZmQpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQorICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwogI2VuZGlmCisgICAgICAgIGdvdG8gc3VjY2Vzc19leGl0OworICAgIH0KKyAgICBlbHNlIHsKKyBlcnJvcl9mb3JtYXQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgfQogCiAgICAgbGVuZ3RoID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChsZW5ndGggPiBNQVhfUEFUSC0xKSB7Ci0gICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNlbmRpZgotCiAgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwogICAgIGlmICgoc2l6ZV90KWxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgewogICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOwotICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZ290byBlcnJvcl9leGl0OwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3byA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKAorICAgICAgICBuYXJyb3csCisgICAgICAgIGxlbmd0aAorICAgICk7CisgICAgaWYgKCF3bykgeworICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgfQorCisgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHdvLCAmbGVuZ3RoKTsKKyAgICBpZiAoIXdpZGUpIHsKKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIH0KKyAgICBpZiAobGVuZ3RoID4gMzI3NjcpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIH0KKyAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgfQorICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgIHBhdGgtPm5hcnJvdyA9IFRSVUU7CisgICAgcGF0aC0+Y2xlYW51cCA9IHdvOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisjZWxzZQogICAgIHBhdGgtPndpZGUgPSBOVUxMOwogICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyAgICBpZiAoYnl0ZXMgPT0gbykgeworICAgICAgICAvKiBTdGlsbCBhIHJlZmVyZW5jZSBvd25lZCBieSBwYXRoLT5vYmplY3QsIGRvbid0IGhhdmUgdG8KKyAgICAgICAgICAgd29ycnkgYWJvdXQgcGF0aC0+bmFycm93IGlzIHVzZWQgYWZ0ZXIgZnJlZS4gKi8KKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICB9CisjZW5kaWYKKyAgICBwYXRoLT5mZCA9IC0xOworCisgc3VjY2Vzc19leGl0OgogICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKICAgICBwYXRoLT5vYmplY3QgPSBvOwotICAgIHBhdGgtPmZkID0gLTE7Ci0gICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOwogICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKworIGVycm9yX2V4aXQ6CisgICAgUHlfWERFQ1JFRihvKTsKKyAgICBQeV9YREVDUkVGKGJ5dGVzKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfWERFQ1JFRih3byk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKLWFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGNoYXIgKmFyZ3VtZW50X25hbWUpIHsKK2FyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGNvbnN0IGNoYXIgKmFyZ3VtZW50X25hbWUpCit7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICIlcyVzJXMgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCiAgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gZnVuY3Rpb25fbmFtZSA6ICIiLApAQCAtOTc0LDcgKzEwNzksOCBAQAogfQogCiBzdGF0aWMgaW50Ci1mZF9zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkKSB7CitmZF9zcGVjaWZpZWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkKQorewogICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTk4Myw3ICsxMDg5LDggQEAKIH0KIAogc3RhdGljIGludAotZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKSB7Citmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTk5Miw4ICsxMDk5LDEzIEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkgewotICAgIGlmICghcGF0aC0+bmFycm93ICYmICFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CitwYXRoX2FuZF9kaXJfZmRfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCit7CisgICAgaWYgKCFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgJiYgIXBhdGgtPm5hcnJvdworI2VuZGlmCisgICAgKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGRpcl9mZCB3aXRob3V0IG1hdGNoaW5nIHBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CkBAIC0xMDAzLDcgKzExMTUsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1kaXJfZmRfYW5kX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwgaW50IGZkKSB7CitkaXJfZmRfYW5kX2ZkX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwgaW50IGZkKQorewogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoZmQgIT0gLTEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGJvdGggZGlyX2ZkIGFuZCBmZCIsCkBAIC0xMDE0LDggKzExMjcsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoKGZkID4gMCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLApAQCAtMTAyNiw4ICsxMTQwLDkgQEAKIH0KIAogc3RhdGljIGludAotZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CitkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCkBAIC0xMDM4LDcgKzExNTMsNyBAQAogfQogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHR5cGVkZWYgUFlfTE9OR19MT05HIFB5X29mZl90OworICAgIHR5cGVkZWYgbG9uZyBsb25nIFB5X29mZl90OwogI2Vsc2UKICAgICB0eXBlZGVmIG9mZl90IFB5X29mZl90OwogI2VuZGlmCkBAIC0xMDY2LDQxICsxMTgxLDEzIEBACiAjZW5kaWYKIH0KIAotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAotLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZF9kdXAyIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KLSAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKLSAqLwotI2RlZmluZSBJT0lORk9fTDJFIDUKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCi0jZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiB0aGUgc3BlY2lhbCBjYXNlIG9mIGNoZWNraW5nIGR1cDIuICBUaGUgdGFyZ2V0IGZkIG11c3QgYmUgaW4gYSBzZW5zaWJsZSByYW5nZSAqLwotc3RhdGljIGludAotX1B5VmVyaWZ5X2ZkX2R1cDIoaW50IGZkMSwgaW50IGZkMikKLXsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZDEpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZmQyID09IF9OT19DT05TT0xFX0ZJTEVOTykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCh1bnNpZ25lZClmZDIgPCBfTkhBTkRMRV8pCi0gICAgICAgIHJldHVybiAxOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmRfZHVwMihmZDEsIGZkMikgKF9QeVZlcmlmeV9mZChmZDEpICYmIChmZDIpID49IDApCi0jZW5kaWYKLQogI2lmZGVmIE1TX1dJTkRPV1MKIAogc3RhdGljIGludAogd2luMzJfZ2V0X3JlcGFyc2VfdGFnKEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZSwgVUxPTkcgKnJlcGFyc2VfdGFnKQogewotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOworICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOworICAgIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwogICAgIERXT1JEIG5fYnl0ZXNfcmV0dXJuZWQ7CiAKICAgICBpZiAoMCA9PSBEZXZpY2VJb0NvbnRyb2woCkBAIC0xMTU5LDcgKzEyNDYsNyBAQAogICAgIGZvciAoZSA9IF93ZW52aXJvbjsgKmUgIT0gTlVMTDsgZSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICprOwogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgd2NoYXJfdCAqcCA9IHdjc2NocigqZSwgTCc9Jyk7CisgICAgICAgIGNvbnN0IHdjaGFyX3QgKnAgPSB3Y3NjaHIoKmUsIEwnPScpOwogICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGsgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCplLCAoUHlfc3NpemVfdCkocC0qZSkpOwpAQCAtMTE4Nyw3ICsxMjc0LDcgQEAKICAgICBmb3IgKGUgPSBlbnZpcm9uOyAqZSAhPSBOVUxMOyBlKyspIHsKICAgICAgICAgUHlPYmplY3QgKms7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICBjaGFyICpwID0gc3RyY2hyKCplLCAnPScpOworICAgICAgICBjb25zdCBjaGFyICpwID0gc3RyY2hyKCplLCAnPScpOwogICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGsgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCplLCAoaW50KShwLSplKSk7CkBAIC0xMjIyLDcgKzEzMDksNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2Vycm9yKGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yKGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggV2Ugc2hvdWxkIHBhc3MgdGhlIGZ1bmN0aW9uIG5hbWUgYWxvbmcgaW4gdGhlIGZ1dHVyZS4KICAgICAgICAod2lucmVnLmMgYWxzbyB3YW50cyB0byBwYXNzIHRoZSBmdW5jdGlvbiBuYW1lLikKQEAgLTEyMzcsNyArMTMyNCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl9vYmplY3QoY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX29iamVjdChjb25zdCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC0xMjUzLDI3ICsxMzQwLDM3IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcGF0aF9lcnJvcihwYXRoX3QgKnBhdGgpCitwYXRoX29iamVjdF9lcnJvcihQeU9iamVjdCAqcGF0aCkKIHsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHBhdGgtPm9iamVjdCk7CisgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAorICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsIDAsIHBhdGgpOwogI2Vsc2UKLSAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgtPm9iamVjdCk7CisgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoKTsKICNlbmRpZgogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcGF0aF9vYmplY3RfZXJyb3IyKFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqcGF0aDIpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHMoCisgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgMCwgcGF0aCwgcGF0aDIpOworI2Vsc2UKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cyhQeUV4Y19PU0Vycm9yLCBwYXRoLCBwYXRoMik7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfZXJyb3IocGF0aF90ICpwYXRoKQoreworICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcihwYXRoLT5vYmplY3QpOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogcGF0aF9lcnJvcjIocGF0aF90ICpwYXRoLCBwYXRoX3QgKnBhdGgyKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3RzKFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAwLCBwYXRoLT5vYmplY3QsIHBhdGgyLT5vYmplY3QpOwotI2Vsc2UKLSAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cyhQeUV4Y19PU0Vycm9yLAotICAgICAgICBwYXRoLT5vYmplY3QsIHBhdGgyLT5vYmplY3QpOwotI2VuZGlmCisgICAgcmV0dXJuIHBhdGhfb2JqZWN0X2Vycm9yMihwYXRoLT5vYmplY3QsIHBhdGgyLT5vYmplY3QpOwogfQogCiAKQEAgLTEyOTcsOSArMTM5NCw2IEBACiAgICAgaW50IHJlczsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KICAgICBkbyB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSApAQCAtMTMyMCwzMSArMTQxNCw2IEBACiAgICBpdCBhbHNvIG5lZWRzIHRvIHNldCAibWFnaWMiIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbmRpY2F0aW5nCiAgICB0aGUgcGVyLWRyaXZlIGN1cnJlbnQgZGlyZWN0b3J5LCB3aGljaCBhcmUgb2YgdGhlIGZvcm0gPTxkcml2ZT46ICovCiBzdGF0aWMgQk9PTCBfX3N0ZGNhbGwKLXdpbjMyX2NoZGlyKExQQ1NUUiBwYXRoKQotewotICAgIGNoYXIgbmV3X3BhdGhbTUFYX1BBVEhdOwotICAgIGludCByZXN1bHQ7Ci0gICAgY2hhciBlbnZbNF0gPSAiPXg6IjsKLQotICAgIGlmKCFTZXRDdXJyZW50RGlyZWN0b3J5QShwYXRoKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIHJlc3VsdCA9IEdldEN1cnJlbnREaXJlY3RvcnlBKFB5X0FSUkFZX0xFTkdUSChuZXdfcGF0aCksIG5ld19wYXRoKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIC8qIEluIHRoZSBBTlNJIEFQSSwgdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgcGF0aHMgbG9uZ2VyCi0gICAgICAgdGhhbiBNQVhfUEFUSC0xIChub3QgaW5jbHVkaW5nIHRoZSBmaW5hbCBudWxsIGNoYXJhY3RlcikuICovCi0gICAgYXNzZXJ0KHJlc3VsdCA8IFB5X0FSUkFZX0xFTkdUSChuZXdfcGF0aCkpOwotICAgIGlmIChzdHJuY21wKG5ld19wYXRoLCAiXFxcXCIsIDIpID09IDAgfHwKLSAgICAgICAgc3RybmNtcChuZXdfcGF0aCwgIi8vIiwgMikgPT0gMCkKLSAgICAgICAgLyogVU5DIHBhdGgsIG5vdGhpbmcgdG8gZG8uICovCi0gICAgICAgIHJldHVybiBUUlVFOwotICAgIGVudlsxXSA9IG5ld19wYXRoWzBdOwotICAgIHJldHVybiBTZXRFbnZpcm9ubWVudFZhcmlhYmxlQShlbnYsIG5ld19wYXRoKTsKLX0KLQotLyogVGhlIFVuaWNvZGUgdmVyc2lvbiBkaWZmZXJzIGZyb20gdGhlIEFOU0kgdmVyc2lvbgotICAgc2luY2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG1pZ2h0IGV4Y2VlZCBNQVhfUEFUSCBjaGFyYWN0ZXJzICovCi1zdGF0aWMgQk9PTCBfX3N0ZGNhbGwKIHdpbjMyX3djaGRpcihMUENXU1RSIHBhdGgpCiB7CiAgICAgd2NoYXJfdCBwYXRoX2J1ZltNQVhfUEFUSF0sICpuZXdfcGF0aCA9IHBhdGhfYnVmOwpAQCAtMTM5MCwzMyArMTQ1OSwxMCBAQAogI2RlZmluZSBIQVZFX1NUQVRfTlNFQyAxCiAjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfRklMRV9BVFRSSUJVVEVTIDEKIAotc3RhdGljIEJPT0wKLWF0dHJpYnV0ZXNfZnJvbV9kaXIoTFBDU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCi17Ci0gICAgSEFORExFIGhGaW5kRmlsZTsKLSAgICBXSU4zMl9GSU5EX0RBVEFBIEZpbGVEYXRhOwotICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVBKHBzekZpbGUsICZGaWxlRGF0YSk7Ci0gICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKLSAgICAqcmVwYXJzZV90YWcgPSAwOwotICAgIGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMgPSBGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzOwotICAgIGluZm8tPmZ0Q3JlYXRpb25UaW1lICAgPSBGaWxlRGF0YS5mdENyZWF0aW9uVGltZTsKLSAgICBpbmZvLT5mdExhc3RBY2Nlc3NUaW1lID0gRmlsZURhdGEuZnRMYXN0QWNjZXNzVGltZTsKLSAgICBpbmZvLT5mdExhc3RXcml0ZVRpbWUgID0gRmlsZURhdGEuZnRMYXN0V3JpdGVUaW1lOwotICAgIGluZm8tPm5GaWxlU2l6ZUhpZ2ggICAgPSBGaWxlRGF0YS5uRmlsZVNpemVIaWdoOwotICAgIGluZm8tPm5GaWxlU2l6ZUxvdyAgICAgPSBGaWxlRGF0YS5uRmlsZVNpemVMb3c7Ci0vKiAgaW5mby0+bk51bWJlck9mTGlua3MgICA9IDE7ICovCi0gICAgaWYgKEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKQotICAgICAgICAqcmVwYXJzZV90YWcgPSBGaWxlRGF0YS5kd1Jlc2VydmVkMDsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQogc3RhdGljIHZvaWQKLWZpbmRfZGF0YV90b19maWxlX2luZm9fdyhXSU4zMl9GSU5EX0RBVEFXICpwRmlsZURhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgKnJlcGFyc2VfdGFnKQorZmluZF9kYXRhX3RvX2ZpbGVfaW5mbyhXSU4zMl9GSU5EX0RBVEFXICpwRmlsZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCiB7CiAgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwogICAgIGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMgPSBwRmlsZURhdGEtPmR3RmlsZUF0dHJpYnV0ZXM7CkBAIC0xNDMzLDcgKzE0NzksNyBAQAogfQogCiBzdGF0aWMgQk9PTAotYXR0cmlidXRlc19mcm9tX2Rpcl93KExQQ1dTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKK2F0dHJpYnV0ZXNfZnJvbV9kaXIoTFBDV1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQogewogICAgIEhBTkRMRSBoRmluZEZpbGU7CiAgICAgV0lOMzJfRklORF9EQVRBVyBGaWxlRGF0YTsKQEAgLTE0NDEsNyArMTQ4Nyw3IEBACiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdygmRmlsZURhdGEsIGluZm8sIHJlcGFyc2VfdGFnKTsKKyAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvKCZGaWxlRGF0YSwgaW5mbywgcmVwYXJzZV90YWcpOwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC0xNDU4LDcgKzE1MDQsNyBAQAogICAgIGlmKCFidWZfc2l6ZSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgYnVmID0gUHlNZW1fTmV3KHdjaGFyX3QsIGJ1Zl9zaXplKzEpOworICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fUmF3TWFsbG9jKChidWZfc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAoIWJ1ZikgewogICAgICAgICBTZXRMYXN0RXJyb3IoRVJST1JfT1VUT0ZNRU1PUlkpOwogICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0xNDY4LDEyICsxNTE0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CiAKICAgICBpZighcmVzdWx0X2xlbmd0aCkgewotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAogICAgIGlmKCFDbG9zZUhhbmRsZShoZGwpKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0xNDg0LDEwICsxNTMwLDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKTsKLXN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGwoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAord2luMzJfeHN0YXRfaW1wbChjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgaW50IGNvZGU7CkBAIC0xNDk1LDkgKzE1MzgsOSBAQAogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87CiAgICAgVUxPTkcgcmVwYXJzZV90YWcgPSAwOwogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwotICAgIGNvbnN0IGNoYXIgKmRvdDsKKyAgICBjb25zdCB3Y2hhcl90ICpkb3Q7CiAKLSAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKAorICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCiAgICAgICAgIHBhdGgsCiAgICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwogICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCkBAIC0xNTQ4LDk4ICsxNTkxLDYgQEAKICAgICAgICAgICAgIGlmICh0cmF2ZXJzZSkgewogICAgICAgICAgICAgICAgIC8qIEluIG9yZGVyIHRvIGNhbGwgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIHdlIG5lZWQgdG8gb3BlbgogICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIHdpdGhvdXQgdGhlIHJlcGFyc2UgaGFuZGxpbmcgZmxhZyBzZXQuICovCi0gICAgICAgICAgICAgICAgaEZpbGUyID0gQ3JlYXRlRmlsZUEoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBGSUxFX1JFQURfQVRUUklCVVRFUywgRklMRV9TSEFSRV9SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgICAgIGlmIChoRmlsZTIgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgICAgIGlmICghZ2V0X3RhcmdldF9wYXRoKGhGaWxlMiwgJnRhcmdldF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci0gICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh0YXJnZXRfcGF0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwotICAgIH0KLSAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7Ci0KLSAgICAvKiBTZXQgU19JRVhFQyBpZiBpdCBpcyBhbiAuZXhlLCAuYmF0LCAuLi4gKi8KLSAgICBkb3QgPSBzdHJyY2hyKHBhdGgsICcuJyk7Ci0gICAgaWYgKGRvdCkgewotICAgICAgICBpZiAoc3RyaWNtcChkb3QsICIuYmF0IikgPT0gMCB8fCBzdHJpY21wKGRvdCwgIi5jbWQiKSA9PSAwIHx8Ci0gICAgICAgICAgICBzdHJpY21wKGRvdCwgIi5leGUiKSA9PSAwIHx8IHN0cmljbXAoZG90LCAiLmNvbSIpID09IDApCi0gICAgICAgICAgICByZXN1bHQtPnN0X21vZGUgfD0gMDExMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKLXsKLSAgICBpbnQgY29kZTsKLSAgICBIQU5ETEUgaEZpbGUsIGhGaWxlMjsKLSAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBpbmZvOwotICAgIFVMT05HIHJlcGFyc2VfdGFnID0gMDsKLSAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKLSAgICBjb25zdCB3Y2hhcl90ICpkb3Q7Ci0KLSAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAotICAgICAgICBwYXRoLAotICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KLSAgICAgICAgMCwgLyogc2hhcmUgbW9kZSAqLwotICAgICAgICBOVUxMLCAvKiBzZWN1cml0eSBhdHRyaWJ1dGVzICovCi0gICAgICAgIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgIC8qIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTIGlzIHJlcXVpcmVkIHRvIG9wZW4gYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgLyogRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVCBkb2VzIG5vdCBmb2xsb3cgdGhlIHN5bWxpbmsuCi0gICAgICAgICAgIEJlY2F1c2Ugb2YgdGhpcywgY2FsbHMgbGlrZSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgd2lsbCByZXR1cm4KLSAgICAgICAgICAgdGhlIHN5bWxpbmsgcGF0aCBhZ2FpbiBhbmQgbm90IHRoZSBhY3R1YWwgZmluYWwgcGF0aC4gKi8KLSAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMfEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTfAotICAgICAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVCwKLSAgICAgICAgTlVMTCk7Ci0KLSAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgLyogRWl0aGVyIHRoZSB0YXJnZXQgZG9lc24ndCBleGlzdCwgb3Igd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KLSAgICAgICAgICAgZ2V0IGEgaGFuZGxlIHRvIGl0LiBJZiB0aGUgZm9ybWVyLCB3ZSBuZWVkIHRvIHJldHVybiBhbiBlcnJvci4KLSAgICAgICAgICAgSWYgdGhlIGxhdHRlciwgd2UgY2FuIHVzZSBhdHRyaWJ1dGVzX2Zyb21fZGlyLiAqLwotICAgICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgaWYgKGxhc3RFcnJvciAhPSBFUlJPUl9BQ0NFU1NfREVOSUVEICYmCi0gICAgICAgICAgICBsYXN0RXJyb3IgIT0gRVJST1JfU0hBUklOR19WSU9MQVRJT04pCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIC8qIENvdWxkIG5vdCBnZXQgYXR0cmlidXRlcyBvbiBvcGVuIGZpbGUuIEZhbGwgYmFjayB0bwotICAgICAgICAgICByZWFkaW5nIHRoZSBkaXJlY3RvcnkuICovCi0gICAgICAgIGlmICghYXR0cmlidXRlc19mcm9tX2Rpcl93KHBhdGgsICZpbmZvLCAmcmVwYXJzZV90YWcpKQotICAgICAgICAgICAgLyogVmVyeSBzdHJhbmdlLiBUaGlzIHNob3VsZCBub3QgZmFpbCBub3cgKi8KLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGluZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpIHsKLSAgICAgICAgICAgIGlmICh0cmF2ZXJzZSkgewotICAgICAgICAgICAgICAgIC8qIFNob3VsZCB0cmF2ZXJzZSwgYnV0IGNvdWxkIG5vdCBvcGVuIHJlcGFyc2UgcG9pbnQgaGFuZGxlICovCi0gICAgICAgICAgICAgICAgU2V0TGFzdEVycm9yKGxhc3RFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoRmlsZSwgJmluZm8pKSB7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpIHsKLSAgICAgICAgICAgIGlmICghd2luMzJfZ2V0X3JlcGFyc2VfdGFnKGhGaWxlLCAmcmVwYXJzZV90YWcpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgLyogQ2xvc2UgdGhlIG91dGVyIG9wZW4gZmlsZSBoYW5kbGUgbm93IHRoYXQgd2UncmUgYWJvdXQgdG8KLSAgICAgICAgICAgICAgIHJlb3BlbiBpdCB3aXRoIGRpZmZlcmVudCBmbGFncy4gKi8KLSAgICAgICAgICAgIGlmICghQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7Ci0gICAgICAgICAgICAgICAgLyogSW4gb3JkZXIgdG8gY2FsbCBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgd2UgbmVlZCB0byBvcGVuCi0gICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgd2l0aG91dCB0aGUgcmVwYXJzZSBoYW5kbGluZyBmbGFnIHNldC4gKi8KICAgICAgICAgICAgICAgICBoRmlsZTIgPSBDcmVhdGVGaWxlVygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCBGSUxFX1NIQVJFX1JFQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLApAQCAtMTY1MSw4ICsxNjAyLDggQEAKICAgICAgICAgICAgICAgICBpZiAoIWdldF90YXJnZXRfcGF0aChoRmlsZTIsICZ0YXJnZXRfcGF0aCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3codGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOworICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsKHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHRhcmdldF9wYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29kZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCkBAIC0xNjcxLDcgKzE2MjIsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCit3aW4zMl94c3RhdChjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCiAgICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwpAQCAtMTY3OSwxNiArMTYzMCw2IEBACiAgICAgZXJybm8gPSAwOwogICAgIHJldHVybiBjb2RlOwogfQotCi1zdGF0aWMgaW50Ci13aW4zMl94c3RhdF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKLXsKLSAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKLSAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCi0gICAgaW50IGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3cocGF0aCwgcmVzdWx0LCB0cmF2ZXJzZSk7Ci0gICAgZXJybm8gPSAwOwotICAgIHJldHVybiBjb2RlOwotfQogLyogQWJvdXQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6IHdpbjMyX2xzdGF0X3csIHdpbjMyX3N0YXQsIHdpbjMyX3N0YXRfdwogCiAgICBJbiBQb3NpeCwgc3RhdCBhdXRvbWF0aWNhbGx5IHRyYXZlcnNlcyBzeW1saW5rcyBhbmQgcmV0dXJucyB0aGUgc3RhdApAQCAtMTY5OCwzNCArMTYzOSwyMCBAQAogCiAgICBUaGVyZWZvcmUsIHdpbjMyX2xzdGF0IHdpbGwgZ2V0IHRoZSBhdHRyaWJ1dGVzIHRyYWRpdGlvbmFsbHksIGFuZAogICAgd2luMzJfc3RhdCB3aWxsIGZpcnN0IGV4cGxpY2l0bHkgcmVzb2x2ZSB0aGUgc3ltbGluayB0YXJnZXQgYW5kIHRoZW4gd2lsbAotICAgY2FsbCB3aW4zMl9sc3RhdCBvbiB0aGF0IHJlc3VsdC4KLQotICAgVGhlIF93IHJlcHJlc2VudCBVbmljb2RlIGVxdWl2YWxlbnRzIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBBTlNJIGZ1bmN0aW9ucy4gKi8KKyAgIGNhbGwgd2luMzJfbHN0YXQgb24gdGhhdCByZXN1bHQuICovCiAKIHN0YXRpYyBpbnQKLXdpbjMyX2xzdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKK3dpbjMyX2xzdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXQocGF0aCwgcmVzdWx0LCBGQUxTRSk7CiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX2xzdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQotewotICAgIHJldHVybiB3aW4zMl94c3RhdF93KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwotfQotCi1zdGF0aWMgaW50Ci13aW4zMl9zdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKK3dpbjMyX3N0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIFRSVUUpOwogfQogCi1zdGF0aWMgaW50Ci13aW4zMl9zdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQotewotICAgIHJldHVybiB3aW4zMl94c3RhdF93KHBhdGgsIHJlc3VsdCwgVFJVRSk7Ci19Ci0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihzdGF0X3Jlc3VsdF9fZG9jX18sCkBAIC0yMDA3LDcgKzE5MzQsNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9tb2RlKSk7CiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzdC0+c3RfaW5vKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc3QtPnN0X2lubykpOwogI2Vsc2UKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzdC0+c3RfaW5vKSk7CiAjZW5kaWYKQEAgLTIwMjYsNyArMTk1Myw3IEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXN0LT5zdF9zaXplKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc3QtPnN0X3NpemUpKTsKICNlbHNlCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LCBQeUxvbmdfRnJvbUxvbmcoc3QtPnN0X3NpemUpKTsKICNlbmRpZgpAQCAtMjEwNiw3ICsyMDMzLDcgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZG9fc3RhdChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCitwb3NpeF9kb19zdGF0KGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICAgICBTVFJVQ1RfU1RBVCBzdDsKQEAgLTIxMjUsMjggKzIwNTIsMjYgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaWYgKHBhdGgtPmZkICE9IC0xKQogICAgICAgICByZXN1bHQgPSBGU1RBVChwYXRoLT5mZCwgJnN0KTsKLSAgICBlbHNlCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKSB7Ci0gICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLT53aWRlLCAmc3QpOwotICAgIH0KKyAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXQocGF0aC0+d2lkZSwgJnN0KTsKICAgICBlbHNlCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXQocGF0aC0+d2lkZSwgJnN0KTsKKyNlbHNlCisgICAgZWxzZQorI2lmIGRlZmluZWQoSEFWRV9MU1RBVCkKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MU1RBVCAqLwogI2lmZGVmIEhBVkVfRlNUQVRBVAogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAhZm9sbG93X3N5bWxpbmtzKQogICAgICAgICByZXN1bHQgPSBmc3RhdGF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCAmc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOwogICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfRlNUQVRBVCAqLwogICAgICAgICByZXN1bHQgPSBTVEFUKHBhdGgtPm5hcnJvdywgJnN0KTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQgIT0gMCkgewpAQCAtMjQyNiw4ICsyMzUxLDggQEAKICAgICB0eXBlID0gJ2lkX3QnCiAgICAgZm9ybWF0X3VuaXQgPSAnIiBfUHlfUEFSU0VfUElEICInCiAKLWNsYXNzIFB5X2ludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5X2ludHB0cl90JworY2xhc3MgaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50cHRyX3QnCiAgICAgZm9ybWF0X3VuaXQgPSAnIiBfUHlfUEFSU0VfSU5UUFRSICInCiAKIGNsYXNzIFB5X29mZl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKQEAgLTI0NTQsNyArMjM3OSw3IEBACiAgICAgaW1wbF9ieV9yZWZlcmVuY2UgPSBUcnVlOwogCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZmZlNjgzMTZmMTYwNDAxXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD00MThmY2UwZTAxMTQ0NDYxXSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIApAQCAtMjU4MiwxMCArMjUwNyw3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLT53aWRlICE9IE5VTEwpCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CisgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgLyoKQEAgLTI3MDksMTEgKzI2MzEsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfY2hkaXIocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCisgICAgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworICAgIHJlc3VsdCA9ICF3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfRkNIRElSCiAgICAgaWYgKHBhdGgtPmZkICE9IC0xKQpAQCAtMjgwOCwxMCArMjcyNyw3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgaWYgKGF0dHIgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgZWxzZSB7CkBAIC0yODE5LDEwICsyNzM1LDcgQEAKICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhdHRyIHw9IEZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlLCBhdHRyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdywgYXR0cik7CisgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlLCBhdHRyKTsKICAgICB9CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtMzMxOCwxMiArMzIzMSwyMiBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBkbyB7CiAgICAgICAgIGJ1ZmxlbiArPSBjaHVuazsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChidWZsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB0bXBidWYgPSBQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgYnVmbGVuKTsKICAgICAgICAgaWYgKHRtcGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgYnVmID0gdG1wYnVmOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgY3dkID0gZ2V0Y3dkKGJ1ZiwgKGludClidWZsZW4pOworI2Vsc2UKICAgICAgICAgY3dkID0gZ2V0Y3dkKGJ1ZiwgYnVmbGVuKTsKKyNlbmRpZgogICAgIH0gd2hpbGUgKGN3ZCA9PSBOVUxMICYmIGVycm5vID09IEVSQU5HRSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtMzQwNSw3ICszMzI4LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjAwZjYwMDdmZDUyNjlhIGlucHV0PWIwMDk1ZWJiY2JhYTdlMDRdKi8KIHsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgQk9PTCByZXN1bHQ7CisgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgpAQCAtMzQxNywxOCArMzM0MCwxNyBAQAogICAgIH0KICNlbmRpZgogCisjaWZuZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc3JjLT53aWRlKQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtBKGRzdC0+bmFycm93LCBzcmMtPm5hcnJvdywgTlVMTCk7CisgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0zNDQzLDEzICszMzY1LDEzIEBACiAgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdywKICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IEFUX1NZTUxJTktfRk9MTE9XIDogMCk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5LQVQgKi8KICAgICAgICAgcmVzdWx0ID0gbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0zNDYzLDk5ICszMzg1LDM5IEBACiAgICAgUHlPYmplY3QgKnY7CiAgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCi0gICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICB3Y2hhcl90IG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCiAgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlfQVJSQVlfTEVOR1RIKG5hbWVidWYpLTQ7Ci0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKICAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CiAKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykgewotICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOworICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOworICAgIGNvbnN0IHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwotICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKLSAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOwotICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOwotICAgICAgICB9Ci0gICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwotICAgICAgICB3bmFtZWJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBsZW4gKyA1KTsKLSAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7Ci0gICAgICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKLSAgICAgICAgICAgIGlmICh3Y2ggIT0gU0VQICYmIHdjaCAhPSBBTFRTRVAgJiYgd2NoICE9IEwnOicpCi0gICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gU0VQOwotICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCi0gICAgICAgICAgICBpZiAod2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLiIpICE9IDAgJiYKLSAgICAgICAgICAgICAgICB3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuLiIpICE9IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGVXKGhGaW5kRmlsZSwgJndGaWxlRGF0YSk7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgotICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7Ci0KKyAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwb193Y2hhcnMgPSBMIi4iOworICAgICAgICBsZW4gPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvX3djaGFycyA9IHBhdGgtPndpZGU7CisgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLT53aWRlKTsKKyAgICB9CisgICAgLyogVGhlICs1IGlzIHNvIHdlIGNhbiBhcHBlbmQgIlxcKi4qXDAiICovCisgICAgd25hbWVidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgbGVuICsgNSk7CisgICAgaWYgKCF3bmFtZWJ1ZikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLT5uYXJyb3cpOwotICAgIGxlbiA9IHBhdGgtPmxlbmd0aDsKKyAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwotICAgICAgICBpZiAoY2ggIT0gJ1xcJyAmJiBjaCAhPSAnLycgJiYgY2ggIT0gJzonKQotICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSAnXFwnOwotICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOworICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKKyAgICAgICAgaWYgKHdjaCAhPSBTRVAgJiYgd2NoICE9IEFMVFNFUCAmJiB3Y2ggIT0gTCc6JykKKyAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IFNFUDsKKyAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgIH0KLQotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlKG5hbWVidWYsICZGaWxlRGF0YSk7CisgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTM1NjcsOSArMzQyOSwxMyBAQAogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwotICAgICAgICBpZiAoc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4iKSAhPSAwICYmCi0gICAgICAgICAgICBzdHJjbXAoRmlsZURhdGEuY0ZpbGVOYW1lLCAiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKEZpbGVEYXRhLmNGaWxlTmFtZSk7CisgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5uYXJyb3cgJiYgdikgeworICAgICAgICAgICAgICAgIFB5X1NFVFJFRih2LCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CkBAIC0zNTg0LDcgKzM0NTAsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlKGhGaW5kRmlsZSwgJkZpbGVEYXRhKTsKKyAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlVyhoRmluZEZpbGUsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCkBAIC0zNjM5LDcgKzM1MDUsNyBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICAgaWYgKHBhdGgtPm5hcnJvdykgewogICAgICAgICAgICAgbmFtZSA9IHBhdGgtPm5hcnJvdzsKICAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCkBAIC0zNzY1LDQxICszNjMxLDI5IEBACiBvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiODY3OWQ1Njg0NWJjOWIgaW5wdXQ9MzMyZWQ1MzdjMjlkMGEzZV0qLwogewotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgIHsKLSAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgd2NoYXJfdCAqd3RlbXA7Ci0gICAgICAgIERXT1JEIHJlc3VsdDsKLSAgICAgICAgUHlPYmplY3QgKnY7CisgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICB3Y2hhcl90ICp3dGVtcDsKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7Ci0gICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwotICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKLSAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKLSAgICAgICAgcmV0dXJuIHY7CisgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKKyAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CisgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7CisgICAgICAgIGlmICghd291dGJ1ZnApCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOwotICAgICAgICBjaGFyICp0ZW1wOwotCi0gICAgICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgtPm5hcnJvdywgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgtPm9iamVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOworICAgICAgICBpZiAocGF0aC0+bmFycm93KQorICAgICAgICAgICAgUHlfU0VUUkVGKHYsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodikpOworICAgIH0gZWxzZQorICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKKyAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CisgICAgcmV0dXJuIHY7CiB9CiAKIApAQCAtMzgyMSw3ICszNjc1LDcgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAogICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOwogICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCkBAIC0zODgxLDEwICszNzM1LDcgQEAKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzkxMCw3ICszNzYxLDggQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmRjYmQxMDU5Y2VlZjRjIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIHdjaGFyX3QgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKQEAgLTM5ODEsMTAgKzM4MzMsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKKyAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQwMDQsNyArMzg1Myw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQxMDgsNyArMzk1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC00MTI3LDMxICszOTc2LDI4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKKyAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQogICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKQEAgLTQyMzIsMTEgKzQwNzgsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDI3MCw3ICs0MTEzLDkgQEAKIHsKICAgICBsb25nIHJlc3VsdDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlc3VsdCA9IF93c3lzdGVtKGNvbW1hbmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDI4OCw3ICs0MTMzLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTBmYzQzN2RkNGYzM2EwIGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KIHsKICAgICBsb25nIHJlc3VsdDsKLSAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgY29uc3QgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC00MzgyLDExICs0MjI3LDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDU2OCw3ICs0NDEwLDcgQEAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQogCiBzdGF0aWMgaW50Ci11dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCit1dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBpbnQgZmxhZ3MgPSBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVzsKQEAgLTQ2MTAsMTQgKzQ0NTIsMTQgQEAKICAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKQorIyAgZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNlbmRpZgogCi0jZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAotICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQotCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKIAogc3RhdGljIGludAotdXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDYzMyw3ICs0NDc1LDcgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50Ci11dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDc3Niw3ICs0NjE4LDcgQEAKICAgICAgICAgdXRpbWUubm93ID0gMTsKICAgICB9CiAKLSNpZiAhVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmICFkZWZpbmVkKFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCkBAIC00Nzk3LDE0ICs0NjM5LDkgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLT5uYXJyb3csIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTQ4MzAsNyArNDY2Nyw3IEBACiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAgICAgZWxzZQpAQCAtNDg5MCw5ICs0NzI3LDE1IEBACiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiB3Y2hhcl90CisjZWxzZQorI2RlZmluZSBFWEVDVl9DSEFSIGNoYXIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfU1BBV05WKQogc3RhdGljIHZvaWQKLWZyZWVfc3RyaW5nX2FycmF5KGNoYXIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKK2ZyZWVfc3RyaW5nX2FycmF5KEVYRUNWX0NIQVIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC00OTAwLDQwICs0NzQzLDQ3IEBACiAgICAgUHlNZW1fREVMKGFycmF5KTsKIH0KIAotc3RhdGljCi1pbnQgZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgY2hhcioqb3V0KQorc3RhdGljIGludAorZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgRVhFQ1ZfQ0hBUiAqKm91dCkKIHsKLSAgICBQeU9iamVjdCAqYnl0ZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpCisgICAgUHlPYmplY3QgKnViOworICAgIGludCByZXN1bHQgPSAwOworI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihvLCAmdWIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplKzEpOwotICAgIGlmICghKm91dCkgeworICAgICpvdXQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1YiwgJnNpemUpOworICAgIGlmICgqb3V0KQorICAgICAgICByZXN1bHQgPSAxOworI2Vsc2UKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmdWIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh1Yik7CisgICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCpvdXQpIHsKKyAgICAgICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHViKSwgc2l6ZSArIDEpOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0gZWxzZQogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQXNTdHJpbmcoYnl0ZXMpLCBzaXplKzEpOwotICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodWIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKLSAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGksIHBvcywgZW52YzsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqdmFscz1OVUxMOwotICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMjsKLSAgICBjaGFyICpwLCAqaywgKnY7Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDIsICprZXl2YWw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAKICAgICBpID0gUHlNYXBwaW5nX1NpemUoZW52KTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBpICsgMSk7CisgICAgZW52bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGkgKyAxKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk1NywyOCArNDgwNywzNSBAQAogICAgICAgICBpZiAoIWtleSB8fCAhdmFsKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpID09IDApCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihrZXksICZrZXkyKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikgPT0gMCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBrID0gUHlCeXRlc19Bc1N0cmluZyhrZXkyKTsKLSAgICAgICAgdiA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsMik7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoa2V5MikgKyBQeUJ5dGVzX0dFVF9TSVpFKHZhbDIpICsgMjsKLQotICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7Ci0gICAgICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGtleXZhbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIGtleTIsIHZhbDIpOworI2Vsc2UKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbDIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeU9TX3NucHJpbnRmKHAsIGxlbiwgIiVzPSVzIiwgaywgdik7Ci0gICAgICAgIGVudmxpc3RbZW52YysrXSA9IHA7CisgICAgICAgIGtleXZhbCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBQeUJ5dGVzX0FTX1NUUklORyhrZXkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHZhbDIpKTsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKKyAgICAgICAgaWYgKCFrZXl2YWwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChrZXl2YWwsICZlbnZsaXN0W2VudmMrK10pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHZhbHMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKQEAgLTQ5OTAsMTcgKzQ4NDcsMTUgQEAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoa2V5cyk7CiAgICAgUHlfWERFQ1JFRih2YWxzKTsKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCiB7CiAgICAgaW50IGk7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgKmFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDIyLDYgKzQ4NzcsNyBAQAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZgogCiAKQEAgLTUwMjksNyArNDg4NSw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBvcy5leGVjdgogCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUwMzksMTcgKzQ4OTUsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMWRjMzRkZWViNWIwMDQgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNTJmZWMzNGNkMGRhZmQgaW5wdXQ9OWJhYzMxZWZhZTA3ZGFjN10qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MDY1LDggKzQ5MTksMjAgQEAKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKCFhcmd2bGlzdFswXVswXSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJleGVjdigpIGFyZyAyIGZpcnN0IGVsZW1lbnQgY2Fubm90IGJlIGVtcHR5Iik7CisgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV0VYRUNWCisgICAgX3dleGVjdihwYXRoLT53aWRlLCBhcmd2bGlzdCk7CisjZWxzZQorICAgIGV4ZWN2KHBhdGgtPm5hcnJvdywgYXJndmxpc3QpOworI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCkBAIC01MDkyLDggKzQ5NTgsOCBAQAogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjlmYThlNGRhOGJkZTU4IGlucHV0PTYyNjgwNGZhMDkyNjA2ZDldKi8KIHsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBOVUxMOwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IE5VTEw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQpAQCAtNTEwNiw2ICs0OTcyLDExIEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgYXJnYyA9IFB5U2VxdWVuY2VfU2l6ZShhcmd2KTsKKyAgICBpZiAoYXJnYyA8IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJleGVjdmU6IGFyZ3YgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2soZW52KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2ZTogZW52aXJvbm1lbnQgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7CkBAIC01MTE2LDQwICs0OTg3LDUwIEBACiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKyAgICBpZiAoIWFyZ3ZsaXN0WzBdWzBdKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImV4ZWN2ZTogYXJndiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQogCiAgICAgZW52bGlzdCA9IHBhcnNlX2Vudmxpc3QoZW52LCAmZW52Yyk7CiAgICAgaWYgKGVudmxpc3QgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIEhBVkVfRkVYRUNWRQogICAgIGlmIChwYXRoLT5mZCA+IC0xKQogICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICAgICAgX3dleGVjdmUocGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKICAgICAgICAgZXhlY3ZlKHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCiAgICAgcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHdoaWxlICgtLWVudmMgPj0gMCkKLSAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwotICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShlbnZsaXN0LCBlbnZjKTsKICAgZmFpbDoKICAgICBpZiAoYXJndmxpc3QpCiAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KKwogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KIAogCi0jaWZkZWYgSEFWRV9TUEFXTlYKKyNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLnNwYXdudgogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTE1OSwyMCArNTA0MCwxOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNDI3YzBjZTQwZjEwNjM4IGlucHV0PTA0MmM5MWRmYzFlNmRlYmNdKi8KK29zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcxY2QwMzdhOWQ5NmI4MTYgaW5wdXQ9NDMyMjQyNDIzMDMyOTFiZV0qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKKyAgICBpbnRwdHJfdCBzcGF3bnZhbDsKICAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIAogICAgIC8qIHNwYXdudiBoYXMgdGhyZWUgYXJndW1lbnRzOiAobW9kZSwgcGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewogICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7CiAgICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKQEAgLTUxODYsMTggKzUwNjUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEF2b2lkIGNoYW5naW5nIGJlaGF2aW9yIGluIG1haW50ZW5hbmNlIHJlbGVhc2UsIGJ1dAotICAgICAgIHRoZSBwcmV2aW91cyBXaW5kb3dzIGJlaGF2aW9yIHdhcyB0byBjcmFzaCwgc28gdGhpcwotICAgICAgIGlzIGEgImNvbXBhdGlibGUiIGltcHJvdmVtZW50LiAqLwogICAgIGlmIChhcmdjID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgY2Fubm90IGJlIGVtcHR5Iik7CisgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgY2Fubm90IGJlIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSNlbmRpZgogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CkBAIC01MjEwLDcgKzUwODQsNiBAQAogICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgaWYgKGkgPT0gMCAmJiAhYXJndmxpc3RbMF1bMF0pIHsKICAgICAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBpKTsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTUyMTgsNyArNTA5MSw2IEBACiAgICAgICAgICAgICAgICAgInNwYXdudigpIGFyZyAyIGZpcnN0IGVsZW1lbnQgY2Fubm90IGJlIGVtcHR5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKIApAQCAtNTIyNyw3ICs1MDk5LDExIEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKKyNpZmRlZiBIQVZFX1dTUEFXTlYKKyAgICBzcGF3bnZhbCA9IF93c3Bhd252KG1vZGUsIHBhdGgtPndpZGUsIGFyZ3ZsaXN0KTsKKyNlbHNlCisgICAgc3Bhd252YWwgPSBfc3Bhd252KG1vZGUsIHBhdGgtPm5hcnJvdywgYXJndmxpc3QpOworI2VuZGlmCiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01MjQ1LDcgKzUxMjEsNyBAQAogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTI1NywxNiArNTEzMywxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYmNmYTVmN2JhMmY0MjE5IGlucHV0PTAyMzYyZmQ5Mzc5NjNmOGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMGZlODViZTU2ZmUzN2FkIGlucHV0PTNlNDA4MDNlZTdjNGM1ODZdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKIApAQCAtNTI3NCw3ICs1MTQ5LDYgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTI4OCwxMyArNTE2MiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInNwYXdudmUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwogICAgICAgICBnb3RvIGZhaWxfMDsKICAgICB9CisgICAgaWYgKGFyZ2MgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzcGF3bnZlKCkgYXJnIDIgY2Fubm90IGJlIGVtcHR5Iik7CisgICAgICAgIGdvdG8gZmFpbF8wOworICAgIH0KICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhlbnYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhd252ZSgpIGFyZyAzIG11c3QgYmUgYSBtYXBwaW5nIG9iamVjdCIpOwogICAgICAgICBnb3RvIGZhaWxfMDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZmFpbF8wOwpAQCAtNTMwNiw2ICs1MTg1LDEzIEBACiAgICAgICAgICAgICBsYXN0YXJnID0gaTsKICAgICAgICAgICAgIGdvdG8gZmFpbF8xOwogICAgICAgICB9CisgICAgICAgIGlmIChpID09IDAgJiYgIWFyZ3ZsaXN0WzBdWzBdKSB7CisgICAgICAgICAgICBsYXN0YXJnID0gaTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICAgICAgZ290byBmYWlsXzE7CisgICAgICAgIH0KICAgICB9CiAgICAgbGFzdGFyZyA9IGFyZ2M7CiAgICAgYXJndmxpc3RbYXJnY10gPSBOVUxMOwpAQCAtNTMxOSw3ICs1MjA1LDExIEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjaWZkZWYgSEFWRV9XU1BBV05WCisgICAgc3Bhd252YWwgPSBfd3NwYXdudmUobW9kZSwgcGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01NzgzLDE0ICs1NjczLDE0IEBACiAgICAgcGlkOiBwaWRfdAogICAgIC8KIAotUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KK1JldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuCiAKIFRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PWVhZjE2MTkzNjg3NGI4YTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PTk4M2NlN2NiNGE1NjU5ODBdKi8KIHsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CkBAIC01OTUxLDcgKzU4NDEsNyBAQAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCi0jaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQorI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgInB0ZW0iKTsgLyogcHVzaCBwdGVtICovCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgImxkdGVybSIpOyAvKiBwdXNoIGxkdGVybSAqLwogI2lmbmRlZiBfX2hwdXgKQEAgLTYwNjMsNiArNTk1Myw3IEBACiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCisjaWZkZWYgSEFWRV9HRVRQSUQKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldHBpZAogCkBAIC02MDc1LDYgKzU5NjYsNyBAQAogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CisjZW5kaWYgLyogSEFWRV9HRVRQSUQgKi8KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAKQEAgLTYyNzYsNyArNjE2OCw3IEBACiBwb3NpeF9pbml0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqb25hbWU7Ci0gICAgY2hhciAqdXNlcm5hbWU7CisgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CiAgICAgaW50IHJlczsKICNpZmRlZiBfX0FQUExFX18KICAgICBpbnQgZ2lkOwpAQCAtNzAyMyw3ICs2OTE1LDcgQEAKIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLndhaXRwaWQKLSAgICBwaWQ6IFB5X2ludHB0cl90CisgICAgcGlkOiBpbnRwdHJfdAogICAgIG9wdGlvbnM6IGludAogICAgIC8KIApAQCAtNzAzNiwxMSArNjkyOCwxMSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTVmMWNlMDA1YTM0NmIwOSBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCitvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTgzNmIyMjEyNzFkNTM4IGlucHV0PTQwZjI0NDBjNTE1NDEwZjhdKi8KIHsKICAgICBpbnQgc3RhdHVzOwotICAgIFB5X2ludHB0cl90IHJlczsKKyAgICBpbnRwdHJfdCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKICAgICBkbyB7CkBAIC03MTUzLDE2ICs3MDQ1LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7CiAgICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOworICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwcmludF9uYW1lOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAKQEAgLTcyMzAsMjIgKzcxMjIsMTkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQQ1dTVFIsIExQQ1dTVFIsIERXT1JEKSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQKIGNoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOwotICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKKyAgICByZXR1cm4gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAhPSBOVUxMOwogfQogCiAvKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwpAQCAtNzI2MiwyMCArNzE1MSw2IEBACiAgICAgKnB0ciA9IDA7CiB9CiAKLS8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi1zdGF0aWMgdm9pZAotX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCi17Ci0gICAgY2hhciAqcHRyOwotCi0gICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKSB7Ci0gICAgICAgIGlmICgqcHRyID09ICdcXCcgfHwgKnB0ciA9PSAnLycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgKnB0ciA9IDA7Ci19Ci0KIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KIHN0YXRpYyBpbnQKIF9pc19hYnNXKGNvbnN0IFdDSEFSICpwYXRoKQpAQCAtNzI4NCwxNCArNzE1OSw2IEBACiAKIH0KIAotLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwotc3RhdGljIGludAotX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwotCi19Ci0KIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCiBzdGF0aWMgdm9pZAogX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkKQEAgLTczMTMsMzAgKzcxODAsOSBAQAogICAgIHdjc2NweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi0vKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwotc3RhdGljIHZvaWQKLV9qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCi17Ci0gICAgc2l6ZV90IHJvb3RfbGVuOwotCi0gICAgaWYgKF9pc19hYnNBKHJlc3QpKSB7Ci0gICAgICAgIHN0cmNweShkZXN0X3BhdGgsIHJlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcm9vdF9sZW4gPSBzdHJsZW4ocm9vdCk7Ci0KLSAgICBzdHJjcHkoZGVzdF9wYXRoLCByb290KTsKLSAgICBpZihyb290X2xlbikgewotICAgICAgICBkZXN0X3BhdGhbcm9vdF9sZW5dID0gJ1xcJzsKLSAgICAgICAgcm9vdF9sZW4rKzsKLSAgICB9Ci0gICAgc3RyY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7Ci19Ci0KIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1fY2hlY2tfZGlyVyhXQ0hBUiAqc3JjLCBXQ0hBUiAqZGVzdCkKK19jaGVja19kaXJXKExQQ1dTVFIgc3JjLCBMUENXU1RSIGRlc3QpCiB7CiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBXQ0hBUiBkZXN0X3BhcmVudFtNQVhfUEFUSF07CkBAIC03MzUyLDI1ICs3MTk4LDYgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KLS8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCi1zdGF0aWMgaW50Ci1fY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKLSAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKLSAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKLQotICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCi0gICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZUEoZGVzdF9wYXJlbnQpOwotICAgIC8qIHNyY19yZXNvbHZlZCA9IG9zLnBhdGguam9pbihkZXN0X3BhcmVudCwgc3JjKSAqLwotICAgIF9qb2luQShzcmNfcmVzb2x2ZWQsIGRlc3RfcGFyZW50LCBzcmMpOwotICAgIHJldHVybiAoCi0gICAgICAgIEdldEZpbGVBdHRyaWJ1dGVzRXhBKHNyY19yZXNvbHZlZCwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmc3JjX2luZm8pCi0gICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICApOwotfQogI2VuZGlmCiAKIApAQCAtNzQzMCwxOCArNzI1NywxMCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZHN0LT53aWRlKSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQorICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNzc0NiwxNiArNzU2NSwxNSBAQAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgorICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7CisjZWxzZQogI2lmZGVmIEhBVkVfT1BFTkFUCiAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCiAgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX09QRU5BVCAqLwogICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzc5MCw4ICs3NjA4LDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZmU0ZTkzNjAyODIyYzE0IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKICAgICBpbnQgcmVzOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KICAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtNzgyNCw5ICs3NjQwLDggQEAKICAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKLSAgICAgICAgICAgIGNsb3NlKGkpOworICAgIGZvciAoaSA9IFB5X01BWChmZF9sb3csIDApOyBpIDwgZmRfaGlnaDsgaSsrKQorICAgICAgICBjbG9zZShpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC03ODcwLDcgKzc2ODUsNyBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCisgICAgaWYgKGZkIDwgMCB8fCBmZDIgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CkBAIC03OTk0LDEwICs3ODA5LDYgQEAKIHsKICAgICBQeV9vZmZfdCByZXN1bHQ7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7CkBAIC04MDEwLDEwICs3ODIxLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MjIxLDEwICs4MDI4LDYgQEAKICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQogCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04Mzg3LDcgKzgxOTAsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAogICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODQ2Nyw4ICs4MjcwLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ4YzhiNGU2NDRjYTAwIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg1MDUsMTYgKzgzMDYsMTggQEAKICAgICBhdHRyLmJJbmhlcml0SGFuZGxlID0gRkFMU0U7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCAmYXR0ciwgMCk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKLSAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKKyAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOworICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOwogICAgICAgICBpZiAoZmRzWzBdID09IC0xIHx8IGZkc1sxXSA9PSAtMSkgewogICAgICAgICAgICAgQ2xvc2VIYW5kbGUocmVhZCk7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZSh3cml0ZSk7CiAgICAgICAgICAgICBvayA9IDA7CiAgICAgICAgIH0KICAgICB9CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFvaykKQEAgLTg2NjAsMTEgKzg0NjMsNiBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4NDcsOSArODY0NSw2IEBACiAgICAgaW50IHJlc3VsdDsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KICAgICBkbyB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSApAQCAtODg5NiwxMCArODY5MSw3IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7Ci0gICAgZWxzZQotICAgICAgICBmZCA9IF9vcGVuKHBhdGgtPm5hcnJvdywgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwogICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJlc3VsdCA9IC0xOwogICAgIGVsc2UgewpAQCAtOTA0Myw3ICs4ODM1LDcgQEAKIG9zX3B1dGVudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDI5YTU2N2Q2YjIzMjdkMiBpbnB1dD1iYTU4NjU4MWMyZTYxMDVmXSovCiB7Ci0gICAgd2NoYXJfdCAqZW52OworICAgIGNvbnN0IHdjaGFyX3QgKmVudjsKIAogICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgbmFtZSwgdmFsdWUpOwogICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKQEAgLTkwODksOCArODg4MSw4IEBACiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKICAgICBjaGFyICplbnY7Ci0gICAgY2hhciAqbmFtZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWUpOwotICAgIGNoYXIgKnZhbHVlX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsdWUpOworICAgIGNvbnN0IGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKKyAgICBjb25zdCBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKIAogICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIG5hbWVfc3RyaW5nLCB2YWx1ZV9zdHJpbmcpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CkBAIC05MzY4LDE3ICs5MTYwLDE3IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfYnNpemUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3QuZl9mcnNpemUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfYmxvY2tzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmxvY2tzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfYmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZpbGVzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmlsZXMpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmZyZWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgc3QuZl9mZnJlZSkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9mYXZhaWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgc3QuZl9mYXZhaWwpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDgsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3QuZl9mbGFnKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfbmFtZW1heCkpOwogI2VuZGlmCkBAIC05NTA5LDggKzkzMDEsOCBAQAogICogc3VmZmljaWVudGx5IHBlcnZhc2l2ZSB0aGF0IGl0J3Mgbm90IHdvcnRoIHRoZSBsb3NzIG9mIHJlYWRhYmlsaXR5LgogICovCiBzdHJ1Y3QgY29uc3RkZWYgewotICAgIGNoYXIgKm5hbWU7Ci0gICAgbG9uZyB2YWx1ZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGludCB2YWx1ZTsKIH07CiAKIHN0YXRpYyBpbnQKQEAgLTk1MTgsNyArOTMxMCwxMCBAQAogICAgICAgICAgICAgICBzaXplX3QgdGFibGVzaXplKQogewogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewotICAgICAgICAqdmFsdWVwID0gUHlMb25nX0FTX0xPTkcoYXJnKTsKKyAgICAgICAgaW50IHZhbHVlID0gX1B5TG9uZ19Bc0ludChhcmcpOworICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqdmFsdWVwID0gdmFsdWU7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTk1MzMsNyArOTMyOCw3IEBACiAgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24gbmFtZXMgbXVzdCBiZSBzdHJpbmdzIG9yIGludGVnZXJzIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBjb25mbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoYXJnKTsKKyAgICAgICAgY29uZm5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGFyZyk7CiAgICAgICAgIGlmIChjb25mbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHdoaWxlIChsbyA8IGhpKSB7CkBAIC0xMDQ3OSw3ICsxMDI3NCw3IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX2NvbmZuYW1lX3RhYmxlKHN0cnVjdCBjb25zdGRlZiAqdGFibGUsIHNpemVfdCB0YWJsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCiB7CiAgICAgUHlPYmplY3QgKmQgPSBOVUxMOwogICAgIHNpemVfdCBpOwpAQCAtMTA1NTAsMzEgKzEwMzQ1LDggQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KLVB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAotXG5cCi1TdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKLVxuXAotV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCi1kb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCi1hcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuXAotYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuXAotV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcblwKLXRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG5cCi1cblwKLXN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG5cCi1UaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG5cCi10byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy5cblwKLVxuXAotVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuXAotYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKLXRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7Ci0KIC8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLwogc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7Ci1zdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CiBzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOwogc3RhdGljIGludApAQCAtMTA1ODgsMTIgKzEwMzYwLDkgQEAKICAgICAgICAgaFNoZWxsMzIgPSBMb2FkTGlicmFyeVcoTCJTSEVMTDMyIik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChoU2hlbGwzMikgewotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlQSA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlQSIpOwogICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlVyA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlVyIpOwotICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TaGVsbEV4ZWN1dGVXOworICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZVcgIT0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOwogICAgICAgICB9CkBAIC0xMDYwMiwxNiArMTAzNzEsMzYgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwotICAgIGNoYXIgKmZpbGVwYXRoOwotICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwotICAgIEhJTlNUQU5DRSByYzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXJ0ZmlsZQorICAgIGZpbGVwYXRoOiBwYXRoX3QKKyAgICBvcGVyYXRpb246IFB5X1VOSUNPREUgPSBOVUxMCiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworc3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pCisKK1N0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLgorCitXaGVuICJvcGVyYXRpb24iIGlzIG5vdCBzcGVjaWZpZWQgb3IgIm9wZW4iLCB0aGlzIGFjdHMgbGlrZQorZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhbgorYXJndW1lbnQgdG8gdGhlIERPUyAic3RhcnQiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyCithcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuCitXaGVuIGFub3RoZXIgIm9wZXJhdGlvbiIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGgKK3RoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyAicHJpbnQiLgorCitzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLgorVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheQordG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuCisKK1RoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2UKK2FuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoICgiLyIpOwordGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MTJjZWJhNzlhY2ZhMWM5IGlucHV0PTYzOTUwYmYyOTg2MzgwZDBdKi8KK3sKKyAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBpZighY2hlY2tfU2hlbGxFeGVjdXRlKCkpIHsKICAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBTaGVsbEV4ZWN1dGUsIHJldHVybiBhCkBAIC0xMDYyMCw2OCArMTA0MDksMTYgQEAKICAgICAgICAgICAgICJzdGFydGZpbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLQotICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7Ci0gICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIGlmICh1b3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOwotICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi1ub3JtYWw6Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIApAQCAtMTA4NDksNyArMTA1ODYsNyBAQAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIHZvaWQgKnB0cjsKICAgICAgICAgc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTExMDEzLDkgKzEwNzUwLDkgQEAKICAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOwogCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwpAQCAtMTExMDYsOCArMTA4NDMsNyBAQAogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMjI3LDExICsxMDk2MywxNSBAQAogb3MuY3B1X2NvdW50CiAKIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCisKK1RoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgordXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NwdV9jb3VudF9pbXBsKFB5T2JqZWN0ICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1lN2M4ZjRiYTZkYmJhZGQzXSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMjc1LDExICsxMTAxNSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ0NWUyMGUxNDlhYTViOCBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTEzMDEsOCArMTEwMzYsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYjE5MThhMmYzYzM4YzIgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewogICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgTlVMTCk7CkBAIC0xMTMxNiwxNSArMTEwNDksMTUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRfaGFuZGxlX2luaGVyaXRhYmxlIC0+IGJvb2wKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIC8KIAogR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTUzODliMGFhMDkxNmNlIGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZiZTVhZmNhNmVhODRkOCBpbnB1dD1jZmU5OWY5YzA1YzcwYWQxXSovCiB7CiAgICAgRFdPUkQgZmxhZ3M7CiAKQEAgLTExMzM5LDcgKzExMDcyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogb3Muc2V0X2hhbmRsZV9pbmhlcml0YWJsZQotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgaW5oZXJpdGFibGU6IGJvb2wKICAgICAvCiAKQEAgLTExMzQ3LDkgKzExMDgwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWU2N2JmYTMyMTNkNzQ1IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMjFkNzRmZTZjOTZiYWEzIGlucHV0PTdhNzY0MTM5MGQ4MzY0ZmNdKi8KIHsKICAgICBEV09SRCBmbGFncyA9IGluaGVyaXRhYmxlID8gSEFORExFX0ZMQUdfSU5IRVJJVCA6IDA7CiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKWhhbmRsZSwgSEFORExFX0ZMQUdfSU5IRVJJVCwgZmxhZ3MpKSB7CkBAIC0xMTM3Niw5ICsxMTEwOSw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTQwMiw5ICsxMTEzMiw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExNDg1LDQxICsxMTIxMiwyNiBAQAogRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICAgICBpbnQgcmVzdWx0OwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgUHlPYmplY3QgKnViOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgsICZzdCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgsICZzdCk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9GU0RlY29kZXIoc2VsZi0+cGF0aCwgJnViKSkgeworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1Yik7CiAjZWxzZSAvKiBQT1NJWCAqLwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBjaGFyICpwYXRoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoc2VsZi0+cGF0aCwgJmJ5dGVzKSkKKyAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZ1YikpIHsKKyAgICAgICAgY29uc3QgY2hhciAqcGF0aCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHViKTsKKyNlbmRpZgorICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgICAgICBQeV9ERUNSRUYodWIpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXMpOwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcihzZWxmLT5wYXRoKTsKIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CkBAIC0xMTY4OSwyNSArMTE0MDEsMjcgQEAKIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgewotICAgICAgICB3Y2hhcl90ICpwYXRoOwotICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworICAgICAgICBTVFJVQ1RfU1RBVCBzdGF0OworICAgICAgICBpbnQgcmVzdWx0OwogCi0gICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOwotICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihzZWxmLT5wYXRoLCAmdW5pY29kZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pY29kZSk7CisgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgsICZzdGF0KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogCi0gICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3Ioc2VsZi0+cGF0aCk7CiAKICAgICAgICAgc2VsZi0+d2luMzJfZmlsZV9pbmRleCA9IHN0YXQuc3RfaW5vOwogICAgICAgICBzZWxmLT5nb3RfZmlsZV9pbmRleCA9IDE7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKICNlbHNlIC8qIFBPU0lYICovCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+ZF9pbm8pOwogI2Vsc2UKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKICNlbmRpZgpAQCAtMTE3MjAsNiArMTE0MzQsMTMgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxEaXJFbnRyeSAlUj4iLCBzZWxmLT5uYW1lKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2ZzcGF0aChEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBQeV9JTkNSRUYoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIHNlbGYtPnBhdGg7Cit9CisKIHN0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CiAgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCiAgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKQEAgLTExNzQ0LDYgKzExNDY1LDkgQEAKICAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKICAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAogICAgIH0sCisgICAgeyJfX2ZzcGF0aF9fIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2ZzcGF0aCwgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgZW50cnkiLAorICAgIH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xMTc4Myw3ICsxMTUwNyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgd2NoYXJfdCAqCi1qb2luX3BhdGhfZmlsZW5hbWVXKHdjaGFyX3QgKnBhdGhfd2lkZSwgd2NoYXJfdCogZmlsZW5hbWUpCitqb2luX3BhdGhfZmlsZW5hbWVXKGNvbnN0IHdjaGFyX3QgKnBhdGhfd2lkZSwgY29uc3Qgd2NoYXJfdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlfc3NpemVfdCBwYXRoX2xlbjsKICAgICBQeV9zc2l6ZV90IHNpemU7CkBAIC0xMTgzNSw2ICsxMTU1OSwxMSBAQAogICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CiAgICAgaWYgKCFlbnRyeS0+bmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+bmFtZSwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+bmFtZSkpOworICAgICAgICBpZiAoIWVudHJ5LT5uYW1lKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CiAgICAgaWYgKCFqb2luZWRfcGF0aCkKQEAgLTExODQ0LDggKzExNTczLDEzIEBACiAgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CiAgICAgaWYgKCFlbnRyeS0+cGF0aCkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+cGF0aCwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+cGF0aCkpOworICAgICAgICBpZiAoIWVudHJ5LT5wYXRoKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKICAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CkBAIC0xMTg1OCw3ICsxMTU5Miw3IEBACiAjZWxzZSAvKiBQT1NJWCAqLwogCiBzdGF0aWMgY2hhciAqCi1qb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK2pvaW5fcGF0aF9maWxlbmFtZShjb25zdCBjaGFyICpwYXRoX25hcnJvdywgY29uc3QgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4OTAsNyArMTE2MjQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKHBhdGhfdCAqcGF0aCwgY2hhciAqbmFtZSwgUHlfc3NpemVfdCBuYW1lX2xlbiwKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNvbnN0IGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KICNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKICAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCkBAIC0xMTk1Myw4ICsxMTY4NywxNCBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIEhBTkRMRSBoYW5kbGUgPSBpdGVyYXRvci0+aGFuZGxlOwogCkBAIC0xMTk3NCw3ICsxMTcxNCw3IEBACiAgICAgQk9PTCBzdWNjZXNzOwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjAwNSwxNCArMTE3NDUsMjAgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxzZSAvKiBQT1NJWCAqLwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuICFpdGVyYXRvci0+ZGlycDsKK30KKwogc3RhdGljIHZvaWQKLVNjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7CiAgICAgRElSICpkaXJwID0gaXRlcmF0b3ItPmRpcnA7CiAKQEAgLTEyMDM0LDcgKzExNzgwLDcgQEAKICAgICBpbnQgaXNfZG90OwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyMDcxLDIxICsxMTgxNyw3NiBAQAogICAgIH0KIAogICAgIC8qIEVycm9yIG9yIG5vIG1vcmUgZmlsZXMgKi8KLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfZXhpdChTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKCFTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKGl0ZXJhdG9yKSkgeworICAgICAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOworCisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopaXRlcmF0b3IsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIHNjYW5kaXIgaXRlcmF0b3IgJVIiLCBpdGVyYXRvcikpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgaXRlcmF0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQ0xFQVIoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKyAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCiBzdGF0aWMgdm9pZAogU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOwotICAgIFB5X1hERUNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKLSAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKWl0ZXJhdG9yKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKIH0KIAorc3RhdGljIFB5TWV0aG9kRGVmIFNjYW5kaXJJdGVyYXRvcl9tZXRob2RzW10gPSB7CisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2VudGVyLCBNRVRIX05PQVJHU30sCisgICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfZXhpdCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0xMjEwNyw3ICsxMTkwOCw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVAorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEyMTE1LDYgKzExOTE3LDI3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KKyAgICBTY2FuZGlySXRlcmF0b3JfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3IpU2NhbmRpckl0ZXJhdG9yX2ZpbmFsaXplLCAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIxMjUsNyArMTE5NDgsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICpwYXRoX3N0clc7CiAjZWxzZQotICAgIGNoYXIgKnBhdGg7CisgICAgY29uc3QgY2hhciAqcGF0aDsKICNlbmRpZgogCiAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CkBAIC0xMjE1MiwxMSArMTE5NzUsNiBAQAogICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9CiAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOwogCiAgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOwpAQCAtMTIxOTcsNiArMTIwMTUsMTMyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICBJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggd2l0aAorICAgIGFuIGluY3JlbWVudGVkIHJlZmNvdW50LiBJZiB0aGUgb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuCisgICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlciB0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KKyovCitQeU9iamVjdCAqCitQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKK3sKKyAgICAvKiBGb3IgZXJyb3IgbWVzc2FnZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGlzIG1hbnVhbGx5IGlubGluZWQgaW4KKyAgICAgICBwYXRoX2NvbnZlcnRlcigpLiAqLworICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aF9yZXByID0gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkgfHwgUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBQeV9JTkNSRUYocGF0aCk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChwYXRoLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICBwYXRoX3JlcHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAoTlVMTCA9PSBwYXRoX3JlcHIpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlVbmljb2RlX0NoZWNrKHBhdGhfcmVwcikgfHwgUHlCeXRlc19DaGVjayhwYXRoX3JlcHIpKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICUuMjAwcy5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLCBQeV9UWVBFKHBhdGgpLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoX3JlcHIpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfcmVwcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBwYXRoX3JlcHI7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzcGF0aAorCisgICAgcGF0aDogb2JqZWN0CisKK1JldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCitJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZQorb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIKK3R5cGVzIHJhaXNlIGEgVHlwZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzNjM2I3OGVjZmYyOTE0ZiBpbnB1dD1lMzU3MTY1ZjdiMjI0OTBmXSovCit7CisgICAgcmV0dXJuIFB5T1NfRlNQYXRoKHBhdGgpOworfQorCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmFuZG9tCisKKyAgICBzaXplOiBQeV9zc2l6ZV90CisgICAgZmxhZ3M6IGludD0wCisKK09idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb21faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iM2E2MTgxOTZhNjE0MDljIGlucHV0PTU5YmFmYWMzOWM1OTQ5NDddKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOworICAgICAgICBpZiAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBnZXRyYW5kb20oKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWw6IHJldHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChuICE9IHNpemUpIHsKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbik7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmICAgLyogSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCAqLwogCiAjaW5jbHVkZSAiY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCIKIApAQCAtMTIyODgsNyArMTIyMzIsNyBAQAogICAgIE9TX0tJTExQR19NRVRIT0RERUYKICAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCisgICAgT1NfU1RBUlRGSUxFX01FVEhPRERFRgogI2VuZGlmCiAgICAgT1NfU0VUVUlEX01FVEhPRERFRgogICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCkBAIC0xMjM5Nyw2ICsxMjM0MSw4IEBACiAgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCisgICAgT1NfRlNQQVRIX01FVEhPRERFRgorICAgIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTEyNDA4LDcgKzEyMzU0LDYgQEAKICAgICBIQU5ETEUgdG9rOwogICAgIFRPS0VOX1BSSVZJTEVHRVMgdG9rX3ByaXY7CiAgICAgTFVJRCBsdWlkOwotICAgIGludCBtZXRoX2lkeCA9IDA7CiAKICAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwgVE9LRU5fQUxMX0FDQ0VTUywgJnRvaykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI1MTEsMTIgKzEyNDU2LDE0IEBACiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmIE9fU0hMT0NLCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fU0hMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmIE9fRVhFQwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYRUMpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTEyODE5LDI4ICsxMjc2NiwzMyBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogCi0jaWZkZWYgUlRMRF9MQVpZCisjaWYgSEFWRV9ERUNMX1JUTERfTEFaWQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PVworI2lmIEhBVkVfREVDTF9SVExEX05PVwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PVykpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfR0xPQkFMCisjaWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PREVMRVRFCisjaWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9MT0FECisjaWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9ERUVQQklORAorI2lmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9SQU5ET00pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdSTkRfTk9OQkxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMjg1OCw3ICsxMjgxMCw3IEBACiB9OwogCiAKLXN0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYXZlX2Z1bmN0aW9uc1tdID0gewogCiAjaWZkZWYgSEFWRV9GQUNDRVNTQVQKICAgICAiSEFWRV9GQUNDRVNTQVQiLApAQCAtMTI5OTMsNyArMTI5NDUsNyBAQAogewogICAgIFB5T2JqZWN0ICptLCAqdjsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBjaGFyICoqdHJhY2U7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICp0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtMTMxNjksNiArMTMxMjEsOSBAQAogICAgIH0KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOwogCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSAmRGlyRW50cnlUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRpckVudHJ5IiwgKFB5T2JqZWN0ICopJkRpckVudHJ5VHlwZSk7CisKICAgICBpbml0aWFsaXplZCA9IDE7CiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IDc0MTZjZjcuLjc4NGU5ZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNzUsMTAgKzc1LDE4IEBACiAjZGVmaW5lIFNFVFMoaSx2YWwpIHNldHModiwgaSwgdmFsKQogCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19uYW1lKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfcGFzc3dkKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbVVpZChwLT5wd191aWQpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbUdpZChwLT5wd19naWQpKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19HRUNPUykKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2dlY29zKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2Rpcik7CiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19zaGVsbCk7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggMDBjOTZhMS4uYjMyNTlkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqIGZhbHNlIG9uIGFuIGV4Y2VwdGlvbi4KICAqLwogc3RhdGljIGludAotc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQorc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGxfd2l0aF9mcmFtZShjaGFyICpmdW5jbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QqIGZ1bmMsIFB5T2JqZWN0KiBhcmdzLAorY2FsbF93aXRoX2ZyYW1lKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCiAgICAgICAgICAgICAgICAgeG1scGFyc2VvYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKQEAgLTc0Nyw3ICs3NDcsOCBAQAogICAgICAgICBzICs9IE1BWF9DSFVOS19TSVpFOwogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KLSAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoTUFYX0NIVU5LX1NJWkUgPD0gSU5UX01BWCk7CisgICAgYXNzZXJ0KHNsZW4gPD0gSU5UX01BWCk7CiAgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgpAQCAtNzY1LDcgKzc2Niw3IEBACiB7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwdHI7CisgICAgY29uc3QgY2hhciAqcHRyOwogCiAgICAgc3RyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICJuIiwgYnVmX3NpemUpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKQEAgLTEyMjUsMTIgKzEyMjYsOCBAQAogICAgIHNlbGYtPml0c2VsZiA9IE5VTEw7CiAKICAgICBpZiAoc2VsZi0+aGFuZGxlcnMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZXJzW2ldKTsKICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5oYW5kbGVycyk7CiAgICAgICAgIHNlbGYtPmhhbmRsZXJzID0gTlVMTDsKICAgICB9CkBAIC0xMzQzLDcgKzEzNDAsNiBAQAogICAgIGludCBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWUpOwogICAgIGlmIChoYW5kbGVybnVtID49IDApIHsKICAgICAgICAgeG1saGFuZGxlciBjX2hhbmRsZXIgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dOwogCiAgICAgICAgIGlmICh2ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGNoYXJhY3RlciBkYXRhIGhhbmRsZXIsIGFuZCBhIGNoYXJhY3RlcgpAQCAtMTM2NSw4ICsxMzYxLDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIGNfaGFuZGxlciA9IGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5oYW5kbGVyOwogICAgICAgICB9Ci0gICAgICAgIHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dID0gdjsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXSwgdik7CiAgICAgICAgIGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5zZXR0ZXIoc2VsZi0+aXRzZWxmLCBjX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzA1LDcgKzE3MDAsMTUgQEAKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAibmF0aXZlX2VuY29kaW5nIiwgIlVURi04Iik7CiAKICAgICBzeXNfbW9kdWxlcyA9IFB5U3lzX0dldE9iamVjdCgibW9kdWxlcyIpOworICAgIGlmIChzeXNfbW9kdWxlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChkID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZXJyb3JzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGQsIGVycm1vZF9uYW1lKTsKICAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIGVycm9yc19tb2R1bGUgPSBQeU1vZHVsZV9OZXcoTU9EVUxFX05BTUUgIi5lcnJvcnMiKTsKQEAgLTE3MjYsOSArMTcyOSwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5X0RFQ1JFRihtb2RlbG1vZF9uYW1lKTsKLSAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMIHx8IG1vZGVsX21vZHVsZSA9PSBOVUxMKQorICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgLyogRG9uJ3QgY29yZSBkdW1wIGxhdGVyISAqLworICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID4gMTk1MDUKICAgICB7CkBAIC0xODk2LDE1ICsxOTAxLDEyIEBACiBjbGVhcl9oYW5kbGVycyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGluaXRpYWwpCiB7CiAgICAgaW50IGkgPSAwOwotICAgIFB5T2JqZWN0ICp0ZW1wOwogCiAgICAgZm9yICg7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogICAgICAgICBpZiAoaW5pdGlhbCkKICAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICAgICAgaGFuZGxlcl9pbmZvW2ldLnNldHRlcihzZWxmLT5pdHNlbGYsIE5VTEwpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDU0ZjE1YmMuLjNiOTRkNGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTM0MywxMCArMzQzLDggQEAKICAgICAgICAgUHlfQ0xFQVIoKmhvb2tfdmFyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlDYWxsYWJsZV9DaGVjayhmdW5jdGlvbikpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpob29rX3ZhcjsKICAgICAgICAgUHlfSU5DUkVGKGZ1bmN0aW9uKTsKLSAgICAgICAgKmhvb2tfdmFyID0gZnVuY3Rpb247Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRigqaG9va192YXIsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC02MDQsNiArNjAyLDI0IEBACiAiYWRkX2hpc3Rvcnkoc3RyaW5nKSAtPiBOb25lXG5cCiBhZGQgYW4gaXRlbSB0byB0aGUgaGlzdG9yeSBidWZmZXIiKTsKIAorc3RhdGljIGludCBzaG91bGRfYXV0b19hZGRfaGlzdG9yeSA9IDE7CisKKy8qIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBoaXN0b3J5ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zZXRfYXV0b19oaXN0b3J5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInA6c2V0X2F1dG9faGlzdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaG91bGRfYXV0b19hZGRfaGlzdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX3NldF9hdXRvX2hpc3RvcnksCisic2V0X2F1dG9faGlzdG9yeShlbmFibGVkKSAtPiBOb25lXG5cCitFbmFibGVzIG9yIGRpc2FibGVzIGF1dG9tYXRpYyBoaXN0b3J5LiIpOworCiAKIC8qIEdldCB0aGUgdGFiLWNvbXBsZXRpb24gd29yZC1kZWxpbWl0ZXJzIHRoYXQgcmVhZGxpbmUgdXNlcyAqLwogCkBAIC04MjIsNiArODM4LDcgQEAKIAogICAgIHsic2V0X2NvbXBsZXRlcl9kZWxpbXMiLCBzZXRfY29tcGxldGVyX2RlbGltcywKICAgICAgTUVUSF9PLCBkb2Nfc2V0X2NvbXBsZXRlcl9kZWxpbXN9LAorICAgIHsic2V0X2F1dG9faGlzdG9yeSIsIHB5X3NldF9hdXRvX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3NldF9hdXRvX2hpc3Rvcnl9LAogICAgIHsiYWRkX2hpc3RvcnkiLCBweV9hZGRfaGlzdG9yeSwgTUVUSF9PLCBkb2NfYWRkX2hpc3Rvcnl9LAogICAgIHsicmVtb3ZlX2hpc3RvcnlfaXRlbSIsIHB5X3JlbW92ZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZW1vdmVfaGlzdG9yeX0sCiAgICAgeyJyZXBsYWNlX2hpc3RvcnlfaXRlbSIsIHB5X3JlcGxhY2VfaGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2NfcmVwbGFjZV9oaXN0b3J5fSwKQEAgLTg1Nyw3ICs4NzQsNyBAQAogICAgICAgICBpZiAociA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nKHIpOworICAgICAgICAgICAgcmVzdWx0ID0gX1B5TG9uZ19Bc0ludChyKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xMzI3LDcgKzEzNDQsNyBAQAogCiAgICAgLyogd2UgaGF2ZSBhIHZhbGlkIGxpbmUgKi8KICAgICBuID0gc3RybGVuKHApOwotICAgIGlmIChuID4gMCkgeworICAgIGlmIChzaG91bGRfYXV0b19hZGRfaGlzdG9yeSAmJiBuID4gMCkgewogICAgICAgICBjb25zdCBjaGFyICpsaW5lOwogICAgICAgICBpbnQgbGVuZ3RoID0gX3B5X2dldF9oaXN0b3J5X2xlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCA5NzBlZTg0Li4xMTNhZDVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xNTIsMTMgKzE1MiwxMSBAQAogc3RhdGljIFB5T2JqZWN0KgogcmxpbWl0MnB5KHN0cnVjdCBybGltaXQgcmwpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKHJsLnJsaW1fY3VyKSA+IHNpemVvZihsb25nKSkgewogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTEwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX2N1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORykgcmwucmxpbV9tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX2N1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykgcmwucmxpbV9tYXgpOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsbCIsIChsb25nKSBybC5ybGltX2N1ciwgKGxvbmcpIHJsLnJsaW1fbWF4KTsKIH0KIApAQCAtNDM2LDExICs0MzQsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9OUFRTKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKFJMSU1fSU5GSU5JVFkpID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIFJMSU1fSU5GSU5JVFkpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9IGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgUkxJTV9JTkZJTklUWSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggMDAzMjRhNS4uNDdkYTQ5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC00LDYgKzQsMTAgQEAKICAgIGhhdmUgYW55IHZhbHVlIGV4Y2VwdCBJTlZBTElEX1NPQ0tFVC4KICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfUE9MTF9IKSAmJiAhZGVmaW5lZChfR05VX1NPVVJDRSkKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKQEAgLTE3OTMsNyArMTc5Nyw3IEBACiAgKi8KICNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgICBkZWZpbmUgSURFTlRfVFlQRSAgVF9VSU5UUFRSVAotIyAgIGRlZmluZSBJREVOVF9DQVNUICBQeV9pbnRwdHJfdAorIyAgIGRlZmluZSBJREVOVF9DQVNUICBpbnRwdHJfdAogIyAgIGRlZmluZSBEQVRBX1RZUEUgICBUX0lOVFBUUlQKICMgICBkZWZpbmUgREFUQV9GTVRfVU5JVCBJTlRQVFJUX0ZNVF9VTklUCiAjICAgZGVmaW5lIElERU5UX0FzVHlwZSBQeUxvbmdfQXNVaW50cHRyX3QKQEAgLTE4NDIsNyArMTg0Niw3IEBACiAgICAgUHlPYmplY3QgKnBmZDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImlkZW50IiwgImZpbHRlciIsICJmbGFncyIsICJmZmxhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSIsICJ1ZGF0YSIsIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQgPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKIAogICAgIEVWX1NFVCgmKHNlbGYtPmUpLCAwLCBFVkZJTFRfUkVBRCwgRVZfQURELCAwLCAwLCAwKTsgLyogZGVmYXVsdHMgKi8KIApAQCAtMTg3Miw3ICsxODc2LDcgQEAKIGtxdWV1ZV9ldmVudF9yaWNoY29tcGFyZShrcXVldWVfZXZlbnRfT2JqZWN0ICpzLCBrcXVldWVfZXZlbnRfT2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQgPSAwOworICAgIGludHB0cl90IHJlc3VsdCA9IDA7CiAKICAgICBpZiAoIWtxdWV1ZV9ldmVudF9DaGVjayhvKSkgewogICAgICAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKQEAgLTIxMjcsNyArMjEzMSw3IEBACiAgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIgIgogICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NTIsNiArMjQ1NiwxMCBAQAogI2lmZGVmIFBPTExNU0cKICAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTE1TRyk7CiAjZW5kaWYKKyNpZmRlZiBQT0xMUkRIVVAKKyAgICAgICAgLyogS2VybmVsIDIuNi4xNysgKi8KKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KIApAQCAtMjQ3MywxMiArMjQ4MSwxOCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUFJJKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVSUik7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExIVVApOworI2lmZGVmIEVQT0xMUkRIVVAKKyAgICAvKiBLZXJuZWwgMi42LjE3ICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSREhVUCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVUKTsKICNpZmRlZiBFUE9MTE9ORVNIT1QKICAgICAvKiBLZXJuZWwgMi42LjIrICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExPTkVTSE9UKTsKICNlbmRpZgotICAgIC8qIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9SREhVUCIsIEVQT0xMUkRIVVApOyAqLworI2lmZGVmIEVQT0xMRVhDTFVTSVZFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFWENMVVNJVkUpOworI2VuZGlmCiAKICNpZmRlZiBFUE9MTFJETk9STQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUkROT1JNKTsKQEAgLTI1MTksMTMgKzI1MzMsMjEgQEAKICAgICAvKiBldmVudCBmaWx0ZXJzICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9SRUFEIiwgRVZGSUxUX1JFQUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfV1JJVEUiLCBFVkZJTFRfV1JJVEUpOworI2lmZGVmIEVWRklMVF9BSU8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX0FJTyIsIEVWRklMVF9BSU8pOworI2VuZGlmCisjaWZkZWYgRVZGSUxUX1ZOT0RFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9WTk9ERSIsIEVWRklMVF9WTk9ERSk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfUFJPQyIsIEVWRklMVF9QUk9DKTsKKyNlbmRpZgogI2lmZGVmIEVWRklMVF9ORVRERVYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX05FVERFViIsIEVWRklMVF9ORVRERVYpOwogI2VuZGlmCisjaWZkZWYgRVZGSUxUX1NJR05BTAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfU0lHTkFMIiwgRVZGSUxUX1NJR05BTCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1RJTUVSIiwgRVZGSUxUX1RJTUVSKTsKIAogICAgIC8qIGV2ZW50IGZsYWdzICovCkBAIC0yNTM2LDE2ICsyNTU4LDIzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX09ORVNIT1QiLCBFVl9PTkVTSE9UKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfQ0xFQVIiLCBFVl9DTEVBUik7CiAKKyNpZmRlZiBFVl9TWVNGTEFHUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9TWVNGTEFHUyIsIEVWX1NZU0ZMQUdTKTsKKyNlbmRpZgorI2lmZGVmIEVWX0ZMQUcxCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0ZMQUcxIiwgRVZfRkxBRzEpOworI2VuZGlmCiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRU9GIiwgRVZfRU9GKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRVJST1IiLCBFVl9FUlJPUik7CiAKICAgICAvKiBSRUFEIFdSSVRFIGZpbHRlciBmbGFnICovCisjaWZkZWYgTk9URV9MT1dBVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xPV0FUIiwgTk9URV9MT1dBVCk7CisjZW5kaWYKIAogICAgIC8qIFZOT0RFIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9ERUxFVEUiLCBOT1RFX0RFTEVURSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfV1JJVEUiLCBOT1RFX1dSSVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWFRFTkQiLCBOT1RFX0VYVEVORCk7CkBAIC0yNTUzLDggKzI1ODIsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9MSU5LIiwgTk9URV9MSU5LKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRU5BTUUiLCBOT1RFX1JFTkFNRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfUkVWT0tFIiwgTk9URV9SRVZPS0UpOworI2VuZGlmCiAKICAgICAvKiBQUk9DIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYSVQiLCBOT1RFX0VYSVQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0ZPUksiLCBOT1RFX0ZPUkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYRUMiLCBOT1RFX0VYRUMpOwpAQCAtMjU2NCw2ICsyNTk1LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDSyIsIE5PVEVfVFJBQ0spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0NISUxEIiwgTk9URV9DSElMRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfVFJBQ0tFUlIiLCBOT1RFX1RSQUNLRVJSKTsKKyNlbmRpZgogCiAgICAgLyogTkVUREVWIGZpbHRlciBmbGFncyAqLwogI2lmZGVmIEVWRklMVF9ORVRERVYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggNmNiMzJlZC4uZDUwNjVjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgU0hBMV9JTlQzMjsgICAgICAgIC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBTSEExX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggZjlmZjBlYS4uMTc3NzVhZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtMjcsMTUgKzI3LDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKLSNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwotCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU0hBX0JZVEU7CiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFNIQV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HIFNIQV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpAQCAtMTIxLDEyICsxMTksMTIgQEAKIAogLyogVmFyaW91cyBsb2dpY2FsIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBST1I2NCh4LCB5KSBcCi0gICAgKCAoKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigodW5zaWduZWQgUFlfTE9OR19MT05HKSh5KSAmIDYzKSkgfCBcCi0gICAgICAoKHgpPDwoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoNjQtKCh5KSAmIDYzKSkpKSkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkKKyAgICAoICgoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCk+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpCiAjZGVmaW5lIENoKHgseSx6KSAgICAgICAoeiBeICh4ICYgKHkgXiB6KSkpCiAjZGVmaW5lIE1haih4LHkseikgICAgICAoKCh4IHwgeSkgJiB6KSB8ICh4ICYgeSkpCiAjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1I2NCgoeCksKG4pKQotI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkgPj4gKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpbikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkgPj4gKCh1bnNpZ25lZCBsb25nIGxvbmcpbikpCiAjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyOCkgXiBTKHgsIDM0KSBeIFMoeCwgMzkpKQogI2RlZmluZSBTaWdtYTEoeCkgICAgICAgKFMoeCwgMTQpIF4gUyh4LCAxOCkgXiBTKHgsIDQxKSkKICNkZWZpbmUgR2FtbWEwKHgpICAgICAgIChTKHgsIDEpIF4gUyh4LCA4KSBeIFIoeCwgNykpCkBAIC0xNTgsODYgKzE1Niw4NiBAQAogICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGggID0gdDAgKyB0MTsKIAotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCxQeV9VTEwoMHg0MjhhMmY5OGQ3MjhhZTIyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLFB5X1VMTCgweDcxMzc0NDkxMjNlZjY1Y2QpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsUHlfVUxMKDB4YjVjMGZiY2ZlYzRkM2IyZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMyxQeV9VTEwoMHhlOWI1ZGJhNTgxODlkYmJjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LFB5X1VMTCgweDM5NTZjMjViZjM0OGI1MzgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsUHlfVUxMKDB4NTlmMTExZjFiNjA1ZDAxOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNixQeV9VTEwoMHg5MjNmODJhNGFmMTk0ZjliKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LFB5X1VMTCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsUHlfVUxMKDB4ZDgwN2FhOThhMzAzMDI0MikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSxQeV9VTEwoMHgxMjgzNWIwMTQ1NzA2ZmJlKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCxQeV9VTEwoMHgyNDMxODViZTRlZTRiMjhjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSxQeV9VTEwoMHg1NTBjN2RjM2Q1ZmZiNGUyKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMixQeV9VTEwoMHg3MmJlNWQ3NGYyN2I4OTZmKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMyxQeV9VTEwoMHg4MGRlYjFmZTNiMTY5NmIxKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCxQeV9VTEwoMHg5YmRjMDZhNzI1YzcxMjM1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSxQeV9VTEwoMHhjMTliZjE3NGNmNjkyNjk0KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNixQeV9VTEwoMHhlNDliNjljMTllZjE0YWQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNyxQeV9VTEwoMHhlZmJlNDc4NjM4NGYyNWUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCxQeV9VTEwoMHgwZmMxOWRjNjhiOGNkNWI1KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSxQeV9VTEwoMHgyNDBjYTFjYzc3YWM5YzY1KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCxQeV9VTEwoMHgyZGU5MmM2ZjU5MmIwMjc1KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSxQeV9VTEwoMHg0YTc0ODRhYTZlYTZlNDgzKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMixQeV9VTEwoMHg1Y2IwYTlkY2JkNDFmYmQ0KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMyxQeV9VTEwoMHg3NmY5ODhkYTgzMTE1M2I1KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCxQeV9VTEwoMHg5ODNlNTE1MmVlNjZkZmFiKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSxQeV9VTEwoMHhhODMxYzY2ZDJkYjQzMjEwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNixQeV9VTEwoMHhiMDAzMjdjODk4ZmIyMTNmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNyxQeV9VTEwoMHhiZjU5N2ZjN2JlZWYwZWU0KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCxQeV9VTEwoMHhjNmUwMGJmMzNkYTg4ZmMyKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSxQeV9VTEwoMHhkNWE3OTE0NzkzMGFhNzI1KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCxQeV9VTEwoMHgwNmNhNjM1MWUwMDM4MjZmKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSxQeV9VTEwoMHgxNDI5Mjk2NzBhMGU2ZTcwKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMixQeV9VTEwoMHgyN2I3MGE4NTQ2ZDIyZmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMyxQeV9VTEwoMHgyZTFiMjEzODVjMjZjOTI2KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCxQeV9VTEwoMHg0ZDJjNmRmYzVhYzQyYWVkKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSxQeV9VTEwoMHg1MzM4MGQxMzlkOTViM2RmKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNixQeV9VTEwoMHg2NTBhNzM1NDhiYWY2M2RlKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNyxQeV9VTEwoMHg3NjZhMGFiYjNjNzdiMmE4KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCxQeV9VTEwoMHg4MWMyYzkyZTQ3ZWRhZWU2KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSxQeV9VTEwoMHg5MjcyMmM4NTE0ODIzNTNiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCxQeV9VTEwoMHhhMmJmZThhMTRjZjEwMzY0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSxQeV9VTEwoMHhhODFhNjY0YmJjNDIzMDAxKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MixQeV9VTEwoMHhjMjRiOGI3MGQwZjg5NzkxKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MyxQeV9VTEwoMHhjNzZjNTFhMzA2NTRiZTMwKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCxQeV9VTEwoMHhkMTkyZTgxOWQ2ZWY1MjE4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSxQeV9VTEwoMHhkNjk5MDYyNDU1NjVhOTEwKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NixQeV9VTEwoMHhmNDBlMzU4NTU3NzEyMDJhKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NyxQeV9VTEwoMHgxMDZhYTA3MDMyYmJkMWI4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCxQeV9VTEwoMHgxOWE0YzExNmI4ZDJkMGM4KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSxQeV9VTEwoMHgxZTM3NmMwODUxNDFhYjUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCxQeV9VTEwoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSxQeV9VTEwoMHgzNGIwYmNiNWUxOWI0OGE4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MixQeV9VTEwoMHgzOTFjMGNiM2M1Yzk1YTYzKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MyxQeV9VTEwoMHg0ZWQ4YWE0YWUzNDE4YWNiKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCxQeV9VTEwoMHg1YjljY2E0Zjc3NjNlMzczKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSxQeV9VTEwoMHg2ODJlNmZmM2Q2YjJiOGEzKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NixQeV9VTEwoMHg3NDhmODJlZTVkZWZiMmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NyxQeV9VTEwoMHg3OGE1NjM2ZjQzMTcyZjYwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCxQeV9VTEwoMHg4NGM4NzgxNGExZjBhYjcyKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSxQeV9VTEwoMHg4Y2M3MDIwODFhNjQzOWVjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCxQeV9VTEwoMHg5MGJlZmZmYTIzNjMxZTI4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSxQeV9VTEwoMHhhNDUwNmNlYmRlODJiZGU5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MixQeV9VTEwoMHhiZWY5YTNmN2IyYzY3OTE1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MyxQeV9VTEwoMHhjNjcxNzhmMmUzNzI1MzJiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCxQeV9VTEwoMHhjYTI3M2VjZWVhMjY2MTljKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSxQeV9VTEwoMHhkMTg2YjhjNzIxYzBjMjA3KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NixQeV9VTEwoMHhlYWRhN2RkNmNkZTBlYjFlKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NyxQeV9VTEwoMHhmNTdkNGY3ZmVlNmVkMTc4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCxQeV9VTEwoMHgwNmYwNjdhYTcyMTc2ZmJhKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSxQeV9VTEwoMHgwYTYzN2RjNWEyYzg5OGE2KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCxQeV9VTEwoMHgxMTNmOTgwNGJlZjkwZGFlKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSxQeV9VTEwoMHgxYjcxMGIzNTEzMWM0NzFiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MixQeV9VTEwoMHgyOGRiNzdmNTIzMDQ3ZDg0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MyxQeV9VTEwoMHgzMmNhYWI3YjQwYzcyNDkzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCxQeV9VTEwoMHgzYzllYmUwYTE1YzliZWJjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSxQeV9VTEwoMHg0MzFkNjdjNDljMTAwZDRjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NixQeV9VTEwoMHg0Y2M1ZDRiZWNiM2U0MmI2KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NyxQeV9VTEwoMHg1OTdmMjk5Y2ZjNjU3ZTJhKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCxQeV9VTEwoMHg1ZmNiNmZhYjNhZDZmYWVjKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSxQeV9VTEwoMHg2YzQ0MTk4YzRhNDc1ODE3KSk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLDB4NDI4YTJmOThkNzI4YWUyMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLDB4NzEzNzQ0OTEyM2VmNjVjZFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLDB4ZTliNWRiYTU4MTg5ZGJiY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LDB4Mzk1NmMyNWJmMzQ4YjUzOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LDB4NTlmMTExZjFiNjA1ZDAxOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LDB4OTIzZjgyYTRhZjE5NGY5YlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LDB4YWIxYzVlZDVkYTZkODExOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LDB4ZDgwN2FhOThhMzAzMDI0MlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LDB4MTI4MzViMDE0NTcwNmZiZVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCwweDI0MzE4NWJlNGVlNGIyOGNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsMHg1NTBjN2RjM2Q1ZmZiNGUyVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLDB4NzJiZTVkNzRmMjdiODk2ZlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMywweDgwZGViMWZlM2IxNjk2YjFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsMHg5YmRjMDZhNzI1YzcxMjM1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LDB4YzE5YmYxNzRjZjY5MjY5NFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNiwweGU0OWI2OWMxOWVmMTRhZDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsMHhlZmJlNDc4NjM4NGYyNWUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LDB4MGZjMTlkYzY4YjhjZDViNVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSwweDI0MGNhMWNjNzdhYzljNjVVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsMHgyZGU5MmM2ZjU5MmIwMjc1VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLDB4NGE3NDg0YWE2ZWE2ZTQ4M1VMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMiwweDVjYjBhOWRjYmQ0MWZiZDRVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsMHg3NmY5ODhkYTgzMTE1M2I1VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LDB4OTgzZTUxNTJlZTY2ZGZhYlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSwweGE4MzFjNjZkMmRiNDMyMTBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsMHhiMDAzMjdjODk4ZmIyMTNmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LDB4YmY1OTdmYzdiZWVmMGVlNFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCwweGM2ZTAwYmYzM2RhODhmYzJVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksMHhkNWE3OTE0NzkzMGFhNzI1VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLDB4MDZjYTYzNTFlMDAzODI2ZlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSwweDE0MjkyOTY3MGEwZTZlNzBVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsMHgyN2I3MGE4NTQ2ZDIyZmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLDB4MmUxYjIxMzg1YzI2YzkyNlVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCwweDRkMmM2ZGZjNWFjNDJhZWRVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsMHg1MzM4MGQxMzlkOTViM2RmVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LDB4NjUwYTczNTQ4YmFmNjNkZVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNywweDc2NmEwYWJiM2M3N2IyYThVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsMHg4MWMyYzkyZTQ3ZWRhZWU2VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LDB4OTI3MjJjODUxNDgyMzUzYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCwweGEyYmZlOGExNGNmMTAzNjRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsMHhhODFhNjY0YmJjNDIzMDAxVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLDB4YzI0YjhiNzBkMGY4OTc5MVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MywweGM3NmM1MWEzMDY1NGJlMzBVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsMHhkMTkyZTgxOWQ2ZWY1MjE4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LDB4ZDY5OTA2MjQ1NTY1YTkxMFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NiwweGY0MGUzNTg1NTc3MTIwMmFVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsMHgxMDZhYTA3MDMyYmJkMWI4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LDB4MTlhNGMxMTZiOGQyZDBjOFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSwweDFlMzc2YzA4NTE0MWFiNTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsMHgyNzQ4Nzc0Y2RmOGVlYjk5VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLDB4MzRiMGJjYjVlMTliNDhhOFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MiwweDM5MWMwY2IzYzVjOTVhNjNVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsMHg0ZWQ4YWE0YWUzNDE4YWNiVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LDB4NWI5Y2NhNGY3NzYzZTM3M1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSwweDY4MmU2ZmYzZDZiMmI4YTNVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsMHg3NDhmODJlZTVkZWZiMmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LDB4NzhhNTYzNmY0MzE3MmY2MFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCwweDg0Yzg3ODE0YTFmMGFiNzJVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksMHg4Y2M3MDIwODFhNjQzOWVjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLDB4OTBiZWZmZmEyMzYzMWUyOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSwweGE0NTA2Y2ViZGU4MmJkZTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsMHhiZWY5YTNmN2IyYzY3OTE1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLDB4YzY3MTc4ZjJlMzcyNTMyYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCwweGNhMjczZWNlZWEyNjYxOWNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsMHhkMTg2YjhjNzIxYzBjMjA3VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LDB4ZWFkYTdkZDZjZGUwZWIxZVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NywweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsMHgwNmYwNjdhYTcyMTc2ZmJhVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LDB4MGE2MzdkYzVhMmM4OThhNlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCwweDExM2Y5ODA0YmVmOTBkYWVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsMHgxYjcxMGIzNTEzMWM0NzFiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLDB4MjhkYjc3ZjUyMzA0N2Q4NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MywweDMyY2FhYjdiNDBjNzI0OTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsMHgzYzllYmUwYTE1YzliZWJjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LDB4NDMxZDY3YzQ5YzEwMGQ0Y1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NiwweDRjYzVkNGJlY2IzZTQyYjZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsMHg1OTdmMjk5Y2ZjNjU3ZTJhVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LDB4NWZjYjZmYWIzYWQ2ZmFlY1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSwweDZjNDQxOThjNGE0NzU4MTdVTEwpOwogCiAjdW5kZWYgUk5ECiAKQEAgLTgwMyw1ICs4MDEsMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0hBNTEyVHlwZSIsIChQeU9iamVjdCAqKSZTSEE1MTJ0eXBlKTsKICAgICByZXR1cm4gbTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA3NTNkOTg3Li5lMjcwNzViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTE5OCw3ICsxOTgsNyBAQAogcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0gICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CisgICAgZXJybm8gPSAoaW50KSAoaW50cHRyX3QpIGRhdGE7CiAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB3cml0ZSB0byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CkBAIC0yNzcsNyArMjc3LDcgQEAKIAogICAgICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGludHB0cl90KWVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOwotICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02MDksMTEgKzYwOSw2IEBACiAgICAgaWYgKGZkICE9IC0xKSB7CiAgICAgICAgIGludCBibG9ja2luZzsKIAotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNzEsMjEwICsxMjY2LDE2OSBAQAogICAgIH0KIAogI2lmZGVmIFNJR0hVUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSFVQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSFVQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSFVQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JSRUFLCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCUkVBSyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JSRUFLIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlJFQUspKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUVVJVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUVVJVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1FVSVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdRVUlUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RSQVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RSQVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUUkFQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFJBUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBQlJUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBQlJUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUJSVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FCUlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRU1UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdFTVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdFTVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdFTVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRlBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdGUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdGUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdGUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHS0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHS0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0tJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdLSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JVUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlVTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlVTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlVTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NFR1YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NFR1YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTRUdWIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU0VHVikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTWVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NZUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NZUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NZUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQSVBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQSVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUElQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BJUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RFUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RFUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdURVJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVEVSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IxCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IxKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjEpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjIiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IyKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0xEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0xEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0xEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NITEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NITEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDSExEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0hMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQV1IKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BXUik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BXUiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BXUikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VSRwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVJHKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVJHIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVJHKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1dJTkNICi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdXSU5DSCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1dJTkNIIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHV0lOQ0gpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUE9MTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUE9MTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BPTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQT0xMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NUT1AKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NUT1ApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTVE9QIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1RPUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUU1RQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUU1RQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFNUUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RTVFApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ09OVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ09OVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NPTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDT05UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVElOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRJTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVE9VCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVE9VKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRPVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUT1UpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVlRBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdWVEFMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdWVEFMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdWVEFMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BST0YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hDUFUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hDUFUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYQ1BVIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWENQVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYRlNaCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYRlNaKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWEZTWiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hGU1opKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUlOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1JTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1BWAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUFYKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lORk8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lORk8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTkZPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5GTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIElUSU1FUl9SRUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUkVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9SRUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUkVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfVklSVFVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1ZJUlRVQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfVklSVFVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1ZJUlRVQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9QUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1BST0YiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9QUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZCAoSEFWRV9TRVRJVElNRVIpIHx8IGRlZmluZWQgKEhBVkVfR0VUSVRJTUVSKQpAQCAtMTQ4NSwxNSArMTQzOSwxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0NfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQ19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQ19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9DX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9CUkVBS19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9CUkVBS19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQlJFQUtfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQlJFQUtfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCBhZjZjYzk0Li5mNGVkYzA2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogc2VuZChkYXRhWywgZmxhZ3NdKSAtLSBzZW5kIGRhdGEsIG1heSBub3Qgc2VuZCBhbGwgb2YgaXRcblwKIHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyKSAtLSBzZW5kIGRhdGEgdG8gYSBnaXZlbiBhZGRyZXNzXG5cCiBzZXRibG9ja2luZygwIHwgMSkgLS0gc2V0IG9yIGNsZWFyIHRoZSBibG9ja2luZyBJL08gZmxhZ1xuXAotc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAorc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAogaWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXApAQCAtMTUzLDcgKzE1Myw3IEBACiAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbm90IGFsbCBMaW51eCB2ZXJzaW9ucyBhZ3JlZSwgc28gdGhlcmUgdGhlIHNldHRpbmdzCiAgICBjb21wdXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmUgbmVlZGVkISAqLwogCi0jaWZuZGVmIGxpbnV4CisjaWZuZGVmIF9fbGludXhfXwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMTYzLDcgKzE2MywxMSBAQAogIyBpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSVRIX1RIUkVBRAorI2lmICFkZWZpbmVkKFdJVEhfVEhSRUFEKQorIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNzYsNyBAQAogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwotIyBlbGlmIGRlZmluZWQobGludXgpCisjIGVsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAvKiBSZWx5IG9uIHRoZSBjb25maWd1cmUgc2NyaXB0ICovCiAjIGVsaWYgZGVmaW5lZChfTElOVVhfU09VUkNFX0NPTVBBVCkgLyogTGludXggY29tcGF0aWJpbGl0eSBvbiBBSVggKi8KICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMjg0LDYgKzI4OCwzNiBAQAogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworI2luY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgorI2lmbmRlZiBBRl9BTEcKKyNkZWZpbmUgQUZfQUxHIDM4CisjZW5kaWYKKyNpZm5kZWYgU09MX0FMRworI2RlZmluZSBTT0xfQUxHIDI3OQorI2VuZGlmCisKKy8qIExpbnV4IDMuMTkgKi8KKyNpZm5kZWYgQUxHX1NFVF9BRUFEX0FTU09DTEVOCisjZGVmaW5lIEFMR19TRVRfQUVBRF9BU1NPQ0xFTiAgICAgICAgICAgNAorI2VuZGlmCisjaWZuZGVmIEFMR19TRVRfQUVBRF9BVVRIU0laRQorI2RlZmluZSBBTEdfU0VUX0FFQURfQVVUSFNJWkUgICAgICAgICAgIDUKKyNlbmRpZgorLyogTGludXggNC44ICovCisjaWZuZGVmIEFMR19TRVRfUFVCS0VZCisjZGVmaW5lIEFMR19TRVRfUFVCS0VZICAgICAgICAgICAgICAgICAgNgorI2VuZGlmCisKKyNpZm5kZWYgQUxHX09QX1NJR04KKyNkZWZpbmUgQUxHX09QX1NJR04gICAgICAgICAgICAgICAgICAgICAyCisjZW5kaWYKKyNpZm5kZWYgQUxHX09QX1ZFUklGWQorI2RlZmluZSBBTEdfT1BfVkVSSUZZICAgICAgICAgICAgICAgICAgIDMKKyNlbmRpZgorCisjZW5kaWYgLyogSEFWRV9TT0NLQUREUl9BTEcgKi8KKwogLyogR2VuZXJpYyBzb2NrZXQgb2JqZWN0IGRlZmluaXRpb25zIGFuZCBpbmNsdWRlcyAqLwogI2RlZmluZSBQeVNvY2tldF9CVUlMRElOR19TT0NLRVQKICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKQEAgLTU5MCw2ICs2MjQsNyBAQAogc3RhdGljIGludAogaW50ZXJuYWxfc2V0YmxvY2tpbmcoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgYmxvY2spCiB7CisgICAgaW50IHJlc3VsdCA9IC0xOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB1X2xvbmcgYXJnOwogI2VuZGlmCkBAIC02MDgsMjQgKzY0Myw0MSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaWYgKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkKICAgICBibG9jayA9ICFibG9jazsKLSAgICBpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKTsKKyAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jaykgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKICNlbHNlCiAgICAgZGVsYXlfZmxhZyA9IGZjbnRsKHMtPnNvY2tfZmQsIEZfR0VURkwsIDApOworICAgIGlmIChkZWxheV9mbGFnID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKGJsb2NrKQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgJiAofk9fTk9OQkxPQ0spOwogICAgIGVsc2UKICAgICAgICAgbmV3X2RlbGF5X2ZsYWcgPSBkZWxheV9mbGFnIHwgT19OT05CTE9DSzsKICAgICBpZiAobmV3X2RlbGF5X2ZsYWcgIT0gZGVsYXlfZmxhZykKLSAgICAgICAgZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpOworICAgICAgICBpZiAoZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpID09IC0xKQorICAgICAgICAgICAgZ290byBkb25lOwogI2VuZGlmCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgYXJnID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOworICAgIGlmIChpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKSAhPSAwKQorICAgICAgICBnb3RvIGRvbmU7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisgICAgcmVzdWx0ID0gMDsKKworICBkb25lOgorICAgIDsgIC8qIG5lY2Vzc2FyeSBmb3IgLS13aXRob3V0LXRocmVhZHMgZmxhZyAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICAvKiBTaW5jZSB0aGVzZSBkb24ndCByZXR1cm4gYW55dGhpbmcgKi8KLSAgICByZXR1cm4gMTsKKyAgICBpZiAocmVzdWx0KSB7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworI2Vsc2UKKyAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGludApAQCAtODczLDcgKzkyNSw3IEBACiAvKiBEZWZhdWx0IHRpbWVvdXQgZm9yIG5ldyBzb2NrZXRzICovCiBzdGF0aWMgX1B5VGltZV90IGRlZmF1bHR0aW1lb3V0ID0gX1BZVElNRV9GUk9NU0VDT05EUygtMSk7CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBpbml0X3NvY2tvYmplY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLAogICAgICAgICAgICAgICAgIFNPQ0tFVF9UIGZkLCBpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvKQogewpAQCAtODkwLDEwICs5NDIsMTMgQEAKICNlbmRpZgogICAgIHsKICAgICAgICAgcy0+c29ja190aW1lb3V0ID0gZGVmYXVsdHRpbWVvdXQ7Ci0gICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKQotICAgICAgICAgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCk7CisgICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0KKyAgICByZXR1cm4gMDsKIH0KIAogCkBAIC05MDgsOCArOTYzLDEyIEBACiAgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzOwogICAgIHMgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopCiAgICAgICAgIFB5VHlwZV9HZW5lcmljTmV3KCZzb2NrX3R5cGUsIE5VTEwsIE5VTEwpOwotICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgIGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90byk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHM7CiB9CiAKQEAgLTkyOCw3ICs5ODcsNyBAQAogICAgYW4gZXJyb3Igb2NjdXJyZWQ7IHRoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKi8KIAogc3RhdGljIGludAotc2V0aXBhZGRyKGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqYWRkcl9yZXQsIHNpemVfdCBhZGRyX3JldF9zaXplLCBpbnQgYWYpCitzZXRpcGFkZHIoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyICphZGRyX3JldCwgc2l6ZV90IGFkZHJfcmV0X3NpemUsIGludCBhZikKIHsKICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXM7CiAgICAgaW50IGVycm9yOwpAQCAtMTEwOSw3ICsxMTY4LDcgQEAKICAgIGFuIGVycm9yIG9jY3VycmVkLiAqLwogCiBzdGF0aWMgaW50Ci1zZXRiZGFkZHIoY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKK3NldGJkYWRkcihjb25zdCBjaGFyICpuYW1lLCBiZGFkZHJfdCAqYmRhZGRyKQogewogICAgIHVuc2lnbmVkIGludCBiMCwgYjEsIGIyLCBiMywgYjQsIGI1OwogICAgIGNoYXIgY2g7CkBAIC0xMTgyLDcgKzEyNDEsNyBAQAogICAgIGNhc2UgQUZfVU5JWDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl91biAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4gKikgYWRkcjsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgICAgICBpZiAoYS0+c3VuX3BhdGhbMF0gPT0gMCkgeyAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlICovCiAgICAgICAgICAgICBhZGRybGVuIC09IG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYS0+c3VuX3BhdGgsIGFkZHJsZW4pOwpAQCAtMTM3Myw2ICsxNDMyLDIyIEBACiAgICAgICAgIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9hbGcgKmEgPSAoc3RydWN0IHNvY2thZGRyX2FsZyAqKWFkZHI7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJzI3MjSEgiLAorICAgICAgICAgICAgYS0+c2FsZ190eXBlLAorICAgICAgICAgICAgc3RybmxlbigoY29uc3QgY2hhciopYS0+c2FsZ190eXBlLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYS0+c2FsZ190eXBlKSksCisgICAgICAgICAgICBhLT5zYWxnX25hbWUsCisgICAgICAgICAgICBzdHJubGVuKChjb25zdCBjaGFyKilhLT5zYWxnX25hbWUsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihhLT5zYWxnX25hbWUpKSwKKyAgICAgICAgICAgIGEtPnNhbGdfZmVhdCwKKyAgICAgICAgICAgIGEtPnNhbGdfbWFzayk7CisgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6CkBAIC0xNDAzLDcgKzE0NzgsNyBAQAogaWRuYV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgc3RydWN0IG1heWJlX2lkbmEgKmRhdGEpCiB7CiAgICAgc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqb2JqMiwgKm9iajM7CisgICAgUHlPYmplY3QgKm9iajI7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlkbmFfY2xlYW51cChkYXRhKTsKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNDE4LDMxICsxNDkzLDI3IEBACiAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKG9iaik7CiAgICAgICAgIGxlbiA9IFB5Qnl0ZUFycmF5X1NpemUob2JqKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikgJiYgUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7Ci0gICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7Ci0gICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgeworICAgICAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvYmoyID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmosICJpZG5hIiwgTlVMTCk7CisgICAgICAgICAgICBpZiAoIW9iajIpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhvYmoyKSk7CisgICAgICAgICAgICBkYXRhLT5vYmogPSBvYmoyOworICAgICAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMik7CisgICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajIpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBvYmoyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICAgICAgaWYgKCFvYmoyKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyaW5nIG9yIHVuaWNvZGUgdGV4dCBidWZmZXIgZXhwZWN0ZWQsIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIG9iajMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iajIsICJpZG5hIiwgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmoyKTsKLSAgICAgICAgaWYgKCFvYmozKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob2JqMykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmozKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBkYXRhLT5vYmogPSBvYmozOwotICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmozKTsKLSAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmozKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5IGV4cGVjdGVkLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChzdHJsZW4oZGF0YS0+YnVmKSAhPSBsZW4pIHsKICAgICAgICAgUHlfQ0xFQVIoZGF0YS0+b2JqKTsKQEAgLTE0ODUsNyArMTU1Niw3IEBACiAgICAgICAgIGFzc2VydChwYXRoLmxlbiA+PSAwKTsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICAgICAgaWYgKHBhdGgubGVuID4gMCAmJiAqKGNvbnN0IGNoYXIgKilwYXRoLmJ1ZiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgZXh0ZW5zaW9uICovCiAgICAgICAgICAgICBpZiAoKHNpemVfdClwYXRoLmxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewpAQCAtMTk0Miw2ICsyMDEzLDM2IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9hbGcgKnNhOworICAgICAgICBjaGFyICp0eXBlOworICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBzYSA9IChzdHJ1Y3Qgc29ja2FkZHJfYWxnICopYWRkcl9yZXQ7CisKKyAgICAgICAgbWVtc2V0KHNhLCAwLCBzaXplb2YoKnNhKSk7CisgICAgICAgIHNhLT5zYWxnX2ZhbWlseSA9IEFGX0FMRzsKKworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzfEhIOmdldHNvY2thZGRyYXJnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGUsICZuYW1lLCAmc2EtPnNhbGdfZmVhdCwgJnNhLT5zYWxnX21hc2spKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIC8qIHNvY2thZGRyX2FsZyBoYXMgZml4ZWQtc2l6ZWQgY2hhciBhcnJheXMgZm9yIHR5cGUgYW5kIG5hbWUgKi8KKyAgICAgICAgaWYgKHN0cmxlbih0eXBlKSA+IHNpemVvZihzYS0+c2FsZ190eXBlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJBRl9BTEcgdHlwZSB0b28gbG9uZy4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHN0cm5jcHkoKGNoYXIgKilzYS0+c2FsZ190eXBlLCB0eXBlLCBzaXplb2Yoc2EtPnNhbGdfdHlwZSkpOworICAgICAgICBpZiAoc3RybGVuKG5hbWUpID4gc2l6ZW9mKHNhLT5zYWxnX25hbWUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkFGX0FMRyBuYW1lIHRvbyBsb25nLiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3RybmNweSgoY2hhciAqKXNhLT5zYWxnX25hbWUsIG5hbWUsIHNpemVvZihzYS0+c2FsZ19uYW1lKSk7CisKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKnNhKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCiAKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIApAQCAtMjA2NCw2ICsyMTY1LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfYWxnKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCiAKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIApAQCAtMjIyMywxMCArMjMzMSwyMSBAQAogc29ja19hY2NlcHRfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCiB7CiAgICAgc3RydWN0IHNvY2tfYWNjZXB0ICpjdHggPSBkYXRhOworICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciA9IFNBUzJTQShjdHgtPmFkZHJidWYpOworICAgIHNvY2tsZW5fdCAqcGFkZHJsZW4gPSBjdHgtPmFkZHJsZW47CisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICAvKiBBRl9BTEcgZG9lcyBub3Qgc3VwcG9ydCBhY2NlcHQoKSB3aXRoIGFkZHIgYW5kIHJhaXNlcworICAgICAqIEVDT05OQUJPUlRFRCBpbnN0ZWFkLiAqLworICAgIGlmIChzLT5zb2NrX2ZhbWlseSA9PSBBRl9BTEcpIHsKKyAgICAgICAgYWRkciA9IE5VTEw7CisgICAgICAgIHBhZGRybGVuID0gTlVMTDsKKyAgICAgICAgKmN0eC0+YWRkcmxlbiA9IDA7CisgICAgfQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCiAgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgewotICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbiwKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09DS19DTE9FWEVDKTsKICAgICAgICAgaWYgKGN0eC0+cmVzdWx0ID09IElOVkFMSURfU09DS0VUICYmIGFjY2VwdDRfd29ya3MgPT0gLTEpIHsKICAgICAgICAgICAgIC8qIE9uIExpbnV4IG9sZGVyIHRoYW4gMi42LjI4LCBhY2NlcHQ0KCkgZmFpbHMgd2l0aCBFTk9TWVMgKi8KQEAgLTIyMzQsOSArMjM1Myw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKLSAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuKTsKICNlbHNlCi0gICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4pOwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0yMzMyLDEwICsyNDUxLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcyhibG9jayA/IC0xIDogMCk7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jaykgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0YmxvY2tpbmdfZG9jLApAQCAtMjQwMSwxMCArMjUyMCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0dGltZW91dF9kb2MsCkBAIC0yNDM4LDkgKzI1NTcsMTIgQEAKIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkLiIpOwogCiAvKiBzLnNldHNvY2tvcHQoKSBtZXRob2QuCi0gICBXaXRoIGFuIGludGVnZXIgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gaW50ZWdlciBvcHRpb24uCisgICBXaXRoIGFuIGludGVnZXIgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gaW50ZWdlciBvcHR2YWwgd2l0aCBvcHRsZW49NC4KKyAgIFdpdGggTm9uZSBhcyB0aGlyZCBhcmd1bWVudCBhbmQgYW4gaW50ZWdlciBmb3VydGggYXJndW1lbnQsIHNldAorICAgb3B0dmFsPU5VTEwgd2l0aCB1bnNpZ25lZCBpbnQgYXMgb3B0bGVuLgogICAgV2l0aCBhIHN0cmluZyB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBvcHRpb24gZnJvbSBhIGJ1ZmZlcjsKLSAgIHVzZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgJ3N0cnVjdCcgdG8gZW5jb2RlIHRoZSBzdHJpbmcuICovCisgICB1c2Ugb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlICdzdHJ1Y3QnIHRvIGVuY29kZSB0aGUgc3RyaW5nLgorKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2V0c29ja29wdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjQ1MCwzMSArMjU3Miw2NCBAQAogICAgIGludCByZXM7CiAgICAgUHlfYnVmZmVyIG9wdHZhbDsKICAgICBpbnQgZmxhZzsKKyAgICB1bnNpZ25lZCBpbnQgb3B0bGVuOworICAgIFB5T2JqZWN0ICpub25lOwogCisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBmbGFnKSAqLwogICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWk6c2V0c29ja29wdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJmZsYWcpKSB7CiAgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKSZmbGFnLCBzaXplb2YgZmxhZyk7CisgICAgICAgIGdvdG8gZG9uZTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZvcHR2YWwpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIE5vbmUsIGZsYWcpICovCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyFJOnNldHNvY2tvcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsIFB5X1RZUEUoUHlfTm9uZSksICZub25lLCAmb3B0bGVuKSkgeworICAgICAgICBhc3NlcnQoc2l6ZW9mKHNvY2tsZW5fdCkgPj0gc2l6ZW9mKHVuc2lnbmVkIGludCkpOworICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIChzb2NrbGVuX3Qpb3B0bGVuKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBidWZmZXIpICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZvcHR2YWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAob3B0dmFsLmxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic29ja2V0IG9wdGlvbiBpcyBsYXJnZXIgdGhhbiAlaSBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChyZXMgPCAwKQorICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHR2YWwuYnVmLCAoaW50KW9wdHZhbC5sZW4pOworI2Vsc2UKKyAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKyNlbmRpZgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CisKK2RvbmU6CisgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldHNvY2tvcHRfZG9jLAotInNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWUpXG5cCisic2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZTogaW50KVxuXAorc2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZTogYnVmZmVyKVxuXAorc2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCBOb25lLCBvcHRsZW46IGludClcblwKIFxuXAogU2V0IGEgc29ja2V0IG9wdGlvbi4gIFNlZSB0aGUgVW5peCBtYW51YWwgZm9yIGxldmVsIGFuZCBvcHRpb24uXG5cCi1UaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyIG9yIGEgc3RyaW5nLiIpOworVGhlIHZhbHVlIGFyZ3VtZW50IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciwgYSBzdHJpbmcgYnVmZmVyLCBvciBcblwKK05vbmUsIG9wdGxlbi4iKTsKIAogCiAvKiBzLmdldHNvY2tvcHQoKSBtZXRob2QuCkBAIC0yNTY2LDE3ICsyNzIxLDIyIEBACiBzb2NrX2Nsb3NlKFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKICAgICBTT0NLRVRfVCBmZDsKKyAgICBpbnQgcmVzOwogCi0gICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KLSAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAqLwogICAgIGZkID0gcy0+c29ja19mZDsKICAgICBpZiAoZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAgICAgcy0+c29ja19mZCA9IElOVkFMSURfU09DS0VUOworCisgICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZQorICAgICAgICAgICBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvIGFuZAorICAgICAgICAgICBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAorICAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLiAqLwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIHJlcyA9IFNPQ0tFVENMT1NFKGZkKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgfQogICAgIH0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0zNzU5LDYgKzM5MTksNjMgQEAKIH07CiAKIHN0YXRpYyBpbnQKK3NvY2tfc2VuZG1zZ19pb3ZlYyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICpkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNnaGRyICptc2csCisgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICoqZGF0YWJ1ZnNvdXQsIFB5X3NzaXplX3QgKm5kYXRhYnVmc291dCkgeworICAgIFB5X3NzaXplX3QgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YV9mYXN0ID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpOworICAgIGlmIChkYXRhX2Zhc3QgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOworICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBtc2ctPm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOworICAgIGlmIChuZGF0YXBhcnRzID4gMCkgeworICAgICAgICBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cyk7CisgICAgICAgIGlmIChpb3ZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgbXNnLT5tc2dfaW92ID0gaW92czsKKworICAgICAgICBkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpOworICAgICAgICBpZiAoZGF0YWJ1ZnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOworICAgIH0KKyAgICByZXN1bHQgPSAwOworICBmaW5hbGx5OgorICAgICpkYXRhYnVmc291dCA9IGRhdGFidWZzOworICAgICpuZGF0YWJ1ZnNvdXQgPSBuZGF0YWJ1ZnM7CisgICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKIHNvY2tfc2VuZG1zZ19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnICpjdHggPSBkYXRhOwpAQCAtMzc3MiwxMSArMzk4OSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2VuZG1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgaSwgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOwogICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOwotICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKICAgICBzdHJ1Y3QgY21zZ2luZm8gewogICAgICAgICBpbnQgbGV2ZWw7CiAgICAgICAgIGludCB0eXBlOwpAQCAtMzc4NSwxMyArNDAwMSwxNiBAQAogICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOwogICAgIHNpemVfdCBjb250cm9sbGVuLCBjb250cm9sbGVuX2xhc3Q7CiAgICAgaW50IGFkZHJsZW4sIGZsYWdzID0gMDsKLSAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsICpkYXRhX2Zhc3QgPSBOVUxMLAorICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwKICAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwogCiAgICAgLyogUGFyc2UgZGVzdGluYXRpb24gYWRkcmVzcy4gKi8KICAgICBpZiAoYWRkcl9hcmcgIT0gTlVMTCAmJiBhZGRyX2FyZyAhPSBQeV9Ob25lKSB7CkBAIC0zODAzLDMwICs0MDIyLDggQEAKIAogICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCiAgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCi0gICAgaWYgKChkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgIGlmIChzb2NrX3NlbmRtc2dfaW92ZWMocywgZGF0YV9hcmcsICZtc2csICZkYXRhYnVmcywgJm5kYXRhYnVmcykgPT0gLTEpIHsKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKLSAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIG1zZy5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKLSAgICBpZiAobmRhdGFwYXJ0cyA+IDAgJiYKLSAgICAgICAgKChtc2cubXNnX2lvdiA9IGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCB8fAotICAgICAgICAgKGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cykpID09IE5VTEwpKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQotICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKLSAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKICAgICB9CiAKICAgICBpZiAoY21zZ19hcmcgPT0gTlVMTCkKQEAgLTM4ODUsMTEgKzQwODIsMTMgQEAKICAgICBpZiAobmNtc2didWZzID4gMCkgewogICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2ggPSBOVUxMOwogCi0gICAgICAgIGlmICgobXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZiA9Ci0gICAgICAgICAgICAgUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbik7CisgICAgICAgIGlmIChjb250cm9sYnVmID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgIH0KKyAgICAgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKwogICAgICAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOwogCiAgICAgICAgIC8qIE5lZWQgdG8gemVybyBvdXQgdGhlIGJ1ZmZlciBhcyBhIHdvcmthcm91bmQgZm9yIGdsaWJjJ3MKQEAgLTM5NTQsMTEgKzQxNTMsMTEgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmY21zZ3NbaV0uZGF0YSk7CiAgICAgUHlNZW1fRnJlZShjbXNncyk7CiAgICAgUHlfWERFQ1JFRihjbXNnX2Zhc3QpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykKKyAgICBQeU1lbV9GcmVlKG1zZy5tc2dfaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIH0KICAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKLSAgICBQeU1lbV9GcmVlKGlvdnMpOwotICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0zOTgwLDYgKzQxNzksMTcxIEBACiBkYXRhIHNlbnQuIik7CiAjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCitzdGF0aWMgUHlPYmplY3QqCitzb2NrX3NlbmRtc2dfYWZhbGcoUHlTb2NrZXRTb2NrT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGFfYXJnID0gTlVMTDsKKworICAgIFB5X2J1ZmZlciBpdiA9IHtOVUxMLCBOVUxMfTsKKworICAgIFB5T2JqZWN0ICpvcG9iaiA9IE5VTEw7CisgICAgaW50IG9wID0gLTE7CisKKyAgICBQeU9iamVjdCAqYXNzb2NsZW5vYmogPSBOVUxMOworICAgIGludCBhc3NvY2xlbiA9IC0xOworCisgICAgdW5zaWduZWQgaW50ICp1aXB0cjsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgc3RydWN0IG1zZ2hkciBtc2c7CisgICAgc3RydWN0IGNtc2doZHIgKmhlYWRlciA9IE5VTEw7CisgICAgc3RydWN0IGFmX2FsZ19pdiAqYWxnX2l2ID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKKyAgICBQeV9zc2l6ZV90IGNvbnRyb2xsZW47CisgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im1zZyIsICJvcCIsICJpdiIsICJhc3NvY2xlbiIsICJmbGFncyIsIDB9OworCisgICAgaWYgKHNlbGYtPnNvY2tfZmFtaWx5ICE9IEFGX0FMRykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGdzZXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEFGX0FMRyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8TyRPIXkqTyFpOnNlbmRtc2dfYWZhbGciLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TG9uZ19UeXBlLCAmb3BvYmosICZpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMb25nX1R5cGUsICZhc3NvY2xlbm9iaiwgJmZsYWdzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCisgICAgLyogb3AgaXMgYSByZXF1aXJlZCwga2V5d29yZC1vbmx5IGFyZ3VtZW50ID49IDAgKi8KKyAgICBpZiAob3BvYmogIT0gTlVMTCkgeworICAgICAgICBvcCA9IF9QeUxvbmdfQXNJbnQob3BvYmopOworICAgIH0KKyAgICBpZiAob3AgPCAwKSB7CisgICAgICAgIC8qIG92ZXJyaWRlIGV4Y2VwdGlvbiBmcm9tIF9QeUxvbmdfQXNJbnQoKSAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgb3IgbWlzc2luZyBhcmd1bWVudCAnb3AnIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgLyogYXNzb2NsZW4gaXMgb3B0aW9uYWwgYnV0IG11c3QgYmUgPj0gMCAqLworICAgIGlmIChhc3NvY2xlbm9iaiAhPSBOVUxMKSB7CisgICAgICAgIGFzc29jbGVuID0gX1B5TG9uZ19Bc0ludChhc3NvY2xlbm9iaik7CisgICAgICAgIGlmIChhc3NvY2xlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFzc29jbGVuIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzb2NsZW4gbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgY29udHJvbGxlbiA9IENNU0dfU1BBQ0UoNCk7CisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGNvbnRyb2xsZW4gKz0gQ01TR19TUEFDRShzaXplb2YoKmFsZ19pdikgKyBpdi5sZW4pOworICAgIH0KKyAgICBpZiAoYXNzb2NsZW4gPj0gMCkgeworICAgICAgICBjb250cm9sbGVuICs9IENNU0dfU1BBQ0UoNCk7CisgICAgfQorCisgICAgY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKTsKKyAgICBpZiAoY29udHJvbGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgbWVtc2V0KGNvbnRyb2xidWYsIDAsIGNvbnRyb2xsZW4pOworCisgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBpZiAoZGF0YV9hcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAoc29ja19zZW5kbXNnX2lvdmVjKHNlbGYsIGRhdGFfYXJnLCAmbXNnLCAmZGF0YWJ1ZnMsICZuZGF0YWJ1ZnMpID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBzZXQgb3BlcmF0aW9uIHRvIGVuY3J5cHQgb3IgZGVjcnlwdCAqLworICAgIGhlYWRlciA9IENNU0dfRklSU1RIRFIoJm1zZyk7CisgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfRklSU1RIRFIiKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9PUDsKKyAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19MRU4oNCk7CisgICAgdWlwdHIgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgKnVpcHRyID0gKHVuc2lnbmVkIGludClvcDsKKworICAgIC8qIHNldCBpbml0aWFsaXphdGlvbiB2ZWN0b3IgKi8KKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgaGVhZGVyID0gQ01TR19OWFRIRFIoJm1zZywgaGVhZGVyKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19OWFRIRFIoaXYpIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICAgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX0lWOworICAgICAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19TUEFDRShzaXplb2YoKmFsZ19pdikgKyBpdi5sZW4pOworICAgICAgICBhbGdfaXYgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgICAgIGFsZ19pdi0+aXZsZW4gPSBpdi5sZW47CisgICAgICAgIG1lbWNweShhbGdfaXYtPml2LCBpdi5idWYsIGl2Lmxlbik7CisgICAgfQorCisgICAgLyogc2V0IGxlbmd0aCBvZiBhc3NvY2lhdGVkIGRhdGEgZm9yIEFFQUQgKi8KKyAgICBpZiAoYXNzb2NsZW4gPj0gMCkgeworICAgICAgICBoZWFkZXIgPSBDTVNHX05YVEhEUigmbXNnLCBoZWFkZXIpOworICAgICAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX05YVEhEUihhc3NvYykiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgICAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfQUVBRF9BU1NPQ0xFTjsKKyAgICAgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfTEVOKDQpOworICAgICAgICB1aXB0ciA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAgICAgKnVpcHRyID0gKHVuc2lnbmVkIGludClhc3NvY2xlbjsKKyAgICB9CisKKyAgICBjdHgubXNnID0gJm1zZzsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHNlbGYsIDEsIHNvY2tfc2VuZG1zZ19pbXBsLCAmY3R4KSA8IDApIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChjdHgucmVzdWx0KTsKKworICBmaW5hbGx5OgorICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJml2KTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShtc2cubXNnX2lvdik7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKHNlbmRtc2dfYWZhbGdfZG9jLAorInNlbmRtc2dfYWZhbGcoW21zZ10sICosIG9wWywgaXZbLCBhc3NvY2xlblssIGZsYWdzPU1TR19NT1JFXV1dKVxuXAorXG5cCitTZXQgb3BlcmF0aW9uIG1vZGUsIElWIGFuZCBsZW5ndGggb2YgYXNzb2NpYXRlZCBkYXRhIGZvciBhbiBBRl9BTEdcblwKK29wZXJhdGlvbiBzb2NrZXQuIik7CisjZW5kaWYKIAogLyogcy5zaHV0ZG93bihob3cpIG1ldGhvZCAqLwogCkBAIC00MDM4LDYgKzQ0MDIsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVjdik7IH0KKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgY2FzZSBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBvcHRpb247CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmcsICJrSTppb2N0bCIsICZjbWQsICZvcHRpb24pKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChXU0FJb2N0bChzLT5zb2NrX2ZkLCBjbWQsICZvcHRpb24sIHNpemVvZihvcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsICZyZWN2LCBOVUxMLCBOVUxMKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVjdik7IH0KKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBpb2N0bCBjb21tYW5kICVkIiwgY21kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MDQ4LDcgKzQ0MjMsOCBAQAogXG5cCiBDb250cm9sIHRoZSBzb2NrZXQgd2l0aCBXU0FJb2N0bCBzeXNjYWxsLiBDdXJyZW50bHkgc3VwcG9ydGVkICdjbWQnIHZhbHVlcyBhcmVcblwKIFNJT19SQ1ZBTEw6ICAnb3B0aW9uJyBtdXN0IGJlIG9uZSBvZiB0aGUgc29ja2V0LlJDVkFMTF8qIGNvbnN0YW50cy5cblwKLVNJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuIik7CitTSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLlxuXAorU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSDogJ29wdGlvbicgaXMgYSBib29sZWFuIHZhbHVlLCBhbmQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCIpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC00MTQ3LDYgKzQ1MjMsMTAgQEAKICAgICB7InNlbmRtc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZywgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgeyJzZW5kbXNnX2FmYWxnIiwgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2dfYWZhbGcsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19hZmFsZ19kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNDE2NywyMiArNDU0Nyw0NSBAQAogICAgRmlyc3QgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRpb24uICovCiAKIHN0YXRpYyB2b2lkCitzb2NrX2ZpbmFsaXplKFB5U29ja2V0U29ja09iamVjdCAqcykKK3sKKyAgICBTT0NLRVRfVCBmZDsKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIGlmIChzLT5zb2NrX2ZkICE9IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopcywgMSwgInVuY2xvc2VkICVSIiwgcykpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKilzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIE9ubHkgY2xvc2UgdGhlIHNvY2tldCAqYWZ0ZXIqIGxvZ2dpbmcgdGhlIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgICAgICAgICAgIHRvIGFsbG93IHRoZSBsb2dnZXIgdG8gY2FsbCBzb2NrZXQgbWV0aG9kcyBsaWtlCisgICAgICAgICAgIHNvY2tldC5nZXRzb2NrbmFtZSgpLiBJZiB0aGUgc29ja2V0IGlzIGNsb3NlZCBiZWZvcmUsIHNvY2tldAorICAgICAgICAgICBtZXRob2RzIGZhaWxzIHdpdGggdGhlIEVCQURGIGVycm9yLiAqLworICAgICAgICBmZCA9IHMtPnNvY2tfZmQ7CisgICAgICAgIHMtPnNvY2tfZmQgPSBJTlZBTElEX1NPQ0tFVDsKKworICAgICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgc29ja19jbG9zZSgpICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKworc3RhdGljIHZvaWQKIHNvY2tfZGVhbGxvYyhQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7Ci0gICAgaWYgKHMtPnNvY2tfZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKLSAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwotICAgICAgICBQeV9zc2l6ZV90IG9sZF9yZWZjb3VudCA9IFB5X1JFRkNOVChzKTsKLSAgICAgICAgKytQeV9SRUZDTlQocyk7Ci0gICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkICVSIiwgcykpCi0gICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLwotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpCi0gICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKSBzKTsKLSAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOwotICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0Uocy0+c29ja19mZCk7Ci0gICAgICAgIFB5X1JFRkNOVChzKSA9IG9sZF9yZWZjb3VudDsKLSAgICB9CisgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYygoUHlPYmplY3QgKilzKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUocyktPnRwX2ZyZWUoKFB5T2JqZWN0ICopcyk7CiB9CiAKQEAgLTQzNzAsNyArNDc3MywxMCBAQAogICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKTsKKyAgICBpZiAoaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKSA9PSAtMSkgeworICAgICAgICBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIApAQCAtNDM5OSw3ICs0ODA1LDggQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIHNvY2tfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTQ0MTksNiArNDgyNiwxNSBAQAogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBzb2NrX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIChkZXN0cnVjdG9yKXNvY2tfZmluYWxpemUsICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApAQCAtNTQ1NCwxMCArNTg3MCw2IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHJldHZhbCk7CiAgICAgfQotCi0gICAgLyogTk9UUkVBQ0hFRCAqLwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIGhhbmRsaW5nIG9mIGluZXRfbnRvcCIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC01NTc3LDcgKzU5ODksNyBAQAogICAgICAgICBQeU9TX3NucHJpbnRmKHBidWYsIHNpemVvZihwYnVmKSwgIiVsZCIsIHZhbHVlKTsKICAgICAgICAgcHB0ciA9IHBidWY7CiAgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socG9iaikpIHsKLSAgICAgICAgcHB0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcocG9iaik7CisgICAgICAgIHBwdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHBvYmopOwogICAgICAgICBpZiAocHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgfSBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBvYmopKSB7CkBAIC02MTkxLDkgKzY2MDMsNiBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOU1BFQyk7CiAjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9JTkVUKTsKLSNpZmRlZiBBRl9JTkVUNgotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQ2KTsKLSNlbmRpZiAvKiBBRl9JTkVUNiAqLwogI2lmIGRlZmluZWQoQUZfVU5JWCkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9VTklYKTsKICNlbmRpZiAvKiBBRl9VTklYICovCkBAIC02MjI0LDYgKzY2MzMsOSBAQAogICAgIC8qIFJlc2VydmVkIGZvciBXZXJuZXIncyBBVE0gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BQUw1KTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQUxHKTsgLyogTGludXggY3J5cHRvICovCisjZW5kaWYKICNpZmRlZiBBRl9YMjUKICAgICAvKiBSZXNlcnZlZCBmb3IgWC4yNSBwcm9qZWN0ICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfWDI1KTsKQEAgLTYyODUsNiArNjY5Nyw5IEBACiAjaWZkZWYgTkVUTElOS19UQVBCQVNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19UQVBCQVNFKTsKICNlbmRpZgorI2lmZGVmIE5FVExJTktfQ1JZUFRPCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19DUllQVE8pOworI2VuZGlmCiAjZW5kaWYgLyogQUZfTkVUTElOSyAqLwogI2lmZGVmIEFGX1JPVVRFCiAgICAgLyogQWxpYXMgdG8gZW11bGF0ZSA0LjRCU0QgKi8KQEAgLTY0MzgsMTEgKzY4NTMsMzAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX1RPUF9TUlYpOwogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIC8qIFNvY2tldCBvcHRpb25zICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9LRVkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfSVYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfT1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfQUVBRF9BU1NPQ0xFTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9BRUFEX0FVVEhTSVpFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX1BVQktFWSk7CisKKyAgICAvKiBPcGVyYXRpb25zICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX0RFQ1JZUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9FTkNSWVBUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfU0lHTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX1ZFUklGWSk7CisjZW5kaWYKKwogICAgIC8qIFNvY2tldCB0eXBlcyAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfU1RSRUFNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX0RHUkFNKTsKIC8qIFdlIGhhdmUgaW5jb21wbGV0ZSBzb2NrZXQgc3VwcG9ydC4gKi8KKyNpZmRlZiBTT0NLX1JBVworICAgIC8qIFNPQ0tfUkFXIGlzIG1hcmtlZCBhcyBvcHRpb25hbCBpbiB0aGUgUE9TSVggc3BlY2lmaWNhdGlvbiAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfUkFXKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfU0VRUEFDS0VUKTsKICNpZiBkZWZpbmVkKFNPQ0tfUkRNKQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfUkRNKTsKQEAgLTY0ODUsOSArNjkxOSwxMSBAQAogI2lmZGVmICBTT19PT0JJTkxJTkUKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19PT0JJTkxJTkUpOwogI2VuZGlmCisjaWZuZGVmIF9fR05VX18KICNpZmRlZiAgU09fUkVVU0VQT1JUCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUkVVU0VQT1JUKTsKICNlbmRpZgorI2VuZGlmCiAjaWZkZWYgIFNPX1NOREJVRgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1NOREJVRik7CiAjZW5kaWYKQEAgLTY1MjQsNiArNjk2MCwxMiBAQAogI2lmZGVmICBMT0NBTF9QRUVSQ1JFRAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0FMX1BFRVJDUkVEKTsKICNlbmRpZgorI2lmZGVmICBTT19QQVNTU0VDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEFTU1NFQyk7CisjZW5kaWYKKyNpZmRlZiAgU09fUEVFUlNFQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BFRVJTRUMpOworI2VuZGlmCiAjaWZkZWYgIFNPX0JJTkRUT0RFVklDRQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0JJTkRUT0RFVklDRSk7CiAjZW5kaWYKQEAgLTY1MzMsNiArNjk3NSwxMiBAQAogI2lmZGVmICBTT19NQVJLCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fTUFSSyk7CiAjZW5kaWYKKyNpZmRlZiBTT19ET01BSU4KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19ET01BSU4pOworI2VuZGlmCisjaWZkZWYgU09fUFJPVE9DT0wKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QUk9UT0NPTCk7CisjZW5kaWYKIAogICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZvciAibGlzdGVuIiAqLwogI2lmZGVmICBTT01BWENPTk4KQEAgLTY2OTEsNiArNzEzOSw5IEBACiAjaWZkZWYgU09MX1JEUwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9SRFMpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfQUxHKTsKKyNlbmRpZgogI2lmZGVmIFJEU19DQU5DRUxfU0VOVF9UTwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19DQU5DRUxfU0VOVF9UTyk7CiAjZW5kaWYKQEAgLTcwNjEsNiArNzUxMiwxMiBAQAogI2lmZGVmICBUQ1BfRkFTVE9QRU4KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfRkFTVE9QRU4pOwogI2VuZGlmCisjaWZkZWYgIFRDUF9DT05HRVNUSU9OCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX0NPTkdFU1RJT04pOworI2VuZGlmCisjaWZkZWYgIFRDUF9VU0VSX1RJTUVPVVQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfVVNFUl9USU1FT1VUKTsKKyNlbmRpZgogCiAgICAgLyogSVBYIG9wdGlvbnMgKi8KICNpZmRlZiAgSVBYX1RZUEUKQEAgLTcyMjgsOCArNzY4NSwxNiBAQAogCiAjaWZkZWYgU0lPX1JDVkFMTAogICAgIHsKLSAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFN9OwotICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyJ9OworICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMUywKKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgICAgICAgICBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRICisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMiLAorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICAgICAgICAgICJTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIIgorI2VuZGlmCisgICAgICAgIH07CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IoaSA9IDA7IGk8UHlfQVJSQVlfTEVOR1RIKGNvZGVzKTsgKytpKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdG1wOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwppbmRleCA0YjlmM2NkLi41NTZhNzE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwpAQCAtMTM3LDcgKzEzNywxMCBAQAogICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQogICAgICAgICBnb3RvIG91dDsKICAgICBpZiAoKHAgPSBnZXRzcG5hbShuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJnZXRzcG5hbSgpOiBuYW1lIG5vdCBmb3VuZCIpOworICAgICAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZ2V0c3BuYW0oKTogbmFtZSBub3QgZm91bmQiKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIHJldHZhbCA9IG1rc3BlbnQocCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZV9saWIuaCBiL01vZHVsZXMvc3JlX2xpYi5oCmluZGV4IDEyOGM3MWUuLjA4NjVmYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlX2xpYi5oCisrKyBiL01vZHVsZXMvc3JlX2xpYi5oCkBAIC0zNjcsMTQgKzM2NywxMiBAQAogI2RlZmluZSBSRVRVUk5fT05fRkFJTFVSRShpKSBcCiAgICAgZG8geyBSRVRVUk5fT05fRVJST1IoaSk7IGlmIChpID09IDApIFJFVFVSTl9GQUlMVVJFOyB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFNGWSh4KSAjeAotCiAjZGVmaW5lIERBVEFfU1RBQ0tfQUxMT0Moc3RhdGUsIHR5cGUsIHB0cikgXAogZG8geyBcCiAgICAgYWxsb2NfcG9zID0gc3RhdGUtPmRhdGFfc3RhY2tfYmFzZTsgXAogICAgIFRSQUNFKCgiYWxsb2NhdGluZyAlcyBpbiAlIiBQWV9GT1JNQVRfU0laRV9UICJkICIgXAogICAgICAgICAgICAiKCUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLCBcCi0gICAgICAgICAgIFNGWSh0eXBlKSwgYWxsb2NfcG9zLCBzaXplb2YodHlwZSkpKTsgXAorICAgICAgICAgICBQeV9TVFJJTkdJRlkodHlwZSksIGFsbG9jX3Bvcywgc2l6ZW9mKHR5cGUpKSk7IFwKICAgICBpZiAoc2l6ZW9mKHR5cGUpID4gc3RhdGUtPmRhdGFfc3RhY2tfc2l6ZSAtIGFsbG9jX3BvcykgeyBcCiAgICAgICAgIGludCBqID0gZGF0YV9zdGFja19ncm93KHN0YXRlLCBzaXplb2YodHlwZSkpOyBcCiAgICAgICAgIGlmIChqIDwgMCkgcmV0dXJuIGo7IFwKQEAgLTM4Nyw3ICszODUsNyBAQAogCiAjZGVmaW5lIERBVEFfU1RBQ0tfTE9PS1VQX0FUKHN0YXRlLCB0eXBlLCBwdHIsIHBvcykgXAogZG8geyBcCi0gICAgVFJBQ0UoKCJsb29raW5nIHVwICVzIGF0ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsIFNGWSh0eXBlKSwgcG9zKSk7IFwKKyAgICBUUkFDRSgoImxvb2tpbmcgdXAgJXMgYXQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwgUHlfU1RSSU5HSUZZKHR5cGUpLCBwb3MpKTsgXAogICAgIHB0ciA9ICh0eXBlKikoc3RhdGUtPmRhdGFfc3RhY2srcG9zKTsgXAogfSB3aGlsZSAoMCkKIApAQCAtNTMxLDcgKzUyOSw3IEBACiAgICAgaWYgKGN0eC0+cGF0dGVyblswXSA9PSBTUkVfT1BfSU5GTykgewogICAgICAgICAvKiBvcHRpbWl6YXRpb24gaW5mbyBibG9jayAqLwogICAgICAgICAvKiA8SU5GTz4gPDE9c2tpcD4gPDI9ZmxhZ3M+IDwzPW1pbj4gLi4uICovCi0gICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKFB5X3VpbnRwdHJfdCkoZW5kIC0gY3R4LT5wdHIpIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CisgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKHVpbnRwdHJfdCkoZW5kIC0gY3R4LT5wdHIpIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CiAgICAgICAgICAgICBUUkFDRSgoInJlamVjdCAoZ290ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgY2hhcnMsICIKICAgICAgICAgICAgICAgICAgICAibmVlZCAlIiBQWV9GT1JNQVRfU0laRV9UICJkKVxuIiwKICAgICAgICAgICAgICAgICAgICBlbmQgLSBjdHgtPnB0ciwgKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblszXSkpOwpAQCAtMTI1Niw3ICsxMjU0LDMyIEBACiAgICAgICAgICAgIHByZWZpeCwgcHJlZml4X2xlbiwgcHJlZml4X3NraXApKTsKICAgICBUUkFDRSgoImNoYXJzZXQgPSAlcFxuIiwgY2hhcnNldCkpOwogCi0jaWYgZGVmaW5lZChVU0VfRkFTVF9TRUFSQ0gpCisgICAgaWYgKHByZWZpeF9sZW4gPT0gMSkgeworICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgU1JFX0NIQVIgYyA9IChTUkVfQ0hBUikgcHJlZml4WzBdOworI2lmIFNJWkVPRl9TUkVfQ0hBUiA8IDQKKyAgICAgICAgaWYgKChTUkVfQ09ERSkgYyAhPSBwcmVmaXhbMF0pCisgICAgICAgICAgICByZXR1cm4gMDsgLyogbGl0ZXJhbCBjYW4ndCBtYXRjaDogZG9lc24ndCBmaXQgaW4gY2hhciB3aWR0aCAqLworI2VuZGlmCisgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgICAgIHdoaWxlICgqcHRyICE9IGMpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytwdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHIgKyBwcmVmaXhfc2tpcDsKKyAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KKyAgICAgICAgICAgIHN0YXR1cyA9IFNSRShtYXRjaCkoc3RhdGUsIHBhdHRlcm4gKyAyKnByZWZpeF9za2lwLCAwKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgKytwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKHByZWZpeF9sZW4gPiAxKSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBrbm93biBwcmVmaXguICB1c2UgdGhlIG92ZXJsYXAKICAgICAgICAgICAgdGFibGUgdG8gc2tpcCBmb3J3YXJkIGFzIGZhc3QgYXMgd2UgcG9zc2libHkgY2FuICovCkBAIC0xMzA1LDMyICsxMzI4LDggQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYKIAotICAgIGlmIChwYXR0ZXJuWzBdID09IFNSRV9PUF9MSVRFUkFMKSB7Ci0gICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3Rlci4gIHRoaXMgaXMgdXNlZAotICAgICAgICAgICBmb3Igc2hvcnQgcHJlZml4ZXMsIGFuZCBpZiBmYXN0IHNlYXJjaCBpcyBkaXNhYmxlZCAqLwotICAgICAgICBTUkVfQ0hBUiBjID0gKFNSRV9DSEFSKSBwYXR0ZXJuWzFdOwotI2lmIFNJWkVPRl9TUkVfQ0hBUiA8IDQKLSAgICAgICAgaWYgKChTUkVfQ09ERSkgYyAhPSBwYXR0ZXJuWzFdKQotICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGxpdGVyYWwgY2FuJ3QgbWF0Y2g6IGRvZXNuJ3QgZml0IGluIGNoYXIgd2lkdGggKi8KLSNlbmRpZgotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgICAgICB3aGlsZSAoKnB0ciAhPSBjKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCsrcHRyID49IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gKytwdHI7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQotICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCi0gICAgICAgICAgICBzdGF0dXMgPSBTUkUobWF0Y2gpKHN0YXRlLCBwYXR0ZXJuICsgMiwgMCk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGNoYXJzZXQpIHsKKyAgICBpZiAoY2hhcnNldCkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KICAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCmluZGV4IGY4NGNjNzguLjM0YTZmYzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKQEAgLTc5LDYgKzc5LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfRlJFRV9DTEFTUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0lNUE9SVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0JPVU5EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfQU5OT1QpOwogCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfRlVOQ1RJT04iLCBGdW5jdGlvbkJsb2NrKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9DTEFTUyIsIENsYXNzQmxvY2spOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKaW5kZXggZjJkNDRmZi4uN2FmY2E1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCkBAIC0xMzksNyArMTM5LDcgQEAKICAgICAgKiBJZiBOVUxMLCBqdXN0IGxldCBvcGVubG9nIGZpZ3VyZSBpdCBvdXQgKHByb2JhYmx5IHVzaW5nIEMgYXJndlswXSkuCiAgICAgICovCiAgICAgaWYgKFNfaWRlbnRfbykgewotICAgICAgICBpZGVudCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoU19pZGVudF9vKTsKKyAgICAgICAgaWRlbnQgPSBQeVVuaWNvZGVfQXNVVEY4KFNfaWRlbnRfbyk7CiAgICAgICAgIGlmIChpZGVudCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBtZXNzYWdlID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtZXNzYWdlX29iamVjdCk7CisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Bc1VURjgobWVzc2FnZV9vYmplY3QpOwogICAgIGlmIChtZXNzYWdlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQyY2FhY2QuLmViZDQ0YWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xNjAsNyArMTYwLDkgQEAKICJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19zZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MSw3ICsxOTMsOSBAQAogImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAogXG5cCiBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX1NFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19nZXRyZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjE1LDcgKzIxOSw3IEBACiAiY2xvY2tfZ2V0cmVzKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKLSNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRSRVMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCkBAIC0yNTAsMTAgKzI1NCw4IEBACiAgICAgeyJ0bV93ZGF5IiwgImRheSBvZiB3ZWVrLCByYW5nZSBbMCwgNl0sIE1vbmRheSBpcyAwIn0sCiAgICAgeyJ0bV95ZGF5IiwgImRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XSJ9LAogICAgIHsidG1faXNkc3QiLCAiMSBpZiBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QsIDAgaWYgbm90LCBhbmQgLTEgaWYgdW5rbm93biJ9LAotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7InRtX3pvbmUiLCAiYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUifSwKICAgICB7InRtX2dtdG9mZiIsICJvZmZzZXQgZnJvbSBVVEMgaW4gc2Vjb25kcyJ9LAotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7MH0KIH07CiAKQEAgLTI3NSw3ICsyNzcsMTEgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotdG10b3R1cGxlKHN0cnVjdCB0bSAqcCkKK3RtdG90dXBsZShzdHJ1Y3QgdG0gKnAKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgICAgICAsIGNvbnN0IGNoYXIgKnpvbmUsIGludCBnbXRvZmYKKyNlbmRpZgorKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjk2LDYgKzMwMiwxMCBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKICAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLT50bV96b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOwogICAgIFNFVCgxMCwgcC0+dG1fZ210b2ZmKTsKKyNlbHNlCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAorICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CisgICAgU0VUKDEwLCBnbXRvZmYpOwogI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICN1bmRlZiBTRVQKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMzExLDcgKzMyMSw3IEBACiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQorcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKIHsKICAgICBQeU9iamVjdCAqb3QgPSBOVUxMOwogICAgIHRpbWVfdCB3aGVudDsKQEAgLTMzMywyNCArMzQzLDM0IEBACiB0aW1lX2dtdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgdGltZV90IHdoZW47Ci0gICAgc3RydWN0IHRtIGJ1ZiwgKmxvY2FsOworICAgIHN0cnVjdCB0bSBidWY7CiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZXJybm8gPSAwOwotICAgIGxvY2FsID0gZ210aW1lKCZ3aGVuKTsKLSAgICBpZiAobG9jYWwgPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQotICAgIGJ1ZiA9ICpsb2NhbDsKKyAgICBpZiAoX1B5VGltZV9nbXRpbWUod2hlbiwgJmJ1ZikgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1ZiwgIlVUQyIsIDApOworI2VuZGlmCiB9CiAKKyNpZm5kZWYgSEFWRV9USU1FR00KK3N0YXRpYyB0aW1lX3QKK3RpbWVnbShzdHJ1Y3QgdG0gKnApCit7CisgICAgLyogWFhYOiB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHRtX3llYXIgPCAxOTcwLgorICAgICAgIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRpbWVnbSBkbyBub3Qgc3VwcG9ydAorICAgICAgIG5lZ2F0aXZlIHRpbWVzdGFtcHMgYW55d2F5cy4gKi8KKyAgICByZXR1cm4gcC0+dG1fc2VjICsgcC0+dG1fbWluKjYwICsgcC0+dG1faG91ciozNjAwICsgcC0+dG1feWRheSo4NjQwMCArCisgICAgICAgIChwLT50bV95ZWFyLTcwKSozMTUzNjAwMCArICgocC0+dG1feWVhci02OSkvNCkqODY0MDAgLQorICAgICAgICAoKHAtPnRtX3llYXItMSkvMTAwKSo4NjQwMCArICgocC0+dG1feWVhcisyOTkpLzQwMCkqODY0MDA7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCiAiZ210aW1lKFtzZWNvbmRzXSkgLT4gKHRtX3llYXIsIHRtX21vbiwgdG1fbWRheSwgdG1faG91ciwgdG1fbWluLFxuXAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXApAQCAtMzYxLDI2ICszODEsNiBAQAogSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhc1xuXAogYXR0cmlidXRlcyBvbmx5LiIpOwogCi1zdGF0aWMgaW50Ci1weWxvY2FsdGltZSh0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKLXsKLSAgICBzdHJ1Y3QgdG0gKmxvY2FsOwotCi0gICAgYXNzZXJ0ICh0aW1lcCAhPSBOVUxMKTsKLSAgICBsb2NhbCA9IGxvY2FsdGltZSh0aW1lcCk7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpyZXN1bHQgPSAqbG9jYWw7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2xvY2FsdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0zODksOSArMzg5LDIwIEBACiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmd2hlbiwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHdoZW4sICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICB7CisgICAgICAgIHN0cnVjdCB0bSBsb2NhbCA9IGJ1ZjsKKyAgICAgICAgY2hhciB6b25lWzEwMF07CisgICAgICAgIGludCBnbXRvZmY7CisgICAgICAgIHN0cmZ0aW1lKHpvbmUsIHNpemVvZih6b25lKSwgIiVaIiwgJmJ1Zik7CisgICAgICAgIGdtdG9mZiA9IHRpbWVnbSgmYnVmKSAtIHdoZW47CisgICAgICAgIHJldHVybiB0bXRvdHVwbGUoJmxvY2FsLCB6b25lLCBnbXRvZmYpOworICAgIH0KKyNlbmRpZgogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTQzMCw3ICs0NDEsNyBAQAogICAgIGlmIChQeV9UWVBFKGFyZ3MpID09ICZTdHJ1Y3RUaW1lVHlwZSkgewogICAgICAgICBQeU9iamVjdCAqaXRlbTsKICAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgOSk7Ci0gICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKKyAgICAgICAgcC0+dG1fem9uZSA9IGl0ZW0gPT0gUHlfTm9uZSA/IE5VTEwgOiBQeVVuaWNvZGVfQXNVVEY4KGl0ZW0pOwogICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxMCk7CiAgICAgICAgIHAtPnRtX2dtdG9mZiA9IGl0ZW0gPT0gUHlfTm9uZSA/IDAgOiBQeUxvbmdfQXNMb25nKGl0ZW0pOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTU3Myw3ICs1ODQsNyBAQAogCiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCkBAIC03MzIsMTAgKzc0MywxMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKQEAgLTc1OCw3ICs3NjksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgfSBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKQEAgLTc4MCw3ICs3OTEsNyBAQAogICAgIHN0cnVjdCB0bSBidWY7CiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Y3RpbWUiLCAmdHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBfYXNjdGltZSgmYnVmKTsKIH0KQEAgLTEwMzQsNiArMTA0NSw3IEBACiAgICAgfQogI2VuZGlmCiAKKyAgICAvKiBDdXJyZW50bHksIFB5dGhvbiAzIHJlcXVpcmVzIGNsb2NrKCkgdG8gYnVpbGQ6IHNlZSBpc3N1ZSAjMjI2MjQgKi8KICAgICByZXR1cm4gZmxvYXRjbG9jayhpbmZvKTsKICNlbmRpZgogfQpAQCAtMTE0NSw2ICsxMTU3LDI3IEBACiBHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKIAogc3RhdGljIHZvaWQKK2dldF96b25lKGNoYXIgKnpvbmUsIGludCBuLCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHN0cm5jcHkoem9uZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgbik7CisjZWxzZQorICAgIHR6c2V0KCk7CisgICAgc3RyZnRpbWUoem9uZSwgbiwgIiVaIiwgcCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAorZ2V0X2dtdG9mZih0aW1lX3QgdCwgc3RydWN0IHRtICpwKQoreworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICByZXR1cm4gcC0+dG1fZ210b2ZmOworI2Vsc2UKKyAgICByZXR1cm4gdGltZWdtKHApIC0gdDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAogUHlJbml0X3RpbWV6b25lKFB5T2JqZWN0ICptKSB7CiAgICAgLyogVGhpcyBjb2RlIG1vdmVkIGZyb20gUHlJbml0X3RpbWUgd2hvbGVzYWxlIHRvIGFsbG93IGNhbGxpbmcgaXQgZnJvbQogICAgIHRpbWVfdHpzZXQuIEluIHRoZSBmdXR1cmUsIHNvbWUgcGFydHMgb2YgaXQgY2FuIGJlIG1vdmVkIGJhY2sKQEAgLTExNzYsMjIgKzEyMDksMjEgQEAKICAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMV0sICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR6bmFtZSIsIFB5X0J1aWxkVmFsdWUoIihOTikiLCBvdHowLCBvdHoxKSk7CiAjZWxzZSAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7CiAjZGVmaW5lIFlFQVIgKCh0aW1lX3QpKCgzNjUgKiAyNCArIDYpICogMzYwMCkpCiAgICAgICAgIHRpbWVfdCB0OwotICAgICAgICBzdHJ1Y3QgdG0gKnA7CisgICAgICAgIHN0cnVjdCB0bSBwOwogICAgICAgICBsb25nIGphbnpvbmUsIGp1bHl6b25lOwogICAgICAgICBjaGFyIGphbm5hbWVbMTBdLCBqdWx5bmFtZVsxMF07CiAgICAgICAgIHQgPSAodGltZSgodGltZV90ICopMCkgLyBZRUFSKSAqIFlFQVI7Ci0gICAgICAgIHAgPSBsb2NhbHRpbWUoJnQpOwotICAgICAgICBqYW56b25lID0gLXAtPnRtX2dtdG9mZjsKLSAgICAgICAgc3RybmNweShqYW5uYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgX1B5VGltZV9sb2NhbHRpbWUodCwgJnApOworICAgICAgICBnZXRfem9uZShqYW5uYW1lLCA5LCAmcCk7CisgICAgICAgIGphbnpvbmUgPSAtZ2V0X2dtdG9mZih0LCAmcCk7CiAgICAgICAgIGphbm5hbWVbOV0gPSAnXDAnOwogICAgICAgICB0ICs9IFlFQVIvMjsKLSAgICAgICAgcCA9IGxvY2FsdGltZSgmdCk7Ci0gICAgICAgIGp1bHl6b25lID0gLXAtPnRtX2dtdG9mZjsKLSAgICAgICAgc3RybmNweShqdWx5bmFtZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgOSk7CisgICAgICAgIF9QeVRpbWVfbG9jYWx0aW1lKHQsICZwKTsKKyAgICAgICAgZ2V0X3pvbmUoanVseW5hbWUsIDksICZwKTsKKyAgICAgICAganVseXpvbmUgPSAtZ2V0X2dtdG9mZih0LCAmcCk7CiAgICAgICAgIGp1bHluYW1lWzldID0gJ1wwJzsKIAogICAgICAgICBpZiggamFuem9uZSA8IGp1bHl6b25lICkgewpAQCAtMTIxMyw4ICsxMjQ1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphbm5hbWUsIGp1bHluYW1lKSk7CiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICNpZmRlZiBfX0NZR1dJTl9fCiAgICAgdHpzZXQoKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAidGltZXpvbmUiLCBfdGltZXpvbmUpOwpAQCAtMTIyNCwyNSArMTI1NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIih6eikiLCBfdHpuYW1lWzBdLCBfdHpuYW1lWzFdKSk7CiAjZW5kaWYgLyogX19DWUdXSU5fXyAqLwogI2VuZGlmIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCi0KLSNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7Ci0jaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX0hJR0hSRVMKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogfQogCiAKQEAgLTEyNTMsNyArMTI2NCwxMSBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAgICAgeyJjbG9ja19nZXR0aW1lIiwgICB0aW1lX2Nsb2NrX2dldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0dGltZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiAgICAgeyJjbG9ja19zZXR0aW1lIiwgICB0aW1lX2Nsb2NrX3NldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfc2V0dGltZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9DTE9DS19HRVRSRVMKICAgICB7ImNsb2NrX2dldHJlcyIsICAgIHRpbWVfY2xvY2tfZ2V0cmVzLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHJlc19kb2N9LAogI2VuZGlmCiAgICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX08sIHNsZWVwX2RvY30sCkBAIC0xMzQ5LDE3ICsxMzY0LDMyIEBACiAgICAgLyogU2V0LCBvciByZXNldCwgbW9kdWxlIHZhcmlhYmxlcyBsaWtlIHRpbWUudGltZXpvbmUgKi8KICAgICBQeUluaXRfdGltZXpvbmUobSk7CiAKKyNpZmRlZiBDTE9DS19SRUFMVElNRQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7CisjZW5kaWYKKwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZTdHJ1Y3RUaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfdGltZV90eXBlX2Rlc2MpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoJlN0cnVjdFRpbWVUeXBlKTsKLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCAxMSk7Ci0jZWxzZQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgOSk7Ci0jZW5kaWYKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF90aW1lIiwgKFB5T2JqZWN0KikgJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggMWY5YmE3OC4uOWU3MWUwMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtNDUsNiArNDUsNyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2F0ZWdvcnlfY2hhbmdlZDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRlY2ltYWxfY2hhbmdlZDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIG1pcnJvcmVkX2NoYW5nZWQ7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQ7CiAgICAgY29uc3QgZG91YmxlIG51bWVyaWNfY2hhbmdlZDsKIH0gY2hhbmdlX3JlY29yZDsKIApAQCAtMzc1LDYgKzM3Niw4IEBACiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApCiAgICAgICAgICAgICBpbmRleCA9IDA7IC8qIHVuYXNzaWduZWQgKi8KKyAgICAgICAgZWxzZSBpZiAob2xkLT5lYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQgIT0gMHhGRikKKyAgICAgICAgICAgIGluZGV4ID0gb2xkLT5lYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQ7CiAgICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0Vhc3RBc2lhbldpZHRoTmFtZXNbaW5kZXhdKTsKIH0KQEAgLTg4NCw3ICs4ODcsNyBAQAogICAgIHJldHVybiBoOwogfQogCi1zdGF0aWMgY2hhciAqaGFuZ3VsX3N5bGxhYmxlc1tdWzNdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYW5ndWxfc3lsbGFibGVzW11bM10gPSB7CiAgICAgeyAiRyIsICAiQSIsICAgIiIgICB9LAogICAgIHsgIkdHIiwgIkFFIiwgICJHIiAgfSwKICAgICB7ICJOIiwgICJZQSIsICAiR0ciIH0sCkBAIC0xMDU3LDcgKzEwNjAsNyBAQAogICAgIGludCBpLCBsZW4xOwogICAgICpsZW4gPSAtMTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOworICAgICAgICBjb25zdCBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOwogICAgICAgICBsZW4xID0gUHlfU0FGRV9ET1dOQ0FTVChzdHJsZW4ocyksIHNpemVfdCwgaW50KTsKICAgICAgICAgaWYgKGxlbjEgPD0gKmxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCmluZGV4IDg5ZDg3NjguLmVhNDBjMmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKQEAgLTEsNiArMSw2IEBACiAvKiB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSAzLjIgKi8KIAotI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjguMC4wIgorI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjkuMC4wIgogLyogYSBsaXN0IG9mIHVuaXF1ZSBkYXRhYmFzZSByZWNvcmRzICovCiBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkIF9QeVVuaWNvZGVfRGF0YWJhc2VfUmVjb3Jkc1tdID0gewogICAgIHswLCAwLCAwLCAwLCAwLCAwfSwKQEAgLTI0MiwxMiArMjQyLDEzIEBACiAgICAgezI3LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezI3LCAwLCAxOSwgMSwgNCwgMTM2fSwKICAgICB7MjcsIDAsIDE5LCAxLCA0LCAxMH0sCisgICAgezMwLCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezIyLCAwLCAxOSwgMSwgMiwgMTcwfSwKICAgICB7MjMsIDAsIDE5LCAxLCAyLCAxNzB9LAogICAgIHszMCwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7OSwgMCwgMTksIDAsIDQsIDB9LAorICAgIHsyNywgMCwgMTksIDAsIDIsIDB9LAogICAgIHsyNywgMCwgMTksIDEsIDUsIDE3MH0sCi0gICAgezMwLCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezMwLCAwLCAxOSwgMCwgMiwgMTM2fSwKICAgICB7MTAsIDAsIDE4LCAwLCAwLCAxMzZ9LAogICAgIHsyNiwgMCwgMTksIDAsIDIsIDB9LApAQCAtMzI5LDYgKzMzMCw3IEBACiAgICAgezEsIDAsIDQsIDAsIDUsIDB9LAogICAgIHsyLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7OSwgMCwgMTIsIDAsIDUsIDB9LAorICAgIHs0LCA5LCAxLCAwLCA1LCAwfSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDE3MH0sCiAgICAgezUsIDIxNiwgMSwgMCwgNSwgMH0sCiAgICAgezUsIDIyNiwgMSwgMCwgNSwgMH0sCkBAIC0zMzYsNiArMzM4LDcgQEAKICAgICB7NywgMCwgOSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKKyAgICB7MjksIDAsIDE5LCAwLCAyLCAwfSwKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCkBAIC03MzAsMzkgKzczMywzOSBAQAogICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKICAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDEzOCwgNDEsIDQxLCAxNDUsIDEzOCwgMTQ2LCAxNDcsIDE0OCwgCiAgICAgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxMzgsIDEzOCwgMTU2LCAxMzgsIDEzOCwgMTM4LCAxNTcsIAotICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTM4LCAxNjQsIDEzOCwgMTY1LCAxNjYsIDE2NywgMTY4LCAKLSAgICAxMzgsIDEzOCwgMTY5LCAxMzgsIDEzOCwgMTM4LCAxNzAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3MSwgMTcyLCA0MSwgMTczLCAxMzgsIDEzOCwgCisgICAgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTM4LCAxNjQsIDE2NSwgMTM4LCAxNjYsIDE2NywgMTY4LCAxNjksIAorICAgIDEzOCwgMTM4LCAxNzAsIDEzOCwgMTM4LCAxMzgsIDE3MSwgMTM4LCAxMzgsIDE3MiwgMTczLCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc0LCAxNzUsIDQxLCAxNzYsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc0LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc3LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxODAsIDE4MSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc5LCAxODAsIDE4MSwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODMsIDE4NCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE4NSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDE4NiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4OCwgMTg5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDE4MywgMTg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE4NSwgCi0gICAgMTg2LCAxODcsIDE4OCwgMTM4LCAxODksIDEzOCwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAxOTgsIDE5OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDIwMCwgMjAxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDIwMiwgMjAzLCAxMzgsIDEzOCwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMjA5LCAyMTAsIDIwOSwgMjA5LCAKLSAgICAyMTEsIDIxMiwgMjA5LCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTkwLCAKKyAgICAxOTEsIDE5MiwgMTkzLCAxMzgsIDE5NCwgMTM4LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIwMywgMjA0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwNSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjA2LCAyMDcsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjA5LCAyMTAsIDEzOCwgMTM4LCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMTM4LCAyMTYsIDIxNywgMjE4LCAyMTksIAorICAgIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKQEAgLTc4NywxOSArNzkwLDE5IEBACiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMzAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjEsIDEwMSwgMjIyLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjMxLCAxMDEsIDIzMiwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDIyMywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTAxLCAyMzMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjM0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKQEAgLTEyMDIsNyArMTIwNSw3IEBACiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMjI1LCAxMzgsIDIyNiwgMjI3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIzNSwgMTM4LCAyMzYsIDIzNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKQEAgLTEyNzUsNyArMTI3OCw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAyMjgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjM4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKQEAgLTEzMTIsNyArMTMxNSw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAyMjgsIAorICAgIDEyMSwgMjM4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTE0NDQsMTcwICsxNDQ3LDE3MSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIAotICAgIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAKLSAgICAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIAotICAgIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAKLSAgICAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIAotICAgIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCi0gICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCi0gICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDAsIAotICAgIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAKLSAgICAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTA4LCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIAorICAgIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgCi0gICAgMTQ3LCAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgCi0gICAgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIAotICAgIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgCi0gICAgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCAKLSAgICA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCAKLSAgICA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAKLSAgICAxNjYsIDE2NiwgMTM1LCAxMzksIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTQ5LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgCi0gICAgMTQyLCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDEzOSwgMTM5LCAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAKKyAgICAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIAorICAgIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgODAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDE0NiwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTU1LCAwLCAwLCAwLCAKKyAgICAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAxNDcsIDEzOSwgMTQ3LCAxNDcsIAorICAgIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIAorICAgIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE2NSwgCisgICAgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTM1LCAxMzksIAorICAgIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgCisgICAgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MSwgODEsIAorICAgIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgMCwgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKKyAgICA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE2MjcsNDUgKzE2MzEsNDUgQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE0MiwgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgCisgICAgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA4OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCA4NywgODEsIDg2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNzE0LDI3ICsxNzE4LDI3IEBACiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgCi0gICAgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzYsIDE3NiwgCi0gICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKLSAgICA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIAorICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCAKKyAgICA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKICAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgCi0gICAgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCAKKyAgICA4MSwgODEsIDE3NywgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA4MSwgMTgwLCA4NiwgODEsIDg2LCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCkBAIC0xNzQzLDMzMiArMTc0NywzMzMgQEAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAKLSAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKLSAgICAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDE4MywgNTgsIDE4MiwgNTgsIDU4LCA3NiwgNDMsIDQzLCAKLSAgICA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MiwgMCwgMCwgCi0gICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MiwgNDMsIDQzLCA0MywgNDMsIAotICAgIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAKLSAgICAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAotICAgIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAKLSAgICAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAKLSAgICAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAKLSAgICAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAKLSAgICAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIAotICAgIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDIxNCwgCi0gICAgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjE0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAwLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgMCwgMCwgMCwgODUsIDg1LCA4NSwgODUsIAotICAgIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIDg1LCAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgCi0gICAgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgODEsIDgxLCA4MSwgODEsIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgCi0gICAgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzYsIDE3NiwgODEsIDg2LCA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgCi0gICAgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyLCAyMjIsIDQ5LCAKLSAgICAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAKLSAgICAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAyNiwgMjIyLCAyMjMsIDIyMywgMjYsIDQ5LCAKLSAgICAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAyMjUsIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgCi0gICAgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIDQ5LCAyMjYsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMjI3LCAyMjcsIDIyNywgCi0gICAgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCAKLSAgICA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMjYsIDI2LCAwLCAwLCAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIAotICAgIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgCi0gICAgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIAotICAgIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgCi0gICAgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIAotICAgIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCi0gICAgMjQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIAorICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAorICAgIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgCisgICAgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAorICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgCisgICAgMTgyLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIAorICAgIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgCisgICAgNDMsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAKKyAgICAxODIsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIAorICAgIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAKKyAgICAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIAorICAgIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAKKyAgICAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTg3LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAyMTQsIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIAorICAgIDIxNywgMjE4LCAyMTksIDIxNCwgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgCisgICAgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIAorICAgIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIAorICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgCisgICAgODEsIDE3NiwgMTc2LCA4NiwgODYsIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDIyMiwgMjIyLCA0OSwgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0NiwgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgCisgICAgMjIzLCAyMjMsIDI2LCA0OSwgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCAKKyAgICA0NCwgNDksIDM1LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNDksIDM1LCAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgCisgICAgMzcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgCisgICAgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAKKyAgICAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIAorICAgIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAKKyAgICAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgCisgICAgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAKKyAgICAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgCisgICAgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgCisgICAgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAKKyAgICAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgCisgICAgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIAorICAgIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI0MCwgMjQxLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCiAgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCi0gICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjI3LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAotICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMCwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDIyNywgCisgICAgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIAorICAgIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgCi0gICAgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI0NCwgMjQ0LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAorICAgIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDIzOSwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMjM5LCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgCisgICAgMzAsIDIzOSwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAxNTMsIDE1MywgCisgICAgMTYzLCAxNjQsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMTUzLCAxNTMsIAogICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzMiwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMTYzLCAKLSAgICAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIyNiwgMjE2LCAKLSAgICAyMTYsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIAorICAgIDIyNiwgMjE2LCAyMTYsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjQzLCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyNDUsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgCisgICAgMTM4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDgzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTEsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIAotICAgIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAKLSAgICAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCi0gICAgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxOTUsIDAsIDAsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgCisgICAgMTM4LCAxMzgsIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDg0LCAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxOTUsIDEzOCwgCisgICAgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMjQ2LCAyNDcsIDI0NywgMjQ3LCAyNDQsIDI0OCwgMTcwLCAyNDksIDI1MCwgMjUxLCAKLSAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjQ0LCAyNDQsIDI1MCwgMjUxLCAyNTAsIDI1MSwgCi0gICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTQsIDI0NCwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIAotICAgIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDI1OSwgMjUyLCAyNDgsIDI0OCwgMjQ4LCAKLSAgICAyNDgsIDI0OCwgMjQ1LCAyNDQsIDI2MCwgMjYwLCAyNjAsIDI0OCwgMTcwLCAyNDcsIDI0NCwgMjYsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAwLCAKLSAgICAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI0OCwgMjY0LCAyNjUsIDI1MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjQ3LCAyNDgsIDI0OCwgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDI0NiwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAyNDcsIDI0OCwgMjQ4LCAyNDgsIDIzOSwgMjQ5LCAxNzAsIAorICAgIDI1MCwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyMzksIDIzOSwgMjUxLCAKKyAgICAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDI1NSwgMjM5LCAyNTAsIDI1MCwgCisgICAgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTYsIDI1NywgMjU4LCAyNTksIDI2MCwgMjYwLCAyNTMsIAorICAgIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDYsIDIzOSwgMjYxLCAyNjEsIDI2MSwgMjQ5LCAxNzAsIDI0OCwgMjM5LCAyNiwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIAorICAgIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIAorICAgIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgCisgICAgMTcwLCAxNzAsIDAsIDAsIDI2MywgMjYzLCAyNjQsIDI2NCwgMjQ5LCAyNjUsIDI2NiwgMjUzLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgCisgICAgMjYyLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNDgsIDI0OSwgMjQ5LCAyNjUsIDI2NiwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMCwgMjY2LCAyNjYsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDAsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDAsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIAotICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNjYsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjQ1LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI0NiwgMjQ2LCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNDYsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI0NiwgMjQ2LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMjA4MSwyMCArMjA4NiwyMCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDksIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMjEwMywxMjQgKzIxMDgsMTE1IEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAotICAgIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIAorICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDUzLCAxMzgsIDEzOCwgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA1MSwgODEsIDgxLCA0OCwgNDgsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA1MSwgCisgICAgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1NCwgNTQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI3MSwgMjcxLCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNTIsIDI3MiwgMjcyLCA0NCwgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgCisgICAgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIAorICAgIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgCisgICAgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIAorICAgIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCA0OCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIAorICAgIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAyNzIsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKICAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDQ4LCA4MywgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIAotICAgIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIAotICAgIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCi0gICAgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCi0gICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCkBAIC0yMjI5LDcgKzIyMjUsOCBAQAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3NCwgMjc0LCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIApAQCAtMjIzOCwzOCArMjIzNSw0NyBAQAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMTcwLCAxNzAsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMTcwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAxNzAsIDE3MCwgMTcwLCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgMCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDE3MCwgMTcwLCAyNzUsIDE3MCwgMjc1LCAxNzAsIDE3MCwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAxNzAsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMTcwLCAKKyAgICAyNzUsIDI3NSwgMTcwLCAxNzAsIDE3MCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzYsIDI3NSwgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIAotICAgIDI3NywgMjc3LCAyNzcsIDI3NywgMjE1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKLSAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDAsIDI3NSwgMjc1LCAwLCAKLSAgICAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc3LCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjc2LCAyNzcsIDI3NiwgCisgICAgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjE1LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAwLCAyNzYsIDAsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAyNzYsIDI3NiwgMjc4LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc4LCAyNzgsIAotICAgIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIAorICAgIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMjg1LDI3ICsyMjkxLDI3IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OSwgMTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI4MCwgMTk1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMjgwLCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgyLCAyODMsIDI4MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgCi0gICAgODEsIDI4MSwgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAKLSAgICAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgCi0gICAgMjgxLCAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIAotICAgIDI4NywgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAKLSAgICAyODksIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjgxLCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODIsIAorICAgIDI4MiwgMjgzLCAyODQsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDI4MiwgMjg1LCAyODUsIDI4NiwgMjg2LCAyODMsIDI4NCwgMjgzLCAyODQsIAorICAgIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI0OCwgMjQ4LCAKKyAgICAyODMsIDI4NCwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODYsIDI4NiwgMjg2LCAyODcsIDI4MiwgMjg3LCAwLCAyODIsIDI4NywgCisgICAgMjgyLCAyODIsIDI4NSwgMjg4LCAyODksIDI4OCwgMjg5LCAyODgsIDI4OSwgMjkwLCAyODIsIDI4MiwgMjkxLCAyOTIsIAorICAgIDI5MywgMjkzLCAyOTQsIDAsIDI4MiwgMjk1LCAyOTAsIDI4MiwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMzE0LDE2NSArMjMyMCwxNjUgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk1LCAyOTUsIDI5NiwgMjk3LCAyOTYsIDI5NSwgMjk1LCAKLSAgICAyOTgsIDI5OSwgMjk1LCAzMDAsIDMwMSwgMzAyLCAzMDEsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDEsIDI5NSwgMzA0LCAzMDUsIDMwNCwgMjk1LCAyOTUsIDMwNiwgMzA2LCAzMDYsIAotICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAyOTgsIDI5NSwgMjk5LCAzMDcsIDMwOCwgCi0gICAgMzA3LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMjk4LCAKLSAgICAzMDUsIDI5OSwgMzA1LCAyOTgsIDI5OSwgMzEwLCAzMTEsIDMxMiwgMzEwLCAzMTAsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxNCwgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAwLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAKLSAgICAwLCAyOTcsIDI5NywgMzA1LCAzMDcsIDMxNSwgMjk3LCAyOTcsIDAsIDMxNiwgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTYsIAotICAgIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAzMTgsIDMxOCwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NiwgMjk2LCAKKyAgICAyOTcsIDI5OCwgMjk3LCAyOTYsIDI5NiwgMjk5LCAzMDAsIDI5NiwgMzAxLCAzMDIsIDMwMywgMzAyLCAzMDIsIDMwNCwgCisgICAgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzAyLCAyOTYsIDMwNSwgMzA2LCAzMDUsIAorICAgIDI5NiwgMjk2LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKKyAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCisgICAgMjk5LCAyOTYsIDMwMCwgMzA4LCAzMDksIDMwOCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIAorICAgIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAKKyAgICAzMTAsIDMxMCwgMzEwLCAzMTAsIDI5OSwgMzA2LCAzMDAsIDMwNiwgMjk5LCAzMDAsIDMxMSwgMzEyLCAzMTMsIDMxMSwgCisgICAgMzExLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNSwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE1LCAzMTUsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgCisgICAgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgCisgICAgMCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMjk4LCAyOTgsIDMwNiwgMzA4LCAzMTYsIDI5OCwgMjk4LCAwLCAzMTcsIAorICAgIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE3LCAzMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOSwgMzE5LCAKKyAgICAzMTksIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgCisgICAgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMTUzLCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgMzIwLCAzMjAsIDMyMCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjAsIAogICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIAorICAgIDI2LCA4MCwgODAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODYsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAxMDcsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMywgMzIzLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIDEzNSwgCi0gICAgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgCisgICAgMTM1LCA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIDAsIDAsIAotICAgIDAsIDE0MiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIAorICAgIDAsIDAsIDAsIDE0MiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMzIxLCAzMjEsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMzIyLCAzMjIsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjMsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKQEAgLTI0ODMsMjEgKzI0ODksMjEgQEAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCiAgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAogICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKLSAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAogICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKLSAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMTM5LCAxMzUsIDEzOSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAorICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAwLCAxMzksIDEzNSwgMTM5LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCkBAIC0yNTMwLDE1ICsyNTM2LDE1IEBACiAgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDE3NSwgMTQ1LCAxMzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0yNTUwLDYgKzI1NTYsMTMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTQyLCAxMzUsIDEzNSwgMTM5LCAxNDUsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgODMsIDAsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE0OSwgMTQ3LCAxNDcsIDE0NiwgCiAgICAgMTQ3LCAxMzUsIDEzNSwgMTM5LCAxNDIsIDE0NSwgNDgsIDQ4LCA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0yNTY2LDIzMCArMjU3OSwyNjggQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTQyLCAxMzUsIDgzLCA4MywgCiAgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAKLSAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgCi0gICAgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA1MywgNTMsIDUzLCA1MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDMyNywgNDgsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNywgMzI3LCAxNzYsIDE3NiwgMTc2LCA4MCwgODAsIDgwLCAzMjgsIDMyNywgMzI3LCAzMjcsIDMyNywgMzI3LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgCi0gICAgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgCisgICAgMTc2LCAxNzYsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgCisgICAgODAsIDgwLCA4MCwgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOSwgMzI5LCAxNzYsIDE3NiwgMTc2LCA4MCwgODAsIDgwLCAKKyAgICAzMzAsIDMyOSwgMzI5LCAzMjksIDMyOSwgMzI5LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIAotICAgIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCAwLCAwLCAwLCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgCisgICAgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDAsIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDEzNSwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgMCwgODEsIDgxLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIApAQCAtMjgwMywxMSArMjg1NCwxOCBAQAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKLSAgICAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCAKLSAgICA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxNDUsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKICAgICAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCkBAIC0yODIxLDcgKzI4NzksNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKQEAgLTI4MzIsMTczICsyODkwLDIwOCBAQAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzEsIDAsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAyNDEsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMzMsIDAsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDI2NywgMzM0LCAyNDIsIDI2NywgMjY3LCAyNjcsIAorICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgCi0gICAgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDU0LCA1NCwgCi0gICAgNTQsIDU0LCA1NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgCisgICAgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMzM1LCAzMzUsIDMzNSwgMzM1LCAzMzUsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDI2LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAwLCAwLCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAwLCAwLCAKIH07CiAKIC8qIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtMzk3MCwxMDIgKzQwNjMsMTAyIEBACiAgICAgMjY2LCAyODQzNiwgMjY2LCAyNTIzNywgMjY2LCAyNTQyOSwgMjY2LCAxOTk2OCwgMjY2LCAxOTk3NywgMjY2LCAzNjkzOCwgCiAgICAgMjY2LCAyNDAzOCwgMjY2LCAyMDAxMywgMjY2LCAyMTQ5MSwgMjY2LCAyNTM1MSwgMjY2LCAzNjIwOCwgMjY2LCAyNTE3MSwgCiAgICAgMjY2LCAzMTEwNSwgMjY2LCAzMTM1NCwgMjY2LCAyMTUxMiwgMjY2LCAyODI4OCwgMjY2LCAyNjM3NywgMjY2LCAyNjM3NiwgCi0gICAgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCA3NzAsIDEyMzA4LCAKLSAgICAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIDEyMzA5LCA3NzAsIAotICAgIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgMzA0MjMsIDEyMzA5LCAKLSAgICA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAyNDQ3MSwgMjYzLCAKLSAgICAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgMjAzMjAsIDI1NiwgCi0gICAgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgMjA3MTEsIDI1NiwgCi0gICAgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIDIwODM2LCAyNTYsIAotICAgIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAxMzI0MjcsIDI1NiwgCi0gICAgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgMTY4NDE1LCAyNTYsIAotICAgIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIDIxMTA2LCAyNTYsIAotICAgIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMjQyLCAyNTYsIAotICAgIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIDIxMzM4LCAyNTYsIAotICAgIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDEzMzY3NiwgMjU2LCAKLSAgICAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgMjE0ODksIDI1NiwgCi0gICAgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgMjE2NjYsIDI1NiwgCi0gICAgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgMjE4OTIsIDI1NiwgCi0gICAgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgMjIwMjIsIDI1NiwgCi0gICAgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgMjI0NzgsIDI1NiwgCi0gICAgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgMjI3MDAsIDI1NiwgCi0gICAgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIDIyODE4LCAyNTYsIAotICAgIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgMjMwNzksIDI1NiwgCi0gICAgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgMjMzNTgsIDI1NiwgCi0gICAgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIDIzNTM5LCAyNTYsIAotICAgIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAxNDIwOSwgMjU2LCAKLSAgICAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgMjM4NzUsIDI1NiwgCi0gICAgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIDI0MDM0LCAyNTYsIAotICAgIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIDE0NDM0LCAyNTYsIAotICAgIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAyNDI2NiwgMjU2LCAKLSAgICAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgMjU2LCAyNDM1NCwgCi0gICAgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAyNTYsIDI0NDI3LCAKLSAgICAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAyNTYsIDI0NzA1LCAKLSAgICAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgMjU2LCAyNDkwNCwgCi0gICAgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgMjU2LCAyNTAxMCwgCi0gICAgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgMjU2LCAyNTEwNCwgCi0gICAgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgMjU2LCAxNDIwOTIsIAotICAgIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIDI1NiwgMTQyMzIxLCAKLSAgICAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAyNTYsIDI1NzI2LCAKLSAgICAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAyNTYsIDE0MzM3MCwgCi0gICAgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgMjU2LCAxNTExMiwgCi0gICAgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgMjU2LCAzMjk0MSwgCi0gICAgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgMjU2LCAyNjQ1MSwgCi0gICAgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIDI1NiwgMjY3NTcsIAotICAgIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAyNTYsIDI2OTQ2LCAKLSAgICAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgMjU2LCAxNTM4NCwgCi0gICAgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIDI1NiwgMjc1NTEsIAotICAgIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAxNDYxNzAsIDI1NiwgCi0gICAgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIDI3OTI2LCAyNTYsIAotICAgIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIDI4MDM3LCAyNTYsIAotICAgIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAyODM2MywgMjU2LCAKLSAgICAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIDE0NzM0MiwgCi0gICAgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAyODc0NiwgCi0gICAgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgMTQ4MDY3LCAKLSAgICAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAxNDkwMDAsIAotICAgIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgMjU2LCAyOTU3OSwgCi0gICAgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgMjU2LCAyOTc4OCwgCi0gICAgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgMjU2LCAxNTA1ODIsIAotICAgIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAzMDIyNCwgMjU2LCAKLSAgICAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgMjU2LCAzMDQ1MiwgCi0gICAgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgMzA0OTQsIDI1NiwgCi0gICAgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgMTY0NTQsIDI1NiwgCi0gICAgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIDE2NjExLCAyNTYsIAotICAgIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAyNTYsIDMxMjExLCAKLSAgICAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgMjU2LCAxNTQyNzksIAotICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAzMTY4NiwgMjU2LCAzMTY4OSwgCi0gICAgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgMzE5NzYsIDI1NiwgMzE5NzEsIAotICAgIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIDMyMTk5LCAyNTYsIDMyMjU4LCAKLSAgICAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgMTcyNDEsIDI1NiwgCi0gICAgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAzMjc3MywgMjU2LCAKLSAgICAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgMjU2LCAxNDQyMjMsIAotICAgIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIDI1NiwgMjMyMjEsIAotICAgIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIDMzMjgxLCAyNTYsIAotICAgIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIDMzNDM3LCAyNTYsIAotICAgIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIDE1ODUyNCwgMjU2LCAKLSAgICAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAzMzcyNSwgMjU2LCAKLSAgICAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAzMzc1NiwgMjU2LCAKLSAgICAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgMjU2LCAzNDAzNSwgCi0gICAgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAyNTYsIDE3NzYxLCAKLSAgICAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIDI1NiwgMzQ0MDcsIAotICAgIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIDI1NiwgMzQ2ODEsIAotICAgIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIDI1NiwgMzQ4MTcsIAotICAgIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAyNTYsIDM1MDM4LCAKLSAgICAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIDI1NiwgMTgxMTAsIAotICAgIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIDI1NiwgMTYyOTg0LCAKLSAgICAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgMjU2LCAxMzMxMjQsIAotICAgIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAyNTYsIDM2NjY0LCAKLSAgICAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIDI1NiwgCi0gICAgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAyNTYsIAotICAgIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgMjU2LCAKLSAgICAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAyNTYsIAotICAgIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIDI1NiwgCi0gICAgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgMjU2LCAKLSAgICAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgMjU2LCAKLSAgICAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIDI1NiwgCi0gICAgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgMTcyNjg5LCAKLSAgICAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIDQwNzE5LCAKLSAgICAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCisgICAgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgMjY2LCAzNzE5NywgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCAKKyAgICA3NzAsIDEyMzA4LCAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIAorICAgIDEyMzA5LCA3NzAsIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgCisgICAgMzA0MjMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAKKyAgICAyNDQ3MSwgMjYzLCAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgCisgICAgMjAzMjAsIDI1NiwgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgCisgICAgMjA3MTEsIDI1NiwgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIAorICAgIDIwODM2LCAyNTYsIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAKKyAgICAxMzI0MjcsIDI1NiwgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgCisgICAgMTY4NDE1LCAyNTYsIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIAorICAgIDIxMTA2LCAyNTYsIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIAorICAgIDIxMjQyLCAyNTYsIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIAorICAgIDIxMzM4LCAyNTYsIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIAorICAgIDEzMzY3NiwgMjU2LCAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgCisgICAgMjE0ODksIDI1NiwgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgCisgICAgMjE2NjYsIDI1NiwgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgCisgICAgMjE4OTIsIDI1NiwgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgCisgICAgMjIwMjIsIDI1NiwgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgCisgICAgMjI0NzgsIDI1NiwgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgCisgICAgMjI3MDAsIDI1NiwgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIAorICAgIDIyODE4LCAyNTYsIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgCisgICAgMjMwNzksIDI1NiwgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgCisgICAgMjMzNTgsIDI1NiwgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIAorICAgIDIzNTM5LCAyNTYsIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAKKyAgICAxNDIwOSwgMjU2LCAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgCisgICAgMjM4NzUsIDI1NiwgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIAorICAgIDI0MDM0LCAyNTYsIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIAorICAgIDE0NDM0LCAyNTYsIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAKKyAgICAyNDI2NiwgMjU2LCAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgCisgICAgMjU2LCAyNDM1NCwgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAKKyAgICAyNTYsIDI0NDI3LCAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAKKyAgICAyNTYsIDI0NzA1LCAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgCisgICAgMjU2LCAyNDkwNCwgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgCisgICAgMjU2LCAyNTAxMCwgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgCisgICAgMjU2LCAyNTEwNCwgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgCisgICAgMjU2LCAxNDIwOTIsIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIAorICAgIDI1NiwgMTQyMzIxLCAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAKKyAgICAyNTYsIDI1NzI2LCAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAKKyAgICAyNTYsIDE0MzM3MCwgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgCisgICAgMjU2LCAxNTExMiwgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgCisgICAgMjU2LCAzMjk0MSwgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgCisgICAgMjU2LCAyNjQ1MSwgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIAorICAgIDI1NiwgMjY3NTcsIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAKKyAgICAyNTYsIDI2OTQ2LCAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgCisgICAgMjU2LCAxNTM4NCwgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIAorICAgIDI1NiwgMjc1NTEsIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAKKyAgICAxNDYxNzAsIDI1NiwgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIAorICAgIDI3OTI2LCAyNTYsIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIAorICAgIDI4MDM3LCAyNTYsIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAKKyAgICAyODM2MywgMjU2LCAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIAorICAgIDE0NzM0MiwgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAKKyAgICAyODc0NiwgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgCisgICAgMTQ4MDY3LCAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAKKyAgICAxNDkwMDAsIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgCisgICAgMjU2LCAyOTU3OSwgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgCisgICAgMjU2LCAyOTc4OCwgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgCisgICAgMjU2LCAxNTA1ODIsIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAKKyAgICAzMDIyNCwgMjU2LCAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgCisgICAgMjU2LCAzMDQ1MiwgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgCisgICAgMzA0OTQsIDI1NiwgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgCisgICAgMTY0NTQsIDI1NiwgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIAorICAgIDE2NjExLCAyNTYsIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAKKyAgICAyNTYsIDMxMjExLCAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgCisgICAgMjU2LCAxNTQyNzksIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAKKyAgICAzMTY4NiwgMjU2LCAzMTY4OSwgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgCisgICAgMzE5NzYsIDI1NiwgMzE5NzEsIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIAorICAgIDMyMTk5LCAyNTYsIDMyMjU4LCAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgCisgICAgMTcyNDEsIDI1NiwgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAKKyAgICAzMjc3MywgMjU2LCAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgCisgICAgMjU2LCAxNDQyMjMsIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIAorICAgIDI1NiwgMjMyMjEsIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIAorICAgIDMzMjgxLCAyNTYsIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIAorICAgIDMzNDM3LCAyNTYsIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIAorICAgIDE1ODUyNCwgMjU2LCAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAKKyAgICAzMzcyNSwgMjU2LCAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAKKyAgICAzMzc1NiwgMjU2LCAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgCisgICAgMjU2LCAzNDAzNSwgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAKKyAgICAyNTYsIDE3NzYxLCAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIAorICAgIDI1NiwgMzQ0MDcsIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIAorICAgIDI1NiwgMzQ2ODEsIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIAorICAgIDI1NiwgMzQ4MTcsIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAKKyAgICAyNTYsIDM1MDM4LCAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIAorICAgIDI1NiwgMTgxMTAsIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIAorICAgIDI1NiwgMTYyOTg0LCAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgCisgICAgMjU2LCAxMzMxMjQsIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAKKyAgICAyNTYsIDM2NjY0LCAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIAorICAgIDI1NiwgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAKKyAgICAyNTYsIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgCisgICAgMjU2LCAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAKKyAgICAyNTYsIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIAorICAgIDI1NiwgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgCisgICAgMjU2LCAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgCisgICAgMjU2LCAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIAorICAgIDI1NiwgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgCisgICAgMTcyNjg5LCAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIAorICAgIDQwNzE5LCAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCiB9OwogCiAvKiBpbmRleCB0YWJsZXMgZm9yIHRoZSBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTUxODcsMTEgKzUyODAsMTEgQEAKICAgICAxMzA0NCwgMTMwNDYsIDEzMDQ4LCAxMzA1MCwgMTMwNTIsIDEzMDU0LCAxMzA1NiwgMTMwNTgsIDEzMDYwLCAxMzA2MiwgCiAgICAgMTMwNjQsIDEzMDY2LCAxMzA2OCwgMTMwNzAsIDEzMDcyLCAxMzA3NCwgMTMwNzYsIDEzMDc4LCAxMzA4MCwgMTMwODIsIAogICAgIDEzMDg0LCAxMzA4NiwgMTMwODgsIDEzMDkwLCAxMzA5MiwgMTMwOTQsIDEzMDk2LCAxMzA5OCwgMTMxMDAsIDEzMTAyLCAKLSAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzEyMiwgMTMxMjYsIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzE1OCwgMTMxNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDEzMTIyLCAwLCAKKyAgICAwLCAwLCAwLCAxMzEyNCwgMTMxMjgsIDEzMTMyLCAxMzEzNiwgMTMxNDAsIDEzMTQ0LCAxMzE0OCwgMTMxNTIsIDEzMTU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MCwgMTMxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYyLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKICAgICAxMzE3NiwgMTMxNzgsIDEzMTgwLCAxMzE4MiwgMTMxODQsIDEzMTg2LCAxMzE4OCwgMTMxOTAsIDEzMTkyLCAxMzE5NCwgCiAgICAgMTMxOTYsIDEzMTk4LCAxMzIwMCwgMTMyMDIsIDEzMjA0LCAxMzIwNiwgMTMyMDgsIDEzMjEwLCAxMzIxMiwgMTMyMTQsIAogICAgIDEzMjE2LCAxMzIxOCwgMTMyMjAsIDEzMjIyLCAxMzIyNCwgMTMyMjYsIDEzMjI4LCAxMzIzMCwgMTMyMzIsIDEzMjM0LCAKQEAgLTUyNDUsMTEgKzUzMzgsMTEgQEAKICAgICAxNDE3NiwgMTQxNzgsIDE0MTgwLCAxNDE4MiwgMTQxODQsIDE0MTg2LCAxNDE4OCwgMTQxOTAsIDE0MTkyLCAxNDE5NCwgCiAgICAgMTQxOTYsIDE0MTk4LCAxNDIwMCwgMTQyMDIsIDE0MjA0LCAxNDIwNiwgMTQyMDgsIDE0MjEwLCAxNDIxMiwgMTQyMTQsIAogICAgIDE0MjE2LCAxNDIxOCwgMTQyMjAsIDE0MjIyLCAxNDIyNCwgMTQyMjYsIDE0MjI4LCAxNDIzMCwgMTQyMzIsIDE0MjM0LCAKLSAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMTQyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogTkZDIHBhaXJzICovCkBAIC01NjY1LDEzMiArNTc1OCwxMzUgQEAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkIGNoYW5nZV9yZWNvcmRzXzNfMl8wW10gPSB7Ci0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDExLCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKLQl7IDE5LCAyMSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAzLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAxLCAyNTUsIDAgfSwKLQl7IDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjksIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI2LCAyNTUsIDI1NSwgMCB9LAotCXsgNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTQsIDYsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMi4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDMuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCA0LjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKLQl7IDE0LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAwLCAwIH0sCi0JeyAyNTUsIDcsIDEsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCAyLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgMywgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDQsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA1LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNiwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDcsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA4LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgMCB9LAotCXsgMSwgNSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMTAsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA0LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA2LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA3LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA4LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA5LCAyNTUsIDAgfSwKLQl7IDE5LCAzMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjcsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIyLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMywgMjU1LCAyNTUsIDAgfSwKLQl7IDksIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE0LCA0LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMjAgfSwKLQl7IDI1NSwgMTksIDI1NSwgMjU1LCAtMSB9LAotCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxMSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDMwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAyMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAxLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI2LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyA1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA2LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMS4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMi4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMy4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgNC4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKKwl7IDE0LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAxLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAyLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAzLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA0LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA2LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA3LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA4LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA5LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE4LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDQsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA2LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDcsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA5LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDMwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjcsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgNSwgMCB9LAorCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyMywgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgOSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMjAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAyNTUsIC0xIH0sCisJeyAxLCAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCiB9Owogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9pbmRleFtdID0gewogICAgIDAsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDIsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIAogICAgIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyLCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgCiAgICAgMzYsIDM3LCAyLCAyLCAyLCAzOCwgMzksIDIsIDQwLCAyLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCAKLSAgICA1MCwgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDU4LCA1OSwgNjAsIDYxLCAyLCAyLCA2MiwgNjMsIAotICAgIDY0LCA2NSwgNjYsIDY2LCAyLCAyLCAyLCAyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgMiwgMiwgMiwgNzQsIDc1LCAKLSAgICA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCAyLCAyLCAyLCAyLCA4NSwgCisgICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgNjIsIDYzLCAKKyAgICA2NCwgNjUsIDY2LCA2NywgNjcsIDIsIDIsIDIsIDIsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAyLCAyLCAyLCA3NSwgCisgICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIAorICAgIDg2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NywgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDg5LCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkyLCAKKyAgICA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAyLCA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgODgsIDg5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIAotICAgIDkyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk4LCA1MCwgNTAsIAotICAgIDk5LCAxMDAsIDUwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NSwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk3LCA5OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTksIDUwLCA1MCwgCisgICAgMTAwLCAxMDEsIDUwLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMiwgMiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMiwgNTAsIDUwLCAxMzIsIAotICAgIDIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMiwgMiwgMTQzLCAyLCAyLCAyLCAKLSAgICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDIsIDIsIDE1MSwgMiwgMTUyLCAxNTMsIDE1NCwgMTU1LCAyLCAKLSAgICAyLCAxNTYsIDIsIDIsIDIsIDE1NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE1OCwgMTU5LCA1MCwgMTYwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMiwgMiwgMTE4LCAxMTksIDEyMCwgMiwgMTIxLCAKKyAgICAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMiwgNTAsIDUwLCAxMzMsIAorICAgIDIsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMiwgMiwgMTQ0LCAyLCAyLCAyLCAKKyAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDIsIDE1MiwgMTUzLCAyLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDIsIAorICAgIDIsIDE1OCwgMiwgMiwgMiwgMTU5LCAyLCAyLCAxNjAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDE2MiwgMTYzLCA1MCwgMTY0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2NSwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgNTAsIDUwLCA1MCwgNTAsIDE2MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY3LCAxNjgsIAorICAgIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjcsIDE2OCwgMTY5LCAxNzAsIDIsIDIsIDIsIDIsIDIsIDIsIDE3MSwgCisgICAgMTcyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3MywgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICAxNzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc2LCAxNzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3OCwgCisgICAgMTc5LCAxODAsIDIsIDE4MSwgMiwgMiwgMTgyLCAyLCAyLCAyLCAxODMsIDE4NCwgMTg1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDE4NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgMTg4LCAxODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE5MCwgMTkxLCAyLCAyLCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE5NywgMTk4LCAxOTksIDIwMCwgCisgICAgMjAxLCAyMDIsIDIwMywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA0LCAyMDUsIDk2LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMjA2LCAyLCAyMDcsIDIwOCwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA5LCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxMSwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMjEyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3MCwgMTcxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAxNzIsIDE3MywgMTc0LCAyLCAxNzUsIDIsIDIsIDE3NiwgMiwgMiwgMiwgMTc3LCAxNzgsIDE3OSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4MiwgCi0gICAgMTgzLCAyLCAyLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMiwgNTAsIDUwLCA1MCwgNTAsIDE4OSwgMTkwLCA1MCwgMTkxLCAKLSAgICAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTgsIAotICAgIDE5OSwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyMDAsIDIsIDIwMSwgCi0gICAgMjAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMjA1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA3LCA1MCwgMjA4LCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIxMywgNTAsIDIxNCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCiAgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCiAgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDUwLCA1MCwgMjE1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDMsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC02MDI2LDggKzYxMjIsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAyMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDUwLCAyMTYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNjA5MCw3ICs2MTg1LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNjE3Niw5ICs2MjcxLDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKQEAgLTYyMTYsNyArNjMxMSw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYyMjUsOSArNjMyMCw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzE0LDcgKzY0MDksNyBAQAogICAgIDMyLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKQEAgLTYzNTYsOCArNjQ1MSw4IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCkBAIC02MzcyLDI5ICs2NDY3LDI5IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAKLSAgICAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgNCwgMCwgMCwgCisgICAgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgMSwgMSwgMCwgMCwgMCwgNCwgMzcsIDgsIDYsIDcsIDM4LCAzOSwgNDAsIDQxLCAKKyAgICA0MiwgNDMsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTY0MDUsMTM3ICs2NTAwLDgyMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCA0NSwgNDUsIDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDYsIDQ2LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDksIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAKKyAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUxLCA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjU0Nyw2ODMgKzczMjYsMzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCA5LCAKLSAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAotICAgIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIAotICAgIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIAotICAgIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkKiBnZXRfY2hhbmdlXzNfMl8wKFB5X1VDUzQgbikKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaCBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAppbmRleCBkMGY5Y2I0Li5hODFkOGUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCkBAIC00LDI0NiArNCwyNDcgQEAKIAogLyogbGV4aWNvbiAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgbGV4aWNvbltdID0gewotICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4MywgNzMsIDcxLCAyMDYsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgCi0gICAgNzYsIDY1LCA2NiwgNzYsIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKLSAgICA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDc2LCA2NSwgODQsIDczLCAyMDYsIDY3LCA4NSwgNzgsIAotICAgIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4MywgNzMsIDcxLCAyMDYsIDg3LCA3MywgODQsIDIwMCwgODMsIDc3LCA2NSwgCisgICAgNzYsIDIwNCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIDE5NywgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDc2LCA2NSwgODQsIDczLCAyMDYsIDY1LCA4MiwgNjUsIAorICAgIDY2LCA3MywgMTk1LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIAogICAgIDc3LCA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCAKICAgICA2NSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgMjA0LCA2OCwgNzMsIDcxLCA3MywgMjEyLCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgCi0gICAgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgODMsIDczLCA3MSwgNzgsIDg3LCAKLSAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODYsIDc5LCA4NywgNjksIDIwNCwgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIAotICAgIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgCi0gICAgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzEsIDgyLCAKLSAgICA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgCi0gICAgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgMjEwLCA2NywgODksIDgyLCA3MywgCi0gICAgNzYsIDc2LCA3MywgMTk1LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA4NCwgNjUsIDc3LCAKLSAgICA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg2LCAKLSAgICA2NSwgMjAxLCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgNjUsIDgyLCA4MiwgNzksIDIxNSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAotICAgIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDY2LCAKLSAgICA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgCi0gICAgMjAzLCA2NSwgMTI4LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAxOTMsIDg1LCAxMjgsIDc3LCA4OSwgNjUsIDc4LCAKLSAgICA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NSwgNzMsIDc1LCA2NSwgNzUsIAotICAgIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAxOTcsIDczLCAxMjgsIDc5LCAxOTgsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIAotICAgIDIwNiwgNzksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIAotICAgIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA3NywgNjksIDY5LCAyMDUsIDY3LCA3OSwgCi0gICAgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAKLSAgICAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODksIDY5LCAyMDAsIDY3LCAKLSAgICA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIAotICAgIDY1LCA4MiwgMjAxLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgCi0gICAgMjA2LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDY2LCA3OSwgMjE2LCA4NCwgNzMsIDc2LCAxOTcsIDY4LCA4NSwgODAsIAotICAgIDc2LCA3OSwgODksIDY1LCAyMDYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAKLSAgICA3OSwgNzgsIDY5LCAxMjgsIDIxMywgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg0LCA4NywgNzksIAotICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgCi0gICAgNzMsIDY1LCAyMDcsIDg1LCAyMDgsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAKLSAgICAyMDYsIDc5LCA4NiwgNjksIDIxMCwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDc3LCA3OSwgNzgsIAotICAgIDE5OSwgNzksIDc4LCAxOTcsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgODcsIDIwNywgNjgsIDc5LCA4NywgMjA2LCAKLSAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3NiwgNzksIDIxNSwgODYsIAotICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgCi0gICAgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIDc5LCA3MywgODQsIDczLCAKLSAgICAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgODMsIDY3LCA4MiwgNzMsIAotICAgIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NiwgCi0gICAgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDc2LCA2OSwgMTk4LCAKLSAgICA3MiwgNzMsIDcxLCAyMDAsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA3MywgNzgsIAotICAgIDcyLCA2NSwgNzYsIDE5MywgNzgsIDg1LCA3NywgNjksIDgyLCA3MywgMTk1LCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgCi0gICAgNzgsIDE5NywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDcyLCA4NSwgNzgsIDcxLCA2NSwgODIsIDczLCA2NSwgMjA2LCAKLSAgICA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNzAsIDc5LCA4NSwgODIsIDEyOCwgNjYsIAotICAgIDY1LCA4MiwgMTk0LCA3MiwgNjUsIDIwMCwgNzIsIDY1LCAxMjgsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIAotICAgIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgCi0gICAgMjA0LCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDcyLCA2NSwgCi0gICAgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgNjUsIDY3LCAKLSAgICA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAotICAgIDY5LCAyMTAsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgCi0gICAgODIsIDg1LCA2NywgMjAzLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgODAsIDY5LCAyMDYsIDcyLCA3MywgODIsIDY1LCAKLSAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIAorICAgIDY2LCA3OSwgMjA0LCA2OCwgNzMsIDcxLCA3MywgMjEyLCA4NCwgNjUsIDc4LCA3MSwgODUsIDIxMiwgNzAsIDc5LCA4MiwgCisgICAgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAKKyAgICAyMTEsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDc4LCA4NywgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIAorICAgIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgCisgICAgNjksIDY1LCAyMTAsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCAKKyAgICA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIAorICAgIDIxMCwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgODIsIDY1LCA2OCwgNzMsIAorICAgIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAxOTgsIDY3LCA3MywgODIsIDY3LCA3NiwgCisgICAgNjksIDE5NiwgODQsIDY1LCA3NywgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgCisgICAgODIsIDc5LCA4NywgMTI4LCA3NiwgNjksIDcwLCAyMTIsIDg2LCA2NSwgMjAxLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKKyAgICA4MiwgODIsIDc5LCAyMTUsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgCisgICAgODQsIDY5LCA4MiwgMjA2LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgNjUsIDEyOCwgNjYsIDc2LCAKKyAgICA2NSwgNjcsIDIwMywgODcsIDcyLCA3MywgODQsIDE5NywgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgODUsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgCisgICAgMTkzLCA3MywgMTI4LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3OSwgMTI4LCA3NSwgNjUsIAorICAgIDc4LCA3MSwgODgsIDIwMSwgNzksIDE5OCwgNzUsIDczLCA3NSwgNjUsIDc1LCA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgCisgICAgMTk3LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAyMDYsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDc3LCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzcsIAorICAgIDY5LCA2OSwgMjA1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKKyAgICAyMTAsIDg5LCA2OSwgMjAwLCA2NywgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIAorICAgIDc2LCA3MywgNjUsIDIwNiwgODAsIDc2LCA4NSwgMjExLCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAKKyAgICAyMDEsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA4MywgODQsIAorICAgIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCAxMjgsIDY2LCA3OSwgMjE2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgNzksIDc4LCA2OSwgMTI4LCA4NCwgCisgICAgNzMsIDc2LCAxOTcsIDY4LCA4NSwgODAsIDc2LCA3OSwgODksIDY1LCAyMDYsIDg0LCA4NywgNzksIDEyOCwgODAsIDY1LCAKKyAgICA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIDIxMywgODYsIAorICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNjcsIDc5LCA3OCwgCisgICAgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIDczLCAKKyAgICA2NSwgMjA3LCA4NSwgMjA4LCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDcyLCA3OSwgNzksIAorICAgIDc1LCAxMjgsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDc5LCA4NiwgNjksIDIxMCwgODQsIDg3LCAyMDcsIAorICAgIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3MywgNzEsIDIwMCwgNzIsIDc3LCA3OSwgNzgsIDE5OSwgCisgICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgODAsIDY1LCA3MiwgNjUsIDg3LCAyMDAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIDY4LCAKKyAgICA3OSwgODcsIDIwNiwgNzYsIDc5LCAyMTUsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIAorICAgIDcwLCA4NywgNzMsIDY4LCA4NCwgMjAwLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDIxMiwgNzcsIDY5LCA4MiwgCisgICAgNzksIDczLCA4NCwgNzMsIDE5NSwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzcsIDY1LCA4MiwgMjAzLCAKKyAgICA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIAorICAgIDY5LCA0NSwgMTk2LCA4NCwgNzksIDEyOCwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgCisgICAgNzYsIDY5LCAxOTgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDc3LCA2NSwgNzYsIDY1LCAKKyAgICA4OSwgNjUsIDc2LCA2NSwgMjA1LCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIDcyLCA2NSwgMTI4LCA3OCwgODUsIAorICAgIDc3LCA2OSwgODIsIDczLCAxOTUsIDgyLCAxMjgsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCAxMjgsIAorICAgIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA3OSwgNzgsIDE5NywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDcyLCA4NSwgCisgICAgNzgsIDcxLCA2NSwgODIsIDczLCA2NSwgMjA2LCA4NCwgNzIsIDg1LCA3NywgMTk0LCA2NiwgNjUsIDgyLCAxOTQsIDcyLCAKKyAgICA2NSwgMjAwLCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIAorICAgIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIDIwNCwgNzUsIDY1LCAxMjgsIDc2LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgCisgICAgNzIsIDY1LCA3NiwgMTk4LCA3NiwgNzksIDc4LCAxOTksIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCAKKyAgICA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA4MCwgNjUsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA2NiwgNzIsIDY1LCA3MywgNzUsIDgzLCA4NSwgNzUsIDIwMSwgNjgsIDc5LCA4NSwgCisgICAgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3OSwgODAsIDY5LCAyMDYsIDcyLCA3MywgODIsIDY1LCAKKyAgICA3MSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIAogICAgIDcxLCAyMTMsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKLSAgICAyMTEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgNzEsIAotICAgIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgMjExLCA3NCwgNjksIDY5LCAKLSAgICAyMDUsIDgwLCA2NSwgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDY4LCA3OSwgODQsIDIxMSwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDY3LCA4NSwgODIsIAotICAgIDgzLCA3MywgODYsIDE5NywgNzcsIDY1LCAxMjgsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDgzLCAxMjgsIDgzLCA3MywgODgsIAotICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDg5LCA2NSwgCi0gICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjUsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDkwLCAKLSAgICA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgODksIAotICAgIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAxMjgsIAotICAgIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCA5MCwgCi0gICAgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIDEyOCwgCi0gICAgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIDkwLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgOTAsIAotICAgIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCA4MCwgCi0gICAgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCA5MCwgCi0gICAgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIDEyOCwgCi0gICAgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIDkwLCAKLSAgICA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgODIsIAotICAgIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCAyMTMsIDkwLCA4MywgNzIsIDY1LCAxMjgsIAotICAgIDkwLCA4MiwgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgCi0gICAgMTI4LCA5MCwgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIAotICAgIDkwLCA3NCwgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgCi0gICAgODAsIDgwLCA2OSwgODIsIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIDczLCAKLSAgICA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgNjgsIAotICAgIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIDg5LCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODIsIAotICAgIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgNzIsIAotICAgIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIDkwLCAKLSAgICA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgNzksIAotICAgIDc5LCAxMjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgCi0gICAgNjksIDEyOCwgOTAsIDcyLCA3MywgNzYsIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgCi0gICAgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAKLSAgICAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIDkwLCAKLSAgICA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgNjksIAotICAgIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgOTAsIAotICAgIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIDEyOCwgCi0gICAgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCAKLSAgICAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgNjUsIAotICAgIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgNzYsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgCi0gICAgODgsIDEyOCwgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgCi0gICAgMTI4LCA5MCwgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIAotICAgIDkwLCA2NSwgNTUsIDEyOCwgOTAsIDE5MywgOTAsIDQ4LCA0OSwgNTQsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAKLSAgICA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgCi0gICAgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIAotICAgIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIAotICAgIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIAotICAgIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA4OSwgNjUsIAotICAgIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCA4NywgNjUsIAotICAgIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCA4NSwgODUsIAotICAgIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgODUsIDEyOCwgODksIDg1LCA4NCwgCi0gICAgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIAotICAgIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIAotICAgIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgCi0gICAgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA3NCwgMTI4LCA4OSwgODUsIDY5LCA4MSwgCi0gICAgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgNjgsIDIwMCwgODksIDg1LCA2NSwgCi0gICAgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDg1LCAKLSAgICA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIDc5LCAxMjgsIDg5LCA4NSwgNDUsIAotICAgIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgCi0gICAgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIDg5LCA4MiwgODksIDEyOCwgODksIAotICAgIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgCi0gICAgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIDc5LCAKLSAgICA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgODgsIAotICAgIDEyOCwgODksIDc5LCA4NywgNjgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIDg5LCA3OSwgODIsIDczLCAKLSAgICAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIDc5LCA3OSwgMTI4LCA4OSwgCi0gICAgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgMTI4LCA4OSwgNzksIDY4LCAKLSAgICAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDc5LCAKLSAgICA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgNzksIDEyOCwgODksIAotICAgIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgCi0gICAgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIDg0LCAxMjgsIDg5LCA3MywgCi0gICAgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIDgwLCAxMjgsIDg5LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIDg4LCAxMjgsIDg5LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIDg5LCA3MywgNjksIDEyOCwgCi0gICAgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgNzMsIDEyOCwgODksIDcwLCAKLSAgICA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIAotICAgIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAKLSAgICAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIAotICAgIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgCi0gICAgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIAotICAgIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgCi0gICAgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCAKLSAgICA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIAotICAgIDc5LCAyMTUsIDg5LCA2OSwgNzMsIDc4LCAxMjgsIDg5LCA2OSwgNzIsIDEyOCwgODksIDY5LCA2OSwgNzEsIDEyOCwgODksIAotICAgIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIAotICAgIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2OCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIDc4LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgCi0gICAgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAKLSAgICAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCAKLSAgICA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCAKLSAgICA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIAotICAgIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIAotICAgIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgCi0gICAgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAKLSAgICA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgCi0gICAgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgCi0gICAgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCAKLSAgICA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIAotICAgIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIAotICAgIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgCi0gICAgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCAKLSAgICA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgCi0gICAgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCA4MCwgMTI4LCA4OCwgODksIDc5LCA3OSwgNzQsIDEyOCwgCi0gICAgODgsIDg5LCA3OSwgNzksIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAKLSAgICAyMDUsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCAKLSAgICA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAKLSAgICAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIDEyOCwgODgsIDg3LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgCi0gICAgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCA4OCwgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgCi0gICAgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIDY1LCAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCAKLSAgICA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIDcyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgODgsIDc5LCAKLSAgICA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgODIsIDc5LCAKLSAgICAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgODgsIDczLCAKLSAgICA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIDY1LCA2NiwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAKLSAgICAxMjgsIDg4LCA2OSwgODksIDc4LCAxMjgsIDg4LCA2OSwgODMsIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCAKLSAgICA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgODUsIDgzLCAxMjgsIDg4LCA2NSwgODUsIDEyOCwgODgsIDY1LCAKLSAgICA4MCwgNzIsIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCAKLSAgICA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIAotICAgIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgCi0gICAgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgNDksIDEyOCwgODgsIDQ1LCAyMTYsIDg3LCA5MCwgMTI4LCA4NywgCi0gICAgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIDg3LCA4NiwgNzMsIDEyOCwgODcsIDg2LCA2OSwgMTI4LCA4NywgCi0gICAgODYsIDY1LCAxMjgsIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgCi0gICAgODUsIDc2LCA4NSwgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCA4NSwgNzMsIDEyOCwgODcsIDg1LCA2OSwgMTI4LCA4NywgCi0gICAgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgCi0gICAgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIDgzLCAyMTIsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAKLSAgICA4MywgMTI4LCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgMjExLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgNjgsIAotICAgIDEyOCwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIDgyLCA2NSwgCi0gICAgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgODcsIDEyOCwgCi0gICAgODcsIDc5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgNzksIDgyLCAKLSAgICA3NiwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCA3OSwgODIsIAotICAgIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIDg3LCA3OSwgCi0gICAgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgNjgsIDgzLCAKLSAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCA3OSwgMjA2LCAKLSAgICA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIDc4LCAyMTEsIAotICAgIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgODMsIDc5LCAKLSAgICAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgODQsIDcyLCAKLSAgICA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzMsIDIwNiwgODcsIAotICAgIDczLCA4MiwgNjksIDE5NiwgODcsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAKLSAgICAxOTksIDg3LCA3MywgNzgsIDc1LCAxMjgsIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgNzMsIDc4LCA3MSwgODMsIAotICAgIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCA2OCwgODUsIDEyOCwgODcsIAotICAgIDczLCA3OCwgNjgsIDc5LCA4NywgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgCi0gICAgNzgsIDEyOCwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCAKLSAgICA3MywgNzEsIDcxLCA3NiwgNjksIDgzLCAxMjgsIDg3LCA3MywgNjgsIDg0LCA3MiwgMTI4LCA4NywgNzMsIDY4LCA2OSwgNzgsIAotICAgIDczLCA3OCwgMTk5LCA4NywgNzMsIDY4LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAKLSAgICAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIAotICAgIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgCi0gICAgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MiwgMTI4LCA4NywgCi0gICAgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAKLSAgICAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAKLSAgICAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCAKLSAgICA2OSwgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIAorICAgIDIxMSwgODksIDY1LCAxMjgsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgCisgICAgNzYsIDIwMSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDg4LCAxMjgsIDc4LCA2NSwgMTI4LCA3OCwgCisgICAgNjksIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg0LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzQsIDY5LCA2OSwgMjA1LCA3NiwgNjUsIDEyOCwgNzgsIDY5LCAKKyAgICA4NywgMTkzLCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgMjAwLCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCAKKyAgICA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIAorICAgIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgOTAsIAorICAgIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgCisgICAgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgCisgICAgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIAorICAgIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIAorICAgIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgCisgICAgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIDEyOCwgCisgICAgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgODcsIDY1LCAKKyAgICA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIAorICAgIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIAorICAgIDEyOCwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIAorICAgIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIAorICAgIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIAorICAgIDczLCA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgCisgICAgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCAKKyAgICA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgCisgICAgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCAKKyAgICA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgCisgICAgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIAorICAgIDg0LCA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIAorICAgIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgCisgICAgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgCisgICAgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCAKKyAgICA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCAKKyAgICA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgCisgICAgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgCisgICAgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCAKKyAgICA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIAorICAgIDc3LCA4OCwgMTI4LCA5MCwgNjUsIDc2LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIAorICAgIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCAKKyAgICA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgCisgICAgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAKKyAgICA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAorICAgIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIAorICAgIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCAKKyAgICA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCAKKyAgICA2NSwgMTI4LCA4OSwgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAKKyAgICAxMjgsIDg5LCA4NywgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA4OSwgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCAKKyAgICA4MSwgMTI4LCA4OSwgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIAorICAgIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIAorICAgIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIAorICAgIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIAorICAgIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIAorICAgIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgCisgICAgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCAKKyAgICA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIAorICAgIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCAKKyAgICA4OSwgODIsIDg5LCAxMjgsIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIAorICAgIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgCisgICAgNzMsIDIxMSwgODksIDgwLCA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCAKKyAgICA4OSwgMTI4LCA4OSwgNzksIDg4LCAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIAorICAgIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgCisgICAgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIAorICAgIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgCisgICAgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgCisgICAgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCAKKyAgICA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIAorICAgIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIAorICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIAorICAgIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIAorICAgIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgCisgICAgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgCisgICAgODksIDczLCAxMjgsIDg5LCA3MiwgNjksIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIAorICAgIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgCisgICAgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgCisgICAgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIAorICAgIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIAorICAgIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIAorICAgIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIAorICAgIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzMsIDc4LCAxMjgsIDg5LCA2OSwgCisgICAgNzIsIDEyOCwgODksIDY5LCA2OSwgNzEsIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgCisgICAgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgCisgICAgNjUsIDg5LCA2OCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCAKKyAgICA2NSwgODcsIDc4LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIDg5LCAKKyAgICA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIAorICAgIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIAorICAgIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIAorICAgIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgCisgICAgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCAKKyAgICA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCAKKyAgICA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIAorICAgIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIDEyOCwgCisgICAgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIDcxLCAKKyAgICA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIDg5LCAKKyAgICA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgODksIAorICAgIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCA2NywgCisgICAgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIDEyOCwgCisgICAgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCAKKyAgICA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgCisgICAgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCAKKyAgICA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCAKKyAgICA4MCwgMTI4LCA4OCwgODksIDc5LCA3OSwgNzQsIDEyOCwgODgsIDg5LCA3OSwgNzksIDEyOCwgODgsIDg5LCA3OSwgMTI4LCAKKyAgICA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAyMDUsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIAorICAgIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCAKKyAgICA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIAorICAgIDEyOCwgODgsIDg3LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA4OCwgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIAorICAgIDY1LCAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIAorICAgIDcyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgODgsIDc5LCA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCAKKyAgICA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgODIsIDc5LCAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgODgsIDczLCA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIAorICAgIDY1LCA2NiwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAxMjgsIDg4LCA2OSwgODksIDc4LCAxMjgsIDg4LCA2OSwgODMsIAorICAgIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgODUsIAorICAgIDgzLCAxMjgsIDg4LCA2NSwgODUsIDEyOCwgODgsIDY1LCA4MCwgNzIsIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgNjUsIAorICAgIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgODgsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODgsIDQ1LCAyMTYsIDg3LCA5MCwgMTI4LCA4NywgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIDg3LCAKKyAgICA4NiwgNzMsIDEyOCwgODcsIDg2LCA2OSwgMTI4LCA4NywgODYsIDY1LCAxMjgsIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAKKyAgICAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgNzksIDgwLCAxMjgsIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCAKKyAgICA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgODUsIDc2LCA4NSwgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCAKKyAgICA4NSwgNzMsIDEyOCwgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIAorICAgIDgzLCAyMTIsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCisgICAgMjExLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgNjgsIDEyOCwgODcsIDgyLCA2OSwgODMsIDg0LCA3NiwgNjksIDgyLCAKKyAgICA4MywgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIAorICAgIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgCisgICAgMTI4LCA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCAKKyAgICA3OSwgODIsIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIAorICAgIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgCisgICAgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCAKKyAgICA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIAorICAgIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgCisgICAgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCAKKyAgICA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCAKKyAgICA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgCisgICAgMjA2LCA4NywgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIAorICAgIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgCisgICAgMTI4LCA4NywgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgCisgICAgODcsIDczLCA3OCwgMTI4LCA4NywgNzMsIDc2LCA4NCwgNjksIDE5NiwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIAorICAgIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgNzEsIDcxLCA3NiwgNjksIDgzLCAxMjgsIDg3LCA3MywgCisgICAgNjgsIDg0LCA3MiwgMTI4LCA4NywgNzMsIDY4LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNzMsIDY4LCA2OSwgNDUsIDcyLCAKKyAgICA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgNzUsIAorICAgIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCA2OSwgCisgICAgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIDcyLCAKKyAgICA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgNjksIAorICAgIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCA2NSwgCisgICAgNzYsIDY5LCAxMjgsIDg3LCA3MiwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgCisgICAgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCAKKyAgICA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIAorICAgIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKICAgICAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA3MSwgNjksIAogICAgIDEyOCwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NiwgMTI4LCA4NywgNjksIDY1LCA4MiwgCiAgICAgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCA4OSwgCkBAIC0yNTcsMjUxICsyNTgsMjUzIEBACiAgICAgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCAKICAgICA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIAogICAgIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgyLCA2NSwgNzgsIDE5OSwgCi0gICAgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAKLSAgICAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIAotICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NywgNjUsIDc2LCA3NiwgMTI4LCA4NywgNjUsIDc2LCAyMDQsIDg3LCA2NSwgCi0gICAgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCAKLSAgICA3MywgODMsIDg0LCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCAKLSAgICA4NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIAotICAgIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCAKLSAgICA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIAotICAgIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCAKLSAgICA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCAKLSAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA3NCwgMTI4LCA4NiwgODcsIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgCi0gICAgODYsIDg1LCA4NSwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgCi0gICAgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCAKLSAgICA4MywgMTI4LCA4NiwgODQsIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCAKLSAgICA1NywgNTUsIDEyOCwgODYsIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1NywgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIAotICAgIDgzLCA1NywgNDgsIDEyOCwgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgCi0gICAgMTI4LCA4NiwgODMsIDU2LCA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDU2LCA1MiwgMTI4LCA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNTUsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIAotICAgIDUzLCAxMjgsIDg2LCA4MywgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIAotICAgIDg2LCA4MywgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA1NCwgNTMsIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA1NCwgNTAsIDEyOCwgODYsIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDUzLCA1NywgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIAotICAgIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgCi0gICAgMTI4LCA4NiwgODMsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAKLSAgICAxMjgsIDg2LCA4MywgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCAKLSAgICA4MywgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgCi0gICAgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgCi0gICAgODYsIDgzLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1NiwgMTI4LCA4NiwgODMsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MywgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCi0gICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDksIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNDksIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU3LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU3LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU3LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU3LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTYsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU1LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU1LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTQsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCi0gICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUzLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUzLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUzLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUxLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUxLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUxLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKLSAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgCi0gICAgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAKLSAgICAxMjgsIDg2LCA3OSwgODUsIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDIxMSwgODYsIDc5LCA4MCwgMTI4LCA4NiwgCi0gICAgNzksIDc5LCA3MywgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIDc5LCA3NiwgODUsIDc3LCAKLSAgICAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDY1LCA3NiwgNzYsIAotICAgIDEyOCwgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgNzksIDEyOCwgODYsIDc5LCA3NiwgNjUsIDgwLCA4NSwgMjAzLCA4NiwgCi0gICAgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgNzMsIDY3LCA2OSwgNzYsIDY5LCAKLSAgICA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgCi0gICAgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCAKLSAgICA3MywgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAotICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCAKLSAgICA4NiwgNzMsIDc2LCA3NiwgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgODYsIDczLCA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgCi0gICAgNjgsIDc0LCA0NSwgNTAsIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCAKLSAgICA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIAotICAgIDczLCA2NywgODQsIDc5LCA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgCi0gICAgMTI4LCA4NiwgNjksIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIAotICAgIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgCi0gICAgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCi0gICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCi0gICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCi0gICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCi0gICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIAotICAgIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgCi0gICAgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIAotICAgIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIAotICAgIDY1LCA4NCwgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgCi0gICAgODYsIDY1LCA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgCi0gICAgNjUsIDgyLCA3MywgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCAKLSAgICA4NiwgNjUsIDgyLCA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgCi0gICAgMTI4LCA4NiwgNjUsIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgCi0gICAgMTI4LCA4NiwgNjUsIDc0LCAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIAotICAgIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTIsIDQ4LCAxMjgsIDg2LCA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAKLSAgICA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA4NiwgNDgsIDUxLCA1MiwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgCi0gICAgNTEsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDg2LCA0OCwgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ4LCA3NCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDQ4LCA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAKLSAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAotICAgIDY2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgCi0gICAgMTI4LCA4NiwgNDgsIDQ5LCA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgCi0gICAgNDgsIDQ5LCA1MywgMTI4LCA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCAKLSAgICA1MCwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIAotICAgIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDg2LCA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgCi0gICAgNDgsIDQ5LCA3MywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDQ5LCA3MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgCi0gICAgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIAotICAgIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgCi0gICAgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCAKLSAgICA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIAotICAgIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIAotICAgIDY5LCA0NSwgNDksIDEyOCwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIAotICAgIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgCi0gICAgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgCi0gICAgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgCi0gICAgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKLSAgICA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIAotICAgIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgCi0gICAgNzksIDIwNiwgODUsIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIAotICAgIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAKLSAgICAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIAotICAgIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgCi0gICAgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCAKLSAgICA3OCwgNzMsIDIxMiwgODUsIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIAotICAgIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIDY4LCAyMDcsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgNzgsIDE5NywgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIDE5MywgODUsIDc4LCA2NywgCi0gICAgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIAotICAgIDY4LCAxMjgsIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgCi0gICAgNjUsIDEyOCwgODUsIDIwNiwgODUsIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgCi0gICAgNjksIDc2LCA3NiwgNjUsIDEyOCwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAKLSAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAotICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCi0gICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKKyAgICA4NywgNjUsIDgxLCA3MCwgNjUsIDEyOCwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIAorICAgIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgCisgICAgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NywgNjUsIDc2LCA3NiwgMTI4LCAKKyAgICA4NywgNjUsIDc2LCAyMDQsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgODMsIDg0LCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAKKyAgICAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCAKKyAgICA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIAorICAgIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAKKyAgICAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKKyAgICA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIAorICAgIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA3NCwgMTI4LCA4NiwgODcsIAorICAgIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NSwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIAorICAgIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCA4MywgMTI4LCA4NiwgODQsIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIAorICAgIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCA1NywgNTUsIDEyOCwgODYsIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgCisgICAgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIDEyOCwgODYsIDgzLCA1NywgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgCisgICAgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIDgzLCA1NywgNDgsIDEyOCwgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgMTI4LCA4NiwgODMsIDU2LCA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgODMsIDU2LCA1MiwgMTI4LCA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCA0OSwgMTI4LCA4NiwgODMsIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCA4MywgNTUsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIDUzLCAxMjgsIDg2LCA4MywgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIDg2LCA4MywgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTcsIDEyOCwgODYsIDgzLCA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgODYsIDgzLCA1NCwgNTMsIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCA1NCwgNTAsIDEyOCwgODYsIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1NywgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgCisgICAgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIAorICAgIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgCisgICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKKyAgICA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCAKKyAgICA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCAKKyAgICA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIAorICAgIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIAorICAgIDIxMSwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCA3MywgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIAorICAgIDEyOCwgODYsIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgCisgICAgNzYsIDY5LCA4OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgNzksIDEyOCwgODYsIDc5LCAKKyAgICA3NiwgNjUsIDgwLCA4NSwgMjAzLCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDg2LCA3OSwgNzMsIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2OCwgCisgICAgMTI4LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIAorICAgIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAxMjgsIDg2LCA3MywgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIAorICAgIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCAKKyAgICA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIAorICAgIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgCisgICAgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCAKKyAgICA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIAorICAgIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAKKyAgICAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDIxMCwgODYsIAorICAgIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgCisgICAgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIDczLCAKKyAgICA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgNzMsIAorICAgIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgCisgICAgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCAKKyAgICA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIAorICAgIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzAsIDY1LCAxMjgsIDg2LCA2OSwgCisgICAgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCAKKyAgICA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIAorICAgIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgCisgICAgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIDgyLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIAorICAgIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgCisgICAgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgCisgICAgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCAKKyAgICA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCAKKyAgICA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIAorICAgIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCAKKyAgICA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIAorICAgIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgCisgICAgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCAKKyAgICA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzQsIAorICAgIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgMjAwLCA4NiwgNjUsIDY1LCA4NiwgODUsIAorICAgIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgNDgsIDUxLCA1MCwgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIAorICAgIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NywgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgNTUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIAorICAgIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCA0OCwgNTAsIDQ5LCAxMjgsIAorICAgIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc0LCAKKyAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAorICAgIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIDEyOCwgODYsIDQ4LCA1MCwgCisgICAgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjYsIDEyOCwgODYsIDQ4LCAKKyAgICA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAxMjgsIDg2LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NiwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY3LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDczLCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcwLCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgODYsIDQ4LCA0OCwgNDksIAorICAgIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCA4NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAxMjgsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCAKKyAgICA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIAorICAgIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgCisgICAgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAKKyAgICAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCAKKyAgICA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCAKKyAgICA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCAKKyAgICA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIAorICAgIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIAorICAgIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgCisgICAgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIAorICAgIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgCisgICAgODAsIDgzLCA3MywgNjgsIDY5LCA0NSwgNjgsIDc5LCA4NywgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg1LCAKKyAgICA4MCwgODAsIDY5LCA4MiwgMTI4LCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIAorICAgIDczLCA4OSwgNjUsIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODUsIDc5LCA3OCwgCisgICAgMTI4LCA4NSwgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDc1LCAKKyAgICA3OCwgNzksIDg3LCA3OCwgMTI4LCA4NSwgNzgsIDc1LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCA2OSwgODIsIDgzLCA2NSwgCisgICAgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIDc4LCA3MywgMjEyLCA4NSwgCisgICAgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgNzAsIDc5LCA4MiwgNzcsIAorICAgIDEyOCwgODUsIDc4LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDczLCA2NywgNzksIDgyLCAyMDYsIDg1LCA3OCwgCisgICAgNjgsIDIwNywgODUsIDc4LCA2OCwgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCAKKyAgICA3OCwgMTk3LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIAorICAgIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgCisgICAgMTkzLCA4NSwgNzgsIDY3LCA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY2LCA3NiwgNjksIDc4LCAKKyAgICA2OCwgNjksIDE5NiwgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDY4LCAxMjgsIDg1LCA3OCwgNjUsIAorICAgIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIDEyOCwgODUsIDIwNiwgODUsIAorICAgIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgNjUsIDEyOCwgCisgICAgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAxMjgsIDg1LCA3NSwgODUsIAorICAgIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA4NSwgCisgICAgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgNzgsIDc4LCAxMjgsIDg1LCAKKyAgICA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzIsIDY4LCAxMjgsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAogICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAogICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCiAgICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCkBAIC01MzgsNjggKzU0MSw3MSBAQAogICAgIDg3LCA3OSwgNDUsIDY5LCAyMDUsIDg0LCA4NywgNzksIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODQsIDg3LCA3MywgCiAgICAgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA4NywgNzMsIDgzLCA4NCwgNjksIDE5NiwgODQsIDg3LCA3MywgNzMsIAogICAgIDEyOCwgODQsIDg3LCA3MywgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCA3OSwgMTI4LCA4NCwgCi0gICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIAotICAgIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgCi0gICAgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIAotICAgIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgCi0gICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIAotICAgIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgCi0gICAgODQsIDg3LCA2OSwgNzYsIDg2LCAxOTcsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCA4MywgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3NiwgNzAsIDg0LCA3MiwgMTI4LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIAotICAgIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgCi0gICAgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NSwgODQsIDg0LCAKLSAgICA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIDEyOCwgODQsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgMTI4LCA4NCwgCi0gICAgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCAKLSAgICA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAyMDAsIDg0LCA4NSwgODIsIAotICAgIDc1LCA3MywgMTk1LCA4NCwgODUsIDgyLCA3NSwgNjksIDg5LCAxMjgsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIDEyOCwgCi0gICAgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIDg0LCAKLSAgICAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIDg0LCAKLSAgICA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIAotICAgIDg0LCA4NSwgMjA1LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgCi0gICAgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgCi0gICAgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjYsIDEyOCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCAKLSAgICA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgCi0gICAgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCAKLSAgICA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIAotICAgIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgCi0gICAgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIAotICAgIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCAKLSAgICA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NiwgMTI4LCAKLSAgICA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIAotICAgIDY1LCAxMjgsIDg0LCA4MywgNzksIDIxNCwgODQsIDgzLCA3MywgODUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgCi0gICAgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCAKLSAgICA3OSwgNzksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIAotICAgIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDY5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgCi0gICAgODMsIDcyLCA2NSwgMTk0LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCAKLSAgICA2OSwgNjksIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIAotICAgIDY1LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCAKLSAgICA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIAotICAgIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgCi0gICAgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTQsIAotICAgIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTIsIDEyOCwgCi0gICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTEsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ5LCAxMjgsIDg0LCAKLSAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU2LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTQsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MiwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTEsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUwLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDgsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIAotICAgIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgCi0gICAgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAotICAgIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCi0gICAgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgCisgICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCAyMDcsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIAorICAgIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgCisgICAgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgNzgsIDg0LCA3MywgNjksIDg0LCA3MiwgODMsIDEyOCwgODQsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA3MywgNjksIDg0LCA3MiwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgCisgICAgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIAorICAgIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIAorICAgIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgNjksIDY4LCA3OSwgCisgICAgMTI4LCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NSwgCisgICAgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAyMDAsIAorICAgIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA4NCwgODUsIDgyLCA3NSwgNjksIDg5LCAxMjgsIDg0LCA4NSwgODIsIDY2LCA2NSwgCisgICAgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgCisgICAgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAKKyAgICAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY2LCA3NiwgNjksIDIxMCwgODQsIAorICAgIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgCisgICAgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCAKKyAgICA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCAKKyAgICA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIAorICAgIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgCisgICAgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCAKKyAgICA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIAorICAgIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgCisgICAgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgCisgICAgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgCisgICAgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAKKyAgICAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIAorICAgIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIAorICAgIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgCisgICAgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgCisgICAgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIAorICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgCisgICAgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIAorICAgIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgCisgICAgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAKKyAgICA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIAorICAgIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCAKKyAgICA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIAorICAgIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgCisgICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgCisgICAgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIAorICAgIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCAKKyAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCAKKyAgICA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCAKICAgICAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIAogICAgIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgCiAgICAgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIApAQCAtNjg4LDI0OSArNjk0LDI1MCBAQAogICAgIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgCiAgICAgNjksIDQ1LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCAyMTAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDgwLCA2OSwgODIsIAogICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2OSwgCi0gICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjcsIDczLCAKLSAgICA4MiwgNjcsIDc2LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIAotICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgCi0gICAgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIAotICAgIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIAotICAgIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDc5LCA3NywgMTI4LCA4NCwgNzIsIDc5LCA3NCwgMTI4LCA4NCwgCi0gICAgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCAKLSAgICA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgNDUsIDgzLCA4NCwgNjUsIAotICAgIDcxLCAxOTcsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCA3OCwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCAKLSAgICA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDczLCA2NywgMjAzLCA4NCwgNzIsIDczLCA2NSwgNjYsIDEyOCwgODQsIAotICAgIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAKLSAgICAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIAotICAgIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA3NywgNjksIDg0LCA2OSwgODIsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODIsIDc3LCA3OSwgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIAotICAgIDgyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgCi0gICAgODQsIDczLCA4MywgNzcsIDc5LCAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCAKLSAgICA4NCwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgNjksIDY1LCAxMjgsIDg0LCA3MiwgMTk3LCAKLSAgICA4NCwgNzIsIDY1LCA4NywgMTI4LCA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIAotICAgIDcyLCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCAKLSAgICA2NSwgNzQsIDEyOCwgODQsIDcyLCA2NSwgMjAxLCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIAotICAgIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgCi0gICAgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMjEyLCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCAKLSAgICA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIAotICAgIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCAKLSAgICA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIAotICAgIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCAKLSAgICA4NCwgMjAwLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIAotICAgIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgCi0gICAgNjksIDgyLCA2NSwgMTI4LCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAKLSAgICAyMDYsIDg0LCA2OSwgODMsIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIAotICAgIDY5LCA4MCwgMTI4LCA4NCwgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgCi0gICAgNzgsIDIxMywgODQsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAKLSAgICA2OSwgMTI4LCA4NCwgNjksIDc4LCA4MywgMTk3LCA4NCwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCAKLSAgICA2OSwgNzgsIDc4LCA3MywgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIAotICAgIDY5LCA3NiwgODUsIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgCi0gICAgNjksIDc2LCA3MywgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCAKLSAgICA2OSwgNzYsIDY5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCAKLSAgICA4NCwgNjksIDc2LCA2OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIAotICAgIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgCi0gICAgMjAwLCA4NCwgNjksIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgCi0gICAgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCAKLSAgICA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIAotICAgIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgCi0gICAgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgCi0gICAgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgCi0gICAgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCAKLSAgICA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIAotICAgIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgCi0gICAgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCAKLSAgICA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIAotICAgIDEyOCwgODQsIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgCi0gICAgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIAotICAgIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIAotICAgIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIAotICAgIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAKLSAgICAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgCi0gICAgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAKLSAgICAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCAKLSAgICA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIAotICAgIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgCi0gICAgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAKLSAgICAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgCi0gICAgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgCi0gICAgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCAKLSAgICA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIAotICAgIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgCi0gICAgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCAKLSAgICA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgCi0gICAgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgCi0gICAgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIAotICAgIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIAotICAgIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCAKLSAgICA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIAotICAgIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIAotICAgIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCAKLSAgICA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIAotICAgIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgCi0gICAgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAKLSAgICAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIAotICAgIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAKLSAgICAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCi0gICAgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCAKLSAgICA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKLSAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgCi0gICAgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCAKLSAgICA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgCi0gICAgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgCi0gICAgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCAKLSAgICA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCAKLSAgICA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIAotICAgIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCAKLSAgICA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIAotICAgIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgCi0gICAgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIAotICAgIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIAotICAgIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgCi0gICAgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCAKLSAgICA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgCi0gICAgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCAKLSAgICA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIAotICAgIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCi0gICAgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAKLSAgICAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCAKLSAgICA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIAotICAgIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgCi0gICAgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCAKLSAgICA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCAKLSAgICA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCi0gICAgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAotICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCi0gICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKLSAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCi0gICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAotICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAotICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4MywgCi0gICAgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIDEyOCwgODMsIDg1LCAKLSAgICA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCAKLSAgICA4OSwgMTI4LCA4MywgODQsIDg1LCA2OCwgNzMsIDIwNywgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIAotICAgIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCAKLSAgICA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgNjgsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCAKLSAgICA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIAotICAgIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIAotICAgIDg0LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIAotICAgIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIAotICAgIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIDgyLCA4NSwgMjA4LCA4MywgCi0gICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCAKLSAgICA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg0LCA3MywgNjcsIAotICAgIDIwMywgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIAotICAgIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgCi0gICAgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIAotICAgIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgNzcsIDgwLCA2OSwgMTk2LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCAKLSAgICA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCAKLSAgICA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIAotICAgIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIAotICAgIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgCi0gICAgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgCi0gICAgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIAotICAgIDczLCAxMjgsIDgzLCA4MywgNzIsIDczLCA3OCwgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgCi0gICAgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCi0gICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCAKLSAgICA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIAotICAgIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCisgICAgNDUsIDc2LCA2OSwgNzEsIDcxLCA2OSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCAKKyAgICA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIAorICAgIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgCisgICAgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCAKKyAgICA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgCisgICAgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAKKyAgICAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCAKKyAgICA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIDgzLCAxMjgsIDg0LCAKKyAgICA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCA3MSwgMTk3LCA4NCwgNzIsIAorICAgIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAorICAgIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCA3MiwgNjksIDg5LCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNjksIDg0LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgMjA2LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCA3MiwgNjksIDIxMSwgODQsIAorICAgIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKKyAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAorICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCisgICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgCisgICAgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIDc0LCAxMjgsIDg0LCA3MiwgCisgICAgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCA2NSwgNzgsIDE5MywgODQsIDcyLCAKKyAgICA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg0LCA2OSwgODgsIDg0LCAxMjgsIAorICAgIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCAKKyAgICA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgODQsIDIwMCwgODQsIDY5LCA4NCwgCisgICAgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgNjUsIDEyOCwgODQsIAorICAgIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgMjA2LCA4NCwgNjksIDgzLCAKKyAgICAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCA2OSwgODAsIDEyOCwgODQsIAorICAgIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIDc4LCAyMTMsIDg0LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgNjksIDEyOCwgODQsIDY5LCAKKyAgICA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgNzMsIAorICAgIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgCisgICAgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgNzMsIAorICAgIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCisgICAgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIDY5LCAKKyAgICA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgNjksIAorICAgIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgCisgICAgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDIwMCwgODQsIDY5LCAKKyAgICA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCisgICAgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIAorICAgIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgCisgICAgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAorICAgIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgCisgICAgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgCisgICAgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCAKKyAgICA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIAorICAgIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIDEyOCwgODQsIDY1LCAyMTMsIAorICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgCisgICAgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAxMjgsIDg0LCA2NSwgODIsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIAorICAgIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgCisgICAgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgCisgICAgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAKKyAgICA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIAorICAgIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgCisgICAgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIAorICAgIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgCisgICAgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgCisgICAgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIAorICAgIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCAKKyAgICA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIAorICAgIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIAorICAgIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCAKKyAgICA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIAorICAgIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgCisgICAgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgCisgICAgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgCisgICAgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgCisgICAgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCAKKyAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgCisgICAgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgCisgICAgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgCisgICAgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgCisgICAgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCAKKyAgICA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIAorICAgIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIAorICAgIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgCisgICAgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIAorICAgIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgCisgICAgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCAKKyAgICA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKKyAgICA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAorICAgIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIAorICAgIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIAorICAgIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgCisgICAgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCAKKyAgICA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIAorICAgIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgCisgICAgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIAorICAgIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgCisgICAgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgCisgICAgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCAKKyAgICA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgCisgICAgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIAorICAgIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgCisgICAgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCAKKyAgICA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgCisgICAgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCAKKyAgICA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCAKKyAgICA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIAorICAgIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCAKKyAgICA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCAKKyAgICA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAKKyAgICAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCAKKyAgICA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgCisgICAgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgCisgICAgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCAKKyAgICA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIAorICAgIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgCisgICAgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCAKKyAgICA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIAorICAgIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgCisgICAgODUsIDY2LCA4MywgNjksIDIxMiwgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCAKKyAgICA4NSwgNzgsIDY3LCA4NCwgNzMsIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgCisgICAgODUsIDY2LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzMsIDg0LCA3OSwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIAorICAgIDgyLCA3OSwgODUsIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgCisgICAgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAKKyAgICAxMjgsIDgzLCA4NSwgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgCisgICAgODQsIDg1LCA3MCwgNzAsIDY5LCAxOTYsIDgzLCA4NCwgODUsIDY4LCA4OSwgMTI4LCA4MywgODQsIDg1LCA2OCwgNzMsIAorICAgIDIwNywgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgCisgICAgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgCisgICAgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDczLCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgCisgICAgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCAKKyAgICA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCAKKyAgICA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIAorICAgIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgCisgICAgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIAorICAgIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIAorICAgIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIAorICAgIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgCisgICAgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIDgyLCA4NSwgMjA4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCAKKyAgICA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIAorICAgIDg0LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg0LCA3MywgNjcsIDIwMywgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgCisgICAgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIAorICAgIDE5NSwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgCisgICAgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCAKKyAgICA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIAorICAgIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIAorICAgIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCAKKyAgICA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIAorICAgIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzcsIDgwLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAKKyAgICAxOTgsIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAKKyAgICAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIAorICAgIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgCisgICAgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgCisgICAgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAxMjgsIDgzLCAKKyAgICA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCA4MywgNzIsIAorICAgIDczLCA3OCwgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgCisgICAgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCAKKyAgICA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCisgICAgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIAorICAgIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgCisgICAgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgCisgICAgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCAKKyAgICA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDczLCA2OCwgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAogICAgIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgCiAgICAgODIsIDY5LCA4MywgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAKICAgICAxMjgsIDgzLCA4MCwgODksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCAKQEAgLTk2OSw3NyArOTc2LDc5IEBACiAgICAgNjUsIDc4LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCAKICAgICA2OSwgMTI4LCA4MywgNzgsIDc5LCA4NywgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIAogICAgIDEyOCwgODMsIDc4LCA3OSwgMjE1LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIAotICAgIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3NywgNzMsIDc2LCAxOTcsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgCi0gICAgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDg3LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIAotICAgIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgCi0gICAgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCAKLSAgICA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIAotICAgIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgCi0gICAgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCA4OCwgODQsIDg5LCAKLSAgICA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIAotICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAKLSAgICAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIAotICAgIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCAKLSAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgMTk2LCAKLSAgICA4MywgNzMsIDc4LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIDEyOCwgODMsIDczLCAKLSAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCi0gICAgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKLSAgICAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNjgsIAotICAgIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDgzLCAKLSAgICAxMjgsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgMjExLCA4MywgNzMsIDc3LCA4MCwgNzYsIAotICAgIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgCi0gICAgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCAKLSAgICA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIAotICAgIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgCi0gICAgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIAotICAgIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIAotICAgIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgCi0gICAgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgCi0gICAgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OSwgMTI4LCAKLSAgICA4MywgNzMsIDY4LCAxOTcsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIAotICAgIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgCi0gICAgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCi0gICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgCi0gICAgNzIsIDg1LCA4NCwgODQsIDc2LCA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCAKLSAgICA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIAotICAgIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgCi0gICAgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIAotICAgIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgCi0gICAgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAorICAgIDc4LCA2OSwgNjksIDkwLCA3MywgNzgsIDE5OSwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgCisgICAgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCAKKyAgICA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNzMsIDc2LCAxOTcsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDg3LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIAorICAgIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgCisgICAgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIAorICAgIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgCisgICAgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2OSwgNjksIDIwOCwgODMsIDc2LCA2NSwgODYsIDc5LCAKKyAgICA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIAorICAgIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgCisgICAgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCAKKyAgICA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCAKKyAgICA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIAorICAgIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCA4OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAKKyAgICAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgCisgICAgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCAKKyAgICA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIAorICAgIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgCisgICAgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIAorICAgIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIAorICAgIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCAKKyAgICA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgMTk2LCA4MywgNzMsIDc4LCA3OSwgNzYsIDc5LCA3MSwgNzMsIAorICAgIDY3LCA2NSwgMjA0LCA4MywgNzMsIDc4LCA3OCwgODksIDczLCA3MywgODksIDcyLCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIAorICAgIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgCisgICAgODUsIDgzLCAxMjgsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgMjExLCA4MywgNzMsIDc3LCAKKyAgICA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIAorICAgIDczLCA3NiwgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgCisgICAgNzgsIDcxLCA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgCisgICAgNTEsIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgCisgICAgNzMsIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCAKKyAgICA3MywgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCAKKyAgICA4MywgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDY4LCAxOTcsIDgzLCA3MywgNjgsIDY4LCA3MiwgNzMsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCAKKyAgICA2NSwgNzcsIDEyOCwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIAorICAgIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgNzMsIDY1LCAxMjgsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIAorICAgIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCAKKyAgICA3MiwgODcsIDE5NywgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODYsIAorICAgIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDg0LCA3NiwgCisgICAgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgNjksIDgxLCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCA4NSwgODIsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCA3MiwgMjEzLCA4MywgNzIsIAorICAgIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDgyLCA4NSwgNzEsIDEyOCwgCisgICAgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgODIsIDczLCAKKyAgICA3MywgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIAorICAgIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCiAgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgzLCAKICAgICA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgCiAgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCAKQEAgLTEwNzcsNTQzICsxMDg2LDU0OCBAQAogICAgIDEyOCwgODMsIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgCiAgICAgNzIsIDY1LCA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCAKICAgICA4MywgNzIsIDY1LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIAotICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgCi0gICAgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgCi0gICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCAKLSAgICA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIAotICAgIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIAotICAgIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIAotICAgIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgCi0gICAgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIAotICAgIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIAotICAgIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgCi0gICAgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCAKLSAgICA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIAotICAgIDg2LCA3MywgNjcsIDE5NywgODMsIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgCi0gICAgODMsIDY5LCA4MiwgNzMsIDcwLCAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDgzLCAKLSAgICA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA4NSwgODAsIDc2LCAxOTcsIDgzLCA2OSwgODAsIAotICAgIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgCi0gICAgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCAKLSAgICA3MywgMTI4LCA4MywgNjksIDc3LCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgCi0gICAgMTI4LCA4MywgNjksIDc3LCA3NSwgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCAKLSAgICA3NywgNzMsIDgzLCA3OSwgNzAsIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA2OSwgNzcsIDczLCA3NywgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCAKLSAgICA2NywgMjEyLCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIAotICAgIDc2LCA3OSwgMjA2LCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgCi0gICAgNzMsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA0NSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIDgzLCA2OSwgCi0gICAgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgNjksIDcxLCAKLSAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA4NiwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIAotICAgIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCAKLSAgICA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIAotICAgIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY3LCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIAotICAgIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgCi0gICAgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCAKLSAgICA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA3OSwgNzgsIDEyOCwgODMsIAotICAgIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAKLSAgICAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIAotICAgIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKLSAgICAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIAotICAgIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgCi0gICAgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCAKLSAgICA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA4MiwgNjUsIAotICAgIDgzLCA3MiwgODQsIDgyLCAxOTMsIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIAotICAgIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgNjksIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgCi0gICAgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCAKLSAgICA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCAKLSAgICA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIAotICAgIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgCi0gICAgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCAKLSAgICA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIAotICAgIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAKLSAgICAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIAotICAgIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAKLSAgICAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIAotICAgIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCAKLSAgICA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIAotICAgIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgNzksIDg0LCAKLSAgICAxMjgsIDgzLCA2NSwgNzUsIDcyLCAxOTMsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIAotICAgIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgCi0gICAgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCAKLSAgICA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIAotICAgIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNzAsIDY5LCA4NCwgCi0gICAgMjE3LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgCi0gICAgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIAotICAgIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgCi0gICAgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCAKLSAgICA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCAKLSAgICA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIAotICAgIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIAotICAgIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgCi0gICAgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgCi0gICAgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgCi0gICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgCi0gICAgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgCi0gICAgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgCi0gICAgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAKLSAgICAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCAKLSAgICA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIAotICAgIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgCi0gICAgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKLSAgICA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCAKLSAgICA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIAotICAgIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIDg1LCA3NiwgNjUsIDczLCAxMjgsIDgyLCA4NSwgCi0gICAgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCA4MiwgODUsIDcxLCA2NiwgMjE3LCAKLSAgICA4MiwgODUsIDY4LCA3MywgNzcsIDY5LCA3OCwgODQsIDE5MywgODIsIDg1LCA2NiwgNzYsIDE5NywgODIsIDg1LCAxOTQsIAotICAgIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgCi0gICAgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgODIsIDY1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAKLSAgICAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIDgyLCAKLSAgICA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgMTI4LCAKLSAgICA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgODIsIAotICAgIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgODIsIAotICAgIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDc5LCA4NywgCi0gICAgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCAKLSAgICA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgCi0gICAgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDc5LCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCAKLSAgICA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc3LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA4MiwgNzksIDc3LCA2NSwgMjA2LCA4MiwgCi0gICAgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCAKLSAgICA3OSwgNzYsIDc2LCA2OSwgNjgsIDQ1LCA4NSwgMjA4LCA4MiwgNzksIDcyLCA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIAotICAgIDcxLCAxMjgsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIAotICAgIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA3OSwgMjEyLCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgCi0gICAgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCAKLSAgICA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCAKLSAgICA4MiwgNzcsIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDczLCAxMjgsIDgyLCAKLSAgICA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgCi0gICAgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDgwLCA3NiwgMTk3LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCAKLSAgICA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgODIsIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIAotICAgIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIDY1LCAxMjgsIDgyLCA3MywgCi0gICAgNzcsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDcxLCA4NiwgNjksIDY4LCA3MywgMTk1LCAKLSAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCA3MiwgODQsIDcyLCA2NSwgCi0gICAgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgCi0gICAgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgCi0gICAgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgCi0gICAgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgCi0gICAgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIAotICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCAKLSAgICA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIAotICAgIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY2LCA2NiwgCi0gICAgNzksIDIwNiwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgCi0gICAgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzIsIDEyOCwgODIsIDcxLCA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgCi0gICAgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgODMsIDY3LCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIAotICAgIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgCi0gICAgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCAKLSAgICA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIAotICAgIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgCi0gICAgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCAKLSAgICA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIAotICAgIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgCi0gICAgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCAKLSAgICA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIAotICAgIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgCi0gICAgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIAotICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDczLCA3OCwgNjgsIDY5LCAyMTAsIAotICAgIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgCi0gICAgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCAKLSAgICA4OCwgNjksIDY4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgCi0gICAgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDczLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgCi0gICAgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIAotICAgIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgNjUsIDEyOCwgODIsIDY5LCAKLSAgICA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDgyLCA2OSwgNjgsIAotICAgIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDczLCAKLSAgICA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgNzMsIDc2LCA3MywgNzgsIAotICAgIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4MiwgNjksIDY3LCAKLSAgICA4MiwgNjksIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNzMsIDc4LCAxOTksIAotICAgIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCAxMjgsIDgyLCA2OSwgCi0gICAgNjcsIDc5LCA4MiwgMTk2LCA4MiwgNjksIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA4MCwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNjksIAotICAgIDczLCA4NiwgNjksIDIxMCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDY1LCA3NiwgCi0gICAgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgMTI4LCA4MiwgNjksIDY1LCA2NywgNzIsIAotICAgIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgODMsIDE5MywgODIsIDY1LCA4OSwgODMsIAotICAgIDEyOCwgODIsIDY1LCA4OSwgMjExLCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAxOTMsIDgyLCA2NSwgODQsIDY1LCAKLSAgICAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIDEyOCwgODIsIDY1LCA4MywgNzksIAotICAgIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIDgyLCA2NSwgODAsIDczLCA4MywgCi0gICAgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgCi0gICAgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIAotICAgIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAKLSAgICAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIAotICAgIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgCi0gICAgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgNjksIAotICAgIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgCi0gICAgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCAKLSAgICA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDgyLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIDgyLCA2NSwgCi0gICAgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgCi0gICAgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCA4MiwgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgODIsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIDgyLCA0OCwgCi0gICAgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgODIsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCA0NSwgNjcsIAotICAgIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCA4MSwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCA4MSwgODksIAotICAgIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIDEyOCwgODEsIAotICAgIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCA4MSwgODcsIAotICAgIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCA4MSwgODUsIAotICAgIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCA4MSwgODUsIAotICAgIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIDc5LCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgODEsIAotICAgIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCA2NywgCi0gICAgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIDc4LCAKLSAgICA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgNzYsIAotICAgIDIxMiwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIAotICAgIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAKLSAgICAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgODUsIDgwLCA3NiwgMTk3LCA4MSwgCi0gICAgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDIxMiwgODEsIDg1LCAKLSAgICA2NSwgNjgsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIAotICAgIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCAKLSAgICA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIAotICAgIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAKLSAgICAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAKLSAgICAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCAKLSAgICA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgODAsIDcyLCAxMjgsIAotICAgIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCA4MSwgNzIsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDY5LCAxMjgsIAotICAgIDgxLCA3MiwgNjUsIDg1LCAxMjgsIDgxLCA3MiwgNjUsIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgCi0gICAgMTI4LCA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgCi0gICAgODksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgODEsIDY1LCA4MiwgNzgsIDY5LCAKLSAgICAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCA3MiwgMTI4LCA4MSwgNjUsIDc3LCAKLSAgICA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgMjExLCA4MSwgNjUsIDc2LCAxOTMsIDgxLCA2NSwgNzMsIAotICAgIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNzAsIDEyOCwgODEsIDY1LCAxOTgsIAotICAgIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgNTUsIDEyOCwgODEsIDQ4LCA0OCwgNTQsIDEyOCwgODEsIDQ4LCAKLSAgICA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgODEsIDQ4LCA0OCwgNTEsIDEyOCwgODEsIDQ4LCA0OCwgNTAsIAotICAgIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAxMjgsIDgwLCA4OSwgODgsIDEyOCwgODAsIDg5LCA4NCwgMTI4LCAKLSAgICA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAxMjgsIDgwLCA4OSwgODAsIDEyOCwgODAsIDg3LCA3OSwgODksIAotICAgIDEyOCwgODAsIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCA3OSwgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODAsIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCA2OSwgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgODAsIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCAKLSAgICA4MCwgODUsIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAotICAgIDg1LCA4NCwgMTI4LCA4MCwgODUsIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgCi0gICAgNzIsIDgwLCA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgODAsIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgCi0gICAgNjUsIDc3LCA2NSwgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIAotICAgIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgCi0gICAgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgODAsIDEyOCwgCi0gICAgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDcwLCA3MCwgNjksIDY4LCAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCAKLSAgICA2NywgNzUsIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCA4NSwgMTk0LCA4MCwgODUsIDY1LCA4MSwgMTI4LCAKLSAgICA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCAKLSAgICA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCAKLSAgICA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDY1LCA3NiwgODQsIDY5LCAyMTAsIDgwLCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCAKLSAgICA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIDY5LCA2NywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIAotICAgIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAotICAgIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgCi0gICAgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIAotICAgIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIAotICAgIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgMTk3LCA4MCwgODIsIDczLCA4NiwgCi0gICAgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCAKLSAgICA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIAotICAgIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgCi0gICAgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCAKLSAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIAotICAgIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgCi0gICAgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIAotICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgCi0gICAgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIAotICAgIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgCi0gICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIAotICAgIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCAKLSAgICA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIAotICAgIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIAotICAgIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIAotICAgIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgCi0gICAgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIAotICAgIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgCi0gICAgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIAotICAgIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCAKLSAgICA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIAotICAgIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIAotICAgIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDczLCA4MywgCisgICAgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDc1LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIAorICAgIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgCisgICAgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCAKKyAgICA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDc2LCA3OSwgMjE1LCA4MywgNzIsIDY1LCA3NSwgODQsIAorICAgIDczLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDcyLCA2NSwgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDg0LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDcwLCAyMTIsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgCisgICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgODMsIDcyLCA2NSwgMTgyLCA4MywgNzIsIAorICAgIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIAorICAgIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIAorICAgIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCAKKyAgICA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgCisgICAgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgyLCA3MywgNzAsIAorICAgIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgCisgICAgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCAKKyAgICA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgCisgICAgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgCisgICAgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCAKKyAgICA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgCisgICAgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIAorICAgIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgCisgICAgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDczLCA2OSwgMTI4LCA4MywgNjksIDc2LCA3MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgCisgICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgCisgICAgMTkzLCA4MywgNjksIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgCisgICAgODMsIDY5LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAKKyAgICAxMjgsIDgzLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgNjksIDY3LCA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIAorICAgIDc4LCA4NCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgCisgICAgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCAKKyAgICA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIAorICAgIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgzLCA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDc5LCA3OSwgODQsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDczLCA4MywgCisgICAgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCAKKyAgICA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAorICAgIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgCisgICAgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCAKKyAgICA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIAorICAgIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgCisgICAgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCAKKyAgICA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCAKKyAgICA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCAKKyAgICA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCAKKyAgICA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIAorICAgIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgCisgICAgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCAKKyAgICA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgCisgICAgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgCisgICAgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIAorICAgIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgCisgICAgNjUsIDY4LCAxMjgsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCAKKyAgICA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA3NSwgNzksIAorICAgIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDcyLCAxOTMsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgCisgICAgNzUsIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIAorICAgIDEyOCwgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgCisgICAgMTI4LCA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNzAsIAorICAgIDY5LCA4NCwgMjE3LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgCisgICAgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIAorICAgIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgCisgICAgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCAKKyAgICA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIAorICAgIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIAorICAgIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIAorICAgIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIAorICAgIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIAorICAgIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgCisgICAgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCAKKyAgICA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCAKKyAgICA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIAorICAgIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIAorICAgIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCA3NywgCisgICAgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIDg1LCAKKyAgICA3NiwgNjUsIDczLCAxMjgsIDgyLCA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgCisgICAgMTI4LCA4MiwgODUsIDcxLCA2NiwgMjE3LCA4MiwgODUsIDY4LCA3MywgNzcsIDY5LCA3OCwgODQsIDE5MywgODIsIDg1LCAKKyAgICA2NiwgNzYsIDE5NywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKKyAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAorICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgODIsIAorICAgIDY1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIAorICAgIDgyLCA4MiwgNzksIDc5LCAxMjgsIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgCisgICAgMTI4LCA4MiwgODIsIDY5LCA4OCwgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDY5LCA3MiwgMTI4LCA4MiwgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgCisgICAgODIsIDgyLCA2NSwgODgsIDEyOCwgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCAKKyAgICA2NSwgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgCisgICAgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCAKKyAgICA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIAorICAgIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgCisgICAgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc3LCA2NSwgNzgsIDczLCA2NSwgMjA2LCAKKyAgICA4MiwgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgODIsIAorICAgIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzYsIDc2LCA2OSwgNjgsIDQ1LCA4NSwgMjA4LCA4MiwgNzksIDcyLCA3MywgCisgICAgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDcxLCAxMjgsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAKKyAgICAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA3OSwgMjEyLCA4MiwgNzksIDY2LCAKKyAgICA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIAorICAgIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgCisgICAgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgCisgICAgMTI4LCA4MiwgNzYsIDczLCAxMjgsIDgyLCA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIAorICAgIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgCisgICAgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDgyLCA3MywgODMsIDcyLCAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDgwLCA3NiwgMTk3LCAKKyAgICA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgODIsIAorICAgIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgCisgICAgNjYsIDY1LCAxMjgsIDgyLCA3MywgNzcsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDcxLCAKKyAgICA4NiwgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCAKKyAgICA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIAorICAgIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCAKKyAgICA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA3MCwgCisgICAgNzYsIDY5LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAorICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIAorICAgIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgCisgICAgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCAKKyAgICA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIAorICAgIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIAorICAgIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgCisgICAgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAyMDcsIDgyLCA3MiwgNzMsIDc4LCAKKyAgICA3OSwgNjcsIDY5LCA4MiwgNzksIDgzLCAxMjgsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIAorICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgCisgICAgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIAorICAgIDY5LCA2OCwgNDUsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgCisgICAgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4MiwgNjksIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIAorICAgIDgyLCAyMDYsIDgyLCA2OSwgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgCisgICAgMTI4LCA4MiwgNjksIDg0LCA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIAorICAgIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDY5LCA4MywgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCAKKyAgICA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCAKKyAgICA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIAorICAgIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgCisgICAgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCAKKyAgICA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIAorICAgIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIAorICAgIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCAKKyAgICA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgCisgICAgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCAKKyAgICA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIAorICAgIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgCisgICAgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCAKKyAgICA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIAorICAgIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgCisgICAgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCAKKyAgICA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIAorICAgIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgCisgICAgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIAorICAgIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAKKyAgICA2OCwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgCisgICAgMTk3LCA4MiwgNjksIDY3LCA2OSwgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIAorICAgIDEyOCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgCisgICAgODIsIDY5LCA2NSwgNjcsIDcyLCAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDgyLCA2NSwgODksIDgzLCAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA4NCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgCisgICAgMTkzLCA4MiwgNjUsIDg0LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAKKyAgICAxMjgsIDgyLCA2NSwgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCAKKyAgICA4MiwgNjUsIDgwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgCisgICAgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIAorICAgIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgCisgICAgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCAKKyAgICA3NiwgODcsIDY1LCAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIAorICAgIDY4LCA2NSwgMTI4LCA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAKKyAgICAxMjgsIDgyLCA2NSwgNzAsIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIAorICAgIDY3LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgCisgICAgNjUsIDY4LCAyMDEsIDgyLCA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgCisgICAgODIsIDY1LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCAKKyAgICA4NCwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA4MiwgNjUsIDUxLCAxMjgsIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgODIsIDQ4LCA1MCwgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgODIsIDQ4LCA0OSwgNTYsIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDgyLCA0OCwgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgCisgICAgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDgyLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgCisgICAgODQsIDEyOCwgODEsIDg5LCA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgCisgICAgNzksIDEyOCwgODEsIDg5LCA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgCisgICAgNjUsIDY1LCAxMjgsIDgxLCA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgODEsIDg3LCA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgCisgICAgODgsIDEyOCwgODEsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgCisgICAgODQsIDEyOCwgODEsIDg1LCA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MSwgODUsIDgyLCAxMjgsIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIAorICAgIDE5NywgODEsIDg1LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgxLCA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MywgODMsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgCisgICAgMTkzLCA4MSwgODUsIDczLCA3OCwgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAKKyAgICAyMTEsIDgxLCA4NSwgNzMsIDc2LCAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCAKKyAgICA4MSwgODUsIDczLCAxMjgsIDgxLCA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgCisgICAgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIAorICAgIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgCisgICAgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCAKKyAgICA4MiwgODQsIDY5LCA4MiwgMTI4LCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIAorICAgIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgCisgICAgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIAorICAgIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAKKyAgICAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCAKKyAgICA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgCisgICAgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgCisgICAgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA3MCwgCisgICAgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgCisgICAgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCAKKyAgICA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCAKKyAgICA4MSwgNzIsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDY5LCAxMjgsIDgxLCA3MiwgNjUsIDg1LCAxMjgsIDgxLCA3MiwgNjUsIAorICAgIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgMTI4LCA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIAorICAgIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgODksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIAorICAgIDg0LCA2NSwgNzgsIDEyOCwgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgCisgICAgMTI4LCA4MSwgNjUsIDgwLCA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCAKKyAgICA4NCwgMjExLCA4MSwgNjUsIDc2LCAxOTMsIDgxLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIAorICAgIDczLCAxMjgsIDgxLCA2NSwgNzAsIDEyOCwgODEsIDY1LCAxOTgsIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIAorICAgIDY1LCA3MywgMTI4LCA4MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgODEsIDQ4LCA0OCwgNTQsIDEyOCwgODEsIDQ4LCA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgODEsIDQ4LCA0OCwgNTEsIDEyOCwgODEsIDQ4LCA0OCwgNTAsIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAKKyAgICAxMjgsIDgwLCA4OSwgODgsIDEyOCwgODAsIDg5LCA4NCwgMTI4LCA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAKKyAgICAxMjgsIDgwLCA4OSwgODAsIDEyOCwgODAsIDg3LCA3OSwgODksIDEyOCwgODAsIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCAKKyAgICA3OSwgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIDEyOCwgODAsIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIDY1LCAxMjgsIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgCisgICAgODAsIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCAKKyAgICA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDIxMiwgODAsIAorICAgIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgCisgICAgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCAKKyAgICA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgNjUsIDc3LCA2NSwgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIAorICAgIDg5LCAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIAorICAgIDgwLCA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgCisgICAgMTI4LCA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCAKKyAgICA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgODAsIDg1LCA3NywgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDcwLCA3MCwgNjksIDY4LCAKKyAgICAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NywgNzUsIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCAKKyAgICA4NSwgMTk0LCA4MCwgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCAKKyAgICA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCAKKyAgICA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCisgICAgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAorICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDY1LCAKKyAgICA3NiwgODQsIDY5LCAyMTAsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgODQsIAorICAgIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIDY5LCA2NywgCisgICAgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCAKKyAgICA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCAKKyAgICA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIAorICAgIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCAKKyAgICA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIAorICAgIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCAKKyAgICA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgCisgICAgMTk3LCA4MCwgODIsIDczLCA4NiwgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCAKKyAgICA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCAKKyAgICA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCA2OSwgODYsIDczLCAKKyAgICA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgNjksIDg0LCAxMjgsIAorICAgIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MywgNjcsIDgyLCAKKyAgICA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzEsIDc4LCA2NSwgNzgsIAorICAgIDIxMiwgODAsIDgyLCA2OSwgNzAsIDY1LCA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAKKyAgICA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCAKKyAgICA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIAorICAgIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgCisgICAgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCAKKyAgICA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIAorICAgIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIAorICAgIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgCisgICAgODcsIDY5LCAyMTAsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCAKKyAgICA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgCisgICAgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCAKKyAgICA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIAorICAgIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgCisgICAgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIAorICAgIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIAorICAgIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgCisgICAgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzksIDEyOCwgODAsIDc5LCA3NiwgNzMsIDgzLCAKICAgICA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCAKICAgICA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIAogICAgIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgCkBAIC0xNjkxLDc2ICsxNzA1LDc4IEBACiAgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIAogICAgIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA2OSwgCiAgICAgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCAKLSAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIAotICAgIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCi0gICAgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCAKLSAgICA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIAotICAgIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCAKLSAgICA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgCi0gICAgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCAKLSAgICA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCAKLSAgICA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgCi0gICAgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCAKLSAgICA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgNjUsIAotICAgIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgCi0gICAgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIAotICAgIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgCi0gICAgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgODQsIDg0LCAKLSAgICA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIAotICAgIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgCi0gICAgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAotICAgIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIAotICAgIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgODAsIDY1LCA4MywgCi0gICAgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCAKLSAgICA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIAotICAgIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3NSwgCi0gICAgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCAKLSAgICA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIAotICAgIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgCi0gICAgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIAotICAgIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgCi0gICAgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCAKLSAgICA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgCi0gICAgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAotICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAKLSAgICAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIAotICAgIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgCi0gICAgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKLSAgICA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCAKLSAgICA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzIsIDc2LCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIAorICAgIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgCisgICAgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCAKKyAgICA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCAKKyAgICA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDczLCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCAKKyAgICA2NSwgMjA0LCA4MCwgNjksIDY1LCA3OCwgODUsIDg0LCA4MywgMTI4LCA4MCwgNjksIDY1LCA3NSwgMjExLCA4MCwgNjksIAorICAgIDY1LCA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgCisgICAgNzMsIDEyOCwgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgMjEzLCA4MCwgNjUsIAorICAgIDg0LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgCisgICAgNjUsIDg0LCAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCAKKyAgICA4NCwgMTI4LCA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIAorICAgIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIAorICAgIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCAKKyAgICA4NywgNzgsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDY5LCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgCisgICAgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCAKKyAgICA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIAorICAgIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCAKKyAgICA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIAorICAgIDY1LCA4MiwgNzUsIDEyOCwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgCisgICAgODQsIDczLCA3MSwgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCAKKyAgICA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDY5LCAyMTEsIDgwLCA2NSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIAorICAgIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCAKKyAgICA3NiwgNzMsIDgwLCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIAorICAgIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIAorICAgIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgCisgICAgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCAKKyAgICA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCAKKyAgICA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgCisgICAgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAogICAgIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgCi0gICAgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCAKLSAgICA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIAotICAgIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzcsIDg5LCA4MiwgNjksIDc4LCAxOTcsIDgwLCA2NSwgNzYsIDIwNSwgODAsIDY1LCAKLSAgICA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgODQsIAotICAgIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgCi0gICAgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDczLCA4MiwgCi0gICAgNjksIDE5NiwgODAsIDY1LCA3MywgNzgsIDg0LCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgODAsIDY1LCA3MywgMTI4LCAKLSAgICA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgzLCAxMjgsIAotICAgIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCA2NSwgCi0gICAgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCAKLSAgICA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCisgICAgODAsIDY1LCA3OCwgNjcsIDY1LCA3NSwgNjksIDgzLCAxMjgsIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgNjUsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCA3MSwgNzUsIAorICAgIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIDY5LCA3OCwgCisgICAgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgMTI4LCAKKyAgICA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCA4MCwgNjUsIAorICAgIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgNzcsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgCisgICAgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAKKyAgICAxMjgsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIAorICAgIDY1LCA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKICAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAogICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCiAgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKQEAgLTE3NzAsNDY0ICsxNzg2LDQ3MSBAQAogICAgIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgCiAgICAgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAKICAgICAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCAKLSAgICA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIAotICAgIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgCi0gICAgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDEyOCwgNzksIDg2LCAKLSAgICA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIAotICAgIDc2LCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCAKLSAgICA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIAotICAgIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2OSwgCi0gICAgODIsIDIxMSwgNzksIDg0LCA3MiwgNjksIDIxMCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCAKLSAgICA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIAotICAgIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgCi0gICAgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCAKLSAgICA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgCi0gICAgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCAKLSAgICA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIAotICAgIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIAotICAgIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgCi0gICAgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIAotICAgIDIxMCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIAotICAgIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCAyMDcsIDc5LCA4MCwgCi0gICAgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIAotICAgIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgNzgsIDEyOCwgNzksIDc5LCA5MCwgCi0gICAgNjksIDEyOCwgNzksIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCAKLSAgICA4NSwgMTI4LCA3OSwgNzksIDcyLCAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIAotICAgIDc2LCA3MywgMTI4LCA3OSwgNzgsIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIAotICAgIDc4LCA3NSwgNjUsIDgyLCAxMjgsIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgCi0gICAgNjUsIDIxNywgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCAKLSAgICA3MywgNzgsIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIAotICAgIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgCi0gICAgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCAKLSAgICA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIAotICAgIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgCi0gICAgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCAKLSAgICA3NiwgMTI4LCA3OSwgNzMsIDIwNCwgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgCi0gICAgNzksIDcxLCA3OSwgNzgsIDY5LCA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIAotICAgIDIwNSwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgCi0gICAgNzAsIDcwLCA3MywgNjcsIDE5NywgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgCi0gICAgNzksIDY5LCA2OSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDY4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgCi0gICAgNjcsIDg0LCA3OSwgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDg0LCAKLSAgICA2OSwgMjEyLCA3OSwgNjcsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3OSwgNjcsIDIxMCwgNzksIDY3LCA3NiwgNzksIAotICAgIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgCi0gICAgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCAKLSAgICA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIAotICAgIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgCi0gICAgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCAKLSAgICA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIAotICAgIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIAotICAgIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAKLSAgICA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIAotICAgIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIAotICAgIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCAKLSAgICA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIAotICAgIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgCi0gICAgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCAKLSAgICA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIAotICAgIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIAotICAgIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIAotICAgIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIAotICAgIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDEyOCwgNzgsIDg5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCAKLSAgICA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCA3OSwgMTI4LCA3OCwgODksIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIAotICAgIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgCi0gICAgNzMsIDc4LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIAotICAgIDIxMiwgNzgsIDg5LCA2OSwgNzgsIDEyOCwgNzgsIDg5LCA2OSwgNzIsIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIAotICAgIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgCi0gICAgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAKLSAgICAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgCi0gICAgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCAKLSAgICA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCAKLSAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCAKLSAgICA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIAotICAgIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgCi0gICAgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCAKLSAgICA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIAotICAgIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIAotICAgIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgCi0gICAgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCAKLSAgICA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIAotICAgIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA4NCwgODgsIDczLCAKLSAgICA4NiwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgMTI4LCA3OCwgODQsIDg1LCA3NCwgMTI4LCAKLSAgICA3OCwgODQsIDIxMywgNzgsIDg0LCA4MywgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIAotICAgIDc4LCA4NCwgNzksIDcxLCAxMjgsIDc4LCA4NCwgNzksIDE5OSwgNzgsIDg0LCA3MywgNjksIDE5NywgNzgsIDg0LCA3MiwgCi0gICAgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCA2NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIDEyOCwgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIAotICAgIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIDg1LCA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgCi0gICAgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAKLSAgICAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIAotICAgIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4MywgCi0gICAgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDEyOCwgNzgsIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgMTI4LCA3OCwgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgCi0gICAgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgCi0gICAgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDEyOCwgNzgsIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCAKLSAgICA4NSwgNjUsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgMTI4LCA3OCwgODIsIDc5LCA4MCwgMTI4LCAKLSAgICA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgNjksIDg0LCAxMjgsIDc4LCA4MiwgNjksIAotICAgIDIxMSwgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDY1LCA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAxMjgsIDc4LCA4MSwgNzMsIDcxLCAxMjgsIAotICAgIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCA4OCwgMTI4LCA3OCwgNzksIDg3LCA2NywgMTI4LCA3OCwgNzksIDg2LCA2OSwgCi0gICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCAKLSAgICA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIAotICAgIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgCi0gICAgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCAKLSAgICA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIAotICAgIDIxMiwgNzgsIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MywgMTk3LCA3OCwgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgCi0gICAgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgODIsIDIwNiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCAKLSAgICA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc4LCA3OSwgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIAotICAgIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIDc4LCA3OSwgODAsIDEyOCwgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIAotICAgIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgNzAsIDc5LCA4MiwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgCi0gICAgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIAotICAgIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAKLSAgICAxMjgsIDc4LCA3OSwgNjUsIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIAotICAgIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAKLSAgICA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIAotICAgIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIAotICAgIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgCi0gICAgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCAKLSAgICA3OCwgNzYsIDY1LCA4NSwgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCAKLSAgICA3NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OCwgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCAKLSAgICA2OCwgNzMsIDEyOCwgNzgsIDc1LCA2NSwgODUsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIAotICAgIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgCi0gICAgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCAKLSAgICA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIAotICAgIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgCi0gICAgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAKLSAgICAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCAKLSAgICA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgCi0gICAgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA3MywgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIAotICAgIDcxLCA4NSwgMTI4LCA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgCi0gICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICA2OCwgNjUsIDE3OCwgNzgsIDczLCA3OCwgNTcsIDEyOCwgNzgsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCAKLSAgICA3MywgMjA1LCA3OCwgNzMsIDc1LCA3OSwgNzYsIDgzLCA2NiwgODUsIDgyLCAxOTksIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIAotICAgIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgCi0gICAgNzMsIDcyLCA4MywgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIAotICAgIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgCi0gICAgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCAKLSAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgCi0gICAgNzgsIDczLCA2NiwgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgCi0gICAgNzgsIDcyLCA3NCwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgODUsIDg1LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIAotICAgIDEyOCwgNzgsIDcxLCA4NSwgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzksIDIxMywgNzgsIDcxLCA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCAKLSAgICA3OSwgODAsIDEyOCwgNzgsIDcxLCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIAotICAgIDcyLCAxMjgsIDc4LCA3MSwgNzksIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA3MSwgNzUsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCi0gICAgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCi0gICAgNjUsIDc3LCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCAKLSAgICA4NSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgCi0gICAgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgMjA2LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgCi0gICAgNzEsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKLSAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAotICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAotICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAKLSAgICAxOTcsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCAKLSAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIAotICAgIDgyLCA3NSwgNjksIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIAotICAgIDc4LCA2OSwgODIsIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgCi0gICAgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCAKLSAgICA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIAotICAgIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCAKLSAgICA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCAKLSAgICA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIAotICAgIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgCi0gICAgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgCi0gICAgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgCi0gICAgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgCi0gICAgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgCi0gICAgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCAKLSAgICA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIAotICAgIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgCi0gICAgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAKLSAgICAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIAotICAgIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAKLSAgICAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIAotICAgIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCAKLSAgICA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCAKLSAgICA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCi0gICAgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgCi0gICAgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgCi0gICAgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCAKLSAgICA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIAotICAgIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgCi0gICAgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCAKLSAgICA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIAotICAgIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCAKLSAgICA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIAotICAgIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIAotICAgIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIAotICAgIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgCi0gICAgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCAKLSAgICA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgCi0gICAgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgCi0gICAgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgCi0gICAgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCAKLSAgICA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIAotICAgIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKLSAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAotICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgMTI4LCA3NywgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAKLSAgICA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIAotICAgIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIAotICAgIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgCi0gICAgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3OCwgMTI4LCA3NywgODUsIDc2LCAKLSAgICA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIAotICAgIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAKLSAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA2OSwgMTI4LCA3NywgODUsIAotICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgCi0gICAgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCAKLSAgICA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgCi0gICAgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKLSAgICA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCAKLSAgICA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAotICAgIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKLSAgICA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgCi0gICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIAotICAgIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIAotICAgIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgCi0gICAgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKLSAgICA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIAotICAgIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAotICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgCi0gICAgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCAKLSAgICA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIAotICAgIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgCi0gICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAotICAgIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgCi0gICAgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgCi0gICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCAKLSAgICA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCAKLSAgICA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCA4MiwgNDUsIDU3LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAotICAgIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCi0gICAgNzMsIDY5LCA4MiwgNDUsIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCAKLSAgICA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCAKLSAgICA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCi0gICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCi0gICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCi0gICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCi0gICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKLSAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAotICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAKLSAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgCi0gICAgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAKLSAgICA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAotICAgIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgCi0gICAgNzMsIDg0LCA2NSwgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCAKLSAgICA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgCi0gICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIAotICAgIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgCi0gICAgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgCi0gICAgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIAotICAgIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgCi0gICAgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgCi0gICAgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCi0gICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKLSAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCi0gICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKLSAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKLSAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAotICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCi0gICAgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCAKLSAgICA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIAotICAgIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAKLSAgICAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIAotICAgIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgNjUsIDIwMCwgCi0gICAgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIAotICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgCi0gICAgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgCi0gICAgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgCi0gICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCAKLSAgICA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIAotICAgIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCi0gICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIDc3LCAKLSAgICA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgNjUsIAotICAgIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIAotICAgIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIAotICAgIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgCi0gICAgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAKLSAgICAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIAotICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCAKLSAgICA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIAotICAgIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAKLSAgICAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgCi0gICAgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCAKLSAgICA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIAotICAgIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIDg0LCA4MiwgCi0gICAgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgMTI4LCAKLSAgICA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIDgzLCA3MiwgCi0gICAgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAyMDEsIDc3LCA2NSwgODIsIAotICAgIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgCi0gICAgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCAKLSAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCAKLSAgICA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCAKLSAgICA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgODMsIAotICAgIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICA4NywgNzYsIDEyOCwgNzksIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIAorICAgIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgCisgICAgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCAKKyAgICA4MCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgCisgICAgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCAKKyAgICA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIAorICAgIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIAorICAgIDc5LCA4NCwgNzIsIDY5LCA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAKKyAgICAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIAorICAgIDEyOCwgNzksIDgzLCA2NSwgNzEsIDE5NywgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgCisgICAgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIAorICAgIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDc5LCA4MiwgCisgICAgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgNzksIDgyLCA2NywgNzIsIAorICAgIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDc5LCA4MCwgCisgICAgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCAKKyAgICA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgNzgsIDE5OSwgNzksIAorICAgIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAxMjgsIDc5LCA4MCwgCisgICAgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OSwgODAsIDY5LCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIAorICAgIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgCisgICAgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCAKKyAgICA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgCisgICAgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCA2OSwgMTI4LCA3OSwgNzksIDg5LCAKKyAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAxMjgsIDc5LCA3OSwgNzIsIAorICAgIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA3OCwgCisgICAgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgODIsIDEyOCwgCisgICAgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCA3OSwgNzgsIDY5LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3OSwgNzgsIAorICAgIDY5LCA0NSwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDQ1LCA2NSwgNzgsIDY4LCA0NSwgODMsIDczLCA4OCwgODQsIAorICAgIDczLCA2OSwgODQsIDcyLCAxMjgsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAKKyAgICAxMjgsIDc5LCA3OCwgNDUsIDc5LCA3MCwgMTk4LCA3OSwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIAorICAgIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgCisgICAgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCAKKyAgICA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCAKKyAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIAorICAgIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgNzksIDczLCAyMDQsIAorICAgIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgCisgICAgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIAorICAgIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OSwgNjksIDEyOCwgNzksIAorICAgIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgCisgICAgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgNjksIDIxMiwgNzksIDY3LCAKKyAgICA4NCwgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgCisgICAgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAKKyAgICAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIAorICAgIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgCisgICAgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgCisgICAgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCAKKyAgICA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIAorICAgIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgCisgICAgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIAorICAgIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgCisgICAgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgCisgICAgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCAKKyAgICA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIAorICAgIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIAorICAgIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgCisgICAgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIAorICAgIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIAorICAgIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCAKKyAgICA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIAorICAgIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgCisgICAgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgCisgICAgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgCisgICAgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIAorICAgIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgCisgICAgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCAKKyAgICA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCAKKyAgICA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCAKKyAgICA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIAorICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIAorICAgIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgCisgICAgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgCisgICAgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCAKKyAgICA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIAorICAgIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIAorICAgIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCAKKyAgICA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAKKyAgICAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCAKKyAgICA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIAorICAgIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAKKyAgICAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCAKKyAgICA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIAorICAgIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIAorICAgIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDgzLCA3MiwgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCAKKyAgICA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgCisgICAgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAKKyAgICAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCAKKyAgICA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIAorICAgIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIAorICAgIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgCisgICAgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCAKKyAgICA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIAorICAgIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgCisgICAgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCAKKyAgICA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIAorICAgIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCAKKyAgICA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCAKKyAgICA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgCisgICAgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIAorICAgIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCA3OCwgNzksIDc3LCA3MywgODMsIDc3LCAxOTMsIDc4LCA3OSwgNzcsIDczLCA3OCwgCisgICAgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAKKyAgICAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIAorICAgIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIAorICAgIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgCisgICAgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAKKyAgICAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCAKKyAgICA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA2NSwgODUsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIAorICAgIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCisgICAgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIAorICAgIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIAorICAgIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAKKyAgICAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCAKKyAgICA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgCisgICAgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCAKKyAgICA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIAorICAgIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCAKKyAgICA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgCisgICAgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgCisgICAgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCAKKyAgICA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIAorICAgIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgCisgICAgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCAKKyAgICA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIAorICAgIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgCisgICAgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCAKKyAgICA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCAKKyAgICA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIAorICAgIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCA3MiwgODMsIDcyLCA4NiwgCisgICAgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzEsIDczLCAKKyAgICA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc4LCA3MywgNzEsIDcyLCAyMTIsIAorICAgIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzIsIAorICAgIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3OCwgNzMsIAorICAgIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIDc4LCA3MywgNjYsIDEyOCwgNzgsIAorICAgIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIDc4LCA3MiwgNzQsIDY1LCAxMjgsIAorICAgIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgMTI4LCA3OCwgNzEsIDg1LCA4NSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDc5LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIAorICAgIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgCisgICAgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCAKKyAgICA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIAorICAgIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCAKKyAgICA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAorICAgIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIAorICAgIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKKyAgICAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIAorICAgIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDY5LCA2NSwgCisgICAgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgMTI4LCA3OCwgNzEsIDY1LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIAorICAgIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIAorICAgIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCisgICAgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgMTk3LCA3OCwgNjksIDg3LCAKKyAgICAxMjgsIDc4LCA2OSwgMjE1LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCA3NiwgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIAorICAgIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCA4MiwgNzUsIDY5LCAKKyAgICAxOTYsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDgyLCAKKyAgICAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAxMjgsIAorICAgIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNzksIDY5LCAxMjgsIAorICAgIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIDc4LCA2OSwgCisgICAgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgMTI4LCA3OCwgNjksIAorICAgIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA4NSwgCisgICAgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgODUsIDgwLCAKKyAgICAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgNjgsIDc5LCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCA3OCwgMTI4LCAKKyAgICA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIDg4LCAxMjgsIAorICAgIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIDc4LCA2OCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgNzgsIDY4LCAKKyAgICA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNjgsIAorICAgIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIDc4LCA2OCwgCisgICAgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAKKyAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCA2NSwgCisgICAgMTkzLCA3OCwgNjcsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgCisgICAgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCAKKyAgICA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgCisgICAgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCAKKyAgICA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCAKKyAgICA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgCisgICAgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA4MywgNjksIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY1LCA4NSwgNjgsIDczLCAKKyAgICAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIAorICAgIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgCisgICAgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIAorICAgIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCAKKyAgICA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCAKKyAgICA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCAKKyAgICA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIAorICAgIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgCisgICAgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCAKKyAgICA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIAorICAgIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIAorICAgIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAKKyAgICAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgCisgICAgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgCisgICAgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgCisgICAgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIAorICAgIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgCisgICAgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIAorICAgIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgCisgICAgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgCisgICAgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCAKKyAgICA3NywgODUsIDg1LCAxMjgsIDc3LCA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIAorICAgIDczLCAxOTUsIDc3LCA4NSwgODMsIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgCisgICAgNzcsIDg1LCA4MywgNzIsIDE3OSwgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIAorICAgIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgCisgICAgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCAKKyAgICA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgCisgICAgNzYsIDY5LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCAKKyAgICA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgCisgICAgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIAorICAgIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIAorICAgIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIAorICAgIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCAKKyAgICA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAKKyAgICAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCAKKyAgICA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgCisgICAgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIAorICAgIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCAKKyAgICA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIAorICAgIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgCisgICAgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIAorICAgIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgCisgICAgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCAKKyAgICA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3NywgNzksIAorICAgIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgCisgICAgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAorICAgIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgCisgICAgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCAKKyAgICA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCAKKyAgICA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIAorICAgIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCAKKyAgICA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIAorICAgIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgCisgICAgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAKKyAgICAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDY5LCAyMTcsIAorICAgIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCA3NywgCisgICAgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU3LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU0LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAorICAgIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCisgICAgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA2OCwgMjAxLCA3NywgNzksIDY4LCA2OSwgODMsIAorICAgIDg0LCA4OSwgMTI4LCA3NywgNzksIDY4LCA2OSwgODIsIDIwNiwgNzcsIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCAKKyAgICA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCAKKyAgICA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAKKyAgICAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCAKKyAgICA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgCisgICAgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgCisgICAgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCAKKyAgICA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIAorICAgIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgCisgICAgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIAorICAgIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgCisgICAgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCA3NSwgMTI4LCA3NywgNzMsIDc2LCA3MywgODQsIDY1LCAKKyAgICA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIAorICAgIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgCisgICAgNzcsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgCisgICAgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgCisgICAgNjksIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCAKKyAgICA4MiwgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgCisgICAgMTI4LCA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgCisgICAgMTI4LCA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCAKKyAgICA3NywgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIAorICAgIDc5LCAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIAorICAgIDcxLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgCisgICAgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDY1LCA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIAorICAgIDEyOCwgNzcsIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIAorICAgIDEyOCwgNzcsIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIAorICAgIDg5LCA2NSwgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgCisgICAgNzAsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCAKKyAgICA3NywgNjksIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIAorICAgIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCAKKyAgICA2OSwgODQsIDgyLCA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIAorICAgIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIAorICAgIDczLCA2NSwgMjA2LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAKKyAgICAxOTcsIDc3LCA2OSwgODMsIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCAKKyAgICA2OSwgODIsIDc1LCA3MiwgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIAorICAgIDY1LCA3OCwgODMsIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgCisgICAgODIsIDY3LCA4NSwgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCAKKyAgICA2NSwgMjAwLCA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIAorICAgIDc4LCAxMjgsIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAKKyAgICAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIAorICAgIDQ1LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgCisgICAgNjgsIDczLCAxOTUsIDc3LCA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCAKKyAgICA3MSwgNjUsIDg0LCA3OSwgNzgsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIAorICAgIDcxLCA2NSwgNzYsIDczLCAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgCisgICAgMjAxLCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCA2OSwgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDY4LCA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAorICAgIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgCisgICAgNjUsIDIxMiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIAorICAgIDIxMywgNzcsIDY3LCA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIAorICAgIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgCisgICAgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgCisgICAgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgCisgICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIAorICAgIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgCisgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAKKyAgICAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgCisgICAgNjYsIDUwLCAxMjgsIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgCisgICAgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCAKKyAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIAorICAgIDc3LCA2NSwgODMsIDcyLCA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgCisgICAgNjcsIDg1LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIAorICAgIDIwMSwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgCisgICAgNjUsIDgyLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCAKKyAgICA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCAyMTEsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgCisgICAgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCAKKyAgICA2NywgNzIsIDY5LCAyMDYsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIAorICAgIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIAorICAgIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIAorICAgIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgCisgICAgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKICAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MywgNjcsIDcyLCA2NSwgNjksIDY1LCAyMDYsIAogICAgIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIDc4LCAKICAgICAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgNzgsIApAQCAtMjMyMiwxNDIwICsyMzQ1LDE0MjYgQEAKICAgICA0OCwgNDgsIDE3OCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIAogICAgIDQ4LCA0OSwgMTI4LCA3NywgNDgsIDQ4LCAxNzcsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCAKICAgICA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCAKLSAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIAotICAgIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIAotICAgIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIAotICAgIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCAKLSAgICA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCAKLSAgICA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIAotICAgIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIAotICAgIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgNzYsIAotICAgIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIDc3LCAxMjgsIDc2LCA4MiwgNzMsIAotICAgIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgCi0gICAgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCAKLSAgICA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3NiwgNzksIAotICAgIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDc2LCA3OSwgCi0gICAgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIDY4LCAKLSAgICA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgODUsIAotICAgIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgCi0gICAgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAKLSAgICA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgCi0gICAgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIAotICAgIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgCi0gICAgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCAKLSAgICA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIAotICAgIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgCi0gICAgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgCi0gICAgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIAotICAgIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgCi0gICAgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgCi0gICAgNzMsIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIAotICAgIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIAotICAgIDEyOCwgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIAotICAgIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIAotICAgIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgCi0gICAgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCAKLSAgICA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIAotICAgIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgCi0gICAgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCAKLSAgICA3NywgNjYsIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIAotICAgIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIAotICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgCi0gICAgNzAsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCAKLSAgICA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIAotICAgIDc2LCA3MywgNjYsIDY5LCA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgCi0gICAgNzIsIDczLCA3MywgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIAotICAgIDE5OSwgNzYsIDcyLCA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIAotICAgIDEyOCwgNzYsIDY5LCA4NiwgNzMsIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIAotICAgIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCAKLSAgICA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIAotICAgIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIAotICAgIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgCi0gICAgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIAotICAgIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgCi0gICAgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCAKLSAgICA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIAotICAgIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgCi0gICAgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCAKLSAgICA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCi0gICAgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIAotICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgCi0gICAgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIAotICAgIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAKLSAgICAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgCi0gICAgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIDc0LCAxMjgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgMjAxLCAKLSAgICA3NiwgNjUsIDgyLCA3MSwgNjksIDgzLCA4NCwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCA4MiwgNzEsIAotICAgIDY5LCAxMjgsIDc2LCA2NSwgODIsIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIDgxLCAxMjgsIAotICAgIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgCi0gICAgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDc3LCA4MCwgMTI4LCA3NiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgMTk2LCAKLSAgICA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIDY4LCA3MiwgMTI4LCA3NiwgCi0gICAgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDg5LCA2NSwgNzksIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MCwgNTIsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgNTYsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDU0LCA1MiwgMTg0LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIAotICAgIDQ5LCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ5LCAxODMsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDgsIDU2LCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUzLCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUwLCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA1MiwgNTUsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIAotICAgIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDE4NSwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NywgNDgsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgCi0gICAgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTMsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDQ5LCA1MiwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NywgCi0gICAgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgMTc3LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU1LCAxODUsIDc2LCA2NSwgNzUsIAotICAgIDQ1LCA0OCwgNTQsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgCi0gICAgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDUzLCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ4LCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNDgsIDUxLCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAKLSAgICAxMjgsIDc2LCA2NSwgNzMsIDc4LCAxOTksIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCAKLSAgICA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCA3MSwgNjUsIAotICAgIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgCi0gICAgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIDY1LCA2NywgCi0gICAgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjksIDc2LCAxMjgsIDc2LCA2NSwgNjYsIDY1LCAKLSAgICA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNjUsIAotICAgIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNTQsIDEyOCwgNzYsIAotICAgIDUyLCAxMjgsIDc2LCA1MSwgMTI4LCA3NiwgNTAsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIAotICAgIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgCi0gICAgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIDg5LCAKLSAgICA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgNjUsIAotICAgIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAKLSAgICAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCAKLSAgICA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIAotICAgIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAxMjgsIDc1LCA4NywgNjUsIAotICAgIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIAotICAgIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgNzUsIAotICAgIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA3NSwgCi0gICAgODUsIDgzLCA3MiwgODUsIDE3OCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAKLSAgICA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIAotICAgIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIAotICAgIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAKLSAgICAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDcxLCAxMjgsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNjYsIDEyOCwgCi0gICAgNzUsIDg1LCA2NSwgODYsIDEyOCwgNzUsIDg1LCA2NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgMTI4LCA3NSwgODUsIDU1LCAKLSAgICAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCAKLSAgICA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIAotICAgIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCAKLSAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgCi0gICAgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIAotICAgIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgCi0gICAgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAKLSAgICAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgNzIsIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg2LCAxMjgsIAotICAgIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIDc4LCA3MywgCi0gICAgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgNzUsIDc5LCAKLSAgICA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIDEyOCwgNzUsIAotICAgIDc5LCA3OSwgODYsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAKLSAgICAxMjgsIDc1LCA3OSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIAotICAgIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgCi0gICAgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCAKLSAgICA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCA2OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCA3OSwgMjAzLCAKLSAgICA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCA3OSwgNzcsIAotICAgIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIAotICAgIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCA2OSwgODMsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgCi0gICAgNjksIDEyOCwgNzUsIDc4LCA3OSwgNjYsIDgzLCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCAKLSAgICA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIAotICAgIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIAotICAgIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIAotICAgIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIAotICAgIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCAKLSAgICA3MywgODcsIDEyOCwgNzUsIDczLCA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNzUsIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIAotICAgIDc1LCA3MywgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgCi0gICAgNzUsIDczLCA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIAotICAgIDc5LCA4MiwgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgCi0gICAgNzksIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgCi0gICAgNzUsIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCAKLSAgICA2NSwgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIAotICAgIDgyLCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIAotICAgIDY5LCA4NiwgNjUsIDIwNiwgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgCi0gICAgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgCi0gICAgMTI4LCA3NSwgNzMsIDY1LCA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgCi0gICAgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIAotICAgIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgCi0gICAgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCAKLSAgICA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIAotICAgIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIAotICAgIDczLCA3OCwgODksIDY1LCAxMjgsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgCi0gICAgNzIsIDIwMSwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAKLSAgICAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCAKLSAgICA2NSwgODYsIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgCi0gICAgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIAotICAgIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgCi0gICAgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAKLSAgICA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIAotICAgIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCAKLSAgICA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIAotICAgIDY4LCA2NSwgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODQsIDc3LCA2OSwgCi0gICAgODUsIDc4LCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODIsIDczLCAxMjgsIDc1LCA2OSwgODQsIDg0LCAyMDEsIDc1LCAKLSAgICA2OSwgODMsIDcyLCA1MCwgMTI4LCA3NSwgNjksIDgyLCA2OSwgODQsIDEyOCwgNzUsIDY5LCA3OSwgODcsIDEyOCwgNzUsIAotICAgIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDE5MywgCi0gICAgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgMTkzLCA3NSwgNjksIDc4LCA2NSwgODQsIDEyOCwgNzUsIDY5LCA3OCwgMTI4LCAKLSAgICA3NSwgNjksIDIwNiwgNzUsIDY5LCA3NywgODAsIDg1LCA3NiwgMTI4LCA3NSwgNjksIDc3LCA4MCwgODUsIDIwNCwgNzUsIAotICAgIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgCi0gICAgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIAotICAgIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIAotICAgIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgNjksIDY5LCA4NiwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgCi0gICAgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA2OSwgNjYsIAotICAgIDEyOCwgNzUsIDY5LCA2NiwgMTI4LCA3NSwgNjksIDY1LCA2NSwgNjksIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIAotICAgIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAxMjgsIDc1LCA2NSwgODcsIDg2LCAxMjgsIDc1LCA2NSwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA2NSwgODcsIDY2LCAxMjgsIDc1LCA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NiwgMTI4LCAKLSAgICA3NSwgNjUsIDg1LCA4NiwgMTI4LCA3NSwgNjUsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIAotICAgIDg1LCA2NiwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgCi0gICAgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgCi0gICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCAKLSAgICA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIAotICAgIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAKLSAgICAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgCi0gICAgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAKLSAgICAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgCi0gICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIAotICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDIwOCwgNzUsIAotICAgIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgCi0gICAgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCAKLSAgICA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIAotICAgIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NiwgMTI4LCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIAotICAgIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDY2LCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIAotICAgIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIAotICAgIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgCi0gICAgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgCi0gICAgMTI4LCA3NSwgNjUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDY1LCAxMjgsIDc1LCA2NSwgNjUsIDY2LCAxMjgsIDc1LCAKLSAgICA2NSwgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCAKLSAgICA0OCwgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIAotICAgIDUxLCAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIAotICAgIDg1LCA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIAotICAgIDg5LCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgCi0gICAgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCAKLSAgICA4OSwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIAotICAgIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIAotICAgIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgODQsIDgzLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgCi0gICAgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgCi0gICAgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAKLSAgICAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgCi0gICAgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgCi0gICAgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIAotICAgIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIAotICAgIDc2LCAxMjgsIDc0LCA3MywgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAKLSAgICAxMjgsIDc0LCA3MywgNjUsIDEyOCwgNzQsIDcyLCA3OSwgODgsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCAKLSAgICA3MiwgMTI4LCA3NCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIAotICAgIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAKLSAgICAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCAKLSAgICA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIAotICAgIDc4LCAxMjgsIDc0LCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgCi0gICAgNjUsIDg3LCAxMjgsIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCAKLSAgICA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIAotICAgIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCAKLSAgICA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMjA2LCA3NCwgNjUsIDczLCAxMjgsIDc0LCA2NSwgNzIsIAotICAgIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgCi0gICAgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCAKLSAgICA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIAotICAgIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgCi0gICAgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCAKLSAgICA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIAotICAgIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAyMTEsIDczLCA4MywgCi0gICAgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDgzLCAKLSAgICA3NiwgNjUsIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIAotICAgIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCAKLSAgICA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCA2NiwgMTI4LCA3MywgNzksIAotICAgIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAKLSAgICAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCAKLSAgICA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIAotICAgIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgCi0gICAgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCAKLSAgICA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzksIDY3LCA3NSwgCi0gICAgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgCi0gICAgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgODUsIDc3LCA2OSwgNzgsIDg0LCAKLSAgICA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCA2OCwgMTk3LCA3MywgNzgsIAotICAgIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgMTI4LCA3MywgNzgsIDgzLCA2NywgCi0gICAgODIsIDczLCA4MCwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAyMTIsIDczLCA3OCwgNzgsIDc5LCAKLSAgICA2NywgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAotICAgIDczLCA3OCwgNzgsIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgNzgsIDcxLCA4NSwgMTI4LCA3MywgCi0gICAgNzgsIDczLCAxMjgsIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCA3MiwgNjksIDgyLCA2OSwgNzgsIAotICAgIDIxMiwgNzMsIDc4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA3MywgNzgsIDcxLCA4NywgNjUsIDkwLCAxMjgsIDczLCA3OCwgCi0gICAgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCA4NSwgNjksIDc4LCA2NywgNjksIAotICAgIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCAKLSAgICAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgNzMsIDgyLCA2OSwgNjcsIAotICAgIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgCi0gICAgNzksIDIxMCwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNzMsIDc4LCA2OCwgNzMsIDY1LCAyMDYsIDczLCA3OCwgNjgsIDY5LCAKLSAgICA4OCwgMTI4LCA3MywgNzgsIDY4LCA2OSwgODAsIDY5LCA3OCwgNjgsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDY3LCA4MiwgNjksIAotICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMjExLCA3MywgNzgsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA4MywgNjksIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCAKLSAgICA4MCwgNzYsIDY5LCA4NCwgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3NiwgODUsIAotICAgIDY4LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgCi0gICAgODAsIDEyOCwgNzMsIDc4LCA0NSwgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIAotICAgIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgCi0gICAgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIAotICAgIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgCi0gICAgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgCi0gICAgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIAotICAgIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgCi0gICAgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCAKLSAgICA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIAotICAgIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIAotICAgIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgCi0gICAgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIAotICAgIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDczLCA2NywgNzksIDc4LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4NSwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgCi0gICAgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgCi0gICAgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAKLSAgICAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgCi0gICAgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCAKLSAgICA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgCi0gICAgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgCi0gICAgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIAotICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIAotICAgIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIAotICAgIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCAKLSAgICA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIAotICAgIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgCi0gICAgODAsIDcyLCA2OSwgMjA2LCA3MiwgODksIDcxLCA3MywgNjksIDczLCA2NSwgMTI4LCA3MiwgODgsIDg3LCA3MSwgMTI4LCAKLSAgICA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgCi0gICAgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAKLSAgICAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIAotICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIAotICAgIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgCi0gICAgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgCi0gICAgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NywgNjUsIDcyLCAxMjgsIDcyLCA4NiwgMTI4LCA3MiwgCi0gICAgODUsIDg2LCA2NSwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCA4MywgNzIsIDEyOCwgNzIsIDg1LCAKLSAgICA4MiwgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCA4MywgCi0gICAgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCAKLSAgICA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgMjA4LCA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIAotICAgIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCA3MiwgODUsIDcxLCA3MSwgCi0gICAgNzMsIDc4LCAxOTksIDcyLCA4NSwgNjYsIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgCi0gICAgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgNzksIDEyOCwgNzIsIDg1LCA2NSwgNzgsIDEyOCwgNzIsIDg0LCA4MywgMTI4LCAKLSAgICA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIDg2LCA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIAotICAgIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgCi0gICAgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIAotICAgIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIAotICAgIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgCi0gICAgMTk3LCA3MiwgNzksIDgyLCA4MiwgMTI4LCA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAotICAgIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAotICAgIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAotICAgIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgCi0gICAgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCA2OCwgMTI4LCAKLSAgICA3MiwgNzksIDc5LCA3NSwgNjksIDE5NiwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgCi0gICAgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNzksIDEyOCwgNzIsIDc5LCA3NiwgNzYsIDc5LCAyMTUsIDcyLCAKLSAgICA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIAotICAgIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNjcsIDc1LCA2OSwgMjE3LCA3MiwgCi0gICAgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKLSAgICA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDY2LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAotICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzgsIDY1LCA4NSwgMTI4LCA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIAotICAgIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIAotICAgIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCAKLSAgICA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCAKLSAgICA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIAotICAgIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgCi0gICAgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NSwgMTI4LCA3MiwgNzYsIDY1LCAKLSAgICA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NiwgMTI4LCA3MiwgNzUsIDEyOCwgCi0gICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4OSwgNzksIDEyOCwgNzIsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCAKLSAgICA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3OCwgNzEsIAotICAgIDY5LCA2OCwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDE5NiwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA3MywgCi0gICAgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIAotICAgIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzYsIDc5LCAyMTUsIDcyLCA3MywgNzEsIDcyLCA0NSwgCi0gICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgCi0gICAgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIAotICAgIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIAotICAgIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgCi0gICAgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAorICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgCisgICAgODksIDY3LCA3MywgNjUsIDIwNiwgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgCisgICAgNzYsIDg3LCA3MywgNzMsIDEyOCwgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDc2LCA4NywgNjUsIDEyOCwgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgCisgICAgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCAKKyAgICA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIAorICAgIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgMjAwLCA3NiwgODUsIAorICAgIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgCisgICAgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDE5NywgNzYsIDg1LCA2NiwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgCisgICAgNzYsIDg1LCA1MSwgMTI4LCA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgCisgICAgNzcsIDEyOCwgNzYsIDgyLCA3MywgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIAorICAgIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgCisgICAgNjgsIDQ1LCAxODUsIDc2LCA3OSwgODcsIDQ1LCA3NywgNzMsIDE5NiwgNzYsIDc5LCA4NywgNDUsIDcwLCA2NSwgNzYsIDc2LCAKKyAgICA3MywgNzgsIDE5OSwgNzYsIDc5LCA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgCisgICAgMjE3LCA3NiwgNzksIDg0LCA4NSwgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgzLCA4MywgNzYsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgCisgICAgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgCisgICAgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCAKKyAgICA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNzYsIDY5LCA3MSwgNzEsIAorICAgIDY5LCAxOTYsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgCisgICAgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIAorICAgIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKKyAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgCisgICAgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCAKKyAgICA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgCisgICAgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIAorICAgIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgCisgICAgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIAorICAgIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIAorICAgIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIAorICAgIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgCisgICAgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCAKKyAgICA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDEyOCwgNzYsIDczLCA5MCwgNjUsIDgyLCA2OCwgMTI4LCAKKyAgICA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCA3MywgODQsIAorICAgIDg0LCA3NiwgNjksIDEyOCwgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgCisgICAgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MywgMTI4LCA3NiwgCisgICAgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCAKKyAgICA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDgwLCAyMTEsIDc2LCA3MywgMjA4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIAorICAgIDc4LCAxOTksIDc2LCA3MywgNzgsIDc1LCA2OSwgMTk2LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIDcxLCA4MywgCisgICAgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgNzgsIDY5LCAKKyAgICA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAxMjgsIAorICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCisgICAgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgNzMsIDc3LCAKKyAgICA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCA3MywgNzcsIAorICAgIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIDc3LCA2NiwgCisgICAgMjExLCA3NiwgNzMsIDc3LCAxOTQsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgCisgICAgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNzgsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgCisgICAgNzYsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgNzYsIDczLCA2NiwgNjksIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCA3MiwgNzMsIDczLCAxMjgsIAorICAgIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgMTk5LCA3NiwgNzIsIDY1LCA2NSwgCisgICAgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgMTI4LCA3NiwgNjksIDg2LCA3MywgCisgICAgODQsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjksIDg1LCA3NywgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAKKyAgICAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgMTI4LCA3NiwgNjksIDIxMywgNzYsIDY5LCAKKyAgICA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDIxMiwgNzYsIAorICAgIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgCisgICAgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3NiwgNjksIDgwLCAxMjgsIDc2LCAKKyAgICA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzMsIDIxMSwgNzYsIDY5LCA3OCwgCisgICAgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU1LCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTMsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTAsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDQ5LCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIAorICAgIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCAKKyAgICA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzMsIDEyOCwgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCAKKyAgICA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIAorICAgIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgCisgICAgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgCisgICAgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCA4NywgNjUsIDEyOCwgNzYsIDY5LCA2OSwgNzUsIAorICAgIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgCisgICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgNzYsIDY5LCA2NSwgMTk4LCA3NiwgNjksIDY1LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCA3NiwgNjgsIAorICAgIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCA3NiwgNjcsIDE5NywgNzYsIDY1LCA5MCwgMjE3LCAKKyAgICA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIDg4LCAxMjgsIDc2LCA2NSwgODcsIDEyOCwgNzYsIAorICAgIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIDg1LCA3NSwgNjUsIDIxOCwgNzYsIDY1LCA4NSwgCisgICAgNzQsIDEyOCwgNzYsIDY1LCA4NSwgNzEsIDcyLCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAKKyAgICAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIAorICAgIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgCisgICAgMjAxLCA3NiwgNjUsIDgyLCA3MSwgNjksIDgzLCA4NCwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCAKKyAgICA4MiwgNzEsIDY5LCAxMjgsIDc2LCA2NSwgODIsIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIAorICAgIDgxLCAxMjgsIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgCisgICAgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDc3LCAKKyAgICA4MCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgNjUsIAorICAgIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCA2NSwgCisgICAgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIDY4LCAKKyAgICA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAorICAgIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MCwgCisgICAgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgMTg0LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA3NiwgCisgICAgNjUsIDc1LCA0NSwgNTQsIDQ5LCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ5LCAxODMsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1NCwgNDgsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIAorICAgIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUwLCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTUsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MiwgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MiwgNTIsIDE4NSwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NywgNDgsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUxLCA1MiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUwLCA1NCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNDgsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDQ4LCA1NywgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDQ4LCA1NiwgMTc3LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU1LCAKKyAgICAxODUsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTQsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA0OCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNDgsIDUxLCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIAorICAgIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzMsIDc4LCAxOTksIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgCisgICAgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgCisgICAgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIAorICAgIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjksIDc2LCAxMjgsIAorICAgIDc2LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAKKyAgICAxMjgsIDc2LCA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3NiwgNTQsIDEyOCwgNzYsIDUyLCAxMjgsIDc2LCA1MSwgMTI4LCA3NiwgNTAsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAKKyAgICAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIAorICAgIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgCisgICAgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAKKyAgICAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIAorICAgIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgCisgICAgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgCisgICAgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDc1LCA4NywgNzMsIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAKKyAgICAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCAKKyAgICA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCAKKyAgICA4NSwgNzIsIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIAorICAgIDg1LCA1MCwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDE3OCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgCisgICAgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCAKKyAgICA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgCisgICAgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDcxLCAxMjgsIDc1LCA4NSwgNjksIDg0LCAxMjgsIAorICAgIDc1LCA4NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgODYsIDEyOCwgNzUsIDg1LCA2NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgCisgICAgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIAorICAgIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgCisgICAgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCAKKyAgICA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgCisgICAgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIAorICAgIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCAKKyAgICA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCAKKyAgICA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIAorICAgIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgCisgICAgNzIsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgCisgICAgNzksIDg2LCAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIAorICAgIDE5NSwgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODAsIDEyOCwgNzUsIDc5LCA3OSwgODYsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCAKKyAgICA4NSwgODUsIDg0LCAxMjgsIDc1LCA3OSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIAorICAgIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgCisgICAgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCAKKyAgICA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCA2OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCAKKyAgICA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCAKKyAgICA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIAorICAgIDEyOCwgNzUsIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCA2OSwgODMsIDEyOCwgNzUsIDc4LCA4NSwgCisgICAgNjcsIDc1LCA3NiwgNjksIDEyOCwgNzUsIDc4LCA3OSwgNjYsIDgzLCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgCisgICAgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgCisgICAgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgCisgICAgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgCisgICAgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAKKyAgICAxMjgsIDc1LCA3MywgODcsIDczLCA3MCwgODIsIDg1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4NywgMTI4LCA3NSwgNzMsIAorICAgIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgCisgICAgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAKKyAgICAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIAorICAgIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgCisgICAgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCAKKyAgICA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCAKKyAgICA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgCisgICAgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzUsIDczLCAKKyAgICA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDg2LCA2NSwgMjA2LCAKKyAgICA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIAorICAgIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzMsIDY2LCAxMjgsIDc1LCA3MywgNjUsIAorICAgIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIAorICAgIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgCisgICAgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIAorICAgIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIAorICAgIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDc0LCA3NSwgMjAxLCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgCisgICAgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgNzMsIDc4LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgMjAxLCA3NSwgNzIsIDcyLCAKKyAgICA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIAorICAgIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4NiwgMTI4LCA3NSwgNzIsIAorICAgIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgCisgICAgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgCisgICAgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCAKKyAgICA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCAKKyAgICA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIAorICAgIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgCisgICAgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIAorICAgIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCAKKyAgICA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgCisgICAgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIAorICAgIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgCisgICAgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCAKKyAgICA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIAorICAgIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIAorICAgIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgCisgICAgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAKKyAgICAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIAorICAgIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIAorICAgIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgCisgICAgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIAorICAgIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgCisgICAgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIAorICAgIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgCisgICAgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCAKKyAgICA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIAorICAgIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgCisgICAgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIAorICAgIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKKyAgICA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIAorICAgIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIAorICAgIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCAKKyAgICA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIAorICAgIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgCisgICAgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCA2NSwgCisgICAgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCA3NSwgCisgICAgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCA3NSwgCisgICAgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIDE3OSwgCisgICAgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIDEyOCwgCisgICAgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDc1LCAKKyAgICA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIAorICAgIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIAorICAgIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgCisgICAgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCA4OSwgCisgICAgMTI4LCA3NCwgODUsIDcxLCA3MSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCAKKyAgICA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIAorICAgIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgCisgICAgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgCisgICAgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIAorICAgIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIAorICAgIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCAKKyAgICA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIAorICAgIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIAorICAgIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCAKKyAgICA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIDEyOCwgNzQsIDczLCA3MywgNzcsIDEyOCwgNzQsIDczLCAKKyAgICA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgCisgICAgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgCisgICAgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzcsIDEyOCwgNzQsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIAorICAgIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgCisgICAgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgCisgICAgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgNzgsIDEyOCwgNzQsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODcsIDEyOCwgNzQsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgCisgICAgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCAKKyAgICA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIAorICAgIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgCisgICAgNzQsIDY1LCA3MiwgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCAKKyAgICA2NywgNzUsIDQ1LCA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIAorICAgIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAKKyAgICAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIAorICAgIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgCisgICAgNzQsIDY1LCAxMjgsIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCAKKyAgICA2OSwgNzcsIDEyOCwgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIAorICAgIDIxMSwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgCisgICAgMTI4LCA3MywgODMsIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIAorICAgIDEyOCwgNzMsIDgzLCA2NSwgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgCisgICAgODIsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3MywgODIsIDc5LCA3OCwgNDUsIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIAorICAgIDY2LCAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgCisgICAgNzMsIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCAKKyAgICA2NSwgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIAorICAgIDg0LCA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgCisgICAgMTk3LCA3MywgNzgsIDg0LCA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIAorICAgIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODIsIDc2LCA3OSwgNjcsIDc1LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIAorICAgIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgCisgICAgODQsIDY5LCA3MSwgODIsIDY1LCAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNzcsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIAorICAgIDY4LCAxOTcsIDczLCA3OCwgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAKKyAgICAxMjgsIDczLCA3OCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIAorICAgIDIxMiwgNzMsIDc4LCA3OCwgNzksIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgCisgICAgNzgsIDc4LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCAKKyAgICA3OCwgNzEsIDg1LCAxMjgsIDczLCA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIAorICAgIDcyLCA2OSwgODIsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgCisgICAgOTAsIDEyOCwgNzMsIDc4LCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCAKKyAgICA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIAorICAgIDc4LCA3MywgODQsIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgCisgICAgODIsIDY5LCA2NywgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA2OCwgNzMsIDY3LCAKKyAgICA2NSwgODQsIDc5LCA4MiwgMTI4LCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDIxMCwgNzMsIDc4LCA2OCwgNzMsIAorICAgIDE5NSwgNzMsIDc4LCA2OCwgNzMsIDY1LCAyMDYsIDczLCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3MywgNzgsIDY4LCA2OSwgCisgICAgODAsIDY5LCA3OCwgNjgsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDY3LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDczLCAKKyAgICA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMjExLCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgNzMsIAorICAgIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgMTk3LCA3MywgCisgICAgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3NiwgODUsIDY4LCA3MywgNzgsIDE5OSwgNzMsIDc4LCAKKyAgICA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIDc4LCA0NSwgNjUsIAorICAgIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgCisgICAgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIDc3LCAKKyAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAxMjgsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIAorICAgIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIAorICAgIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCAKKyAgICA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIAorICAgIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIAorICAgIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgCisgICAgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCAKKyAgICA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCAKKyAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIAorICAgIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKKyAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCAKKyAgICA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgCisgICAgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NywgNDksIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIAorICAgIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgCisgICAgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIAorICAgIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCisgICAgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIAorICAgIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgCisgICAgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCAKKyAgICA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIAorICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIAorICAgIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIAorICAgIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgCisgICAgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgCisgICAgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIAorICAgIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgCisgICAgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCAKKyAgICA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCisgICAgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgCisgICAgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgCisgICAgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCAKKyAgICA3MiwgMTI4LCA3MiwgODUsIDg2LCA2NSwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCA4MywgNzIsIAorICAgIDEyOCwgNzIsIDg1LCA4MiwgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgCisgICAgNjksIDY4LCA4MywgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMjExLCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAKKyAgICA2OCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgMjA4LCAKKyAgICA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIAorICAgIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCA3MiwgODUsIDcxLCA3MSwgNzMsIDc4LCAxOTksIDcyLCA4NSwgNjYsIDUwLCAKKyAgICAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgNzksIAorICAgIDEyOCwgNzIsIDg1LCA2NSwgNzgsIDEyOCwgNzIsIDg0LCA4MywgMTI4LCA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIAorICAgIDg2LCA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIAorICAgIDc5LCA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgCisgICAgNzEsIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCAKKyAgICA2OSwgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCA3MiwgNzksIDgyLCA4MiwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCisgICAgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAorICAgIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCisgICAgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgCisgICAgNzksIDc5LCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCAKKyAgICA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCA2OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDE5NiwgNzIsIAorICAgIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgCisgICAgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCAKKyAgICA3NiwgNzksIDEyOCwgNzIsIDc5LCA3NiwgNzYsIDc5LCAyMTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgCisgICAgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNjcsIDc1LCA2OSwgMjE3LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCAKKyAgICA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgODUsIAorICAgIDY2LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCAKKyAgICA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIAorICAgIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCA3MiwgNzgsIDY1LCA4NSwgMTI4LCA3MiwgNzgsIAorICAgIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIAorICAgIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgCisgICAgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIAorICAgIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgCisgICAgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCAKKyAgICA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIAorICAgIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgCisgICAgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIAorICAgIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgCisgICAgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NSwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCAKKyAgICA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NiwgMTI4LCA3MiwgNzUsIDEyOCwgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCAKKyAgICA4OSwgNzksIDEyOCwgNzIsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgCisgICAgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA3MiwgNzMsIDc4LCAKKyAgICA3MSwgNjksIDE5NiwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIAorICAgIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgCisgICAgNzEsIDcyLCA0NSwgNzYsIDc5LCAyMTUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIAorICAgIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIAorICAgIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgCisgICAgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIAorICAgIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgCisgICAgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzMsIDQ1LCA4MiwgNjksIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCAKKyAgICA3MiwgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCAKKyAgICA3MiwgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg5LCA4NCwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIAorICAgIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCiAgICAgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCAKICAgICA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNzMsIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIAogICAgIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCA4MiwgNjksIDEyOCwgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgCkBAIC0zNzUwLDQyOSArMzc3OSw0MzggQEAKICAgICA0NSwgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIAogICAgIDY1LCA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgCiAgICAgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNDUsIDY2LCA2NSwgNzgsIDY4LCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKLSAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIAotICAgIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgCi0gICAgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCAKLSAgICA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgCi0gICAgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCAKLSAgICA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIAotICAgIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgCi0gICAgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCAKLSAgICA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIAotICAgIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgCi0gICAgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCAKLSAgICA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCAKLSAgICA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKLSAgICA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIAotICAgIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgCi0gICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCAKLSAgICA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIAotICAgIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKLSAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAotICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCi0gICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKLSAgICA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIAotICAgIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAKLSAgICAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIAotICAgIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCAKLSAgICA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCAKLSAgICA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIAotICAgIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCAKLSAgICA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIAotICAgIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIAotICAgIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgCi0gICAgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCAKLSAgICA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIAotICAgIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIAotICAgIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIAotICAgIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIAotICAgIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCAKLSAgICA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIAotICAgIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgCi0gICAgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgCi0gICAgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIAotICAgIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCi0gICAgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIAotICAgIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgCi0gICAgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCAKLSAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIDcxLCA4MiwgNjUsIDc3LCA3NywgCi0gICAgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCA2NSwgNjcsIAotICAgIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIDcxLCA3OSwgCi0gICAgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIAotICAgIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgCi0gICAgMTI4LCA3MSwgNzksIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgCi0gICAgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCAKLSAgICA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIAotICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgCi0gICAgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCAKLSAgICA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgCi0gICAgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCAKLSAgICA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCAKLSAgICA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCAKLSAgICA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIAotICAgIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgCi0gICAgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCAKLSAgICA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAKLSAgICAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIAotICAgIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIAotICAgIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgCi0gICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgCi0gICAgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIAotICAgIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCAKLSAgICA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCAKLSAgICA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgODQsIAotICAgIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgCi0gICAgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAKLSAgICAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIAotICAgIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgCi0gICAgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCAKLSAgICA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIAotICAgIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgCi0gICAgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCAKLSAgICA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIAotICAgIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OSwgNTAsIDUwLCAxMjgsIAotICAgIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgCi0gICAgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAKLSAgICAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgCi0gICAgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIAotICAgIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKLSAgICA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgCi0gICAgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCAKLSAgICA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCAKLSAgICA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIAotICAgIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCi0gICAgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgCi0gICAgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCAKLSAgICA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCAKLSAgICA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIAotICAgIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIAotICAgIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCAKLSAgICA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCAKLSAgICA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgCi0gICAgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgCi0gICAgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgCi0gICAgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCAKLSAgICA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgCi0gICAgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAKLSAgICAxMjgsIDcwLCA4NSwgNjUsIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCAKLSAgICA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIAotICAgIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA4NywgMjA2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgCi0gICAgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDc4LCAKLSAgICAyMTIsIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCAKLSAgICA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIAotICAgIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgCi0gICAgODIsIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCAKLSAgICA3OCwgNzUsIDIxMSwgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCA4MywgMTI4LCA3MCwgODIsIAotICAgIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzcsIDE5NywgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCAKLSAgICA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIAotICAgIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCAKLSAgICA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIAotICAgIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgCi0gICAgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCAKLSAgICA4MiwgODcsIDY1LCA4MiwgMTk2LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIAotICAgIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc3LCA2NSwgMjEyLCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCAKLSAgICA4MiwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIAotICAgIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgCi0gICAgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA3OCwgNzksIDg0LCAxOTcsIDcwLCAKLSAgICA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIDc5LCA3NiwgCi0gICAgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgNzgsIDIxMiwgNzAsIDc5LCA3OCwgCi0gICAgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCA3NiwgODksIDEyOCwgNzAsIDc5LCAKLSAgICA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDgyLCAxMjgsIDcwLCA3OSwgNzYsIAotICAgIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc5LCA3MSwgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIAotICAgIDEyOCwgNzAsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODksIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg1LCAKLSAgICA4NCwgNjksIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIAotICAgIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3MCwgNzYsIDc5LCA4NSwgCi0gICAgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDcwLCA3NiwgNzksIDgyLCAKLSAgICA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIDgyLCAxMjgsIDcwLCA3NiwgNzksIAotICAgIDc5LCAyMTAsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDc2LCA3MywgCi0gICAgNjcsIDIwMywgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCA4OCwgNjksIDE5NiwgNzAsIDc2LCAKLSAgICA2OSwgODgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIAotICAgIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgCi0gICAgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgCi0gICAgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgCi0gICAgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCAKLSAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIAotICAgIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA5MCwgODAsIDY1LCA4NCwgODIsIDczLCA2NywgMjAzLCA3MCwgNzMsIDg0LCA2NSwgCi0gICAgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAKLSAgICAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgCi0gICAgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAKLSAgICAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIAotICAgIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgCi0gICAgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCAKLSAgICA3MSwgNjksIDgyLCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAyMTEsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAotICAgIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDgyLCA0NSwgODAsIDc5LCA4MywgMjEyLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgMjEwLCA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzgsIDY1LCA3NiwgCi0gICAgMTI4LCA3MCwgNzMsIDc2LCAyMDUsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAKLSAgICAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIAotICAgIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MywgCi0gICAgNjksIDc2LCAxOTYsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgCi0gICAgNzAsIDY5LCA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCAKLSAgICA4NCwgNzMsIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgCi0gICAgMjExLCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCAKLSAgICA2OSwgNzksIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIAotICAgIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgCi0gICAgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAKLSAgICAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCAKLSAgICA3NywgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCAKLSAgICA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIAotICAgIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgCi0gICAgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgMTI4LCAKLSAgICA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgNjUsIAotICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgCi0gICAgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDcwLCAKLSAgICA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MywgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIAotICAgIDIwMSwgNzAsIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA3NywgCi0gICAgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA2OSwgMjA2LCA3MCwgNjUsIDc0LCAKLSAgICAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIAotICAgIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgCi0gICAgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCA3NywgNzMsIDc2LCAKLSAgICAxOTcsIDcwLCA2NSwgNjcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIAotICAgIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgCi0gICAgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgCi0gICAgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIAotICAgIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgODMsIAotICAgIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCAKLSAgICA4OSwgODksIDg5LCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzYsIAotICAgIDY1LCA4MywgNzIsIDY5LCAyMTEsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgCi0gICAgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAotICAgIDcxLCA2NSwgOTAsIDY5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKLSAgICA2NiwgODIsIDc5LCA4NywgMjExLCA2OSwgODksIDE5NywgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCA2OSwgNzcsIDY5LCA3NiwgMjE3LCAKLSAgICA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgCi0gICAgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCAKLSAgICA4OCwgODQsIDgyLCAxOTMsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIAotICAgIDc4LCA2OCwgNjksIDY4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgCi0gICAgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCAKLSAgICA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIAotICAgIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA3NiwgCi0gICAgNjksIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCAKLSAgICA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDczLCA4NCwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAotICAgIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgCi0gICAgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIDY5LCA4MiwgMjE3LCAKLSAgICA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIAotICAgIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCAKLSAgICA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIAotICAgIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCAKLSAgICA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIAotICAgIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA5MCwgCi0gICAgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKLSAgICA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIAotICAgIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgCi0gICAgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MywgCi0gICAgNDUsIDUxLCAxMjgsIDY5LCA4MywgNDUsIDUwLCAxMjgsIDY5LCA4MywgNDUsIDQ5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCAKLSAgICA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgCi0gICAgMTI4LCA2OSwgODIsIDczLCA3OCwgMTc4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgCi0gICAgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIAotICAgIDIwNCwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAKLSAgICAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIAotICAgIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAKLSAgICAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIAotICAgIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCAKLSAgICA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIAotICAgIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIAotICAgIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgCi0gICAgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNDksIDEyOCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIDcyLCA4NSwgODMsIDczLCAKLSAgICA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgCi0gICAgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCAKLSAgICA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCAKLSAgICA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIAotICAgIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgCi0gICAgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCAKLSAgICA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIAotICAgIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIAotICAgIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAKLSAgICAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIDc0LCAyMDEsIDY5LCA3NywgNjYsIAotICAgIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgCi0gICAgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAKLSAgICAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgCi0gICAgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjYsIAotICAgIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgCi0gICAgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCAKLSAgICA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgCi0gICAgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgCi0gICAgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIAotICAgIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCAKLSAgICA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAotICAgIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgCi0gICAgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgCi0gICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKLSAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAotICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCi0gICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAotICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAotICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCi0gICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKLSAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgCi0gICAgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCAKLSAgICA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIAotICAgIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCAKLSAgICA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIAotICAgIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIAotICAgIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgCi0gICAgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgCi0gICAgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NiwgCi0gICAgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIAotICAgIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgCi0gICAgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCAKLSAgICA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIAotICAgIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIAotICAgIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCi0gICAgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCAKLSAgICA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NiwgMTk3LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCisgICAgNjksIDEyOCwgNzIsIDY4LCA4MiwgMTI4LCA3MiwgNjcsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCAKKyAgICA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIAorICAgIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgCisgICAgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAKKyAgICAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIAorICAgIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgCisgICAgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCAKKyAgICA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIAorICAgIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgCisgICAgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCA3MiwgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCA3OCwgNjgsIAorICAgIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCAKKyAgICA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIAorICAgIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgCisgICAgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCAKKyAgICA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIAorICAgIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIAorICAgIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgCisgICAgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCAKKyAgICA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIAorICAgIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgCisgICAgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCAKKyAgICA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgCisgICAgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgCisgICAgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCAKKyAgICA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCAKKyAgICA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIAorICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgCisgICAgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCAKKyAgICA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCAKKyAgICA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCAKKyAgICA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCAKKyAgICA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCAKKyAgICA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIAorICAgIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgCisgICAgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgCisgICAgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCAKKyAgICA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIAorICAgIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgCisgICAgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCAKKyAgICA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCAKKyAgICA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCAKKyAgICA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIAorICAgIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgCisgICAgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCAKKyAgICA2OSwgNjksIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIAorICAgIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKKyAgICA2NSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIAorICAgIDg2LCA2OSwgODksIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAKKyAgICA4MywgMTI4LCA3MSwgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDY5LCA3NywgMTk3LCA3MSwgODIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgCisgICAgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCAKKyAgICA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIAorICAgIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCAKKyAgICA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCA3MywgCisgICAgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCA3OSwgCisgICAgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgNzksIDczLCAKKyAgICA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCA3OSwgNjUsIAorICAgIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIDczLCA4OSwgCisgICAgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg2LCA2OSwgMTI4LCAKKyAgICA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIAorICAgIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgCisgICAgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgCisgICAgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCAKKyAgICA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIAorICAgIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIAorICAgIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgCisgICAgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgCisgICAgNzMsIDY5LCA4NCwgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCAKKyAgICA3MSwgNzMsIDY2LCA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIAorICAgIDcxLCA3MiwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgCisgICAgNzksIDEyOCwgNzEsIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNzEsIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIAorICAgIDY5LCAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgCisgICAgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCAKKyAgICA3MSwgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgCisgICAgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgCisgICAgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCAKKyAgICA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIAorICAgIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIAorICAgIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgCisgICAgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCAKKyAgICA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIAorICAgIDUwLCAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAKKyAgICAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIAorICAgIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAKKyAgICAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIAorICAgIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgCisgICAgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCAKKyAgICAxOTcsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCAKKyAgICA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCAKKyAgICA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OSwgNTAsIDUwLCAxMjgsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIAorICAgIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIAorICAgIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgCisgICAgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCAKKyAgICA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIAorICAgIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCAKKyAgICA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIAorICAgIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAKKyAgICAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCAKKyAgICA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIAorICAgIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgCisgICAgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgCisgICAgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCAKKyAgICA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIAorICAgIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgCisgICAgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAKKyAgICAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCAKKyAgICA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCAKKyAgICA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIAorICAgIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgCisgICAgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCAKKyAgICA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIAorICAgIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIAorICAgIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgCisgICAgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCAKKyAgICA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIAorICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgCisgICAgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIAorICAgIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIAorICAgIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIAorICAgIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKKyAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIAorICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgCisgICAgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NSwgNjUsIDEyOCwgNzAsIDg0LCA3MiwgCisgICAgNzksIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCAKKyAgICA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA4NywgCisgICAgMjA2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDc4LCAyMTIsIDcwLCA4MiwgNzksIDIwNSwgNzAsIAorICAgIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgCisgICAgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIAorICAgIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIDIwMCwgCisgICAgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgNzUsIDIxMSwgNzAsIDgyLCAKKyAgICA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCA4MywgMTI4LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIAorICAgIDgyLCA2NSwgNzcsIDE5NywgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCAKKyAgICA3OSwgMjE2LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIAorICAgIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgCisgICAgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCAKKyAgICA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIAorICAgIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIAorICAgIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIDg0LCA3MywgCisgICAgNjksIDg0LCA3MiwgMTI4LCA3MCwgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIAorICAgIDc1LCA2OSwgMTk2LCA3MCwgNzksIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAKKyAgICAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIAorICAgIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgCisgICAgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDcwLCA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCAKKyAgICA3OCwgMjEyLCA3MCwgNzksIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIAorICAgIDc2LCA4OSwgMTI4LCA3MCwgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgCisgICAgODIsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAKKyAgICAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgCisgICAgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgCisgICAgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKKyAgICAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIAorICAgIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgCisgICAgODIsIDEyOCwgNzAsIDc2LCA3OSwgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgMTI4LCA3MCwgNzYsIDczLCA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIAorICAgIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgCisgICAgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIAorICAgIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDY2LCA4MiwgCisgICAgNjksIDY1LCA2OCwgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIAorICAgIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIDcwLCA3MywgCisgICAgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDg0LCAKKyAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3MywgODYsIAorICAgIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIDEyOCwgCisgICAgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgMTk5LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDIwMywgNzAsIAorICAgIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgMjAwLCA3MCwgCisgICAgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgNzUsIDgzLCAKKyAgICAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIDcwLCA3MywgODIsIAorICAgIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCisgICAgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCAKKyAgICA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNDUsIAorICAgIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDIxMCwgCisgICAgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIDEyOCwgNzAsIDczLCAKKyAgICA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgNDUsIAorICAgIDQ5LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgCisgICAgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgCisgICAgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCAKKyAgICA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCAKKyAgICA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MywgNjksIDc2LCAxOTYsIAorICAgIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIDg2LCAKKyAgICA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgNjksIAorICAgIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIDIwMCwgCisgICAgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDgyLCAxMjgsIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCAKKyAgICA3MCwgNjksIDc3LCA3MywgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIAorICAgIDY1LCA3NiwgMTk3LCA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAKKyAgICAxMjgsIDcwLCA2OSwgNzIsIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAKKyAgICAxMjgsIDcwLCA2OSwgNjksIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCAKKyAgICA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgCisgICAgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3MCwgNjUsIDg5LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIAorICAgIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgCisgICAgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCAKKyAgICA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCAKKyAgICA3MCwgNjUsIDgyLCA4MywgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCAKKyAgICA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgCisgICAgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAyMDYsIDcwLCA2NSwgNzQsIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIAorICAgIDg1LCAxMjgsIDcwLCA2NSwgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIAorICAgIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgCisgICAgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgCisgICAgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCAKKyAgICA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCAKKyAgICA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIAorICAgIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgCisgICAgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCAKKyAgICA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIAorICAgIDY5LCA3NywgNjksIDc2LCAyMTcsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIAorICAgIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIAorICAgIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCAKKyAgICA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCAKKyAgICA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIAorICAgIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAKKyAgICAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIAorICAgIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgCisgICAgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIAorICAgIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgCisgICAgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAKKyAgICA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCAKKyAgICA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgCisgICAgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIAorICAgIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCisgICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAorICAgIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgCisgICAgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgCisgICAgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCAKKyAgICA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIAorICAgIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgCisgICAgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCAKKyAgICA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIAorICAgIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgCisgICAgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCAKKyAgICA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIAorICAgIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIAorICAgIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgCisgICAgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgODksIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIAorICAgIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCAKKyAgICA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIAorICAgIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgCisgICAgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAKKyAgICAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgCisgICAgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCAKKyAgICA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIAorICAgIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgCisgICAgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAKKyAgICAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIAorICAgIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgCisgICAgNzQsIDIwMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCAKKyAgICA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIAorICAgIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgCisgICAgNzYsIDc2LCA3MywgODAsIDg0LCA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCAKKyAgICA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgCisgICAgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAKKyAgICAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIAorICAgIDE5NSwgNjksIDc2LCA2NiwgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgCisgICAgNzYsIDY1LCA3NywgNzMsIDg0LCAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCAKKyAgICA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIAorICAgIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgCisgICAgNzQsIDY5LCA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzMsIDY5LCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgCisgICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIAorICAgIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDY5LCAKKyAgICAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MiwgODQsIDgzLCA2NSwgMTI4LCA2OSwgNzIsIDg0LCA2NSwgMTI4LCAKKyAgICA2OSwgNzIsIDgwLCA2NSwgMTI4LCA2OSwgNzIsIDc1LCA2NSwgMTI4LCA2OSwgNzIsIDY3LCA3MiwgNjUsIDEyOCwgNjksIAorICAgIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCAxMjgsIDY5LCA3MSwgCisgICAgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCAKKyAgICA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgCisgICAgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCAKKyAgICA2OCwgMTI4LCA2OSwgNjcsIDgzLCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIAorICAgIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgODQsIDEyOCwgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgCisgICAgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCAKKyAgICA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIAorICAgIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgCisgICAgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIAorICAgIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCAKKyAgICA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCAKKyAgICA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIAorICAgIDY1LCAxMjgsIDY4LCA5MCwgODksIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIAorICAgIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIDkwLCA3MywgODQsIDY1LCAxMjgsIDY4LCA5MCwgCisgICAgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAKKyAgICAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCAKKyAgICA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAKKyAgICAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCAKKyAgICA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIAorICAgIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgCisgICAgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIAorICAgIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIAorICAgIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCAxOTksIDY4LCA4NSwgNjcsIDc1LCAxMjgsIDY4LCA4NSwgNjYsIDUwLCAxMjgsIAorICAgIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCA4MiwgODUsIAorICAgIDc3LCA4MywgODQsIDczLCA2NywgNzUsIDgzLCAxMjgsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgCisgICAgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCAKKyAgICA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzksIDc2LCA3MywgNzgsIDE5OSwgNjgsIAorICAgIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCA4NiwgCisgICAgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIDEyOCwgCisgICAgNjgsIDgyLCA2OSwgNjUsIDc3LCAyMTcsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgNjUsIDc3LCAKKyAgICAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIAorICAgIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAKKyAgICAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIAorICAgIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgODYsIAorICAgIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgCiAgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIApAQCAtNDI4NiwyNjMgKzQzMjQsODU0IEBACiAgICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKICAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAogICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCA2OCwgCi0gICAgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCAKLSAgICA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIAotICAgIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgCi0gICAgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgCi0gICAgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgCi0gICAgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCAKLSAgICA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCAKLSAgICA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIAotICAgIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgCi0gICAgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCAKLSAgICA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCAKLSAgICA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIAotICAgIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgCi0gICAgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIAotICAgIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgCi0gICAgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjgsIDczLCA4MCwgODQsIAotICAgIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgCi0gICAgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCA2NiwgNjUsIAotICAgIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgCi0gICAgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIDY4LCA3MywgCi0gICAgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCA3MywgMTkzLCAKLSAgICA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgCi0gICAgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NywgMTc4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDIwNiwgNjgsIDczLCA3MSwgNzMsIDg0LCA4MywgMTI4LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgCi0gICAgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCAKLSAgICA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIAotICAgIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCAKLSAgICA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIAotICAgIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgCi0gICAgODMsIDY5LCAyMDQsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgCi0gICAgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCAKLSAgICA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIAotICAgIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgCi0gICAgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCAKLSAgICA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIAotICAgIDc2LCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgCi0gICAgNjksIDgzLCA3MywgODMsIDQ1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgCi0gICAgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDczLCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgCi0gICAgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCAKLSAgICA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIAotICAgIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAKLSAgICA2NSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgCi0gICAgOTAsIDIwMCwgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIAotICAgIDIxMSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgCi0gICAgNzYsIDc5LCA4MCwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDc1LCAKLSAgICA4NCwgNzksIDIwOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY4LCA2OSwgODMsIAotICAgIDczLCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgODQsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCAyMTIsIDY4LCA2OSwgCi0gICAgODMsIDY5LCA4MiwgNjksIDIxMiwgNjgsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgNjgsIDY5LCAKLSAgICA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIDgyLCAxMjgsIAotICAgIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDEyOCwgCi0gICAgNjgsIDY5LCA4MiwgNjksIDc2LCA3MywgNjcsIDIxMiwgNjgsIDY5LCA4MCwgODQsIDcyLCAxMjgsIDY4LCA2OSwgODAsIDY1LCAKLSAgICA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIAotICAgIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgCi0gICAgNzgsIDg0LCA2NSwgMjA0LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCAKLSAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgCi0gICAgNzYsIDg0LCA2NSwgMTI4LCA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCAKLSAgICA4MCwgNzIsIDczLCAxOTUsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIAotICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgCi0gICAgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCAKLSAgICA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIDE5NywgNjgsIDY5LCA3NSwgNjUsIDEyOCwgNjgsIAotICAgIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIDczLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIDczLCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAyMTEsIDY4LCA2OSwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIDEyOCwgNjgsIDY5LCA2NywgCi0gICAgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCAKLSAgICA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIAotICAgIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNjcsIDczLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDc3LCA2NSwgMjA0LCA2OCwgNjksIDY3LCA3MywgNjgsIAotICAgIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjcsIDY1LCA4OSwgCi0gICAgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIDY4LCA2OSwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDY1LCAKLSAgICA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgNjgsIDg1LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4NCwgMTI4LCAKLSAgICA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDEyOCwgNjgsIDY4LCA4NSwgODAsIDEyOCwgNjgsIAotICAgIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIDY4LCA2OCwgNzksIDg0LCAxMjgsIDY4LCA2OCwgNzksIDgwLCAKLSAgICAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgNzMsIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDg0LCAxMjgsIDY4LCAKLSAgICA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIAotICAgIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCA2OCwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNjgsIDcyLCA3OSwgCi0gICAgMTI4LCA2OCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgCi0gICAgNjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCAKLSAgICA2OCwgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIAotICAgIDY1LCAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCAKLSAgICA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIAotICAgIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCA2NywgODMsIDEyOCwgNjgsIDY3LCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCA0OSwgMTI4LCA2OCwgMTk0LCAKLSAgICA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCA2OCwgNjUsIDg3LCA2NiwgCi0gICAgMTI4LCA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCAKLSAgICA2NSwgODQsIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIAotICAgIDcyLCA2OSwgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgCi0gICAgNjUsIDEyOCwgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIAotICAgIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIAotICAgIDY4LCA2NSwgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgCi0gICAgNDUsIDc3LCA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCAKLSAgICA2OSwgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIAotICAgIDEyOCwgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgCi0gICAgNzcsIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCAKLSAgICA3NywgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2OSwgODQsIDcyLCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MywgMTI4LCA2OCwgCi0gICAgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIAotICAgIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgMjAwLCAKLSAgICA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCA2OCwgNjUsIAotICAgIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA1MSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgCi0gICAgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDU1LCA3MSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDU1LCA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1MywgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIAotICAgIDU0LCA1MCwgMTI4LCA2OCwgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgCi0gICAgMTI4LCA2OCwgNDgsIDUzLCA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MywgMTI4LCA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNTEsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDgsIDcxLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDY4LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgCi0gICAgNTIsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1NCwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNjgsIDQ4LCA1MiwgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA2OCwgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MCwgNTEsIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjgsIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjgsIDQ4LCA0OSwgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNjgsIDQ4LCA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY4LCA0OCwgNDgsIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY3LCA4OSwgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIAotICAgIDgyLCA2OSwgNzgsIDY1LCA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDg5LCA4MCwgNjksIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCAKLSAgICA4MiwgNzMsIDY3LCA3MywgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIAotICAgIDg5LCAxMjgsIDY3LCA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIAotICAgIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgCi0gICAgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgCi0gICAgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCAKLSAgICA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgMTI4LCA2NywgODUsIDgzLCA4MCwgCi0gICAgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCAKLSAgICA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIAotICAgIDgyLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCA2NywgCi0gICAgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIDY3LCAKLSAgICA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCA2OCwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDE5NiwgNjcsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIAotICAgIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgCi0gICAgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCA2NSwgMjA1LCA2NywgODUsIDEyOCwgCi0gICAgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIAotICAgIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgCi0gICAgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCAKLSAgICA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCAKLSAgICA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIAotICAgIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgCi0gICAgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIAotICAgIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIAotICAgIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIDY3LCA4MiwgCi0gICAgNzMsIDY3LCA3NSwgNjksIDIxMiwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA2NywgODIsIDY5LCAKLSAgICA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCA2OSwgNjgsIAotICAgIDczLCAyMTIsIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgMTI4LCA2NywgCi0gICAgODIsIDY1LCA4OSwgNzksIDc4LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgNjUsIDY2LCAKLSAgICAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgCi0gICAgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODUsIDY3LCAKLSAgICAyMDAsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIAotICAgIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgCi0gICAgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCAKLSAgICA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIAotICAgIDIxMCwgNjcsIDc5LCA4MiwgNzUsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgCi0gICAgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCAKLSAgICA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIAotICAgIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKLSAgICA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIAotICAgIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgCi0gICAgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIAotICAgIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDczLCA3OCwgMTk5LCA2NywgCi0gICAgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIAotICAgIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA2OSwgCi0gICAgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCi0gICAgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIAotICAgIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgCi0gICAgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIAotICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgCi0gICAgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgCi0gICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCAKLSAgICA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCAKLSAgICA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIAotICAgIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgCi0gICAgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCAKLSAgICA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCAKLSAgICA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIAotICAgIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgCi0gICAgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAKLSAgICAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCAKLSAgICA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIAotICAgIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgCi0gICAgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCAKLSAgICA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIAotICAgIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgCi0gICAgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCAKLSAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIAotICAgIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgCi0gICAgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCAKLSAgICA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIAotICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIAotICAgIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgNzYsIDIwNCwgCi0gICAgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCAKLSAgICA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCA3MywgODQsIAotICAgIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIAotICAgIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCAKLSAgICA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgODIsIAotICAgIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgCi0gICAgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCAKKyAgICA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAKKyAgICAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIAorICAgIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgCisgICAgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIAorICAgIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgCisgICAgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgCisgICAgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgCisgICAgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgCisgICAgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCAKKyAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIAorICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgODUsIDg0LCA2OSwgCisgICAgMTk2LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIAorICAgIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgCisgICAgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAKKyAgICAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgCisgICAgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCAKKyAgICA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIAorICAgIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCAKKyAgICA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgCisgICAgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCAKKyAgICA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIAorICAgIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAyMDUsIDY4LCA3MywgCisgICAgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA2OCwgNzMsIDcxLCAKKyAgICA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIAorICAgIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgCisgICAgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIAorICAgIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgCisgICAgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCAKKyAgICA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MywgNjksIDIwNCwgNjgsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgCisgICAgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCAKKyAgICAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgCisgICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCAKKyAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIAorICAgIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgCisgICAgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIAorICAgIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgCisgICAgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCAKKyAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgCisgICAgMTI4LCA2OCwgNzIsIDY1LCA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIAorICAgIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgNjgsIDY5LCA4OSwgODQsIDY5LCAKKyAgICA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgNzYsIDc5LCA4MCwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDc1LCA4NCwgNzksIDIwOCwgNjgsIDY5LCA4MywgMjAzLCAKKyAgICA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY4LCA2OSwgODMsIDczLCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgODQsIAorICAgIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCAyMTIsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgNjgsIDY5LCA4MywgCisgICAgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCAKKyAgICA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgCisgICAgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDc2LCA3MywgNjcsIAorICAgIDIxMiwgNjgsIDY5LCA4MCwgODQsIDcyLCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgCisgICAgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2OCwgCisgICAgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIAorICAgIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIDc4LCA3MSwgMTI4LCA2OCwgCisgICAgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDg0LCA2NSwgMTI4LCAKKyAgICA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCA4MCwgNzIsIDczLCAxOTUsIAorICAgIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIAorICAgIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCA3NiwgNjksIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjgsIDY5LCA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIDE5NywgNjgsIDY5LCAKKyAgICA3NSwgNjUsIDEyOCwgNjgsIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIDczLCAxMjgsIDY4LCAKKyAgICA2OSwgNzEsIDgyLCA2OSwgNjksIDgzLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIAorICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAKKyAgICAyMTEsIDY4LCA2OSwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIAorICAgIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgCisgICAgNjUsIDgzLCA2OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCAKKyAgICA4NCwgNzMsIDg2LCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNjcsIAorICAgIDczLCA4MywgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDc3LCA2NSwgMjA0LCA2OCwgCisgICAgNjksIDY3LCA3MywgNjgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY4LCAKKyAgICA2OSwgNjcsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIDY4LCA2OSwgNjUsIDg0LCA3MiwgCisgICAgMTI4LCA2OCwgNjksIDY1LCA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgNjgsIDg1LCA4OCwgMTI4LCA2OCwgCisgICAgNjgsIDg1LCA4NCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDEyOCwgNjgsIDY4LCAKKyAgICA4NSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA3OSwgMTI4LCA2OCwgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIDY4LCA2OCwgNzksIDg0LCAxMjgsIAorICAgIDY4LCA2OCwgNzksIDgwLCAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgNzMsIDg4LCAxMjgsIDY4LCA2OCwgCisgICAgNzMsIDg0LCAxMjgsIDY4LCA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCA2OCwgNjgsIDcyLCA4NSwgMTI4LCAKKyAgICA2OCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgNjgsIAorICAgIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCA2OCwgCisgICAgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIDY1LCAKKyAgICAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIAorICAgIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgCisgICAgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAKKyAgICAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCA2NywgODMsIDEyOCwgNjgsIDY3LCA3MiwgNjksIDEyOCwgNjgsIDY3LCAKKyAgICA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgCisgICAgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCA2OCwgNjUsIDg3LCA2NiwgMTI4LCAKKyAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAorICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKKyAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCisgICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKKyAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCisgICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCisgICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKKyAgICA3OCwgNjcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgCisgICAgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIAorICAgIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgCisgICAgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIAorICAgIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgCisgICAgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMTI4LCA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MywgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIAorICAgIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgCisgICAgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAKKyAgICAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDcxLCAKKyAgICA1MSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCAKKyAgICA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDc2LCA3MywgMTI4LCAKKyAgICA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzEsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgCisgICAgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgMTI4LCA2OCwgNDgsIDU0LCAKKyAgICA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgNjgsIDQ4LCA1NCwgNTMsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCA1NCwgNTAsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIDQ4LCA1MywgNTMsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgNTMsIDUxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCA0OSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIDUyLCA1NiwgNjUsIDEyOCwgCisgICAgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY4LCAKKyAgICA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCA1MCwgNTcsIDEyOCwgNjgsIAorICAgIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIDY4LCA0OCwgNTAsIDUxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgNTAsIDQ4LCAxMjgsIDY4LCAKKyAgICA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAxMjgsIDY4LCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIDQ4LCAxMjgsIDY4LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgMTI4LCA2OCwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCA0OSwgMTI4LCA2NywgODksIAorICAgIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCA4MiwgNjksIDc4LCA2NSwgCisgICAgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA4OSwgODAsIDY5LCAKKyAgICA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgODIsIDczLCA2NywgNzMsIAorICAgIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCA4OSwgMTI4LCA2NywgCisgICAgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgCisgICAgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCAKKyAgICA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCAKKyAgICA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIAorICAgIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIDEyOCwgNjcsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgNjksIDY4LCAxMjgsIDY3LCAKKyAgICA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIAorICAgIDg1LCA4MiwgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCA2OCwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIAorICAgIDE5NiwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIAorICAgIDIwNSwgNjcsIDg1LCA2NywgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY3LCA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgCisgICAgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCAKKyAgICA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCAKKyAgICA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIAorICAgIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgCisgICAgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCAKKyAgICA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgCisgICAgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCAKKyAgICA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgCisgICAgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCAKKyAgICA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIAorICAgIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgCisgICAgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA3MywgODMsIDgzLCA2NSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDY3LCA4MiwgNzMsIDY3LCA3NSwgNjksIDIxMiwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA2NywgCisgICAgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCAKKyAgICA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgCisgICAgMTI4LCA2NywgODIsIDY1LCA4OSwgNzksIDc4LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA4MiwgNjUsIDY2LCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDY2LCA3OSwgMjE3LCAKKyAgICA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIAorICAgIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgCisgICAgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCAKKyAgICA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIAorICAgIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCAKKyAgICA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIAorICAgIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgCisgICAgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCAKKyAgICA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIAorICAgIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgCisgICAgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAKKyAgICAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIAorICAgIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgCisgICAgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCAKKyAgICA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgCisgICAgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIAorICAgIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIAorICAgIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgCisgICAgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCAKKyAgICA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIAorICAgIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKKyAgICA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIAorICAgIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgCisgICAgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCAKKyAgICA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIAorICAgIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCAKKyAgICA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIAorICAgIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgCisgICAgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgMjA0LCAKKyAgICA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgMTI4LCA2NywgMjA1LCAKKyAgICA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgNzYsIDg1LCA2NiwgNDUsIAorICAgIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAxOTQsIDY3LCA3NiwgCisgICAgNzksIDg3LCAyMDYsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCAKKyAgICA3NiwgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgCisgICAgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgCisgICAgNzUsIDg3LCA3MywgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCAKKyAgICA2NywgNzYsIDczLCA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3NiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgCisgICAgNzYsIDczLCA3MCwgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIAorICAgIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIAorICAgIDY3LCA3NiwgNjksIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgCisgICAgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAKKyAgICAyMTAsIDY3LCA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIAorICAgIDc2LCAyMDQsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIAorICAgIDg2LCA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgCisgICAgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAorICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCisgICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgCisgICAgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKICAgICAyMDYsIDY3LCA3MywgMjA1LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKICAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCiAgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIApAQCAtNDU3NiwzMDAgKzUyMDUsMzA0IEBACiAgICAgODYsIDgyLCA3OSwgMjA2LCA2NywgNzIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDc4LCA4NSwgODQsIAogICAgIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCAyMTEsIDY3LCA3MiwgNjksIDgyLCA4OSwgCiAgICAgMTI4LCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAotICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNjksIDY5LCAKLSAgICA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgNzUsIDIxMSwgNjcsIAotICAgIDcyLCA2OSwgNjksIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgNjksIDIxMCwgCi0gICAgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCAKLSAgICA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIAotICAgIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCA4NCwgNjksIDgyLCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCAKLSAgICA3MywgODIsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIAotICAgIDcyLCA2NSwgMTk2LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNzEsIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIAotICAgIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgCi0gICAgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCAKLSAgICA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgCi0gICAgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgCi0gICAgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgCi0gICAgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgCi0gICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA2OCwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIAotICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgCi0gICAgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCA3NiwgODQsIDczLCAKLSAgICAxOTUsIDY3LCA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgMTk5LCA2NywgNjksIDY5LCA4NiwgMTI4LCA2NywgNjksIDY5LCA2NiwgMTI4LCAKLSAgICA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIAotICAgIDE5MywgNjcsIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIAotICAgIDY3LCA2OSwgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgCi0gICAgNzksIDEyOCwgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgCi0gICAgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIAotICAgIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAotICAgIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NywgNjUsIDg1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgCi0gICAgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgCi0gICAgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKLSAgICA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIAotICAgIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgCi0gICAgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCAKLSAgICA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIAotICAgIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgCi0gICAgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIAotICAgIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgCi0gICAgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCAKLSAgICA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIAotICAgIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgCi0gICAgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIAotICAgIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCAKLSAgICA3NywgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCA2NSwgNzYsIDY3LCAKLSAgICA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgCi0gICAgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCAKLSAgICA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIAotICAgIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgCi0gICAgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCAKLSAgICA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIAotICAgIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgCi0gICAgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCAKLSAgICA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIAotICAgIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDIwNiwgCi0gICAgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCAKLSAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgODMsIDczLCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4NSwgMjExLCA2NiwgODUsIAotICAgIDgyLCAyMTMsIDY2LCA4NSwgODIsIDgyLCA3MywgODQsIDc5LCAxMjgsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgCi0gICAgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCAKLSAgICA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIAotICAgIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgMjA2LCA2NiwgCi0gICAgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCAKLSAgICA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIAotICAgIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIDcxLCAKLSAgICAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjgsIDEyOCwgNjYsIDg1LCA2NywgNzUsIAotICAgIDc2LCA2OSwgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCA4MywgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCAKLSAgICAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCAKLSAgICA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIAotICAgIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgCi0gICAgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCAKLSAgICA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIAotICAgIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgCi0gICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCAKLSAgICA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAotICAgIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgCi0gICAgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCAKLSAgICA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIAotICAgIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgCi0gICAgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgCi0gICAgNjYsIDc5LCA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAKLSAgICAxMjgsIDY2LCA3OSwgODcsIDIwNCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCAKLSAgICA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCAyMTIsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIAotICAgIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgCi0gICAgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIAotICAgIDE5NywgNjYsIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgCi0gICAgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCAKLSAgICA2NiwgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIAotICAgIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgCi0gICAgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCAKLSAgICA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIAotICAgIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgCi0gICAgMTI4LCA2NiwgNzksIDY4LCAyMTcsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgCi0gICAgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCAKLSAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCAyMTUsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgCi0gICAgNjYsIDc2LCA3MywgNzgsIDIwMywgNjYsIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIAotICAgIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgCi0gICAgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKLSAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIAotICAgIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgCi0gICAgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIAotICAgIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgCi0gICAgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCAKLSAgICA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIAotICAgIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgCi0gICAgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAKLSAgICAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIAotICAgIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgCi0gICAgODMsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCAKLSAgICA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIAotICAgIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIAotICAgIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgCi0gICAgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIAotICAgIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgCi0gICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKLSAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAotICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAotICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKLSAgICA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCAKLSAgICA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIAotICAgIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgCi0gICAgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCAKLSAgICA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIAotICAgIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKLSAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKLSAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAotICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgCi0gICAgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAKLSAgICAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgCi0gICAgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIAotICAgIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIAotICAgIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgCi0gICAgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAKLSAgICAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIAotICAgIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgCi0gICAgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAKLSAgICAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgCi0gICAgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCAKLSAgICA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIAotICAgIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgCi0gICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIAotICAgIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgCi0gICAgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIAotICAgIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIAotICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgCi0gICAgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIAotICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKLSAgICA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIAotICAgIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgCi0gICAgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCAKLSAgICA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIAotICAgIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgCi0gICAgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCAKLSAgICA3OCwgODQsIDc5LCAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIAotICAgIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgCi0gICAgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCAKLSAgICA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIAotICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIAotICAgIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgCi0gICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIAotICAgIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIAotICAgIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgCi0gICAgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgCi0gICAgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAKLSAgICAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIAotICAgIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIAotICAgIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCAKLSAgICA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCAKLSAgICA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIAotICAgIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgCi0gICAgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgCi0gICAgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgCi0gICAgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIAotICAgIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIAotICAgIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIAotICAgIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgCi0gICAgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgCi0gICAgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgCi0gICAgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgCi0gICAgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgCi0gICAgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgCi0gICAgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgCi0gICAgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCAKLSAgICA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCAKLSAgICA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIAotICAgIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCAKLSAgICA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIAotICAgIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIAotICAgIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIAotICAgIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIAotICAgIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCAKLSAgICA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCAKLSAgICA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCAKLSAgICA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKLSAgICA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCAKLSAgICA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCAKLSAgICA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCAKLSAgICA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCAKLSAgICA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAKLSAgICAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgCi0gICAgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgCi0gICAgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgCi0gICAgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAKLSAgICAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCAKLSAgICA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIAotICAgIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgNjksIAotICAgIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIAotICAgIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCAKLSAgICA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCAKLSAgICA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCi0gICAgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAKLSAgICAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgCi0gICAgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgCi0gICAgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCAKLSAgICA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIAotICAgIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCAKLSAgICA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgCi0gICAgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgCi0gICAgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCAKLSAgICA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAKLSAgICAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MywgNzIsIAotICAgIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKLSAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAorICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3OCwgCisgICAgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCAKKyAgICA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgNzUsIDIxMSwgNjcsIDcyLCA2OSwgNjksIDc1LCAKKyAgICAxMjgsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgNjksIDIxMCwgNjcsIDcyLCA2OSwgNjcsIAorICAgIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCAKKyAgICA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIAorICAgIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgCisgICAgNzIsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCA3MywgODIsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzMsIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIDcyLCA2NSwgMTk2LCA2NywgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA2NywgNzEsIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIAorICAgIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgCisgICAgNDUsIDg3LCA2NSwgMTI4LCA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIAorICAgIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCAKKyAgICA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIAorICAgIDgyLCA3MywgNjUsIDIwNCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgCisgICAgODIsIDY5LCA2OCwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIAorICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCA3NiwgODQsIDczLCAxOTUsIDY3LCA2OSwgNzYsIDgzLCAKKyAgICA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNjksIAorICAgIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA2NywgNjksIDY5LCA4NiwgMTI4LCA2NywgNjksIDY5LCA2NiwgMTI4LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgCisgICAgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIDY5LCA2OCwgMjAxLCAKKyAgICA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCAyMDMsIAorICAgIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgNjcsIDY3LCA3MywgCisgICAgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MywgMTI4LCA2NywgCisgICAgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3MywgMTI4LCAKKyAgICA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIAorICAgIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgCisgICAgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgCisgICAgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAKKyAgICAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIAorICAgIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgCisgICAgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCAKKyAgICA2NSwgMjA2LCA2NywgNjUsIDg1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCAKKyAgICA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIAorICAgIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA4MiwgODQsIDgyLCA3MywgNjgsIDcxLCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAKKyAgICAyMTEsIDY3LCA2NSwgODIsIDgyLCA3OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIAorICAgIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgCisgICAgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAKKyAgICAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIAorICAgIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIAorICAgIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIAorICAgIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAKKyAgICAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA3OSwgNjksIDEyOCwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA4MCwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCAKKyAgICA2OSwgODIsIDE5MywgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgNjUsIAorICAgIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAyMDQsIAorICAgIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgCisgICAgNjUsIDc2LCA2NywgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCAKKyAgICA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCAKKyAgICA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIAorICAgIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgCisgICAgNjcsIDY1LCA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIAorICAgIDY5LCA2OSwgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAKKyAgICA2NywgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA2NywgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgCisgICAgOTAsIDcyLCAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCAKKyAgICA3OCwgNDUsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIAorICAgIDEyOCwgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIAorICAgIDc3LCA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA4NSwgODQsIDg0LCA2OSwgODIsIDcwLCA3NiwgODksIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIAorICAgIDg0LCAyMTEsIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgCisgICAgODMsIDczLCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4NSwgMjExLCA2NiwgODUsIDgyLCAyMTMsIDY2LCA4NSwgODIsIDgyLCAKKyAgICA3MywgODQsIDc5LCAxMjgsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIAorICAgIDc3LCA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgCisgICAgNzYsIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAKKyAgICA3OCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgMjA2LCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgCisgICAgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCAKKyAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgMTk5LCA2NiwgODUsIDcyLCA3MywgCisgICAgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCAKKyAgICA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjgsIDEyOCwgNjYsIDg1LCA2NywgNzUsIDc2LCA2OSwgMTI4LCA2NiwgODUsIAorICAgIDY2LCA2NiwgNzYsIDY5LCA4MywgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgCisgICAgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgCisgICAgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCAKKyAgICA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIAorICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgCisgICAgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCAKKyAgICA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIAorICAgIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgCisgICAgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNjksIDgzLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgCisgICAgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCAKKyAgICA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgCisgICAgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDgwLCA3MiwgMTI4LCA2NiwgNzksIDg5LCAyMTEsIDY2LCA3OSwgODksIDEyOCwgNjYsIAorICAgIDc5LCA4OCwgNzMsIDc4LCAxOTksIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCAKKyAgICAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAxMjgsIDY2LCA3OSwgODcsIAorICAgIDIwNCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgCisgICAgMTI4LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCAyMTIsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCAKKyAgICA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgCisgICAgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCA2NiwgNzksIDg0LCAKKyAgICA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIDE5NywgNjYsIAorICAgIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUxLCAKKyAgICAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCA2NiwgNzksIAorICAgIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIDEyOCwgCisgICAgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgNjYsIDc5LCAKKyAgICA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDY2LCA3OSwgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIAorICAgIDc5LCA3NiwgMjEyLCA2NiwgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgCisgICAgNzksIDY4LCAyMTcsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgCisgICAgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCA3MCwgNzMsIDgzLCAKKyAgICA3MiwgMTI4LCA2NiwgNzYsIDc5LCAyMTUsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCA3NiwgNzksIAorICAgIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIDc2LCA3MywgCisgICAgNzgsIDIwMywgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKKyAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIAorICAgIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgCisgICAgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCAKKyAgICA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgCisgICAgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgCisgICAgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA3MSwgMTkzLCA2NiwgNzMsIDgyLCAKKyAgICA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIAorICAgIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgCisgICAgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCAKKyAgICA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIAorICAgIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIAorICAgIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgCisgICAgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCAKKyAgICA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIAorICAgIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAKKyAgICAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCAKKyAgICA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCAKKyAgICA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIAorICAgIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIAorICAgIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDg0LCAxMjgsIDY2LCA2OSwgNzgsIDIxMiwgNjYsIDY5LCA3OCwgCisgICAgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgNzgsIDE5NiwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgCisgICAgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDcyLCAKKyAgICA3OSwgMjA4LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIAorICAgIDc5LCAyMTAsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgCisgICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgCisgICAgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCAKKyAgICA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIAorICAgIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIAorICAgIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgCisgICAgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgCisgICAgNjYsIDY5LCA2NSwgNjgsIDgzLCAxMjgsIDY2LCA2OSwgNjUsIDY3LCAyMDAsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCAKKyAgICA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIAorICAgIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIAorICAgIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAKKyAgICAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCAKKyAgICA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgCisgICAgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgCisgICAgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAKKyAgICAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgCisgICAgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCAKKyAgICA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCAKKyAgICA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA4MywgMTkzLCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIAorICAgIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgCisgICAgNjksIDc2LCA3MywgNzgsIDE5NywgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAKKyAgICAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIAorICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgCisgICAgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCAKKyAgICA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIAorICAgIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIAorICAgIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgCisgICAgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIAorICAgIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIDc2LCA3NiwgODAsIDc5LCA3MywgNzgsIDIxMiwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA4NCwgMTI4LCA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCAKKyAgICA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIAorICAgIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgCisgICAgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCAKKyAgICA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIAorICAgIDY2LCA2NSwgNzIsIDY1LCA4MiwgMTc4LCA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDg1LCA2OSwgODQsIDg0LCAKKyAgICAxOTcsIDY2LCA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIDY1LCA3MSwgNjUsIAorICAgIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDc3LCA3MywgNzgsIDg0LCA3OSwgCisgICAgMjA2LCA2NiwgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAKKyAgICAxMjgsIDY2LCA2NSwgMTk2LCA2NiwgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3OSwgNzgsIAorICAgIDEyOCwgNjYsIDY1LCA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgCisgICAgNjksIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCAKKyAgICA2NSwgODMsIDIwMCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIAorICAgIDcyLCA2NSwgNzgsIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgCisgICAgNzUsIDEyOCwgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgCisgICAgNjUsIDgyLCA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDU0LCAxMjgsIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgCisgICAgNTcsIDEyOCwgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgCisgICAgNTAsIDUyLCA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgCisgICAgNTAsIDUyLCAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgCisgICAgNjYsIDUwLCA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAKKyAgICAxMjgsIDY2LCA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCAKKyAgICA1MCwgNTAsIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCAKKyAgICA2NiwgNTAsIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIAorICAgIDQ5LCA1NCwgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgCisgICAgMTI4LCA2NiwgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgCisgICAgNTAsIDQ4LCA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NiwgNTAsIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIAorICAgIDU3LCAxNzcsIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIAorICAgIDY2LCA0OSwgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgCisgICAgNTYsIDQ5LCAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAKKyAgICAxMjgsIDY2LCA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NSwgMTc5LCA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCAKKyAgICA2NiwgNDksIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIAorICAgIDU0LCA1NCwgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIAorICAgIDY2LCA0OSwgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgCisgICAgMTg1LCA2NiwgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgCisgICAgNTMsIDUzLCAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCAKKyAgICA1MiwgMTgxLCA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCAKKyAgICA1MSwgMTgxLCA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCAKKyAgICA1MSwgMTc2LCA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAKKyAgICAxNzksIDY2LCA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAKKyAgICAyMDUsIDY2LCA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCAKKyAgICA0OSwgNDgsIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIAorICAgIDU0LCAxOTgsIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIAorICAgIDQ5LCA0OCwgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIAorICAgIDU3LCAxNzYsIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIAorICAgIDQ4LCA1NiwgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIAorICAgIDY2LCA0OCwgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIAorICAgIDY2LCA0OCwgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIAorICAgIDQ4LCA1NSwgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIAorICAgIDU0LCAxODQsIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIAorICAgIDUyLCAxMjgsIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIAorICAgIDU0LCAxNzYsIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIAorICAgIDU0LCAxMjgsIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIAorICAgIDE3OCwgNjYsIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIAorICAgIDE4NCwgNjYsIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIAorICAgIDE4MCwgNjYsIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCAKKyAgICA2NiwgNDgsIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCAKKyAgICA0OCwgNTEsIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCAKKyAgICA1MCwgMTgyLCA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCAKKyAgICA0OSwgMTgwLCA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAKKyAgICAxNzYsIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OCwgMTg0LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCAKKyAgICA0OCwgNDgsIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE4MSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIAorICAgIDQ4LCAxNzksIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIAorICAgIDQ4LCA0OCwgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIAorICAgIDg4LCA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA3OSwgNjcsIDY1LCA2OCwgCisgICAgNzksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCAKKyAgICA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgCisgICAgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAKKyAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIAorICAgIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCAKKyAgICA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCisgICAgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCAKKyAgICA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIAorICAgIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgCisgICAgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAKKyAgICAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIAorICAgIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgCisgICAgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDg0LCA3MiwgNDUsIDg0LCA3MiwgNjUsIDc2LCA2NSwgCisgICAgODQsIDcyLCA2NSwgMTI4LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIDg5LCAKKyAgICA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCA3OSwgCisgICAgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY1LCAKKyAgICA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAxMjgsIAorICAgIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDEyOCwgCisgICAgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIAorICAgIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgCisgICAgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCA1MSwgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgCisgICAgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCAKKyAgICA1MCwgMTI4LCA2NSwgODMsIDQ1LCA4MywgNjUsIDc0LCA2OCwgNjUsIDEyOCwgNjUsIDgyLCA4NSwgNzIsIDg1LCA2NSwgCisgICAgMTI4LCA2NSwgODIsIDg0LCAyMTEsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKICAgICA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgCiAgICAgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCAKICAgICA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIApAQCAtNDg5Miw0MiArNTUyNSw0MyBAQAogICAgIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgCiAgICAgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAKICAgICAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIAotICAgIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgCi0gICAgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCAKLSAgICA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIAotICAgIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIAotICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgCi0gICAgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCAKLSAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIAotICAgIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIAotICAgIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgCi0gICAgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIAotICAgIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAotICAgIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKLSAgICA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIAotICAgIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgCi0gICAgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCAKLSAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgCi0gICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCAKLSAgICA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgCi0gICAgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIAotICAgIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgCi0gICAgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCAKLSAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIAotICAgIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIAotICAgIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgCi0gICAgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCAKLSAgICA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIAotICAgIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgCi0gICAgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCAKLSAgICA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIAotICAgIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAKLSAgICAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIAorICAgIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDg1LCA2NiwgCisgICAgMTI4LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCAKKyAgICA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIAorICAgIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgCisgICAgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCAKKyAgICA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIAorICAgIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgODQsIAorICAgIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgCisgICAgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCAKKyAgICA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgCisgICAgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIAorICAgIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OSwgODUsIDEyOCwgNjUsIDc5LCA4MiwgMTI4LCA2NSwgCisgICAgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgCisgICAgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCAKKyAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgCisgICAgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIAorICAgIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgCisgICAgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIAorICAgIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCAKKyAgICA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIAorICAgIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgCisgICAgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAKKyAgICAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgCisgICAgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKKyAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDQ1LCA3OCwgNzMsIDgzLCA3MCwgCiAgICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA3MiwgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzcsIDgwLCAKICAgICA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgMTk2LCA2NSwgNzcsIAogICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCA3MywgCkBAIC00OTQxLDExNTgwICs1NTc1LDEyMDYyIEBACiAgICAgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCAKICAgICA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIAogICAgIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgCi0gICAgNzcsIDEyOCwgNjUsIDc2LCA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNzYsIDIwMSwgNjUsIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIAotICAgIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgCi0gICAgODUsIDEyOCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAyMDYsIDY1LCA3NiwgNzEsIDczLCAKLSAgICAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCA3NiwgNjksIDgyLCA4NCwgMTI4LCAKLSAgICA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIDEyOCwgNjUsIDc2LCA2OSwgNzAsIAotICAgIDEyOCwgNjUsIDc2LCA2NiwgNjUsIDc4LCA3MywgNjUsIDIwNiwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAxMjgsIDY1LCAKLSAgICA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIDc2LCA4MywgCi0gICAgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgMTk1LCAKLSAgICA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgNjUsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCA3OSwgCi0gICAgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIAotICAgIDE5NywgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIDc2LCA3NywgMTI4LCA2NSwgNzMsIAotICAgIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgNjUsIDcyLCA4MywgNjgsIDY1LCAKLSAgICAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNzksIDIwNSwgNjUsIDcyLCA2NSwgNzgsIDE5OSwgNjUsIDcyLCAKLSAgICA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIAotICAgIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgCi0gICAgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCA4MywgMjEyLCA2NSwgNzEsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIAotICAgIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCAKLSAgICA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgCi0gICAgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAKLSAgICAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCAKLSAgICA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIAotICAgIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCAKLSAgICA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA2NSwgCi0gICAgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCAKLSAgICA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIAotICAgIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCAKLSAgICA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIAotICAgIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgCi0gICAgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIAotICAgIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgCi0gICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCA3OSwgNzcsIDc3LCA3OSwgNjgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgCi0gICAgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIAotICAgIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgCi0gICAgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCAKLSAgICA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY2LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA1NiwgMTI4LCA2NSwgCi0gICAgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU0LCA1MiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ5LCA1MSwgNDksIDY2LCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjUsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIAotICAgIDUxLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgCi0gICAgNDksIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTYsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTUsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTIsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgCi0gICAgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1NCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OCwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKLSAgICA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDUyLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDUxLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ4LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU1LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAotICAgIDUxLCA3NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3NywgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MCwgNTAsIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDc3LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY1LCA2NSwgODksIDczLCA3OCwgMTI4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgCi0gICAgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgCi0gICAgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCAKLSAgICA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNTUsIDEyOCwgNjUsIDU2LCA0OCwgCi0gICAgNTQsIDEyOCwgNjUsIDU2LCA0OCwgNTMsIDEyOCwgNjUsIDU2LCA0OCwgNTIsIDEyOCwgNjUsIDU2LCA0OCwgNTEsIDEyOCwgCi0gICAgNjUsIDU2LCA0OCwgNTAsIDEyOCwgNjUsIDU2LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNDgsIDEyOCwgNjUsIDU1LCAKLSAgICA1MSwgMTc4LCA2NSwgNTUsIDUwLCAxODIsIDY1LCA1NSwgNDksIDE4MywgNjUsIDU1LCA0OSwgMTgxLCA2NSwgNTUsIDQ5LCAKLSAgICAxODAsIDY1LCA1NSwgNDksIDE3OSwgNjUsIDU1LCA0OSwgMTc4LCA2NSwgNTUsIDQ5LCAxNzcsIDY1LCA1NSwgNDksIDE3NiwgCi0gICAgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODIsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgwLCA2NSwgNTUsIDQ4LCA1NywgNDUsIAotICAgIDE3OSwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxNzgsIDY1LCA1NSwgNDgsIDE4NSwgNjUsIDU1LCA0OCwgMTg0LCA2NSwgNTUsIAotICAgIDQ4LCAxODMsIDY1LCA1NSwgNDgsIDE4MiwgNjUsIDU1LCA0OCwgMTgxLCA2NSwgNTUsIDQ4LCAxODAsIDY1LCA1NSwgNDgsIAotICAgIDE3OSwgNjUsIDU1LCA0OCwgMTc4LCA2NSwgNTUsIDQ4LCAxNzcsIDY1LCA1NCwgNTQsIDUyLCAxMjgsIDY1LCA1NCwgNTQsIAotICAgIDUxLCAxMjgsIDY1LCA1NCwgNTQsIDUwLCAxMjgsIDY1LCA1NCwgNTQsIDQ5LCAxMjgsIDY1LCA1NCwgNTQsIDQ4LCAxMjgsIAotICAgIDY1LCA1NCwgNTMsIDU3LCAxMjgsIDY1LCA1NCwgNTMsIDU2LCAxMjgsIDY1LCA1NCwgNTMsIDU1LCAxMjgsIDY1LCA1NCwgCi0gICAgNTMsIDU0LCAxMjgsIDY1LCA1NCwgNTMsIDUzLCAxMjgsIDY1LCA1NCwgNTMsIDUyLCAxMjgsIDY1LCA1NCwgNTMsIDUxLCAKLSAgICAxMjgsIDY1LCA1NCwgNTMsIDUwLCAxMjgsIDY1LCA1NCwgNTMsIDQ5LCAxMjgsIDY1LCA1NCwgNTIsIDU3LCAxMjgsIDY1LCAKLSAgICA1NCwgNTIsIDU2LCAxMjgsIDY1LCA1NCwgNTIsIDU0LCAxMjgsIDY1LCA1NCwgNTIsIDUzLCAxMjgsIDY1LCA1NCwgNTIsIAotICAgIDUyLCAxMjgsIDY1LCA1NCwgNTIsIDUxLCAxMjgsIDY1LCA1NCwgNTIsIDUwLCAxMjgsIDY1LCA1NCwgNTIsIDQ4LCAxMjgsIAotICAgIDY1LCA1NCwgNTEsIDU2LCAxMjgsIDY1LCA1NCwgNTEsIDU1LCAxMjgsIDY1LCA1NCwgNTEsIDUyLCAxMjgsIDY1LCA1NCwgCi0gICAgNTAsIDU3LCAxMjgsIDY1LCA1NCwgNTAsIDU2LCAxMjgsIDY1LCA1NCwgNTAsIDU1LCAxMjgsIDY1LCA1NCwgNTAsIDU0LCAKLSAgICAxMjgsIDY1LCA1NCwgNTAsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDUxLCAxMjgsIDY1LCA1NCwgNTAsIDUwLCAxMjgsIDY1LCAKLSAgICA1NCwgNTAsIDQ5LCAxMjgsIDY1LCA1NCwgNTAsIDQ4LCAxMjgsIDY1LCA1NCwgNDksIDU3LCAxMjgsIDY1LCA1NCwgNDksIAotICAgIDU2LCAxMjgsIDY1LCA1NCwgNDksIDU1LCAxMjgsIDY1LCA1NCwgNDksIDU0LCAxMjgsIDY1LCA1NCwgNDksIDUzLCAxMjgsIAotICAgIDY1LCA1NCwgNDksIDUyLCAxMjgsIDY1LCA1NCwgNDksIDUxLCAxMjgsIDY1LCA1NCwgNDksIDUwLCAxMjgsIDY1LCA1NCwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA1NCwgNDksIDQ4LCAxMjgsIDY1LCA1NCwgNDgsIDU3LCAxMjgsIDY1LCA1NCwgNDgsIDU2LCAKLSAgICAxMjgsIDY1LCA1NCwgNDgsIDU0LCAxMjgsIDY1LCA1NCwgNDgsIDUyLCAxMjgsIDY1LCA1NCwgNDgsIDUxLCAxMjgsIDY1LCAKLSAgICA1NCwgNDgsIDUwLCAxMjgsIDY1LCA1NCwgNDgsIDQ5LCAxMjgsIDY1LCA1NCwgNDgsIDQ4LCAxMjgsIDY1LCA1MywgNTcsIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNTcsIDU0LCAxMjgsIDY1LCA1MywgNTcsIDUzLCAxMjgsIDY1LCA1MywgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA1MywgNTcsIDUwLCAxMjgsIDY1LCA1MywgNTcsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDU3LCAxMjgsIDY1LCA1MywgCi0gICAgNTYsIDU2LCAxMjgsIDY1LCA1MywgNTYsIDU1LCAxMjgsIDY1LCA1MywgNTYsIDU0LCAxMjgsIDY1LCA1MywgNTYsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTYsIDUyLCAxMjgsIDY1LCA1MywgNTYsIDUxLCAxMjgsIDY1LCA1MywgNTYsIDUwLCAxMjgsIDY1LCAKLSAgICA1MywgNTYsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDQ4LCAxMjgsIDY1LCA1MywgNTUsIDU3LCAxMjgsIDY1LCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNTUsIDU1LCAxMjgsIDY1LCA1MywgNTUsIDU0LCAxMjgsIDY1LCA1MywgNTUsIDUzLCAxMjgsIAotICAgIDY1LCA1MywgNTUsIDUyLCAxMjgsIDY1LCA1MywgNTUsIDUxLCAxMjgsIDY1LCA1MywgNTUsIDUwLCAxMjgsIDY1LCA1MywgCi0gICAgNTUsIDQ5LCAxMjgsIDY1LCA1MywgNTUsIDQ4LCAxMjgsIDY1LCA1MywgNTQsIDU3LCAxMjgsIDY1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY1LCA1MywgNTQsIDU0LCAxMjgsIDY1LCA1MywgNTQsIDUzLCAxMjgsIDY1LCA1MywgNTQsIDUyLCAxMjgsIDY1LCAKLSAgICA1MywgNTQsIDUxLCAxMjgsIDY1LCA1MywgNTMsIDU3LCAxMjgsIDY1LCA1MywgNTMsIDU1LCAxMjgsIDY1LCA1MywgNTMsIAotICAgIDU0LCAxMjgsIDY1LCA1MywgNTMsIDUzLCAxMjgsIDY1LCA1MywgNTMsIDUyLCAxMjgsIDY1LCA1MywgNTMsIDUxLCAxMjgsIAotICAgIDY1LCA1MywgNTMsIDUwLCAxMjgsIDY1LCA1MywgNTMsIDQ5LCAxMjgsIDY1LCA1MywgNTMsIDQ4LCAxMjgsIDY1LCA1MywgCi0gICAgNTIsIDU3LCAxMjgsIDY1LCA1MywgNTIsIDU2LCAxMjgsIDY1LCA1MywgNTIsIDU1LCAxMjgsIDY1LCA1MywgNTIsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTIsIDUwLCAxMjgsIDY1LCA1MywgNTIsIDQ5LCAxMjgsIDY1LCA1MywgNTIsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MywgNTEsIDU3LCAxMjgsIDY1LCA1MywgNTEsIDU2LCAxMjgsIDY1LCA1MywgNTEsIDU1LCAxMjgsIDY1LCA1MywgNTEsIAotICAgIDU0LCAxMjgsIDY1LCA1MywgNTEsIDUzLCAxMjgsIDY1LCA1MywgNTEsIDUyLCAxMjgsIDY1LCA1MywgNTEsIDUwLCAxMjgsIAotICAgIDY1LCA1MywgNTEsIDQ5LCAxMjgsIDY1LCA1MywgNTEsIDQ4LCAxMjgsIDY1LCA1MywgNTAsIDU3LCAxMjgsIDY1LCA1MywgCi0gICAgNTAsIDU2LCAxMjgsIDY1LCA1MywgNTAsIDU1LCAxMjgsIDY1LCA1MywgNTAsIDU0LCAxMjgsIDY1LCA1MywgNTAsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTAsIDUyLCAxMjgsIDY1LCA1MywgNTAsIDUxLCAxMjgsIDY1LCA1MywgNTAsIDUwLCAxMjgsIDY1LCAKLSAgICA1MywgNTAsIDQ5LCAxMjgsIDY1LCA1MywgNTAsIDQ4LCAxMjgsIDY1LCA1MywgNDksIDU3LCAxMjgsIDY1LCA1MywgNDksIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNDksIDU1LCAxMjgsIDY1LCA1MywgNDksIDU0LCAxMjgsIDY1LCA1MywgNDksIDUzLCAxMjgsIAotICAgIDY1LCA1MywgNDksIDUyLCAxMjgsIDY1LCA1MywgNDksIDUxLCAxMjgsIDY1LCA1MywgNDksIDUwLCAxMjgsIDY1LCA1MywgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA1MywgNDksIDQ4LCAxMjgsIDY1LCA1MywgNDgsIDU3LCAxMjgsIDY1LCA1MywgNDgsIDU2LCAKLSAgICAxMjgsIDY1LCA1MywgNDgsIDU1LCAxMjgsIDY1LCA1MywgNDgsIDU0LCAxMjgsIDY1LCA1MywgNDgsIDUzLCAxMjgsIDY1LCAKLSAgICA1MywgNDgsIDUyLCAxMjgsIDY1LCA1MywgNDgsIDUxLCAxMjgsIDY1LCA1MywgNDgsIDUwLCAxMjgsIDY1LCA1MywgNDgsIAotICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTcsIDU1LCAxMjgsIDY1LCA1MiwgNTcsIDU0LCAxMjgsIDY1LCA1MiwgNTcsIDUzLCAxMjgsIAotICAgIDY1LCA1MiwgNTcsIDUyLCAxMjgsIDY1LCA1MiwgNTcsIDUxLCAxMjgsIDY1LCA1MiwgNTcsIDUwLCAxMjgsIDY1LCA1MiwgCi0gICAgNTcsIDQ5LCAxMjgsIDY1LCA1MiwgNTcsIDQ4LCAxMjgsIDY1LCA1MiwgNTYsIDU3LCAxMjgsIDY1LCA1MiwgNTYsIDU2LCAKLSAgICAxMjgsIDY1LCA1MiwgNTYsIDU1LCAxMjgsIDY1LCA1MiwgNTYsIDU0LCAxMjgsIDY1LCA1MiwgNTYsIDUzLCAxMjgsIDY1LCAKLSAgICA1MiwgNTYsIDUyLCAxMjgsIDY1LCA1MiwgNTYsIDUxLCAxMjgsIDY1LCA1MiwgNTYsIDUwLCAxMjgsIDY1LCA1MiwgNTYsIAotICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTYsIDQ4LCAxMjgsIDY1LCA1MiwgNTUsIDU3LCAxMjgsIDY1LCA1MiwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA1MiwgNTUsIDU1LCAxMjgsIDY1LCA1MiwgNTUsIDU0LCAxMjgsIDY1LCA1MiwgNTUsIDUzLCAxMjgsIDY1LCA1MiwgCi0gICAgNTUsIDUyLCAxMjgsIDY1LCA1MiwgNTUsIDUxLCAxMjgsIDY1LCA1MiwgNTUsIDUwLCAxMjgsIDY1LCA1MiwgNTUsIDQ5LCAKLSAgICAxMjgsIDY1LCA1MiwgNTUsIDQ4LCAxMjgsIDY1LCA1MiwgNTQsIDU3LCAxMjgsIDY1LCA1MiwgNTQsIDU2LCAxMjgsIDY1LCAKLSAgICA1MiwgNTQsIDU1LCAxMjgsIDY1LCA1MiwgNTQsIDU0LCAxMjgsIDY1LCA1MiwgNTQsIDUzLCAxMjgsIDY1LCA1MiwgNTQsIAotICAgIDUyLCAxMjgsIDY1LCA1MiwgNTQsIDUxLCAxMjgsIDY1LCA1MiwgNTQsIDUwLCAxMjgsIDY1LCA1MiwgNTQsIDQ5LCAxMjgsIAotICAgIDY1LCA1MiwgNTQsIDQ4LCAxMjgsIDY1LCA1MiwgNTMsIDU3LCAxMjgsIDY1LCA1MiwgNTMsIDU2LCAxMjgsIDY1LCA1MiwgCi0gICAgNTMsIDU1LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA1NSwgMTI4LCA2NSwgNTIsIDUzLCA1NCwgMTI4LCA2NSwgNTIsIDUzLCAKLSAgICA1MywgMTI4LCA2NSwgNTIsIDUzLCA1MiwgMTI4LCA2NSwgNTIsIDUzLCA1MSwgMTI4LCA2NSwgNTIsIDUzLCA1MCwgMTI4LCAKLSAgICA2NSwgNTIsIDUzLCA0OSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNDgsIDEyOCwgNjUsIAotICAgIDUyLCA1MiwgNTcsIDEyOCwgNjUsIDUyLCA1MiwgNTYsIDEyOCwgNjUsIDUyLCA1MiwgNTUsIDEyOCwgNjUsIDUyLCA1MiwgCi0gICAgNTQsIDEyOCwgNjUsIDUyLCA1MiwgNTMsIDEyOCwgNjUsIDUyLCA1MiwgNTIsIDEyOCwgNjUsIDUyLCA1MiwgNTEsIDEyOCwgCi0gICAgNjUsIDUyLCA1MiwgNTAsIDEyOCwgNjUsIDUyLCA1MiwgNDksIDEyOCwgNjUsIDUyLCA1MiwgNDgsIDEyOCwgNjUsIDUyLCAKLSAgICA1MSwgNTcsIDEyOCwgNjUsIDUyLCA1MSwgNTYsIDEyOCwgNjUsIDUyLCA1MSwgNTUsIDEyOCwgNjUsIDUyLCA1MSwgNTQsIAotICAgIDEyOCwgNjUsIDUyLCA1MSwgNTMsIDEyOCwgNjUsIDUyLCA1MSwgNTIsIDEyOCwgNjUsIDUyLCA1MSwgNTEsIDEyOCwgNjUsIAotICAgIDUyLCA1MSwgNTAsIDEyOCwgNjUsIDUyLCA1MSwgNDksIDEyOCwgNjUsIDUyLCA1MSwgNDgsIDEyOCwgNjUsIDUyLCA1MCwgCi0gICAgNTcsIDEyOCwgNjUsIDUyLCA1MCwgNTYsIDEyOCwgNjUsIDUyLCA1MCwgNTUsIDEyOCwgNjUsIDUyLCA1MCwgNTQsIDEyOCwgCi0gICAgNjUsIDUyLCA1MCwgNTMsIDEyOCwgNjUsIDUyLCA1MCwgNTIsIDEyOCwgNjUsIDUyLCA1MCwgNTEsIDEyOCwgNjUsIDUyLCAKLSAgICA1MCwgNTAsIDEyOCwgNjUsIDUyLCA1MCwgNDksIDEyOCwgNjUsIDUyLCA1MCwgNDgsIDEyOCwgNjUsIDUyLCA0OSwgNTcsIAotICAgIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU2LCAxMjgsIDY1LCA1MiwgCi0gICAgNDksIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCAKLSAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAotICAgIDY1LCA1MiwgNDksIDUzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgCi0gICAgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDEyOCwgNjUsIDUyLCAKLSAgICA0OSwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUwLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIAotICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgMTkzLCA2NSwgNTIsIDQ5LCA0OCwgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgMTc2LCA2NSwgNTIsIDQ4LCA1NywgNDUsIDg2LCA2NSwgODMsIAotICAgIDEyOCwgNjUsIDUyLCA0OCwgNTcsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCi0gICAgNDgsIDU2LCAxMjgsIDY1LCA1MiwgNDgsIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgMTI4LCAKLSAgICA2NSwgNTIsIDQ4LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAxMjgsIDY1LCA1MiwgNDgsIDUyLCA0NSwgODYsIDY1LCA4MywgCi0gICAgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKLSAgICA0OCwgNTEsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCAxMjgsIAotICAgIDY1LCA1MiwgNDgsIDQ5LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDEyOCwgNjUsIDUxLCA1NywgNTcsIDEyOCwgNjUsIDUxLCAKLSAgICA1NywgNTYsIDEyOCwgNjUsIDUxLCA1NywgNTUsIDEyOCwgNjUsIDUxLCA1NywgNTQsIDEyOCwgNjUsIDUxLCA1NywgNTMsIAotICAgIDEyOCwgNjUsIDUxLCA1NywgNTIsIDEyOCwgNjUsIDUxLCA1NywgMTc5LCA2NSwgNTEsIDU3LCA1MCwgMTI4LCA2NSwgNTEsIAotICAgIDU3LCA0OSwgMTI4LCA2NSwgNTEsIDU3LCA0OCwgMTI4LCA2NSwgNTEsIDU2LCA1NywgMTI4LCA2NSwgNTEsIDU2LCA1NiwgCi0gICAgMTI4LCA2NSwgNTEsIDU2LCA1NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDEyOCwgCi0gICAgNjUsIDUxLCA1NiwgNTMsIDEyOCwgNjUsIDUxLCA1NiwgNTIsIDEyOCwgNjUsIDUxLCA1NiwgNTEsIDY1LCAxMjgsIDY1LCAKLSAgICA1MSwgNTYsIDE3OSwgNjUsIDUxLCA1NiwgNTAsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDY1LCAxMjgsIDY1LCA1MSwgNTYsIAotICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTYsIDQ4LCAxMjgsIDY1LCA1MSwgNTUsIDU3LCAxMjgsIDY1LCA1MSwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA1MSwgNTUsIDU1LCAxMjgsIDY1LCA1MSwgNTUsIDU0LCAxMjgsIDY1LCA1MSwgNTUsIDUzLCAxMjgsIDY1LCA1MSwgCi0gICAgNTUsIDUyLCAxMjgsIDY1LCA1MSwgNTUsIDUxLCAxMjgsIDY1LCA1MSwgNTUsIDUwLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAKLSAgICA2NSwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgMTI4LCA2NSwgNTEsIDU1LCA0OCwgMTI4LCA2NSwgNTEsIDU0LCA1NywgMTI4LCAKLSAgICA2NSwgNTEsIDU0LCA1NiwgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIDEyOCwgNjUsIDUxLCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDUxLCA1NCwgNTQsIDEyOCwgNjUsIDUxLCA1NCwgNTMsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDY1LCAxMjgsIDY1LCA1MSwgCi0gICAgNTQsIDUyLCAxMjgsIDY1LCA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAKLSAgICAxMjgsIDY1LCA1MSwgNTQsIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUzLCA1NywgMTI4LCAKLSAgICA2NSwgNTEsIDUzLCA1NiwgMTI4LCA2NSwgNTEsIDUzLCA1NSwgMTI4LCA2NSwgNTEsIDUzLCA1NCwgMTI4LCA2NSwgNTEsIAotICAgIDUzLCA1MywgMTI4LCA2NSwgNTEsIDUzLCA1MiwgMTI4LCA2NSwgNTEsIDUzLCA1MSwgMTI4LCA2NSwgNTEsIDUzLCA1MCwgCi0gICAgMTI4LCA2NSwgNTEsIDUzLCA0OSwgMTI4LCA2NSwgNTEsIDUzLCA0OCwgMTI4LCA2NSwgNTEsIDUyLCA1NywgMTI4LCA2NSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA2NSwgNTEsIDUyLCA1NSwgMTI4LCA2NSwgNTEsIDUyLCA1NCwgMTI4LCA2NSwgNTEsIDUyLCAKLSAgICA1MywgMTI4LCA2NSwgNTEsIDUyLCA1MiwgMTI4LCA2NSwgNTEsIDUyLCA1MSwgMTI4LCA2NSwgNTEsIDUyLCA1MCwgMTI4LCAKLSAgICA2NSwgNTEsIDUyLCA0OSwgMTI4LCA2NSwgNTEsIDUyLCA0OCwgMTI4LCA2NSwgNTEsIDUxLCA1NywgMTI4LCA2NSwgNTEsIAotICAgIDUxLCA1NiwgMTI4LCA2NSwgNTEsIDUxLCA1NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgCi0gICAgNTQsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgMTI4LCA2NSwgNTEsIDUxLCAKLSAgICA1MywgMTI4LCA2NSwgNTEsIDUxLCA1MiwgMTI4LCA2NSwgNTEsIDUxLCA1MSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjcsIAotICAgIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgCi0gICAgMTI4LCA2NSwgNTEsIDUxLCA0OSwgMTI4LCA2NSwgNTEsIDUxLCA0OCwgMTI4LCA2NSwgNTEsIDUwLCA1NywgNjUsIDEyOCwgCi0gICAgNjUsIDUxLCA1MCwgNTcsIDEyOCwgNjUsIDUxLCA1MCwgNTYsIDEyOCwgNjUsIDUxLCA1MCwgNTUsIDEyOCwgNjUsIDUxLCAKLSAgICA1MCwgNTQsIDEyOCwgNjUsIDUxLCA1MCwgNTMsIDEyOCwgNjUsIDUxLCA1MCwgNTIsIDEyOCwgNjUsIDUxLCA1MCwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA1MCwgNTAsIDEyOCwgNjUsIDUxLCA1MCwgNDksIDEyOCwgNjUsIDUxLCA1MCwgNDgsIDEyOCwgNjUsIAotICAgIDUxLCA0OSwgNTcsIDEyOCwgNjUsIDUxLCA0OSwgNTYsIDEyOCwgNjUsIDUxLCA0OSwgNTUsIDEyOCwgNjUsIDUxLCA0OSwgCi0gICAgNTQsIDEyOCwgNjUsIDUxLCA0OSwgNTMsIDEyOCwgNjUsIDUxLCA0OSwgNTIsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY3LCAKLSAgICAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA0OSwgNTAsIDEyOCwgNjUsIDUxLCA0OSwgNDksIDEyOCwgNjUsIDUxLCA0OSwgNDgsIDEyOCwgNjUsIAotICAgIDUxLCA0OCwgNTcsIDY3LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjUsIDEyOCwgCi0gICAgNjUsIDUxLCA0OCwgNTcsIDEyOCwgNjUsIDUxLCA0OCwgNTYsIDEyOCwgNjUsIDUxLCA0OCwgNTUsIDEyOCwgNjUsIDUxLCAKLSAgICA0OCwgNTQsIDEyOCwgNjUsIDUxLCA0OCwgNTMsIDEyOCwgNjUsIDUxLCA0OCwgNTIsIDEyOCwgNjUsIDUxLCA0OCwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA0OCwgNTAsIDEyOCwgNjUsIDUxLCA0OCwgNDksIDEyOCwgNjUsIDUxLCA0OCwgNDgsIDEyOCwgNjUsIAotICAgIDUwLCA1NywgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDU3LCAxMjgsIDY1LCA1MCwgNTcsIDU2LCAxMjgsIDY1LCA1MCwgCi0gICAgNTcsIDU1LCAxMjgsIDY1LCA1MCwgNTcsIDU0LCAxMjgsIDY1LCA1MCwgNTcsIDUzLCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAKLSAgICA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1MiwgMTI4LCA2NSwgNTAsIDU3LCA1MSwgMTI4LCA2NSwgNTAsIDU3LCA1MCwgMTI4LCAKLSAgICA2NSwgNTAsIDU3LCA0OSwgMTI4LCA2NSwgNTAsIDU3LCA0OCwgMTI4LCA2NSwgNTAsIDU2LCA1NywgNjUsIDEyOCwgNjUsIAotICAgIDUwLCA1NiwgNTcsIDEyOCwgNjUsIDUwLCA1NiwgNTYsIDEyOCwgNjUsIDUwLCA1NiwgNTUsIDEyOCwgNjUsIDUwLCA1NiwgCi0gICAgNTQsIDEyOCwgNjUsIDUwLCA1NiwgNTMsIDEyOCwgNjUsIDUwLCA1NiwgNTIsIDEyOCwgNjUsIDUwLCA1NiwgNTEsIDEyOCwgCi0gICAgNjUsIDUwLCA1NiwgNTAsIDEyOCwgNjUsIDUwLCA1NiwgNDksIDEyOCwgNjUsIDUwLCA1NiwgNDgsIDEyOCwgNjUsIDUwLCAKLSAgICA1NSwgNTcsIDEyOCwgNjUsIDUwLCA1NSwgNTYsIDEyOCwgNjUsIDUwLCA1NSwgNTUsIDEyOCwgNjUsIDUwLCA1NSwgNTQsIAotICAgIDEyOCwgNjUsIDUwLCA1NSwgNTMsIDEyOCwgNjUsIDUwLCA1NSwgNTIsIDEyOCwgNjUsIDUwLCA1NSwgNTEsIDEyOCwgNjUsIAotICAgIDUwLCA1NSwgNTAsIDEyOCwgNjUsIDUwLCA1NSwgNDksIDEyOCwgNjUsIDUwLCA1NSwgNDgsIDEyOCwgNjUsIDUwLCA1NCwgCi0gICAgNTcsIDEyOCwgNjUsIDUwLCA1NCwgNTYsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCAKLSAgICAxMjgsIDY1LCA1MCwgNTQsIDU0LCAxMjgsIDY1LCA1MCwgNTQsIDUzLCAxMjgsIDY1LCA1MCwgNTQsIDUyLCAxMjgsIDY1LCAKLSAgICA1MCwgNTQsIDUxLCAxMjgsIDY1LCA1MCwgNTQsIDUwLCAxMjgsIDY1LCA1MCwgNTQsIDQ5LCAxMjgsIDY1LCA1MCwgNTQsIAotICAgIDQ4LCAxMjgsIDY1LCA1MCwgNTMsIDU3LCAxMjgsIDY1LCA1MCwgNTMsIDU2LCAxMjgsIDY1LCA1MCwgNTMsIDU1LCAxMjgsIAotICAgIDY1LCA1MCwgNTMsIDU0LCAxMjgsIDY1LCA1MCwgNTMsIDUzLCAxMjgsIDY1LCA1MCwgNTMsIDUyLCAxMjgsIDY1LCA1MCwgCi0gICAgNTMsIDUxLCAxMjgsIDY1LCA1MCwgNTMsIDUwLCAxMjgsIDY1LCA1MCwgNTMsIDQ5LCAxMjgsIDY1LCA1MCwgNTMsIDQ4LCAKLSAgICAxMjgsIDY1LCA1MCwgNTIsIDU3LCAxMjgsIDY1LCA1MCwgNTIsIDU2LCAxMjgsIDY1LCA1MCwgNTIsIDU1LCAxMjgsIDY1LCAKLSAgICA1MCwgNTIsIDU0LCAxMjgsIDY1LCA1MCwgNTIsIDUzLCAxMjgsIDY1LCA1MCwgNTIsIDUyLCAxMjgsIDY1LCA1MCwgNTIsIAotICAgIDUxLCAxMjgsIDY1LCA1MCwgNTIsIDUwLCAxMjgsIDY1LCA1MCwgNTIsIDQ5LCAxMjgsIDY1LCA1MCwgNTIsIDQ4LCAxMjgsIAotICAgIDY1LCA1MCwgNTEsIDU3LCAxMjgsIDY1LCA1MCwgNTEsIDU2LCAxMjgsIDY1LCA1MCwgNTEsIDU1LCAxMjgsIDY1LCA1MCwgCi0gICAgNTEsIDU0LCAxMjgsIDY1LCA1MCwgNTEsIDUzLCAxMjgsIDY1LCA1MCwgNTEsIDUyLCAxMjgsIDY1LCA1MCwgNTEsIDUxLCAKLSAgICAxMjgsIDY1LCA1MCwgNTEsIDUwLCAxMjgsIDY1LCA1MCwgNTEsIDQ5LCAxMjgsIDY1LCA1MCwgNTEsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MCwgNTAsIDU3LCAxMjgsIDY1LCA1MCwgNTAsIDU2LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIAotICAgIDUwLCA1NSwgMTI4LCA2NSwgNTAsIDUwLCA1NCwgMTI4LCA2NSwgNTAsIDUwLCA1MywgMTI4LCA2NSwgNTAsIDUwLCA1MiwgCi0gICAgMTI4LCA2NSwgNTAsIDUwLCA1MSwgMTI4LCA2NSwgNTAsIDUwLCA1MCwgMTI4LCA2NSwgNTAsIDUwLCA0OSwgMTI4LCA2NSwgCi0gICAgNTAsIDUwLCA0OCwgMTI4LCA2NSwgNTAsIDQ5LCA1NywgMTI4LCA2NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NSwgNTAsIDQ5LCAKLSAgICA1NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIAotICAgIDY1LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAxMjgsIDY1LCA1MCwgNDksIDUyLCAxMjgsIDY1LCA1MCwgNDksIDUxLCAxMjgsIAotICAgIDY1LCA1MCwgNDksIDUwLCAxMjgsIDY1LCA1MCwgNDksIDQ5LCAxMjgsIDY1LCA1MCwgNDksIDQ4LCAxMjgsIDY1LCA1MCwgCi0gICAgNDgsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NywgMTI4LCA2NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NSwgNTAsIDQ4LCAKLSAgICA1NSwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTUsIDEyOCwgNjUsIDUwLCA0OCwgNTQsIDEyOCwgNjUsIDUwLCA0OCwgNTMsIAotICAgIDEyOCwgNjUsIDUwLCA0OCwgNTIsIDEyOCwgNjUsIDUwLCA0OCwgNTEsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDY2LCAxMjgsIAotICAgIDY1LCA1MCwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NSwgNTAsIDQ4LCA0OSwgMTI4LCA2NSwgCi0gICAgNTAsIDQ4LCA0OCwgMTI4LCA2NSwgNDksIDU3LCA1NywgMTI4LCA2NSwgNDksIDU3LCA1NiwgMTI4LCA2NSwgNDksIDU3LCAKLSAgICA1NSwgMTI4LCA2NSwgNDksIDU3LCA1NCwgMTI4LCA2NSwgNDksIDU3LCA1MywgMTI4LCA2NSwgNDksIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNDksIDU3LCA1MSwgMTI4LCA2NSwgNDksIDU3LCA1MCwgMTI4LCA2NSwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNDksIAotICAgIDU3LCA0OCwgMTI4LCA2NSwgNDksIDU2LCA1NywgMTI4LCA2NSwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNDksIDU2LCA1NSwgCi0gICAgMTI4LCA2NSwgNDksIDU2LCA1NCwgMTI4LCA2NSwgNDksIDU2LCA1MywgMTI4LCA2NSwgNDksIDU2LCA1MiwgMTI4LCA2NSwgCi0gICAgNDksIDU2LCA1MSwgMTI4LCA2NSwgNDksIDU2LCA1MCwgMTI4LCA2NSwgNDksIDU2LCA0OSwgMTI4LCA2NSwgNDksIDU2LCAKLSAgICA0OCwgMTI4LCA2NSwgNDksIDU1LCA1NywgMTI4LCA2NSwgNDksIDU1LCA1NiwgMTI4LCA2NSwgNDksIDU1LCA1NSwgMTI4LCAKLSAgICA2NSwgNDksIDU1LCA1NCwgMTI4LCA2NSwgNDksIDU1LCA1MywgMTI4LCA2NSwgNDksIDU1LCA1MiwgMTI4LCA2NSwgNDksIAotICAgIDU1LCA1MSwgMTI4LCA2NSwgNDksIDU1LCA1MCwgMTI4LCA2NSwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNDksIDU1LCA0OCwgCi0gICAgMTI4LCA2NSwgNDksIDU0LCA1NywgMTI4LCA2NSwgNDksIDU0LCA1NiwgMTI4LCA2NSwgNDksIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNDksIDU0LCA1NCwgMTI4LCA2NSwgNDksIDU0LCA1MywgMTI4LCA2NSwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNDksIDU0LCAKLSAgICA1MSwgMTI4LCA2NSwgNDksIDU0LCA1MCwgMTI4LCA2NSwgNDksIDU0LCA0OSwgMTI4LCA2NSwgNDksIDU0LCA0OCwgMTI4LCAKLSAgICA2NSwgNDksIDUzLCA1NywgMTI4LCA2NSwgNDksIDUzLCA1NiwgMTI4LCA2NSwgNDksIDUzLCA1NSwgMTI4LCA2NSwgNDksIAotICAgIDUzLCA1NCwgMTI4LCA2NSwgNDksIDUzLCA1MywgMTI4LCA2NSwgNDksIDUzLCA1MiwgMTI4LCA2NSwgNDksIDUzLCA1MSwgCi0gICAgMTI4LCA2NSwgNDksIDUzLCA1MCwgMTI4LCA2NSwgNDksIDUzLCA0OSwgMTI4LCA2NSwgNDksIDUzLCA0OCwgMTI4LCA2NSwgCi0gICAgNDksIDUyLCA1NywgMTI4LCA2NSwgNDksIDUyLCA1NiwgMTI4LCA2NSwgNDksIDUyLCA1NSwgMTI4LCA2NSwgNDksIDUyLCAKLSAgICA1NCwgMTI4LCA2NSwgNDksIDUyLCA1MywgMTI4LCA2NSwgNDksIDUyLCA1MiwgMTI4LCA2NSwgNDksIDUyLCA1MSwgMTI4LCAKLSAgICA2NSwgNDksIDUyLCA1MCwgMTI4LCA2NSwgNDksIDUyLCA0OSwgMTI4LCA2NSwgNDksIDUyLCA0OCwgMTI4LCA2NSwgNDksIAotICAgIDUxLCA1NywgMTI4LCA2NSwgNDksIDUxLCA1NiwgMTI4LCA2NSwgNDksIDUxLCA1NSwgMTI4LCA2NSwgNDksIDUxLCA1NCwgCi0gICAgMTI4LCA2NSwgNDksIDUxLCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDEyOCwgNjUsIDQ5LCA1MSwgNTIsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MSwgNTEsIDEyOCwgNjUsIDQ5LCA1MSwgNTAsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDY3LCAxMjgsIDY1LCAKLSAgICA0OSwgNTEsIDQ5LCAxMjgsIDY1LCA0OSwgNTEsIDQ4LCAxMjgsIDY1LCA0OSwgNTAsIDU3LCAxMjgsIDY1LCA0OSwgNTAsIAotICAgIDU2LCAxMjgsIDY1LCA0OSwgNTAsIDU1LCAxMjgsIDY1LCA0OSwgNTAsIDU0LCAxMjgsIDY1LCA0OSwgNTAsIDUzLCA2NSwgCi0gICAgMTI4LCA2NSwgNDksIDUwLCA1MywgMTI4LCA2NSwgNDksIDUwLCA1MiwgMTI4LCA2NSwgNDksIDUwLCA1MSwgMTI4LCA2NSwgCi0gICAgNDksIDUwLCA1MCwgMTI4LCA2NSwgNDksIDUwLCA0OSwgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MCwgNDgsIDEyOCwgNjUsIDQ5LCA0OSwgNTcsIDEyOCwgNjUsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDQ5LCA0OSwgNTUsIAotICAgIDEyOCwgNjUsIDQ5LCA0OSwgNTQsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDUzLCAxMjgsIAotICAgIDY1LCA0OSwgNDksIDUyLCAxMjgsIDY1LCA0OSwgNDksIDUxLCAxMjgsIDY1LCA0OSwgNDksIDUwLCAxMjgsIDY1LCA0OSwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgNjUsIDQ5LCA0OCwgNTcsIDEyOCwgNjUsIDQ5LCA0OCwgNTYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIAotICAgIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgCi0gICAgNTUsIDEyOCwgNjUsIDQ5LCA0OCwgNTQsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAKLSAgICA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIAotICAgIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgMTI4LCA2NSwgNDksIDQ4LCA1MSwgCi0gICAgMTI4LCA2NSwgNDksIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDY1LCA0OSwgNDgsIDQ5LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNDUsIAotICAgIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDEyOCwgNjUsIDQ4LCA1NywgNTcsIDEyOCwgNjUsIDQ4LCA1NywgCi0gICAgNTYsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIDU2LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCAKLSAgICA1NSwgMTI4LCA2NSwgNDgsIDU3LCA1NCwgMTI4LCA2NSwgNDgsIDU3LCA1MywgMTI4LCA2NSwgNDgsIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNDgsIDU3LCA1MSwgMTI4LCA2NSwgNDgsIDU3LCA1MCwgMTI4LCA2NSwgNDgsIDU3LCA0OSwgMTI4LCA2NSwgNDgsIAotICAgIDU3LCA0OCwgMTI4LCA2NSwgNDgsIDU2LCA1NywgMTI4LCA2NSwgNDgsIDU2LCA1NiwgMTI4LCA2NSwgNDgsIDU2LCA1NSwgCi0gICAgMTI4LCA2NSwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNDgsIDU2LCA1MywgMTI4LCA2NSwgNDgsIDU2LCA1MiwgMTI4LCA2NSwgCi0gICAgNDgsIDU2LCA1MSwgMTI4LCA2NSwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNDgsIDU2LCAKLSAgICA0OCwgMTI4LCA2NSwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNDgsIDU1LCA1NSwgMTI4LCAKLSAgICA2NSwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNDgsIDU1LCA1MywgMTI4LCA2NSwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNDgsIAotICAgIDU1LCA1MSwgMTI4LCA2NSwgNDgsIDU1LCA1MCwgMTI4LCA2NSwgNDgsIDU1LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgCi0gICAgMTI4LCA2NSwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNDgsIDU0LCA1NCwgNjcsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NSwgMTI4LCAKLSAgICA2NSwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIAotICAgIDU0LCA1MSwgMTI4LCA2NSwgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgCi0gICAgMTI4LCA2NSwgNDgsIDUzLCA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgCi0gICAgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCAKLSAgICA1MSwgMTI4LCA2NSwgNDgsIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCAKLSAgICA2NSwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUzLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUwLCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgCi0gICAgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDY1LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAKLSAgICAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCAKLSAgICA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIAotICAgIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUwLCA1NiwgNjYsIDEyOCwgNjUsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgCi0gICAgNDksIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCAKLSAgICA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIAotICAgIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgCi0gICAgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCAKLSAgICA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgCisgICAgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCAKKyAgICA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIAorICAgIDczLCA3MCwgMTI4LCA2NSwgNzYsIDczLCAxOTgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgCisgICAgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgCisgICAgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAKKyAgICAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA3MiwgNjksIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCAKKyAgICA2OSwgODMsIDY5LCA3NiwgODMsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIAorICAgIDczLCA3NywgNzMsIDE5NSwgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgCisgICAgNjUsIDgyLCAxOTMsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIAorICAgIDIwMywgNjUsIDczLCA4NCwgNzksIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgCisgICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCAKKyAgICA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIAorICAgIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgCisgICAgNjUsIDc4LCAxOTksIDY1LCA3MiwgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCAKKyAgICA4NSwgNzgsIDcxLCAxMjgsIDY1LCA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgCisgICAgODMsIDIxMiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCAKKyAgICA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIAorICAgIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCAKKyAgICA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgNjksIDgzLCA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgCisgICAgNjksIDgyLCAxMjgsIDY1LCA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIAorICAgIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgCisgICAgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCAKKyAgICA4NCwgNjUsIDcxLCA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIAorICAgIDgzLCA3MywgNzksIDIwNiwgNjUsIDY4LCA3NiwgNjUsIDIwNSwgNjUsIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgCisgICAgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCAKKyAgICA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIAorICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCAKKyAgICA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgCisgICAgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAKKyAgICAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIAorICAgIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgCisgICAgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCAKKyAgICA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgCisgICAgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIAorICAgIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgCisgICAgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgCisgICAgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ5LCAKKyAgICA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1MywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCAKKyAgICA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUxLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAorICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCisgICAgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgNzcsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3MCwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNjUsIAorICAgIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCA4OSwgMTI4LCA2NSwgCisgICAgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCA2NSwgNjUsIDcwLCAKKyAgICA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIDU0LCAxMjgsIDY1LCAKKyAgICA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIDY1LCA1NiwgNDgsIAorICAgIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgNTEsIDE3OCwgNjUsIAorICAgIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgMTgwLCA2NSwgNTUsIAorICAgIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIDY1LCA1NSwgNDgsIAorICAgIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxNzksIDY1LCA1NSwgCisgICAgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCA0OCwgMTgzLCA2NSwgCisgICAgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAxNzksIDY1LCA1NSwgCisgICAgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCA1MSwgMTI4LCA2NSwgCisgICAgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCA2NSwgNTQsIDUzLCAKKyAgICA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgMTI4LCA2NSwgNTQsIAorICAgIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgNTQsIDUyLCA1NiwgCisgICAgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCA1MiwgMTI4LCA2NSwgCisgICAgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCA2NSwgNTQsIDUxLCAKKyAgICA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1NywgMTI4LCAKKyAgICA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgMTI4LCA2NSwgNTQsIAorICAgIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgNTQsIDUwLCA0OSwgCisgICAgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCA1NiwgMTI4LCA2NSwgCisgICAgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCA2NSwgNTQsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgMTI4LCA2NSwgNTQsIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgNTQsIDQ4LCA1MCwgCisgICAgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCA2NSwgNTMsIDU3LCAKKyAgICA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIDU2LCA1NiwgMTI4LCAKKyAgICA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgNTMsIDU2LCA0OSwgCisgICAgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCA2NSwgNTMsIDU1LCAKKyAgICA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIDU1LCA0OSwgMTI4LCAKKyAgICA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgMTI4LCA2NSwgNTMsIAorICAgIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgNTMsIDU0LCA1MSwgCisgICAgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCA1NCwgMTI4LCA2NSwgCisgICAgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCA2NSwgNTMsIDUzLCAKKyAgICA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIDUyLCA1NywgMTI4LCAKKyAgICA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgNTMsIDUxLCA1NywgCisgICAgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCA1NCwgMTI4LCA2NSwgCisgICAgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCA2NSwgNTMsIDUxLCAKKyAgICA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIDUwLCA1NiwgMTI4LCAKKyAgICA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgNTMsIDUwLCA0OSwgCisgICAgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCA2NSwgNTMsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgMTI4LCA2NSwgNTMsIAorICAgIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgNTMsIDQ4LCA1MiwgCisgICAgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCA0OSwgMTI4LCA2NSwgCisgICAgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCA2NSwgNTIsIDU3LCAKKyAgICA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIDU3LCA0OSwgMTI4LCAKKyAgICA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgMTI4LCA2NSwgNTIsIAorICAgIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgNTIsIDU2LCA1MiwgCisgICAgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCA0OSwgMTI4LCA2NSwgCisgICAgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCA2NSwgNTIsIDU1LCAKKyAgICA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIDU1LCA1MiwgMTI4LCAKKyAgICA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgMTI4LCA2NSwgNTIsIAorICAgIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgNTIsIDU0LCA1NSwgCisgICAgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCA2NSwgNTIsIDU0LCAKKyAgICA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIDUzLCA1NSwgNjUsIAorICAgIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgNTMsIDEyOCwgNjUsIAorICAgIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgNjUsIDUyLCA1MywgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCA1MiwgNTIsIDU3LCAKKyAgICAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIDU0LCAxMjgsIDY1LCAKKyAgICA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIDY1LCA1MiwgNTIsIAorICAgIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgNTEsIDU3LCAxMjgsIAorICAgIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAxMjgsIDY1LCA1MiwgCisgICAgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCA1MiwgNTEsIDUwLCAKKyAgICAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIDU3LCAxMjgsIDY1LCAKKyAgICA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIDY1LCA1MiwgNTAsIAorICAgIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgNTAsIDUwLCAxMjgsIAorICAgIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAorICAgIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgNDksIDUwLCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIAorICAgIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgMTI4LCA2NSwgCisgICAgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDQ1LCAKKyAgICA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKKyAgICA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCAxMjgsIAorICAgIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgCisgICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgNTcsIDU2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAxMjgsIDY1LCA1MSwgNTcsIAorICAgIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCA1NywgNDksIDEyOCwgNjUsIAorICAgIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIDEyOCwgNjUsIDUxLCA1NiwgCisgICAgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIDY1LCA1MSwgNTYsIDUzLCAKKyAgICAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAxNzksIDY1LCAKKyAgICA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgMTI4LCA2NSwgNTEsIAorICAgIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCA2NSwgNTEsIDU1LCA1NSwgCisgICAgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIDU1LCA1MiwgMTI4LCA2NSwgCisgICAgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCAKKyAgICA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIAorICAgIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCA1MSwgNTQsIDU0LCAxMjgsIAorICAgIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgMTI4LCA2NSwgNTEsIDU0LCAKKyAgICA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgNjUsIDUxLCA1MywgNTYsIAorICAgIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCA1MywgNTMsIDEyOCwgNjUsIAorICAgIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIDEyOCwgNjUsIDUxLCA1MywgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIDUxLCA1MiwgNTYsIDEyOCwgCisgICAgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgNjUsIDUxLCA1MiwgNDksIAorICAgIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCA1MSwgNTYsIDEyOCwgNjUsIAorICAgIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NiwgMTI4LCA2NSwgCisgICAgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgNTAsIDU0LCAxMjgsIDY1LCAKKyAgICA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAxMjgsIDY1LCA1MSwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCA1MSwgNDksIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIDU0LCAxMjgsIDY1LCA1MSwgCisgICAgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgNDgsIDU0LCAxMjgsIDY1LCAKKyAgICA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAxMjgsIDY1LCA1MSwgNDgsIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCA1MCwgNTcsIDU3LCA2NSwgCisgICAgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIDU3LCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgNjUsIDUwLCA1NywgNDksIAorICAgIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCAxMjgsIAorICAgIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIDU0LCAxMjgsIDY1LCA1MCwgCisgICAgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIDY1LCA1MCwgNTYsIDUwLCAKKyAgICAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgNTUsIDU3LCAxMjgsIDY1LCAKKyAgICA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAxMjgsIDY1LCA1MCwgNTUsIAorICAgIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCA1MCwgNTUsIDUwLCAxMjgsIAorICAgIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIDU3LCAxMjgsIDY1LCA1MCwgCisgICAgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgMTI4LCA2NSwgNTAsIDU0LCAKKyAgICA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgNTAsIDU0LCA1MSwgMTI4LCAKKyAgICA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCA0OCwgMTI4LCA2NSwgNTAsIAorICAgIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCA2NSwgNTAsIDUzLCA1NCwgCisgICAgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIDUzLCA1MSwgMTI4LCA2NSwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgMTI4LCA2NSwgNTAsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgNTAsIDUyLCA1NCwgMTI4LCAKKyAgICA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCA1MSwgMTI4LCA2NSwgNTAsIAorICAgIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCA2NSwgNTAsIDUxLCA1NywgCisgICAgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIDUxLCA1NCwgMTI4LCA2NSwgCisgICAgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgMTI4LCA2NSwgNTAsIDUxLCAKKyAgICA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgNTAsIDUwLCA1NywgMTI4LCAKKyAgICA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIDEyOCwgNjUsIDUwLCA1MCwgCisgICAgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIDUwLCA1MCwgNDgsIDEyOCwgCisgICAgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgNTUsIDEyOCwgNjUsIDUwLCAKKyAgICA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNTAsIAorICAgIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCA2NSwgNTAsIDQ5LCA1MCwgCisgICAgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIDQ4LCA1NywgNjUsIDEyOCwgCisgICAgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgNTUsIDY1LCAxMjgsIDY1LCAKKyAgICA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAxMjgsIDY1LCA1MCwgNDgsIAorICAgIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgCisgICAgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIDUwLCA0OCwgNDgsIDEyOCwgCisgICAgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgNjUsIDQ5LCA1NywgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCA1NywgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIDEyOCwgNjUsIDQ5LCA1NiwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIDQ5LCA1NiwgNTEsIDEyOCwgCisgICAgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgNjUsIDQ5LCA1NSwgNTQsIAorICAgIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCA1NSwgNTEsIDEyOCwgNjUsIAorICAgIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIDEyOCwgNjUsIDQ5LCA1NCwgCisgICAgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIDQ5LCA1NCwgNTQsIDEyOCwgCisgICAgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgNTEsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgNjUsIDQ5LCA1MywgNTcsIAorICAgIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIDEyOCwgNjUsIDQ5LCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIDQ5LCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgNTQsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgNjUsIDQ5LCA1MiwgNTAsIAorICAgIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCA1MSwgNTcsIDEyOCwgNjUsIAorICAgIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIDEyOCwgNjUsIDQ5LCA1MSwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIDY1LCA0OSwgNTEsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgNDksIDUxLCA0OSwgMTI4LCAKKyAgICA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCA1NiwgMTI4LCA2NSwgNDksIAorICAgIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MCwgCisgICAgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDQ5LCA1MCwgNTAsIDEyOCwgCisgICAgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAxMjgsIDY1LCA0OSwgNDksIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCA2NSwgNDksIDQ5LCA1MiwgCisgICAgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIDQ5LCA0OSwgMTI4LCA2NSwgCisgICAgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NywgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NiwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIDU2LCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgNjUsIDQ4LCA1NywgNTEsIAorICAgIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCA1NywgNDgsIDEyOCwgNjUsIAorICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDQ4LCA1NiwgCisgICAgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIDQ4LCA1NiwgNTEsIDEyOCwgCisgICAgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDQ4LCA1NSwgNTQsIAorICAgIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIAorICAgIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgCisgICAgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDY2LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCAKKyAgICA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCAKKyAgICA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjYsIAorICAgIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDUsIDY5LCA4NSwgCisgICAgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIDg5LCA4NSwgMTk2LCA0NSwgCisgICAgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgNzIsIDY1LCAyMTAsIDQ1LCAKKyAgICA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTQsIDIyLCAyNywgMzQsIDQ0LCA0OSwgNTgsIDY0LCA2NiwgNjksIDgxLCA4OSwgMTAyLCAxMDgsIAotICAgIDExMywgMTE4LCAxMjYsIDEzNSwgMTQ2LCAxNTEsIDE1NiwgMTYxLCAxNjQsIDE2OCwgMTc3LCAxODMsIDE4OSwgMTk0LCAKLSAgICAyMDEsIDIwOSwgMjE3LCAyMTgsIDIyMSwgMjI5LCAxNjUsIDIzNSwgMjQ0LCAyNTEsIDI2MSwgMjY3LCAyNzQsIDI3OSwgCi0gICAgMjgyLCAyODcsIDI5MywgMjk2LCAzMDAsIDMwNSwgMzExLCAzMTcsIDMyMiwgMzI3LCAzMzMsIDMzOSwgMzQ4LCAzNTUsIAotICAgIDM2MiwgMzcxLCAzNzYsIDM4MSwgMzgzLCAzOTEsIDM5OSwgNDAwLCA0MDgsIDQxMCwgNDE3LCA0MjAsIDQyNiwgNDMzLCAKLSAgICAzMzEsIDQzOCwgNDQwLCA0NDIsIDQ0OSwgNDUxLCA0NTYsIDQ2NCwgNDcxLCA0NzYsIDQ4MCwgNDg2LCA0OTEsIDUwMSwgCi0gICAgNTA2LCA1MTMsIDUxNiwgNTI0LCA1MjgsIDUzOCwgNTQ1LCA1NTQsIDU2MSwgNTcwLCA1NzcsIDU4MCwgNTg0LCA1OTIsIAotICAgIDU5OCwgNjExLCA2MTgsIDYyMiwgNjI2LCA2MjcsIDYzNiwgNjQwLCA2NDksIDY1NSwgNjU5LCA2NjEsIDY2NiwgNjc0LCAKLSAgICA2NzgsIDY4NiwgNjkxLCA2OTQsIDcwMCwgNzAzLCA3MDcsIDcxMiwgNzIwLCA3MjMsIDczMCwgNzM1LCA3NDQsIDc1MywgCi0gICAgNzYxLCA3NjksIDc3MywgNzc5LCA3ODcsIDc5NCwgNzk3LCA4MDcsIDgxMSwgODE1LCA4MjYsIDgzMywgODQwLCA4NDQsIAotICAgIDg0OCwgODU0LCA4NDIsIDg2MywgODY5LCA4NzQsIDg3OSwgODgzLCA4ODYsIDg4OSwgODk0LCA5MDMsIDkxMSwgOTE2LCAKLSAgICA2NTgsIDU3NSwgOTIxLCA5MjQsIDkzMCwgOTM0LCA5MzgsIDk0NywgOTUzLCA5NjAsIDk2OSwgOTc2LCA5ODksIDk5NCwgCi0gICAgOTk4LCAxMDA2LCAxMDA5LCAxMDE1LCAxMDIxLCAxMDMwLCAxMDM3LCAxMDQ1LCAxMDUyLCAxMDYyLCAxMDY5LCAxMDc3LCAKLSAgICAxMDg2LCAxMDkwLCAxMDkzLCAxMTAwLCAyMSwgMTEwNCwgMTExMywgMTEyMSwgMTEyOCwgMTEzMSwgMTEzNiwgMTEzOCwgCi0gICAgMTE0MiwgMTE1MSwgMTE1NiwgMTE1OSwgMTE2NSwgMTE3MiwgMTE3NSwgMTE4MCwgMTE4NSwgMTE5MSwgMTE5NiwgMTIwMSwgCi0gICAgMTIwNiwgMTIxMCwgMTIxNSwgMTIyMSwgMTIyNiwgMTIzMSwgMTIzNSwgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgMTI2MCwgCi0gICAgMTI2NSwgMTI3MCwgMTI3NSwgMTI4MSwgMTI4NywgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgMTMyMSwgCi0gICAgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MSwgMTE3NiwgMTE4MSwgMTE4NiwgMTE5MiwgMTE5NywgMTM0NSwgMTIwNywgMTM1MSwgCi0gICAgMTM1NiwgMTM2MSwgMTM2OCwgMTM3MiwgMTM3NSwgMTM4NCwgMTIxMSwgMTM4OCwgMTIxNiwgMTIyMiwgMTIyNywgMTM5MiwgCi0gICAgMTM5NywgMTQwMiwgMTQwNiwgMTQxMCwgMTQxNiwgMTQyMCwgMTIzMiwgMTQyMywgMTQyNSwgMTI0MiwgMTQzMCwgMTQzNCwgCi0gICAgMTI0NywgMTQ0MCwgMTI1MiwgMTQ0NCwgMTQ0OCwgMTI1NywgMTQ1MiwgMTQ1NywgMTQ2MSwgMTQ2NCwgMTQ2OCwgMTI2MSwgCi0gICAgMTI2NiwgMTQ3MywgMTQ3OSwgMTI3MSwgMTQ5MSwgMTQ5NywgMTUwMywgMTUwOSwgMTI3NiwgMTI4OCwgMTI5NCwgMTUxMywgCi0gICAgMTUxNywgMTUyMSwgMTUyNCwgMTI5OSwgMTUyOCwgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NiwgMTU1MSwgMTU1NiwgMTU2MCwgCi0gICAgMTU2NSwgMTU3MCwgMTU3NSwgMTU4MCwgMTU4NiwgMTU5MSwgMTU5NiwgMTYwMiwgMTYwOCwgMTYxMywgMTYxNywgMTYyMiwgCi0gICAgMTYyNywgMTYzMiwgMTYzNywgMTY0MiwgMTY0NiwgMTY1NCwgMTY1OSwgMTY2MywgMTY2OCwgMTY3MywgMTY3OCwgMTY4MywgCi0gICAgMTY4NywgMTY5MCwgMTY5NywgMTcwMiwgMTcwNywgMTcxMiwgMTcxNywgMTcyMywgMTcyOCwgMTczMiwgMTMwMywgMTczNSwgCi0gICAgMTc0MCwgMTc0NSwgMTMwOCwgMTc0OSwgMTc1MywgMTc2MCwgMTMxMywgMTc2NywgMTMxOCwgMTc3MSwgMTc3MywgMTc3OCwgCi0gICAgMTc4NCwgMTMyMiwgMTc4OSwgMTc5OCwgMTMyNywgMTgwMywgMTgwOSwgMTgxNCwgMTMzMiwgMTgxOSwgMTgyNCwgMTgyNywgCi0gICAgMTgzMiwgMTgzNiwgMTg0MCwgMTg0NCwgMTg0NywgMTg1MSwgMTMzNywgMTg1NiwgMTM0MiwgMTg2MCwgMTg2MiwgMTg2OCwgCi0gICAgMTg3NCwgMTg4MCwgMTg4NiwgMTg5MiwgMTg5OCwgMTkwNCwgMTkxMCwgMTkxNSwgMTkyMSwgMTkyNywgMTkzMywgMTkzOSwgCi0gICAgMTk0NSwgMTk1MSwgMTk1NywgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgMjAwNCwgCi0gICAgMjAwOSwgMjAxNCwgMjAxOSwgMjAyNSwgMjAzMCwgMjAzNiwgMjA0MSwgMjA0NywgMjA1MywgMjA1OCwgMjA2NCwgMjA3MCwgCi0gICAgMjA3NiwgMjA4MiwgMjA4NywgMjA5MiwgMjA5NCwgMjA5NSwgMjA5OSwgMjEwMywgMjEwOCwgMjExMiwgMjExNiwgMjEyMCwgCi0gICAgMjEyNSwgMjEyOSwgMjEzMiwgMjEzNywgMjE0MSwgMjE0NiwgMjE1MCwgMjE1NCwgMjE1OSwgMjE2MywgMjE2NiwgMjE3MCwgCi0gICAgMjE3NiwgMjE5MCwgMjE5NCwgMjE5OCwgMjIwMiwgMjIwNSwgMjIxMCwgMjIxNCwgMjIxOCwgMjIyMSwgMjIyNSwgMjIzMCwgCi0gICAgMjIzNSwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1MywgMjI1NywgMjI2MSwgMjI2NiwgMjI3MCwgMjI3NSwgMjI3OSwgMjI4NCwgCi0gICAgMjI5MCwgMjI5NywgMjMwMywgMjMwOCwgMjMxMywgMjMxOCwgMjMyNCwgMjMyOSwgMjMzNSwgMjM0MCwgMjM0MywgMjM0NSwgCi0gICAgMTE5MywgMjM0OSwgMjM1NiwgMjM2NCwgMjM3NCwgMjM4MywgMjM5NywgMjQwMSwgMjQwNSwgMjQxMCwgMjQyMywgMjQzMSwgCi0gICAgMjQzNSwgMjQ0MCwgMjQ0NCwgMjQ0NywgMjQ1MSwgMjQ1NSwgMjQ2MCwgMjQ2NSwgMjQ3MCwgMjQ3NCwgMjQ3NywgMjQ4MSwgCi0gICAgMjQ4OCwgMjQ5NSwgMjUwMSwgMjUwNiwgMjUxMSwgMjUxNywgMjUyMywgMjUyOCwgMjUzMSwgMTc3NSwgMjUzMywgMjUzOSwgCi0gICAgMjU0MywgMjU0OCwgMjU1MiwgMjU1NiwgMTY5MywgMTc4NiwgMjU2MSwgMjU2NSwgMjU2OCwgMjU3MywgMjU3OCwgMjU4MywgCi0gICAgMjU4OCwgMjU5MiwgMjU5OSwgMjYwNCwgMjYwNywgMjYxNCwgMjYyMCwgMjYyNCwgMjYyOCwgMjYzMiwgMjYzNywgMjY0NCwgCi0gICAgMjY0OSwgMjY1NCwgMjY2MSwgMjY2NywgMjY3MywgMjY3OSwgMjY5MywgMjcxMCwgMjcyNSwgMjc0MCwgMjc0OSwgMjc1NCwgCi0gICAgMjc1OCwgMjc2MywgMjc2OCwgMjc3MiwgMjc4NCwgMjc5MSwgMjc5NywgMjI5MywgMjgwMywgMjgxMCwgMjgxNiwgMjgyMCwgCi0gICAgMjgyMywgMjgzMCwgMjgzNiwgMjg0MSwgMjg0NSwgMjg1MCwgMjg1NCwgMjg1OCwgMjExNywgMjg2MiwgMjg2NywgMjg3MiwgCi0gICAgMjg3NiwgMjg4MSwgMjg4OSwgMjg5MywgMjg5OCwgMjkwMiwgMjkwNiwgMjkxMCwgMjkxNSwgMjkyMCwgMjkyNSwgMjkyOSwgCi0gICAgMjkzNCwgMjkzOSwgMjk0MywgMjk0OCwgMjk1MiwgMjk1NSwgMjk1OSwgMjk2MywgMjk3MSwgMjk3NiwgMjk4MCwgMjk4NCwgCi0gICAgMjk5MCwgMjk5OSwgMzAwMywgMzAwNywgMzAxMywgMzAxOCwgMzAyNSwgMzAyOSwgMzAzOSwgMzA0MywgMzA0NywgMzA1MiwgCi0gICAgMzA1NiwgMzA2MSwgMzA2NywgMzA3MiwgMzA3NiwgMzA4MCwgMzA4NCwgMjQ5MSwgMzA5MiwgMzA5NywgMzEwMywgMzEwOCwgCi0gICAgMzExMiwgMzExNywgMzEyMiwgMzEyNiwgMzEzMiwgMzEzNywgMjEyMSwgMzE0MywgMzE0OSwgMzE1NCwgMzE1OSwgMzE2NCwgCi0gICAgMzE2OSwgMzE3NCwgMzE3OSwgMzE4NCwgMzE4OSwgMzE5NCwgMzIwMCwgMzIwNSwgMTIwOCwgMTAxLCAzMjExLCAzMjE1LCAKLSAgICAzMjE5LCAzMjIzLCAzMjI4LCAzMjMyLCAzMjM2LCAzMjQyLCAzMjQ3LCAzMjUxLCAzMjU1LCAzMjYwLCAzMjY1LCAzMjY5LCAKLSAgICAzMjc0LCAzMjc4LCAzMjgxLCAzMjg1LCAzMjkwLCAzMjk0LCAzMjk5LCAzMzAzLCAzMzA2LCAzMzEwLCAzMzE0LCAzMzE5LCAKLSAgICAzMzIzLCAzMzI2LCAzMzM5LCAzMzQzLCAzMzQ3LCAzMzUxLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY3LCAzMzcxLCAzMzc1LCAKLSAgICAzMzgwLCAzMzg0LCAzMzg5LCAzMzk0LCAzMzk5LCAzNDAzLCAzNDA4LCAzNDExLCAzNDE0LCAzNDE5LCAzNDI1LCAzNDI5LCAKLSAgICAzNDMzLCAzNDM2LCAzNDQxLCAzNDQ1LCAzNDUwLCAzNDU0LCAzNDU4LCAzNDYxLCAzNDY3LCAzNDcyLCAzNDc3LCAzNDgzLCAKLSAgICAzNDg4LCAzNDkzLCAzNDk5LCAzNTA1LCAzNTEwLCAzNTE1LCAzNTIwLCAzNTI1LCAxMTQwLCA1NzksIDM1MjgsIDM1MzEsIAotICAgIDM1MzYsIDM1NDAsIDM1NDQsIDM1NDgsIDM1NTIsIDM1NTUsIDM1NTksIDM1NjQsIDM1NjksIDM1NzMsIDM1NzgsIDM1ODIsIAotICAgIDM1ODcsIDM1OTEsIDM1OTUsIDM1OTksIDM2MDUsIDM2MTEsIDM2MTQsIDM2MTcsIDEzOSwgMzYyMywgMzYyOCwgMzYzNywgCi0gICAgMzY0NSwgMzY1NCwgMzY2MSwgMzY2NywgMzY3NCwgMzY3OSwgMzY4MywgMzY4NywgMzY5NSwgMzcwMiwgMzcwNywgMzcxNCwgCi0gICAgMzcxOSwgMzcyMywgMzczMywgMzczNywgMzc0MSwgMzc0NiwgMzc1MSwgMzc2MSwgMjEzMywgMzc2NiwgMzc3MCwgMzc3MywgCi0gICAgMzc3OSwgMzc4NCwgMzc5MCwgMzc5NiwgMzgwMSwgMzgwOCwgMzgxMiwgMzgxNiwgNjM3LCA3MDEsIDEzNjksIDM4MjAsIAotICAgIDM4MjcsIDM4MzQsIDM4NDAsIDM4NDUsIDM4NTIsIDM4NTksIDM4NjQsIDM4NzAsIDM4NzYsIDM4ODEsIDM4ODUsIDM4OTEsIAotICAgIDM4OTgsIDM5MDMsIDM5MDcsIDIxNDIsIDM5MTEsIDM5MTksIDM5MjUsIDM5MzMsIDczOSwgMzkzOSwgMzk0NywgMzk1OCwgCi0gICAgMzk2MiwgMzk3MiwgMjE0NywgMzk3OCwgMzk4MywgMzk5OCwgNDAwNCwgNDAxMSwgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgCi0gICAgNDA0NCwgNDA0NywgNDA1MCwgNDA1NCwgNDA1OSwgNDA2NiwgNDA3MSwgNDA3NSwgNDA3OSwgNDA4MywgNDA4NywgNDA5MiwgCi0gICAgNDA5OCwgNDEwOSwgNDExMywgMzI4NiwgNDExOCwgNDEzMCwgNDEzNiwgNDE0NCwgNDE0OCwgNDE1MywgMTU2MiwgNDE2MCwgCi0gICAgNDE2MywgNDE2NiwgNDE3MCwgNDE3MywgNDE3OSwgNDE4MywgNDE5NywgNDIwMSwgNDIwNCwgNDIwOCwgNDIxNCwgNDIyMCwgCi0gICAgNDIyNSwgNDIyOSwgNDIzMywgNDIzOSwgNDI1MCwgNDI1NiwgNDI2MSwgNDI2NywgNDI3MSwgNDI3OSwgNDI5MSwgNDMwMSwgCi0gICAgNDMwNywgNDMxMiwgNDMyMSwgNDMyOSwgNDMzNiwgNDM0MiwgNDM0NiwgNDM1MiwgNDM2MSwgNDM3MCwgNDM3NCwgNDM4MywgCi0gICAgNDM4OCwgNDM5MiwgNDM5NywgNDQwMSwgNDQwOSwgNDQxNSwgNDQxOSwgNDQyNCwgNDQyOCwgNDQzNCwgMjE1NSwgMTM4NSwgCi0gICAgNDQ0MCwgNDQ0NSwgNDQ1MSwgNDQ1NiwgNDQ2MSwgNDQ2NiwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NywgNDQ5MiwgNDQ5OCwgCi0gICAgNDUwMywgNDUwOCwgNDUxMywgNDUxOSwgNDUyNCwgNDUyOSwgNDUzNCwgNDUzOSwgNDU0NSwgNDU1MCwgNDU1NiwgNDU2MSwgCi0gICAgNDU2NiwgNDU3MSwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MiwgNDU5NywgNDYwMiwgMjkxLCAzMjEsIDQ2MDcsIDQ2MTMsIAotICAgIDQ2MTcsIDQ2MjEsIDQ2MjYsIDQ2MzAsIDQ2MzQsIDQ2MzcsIDQ2NDEsIDQ2NDUsIDQ2NDksIDQ2NTMsIDQ2NTcsIDQ2NjIsIAotICAgIDQ2NjYsIDQ2NzAsIDQ2NzYsIDQ0MzcsIDQ2ODEsIDQ2ODUsIDQ2ODgsIDQ2OTMsIDQ2OTgsIDQ3MDMsIDQ3MDgsIDQ3MTMsIAotICAgIDQ3MTgsIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDIsIDQ3NDcsIDQ3NTIsIDQ3NTcsIDQ3NjIsIDQ3NjcsIDQ3NzIsIAotICAgIDQ3NzcsIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTYsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIAotICAgIDQ4MzYsIDQ4NDEsIDQ4NDYsIDQ4NTAsIDQ4NTUsIDQ4NjAsIDQ4NjUsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIAotICAgIDQ4OTUsIDQ5MDAsIDQ5MDQsIDQ5MDksIDQ5MTQsIDQ5MTksIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIAotICAgIDQ5NTQsIDQ5NTgsIDQ5NjMsIDQ5NjgsIDQ5NzMsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIAotICAgIDUwMTIsIDUwMTcsIDUwMjIsIDUwMjcsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjYsIAotICAgIDUwNzEsIDUwNzYsIDUwODEsIDUwODYsIDUwOTIsIDUwOTgsIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjgsIDUxMzMsIAotICAgIDUxMzksIDUxNDUsIDUxNTEsIDUxNTcsIDUxNjMsIDUxNjksIDUxNzUsIDUxODEsIDUxODcsIDUxOTMsIDUxOTgsIDUyMDQsIAotICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTIsIDUyNTgsIDUyNjMsIDUyNjksIDUyNzUsIAotICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTcsIDUzMjMsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAotICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODIsIDUzODgsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAotICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDcsIDU0NTMsIDU0NTgsIDU0NjIsIDU0NjgsIDU0NzQsIDU0ODAsIDU0ODYsIAotICAgIDU0OTIsIDU0OTgsIDU1MDQsIDU1MTAsIDU1MTYsIDU1MjIsIDU1MjcsIDU1MzMsIDU1MzksIDU1NDUsIDU1NTEsIDU1NTcsIAotICAgIDU1NjMsIDU1NjksIDU1NzUsIDU1ODEsIDU1ODcsIDU1OTIsIDU1OTgsIDU2MDQsIDU2MTAsIDU2MTYsIDU2MjIsIDU2MjgsIAotICAgIDU2MzQsIDU2NDAsIDU2NDYsIDU2NTIsIDU2NTcsIDU2NjMsIDU2NjksIDU2NzUsIDU2ODEsIDU2ODcsIDU2OTMsIDU2OTksIAotICAgIDU3MDUsIDU3MTEsIDU3MTcsIDU3MjIsIDU3MjgsIDU3MzQsIDU3NDAsIDU3NDYsIDU3NTIsIDU3NTgsIDU3NjQsIDU3NzAsIAotICAgIDU3NzYsIDU3ODIsIDU3ODcsIDU3OTMsIDU3OTksIDU4MDUsIDU4MTEsIDU4MTcsIDU4MjMsIDU4MjksIDU4MzUsIDU4NDEsIAotICAgIDU4NDcsIDU4NTIsIDU4NTgsIDU4NjQsIDU4NzAsIDU4NzYsIDU4ODIsIDU4ODgsIDU4OTQsIDU5MDAsIDU5MDYsIDU5MTIsIAotICAgIDU5MTcsIDU5MjMsIDU5MjksIDU5MzUsIDU5NDEsIDU5NDcsIDU5NTMsIDU5NTksIDU5NjUsIDU5NzEsIDU5NzcsIDU5ODIsIAotICAgIDU5ODgsIDU5OTQsIDYwMDAsIDYwMDYsIDYwMTIsIDYwMTgsIDYwMjQsIDYwMzAsIDYwMzYsIDYwNDIsIDYwNDcsIDYwNTMsIAotICAgIDYwNTksIDYwNjUsIDYwNzEsIDYwNzcsIDYwODMsIDYwODksIDYwOTUsIDYxMDEsIDYxMDcsIDYxMTIsIDYxMTYsIDYxMTksIAotICAgIDYxMjYsIDYxMzAsIDYxNDMsIDYxNDcsIDYxNTEsIDYxNTUsIDYxNTgsIDYxNjIsIDYxNjcsIDYxNzEsIDYxNzUsIDYxODEsIAotICAgIDYxODgsIDYxOTksIDYyMDcsIDYyMTQsIDYyMTgsIDYyMjYsIDYyMzUsIDYyNDEsIDYyNTMsIDYyNTgsIDYyNjEsIDYyNjYsIAotICAgIDYyNzAsIDYyODAsIDYyODgsIDYyOTYsIDYzMDIsIDYzMDYsIDYzMTYsIDYzMjYsIDYzMzQsIDYzNDEsIDYzNDgsIDYzNTQsIAotICAgIDYzNjAsIDYzNjcsIDYzNzEsIDYzNzgsIDYzODgsIDYzOTgsIDY0MDYsIDY0MTMsIDY0MTgsIDY0MjIsIDY0MjYsIDY0MzQsIAotICAgIDY0MzgsIDY0NDMsIDY0NTAsIDY0NTgsIDY0NjMsIDY0NjcsIDY0NzIsIDY0NzYsIDY0ODMsIDY0ODgsIDY1MDIsIDY1MDcsIAotICAgIDY1MTIsIDY1MTksIDM1NDEsIDY1MjgsIDY1MzIsIDY1MzcsIDY1NDEsIDY1NDUsIDY1NDgsIDY1NTMsIDY1NTgsIDY1NjcsIAotICAgIDY1NzMsIDY1NzksIDY1ODUsIDY1ODksIDY2MDAsIDY2MTAsIDY2MjUsIDY2NDAsIDY2NTUsIDY2NzAsIDY2ODUsIDY3MDAsIAotICAgIDY3MTUsIDY3MzAsIDY3NDUsIDY3NjAsIDY3NzUsIDY3OTAsIDY4MDUsIDY4MjAsIDY4MzUsIDY4NTAsIDY4NjUsIDY4ODAsIAotICAgIDY4OTUsIDY5MTAsIDY5MjUsIDY5NDAsIDY5NTUsIDY5NzAsIDY5ODUsIDcwMDAsIDcwMTUsIDcwMzAsIDcwNDUsIDcwNjAsIAotICAgIDcwNzUsIDcwOTAsIDcxMDUsIDcxMjAsIDcxMzUsIDcxNTAsIDcxNjUsIDcxODAsIDcxOTUsIDcyMTAsIDcyMjUsIDcyNDAsIAotICAgIDcyNTUsIDcyNzAsIDcyODUsIDczMDAsIDczMTUsIDczMzAsIDczNDUsIDczNTQsIDczNjMsIDczNjgsIDczNzQsIDczODQsIAotICAgIDczODgsIDczOTIsIDczOTcsIDc0MDIsIDc0MTAsIDc0MTQsIDc0MTcsIDc0MjEsIDMwMzQsIDc0MjQsIDc0MjksIDMzMCwgCi0gICAgNTA0LCA3NDM1LCA3NDQzLCA3NDQ3LCA3NDUxLCA3NDU0LCA3NDU4LCA3NDY0LCA3NDY4LCA3NDc2LCA3NDgyLCA3NDg3LCAKLSAgICA3NDk0LCA3NTAyLCA3NTA5LCA3NTE1LCA3NTIwLCA3NTI3LCA3NTMzLCA3NTQxLCA3NTQ1LCA3NTUwLCA3NTYyLCA3NTczLCAKLSAgICA3NTgwLCA3NTg0LCA3NTg4LCA3NTkyLCA3NTk1LCA3NjAxLCAzMzExLCA3NjA1LCA3NjExLCA3NjE2LCA3NjIxLCA3NjI2LCAKLSAgICA3NjMyLCA3NjM3LCA3NjQyLCA3NjQ3LCA3NjUyLCA3NjU4LCA3NjYzLCA3NjY4LCA3Njc0LCA3Njc5LCA3Njg1LCA3NjkwLCAKLSAgICA3Njk2LCA3NzAxLCA3NzA3LCA3NzEyLCA3NzE3LCA3NzIyLCA3NzI3LCA3NzMyLCA3NzM4LCA3NzQzLCA3NzQ4LCA3NzUzLCAKLSAgICA3NzU5LCA3NzY1LCA3NzcxLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKLSAgICA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCA3ODU1LCA3ODYwLCA3ODY1LCA3ODcxLCA3ODc3LCA3ODgyLCA3ODg4LCAKLSAgICA3ODk0LCA3OTAwLCA3OTA1LCA3OTEwLCA3OTE1LCA3OTIwLCA3OTI2LCA3OTMyLCA3OTM3LCA3OTQyLCA3OTQ3LCA3OTUyLCAKLSAgICA3OTU3LCA3OTYzLCA3OTY4LCA3OTc0LCA3OTgwLCA3OTg2LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKLSAgICAyMTY0LCA3NDUzLCA4MDI3LCA4MDMxLCA4MDM1LCA4MDM4LCA4MDQ1LCA4MDQ4LCA4MDUyLCA4MDYwLCA4MDY1LCA4MDcwLCAKLSAgICA4MDYxLCA4MDc1LCAyMTkxLCA4MDc5LCA4MDg1LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA4LCA4MTE2LCA4MTIxLCA4MTI1LCAKLSAgICA4MTI4LCA4MTMyLCA4MTM4LCA4MTQ0LCA4MTQ4LCAyMTk5LCA1MjYsIDgxNTEsIDgxNTUsIDgxNjAsIDgxNjYsIDgxNzEsIAotICAgIDgxNzUsIDgxNzgsIDgxODIsIDgxODgsIDgxOTMsIDgxOTcsIDgyMDQsIDgyMDgsIDgyMTIsIDgyMTYsIDg3NiwgOTU4LCAKLSAgICA4MjE5LCA4MjI3LCA4MjM0LCA4MjQwLCA4MjQ3LCA4MjU1LCA4MjYyLCA4MjczLCA4MjgwLCA4Mjg2LCA4MjkxLCA4MzAzLCAKLSAgICAxMjI4LCAxMzkzLCAxMzk4LCA4MzE0LCAxNDAzLCA4MzE4LCA4MzIyLCA4MzMxLCA4MzM5LCA4MzQzLCA4MzUyLCA4MzU4LCAKLSAgICA4MzYzLCA4MzY3LCA4MzczLCA4Mzc4LCA4Mzg1LCAyNzQ1LCA4MzkyLCA4Mzk2LCA4NDA1LCA4NDE0LCA4NDIzLCA4NDMyLCAKLSAgICA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU5LCA4NDcxLCA4NDc2LCA4NDg0LCAyMjUwLCA4NDg4LCA4NDkwLCA4NDk1LCA4NDk5LCAKLSAgICA4NTA4LCA4NTE2LCAxNDA3LCAxNTksIDM1ODMsIDM1ODgsIDg1MjIsIDg1MjYsIDg1MzUsIDg1NDEsIDg1NDYsIDg1NDksIAotICAgIDg1NTgsIDM1OTIsIDI3MzcsIDg1NjQsIDg1NzIsIDg1NzYsIDg1ODAsIDg1ODQsIDIyNjcsIDg1ODgsIDg1OTMsIDg2MDAsIAotICAgIDg2MDYsIDg2MTIsIDg2MTUsIDg2MTcsIDg2MjAsIDg2MjgsIDg2MzYsIDg2NDQsIDg2NDcsIDg2NTIsIDIyODAsIDg2NTcsIAotICAgIDgwNzIsIDg2NjAsIDg2NjIsIDg2NjcsIDg2NzIsIDg2NzcsIDg2ODIsIDg2ODcsIDg2OTIsIDg2OTcsIDg3MDIsIDg3MDcsIAotICAgIDg3MTIsIDg3MTgsIDg3MjMsIDg3MjgsIDg3MzMsIDg3MzksIDg3NDQsIDg3NDksIDg3NTQsIDg3NTksIDg3NjQsIDg3NjksIAotICAgIDg3NzUsIDg3ODAsIDg3ODUsIDg3OTAsIDg3OTUsIDg4MDAsIDg4MDUsIDg4MTAsIDg4MTUsIDg4MjAsIDg4MjUsIDg4MzAsIAotICAgIDg4MzUsIDg4NDAsIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjYsIDg4NzIsIDg4NzcsIDg4ODIsIDg4ODcsIDg4OTIsIAotICAgIDg4OTcsIDIyOTEsIDIyOTgsIDIzMDQsIDg5MDIsIDg5MTAsIDg5MTYsIDg5MjQsIDIzMzAsIDIzMzYsIDg5MzIsIDg5MzYsIAotICAgIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIDg5NTgsIDg5NjIsIDg5NjcsIDg5NzEsIDg5NzQsIDg5NzcsIDg5ODMsIDg5OTAsIAotICAgIDg5OTYsIDkwMDMsIDkwMDksIDkwMTYsIDkwMjIsIDkwMjksIDkwMzUsIDkwNDEsIDkwNTAsIDkwNTYsIDkwNjAsIDkwNjQsIAotICAgIDkwNjgsIDkwNzIsIDkwNzcsIDkwODEsIDkwODYsIDkwOTAsIDkwOTYsIDkxMDEsIDkxMDgsIDkxMTksIDkxMjcsIDkxMzcsIAotICAgIDkxNDMsIDkxNTMsIDkxNjIsIDkxNjksIDkxNzQsIDkxNzgsIDkxODksIDkyMDIsIDkyMTMsIDkyMjYsIDkyMzcsIDkyNDksIAotICAgIDkyNjEsIDkyNzMsIDkyODYsIDkyOTksIDkzMDYsIDkzMTIsIDkzMjYsIDkzMzMsIDkzMzksIDkzNDgsIDkzNTYsIDkzNjAsIAotICAgIDkzNjUsIDkzNjksIDkzNzYsIDkzODQsIDkzODgsIDkzOTQsIDkzOTgsIDk0MDQsIDk0MTQsIDk0MTgsIDk0MjMsIDk0MjgsIAotICAgIDk0MzUsIDk0NDEsIDk0NTEsIDgyNDIsIDk0NTcsIDk0NjEsIDk0NjgsIDk0NzQsIDk0ODEsIDk0ODgsIDk1NywgOTQ5MiwgCi0gICAgOTQ5NiwgOTUwMSwgOTUwNiwgOTUxMSwgOTUxNSwgOTUyMSwgOTUyOSwgOTUzNSwgOTUzOSwgOTU0MiwgOTU0OCwgOTU1OCwgCi0gICAgOTU2MiwgOTU2OCwgOTU3MywgOTU3NywgOTU4MSwgOTU4NywgOTU5MywgMjE4NywgOTU5OCwgOTYwMCwgOTYwNSwgOTYxMywgCi0gICAgOTYyMiwgOTYyNiwgOTYzMiwgOTYzNywgOTY0MiwgOTY0NywgOTY1MiwgOTY1OCwgOTY2MywgOTY2OCwgNDIzNSwgOTY3MywgCi0gICAgOTY3OCwgOTY4MiwgOTY4OCwgOTY5MywgOTY5OSwgOTcwNCwgOTcwOSwgOTcxNSwgOTcyMCwgOTYyNywgOTcyNiwgOTczMCwgCi0gICAgOTczNywgOTc0MywgOTc0OCwgOTc1MiwgNjQ5OCwgOTc1NywgOTc2NiwgOTc3MSwgOTc3NiwgODU5NiwgODYwMywgOTc4MSwgCi0gICAgMjkxMiwgOTc4NSwgOTc5MCwgOTc5NSwgOTgwMCwgOTYzOCwgOTgwNCwgOTgwOSwgOTgxNCwgOTY0MywgOTgxOCwgOTY0OCwgCi0gICAgOTgyMywgOTgzMCwgOTgzNywgOTg0MywgOTg1MCwgOTg1NiwgOTg2MiwgOTg2NywgOTg3NCwgOTg3OSwgOTg4NCwgOTg4OSwgCi0gICAgOTg5NSwgOTY1MywgOTY1OSwgOTkwMSwgOTkwNywgOTkxMiwgOTkxNywgOTkyNSwgOTY2NCwgOTkzMCwgMTEwMiwgOTkzMywgCi0gICAgOTk0MSwgOTk0NywgOTk1MywgOTk2MiwgOTk3MCwgOTk3OCwgOTk4NiwgOTk5NCwgMTAwMDIsIDEwMDEwLCAxMDAxOCwgCi0gICAgMTAwMjYsIDEwMDM1LCAxMDA0NCwgMTAwNTIsIDEwMDYxLCAxMDA3MCwgMTAwNzksIDEwMDg4LCAxMDA5NywgMTAxMDYsIAotICAgIDEwMTE1LCAxMDEyNCwgMTAxMzMsIDEwMTQyLCAxMDE1MCwgMTAxNTUsIDEwMTYxLCAxMDE2OSwgMTAxNzYsIDEwMTkxLCAKLSAgICAxMDIwOCwgMTAyMjcsIDEwMjM2LCAxMDI0NCwgMTAyNTksIDEwMjcwLCAxMDI4MCwgMTAyOTAsIDEwMjk4LCAxMDMwNCwgCi0gICAgMTAzMTYsIDEwMzI1LCAxMDMzMywgMTAzNDAsIDEwMzQ3LCAxMDM1NCwgMTAzNjAsIDEwMzY1LCAxMDM3NSwgMTAzODMsIAotICAgIDEwMzkzLCAxMDQwMCwgMTA0MTAsIDEwNDIwLCAxMDQzMCwgMTA0MzgsIDEwNDQ1LCAxMDQ1NCwgMTA0NjQsIDEwNDc4LCAKLSAgICAxMDQ5MywgMTA1MDIsIDEwNTEwLCAxMDUxNSwgMTA1MTksIDEwNTI4LCAxMDUzNCwgMTA1MzksIDEwNTQ5LCAxMDU1OSwgCi0gICAgMTA1NjksIDEwNTc0LCAxMDU3OCwgMTA1ODcsIDEwNTkyLCAxMDYwOCwgMTA2MjUsIDEwNjM1LCAxMDY0NiwgMTA2NTksIAotICAgIDEwNjY3LCAxMDY4MCwgMTA2OTIsIDEwNzAwLCAxMDcwNSwgMTA3MDksIDEwNzE1LCAxMDcyMCwgMTA3MjgsIDEwNzM2LCAKLSAgICAxMDc0MywgMTA3NDgsIDEwNzU2LCAxMDc2NiwgMTA3NzIsIDEwNzc2LCAxMDc3OSwgMTA3ODMsIDEwNzg5LCAxMDc5NiwgCi0gICAgMTA4MDAsIDEwODA4LCAxMDgxNywgMTA4MjUsIDEwODMyLCAxMDgzNywgMTA4NDIsIDEwODQ2LCAxMDg1MCwgMTA4NTgsIAotICAgIDEwODczLCAxMDg4OSwgMTA4OTUsIDEwOTAzLCAxMDkxMiwgMTA5MjAsIDEwOTI2LCAxMDkzMCwgMTA5MzcsIDEwOTQ4LCAKLSAgICAxMDk1MiwgMTA5NTUsIDEwOTYxLCA5NjY5LCAxMDk2NiwgMTA5NzIsIDEwOTc5LCAxMDk4NSwgMTA5OTAsIDEwOTk3LCAKLSAgICAxMTAwNCwgMTEwMTEsIDExMDE4LCAxMTAyNSwgMTEwMzIsIDExMDM5LCAxMTA0NiwgMTEwNTEsIDEwMjA0LCAxMTA1NiwgCi0gICAgMTEwNjIsIDExMDY5LCAxMTA3NiwgMTEwODEsIDExMDg4LCAxMTA5NywgMTExMDEsIDExMTEzLCA4NjM0LCAxMTExNywgCi0gICAgMTExMjAsIDExMTI0LCAxMTEyOCwgMTExMzIsIDExMTM2LCAxMTE0MiwgMTExNDgsIDExMTUzLCAxMTE1OSwgMTExNjQsIAotICAgIDExMTY5LCAxMTE3NSwgMTExODAsIDExMTg1LCA5NDMxLCAxMTE5MCwgMTExOTQsIDExMTk4LCAxMTIwMiwgMTEyMDcsIAotICAgIDExMjEyLCAxMTIxNywgMTEyMjUsIDExMjMxLCAxMTIzNiwgMTEyNDAsIDExMjQ0LCAxMTI1MSwgMTEyNTYsIDExMjY0LCAKLSAgICAxMTI3MSwgMTEyNzYsIDExMjgwLCAxMTI4MywgMTEyODksIDExMjk2LCAxMTMwMCwgMTEzMDMsIDExMzA4LCAxMTMxMiwgCi0gICAgNDI3NCwgMTEzMTgsIDExMzI3LCA0NiwgMTEzMzUsIDExMzQxLCAxMTM0NiwgMTEzNTEsIDExMzU5LCAxMTM2NiwgMTEzNzEsIAotICAgIDk0NDYsIDExMzc3LCAxMTM4MywgMTEzODgsIDExMzkyLCAxMTM5NSwgMTE0MTAsIDExNDI5LCAxMTQ0MSwgMTE0NTQsIAotICAgIDExNDY3LCAxMTQ4MCwgMTE0OTQsIDExNTA3LCAxMTUyMiwgMTE1MjksIDk2NzQsIDExNTM1LCAxMTU0OSwgMTE1NTQsIAotICAgIDExNTYwLCAxMTU2NSwgMTE1NzMsIDExNTc4LCA4NDAxLCAxMTU4MywgMTE1ODYsIDExNTk0LCAxMTYwMSwgMTE2MDYsIAotICAgIDExNjEwLCAxMTYxNiwgMjkxNywgMTAyNzgsIDExNjIwLCAxMTYyNCwgMTE2MzAsIDExNjM2LCAxMTY0MSwgMTE2NDcsIAotICAgIDExNjUyLCA5NjgzLCAxMTY1OCwgMTE2NjQsIDExNjY5LCAxMTY3NCwgMTE2ODIsIDExNjg4LCAxMTcwMSwgMTE3MDksIAotICAgIDExNzE2LCAxMTcyMiwgOTY4OSwgMTE3MjgsIDExNzM2LCAxMTc0NCwgMTE3NTEsIDExNzY0LCAxMTc3NywgMTE3ODksIAotICAgIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODI2LCAxMTgzMywgMTE4NDMsIDExODUyLCAxMTg2MSwgMTE4NjksIDExODc2LCAKLSAgICAxMTg4MSwgMTE4ODcsIDk2OTQsIDExODkyLCAxMTg5OCwgMTE5MDMsIDExOTA4LCA5NzAwLCAxMTkxMywgMTE5MTYsIAotICAgIDExOTIzLCAxMTkyOSwgMTE5NDIsIDkxMTIsIDExOTUzLCAxMTk1OSwgMTE5NjgsIDExOTc2LCAxMTk4MywgMTE5ODksIAotICAgIDEyMDAwLCAxMjAwNiwgMTIwMTEsIDM4MzYsIDEyMDE5LCAxMjAyNCwgMTE0MDIsIDEyMDMwLCAxMjAzNywgMTIwNDIsIAotICAgIDk3MDUsIDEyMDQ4LCAxMjA1MywgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzcsIDEyMDg1LCAxMjA5MywgMTIxMDAsIAotICAgIDEyMTA0LCAxMjExNiwgMTIxMzAsIDEyMTQwLCAxMjE0NSwgMTIxNDksIDEyMTYwLCAxMjE2NiwgMTIxNzEsIDEyMTc2LCAKLSAgICA5NzEwLCAxMjE4MCwgOTcxNiwgMTIxODUsIDEyMTg4LCAxMjE5MywgMTIyMDUsIDEyMjEyLCAxMjIxNywgMTIyMjEsIAotICAgIDEyMjI5LCAxMjIzNCwgMTIyMzgsIDEyMjQzLCAxMjI0NywgMTIyNTQsIDEyMjYwLCA5NzIxLCA5NjI4LCAxMjI2NywgMjkyMiwgCi0gICAgMTIsIDEyMjc0LCAxMjI3OSwgMTIyODMsIDEyMjg3LCAxMjI5MywgMTIzMDEsIDEyMzExLCAxMjMxNiwgMTIzMjEsIDEyMzI4LCAKLSAgICAxMjMzNSwgMTIzMzksIDEyMzUwLCAxMjM2MCwgMTIzNjksIDEyMzc4LCAxMjM5MCwgMTIzOTUsIDEyMzk5LCAxMjQwNywgCi0gICAgMTI0MjEsIDEyNDI1LCAxMjQyOCwgMTI0MzYsIDEyNDQzLCAxMjQ1MSwgMTI0NTUsIDEyNDY2LCAxMjQ3MCwgMTI0NzcsIAotICAgIDEyNDgyLCAxMjQ4NiwgMTI0OTIsIDEyNDk3LCAxMjUwMywgMTI1MDgsIDEyNTEzLCAxMjUxNywgMTI1MjMsIDEyNTI4LCAKLSAgICAxMjUzOSwgMTI1NDMsIDEyNTQ2LCAxMjU1MiwgMTI1NTcsIDEyNTYzLCAxMjU2OSwgMTI1NzYsIDEyNTg3LCAxMjU5NywgCi0gICAgMTI2MDcsIDEyNjE2LCAxMjYyMywgMTI2MzIsIDEyNjM2LCA5NzMxLCA5NzM4LCA5NzQ0LCA5NzQ5LCAxMjY0MiwgMTI2NDgsIAotICAgIDEyNjU0LCAxMjY1OSwgMTI2NjUsIDk3NTMsIDEyNjcxLCAxMjY3NCwgMTI2ODEsIDEyNjg2LCAxMjcwMSwgMTI3MTcsIAotICAgIDEyNzMyLCAxMjc0MCwgMTI3NDYsIDEyNzUxLCA5NTAsIDM3NCwgMTI3NTYsIDEyNzY0LCAxMjc3MSwgMTI3NzcsIDEyNzgyLCAKLSAgICAxMjc4NywgOTc1OCwgMTI3ODksIDEyNzkzLCAxMjc5OCwgMTI4MDIsIDEyODEyLCAxMjgxNywgMTI4MjEsIDEyODMwLCAKLSAgICAxMjgzNCwgMTI4MzcsIDEyODQ0LCA5NzY3LCAxMjg0OSwgMTI4NTIsIDEyODYwLCAxMjg2NywgMTI4NzUsIDEyODc5LCAKLSAgICAxMjg4MywgMTI4OTAsIDEyODk5LCAxMjkwNiwgMTI5MDIsIDEyOTEzLCAxMjkxNywgMTI5MjMsIDEyOTI3LCAxMjkzMSwgCi0gICAgMTI5MzUsIDEyOTQxLCAxMjk1MSwgMTI5NTksIDEyOTY2LCAxMjk3MCwgMTI5NzgsIDEyOTgyLCAxMjk4OSwgMTI5OTMsIAotICAgIDEyOTk4LCAxMzAwMiwgMTMwMDksIDEzMDE1LCAxMzAyMywgMTMwMjksIDEzMDM0LCAxMzA0NCwgMTMwNDksIDEzMDU0LCAKLSAgICAxMzA1OCwgMTMwNjIsIDEzMDcwLCA0MTI0LCAxMzA3OCwgMTMwODMsIDk3NzIsIDEzMDg3LCAxMzA5MSwgMTMwOTQsIAotICAgIDEzMTAyLCAxMzEwOSwgMTMxMTMsIDYyOTgsIDEzMTE3LCAxMzEyMiwgMTMxMjcsIDEzMTMxLCAxMzE0MiwgMTMxNTIsIAotICAgIDEzMTU3LCAxMzE2MywgMTMxNjgsIDEzMTcyLCAxMzE3NSwgMTMxODMsIDEzMTg4LCAxMzE5MywgMTMyMDAsIDEzMjA1LCAKLSAgICA5Nzc3LCAxMzIxMCwgMTMyMTQsIDEzMjIxLCAxNzM3LCA2NDU2LCAxMzIyNiwgMTMyMzEsIDEzMjM2LCAxMzI0MSwgMTMyNDcsIAotICAgIDEzMjUyLCAxMzI1OCwgMTMyNjMsIDEzMjY4LCAxMzI3MywgMTMyNzgsIDEzMjgzLCAxMzI4OCwgMTMyOTMsIDEzMjk4LCAKLSAgICAxMzMwMywgMTMzMDgsIDEzMzEzLCAxMzMxOCwgMTMzMjMsIDEzMzI4LCAxMzMzMywgMTMzMzgsIDEzMzQ0LCAxMzM0OSwgCi0gICAgMTMzNTQsIDEzMzU5LCAxMzM2NCwgMTMzNjksIDEzMzc1LCAxMzM4MCwgMTMzODUsIDEzMzkxLCAxMzM5NiwgMTM0MDIsIAotICAgIDEzNDA3LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIDEzNDM5LCAxMzQ0NCwgMTM0NDksIDEzNDU0LCAKLSAgICA5MDksIDExMiwgMTM0NjIsIDEzNDY2LCAxMzQ3MSwgMTM0NzYsIDEzNDgwLCAxMzQ4NCwgMTM0ODgsIDEzNDkzLCAxMzQ5NywgCi0gICAgMTM1MDIsIDEzNTA2LCAxMzUwOSwgMTM1MTMsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTM4LCAxMzU0NCwgMTM1NTIsIAotICAgIDEzNTU4LCAxMzU2MiwgMTM1NjYsIDEzNTczLCAxMzU4MSwgMTM1OTAsIDEzNjAxLCAxMzYxMSwgMTM2MTgsIDEzNjI1LCAKLSAgICAxMzYyOSwgMTM2MzgsIDEzNjQ3LCAxMzY1NSwgMTM2NjQsIDEzNjczLCAxMzY4MiwgMTM2OTEsIDEzNzAxLCAxMzcxMSwgCi0gICAgMTM3MjEsIDEzNzMxLCAxMzc0MSwgMTM3NTAsIDEzNzYwLCAxMzc3MCwgMTM3ODAsIDEzNzkwLCAxMzgwMCwgMTM4MTAsIAotICAgIDEzODIwLCAxMzgyOSwgMTM4MzksIDEzODQ5LCAxMzg1OSwgMTM4NjksIDEzODc5LCAxMzg4OSwgMTM4OTgsIDEzOTA4LCAKLSAgICAxMzkxOCwgMTM5MjgsIDEzOTM4LCAxMzk0OCwgMTM5NTgsIDEzOTY4LCAxMzk3OCwgMTM5ODgsIDEzOTk3LCAxNDAwNywgCi0gICAgMTQwMTcsIDE0MDI3LCAxNDAzNywgMTQwNDcsIDE0MDU3LCAxNDA2NywgMTQwNzcsIDE0MDg3LCAxNDA5NywgMTQxMDYsIAotICAgIDEyMzcsIDE0MTEyLCAxNDExNSwgMTQxMTksIDE0MTI0LCAxNDEzMSwgMTQxMzcsIDE0MTQyLCAxNDE0NiwgMTQxNTEsIAotICAgIDE0MTYwLCAxNDE2OCwgMTQxNzMsIDE0MTc3LCAxNDE4MSwgMTQxODcsIDE0MTkyLCAxNDE5OCwgOTc4NiwgMTQyMDMsIAotICAgIDE0MjA4LCAxNDIxNywgOTc5NiwgMTQyMjIsIDE0MjI1LCAxNDIzMSwgMTQyMzksIDk4MDEsIDE0MjQ2LCAxNDI1MCwgCi0gICAgMTQyNTQsIDE0MjU5LCAxNDI2MywgMTQyNzMsIDE0Mjc5LCAxNDI4NSwgMTQyOTAsIDE0Mjk5LCAxNDMwNywgMTQzMTQsIAotICAgIDE0MzIxLCAxNDMyNiwgMTQzMzMsIDE0MzM4LCAxNDM0MiwgMTQzNDUsIDE0MzU2LCAxNDM2NiwgMTQzNzUsIDE0MzgzLCAKLSAgICAxNDM5NCwgMTQ0MDYsIDE0NDE2LCAxNDQyMSwgMTQ0MjUsIDE0NDMwLCAxNDQzNSwgMTQ0MzksIDE0NDQ1LCAxNDQ1MywgCi0gICAgMTQ0NjAsIDE0NDcxLCAxNDQ3NiwgMTQ0ODYsIDE0NDk1LCAxNDQ5OSwgMTQ1MDIsIDE0NTA5LCAxNDUxOSwgMTQ1MjgsIAotICAgIDE0NTM1LCAxNDUzOSwgMTQ1NDYsIDE0NTUyLCAxNDU1NywgMTQ1NjIsIDE0NTY2LCAxNDU3NSwgMTQ1ODAsIDE0NTg0LCAKLSAgICAxNDU5MCwgMTQ1OTQsIDE0NTk5LCAxNDYwMywgMTQ2MTAsIDE0NjE3LCAxNDYyMSwgMTQ2MzAsIDE0NjM4LCAxNDY0NiwgCi0gICAgMTQ2NTMsIDE0NjYxLCAxNDY3MywgMTQ2ODQsIDE0Njk0LCAxNDcwMSwgMTQ3MDcsIDE0NzE2LCAxNDcyNywgMTQ3MzYsIAotICAgIDE0NzQ4LCAxNDc2MCwgMTQ3NzIsIDE0NzgyLCAxNDc5MSwgMTQ4MDAsIDE0ODA4LCAxNDgxNSwgMTQ4MjQsIDE0ODMyLCAKLSAgICAxNDgzNiwgMTQ4NDEsIDE0ODQ3LCAxNDg1MywgMTQ4NTgsIDE0ODYzLCA4MDkzLCAxNDg2NywgMTQ4NjksIDE0ODczLCAKLSAgICAxNDg3OCwgMTQ4ODQsIDE0ODkwLCAxNDg5OSwgMTQ5MDMsIDE0OTA5LCAxNDkxNywgMTQ5MjQsIDE0OTMzLCAxNDk0MiwgCi0gICAgMTQ5NTEsIDE0OTYwLCAxNDk2OSwgMTQ5NzgsIDE0OTg3LCAxNDk5NiwgMTUwMDYsIDE1MDE2LCAxNTAyNSwgMTUwMzEsIAotICAgIDE1MDM4LCAxNTA0NSwgMTUwNTEsIDE1MDY1LCAxNTA3MSwgMTUwNzgsIDE1MDg2LCAxNTA5NSwgMTUxMDMsIDE1MTA5LCAKLSAgICAxNTExOCwgMTUxMjcsIDE1MTM4LCAxNTE0OCwgMTUxNTYsIDE1MTYzLCAxNTE3MSwgMTUxODAsIDE1MTkzLCAxNTIwMiwgCi0gICAgMTUyMTAsIDE1MjE3LCAxNTIzMCwgMTUyMzYsIDE1MjQyLCAxNTI1MiwgMTUyNjEsIDE1MjcwLCAxNTI3NSwgMTUyNzksIAotICAgIDE1Mjg1LCAxNTI5MSwgMTUyOTYsIDE1MzAzLCAxNTMxMCwgOTQ0NSwgMTUzMTUsIDE1MzIwLCAxNTMyNywgMTUzMzUsIAotICAgIDE1MzQwLCAxNTM0NywgMTUzNTIsIDE1MzY0LCAxMzUxOSwgMTUzNjksIDE1Mzc3LCAxNTM4MywgMTUzODgsIDE1Mzk2LCAKLSAgICAxNTQwNCwgMTU0MTEsIDE1NDE5LCAxNTQyNSwgMTU0MzMsIDE1NDQxLCAxNTQ0NywgMTU0NTIsIDE1NDU4LCAxNTQ2NSwgCi0gICAgMTU0NzEsIDE1NDc2LCAxNTQ4MCwgMTU0OTEsIDE1NDk5LCAxNTUwNSwgMTU1MTAsIDE1NTE3LCAxNTUyNiwgMTU1MzIsIAotICAgIDE1NTM3LCAxNTU0NSwgMTU1NTQsIDE1NTY4LCA0MDY4LCAxNTU3MiwgMTU1NzcsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIAotICAgIDE1NTk4LCAxNTYwMiwgMTU2MDcsIDE1NjEyLCAxNTYxNywgODA5MiwgMTU2MjIsIDE1NjI3LCAxNTYzMiwgMTU2MzcsIAotICAgIDE1NjQyLCAxNTY0NiwgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMTU2NjYsIDE1NjcyLCAxNTY3OCwgMTU2ODMsIDE1Njg3LCAKLSAgICAxNTY5MywgMTU2OTgsIDE1NzAzLCAxNTcwOCwgOTgwNSwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDE1NzMzLCAKLSAgICAxNTc1MCwgMTU3NjgsIDE1NzgwLCAxNTc5MywgMTU4MTAsIDE1ODI2LCAxNTg0MywgMTU4NTMsIDE1ODcyLCAxNTg4MywgCi0gICAgMTU4OTQsIDE1OTA1LCAxNTkxNiwgMTU5MjgsIDE1OTM5LCAxNTk1MCwgMTU5NjcsIDE1OTc4LCAxNTk4OSwgMTU5OTQsIAotICAgIDk4MTAsIDE1OTk5LCAxNjAwMywgMjQyMCwgMTYwMDcsIDE2MDEwLCAxNjAxNiwgMTYwMjQsIDE2MDMyLCAxNjA0MSwgCi0gICAgMTYwNDgsIDE2MDUzLCAxNjA2MSwgMTYwNjksIDE2MDc2LCAxNjA4MCwgMTYwODUsIDE2MDkxLCAxNjA5OCwgMTYxMDYsIAotICAgIDE2MTEzLCAxNjEyNSwgMTYxMzIsIDE2MTM4LCAxNjE0NiwgMTYxNTEsIDE2MTU3LCAxMjY5NSwgMTYxNjMsIDE2MTcyLCAKLSAgICAxNjE3OCwgMTYxODMsIDE2MTkxLCAxNjIwMCwgMTYyMDgsIDE2MjE1LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0MiwgCi0gICAgMTYyNDgsIDE2MjU1LCAxNjI2MiwgMTYyNjgsIDE2Mjc0LCAxNjI4MywgMTYyOTEsIDE2MzAxLCAxNjMwOCwgMTYzMTQsIAotICAgIDE2MzIyLCAxNjMyOCwgMTYzMzYsIDE2MzQ0LCAxNjM1MSwgMTYzNjQsIDE2MzcxLCAxNjM4MCwgMTYzODksIDE2Mzk4LCAKLSAgICAxNjQwNiwgMTY0MTYsIDE2NDIzLCAxNjQyOCwgMzcyNywgMTY0MzUsIDE2NDQwLCAxMzUzLCAxNjQ0NCwgMTU2MjMsIAotICAgIDE2NDQ4LCAxNjQ1NCwgMTY0NTgsIDE2NDY2LCAxNjQ3OCwgMTY0ODMsIDE2NDkwLCAxNjQ5NiwgMTY1MDEsIDE2NTA4LCAKLSAgICAxNTYyOCwgMTY1MTIsIDE2NTE2LCAxNjUyMCwgMTU2MzMsIDE2NTI0LCAxNTYzOCwgMTY1MjgsIDE2NTM1LCAxNjU0MCwgCi0gICAgMTY1NDQsIDE2NTUxLCAxNjU1NSwgMTY1NjMsIDE2NTcwLCAxNjU3NSwgMTY1NzksIDE2NTg2LCAxNjYwMywgMTY2MTIsIAotICAgIDE2NjE2LCAxNjYxOSwgMTY2MjcsIDE2NjMzLCAxNjYzOCwgMzgwNSwgMTY2NDIsIDE2NjQ0LCAxNjY1MiwgMTY2NTksIAotICAgIDE2NjY5LCAxNjY4MSwgMTY2ODYsIDE2NjkwLCAxNjY5NiwgMTY3MDEsIDE2NzA1LCAxNjcxMSwgMTY3MTYsIDE2NzIyLCAKLSAgICAxNjcyNSwgMTY3MzIsIDE2NzQwLCAxNjc0NywgMTY3NTMsIDE2NzU4LCAxNjc2NCwgMTY3NjksIDE2Nzc2LCAxNjc4MiwgCi0gICAgMTY3ODcsIDE2Nzk0LCAxNjc5OSwgMTY4MDMsIDE2ODA5LCAxNjgxMywgMTY4MjAsIDE2ODI2LCAxNjgzMSwgMTY4MzcsIAotICAgIDE2ODQ1LCAxNjg1MywgMTY4NjAsIDE2ODY2LCAxNjg3MSwgMTY4NzcsIDE2ODgzLCAxNjg5MSwgMTY4OTksIDE2OTA1LCAKLSAgICAxNjkxMSwgMTY5MTYsIDE2OTIzLCAxNjkyOCwgMTY5MzIsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MSwgCi0gICAgMTY5NjQsIDE2OTcwLCAxNjk3NiwgMTY5NzksIDE2OTgzLCAxNjk4NywgMTY5OTksIDE3MDA1LCAxNzAxMCwgMTcwMTcsIAotICAgIDE3MDIzLCAxNzAyOSwgMTcwNDAsIDE3MDUwLCAxNzA1OSwgMTcwNjcsIDE3MDc0LCAxNzA4NSwgMTcwOTUsIDE3MTA1LCAKLSAgICAxNzExMywgMTcxMTYsIDE1NjUyLCAxNzEyMSwgMTcxMjYsIDE1NjU3LCAxNTc5OCwgMTcxMzQsIDE3MTQ3LCAxNzE2MiwgCi0gICAgMTcxNzMsIDE1ODE1LCAxNzE5MSwgMTcyMDQsIDE3MjE3LCAxNzIyOCwgMTE0MTcsIDE3MjM5LCAxNzI1MiwgMTcyNzEsIAotICAgIDE3MjgyLCAxNzI5MywgMTczMDQsIDI2ODgsIDE3MzE3LCAxNzMyMSwgMTczMjksIDE3MzQwLCAxNzM0OCwgMTczNjMsIAotICAgIDE3Mzc4LCAxNzM4OSwgMTczOTYsIDE3NDAyLCAxNzQxMCwgMTc0MTQsIDE3NDIwLCAxNzQyMywgMTc0MzYsIDE3NDQ4LCAKLSAgICAxNzQ1OCwgMTc0NjYsIDE3NDczLCAxNzQ4MSwgMTc0OTEsIDE3NDk2LCAxNzUwMywgMTc1MDgsIDE3NTE1LCAxNzUyNiwgCi0gICAgMTc1MzYsIDE3NTQyLCAxNzU0NywgMTc1NTIsIDE1NjYyLCAxNzU1NiwgMTc1NjIsIDE3NTY4LCAxNzU3MywgMTc1NzgsIAotICAgIDE3NTgzLCAxNzU4NywgMTU2NjcsIDE1NjczLCAxNzU5MSwgMTU2NzksIDE3NTk2LCAxNzYwNCwgMTc2MDksIDE3NjEzLCAKLSAgICAxNzYyMSwgMTc2MzAsIDE3NjM3LCAxNzY0MSwgOTY0OSwgMTc2NDUsIDE3NjQ3LCAxNzY1MiwgMTc2NTcsIDE3NjYzLCAKLSAgICAxNzY2OCwgMTc2NzMsIDE3Njc4LCAxNzY4MywgMTc2ODcsIDE3NjkzLCAxNzY5OSwgMTc3MDQsIDE3NzEwLCAxNzcxNSwgCi0gICAgMTc3MjAsIDE3NzI0LCAxNzczMCwgMTc3MzUsIDE3NzQwLCAxNzc0NSwgMTc3NTcsIDE3NzYyLCAxNzc2OCwgMTc3NzMsIAotICAgIDE3Nzc4LCAxNzc4NCwgMTc3OTAsIDE3Nzk1LCAxNzgwMCwgMTc4MDUsIDE3ODEyLCAxNzgxOCwgMTc4MjksIDE3ODM2LCAKLSAgICAxNzg0MSwgMTc4NDUsIDE3ODQ5LCAxNzg1MiwgMTc4NjAsIDE3ODY1LCAxNzg3MiwgMTc4NzksIDE3ODg1LCAxNzg5MCwgCi0gICAgMTc4OTUsIDE3OTAwLCAxNzkwNywgMTc5MTcsIDE3OTI1LCAxNzkzMCwgMTc5MzcsIDE3OTQzLCAxNzk1MiwgMTc5NjIsIAotICAgIDE3OTcyLCAxNzk4NiwgMTgwMDAsIDE4MDE0LCAxODAyOCwgMTgwNDMsIDE4MDU4LCAxODA3NSwgMTgwOTMsIDE4MTA2LCAKLSAgICAxODExMiwgMTgxMTcsIDE4MTIyLCAxODEyNiwgMTgxMzQsIDE4MTM5LCAxODE0NywgMTgxNTMsIDE4MTU5LCAxODE2NCwgCi0gICAgMTgxNjksIDE4MTczLCAxODE3OCwgMTgxODIsIDE4MTg3LCAxODE5MSwgMTgyMDIsIDE4MjA4LCAxODIxMywgMTgyMTgsIAotICAgIDE4MjI1LCAxODIzMCwgMTgyMzQsIDM2OTAsIDE4MjM5LCAxODI0NSwgMTgyNTIsIDE1Njg4LCAxODI1OCwgMTgyNjIsIAotICAgIDE4MjY4LCAxODI3MywgMTgyNzgsIDE4MjgyLCAxODI4OCwgMTgyOTMsIDE4Mjk4LCAxODMwNSwgMTgzMTAsIDE0Mjc1LCAKLSAgICAxODMxNCwgMTgzMTksIDE4MzIzLCAxODMyOCwgMTgzMzQsIDE4MzQwLCAxODM0NywgMTgzNTcsIDE4MzY1LCAxODM3MiwgCi0gICAgMTgzNzcsIDE4MzgxLCAxODM5MCwgMTgzOTgsIDE4NDA1LCAxODQxMiwgMTg0MTgsIDE4NDIzLCAxODQyOSwgMTg0MzQsIAotICAgIDE4NDM5LCAxODQ0NSwgMTg0NTAsIDE4NDU2LCAxODQ2MSwgMTg0NjcsIDE4NDczLCAxODQ4MCwgMTg0ODYsIDE4NDkxLCAKLSAgICAxODQ5NiwgOTg3NSwgMTg1MDUsIDE4NTA4LCAxODUxNiwgMTg1MjIsIDE4NTI3LCAxODUzMiwgMTg1NDIsIDE4NTQ5LCAKLSAgICAxODU1NSwgMTg1NjAsIDE4NTY1LCAxODU3MSwgMTg1NzYsIDE4NTgyLCAxODU4NywgMTg1OTMsIDE4NTk5LCAxODYwNCwgCi0gICAgMTg2MTIsIDE4NjE5LCAxODYyNCwgMTg2MjksIDE4NjM1LCAxODY0MCwgMTg2NDQsIDE4NjUzLCAxODY2NCwgMTg2NzEsIAotICAgIDE4Njc5LCAxODY4NiwgMTg2OTEsIDE4Njk2LCAxODcwMiwgMTg3MDcsIDE4NzE1LCAxODcyMSwgMTg3MjcsIDE4NzM0LCAKLSAgICAxODc0MCwgMTg3NDUsIDE4NzQ5LCAxODc1NSwgMTg3NjAsIDE4NzY1LCAxODc2OSwgMTg3NzQsIDE0MjYsIDgxMTcsIDI5MzYsIAotICAgIDE4Nzc4LCAxODc4MiwgMTg3ODYsIDE4NzkwLCAxODc5NCwgMTg3OTgsIDE4ODAxLCAxODgwNiwgMTg4MTMsIDE4ODIxLCAKLSAgICAxNTY5OSwgMTg4MjgsIDE4ODM4LCAxODg0NiwgMTg4NTMsIDE4ODYxLCAxODg3MSwgMTg4ODAsIDkyMjAsIDE4ODkzLCAKLSAgICAxODg5OCwgMTg5MDMsIDE4OTExLCAxODkxOCwgMTQzNzEsIDE0MzgwLCAxODkyNSwgMTg5MzUsIDE4OTUwLCAxODk1NiwgCi0gICAgMTg5NjMsIDE4OTcwLCAxODk3NiwgMTg5ODIsIDE4OTkzLCAxOTAwMSwgMTkwMDksIDE5MDE5LCAxOTAyOSwgMTU3MDQsIAotICAgIDE5MDM4LCAxOTA0NCwgMTkwNTAsIDE5MDU4LCAxOTA2NiwgMTkwNzEsIDE5MDgwLCAxOTA4OCwgMTkxMDAsIDE5MTEwLCAKLSAgICAxOTEyMCwgMTkxMzAsIDE5MTM5LCAxOTE1MSwgMTkxNjEsIDE5MTcxLCAxOTE4MiwgMTkxODcsIDE5MTk5LCAxOTIxMSwgCi0gICAgMTkyMjMsIDE5MjM1LCAxOTI0NywgMTkyNTksIDE5MjcxLCAxOTI4MywgMTkyOTUsIDE5MzA3LCAxOTMxOCwgMTkzMzAsIAotICAgIDE5MzQyLCAxOTM1NCwgMTkzNjYsIDE5Mzc4LCAxOTM5MCwgMTk0MDIsIDE5NDE0LCAxOTQyNiwgMTk0MzgsIDE5NDQ5LCAKLSAgICAxOTQ2MSwgMTk0NzMsIDE5NDg1LCAxOTQ5NywgMTk1MDksIDE5NTIxLCAxOTUzMywgMTk1NDUsIDE5NTU3LCAxOTU2OSwgCi0gICAgMTk1ODAsIDE5NTkyLCAxOTYwNCwgMTk2MTYsIDE5NjI4LCAxOTY0MCwgMTk2NTIsIDE5NjY0LCAxOTY3NiwgMTk2ODgsIAotICAgIDE5NzAwLCAxOTcxMSwgMTk3MjMsIDE5NzM1LCAxOTc0NywgMTk3NTksIDE5NzcxLCAxOTc4MywgMTk3OTUsIDE5ODA3LCAKLSAgICAxOTgxOSwgMTk4MzEsIDE5ODQyLCAxOTg1NCwgMTk4NjYsIDE5ODc4LCAxOTg5MCwgMTk5MDIsIDE5OTE0LCAxOTkyNiwgCi0gICAgMTk5MzgsIDE5OTUwLCAxOTk2MiwgMTk5NzMsIDE5OTg1LCAxOTk5NywgMjAwMDksIDIwMDIxLCAyMDAzMywgMjAwNDUsIAotICAgIDIwMDU3LCAyMDA2OSwgMjAwODEsIDIwMDkzLCAyMDEwNCwgMjAxMTYsIDIwMTI4LCAyMDE0MCwgMjAxNTIsIDIwMTY1LCAKLSAgICAyMDE3OCwgMjAxOTEsIDIwMjA0LCAyMDIxNywgMjAyMzAsIDIwMjQzLCAyMDI1NSwgMjAyNjgsIDIwMjgxLCAyMDI5NCwgCi0gICAgMjAzMDcsIDIwMzIwLCAyMDMzMywgMjAzNDYsIDIwMzU5LCAyMDM3MiwgMjAzODUsIDIwMzk3LCAyMDQxMCwgMjA0MjMsIAotICAgIDIwNDM2LCAyMDQ0OSwgMjA0NjIsIDIwNDc1LCAyMDQ4OCwgMjA1MDEsIDIwNTE0LCAyMDUyNywgMjA1MzksIDIwNTUyLCAKLSAgICAyMDU2NSwgMjA1NzgsIDIwNTkxLCAyMDYwNCwgMjA2MTcsIDIwNjMwLCAyMDY0MywgMjA2NTYsIDIwNjY5LCAyMDY4MSwgCi0gICAgMjA2OTQsIDIwNzA3LCAyMDcyMCwgMjA3MzMsIDIwNzQ2LCAyMDc1OSwgMjA3NzIsIDIwNzg1LCAyMDc5OCwgMjA4MTEsIAotICAgIDIwODIzLCAyMDgzNiwgMjA4NDksIDIwODYyLCAyMDg3NSwgMjA4ODgsIDIwOTAxLCAyMDkxNCwgMjA5MjcsIDIwOTQwLCAKLSAgICAyMDk1MywgMjA5NjUsIDIwOTc2LCAyMDk4OSwgMjEwMDIsIDIxMDE1LCAyMTAyOCwgMjEwNDEsIDIxMDU0LCAyMTA2NywgCi0gICAgMjEwODAsIDIxMDkzLCAyMTEwNiwgMjExMTgsIDIxMTMxLCAyMTE0NCwgMjExNTcsIDIxMTcwLCAyMTE4MywgMjExOTYsIAotICAgIDIxMjA5LCAyMTIyMiwgMjEyMzUsIDIxMjQ4LCAyMTI2MCwgMjEyNzMsIDIxMjg2LCAyMTI5OSwgMjEzMTIsIDIxMzI1LCAKLSAgICAyMTMzOCwgMjEzNTEsIDIxMzY0LCAyMTM3NywgMjEzOTAsIDIxNDAyLCAyMTQxNSwgMjE0MjgsIDIxNDQxLCAyMTQ1NCwgCi0gICAgMjE0NjcsIDIxNDgwLCAyMTQ5MywgMjE1MDYsIDIxNTE5LCAyMTUzMiwgMjE1NDQsIDIxNTU3LCAyMTU3MCwgMjE1ODMsIAotICAgIDIxNTk2LCAyMTYwOSwgMjE2MjIsIDIxNjM1LCAyMTY0OCwgMjE2NjEsIDIxNjc0LCAyMTY4NiwgMjE2OTksIDIxNzEyLCAKLSAgICAyMTcyNSwgMjE3MzgsIDIxNzUxLCAyMTc2NCwgMjE3NzcsIDIxNzkwLCAyMTgwMywgMjE4MTYsIDIxODI4LCAyMTg0MSwgCi0gICAgMjE4NTQsIDIxODY3LCAyMTg4MCwgMjE4OTMsIDIxOTA2LCAyMTkxOSwgMjE5MzIsIDIxOTQ1LCAyMTk1OCwgMjE5NzAsIAotICAgIDIxOTgzLCAyMTk5NiwgMjIwMDksIDIyMDIyLCAyMjAzNSwgMjIwNDgsIDIyMDYxLCAyMjA3NCwgMjIwODcsIDIyMTAwLCAKLSAgICAyMjExMiwgMjIxMjUsIDIyMTM4LCAyMjE1MSwgMjIxNjQsIDIyMTc3LCAyMjE5MCwgMjIyMDMsIDIyMjE2LCAyMjIyOSwgCi0gICAgMjIyNDIsIDIyMjU0LCAyMjI2NywgMjIyODAsIDIyMjkzLCAyMjMwNiwgMjIzMTksIDIyMzMyLCAyMjM0NSwgMjIzNTgsIAotICAgIDIyMzcxLCAyMjM4NCwgMjIzOTYsIDIyNDA3LCAyMjQxNiwgMjI0MjQsIDIyNDMyLCAyMjQzOSwgMjI0NDUsIDIyNDQ5LCAKLSAgICAyMjQ1NSwgMjI0NjEsIDIyNDY5LCAyMjQ3NCwgMjI0ODAsIDIyNDg1LCAyMjQ4OSwgMjI0OTgsIDk2NTQsIDIyNTA5LCAKLSAgICAyMjUxNiwgMjI1MjQsIDIyNTMxLCAyMjUzOCwgMTE5MzYsIDIyNTQ1LCAyMjU1MiwgMjI1NjEsIDIyNTY2LCAyMjU3MSwgCi0gICAgODE0NSwgMjI1NzgsIDIyNTgzLCAyMjU4NiwgMjI1OTEsIDIyNTk5LCAyMjYwNiwgMjI2MTMsIDIyNjIwLCAyMjYyNiwgCi0gICAgMjI2MzUsIDIyNjQ0LCAyMjY1MywgMjI2NTksIDIyNjY4LCAyMjY3MiwgMjI2NzgsIDIyNjgzLCAyMjY5MywgMjI3MDAsIAotICAgIDIyNzA2LCAyMjcxNCwgMjI3MjAsIDIyNzI3LCAyMjczNywgMjI3NDYsIDIyNzUwLCAyMjc1NywgMjI3NjEsIDIyNzY2LCAKLSAgICAyMjc3MiwgMjI3ODAsIDIyNzg0LCAyMjc5NCwgMTU3MTQsIDIyODAzLCAyMjgwOSwgMjI4MTMsIDIyODIyLCAyMjgzMiwgCi0gICAgMTU3MTksIDIyODM4LCAyMjg0NSwgMjI4NTYsIDIyODY0LCAyMjg3NCwgMjI4ODMsIDIyODkxLCA5NDEwLCAyMjg5OSwgCi0gICAgMjI5MDQsIDIyOTEwLCAyMjkxNSwgMjI5MTksIDIyOTIzLCAyMjkyNywgMTAzNzksIDIyOTMyLCAyMjk0MCwgMjI5NDcsIAotICAgIDIyOTU2LCAyMjk2MywgMjI5NzAsIDIyOTc2LCAxMTg1NiwgMjI5ODMsIDIyOTg5LCAyMjk5MywgMjI5OTksIDIzMDA2LCAKLSAgICAyMzAxMiwgMjMwMjAsIDIzMDI2LCAyMzAzMywgMjMwMzksIDIzMDQ1LCAyMzA1NCwgMjMwNTgsIDIzMDY2LCAyMzA3NSwgCi0gICAgMjMwODIsIDIzMDg3LCAyMzA5MSwgMjMxMDIsIDIzMTA3LCAyMzExMiwgMjMxMTcsIDIzMTMwLCA4MzQ5LCAyMzEzNCwgCi0gICAgMjMxNDAsIDIzMTQ1LCAyMzE1MywgMjMxNTcsIDIzMTY0LCAyMzE3MywgMjMxNzgsIDE1OTkwLCAyMzE4NiwgMjMxOTAsIAotICAgIDIzMjAyLCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIyMCwgMjMyMjYsIDIzMjMyLCAyMzIzNywgMjMyNDEsIDIzMjQ0LCAKLSAgICAyMzI1NSwgMjMyNjAsIDk5MjYsIDIzMjY3LCAyMzI3MiwgMTI0MywgOTkzMSwgMjMyNzcsIDIzMjgyLCAyMzI4NywgMjMyOTIsIAotICAgIDIzMjk3LCAyMzMwMiwgMjMzMDcsIDIzMzEyLCAyMzMxNywgMjMzMjIsIDIzMzI3LCAyMzMzMiwgMjMzMzgsIDIzMzQzLCAKLSAgICAyMzM0OCwgMjMzNTMsIDIzMzU4LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM3OCwgMjMzODMsIDIzMzg5LCAyMzM5NSwgCi0gICAgMjM0MDAsIDIzNDA1LCAyMzQxMCwgMjM0MTUsIDIzNDIwLCAyMzQyNSwgMjM0MzAsIDIzNDM1LCAyMzQ0MCwgMjM0NDYsIAotICAgIDIzNDUxLCAyMzQ1NiwgMjM0NjEsIDIzNDY3LCAyMzQ3MywgMjM0NzgsIDIzNDgzLCAyMzQ4OCwgMjM0OTMsIDIzNDk4LCAKLSAgICAyMzUwMywgMjM1MDgsIDIzNTEzLCAyMzUxOSwgMjM1MjQsIDIzNTI5LCAyMzUzNCwgMjM1MzksIDIzNTQ1LCAyMzU1MCwgCi0gICAgMjM1NTUsIDIzNTU5LCAxMzQsIDIzNTY3LCAyMzU3MSwgMjM1NzUsIDIzNTc5LCAyMzU4NCwgMjM1ODgsIDE0MjgxLCAyMzQ2LCAKLSAgICAyMzU5MiwgMjM1OTcsIDIzNjAxLCAyMzYwNiwgMjM2MTAsIDIzNjE1LCAyMzYxOSwgMjM2MjUsIDIzNjMwLCAyMzYzNCwgCi0gICAgMjM2MzgsIDIzNjQ2LCAyMzY1MCwgMjM2NTQsIDIzNjU5LCAyMzY2NCwgMjM2NjgsIDIzNjc0LCAyMzY3OSwgMjM2ODMsIAotICAgIDIzNjg4LCAyMzY5MywgMjM2OTcsIDIzNzA0LCAyMzcxMSwgMjM3MTgsIDIzNzIyLCAyMzcyNiwgMjM3MzEsIDIzNzM1LCAKLSAgICAyMzczOCwgMjM3NDQsIDIzNzU3LCAyMzc2MiwgMjM3NjgsIDIzNzc3LCAyMzc4MiwgMTAxNTEsIDIzNzg3LCAyMzc5NiwgCi0gICAgMjM4MDEsIDIzODA0LCAyNzUxLCAyNzU2LCAyMzgwOCwgMjM4MTQsIDIzODIwLCA3NTM4LCAyMzgyNSwgMjM4MzAsIDIzODM1LCAKLSAgICAyMzg0MSwgMjM4NDYsIDE1MTM0LCAyMzg1MSwgMjM4NTYsIDIzODYxLCAyMzg2NiwgMjM4NzIsIDIzODc3LCAyMzg4MiwgCi0gICAgMjM4ODgsIDIzODkzLCAyMzg5NywgMjM5MDIsIDIzOTA3LCAyMzkxMiwgMjM5MTcsIDIzOTIyLCAyMzkyNiwgMjM5MzEsIAotICAgIDIzOTM1LCAyMzk0MCwgMjM5NDUsIDIzOTUwLCAyMzk1NSwgMjM5NTksIDIzOTY0LCAyMzk2OCwgMjM5NzMsIDIzOTc4LCAKLSAgICAyMzk4MywgMjM4OTgsIDI5NDUsIDIzOTAzLCAyMzk4OCwgMjM5OTYsIDI0MDAzLCAxMDQ3MywgMjQwMTUsIDI0MDIzLCAKLSAgICAyNDAzMywgMjQwNTEsIDI0MDcwLCAyNDA3OSwgMjQwODcsIDIzOTA4LCAyNDA5NCwgMjQwOTksIDI0MTA3LCAyMzkxMywgCi0gICAgMjQxMTIsIDI0MTE3LCAyNDEyNSwgMjQxMzAsIDIzOTE4LCAyNDEzNSwgMjQxNDMsIDI0MTQ4LCAyNDE1MiwgMjQxNTksIAotICAgIDI0MTY1LCAyNDE3NCwgMjQxODIsIDI0MTg2LCAyNDE4OSwgMjQxOTYsIDI0MjAwLCAyNDIwNCwgMjQyMDksIDI0MjE1LCAKLSAgICAyNDIyMiwgMjQyMjcsIDk0MzcsIDE3NDIsIDE3NDcsIDI0MjMxLCAyNDIzNywgMjQyNDMsIDI0MjQ4LCAyNDI1MiwgMjQyNTYsIAotICAgIDI0MjYwLCAyNDI2NCwgMjQyNjgsIDI0MjcyLCAyNDI3NiwgMjQyODAsIDI0MjgzLCAyNDI4OSwgMjQyOTYsIDI0MzA0LCAKLSAgICAyNDMxMCwgMjQzMTYsIDI0MzIxLCAyNDMyNiwgMjQzMzIsIDI0MzM2LCAyNDM0MSwgMTUwNDAsIDE1MDQ3LCAyNDM0OCwgCi0gICAgMjQzNjAsIDI0MzYzLCAyNDM3MCwgMjQzNzQsIDE3ODgxLCAyNDM4MSwgMjQzODksIDI0NDAwLCAyNDQwOSwgMjQ0MjIsIAotICAgIDI0NDMyLCAyNDQ0NiwgMjQ0NTgsIDI0NDcyLCAyNDQ4NSwgMjQ0OTcsIDI0NTA3LCAyNDUxOSwgMjQ1MjUsIDI0NTQwLCAKLSAgICAyNDU2NCwgMjQ1ODIsIDI0NjAxLCAyNDYxNCwgMjQ2MjgsIDI0NjQ2LCAyNDY2MiwgMjQ2NzksIDI0Njk3LCAyNDcwOCwgCi0gICAgMjQ3MjcsIDI0NzQ0LCAyNDc2NCwgMjQ3ODIsIDI0Nzk0LCAyNDgwOCwgMjQ4MjIsIDI0ODM0LCAyNDg1MSwgMjQ4NzAsIAotICAgIDI0ODg4LCAyNDkwMCwgMjQ5MTgsIDI0OTM3LCAxNTg1OCwgMjQ5NTAsIDI0OTcwLCAyNDk4MiwgMTE0NDgsIDI0OTk0LCAKLSAgICAyNDk5OSwgMjUwMDQsIDI1MDA5LCAyNTAxNSwgMjUwMjAsIDI1MDI0LCAyNTAzMSwgMjUwMzcsIDI0MzcsIDI1MDQxLCAKLSAgICAyNTA0NywgMjUwNTEsIDI1MDU0LCAyNTA1OCwgMjUwNjEsIDI1MDY5LCAyNTA3NSwgMjM5MzYsIDI1MDc5LCAyNTA4OCwgCi0gICAgMjUwOTksIDI1MTA1LCAyNTExMSwgMjUxMjYsIDI1MTM1LCAyNTE0MywgMjUxNTAsIDI1MTU1LCAyNTE1OSwgMjUxNjYsIAotICAgIDI1MTcyLCAyNTE4MSwgMjUxODksIDI1MTk2LCAyNTIwNiwgMjUyMTUsIDI1MjI1LCAyNTIzMCwgMjUyMzksIDI1MjQ4LCAKLSAgICAyNTI1OSwgMjUyNzAsIDQxOTIsIDI1MjgwLCAyNTI4NCwgMjUyOTQsIDI1MzAyLCAyNTMxMiwgMjUzMjMsIDI1MzI4LCAKLSAgICAyNTMzOCwgMjUzNDYsIDI1MzUzLCAyNTM1OSwgMjUzNjYsIDI1MzcxLCAyMzk0NiwgMjUzNzUsIDI1Mzg0LCAyNTM4OCwgCi0gICAgMjUzOTEsIDI1Mzk2LCAyNTQwNCwgMjU0MTEsIDI1NDIwLCAyNTQyOCwgMjU0MzYsIDI1NDQ0LCAyNTQ1NCwgMjU0NjMsIAotICAgIDI1NDY5LCAyNTQ3NSwgMjU0NzksIDIzOTUxLCAyMzk1NiwgMjU0ODMsIDI1NDkzLCAyNTUwMywgMjU1MTMsIDI1NTIxLCAKLSAgICAyNTUyOCwgMjU1MzgsIDI1NTQ2LCAyNTU1NCwgMjU1NjAsIDI1NTY4LCA4NjUsIDI1NTc3LCAxNjA2NSwgNjE1LCAyNTU5MSwgCi0gICAgMjU2MDAsIDI1NjA4LCAyNTYxOSwgMjU2MzAsIDI1NjQwLCAyNTY0OSwgMjU2NjEsIDI1NjcwLCAyNTY3OSwgMjU2ODYsIAotICAgIDI1NjkyLCAyNTcwMiwgMjU3MTEsIDI1NzIwLCAyNTcyOCwgMjU3MzgsIDI1NzQ2LCAyNTc1NCwgOTg5MiwgMjU3NjAsIAotICAgIDI1NzYzLCAyNTc2NywgMjU3NzIsIDI1Nzc3LCAyNTc4MSwgMTA1ODgsIDIzOTY5LCAyMzk3NCwgMjU3ODksIDI1Nzk1LCAKLSAgICAyNTgwMSwgMjU4MDYsIDI1ODExLCAyNTgxNSwgMjU4MjMsIDI1ODI5LCAyNTgzNSwgMjU4MzksIDM2NzUsIDI1ODQ3LCAKLSAgICAyNTg1MiwgMjU4NTcsIDI1ODYxLCAyNTg2NSwgMTA3MDEsIDI1ODcyLCAyNTg4MCwgMjU4OTQsIDI1OTAxLCAyNTkwNywgCi0gICAgMTA3MTAsIDEwNzE2LCAyNTkxNSwgMjU5MjMsIDI1OTMwLCAyNTkzNSwgMjU5NDAsIDIzOTc5LCAyNTk0NiwgMjU5NTcsIAotICAgIDI1OTYxLCAyNTk2NiwgMjY0MCwgMjU5NzEsIDI1OTgyLCAyNTk4OCwgMjU5OTMsIDI1OTk3LCAyNjAwMSwgMjYwMDQsIAotICAgIDI2MDExLCAyNjAxOCwgMjYwMjQsIDI2MDMxLCAyNjAzNywgMjYwNDEsIDIzOTg0LCAyNjA0NiwgMjYwNTAsIDI2MDU0LCAKLSAgICAxNDMxLCA4NTQ0LCAyNjA1OSwgMjYwNjQsIDI2MDY5LCAyNjA3NCwgMjYwNzksIDI2MDg0LCAyNjA4OSwgMjYwOTQsIAotICAgIDI2MDk5LCAyNjEwNCwgMjYxMDksIDI2MTE0LCAyNjExOSwgMjYxMjQsIDI2MTMwLCAyNjEzNSwgMjYxNDAsIDI2MTQ1LCAKLSAgICAyNjE1MCwgMjYxNTUsIDI2MTYwLCAyNjE2NiwgMjYxNzEsIDI2MTc2LCAyNjE4MSwgMjYxODYsIDI2MTkxLCAyNjE5NiwgCi0gICAgMjYyMDEsIDI2MjA3LCAyNjIxMywgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIDUsIDI2MjQwLCAyNjI0NCwgMjYyNDgsIAotICAgIDI2MjUyLCAyNjI1NywgMjYyNjEsIDI2MjY1LCAyNjI2OSwgMjYyNzMsIDI2Mjc4LCAyNjI4MiwgMjYyODcsIDI2MjkxLCAKLSAgICAyNjI5NCwgMjYyOTgsIDI2MzAzLCAyNjMwNywgMjYzMTIsIDI2MzE2LCAyNjMyMCwgMjYzMjQsIDI2MzI5LCAyNjMzMywgCi0gICAgMjYzMzcsIDI2MzQ3LCAyNjM1MiwgMjYzNTYsIDI2MzYwLCAyNjM2NSwgMjYzNzAsIDI2Mzc5LCAyNjM4NCwgMjYzODksIAotICAgIDI2MzkzLCAyNjM5NywgMjY0MTAsIDI2NDIyLCAyNjQzMSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MSwgMjY0NTYsIDI2NDYwLCAKLSAgICAyNjQ2NCwgMjY0NzQsIDI2NDgzLCAyNjQ5MSwgMjY0OTcsIDI2NTAyLCAyNjUwNiwgMjY1MTMsIDI2NTIzLCAyNjUzMiwgCi0gICAgMjY1NDAsIDExNzcwLCAyNjU0OCwgMjY1NTYsIDI2NTY1LCAyNjU3NCwgMjY1ODIsIDI2NTkyLCAyNjU5NywgMjY2MDEsIAotICAgIDI2NjA1LCAyNjYwOCwgMjY2MTAsIDI2NjE0LCAyNjYxOCwgMjY2MjMsIDI2NjI4LCAyNjYzMiwgMjY2MzYsIDI2NjM5LCAKLSAgICAyNjY0MywgMjY2NDYsIDI2NjUwLCAyNjY1MywgMjY2NTYsIDI2NjYwLCAyNjY2NiwgMjY2NzAsIDI2Njc0LCAyNjY3OCwgCi0gICAgMjY2ODMsIDI2Njg4LCAyNjY5MywgMjY2OTcsIDI2NzAwLCAyNjcwNSwgMjY3MTEsIDI2NzE2LCAyNjcyMiwgMjY3MjcsIAotICAgIDI2NzMxLCAyNjczNywgMjY3NDEsIDI2NzQ1LCAyNjc1MCwgMjY3NTQsIDI2NzU5LCAyNjc2NCwgMjY3NjgsIDI2NzcyLCAKLSAgICAyNjc3OSwgMjY3ODMsIDI2Nzg2LCAyNjc5MCwgMjY3OTQsIDI2ODAwLCAyNjgwNiwgMjY4MTAsIDI2ODE0LCAyNjgxOSwgCi0gICAgMjY4MjYsIDI2ODMyLCAyNjgzNiwgMjY4NDUsIDI2ODQ5LCAyNjg1MywgMjY4NTYsIDI2ODYyLCAyNjg2NywgMjY4NzMsIAotICAgIDE0NzUsIDE4MDYsIDI2ODc4LCAyNjg4MywgMjY4ODgsIDI2ODkzLCAyNjg5OCwgMjY5MDMsIDI2OTA4LCAyMTc0LCAyMjIwLCAKLSAgICAyNjkxMywgMjY5MTYsIDI2OTIwLCAyNjkyNCwgMjY5MjksIDI2OTMzLCAxNjA3NywgMjY5MzcsIDI2OTQyLCAyNjk0NywgCi0gICAgMjY5NTEsIDI2OTU0LCAyNjk1OSwgMjY5NjMsIDI2OTY4LCAyNjk3MiwgMTYwODEsIDI2OTc3LCAyNjk4MCwgMjY5ODMsIAotICAgIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDI0LCAyNzAzMywgMjcwNDAsIDI3MDQ1LCAKLSAgICAyNzA1MSwgMjcwNTcsIDI3MDY1LCAyNzA3MiwgMjcwNzksIDI3MDgzLCAyNzA4NywgMjcwOTEsIDI3MDk2LCAyNzEwMSwgCi0gICAgMjcxMDUsIDI3MTEzLCAyNzExOCwgMjcxMzAsIDI3MTQxLCAyNzE0NiwgMjcxNTAsIDI3MTU3LCAyNzE2MSwgMjcxNjYsIAotICAgIDI3MTcyLCAyNzE3NSwgMjcxODAsIDI3MTg1LCAyNzE4OSwgMjcxOTMsIDI3MTk2LCAyNzIwMiwgODI0OCwgMjM1MCwgCi0gICAgMjcyMDYsIDI3MjExLCAyNzIyNywgMTAxOTgsIDI3MjQ3LCAyNzI1NiwgMjcyNzIsIDI3Mjc2LCAyNzI4MywgMjcyODYsIAotICAgIDI3MjkyLCAyNzMwMiwgMjczMDgsIDI3MzE3LCAyNzMzMiwgMjczNDQsIDI3MzU1LCAyNzM2MywgMjczNzIsIDI3Mzc4LCAKLSAgICAyNzM4NywgMjczOTcsIDI3NDA3LCAyNzQxOCwgMjc0MjksIDI3NDM5LCAyNzQ0OCwgMjc0NTUsIDI3NDY0LCAyNzQ3MiwgCi0gICAgMjc0NzksIDI3NDg3LCAyNzQ5NCwgMjc1MDEsIDI3NTE0LCAyNzUyMSwgMjc1MjksIDI3NTM2LCAyNzU0MiwgMjc1NDcsIAotICAgIDI3NTU2LCAyNzU2MiwgMjc1NjcsIDI3NTc1LCAyNzU4MiwgMjc1ODksIDI1MzA0LCAyNzYwMSwgMjc2MTMsIDI3NjI3LCAKLSAgICAyNzYzNSwgMjc2NDIsIDI3NjU0LCAyNzY2MywgMjc2NzIsIDI3NjgwLCAyNzY4OCwgMjc2OTYsIDI3NzAzLCAyNzcwOSwgCi0gICAgMjc3MTgsIDI3NzI2LCAyNzczNiwgMjc3NDUsIDI3NzU1LCAyNzc2NCwgMjc3NzMsIDI3NzgxLCAyNzc4NiwgMjc3OTAsIAotICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgwOSwgMjc4MTMsIDI3ODE5LCAyNzgyNSwgMjc4MzMsIDE2MTM5LCAKLSAgICAyNzg0MCwgMjc4NDUsIDI3ODUyLCAyNzg1OCwgMjc4NjUsIDE2MTQ3LCAyNzg3MiwgMjc4NzUsIDI3ODg3LCAyNzg5NSwgCi0gICAgMjc5MDEsIDI3OTA2LCAyNzkxMCwgMjc5MjEsIDEwNjUxLCAyNzkzMSwgMjc5MzksIDI3OTQ5LCAyNzk1OCwgMjc5NjUsIAotICAgIDI3OTcyLCAyNzk4MCwgMjc5ODQsIDE2MTU4LCAyNzk4NywgMjc5OTQsIDI3OTk4LCAyODAwNCwgMjgwMDcsIDI4MDE0LCAKLSAgICAyODAyMCwgMjgwMjcsIDI4MDMzLCAyODAzNywgMjgwNDIsIDI4MDQ2LCAyODA1NSwgMjgwNjIsIDI4MDY4LCA4MzA2LCAKLSAgICAyODA3NSwgMjgwODMsIDI4MDkwLCAyODA5NiwgMjgxMDEsIDI4MTA3LCAyODExMywgMjgxMjEsIDI4MTI3LCAyODEzMSwgCi0gICAgMjgxMzQsIDI4MTM2LCAyNzc5OCwgMjgxNDUsIDI4MTUxLCAyODE1NywgMjgxNjcsIDI4MTcyLCAyODE3OSwgMjgxODUsIAotICAgIDI4MTkwLCAyODE5NSwgMjgyMDAsIDI4MjA0LCAyODIwOSwgMjgyMTYsIDI4MjIyLCAyODIzMSwgMjgyMzUsIDI4MjQyLCAKLSAgICAyODI0OCwgMjgyNTcsIDQzNzgsIDI4MjYzLCAyODI2OSwgMjgyNzQsIDI4MjgxLCAyODI5MiwgMjgyOTcsIDI4MzAxLCAKLSAgICAyODMxMSwgMjgzMTcsIDI4MzIxLCAyODMyNiwgMjgzMzYsIDI4MzQ1LCAyODM0OSwgMjgzNTYsIDI4MzY0LCAyODM3MSwgCi0gICAgMjgzNzcsIDI4MzgyLCAyODM5MCwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MjEsIDI4NDMwLCAyODQzNCwgMTQyMTIsIAotICAgIDI4NDQyLCAyODQ1MiwgMjg0NTYsIDI3MDIwLCAyODQ2NywgMjg0NzIsIDI4NDc2LCAyODQ4MywgMjg0OTAsIDIzNjcwLCAKLSAgICAyNzcyMywgMjg0OTUsIDI4NDk5LCAyODUwMiwgMjQ3MTQsIDI4NTA3LCAyODUyMSwgMjg1MzcsIDI4NTU1LCAyODU3NCwgCi0gICAgMjg1OTEsIDI4NjA5LCAyNDczMywgMjg2MjYsIDI4NjQ2LCAyNDc1MCwgMjg2NTgsIDI4NjcwLCAxNzE3OCwgMjg2ODIsIAotICAgIDI0NzcwLCAyODY5NiwgMjg3MDgsIDExNDYxLCAyODcyMiwgMjg3MjcsIDI4NzMyLCAyODczNywgMjg3NDMsIDI4NzQ5LCAKLSAgICAyODc1NSwgMjg3NTksIDI4NzY3LCAyODc3NCwgMjg3NzksIDI4Nzg5LCAyODc5NSwgMTEwNTksIDI4ODAxLCAyODgwMywgCi0gICAgMjg4MDgsIDI4ODE2LCAyODgyMCwgMjgyMTIsIDI4ODI2LCAyODgzMywgMTI2MDEsIDEyNjExLCAyODg0MCwgMjg4NTAsIAotICAgIDI4ODU1LCAyODg1OSwgMjg4NjIsIDI4ODY4LCAyODg3NiwgMjg4ODgsIDI4ODk4LCAyODkxNCwgMjg5MjcsIDI4OTQxLCAKLSAgICAxNzE5NiwgMjg5NTUsIDI4OTYyLCAyODk2NiwgMjg5NjksIDI4OTc0LCAyODk3OCwgMjg5ODUsIDI4OTkyLCAyODk5OSwgCi0gICAgMjkwMDksIDI5MDE0LCAyOTAxOSwgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDUsIDI5MDU0LCAyOTA1OSwgMzM1MywgCi0gICAgMjkwNjMsIDI5MDY2LCAyOTA2OSwgMjkwNzQsIDI5MDgxLCAyOTA4NiwgMjkxMDIsIDI5MTEwLCAyOTExOCwgOTk2NiwgCi0gICAgMjkxMjYsIDI5MTMxLCAyOTEzNSwgMjkxNDEsIDI5MTQ2LCAyOTE1MiwgMjkxNTUsIDI5MTYxLCAyOTE3MywgMjkxODEsIAotICAgIDI5MTg4LCAyOTE5NCwgMjkyMDEsIDI5MjEyLCAyOTIyNiwgMjkyMzksIDI5MjQ1LCAyOTI1NCwgMjkyNjAsIDI5MjY5LCAKLSAgICAyOTI4MSwgMjkyOTIsIDI5MzAyLCAyOTMxMSwgMjkzMjAsIDI5MzI4LCAyOTMzOSwgODI4OCwgMjkzNDYsIDI5MzUzLCAKLSAgICAyOTM1OSwgMjkzNjQsIDI5MzcwLCAyOTM3NywgMjkzODcsIDI5Mzk3LCAyOTQwNiwgMjk0MTIsIDI5NDE5LCAyOTQyNCwgCi0gICAgMjk0MzIsIDI5NDM5LCAyOTQ0NywgMjk0NTUsIDI5NDY3LCA2NTYzLCA5OTUsIDI5NDc0LCAyOTQ4MywgMjk0OTEsIDI5NDk3LCAKLSAgICAyOTUwMywgMjk1MDgsIDI5NTEyLCAyOTUxNSwgMjk1MjEsIDI5NTI4LCAyOTUzMywgMjk1MzgsIDI5NTQzLCAyOTU0NywgCi0gICAgMjk1NTksIDI5NTcwLCAyOTU3OSwgMjk1ODcsIDE2MzIzLCAyOTU5MiwgMjk1OTcsIDI5NjAzLCAyOTYwOSwgMTI1OTQsIAotICAgIDkwNTgsIDI5NjE0LCAyOTYxOCwgMjk2MjIsIDI5NjI1LCAyOTYyOCwgMjk2MzQsIDI5NjQyLCAyOTY1MCwgMjk2NTQsIAotICAgIDI5NjU4LCAyOTY2MywgMjk2NjYsIDI5Njc1LCAyOTY3OSwgMjk2ODIsIDI5NjkwLCAyOTcwMSwgMjk3MDUsIDI5NzExLCAKLSAgICAyOTcxNywgMjk3MjEsIDI5NzI3LCAyOTczNSwgMjk3NTcsIDI5NzgxLCAyOTc5MCwgMjk3OTcsIDI5ODA0LCAyOTgxMCwgCi0gICAgMjk4MTgsIDI5ODI0LCAyOTgyOSwgMjk4NDAsIDI5ODU4LCAyOTg2NSwgMjk4NzMsIDI5ODc3LCAyOTg4MiwgMjk4OTEsIAotICAgIDI5OTA0LCAyOTkxMiwgMjk5MjQsIDI5OTM1LCAyOTk0NiwgMjk5NTYsIDI5OTcwLCAyOTk3OSwgMjk5ODcsIDI5OTk5LCAKLSAgICAxMDIxNSwgMzAwMTAsIDMwMDIxLCAzMDAzMywgMzAwNDMsIDMwMDUyLCAzMDA1NywgMzAwNjEsIDMwMDY5LCAzMDA4MCwgCi0gICAgMzAwOTAsIDMwMDk1LCAzMDA5OSwgMzAxMDIsIDMwMTA1LCAzMDExMywgMzAxMjEsIDMwMTMwLCAzMDE0MCwgMzAxNDksIAotICAgIDMwMTU1LCAzMDE2OSwgMjcwMiwgMzAxOTEsIDMwMjAyLCAzMDIxMSwgMzAyMjEsIDMwMjMzLCAzMDI0MiwgMzAyNTEsIAotICAgIDMwMjYxLCAzMDI2OSwgMzAyNzcsIDMwMjg2LCAzMDI5MSwgMzAzMDIsIDMwMzA3LCAzMDMxOCwgMzAzMjIsIDMwMzMyLCAKLSAgICAzMDM0MSwgMzAzNDksIDMwMzU5LCAzMDM2OSwgMzAzNzcsIDMwMzg2LCAzMDM5MywgMzA0MDEsIDMwNDA4LCAzMDQxNywgCi0gICAgMzA0MjYsIDMwNDMwLCAzMDQzOCwgMzA0NDUsIDMwNDUzLCAzMDQ2MCwgMzA0NzEsIDMwNDg2LCAzMDQ5MywgMzA0OTksIAotICAgIDMwNTA5LCAzMDUxOCwgMzA1MjQsIDMwNTM1LCAzMDUzOSwgMzA1NDYsIDMwNTUwLCAzMDU1NiwgMTUyNjUsIDMwNTYyLCAKLSAgICAzMDU2NiwgMzA1NzEsIDMwNTc3LCAzMDU4NCwgMzA1ODgsIDMwNTkyLCAzMDYwMCwgMzA2MDgsIDMwNjE0LCAzMDYyMywgCi0gICAgMzA2MzAsIDMwNjM1LCAzMDY0MCwgMzA2NTAsIDI1MzczLCAzMDY1NCwgMzA2NTcsIDMwNjYyLCAzMDY2NywgMzA2NzIsIAotICAgIDMwNjc3LCAzMDY4MiwgMzA2ODcsIDMwNjkyLCAzMDY5NywgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTksIDExOTksIDY2MCwgCi0gICAgMzA3MjQsIDMwNzMzLCAyMzk4LCAzMDc0MCwgMzA3NDUsIDMwNzQ5LCAzMDc1NSwgMTI0OCwgNTc4LCAyOTAsIDMwNzYwLCAKLSAgICAzMDc2OSwgMzA3NzcsIDMwNzg2LCAzMDc5NCwgMzA4MDUsIDMwODEzLCAzMDgyMiwgMzA4MzAsIDMwODM1LCAxMDc5NywgCi0gICAgMzA4MzksIDMwODQ3LCAzMDg1NSwgMzA4NjAsIDE2MDk0LCAzODI0LCAzMDg2NiwgMzA4NzIsIDMwODc4LCA2MTQ4LCAKLSAgICAzMDg4MywgMzA4ODcsIDMwODkzLCAzMDg5NywgMzA5MDMsIDMwOTA4LCAzMDkxNSwgMTQ0MSwgMzA5MjEsIDMwOTI4LCAKLSAgICAxMzQ4LCA2MTU2LCAzMDkzMiwgMzA5NDIsIDMwOTUwLCAzMDk1NiwgMzA5NjYsIDMwOTc1LCAzMDk4MywgMzA5ODksIAotICAgIDMwOTk3LCAzMTAwNCwgMTIxMzYsIDMxMDEwLCAzMTAxNywgMzEwMjIsIDMxMDI5LCAxNDk0LCAyMTksIDIxNzMsIDMxMDM1LCAKLSAgICAzMTA0MSwgMzEwNDgsIDMxMDU5LCAzMTA3MCwgMzEwNzgsIDMxMDg1LCAzMTA5NSwgMzExMDQsIDMxMTEyLCAzMTEyMSwgCi0gICAgMzExMjgsIDMxMTM1LCAzMTE0OCwgMzExNTUsIDMxMTYxLCAzMTE3MiwgMzExOTEsIDEyNTMsIDMxMTk2LCAzMTIwMSwgCi0gICAgMzEyMDksIDM3NDIsIDMxMjEzLCAzMTIxOCwgMzEyMjIsIDMxMjI2LCAxNDQ1LCAyNjYzNywgMzEyMzYsIDMxMjQwLCAKLSAgICAzMTI0NSwgMzEyNDksIDM2MTksIDMxMjU1LCAzMTI2MywgMzEyNzAsIDMxMjgxLCAzMTI4OSwgMzEyOTcsIDM3NDMsIDM0NiwgCi0gICAgMzEzMDIsIDMxMzEwLCAzMTMxOCwgMzEzMjUsIDMxMzMxLCAzMTMzNiwgMjI0MiwgMTE2MjgsIDMxMzQzLCAzMTM0OSwgCi0gICAgMjgwMzgsIDI4Mjg3LCAzMTM1NSwgNTc0LCAxMDYsIDMxMzU5LCAzMTM2MywgMzEzNjksIDY2MywgOTg0MSwgMzEzNzQsIAotICAgIDMxMzgxLCAzMTM4NywgMzEzOTEsIDE2MzksIDMxMzk0LCAzMTM5OCwgMTY1NzYsIDMxNDAxLCAzMTQwNiwgMzE0MTMsIAotICAgIDMxNDE5LCAzMTQyNCwgMzE0MzIsIDMxNDM5LCAzMTQ0NSwgMjQxMzIsIDMxNDQ5LCAzMTQ1MywgMzE0NTcsIDM4MTMsIAotICAgIDE4MTgwLCAzMTQ2MSwgMzE0NjYsIDMxNDcwLCAzMTQ3MywgMzE0ODEsIDMxNDg5LCAzMTQ5NCwgMzE1MDIsIDMxNTA1LCAKLSAgICAzMTUxMiwgMzE1MjIsIDMxNTM0LCAzMTUzOSwgMzE1NDMsIDMxNTUxLCAzMTU1OCwgMzE1NjQsIDMxNTcxLCAzMTU3OCwgCi0gICAgMzE1ODEsIDMxNTg1LCAzMTU4OSwgMTQ0OSwgMzE1OTksIDMxNjAxLCAzMTYwNiwgMzE2MTIsIDMxNjE4LCAzMTYyMywgCi0gICAgMzE2MjgsIDMxNjMzLCAzMTYzOCwgMzE2NDMsIDMxNjQ4LCAzMTY1MywgMzE2NTgsIDMxNjYzLCAzMTY2OCwgMzE2NzMsIAotICAgIDMxNjc4LCAzMTY4MywgMzE2ODgsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEyLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKLSAgICAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0OCwgMzE3NTQsIDMxNzU5LCAzMTc2NSwgMzE3NzAsIDMxNzc1LCAzMTc4MCwgCi0gICAgMzE3ODUsIDMxNzkxLCAzMTc5NiwgMzE4MDIsIDMxODA3LCAzMTgxMiwgMzE4MTcsIDMxODIyLCAzMTgyOCwgMzE4MzMsIAotICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODU0LCAzMTg1OSwgMzE4NjQsIDMxODY5LCAzMTg3NCwgMzE4NzksIDMxODg0LCAKLSAgICAzMTg5MCwgMzE4OTYsIDMxOTAyLCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjgsIDMxOTM0LCAzMTk0MCwgCi0gICAgMzE5NDYsIDMxOTUyLCAzMTk1OCwgMzE5NjMsIDMxOTY5LCAzMTk3NCwgMzE5NzksIDMxOTg0LCAzMTk4OSwgMzE5OTUsIAotICAgIDI0ODIsIDMyMDAwLCAyNDg5LCAyNDk2LCAyNzkzLCAzMjAwNSwgMjUwMiwgMjUxMiwgMzIwMTEsIDMyMDE1LCAzMjAyMCwgCi0gICAgMzIwMjUsIDMyMDMxLCAzMjAzNiwgMzIwNDEsIDMyMDQ1LCAzMjA1MCwgMzIwNTYsIDMyMDYxLCAzMjA2NiwgMzIwNzEsIAotICAgIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDkwLCAzMjA5NSwgMzIxMDAsIDMyMTA1LCAzMjExMCwgMzIxMTUsIDMyMTIxLCAKLSAgICAzMjEyNywgMzIxMzIsIDMyMTM2LCAzMjE0MSwgMzIxNDcsIDMyMTUxLCAzMjE1NiwgMzIxNjEsIDMyMTY2LCAzMjE3MSwgCi0gICAgMzIxNzUsIDMyMTc4LCAzMjE4MywgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA5LCAzMjIxNSwgMzIyMjAsIAotICAgIDMyMjI1LCAzMjIzMCwgMzIyMzQsIDMyMjM5LCAzMjI0NCwgMzIyNDksIDMyMjU0LCAzMjI1OSwgMzIyNjQsIDMyMjY4LCAKLSAgICAzMjI3MywgMzIyNzgsIDMyMjgzLCAzMjI4NywgMzIyOTEsIDMyMjk1LCAzMjMwMCwgMzIzMDgsIDMyMzEzLCAzMjMxOCwgCi0gICAgMzIzMjQsIDMyMzMwLCAzMjMzNiwgMzIzNDEsIDMyMzQ1LCAzMjM0OCwgMzIzNTMsIDMyMzU4LCAzMjM2MiwgMzIzNjcsIAotICAgIDMyMzcyLCAzMjM3NiwgMzIzODEsIDMyMzg1LCAzMjM4OCwgMzIzOTMsIDM5MTQsIDE4OTA2LCAzMjM5OCwgMzI0MDMsIAotICAgIDMyNDA4LCAzMjQxNiwgMjI5NTksIDMwOTI1LCA5NTE4LCAzMjQyMSwgMzI0MjYsIDMyNDMwLCAzMjQzNSwgMzI0MzksIAotICAgIDMyNDQzLCAzMjQ0OCwgMzI0NTIsIDMyNDU1LCAzMjQ1OCwgMzI0NjIsIDMyNDY3LCAzMjQ3MSwgMzI0NzksIDMyNDgzLCAKLSAgICAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OSwgMzI1MDQsIDMyNTA5LCAzMjUxMywgMzI1MTksIDMyNTI0LCAzMjUyOSwgCi0gICAgMzI1MzYsIDMyNTQzLCAzMjU0NywgMzI1NTAsIDMyNTU2LCAzMjU2NSwgMzI1NzIsIDMyNTgwLCAzMjU4NywgMzI1OTEsIAotICAgIDMyNTk2LCAzMjYwMCwgMzI2MDQsIDMyNjEwLCAzMjYxNiwgMzI2MjAsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAKLSAgICAzMjY0NywgMzI2NTMsIDMyNjU5LCAzMjY2NSwgMzI2NzEsIDMyNjc4LCAzMjY4NCwgMzI2OTAsIDMyNjk2LCAzMjcwMiwgCi0gICAgMzI3MDgsIDMyNzE0LCAzMjcyMCwgMzI3MjcsIDMyNzMzLCAzMjc0MCwgMzI3NDYsIDMyNzUyLCAzMjc1OCwgMzI3NjQsIAotICAgIDMyNzcwLCAzMjc3NiwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMTI0NzksIDMyODAwLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAKLSAgICAzMjgyMSwgMzI4MjQsIDMyODMwLCAzMjgzOCwgMzI4NDMsIDMyODQ3LCAzMjg1MiwgMzI4NTgsIDMyODY3LCAzMjg3MywgCi0gICAgMzI4NzgsIDMyODgzLCAzMjg4OCwgMzI4OTIsIDMyODk3LCAzMjkwMiwgMzI5MDcsIDMyOTEyLCAzMjkxNywgMzI5MjQsIAotICAgIDMyOTMxLCAzMjkzNywgMzI5NDMsIDMyOTQ4LCAxNzgyMiwgMzI5NTUsIDMyOTYxLCAzMjk2OCwgMzI5NzQsIDMyOTgwLCAKLSAgICAzMjk4NSwgMzI5OTMsIDMyOTk4LCAxMDM3MiwgMzMwMDIsIDMzMDA3LCAzMzAxMiwgMzMwMTgsIDMzMDIzLCAzMzAyOCwgCi0gICAgMzMwMzIsIDMzMDM3LCAzMzA0MiwgMzMwNDgsIDMzMDUzLCAzMzA1OCwgMzMwNjMsIDMzMDY3LCAzMzA3MiwgMzMwNzcsIAotICAgIDMzMDgxLCAzMzA4NiwgMzMwOTEsIDMzMDk1LCAzMzEwMCwgMzMxMDQsIDMzMTA5LCAzMzExNCwgMzMxMTksIDMzMTIzLCAKLSAgICAzMzEyOCwgMzMxMzIsIDMzMTM2LCAxNjY4MiwgMzMxNDEsIDMzMTUwLCAzMzE1NiwgMzMxNjIsIDMzMTcxLCAzMzE3OSwgCi0gICAgMzMxODgsIDMzMTk2LCAzMzIwMSwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjYsIDMzMjMwLCAzMzIzMywgMzMyMzgsIAotICAgIDMzMjQyLCAzMzI1MSwgMzMyNTksIDMzMjc3LCAzMzI4MywgMTQ5MywgMzMyODksIDMzMjkyLCAzMzI5NiwgMjQyMzgsIAotICAgIDI0MjQ0LCAzMzMwMiwgMzMzMDYsIDMzMzE3LCAzMzMyOCwgMzMzMzksIDMzMzUxLCAzMzM1NSwgMzMzNjIsIDMzMzY5LCAKLSAgICAzMzM3NCwgMzMzNzgsIDYyMDQsIDkyOCwgMjI5NTgsIDMzMzg2LCAzMzM5MSwgMzMzOTUsIDMzNDAwLCAzMzQwNCwgMzM0MTAsIAotICAgIDMzNDE1LCAzMzQyMSwgMzM0MjYsIDMzNDMyLCAzMzQzNywgMzM0NDMsIDMzNDQ4LCAzMzQ1NCwgMzM0NjAsIDMzNDY2LCAKLSAgICAzMzQ3MSwgMzM0MjcsIDMzNDMzLCAzMzQ3NSwgMzM0ODAsIDMzNDg2LCAzMzQ5MSwgMzM0OTcsIDMzNTAyLCAzMzUwOCwgCi0gICAgMzM1MTMsIDMzNDM4LCAxMTMxNCwgMzM1MTcsIDMzNDQ5LCAzMzQ1NSwgMzM0NjEsIDI4ODUsIDM1MzMsIDMzNTIzLCAKLSAgICAzMzUyNiwgMzM1MzEsIDMzNTM3LCAzMzU0MywgMzM1NDksIDMzNTU2LCAzMzU2MiwgMzM1NjgsIDMzNTc0LCAzMzU4MCwgCi0gICAgMzM1ODYsIDMzNTkyLCAzMzU5OCwgMzM2MDQsIDMzNjEwLCAzMzYxNiwgMzM2MjIsIDMzNjI4LCAzMzYzNSwgMzM2NDEsIAotICAgIDMzNjQ3LCAzMzY1MywgMzM2NTksIDMzNjY1LCAzMzY2OCwgMzM2NzMsIDMzNjc2LCAzMzY4MywgMzM2ODgsIDMzNjk2LCAKLSAgICAzMzcwMSwgMzM3MDYsIDMzNzEyLCAzMzcxNywgMzM3MjIsIDMzNzI2LCAzMzczMSwgMzM3MzcsIDMzNzQyLCAzMzc0OCwgCi0gICAgMzM3NTMsIDMzNzU5LCAzMzc2NCwgMzM3NzAsIDMzNzc2LCAzMzc4MCwgMzM3ODUsIDMzNzkwLCAzMzc5NSwgMzM4MDAsIAotICAgIDMzODA0LCAzMzgwOSwgMzM4MTQsIDMzODE5LCAzMzgyNSwgMzM4MzEsIDMzODM3LCAzMzg0MywgMzM4NDgsIDMzODUyLCAKLSAgICAzMzg1NSwgMzM4NjEsIDMzODY3LCAzMzg3NiwgMzM4ODQsIDMzODkxLCAzMzg5NiwgMzM5MDAsIDMzOTA0LCAzMzkwOSwgCi0gICAgMTY1MzAsIDMzOTE0LCAzMzkyMiwgMzM5MjgsIDM4NjYsIDEzNTgsIDMzOTMzLCAzMzkzNywgODM1OSwgMzM5NDMsIDMzOTQ5LCAKLSAgICAzMzk1NiwgODM2OCwgMzM5NjAsIDMzOTY2LCAzMzk3MywgMzM5NzksIDMzOTg4LCAzMzk5NiwgOTI0NCwgMzQwMDgsIAotICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNCwgMzQwMzgsIDM0MDQxLCAzNDA1MSwgMzQwNjAsIDM0MDY4LCAKLSAgICAzMzQyOCwgMzQwNzMsIDM0MDgzLCAzNDA5MywgMzQxMDMsIDM0MTA5LCAzNDExNCwgMzQxMjQsIDM0MTI5LCAzNDE0MiwgCi0gICAgMzQxNTYsIDM0MTY3LCAzNDE3OSwgMzQxOTEsIDM0MjA1LCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAxNTg5OSwgMzQyNTYsIAotICAgIDM0MjYxLCAzNDI2NiwgMzQyNzAsIDM0Mjc0LCAzNDI3OCwgMTc5NSwgMjkyOTAsIDM0MjgyLCAzNDI4NywgMzM0NzYsIAotICAgIDM0MjkyLCAzNDI5NSwgMzQzMDAsIDM0MzA1LCAzNDMxMCwgMzQzMTYsIDM0MzIyLCAxMDk3NCwgMzQzMjcsIDM0MzMzLCAKLSAgICAzNDM0MCwgMTcxMzAsIDM0MzQ2LCAzNDM1MSwgMzQzNTYsIDM0MzYwLCAzNDM2NSwgMzQzNzAsIDMzNDgxLCAzNDM3NSwgCi0gICAgMzQzODAsIDM0Mzg1LCAzNDM5MSwgMzM0ODcsIDM0Mzk2LCAzNDM5OSwgMzQ0MDYsIDM0NDE0LCAzNDQyMCwgMzQ0MjYsIAotICAgIDM0NDMyLCAzNDQ0MywgMzQ0NDgsIDM0NDU1LCAzNDQ2MiwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTAxLCAKLSAgICAzNDUwNywgMzQ1MTUsIDMzNDkyLCAzNDUyMCwgMzQ1MjYsIDM0NTMyLCAzMzQ5OCwgMzQ1MzcsIDM0NTQyLCAzNDU1MCwgCi0gICAgMzQ1NTgsIDM0NTY0LCAzNDU3MSwgMzQ1NzcsIDM0NTg0LCAzNDU5MSwgMzQ1OTcsIDM0NjA1LCAzNDYxNSwgMzQ2MjIsIAotICAgIDM0NjI4LCAzNDYzMywgMzQ2MzksIDM0NjQ0LCAzNDY0OSwgMzQ2NTYsIDM0NjY1LCAzNDY3MywgMzQ2NzgsIDM0Njg0LCAKLSAgICAzNDY5MSwgMzQ2OTksIDM0NzA1LCAzNDcxMCwgMzQ3MTYsIDM0NzI1LCAzNDczMiwgMzAxMzUsIDM0NzM4LCAzNDc0MiwgCi0gICAgMzQ3NDcsIDM0NzU2LCAzNDc2MSwgMzQ3NjYsIDM0NzcxLCAxMzU0OCwgMzQ3NzksIDM0Nzg0LCAzNDc4OSwgMzQ3OTQsIAotICAgIDM0Nzk4LCAzNDgwMywgMzQ4MDgsIDM0ODE1LCAzNDgyMCwgMzQ4MjUsIDM0ODMwLCAzMzUwMywgMjI4OTUsIDM0ODM2LCAKLSAgICAyNTU4LCAxNDQsIDM0ODM5LCAzNDg0MiwgMzQ4NDYsIDM0ODUwLCAzNDg2MCwgMzQ4NjgsIDM0ODc1LCAzNDg3OSwgMzQ4ODIsIAotICAgIDM0ODkwLCAzNDg5NywgMzQ5MDQsIDM0OTEzLCAzNDkxNywgMzQ5MjAsIDM0OTI2LCAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAKLSAgICAzNDk1MCwgMzQ5NTQsIDM0OTU3LCAzNDk2MywgMzQ5NzAsIDM0OTc0LCAzNDk3OCwgMzQ5ODUsIDM0OTkzLCAzMzQzOSwgCi0gICAgMzUwMDAsIDM1MDA4LCAzNTAxMywgMTEwMzQsIDYyMywgMzY5LCAzNTAyNSwgMzUwMzAsIDM1MDM1LCAzNTA0MSwgMzUwNDYsIAotICAgIDM1MDUxLCAzODg3LCAzNTA1NiwgMzUwNTksIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAzNTA4NCwgMzUwOTEsIAotICAgIDI0MzU2LCAzNTA5NiwgMzUxMDEsIDM1MTA2LCAzNTExMSwgMzUxMTYsIDM1MTIyLCAzNTEyNywgMzUxMzMsIDMzNjc5LCAKLSAgICAzNTEzOSwgMzUxNDQsIDM1MTUwLCAzNTE1NiwgMzUxNjYsIDM1MTcxLCAzNTE3NiwgMzUxODAsIDM1MTg1LCAzNTE5MCwgCi0gICAgMzUxOTUsIDM1MjAwLCAzNTIxMywgMzUyMTgsIDI0MDE5LCAxODI1NSwgMzkwMCwgMzUyMjIsIDM1MjI4LCAzNTIzMywgCi0gICAgMzUyMzgsIDM1MjQ0LCAzNTI0OSwgMzUyNTQsIDM1MjU4LCAzNTI2MywgMzUyNjgsIDM1Mjc0LCAzNTI3OSwgMzUyODQsIAotICAgIDEzNjMsIDM1Mjg4LCAzNTI5MywgMzUyOTgsIDM1MzAzLCAzNTMwNywgMzUzMTIsIDM1MzE3LCAzNTMyMiwgMzUzMjgsIAotICAgIDM1MzM0LCAzNTMzOSwgMzUzNDMsIDM1MzQ3LCAzNTM1MiwgMzUzNTcsIDM1MzYyLCAzNTM2NiwgMzUzNzQsIDM1Mzc4LCAKLSAgICAzNTM4NCwgMzUzODgsIDM1Mzk1LCAxODAzOSwgMzM0NTAsIDM1NDAxLCAzNTQwOCwgMzU0MTYsIDM1NDIzLCAzNTQyOSwgCi0gICAgMzU0NDIsIDM1NDU0LCAzNTQ1OSwgMzU0NjUsIDM1NDY5LCAyODEyLCAzNTQ3MywgMzU0NzcsIDM0OTY1LCAzNTQ4NiwgCi0gICAgMzU0OTcsIDM1NTAyLCAzMDE5OCwgMzU1MDcsIDM1NTEyLCAzNTUxNiwgMzU1MjEsIDI0MjQ5LCAzNTUyNSwgMzU1MjksIAotICAgIDM1NTM0LCAzMzQ1NiwgMjI5ODUsIDM1NTM4LCAzNTU0MywgMzU1NDksIDM1NTU0LCAzNTU1OCwgMzU1NjIsIDM1NTY1LCAKLSAgICAzNTU2OSwgMzU1NzUsIDM1NTg0LCAzNTU5NSwgMzU2MDcsIDMzNDYyLCAzNTYxMiwgMzU2MTUsIDM1NjE5LCAzNTYyMywgCi0gICAgNDA2LCAzNTYyOCwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NDgsIDM1NjUzLCAzNTY1OSwgMzU2NjQsIDM1NjY5LCAKLSAgICAzNTY3NSwgMzU2ODAsIDM1Njg2LCAzNTY5MSwgMzU2OTcsIDM1NzAyLCAzNTcwNywgMzU3MTIsIDM1NzE3LCAzNTcyMiwgCi0gICAgMzU3MjcsIDM1NzMyLCAzNTczNywgMzU3NDMsIDM1NzQ4LCAzNTc1MywgMzU3NTgsIDM1NzYzLCAzNTc2OCwgMzU3NzMsIAotICAgIDM1Nzc4LCAzNTc4NCwgMzU3OTAsIDM1Nzk1LCAzNTgwMCwgMzU4MDUsIDM1ODEwLCAzNTgxNSwgMzU4MjAsIDM1ODI1LCAKLSAgICAzNTgzMCwgMzU4MzUsIDM1ODQwLCAzNTg0NSwgMzU4NTAsIDM1ODU1LCAzNTg2MCwgMzU4NjUsIDM1ODcwLCAzNTg3NSwgCi0gICAgMzU4ODAsIDM1ODg2LCAzMjUsIDksIDM1ODkxLCAzNTg5NSwgMzU4OTksIDM1OTA3LCAzNTkxMSwgMzU5MTUsIDM1OTE4LCAKLSAgICAzNTkyMSwgMzU5MjMsIDM1OTI4LCAzNTkzMiwgMzU5MzcsIDM1OTQxLCAzNTk0NiwgMzU5NTAsIDM1OTU1LCAzNTk1OSwgCi0gICAgMzU5NjIsIDM1OTY0LCAzNTk2OCwgMzU5NzMsIDM1OTc3LCAzNTk4OCwgMzU5OTEsIDM1OTkzLCAzNTk5NywgMzYwMDksIAotICAgIDM2MDE4LCAzNjAyMiwgMzYwMjYsIDM2MDMyLCAzNjAzNywgMzYwNDYsIDM2MDUyLCAzNjA1NywgMzYwNjIsIDM2MDY2LCAKLSAgICAzNjA3MCwgMzYwNzUsIDM2MDgyLCAzNjA4NywgMzYwOTMsIDM2MDk4LCAzNjEwMiwgMzYxMDksIDI3NzMxLCAyNzc0MSwgCi0gICAgMzYxMTMsIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTM1LCAzNjEzOSwgMzYxNDYsIDM2MTUyLCA4NDkxLCAzNjE1NiwgCi0gICAgMzYxNjUsIDM2MTczLCAzNjE4OCwgMzYyMDIsIDM2MjExLCAzNjIxOSwgMzYyMzAsIDM2MjM5LCAzNjI0NCwgMzYyNTEsIAotICAgIDc1NTYsIDM2MjYxLCAzNjI2NiwgMzYyNzEsIDM2Mjc1LCAzNjI3OCwgMzYyODMsIDM2Mjg3LCAzNjI5MiwgMzYyOTYsIAotICAgIDM2MzAzLCAzNjMwOCwgMzYzMTMsIDM2MzE4LCA5MzkxLCAzNjMyOCwgMzYzMzAsIDM2MzMzLCAzNjMzNiwgMzYzNDAsIAotICAgIDM2MzQ2LCAzNjM1MCwgMzYzNTUsIDM2MzYwLCAzNjM3OCwgMzYzOTIsIDM2NDExLCAzNjQyOCwgMzY0MzcsIDM2NDQ1LCAKLSAgICAzNjQ1MCwgMzY0NTUsIDE0ODYsIDM2NDYxLCAzNjQ2NywgMzY0NzIsIDM2NDgyLCAzNjQ5MSwgMzY0OTksIDM2NTA0LCAKLSAgICAzNjUxMCwgMzY1MTUsIDM2NTI0LCAzNjUzNSwgMzY1NDAsIDM2NTQ3LCAzNjU1MSwgMzY1NTgsIDM2NTY2LCAzNjU3MywgCi0gICAgMzY1ODYsIDM2NTk0LCAzNjU5OCwgMzY2MDgsIDM2NjEzLCAzNjYxNywgMzY2MjUsIDM2NjMzLCAzNjYzOCwgMzY2NDIsIAotICAgIDM2NjQ2LCAzNjY1NSwgMzY2NjEsIDM2NjY2LCAzNjY3NCwgMzY2ODQsIDM2NjkzLCAzNjcwMiwgMzY3MTEsIDM2NzIyLCAKLSAgICAzNjczMCwgMzY3NDEsIDM2NzUwLCAzNjc1NywgMzY3NjMsIDM2NzY4LCAzNjc3OSwgMzY3OTAsIDM2Nzk1LCAzNjc5OSwgCi0gICAgMzY4MDIsIDM2ODA2LCAzNjgxNCwgMzY4MjAsIDM2ODMxLCAzNjg0MiwgMzY4NTMsIDM2ODY0LCAzNjg3NSwgMzY4ODYsIAotICAgIDM2ODk3LCAzNjkwOCwgMzY5MjAsIDM2OTMyLCAzNjk0NCwgMzY5NTYsIDM2OTY4LCAzNjk4MCwgMzY5OTIsIDM2OTk2LCAKLSAgICAzNzAwNCwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjgsIDM3MDM0LCAyNDU3LCAzNzAzOCwgMzcwNDAsIDM3MDQ1LCAKLSAgICAzNzA1MCwgMzcwNTUsIDM3MDU4LCAzNzA2MCwgMzcwNjQsIDM3MDY3LCAzNzA3NCwgMzcwNzgsIDEwNjY0LCAzNzA4MiwgCi0gICAgMzcwODgsIDM3MDk4LCAzNzEwMywgMzcxMDksIDM3MTEzLCAzNzExOCwgMzcxMzEsIDI4MTYyLCAzNzEzNywgMzcxNDYsIAotICAgIDM3MTU1LCAxOTEwNCwgMzcxNjIsIDM3MTcxLCAzNDA4OSwgMzcxNzksIDM3MTg0LCAzNzE4OCwgMzcxOTcsIDM3MjA1LCAKLSAgICAzNzIxMiwgMzcyMTcsIDM3MjIxLCAzNzIyNiwgMzcyMzQsIDM3MjM4LCAzNzI0NiwgMzcyNTIsIDM3MjU4LCAzNzI2MywgCi0gICAgMzcyNjcsIDM3MjcwLCAzNzI3NSwgMzcyODgsIDM3MzA0LCAyNDg0MCwgMzczMjEsIDM3MzMzLCAzNzM1MCwgMzczNjIsIAotICAgIDM3Mzc2LCAyNDg1NywgMjQ4NzYsIDM3Mzg4LCAzNzQwMCwgMjcxOSwgMzc0MTQsIDM3NDE5LCAzNzQyNCwgMzc0MjksIAotICAgIDM3NDMzLCAzNzQ0MCwgMzc0NTIsIDM3NDU5LCAzNzQ2OCwgMzc0NzEsIDM3NDgyLCAzNzQ5MywgMzc0OTgsIDM0NTEyLCAKLSAgICA4NTIsIDM3NTAyLCAzNzUwNiwgMzc1MTAsIDM3NTEzLCAzNzUxOCwgMzc1MjMsIDM3NTI5LCAzNzUzNCwgMzc1MzksIAotICAgIDM3NTQ1LCAzNzU1MSwgMzc1NTYsIDM3NTYwLCAzNzU2NSwgMzc1NzAsIDM3NTc1LCAzNzU3OSwgMzc1ODIsIDM3NTg4LCAKLSAgICAzNzU5MywgMzc1OTgsIDM3NjAzLCAzNzYwNywgMzc2MTIsIDM3NjE4LCAzNzYyNiwgMjg0MTQsIDM3NjMxLCAzNzYzNiwgCi0gICAgMzc2NDMsIDM3NjQ5LCAzNzY1NSwgMzc2NjAsIDM3NjY4LCAyNDM2NSwgMzc2NzUsIDM3NjgwLCAzNzY4NSwgMzc2OTAsIAotICAgIDM3Njk0LCAzNzY5NywgMzc3MDIsIDM3NzA2LCAzNzcxMCwgMzc3MTcsIDM3NzIzLCAzNzcyOSwgMzc3MzUsIDM3NzQyLCAKLSAgICAzNzc0NywgMzc3NTMsIDM2NjI4LCAzNzc1NywgMzc3NjEsIDM3NzY2LCAzNzc3OSwgMzc3ODQsIDM3NzkwLCAzNzc5OCwgCi0gICAgMzc4MDUsIDM3ODEzLCAzNzgyMywgMzc4MjksIDM3ODM1LCAzNzg0MSwgMzc4NDUsIDM3ODU0LCAzNzg2MiwgMzc4NjksIAotICAgIDM3ODc0LCAzNzg3OSwgMTEzMzcsIDM3ODg0LCAzNzg5MSwgMzc4OTcsIDM3OTA3LCAzNzkxMiwgMzc5MTgsIDM3OTI2LCAKLSAgICAzNzc1LCAzNzkzMywgMzc5NDAsIDM3OTQ2LCAzNzk1MywgMzc4MSwgMzc5NTcsIDM3OTYyLCAzNzk3MywgMzc5ODAsIAotICAgIDM3OTg2LCAzNzk5NSwgMzc5OTksIDQyNDQsIDM4MDAyLCAzODAwOSwgMzgwMTUsIDM4MDIxLCAzODAyOSwgMzgwMzksIAotICAgIDMxMzI2LCAzODA0NiwgMzgwNTQsIDM4MDYwLCAzODA2NSwgMzgwNzEsIDM4MDc2LCAzODA4MCwgMjgwMTAsIDM4MDg2LCAKLSAgICAzODA5MywgMzgwOTksIDM4MTA4LCAzODExNSwgMjU1NjUsIDM4MTIxLCAzODEyNiwgMzgxMzAsIDM4MTM4LCAzODE0NiwgCi0gICAgMTAzMzAsIDYxNzksIDM4MTUzLCAzODE1NywgMzgxNTksIDM4MTYzLCAzODE2OCwgMzgxNzAsIDM4MTc1LCAzODE4MSwgCi0gICAgMzgxODYsIDM4MTkxLCAzODE5OCwgMzUwODcsIDM4MjA0LCAzODIwOSwgMzgyMTMsIDM4MjE4LCAzODIyMiwgMzgyMzEsIAotICAgIDM4MjM1LCAzODI0MSwgMzgyNDgsIDM4MjU0LCAzODI2MSwgMzgyNjYsIDM4Mjc1LCAzODI4MCwgMzgyODQsIDM4Mjg5LCAKLSAgICAzODI5NiwgMzgzMDQsIDM4MzEyLCAzODMxNywgMjMwNDEsIDM4MzIxLCAzODMyNCwgMzgzMjgsIDM4MzMyLCAxMTcyNSwgCi0gICAgODcyLCAzODMzNiwgMzgzNDEsIDM4MzQ5LCAzODM1MywgMzgzNjIsIDM4MzY5LCAzODM3MywgMzgzNzcsIDM4Mzg1LCAKLSAgICAzODM5MiwgMzg0MDIsIDM4NDA2LCAzODQxMCwgMzg0MTgsIDM4NDI2LCAzODQzMiwgMzg0MzcsIDM4NDQ2LCAxNDUzMCwgCi0gICAgMzg0NTIsIDM4NDYxLCAzODQ2NiwgMzg0NzMsIDM4NDgwLCAzODQ4OCwgMzg0OTYsIDM4NTA0LCAzODUwOSwgMzg1MTYsIAotICAgIDM4NTIzLCAzODUzMCwgMzg1MzcsIDM4NTQ0LCAzODU0OSwgMzg1NTUsIDM4NTcyLCAzODU4MCwgMzg1OTAsIDM4NTk4LCAKLSAgICAzODYwNSwgNDE0LCAzODYwOSwgMzg2MTUsIDM4NjE5LCAzODYyNCwgMzYyMzUsIDM4NjMwLCAzODYzMywgMzg2MzcsIAotICAgIDM4NjQ4LCAzODY1NiwgMzc4NiwgMzg2NjQsIDM4NjcwLCAzODY3NiwgMzg2ODYsIDM4Njk1LCAzODcwNSwgMzg3MTIsIAotICAgIDM4NzE4LCAzODcyMywgMzc5MiwgMzc5OCwgMzg3MzIsIDM4NzM5LCAzODc0NywgMzg3NTIsIDM4NzU2LCAzODc2MywgCi0gICAgMzg3NzEsIDM4Nzc4LCAzODc4NCwgMzg3OTMsIDM4ODAzLCAzODgwOSwgMzg4MTcsIDM4ODI2LCAzODgzMywgMzg4NDEsIAotICAgIDM4ODQ4LCAyMzcyOCwgMzg4NTIsIDM4ODU5LCAzODg2NSwgMzg4NzUsIDM4ODg0LCAzODg5MiwgMzg5MDMsIDM4OTA3LCAKLSAgICAzODkxNywgMzg5MjMsIDM4OTMwLCAzODkzOCwgMzg5NDcsIDM4OTU2LCAzODk2NiwgMzg5NzcsIDM4OTg0LCAzODk4OSwgCi0gICAgMzg5OTYsIDMwODgsIDM5MDA0LCAzOTAxMCwgMzkwMTUsIDM5MDIxLCAzOTAyNywgMzkwMzIsIDM5MDQ1LCAzOTA1OCwgCi0gICAgMzkwNzEsIDM5MDc4LCAzOTA4NCwgMzkwOTIsIDM5MTAwLCAzOTEwNSwgMzkxMDksIDE0NTUsIDM5MTEzLCAzOTExNywgCi0gICAgMzkxMjEsIDM5MTI1LCAzOTEyOSwgMzkxMzMsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIAotICAgIDM5MTYxLCAzOTE2NSwgMzkxNjksIDM5MTczLCAzOTE3NywgMzkxODEsIDM5MTg1LCAzOTE4OSwgMzkxOTMsIDM5MTk3LCAKLSAgICAzOTIwMSwgMzkyMDUsIDM5MjA5LCAzOTIxMywgMzkyMTcsIDM5MjIxLCAzOTIyNSwgMzkyMjksIDM5MjMzLCAzOTIzNywgCi0gICAgMzkyNDEsIDM5MjQ1LCAzOTI0OSwgMzkyNTMsIDM5MjU3LCAzOTI2MSwgMzkyNjUsIDM5MjY5LCAzOTI3MywgMzkyNzcsIAotICAgIDM5MjgxLCAzOTI4NSwgMzkyODksIDM5MjkzLCAzOTI5NywgMzkzMDEsIDM5MzA1LCAzOTMwOSwgMzkzMTMsIDM5MzE3LCAKLSAgICAzOTMyMSwgMzkzMjUsIDM5MzI5LCAzOTMzMywgMzkzMzcsIDM5MzQxLCAzOTM0NSwgMzkzNDksIDM5MzUzLCAzOTM1NywgCi0gICAgMzkzNjEsIDM5MzY1LCAzOTM2OSwgMzkzNzMsIDM5Mzc3LCAzOTM4MSwgMzkzODUsIDM5Mzg5LCAzOTM5MywgMzkzOTcsIAotICAgIDM5NDAxLCAzOTQwNSwgMzk0MDksIDM5NDEzLCAzOTQxNywgMzk0MjEsIDM5NDI1LCAzOTQyOSwgMzk0MzMsIDM5NDM3LCAKLSAgICAzOTQ0MSwgMzk0NDUsIDM5NDQ5LCAzOTQ1MywgMzk0NTcsIDM5NDYxLCAzOTQ2NSwgMzk0NjksIDM5NDczLCAzOTQ3NywgCi0gICAgMzk0ODEsIDM5NDg1LCAzOTQ4OSwgMzk0OTMsIDM5NDk3LCAzOTUwMSwgMzk1MDUsIDM5NTA5LCAzOTUxMywgMzk1MTcsIAotICAgIDM5NTIxLCAzOTUyNSwgMzk1MjksIDM5NTMzLCAzOTUzNywgMzk1NDEsIDM5NTQ1LCAzOTU0OSwgMzk1NTMsIDM5NTU3LCAKLSAgICAzOTU2MSwgMzk1NjUsIDM5NTY5LCAzOTU3MywgMzk1NzcsIDM5NTgxLCAzOTU4NSwgMzk1ODksIDM5NTkzLCAzOTU5NywgCi0gICAgMzk2MDEsIDM5NjA1LCAzOTYwOSwgMzk2MTMsIDM5NjE3LCAzOTYyMSwgMzk2MjUsIDM5NjI5LCAzOTYzMywgMzk2MzcsIAotICAgIDM5NjQxLCAzOTY0NSwgMzk2NDksIDM5NjUzLCAzOTY1NywgMzk2NjEsIDM5NjY1LCAzOTY2OSwgMzk2NzMsIDM5Njc3LCAKLSAgICAzOTY4MSwgMzk2ODUsIDM5Njg5LCAzOTY5MywgMzk2OTcsIDM5NzAxLCAzOTcwNSwgMzk3MDksIDM5NzEzLCAzOTcxNywgCi0gICAgMzk3MjEsIDM5NzI1LCAzOTczMCwgMzk3MzQsIDM5NzM5LCAzOTc0MywgMzk3NDgsIDM5NzUyLCAzOTc1NywgMzk3NjEsIAotICAgIDM5NzY3LCAzOTc3MiwgMzk3NzYsIDM5NzgxLCAzOTc4NSwgMzk3OTAsIDM5Nzk0LCAzOTc5OSwgMzk4MDMsIDM5ODA4LCAKLSAgICAzOTgxMiwgMzk4MTcsIDM5ODIxLCAzOTgyNiwgMzk4MzAsIDM5ODM2LCAzOTg0MiwgMzk4NDcsIDM5ODUxLCAzOTg1NiwgCi0gICAgMzk4NjAsIDM5ODY2LCAzOTg3MSwgMzk4NzUsIDM5ODgwLCAzOTg4NCwgMzk4ODksIDM5ODkzLCAzOTg5OSwgMzk5MDQsIAotICAgIDM5OTA4LCAzOTkxMywgMzk5MTcsIDM5OTIyLCAzOTkyNiwgMzk5MzEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUwLCAKLSAgICAzOTk1NSwgMzk5NTksIDM5OTY1LCAzOTk3MCwgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzk5ODgsIDM5OTkyLCAzOTk5NywgCi0gICAgNDAwMDEsIDQwMDA2LCA0MDAxMCwgNDAwMTYsIDQwMDIxLCA0MDAyNSwgNDAwMzEsIDQwMDM2LCA0MDA0MCwgNDAwNDYsIAotICAgIDQwMDUxLCA0MDA1NSwgNDAwNjAsIDQwMDY0LCA0MDA2OSwgNDAwNzMsIDQwMDc5LCA0MDA4NSwgNDAwOTEsIDQwMDk3LCAKLSAgICA0MDEwMywgNDAxMDksIDQwMTE1LCA0MDEyMSwgNDAxMjYsIDQwMTMwLCA0MDEzNSwgNDAxMzksIDQwMTQ1LCA0MDE1MCwgCi0gICAgNDAxNTQsIDQwMTU5LCA0MDE2MywgNDAxNjgsIDQwMTcyLCA0MDE3NywgNDAxODEsIDQwMTg2LCA0MDE5MCwgNDAxOTUsIAotICAgIDQwMTk5LCA0MDIwNCwgNDAyMDgsIDQwMjE0LCA0MDIxOSwgNDAyMjMsIDQwMjI4LCA0MDIzMiwgNDAyMzgsIDQwMjQ0LCAKLSAgICA0MDI0OSwgMTE2LCA1NywgNDAyNTMsIDQwMjU1LCA0MDI1OSwgNDAyNjMsIDQwMjY3LCA0MDI3MiwgNDAyNzYsIDQwMjgwLCAKLSAgICAxMDI1MSwgNDAyODUsIDQwMjkxLCAxNzU2LCA2NTk3LCA0MDI5NywgNDAzMDAsIDQwMzA1LCA0MDMwOSwgNDAzMTQsIAotICAgIDQwMzE4LCA0MDMyMiwgNDAzMjcsIDExMTIxLCA0MDMzMSwgNDAzMzUsIDQwMzM5LCA1MjUsIDQwMzQzLCAxNjc4MywgCi0gICAgNDAzNDgsIDQwMzUyLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MSwgNDAzNzgsIDI4MTg2LCA0MDM4NCwgNDAzODcsIAotICAgIDQwMzkxLCA0MDM5NiwgNDA0MDIsIDQwNDA2LCA0MDQwOSwgNDA0MTcsIDQwNDIzLCA0MDQyOCwgNDA0MzIsIDQwNDM1LCAKLSAgICA0MDQzOSwgNDA0NDUsIDQwNDQ5LCA0MDQ1MywgMzU4NCwgMzU4OSwgMzE1MzcsIDQwNDU2LCA0MDQ2MCwgNDA0NjQsIAotICAgIDQwNDY4LCA0MDQ3MiwgNDA0ODAsIDQwNDg3LCA0MDQ5MSwgMTQ0ODAsIDQwNDk4LCA0MDUwMywgNDA1MTcsIDQwNTI0LCAKLSAgICA0MDUzNSwgMzM1LCA0MDU0MCwgNDA1NDQsIDQwNTUwLCA0MDU2MiwgNDA1NjgsIDQwNTc0LCAzMTU3NCwgNDA1NzgsIAotICAgIDQwNTg0LCA0MDU5MywgNDA1OTcsIDQwNjAxLCA0MDYwNiwgNDA2MTIsIDQwNjE3LCA0MDYyMSwgNDA2MjYsIDQwNjMwLCAKLSAgICA0MDYzNCwgNDA2NDEsIDQwNjQ3LCA0MDY1MiwgNDA2NjcsIDQwNjgyLCA0MDY5NywgNDA3MTMsIDQwNzMxLCAxMTA3MSwgCi0gICAgNDA3NDUsIDQwNzUyLCA0MDc1NiwgNDA3NTksIDQwNzY4LCA0MDc3MywgNDA3NzcsIDQwNzg1LCAxNzMzMywgNDA3OTMsIAotICAgIDQwNzk3LCA0MDgwNywgNDA4MTgsIDMxNTA3LCA0MDgzMSwgNDA4MzUsIDQwODQ0LCA0MDg2MiwgNDA4ODEsIDQwODg5LCAKLSAgICAxMDUyNSwgMTEyMzQsIDQwODkzLCAyNDI2MSwgNDA4OTYsIDMyNDc1LCA0MDkwMSwgMTA1MjQsIDQwOTA2LCA0MDkxMiwgCi0gICAgNDA5MTcsIDQwOTIzLCA0MDkyOCwgNDA5MzQsIDQwOTM5LCA0MDk0NSwgNDA5NTAsIDQwOTU2LCA0MDk2MiwgNDA5NjgsIAotICAgIDQwOTczLCA0MDkyOSwgNDA5MzUsIDQwOTQwLCA0MDk0NiwgNDA5NTEsIDQwOTU3LCA0MDk2MywgODUwNCwgNDA4OSwgCi0gICAgNDA5NzcsIDQwOTg1LCA0MDk4OSwgNDA5OTIsIDQwOTk2LCA0MTAwMSwgNDEwMDYsIDQxMDEzLCA0MTAxOSwgNDEwMjUsIAotICAgIDQxMDMwLCAxNjE3NCwgNDEwMzQsIDI4MDIyLCA0MTAzOCwgNDEwNDIsIDQxMDQ2LCA0MTA1MiwgNDEwNTYsIDMwMDc1LCAKLSAgICA0MTA2NSwgOTU0NCwgNDEwNjksIDk5MzcsIDQxMDcyLCA0MTA3OSwgNDEwODUsIDQxMDg5LCAxMzAwNCwgNDEwOTYsIAotICAgIDQxMTAyLCA0MTEwNywgNDExMTQsIDQxMTIxLCA0MTEyOCwgMzA3ODEsIDg0MTAsIDQxMTM1LCA0MTE0MiwgNDExNDksIAotICAgIDQxMTU1LCA0MTE2MCwgNDExNjcsIDQxMTc4LCA0MTE4NCwgNDExODksIDQxMTk0LCA0MTE5OSwgNDEyMDMsIDQxMjA4LCAKLSAgICA0MTIxNSwgNDA5MzAsIDQxMjE5LCA0MTIyOSwgNDEyMzgsIDQxMjQ5LCA0MTI1NSwgNDEyNjMsIDQxMjcwLCA0MTI3NSwgCi0gICAgNDEyODAsIDQxMjg1LCA0MTI5MCwgNDEyOTUsIDQxMjk5LCA0MTMwMywgNDEzMTAsIDQxMzE2LCA0MTMyNCwgMjM1MywgCi0gICAgMTA1MCwgMTExMzcsIDExMTQ5LCAxMTE1NCwgMTExNjAsIDQxMzMzLCAxMTE2NSwgMTExNzAsIDExMTc2LCA0MTMzOCwgCi0gICAgNDEzNDgsIDQxMzUyLCAxMTE4MSwgNDEzNTcsIDE4NDUzLCA0MTM2MCwgNDEzNjUsIDQxMzY5LCAzNzQ2MywgNDEzODAsIAotICAgIDQxMzg1LCA0MTM5MiwgNDEzOTksIDQxNDAzLCA0MTQwNiwgNDE0MTQsIDExMDg0LCA0MTQyMSwgNDE0MjQsIDQxNDMwLCAKLSAgICA0MTQ0MCwgNjIzMSwgNDE0NDksIDQxNDU1LCA0MTQ1OSwgNDE0NjcsIDQxNDcxLCA0MTQ4MSwgNDE0ODcsIDQxNDkyLCAKLSAgICA0MTUwMywgNDE1MTIsIDQxNTIxLCA0MTUzMCwgNDE1MzksIDQxNTQ4LCA0MTU1NywgNDE1NjYsIDQxNTcyLCA0MTU3OCwgCi0gICAgNDE1ODMsIDQxNTg5LCA0MTU5NSwgNDE2MDEsIDQxNjA2LCA0MTYwOSwgNDE2MTYsIDQxNjIyLCA0MTYyNiwgNDE2MzEsIAotICAgIDQxNjM4LCA0MTY0NSwgNDE2NDksIDQxNjUyLCA0MTY2MiwgNDE2NzUsIDQxNjg0LCA0MTY5MywgNDE3MDQsIDQxNzE3LCAKLSAgICA0MTcyOSwgNDE3NDAsIDQxNzQ5LCA0MTc2MCwgNDE3NjUsIDQxNzc0LCA0MTc3OSwgMTExODYsIDQxNzg1LCA0MTc5MiwgCi0gICAgNDE4MDAsIDQxODA1LCA0MTgwOSwgNDE4MTYsIDQxODIzLCA0MDQxLCAyMCwgNDE4MjcsIDQxODMyLCAxODMwMiwgNDE4MzYsIAotICAgIDQxODM5LCA0MTg0MiwgMzAyNTUsIDQxODQ2LCAzMDc5MCwgNDE4NTQsIDQxODU4LCA0MTg2MiwgNDE4NjUsIDQxODcxLCAKLSAgICA0MTg3NywgMzM1MjcsIDQxODgyLCA0MTg5MCwgNDE4OTYsIDQxOTAzLCAzMDIzOCwgNDE5MDcsIDMwNDQxLCA0MTkxMSwgCi0gICAgNDE5MjAsIDQxOTI0LCA0MTkzMiwgNDE5MzgsIDQxOTQ0LCA0MTk0OSwgNDE5NTMsIDMwODA5LCA0MTk1OSwgNDE5NjIsIAotICAgIDQxOTcwLCA0MTk3OCwgNDM3OSwgNDE5ODQsIDQxOTg4LCA0MTk5MywgNDIwMDAsIDQyMDA2LCA0MjAxMSwgNDIwMTYsIAotICAgIDQyMDIwLCA0MjAyNiwgNDIwMzEsIDQyMDM3LCA0Mjk3LCA5NDQsIDQyMDQ0LCA0MjA0OCwgNDIwNTEsIDE2NjY0LCA0MjA2MywgCi0gICAgNDIwNzEsIDQyMDc5LCA0MjA4NywgNDIwOTUsIDQyMTAyLCA0MjExMCwgNDIxMTgsIDQyMTI1LCA0MjEzMywgNDIxNDEsIAotICAgIDQyMTQ5LCA0MjE1NywgNDIxNjUsIDQyMTczLCA0MjE4MSwgNDIxODksIDQyMTk3LCA0MjIwNSwgNDIyMTMsIDQyMjIwLCAKLSAgICA0MjIyOCwgNDIyMzYsIDQyMjQ0LCA0MjI1MiwgNDIyNjAsIDQyMjY4LCA0MjI3NiwgNDIyODQsIDQyMjkyLCA0MjMwMCwgCi0gICAgNDIzMDgsIDQyMzE2LCA0MjMyNCwgNDIzMzIsIDQyMzQwLCA0MjM0OCwgNDIzNTYsIDQyMzY0LCA0MjM3MiwgNDIzNzksIAotICAgIDQyMzg3LCA0MjM5NCwgNDI0MDIsIDQyNDEwLCA0MjQxOCwgNDI0MjYsIDQyNDM0LCA0MjQ0MiwgNDI0NTAsIDQyNDU4LCAKLSAgICA0MjQ2OSwgMjM3NjQsIDQyNDc0LCA0MjQ3NywgNDI0ODQsIDQyNDg4LCA0MjQ5NCwgNDI0OTgsIDQyNTA0LCA0MjUwOSwgCi0gICAgNDI1MTUsIDQyNTIwLCA0MjUyNSwgNDI1MjksIDQyNTMzLCA0MjUzOCwgNDI1NDMsIDQyNTUzLCA0MjU1OSwgNDI1NzIsIAotICAgIDQyNTc4LCA0MjU4NCwgNDI1OTAsIDQyNTk3LCA0MjYwMiwgNDI2MDgsIDQyNjEzLCAxODE5OCwgMTQ1OCwgODMxLCA0MjYxOCwgCi0gICAgNDI2MjEsIDQyNjI0LCA0MjYyNywgMzM2MTEsIDMzNjE3LCA0MjYzMCwgMzM2MjMsIDMzNjM2LCAzMzY0MiwgMzM2NDgsIAotICAgIDQyNjM2LCAzMzY1NCwgMzM2NjAsIDQyNjQyLCA0MjY0OCwgMjYsIDQyNjU2LCA0MjY2MywgNDI2NjcsIDQyNjcxLCA0MjY3OSwgCi0gICAgMzQ0MDEsIDQyNjgzLCA0MjY4NywgNDI2OTQsIDQyNjk5LCA0MjcwMywgNDI3MDgsIDQyNzE0LCA0MjcxOSwgNDI3MjUsIAotICAgIDQyNzMwLCA0MjczNCwgNDI3MzgsIDQyNzQyLCA0Mjc0NywgNDI3NTEsIDQyNzU2LCA0Mjc2MCwgNDI3NjQsIDQyNzcxLCAKLSAgICA0Mjc3NiwgNDI3ODAsIDQyNzg0LCA0Mjc4OSwgNDI3OTMsIDQyNzk4LCA0MjgwMiwgNDI4MDYsIDQyODExLCA0MjgxNywgCi0gICAgMTY5MjQsIDE2OTI5LCA0MjgyMiwgNDI4MjYsIDQyODI5LCA0MjgzMywgNDI4MzcsIDIyODUyLCA0Mjg0MiwgNDI4NDYsIAotICAgIDQyODUyLCA0Mjg1OSwgNDI4NjUsIDQyODcwLCA0Mjg4MCwgNDI4ODUsIDQyODkzLCA0Mjg5NywgNDI5MDAsIDM0NDE2LCAKLSAgICA0MjkwNCwgNDM1NiwgNDI5MDksIDQyOTE0LCA0MjkxOCwgNDI5MjMsIDQyOTI3LCA0MjkzMiwgMTQ1NDgsIDQyOTQzLCAKLSAgICA0Mjk0NywgNDI5NTAsIDQyOTU0LCA0Mjk1OSwgNDI5NjMsIDQyOTY4LCA0Mjk3MywgNDI5NzcsIDQyOTgxLCA0Mjk4NSwgCi0gICAgNDI5ODgsIDQyOTkyLCA4NTIzLCAxNDU2NCwgNDI5OTUsIDQyOTk4LCA0MzAwNCwgNDMwMDksIDQzMDE1LCA0MzAyMCwgCi0gICAgNDMwMjYsIDQzMDMxLCA0MzAzNywgNDMwNDIsIDQzMDQ4LCA0MzA1NCwgNDMwNjAsIDQzMDY1LCA0MzA2OSwgNDMwNzMsIAotICAgIDQzMDgyLCA0MzA5OCwgNDMxMTQsIDQzMTI0LCAzMDE0NSwgNDMxMzEsIDQzMTM1LCA0MzE0MCwgNDMxNDUsIDQzMTQ5LCAKLSAgICA0MzE1MywgMzg5NTEsIDQzMTU5LCA0MzE2NCwgNDMxNjgsIDQzMTc1LCA0MzE4MCwgNDMxODUsIDQzMTg5LCA0MzE5MywgCi0gICAgNDMxOTksIDI5MDkzLCA0MzIwMywgMjMxMzYsIDQzMjA4LCA0MzIxNSwgNDMyMjMsIDQzMjI5LCA0MzIzNiwgNDMyNDQsIAotICAgIDQzMjUwLCA0MzI1NCwgNDMyNTksIDQzMjY1LCA0MzI3MywgNDMyNzgsIDQzMjgyLCA0MzI5MSwgMTAyMzIsIDQzMjk5LCAKLSAgICA0MzMwMywgNDMzMTEsIDQzMzE4LCA0MzMyMywgNDMzMjgsIDQzMzMzLCA0MzMzNywgNDMzNDAsIDQzMzQ0LCA0MzM0NywgCi0gICAgNDMzNTEsIDQzMzU4LCA0MzM2MywgNDMzNjcsIDQzMzczLCAyODQ5MiwgMzM2NzQsIDQzMzc3LCA0MzM4NiwgNDMzOTQsIAotICAgIDQzNDAwLCA0MzQwNywgNDM0MTMsIDQzNDE5LCA0MzQyNCwgNDM0MjcsIDQzNDI5LCA0MzQzNiwgNDM0NDMsIDQzNDQ5LCAKLSAgICA0MzQ1MywgNDM0NTYsIDQzNDYwLCA0MzQ2NCwgNDM0NjgsIDQzNDczLCA0MzQ3NywgNDM0ODEsIDQzNDg0LCA0MzQ4OCwgCi0gICAgNDM1MDIsIDI0OTA2LCA0MzUyMSwgNDM1MzQsIDQzNTQ3LCA0MzU2MCwgMjQ5MjQsIDQzNTc1LCAxMTQyMiwgNDM1OTAsIAotICAgIDQzNTk2LCA0MzYwMCwgNDM2MDQsIDQzNjA4LCA0MzYxMiwgNDM2MTksIDQzNjI0LCA0MzYyOCwgNDM2MzUsIDQzNjQxLCAKLSAgICA0MzY0NiwgNDM2NTIsIDQzNjYyLCA0MzY3NCwgNDM2ODUsIDQzNjkwLCA0MzY5NywgNDM3MDEsIDQzNzA1LCA0MzcwOCwgCi0gICAgMTczNDMsIDM4NTUsIDQzNzE2LCAxNjk1MSwgNDM3MjksIDQzNzM2LCA0Mzc0MywgNDM3NDcsIDQzNzUxLCA0Mzc1NiwgCi0gICAgNDM3NjIsIDQzNzY3LCA0Mzc3MywgNDM3NzcsIDQzNzgxLCA0Mzc4NCwgNDM3ODksIDQzNzkzLCA0Mzc5OCwgODA4MiwgCi0gICAgMTY5NjIsIDQzODAzLCA0MzgwNywgNDM4MTMsIDQzODIyLCA0MzgyNywgNDM4MzYsIDQzODQzLCAzODc5OSwgNDM4NDksIAotICAgIDQzODU0LCA0Mzg1OCwgNDM4NjMsIDQzODcwLCA0Mzg3NiwgNDM4ODAsIDQzODgzLCA0Mzg4NywgNDM4OTIsIDE1ODY0LCAKLSAgICA0Mzg5OSwgNDM5MDYsIDQzOTEwLCA0MzkxMywgNDM5MTgsIDQzOTIzLCA0MzkyOSwgNDM5MzQsIDQzOTM5LCA0Mzk0MywgCi0gICAgNDM5NDgsIDQzOTU4LCA0Mzk2MywgNDM5NjksIDQzOTc0LCA0Mzk4MCwgNDM5ODUsIDQzOTkxLCA0NDAwMSwgNDQwMDYsIAotICAgIDQ0MDExLCA0NDAxNSwgNDQwMjAsIDc1NTgsIDc1NzAsIDQ0MDI1LCA0NDAyOCwgNDQwMzUsIDQ0MDQxLCA0NDA1MCwgOTQ3NywgCi0gICAgMzY3NjAsIDQ0MDU4LCA0NDA2MiwgNDQwNjYsIDM0NDY0LCA0NDA3NCwgNDQwODUsIDQ0MDkzLCAzODk5OSwgNDQxMDAsIAotICAgIDQ0MTA1LCA0NDExMCwgNDQxMjEsIDQ0MTI4LCA0NDEzOSwgMzQ0ODgsIDIzMTQ3LCA0NDE0NywgOTA3LCA0NDE1MiwgCi0gICAgMTQ5MTMsIDQ0MTU4LCAzMDIyOSwgNDQxNjQsIDQ0MTY5LCA0NDE3OSwgNDQxODgsIDQ0MTk1LCA0NDIwMSwgNDQyMDUsIAotICAgIDQ0MjA4LCA0NDIxNSwgNDQyMjEsIDQ0MjI4LCA0NDIzNCwgNDQyNDQsIDQ0MjUyLCA0NDI1OCwgNDQyNjQsIDQ0MjY5LCAKLSAgICA0NDI3MywgNDQyODAsIDQ0Mjg1LCA0NDI5MSwgNDQyOTgsIDQ0MzA0LCA0MzQ2OSwgNDQzMDksIDQ0MzEzLCA1NTgsIAotICAgIDE1MDI5LCA0NDMxOSwgNDQzMjQsIDQ0MzI3LCA0NDMzMywgNDQzNDEsIDEzODAsIDQ0MzQ2LCA0NDM1MCwgNDQzNTUsIAotICAgIDQ0MzYwLCA0NDM2NSwgNDQzNzIsIDQ0Mzc2LCA0NDM4MSwgNDQzODcsIDQ0MzkxLCAzMzY4NCwgNDQzOTYsIDQ0NDAxLCAKLSAgICA0NDQxMCwgNDQ0MTcsIDQ0NDI3LCA0NDQzMywgMzAyNzMsIDQ0NDUwLCA0NDQ1OSwgNDQ0NjcsIDQ0NDczLCA0NDQ3OCwgCi0gICAgNDQ0ODUsIDQ0NDkxLCA0NDQ5OSwgNDQ1MDgsIDQ0NTE2LCA0NDUyMCwgNDQ1MjUsIDQ0NTMzLCAzMTI1MSwgMzQ0OTcsIAotICAgIDQ0NTM5LCA0NDU1OCwgMTcyNTcsIDQ0NTcyLCA0NDU4OCwgNDQ2MDIsIDQ0NjA4LCA0NDYxMywgNDQ2MTgsIDQ0NjIzLCAKLSAgICA0NDYyOSwgMzQ1MDMsIDQ0NjM0LCA0NDYzNywgNDQ2NDQsIDQ0NjQ5LCA0NDY1MywgNDA0LCAyOTk1LCA0NDY2MCwgNDQ2NjUsIAotICAgIDQ0NjcwLCAyOTQ1MSwgNDQ0ODgsIDQ0Njc0LCA0NDY3OSwgNDQ2ODcsIDQ0NjkxLCA0NDY5NCwgNDQ2OTksIDQ0NzA1LCAKLSAgICA0NDcxMSwgNDQ3MTYsIDQ0NzIwLCAzMDMyOCwgNDQ3MjMsIDQ0NzI4LCA0NDczMiwgNDQ3MzUsIDQ0NzQwLCA0NDc0NCwgCi0gICAgNDQ3NDksIDQ0NzU0LCA0NDc1OCwgNDQ3NjMsIDQ0NzY3LCA0NDc3MSwgNDQ3NzUsIDIyODQ4LCAyMjg1OSwgNDQ3ODAsIAotICAgIDQ0Nzg1LCA0NDc5MSwgNDQ3OTYsIDQ0ODAyLCAyOTA1MCwgNDQ4MDcsIDQ0ODExLCAyMjk0NSwgMTc1NDksIDQ0ODE0LCAKLSAgICA0NDgxOSwgNDQ4MjQsIDQ0ODI5LCA0NDgzNCwgNDQ4MzksIDQ0ODQ0LCA0NDg0OSwgNDc0LCA2OCwgMzM2OTcsIDMzNzAyLCAKLSAgICAzMzcwNywgMzM3MTMsIDMzNzE4LCAzMzcyMywgNDQ4NTQsIDMzNzI3LCA0NDg1OCwgNDQ4NjIsIDQ0ODY2LCAzMzczMiwgCi0gICAgMzM3MzgsIDQ0ODgwLCAzMzc0OSwgMzM3NTQsIDQ0ODg4LCA0NDg5MywgMzM3NjAsIDQ0ODk4LCA0NDkwMywgNDQ5MDgsIAotICAgIDQ0OTEzLCA0NDkxOSwgNDQ5MjUsIDQ0OTMxLCAzMzc3NywgNDQ5NDQsIDQ0OTUzLCA0NDk1OSwgMzM3ODEsIDQ0OTYzLCAKLSAgICAzMzc4NiwgNDQ5NjgsIDMzNzkxLCAzMzc5NiwgNDQ5NzEsIDQ0OTc2LCA0NDk4MCwgNDQ5ODYsIDMzMzMyLCA0NDk5MywgCi0gICAgMTQ3OTQsIDQ1MDAwLCA0NTAwNSwgMzM4MDEsIDQ1MDA5LCA0NTAxNCwgNDUwMTksIDQ1MDI0LCA0NTAyOCwgNDUwMzMsIAotICAgIDQ1MDM4LCA0NTA0NCwgNDUwNDksIDQ1MDU0LCA0NTA2MCwgNDUwNjYsIDQ1MDcxLCA0NTA3NSwgNDUwODAsIDQ1MDg1LCAKLSAgICA0NTA5MCwgNDUwOTQsIDQ1MDk5LCA0NTEwNCwgNDUxMDksIDQ1MTE1LCA0NTEyMSwgNDUxMjcsIDQ1MTMyLCA0NTEzNiwgCi0gICAgNDUxNDEsIDQ1MTQ1LCAzMzgwNSwgMzM4MTAsIDMzODE1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCAzMzgyMCwgMzM4MjYsIAotICAgIDMzODMyLCAzMzg0NCwgNDUxNjksIDI4MDU5LCA0NTE3MywgNDUxNzgsIDQ1MTgyLCA0NTE4NywgNDUxOTQsIDQ1MTk5LCAKLSAgICA0NTIwNCwgNDUyMDksIDQ1MjEzLCA0NTIxNywgNDUyMjcsIDQ1MjMyLCA0NTIzNywgNDUyNDEsIDQ1MjQ1LCA0NTI0OCwgCi0gICAgNDUyNTYsIDMzODkyLCA0NTI2MSwgMTQ2NSwgNDUyNjcsIDQ1MjcyLCA0NTI3OCwgNDUyODYsIDQ1MjkwLCA0NTI5OSwgCi0gICAgNDUzMDMsIDQ1MzA3LCA0NTMxNSwgNDUzMjEsIDQ1MzI5LCA0NTM0NSwgNDUzNDksIDQ1MzUzLCA0NTM1NywgNDUzNjIsIAotICAgIDQ1MzY4LCA0NTM4MywgMzM5MjksIDE3NjQsIDEzMTk4LCA0NTM4NywgMTM1OSwgMTM3NCwgNDUzOTksIDQ1NDA3LCA0NTQxNCwgCi0gICAgNDU0MTksIDQ1NDI2LCA0NTQzMSwgOTkyMiwgMTEzOSwgMjU0NCwgMTEyMTMsIDQ1NDM4LCA5ODIwLCA0NTQ0MywgNDU0NDYsIAotICAgIDQ1NDU1LCAxMjY3LCA0NTQ2MCwgNDM2MjUsIDQ1NDY3LCA0NTQ3NiwgNDU0ODEsIDQ1NDg1LCA0NTQ5MywgMjQzMTcsIAotICAgIDI1OTYsIDQ1NTAwLCAxMTY3OCwgNDU1MTAsIDQ1NTE2LCAyMzcxLCAyMzgxLCA0NTUyNSwgNDU1MzQsIDQ1NTQ0LCA0NTU1NSwgCi0gICAgMzM3NiwgMzcwOTksIDQ1NTYwLCAxMTI3NywgNDAxOSwgMTgyMzYsIDEyNzIsIDQ1NTY0LCA0NTU3MiwgNDU1NzksIDQ1NTg0LCAKLSAgICA0NTU4OCwgNDU1OTIsIDI1NzkyLCA0Mzg5NCwgMTEzMDQsIDQ1NjAwLCA0NTYwOSwgNDU2MTgsIDQ1NjI2LCA0NTYzMywgCi0gICAgNDU2NDQsIDQ1NjQ5LCA0NTY2MiwgNDU2NzUsIDQ1Njg3LCA0NTY5OSwgNDU3MTEsIDQ1NzIyLCA0NTczNSwgNDU3NDYsIAotICAgIDQ1NzU3LCA0NTc2NywgNDU3NzUsIDQ1NzgzLCA0NTc5NSwgNDU4MDcsIDQ1ODE4LCA0NTgyNywgNDU4MzUsIDQ1ODQyLCAKLSAgICA0NTg1NCwgNDU4NjEsIDQ1ODY3LCA0NTg3NiwgNDU4ODMsIDQ1ODk2LCA0NTkwMSwgNDU5MTEsIDQ1OTE2LCA0NTkyMiwgCi0gICAgNDU5MjcsIDQxMDg2LCA0NTkzMSwgNDU5MzgsIDQ1OTQyLCA0NTk0OSwgNDU5NTcsIDQ1OTY0LCAyNTU3LCA0NTk3MSwgCi0gICAgNDU5ODIsIDQ1OTkyLCA0NjAwMSwgNDYwMDksIDQ2MDE5LCA0NjAyNywgNDYwMzcsIDQ2MDQ2LCA0NjA1MSwgNDYwNTcsIAotICAgIDQ2MDYzLCAzODk5LCA0NjA3NCwgNDYwODQsIDQ2MDkzLCA0NjEwMiwgNDYxMTAsIDQ2MTIwLCA0NjEyOCwgNDYxMzcsIAotICAgIDQ2MTQyLCA0NjE0NywgNDYxNTIsIDE2OTQsIDQ3LCA0NjE2MCwgNDYxNjgsIDQ2MTc5LCA0NjE5MCwgMTc4NzUsIDQ2MjAwLCAKLSAgICA0NjIwNCwgNDYyMTEsIDQ2MjE3LCA0NjIyMiwgNDYyMjYsIDQ2MjM3LCA0NjI0NywgNDYyNTYsIDQ2MjY3LCAxODI3NSwgCi0gICAgMTgyODAsIDQ2MjcyLCA0NjI4MSwgNDYyODYsIDQ2Mjk2LCA0NjMwMSwgNDYzMDksIDQ2MzE3LCA0NjMyNCwgNDYzMzAsIAotICAgIDE2NTYsIDI3NywgNDYzMzQsIDQ2MzQwLCA0NjM0NSwgNDYzNDgsIDIxNDMsIDQzNzQ4LCA0NjM1NiwgNDYzNjAsIDQ2MzYzLCAKLSAgICAxNTEwLCA0NjM2OSwgMTUyMTQsIDEyNzcsIDQ2Mzc0LCA0NjM4NywgNDY0MDEsIDI2ODIsIDQ2NDE5LCA0NjQzMSwgNDY0NDMsIAotICAgIDI2OTYsIDI3MTMsIDQ2NDU3LCA0NjQ3MCwgMjcyOCwgNDY0ODQsIDQ2NDk2LCAyNzQzLCA0NjUxMCwgMTI4MywgMTI4OSwgCi0gICAgMTI5NSwgMTE1ODQsIDQ2NTE1LCA0NjUyMCwgNDY1MjUsIDQ2NTI5LCA0NjU0NCwgNDY1NTksIDQ2NTc0LCA0NjU4OSwgCi0gICAgNDY2MDQsIDQ2NjE5LCA0NjYzNCwgNDY2NDksIDQ2NjY0LCA0NjY3OSwgNDY2OTQsIDQ2NzA5LCA0NjcyNCwgNDY3MzksIAotICAgIDQ2NzU0LCA0Njc2OSwgNDY3ODQsIDQ2Nzk5LCA0NjgxNCwgNDY4MjksIDQ2ODQ0LCA0Njg1OSwgNDY4NzQsIDQ2ODg5LCAKLSAgICA0NjkwNCwgNDY5MTksIDQ2OTM0LCA0Njk0OSwgNDY5NjQsIDQ2OTc5LCA0Njk5NCwgNDcwMDksIDQ3MDI0LCA0NzAzOSwgCi0gICAgNDcwNTQsIDQ3MDY5LCA0NzA4NCwgNDcwOTksIDQ3MTE0LCA0NzEyOSwgNDcxNDQsIDQ3MTU5LCA0NzE3NCwgNDcxODksIAotICAgIDQ3MjA0LCA0NzIxOSwgNDcyMzQsIDQ3MjQ5LCA0NzI2NCwgNDcyNzksIDQ3Mjk0LCA0NzMwOSwgNDczMjQsIDQ3MzM5LCAKLSAgICA0NzM1NCwgNDczNjksIDQ3Mzg0LCA0NzM5OSwgNDc0MTQsIDQ3NDI5LCA0NzQ0NCwgNDc0NTksIDQ3NDc0LCA0NzQ4OSwgCi0gICAgNDc1MDQsIDQ3NTE5LCA0NzUzNCwgNDc1NDksIDQ3NTY0LCA0NzU3OSwgNDc1OTQsIDQ3NjA5LCA0NzYyNCwgNDc2MzksIAotICAgIDQ3NjU0LCA0NzY2OSwgNDc2ODQsIDQ3Njk5LCA0NzcxNCwgNDc3MjksIDQ3NzQ0LCA0Nzc1OSwgNDc3NzQsIDQ3Nzg5LCAKLSAgICA0NzgwNCwgNDc4MTksIDQ3ODM0LCA0Nzg0OSwgNDc4NjQsIDQ3ODc5LCA0Nzg5NCwgNDc5MDksIDQ3OTI0LCA0NzkzOSwgCi0gICAgNDc5NTQsIDQ3OTY5LCA0Nzk4NCwgNDc5OTksIDQ4MDE0LCA0ODAyOSwgNDgwNDQsIDQ4MDU5LCA0ODA3NCwgNDgwODksIAotICAgIDQ4MTA0LCA0ODExOSwgNDgxMzQsIDQ4MTQ5LCA0ODE2NCwgNDgxNzksIDQ4MTk0LCA0ODIwOSwgNDgyMjQsIDQ4MjM5LCAKLSAgICA0ODI1NCwgNDgyNjksIDQ4Mjg0LCA0ODI5OSwgNDgzMTQsIDQ4MzI5LCA0ODM0NCwgNDgzNTksIDQ4Mzc0LCA0ODM4OSwgCi0gICAgNDg0MDQsIDQ4NDE5LCA0ODQzNCwgNDg0NDksIDQ4NDY0LCA0ODQ3OSwgNDg0OTQsIDQ4NTA5LCA0ODUyNCwgNDg1MzksIAotICAgIDQ4NTU0LCA0ODU2OSwgNDg1ODQsIDQ4NTk5LCA0ODYxNCwgNDg2MjksIDQ4NjQ0LCA0ODY1OSwgNDg2NzQsIDQ4Njg5LCAKLSAgICA0ODcwNCwgNDg3MTksIDQ4NzM0LCA0ODc0OSwgNDg3NjQsIDQ4Nzc5LCA0ODc5NCwgNDg4MDksIDQ4ODI0LCA0ODgzOSwgCi0gICAgNDg4NTQsIDQ4ODY5LCA0ODg4NCwgNDg4OTksIDQ4OTE0LCA0ODkyOSwgNDg5NDQsIDQ4OTU5LCA0ODk3NCwgNDg5ODksIAotICAgIDQ5MDA0LCA0OTAxOSwgNDkwMzQsIDQ5MDQ5LCA0OTA2NCwgNDkwNzksIDQ5MDk0LCA0OTEwOSwgNDkxMjQsIDQ5MTM5LCAKLSAgICA0OTE1NCwgNDkxNjksIDQ5MTg0LCA0OTE5OSwgNDkyMTQsIDQ5MjI5LCA0OTI0NCwgNDkyNTksIDQ5Mjc0LCA0OTI4OSwgCi0gICAgNDkzMDQsIDQ5MzE5LCA0OTMzNCwgNDkzNDksIDQ5MzY0LCA0OTM3OSwgNDkzOTQsIDQ5NDA5LCA0OTQyNCwgNDk0MzksIAotICAgIDQ5NDU0LCA0OTQ2OSwgNDk0ODQsIDQ5NDk5LCA0OTUxNCwgNDk1MjksIDQ5NTQ0LCA0OTU1OSwgNDk1NzQsIDQ5NTg5LCAKLSAgICA0OTYwNCwgNDk2MTksIDQ5NjM0LCA0OTY0OSwgNDk2NjQsIDQ5Njc5LCA0OTY5NCwgNDk3MDksIDQ5NzI0LCA0OTczOSwgCi0gICAgNDk3NTQsIDQ5NzY5LCA0OTc4NCwgNDk3OTksIDQ5ODE0LCA0OTgyOSwgNDk4NDQsIDQ5ODU5LCA0OTg3NCwgNDk4ODksIAotICAgIDQ5OTA0LCA0OTkxOSwgNDk5MzQsIDQ5OTQ5LCA0OTk2NCwgNDk5NzksIDQ5OTk0LCA1MDAwOSwgNTAwMjQsIDUwMDM5LCAKLSAgICA1MDA1NCwgNTAwNjksIDUwMDg0LCA1MDA5OSwgNTAxMTQsIDUwMTI5LCA1MDE0NCwgNTAxNTksIDUwMTc0LCA1MDE4OSwgCi0gICAgNTAyMDQsIDUwMjE5LCA1MDIzNCwgNTAyNDksIDUwMjY0LCA1MDI3OSwgNTAyOTQsIDUwMzA5LCA1MDMyNCwgNTAzMzksIAotICAgIDUwMzU0LCA1MDM2OSwgNTAzODQsIDUwMzk5LCA1MDQxNCwgNTA0MjksIDUwNDQ0LCA1MDQ1OSwgNTA0NzQsIDUwNDg5LCAKLSAgICA1MDUwNCwgNTA1MTksIDUwNTM0LCA1MDU0OSwgNTA1NjQsIDUwNTc5LCA1MDU5NCwgNTA2MDksIDUwNjI0LCA1MDYzOSwgCi0gICAgNTA2NTQsIDUwNjY5LCA1MDY4NCwgNTA2OTksIDUwNzE0LCA1MDcyOSwgNTA3NDQsIDUwNzU5LCA1MDc3NCwgNTA3ODksIAotICAgIDUwODA0LCA1MDgxOSwgNTA4MzQsIDUwODQ5LCA1MDg2NCwgNTA4NzksIDUwODk0LCA1MDkwOSwgNTA5MjQsIDUwOTM5LCAKLSAgICA1MDk1NCwgNTA5NjksIDUwOTg0LCA1MDk5OSwgNTEwMTQsIDUxMDI5LCA1MTA0NCwgNTEwNTksIDUxMDc0LCA1MTA4OSwgCi0gICAgNTExMDQsIDUxMTE5LCA1MTEzNCwgNTExNDksIDUxMTY0LCA1MTE3OSwgNTExOTQsIDUxMjA5LCA1MTIyNCwgNTEyMzksIAotICAgIDUxMjU0LCA1MTI2OSwgNTEyODQsIDUxMjk5LCA1MTMxNCwgNTEzMjksIDUxMzQ0LCA1MTM1OSwgNTEzNzQsIDUxMzg5LCAKLSAgICA1MTQwNCwgNTE0MTksIDUxNDM0LCA1MTQ0OSwgNTE0NjQsIDUxNDc5LCA1MTQ5NCwgNTE1MDksIDUxNTI0LCA1MTUzOSwgCi0gICAgNTE1NTQsIDUxNTY5LCA1MTU4NCwgNTE1OTksIDUxNjE0LCA1MTYyOSwgNTE2NDQsIDUxNjU5LCA1MTY3NCwgNTE2ODksIAotICAgIDUxNzA0LCA1MTcxOSwgNTE3MzQsIDUxNzQ5LCA1MTc2NCwgNTE3NzksIDUxNzk0LCA1MTgwOSwgNTE4MjQsIDUxODM5LCAKLSAgICA1MTg1NCwgNTE4NjksIDUxODg0LCA1MTg5OSwgNTE5MTQsIDUxOTI5LCA1MTk0NCwgNTE5NTksIDUxOTc0LCA1MTk4OSwgCi0gICAgNTIwMDQsIDUyMDE5LCA1MjAzNCwgNTIwNDksIDUyMDY0LCA1MjA3OSwgNTIwOTQsIDUyMTA5LCA1MjEyNCwgNTIxMzksIAotICAgIDUyMTU0LCA1MjE2OSwgNTIxODQsIDUyMTk5LCA1MjIxNCwgNTIyMjksIDUyMjQ0LCA1MjI1OSwgNTIyNzQsIDUyMjg5LCAKLSAgICA1MjMwNCwgNTIzMTksIDUyMzM0LCA1MjM0OSwgNTIzNjQsIDUyMzc5LCA1MjM5NCwgNTI0MDksIDUyNDI0LCA1MjQzOSwgCi0gICAgNTI0NTQsIDUyNDY5LCA1MjQ4NCwgNTI0OTksIDUyNTE0LCA1MjUyOSwgNTI1NDQsIDUyNTU5LCA1MjU3NCwgNTI1ODksIAotICAgIDUyNjA0LCA1MjYxOSwgNTI2MzQsIDUyNjQ5LCA1MjY2NCwgNTI2NzksIDUyNjk0LCA1MjcwOSwgNTI3MjQsIDUyNzM5LCAKLSAgICA1Mjc1NCwgNTI3NjksIDUyNzg0LCA1Mjc5OSwgNTI4MTQsIDUyODI5LCA1Mjg0NCwgNTI4NTksIDUyODc0LCA1Mjg4OSwgCi0gICAgNTI5MDQsIDUyOTE5LCA1MjkzNCwgNTI5NDksIDUyOTY0LCA1Mjk3OSwgNTI5OTQsIDUzMDA5LCA1MzAyNCwgNTMwMzksIAotICAgIDUzMDU0LCA1MzA2OSwgNTMwODQsIDUzMDk5LCA1MzExNCwgNTMxMjksIDUzMTQ0LCA1MzE1OSwgNTMxNzQsIDUzMTg5LCAKLSAgICA1MzIwNCwgNTMyMTksIDUzMjM0LCA1MzI0OSwgNTMyNjQsIDUzMjc5LCA1MzI5NCwgNTMzMDksIDUzMzI0LCA1MzMzOSwgCi0gICAgNTMzNTQsIDUzMzY5LCA1MzM4NCwgNTMzOTksIDUzNDE0LCA1MzQyOSwgNTM0NDQsIDUzNDU5LCA1MzQ3NCwgNTM0ODksIAotICAgIDUzNTA0LCA1MzUxOSwgNTM1MzQsIDUzNTQ5LCA1MzU2NCwgNTM1NzksIDUzNTk0LCA1MzYwOSwgNTM2MjQsIDUzNjM5LCAKLSAgICA1MzY1NCwgNTM2NjksIDUzNjg0LCA1MzY5OSwgNTM3MTQsIDUzNzI5LCA1Mzc0NCwgNTM3NTksIDUzNzc0LCA1Mzc4OSwgCi0gICAgNTM4MDQsIDUzODE5LCA1MzgzNCwgNTM4NDksIDUzODY0LCA1Mzg3OSwgNTM4OTQsIDUzOTA5LCA1MzkyNCwgNTM5MzksIAotICAgIDUzOTU0LCA1Mzk2OSwgNTM5ODQsIDUzOTk5LCA1NDAxNCwgNTQwMjksIDU0MDQ0LCA1NDA1OSwgNTQwNzQsIDU0MDg5LCAKLSAgICA1NDEwNCwgNTQxMTksIDU0MTM0LCA1NDE0OSwgNTQxNjQsIDU0MTc5LCA1NDE5NCwgNTQyMDksIDU0MjI0LCA1NDIzOSwgCi0gICAgNTQyNTQsIDU0MjY5LCA1NDI4NCwgNTQyOTksIDU0MzE0LCA1NDMyOSwgNTQzNDUsIDU0MzYxLCA1NDM3NywgNTQzOTMsIAotICAgIDU0NDA5LCA1NDQyNSwgNTQ0NDEsIDU0NDU3LCA1NDQ3MywgNTQ0ODksIDU0NTA1LCA1NDUyMSwgNTQ1MzcsIDU0NTUzLCAKLSAgICA1NDU2OSwgNTQ1ODUsIDU0NjAxLCA1NDYxNywgNTQ2MzMsIDU0NjQ5LCA1NDY2NSwgNTQ2ODEsIDU0Njk3LCA1NDcxMywgCi0gICAgNTQ3MjksIDU0NzQ1LCA1NDc2MSwgNTQ3NzcsIDU0NzkzLCA1NDgwOSwgNTQ4MjUsIDU0ODQxLCA1NDg1NywgNTQ4NzMsIAotICAgIDU0ODg5LCA1NDkwNSwgNTQ5MjEsIDU0OTM3LCA1NDk1MywgNTQ5NjksIDU0OTg1LCA1NTAwMSwgNTUwMTcsIDU1MDMzLCAKLSAgICA1NTA0OSwgNTUwNjUsIDU1MDgxLCA1NTA5NywgNTUxMTMsIDU1MTI5LCA1NTE0NSwgNTUxNjEsIDU1MTc3LCA1NTE5MywgCi0gICAgNTUyMDksIDU1MjI1LCA1NTI0MSwgNTUyNTcsIDU1MjczLCA1NTI4OSwgNTUzMDUsIDU1MzIxLCA1NTMzNywgNTUzNTMsIAotICAgIDU1MzY5LCA1NTM4NSwgNTU0MDEsIDU1NDE3LCA1NTQzMywgNTU0NDksIDU1NDY1LCA1NTQ4MSwgNTU0OTcsIDU1NTEzLCAKLSAgICA1NTUyOSwgNTU1NDUsIDU1NTYxLCA1NTU3NywgNTU1OTMsIDU1NjA5LCA1NTYyNSwgNTU2NDEsIDU1NjU3LCA1NTY3MywgCi0gICAgNTU2ODksIDU1NzA1LCA1NTcyMSwgNTU3MzcsIDU1NzUzLCA1NTc2OSwgNTU3ODUsIDU1ODAxLCA1NTgxNywgNTU4MzMsIAotICAgIDU1ODQ5LCA1NTg2NSwgNTU4ODEsIDU1ODk3LCA1NTkxMywgNTU5MjksIDU1OTQ1LCA1NTk2MSwgNTU5NzcsIDU1OTkzLCAKLSAgICA1NjAwOSwgNTYwMjUsIDU2MDQxLCA1NjA1NywgNTYwNzMsIDU2MDg5LCA1NjEwNSwgNTYxMjEsIDU2MTM3LCA1NjE1MywgCi0gICAgNTYxNjksIDU2MTg1LCA1NjIwMSwgNTYyMTcsIDU2MjMzLCA1NjI0OSwgNTYyNjUsIDU2MjgxLCA1NjI5NywgNTYzMTMsIAotICAgIDU2MzI5LCA1NjM0NSwgNTYzNjEsIDU2Mzc3LCA1NjM5MywgNTY0MDksIDU2NDI1LCA1NjQ0MSwgNTY0NTcsIDU2NDczLCAKLSAgICA1NjQ4OSwgNTY1MDUsIDU2NTIxLCA1NjUzNywgNTY1NTMsIDU2NTY5LCA1NjU4NSwgNTY2MDEsIDU2NjE3LCA1NjYzMywgCi0gICAgNTY2NDksIDU2NjY1LCA1NjY4MSwgNTY2OTcsIDU2NzEzLCA1NjcyOSwgNTY3NDUsIDU2NzYxLCA1Njc3NywgNTY3OTMsIAotICAgIDU2ODA5LCA1NjgyNSwgNTY4NDEsIDU2ODU3LCA1Njg3MywgNTY4ODksIDU2OTA1LCA1NjkyMSwgNTY5MzcsIDU2OTUzLCAKLSAgICA1Njk2OSwgNTY5ODUsIDU3MDAxLCA1NzAxNywgNTcwMzMsIDU3MDQ5LCA1NzA2NSwgNTcwODEsIDU3MDk3LCA1NzExMywgCi0gICAgNTcxMjksIDU3MTQ1LCA1NzE2MSwgNTcxNzcsIDU3MTkzLCA1NzIwOSwgNTcyMjUsIDU3MjQxLCA1NzI1NywgNTcyNzMsIAotICAgIDU3Mjg5LCA1NzMwNSwgNTczMjEsIDU3MzM3LCA1NzM1MywgNTczNjksIDU3Mzg1LCA1NzQwMSwgNTc0MTcsIDU3NDMzLCAKLSAgICA1NzQ0OSwgNTc0NjUsIDU3NDgxLCA1NzQ5NywgNTc1MTMsIDU3NTI5LCA1NzU0NSwgNTc1NjEsIDU3NTc3LCA1NzU5MywgCi0gICAgNTc2MDksIDU3NjI1LCA1NzY0MSwgNTc2NTcsIDU3NjczLCA1NzY4OSwgNTc3MDUsIDU3NzIxLCA1NzczNywgNTc3NTMsIAotICAgIDU3NzY5LCA1Nzc4NSwgNTc4MDEsIDU3ODE3LCA1NzgzMywgNTc4NDksIDU3ODY1LCA1Nzg4MSwgNTc4OTcsIDU3OTEzLCAKLSAgICA1NzkyOSwgNTc5NDUsIDU3OTYxLCA1Nzk3NywgNTc5OTMsIDU4MDA5LCA1ODAyNSwgNTgwNDEsIDU4MDU3LCA1ODA3MywgCi0gICAgNTgwODksIDU4MTA1LCA1ODEyMSwgNTgxMzcsIDU4MTUzLCA1ODE2OSwgNTgxODUsIDU4MjAxLCA1ODIxNywgNTgyMzMsIAotICAgIDU4MjQ5LCA1ODI2NSwgNTgyODEsIDU4Mjk3LCA1ODMxMywgNTgzMjksIDU4MzQ1LCA1ODM2MSwgNTgzNzcsIDU4MzkzLCAKLSAgICA1ODQwOSwgNTg0MjUsIDU4NDQxLCA1ODQ1NywgNTg0NzMsIDU4NDg5LCA1ODUwNSwgNTg1MjEsIDU4NTM3LCA1ODU1MywgCi0gICAgNTg1NjksIDU4NTg1LCA1ODYwMSwgNTg2MTcsIDU4NjMzLCA1ODY0OSwgNTg2NjUsIDU4NjgxLCA1ODY5NywgNTg3MTMsIAotICAgIDU4NzI5LCA1ODc0NSwgNTg3NjEsIDU4Nzc3LCA1ODc5MywgNTg4MDksIDU4ODI1LCA1ODg0MSwgNTg4NTcsIDU4ODczLCAKLSAgICA1ODg4OSwgNTg5MDUsIDU4OTIxLCA1ODkzNywgNTg5NTMsIDU4OTY5LCA1ODk4NSwgNTkwMDEsIDU5MDE3LCA1OTAzMywgCi0gICAgNTkwNDksIDU5MDY1LCA1OTA4MSwgNTkwOTcsIDU5MTEzLCA1OTEyOSwgNTkxNDUsIDU5MTYxLCA1OTE3NywgNTkxOTMsIAotICAgIDU5MjA5LCA1OTIyNSwgNTkyNDEsIDU5MjU3LCA1OTI3MywgNTkyODksIDU5MzA1LCA1OTMyMSwgNTkzMzcsIDU5MzUzLCAKLSAgICA1OTM2OSwgNTkzODUsIDU5NDAxLCA1OTQxNywgNTk0MzMsIDU5NDQ5LCA1OTQ2NSwgNTk0ODEsIDU5NDk3LCA1OTUxMywgCi0gICAgNTk1MjksIDU5NTQ1LCA1OTU2MSwgNTk1NzcsIDU5NTkzLCA1OTYwOSwgNTk2MjUsIDU5NjQxLCA1OTY1NywgNTk2NzMsIAotICAgIDU5Njg5LCA1OTcwNSwgNTk3MjEsIDU5NzM3LCA1OTc1MywgNTk3NjksIDU5Nzg1LCA1OTgwMSwgNTk4MTcsIDU5ODMzLCAKLSAgICA1OTg0OSwgNTk4NjUsIDU5ODgxLCA1OTg5NywgNTk5MTMsIDU5OTI5LCA1OTk0NSwgNTk5NjEsIDU5OTc3LCA1OTk5MywgCi0gICAgNjAwMDksIDYwMDI1LCA2MDA0MSwgNjAwNTcsIDYwMDczLCA2MDA4OSwgNjAxMDUsIDYwMTIxLCA2MDEzNywgNjAxNTMsIAotICAgIDYwMTY5LCA2MDE4NSwgNjAyMDEsIDYwMjE3LCA2MDIzMywgNjAyNDksIDYwMjY1LCA2MDI4MSwgNjAyOTcsIDYwMzEzLCAKLSAgICA2MDMyOSwgNjAzNDUsIDYwMzYxLCA2MDM3NywgNjAzOTMsIDYwNDA5LCA2MDQyNSwgNjA0NDEsIDYwNDU3LCA2MDQ3MywgCi0gICAgNjA0ODksIDYwNTA1LCA2MDUyMSwgNjA1MzcsIDYwNTUzLCA2MDU2OSwgNjA1ODUsIDYwNjAxLCA2MDYxNywgNjA2MzMsIAotICAgIDYwNjQ5LCA2MDY2NSwgNjA2ODEsIDYwNjk3LCA2MDcxMywgNjA3MjksIDYwNzQ1LCA2MDc2MSwgNjA3NzcsIDYwNzkzLCAKLSAgICA2MDgwOSwgNjA4MjUsIDYwODQxLCA2MDg1NywgNjA4NzMsIDYwODg5LCA2MDkwNSwgNjA5MjEsIDYwOTM3LCA2MDk1MywgCi0gICAgNjA5NjksIDYwOTg1LCA2MTAwMSwgNjEwMTcsIDYxMDMzLCA2MTA0OSwgNjEwNjUsIDYxMDgxLCA2MTA5NywgNjExMTMsIAotICAgIDYxMTI5LCA2MTE0NSwgNjExNjEsIDYxMTc3LCA2MTE5MywgNjEyMDksIDYxMjI1LCA2MTI0MSwgNjEyNTcsIDYxMjczLCAKLSAgICA2MTI4OSwgNjEzMDUsIDYxMzIxLCA2MTMzNywgNjEzNTMsIDYxMzY5LCA2MTM4NSwgNjE0MDEsIDYxNDE3LCA2MTQzMywgCi0gICAgNjE0NDksIDYxNDY1LCA2MTQ4MSwgNjE0OTcsIDYxNTEzLCA2MTUyOSwgNjE1NDUsIDYxNTYxLCA2MTU3NywgNjE1OTMsIAotICAgIDYxNjA5LCA2MTYyNSwgNjE2NDEsIDYxNjU3LCA2MTY3MywgNjE2ODksIDYxNzA1LCA2MTcyMSwgNjE3MzcsIDYxNzUzLCAKLSAgICA2MTc2OSwgNjE3ODUsIDYxODAxLCA2MTgxNywgNjE4MzMsIDYxODQ5LCA2MTg2NSwgNjE4ODEsIDYxODk3LCA2MTkxMywgCi0gICAgNjE5MjksIDYxOTQ1LCA2MTk2MSwgNjE5NzcsIDYxOTkzLCA2MjAwOSwgNjIwMjUsIDYyMDQxLCA2MjA1NywgNjIwNzMsIAotICAgIDYyMDg5LCA2MjEwNSwgNjIxMjEsIDYyMTM3LCA2MjE1MywgNjIxNjksIDYyMTg1LCA2MjIwMSwgNjIyMTcsIDYyMjMzLCAKLSAgICA2MjI0OSwgNjIyNjUsIDYyMjgxLCA2MjI5NywgNjIzMTMsIDYyMzI5LCA2MjM0NSwgNjIzNjEsIDYyMzc3LCA2MjM5MywgCi0gICAgNjI0MDksIDYyNDI1LCA2MjQ0MSwgNjI0NTcsIDYyNDczLCA2MjQ4OSwgNjI1MDUsIDYyNTIxLCA2MjUzNywgNjI1NTMsIAotICAgIDYyNTY5LCA2MjU4NSwgNjI2MDEsIDYyNjE3LCA2MjYzMywgNjI2NDksIDYyNjY1LCA2MjY4MSwgNjI2OTcsIDYyNzEzLCAKLSAgICA2MjcyOSwgNjI3NDUsIDYyNzYxLCA2Mjc3NywgNjI3OTMsIDYyODA5LCA2MjgyNSwgNjI4NDEsIDYyODU3LCA2Mjg3MywgCi0gICAgNjI4ODksIDYyOTA1LCA2MjkyMSwgNjI5MzcsIDYyOTUzLCA2Mjk2OSwgNjI5ODUsIDYzMDAxLCA2MzAxNiwgMTgzMDcsIAotICAgIDYzMDI1LCA2MzAzMCwgNjMwMzYsIDYzMDQyLCA2MzA1MiwgNjMwNjAsIDE2MjcwLCAxNjg2OCwgMTA3MzMsIDYzMDczLCAKLSAgICAxNTE4LCAxNTIyLCA2MzA4MSwgMzk3MywgMjk1NjYsIDc1MTIsIDYzMDg3LCA2MzA5MiwgNjMwOTcsIDYzMTAyLCA2MzEwNywgCi0gICAgNjMxMTMsIDYzMTE4LCA2MzEyNCwgNjMxMjksIDYzMTM1LCA2MzE0MCwgNjMxNDUsIDYzMTUwLCA2MzE1NSwgNjMxNjEsIAotICAgIDYzMTY2LCA2MzE3MSwgNjMxNzYsIDYzMTgxLCA2MzE4NiwgNjMxOTEsIDYzMTk2LCA2MzIwMiwgNjMyMDcsIDYzMjEzLCAKLSAgICA2MzIyMCwgMjYwMCwgNjMyMjUsIDYzMjMxLCA4OTEyLCA2MzIzNSwgNjMyNDAsIDYzMjQ3LCA2MzI1NSwgNjUsIDYzMjU5LCAKLSAgICA2MzI2NSwgNjMyNzAsIDYzMjc1LCA2MzI3OSwgNjMyODQsIDYzMjg4LCA2MzI5MiwgMTE2MjEsIDYzMjk2LCA2MzMwNiwgCi0gICAgNjMzMTksIDYzMzMwLCA2MzM0MywgNjMzNTAsIDYzMzU2LCA2MzM2NCwgNjMzNjksIDYzMzc1LCA2MzM4MSwgNjMzODcsIAotICAgIDYzMzkyLCA2MzM5NywgNjM0MDIsIDYzNDA3LCA2MzQxMSwgNjM0MTYsIDYzNDIxLCA2MzQyNiwgNjM0MzIsIDYzNDM4LCAKLSAgICA2MzQ0NCwgNjM0NDksIDYzNDUzLCA2MzQ1OCwgNjM0NjMsIDYzNDY3LCA2MzQ3MiwgNjM0NzcsIDYzNDgyLCA2MzQ4NiwgCi0gICAgMTE2MzcsIDExNjQ4LCAxMTY1MywgMTU2MSwgNjM0OTAsIDYzNDk2LCAxNTY2LCA2MzUwMSwgNjM1MDQsIDE3NzQxLCAKLSAgICA2MzUwOSwgNjM1MTUsIDYzNTIwLCAxNTk3LCA2MzUyNiwgMTYwMywgMTYwOSwgMTE2ODMsIDYzNTMxLCA2MzU0MCwgNjM1NDgsIAotICAgIDYzNTU1LCA2MzU1OSwgNjM1NjMsIDYzNTY5LCA2MzU3NCwgMzMzNjUsIDYzNTc5LCA2MzU4NiwgNjM1OTMsIDYzNTk4LCAKLSAgICA2MzYwMiwgNjM2MDYsIDYzNjE1LCAxNjE0LCAxNzg1MCwgNjM2MjAsIDYzNjI0LCAxNzg2MSwgMTE2MiwgNjM2MjgsIAotICAgIDYzNjM1LCA2MzY0MCwgNjM2NDQsIDE3ODkxLCAxNjE4LCA0MTI0MywgNjM2NDcsIDYzNjUyLCA2MzY2MiwgNjM2NzEsIAotICAgIDYzNjc2LCA2MzY4MCwgNjM2ODYsIDE2MjMsIDQzODU1LCA2MzY5MSwgNjM3MDAsIDYzNzA2LCA2MzcxMSwgNjM3MTYsIAotICAgIDExODgyLCAxMTg4OCwgNjM3MjIsIDYzNzM0LCA2Mzc1MSwgNjM3NjgsIDYzNzg1LCA2MzgwMiwgNjM4MTksIDYzODM2LCAKLSAgICA2Mzg1MywgNjM4NzAsIDYzODg3LCA2MzkwNCwgNjM5MjEsIDYzOTM4LCA2Mzk1NSwgNjM5NzIsIDYzOTg5LCA2NDAwNiwgCi0gICAgNjQwMjMsIDY0MDQwLCA2NDA1NywgNjQwNzQsIDY0MDkxLCA2NDEwOCwgNjQxMjUsIDY0MTQyLCA2NDE1OSwgNjQxNzYsIAotICAgIDY0MTkzLCA2NDIxMCwgNjQyMjcsIDY0MjQ0LCA2NDI2MSwgNjQyNzgsIDY0Mjk1LCA2NDMxMiwgNjQzMjksIDY0MzQ2LCAKLSAgICA2NDM2MywgNjQzODAsIDY0Mzk3LCA2NDQxNCwgNjQ0MzEsIDY0NDQ4LCA2NDQ2NSwgNjQ0ODIsIDY0NDk5LCA2NDUxNiwgCi0gICAgNjQ1MzMsIDY0NTUwLCA2NDU2NywgNjQ1NzgsIDY0NTg4LCA2NDU5MywgMTYyOCwgNjQ1OTcsIDY0NjAyLCA2NDYwOCwgCi0gICAgNjQ2MTMsIDY0NjE4LCA2NDYyNSwgOTgzOSwgMTYzMywgNjQ2MzEsIDY0NjQwLCAyOTg4NywgNjQ2NDUsIDY0NjU2LCAKLSAgICAxMTg5OSwgNjQ2NjYsIDY0NjcxLCA2NDY3NywgNjQ2ODIsIDY0Njg5LCA2NDY5NSwgNjQ3MDAsIDE2MzgsIDE4MTc0LCAKLSAgICA2NDcwNSwgNjQ3MTEsIDExOTA5LCAxNjQzLCAxMTkxNCwgNjQ3MTcsIDY0NzIyLCA2NDcyOCwgNjQ3MzMsIDY0NzM4LCAKLSAgICA2NDc0MywgNjQ3NDgsIDY0NzUzLCA2NDc1OCwgNjQ3NjMsIDY0NzY4LCA2NDc3NCwgNjQ3ODAsIDY0Nzg2LCA2NDc5MSwgCi0gICAgNjQ3OTUsIDY0ODAwLCA2NDgwNSwgNjQ4MDksIDY0ODE0LCA2NDgxOSwgNjQ4MjQsIDY0ODI5LCA2NDgzMywgNjQ4MzgsIAotICAgIDY0ODQ0LCA2NDg0OSwgNjQ4NTQsIDY0ODU4LCA2NDg2MywgNjQ4NjgsIDY0ODc0LCA2NDg3OSwgNjQ4ODQsIDY0ODkwLCAKLSAgICA2NDg5NiwgNjQ5MDEsIDY0OTA1LCA2NDkxMCwgNjQ5MTUsIDY0OTIwLCA2NDkyNCwgNjQ5MjksIDY0OTM0LCA2NDkzOSwgCi0gICAgNjQ5NDUsIDY0OTUxLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTc5LCAzMTM5NSwgNjQ5ODMsIAotICAgIDY0OTg4LCA2NDk5MywgNjQ5OTksIDY1MDA0LCA2NTAwOSwgNjUwMTMsIDY1MDE4LCA2NTAyMywgNjUwMjksIDY1MDM0LCAKLSAgICA2NTAzOSwgNjUwNDUsIDY1MDUxLCA2NTA1NiwgNjUwNjAsIDY1MDY1LCA2NTA3MCwgNjUwNzQsIDY1MDc5LCA2NTA4NCwgCi0gICAgNjUwODksIDY1MDk1LCA2NTEwMSwgNjUxMDYsIDY1MTEwLCA2NTExNSwgNjUxMjAsIDY1MTI0LCA2NTEyOSwgNjUxMzQsIAotICAgIDY1MTM5LCA2NTE0NCwgNjUxNDgsIDY1MTUxLCA2NTE1NCwgNjUxNTksIDY1MTY0LCAzNDA1NiwgNjUxNzEsIDY1MTc5LCAKLSAgICAzNjkxLCAyOTgzNywgNjUxODUsIDY1MTkyLCA2NTE5OCwgMzgzMCwgMTIwMjAsIDY1MjA0LCA2NTIxNCwgNjUyMjksIAotICAgIDY1MjM3LCAxMjAyNSwgNjUyNDgsIDY1MjUzLCA2NTI2NCwgNjUyNzYsIDY1Mjg4LCA2NTMwMCwgMjczNCwgNjUzMTIsIAotICAgIDY1MzE3LCA2NTMyOSwgNjUzMzMsIDY1MzM5LCA2NTM0NSwgNjUzNTAsIDE2NjAsIDE3NDE4LCA2NTM1OSwgNjUzNjQsIAotICAgIDQzOTE0LCA2NTM2OCwgNjUzNzIsIDY1Mzc3LCA2NTM4MSwgMTgzMTUsIDY1Mzg2LCA2NTM4OSwgNjUzOTQsIDY1NDAyLCAKLSAgICA2NTQxMCwgMTY2NCwgMTIwNjEsIDEyMDY3LCAxNjY5LCA2NTQxOCwgNjU0MjUsIDY1NDMwLCA2NTQzOSwgNjU0NDksIAotICAgIDY1NDU2LCA2NTQ2MSwgNjU0NjYsIDE2NzQsIDY1NDczLCA2NTQ3OCwgMTg0MzUsIDY1NDgyLCA2NTQ4NywgNjU0OTQsIAotICAgIDY1NTAwLCA2NTUwNCwgNjU1MTUsIDY1NTI1LCA2NTUzMiwgMTg0NTcsIDk3MzMsIDk3NDAsIDQwMjIsIDQwMjgsIDY1NTM5LCAKLSAgICAxNjc5LCA2NTU0NCwgNjU1NTAsIDY1NTU4LCA2NTU2NSwgNjU1NzEsIDY1NTc4LCA2NTU5MCwgNjU1OTYsIDY1NjAxLCAKLSAgICA2NTYxMywgNjU2MjQsIDY1NjMzLCA2NTY0MywgMzk1MiwgNjU2NTEsIDMzMTY2LCAzMzE3NSwgMTg0OTcsIDE2ODQsIDE2ODgsIAotICAgIDY1NjY0LCA2NTY3NSwgNjU2ODAsIDE2OTgsIDY1Njg4LCA2NTY5MywgNjU2OTgsIDE4NTU2LCA2NTcxMCwgNjU3MTMsIAotICAgIDY1NzE5LCA2NTcyNSwgNjU3MzAsIDY1NzM4LCAxNzAzLCA2NTc0MywgNjU3NDgsIDY1NzU2LCA2NTc2NCwgNjU3NzEsIAotICAgIDY1NzgwLCA2NTc4OCwgNjU3OTcsIDE3MDgsIDY1ODAxLCAxNzEzLCAyMzAxNiwgNjU4MDYsIDY1ODEzLCAxODYzMCwgCi0gICAgNjU4MjEsIDY1ODI3LCA2NTgzMiwgNjU4NDAsIDY1ODQ3LCA2NTg1NSwgNjU4NjUsIDY1ODc0LCA2NTg4NCwgNjU4OTMsIAotICAgIDY1OTA0LCA2NTkxNCwgNjU5MjQsIDY1OTMzLCA2NTk0MywgNjU5NTcsIDY1OTcwLCA2NTk3OSwgNjU5ODcsIDY1OTk3LCAKLSAgICA2NjAwNiwgNjYwMTgsIDY2MDI5LCA2NjA0MCwgNjYwNTAsIDE3OTQ4LCA2NjA1NSwgMTIyMTMsIDY2MDY0LCA2NjA3MCwgCi0gICAgNjYwNzUsIDY2MDgyLCA2NjA4OSwgNjYwOTUsIDE3NjE3LCA2NjEwNSwgNjYxMTEsIDY2MTE2LCA2NjEyNywgNjYxMzIsIAotICAgIDY2MTQwLCAxMjIzMCwgMTIyMzUsIDY2MTQ4LCA2NjE1NCwgNjYxNTgsIDY2MTY2LCA0MDE3LCAxODY5MiwgNDQwMDcsIAotICAgIDY2MTcxLCA2NjE3NywgNjYxODIsIDY2MTkwLCA2NjE5NywgMTMxNzksIDY2MjAyLCA2NjIwOCwgMTcyNCwgNjYyMTMsIAotICAgIDY2MjE2LCAxNDM4LCA2NjIyMiwgNjYyMjcsIDY2MjMyLCA2NjIzOCwgNjYyNDMsIDY2MjQ4LCA2NjI1MywgNjYyNTgsIAotICAgIDY2MjYzLCA2NjI2OCwgMTczMywgMTMsIDY2Mjc0LCA2NjI3OCwgNjYyODMsIDY2Mjg3LCA2NjI5MSwgNjYyOTUsIDM0Mjk2LCAKLSAgICA2NjMwMCwgMjUwNzAsIDY2MzA1LCA2NjMxMCwgNjYzMTQsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzMwLCA2NjMzNCwgCi0gICAgNjYzMzksIDY2MzQzLCA2NjM0OSwgMzc1MTQsIDM3NTE5LCAzNzUyNCwgNjYzNTIsIDY2MzU5LCA2NjM2NSwgNjYzNzMsIAotICAgIDQzNjc4LCA2NjM4MywgMzc1MzAsIDM0NTYwLCAzNDMxMSwgMzQzMTcsIDM3NTQ2LCAzNDMyMywgNjYzODgsIDY2MzkzLCAKLSAgICAzNDU5MywgNjYzOTcsIDY2NDAwLCA2NjQwNCwgNjY0MTIsIDY2NDE5LCA2NjQyMiwgNjY0MjcsIDY2NDMyLCA2NjQzNiwgCi0gICAgNjY0NDAsIDY2NDQzLCA2NjQ1MywgNjY0NjUsIDY2NDcyLCA2NjQ3OCwgMzQzMjgsIDY2NDg1LCAzNjA3OCwgNjY0ODgsIAotICAgIDg5MjksIDEwMTksIDY2NDkxLCA2NjQ5NSwgNjY1MDAsIDM4NzMsIDY2NTA0LCA2NjUwNywgMTQ4MjcsIDY2NTE0LCA2NjUyMSwgCi0gICAgNjY1MzQsIDY2NTQyLCA2NjU1MSwgNjY1NjAsIDY2NTY1LCA2NjU3NSwgNjY1ODgsIDY2NjAwLCA2NjYwNywgNjY2MTIsIAotICAgIDY2NjIxLCA2NjYzNCwgMzkwMzksIDY2NjUyLCA2NjY1NywgNjY2NjQsIDY2NjcwLCA2NjY3NSwgODE5LCA2NjY4MCwgCi0gICAgNjY2ODgsIDY2Njk1LCA2NjcwMiwgMjkzOTIsIDc4MywgNjY3MDgsIDY2NzE0LCA2NjcyNCwgNjY3MzIsIDY2NzM4LCAKLSAgICA2Njc0MywgMzQzNDcsIDYzMTAsIDM0MzYxLCA2Njc0NywgNjY3NTcsIDY2NzYyLCA2Njc3MiwgNjY3ODcsIDY2NzkzLCAKLSAgICA2Njc5OSwgMzQzNzEsIDY2ODA0LCAzMzQ4MiwgNjY4MDgsIDY2ODEzLCA2NjgyMCwgNjY4MjUsIDY2ODI5LCA2NjgzNCwgCi0gICAgMTg1MDAsIDY2ODQxLCA2Njg0NiwgNjY4NTAsIDYzNTEsIDM0Mzk3LCA2Njg1NCwgNjY4NjAsIDMyNCwgNjY4NzAsIDY2ODc3LCAKLSAgICA2Njg4NCwgNjY4ODksIDY2ODk4LCA2MzY1NiwgNjY5MDQsIDY2OTEyLCA2NjkxNiwgNjY5MjAsIDY2OTI0LCA2NjkyOCwgCi0gICAgNjY5MzMsIDY2OTM3LCA2Njk0MywgNjY5NTEsIDY2OTU2LCA2Njk2MSwgNjY5NjYsIDY2OTcwLCA2Njk3NSwgNjY5NzksIAotICAgIDY2OTgzLCA2Njk4OSwgNjY5OTUsIDY3MDAwLCA2NzAwNCwgNjcwMDksIDM0NTIxLCA2NzAxMywgMzQ1MjcsIDM0NTMzLCAKLSAgICA2NzAxOCwgNjcwMjQsIDY3MDMxLCA2NzAzNiwgNjcwNDAsIDMzNDk5LCAxODE2NywgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgCi0gICAgNjcwNTksIDY3MDY1LCA2NzA2OSwgNjcwNzQsIDQzMzUzLCA2NzA4MCwgNjcwODQsIDY3MDkxLCA2NzA5NSwgNjcxMDAsIAotICAgIDY3MTA2LCA2NzExMiwgNjcxMTgsIDY3MTMwLCA2NzEzOSwgNjcxNDksIDY3MTU1LCA2NzE2MiwgNjcxNjcsIDY3MTcyLCAKLSAgICA2NzE3NiwgNjcxNzksIDY3MTg1LCA2NzE5MiwgNjcxOTcsIDY3MjAyLCA2NzIwOSwgNjcyMTYsIDY3MjIzLCA2NzIyOSwgCi0gICAgNjcyMzQsIDY3MjM5LCA2NzI0NywgMzQ1MzgsIDI0NjIsIDY3MjUyLCA2NzI1NywgNjcyNjMsIDY3MjY4LCA2NzI3NCwgCi0gICAgNjcyNzksIDY3Mjg0LCA2NzI4OSwgNjcyOTUsIDM0NTU5LCA2NzMwMCwgNjczMDYsIDY3MzEyLCA2NzMxOCwgMzQ2MjksIAotICAgIDY3MzIzLCA2NzMyOCwgNjczMzMsIDM0NjQwLCA2NzMzOCwgNjczNDMsIDY3MzQ4LCA2NzM1NCwgNjczNjAsIDM0NjQ1LCAKLSAgICA2NzM2NSwgNjczNzAsIDY3Mzc1LCAzNDcwMCwgMzQ3MDYsIDY3MzgwLCA2NzM4NSwgMzQ3MTEsIDM0NzMzLCAzMDEzNiwgCi0gICAgMzQ3MzksIDM0NzQzLCA2NzM5MCwgMTI5MDksIDY3Mzk0LCA2NzQwMiwgNjc0MDgsIDY3NDE2LCA2NzQyMywgNjc0MjksIAotICAgIDY3NDM5LCA2NzQ0NSwgNjc0NTIsIDExNTU2LCAzNDc1NywgNjc0NTgsIDY3NDcxLCA2NzQ4MCwgNjc0ODYsIDY3NDk1LCAKLSAgICA2NzUwMSwgMjUzODAsIDY3NTA4LCA2NzUxNSwgNjc1MjUsIDY3NTI4LCAzNDcwMSwgNjc1MzMsIDY3NTQwLCA2NzU0NSwgCi0gICAgNjc1NDksIDY3NTUzLCA2NzU1OCwgNjc1NjIsIDQxMzMsIDY3NTY3LCA2NzU3MiwgNjc1NzcsIDM3NjA4LCAzNzYxMywgCi0gICAgNjc1ODEsIDM3NjI3LCA2NzU4NiwgMzc2MzIsIDY3NTkxLCA2NzU5NywgMzc2NDQsIDM3NjUwLCAzNzY1NiwgNjc2MDIsIAotICAgIDY3NjA4LCAyNDM2NiwgNjc2MTksIDY3NjIyLCA2NzYzNCwgNjc2NDIsIDM0NzgwLCA2NzY0NiwgNjc2NTUsIDY3NjY1LCAKLSAgICA2NzY3NCwgMzQ3OTAsIDY3Njc5LCA2NzY4NiwgNjc2OTUsIDY3NzAxLCA2NzcwOSwgNjc3MTYsIDY0MDIsIDQ2NzMsIAotICAgIDY3NzIxLCAzNDcxMiwgNjc3MjcsIDY3NzMwLCA2NzczNiwgNjc3NDMsIDY3NzQ4LCA2Nzc1MywgMjUyOTAsIDY3NzU3LCAKLSAgICA2Nzc2MywgNjc3NjksIDY3Nzc0LCA2Nzc3OSwgNjc3ODMsIDY3Nzg5LCA2Nzc5NSwgMzU5ODQsIDEwNDgsIDM4Njg5LCAKLSAgICA0MDQxOSwgNDA0MjUsIDM0ODIxLCAzNDgyNiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTEsIDY3ODI0LCA2NzgzMCwgCi0gICAgNjc4MzQsIDY3ODM3LCA2Nzg0MiwgMzYzMjEsIDY3ODQ2LCAzMzUwNCwgMjI5NjYsIDY3ODUyLCA2MzMxLCA2MzM5LCA5NTcwLCAKLSAgICA2Nzg1NSwgNjc4NjAsIDY3ODY1LCA2Nzg3MCwgNjc4NzUsIDY3ODgwLCA2Nzg4NSwgNjc4OTAsIDY3ODk1LCA2NzkwMCwgCi0gICAgNjc5MDYsIDY3OTExLCA2NzkxNiwgNjc5MjIsIDY3OTI3LCA2NzkzMiwgNjc5MzcsIDY3OTQyLCA2Nzk0NywgNjc5NTIsIAotICAgIDY3OTU4LCA2Nzk2MywgNjc5NjksIDY3OTc0LCA2Nzk3OSwgNjc5ODQsIDY3OTg5LCA2Nzk5NCwgNjc5OTksIDY4MDA0LCAKLSAgICA2ODAwOSwgNjgwMTQsIDY4MDE5LCA2ODAyNSwgNjgwMzAsIDY4MDM1LCA2ODA0MCwgNjgwNDUsIDY4MDUwLCA2ODA1NSwgCi0gICAgNjgwNjEsIDY4MDY2LCA2ODA3MSwgNjgwNzYsIDY4MDgxLCA2ODA4NiwgNjgwOTEsIDY4MDk2LCA2ODEwMSwgNjgxMDYsIAotICAgIDY4MTEyLCA2ODExNywgNjgxMjIsIDY4MTI3LCA2ODEzMiwgNjgxMzgsIDY4MTQ0LCA2ODE0OSwgNjgxNTUsIDY4MTYwLCAKLSAgICA2ODE2NSwgNjgxNzAsIDY4MTc1LCA2ODE4MCwgMTUxMSwgMTQ1LCA2ODE4NSwgNjgxODksIDY4MTkzLCA2ODE5NywgMjcwNzYsIAotICAgIDY4MjAxLCA2ODIwNSwgNjgyMTAsIDY4MjE0LCA2ODIxOSwgNjgyMjMsIDY4MjI4LCA2ODIzMywgNjgyMzgsIDY4MjQyLCAKLSAgICA2ODI0NiwgNjgyNTEsIDY4MjU1LCAxNDU0MiwgNjgyNjAsIDY4MjY0LCA2ODI3MSwgNjgyODEsIDE2NTk1LCA2ODI5MCwgCi0gICAgNjgyOTksIDY4MzAzLCA2ODMwOCwgNjgzMTMsIDY4MzE3LCA2ODMyMSwgMjY4NzAsIDMwNzgsIDY4MzI1LCA2ODMzMSwgCi0gICAgMTg5NjcsIDY4MzM1LCA2ODM0NCwgNjgzNTIsIDY4MzU4LCA2ODM2MywgNjgzNzUsIDY4Mzg3LCA2ODM5MiwgNjgzOTYsIAotICAgIDY4NDAxLCA2ODQwNSwgNjg0MTEsIDY4NDE3LCA2ODQyMiwgNjg0MzIsIDY4NDQyLCA2ODQ0OCwgNjg0NTMsIDY4NDU3LCAKLSAgICA2ODQ2MywgNjg0NjgsIDY4NDc1LCA2ODQ4MSwgNjg0ODYsIDY4NDk1LCA2ODUwNCwgNjg1MTIsIDE2OTkzLCA2ODUxNiwgCi0gICAgNjg1MjUsIDY4NTMzLCA2ODU0NSwgNjg1NTYsIDY4NTY3LCA2ODU3NiwgNjg1ODAsIDY4NTg5LCA2ODU5NywgNjg2MDcsIAotICAgIDY4NjE1LCA2ODYyMiwgNjg2MjgsIDY4NjMzLCA2ODYzOSwgNjg2NDQsIDY4NjU1LCA1NCwgMzMzMDksIDY4NjYxLCAyODMzMSwgCi0gICAgMjgzNDEsIDY4NjY3LCA2ODY3NSwgNjg2ODIsIDY4Njg4LCA2ODY5MiwgNjg3MDIsIDY4NzEzLCA2ODcyMSwgNjg3MzAsIAotICAgIDY4NzM1LCA2ODc0MCwgNjg3NDUsIDY4NzQ5LCA2ODc1MywgMTg5MjEsIDY4NzYxLCA2ODc2NSwgNjg3NzEsIDY4NzgxLCAKLSAgICA2ODc4OCwgNjg3OTQsIDY4ODAwLCAzNzcwNywgNjg4MDQsIDY4ODA2LCA2ODgwOSwgNjg4MTUsIDY4ODE5LCA2ODgzMCwgCi0gICAgNjg4NDAsIDY4ODQ2LCA2ODg1MywgNjg4NjAsIDE0NDc5LCA2ODg2OCwgNjg4NzQsIDY4ODgzLCA2ODg5MiwgNjg4OTgsIAotICAgIDEwNjE1LCA2ODkwNCwgNjg5MTAsIDY4OTE1LCA2ODkyMCwgNjg5MjcsIDY4OTMyLCA2ODkzOSwgNjg5NDUsIDY4OTUwLCAKLSAgICA2ODk1OCwgNjg5NzEsIDY4OTgwLCA2NTkxOSwgNjU5MjksIDY4OTg5LCA2ODk5NSwgNjkwMDEsIDY5MDA4LCA2OTAxNSwgCi0gICAgNjkwMjIsIDY5MDI5LCA2OTAzNiwgNjkwNDEsIDY5MDQ1LCA2OTA0OSwgNjkwNTIsIDY5MDYyLCA2OTA2NiwgNjkwNzgsIAotICAgIDY5MDg3LCA2OTA5MSwgNjkxMDIsIDY5MTA3LCA2OTExMSwgNjU5MzgsIDY5MTE3LCA2OTEyNCwgNjkxMzMsIDY5MTQxLCAKLSAgICA2OTE0OSwgNjkxNTQsIDY5MTU4LCA2OTE2MywgNjkxNjgsIDY5MTc4LCA2OTE4NiwgNjkxOTEsIDY5MTk1LCA2OTE5OSwgCi0gICAgNjkyMDUsIDY5MjEzLCA2OTIyMCwgNjkyMzIsIDY5MjQwLCA2OTI1MSwgNjkyNTgsIDY5MjY0LCA2OTI3NCwgNjkyODAsIAotICAgIDY5Mjg0LCA2OTI5MSwgNjkyOTcsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMyMywgNjkzMzIsIDY5MzQxLCAKLSAgICA2OTM0NywgNjkzNTMsIDY5MzU5LCA2OTM2NCwgNjkzNzEsIDY5Mzc3LCA2OTM4NSwgNjkzOTIsIDY5Mzk4LCAxMzYyMiwgCi0gICAgNjk0MDMsIDY5NDA5LCA2OTQxMywgMTU1MjksIDY5NDE3LCA2OTQyMiwgNjk0MzIsIDY5NDQxLCA2OTQ0NywgNjk0NTMsIAotICAgIDY5NDYxLCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCA2OTQ4MiwgNjk0OTAsIDY5NDk3LCA2OTUwMywgNjk1MTQsIDY5NTE4LCAKLSAgICA2OTUyMiwgNjk1MjYsIDY5NTI5LCA2OTUzNSwgNjk1NDAsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTYyLCA2OTU3MCwgCi0gICAgNjk1NzcsIDY5NTgzLCA2OTU5MCwgMjU5NjMsIDQzNDIyLCA2OTU5NSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTQsIAotICAgIDY5NjIyLCA2OTYyOSwgNjk2MzUsIDY5NjQ0LCA2OTY1MiwgNjk2NTgsIDY5NjYzLCA2OTY2NywgNjk2NzIsIDY5Njc3LCAKLSAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5NCwgNjk3MDMsIDY5NzA3LCA2OTcxNCwgNDA1MjgsIDY5NzE4LCA2OTcyNCwgCi0gICAgNjk3MjgsIDY5NzM2LCA2OTc0MiwgNjk3NDcsIDY5NzU4LCA2OTc2NiwgNjk3NzIsIDY5NzgxLCAyNDUxMywgNjk3ODksIAotICAgIDY5Nzk2LCA2OTgwMywgNjk4MTAsIDY5ODE3LCA2OTgyNCwgNDY3MDQsIDE0MzE3LCA2OTgzMSwgNjk4MzgsIDY5ODQzLCAKLSAgICAzNzc0MywgNjUyOSwgNjk4NDksIDY5ODU0LCA2OTg1OSwgNjk4NjUsIDY5ODcxLCA2OTg3NywgNjk4ODIsIDY5ODg3LCAKLSAgICA2OTg5MiwgNjk4OTcsIDY5OTAzLCA2OTkwOCwgNjk5MTQsIDY5OTE5LCA2OTkyNSwgNjk5MzAsIDY5OTM1LCA2OTk0MCwgCi0gICAgNjk5NDUsIDY5OTUwLCA2OTk1NSwgNjk5NjAsIDY5OTY2LCA2OTk3MSwgNjk5NzcsIDY5OTgyLCA2OTk4NywgNjk5OTIsIAotICAgIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDEzLCA3MDAxOCwgNzAwMjMsIDcwMDI4LCA3MDAzMywgNzAwMzgsIDcwMDQzLCAKLSAgICA3MDA0OCwgNzAwNTMsIDcwMDU4LCA3MDA2MywgNzAwNjksIDcwMDc0LCA3MDA3OSwgNzAwODQsIDcwMDg5LCA3MDA5NCwgCi0gICAgNzAwOTksIDcwMTA0LCA3MDEwOSwgNzAxMTUsIDcwMTIwLCA3MDEyNSwgNzAxMzAsIDcwMTM1LCA3MDE0MCwgNzAxNDUsIAotICAgIDcwMTUwLCA3MDE1NSwgNzAxNjAsIDcwMTY1LCA3MDE3MCwgNzAxNzUsIDcwMTgxLCAxODU0LCAyNjAsIDcwMTg2LCA0MTM2MSwgCi0gICAgNzAxOTAsIDcwMTkzLCA3MDE5OCwgNzAyMDIsIDcwMjA1LCAzNDE1LCA3MDIxMCwgNzAyMTUsIDcwMjE5LCA3MDIyOCwgCi0gICAgNzAyMzksIDcwMjU2LCA3MDI3NCwgNjkxNDUsIDcwMjgyLCA3MDI4NSwgNzAyOTUsIDcwMzAyLCA3MDMxMSwgNzAzMjcsIAotICAgIDcwMzM2LCA3MDM0NiwgNzAzNTEsIDcwMzYxLCA3MDM3MCwgNzAzNzgsIDcwMzkyLCA3MDQwMCwgNzA0MDQsIDcwNDA3LCAKLSAgICA3MDQxNCwgNzA0MjAsIDcwNDMxLCA3MDQzOCwgNzA0NTAsIDcwNDYxLCA3MDQ3MiwgNzA0ODEsIDcwNDg4LCAxMjc4LCA3MTAsIAotICAgIDcwNDk4LCAyNjI5LCA3MDUwMiwgNzA1MDcsIDcwNTE2LCA5MjIxLCAxODg5NCwgMjI0NzEsIDcwNTI0LCA3MDUzMiwgCi0gICAgNzA1NDYsIDcwNTU5LCA3MDU2MywgNzA1NjgsIDcwNTczLCA3MDU3OCwgNzA1ODQsIDcwNTkwLCA3MDU5NSwgODkyMSwgCi0gICAgMTY2MjMsIDcwNjAwLCA3MDYwNCwgNzA2MTIsIDEyMDYyLCA3MDYxNywgNzA2MjMsIDcwNjMyLCA3MDY0MCwgMTczNiwgCi0gICAgMTIwNzQsIDkwOCwgNjQ2NSwgNzA2NDQsIDcwNjQ4LCA3MDY1NywgNzA2NjcsIDI0MTksIDI5MTI3LCA3MDY3NiwgNzA2ODIsIAotICAgIDE4NDA3LCAyOTE0MiwgNzA2ODgsIDQxOTMsIDEyNDUyLCA3MDY5NCwgNzA3MDEsIDY1NjcwLCA3MDcwNSwgNzA3MDksIAotICAgIDcwNzE1LCA3MDcyMCwgNzA3MjUsIDM2MzQsIDE1NCwgMTU0MzcsIDcwNzMwLCA3MDc0MiwgNzA3NDYsIDcwNzUyLCA3MDc1NywgCi0gICAgMjk5MDcsIDcwNzYxLCAxMjQ0MCwgMjc2OSwgNCwgNzA3NjYsIDcwNzc2LCA3MDc4NywgNzA3OTMsIDcwODA0LCA3MDgxMSwgCi0gICAgNzA4MTcsIDcwODIzLCA3MDgzMSwgNzA4MzgsIDcwODQ0LCA3MDg1NCwgNzA4NjQsIDcwODc0LCA3MDg4MywgMjUzNjcsIAotICAgIDEyOTAsIDcwODg4LCA3MDg5MiwgNzA4OTYsIDcwOTAyLCA3MDkwNiwgMjc5MiwgMjc5OCwgODkxOCwgMjI5NCwgNzA5MTAsIAotICAgIDcwOTE0LCA3MDkyMywgNzA5MzEsIDcwOTQyLCA3MDk1MCwgNzA5NTgsIDcwOTY0LCA3MDk2OSwgNzA5ODAsIDcwOTkxLCAKLSAgICA3MDk5OSwgNzEwMDUsIDcxMDEwLCAxMDQzNCwgNzEwMjAsIDcxMDI4LCA3MTAzMiwgNzEwMzYsIDcxMDQxLCA3MTA0NSwgCi0gICAgNzEwNTcsIDMwMzE0LCAxNjU0OCwgNzEwNjQsIDcxMDc0LCA3MTA4MCwgNzEwODYsIDEwNTM2LCA3MTA5NiwgNzExMDcsIAotICAgIDcxMTE4LCA3MTEyOCwgNzExMzcsIDcxMTQxLCA3MTE0OCwgMTc1MCwgOTk2LCA3MTE1OCwgNzExNjMsIDcxMTcxLCA2NTQ4MywgCi0gICAgNzExNzksIDcxMTg0LCA3MTE5NSwgNzEyMDIsIDcxMjE2LCAxNTM2NiwgNDc4LCA3MTIyNiwgNzEyMzAsIDcxMjM0LCAKLSAgICA3MTI0MiwgNzEyNTEsIDcxMjU5LCA3MTI2NSwgNzEyNzksIDcxMjg2LCA3MTI5MiwgNzEzMDEsIDcxMzA4LCA3MTMxOCwgCi0gICAgNzEzMjYsIDcxMzMzLCA3MTM0MSwgNzEzNDgsIDQwMjQsIDE0OSwgNzEzNTYsIDcxMzY3LCA3MTM3MSwgNzEzODMsIDcxMzg5LCAKLSAgICAxMjYzMywgMTkyLCA3MTM5NCwgOTg3MSwgNzEzOTksIDcxNDAzLCA3MTQxMCwgNzE0MTYsIDcxNDI0LCA3MTQzMSwgOTI4MCwgCi0gICAgNzE0MzgsIDcxNDQ3LCA3MTQ1NSwgNDA5MywgNzE0NjgsIDQxMTAsIDcxNDcyLCAyODQyLCA1MTQsIDcxNDc3LCA3MTQ5MCwgCi0gICAgNzE0OTQsIDcxNDk5LCAyODQ3LCAxODUzLCA4MDksIDcxNTAzLCA0MTE0LCA3MTUxMSwgNzE1MTcsIDcxNTIxLCA4NjYsIAotICAgIDcxNTMxLCA3MTU0MCwgNzE1NDUsIDM2NTEsIDcxNTQ5LCAxNjMwNCwgMTYzMTEsIDUwMDY2LCA3MTU1MywgNDE0NSwgNDAzNCwgCi0gICAgMTQyMDAsIDcxNTYxLCA3MTU2OCwgNzE1NzMsIDI1NDMxLCA3MTU3NywgNzE1ODQsIDcxNTkwLCA3MTU5NSwgNzE2MDAsIAotICAgIDE2MzI0LCAxODYsIDcxNjA1LCA3MTYxNywgNzE2MjMsIDcxNjMxLCAyODU5LCAxNzY4LCA3MTYzOSwgNzE2NDEsIDcxNjQ2LCAKLSAgICA3MTY1MSwgNzE2NTYsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MiwgNzE2ODcsIDcxNjkyLCA3MTY5OCwgCi0gICAgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzIzLCA3MTcyOCwgNzE3MzMsIDcxNzM4LCA3MTc0NCwgNzE3NDksIAotICAgIDcxNzU0LCA3MTc1OSwgNzE3NjUsIDcxNzcwLCA3MTc3NiwgNzE3ODEsIDcxNzg2LCA3MTc5MSwgNzE3OTYsIDcxODAxLCAKLSAgICA3MTgwNiwgNzE4MTEsIDcxODE3LCA3MTgyMiwgNzE4MjgsIDcxODMzLCA3MTgzOCwgNzE4NDMsIDcxODQ4LCA3MTg1MywgCi0gICAgNzE4NTgsIDcxODYzLCA3MTg2OCwgNzE4NzQsIDcxODgwLCA3MTg4NSwgNzE4OTAsIDcxODk2LCA3MTkwMSwgNzE5MDUsIAotICAgIDcxOTA5LCA3MTkxNCwgNzE5MjAsIDcxOTI0LCA3MTkzMCwgNzE5MzUsIDcxOTQwLCA3MTk0NiwgNzE5NTEsIDcxOTU1LCAKLSAgICA3MTk2MCwgNzE5NjUsIDcxOTY5LCA3MTk3MiwgNzE5NzQsIDcxOTc4LCA3MTk4MSwgNzE5ODgsIDcxOTkzLCA3MTk5NywgCi0gICAgNzIwMDIsIDcyMDA2LCA3MjAxMCwgNzIwMTQsIDcyMDIzLCA3MjAyNywgMzUwMjYsIDcyMDMwLCAzNTAzMSwgNzIwMzcsIAotICAgIDcyMDQyLCAzNTAzNiwgNzIwNTEsIDcyMDYwLCAzNTA0MiwgNzIwNjUsIDM1MDQ3LCA3MjA3NCwgNzIwNzksIDEyNjc2LCAKLSAgICA3MjA4MywgNzIwODgsIDcyMDkzLCAzNTA1MiwgNzIwOTcsIDQ0OTIxLCA3MjEwMSwgNzIxMDQsIDcyMTA4LCA4NTg5LCAKLSAgICA3MjExNCwgNzIxMTcsIDcyMTIyLCA3MjEyNiwgMzg4OCwgMzUwNTcsIDcyMTI5LCA3MjEzMywgNzIxMzYsIDcyMTQxLCAKLSAgICA3MjE0NSwgNzIxNTEsIDcyMTU5LCA3MjE3MiwgNzIxODEsIDcyMTg3LCA3MjE5MiwgNzIxOTgsIDcyMjAyLCA3MjIwOCwgCi0gICAgNzIyMTQsIDcyMjIyLCA3MjIyNywgNzIyMzEsIDcyMjM4LCA3MjI0NCwgNzIyNTIsIDcyMjYxLCA3MjI2OSwgMzUwNjAsIAotICAgIDcyMjc2LCA3MjI4NiwgNzIyOTksIDcyMzA0LCA3MjMwOSwgNzIzMTMsIDcyMzIyLCA3MjMyOCwgNzIzMzUsIDcyMzQ2LCAKLSAgICA3MjM1OCwgNzIzNjUsIDcyMzc0LCA3MjM4MywgNzIzOTIsIDcyMzk5LCA3MjQwNSwgNzI0MTIsIDcyNDIwLCA3MjQyNywgCi0gICAgNzI0MzUsIDcyNDQ0LCA3MjQ1MiwgNzI0NTksIDcyNDY3LCA3MjQ3NiwgNzI0ODQsIDcyNDkzLCA3MjUwMywgNzI1MTIsIAotICAgIDcyNTIwLCA3MjUyNywgNzI1MzUsIDcyNTQ0LCA3MjU1MiwgNzI1NjEsIDcyNTcxLCA3MjU4MCwgNzI1ODgsIDcyNTk3LCAKLSAgICA3MjYwNywgNzI2MTYsIDcyNjI2LCA3MjYzNywgNzI2NDcsIDcyNjU2LCA3MjY2NCwgNzI2NzEsIDcyNjc5LCA3MjY4OCwgCi0gICAgNzI2OTYsIDcyNzA1LCA3MjcxNSwgNzI3MjQsIDcyNzMyLCA3Mjc0MSwgNzI3NTEsIDcyNzYwLCA3Mjc3MCwgNzI3ODEsIAotICAgIDcyNzkxLCA3MjgwMCwgNzI4MDgsIDcyODE3LCA3MjgyNywgNzI4MzYsIDcyODQ2LCA3Mjg1NywgNzI4NjcsIDcyODc2LCAKLSAgICA3Mjg4NiwgNzI4OTcsIDcyOTA3LCA3MjkxOCwgNzI5MzAsIDcyOTQxLCA3Mjk1MSwgNzI5NjAsIDcyOTY4LCA3Mjk3NSwgCi0gICAgNzI5ODMsIDcyOTkyLCA3MzAwMCwgNzMwMDksIDczMDE5LCA3MzAyOCwgNzMwMzYsIDczMDQ1LCA3MzA1NSwgNzMwNjQsIAotICAgIDczMDc0LCA3MzA4NSwgNzMwOTUsIDczMTA0LCA3MzExMiwgNzMxMjEsIDczMTMxLCA3MzE0MCwgNzMxNTAsIDczMTYxLCAKLSAgICA3MzE3MSwgNzMxODAsIDczMTkwLCA3MzIwMSwgNzMyMTEsIDczMjIyLCA3MzIzNCwgNzMyNDUsIDczMjU1LCA3MzI2NCwgCi0gICAgNzMyNzIsIDczMjgxLCA3MzI5MSwgNzMzMDAsIDczMzEwLCA3MzMyMSwgNzMzMzEsIDczMzQwLCA3MzM1MCwgNzMzNjEsIAotICAgIDczMzcxLCA3MzM4MiwgNzMzOTQsIDczNDA1LCA3MzQxNSwgNzM0MjQsIDczNDM0LCA3MzQ0NSwgNzM0NTUsIDczNDY2LCAKLSAgICA3MzQ3OCwgNzM0ODksIDczNDk5LCA3MzUxMCwgNzM1MjIsIDczNTMzLCA3MzU0NSwgNzM1NTgsIDczNTcwLCA3MzU4MSwgCi0gICAgNzM1OTEsIDczNjAwLCA3MzYwOCwgNzM2MTUsIDczNjIzLCA3MzYzMiwgNzM2NDAsIDczNjQ5LCA3MzY1OSwgNzM2NjgsIAotICAgIDczNjc2LCA3MzY4NSwgNzM2OTUsIDczNzA0LCA3MzcxNCwgNzM3MjUsIDczNzM1LCA3Mzc0NCwgNzM3NTIsIDczNzYxLCAKLSAgICA3Mzc3MSwgNzM3ODAsIDczNzkwLCA3MzgwMSwgNzM4MTEsIDczODIwLCA3MzgzMCwgNzM4NDEsIDczODUxLCA3Mzg2MiwgCi0gICAgNzM4NzQsIDczODg1LCA3Mzg5NSwgNzM5MDQsIDczOTEyLCA3MzkyMSwgNzM5MzEsIDczOTQwLCA3Mzk1MCwgNzM5NjEsIAotICAgIDczOTcxLCA3Mzk4MCwgNzM5OTAsIDc0MDAxLCA3NDAxMSwgNzQwMjIsIDc0MDM0LCA3NDA0NSwgNzQwNTUsIDc0MDY0LCAKLSAgICA3NDA3NCwgNzQwODUsIDc0MDk1LCA3NDEwNiwgNzQxMTgsIDc0MTI5LCA3NDEzOSwgNzQxNTAsIDc0MTYyLCA3NDE3MywgCi0gICAgNzQxODUsIDc0MTk4LCA3NDIxMCwgNzQyMjEsIDc0MjMxLCA3NDI0MCwgNzQyNDgsIDc0MjU3LCA3NDI2NywgNzQyNzYsIAotICAgIDc0Mjg2LCA3NDI5NywgNzQzMDcsIDc0MzE2LCA3NDMyNiwgNzQzMzcsIDc0MzQ3LCA3NDM1OCwgNzQzNzAsIDc0MzgxLCAKLSAgICA3NDM5MSwgNzQ0MDAsIDc0NDEwLCA3NDQyMSwgNzQ0MzEsIDc0NDQyLCA3NDQ1NCwgNzQ0NjUsIDc0NDc1LCA3NDQ4NiwgCi0gICAgNzQ0OTgsIDc0NTA5LCA3NDUyMSwgNzQ1MzQsIDc0NTQ2LCA3NDU1NywgNzQ1NjcsIDc0NTc2LCA3NDU4NiwgNzQ1OTcsIAotICAgIDc0NjA3LCA3NDYxOCwgNzQ2MzAsIDc0NjQxLCA3NDY1MSwgNzQ2NjIsIDc0Njc0LCA3NDY4NSwgNzQ2OTcsIDc0NzEwLCAKLSAgICA3NDcyMiwgNzQ3MzMsIDc0NzQzLCA3NDc1NCwgNzQ3NjYsIDc0Nzc3LCA3NDc4OSwgNzQ4MDIsIDc0ODE0LCA3NDgyNSwgCi0gICAgNzQ4MzcsIDc0ODUwLCA3NDg2MiwgNzQ4NzUsIDc0ODg5LCA3NDkwMiwgNzQ5MTQsIDc0OTI1LCA3NDkzNSwgNzQ5NDQsIAotICAgIDc0OTUyLCA3NDk1OSwgNzQ5NjQsIDg0MTksIDc0OTcxLCAzNTA3MCwgNzQ5NzYsIDc0OTgxLCAzNTA3NSwgNzQ5ODcsIAotICAgIDIyNTc5LCAzNTA4MCwgNzQ5OTIsIDc0OTk4LCA3NTAwNiwgNzUwMTIsIDc1MDE4LCA3NTAyNSwgNzUwMzIsIDc1MDM3LCAKLSAgICA3NTA0MSwgNzUwNDUsIDc1MDQ4LCA3NTA1MiwgNzUwNjEsIDc1MDcwLCA3NTA3OCwgNzUwODQsIDc1MDk2LCA3NTEwNywgCi0gICAgNzUxMTEsIDMxNDAsIDgzOTQsIDc1MTE2LCA3NTExOSwgNzUxMjEsIDc1MTI1LCA3NTEyOSwgNzUxMzMsIDc1MTM5LCAKLSAgICA3NTE0NCwgMjc5OTAsIDc1MTQ5LCA3NTE1MywgNzUxNTYsIDc1MTYxLCA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4MiwgCi0gICAgNjQ4NSwgNzUxODYsIDM1MDk3LCA3NTE5MSwgNzUxOTgsIDc1MjA3LCA3NTIxNSwgNzUyMjYsIDc1MjM0LCA3NTI0MywgCi0gICAgNzUyNTEsIDc1MjU4LCA3NTI2NSwgNzUyNzEsIDc1MjgyLCAzNTEwMiwgNzUyODcsIDc1Mjk4LCA3NTMxMCwgNzUzMTgsIAotICAgIDc1MzI5LCA3NTMzOCwgNzUzNDksIDc1MzU0LCA3NTM2MiwgMjU5NSwgNzUzNjcsIDM3MTY2LCA3NTM4MCwgNzUzODQsIAotICAgIDc1Mzk2LCA3NTQwNCwgNzU0MDksIDc1NDE3LCA3NTQyOCwgMTkxMTQsIDc1NDM3LCA3NTQ0MywgNzU0NTAsIDc1NDU4LCAKLSAgICA3NTQ2NCwgMzUxMTIsIDc1NDY5LCA0MTM5LCA2MzA1NiwgNzU0NzYsIDc1NDc5LCA3NTQ4NywgNzU1MDAsIDc1NTEzLCAKLSAgICA3NTUyNiwgNzU1MzksIDc1NTQ2LCA3NTU1NywgNzU1NjYsIDc1NTcxLCA0NjUyMSwgNDY1MjYsIDc1NTc1LCA3NTU3OSwgCi0gICAgNzU1ODcsIDc1NTk0LCA3NTYwMywgNzU2MTEsIDc1NjE3LCA3NTYyNiwgNzU2MzQsIDc1NjQxLCA3NTY0OSwgNzU2NTMsIAotICAgIDc1NjYyLCA3NTY3MSwgNzU2ODEsIDc1Njk0LCA3NTcwNywgNzU3MTcsIDM1MTE3LCA3NTcyMywgNzU3MzAsIDc1NzM2LCAKLSAgICA3NTc0MiwgMzUxMjMsIDc1NzQ3LCA3NTc1MCwgNzU3NTQsIDc1NzYyLCA3NTc3MSwgNDYyNTksIDc1Nzc5LCA3NTc4OCwgCi0gICAgNzU3OTYsIDc1ODAzLCA3NTgxMSwgNzU4MjEsIDc1ODMwLCA3NTgzOSwgMzY0MjAsIDc1ODQ4LCA3NTg1OSwgNzU4NzQsIAotICAgIDc1ODg0LCA5OTA0LCAyMzI2MywgNzU4OTMsIDc1ODk4LCA3NTkwMywgNzU5MDcsIDc1OTEyLCA3NTkxNiwgNzU5MjEsIAotICAgIDc1OTI3LCA3NTkzMiwgNzU5MzcsIDc1OTQzLCA3NTk0OCwgNzU5NTMsIDIzMjI4LCA3NTk1OCwgNzU5NjUsIDc1OTczLCAKLSAgICA3NTk4MSwgNzU5ODksIDc1OTk0LCA3NjAwMSwgNzYwMDgsIDc2MDEzLCAyMjcyLCA3NjAxNywgNzYwMjEsIDc2MDI5LCAKLSAgICA3NjAzNywgMzUxNDAsIDc2MDQzLCA3NjA0OSwgNzYwNjEsIDc2MDY3LCA3NjA3NCwgNzYwNzgsIDc2MDg1LCA3NjA5MCwgCi0gICAgNzYwOTcsIDc2MTAzLCA3NjExMCwgNzYxMjEsIDc2MTMxLCA3NjE0MSwgNzYxNTMsIDc2MTU5LCA3NjE2NywgNzYxNzMsIAotICAgIDc2MTgzLCA3NjE5MywgMzUxNjcsIDc2MjAyLCA3NjIxMSwgNzYyMTcsIDc2MjI5LCA3NjI0MCwgNzYyNDcsIDc2MjUyLCAKLSAgICA3NjI1NiwgNzYyNjQsIDc2MjcwLCA3NjI3NSwgNzYyODAsIDc2Mjg3LCA3NjI5NSwgNzYzMDcsIDc2MzE3LCA3NjMyNiwgCi0gICAgNzYzMzUsIDc2MzQyLCAzNzAxOSwgMjU3NjQsIDc2MzQ4LCA3NjM1MywgNzYzNTcsIDc2MzYxLCA3NjM2NiwgNzYzNzQsIAotICAgIDc2MzgwLCA3NjM5MSwgNzY0MDQsIDc2NDA5LCA3NjQxNiwgMzUxNzIsIDc2NDIxLCA3NjQzMywgNzY0NDIsIDc2NDUwLCAKLSAgICA3NjQ2MCwgNzY0NzEsIDc2NDg0LCA3NjQ5MSwgNzY1MDAsIDc2NTA5LCA3NjUxNywgNzY1MjIsIDc2NTI4LCAxNTAwLCAKLSAgICA3NjUzMywgNzY1MzgsIDc2NTQzLCA3NjU0OCwgNzY1NTQsIDc2NTU5LCA3NjU2NCwgNzY1NzAsIDc2NTc2LCA3NjU4MSwgCi0gICAgNzY1ODUsIDc2NTkwLCA3NjU5NSwgNzY2MDAsIDYzNjExLCA3NjYwNSwgNzY2MTAsIDc2NjE1LCA3NjYyMCwgNzY2MjYsIAotICAgIDc2NjMyLCA3NjYzNywgNzY2NDEsIDc2NjQ2LCA3NjY1MSwgNzY2NTYsIDc2NjYyLCA3NjY2NywgNzY2NzMsIDc2Njc4LCAKLSAgICA3NjY4MywgNzY2ODgsIDc2NjkzLCA3NjY5NywgNzY3MDMsIDc2NzA4LCA3NjcxNywgNzY3MjIsIDc2NzI3LCA3NjczMiwgCi0gICAgNzY3MzcsIDc2NzQxLCA3Njc0OCwgNzY3NTQsIDQ0MzAsIDE4NzM3LCAzMTA1LCA3Njc1OSwgNzY3NjMsIDc2NzY4LCAKLSAgICA3Njc3MiwgNzY3NzYsIDc2NzgwLCA1MDMyMSwgNzY3ODQsIDc2NzA5LCA3Njc4NiwgNzY3OTYsIDM1MTgxLCA3Njc5OSwgCi0gICAgNzY4MDQsIDc2ODEzLCA3NjgxOSwgNjQ1NCwgMzUxODYsIDc2ODIzLCA3NjgyOSwgNzY4MzQsIDc2ODQwLCA3Njg0NSwgCi0gICAgNzY4NDksIDc2ODU2LCA3Njg2MSwgNzY4NzEsIDc2ODgwLCA3Njg4NCwgNzY4OTAsIDc2ODk2LCA3NjkwMiwgNzY5MDYsIAotICAgIDc2OTE0LCA3NjkyMSwgNzY5MjksIDc2OTM3LCAzNTE5MSwgNzY5NDQsIDc2OTQ3LCA3Njk1NCwgNzY5NjAsIDc2OTY1LCAKLSAgICA3Njk2OSwgNzY5NzUsIDc2OTgyLCA3Njk4NywgNzY5OTEsIDc3MDAwLCA3NzAwOCwgNzcwMTQsIDc3MDE5LCAzNTE5NiwgCi0gICAgNzcwMjYsIDc3MDM4LCA3NzA0NSwgNzcwNTEsIDc3MDU2LCA3NzA2MiwgNzcwNjksIDc3MDc1LCAyMjk3OSwgMjk1ODksIAotICAgIDc3MDgxLCA3NzA4NiwgNzcwOTIsIDc3MDk2LCA3NzEwOCwgNzY3NDIsIDc2NzQ5LCAyMzE2MCwgNzcxMTgsIDc3MTIzLCAKLSAgICA3NzEzMCwgNzcxMzYsIDc3MTQzLCA3NzE0OSwgNzcxNjAsIDc3MTY1LCA3NzE3MywgOTYwOSwgNzcxNzgsIDc3MTgxLCAKLSAgICA3NzE4NywgNzcxOTEsIDc3MTk1LCA3NzE5OCwgNzcyMDQsIDM0OTM0LCA0NDMxLCAxMDY3LCAxNDU5NiwgNzcyMTEsIAotICAgIDc3MjE3LCA3NzIyMywgNzcyMjksIDc3MjM1LCA3NzI0MSwgNzcyNDcsIDc3MjUzLCA3NzI1OSwgNzcyNjQsIDc3MjY5LCAKLSAgICA3NzI3NCwgNzcyNzksIDc3Mjg0LCA3NzI4OSwgNzcyOTQsIDc3Mjk5LCA3NzMwNCwgNzczMDksIDc3MzE0LCA3NzMxOSwgCi0gICAgNzczMjQsIDc3MzMwLCA3NzMzNSwgNzczNDAsIDc3MzQ2LCA3NzM1MSwgNzczNTYsIDc3MzYyLCA3NzM2OCwgNzczNzQsIAotICAgIDc3MzgwLCA3NzM4NiwgNzczOTIsIDc3Mzk4LCA3NzQwNCwgNzc0MTAsIDc3NDE1LCA3NzQyMCwgNzc0MjYsIDc3NDMxLCAKLSAgICA3NzQzNiwgNzc0NDIsIDc3NDQ3LCA3NzQ1MiwgNzc0NTcsIDc3NDYyLCA3NzQ2NywgNzc0NzIsIDc3NDc3LCA3NzQ4MiwgCi0gICAgNzc0ODcsIDc3NDkyLCA3NzQ5NywgNzc1MDIsIDc3NTA4LCA3NzUxMywgNzc1MTgsIDc3NTIzLCA3NzUyOSwgNzc1MzQsIAotICAgIDc3NTM5LCA3NzU0NCwgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjUsIDc3NTcwLCA3NzU3NSwgNzc1ODAsIDc3NTg1LCAKLSAgICA3NzU5MCwgNzc1OTUsIDc3NjAwLCA3NzYwNSwgNzc2MTAsIDc3NjE1LCA3NzYyMCwgNzc2MjUsIDc3NjMwLCA3NzYzNSwgCi0gICAgNzc2NDAsIDc3NjQ1LCA3NzY1MCwgNzc2NTYsIDc3NjYxLCA3NzY2NiwgNzc2NzEsIDc3Njc2LCA3NzY4MSwgNzc2ODYsIAotICAgIDc3NjkxLCAxODkwLCAxNjMsIDc3Njk2LCA3NzcwMCwgNzc3MDQsIDc3NzA5LCA3NzcxNywgNzc3MjEsIDc3NzI4LCA3NzczNiwgCi0gICAgNzc3NDAsIDc3NzUzLCA3Nzc2MSwgNzc3NjYsIDc3NzcxLCAyODM5NCwgNzc3NzUsIDc3NzgwLCA3Nzc4NCwgNzc3ODksIAotICAgIDc3NzkzLCA3NzgwMSwgNzc4MDUsIDIyNTg3LCA3NzgxMCwgNzc4MTQsIDY2MTYyLCA3NzgxOCwgNzc4MjEsIDc3ODI5LCAKLSAgICA3NzgzNywgNzc4NDUsIDc3ODUwLCA3Nzg1NSwgNzc4NjIsIDc3ODY5LCA3Nzg3NSwgNzc4ODEsIDc3ODg2LCA3Nzg5MSwgCi0gICAgNzc4OTksIDcwNTUxLCA3NzkwNiwgNjU5NDgsIDc3OTExLCA3NzkxNiwgNzc5MjAsIDc3OTI3LCA2NTk3NSwgMTI3NDMsIAotICAgIDc3OTMzLCA3NzkzOCwgNzc5NDMsIDc3OTQ3LCA3Nzk1MCwgNzc5NTYsIDc3OTYwLCA3Nzk3MCwgNzc5NzksIDc3OTgzLCAKLSAgICA3Nzk4NiwgNzc5OTAsIDc3OTk3LCA3ODAxMCwgNzgwMTYsIDc4MDI0LCA3ODAzMywgNzgwNDQsIDc4MDU1LCA3ODA2NiwgCi0gICAgNzgwNzcsIDc4MDg2LCA3ODA5MiwgNzgxMDEsIDc4MTA5LCA3ODExOSwgNzgxMzIsIDc4MTQwLCA3ODE0NywgNzgxNTgsIAotICAgIDc4MTY0LCA3ODE2OSwgNzgxNzQsIDc4MTgwLCA3ODE4NiwgNzgxOTYsIDc4MjAzLCA3ODIxMywgNzgyMjIsIDc2NDIzLCAKLSAgICA3ODIzMCwgNzgyMzYsIDc4MjQ0LCA3ODI1MCwgNzgyNTcsIDc4MjY1LCA3ODI3MCwgNzgyNzMsIDc4Mjc3LCA3ODI4MSwgCi0gICAgNzgyODQsIDc4MjkwLCA3ODI5NiwgNzgzMDQsIDc4MzE2LCA3ODMyOCwgNzgzMzUsIDc4MzQwLCA3ODM0NCwgNzgzNTUsIAotICAgIDc4MzYzLCA3ODM3MCwgNzgzODIsIDc4MzkwLCA3ODM5OCwgNzg0MDUsIDc4NDExLCA3ODQxNiwgNzg0MjYsIDc4NDM1LCAKLSAgICA3ODQ0MCwgNzg0NTAsIDc4NDU5LCA0NTU0OSwgNzg0NjYsIDc4NDcwLCA3ODQ3NSwgNzg0ODMsIDc4NDkwLCA3ODQ5NiwgCi0gICAgNzg1MDAsIDc4NTEwLCA3ODUyMSwgNzg1MjksIDc4NTM2LCA3ODU0OCwgNzg1NjAsIDc4NTY5LCA3NTM3MCwgNzg1NzYsIAotICAgIDc4NTg2LCA3ODU5OCwgNzg2MDksIDc4NjIzLCA3ODYzMSwgNzg2NDEsIDc4NjQ4LCA3ODY1NiwgNzg2NjksIDc4NjgxLCAKLSAgICA3ODY5MCwgNzg2OTgsIDc4NzA4LCA3ODcxOSwgNzg3MzEsIDc4NzQwLCA3ODc1MCwgNzg3NjAsIDc4NzY5LCA3ODc3NiwgCi0gICAgNzg3ODUsIDc4ODAwLCA3ODgwOCwgNzg4MTgsIDc4ODI3LCA3ODgzNSwgNzg4NDgsIDYzMDI2LCA3ODg2MywgNzg4NzMsIAotICAgIDc4ODgyLCA3ODg5NCwgNzg5MDQsIDc4OTE2LCA3ODkyNywgNzg5MzgsIDc4OTQ5LCA3ODk1OSwgNzg5NzAsIDc4OTc4LCAKLSAgICA3ODk4NCwgNzg5OTQsIDc5MDAyLCA3OTAwOCwgMzEyOTEsIDc5MDEzLCA3OTAxOSwgNzkwMjgsIDc5MDQwLCA3OTA0NSwgCi0gICAgNzkwNTIsIDEwNDQ4LCAxOTEzNCwgNzkwNTgsIDc5MDY3LCA3OTA3MiwgNzkwNzYsIDc5MDgzLCA3OTA4OSwgNzkwOTQsIAotICAgIDc5MDk5LCA3OTEwNywgNzkxMTUsIDEzMTE5LCA3OTExOSwgNzkxMjIsIDc5MTI0LCA3OTEzMSwgNzkxMzcsIDc5MTQ4LCAKLSAgICA3OTE1MywgNzkxNTcsIDc5MTY0LCA3OTE3MCwgNzkxNzUsIDc5MTgzLCA3MTEyMCwgNzExMzAsIDc5MTg5LCA3OTE5NiwgCi0gICAgNzkyMDYsIDExNTQzLCA3OTIxMywgNzkyMTgsIDMxNTA2LCA3OTIyNywgNzkyMzIsIDc5MjM5LCA3OTI0OSwgNzkyNTcsIAotICAgIDc5MjY1LCA3OTI3NCwgNzkyODAsIDc5Mjg2LCA3OTI5MywgNzkzMDAsIDc5MzA1LCA3OTMwOSwgNzkzMTcsIDY1OTkyLCAKLSAgICA3OTMyMiwgNzkzMzEsIDc5MzM5LCA3OTM0NiwgNzkzNTEsIDc5MzU1LCA3OTM2NCwgNzkzNzAsIDc5MzczLCA3OTM3NywgCi0gICAgNzkzODYsIDc5Mzk2LCA3Nzc0OCwgNzk0MDUsIDc5NDA5LCA3OTQxNywgNzk0MjEsIDc5NDI3LCA3OTQzOCwgNzk0NDgsIAotICAgIDE5MTQzLCA3OTQ1OSwgNzk0NjgsIDc5NDc2LCA3OTQ4NCwgNzk0OTEsIDY2MDExLCA5MTQ3LCA3OTQ5OSwgNzk1MDMsIAotICAgIDc5NTEyLCA3OTUxOSwgNzk1MjIsIDI5NDcwLCA3OTUyNSwgNzk1MjksIDc5NTM0LCA3OTU1MSwgNzk1NjMsIDExNTAxLCAKLSAgICA3OTU3NSwgNzk1ODAsIDc5NTg1LCA3OTU5MCwgMjI2NjksIDc5NTk0LCA3OTU5OSwgNzk2MDQsIDc5NjEwLCA3OTYxNSwgCi0gICAgNjEyMiwgNzk2MjAsIDIyNjczLCA3OTYyNSwgNzk2MzAsIDc5NjM2LCA3OTY0MywgNzk2NDgsIDc5NjUzLCA3OTY1OSwgCi0gICAgNzk2NjUsIDc5NjcxLCA3OTY3NiwgNzk2ODIsIDc5Njg2LCA3OTcwMCwgNzk3MDgsIDc5NzE2LCA3OTcyMiwgNzk3MjcsIAotICAgIDc5NzM0LCA3OTc0NCwgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5Nzc2LCA3OTc4MSwgNzk3ODcsIDc5NzkyLCAKLSAgICA3OTgwMSwgNjQ3MTMsIDc5ODA2LCA3OTgwOSwgNzk4MjcsIDc5ODQ2LCA3OTg1OSwgNzk4NzMsIDc5ODg5LCA3OTg5NiwgCi0gICAgNzk5MDMsIDc5OTEyLCA3OTkxOSwgNzk5MjUsIDc5OTMyLCA3OTkzNywgNzk5NDMsIDc5OTQ5LCA3OTk1NywgNzk5NjMsIAotICAgIDc5OTY4LCA3OTk3MywgNzk5ODksIDExNTE0LCA4MDAwMywgODAwMTAsIDgwMDE4LCA4MDAyNCwgODAwMjgsIDgwMDMxLCAKLSAgICA4MDAzNiwgODAwNDEsIDgwMDQ4LCA4MDA1MywgODAwNjIsIDgwMDY4LCA4MDA3MywgODAwNzksIDgwMDg1LCA4MDA5NCwgCi0gICAgODAxMDMsIDgwMTA4LCA4MDExMiwgODAxMjAsIDgwMTI5LCAxMjc3MiwgODAxMzgsIDgwMTQ0LCA4MDE1MiwgODAxNTgsIAotICAgIDgwMTY0LCA4MDE3MCwgODAxNzUsIDgwMTgyLCA4MDE4OCwgMTI3ODMsIDgwMTkzLCA4MDE5NiwgODAyMDEsIDM1MjIzLCAKLSAgICA4MDIxMSwgODAyMjAsIDgwMjI1LCA4MDIzMSwgODAyMzYsIDgwMjQ0LCA4MDI1MSwgODAyNjIsIDgwMjcyLCA4MDI3NywgCi0gICAgODAyODUsIDcwNDc0LCA4MDI5MCwgODAyOTYsIDgwMzAxLCA4MDMwOCwgODAzMTcsIDgwMzI1LCA4MDMyOSwgODAzMzUsIAotICAgIDgwMzQxLCA4MDM0OCwgODAzNTQsIDgwMzU4LCAxODUxOCwgMzExNCwgODAzNjMsIDgwMzY3LCA4MDM3MSwgODAzNzcsIAotICAgIDgwMzg2LCA4MDM5MiwgODAzOTksIDgwNDAzLCA4MDQyNCwgODA0NDYsIDgwNDYyLCA4MDQ3OSwgODA0OTgsIDgwNTA3LCAKLSAgICA4MDUxNywgODA1MjUsIDgwNTMyLCA4MDUzOSwgODA1NDUsIDI5MzQyLCA4MDU1OSwgODA1NjMsIDgwNTY5LCA4MDU3NywgCi0gICAgODA1ODksIDgwNTk1LCA4MDYwMywgODA2MTAsIDgwNjE1LCA4MDYyMCwgODA2MjQsIDgwNjMyLCA4MDYzOSwgODA2NDMsIAotICAgIDgwNjQ5LCA4MDY1NSwgODA2NjAsIDM3MzAsIDQ2NzIxLCA4MDY2NiwgODA2NzAsIDgwNjc0LCA4MDY3OCwgODA2ODMsIAotICAgIDgwNjg4LCA4MDY5MywgODA2OTksIDgwNzA1LCA4MDcxMSwgODA3MTgsIDgwNzI0LCA4MDczMSwgODA3MzcsIDgwNzQzLCAKLSAgICA4MDc0OCwgODA3NTQsIDgwNzU5LCA4MDc2MywgODA3NjgsIDgwNzcyLCA4MDc3NywgNDY3MzYsIDgwNzgxLCA4MDc4NiwgCi0gICAgODA3OTQsIDgwNzk4LCA4MDgwMywgODA4MTAsIDgwODE5LCA4MDgyNSwgODA4MzQsIDgwODM4LCA4MDg0NSwgODA4NDksIAotICAgIDgwODUyLCA4MDg1OSwgODA4NjUsIDgwODc0LCA4MDg4NCwgODA4ODksIDgwODkzLCA4MDkwMSwgODA5MTAsIDgwOTE0LCAKLSAgICA4MDkyMiwgODA5MjgsIDgwOTMzLCA4MDkzOCwgODA5NDQsIDgwOTUwLCA4MDk1NSwgODA5NTksIDgwOTY1LCA4MDk3MCwgCi0gICAgODA5NzQsIDgwOTc4LCA4MDk4MSwgODA5ODYsIDgwOTk0LCA4MTAwNCwgODEwMTAsIDgxMDE1LCA4MTAyNSwgNDQwMzEsIAotICAgIDgxMDMzLCA4MTA0NSwgODEwNDksIDgxMDU1LCA4MTA2NywgODEwNzgsIDgxMDg1LCA4MTA5MSwgODEwOTgsIDgxMTA1LCAKLSAgICA4MTExNywgODExMjQsIDgxMTMwLCAyMjc0NywgODExMzQsIDgxMTQyLCA4MTE0OCwgODExNTUsIDgxMTYxLCA4MTE2NywgCi0gICAgODExNzMsIDgxMTc4LCA4MTE4MywgODExODgsIDgxMTk3LCA4MTIwNSwgODEyMTYsIDczNTAsIDgxMjIxLCAxNzk2NywgCi0gICAgODEyMjcsIDgxMjMxLCA4MTIzNSwgODEyMzksIDgxMjQ3LCA4MTI1NiwgODEyNjAsIDgxMjY3LCA4MTI3NiwgODEyODQsIAotICAgIDgxMjk3LCA4MTMwMywgODA3NzMsIDMyMzkwLCA4MTMwOCwgODEzMTAsIDgxMzE1LCA4MTMyMCwgODEzMjUsIDgxMzMwLCAKLSAgICA4MTMzNSwgODEzNDAsIDgxMzQ1LCA4MTM1MCwgODEzNTUsIDgxMzYwLCA4MTM2NSwgODEzNzAsIDgxMzc1LCA4MTM4MCwgCi0gICAgODEzODYsIDgxMzkxLCA4MTM5NiwgODE0MDEsIDgxNDA2LCA4MTQxMSwgODE0MTYsIDgxNDIxLCA4MTQyNiwgODE0MzIsIAotICAgIDgxNDM4LCA4MTQ0NCwgODE0NDksIDgxNDU0LCA4MTQ2NiwgODE0NzEsIDE4OTYsIDYzLCA4MTQ3NiwgODE0ODEsIDM1MjI5LCAKLSAgICA4MTQ4NSwgMzUyMzQsIDM1MjM5LCAzNTI0NSwgMzUyNTAsIDgxNDg5LCAzNTI1NSwgMjM3ODUsIDgxNTExLCA4MTUxNSwgCi0gICAgODE1MTksIDgxNTI0LCA4MTUyOCwgMzUyNTksIDgxNTMyLCA4MTU0MCwgODE1NDcsIDM1MjY0LCA4MTU1MywgODE1NTYsIAotICAgIDgxNTYxLCA4MTU2NSwgODE1NzQsIDEwMjY2LCA4MTU4MiwgMzUyNjksIDIzNjQxLCA4MTU4NSwgODE1ODksIDgxNTk3LCAKLSAgICAxNDEyLCA4MTYwMiwgMzUyODAsIDgxNjA1LCA4MTYxMCwgMjc3NTAsIDI3NzYwLCAzODE4MiwgODE2MTUsIDgxNjIwLCAKLSAgICA4MTYyNSwgODE2MzAsIDgxNjM2LCA4MTY0MSwgODE2NTAsIDgxNjU1LCA4MTY2NCwgODE2NzIsIDgxNjc5LCA4MTY4NSwgCi0gICAgODE2OTAsIDgxNjk1LCA4MTcwMCwgODE3MTAsIDgxNzE5LCA4MTcyNywgODE3MzIsIDgxNzQwLCA4MTc0NCwgODE3NTIsIAotICAgIDgxNzU2LCA4MTc2MywgODE3NzEsIDM1MDg4LCA0MTE5MiwgODE3NzgsIDgxNzg0LCA4MTc4OSwgODE3OTQsIDEzMTU0LCAKLSAgICAzMDUyOSwgODE3OTksIDgxODA0LCA4MTgxMSwgODE4MTcsIDgxODIyLCA4MTgzMCwgODE4NDAsIDgxODUwLCA4MTg1NiwgCi0gICAgODE4NjEsIDgxODY3LCAxOTE2NSwgODE4NzQsIDM5MDUyLCA4MTg4NywgODE4OTIsIDgxODk4LCAzMzM4MSwgODE5MTEsIAotICAgIDgxOTE3LCA4MTkyMSwgODE5MzAsIDgxOTM5LCA4MTk0NiwgODE5NTIsIDgxOTYwLCA4MTk2OSwgODE5NzYsIDgxOTgyLCAKLSAgICA4MTk4NSwgODE5ODksIDgxOTkzLCAyNzg5MSwgODE5OTcsIDgyMDA0LCA4MjAxMCwgODIwMTgsIDgyMDIzLCA4MjAyNywgCi0gICAgMjU5MTEsIDgyMDMzLCA4MjAzNiwgODIwNDQsIDgyMDUxLCA4MjA1OSwgODIwNzIsIDgyMDg2LCA4MjA5MywgODIwOTksIAotICAgIDgyMTA2LCA4MjExMiwgMzUyOTQsIDgyMTE2LCA4MjEyMywgODIxMzEsIDgyMTM5LCA4MjE0NSwgMzUyOTksIDgyMTUzLCAKLSAgICA4MjE1OSwgODIxNjQsIDgyMTc0LCA4MjE4MCwgODIxODksIDMzMTgzLCAzNzYxNCwgODIxOTcsIDgyMjAyLCA4MjIwNywgCi0gICAgODIyMTEsIDgyMjE2LCA4MjIyMCwgODIyMjgsIDgyMjMzLCAxNjI5NiwgNDQwNDQsIDgyMjM3LCA4MjI0MiwgMzUzMDQsIAotICAgIDY3NTQ3LCA4MjI0NiwgODIyNTEsIDgyMjU1LCA4MjI2MiwgODIyNzEsIDgyMjc1LCA4MjI4MywgODIyODksIDgyMjk0LCAKLSAgICA4MjMwMCwgODIzMDUsIDgyMzEyLCA4MjMxOCwgODIzMjMsIDgyMzI4LCA4MjMzOSwgODIzNDgsIDgyMzYwLCA4MjM3NSwgCi0gICAgMzU1NzEsIDgyMzgxLCAxODA4NiwgMzUzMDgsIDgyMzg1LCA4MjM5MiwgODIzOTgsIDI2MDI3LCA4MjQwMiwgODI0MDksIAotICAgIDgyNDE4LCA4MjQyNSwgODI0MzQsIDgyNDQwLCA4MjQ0NSwgODI0NTMsIDgyNDU5LCAzNTMxOCwgODI0NjQsIDgyNDczLCAKLSAgICA4MTA3MywgODI0ODIsIDgyNDg5LCA4MjQ5NSwgODI1MDEsIDgyNTEwLCA4MjUyMCwgODI1MjgsIDgyNTM1LCA4MjUzOSwgCi0gICAgMzUzMjMsIDgyNTQyLCAzNTMyOSwgMzUzMzUsIDgyNTQ3LCA4MjU1NSwgODI1NjMsIDgyNTczLCA4MjU4MiwgODI1OTAsIAotICAgIDgyNTk3LCA4MjYwNywgMzUzNDAsIDgyNjExLCA4MjYxMywgODI2MTcsIDgyNjIyLCA4MjYyNiwgODI2MzAsIDgyNjM2LCAKLSAgICA4MjY0MSwgODI2NDUsIDgyNjU2LCA4MjY2MSwgODI2NjYsIDMxMTksIDgyNjcwLCA4MjY3NywgODI2ODEsIDgyNjkwLCAKLSAgICA4MjY5OCwgODI3MDUsIDgyNzEwLCA4MjcxNSwgNjc1OTgsIDgyNzE5LCA4MjcyMiwgODI3MjgsIDgyNzM2LCA4Mjc0MiwgCi0gICAgODI3NDYsIDgyNzUxLCA4Mjc1OCwgODI3NjMsIDgyNzY4LCA4Mjc3MiwgODI3NzgsIDgyNzgzLCAzNzY0NSwgODI3ODcsIAotICAgIDgyNzkwLCA4Mjc5NSwgODI3OTksIDgyODA0LCA4MjgxMSwgODI4MTYsIDgyODIwLCA0MjU4MCwgODI4MjgsIDI3NzY5LCAKLSAgICAyNzc3OCwgODI4MzQsIDgyODQwLCA4Mjg0NiwgODI4NTEsIDgyODU1LCA4Mjg1OCwgODI4NjgsIDgyODc3LCA4Mjg4MiwgCi0gICAgODI4ODgsIDgyODk1LCA4MjkwMSwgODI5MDUsIDgyOTEzLCA4MjkxOCwgMzc2NTEsIDc3OTUyLCA4MjkyMiwgODI5MzAsIAotICAgIDgyOTM2LCA4Mjk0MywgODI5NDgsIDgyOTUyLCA4Mjk1NywgNjMyNDIsIDgyOTYzLCA4Mjk2OSwgMzc2NTcsIDgyOTc0LCAKLSAgICA4Mjk3OSwgODI5ODMsIDgyOTg4LCA4Mjk5MywgODI5OTgsIDgzMDAyLCA4MzAwNywgODMwMTIsIDgzMDE4LCA4MzAyMywgCi0gICAgODMwMjgsIDgzMDM0LCA4MzA0MCwgODMwNDUsIDgzMDQ5LCA4MzA1NCwgODMwNTksIDgzMDY0LCA4MzA2OCwgMjYwMjYsIAotICAgIDgzMDczLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDEsIDgzMTA1LCA4MzExMCwgODMxMTUsIDgzMTIwLCAKLSAgICA4MzEyNCwgODMxMjksIDgzMTM0LCA4MzEzOSwgODMxNDQsIDQ2OTkxLCA4MzE0OCwgMzUzNDgsIDgzMTU2LCA4MzE2MCwgCi0gICAgODMxNjgsIDgzMTc2LCA4MzE4NywgODMxOTIsIDgzMTk2LCAyNDIxMSwgNzU0NzMsIDgzMjAxLCA4MzIwNywgODMyMTIsIAotICAgIDgzMjIyLCA4MzIyOSwgODMyMzQsIDgzMjQyLCA4MzI1MSwgODMyNTYsIDgzMjYwLCA4MzI2NSwgODMyNzMsIDgzMjgxLCAKLSAgICA4MzI4OCwgNzA3MzYsIDgzMjk0LCA4MzMwMiwgODMzMDksIDgzMzIwLCA4MzMyNiwgODMzMzIsIDM1MzU4LCA4MzMzNSwgCi0gICAgODMzNDIsIDgzMzUwLCA4MzM1NSwgNDQyNDcsIDgzMzU5LCA4MzM2NCwgODMzNzEsIDgzMzc2LCA5NDg0LCA4MzM4MCwgCi0gICAgODMzODgsIDgzMzk1LCA4MzQwMiwgODM0MTEsIDgzNDE4LCA4MzQyNCwgODM0MzgsIDYxOTQsIDgzNDQ2LCA4MzQ1MiwgCi0gICAgODM0NTYsIDgzNDU5LCA4MzQ2NywgODM0NzQsIDgzNDc5LCA4MzQ5MiwgODM0OTksIDgzNTA1LCA4MzUwOSwgODM1MTQsIAotICAgIDgzNTIxLCA4MzUyNiwgNjU4NTEsIDgzNTMxLCA4MzUzNCwgODM1NDMsIDgzNTUwLCA4MzU1NiwgODM1NjAsIDgzNTYzLCAKLSAgICA4MzU3MSwgODM1ODAsIDgzNTkwLCA4MzYwMCwgODM2MDksIDgzNjIwLCA4MzYyOCwgODM2MzksIDgzNjQ0LCA4MzY0OCwgCi0gICAgODM2NTMsIDgzNjU3LCAzODMxMywgODM2NjUsIDIzMDQyLCAzODMyMiwgODM2NzAsIDgzNjc1LCA4MzY4MCwgODM2ODUsIAotICAgIDgzNjkwLCA4MzY5NSwgODM3MDAsIDgzNzA0LCA4MzcwOSwgODM3MTQsIDgzNzE5LCA4MzcyNCwgODM3MjksIDgzNzM0LCAKLSAgICA4MzczOCwgODM3NDMsIDgzNzQ4LCA4Mzc1MiwgODM3NTYsIDgzNzYwLCA4Mzc2NCwgODM3NjksIDgzNzc0LCA4Mzc3OCwgCi0gICAgODM3ODMsIDgzNzg3LCA4Mzc5MSwgODM3OTYsIDgzODAxLCA4MzgwNiwgODM4MTEsIDgzODE1LCA4MzgyMCwgODM4MjUsIAotICAgIDgzODI5LCA4MzgzNCwgODM4MzksIDgzODQ0LCA4Mzg0OSwgODM4NTQsIDgzODU5LCA4Mzg2NCwgODM4NjksIDgzODc0LCAKLSAgICA4Mzg3OSwgODM4ODQsIDgzODg5LCA4Mzg5NCwgODM4OTksIDgzOTA0LCA4MzkwOSwgODM5MTQsIDgzOTE5LCA4MzkyNCwgCi0gICAgODM5MjksIDgzOTMzLCA4MzkzOCwgODM5NDMsIDgzOTQ4LCA4Mzk1MywgODM5NTgsIDgzOTYzLCA4Mzk2OCwgODM5NzMsIAotICAgIDgzOTc4LCA4Mzk4MywgODM5ODgsIDgzOTkyLCA4Mzk5NywgODQwMDEsIDg0MDA2LCA4NDAxMSwgODQwMTYsIDg0MDIxLCAKLSAgICA4NDAyNiwgODQwMzEsIDg0MDM2LCA4NDA0MSwgODQwNDYsIDg0MDUwLCA4NDA1NCwgODQwNTksIDg0MDY0LCA4NDA2OCwgCi0gICAgODQwNzMsIDg0MDc4LCA4NDA4MiwgODQwODcsIDg0MDkyLCA4NDA5NywgODQxMDIsIDg0MTA2LCA4NDExMSwgODQxMTYsIAotICAgIDg0MTIwLCA4NDEyNSwgODQxMjksIDg0MTMzLCA4NDEzNywgODQxNDEsIDg0MTQ2LCA4NDE1MCwgODQxNTQsIDg0MTU4LCAKLSAgICA4NDE2MiwgODQxNjYsIDg0MTcwLCA4NDE3NCwgODQxNzgsIDg0MTgyLCA4NDE4NywgODQxOTIsIDg0MTk3LCA4NDIwMiwgCi0gICAgODQyMDcsIDg0MjEyLCA4NDIxNywgODQyMjIsIDg0MjI3LCA4NDIzMiwgODQyMzYsIDg0MjQwLCA4NDI0NCwgODQyNDgsIAotICAgIDg0MjUyLCA4NDI1NiwgODQyNjEsIDg0MjY1LCA4NDI3MCwgODQyNzQsIDg0Mjc5LCA4NDI4NCwgODQyODgsIDg0MjkyLCAKLSAgICA4NDI5NywgODQzMDEsIDg0MzA1LCA4NDMwOSwgODQzMTMsIDg0MzE3LCA4NDMyMSwgODQzMjUsIDg0MzI5LCA4NDMzMywgCi0gICAgODQzMzcsIDg0MzQxLCA4NDM0NSwgODQzNDksIDg0MzUzLCA4NDM1OCwgODQzNjMsIDg0MzY3LCA4NDM3MSwgODQzNzUsIAotICAgIDg0Mzc5LCA4NDM4MywgODQzODcsIDg0MzkyLCA4NDM5NiwgODQ0MDAsIDg0NDA0LCA4NDQwOCwgODQ0MTIsIDg0NDE2LCAKLSAgICA4NDQyMSwgODQ0MjUsIDg0NDMwLCA4NDQzNCwgODQ0MzgsIDg0NDQyLCA4NDQ0NiwgODQ0NTAsIDg0NDU0LCA4NDQ1OCwgCi0gICAgODQ0NjIsIDg0NDY2LCA4NDQ3MCwgODQ0NzQsIDg0NDc5LCA4NDQ4MywgODQ0ODcsIDg0NDkxLCA4NDQ5NSwgODQ0OTksIAotICAgIDg0NTAzLCA4NDUwNywgODQ1MTEsIDg0NTE1LCA4NDUxOSwgODQ1MjMsIDg0NTI4LCA4NDUzMiwgODQ1MzYsIDg0NTQxLCAKLSAgICA4NDU0NiwgODQ1NTAsIDg0NTU0LCA4NDU1OCwgODQ1NjIsIDg0NTY2LCA4NDU3MCwgODQ1NzQsIDg0NTc4LCA4NDU4MywgCi0gICAgODQ1ODcsIDg0NTkyLCA4NDU5NiwgODQ2MDEsIDg0NjA1LCA4NDYxMCwgODQ2MTQsIDg0NjIwLCA4NDYyNSwgODQ2MjksIAotICAgIDg0NjM0LCA4NDYzOCwgODQ2NDMsIDg0NjQ3LCA4NDY1MiwgODQ2NTYsIDg0NjYxLCAxNTE5LCA4NDY2NSwgMjg3MywgMTc3NCwgCi0gICAgMTY5MiwgMjc3MDUsIDg0NjY5LCAyODgyLCA4NDY3MywgMTM4MSwgODQ2NzgsIDEzMjMsIDg0NjgyLCA4NDY4NiwgMjg5OSwgCi0gICAgODQ2OTAsIDg0Njk3LCA4NDcwNCwgODQ3MTgsIDI5MDMsIDc0NTIsIDg0NzI3LCA4NDczNSwgODQ3NDIsIDg0NzUzLCAKLSAgICA4NDc2MiwgODQ3NjksIDg0NzgxLCA4NDc5NCwgODQ4MDcsIDg0ODE4LCA4NDgyMywgODQ4MzAsIDg0ODQyLCA4NDg0NiwgCi0gICAgMjkwNywgMTI4NTAsIDg0ODU2LCA4NDg2MSwgODQ4NzAsIDg0ODgwLCA4NDg4NSwgMjkxMSwgODQ4OTMsIDg0ODk3LCAKLSAgICA4NDkwMiwgODQ5MDksIDg0OTE1LCA4NDkyMywgODQ5MzUsIDEzMjgsIDE0MjAxLCA4NDk0NSwgODQ5NDksIDg0OTU1LCAKLSAgICA4NDk2OSwgODQ5ODEsIDg0OTkzLCA4NTAwMywgODUwMTIsIDg1MDIxLCA4NTAzMCwgODUwMzgsIDg1MDQ5LCA4NTA1NywgCi0gICAgNDI5MiwgODUwNjcsIDg1MDc4LCA4NTA4NywgODUwOTMsIDg1MTA4LCA4NTExNSwgODUxMjEsIDg1MTI2LCAzODQ0NywgCi0gICAgODUxMzEsIDI5MzUsIDE0MjA1LCA4NTEzNSwgODUxNDIsIDk0MDksIDg1MTUxLCAyOTQwLCAzNDc5NiwgODUxNTcsIDY1NTczLCAKLSAgICA4NTE2NCwgODUxNzAsIDg1MTgxLCA4NTE4NywgODUxOTQsIDg1MjAwLCA4NTIwOCwgODUyMTUsIDg1MjIxLCA4NTIzMiwgCi0gICAgODUyNDIsIDg1MjUxLCA4NTI2MiwgODUyNzEsIDg1Mjc4LCA4NTI4NCwgODUyOTQsIDg1MzAyLCA4NTMwOCwgODUzMjMsIAotICAgIDg1MzI5LCA4NTMzNCwgODUzNDEsIDg1MzQ0LCA4NTM1MCwgODUzNTcsIDg1MzYzLCA4NTM3MSwgODUzODAsIDg1Mzg4LCAKLSAgICA4NTM5NCwgODU0MDMsIDQ2MjYxLCA4NTQxNywgODU0MjIsIDg1NDI4LCAxNjA3MiwgODU0MzMsIDg1NDQ2LCA4NTQ1OCwgCi0gICAgODU0NjcsIDg1NDc1LCA4NTQ4MiwgODU0ODYsIDg1NDkwLCA4NTQ5MywgODU1MDAsIDg1NTA3LCA4NTUxNSwgODU1MjMsIAotICAgIDg1NTMyLCA4NTU0MCwgMTU5ODMsIDg1NTQ4LCA4NTU1MywgODU1NTcsIDg1NTY5LCA4NTU3NiwgODU1ODUsIDg0MSwgCi0gICAgODU1OTUsIDg1NjA0LCA4NTYxNSwgMjk1NiwgODU2MTksIDg1NjIzLCA4NTYyOSwgODU2NDIsIDg1NjU0LCA4NTY2NCwgCi0gICAgODU2NzMsIDg1Njg1LCAyODQ0NiwgODU2OTYsIDg1NzA0LCA4NTcxMywgODU3MjQsIDg1NzM1LCA4NTc0NSwgODU3NTUsIAotICAgIDg1NzY0LCA4NTc3MiwgMTIzNjQsIDg1Nzc5LCA4NTc4MywgODU3ODYsIDg1NzkxLCA4NTc5NiwgODU4MDAsIDg1ODA2LCAKLSAgICAxMzMzLCA4NTgxMywgODU4MTcsIDEyOTMyLCA4NTgyMSwgODU4MzIsIDg1ODQxLCA4NTg0OSwgODU4NTgsIDg1ODY2LCAKLSAgICA4NTg4MiwgODU4OTMsIDg1OTAyLCA4NTkxMCwgODU5MjIsIDg1OTMzLCA4NTk0OSwgODU5NTksIDg1OTgwLCA4NTk5NCwgCi0gICAgODYwMDcsIDg2MDE1LCA4NjAyMiwgNzQ5OCwgODYwMzUsIDg2MDQwLCA4NjA0NiwgNjIwMywgODYwNTIsIDg2MDU1LCAKLSAgICA4NjA2MiwgODYwNzIsIDg1NTQsIDg2MDc5LCA4NjA4NCwgODYwODksIDg2MDk0LCA4NjEwMiwgODYxMTEsIDg2MTE5LCAKLSAgICA4NjEyNCwgODYxMzEsIDEwNDk2LCAxMDUwNSwgODYxMzcsIDg2MTQ4LCA4NjE1MywgODYxNTksIDI5NzIsIDI5NzcsIAotICAgIDg2MTY1LCAxMTg1NywgODYxNzEsIDg2MTc4LCA4NjE4NSwgODYxOTgsIDIyODEsIDg3LCA4NjIwMywgODYyMDgsIDg2MjE2LCAKLSAgICA4NjIyNiwgODYyMzUsIDg2MjQxLCA4NjI1MCwgODYyNTgsIDg2MjY4LCA4NjI3MiwgODYyNzYsIDg2MjgxLCA4NjI4NSwgCi0gICAgODYyOTcsIDMwMDAsIDg2MzA1LCA4NjMxMywgODYzMTgsIDg2MzI5LCA4NjM0MCwgODYzNTIsIDg2MzYzLCA4NjM3MywgCi0gICAgODYzODIsIDIzMDgzLCA4NjM4NywgODYzOTMsIDg2Mzk4LCA4NjQwOCwgODY0MTgsIDg2NDIzLCA4NjQyOSwgODY0MzMsIAotICAgIDg2NDM4LCA4NjQ0NywgMjMwOTUsIDg2NDUxLCA0Mzg0LCAyNCwgODY0NTYsIDg2NDY1LCA4NjQ3MiwgODY0NzksIDg2NDg1LCAKLSAgICA4NjQ5MSwgMTA0OSwgODY0OTYsIDg2NTAxLCA2NjEyOCwgODY1MDYsIDg2NTExLCA4NjUxNywgODY1MjMsIDg2NTMxLCAKLSAgICA4NjUzNiwgODY1NDQsIDg2NTUxLCA4NjU1NywgODY1NjIsIDQyNDY0LCA0NjE1NSwgODY1NjgsIDMwMDQsIDMyLCA4NjU3OCwgCi0gICAgODY1OTEsIDg2NTk2LCA4NjYwNCwgODY2MDksIDg2NjE1LCAzMDI2LCAzMDQ5NywgODY2MjAsIDg2NjI4LCA4NjYzNSwgCi0gICAgODY2NDAsIDg2NjQ5LCA2MzQ5MiwgNDAxOCwgNjcyMTgsIDg2NjU3LCA4NjY2MSwgMTcxOSwgMTgzMywgODY2NjYsIDg2NjcxLCAKLSAgICA4NjY3OCwgMTgzNywgMjgwLCA4NjY4NSwgODY2OTEsIDg2Njk2LCAzMDQ4LCA4NjcwMCwgODY3MDUsIDg2NzEyLCAxODQxLCAKLSAgICA4NjcxNywgODY3MjMsIDg2NzI4LCA4Njc0MCwgNjQzMCwgODY3NTAsIDg2NzU3LCAxODQ4LCA4Njc2MywgODY3NjgsIAotICAgIDg2Nzc1LCA4Njc4MiwgODY3OTcsIDg2ODA0LCA4NjgxNSwgODY4MjAsIDg2ODI4LCAyNjU3LCA4NjgzMiwgODY4NDQsIAotICAgIDg2ODQ5LCA4Njg1MywgODY4NTksIDMwMzEzLCAyMjg2LCA4Njg2MywgODY4NzQsIDg2ODc4LCA4Njg4MiwgODY4ODgsIAotICAgIDg2ODkyLCA4NjkwMSwgODY5MDUsIDg2OTE2LCA4NjkyMCwgMjMzMiwgMzQ2MTMsIDg2OTI0LCA4NjkzNCwgMzEzOSwgCi0gICAgODY5NDIsIDk5MDksIDg2OTUxLCA4Njk1NiwgODY5NjAsIDg2OTY5LCA4Njk3NiwgODY5ODIsIDMxMDksIDE2MTM2LCAKLSAgICA4Njk4NiwgODY5OTksIDg3MDE3LCA4NzAyMiwgODcwMzAsIDg3MDM4LCA4NzA0OCwgMTA3NjgsIDE0MzE4LCA4NzA2MCwgCi0gICAgODcwNzMsIDg3MDgwLCA4NzA5NCwgODcxMDEsIDg3MTE3LCA4NzEyNCwgODcxMzAsIDIzMTI3LCAxMzU1NiwgODcxMzcsIAotICAgIDg3MTQ0LCA4NzE1NCwgODcxNjMsIDQ2OTkwLCA4NzE3NSwgNDcxMjUsIDg3MTgzLCA4NzE4NiwgODcxOTIsIDg3MTk4LCAKLSAgICA4NzIwNCwgODcyMTAsIDg3MjE2LCA4NzIyMywgODcyMzAsIDg3MjM2LCA4NzI0MiwgODcyNDgsIDg3MjU0LCA4NzI2MCwgCi0gICAgODcyNjYsIDg3MjcyLCA4NzI3OCwgODcyODQsIDg3MjkwLCA4NzI5NiwgODczMDIsIDg3MzA4LCA4NzMxNCwgODczMjAsIAotICAgIDg3MzI2LCA4NzMzMiwgODczMzgsIDg3MzQ0LCA4NzM1MCwgODczNTYsIDg3MzYyLCA4NzM2OCwgODczNzQsIDg3MzgwLCAKLSAgICA4NzM4NiwgODczOTIsIDg3Mzk4LCA4NzQwNCwgODc0MTAsIDg3NDE2LCA4NzQyMiwgODc0MjgsIDg3NDM0LCA4NzQ0MCwgCi0gICAgODc0NDYsIDg3NDUyLCA4NzQ1OCwgODc0NjQsIDg3NDcwLCA4NzQ3NiwgODc0ODIsIDg3NDg4LCA4NzQ5NCwgODc1MDAsIAotICAgIDg3NTA2LCA4NzUxMiwgODc1MTgsIDg3NTI0LCA4NzUzMCwgODc1MzYsIDg3NTQzLCA4NzU0OSwgODc1NTYsIDg3NTYzLCAKLSAgICA4NzU2OSwgODc1NzYsIDg3NTgzLCA4NzU4OSwgODc1OTUsIDg3NjAxLCA4NzYwNywgODc2MTMsIDg3NjE5LCA4NzYyNSwgCi0gICAgODc2MzEsIDg3NjM3LCA4NzY0MywgODc2NDksIDg3NjU1LCA4NzY2MSwgODc2NjcsIDg3NjczLCAzMTIzLCA5ODgyLCAKLSAgICA4NzY3OSwgODc2ODUsIDg3NjkzLCA4NzY5NywgODQ5MDUsIDMxMjcsIDg3NzAxLCAyMjg2MCwgMTMxODksIDM5NjgsIAotICAgIDg3NzA1LCAzMTMzLCA4NzcwOSwgODc3MTksIDg3NzI1LCA4NzczMSwgODc3MzcsIDg3NzQzLCA4Nzc0OSwgODc3NTUsIAotICAgIDg3NzYxLCA4Nzc2NywgODc3NzMsIDg3Nzc5LCA4Nzc4NSwgODc3OTEsIDg3Nzk3LCA4NzgwMywgODc4MDksIDg3ODE1LCAKLSAgICA4NzgyMSwgODc4MjcsIDg3ODMzLCA4NzgzOSwgODc4NDUsIDg3ODUxLCA4Nzg1NywgODc4NjMsIDg3ODY5LCA4Nzg3NiwgCi0gICAgODc4ODMsIDg3ODg5LCA4Nzg5NSwgODc5MDEsIDg3OTA3LCA4NzkxMywgODc5MTksIDEzMzgsIDg3OTI1LCA4NzkzMCwgCi0gICAgODc5MzUsIDg3OTQwLCA4Nzk0NSwgODc5NTAsIDg3OTU1LCA4Nzk2MCwgODc5NjUsIDg3OTY5LCA4Nzk3MywgODc5NzcsIAotICAgIDg3OTgxLCA4Nzk4NSwgODc5ODksIDg3OTkzLCA4Nzk5NywgODgwMDEsIDg4MDA3LCA4ODAxMywgODgwMTksIDg4MDI1LCAKLSAgICA4ODAyOSwgODgwMzMsIDg4MDM3LCA4ODA0MSwgODgwNDUsIDg4MDQ5LCA4ODA1MywgODgwNTcsIDg4MDYxLCA4ODA2NiwgCi0gICAgODgwNzEsIDg4MDc2LCA4ODA4MSwgODgwODYsIDg4MDkxLCA4ODA5NiwgODgxMDEsIDg4MTA2LCA4ODExMSwgODgxMTYsIAotICAgIDg4MTIxLCA4ODEyNiwgODgxMzEsIDg4MTM2LCA4ODE0MSwgODgxNDYsIDg4MTUxLCA4ODE1NiwgODgxNjEsIDg4MTY2LCAKLSAgICA4ODE3MSwgODgxNzYsIDg4MTgxLCA4ODE4NiwgODgxOTEsIDg4MTk2LCA4ODIwMSwgODgyMDYsIDg4MjExLCA4ODIxNiwgCi0gICAgODgyMjEsIDg4MjI2LCA4ODIzMSwgODgyMzYsIDg4MjQxLCA4ODI0NiwgODgyNTEsIDg4MjU2LCA4ODI2MSwgODgyNjYsIAotICAgIDg4MjcxLCA4ODI3NiwgODgyODEsIDg4Mjg2LCA4ODI5MSwgODgyOTYsIDg4MzAxLCA4ODMwNiwgODgzMTEsIDg4MzE2LCAKLSAgICA4ODMyMSwgODgzMjYsIDg4MzMxLCA4ODMzNiwgODgzNDEsIDg4MzQ2LCA4ODM1MSwgODgzNTYsIDg4MzYxLCA4ODM2NiwgCi0gICAgODgzNzEsIDg4Mzc2LCA4ODM4MSwgODgzODYsIDg4MzkxLCA4ODM5NiwgODg0MDEsIDg4NDA2LCA4ODQxMSwgODg0MTYsIAotICAgIDg4NDIxLCA4ODQyNiwgODg0MzEsIDg4NDM2LCA4ODQ0MSwgODg0NDYsIDg4NDUxLCA4ODQ1NiwgODg0NjEsIDg4NDY2LCAKLSAgICA4ODQ3MSwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODUwMSwgODg1MDYsIDg4NTExLCA4ODUxNiwgCi0gICAgODg1MjEsIDg4NTI2LCA4ODUzMSwgODg1MzYsIDg4NTQxLCA4ODU0NiwgODg1NTEsIDg4NTU2LCA4ODU2MSwgODg1NjYsIAotICAgIDg4NTcxLCA4ODU3NiwgODg1ODEsIDg4NTg2LCA4ODU5MSwgODg1OTYsIDg4NjAxLCA4ODYwNiwgODg2MTEsIDg4NjE2LCAKLSAgICA4ODYyMSwgODg2MjYsIDg4NjMxLCA4ODYzNiwgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgCi0gICAgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODYsIDg4NjkxLCA4ODY5NiwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIAotICAgIDg4NzIxLCA4ODcyNiwgODg3MzEsIDg4NzM2LCA4ODc0MSwgODg3NDYsIDg4NzUxLCA4ODc1NiwgODg3NjEsIDg4NzY2LCAKLSAgICA4ODc3MSwgODg3NzYsIDg4NzgxLCA4ODc4NiwgODg3OTEsIDg4Nzk2LCA4ODgwMSwgODg4MDYsIDg4ODExLCA4ODgxNiwgCi0gICAgODg4MjEsIDg4ODI2LCA4ODgzMSwgODg4MzYsIDg4ODQxLCA4ODg0NiwgODg4NTEsIDg4ODU2LCA4ODg2MSwgODg4NjYsIAotICAgIDg4ODcxLCA4ODg3NiwgODg4ODEsIDg4ODg2LCA4ODg5MSwgODg4OTYsIDg4OTAxLCA4ODkwNiwgODg5MTEsIDg4OTE2LCAKLSAgICA4ODkyMSwgODg5MjYsIDg4OTMxLCA4ODkzNiwgODg5NDEsIDg4OTQ2LCA4ODk1MSwgODg5NTcsIDg4OTYyLCA4ODk2NywgCi0gICAgODg5NzIsIDg4OTc3LCA4ODk4MiwgODg5ODcsIDg4OTkyLCA4ODk5OCwgODkwMDMsIDg5MDA4LCA4OTAxMywgODkwMTgsIAotICAgIDg5MDIzLCA4OTAyOCwgODkwMzMsIDg5MDM4LCA4OTA0MywgODkwNDgsIDg5MDUzLCA4OTA1OCwgODkwNjMsIDg5MDY4LCAKLSAgICA4OTA3MywgODkwNzgsIDg5MDgzLCA4OTA4OCwgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEzLCA4OTExOCwgCi0gICAgODkxMjMsIDg5MTI4LCA4OTEzMywgODkxMzgsIDg5MTQzLCA4OTE0OCwgODkxNTMsIDg5MTU4LCA4OTE2NywgODkxNzIsIAotICAgIDg5MTgxLCA4OTE4NiwgODkxOTUsIDg5MjAwLCA4OTIwOSwgODkyMTQsIDg5MjIzLCA4OTIyOCwgODkyMzcsIDg5MjQyLCAKLSAgICA4OTI1MSwgODkyNTYsIDg5MjY1LCA4OTI3MCwgODkyNzUsIDg5Mjg0LCA4OTI4OCwgODkyOTcsIDg5MzAyLCA4OTMxMSwgCi0gICAgODkzMTYsIDg5MzI1LCA4OTMzMCwgODkzMzksIDg5MzQ0LCA4OTM1MywgODkzNTgsIDg5MzY3LCA4OTM3MiwgODkzODEsIAotICAgIDg5Mzg2LCA4OTM5NSwgODk0MDAsIDg5NDA5LCA4OTQxNCwgODk0MjMsIDg5NDI4LCA4OTQzMywgODk0MzgsIDg5NDQzLCAKLSAgICA4OTQ0OCwgODk0NTMsIDg5NDU4LCA4OTQ2MiwgODk0NjcsIDg5NDcyLCA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgCi0gICAgODk0OTgsIDg5NTAzLCA4OTUwOCwgODk1MTMsIDg5NTE5LCA4OTUyMywgODk1MjgsIDg5NTM0LCA4OTUzOSwgODk1NDQsIAotICAgIDg5NTQ5LCA4OTU1NCwgODk1NTksIDg5NTY0LCA4OTU2OSwgODk1NzQsIDg5NTc5LCA4OTU4NCwgODk1OTAsIDg5NTk1LCAKLSAgICA4OTYwMCwgODk2MDUsIDg5NjExLCA4OTYxNiwgODk2MjEsIDg5NjI2LCA4OTYzMSwgODk2MzcsIDg5NjQyLCA4OTY0NywgCi0gICAgODk2NTIsIDg5NjU3LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OCwgODk2ODMsIDg5Njg4LCA4OTY5MywgODk2OTgsIAotICAgIDg5NzAzLCA4OTcwOCwgODk3MTMsIDg5NzE4LCA4OTcyMywgODk3MjgsIDg5NzMzLCA4OTczOCwgODk3NDMsIDg5NzQ4LCAKLSAgICA4OTc1MywgODk3NTgsIDg5NzYzLCA4OTc2OCwgODk3NzMsIDg5Nzc4LCA4OTc4MywgODk3ODksIDg5Nzk1LCA4OTgwMSwgCi0gICAgODk4MDYsIDg5ODExLCA4OTgxNiwgODk4MjEsIDg5ODI3LCA4OTgzMywgODk4MzksIDg5ODQ0LCA4OTg0OSwgODk4NTQsIAotICAgIDg5ODYwLCA4OTg2NSwgODk4NzAsIDg5ODc1LCA4OTg4MCwgODk4ODUsIDg5ODkwLCA4OTg5NSwgODk5MDAsIDg5OTA1LCAKLSAgICA4OTkxMCwgODk5MTUsIDg5OTIwLCA4OTkyNSwgODk5MzAsIDg5OTM1LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgCi0gICAgODk5NjMsIDg5OTY4LCA4OTk3MywgODk5NzgsIDg5OTg0LCA4OTk5MCwgODk5OTYsIDkwMDAxLCA5MDAwNiwgOTAwMTEsIAotICAgIDkwMDE2LCA5MDAyMSwgOTAwMjYsIDkwMDMxLCA5MDAzNiwgOTAwNDEsIDE3NTM5LCA5MDA0NiwgOTAwNTIsIDkwMDU3LCAKLSAgICA5MDA2MiwgOTAwNjcsIDkwMDcyLCA5MDA3NywgOTAwODMsIDkwMDg4LCA5MDA5MywgOTAwOTgsIDkwMTAzLCA5MDEwOCwgCi0gICAgOTAxMTQsIDkwMTE5LCA5MDEyNCwgOTAxMjksIDkwMTM0LCA5MDEzOSwgOTAxNDQsIDkwMTQ5LCA5MDE1NCwgOTAxNTksIAotICAgIDkwMTY0LCA5MDE2OSwgOTAxNzQsIDkwMTc5LCA5MDE4NCwgOTAxODksIDkwMTk0LCA5MDE5OSwgOTAyMDQsIDkwMjA5LCAKLSAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIzMCwgOTAyMzUsIDkwMjQwLCA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgCi0gICAgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIAotICAgIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCAKLSAgICA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCA5MDM5NSwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgCi0gICAgOTA0MTUsIDkwNDIwLCA5MDQyNSwgOTA0MzAsIDkwNDM2LCA5MDQ0MSwgOTA0NDYsIDkwNDUxLCA5MDQ1NiwgOTA0NjEsIAotICAgIDkwNDY2LCA5MDQ3MSwgOTA0NzYsIDkwNDgxLCA5MDQ4NiwgOTA0OTEsIDkwNDk3LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKLSAgICA5MDUxOCwgOTA1MjMsIDkwNTI4LCA5MDUzMywgOTA1MzgsIDkwNTQ0LCA5MDU0OSwgOTA1NTQsIDkwNTYwLCA5MDU2NSwgCi0gICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkxLCA5MDU5NywgOTA2MDIsIDkwNjA3LCAxMzIxMSwgOTA2MTIsIAotICAgIDkwNjE3LCA5MDYyMiwgOTA2MjcsIDkwNjMyLCA5MDYzNywgOTA2NDIsIDkwNjQ3LCA5MDY1MiwgOTA2NTcsIDkwNjYyLCAKLSAgICA5MDY2NywgOTA2NzIsIDkwNjc3LCA5MDY4MiwgOTA2ODcsIDkwNjkyLCA5MDY5NywgOTA3MDIsIDkwNzA3LCA5MDcxMiwgCi0gICAgOTA3MTcsIDkwNzIyLCA5MDcyNywgOTA3MzIsIDkwNzM3LCA5MDc0MiwgOTA3NDcsIDkwNzUyLCA5MDc1NywgOTA3NjIsIAotICAgIDkwNzY3LCA5MDc3MiwgOTA3NzcsIDkwNzgyLCA5MDc4NywgOTA3OTIsIDkwNzk3LCA5MDgwMiwgOTA4MDcsIDkwODEyLCAKLSAgICA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MiwgCi0gICAgOTA4NjcsIDkwODcyLCA5MDg3NywgOTA4ODIsIDkwODg3LCA5MDg5MiwgOTA4OTcsIDkwOTAyLCA5MDkwNywgOTA5MTIsIAotICAgIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzOCwgOTA5NDMsIDkwOTQ4LCA5MDk1MywgOTA5NTgsIDkwOTY0LCAKLSAgICA5MDk2OSwgOTA5NzQsIDkwOTc5LCA5MDk4NCwgOTA5ODksIDkwOTk0LCA5MTAwMCwgOTEwMDUsIDkxMDEwLCA5MTAxNSwgCi0gICAgOTEwMjAsIDkxMDI1LCA5MTAzMSwgOTEwMzYsIDkxMDQxLCA5MTA0NiwgOTEwNTEsIDkxMDU2LCA5MTA2MiwgOTEwNjcsIAotICAgIDkxMDcyLCA5MTA3NywgOTEwODIsIDkxMDg3LCA5MTA5MywgOTEwOTksIDkxMTA0LCA5MTEwOSwgOTExMTQsIDkxMTIwLCAKLSAgICA5MTEyNiwgOTExMzIsIDkxMTM3LCA5MTE0MiwgOTExNDgsIDkxMTU0LCA5MTE1OSwgOTExNjUsIDkxMTcxLCA5MTE3NywgCi0gICAgOTExODIsIDkxMTg3LCA5MTE5MywgOTExOTgsIDkxMjA0LCA5MTIwOSwgOTEyMTUsIDkxMjI0LCA5MTIyOSwgOTEyMzQsIAotICAgIDkxMjQwLCA5MTI0NSwgOTEyNTEsIDkxMjU2LCA5MTI2MSwgOTEyNjYsIDkxMjcxLCA5MTI3NiwgOTEyODEsIDkxMjg2LCAKLSAgICA5MTI5MSwgOTEyOTYsIDkxMzAxLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCA5MTMyMSwgOTEzMjYsIDkxMzMxLCA5MTMzNiwgCi0gICAgOTEzNDEsIDkxMzQ2LCA5MTM1MSwgOTEzNTYsIDkxMzYxLCA5MTM2NiwgOTEzNzEsIDkxMzc2LCA5MTM4MSwgOTEzODYsIAotICAgIDkxMzkxLCA5MTM5NiwgOTE0MDEsIDkxNDA2LCA5MTQxMiwgOTE0MTgsIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM5LCAKLSAgICA5MTQ0NCwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjQsIDkxNDY5LCA5MTQ3NCwgOTE0NzksIDkxNDg0LCA5MTQ4OSwgCi0gICAgOTE0OTQsIDkxNDk5LCA5MTUwNCwgOTE1MDksIDkxNTE0LCA5MTUxOSwgOTE1MjQsIDkxNTMwLCA5MTUzNiwgOTE1NDEsIAotICAgIDkxNTQ3LCA5MTU1MiwgOTE1NTcsIDkxNTYzLCA5MTU2OCwgOTE1NzQsIDkxNTc5LCA5MTU4NSwgOTE1OTAsIDkxNTk2LCAKLSAgICA5MTYwMSwgOTE2MDcsIDkxNjEyLCA5MTYxNywgOTE2MjIsIDkxNjI3LCA5MTYzMiwgOTE2MzcsIDkxNjQyLCA4NzcyMCwgCi0gICAgODc3MjYsIDg3NzMyLCA4NzczOCwgOTE2NDgsIDg3NzQ0LCA4Nzc1MCwgOTE2NTQsIDg3NzU2LCA4Nzc2MiwgODc3NjgsIAotICAgIDg3Nzc0LCA4Nzc4MCwgODc3ODYsIDg3NzkyLCA4Nzc5OCwgODc4MDQsIDkxNjYwLCA4NzgxMCwgODc4MTYsIDg3ODIyLCAKLSAgICA5MTY2NiwgODc4MjgsIDg3ODM0LCA4Nzg0MCwgODc4NDYsIDkxNjcyLCA4Nzg1MiwgODc4NTgsIDg3ODY0LCA4Nzg4NCwgCi0gICAgOTE2NzgsIDkxNjg0LCA4Nzg5MCwgOTE2OTAsIDg3ODk2LCA4NzkwMiwgODc5MDgsIDg3OTE0LCA4NzkyMCwgMzE1MCwgCi0gICAgMzE1NSwgOTE2OTYsIDkxNzAxLCA5MTcwNCwgOTE3MTAsIDkxNzE2LCA5MTcyMywgOTE3MjgsIDkxNzMzLCAyMzM3LCAKKyAgICAwLCAwLCA2LCAxMCwgMTQsIDE5LCAyNywgMzQsIDQ0LCA0OSwgNTUsIDY0LCA2NiwgNjksIDgxLCA4OSwgMTAyLCAxMDgsIAorICAgIDExMywgMTE5LCAxMjQsIDEzMiwgMTQxLCAxNDYsIDE1NywgMTYyLCAxNjcsIDE3MCwgMTc0LCAxODMsIDE4OSwgMTk1LCAKKyAgICAyMDAsIDIwNywgMjE1LCAyMjMsIDIyNCwgMjI3LCAyMzUsIDI0NCwgMTcxLCAyNTAsIDI1NiwgMjYzLCAyNzMsIDI4MCwgCisgICAgMjg1LCAyODgsIDI5MywgMjk5LCAzMDMsIDMwNiwgMzExLCAzMTcsIDMyMywgMzI4LCAzMzMsIDMzOSwgMzQ1LCAzNTQsIAorICAgIDM2MSwgMzY4LCAzNzcsIDM3OSwgMzg0LCAzODksIDM5NywgMzk5LCA0MDcsIDQwOCwgNDE2LCA0MTgsIDMzNywgNDI1LCAKKyAgICA0MjgsIDQzMCwgNDM2LCA0MzgsIDQ0NSwgNDUwLCA0NTcsIDQ2MiwgNDY3LCA0NzQsIDQ4MiwgNDg2LCA0OTIsIDQ5NywgCisgICAgNTA3LCA1MTIsIDUxOSwgNTIyLCA1MzAsIDUzOSwgNTQzLCA1NTMsIDU2MCwgNTY3LCA1NzQsIDU4MywgNTkwLCA1OTMsIAorICAgIDU5OSwgNjAzLCA2MDcsIDYxNSwgNjE5LCA2MzIsIDYzNiwgNjM3LCA2NDQsIDY1MywgNjYyLCA2NjUsIDY3MSwgNjc1LCAKKyAgICA2NzcsIDY4NywgNjkyLCA3MDAsIDcwNCwgNzA3LCA3MTUsIDcxOSwgNzI0LCA3MjksIDczNSwgNzQwLCA3NDQsIDc0NywgCisgICAgNzU1LCA3NjQsIDc3MywgNzgxLCA3ODksIDc5MywgNzk5LCA4MDcsIDgxNCwgODE3LCA4MjcsIDgzMSwgODQyLCA4NTEsIAorICAgIDg1OCwgODYxLCA4NjgsIDg3MCwgODc2LCA4ODAsIDg4NSwgODg5LCA4OTUsIDkwNCwgOTA5LCA5MTMsIDU4OCwgOTE2LCAKKyAgICA5MjEsIDkzMCwgOTM4LCA5NDMsIDk0NiwgNjc0LCA5NTEsIDk1NiwgOTU5LCA5NjUsIDk2OSwgOTczLCA5NzksIDk4NiwgCisgICAgOTk1LCA5OTgsIDEwMDUsIDEwMTQsIDEwMjcsIDEwMzEsIDEwMzksIDEwNDIsIDEwNDgsIDEwNTQsIDEwNjMsIDEwNzAsIAorICAgIDEwNzMsIDEwODEsIDEwODgsIDEwOTUsIDEwOTksIDExMDIsIDExMTAsIDExMTQsIDExMjMsIDExMjksIDExMzMsIDExMzYsIAorICAgIDExNDAsIDI2LCAxMTQ3LCAxMTU2LCAxMTYxLCAxMTY2LCAxMTcyLCAxMTc3LCAxMTgyLCAxMTg3LCAxMTkxLCAxMTk2LCAKKyAgICAxMjAyLCAxMjA3LCAxMjEyLCAxMjE2LCAxMjIyLCAxMjI3LCAxMjMyLCAxMjM3LCAxMjQxLCAxMjQ2LCAxMjUxLCAxMjU2LCAKKyAgICAxMjYyLCAxMjY4LCAxMjc0LCAxMjc5LCAxMjgzLCAxMjg4LCAxMjkzLCAxMjk4LCAxMzAyLCAxMzA3LCAxMzEyLCAxMzE3LCAKKyAgICAxMzIyLCAxMTU3LCAxMTYyLCAxMTY3LCAxMTczLCAxMTc4LCAxMzI2LCAxMTg4LCAxMzMyLCAxMzM3LCAxMzQyLCAxMzQ5LCAKKyAgICAxMzUzLCAxMzU2LCAxMzY1LCAxMTkyLCAxMzY5LCAxMTk3LCAxMjAzLCAxMjA4LCAxMzczLCAxMzc4LCAxMzgzLCAxMzg3LCAKKyAgICAxMzkxLCAxMzk3LCAxNDAxLCAxMjEzLCAxNDA0LCAxNDA2LCAxMjIzLCAxNDExLCAxNDE1LCAxMjI4LCAxNDIxLCAxMjMzLCAKKyAgICAxNDI1LCAxNDI5LCAxMjM4LCAxNDMzLCAxNDM4LCAxNDQyLCAxNDQ1LCAxNDQ5LCAxMjQyLCAxMjQ3LCAxNDU0LCAxNDYwLCAKKyAgICAxMjUyLCAxNDcyLCAxNDc4LCAxNDg0LCAxNDkwLCAxMjU3LCAxMjY5LCAxMjc1LCAxNDk0LCAxNDk4LCAxNTAyLCAxNTA1LCAKKyAgICAxMjgwLCAxNTA5LCAxNTExLCAxNTE2LCAxNTIxLCAxNTI3LCAxNTMyLCAxNTM3LCAxNTQxLCAxNTQ2LCAxNTUxLCAxNTU2LCAKKyAgICAxNTYxLCAxNTY3LCAxNTcyLCAxNTc3LCAxNTgzLCAxNTg5LCAxNTk0LCAxNTk4LCAxNjAzLCAxNjA4LCAxNjEzLCAxNjE4LCAKKyAgICAxNjIzLCAxNjI3LCAxNjM1LCAxNjQwLCAxNjQ0LCAxNjQ5LCAxNjU0LCAxNjU5LCAxNjY0LCAxNjY4LCAxNjcxLCAxNjc4LCAKKyAgICAxNjgzLCAxNjg4LCAxNjkzLCAxNjk4LCAxNzA0LCAxNzA5LCAxNzEzLCAxMjg0LCAxNzE2LCAxNzIxLCAxNzI2LCAxMjg5LCAKKyAgICAxNzMwLCAxNzM0LCAxNzQxLCAxMjk0LCAxNzQ4LCAxMjk5LCAxNzUyLCAxNzU0LCAxNzU5LCAxNzY1LCAxMzAzLCAxNzcwLCAKKyAgICAxNzc5LCAxMzA4LCAxNzg0LCAxNzkwLCAxNzk1LCAxMzEzLCAxODAwLCAxODA1LCAxODA5LCAxODEyLCAxODE3LCAxODIxLCAKKyAgICAxODI1LCAxODI5LCAxODMyLCAxODM2LCAxMzE4LCAxODQxLCAxMzIzLCAxODQ1LCAxODQ3LCAxODUzLCAxODU5LCAxODY1LCAKKyAgICAxODcxLCAxODc3LCAxODgzLCAxODg5LCAxODk1LCAxOTAwLCAxOTA2LCAxOTEyLCAxOTE4LCAxOTI0LCAxOTMwLCAxOTM2LCAKKyAgICAxOTQyLCAxOTQ4LCAxOTU0LCAxOTU5LCAxOTY0LCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg0LCAxOTg5LCAxOTk0LCAxOTk5LCAKKyAgICAyMDA0LCAyMDEwLCAyMDE1LCAyMDIxLCAyMDI2LCAyMDMyLCAyMDM4LCAyMDQzLCAyMDQ5LCAyMDU1LCAyMDYxLCAyMDY3LCAKKyAgICAyMDcyLCAyMDc3LCAyMDc5LCAyMDgwLCAyMDg0LCAyMDg4LCAyMDkzLCAyMDk3LCAyMTAxLCAyMTA1LCAyMTEwLCAyMTE0LCAKKyAgICAyMTE3LCAyMTIyLCAyMTI2LCAyMTMxLCAyMTM1LCAyMTM5LCAyMTQ0LCAyMTQ4LCAyMTUxLCAyMTU1LCAyMTYxLCAyMTc1LCAKKyAgICAyMTc5LCAyMTgzLCAyMTg3LCAyMTkwLCAyMTk1LCAyMTk5LCAyMjAzLCAyMjA2LCAyMjEwLCAyMjE1LCAyMjIwLCAyMjI1LCAKKyAgICAyMjMwLCAyMjM0LCAyMjM4LCAyMjQyLCAyMjQ2LCAyMjUxLCAyMjU1LCAyMjYwLCAyMjY0LCAyMjY5LCAyMjc1LCAyMjgyLCAKKyAgICAyMjg4LCAyMjkzLCAyMjk4LCAyMzAzLCAyMzA5LCAyMzE0LCAyMzIwLCAyMzI1LCAyMzI4LCAyMzMwLCAxMTc0LCAyMzM0LCAKKyAgICAyMzQxLCAyMzQ5LCAyMzU5LCAyMzY4LCAyMzgyLCAyMzg2LCAyMzkwLCAyMzk1LCAyNDA4LCAyNDE2LCAyNDIwLCAyNDI1LCAKKyAgICAyNDI5LCAyNDMyLCAyNDM2LCAyNDQwLCAyNDQ1LCAyNDUwLCAyNDU1LCAyNDU5LCAyNDYyLCAyNDY2LCAyNDczLCAyNDgwLCAKKyAgICAyNDg2LCAyNDkxLCAyNDk2LCAyNTAyLCAyNTA4LCAyNTEzLCAyNTE2LCAxNzU2LCAyNTE4LCAyNTI0LCAyNTI4LCAyNTMzLCAKKyAgICAyNTM3LCAyNTQxLCAxNjc0LCAxNzY3LCAyNTQ2LCAyNTUwLCAyNTUzLCAyNTU4LCAyNTYzLCAyNTY4LCAyNTczLCAyNTc3LCAKKyAgICAyNTg0LCAyNTg5LCAyNTkyLCAyNTk2LCAyNjAzLCAyNjA5LCAyNjEzLCAyNjE3LCAyNjIxLCAyNjI2LCAyNjMzLCAyNjM4LCAKKyAgICAyNjQzLCAyNjUwLCAyNjU2LCAyNjYyLCAyNjY4LCAyNjgyLCAyNjk5LCAyNzE0LCAyNzI5LCAyNzM4LCAyNzQzLCAyNzQ3LCAKKyAgICAyNzUyLCAyNzU3LCAyNzYxLCAyNzczLCAyNzgwLCAyNzg2LCAyMjc4LCAyNzkyLCAyNzk5LCAyODA1LCAyODA5LCAyODEyLCAKKyAgICAyODE5LCAyODI1LCAyODMwLCAyODM0LCAyODM5LCAyODQzLCAyODQ3LCAyMTAyLCAyODUxLCAyODU2LCAyODYxLCAyODY1LCAKKyAgICAyODcwLCAyODc4LCAyODgyLCAyODg3LCAyODkxLCAyODk1LCAyODk5LCAyOTA0LCAyOTA5LCAyOTE0LCAyOTE4LCAyOTIzLCAKKyAgICAyOTI4LCAyOTMyLCAyOTM3LCAyOTQxLCAyOTQ0LCAyOTQ4LCAyOTUyLCAyOTYwLCAyOTY1LCAyOTY5LCAyOTczLCAyOTc5LCAKKyAgICAyOTg4LCAyOTkyLCAyOTk2LCAzMDAyLCAzMDA3LCAzMDE0LCAzMDE4LCAzMDI4LCAzMDMyLCAzMDM2LCAzMDQxLCAzMDQ1LCAKKyAgICAzMDUwLCAzMDU2LCAzMDYxLCAzMDY1LCAzMDY5LCAzMDczLCAyNDc2LCAzMDgxLCAzMDg2LCAzMDkyLCAzMDk3LCAzMTAxLCAKKyAgICAzMTA2LCAzMTExLCAzMTE1LCAzMTIxLCAzMTI2LCAyMTA2LCAzMTMyLCAzMTM4LCAzMTQzLCAzMTQ4LCAzMTUzLCAzMTU4LCAKKyAgICAzMTYzLCAzMTY4LCAzMTczLCAzMTc4LCAzMTgzLCAzMTg5LCAzMTk0LCAxMTg5LCAxMDEsIDMyMDAsIDMyMDQsIDMyMDgsIAorICAgIDMyMTIsIDMyMTcsIDMyMjEsIDMyMjUsIDMyMzEsIDMyMzYsIDMyNDAsIDMyNDQsIDMyNDksIDMyNTQsIDMyNTgsIDMyNjMsIAorICAgIDMyNjcsIDMyNzAsIDMyNzQsIDMyNzksIDMyODMsIDMyODgsIDMyOTIsIDMyOTUsIDMyOTksIDMzMDMsIDMzMDgsIDMzMTIsIAorICAgIDMzMTUsIDMzMjgsIDMzMzIsIDMzMzYsIDMzNDAsIDMzNDUsIDMzNDksIDMzNTMsIDMzNTYsIDMzNjAsIDMzNjQsIDMzNjksIAorICAgIDMzNzMsIDMzNzgsIDMzODMsIDMzODgsIDMzOTIsIDMzOTcsIDM0MDAsIDM0MDMsIDM0MDgsIDM0MTQsIDM0MTgsIDM0MjIsIAorICAgIDM0MjUsIDM0MzAsIDM0MzQsIDM0MzksIDM0NDMsIDM0NDcsIDM0NTAsIDM0NTYsIDM0NjEsIDM0NjYsIDM0NzIsIDM0NzcsIAorICAgIDM0ODIsIDM0ODgsIDM0OTQsIDM0OTksIDM1MDQsIDM1MDksIDM1MTQsIDEwOTcsIDU5MiwgMzUxNywgMzUyMCwgMzUyNSwgCisgICAgMzUyOSwgMzUzMywgMzUzNywgMzU0MSwgMzU0NCwgMzU0OCwgMzU1MywgMzU1OCwgMzU2MiwgMzU2NywgMzU3MSwgMzU3NiwgCisgICAgMzU4MCwgMzU4NCwgMzU4OCwgMzU5NCwgMzYwMCwgMzYwMywgMzYwNiwgMTUwLCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKKyAgICAzNjQzLCAzNjUzLCAzNjYwLCAzNjY2LCAzNjczLCAzNjc4LCAzNjgyLCAzNjg2LCAzNjk0LCAzNzAxLCAzNzA2LCAzNzEzLCAKKyAgICAzNzE4LCAzNzIyLCAzNzMyLCAzNzM2LCAzNzQwLCAzNzQ1LCAzNzUwLCAzNzYwLCAyMTE4LCAzNzY1LCAzNzY5LCAzNzcyLCAKKyAgICAzNzc4LCAzNzgzLCAzNzg5LCAzNzk1LCAzODAwLCAzODA3LCAzODExLCAzODE1LCA2MTYsIDcwNSwgMTM1MCwgMzgxOSwgCisgICAgMzgyNiwgMzgzMywgMzgzOSwgMzg0NCwgMzg1MSwgMzg1OCwgMzg2MywgMzg2OSwgMzg3NSwgMzg4MCwgMzg4NCwgMzg5MCwgCisgICAgMzg5NywgMzkwMiwgMzkwNiwgMzkxMCwgMjEyNywgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgNzU5LCAzOTQ0LCAzOTUyLCAKKyAgICAzOTYzLCAzOTY3LCAzOTc3LCAyMTMyLCAzOTgzLCAzOTg4LCA0MDAzLCA0MDA5LCA0MDE2LCA0MDI2LCA0MDMyLCA0MDM3LCAKKyAgICA0MDQzLCA0MDQ5LCA0MDUyLCA0MDU1LCA0MDU5LCA0MDY0LCA0MDcxLCA0MDgwLCA0MDg1LCA0MDg5LCA0MDkzLCA0MDk3LCAKKyAgICA0MTAxLCA0MTA2LCA0MTEyLCA0MTIzLCA0MTI3LCAzMjc1LCA0MTMyLCA0MTQ0LCA0MTUwLCA0MTU4LCA0MTYyLCA0MTY3LCAKKyAgICAxNTQzLCA0MTc0LCA0MTc3LCA0MTgwLCA0MTg0LCA0MTg3LCA0MTkzLCA0MTk3LCA0MjExLCA0MjE1LCA0MjE4LCA0MjIyLCAKKyAgICA0MjI4LCA0MjM0LCA0MjM5LCA0MjQzLCA0MjQ3LCA0MjUzLCA0MjY0LCA0MjcwLCA0Mjc1LCA0MjgxLCA0Mjg1LCA0MjkzLCAKKyAgICA0MzA1LCA0MzE1LCA0MzIxLCA0MzI2LCA0MzM1LCA0MzQzLCA0MzUwLCA0MzU2LCA0MzYyLCA0MzY2LCA0MzcyLCA0MzgxLCAKKyAgICA0MzkwLCA0Mzk0LCA0NDAzLCA0NDA4LCA0NDEyLCA0NDE3LCA0NDIxLCA0NDI5LCA0NDM1LCA0NDM5LCA0NDQ0LCA0NDQ4LCAKKyAgICA0NDU0LCAyMTQwLCAxMzY2LCA0NDYwLCA0NDY1LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCA0NDk2LCA0NTAxLCAKKyAgICA0NTA3LCA0NTEyLCA0NTE4LCA0NTIzLCA0NTI4LCA0NTMzLCA0NTM5LCA0NTQ0LCA0NTQ5LCA0NTU0LCA0NTU5LCA0NTY1LCAKKyAgICA0NTcwLCA0NTc2LCA0NTgxLCA0NTg2LCA0NTkxLCA0NTk2LCA0NjAxLCA0NjA2LCA0NjEyLCA0NjE3LCA0NjIyLCAyOTcsIAorICAgIDMzMiwgNDYyNywgNDYzMywgNDYzNywgNDY0MSwgNDY0NiwgNDY1MCwgNDY1NCwgNDY1NywgNDY2MSwgNDY2NSwgNDY2OSwgCisgICAgNDY3MywgNDY3NywgNDY4MiwgNDY4NiwgNDY5MCwgNDY5NiwgNDQ1NywgNDcwMSwgNDcwNSwgNDcwOCwgNDcxMywgNDcxOCwgCisgICAgNDcyMywgNDcyOCwgNDczMywgNDczOCwgNDc0MywgNDc0OCwgNDc1MywgNDc1OCwgNDc2MiwgNDc2NywgNDc3MiwgNDc3NywgCisgICAgNDc4MiwgNDc4NywgNDc5MiwgNDc5NywgNDgwMiwgNDgwNywgNDgxMiwgNDgxNiwgNDgyMSwgNDgyNiwgNDgzMSwgNDgzNiwgCisgICAgNDg0MSwgNDg0NiwgNDg1MSwgNDg1NiwgNDg2MSwgNDg2NiwgNDg3MCwgNDg3NSwgNDg4MCwgNDg4NSwgNDg5MCwgNDg5NSwgCisgICAgNDkwMCwgNDkwNSwgNDkxMCwgNDkxNSwgNDkyMCwgNDkyNCwgNDkyOSwgNDkzNCwgNDkzOSwgNDk0NCwgNDk0OSwgNDk1NCwgCisgICAgNDk1OSwgNDk2NCwgNDk2OSwgNDk3NCwgNDk3OCwgNDk4MywgNDk4OCwgNDk5MywgNDk5OCwgNTAwMywgNTAwOCwgNTAxMywgCisgICAgNTAxOCwgNTAyMywgNTAyOCwgNTAzMiwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NywgNTA3MiwgCisgICAgNTA3NywgNTA4MiwgNTA4NiwgNTA5MSwgNTA5NiwgNTEwMSwgNTEwNiwgNTExMiwgNTExOCwgNTEyNCwgNTEzMCwgNTEzNiwgCisgICAgNTE0MiwgNTE0OCwgNTE1MywgNTE1OSwgNTE2NSwgNTE3MSwgNTE3NywgNTE4MywgNTE4OSwgNTE5NSwgNTIwMSwgNTIwNywgCisgICAgNTIxMywgNTIxOCwgNTIyNCwgNTIzMCwgNTIzNiwgNTI0MiwgNTI0OCwgNTI1NCwgNTI2MCwgNTI2NiwgNTI3MiwgNTI3OCwgCisgICAgNTI4MywgNTI4OSwgNTI5NSwgNTMwMSwgNTMwNywgNTMxMywgNTMxOSwgNTMyNSwgNTMzMSwgNTMzNywgNTM0MywgNTM0OCwgCisgICAgNTM1NCwgNTM2MCwgNTM2NiwgNTM3MiwgNTM3OCwgNTM4NCwgNTM5MCwgNTM5NiwgNTQwMiwgNTQwOCwgNTQxMywgNTQxOSwgCisgICAgNTQyNSwgNTQzMSwgNTQzNywgNTQ0MywgNTQ0OSwgNTQ1NSwgNTQ2MSwgNTQ2NywgNTQ3MywgNTQ3OCwgNTQ4MiwgNTQ4OCwgCisgICAgNTQ5NCwgNTUwMCwgNTUwNiwgNTUxMiwgNTUxOCwgNTUyNCwgNTUzMCwgNTUzNiwgNTU0MiwgNTU0NywgNTU1MywgNTU1OSwgCisgICAgNTU2NSwgNTU3MSwgNTU3NywgNTU4MywgNTU4OSwgNTU5NSwgNTYwMSwgNTYwNywgNTYxMiwgNTYxOCwgNTYyNCwgNTYzMCwgCisgICAgNTYzNiwgNTY0MiwgNTY0OCwgNTY1NCwgNTY2MCwgNTY2NiwgNTY3MiwgNTY3NywgNTY4MywgNTY4OSwgNTY5NSwgNTcwMSwgCisgICAgNTcwNywgNTcxMywgNTcxOSwgNTcyNSwgNTczMSwgNTczNywgNTc0MiwgNTc0OCwgNTc1NCwgNTc2MCwgNTc2NiwgNTc3MiwgCisgICAgNTc3OCwgNTc4NCwgNTc5MCwgNTc5NiwgNTgwMiwgNTgwNywgNTgxMywgNTgxOSwgNTgyNSwgNTgzMSwgNTgzNywgNTg0MywgCisgICAgNTg0OSwgNTg1NSwgNTg2MSwgNTg2NywgNTg3MiwgNTg3OCwgNTg4NCwgNTg5MCwgNTg5NiwgNTkwMiwgNTkwOCwgNTkxNCwgCisgICAgNTkyMCwgNTkyNiwgNTkzMiwgNTkzNywgNTk0MywgNTk0OSwgNTk1NSwgNTk2MSwgNTk2NywgNTk3MywgNTk3OSwgNTk4NSwgCisgICAgNTk5MSwgNTk5NywgNjAwMiwgNjAwOCwgNjAxNCwgNjAyMCwgNjAyNiwgNjAzMiwgNjAzOCwgNjA0NCwgNjA1MCwgNjA1NiwgCisgICAgNjA2MiwgNjA2NywgNjA3MywgNjA3OSwgNjA4NSwgNjA5MSwgNjA5NywgNjEwMywgNjEwOSwgNjExNSwgNjEyMSwgNjEyNywgCisgICAgNjEzMiwgNjEzNiwgNjEzOSwgNjE0NiwgNjE1MCwgNjE2MywgNjE2NywgNjE3MSwgNjE3NSwgNjE3OCwgNjE4MiwgNjE4NywgCisgICAgNjE5MSwgNjE5NSwgNjIwMSwgNjIwOCwgNjIxOSwgNjIyNywgNjIzNCwgNjIzOCwgNjI0NiwgNjI1NSwgNjI2MSwgNjI2NSwgCisgICAgNjI3NywgNjI4MiwgNjI4NSwgNjI5MCwgNjI5NCwgNjMwNCwgNjMxMiwgNjMyMCwgNjMyNiwgNjMzMCwgNjM0MCwgNjM1MCwgCisgICAgNjM1OCwgNjM2NSwgNjM3MiwgNjM3OCwgNjM4NCwgNjM5MSwgNjM5NSwgNjQwMiwgNjQxMiwgNjQyMiwgNjQzMCwgNjQzNywgCisgICAgNjQ0MiwgNjQ0NiwgNjQ1MCwgNjQ1OCwgNjQ2MiwgNjQ2NywgNjQ3NCwgNjQ4MiwgNjQ4NywgNjQ5MSwgNjQ5NiwgNjUwMCwgCisgICAgNjUwNywgNjUxMiwgNjUyNiwgNjUzMSwgNjUzNiwgNjU0MywgMzUzMCwgNjU1MiwgNjU1NiwgNjU2MSwgNjU2NSwgNjU2OSwgCisgICAgNjU3MiwgNjU3NywgNjU4MiwgNjU5MSwgNjU5NywgNjYwMywgNjYwOSwgNjYxMywgNjYyNCwgNjYzNCwgNjY0OSwgNjY2NCwgCisgICAgNjY3OSwgNjY5NCwgNjcwOSwgNjcyNCwgNjczOSwgNjc1NCwgNjc2OSwgNjc4NCwgNjc5OSwgNjgxNCwgNjgyOSwgNjg0NCwgCisgICAgNjg1OSwgNjg3NCwgNjg4OSwgNjkwNCwgNjkxOSwgNjkzNCwgNjk0OSwgNjk2NCwgNjk3OSwgNjk5NCwgNzAwOSwgNzAyNCwgCisgICAgNzAzOSwgNzA1NCwgNzA2OSwgNzA4NCwgNzA5OSwgNzExNCwgNzEyOSwgNzE0NCwgNzE1OSwgNzE3NCwgNzE4OSwgNzIwNCwgCisgICAgNzIxOSwgNzIzNCwgNzI0OSwgNzI2NCwgNzI3OSwgNzI5NCwgNzMwOSwgNzMyNCwgNzMzOSwgNzM1NCwgNzM2OSwgNzM3OCwgCisgICAgNzM4NywgNzM5MiwgNzM5OCwgNzQwOCwgNzQxMiwgNzQxNiwgNzQyMSwgNzQyNiwgNzQzNCwgNzQzOCwgNzQ0MSwgNzQ0NSwgCisgICAgMzAyMywgNzQ0OCwgNzQ1MywgMzM2LCA1MTAsIDc0NTksIDc0NjcsIDc0NzEsIDc0NzUsIDc0NzgsIDc0ODIsIDc0ODgsIAorICAgIDc0OTIsIDc1MDAsIDc1MDYsIDc1MTEsIDc1MTgsIDc1MjYsIDc1MzMsIDc1MzksIDc1NDQsIDc1NTEsIDc1NTcsIDc1NjUsIAorICAgIDc1NjksIDc1NzQsIDc1ODYsIDc1OTcsIDc2MDQsIDc2MDgsIDc2MTIsIDc2MTYsIDc2MTksIDc2MjUsIDMzMDAsIDc2MjksIAorICAgIDc2MzUsIDc2NDAsIDc2NDUsIDc2NTAsIDc2NTYsIDc2NjEsIDc2NjYsIDc2NzEsIDc2NzYsIDc2ODIsIDc2ODcsIDc2OTIsIAorICAgIDc2OTgsIDc3MDMsIDc3MDksIDc3MTQsIDc3MjAsIDc3MjUsIDc3MzEsIDc3MzYsIDc3NDEsIDc3NDYsIDc3NTEsIDc3NTYsIAorICAgIDc3NjIsIDc3NjcsIDc3NzIsIDc3NzcsIDc3ODMsIDc3ODksIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTMsIDc4MTksIDc4MjUsIAorICAgIDc4MzEsIDc4MzcsIDc4NDMsIDc4NDksIDc4NTQsIDc4NTksIDc4NjQsIDc4NjksIDc4NzQsIDc4NzksIDc4ODQsIDc4ODksIAorICAgIDc4OTUsIDc5MDEsIDc5MDYsIDc5MTIsIDc5MTgsIDc5MjQsIDc5MjksIDc5MzQsIDc5MzksIDc5NDQsIDc5NTAsIDc5NTYsIAorICAgIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODcsIDc5OTIsIDc5OTgsIDgwMDQsIDgwMTAsIDgwMTYsIDgwMjIsIAorICAgIDgwMjgsIDgwMzQsIDgwNDAsIDgwNDYsIDIxNDksIDc0NzcsIDgwNTEsIDgwNTUsIDgwNTksIDgwNjIsIDgwNjksIDgwNzIsIAorICAgIDgwNzYsIDgwODQsIDgwODksIDgwOTQsIDgwODUsIDgwOTksIDIxNzYsIDgxMDMsIDgxMDksIDgxMTUsIDgxMjAsIDgxMjUsIAorICAgIDgxMzIsIDgxNDAsIDgxNDUsIDgxNDksIDgxNTIsIDgxNTYsIDgxNjIsIDgxNjgsIDgxNzIsIDIxODQsIDU0MSwgODE3NSwgCisgICAgODE3OSwgODE4NCwgODE5MCwgODE5NSwgODE5OSwgODIwMiwgODIwNiwgODIxMiwgODIxNywgODIyMSwgODIyOCwgODIzMiwgCisgICAgODIzNiwgODI0MCwgODgyLCA5ODQsIDgyNDMsIDgyNTEsIDgyNTgsIDgyNjQsIDgyNzEsIDgyNzksIDgyODYsIDgyOTcsIAorICAgIDgzMDQsIDgzMTAsIDgzMTUsIDgzMjcsIDEyMDksIDEzNzQsIDEzNzksIDgzMzgsIDEzODQsIDgzNDIsIDgzNDYsIDgzNTUsIAorICAgIDgzNjMsIDgzNjcsIDgzNzYsIDgzODIsIDgzODcsIDgzOTEsIDgzOTcsIDg0MDIsIDg0MTAsIDg0MTcsIDI3MzQsIDg0MjQsIAorICAgIDg0MjgsIDg0MzcsIDg0NDYsIDg0NTUsIDg0NjQsIDg0NzAsIDg0NzUsIDg0ODAsIDg0OTEsIDg1MDAsIDg1MTIsIDg1MTcsIAorICAgIDg1MjUsIDIyMzUsIDg1MjksIDg1MzEsIDg1MzYsIDg1NDAsIDg1NDksIDg1NTcsIDEzODgsIDE2NSwgMzU3MiwgMzU3NywgCisgICAgODU2MywgODU2NywgODU3NiwgODU4MiwgODU4NywgODU5MCwgODU5OSwgMzU4MSwgODYwNSwgMjcyNiwgODYwOSwgODYxNywgCisgICAgODYyMSwgODYyNSwgODYyOSwgMjI1MiwgODYzMywgODYzOCwgODY0NSwgODY1MSwgODY1NywgODY2MCwgODY2MiwgODY2NSwgCisgICAgODY3MywgODY4MSwgODY4OSwgODY5MiwgODY5NywgMjI2NSwgODcwMiwgODA5NiwgODcwNSwgODcwNywgODcxMiwgODcxNywgCisgICAgODcyMiwgODcyNywgODczMiwgODczNywgODc0MiwgODc0NywgODc1MiwgODc1NywgODc2MywgODc2OCwgODc3MywgODc3OCwgCisgICAgODc4NCwgODc4OSwgODc5NCwgODc5OSwgODgwNCwgODgwOSwgODgxNCwgODgyMCwgODgyNSwgODgzMCwgODgzNSwgODg0MCwgCisgICAgODg0NSwgODg1MCwgODg1NSwgODg2MCwgODg2NSwgODg3MCwgODg3NSwgODg4MCwgODg4NSwgODg5MCwgODg5NSwgODkwMCwgCisgICAgODkwNSwgODkxMSwgODkxNywgODkyMiwgODkyNywgODkzMiwgODkzNywgODk0MiwgMjI3NiwgMjI4MywgMjI4OSwgODk0NywgCisgICAgODk1NSwgODk2MSwgODk2OSwgMjMxNSwgMjMyMSwgODk3NywgODk4MSwgODk4NiwgODk5MCwgODk5NCwgODk5OCwgOTAwMywgCisgICAgOTAwNywgOTAxMiwgOTAxNiwgOTAxOSwgOTAyMiwgOTAyOCwgOTAzNSwgOTA0MSwgOTA0OCwgOTA1NCwgOTA2MSwgOTA2NywgCisgICAgOTA3NCwgOTA4MCwgOTA4NiwgOTA5NSwgOTEwMSwgOTEwNSwgOTEwOSwgOTExMywgOTExNywgOTEyMiwgOTEyNiwgOTEzMSwgCisgICAgOTEzNSwgOTE0MSwgOTE0NiwgOTE1MywgOTE2NCwgOTE3MiwgOTE4MiwgOTE4OCwgOTE5OCwgOTIwNywgOTIxNCwgOTIxOSwgCisgICAgOTIyMywgOTIzNCwgOTI0NCwgOTI1NywgOTI2OCwgOTI4MSwgOTI5MiwgOTMwNCwgOTMxNiwgOTMyOCwgOTM0MSwgOTM1NCwgCisgICAgOTM2MSwgOTM2NywgOTM3OCwgOTM4OCwgOTQwMiwgOTQwOSwgOTQxNSwgOTQyNCwgOTQzMiwgOTQzNiwgOTQ0MSwgOTQ0NSwgCisgICAgOTQ1MiwgOTQ2MCwgOTQ2NywgOTQ3MSwgOTQ3NywgOTQ4MSwgOTQ4NywgOTQ5NywgOTUwMSwgOTUwNiwgOTUxMSwgOTUxOCwgCisgICAgOTUyNCwgOTUzNCwgODI2NiwgOTU0MCwgOTU0NCwgOTU1MSwgOTU1NywgOTU2NCwgOTU3MSwgOTgzLCA5NTc1LCA5NTc5LCAKKyAgICA5NTg0LCA5NTg5LCA5NTk0LCA5NTk4LCA5NjA0LCA5NjEyLCA5NjE5LCA5NjI1LCA5NjI5LCA5NjMyLCA5NjM4LCA5NjQ4LCAKKyAgICA5NjUyLCA5NjU4LCA5NjYzLCA5NjY3LCA5NjcxLCA5Njc3LCA5NjgzLCAyMTcyLCA5Njg4LCA5NjkwLCA5Njk1LCA5NzAzLCAKKyAgICA5NzEyLCA5NzE2LCA5NzIyLCA5NzI3LCA5NzMyLCA5NzM3LCA5NzQyLCA5NzQ4LCA5NzUzLCA5NzU4LCA0MjQ5LCA5NzYzLCAKKyAgICA5NzY4LCA5NzcyLCA5Nzc4LCA5NzgzLCA5Nzg5LCA5Nzk0LCA5Nzk5LCA5ODA1LCA5ODEwLCA5NzE3LCA5ODE2LCA5ODIwLCAKKyAgICA5ODI3LCA5ODMzLCA5ODM4LCA5ODQyLCA2NTIyLCA5ODQ3LCA5ODU2LCA5ODYxLCA5ODY2LCA4NjQxLCA4NjQ4LCA5ODcxLCAKKyAgICAyOTAxLCA5ODc1LCA5ODgwLCA5ODg1LCA5ODkwLCA5NzI4LCA5ODk0LCA5ODk5LCA5OTA0LCA5NzMzLCA5OTA4LCA5NzM4LCAKKyAgICA5OTEzLCA5OTIwLCA5OTI3LCA5OTMzLCA5OTQwLCA5OTQ2LCA5OTUyLCA5OTU3LCA5OTY0LCA5OTY5LCA5OTc0LCA5OTc5LCAKKyAgICA5OTg1LCA5NzQzLCA5NzQ5LCA5OTkxLCA5OTk3LCAxMDAwMiwgMTAwMDcsIDEwMDE1LCA5NzU0LCAxMDAyMCwgMTExMiwgCisgICAgMTAwMjMsIDEwMDMxLCAxMDAzNywgMTAwNDMsIDEwMDUyLCAxMDA2MCwgMTAwNjgsIDEwMDc2LCAxMDA4NCwgMTAwOTIsIAorICAgIDEwMTAwLCAxMDEwOCwgMTAxMTYsIDEwMTI1LCAxMDEzNCwgMTAxNDIsIDEwMTUxLCAxMDE2MCwgMTAxNjksIDEwMTc4LCAKKyAgICAxMDE4NywgMTAxOTYsIDEwMjA1LCAxMDIxNCwgMTAyMjMsIDEwMjMyLCAxMDI0MCwgMTAyNDUsIDEwMjUxLCAxMDI1OSwgCisgICAgMTAyNjYsIDEwMjgxLCAxMDI5OCwgMTAzMTcsIDEwMzI2LCAxMDMzNCwgMTAzNDksIDEwMzYwLCAxMDM2OCwgMTAzNzgsIAorICAgIDEwMzg4LCAxMDM5NiwgMTA0MDIsIDEwNDE0LCAxMDQyMywgMTA0MzEsIDEwNDM4LCAxMDQ0NSwgMTA0NTIsIDEwNDU4LCAKKyAgICAxMDQ2MywgMTA0NzMsIDEwNDgxLCAxMDQ5MSwgMTA0OTgsIDEwNTA4LCAxMDUxOCwgMTA1MjgsIDEwNTM2LCAxMDU0MywgCisgICAgMTA1NTIsIDEwNTYyLCAxMDU3NiwgMTA1OTEsIDEwNjAwLCAxMDYwOCwgMTA2MTMsIDEwNjE3LCAxMDYyNiwgMTA2MzIsIAorICAgIDEwNjM3LCAxMDY0NywgMTA2NTcsIDEwNjY3LCAxMDY3MiwgMTA2NzYsIDEwNjg1LCAxMDY5MCwgMTA3MDYsIDEwNzIzLCAKKyAgICAxMDczMywgMTA3NDQsIDEwNzU3LCAxMDc2NSwgMTA3NzgsIDEwNzkwLCAxMDc5OCwgMTA4MDMsIDEwODA3LCAxMDgxMywgCisgICAgMTA4MTgsIDEwODI2LCAxMDgzNCwgMTA4NDEsIDEwODQ2LCAxMDg1NCwgMTA4NjQsIDEwODcwLCAxMDg3NCwgMTA4NzcsIAorICAgIDEwODgxLCAxMDg4NywgMTA4OTQsIDEwODk4LCAxMDkwNiwgMTA5MTUsIDEwOTIzLCAxMDkzMCwgMTA5MzUsIDEwOTQwLCAKKyAgICAxMDk0NCwgMTA5NDgsIDEwOTU2LCAxMDk3MSwgMTA5ODcsIDEwOTkzLCAxMTAwMSwgMTEwMTAsIDExMDE4LCAxMTAyNCwgCisgICAgMTEwMjgsIDExMDM1LCAxMTA0NiwgMTEwNTAsIDExMDUzLCAxMTA1OSwgOTc1OSwgMTEwNjQsIDExMDcwLCAxMTA3NywgCisgICAgMTEwODMsIDExMDg4LCAxMTA5NSwgMTExMDIsIDExMTA5LCAxMTExNiwgMTExMjMsIDExMTMwLCAxMTEzNywgMTExNDQsIAorICAgIDExMTQ5LCAxMDI5NCwgMTExNTQsIDExMTYwLCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4NiwgMTExOTUsIDExMTk5LCAKKyAgICAxMTIxMSwgODY3OSwgMTEyMTUsIDExMjE4LCAxMTIyMiwgMTEyMjYsIDExMjMwLCAxMTIzNCwgMTEyNDAsIDExMjQ2LCAKKyAgICAxMTI1MSwgMTEyNTcsIDExMjYyLCAxMTI2NywgMTEyNzMsIDExMjc4LCAxMTI4MywgOTUxNCwgMTEyODgsIDExMjkyLCAKKyAgICAxMTI5NiwgMTEzMDAsIDExMzA1LCAxMTMxMCwgMTEzMTUsIDExMzIzLCAxMTMyOSwgMTEzMzQsIDExMzM4LCAxMTM0MiwgCisgICAgMTEzNDksIDExMzU0LCAxMTM2MiwgMTEzNjksIDExMzc0LCAxMTM3OCwgMTEzODEsIDExMzg3LCAxMTM5NCwgMTEzOTgsIAorICAgIDExNDAxLCAxMTQwNiwgMTE0MTAsIDQyODgsIDExNDE2LCAxMTQyNSwgNDYsIDExNDMzLCAxMTQzOSwgMTE0NDQsIDExNDQ5LCAKKyAgICAxMTQ1NywgMTE0NjQsIDExNDY5LCA5NTI5LCAxMTQ3NSwgMTE0ODEsIDExNDg2LCAxMTQ5MCwgMTE0OTMsIDExNTA4LCAKKyAgICAxMTUyNywgMTE1MzksIDExNTUyLCAxMTU2NSwgMTE1NzgsIDExNTkyLCAxMTYwNSwgMTE2MjAsIDExNjI3LCA5NzY0LCAKKyAgICAxMTYzMywgMTE2NDcsIDExNjUyLCAxMTY1OCwgMTE2NjMsIDExNjcxLCAxMTY3NiwgODQzMywgMTE2ODEsIDExNjg0LCAKKyAgICAxMTY5MiwgMTE2OTksIDExNzA0LCAxMTcwOCwgMTE3MTQsIDI5MDYsIDEwMzc2LCAxMTcxOCwgMTE3MjIsIDExNzI4LCAKKyAgICAxMTczNCwgMTE3MzksIDExNzQ1LCAxMTc1MCwgOTc3MywgMTE3NTYsIDExNzYyLCAxMTc2NywgMTE3NzIsIDExNzgwLCAKKyAgICAxMTc4NiwgMTE3OTksIDExODA3LCAxMTgxNCwgMTE4MjAsIDk3NzksIDExODI2LCAxMTgzNCwgMTE4NDIsIDExODQ5LCAKKyAgICAxMTg2MiwgMTE4NzUsIDExODg3LCAxMTg5NywgMTE5MDksIDExOTE3LCAxMTkyNCwgMTE5MzYsIDExOTQzLCAxMTk1MywgCisgICAgMTE5NjIsIDExOTcxLCAxMTk3OSwgMTE5ODYsIDExOTkxLCAxMTk5NywgOTc4NCwgMTIwMDIsIDEyMDA4LCAxMjAxMywgCisgICAgMTIwMTgsIDk3OTAsIDEyMDIzLCAxMjAyNiwgMTIwMzMsIDEyMDM5LCAxMjA1MiwgOTE1NywgMTIwNjMsIDEyMDY5LCAKKyAgICAxMjA3OCwgMTIwODYsIDEyMDkzLCAxMjA5OSwgMTIxMTAsIDEyMTE2LCAxMjEyMSwgMzgzNSwgMTIxMjksIDEyMTM0LCAKKyAgICAxMTUwMCwgMTIxNDAsIDEyMTQ3LCAxMjE1MiwgOTc5NSwgMTIxNTgsIDEyMTYzLCAxMjE3MCwgMTIxNzYsIDEyMTgyLCAKKyAgICAxMjE4NywgMTIxOTUsIDEyMjAzLCAxMjIxMCwgMTIyMTQsIDEyMjI2LCAxMjI0MCwgMTIyNTAsIDEyMjU1LCAxMjI1OSwgCisgICAgMTIyNzAsIDEyMjc2LCAxMjI4MSwgMTIyODYsIDk4MDAsIDEyMjkwLCA5ODA2LCAxMjI5NSwgMTIyOTgsIDEyMzAzLCAKKyAgICAxMjMxNSwgMTIzMjIsIDEyMzI3LCAxMjMzMSwgMTIzMzksIDEyMzQ0LCAxMjM0OCwgMTIzNTMsIDEyMzU3LCAxMjM2NCwgCisgICAgMTIzNzAsIDk4MTEsIDk3MTgsIDEyMzc3LCAyOTExLCAxMiwgMTIzODQsIDEyMzg5LCAxMjM5MywgMTIzOTcsIDEyNDAzLCAKKyAgICAxMjQxMSwgMTI0MjEsIDEyNDI2LCAxMjQzMSwgMTI0MzgsIDEyNDQ1LCAxMjQ0OSwgMTI0NjAsIDEyNDcwLCAxMjQ3OSwgCisgICAgMTI0ODgsIDEyNTAwLCAxMjUwNSwgMTI1MDksIDEyNTE3LCAxMjUzMSwgMTI1MzUsIDEyNTM4LCAxMjU0NiwgMTI1NTMsIAorICAgIDEyNTYxLCAxMjU2NSwgMTI1NzYsIDEyNTgwLCAxMjU4NywgMTI1OTIsIDEyNTk2LCAxMjYwMiwgMTI2MDcsIDEyNjEzLCAKKyAgICAxMjYxOCwgMTI2MjMsIDEyNjI3LCAxMjYzMywgMTI2MzgsIDEyNjQ5LCAxMjY1MywgMTI2NTYsIDEyNjYyLCAxMjY2NywgCisgICAgMTI2NzMsIDEyNjc5LCAxMjY4NiwgMTI2OTcsIDEyNzA3LCAxMjcxNywgMTI3MjYsIDEyNzMzLCAxMjc0MiwgMTI3NDYsIAorICAgIDk4MjEsIDk4MjgsIDk4MzQsIDk4MzksIDEyNzUyLCAxMjc1OCwgMTI3NjQsIDEyNzY5LCAxMjc3NSwgOTg0MywgMTI3ODEsIAorICAgIDEyNzg0LCAxMjc5MSwgMTI3OTYsIDEyODExLCAxMjgyNywgMTI4NDIsIDEyODUwLCAxMjg1NiwgMTI4NjEsIDk3NiwgMzg3LCAKKyAgICAxMjg2NiwgMTI4NzQsIDEyODgxLCAxMjg4NywgMTI4OTIsIDEyODk3LCA5ODQ4LCAxMjg5OSwgMTI5MDMsIDEyOTA4LCAKKyAgICAxMjkxMiwgMTI5MjIsIDEyOTI3LCAxMjkzMSwgMTI5NDAsIDEyOTQ0LCAxMjk0NywgMTI5NTQsIDk4NTcsIDEyOTU5LCAKKyAgICAxMjk2MiwgMTI5NzAsIDEyOTc3LCAxMjk4NSwgMTI5ODksIDEyOTkzLCAxMzAwMCwgMTMwMDksIDEzMDE2LCAxMzAxMiwgCisgICAgMTMwMjMsIDEzMDI3LCAxMzAzMywgMTMwMzcsIDEzMDQxLCAxMzA0NSwgMTMwNTEsIDEzMDYxLCAxMzA2OSwgMTMwNzYsIAorICAgIDEzMDgwLCAxMzA4OCwgMTMwOTIsIDEzMDk5LCAxMzEwMywgMTMxMDgsIDEzMTEyLCAxMzExOSwgMTMxMjUsIDEzMTMzLCAKKyAgICAxMzEzOSwgMTMxNDQsIDEzMTU0LCAxMzE1OSwgMTMxNjQsIDEzMTY4LCAxMzE3MiwgMTMxODAsIDQxMzgsIDEzMTg4LCAKKyAgICAxMzE5MywgOTg2MiwgMTMxOTcsIDEzMjAxLCAxMzIwNCwgMTMyMTIsIDEzMjE5LCAxMzIyMywgNjMyMiwgMTMyMjcsIAorICAgIDEzMjMyLCAxMzIzNywgMTMyNDEsIDEzMjUyLCAxMzI2MiwgMTMyNjcsIDEzMjczLCAxMzI3OCwgMTMyODIsIDEzMjg1LCAKKyAgICAxMzI5MywgMTMyOTgsIDEzMzAzLCAxMzMxMCwgMTMzMTUsIDk4NjcsIDEzMzIwLCAxMzMyNCwgMTMzMzEsIDE3MTgsIDY0ODAsIAorICAgIDEzMzM2LCAxMzM0MSwgMTMzNDYsIDEzMzUxLCAxMzM1NywgMTMzNjIsIDEzMzY4LCAxMzM3MywgMTMzNzgsIDEzMzgzLCAKKyAgICAxMzM4OCwgMTMzOTMsIDEzMzk4LCAxMzQwMywgMTM0MDgsIDEzNDEzLCAxMzQxOCwgMTM0MjMsIDEzNDI4LCAxMzQzMywgCisgICAgMTM0MzgsIDEzNDQzLCAxMzQ0OCwgMTM0NTQsIDEzNDU5LCAxMzQ2NCwgMTM0NjksIDEzNDc0LCAxMzQ3OSwgMTM0ODUsIAorICAgIDEzNDkwLCAxMzQ5NSwgMTM1MDEsIDEzNTA2LCAxMzUxMiwgMTM1MTcsIDEzNTIzLCAxMzUyOCwgMTM1MzMsIDEzNTM4LCAKKyAgICAxMzU0MywgMTM1NDksIDEzNTU0LCAxMzU1OSwgMTM1NjQsIDkzNiwgMTEyLCAxMzU3MiwgMTM1NzYsIDEzNTgxLCAxMzU4NiwgCisgICAgMTM1OTAsIDEzNTk0LCAxMzU5OCwgMTM2MDMsIDEzNjA3LCAxMzYxMiwgMTM2MTYsIDEzNjE5LCAxMzYyMywgMTM2MjcsIAorICAgIDEzNjMzLCAxMzYzOCwgMTM2NDgsIDEzNjU0LCAxMzY2MiwgMTM2NjgsIDEzNjcyLCAxMzY3NiwgMTM2ODMsIDEzNjkxLCAKKyAgICAxMzcwMCwgMTM3MTEsIDEzNzIxLCAxMzcyOCwgMTM3MzUsIDEzNzM5LCAxMzc0OCwgMTM3NTcsIDEzNzY1LCAxMzc3NCwgCisgICAgMTM3ODMsIDEzNzkyLCAxMzgwMSwgMTM4MTEsIDEzODIxLCAxMzgzMSwgMTM4NDEsIDEzODUxLCAxMzg2MCwgMTM4NzAsIAorICAgIDEzODgwLCAxMzg5MCwgMTM5MDAsIDEzOTEwLCAxMzkyMCwgMTM5MzAsIDEzOTM5LCAxMzk0OSwgMTM5NTksIDEzOTY5LCAKKyAgICAxMzk3OSwgMTM5ODksIDEzOTk5LCAxNDAwOCwgMTQwMTgsIDE0MDI4LCAxNDAzOCwgMTQwNDgsIDE0MDU4LCAxNDA2OCwgCisgICAgMTQwNzgsIDE0MDg4LCAxNDA5OCwgMTQxMDcsIDE0MTE3LCAxNDEyNywgMTQxMzcsIDE0MTQ3LCAxNDE1NywgMTQxNjcsIAorICAgIDE0MTc3LCAxNDE4NywgMTQxOTcsIDE0MjA3LCAxNDIxNiwgMTIxOCwgMTQyMjIsIDE0MjI1LCAxNDIyOSwgMTQyMzQsIAorICAgIDE0MjQxLCAxNDI0NywgMTQyNTIsIDE0MjU2LCAxNDI2MSwgMTQyNzAsIDE0Mjc4LCAxNDI4MywgMTQyODcsIDE0MjkxLCAKKyAgICAxNDI5NywgMTQzMDIsIDE0MzA4LCA5ODc2LCAxNDMxMywgMTQzMTgsIDE0MzI3LCA5ODg2LCAxNDMzMiwgMTQzMzUsIAorICAgIDE0MzQxLCAxNDM0OSwgOTg5MSwgMTQzNTYsIDE0MzYwLCAxNDM2NCwgMTQzNjksIDE0MzczLCAxNDM4MywgMTQzODksIAorICAgIDE0Mzk1LCAxNDQwMCwgMTQ0MDksIDE0NDE3LCAxNDQyNCwgMTQ0MzEsIDE0NDM2LCAxNDQ0MywgMTQ0NDgsIDE0NDUyLCAKKyAgICAxNDQ1NSwgMTQ0NjYsIDE0NDc2LCAxNDQ4NSwgMTQ0OTMsIDE0NTA0LCAxNDUxNiwgMTQ1MjYsIDE0NTMxLCAxNDUzNSwgCisgICAgMTQ1NDAsIDE0NTQ1LCAxNDU0OSwgMTQ1NTUsIDE0NTYzLCAxNDU3MCwgMTQ1ODEsIDE0NTg2LCAxNDU5NiwgMTQ2MDUsIAorICAgIDE0NjA5LCAxNDYxMiwgMTQ2MTksIDE0NjI5LCAxNDYzOCwgMTQ2NDUsIDE0NjQ5LCAxNDY1NiwgMTQ2NjIsIDE0NjY3LCAKKyAgICAxNDY3MiwgMTQ2NzYsIDE0Njg1LCAxNDY5MCwgMTQ2OTQsIDE0NzAwLCAxNDcwNCwgMTQ3MDksIDE0NzEzLCAxNDcyMCwgCisgICAgMTQ3MjcsIDE0NzMxLCAxNDc0MCwgMTQ3NDgsIDE0NzU2LCAxNDc2MywgMTQ3NzEsIDE0NzgzLCAxNDc5NCwgMTQ4MDQsIAorICAgIDE0ODExLCAxNDgxNywgMTQ4MjYsIDE0ODM3LCAxNDg0NiwgMTQ4NTgsIDE0ODcwLCAxNDg4MiwgMTQ4OTIsIDE0OTAxLCAKKyAgICAxNDkxMCwgMTQ5MTgsIDE0OTI1LCAxNDkzNCwgMTQ5NDIsIDE0OTQ2LCAxNDk1MSwgMTQ5NTcsIDE0OTYzLCAxNDk2OCwgCisgICAgMTQ5NzMsIDgxMTcsIDE0OTc3LCAxNDk3OSwgMTQ5ODMsIDE0OTg4LCAxNDk5NSwgMTUwMDEsIDE1MDA3LCAxNTAxNiwgCisgICAgMTUwMjAsIDE1MDI2LCAxNTAzNCwgMTUwNDEsIDE1MDUwLCAxNTA1OSwgMTUwNjgsIDE1MDc3LCAxNTA4NiwgMTUwOTUsIAorICAgIDE1MTA0LCAxNTExMywgMTUxMjMsIDE1MTMzLCAxNTE0MiwgMTUxNDgsIDE1MTU1LCAxNTE2MiwgMTUxNjgsIDE1MTgyLCAKKyAgICAxNTE4OCwgMTUxOTUsIDE1MjAzLCAxNTIxMiwgMTUyMjAsIDE1MjI2LCAxNTIzNSwgMTUyNDQsIDE1MjU1LCAxNTI2NSwgCisgICAgMTUyNzMsIDE1MjgwLCAxNTI4OCwgMTUyOTcsIDE1MzEwLCAxNTMxOSwgMTUzMjcsIDE1MzM0LCAxNTM0NywgMTUzNTMsIAorICAgIDE1MzU5LCAxNTM2OSwgMTUzNzgsIDE1Mzg3LCAxNTM5MiwgMTUzOTYsIDE1NDAyLCAxNTQwOCwgMTU0MTMsIDE1NDIwLCAKKyAgICAxNTQyNywgOTUyOCwgMTU0MzIsIDE1NDM3LCAxNTQ0NCwgMTU0NTIsIDE1NDU3LCAxNTQ2NCwgMTU0NjksIDE1NDgxLCAKKyAgICAxMzYyOSwgMTU0ODYsIDE1NDk0LCAxNTUwMCwgMTU1MDUsIDE1NTEzLCAxNTUyMSwgMTU1MjgsIDE1NTM2LCAxNTU0MiwgCisgICAgMTU1NTAsIDE1NTU4LCAxNTU2NCwgMTU1NjksIDE1NTc1LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAxNTU5NywgMTU2MDgsIAorICAgIDE1NjE2LCAxNTYyMiwgMTU2MjcsIDE1NjM0LCAxNTY0MywgMTU2NDksIDE1NjU0LCAxNTY2MiwgMTU2NzEsIDE1Njg1LCAKKyAgICA0MDgyLCAxNTY4OSwgMTU2OTQsIDE1Njk5LCAxNTcwNSwgMTU3MTAsIDE1NzE1LCAxNTcxOSwgMTU3MjQsIDE1NzI5LCAKKyAgICAxNTczNCwgODExNiwgMTU3MzksIDE1NzQ0LCAxNTc0OSwgMTU3NTQsIDE1NzU5LCAxNTc2MywgMTU3NjgsIDE1NzczLCAKKyAgICAxNTc3OCwgMTU3ODMsIDE1Nzg5LCAxNTc5NSwgMTU4MDAsIDE1ODA0LCAxNTgxMCwgMTU4MTUsIDE1ODIwLCAxNTgyNSwgCisgICAgOTg5NSwgMTU4MzAsIDE1ODM1LCAxNTg0MCwgMTU4NDUsIDE1ODUwLCAxNTg2NywgMTU4ODUsIDE1ODk3LCAxNTkxMCwgCisgICAgMTU5MjcsIDE1OTQzLCAxNTk2MCwgMTU5NzAsIDE1OTg5LCAxNjAwMCwgMTYwMTEsIDE2MDIyLCAxNjAzMywgMTYwNDUsIAorICAgIDE2MDU2LCAxNjA2NywgMTYwODQsIDE2MDk1LCAxNjEwNiwgMTYxMTEsIDk5MDAsIDE2MTE2LCAxNjEyMCwgMjQwNSwgCisgICAgMTYxMjQsIDE2MTI3LCAxNjEzMywgMTYxNDEsIDE2MTQ5LCAxNjE1NSwgMTYxNjQsIDE2MTcxLCAxNjE3NiwgMTYxODQsIAorICAgIDE2MTkyLCAxNjE5OSwgMTYyMDMsIDE2MjA4LCAxNjIxNCwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDgsIDE2MjU1LCAKKyAgICAxNjI2MSwgMTYyNjksIDE2Mjc0LCAxNjI4MCwgMTI4MDUsIDE2Mjg2LCAxNjI5NSwgMTYzMDEsIDE2MzA2LCAxNjMxNCwgCisgICAgMTYzMjMsIDE2MzMxLCAxNjMzOCwgMTYzNDQsIDE2MzUyLCAxNjM1OSwgMTYzNjUsIDE2MzcxLCAxNjM3OCwgMTYzODUsIAorICAgIDE2MzkxLCAxNjM5NywgMTY0MDYsIDE2NDE0LCAxNjQyNCwgMTY0MzEsIDE2NDM3LCAxNjQ0NSwgMTY0NTEsIDE2NDU5LCAKKyAgICAxNjQ2NywgMTY0NzQsIDE2NDg3LCAxNjQ5NCwgMTY1MDMsIDE2NTEyLCAxNjUyMSwgMTY1MjksIDE2NTM5LCAxNjU0NiwgCisgICAgMTY1NTEsIDM3MjYsIDE2NTU4LCAxNjU2MywgMTMzNCwgMTY1NjcsIDE1NzQwLCAxNjU3MSwgMTY1NzcsIDE2NTgxLCAKKyAgICAxNjU4OSwgMTY2MDEsIDE2NjA2LCAxNjYxMywgMTY2MTksIDE2NjI0LCAxNjYzMSwgMTU3NDUsIDE2NjM1LCAxNjYzOSwgCisgICAgMTY2NDMsIDE1NzUwLCAxNjY0NywgMTU3NTUsIDE2NjUxLCAxNjY1OCwgMTY2NjMsIDE2NjY3LCAxNjY3NCwgMTY2NzgsIAorICAgIDE2Njg2LCAxNjY5MywgMTY2OTgsIDE2NzAyLCAxNjcwOSwgMTY3MjYsIDE2NzM1LCAxNjczOSwgMTY3NDIsIDE2NzUwLCAKKyAgICAxNjc1NiwgMTY3NjEsIDM4MDQsIDE2NzY1LCAxNjc2NywgMTY3NzUsIDE2NzgyLCAxNjc5MiwgMTY4MDQsIDE2ODA5LCAKKyAgICAxNjgxMywgMTY4MTksIDE2ODI0LCAxNjgzMiwgMTY4MzYsIDE2ODQyLCAxNjg0NywgMTY4NTMsIDE2ODU2LCAxNjg2MywgCisgICAgMTY4NzEsIDE2ODc4LCAxNjg4NCwgMTY4ODksIDE2ODk1LCAxNjkwMCwgMTY5MDcsIDE2OTEzLCAxNjkxOCwgMTY5MjUsIAorICAgIDE2OTMwLCAxNjkzNCwgMTY5NDAsIDE2OTQ0LCAxNjk1MSwgMTY5NTcsIDE2OTYyLCAxNjk2OCwgMTY5NzYsIDE2OTg0LCAKKyAgICAxNjk5MSwgMTY5OTcsIDE3MDAyLCAxNzAwOCwgMTcwMTQsIDE3MDIyLCAxNzAyNywgMTcwMzUsIDE3MDQxLCAxNzA0NywgCisgICAgMTcwNTIsIDE3MDU5LCAxNzA2NCwgMTcwNjgsIDE3MDc0LCAxNzA3OSwgMTcwODYsIDE3MDkxLCAxNzA5NywgMTcxMDAsIAorICAgIDE3MTA2LCAxNzExMiwgMTcxMTUsIDE3MTE5LCAxNzEyMywgMTcxMzUsIDE3MTQxLCAxNzE0NiwgMTcxNTMsIDE3MTU5LCAKKyAgICAxNzE2NSwgMTcxNzYsIDE3MTg2LCAxNzE5NSwgMTcyMDMsIDE3MjEwLCAxNzIyMSwgMTcyMzEsIDE3MjQxLCAxNzI0OSwgCisgICAgMTcyNTIsIDE1NzY5LCAxNzI1NywgMTcyNjIsIDE1Nzc0LCAxNTkxNSwgMTcyNzAsIDE3MjgzLCAxNzI5OCwgMTczMDksIAorICAgIDE1OTMyLCAxNzMyNywgMTczNDAsIDE3MzUzLCAxNzM2NCwgMTE1MTUsIDE3Mzc1LCAxNzM4OCwgMTc0MDcsIDE3NDE4LCAKKyAgICAxNzQyOSwgMTc0NDAsIDI2NzcsIDE3NDUzLCAxNzQ1NywgMTc0NjUsIDE3NDc2LCAxNzQ4NywgMTc0OTUsIDE3NTEwLCAKKyAgICAxNzUyNSwgMTc1MzYsIDE3NTQzLCAxNzU0OSwgMTc1NTcsIDE3NTYxLCAxNzU2NywgMTc1NzAsIDE3NTgzLCAxNzU5NSwgCisgICAgMTc2MDUsIDE3NjEzLCAxNzYyMCwgMTc2MjgsIDE3NjM4LCAxNzY0MywgMTc2NTAsIDE3NjU1LCAxNzY2MiwgMTc2NzMsIAorICAgIDE3NjgzLCAxNzY4OSwgMTc2OTQsIDE3Njk5LCAxNTc3OSwgMTc3MDMsIDE3NzA5LCAxNzcxNSwgMTc3MjAsIDE3NzI1LCAKKyAgICAxNzczMCwgMTc3MzQsIDE1Nzg0LCAxNTc5MCwgMTc3MzgsIDE1Nzk2LCAxNzc0MywgMTc3NTEsIDE3NzU2LCAxNzc2MCwgCisgICAgMTc3NjcsIDE3Nzc1LCAxNzc4NCwgMTc3OTEsIDE3Nzk1LCA5NzM5LCAxNzc5OSwgMTc4MDEsIDE3ODA2LCAxNzgxMSwgCisgICAgMTc4MTcsIDE3ODIyLCAxNzgyNywgMTc4MzIsIDE3ODM3LCAxNzg0MSwgMTc4NDcsIDE3ODUzLCAxNzg1OCwgMTc4NjQsIAorICAgIDE3ODY5LCAxNzg3NCwgMTc4NzgsIDE3ODg0LCAxNzg4OSwgMTc4OTMsIDE3ODk4LCAxNzkwMywgMTc5MTUsIDE3OTIwLCAKKyAgICAxNzkyNiwgMTc5MzEsIDE3OTM2LCAxNzk0MiwgMTc5NDgsIDE3OTUzLCAxNzk1OCwgMTc5NjMsIDE3OTcwLCAxNzk3NiwgCisgICAgMTc5ODcsIDE3OTk0LCAxNzk5OSwgMTgwMDMsIDE4MDA3LCAxODAxMCwgMTgwMTgsIDE4MDIzLCAxODAyOSwgMTgwMzYsIAorICAgIDE4MDQzLCAxODA0OSwgMTgwNTQsIDE4MDU5LCAxODA2NCwgMTgwNzEsIDE4MDgxLCAxODA4OSwgMTgwOTQsIDE4MTAxLCAKKyAgICAxODEwNywgMTgxMTYsIDE4MTI2LCAxODEzNiwgMTgxNTAsIDE4MTY0LCAxODE3OCwgMTgxOTIsIDE4MjA3LCAxODIyMiwgCisgICAgMTgyMzksIDE4MjU3LCAxODI3MCwgMTgyNzYsIDE4MjgxLCAxODI4NiwgMTgyOTAsIDE4Mjk4LCAxODMwMywgMTgzMTEsIAorICAgIDE4MzE3LCAxODMyMywgMTgzMjgsIDE4MzMzLCAxODMzNywgMTgzNDIsIDE4MzQ2LCAxODM1MSwgMTgzNTUsIDE4MzY2LCAKKyAgICAxODM3MiwgMTgzNzcsIDE4MzgyLCAxODM4OSwgMTgzOTQsIDE4Mzk4LCAzNjg5LCAxODQwMywgMTg0MDksIDE4NDE2LCAKKyAgICAxNTgwNSwgMTg0MjIsIDE4NDI2LCAxODQzMiwgMTg0MzcsIDE4NDQyLCAxODQ0NiwgMTg0NTIsIDE4NDU3LCAxODQ2MiwgCisgICAgMTg0NjksIDE4NDc0LCAxNDM4NSwgMTg0NzgsIDE4NDgzLCAxODQ4NywgMTg0OTIsIDE4NDk4LCAxODUwNCwgMTg1MTEsIAorICAgIDE4NTIxLCAxODUyOSwgMTg1MzYsIDE4NTQxLCAxODU0NSwgMTg1NTQsIDE4NTYyLCAxODU2OSwgMTg1NzYsIDE4NTgyLCAKKyAgICAxODU4NywgMTg1OTMsIDE4NTk4LCAxODYwMywgMTg2MDksIDE4NjE0LCAxODYyMCwgMTg2MjUsIDE4NjMxLCAxODYzNywgCisgICAgMTg2NDQsIDE4NjUwLCAxODY1NSwgMTg2NjAsIDk5NjUsIDE4NjY5LCAxODY3MiwgMTg2ODAsIDE4Njg2LCAxODY5MSwgCisgICAgMTg2OTYsIDE4NzA2LCAxODcxMywgMTg3MTksIDE4NzI0LCAxODcyOSwgMTg3MzUsIDE4NzQwLCAxODc0NiwgMTg3NTEsIAorICAgIDE4NzU3LCAxODc2MywgMTg3NjksIDE4Nzc0LCAxODc4MiwgMTg3ODksIDE4Nzk0LCAxODc5OSwgMTg4MDUsIDE4ODEwLCAKKyAgICAxODgxNCwgMTg4MjMsIDE4ODM0LCAxODg0MSwgMTg4NDgsIDE4ODU2LCAxODg2MywgMTg4NjgsIDE4ODczLCAxODg3OSwgCisgICAgMTg4ODQsIDE4ODkyLCAxODg5OCwgMTg5MDQsIDE4OTExLCAxODkxNywgMTg5MjIsIDE4OTI2LCAxODkzMiwgMTg5MzcsIAorICAgIDE4OTQyLCAxODk0NiwgMTg5NTEsIDE0MDcsIDgxNDEsIDI5MjUsIDE4OTU1LCAxODk1OSwgMTg5NjMsIDE4OTY3LCAxODk3MSwgCisgICAgMTg5NzUsIDE4OTc4LCAxODk4MywgMTg5OTAsIDE4OTk4LCAxNTgxNiwgMTkwMDUsIDE5MDE1LCAxOTAyMywgMTkwMzAsIAorICAgIDE5MDM4LCAxOTA0OCwgMTkwNTcsIDkyNzUsIDE5MDcwLCAxOTA3NSwgMTkwODAsIDE5MDg4LCAxOTA5NSwgMTQ0ODEsIAorICAgIDE0NDkwLCAxOTEwMiwgMTkxMTIsIDE5MTI3LCAxOTEzMywgMTkxNDAsIDE5MTQ3LCAxOTE1MywgMTkxNTksIDE5MTcwLCAKKyAgICAxOTE3OCwgMTkxODYsIDE5MTk2LCAxOTIwNiwgMTU4MjEsIDE5MjE1LCAxOTIyMSwgMTkyMjcsIDE5MjM1LCAxOTI0MywgCisgICAgMTkyNDgsIDE5MjU3LCAxOTI2NSwgMTkyNzcsIDE5Mjg3LCAxOTI5NywgMTkzMDcsIDE5MzE2LCAxOTMyOCwgMTkzMzgsIAorICAgIDE5MzQ4LCAxOTM1OSwgMTkzNjYsIDE5MzcxLCAxOTM4MywgMTkzOTUsIDE5NDA3LCAxOTQxOSwgMTk0MzEsIDE5NDQzLCAKKyAgICAxOTQ1NSwgMTk0NjcsIDE5NDc5LCAxOTQ5MSwgMTk1MDIsIDE5NTE0LCAxOTUyNiwgMTk1MzgsIDE5NTUwLCAxOTU2MiwgCisgICAgMTk1NzQsIDE5NTg2LCAxOTU5OCwgMTk2MTAsIDE5NjIyLCAxOTYzMywgMTk2NDUsIDE5NjU3LCAxOTY2OSwgMTk2ODEsIAorICAgIDE5NjkzLCAxOTcwNSwgMTk3MTcsIDE5NzI5LCAxOTc0MSwgMTk3NTMsIDE5NzY0LCAxOTc3NiwgMTk3ODgsIDE5ODAwLCAKKyAgICAxOTgxMiwgMTk4MjQsIDE5ODM2LCAxOTg0OCwgMTk4NjAsIDE5ODcyLCAxOTg4NCwgMTk4OTUsIDE5OTA3LCAxOTkxOSwgCisgICAgMTk5MzEsIDE5OTQzLCAxOTk1NSwgMTk5NjcsIDE5OTc5LCAxOTk5MSwgMjAwMDMsIDIwMDE1LCAyMDAyNiwgMjAwMzgsIAorICAgIDIwMDUwLCAyMDA2MiwgMjAwNzQsIDIwMDg2LCAyMDA5OCwgMjAxMTAsIDIwMTIyLCAyMDEzNCwgMjAxNDYsIDIwMTU3LCAKKyAgICAyMDE2OSwgMjAxODEsIDIwMTkzLCAyMDIwNSwgMjAyMTcsIDIwMjI5LCAyMDI0MSwgMjAyNTMsIDIwMjY1LCAyMDI3NywgCisgICAgMjAyODgsIDIwMzAwLCAyMDMxMiwgMjAzMjQsIDIwMzM2LCAyMDM0OSwgMjAzNjIsIDIwMzc1LCAyMDM4OCwgMjA0MDEsIAorICAgIDIwNDE0LCAyMDQyNywgMjA0MzksIDIwNDUyLCAyMDQ2NSwgMjA0NzgsIDIwNDkxLCAyMDUwNCwgMjA1MTcsIDIwNTMwLCAKKyAgICAyMDU0MywgMjA1NTYsIDIwNTY5LCAyMDU4MSwgMjA1OTQsIDIwNjA3LCAyMDYyMCwgMjA2MzMsIDIwNjQ2LCAyMDY1OSwgCisgICAgMjA2NzIsIDIwNjg1LCAyMDY5OCwgMjA3MTEsIDIwNzIzLCAyMDczNiwgMjA3NDksIDIwNzYyLCAyMDc3NSwgMjA3ODgsIAorICAgIDIwODAxLCAyMDgxNCwgMjA4MjcsIDIwODQwLCAyMDg1MywgMjA4NjUsIDIwODc4LCAyMDg5MSwgMjA5MDQsIDIwOTE3LCAKKyAgICAyMDkzMCwgMjA5NDMsIDIwOTU2LCAyMDk2OSwgMjA5ODIsIDIwOTk1LCAyMTAwNywgMjEwMjAsIDIxMDMzLCAyMTA0NiwgCisgICAgMjEwNTksIDIxMDcyLCAyMTA4NSwgMjEwOTgsIDIxMTExLCAyMTEyNCwgMjExMzcsIDIxMTQ5LCAyMTE2MCwgMjExNzMsIAorICAgIDIxMTg2LCAyMTE5OSwgMjEyMTIsIDIxMjI1LCAyMTIzOCwgMjEyNTEsIDIxMjY0LCAyMTI3NywgMjEyOTAsIDIxMzAyLCAKKyAgICAyMTMxNSwgMjEzMjgsIDIxMzQxLCAyMTM1NCwgMjEzNjcsIDIxMzgwLCAyMTM5MywgMjE0MDYsIDIxNDE5LCAyMTQzMiwgCisgICAgMjE0NDQsIDIxNDU3LCAyMTQ3MCwgMjE0ODMsIDIxNDk2LCAyMTUwOSwgMjE1MjIsIDIxNTM1LCAyMTU0OCwgMjE1NjEsIAorICAgIDIxNTc0LCAyMTU4NiwgMjE1OTksIDIxNjEyLCAyMTYyNSwgMjE2MzgsIDIxNjUxLCAyMTY2NCwgMjE2NzcsIDIxNjkwLCAKKyAgICAyMTcwMywgMjE3MTYsIDIxNzI4LCAyMTc0MSwgMjE3NTQsIDIxNzY3LCAyMTc4MCwgMjE3OTMsIDIxODA2LCAyMTgxOSwgCisgICAgMjE4MzIsIDIxODQ1LCAyMTg1OCwgMjE4NzAsIDIxODgzLCAyMTg5NiwgMjE5MDksIDIxOTIyLCAyMTkzNSwgMjE5NDgsIAorICAgIDIxOTYxLCAyMTk3NCwgMjE5ODcsIDIyMDAwLCAyMjAxMiwgMjIwMjUsIDIyMDM4LCAyMjA1MSwgMjIwNjQsIDIyMDc3LCAKKyAgICAyMjA5MCwgMjIxMDMsIDIyMTE2LCAyMjEyOSwgMjIxNDIsIDIyMTU0LCAyMjE2NywgMjIxODAsIDIyMTkzLCAyMjIwNiwgCisgICAgMjIyMTksIDIyMjMyLCAyMjI0NSwgMjIyNTgsIDIyMjcxLCAyMjI4NCwgMjIyOTYsIDIyMzA5LCAyMjMyMiwgMjIzMzUsIAorICAgIDIyMzQ4LCAyMjM2MSwgMjIzNzQsIDIyMzg3LCAyMjQwMCwgMjI0MTMsIDIyNDI2LCAyMjQzOCwgMjI0NTEsIDIyNDY0LCAKKyAgICAyMjQ3NywgMjI0OTAsIDIyNTAzLCAyMjUxNiwgMjI1MjksIDIyNTQyLCAyMjU1NSwgMjI1NjgsIDIyNTgwLCAyMjU5MSwgCisgICAgMjI2MDAsIDIyNjA4LCAyMjYxNiwgMjI2MjMsIDIyNjI5LCAyMjYzMywgMjI2MzksIDIyNjQ1LCAyMjY1MywgMjI2NTgsIAorICAgIDIyNjY0LCAyMjY2OSwgMjI2NzMsIDIyNjgyLCA5NzQ0LCAyMjY5MywgMjI3MDAsIDIyNzA4LCAyMjcxNSwgMjI3MjIsIAorICAgIDEyMDQ2LCAyMjcyOSwgMjI3MzYsIDIyNzQ1LCAyMjc1MCwgMjI3NTUsIDgxNjksIDIyNzYyLCAyMjc2NywgMjI3NzAsIAorICAgIDIyNzc1LCAyMjc4MywgMjI3OTAsIDIyNzk3LCAyMjgwNCwgMjI4MTAsIDIyODE5LCAyMjgyOCwgMjI4MzcsIDIyODQzLCAKKyAgICAyMjg1MSwgMjI4NjAsIDIyODY0LCAyMjg3MCwgMjI4NzUsIDIyODg1LCAyMjg5MiwgMjI4OTgsIDIyOTA2LCAyMjkxMiwgCisgICAgMjI5MTksIDIyOTI5LCAyMjkzOCwgMjI5NDIsIDIyOTQ5LCAyMjk1MywgMjI5NTgsIDIyOTY0LCAyMjk3MiwgMjI5NzYsIAorICAgIDIyOTg2LCAxNTgzMSwgMjI5OTUsIDIzMDAxLCAyMzAwNSwgMjMwMTQsIDIzMDI0LCAxNTgzNiwgMjMwMzAsIDIzMDM3LCAKKyAgICAyMzA0OCwgMjMwNTYsIDIzMDY2LCAyMzA3NSwgMjMwODMsIDk0OTMsIDIzMDkxLCAyMzA5NiwgMjMxMDIsIDIzMTA3LCAKKyAgICAyMzExMSwgMjMxMTUsIDIzMTE5LCAxMDQ3NywgMjMxMjQsIDIzMTMyLCAyMzEzOSwgMjMxNDgsIDIzMTU1LCAyMzE2MiwgCisgICAgMjMxNjgsIDExOTY2LCAyMzE3NSwgMjMxODEsIDIzMTg1LCAyMzE5MSwgMjMxOTgsIDIzMjA0LCAyMzIxMiwgMjMyMTgsIAorICAgIDIzMjI1LCAyMzIzMSwgMjMyMzcsIDIzMjQ2LCAyMzI1MCwgMjMyNTgsIDIzMjY3LCAyMzI3NCwgMjMyNzksIDIzMjgzLCAKKyAgICAyMzI5NCwgMjMyOTksIDIzMzA0LCAyMzMxMCwgMjMzMTUsIDIzMzI4LCA4MzczLCAyMzMzMiwgMjMzMzgsIDIzMzQ0LCAKKyAgICAyMzM0OSwgMjMzNTcsIDIzMzYxLCAyMzM2OCwgMjMzNzcsIDIzMzgyLCAxNjEwNywgMjMzOTAsIDIzMzk0LCAyMzQwNiwgCisgICAgMjM0MTEsIDIzNDE1LCAyMzQxOCwgMjM0MjQsIDIzNDMwLCAyMzQzNiwgMjM0NDEsIDIzNDQ1LCAyMzQ0OCwgMjM0NTksIAorICAgIDIzNDY0LCAxMDAxNiwgMjM0NzEsIDIzNDc2LCAxMjI0LCAxMDAyMSwgMjM0ODEsIDIzNDg2LCAyMzQ5MSwgMjM0OTYsIAorICAgIDIzNTAxLCAyMzUwNiwgMjM1MTEsIDIzNTE2LCAyMzUyMSwgMjM1MjYsIDIzNTMxLCAyMzUzNiwgMjM1NDIsIDIzNTQ3LCAKKyAgICAyMzU1MiwgMjM1NTcsIDIzNTYyLCAyMzU2NywgMjM1NzIsIDIzNTc3LCAyMzU4MiwgMjM1ODcsIDIzNTkzLCAyMzU5OSwgCisgICAgMjM2MDQsIDIzNjA5LCAyMzYxNCwgMjM2MTksIDIzNjI0LCAyMzYyOSwgMjM2MzQsIDIzNjM5LCAyMzY0NCwgMjM2NTAsIAorICAgIDIzNjU1LCAyMzY2MCwgMjM2NjUsIDIzNjcxLCAyMzY3NywgMjM2ODIsIDIzNjg3LCAyMzY5MiwgMjM2OTcsIDIzNzAyLCAKKyAgICAyMzcwNywgMjM3MTIsIDIzNzE3LCAyMzcyMywgMjM3MjgsIDIzNzMzLCAyMzczOCwgMjM3NDMsIDIzNzQ5LCAyMzc1NCwgCisgICAgMjM3NTksIDIzNzYzLCAxMzMwLCAxNDAsIDIzNzcxLCAyMzc3NSwgMjM3NzksIDIzNzgzLCAyMzc4OCwgMjM3OTIsIDE0MzkxLCAKKyAgICAyMzMxLCAyMzc5NiwgMjM4MDEsIDIzODA1LCAyMzgxMCwgMjM4MTQsIDIzODE5LCAyMzgyMywgMjM4MjksIDIzODM0LCAKKyAgICAyMzgzOCwgMjM4NDIsIDIzODUwLCAyMzg1NCwgMjM4NTgsIDIzODYzLCAyMzg2OCwgMjM4NzIsIDIzODc4LCAyMzg4MywgCisgICAgMjM4ODcsIDIzODkyLCAyMzg5NywgMjM5MDEsIDIzOTA4LCAyMzkxNSwgMjM5MjIsIDIzOTI3LCAyMzkzMSwgMjM5MzUsIAorICAgIDIzOTQwLCAyMzk0NCwgMjM5NDcsIDIzOTUzLCAyMzk2NiwgMjM5NzEsIDIzOTc3LCAyMzk4NiwgMjM5OTEsIDEwMjQxLCAKKyAgICAyMzk5NiwgMjQwMDUsIDI0MDEwLCAyNDAxMywgMjc0MCwgMjc0NSwgMjQwMTcsIDI0MDIzLCAyNDAyOSwgMzY1MCwgMjQwMzQsIAorICAgIDI0MDM5LCAyNDA0NCwgMjQwNTAsIDI0MDU1LCAxNTI1MSwgMjQwNjAsIDI0MDY1LCAyNDA3MCwgMjQwNzUsIDI0MDgxLCAKKyAgICAyNDA4NiwgMjQwOTEsIDI0MDk3LCAyNDEwMiwgMjQxMDYsIDI0MTExLCAyNDExNiwgMjQxMjEsIDI0MTI2LCAyNDEzMSwgCisgICAgMjQxMzUsIDI0MTQwLCAyNDE0NCwgMjQxNDksIDI0MTU0LCAyNDE1OSwgMjQxNjQsIDI0MTY4LCAyNDE3MywgMjQxNzcsIAorICAgIDI0MTgyLCAyNDE4NywgMjQxOTIsIDI0MTA3LCAyOTM0LCAyNDExMiwgMjQxOTcsIDI0MjA1LCAyNDIxMiwgMTA1NzEsIAorICAgIDI0MjI0LCAyNDIzMiwgMjQyNDIsIDI0MjYwLCAyNDI3OSwgMjQyODgsIDI0Mjk2LCAyNDExNywgMjQzMDMsIDI0MzA4LCAKKyAgICAyNDMxNiwgMjQxMjIsIDI0MzIxLCAyNDMyNiwgMjQzMzQsIDI0MzM5LCAyNDEyNywgMjQzNDQsIDI0MzUyLCAyNDM1NywgCisgICAgMjQzNjEsIDI0MzY4LCAyNDM3NCwgMjQzODMsIDI0MzkxLCAyNDM5NSwgMjQzOTgsIDI0NDA1LCAyNDQwOSwgMjQ0MTMsIAorICAgIDI0NDE4LCAyNDQyNCwgMjQ0MzEsIDI0NDM2LCA5NTIwLCAxNzIzLCAxNzI4LCAyNDQ0MCwgMjQ0NDYsIDI0NDUyLCAyNDQ1NywgCisgICAgMjQ0NjEsIDI0NDY1LCAyNDQ2OSwgMjQ0NzMsIDI0NDc3LCAyNDQ4MSwgMjQ0ODUsIDI0NDg5LCAyNDQ5MiwgMjQ0OTgsIAorICAgIDI0NTA1LCAyNDUxMywgMjQ1MTksIDI0NTI1LCAyNDUzMCwgMjQ1MzUsIDI0NTQxLCAyNDU0NSwgMjQ1NTAsIDE1MTU3LCAKKyAgICAxNTE2NCwgMjQ1NTcsIDI0NTY5LCAyNDU3MiwgMjQ1NzksIDI0NTgzLCAxODA0NSwgMjQ1OTAsIDI0NTk4LCAyNDYwOSwgCisgICAgMjQ2MTgsIDI0NjMxLCAyNDY0MSwgMjQ2NTUsIDI0NjY3LCAyNDY4MSwgMjQ2OTQsIDI0NzA2LCAyNDcxNiwgMjQ3MjgsIAorICAgIDI0NzM0LCAyNDc0MCwgMjQ3NTUsIDI0Nzc5LCAyNDc5NywgMjQ4MTYsIDI0ODI5LCAyNDg0MywgMjQ4NjEsIDI0ODc3LCAKKyAgICAyNDg5NCwgMjQ5MTIsIDI0OTIzLCAyNDk0MiwgMjQ5NTksIDI0OTc5LCAyNDk5NywgMjUwMDksIDI1MDIzLCAyNTAzNywgCisgICAgMjUwNDksIDI1MDY2LCAyNTA4NSwgMjUxMDMsIDI1MTE1LCAyNTEzMywgMjUxNTIsIDE1OTc1LCAyNTE2NSwgMjUxODUsIAorICAgIDI1MTk3LCAxMTU0NiwgMjUyMDksIDI1MjE0LCAyNTIxOSwgMjUyMjQsIDI1MjMwLCAyNTIzNSwgMjUyMzksIDI1MjQ2LCAKKyAgICAyNTI1MiwgMjQyMiwgMjUyNTYsIDI1MjYyLCAyNTI2NiwgMjUyNjksIDI1MjgwLCAyNTI4NCwgMjUyODcsIDI1Mjk1LCAKKyAgICAyNTMwMSwgMjQxNDUsIDI1MzA1LCAyNTMxNCwgMjUzMjUsIDI1MzMxLCAyNTMzNywgMjUzNTIsIDI1MzYxLCAyNTM2OSwgCisgICAgMjUzNzYsIDI1MzgxLCAyNTM4NSwgMjUzOTIsIDI1Mzk4LCAyNTQwNywgMjU0MTUsIDI1NDIyLCAyNTQzMiwgMjU0NDEsIAorICAgIDI1NDUxLCAyNTQ1NiwgMjU0NjUsIDI1NDc0LCAyNTQ4NSwgMjU0OTYsIDQyMDYsIDI1NTA2LCAyNTUxMCwgMjU1MjAsIAorICAgIDI1NTI4LCAyNTUzOCwgMjU1NDksIDI1NTU0LCAyNTU2NCwgMjU1NzIsIDI1NTc5LCAyNTU4NSwgMjU1OTIsIDI1NTk3LCAKKyAgICAyNDE1NSwgMjU2MDEsIDI1NjEwLCAyNTYxNCwgMjU2MTcsIDI1NjIyLCAyNTYzMCwgMjU2MzcsIDI1NjQ2LCAyNTY1NCwgCisgICAgMjU2NjIsIDI1NjcwLCAyNTY4MCwgMjU2ODksIDI1Njk1LCAyNTcwMSwgMjU3MDUsIDI0MTYwLCAyNDE2NSwgMjU3MDksIAorICAgIDI1NzE5LCAyNTcyOSwgMjU3MzksIDI1NzQ3LCAyNTc1NCwgMjU3NjQsIDI1NzcyLCAyNTc4MCwgMjU3ODYsIDI1Nzk0LCAKKyAgICA4NzIsIDI1ODAzLCAxNjE4OCwgNTU3LCAyNTgxNywgMjU4MjYsIDI1ODM0LCAyNTg0NSwgMjU4NTYsIDI1ODY2LCAyNTg3NSwgCisgICAgMjU4ODcsIDI1ODk2LCAyNTkwNSwgMjU5MTIsIDI1OTE4LCAyNTkyOCwgMjU5MzcsIDI1OTQ2LCAyNTk1NCwgMjU5NjQsIAorICAgIDI1OTcyLCAyNTk4MCwgOTk4MiwgMjU5ODYsIDI1OTg5LCAyNTk5MywgMjU5OTgsIDI2MDAzLCAyNjAwNywgMTA2ODYsIAorICAgIDI0MTc4LCAyNDE4MywgMjYwMTUsIDI2MDIxLCAyNjAyNywgMjYwMzIsIDI2MDM3LCAyNjA0MSwgMjYwNDksIDI2MDU1LCAKKyAgICAyNjA2MSwgMjYwNjUsIDM2NzQsIDI2MDczLCAyNjA3OCwgMjYwODMsIDI2MDg3LCAyNjA5MSwgMTA3OTksIDI2MDk4LCAKKyAgICAyNjEwNiwgMjYxMjAsIDI2MTI3LCAyNjEzMywgMTA4MDgsIDEwODE0LCAyNjE0MSwgMjYxNDksIDI2MTU2LCAyNjE2MSwgCisgICAgMjYxNjYsIDI0MTg4LCAyNjE3MiwgMjYxODMsIDI2MTg3LCAyNjE5MiwgMjYyOSwgMjYxOTcsIDI2MjA4LCAyNjIxNCwgCisgICAgMjYyMTksIDI2MjIzLCAyNjIyNywgMjYyMzAsIDI2MjM3LCAyNjI0NCwgMjYyNTAsIDI2MjU3LCAyNjI2MywgMjYyNjcsIAorICAgIDI0MTkzLCAyNjI3MiwgMjYyNzYsIDI2MjgwLCAxNDEyLCA4NTg1LCAyNjI4NSwgMjYyOTAsIDI2Mjk1LCAyNjMwMCwgCisgICAgMjYzMDUsIDI2MzEwLCAyNjMxNSwgMjYzMjAsIDI2MzI1LCAyNjMzMCwgMjYzMzUsIDI2MzQwLCAyNjM0NSwgMjYzNTAsIAorICAgIDI2MzU2LCAyNjM2MSwgMjYzNjYsIDI2MzcxLCAyNjM3NiwgMjYzODEsIDI2Mzg2LCAyNjM5MiwgMjYzOTcsIDI2NDAyLCAKKyAgICAyNjQwNywgMjY0MTIsIDI2NDE3LCAyNjQyMiwgMjY0MjcsIDI2NDMzLCAyNjQzOSwgMjY0NDQsIDI2NDUwLCAyNjQ1NSwgCisgICAgMjY0NjAsIDUsIDI2NDY2LCAyNjQ3MCwgMjY0NzQsIDI2NDc4LCAyNjQ4MywgMjY0ODcsIDI2NDkxLCAyNjQ5NSwgMjY0OTksIAorICAgIDI2NTA0LCAyNjUwOCwgMjY1MTMsIDI2NTE3LCAyNjUyMCwgMjY1MjQsIDI2NTI5LCAyNjUzMywgMjY1MzgsIDI2NTQyLCAKKyAgICAyNjU0NiwgMjY1NTAsIDI2NTU1LCAyNjU1OSwgMjY1NjMsIDI2NTczLCAyNjU3OCwgMjY1ODIsIDI2NTg2LCAyNjU5MSwgCisgICAgMjY1OTYsIDI2NjA1LCAyNjYxMCwgMjY2MTUsIDI2NjE5LCAyNjYyMywgMjY2MzYsIDI2NjQ4LCAyNjY1NywgMjY2NjYsIAorICAgIDI2NjcxLCAyNjY3NywgMjY2ODIsIDI2Njg2LCAyNjY5MCwgMjY3MDAsIDI2NzA5LCAyNjcxNywgMjY3MjMsIDI2NzI4LCAKKyAgICAyNjczMiwgMjY3MzksIDI2NzQ5LCAyNjc1OCwgMjY3NjYsIDExODY4LCAyNjc3NCwgMjY3ODIsIDI2NzkxLCAyNjgwMCwgCisgICAgMjY4MDgsIDI2ODE4LCAyNjgyMywgMjY4MjcsIDI2ODMxLCAyNjgzNCwgMjY4MzYsIDI2ODQwLCAyNjg0NCwgMjY4NDksIAorICAgIDI2ODU0LCAyNjg1OCwgMjY4NjIsIDI2ODY1LCAyNjg2OSwgMjY4NzIsIDI2ODc2LCAyNjg3OSwgMjY4ODIsIDI2ODg2LCAKKyAgICAyNjg5MiwgMjY4OTYsIDI2OTAwLCAyNjkwNCwgMjY5MDgsIDI2OTEzLCAyNjkxOCwgMjY5MjMsIDI2OTI3LCAyNjkzMCwgCisgICAgMjY5MzUsIDI2OTQxLCAyNjk0NiwgMjY5NTIsIDI2OTU3LCAyNjk2MSwgMjY5NjcsIDI2OTcxLCAyNjk3NSwgMjY5ODAsIAorICAgIDI2OTg0LCAyNjk4OSwgMjY5OTQsIDI2OTk4LCAyNzAwMiwgMjcwMDksIDI3MDEzLCAyNzAxNiwgMjcwMjAsIDI3MDI0LCAKKyAgICAyNzAzMCwgMjcwMzYsIDI3MDQwLCAyNzA0NCwgMjcwNDksIDI3MDU2LCAyNzA2MiwgMjcwNjYsIDI3MDc1LCAyNzA3OSwgCisgICAgMjcwODMsIDI3MDg2LCAyNzA5MiwgMjcwOTcsIDI3MTAzLCAxNDU2LCAxNzg3LCAyNzEwOCwgMjcxMTMsIDI3MTE4LCAKKyAgICAyNzEyMywgMjcxMjgsIDI3MTMzLCAyNzEzOCwgMjE1OSwgMjIwNSwgMjcxNDMsIDI3MTQ2LCAyNzE1MCwgMjcxNTQsIAorICAgIDI3MTU5LCAyNzE2MywgMTYyMDAsIDI3MTY3LCAyNzE3MiwgMjcxNzcsIDI3MTgxLCAyNzE4NCwgMjcxODksIDI3MTkzLCAKKyAgICAyNzE5OCwgMjcyMDIsIDE2MjA0LCAyNzIwNywgMjcyMTAsIDI3MjEzLCAyNzIxNywgMjcyMjIsIDI3MjI2LCAyNzIzOSwgCisgICAgMjcyNDMsIDI3MjQ2LCAyNzI1NCwgMjcyNjMsIDI3MjcwLCAyNzI3NSwgMjcyODEsIDI3Mjg3LCAyNzI5NSwgMjczMDIsIAorICAgIDI3MzA5LCAyNzMxMywgMjczMTcsIDI3MzIxLCAyNzMyNiwgMjczMzEsIDI3MzM1LCAyNzM0MywgMjczNDgsIDI3MzYwLCAKKyAgICAyNzM3MSwgMjczNzYsIDI3MzgwLCAyNzM4NywgMjczOTEsIDI3Mzk2LCAyNzQwMiwgMjc0MDUsIDI3NDEwLCAyNzQxNSwgCisgICAgMjc0MTksIDI3NDIzLCAyNzQyNiwgMjc0MzIsIDgyNzIsIDIzMzUsIDI3NDM2LCAyNzQ0MSwgMjc0NTcsIDEwMjg4LCAKKyAgICAyNzQ3NywgMjc0ODYsIDI3NTAyLCAyNzUwNiwgMjc1MTMsIDI3NTE2LCAyNzUyMiwgMjc1MzIsIDI3NTM4LCAyNzU0NywgCisgICAgMjc1NjIsIDI3NTc0LCAyNzU4NSwgMjc1OTMsIDI3NjAyLCAyNzYwOCwgMjc2MTcsIDI3NjI3LCAyNzYzNywgMjc2NDgsIAorICAgIDI3NjU5LCAyNzY2OSwgMjc2NzgsIDI3Njg1LCAyNzY5NCwgMjc3MDIsIDI3NzA5LCAyNzcxNywgMjc3MjQsIDI3NzMxLCAKKyAgICAyNzc0NCwgMjc3NTEsIDI3NzU5LCAyNzc2NiwgMjc3NzIsIDI3Nzc3LCAyNzc4NiwgMjc3OTMsIDI3Nzk5LCAyNzgwNCwgCisgICAgMjc4MTIsIDI3ODE5LCAyNzgyNiwgMjU1MzAsIDI3ODM4LCAyNzg1MCwgMjc4NjQsIDI3ODcyLCAyNzg4MCwgMjc4ODcsIAorICAgIDI3ODk5LCAyNzkwOCwgMjc5MTcsIDI3OTI1LCAyNzkzMywgMjc5NDEsIDI3OTQ4LCAyNzk1NCwgMjc5NjMsIDI3OTcxLCAKKyAgICAyNzk4MSwgMjc5OTAsIDI4MDAwLCAyODAwOSwgMjgwMTgsIDI4MDI2LCAyODAzMSwgMjgwMzUsIDI4MDM4LCAyODA0MiwgCisgICAgMjgwNDYsIDI4MDUwLCAyODA1NCwgMjgwNTgsIDI4MDY0LCAyODA3MCwgMjgwNzUsIDI4MDgzLCAxNjI2MiwgMjgwOTAsIAorICAgIDI4MDk1LCAyODEwMiwgMjgxMDgsIDI4MTE1LCAxNjI3MCwgMjgxMjIsIDI4MTI1LCAyODEzNywgMjgxNDUsIDI4MTUxLCAKKyAgICAyODE1NiwgMjgxNjAsIDI4MTcxLCAxMDc0OSwgMjgxODEsIDI4MTg5LCAyODE5OSwgMjgyMDgsIDI4MjE1LCAyODIyMiwgCisgICAgMjgyMzAsIDI4MjM0LCAxNjI4MSwgMjgyMzcsIDI4MjQ0LCAyODI0OCwgMjgyNTQsIDI4MjU3LCAyODI2NCwgMjgyNzAsIAorICAgIDI4Mjc1LCAyODI4MiwgMjgyODgsIDI4MjkyLCAyODI5NywgMjgzMDEsIDI4MzEwLCAyODMxNywgMjgzMjMsIDgzMzAsIAorICAgIDI4MzMwLCAyODMzOCwgMjgzNDUsIDI4MzUxLCAyODM1NiwgMjgzNjIsIDI4MzY4LCAyODM3NiwgMjgzODIsIDI4Mzg2LCAKKyAgICAyODM4OSwgMjgzOTEsIDI4MDQzLCAyODQwMCwgMjg0MDYsIDI4NDEyLCAyODQyMiwgMjg0MjcsIDI4NDM0LCAyODQ0MCwgCisgICAgMjg0NDUsIDI4NDUwLCAyODQ1NSwgMjg0NTksIDI4NDY0LCAyODQ3MSwgMjg0NzcsIDI4NDg2LCAyODQ5MCwgMjg0OTcsIAorICAgIDI4NTAzLCAyODUxMiwgNDM5OCwgMjg1MTgsIDI4NTI0LCAyODUyOSwgMjg1MzYsIDI4NTQ3LCAyODU1MiwgMjg1NTYsIAorICAgIDI4NTY2LCAyODU3MiwgMjg1NzYsIDI4NTgxLCAyODU5MSwgMjg2MDAsIDI4NjA0LCAyODYxMSwgMjg2MTksIDI4NjI2LCAKKyAgICAyODYzMiwgMjg2MzcsIDI4NjQ1LCAyODY1MiwgMjg2NTcsIDI4NjY0LCAyODY3NiwgMjg2ODUsIDI4Njg5LCAxNDMyMiwgCisgICAgMjg2OTcsIDI4NzA3LCAyODcxMSwgMjcyNTAsIDI4NzIyLCAyODcyNywgMjg3MzEsIDI4NzM4LCAyODc0NSwgMjM4NzQsIAorICAgIDI3OTY4LCAyODc1MCwgMjg3NTQsIDI4NzU3LCAyNDkyOSwgMjg3NjIsIDI4Nzc2LCAyODc5MiwgMjg4MTAsIDI4ODI5LCAKKyAgICAyODg0NiwgMjg4NjQsIDI0OTQ4LCAyODg4MSwgMjg5MDEsIDI0OTY1LCAyODkxMywgMjg5MjUsIDE3MzE0LCAyODkzNywgCisgICAgMjQ5ODUsIDI4OTUxLCAyODk2MywgMTE1NTksIDI4OTc3LCAyODk4MiwgMjg5ODcsIDI4OTkyLCAyODk5OCwgMjkwMDQsIAorICAgIDI5MDEwLCAyOTAxNCwgMjkwMjIsIDI5MDI5LCAyOTAzNCwgMjkwNDQsIDI5MDUwLCAxMTE1NywgMjkwNTYsIDI5MDU4LCAKKyAgICAyOTA2MywgMjkwNzEsIDI5MDc1LCAyODQ2NywgMjkwODEsIDI5MDg4LCAxMjcxMSwgMTI3MjEsIDI5MDk1LCAyOTEwNSwgCisgICAgMjkxMTAsIDI5MTE0LCAyOTExNywgMjkxMjMsIDI5MTMxLCAyOTE0MywgMjkxNTMsIDI5MTY5LCAyOTE4MiwgMjkxOTYsIAorICAgIDE3MzMyLCAyOTIxMCwgMjkyMTcsIDI5MjIxLCAyOTIyNCwgMjkyMjksIDI5MjMzLCAyOTI0MCwgMjkyNDcsIDI5MjU0LCAKKyAgICAyOTI2NCwgMjkyNjksIDI5Mjc0LCAyOTI3OSwgMjkyODcsIDI5Mjk1LCAyOTMwMCwgMjkzMDksIDI5MzE0LCAzMzQyLCAKKyAgICAyOTMxOCwgMjkzMjEsIDI5MzI0LCAyOTMyOSwgMjkzMzYsIDI5MzQxLCAyOTM1NywgMjkzNjUsIDI5MzczLCAxMDA1NiwgCisgICAgMjkzODEsIDI5Mzg2LCAyOTM5MCwgMjkzOTYsIDI5NDAxLCAyOTQwNywgMjk0MTAsIDI5NDE2LCAyOTQyOCwgMjk0MzYsIAorICAgIDI5NDQzLCAyOTQ0OSwgMjk0NTYsIDI5NDY3LCAyOTQ4MSwgMjk0OTQsIDI5NTAwLCAyOTUwOSwgMjk1MTUsIDI5NTI0LCAKKyAgICAyOTUzNiwgMjk1NDcsIDI5NTU3LCAyOTU2NiwgMjk1NzUsIDI5NTgzLCAyOTU5NCwgODMxMiwgMjk2MDEsIDI5NjA4LCAKKyAgICAyOTYxNCwgMjk2MTksIDI5NjI1LCAyOTYzMiwgMjk2NDMsIDI5NjUzLCAyOTY2MywgMjk2NzIsIDI5Njc4LCAyOTY4NSwgCisgICAgMjk2OTAsIDI5Njk4LCAyOTcwNSwgMjk3MTMsIDI5NzIxLCAyOTczMywgNjU4NywgMTAyOCwgMjk3NDAsIDI5NzQ5LCAKKyAgICAyOTc1NywgMjk3NjMsIDI5NzY5LCAyOTc3NCwgMjk3NzgsIDI5NzgxLCAyOTc4NywgMjk3OTQsIDI5Nzk5LCAyOTgwNCwgCisgICAgMjk4MDksIDI5ODEzLCAyOTgyNSwgMjk4MzYsIDI5ODQ1LCAyOTg1MywgMTY0NDYsIDI5ODU4LCAyOTg2NiwgMjk4NzEsIAorICAgIDI5ODc3LCAyOTg4MywgMTI3MDQsIDkxMDMsIDI5ODg4LCAyOTg5MiwgMjk4OTYsIDI5ODk5LCAyOTkwMiwgMjk5MDgsIAorICAgIDI5OTE2LCAyOTkyNCwgMjk5MjgsIDI5OTMyLCAyOTkzNywgMjk5NDAsIDI5OTQ5LCAyOTk1MywgMjk5NTYsIDI5OTY0LCAKKyAgICAyOTk3NSwgMjk5NzksIDI5OTg1LCAyOTk5MSwgMjk5OTUsIDMwMDAxLCAzMDAwOSwgMzAwMzEsIDMwMDU1LCAzMDA2NCwgCisgICAgMzAwNzEsIDMwMDc4LCAzMDA4NCwgMzAwOTIsIDMwMDk4LCAzMDEwMywgMzAxMTQsIDMwMTMyLCAzMDEzOSwgMzAxNDcsIAorICAgIDMwMTUxLCAzMDE1NiwgMzAxNjUsIDMwMTc4LCAzMDE4NiwgMzAxOTgsIDMwMjA5LCAzMDIyMCwgMzAyMzAsIDMwMjQ0LCAKKyAgICAzMDI1MywgMzAyNjEsIDMwMjczLCAxMDMwNSwgMzAyODQsIDMwMjk1LCAzMDMwNywgMzAzMTcsIDMwMzI2LCAzMDMzMSwgCisgICAgMzAzMzUsIDMwMzQzLCAzMDM1NCwgMzAzNjQsIDMwMzY5LCAzMDM3MywgMzAzNzYsIDMwMzc5LCAzMDM4NywgMzAzOTUsIAorICAgIDMwNDA0LCAzMDQxNCwgMzA0MjMsIDMwNDI5LCAzMDQ0MywgMjY5MSwgMzA0NjUsIDMwNDc2LCAzMDQ4NSwgMzA0OTUsIAorICAgIDMwNTA3LCAzMDUxNiwgMzA1MjUsIDMwNTM1LCAzMDU0MywgMzA1NTEsIDMwNTYwLCAzMDU2NSwgMzA1NzYsIDMwNTgxLCAKKyAgICAzMDU5MCwgMzA2MDEsIDMwNjA1LCAzMDYwOCwgMzA2MTgsIDMwNjI3LCAzMDYzNSwgMzA2NDUsIDMwNjU1LCAzMDY2MywgCisgICAgMzA2NzIsIDMwNjc5LCAzMDY4NywgMzA2OTQsIDMwNzAzLCAzMDcxMiwgMzA3MTcsIDMwNzIxLCAzMDcyOSwgMzA3MzYsIAorICAgIDMwNzQ0LCAzMDc1MSwgMzA3NjIsIDMwNzc3LCAzMDc4NCwgMzA3OTAsIDMwODAwLCAzMDgwOSwgMzA4MTUsIDMwODI2LCAKKyAgICAzMDgzMCwgMzA4MzcsIDMwODQxLCAzMDg0NywgMTUzODIsIDMwODUzLCAzMDg1NywgMzA4NjIsIDMwODY4LCAzMDg3NSwgCisgICAgMzA4NzksIDMwODgzLCAzMDg5MSwgMzA4OTksIDMwOTA1LCAzMDkxNCwgMzA5MjEsIDMwOTI2LCAzMDkzMSwgMzA5NDEsIAorICAgIDI1NTk5LCAzMDk0NSwgMzA5NDgsIDMwOTUzLCAzMDk1OCwgMzA5NjMsIDMwOTY4LCAzMDk3MywgMzA5NzgsIDMwOTgzLCAKKyAgICAzMDk4OCwgMzA5OTQsIDMwOTk5LCAzMTAwNCwgMzEwMTAsIDExODAsIDY3NiwgMzEwMTUsIDMxMDI0LCAyMzgzLCAzMTAzMSwgCisgICAgMzEwMzYsIDMxMDQwLCAzMTA0NiwgMTIyOSwgNTkxLCAzMTA1MSwgMjk2LCAzMTA1NSwgMzEwNjQsIDMxMDcyLCAzMTA4MSwgCisgICAgMzEwODksIDMxMTAwLCAzMTEwOCwgMzExMTcsIDMxMTI1LCAzMTEzMCwgMTA4OTUsIDMxMTM0LCAzMTE0MiwgMzExNTAsIAorICAgIDMxMTU1LCAxNjIxNywgMzgyMywgMzExNjEsIDMxMTY3LCAzMTE3MywgNjE2OCwgMzExNzgsIDMxMTgyLCAzMTE4OCwgCisgICAgMzExOTIsIDMxMTk4LCAzMTIwMywgMzEyMTAsIDE0MjIsIDMxMjE2LCAzMTIyMywgMzEyMjcsIDEzMjksIDYxNzYsIDMxMjMyLCAKKyAgICAzMTI0MiwgMzEyNTAsIDMxMjU2LCAzMTI2NiwgMzEyNzUsIDMxMjgzLCAzMTI4OSwgMzEyOTQsIDMxMzAyLCAzMTMwOSwgCisgICAgMTIyNDYsIDMxMzE1LCAzMTMyMiwgMzEzMjcsIDMxMzM0LCAxNDc1LCAyMjUsIDIxNTgsIDMxMzQwLCAzMTM0NiwgMzEzNTMsIAorICAgIDMxMzY0LCAzMTM3NSwgMzEzODMsIDMxMzkwLCAzMTQwMCwgMzE0MDksIDMxNDE3LCAzMTQyNiwgMzE0MzMsIDMxNDQwLCAKKyAgICAzMTQ1MywgMzE0NjAsIDMxNDY2LCAzMTQ3NywgMzE0OTYsIDEyMzQsIDMxNTAxLCAzMTUwNiwgMzE1MTQsIDM3NDEsIAorICAgIDMxNTE4LCAzMTUyMywgMzE1MjcsIDMxNTMxLCAxNDI2LCAyNjg2MywgMzE1NDEsIDMxNTQ1LCAzMTU1MCwgMzE1NTQsIAorICAgIDM2MDgsIDMxNTYwLCAzMTU2OCwgMzE1NzUsIDMxNTg2LCAzMTU5NCwgMzE2MTksIDMxNjI3LCAzMTYzMiwgMzc0MiwgMzUyLCAKKyAgICAzMTYzOCwgMzE2NDYsIDMxNjU0LCAzMTY2MSwgMzE2NjcsIDMxNjcyLCAyMjI3LCAxMTcyNiwgMzE2NzksIDMxNjg1LCAKKyAgICAyODI5MywgMjg1NDIsIDMxNjkxLCA1ODcsIDEwNiwgMzE2OTUsIDMxNjk5LCAzMTcwNSwgNjg5LCA5OTMxLCAzMTcxMCwgCisgICAgMzE3MTcsIDMxNzIzLCAzMTcyNywgMzE3MzEsIDE2MjAsIDMxNzM0LCAzMTczOCwgMTY2OTksIDMxNzQxLCAzMTc0NiwgCisgICAgMzE3NTMsIDMxNzU5LCAzMTc2NCwgMzE3NzIsIDMxNzc5LCAzMTc4NSwgMjQzNDEsIDMxNzg5LCAzMTc5MywgMzE3OTcsIAorICAgIDM4MTIsIDE4MzQ0LCAzMTgwMSwgMzE4MDYsIDMxODEwLCAzMTgxMywgMzE4MjEsIDMxODI5LCAzMTgzNCwgMzE4NDMsIAorICAgIDMxODUxLCAzMTg1NCwgMzE4NjEsIDMxODcxLCAzMTg4MywgMzE4ODgsIDMxODkyLCAzMTkwMCwgMzE5MDcsIDMxOTEzLCAKKyAgICAzMTkyMCwgMzE5MjcsIDMxOTMwLCAzMTkzNCwgMzE5MzgsIDE0MzAsIDMxOTQ4LCAzMTk1MCwgMzE5NTUsIDMxOTYxLCAKKyAgICAzMTk2NywgMzE5NzIsIDMxOTc3LCAzMTk4MiwgMzE5ODcsIDMxOTkyLCAzMTk5NywgMzIwMDIsIDMyMDA3LCAzMjAxMiwgCisgICAgMzIwMTcsIDMyMDIyLCAzMjAyNywgMzIwMzIsIDMyMDM3LCAzMjA0MywgMzIwNDksIDMyMDU1LCAzMjA2MSwgMzIwNjYsIAorICAgIDMyMDcxLCAzMjA3NiwgMzIwODIsIDMyMDg3LCAzMjA5MiwgMzIwOTcsIDMyMTAzLCAzMjEwOCwgMzIxMTQsIDMyMTE5LCAKKyAgICAzMjEyNCwgMzIxMjksIDMyMTM0LCAzMjE0MCwgMzIxNDUsIDMyMTUxLCAzMjE1NiwgMzIxNjEsIDMyMTY2LCAzMjE3MSwgCisgICAgMzIxNzcsIDMyMTgyLCAzMjE4OCwgMzIxOTMsIDMyMTk4LCAzMjIwMywgMzIyMDgsIDMyMjEzLCAzMjIxOCwgMzIyMjMsIAorICAgIDMyMjI4LCAzMjIzMywgMzIyMzksIDMyMjQ1LCAzMjI1MSwgMzIyNTYsIDMyMjYxLCAzMjI2NiwgMzIyNzEsIDMyMjc3LCAKKyAgICAzMjI4MywgMzIyODksIDMyMjk1LCAzMjMwMSwgMzIzMDcsIDMyMzEyLCAzMjMxOCwgMzIzMjMsIDMyMzI4LCAzMjMzMywgCisgICAgMzIzMzgsIDMyMzQ0LCAyNDY3LCAzMjM0OSwgMjQ3NCwgMjQ4MSwgMjc4MiwgMzIzNTQsIDI0ODcsIDI0OTcsIDMyMzYwLCAKKyAgICAzMjM2NCwgMzIzNjksIDMyMzc0LCAzMjM4MCwgMzIzODUsIDMyMzkwLCAzMjM5NCwgMzIzOTksIDMyNDA1LCAzMjQxMCwgCisgICAgMzI0MTUsIDMyNDIwLCAzMjQyNiwgMzI0MzEsIDMyNDM1LCAzMjQzOSwgMzI0NDQsIDMyNDQ5LCAzMjQ1NCwgMzI0NTksIAorICAgIDMyNDY0LCAzMjQ3MCwgMzI0NzYsIDMyNDgxLCAzMjQ4NSwgMzI0OTAsIDMyNDk2LCAzMjUwMCwgMzI1MDUsIDMyNTEwLCAKKyAgICAzMjUxNSwgMzI1MjAsIDMyNTI0LCAzMjUyNywgMzI1MzIsIDMyNTM3LCAzMjU0MiwgMzI1NDcsIDMyNTUyLCAzMjU1OCwgCisgICAgMzI1NjQsIDMyNTY5LCAzMjU3NCwgMzI1NzksIDMyNTgzLCAzMjU4OCwgMzI1OTMsIDMyNTk4LCAzMjYwMywgMzI2MDgsIAorICAgIDMyNjEzLCAzMjYxNywgMzI2MjIsIDMyNjI3LCAzMjYzMiwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgMzI2NDksIDMyNjU3LCAKKyAgICAzMjY2MiwgMzI2NjcsIDMyNjczLCAzMjY3OSwgMzI2ODUsIDMyNjkwLCAzMjY5NCwgMzI2OTcsIDMyNzAyLCAzMjcwNywgCisgICAgMzI3MTEsIDMyNzE2LCAzMjcyMSwgMzI3MjUsIDMyNzMwLCAzMjczNCwgMzI3MzcsIDMyNzQyLCAzOTE5LCAxOTA4MywgCisgICAgMzI3NDcsIDMyNzUyLCAzMjc1NywgMzI3NjUsIDIzMTUxLCAzMTIyMCwgOTYwMSwgMzI3NzAsIDMyNzc1LCAzMjc3OSwgCisgICAgMzI3ODQsIDMyNzg4LCAzMjc5MiwgMzI3OTcsIDMyODAxLCAzMjgwNCwgMzI4MDcsIDMyODExLCAzMjgxNiwgMzI4MjAsIAorICAgIDMyODI4LCAzMjgzMiwgMzI4MzUsIDMyODQwLCAzMjg0NCwgMzI4NDgsIDMyODUzLCAzMjg1OCwgMzI4NjIsIDMyODY4LCAKKyAgICAzMjg3MywgMzI4NzgsIDMyODg1LCAzMjg5MiwgMzI4OTYsIDMyODk5LCAzMjkwNSwgMzI5MTQsIDMyOTIxLCAzMjkyOSwgCisgICAgMzI5MzYsIDMyOTQwLCAzMjk0NSwgMzI5NDksIDMyOTUzLCAzMjk1OSwgMzI5NjUsIDMyOTY5LCAzMjk3NSwgMzI5ODAsIAorICAgIDMyOTg1LCAzMjk4OSwgMzI5OTYsIDMzMDAyLCAzMzAwOCwgMzMwMTQsIDMzMDIwLCAzMzAyNywgMzMwMzMsIDMzMDM5LCAKKyAgICAzMzA0NSwgMzMwNTEsIDMzMDU3LCAzMzA2MywgMzMwNjksIDMzMDc2LCAzMzA4MiwgMzMwODksIDMzMDk1LCAzMzEwMSwgCisgICAgMzMxMDcsIDMzMTEzLCAzMzExOSwgMzMxMjUsIDMzMTMxLCAzMzEzNywgMzMxNDMsIDEyNTg5LCAzMzE0OSwgMzMxNTUsIAorICAgIDMzMTYwLCAzMzE2NSwgMzMxNzAsIDMzMTczLCAzMzE3OSwgMzMxODcsIDMzMTkyLCAzMzE5NiwgMzMyMDEsIDMzMjA3LCAKKyAgICAzMzIxNiwgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQxLCAzMzI0NiwgMzMyNTEsIDMzMjU2LCAzMzI2MSwgCisgICAgMzMyNjYsIDMzMjczLCAzMzI4MCwgMzMyODYsIDMzMjkyLCAzMzI5NywgMTc5ODAsIDMzMzA0LCAzMzMxMCwgMzMzMTcsIAorICAgIDMzMzIzLCAzMzMyOSwgMzMzMzQsIDMzMzQyLCAzMzM0NywgMTA0NzAsIDMzMzUxLCAzMzM1NiwgMzMzNjEsIDMzMzY3LCAKKyAgICAzMzM3MiwgMzMzNzcsIDMzMzgxLCAzMzM4NiwgMzMzOTEsIDMzMzk3LCAzMzQwMiwgMzM0MDcsIDMzNDEyLCAzMzQxNiwgCisgICAgMzM0MjEsIDMzNDI2LCAzMzQzMCwgMzM0MzUsIDMzNDQwLCAzMzQ0NCwgMzM0NDksIDMzNDUzLCAzMzQ1OCwgMzM0NjMsIAorICAgIDMzNDY4LCAzMzQ3MiwgMzM0NzcsIDMzNDgxLCAzMzQ4NSwgMTY4MDUsIDMzNDkwLCAzMzQ5OSwgMzM1MDUsIDMzNTExLCAKKyAgICAzMzUyMCwgMzM1MjgsIDMzNTM3LCAzMzU0NSwgMzM1NTAsIDMzNTU0LCAzMzU2MSwgMzM1NjcsIDMzNTc1LCAzMzU3OSwgCisgICAgMzM1ODIsIDMzNTg3LCAzMzU5MSwgMzM2MDAsIDMzNjA4LCAzMzYyNiwgMzM2MzIsIDE0NzQsIDMzNjM4LCAzMzY0MSwgCisgICAgMzM2NDUsIDI0NDQ3LCAyNDQ1MywgMzM2NTEsIDMzNjU1LCAzMzY2NiwgMzM2NzcsIDMzNjg4LCAzMzcwMCwgMzM3MDQsIAorICAgIDMzNzExLCAzMzcxOCwgMzM3MjUsIDMzNzMwLCAzMzczNCwgNjIyNCwgOTYzLCAyMzE1MCwgMzM3NDIsIDMzNzQ3LCAzMzc1MSwgCisgICAgMzM3NTYsIDMzNzYwLCAzMzc2NiwgMzM3NzEsIDMzNzc3LCAzMzc4MiwgMzM3ODgsIDMzNzkzLCAzMzc5OSwgMzM4MDQsIAorICAgIDMzODEwLCAzMzgxNiwgMzM4MjIsIDMzODI3LCAzMzc4MywgMzM3ODksIDMzODMxLCAzMzgzNiwgMzM4NDIsIDMzODQ3LCAKKyAgICAzMzg1MywgMzM4NTgsIDMzODY0LCAzMzg2OSwgMzM3OTQsIDExNDEyLCAzMzg3MywgMzM4MDUsIDMzODExLCAzMzgxNywgCisgICAgMjg3NCwgMzUyMiwgMzM4NzksIDMzODgyLCAzMzg4NywgMzM4OTMsIDMzODk5LCAzMzkwNSwgMzM5MTIsIDMzOTE4LCAKKyAgICAzMzkyNCwgMzM5MzAsIDMzOTM2LCAzMzk0MiwgMzM5NDgsIDMzOTU0LCAzMzk2MCwgMzM5NjYsIDMzOTcyLCAzMzk3OCwgCisgICAgMzM5ODQsIDMzOTkxLCAzMzk5NywgMzQwMDMsIDM0MDA5LCAzNDAxNSwgMzQwMjEsIDM0MDI0LCAzNDAyOSwgMzQwMzIsIAorICAgIDM0MDM5LCAzNDA0NCwgMzQwNTIsIDM0MDU3LCAzNDA2MiwgMzQwNjgsIDM0MDczLCAzNDA3OCwgMzQwODIsIDM0MDg3LCAKKyAgICAzNDA5MywgMzQwOTgsIDM0MTA0LCAzNDEwOSwgMzQxMTUsIDM0MTIwLCAzNDEyNiwgMzQxMzIsIDM0MTM2LCAzNDE0MSwgCisgICAgMzQxNDYsIDM0MTUxLCAzNDE1NiwgMzQxNjAsIDM0MTY1LCAzNDE3MCwgMzQxNzUsIDM0MTgxLCAzNDE4NywgMzQxOTMsIAorICAgIDM0MTk5LCAzNDIwNCwgMzQyMDgsIDM0MjExLCAzNDIxNywgMzQyMjMsIDM0MjMyLCAzNDI0MCwgMzQyNDcsIDM0MjUyLCAKKyAgICAzNDI1NiwgMzQyNjAsIDM0MjY1LCAxNjY1MywgMzQyNzAsIDM0Mjc4LCAzNDI4NCwgMzg2NSwgMTMzOSwgMzQyODksIAorICAgIDM0MjkzLCA4MzgzLCAzNDI5OSwgMzQzMDUsIDM0MzEyLCA4MzkyLCAzNDMxNiwgMzQzMjIsIDM0MzI5LCAzNDMzNSwgCisgICAgMzQzNDQsIDM0MzUyLCA5Mjk5LCAzNDM2NCwgMzQzNjgsIDM0Mzc1LCAzNDM4MSwgMzQzODYsIDM0MzkwLCAzNDM5NCwgCisgICAgMzQzOTcsIDM0NDA3LCAzNDQxNiwgMzQ0MjQsIDMzNzg0LCAzNDQyOSwgMzQ0MzksIDM0NDQ5LCAzNDQ1OSwgMzQ0NjUsIAorICAgIDM0NDcwLCAzNDQ4MCwgMzQ0ODUsIDM0NDk4LCAzNDUxMiwgMzQ1MjMsIDM0NTM1LCAzNDU0NywgMzQ1NjEsIDM0NTc0LCAKKyAgICAzNDU4NiwgMzQ1OTgsIDE2MDE2LCAzNDYxMiwgMzQ2MTcsIDM0NjIyLCAzNDYyNiwgMzQ2MzAsIDM0NjM0LCAxNzc2LCAKKyAgICAyOTU0NSwgMzQ2MzgsIDM0NjQzLCAzMzgzMiwgMzQ2NDgsIDM0NjUxLCAzNDY1NiwgMzQ2NjEsIDM0NjY2LCAzNDY3MiwgCisgICAgMzQ2NzgsIDExMDcyLCAzNDY4MywgMzQ2ODksIDM0Njk2LCAxNzI2NiwgMzQ3MDIsIDM0NzA3LCAzNDcxMiwgMzQ3MTYsIAorICAgIDM0NzIxLCAzNDcyNiwgMzM4MzcsIDM0NzMxLCAzNDczNiwgMzQ3NDEsIDM0NzQ3LCAzMzg0MywgMzQ3NTIsIDM0NzU1LCAKKyAgICAzNDc2MiwgMzQ3NzAsIDM0Nzc2LCAzNDc4MiwgMzQ3ODgsIDM0Nzk5LCAzNDgwNCwgMzQ4MTEsIDM0ODE4LCAzNDgyNSwgCisgICAgMzQ4MzMsIDM0ODQyLCAzNDg1MSwgMzQ4NTcsIDM0ODYzLCAzNDg3MSwgMzM4NDgsIDM0ODc2LCAzNDg4MiwgMzQ4ODgsIAorICAgIDMzODU0LCAzNDg5MywgMzQ4OTgsIDM0OTA2LCAzNDkxNCwgMzQ5MjAsIDM0OTI3LCAzNDkzMywgMzQ5NDAsIDM0OTQ3LCAKKyAgICAzNDk1MywgMzQ5NjEsIDM0OTcxLCAzNDk3OCwgMzQ5ODQsIDM0OTg5LCAzNDk5NSwgMzUwMDAsIDM1MDA1LCAzNTAxMiwgCisgICAgMzUwMjEsIDM1MDI5LCAzNTAzNCwgMzUwNDAsIDM1MDQ3LCAzNTA1NSwgMzUwNjEsIDM1MDY2LCAzNTA3MiwgMzUwODEsIAorICAgIDM1MDg4LCAzMDQwOSwgMzUwOTQsIDM1MDk4LCAzNTEwMywgMzUxMTIsIDM1MTE3LCAzNTEyMiwgMzUxMjcsIDEzNjU4LCAKKyAgICAzNTEzNSwgMzUxNDAsIDM1MTQ1LCAzNTE1MCwgMzUxNTQsIDM1MTU5LCAzNTE2NCwgMzUxNzEsIDM1MTc2LCAzNTE4MSwgCisgICAgMzUxODYsIDMzODU5LCAyMzA4NywgMzUxOTIsIDI1NDMsIDE1NSwgMzUxOTUsIDM1MTk4LCAzNTIwMiwgMzUyMDYsIDM1MjE2LCAKKyAgICAzNTIyNCwgMzUyMzEsIDM1MjM1LCAzNTIzOCwgMzUyNDYsIDM1MjUzLCAzNTI2MCwgMzUyNjksIDM1MjczLCAzNTI3NiwgCisgICAgMzUyODIsIDM1Mjg2LCAzNTI5NCwgMzUzMDIsIDM1MzA2LCAzNTMxMCwgMzUzMTMsIDM1MzE5LCAzNTMyNiwgMzUzMzAsIAorICAgIDM1MzM0LCAzNTM0MSwgMzUzNDksIDMzNzk1LCAzNTM1NiwgMzUzNjQsIDM1MzY5LCAxMTEzMiwgNjAwLCAzNzUsIDM1MzgxLCAKKyAgICAzNTM4NiwgMzUzOTEsIDM1Mzk3LCAzNTQwMiwgMzU0MDcsIDM4ODYsIDM1NDEyLCAzNTQxNSwgMzU0MjAsIDM1NDI1LCAKKyAgICAzNTQzMCwgMzU0MzUsIDM1NDQwLCAzNTQ0NywgMjQ1NjUsIDM1NDUyLCAzNTQ1NywgMzU0NjIsIDM1NDY3LCAzNTQ3MiwgCisgICAgMzU0NzgsIDM1NDgzLCAzNTQ4OSwgMzQwMzUsIDM1NDk1LCAzNTUwMCwgMzU1MDYsIDM1NTEyLCAzNTUyMiwgMzU1MjcsIAorICAgIDM1NTMyLCAzNTUzNiwgMzU1NDEsIDM1NTQ2LCAzNTU1MSwgMzU1NTYsIDM1NTY5LCAzNTU3NCwgMjQyMjgsIDE4NDE5LCAKKyAgICAzODk5LCAzNTU3OCwgMzU1ODQsIDM1NTg5LCAzNTU5NCwgMzU2MDAsIDM1NjA1LCAzNTYxMCwgMzU2MTQsIDM1NjE5LCAKKyAgICAzNTYyNCwgMzU2MzAsIDM1NjM1LCAzNTY0MCwgMTM0NCwgMzU2NDQsIDM1NjQ5LCAzNTY1NCwgMzU2NTksIDM1NjYzLCAKKyAgICAzNTY2OCwgMzU2NzMsIDM1Njc4LCAzNTY4NCwgMzU2OTAsIDM1Njk1LCAzNTY5OSwgMzU3MDMsIDM1NzA4LCAzNTcxMywgCisgICAgMzU3MTgsIDM1NzIyLCAzNTczMCwgMzU3MzQsIDM1NzQwLCAzNTc0NCwgMzU3NTEsIDM1NzYwLCAxODIwMywgMzM4MDYsIAorICAgIDM1NzY2LCAzNTc3MywgMzU3ODEsIDM1Nzg4LCAzNTc5NCwgMzU4MDcsIDM1ODE5LCAzNTgyNCwgMzU4MzAsIDM1ODM0LCAKKyAgICAyODAxLCAzNTgzOCwgMzU4NDIsIDM1MzIxLCAzNTg1MSwgMzU4NjIsIDM1ODY3LCAzMDQ3MiwgMzU4NzIsIDM1ODc3LCAKKyAgICAzNTg4MSwgMzU4ODYsIDI0NDU4LCAzNTg5MCwgMzU4OTQsIDM1ODk5LCAzMzgxMiwgMjMxNzcsIDM1OTAzLCAzNTkwOCwgCisgICAgMzU5MTQsIDM1OTE5LCAzNTkyMywgMzU5MjcsIDM1OTMwLCAzNTkzNCwgMzU5NDAsIDM1OTQ5LCAzNTk2MCwgMzU5NzIsIAorICAgIDMzODE4LCAzNTk3NywgMzU5ODAsIDM1OTg0LCAzNTk4OCwgNDE0LCAzNTk5MywgMzU5OTgsIDM2MDAzLCAzNjAwOCwgCisgICAgMzYwMTMsIDM2MDE4LCAzNjAyNCwgMzYwMjksIDM2MDM0LCAzNjA0MCwgMzYwNDUsIDM2MDUxLCAzNjA1NiwgMzYwNjIsIAorICAgIDM2MDY3LCAzNjA3MiwgMzYwNzcsIDM2MDgyLCAzNjA4NywgMzYwOTIsIDM2MDk3LCAzNjEwMiwgMzYxMDgsIDM2MTEzLCAKKyAgICAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzMywgMzYxMzgsIDM2MTQzLCAzNjE0OSwgMzYxNTUsIDM2MTYwLCAzNjE2NSwgCisgICAgMzYxNzAsIDM2MTc1LCAzNjE4MCwgMzYxODUsIDM2MTkwLCAzNjE5NSwgMzYyMDAsIDM2MjA1LCAzNjIxMCwgMzYyMTUsIAorICAgIDM2MjIwLCAzNjIyNSwgMzYyMzAsIDM2MjM1LCAzNjI0MCwgMzYyNDUsIDM2MjUxLCAzMjYsIDksIDM2MjU2LCAzNjI2MCwgCisgICAgMzYyNjQsIDM2MjcyLCAzNjI3NiwgMzYyODAsIDM2MjgzLCAzNjI4NiwgMzYyODgsIDM2MjkzLCAzNjI5NywgMzYzMDIsIAorICAgIDM2MzA2LCAzNjMxMSwgMzYzMTUsIDM2MzIwLCAzNjMyNCwgMzYzMjcsIDM2MzI5LCAzNjMzMywgMzYzMzgsIDM2MzQyLCAKKyAgICAzNjM1MywgMzYzNTYsIDM2MzU4LCAzNjM2MiwgMzYzNzQsIDM2MzgzLCAzNjM4NywgMzYzOTEsIDM2Mzk3LCAzNjQwMiwgCisgICAgMzY0MTEsIDM2NDE3LCAzNjQyMiwgMzY0MjcsIDM2NDMxLCAzNjQzNSwgMzY0NDAsIDM2NDQ3LCAzNjQ1MiwgMzY0NTgsIAorICAgIDM2NDYzLCAzNjQ2NywgMzY0NzQsIDI3OTc2LCAyNzk4NiwgMzY0NzgsIDM2NDgzLCAzNjQ4OCwgMzY0OTMsIDM2NTAwLCAKKyAgICAzNjUwNCwgMzY1MTEsIDM2NTE3LCA4NTMyLCAzNjUyMSwgMzY1MzAsIDM2NTM4LCAzNjU1MywgMzY1NjcsIDM2NTc2LCAKKyAgICAzNjU4NCwgMzY1OTUsIDM2NjA0LCAzNjYwOSwgMzY2MTYsIDc1ODAsIDM2NjI2LCAzNjYzMSwgMzY2MzYsIDM2NjQwLCAKKyAgICAzNjY0MywgMzY2NDgsIDM2NjUyLCAzNjY1NywgMzY2NjEsIDM2NjY4LCAzNjY3MywgMzY2NzgsIDM2NjgzLCA5NDc0LCAKKyAgICAzNjY5MywgMzY2OTUsIDM2Njk4LCAzNjcwMSwgMzY3MDUsIDM2NzExLCAzNjcxNSwgMzY3MjAsIDM2NzI1LCAzNjc0MywgCisgICAgMzY3NTcsIDM2Nzc2LCAzNjc5MywgMzY4MDIsIDM2ODEwLCAzNjgxNSwgMzY4MjAsIDE0NjcsIDM2ODI2LCAzNjgzMiwgCisgICAgMzY4MzcsIDM2ODQ3LCAzNjg1NiwgMzY4NjQsIDM2ODY5LCAzNjg3NSwgMzY4ODAsIDM2ODg5LCAzNjkwMCwgMzY5MDUsIAorICAgIDM2OTEyLCAzNjkxOCwgMzY5MjIsIDM2OTI5LCAzNjkzNywgMzY5NDQsIDM2OTU3LCAzNjk2NSwgMzY5NjksIDM2OTc5LCAKKyAgICAzNjk4NCwgMzY5ODgsIDM2OTk2LCAzNzAwNCwgMzcwMDksIDM3MDEzLCAzNzAxNywgMzcwMjYsIDM3MDMyLCAzNzAzNywgCisgICAgMzcwNDUsIDM3MDU1LCAzNzA2NCwgMzcwNzMsIDM3MDgyLCAzNzA5MywgMzcxMDEsIDM3MTEyLCAzNzEyMSwgMzcxMjgsIAorICAgIDM3MTM0LCAzNzEzOSwgMzcxNTAsIDM3MTYxLCAzNzE2NiwgMzcxNzAsIDM3MTczLCAzNzE3NywgMzcxODUsIDM3MTkxLCAKKyAgICAzNzIwMiwgMzcyMTMsIDM3MjI0LCAzNzIzNSwgMzcyNDYsIDM3MjU3LCAzNzI2OCwgMzcyNzksIDM3MjkxLCAzNzMwMywgCisgICAgMzczMTUsIDM3MzI3LCAzNzMzOSwgMzczNTEsIDM3MzYzLCAzNzM3MiwgMzczNzYsIDM3Mzg0LCAzNzM5MCwgMzczOTYsIAorICAgIDM3NDAzLCAzNzQwOSwgMzc0MTQsIDM3NDIwLCAyNDQyLCAzNzQyNCwgMzc0MjYsIDM3NDMxLCAzNzQzNiwgMzc0NDEsIAorICAgIDM3NDQ0LCAzNzQ0NiwgMzc0NTAsIDM3NDUzLCAzNzQ2MCwgMzc0NjQsIDEwNzYyLCAzNzQ2OCwgMzc0NzQsIDM3NDg0LCAKKyAgICAzNzQ4OSwgMzc0OTUsIDM3NDk5LCAzNzUwNCwgMzc1MTcsIDI4NDE3LCAzNzUyMywgMzc1MzIsIDM3NTQxLCAxOTI4MSwgCisgICAgMzc1NDgsIDM3NTU3LCAzNDQ0NSwgMzc1NjUsIDM3NTcwLCAzNzU3NCwgMzc1ODMsIDM3NTkxLCAzNzU5OCwgMzc2MDMsIAorICAgIDM3NjA3LCAzNzYxMiwgMzc2MTcsIDM3NjI1LCAzNzYyOSwgMzc2MzcsIDM3NjQzLCAzNzY0OSwgMzc2NTQsIDM3NjU5LCAKKyAgICAzNzY2MywgMzc2NjYsIDM3NjcxLCAzNzY4NCwgMzc3MDAsIDI1MDU1LCAzNzcxNywgMzc3MjksIDM3NzQ2LCAzNzc1OCwgCisgICAgMzc3NzIsIDI1MDcyLCAyNTA5MSwgMzc3ODQsIDM3Nzk2LCAyNzA4LCAzNzgxMCwgMzc4MTUsIDM3ODIwLCAzNzgyNSwgCisgICAgMzc4MjksIDM3ODM2LCAzNzg0OCwgMzc4NTUsIDM3ODY0LCAzNzg2NywgMzc4NzgsIDM3ODg5LCAzNzg5NCwgMzQ4NjgsIAorICAgIDg5MywgMzc4OTgsIDM3OTAyLCAzNzkwNiwgMzc5MDksIDM3OTE0LCAzNzkxOSwgMzc5MjUsIDM3OTMwLCAzNzkzNSwgCisgICAgMzc5NDEsIDM3OTQ3LCAzNzk1MiwgMzc5NTYsIDM3OTYxLCAzNzk2NiwgMzc5NzEsIDM3OTc1LCAzNzk3OCwgMzc5ODQsIAorICAgIDM3OTg5LCAzNzk5NCwgMzc5OTksIDM4MDAzLCAzODAwOCwgMzgwMTQsIDM4MDIyLCAyODY2OSwgMzgwMjcsIDM4MDMyLCAKKyAgICAzODAzOSwgMzgwNDUsIDM4MDUxLCAzODA1NiwgMzgwNjQsIDI0NTc0LCAzODA3MSwgMzgwNzYsIDM4MDgxLCAzODA4NiwgCisgICAgMzgwOTAsIDM4MDkzLCAzODA5OCwgMzgxMDIsIDM4MTA2LCAzODExMywgMzgxMTksIDM4MTI1LCAzODEzMSwgMzgxMzgsIAorICAgIDM4MTQzLCAzODE0OSwgMzY5OTksIDM4MTUzLCAzODE1NywgMzgxNjIsIDM4MTc1LCAzODE4MCwgMzgxODYsIDM4MTk0LCAKKyAgICAzODIwMSwgMzgyMDksIDM4MjE5LCAzODIyNSwgMzgyMzEsIDM4MjM3LCAzODI0MSwgMzgyNTAsIDM4MjU4LCAzODI2NSwgCisgICAgMzgyNzAsIDM4Mjc1LCAxMTQzNSwgMzgyODAsIDM4Mjg3LCAzODI5MywgMzgzMDMsIDM4MzA4LCAzODMxNCwgMzgzMjIsIAorICAgIDM3NzQsIDM4MzI5LCAzODMzNiwgMzgzNDIsIDM4MzQ5LCAzNzgwLCAzODM1MywgMzgzNTgsIDM4MzY5LCAzODM3NiwgCisgICAgMzgzODIsIDM4MzkxLCAzODM5NSwgNDI1OCwgMzgzOTgsIDM4NDA1LCAzODQxMSwgMzg0MTcsIDM4NDI1LCAzODQzNSwgCisgICAgMzE2NjIsIDM4NDQyLCAzODQ1MCwgMzg0NTYsIDM4NDYxLCAzODQ2NywgMzg0NzIsIDM4NDc2LCAyODI2MCwgMzg0ODIsIAorICAgIDM4NDg5LCAzODQ5NSwgMzg1MDQsIDM4NTExLCAyNTc5MSwgMzg1MTcsIDM4NTIyLCAzODUyNiwgMzg1MzQsIDM4NTQyLCAKKyAgICAxMDQyOCwgNjE5OSwgMzg1NDksIDM4NTUzLCAzODU1NSwgMzg1NTksIDM4NTY0LCAzODU2NiwgMzg1NzEsIDM4NTc3LCAKKyAgICAzODU4MiwgMzg1ODcsIDM4NTk0LCAzNTQ0MywgMzg2MDAsIDM4NjA1LCAzODYwOSwgMzg2MTQsIDM4NjE4LCAzODYyNywgCisgICAgMzg2MzEsIDM4NjM3LCAzODY0NCwgMzg2NTAsIDM4NjU3LCAzODY2MiwgMzg2NzEsIDM4Njc2LCAzODY4MCwgMzg2ODUsIAorICAgIDM4NjkyLCAzODcwMCwgMzg3MDgsIDM4NzEzLCAyMzIzMywgMzg3MTcsIDM4NzIwLCAzODcyNCwgMzg3MjgsIDExODIzLCAKKyAgICA5MDcsIDM4NzMyLCAzODczNywgMzg3NDUsIDM4NzQ5LCAzODc1OCwgMzg3NjUsIDM4NzY5LCAzODc3MywgMzg3ODEsIAorICAgIDM4Nzg4LCAzODc5OCwgMzg4MDIsIDM4ODA2LCAzODgxNCwgMzg4MjIsIDM4ODI4LCAzODgzMywgMzg4NDIsIDE0NjQwLCAKKyAgICAzODg0OCwgMzg4NTcsIDM4ODYyLCAzODg2OSwgMzg4NzYsIDM4ODg0LCAzODg5MSwgMzg4OTksIDM4OTA3LCAzODkxMiwgCisgICAgMzg5MTksIDM4OTI2LCAzODkzMywgMzg5NDAsIDM4OTQ3LCAzODk1MiwgMzg5NTksIDM4OTY1LCAzODk4MiwgMzg5OTAsIAorICAgIDM5MDAwLCAzOTAwOCwgMzkwMTUsIDQyMiwgMzkwMTksIDM5MDI1LCAzOTAyOSwgMzkwMzQsIDM2NjAwLCAzOTA0MCwgCisgICAgMzkwNDMsIDM5MDQ3LCAzOTA1OCwgMzkwNjYsIDM3ODUsIDM5MDc0LCAzOTA4MCwgMzkwODYsIDM5MDk2LCAzOTEwNSwgCisgICAgMzkxMTUsIDM5MTIyLCAzOTEyOCwgMzkxMzMsIDM3OTEsIDM3OTcsIDM5MTQyLCAzOTE0OSwgMzkxNTcsIDM5MTYyLCAKKyAgICAzOTE2NiwgMzkxNzMsIDM5MTgxLCAzOTE4OCwgMzkxOTQsIDM5MjAzLCAzOTIxMywgMzkyMTksIDM5MjI3LCAzOTIzNiwgCisgICAgMzkyNDMsIDM5MjUxLCAzOTI1OCwgMjM5MzcsIDM5MjYyLCAzOTI2OSwgMzkyNzUsIDM5Mjg1LCAzOTI5NCwgMzkzMDIsIAorICAgIDM5MzEzLCAzOTMxNywgMzkzMjcsIDM5MzMzLCAzOTM0MCwgMzkzNDgsIDM5MzU3LCAzOTM2NiwgMzkzNzYsIDM5Mzg3LCAKKyAgICAzOTM5NCwgMzkzOTksIDM5NDA2LCAzMDc3LCAzOTQxNCwgMzk0MjAsIDM5NDI1LCAzOTQzMSwgMzk0MzcsIDM5NDQyLCAKKyAgICAzOTQ1NSwgMzk0NjgsIDM5NDgxLCAzOTQ4OCwgMzk0OTQsIDM5NTAyLCAzOTUxMCwgMzk1MTUsIDM5NTE5LCAxNDM2LCAKKyAgICAzOTUyMywgMzk1MjcsIDM5NTMxLCAzOTUzNSwgMzk1MzksIDM5NTQzLCAzOTU0NywgMzk1NTEsIDM5NTU1LCAzOTU1OSwgCisgICAgMzk1NjMsIDM5NTY3LCAzOTU3MSwgMzk1NzUsIDM5NTc5LCAzOTU4MywgMzk1ODcsIDM5NTkxLCAzOTU5NSwgMzk1OTksIAorICAgIDM5NjAzLCAzOTYwNywgMzk2MTEsIDM5NjE1LCAzOTYxOSwgMzk2MjMsIDM5NjI3LCAzOTYzMSwgMzk2MzUsIDM5NjM5LCAKKyAgICAzOTY0MywgMzk2NDcsIDM5NjUxLCAzOTY1NSwgMzk2NTksIDM5NjYzLCAzOTY2NywgMzk2NzEsIDM5Njc1LCAzOTY3OSwgCisgICAgMzk2ODMsIDM5Njg3LCAzOTY5MSwgMzk2OTUsIDM5Njk5LCAzOTcwMywgMzk3MDcsIDM5NzExLCAzOTcxNSwgMzk3MTksIAorICAgIDM5NzIzLCAzOTcyNywgMzk3MzEsIDM5NzM1LCAzOTczOSwgMzk3NDMsIDM5NzQ3LCAzOTc1MSwgMzk3NTUsIDM5NzU5LCAKKyAgICAzOTc2MywgMzk3NjcsIDM5NzcxLCAzOTc3NSwgMzk3NzksIDM5NzgzLCAzOTc4NywgMzk3OTEsIDM5Nzk1LCAzOTc5OSwgCisgICAgMzk4MDMsIDM5ODA3LCAzOTgxMSwgMzk4MTUsIDM5ODE5LCAzOTgyMywgMzk4MjcsIDM5ODMxLCAzOTgzNSwgMzk4MzksIAorICAgIDM5ODQzLCAzOTg0NywgMzk4NTEsIDM5ODU1LCAzOTg1OSwgMzk4NjMsIDM5ODY3LCAzOTg3MSwgMzk4NzUsIDM5ODc5LCAKKyAgICAzOTg4MywgMzk4ODcsIDM5ODkxLCAzOTg5NSwgMzk4OTksIDM5OTAzLCAzOTkwNywgMzk5MTEsIDM5OTE1LCAzOTkxOSwgCisgICAgMzk5MjMsIDM5OTI3LCAzOTkzMSwgMzk5MzUsIDM5OTM5LCAzOTk0MywgMzk5NDcsIDM5OTUxLCAzOTk1NSwgMzk5NTksIAorICAgIDM5OTYzLCAzOTk2NywgMzk5NzEsIDM5OTc1LCAzOTk3OSwgMzk5ODMsIDM5OTg3LCAzOTk5MSwgMzk5OTUsIDM5OTk5LCAKKyAgICA0MDAwMywgNDAwMDcsIDQwMDExLCA0MDAxNSwgNDAwMTksIDQwMDIzLCA0MDAyNywgNDAwMzEsIDQwMDM1LCA0MDAzOSwgCisgICAgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIDQwMDcxLCA0MDA3NSwgNDAwNzksIAorICAgIDQwMDgzLCA0MDA4NywgNDAwOTEsIDQwMDk1LCA0MDA5OSwgNDAxMDMsIDQwMTA3LCA0MDExMSwgNDAxMTUsIDQwMTE5LCAKKyAgICA0MDEyMywgNDAxMjcsIDQwMTMxLCA0MDEzNSwgNDAxNDAsIDQwMTQ0LCA0MDE0OSwgNDAxNTMsIDQwMTU4LCA0MDE2MiwgCisgICAgNDAxNjcsIDQwMTcxLCA0MDE3NywgNDAxODIsIDQwMTg2LCA0MDE5MSwgNDAxOTUsIDQwMjAwLCA0MDIwNCwgNDAyMDksIAorICAgIDQwMjEzLCA0MDIxOCwgNDAyMjIsIDQwMjI3LCA0MDIzMSwgNDAyMzYsIDQwMjQwLCA0MDI0NiwgNDAyNTIsIDQwMjU3LCAKKyAgICA0MDI2MSwgNDAyNjYsIDQwMjcwLCA0MDI3NiwgNDAyODEsIDQwMjg1LCA0MDI5MCwgNDAyOTQsIDQwMjk5LCA0MDMwMywgCisgICAgNDAzMDksIDQwMzE0LCA0MDMxOCwgNDAzMjMsIDQwMzI3LCA0MDMzMiwgNDAzMzYsIDQwMzQxLCA0MDM0NSwgNDAzNTEsIAorICAgIDQwMzU2LCA0MDM2MCwgNDAzNjUsIDQwMzY5LCA0MDM3NSwgNDAzODAsIDQwMzg0LCA0MDM4OSwgNDAzOTMsIDQwMzk4LCAKKyAgICA0MDQwMiwgNDA0MDcsIDQwNDExLCA0MDQxNiwgNDA0MjAsIDQwNDI2LCA0MDQzMSwgNDA0MzUsIDQwNDQxLCA0MDQ0NiwgCisgICAgNDA0NTAsIDQwNDU2LCA0MDQ2MSwgNDA0NjUsIDQwNDcwLCA0MDQ3NCwgNDA0NzksIDQwNDgzLCA0MDQ4OSwgNDA0OTUsIAorICAgIDQwNTAxLCA0MDUwNywgNDA1MTMsIDQwNTE5LCA0MDUyNSwgNDA1MzEsIDQwNTM2LCA0MDU0MCwgNDA1NDUsIDQwNTQ5LCAKKyAgICA0MDU1NSwgNDA1NjAsIDQwNTY0LCA0MDU2OSwgNDA1NzMsIDQwNTc4LCA0MDU4MiwgNDA1ODcsIDQwNTkxLCA0MDU5NiwgCisgICAgNDA2MDAsIDQwNjA1LCA0MDYwOSwgNDA2MTQsIDQwNjE4LCA0MDYyNCwgNDA2MjksIDQwNjMzLCA0MDYzOCwgNDA2NDIsIAorICAgIDQwNjQ4LCA0MDY1NCwgNDA2NTksIDEyMiwgNjMsIDQwNjYzLCA0MDY2NSwgNDA2NjksIDQwNjczLCA0MDY3NywgNDA2ODIsIAorICAgIDQwNjg2LCA0MDY5MCwgNDA2OTUsIDEwMzQxLCA0MDcwMCwgNDA3MDYsIDE3MzcsIDY2MjEsIDQwNzEyLCA0MDcxNSwgCisgICAgNDA3MjAsIDQwNzI0LCA0MDcyOSwgNDA3MzMsIDQwNzM3LCA0MDc0MiwgMTEyMTksIDQwNzQ2LCA0MDc1MCwgNDA3NTQsIAorICAgIDU0MCwgNDA3NTgsIDE2OTE0LCA0MDc2MywgNDA3NjcsIDQwNzcyLCA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MywgCisgICAgMjg0NDEsIDQwNzk5LCA0MDgwMiwgNDA4MDYsIDQwODExLCA0MDgxNywgNDA4MjEsIDQwODI0LCA0MDgzMiwgNDA4MzgsIAorICAgIDQwODQzLCA0MDg0NywgNDA4NTAsIDQwODU0LCA0MDg2MCwgNDA4NjQsIDQwODY4LCAzNTczLCAzNTc4LCAzMTg4NiwgCisgICAgNDA4NzEsIDQwODc1LCA0MDg3OSwgNDA4ODMsIDQwODg3LCA0MDg5NSwgNDA5MDIsIDQwOTA2LCAxNDU5MCwgNDA5MTMsIAorICAgIDQwOTE4LCA0MDkzMiwgNDA5MzksIDQwOTUwLCAzNDEsIDQwOTU1LCA0MDk1OSwgNDA5NjUsIDQwOTc3LCA0MDk4MywgCisgICAgNDA5ODksIDQwOTkzLCAzMTkyMywgNDEwMDIsIDQxMDA4LCA0MTAxNywgNDEwMjEsIDQxMDI1LCA0MTAzMCwgNDEwMzYsIAorICAgIDQxMDQxLCA0MTA0NSwgNDEwNTAsIDQxMDU0LCA0MTA1OCwgNDEwNjUsIDQxMDcxLCA0MTA3NiwgNDEwODcsIDQxMTAyLCAKKyAgICA0MTExNywgNDExMzIsIDQxMTQ4LCA0MTE2NiwgMTExNjksIDQxMTgwLCA0MTE4NywgNDExOTEsIDQxMTk0LCA0MTIwMywgCisgICAgNDEyMDgsIDQxMjEyLCA0MTIyMCwgMTc0NjksIDQxMjI4LCA0MTIzMiwgNDEyNDIsIDQxMjUzLCAzMTg1NiwgNDEyNjYsIAorICAgIDQxMjcwLCA0MTI3OSwgNDEyOTcsIDQxMzE2LCA0MTMyNCwgMTA2MjMsIDExMzMyLCA0MTMyOCwgMjQ0NzAsIDQxMzMxLCAKKyAgICAzMjgyNCwgNDEzMzYsIDEwNjIyLCA0MTM0MSwgNDEzNDcsIDQxMzUyLCA0MTM1OCwgNDEzNjMsIDQxMzY5LCA0MTM3NCwgCisgICAgNDEzODAsIDQxMzg1LCA0MTM5MSwgNDEzOTcsIDQxNDAzLCA0MTQwOCwgNDEzNjQsIDQxMzcwLCA0MTM3NSwgNDEzODEsIAorICAgIDQxMzg2LCA0MTM5MiwgNDEzOTgsIDg1NDUsIDQxMDMsIDQxNDEyLCA0MTQyMCwgNDE0MjQsIDQxNDI3LCA0MTQzNCwgCisgICAgNDE0MzgsIDQxNDQzLCA0MTQ0OCwgNDE0NTUsIDQxNDYxLCA0MTQ2NywgNDE0NzIsIDE2Mjk3LCA0MTQ3NiwgMjgyNzcsIAorICAgIDQxNDgwLCA0MTQ4NCwgNDE0ODgsIDQxNDk0LCA0MTQ5OCwgMzAzNDksIDQxNTA3LCA5NjM0LCA0MTUxMSwgMTAwMjcsIAorICAgIDQxNTE0LCA0MTUyMSwgNDE1MjcsIDQxNTMxLCAxMzExNCwgNDE1MzgsIDQxNTQ0LCA0MTU0OSwgNDE1NTYsIDQxNTYzLCAKKyAgICA0MTU3MCwgMzEwNzYsIDg0NDIsIDQxNTc3LCA0MTU4NCwgNDE1OTEsIDQxNTk3LCA0MTYwMiwgNDE2MDksIDQxNjIwLCAKKyAgICA0MTYyNiwgNDE2MzEsIDQxNjM2LCA0MTY0MSwgNDE2NDUsIDQxNjUwLCA0MTY1NywgNDEzNjUsIDQxNjYxLCA0MTY3MSwgCisgICAgNDE2ODAsIDQxNjkxLCA0MTY5NywgNDE3MDUsIDQxNzEyLCA0MTcxNywgNDE3MjIsIDQxNzI3LCA0MTczMiwgNDE3MzcsIAorICAgIDQxNzQxLCA0MTc0NSwgNDE3NTIsIDQxNzU4LCA0MTc2NiwgMjMzOCwgMTA4NiwgMTEyMzUsIDExMjQ3LCAxMTI1MiwgCisgICAgMTEyNTgsIDQxNzc1LCAxMTI2MywgMTEyNjgsIDExMjc0LCA0MTc4MCwgNDE3OTAsIDQxNzk0LCAxMTI3OSwgNDE3OTksIAorICAgIDE4NjE3LCA0MTgwMiwgNDE4MDcsIDQxODExLCAzNzg1OSwgNDE4MjIsIDQxODI3LCA0MTgzNCwgNDE4NDEsIDQxODQ1LCAKKyAgICA0MTg0OCwgNDE4NTYsIDExMTgyLCA0MTg2MywgNDE4NjYsIDQxODcyLCA0MTg4MiwgNjI1MSwgNDE4OTEsIDQxODk3LCAKKyAgICA0MTkwMSwgNDE5MDksIDQxOTEzLCA0MTkyMywgNDE5MjksIDQxOTM0LCA0MTk0NSwgNDE5NTQsIDQxOTYzLCA0MTk3MiwgCisgICAgNDE5ODEsIDQxOTkwLCA0MTk5OSwgNDIwMDgsIDQyMDE0LCA0MjAyMCwgNDIwMjUsIDQyMDMxLCA0MjAzNywgNDIwNDMsIAorICAgIDQyMDQ4LCA0MjA1MSwgNDIwNTgsIDQyMDY0LCA0MjA2OCwgNDIwNzMsIDQyMDgwLCA0MjA4NywgNDIwOTEsIDQyMDk0LCAKKyAgICA0MjEwNCwgNDIxMTcsIDQyMTI2LCA0MjEzNSwgNDIxNDYsIDQyMTU5LCA0MjE3MSwgNDIxODIsIDQyMTkxLCA0MjIwMiwgCisgICAgNDIyMDcsIDQyMjE2LCA0MjIyMSwgMTEyODQsIDQyMjI3LCA0MjIzNCwgNDIyNDIsIDQyMjQ3LCA0MjI1MSwgNDIyNTgsIAorICAgIDQyMjY1LCA0MDQ2LCAyNSwgNDIyNjksIDQyMjc0LCAxODQ2NiwgNDIyNzgsIDQyMjgxLCA0MjI4NCwgMzA1MjksIDQyMjg4LCAKKyAgICAzMTA4NSwgNDIyOTYsIDQyMzAwLCA0MjMwNCwgNDIzMDcsIDQyMzEzLCA0MjMxOSwgNDIzMjQsIDMzODgzLCA0MjMzMywgCisgICAgNDIzNDEsIDQyMzQ3LCA0MjM1NCwgMzA1MTIsIDQyMzU4LCAzMDczMiwgNDIzNjIsIDQyMzcxLCA0MjM3NSwgNDIzODMsIAorICAgIDQyMzg5LCA0MjM5NSwgNDI0MDAsIDQyNDA0LCAzMTEwNCwgNDI0MTAsIDQyNDEzLCA0MjQyMSwgNDI0MjksIDQzOTksIAorICAgIDQyNDM1LCA0MjQzOSwgNDI0NDQsIDQyNDUxLCA0MjQ1NywgNDI0NjIsIDQyNDY3LCA0MjQ3MSwgNDI0NzcsIDQyNDgyLCAKKyAgICA0MjQ4OCwgNDMxMSwgODQ4LCA0MjQ5NSwgNDI0OTksIDQyNTAyLCAxNjc4NywgNDI1MTQsIDQyNTIyLCA0MjUzMCwgNDI1MzgsIAorICAgIDQyNTQ2LCA0MjU1MywgNDI1NjEsIDQyNTY5LCA0MjU3NiwgNDI1ODQsIDQyNTkyLCA0MjYwMCwgNDI2MDgsIDQyNjE2LCAKKyAgICA0MjYyNCwgNDI2MzIsIDQyNjQwLCA0MjY0OCwgNDI2NTYsIDQyNjY0LCA0MjY3MSwgNDI2NzksIDQyNjg3LCA0MjY5NSwgCisgICAgNDI3MDMsIDQyNzExLCA0MjcxOSwgNDI3MjcsIDQyNzM1LCA0Mjc0MywgNDI3NTEsIDQyNzU5LCA0Mjc2NywgNDI3NzUsIAorICAgIDQyNzgzLCA0Mjc5MSwgNDI3OTksIDQyODA3LCA0MjgxNSwgNDI4MjMsIDQyODMwLCA0MjgzOCwgNDI4NDUsIDQyODUzLCAKKyAgICA0Mjg2MSwgNDI4NjksIDQyODc3LCA0Mjg4NSwgNDI4OTMsIDQyOTAxLCA0MjkwOSwgNDI5MjAsIDIzOTczLCA0MjkyNSwgCisgICAgNDI5MjgsIDQyOTM1LCA0MjkzOSwgNDI5NDUsIDQyOTQ5LCA0Mjk1NSwgNDI5NjAsIDQyOTY2LCA0Mjk3MSwgNDI5NzYsIAorICAgIDQyOTgwLCA0Mjk4NCwgNDI5ODksIDQyOTk0LCA0MzAwNCwgNDMwMTAsIDQzMDIzLCA0MzAyOSwgNDMwMzUsIDQzMDQxLCAKKyAgICA0MzA0OCwgNDMwNTMsIDQzMDU5LCA0MzA2NCwgMTgzNjIsIDg1NiwgNDMwNjksIDQzMDcyLCA0MzA3NSwgNDMwNzgsIAorICAgIDMzOTY3LCAzMzk3MywgNDMwODEsIDMzOTc5LCAzMzk5MiwgMzM5OTgsIDM0MDA0LCA0MzA4NywgMzQwMTAsIDM0MDE2LCAKKyAgICA0MzA5MywgNDMwOTksIDE4LCA0MzEwNywgNDMxMTQsIDQzMTE4LCA0MzEyMiwgNDMxMzAsIDM0NzU3LCA0MzEzNCwgNDMxMzgsIAorICAgIDQzMTQ1LCA0MzE1MCwgNDMxNTQsIDQzMTU5LCA0MzE2NSwgNDMxNzAsIDQzMTc2LCA0MzE4MSwgNDMxODUsIDQzMTg5LCAKKyAgICA0MzE5MywgNDMxOTgsIDQzMjAyLCA0MzIwNywgNDMyMTEsIDQzMjE1LCA0MzIyMiwgNDMyMjcsIDQzMjMxLCA0MzIzNSwgCisgICAgNDMyNDAsIDQzMjQ0LCA0MzI0OSwgNDMyNTMsIDQzMjU3LCA0MzI2MiwgNDMyNjgsIDE3MDYwLCAxNzA2NSwgNDMyNzMsIAorICAgIDQzMjc3LCA0MzI4MCwgNDMyODQsIDQzMjg4LCAyMzA0NCwgNDMyOTMsIDQzMjk3LCA0MzMwMywgNDMzMTAsIDQzMzE2LCAKKyAgICA0MzMyMSwgNDMzMzEsIDQzMzM2LCA0MzM0NCwgNDMzNDgsIDQzMzUxLCAzNDc3MiwgNDMzNTUsIDQzNzYsIDQzMzYwLCAKKyAgICA0MzM2NSwgNDMzNjksIDQzMzc0LCA0MzM3OCwgNDMzODMsIDE0NjU4LCA0MzM5NCwgNDMzOTgsIDQzNDAxLCA0MzQwNSwgCisgICAgNDM0MTAsIDQzNDE0LCA0MzQxOSwgNDM0MjQsIDQzNDI4LCA0MzQzMiwgNDM0MzYsIDQzNDM5LCA0MzQ0MywgODU2NCwgCisgICAgMTQ2NzQsIDQzNDQ2LCA0MzQ0OSwgNDM0NTUsIDQzNDYwLCA0MzQ2NiwgNDM0NzEsIDQzNDc3LCA0MzQ4MiwgNDM0ODgsIAorICAgIDQzNDkzLCA0MzQ5OSwgNDM1MDUsIDQzNTExLCA0MzUxNiwgNDM1MjAsIDQzNTI0LCA0MzUzMywgNDM1NDksIDQzNTY1LCAKKyAgICA0MzU3NSwgMzA0MTksIDQzNTgyLCA0MzU4NiwgNDM1OTEsIDQzNTk2LCA0MzYwMCwgNDM2MDQsIDM5MzYxLCA0MzYxMCwgCisgICAgNDM2MTUsIDQzNjE5LCA0MzYyNiwgNDM2MzEsIDQzNjM2LCA0MzY0MCwgNDM2NDQsIDQzNjUwLCAyOTM0OCwgNDM2NTQsIAorICAgIDIzMzQwLCA0MzY1OSwgNDM2NjYsIDQzNjc0LCA0MzY4MCwgNDM2ODcsIDQzNjk1LCA0MzcwMSwgNDM3MDUsIDQzNzEwLCAKKyAgICA0MzcxNiwgNDM3MjQsIDQzNzI5LCA0MzczMywgNDM3NDIsIDEwMzIyLCA0Mzc1MCwgNDM3NTQsIDQzNzYyLCA0Mzc2OSwgCisgICAgNDM3NzQsIDQzNzc5LCA0Mzc4NCwgNDM3ODgsIDQzNzkxLCA0Mzc5NSwgNDM3OTgsIDQzODAyLCA0MzgwOSwgNDM4MTQsIAorICAgIDQzODE4LCA0MzgyNCwgMjg3NDcsIDM0MDMwLCA0MzgyOCwgNDM4MzcsIDQzODQ1LCA0Mzg1MSwgNDM4NTgsIDQzODY0LCAKKyAgICA0Mzg3MCwgNDM4NzUsIDQzODc4LCA0Mzg4MCwgNDM4ODcsIDQzODk0LCA0MzkwMCwgNDM5MDQsIDQzOTA3LCA0MzkxMSwgCisgICAgNDM5MTUsIDQzOTE5LCA0MzkyNCwgNDM5MjgsIDQzOTMyLCA0MzkzNSwgNDM5MzksIDQzOTUzLCAyNTEyMSwgNDM5NzIsIAorICAgIDQzOTg1LCA0Mzk5OCwgNDQwMTEsIDI1MTM5LCA0NDAyNiwgMTE1MjAsIDQ0MDQxLCA0NDA0NywgNDQwNTEsIDQ0MDYxLCAKKyAgICA0NDA2NSwgNDQwNjksIDQ0MDczLCA0NDA4MCwgNDQwODUsIDQ0MDg5LCA0NDA5NiwgNDQxMDIsIDQ0MTA3LCA0NDExMywgCisgICAgNDQxMjMsIDQ0MTM1LCA0NDE0NiwgNDQxNTEsIDQ0MTU4LCA0NDE2MiwgNDQxNjYsIDQ0MTY5LCAxNzQ5MCwgMzg1NCwgCisgICAgNDQxNzcsIDE3MDg3LCA0NDE5MCwgNDQxOTcsIDQ0MjA0LCA0NDIwOCwgNDQyMTIsIDQ0MjE3LCA0NDIyMywgNDQyMjgsIAorICAgIDQ0MjM0LCA0NDIzOCwgNDQyNDIsIDQ0MjQ1LCA0NDI1MCwgNDQyNTQsIDQ0MjU5LCA4MTA2LCAxMDEyLCA0NDI2NCwgCisgICAgNDQyNjgsIDQ0Mjc0LCA0NDI4MywgNDQyODgsIDQ0Mjk3LCA0NDMwNCwgMzkyMDksIDQ0MzEwLCA0NDMxNSwgNDQzMTksIAorICAgIDQ0MzI0LCA0NDMzMSwgNDQzMzcsIDQ0MzQxLCA0NDM0NCwgNDQzNDgsIDQ0MzUzLCAxNTk4MSwgNDQzNjAsIDQ0MzY3LCAKKyAgICA0NDM3MSwgNDQzNzQsIDQ0Mzc5LCA0NDM4NCwgNDQzOTAsIDQ0Mzk1LCA0NDQwMCwgNDQ0MDQsIDQ0NDA5LCA0NDQxOSwgCisgICAgNDQ0MjQsIDQ0NDMwLCA0NDQzNSwgNDQ0NDEsIDQ0NDQ2LCA0NDQ1MiwgNDQ0NjIsIDQ0NDY3LCA0NDQ3MiwgNDQ0NzYsIAorICAgIDQ0NDgxLCA3NTgyLCA3NTk0LCA0NDQ4NiwgNDQ0ODksIDQ0NDk2LCA0NDUwMiwgNDQ1MTEsIDk1NjAsIDM3MTMxLCA0NDUxOSwgCisgICAgNDQ1MjMsIDQ0NTI3LCAzNDgyMCwgNDQ1MzUsIDQ0NTQ2LCA0NDU1NCwgMzk0MDksIDQ0NTYxLCA0NDU2NiwgNDQ1NzEsIAorICAgIDQ0NTgyLCA0NDU4OSwgNDQ2MDAsIDM0ODQ0LCAyMzM1MSwgNDQ2MDgsIDkzNCwgNDQ2MTMsIDE1MDMwLCA0NDYxOSwgCisgICAgMzA1MDMsIDQ0NjI1LCA0NDYzMCwgNDQ2NDAsIDQ0NjQ5LCA0NDY1NiwgNDQ2NjIsIDQ0NjY2LCA0NDY2OSwgNDQ2NzYsIAorICAgIDQ0NjgyLCA0NDY4OSwgNDQ2OTUsIDQ0NzA1LCA0NDcxMywgNDQ3MTksIDQ0NzI1LCA0NDczMCwgNDQ3MzQsIDQ0NzQxLCAKKyAgICA0NDc0NiwgNDQ3NTIsIDQ0NzU5LCA0NDc2NSwgNDM5MjAsIDQ0NzcwLCA0NDc3NCwgNTcxLCAxNTE0NiwgNDQ3ODAsIAorICAgIDQ0Nzg1LCA0NDc4OCwgNDQ3OTQsIDQ0ODAyLCAxMzYxLCA0NDgwNywgNDQ4MTEsIDQ0ODE2LCA0NDgyMSwgNDQ4MjYsIAorICAgIDQ0ODMzLCA0NDgzNywgNDQ4NDIsIDQ0ODQ4LCA0NDg1MiwgMzQwNDAsIDQ0ODU3LCA0NDg2MiwgNDQ4NzEsIDQ0ODc4LCAKKyAgICA0NDg4OCwgNDQ4OTQsIDMwNTQ3LCA0NDkxMSwgNDQ5MjAsIDQ0OTI4LCA0NDkzNCwgNDQ5MzksIDQ0OTQ2LCA0NDk1MiwgCisgICAgNDQ5NjAsIDQ0OTY5LCA0NDk3NywgNDQ5ODEsIDQ0OTg2LCA0NDk5NCwgMzE1NTYsIDM0ODUzLCA0NTAwMCwgNDUwMTksIAorICAgIDE3MzkzLCA0NTAzMywgNDUwNDksIDQ1MDYzLCA0NTA2OSwgNDUwNzQsIDQ1MDc5LCA0NTA4NCwgNDUwOTAsIDM0ODU5LCAKKyAgICA0NTA5NSwgNDUwOTgsIDQ1MTA1LCA0NTExMiwgNDUxMTcsIDQ1MTIxLCA0MTIsIDI5ODQsIDQ1MTI4LCA0NTEzMywgNDUxMzgsIAorICAgIDI5NzE3LCA0NDk0OSwgNDUxNDIsIDQ1MTQ3LCA0NTE1NSwgNDUxNTksIDQ1MTYyLCA0NTE2NywgNDUxNzMsIDQ1MTc5LCAKKyAgICA0NTE4NCwgNDUxODgsIDMwNjE0LCA0NTE5MSwgNDUxOTYsIDQ1MjAwLCA0NTIwMywgNDUyMDgsIDQ1MjEyLCA0NTIxNywgCisgICAgNDUyMjIsIDQ1MjI2LCA0NTIzMSwgNDUyMzUsIDQ1MjM5LCA0NTI0MywgMjMwNDAsIDIzMDUxLCA0NTI0OCwgNDUyNTMsIAorICAgIDQ1MjU5LCA0NTI2NCwgNDUyNzAsIDI5MzA1LCA0NTI3NSwgNDUyNzksIDIzMTM3LCAxNzY5NiwgNDUyODIsIDQ1Mjg3LCAKKyAgICA0NTI5MiwgNDUyOTcsIDQ1MzAyLCA0NTMwNywgNDUzMTIsIDQ1MzE3LCA0NjUsIDY4LCAzNDA1MywgMzQwNTgsIDM0MDYzLCAKKyAgICAzNDA2OSwgMzQwNzQsIDM0MDc5LCA0NTMyMiwgMzQwODMsIDQ1MzI2LCA0NTMzMCwgNDUzMzQsIDM0MDg4LCAzNDA5NCwgCisgICAgNDUzNDgsIDM0MTA1LCAzNDExMCwgNDUzNTYsIDQ1MzYxLCAzNDExNiwgNDUzNjYsIDQ1MzcxLCA0NTM3NiwgNDUzODEsIAorICAgIDQ1MzkwLCA0NTM5NiwgNDU0MDIsIDQ1NDA4LCAzNDEzMywgNDU0MjEsIDQ1NDMwLCA0NTQzNiwgMzQxMzcsIDQ1NDQwLCAKKyAgICAzNDE0MiwgNDU0NDUsIDM0MTQ3LCAzNDE1MiwgNDU0NDgsIDQ1NDUzLCA0NTQ1NywgNDU0NjMsIDMzNjgxLCA0NTQ3MCwgCisgICAgMTQ5MDQsIDQ1NDc3LCA0NTQ4MiwgMzQxNTcsIDQ1NDg2LCA0NTQ5MSwgNDU0OTYsIDQ1NTAxLCA0NTUwNSwgNDU1MTAsIAorICAgIDQ1NTE1LCA0NTUyMSwgNDU1MjYsIDQ1NTMxLCA0NTUzNywgNDU1NDMsIDQ1NTQ4LCA0NTU1MiwgNDU1NTcsIDQ1NTYyLCAKKyAgICA0NTU2NywgNDU1NzEsIDQ1NTc2LCA0NTU4MSwgNDU1ODYsIDQ1NTkyLCA0NTU5OCwgNDU2MDQsIDQ1NjA5LCA0NTYxMywgCisgICAgNDU2MTgsIDQ1NjIyLCAzNDE2MSwgMzQxNjYsIDM0MTcxLCA0NTYyNiwgNDU2MzAsIDQ1NjM1LCA0NTYzOSwgMzQxNzYsIAorICAgIDM0MTgyLCAzNDE4OCwgMzQyMDAsIDQ1NjUxLCAyODMxNCwgNDU2NTUsIDQ1NjYwLCA0NTY2NCwgNDU2NjksIDQ1Njc2LCAKKyAgICA0NTY4MSwgNDU2ODYsIDQ1NjkxLCA0NTY5NSwgNDU2OTksIDQ1NzA5LCA0NTcxNCwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCisgICAgNDU3MzAsIDQ1NzM4LCAzNDI0OCwgNDU3NDMsIDE0NDYsIDQ1NzQ5LCA0NTc1NCwgNDU3NjAsIDQ1NzY4LCA0NTc3MiwgCisgICAgNDU3ODEsIDQ1Nzg5LCA0NTc5MywgNDU3OTcsIDQ1ODA1LCA0NTgxMSwgNDU4MTksIDQ1ODM1LCA0NTgzOSwgNDU4NDMsIAorICAgIDQ1ODQ3LCA0NTg1MiwgNDU4NTgsIDQ1ODczLCAzNDI4NSwgMTc0NSwgMTMzMDgsIDQ1ODc3LCAxMzQwLCAxMzU1LCA0NTg4OSwgCisgICAgNDU4OTcsIDQ1OTA0LCA0NTkwOSwgNDU5MTYsIDQ1OTIxLCAxMDAxMiwgMTA5NiwgMjUyOSwgMTEzMTEsIDQ1OTI4LCA5OTEwLCAKKyAgICA0NTkzMywgNDU5MzYsIDQ1OTQ1LCAxMjQ4LCA0NTk1MCwgNDQwODYsIDQ1OTU3LCA0NTk2NiwgNDU5NzEsIDQ1OTc1LCAKKyAgICA0NTk4MywgMjQ1MjYsIDI1ODEsIDQ1OTkwLCAxMTc3NiwgNDYwMDAsIDQ2MDA2LCAyMzU2LCAyMzY2LCA0NjAxNSwgNDYwMjQsIAorICAgIDQ2MDM0LCA0NjA0NSwgMzM2NSwgMzc0ODUsIDQ2MDUwLCAxMTM3NSwgNDAyNCwgMTg0MDAsIDEyNTMsIDQ2MDU0LCA0NjA2MiwgCisgICAgNDYwNjksIDQ2MDc0LCA0NjA3OCwgNDYwODIsIDI2MDE4LCA0NDM1NSwgMTE0MDIsIDQ2MDkwLCA0NjA5OSwgNDYxMDgsIAorICAgIDQ2MTE2LCA0NjEyMywgNDYxMzQsIDQ2MTM5LCA0NjE1MiwgNDYxNjUsIDQ2MTc3LCA0NjE4OSwgNDYyMDEsIDQ2MjEyLCAKKyAgICA0NjIyNSwgNDYyMzYsIDQ2MjQ3LCA0NjI1NywgNDYyNjUsIDQ2MjczLCA0NjI4NSwgNDYyOTcsIDQ2MzA4LCA0NjMxNywgCisgICAgNDYzMjUsIDQ2MzMyLCA0NjM0NCwgNDYzNTEsIDQ2MzU3LCA0NjM2NiwgNDYzNzMsIDQ2Mzg2LCA0NjM5MSwgNDY0MDEsIAorICAgIDQ2NDA2LCA0NjQxMiwgNDY0MTcsIDQxNTI4LCA0NjQyMSwgNDY0MjgsIDQ2NDMyLCA0NjQzOSwgNDY0NDcsIDQ2NDU0LCAKKyAgICAyNTQyLCA0NjQ2MSwgNDY0NzIsIDQ2NDgyLCA0NjQ5MSwgNDY0OTksIDQ2NTA5LCA0NjUxNywgNDY1MjYsIDQ2NTM2LCAKKyAgICA0NjU0NSwgNDY1NTAsIDQ2NTU2LCA0NjU2MiwgMzg5OCwgNDY1NzMsIDQ2NTgzLCA0NjU5MiwgNDY2MDEsIDQ2NjA5LCAKKyAgICA0NjYxOSwgNDY2MjcsIDQ2NjM2LCA0NjY0MSwgNDY2NDYsIDQ2NjUxLCAxNjc1LCA0NywgNDY2NTksIDQ2NjY3LCA0NjY3OCwgCisgICAgNDY2ODksIDE4MDM5LCA0NjY5OSwgNDY3MDMsIDQ2NzEwLCA0NjcxNiwgNDY3MjEsIDQ2NzI1LCA0NjczNiwgNDY3NDYsIAorICAgIDQ2NzU1LCA0Njc2NiwgMTg0MzksIDE4NDQ0LCA0Njc3MSwgNDY3ODAsIDQ2Nzg1LCA0Njc5NSwgNDY4MDAsIDQ2ODA4LCAKKyAgICA0NjgxNiwgNDY4MjMsIDQ2ODI5LCAxNjM3LCAyODMsIDQ2ODMzLCA0NjgzOSwgNDY4NDQsIDQ2ODQ3LCAyMTI4LCA0NDIwOSwgCisgICAgNDY4NTUsIDQ2ODU5LCA0Njg2MiwgMTQ5MSwgNDY4NjgsIDE1MzMxLCAxMjU4LCA0Njg3MywgNDY4ODYsIDQ2OTAwLCAyNjcxLCAKKyAgICA0NjkxOCwgNDY5MzAsIDQ2OTQyLCAyNjg1LCAyNzAyLCA0Njk1NiwgNDY5NjksIDI3MTcsIDQ2OTgzLCA0Njk5NSwgMjczMiwgCisgICAgNDcwMDksIDEyNjQsIDEyNzAsIDEyNzYsIDExNjgyLCA0NzAxNCwgNDcwMTksIDQ3MDI0LCA0NzAyOCwgNDcwNDMsIDQ3MDU4LCAKKyAgICA0NzA3MywgNDcwODgsIDQ3MTAzLCA0NzExOCwgNDcxMzMsIDQ3MTQ4LCA0NzE2MywgNDcxNzgsIDQ3MTkzLCA0NzIwOCwgCisgICAgNDcyMjMsIDQ3MjM4LCA0NzI1MywgNDcyNjgsIDQ3MjgzLCA0NzI5OCwgNDczMTMsIDQ3MzI4LCA0NzM0MywgNDczNTgsIAorICAgIDQ3MzczLCA0NzM4OCwgNDc0MDMsIDQ3NDE4LCA0NzQzMywgNDc0NDgsIDQ3NDYzLCA0NzQ3OCwgNDc0OTMsIDQ3NTA4LCAKKyAgICA0NzUyMywgNDc1MzgsIDQ3NTUzLCA0NzU2OCwgNDc1ODMsIDQ3NTk4LCA0NzYxMywgNDc2MjgsIDQ3NjQzLCA0NzY1OCwgCisgICAgNDc2NzMsIDQ3Njg4LCA0NzcwMywgNDc3MTgsIDQ3NzMzLCA0Nzc0OCwgNDc3NjMsIDQ3Nzc4LCA0Nzc5MywgNDc4MDgsIAorICAgIDQ3ODIzLCA0NzgzOCwgNDc4NTMsIDQ3ODY4LCA0Nzg4MywgNDc4OTgsIDQ3OTEzLCA0NzkyOCwgNDc5NDMsIDQ3OTU4LCAKKyAgICA0Nzk3MywgNDc5ODgsIDQ4MDAzLCA0ODAxOCwgNDgwMzMsIDQ4MDQ4LCA0ODA2MywgNDgwNzgsIDQ4MDkzLCA0ODEwOCwgCisgICAgNDgxMjMsIDQ4MTM4LCA0ODE1MywgNDgxNjgsIDQ4MTgzLCA0ODE5OCwgNDgyMTMsIDQ4MjI4LCA0ODI0MywgNDgyNTgsIAorICAgIDQ4MjczLCA0ODI4OCwgNDgzMDMsIDQ4MzE4LCA0ODMzMywgNDgzNDgsIDQ4MzYzLCA0ODM3OCwgNDgzOTMsIDQ4NDA4LCAKKyAgICA0ODQyMywgNDg0MzgsIDQ4NDUzLCA0ODQ2OCwgNDg0ODMsIDQ4NDk4LCA0ODUxMywgNDg1MjgsIDQ4NTQzLCA0ODU1OCwgCisgICAgNDg1NzMsIDQ4NTg4LCA0ODYwMywgNDg2MTgsIDQ4NjMzLCA0ODY0OCwgNDg2NjMsIDQ4Njc4LCA0ODY5MywgNDg3MDgsIAorICAgIDQ4NzIzLCA0ODczOCwgNDg3NTMsIDQ4NzY4LCA0ODc4MywgNDg3OTgsIDQ4ODEzLCA0ODgyOCwgNDg4NDMsIDQ4ODU4LCAKKyAgICA0ODg3MywgNDg4ODgsIDQ4OTAzLCA0ODkxOCwgNDg5MzMsIDQ4OTQ4LCA0ODk2MywgNDg5NzgsIDQ4OTkzLCA0OTAwOCwgCisgICAgNDkwMjMsIDQ5MDM4LCA0OTA1MywgNDkwNjgsIDQ5MDgzLCA0OTA5OCwgNDkxMTMsIDQ5MTI4LCA0OTE0MywgNDkxNTgsIAorICAgIDQ5MTczLCA0OTE4OCwgNDkyMDMsIDQ5MjE4LCA0OTIzMywgNDkyNDgsIDQ5MjYzLCA0OTI3OCwgNDkyOTMsIDQ5MzA4LCAKKyAgICA0OTMyMywgNDkzMzgsIDQ5MzUzLCA0OTM2OCwgNDkzODMsIDQ5Mzk4LCA0OTQxMywgNDk0MjgsIDQ5NDQzLCA0OTQ1OCwgCisgICAgNDk0NzMsIDQ5NDg4LCA0OTUwMywgNDk1MTgsIDQ5NTMzLCA0OTU0OCwgNDk1NjMsIDQ5NTc4LCA0OTU5MywgNDk2MDgsIAorICAgIDQ5NjIzLCA0OTYzOCwgNDk2NTMsIDQ5NjY4LCA0OTY4MywgNDk2OTgsIDQ5NzEzLCA0OTcyOCwgNDk3NDMsIDQ5NzU4LCAKKyAgICA0OTc3MywgNDk3ODgsIDQ5ODAzLCA0OTgxOCwgNDk4MzMsIDQ5ODQ4LCA0OTg2MywgNDk4NzgsIDQ5ODkzLCA0OTkwOCwgCisgICAgNDk5MjMsIDQ5OTM4LCA0OTk1MywgNDk5NjgsIDQ5OTgzLCA0OTk5OCwgNTAwMTMsIDUwMDI4LCA1MDA0MywgNTAwNTgsIAorICAgIDUwMDczLCA1MDA4OCwgNTAxMDMsIDUwMTE4LCA1MDEzMywgNTAxNDgsIDUwMTYzLCA1MDE3OCwgNTAxOTMsIDUwMjA4LCAKKyAgICA1MDIyMywgNTAyMzgsIDUwMjUzLCA1MDI2OCwgNTAyODMsIDUwMjk4LCA1MDMxMywgNTAzMjgsIDUwMzQzLCA1MDM1OCwgCisgICAgNTAzNzMsIDUwMzg4LCA1MDQwMywgNTA0MTgsIDUwNDMzLCA1MDQ0OCwgNTA0NjMsIDUwNDc4LCA1MDQ5MywgNTA1MDgsIAorICAgIDUwNTIzLCA1MDUzOCwgNTA1NTMsIDUwNTY4LCA1MDU4MywgNTA1OTgsIDUwNjEzLCA1MDYyOCwgNTA2NDMsIDUwNjU4LCAKKyAgICA1MDY3MywgNTA2ODgsIDUwNzAzLCA1MDcxOCwgNTA3MzMsIDUwNzQ4LCA1MDc2MywgNTA3NzgsIDUwNzkzLCA1MDgwOCwgCisgICAgNTA4MjMsIDUwODM4LCA1MDg1MywgNTA4NjgsIDUwODgzLCA1MDg5OCwgNTA5MTMsIDUwOTI4LCA1MDk0MywgNTA5NTgsIAorICAgIDUwOTczLCA1MDk4OCwgNTEwMDMsIDUxMDE4LCA1MTAzMywgNTEwNDgsIDUxMDYzLCA1MTA3OCwgNTEwOTMsIDUxMTA4LCAKKyAgICA1MTEyMywgNTExMzgsIDUxMTUzLCA1MTE2OCwgNTExODMsIDUxMTk4LCA1MTIxMywgNTEyMjgsIDUxMjQzLCA1MTI1OCwgCisgICAgNTEyNzMsIDUxMjg4LCA1MTMwMywgNTEzMTgsIDUxMzMzLCA1MTM0OCwgNTEzNjMsIDUxMzc4LCA1MTM5MywgNTE0MDgsIAorICAgIDUxNDIzLCA1MTQzOCwgNTE0NTMsIDUxNDY4LCA1MTQ4MywgNTE0OTgsIDUxNTEzLCA1MTUyOCwgNTE1NDMsIDUxNTU4LCAKKyAgICA1MTU3MywgNTE1ODgsIDUxNjAzLCA1MTYxOCwgNTE2MzMsIDUxNjQ4LCA1MTY2MywgNTE2NzgsIDUxNjkzLCA1MTcwOCwgCisgICAgNTE3MjMsIDUxNzM4LCA1MTc1MywgNTE3NjgsIDUxNzgzLCA1MTc5OCwgNTE4MTMsIDUxODI4LCA1MTg0MywgNTE4NTgsIAorICAgIDUxODczLCA1MTg4OCwgNTE5MDMsIDUxOTE4LCA1MTkzMywgNTE5NDgsIDUxOTYzLCA1MTk3OCwgNTE5OTMsIDUyMDA4LCAKKyAgICA1MjAyMywgNTIwMzgsIDUyMDUzLCA1MjA2OCwgNTIwODMsIDUyMDk4LCA1MjExMywgNTIxMjgsIDUyMTQzLCA1MjE1OCwgCisgICAgNTIxNzMsIDUyMTg4LCA1MjIwMywgNTIyMTgsIDUyMjMzLCA1MjI0OCwgNTIyNjMsIDUyMjc4LCA1MjI5MywgNTIzMDgsIAorICAgIDUyMzIzLCA1MjMzOCwgNTIzNTMsIDUyMzY4LCA1MjM4MywgNTIzOTgsIDUyNDEzLCA1MjQyOCwgNTI0NDMsIDUyNDU4LCAKKyAgICA1MjQ3MywgNTI0ODgsIDUyNTAzLCA1MjUxOCwgNTI1MzMsIDUyNTQ4LCA1MjU2MywgNTI1NzgsIDUyNTkzLCA1MjYwOCwgCisgICAgNTI2MjMsIDUyNjM4LCA1MjY1MywgNTI2NjgsIDUyNjgzLCA1MjY5OCwgNTI3MTMsIDUyNzI4LCA1Mjc0MywgNTI3NTgsIAorICAgIDUyNzczLCA1Mjc4OCwgNTI4MDMsIDUyODE4LCA1MjgzMywgNTI4NDgsIDUyODYzLCA1Mjg3OCwgNTI4OTMsIDUyOTA4LCAKKyAgICA1MjkyMywgNTI5MzgsIDUyOTUzLCA1Mjk2OCwgNTI5ODMsIDUyOTk4LCA1MzAxMywgNTMwMjgsIDUzMDQzLCA1MzA1OCwgCisgICAgNTMwNzMsIDUzMDg4LCA1MzEwMywgNTMxMTgsIDUzMTMzLCA1MzE0OCwgNTMxNjMsIDUzMTc4LCA1MzE5MywgNTMyMDgsIAorICAgIDUzMjIzLCA1MzIzOCwgNTMyNTMsIDUzMjY4LCA1MzI4MywgNTMyOTgsIDUzMzEzLCA1MzMyOCwgNTMzNDMsIDUzMzU4LCAKKyAgICA1MzM3MywgNTMzODgsIDUzNDAzLCA1MzQxOCwgNTM0MzMsIDUzNDQ4LCA1MzQ2MywgNTM0NzgsIDUzNDkzLCA1MzUwOCwgCisgICAgNTM1MjMsIDUzNTM4LCA1MzU1MywgNTM1NjgsIDUzNTgzLCA1MzU5OCwgNTM2MTMsIDUzNjI4LCA1MzY0MywgNTM2NTgsIAorICAgIDUzNjczLCA1MzY4OCwgNTM3MDMsIDUzNzE4LCA1MzczMywgNTM3NDgsIDUzNzYzLCA1Mzc3OCwgNTM3OTMsIDUzODA4LCAKKyAgICA1MzgyMywgNTM4MzgsIDUzODUzLCA1Mzg2OCwgNTM4ODMsIDUzODk4LCA1MzkxMywgNTM5MjgsIDUzOTQzLCA1Mzk1OCwgCisgICAgNTM5NzMsIDUzOTg4LCA1NDAwMywgNTQwMTgsIDU0MDMzLCA1NDA0OCwgNTQwNjMsIDU0MDc4LCA1NDA5MywgNTQxMDgsIAorICAgIDU0MTIzLCA1NDEzOCwgNTQxNTMsIDU0MTY4LCA1NDE4MywgNTQxOTgsIDU0MjEzLCA1NDIyOCwgNTQyNDMsIDU0MjU4LCAKKyAgICA1NDI3MywgNTQyODgsIDU0MzAzLCA1NDMxOCwgNTQzMzMsIDU0MzQ4LCA1NDM2MywgNTQzNzgsIDU0MzkzLCA1NDQwOCwgCisgICAgNTQ0MjMsIDU0NDM4LCA1NDQ1MywgNTQ0NjgsIDU0NDgzLCA1NDQ5OCwgNTQ1MTMsIDU0NTI4LCA1NDU0MywgNTQ1NTgsIAorICAgIDU0NTczLCA1NDU4OCwgNTQ2MDMsIDU0NjE4LCA1NDYzMywgNTQ2NDgsIDU0NjYzLCA1NDY3OCwgNTQ2OTMsIDU0NzA4LCAKKyAgICA1NDcyMywgNTQ3MzgsIDU0NzUzLCA1NDc2OCwgNTQ3ODMsIDU0Nzk4LCA1NDgxMywgNTQ4MjgsIDU0ODQzLCA1NDg1OSwgCisgICAgNTQ4NzUsIDU0ODkxLCA1NDkwNywgNTQ5MjMsIDU0OTM5LCA1NDk1NSwgNTQ5NzEsIDU0OTg3LCA1NTAwMywgNTUwMTksIAorICAgIDU1MDM1LCA1NTA1MSwgNTUwNjcsIDU1MDgzLCA1NTA5OSwgNTUxMTUsIDU1MTMxLCA1NTE0NywgNTUxNjMsIDU1MTc5LCAKKyAgICA1NTE5NSwgNTUyMTEsIDU1MjI3LCA1NTI0MywgNTUyNTksIDU1Mjc1LCA1NTI5MSwgNTUzMDcsIDU1MzIzLCA1NTMzOSwgCisgICAgNTUzNTUsIDU1MzcxLCA1NTM4NywgNTU0MDMsIDU1NDE5LCA1NTQzNSwgNTU0NTEsIDU1NDY3LCA1NTQ4MywgNTU0OTksIAorICAgIDU1NTE1LCA1NTUzMSwgNTU1NDcsIDU1NTYzLCA1NTU3OSwgNTU1OTUsIDU1NjExLCA1NTYyNywgNTU2NDMsIDU1NjU5LCAKKyAgICA1NTY3NSwgNTU2OTEsIDU1NzA3LCA1NTcyMywgNTU3MzksIDU1NzU1LCA1NTc3MSwgNTU3ODcsIDU1ODAzLCA1NTgxOSwgCisgICAgNTU4MzUsIDU1ODUxLCA1NTg2NywgNTU4ODMsIDU1ODk5LCA1NTkxNSwgNTU5MzEsIDU1OTQ3LCA1NTk2MywgNTU5NzksIAorICAgIDU1OTk1LCA1NjAxMSwgNTYwMjcsIDU2MDQzLCA1NjA1OSwgNTYwNzUsIDU2MDkxLCA1NjEwNywgNTYxMjMsIDU2MTM5LCAKKyAgICA1NjE1NSwgNTYxNzEsIDU2MTg3LCA1NjIwMywgNTYyMTksIDU2MjM1LCA1NjI1MSwgNTYyNjcsIDU2MjgzLCA1NjI5OSwgCisgICAgNTYzMTUsIDU2MzMxLCA1NjM0NywgNTYzNjMsIDU2Mzc5LCA1NjM5NSwgNTY0MTEsIDU2NDI3LCA1NjQ0MywgNTY0NTksIAorICAgIDU2NDc1LCA1NjQ5MSwgNTY1MDcsIDU2NTIzLCA1NjUzOSwgNTY1NTUsIDU2NTcxLCA1NjU4NywgNTY2MDMsIDU2NjE5LCAKKyAgICA1NjYzNSwgNTY2NTEsIDU2NjY3LCA1NjY4MywgNTY2OTksIDU2NzE1LCA1NjczMSwgNTY3NDcsIDU2NzYzLCA1Njc3OSwgCisgICAgNTY3OTUsIDU2ODExLCA1NjgyNywgNTY4NDMsIDU2ODU5LCA1Njg3NSwgNTY4OTEsIDU2OTA3LCA1NjkyMywgNTY5MzksIAorICAgIDU2OTU1LCA1Njk3MSwgNTY5ODcsIDU3MDAzLCA1NzAxOSwgNTcwMzUsIDU3MDUxLCA1NzA2NywgNTcwODMsIDU3MDk5LCAKKyAgICA1NzExNSwgNTcxMzEsIDU3MTQ3LCA1NzE2MywgNTcxNzksIDU3MTk1LCA1NzIxMSwgNTcyMjcsIDU3MjQzLCA1NzI1OSwgCisgICAgNTcyNzUsIDU3MjkxLCA1NzMwNywgNTczMjMsIDU3MzM5LCA1NzM1NSwgNTczNzEsIDU3Mzg3LCA1NzQwMywgNTc0MTksIAorICAgIDU3NDM1LCA1NzQ1MSwgNTc0NjcsIDU3NDgzLCA1NzQ5OSwgNTc1MTUsIDU3NTMxLCA1NzU0NywgNTc1NjMsIDU3NTc5LCAKKyAgICA1NzU5NSwgNTc2MTEsIDU3NjI3LCA1NzY0MywgNTc2NTksIDU3Njc1LCA1NzY5MSwgNTc3MDcsIDU3NzIzLCA1NzczOSwgCisgICAgNTc3NTUsIDU3NzcxLCA1Nzc4NywgNTc4MDMsIDU3ODE5LCA1NzgzNSwgNTc4NTEsIDU3ODY3LCA1Nzg4MywgNTc4OTksIAorICAgIDU3OTE1LCA1NzkzMSwgNTc5NDcsIDU3OTYzLCA1Nzk3OSwgNTc5OTUsIDU4MDExLCA1ODAyNywgNTgwNDMsIDU4MDU5LCAKKyAgICA1ODA3NSwgNTgwOTEsIDU4MTA3LCA1ODEyMywgNTgxMzksIDU4MTU1LCA1ODE3MSwgNTgxODcsIDU4MjAzLCA1ODIxOSwgCisgICAgNTgyMzUsIDU4MjUxLCA1ODI2NywgNTgyODMsIDU4Mjk5LCA1ODMxNSwgNTgzMzEsIDU4MzQ3LCA1ODM2MywgNTgzNzksIAorICAgIDU4Mzk1LCA1ODQxMSwgNTg0MjcsIDU4NDQzLCA1ODQ1OSwgNTg0NzUsIDU4NDkxLCA1ODUwNywgNTg1MjMsIDU4NTM5LCAKKyAgICA1ODU1NSwgNTg1NzEsIDU4NTg3LCA1ODYwMywgNTg2MTksIDU4NjM1LCA1ODY1MSwgNTg2NjcsIDU4NjgzLCA1ODY5OSwgCisgICAgNTg3MTUsIDU4NzMxLCA1ODc0NywgNTg3NjMsIDU4Nzc5LCA1ODc5NSwgNTg4MTEsIDU4ODI3LCA1ODg0MywgNTg4NTksIAorICAgIDU4ODc1LCA1ODg5MSwgNTg5MDcsIDU4OTIzLCA1ODkzOSwgNTg5NTUsIDU4OTcxLCA1ODk4NywgNTkwMDMsIDU5MDE5LCAKKyAgICA1OTAzNSwgNTkwNTEsIDU5MDY3LCA1OTA4MywgNTkwOTksIDU5MTE1LCA1OTEzMSwgNTkxNDcsIDU5MTYzLCA1OTE3OSwgCisgICAgNTkxOTUsIDU5MjExLCA1OTIyNywgNTkyNDMsIDU5MjU5LCA1OTI3NSwgNTkyOTEsIDU5MzA3LCA1OTMyMywgNTkzMzksIAorICAgIDU5MzU1LCA1OTM3MSwgNTkzODcsIDU5NDAzLCA1OTQxOSwgNTk0MzUsIDU5NDUxLCA1OTQ2NywgNTk0ODMsIDU5NDk5LCAKKyAgICA1OTUxNSwgNTk1MzEsIDU5NTQ3LCA1OTU2MywgNTk1NzksIDU5NTk1LCA1OTYxMSwgNTk2MjcsIDU5NjQzLCA1OTY1OSwgCisgICAgNTk2NzUsIDU5NjkxLCA1OTcwNywgNTk3MjMsIDU5NzM5LCA1OTc1NSwgNTk3NzEsIDU5Nzg3LCA1OTgwMywgNTk4MTksIAorICAgIDU5ODM1LCA1OTg1MSwgNTk4NjcsIDU5ODgzLCA1OTg5OSwgNTk5MTUsIDU5OTMxLCA1OTk0NywgNTk5NjMsIDU5OTc5LCAKKyAgICA1OTk5NSwgNjAwMTEsIDYwMDI3LCA2MDA0MywgNjAwNTksIDYwMDc1LCA2MDA5MSwgNjAxMDcsIDYwMTIzLCA2MDEzOSwgCisgICAgNjAxNTUsIDYwMTcxLCA2MDE4NywgNjAyMDMsIDYwMjE5LCA2MDIzNSwgNjAyNTEsIDYwMjY3LCA2MDI4MywgNjAyOTksIAorICAgIDYwMzE1LCA2MDMzMSwgNjAzNDcsIDYwMzYzLCA2MDM3OSwgNjAzOTUsIDYwNDExLCA2MDQyNywgNjA0NDMsIDYwNDU5LCAKKyAgICA2MDQ3NSwgNjA0OTEsIDYwNTA3LCA2MDUyMywgNjA1MzksIDYwNTU1LCA2MDU3MSwgNjA1ODcsIDYwNjAzLCA2MDYxOSwgCisgICAgNjA2MzUsIDYwNjUxLCA2MDY2NywgNjA2ODMsIDYwNjk5LCA2MDcxNSwgNjA3MzEsIDYwNzQ3LCA2MDc2MywgNjA3NzksIAorICAgIDYwNzk1LCA2MDgxMSwgNjA4MjcsIDYwODQzLCA2MDg1OSwgNjA4NzUsIDYwODkxLCA2MDkwNywgNjA5MjMsIDYwOTM5LCAKKyAgICA2MDk1NSwgNjA5NzEsIDYwOTg3LCA2MTAwMywgNjEwMTksIDYxMDM1LCA2MTA1MSwgNjEwNjcsIDYxMDgzLCA2MTA5OSwgCisgICAgNjExMTUsIDYxMTMxLCA2MTE0NywgNjExNjMsIDYxMTc5LCA2MTE5NSwgNjEyMTEsIDYxMjI3LCA2MTI0MywgNjEyNTksIAorICAgIDYxMjc1LCA2MTI5MSwgNjEzMDcsIDYxMzIzLCA2MTMzOSwgNjEzNTUsIDYxMzcxLCA2MTM4NywgNjE0MDMsIDYxNDE5LCAKKyAgICA2MTQzNSwgNjE0NTEsIDYxNDY3LCA2MTQ4MywgNjE0OTksIDYxNTE1LCA2MTUzMSwgNjE1NDcsIDYxNTYzLCA2MTU3OSwgCisgICAgNjE1OTUsIDYxNjExLCA2MTYyNywgNjE2NDMsIDYxNjU5LCA2MTY3NSwgNjE2OTEsIDYxNzA3LCA2MTcyMywgNjE3MzksIAorICAgIDYxNzU1LCA2MTc3MSwgNjE3ODcsIDYxODAzLCA2MTgxOSwgNjE4MzUsIDYxODUxLCA2MTg2NywgNjE4ODMsIDYxODk5LCAKKyAgICA2MTkxNSwgNjE5MzEsIDYxOTQ3LCA2MTk2MywgNjE5NzksIDYxOTk1LCA2MjAxMSwgNjIwMjcsIDYyMDQzLCA2MjA1OSwgCisgICAgNjIwNzUsIDYyMDkxLCA2MjEwNywgNjIxMjMsIDYyMTM5LCA2MjE1NSwgNjIxNzEsIDYyMTg3LCA2MjIwMywgNjIyMTksIAorICAgIDYyMjM1LCA2MjI1MSwgNjIyNjcsIDYyMjgzLCA2MjI5OSwgNjIzMTUsIDYyMzMxLCA2MjM0NywgNjIzNjMsIDYyMzc5LCAKKyAgICA2MjM5NSwgNjI0MTEsIDYyNDI3LCA2MjQ0MywgNjI0NTksIDYyNDc1LCA2MjQ5MSwgNjI1MDcsIDYyNTIzLCA2MjUzOSwgCisgICAgNjI1NTUsIDYyNTcxLCA2MjU4NywgNjI2MDMsIDYyNjE5LCA2MjYzNSwgNjI2NTEsIDYyNjY3LCA2MjY4MywgNjI2OTksIAorICAgIDYyNzE1LCA2MjczMSwgNjI3NDcsIDYyNzYzLCA2Mjc3OSwgNjI3OTUsIDYyODExLCA2MjgyNywgNjI4NDMsIDYyODU5LCAKKyAgICA2Mjg3NSwgNjI4OTEsIDYyOTA3LCA2MjkyMywgNjI5MzksIDYyOTU1LCA2Mjk3MSwgNjI5ODcsIDYzMDAzLCA2MzAxOSwgCisgICAgNjMwMzUsIDYzMDUxLCA2MzA2NywgNjMwODMsIDYzMDk5LCA2MzExNSwgNjMxMzEsIDYzMTQ3LCA2MzE2MywgNjMxNzksIAorICAgIDYzMTk1LCA2MzIxMSwgNjMyMjcsIDYzMjQzLCA2MzI1OSwgNjMyNzUsIDYzMjkxLCA2MzMwNywgNjMzMjMsIDYzMzM5LCAKKyAgICA2MzM1NSwgNjMzNzEsIDYzMzg3LCA2MzQwMywgNjM0MTksIDYzNDM1LCA2MzQ1MSwgNjM0NjcsIDYzNDgzLCA2MzQ5OSwgCisgICAgNjM1MTUsIDYzNTMwLCAxNjE1MiwgNjM1MzksIDYzNTQ0LCA2MzU1MCwgNjM1NTYsIDYzNTY2LCA2MzU3NCwgMTYzOTMsIAorICAgIDE2OTk5LCAxMDgzMSwgNjM1ODcsIDE0OTksIDE1MDMsIDYzNTk1LCAzOTc4LCAyOTgzMiwgNzUzNiwgNjM2MDEsIDYzNjA2LCAKKyAgICA2MzYxMSwgNjM2MTYsIDYzNjIxLCA2MzYyNywgNjM2MzIsIDYzNjM4LCA2MzY0MywgNjM2NDksIDYzNjU0LCA2MzY1OSwgCisgICAgNjM2NjQsIDYzNjY5LCA2MzY3NSwgNjM2ODAsIDYzNjg1LCA2MzY5MCwgNjM2OTUsIDYzNzAwLCA2MzcwNSwgNjM3MTAsIAorICAgIDYzNzE2LCA2MzcyMSwgNjM3MjcsIDYzNzM0LCAyNTg1LCA2MzczOSwgNjM3NDUsIDg5NTcsIDYzNzQ5LCA2Mzc1NCwgCisgICAgNjM3NjEsIDYzNzY5LCA2NSwgNjM3NzMsIDYzNzc5LCA2Mzc4NCwgNjM3ODksIDYzNzkzLCA2Mzc5OCwgNjM4MDIsIDYzODA2LCAKKyAgICAxMTcxOSwgNjM4MTAsIDYzODIwLCA2MzgzMywgNjM4NDQsIDYzODU3LCA2Mzg2NCwgNjM4NzAsIDExMjM2LCA2Mzg3OCwgCisgICAgNjM4ODMsIDYzODg5LCA2Mzg5NSwgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTYsIDYzOTIxLCA2MzkyNSwgNjM5MzAsIAorICAgIDYzOTM1LCA2Mzk0MCwgNjM5NDYsIDYzOTUyLCA2Mzk1OCwgNjM5NjMsIDYzOTY3LCA2Mzk3MiwgNjM5NzcsIDYzOTgxLCAKKyAgICA2Mzk4NiwgNjM5OTEsIDYzOTk2LCA2NDAwMCwgMTE3MzUsIDExNzQ2LCAxMTc1MSwgMTU0MiwgNjQwMDQsIDY0MDEwLCAKKyAgICAxNTQ3LCAxNzg5MCwgNjQwMTUsIDE3ODk5LCA2NDAyMCwgNjQwMjYsIDY0MDMxLCAxNTc4LCA2NDAzNywgMTU4NCwgMTU5MCwgCisgICAgMTE3ODEsIDY0MDQyLCA2NDA1MSwgNjQwNTksIDY0MDY3LCA2NDA3NCwgNjQwNzgsIDY0MDgyLCA2NDA4OCwgNjQwOTMsIAorICAgIDMzNzIxLCA2NDA5OCwgNjQxMDUsIDY0MTEyLCA2NDExNywgNjQxMjEsIDY0MTI1LCA2NDEzNCwgMTU5NSwgMTgwMDgsIAorICAgIDY0MTM5LCA2NDE0MywgMTgwMTksIDExMjYsIDY0MTQ3LCA2NDE1NCwgNjQxNTksIDY0MTYzLCAxODA1NSwgMTU5OSwgCisgICAgNDE2ODUsIDY0MTY2LCA2NDE3MSwgNjQxODEsIDY0MTkwLCA2NDE5NSwgNjQxOTksIDY0MjA1LCAxNjA0LCA0NDMxNiwgCisgICAgNjQyMTAsIDY0MjE5LCA2NDIyNSwgNjQyMzAsIDY0MjM1LCAxMTk5MiwgMTE5OTgsIDY0MjQxLCA2NDI1MywgNjQyNzAsIAorICAgIDY0Mjg3LCA2NDMwNCwgNjQzMjEsIDY0MzM4LCA2NDM1NSwgNjQzNzIsIDY0Mzg5LCA2NDQwNiwgNjQ0MjMsIDY0NDQwLCAKKyAgICA2NDQ1NywgNjQ0NzQsIDY0NDkxLCA2NDUwOCwgNjQ1MjUsIDY0NTQyLCA2NDU1OSwgNjQ1NzYsIDY0NTkzLCA2NDYxMCwgCisgICAgNjQ2MjcsIDY0NjQ0LCA2NDY2MSwgNjQ2NzgsIDY0Njk1LCA2NDcxMiwgNjQ3MjksIDY0NzQ2LCA2NDc2MywgNjQ3ODAsIAorICAgIDY0Nzk3LCA2NDgxNCwgNjQ4MzEsIDY0ODQ4LCA2NDg2NSwgNjQ4ODIsIDY0ODk5LCA2NDkxNiwgNjQ5MzMsIDY0OTUwLCAKKyAgICA2NDk2NywgNjQ5ODQsIDY1MDAxLCA2NTAxOCwgNjUwMzUsIDY1MDUyLCA2NTA2OSwgNjUwODYsIDY1MDk3LCA2NTEwNywgCisgICAgNjUxMTIsIDE2MDksIDY1MTE2LCA2NTEyMSwgNjUxMjcsIDY1MTMyLCA2NTEzNywgNjUxNDQsIDk5MjksIDE2MTQsIDY1MTUwLCAKKyAgICA2NTE1OSwgMzAxNjEsIDY1MTY0LCA2NTE3NSwgMTIwMDksIDY1MTg1LCA2NTE5MCwgNjUxOTYsIDY1MjAxLCA2NTIwOCwgCisgICAgNjUyMTQsIDY1MjE5LCAxNjE5LCAxODMzOCwgNjUyMjQsIDY1MjMwLCAxMjAxOSwgMTYyNCwgMTIwMjQsIDY1MjM2LCAKKyAgICA2NTI0MSwgNjUyNDcsIDY1MjUyLCA2NTI1NywgNjUyNjIsIDY1MjY3LCA2NTI3MiwgNjUyNzcsIDY1MjgyLCA2NTI4NywgCisgICAgNjUyOTMsIDY1Mjk5LCA2NTMwNSwgNjUzMTAsIDY1MzE0LCA2NTMxOSwgNjUzMjQsIDY1MzI4LCA2NTMzMywgNjUzMzgsIAorICAgIDY1MzQzLCA2NTM0OCwgNjUzNTIsIDY1MzU3LCA2NTM2MywgNjUzNjgsIDY1MzczLCA2NTM3NywgNjUzODIsIDY1Mzg3LCAKKyAgICA2NTM5MywgNjUzOTgsIDY1NDAzLCA2NTQwOSwgNjU0MTUsIDY1NDIwLCA2NTQyNCwgNjU0MjksIDY1NDM0LCA2NTQzOSwgCisgICAgNjU0NDMsIDY1NDQ4LCA2NTQ1MywgNjU0NTgsIDY1NDY0LCA2NTQ3MCwgNjU0NzUsIDY1NDc5LCA2NTQ4MywgNjU0ODgsIAorICAgIDY1NDkzLCA2NTQ5OCwgMzE3MzUsIDY1NTAyLCA2NTUwNywgNjU1MTIsIDY1NTE4LCA2NTUyMywgNjU1MjgsIDY1NTMyLCAKKyAgICA2NTUzNywgNjU1NDIsIDY1NTQ4LCA2NTU1MywgNjU1NTgsIDY1NTY0LCA2NTU3MCwgNjU1NzUsIDY1NTc5LCA2NTU4NCwgCisgICAgNjU1ODksIDY1NTkzLCA2NTU5OCwgNjU2MDMsIDY1NjA4LCA2NTYxNCwgNjU2MjAsIDY1NjI1LCA2NTYyOSwgNjU2MzQsIAorICAgIDY1NjM5LCA2NTY0MywgNjU2NDgsIDY1NjUzLCA2NTY1OCwgNjU2NjMsIDY1NjY3LCA2NTY3MCwgNjU2NzMsIDY1Njc4LCAKKyAgICA2NTY4MywgMzQ0MTIsIDY1NjkwLCA2NTY5OCwgMzY5MCwgMzAxMTEsIDY1NzA0LCA2NTcxMSwgNjU3MTcsIDM4MjksIAorICAgIDEyMTMwLCA2NTcyMywgNjU3MzMsIDY1NzQ4LCA2NTc1NiwgMTIxMzUsIDY1NzY3LCA2NTc3MiwgNjU3ODMsIDY1Nzk1LCAKKyAgICA2NTgwNywgNjU4MTksIDI3MjMsIDY1ODMxLCA2NTgzNiwgNjU4NDgsIDY1ODUyLCA2NTg1OCwgNjU4NjQsIDY1ODY5LCAKKyAgICA2NTg3OCwgMTY0MSwgMTc1NjUsIDY1ODg1LCA2NTg5MCwgNDQzNzUsIDY1ODk0LCA2NTg5OCwgNjU5MDMsIDY1OTA3LCAKKyAgICAxODQ3OSwgNjU5MTIsIDY1OTE1LCA2NTkyMCwgNjU5MjgsIDY1OTM2LCAxNjQ1LCAxMjE3MSwgMTIxNzcsIDE2NTAsIAorICAgIDY1OTQ0LCA2NTk1MSwgNjU5NTYsIDY1OTY1LCA2NTk3NSwgNjU5ODIsIDY1OTg3LCA2NTk5MiwgMTY1NSwgNjU5OTksIAorICAgIDY2MDA0LCAxODU5OSwgNjYwMDgsIDY2MDEzLCA2NjAyMCwgNjYwMjYsIDY2MDMwLCA2NjA0MSwgNjYwNTEsIDY2MDU4LCAKKyAgICAxODYyMSwgOTgyMywgOTgzMCwgNDAyNywgNDAzMywgNjYwNjUsIDE2NjAsIDY2MDcwLCA2NjA3NiwgNjYwODQsIDY2MDkxLCAKKyAgICA2NjA5NywgNjYxMDQsIDY2MTE2LCA2NjEyMiwgNjYxMjcsIDY2MTM5LCA2NjE1MCwgNjYxNTksIDY2MTY5LCAzOTU3LCAKKyAgICA2NjE3NywgMzM1MTUsIDMzNTI0LCAxODY2MSwgMTY2NSwgMTY2OSwgNjYxOTAsIDY2MTk0LCA2NjE5NywgNjYyMDgsIAorICAgIDY2MjEzLCAxNjc5LCA2NjIyMSwgNjYyMjYsIDY2MjMxLCAxODcyMCwgNjYyNDMsIDY2MjQ2LCA2NjI1MiwgNjYyNTgsIAorICAgIDY2MjYzLCA2NjI3MSwgMTY4NCwgNjYyNzYsIDY2MjgxLCA2NjI4OSwgNjYyOTcsIDY2MzA0LCA2NjMxMywgNjYzMjEsIAorICAgIDY2MzMwLCAxNjg5LCA2NjMzNCwgMTY5NCwgMjMyMDgsIDY2MzM5LCA2NjM0NiwgMTg4MDAsIDY2MzU0LCA2NjM2NCwgCisgICAgNjYzNzAsIDY2Mzc1LCA2NjM4MywgNjYzOTAsIDY2Mzk5LCA2NjQwNywgNjY0MTcsIDY2NDI2LCA2NjQzNiwgNjY0NDUsIAorICAgIDY2NDU2LCA2NjQ2NiwgNjY0NzYsIDY2NDg1LCA2NjQ5NSwgNjY1MDksIDY2NTIyLCA2NjUzMSwgNjY1MzksIDY2NTQ5LCAKKyAgICA2NjU1OCwgNjY1NzAsIDY2NTgxLCA2NjU5MiwgNjY2MDIsIDE4MTEyLCA2NjYwNywgMTIzMjMsIDY2NjE2LCA2NjYyMiwgCisgICAgNjY2MjcsIDY2NjM0LCA2NjY0MSwgNjY2NDcsIDE3NzcxLCA2NjY1NywgNjY2NjMsIDY2NjY4LCA2NjY3OSwgNjY2ODQsIAorICAgIDY2NjkyLCAxMjM0MCwgMTIzNDUsIDY2NzAwLCA2NjcwNiwgNjY3MTAsIDY2NzE4LCA0MDIyLCAxODg2OSwgNDQ0NjgsIAorICAgIDY2NzIzLCA2NjcyOSwgNjY3MzQsIDY2NzQyLCA2Njc0OSwgMTMyODksIDY2NzU0LCA2Njc2MCwgMTcwNSwgNjY3NjUsIAorICAgIDY2NzY4LCAxNDE5LCA2Njc3NCwgNjY3NzksIDY2Nzg0LCA2Njc5MCwgNjY3OTUsIDY2ODAwLCA2NjgwNSwgNjY4MTAsIAorICAgIDY2ODE1LCA2NjgyMCwgMTcxNCwgMTMsIDY2ODI2LCA2NjgzMCwgNjY4MzUsIDY2ODM5LCA2Njg0MywgNjY4NDcsIDM0NjUyLCAKKyAgICA2Njg1MiwgMjUyOTYsIDY2ODU3LCA2Njg2MiwgNjY4NjYsIDY2ODY5LCA2Njg3MywgNjY4NzcsIDY2ODgyLCA2Njg4NiwgCisgICAgNjY4OTEsIDY2ODk1LCA2NjkwMSwgMzc5MTAsIDM3OTE1LCAzNzkyMCwgNjY5MDQsIDY2OTExLCA2NjkxNywgNjY5MjUsIAorICAgIDQ0MTM5LCA2NjkzNSwgMzc5MjYsIDM0OTE2LCAzNDY2NywgMzQ2NzMsIDM3OTQyLCAzNDY3OSwgNjY5NDAsIDY2OTQ1LCAKKyAgICAzNDk0OSwgNjY5NDksIDY2OTUyLCA2Njk1NiwgNjY5NjQsIDY2OTcxLCA2Njk3NCwgNjY5NzksIDY2OTg0LCA2Njk4OCwgCisgICAgNjY5OTIsIDY2OTk1LCA2NzAwNSwgNjcwMTcsIDY3MDI0LCA2NzAzMCwgMzQ2ODQsIDY3MDM3LCAzNjQ0MywgNjcwNDAsIAorICAgIDg5NzQsIDEwNTIsIDY3MDQzLCA2NzA0NywgNjcwNTIsIDM4NzIsIDY3MDU2LCA2NzA1OSwgMTQ5MzcsIDY3MDY2LCA2NzA3MywgCisgICAgNjcwODYsIDY3MDk0LCA2NzEwMywgNjcxMTIsIDY3MTE3LCA2NzEyNywgNjcxNDAsIDY3MTUyLCA2NzE1OSwgNjcxNjQsIAorICAgIDY3MTczLCA2NzE4NiwgMzk0NDksIDY3MjA0LCA2NzIwOSwgNjcyMTYsIDY3MjIyLCA2NzIyNywgODM1LCA2NzIzMiwgCisgICAgNjcyNDAsIDY3MjQ3LCA2NzI1NCwgMjk2NTgsIDgwMywgNjcyNjAsIDY3MjY2LCA2NzI3NiwgNjcyODQsIDY3MjkwLCAKKyAgICA2NzI5NSwgMzQ3MDMsIDYzMzQsIDM0NzE3LCA2NzI5OSwgNjczMDksIDY3MzE0LCA2NzMyMiwgNjczMzIsIDY3MzQ3LCAKKyAgICA2NzM1MywgNjczNTksIDM0NzI3LCA2NzM2NCwgMzM4MzgsIDY3MzY4LCA2NzM3MywgNjczODAsIDY3Mzg1LCA2NzM4OSwgCisgICAgNjczOTQsIDE4NjY0LCA2NzQwMSwgNjc0MDYsIDY3NDEwLCA2Mzc1LCAzNDc1MywgNjc0MTQsIDY3NDIwLCAzMjUsIDY3NDMwLCAKKyAgICA2NzQzNywgNjc0NDMsIDY3NDUwLCA2NzQ1NSwgNjc0NjQsIDE0NTczLCA2NDE3NSwgNjQxODUsIDY3NDcwLCA2NzQ3OCwgCisgICAgNjc0ODIsIDY3NDg2LCA2NzQ5MCwgNjc0OTQsIDY3NDk5LCA2NzUwMywgNjc1MDksIDY3NTE3LCA2NzUyMiwgNjc1MjcsIAorICAgIDY3NTMyLCA2NzUzNiwgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTUsIDY3NTYxLCA2NzU2NiwgNjc1NzAsIDY3NTc1LCAKKyAgICAzNDg3NywgNjc1NzksIDM0ODgzLCAzNDg4OSwgNjc1ODQsIDY3NTkwLCA2NzU5NywgNjc2MDIsIDY3NjA2LCAzMzg1NSwgCisgICAgMTgzMzEsIDY3NjA5LCA2NzYxMywgNjc2MTgsIDY3NjI1LCA2NzYzMSwgNjc2MzUsIDY3NjQwLCA0MzgwNCwgNjc2NDYsIAorICAgIDY3NjUwLCA2NzY1NywgNjc2NjEsIDY3NjY2LCA2NzY3MiwgNjc2NzgsIDY3Njg0LCA2NzY5NiwgNjc3MDUsIDY3NzE1LCAKKyAgICA2NzcyMSwgNjc3MjgsIDY3NzMzLCA2NzczOCwgNjc3NDIsIDY3NzQ1LCA2Nzc1MSwgNjc3NTgsIDY3NzYzLCA2Nzc2OCwgCisgICAgNjc3NzUsIDY3NzgyLCA2Nzc4OSwgNjc3OTUsIDY3ODAwLCA2NzgwNSwgNjc4MTMsIDM0ODk0LCAyNDQ3LCA2NzgxOCwgCisgICAgNjc4MjMsIDY3ODI5LCA2NzgzNCwgNjc4NDAsIDY3ODQ1LCA2Nzg1MCwgNjc4NTUsIDY3ODYxLCAzNDkxNSwgNjc4NjYsIAorICAgIDY3ODcyLCA2Nzg3OCwgNjc4ODQsIDM0OTg1LCA2Nzg4OSwgNjc4OTQsIDY3ODk5LCAzNDk5NiwgNjc5MDQsIDY3OTA5LCAKKyAgICA2NzkxNCwgNjc5MjAsIDY3OTI2LCAzNTAwMSwgNjc5MzEsIDY3OTM2LCA2Nzk0MSwgMzUwNTYsIDM1MDYyLCA2Nzk0NiwgCisgICAgNjc5NTEsIDM1MDY3LCAzNTA4OSwgMzA0MTAsIDM1MDk1LCAzNTA5OSwgNjc5NTYsIDEzMDE5LCA2Nzk2MCwgNjc5NjgsIAorICAgIDY3OTc0LCA2Nzk4MiwgNjc5ODksIDY3OTk1LCA2ODAwNSwgNjgwMTEsIDY4MDE4LCAxMTY1NCwgMzUxMTMsIDY4MDI0LCAKKyAgICA2ODAzNywgNjgwNDYsIDY4MDUyLCA2ODA2MSwgNjgwNjcsIDI1NjA2LCA2ODA3NCwgNjgwODEsIDY4MDkxLCA2ODA5OSwgCisgICAgNjgxMDIsIDM1MDU3LCA2ODEwNywgNjgxMTQsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMyLCA2ODEzNiwgNDE0NywgCisgICAgNjgxNDEsIDY4MTQ2LCA2ODE1MSwgMzgwMDQsIDM4MDA5LCA2ODE1NSwgMzgwMjMsIDY4MTYwLCAzODAyOCwgNjgxNjUsIAorICAgIDY4MTcxLCAzODA0MCwgMzgwNDYsIDM4MDUyLCA2ODE3NiwgNjgxODIsIDI0NTc1LCA2ODE5MywgNjgxOTYsIDY4MjA4LCAKKyAgICA2ODIxNiwgMzUxMzYsIDY4MjIwLCA2ODIyOSwgNjgyMzksIDY4MjQ4LCAzNTE0NiwgNjgyNTMsIDY4MjYwLCA2ODI2OSwgCisgICAgNjgyNzUsIDY4MjgzLCA2ODI5MCwgNjQyNiwgNDY5MywgNjgyOTUsIDM1MDY4LCA2ODMwMSwgNjgzMDQsIDY4MzEwLCAKKyAgICA2ODMxNywgNjgzMjIsIDY4MzI3LCAyNTUxNiwgNjgzMzEsIDY4MzM3LCA2ODM0MywgNjgzNDgsIDY4MzUzLCA2ODM1NywgCisgICAgNjgzNjMsIDY4MzY5LCAzNjM0OSwgMTA4NCwgMzkwOTksIDQwODM0LCA0MDg0MCwgMzUxNzcsIDM1MTgyLCA2ODM3NCwgCisgICAgNjgzNzgsIDY4MzgyLCA2ODM4NSwgNjgzOTgsIDY4NDA0LCA2ODQwOCwgNjg0MTEsIDY4NDE2LCAzNjY4NiwgNjg0MjAsIAorICAgIDMzODYwLCAyMzE1OCwgNjg0MjYsIDYzNTUsIDYzNjMsIDk2NjAsIDY4NDI5LCA2ODQzNCwgNjg0MzksIDY4NDQ0LCA2ODQ0OSwgCisgICAgNjg0NTQsIDY4NDU5LCA2ODQ2NCwgNjg0NjksIDY4NDc0LCA2ODQ4MCwgNjg0ODUsIDY4NDkwLCA2ODQ5NiwgNjg1MDEsIAorICAgIDY4NTA2LCA2ODUxMSwgNjg1MTYsIDY4NTIxLCA2ODUyNiwgNjg1MzIsIDY4NTM3LCA2ODU0MywgNjg1NDgsIDY4NTUzLCAKKyAgICA2ODU1OCwgNjg1NjMsIDY4NTY4LCA2ODU3MywgNjg1NzgsIDY4NTgzLCA2ODU4OCwgNjg1OTMsIDY4NTk5LCA2ODYwNCwgCisgICAgNjg2MDksIDY4NjE0LCA2ODYxOSwgNjg2MjQsIDY4NjI5LCA2ODYzNSwgNjg2NDAsIDY4NjQ1LCA2ODY1MCwgNjg2NTUsIAorICAgIDY4NjYwLCA2ODY2NSwgNjg2NzAsIDY4Njc1LCA2ODY4MCwgNjg2ODYsIDY4NjkxLCA2ODY5NiwgNjg3MDEsIDY4NzA2LCAKKyAgICA2ODcxMiwgNjg3MTgsIDY4NzIzLCA2ODcyOSwgNjg3MzQsIDY4NzM5LCA2ODc0NCwgNjg3NDksIDY4NzU0LCAxNDkyLCAxNTYsIAorICAgIDY4NzU5LCA2ODc2MywgNjg3NjcsIDY4NzcxLCAyNzMwNiwgNjg3NzUsIDY4Nzc5LCA2ODc4NCwgNjg3ODgsIDY4NzkzLCAKKyAgICA2ODc5NywgNjg4MDIsIDY4ODA3LCA2ODgxMiwgNjg4MTYsIDY4ODIwLCA2ODgyNSwgNjg4MjksIDE0NjUyLCA2ODgzNCwgCisgICAgNjg4MzgsIDY4ODQ1LCA2ODg1NSwgMTY3MTgsIDY4ODY0LCA2ODg3MywgNjg4NzcsIDY4ODgyLCA2ODg4NywgNjg4OTEsIAorICAgIDY4ODk1LCAyNzEwMCwgMzA2NywgNjg4OTksIDY4OTA1LCAxOTE0NCwgNjg5MDksIDY4OTE4LCA2ODkyNiwgNjg5MzIsIAorICAgIDY4OTM3LCA2ODk0OSwgNjg5NjEsIDY4OTY2LCA2ODk3MCwgNjg5NzUsIDY4OTc5LCA2ODk4NSwgNjg5OTEsIDY4OTk2LCAKKyAgICA2OTAwNiwgNjkwMTYsIDY5MDIyLCA2OTAyNywgNjkwMzEsIDY5MDM3LCA2OTA0MiwgNjkwNDksIDY5MDU1LCA2OTA2MCwgCisgICAgNjkwNjksIDY5MDc4LCA2OTA4NiwgNjkwOTAsIDE3MTI5LCA2OTA5MywgNjkxMDIsIDY5MTEwLCA2OTEyMiwgNjkxMzMsIAorICAgIDY5MTQ0LCA2OTE1MywgNjkxNTcsIDY5MTY2LCA2OTE3NCwgNjkxODQsIDY5MTkyLCA2OTE5OSwgNjkyMDUsIDY5MjEwLCAKKyAgICA2OTIxOSwgNjkyMjUsIDY5MjMwLCA2OTI0MSwgNjAsIDMzNjU4LCA2OTI0NywgMjg1ODYsIDI4NTk2LCA2OTI1MywgNjkyNjEsIAorICAgIDY5MjY4LCA2OTI3NCwgNjkyNzgsIDY5Mjg4LCA2OTI5OSwgNjkzMDcsIDY5MzE2LCA2OTMyMSwgNjkzMjYsIDY5MzMxLCAKKyAgICA2OTMzNSwgNjkzMzksIDE5MDk4LCA2OTM0NywgNjkzNTEsIDY5MzU3LCA2OTM2NywgNjkzNzQsIDY5MzgwLCA2OTM4NiwgCisgICAgMzgxMDMsIDY5MzkwLCA2OTM5MiwgNjkzOTUsIDY5NDAxLCA2OTQwNSwgNjk0MTYsIDY5NDI2LCA2OTQzMiwgNjk0MzksIAorICAgIDY5NDQ2LCAxNDU4OSwgNjk0NTQsIDY5NDYwLCA2OTQ2OSwgNjk0NzgsIDY5NDg0LCAxMDcxMywgNjk0OTAsIDY5NDk2LCAKKyAgICA2OTUwMSwgNjk1MDYsIDY5NTEzLCA2OTUxOCwgNjk1MjUsIDY5NTMxLCA2OTUzNiwgNjk1NDQsIDY5NTU3LCA2OTU2NiwgCisgICAgNjk1NzUsIDY2NDcxLCA2NjQ4MSwgNjk1ODUsIDY5NTkxLCA2OTU5NywgNjk2MDQsIDY5NjExLCA2OTYxOCwgNjk2MjUsIAorICAgIDY5NjMyLCA2OTYzNywgNjk2NDEsIDY5NjQ1LCA2OTY0OCwgNjk2NTgsIDY5NjYyLCA2OTY3NCwgNjk2ODMsIDY5Njg3LCAKKyAgICA2OTY5OCwgNjk3MDMsIDY5NzA3LCA2NjQ5MCwgNjk3MTMsIDY5NzIwLCA2OTcyOSwgNjk3MzcsIDY5NzQ1LCA2OTc1MCwgCisgICAgNjk3NTQsIDY5NzU5LCA2OTc2NCwgNjk3NzQsIDY5NzgyLCA2OTc4NywgNjk3OTEsIDY5Nzk1LCA2OTgwMSwgNjk4MDksIAorICAgIDY5ODE2LCA2OTgyOCwgNjk4MzYsIDY5ODQ3LCA2OTg1NCwgNjk4NjAsIDY5ODcwLCA2OTg3NiwgNjk4ODAsIDY5ODg5LCAKKyAgICA2OTg5OCwgNjk5MDUsIDY5OTExLCA2OTkxNiwgNjk5MjAsIDY5OTI0LCA2OTkyOCwgNjk5MzcsIDY5OTQ2LCA2OTk1NSwgCisgICAgNjk5NjEsIDY5OTY3LCA2OTk3MywgNjk5NzgsIDY5OTg1LCA2OTk5MSwgNjk5OTksIDcwMDA2LCA3MDAxMiwgMTM3MzIsIAorICAgIDcwMDE3LCA3MDAyMywgNzAwMjcsIDE1NjQ2LCA3MDAzMSwgNzAwMzYsIDcwMDQ2LCA3MDA1NSwgNzAwNjEsIDcwMDY3LCAKKyAgICA3MDA3NSwgNzAwODIsIDcwMDg2LCA3MDA5MCwgNzAwOTcsIDcwMTAzLCA3MDExMSwgNzAxMTgsIDcwMTI0LCA3MDEzNSwgCisgICAgNzAxMzksIDcwMTQzLCA3MDE0NywgNzAxNTAsIDcwMTU2LCA3MDE2MSwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxODMsIAorICAgIDcwMTkxLCA3MDE5OCwgNzAyMDQsIDcwMjExLCAyNjE4OSwgNDM4NzMsIDcwMjE2LCA3MDIyNCwgNzAyMjgsIDcwMjMyLCAKKyAgICA3MDIzNSwgNzAyNDMsIDcwMjUwLCA3MDI1NiwgNzAyNjUsIDcwMjczLCA3MDI3OSwgNzAyODQsIDcwMjg4LCA3MDI5MywgCisgICAgNzAyOTgsIDcwMzAyLCA3MDMwNiwgNzAzMTAsIDcwMzE1LCA3MDMyNCwgNzAzMjgsIDcwMzM1LCA0MDk0MywgNzAzMzksIAorICAgIDcwMzQ1LCA3MDM0OSwgNzAzNTcsIDcwMzYzLCA3MDM2OCwgNzAzNzksIDcwMzg3LCA3MDM5MywgNzA0MDIsIDI0NzIyLCAKKyAgICA3MDQxMCwgNzA0MTcsIDcwNDI0LCA3MDQzMSwgNzA0MzgsIDcwNDQ1LCA0NzIwMywgMTQ0MjcsIDcwNDUyLCA3MDQ1OSwgCisgICAgNzA0NjQsIDM4MTM5LCA0MzU5LCA3MDQ3MCwgNzA0NzUsIDcwNDgwLCA3MDQ4NiwgNzA0OTIsIDcwNDk4LCA3MDUwMywgCisgICAgNzA1MDgsIDcwNTEzLCA3MDUxOCwgNzA1MjQsIDcwNTI5LCA3MDUzNSwgNzA1NDAsIDcwNTQ2LCA3MDU1MSwgNzA1NTYsIAorICAgIDcwNTYxLCA3MDU2NiwgNzA1NzEsIDcwNTc2LCA3MDU4MSwgNzA1ODcsIDcwNTkyLCA3MDU5OCwgNzA2MDMsIDcwNjA4LCAKKyAgICA3MDYxMywgNzA2MTgsIDcwNjIzLCA3MDYyOCwgNzA2MzQsIDcwNjM5LCA3MDY0NCwgNzA2NDksIDcwNjU0LCA3MDY1OSwgCisgICAgNzA2NjQsIDcwNjY5LCA3MDY3NCwgNzA2NzksIDcwNjg0LCA3MDY5MCwgNzA2OTUsIDcwNzAwLCA3MDcwNSwgNzA3MTAsIAorICAgIDcwNzE1LCA3MDcyMCwgNzA3MjUsIDcwNzMwLCA3MDczNiwgNzA3NDEsIDcwNzQ2LCA3MDc1MSwgNzA3NTYsIDcwNzYxLCAKKyAgICA3MDc2NiwgNzA3NzEsIDcwNzc2LCA3MDc4MSwgNzA3ODYsIDcwNzkxLCA3MDc5NiwgNzA4MDIsIDE4MzksIDI3MiwgNzA4MDcsIAorICAgIDQxODAzLCA3MDgxMSwgNzA4MTQsIDcwODE5LCA3MDgyMywgNzA4MjYsIDM0MDQsIDcwODMxLCA3MDgzNiwgNzA4NDAsIAorICAgIDcwODQ5LCA3MDg2MCwgNzA4NzcsIDcwODk1LCA2OTc0MSwgNzA5MDMsIDcwOTA2LCA3MDkxNiwgNzA5MjMsIDcwOTMyLCAKKyAgICA3MDk0OCwgNzA5NTcsIDcwOTY3LCA3MDk3MiwgNzA5ODIsIDcwOTkxLCA3MDk5OSwgNzEwMTMsIDcxMDIxLCA3MTAyNSwgCisgICAgNzEwMjgsIDcxMDM1LCA3MTA0MSwgNzEwNTIsIDcxMDU5LCA3MTA3MSwgNzEwODIsIDcxMDkzLCA3MTEwMiwgNzExMDksIAorICAgIDEyNTksIDcyNywgNzExMTksIDI2MTgsIDcxMTIzLCA3MTEyOCwgNzExMzcsIDkyNzYsIDE5MDcxLCAyMjY1NSwgNzExNDUsIAorICAgIDcxMTUzLCA3MTE2NywgNzExODAsIDcxMTg0LCA3MTE4OSwgNzExOTQsIDcxMTk5LCA3MTIwNSwgNzEyMTEsIDcxMjE2LCAKKyAgICA4OTY2LCAxNjc0NiwgNzEyMjEsIDcxMjI1LCA3MTIzMywgOTM4NCwgNzEyMzgsIDcxMjQ0LCA3MTI1MywgNzEyNjEsIDE3MTcsIAorICAgIDEyMTg0LCA5MzUsIDY0ODksIDcxMjY1LCA3MTI2OSwgNzEyNzgsIDcxMjg4LCAyNDA0LCAyOTM4MiwgNzEyOTcsIDcxMzAzLCAKKyAgICAxODU3MSwgMjkzOTcsIDcxMzA5LCA0MjA3LCAxMjU2MiwgNzEzMTUsIDcxMzIyLCA2NjIwMywgNzEzMjYsIDcxMzMwLCAKKyAgICA3MTMzNiwgNzEzNDEsIDcxMzQ2LCAzNjIzLCAxNjAsIDM2NDksIDcxMzUxLCA3MTM2MywgNzEzNjcsIDcxMzczLCA3MTM3OCwgCisgICAgMzAxODEsIDcxMzgyLCAxMjU1MCwgMjc1OCwgNCwgNzEzODcsIDcxMzk3LCA3MTQwOCwgNzE0MTQsIDcxNDI1LCA3MTQzMiwgCisgICAgNzE0MzgsIDcxNDQ0LCA3MTQ1MiwgNzE0NTksIDcxNDY1LCA3MTQ3NSwgNzE0ODUsIDcxNDk1LCA3MTUwNCwgMjU1OTMsIAorICAgIDEyNzEsIDcxNTA5LCA3MTUxMywgNzE1MTcsIDcxNTIzLCA3MTUyNywgMjc4MSwgMjc4NywgODk2MywgMjI3OSwgNzE1MzEsIAorICAgIDcxNTM1LCA3MTU0NCwgNzE1NTIsIDcxNTYzLCA3MTU3MSwgNzE1NzksIDcxNTg1LCA3MTU5MCwgNzE2MDEsIDcxNjEyLCAKKyAgICA3MTYyMCwgNzE2MjYsIDcxNjMxLCAxMDUzMiwgNzE2NDEsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYyLCA3MTY2NiwgCisgICAgNzE2NzgsIDMwNTk3LCAxNjY3MSwgNzE2ODUsIDcxNjk1LCA3MTcwMSwgNzE3MDcsIDEwNjM0LCA3MTcxNywgNzE3MjgsIAorICAgIDcxNzM5LCA3MTc0OSwgNzE3NTgsIDcxNzYyLCA3MTc2OSwgMTczMSwgMTAyOSwgNzE3NzksIDcxNzg0LCA3MTc5MiwgCisgICAgNjYwMDksIDcxODAwLCA3MTgwNSwgNzE4MTYsIDcxODIzLCA3MTgzNywgMTU0ODMsIDQ4NCwgNzE4NDcsIDcxODUxLCAKKyAgICA3MTg1NSwgNzE4NjMsIDcxODcyLCA3MTg4MCwgNzE4ODYsIDcxOTAwLCA3MTkwNywgNzE5MTMsIDcxOTIyLCA3MTkyOSwgCisgICAgNzE5MzksIDcxOTQ3LCA3MTk1NCwgNzE5NjIsIDcxOTY5LCA0MDI5LCAxNDQsIDcxOTc3LCA3MTk4OCwgNzE5OTIsIDcyMDA0LCAKKyAgICA3MjAxMCwgMTI3NDMsIDE5OCwgNzIwMTUsIDk5NjEsIDcyMDIwLCAyODI2LCA3MjAyNCwgNzIwMzEsIDcyMDM3LCA3MjA0OCwgCisgICAgNzIwNTYsIDcyMDYzLCA5MzM1LCA3MjA3MCwgNzIwNzksIDcyMDg3LCA0MTA3LCA3MjEwMCwgNDEyNCwgNzIxMDQsIDcyMTA5LCAKKyAgICA3MjExNSwgNzIxMjAsIDcyMTI1LCA3MjEzMCwgMjgzMSwgNTIwLCA3MjEzNiwgNzIxNDksIDcyMTUzLCA3MjE1OCwgMjgzNiwgCisgICAgMTgzOCwgODI5LCA3MjE2MiwgNDEyOCwgNzIxNzAsIDcyMTc2LCA3MjE4MCwgODczLCA3MjE5MCwgNzIxOTksIDcyMjA0LCAKKyAgICAzNjQwLCA3MjIwOCwgMTY0MjcsIDE2NDM0LCA1MDU2NSwgNzIyMTIsIDQxNTksIDQwMzksIDE0MzEwLCA3MjIyMCwgNzIyMjcsIAorICAgIDcyMjMyLCAyNTY1NywgNzIyMzYsIDcyMjQzLCA3MjI0OSwgNzIyNTQsIDcyMjU5LCAxNjQ0NywgMTkyLCA3MjI2NCwgCisgICAgNzIyNzYsIDcyMjgyLCA3MjI5MCwgMjg0OCwgMTc0OSwgNzIyOTgsIDcyMzAwLCA3MjMwNSwgNzIzMTAsIDcyMzE1LCAKKyAgICA3MjMyMSwgNzIzMjYsIDcyMzMxLCA3MjMzNiwgNzIzNDEsIDcyMzQ2LCA3MjM1MSwgNzIzNTcsIDcyMzYyLCA3MjM2NywgCisgICAgNzIzNzIsIDcyMzc3LCA3MjM4MiwgNzIzODcsIDcyMzkyLCA3MjM5NywgNzI0MDMsIDcyNDA4LCA3MjQxMywgNzI0MTgsIAorICAgIDcyNDI0LCA3MjQyOSwgNzI0MzUsIDcyNDQwLCA3MjQ0NSwgNzI0NTAsIDcyNDU1LCA3MjQ2MCwgNzI0NjUsIDcyNDcwLCAKKyAgICA3MjQ3NiwgNzI0ODEsIDcyNDg3LCA3MjQ5MiwgNzI0OTcsIDcyNTAyLCA3MjUwNywgNzI1MTIsIDcyNTE3LCA3MjUyMiwgCisgICAgNzI1MjcsIDcyNTMzLCA3MjUzOSwgNzI1NDQsIDcyNTQ5LCA3MjU1NSwgNzI1NjAsIDcyNTY0LCA3MjU2OCwgNzI1NzMsIAorICAgIDcyNTc5LCA3MjU4MywgNzI1ODksIDcyNTk0LCA3MjU5OSwgNzI2MDUsIDcyNjEwLCA3MjYxNCwgNzI2MTksIDcyNjI0LCAKKyAgICA3MjYyOCwgNzI2MzEsIDcyNjMzLCA3MjYzNywgNzI2NDAsIDcyNjQ3LCA3MjY1MiwgNzI2NTYsIDcyNjYxLCA3MjY2NSwgCisgICAgNzI2NjksIDcyNjczLCA3MjY4MiwgNzI2ODYsIDM1MzgyLCA3MjY4OSwgMzUzODcsIDcyNjk2LCA3MjcwMSwgMzUzOTIsIAorICAgIDcyNzEwLCA3MjcxOSwgMzUzOTgsIDcyNzI0LCAzNTQwMywgNzI3MzMsIDcyNzM4LCAxMjc4NiwgNzI3NDIsIDcyNzQ3LCAKKyAgICA3Mjc1MiwgMzU0MDgsIDcyNzU2LCA0NTM5OCwgNzI3NjAsIDcyNzYzLCA3Mjc2NywgODYzNCwgNzI3NzMsIDcyNzc2LCAKKyAgICA3Mjc4MSwgNzI3ODYsIDcyNzkwLCAzODg3LCAzNTQxMywgNzI3OTMsIDcyNzk3LCA3MjgwMCwgNzI4MTEsIDcyODE2LCAKKyAgICA3MjgyMCwgNzI4MjYsIDcyODM0LCA3Mjg0NywgNzI4NTUsIDcyODY0LCA3Mjg3MCwgNzI4NzUsIDcyODgxLCA3Mjg4NSwgCisgICAgNzI4OTEsIDcyODk3LCA3MjkwNSwgNzI5MTAsIDcyOTE0LCA3MjkyMSwgNzI5MjcsIDcyOTM1LCA3Mjk0NCwgNzI5NTIsIAorICAgIDM1NDE2LCA3Mjk1OSwgNzI5NjksIDcyOTgyLCA3Mjk4NywgNzI5OTIsIDcyOTk2LCA3MzAwNSwgNzMwMTEsIDczMDE4LCAKKyAgICA3MzAyOSwgNzMwNDEsIDczMDQ4LCA3MzA1NywgNzMwNjYsIDczMDc1LCA3MzA4MiwgNzMwODgsIDczMDk1LCA3MzEwMywgCisgICAgNzMxMTAsIDczMTE4LCA3MzEyNywgNzMxMzUsIDczMTQyLCA3MzE1MCwgNzMxNTksIDczMTY3LCA3MzE3NiwgNzMxODYsIAorICAgIDczMTk1LCA3MzIwMywgNzMyMTAsIDczMjE4LCA3MzIyNywgNzMyMzUsIDczMjQ0LCA3MzI1NCwgNzMyNjMsIDczMjcxLCAKKyAgICA3MzI4MCwgNzMyOTAsIDczMjk5LCA3MzMwOSwgNzMzMjAsIDczMzMwLCA3MzMzOSwgNzMzNDcsIDczMzU0LCA3MzM2MiwgCisgICAgNzMzNzEsIDczMzc5LCA3MzM4OCwgNzMzOTgsIDczNDA3LCA3MzQxNSwgNzM0MjQsIDczNDM0LCA3MzQ0MywgNzM0NTMsIAorICAgIDczNDY0LCA3MzQ3NCwgNzM0ODMsIDczNDkxLCA3MzUwMCwgNzM1MTAsIDczNTE5LCA3MzUyOSwgNzM1NDAsIDczNTUwLCAKKyAgICA3MzU1OSwgNzM1NjksIDczNTgwLCA3MzU5MCwgNzM2MDEsIDczNjEzLCA3MzYyNCwgNzM2MzQsIDczNjQzLCA3MzY1MSwgCisgICAgNzM2NTgsIDczNjY2LCA3MzY3NSwgNzM2ODMsIDczNjkyLCA3MzcwMiwgNzM3MTEsIDczNzE5LCA3MzcyOCwgNzM3MzgsIAorICAgIDczNzQ3LCA3Mzc1NywgNzM3NjgsIDczNzc4LCA3Mzc4NywgNzM3OTUsIDczODA0LCA3MzgxNCwgNzM4MjMsIDczODMzLCAKKyAgICA3Mzg0NCwgNzM4NTQsIDczODYzLCA3Mzg3MywgNzM4ODQsIDczODk0LCA3MzkwNSwgNzM5MTcsIDczOTI4LCA3MzkzOCwgCisgICAgNzM5NDcsIDczOTU1LCA3Mzk2NCwgNzM5NzQsIDczOTgzLCA3Mzk5MywgNzQwMDQsIDc0MDE0LCA3NDAyMywgNzQwMzMsIAorICAgIDc0MDQ0LCA3NDA1NCwgNzQwNjUsIDc0MDc3LCA3NDA4OCwgNzQwOTgsIDc0MTA3LCA3NDExNywgNzQxMjgsIDc0MTM4LCAKKyAgICA3NDE0OSwgNzQxNjEsIDc0MTcyLCA3NDE4MiwgNzQxOTMsIDc0MjA1LCA3NDIxNiwgNzQyMjgsIDc0MjQxLCA3NDI1MywgCisgICAgNzQyNjQsIDc0Mjc0LCA3NDI4MywgNzQyOTEsIDc0Mjk4LCA3NDMwNiwgNzQzMTUsIDc0MzIzLCA3NDMzMiwgNzQzNDIsIAorICAgIDc0MzUxLCA3NDM1OSwgNzQzNjgsIDc0Mzc4LCA3NDM4NywgNzQzOTcsIDc0NDA4LCA3NDQxOCwgNzQ0MjcsIDc0NDM1LCAKKyAgICA3NDQ0NCwgNzQ0NTQsIDc0NDYzLCA3NDQ3MywgNzQ0ODQsIDc0NDk0LCA3NDUwMywgNzQ1MTMsIDc0NTI0LCA3NDUzNCwgCisgICAgNzQ1NDUsIDc0NTU3LCA3NDU2OCwgNzQ1NzgsIDc0NTg3LCA3NDU5NSwgNzQ2MDQsIDc0NjE0LCA3NDYyMywgNzQ2MzMsIAorICAgIDc0NjQ0LCA3NDY1NCwgNzQ2NjMsIDc0NjczLCA3NDY4NCwgNzQ2OTQsIDc0NzA1LCA3NDcxNywgNzQ3MjgsIDc0NzM4LCAKKyAgICA3NDc0NywgNzQ3NTcsIDc0NzY4LCA3NDc3OCwgNzQ3ODksIDc0ODAxLCA3NDgxMiwgNzQ4MjIsIDc0ODMzLCA3NDg0NSwgCisgICAgNzQ4NTYsIDc0ODY4LCA3NDg4MSwgNzQ4OTMsIDc0OTA0LCA3NDkxNCwgNzQ5MjMsIDc0OTMxLCA3NDk0MCwgNzQ5NTAsIAorICAgIDc0OTU5LCA3NDk2OSwgNzQ5ODAsIDc0OTkwLCA3NDk5OSwgNzUwMDksIDc1MDIwLCA3NTAzMCwgNzUwNDEsIDc1MDUzLCAKKyAgICA3NTA2NCwgNzUwNzQsIDc1MDgzLCA3NTA5MywgNzUxMDQsIDc1MTE0LCA3NTEyNSwgNzUxMzcsIDc1MTQ4LCA3NTE1OCwgCisgICAgNzUxNjksIDc1MTgxLCA3NTE5MiwgNzUyMDQsIDc1MjE3LCA3NTIyOSwgNzUyNDAsIDc1MjUwLCA3NTI1OSwgNzUyNjksIAorICAgIDc1MjgwLCA3NTI5MCwgNzUzMDEsIDc1MzEzLCA3NTMyNCwgNzUzMzQsIDc1MzQ1LCA3NTM1NywgNzUzNjgsIDc1MzgwLCAKKyAgICA3NTM5MywgNzU0MDUsIDc1NDE2LCA3NTQyNiwgNzU0MzcsIDc1NDQ5LCA3NTQ2MCwgNzU0NzIsIDc1NDg1LCA3NTQ5NywgCisgICAgNzU1MDgsIDc1NTIwLCA3NTUzMywgNzU1NDUsIDc1NTU4LCA3NTU3MiwgNzU1ODUsIDc1NTk3LCA3NTYwOCwgNzU2MTgsIAorICAgIDc1NjI3LCA3NTYzNSwgNzU2NDIsIDc1NjQ3LCA4NDUxLCA3NTY1NCwgMzU0MjYsIDc1NjU5LCA3NTY2NCwgMzU0MzEsIAorICAgIDc1NjcwLCAyMjc2MywgMzU0MzYsIDc1Njc1LCA3NTY4MSwgNzU2ODksIDc1Njk1LCA3NTcwMSwgNzU3MDgsIDc1NzE1LCAKKyAgICA3NTcyMCwgNzU3MjUsIDc1NzI5LCA3NTczMywgNzU3MzYsIDc1NzQwLCA3NTc0OSwgNzU3NTgsIDc1NzY2LCA3NTc3MiwgCisgICAgNzU3ODQsIDc1Nzk1LCA3NTc5OSwgMzEyOSwgODQyNiwgNzU4MDQsIDc1ODA3LCA3NTgwOSwgNzU4MTMsIDc1ODE3LCAKKyAgICA3NTgyMSwgNzU4MjcsIDc1ODMyLCAyODI0MCwgNzU4MzcsIDc1ODQxLCA3NTg0NCwgNzU4NDksIDc1ODUzLCA3NTg2MCwgCisgICAgNzU4NjYsIDc1ODcwLCA2NTA5LCA3NTg3NCwgMzU0NTMsIDc1ODc5LCA3NTg4NiwgNzU4OTUsIDc1OTAzLCA3NTkxNCwgCisgICAgNzU5MjIsIDc1OTMxLCA3NTkzOSwgNzU5NDYsIDc1OTUzLCA3NTk1OSwgNzU5NzAsIDM1NDU4LCA3NTk3NSwgNzU5ODYsIAorICAgIDc1OTk4LCA3NjAwNiwgNzYwMTcsIDc2MDI2LCA3NjAzNCwgNzYwNDUsIDc2MDUwLCA3NjA1OCwgMjU4MCwgNzYwNjMsIAorICAgIDM3NTUyLCA3NjA3NiwgNzYwODAsIDc2MDkyLCA3NjEwMCwgNzYxMDUsIDc2MTEzLCA3NjEyNCwgMTkyOTEsIDc2MTMzLCAKKyAgICA3NjEzOSwgNzYxNDYsIDc2MTU0LCA3NjE2MCwgMzU0NjgsIDc2MTY1LCA0MTUzLCA2MzU3MCwgNzYxNzIsIDc2MTc1LCAKKyAgICA3NjE4MywgNzYxOTYsIDc2MjA5LCA3NjIyMiwgNzYyMzUsIDc2MjQyLCA3NjI1MywgNzYyNjIsIDc2MjY3LCA0NzAyMCwgCisgICAgNDcwMjUsIDc2MjcxLCA3NjI3NSwgNzYyODMsIDc2MjkwLCA3NjI5OSwgNzYzMDcsIDc2MzEzLCA3NjMyMiwgNzYzMzAsIAorICAgIDc2MzM3LCA3NjM0NSwgNzYzNDksIDc2MzU4LCA3NjM2NywgNzYzNzcsIDc2MzkwLCA3NjQwMywgNzY0MTMsIDM1NDczLCAKKyAgICA3NjQxOSwgNzY0MjYsIDc2NDMyLCA3NjQzOCwgMzU0NzksIDc2NDQzLCA3NjQ0NiwgNzY0NTAsIDc2NDU4LCA3NjQ2NywgCisgICAgNDY3NTgsIDc2NDc1LCA3NjQ4NCwgNzY0OTIsIDc2NDk5LCA3NjUwNywgNzY1MTcsIDc2NTI2LCA3NjUzNSwgMzY3ODUsIAorICAgIDc2NTQ0LCA3NjU1NSwgNzY1NzAsIDc2NTgwLCA5OTk0LCAyMzQ2NywgNzY1ODksIDc2NTk0LCA3NjU5OSwgNzY2MDMsIAorICAgIDE3NzYzLCA3NjYwOCwgNzY2MTMsIDc2NjE5LCA3NjYyNCwgNzY2MjksIDc2NjM1LCA3NjY0MCwgNzY2NDUsIDIzNDMyLCAKKyAgICA3NjY1MCwgNzY2NTcsIDc2NjY1LCA3NjY3MywgNzY2ODEsIDc2Njg2LCA3NjY5MywgNzY3MDAsIDc2NzA1LCAyMjU3LCAKKyAgICA3NjcwOSwgNzY3MTMsIDc2NzIxLCA3NjcyOSwgMzU0OTYsIDc2NzM1LCA3Njc0MSwgNzY3NTMsIDc2NzU5LCA3Njc2NiwgCisgICAgNzY3NzAsIDc2Nzc3LCA3Njc4MiwgNzY3ODksIDc2Nzk1LCA3NjgwMiwgNzY4MTMsIDc2ODIzLCA3NjgzMywgNzY4NDUsIAorICAgIDc2ODUxLCA3Njg1OSwgNzY4NjUsIDc2ODc1LCA3Njg4NSwgMzU1MjMsIDc2ODk0LCA3NjkwMywgNzY5MDksIDc2OTIxLCAKKyAgICA3NjkzMiwgNzY5MzksIDc2OTQ0LCA3Njk0OCwgNzY5NTYsIDc2OTYyLCA3Njk2NywgNzY5NzIsIDc2OTc5LCA3Njk4NywgCisgICAgNzY5OTksIDc3MDA5LCA3NzAxOCwgNzcwMjcsIDc3MDM1LCA3NzA0MiwgMzc0MDUsIDI1OTkwLCA3NzA0OCwgNzcwNTMsIAorICAgIDc3MDU3LCA3NzA2MSwgNzcwNjYsIDc3MDc0LCA3NzA4MCwgNzcwOTEsIDc3MTA0LCA3NzEwOSwgNzcxMTYsIDM1NTI4LCAKKyAgICA3NzEyMSwgNzcxMzMsIDc3MTQyLCA3NzE1MCwgNzcxNjAsIDc3MTcxLCA3NzE4NCwgNzcxOTEsIDc3MjAwLCA3NzIwOSwgCisgICAgNzcyMTcsIDc3MjIyLCA3NzIyOCwgMTQ4MSwgNzcyMzMsIDc3MjM4LCA3NzI0MywgNzcyNDgsIDc3MjU0LCA3NzI1OSwgCisgICAgNzcyNjQsIDc3MjcwLCA3NzI3NiwgNzcyODEsIDc3Mjg1LCA3NzI5MCwgNzcyOTUsIDc3MzAwLCA2NDEzMCwgNzczMDUsIAorICAgIDc3MzEwLCA3NzMxNSwgNzczMjAsIDc3MzI2LCA3NzMzMiwgNzczMzcsIDc3MzQxLCA3NzM0NiwgMTc3NjIsIDc3MzUxLCAKKyAgICA3NzM1NywgNzczNjIsIDc3MzY4LCA3NzM3MywgNzczNzgsIDc3MzgzLCA3NzM4OCwgNzczOTIsIDc3Mzk4LCA3NzQwMywgCisgICAgNzc0MTIsIDc3NDE3LCA3NzQyMiwgNzc0MjcsIDc3NDMyLCA3NzQzNiwgNzc0NDMsIDc3NDQ5LCA0NDUwLCAxODkxNCwgCisgICAgMzA5NCwgNzc0NTQsIDc3NDU4LCA3NzQ2MywgNzc0NjcsIDc3NDcxLCA3NzQ3NSwgNTA4MjAsIDc3NDc5LCA3NzQwNCwgCisgICAgNzc0ODEsIDc3NDkxLCAzNTUzNywgNzc0OTQsIDc3NDk5LCA3NzUwOCwgNzc1MTQsIDY0NzgsIDM1NTQyLCA3NzUxOCwgCisgICAgNzc1MjQsIDc3NTI5LCA3NzUzNSwgNzc1NDAsIDc3NTQ0LCA3NzU1MSwgNzc1NTYsIDc3NTY2LCA3NzU3NSwgNzc1NzksIAorICAgIDc3NTg1LCA3NzU5MSwgNzc1OTcsIDc3NjAxLCA3NzYwOSwgNzc2MTYsIDc3NjI0LCA3NzYzMiwgMzU1NDcsIDc3NjM5LCAKKyAgICA3NzY0MiwgNzc2NDksIDc3NjU1LCA3NzY2MCwgNzc2NjQsIDc3NjcwLCA3NzY3OCwgNzc2ODUsIDc3NjkwLCA3NzY5NCwgCisgICAgNzc3MDMsIDc3NzExLCA3NzcxNywgNzc3MjIsIDM1NTUyLCA3NzcyOSwgNzc3NDEsIDc3NzQ4LCA3Nzc1NCwgNzc3NTksIAorICAgIDc3NzY1LCA3Nzc3MiwgNzc3NzgsIDIzMTcxLCAyOTg1NSwgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc3OTksIDc3ODExLCAKKyAgICA3NzQzNywgNzc0NDQsIDIzMzY0LCA3NzgyMSwgNzc4MjYsIDc3ODMzLCA3NzgzOSwgNzc4NDYsIDc3ODUyLCA3Nzg2MywgCisgICAgNzc4NjgsIDc3ODc2LCA5Njk5LCA3Nzg4MSwgNzc4ODQsIDc3ODkwLCA3Nzg5NCwgNzc4OTgsIDc3OTAxLCA3NzkwNywgCisgICAgNzc5MTMsIDM1MjkwLCA0NDUxLCAxMDkzLCAxNDcwNiwgNzc5MjAsIDc3OTI2LCA3NzkzMiwgNzc5MzgsIDc3OTQ0LCAKKyAgICA3Nzk1MCwgNzc5NTYsIDc3OTYyLCA3Nzk2OCwgNzc5NzMsIDc3OTc4LCA3Nzk4MywgNzc5ODgsIDc3OTkzLCA3Nzk5OCwgCisgICAgNzgwMDMsIDc4MDA4LCA3ODAxMywgNzgwMTgsIDc4MDIzLCA3ODAyOCwgNzgwMzMsIDc4MDM5LCA3ODA0NCwgNzgwNDksIAorICAgIDc4MDU1LCA3ODA2MCwgNzgwNjUsIDc4MDcxLCA3ODA3NywgNzgwODMsIDc4MDg5LCA3ODA5NSwgNzgxMDEsIDc4MTA3LCAKKyAgICA3ODExMywgNzgxMTksIDc4MTI0LCA3ODEyOSwgNzgxMzUsIDc4MTQwLCA3ODE0NSwgNzgxNTEsIDc4MTU2LCA3ODE2MSwgCisgICAgNzgxNjYsIDc4MTcxLCA3ODE3NiwgNzgxODEsIDc4MTg2LCA3ODE5MSwgNzgxOTYsIDc4MjAxLCA3ODIwNiwgNzgyMTEsIAorICAgIDc4MjE3LCA3ODIyMiwgNzgyMjcsIDc4MjMyLCA3ODIzOCwgNzgyNDMsIDc4MjQ4LCA3ODI1MywgNzgyNTgsIDc4MjY0LCAKKyAgICA3ODI2OSwgNzgyNzQsIDc4Mjc5LCA3ODI4NCwgNzgyODksIDc4Mjk0LCA3ODI5OSwgNzgzMDQsIDc4MzA5LCA3ODMxNCwgCisgICAgNzgzMTksIDc4MzI0LCA3ODMyOSwgNzgzMzQsIDc4MzM5LCA3ODM0NCwgNzgzNDksIDc4MzU0LCA3ODM1OSwgNzgzNjUsIAorICAgIDc4MzcwLCA3ODM3NSwgNzgzODAsIDc4Mzg1LCA3ODM5MCwgNzgzOTUsIDc4NDAwLCAxODc1LCAxNjksIDc4NDA1LCA3ODQwOSwgCisgICAgNzg0MTMsIDc4NDE4LCA3ODQyNiwgNzg0MzAsIDc4NDM3LCA3ODQ0NSwgNzg0NDksIDc4NDYyLCA3ODQ3MCwgNzg0NzUsIAorICAgIDc4NDgwLCAyODY0OSwgNzg0ODQsIDc4NDg5LCA3ODQ5MywgNzg0OTgsIDc4NTAyLCA3ODUxMCwgNzg1MTQsIDIyNzcxLCAKKyAgICA3ODUxOSwgNzg1MjMsIDY2NzE0LCA3ODUyNywgNzg1MzAsIDc4NTM4LCA3ODU0NiwgNzg1NTQsIDc4NTU5LCA3ODU2NCwgCisgICAgNzg1NzEsIDc4NTc4LCA3ODU4NCwgNzg1OTAsIDc4NTk1LCA3ODYwMiwgNzg2MDcsIDc4NjE1LCA3MTE3MiwgNzg2MjIsIAorICAgIDY2NTAwLCA3ODYyNywgNzg2MzIsIDc4NjM2LCA3ODY0MywgNjY1MjcsIDEyODUzLCA3ODY0OSwgNzg2NTQsIDc4NjU5LCAKKyAgICA3ODY2MywgNzg2NjYsIDc4Njc1LCA3ODY4MSwgNzg2ODUsIDc4Njk1LCA3ODcwNCwgNzg3MDgsIDc4NzExLCA3ODcxNSwgCisgICAgNzg3MjIsIDc4NzM1LCA3ODc0MSwgNzg3NDksIDc4NzU4LCA3ODc2OSwgNzg3ODAsIDc4NzkxLCA3ODgwMiwgNzg4MTEsIAorICAgIDc4ODE3LCA3ODgyNiwgNzg4MzQsIDc4ODQ0LCA3ODg1NywgNzg4NjUsIDc4ODcyLCA3ODg4MywgNzg4ODksIDc4ODk0LCAKKyAgICA3ODg5OSwgNzg5MDUsIDc4OTE1LCA3ODkyMSwgNzg5MzEsIDc4OTM4LCA3ODk0OCwgNzg5NTcsIDc3MTIzLCA3ODk2NSwgCisgICAgNzg5NzEsIDc4OTc5LCA3ODk4NSwgNzg5OTIsIDc5MDAwLCA3OTAwNSwgNzkwMDgsIDc5MDEyLCA3OTAxOCwgNzkwMjIsIAorICAgIDc5MDI1LCA3OTAzMSwgNzkwMzcsIDc5MDQ1LCA3OTA1NywgNzkwNjksIDc5MDc2LCA3OTA4MSwgNzkwODUsIDc5MDk2LCAKKyAgICA3OTEwNCwgNzkxMTEsIDc5MTIzLCA3OTEzMSwgNzkxMzksIDc5MTQ2LCA3OTE1MiwgNzkxNTcsIDc5MTY3LCA3OTE3NiwgCisgICAgNzkxODEsIDc5MTkxLCA3OTIwMCwgNDYwMzksIDc5MjA3LCA3OTIxMSwgNzkyMTYsIDc5MjI0LCA3OTIzMSwgNzkyMzcsIAorICAgIDc5MjQxLCA3OTI1MSwgNzkyNjIsIDc5MjcwLCA3OTI3NywgNzkyODksIDc5MzAxLCA3OTMxMCwgNzYwNjYsIDc5MzE3LCAKKyAgICA3OTMyNywgNzkzMzksIDc5MzUwLCA3OTM2NCwgNzkzNzIsIDc5MzgyLCA3OTM4OSwgNzkzOTcsIDc5NDEwLCA3OTQyMiwgCisgICAgNzk0MzEsIDc5NDM5LCA3OTQ0OSwgNzk0NjAsIDc5NDcyLCA3OTQ4MSwgNzk0OTEsIDc5NTAxLCA3OTUxMCwgNzk1MTcsIAorICAgIDc5NTI2LCA3OTU0MSwgNzk1NDksIDc5NTU5LCA3OTU2OCwgNzk1NzYsIDc5NTg5LCA2MzU0MCwgNzk2MDQsIDc5NjE0LCAKKyAgICA3OTYyMywgNzk2MzUsIDc5NjQ1LCA3OTY1NywgNzk2NjgsIDc5NjgyLCA3OTY5NiwgNzk3MTAsIDc5NzI0LCA3OTczOCwgCisgICAgNzk3NTIsIDc5NzY2LCA3OTc4MCwgNzk3OTQsIDc5ODA4LCA3OTgyMiwgNzk4MzYsIDc5ODUwLCA3OTg2NCwgNzk4NzgsIAorICAgIDc5ODkyLCA3OTkwNiwgNzk5MjAsIDc5OTM0LCA3OTk0OCwgNzk5NjIsIDc5OTc2LCA3OTk5MCwgODAwMDQsIDgwMDE4LCAKKyAgICA4MDAzMiwgODAwNDYsIDgwMDYwLCA4MDA3NCwgODAwODgsIDgwMTAyLCA4MDExNiwgODAxMzAsIDgwMTQ0LCA4MDE1OCwgCisgICAgODAxNzIsIDgwMTg2LCA4MDIwMCwgODAyMTQsIDgwMjI4LCA4MDI0MiwgODAyNTYsIDgwMjcwLCA4MDI4NCwgODAyOTgsIAorICAgIDgwMzEyLCA4MDMyNiwgODAzNDAsIDgwMzU0LCA4MDM2OCwgODAzODIsIDgwMzk2LCA4MDQxMCwgODA0MjQsIDgwNDM4LCAKKyAgICA4MDQ1MiwgODA0NjYsIDgwNDgwLCA4MDQ5NCwgODA1MDgsIDgwNTIyLCA4MDUzNiwgODA1NTAsIDgwNTY0LCA4MDU3OCwgCisgICAgODA1OTIsIDgwNjA2LCA4MDYyMCwgODA2MzQsIDgwNjQ4LCA4MDY2MiwgODA2NzYsIDgwNjkwLCA4MDcwNCwgODA3MTgsIAorICAgIDgwNzMyLCA4MDc0NiwgODA3NjAsIDgwNzc0LCA4MDc4OCwgODA4MDIsIDgwODE2LCA4MDgzMCwgODA4NDQsIDgwODU4LCAKKyAgICA4MDg3MiwgODA4ODYsIDgwOTAwLCA4MDkxNCwgODA5MjgsIDgwOTQyLCA4MDk1NiwgODA5NzAsIDgwOTg0LCA4MDk5OCwgCisgICAgODEwMTIsIDgxMDI2LCA4MTA0MCwgODEwNTQsIDgxMDY4LCA4MTA4MiwgODEwOTYsIDgxMTEwLCA4MTEyNCwgODExMzgsIAorICAgIDgxMTUyLCA4MTE2NiwgODExODAsIDgxMTk0LCA4MTIwOCwgODEyMjIsIDgxMjM2LCA4MTI1MCwgODEyNjQsIDgxMjc4LCAKKyAgICA4MTI5MiwgODEzMDYsIDgxMzIwLCA4MTMzNCwgODEzNDgsIDgxMzYyLCA4MTM3NiwgODEzOTAsIDgxNDA0LCA4MTQxOCwgCisgICAgODE0MzIsIDgxNDQ2LCA4MTQ2MCwgODE0NzQsIDgxNDg4LCA4MTUwMiwgODE1MTYsIDgxNTMwLCA4MTU0NCwgODE1NTgsIAorICAgIDgxNTcyLCA4MTU4NiwgODE2MDAsIDgxNjE0LCA4MTYyOCwgODE2NDIsIDgxNjU2LCA4MTY3MCwgODE2ODQsIDgxNjk4LCAKKyAgICA4MTcxMiwgODE3MjYsIDgxNzQwLCA4MTc1NCwgODE3NjgsIDgxNzgyLCA4MTc5NiwgODE4MTAsIDgxODI0LCA4MTgzOCwgCisgICAgODE4NTIsIDgxODY2LCA4MTg4MCwgODE4OTQsIDgxOTA4LCA4MTkyMiwgODE5MzYsIDgxOTUwLCA4MTk2NCwgODE5NzgsIAorICAgIDgxOTkyLCA4MjAwNiwgODIwMjAsIDgyMDM0LCA4MjA0OCwgODIwNjIsIDgyMDc2LCA4MjA5MCwgODIxMDQsIDgyMTE4LCAKKyAgICA4MjEzMiwgODIxNDYsIDgyMTYwLCA4MjE3NCwgODIxODgsIDgyMjAyLCA4MjIxNiwgODIyMzAsIDgyMjQ0LCA4MjI1OCwgCisgICAgODIyNzIsIDgyMjg2LCA4MjMwMCwgODIzMTQsIDgyMzI4LCA4MjM0MiwgODIzNTYsIDgyMzcwLCA4MjM4NCwgODIzOTgsIAorICAgIDgyNDEyLCA4MjQyNiwgODI0NDAsIDgyNDU0LCA4MjQ2OCwgODI0ODIsIDgyNDk2LCA4MjUxMCwgODI1MjQsIDgyNTM4LCAKKyAgICA4MjU1MiwgODI1NjYsIDgyNTgwLCA4MjU5NCwgODI2MDgsIDgyNjIyLCA4MjYzNiwgODI2NTAsIDgyNjY0LCA4MjY3OCwgCisgICAgODI2OTIsIDgyNzA2LCA4MjcyMCwgODI3MzQsIDgyNzQ4LCA4Mjc2MiwgODI3NzYsIDgyNzkwLCA4MjgwNCwgODI4MTgsIAorICAgIDgyODMyLCA4Mjg0NiwgODI4NjAsIDgyODc0LCA4Mjg4OCwgODI5MDIsIDgyOTE2LCA4MjkzMCwgODI5NDQsIDgyOTU4LCAKKyAgICA4Mjk3MiwgODI5ODYsIDgzMDAwLCA4MzAxNCwgODMwMjgsIDgzMDQyLCA4MzA1NiwgODMwNzAsIDgzMDg0LCA4MzA5OCwgCisgICAgODMxMTIsIDgzMTI2LCA4MzE0MCwgODMxNTQsIDgzMTY4LCA4MzE4MiwgODMxOTYsIDgzMjEwLCA4MzIyNCwgODMyMzgsIAorICAgIDgzMjUyLCA4MzI2NiwgODMyODAsIDgzMjk0LCA4MzMwOCwgODMzMjIsIDgzMzM2LCA4MzM1MCwgODMzNjQsIDgzMzc4LCAKKyAgICA4MzM5MiwgODM0MDYsIDgzNDIwLCA4MzQzNCwgODM0NDgsIDgzNDYyLCA4MzQ3NiwgODM0OTAsIDgzNTA0LCA4MzUxOCwgCisgICAgODM1MzIsIDgzNTQ2LCA4MzU2MCwgODM1NzQsIDgzNTg4LCA4MzYwMiwgODM2MTYsIDgzNjMwLCA4MzY0NCwgODM2NTgsIAorICAgIDgzNjcyLCA4MzY4NiwgODM3MDAsIDgzNzE0LCA4MzcyOCwgODM3NDIsIDgzNzU2LCA4Mzc3MCwgODM3ODQsIDgzNzk4LCAKKyAgICA4MzgxMiwgODM4MjYsIDgzODQwLCA4Mzg1NCwgODM4NjgsIDgzODgyLCA4Mzg5NiwgODM5MTAsIDgzOTI0LCA4MzkzOCwgCisgICAgODM5NTIsIDgzOTY2LCA4Mzk4MCwgODM5OTQsIDg0MDA4LCA4NDAyMiwgODQwMzYsIDg0MDUwLCA4NDA2NCwgODQwNzgsIAorICAgIDg0MDkyLCA4NDEwNiwgODQxMjAsIDg0MTM0LCA4NDE0OCwgODQxNjIsIDg0MTc2LCA4NDE5MCwgODQyMDQsIDg0MjE4LCAKKyAgICA4NDIzMiwgODQyNDYsIDg0MjYwLCA4NDI3NCwgODQyODgsIDg0MzAyLCA4NDMxNiwgODQzMzAsIDg0MzQ0LCA4NDM1OCwgCisgICAgODQzNzIsIDg0Mzg2LCA4NDQwMCwgODQ0MTQsIDg0NDI4LCA4NDQ0MiwgODQ0NTYsIDg0NDcwLCA4NDQ4NCwgODQ0OTgsIAorICAgIDg0NTEyLCA4NDUyNiwgODQ1NDAsIDg0NTU0LCA4NDU2OCwgODQ1ODIsIDg0NTk2LCA4NDYxMCwgODQ2MjQsIDg0NjM4LCAKKyAgICA4NDY1MiwgODQ2NjYsIDg0NjgwLCA4NDY5NCwgODQ3MDgsIDg0NzIyLCA4NDczNiwgODQ3NTAsIDg0NzY0LCA4NDc3OCwgCisgICAgODQ3OTIsIDg0ODA2LCA4NDgyMCwgODQ4MzQsIDg0ODQ4LCA4NDg2MiwgODQ4NzYsIDg0ODkwLCA4NDkwNCwgODQ5MTgsIAorICAgIDg0OTMyLCA4NDk0NiwgODQ5NjAsIDg0OTc0LCA4NDk4OCwgODUwMDIsIDg1MDE2LCA4NTAzMCwgODUwNDQsIDg1MDU4LCAKKyAgICA4NTA3MiwgODUwODYsIDg1MTAwLCA4NTExNCwgODUxMjgsIDg1MTQyLCA4NTE1NiwgODUxNzAsIDg1MTg0LCA4NTE5OCwgCisgICAgODUyMTIsIDg1MjI2LCA4NTI0MCwgODUyNTQsIDg1MjY4LCA4NTI4MiwgODUyOTYsIDg1MzEwLCA4NTMyNCwgODUzMzgsIAorICAgIDg1MzUyLCA4NTM2NiwgODUzODAsIDg1Mzk0LCA4NTQwOCwgODU0MjIsIDg1NDM2LCA4NTQ1MCwgODU0NjQsIDg1NDc4LCAKKyAgICA4NTQ5MiwgODU1MDYsIDg1NTIwLCA4NTUzNCwgODU1NDgsIDg1NTYyLCA4NTU3NiwgODU1OTAsIDg1NjA0LCA4NTYxOCwgCisgICAgODU2MzIsIDg1NjQ2LCA4NTY2MCwgODU2NzQsIDg1Njg4LCA4NTcwMiwgODU3MTYsIDg1NzMwLCA4NTc0NCwgODU3NTgsIAorICAgIDg1NzcyLCA4NTc4NiwgODU4MDAsIDg1ODE0LCA4NTgyOCwgODU4NDIsIDg1ODU2LCA4NTg3MCwgODU4ODQsIDg1ODk4LCAKKyAgICA4NTkxMiwgODU5MjYsIDg1OTQwLCA4NTk1NCwgODU5NjgsIDg1OTgyLCA4NTk5NiwgODYwMTAsIDg2MDI0LCA4NjAzOCwgCisgICAgODYwNTIsIDg2MDY2LCA4NjA4MCwgODYwOTQsIDg2MTA4LCA4NjEyMiwgODYxMzYsIDg2MTUwLCA4NjE2NCwgODYxNzgsIAorICAgIDg2MTkyLCA4NjIwNiwgODYyMjAsIDg2MjM0LCA4NjI0OCwgODYyNjIsIDg2Mjc2LCA4NjI5MCwgODYzMDQsIDg2MzE4LCAKKyAgICA4NjMzMiwgODYzNDYsIDg2MzYwLCA4NjM3NCwgODYzODgsIDg2NDAyLCA4NjQxNiwgODY0MzAsIDg2NDQ0LCA4NjQ1OCwgCisgICAgODY0NzIsIDg2NDg2LCA4NjUwMCwgODY1MTQsIDg2NTI4LCA4NjU0MiwgODY1NTYsIDg2NTcwLCA4NjU4NCwgODY1OTgsIAorICAgIDg2NjEyLCA4NjYyNiwgODY2NDAsIDg2NjU0LCA4NjY2OCwgODY2ODIsIDg2Njk2LCA4NjcxMCwgODY3MjQsIDg2NzM4LCAKKyAgICA4Njc1MiwgODY3NjYsIDg2NzgwLCA4Njc5NCwgODY4MDgsIDg2ODIyLCA4NjgzNiwgODY4NTAsIDg2ODY0LCA4Njg3OCwgCisgICAgODY4OTIsIDg2OTA2LCA4NjkyMCwgODY5MzQsIDg2OTQ4LCA4Njk2MiwgODY5NzYsIDg2OTkwLCA4NzAwNCwgODcwMTgsIAorICAgIDg3MDMyLCA4NzA0NiwgODcwNjAsIDg3MDc0LCA4NzA4OCwgODcxMDIsIDg3MTE2LCA4NzEzMCwgODcxNDQsIDg3MTU4LCAKKyAgICA4NzE3MiwgODcxODYsIDg3MjAwLCA4NzIxNCwgODcyMjgsIDg3MjQyLCA4NzI1NiwgODcyNzAsIDg3Mjg0LCA4NzI5OCwgCisgICAgODczMTIsIDg3MzI2LCA4NzM0MCwgODczNTQsIDg3MzY4LCA4NzM4MiwgODczOTYsIDg3NDEwLCA4NzQyNCwgODc0MzgsIAorICAgIDg3NDUyLCA4NzQ2NiwgODc0ODAsIDg3NDk0LCA4NzUwOCwgODc1MjIsIDg3NTM2LCA4NzU1MCwgODc1NjQsIDg3NTc4LCAKKyAgICA4NzU5MiwgODc2MDYsIDg3NjIwLCA4NzYzNCwgODc2NDgsIDg3NjYyLCA4NzY3NiwgODc2OTAsIDg3NzA0LCA4NzcxOCwgCisgICAgODc3MzIsIDg3NzQ2LCA4Nzc2MCwgODc3NzQsIDg3Nzg4LCA4NzgwMiwgODc4MTYsIDg3ODMwLCA4Nzg0NCwgODc4NTgsIAorICAgIDg3ODcyLCA4Nzg4NiwgODc5MDAsIDg3OTE0LCA4NzkyOCwgODc5NDIsIDg3OTU2LCA4Nzk3MCwgODc5ODQsIDg3OTk4LCAKKyAgICA4ODAxMiwgODgwMjYsIDg4MDQwLCA4ODA1NCwgODgwNjgsIDg4MDgyLCA4ODA5NiwgODgxMTAsIDg4MTI0LCA4ODEzOCwgCisgICAgODgxNTIsIDg4MTY2LCA4ODE4MCwgODgxOTQsIDg4MjA4LCA4ODIyMiwgODgyMzYsIDg4MjUwLCA4ODI2NCwgODgyNzgsIAorICAgIDg4MjkyLCA4ODMwNiwgODgzMjAsIDg4MzM0LCA4ODM0OCwgODgzNjIsIDg4Mzc2LCA4ODM5MCwgODg0MDQsIDg4NDE4LCAKKyAgICA4ODQzMiwgODg0NDYsIDg4NDYwLCA4ODQ3NCwgODg0ODgsIDg4NTAyLCA4ODUxNiwgODg1MzAsIDg4NTQ0LCA4ODU1OCwgCisgICAgODg1NzIsIDg4NTg2LCA4ODYwMCwgODg2MTQsIDg4NjI4LCA4ODY0MiwgODg2NTYsIDg4NjcwLCA4ODY4NCwgODg2OTgsIAorICAgIDg4NzEyLCA4ODcyNiwgODg3NDAsIDg4NzU0LCA4ODc2OCwgODg3ODIsIDg4Nzk2LCA4ODgxMCwgODg4MjQsIDg4ODM4LCAKKyAgICA4ODg1MiwgODg4NjYsIDg4ODgwLCA4ODg5NCwgODg5MDgsIDg4OTIyLCA4ODkzNiwgODg5NTAsIDg4OTY0LCA4ODk3OCwgCisgICAgODg5OTIsIDg5MDA2LCA4OTAyMCwgODkwMzQsIDg5MDQ4LCA4OTA2MiwgODkwNzYsIDg5MDkwLCA4OTEwNCwgODkxMTgsIAorICAgIDg5MTMyLCA4OTE0NiwgODkxNjAsIDg5MTc0LCA4OTE4OCwgODkyMDIsIDg5MjE2LCA4OTIzMCwgODkyNDQsIDg5MjU4LCAKKyAgICA4OTI3MiwgODkyODYsIDg5MzAwLCA4OTMxNCwgODkzMjgsIDg5MzQyLCA4OTM1NiwgODkzNzAsIDg5Mzg0LCA4OTM5OCwgCisgICAgODk0MTIsIDg5NDI2LCA4OTQ0MCwgODk0NTQsIDg5NDY4LCA4OTQ4MiwgODk0OTYsIDg5NTEwLCA4OTUyNCwgODk1MzgsIAorICAgIDg5NTUyLCA4OTU2NiwgODk1ODAsIDg5NTk0LCA4OTYwOCwgODk2MjIsIDg5NjM2LCA4OTY1MCwgODk2NjQsIDg5Njc4LCAKKyAgICA4OTY5MiwgODk3MDYsIDg5NzIwLCA4OTczNCwgODk3NDgsIDg5NzYyLCA4OTc3NiwgODk3OTAsIDg5ODA0LCA4OTgxOCwgCisgICAgODk4MzIsIDg5ODQ2LCA4OTg2MCwgODk4NzQsIDg5ODg4LCA4OTkwMiwgODk5MTYsIDg5OTMwLCA4OTk0NCwgODk5NTgsIAorICAgIDg5OTcyLCA4OTk4NiwgOTAwMDAsIDkwMDE0LCA5MDAyOCwgOTAwNDIsIDkwMDU2LCA5MDA3MCwgOTAwODQsIDkwMDk4LCAKKyAgICA5MDExMiwgOTAxMjYsIDkwMTQwLCA5MDE1NCwgOTAxNjgsIDkwMTgyLCA5MDE5NiwgOTAyMTAsIDkwMjI0LCA5MDIzOCwgCisgICAgOTAyNDksIDkwMjYwLCA5MDI3MCwgOTAyODEsIDkwMjg5LCA5MDI5NSwgOTAzMDUsIDkwMzEzLCA5MDMxOSwgMzE2MjEsIAorICAgIDkwMzI0LCA5MDMzMCwgOTAzMzksIDkwMzUxLCA5MDM1NiwgOTAzNjMsIDEwNTQ2LCAxOTMxMSwgOTAzNjksIDkwMzc4LCAKKyAgICA5MDM4MywgOTAzODcsIDkwMzk0LCA5MDQwMCwgOTA0MDUsIDkwNDEwLCA5MDQxOCwgOTA0MjYsIDEzMjI5LCA5MDQzMCwgCisgICAgOTA0MzMsIDkwNDM1LCA5MDQ0MiwgOTA0NDgsIDkwNDU5LCA5MDQ2NCwgOTA0NjgsIDkwNDczLCA5MDQ4MCwgOTA0ODYsIAorICAgIDkwNDkxLCA5MDQ5OSwgNzE3NDEsIDcxNzUxLCA5MDUwNSwgOTA1MTIsIDkwNTIyLCAxMTY0MSwgOTA1MjksIDkwNTM0LCAKKyAgICAzMTg1NSwgOTA1NDMsIDkwNTQ4LCA5MDU1NSwgOTA1NjUsIDkwNTczLCA5MDU4MSwgOTA1OTAsIDkwNTk2LCA5MDYwMiwgCisgICAgOTA2MDksIDkwNjE2LCA5MDYyMSwgOTA2MjUsIDkwNjMzLCA2NjU0NCwgOTA2MzgsIDkwNjQ3LCA5MDY1NSwgOTA2NjIsIAorICAgIDkwNjY3LCA5MDY3MSwgOTA2ODAsIDkwNjg2LCA5MDY4OSwgOTA2OTMsIDkwNzAyLCA5MDcxMiwgNzg0NTcsIDkwNzIxLCAKKyAgICA5MDcyNSwgOTA3MzMsIDkwNzM3LCA5MDc0MywgOTA3NTQsIDkwNzY0LCAxOTMyMCwgOTA3NzUsIDkwNzg0LCA5MDc5MiwgCisgICAgOTA4MDAsIDkwODA3LCA2NjU2MywgOTE5MiwgOTA4MTUsIDkwODE5LCA5MDgyOCwgOTA4MzUsIDkwODM4LCAyOTczNiwgCisgICAgOTA4NDEsIDkwODQ1LCA5MDg1MCwgOTA4NjcsIDkwODc5LCAxMTU5OSwgOTA4OTEsIDkwODk2LCA5MDkwMSwgOTA5MDYsIAorICAgIDIyODYxLCA5MDkxMCwgOTA5MTUsIDkwOTIwLCA5MDkyNiwgOTA5MzEsIDYxNDIsIDkwOTM2LCAyMjg2NSwgOTA5NDEsIAorICAgIDkwOTQ2LCA5MDk1MiwgOTA5NTksIDkwOTY0LCA5MDk2OSwgOTA5NzUsIDkwOTgxLCA5MDk4NywgOTA5OTIsIDkwOTk4LCAKKyAgICA5MTAwMiwgOTEwMTYsIDkxMDI0LCA5MTAzMiwgOTEwMzgsIDkxMDQzLCA5MTA1MCwgOTEwNjAsIDkxMDY5LCA5MTA3NCwgCisgICAgOTEwNzksIDkxMDg0LCA5MTA5MiwgOTEwOTcsIDkxMTAzLCA5MTEwOCwgOTExMTcsIDY1MjMyLCA5MTEyMiwgOTExMjUsIAorICAgIDkxMTQzLCA5MTE2MiwgOTExNzUsIDkxMTg5LCA5MTIwNSwgOTEyMTIsIDkxMjE5LCA5MTIyOCwgOTEyMzUsIDkxMjQxLCAKKyAgICA5MTI0OCwgOTEyNTMsIDkxMjU5LCA5MTI2NSwgOTEyNzMsIDkxMjc5LCA5MTI4NCwgOTEyODksIDkxMzA1LCAxMTYxMiwgCisgICAgOTEzMTksIDkxMzI2LCA5MTMzNCwgOTEzNDAsIDkxMzQ0LCA5MTM0NywgOTEzNTIsIDkxMzU3LCA5MTM2NCwgOTEzNjksIAorICAgIDkxMzc4LCA5MTM4NCwgOTEzODksIDkxMzk1LCA5MTQwMSwgOTE0MTAsIDkxNDE5LCAzODk1NSwgOTE0MjQsIDkxNDMyLCAKKyAgICA5MTQ0MSwgMTI4ODIsIDkxNDUwLCA5MTQ1NiwgOTE0NjQsIDkxNDcwLCA5MTQ3NiwgOTE0ODIsIDkxNDg3LCA5MTQ5NCwgCisgICAgOTE1MDAsIDEyODkzLCA5MTUwNSwgOTE1MDgsIDkxNTEzLCAzNTU3OSwgOTE1MjMsIDkxNTMyLCA5MTUzNywgOTE1NDMsIAorICAgIDkxNTQ4LCA5MTU1NiwgOTE1NjMsIDkxNTc0LCA5MTU4NCwgOTE1ODksIDkxNTk3LCA3MTA5NSwgOTE2MDIsIDkxNjA4LCAKKyAgICA5MTYxMywgOTE2MjAsIDkxNjI5LCA5MTYzNywgOTE2NDEsIDkxNjQ3LCA5MTY1MywgOTE2NjAsIDkxNjY2LCA5MTY3MCwgCisgICAgMTg2ODIsIDMxMDMsIDkxNjc1LCA5MTY3OSwgOTE2ODMsIDkxNjg5LCA5MTY5OCwgOTE3MDQsIDkxNzExLCA5MTcxNSwgCisgICAgOTE3MzYsIDkxNzU4LCA5MTc3NCwgOTE3OTEsIDkxODEwLCA5MTgxOSwgOTE4MjksIDkxODM3LCA5MTg0NCwgOTE4NTEsIAorICAgIDkxODU3LCAyOTU5NywgOTE4NzEsIDkxODc1LCA5MTg4MSwgOTE4ODksIDkxOTAxLCA5MTkwNywgOTE5MTUsIDkxOTIyLCAKKyAgICA5MTkyNywgOTE5MzIsIDkxOTM2LCA5MTk0NCwgOTE5NTEsIDkxOTU1LCA5MTk2MSwgOTE5NjcsIDkxOTcyLCAzNzI5LCAKKyAgICA0NzIyMCwgOTE5NzgsIDkxOTgyLCA5MTk4NiwgOTE5OTAsIDkxOTk1LCA5MjAwMCwgOTIwMDUsIDkyMDExLCA5MjAxNywgCisgICAgOTIwMjMsIDkyMDMwLCA5MjAzNiwgOTIwNDMsIDkyMDQ5LCA5MjA1NSwgOTIwNjAsIDkyMDY2LCA5MjA3MSwgOTIwNzUsIAorICAgIDkyMDgwLCA5MjA4NCwgOTIwODksIDQ3MjM1LCA5MjA5MywgOTIwOTgsIDkyMTA2LCA5MjExMCwgOTIxMTUsIDkyMTIyLCAKKyAgICA5MjEzMSwgOTIxMzcsIDkyMTQ2LCA5MjE1MCwgOTIxNTcsIDkyMTYxLCA5MjE2NCwgOTIxNzEsIDkyMTc3LCA5MjE4NiwgCisgICAgOTIxOTYsIDkyMjA2LCA5MjIxMSwgOTIyMTUsIDkyMjIyLCA5MjIzMCwgOTIyMzksIDkyMjQzLCA5MjI1MSwgOTIyNTcsIAorICAgIDkyMjYyLCA5MjI2NywgOTIyNzMsIDkyMjc5LCA5MjI4NCwgOTIyODgsIDkyMjk0LCA5MjI5OSwgOTIzMDMsIDkyMzA3LCAKKyAgICA5MjMxMCwgOTIzMTUsIDkyMzIzLCA5MjMzMywgOTIzMzksIDkyMzQ0LCA5MjM1NCwgNDQ0OTIsIDkyMzYyLCA5MjM3NCwgCisgICAgOTIzODAsIDkyMzg0LCA5MjM5MCwgOTI0MDIsIDkyNDEzLCA5MjQyMCwgOTI0MjYsIDkyNDMzLCA5MjQ0MCwgOTI0NTIsIAorICAgIDkyNDU5LCA5MjQ2NSwgMjI5MzksIDkyNDY5LCA5MjQ3NywgOTI0ODMsIDkyNDkwLCA5MjQ5NiwgOTI1MDIsIDkyNTA4LCAKKyAgICA5MjUxMywgOTI1MTgsIDkyNTIzLCA5MjUyNywgOTI1MzYsIDkyNTQ0LCA5MjU1NSwgNzM3NCwgOTI1NjAsIDE4MTMxLCAKKyAgICA5MjU2NiwgOTI1NzAsIDkyNTc0LCA5MjU3OCwgOTI1ODYsIDkyNTk1LCA5MjU5OSwgOTI2MDYsIDkyNjE1LCA5MjYyMywgCisgICAgOTI2MzYsIDkyNjQyLCA5MjA4NSwgMzI3MzksIDkyNjQ3LCA5MjY0OSwgOTI2NTQsIDkyNjU5LCA5MjY2NCwgOTI2NjksIAorICAgIDkyNjc0LCA5MjY3OSwgOTI2ODQsIDkyNjg5LCA5MjY5NCwgOTI2OTksIDkyNzA0LCA5MjcwOSwgOTI3MTQsIDkyNzE5LCAKKyAgICA5MjcyNSwgOTI3MzAsIDkyNzM1LCA5Mjc0MCwgOTI3NDUsIDkyNzUwLCA5Mjc1NSwgOTI3NjAsIDkyNzY1LCA5Mjc3MSwgCisgICAgOTI3NzcsIDkyNzgzLCA5Mjc4OCwgOTI3OTMsIDkyODA1LCA5MjgxMCwgMTg4MSwgNTQsIDkyODE1LCA5MjgyMCwgMzU1ODUsIAorICAgIDkyODI0LCAzNTU5MCwgMzU1OTUsIDM1NjAxLCAzNTYwNiwgOTI4MjgsIDM1NjExLCAyMzk5NCwgOTI4NTAsIDkyODU0LCAKKyAgICA5Mjg1OCwgOTI4NjMsIDkyODY3LCAzNTYxNSwgOTI4NzEsIDkyODc5LCA5Mjg4NiwgOTI4OTIsIDM1NjIwLCA5MjkwMiwgCisgICAgOTI5MDUsIDkyOTEwLCA5MjkxNCwgOTI5MjMsIDEwMzU2LCA5MjkzMSwgMzU2MjUsIDIzODQ1LCA5MjkzNCwgOTI5MzgsIAorICAgIDkyOTQ2LCAxMzkzLCA5Mjk1MSwgMzU2MzYsIDkyOTU0LCA5Mjk1OSwgMjc5OTUsIDI4MDA1LCAzODU3OCwgOTI5NjQsIAorICAgIDkyOTY5LCA5Mjk3NCwgOTI5NzksIDkyOTg1LCA5Mjk5MCwgOTI5OTksIDkzMDA0LCA5MzAxMywgOTMwMjEsIDkzMDI4LCAKKyAgICA5MzAzNCwgOTMwMzksIDkzMDQ0LCA5MzA0OSwgOTMwNTksIDkzMDY4LCA5MzA3NiwgOTMwODEsIDkzMDg5LCA5MzA5MywgCisgICAgOTMxMDEsIDkzMTA1LCA5MzExMiwgOTMxMjAsIDM1NDQ0LCA0MTYzNCwgOTMxMjcsIDkzMTMzLCA5MzEzOCwgOTMxNDMsIAorICAgIDEzMjY0LCAzMDgyMCwgOTMxNDgsIDkzMTUzLCA5MzE2MCwgOTMxNjYsIDkzMTcxLCA5MzE3OSwgOTMxODksIDkzMTk5LCAKKyAgICA5MzIwNSwgOTMyMTAsIDkzMjE2LCAxOTM0MiwgOTMyMjMsIDM5NDYyLCA5MzIzNiwgOTMyNDEsIDkzMjQ3LCAzMzczNywgCisgICAgNjk1NzksIDkzMjYwLCA5MzI2NCwgOTMyNzMsIDkzMjgyLCA5MzI4OSwgOTMyOTUsIDkzMzAzLCA5MzMxMiwgOTMzMTksIAorICAgIDQxNzU0LCA5MzMyNSwgOTMzMjgsIDkzMzMyLCA5MzMzNiwgOTMzNDAsIDI4MTQxLCA5MzM0NiwgOTMzNTMsIDkzMzU5LCAKKyAgICA5MzM2NywgOTMzNzIsIDkzMzc2LCAyNjEzNywgOTMzODIsIDkzMzg1LCA5MzM5MywgOTM0MDAsIDkzNDA4LCA5MzQyMSwgCisgICAgOTM0MzUsIDkzNDQyLCA5MzQ0OCwgOTM0NTUsIDkzNDYxLCAzNTY1MCwgOTM0NjUsIDkzNDcyLCA5MzQ4MCwgOTM0ODgsIAorICAgIDkzNDk0LCAzNTY1NSwgOTM1MDIsIDkzNTA4LCA5MzUxMywgOTM1MjMsIDkzNTI5LCA5MzUzOCwgMzM1MzIsIDM4MDEwLCAKKyAgICA5MzU0NiwgOTM1NTEsIDkzNTU2LCA5MzU2MCwgOTM1NjUsIDkzNTY5LCA5MzU3NywgOTM1ODIsIDE2NDE5LCA0NDUwNSwgCisgICAgOTM1ODYsIDkzNTkxLCAzNTY2MCwgNjgxMjEsIDkzNTk1LCA5MzYwMCwgOTM2MDQsIDkzNjExLCA5MzYyMCwgOTM2MjQsIAorICAgIDkzNjMyLCA5MzYzOCwgOTM2NDMsIDkzNjQ5LCA4NDkzLCA5MzY1NCwgOTM2NjAsIDkzNjY1LCA5MzY3MCwgOTM2ODEsIAorICAgIDkzNjkwLCA5MzcwMiwgOTM3MTcsIDM1OTM2LCA5MzcyMywgMTgyNTAsIDM1NjY0LCA5MzcyNywgOTM3MzQsIDkzNzQwLCAKKyAgICAyNjI1MywgOTM3NDQsIDkzNzUxLCA5Mzc2MCwgOTM3NjcsIDkzNzc2LCA5Mzc4MiwgOTM3ODcsIDkzNzk1LCA5MzgwMSwgCisgICAgOTM4MDYsIDM1Njc0LCA5MzgxMSwgOTM4MjAsIDkyNDA4LCA5MzgyOSwgOTM4MzYsIDkzODQyLCA5Mzg0OCwgOTM4NTcsIAorICAgIDkzODY3LCA5Mzg3NSwgOTM4ODIsIDkzODg2LCAzNTY3OSwgOTM4ODksIDM1Njg1LCAzNTY5MSwgOTM4OTQsIDkzOTAyLCAKKyAgICA5MzkxMCwgOTM5MjAsIDkzOTI5LCA5MzkzNywgOTM5NDQsIDkzOTU0LCAzNTY5NiwgOTM5NTgsIDkzOTYwLCA5Mzk2NCwgCisgICAgOTM5NjksIDkzOTczLCA5Mzk3NywgOTM5ODMsIDkzOTg4LCA5Mzk5MiwgOTQwMDMsIDk0MDA4LCA5NDAxMywgMzEwOCwgCisgICAgOTQwMTcsIDk0MDI0LCA5NDAyOCwgOTQwMzcsIDk0MDQ1LCA5NDA1MiwgOTQwNTcsIDk0MDYyLCA2ODE3MiwgOTQwNjYsIAorICAgIDk0MDY5LCA5NDA3NSwgOTQwODMsIDk0MDg5LCA5NDA5MywgOTQwOTgsIDk0MTA1LCA5NDExMCwgOTQxMTUsIDk0MTE5LCAKKyAgICA5NDEyNSwgOTQxMzAsIDM4MDQxLCA5NDEzNCwgOTQxMzcsIDk0MTQyLCA5NDE0NiwgOTQxNTEsIDk0MTU4LCA5NDE2MywgCisgICAgOTQxNjcsIDQzMDMxLCA5NDE3NSwgMjgwMTQsIDI4MDIzLCA5NDE4MSwgOTQxODcsIDk0MTkzLCA5NDE5OCwgOTQyMDIsIAorICAgIDk0MjA1LCA5NDIxNSwgOTQyMjQsIDk0MjI5LCA5NDIzNSwgOTQyNDIsIDk0MjQ4LCA5NDI1MiwgOTQyNjAsIDk0MjY1LCAKKyAgICAzODA0NywgNzg2NzcsIDk0MjY5LCA5NDI3NywgOTQyODMsIDk0MjkwLCA5NDI5NSwgOTQyOTksIDk0MzA0LCA2Mzc1NiwgCisgICAgOTQzMTAsIDk0MzE2LCAzODA1MywgOTQzMjEsIDk0MzI2LCA5NDMzMCwgOTQzMzUsIDk0MzQwLCA5NDM0NSwgOTQzNDksIAorICAgIDk0MzU0LCA5NDM1OSwgOTQzNjUsIDk0MzcwLCA5NDM3NSwgOTQzODEsIDk0Mzg3LCA5NDM5MiwgOTQzOTYsIDk0NDAxLCAKKyAgICA5NDQwNiwgOTQ0MTEsIDk0NDE1LCAyNjI1MiwgOTQ0MjAsIDk0NDI1LCA5NDQzMSwgOTQ0MzcsIDk0NDQzLCA5NDQ0OCwgCisgICAgOTQ0NTIsIDk0NDU3LCA5NDQ2MiwgOTQ0NjcsIDk0NDcxLCA5NDQ3NiwgOTQ0ODEsIDk0NDg2LCA5NDQ5MSwgNDc0OTAsIAorICAgIDk0NDk1LCAzNTcwNCwgOTQ1MDMsIDk0NTA3LCA5NDUxNSwgOTQ1MjMsIDk0NTM0LCA5NDUzOSwgOTQ1NDMsIDI0NDIwLCAKKyAgICA3NjE2OSwgOTQ1NDgsIDk0NTU0LCA5NDU1OSwgOTQ1NjksIDk0NTc2LCA5NDU4MSwgOTQ1ODksIDk0NTk4LCA5NDYwMywgCisgICAgOTQ2MDcsIDk0NjEyLCA5NDYyMCwgOTQ2MjgsIDk0NjM1LCA3MTM1NywgOTQ2NDEsIDk0NjQ5LCA5NDY1NiwgOTQ2NjcsIAorICAgIDk0NjczLCA5NDY3OSwgMzU3MTQsIDk0NjgyLCA5NDY4OSwgOTQ2OTcsIDk0NzAyLCA0NDcwOCwgOTQ3MDYsIDk0NzExLCAKKyAgICA5NDcxOCwgOTQ3MjMsIDk1NjcsIDk0NzI3LCA5NDczNSwgOTQ3NDIsIDk0NzQ5LCA5NDc1OCwgOTQ3NjUsIDk0NzcxLCAKKyAgICA5NDc4NSwgNjIxNCwgOTQ3OTMsIDk0Nzk5LCA5NDgwMywgOTQ4MDYsIDk0ODE0LCA5NDgyMSwgOTQ4MjYsIDk0ODM5LCAKKyAgICA5NDg0NiwgOTQ4NTIsIDk0ODU2LCA5NDg2NCwgOTQ4NjksIDk0ODc2LCA5NDg4MSwgNjY0MDMsIDk0ODg2LCA5NDg4OSwgCisgICAgOTQ4OTgsIDk0OTA1LCA5NDkxMSwgOTQ5MTUsIDk0OTE4LCA5NDkyNiwgOTQ5MzIsIDk0OTQxLCA5NDk1MSwgOTQ5NjEsIAorICAgIDk0OTcwLCA5NDk4MSwgOTQ5ODksIDk1MDAwLCA5NTAwNSwgOTUwMDksIDk1MDE0LCA5NTAxOCwgMzg3MDksIDk1MDI2LCAKKyAgICAyMzIzNCwgMzg3MTgsIDk1MDMxLCA5NTAzNiwgOTUwNDEsIDk1MDQ2LCA5NTA1MSwgOTUwNTYsIDk1MDYxLCA5NTA2NSwgCisgICAgOTUwNzAsIDk1MDc1LCA5NTA4MCwgOTUwODUsIDk1MDkwLCA5NTA5NSwgOTUwOTksIDk1MTA0LCA5NTEwOSwgOTUxMTMsIAorICAgIDk1MTE3LCA5NTEyMSwgOTUxMjUsIDk1MTMwLCA5NTEzNSwgOTUxMzksIDk1MTQ0LCA5NTE0OCwgOTUxNTIsIDk1MTU3LCAKKyAgICA5NTE2MiwgOTUxNjcsIDk1MTcyLCA5NTE3NiwgOTUxODEsIDk1MTg2LCA5NTE5MCwgOTUxOTUsIDk1MjAwLCA5NTIwNSwgCisgICAgOTUyMTAsIDk1MjE1LCA5NTIyMCwgOTUyMjUsIDk1MjMwLCA5NTIzNSwgOTUyNDAsIDk1MjQ1LCA5NTI1MCwgOTUyNTUsIAorICAgIDk1MjYwLCA5NTI2NSwgOTUyNzAsIDk1Mjc1LCA5NTI4MCwgOTUyODUsIDk1MjkwLCA5NTI5NCwgOTUyOTksIDk1MzA0LCAKKyAgICA5NTMwOSwgOTUzMTQsIDk1MzE5LCA5NTMyNCwgOTUzMjksIDk1MzM0LCA5NTMzOSwgOTUzNDQsIDk1MzQ5LCA5NTM1MywgCisgICAgOTUzNTgsIDk1MzYyLCA5NTM2NywgOTUzNzIsIDk1Mzc3LCA5NTM4MiwgOTUzODcsIDk1MzkyLCA5NTM5NywgOTU0MDIsIAorICAgIDk1NDA3LCA5NTQxMSwgOTU0MTUsIDk1NDIwLCA5NTQyNSwgOTU0MjksIDk1NDM0LCA5NTQzOSwgOTU0NDMsIDk1NDQ4LCAKKyAgICA5NTQ1MywgOTU0NTgsIDk1NDYzLCA5NTQ2NywgOTU0NzIsIDk1NDc3LCA5NTQ4MSwgOTU0ODYsIDk1NDkwLCA5NTQ5NCwgCisgICAgOTU0OTgsIDk1NTAyLCA5NTUwNywgOTU1MTEsIDk1NTE1LCA5NTUxOSwgOTU1MjMsIDk1NTI3LCA5NTUzMSwgOTU1MzUsIAorICAgIDk1NTM5LCA5NTU0MywgOTU1NDgsIDk1NTUzLCA5NTU1OCwgOTU1NjMsIDk1NTY4LCA5NTU3MywgOTU1NzgsIDk1NTgzLCAKKyAgICA5NTU4OCwgOTU1OTMsIDk1NTk3LCA5NTYwMSwgOTU2MDUsIDk1NjA5LCA5NTYxMywgOTU2MTcsIDk1NjIyLCA5NTYyNiwgCisgICAgOTU2MzEsIDk1NjM1LCA5NTY0MCwgOTU2NDUsIDk1NjQ5LCA5NTY1MywgOTU2NTgsIDk1NjYyLCA5NTY2NiwgOTU2NzAsIAorICAgIDk1Njc0LCA5NTY3OCwgOTU2ODIsIDk1Njg2LCA5NTY5MCwgOTU2OTQsIDk1Njk4LCA5NTcwMiwgOTU3MDYsIDk1NzEwLCAKKyAgICA5NTcxNCwgOTU3MTksIDk1NzI0LCA5NTcyOCwgOTU3MzIsIDk1NzM2LCA5NTc0MCwgOTU3NDQsIDk1NzQ4LCA5NTc1MywgCisgICAgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCA5NTc3NywgOTU3ODIsIDk1Nzg2LCA5NTc5MSwgOTU3OTUsIAorICAgIDk1Nzk5LCA5NTgwMywgOTU4MDcsIDk1ODExLCA5NTgxNSwgOTU4MTksIDk1ODIzLCA5NTgyNywgOTU4MzEsIDk1ODM1LCAKKyAgICA5NTg0MCwgOTU4NDQsIDk1ODQ4LCA5NTg1MiwgOTU4NTYsIDk1ODYwLCA5NTg2NCwgOTU4NjgsIDk1ODcyLCA5NTg3NiwgCisgICAgOTU4ODAsIDk1ODg0LCA5NTg4OSwgOTU4OTMsIDk1ODk3LCA5NTkwMiwgOTU5MDcsIDk1OTExLCA5NTkxNSwgOTU5MTksIAorICAgIDk1OTIzLCA5NTkyNywgOTU5MzEsIDk1OTM1LCA5NTkzOSwgOTU5NDQsIDk1OTQ4LCA5NTk1MywgOTU5NTcsIDk1OTYyLCAKKyAgICA5NTk2NiwgOTU5NzEsIDk1OTc1LCA5NTk4MSwgOTU5ODYsIDk1OTkwLCA5NTk5NSwgOTU5OTksIDk2MDA0LCA5NjAwOCwgCisgICAgOTYwMTMsIDk2MDE3LCA5NjAyMiwgMTUwMCwgOTYwMjYsIDI4NjIsIDE3NTUsIDE2NzMsIDI3OTUwLCA5NjAzMCwgMjg3MSwgCisgICAgOTYwMzQsIDEzNjIsIDk2MDM5LCAxMzA0LCA5NjA0MywgOTYwNDcsIDI4ODgsIDk2MDUxLCA5NjA1OSwgOTYwNjYsIDk2MDczLCAKKyAgICA5NjA4NywgMjg5MiwgNzQ3NiwgOTYwOTYsIDk2MTA0LCA5NjExMSwgOTYxMjIsIDk2MTMxLCA5NjEzOCwgOTYxNTAsIAorICAgIDk2MTYzLCA5NjE3NiwgOTYxODcsIDk2MTkyLCA5NjE5OSwgOTYyMTEsIDk2MjE1LCAyODk2LCAxMjk2MCwgOTYyMjUsIAorICAgIDk2MjMwLCA5NjIzOSwgOTYyNDksIDk2MjU0LCAyOTAwLCA5NjI2MiwgOTYyNjYsIDk2MjcxLCA5NjI3OCwgOTYyODQsIAorICAgIDk2MjkyLCA5NjMwNCwgOTYzMTQsIDEzMDksIDE0MzExLCA5NjMyNywgOTYzMzEsIDk2MzM3LCA5NjM1MSwgOTYzNjMsIAorICAgIDk2Mzc1LCA5NjM4NSwgOTYzOTQsIDk2NDAzLCA5NjQxMiwgOTY0MjAsIDk2NDMxLCA5NjQzOSwgNDMwNiwgOTY0NDksIAorICAgIDk2NDYwLCA5NjQ2OSwgOTY0NzUsIDk2NDkwLCA5NjQ5NywgOTY1MDMsIDk2NTA4LCAzODg0MywgOTY1MTMsIDI5MjQsIAorICAgIDE0MzE1LCA5NjUxNywgOTY1MjQsIDk0OTIsIDk2NTMzLCA5NjUzOSwgMjkyOSwgMzUxNTIsIDk2NTQ4LCA2NjA5OSwgCisgICAgOTY1NTUsIDk2NTU5LCA5NjU2NSwgOTY1NzYsIDk2NTgyLCA5NjU4OSwgOTY1OTUsIDk2NjAzLCA5NjYxMCwgOTY2MTYsIAorICAgIDk2NjI3LCA5NjYzNywgOTY2NDYsIDk2NjU3LCA5NjY2NiwgOTY2NzMsIDk2Njc5LCA5NjY4OSwgOTY2OTcsIDk2NzAzLCAKKyAgICA5NjcxOCwgOTY3MjQsIDk2NzI5LCA5NjczNiwgOTY3MzksIDk2NzQ1LCA5Njc1MiwgOTY3NTgsIDk2NzY2LCA5Njc3NSwgCisgICAgOTY3ODMsIDk2Nzg5LCA5Njc5OCwgNDY3NjAsIDk2ODEyLCA5NjgxNywgOTY4MjMsIDE2MTk1LCA5NjgyOCwgOTY4NDEsIAorICAgIDk2ODUzLCA5Njg2MiwgOTY4NzAsIDk2ODc3LCA5Njg4MSwgOTY4ODUsIDk2ODg4LCA5Njg5NSwgOTY5MDIsIDk2OTEwLCAKKyAgICA5NjkxOCwgOTY5MjcsIDk2OTM1LCAxNjEwMCwgOTY5NDMsIDk2OTQ4LCA5Njk1MiwgOTY5NjQsIDk2OTcxLCA5Njk3OCwgCisgICAgOTY5ODcsIDg3NywgOTY5OTcsIDk3MDA2LCA5NzAxNywgMjk0NSwgOTcwMjEsIDk3MDI1LCA5NzAzMSwgOTcwNDQsIDk3MDU2LCAKKyAgICA5NzA2NiwgOTcwNzUsIDk3MDg3LCAyODcwMSwgOTcwOTgsIDk3MTA2LCA5NzExNSwgOTcxMjYsIDk3MTM3LCA5NzE0NywgCisgICAgOTcxNTcsIDk3MTY2LCA5NzE3NCwgMTI0NzQsIDk3MTgxLCA5NzE4NSwgOTcxODgsIDk3MTkzLCA5NzE5OCwgOTcyMDIsIAorICAgIDk3MjA4LCAxMzE0LCA5NzIxNSwgOTcyMTksIDEzMDQyLCA5NzIyMywgOTcyMzQsIDk3MjQzLCA5NzI1MSwgOTcyNjAsIAorICAgIDk3MjY4LCA5NzI4NCwgOTcyOTUsIDk3MzA0LCA5NzMxMiwgOTczMjQsIDk3MzM1LCA5NzM1MSwgOTczNjEsIDk3MzgyLCAKKyAgICA5NzM5NiwgOTc0MDksIDk3NDE3LCA5NzQyNCwgNzUyMiwgOTc0MzcsIDk3NDQyLCA5NzQ0OCwgNjIyMywgOTc0NTQsIAorICAgIDk3NDU3LCA5NzQ2NCwgOTc0NzQsIDg1OTUsIDk3NDgxLCA5NzQ4NiwgOTc0OTEsIDk3NDk2LCA5NzUwNCwgOTc1MTMsIAorICAgIDk3NTIxLCA5NzUyNiwgOTc1MzMsIDEwNTk0LCAxMDYwMywgOTc1MzksIDk3NTUwLCA5NzU1NSwgOTc1NjEsIDI5NjEsIAorICAgIDI5NjYsIDk3NTY3LCAxMTk2NywgOTc1NzMsIDk3NTgwLCA5NzU4NywgOTc2MDAsIDk3NjA1LCAyMjY2LCA4NywgOTc2MTMsIAorICAgIDk3NjE4LCA5NzYyNiwgOTc2MzYsIDk3NjQ1LCA5NzY1MSwgOTc2NjAsIDk3NjY4LCA5NzY3OCwgOTc2ODIsIDk3Njg2LCAKKyAgICA5NzY5MSwgOTc2OTUsIDk3NzA3LCAyOTg5LCA5NzcxNSwgOTc3MjMsIDk3NzI4LCA5NzczOSwgOTc3NTAsIDk3NzYyLCAKKyAgICA5Nzc3MywgOTc3ODMsIDk3NzkyLCAyMzI3NSwgOTc3OTcsIDk3ODAzLCA5NzgwOCwgOTc4MTgsIDk3ODI4LCA5NzgzMywgCisgICAgMzA3MTMsIDk3ODM5LCA5Nzg0NCwgOTc4NTMsIDIzMjg3LCA5Nzg1NywgNDQwNCwgMTYsIDk3ODYyLCA5Nzg3MSwgOTc4NzgsIAorICAgIDk3ODg1LCA5Nzg5MSwgOTc4OTYsIDk3OTAwLCA5NzkwNiwgMTA4NSwgOTc5MTEsIDk3OTE2LCA2NjY4MCwgOTc5MjEsIAorICAgIDk3OTI2LCA5NzkzMiwgOTc5MzgsIDk3OTQ2LCA5Nzk1MSwgOTc5NTksIDk3OTY2LCA5Nzk3MiwgOTc5NzcsIDQyOTE1LCAKKyAgICA0NjY1NCwgOTc5ODMsIDE4MDYsIDMyLCA5Nzk5MywgOTgwMDYsIDk4MDExLCA5ODAxOSwgOTgwMjQsIDk4MDMwLCAzMDE1LCAKKyAgICAzMDc4OCwgOTgwMzUsIDk4MDQzLCA5ODA1MCwgOTgwNTUsIDk4MDY0LCA2NDAwNiwgNDAyMywgNjc3ODQsIDk4MDcyLCAKKyAgICA5ODA3NiwgMTcwMCwgMTgxOCwgOTgwODEsIDk4MDg2LCA5ODA5MywgMTgyMiwgMjg2LCA5ODEwMCwgOTgxMDYsIDk4MTExLCAKKyAgICAzMDM3LCA5ODExNSwgOTgxMjAsIDk4MTI3LCAxODI2LCA5ODEzMiwgOTgxMzgsIDk4MTQzLCA5ODE1NSwgNjQ1NCwgOTgxNjUsIAorICAgIDk4MTcyLCAxODMzLCA5ODE3OCwgOTgxODMsIDk4MTkwLCA5ODE5NywgOTgyMTIsIDk4MjE5LCA5ODIzMCwgOTgyMzUsIAorICAgIDk4MjQzLCAyNjQ2LCA5ODI0NywgOTgyNTksIDk4MjY0LCA5ODI2OCwgOTgyNzQsIDMwNTk2LCAyMjcxLCA5ODI3OCwgCisgICAgOTgyODksIDk4MjkzLCA5ODI5NywgOTgzMDMsIDk4MzA3LCA5ODMxNiwgOTgzMjAsIDk4MzMxLCA5ODMzNSwgMjMxNywgCisgICAgMzQ5NjksIDk4MzM5LCA5ODM0OSwgMzEyOCwgOTgzNTcsIDk4MzY2LCA5OTk5LCA5ODM3MSwgOTgzNzYsIDk4MzgwLCAKKyAgICA5ODM4OSwgOTgzOTYsIDk4NDAyLCAzMDk4LCAxNjI1OSwgOTg0MDYsIDk4NDE5LCA5ODQzNywgOTg0NDIsIDk4NDUwLCAKKyAgICA5ODQ1OCwgOTg0NjgsIDEwODY2LCAxNDQyOCwgOTg0ODAsIDk4NDkzLCA5ODUwMCwgOTg1MTQsIDk4NTIxLCA5ODUzNywgCisgICAgOTg1NDQsIDk4NTUwLCAyMzMyNSwgMTM2NjYsIDk4NTU3LCA5ODU2NCwgOTg1NzQsIDk4NTgzLCA0NzQ4OSwgOTg1OTUsIAorICAgIDQ3NjI0LCA5ODYwMywgOTg2MDYsIDk4NjEyLCA5ODYxOCwgOTg2MjQsIDk4NjMwLCA5ODYzNiwgOTg2NDMsIDk4NjUwLCAKKyAgICA5ODY1NiwgOTg2NjIsIDk4NjY4LCA5ODY3NCwgOTg2ODAsIDk4Njg2LCA5ODY5MiwgOTg2OTgsIDk4NzA0LCA5ODcxMCwgCisgICAgOTg3MTYsIDk4NzIyLCA5ODcyOCwgOTg3MzQsIDk4NzQwLCA5ODc0NiwgOTg3NTIsIDk4NzU4LCA5ODc2NCwgOTg3NzAsIAorICAgIDk4Nzc2LCA5ODc4MiwgOTg3ODgsIDk4Nzk0LCA5ODgwMCwgOTg4MDYsIDk4ODEyLCA5ODgxOCwgOTg4MjQsIDk4ODMwLCAKKyAgICA5ODgzNiwgOTg4NDIsIDk4ODQ4LCA5ODg1NCwgOTg4NjAsIDk4ODY2LCA5ODg3MiwgOTg4NzgsIDk4ODg0LCA5ODg5MCwgCisgICAgOTg4OTYsIDk4OTAyLCA5ODkwOCwgOTg5MTQsIDk4OTIwLCA5ODkyNiwgOTg5MzIsIDk4OTM4LCA5ODk0NCwgOTg5NTAsIAorICAgIDk4OTU2LCA5ODk2MywgOTg5NjksIDk4OTc2LCA5ODk4MywgOTg5ODksIDk4OTk2LCA5OTAwMywgOTkwMDksIDk5MDE1LCAKKyAgICA5OTAyMSwgOTkwMjcsIDk5MDMzLCA5OTAzOSwgOTkwNDUsIDk5MDUxLCA5OTA1NywgOTkwNjMsIDk5MDY5LCA5OTA3NSwgCisgICAgOTkwODEsIDk5MDg3LCA5OTA5MywgMzExMiwgOTk3MiwgOTkwOTksIDk5MTA1LCA5OTExMywgOTkxMTcsIDk2Mjc0LCAzMTE2LCAKKyAgICA5OTEyMSwgMjMwNTIsIDEzMjk5LCAzOTczLCA5OTEyNSwgMzEyMiwgOTkxMjksIDk5MTM5LCA5OTE0NSwgOTkxNTEsIAorICAgIDk5MTU3LCA5OTE2MywgOTkxNjksIDk5MTc1LCA5OTE4MSwgOTkxODcsIDk5MTkzLCA5OTE5OSwgOTkyMDUsIDk5MjExLCAKKyAgICA5OTIxNywgOTkyMjMsIDk5MjI5LCA5OTIzNSwgOTkyNDEsIDk5MjQ3LCA5OTI1MywgOTkyNTksIDk5MjY1LCA5OTI3MSwgCisgICAgOTkyNzcsIDk5MjgzLCA5OTI4OSwgOTkyOTYsIDk5MzAzLCA5OTMwOSwgOTkzMTUsIDk5MzIxLCA5OTMyNywgOTkzMzMsIAorICAgIDk5MzM5LCAxMzE5LCA5OTM0NSwgOTkzNTAsIDk5MzU1LCA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIAorICAgIDk5Mzg1LCA5OTM4OSwgOTkzOTMsIDk5Mzk3LCA5OTQwMSwgOTk0MDUsIDk5NDA5LCA5OTQxMywgOTk0MTcsIDk5NDIxLCAKKyAgICA5OTQyNywgOTk0MzMsIDk5NDM5LCA5OTQ0NSwgOTk0NDksIDk5NDUzLCA5OTQ1NywgOTk0NjEsIDk5NDY1LCA5OTQ2OSwgCisgICAgOTk0NzMsIDk5NDc3LCA5OTQ4MSwgOTk0ODYsIDk5NDkxLCA5OTQ5NiwgOTk1MDEsIDk5NTA2LCA5OTUxMSwgOTk1MTYsIAorICAgIDk5NTIxLCA5OTUyNiwgOTk1MzEsIDk5NTM2LCA5OTU0MSwgOTk1NDYsIDk5NTUxLCA5OTU1NiwgOTk1NjEsIDk5NTY2LCAKKyAgICA5OTU3MSwgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxNiwgCisgICAgOTk2MjEsIDk5NjI2LCA5OTYzMSwgOTk2MzYsIDk5NjQxLCA5OTY0NiwgOTk2NTEsIDk5NjU2LCA5OTY2MSwgOTk2NjYsIAorICAgIDk5NjcxLCA5OTY3NiwgOTk2ODEsIDk5Njg2LCA5OTY5MSwgOTk2OTYsIDk5NzAxLCA5OTcwNiwgOTk3MTEsIDk5NzE2LCAKKyAgICA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCA5OTc1MSwgOTk3NTYsIDk5NzYxLCA5OTc2NiwgCisgICAgOTk3NzEsIDk5Nzc2LCA5OTc4MSwgOTk3ODYsIDk5NzkxLCA5OTc5NiwgOTk4MDEsIDk5ODA2LCA5OTgxMSwgOTk4MTYsIAorICAgIDk5ODIxLCA5OTgyNiwgOTk4MzEsIDk5ODM2LCA5OTg0MSwgOTk4NDYsIDk5ODUxLCA5OTg1NiwgOTk4NjEsIDk5ODY2LCAKKyAgICA5OTg3MSwgOTk4NzYsIDk5ODgxLCA5OTg4NiwgOTk4OTEsIDk5ODk2LCA5OTkwMSwgOTk5MDYsIDk5OTExLCA5OTkxNiwgCisgICAgOTk5MjEsIDk5OTI2LCA5OTkzMSwgOTk5MzYsIDk5OTQxLCA5OTk0NiwgOTk5NTEsIDk5OTU2LCA5OTk2MSwgOTk5NjYsIAorICAgIDk5OTcxLCA5OTk3NiwgOTk5ODEsIDk5OTg2LCA5OTk5MSwgOTk5OTYsIDEwMDAwMSwgMTAwMDA2LCAxMDAwMTEsIDEwMDAxNiwgCisgICAgMTAwMDIxLCAxMDAwMjYsIDEwMDAzMSwgMTAwMDM2LCAxMDAwNDEsIDEwMDA0NiwgMTAwMDUxLCAxMDAwNTYsIDEwMDA2MSwgCisgICAgMTAwMDY2LCAxMDAwNzEsIDEwMDA3NiwgMTAwMDgxLCAxMDAwODYsIDEwMDA5MSwgMTAwMDk2LCAxMDAxMDEsIDEwMDEwNiwgCisgICAgMTAwMTExLCAxMDAxMTYsIDEwMDEyMSwgMTAwMTI2LCAxMDAxMzEsIDEwMDEzNiwgMTAwMTQxLCAxMDAxNDYsIDEwMDE1MSwgCisgICAgMTAwMTU2LCAxMDAxNjEsIDEwMDE2NiwgMTAwMTcxLCAxMDAxNzYsIDEwMDE4MSwgMTAwMTg2LCAxMDAxOTEsIDEwMDE5NiwgCisgICAgMTAwMjAxLCAxMDAyMDYsIDEwMDIxMSwgMTAwMjE2LCAxMDAyMjEsIDEwMDIyNiwgMTAwMjMxLCAxMDAyMzYsIDEwMDI0MSwgCisgICAgMTAwMjQ2LCAxMDAyNTEsIDEwMDI1NiwgMTAwMjYxLCAxMDAyNjYsIDEwMDI3MSwgMTAwMjc2LCAxMDAyODEsIDEwMDI4NiwgCisgICAgMTAwMjkxLCAxMDAyOTYsIDEwMDMwMSwgMTAwMzA2LCAxMDAzMTEsIDEwMDMxNiwgMTAwMzIxLCAxMDAzMjYsIDEwMDMzMSwgCisgICAgMTAwMzM2LCAxMDAzNDEsIDEwMDM0NiwgMTAwMzUxLCAxMDAzNTYsIDEwMDM2MSwgMTAwMzY2LCAxMDAzNzEsIDEwMDM3NywgCisgICAgMTAwMzgyLCAxMDAzODcsIDEwMDM5MiwgMTAwMzk3LCAxMDA0MDIsIDEwMDQwNywgMTAwNDEyLCAxMDA0MTgsIDEwMDQyMywgCisgICAgMTAwNDI4LCAxMDA0MzMsIDEwMDQzOCwgMTAwNDQzLCAxMDA0NDgsIDEwMDQ1MywgMTAwNDU4LCAxMDA0NjMsIDEwMDQ2OCwgCisgICAgMTAwNDczLCAxMDA0NzgsIDEwMDQ4MywgMTAwNDg4LCAxMDA0OTMsIDEwMDQ5OCwgMTAwNTAzLCAxMDA1MDgsIDEwMDUxMywgCisgICAgMTAwNTE4LCAxMDA1MjMsIDEwMDUyOCwgMTAwNTMzLCAxMDA1MzgsIDEwMDU0MywgMTAwNTQ4LCAxMDA1NTMsIDEwMDU1OCwgCisgICAgMTAwNTYzLCAxMDA1NjgsIDEwMDU3MywgMTAwNTc4LCAxMDA1ODcsIDEwMDU5MiwgMTAwNjAxLCAxMDA2MDYsIDEwMDYxNSwgCisgICAgMTAwNjIwLCAxMDA2MjksIDEwMDYzNCwgMTAwNjQzLCAxMDA2NDgsIDEwMDY1NywgMTAwNjYyLCAxMDA2NzEsIDEwMDY3NiwgCisgICAgMTAwNjg1LCAxMDA2OTAsIDEwMDY5NSwgMTAwNzA0LCAxMDA3MDgsIDEwMDcxNywgMTAwNzIyLCAxMDA3MzEsIDEwMDczNiwgCisgICAgMTAwNzQ1LCAxMDA3NTAsIDEwMDc1OSwgMTAwNzY0LCAxMDA3NzMsIDEwMDc3OCwgMTAwNzg3LCAxMDA3OTIsIDEwMDgwMSwgCisgICAgMTAwODA2LCAxMDA4MTUsIDEwMDgyMCwgMTAwODI5LCAxMDA4MzQsIDEwMDg0MywgMTAwODQ4LCAxMDA4NTMsIDEwMDg1OCwgCisgICAgMTAwODYzLCAxMDA4NjgsIDEwMDg3MywgMTAwODc4LCAxMDA4ODIsIDEwMDg4NywgMTAwODkyLCAxMDA4OTcsIDEwMDkwMiwgCisgICAgMTAwOTA3LCAxMDA5MTIsIDEwMDkxOCwgMTAwOTIzLCAxMDA5MjgsIDEwMDkzMywgMTAwOTM5LCAxMDA5NDMsIDEwMDk0OCwgCisgICAgMTAwOTU0LCAxMDA5NTksIDEwMDk2NCwgMTAwOTY5LCAxMDA5NzQsIDEwMDk3OSwgMTAwOTg0LCAxMDA5ODksIDEwMDk5NCwgCisgICAgMTAwOTk5LCAxMDEwMDQsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMxLCAxMDEwMzYsIDEwMTA0MSwgCisgICAgMTAxMDQ2LCAxMDEwNTEsIDEwMTA1NywgMTAxMDYyLCAxMDEwNjcsIDEwMTA3MiwgMTAxMDc3LCAxMDEwODIsIDEwMTA4OCwgCisgICAgMTAxMDkzLCAxMDEwOTgsIDEwMTEwMywgMTAxMTA4LCAxMDExMTMsIDEwMTExOCwgMTAxMTIzLCAxMDExMjgsIDEwMTEzMywgCisgICAgMTAxMTM4LCAxMDExNDMsIDEwMTE0OCwgMTAxMTUzLCAxMDExNTgsIDEwMTE2MywgMTAxMTY4LCAxMDExNzMsIDEwMTE3OCwgCisgICAgMTAxMTgzLCAxMDExODgsIDEwMTE5MywgMTAxMTk4LCAxMDEyMDMsIDEwMTIwOSwgMTAxMjE1LCAxMDEyMjEsIDEwMTIyNiwgCisgICAgMTAxMjMxLCAxMDEyMzYsIDEwMTI0MSwgMTAxMjQ3LCAxMDEyNTMsIDEwMTI1OSwgMTAxMjY0LCAxMDEyNjksIDEwMTI3NCwgCisgICAgMTAxMjgwLCAxMDEyODUsIDEwMTI5MCwgMTAxMjk1LCAxMDEzMDAsIDEwMTMwNSwgMTAxMzEwLCAxMDEzMTUsIDEwMTMyMCwgCisgICAgMTAxMzI1LCAxMDEzMzAsIDEwMTMzNSwgMTAxMzQwLCAxMDEzNDUsIDEwMTM1MCwgMTAxMzU1LCAxMDEzNjAsIDEwMTM2NiwgCisgICAgMTAxMzcyLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAxMDEzOTMsIDEwMTM5OCwgMTAxNDA0LCAxMDE0MTAsIDEwMTQxNiwgCisgICAgMTAxNDIxLCAxMDE0MjYsIDEwMTQzMSwgMTAxNDM2LCAxMDE0NDEsIDEwMTQ0NiwgMTAxNDUxLCAxMDE0NTYsIDEwMTQ2MSwgCisgICAgMTc2ODYsIDEwMTQ2NiwgMTAxNDcyLCAxMDE0NzcsIDEwMTQ4MiwgMTAxNDg3LCAxMDE0OTIsIDEwMTQ5NywgMTAxNTAzLCAKKyAgICAxMDE1MDgsIDEwMTUxMywgMTAxNTE4LCAxMDE1MjMsIDEwMTUyOCwgMTAxNTM0LCAxMDE1MzksIDEwMTU0NCwgMTAxNTQ5LCAKKyAgICAxMDE1NTQsIDEwMTU1OSwgMTAxNTY0LCAxMDE1NjksIDEwMTU3NCwgMTAxNTc5LCAxMDE1ODQsIDEwMTU4OSwgMTAxNTk0LCAKKyAgICAxMDE1OTksIDEwMTYwNCwgMTAxNjA5LCAxMDE2MTQsIDEwMTYxOSwgMTAxNjI0LCAxMDE2MjksIDEwMTYzNCwgMTAxNjM5LCAKKyAgICAxMDE2NDQsIDEwMTY1MCwgMTAxNjU1LCAxMDE2NjAsIDEwMTY2NSwgMTAxNjcwLCAxMDE2NzUsIDEwMTY4MCwgMTAxNjg1LCAKKyAgICAxMDE2OTAsIDEwMTY5NSwgMTAxNzAwLCAxMDE3MDUsIDEwMTcxMCwgMTAxNzE1LCAxMDE3MjAsIDEwMTcyNSwgMTAxNzMwLCAKKyAgICAxMDE3MzUsIDEwMTc0MCwgMTAxNzQ1LCAxMDE3NTAsIDEwMTc1NSwgMTAxNzYwLCAxMDE3NjUsIDEwMTc3MCwgMTAxNzc1LCAKKyAgICAxMDE3ODAsIDEwMTc4NSwgMTAxNzkwLCAxMDE3OTUsIDEwMTgwMCwgMTAxODA1LCAxMDE4MTAsIDEwMTgxNSwgMTAxODIwLCAKKyAgICAxMDE4MjUsIDEwMTgzMCwgMTAxODM1LCAxMDE4NDAsIDEwMTg0NSwgMTAxODUwLCAxMDE4NTYsIDEwMTg2MSwgMTAxODY2LCAKKyAgICAxMDE4NzEsIDEwMTg3NiwgMTAxODgxLCAxMDE4ODYsIDEwMTg5MSwgMTAxODk2LCAxMDE5MDEsIDEwMTkwNiwgMTAxOTExLCAKKyAgICAxMDE5MTcsIDEwMTkyMiwgMTAxOTI4LCAxMDE5MzMsIDEwMTkzOCwgMTAxOTQzLCAxMDE5NDgsIDEwMTk1MywgMTAxOTU4LCAKKyAgICAxMDE5NjQsIDEwMTk2OSwgMTAxOTc0LCAxMDE5ODAsIDEwMTk4NSwgMTAxOTkwLCAxMDE5OTUsIDEwMjAwMCwgMTAyMDA1LCAKKyAgICAxMDIwMTEsIDEwMjAxNywgMTAyMDIyLCAxMDIwMjcsIDEzMzIxLCAxMDIwMzIsIDEwMjAzNywgMTAyMDQyLCAxMDIwNDcsIAorICAgIDEwMjA1MiwgMTAyMDU3LCAxMDIwNjIsIDEwMjA2NywgMTAyMDcyLCAxMDIwNzcsIDEwMjA4MiwgMTAyMDg3LCAxMDIwOTIsIAorICAgIDEwMjA5NywgMTAyMTAyLCAxMDIxMDcsIDEwMjExMiwgMTAyMTE3LCAxMDIxMjIsIDEwMjEyNywgMTAyMTMyLCAxMDIxMzcsIAorICAgIDEwMjE0MiwgMTAyMTQ3LCAxMDIxNTIsIDEwMjE1NywgMTAyMTYyLCAxMDIxNjcsIDEwMjE3MiwgMTAyMTc3LCAxMDIxODIsIAorICAgIDEwMjE4NywgMTAyMTkyLCAxMDIxOTcsIDEwMjIwMiwgMTAyMjA3LCAxMDIyMTIsIDEwMjIxNywgMTAyMjIyLCAxMDIyMjcsIAorICAgIDEwMjIzMiwgMTAyMjM3LCAxMDIyNDIsIDEwMjI0NywgMTAyMjUyLCAxMDIyNTcsIDEwMjI2MiwgMTAyMjY3LCAxMDIyNzIsIAorICAgIDEwMjI3NywgMTAyMjgyLCAxMDIyODcsIDEwMjI5MiwgMTAyMjk3LCAxMDIzMDIsIDEwMjMwNywgMTAyMzEyLCAxMDIzMTcsIAorICAgIDEwMjMyMiwgMTAyMzI3LCAxMDIzMzIsIDEwMjMzNywgMTAyMzQyLCAxMDIzNDcsIDEwMjM1MiwgMTAyMzU4LCAxMDIzNjMsIAorICAgIDEwMjM2OCwgMTAyMzczLCAxMDIzNzgsIDEwMjM4NCwgMTAyMzg5LCAxMDIzOTQsIDEwMjM5OSwgMTAyNDA0LCAxMDI0MDksIAorICAgIDEwMjQxNCwgMTAyNDIwLCAxMDI0MjUsIDEwMjQzMCwgMTAyNDM1LCAxMDI0NDAsIDEwMjQ0NSwgMTAyNDUxLCAxMDI0NTYsIAorICAgIDEwMjQ2MSwgMTAyNDY2LCAxMDI0NzEsIDEwMjQ3NiwgMTAyNDgyLCAxMDI0ODcsIDEwMjQ5MiwgMTAyNDk3LCAxMDI1MDIsIAorICAgIDEwMjUwNywgMTAyNTEzLCAxMDI1MTksIDEwMjUyNCwgMTAyNTI5LCAxMDI1MzQsIDEwMjU0MCwgMTAyNTQ2LCAxMDI1NTIsIAorICAgIDEwMjU1NywgMTAyNTYyLCAxMDI1NjgsIDEwMjU3NCwgMTAyNTc5LCAxMDI1ODUsIDEwMjU5MSwgMTAyNTk3LCAxMDI2MDIsIAorICAgIDEwMjYwNywgMTAyNjEzLCAxMDI2MTgsIDEwMjYyNCwgMTAyNjI5LCAxMDI2MzUsIDEwMjY0NCwgMTAyNjQ5LCAxMDI2NTQsIAorICAgIDEwMjY2MCwgMTAyNjY1LCAxMDI2NzEsIDEwMjY3NiwgMTAyNjgxLCAxMDI2ODYsIDEwMjY5MSwgMTAyNjk2LCAxMDI3MDEsIAorICAgIDEwMjcwNiwgMTAyNzExLCAxMDI3MTYsIDEwMjcyMSwgMTAyNzI2LCAxMDI3MzEsIDEwMjczNiwgMTAyNzQxLCAxMDI3NDYsIAorICAgIDEwMjc1MSwgMTAyNzU2LCAxMDI3NjEsIDEwMjc2NiwgMTAyNzcxLCAxMDI3NzYsIDEwMjc4MSwgMTAyNzg2LCAxMDI3OTEsIAorICAgIDEwMjc5NiwgMTAyODAxLCAxMDI4MDYsIDEwMjgxMSwgMTAyODE2LCAxMDI4MjEsIDEwMjgyNiwgMTAyODMyLCAxMDI4MzgsIAorICAgIDEwMjg0NCwgMTAyODQ5LCAxMDI4NTQsIDEwMjg1OSwgMTAyODY0LCAxMDI4NjksIDEwMjg3NCwgMTAyODc5LCAxMDI4ODQsIAorICAgIDEwMjg4OSwgMTAyODk0LCAxMDI4OTksIDEwMjkwNCwgMTAyOTA5LCAxMDI5MTQsIDEwMjkxOSwgMTAyOTI0LCAxMDI5MjksIAorICAgIDEwMjkzNCwgMTAyOTM5LCAxMDI5NDQsIDEwMjk1MCwgMTAyOTU2LCAxMDI5NjEsIDEwMjk2NywgMTAyOTcyLCAxMDI5NzcsIAorICAgIDEwMjk4MywgMTAyOTg4LCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAxMDMwMTAsIDEwMzAxNiwgMTAzMDIxLCAxMDMwMjcsIAorICAgIDEwMzAzMiwgMTAzMDM3LCAxMDMwNDIsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTcsIDEwMzA2MiwgOTkxNDAsIDk5MTQ2LCAKKyAgICA5OTE1MiwgOTkxNTgsIDEwMzA2OCwgOTkxNjQsIDk5MTcwLCAxMDMwNzQsIDk5MTc2LCA5OTE4MiwgOTkxODgsIDk5MTk0LCAKKyAgICA5OTIwMCwgOTkyMDYsIDk5MjEyLCA5OTIxOCwgOTkyMjQsIDEwMzA4MCwgOTkyMzAsIDk5MjM2LCA5OTI0MiwgMTAzMDg2LCAKKyAgICA5OTI0OCwgOTkyNTQsIDk5MjYwLCA5OTI2NiwgMTAzMDkyLCA5OTI3MiwgOTkyNzgsIDk5Mjg0LCA5OTMwNCwgMTAzMDk4LCAKKyAgICAxMDMxMDQsIDk5MzEwLCAxMDMxMTAsIDk5MzE2LCA5OTMyMiwgOTkzMjgsIDk5MzM0LCA5OTM0MCwgMzEzOSwgMzE0NCwgCisgICAgMTAzMTE2LCAxMDMxMjEsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MywgMTAzMTQ4LCAxMDMxNTMsIDIzMjIsIAogfTsKIAogLyogY29kZS0+bmFtZSBwaHJhc2Vib29rICovCiAjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgOAotI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwMQorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDE5OAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxMSwgMjI4LCAyNDAsIDIxMiwgODIsIDIxNywgMzEsIDgyLCA0MiwgNTQsIDI0MywgOTcsIDU0LCAyMTgsIDI0NiwgCi0gICAgNTQsIDI1MCwgMjM1LCAyNTAsIDE2MCwgNDksIDIxOSwgNzYsIDUwLCAyMTksIDc2LCAyNTAsIDU5LCA5MSwgNTQsIDI0NSwgCi0gICAgMjMzLCAyMzUsIDIxOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMCwgMTcsIDIwMiwgODQsIDE3LCAxMDUsIDE3LCAxMDgsIAotICAgIDE3LCAxNDcsIDE3LCAxNDksIDE3LCAxNzAsIDE3LCAxOTUsIDE3LCAyMTMsIDExMSwgMTcsIDE5OSwgMTcsIDIyMiwgNjMsIAotICAgIDI0NSwgMjQyLCAyMTMsIDE0MywgMjI3LCAxNzksIDU0LCAyNDEsIDM1LCA1NCwgMjM3LCAyNDcsIDU0LCAyMTcsIDQ3LCA4MiwgCi0gICAgMjQ1LCAyMzEsIDI1MCwgNDksIDgsIDYsIDEsIDYzLCA4LCA2LCAxLCAyNDksIDI1NSwgOCwgNiwgMSwgMjQ3LCAxMjUsIDgsIAotICAgIDYsIDEsIDI0NSwgNTEsIDgsIDYsIDEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NCwgOCwgNiwgMSwgMjM5LCA3NSwgOCwgNiwgMSwgCi0gICAgMjM3LCAxNzEsIDgsIDYsIDEsIDc1LCA4LCA2LCAxLCAyMzAsIDE4NCwgOCwgNiwgMSwgMjMwLCA1NCwgOCwgNiwgMSwgMTU5LCAKLSAgICA4LCA2LCAxLCAyMjYsIDE4NSwgOCwgNiwgMSwgMjIzLCAxNjMsIDgsIDYsIDEsIDc4LCA4LCA2LCAxLCAyMTksIDE4NCwgOCwgCi0gICAgNiwgMSwgMjE3LCAxMzQsIDgsIDYsIDEsIDE0NiwgOCwgNiwgMSwgMTk0LCA4LCA2LCAxLCAyMTAsIDY5LCA4LCA2LCAxLCAKLSAgICA2OCwgOCwgNiwgMSwgMjA2LCAxNjQsIDgsIDYsIDEsIDIwNCwgMTQ0LCA4LCA2LCAxLCAyMDMsIDE5NiwgOCwgNiwgMSwgCi0gICAgMjAzLCAxMjQsIDgsIDYsIDEsIDIwMiwgMTU5LCA0OSwgNTEsIDE1NSwgMjE2LCA3NCwgMjEyLCAwLCA1MCwgNTEsIDE1NSwgCi0gICAgMjQ2LCA1MywgMjUxLCAxMzgsIDEyNCwgMjI3LCAxMTQsIDIzNywgMjU0LCAyNTEsIDEzOCwgOCwgNSwgMSwgNjMsIDgsIDUsIAotICAgIDEsIDI0OSwgMjU1LCA4LCA1LCAxLCAyNDcsIDEyNSwgOCwgNSwgMSwgMjQ1LCA1MSwgOCwgNSwgMSwgNzQsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzksIDc1LCA4LCA1LCAxLCAyMzcsIDE3MSwgOCwgNSwgMSwgNzUsIDgsIDUsIDEsIDIzMCwgCi0gICAgMTg0LCA4LCA1LCAxLCAyMzAsIDU0LCA4LCA1LCAxLCAxNTksIDgsIDUsIDEsIDIyNiwgMTg1LCA4LCA1LCAxLCAyMjMsIAotICAgIDE2MywgOCwgNSwgMSwgNzgsIDgsIDUsIDEsIDIxOSwgMTg0LCA4LCA1LCAxLCAyMTcsIDEzNCwgOCwgNSwgMSwgMTQ2LCA4LCAKLSAgICA1LCAxLCAxOTQsIDgsIDUsIDEsIDIxMCwgNjksIDgsIDUsIDEsIDY4LCA4LCA1LCAxLCAyMDYsIDE2NCwgOCwgNSwgMSwgCi0gICAgMjA0LCAxNDQsIDgsIDUsIDEsIDIwMywgMTk2LCA4LCA1LCAxLCAyMDMsIDEyNCwgOCwgNSwgMSwgMjAyLCAxNTksIDQ5LCAKLSAgICAyNDUsIDkzLCAxNTUsIDgwLCAyMjcsIDExNCwgNTAsIDI0NSwgOTMsIDE1NSwgMjA4LCAyMjcsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMjMwLCAyMzksIDI0MCwgMjEyLCA4MiwgMjQ2LCAyMjAsIDU0LCAyMTgsIDIwLCA1NCwgMjQ1LCA5MiwgNTQsIDIwMywgCi0gICAgNDMsIDU0LCAyNDcsIDIwMywgMTQyLCAyMTQsIDE2OCwgNTQsIDI0MywgMjMxLCAyNDUsIDE2OSwgNTQsIDI0MCwgNDEsIAotICAgIDIxOSwgMjQwLCAyMzEsIDMxLCAyMjcsIDIxNywgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjIxLCAxNjYsIDU0LCAKLSAgICAyMTIsIDcsIDIzNSwgMjIwLCAyMTYsIDEyOSwgNTQsIDIyNSwgMTcwLCAyNDQsIDU1LCA1NCwgMjE4LCA3NSwgNTQsIDIxMCwgCi0gICAgMTk5LCAxMDgsIDIxMCwgMTk5LCAxNDcsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMjI0LCAxNTMsIDU0LCAyMTgsIDEyNiwgNTQsIAotICAgIDEwMSwgMjQzLCA4NSwgMjQ2LCAyMzEsIDIxMCwgMTk5LCAxMDUsIDIyNSwgODAsIDIxOSwgMjQwLCAyMzEsIDMxLCAyMTYsIAotICAgIDExLCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMjA0LCAKLSAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMjMwLCAyMzksIAotICAgIDIxNywgNDcsIDgyLCA4LCA2LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAxNjUsIDgsIDYsIDEsIDM0LCAKLSAgICAzLCAyNDYsIDUyLCA4LCA2LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgCi0gICAgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMjUxLCAxMDksIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgMTY1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDI0MywgMjMxLCA4LCA2LCAxLCAyNDAsIDI0MywgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUyLCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAyMjMsIDIyNCwgNTQsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAxMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIAotICAgIDYsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIxMywgNTcsIDE5NCwgOCwgNSwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDI1MSwgMTA5LCA4LCA1LCAKLSAgICAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjQwLCAyNDMsIDgsIDUsIDEsIDIyMywgMTY0LCAKLSAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAxNjUsIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgCi0gICAgMjQzLCAxMzcsIDU0LCA4LCA1LCAxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCA1LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQzLCAyMzEsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMzQsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyMjAsIDYyLCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMTY1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDI0NywgMTI2LCAKLSAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCAKLSAgICA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCAKLSAgICA2LCAxLCAxODgsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxODgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICA3MCwgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ2LCA1MiwgOCwgNSwgCi0gICAgMSwgMjM5LCA3NiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzOSwgNzYsIAotICAgIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgCi0gICAgNiwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMzcsIAotICAgIDE3MiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA5NSwgCi0gICAgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDk1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCAKLSAgICA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIAotICAgIDIzNSwgMjA2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MywgODQsIDc1LCA4LCA2LCAzMiwgMjMxLCA4MSwgOCwgNSwgMzIsIAotICAgIDIzMSwgODEsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgCi0gICAgNiwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjgsIAotICAgIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDE2NSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDE2NSwgOCwgNiwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICAyNDcsIDI5LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjQzLCAKLSAgICA4NSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjQzLCA4NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxNjUsIAotICAgIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAKLSAgICAyMTcsIDI1MSwgMjQ3LCAxMzcsIDI1MCwgMTYwLCA4LCA2LCAxLCAyNDEsIDc4LCA4LCA1LCAxLCAyNDEsIDc4LCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAxNTgsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxNTgsIDMsIDUyLCAxNjUsIDgsIDUsIDEsIDE1OCwgCi0gICAgMywgNTIsIDE2NSwgOCwgNiwgMzIsIDIyMCwgNzMsIDgsIDUsIDMyLCAyMjAsIDczLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDE2NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAxNjUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxNywgCi0gICAgMSwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCAKLSAgICA4LCA2LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjQ2LCA1MiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIAotICAgIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTUsIAotICAgIDk0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ2LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NywgMjksIDgsIDYsIDEsIAotICAgIDIxMCwgNzAsIDMsIDk1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIAotICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKLSAgICAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDEwNiwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDUyLCAxNjUsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgNTIsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxMDYsIDMsIDIyMCwgCi0gICAgNjIsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNiwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMDMsIAotICAgIDEyNSwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAxNjUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxNjUsIAotICAgIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgCi0gICAgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDgsIDUsIAotICAgIDEsIDY2LCAzLCA5NSwgOCwgNiwgMSwgNjYsIDMsIDExMywgOCwgNiwgMSwgNjYsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCA2NiwgCi0gICAgMywgMjA4LCAxNDIsIDgsIDYsIDEsIDE0MywgMTk1LCA4LCA1LCAxLCAxNDMsIDE5NSwgOCwgNiwgMSwgMTcxLCA3OCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjYsIDMsIDExMywgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDExMywgOCwgNiwgMSwgMjUxLCA4NCwgMjQ1LCAKLSAgICA1MSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNDQsIDM3LCA4LCA2LCAxLCAyMTYsIDczLCA3NCwgCi0gICAgOCwgNiwgMSwgMjE0LCAxOTIsIDgsIDYsIDEsIDE3MSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCAxMTMsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc1LCAzLCAxMTMsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNiwgMSwgMjM4LCAyMzUsIDgsIDUsIDEsIAotICAgIDIzNSwgMjU1LCA4LCA2LCAxLCAyMzAsIDIzMCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAKLSAgICAzLCAxMTMsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDExMywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDE0MiwgOCwgNSwgMSwgCi0gICAgMjI4LCAyNiwgMywgOTUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDQ5LCAKLSAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNiwgMSwgMTU4LCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNiwgMSwgMjIwLCAKLSAgICA1NywgOCwgNSwgMSwgMjIwLCA1NywgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIAotICAgIDExMywgOCwgMSwgMjAyLCAyMTYsIDgsIDYsIDEsIDE0MywgMTA4LCA4LCA1LCAxLCAxNDMsIDEwOCwgOCwgNiwgMSwgMjQxLCAKLSAgICA3LCA4LCAxLCAyMTYsIDczLCAyNDEsIDgsIDIyNywgMTQsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIAotICAgIDYsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA2LCAKLSAgICAxLCAyMDYsIDIxNiwgOCwgNiwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDExMywgOCwgNSwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDExMywgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDk1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgOTUsIAotICAgIDgsIDYsIDEsIDI0MCwgMTc3LCA4LCA2LCAxLCAyNDAsIDE3OCwgMjE2LCA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDIxNiwgCi0gICAgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyMDksIDI0OCwgOCwgMSwgMTIwLCAzLCA5NSwgOCwgNiwgMSwgMTQzLCAxNzAsIAotICAgIDgsIDUsIDEsIDE0MywgMTcwLCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIwMywgCi0gICAgMTk5LCA4LCAxLCAyNDQsIDMwLCAyNDYsIDI3LCA4LCAxLCAyMjcsIDI1NCwgMjQ2LCAyNywgOCwgMSwgMjUwLCAyNDgsIAotICAgIDI0NiwgMjcsIDgsIDEsIDIxNiwgNzksIDI0NiwgMjcsIDgsIDYsIDEsIDI0MiwgMSwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCi0gICAgMjQ1LCA1MiwgMywgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MiwgMSwgMywgMjQ3LCAyOSwgOCwgCi0gICAgNiwgMSwgMjI3LCA4MSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjcsIDgxLCA4LCAKLSAgICA2LCAxLCAyMjIsIDQ5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyMiwgNDksIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgCi0gICAgMjksIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDI0NywgMjksIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIAotICAgIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgCi0gICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgNzQsIDgsIDYsIDEsIDM0LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDcwLCAKLSAgICA4NywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDI1MSwgCi0gICAgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjUxLCAxMTAsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAKLSAgICA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgOTUsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NywgCi0gICAgMjksIDgsIDYsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAxNTgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCAxODUsIAotICAgIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0MiwgMCwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNSwgMSwgMjAyLCAxNTksIDgsIDUsIAotICAgIDEsIDI0MiwgMCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDIzNSwgMjUyLCA4LCA2LCAxLCAyMDMsIDE5OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgODcsIDI1LCAxNjUsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAyMTUsIDI1MywgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDI1MSwgMTEwLCAzLCAxNjUsIDgsIDUsIDEsIDI1MSwgCi0gICAgMTEwLCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjExLCAzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMTEsIDMyLCAKLSAgICAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgNTIsIDIzNywgMjUzLCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKLSAgICA2LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCi0gICAgNiwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIAotICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNywgCi0gICAgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIxNywgMSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAotICAgIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjMwLCAKLSAgICAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAotICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMDIsIDIzNCwgOCwgNSwgCi0gICAgMSwgMjAyLCAyMzQsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDUsIAotICAgIDk1LCA4LCA2LCAxLCAyMTksIDIxNiwgOCwgNSwgMSwgMjE5LCAyMTYsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAxMTMsIDgsIAotICAgIDUsIDEsIDIwMiwgMTYwLCAzLCAxMTMsIDgsIDYsIDEsIDM0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDM0LCAzLCA3MCwgNTUsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDE1OCwgMywgCi0gICAgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCAKLSAgICA4NywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMDMsIAotICAgIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDI0NSwgOTUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDk1LCA4LCAKLSAgICA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NCwgOCwgNSwgMSwgMjQ0LCAxMzAsIDI0MywgMTkxLCA4LCA1LCAxLCAyMTcsIDY2LCAKLSAgICAyNDMsIDE5MSwgOCwgNiwgMSwgMzQsIDMsIDk1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgOTUsIDgsIDUsIDEsIDI0NywgCi0gICAgMTI2LCAzLCA5NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDE0MiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCAKLSAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTAsIDE2OSwgCi0gICAgMjA5LCAyNDgsIDgsIDYsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDUsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDYsIDEsIAotICAgIDY2LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAxNDIsIDgsIDYsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCA5NSwgOCwgNSwgMSwgMTg4LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgOTUsIDgsIDYsIDEsIDUsIDIxNywgMTM1LCAzLCAyMzYsIDExNiwgMjA5LCAyNDgsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAKLSAgICAyMzYsIDExNiwgMjA5LCAyNDgsIDgsIDYsIDEsIDIxNywgMSwgMywgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgOTUsIDgsIDYsIAotICAgIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgNjMsIDgsIAotICAgIDUsIDEsIDI1MSwgMiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgNjYsIDMsIDExMywgOCwgNSwgMSwgCi0gICAgMTcxLCA3OCwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDIwOSwgMjQ4LCA4LCAKLSAgICA1LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDc0LCA4LCA1LCAxLCAyMTQsIDE5MiwgOCwgNSwgMSwgCi0gICAgMjE0LCAxOTMsIDMsIDExMywgOCwgNSwgMSwgMTcxLCA3NCwgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjE2LCA3MywgMTcxLCAxODgsIDMsIDExMywgOCwgNSwgMSwgMjQ2LCAxNiwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjQzLCA4NCwgMjMwLCAxODUsIDMsIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDUsIDEsIDEzMiwgMjM5LCAKLSAgICA3NSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgOCwgNSwgMSwgMjM4LCAyMzUsIDgsIDUsIDEsIDIxNiwgMTgyLCAyMzYsIDUzLCAKLSAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDUsIDEsIDIzNywgMzIsIAotICAgIDMsIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzMCwgOCwgMSwgNSwgNiwgNzUsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDUsIAotICAgIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIyNywgMTY0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAKLSAgICAxODUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIAotICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyMTYsIDc5LCAxMTMsIAotICAgIDgsIDEsIDUsIDYsIDIyMywgMTYzLCA4LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDgsIDEsIDUsIDYsIDIyMCwgNzMsIDgsIDUsIAotICAgIDEsIDI0NiwgMTYsIDIyMCwgMzYsIDgsIDUsIDEsIDIxOCwgMTkyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMTQ2LCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAxMTMsIDgsIAotICAgIDUsIDEsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjE2LCA3MywgMjE3LCAxLCAzLCAyMzksIDI0MCwgOCwgMSwgNSwgNiwgCi0gICAgMTQ2LCA4LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxMTMsIDgsIDUsIDEsIDI0MSwgCi0gICAgNywgOCwgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODUsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDgsIDUsIDEsIDIxMSwgMTc0LCAKLSAgICAyMTYsIDczLCAyNDEsIDcsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIAotICAgIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTA2LCAxNDIsIDgsIDUsIDEsIDIwNiwgMjE2LCAKLSAgICA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMDQsIDE0NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIwMywgMTI0LCA4LCAxLCA1LCA2LCAyMDMsIDEyNCwgOCwgNSwgCi0gICAgMSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc3LCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjQ1LCA5NSwgOCwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCi0gICAgMjE4LCAxOTksIDIwNSwgMTg2LCAyMzksIDEyNiwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAotICAgIDIxMSwgNDAsIDI0NywgMTI1LCA4LCAxLCAyNDgsIDcwLCAyNDYsIDI3LCA4LCAxLCA1LCA2LCAyNDksIDI1NSwgOCwgNSwgMSwgCi0gICAgMjQ2LCAxNiwgMTcxLCA3NCwgOCwgMSwgNSwgNiwgMjM5LCA3NiwgMywgMTEzLCA4LCAxLCA1LCA2LCAyMzcsIDE3MSwgOCwgCi0gICAgNSwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgOCwgMSwgNSwgNiwgMTU5LCAKLSAgICA4LCA1LCAxLCAyMTcsIDEzNSwgMywgMTEzLCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjE2LCA3MywgCi0gICAgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDUsIDEsIDI0MiwgMSwgMjQzLCAxOTEsIDgsIDUsIDEsIDI0NCwgMywgMjQzLCAKLSAgICAxOTEsIDgsIDUsIDEsIDI0MiwgMSwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwOCwgMjIsIDI0MywgMTkxLCAKLSAgICA4LCA1LCAxLCAyMDksIDEzNywgMjQzLCAxOTEsIDgsIDUsIDEsIDIwOSwgMTk0LCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgCi0gICAgNSwgMSwgMjQwLCAzOSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMjQxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAxODcsIAotICAgIDI0MywgMTkxLCA4LCAxLCAyNDgsIDcwLCAyMTgsIDI0NSwgOCwgMSwgMjQ4LCA3OCwgMjE4LCAyNDUsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMzcsIDE3MiwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MiwgMywgMjM5LCAyNDEsIDI1LCAKLSAgICAyMDksIDI0OCwgNjUsIDEsIDUsIDIzNywgMTcxLCA2NSwgMSwgNSwgMjM3LCAxNzIsIDMsIDExMywgNjUsIDEsIDUsIDIzMCwgCi0gICAgMTg0LCA2NSwgMSwgNSwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMTcsIDEsIAotICAgIDMsIDExMywgNjUsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDY1LCAxLCA1LCAyMDQsIDE0NCwgNjUsIDEsIDUsIDIwMywgCi0gICAgMTI0LCA2NSwgMSwgMjE3LCAyMzYsIDY1LCAxLCA1MiwgMjE3LCAyMzYsIDY1LCAxLCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDY1LCAKLSAgICAxLCAyNTAsIDE2MCwgNjUsIDEsIDIxNiwgNzMsIDI0NSwgMjMzLCA2NSwgMSwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAKLSAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyMTYsIDczLCAyMzgsIDQ1LCAyMTEsIAotICAgIDYxLCA2NSwgMSwgNDksIDI1MCwgOTQsIDY1LCAxLCA1MCwgMjUwLCA5NCwgNjUsIDEsIDExMiwgMjUwLCA5NCwgNjUsIDEsIAotICAgIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDI0NiwgNTMsIDI1MSwgMTM4LCAyNDcsIDI5LCA2NSwgMSwgODAsIDIyNywgMTE0LCA2NSwgCi0gICAgMSwgMjI1LCAxNzAsIDY1LCAxLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAKLSAgICAxMjQsIDgwLCAyMjcsIDExNCwgNjUsIDEsIDEyNCwgMjI1LCAxNzAsIDY1LCAxLCAxMjQsIDIzNywgMjU0LCAyNTEsIDEzOCwgCi0gICAgNjUsIDEsIDEyNCwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAxNjIsIAotICAgIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMjQ2LCAyMTYsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjQ2LCAyMTYsIAotICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMTEyLCAyMTAsIDMsIDY1LCAxLCAxMjEsIDIxMCwgMywgNjUsIDEsIDkxLCA1NCwgCi0gICAgNjUsIDEsIDIyNCwgMTAzLCA1NCwgMjQ3LCAyMTQsIDcwLCA1NSwgMjE1LCAyNTMsIDU1LCAyMjAsIDYyLCA1LCAyMDgsIAotICAgIDIyNywgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIxNiwgNTgsIDExMywgNjUsIDEsIDI0NSwgMTMxLCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDUsIDIzOCwgMjM1LCA2NSwgMSwgNSwgMTU5LCA2NSwgMSwgNSwgMTk0LCA2NSwgMSwgNSwgMjAzLCAKLSAgICAxOTYsIDY1LCAxLCA1LCAyMTYsIDczLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjQwLCAxOTgsIDE0MywgMTQyLCA2NSwgCi0gICAgMSwgMTM4LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMTQzLCAxNDIsIDY1LCAxLCAKLSAgICAyNDAsIDE5NywgMTQzLCAxNDIsIDY1LCAxLCAyMDMsIDEsIDI0NCwgMjcsIDE0MywgODIsIDY1LCAxLCAyMDMsIDc3LCAyNDQsIAotICAgIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjA1LCAxODQsIDY1LCAxLCAyMDYsIDI1MSwgNjUsIDEsIDUyLCAyNTAsIDE2MCwgNjUsIAotICAgIDEsIDEyNCwgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDQ5LCAyNTAsIDk0LCAKLSAgICA2NSwgMSwgMTI0LCA1MCwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMjE1LCAyNTIsIDY1LCAxLCAxMDEsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDEwMSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIDEwMSwgNTIsIDI1MSwgMTI2LCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDEyNCwgMjA4LCAyMjcsIDY1LCAxLCAyMTYsIDE4OCwgMjQ1LCAyNDIsIDY1LCAxLCAyNDgsIDE0MiwgCi0gICAgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0MSwgODQsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDgsIDE0MiwgMTI0LCAyMDgsIAotICAgIDE2MSwgNjUsIDEsIDI0MSwgODQsIDEyNCwgMjA4LCAxNjEsIDY1LCAxLCAyMTMsIDM0LCA2NSwgMSwgMTcxLCAyMTMsIDM0LCAKLSAgICA2NSwgMSwgMTI0LCA0OSwgNDcsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAKLSAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMzksIDIwOCwgMjI3LCAzOSwgMjI1LCAxNzAsIDM5LCAyMTksIDE5OCwgMzksIDI0NywgCi0gICAgMjE0LCAzOSwgNzAsIDU1LCAzOSwgMjQzLCAyMzEsIDM5LCAyMzYsIDExNiwgNTUsIDM5LCAyMTUsIDI1MywgNTUsIDM5LCAKLSAgICA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjQ3LCAyOSwgMzksIDgwLCAyMjcsIDExNSwgNTUsIDM5LCA1MiwgODAsIAotICAgIDIyNywgMTE1LCA1NSwgMzksIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAyNDcsIDUyLCAzOSwgMjMwLCAyMzksIDI0NywgCi0gICAgMjE0LCAzOSwgMjA3LCAxNzQsIDI0NSwgMjM0LCA1NSwgMzksIDI0NSwgMjM0LCA1NSwgMzksIDIxNiwgNzMsIDI0NSwgMjM0LCAKLSAgICA1NSwgMzksIDI0NSwgMjM0LCA4NywgMjE2LCAxNiwgMzksIDIzNywgMjU0LCAyNTEsIDEzOSwgNTYsIDM5LCAyNTEsIDEyNiwgCi0gICAgMjUxLCAxMzksIDU2LCAzOSwgNDksIDIxMCwgNCwgNTYsIDM5LCA1MCwgMjEwLCA0LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgCi0gICAgNTUsIDM5LCAyMzYsIDUzLCAzOSwgNDksIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMTEyLCAyMTAsIDQsIDU2LCAzOSwgMTIxLCAKLSAgICAyMTAsIDQsIDU2LCAzOSwgOTEsIDIsIDU2LCAzOSwgMjI0LCAxMDMsIDIsIDU2LCAzOSwgMjE5LCAxNDAsIDIzNiwgMTE2LCAKLSAgICA1NiwgMzksIDIxNiwgNzksIDIzNiwgMTE2LCA1NiwgMzksIDcwLCA1NiwgMzksIDI0MywgMjMyLCA1NiwgMzksIDIxNSwgCi0gICAgMjUzLCA1NiwgMzksIDI0NSwgMjM0LCA1NiwgMzksIDI0NiwgMjMxLCAzOSwgMjIwLCA2MiwgMzksIDgwLCAyMjcsIDExNSwgCi0gICAgNTYsIDM5LCAyNDcsIDIwOCwgNTYsIDM5LCAyMzAsIDIzOSwgNTIsIDI1MCwgMTI3LCA1NiwgMzksIDI0NywgMzAsIDU2LCAKLSAgICAzOSwgMjQ2LCA1MywgMjUxLCAxMzksIDU2LCAzOSwgMjQ3LCAyMTUsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgCi0gICAgMzksIDIwOCwgMjI4LCA1NiwgMzksIDIyNSwgMTcxLCA1NiwgMzksIDEyNCwgMjI3LCAxMTQsIDM5LCA1MiwgMTI0LCAyMjcsIAotICAgIDExNCwgMzksIDIwOCwgMjI4LCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDE2MywgCi0gICAgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDE2MywgMjEyLCAxLCAyMTksIAotICAgIDE5OSwgMzksIDUwLCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIwOCwgNTYsIDM5LCA1MSwgNTYsIAotICAgIDM5LCAyMTQsIDE3NiwgNTYsIDM5LCAyMDMsIDE5NywgNTUsIDM5LCA4MCwgMjA4LCAyMjcsIDM5LCA1MiwgMjE5LCAxOTgsIAotICAgIDM5LCAyMzcsIDI1NCwgMTQzLCA4MiwgMzksIDI1MSwgMTI2LCAxNDMsIDgyLCAzOSwgMzAsIDIxOCwgMjM5LCAzOSwgMzAsIAotICAgIDIyOCwgMjUyLCAzOSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzksIDMwLCAyMDIsIDIyMSwgMzksIDI0NywgMjA4LCA1NSwgCi0gICAgMzksIDI0MSwgMzUsIDIsIDU2LCAzOSwgNTIsIDgwLCAyMjcsIDExNSwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIDU2LCAzOSwgCi0gICAgMjIxLCAxNjYsIDIwOCwgMjI4LCA1NSwgMzksIDIzNiwgMTIyLCA1NSwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTUsIAotICAgIDM5LCA0OSwgNTAsIDUzLCA1NiwgMzksIDE3NywgNTMsIDU2LCAzOSwgMjM4LCA0LCAyMzAsIDk2LCAzOSwgNTAsIDI1MCwgCi0gICAgOTUsIDU1LCAzOSwgNDksIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgMjQwLCAzNiwgMzksIDIwMywgMTk3LCA1NiwgMzksIDQ5LCAKLSAgICAyNTAsIDk1LCA1NiwgMzksIDUwLCAyNTAsIDk1LCA1NiwgMzksIDUwLCAyNTAsIDk1LCAyNSwgMTEyLCAyNTAsIDk1LCA1NiwgCi0gICAgMzksIDUwLCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDcwLCA4NywgMjE2LCAxNiwgMzksIDI1MCwgNjAsIDU2LCAzOSwgNTIsIAotICAgIDIxNSwgMjUzLCA1NiwgMzksIDIwMiwgMzAsIDU1LCAzOSwgNTIsIDI0NywgMjE1LCA1NiwgMzksIDUyLCAyNDcsIDIxNCwgCi0gICAgMzksIDUyLCAyMjUsIDE3MCwgMzksIDUyLCAyMjUsIDE3MSwgNTYsIDM5LCA1MiwgMjA4LCAyMjcsIDM5LCA1MiwgMjMwLCAKLSAgICAyMzksIDI0NywgMjE0LCAzOSwgNTIsIDg2LCA1MywgNTYsIDM5LCA4LCA1LCAxLCA2MywgMzksIDgsIDUsIDEsIDc0LCAzOSwgCi0gICAgOCwgNSwgMSwgNzUsIDM5LCA4LCA1LCAxLCA3OCwgMzksIDgsIDUsIDEsIDY4LCAzOSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDM5LCAKLSAgICA4LCA1LCAxLCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjM3LCAxNzEsIDM5LCA4LCA1LCAxLCAyMjYsIDE4NSwgMzksIDgsIDUsIAotICAgIDEsIDE0NiwgMzksIDgsIDUsIDEsIDIxMCwgNjksIDM5LCA4LCA1LCAxLCAyMDYsIDE2NCwgMzksIDgsIDUsIDEsIDIwMywgCi0gICAgMTk2LCAzMCwgNiwgMSwgMjM3LCAyMCwgMzAsIDUsIDEsIDIzNywgMjAsIDMwLCA2LCAxLCAyNTAsIDEyNiwgMjE0LCAyNDYsIAotICAgIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjE0LCAyNDYsIDMwLCAyMjEsIDQ0LCA1NCwgMzAsIDIyNiwgMjUxLCAyMjEsIDQ0LCA1NCwgCi0gICAgMzAsIDYsIDEsIDIxOSwgMTI2LCAyNDMsIDE5OSwgMzAsIDUsIDEsIDIxOSwgMTI2LCAyNDMsIDE5OSwgMzAsIDIwMiwgMjIxLCAKLSAgICAzMCwgNSwgMjE2LCA3MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDUsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIAotICAgIDE0NSwgOTcsIDMwLCA1LCAyMTYsIDczLCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgMjE3LCA0NywgCi0gICAgODIsIDMwLCA2LCAxLCAyMDIsIDIyNywgMzAsIDIwOCwgMTQ5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDI1MCwgMjAzLCAyMDksIDE2MywgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwOCwgCi0gICAgMTQ5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwOCwgMTQ5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA2LCAKLSAgICAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwOCwgMTQ5LCAKLSAgICAzMCwgNiwgMSwgMjUxLCAyLCAzMCwgNiwgMSwgMjQ4LCAxMDYsIDMwLCA2LCAxLCAyMzgsIDIzNSwgMzAsIDYsIDEsIDI0NCwgCi0gICAgMzcsIDMwLCA2LCAxLCAyNDEsIDM3LCAzMCwgNiwgMSwgMjAyLCA4MywgMzAsIDYsIDEsIDI0MCwgMjQ4LCAzMCwgNiwgMSwgCi0gICAgMjA5LCA3NCwgMzAsIDYsIDEsIDIzMCwgMjMwLCAzMCwgNiwgMSwgMjI5LCAyNDcsIDMwLCA2LCAxLCAyMjgsIDI0LCAzMCwgCi0gICAgNiwgMSwgMjIzLCAyNDYsIDMwLCA2LCAxLCAyMjEsIDg0LCAzMCwgNiwgMSwgMjAzLCAxNzAsIDMwLCA2LCAxLCAyMjAsIDM0LCAKLSAgICAzMCwgNiwgMSwgMjE4LCAxNjcsIDMwLCA2LCAxLCAyMTYsIDU5LCAzMCwgNiwgMSwgMjEyLCAxNDQsIDMwLCA2LCAxLCAyMDksIAotICAgIDIwNywgMzAsIDYsIDEsIDIwNiwgMjE2LCAzMCwgNiwgMSwgMjE4LCAxOTIsIDMwLCA2LCAxLCAyNDYsIDE0MiwgMzAsIDYsIAotICAgIDEsIDIxNywgMjAyLCAzMCwgNiwgMSwgMjIwLCAzNiwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNCwgMzAsIDYsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDEsIAotICAgIDM4LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAKLSAgICAyMDgsIDE0OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjUxLCAKLSAgICAyLCAzMCwgNSwgMSwgMjQ4LCAxMDYsIDMwLCA1LCAxLCAyMzgsIDIzNSwgMzAsIDUsIDEsIDI0NCwgMzcsIDMwLCA1LCAxLCAKLSAgICAyNDEsIDM3LCAzMCwgNSwgMSwgMjAyLCA4MywgMzAsIDUsIDEsIDI0MCwgMjQ4LCAzMCwgNSwgMSwgMjA5LCA3NCwgMzAsIDUsIAotICAgIDEsIDIzMCwgMjMwLCAzMCwgNSwgMSwgMjI5LCAyNDcsIDMwLCA1LCAxLCAyMjgsIDI0LCAzMCwgNSwgMSwgMjIzLCAyNDYsIAotICAgIDMwLCA1LCAxLCAyMjEsIDg0LCAzMCwgNSwgMSwgMjAzLCAxNzAsIDMwLCA1LCAxLCAyMjAsIDM0LCAzMCwgNSwgMSwgMjE4LCAKLSAgICAxNjcsIDMwLCA1LCAxLCAyMTYsIDU5LCAzMCwgNSwgMSwgNDYsIDIxMiwgMTQ0LCAzMCwgNSwgMSwgMjEyLCAxNDQsIDMwLCAKLSAgICA1LCAxLCAyMDksIDIwNywgMzAsIDUsIDEsIDIwNiwgMjE2LCAzMCwgNSwgMSwgMjE4LCAxOTIsIDMwLCA1LCAxLCAyNDYsIAotICAgIDE0MiwgMzAsIDUsIDEsIDIxNywgMjAyLCAzMCwgNSwgMSwgMjIwLCAzNiwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIAotICAgIDIyNCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNCwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgCi0gICAgNSwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA2LCAyMzAsIAotICAgIDE5LCA5NywgMzAsIDI0OCwgMTA3LCA5NywgMzAsIDIwOSwgNzUsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDIzNiwgMTE2LCA5NywgCi0gICAgMzAsIDIwNiwgMjE3LCAzLCAyNTEsIDEyNiwgMjUsIDIzNiwgMTE2LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDIzNiwgMTE2LCA5NywgMzAsIDIxOCwgMTkzLCA5NywgMzAsIDIxOCwgMTY4LCA5NywgMzAsIDIzMCwgMTksIDk3LCAKLSAgICAzMCwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCAxLCAyMTEsIDcxLCAzMCwgCi0gICAgNSwgMSwgMjExLCA3MSwgMzAsIDEsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjQzLCAxOTksIDMwLCAxLCAyMjksIDAsIDMwLCA1LCAKLSAgICAxLCAyMjksIDAsIDMwLCAxLCAyMTQsIDI0NiwgMzAsIDUsIDEsIDIxNCwgMjQ2LCA4NCwgNiwgMSwgMjEzLCAzNSwgODQsIDUsIAotICAgIDEsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDAsIDQ1LCA4NCwgNSwgMSwgMjQwLCA0NSwgODQsIDYsIDEsIDIyOSwgMTI3LCA4NCwgCi0gICAgNSwgMSwgMjI5LCAxMjcsIDg0LCA2LCAxLCAyMzYsIDEwNywgODQsIDUsIDEsIDIzNiwgMTA3LCA4NCwgNiwgMSwgMjM4LCAKLSAgICAyMzAsIDg0LCA1LCAxLCAyMzgsIDIzMCwgODQsIDYsIDEsIDIxMywgMSwgODQsIDUsIDEsIDIxMywgMSwgODQsIDYsIDEsIAotICAgIDI0NCwgNTIsIDg0LCA1LCAxLCAyNDQsIDUyLCAzMCwgMjI5LCAyNDgsIDk3LCAzMCwgMjE2LCA2MCwgOTcsIDMwLCAyMjYsIAotICAgIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgMSwgMjAyLCAyMjcsIDMwLCA2LCAyMDksIDc1LCA5NywgMzAsIDIyNiwgMjIxLCAKLSAgICAyNDEsIDM4LCA5NywgMzAsIDIxNiwgNzMsIDIyNiwgMjIxLCAyNDEsIDM4LCA5NywgMzAsIDYsIDEsIDIxMiwgMjQyLCAzMCwgCi0gICAgNSwgMSwgMjEyLCAyNDIsIDMwLCA2LCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMSwgMjE0LCAyNDMsIDMwLCA1LCAKLSAgICAxLCAyMTQsIDI0MywgMzAsIDIxNiwgNjAsIDMsIDIxMSwgMzIsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjI2LCAyMjEsIDIxMiwgCi0gICAgMTQ1LCA5NywgMzAsIDYsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAyMTYsIDczLCAyNDIsIDgzLCAKLSAgICAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNiwgMSwgMjMwLCAKLSAgICAyMzQsIDM2LCA2LCAxLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIzOCwgNTIsIDM2LCA2LCAxLCAyMDcsIDExLCAyMzEsIDExMCwgCi0gICAgMzYsIDYsIDEsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNiwgMSwgMjAzLCAxMSwgMzYsIDYsIDEsIAotICAgIDIzMCwgMTYxLCAzNiwgNiwgMSwgMjI3LCA4MCwgMzYsIDYsIDEsIDIyMiwgNDEsIDM2LCA2LCAxLCAyMDgsIDgsIDM2LCA2LCAKLSAgICAxLCAyMjksIDQ5LCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNiwgMSwgMjEyLCAyMjgsIDY4LCAzNiwgCi0gICAgNiwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCA2MywgMzYsIDYsIDEsIDI0OCwgMTYyLCAzNiwgNiwgMSwgMjA2LCA1NSwgMzYsIAotICAgIDYsIDEsIDIzOCwgMTA1LCAzNiwgNiwgMSwgMjQ0LCA3NSwgMzYsIDYsIDEsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjAyLCA3MSwgCi0gICAgMzYsIDYsIDEsIDIwMiwgOTIsIDM2LCA2LCAxLCA3NSwgMzYsIDYsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDYsIDEsIDE3MywgCi0gICAgMzYsIDYsIDEsIDI0MSwgMTIyLCAzNiwgNiwgMSwgMjQxLCAxMDMsIDM2LCA2LCAxLCAyNDEsIDkyLCAzNiwgNiwgMSwgNzgsIAotICAgIDM2LCA2LCAxLCAyMTksIDM0LCAzNiwgNiwgMSwgMjQxLCAyOCwgMzYsIDYsIDEsIDI0MSwgMTcsIDM2LCA2LCAxLCAyMDksIAotICAgIDE4NywgMzYsIDYsIDEsIDY4LCAzNiwgNiwgMSwgMjQxLCAxNTQsIDM2LCA2LCAxLCAxNTIsIDM2LCA2LCAxLCAyMDgsIDE0LCAKLSAgICAzNiwgNiwgMSwgMjQ2LCAxNzAsIDM2LCA2LCAxLCAyMTMsIDkwLCAzNiwgNiwgMSwgMjEzLCA0NiwgMzYsIDYsIDEsIDIzNywgCi0gICAgOTEsIDU0LCAzNiwgNiwgMSwgMjAzLCAzMCwgMzYsIDYsIDEsIDIxMiwgNywgNTQsIDM2LCA2LCAxLCA3NCwgMzYsIDYsIDEsIAotICAgIDIwMiwgMjEzLCAzNiwgNiwgMSwgMTk4LCAzNiwgNSwgMSwgNjMsIDM2LCA1LCAxLCAyNDgsIDE2MiwgMzYsIDUsIDEsIDIwNiwgCi0gICAgNTUsIDM2LCA1LCAxLCAyMzgsIDEwNSwgMzYsIDUsIDEsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMzEsIDExMCwgMzYsIDUsIDEsIAotICAgIDIwMiwgNzEsIDM2LCA1LCAxLCAyMDIsIDkyLCAzNiwgNSwgMSwgNzUsIDM2LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA1LCAKLSAgICAxLCAxNzMsIDM2LCA1LCAxLCAyNDEsIDEyMiwgMzYsIDUsIDEsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjQxLCA5MiwgMzYsIDUsIAotICAgIDEsIDc4LCAzNiwgNSwgMSwgMjE5LCAzNCwgMzYsIDUsIDEsIDI0MSwgMjgsIDM2LCA1LCAxLCAyNDEsIDE3LCAzNiwgNSwgMSwgCi0gICAgMjA5LCAxODcsIDM2LCA1LCAxLCA2OCwgMzYsIDUsIDEsIDI0MSwgMTU0LCAzNiwgNSwgMSwgMTUyLCAzNiwgNSwgMSwgMjA4LCAKLSAgICAxNCwgMzYsIDUsIDEsIDI0NiwgMTcwLCAzNiwgNSwgMSwgMjEzLCA5MCwgMzYsIDUsIDEsIDIxMywgNDYsIDM2LCA1LCAxLCAKLSAgICAyMzcsIDkxLCA1NCwgMzYsIDUsIDEsIDIwMywgMzAsIDM2LCA1LCAxLCAyMTIsIDcsIDU0LCAzNiwgNSwgMSwgNzQsIDM2LCAKLSAgICA1LCAxLCAyMDIsIDIxMywgMzYsIDUsIDEsIDE5OCwgMzYsIDUsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDUsIDEsIAotICAgIDIzMCwgMjM0LCAzNiwgNSwgMSwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMzgsIDUyLCAzNiwgNSwgMSwgMjA3LCAxMSwgMjMxLCAKLSAgICAxMTAsIDM2LCA1LCAxLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDUsIDEsIDIwMywgMTEsIDM2LCAKLSAgICA1LCAxLCAyMzAsIDE2MSwgMzYsIDUsIDEsIDIyNywgODAsIDM2LCA1LCAxLCAyMjIsIDQxLCAzNiwgNSwgMSwgMjA4LCA4LCAKLSAgICAzNiwgNSwgMSwgMjI5LCA0OSwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDUsIDEsIDIxMiwgMjI4LCAKLSAgICA2OCwgMzYsIDUsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIyMCwgMzYsIDM2LCA2LCAxLCAKLSAgICAyMDMsIDY2LCAzNiwgNSwgMSwgMjAzLCA2NiwgMzYsIDYsIDEsIDIzMCwgMjI4LCA3NCwgMzYsIDUsIDEsIDIzMCwgMjI4LCAKLSAgICA3NCwgMzYsIDYsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDIyOCwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCAKLSAgICA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAotICAgIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjI4LCAKLSAgICAyMjUsIDM2LCA1LCAxLCAyMjgsIDIyNSwgMzYsIDYsIDEsIDIxNywgMjAyLCAzNiwgNSwgMSwgMjE3LCAyMDIsIDM2LCA2LCAKLSAgICAxLCAyMzksIDIzNSwgMzYsIDUsIDEsIDIzOSwgMjM1LCAzNiwgNiwgMSwgMjMwLCAxODYsIDM2LCA1LCAxLCAyMzAsIDE4NiwgCi0gICAgMzYsIDYsIDEsIDIzMCwgMTg3LCAzLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNSwgMSwgMjMwLCAxODcsIDMsIDUyLCAKLSAgICAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA2LCAxLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjA3LCAxNCwgMzYsIDYsIDEsIDIxNSwgCi0gICAgMTkxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjE1LCAxOTEsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjAsIDM3LCAzLCAyMDgsIAotICAgIDE5NywgMzYsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTk3LCAzNiwgNiwgMSwgMjE5LCAyMjQsIDM2LCA1LCAxLCAyMTksIAotICAgIDIyNCwgMzYsIDYsIDEsIDIyOSwgMCwgMzYsIDUsIDEsIDIyOSwgMCwgMzYsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIwOCwgCi0gICAgMTk3LCAzOSwgMzYsIDIxOSwgMTQxLCAzOSwgMzYsIDI0NCwgMTQyLCAyMTgsIDcxLCAzOSwgMzYsIDIxNywgMTk2LCAyMTgsIAotICAgIDcxLCAzOSwgMzYsIDIxOCwgNTUsIDM5LCAzNiwgMjM2LCAxMiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjI0LCAxMTQsIDU0LCAKLSAgICAzNiwgNiwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgCi0gICAgMywgMjA5LCAyNDgsIDM2LCA2LCAxLCAyMTMsIDEzOSwgNTQsIDM2LCA1LCAxLCAyMTMsIDEzOSwgNTQsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDUsIDEsIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNiwgMSwgMjM4LCAxMDYsIAotICAgIDMsIDIwNiwgMjE1LCAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDIwNiwgMjE1LCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDk1LCAKLSAgICAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgCi0gICAgMjM4LCAxMDYsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgNzIsIAotICAgIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgCi0gICAgMjMwLCA0NCwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgODAsIDk1LCAzNiwgNiwgMSwgMjMwLCA0NCwgMywgCi0gICAgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA5NSwgMzYsIDYsIDEsIDI0OCwgMjE0LCAxNzMsIDM2LCA1LCAxLCAyNDgsIAotICAgIDIxNCwgMTczLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAzMiwgMjQxLCA5MywgMjM4LCAxMDUsIDM2LCA1LCAzMiwgMjQxLCA5MywgMjM4LCAxMDUsIDM2LCA2LCAxLCAKLSAgICAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjUxLCAxNDUsIAotICAgIDE1MiwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAxNTIsIDM2LCA2LCAxLCAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCi0gICAgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjA5LCAxODgsIAotICAgIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDUsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNiwgMSwgMjExLCAKLSAgICA1MywgMTA2LCAzLCA5NSwgMzYsIDUsIDEsIDIxMSwgNTMsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgCi0gICAgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAyNDQsIDIwLCAzNiwgNiwgMzIsIDIwOSwgMTg4LCAyMDgsIDE0LCAKLSAgICAzNiwgNSwgMzIsIDIwOSwgMTg4LCAyMDgsIDE0LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKLSAgICAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyNDYsIDE3MSwgCi0gICAgMywgODAsIDk1LCAzNiwgNiwgMSwgMjEzLCAxMiwgMzYsIDUsIDEsIDIxMywgMTIsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQ2LCAKLSAgICAxNzAsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzAsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzEsIDMsIDI0NCwgCi0gICAgMjAsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCAxLCAyMTksIDEzMywgMzYsIDYsIDEsIAotICAgIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMzAsIDQ0LCAKLSAgICAzLCAxMTMsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMjA5LCAyNDgsIDM2LCAKLSAgICA1LCAxLCAyNDEsIDEyMywgMywgMjA5LCAyNDgsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAotICAgIDkzLCAzLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDIwOSwgCi0gICAgMjQ4LCAzNiwgNiwgMSwgMjI5LCAxMzgsIDI0NiwgMTcwLCAzNiwgNSwgMSwgMjI5LCAxMzgsIDI0NiwgMTcwLCAzNiwgNiwgCi0gICAgMSwgMjQxLCAxMDQsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCAxMDQsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjE5LCAKLSAgICAxMzMsIDM2LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDM2LCA2LCAxLCAzNCwgCi0gICAgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAzNCwgMywgMjQzLCAyMzEsIDM2LCA2LCAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNSwgCi0gICAgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIzMSwgMTExLCAzLCAKLSAgICAyNDcsIDIxNCwgMzYsIDYsIDEsIDIxNCwgMTkyLCAzNiwgNSwgMSwgMjE0LCAxOTIsIDM2LCA2LCAxLCAyMTQsIDE5MywgMywgCi0gICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMTQsIDE5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCAKLSAgICA1LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDEsIDI1MiwgMzYsIDUsIDEsIDI1MSwgCi0gICAgMTQ1LCAyNDEsIDI1MiwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgCi0gICAgMjQ4LCAyMjUsIDc4LCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDc4LCAzNiwgNiwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA1LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIAotICAgIDM2LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MCwgMzYsIDUsIDEsIDEwNiwgMywgCi0gICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDYsIAotICAgIDEsIDEwNiwgMywgNTIsIDE2NSwgMzYsIDUsIDEsIDEwNiwgMywgNTIsIDE2NSwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAKLSAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIAotICAgIDIwLCAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIAotICAgIDUsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCAKLSAgICA1LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA1LCAKLSAgICAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDk1LCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIAotICAgIDk1LCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA2LCAxLCAKLSAgICAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjAyLCAKLSAgICAyMSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwMiwgMjEsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDUsIDEsIAotICAgIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNiwgMSwgMjI5LCAxMCwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyNywgCi0gICAgODAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDYsIDEsIAotICAgIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjA4LCAKLSAgICAxOTEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDgsIDE5MSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA1LCAxLCAKLSAgICAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIAotICAgIDM2LCA2LCAxLCAyMjcsIDE2MSwgMzYsIDUsIDEsIDIyNywgMTYxLCAzNiwgNiwgMSwgMjE2LCA2MSwgMzYsIDUsIDEsIDIxNiwgCi0gICAgNjEsIDM2LCA2LCAxLCAyMDMsIDk5LCAzNiwgNSwgMSwgMjAzLCA5OSwgMzYsIDYsIDEsIDIxNywgMTI2LCAzNiwgNSwgMSwgCi0gICAgMjE3LCAxMjYsIDM2LCA2LCAxLCAyMDQsIDYyLCAzNiwgNSwgMSwgMjA0LCA2MiwgMzYsIDYsIDEsIDI1MSwgMjYsIDE3MywgCi0gICAgMzYsIDUsIDEsIDI1MSwgMjYsIDE3MywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgCi0gICAgMTIzLCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgCi0gICAgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgCi0gICAgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA2LCAxLCAyNDEsIDIzNywgCi0gICAgMzYsIDUsIDEsIDI0MSwgMjM3LCAzNiwgNiwgMSwgMjQ0LCAxMjQsIDM2LCA1LCAxLCAyNDQsIDEyNCwgMzYsIDYsIDEsIAotICAgIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDE3OCwgNiwgMSwgMjUwLCA1LCAKLSAgICAxNzgsIDYsIDEsIDI0OCwgMTIyLCAxNzgsIDYsIDEsIDIzOCwgNjksIDE3OCwgNiwgMSwgMjQ0LCAyMTIsIDE3OCwgNiwgMSwgCi0gICAgMjQxLCAxNjcsIDE3OCwgNiwgMSwgMjAyLCAxMTYsIDE3OCwgNiwgMSwgMjQxLCAxNDcsIDE3OCwgNiwgMSwgMjQwLCAyNTAsIAotICAgIDE3OCwgNiwgMSwgMTM1LCAxNzgsIDYsIDEsIDIwMiwgNzEsIDE3OCwgNiwgMSwgMjMxLCAxOSwgMTc4LCA2LCAxLCAyMjcsIAotICAgIDgzLCAxNzgsIDYsIDEsIDIwMywgMTc0LCAxNzgsIDYsIDEsIDI0NywgOTIsIDE3OCwgNiwgMSwgMjI5LCAxODAsIDE3OCwgNiwgCi0gICAgMSwgMjM2LCAxMzYsIDE3OCwgNiwgMSwgMjMwLCAxODEsIDE3OCwgNiwgMSwgMjM4LCAxMTYsIDE3OCwgNiwgMSwgMjQ2LCAKLSAgICAxNjAsIDE3OCwgNiwgMSwgMjI0LCAyNDAsIDE3OCwgNiwgMSwgMjAzLCAxMSwgMTc4LCA2LCAxLCAyMjEsIDE1MiwgMTc4LCAKLSAgICA2LCAxLCAyMTMsIDkwLCAxNzgsIDYsIDEsIDIwNSwgMTg5LCAxNzgsIDYsIDEsIDI0NiwgMTk5LCAxNzgsIDYsIDEsIDIxOSwgCi0gICAgMTYsIDE3OCwgNiwgMSwgMjMwLCAxNDQsIDE3OCwgNiwgMSwgMjE2LCAyMjAsIDE3OCwgNiwgMSwgMjE0LCAxNTUsIDE3OCwgCi0gICAgNiwgMSwgMjA1LCAyMzQsIDE3OCwgNiwgMSwgMjA4LCAxOTQsIDE3OCwgNiwgMSwgMjE2LCAxMjIsIDE3OCwgNiwgMSwgMjQ1LCAKLSAgICAyNTQsIDE3OCwgNiwgMSwgMjAyLCAyNTIsIDE3OCwgNiwgMSwgMjE4LCAxMDIsIDE3OCwgNiwgMSwgMjI5LCAxOTEsIDE3OCwgCi0gICAgNiwgMSwgMjIwLCA2MCwgMTc4LCA2LCAxLCAyNDAsIDQ3LCAxNzgsIDY1LCAxLCA0OSwgMTYyLCAyMTUsIDI1MiwgMTc4LCAKLSAgICAyNTAsIDE2MCwgMTc4LCAyNDEsIDk2LCA4MiwgMTc4LCAyNDAsIDIxMiwgODIsIDE3OCwgMjQ1LCAyMzMsIDE3OCwgMjE3LCAKLSAgICA0NywgODIsIDE3OCwgMjUxLCAxNDYsIDgyLCAxNzgsIDUsIDEsIDI1MCwgNSwgMTc4LCA1LCAxLCAyNDgsIDEyMiwgMTc4LCAKLSAgICA1LCAxLCAyMzgsIDY5LCAxNzgsIDUsIDEsIDI0NCwgMjEyLCAxNzgsIDUsIDEsIDI0MSwgMTY3LCAxNzgsIDUsIDEsIDIwMiwgCi0gICAgMTE2LCAxNzgsIDUsIDEsIDI0MSwgMTQ3LCAxNzgsIDUsIDEsIDI0MCwgMjUwLCAxNzgsIDUsIDEsIDEzNSwgMTc4LCA1LCAxLCAKLSAgICAyMDIsIDcxLCAxNzgsIDUsIDEsIDIzMSwgMTksIDE3OCwgNSwgMSwgMjI3LCA4MywgMTc4LCA1LCAxLCAyMDMsIDE3NCwgCi0gICAgMTc4LCA1LCAxLCAyNDcsIDkyLCAxNzgsIDUsIDEsIDIyOSwgMTgwLCAxNzgsIDUsIDEsIDIzNiwgMTM2LCAxNzgsIDUsIDEsIAotICAgIDIzMCwgMTgxLCAxNzgsIDUsIDEsIDIzOCwgMTE2LCAxNzgsIDUsIDEsIDI0NiwgMTYwLCAxNzgsIDUsIDEsIDIyNCwgMjQwLCAKLSAgICAxNzgsIDUsIDEsIDIwMywgMTEsIDE3OCwgNSwgMSwgMjIxLCAxNTIsIDE3OCwgNSwgMSwgMjEzLCA5MCwgMTc4LCA1LCAxLCAKLSAgICAyMDUsIDE4OSwgMTc4LCA1LCAxLCAyNDYsIDE5OSwgMTc4LCA1LCAxLCAyMTksIDE2LCAxNzgsIDUsIDEsIDIzMCwgMTQ0LCAKLSAgICAxNzgsIDUsIDEsIDIxNiwgMjIwLCAxNzgsIDUsIDEsIDIxNCwgMTU1LCAxNzgsIDUsIDEsIDIwNSwgMjM0LCAxNzgsIDUsIDEsIAotICAgIDIwOCwgMTk0LCAxNzgsIDUsIDEsIDIxNiwgMTIyLCAxNzgsIDUsIDEsIDI0NSwgMjU0LCAxNzgsIDUsIDEsIDIwMiwgMjUyLCAKLSAgICAxNzgsIDUsIDEsIDIxOCwgMTAyLCAxNzgsIDUsIDEsIDIyOSwgMTkxLCAxNzgsIDUsIDEsIDIyMCwgNjAsIDE3OCwgNSwgMSwgCi0gICAgMjQwLCA0NywgMTc4LCA1LCAzMiwgMjQxLCAxNjgsIDIwMiwgMjUyLCAxNzgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNzgsIAotICAgIDIzNSwgMjIwLCAyMTYsIDE1LCAxNzgsIDI0MCwgMjQ2LCA1NCwgMjI3LCAyMjEsIDE3OCwgMjQwLCAyNDYsIDU0LCAxNzgsIAotICAgIDI0MiwgNjAsIDU0LCAxMTAsIDI1MSwgMTM5LCAyNDAsIDI0MSwgMTEwLCAyNTEsIDEzOSwgMjE0LCAxNTYsIDExMCwgMjUxLCAKLSAgICAxMzksIDIxMywgNjksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAyMTcsIDEwOSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIAotICAgIDIzOCwgMjU0LCAxMTAsIDI1MSwgMTM5LCAyMDgsIDIwOSwgMTEwLCAyNTEsIDEzOSwgMjE2LCA3MCwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjAyLCAxMDEsIDExMCwgMjUxLCAxMzksIDIxOSwgNjEsIDExMCwgMjUxLCAxMzksIDIwMywgMjMsIDExMCwgMjUxLCAxMzksIAotICAgIDIwOSwgMTE1LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2NywgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjgsIDIyMywgMjA4LCAKLSAgICAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2NSwgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMTAsIDIxOSwgOTAsIDExMCwgMjUxLCAxMzksIAotICAgIDIwOSwgMTU4LCAyMzgsIDE4MywgMTEwLCAyNTEsIDEzOSwgMjE5LCA0MCwgMTEwLCAyNTEsIDEzOSwgMjUwLCA0MywgMjM3LCAKLSAgICAxNTIsIDExMCwgMjUxLCAxMzksIDIyMywgMjE4LCAxMTAsIDI1MSwgMTM5LCAyMjUsIDE0NSwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjI0LCAyMjksIDExMCwgMjUxLCAxMzksIDIyNCwgMjMwLCAyMjksIDE5MiwgMTEwLCAyNTEsIDEzOSwgMjQ0LCAxNTEsIAotICAgIDExMCwgMjUxLCAxMzksIDIxNywgMTIxLCAxMTAsIDI1MSwgMTM5LCAyMDksIDE1OCwgMjE3LCAxMDQsIDExMCwgMjUxLCAKLSAgICAxMzksIDIwMywgMzMsIDI0OCwgMTIzLCAyMDIsIDIzMywgMTEwLCAyNTEsIDEzOSwgMjIwLCA0MywgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjMxLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjQ0LCA1MywgMTEwLCAyNTEsIDEzOSwgMjAyLCAyOCwgMTEwLCAxMzEsIDIyNSwgCi0gICAgNzUsIDI0NiwgNjEsIDExMCwgMjE4LCA2MywgMjEzLCAxNSwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTQsIDE1NiwgMTEwLCAKLSAgICAyMTgsIDYzLCAyMzcsIDgyLCAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIAotICAgIDIzNiwgMjMyLCAxMTAsIDIxOCwgNjMsIDIwOCwgMTEsIDExMCwgMjE4LCA2MywgMjE0LCAxNTYsIDExMCwgMjE4LCA2MywgCi0gICAgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAyMzYsIDEyOCwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMzYsIDEyOSwgMjM3LCA4NCwgMzUsIDIwNiwgNTksIDExMCwgMjE4LCA2MywgMjE3LCA1MSwgMTEwLCAyMTgsIDYzLCAyNDQsIAotICAgIDE5OCwgMjE5LCAyNDUsIDIyNSwgMTA1LCAxMTAsIDIxOCwgNjMsIDIyNCwgMjE5LCAxMTAsIDIxNywgMTc5LCAyMjUsIDEwMiwgCi0gICAgMTEwLCAyMTgsIDYzLCAyMTYsIDIwMCwgMTEwLCAyMTcsIDE3OSwgMjE5LCA2MywgMTEwLCAyMTgsIDYzLCAyMTMsIDAsIAotICAgIDI0MywgODUsIDExMCwgMjE4LCA2MywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMjE3LCAxNzksIDIxMiwgOCwgMjE5LCA1NiwgCi0gICAgMTEwLCAxMzEsIDIwNiwgMjIxLCAyNDMsIDg1LCAxMTAsIDEzMSwgMjI2LCAyNTEsIDI0MywgODUsIDExMCwgMjE3LCAxNzksIAotICAgIDIyMSwgNDEsIDIzNywgMTUxLCAxMTAsIDIxOCwgNjMsIDIxNywgMTE1LCAyMTcsIDEwOSwgMTEwLCAxLCAyNTEsIDMwLCAKLSAgICAxMTAsIDEsIDI0OCwgMTA4LCAxMTAsIDEsIDIzOCwgNjcsIDExMCwgMSwgMjQ0LCAxNzgsIDExMCwgMSwgMjM3LCA2NywgCi0gICAgMTEwLCAxLCAyMDYsIDU5LCAxMTAsIDEsIDIwMiwgOTUsIDExMCwgMSwgMjM3LCAyMSwgMTEwLCAxLCAyMDksIDEzMiwgMTEwLCAKLSAgICAxLCAyMDIsIDIzNiwgMTEwLCAxLCA0NiwgMjMwLCAyMiwgMTEwLCAxLCAyMzAsIDIyLCAxMTAsIDEsIDIyOCwgMjAsIDExMCwgCi0gICAgMSwgNDYsIDIyNCwgMjQ3LCAxMTAsIDEsIDIyNCwgMjQ3LCAxMTAsIDEsIDQ2LCAyMjEsIDQwLCAxMTAsIDEsIDIyMSwgNDAsIAotICAgIDExMCwgMSwgMjE0LCAyNDksIDExMCwgMSwgMjUwLCAzLCAxMTAsIDEsIDQ2LCAyMTksIDM0LCAxMTAsIDEsIDIxOSwgMzQsIAotICAgIDExMCwgMSwgNDYsIDIwOCwgMTUsIDExMCwgMSwgMjA4LCAxNSwgMTEwLCAxLCAyMTcsIDc0LCAxMTAsIDEsIDIxNiwgOTEsIAotICAgIDExMCwgMSwgMjEyLCAyNTUsIDExMCwgMSwgMjA5LCAyMDMsIDExMCwgMzIsIDIwMywgOSwgNTIsIDIwNiwgNTksIDExMCwgCi0gICAgMzIsIDIwMywgOSwgMjA2LCA2MCwgMjAyLCAyMzYsIDExMCwgMzIsIDIwMywgOSwgNTIsIDIwMiwgMjM2LCAxMTAsIDIxNywgCi0gICAgMTc5LCAyMzgsIDE2NywgMTEwLCAyMTcsIDE3OSwgMjM4LCAxNjUsIDEwLCA0MiwgNTQsIDEwLCAyLCAyMTQsIDI0MiwgMTAsIAotICAgIDIzOSwgMTcwLCAyMjUsIDg4LCAxMCwgMiwgMjE1LCAyNCwgMTAsIDIsIDIxNCwgMjQ1LCAxMCwgNDIsIDEzMSwgNTUsIDI1MCwgCi0gICAgMTQwLCAyNDUsIDEwNiwgMjE1LCAyMDQsIDI1MCwgMTQwLCAyMzksIDE0MCwgMjE1LCAyMDQsIDEwLCAyMTYsIDE2NSwgMjUwLCAKLSAgICAxNDAsIDIxOCwgMjQ3LCAyMjQsIDExNiwgNTQsIDI1MCwgMTQwLCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAKLSAgICAyNTEsIDg2LCA1NCwgMTAsIDI0NSwgMjMzLCAxMCwgMjQ0LCAxMzgsIDIxMywgMTMwLCAxMCwgMjE4LCA2NSwgMjA2LCA0MCwgCi0gICAgNTQsIDEwLCAyLCAyMjQsIDk1LCAxMCwgMiwgMjE1LCAzLCAyNTEsIDMzLCAyMDQsIDg2LCAxMCwgMiwgMjUxLCAzMywgMjUwLCAKLSAgICA2NCwgMTAsIDIsIDIxNiwgMTk4LCAyNTEsIDMyLCAxMCwgMiwgMjE2LCAyMDYsIDI1MSwgMTIsIDI1MCwgMjEwLCAxMCwgMiwgCi0gICAgMjA5LCAyNDAsIDEwLCA1LCAxMzgsIDIwOSwgMjUxLCAxMCwgNSwgMTM4LCAzMiwgMTM3LCAzLCAyMjgsIDI5LCAzLCAyMDMsIAotICAgIDQ3LCAxMCwgNSwgMTM4LCAyMDIsIDEwNywgMTAsIDUsIDI0MCwgNzEsIDEwLCA1LCAyNDQsIDE3MiwgMTAsIDUsIDIyOSwgCi0gICAgMjI5LCAxMCwgMjEzLCAxNDMsIDEwLCAxLCA4MiwgMTAsIDIwOCwgNzAsIDcwLCAyMTcsIDE3OSwgODIsIDEwLCAyMTcsIDQ3LCAKLSAgICA4MiwgMTAsIDEsIDIyOSwgMjMzLCAyMDMsIDQ3LCAxMCwgMSwgMjM3LCAxMjcsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCAKLSAgICA1NSwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgCi0gICAgMTM3LCAzLCAyMzcsIDEyOCwgNTYsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjUxLCAzMCwgMTAsIDEsIAotICAgIDI0OCwgMTM4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTgsIDEwLCAxLCAyMDksIDE2OSwgMTAsIDEsIDIwOSwgODgsIDEwLCAKLSAgICAxLCAyMzAsIDE1OCwgMTAsIDEsIDIzNywgMTQ4LCAxMCwgMSwgMjI5LCAxNDAsIDEwLCAxLCAyNDQsIDE4NCwgMTAsIDEsIAotICAgIDIwOSwgMTAwLCAxMCwgMSwgMjE2LCAxMjIsIDEwLCAxLCAyMDIsIDEwNywgMTAsIDEsIDIxNCwgMTYxLCAxMCwgMSwgMjEzLCAKLSAgICAzOSwgMTAsIDEsIDIxNSwgMjgsIDEwLCAxLCAyNDQsIDIwNywgMTAsIDEsIDIwOSwgMjUxLCAxMCwgMSwgMjAyLCAxMTAsIAotICAgIDEwLCAxLCAyNTEsIDU5LCAxMCwgMSwgMjM4LCAxMTQsIDEwLCAxLCAyMjksIDE5MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgCi0gICAgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAotICAgIDIwOSwgMjA5LCAxMCwgMSwgMjQwLCA0NywgMTAsIDEsIDIxNywgMTE5LCAxMCwgMSwgMjMwLCAyMiwgMTAsIDEsIDIyOCwgCi0gICAgMjgsIDEwLCAxLCAyMjUsIDUsIDEwLCAxLCAyMjEsIDE3OCwgMTAsIDEsIDIzNywgNDMsIDEwLCAxLCAyMDQsIDcwLCAxMCwgCi0gICAgMSwgMTM3LCAyMjUsIDEyOSwgMTAsIDEsIDIwMywgNDcsIDEwLCAyNDAsIDY5LCAxMCwgMjQ0LCAxNzAsIDEwLCAyMjksIAotICAgIDIyNywgMTAsIDI0MCwgNzEsIDEwLCAyNDQsIDE3MiwgMTAsIDIyOSwgMjI5LCAxMCwgMjEzLCA4MCwgMTAsIDIxMCwgMjIyLCAKLSAgICAxMCwgMjI1LCAxNjQsIDU1LCAxMCwgMjM3LCAxMjgsIDU1LCAxMCwgMjM3LCAxMjgsIDU2LCAxMCwgMjEwLCAyNDYsIDI1MSwgCi0gICAgMzAsIDEwLCAyMzAsIDIzOSwgMjQ0LCAxNzIsIDEwLCAxMzEsIDIyMSwgMTc5LCAyMzgsIDg1LCAxMCwgMjAxLCAyNDgsIDEwLCAKLSAgICAyMiwgMiwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIDIzMCwgMjM5LCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgCi0gICAgNzAsIDU2LCAxMCwgMjE2LCA3MywgMjQ0LCAxNzIsIDEwLCAyNDAsIDcyLCAzLCAxMjAsIDI0MywgODMsIDEwLCAyMDQsIDcyLCAKLSAgICAyMzcsIDEyOCwgNTYsIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjUwLCAxNDAsIDE3LCAxMDUsIDI1MCwgMTQwLCAxNywgCi0gICAgMTA4LCAyNTAsIDE0MCwgMTcsIDE0NywgMjUwLCAxNDAsIDE3LCAxNDksIDI1MCwgMTQwLCAxNywgMTcwLCAyNTAsIDE0MCwgCi0gICAgMTcsIDE5NSwgMjUwLCAxNDAsIDE3LCAyMTMsIDExMSwgMjUwLCAxNDAsIDE3LCAxOTksIDI1MCwgMTQwLCAxNywgMjIyLCAKLSAgICA2MywgMTAsIDIxOCwgMjQ2LCA1NCwgMTAsIDI0NCwgNjgsIDIxMywgMTMwLCAxMCwgMjA5LCAzNSwgMjEzLCAxMzAsIDEwLCAKLSAgICAyMzksIDIzMywgMjE4LCA2MSwgMjExLCA5NCwgMTAsIDEsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMSwgMjQzLCA4NCwgCi0gICAgMjE3LCAxMTksIDEwLCAxLCAyMTAsIDE5OSwgMjUxLCAzMCwgMTAsIDEsIDEzNywgMjA0LCA4NywgMTAsIDEsIDEzNywgMywgCi0gICAgMjA0LCA3MiwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM3LCAzLCAyMDQsIDcyLCAyMzcsIDEyOCwgNTYsIDEwLCAxLCAxMzgsIAotICAgIDIzNywgMTI3LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjUxLCAzMCwgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDIwNCwgNzAsIAotICAgIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDIwMywgNDcsIDEwLCAxLCAyMDcsIAotICAgIDIzMywgMTAsIDEsIDIwNywgMjMxLCAxMCwgMSwgMjQ4LCAxNDgsIDEwLCAxLCAyMDksIDE3MCwgMywgMjE1LCAyNTIsIDEwLCAKLSAgICAxLCAyMDksIDE3MCwgMywgMTI2LCAxODcsIDg3LCAyNDIsIDY4LCAxMCwgMSwgMjE5LCAxNiwgMTAsIDEsIDIwOSwgMTY3LCAKLSAgICAxMCwgMSwgMjQ4LCAxMzYsIDEwLCAxLCAxNTEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIAotICAgIDgwLCA1NSwgMTAsIDEsIDIyMCwgMjU0LCAxMCwgMSwgMjQyLCA1LCAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMDksIDE5MSwgMTAsIDEsIDIwOSwgMTg5LCAxMCwgMSwgMjQ0LCAxMTUsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjE1LCAKLSAgICAyNTIsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDUsIAotICAgIDIwOSwgMjUxLCAxMCwgMSwgMjQ0LCAxOTEsIDEwLCAxLCAyNDQsIDExNywgMTAsIDEsIDI0MiwgMzMsIDEwLCAxLCAyNDQsIAotICAgIDE4NSwgMywgMTI2LCAxODcsIDg3LCAyNDIsIDY4LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjE1LCAxNzcsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMTYsIDEyMywgMywgMjE1LCAKLSAgICAyNTIsIDEwLCAxLCAyMTYsIDEyMywgMywgNzAsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIAotICAgIDEsIDIxNiwgMTIzLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMTIwLCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjMwLCAxNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAxLCAyMTQsIAotICAgIDE2MiwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIAotICAgIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTUsIDI5LCAzLCAKLSAgICAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTI2LCAKLSAgICAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEsIAotICAgIDI0MCwgNDgsIDMsIDcwLCAyMjQsIDUsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDU2LCAxMCwgMSwgMjA2LCA0OCwgCi0gICAgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxOSwgMTQsIDEwLCAxLCAyMTcsIDEyMCwgMywgNzAsIAotICAgIDU1LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTg5LCAxMCwgMSwgMjEwLCAxNjksIAotICAgIDIzMCwgMjIsIDEwLCAxLCAyMzAsIDIzLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIzMCwgMjMsIDMsIDcwLCA1NSwgMTAsIDEsIAotICAgIDIyMiwgMjA1LCAxMCwgMSwgMjMwLCAyMywgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjM4LCAyNTEsIDEwLCAxLCAyMzgsIAotICAgIDI1MiwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjIsIDEyNiwgMTAsIDEsIDIzOCwgMjUyLCAzLCAxMjAsIDE4NywgNTYsIDEwLCAKLSAgICAxLCAyMzcsIDIxNywgMTAsIDEsIDIzOCwgMjUyLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCA1LCAyMDYsIAotICAgIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDcwLCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIAotICAgIDIyOCwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA3MCwgNTYsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgMjM4LCA4NSwgMTAsIDEsIDIxNSwgMjMwLCAxMCwgMSwgMjIxLCAxNzksIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTA5LCAxMCwgMSwgMjA5LCAxOTIsIDMsIDcwLCA1NSwgCi0gICAgMTAsIDEsIDIzNywgNDQsIDMsIDg5LCA1NSwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzYsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIAotICAgIDM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgMjM4LCAzNiwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3MywgMTAsIDEsIDIyMCwgNzMsIDEwLCAxLCA2OCwgMTAsIDEsIAotICAgIDIwMiwgMjEzLCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTMsIDEwLCAxLCAyMDQsIDcxLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMDYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgMjAzLCA0NywgMTAsIDEsIDg5LCAzLCAyMDksIDI0OCwgMTAsIDEsIDg5LCAKLSAgICAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIwNCwgNzEsIDMsIDcwLCA1NSwgMTAsIDEsIDc0LCAxMCwgMSwgODksIDMsIDEyNiwgCi0gICAgMTg3LCA1NiwgMTAsIDEsIDg5LCAyNDgsIDIyMywgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDU1LCAxMCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDEwLCAxLCAyNTEsIDEwOSwgMTAsIDUsIDEzOCwgMzIsIDIxNSwgMjksIDMsIDIyOCwgMjksIAotICAgIDMsIDEzNywgMjI1LCAxMjksIDEwLCA1LCAxMzgsIDMyLCAyMTcsIDEyMCwgMywgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEyOSwgCi0gICAgMTAsIDUsIDEzOCwgODMsIDgxLCAxOCwgMTAsIDUsIDEzOCwgMjI4LCAyOSwgMjUxLCAzMCwgMTAsIDUsIDEzOCwgMjMwLCAKLSAgICAxNTgsIDEwLCA1LCAxMzgsIDEyNiwgMjQzLCA4MywgMTAsIDUsIDEzOCwgMjE0LCAxNjEsIDEwLCAyNDEsIDg0LCA3NiwgCi0gICAgMjUwLCA3LCAxMCwgMjExLCA5MCwgNzYsIDIxNSwgMTQzLCAyNDEsIDEyMywgMjM2LCAyMjcsIDEwLCA1LCAxMzgsIDIxNSwgCi0gICAgMTg5LCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyMDYsIDIxOSwgMjE2LCAxNDIsIDIwMiwgODQsIDEwLCA1LCAxMzgsIDI0MywgCi0gICAgODQsIDIzNywgNjUsIDc2LCAyMjksIDE0MCwgMTAsIDUsIDEzOCwgODMsIDY0LCAxOCwgMTAsIDUsIDEyNCwgMjE0LCAxNjEsIAotICAgIDEwLCA1LCAxMzgsIDIyNSwgMTY1LCAxMCwgNSwgMjA0LCA3MCwgMTAsIDUsIDIwMywgNDcsIDEwLCA1LCAxMzgsIDIwMywgCi0gICAgNDcsIDEwLCA1LCAxMzgsIDIyMSwgMTc4LCAxMCwgMjE4LCA5NywgNzYsIDIxNSwgMTQsIDEwLCAyNDEsIDk0LCAyNDYsIAotICAgIDIxOCwgMTI0LCAyMTEsIDYxLCAxMCwgMjQxLCA5NCwgMjQ2LCAyMTgsIDEzOCwgMjExLCA2MSwgMTAsIDIxNSwgMTg5LCAKLSAgICAxMzgsIDIxMSwgNjIsIDMsIDI0MCwgOCwgMjQ2LCAyMTcsIDEwLCA1LCAxMjQsIDIyNSwgNSwgMTAsIDEsIDI0NCwgMTg1LCAKLSAgICAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAxLCAyMTYsIDEyMywgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMDUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDEwOCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDksIDI0MCwgCi0gICAgMjAyLCAyNTAsIDE0MCwgMTcsIDE3MCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTk1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAyMTMsIDExMSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTk5LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAyMjIsIAotICAgIDYzLCAxMCwgMSwgMjEzLCA0MCwgMywgNzAsIDU2LCAxMCwgMSwgMjQ0LCAyMDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIzOCwgCi0gICAgMTE1LCAzLCA3MCwgNTYsIDEwLCAyLCAyMTIsIDEyMywgMjUwLCAyMzUsIDEwLCAyLCAyMTIsIDEyMywgMjE4LCAyNywgMjI0LCAKLSAgICAyNDAsIDEwLCAxLCAyMzcsIDQ0LCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDIxMCwgODksIDI0MSwgODQsIDc2LCAyMTksIAotICAgIDg4LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMjQ4LCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAxOTUsIDI0NSwgMjQyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDIsIDIxMCwgCi0gICAgODksIDIzNiwgMTA2LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgMjIyLCAyMTAsIDg5LCAKLSAgICAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjEwLCAxOTUsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIAotICAgIDIyMiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyNDUsIDE4NiwgCi0gICAgMjEwLCA4OSwgMjM3LCA4OSwgMjIwLCA5MSwgMjEwLCA4OSwgMjM3LCA4OSwgMjI0LCAyMTcsIDIxMCwgODksIDIzNywgODksIAotICAgIDI1MCwgNjEsIDIxMCwgODksIDI1MSwgMTQ2LCA4MiwgMjEwLCA4OSwgMSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjEwLCAKLSAgICAxOTksIDI1MSwgMzUsIDIxMCwgODksIDEsIDI0OCwgMTA1LCAyMTAsIDg5LCAxLCAyMzgsIDI0MSwgMjEwLCA4OSwgMSwgCi0gICAgMjM4LCAyNDIsIDIzOCwgMjE5LCAyMTAsIDg5LCAxLCAyNDQsIDE4MSwgMjEwLCA4OSwgMSwgMjQzLCA4NCwgMjQ0LCAxODIsIAotICAgIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMzcsIDY3LCAyMTAsIDg5LCAxLCAyMDQsIDcwLCAyMTAsIDg5LCAxLCAyMDIsIDEwNywgCi0gICAgMjEwLCA4OSwgMSwgMjM3LCAxOSwgMjEwLCA4OSwgMSwgMjA5LCAxMjgsIDIxMCwgODksIDEsIDIwOSwgMTI5LCAyMzgsIAotICAgIDIxOSwgMjEwLCA4OSwgMSwgMjAyLCAyMDAsIDIxMCwgODksIDEsIDIwMiwgMjAxLCAyMzcsIDY3LCAyMTAsIDg5LCAxLCAKLSAgICAyMjksIDI1MCwgMjEwLCA4OSwgMSwgMjI4LCAyNywgMjEwLCA4OSwgMSwgMjI0LCAxMTIsIDIxMCwgODksIDEsIDIyMSwgNDAsIAotICAgIDIxMCwgODksIDEsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA0NiwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDc0LCAyMTAsIDg5LCAKLSAgICAxLCAyMTksIDM0LCAyMTAsIDg5LCAxLCAyMTYsIDczLCAyMTksIDM0LCAyMTAsIDg5LCAxLCAyMTUsIDI2LCAyMTAsIDg5LCAKLSAgICAxLCAyMTcsIDExMywgMjEwLCA4OSwgMSwgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIxMiwgMjU1LCAyMTAsIDg5LCAxLCAyMDksIAotICAgIDIwMSwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDI0OCwgOTIsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyMzgsIDExMiwgMjEwLCAKLSAgICA4OSwgMSwgMjE4LCAyMzEsIDI0MywgMjUyLCAyMTAsIDg5LCAyMTcsIDE5MiwgNTUsIDIxMCwgODksIDIxNywgMTkyLCA1NiwgCi0gICAgMjEwLCA4OSwgMjE3LCAxOTIsIDI0MiwgODIsIDIxMCwgODksIDIwMiwgMTEsIDU1LCAyMTAsIDg5LCAyMDIsIDExLCA1NiwgCi0gICAgMjEwLCA4OSwgMjAyLCAxMSwgMjQyLCA4MiwgMjEwLCA4OSwgMjE2LCAxNjEsIDU1LCAyMTAsIDg5LCAyMTYsIDE2MSwgNTYsIAotICAgIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDIzNiwgMTA1LCAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyNTAsIDIxMSwgCi0gICAgMjEwLCA4OSwgMjM3LCA3MCwgNTUsIDIxMCwgODksIDIzNywgNzAsIDU2LCAyMTAsIDg5LCAyMzcsIDY5LCAyNDIsIDgyLCAKLSAgICAyMTAsIDg5LCAyNDEsIDExLCA1NSwgMjEwLCA4OSwgMjQxLCAxMSwgNTYsIDIxMCwgODksIDIxNSwgMTA5LCAyMTAsIDg5LCAKLSAgICAyNDAsIDQxLCAyNDMsIDg1LCAyMTAsIDg5LCAyMTcsIDI1LCAyMTAsIDg5LCAyMTUsIDEzNywgMjEwLCA4OSwgMTIwLCA4MCwgCi0gICAgMTg3LCA1NSwgMjEwLCA4OSwgMTIwLCA4MCwgMTg3LCA1NiwgMjEwLCA4OSwgMTI2LCAxODcsIDU1LCAyMTAsIDg5LCAxMjYsIAotICAgIDE4NywgNTYsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NSwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU2LCAKLSAgICAyMTAsIDg5LCAyMjMsIDE5NCwgMjEwLCA4OSwgMjQ4LCAyMjIsIDIxMCwgODksIDEsIDIxMiwgNCwgMjAyLCA3OCwgMjEwLCAKLSAgICA4OSwgMSwgMjEyLCA0LCAyMjksIDEzMywgMjEwLCA4OSwgMSwgMjEyLCA0LCAyNDAsIDYwLCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyNiwgMTg3LCAyMzYsIDU1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgMjQ4LCAxMjYsIDI1LCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDIzMCwgMjM5LCA1LCAyMDYsIAotICAgIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCA1NSwgCi0gICAgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgMTIwLCAxODcsIAotICAgIDIwNSwgMjQ0LCAyNDgsIDEyNiwgMjUsIDUsIDIwOSwgMjUxLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIzMCwgMjM5LCA1LCAKLSAgICAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgOTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjM5LCAxNDcsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgMjE4LCAKLSAgICA1OSwgMTgzLCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAyNDAsIDQ4LCAKLSAgICAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIAotICAgIDIyOSwgMTkwLCAzLCA3MCwgNTUsIDEwLCAxLCAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIAotICAgIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgODMsIDMsIDcwLCA1NSwgMTAsIDEsIDgzLCAzLCA3MCwgCi0gICAgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDUsIDIwOSwgMjUxLCAKLSAgICAxMCwgMSwgMjIxLCAxNzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgMTQyLCAxMCwgMSwgMjE2LCAxMjMsIAotICAgIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjE0LCAKLSAgICAxNjIsIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTYsIAotICAgIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNCwgMTYyLCAzLCAKLSAgICA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMTAsIDEsIDIwOSwgCi0gICAgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU1LCAxMCwgMSwgMTM3LCAKLSAgICAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgMTM3LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAKLSAgICAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCAKLSAgICA1NSwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDg5LCAKLSAgICAyNDgsIDIyNCwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCA1NSwgMTAsIDEsIDE1MSwgMywgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIAotICAgIDIzOSwgMTQ3LCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAxLCAyMzAsIDIzLCAzLCAKLSAgICAxMjAsIDE4NywgNTUsIDIwOSwgMTA1LCAxLCAyMzcsIDE1NywgMjA5LCAxMDUsIDEsIDIxMywgNDksIDIwOSwgMTA1LCAxLCAKLSAgICAyMjEsIDE3NywgMjA5LCAxMDUsIDEsIDIxNiwgMjE2LCAyMDksIDEwNSwgMSwgMjQ5LCAzMCwgMjA5LCAxMDUsIDEsIDIyNywgCi0gICAgMTU4LCAyMDksIDEwNSwgMSwgMjMwLCAzNywgMjA5LCAxMDUsIDEsIDI1MSwgMTksIDIwOSwgMTA1LCAxLCAyMDYsIDg0LCAKLSAgICAyMDksIDEwNSwgMSwgMjI1LCA0LCAyMDksIDEwNSwgMSwgMjQwLCAxMDYsIDIwOSwgMTA1LCAxLCAyNDMsIDI1NSwgMjA5LCAKLSAgICAxMDUsIDEsIDIwOSwgMTA3LCAyMDksIDEwNSwgMSwgMjI4LCAxMDksIDIwOSwgMTA1LCAxLCAyMzksIDQsIDIwOSwgMTA1LCAKLSAgICAxLCAyMzgsIDQyLCAyMDksIDEwNSwgMSwgMjE0LCAxNjAsIDIwOSwgMTA1LCAxLCAyNDQsIDEzNiwgMjA5LCAxMDUsIDEsIAotICAgIDIwMiwgOTgsIDIwOSwgMTA1LCAxLCAyMDksIDIwMiwgMjA5LCAxMDUsIDEsIDIwMywgMTEwLCAyMDksIDEwNSwgMSwgMjE5LCAKLSAgICA0NywgMjA5LCAxMDUsIDEsIDIzMCwgMTY2LCAyMDksIDEwNSwgMSwgMjQ2LCAxNzMsIDIwOSwgMTA1LCAxLCAyMDcsIDI0MCwgCi0gICAgMjA5LCAxMDUsIDEsIDIzNywgMTEsIDIwOSwgMTA1LCAxLCAyMjksIDE0MywgMjA5LCAxMDUsIDEsIDIwOSwgMTA2LCAyMDksIAotICAgIDEwNSwgMSwgMjAyLCAxMTQsIDIwOSwgMTA1LCAxLCAyMTMsIDM4LCAyMDksIDEwNSwgMSwgMjE1LCAzMiwgMjA5LCAxMDUsIAotICAgIDEsIDI0NCwgMjEwLCAyMDksIDEwNSwgMSwgMTM1LCAyMDksIDEwNSwgMSwgMjAyLCAxNywgMjA5LCAxMDUsIDEsIDI1MSwgCi0gICAgNTYsIDIwOSwgMTA1LCAxLCAyMzgsIDExMywgMjA5LCAxMDUsIDEsIDIxNywgMTIzLCAyMDksIDEwNSwgMSwgMjA0LCAxMDksIAotICAgIDIwOSwgMTA1LCAyNTEsIDE0OCwgMjA5LCAxMDUsIDI1MSwgMjQ2LCAyMDksIDEwNSwgMjM1LCAxNjUsIDIwOSwgMTA1LCAKLSAgICAyNDEsIDE2MCwgMjA5LCAxMDUsIDIwNywgMzIsIDIwOSwgMTA1LCAyMjAsIDE3LCAyMDksIDEwNSwgMjQxLCAxNzAsIDIwOSwgCi0gICAgMTA1LCAyNDAsIDE5MywgMjA5LCAxMDUsIDIyMCwgODgsIDIwOSwgMTA1LCAyMjAsIDk2LCAyMDksIDEwNSwgMjEwLCAyMjIsIAotICAgIDIwOSwgMTA1LCAxLCAyMjMsIDEwNiwgMjIxLCAyNTUsIDE3LCAyMDIsIDg0LCAyMjEsIDI1NSwgMTcsIDEwNSwgMjIxLCAKLSAgICAyNTUsIDE3LCAxMDgsIDIyMSwgMjU1LCAxNywgMTQ3LCAyMjEsIDI1NSwgMTcsIDE0OSwgMjIxLCAyNTUsIDE3LCAxNzAsIAotICAgIDIyMSwgMjU1LCAxNywgMTk1LCAyMjEsIDI1NSwgMTcsIDIxMywgMTExLCAyMjEsIDI1NSwgMTcsIDE5OSwgMjIxLCAyNTUsIAotICAgIDE3LCAyMjIsIDYzLCAyMjEsIDI1NSwgMSwgNjMsIDIyMSwgMjU1LCAxLCAyNDEsIDE2MSwgMjIxLCAyNTUsIDEsIDc1LCAKLSAgICAyMjEsIDI1NSwgMSwgNzQsIDIyMSwgMjU1LCAxLCA2OCwgMjIxLCAyNTUsIDEsIDIyMCwgMTgsIDIyMSwgMjU1LCAxLCA3OCwgCi0gICAgMjIxLCAyNTUsIDEsIDI0NCwgMTk5LCAyMjEsIDI1NSwgMSwgMjIzLCAxNjMsIDIyMSwgMjU1LCAxLCAyNDksIDMyLCAyMjEsIAotICAgIDI1NSwgMSwgMTg1LCAyMjEsIDI1NSwgMSwgMjEwLCAyMiwgMjIxLCAyNTUsIDEsIDIzMCwgMTgxLCAyMjEsIDI1NSwgMSwgCi0gICAgMjQ2LCAxOTksIDIyMSwgMjU1LCAxLCAyNDQsIDIxMiwgMjIxLCAyNTUsIDEsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMSwgMjE1LCAKLSAgICAxODUsIDIyMSwgMjU1LCAxLCAyMTUsIDM2LCAyMjEsIDI1NSwgMSwgMjM4LCAyMDcsIDIyMSwgMjU1LCAxLCAyNDAsIDEwOCwgCi0gICAgMjIxLCAyNTUsIDEsIDE3MywgMjIxLCAyNTUsIDEsIDIyOCwgMTEzLCAyMjEsIDI1NSwgMSwgMjIzLCAxMTEsIDIwMywgMjUyLCAKLSAgICAyMjEsIDI1NSwgMSwgMTkyLCAyMjEsIDI1NSwgMSwgMjIxLCAxMSwgMjIxLCAyNTUsIDEsIDIwMSwgMjAxLCAyMjEsIDI1NSwgCi0gICAgMSwgMTUyLCAyMjEsIDI1NSwgMSwgMjA0LCAxMTEsIDIyMSwgMjU1LCAxLCAxOTgsIDIyMSwgMjU1LCAxLCAyMjEsIDEyLCAKLSAgICAyMDMsIDI1MiwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIzMCwgMTgxLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjQ2LCAxOTksIAotICAgIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMTM4LCAyMDgsIDE2MSwgCi0gICAgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMTI0LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMjE1LCAyNDUsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjQ0LCAxOSwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMzgsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTI0LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDIxNSwgMjQ1LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAyMjMsIDcxLCA4MiwgMjIxLCAyNTUsIDM5LCA1MiwgNzAsIDU1LCAyMjEsIDI1NSwgCi0gICAgMTM4LCAxNDMsIDI1MCwgMTYwLCAyMjEsIDI1NSwgMTI0LCAxNDMsIDI1MCwgMTYwLCAyMjEsIDI1NSwgMTYsIDIyMCwgMTksIAotICAgIDI0NCwgMzMsIDIyMSwgMjU1LCAxNiwgMjM4LCAyMDYsIDIyMSwgMjU1LCAyNDUsIDIzMywgMjIxLCAyNTUsIDI0MCwgMjEyLCAKLSAgICA4MiwgMjIxLCAyNTUsIDIyOCwgODQsIDIxNCwgMjUyLCAxLCAyNTEsIDM3LCAyMTQsIDI1MiwgMSwgMjQ4LCA1MSwgMjE0LCAKLSAgICAyNTIsIDEsIDIzOCwgMjQwLCAyMTQsIDI1MiwgMSwgMjQ0LCAxODMsIDIxNCwgMjUyLCAxLCAyMzAsIDE5MiwgMjE0LCAyNTIsIAotICAgIDEsIDI0OSwgMzAsIDIxNCwgMjUyLCAxLCAyMDIsIDg3LCAyMTQsIDI1MiwgMSwgMjMwLCAyMDEsIDIxNCwgMjUyLCAxLCAKLSAgICAyMDgsIDIwMCwgMjE0LCAyNTIsIDEsIDIwMiwgMTgyLCAyMTQsIDI1MiwgMSwgMjMwLCAzOCwgMjE0LCAyNTIsIDEsIDIyOCwgCi0gICAgMTA2LCAyMTQsIDI1MiwgMSwgMjI0LCAxMTIsIDIxNCwgMjUyLCAxLCAyMjEsIDQwLCAyMTQsIDI1MiwgMSwgMjEyLCAxMjEsIAotICAgIDIxNCwgMjUyLCAxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMSwgMjQwLCAyNiwgMjE0LCAyNTIsIDEsIDIwOCwgMTgsIDIxNCwgCi0gICAgMjUyLCAxLCAyMTcsIDQ0LCAyMTQsIDI1MiwgMSwgMjE1LCAyNDYsIDIxNCwgMjUyLCAxLCAyMTMsIDY2LCAyMTQsIDI1MiwgCi0gICAgMSwgMjEwLCAxNywgMjE0LCAyNTIsIDEzMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEzMSwgMjMxLCA0OCwgMjE0LCAyNTIsIAotICAgIDEzMSwgMjIwLCA4NCwgMjE0LCAyNTIsIDEzMSwgMjQ0LCAxOTcsIDIxNCwgMjUyLCA2NSwgMSwgMjQxLCA0MiwgMjAyLCAKLSAgICAxODIsIDIxNCwgMjUyLCAxMzEsIDI0MSwgNDIsIDIwMiwgMTgyLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNzQsIDIxNCwgCi0gICAgMjUyLCAyMiwgMiwgNzQsIDIxNCwgMjUyLCAyMiwgMiwgMjE5LCAxOTcsIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCAKLSAgICAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjE5LCAxOTcsIDYzLCAyMTQsIAotICAgIDI1MiwgMjIsIDIsIDE2MywgNjMsIDIxNCwgMjUyLCAyMiwgMiwgNjMsIDIxNCwgMjUyLCA2NSwgMSwgMjEyLCAyMjgsIDYzLCAKLSAgICAyMTQsIDI1MiwgMjIsIDIsIDIxMiwgMjI4LCA2MywgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDY4LCAyMTQsIDI1MiwgMjIsIDIsIAotICAgIDY4LCAyMTQsIDI1MiwgNjUsIDEsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNzUsIDIxNCwgMjUyLCAyMiwgMiwgNzUsIAotICAgIDIxNCwgMjUyLCAyMiwgMiwgNzgsIDIxNCwgMjUyLCAyMiwgMiwgMjEwLCAyMjIsIDIxNCwgMjUyLCAxMzEsIDIyMiwgMjIzLCAKLSAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIyMiwgMjIzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MSwgODMsIDIxNCwgMjUyLCAyMTcsIAotICAgIDE3OSwgMjUwLCAyMjIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjQ4LCAyMDIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUwLCA0NCwgCi0gICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDI0MywgMjE0LCAyNTIsIDI1MSwgMTQ2LCA4MiwgMjE0LCAyNTIsIDIxNywgMTc5LCAKLSAgICAyMjQsIDI1MCwgMjE3LCA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDI1LCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxNywgCi0gICAgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAxMTMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjA3LCAxNzAsIDIxNCwgMjUyLCAKLSAgICAyMTcsIDE3OSwgMjUwLCAxMTEsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCA4LCAyMjUsIDc3LCAyMTQsIDI1MiwgMjE3LCAKLSAgICAxNzksIDI1MCwgMjA2LCAyMjUsIDExOCwgMSwgMjM3LCAxMzQsIDIyNSwgMTE4LCAxLCAyNTEsIDIzMiwgMjI1LCAxMTgsIDEsIAotICAgIDI1MSwgODEsIDIyNSwgMTE4LCAxLCAyNTEsIDEyMiwgMjI1LCAxMTgsIDEsIDI1MSwgNzMsIDIyNSwgMTE4LCAxLCAyMDYsIAotICAgIDE4NCwgMjI1LCAxMTgsIDEsIDI1MCwgMSwgMjI1LCAxMTgsIDEsIDIzMCwgMjAxLCAyMjUsIDExOCwgMSwgMjUwLCA0MSwgCi0gICAgMjI1LCAxMTgsIDEsIDI1MSwgNDIsIDIyNSwgMTE4LCAxLCAyNTEsIDQ3LCAyMjUsIDExOCwgMSwgMjUxLCAzOSwgMjI1LCAKLSAgICAxMTgsIDEsIDI1MCwgMjQ3LCAyMjUsIDExOCwgMSwgMjUwLCAyMzEsIDIyNSwgMTE4LCAxLCAyNTAsIDgxLCAyMjUsIDExOCwgCi0gICAgMSwgMjMxLCA0OSwgMjI1LCAxMTgsIDEsIDI1MCwgMTc1LCAyMjUsIDExOCwgMSwgMjUwLCA1MSwgMjI1LCAxMTgsIDEsIAotICAgIDI1MCwgMTQ4LCAyMjUsIDExOCwgMSwgMjUwLCAxNDQsIDIyNSwgMTE4LCAxLCAyNTAsIDc1LCAyMjUsIDExOCwgMSwgMjUwLCAKLSAgICA0OSwgMjI1LCAxMTgsIDEsIDI0MiwgMTgsIDIyNSwgMTE4LCAxLCAyMzAsIDMwLCAyMjUsIDExOCwgMSwgMjUxLCA1OSwgCi0gICAgMjI1LCAxMTgsIDI1MSwgODcsIDgyLCAyMjUsIDExOCwgMjA1LCAxODcsIDgyLCAyMjUsIDExOCwgMjM4LCAxNzksIDgyLCAKLSAgICAyMjUsIDExOCwgMjE3LCAxNzgsIDEwLCAxLCAyNDgsIDEzOSwgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIAotICAgIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDE4NCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyMCwgCi0gICAgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNywgCi0gICAgMTIwLCAzLCA3MCwgNTYsIDEwLCAxLCAyMjgsIDI5LCAzLCA1MiwgMTQyLCAxMCwgMSwgODMsIDMsIDEyNiwgMTg3LCA1NSwgCi0gICAgMTAsIDEsIDg5LCAzLCAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCAyMzcsIDEyOCwgNTUsIDEwLCAxLCA4OSwgMywgMTIwLCAKLSAgICAxODcsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIyNywgMTQsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICAzLCA3MCwgMjA0LCA0LCAxMCwgMSwgMjE1LCAyMTUsIDIwMywgNDcsIDEwLCAxLCAxMjQsIDI1MSwgMzAsIDEwLCAxLCAyNDQsIAotICAgIDE4NSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjM4LCAyNTIsIAotICAgIDMsIDIzMCwgMjM5LCA5NSwgMTAsIDEsIDIxMSwgNTMsIDIwNCwgNzAsIDEwLCAxLCAyMDIsIDEwOCwgMywgMjMwLCAyMzksIAotICAgIDIwNiwgMTY1LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzMCwgMjMsIDMsIDcwLCA1NiwgCi0gICAgMTAsIDIwNywgMTc0LCAyNDQsIDE3MywgNTYsIDEwLCAyNDUsIDkzLCAyNDAsIDcxLCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzIsIAotICAgIDEwLCAyNDUsIDkzLCAyMjksIDIyOSwgMTAsIDI0NSwgOTMsIDI0MCwgNjksIDEwLCAyNDUsIDkzLCAyNDQsIDE3MCwgMTAsIAotICAgIDI0NSwgOTMsIDIyOSwgMjI3LCAxMCwgMTQzLCAxMTgsIDcwLCA1NSwgMTAsIDE0MywgMTIwLCAxODcsIDU1LCAxMCwgMTQzLCAKLSAgICAyMjcsIDE1LCA1NSwgMTAsIDE0MywgMTE4LCA3MCwgNTYsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NiwgMTAsIDE0MywgMjI3LCAKLSAgICAxNSwgNTYsIDEwLCAxNzEsIDI0MCwgNjksIDEwLCAxNzEsIDI0NCwgMTcwLCAxMCwgMTcxLCAyMjksIDIyNywgMTAsIDUsIAotICAgIDEzOCwgMjA0LCA3MCwgMTAsIDI0MCwgNzIsIDMsIDIxNSwgMjUyLCAxMCwgMjQwLCA3MiwgMywgNzAsIDU1LCAxMCwgMjI5LCAKLSAgICAyMzAsIDMsIDcwLCA1NiwgMTAsIDQ5LCAyNTAsIDk1LCA1NSwgMTAsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDQ5LCAyNTAsIAotICAgIDk1LCA1NiwgMTAsIDUwLCAyNTAsIDk1LCA1NiwgMTAsIDUyLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA1MiwgNTAsIDI1MCwgCi0gICAgOTUsIDg3LCAzLCAyNDMsIDg1LCAxMCwgNTAsIDI1MCwgOTUsIDg3LCAzLCAyNDMsIDg1LCAxMCwgMjQ0LCAxNzMsIDMsIAotICAgIDI0MywgODUsIDEwLCAxMzEsIDIxMiwgMTU0LCAyMjEsIDE3OSwgMjM4LCA4NSwgOTIsIDIsIDIzMCwgMjM5LCAyNDcsIDUyLCAKLSAgICA5MiwgMiwgMjQ3LCA1MiwgOTIsIDIsIDI1MCwgMTgwLCA5MiwgMiwgMjA1LCAxOTksIDkyLCAxLCAyMTIsIDIyOCwgNjMsIAotICAgIDkyLCAxLCA2MywgOTIsIDEsIDI1MiwgMjUsIDkyLCAxLCA3NSwgOTIsIDEsIDIzMSwgODMsIDkyLCAxLCA2OCwgOTIsIDEsIAotICAgIDIwNiwgMTc4LCA5MiwgMSwgMTI1LCAxNDYsIDkyLCAxLCAxMjUsIDE1OSwgOTIsIDEsIDI0NywgNTUsIDc0LCA5MiwgMSwgCi0gICAgMjEyLCAyMjgsIDc0LCA5MiwgMSwgNzQsIDkyLCAxLCAyNTEsIDY0LCA5MiwgMSwgMjQ3LCA1NSwgNzgsIDkyLCAxLCAyMTIsIAotICAgIDIyOCwgNzgsIDkyLCAxLCA3OCwgOTIsIDEsIDI1MCwgMzQsIDkyLCAxLCAxNzMsIDkyLCAxLCAyMjksIDE0NCwgOTIsIDEsIAotICAgIDIzOSwgOCwgOTIsIDEsIDIzOCwgMTE5LCA5MiwgMSwgMjIyLCAyMDMsIDkyLCAxLCAyNDcsIDkyLCA5MiwgMSwgMjQ2LCAKLSAgICAxOTksIDkyLCAxLCAyMzAsIDE4MSwgOTIsIDEsIDIzMCwgMTQ5LCA5MiwgMSwgMjIxLCAxMSwgOTIsIDEsIDIwNywgMjQxLCAKLSAgICA5MiwgMSwgMjA3LCAyMjksIDkyLCAxLCAyNDQsIDEyMCwgOTIsIDEsIDI0NCwgMTA0LCA5MiwgMSwgMjIxLCAyMjcsIDkyLCAKLSAgICAxLCAyMTAsIDIyLCA5MiwgMSwgMjA5LCAxMDgsIDkyLCAxLCAyNDQsIDIxMiwgOTIsIDEsIDI0NCwgMSwgOTIsIDEsIDIwMSwgCi0gICAgMjAxLCA5MiwgMSwgMjIxLCAyMDksIDkyLCAxLCAxODUsIDkyLCAxLCAyMTgsIDIwOCwgOTIsIDEsIDI0OSwgMzIsIDkyLCAxLCAKLSAgICAyNDgsIDk4LCA5MiwgMSwgMTkyLCA5MiwgMSwgMTk4LCA5MiwgMSwgMjE2LCAyMjAsIDkyLCAxLCAyMTUsIDE4NSwgOTIsIDEsIAotICAgIDIyOCwgMTEzLCA5MiwgMSwgMjI3LCA3NywgOTIsIDEsIDIyNywgNjgsIDkyLCAxLCAyMDYsIDg2LCA5MiwgMSwgMjEzLCA5MCwgCi0gICAgOTIsIDEsIDIxMSwgMTY0LCA5MiwgMSwgMjE1LCAzNiwgOTIsIDEsIDE1MiwgOTIsIDIyLCAyLCAyMjAsIDczLCA5MiwgMjIsIAotICAgIDIsIDIyMCwgMTYsIDkyLCAyLCAyMjEsIDUxLCA5MiwgMiwgMjUwLCAxNywgOTIsIDIyLCAyLCAyNTIsIDI1LCA5MiwgMjIsIAotICAgIDIsIDc1LCA5MiwgMjIsIDIsIDIzMSwgODMsIDkyLCAyMiwgMiwgNjgsIDkyLCAyMiwgMiwgMjA2LCAxNzgsIDkyLCAyMiwgMiwgCi0gICAgMTI1LCAxNDYsIDkyLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgOTIsIDIyLCAyLCAyNDcsIDU1LCA3NCwgOTIsIDIyLCAyLCAKLSAgICAyMTIsIDIyOCwgNzQsIDkyLCAyMiwgMiwgNzQsIDkyLCAyMiwgMiwgMjUxLCA2NCwgOTIsIDIyLCAyLCAyNDcsIDU1LCA3OCwgCi0gICAgOTIsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDkyLCAyMiwgMiwgNzgsIDkyLCAyMiwgMiwgMjUwLCAzNCwgOTIsIDIsIDIwNSwgCi0gICAgMjA0LCA5MiwgMjIsIDIsIDIxNywgMjI5LCA3NCwgOTIsIDIyLCAyLCAyNTAsIDEzLCA5MiwgMjIwLCAzOSwgOTIsIDIxMSwgCi0gICAgNDIsIDIsIDIwNywgMjYsIDkyLCAyMTEsIDQyLCAyLCAyNTAsIDE4MiwgOTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgOTIsIAotICAgIDI1MSwgMTI2LCAyNTEsIDEzOCwgOTIsIDIyLCAyLCAyNDcsIDU1LCAxNjMsIDc0LCA5MiwgMjIsIDIsIDIwNywgMjQsIDkyLCAKLSAgICAyMiwgMiwgMjA2LCAxNzcsIDkyLCAxLCAyMTcsIDEyNiwgOTIsIDEsIDIyOSwgMTI1LCA5MiwgMSwgMjM4LCA5NCwgOTIsIDEsIAotICAgIDIwMiwgMTE2LCA5MiwgMSwgMjQ0LCAxMDksIDkyLCAxLCAyMTYsIDYxLCA5MiwgMSwgMjQwLCAxMDgsIDkyLCAxLCAyMDIsIAotICAgIDE2OCwgOTIsIDEsIDEyNSwgMjE1LCAxODYsIDkyLCAxLCAxMjUsIDIyNywgNzgsIDkyLCAyMiwgMiwgMTI1LCAxNTksIDkyLCAKLSAgICAyMiwgMiwgMTI1LCAyMjcsIDc4LCA5MiwgMjQ0LCAxNjYsIDkyLCA1MiwgMjQ0LCAxNjYsIDkyLCAxNywgMjAyLCA4NCwgOTIsIAotICAgIDE3LCAxMDUsIDkyLCAxNywgMTA4LCA5MiwgMTcsIDE0NywgOTIsIDE3LCAxNDksIDkyLCAxNywgMTcwLCA5MiwgMTcsIDE5NSwgCi0gICAgOTIsIDE3LCAyMTMsIDExMSwgOTIsIDE3LCAxOTksIDkyLCAxNywgMjIyLCA2MywgOTIsIDI1MSwgMTQ2LCA1NCwgOTIsIDIsIAotICAgIDEzOCwgMjExLCAyMjcsIDI0MywgODUsIDkyLCAxLCAyNDcsIDU1LCA2MywgOTIsIDEsIDIyMCwgNzMsIDkyLCAxLCAyMjAsIAotICAgIDE2LCA5MiwgMSwgMjUwLCAxMywgOTIsIDEsIDIwNywgMjQsIDkyLCAxLCAyMDYsIDE3NywgOTIsIDEsIDIyNSwgODIsIDI0NCwgCi0gICAgMTIwLCA5MiwgMSwgMjAyLCA4MCwgOTIsIDEsIDc5LCAxOTgsIDkyLCAxLCAyMzgsIDE1NSwgOTIsIDEsIDIzMCwgMTI5LCAKLSAgICA5MiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOTIsIDEsIDI0NCwgMTEwLCA5MiwgMSwgMjQ4LCAxOTgsIDE3OSwgMjUwLCAyMDksIAotICAgIDE3OSwgMiwgMjQ3LCA1MiwgMTc5LCAyLCAyNTAsIDE4MCwgMTc5LCAyLCAyMDUsIDE5OSwgMTc5LCAxLCA2MywgMTc5LCAxLCAKLSAgICAyNTIsIDI1LCAxNzksIDEsIDc1LCAxNzksIDEsIDIzMSwgODMsIDE3OSwgMSwgNjgsIDE3OSwgMSwgMjA2LCAxNzgsIDE3OSwgCi0gICAgMSwgMTI1LCAxNDYsIDE3OSwgMSwgMTI1LCAxNTksIDE3OSwgMSwgNzQsIDE3OSwgMSwgMjUxLCA2NCwgMTc5LCAxLCA3OCwgCi0gICAgMTc5LCAxLCAyNTAsIDM0LCAxNzksIDEsIDE3MywgMTc5LCAxLCAyMjksIDE0NCwgMTc5LCAxLCAyMzksIDgsIDE3OSwgMSwgCi0gICAgMjM4LCAxMTksIDE3OSwgMSwgMjIyLCAyMDMsIDE3OSwgMSwgMjQ3LCA5MiwgMTc5LCAxLCAyNDYsIDE5OSwgMTc5LCAxLCAKLSAgICAyMzAsIDE4MSwgMTc5LCAxLCAyMzAsIDE0OSwgMTc5LCAxLCAyMjEsIDExLCAxNzksIDEsIDIwNywgMjQxLCAxNzksIDEsIAotICAgIDIwNywgMjI5LCAxNzksIDEsIDI0NCwgMTIwLCAxNzksIDEsIDI0NCwgMTA0LCAxNzksIDEsIDIyMSwgMjI3LCAxNzksIDEsIAotICAgIDIxMCwgMjIsIDE3OSwgMSwgMjA5LCAxMDgsIDE3OSwgMSwgMjQ0LCAyMTIsIDE3OSwgMSwgMjQ0LCAxLCAxNzksIDEsIDIwMSwgCi0gICAgMjAxLCAxNzksIDEsIDE4NSwgMTc5LCAxLCAyMTgsIDIwOCwgMTc5LCAxLCAyNDksIDMyLCAxNzksIDEsIDI0OCwgOTgsIAotICAgIDE3OSwgMSwgMTkyLCAxNzksIDEsIDE5OCwgMTc5LCAxLCAyMTYsIDIyMCwgMTc5LCAxLCAyMjgsIDExMywgMTc5LCAxLCAKLSAgICAyMTMsIDkwLCAxNzksIDEsIDIxMSwgMTY0LCAxNzksIDEsIDIxNSwgMzYsIDE3OSwgMSwgMTUyLCAxNzksIDIsIDIyMSwgNTEsIAotICAgIDE3OSwgMiwgMjUwLCAxNywgMTc5LCAyMiwgMiwgMjUyLCAyNSwgMTc5LCAyMiwgMiwgNzUsIDE3OSwgMjIsIDIsIDIzMSwgCi0gICAgODMsIDE3OSwgMjIsIDIsIDY4LCAxNzksIDIyLCAyLCAyMDYsIDE3OCwgMTc5LCAyMiwgMiwgMTI1LCAxNDYsIDE3OSwgMjIsIAotICAgIDIsIDEyNSwgMjE1LCAxODYsIDE3OSwgMjIsIDIsIDc0LCAxNzksIDIyLCAyLCAyNTEsIDY0LCAxNzksIDIyLCAyLCA3OCwgCi0gICAgMTc5LCAyMiwgMiwgMjUwLCAzNCwgMTc5LCAyLCAyMDUsIDIwNCwgMTc5LCAxLCAyMjksIDEzNSwgMjEwLCAyMiwgMTc5LCAKLSAgICAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDE3OSwgMSwgMjE1LCAxODUsIDE3OSwgMSwgMjE2LCA2MSwgMTc5LCAxLCAyMDIsIAotICAgIDE2OCwgMTc5LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzksIDEsIDEyNSwgMjI3LCA3OCwgMTc5LCAyMiwgMiwgMTI1LCAxNTksIAotICAgIDE3OSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc5LCAxNywgMjAyLCA4NCwgMTc5LCAxNywgMTA1LCAxNzksIDE3LCAxMDgsIAotICAgIDE3OSwgMTcsIDE0NywgMTc5LCAxNywgMTQ5LCAxNzksIDE3LCAxNzAsIDE3OSwgMTcsIDE5NSwgMTc5LCAxNywgMjEzLCAKLSAgICAxMTEsIDE3OSwgMTcsIDE5OSwgMTc5LCAxNywgMjIyLCA2MywgMTc5LCAxLCAyMTYsIDIyMSwgMywgMTAxLCAyNDMsIDIyNywgCi0gICAgMTc5LCAxLCAyMTYsIDIyMSwgMywgMjI2LCAyNTEsIDI0MywgMjI3LCAxNzksIDIxNSwgMTIwLCA4MiwgMTc5LCAyMTUsIAotICAgIDEyMCwgNTQsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA1LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwOCwgMTc5LCAKLSAgICAyNDUsIDkyLCAyMjEsIDQzLCAxNDcsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTQ5LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIAotICAgIDExOCwgMjI3LCAxODAsIDIwOSwgOTgsIDIwOSwgOTMsIDI0NCwgMzEsIDE3OSwgMjQ1LCA5MiwgMjQ0LCAzMiwgMjEyLCA4MiwgCi0gICAgMTc5LCAyMzAsIDIwMiwgMTc5LCAyMzgsIDIzMSwgODIsIDIzNywgMTk4LCAyLCAyNTEsIDEyMSwgMjQ4LCA2NiwgMjM3LCAKLSAgICAxOTgsIDIsIDI0OCwgNjYsIDIzNywgMTk4LCAyLCAyMDUsIDE5OSwgMjM3LCAxOTgsIDEsIDYzLCAyMzcsIDE5OCwgMSwgCi0gICAgMjUyLCAyNSwgMjM3LCAxOTgsIDEsIDc1LCAyMzcsIDE5OCwgMSwgMjMxLCA4MywgMjM3LCAxOTgsIDEsIDY4LCAyMzcsIAotICAgIDE5OCwgMSwgMjA2LCAxNzgsIDIzNywgMTk4LCAxLCAyNDEsIDE2MSwgMjM3LCAxOTgsIDEsIDI1MSwgNjQsIDIzNywgMTk4LCAKLSAgICAxLCAyMjAsIDE4LCAyMzcsIDE5OCwgMSwgMjUwLCAzNCwgMjM3LCAxOTgsIDEsIDE3MywgMjM3LCAxOTgsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMzcsIDE5OCwgMSwgMjM5LCA4LCAyMzcsIDE5OCwgMSwgMjM4LCAxMTksIDIzNywgMTk4LCAxLCAyMjIsIDIwMywgCi0gICAgMjM3LCAxOTgsIDEsIDI0NywgOTIsIDIzNywgMTk4LCAxLCAyNDYsIDE5OSwgMjM3LCAxOTgsIDEsIDIzMCwgMTgxLCAyMzcsIAotICAgIDE5OCwgMSwgMjMwLCAxNDksIDIzNywgMTk4LCAxLCAyMjEsIDExLCAyMzcsIDE5OCwgMSwgMjA3LCAyNDEsIDIzNywgMTk4LCAKLSAgICAxLCAyMDcsIDIyOSwgMjM3LCAxOTgsIDEsIDI0NCwgMTIwLCAyMzcsIDE5OCwgMSwgMjQ0LCAxMDQsIDIzNywgMTk4LCAxLCAKLSAgICAyMjEsIDIyNywgMjM3LCAxOTgsIDEsIDIxMCwgMjIsIDIzNywgMTk4LCAxLCAyMDksIDEwOCwgMjM3LCAxOTgsIDEsIDI0NCwgCi0gICAgMjEyLCAyMzcsIDE5OCwgMSwgMjQ0LCAxLCAyMzcsIDE5OCwgMSwgMjAxLCAyMDEsIDIzNywgMTk4LCAxLCAxODUsIDIzNywgCi0gICAgMTk4LCAxLCAyMTgsIDIwOCwgMjM3LCAxOTgsIDEsIDI0OSwgMzIsIDIzNywgMTk4LCAxLCAyNDgsIDk4LCAyMzcsIDE5OCwgCi0gICAgMSwgMTkyLCAyMzcsIDE5OCwgMSwgMTk4LCAyMzcsIDE5OCwgMSwgMjE2LCAyMjAsIDIzNywgMTk4LCAxLCAyMjgsIDExMywgCi0gICAgMjM3LCAxOTgsIDEsIDIyNywgNzcsIDIzNywgMTk4LCAxLCAyMDYsIDg2LCAyMzcsIDE5OCwgMSwgMjEzLCA5MCwgMjM3LCAKLSAgICAxOTgsIDEsIDIxNSwgMzYsIDIzNywgMTk4LCAxLCAxNTIsIDIzNywgMTk4LCAyLCAyMjEsIDUxLCAyMzcsIDE5OCwgMjIsIDIsIAotICAgIDI1MiwgMjUsIDIzNywgMTk4LCAyMiwgMiwgNzUsIDIzNywgMTk4LCAyMiwgMiwgMjMxLCA4MywgMjM3LCAxOTgsIDIyLCAyLCAKLSAgICA2OCwgMjM3LCAxOTgsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDIyLCAyLCAyNDEsIDE2MSwgMjM3LCAxOTgsIDIyLCAKLSAgICAyLCAyNTEsIDY0LCAyMzcsIDE5OCwgMjIsIDIsIDIyMCwgMTgsIDIzNywgMTk4LCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAxOTgsIAotICAgIDIsIDIwNSwgMjA0LCAyMzcsIDE5OCwgMiwgMjA3LCAyOCwgMjM3LCAxOTgsIDEsIDIyOSwgMTI1LCAyMzcsIDE5OCwgMSwgCi0gICAgMjM4LCA5NCwgMjM3LCAxOTgsIDEsIDIwMiwgMTE2LCAyMzcsIDE5OCwgMSwgMjE1LCAxODUsIDIzNywgMTk4LCAxLCAyNDAsIAotICAgIDEwOCwgMjM3LCAxOTgsIDE3LCAyMDIsIDg0LCAyMzcsIDE5OCwgMTcsIDEwNSwgMjM3LCAxOTgsIDE3LCAxMDgsIDIzNywgCi0gICAgMTk4LCAxNywgMTQ3LCAyMzcsIDE5OCwgMTcsIDE0OSwgMjM3LCAxOTgsIDE3LCAxNzAsIDIzNywgMTk4LCAxNywgMTk1LCAKLSAgICAyMzcsIDE5OCwgMTcsIDIxMywgMTExLCAyMzcsIDE5OCwgMTcsIDE5OSwgMjM3LCAxOTgsIDE3LCAyMjIsIDYzLCAyMzcsIAotICAgIDE5OCwgMjA4LCAyMDgsIDIzNywgMTk4LCAyNTEsIDEyMCwgMjM3LCAxOTgsIDIzMCwgMjIyLCAyMzcsIDE5OCwgMjA2LCAKLSAgICAyMDYsIDIzNywgMTk4LCAyNDEsIDEzMCwgMjIwLCAyMywgMjM3LCAxOTgsIDIsIDIwMywgODUsIDIzNywgMjEzLCAyLCAyNDcsIAotICAgIDUyLCAyMzcsIDIxMywgMiwgMjUwLCAxODAsIDIzNywgMjEzLCAyLCAyMDUsIDE5OSwgMjM3LCAyMTMsIDEsIDYzLCAyMzcsIAotICAgIDIxMywgMSwgMjUyLCAyNSwgMjM3LCAyMTMsIDEsIDc1LCAyMzcsIDIxMywgMSwgMjMxLCA4MywgMjM3LCAyMTMsIDEsIDY4LCAKLSAgICAyMzcsIDIxMywgMSwgMjA2LCAxNzgsIDIzNywgMjEzLCAxLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDEsIDEyNSwgMTU5LCAyMzcsIAotICAgIDIxMywgMjIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMSwgNzQsIDIzNywgMjEzLCAxLCAyNTEsIDY0LCAyMzcsIDIxMywgCi0gICAgMjIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMSwgNzgsIDIzNywgMjEzLCAxLCAyNTAsIDM0LCAyMzcsIDIxMywgMSwgMTczLCAKLSAgICAyMzcsIDIxMywgMSwgMjI5LCAxNDQsIDIzNywgMjEzLCAxLCAyMzksIDgsIDIzNywgMjEzLCAxLCAyMzgsIDExOSwgMjM3LCAKLSAgICAyMTMsIDEsIDIyMiwgMjAzLCAyMzcsIDIxMywgMSwgMjQ3LCA5MiwgMjM3LCAyMTMsIDEsIDI0NiwgMTk5LCAyMzcsIDIxMywgCi0gICAgMSwgMjMwLCAxODEsIDIzNywgMjEzLCAxLCAyMzAsIDE0OSwgMjM3LCAyMTMsIDEsIDIyMSwgMTEsIDIzNywgMjEzLCAxLCAKLSAgICAyMDcsIDI0MSwgMjM3LCAyMTMsIDEsIDIwNywgMjI5LCAyMzcsIDIxMywgMSwgMjQ0LCAxMjAsIDIzNywgMjEzLCAxLCAyNDQsIAotICAgIDEwNCwgMjM3LCAyMTMsIDEsIDIyMSwgMjI3LCAyMzcsIDIxMywgMSwgMjEwLCAyMiwgMjM3LCAyMTMsIDEsIDIwOSwgMTA4LCAKLSAgICAyMzcsIDIxMywgMSwgMjQ0LCAyMTIsIDIzNywgMjEzLCAxLCAyNDQsIDEsIDIzNywgMjEzLCAxLCAyMDEsIDIwMSwgMjM3LCAKLSAgICAyMTMsIDEsIDE4NSwgMjM3LCAyMTMsIDEsIDIxOCwgMjA4LCAyMzcsIDIxMywgMSwgMjQ5LCAzMiwgMjM3LCAyMTMsIDEsIAotICAgIDI0OCwgOTgsIDIzNywgMjEzLCAxLCAxOTIsIDIzNywgMjEzLCAxLCAxOTgsIDIzNywgMjEzLCAxLCAyMTYsIDIyMCwgMjM3LCAKLSAgICAyMTMsIDEsIDIyOCwgMTEzLCAyMzcsIDIxMywgMSwgMjI3LCA3NywgMjM3LCAyMTMsIDEsIDIwNiwgODYsIDIzNywgMjEzLCAKLSAgICAxLCAyMTMsIDkwLCAyMzcsIDIxMywgMSwgMjExLCAxNjQsIDIzNywgMjEzLCAxLCAyMTUsIDM2LCAyMzcsIDIxMywgMSwgCi0gICAgMTUyLCAyMzcsIDIxMywgMiwgMjIxLCA1MSwgMjM3LCAyMTMsIDIsIDI1MCwgMTcsIDIzNywgMjEzLCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjM3LCAyMTMsIDIyLCAyLCA3NSwgMjM3LCAyMTMsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDIxMywgMjIsIDIsIDY4LCAKLSAgICAyMzcsIDIxMywgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMjIsIDIsIAotICAgIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAyMiwgMiwgNzQsIDIzNywgCi0gICAgMjEzLCAyMiwgMiwgMjUxLCA2NCwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDIyLCAyLCA3OCwgCi0gICAgMjM3LCAyMTMsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDIxMywgMiwgMjA1LCAyMDQsIDIzNywgMjEzLCAyMjAsIDM5LCAyMzcsIAotICAgIDIxMywgMSwgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDEsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAxNywgMjAyLCA4NCwgMjM3LCAyMTMsIDE3LCAKLSAgICAxMDUsIDIzNywgMjEzLCAxNywgMTA4LCAyMzcsIDIxMywgMTcsIDE0NywgMjM3LCAyMTMsIDE3LCAxNDksIDIzNywgMjEzLCAKLSAgICAxNywgMTcwLCAyMzcsIDIxMywgMTcsIDE5NSwgMjM3LCAyMTMsIDE3LCAyMTMsIDExMSwgMjM3LCAyMTMsIDE3LCAxOTksIAotICAgIDIzNywgMjEzLCAxNywgMjIyLCA2MywgMjM3LCAyMTMsIDI1MSwgMTQ2LCA1NCwgMjM3LCAyMTMsIDIxNSwgMTIwLCA1NCwgCi0gICAgMjM3LCAyMTMsIDEsIDIwMiwgODAsIDE5MywgMiwgMjQ3LCA1MiwgMTkzLCAyLCAyNTAsIDE4MCwgMTkzLCAyLCAyMDUsIAotICAgIDE5OSwgMTkzLCAxLCA2MywgMTkzLCAxLCAyNTIsIDI1LCAxOTMsIDEsIDc1LCAxOTMsIDEsIDIzMSwgODMsIDE5MywgMSwgCi0gICAgNjgsIDE5MywgMSwgMjA2LCAxNzgsIDE5MywgMSwgMTI1LCAxNDYsIDE5MywgMSwgMTI1LCAxNTksIDE5MywgMSwgNzQsIAotICAgIDE5MywgMSwgMjUxLCA2NCwgMTkzLCAxLCA3OCwgMTkzLCAxLCAyNTAsIDM0LCAxOTMsIDEsIDE3MywgMTkzLCAxLCAyMjksIAotICAgIDE0NCwgMTkzLCAxLCAyMzksIDgsIDE5MywgMSwgMjM4LCAxMTksIDE5MywgMSwgMjIyLCAyMDMsIDE5MywgMSwgMjQ3LCA5MiwgCi0gICAgMTkzLCAxLCAyNDYsIDE5OSwgMTkzLCAxLCAyMzAsIDE4MSwgMTkzLCAxLCAyMzAsIDE0OSwgMTkzLCAxLCAyMjEsIDExLCAKLSAgICAxOTMsIDEsIDIwNywgMjQxLCAxOTMsIDEsIDIwNywgMjI5LCAxOTMsIDEsIDI0NCwgMTIwLCAxOTMsIDEsIDI0NCwgMTA0LCAKLSAgICAxOTMsIDEsIDIyMSwgMjI3LCAxOTMsIDEsIDIxMCwgMjIsIDE5MywgMSwgMjA5LCAxMDgsIDE5MywgMSwgMjQ0LCAyMTIsIAotICAgIDE5MywgMSwgMjQ0LCAxLCAxOTMsIDEsIDIwMSwgMjAxLCAxOTMsIDEsIDE4NSwgMTkzLCAxLCAyMTgsIDIwOCwgMTkzLCAxLCAKLSAgICAyNDksIDMyLCAxOTMsIDEsIDI0OCwgOTgsIDE5MywgMSwgMTkyLCAxOTMsIDEsIDE5OCwgMTkzLCAxLCAyMTYsIDIyMCwgCi0gICAgMTkzLCAxLCAyMjgsIDExMywgMTkzLCAxLCAyMjcsIDc3LCAxOTMsIDEsIDIwNiwgODYsIDE5MywgMSwgMjEzLCA5MCwgMTkzLCAKLSAgICAxLCAyMTEsIDE2NCwgMTkzLCAxLCAyMTUsIDM2LCAxOTMsIDEsIDE1MiwgMTkzLCAyLCAyMjEsIDUxLCAxOTMsIDIsIDI1MCwgCi0gICAgMTcsIDE5MywgMjIsIDIsIDI1MiwgMjUsIDE5MywgMjIsIDIsIDc1LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAxOTMsIDIyLCAyLCAKLSAgICA2OCwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDE5MywgMjIsIDIsIDEyNSwgMTQ2LCAxOTMsIDIyLCAyLCAxMjUsIDIxNSwgCi0gICAgMTg2LCAxOTMsIDIyLCAyLCA3NCwgMTkzLCAyMiwgMiwgMjUxLCA2NCwgMTkzLCAyMiwgMiwgNzgsIDE5MywgMjIsIDIsIAotICAgIDI1MCwgMzQsIDE5MywgMiwgMjA1LCAyMDQsIDE5MywgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxOTMsIDI1MCwgMzUsIDIyNywgCi0gICAgMTk2LCA4MiwgMTkzLCAxLCAyMTUsIDE4NSwgMTkzLCAxLCAyMTYsIDYxLCAxOTMsIDEsIDIwMiwgMTY4LCAxOTMsIDEsIAotICAgIDEyNSwgMjE1LCAxODYsIDE5MywgMSwgMTI1LCAyMjcsIDc4LCAxOTMsIDIyLCAyLCAxMjUsIDE1OSwgMTkzLCAyMiwgMiwgCi0gICAgMTI1LCAyMjcsIDc4LCAxOTMsIDE3LCAyMDIsIDg0LCAxOTMsIDE3LCAxMDUsIDE5MywgMTcsIDEwOCwgMTkzLCAxNywgMTQ3LCAKLSAgICAxOTMsIDE3LCAxNDksIDE5MywgMTcsIDE3MCwgMTkzLCAxNywgMTk1LCAxOTMsIDE3LCAyMTMsIDExMSwgMTkzLCAxNywgCi0gICAgMTk5LCAxOTMsIDE3LCAyMjIsIDYzLCAxOTMsIDIzMCwgMjAyLCAxOTMsIDEsIDIwNCwgMTExLCAxOTMsIDIzOSwgMTM4LCAKLSAgICAxMTgsIDIxNywgNTUsIDE5MywgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE5MywgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgCi0gICAgMTkzLCAyMzksIDEzOCwgMTE4LCAyMTIsIDgwLCAxOTMsIDIzOSwgMTM4LCAxMTgsIDI0MSwgMTM4LCAxOTMsIDIzOSwgMTM4LCAKLSAgICAxMjYsIDIxMiwgNzksIDQ0LCAyLCAyNTAsIDE4MCwgNDQsIDIsIDIwNSwgMTk5LCA0NCwgMSwgNjMsIDQ0LCAxLCAyNTIsIAotICAgIDI1LCA0NCwgMSwgNzUsIDQ0LCAxLCAyMzEsIDgzLCA0NCwgMSwgNjgsIDQ0LCAxLCAyMDYsIDE3OCwgNDQsIDEsIDc0LCA0NCwgCi0gICAgMSwgMjQxLCAxNjEsIDQ0LCAxLCAyNTEsIDY0LCA0NCwgMSwgNzgsIDQ0LCAxLCAyMjAsIDE4LCA0NCwgMSwgMjUwLCAzNCwgCi0gICAgNDQsIDEsIDE3MywgNDQsIDEsIDIyMiwgMjAzLCA0NCwgMSwgMjQ3LCA5MiwgNDQsIDEsIDIzMCwgMTgxLCA0NCwgMSwgMjIxLCAKLSAgICAxMSwgNDQsIDEsIDIwNywgMjQxLCA0NCwgMSwgMjIxLCAyMjcsIDQ0LCAxLCAyMTAsIDIyLCA0NCwgMSwgMjAxLCAyMDEsIAotICAgIDQ0LCAxLCAyMjEsIDIwOSwgNDQsIDEsIDE4NSwgNDQsIDEsIDE5MiwgNDQsIDEsIDE5OCwgNDQsIDEsIDIxNiwgMjIwLCA0NCwgCi0gICAgMSwgMjE1LCAxODUsIDQ0LCAxLCAyMjgsIDExMywgNDQsIDEsIDIyNywgNzcsIDQ0LCAxLCAyMjcsIDY4LCA0NCwgMSwgMjA2LCAKLSAgICA4NiwgNDQsIDEsIDIxMywgOTAsIDQ0LCAxLCAyMTEsIDE2NCwgNDQsIDEsIDIxNSwgMzYsIDQ0LCAxLCAxNTIsIDQ0LCAyMiwgCi0gICAgMiwgMjUyLCAyNSwgNDQsIDIyLCAyLCA3NSwgNDQsIDIyLCAyLCAyMzEsIDgzLCA0NCwgMjIsIDIsIDY4LCA0NCwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCA0NCwgMjIsIDIsIDc0LCA0NCwgMjIsIDIsIDI0MSwgMTYxLCA0NCwgMjIsIDIsIDI1MSwgNjQsIDQ0LCAyMiwgCi0gICAgMiwgNzgsIDQ0LCAyMiwgMiwgMjIwLCAxOCwgNDQsIDIyLCAyLCAyNTAsIDM0LCA0NCwgMiwgMjA1LCAyMDQsIDQ0LCAyMjAsIAotICAgIDM5LCA0NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCA0NCwgMTcsIDIwMiwgODQsIDQ0LCAxNywgMTA1LCA0NCwgMTcsIDEwOCwgCi0gICAgNDQsIDE3LCAxNDcsIDQ0LCAxNywgMTQ5LCA0NCwgMTcsIDE3MCwgNDQsIDE3LCAxOTUsIDQ0LCAxNywgMjEzLCAxMTEsIDQ0LCAKLSAgICAxNywgMTk5LCA0NCwgMTcsIDIyMiwgNjMsIDQ0LCA0MiwgMjA5LCAxNTIsIDQ0LCA0MiwgMTE4LCAyMzYsIDExLCA0NCwgNDIsIAotICAgIDExOCwgMjA5LCAzNiwgNDQsIDI0NCwgMTMzLCA1NCwgNDQsIDIyNCwgMzgsIDU0LCA0NCwgMjAzLCA1MCwgNTQsIDQ0LCAKLSAgICAyNDQsIDcyLCA1NCwgNDQsIDI0NSwgMTQxLCA1NCwgNDQsIDI1MCwgODIsIDg3LCA1NCwgNDQsIDIxNSwgMTIwLCA1NCwgNDQsIAotICAgIDQyLCA1NCwgMTc1LCAyLCAzOSwgMjQ3LCA1MywgNTUsIDE3NSwgMiwgMjQ3LCA1MiwgMTc1LCAyLCAyNTAsIDE4MCwgMTc1LCAKLSAgICAyLCAyMDUsIDE5OSwgMTc1LCAxLCA2MywgMTc1LCAxLCAyNTIsIDI1LCAxNzUsIDEsIDc1LCAxNzUsIDEsIDIzMSwgODMsIAotICAgIDE3NSwgMSwgNjgsIDE3NSwgMSwgMjA2LCAxNzgsIDE3NSwgMSwgMTI1LCAxNDYsIDE3NSwgMSwgMTI1LCAxNTksIDE3NSwgMSwgCi0gICAgNzQsIDE3NSwgMSwgMjQxLCAxNjEsIDE3NSwgMSwgMjUxLCA2NCwgMTc1LCAxLCA3OCwgMTc1LCAxLCAyMjAsIDE4LCAxNzUsIAotICAgIDEsIDI1MCwgMzQsIDE3NSwgMSwgMTczLCAxNzUsIDEsIDIyOSwgMTQ0LCAxNzUsIDEsIDIzOSwgOCwgMTc1LCAxLCAyMzgsIAotICAgIDExOSwgMTc1LCAxLCAyMjIsIDIwMywgMTc1LCAxLCAyNDcsIDkyLCAxNzUsIDEsIDI0NiwgMTk5LCAxNzUsIDEsIDIzMCwgCi0gICAgMTgxLCAxNzUsIDEsIDIzMCwgMTQ5LCAxNzUsIDEsIDIyMSwgMTEsIDE3NSwgMSwgMjA3LCAyNDEsIDE3NSwgMSwgMjA3LCAKLSAgICAyMjksIDE3NSwgMSwgMjQ0LCAxMjAsIDE3NSwgMSwgMjQ0LCAxMDQsIDE3NSwgMSwgMjIxLCAyMjcsIDE3NSwgMSwgMjEwLCAKLSAgICAyMiwgMTc1LCAxLCAyMDksIDEwOCwgMTc1LCAxLCAyNDQsIDIxMiwgMTc1LCAxLCAyNDQsIDEsIDE3NSwgMSwgMjAxLCAyMDEsIAotICAgIDE3NSwgMSwgMTg1LCAxNzUsIDEsIDIxOCwgMjA4LCAxNzUsIDEsIDI0OSwgMzIsIDE3NSwgMSwgMjQ4LCA5OCwgMTc1LCAxLCAKLSAgICAxOTIsIDE3NSwgMSwgMTk4LCAxNzUsIDEsIDIxNiwgMjIwLCAxNzUsIDEsIDIxNSwgMTg1LCAxNzUsIDEsIDIyOCwgMTEzLCAKLSAgICAxNzUsIDEsIDIyNywgNzcsIDE3NSwgMSwgMjI3LCA2OCwgMTc1LCAxLCAyMDYsIDg2LCAxNzUsIDEsIDIxMywgOTAsIDE3NSwgCi0gICAgMSwgMjExLCAxNjQsIDE3NSwgMSwgMjE1LCAzNiwgMTc1LCAxLCAxNTIsIDE3NSwgMiwgMjUwLCAxNywgMTc1LCAyMiwgMiwgCi0gICAgMjUyLCAyNSwgMTc1LCAyMiwgMiwgNzUsIDE3NSwgMjIsIDIsIDIzMSwgODMsIDE3NSwgMjIsIDIsIDY4LCAxNzUsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgMTc1LCAyMiwgMiwgMTI1LCAxNDYsIDE3NSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE3NSwgMjIsIDIsIAotICAgIDc0LCAxNzUsIDIyLCAyLCAyNDEsIDE2MSwgMTc1LCAyMiwgMiwgMjUxLCA2NCwgMTc1LCAyMiwgMiwgNzgsIDE3NSwgMjIsIAotICAgIDIsIDIyMCwgMTgsIDE3NSwgMjIsIDIsIDI1MCwgMzQsIDE3NSwgMiwgMjA1LCAyMDQsIDE3NSwgMjI3LCAxOTYsIDgyLCAKLSAgICAxNzUsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTc1LCAxLCAyMDgsIDIwLCAxNzUsIDEsIDI0MSwgMjU1LCAxNzUsIDEsIAotICAgIDIxNSwgMTY2LCAxNzUsIDEsIDEyNSwgMjE1LCAxODYsIDE3NSwgMSwgMTI1LCAyMjcsIDc4LCAxNzUsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMTc1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzUsIDE3LCAyMDIsIDg0LCAxNzUsIDE3LCAxMDUsIDE3NSwgMTcsIAotICAgIDEwOCwgMTc1LCAxNywgMTQ3LCAxNzUsIDE3LCAxNDksIDE3NSwgMTcsIDE3MCwgMTc1LCAxNywgMTk1LCAxNzUsIDE3LCAKLSAgICAyMTMsIDExMSwgMTc1LCAxNywgMTk5LCAxNzUsIDE3LCAyMjIsIDYzLCAxNzUsIDIzOSwgMTM4LCAxNywgMjAyLCA4NSwgMzUsIAotICAgIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMTgsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCAKLSAgICA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIAotICAgIDEzOCwgMTcsIDEyNiwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMTgsIDM1LCAKLSAgICAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDI0MCwgMjI1LCAyMTgsIAotICAgIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTI2LCAzNSwgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgCi0gICAgMiwgMjA3LCAxNjQsIDIwMCwgMiwgMjQ3LCA1MiwgMjAwLCAyLCAyNTAsIDE4MCwgMjAwLCAyLCAyMDUsIDE5OSwgMjAwLCAxLCAKLSAgICA2MywgMjAwLCAxLCAyNTIsIDI1LCAyMDAsIDEsIDc1LCAyMDAsIDEsIDIzMSwgODMsIDIwMCwgMSwgNjgsIDIwMCwgMSwgCi0gICAgMjA2LCAxNzgsIDIwMCwgMSwgMTI1LCAxNDYsIDIwMCwgMSwgMTI1LCAxNTksIDIwMCwgMSwgNzQsIDIwMCwgMSwgMjQxLCAKLSAgICAxNjEsIDIwMCwgMSwgMjUxLCA2NCwgMjAwLCAxLCA3OCwgMjAwLCAxLCAyMjAsIDE4LCAyMDAsIDEsIDI1MCwgMzQsIDIwMCwgCi0gICAgMSwgMTczLCAyMDAsIDEsIDIyOSwgMTQ0LCAyMDAsIDEsIDIzOSwgOCwgMjAwLCAxLCAyMzgsIDExOSwgMjAwLCAxLCAyMjIsIAotICAgIDIwMywgMjAwLCAxLCAyNDcsIDkyLCAyMDAsIDEsIDI0NiwgMTk5LCAyMDAsIDEsIDIzMCwgMTgxLCAyMDAsIDEsIDIzMCwgCi0gICAgMTQ5LCAyMDAsIDEsIDIyMSwgMTEsIDIwMCwgMSwgMjA3LCAyNDEsIDIwMCwgMSwgMjA3LCAyMjksIDIwMCwgMSwgMjQ0LCAKLSAgICAxMjAsIDIwMCwgMSwgMjQ0LCAxMDQsIDIwMCwgMSwgMjIxLCAyMjcsIDIwMCwgMSwgMjEwLCAyMiwgMjAwLCAxLCAyMDksIAotICAgIDEwOCwgMjAwLCAxLCAyNDQsIDIxMiwgMjAwLCAxLCAyNDQsIDEsIDIwMCwgMSwgMjAxLCAyMDEsIDIwMCwgMSwgMTg1LCAKLSAgICAyMDAsIDEsIDIxOCwgMjA4LCAyMDAsIDEsIDI0OSwgMzIsIDIwMCwgMSwgMjQ4LCA5OCwgMjAwLCAxLCAxOTIsIDIwMCwgMSwgCi0gICAgMTk4LCAyMDAsIDEsIDIxNiwgMjIwLCAyMDAsIDEsIDIxNSwgMTg1LCAyMDAsIDEsIDIyOCwgMTEzLCAyMDAsIDEsIDIyNywgCi0gICAgNzcsIDIwMCwgMSwgMjA2LCA4NiwgMjAwLCAxLCAyMTMsIDkwLCAyMDAsIDEsIDIxMSwgMTY0LCAyMDAsIDEsIDIxNSwgMzYsIAotICAgIDIwMCwgMSwgMTUyLCAyMDAsIDIsIDIyMSwgNTEsIDIwMCwgMiwgMjUwLCAxNywgMjAwLCAyMiwgMiwgMjUyLCAyNSwgMjAwLCAKLSAgICAyMiwgMiwgNzUsIDIwMCwgMjIsIDIsIDIzMSwgODMsIDIwMCwgMjIsIDIsIDY4LCAyMDAsIDIyLCAyLCAyMDYsIDE3OCwgCi0gICAgMjAwLCAyMiwgMiwgMTI1LCAxNDYsIDIwMCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIwMCwgMjIsIDIsIDc0LCAyMDAsIDIyLCAKLSAgICAyLCAyNDEsIDE2MSwgMjAwLCAyMiwgMiwgMjUxLCA2NCwgMjAwLCAyMiwgMiwgNzgsIDIwMCwgMjIsIDIsIDIyMCwgMTgsIAotICAgIDIwMCwgMjIsIDIsIDI1MCwgMzQsIDIwMCwgMiwgMjA1LCAyMDQsIDIwMCwgMjI3LCAxOTYsIDgyLCAyMDAsIDI1MSwgNjUsIAotICAgIDIyNywgMTk2LCA4MiwgMjAwLCAxLCAyNDAsIDEwOCwgMjAwLCAxLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDEsIDEyNSwgMjI3LCAKLSAgICA3OCwgMjAwLCAyMiwgMiwgMTI1LCAxNTksIDIwMCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjAwLCAxNywgMjAyLCA4NCwgCi0gICAgMjAwLCAxNywgMTA1LCAyMDAsIDE3LCAxMDgsIDIwMCwgMTcsIDE0NywgMjAwLCAxNywgMTQ5LCAyMDAsIDE3LCAxNzAsIAotICAgIDIwMCwgMTcsIDE5NSwgMjAwLCAxNywgMjEzLCAxMTEsIDIwMCwgMTcsIDE5OSwgMjAwLCAxNywgMjIyLCA2MywgMjAwLCAyLCAKLSAgICAyMzAsIDEzNSwgMjAwLCAyLCAyMDYsIDIyMiwgMTY0LCAyLCAyNDcsIDUyLCAxNjQsIDIsIDI1MCwgMTgwLCAxNjQsIDIsIAotICAgIDIwNSwgMTk5LCAxNjQsIDEsIDYzLCAxNjQsIDEsIDI1MiwgMjUsIDE2NCwgMSwgNzUsIDE2NCwgMSwgMjMxLCA4MywgMTY0LCAKLSAgICAxLCA2OCwgMTY0LCAxLCAyMDYsIDE3OCwgMTY0LCAxLCAxMjUsIDE0NiwgMTY0LCAxLCAxMjUsIDE1OSwgMTY0LCAxLCA3NCwgCi0gICAgMTY0LCAxLCAyNDEsIDE2MSwgMTY0LCAxLCAyNTEsIDY0LCAxNjQsIDEsIDc4LCAxNjQsIDEsIDIyMCwgMTgsIDE2NCwgMSwgCi0gICAgMjUwLCAzNCwgMTY0LCAxLCAxNzMsIDE2NCwgMSwgMjI5LCAxNDQsIDE2NCwgMSwgMjM5LCA4LCAxNjQsIDEsIDIzOCwgMTE5LCAKLSAgICAxNjQsIDEsIDIyMiwgMjAzLCAxNjQsIDEsIDI0NywgOTIsIDE2NCwgMSwgMjQ2LCAxOTksIDE2NCwgMSwgMjMwLCAxODEsIAotICAgIDE2NCwgMSwgMjMwLCAxNDksIDE2NCwgMSwgMjIxLCAxMSwgMTY0LCAxLCAyMDcsIDI0MSwgMTY0LCAxLCAyMDcsIDIyOSwgCi0gICAgMTY0LCAxLCAyNDQsIDEyMCwgMTY0LCAxLCAyNDQsIDEwNCwgMTY0LCAxLCAyMjEsIDIyNywgMTY0LCAxLCAyMTAsIDIyLCAKLSAgICAxNjQsIDEsIDIwOSwgMTA4LCAxNjQsIDEsIDI0NCwgMjEyLCAxNjQsIDEsIDI0NCwgMSwgMTY0LCAxLCAyMDEsIDIwMSwgCi0gICAgMTY0LCAxLCAyMjEsIDIwOSwgMTY0LCAxLCAxODUsIDE2NCwgMSwgMjE4LCAyMDgsIDE2NCwgMSwgMjQ5LCAzMiwgMTY0LCAxLCAKLSAgICAyNDgsIDk4LCAxNjQsIDEsIDE5MiwgMTY0LCAxLCAxOTgsIDE2NCwgMSwgMjE2LCAyMjAsIDE2NCwgMSwgMjE1LCAxODUsIAotICAgIDE2NCwgMSwgMjI4LCAxMTMsIDE2NCwgMSwgMjI3LCA3NywgMTY0LCAxLCAyMjcsIDY4LCAxNjQsIDEsIDIwNiwgODYsIDE2NCwgCi0gICAgMSwgMjEzLCA5MCwgMTY0LCAxLCAyMTEsIDE2NCwgMTY0LCAxLCAyMTUsIDM2LCAxNjQsIDEsIDE1MiwgMTY0LCAxLCAyMDcsIAotICAgIDIxMCwgMTY0LCAyLCAyNTAsIDE3LCAxNjQsIDIyLCAyLCAyNTIsIDI1LCAxNjQsIDIyLCAyLCA3NSwgMTY0LCAyMiwgMiwgCi0gICAgMjMxLCA4MywgMTY0LCAyMiwgMiwgNjgsIDE2NCwgMjIsIDIsIDIwNiwgMTc4LCAxNjQsIDIyLCAyLCAxMjUsIDE0NiwgMTY0LCAKLSAgICAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTY0LCAyMiwgMiwgNzQsIDE2NCwgMjIsIDIsIDI0MSwgMTYxLCAxNjQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAxNjQsIDIyLCAyLCA3OCwgMTY0LCAyMiwgMiwgMjIwLCAxOCwgMTY0LCAyMiwgMiwgMjUwLCAzNCwgMTY0LCAKLSAgICAyLCAyMDUsIDIwNCwgMTY0LCAxLCA3MCwgMjE2LCA5NywgMTY0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDE2NCwgMSwgCi0gICAgMjUwLCAxMjYsIDIzMSwgODMsIDE2NCwgMSwgMTI1LCAyMTUsIDE4NiwgMTY0LCAxLCAxMjUsIDIyNywgNzgsIDE2NCwgMjIsIAotICAgIDIsIDEyNSwgMTU5LCAxNjQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE2NCwgMTcsIDIwMiwgODQsIDE2NCwgMTcsIDEwNSwgCi0gICAgMTY0LCAxNywgMTA4LCAxNjQsIDE3LCAxNDcsIDE2NCwgMTcsIDE0OSwgMTY0LCAxNywgMTcwLCAxNjQsIDE3LCAxOTUsIAotICAgIDE2NCwgMTcsIDIxMywgMTExLCAxNjQsIDE3LCAxOTksIDE2NCwgMTcsIDIyMiwgNjMsIDE2NCwgNDIsIDIwOSwgMTUyLCAKLSAgICAxNjQsIDQyLCAxMTgsIDIzNiwgMTEsIDE2NCwgNDIsIDExOCwgMjA5LCAzNiwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMTcsIAotICAgIDU1LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxNjQsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE2NCwgMjQ0LCAKLSAgICAxMzgsIDgyLCAxNjQsIDEsIDI0NiwgMTMxLCAyMjEsIDIyOCwgMTY0LCAxLCAyNDYsIDEzMSwgMjIzLCAxNjMsIDE2NCwgMSwgCi0gICAgMjQ2LCAxMzEsIDIxNSwgMTg2LCAxNjQsIDEsIDI0NiwgMTMxLCAxNTksIDE2NCwgMSwgMjQ2LCAxMzEsIDIyNywgNzgsIAotICAgIDE2NCwgMSwgMjQ2LCAxMzEsIDIzMCwgNTQsIDE0MCwgMiwgMjUwLCAxNzksIDE0MCwgMiwgMjA1LCAxOTgsIDE0MCwgMSwgCi0gICAgMjUwLCA2LCAxNDAsIDEsIDI1MSwgMjM1LCAxNDAsIDEsIDI1MSwgODksIDE0MCwgMSwgMjUxLCAxMDQsIDE0MCwgMSwgMjMwLCAKLSAgICAxOTEsIDE0MCwgMSwgMjMxLCA4MiwgMTQwLCAxLCAyMDYsIDE2OSwgMTQwLCAxLCAyMDYsIDE3MiwgMTQwLCAxLCAyMzAsIAotICAgIDIxNywgMTQwLCAxLCAyMzAsIDIxOCwgMTQwLCAxLCAyMzEsIDY4LCAxNDAsIDEsIDIzMSwgNzAsIDE0MCwgMSwgMjQwLCAKLSAgICAxOTQsIDE0MCwgMSwgMjQxLCAxNTYsIDE0MCwgMSwgMjUxLCA0OSwgMTQwLCAxLCAyMTksIDE4NywgMTQwLCAxLCAyMjAsIAotICAgIDExLCAxNDAsIDEsIDI1MCwgMjAsIDE0MCwgMSwgMjUxLCA1LCAyMjksIDIwNiwgMTQwLCAxLCAyMjUsIDE0NywgMjI5LCAKLSAgICAyMDYsIDE0MCwgMSwgMjUxLCA1LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjUsIDE0NywgMjM4LCAyMTAsIDE0MCwgMSwgMjI5LCAKLSAgICAyNTUsIDIyMywgMTAzLCAxNDAsIDEsIDIxNCwgMjM1LCAyMzgsIDIxMCwgMTQwLCAxLCAyNTEsIDUsIDI0NywgOCwgMTQwLCAKLSAgICAxLCAyMjUsIDE0NywgMjQ3LCA4LCAxNDAsIDEsIDI1MSwgNSwgMjMwLCAxNjQsIDE0MCwgMSwgMjI1LCAxNDcsIDIzMCwgCi0gICAgMTY0LCAxNDAsIDEsIDIxMCwgMTUsIDIyMywgMTAzLCAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjM0LCAyMjMsIDEwNCwgMTQwLCAKLSAgICAxLCAyMTQsIDIzNSwgMjMwLCAxNjQsIDE0MCwgMSwgMjUxLCA1LCAyMDcsIDIzNywgMTQwLCAxLCAyMjUsIDE0NywgMjA3LCAKLSAgICAyMzcsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDExMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAxMTEsIDE0MCwgMSwgMjIzLCAKLSAgICAxOTEsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTExLCAxNDAsIDEsIDI1MSwgNSwgMjA5LCAxOTUsIDE0MCwgCi0gICAgMSwgMjI1LCAxNDcsIDIwOSwgMTk1LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgCi0gICAgMTMxLCAxNDAsIDEsIDI0NCwgMTYyLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDEzMSwgMTQwLCAxLCAyNTEsIAotICAgIDUsIDIxOSwgNDIsIDE0MCwgMSwgMjI1LCAxNDcsIDIxOSwgNDIsIDE0MCwgMSwgMjUxLCA1LCAyNDgsIDIwMCwgMTQwLCAxLCAKLSAgICAyMjUsIDE0NywgMjQ4LCAyMDAsIDE0MCwgMSwgMjI1LCA2MiwgMTQwLCAxLCAyNTAsIDI0MSwgMjQ4LCAyMDAsIDE0MCwgMSwgCi0gICAgMjAzLCA1NywgMTQwLCAxLCAyMTYsIDE2NCwgMTQwLCAxLCAyNDQsIDE2MiwgMjI3LCAyNDMsIDE0MCwgMSwgMjA2LCA1NywgCi0gICAgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIwNywgMTQwLCAxLCAyMjMsIDE5MSwgMjE0LCAyMDcsIDE0MCwgMSwgMjQ0LCAxNjIsIAotICAgIDIxNCwgMjA3LCAxNDAsIDEsIDIzNywgNzEsIDE0MCwgMSwgMjIzLCAxOTEsIDIyNywgMjQzLCAxNDAsIDEsIDI0MCwgNjIsIAotICAgIDE0MCwgMiwgMjUxLCAzOCwgMTQwLCAyMiwgMiwgMjUxLCA5OSwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDI1MSwgMTA2LCAKLSAgICAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjUxLCAxMDYsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMzAsIDIxNCwgMTQwLCAyMiwgCi0gICAgMiwgMjQzLCAyMDAsIDIzMCwgMjE0LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDI0MywgCi0gICAgMjAwLCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjM4LCAyNTMsIDE0MCwgMjIsIDIsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIAotICAgIDI0MywgMjAwLCAyMjksIDExLCAxNDAsIDIyLCAyLCAyMjksIDEzLCAyNDQsIDUwLCAxNDAsIDIyLCAyLCAyMjksIDEyLCAKLSAgICAyMzcsIDE1OCwgMjUxLCA5OSwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDI0MywgMjAwLCAyNTEsIDk5LCAxNDAsIAotICAgIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjM4LCAyMDksIDE0MCwgMjIsIDIsIDIzOCwgMjA5LCAxNDAsIDIyNywgODksIAotICAgIDE3LCAyMDIsIDg0LCAxNDAsIDIyNywgODksIDE3LCAxMDUsIDE0MCwgMjI3LCA4OSwgMTcsIDEwOCwgMTQwLCAyMjcsIDg5LCAKLSAgICAxNywgMTQ3LCAxNDAsIDIyNywgODksIDE3LCAxNDksIDE0MCwgMjI3LCA4OSwgMTcsIDE3MCwgMTQwLCAyMjcsIDg5LCAxNywgCi0gICAgMTk1LCAxNDAsIDIyNywgODksIDE3LCAyMTMsIDExMSwgMTQwLCAyMjcsIDg5LCAxNywgMTk5LCAxNDAsIDIyNywgODksIDE3LCAKLSAgICAyMjIsIDYzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyNTMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDIwOSwgCi0gICAgMTQwLCAyMTcsIDE3OSwgMjI4LCAxOTQsIDIwOSwgMTAzLCAxNjcsIDIyOSwgMjcsIDIzMCwgMTgsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMjksIDEzOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTA4LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjI5LCAxMDMsIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDExMiwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIxNiwgMTg1LCAyMDksIDEwMywgMTY3LCAyMjIsIDEyOSwgMjIyLCAxMTYsIDIwOSwgMTAzLCAxNjcsIAotICAgIDI0NiwgMTE3LCAyNDYsIDE4OCwgMjA5LCAxMDMsIDE2NywgMjQ2LCAxMTcsIDI0NiwgMTI3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyNDYsIDExNywgMjQ2LCAxODcsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMiwgMTMsIDIwOSwgMTAzLCAxNjcsIDI0NiwgCi0gICAgMTE3LCAyNDYsIDExMywgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMiwgMjU1LCAyMDksIDEwMywgMTY3LCAyNDMsIAotICAgIDExNCwgMjQ2LCAxOTYsIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMTksIDUzLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAKLSAgICAyMDksIDk3LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMjMsIDgwLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMTgsIAotICAgIDE3MCwgMjA5LCAxMDMsIDE2NywgMjIxLCAxOTIsIDIyMiwgMjMwLCAyMDksIDEwMywgMTY3LCAyNDMsIDExNCwgMjQ0LCA1MSwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIwOSwgMjIzLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDE2LCAyMDksIAotICAgIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDEwNCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCA0MywgMjA5LCAxMDMsIAotICAgIDE2NywgMjIxLCAxOTIsIDIyMSwgODQsIDIwOSwgMTAzLCAxNjcsIDI0OCwgMjQsIDI0OSwgMCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE4LCA3MCwgMjE4LCA5OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMTcyLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE4NywgMjQwLCAxMDgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDIwMSwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxODcsIDI0MCwgODEsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTQsIDI0NywgMjA5LCAxMDMsIDE2NywgMjI0LCA4MywgCi0gICAgMTkyLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAzLCA4NiwgMjA5LCAxMDMsIDE2NywgMjE1LCAyMjgsIDIxNSwgMTQ0LCAKLSAgICAyMDksIDEwMywgMTY3LCAyMTUsIDE0NSwgMjA5LCAxMDMsIDE2NywgMjI3LCA1MCwgMjI3LCAxMDcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyNiwgMjM5LCAyMDksIDEwMywgMTY3LCAyMDQsIDEsIDIwNCwgMTA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIAotICAgIDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgMTE2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTEsIDksIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMzYsIDIzMywgMjA5LCAxMDMsIDE2NywgMjI3LCA1MCwgMjQ2LCA5NywgMjA5LCAxMDMsIAotICAgIDE2NywgMTU4LCAyNTAsIDIyMywgMjA5LCAxMDMsIDE2NywgMjM2LCAxMzcsIDIyMSwgMTg3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTksIDE0NCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDYzLCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjM3LCAxMjUsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTIsIDI1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUwLCAyNDcsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIzMSwgODMsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxNCwgMjI5LCAyMDcsIDI0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjA3LCAyMiwgMjA5LCAxMDMsIDE2NywgMjE0LCAKLSAgICAyMjksIDY4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjA2LCAxNzgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgzLCAyMDksIAotICAgIDEwMywgMjQ1LCA5MiwgMTYsIDI0OSwgMSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc0LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTQsIDIyOSwgMjUxLCAxMDksIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIAotICAgIDI1MSwgNjUsIDIyNSwgMTM1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUxLCA2NSwgMjI1LCAxMzYsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyOCwgMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMywgMjA5LCAxMDMsIAotICAgIDE2NywgMjI1LCAxNDEsIDI0MSwgMTI5LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjA5LCA0NywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI1LCAxNDEsIDIwOCwgODgsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyNDYsIDE3NSwgMjA5LCAxMDMsIDE2NywgMjA5LCAKLSAgICA5NSwgMjA5LCAxMDMsIDE2NywgMjIyLCA3MiwgMjA5LCAxMDMsIDE2NywgMjAzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxNzcsIDIwOSwgMTAzLCAxNywgMjAyLCA4NCwgMjA5LCAxMDMsIDE3LCAxMDUsIDIwOSwgMTAzLCAxNywgMTA4LCAyMDksIAotICAgIDEwMywgMTcsIDE0NywgMjA5LCAxMDMsIDE3LCAxNDksIDIwOSwgMTAzLCAxNywgMTcwLCAyMDksIDEwMywgMTcsIDE5NSwgCi0gICAgMjA5LCAxMDMsIDE3LCAyMTMsIDExMSwgMjA5LCAxMDMsIDE3LCAxOTksIDIwOSwgMTAzLCAxNywgMjIyLCA2MywgMjA5LCAKLSAgICAxMDMsIDE2NywgMjUwLCAyMTksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTEzLCAyMjgsIDEyLCAxLCAyMjksIDI2LCAyMjgsIAotICAgIDEyLCAxLCAyMjksIDExNiwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyOSwgMTE2LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgCi0gICAgMjIyLCAxMjgsIDIyOCwgMTIsIDEsIDI0NSwgMjU0LCAyMjgsIDEyLCAxLCAyMTIsIDE0LCAyMDksIDIzMiwgMjI4LCAxMiwgCi0gICAgMSwgMjIwLCAyMzMsIDIyOCwgMTIsIDEsIDI0MywgMTEzLCAyMjgsIDEyLCAxLCAxMzUsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIAotICAgIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjIxLCAxOTEsIDIyOCwgMTIsIAotICAgIDEsIDI0OCwgMjMsIDIyOCwgMTIsIDEsIDIxOCwgNjksIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMTAsIDIxMSwgMjI4LCAxMiwgCi0gICAgMSwgMjM5LCAxODcsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIzOSwgCi0gICAgMTg3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI0LCA4MiwgMjI4LCAxMiwgMSwgMjAyLCAyNDcsIDIyOCwgMTIsIDEsIAotICAgIDIyNywgNTAsIDIyNywgMTA3LCAyMjgsIDEyLCAxLCAyMjcsIDUwLCAyMjcsIDEyLCAyMjgsIDEyLCAxLCAyMDQsIDAsIDIyOCwgCi0gICAgMTIsIDEsIDIxMiwgMTQsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMzYsIDEzNywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDc4LCAKLSAgICAyMjgsIDEyLCAxLCAyMzYsIDEzNywgMjA5LCAyMzIsIDIyOCwgMTIsIDI0MSwgMTA4LCAyMjgsIDEyLCAyMiwgMiwgNjMsIAotICAgIDIyOCwgMTIsIDIyLCAyLCAyMjUsIDE0MSwgMjMwLCA0LCAyMjgsIDEyLCAyMiwgMiwgMjUyLCAyNSwgMjI4LCAxMiwgMjIsIAotICAgIDIsIDI1MCwgMjQ3LCAyMjgsIDEyLCAyMiwgMiwgNzUsIDIyOCwgMTIsIDIyLCAyLCAyMzEsIDgzLCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjAzLCAxMjQsIDIyOCwgMTIsIDIyLCAyLCAyMDIsIDE2OSwgMjI4LCAxMiwgMjIsIDIsIDY4LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDIyOCwgMTIsIDIyLCAyLCAyMjUsIDE0MSwgMjI5LCA5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjI3LCAKLSAgICA0OSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyMCwgMjMzLCAyMjgsIDEyLCAyMiwgMiwgNzQsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyNDEsIDE0NSwgMjI4LCAxMiwgMjIsIDIsIDc4LCAyMjgsIDEyLCAyMiwgMiwgMjUwLCA4LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI4LCAxMiwgMjI5LCAyNywgMjI4LCAxMTMsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCAKLSAgICAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyMDksIDIsIDIyOCwgMTIsIAotICAgIDE0MywgMjI1LCAxNDEsIDI0NywgMTYsIDIyOCwgMTIsIDI0NywgNTgsIDgyLCAyMjgsIDEyLCAyMjIsIDgxLCAyMjgsIDEyLCAKLSAgICAxNywgMjAyLCA4NCwgMjI4LCAxMiwgMTcsIDEwNSwgMjI4LCAxMiwgMTcsIDEwOCwgMjI4LCAxMiwgMTcsIDE0NywgMjI4LCAKLSAgICAxMiwgMTcsIDE0OSwgMjI4LCAxMiwgMTcsIDE3MCwgMjI4LCAxMiwgMTcsIDE5NSwgMjI4LCAxMiwgMTcsIDIxMywgMTExLCAKLSAgICAyMjgsIDEyLCAxNywgMTk5LCAyMjgsIDEyLCAxNywgMjIyLCA2MywgMjI4LCAxMiwgMjM2LCAxMzcsIDIyMSwgMTkxLCAyMjgsIAotICAgIDEyLCAyMzYsIDEzNywgMjI0LCA4MiwgMjI4LCAxMiwgMSwgMjI5LCAxMTcsIDIzOCwgMzksIDIyOCwgMTIsIDEsIDIyOSwgCi0gICAgMTE3LCAyMjAsIDIzMywgNzcsIDQsIDIyMCwgMzksIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIAotICAgIDI2LCA2MywgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIxNSwgMjMyLCAyNDgsIDE2NCwgCi0gICAgMTkyLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjM3LCAyMzIsIDIwOCwgNiwgMTkyLCAKLSAgICA3NywgMTMxLCA4MSwgMjAzLCAzLCAyMjQsIDE3MywgMjI1LCAyMiwgMTkyLCA3NywgMTMxLCAyNDYsIDEyLCAyMDMsIDMsIAotICAgIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDc3LCAxMzEsIDI0NywgMzQsIDIwMywgMywgMjI0LCAxNzMsIDIxOCwgMTcxLCAKLSAgICAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgNiwgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAKLSAgICAyMTQsIDIwNSwgMjEzLCA4MiwgNzcsIDEzMSwgMjQ3LCAxOTYsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDI0OCwgNDUsIAotICAgIDIxMiwgMjM4LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyMzAsIDI0MywgMjA4LCA1LCA3NywgMTMxLCAyNDQsIDQ0LCAKLSAgICAyMDgsIDYsIDI0NywgMTk1LCA3NywgMTMxLCAyMTMsIDgyLCA3NywgMTMxLCAyMjAsIDIzOCwgMjEzLCA4MiwgNzcsIDEzMSwgCi0gICAgMjA4LCA2LCAyMTMsIDgyLCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCA2LCAyMTMsIDgyLCA3NywgMTMxLCAyMTUsIDI1NSwgCi0gICAgMjQ2LCAxNTYsIDIxMSwgMTgwLCAyMTMsIDgyLCA3NywgMTMxLCAyMTYsIDY1LCAyMzgsIDksIDIxMywgODIsIDc3LCAxMzEsIAotICAgIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgMTQ5LCAyMjUsIDIxLCAxNjMsIDI0NywgNjEsIDc3LCAxMzEsIDIzNywgMjMyLCAKLSAgICAyMDgsIDUsIDc3LCAyMjcsIDM1LCAyLCAyNDYsIDE5NywgMjE1LCAxNDgsIDc3LCAyMjcsIDM1LCAyLCAyMjcsIDE1OSwgCi0gICAgMjE1LCAxNDgsIDc3LCAyNTAsIDU1LCAyLCAyMTMsIDkzLCAyMzgsIDE5MywgMjU1LCAyNywgMjE1LCAxNDgsIDc3LCAyNTAsIAotICAgIDU1LCAyLCAyNTUsIDI0LCAxODUsIDc3LCAyNTAsIDU1LCAyLCAyMTQsIDE3OCwgMjA4LCAwLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDI0MywgMTI3LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAyNDMsIDEyNywgMjM4LCA0MSwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyNDMsIDEyNywgMjM3LCAyMzMsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjIzLCA5OSwgMjM4LCA0MSwgNzcsIDIsIDIxNiwgMTYwLCAyNDMsIDEyNywgMjE2LCAxNjAsIDIyMywgOTgsIDc3LCAxNywgCi0gICAgMjAyLCA4NCwgNzcsIDE3LCAxMDUsIDc3LCAxNywgMTA4LCA3NywgMTcsIDE0NywgNzcsIDE3LCAxNDksIDc3LCAxNywgMTcwLCAKLSAgICA3NywgMTcsIDE5NSwgNzcsIDE3LCAyMTMsIDExMSwgNzcsIDE3LCAxOTksIDc3LCAxNywgMjIyLCA2MywgNzcsIDE3LCAxNjIsIAotICAgIDEwNSwgNzcsIDE3LCAxNjIsIDEwOCwgNzcsIDE3LCAxNjIsIDE0NywgNzcsIDE3LCAxNjIsIDE0OSwgNzcsIDE3LCAxNjIsIAotICAgIDE3MCwgNzcsIDE3LCAxNjIsIDE5NSwgNzcsIDE3LCAxNjIsIDIxMywgMTExLCA3NywgMTcsIDE2MiwgMTk5LCA3NywgMTcsIAotICAgIDE2MiwgMjIyLCA2MywgNzcsIDE3LCAxNjIsIDIwMiwgODQsIDc3LCAxMzEsIDI0NywgMTk4LCAyMTUsIDE0OCwgNzcsIDEzMSwgCi0gICAgMjIyLCAxOTQsIDI0NywgMTI3LCAyMjAsIDI0OSwgMjAyLCAxOSwgNzcsIDEzMSwgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAKLSAgICAxNDksIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDEzMSwgMjIyLCAxOTQsIDI0NywgMTI3LCAyMTMsIDk0LCAKLSAgICAyMTUsIDE0OCwgNzcsIDEzMSwgMjQ2LCAxNzEsIDIyNCwgMTcyLCA3NywgMTMxLCAyMDgsIDIxLCAyNTUsIDIzLCA3NywgCi0gICAgMTMxLCAyMzcsIDIxNSwgMjE1LCAxNDksIDIzNywgMTc0LCA3NywgMTMxLCAyMzcsIDIxNSwgMjE1LCAxNDksIDIzNywgMTgwLCAKLSAgICA3NywgMTMxLCAyNTAsIDIyNCwgMjI5LCAxMzQsIDIzNywgMTc0LCA3NywgMTMxLCAyNTAsIDIyNCwgMjI5LCAxMzQsIDIzNywgCi0gICAgMTgwLCA3NywgMiwgMjAzLCA3MiwgMjA4LCA0LCA3NywgMiwgMjI1LCAxMDEsIDIwOCwgNCwgNzcsIDEsIDE3MywgNzcsIDEsIAotICAgIDIyOSwgMTQ0LCA3NywgMSwgMjM5LCA4LCA3NywgMSwgMjM4LCAxMTksIDc3LCAxLCAyMjIsIDIwMywgNzcsIDEsIDI0NywgCi0gICAgOTIsIDc3LCAxLCAyNDYsIDE5OSwgNzcsIDEsIDIzMCwgMTgxLCA3NywgMSwgMjIxLCAxMSwgNzcsIDEsIDIwNywgMjQxLCAKLSAgICA3NywgMSwgMjA3LCAyMjksIDc3LCAxLCAyNDQsIDEyMCwgNzcsIDEsIDI0NCwgMTA0LCA3NywgMSwgMjIxLCAyMjcsIDc3LCAKLSAgICAxLCAyMTAsIDIyLCA3NywgMSwgMjA5LCAxMDgsIDc3LCAxLCAyNDQsIDIxMiwgNzcsIDEsIDI0NCwgMSwgNzcsIDEsIDIwMSwgCi0gICAgMjAxLCA3NywgMSwgMTg1LCA3NywgMSwgMjE4LCAyMDgsIDc3LCAxLCAyNDksIDMyLCA3NywgMSwgMjQ4LCA5OCwgNzcsIDEsIAotICAgIDE5MiwgNzcsIDEsIDIwOCwgMjAsIDc3LCAxLCAyMDgsIDEwLCA3NywgMSwgMjQxLCAyNTUsIDc3LCAxLCAyNDEsIDI0OSwgCi0gICAgNzcsIDEsIDIwNCwgMTExLCA3NywgMSwgMjAyLCA4MCwgNzcsIDEsIDIwMiwgMTE2LCA3NywgMSwgMjU1LCAyOSwgNzcsIDEsIAotICAgIDE5OCwgNzcsIDEsIDIxNiwgMjIwLCA3NywgMSwgMjI4LCAxMTMsIDc3LCAxLCAyMTMsIDkwLCA3NywgMSwgMjExLCAxNjQsIAotICAgIDc3LCAxLCAyMTUsIDM2LCA3NywgMSwgMTUyLCA3NywgMSwgNjMsIDc3LCAxLCAyMjgsIDIyMywgNzcsIDEsIDIzOSwgMjI5LCAKLSAgICAyMTYsIDIyMCwgNzcsIDEsIDIyOSwgNDcsIDc3LCAxLCAyMTUsIDE4NSwgNzcsIDIyLCAyLCAyNTIsIDI1LCA3NywgMjIsIDIsIAotICAgIDc1LCA3NywgMjIsIDIsIDIzMSwgODMsIDc3LCAyMiwgMiwgNjgsIDc3LCAyMiwgMiwgMjA2LCAxNzgsIDc3LCAyMiwgMiwgCi0gICAgMTI1LCAxNDYsIDc3LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNzcsIDIyLCAyLCAxMjUsIDE1OSwgNzcsIDIyLCAyLCAxMjUsIAotICAgIDIyNywgNzgsIDc3LCAyMiwgMiwgNzQsIDc3LCAyMiwgMiwgMjQxLCAxNjEsIDc3LCAyMiwgMiwgNzgsIDc3LCAyMiwgMiwgCi0gICAgMjIwLCAxOCwgNzcsIDIsIDIxNSwgMjM4LCAyMTEsIDExLCAyMjIsIDIwNCwgMjE1LCAyMjcsIDc3LCAyLCAyMTUsIDIzMiwgCi0gICAgMjQ4LCAxNjMsIDc3LCAyMiwgMiwgMjE2LCA3MywgNzUsIDc3LCAyMiwgMiwgMjE2LCA3MywgMjMxLCA4MywgNzcsIDIsIAotICAgIDIyMCwgMjQ5LCAyMDIsIDIwLCAyMjMsIDEwNywgMjQ0LCAyMTIsIDc3LCAyLCAyMTIsIDI3LCAyMjcsIDIzNiwgNzcsIDEzMSwgCi0gICAgMjM3LCAxMzksIDc3LCAxMzEsIDIxOSwgMTMyLCA3NywgMiwgMjI3LCAyMzksIDIxNSwgMTQ4LCA3NywgMiwgMjAzLCA3NywgCi0gICAgMjE1LCAxNDgsIDc3LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgNzcsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAKLSAgICAyLCAyMzcsIDIzNiwgMjQ3LCA2MiwgMjE2LCA2MywgNzcsIDIsIDIzNywgMjM2LCAyMjUsIDE0LCAyMTYsIDYzLCA3NywgMiwgCi0gICAgMjMwLCAyMzksIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIAotICAgIDc3LCAyMTAsIDI1NCwgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMzAsIDIzOSwgMjI1LCAyNCwgCi0gICAgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAxLCAxNzMsIDc3LCAyMTAsIDI1NCwgMSwgMjI5LCAxNDQsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjM5LCA4LCA3NywgMjEwLCAyNTQsIDEsIDIzOCwgMTE5LCA3NywgMjEwLCAyNTQsIDEsIDIyMiwgMjAzLCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDI0NywgOTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ2LCAxOTksIDc3LCAyMTAsIDI1NCwgMSwgMjMwLCAxODEsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjIxLCAxMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDcsIDI0MSwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyMDcsIDIyOSwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEyMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEwNCwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyMjEsIDIyNywgNzcsIDIxMCwgMjU0LCAxLCAyMTAsIDIyLCA3NywgMjEwLCAyNTQsIDEsIDIwOSwgMTA4LCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMjEyLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDEsIAotICAgIDIwMSwgNzcsIDIxMCwgMjU0LCAxLCAxODUsIDc3LCAyMTAsIDI1NCwgMSwgMjE4LCAyMDgsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjQ5LCAzMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDgsIDk4LCA3NywgMjEwLCAyNTQsIDEsIDE5MiwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyMDgsIDIwLCA3NywgMjEwLCAyNTQsIDEsIDIwOCwgMTAsIDc3LCAyMTAsIDI1NCwgMSwgMjQxLCAyNTUsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjQxLCAyNDksIDc3LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCA4MCwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDExNiwgNzcsIDIxMCwgMjU0LCAxLCAyNTUsIDI5LCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDE5OCwgNzcsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDExMywgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMTMsIDkwLCA3NywgMjEwLCAyNTQsIDEsIDIxMSwgMTY0LCA3NywgMjEwLCAyNTQsIDEsIDIxNSwgMzYsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMTUyLCA3NywgMjEwLCAyNTQsIDEsIDYzLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMjIzLCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDIzOSwgMjI5LCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMzksIDIyOSwgMTk4LCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIzOSwgMjI5LCAyMTYsIDIyMCwgNzcsIDIyOCwgMjEwLCAyMTUsIDE0NiwgMjI5LCAxNDQsIDc3LCAyMjgsIDIxMCwgCi0gICAgMjE1LCAxNDYsIDIyOSwgMTQ1LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAyNDcsIDQ5LCAyLCA3OSwgMjQ4LCAKLSAgICAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAxNTcsIDI0OCwgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMjQ3LCA1MCwgMjA5LCAxODUsIAotICAgIDc3LCAyNDcsIDQ5LCAyLCAyMTQsIDIwNCwgMjU1LCAyOCwgNzcsIDE2LCAyNDIsIDU1LCAyNDcsIDE5MywgNzcsIDE2LCAKLSAgICAyMTYsIDE1OSwgMjE1LCAyMzksIDc3LCAxNiwgMjE5LCAxNTUsIDIzOCwgMTkxLCA3NywgMTYsIDIxNiwgMTU5LCAyMTUsIAotICAgIDI0MCwgMjE2LCA2NSwgMjM4LCA4LCA3NywgMTYsIDIxOCwgMTcxLCAxODUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTkzLCAKLSAgICA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjIwLCAyMzgsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgCi0gICAgMTk0LCAyMzcsIDIzNCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDI0NywgMTI4LCAyNTUsIDI1LCAKLSAgICA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIxNiwgMTYwLCAyNDMsIDEyNiwgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAKLSAgICAyMzcsIDIzMywgNzcsIDEzMSwgMjQ3LCAxOTcsIDIxMiwgMjM4LCAyMzgsIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgNzcsIAotICAgIDEzMSwgMjI0LCA4NCwgMjAzLCAzLCAyMzgsIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgCi0gICAgNSwgNzcsIDEzMSwgODEsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjI1LCAyMiwgMTkyLCA3NywgCi0gICAgMTMxLCAyNDYsIDEyLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgMjE2LCAKLSAgICAxNSwgMjEwLCAxNzQsIDU0LCAyMjcsIDIyMSwgMjEwLCAxNzQsIDU0LCAyMTYsIDE1LCAyMTAsIDE3NCwgMiwgMywgMjQzLCAKLSAgICA4MywgMjI3LCAyMjEsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIDgzLCA3NywgMTMxLCAyMjcsIDIzMSwgMjI1LCAyNSwgMjE1LCAKLSAgICAxNDgsIDc3LCAxMzEsIDIwOCwgMTEyLCAyMjUsIDI1LCAyMTUsIDE0OCwgNjksIDEsIDE3MywgNjksIDEsIDIyOSwgMTQ0LCAKLSAgICA2OSwgMSwgMjM5LCA4LCA2OSwgMSwgMjM4LCAxMTksIDY5LCAxLCAyMjIsIDIwMywgNjksIDEsIDI0NywgOTIsIDY5LCAxLCAKLSAgICAyNDYsIDE5OSwgNjksIDEsIDIzMCwgMTgxLCA2OSwgMSwgMjMwLCAxNDksIDY5LCAxLCAyMjEsIDExLCA2OSwgMSwgMjIxLCAKLSAgICAxOTMsIDY5LCAxLCAyMDcsIDI0MSwgNjksIDEsIDIwNywgMjI5LCA2OSwgMSwgMjQ0LCAxMjAsIDY5LCAxLCAyNDQsIDEwNCwgCi0gICAgNjksIDEsIDIyMSwgMjI3LCA2OSwgMSwgMjEwLCAyMiwgNjksIDEsIDIwOSwgMTA4LCA2OSwgMSwgMjQ0LCAyMTIsIDY5LCAxLCAKLSAgICAyNDQsIDEsIDY5LCAxLCAyMDEsIDIwMSwgNjksIDEsIDE4NSwgNjksIDEsIDIxOCwgMjA4LCA2OSwgMSwgMjQ5LCAzMiwgNjksIAotICAgIDEsIDI0OCwgOTgsIDY5LCAxLCAxOTIsIDY5LCAxLCAxOTgsIDY5LCAxLCAyMTYsIDIyMCwgNjksIDEsIDIyOCwgMTEzLCA2OSwgCi0gICAgMSwgMjA0LCAxMTEsIDY5LCAxLCAyMTUsIDM2LCA2OSwgMSwgMTUyLCA2OSwgMSwgMjI3LCA3NywgNjksIDEsIDYzLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgNjMsIDY5LCAxLCA3NSwgNjksIDEsIDIzMSwgODMsIDY5LCAxLCA2OCwgNjksIDEsIDIwNiwgMTc4LCAKLSAgICA2OSwgMSwgNzQsIDY5LCAxLCAyMjQsIDU1LCA3NCwgNjksIDEsIDc4LCA2OSwgMSwgMjUwLCAzNCwgNjksIDIyLCAyLCAyMDksIAotICAgIDIzNCwgMjUyLCAyNSwgNjksIDIyLCAyLCAyNTIsIDI1LCA2OSwgMjIsIDIsIDc1LCA2OSwgMjIsIDIsIDIzMSwgODMsIDY5LCAKLSAgICAyMiwgMiwgNjgsIDY5LCAyMiwgMiwgMjA2LCAxNzgsIDY5LCAyMiwgMiwgNzQsIDY5LCAyMiwgMiwgMjUxLCA2NCwgNjksIAotICAgIDIyLCAyLCAyMjQsIDU1LCAyMzEsIDgzLCA2OSwgMjIsIDIsIDIyNCwgNTUsIDc4LCA2OSwgMjIsIDIsIDE4OCwgNTUsIDY5LCAKLSAgICAyLCAyNTAsIDE4MCwgNjksIDIsIDcwLCA1NiwgNjksIDIsIDIwNSwgMTk5LCA2OSwgMiwgMjA1LCAyMDQsIDY5LCAyLCAyNTAsIAotICAgIDc5LCA2OSwgMTA5LCAyLCAxNzQsIDE5OCwgNjksIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNjksIDEwOSwgMiwgMTc0LCAKLSAgICAyMDQsIDExMSwgNjksIDEwOSwgMiwgMTc0LCAxNTIsIDY5LCAxLCAyMzcsIDI0OSwgMjE1LCAzNiwgNjksIDE3LCAyMDIsIAotICAgIDg0LCA2OSwgMTcsIDEwNSwgNjksIDE3LCAxMDgsIDY5LCAxNywgMTQ3LCA2OSwgMTcsIDE0OSwgNjksIDE3LCAxNzAsIDY5LCAKLSAgICAxNywgMTk1LCA2OSwgMTcsIDIxMywgMTExLCA2OSwgMTcsIDE5OSwgNjksIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI3LCA4NiwgCi0gICAgMjE0LCAxNjcsIDY5LCAyLCAyMTQsIDE2NywgNjksIDE2LCAyMjcsIDQ0LCA2OSwgMTYsIDI0NSwgMjI3LCA2OSwgMTYsIAotICAgIDI1MSwgODUsIDY5LCAxNiwgMjM4LCAxNzQsIDY5LCAxLCAyMTMsIDkwLCA2OSwgMSwgMjExLCAxNjQsIDY5LCAxLCAxMjUsIAotICAgIDE0NiwgNjksIDEsIDEyNSwgMjE1LCAxODYsIDY5LCAxLCAxMjUsIDE1OSwgNjksIDEsIDEyNSwgMjI3LCA3OCwgNjksIDIyLCAKLSAgICAyLCAxMjUsIDE0NiwgNjksIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA2OSwgMjIsIDIsIDEyNSwgMTU5LCA2OSwgMjIsIDIsIAotICAgIDEyNSwgMjI3LCA3OCwgNjksIDEsIDIyNCwgNTUsIDIyMiwgMjAzLCA2OSwgMSwgMjI0LCA1NSwgMjMwLCAxNDksIDY5LCAxLCAKLSAgICAyMjQsIDU1LCAyNDgsIDE5OCwgNjksIDEsIDIyNCwgNTUsIDI0OCwgMTkzLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIAotICAgIDIwMSwgMjAxLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDE5MiwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAyMjgsIAotICAgIDExMywgNjksIDEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMTMsIDkwLCA2OSwgMjIsIDIsIDIxMywgOTYsIDIyOSwgMjM3LCAKLSAgICAyNDAsIDIzOCwgNjksIDE0MywgMTMxLCAyMTMsIDk2LCAyMjksIDIzNywgMjM3LCA3OSwgNjksIDE0MywgMTMxLCAyMTMsIAotICAgIDk2LCAyMjksIDIzNywgMjI5LCAyMDIsIDIxOCwgMTgwLCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKLSAgICAyMDksIDEwOCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjE3LCAxNTIsIDY5LCAyMiwgMiwgMjA0LCAKLSAgICA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyNDAsIDIzOCwgNjksIDIyLCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAotICAgIDIwNywgMjQsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjA0LCA0NCwgCi0gICAgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1OSwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAKLSAgICAxNTgsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU3LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAKLSAgICAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIyMSwgMjI3LCAKLSAgICA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjAyLCAxNzYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIAotICAgIDIyOSwgMjM3LCAyMzgsIDg0LCA2OSwgMjIsIDIsIDIzOCwgMTg2LCAyMjksIDIzNywgNzUsIDY5LCAyMiwgMiwgMjI5LCAKLSAgICAyMDcsIDIyMCwgNzMsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDY4LCA2OSwgMjIsIDIsIDIyOSwgMjA3LCAyNDEsIDE2MSwgNjksIAotICAgIDEsIDIxMywgNjcsIDE3MywgNjksIDEsIDIxMywgNjcsIDIyOSwgMTQ0LCA2OSwgMSwgMjEzLCA2NywgMjM5LCA4LCA2OSwgMSwgCi0gICAgMjEzLCA2NywgMjQ3LCA5MiwgNjksIDEsIDIxMywgNjcsIDIwMiwgMTE2LCA2OSwgMSwgMjEzLCA2NywgMjIxLCAxMSwgNjksIAotICAgIDEsIDIxMywgNjcsIDI0NCwgMjEyLCA2OSwgMSwgMjEzLCA2NywgMjAxLCAyMDEsIDY5LCAxLCAyMTMsIDY3LCAyMTgsIDIwOCwgCi0gICAgNjksIDEsIDIxMywgNjcsIDI0MCwgMTA4LCA2OSwgMSwgMjEzLCA2NywgMjQ5LCAzMiwgNjksIDEsIDIxMywgNjcsIDIwOSwgCi0gICAgMTA4LCA2OSwgMSwgMjEzLCA2NywgMTUyLCA2OSwgMTA5LCAyLCAyMTMsIDY3LCAxNzQsIDIwNCwgMTExLCA2OSwgMjIsIDIsIAotICAgIDIxMywgNjcsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjEzLCA2NywgNzQsIDY5LCAyMiwgMiwgMjEzLCA2NywgMTg4LCA1NSwgCi0gICAgNjksIDIyLCAyLCAyMTMsIDY3LCA0NiwgMjAzLCAxMjQsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1OSwgNjksIDIsIDIxMywgCi0gICAgNjcsIDIwOCwgMTU4LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTYsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NSwgNjksIDIsIAotICAgIDIxMywgNjcsIDI0NSwgMTU2LCAyMDgsIDE1OSwgNjksIDIsIDIxMywgNjcsIDI0NSwgMTU2LCAyMDgsIDE1OCwgNjksIDIsIAotICAgIDIxMywgNjcsIDI0NSwgMTU2LCAyNDEsIDk1LCAyMDgsIDE2MSwgNjksIDEsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjQwLCAKLSAgICAxMDgsIDY5LCAyLCAyMTUsIDEzMCwgMjE5LCAxMzksIDIwOCwgMTU2LCA2OSwgMjEzLCA2NywgMTcsIDIwMiwgODQsIDY5LCAKLSAgICAyMTMsIDY3LCAxNywgMTA1LCA2OSwgMjEzLCA2NywgMTcsIDEwOCwgNjksIDIxMywgNjcsIDE3LCAxNDcsIDY5LCAyMTMsIAotICAgIDY3LCAxNywgMTQ5LCA2OSwgMjEzLCA2NywgMTcsIDE3MCwgNjksIDIxMywgNjcsIDE3LCAxOTUsIDY5LCAyMTMsIDY3LCAxNywgCi0gICAgMjEzLCAxMTEsIDY5LCAyMTMsIDY3LCAxNywgMTk5LCA2OSwgMjEzLCA2NywgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjksIAotICAgIDEzNywgMjA4LCAxNjAsIDY5LCAyLCAyMjksIDEzNywgMjA4LCAxNTgsIDY5LCAyMiwgMiwgMjUxLCA1MSwgNjMsIDY5LCAyMiwgCi0gICAgMiwgMjUxLCA1MSwgMjUxLCA2NCwgNjksIDE2LCAyMTMsIDY3LCAxMDUsIDY5LCAxNiwgMjEzLCA2NywgMjQwLCAyMTEsIAotICAgIDExNCwgNiwgMSwgMjUwLCAyMzEsIDExNCwgNiwgMSwgMjQ4LCAyNDIsIDExNCwgNiwgMSwgMjM4LCAyMzQsIDExNCwgNiwgMSwgCi0gICAgMjQzLCA5MywgMTE0LCA2LCAxLCAyNDEsIDkyLCAxMTQsIDYsIDEsIDIwNSwgMjEzLCAxMTQsIDYsIDEsIDIwMiwgODcsIAotICAgIDExNCwgNiwgMSwgMjA5LCAyMzAsIDExNCwgNiwgMSwgMjMxLCA0OSwgMTE0LCA2LCAxLCAyMzAsIDQsIDExNCwgNiwgMSwgCi0gICAgMjI4LCAyLCAxMTQsIDYsIDEsIDIyNSwgMTIyLCAxMTQsIDYsIDEsIDIyMywgNzQsIDExNCwgNiwgMSwgMjIwLCAzMSwgMTE0LCAKLSAgICA2LCAxLCAyMTksIDkxLCAxMTQsIDYsIDEsIDIwMiwgNzYsIDExNCwgNiwgMSwgMjE2LCAyMDIsIDExNCwgNiwgMSwgMjE0LCAKLSAgICAyNDMsIDExNCwgNiwgMSwgMjA5LCAyMTgsIDExNCwgNiwgMSwgMjA2LCAyNTUsIDExNCwgNiwgMSwgMjE4LCAyMDAsIDExNCwgCi0gICAgNiwgMSwgMjI5LCAxMzIsIDExNCwgNiwgMSwgMjM4LCAxMTAsIDExNCwgNiwgMSwgMjE3LCAxMTEsIDExNCwgNiwgMSwgMjEyLCAKLSAgICAyNTUsIDExNCwgNiwgMSwgMjQ2LCAxMjksIDExNCwgNiwgMSwgMjQ3LCA2MSwgMTE0LCA2LCAxLCAyMzAsIDEzMywgMTE0LCAKLSAgICA2LCAxLCAyNDYsIDY4LCAxMTQsIDYsIDEsIDI0NiwgMTgzLCAxMTQsIDYsIDEsIDIwMywgMTgwLCAxMTQsIDYsIDEsIDIzMCwgCi0gICAgMTQ2LCAxMTQsIDYsIDEsIDIzNywgMTU0LCAxMTQsIDYsIDEsIDIzNywgNjcsIDExNCwgNiwgMSwgMjM2LCAyNTQsIDExNCwgCi0gICAgNiwgMSwgMjA0LCA2MiwgMTE0LCA2LCAxLCAyMzcsIDkyLCAxMTQsIDYsIDEsIDIzNiwgMTMyLCAxMTQsIDYsIDEsIDIwMiwgCi0gICAgMjQ5LCAxMTQsIDYsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjUwLCAyMzEsIDExNCwgMSwgMjQ4LCAyNDIsIDExNCwgMSwgMjM4LCAKLSAgICAyMzQsIDExNCwgMSwgMjQzLCA5MywgMTE0LCAxLCAyNDEsIDkyLCAxMTQsIDEsIDIwNSwgMjEzLCAxMTQsIDEsIDIwMiwgODcsIAotICAgIDExNCwgMSwgMjA5LCAyMzAsIDExNCwgMSwgMjMxLCA0OSwgMTE0LCAxLCAyMzAsIDQsIDExNCwgMSwgMjI4LCAyLCAxMTQsIAotICAgIDEsIDIyNSwgMTIyLCAxMTQsIDEsIDIyMywgNzQsIDExNCwgMSwgMjIwLCAzMSwgMTE0LCAxLCAyMTksIDkxLCAxMTQsIDEsIAotICAgIDIwMiwgNzYsIDExNCwgMSwgMjE2LCAyMDIsIDExNCwgMSwgMjE0LCAyNDMsIDExNCwgMSwgMjA5LCAyMTgsIDExNCwgMSwgCi0gICAgMjA2LCAyNTUsIDExNCwgMSwgMjE4LCAyMDAsIDExNCwgMSwgMjI5LCAxMzIsIDExNCwgMSwgMjM4LCAxMTAsIDExNCwgMSwgCi0gICAgMjE3LCAxMTEsIDExNCwgMSwgMjEyLCAyNTUsIDExNCwgMSwgMjQ2LCAxMjksIDExNCwgMSwgMjQ3LCA2MSwgMTE0LCAxLCAKLSAgICAyMzAsIDEzMywgMTE0LCAxLCAyNDYsIDY4LCAxMTQsIDEsIDI0NiwgMTgzLCAxMTQsIDEsIDIwMywgMTgwLCAxMTQsIDEsIAotICAgIDIzMCwgMTQ2LCAxMTQsIDEsIDIzNywgMTU0LCAxMTQsIDEsIDIzNywgNjcsIDExNCwgMSwgMjM2LCAyNTQsIDExNCwgMSwgCi0gICAgMjA0LCA2MiwgMTE0LCAxLCAyMzcsIDkyLCAxMTQsIDEsIDIzNiwgMTMyLCAxMTQsIDEsIDI0MCwgMjYsIDExNCwgMSwgMjAyLCAKLSAgICAyNDksIDExNCwgMSwgMjQxLCAxMTAsIDExNCwgMSwgMjA3LCAxNzQsIDIzOCwgMjM0LCAxMTQsIDEsIDI1MSwgNTksIDExNCwgCi0gICAgMjE5LCA4OSwgMjEzLCAxMzAsIDY1LCAxLCAxMTQsIDIyMywgNzQsIDExNCwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyMzcsIDkxLCAKLSAgICA1NCwgMTE0LCAxLCAyMjgsIDEwNCwgNTQsIDI4LCAxMjMsIDIyOSwgNTksIDI4LCAxMjMsIDIxMSwgMTU2LCAyOCwgMTIzLCAKLSAgICAyMjIsIDkzLCAyOCwgMTIzLCAyMDgsIDI0MCwgMjgsIDEyMywgMjExLCAxNDUsIDI4LCAxMjMsIDIxNiwgNDcsIDI4LCAxMjMsIAotICAgIDIyNCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MywgMjgsIDEyMywgMjExLCAxNTMsIDI4LCAxMjMsIDIxMiwgMTExLCAyOCwgCi0gICAgMTIzLCAyMTEsIDE1MCwgMjgsIDEyMywgMjMxLCAxMDYsIDI4LCAxMjMsIDI0NiwgNzQsIDI4LCAxMjMsIDIxMSwgMTYwLCAKLSAgICAyOCwgMTIzLCAyNDYsIDEzOCwgMjgsIDEyMywgMjI5LCAxMjAsIDI4LCAxMjMsIDIwOSwgNjYsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTkwLCAyOCwgMTIzLCAyMzYsIDI1MSwgMjgsIDEyMywgMjIyLCA4OSwgMjgsIDEyMywgMjExLCAxNTQsIDI4LCAxMjMsIAotICAgIDIyMiwgODMsIDI4LCAxMjMsIDIyMiwgODcsIDI4LCAxMjMsIDIwOCwgMjM3LCAyOCwgMTIzLCAyMTYsIDM1LCAyOCwgMTIzLCAKLSAgICAyMTEsIDE1MiwgMjgsIDEyMywgMjE2LCA0NSwgMjgsIDEyMywgMjI5LCAyNDMsIDI4LCAxMjMsIDIyNCwgMTM0LCAyOCwgCi0gICAgMTIzLCAyMjksIDI0NiwgMjgsIDEyMywgMjE4LCAxNDgsIDI4LCAxMjMsIDIxOCwgMTQ2LCAyOCwgMTIzLCAyMTgsIDEzNCwgCi0gICAgMjgsIDEyMywgMjE4LCAxNDIsIDI4LCAxMjMsIDIxOCwgMTQwLCAyOCwgMTIzLCAyMTgsIDEzNywgMjgsIDEyMywgMjE4LCAKLSAgICAxMzksIDI4LCAxMjMsIDIxOCwgMTM2LCAyOCwgMTIzLCAyMTgsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTEsIDI4LCAxMjMsIAotICAgIDIxOCwgMTUyLCAyOCwgMTIzLCAyMTgsIDEzNSwgMjgsIDEyMywgMjE4LCAxNDUsIDI4LCAxMjMsIDIyOSwgMjQ0LCAyOCwgCi0gICAgMTIzLCAyMjksIDI0MiwgMjgsIDEyMywgMjEyLCAxMDQsIDI4LCAxMjMsIDIxMiwgMTAyLCAyOCwgMTIzLCAyMTIsIDk0LCAKLSAgICAyOCwgMTIzLCAyMTIsIDk3LCAyOCwgMTIzLCAyMTIsIDEwMywgMjgsIDEyMywgMjEyLCA5OSwgMjgsIDEyMywgMjEyLCA5OCwgCi0gICAgMjgsIDEyMywgMjEyLCA5NiwgMjgsIDEyMywgMjEyLCAxMDcsIDI4LCAxMjMsIDIxMiwgMTA5LCAyOCwgMTIzLCAyMTIsIAotICAgIDExMCwgMjgsIDEyMywgMjEyLCAxMDUsIDI4LCAxMjMsIDIxMiwgOTUsIDI4LCAxMjMsIDIxMiwgMTAwLCAyOCwgMTIzLCAKLSAgICAyMTIsIDEwOCwgMjgsIDEyMywgMjQ2LCAxMjAsIDI4LCAxMjMsIDI0NiwgMTE4LCAyOCwgMTIzLCAyNDYsIDIxMCwgMjgsIAotICAgIDEyMywgMjQ2LCAyMDgsIDI4LCAxMjMsIDIxOSwgMTA3LCAyOCwgMTIzLCAyMzEsIDEwMSwgMjgsIDEyMywgMjMxLCA5MiwgCi0gICAgMjgsIDEyMywgMjMxLCAxMDAsIDI4LCAxMjMsIDIzMSwgOTcsIDI4LCAxMjMsIDIzMSwgOTUsIDI4LCAxMjMsIDIzMSwgOTksIAotICAgIDI4LCAxMjMsIDIxMSwgMTU3LCAyOCwgMTIzLCAyMzEsIDEwNCwgMjgsIDEyMywgMjMxLCAxMDUsIDI4LCAxMjMsIDIzMSwgCi0gICAgOTMsIDI4LCAxMjMsIDIzMSwgOTgsIDI4LCAxMjMsIDIwMywgMjksIDI4LCAxMjMsIDI0NiwgNzMsIDI4LCAxMjMsIDI0NiwgCi0gICAgMTIxLCAyOCwgMTIzLCAyNDYsIDExOSwgMjgsIDEyMywgMjQ2LCAyMTEsIDI4LCAxMjMsIDI0NiwgMjA5LCAyOCwgMTIzLCAKLSAgICAyNDYsIDEzNiwgMjgsIDEyMywgMjQ2LCAxMzcsIDI4LCAxMjMsIDI0NiwgMTIyLCAyOCwgMTIzLCAyNDYsIDIxMiwgMjgsIAotICAgIDEyMywgMjE4LCAxODgsIDI4LCAxMjMsIDIyOSwgMjQ1LCAyOCwgMTIzLCAyMTEsIDE1OCwgMjgsIDEyMywgMjAzLCAzNSwgCi0gICAgMjgsIDEyMywgMjI5LCA1MCwgMjgsIDEyMywgMjIyLCA4NSwgMjgsIDEyMywgMjIyLCA5MSwgMjgsIDEyMywgMjIyLCA5MCwgCi0gICAgMjgsIDEyMywgMjA4LCAyMzQsIDI4LCAxMjMsIDI0MCwgNywgMjgsIDE3NiwgMjQwLCA3LCAyOCwgMTc2LCA2MywgMjgsIAotICAgIDE3NiwgMjUxLCAxMDksIDI4LCAxNzYsIDE5OCwgMjgsIDE3NiwgMjAzLCA5OSwgMjgsIDE3NiwgMjQxLCA1NSwgMjgsIDE3NiwgCi0gICAgNzQsIDI4LCAxNzYsIDIwMywgMzksIDI4LCAxNzYsIDIwMywgNTIsIDI4LCAxNzYsIDc4LCAyOCwgMTc2LCAyMDQsIDExMSwgCi0gICAgMjgsIDE3NiwgMjA0LCAxMDcsIDI4LCAxNzYsIDIyMCwgNzMsIDI4LCAxNzYsIDIwMiwgMjQ3LCAyOCwgMTc2LCA2OCwgMjgsIAotICAgIDE3NiwgMjA0LCA0OCwgMjgsIDE3NiwgMjA0LCA2MiwgMjgsIDE3NiwgMjA0LCAzMCwgMjgsIDE3NiwgMjAyLCAyMTMsIDI4LCAKLSAgICAxNzYsIDI0MCwgMjM4LCAyOCwgMTc2LCAyMDMsIDExLCAyOCwgMTc2LCA3NSwgMjgsIDE3NiwgMjU1LCAyMCwgMjgsIDE3NiwgCi0gICAgMjU1LCAxOSwgMjgsIDE3NiwgMjAzLCAxMTMsIDI4LCAxNzYsIDIwMywgMTExLCAyOCwgMTc2LCAyNDEsIDUzLCAyOCwgMTc2LCAKLSAgICAyNDEsIDUyLCAyOCwgMTc2LCAyNDEsIDU0LCAyOCwgMTc2LCAyMDMsIDM4LCAyOCwgMTc2LCAyMDMsIDM3LCAyOCwgMTc2LCAKLSAgICAyMjAsIDE4MSwgMjgsIDE3NiwgMjIwLCAxODIsIDI4LCAxNzYsIDIyMCwgMTc1LCAyOCwgMTc2LCAyMjAsIDE4MCwgMjgsIAotICAgIDE3NiwgMjIwLCAxNzgsIDI4LCAxNzYsIDIwMiwgMjQxLCAyOCwgMTc2LCAyMDIsIDI0MCwgMjgsIDE3NiwgMjAyLCAyMzksIAotICAgIDI4LCAxNzYsIDIwMiwgMjQyLCAyOCwgMTc2LCAyMDIsIDI0MywgMjgsIDE3NiwgMjA3LCA5NywgMjgsIDE3NiwgMjA3LCA5NiwgCi0gICAgMjgsIDE3NiwgMjA3LCA5NCwgMjgsIDE3NiwgMjA3LCA5MCwgMjgsIDE3NiwgMjA3LCA5MSwgMjgsIDE3NiwgMjAyLCAyMTIsIAotICAgIDI4LCAxNzYsIDIwMiwgMjA5LCAyOCwgMTc2LCAyMDIsIDIxMCwgMjgsIDE3NiwgMjAyLCAyMDQsIDI4LCAxNzYsIDIwMiwgCi0gICAgMjA1LCAyOCwgMTc2LCAyMDIsIDIwNiwgMjgsIDE3NiwgMjAyLCAyMDgsIDI4LCAxNzYsIDI0MCwgMjMyLCAyOCwgMTc2LCAKLSAgICAyNDAsIDIzNCwgMjgsIDE3NiwgMjAzLCAxMCwgMjgsIDE3NiwgMjM1LCAyMDUsIDI4LCAxNzYsIDIzNSwgMTk3LCAyOCwgCi0gICAgMTc2LCAyMzUsIDIwMCwgMjgsIDE3NiwgMjM1LCAxOTgsIDI4LCAxNzYsIDIzNSwgMjAyLCAyOCwgMTc2LCAyMzUsIDIwNCwgCi0gICAgMjgsIDE3NiwgMjUwLCAxMzcsIDI4LCAxNzYsIDI1MCwgMTM0LCAyOCwgMTc2LCAyNTAsIDEzMiwgMjgsIDE3NiwgMjUwLCAKLSAgICAxMzMsIDI4LCAxNzYsIDIxMSwgMTYxLCAyOCwgMTc2LCAyNTUsIDIxLCAyOCwgMTc2LCAyMDMsIDExMiwgMjgsIDE3NiwgCi0gICAgMjAzLCAzNiwgMjgsIDE3NiwgMjIwLCAxNzcsIDI4LCAxNzYsIDIyMCwgMTc2LCAyOCwgMTA3LCAyMjksIDU5LCAyOCwgMTA3LCAKLSAgICAyMTEsIDE1NiwgMjgsIDEwNywgMjI5LCA1MiwgMjgsIDEwNywgMjIyLCA5MywgMjgsIDEwNywgMjIyLCA5MSwgMjgsIDEwNywgCi0gICAgMjIyLCA5MCwgMjgsIDEwNywgMjA4LCAyNDAsIDI4LCAxMDcsIDIxNiwgNDcsIDI4LCAxMDcsIDIxNiwgNDIsIDI4LCAxMDcsIAotICAgIDIxNiwgMzksIDI4LCAxMDcsIDIxNiwgMzIsIDI4LCAxMDcsIDIxNiwgMjcsIDI4LCAxMDcsIDIxNiwgMjIsIDI4LCAxMDcsIAotICAgIDIxNiwgMzMsIDI4LCAxMDcsIDIxNiwgNDUsIDI4LCAxMDcsIDIyNCwgMTQxLCAyOCwgMTA3LCAyMTgsIDE1MywgMjgsIDEwNywgCi0gICAgMjE4LCAxNDIsIDI4LCAxMDcsIDIxMiwgMTExLCAyOCwgMTA3LCAyMTEsIDE1MCwgMjgsIDEwNywgMjMxLCAxMDYsIDI4LCAKLSAgICAxMDcsIDI0NiwgNzQsIDI4LCAxMDcsIDI0NiwgMTM4LCAyOCwgMTA3LCAyMjksIDEyMCwgMjgsIDEwNywgMjA5LCA2NiwgMjgsIAotICAgIDEwNywgMjE4LCAxOTAsIDI4LCAxMDcsIDIzNiwgMjUxLCAyOCwgMTA3LCAyMjksIDUzLCAyOCwgMTA3LCAyMjksIDUxLCAyOCwgCi0gICAgMTA3LCAyMjIsIDg5LCAyOCwgMTA3LCAyMjIsIDgzLCAyOCwgMTA3LCAyMjIsIDg1LCAyOCwgMTA3LCAyMjIsIDg4LCAyOCwgCi0gICAgMTA3LCAyMjIsIDg0LCAyOCwgMTA3LCAyMDgsIDIzNywgMjgsIDEwNywgMjA4LCAyMzQsIDI4LCAxMDcsIDIxNiwgNDAsIDI4LCAKLSAgICAxMDcsIDIxNiwgMzUsIDI4LCAxMDcsIDIxNiwgMjEsIDI4LCAxMDcsIDIxNiwgMjAsIDI4LCAxMDcsIDIxMSwgMTUyLCAyOCwgCi0gICAgMTA3LCAyMTYsIDM3LCAyOCwgMTA3LCAyMTYsIDM2LCAyOCwgMTA3LCAyMTYsIDI5LCAyOCwgMTA3LCAyMTYsIDMxLCAyOCwgCi0gICAgMTA3LCAyMTYsIDQ0LCAyOCwgMTA3LCAyMTYsIDI0LCAyOCwgMTA3LCAyMTYsIDM0LCAyOCwgMTA3LCAyMTYsIDQzLCAyOCwgCi0gICAgMTA3LCAyMTYsIDE5LCAyOCwgMTA3LCAyMjQsIDEzNywgMjgsIDEwNywgMjI0LCAxMzIsIDI4LCAxMDcsIDIyNCwgMTM0LCAKLSAgICAyOCwgMTA3LCAyMjQsIDEzMSwgMjgsIDEwNywgMjI0LCAxMjksIDI4LCAxMDcsIDIyNCwgMTM1LCAyOCwgMTA3LCAyMjQsIAotICAgIDE0MCwgMjgsIDEwNywgMjI0LCAxMzgsIDI4LCAxMDcsIDIyOSwgMjQ2LCAyOCwgMTA3LCAyMTgsIDE0NCwgMjgsIDEwNywgCi0gICAgMjE4LCAxNDUsIDI4LCAxMDcsIDIxOCwgMTUwLCAyOCwgMTA3LCAyMjksIDI0NCwgMjgsIDEwNywgMjEyLCAxMDQsIDI4LCAKLSAgICAxMDcsIDIxMiwgOTQsIDI4LCAxMDcsIDIxMiwgOTcsIDI4LCAxMDcsIDIxMiwgOTksIDI4LCAxMDcsIDIxOSwgMTA3LCAyOCwgCi0gICAgMTA3LCAyMzEsIDEwMSwgMjgsIDEwNywgMjMxLCA5NCwgMjgsIDEwNywgMjExLCAxNTcsIDI4LCAxMDcsIDIzMSwgMTAyLCAKLSAgICAyOCwgMTA3LCAyMDMsIDI5LCAyOCwgMTA3LCAyMDMsIDI1LCAyOCwgMTA3LCAyMDMsIDI2LCAyOCwgMTA3LCAyMTgsIDE4OCwgCi0gICAgMjgsIDEwNywgMjI5LCAyNDUsIDI4LCAxMDcsIDIzNiwgMjQ5LCAyOCwgMTA3LCAyMzYsIDI0NywgMjgsIDEwNywgMjM2LCAKLSAgICAyNTAsIDI4LCAxMDcsIDIzNiwgMjQ4LCAyOCwgMTA3LCAyMDMsIDM1LCAyOCwgMTA3LCAyMjksIDU1LCAyOCwgMTA3LCAyMjksIAotICAgIDU0LCAyOCwgMTA3LCAyMjksIDU4LCAyOCwgMTA3LCAyMjksIDU2LCAyOCwgMTA3LCAyMjksIDU3LCAyOCwgMTA3LCAyMTEsIAotICAgIDE1NCwgMzMsIDQsIDE1MiwgMzMsIDQsIDIzNiwgMjYsIDMzLCA0LCAyMzcsIDMsIDMzLCA0LCAyMzcsIDE1NywgMzMsIDQsIAotICAgIDIzNywgNDgsIDMzLCA0LCAyMzcsIDY3LCAzMywgNCwgMjM2LCAxMzYsIDMzLCA0LCAyMzYsIDEzNSwgMzMsIDQsIDIyOCwgCi0gICAgMTEzLCAzMywgNCwgMjI2LCAyMzksIDMzLCA0LCAyMjcsIDE0OCwgMzMsIDQsIDIyOCwgMTEyLCAzMywgNCwgMjI3LCAyMjYsIAotICAgIDMzLCA0LCAyMjcsIDIzNCwgMzMsIDQsIDIyNywgNDksIDMzLCA0LCAyMjYsIDIwNywgMzMsIDQsIDIzNywgMTIsIDMzLCA0LCAKLSAgICAyMzcsIDYsIDMzLCA0LCAyMzcsIDgsIDMzLCA0LCAyMzcsIDExLCAzMywgNCwgMjM3LCA5LCAzMywgNCwgMjM3LCAxMCwgMzMsIAotICAgIDQsIDIzNywgNywgMzMsIDQsIDIzNywgNSwgMzMsIDQsIDE5MiwgMzMsIDQsIDIyMywgMjQ2LCAzMywgNCwgMjI0LCAxNTUsIAotICAgIDMzLCA0LCAyMjUsIDE3NSwgMzMsIDQsIDIyNSwgOCwgMzMsIDQsIDIyNSwgMjAsIDMzLCA0LCAyMjQsIDgyLCAzMywgNCwgCi0gICAgMjIzLCAxODAsIDMzLCA0LCAyMTAsIDgwLCAzMywgNCwgMjEwLCA3NCwgMzMsIDQsIDIxMCwgNzYsIDMzLCA0LCAyMTAsIDc5LCAKLSAgICAzMywgNCwgMjEwLCA3NywgMzMsIDQsIDIxMCwgNzgsIDMzLCA0LCAyMTAsIDc1LCAzMywgNCwgMjEwLCA3MywgMzMsIDQsIAotICAgIDIxNiwgMjIwLCAzMywgNCwgMjE1LCAxNDUsIDMzLCA0LCAyMTYsIDU3LCAzMywgNCwgMjE2LCAyMTYsIDMzLCA0LCAyMTYsIAotICAgIDEzNSwgMzMsIDQsIDIxNiwgMTU4LCAzMywgNCwgMjE1LCAyMjcsIDMzLCA0LCAyMTUsIDExMSwgMzMsIDQsIDIxNSwgMzYsIAotICAgIDMzLCA0LCAyMTEsIDEwLCAzMywgNCwgMjEyLCAxNjIsIDMzLCA0LCAyMTUsIDMzLCAzMywgNCwgMjE0LCAxNjUsIDMzLCA0LCAKLSAgICAyMTQsIDE3NywgMzMsIDQsIDIxMiwgMTMsIDMzLCA0LCAyMTAsIDE3MiwgMzMsIDQsIDIxMywgOTAsIDMzLCA0LCAyMTIsIAotICAgIDE5OSwgMzMsIDQsIDIxMywgMTEsIDMzLCA0LCAyMTMsIDg1LCAzMywgNCwgMjEzLCA0MSwgMzMsIDQsIDIxMywgNDMsIDMzLCAKLSAgICA0LCAyMTIsIDI0MiwgMzMsIDQsIDIxMiwgMTgwLCAzMywgNCwgMjE3LCAxMjYsIDMzLCA0LCAyMTcsIDY1LCAzMywgNCwgCi0gICAgMjE3LCA4OCwgMzMsIDQsIDIxNywgMTI1LCAzMywgNCwgMjE3LCAxMDUsIDMzLCA0LCAyMTcsIDEwNiwgMzMsIDQsIDIxNywgCi0gICAgNzcsIDMzLCA0LCAyMTcsIDc2LCAzMywgNCwgMjE3LCAxOSwgMzMsIDQsIDIxNywgMTUsIDMzLCA0LCAyMTcsIDE4LCAzMywgCi0gICAgNCwgMjE3LCAxNiwgMzMsIDQsIDIxNywgMTcsIDMzLCA0LCAyMTcsIDEwMiwgMzMsIDQsIDIxNywgOTQsIDMzLCA0LCAyMTcsIAotICAgIDk3LCAzMywgNCwgMjE3LCAxMDEsIDMzLCA0LCAyMTcsIDk4LCAzMywgNCwgMjE3LCA5OSwgMzMsIDQsIDIxNywgOTYsIDMzLCAKLSAgICA0LCAyMTcsIDkzLCAzMywgNCwgMjE3LCA4OSwgMzMsIDQsIDIxNywgOTIsIDMzLCA0LCAyMTcsIDkwLCAzMywgNCwgMjE3LCAKLSAgICA5MSwgMzMsIDQsIDI0OSwgMzIsIDMzLCA0LCAyNDcsIDE5MywgMzMsIDQsIDI0OCwgODYsIDMzLCA0LCAyNDksIDMwLCAzMywgCi0gICAgNCwgMjQ4LCAxNTAsIDMzLCA0LCAyNDgsIDE2MiwgMzMsIDQsIDI0OCwgMjMsIDMzLCA0LCAyNDcsIDE0MiwgMzMsIDQsIAotICAgIDIwNiwgODYsIDMzLCA0LCAyMDQsIDE2MywgMzMsIDQsIDIwNSwgMjMwLCAzMywgNCwgMjA2LCA4NSwgMzMsIDQsIDIwNiwgCi0gICAgNTAsIDMzLCA0LCAyMDYsIDU1LCAzMywgNCwgMjA1LCAxODksIDMzLCA0LCAyMDQsIDE1NCwgMzMsIDQsIDIxMCwgMjIsIDMzLCAKLSAgICA0LCAyMDcsIDIwMywgMzMsIDQsIDIwOSwgMiwgMzMsIDQsIDIxMCwgMTgsIDMzLCA0LCAyMDksIDE3NiwgMzMsIDQsIDIwOSwgCi0gICAgMTg3LCAzMywgNCwgMTM1LCAzMywgNCwgMjA3LCAxNjAsIDMzLCA0LCAyNDcsIDkyLCAzMywgNCwgMjQ1LCAxMTAsIDMzLCA0LCAKLSAgICAyNDYsIDc5LCAzMywgNCwgMjQ3LCA5MSwgMzMsIDQsIDI0NiwgMjMwLCAzMywgNCwgMjQ2LCAyMzgsIDMzLCA0LCAyNDUsIAotICAgIDI1NCwgMzMsIDQsIDI0NSwgNzQsIDMzLCA0LCAyMDMsIDE4MiwgMzMsIDQsIDIwMywgMTUyLCAzMywgNCwgMjAzLCAxNzAsIAotICAgIDMzLCA0LCAyMDMsIDE4MSwgMzMsIDQsIDIwMywgMTc1LCAzMywgNCwgMjAzLCAxNzYsIDMzLCA0LCAyMDMsIDE2MCwgMzMsIAotICAgIDQsIDIwMywgMTU5LCAzMywgNCwgMjAzLCAxNDYsIDMzLCA0LCAyMDMsIDE0MiwgMzMsIDQsIDIwMywgMTQ1LCAzMywgNCwgCi0gICAgMjAzLCAxNDMsIDMzLCA0LCAyMDMsIDE0NCwgMzMsIDQsIDIwMSwgMjAxLCAzMywgNCwgMjIxLCA4NCwgMzMsIDQsIDIyMiwgCi0gICAgMTAwLCAzMywgNCwgMjIzLCAxMDYsIDMzLCA0LCAyMjIsIDIzNSwgMzMsIDQsIDIyMiwgMjQwLCAzMywgNCwgMjIxLCAxOTEsIAotICAgIDMzLCA0LCAyMjEsIDIwLCAzMywgNCwgMjIxLCAxMSwgMzMsIDQsIDIyMCwgMjI2LCAzMywgNCwgMjIwLCAyNDgsIDMzLCA0LCAKLSAgICAyMjEsIDEwLCAzMywgNCwgMjIxLCAwLCAzMywgNCwgMjIxLCAxLCAzMywgNCwgMjIwLCAyMzMsIDMzLCA0LCAyMjAsIDIxNiwgCi0gICAgMzMsIDQsIDIzOCwgNDUsIDYzLCAzMywgNCwgMjM4LCA0NSwgNjgsIDMzLCA0LCAyMzgsIDQ1LCA3NSwgMzMsIDQsIDIzOCwgCi0gICAgNDUsIDI1MiwgMjUsIDMzLCA0LCAyMzgsIDQ1LCAyNDEsIDE2MSwgMzMsIDQsIDIzOCwgNDUsIDc0LCAzMywgNCwgMjM4LCAKLSAgICA0NSwgNzgsIDMzLCA0LCAyMzgsIDQ1LCAyMDQsIDExMSwgMzMsIDQsIDE3MywgMzMsIDQsIDIyOCwgMjA5LCAzMywgNCwgCi0gICAgMjI5LCAxMDAsIDMzLCA0LCAyMzAsIDQxLCAzMywgNCwgMjI5LCAxOTgsIDMzLCA0LCAyMjksIDIwMSwgMzMsIDQsIDIyOSwgCi0gICAgMjYsIDMzLCA0LCAyMjksIDI1LCAzMywgNCwgMjI4LCAxNjcsIDMzLCA0LCAyMjgsIDE2MCwgMzMsIDQsIDIyOCwgMTY2LCAKLSAgICAzMywgNCwgMjI4LCAxNjEsIDMzLCA0LCAyMjgsIDE2MiwgMzMsIDQsIDIyOCwgMTUzLCAzMywgNCwgMjI4LCAxNDcsIDMzLCAKLSAgICA0LCAyMjgsIDE0OSwgMzMsIDQsIDIyOCwgMTUyLCAzMywgNCwgMjI4LCAxNTAsIDMzLCA0LCAyMjgsIDE1MSwgMzMsIDQsIAotICAgIDIyOCwgMTQ4LCAzMywgNCwgMjI4LCAxNDYsIDMzLCA0LCAyMjgsIDE0MiwgMzMsIDQsIDIyOCwgMTQ1LCAzMywgNCwgMjI4LCAKLSAgICAxNDMsIDMzLCA0LCAyMjgsIDE0NCwgMzMsIDQsIDIwNCwgMTExLCAzMywgNCwgMjAzLCAyMTcsIDMzLCA0LCAyMDQsIDMwLCAKLSAgICAzMywgNCwgMjA0LCAxMTAsIDMzLCA0LCAyMDQsIDU1LCAzMywgNCwgMjA0LCA2MiwgMzMsIDQsIDIwNCwgMCwgMzMsIDQsIAotICAgIDIwMywgMjU1LCAzMywgNCwgMjE4LCAxOTksIDYzLCAzMywgNCwgMjE4LCAxOTksIDY4LCAzMywgNCwgMjE4LCAxOTksIDc1LCAKLSAgICAzMywgNCwgMjE4LCAxOTksIDI1MiwgMjUsIDMzLCA0LCAyMTgsIDE5OSwgMjQxLCAxNjEsIDMzLCA0LCAyMTgsIDE5OSwgNzQsIAotICAgIDMzLCA0LCAyMTgsIDE5OSwgNzgsIDMzLCA0LCAyMDIsIDExNiwgMzMsIDQsIDIwMiwgNiwgMzMsIDQsIDIwMiwgMzksIDMzLCAKLSAgICA0LCAyMDIsIDExNCwgMzMsIDQsIDIwMiwgOTAsIDMzLCA0LCAyMDIsIDkyLCAzMywgNCwgMjAyLCAxNywgMzMsIDQsIDIwMSwgCi0gICAgMjQ5LCAzMywgNCwgMjAyLCA4MCwgMzMsIDQsIDIwMiwgNTcsIDMzLCA0LCAyMDIsIDY2LCAzMywgNCwgMjAyLCA3OSwgMzMsIAotICAgIDQsIDIwMiwgNzAsIDMzLCA0LCAyMDIsIDcxLCAzMywgNCwgMjAyLCA2MywgMzMsIDQsIDIwMiwgNDgsIDMzLCA0LCAxOTgsIAotICAgIDMzLCA0LCAyMDIsIDIxMywgMzMsIDQsIDIwMywgMTEsIDMzLCA0LCAyMDMsIDExMCwgMzMsIDQsIDIwMywgNDksIDMzLCA0LCAKLSAgICAyMDMsIDUyLCAzMywgNCwgMjAyLCAyNDcsIDMzLCA0LCAyMDIsIDIzOCwgMzMsIDQsIDI0NCwgMjEyLCAzMywgNCwgMjQyLCAKLSAgICA0MiwgMzMsIDQsIDI0MywgMjMzLCAzMywgNCwgMjQ0LCAyMTEsIDMzLCA0LCAyNDQsIDYxLCAzMywgNCwgMjQ0LCA3NSwgMzMsIAotICAgIDQsIDI0MywgMTEzLCAzMywgNCwgMjQyLCAxMCwgMzMsIDQsIDI0NCwgMTIwLCAzMywgNCwgMjQ0LCA4NSwgMzMsIDQsIDI0NCwgCi0gICAgOTcsIDMzLCA0LCAyNDQsIDExOSwgMzMsIDQsIDI0NCwgMTA3LCAzMywgNCwgMjQ0LCAxMDgsIDMzLCA0LCAyNDQsIDkwLCAKLSAgICAzMywgNCwgMjQ0LCA3NiwgMzMsIDQsIDIzMCwgMTgxLCAzMywgNCwgMjMwLCA4MiwgMzMsIDQsIDIzMCwgMTQxLCAzMywgNCwgCi0gICAgMjMwLCAxODAsIDMzLCA0LCAyMzAsIDE1OSwgMzMsIDQsIDIzMCwgMTYxLCAzMywgNCwgMjMwLCAxMDEsIDMzLCA0LCAyMzAsIAotICAgIDYyLCAzMywgNCwgMjM5LCA4LCAzMywgNCwgMjM3LCAyMzAsIDMzLCA0LCAyMzgsIDgxLCAzMywgNCwgMjM5LCA1LCAzMywgNCwgCi0gICAgMjM4LCAxODIsIDMzLCA0LCAyMzgsIDE5MCwgMzMsIDQsIDIzOCwgMzksIDMzLCA0LCAyMzgsIDM4LCAzMywgNCwgMjM3LCAKLSAgICAxOTAsIDMzLCA0LCAyMzcsIDE4NiwgMzMsIDQsIDIzNywgMTg5LCAzMywgNCwgMjM3LCAxODcsIDMzLCA0LCAyMzcsIDE4OCwgCi0gICAgMzMsIDQsIDIzOCwgMTU1LCAzMywgNCwgMjM4LCAxMzUsIDMzLCA0LCAyMzgsIDE0NSwgMzMsIDQsIDIzOCwgMTU0LCAzMywgCi0gICAgNCwgMjM4LCAxNDksIDMzLCA0LCAyMzgsIDE1MCwgMzMsIDQsIDIzOCwgMTM5LCAzMywgNCwgMjM4LCAxMjQsIDMzLCA0LCAKLSAgICAyMDksIDEwOCwgMzMsIDQsIDIwOSwgMjIsIDMzLCA0LCAyMDksIDcwLCAzMywgNCwgMjA5LCAxMDcsIDMzLCA0LCAyMDksIAotICAgIDkwLCAzMywgNCwgMjA5LCA5MiwgMzMsIDQsIDIwOSwgNDcsIDMzLCA0LCAyMDksIDEzLCAzMywgNCwgMjQ2LCAxOTksIDMzLCAKLSAgICA0LCAyNDYsIDk4LCAzMywgNCwgMjQ2LCAxNDIsIDMzLCA0LCAyNDYsIDE5OCwgMzMsIDQsIDI0NiwgMTY2LCAzMywgNCwgCi0gICAgMjQ2LCAxNzAsIDMzLCA0LCAyNDYsIDExNiwgMzMsIDQsIDI0NiwgODcsIDMzLCA0LCAyMTgsIDIwOCwgMzMsIDQsIDIxOCwgCi0gICAgMTczLCAzMywgNCwgMjE4LCAxOTIsIDMzLCA0LCAyMTgsIDIwNywgMzMsIDQsIDIxOCwgMTk0LCAzMywgNCwgMjE4LCAxOTUsIAotICAgIDMzLCA0LCAyMTgsIDE4MCwgMzMsIDQsIDIxOCwgMTY5LCAzMywgNCwgMjA4LCAyMCwgMzMsIDQsIDIwNywgMjQ5LCAzMywgNCwgCi0gICAgMjA3LCAyNTUsIDMzLCA0LCAyMDgsIDE5LCAzMywgNCwgMjA4LCAxMywgMzMsIDQsIDIwOCwgMTQsIDMzLCA0LCAyMDcsIAotICAgIDI1MywgMzMsIDQsIDIwNywgMjQ3LCAzMywgNCwgMjA3LCAxMDYsIDMzLCA0LCAyMDcsIDk4LCAzMywgNCwgMjA3LCAxMDIsIAotICAgIDMzLCA0LCAyMDcsIDEwNSwgMzMsIDQsIDIwNywgMTAzLCAzMywgNCwgMjA3LCAxMDQsIDMzLCA0LCAyMDcsIDEwMCwgMzMsIAotICAgIDQsIDIwNywgOTksIDMzLCA0LCAyNDAsIDEwOCwgMzMsIDQsIDIzOSwgMTA4LCAzMywgNCwgMjQwLCAyNiwgMzMsIDQsIDI0MCwgCi0gICAgMTA3LCAzMywgNCwgMjQwLCA1MywgMzMsIDQsIDI0MCwgNjAsIDMzLCA0LCAyMzksIDE4NiwgMzMsIDQsIDIzOSwgODYsIDMzLCAKLSAgICA0LCAxODUsIDMzLCA0LCAyMTcsIDE5MSwgMzMsIDQsIDIxOCwgMTY3LCAzMywgNCwgMjE5LCAxNjgsIDMzLCA0LCAyMTksIAotICAgIDIzLCAzMywgNCwgMjE5LCAzNCwgMzMsIDQsIDIxOCwgNjksIDMzLCA0LCAyMTcsIDE1MiwgMzMsIDQsIDIxNSwgMTAxLCAzMywgCi0gICAgNCwgMjIzLCAxNjksIDMzLCA0LCAyMzksIDgwLCAzMywgMzksIDIzOCwgMTc5LCAyNSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIAotICAgIDM5LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgMzksIDIzOCwgMTc5LCA4MiwgMzMsIDIxNCwgMTY4LCA4MiwgMzMsIDIwMywgCi0gICAgMjM3LCAzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDMzLCAyNDUsIDIzMywgMzMsIDIxMywgMTQzLCAzMywgMjQ1LCAyNDIsIDMzLCAKLSAgICAyMTcsIDI0NiwgMjQ1LCAyNDIsIDMzLCAyMTcsIDQ3LCA4MiwgMzMsIDIxOSwgODksIDIxMywgMTMwLCAzMywgMTcsIDEwNSwgCi0gICAgMzMsIDE3LCAxMDgsIDMzLCAxNywgMTQ3LCAzMywgMTcsIDE0OSwgMzMsIDE3LCAxNzAsIDMzLCAxNywgMTk1LCAzMywgMTcsIAotICAgIDIxMywgMTExLCAzMywgMTcsIDE5OSwgMzMsIDE3LCAyMjIsIDYzLCAzMywgNDIsIDIwOSwgMTUyLCAzMywgNDIsIDIwNywgCi0gICAgMTUxLCAzMywgNDIsIDIwOSwgNTMsIDMzLCA0MiwgMjM5LCAxNTMsIDMzLCA0MiwgMjQwLCAxOCwgMzMsIDQyLCAyMTIsIDc0LCAKLSAgICAzMywgNDIsIDIxMywgMTA1LCAzMywgNDIsIDI0MSwgMTM0LCAzMywgNDIsIDIyMiwgNTgsIDMzLCA0MiwgMjM2LCAxMSwgMzMsIAotICAgIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMzMsIDQsIDIxNCwgMTczLCAyMjMsIDE4MCwgMzMsIDQsIDIyMywgMTc2LCAzMywgNCwgCi0gICAgMjIzLCAxNzcsIDMzLCA0LCAyMjMsIDE3OCwgMzMsIDQsIDIxNCwgMTczLCAyNDcsIDE0MiwgMzMsIDQsIDI0NywgMTM5LCAKLSAgICAzMywgNCwgMjQ3LCAxNDAsIDMzLCA0LCAyNDcsIDE0MSwgMzMsIDQsIDIxNCwgMTczLCAyMzksIDg2LCAzMywgNCwgMjM5LCAKLSAgICA4MiwgMzMsIDQsIDIzOSwgODMsIDMzLCA0LCAyMzksIDg0LCAzMywgNCwgMjE0LCAxNzMsIDIxNywgMTUyLCAzMywgNCwgCi0gICAgMjE3LCAxNDgsIDMzLCA0LCAyMTcsIDE0OSwgMzMsIDQsIDIxNywgMTUwLCAzMywgMjA4LCAxNjIsIDEzMSwgMjAyLCAyNTAsIAotICAgIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDQsIDIyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgCi0gICAgMjEyLCAyMjgsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0MywgMjA3LCAzMywgMjA4LCAxNjIsIDEzMSwgMjI5LCAKLSAgICAxNzksIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDYsIDEyNCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIzNywgMCwgMzMsIDIwOCwgCi0gICAgMTYyLCAxMzEsIDI0NCwgMjEsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjgsIDE4MSwgOTAsIDEsIDYzLCA5MCwgMSwgNzQsIDkwLCAKLSAgICAxLCA3NSwgOTAsIDEsIDc4LCA5MCwgMSwgNjgsIDkwLCAxLCAyMDYsIDE2NCwgOTAsIDEsIDIzOSwgOCwgOTAsIDEsIDE3MywgCi0gICAgOTAsIDEsIDIzOCwgMTkwLCA5MCwgMSwgMjM4LCA4MSwgOTAsIDEsIDIzOCwgMzksIDkwLCAxLCAyMzcsIDIzMCwgOTAsIDEsIAotICAgIDIzNywgMTkyLCA5MCwgMSwgMTUyLCA5MCwgMSwgMjM3LCA2NywgOTAsIDEsIDIzNywgMywgOTAsIDEsIDIzNiwgMTM2LCA5MCwgCi0gICAgMSwgMjM2LCAyNiwgOTAsIDEsIDIzNSwgMjU1LCA5MCwgMSwgMjI4LCAxMTMsIDkwLCAxLCAyMjcsIDIzNCwgOTAsIDEsIAotICAgIDIyNywgMTQ4LCA5MCwgMSwgMjI3LCA0OSwgOTAsIDEsIDIyNiwgMjM5LCA5MCwgMSwgMjI2LCAyMDgsIDkwLCAxLCAxOTIsIAotICAgIDkwLCAxLCAyMjUsIDIwLCA5MCwgMSwgMjI0LCAxNTUsIDkwLCAxLCAyMjQsIDgyLCA5MCwgMSwgMjIzLCAyNDYsIDkwLCAxLCAKLSAgICAyMDEsIDIwMSwgOTAsIDEsIDIzNiwgMTYwLCA5MCwgMSwgMjIzLCA5MywgOTAsIDEsIDIyMiwgMjQwLCA5MCwgMSwgMjIyLCAKLSAgICAxMDAsIDkwLCAxLCAyMjEsIDE5MSwgOTAsIDEsIDIyMSwgODQsIDkwLCAxLCAyMjEsIDIyLCA5MCwgMSwgMjE3LCA2NCwgOTAsIAotICAgIDEsIDIxNywgNTAsIDkwLCAxLCAyMTcsIDQzLCA5MCwgMSwgMjE3LCAzNCwgOTAsIDEsIDIxNywgMjMsIDkwLCAxLCAyMTcsIAotICAgIDIxLCA5MCwgMSwgMjE1LCAzNiwgOTAsIDEsIDE5NCwgOTAsIDEsIDIxNCwgMTc3LCA5MCwgMSwgMjEyLCAxNjIsIDkwLCAxLCAKLSAgICAyMTIsIDEzLCA5MCwgMSwgMjExLCAxMCwgOTAsIDEsIDIxMCwgMTc3LCA5MCwgMSwgMjQ0LCAyMTIsIDkwLCAxLCAyMTAsIAotICAgIDIyLCA5MCwgMSwgMjQ0LCA3NSwgOTAsIDEsIDIwOSwgMTg3LCA5MCwgMSwgMjQzLCAyMzMsIDkwLCAxLCAyMDksIDIsIDkwLCAKLSAgICAxLCAyNDMsIDExMywgOTAsIDEsIDI0MiwgNDIsIDkwLCAxLCAyNDIsIDEzLCA5MCwgMSwgMjQzLCAxMjQsIDkwLCAxLCAyMDgsIAotICAgIDE5MCwgOTAsIDEsIDIwOCwgMTg5LCA5MCwgMSwgMjA4LCAxNzgsIDkwLCAxLCAyMDgsIDE3NywgOTAsIDEsIDIwOCwgMTc2LCAKLSAgICA5MCwgMSwgMjA4LCAxNzUsIDkwLCAxLCAyMDgsIDIwLCA5MCwgMSwgMjA4LCAxNCwgOTAsIDEsIDIwNywgMjU1LCA5MCwgMSwgCi0gICAgMjA3LCAyNTMsIDkwLCAxLCAyMDcsIDI0OSwgOTAsIDEsIDIwNywgMjQ4LCA5MCwgMSwgMjA0LCAxMTEsIDkwLCAxLCAyMDQsIAotICAgIDYyLCA5MCwgMSwgMjA0LCAzMCwgOTAsIDEsIDIwNCwgMCwgOTAsIDEsIDIwMywgMjE3LCA5MCwgMSwgMjAzLCAyMDQsIDkwLCAKLSAgICAxLCAxOTgsIDkwLCAxLCAyMDMsIDUyLCA5MCwgMSwgMjAzLCAxMSwgOTAsIDEsIDIwMiwgMjQ3LCA5MCwgMSwgMjAyLCAyMTMsIAotICAgIDkwLCAxLCAyMDIsIDE3NywgOTAsIDEsIDIyMywgMTg3LCA5MCwgNSwgMSwgMjAzLCA1MiwgOTAsIDUsIDEsIDIwMywgMTEsIAotICAgIDkwLCA1LCAxLCAyMDIsIDI0NywgOTAsIDUsIDEsIDIwMiwgMjEzLCA5MCwgNSwgMSwgMjAyLCAxNzcsIDkwLCA1LCAxLCAKLSAgICAyMjMsIDE4NywgMTksIDIwLCAyMzUsIDIyMCwgMTksIDIwLCA3NCwgMTksIDIwLCAyNTEsIDI0NSwgMTksIDIwLCA3NSwgMTksIAotICAgIDIwLCAyMzEsIDgzLCAxOSwgMjAsIDc4LCAxOSwgMjAsIDIyMCwgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyMCwgMTgsIDE5LCAKLSAgICAyMCwgODgsIDI0MSwgMTYxLCAxOSwgMjAsIDg4LCA3NSwgMTksIDIwLCA2MywgMTksIDIwLCAyNTIsIDI1LCAxOSwgMjAsIAotICAgIDIwNCwgNjIsIDE5LCAyMCwgMTk2LCAyMDQsIDYyLCAxOSwgMjAsIDIwNCwgMzAsIDE5LCAyMCwgMTk2LCAyMDQsIDMwLCAxOSwgCi0gICAgMjAsIDIwNCwgMTksIDE5LCAyMCwgMTk2LCAyMDQsIDE5LCAxOSwgMjAsIDIwNCwgMCwgMTksIDIwLCAxOTYsIDIwNCwgMCwgCi0gICAgMTksIDIwLCAyMDMsIDI0NCwgMTksIDIwLCAxOTYsIDIwMywgMjQ0LCAxOSwgMjAsIDIyMywgNjgsIDIwMywgMjQ0LCAxOSwgCi0gICAgMjAsIDIwNCwgMTExLCAxOSwgMjAsIDE5NiwgMjA0LCAxMTEsIDE5LCAyMCwgMjA0LCAxMTAsIDE5LCAyMCwgMTk2LCAyMDQsIAotICAgIDExMCwgMTksIDIwLCAyMjMsIDY4LCAyMDQsIDExMCwgMTksIDIwLCAyNTEsIDY0LCAxOSwgMjAsIDIwMywgMTIzLCAyMDQsIAotICAgIDE0NCwgMTksIDIwLCAyMzgsIDQ1LCAyMTEsIDYxLCAxOSwgMjAsIDQ2LCAxNjUsIDE5LCAyMCwgNDYsIDIzNywgMjUzLCAxOSwgCi0gICAgMjAsIDQ2LCAyNDcsIDI0OCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjA4LCAxNDUsIDE2MiwgMjE1LCAyNTIsIDE5LCAKLSAgICAyMCwgNDYsIDUwLCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgNTIsIDE2NSwgMTksIAotICAgIDIwLCA0NiwgNTIsIDIxMiwgMjI4LCA4MCwgMjExLCAxOSwgMTksIDIwLCA0NiwgMTAxLCAyNDMsIDg1LCAxOSwgMjAsIDQ2LCAKLSAgICAyMTIsIDIyOCwgMjM2LCAxMDYsIDk1LCAxOSwgMjAsIDQ2LCAyMTgsIDc2LCAxOSwgMjAsIDQ2LCAxMjEsIDIxMCwgMywgMTksIAotICAgIDIwLCAyNDEsIDkyLCAxOSwgMjAsIDIzMSwgNDksIDE5LCAyMCwgMjIwLCAzMSwgMTksIDIwLCAyNTAsIDIzMSwgMTksIDIwLCAKLSAgICAyMTksIDM0LCAxOSwgMjAsIDIxOSwgMTY2LCAxOSwgMjAsIDIxOCwgMTY3LCAxOSwgMjAsIDIxOCwgMTI5LCAxOSwgMjAsIAotICAgIDIxOCwgNjksIDE5LCAyMCwgMjE4LCA0NSwgMTksIDIwLCAyMDMsIDEyMywgMjE4LCA0NSwgMTksIDIwLCA4OCwgMjM3LCA0OCwgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAzLCAxOSwgMjAsIDE4NSwgMTksIDIwLCAyMTksIDE2OCwgMTksIDIwLCAyMTcsIDE1MCwgMTksIAotICAgIDIwLCAxOTYsIDIxNywgMTUwLCAxOSwgMjAsIDIxNywgMTQ4LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDgsIDE5LCAyMCwgMjE3LCAKLSAgICAxNDcsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NywgMTksIDIwLCAyMTcsIDE0NSwgMTksIDIwLCAxOTYsIDIxNywgMTQ1LCAxOSwgCi0gICAgMjAsIDIxNywgMTQ0LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDQsIDE5LCAyMCwgMjE3LCAxNTIsIDE5LCAyMCwgMTk2LCAyMTcsIAotICAgIDE1MiwgMTksIDIwLCAyMTcsIDE1MSwgMTksIDIwLCAxOTYsIDIxNywgMTUxLCAxOSwgMjAsIDIwMywgMTIzLCAyMTcsIDE1MSwgCi0gICAgMTksIDIwLCAyMTksIDE4NCwgMTksIDIwLCAxOTYsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDE3MSwgMTksIDIwLCAKLSAgICAyMDksIDE4NywgMTksIDIwLCAyMTAsIDE2LCAxOSwgMjAsIDIwOSwgMiwgMTksIDIwLCAyMDgsIDI0MiwgMTksIDIwLCAxMzUsIAotICAgIDE5LCAyMCwgMjA4LCAxNDgsIDE5LCAyMCwgMjAzLCAxMjMsIDIwOCwgMTQ4LCAxOSwgMjAsIDg4LCAyNDQsIDYxLCAxOSwgCi0gICAgMjAsIDg4LCAyNDMsIDIzMywgMTksIDIwLCAyMTAsIDIyLCAxOSwgMjAsIDIxMCwgMTgsIDE5LCAyMCwgMjA3LCAxNTgsIDE5LCAKLSAgICAyMCwgMTk2LCAyMDcsIDE1OCwgMTksIDIwLCAyMDcsIDE0MCwgMTksIDIwLCAxOTYsIDIwNywgMTQwLCAxOSwgMjAsIDIwNywgCi0gICAgMTM5LCAxOSwgMjAsIDE5NiwgMjA3LCAxMzksIDE5LCAyMCwgMTA4LCAxOSwgMjAsIDE5NiwgMTA4LCAxOSwgMjAsIDIwNywgCi0gICAgMTMwLCAxOSwgMjAsIDE5NiwgMjA3LCAxMzAsIDE5LCAyMCwgMjA3LCAxNjAsIDE5LCAyMCwgMTk2LCAyMDcsIDE2MCwgMTksIAotICAgIDIwLCAyMDcsIDE1OSwgMTksIDIwLCAxOTYsIDIwNywgMTU5LCAxOSwgMjAsIDIyMywgNjgsIDIwNywgMTU5LCAxOSwgMjAsIAotICAgIDIxMCwgNjksIDE5LCAyMCwgMjA3LCAyMzYsIDE5LCAyMCwgMjA3LCAyMjAsIDE5LCAyMCwgMjA3LCAyMTgsIDE5LCAyMCwgCi0gICAgMjA3LCAyNDEsIDE5LCAyMCwgMjI5LCAyMDEsIDE5LCAyMCwgMjMwLCAzNiwgMTksIDIwLCAyMjksIDEwMCwgMTksIDIwLCAKLSAgICAyMjksIDg3LCAxOSwgMjAsIDIyOSwgMjYsIDE5LCAyMCwgMjI5LCA2LCAxOSwgMjAsIDIwMywgMTIzLCAyMjksIDYsIDE5LCAKLSAgICAyMCwgMTczLCAxOSwgMjAsIDIzMCwgNDEsIDE5LCAyMCwgMjI4LCAxNjIsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MiwgMTksIAotICAgIDIwLCAyMjgsIDE2MCwgMTksIDIwLCAxOTYsIDIyOCwgMTYwLCAxOSwgMjAsIDIyOCwgMTU5LCAxOSwgMjAsIDE5NiwgMjI4LCAKLSAgICAxNTksIDE5LCAyMCwgMjI4LCAxNTcsIDE5LCAyMCwgMTk2LCAyMjgsIDE1NywgMTksIDIwLCAyMjgsIDE1NiwgMTksIDIwLCAKLSAgICAxOTYsIDIyOCwgMTU2LCAxOSwgMjAsIDIyOCwgMTY3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNjcsIDE5LCAyMCwgMjI4LCAxNjYsIAotICAgIDE5LCAyMCwgMTk2LCAyMjgsIDE2NiwgMTksIDIwLCAyMjMsIDY4LCAyMjgsIDE2NiwgMTksIDIwLCAyMzAsIDU0LCAxOSwgCi0gICAgMjAsIDIyOCwgMTY4LCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDE5MSwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCA4OCwgMTksIAotICAgIDIwLCAyMTEsIDIzNywgMjI5LCAyMCwgMTksIDIwLCAyMTEsIDIzNywgMjMwLCAyMCwgMTksIDIwLCAyNDYsIDIzOCwgMTksIAotICAgIDIwLCAyNDcsIDkwLCAxOSwgMjAsIDI0NiwgNzksIDE5LCAyMCwgMjQ2LCA2OSwgMTksIDIwLCAyNDUsIDI1NCwgMTksIDIwLCAKLSAgICAyNDUsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjQ1LCAxODAsIDE5LCAyMCwgMjQ3LCA5MiwgMTksIDIwLCAyNDcsIDkxLCAKLSAgICAxOSwgMjAsIDI0NSwgNzIsIDE5LCAyMCwgMTk2LCAyNDUsIDcyLCAxOSwgMjAsIDI0NSwgNzAsIDE5LCAyMCwgMTk2LCAyNDUsIAotICAgIDcwLCAxOSwgMjAsIDI0NSwgNjksIDE5LCAyMCwgMTk2LCAyNDUsIDY5LCAxOSwgMjAsIDI0NSwgNjgsIDE5LCAyMCwgMTk2LCAKLSAgICAyNDUsIDY4LCAxOSwgMjAsIDI0NSwgNjcsIDE5LCAyMCwgMTk2LCAyNDUsIDY3LCAxOSwgMjAsIDI0NSwgNzQsIDE5LCAyMCwgCi0gICAgMTk2LCAyNDUsIDc0LCAxOSwgMjAsIDI0NSwgNzMsIDE5LCAyMCwgMTk2LCAyNDUsIDczLCAxOSwgMjAsIDIyMywgNjgsIAotICAgIDI0NSwgNzMsIDE5LCAyMCwgMjQ3LCAxMjUsIDE5LCAyMCwgMjE0LCAyMDYsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNSwgMjAsIAotICAgIDE5LCAyMCwgMjI1LCAxNzQsIDE5LCAyMCwgMjI0LCAxNTUsIDE5LCAyMCwgMjI0LCAxMjUsIDE5LCAyMCwgMjI0LCA4MiwgCi0gICAgMTksIDIwLCAyMjQsIDM1LCAxOSwgMjAsIDIwMywgMTIzLCAyMjQsIDM1LCAxOSwgMjAsIDE5MiwgMTksIDIwLCAyMjUsIAotICAgIDE3NSwgMTksIDIwLCAyMjMsIDE3OCwgMTksIDIwLCAxOTYsIDIyMywgMTc4LCAxOSwgMjAsIDIyMywgMTc2LCAxOSwgMjAsIAotICAgIDE5NiwgMjIzLCAxNzYsIDE5LCAyMCwgMjIzLCAxNzUsIDE5LCAyMCwgMTk2LCAyMjMsIDE3NSwgMTksIDIwLCAyMjMsIDE3NCwgCi0gICAgMTksIDIwLCAxOTYsIDIyMywgMTc0LCAxOSwgMjAsIDIyMywgMTczLCAxOSwgMjAsIDE5NiwgMjIzLCAxNzMsIDE5LCAyMCwgCi0gICAgMjIzLCAxODAsIDE5LCAyMCwgMTk2LCAyMjMsIDE4MCwgMTksIDIwLCAyMjMsIDE3OSwgMTksIDIwLCAxOTYsIDIyMywgMTc5LCAKLSAgICAxOSwgMjAsIDIyMywgNjgsIDIyMywgMTc5LCAxOSwgMjAsIDIyNiwgMTg1LCAxOSwgMjAsIDE5NiwgMjI2LCAxODUsIDE5LCAKLSAgICAyMCwgMjI0LCAxNTksIDE5LCAyMCwgMjUwLCA0OCwgMjI2LCAxODUsIDE5LCAyMCwgMjE0LCAyMDYsIDIyNiwgMTg1LCAxOSwgCi0gICAgMjAsIDIyMiwgMjQwLCAxOSwgMjAsIDIyMywgMTA1LCAxOSwgMjAsIDIyMiwgMTAwLCAxOSwgMjAsIDIyMiwgNzUsIDE5LCAKLSAgICAyMCwgMjIxLCAxOTEsIDE5LCAyMCwgMjIxLCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMSwgCi0gICAgMjAxLCAxOSwgMjAsIDIyMywgMTA2LCAxOSwgMjAsIDIyMSwgMTgsIDE5LCAyMCwgMTk2LCAyMjEsIDE4LCAxOSwgMjAsIAotICAgIDIyMSwgMjAsIDE5LCAyMCwgMTk2LCAyMjEsIDIwLCAxOSwgMjAsIDIyMSwgMTksIDE5LCAyMCwgMTk2LCAyMjEsIDE5LCAxOSwgCi0gICAgMjAsIDIyMywgNjgsIDIyMSwgMTksIDE5LCAyMCwgMjIzLCAxNjMsIDE5LCAyMCwgODgsIDIyMiwgMjA1LCAxOSwgMjAsIAotICAgIDIyMiwgMTA1LCAxOSwgMjAsIDIyNywgMjM0LCAxOSwgMjAsIDIyOCwgMTExLCAxOSwgMjAsIDIyNywgMTQ4LCAxOSwgMjAsIAotICAgIDIyNywgMTMwLCAxOSwgMjAsIDIyNywgNDksIDE5LCAyMCwgMjI3LCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjI3LCAxOCwgCi0gICAgMTksIDIwLCAyMjgsIDExMywgMTksIDIwLCAyMjgsIDExMiwgMTksIDIwLCAyMjYsIDIwNSwgMTksIDIwLCAxOTYsIDIyNiwgCi0gICAgMjA1LCAxOSwgMjAsIDIyNiwgMjA0LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDQsIDE5LCAyMCwgMjI2LCAyMDMsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjYsIDIwMywgMTksIDIwLCAyMjYsIDIwMiwgMTksIDIwLCAxOTYsIDIyNiwgMjAyLCAxOSwgMjAsIDIyNiwgMjAxLCAKLSAgICAxOSwgMjAsIDE5NiwgMjI2LCAyMDEsIDE5LCAyMCwgMjI2LCAyMDcsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNywgMTksIDIwLCAKLSAgICAyMjYsIDIwNiwgMTksIDIwLCAxOTYsIDIyNiwgMjA2LCAxOSwgMjAsIDE1OSwgMTksIDIwLCAxOTYsIDE1OSwgMTksIDIwLCAKLSAgICAxNzQsIDE1OSwgMTksIDIwLCAyMTQsIDE3NywgMTksIDIwLCAyMTUsIDMxLCAxOSwgMjAsIDIxMiwgMTYyLCAxOSwgMjAsIAotICAgIDIxMiwgMTQyLCAxOSwgMjAsIDIxMiwgMTMsIDE5LCAyMCwgMjExLCAyNTAsIDE5LCAyMCwgMjAzLCAxMjMsIDIxMSwgMjUwLCAKLSAgICAxOSwgMjAsIDIxNSwgMzYsIDE5LCAyMCwgMjE1LCAzMywgMTksIDIwLCAyMTAsIDE2OCwgMTksIDIwLCAxOTYsIDIxMCwgCi0gICAgMTY4LCAxOSwgMjAsIDIxMCwgMTYyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNjIsIDE5LCAyMCwgMjEwLCAxNjEsIDE5LCAyMCwgCi0gICAgMTk2LCAyMTAsIDE2MSwgMTksIDIwLCAyMTAsIDE1NywgMTksIDIwLCAxOTYsIDIxMCwgMTU3LCAxOSwgMjAsIDIxMCwgMTU2LCAKLSAgICAxOSwgMjAsIDE5NiwgMjEwLCAxNTYsIDE5LCAyMCwgMjEwLCAxNzIsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MiwgMTksIDIwLCAKLSAgICAyMTAsIDE3MSwgMTksIDIwLCAxOTYsIDIxMCwgMTcxLCAxOSwgMjAsIDIyMywgNjgsIDIxMCwgMTcxLCAxOSwgMjAsIDE5NCwgCi0gICAgMTksIDIwLCAyNTAsIDQ4LCAxOTQsIDE5LCAyMCwgMjEwLCAxNzMsIDE5LCAyMCwgMjQ4LCA0MCwgMTk0LCAxOSwgMjAsIAotICAgIDIyNCwgMjgsIDIxMiwgNzAsIDE5LCAyMCwgMjIzLCA2OCwgMjEyLCA2MSwgMTksIDIwLCAyMjMsIDY4LCAyMTUsIDkyLCAxOSwgCi0gICAgMjAsIDIyMywgNjgsIDIxMSwgMTc5LCAxOSwgMjAsIDIyMywgNjgsIDIxMSwgMTMsIDE5LCAyMCwgMjIzLCA2OCwgMjEyLCAKLSAgICA2MCwgMTksIDIwLCAyMjMsIDY4LCAyMTQsIDE4MCwgMTksIDIwLCAyMTMsIDQzLCAxOSwgMjAsIDIxMywgMTEsIDE5LCAyMCwgCi0gICAgMjEzLCA2LCAxOSwgMjAsIDIxMiwgMjQyLCAxOSwgMjAsIDIxMiwgMjM2LCAxOSwgMjAsIDIxMywgOTAsIDE5LCAyMCwgMjEzLCAKLSAgICA4NSwgMTksIDIwLCAyMTIsIDE3NywgMTksIDIwLCAxOTYsIDIxMiwgMTc3LCAxOSwgMjAsIDIxMiwgMTc2LCAxOSwgMjAsIAotICAgIDE5NiwgMjEyLCAxNzYsIDE5LCAyMCwgMjEyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NSwgMTksIDIwLCAyMTIsIDE3NCwgCi0gICAgMTksIDIwLCAxOTYsIDIxMiwgMTc0LCAxOSwgMjAsIDIxMiwgMTczLCAxOSwgMjAsIDE5NiwgMjEyLCAxNzMsIDE5LCAyMCwgCi0gICAgMjEyLCAxODAsIDE5LCAyMCwgMTk2LCAyMTIsIDE4MCwgMTksIDIwLCAyMTIsIDE3OSwgMTksIDIwLCAxOTYsIDIxMiwgMTc5LCAKLSAgICAxOSwgMjAsIDIxMywgOTIsIDE5LCAyMCwgMjAzLCA1MiwgMTksIDIwLCAyMDMsIDEwOCwgMTksIDIwLCAyMDMsIDExLCAxOSwgCi0gICAgMjAsIDIwMywgMiwgMTksIDIwLCAyMDIsIDI0NywgMTksIDIwLCAyMDIsIDIzMiwgMTksIDIwLCAyMDMsIDEyMywgMjAyLCAKLSAgICAyMzIsIDE5LCAyMCwgMTk4LCAxOSwgMjAsIDIwMywgMTEwLCAxOSwgMjAsIDIwMiwgMTc0LCAxOSwgMjAsIDE5NiwgMjAyLCAKLSAgICAxNzQsIDE5LCAyMCwgMjAyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MywgMTksIDIwLCAyMDIsIDE3MiwgMTksIDIwLCAKLSAgICAxOTYsIDIwMiwgMTcyLCAxOSwgMjAsIDIwMiwgMTcxLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzEsIDE5LCAyMCwgMjAyLCAxNzAsIAotICAgIDE5LCAyMCwgMTk2LCAyMDIsIDE3MCwgMTksIDIwLCAyMDIsIDE3NiwgMTksIDIwLCAxOTYsIDIwMiwgMTc2LCAxOSwgMjAsIAotICAgIDIwMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzUsIDE5LCAyMCwgMjIzLCA2OCwgMjAyLCAxNzUsIDE5LCAyMCwgMjAzLCAKLSAgICAxMjQsIDE5LCAyMCwgMjQ4LCA4NCwgMjAzLCAxMjQsIDE5LCAyMCwgMTk2LCAyMDMsIDEyNCwgMTksIDIwLCAyMTQsIDIwNiwgCi0gICAgMjAzLCAxMSwgMTksIDIwLCAyMTYsIDE1OCwgMTksIDIwLCAyMTcsIDAsIDIxNiwgMTU4LCAxOSwgMjAsIDE5NiwgMjI3LCAKLSAgICAyMzQsIDE5LCAyMCwgMjE2LCAyMTUsIDE5LCAyMCwgMjE2LCA1NywgMTksIDIwLCAyMTYsIDMsIDE5LCAyMCwgMjE1LCAyMjcsIAotICAgIDE5LCAyMCwgMjE1LCAyMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDQ5LCAxOSwgMjAsIDIxNiwgMjIwLCAxOSwgMjAsIDIxNiwgCi0gICAgMjE2LCAxOSwgMjAsIDE5NiwgMjI4LCAxMTMsIDE5LCAyMCwgMjE1LCAxMTAsIDE5LCAyMCwgMTk2LCAyMTUsIDExMCwgMTksIAotICAgIDIwLCAxNDYsIDE5LCAyMCwgMTk2LCAxNDYsIDE5LCAyMCwgMTc0LCAxNDYsIDE5LCAyMCwgMjQwLCA2MCwgMTksIDIwLCAKLSAgICAyNDAsIDEwNSwgMTksIDIwLCAyNDAsIDI2LCAxOSwgMjAsIDI0MCwgMTIsIDE5LCAyMCwgMjM5LCAxODYsIDE5LCAyMCwgCi0gICAgMjM5LCAxNzUsIDE5LCAyMCwgMjQwLCAxMDgsIDE5LCAyMCwgMjQwLCAxMDcsIDE5LCAyMCwgMjM5LCA4NSwgMTksIDIwLCAKLSAgICAxOTYsIDIzOSwgODUsIDE5LCAyMCwgMjQwLCAxNzQsIDE5LCAyMCwgMjA5LCA5MiwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCAKLSAgICA5MiwgMTksIDIwLCAyMDksIDcwLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIDcwLCAxOSwgMjAsIDIwOSwgNjQsIDE5LCAyMCwgCi0gICAgMjIzLCAxNjEsIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCA0NywgMTksIDIwLCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA4LCAKLSAgICAxOSwgMjAsIDIwOSwgMTA3LCAxOSwgMjAsIDIwOSwgMTIsIDE5LCAyMCwgMTk2LCAyMDksIDEyLCAxOSwgMjAsIDIwOSwgCi0gICAgMTEwLCAxOSwgMjAsIDIwNywgMjI3LCAxOSwgMjAsIDIwNywgMjI1LCAxOSwgMjAsIDIwNywgMjI0LCAxOSwgMjAsIDIwNywgCi0gICAgMjI5LCAxOSwgMjAsIDIwNywgMjMwLCAxOSwgMjAsIDIwNywgMTI0LCAxOSwgMjAsIDIwNywgMTIzLCAxOSwgMjAsIDIwNywgCi0gICAgMTIyLCAxOSwgMjAsIDIwNywgMTI2LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgNjcsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAzLCAKLSAgICAxOSwgMjAsIDIyMSwgMzksIDIzNiwgMjM5LCAxOSwgMjAsIDIyMSwgMzksIDIzNiwgMTM2LCAxOSwgMjAsIDIyMSwgMzksIAotICAgIDIzNiwgMTE3LCAxOSwgMjAsIDIyMSwgMzksIDE1MiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDE1NywgMTksIDIwLCAyMjEsIAotICAgIDM5LCAyMzcsIDE3MSwgMTksIDIwLCAyMjEsIDM4LCAyMzcsIDE3MSwgMTksIDIwLCAyMzYsIDIyNiwgMTksIDIwLCAyMTcsIAotICAgIDEyMiwgMTksIDIwLCAyMTcsIDg4LCAxOSwgMjAsIDIxNywgODMsIDE5LCAyMCwgMjE3LCA3NywgMTksIDIwLCAyMTcsIDcyLCAKLSAgICAxOSwgMjAsIDIxNywgMTI2LCAxOSwgMjAsIDIxNywgMTI1LCAxOSwgMjAsIDIxNywgMTM0LCAxOSwgMjAsIDIwOCwgMTg2LCAKLSAgICAxOSwgMjAsIDIwOCwgMTg0LCAxOSwgMjAsIDIwOCwgMTgzLCAxOSwgMjAsIDIwOCwgMTg3LCAxOSwgMjAsIDE5NiwgMjE2LCAKLSAgICAxNTgsIDE5LCAyMCwgMTk2LCAyMTYsIDU3LCAxOSwgMjAsIDE5NiwgMjE1LCAyMjcsIDE5LCAyMCwgMTk2LCAyMTYsIDIyMCwgCi0gICAgMTksIDIwLCAyMjIsIDIwMSwgMTksIDIwLCAyMjIsIDE1MSwgMTksIDIwLCAyMjIsIDE0NywgMTksIDIwLCAyMjIsIDEyOCwgCi0gICAgMTksIDIwLCAyMjIsIDEyMywgMTksIDIwLCAyMjIsIDIwMywgMTksIDIwLCAyMjIsIDIwMiwgMTksIDIwLCAyMjIsIDIwNSwgCi0gICAgMTksIDIwLCAyMjEsIDIyMCwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA0MywgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCAxMSwgCi0gICAgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyNDIsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgOTAsIDE5LCAyMCwgMjAzLCAyNDIsIAotICAgIDIwOSwgOTIsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNzAsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNDcsIDE5LCAyMCwgCi0gICAgMjAzLCAyNDIsIDIwOSwgMTA4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDExMCwgMTksIDIwLCAyMjcsIDE1NSwgMTksIDIwLCAKLSAgICAyMjcsIDE1NCwgMTksIDIwLCAyMjcsIDE1MywgMTksIDIwLCAyMjcsIDE1MiwgMTksIDIwLCAyMjcsIDE2MSwgMTksIDIwLCAKLSAgICAyMjcsIDE2MCwgMTksIDIwLCAyMjcsIDE2MiwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA5MiwgMTksIDIwLCAyMDksIDEwOSwgCi0gICAgMjA5LCA3MCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA0NywgMTksIDIwLCAKLSAgICAyMDksIDEwOSwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMDgsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgCi0gICAgMTA3LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDExMCwgMTksIDIwLCAyNTEsIDUwLCAyNDksIDI1NSwgMTksIDIwLCAyNDgsIAotICAgIDQwLCA3NCwgMTksIDIwLCAyNDgsIDQwLCA3NSwgMTksIDIwLCAyNDgsIDQwLCA3OCwgMTksIDIwLCAyNDgsIDQwLCA2MywgCi0gICAgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDYyLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMzAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAKLSAgICAwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMTExLCAxOSwgMjAsIDI0OCwgNDAsIDIyMiwgMjQwLCAxOSwgMjAsIDI0OCwgNDAsIAotICAgIDIyMiwgMTAwLCAxOSwgMjAsIDI0OCwgNDAsIDIyMSwgMTkxLCAxOSwgMjAsIDI0OCwgNDAsIDIwMSwgMjAxLCAxOSwgMjAsIAotICAgIDI0OCwgNDAsIDIyOSwgMjAxLCAxOSwgMjAsIDI0OCwgNDAsIDIyOSwgMTAwLCAxOSwgMjAsIDI0OCwgNDAsIDIyOSwgMjYsIAotICAgIDE5LCAyMCwgMjQ4LCA0MCwgMTczLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzcsIDY3LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzcsIAotICAgIDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTM2LCAxOSwgMjAsIDIxNCwgMjA2LCAxNTIsIDE5LCAyMCwgODgsIDIzOCwgCi0gICAgODcsIDE5LCAyMCwgODgsIDIzOCwgOTEsIDE5LCAyMCwgODgsIDIzOCwgMTA1LCAxOSwgMjAsIDg4LCAyMzgsIDEwNCwgMTksIAotICAgIDIwLCA4OCwgMjM4LCA5MywgMTksIDIwLCA4OCwgMjM4LCAxMTksIDE5LCAyMCwgODgsIDIxNSwgMTQ1LCAxOSwgMjAsIDg4LCAKLSAgICAyMTUsIDIyNywgMTksIDIwLCA4OCwgMjE2LCAxNTgsIDE5LCAyMCwgODgsIDIxNiwgMTM1LCAxOSwgMjAsIDg4LCAyMTYsIAotICAgIDU3LCAxOSwgMjAsIDg4LCAyMTYsIDIyMCwgMTksIDIwLCA4OCwgMjAzLCAyMTcsIDE5LCAyMCwgODgsIDIwNCwgMCwgMTksIAotICAgIDIwLCA4OCwgMjA0LCA2MiwgMTksIDIwLCA4OCwgMjA0LCA1NSwgMTksIDIwLCA4OCwgMjA0LCAzMCwgMTksIDIwLCA4OCwgCi0gICAgMjA0LCAxMTEsIDE5LCAyMCwgODgsIDIzNSwgMjQ3LCAxOSwgMjAsIDg4LCAyMzUsIDI0OCwgMTksIDIwLCA4OCwgMjM1LCAKLSAgICAyNTEsIDE5LCAyMCwgODgsIDIzNSwgMjUwLCAxOSwgMjAsIDg4LCAyMzUsIDI0OSwgMTksIDIwLCA4OCwgMjM1LCAyNTQsIAotICAgIDE5LCAyMCwgODgsIDIwOSwgMjIsIDE5LCAyMCwgODgsIDIwOSwgNDcsIDE5LCAyMCwgODgsIDIwOSwgOTIsIDE5LCAyMCwgCi0gICAgODgsIDIwOSwgOTAsIDE5LCAyMCwgODgsIDIwOSwgNzAsIDE5LCAyMCwgODgsIDIwOSwgMTA4LCAxOSwgMjAsIDg4LCAyMDcsIAotICAgIDIwOCwgMTksIDIwLCA4OCwgMjA3LCAyMTgsIDE5LCAyMCwgODgsIDIwNywgMjM2LCAxOSwgMjAsIDg4LCAyMDcsIDIzNSwgCi0gICAgMTksIDIwLCA4OCwgMjA3LCAyMjAsIDE5LCAyMCwgODgsIDIwNywgMjQxLCAxOSwgMjAsIDg4LCAyMTcsIDE5MSwgMTksIDIwLCAKLSAgICA4OCwgMjE4LCA2OSwgMTksIDIwLCA4OCwgMjE5LCAzNCwgMTksIDIwLCA4OCwgMjE5LCAyMywgMTksIDIwLCA4OCwgMjE4LCAKLSAgICAxNjcsIDE5LCAyMCwgODgsIDE4NSwgMTksIDIwLCA4OCwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMjMwLCAxOSwgMjAsIAotICAgIDg4LCAyMzgsIDM5LCAxOSwgMjAsIDg4LCAyMzgsIDE5MCwgMTksIDIwLCA4OCwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOCwgCi0gICAgODEsIDE5LCAyMCwgODgsIDIzOSwgOCwgMTksIDIwLCA4OCwgMjI5LCAxMDksIDE5LCAyMCwgODgsIDIyOSwgMTE1LCAxOSwgCi0gICAgMjAsIDg4LCAyMjksIDEyOSwgMTksIDIwLCA4OCwgMjI5LCAxMjgsIDE5LCAyMCwgODgsIDIyOSwgMTIyLCAxOSwgMjAsIDg4LCAKLSAgICAyMjksIDE0NCwgMTksIDIwLCA4OCwgMjI5LCA0MiwgMTksIDIwLCA4OCwgMjI5LCA0MywgMTksIDIwLCA4OCwgMjI5LCA0NiwgCi0gICAgMTksIDIwLCA4OCwgMjI5LCA0NSwgMTksIDIwLCA4OCwgMjI5LCA0NCwgMTksIDIwLCA4OCwgMjI5LCA0NywgMTksIDIwLCAKLSAgICA4OCwgMjI5LCA0OCwgMTksIDIwLCA4OCwgMjIxLCA4NCwgMTksIDIwLCA4OCwgMjIxLCAxOTEsIDE5LCAyMCwgODgsIDIyMiwgCi0gICAgMjQwLCAxOSwgMjAsIDg4LCAyMjIsIDIzNSwgMTksIDIwLCA4OCwgMjIyLCAxMDAsIDE5LCAyMCwgODgsIDIwMSwgMjAxLCAKLSAgICAxOSwgMjAsIDg4LCAyMjMsIDI0NiwgMTksIDIwLCA4OCwgMjI0LCA4MiwgMTksIDIwLCA4OCwgMjI1LCAyMCwgMTksIDIwLCAKLSAgICA4OCwgMjI1LCA4LCAxOSwgMjAsIDg4LCAyMjQsIDE1NSwgMTksIDIwLCA4OCwgMTkyLCAxOSwgMjAsIDg4LCAyMDIsIDIxMywgCi0gICAgMTksIDIwLCA4OCwgMjAyLCAyNDcsIDE5LCAyMCwgODgsIDIwMywgNTIsIDE5LCAyMCwgODgsIDIwMywgNDksIDE5LCAyMCwgCi0gICAgODgsIDIwMywgMTEsIDE5LCAyMCwgODgsIDE5OCwgMTksIDIwLCA4OCwgMjMwLCA4MiwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAKLSAgICA4MiwgMTksIDIwLCA4OCwgMjMwLCAxMDEsIDE5LCAyMCwgODgsIDIzMCwgMTYxLCAxOSwgMjAsIDg4LCAyMzAsIDE1OSwgMTksIAotICAgIDIwLCA4OCwgMjMwLCAxNDEsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgMTQxLCAxOSwgMjAsIDg4LCAyMzAsIDE4MSwgMTksIAotICAgIDIwLCA4OCwgMjMwLCAxMTQsIDE5LCAyMCwgODgsIDIzMCwgMTE4LCAxOSwgMjAsIDg4LCAyMzAsIDEyOCwgMTksIDIwLCA4OCwgCi0gICAgMjMwLCAxMjcsIDE5LCAyMCwgODgsIDIzMCwgMTI2LCAxOSwgMjAsIDg4LCAyMzAsIDEyOSwgMTksIDIwLCA4OCwgMjI2LCAKLSAgICAyMzksIDE5LCAyMCwgODgsIDIyNywgNDksIDE5LCAyMCwgODgsIDIyNywgMjM0LCAxOSwgMjAsIDg4LCAyMjcsIDIyNiwgMTksIAotICAgIDIwLCA4OCwgMjI3LCAxNDgsIDE5LCAyMCwgODgsIDIyOCwgMTEzLCAxOSwgMjAsIDg4LCAyNDMsIDExNywgMTksIDIwLCA4OCwgCi0gICAgMjQzLCAxMTgsIDE5LCAyMCwgODgsIDI0MywgMTIzLCAxOSwgMjAsIDg4LCAyNDMsIDEyMiwgMTksIDIwLCA4OCwgMjQzLCAKLSAgICAxMTksIDE5LCAyMCwgODgsIDI0MywgMTI0LCAxOSwgMjAsIDg4LCAyMjcsIDE1MSwgMTksIDIwLCA4OCwgMjI3LCAxNTMsIAotICAgIDE5LCAyMCwgODgsIDIyNywgMTU3LCAxOSwgMjAsIDg4LCAyMjcsIDE1NiwgMTksIDIwLCA4OCwgMjI3LCAxNTUsIDE5LCAyMCwgCi0gICAgODgsIDIyNywgMTYxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MSwgMTksIDIwLCA4OCwgMjA4LCAxODMsIDE5LCAyMCwgODgsIAotICAgIDIwOCwgMTg2LCAxOSwgMjAsIDg4LCAyMDgsIDE4NSwgMTksIDIwLCA4OCwgMjA4LCAxODQsIDE5LCAyMCwgODgsIDIwOCwgCi0gICAgMTg3LCAxOSwgMjAsIDg4LCAyMDgsIDE3NiwgMTksIDIwLCA4OCwgMjA4LCAxNzcsIDE5LCAyMCwgODgsIDIwOCwgMTg5LCAKLSAgICAxOSwgMjAsIDg4LCAyMDgsIDE4OCwgMTksIDIwLCA4OCwgMjA4LCAxNzgsIDE5LCAyMCwgODgsIDIwOCwgMTkwLCAxOSwgMjAsIAotICAgIDg4LCAyMDIsIDYsIDE5LCAyMCwgODgsIDIwMiwgMTcsIDE5LCAyMCwgODgsIDIwMiwgOTIsIDE5LCAyMCwgODgsIDIwMiwgCi0gICAgOTAsIDE5LCAyMCwgODgsIDIwMiwgMzksIDE5LCAyMCwgODgsIDIwMiwgMTE2LCAxOSwgMjAsIDg4LCAyMDIsIDE1OSwgMTksIAotICAgIDIwLCA4OCwgODEsIDIwMiwgMTU5LCAxOSwgMjAsIDg4LCAyNDEsIDI0MiwgMTksIDIwLCA4OCwgMjQxLCAyNDMsIDE5LCAyMCwgCi0gICAgODgsIDI0MSwgMjUyLCAxOSwgMjAsIDg4LCAyNDEsIDI1MSwgMTksIDIwLCA4OCwgMjQxLCAyNDYsIDE5LCAyMCwgODgsIAotICAgIDI0MSwgMjU1LCAxOSwgMjAsIDg4LCAyMTEsIDEwLCAxOSwgMjAsIDg4LCAyMTIsIDEzLCAxOSwgMjAsIDg4LCAyMTQsIDE3NywgCi0gICAgMTksIDIwLCA4OCwgMjE0LCAxNjUsIDE5LCAyMCwgODgsIDIxMiwgMTYyLCAxOSwgMjAsIDg4LCAyMTUsIDM2LCAxOSwgMjAsIAotICAgIDg4LCAyMTIsIDE5OSwgMTksIDIwLCA4OCwgMjEyLCAyNDIsIDE5LCAyMCwgODgsIDIxMywgNDMsIDE5LCAyMCwgODgsIDIxMywgCi0gICAgNDEsIDE5LCAyMCwgODgsIDIxMywgMTEsIDE5LCAyMCwgODgsIDIxMywgOTAsIDE5LCAyMCwgODgsIDIxMywgOTIsIDE5LCAKLSAgICAyMCwgODgsIDIwNywgMjQ5LCAxOSwgMjAsIDg4LCAyMDcsIDI1MywgMTksIDIwLCA4OCwgMjA4LCAxNCwgMTksIDIwLCA4OCwgCi0gICAgMjA4LCAxMywgMTksIDIwLCA4OCwgMjA3LCAyNTUsIDE5LCAyMCwgODgsIDIwOCwgMjAsIDE5LCAyMCwgODgsIDI0NiwgOTgsIAotICAgIDE5LCAyMCwgODgsIDI0NiwgMTE2LCAxOSwgMjAsIDg4LCAyNDYsIDE3MCwgMTksIDIwLCA4OCwgMjQ2LCAxNjYsIDE5LCAyMCwgCi0gICAgODgsIDI0NiwgMTQyLCAxOSwgMjAsIDg4LCAyNDYsIDE5OSwgMTksIDIwLCA4OCwgMjA3LCAyMTEsIDE5LCAyMCwgODgsIAotICAgIDIwNywgMjEyLCAxOSwgMjAsIDg4LCAyMDcsIDIxNSwgMTksIDIwLCA4OCwgMjA3LCAyMTQsIDE5LCAyMCwgODgsIDIwNywgCi0gICAgMjEzLCAxOSwgMjAsIDg4LCAyMDcsIDIxNiwgMTksIDIwLCAyNDYsIDE0MywgNTQsIDE5LCAyMCwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDE5LCAyMCwgMjE3LCAxMTgsIDE5LCAyMCwgMjIyLCAxOTksIDE5LCAyMCwgMjIxLCAyMTcsIDE5LCAyMCwgMjIxLCAKLSAgICAyMTYsIDE5LCAyMCwgMjIxLCAyMTUsIDE5LCAyMCwgMjIxLCAyMTQsIDE5LCAyMCwgMjIxLCAyMTksIDE5LCAyMCwgMjIxLCAKLSAgICAyMTgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTAsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgOSwgMTksIDIwLCAyMDMsIAotICAgIDI0MiwgMjA5LCA4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNiwgMTksIDIwLCAKLSAgICAyMDMsIDI0MiwgMjA5LCAxMywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMiwgMTksIDIwLCAyMDMsIDI0MiwgNDYsIDIwOSwgCi0gICAgMTEwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMTQ0LCAyMjAsIDY0LCAyMTEsIDIyOSwgODIsIDIyMCwgNjQsIDEsIDI0OCwgCi0gICAgMTMyLCAyMjAsIDY0LCAxLCAyMjYsIDIyNSwgMjIwLCA2NCwgMSwgMjQwLCA1NywgMjIwLCA2NCwgMSwgMjE1LCAxNiwgMjIwLCAKLSAgICA2NCwgMSwgMjIyLCA1NiwgMjIwLCA2NCwgMSwgMjA3LCAzNiwgMjIwLCA2NCwgMSwgMjQ0LCAxODYsIDIyMCwgNjQsIDEsIAotICAgIDIwOCwgMjE0LCAyMjAsIDY0LCAxLCAyNDUsIDI0NSwgMjIwLCA2NCwgMSwgMjQ2LCAyMjUsIDIyMCwgNjQsIDEsIDIyMywgCi0gICAgMjMzLCAyMjAsIDY0LCAxLCAyMzgsIDIwLCAyMjAsIDY0LCAxLCAyMjIsIDE4OSwgMjIwLCA2NCwgMSwgMjExLCA1NCwgMjIwLCAKLSAgICA2NCwgMSwgMjE1LCAxMzgsIDIyMCwgNjQsIDEsIDI1MSwgNjEsIDIyMCwgNjQsIDEsIDIyMCwgMjIsIDIyMCwgNjQsIDEsIAotICAgIDIwNiwgMjEwLCAyMjAsIDY0LCAxLCAyNDEsIDE4NywgMjIwLCA2NCwgMSwgMjMwLCAyMzMsIDIyMCwgNjQsIDEsIDI0MSwgCi0gICAgMTg4LCAyMjAsIDY0LCAxLCAyMTksIDI0NCwgMjIwLCA2NCwgMSwgMjA3LCAxNSwgMjIwLCA2NCwgMSwgMjMxLCA4OSwgMjIwLCAKLSAgICA2NCwgMSwgMjQxLCAxODUsIDIyMCwgNjQsIDEsIDIxOSwgMTMsIDIyMCwgNjQsIDI0MCwgNTYsIDgyLCAyMjAsIDY0LCAyMTYsIAotICAgIDczLCAyNDAsIDU2LCA4MiwgMTk3LCAxLCAyNDAsIDQ2LCAyNDAsIDM4LCAyNDAsIDYxLCAyNDAsIDE3NCwgMTk3LCAxLCAKLSAgICAyMDYsIDE2NCwgMTk3LCAxLCAyMDYsIDE5NSwgMjA2LCAyMTEsIDY4LCAxOTcsIDEsIDIwMiwgMjE2LCAxOTcsIDEsIDIwMywgCi0gICAgMTI0LCAxOTcsIDEsIDIwNCwgMTQ0LCAxOTcsIDEsIDIwOSwgMTUsIDIwOSwgMTQsIDIwOSwgNDAsIDE5NywgMSwgMjQwLCAKLSAgICAyNDMsIDE5NywgMSwgMjUwLCAxOTksIDYzLCAxOTcsIDEsIDIxOSwgMjI4LCA3OCwgMTk3LCAxLCAyNTEsIDE0MiwgNjMsIAotICAgIDE5NywgMSwgMjUxLCA5MywgMTk3LCAxLCAyMjcsIDI0LCA3OCwgMTk3LCAxLCAyMTIsIDIyMSwgNzgsIDE5NywgMSwgNzgsIAotICAgIDE5NywgMSwgMjIwLCA3MywgMTk3LCAxLCAyMjAsIDMxLCAxOTcsIDEsIDIxNiwgMTk1LCAyMTYsIDIwOCwgMjE2LCAxMjAsIAotICAgIDE0NiwgMTk3LCAxLCAyMjksIDIxNiwgMTk3LCAxLCAyNDYsIDIyMSwgMTk3LCAxLCAyMjksIDIxNywgMjMwLCA1NCwgMTk3LCAKLSAgICAxLCAyMzksIDc1LCAxOTcsIDEsIDI0MSwgNzgsIDE5NywgMSwgMjM4LCAxODUsIDIzNywgMTc3LCAyMzksIDc1LCAxOTcsIDEsIAotICAgIDIzOCwgMjI0LCAxOTcsIDEsIDIwMywgMjA5LCAyMDMsIDIwMCwgMjA0LCAxNDQsIDE5NywgMSwgMjM3LCAxNDksIDIzNywgCi0gICAgMTcxLCAxOTcsIDEsIDIzNywgMTUzLCAyMzcsIDE3MSwgMTk3LCAxLCAyMjcsIDI2LCAyMzcsIDE3MSwgMTk3LCAxLCAyMTIsIAotICAgIDIyNCwgMjM3LCAxNzEsIDE5NywgMSwgMjIzLCA2MywgMjIxLCAyLCAyMjMsIDY0LCAyMjMsIDE2MywgMTk3LCAxLCAyMTIsIAotICAgIDIyMiwgMjIzLCAxNjMsIDE5NywgMSwgMjQyLCA4MCwgMTk3LCAxLCAyMzAsIDIxMiwgMjMwLCAyMTYsIDIzMCwgMjAzLCA3NSwgCi0gICAgMTk3LCAxLCA3NCwgMTk3LCAxLCAyMzAsIDE1MiwgMjMwLCAxODQsIDE5NywgMSwgMjM4LCAxNjksIDE5NywgMSwgMjI3LCAKLSAgICAyNywgMjUxLCAxMDksIDE5NywgMSwgMjEyLCAyMjYsIDYzLCAxOTcsIDEsIDIzMCwgMTk1LCAyNDEsIDUxLCAxOTcsIDEsIAotICAgIDIxOCwgMjI2LCAyMTgsIDI1MSwgMjE5LCAxODQsIDE5NywgMSwgMjUxLCAyMywgMjQxLCA0OSwgMTk3LCAxLCAyMTEsIDIzNCwgCi0gICAgMTk0LCAxOTcsIDEsIDIxMiwgMTQ2LCAyMjcsIDIzLCAxOTQsIDE5NywgMSwgMjEyLCAyMjAsIDE5NCwgMTk3LCAxLCAyNDcsIAotICAgIDEyNSwgMTk3LCAxLCAyMDIsIDE1OSwgMTk3LCAxLCAyMDgsIDE5NSwgMjA4LCAyMDcsIDIwNywgMTA4LCAyMTAsIDY5LCAKLSAgICAxOTcsIDEsIDIxMiwgMjE5LCAyMTAsIDY5LCAxOTcsIDEsIDI0NSwgNTEsIDE5NywgMSwgMjQ4LCAxMTEsIDI0OCwgMTE0LCAKLSAgICAyNDgsIDQ2LCAyNDksIDI1NSwgMTk3LCAxLCAyMTIsIDIyNSwgMjQ5LCAyNTUsIDE5NywgMSwgMjQyLCA3OSwgMTk3LCAxLCAKLSAgICAyMjAsIDIsIDE5NywgMSwgMjQxLCAxNDYsIDI0MSwgMTQ4LCA3NCwgMTk3LCAxLCAyMjUsIDExMywgMjI1LCAxMjMsIDIyNiwgCi0gICAgMTg1LCAxOTcsIDEsIDIyNywgMjUsIDIyNiwgMTg1LCAxOTcsIDEsIDIxMiwgMjIzLCAyMjYsIDE4NSwgMTk3LCAxLCAyMjcsIAotICAgIDI0OSwgMjI4LCA5MSwgMjI3LCAzNCwgMTU5LCAxOTcsIDEsIDI0MiwgODEsIDE5NywgMSwgMjMxLCAyMywgMTk3LCAxLCAKLSAgICAyMzEsIDI0LCAxOTcsIDEsIDI0NCwgMjAwLCAyNDQsIDIwNiwgMjQ1LCA1MSwgMTk3LCAxLCAyMTksIDIyMiwgMjQwLCAyNDIsIAotICAgIDc4LCAxOTcsIDEsIDI0MSwgMTgzLCAxOTcsIDEsIDIzMCwgMjMyLCAxOTcsIDEsIDI0NSwgNzEsIDE5NywgMSwgMjQ3LCA3NSwgCi0gICAgMTk3LCAxLCAyNDYsIDIzNywgMTk3LCAxLCAyMTEsIDk5LCAxOTcsIDEsIDIyNywgMjIsIDE5NywgMSwgMjEyLCAyMTgsIAotICAgIDE5NywgMSwgMjM1LCAxNjEsIDE5NywgMSwgMjE3LCAxMzQsIDE5NywgMSwgMjAzLCAxOTYsIDE5NywgMjEyLCAxMjAsIDIxNywgCi0gICAgMTc4LCAxOTcsIDIyMywgMjI2LCAyMTcsIDE3OCwgMTk3LCAyNDUsIDEzMSwgMjE3LCAxNzgsIDE5NywgMjUwLCAxMDgsIDk3LCAKLSAgICAxOTcsIDIwNywgMTYyLCA5NywgMTk3LCAyNDgsIDEzMCwgOTcsIDE5NywgMSwgMjMwLCA1NCwgMTk3LCAxLCAyMTMsIDkyLCAKLSAgICAxOTcsIDEsIDIyMCwgMTgsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDIxOSwgMjI3LCAxOTcsIDEsIDIzOSwgMTMxLCAKLSAgICAyNDcsIDIwLCAyMzAsIDIxNSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjQxLCAxNDcsIDE5NywgMSwgMjM5LCAxMzEsIAotICAgIDI0NywgMjAsIDI1MSwgMTQxLCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNTEsIDkzLCAyMDksIDI1NCwgMSwgNjMsIAotICAgIDIwOSwgMjU0LCAxLCA3NSwgMjA5LCAyNTQsIDEsIDY4LCAyMDksIDI1NCwgMSwgMTczLCAyMDksIDI1NCwgMSwgMjM5LCA4LCAKLSAgICAyMDksIDI1NCwgMSwgMjIyLCAyMDMsIDIwOSwgMjU0LCAxLCAyMTAsIDIyLCAyMDksIDI1NCwgMSwgMjQ0LCAyMTIsIDIwOSwgCi0gICAgMjU0LCAxLCAyMDEsIDIwMSwgMjA5LCAyNTQsIDEsIDE4NSwgMjA5LCAyNTQsIDEsIDI0OSwgMzIsIDIwOSwgMjU0LCAxLCAKLSAgICAxOTIsIDIwOSwgMjU0LCAxLCAxOTgsIDIwOSwgMjU0LCAxLCAyMjgsIDExMywgMjA5LCAyNTQsIDEsIDIwNCwgMTExLCAyMDksIAotICAgIDI1NCwgMSwgMjE1LCAzNiwgMjA5LCAyNTQsIDEsIDE1MiwgMjA5LCAyNTQsIDIyLCAyLCA3NSwgMjA5LCAyNTQsIDIyLCAyLCAKLSAgICA2OCwgMjA5LCAyNTQsIDIsIDIwNSwgMjA0LCAyMzcsIDk2LCAxLCA2MywgMjM3LCA5NiwgMSwgNzUsIDIzNywgOTYsIDEsIAotICAgIDY4LCAyMzcsIDk2LCAxLCAxNzMsIDIzNywgOTYsIDEsIDIzOSwgOCwgMjM3LCA5NiwgMSwgMjIyLCAyMDMsIDIzNywgOTYsIAotICAgIDEsIDIxMCwgMjIsIDIzNywgOTYsIDEsIDI0NCwgMjEyLCAyMzcsIDk2LCAxLCAyMDEsIDIwMSwgMjM3LCA5NiwgMSwgMTg1LCAKLSAgICAyMzcsIDk2LCAxLCAyNDksIDMyLCAyMzcsIDk2LCAxLCAxOTIsIDIzNywgOTYsIDEsIDE5OCwgMjM3LCA5NiwgMSwgMjE2LCAKLSAgICAyMjAsIDIzNywgOTYsIDEsIDIyOCwgMTEzLCAyMzcsIDk2LCAxLCAyMDQsIDExMSwgMjM3LCA5NiwgMSwgMjE1LCAzNiwgCi0gICAgMjM3LCA5NiwgMSwgMTUyLCAyMzcsIDk2LCAyMiwgMiwgNzUsIDIzNywgOTYsIDIyLCAyLCA2OCwgMjM3LCA5NiwgMiwgMjE5LCAKLSAgICAxMjQsIDIxOCwgMTg1LCAyMTIsIDEyMCwgMjE3LCAxNzgsIDIxOCwgMTg1LCA1MiwgMjE3LCAxNzgsIDI0NywgMTg1LCAxLCAKLSAgICA2MywgMjQ3LCAxODUsIDEsIDc1LCAyNDcsIDE4NSwgMSwgNjgsIDI0NywgMTg1LCAxLCAxNzMsIDI0NywgMTg1LCAxLCAyMzksIAotICAgIDgsIDI0NywgMTg1LCAxLCAyMjIsIDIwMywgMjQ3LCAxODUsIDEsIDIxMCwgMjIsIDI0NywgMTg1LCAxLCAyNDQsIDIxMiwgCi0gICAgMjQ3LCAxODUsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NSwgMSwgMTg1LCAyNDcsIDE4NSwgMSwgMjQ5LCAzMiwgMjQ3LCAxODUsIAotICAgIDEsIDE5MiwgMjQ3LCAxODUsIDEsIDE5OCwgMjQ3LCAxODUsIDEsIDIxNiwgMjIwLCAyNDcsIDE4NSwgMSwgMjI4LCAxMTMsIAotICAgIDI0NywgMTg1LCAxLCAyMDQsIDExMSwgMjQ3LCAxODUsIDEsIDIxNSwgMzYsIDI0NywgMTg1LCAxLCAxNTIsIDI0NywgMTg1LCAKLSAgICAyMiwgMiwgNzUsIDI0NywgMTg1LCAyMiwgMiwgNjgsIDIwOSwgMjUzLCAxLCA2MywgMjA5LCAyNTMsIDEsIDc1LCAyMDksIAotICAgIDI1MywgMSwgNjgsIDIwOSwgMjUzLCAxLCAxNzMsIDIwOSwgMjUzLCAxLCAyMzksIDgsIDIwOSwgMjUzLCAxLCAyMjIsIDIwMywgCi0gICAgMjA5LCAyNTMsIDEsIDIxMCwgMjIsIDIwOSwgMjUzLCAxLCAyNDQsIDIxMiwgMjA5LCAyNTMsIDEsIDIwMSwgMjAxLCAyMDksIAotICAgIDI1MywgMSwgMTg1LCAyMDksIDI1MywgMSwgMjQ5LCAzMiwgMjA5LCAyNTMsIDEsIDE5MiwgMjA5LCAyNTMsIDEsIDE5OCwgCi0gICAgMjA5LCAyNTMsIDEsIDIyOCwgMTEzLCAyMDksIDI1MywgMSwgMjA0LCAxMTEsIDIwOSwgMjUzLCAxLCAyMTUsIDM2LCAyMDksIAotICAgIDI1MywgMjIsIDIsIDc1LCAyMDksIDI1MywgMjIsIDIsIDY4LCA4NSwgMSwgMTczLCA4NSwgMSwgMjI5LCAxNDQsIDg1LCAxLCAKLSAgICAyMjksIDI2LCA4NSwgMSwgMjI5LCAxMTUsIDg1LCAxLCAyMjIsIDEyOCwgODUsIDEsIDI0NywgOTIsIDg1LCAxLCAyNDYsIAotICAgIDE5OSwgODUsIDEsIDI0NSwgMjU0LCA4NSwgMSwgMjQ2LCAxMTYsIDg1LCAxLCAyMjAsIDIzMywgODUsIDEsIDI0NCwgMjEyLCAKLSAgICA4NSwgMSwgMjA3LCAyMjksIDg1LCAxLCAyNDMsIDExMywgODUsIDEsIDIwNywgMjI0LCA4NSwgMSwgMjIxLCAxOTcsIDg1LCAKLSAgICAxLCAyMTAsIDIyLCA4NSwgMSwgMjA5LCAxMDgsIDg1LCAxLCAxMzUsIDg1LCAxLCAyMDksIDQ3LCA4NSwgMSwgMjIxLCAxOTEsIAotICAgIDg1LCAxLCAyNDksIDMyLCA4NSwgMSwgMjE4LCAyMDgsIDg1LCAxLCAyMTgsIDY5LCA4NSwgMSwgMjE4LCAxODAsIDg1LCAxLCAKLSAgICAyMjQsIDgyLCA4NSwgMSwgMjAyLCAyNDcsIDg1LCAxLCAyMTUsIDIyNywgODUsIDEsIDIyNywgNDksIDg1LCAxLCAyMDUsIAotICAgIDE4OSwgODUsIDEsIDIxMywgOTAsIDg1LCAxLCAyMTEsIDEyNCwgODUsIDEsIDIxNSwgMzYsIDg1LCAxLCAxNTIsIDg1LCAxLCAKLSAgICAyMjgsIDExMywgODUsIDEsIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTEyLCA4NSwgMjMxLCAzNiwgMjIsIAotICAgIDIxNywgMTI1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4MywgODUsIDIzMSwgCi0gICAgMzYsIDIyLCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMzUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAyMywgODUsIAotICAgIDIzMSwgMzYsIDIyLCAyMTcsIDIyLCA4NSwgMjMxLCAzNiwgMjIsIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIxNSwgCi0gICAgOTUsIDg1LCAyMzEsIDM2LCAyMiwgMjI2LCAxOTksIDg1LCAyMzEsIDM2LCAyMiwgMjI2LCAxODgsIDg1LCAyMzEsIDM2LCAKLSAgICAyMiwgMjE3LCAxMDYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAKLSAgICAxMjEsIDEwNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIDEyMSwgMTA4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgCi0gICAgMTA4LCA4NSwgMjIsIDIzMSwgMjEsIDI1MCwgMTQ4LCA4NSwgMjIsIDIzMSwgMjEsIDI1MiwgMjUsIDg1LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgODUsIDIyLCAyLCA3NSwgODUsIDIyLCAyLCAyMzEsIDgzLCA4NSwgMjIsIDIsIDIwMywgMTI0LCA4NSwgMjIsIDIsIAotICAgIDIwMiwgMTY5LCA4NSwgMjIsIDIsIDY4LCA4NSwgMjIsIDIsIDIwNiwgMTc4LCA4NSwgMjIsIDIsIDIwNywgMzksIDg1LCAyMiwgCi0gICAgMiwgMjIwLCA3MywgODUsIDIyLCAyLCAxOTgsIDg1LCAyMiwgMiwgMjMxLCAxMTAsIDg1LCAyMiwgMiwgNzQsIDg1LCAyMiwgCi0gICAgMiwgMjUxLCAxMDksIDg1LCAyMiwgMiwgMjUxLCA2NCwgODUsIDIyLCAyLCAyMjAsIDE4LCA4NSwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDg1LCAyLCAyMjIsIDczLCA4NSwgMiwgMjE2LCAxNTYsIDg1LCAyLCAyMDIsIDE4MCwgODUsIDIsIDIyMywgMTkwLCA4NSwgMiwgCi0gICAgMjA4LCA3MywgODUsIDIsIDI0OCwgMjMzLCA4NSwgMiwgMjE1LCAyMjIsIDg1LCAyLCAyMDgsIDE3MSwgODUsIDIsIDIzMCwgCi0gICAgMTEsIDg1LCAyLCAyNTEsIDY2LCA4NSwgMiwgMjE0LCAyNDQsIDIxNCwgMjM3LCA4NSwgMiwgMjA1LCAyMDEsIDg1LCAyLCAKLSAgICAyNDUsIDI0OCwgODUsIDIsIDI0OCwgMjA1LCA4NSwgMiwgMjI5LCAxMzYsIDg1LCAyLCAyNDgsIDIyOCwgODUsIDIsIDI0NywgCi0gICAgNjQsIDIxOCwgMTMwLCAyMjgsIDE3MywgODUsIDIsIDIyNywgMjAzLCAyMDgsIDE0OCwgODUsIDIsIDI0OCwgMTAwLCA4NSwgCi0gICAgMiwgMjE4LCAxODIsIDIyMywgMjQzLCA4NSwgMiwgMjI5LCA0LCA4NSwgMjQ1LCA5MiwgMTYsIDIxNiwgNDksIDg1LCAyLCAKLSAgICAyNTAsIDE2LCA4NSwgMiwgMjUwLCAzNywgODUsIDE3LCAyMDIsIDg0LCA4NSwgMTcsIDEwNSwgODUsIDE3LCAxMDgsIDg1LCAKLSAgICAxNywgMTQ3LCA4NSwgMTcsIDE0OSwgODUsIDE3LCAxNzAsIDg1LCAxNywgMTk1LCA4NSwgMTcsIDIxMywgMTExLCA4NSwgMTcsIAotICAgIDE5OSwgODUsIDE3LCAyMjIsIDYzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTEsIDI1MywgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjIzLCAyMTAsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMTI5LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyNDgsIDEzMywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjQ3LCAxNjUsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxOCwgNywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxLCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTcsIDI1NSwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCA1LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTgsIDMsIDk0LCAyNDgsIDU5LCA5NCwgMjQxLCAxMDgsIDk0LCAyNDUsIDIzMywgOTQsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA5NCwgMjQ1LCAyNDIsIDk0LCAyMzksIDE0NywgMjQzLCA4MywgOTQsIDIwOCwgMTcwLCAyMTIsIDcsIAotICAgIDIzNSwgMjIwLCA5NCwgMjEyLCAxNjAsIDQsIDI0NywgMjQ0LCAyMjUsIDg4LCA5NCwgMjI1LCAxMTksIDI0NSwgMjMzLCA5NCwgCi0gICAgMjI1LCAxMTksIDIzOSwgMTAyLCAyMTEsIDYxLCA5NCwgMjIyLCA1NCwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIAotICAgIDEwNSwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIDEwOCwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIDE0NywgCi0gICAgOTQsIDIyLCAyMTMsIDEzMCwgOTQsIDE3LCAyMDIsIDg0LCA5NCwgMTcsIDEwNSwgOTQsIDE3LCAxMDgsIDk0LCAxNywgMTQ3LCAKLSAgICA5NCwgMTcsIDE0OSwgOTQsIDE3LCAxNzAsIDk0LCAxNywgMTk1LCA5NCwgMTcsIDIxMywgMTExLCA5NCwgMTcsIDE5OSwgOTQsIAotICAgIDE3LCAyMjIsIDYzLCA5NCwgMSwgNjMsIDk0LCAxLCA3NCwgOTQsIDEsIDc1LCA5NCwgMSwgNzgsIDk0LCAxLCA2OCwgOTQsIAotICAgIDEsIDIyMCwgNzMsIDk0LCAxLCAyMDcsIDI0LCA5NCwgMSwgMjQxLCAxNjEsIDk0LCAxLCAyMDEsIDIwMSwgOTQsIDEsIDI1MCwgCi0gICAgMjIzLCA5NCwgMSwgMjQ5LCAzMiwgOTQsIDEsIDE4NSwgOTQsIDEsIDIxNywgMTI2LCA5NCwgMSwgMjM5LCA4LCA5NCwgMSwgCi0gICAgMTkyLCA5NCwgMSwgMjI4LCAxMTMsIDk0LCAxLCAyMTUsIDM2LCA5NCwgMSwgMjEzLCA5MCwgOTQsIDEsIDIxMCwgMjIsIDk0LCAKLSAgICAxLCAyNDQsIDIxMiwgOTQsIDEsIDI0NiwgMTk5LCA5NCwgMSwgMjMwLCAxODEsIDk0LCAxLCAxOTgsIDk0LCAxLCAyMTYsIAotICAgIDIyMCwgOTQsIDEsIDIwNCwgMTExLCA5NCwgMSwgMjQwLCAxMDgsIDk0LCAxLCAxNzMsIDk0LCAxLCAyMjksIDE0NCwgOTQsIAotICAgIDEsIDIwOCwgMjAsIDk0LCAxLCAyMDIsIDExNiwgOTQsIDEsIDIzNywgMTU3LCA5NCwgMSwgMjAyLCAxMCwgOTQsIDEsIDIyNywgCi0gICAgMTYxLCA5NCwgMSwgMjAyLCA2NiwgOTQsIDEsIDI0NiwgMTQyLCA5NCwgMSwgMjA4LCAxNzAsIDE2MywgMjIsIDU0LCA5NCwgCi0gICAgMSwgMjA4LCAxNzAsIDc0LCA5NCwgMSwgMjA4LCAxNzAsIDc1LCA5NCwgMSwgMjA4LCAxNzAsIDc4LCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDY4LCA5NCwgMSwgMjA4LCAxNzAsIDIyMCwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgMjA3LCAyNCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCAyNTAsIDIyMywgOTQsIDEsIDIwOCwgMTcwLCAyNDksIDMyLCA5NCwgMSwgMjA4LCAxNzAsIDE4NSwgOTQsIDEsIAotICAgIDIwOCwgMTcwLCAyMTcsIDEyNiwgOTQsIDEsIDIwOCwgMTcwLCAyMzksIDgsIDk0LCAxLCAyMDgsIDE3MCwgMTkyLCA5NCwgMSwgCi0gICAgMjA4LCAxNzAsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMDgsIDE3MCwgMjQ2LCAxOTksIAotICAgIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxODEsIDk0LCAxLCAyMDgsIDE3MCwgMjA4LCAyMCwgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAxOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjA0LCAxMTEsIDk0LCAxLCAyMDgsIDE3MCwgMTczLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDIzOSwgNSwgOTQsIDEsIDIwOCwgMTcwLCAyMzcsIDE1NywgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE0MCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCAyMjIsIDk4LCA5NCwgMSwgMjA4LCAxNzAsIDI0MSwgMjU1LCA5NCwgMSwgMjEyLCAxNjAsIDc0LCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDc1LCA5NCwgMSwgMjEyLCAxNjAsIDIzMCwgMTkyLCA5NCwgMSwgMjEyLCAxNjAsIDIwNywgMjQsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgNjgsIDk0LCAxLCAyMTIsIDE2MCwgMjUwLCAyMjMsIDk0LCAxLCAyMTIsIDE2MCwgMTczLCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDIzOSwgOCwgOTQsIDEsIDIxMiwgMTYwLCAxNTIsIDk0LCAxLCAyMTIsIDE2MCwgMTg1LCA5NCwgMSwgMjEyLCAxNjAsIAotICAgIDIxMywgOTAsIDk0LCAxLCAyMTIsIDE2MCwgMjEwLCAyMiwgOTQsIDEsIDIxMiwgMTYwLCAyNDQsIDIxMiwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCAyMzAsIDE4MSwgOTQsIDEsIDIxMiwgMTYwLCAyNDAsIDEwOCwgOTQsIDEsIDIxMiwgMTYwLCAyMzksIDUsIDk0LCAxLCAKLSAgICAyMTIsIDE2MCwgMjM3LCAxNTcsIDk0LCAxLCAyMTIsIDE2MCwgMjA4LCAyMCwgOTQsIDEsIDIxMiwgMTYwLCAyMDIsIDExNiwgCi0gICAgOTQsIDEsIDIxMiwgMTYwLCAyMTYsIDIxNiwgOTQsIDEsIDIxMiwgMTYwLCAyNDYsIDE5OSwgOTQsIDEsIDIxMiwgMTYwLCAKLSAgICAyMDIsIDgwLCA5NCwgMSwgMjI1LCAxMTksIDc1LCA5NCwgMSwgMjI1LCAxMTksIDE3MywgOTQsIDEsIDIyNSwgMTE5LCAyMTYsIAotICAgIDIyMCwgOTQsIDEsIDIyNSwgMTE5LCAyNDAsIDEwOCwgOTQsIDEsIDIyNSwgMTE5LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDI1MCwgMTgxLCAxMDUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA1LCAyMDAsIDEwNSwgOTQsIDEsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDE3NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDM0LCA5NCwgMSwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIzMCwgMjM5LCAyMDcsIDM0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0OCwgMjQ1LCAKLSAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDEyNiwgMjQ4LCAyNDUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgNjMsIAotICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgNzUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTczLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NywgOTIsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAyMjksIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjQ0LCAxMjAsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjIxLCAyMjcsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIxMiwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAxODUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjE4LCAyMDgsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjExLCAxNjQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNTEsIDczLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCAKLSAgICA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzgsIDExOSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NywgOTIsIDk0LCAxLCAKLSAgICAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzMCwgMTQ5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCi0gICAgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxMDQsIDk0LCAxLCAyMjUsIAotICAgIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgCi0gICAgMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjExLCAxNjQsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDI0NSwgNjUsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAKLSAgICAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgCi0gICAgNjgsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAxOTgsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKLSAgICAyNDQsIDI0OCwgOTgsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIyNywgMTYxLCAxOSwgMjAsIDIxOSwgMTg4LCAxOSwgMjAsIDI1MCwgOCwgMTksIDIwLCAyNTEsIAotICAgIDIzNiwgMTksIDIwLCAyMDQsIDY1LCAxOSwgMjAsIDIxOCwgMTMsIDE5LCAyMCwgMjE5LCA0MywgMTksIDIwLCAyMTcsIDE0MywgCi0gICAgMTksIDIwLCAyMDksIDE5NiwgMTksIDIwLCAyMjksIDIwOCwgMTksIDIwLCAyMjgsIDE2NCwgMTksIDIwLCAyMjUsIDYzLCAKLSAgICAxOSwgMjAsIDIyMSwgMTQ5LCAxOSwgMjAsIDIyMywgNTksIDE5LCAyMCwgMjI3LCAyNDQsIDE5LCAyMCwgMjExLCAyMzIsIAotICAgIDE5LCAyMCwgMjE0LCAyMDgsIDE5LCAyMCwgMjEyLCAyMDcsIDE5LCAyMCwgMjEzLCA0NywgMTksIDIwLCAyMTIsIDE3MiwgCi0gICAgMTksIDIwLCAyMDIsIDIyMiwgMTksIDIwLCAyMDMsIDU4LCAxOSwgMjAsIDIxNiwgMTY1LCAxOSwgMjAsIDIyMSwgMTcsIDE5LCAKLSAgICAyMCwgMjIwLCA1MywgMjIxLCAxNywgMTksIDIwLCAyMjEsIDE2LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTYsIDE5LCAyMCwgCi0gICAgMjIxLCAxNSwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE1LCAxOSwgMjAsIDIyMSwgMTQsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAKLSAgICAxNCwgMTksIDIwLCAyMTUsIDEwNywgMTksIDIwLCAyMTUsIDEwNiwgMTksIDIwLCAyMTUsIDEwNSwgMTksIDIwLCAyMTUsIAotICAgIDEwNCwgMTksIDIwLCAyMTUsIDEwMywgMTksIDIwLCAyMTUsIDExMSwgMTksIDIwLCAyMjAsIDUzLCAyMTksIDE4NCwgMTksIAotICAgIDIwLCAyMjAsIDUzLCAyMTAsIDY5LCAxOSwgMjAsIDIyMCwgNTMsIDIzMCwgNTQsIDE5LCAyMCwgMjIwLCA1MywgMjQ3LCAKLSAgICAxMjUsIDE5LCAyMCwgMjIwLCA1MywgMjI2LCAxODUsIDE5LCAyMCwgMjIwLCA1MywgMjIzLCAxNjMsIDE5LCAyMCwgMjIwLCAKLSAgICA1MywgMTk0LCAxOSwgMjAsIDIyMCwgNTMsIDIxMywgOTIsIDE5LCAyMCwgMjQxLCAxNzQsIDIwNCwgMTQ0LCAxOSwgMjAsIAotICAgIDIwNCwgNDQsIDIwNCwgMTQ0LCAxOSwgMjAsIDQ2LCA1LCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE2LCAxODgsIDI0MywgCi0gICAgODUsIDE5LCAyMCwgMjE3LCAwLCAyMTUsIDEwOCwgMTksIDIwLCAxOTYsIDIyNywgMTgsIDE5LCAyMCwgMTk2LCAyMjgsIAotICAgIDExMiwgMTksIDIwLCAyMDksIDExLCAxOSwgMjAsIDIwOSwgMTMsIDE5LCAyMCwgMjA3LCAyMjEsIDE5LCAyMCwgMjA3LCAKLSAgICAyMjMsIDE5LCAyMCwgMjA3LCAyMjgsIDE5LCAyMCwgMjA4LCAxODAsIDE5LCAyMCwgMjA4LCAxODIsIDE5LCAyMCwgMjE0LCAKLSAgICAyMDYsIDIxMiwgMTc3LCAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDIzNiwgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMTcsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMTg1LCAxOSwgMjAsIDg4LCAyNDQsIDM1LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM5LCA1LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDE5MCwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCA2NCwgMTksIDIwLCA4OCwgMjMwLCA2MiwgMTksIAotICAgIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTU5LCAxOSwgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNDYsIDE5LCAyMCwgODgsIAotICAgIDI0NCwgMzAsIDE5NCwgMjI3LCAxMjQsIDIwNSwgMTY5LCAyMjcsIDE3NCwgMjI3LCAxMjQsIDEsIDE3MywgMjI3LCAxMjQsIAotICAgIDEsIDIyOSwgMTQ0LCAyMjcsIDEyNCwgMSwgMjM5LCA4LCAyMjcsIDEyNCwgMSwgMjM4LCAxMTksIDIyNywgMTI0LCAxLCAKLSAgICAyMjIsIDIwMywgMjI3LCAxMjQsIDEsIDI0NywgOTIsIDIyNywgMTI0LCAxLCAyNDYsIDE5OSwgMjI3LCAxMjQsIDEsIDIzMCwgCi0gICAgMTgxLCAyMjcsIDEyNCwgMSwgMjMwLCAxNDksIDIyNywgMTI0LCAxLCAyMDMsIDc4LCAyMjcsIDEyNCwgMSwgMjEwLCAyMiwgCi0gICAgMjI3LCAxMjQsIDEsIDIwOSwgMTA4LCAyMjcsIDEyNCwgMSwgMjQ0LCAyMTIsIDIyNywgMTI0LCAxLCAyNDQsIDEsIDIyNywgCi0gICAgMTI0LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDEsIDE4NSwgMjI3LCAxMjQsIDEsIDIxOCwgMjA4LCAyMjcsIDEyNCwgMSwgCi0gICAgMjQ5LCAzMiwgMjI3LCAxMjQsIDEsIDI0OCwgOTgsIDIyNywgMTI0LCAxLCAxOTIsIDIyNywgMTI0LCAxLCAxOTgsIDIyNywgCi0gICAgMTI0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDEsIDIyOCwgMTEzLCAyMjcsIDEyNCwgMSwgMjA0LCAxMTEsIDIyNywgMTI0LCAKLSAgICAxLCAyMTMsIDkwLCAyMjcsIDEyNCwgMSwgMjExLCAxNjQsIDIyNywgMTI0LCAxLCAyMTUsIDM2LCAyMjcsIDEyNCwgMSwgCi0gICAgMTUyLCAyMjcsIDEyNCwgMSwgMjM3LCAxODEsIDIyNywgMTI0LCAxLCAyMDgsIDExOSwgMjI3LCAxMjQsIDIyLCAyLCA2MywgCi0gICAgMjI3LCAxMjQsIDIyLCAyLCA3NSwgMjI3LCAxMjQsIDIyLCAyLCA2OCwgMjI3LCAxMjQsIDIyLCAyLCAyNDEsIDE2MSwgMjI3LCAKLSAgICAxMjQsIDIyLCAyLCAyNTEsIDY0LCAyMjcsIDEyNCwgMjIsIDIsIDIyMCwgMTgsIDIyNywgMTI0LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjI3LCAxMjQsIDIyLCAyLCA3NCwgMjI3LCAxMjQsIDIyLCAyLCA3OCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAxOTgsIAotICAgIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAxNzMsIDIyNywgMTI0LCA1LCAxLCAyMjIsIDIwMywgMjI3LCAxMjQsIDUsIDEsIDI1MCwgMTgwLCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMjEwLCAyMiwgMjI3LCAxMjQsIDUsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgNSwgMSwgMTg1LCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMTkyLCAyMjcsIDEyNCwgNSwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCA1LCAxLCAyMjgsIDExMywgMjI3LCAKLSAgICAxMjQsIDIsIDIyMywgMjMxLCAyMjcsIDEyNCwgMiwgMjI5LCAxODYsIDIyNywgMTI0LCAyLCAyMTUsIDM0LCAyMjcsIDEyNCwgCi0gICAgMiwgMjI3LCAxOCwgMjI3LCAxMjQsIDI0MCwgMjEyLCA4MiwgMjI3LCAxMjQsIDIxNywgNDcsIDgyLCAyMjcsIDEyNCwgMTcsIAotICAgIDIwMiwgODQsIDIyNywgMTI0LCAxNywgMTA1LCAyMjcsIDEyNCwgMTcsIDEwOCwgMjI3LCAxMjQsIDE3LCAxNDcsIDIyNywgCi0gICAgMTI0LCAxNywgMTQ5LCAyMjcsIDEyNCwgMTcsIDE3MCwgMjI3LCAxMjQsIDE3LCAxOTUsIDIyNywgMTI0LCAxNywgMjEzLCAKLSAgICAxMTEsIDIyNywgMTI0LCAxNywgMTk5LCAyMjcsIDEyNCwgMTcsIDIyMiwgNjMsIDQ1LCAyMjcsIDIzNSwgMSwgMTczLCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwMywgMTgyLCA0NSwgMjI3LCAyMzUsIDEsIDIyMiwgMjAzLCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCi0gICAgMjAsIDQ1LCAyMjcsIDIzNSwgMSwgMjE1LCAzNiwgNDUsIDIyNywgMjM1LCAxLCAxOTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjEwLCAKLSAgICAyMiwgNDUsIDIyNywgMjM1LCAxLCAyMDksIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMjgsIDExMywgNDUsIDIyNywgMjM1LCAKLSAgICAxLCAxODUsIDQ1LCAyMjcsIDIzNSwgMSwgMjE4LCAyMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMTkyLCA0NSwgMjI3LCAyMzUsIDEsIAotICAgIDI0MCwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNiwgODYsIDQ1LCAyMjcsIDIzNSwgMSwgMTUyLCA0NSwgMjI3LCAyMzUsIAotICAgIDEsIDIxNywgMTI2LCA0NSwgMjI3LCAyMzUsIDEsIDIyOSwgMTQ0LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTAsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjAxLCAyMDEsIDQ1LCAyMjcsIDIzNSwgMSwgNjMsIDQ1LCAyMjcsIDIzNSwgMSwgNzUsIDQ1LCAyMjcsIAotICAgIDIzNSwgMSwgMjQxLCAxNjEsIDQ1LCAyMjcsIDIzNSwgMSwgMjQxLCAxNDcsIDQ1LCAyMjcsIDIzNSwgMSwgNjgsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjIwLCAxOCwgNDUsIDIyNywgMjM1LCAxLCA3OCwgNDUsIDIyNywgMjM1LCAxLCAyMDcsIDI0LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDc0LCA0NSwgMjI3LCAyMzUsIDEsIDI1MCwgMzIsIDQ1LCAyMjcsIDIzNSwgMSwgMjUxLCA2NCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDgsIDE1OSwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1OCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAotICAgIDE1NywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1NiwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1NSwgMjIyLCAyMTQsIDQ1LCAKLSAgICAyMjYsIDIzMywgMSwgMTM4LCAyMTcsIDEyNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTcsIDEyNiwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAKLSAgICAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEyNCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMywgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMjQsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwOCwgMjAsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE1LCAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTgsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA4LCAyMCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTUsIAotICAgIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE5OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAKLSAgICAyMTAsIDIyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMzgsIDIwMSwgMjAxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxMCwgMjIsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAxLCAyMDEsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxOCwgCi0gICAgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAKLSAgICAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE4LCAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEyNCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMzgsIDIwNiwgODYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxMTMsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA2LCA4NiwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMjgsIDExMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAKLSAgICAxNTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQ0LCAyMTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEzOCwgMjQ5LCAzMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxNTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEyNCwgMjQ0LCAyMTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjQ5LCAzMiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDE2OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIDE0OSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMjgsIDE2OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAKLSAgICAyMDMsIDE0OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDEsIDEyNCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIsIDIxMiwgMjE2LCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUyLCAyNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIzMSwgODMsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA2OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNiwgCi0gICAgMTc4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKLSAgICAyNTEsIDEwOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgCi0gICAgMiwgMjIwLCA5NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNywgMjQsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDIyLCAyLCAyNTAsIDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTEsIDIzNiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNiwgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjE5LCAxODgsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMjAsIDk0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCi0gICAgMjA3LCAyMCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIzMCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxLCA0NiwgMjA2LCAxNjQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjIsIDIwNSwgMjIyLCAyMTQsIDQ1LCAKLSAgICAyMjYsIDIzMywgMSwgNDYsIDIyMywgMTYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjI2LCAxODUsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMzAsIDU0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ1LCAKLSAgICA1MSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0OSwgMjU1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIAotICAgIDIyNSwgOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgMjI1LCA5MSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMTcsIDIwMiwgODQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxMDUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAKLSAgICAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNDcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNDksIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTUsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMTMsIDExMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5OSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIyMiwgNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEwNCwgMTcsIDEwNSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMiwgMjI4LCA5NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMiwgMjI4LCA5NiwgCi0gICAgODUsIDE2LCAyMTksIDUxLCA4NSwgMTYsIDIyMywgMjExLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMTMwLCAyMjksIDIyLCAKLSAgICA4NSwgMTYsIDI0OCwgMTM0LCAyMjksIDIyLCA4NSwgMTYsIDI0NywgMTY2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgOCwgCi0gICAgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDIsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAwLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgCi0gICAgNiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNjEsIDIyOSwgMjIsIDg1LCAxNiwgCi0gICAgMjQ0LCAxNTcsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTYsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTksIDIyOSwgMjIsIAotICAgIDg1LCAxNiwgMjQ0LCAxNTgsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTUsIDIyOSwgMjIsIDg1LCAxNiwgMjA3LCAxNjcsIAotICAgIDg1LCAxNiwgMjIzLCAyMTEsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMTMwLCAyMTUsIDIyMCwgODUsIDE2LCAyNDgsIDEzNCwgCi0gICAgMjE1LCAyMjAsIDg1LCAxNiwgMjQ3LCAxNjYsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgOCwgMjE1LCAyMjAsIDg1LCAxNiwgCi0gICAgMjE4LCAyLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDAsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgNiwgMjE1LCAyMjAsIDg1LCAKLSAgICAxNiwgMjE4LCA0LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE2MSwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTcsIDIxNSwgCi0gICAgMjIwLCA4NSwgMTYsIDI0NCwgMTU2LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1OSwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAKLSAgICAxNTgsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU1LCAyMTUsIDIyMCwgMjQ3LCAxODYsIDEsIDE3MywgMjQ3LCAxODYsIDEsIAotICAgIDIzOSwgOCwgMjQ3LCAxODYsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NiwgMSwgMjIyLCAxNDYsIDI0NywgMTg2LCAxLCAxODUsIAotICAgIDI0NywgMTg2LCAxLCAyNDksIDMyLCAyNDcsIDE4NiwgMSwgMTkyLCAyNDcsIDE4NiwgMSwgMjIzLCAyNTAsIDI0NywgMTg2LCAKLSAgICAxLCAyMTAsIDIyLCAyNDcsIDE4NiwgMSwgMjQ0LCAyMTIsIDI0NywgMTg2LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODYsIDEsIAotICAgIDIyMSwgMTQ3LCAyNDcsIDE4NiwgMSwgMjQ3LCA5MiwgMjQ3LCAxODYsIDEsIDIzMCwgMTgxLCAyNDcsIDE4NiwgMSwgMjIxLCAKLSAgICAxMSwgMjQ3LCAxODYsIDEsIDIyMSwgMywgMjQ3LCAxODYsIDEsIDE5OCwgMjQ3LCAxODYsIDEsIDIxNiwgMjIwLCAyNDcsIAotICAgIDE4NiwgMSwgMjI4LCAxMTMsIDI0NywgMTg2LCAxLCAyMDYsIDg2LCAyNDcsIDE4NiwgMSwgMjE1LCAzNiwgMjQ3LCAxODYsIAotICAgIDEsIDYzLCAyNDcsIDE4NiwgMSwgMTUyLCAyNDcsIDE4NiwgMjIsIDIsIDc1LCAyNDcsIDE4NiwgMjIsIDIsIDY4LCAyNDcsIAotICAgIDE4NiwgMjIsIDIsIDc0LCAyNDcsIDE4NiwgMjIsIDIsIDc4LCAyNDcsIDE4NiwgMjIsIDIsIDI1MSwgMTA5LCAyNDcsIDE4NiwgCi0gICAgMjE5LCAxMzYsIDI0NywgMTg2LCAyNDEsIDg0LCA3NiwgMjE0LCAxNjcsIDQ1LCAxMDQsIDEsIDEzOCwgMTczLCA0NSwgMTA0LCAKLSAgICAxLCAxMzgsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAxMzgsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDE3MywgNDUsIAotICAgIDEwNCwgMSwgMTI0LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMjIyLCAyMDMsIAotICAgIDQ1LCAxMDQsIDEsIDEzOCwgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTM4LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgMTI0LCAKLSAgICAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEyNCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIAotICAgIDIyMSwgMTEsIDQ1LCAxMDQsIDEsIDIxNiwgMTcxLCA0NSwgMTA0LCAxLCAxMzgsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAKLSAgICAyNDQsIDIxMiwgNDUsIDEwNCwgMSwgMTI0LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgMjE2LCAxODAsIDQ1LCAxMDQsIDEsIAotICAgIDEzOCwgMjEwLCAyMiwgNDUsIDEwNCwgMSwgMTM4LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTAsIDIyLCA0NSwgCi0gICAgMTA0LCAxLCAxMjQsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAyMDEsIDIwMSwgNDUsIDEwNCwgMSwgMjQ5LCAzMiwgNDUsIAotICAgIDEwNCwgMSwgMTM4LCAxODUsIDQ1LCAxMDQsIDEsIDEzOCwgMjE4LCAyMDgsIDQ1LCAxMDQsIDEsIDEzOCwgMjQwLCAxMDgsIAotICAgIDQ1LCAxMDQsIDEsIDEyNCwgMTg1LCA0NSwgMTA0LCAxLCAxMjQsIDI0MCwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxOCwgCi0gICAgMjA4LCA0NSwgMTA0LCAxLCAxOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMTk4LCA0NSwgMTA0LCAxLCAxMzgsIDE5OCwgNDUsIAotICAgIDEwNCwgMSwgMjE2LCAyMjAsIDQ1LCAxMDQsIDEsIDIxNSwgMTQwLCA0NSwgMTA0LCAxLCAyMjgsIDExMywgNDUsIDEwNCwgMSwgCi0gICAgMjI2LCAyMzIsIDQ1LCAxMDQsIDEsIDIwNCwgMTExLCA0NSwgMTA0LCAxLCAxMzgsIDIxMywgOTAsIDQ1LCAxMDQsIDEsIAotICAgIDEzOCwgMjExLCAxNjQsIDQ1LCAxMDQsIDEsIDEzOCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTM4LCAxNTIsIDQ1LCAxMDQsIAotICAgIDEsIDIyNywgNzcsIDQ1LCAxMDQsIDEsIDYzLCA0NSwgMTA0LCAxLCAxMjQsIDE1MiwgNDUsIDEwNCwgMSwgNzUsIDQ1LCAKLSAgICAxMDQsIDEsIDIzMSwgODMsIDQ1LCAxMDQsIDEsIDY4LCA0NSwgMTA0LCAxLCAyMDYsIDE3OCwgNDUsIDEwNCwgMSwgMjQxLCAKLSAgICAxNjEsIDQ1LCAxMDQsIDEsIDIyMCwgMTgsIDQ1LCAxMDQsIDEsIDIyOCwgOTcsIDQ1LCAxMDQsIDEsIDIzNywgMjQ5LCAyMTUsIAotICAgIDM2LCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAyMjgsIDExNCwgMjA5LCAyMjgsIDIyOCwgODYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMzAsIDEsIAotICAgIDIyOCwgODYsIDQ1LCAxMDQsIDEwOSwgMiwgNDYsIDIyMiwgMjAzLCA0NSwgMTA0LCAxMDksIDIsIDEyNCwgMTg1LCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDEzOCwgMjE2LCAxNzAsIDIxOSwgMjQ1LCAxMjQsIDE4NSwgNDUsIDEwNCwgMTA5LCAyLCAxOTIsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMjQ5LCAzMiwgNDUsIDEwNCwgMTA5LCAyLCAyMTUsIDM2LCA0NSwgMTA0LCAyLCAyMTUsIDEwLCA0NSwgCi0gICAgMTA0LCAyMiwgMiwgNjMsIDQ1LCAxMDQsIDIyLCAyLCAyMjUsIDE0MSwgMjE0LCAyMjUsIDQ1LCAxMDQsIDIyLCAyLCAyNTIsIAotICAgIDI1LCA0NSwgMTA0LCAyMiwgMiwgMjA5LCAyMzQsIDI1MiwgMjUsIDQ1LCAxMDQsIDIyLCAyLCA3NSwgNDUsIDEwNCwgMjIsIAotICAgIDIsIDIzMSwgODMsIDQ1LCAxMDQsIDIyLCAyLCAyMDcsIDI0LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzcsIDQ1LCAxMDQsIAotICAgIDIyLCAyLCA2OCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc4LCA0NSwgMTA0LCAyMiwgMiwgNzgsIDQ1LCAxMDQsIDIyLCAyLCAKLSAgICAyMjAsIDk4LCA1NiwgNDUsIDEwNCwgMjIsIDIsIDIxOSwgMTg4LCA0NSwgMTA0LCAyMiwgMiwgNzQsIDQ1LCAxMDQsIDIyLCAKLSAgICAyLCAyNTEsIDEwOSwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgMTgsIDQ1LCAxMDQsIDIyLCAyLCAyNTEsIDY0LCA0NSwgMTA0LCAKLSAgICAyMiwgMiwgMTA0LCAyNTEsIDY0LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCA5OCwgNTUsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAKLSAgICAyMzAsIDAsIDQ1LCAxMDQsIDIsIDIwOCwgMTYwLCA0NSwgMTA0LCAyLCAyMDgsIDE1OSwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIAotICAgIDIwOCwgMTU4LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTcsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NiwgCi0gICAgNDUsIDEwNCwgMiwgMjE2LCAyMjEsIDIzNywgMTU2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjE0LCAyNTMsIDQ1LCAxMDQsIAotICAgIDIsIDIyOSwgMTA0LCAyMjksIDIzOSwgNDUsIDEwNCwgMzksIDI0NSwgMTEzLCAyNDMsIDg1LCA0NSwgMTA0LCAyMzYsIDEwOCwgCi0gICAgMTcsIDIwMiwgODQsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwOCwgNDUsIAotICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDcsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTQ5LCA0NSwgMTA0LCAyMzYsIDEwOCwgCi0gICAgMTcsIDE3MCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjEzLCAxMTEsIDQ1LCAKLSAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTk5LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIyMiwgNjMsIDQ1LCAxMDQsIDEwNCwgMTcsIAotICAgIDIwMiwgODQsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwNSwgNDUsIDEwNCwgMTA0LCAxNywgMTA4LCA0NSwgMTA0LCAxMDQsIDE3LCAKLSAgICAxNDcsIDQ1LCAxMDQsIDEwNCwgMTcsIDE0OSwgNDUsIDEwNCwgMTA0LCAxNywgMTcwLCA0NSwgMTA0LCAxMDQsIDE3LCAxOTUsIAotICAgIDQ1LCAxMDQsIDEwNCwgMTcsIDIxMywgMTExLCA0NSwgMTA0LCAxMDQsIDE3LCAxOTksIDQ1LCAxMDQsIDEwNCwgMTcsIDIyMiwgCi0gICAgNjMsIDQ1LCAxMDQsIDIsIDIwNCwgMjksIDQ1LCAxMDQsIDIsIDIwNCwgMjgsIDQ1LCAxMDQsIDIsIDIxNCwgMjEyLCA0NSwgCi0gICAgMTA0LCAyLCAyMjksIDE3NSwgNDUsIDEwNCwgMiwgMjM2LCAzNiwgNDUsIDEwNCwgMiwgMjQzLCA5OSwgNDUsIDEwNCwgMiwgCi0gICAgMjE2LCA3MywgMjE1LCAxOTgsIDIxNiwgMTgwLCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjAzLCA3OSwgNDUsIDEwNCwgMiwgCi0gICAgMjMwLCAzNSwgNDUsIDEwNCwgMiwgMjMwLCAzNCwgNDUsIDEwNCwgMiwgMjE0LCAyMjAsIDQ1LCAxMDQsIDIsIDIxNCwgMjE5LCAKLSAgICA0NSwgMTA0LCAyLCAyMzcsIDk4LCA0NSwgMTA0LCAyLCAyNDcsIDg5LCAzOSwgMjQyLCA3NSwgMjQ2LCA1MywgMjUxLCAxMzgsIAotICAgIDM5LCAyNDMsIDIzMCwgMzksIDIzMSwgMjcsIDM5LCAxODMsIDQ3LCAzOSwgMjA4LCA3MCwgMjQzLCA4NSwgMzksIDIwMywgCi0gICAgMTk1LCA1NiwgMzksIDIwNCwgMjEsIDIyNywgMTE1LCA1NiwgMzksIDE3MSwgMTMxLCA1NiwgMzksIDUyLCAxNzEsIDEzMSwgCi0gICAgNTYsIDM5LCAxNTcsIDI0NiwgMjE5LCAyMTEsIDMyLCA1NiwgMzksIDIxMSwgMTgsIDI0NiwgMjE5LCAyMTEsIDMyLCA1NiwgCi0gICAgMzksIDIxOSwgNzgsIDU1LCAzOSwgNTIsIDIxOSwgNzgsIDU1LCAzOSwgMjE5LCA3OCwgNTYsIDM5LCAyMTksIDc4LCAyMTksIAotICAgIDE5OSwgMTMwLCAyLCAyMDcsIDksIDIxNiwgNTEsIDEzMCwgMiwgMjA3LCA5LCAyNDcsIDU0LCAxMzAsIDIsIDI0NiwgMjM0LCAKLSAgICAxMzAsIDIsIDIxMCwgMTkxLCAxMzAsIDIsIDI0OCwgNTYsIDEzMCwgMSwgMjUxLCA0NSwgMTMwLCAxLCAyNTEsIDQ2LCAyMDksIAotICAgIDE3OCwgMTMwLCAxLCAyMzEsIDc5LCAxMzAsIDEsIDIzMSwgODAsIDIwOSwgMTc4LCAxMzAsIDEsIDIwNywgMTIsIDEzMCwgMSwgCi0gICAgMjA3LCAxMywgMjA5LCAxNzgsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIAotICAgIDEwNCwgMjA5LCAxNzgsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5OCwgCi0gICAgMjA5LCAxNzgsIDEzMCwgMSwgMjQxLCAxMjcsIDEzMCwgMSwgMjUxLCA2MiwgMTMwLCAxLCAyMjAsIDQ5LCAxMzAsIDEsIAotICAgIDIyMCwgNTAsIDIwOSwgMTc4LCAxMzAsIDEsIDE3MywgMTMwLCAxLCAyMzAsIDQ0LCAyMjUsIDE0NCwgMTMwLCAxLCAyMzksIAotICAgIDgsIDEzMCwgMSwgMjM5LCA5LCAyMzgsIDI1LCAxMzAsIDEsIDIyMiwgMjAzLCAxMzAsIDEsIDI0NywgOTIsIDEzMCwgMSwgCi0gICAgMjQ3LCA5MywgMjI4LCAxMDAsIDEzMCwgMSwgMjMwLCAxODEsIDEzMCwgMSwgMjMwLCAxODIsIDIzMCwgMTUzLCAxMzAsIDEsIAotICAgIDIyMSwgMTEsIDEzMCwgMSwgMjEwLCAyMywgMjI3LCAyNTMsIDEzMCwgMSwgMjEwLCAyMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKLSAgICAxMzAsIDEsIDI0NCwgMjEzLCAyMjMsIDIwNiwgMjUxLCA0LCAxMzAsIDEsIDI0NCwgMjEzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAotICAgIDEzMCwgMSwgMjIzLCAxMTEsIDIxNiwgMTgzLCAxMzAsIDEsIDIxMCwgMjIsIDEzMCwgMSwgMjEwLCAyMywgMjA5LCAyMDAsIAotICAgIDEzMCwgMSwgMjQ0LCAyMTIsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyNSwgMTYzLCAxMzAsIDEsIDIwMSwgMjAxLCAxMzAsIDEsIAotICAgIDE4NSwgMTMwLCAxLCAyMTksIDE2OSwgMjI5LCAyNTEsIDEzMCwgMSwgMjQ5LCAzMiwgMTMwLCAxLCAyNDksIDMzLCAyMjksIAotICAgIDE4NywgMTMwLCAxLCAxOTIsIDEzMCwgMSwgMTk4LCAxMzAsIDEsIDIxNiwgMjIwLCAxMzAsIDEsIDIyOCwgMTEzLCAxMzAsIAotICAgIDEsIDIwNCwgMTExLCAxMzAsIDEsIDIxNSwgMzcsIDIxNSwgMjEsIDEzMCwgMSwgMjE1LCAzNywgMjE0LCAyMzIsIDEzMCwgMSwgCi0gICAgMjE1LCAzNiwgMTMwLCAxLCAxNTIsIDEzMCwgMiwgMjE2LCA5NCwgMTMwLCAyMiwgMiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIAotICAgIDIwNywgOCwgMTMwLCAyMiwgMiwgMjA3LCA5LCAyMTQsIDIyOCwgMTMwLCAyMiwgMiwgMjEwLCAyMjQsIDEzMCwgMjIsIDIsIAotICAgIDIxMCwgMjI1LCAyMzEsIDcxLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAKLSAgICAyMTYsIDEwNCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIAotICAgIDIyNywgMTk4LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzUsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwMywgCi0gICAgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDQsIDIwOSwgMTc4LCAKLSAgICAxMzAsIDIyLCAyLCAyMTgsIDI0OSwgMTMwLCAyMiwgMiwgMjE4LCAyNTAsIDIwOSwgMTc4LCAxMzAsIDI1MSwgMTE3LCAyNTEsIAotICAgIDExNiwgMTMwLCAxLCAyMzAsIDIzLCAyMTQsIDIyNywgMTMwLCAxLCAyMjksIDExMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA3LCAKLSAgICAxMDEsIDIxNCwgMjI3LCAxMzAsIDEsIDI0MSwgMTU1LCAyMTQsIDIyNywgMTMwLCAxLCAyMDYsIDU2LCAyMTQsIDIyNywgCi0gICAgMTMwLCAxLCAyMDIsIDEwNiwgMjE0LCAyMjcsIDEzMCwgMSwgMjUwLCA1MiwgMjE0LCAyMjcsIDEzMCwgMTcsIDIwMiwgODQsIAotICAgIDEzMCwgMTcsIDEwNSwgMTMwLCAxNywgMTA4LCAxMzAsIDE3LCAxNDcsIDEzMCwgMTcsIDE0OSwgMTMwLCAxNywgMTcwLCAKLSAgICAxMzAsIDE3LCAxOTUsIDEzMCwgMTcsIDIxMywgMTExLCAxMzAsIDE3LCAxOTksIDEzMCwgMTcsIDIyMiwgNjMsIDEzMCwgCi0gICAgMjE5LCAxMDQsIDEzMCwgMjE5LCAxMzAsIDEzMCwgMjA0LCAxNCwgMTMwLCAyNDcsIDMxLCAyMTksIDEyMywgMTMwLCAyNDcsIAotICAgIDMxLCAyMTIsIDEzOSwgMTMwLCAyNDcsIDMxLCAyMTksIDc1LCAxMzAsIDIxOSwgMTI5LCAxMzAsIDMxLCAxNiwgMjQzLCA5MSwgCi0gICAgMTMwLCAzMSwgMTYsIDI0NCwgMzQsIDEzMCwgMzEsIDE2LCAyNDIsIDI3LCAxMzAsIDMxLCAxNiwgMjQ0LCAxNjQsIDEzMCwgCi0gICAgMzEsIDE2LCAyNDQsIDE2NSwgMjEwLCAxOTEsIDEzMCwgMzEsIDE2LCAyNDMsIDE3NSwgMTMwLCAzMSwgMTYsIDI0NCwgMjA1LCAKLSAgICAxMzAsIDMxLCAxNiwgMjQ0LCAxMCwgMTMwLCAzMSwgMTYsIDI0NCwgMTg3LCAxMzAsIDMxLCAxNiwgMjQ0LCAxNjUsIDIzOCwgCi0gICAgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIwOSwgMTcxLCAxMzAsIDMxLCAxNiwgMzksIDI0MSwgODIsIDEzMCwgMzEsIDE2LCAKLSAgICAzOSwgMjI5LCAxODIsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjMwLCAxNTcsIDEzMCwgCi0gICAgMzEsIDE2LCAzOSwgMjI5LCAxODMsIDMsIDIzMCwgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg1LCAzLCAyMzAsIAotICAgIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyNDgsIDExOSwgMTMwLCAzMSwgMTYsIDM5LCAyMzgsIDI5LCAxMzAsIDMxLCAxNiwgCi0gICAgMjE2LCAxNCwgMTcxLCAyNDIsIDM3LCAxMzAsIDMxLCAxNiwgMjE2LCAxNCwgMTcxLCAyNDQsIDIwMywgMTMwLCAzMSwgMTYsIAotICAgIDIxNiwgMTQsIDI0NiwgMTYsIDIwNywgMTk1LCAxMzAsIDMxLCAxNiwgMjE2LCAxNCwgMjQ2LCAxNiwgMjA5LCAyNDQsIDEzMCwgCi0gICAgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTksIDExOCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxNywgMTc3LCAKLSAgICAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIDIxOCwgOTQsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgCi0gICAgMjE4LCA4MCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOCwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMDEsIAotICAgIDIxMCwgMjEzLCAyLCAyMTksIDExNCwgMjEwLCAyMTMsIDIsIDIxOSwgMTEwLCAyMTAsIDIxMywgMSwgNjMsIDIxMCwgMjEzLCAKLSAgICAxLCA3NSwgMjEwLCAyMTMsIDEsIDY4LCAyMTAsIDIxMywgMSwgMjUxLCAxMDksIDIxMCwgMjEzLCAxLCA3OCwgMjEwLCAyMTMsIAotICAgIDEsIDc0LCAyMTAsIDIxMywgMSwgMjQwLCAyMzgsIDIxMCwgMjEzLCAxLCAxNzMsIDIxMCwgMjEzLCAxLCAyMTcsIDEyNiwgCi0gICAgMjEwLCAyMTMsIDEsIDIzOSwgOCwgMjEwLCAyMTMsIDEsIDIyMiwgMjAzLCAyMTAsIDIxMywgMSwgMjQ3LCA5MiwgMjEwLCAKLSAgICAyMTMsIDEsIDIzMCwgMTgxLCAyMTAsIDIxMywgMSwgMjAyLCAxMTYsIDIxMCwgMjEzLCAxLCAyMjEsIDExLCAyMTAsIDIxMywgCi0gICAgMSwgMjEwLCAyMiwgMjEwLCAyMTMsIDEsIDI0NCwgMjEyLCAyMTAsIDIxMywgMSwgMjAxLCAyMDEsIDIxMCwgMjEzLCAxLCAKLSAgICAxODUsIDIxMCwgMjEzLCAxLCAyNDAsIDEwOCwgMjEwLCAyMTMsIDEsIDIwNiwgODYsIDIxMCwgMjEzLCAxLCAyNDksIDMyLCAKLSAgICAyMTAsIDIxMywgMSwgMTkyLCAyMTAsIDIxMywgMSwgMTk4LCAyMTAsIDIxMywgMSwgMjE2LCAyMjAsIDIxMCwgMjEzLCAxLCAKLSAgICAyMjgsIDExMywgMjEwLCAyMTMsIDEsIDIwNCwgMTExLCAyMTAsIDIxMywgMSwgMjE1LCAzNiwgMjEwLCAyMTMsIDEsIDIwMywgCi0gICAgMTgyLCAyMTAsIDIxMywgMSwgMTUyLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEyNywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAKLSAgICAxMDMsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTAwLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE3LCAyMTAsIDIxMywgMjIsIAotICAgIDIsIDIxOSwgOTksIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMjEsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMDksIDIxMCwgCi0gICAgMjEzLCAyMiwgMiwgMjE5LCAxMjgsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEzMSwgCi0gICAgMjEwLCAyMTMsIDIsIDIwNSwgMjA0LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDY0LCAxOTIsIDIxMCwgMjEzLCAxMDksIDIsIAotICAgIDIxOSwgNjQsIDIwNCwgMTExLCAyMTAsIDIxMywgMSwgMjI5LCAxNDQsIDIxMCwgMjEzLCAxLCAyMTAsIDE1MCwgMjEwLCAKLSAgICAyMTMsIDE3LCAyMDIsIDg0LCAyMTAsIDIxMywgMTcsIDEwNSwgMjEwLCAyMTMsIDE3LCAxMDgsIDIxMCwgMjEzLCAxNywgCi0gICAgMTQ3LCAyMTAsIDIxMywgMTcsIDE0OSwgMjEwLCAyMTMsIDE3LCAxNzAsIDIxMCwgMjEzLCAxNywgMTk1LCAyMTAsIDIxMywgCi0gICAgMTcsIDIxMywgMTExLCAyMTAsIDIxMywgMTcsIDE5OSwgMjEwLCAyMTMsIDE3LCAyMjIsIDYzLCAyMTAsIDIxMywgMjUwLCAKLSAgICAxNywgMjEwLCAyMTMsIDEsIDIxNiwgNzYsIDIxMCwgMjEzLCAxLCAyMjcsIDE3MSwgMjEwLCAyMTMsIDEsIDI0OCwgOTgsIAotICAgIDIxMCwgMjEzLCAxLCA0NiwgMjMwLCA1NCwgMjEwLCAyMTMsIDEsIDQ2LCAyMjYsIDE4NSwgMjQ4LCAyMDgsIDEsIDYzLCAKLSAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDYzLCAyNDgsIDIwOCwgMSwgMTUyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE1MiwgCi0gICAgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAxNTIsIDI0OCwgMjA4LCAxLCAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMjI5LCAyMzYsIAotICAgIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAxODUsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjAxLCAKLSAgICAyMDEsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjAxLCAyMDEsIDI0OCwgMjA4LCAxLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIDIxOSwgMTQzLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIDIzOSwgOCwgCi0gICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMzksIDgsIDI0OCwgMjA4LCAxLCAyMzAsIDE4MSwgMjQ4LCAyMDgsIDEsIDI0NCwgCi0gICAgMjEyLCAyNDgsIDIwOCwgMSwgMjE2LCAyMjAsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjE2LCAyMjAsIDI0OCwgMjA4LCAxLCAKLSAgICAxOTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTkyLCAyNDgsIDIwOCwgMSwgMjExLCAyMzYsIDIxMCwgMjIsIDI0OCwgCi0gICAgMjA4LCAxLCAyMjEsIDE3MCwgMjEwLCAyMiwgMjQ4LCAyMDgsIDEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgCi0gICAgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMTk4LCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDE5OCwgMjQ4LCAyMDgsIDEsIDIyMiwgMjAzLCAyNDgsIDIwOCwgMSwgMjI4LCAxMTMsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMjI4LCAxMTMsIDI0OCwgMjA4LCAxLCAyMjEsIDExLCAyNDgsIDIwOCwgMSwgMjQ3LCA5MiwgMjQ4LCAyMDgsIAotICAgIDEsIDIyMywgMjUsIDI0OCwgMjA4LCAxLCAyMjUsIDU0LCAyNDgsIDIwOCwgMSwgNzUsIDI0OCwgMjA4LCAxLCA2OCwgMjQ4LCAKLSAgICAyMDgsIDIsIDIwOCwgMTY0LCAyNDgsIDIwOCwgMjIsIDIsIDc0LCAyNDgsIDIwOCwgMjIsIDIsIDIxOSwgMTQzLCA3NCwgCi0gICAgMjQ4LCAyMDgsIDIyLCAyLCAyNDEsIDE2MSwgMjQ4LCAyMDgsIDIyLCAyLCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIAotICAgIDIzNiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgNzgsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAyMzYsIDc4LCAyNDgsIDIwOCwgCi0gICAgMjIsIDIsIDY4LCAyNDgsIDIwOCwgMjIsIDIsIDEwNiwgMzUsIDIxMiwgMTMxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMTA5LCAyLCAKLSAgICAyMjIsIDIwNSwgMjQ4LCAyMDgsIDEwOSwgMiwgMjM3LCAxNzEsIDI0OCwgMjA4LCAyMTksIDExMiwgMjQ4LCAyMDgsIDIxOSwgCi0gICAgMTA4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIyMywgMTExLCAyMjQsIDIxOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAKLSAgICAyMTgsIDEyMiwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMzAsIDc5LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIxOSwgCi0gICAgMTEyLCAyMjcsIDE4MSwgMSwgMTczLCAyMjcsIDE4MSwgMSwgMjI5LCA0MCwgMjI3LCAxODEsIDEsIDIyOSwgMTQ0LCAyMjcsIAotICAgIDE4MSwgMSwgMjM5LCA4LCAyMjcsIDE4MSwgMSwgMjM4LCA1MSwgMjI3LCAxODEsIDEsIDIyMiwgMjAzLCAyMjcsIDE4MSwgMSwgCi0gICAgMjQ3LCA5MiwgMjI3LCAxODEsIDEsIDI0NiwgMTk5LCAyMjcsIDE4MSwgMSwgMjMwLCAxODEsIDIyNywgMTgxLCAxLCAyMjEsIAotICAgIDExLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMjI3LCAxODEsIDEsIDIwOSwgMTA4LCAyMjcsIDE4MSwgMSwgMjQ0LCAyMTIsIAotICAgIDIyNywgMTgxLCAxLCAyMDEsIDIwMSwgMjI3LCAxODEsIDEsIDE4NSwgMjI3LCAxODEsIDEsIDIxOCwgOTgsIDIyNywgMTgxLCAKLSAgICAxLCAyMTgsIDIwOCwgMjI3LCAxODEsIDEsIDI0MCwgMTA4LCAyMjcsIDE4MSwgMSwgMjM5LCAyMjcsIDIyNywgMTgxLCAxLCAKLSAgICAyNDksIDMyLCAyMjcsIDE4MSwgMSwgMjQ4LCA0NCwgMjI3LCAxODEsIDEsIDE5MiwgMjI3LCAxODEsIDEsIDIyNCwgODksIAotICAgIDIyNywgMTgxLCAxLCAyMDgsIDIwLCAyMjcsIDE4MSwgMSwgMjA4LCAxMCwgMjI3LCAxODEsIDEsIDI0MSwgMjU1LCAyMjcsIAotICAgIDE4MSwgMSwgMTk4LCAyMjcsIDE4MSwgMSwgMjE2LCAyMjAsIDIyNywgMTgxLCAxLCAyMjgsIDExMywgMjI3LCAxODEsIDEsIAotICAgIDE1MiwgMjI3LCAxODEsIDEsIDIzNiwgMjI0LCAyMjcsIDE4MSwgMSwgMjA2LCA4NiwgMjI3LCAxODEsIDEsIDIxNSwgMzYsIAotICAgIDIyNywgMTgxLCAxLCAyMTMsIDkwLCAyMjcsIDE4MSwgMSwgMjA0LCAxMTEsIDIyNywgMTgxLCAxLCA2MywgMjI3LCAxODEsIAotICAgIDIxMCwgMjU0LCAxLCAxOTgsIDIyNywgMTgxLCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDIyNywgMTgxLCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjI3LCAxODEsIDIyLCAyLCA3NSwgMjI3LCAxODEsIDIyLCAyLCA3OCwgMjI3LCAxODEsIDIyLCAyLCAyMjAsIDE4LCAKLSAgICAyMjcsIDE4MSwgMjIsIDIsIDY4LCAyMjcsIDE4MSwgMjIsIDIsIDIwNiwgMTc4LCAyMjcsIDE4MSwgMjIsIDIsIDc0LCAyMjcsIAotICAgIDE4MSwgMTA5LCAyLCAyMzAsIDU0LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjYsIDE4NSwgMjI3LCAxODEsIDEwOSwgMiwgMTU5LCAKLSAgICAyMjcsIDE4MSwgMTA5LCAyLCAyMjMsIDE2MywgMjI3LCAxODEsIDEwOSwgMiwgMjE5LCAxODQsIDIyNywgMTgxLCAxMDksIDIsIAotICAgIDE0NiwgMjI3LCAxODEsIDEwOSwgMiwgMjEwLCA2OSwgMjI3LCAxODEsIDEwOSwgMiwgMjIwLCAyNDEsIDIyNywgMTgxLCAKLSAgICAxMDksIDIsIDIzMCwgMCwgMjI3LCAxODEsIDIsIDIxNiwgMTgxLCAyMjcsIDE4MSwgMiwgMjIxLCA1MSwgMjI3LCAxODEsIAotICAgIDIxNywgMTc5LCAyMTAsIDIwLCAyMjcsIDE4MSwgMjE3LCAxNzksIDIyMCwgMjUyLCAyMDksIDUsIDIxMCwgMjAsIDIyNywgCi0gICAgMTgxLCAyMTcsIDE3OSwgMjQ2LCAyMDYsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjA4LCAyLCAyNDYsIDIwNiwgMjI3LCAxODEsIAotICAgIDIxNywgMTc5LCAyMDgsIDEsIDIyNywgMTgxLCAxNywgMjAyLCA4NCwgMjI3LCAxODEsIDE3LCAxMDUsIDIyNywgMTgxLCAxNywgCi0gICAgMTA4LCAyMjcsIDE4MSwgMTcsIDE0NywgMjI3LCAxODEsIDE3LCAxNDksIDIyNywgMTgxLCAxNywgMTcwLCAyMjcsIDE4MSwgCi0gICAgMTcsIDE5NSwgMjI3LCAxODEsIDE3LCAyMTMsIDExMSwgMjI3LCAxODEsIDE3LCAxOTksIDIyNywgMTgxLCAxNywgMjIyLCAKLSAgICA2MywgMjI3LCAxODEsIDEsIDIwNywgMjQxLCAyMjcsIDE4MSwgMSwgMjA3LCAyMjksIDIyNywgMTgxLCAxLCAyNDQsIDEyMCwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAyMDIsIDg0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDEwNSwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDE3LCAxMDgsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0OSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNzAsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk1LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMTcsIDIxMywgMTExLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAKLSAgICAyMjIsIDYzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDQ5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCA4MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgMjIzLCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMSwgMjUxLCAzOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgCi0gICAgMSwgMjUxLCAyNDMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDI0NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgCi0gICAgMjQyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyMzcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjcsIDE0OCwgMjIwLCAKLSAgICA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjE1LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjMxLCA4NCwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDEsIDIzMCwgMjM2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAKLSAgICAyMjYsIDIzOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMzEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDI5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAyMjksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDE3MCwgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDEsIDIyNywgMjM0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCA0NiwgMjIwLCA0NywgMjQ2LCAxMzUsIAotICAgIDEsIDI0MSwgMTY0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCA5MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgCi0gICAgMjEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjcsIDQ5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjE5LCAyMTksIDIyMCwgCi0gICAgNDcsIDI0NiwgMTM1LCAxLCAyMjAsIDkzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjE5LCAyMDYsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxLCAyMjAsIDYwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDcsIDIwNywgMjA2LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMjM5LCAzLCAyMDcsIDIwNywgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ1LCAyMDcsIDIwNywgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDIxNiwgMTE4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE4LCAyMDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAyNTEsIAotICAgIDcyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE3LCAxNzksIDIyMywgMjQxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE3LCAxNzksIAotICAgIDUyLCAyMjMsIDI0MSwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMTAsIDE4NCwgMjEwLCAyMTMsIDIxNywgMTc5LCAKLSAgICAyNDgsIDY0LCAyMTksIDExMywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMTcsIDE2NywgMjEwLCAyMTMsIDIxNywgCi0gICAgMTc5LCAyNDgsIDY0LCAyNDcsIDc3LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIyNywgMTcyLCAyMTQsIDIyNCwgCi0gICAgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMzAsIDQ0LCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIAotICAgIDY0LCAyNDQsIDIxMywgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjQ5LCAzMywgMjE0LCAyMjQsIAotICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMzQsIDIwNiwgNTIsIDE0MywgMjEzLCA1OCwgMjA2LCA1MiwgMTQzLCAyMTcsIDI0NSwgCi0gICAgMjA2LCA1MiwgMiwgMjIyLCA3NiwgMjA2LCA1MiwgMiwgMjAzLCA4NywgMjI0LCAxNDYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKLSAgICAxNDMsIDIwMywgODcsIDI1MSwgNzcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIzMSwgMzYsIAotICAgIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCi0gICAgMTQzLCAyNDcsIDU1LCA1NiwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzYsIAotICAgIDIxNCwgMTk0LCAyMDYsIDUyLCAxNDMsIDUyLCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDgsIDcwLCAyMTAsIDE3NSwgCi0gICAgMjA2LCA1MiwgMTQzLCAyMjksIDIyMiwgMjUwLCAxODIsIDIwNiwgNTIsIDE0MywgNzAsIDU2LCAyMDYsIDUyLCAxNDMsIAotICAgIDEyMCwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAxMjYsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMjE2LCA0LCAyMjksIDIzMywgCi0gICAgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjUwLCA0NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIAotICAgIDIwNSwgMjAwLCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIxNiwgNzMsIAotICAgIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIxNiwgNzMsIAotICAgIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDIwNywgMjcsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAKLSAgICAyLCAyMDUsIDIwMCwgMjUwLCAxODMsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjUwLCAxOTcsIDIwNiwgCi0gICAgNTIsIDIsIDI1MCwgMTgxLCAyNDksIDIsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDYsIDc3LCAyMDYsIDUyLCAyLCAyNTAsIAotICAgIDE4MSwgMjA2LCA3OCwgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDIwOCwgMjAxLCAyMDYsIDUyLCAyLCAyMzcsIDE1LCAKLSAgICAxNjMsIDI1MCwgMTgwLCAyMDYsIDUyLCAyLCAxNjMsIDI1MCwgMTgwLCAyMDYsIDUyLCAyLCAyMTUsIDE0NywgMTYzLCAyNTAsIAotICAgIDE4MCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNywgMzMsIDIyMywgMjMyLCAyMDYsIDUyLCAyLCAyNTAsIDEyMiwgMjA2LCAKLSAgICA1MiwgMiwgMjE1LCAxOTgsIDI1MCwgMTIyLCAyMDYsIDUyLCAxNDMsIDI0NywgNTUsIDU1LCAyMDYsIDUyLCAyLCAyMzAsIAotICAgIDEzNSwgMjA2LCA1MiwgMiwgMjA2LCAyMjIsIDIwNiwgNTIsIDE0MywgMjE1LCAyNTMsIDU1LCAyMDYsIDUyLCAxNDMsIDUyLCAKLSAgICAyMTUsIDI1MywgNTUsIDgsIDEsIDUsIDYsIDYzLCA4LCAxLCA1LCA2LCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA3LCAxNzQsIAotICAgIDI1MSwgMTA5LCA4LCAxLCA1LCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDgsIDEsIDUsIDYsIDI0NywgMTI1LCA4LCAxLCA1LCAKLSAgICA2LCAyNDUsIDUxLCA4LCAxLCA1LCA2LCAyNDAsIDI0MywgOCwgMSwgNSwgNiwgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNzEsIAotICAgIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgNzUsIDgsIDEsIDUsIDYsIDIzMCwgMTg0LCA4LCAxLCA1LCA2LCAyMzAsIDU0LCA4LCAKLSAgICAxLCA1LCA2LCAyMjgsIDEzMSwgMywgOTUsIDgsIDEsIDUsIDYsIDIyNiwgMTg1LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAyMjMsIAotICAgIDE2MywgOCwgMSwgNSwgNiwgNzgsIDgsIDEsIDUsIDYsIDE3MSwgNzgsIDgsIDUsIDEsIDIxMiwgMTU0LCA3OCwgOCwgNSwgMSwgCi0gICAgMjEyLCAxNTQsIDE3MSwgNzgsIDgsIDUsIDEsIDIxMiwgMTU0LCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCAKLSAgICA3MywgOCwgMSwgNSwgNiwgMjE5LCAyMTYsIDgsIDUsIDEsIDIwOCwgMTQ1LCAxNjIsIDc4LCA4LCA1LCAxLCAyNDcsIDI0OCwgCi0gICAgMTYyLCA3OCwgOCwgMSwgNSwgNiwgMjE5LCAxODQsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDE0NiwgOCwgMSwgNSwgNiwgMjA3LCAKLSAgICAxNzQsIDE0NiwgOCwgMSwgNSwgNiwgMjEwLCA2OSwgOCwgMSwgNSwgNiwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCA2OCwgOCwgCi0gICAgNSwgMSwgMjEyLCAxNTQsIDI0MywgMjI5LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgCi0gICAgMSwgNSwgNiwgMjA2LCAxNjQsIDgsIDEsIDUsIDYsIDIwNCwgMTQ0LCA4LCAxLCA1LCA2LCAyMDIsIDE1OSwgOCwgMSwgNSwgCi0gICAgNiwgMjQwLCAxNzcsIDgsIDEsIDIwNSwgMTg2LCAyMjgsIDMsIDIxMSwgMjAwLCA4LCAxLCAyNTEsIDU5LCAzMCwgMSwgNSwgCi0gICAgNiwgMjM4LCAyMzUsIDMwLCAxLCA1LCA2LCAyMjgsIDI0LCAzMCwgMSwgNSwgNiwgMjE4LCAxNjcsIDMwLCAxLCA1LCA2LCAKLSAgICAyMTYsIDU5LCAzMCwgMSwgNSwgNiwgMjE3LCAyMDIsIDM2LCAxLCA1LCA2LCAyNDEsIDEyMiwgNjUsIDEsIDYsIDYzLCA2NSwgCi0gICAgMSwgNiwgMjUxLCAxMDksIDY1LCAxLCA2LCAyNDksIDI1NSwgNjUsIDEsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgNjUsIDEsIAotICAgIDYsIDI0NSwgNTEsIDY1LCAxLCA2LCA3NCwgNjUsIDEsIDYsIDIxNiwgNzMsIDc0LCA2NSwgMSwgNiwgMjM5LCA3NSwgNjUsIAotICAgIDEsIDYsIDIzNywgMTcxLCA2NSwgMSwgNiwgNzUsIDY1LCAxLCA2LCAyMzAsIDE4NCwgNjUsIDEsIDYsIDIzMCwgNTQsIDY1LCAKLSAgICAxLCA2LCAxNTksIDY1LCAxLCA2LCAyMjYsIDE4NSwgNjUsIDEsIDYsIDIyMywgMTYzLCA2NSwgMSwgNiwgMjE2LCA3MywgCi0gICAgMjIzLCAxNjMsIDY1LCAxLCA2LCA3OCwgNjUsIDEsIDYsIDIxOSwgMjE2LCA2NSwgMSwgNiwgMjE5LCAxODQsIDY1LCAxLCA2LCAKLSAgICAxNDYsIDY1LCAxLCA2LCAyMTAsIDY5LCA2NSwgMSwgNiwgNjgsIDY1LCAxLCA2LCAyMDQsIDE0NCwgNjUsIDEsIDUsIDYzLCAKLSAgICA2NSwgMSwgNSwgMjA3LCAxNzQsIDYzLCA2NSwgMSwgNSwgMjUxLCAyLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDI1MSwgMTA5LCAKLSAgICA2NSwgMSwgNSwgMjQ5LCAyNTUsIDY1LCAxLCA1LCAyNDUsIDUxLCA2NSwgMSwgNSwgNzQsIDY1LCAxLCA1LCAyMTQsIDE5MiwgCi0gICAgNjUsIDEsIDUsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTcxLCA3NCwgNjUsIDEsIDUsIDIzOSwgNzUsIDY1LCAxLCAKLSAgICA1LCAyMDcsIDE3NCwgNzUsIDY1LCAxLCA1LCAyMzAsIDU0LCA2NSwgMSwgNSwgMjI2LCAxODUsIDY1LCAxLCA1LCAyNDEsIAotICAgIDc4LCA2NSwgMSwgNSwgNzgsIDY1LCAxLCA1LCAxNzEsIDc4LCA2NSwgMSwgNSwgMjA4LCAxNDUsIDE2MiwgNzgsIDY1LCAxLCAKLSAgICA1LCAyNDcsIDI0OCwgMTYyLCA3OCwgNjUsIDEsIDUsIDIxOSwgMTg0LCA2NSwgMSwgNSwgMjEwLCA2OSwgNjUsIDEsIDUsIAotICAgIDY4LCA2NSwgMSwgNSwgMjEyLCAxNTQsIDY4LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjA2LCAKLSAgICAxNjQsIDY1LCAxLCA1LCAyNTEsIDU5LCA2NSwgMSwgNSwgMjQ4LCAxMDYsIDY1LCAxLCA1LCAzMCwgMjM4LCAyMzUsIDY1LCAKLSAgICAxLCA1LCAyNDQsIDM3LCA2NSwgMSwgNSwgMzAsIDIxOCwgMTkyLCA2NSwgMSwgNSwgMjQ2LCAxNDIsIDgsIDIxMCwgMjQ2LCAKLSAgICA1LCAxLCA3NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDE0NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDY4LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjA2LCAxNjQsIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjQ4LCAxMDYsIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjM4LCAyMzUsIAotICAgIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE2LCA1OSwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTgsIDE5MiwgMzAsIDIxMCwgMjQ2LCAKLSAgICA1LCAxLCAyNDYsIDE0MiwgOCwgNSwgMSwgMjA3LCAyNCwgOCwgNSwgMSwgNjYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIxOSwgMTg1LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgMjM5LCAyNDEsIDI1LCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNSwgMSwgMjA3LCAxNzQsIDIzOSwgNzUsIDY1LCAxLCAzNiwgMjQxLCA5MiwgOCwgNSwgMSwgMjMxLCA0LCAKLSAgICAyMzksIDc1LCA4LCA1LCAxLCAyMDksIDExMSwgMywgMjExLCAzNiwgOCwgNSwgNiwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgOTUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCA5NSwgOCwgNSwgNiwgMSwgMTA2LCAzLCA5NSwgCi0gICAgOCwgNSwgMSwgMjA2LCAyMTcsIDMsIDk1LCA4LCA1LCAxLCA2NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQ1LCAKLSAgICA1MiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjQsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTcsIAotICAgIDEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgCi0gICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMywgMTk3LCAKLSAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMzQsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjUxLCAzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDIzNiwgCi0gICAgMTE2LCAyNSwgMjA5LCAyNDgsIDgsIDUsIDEsIDE4OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxNzEsIDE4OCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDE4OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMTQsIAotICAgIDE5MywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxNzEsIAotICAgIDE1OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgCi0gICAgMjUxLCAyLCA2NSwgMSwgNSwgMjQ3LCAxMjUsIDY1LCAxLCA1LCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgNjUsIDEsIDUsIAotICAgIDI0MCwgMjQzLCA2NSwgMSwgNSwgMjE2LCA3MywgMTcxLCA3NCwgNjUsIDEsIDUsIDI0MCwgMTc0LCA2NSwgMSwgNSwgMjQzLCAKLSAgICA4NCwgMjMwLCAxODUsIDMsIDk1LCA2NSwgMSwgNSwgMTMyLCAyMzksIDc1LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIzNywgCi0gICAgMTcxLCA2NSwgMSwgNSwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAyMzAsIDY1LCAxLCA1LCA2LCA3NSwgNjUsIAotICAgIDEsIDUsIDYsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgNjUsIDEsIDUsIDIyOCwgCi0gICAgMTMxLCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjE5LCAxNDIsIDExMywgNjUsIDEsIDUsIDYsIAotICAgIDE1OSwgNjUsIDEsIDUsIDIyNiwgMTg2LCAzLCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgCi0gICAgMjI3LCAyMTAsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgNDksIDExMywgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCAyMTYsIDc5LCAKLSAgICAxMTMsIDY1LCAxLCA1LCA2LCAyMjMsIDE2MywgNjUsIDEsIDUsIDI0OCwgMjI1LCA3OCwgNjUsIDEsIDUsIDIxOCwgMTkyLCAKLSAgICA2NSwgMSwgNSwgMjE1LCA5NCwgMywgMTEzLCA2NSwgMSwgNSwgMjQxLCA3LCA2NSwgMSwgNSwgMjEwLCA3MCwgMywgMjE5LCAKLSAgICAxNDIsIDExMywgNjUsIDEsIDUsIDEwNiwgMTQyLCA2NSwgMSwgNSwgMjA2LCAyMTYsIDY1LCAxLCA1LCA2LCA2OCwgNjUsIDEsIAotICAgIDUsIDIwNiwgMTY1LCAzLCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjA2LCAxNjQsIDY1LCAxLCA1LCAyMDIsIDE1OSwgCi0gICAgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgNjUsIAotICAgIDEsIDUsIDI0MCwgMTc3LCA2NSwgMSwgNSwgMjA5LCA3NCwgMzksIDI0MiwgODMsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIAotICAgIDI0MiwgODMsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDIxMiwgMjUsIDU2LCAzOSwgMjEwLCAxODIsIDgyLCAzOSwgMjI1LCAKLSAgICAxNjksIDM5LCAyMzcsIDI1MSwgMzksIDIyNSwgMTY3LCAzOSwgMjUxLCAxMjQsIDM5LCAyMzcsIDI1MiwgMzksIDI1MSwgCi0gICAgMTI1LCAzOSwgOCwgNSwgMSwgMjE3LCAxLCA1NiwgMzksIDI0NywgMjEzLCAzOSwgMjI1LCAxNjgsIDM5LCA1MiwgMjQ2LCAKLSAgICA1MywgNTUsIDM5LCAyMjAsIDYzLCA1NSwgMzksIDIwMiwgMzAsIDU2LCAzOSwgMjMwLCAyMTYsIDU2LCAzOSwgMjA2LCAyMTEsIAotICAgIDU1LCAzOSwgMjA2LCAxOTQsIDU1LCAzOSwgOCwgNSwgMSwgMjM5LCAyMTQsIDE3MSwgMzQsIDU1LCAzOSwgOCwgNSwgMSwgCi0gICAgMjUxLCAxMDksIDM5LCA4LCA1LCAxLCAyNTAsIDE3OCwgMzksIDgsIDUsIDEsIDI1MCwgMTgsIDM5LCA4LCA1LCAxLCAyNDcsIAotICAgIDEyNiwgMjQ2LCAyMzEsIDM5LCA4LCA1LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyNDAsIDI0MywgMzksIAotICAgIDgsIDUsIDEsIDIzOSwgNzUsIDM5LCA4LCAxLCA1LCA2LCAyMzksIDc1LCAzOSwgOCwgNSwgMSwgMjMwLCA1NCwgMzksIDgsIAotICAgIDUsIDEsIDE1OSwgMzksIDgsIDEsIDUsIDYsIDE1OSwgMzksIDgsIDEsIDUsIDYsIDIyNiwgMTg1LCAzOSwgOCwgNSwgMSwgCi0gICAgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDE0NiwgMzksIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMjE1LCAxOTIsIDM5LCA4LCA1LCAxLCAxOTQsIDM5LCA4LCA1LCAxLCAxNjMsIDE5NCwgMzksIDgsIDUsIDEsIAotICAgIDIwMiwgMTU5LCAzOSwgOCwgNSwgMSwgMjUxLCAyLCAzOSwgOCwgNSwgMSwgMjQ5LCAyNTUsIDM5LCA4LCA1LCAxLCAyNDgsIAotICAgIDEwNiwgMzksIDgsIDUsIDEsIDIxNCwgMTkyLCAzOSwgOCwgNSwgMSwgMjQwLCAxNzQsIDM5LCA4LCA1LCAxLCAyMjgsIDEzMSwgCi0gICAgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDM5LCA4LCA1LCAxLCAxNTgsIDMsIDE1NywgMjQ2LCAyMTksIDk1LCAzOSwgOCwgNSwgCi0gICAgMSwgMjE5LCAxODQsIDM5LCA4LCA1LCAxLCAyNDEsIDcsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDE1NywgMjQ2LCAyMTksIDk1LCAKLSAgICAzOSwgOCwgNSwgMSwgMjA0LCAxNDQsIDM5LCA4LCA1LCAxLCAzNCwgMywgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzksIDExMiwgMjEwLCA0LCA1NSwgMzksIDUyLCAKLSAgICAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NiwgMzksIDQ5LCAyNTAsIDk1LCAKLSAgICA1NSwgMzksIDUwLCAyNTAsIDk1LCAyNSwgMTIxLCAyNTAsIDk1LCA1NiwgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NiwgCi0gICAgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NiwgOCwgNiwgMSwgNjYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgNjYsIDMsIDcwLCAKLSAgICA1NSwgOCwgNiwgMSwgNjYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgNjYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgNjYsIDMsIDIyNywgCi0gICAgMTE1LCA1NiwgOCwgNSwgMSwgNjYsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAKLSAgICAyNSwgMTY1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDUsIAotICAgIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyNDUsIAotICAgIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAKLSAgICAyNDYsIDIzMSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIAotICAgIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIAotICAgIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCA1NiwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgCi0gICAgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgNzAsIAotICAgIDU1LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAKLSAgICAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDIxNSwgNTYsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDIxNSwgCi0gICAgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyOCwgCi0gICAgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCi0gICAgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNiwgCi0gICAgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAotICAgIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgNzAsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMjI4LCAxMzEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgCi0gICAgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAotICAgIDIyNiwgMTg2LCAzLCAxNjUsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAxNjUsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCA3MCwgCi0gICAgNTUsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIyNiwgMTg2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAKLSAgICA3MCwgNTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTYsIDgsIDYsIAotICAgIDEsIDIyMywgMTY0LCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIAotICAgIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAxNjUsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxNjUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAKLSAgICAxLCAyMTcsIDEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCAKLSAgICA1NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgCi0gICAgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDcsIDMwLCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAKLSAgICAyMTUsIDk0LCAzLCAyNDcsIDMwLCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgCi0gICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgCi0gICAgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIAotICAgIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIxMCwgCi0gICAgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIAotICAgIDIzMiwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgCi0gICAgNiwgMSwgMTA2LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAKLSAgICAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAKLSAgICAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDYsIDEsIAotICAgIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMDYsIDE2NSwgCi0gICAgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIAotICAgIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDE2NSwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDUsIDMsIDE2NSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAKLSAgICAyMzEsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIAotICAgIDIwNCwgMTQ1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTk3LCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgCi0gICAgNSwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIAotICAgIDIwMiwgMTYwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIAotICAgIDIzNywgMTcyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NSwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAzNCwgMywgCi0gICAgNTAsIDE2MiwgMjE1LCAyNTIsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNjMsIDIxNSwgCi0gICAgOTQsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCAxMzgsIDk1LCA4LCA2LCAxLCAyMTMsIDU3LCAKLSAgICAxOTQsIDgsIDUsIDEsIDI0NCwgMzcsIDgsIDYsIDEsIDM0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCA3MCwgNTYsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMTg4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxODgsIDMsIDIzNiwgMTE2LCAKLSAgICA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIAotICAgIDExNiwgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAKLSAgICAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIAotICAgIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCAKLSAgICA1NiwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCAxMTYsIAotICAgIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCi0gICAgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCAKLSAgICA1LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAKLSAgICAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNSwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDYsIDEsIAotICAgIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgCi0gICAgMjI3LCAxNCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNywgMTQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk1LCAKLSAgICAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDEsIDM4LCAKLSAgICAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgCi0gICAgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCAKLSAgICA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAKLSAgICAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMzAsIAotICAgIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgCi0gICAgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAKLSAgICAxOTUsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzUsIAotICAgIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM1LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgCi0gICAgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIAotICAgIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIAotICAgIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTUsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIAotICAgIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAotICAgIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIAotICAgIDEsIDI1MSwgMywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAKLSAgICAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA2LCA3MCwgMzAsIDUsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgCi0gICAgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAKLSAgICAxODksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIAotICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIAotICAgIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKLSAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIAotICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCi0gICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgCi0gICAgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIAotICAgIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAKLSAgICAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAKLSAgICAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAKLSAgICAyMjEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIAotICAgIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCAKLSAgICA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNSwgMTY3LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKLSAgICAyMjUsIDE3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAKLSAgICAzLCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgCi0gICAgMywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgCi0gICAgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMjA5LCAKLSAgICAzMCwgMjI4LCAyNTIsIDMwLCAyMTcsIDIwOSwgMzAsIDIxNywgMTk1LCAzMCwgMjE4LCAyMzksIDMwLCAyNDMsIDIyNSwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIAotICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMTcsIDIwOSwgMzAsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAotICAgIDMwLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNSwgMTY3LCAzMCwgNSwgMSwgCi0gICAgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxOCwgCi0gICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMzAsIDIzMSwgCi0gICAgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA2LCAKLSAgICA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIAotICAgIDIwNSwgMTY3LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgCi0gICAgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjE2LCA2MCwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMTYsIDYwLCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgCi0gICAgMjE3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjA2LCAKLSAgICAyMTcsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMTYsIDYwLCAzLCAKLSAgICAyNDQsIDE0MSwgMzAsIDI0MywgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgCi0gICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKLSAgICAzNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgCi0gICAgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAyMDksIDMwLCAyMTksIDE4OSwgMzAsIDI0NCwgMTQxLCAyNDEsIDkzLCAyMTcsIDYyLCAyNDEsIDEwNCwgMjE3LCA2MiwgCi0gICAgMjQxLCA5MywgMjExLCAyMjgsIDI0MSwgMTA0LCAyMTEsIDIyOCwgMjA5LCAyOCwgMjExLCAyMjgsIDIzOSwgMTQ1LCAyMTEsIAotICAgIDIyOCwgMjEyLCA4NiwgMjExLCAyMjgsIDI0MCwgMTYsIDIxMSwgMjI4LCAyMTcsIDE3OSwgMjExLCAyMjgsIDIwOSwgNjMsIAotICAgIDIxMSwgMjI4LCAyMzcsIDE0NiwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgMjQsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIAotICAgIDI0LCAyMjEsIDE4MywgMjAyLCA4NSwgMjA0LCAyNCwgMjMwLCA5NiwgMjI3LCAyMTMsIDgyLCAyMTYsIDcsIDgyLCAyMzUsIAotICAgIDIyMCwgMjIxLCAxODQsIDIzNSwgMjIwLCAyNDAsIDE2LCAyNDQsIDE0NCwgMjQxLCA5MywgMjQ0LCAxNDQsIDI0MSwgMTA0LCAKLSAgICAyNDQsIDE0NCwgMjM2LCAxMDYsIDE0MiwgNTIsIDgwLCAyMjcsIDExNCwgNTIsIDEyNCwgMjI3LCAxMTQsIDQ5LCAyMTIsIAotICAgIDEyMCwgMjE3LCAzMSwgODIsIDUwLCAyMTIsIDEyMCwgMjE3LCAzMSwgODIsIDIxMiwgMTIwLCAyMjYsIDI1NSwgMjE3LCAzMSwgCi0gICAgODIsIDIxMiwgMTIwLCAyMzYsIDI0MSwgMjE3LCAzMSwgODIsIDQ5LCA1MiwgMjE3LCAzMSwgODIsIDUwLCA1MiwgMjE3LCAKLSAgICAzMSwgODIsIDUyLCAyMjYsIDI1NSwgMjE3LCAzMSwgODIsIDUyLCAyMzYsIDI0MSwgMjE3LCAzMSwgODIsIDI0NCwgMTk1LCAKLSAgICA1MiwgMjQ0LCAxOTUsIDI0NywgMTc3LCAyMDgsIDgyLCAyNDcsIDE3NywgMTE4LCA3MCwgMjI3LCAyMzIsIDEyMCwgNzAsIAotICAgIDIyNywgMjMyLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDIzNSwgMjE4LCAyMTgsIDYyLCAyMjcsIDExNSwgMjEzLCAxMzAsIDIxOSwgCi0gICAgODksIDIxMywgMTMwLCAyMjcsIDIxMywgMjQxLCAxMDIsIDIxNiwgNywgMjQxLCAxMDIsIDIxOCwgNDIsIDI0MywgMTY1LCAKLSAgICAyMzksIDE1NywgMjI3LCAyMTMsIDIxOSwgMTk2LCAyMTYsIDcsIDIxOSwgMTk2LCAyMjMsIDczLCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDIxOCwgMjQ3LCAyMjQsIDExNiwgNTQsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIDIxNywgMjM2LCAKLSAgICA1MiwgMjE3LCAyMzYsIDIwOCwgNzAsIDIxNywgMjM2LCAyMTYsIDczLCAyMTcsIDIzNiwgMjE2LCA3MywgNTIsIDIxNywgCi0gICAgMjM2LCAyMTYsIDczLCAyMDgsIDcwLCAyMTcsIDIzNiwgMjQ3LCAzMywgMjEyLCAxMjAsIDIyNywgMjE3LCAyNTAsIDIxOCwgCi0gICAgMjE3LCAzMSwgODIsIDIxMiwgMTIwLCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIxNiwgMTM0LCA4MiwgNTIsIAotICAgIDI0MCwgMjEyLCA4MiwgMjMwLCAyNDcsIDIxOSwgMTk4LCAyMDYsIDI0MywgMTY3LCAyMDgsIDI1MCwgMjQ3LCAzNCwgMjMxLCAKLSAgICA4LCAyMTgsIDYyLCAyNTAsIDU3LCAyMzUsIDIyMSwgMjQ3LCAxNzcsIDIzOSwgMTM4LCAyMTIsIDU3LCA0OSwgNTEsIDI0NywgCi0gICAgMjI3LCAzLCAyMTcsIDQxLCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMTcsIDQxLCA1MiwgMjE3LCA0NywgODIsIDIxNywgNDcsIAotICAgIDI0MCwgMjEyLCA4MiwgMjQwLCAyMTIsIDIxNywgNDcsIDgyLCAyMDgsIDIwMywgMiwgMjQwLCAyNTAsIDIxNiwgNzMsIDIxOCwgCi0gICAgMTI2LCA1NCwgNjIsIDk2LCAyNDcsIDE3NywgNjIsIDg2LCAyNDcsIDE3NywgMTI0LCAyNTAsIDU5LCAyMTYsIDczLCAyMTMsIAotICAgIDE0MywgMjQ2LCAxNywgMjA2LCAyMjQsIDEyMCwgMjUwLCA1OCwgMjUxLCAxOCwgMjA1LCAyNDMsIDI0NSwgMjMxLCAyMjQsIAotICAgIDEwMywgNTQsIDIxMCwgMTUzLCAyNDQsIDE0NCwgMjMwLCAyMzksIDIwNiwgMjQzLCAyMzksIDE5OCwgMjE3LCAxNzksIDgyLCAKLSAgICAxMjYsIDcwLCAyMTcsIDE3OCwgMjE3LCA1OCwgMjE3LCAyMzYsIDIzOSwgMTQ3LCA3MCwgMjE3LCAxNzgsIDIzOSwgMjMzLCAKLSAgICA3MCwgMjE3LCAxNzgsIDEyMCwgNzAsIDIxNywgMTc4LCAyMzksIDE0NywgNzAsIDgyLCAyNDIsIDgzLCAyNDUsIDEzMCwgCi0gICAgMjA4LCA4MSwgODAsIDIzOSwgMTQ3LCAyNDMsIDgzLCAyMjUsIDEwLCAxMywgMjExLCAyMjgsIDIwMywgMjM4LCAyMzAsIDk2LCAKLSAgICAyMzksIDEwMCwgMjUwLCAxNTUsIDIzMCwgMjM3LCAyMDgsIDIxOSwgMjMwLCAyMzcsIDIxMywgMTMwLCAyMzAsIDIzNywgCi0gICAgMjE4LCA3NiwgMjI3LCAyMTMsIDIzMCwgMjA3LCAyMTYsIDcsIDIzMCwgMjA3LCAyMzksIDI0NSwgMjExLCAxOCwgMjMwLCAKLSAgICAyMDcsIDIxOCwgNDIsIDI0MywgMTY1LCAyMzAsIDIwNywgMjMxLCAyMCwgMjEwLCAxMDEsIDIxMCwgMTcwLCAyNTEsIDEyOCwgCi0gICAgMjEwLCAxMDEsIDIxMCwgMTcwLCAyMzEsIDIwLCAxMCwgMjM5LCAxNTksIDIxMywgNjEsIDI1MSwgMTI4LCAxMCwgMjM5LCAKLSAgICAxNTksIDIxMywgNjEsIDIyMywgNjcsIDE3LCAyMTMsIDYyLCAyMjEsIDE4NiwgMTcsIDIxMywgNjIsIDIxMCwgMTk5LCAyMDIsIAotICAgIDg0LCAyMTAsIDE5OSwgOCwgNSwgMSwgNzUsIDIxMCwgMTk5LCAxNDksIDIxMCwgMTk5LCAxNzAsIDIxMCwgMTk5LCAxOTUsIAotICAgIDIxMCwgMTk5LCAyMTMsIDExMSwgMjEwLCAxOTksIDE5OSwgMjEwLCAxOTksIDIyMiwgNjMsIDIxMCwgMTk5LCA5MSwgNTQsIAotICAgIDIxMCwgMTk5LCAyMjQsIDEwMiwgMjEwLCAxOTksIDI0MSwgMzUsIDU0LCAyMTAsIDE5OSwgNDksIDIxOSwgNzYsIDIxMCwgCi0gICAgMTk5LCA1MCwgMjE5LCA3NiwgMjEwLCAxOTksIDgsIDUsIDEsIDIyMywgMTYzLCAyMTAsIDI0NiwgMjAyLCA4NCwgMjEwLCAKLSAgICAyNDYsIDEwNSwgMjEwLCAyNDYsIDEwOCwgMjEwLCAyNDYsIDE0NywgMjEwLCAyNDYsIDE0OSwgMjEwLCAyNDYsIDE3MCwgCi0gICAgMjEwLCAyNDYsIDE5NSwgMjEwLCAyNDYsIDIxMywgMTExLCAyMTAsIDI0NiwgMTk5LCAyMTAsIDI0NiwgMjIyLCA2MywgMjEwLCAKLSAgICAyNDYsIDkxLCA1NCwgMjEwLCAyNDYsIDIyNCwgMTAyLCAyMTAsIDI0NiwgMjQxLCAzNSwgNTQsIDIxMCwgMjQ2LCA0OSwgCi0gICAgMjE5LCA3NiwgMjEwLCAyNDYsIDUwLCAyMTksIDc2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjMsIDgsIDIxMCwgMjQ2LCA1LCAxLCAKLSAgICA3NCwgOCwgMjEwLCAyNDYsIDUsIDEsIDc4LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjAzLCAxOTYsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMTQsIDE5MiwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzNywgMTcxLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjMwLCA1NCwgOCwgCi0gICAgMjEwLCAyNDYsIDUsIDEsIDE1OSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyNiwgMTg1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjIzLCAKLSAgICAxNjMsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMTksIDE4NCwgOCwgMjEwLCAyNDYsIDUsIDEsIDE5NCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIxMCwgNjksIDI0MCwgMjI5LCA1NCwgMjQ1LCAyNDMsIDU0LCAyNDUsIDExNSwgNTQsIDIzOSwgMTI4LCAyMzksIDEzMiwgCi0gICAgNTQsIDIyNywgOTQsIDU0LCAyMjQsIDExNywgNTQsIDIyMywgOTAsIDU0LCAyMTgsIDIyNCwgNTQsIDIxNSwgMTIwLCA1NCwgCi0gICAgMjAzLCAyNDYsIDU0LCAyMjIsIDIxNCwgMjEzLCAyOSwgNTQsIDI0MywgOTIsIDU0LCAyNDAsIDIzMCwgNTQsIDIyOSwgNzksIAotICAgIDU0LCAyMDcsIDE5NiwgNTQsIDI0MiwgNjYsIDU0LCAyMzgsIDE2NiwgMjE5LCAyLCA1NCwgMjE4LCAyMjEsIDU0LCAyMzcsIAotICAgIDIyNSwgNTQsIDI1MCwgMjQsIDU0LCAyMzYsIDMyLCA1NCwgMjQ2LCAyMzMsIDU0LCAyMjcsIDg0LCAyMDgsIDEyNSwgNTQsIAotICAgIDIxMSwgMjA5LCA1NCwgMjA5LCAxNTAsIDU0LCAyMzEsIDM0LCAyMTUsIDEyMCwgNTQsIDIwNywgMTc3LCAyMjcsIDk0LCA1NCwgCi0gICAgMjIxLCAxNzMsIDEzMSwgNTQsIDIyNSwgMTIwLCA1NCwgMjE1LCAxNDIsIDU0LCAyMjgsIDQsIDU0LCAzOSwgNDksIDIzNywgCi0gICAgODcsIDU1LCAzOSwgNTAsIDIzNywgODcsIDU1LCAzOSwgMTYzLCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjEyLCAKLSAgICAyMjgsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyNTAsIDE5NCwgNTMsIDU1LCAzOSwgMjQ2LCAxOCwgNTMsIDU1LCAKLSAgICAzOSwgNDksIDUzLCA1NSwgMzksIDUwLCA1MywgNTUsIDM5LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAyNDYsIDE4LCAyMTUsIAotICAgIDI1MywgMjE5LCAxOTksIDM5LCAyNTAsIDE5NCwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMTI2LCAxODcsIDU1LCAzOSwgCi0gICAgMjM5LCAxNDcsIDE4NywgNTUsIDM5LCAyNDEsIDg4LCAyNDYsIDYxLCAzOSwgMjQxLCA4OCwgMjExLCAxNzcsIDM5LCAyNDEsIAotICAgIDg4LCAyNDMsIDIyMSwgMzksIDI0MSwgODgsIDI0NiwgNjIsIDI0OSwgMjAsIDM5LCA0OSwgNTAsIDUzLCA1NSwgMzksIDI0MSwgCi0gICAgODgsIDIxNCwgMTg0LCAzOSwgMjQxLCA4OCwgMjI5LCAxNDcsIDM5LCAyNDEsIDg4LCAyMDYsIDIxNCwgMjE4LCA1OSwgMjA4LCAKLSAgICA4NSwgMzksIDIxNiwgNzQsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA1MiwgODAsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgCi0gICAgMjUwLCAyMDQsIDk3LCAzOSwgMjA4LCA3MCwgMjA2LCAyNDUsIDM5LCAyMDQsIDI3LCAyNDcsIDIwOCwgNTUsIDM5LCA5NiwgCi0gICAgNTMsIDIxOSwgMTk5LCAzOSwgMTYzLCA1MiwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDg2LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDI0MiwgNjgsIDM5LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAzOSwgNDksIDUzLCA1NiwgMzksIDUwLCA1MywgCi0gICAgNTYsIDM5LCAyNTAsIDYwLCA1NSwgMjUxLCAxMzQsIDIyMCwgNjksIDI1MSwgMTE4LCAyMDgsIDE3MywgMjA5LCA5MywgMjEwLCAKLSAgICAyNTUsIDE2OSwgNiwgMjQ3LCAxMjUsIDI0NCwgNTUsIDI0NiwgMjIzLCAyNDYsIDIxOCwgMjI3LCAxMTUsIDk3LCAyNDcsIAotICAgIDM1LCAyMjAsIDY5LCAyNDcsIDg0LCAyMDYsIDI1NCwgMjQwLCAyMzEsIDI0NSwgMjAwLCAyMTQsIDE4MSwgMjQ0LCA1NSwgCi0gICAgMjQwLCA5MCwgMTMyLCA1LCAyMzksIDc1LCAxMzIsIDYsIDIzNywgMTcxLCAyNDgsIDQxLCA2LCAyMzcsIDE3MSwgMTY5LCA2LCAKLSAgICAyMzcsIDE3MSwgMjE4LCA5MywgMjQ1LCAyMDAsIDIxOCwgOTMsIDI0NSwgMjAxLCAxMTUsIDEyMCwgMjE4LCAxNjcsIDEzMiwgCi0gICAgNiwgNzUsIDI0OCwgNDEsIDYsIDc1LCAxMzIsIDYsIDE1OSwgMTMyLCA1LCAxNTksIDIyOCwgMTMxLCA2NiwgMjQ4LCAyMzEsIAotICAgIDk3LCAxNjksIDYsIDIyMywgMTYzLCAyMjEsIDQyLCA1NCwgMjExLCAyNDEsIDIxNiwgMTQ2LCAyNDUsIDE2OCwgMTMyLCA2LCAKLSAgICAyMTksIDE4NCwgMTY5LCA2LCAyMTksIDE4NCwgMTY5LCA2LCAyMTcsIDEzNCwgMTMyLCA2LCAxNDYsIDI0OCwgNDEsIDYsIAotICAgIDE0NiwgMTY5LCA2LCAxNDYsIDIxNywgMjQzLCAyMDksIDI0MSwgMjE2LCA4NiwgMjEzLCAxMjIsIDgyLCAyMDksIDE2MiwgCi0gICAgNTQsIDIwOCwgMTE1LCAxMzEsIDU0LCAyMDYsIDM5LCAxNjksIDYsIDIwMiwgMTU5LCAyMTksIDIxNSwgNTQsIDIyMCwgNTksIAotICAgIDU0LCAyMzAsIDIzOSwgMjIwLCA1OSwgNTQsIDI0OCwgNDEsIDYsIDIwMiwgMTU5LCAyMDcsIDE3NCwgMzAsIDUsIDEsIDIzMCwgCi0gICAgMjMwLCAyMjksIDE4OCwgNTQsIDI1MCwgMjEzLCA1NCwgMTMyLCA2LCAyNDksIDI1NSwgMjQ4LCA0MSwgNiwgMjQ3LCAxMjUsIAotICAgIDI0MCwgMjU1LCA5NywgMTMyLCA1LCA3NCwgMTMyLCA2LCA3NCwgMTMyLCA2LCAyNDAsIDE3NCwgMjA3LCAxNzQsIDYsIDI0MCwgCi0gICAgMTc0LCAxMzIsIDYsIDIyNiwgMTg1LCAxMzIsIDUsIDc4LCAxMzcsIDk3LCAyNDgsIDEwOSwgOTcsIDIzOCwgNjgsIDk3LCAKLSAgICAyNDQsIDE3OSwgOTcsIDIzMSwgMjUsIDIxMSwgMjM5LCAyMTUsIDE5OCwgNiwgMjE3LCAxMzQsIDI0MCwgOTMsIDU0LCAxNjksIAotICAgIDUsIDIxOCwgMTY3LCAxNjksIDUsIDIzOCwgMjM1LCAxNjksIDYsIDIzOCwgMjM1LCAxNjksIDYsIDIxOCwgMTY3LCAxNjksIAotICAgIDIyMywgMTYyLCAyMTAsIDIxNywgMjA3LCAxNzQsIDQxLCA2LCAyMzksIDc1LCAyMDcsIDE3NCwgNDEsIDYsIDE1OSwgMjE2LCAKLSAgICA3MywgNDEsIDYsIDE1OSwgMjA3LCAxNzQsIDQxLCA2LCAyMDMsIDEyNCwgMTY5LCAzNywgNiwgMjQ1LCA1MSwgMTY5LCAzNywgCi0gICAgNSwgMjQ1LCA1MSwgMTY5LCAzNywgNSwgNzQsIDE2OSwgMzcsIDUsIDc1LCAxNjksIDM3LCA1LCAyMzAsIDE4NCwgMjE3LCAKLSAgICAyMTIsIDIyNywgMTE0LCAyMDcsIDE3NCwgMjUwLCAyMzUsIDIxOCwgMjQ3LCA1NCwgMjUxLCA0MSwgMjA3LCAxNzQsIDUsIAotICAgIDI0MCwgMTc0LCAxNiwgMzUsIDIxNCwgMjUyLCAyMTEsIDIzOSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxMywgMTA3LCAKLSAgICAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjIyLCA1NywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgMTQzLCAyMDQsIAotICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDIwOSwgNTcsIDIwNCwgMTYxLCAKLSAgICAyMzksIDEzOCwgMTE4LCAyNDAsIDIxLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMjYsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAxNDcsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTE4LCAyMTIsIDc4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMTIsIDc2LCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjQxLCAxMzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAyMzksIDIzMywgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjEzLCAxMTIsIDI0MSwgMTM2LCAyMzksIAotICAgIDEzOCwgMjIxLCA0MywgMTA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA4LCAyMTUsIAotICAgIDIxMCwgMjIxLCA0NCwgMTQ3LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ5LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTcwLCAyMTUsIAotICAgIDIxMCwgMjIxLCA0NCwgMTk1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjEzLCAxMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTksIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMjIsIDYzLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTIsIDIxNSwgMjEwLCAyMjEsIAotICAgIDQ0LCAyNDEsIDExMiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwNywgMTU0LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOCwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjM2LCAxMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMzYsIDExLCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMDksIDM2LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA1LCA1LCAyMTUsIDIxMCwgCi0gICAgMjIxLCA0NCwgMTA4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ3LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ5LCA1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTcwLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk1LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMjEzLCAxMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTksIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMjIsIDYzLCA1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTIsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDEsIDExMiwgNSwgMjE1LCAyMTAsIAotICAgIDIyMSwgNDQsIDIwNywgMTU0LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDExOCwgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCAKLSAgICA0NCwgMTE4LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMDksIDM3LCAyNDcsIDEyNiwgMjQ1LCA1MSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTMsIDIwOSwgCi0gICAgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTYsIDczLCAxMTgsIDIzNiwgMTEsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjEyLCA4OCwgMjI3LCAyNTUsIDE4LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOSwgCi0gICAgMjQxLCAxODIsIDE4LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOSwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMDIsIDg1LCAyMDksIDU3LCAyMDcsIDE3NCwgCi0gICAgMTcsIDEwOCwgMjA3LCAxNzQsIDE3LCAxNDcsIDk2LCA0NywgMTc3LCA0NywgODYsIDQ3LCAxODMsIDQ3LCA0OSwgNTAsIDQ3LCAKLSAgICAxMTIsIDEyMSwgNDcsIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDk2LCA1MywgMywgOTUsIDg2LCA1MywgMywgOTUsIDk2LCAyMDQsIDc2LCA0NywgCi0gICAgODYsIDIwNCwgNzYsIDQ3LCA5NiwgMTIwLCAyMzcsIDYyLCA0NywgMTc3LCAxMjAsIDIzNywgNjIsIDQ3LCA4NiwgMTIwLCAKLSAgICAyMzcsIDYyLCA0NywgMTgzLCAxMjAsIDIzNywgNjIsIDQ3LCA5NiwgNTMsIDMsIDIwOSwgMjQ4LCA4NiwgNTMsIDMsIDIwOSwgCi0gICAgMjQ4LCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE3NywgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MywgMjM5LCAxMjAsIAotICAgIDE0MiwgMTgzLCA1MywgMjM5LCAxMjAsIDE0MiwgMTEyLCAxMjEsIDUzLCAzLCAyNDgsIDIxOCwgOTYsIDUzLCAzLCAxMTMsIAotICAgIDg2LCA1MywgMywgMTEzLCA5NiwgNTMsIDMsIDIyNywgMTQsIDg2LCA1MywgMywgMjI3LCAxNCwgNDksIDUwLCAyMDQsIDc2LCAKLSAgICA0NywgNDksIDUwLCA1MywgMywgOTUsIDE4MywgMjAyLCAzMCwgNDcsIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgCi0gICAgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIxNiwgNSwgMTgzLCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAxODMsIDUzLCAzLCAKLSAgICAyMDgsIDIxMSwgMjE2LCA1LCA4NiwgNTMsIDMsIDI0NSwgMTY2LCAyNDIsIDY4LCAxODMsIDUzLCAzLCAyNDUsIDE2NiwgCi0gICAgMjI3LCAyMTIsIDI1MCwgMTk0LCAyMDgsIDE0NSwgMjEzLCAxNDYsIDQ3LCAyNDYsIDE4LCAyMDgsIDE0NSwgMjEzLCAxNDYsIAotICAgIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMTYzLCAxNDIsIDk2LCA1MywgMjA4LCAxNzMsIDI0OCwgMjMxLCAKLSAgICAxMTUsIDg2LCA1MywgMjA4LCAxNzMsIDE0MiwgMjUwLCAxOTQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDE3MSwgCi0gICAgMjQ2LCA2MiwgNDcsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjEyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAKLSAgICAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCA1LCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjI3LCAyMTIsIDg2LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDIwNiwgMjEyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAxODMsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjE2LCA1LCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjI3LCAyMTIsIDg2LCA1MywgMTE1LCA5NiwgNDcsIDE3NywgNTMsIDk2LCAKLSAgICA3NiwgMTgzLCA0NywgOTYsIDUzLCAxMTUsIDg2LCA0NywgOTYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIxOSwgMTQ2LCAKLSAgICAyNTAsIDkxLCA4NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE4MywgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCAyMzcsIDg3LCAxMTUsIAotICAgIDg2LCAyMzcsIDg2LCA4NiwgMjM3LCA4NywgMTE1LCA5NiwgMjM3LCA4NiwgOTYsIDUyLCA1MywgMywgOTUsIDQ5LCA1MCwgCi0gICAgNTIsIDUzLCAzLCA5NSwgODYsIDUyLCA1MywgMywgOTUsIDk2LCA1MiwgNDcsIDE3NywgNTIsIDQ3LCA4NiwgNTIsIDQ3LCAKLSAgICAxODMsIDUyLCA0NywgNDksIDUwLCA1MiwgNDcsIDExMiwgMTIxLCA1MiwgNDcsIDE1MywgMjA0LCA0NiwgNTIsIDQ3LCAxNTMsIAotICAgIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNTIsIDQ3LCAKLSAgICA5NiwgMjA4LCA3MCwgNDcsIDg2LCAyMDgsIDcwLCA0NywgOTYsIDIxMSwgMTcxLCA0NywgODYsIDIxMSwgMTcxLCA0NywgCi0gICAgMTc3LCA1MywgMywgNTIsIDk1LCAxODMsIDUzLCAzLCA1MiwgOTUsIDk2LCAyNDQsIDE0MywgNDcsIDE3NywgMjQ0LCAxNDMsIAotICAgIDQ3LCA4NiwgMjQ0LCAxNDMsIDQ3LCAxODMsIDI0NCwgMTQzLCA0NywgOTYsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgNTMsIAotICAgIDIwOCwgMTczLCAxNDIsIDk2LCA2MSwgNDcsIDE3NywgNjEsIDQ3LCA4NiwgNjEsIDQ3LCAxODMsIDYxLCA0NywgMTc3LCA2MSwgCi0gICAgNTMsIDIzOSwgMTIwLCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI2LCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgCi0gICAgMjE5LCAyNywgMywgMjM2LCAxMDYsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjcsIDMsIDgwLCAxNDIsIAotICAgIDE3NywgNjEsIDUyLCA0NywgMTc3LCA2MSwgNTIsIDUzLCAyMjAsIDMyLCAyMTksIDI2LCA4NiwgNjEsIDUzLCAyMzksIDEyMCwgCi0gICAgMjA0LCA5OSwgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDI0NSwgMTY1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAKLSAgICAyMDgsIDE3MywgMjQ1LCAxNjUsIDExMiwgMTIxLCA2MSwgNDcsIDUwLCA1MywgMywgNSwgMjQ2LCA2MSwgMTgzLCA1MywgOTYsIAotICAgIDc2LCAxNzcsIDQ3LCAxMjYsIDg2LCAyNTAsIDkxLCA5NiwgNTMsIDMsIDgwLCA5NSwgODYsIDUzLCAzLCA4MCwgOTUsIDQ5LCAKLSAgICA1MCwgNTMsIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCA1MiwgODAsIDk1LCA4NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDQ5LCA1MCwgCi0gICAgNTMsIDMsIDUyLCA4MCwgOTUsIDk2LCAyMjAsIDYsIDQ3LCA4NiwgMjIwLCA2LCA0NywgNDksIDUwLCAyMjAsIDYsIDQ3LCAKLSAgICAzNSwgMjUxLCAxNCwgMjQ1LCAyMjgsIDIxOSwgNjksIDI0MywgMjA1LCAyMDksIDgzLCAyNDAsIDIwNywgMjA5LCA4MywgCi0gICAgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDAsIDIwOCwgMjQxLCA5NCwgMjEzLCAxMTcsIDIzMSwgMzgsIDIyMywgMTAxLCAyNDEsIAotICAgIDExNSwgMjIwLCA2OSwgMjIxLCAxNjYsIDI1MCwgMjMyLCAyNDEsIDExNSwgMjIwLCA2OSwgNSwgMjQxLCAxMTUsIDIyMCwgCi0gICAgNjksIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjQsIDI0NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgCi0gICAgMjI0LCAyNDQsIDUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjQsIDI0NCwgMjQxLCA4NCwgNzYsIDIxNywgMjE0LCAyMjMsIAotICAgIDE2MiwgMjE3LCAyMjQsIDIyMywgMTYyLCAyNDUsIDE3MSwgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMjQsIDEwMywgNTQsIDIyNCwgCi0gICAgMTAxLCA1NCwgNzAsIDIxOCwgNzYsIDI0MywgMTM3LCAyMTIsIDU3LCAyMTMsIDExOCwgMjI0LCAxMDIsIDI1MCwgNjAsIAotICAgIDIxOSwgMjU0LCAyMTUsIDI1MywgMjE5LCAyNTQsIDI0NywgMTc4LCAyMTksIDI1NCwgNTEsIDIxNSwgMjA0LCAyNDUsIDEwNiwgCi0gICAgMjE1LCAyMDQsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMjE3LCAyMTAsIDEzNSwgMjMxLCAyNywgNTAsIDI1MCwgMjE3LCAyNTAsIAotICAgIDIxNywgMjI1LCAxNywgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxNywgMjQzLCAxMzksIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjQzLCAxNDMsIDIxOSwgODIsIDEzNSwgMjIxLCAxNjYsIDIxOSwgODIsIDEzNSwgMjI3LCAzNywgMjUwLCAyMjYsIDIyNywgCi0gICAgMzcsIDIxOSwgMjQ0LCAyMzAsIDI0NCwgMjA2LCAyMzcsIDIzMSwgMiwgNTIsIDIzMSwgMiwgMjA4LCA3MCwgMjMxLCAyLCAKLSAgICAyNDUsIDE4OCwgMjMxLCAyLCAyMTAsIDE4OSwgMjMxLCAyLCAyMDUsIDE3OCwgMjMxLCAyLCAyNDYsIDE4LCAyMzEsIDIsIAotICAgIDI0NiwgMTgsIDI0NSwgMTg4LCAyMzEsIDIsIDI1MCwgMTk0LCAyNDUsIDE4OCwgMjMxLCAyLCAyMDksIDgyLCAyNDgsIDE1MiwgCi0gICAgMjE2LCAxNjgsIDIxNywgMjExLCA3MCwgMjI0LCAxMDIsIDI0MCwgMjE1LCAyMzgsIDE3MiwgMjE3LCAyMTEsIDIzNiwgMTIxLCAKLSAgICAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxNiwgNzMsIDIwOCwgMjI3LCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgMjEyLCAxMjIsIAotICAgIDIwNCwgNzUsIDIwMywgMjI2LCAyMTcsIDIyNCwgMjIxLCAxNjYsIDIwOCwgMjI3LCAyMjQsIDEwMywgMjA4LCAyMjcsIDI1MCwgCi0gICAgNTMsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUwLCA1MywgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDEzNSwgMjUwLCAxNTEsIAotICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjUxLCAxMjcsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMjUwLCAxNTEsIDIyMSwgMTc1LCAKLSAgICAyNTEsIDEyNywgMTU2LCAxMzUsIDI1MSwgNywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAyNTEsIDcsIAotICAgIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMDgsIDIyNywgMjUxLCAxNSwgMTU2LCAxMzUsIDI0MSwgMzAsIAotICAgIDEzNSwgMjM4LCAxNzEsIDI0MSwgMzAsIDEzNSwgMjQzLCAyMDYsIDI0OCwgMTAzLCAyNTAsIDE1MywgMjA5LCA5MywgMjI3LCAKLSAgICAxMjIsIDIzOCwgMTcxLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMDksIDkzLCAyMzEsIAotICAgIDY1LCAyMjAsIDY5LCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDI1MCwgMTUxLCAxNTYsIDEzNSwgMjQ1LCAyNDMsIDI0MSwgCi0gICAgMzQsIDI0MSwgMzUsIDI0NSwgMjQyLCAyMTUsIDI1MywgMjMxLCA1MCwgMTU2LCAxMzUsIDIxNSwgMjUzLCAxNTYsIDEzNSwgCi0gICAgMjQ1LCAxNTksIDEzNSwgMjQwLCAyNTQsIDI0MSwgMzMsIDEzNSwgMjExLCA5NSwgMjQxLCAzNCwgMjQ0LCAzOCwgMTU2LCAKLSAgICAxMzUsIDE1NiwgMjA4LCAxNzMsIDI0NywgMTM3LCAyNDQsIDU2LCAyMjUsIDE3LCAyNDcsIDEzNiwgMjE3LCA0NSwgMTU2LCAKLSAgICAxMzUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM1LCAxNTQsIDEzNSwgMjIxLCAxNjYsIDIzNSwgMTU0LCAxMzUsIDIxMSwgMzksIAotICAgIDI0MSwgMzAsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgCi0gICAgMjI3LCAxNzksIDExNSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAxMTUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjQwLCAKLSAgICAyMjcsIDE3OCwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyNDgsIDEwMywgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjIxLCAxNjYsIAotICAgIDIyNywgMTc4LCAyMjEsIDE2NiwgMjM3LCAyNDYsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDE1NiwgMTM1LCAKLSAgICAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIAotICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDI0MSwgMzAsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMzcsIAotICAgIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjM3LCAKLSAgICAyNDYsIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDIyNywgMTc4LCAyMTcsIDI0OSwgMjEwLCAyMzYsIDIxNywgCi0gICAgMjUwLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxNywgMjUwLCAyMTksIAotICAgIDI0NSwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyMTcsIDI1MiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOCwgMjEwLCAyNDUsIDIyMCwgNjksIDIxMCwgMTk4LCAyMjAsIAotICAgIDY5LCAyMjEsIDE2NiwgMzQsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMzQsIDIxMCwgMTk4LCAyMjAsIDY5LCAKLSAgICAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyMiwgCi0gICAgMjMyLCAzNCwgMjEwLCAyNDUsIDc2LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyMiwgMjMyLCAzNCwgMjEwLCAxOTgsIDc2LCAKLSAgICAyMjEsIDE3NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgMywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDMsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyMjEsIDIyMywgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjIsIDIwNiwgMjM3LCA1MSwgCi0gICAgMjMxLCA2NSwgMjIwLCA2OSwgNTEsIDIxOSwgMjM2LCAyMjAsIDY5LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIAotICAgIDEzNSwgNTEsIDIxOSwgMjM2LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjQ3LCA0OCwgNTEsIDI0NSwgOTksIDQzLCAKLSAgICAyMTgsIDc2LCA0MywgMjI0LCAxMDIsIDQzLCAyMDgsIDIxOSwgNDMsIDI0MywgMTM3LCAyMTIsIDU3LCA0MywgNzAsIDIxOSwgCi0gICAgMjU0LCA0MywgMjE1LCAyNTMsIDIxOSwgMjU0LCA0MywgMjUwLCA2MCwgMjE5LCAyNTQsIDQzLCAyNDEsIDM0LCA0MywgMjQ0LCAKLSAgICAxNDQsIDEwMywgMjE4LCA3NiwgMTAzLCAyMjQsIDEwMiwgMTAzLCAyMDgsIDIxOSwgMTAzLCA3MCwgMjE5LCAyNTQsIDUwLCAKLSAgICAyMTAsIDMsIDQ5LCAyMTAsIDMsIDEyMSwgMjEwLCAzLCAxMTIsIDIxMCwgMywgMjUwLCA2MywgMjI0LCA3NywgMjA4LCA0OSwgCi0gICAgMjM5LCAxNjUsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIAotICAgIDIwNywgMTczLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgMjA1LCAyMjEsIDE2NiwgMjA4LCA0OSwgMjQzLCAxMDQsIDIyMSwgCi0gICAgMTY2LCAyMzksIDE2NiwgMjIyLCAyMzQsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgMjA3LCAxNzMsIDIxNywgMjUwLCAKLSAgICAyMDYsIDI0OCwgMjE2LCAxMTcsIDIxMCwgMjM3LCAyMDYsIDI0OCwgMjE2LCAxMTcsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgCi0gICAgNjksIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIAotICAgIDE1NiwgMTM1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTksIAotICAgIDIzNiwgMjIwLCA2OSwgMjMxLCA2NSwgMjIwLCA2OSwgMjIzLCAyMjgsIDIzNywgMjQsIDI0NSwgMjA1LCAyMjUsIDY5LCAKLSAgICAyMzAsIDI1NSwgMjAzLCAxNTYsIDIyMywgODEsIDIyMSwgMTc0LCA1MCwgMjUwLCAyMTgsIDMsIDI1MCwgMTI4LCA1MCwgCi0gICAgMjA4LCA4NSwgMjIzLCAxNjIsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjMsIDE2MiwgMjI3LCAzNywgMjE5LCAyNDQsIDIyMywgCi0gICAgMTYyLCAyMzAsIDI0NCwgMjIzLCAxNjIsIDIwNiwgMjM3LCAyNDMsIDIyMiwgMjE5LCAyNTQsIDcwLCAyMTksIDI1NCwgMjExLCAKLSAgICA5NSwgMjE5LCAyNTQsIDI0MywgMTM3LCAyMDgsIDIxOSwgMjQ3LCAyMzQsIDQ5LCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAKLSAgICAxNDIsIDIxNywgMjI0LCA1MCwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgMTQyLCAyMTcsIDIyNCwgNDksIDIxMywgMTQyLCAKLSAgICAyMTcsIDIyNCwgNTAsIDIxMywgMTQyLCAyMTcsIDIyNCwgMjE2LCA3MywgMjA4LCAyMjgsIDI0MSwgMzQsIDI0NSwgOTMsIAotICAgIDIyNywgMzcsIDIxOSwgMjQ0LCAyNDUsIDkzLCAyMjcsIDM3LCAyNTAsIDIyNiwgNTIsIDIxMCwgMjQ0LCA1MiwgMjEwLCAKLSAgICAxOTcsIDUyLCAyMzAsIDI0NCwgNTIsIDIwNiwgMjM3LCAyMTgsIDEwMywgMTU2LCAyNSwgMjE5LCA4MiwgMTM1LCAyMjcsIAotICAgIDE3OSwgMywgMjQzLCA4NSwgMjM3LCAyNDcsIDMsIDI0MywgODUsIDIwNSwgMjQyLCAyMjMsIDI0MCwgMjI3LCAxNzgsIDIwNSwgCi0gICAgMjQyLCAyMjMsIDI0MCwgMjM3LCAyNDYsIDIyNywgMTc5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIAotICAgIDIzNywgMjQ3LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKLSAgICAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCi0gICAgMjE3LCAyNDksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMTAsIDIzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIAotICAgIDI1MywgMjE5LCAyNDUsIDI0MSwgMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzksIDIxOSwgMjQ1LCAyNDEsIDM2LCAKLSAgICAyMjEsIDE2NiwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyMSwgMTY2LCA1MSwgMjE5LCAyMzYsIAotICAgIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgCi0gICAgNTEsIDIxOSwgMjM2LCA3NiwgMjE5LCAyNDUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAyMjEsIAotICAgIDE2NiwgMjQxLCAzMCwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxNywgMjUwLCAKLSAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCA2OSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgCi0gICAgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgMTU2LCAKLSAgICAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAKLSAgICAyNDEsIDM2LCA4MCwgMjQxLCAxMDgsIDIyNCwgMTQ2LCAyMzYsIDEwNiwgMjQxLCAxMDgsIDExMiwgNTAsIDI0MywgMjI4LCAKLSAgICAyNDEsIDEwOCwgMTIxLCA1MCwgMjQzLCAyMjgsIDI0MSwgMTA4LCAyNDEsIDExNSwgNzYsIDMsIDE2MywgMjM2LCAxMDYsIAotICAgIDk1LCAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgNSwgCi0gICAgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDI0MSwgCi0gICAgMTE1LCA3NiwgMywgNzAsIDU1LCAyNDEsIDExNSwgNzYsIDMsIDIxOSwgMjAzLCA1LCAyNDEsIDExNSwgNzYsIDMsIDIxOSwgCi0gICAgMjAzLCAyNDEsIDExNSwgNzYsIDMsIDIwNiwgMjQ2LCAyNDEsIDExNSwgNzYsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMTksIAotICAgIDI0NSwgMTk0LCAzLCAxNjMsIDIzNiwgMTA2LCA5NSwgMjQ1LCAxOTQsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCAKLSAgICA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgNSwgMjQ1LCAxOTQsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIAotICAgIDIzNiwgMTA2LCA5NSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCA1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDIwMiwgMTYwLCAKLSAgICAyMjEsIDE2NCwgMjQ5LCAxMSwgMjI0LCAyNDMsIDI0MywgMjIzLCA1NCwgMjQxLCAxMTcsIDQ3LCAyMzYsIDM4LCAxMTIsIAotICAgIDI1MCwgOTQsIDEyMSwgMjUwLCA5NCwgMjE3LCAyMTgsIDIxOCwgMjI3LCAyMDQsIDcyLCAyMjcsIDExNCwgNDksIDI0NiwgCi0gICAgMjI2LCA1MCwgMjQ2LCAyMjYsIDQ5LCAyMzksIDIwNCwgNTAsIDIzOSwgMjA0LCAyNDcsIDI0OCwgNTAsIDI0NSwgMTMyLCAKLSAgICAyNDcsIDI0OCwgNDksIDI0NSwgMTMyLCAyMDgsIDE0NSwgNTAsIDI0NSwgMTMyLCAyMDgsIDE0NSwgNDksIDI0NSwgMTMyLCAKLSAgICAyMTYsIDczLCAyMjEsIDE2NiwgNTQsIDUxLCAyMjYsIDI0NiwgMjUwLCAxMjgsIDIxNCwgMTU4LCAyMTQsIDE2NiwgMjA5LCAKLSAgICAxNjIsIDIxNiwgMTQ3LCAyMTgsIDM0LCAyMzEsIDMxLCAyMDUsIDIxOCwgMjExLCAxNzcsIDIxOCwgOTcsIDc2LCAyMzAsIAotICAgIDI1NCwgNTQsIDIwNywgMTc0LCAyMjEsIDE2NiwgNTQsIDIwNCwgODIsIDIzNiwgNDAsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAKLSAgICAxNjUsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxNjUsIDI0NywgMjQ4LCA0OSwgMjQ1LCAxNjUsIDI0NywgMjQ4LCA1MCwgMjQ1LCAKLSAgICAxNjUsIDIwOCwgMTQ1LCAxNjIsIDIzMSwgMiwgMjQ3LCAyNDgsIDE2MiwgMjMxLCAyLCAyMzksIDExNSwgMjEyLCAzMSwgCi0gICAgMTEyLCAyNTAsIDk1LCAyNDgsIDEwNCwgMTIwLCAyMzYsIDEwNiwgMjQ4LCAyMjAsIDIxOSwgMjQ3LCAyMjksIDE1MSwgMjQxLCAKLSAgICAyNiwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgMTYsIDIwMywgMTk3LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIDI0NywgCi0gICAgMjMzLCAyMjksIDE0OSwgMjI3LCAyMTcsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI1MCwgMjE4LCAxNTUsIDI0MSwgMjYsIAotICAgIDIwOCwgMTczLCAyMDksIDkzLCAyMjcsIDIyMiwgMjQ4LCAxMTUsIDIxNSwgMjUyLCAyNDUsIDYxLCAyNTEsIDE1LCAyNTAsIAotICAgIDEwMywgMjEwLCAxMDAsIDIwOCwgMTMwLCAyMTUsIDEyNSwgMjQzLCAxODUsIDIxOSwgMjM3LCAyNDUsIDIwOSwgMjA5LCAKLSAgICAyMjAsIDIxMiwgNDQsIDI0NSwgMTU1LCAyNDUsIDE1NCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzUsIDIwMywgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDE2OSwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDEsIAotICAgIDM2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MywgMTQzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgCi0gICAgNjMsIDI0MywgMjIxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjE3LCA2MywgMjQ2LCA2MSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMTEsIDY5LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjEyLCA1OCwgMTQyLCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0OSwgMjEsIDE0MiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMTIsIDU3LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgCi0gICAgMjI3LCAxNzgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjM3LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgOTYsIDIwNiwgNzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgODYsIDIwNiwgNzYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjE3LCA2MywgOTYsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDg2LCA0NywgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjEwLCA0LCAyMDYsIAotICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgCi0gICAgNjMsIDEyMSwgMjQ3LCAzMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDQsIDM3LCAyNTAsIDE2OSwgMjM5LCAKLSAgICA5OCwgMTYsIDEyMSwgMjEwLCA0LCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDE3NywgMjA2LCA3NiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAxNzcsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAKLSAgICAyMTksIDIwMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIxNywgNjMsIDExMiwgMjQ3LCAzMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDQsIDQ4LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDE4MywgMjA2LCA3NiwgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAxODMsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgMzAsIAotICAgIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDI0MywgMjIyLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDg5LCAyMDYsIDI0NiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMiwgCi0gICAgMjQwLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgMzAsIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjQ2LCA2MiwgMjExLCA5NCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDUsIDI0MiwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjQzLCAKLSAgICAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjExLCA5NSwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjMwLCA4OSwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQzLCAyMzEsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTIxLCAyMTIsIDI0MCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA0OSwgMjEyLCAyNDAsIAotICAgIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjA4LCAyMjgsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIzNywgMjQ3LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDUsIDIzNCwgMTQyLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwMiwgMjksIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjExLCA3MCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjEzLCAxNDQsIDIwNiwgCi0gICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIyMSwgMTY2LCAyNDEsIDM2LCAyNTAsIDE2OSwgMjM5LCAKLSAgICA5OCwgMTYsIDIxNywgNjMsIDIxNywgNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyNDcsIDM0LCAyMDgsIDIyNywgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDI0NywgMzQsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIzMCwgMjMwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNiwgNTksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjIwLCAzNiwgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNTEsIDMsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0MSwgMzgsIAotICAgIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgMjMxLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMjAsIDM3LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNTEsIDIsIDIyMSwgMTY2LCAyNDYsIDE2OSwgCi0gICAgODIsIDUwLCAyNTAsIDIxOCwgMywgMTgzLCAyMDIsIDMwLCA0NywgMjEyLCAyMTAsIDE3MSwgMjQ3LCAyMzMsIDI0OCwgMTI5LCAKLSAgICA5NywgODAsIDIyNywgMTE1LCAzLCAxMDEsIDI0MywgODUsIDIzMSwgOCwgOTcsIDI0NSwgMTg5LCAyMDYsIDI0NCwgOTcsIAotICAgIDI0MywgMTU4LCAyMDYsIDI0NCwgOTcsIDI0MSwgOTYsIDk3LCAyNDUsIDIyNCwgOTcsIDYxLCA1MSwgMywgMjQ2LCAyMTgsIAotICAgIDgwLCAyMjcsIDExNCwgMjQxLCA2OCwgOTcsIDI1MCwgMjUwLCAyMjksIDE1MiwgOTcsIDIzNywgMzcsIDk3LCA0MywgMjM2LCAKLSAgICAxMDYsIDI0OCwgMjMxLCAzLCAyMjEsIDE2MywgNDMsIDIwOCwgODYsIDI0MiwgNzAsIDI0NywgMjAzLCAyNDYsIDYyLCAzLCAKLSAgICAyMjEsIDE2OSwgNDcsIDIwNiwgMjQyLCA5NywgMjI0LCA0MCwgOTcsIDIzNSwgMjE2LCA5NywgMjIwLCA3LCAyMzcsIDE3MCwgCi0gICAgOTcsIDIyMCwgNywgMjI4LCAxMjksIDk3LCAyMTksIDU5LCA5NywgMjE5LCA1OCwgOTcsIDI0MywgMTY3LCAyNDUsIDkxLCAKLSAgICAxNiwgMjM5LCAxNTksIDEwOCwgMjEyLCA1LCA5NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYyLCAyNDQsIDY4LCAKLSAgICAyMTMsIDEzMSwgMjI5LCAxNTIsIDk3LCAyMTcsIDIzOCwgMjE5LCAxNTMsIDIyMiwgMjA4LCAyMTksIDE1MywgMjE3LCAyMzQsIAotICAgIDIxNCwgMTg1LCA5NywgMjQ2LCAzMywgMjE0LCAxODUsIDk3LCA0OSwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNDksIDIxOSwgCi0gICAgNzcsIDI0MCwgMjAwLCA0OSwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNTAsIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDUwLCAKLSAgICAyMTksIDc3LCAyNDAsIDIwMCwgNTAsIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDQ5LCA1MSwgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAyNDUsIDE2NSwgNDksIDUxLCAyNDcsIDIyNywgMjQwLCAyMDAsIDQ5LCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAKLSAgICAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjA2LCAyMjEsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyNDAsIAotICAgIDIwMCwgNTAsIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIDI0NSwgMTY1LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAxMTMsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAKLSAgICAyMjYsIDI1MSwgMTEzLCAyNDUsIDkzLCAyNDcsIDIyNywgMjQwLCAyMDAsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDExMywgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIAotICAgIDIyNiwgMjUxLCAxMTMsIDIzMSwgMywgMjQwLCAyMDAsIDIzNiwgMTA2LCAyMjcsIDExNSwgMjQwLCAyMDAsIDIwNiwgMjIxLCAKLSAgICA0OSwgMjE5LCAyNDUsIDIyNiwgMjUxLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMDYsIDIyMSwgNTAsIAotICAgIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjEwLCAyMTgsIDIwOCwgMTQ0LCAKLSAgICAyMTAsIDIxOCwgMjQ3LCAyNDcsIDIwOCwgMTQ1LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAKLSAgICAyNDcsIDIyNywgMTE1LCAyMDgsIDE0NSwgNTEsIDE1NSwgNDAsIDE2LCAyNDcsIDI0NywgNDksIDgwLCA5OCwgMjI3LCAxMTQsIAotICAgIDUwLCA4MCwgOTgsIDIyNywgMTE0LCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTEzLCAyMzYsIDEwNiwgMjE0LCAyMDIsIAotICAgIDIyNywgMTEyLCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTExLCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTEwLCAKLSAgICAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDIwOCwgMTQ1LCAyMTYsIDE2LCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIAotICAgIDI0NywgMjQ4LCAyMTYsIDE2LCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgCi0gICAgMTIxLCAyNSwgMjM2LCAxMDYsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAKLSAgICAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgCi0gICAgMjM2LCAxMDYsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAKLSAgICAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIDIzNiwgMTA2LCAKLSAgICAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIAotICAgIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgCi0gICAgMTU3LCA4MCwgMjUsIDIwOCwgMTQ1LCAyMjcsIDIyMiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyNDcsIDI0OCwgMjI3LCAKLSAgICAyMjIsIDUxLCAyMzksIDE3MiwgMjE2LCA3OCwgOTcsIDI0MSwgMTMxLCA5NywgODAsIDIyNywgMTE1LCAyNDAsIDIwMCwgCi0gICAgMjI0LCAyMTQsIDI0NywgMjE0LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDIxMiwgMjI3LCAyMjQsIDIxNCwgMjEyLCAyMjgsIAotICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDE2MywgMTE1LCAxMjAsIDIxMiwgMjEzLCAyMjQsIDIxNCwgMTIwLCAyMTIsIDIxNCwgCi0gICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTIwLCAyMTIsIDIxNCwgMjMwLCA5NywgMjI0LCAyMTQsIDIwOCwgNjYsIDIyNCwgCi0gICAgMjE0LCAyMDksIDEyNCwgMjI0LCAyMTQsIDIxOCwgMjUzLCAyNDEsIDE4MCwgMjM3LCAyMzksIDIzOSwgOTIsIDIwOCwgMTQ1LCAKLSAgICAyMTksIDc2LCAyNDcsIDI0OCwgMjE5LCA3NiwgMjA4LCAxNDUsIDI0NSwgOTMsIDE1NSwgMjQ3LCAyNDgsIDI0NSwgOTMsIAotICAgIDE1NSwgMjA4LCAxNDUsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDI0NywgMjQ4LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAKLSAgICA2MSwgMjA4LCAxMDEsIDI0OCwgMTE1LCAyMTUsIDI1MywgMywgMjQ2LCA2MSwgMjExLCA1MSwgMjM5LCAyMTUsIDI1MSwgCi0gICAgMTQyLCAyNDUsIDkwLCAyNDEsIDExNiwgMjMwLCAyNDQsIDI0NCwgNjgsIDI0MCwgMjA0LCA5NywgNjIsIDIxNiwgMTEsIDUyLCAKLSAgICAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUyLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUyLCAyMDgsIDg1LCA2MiwgMjQyLCAKLSAgICA2OSwgNTIsIDIwOCwgODUsIDYyLCAyMTYsIDExLCA1MiwgMjA4LCA4NiwgMywgODAsIDE0MiwgNjIsIDIyNywgMjE3LCA1MiwgCi0gICAgMjA4LCA4NiwgMywgODAsIDE0MiwgNjIsIDIxNiwgMTEsIDIwOCwgODYsIDMsIDUyLCA4MCwgMTQyLCAyNTEsIDM0LCAyNDYsIAotICAgIDE5LCAyMTEsIDU4LCAyMDgsIDIyMCwgMjQ2LCAxOSwgMjM2LCA0MSwgMywgMjM5LCAxOTUsIDIxNCwgMjQxLCA2MiwgMjI1LCAKLSAgICAxMCwgMjI3LCAyMTcsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjA2LCAKLSAgICAyMjMsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyNDIsIDY5LCAyMDgsIDg1LCA1MiwgODAsIDE0MiwgNjIsIDUxLCAzNSwgCi0gICAgMjExLCA2MSwgNjIsIDI0NiwgNjIsIDM1LCAyMTYsIDE0OCwgMTYsIDM1LCAyMjEsIDQ4LCAxNiwgMzUsIDIxMSwgOTAsIDc2LCAKLSAgICAyMzcsIDYxLCAxNiwgMzUsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIAotICAgIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAxNiwgMzUsIDI0MSwgNzEsIDE2LCAzNSwgMjUxLCAxMzAsIDE2LCAzNSwgCi0gICAgMjQ4LCAxMjgsIDE2LCAzNSwgMjQ5LCAxOSwgMTYsIDM1LCAyMzYsIDEwNiwgMjEwLCA1LCAxNiwgMzUsIDIyNywgMTE1LCAKLSAgICAyNDAsIDUxLCAxNiwgMzUsIDgwLCAyMTAsIDUsIDE2LCAzNSwgMjM5LCAxNTksIDI0MCwgNTEsIDE2LCAzNSwgMjQ3LCAyNSwgCi0gICAgMjE2LCA3NywgMTYsIDM1LCAyMTMsIDcsIDIxOSwgMjExLCAxNiwgMzUsIDIxMywgNywgMjMxLCA0OSwgMTYsIDM1LCAyNDQsIAotICAgIDEzOSwgMjI3LCAxMDUsIDI0MSwgOSwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDE2LCAzNSwgMjQ0LCA4LCAKLSAgICAyNDUsIDE4NCwgMTA4LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDE0NywgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAKLSAgICAxNDksIDE2LCAzNSwgMTgyLCAyNTEsIDEzMCwgMTYsIDM1LCAyMTAsIDk1LCAyMzEsIDExMiwgMTYsIDM1LCAyNDEsIDg0LCAKLSAgICA3NiwgMjA4LCAxMDYsIDI0OCwgMzMsIDE2LCAzNSwgMjQ3LCA1OSwgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjI1LCA5LCAxNiwgCi0gICAgMzUsIDIxMCwgMjQyLCAxNiwgMzUsIDI0MSwgOSwgMTYsIDM1LCAyNDAsIDExLCAyMTMsIDEzMCwgMTYsIDM1LCAyMzcsIAotICAgIDIzOCwgMjEzLCAxMzAsIDE2LCAzNSwgMjE2LCAxNDksIDIxMywgMTMwLCAxNiwgMzUsIDIwNiwgMjM2LCAyMTMsIDEzMCwgCi0gICAgMTYsIDM1LCAyMTEsIDIyOCwgMTYsIDM1LCAyNDQsIDQ2LCAyNDgsIDM3LCA5NywgMTcxLCAyNDcsIDIzMywgMTYsIDM1LCAKLSAgICAyMjIsIDIxMSwgMTYsIDM1LCAyNDQsIDQ3LCAyMzksIDE1OSwgMTA4LCAxNiwgMzUsIDIxMCwgMjQzLCAyMzksIDE1OSwgCi0gICAgMTA4LCAyMjAsIDgyLCAxMTMsIDIyMCwgODIsIDI0NiwgMTk0LCAyMjAsIDgyLCAyMzksIDE2MiwgMjIwLCA4MiwgMjMwLCAKLSAgICAyMzksIDIzOSwgMTYyLCAyMjAsIDgyLCAyNDgsIDEyNSwgMjQ3LCAxOTAsIDIyMCwgODIsIDI0NywgMjQxLCAyMDgsIDI1MCwgCi0gICAgMjIwLCA4MiwgMjQ3LCAyMjQsIDI0OCwgMjM2LCAyMzUsIDE1MywgMjIwLCA4MiwgMjUwLCAyMzcsIDc2LCAyNDYsIDE2OCwgCi0gICAgMjIwLCA4MiwgMjQ0LCAxNDQsIDIyMCwgODIsIDI0NSwgODAsIDI1MSwgMTM0LCAyMjEsIDQ2LCAyMjAsIDgyLCA1MiwgMjQ5LCAKLSAgICAyMCwgNDMsIDE3LCAxMDUsIDQzLCAxNywgMTA4LCA0MywgMTcsIDE0NywgNDMsIDE3LCAxNDksIDQzLCAxNywgMTcwLCA0MywgCi0gICAgMTcsIDE5NSwgNDMsIDE3LCAyMTMsIDExMSwgNDMsIDE3LCAxOTksIDQzLCAxNywgMjIyLCA2MywgNDMsIDQyLCAyMDksIAotICAgIDE1MiwgNDMsIDQyLCAyNDEsIDExMiwgNDMsIDQyLCAyMDcsIDE1NCwgNDMsIDQyLCAyMDksIDU1LCA0MywgNDIsIDIzOSwgCi0gICAgMTQxLCA0MywgNDIsIDI0MCwgMjIsIDQzLCA0MiwgMjEyLCA4MiwgNDMsIDQyLCAyMTMsIDEwOCwgNDMsIDQyLCAyNDEsIAotICAgIDE0MCwgNDMsIDQyLCAyMjIsIDYwLCA0MywgNDIsIDIwNywgMTUxLCAxMDIsIDE3LCAxMDUsIDEwMiwgMTcsIDEwOCwgMTAyLCAKLSAgICAxNywgMTQ3LCAxMDIsIDE3LCAxNDksIDEwMiwgMTcsIDE3MCwgMTAyLCAxNywgMTk1LCAxMDIsIDE3LCAyMTMsIDExMSwgCi0gICAgMTAyLCAxNywgMTk5LCAxMDIsIDE3LCAyMjIsIDYzLCAxMDIsIDQyLCAyMDksIDE1MiwgMTAyLCA0MiwgMjQxLCAxMTIsIAotICAgIDEwMiwgNDIsIDIwNywgMTU0LCAxMDIsIDQyLCAyMDksIDU1LCAxMDIsIDQyLCAyMzksIDE0MSwgMTAyLCA0MiwgMjQwLCAyMiwgCi0gICAgMTAyLCA0MiwgMjEyLCA4MiwgMTAyLCA0MiwgMjEzLCAxMDgsIDEwMiwgNDIsIDI0MSwgMTQwLCAxMDIsIDQyLCAyMjIsIDYwLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMTcsIDExOCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAxMjAsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAxNywgMTI2LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIzOSwgMTQ3LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIzOSwgCi0gICAgMjMzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMiwgODgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEzLCAxMTIsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjQxLCAxNDMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjIyLCA2NCwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDQyLCAyMDksIDE1MywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDEsIDExMywgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDQyLCAyMDcsIDE1NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDksIDU2LCAyMzksIDEwMiwgMjExLCA2MSwgCi0gICAgNDIsIDIzOSwgMTQyLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MCwgMjMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEyLCAKLSAgICA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTMsIDEwOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDEsIDE0MSwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMjIsIDYxLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwNywgMTUyLCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgMTAyLCA4LCA1LCAxLCA2MywgMTAyLCA4LCA1LCAxLCAyNDksIDI1NSwgMTAyLCA4LCA1LCAxLCAKLSAgICAyNDcsIDEyNSwgMTAyLCA4LCA1LCAxLCAyNDUsIDUxLCAxMDIsIDgsIDUsIDEsIDc0LCAxMDIsIDgsIDUsIDEsIDI0MCwgCi0gICAgMTc0LCAxMDIsIDgsIDUsIDEsIDIzOSwgNzUsIDEwMiwgOCwgNSwgMSwgMjM3LCAxNzEsIDEwMiwgOCwgNSwgMSwgNzUsIAotICAgIDEwMiwgOCwgNSwgMSwgMjMwLCAxODQsIDEwMiwgOCwgNSwgMSwgMjMwLCA1NCwgMTAyLCA4LCA1LCAxLCAxNTksIDEwMiwgOCwgCi0gICAgNSwgMSwgMjI2LCAxODUsIDEwMiwgOCwgNSwgMSwgMjIzLCAxNjMsIDEwMiwgOCwgNSwgMSwgNzgsIDEwMiwgOCwgNSwgMSwgCi0gICAgMjE5LCAxODQsIDEwMiwgOCwgNSwgMSwgMjE3LCAxMzQsIDEwMiwgOCwgNSwgMSwgMTQ2LCAxMDIsIDgsIDUsIDEsIDE5NCwgCi0gICAgMTAyLCA4LCA1LCAxLCAyMTAsIDY5LCAxMDIsIDgsIDUsIDEsIDY4LCAxMDIsIDgsIDUsIDEsIDIwNiwgMTY0LCAxMDIsIDgsIAotICAgIDUsIDEsIDIwNCwgMTQ0LCAxMDIsIDgsIDUsIDEsIDIwMywgMTk2LCAxMDIsIDgsIDUsIDEsIDIwMywgMTI0LCAxMDIsIDgsIAotICAgIDUsIDEsIDIwMiwgMTU5LCA0MywgOCwgNiwgMSwgNjMsIDQzLCA4LCA2LCAxLCAyNDksIDI1NSwgNDMsIDgsIDYsIDEsIDI0NywgCi0gICAgMTI1LCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgNDMsIDgsIDYsIDEsIDc0LCA0MywgOCwgNiwgMSwgMjQwLCAxNzQsIDQzLCA4LCAKLSAgICA2LCAxLCAyMzksIDc1LCA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDQzLCA4LCA2LCAxLCA3NSwgNDMsIDgsIDYsIDEsIDIzMCwgCi0gICAgMTg0LCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgNDMsIDgsIDYsIDEsIDE1OSwgNDMsIDgsIDYsIDEsIDIyNiwgMTg1LCA0MywgCi0gICAgOCwgNiwgMSwgMjIzLCAxNjMsIDQzLCA4LCA2LCAxLCA3OCwgNDMsIDgsIDYsIDEsIDIxOSwgMTg0LCA0MywgOCwgNiwgMSwgCi0gICAgMjE3LCAxMzQsIDQzLCA4LCA2LCAxLCAxNDYsIDQzLCA4LCA2LCAxLCAxOTQsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCA0MywgCi0gICAgOCwgNiwgMSwgNjgsIDQzLCA4LCA2LCAxLCAyMDYsIDE2NCwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCA0MywgOCwgNiwgMSwgCi0gICAgMjAzLCAxOTYsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCA0MywgOCwgNSwgMSwgNjMsIAotICAgIDQzLCA4LCA1LCAxLCAyNDksIDI1NSwgNDMsIDgsIDUsIDEsIDI0NywgMTI1LCA0MywgOCwgNSwgMSwgMjQ1LCA1MSwgNDMsIAotICAgIDgsIDUsIDEsIDc0LCA0MywgOCwgNSwgMSwgMjQwLCAxNzQsIDQzLCA4LCA1LCAxLCAyMzksIDc1LCA0MywgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzEsIDQzLCA4LCA1LCAxLCA3NSwgNDMsIDgsIDUsIDEsIDIzMCwgMTg0LCA0MywgOCwgNSwgMSwgMjMwLCA1NCwgCi0gICAgNDMsIDgsIDUsIDEsIDE1OSwgNDMsIDgsIDUsIDEsIDIyNiwgMTg1LCA0MywgOCwgNSwgMSwgMjIzLCAxNjMsIDQzLCA4LCA1LCAKLSAgICAxLCA3OCwgNDMsIDgsIDUsIDEsIDIxOSwgMTg0LCA0MywgOCwgNSwgMSwgMjE3LCAxMzQsIDQzLCA4LCA1LCAxLCAxNDYsIAotICAgIDQzLCA4LCA1LCAxLCAxOTQsIDQzLCA4LCA1LCAxLCAyMTAsIDY5LCA0MywgOCwgNSwgMSwgNjgsIDQzLCA4LCA1LCAxLCAKLSAgICAyMDYsIDE2NCwgNDMsIDgsIDUsIDEsIDIwNCwgMTQ0LCA0MywgOCwgNSwgMSwgMjAzLCAxOTYsIDQzLCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNCwgNDMsIDgsIDUsIDEsIDIwMiwgMTU5LCA0MywgMTcsIDIwMiwgODQsIDE4MiwgNDMsIDQyLCAyNDEsIDExMiwgMTgyLCAKLSAgICA0MywgNDIsIDIwNywgMTU0LCAxODIsIDQzLCA0MiwgMjA5LCA1NSwgMTgyLCA0MywgNDIsIDIzOSwgMTQxLCAxODIsIDQzLCAKLSAgICA0MiwgMjQwLCAyMiwgMTgyLCA0MywgNDIsIDIxMiwgODIsIDE4MiwgNDMsIDQyLCAyMTMsIDEwOCwgMTgyLCA0MywgNDIsIAotICAgIDI0MSwgMTQwLCAxODIsIDQzLCA0MiwgMjIyLCA2MCwgMTgyLCA0MywgNDIsIDIwNywgMTUxLCA1MiwgNDMsIDE3LCAxMDUsIAotICAgIDUyLCA0MywgMTcsIDEwOCwgNTIsIDQzLCAxNywgMTQ3LCA1MiwgNDMsIDE3LCAxNDksIDUyLCA0MywgMTcsIDE3MCwgNTIsIAotICAgIDQzLCAxNywgMTk1LCA1MiwgNDMsIDE3LCAyMTMsIDExMSwgNTIsIDQzLCAxNywgMTk5LCA1MiwgNDMsIDE3LCAyMjIsIDYzLCAKLSAgICA1MiwgNDMsIDQyLCAyMDksIDE1MiwgMTgyLCA0MywgMTcsIDIwMiwgODQsIDk4LCAxMTYsIDE1NywgMjM2LCAxMDUsIDk4LCAKLSAgICAxMTYsIDc5LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA2LCAzOCwgOTgsIDExNiwgCi0gICAgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjM2LCAKLSAgICAxMDUsIDk4LCAxMTYsIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDgsIDcwLCAyNDQsIAotICAgIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCAKLSAgICAyMTcsIDU4LCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIAotICAgIDk4LCAxMTYsIDc5LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMTYsIDE2LCAKLSAgICA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCAKLSAgICA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTIxLCAxNTcsIDI1LCA0OSwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgCi0gICAgNzksIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDExMiwgMTU3LCAKLSAgICAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIAotICAgIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDQ5LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjI3LCAKLSAgICAyMjIsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNTAsIDIzNywgNDksIAotICAgIDk4LCAxMTYsIDExMiwgNzksIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIAotICAgIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIAotICAgIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA1MCwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgODAsIAotICAgIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA0OSwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgCi0gICAgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIAotICAgIDI1LCA0OSwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIAotICAgIDc5LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIAotICAgIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIAotICAgIDEyMSwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAKLSAgICAxMzQsIDk4LCAxMTYsIDUwLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIAotICAgIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIzNiwgCi0gICAgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDc5LCAyNSwgNDksIAotICAgIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgCi0gICAgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxNTcsIDI1LCA0OSwgMTEyLCAyMzcsIDQ5LCA5OCwgCi0gICAgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIzNiwgMTA1LCA5OCwgCi0gICAgMTE2LCAxNTcsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCA4MCwgMjI3LCAxMzQsIDk4LCAKLSAgICAxMTYsIDUwLCA3OSwgMjUsIDQ5LCA4MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCAKLSAgICA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDEyMSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgCi0gICAgMTEyLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIAotICAgIDExNiwgNDksIDExMiwgNzksIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDExMiwgNzksIDI1LCA0OSwgCi0gICAgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNDksIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIAotICAgIDEyMSwgNzksIDI1LCA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCAxMTIsIDIzNiwgMTA2LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDEyMSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDUwLCAxNTcsIAotICAgIDI1LCA0OSwgODAsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgODAsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAKLSAgICA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDUyLCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCA1MiwgCi0gICAgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDUyLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDUyLCAKLSAgICAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNTIsIDIzNiwgMTA1LCA5OCwgMTE2LCA1MiwgMjA2LCAzOCwgOTgsIDExNiwgCi0gICAgMTIxLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMjEsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTIxLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCAxMjEsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDExMiwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTEyLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDExMiwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgMTEyLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICA4MCwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgODAsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgODAsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCA4MCwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgODAsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTIxLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMjEsIDUyLCAyNSwgMjM2LCAxMDYsIAotICAgIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDExMiwgMjEyLCAxMjAsIDI1LCAKLSAgICAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTEyLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIAotICAgIDExMiwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA4MCwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgCi0gICAgODAsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgCi0gICAgMTU3LCAyNTAsIDEyOSwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTIxLCAyNSwgMjI3LCAKLSAgICAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAKLSAgICAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIAotICAgIDI1MSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCAKLSAgICAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyNDUsIDEzMCwgOTgsIDExNiwgMTU3LCAyMjcsIDIyMiwgOTgsIAotICAgIDExNiwgMTU3LCAyMDYsIDIyNCwgOTgsIDExNiwgMTU3LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MiwgNzAsIDk4LCAKLSAgICAxMTYsIDc5LCAyMjcsIDIyMiwgOTgsIDExNiwgNzksIDIwNiwgMjI0LCA5OCwgMTE2LCA3OSwgMjE2LCAxNiwgOTgsIDExNiwgCi0gICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDE1NywgNDksIDI1LCA3OSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAKLSAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgNzksIDQ5LCAyNSwgMTU3LCAyMTYsIDE2LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgCi0gICAgMTU3LCAyNDIsIDcwLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgCi0gICAgMjI2LCAyNTEsIDExOCwgMjE3LCA1NiwgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDIyNiwgCi0gICAgMjUxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAyMzksIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIAotICAgIDIxNywgNTQsIDI0OCwgMzMsIDIyNiwgMjUxLCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDIzOSwgMTAyLCAyNDgsIAotICAgIDMzLCA0OSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgMTI2LCAyMTcsIDU0LCAyNDgsIDMzLCA0OSwgMjM5LCAKLSAgICAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgMTYyLCAyNDgsIDMzLCA0OSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIAotICAgIDExOCwgMjE3LCA1NiwgMjQ4LCAzMywgNDksIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDUwLCAxNjIsIDI0OCwgMzMsIDE1NywgCi0gICAgMjEzLCA3OSwgMjI1LCAxMCwgMjEzLCA3OSwgMjQ0LCAxNTAsIDIxMywgNzksIDIwNiwgMjIxLCAxMTgsIDI0MSwgMTM5LCAKLSAgICAyNDgsIDMzLCA1MCwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgMjE3LCA2MCwgMjI2LCAyNTEsIDIyNywgMjIyLCAyMTcsIAotICAgIDYwLCAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgCi0gICAgNDksIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgCi0gICAgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAKLSAgICAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIAotICAgIDIxNywgNjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjI3LCAKLSAgICAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCA2MiwgCi0gICAgMjExLCAxNzcsIDYxLCAyMTEsIDE3NywgNjEsIDUxLCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDYxLCA1MSwgMjQ1LCAxOTUsIAotICAgIDYyLCA1LCAyMTEsIDE3NywgNTEsIDMsIDIzNiwgMTA2LCAyNDAsIDksIDUxLCAzLCA4MCwgMjQwLCA5LCA1MSwgMywgMjE5LCAKLSAgICAyMjksIDI0NSwgMTI1LCAyNDAsIDksIDUxLCAzLCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgNTAsIDI0MCwgCi0gICAgOSwgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgMjUxLCA0OSwgMjQwLCA5LCA1MSwgMywgMjQzLCAyMjgsIAotICAgIDI0NSwgMTI1LCAyNDAsIDksIDYyLCA1LCAyMTEsIDE3NywgNjEsIDUsIDIxMSwgMTc3LCA2MiwgMjE2LCAxNDMsIDYxLCAKLSAgICAyMTYsIDE0MywgNjIsIDgwLCAyMTYsIDE0MywgNjEsIDgwLCAyMTYsIDE0MywgNjIsIDIxOSwgODAsIDYxLCAyMTksIDgwLCAKLSAgICA2MiwgMjA2LCAyMjMsIDIwOCwgODUsIDYxLCAyMDYsIDIyMywgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCAKLSAgICA2MSwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIAotICAgIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYxLCAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjE4LCA2MCwgNjEsIAotICAgIDIxNiwgMTEsIDIxOCwgNjAsIDYyLCAyNDIsIDY5LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgMjA4LCA4NSwgNjIsIDI0MiwgCi0gICAgNjksIDUsIDIwOCwgODUsIDYxLCAyNDIsIDY5LCA1LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDIwOCwgODUsIDYxLCAyMjcsIAotICAgIDIxNywgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MSwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYyLCAKLSAgICAyMjcsIDIxNywgMjE4LCA2MCwgNjEsIDIyNywgMjE3LCAyMTgsIDYwLCA2MiwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMSwgNjEsIAotICAgIDI0MywgMjIyLCAyNDUsIDE5NSwgNjIsIDUsIDI0MywgMjIxLCAyMzksIDI0MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYxLCAKLSAgICAyNDIsIDgzLCAyNDYsIDYxLCAyNDYsIDYyLCAzLCA4MCwgMjQwLCA5LCAyNDcsIDE3MywgNjIsIDI0NiwgNjEsIDI0NiwgNjIsIAotICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCAKLSAgICAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCAKLSAgICA1MCwgMjE3LCA2MCwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjUxLCAxNSwgMjQ3LCAxNDgsIDIwNiwgMjIxLCA0OSwgMjE3LCAKLSAgICA2MCwgMjQ4LCA0MywgNDksIDE2MiwgNjIsIDI0NiwgNjEsIDUwLCAxNjIsIDYyLCAyNDYsIDYxLCAyMzAsIDI0MCwgMjQ3LCAKLSAgICAxNzcsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMjYsIAotICAgIDI1MSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCA0OSwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAKLSAgICAxMjgsIDIwNiwgMjIxLCA1MCwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAxMjgsIDIyNiwgMjUxLCA1MCwgMjE3LCA2MCwgCi0gICAgMjQ2LCA1NSwgMjUwLCAxMjgsIDIyNiwgMjUxLCA0OSwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAxMjgsIDIwNiwgMjIxLCAKLSAgICAxNjIsIDI0NiwgNjEsIDIyNiwgMjUxLCAxNjIsIDI0NiwgNjEsIDYyLCAyMjYsIDI1MSwgNTAsIDIwOCwgODUsIDYyLCAyMjYsIAotICAgIDI1MSwgNDksIDIwOCwgODUsIDYyLCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDYyLCAyMDYsIDIyMSwgNTAsIDIwOCwgODUsIAotICAgIDYxLCAyNDcsIDE3NywgNTEsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgCi0gICAgMjA2LCAyMjEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyNDMsIDIyOCwgMTYyLCAKLSAgICAyNDgsIDQzLCA2MSwgNTEsIDMsIDgwLCAyNDgsIDU1LCAyMjcsIDExNCwgNjEsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCAyNDMsIAotICAgIDg1LCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDUwLCAKLSAgICAxNjIsIDI0OCwgNDMsIDIyOCwgOCwgMjQ2LCA2MSwgNjEsIDUxLCAzLCAyMDYsIDIyMSwgNDksIDIxNywgNTksIDYxLCA1MSwgCi0gICAgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIDUxLCAzLCAKLSAgICAyMDYsIDIyMSwgNTAsIDIxNywgNTksIDYxLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgNDksIDIxNywgNTksIDYxLCAyNDYsIAotICAgIDYyLCAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCAKLSAgICAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgNTAsIDIxNywgNTksIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgMjA2LCAyMjEsIDUwLCAKLSAgICAyMDgsIDg1LCAyMjYsIDI1MSwgNDksIDIwOCwgODUsIDYxLCAyMjUsIDEwLCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDIxMSwgCi0gICAgMTc3LCA2MSwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAKLSAgICAyMDgsIDg1LCA2MiwgMjEwLCAyMTUsIDMsIDIxNiwgMTYyLCAyNDYsIDcsIDIwNywgMywgMjEyLCAxNSwgMjQ1LCAyMzYsIAotICAgIDYyLCAyMTEsIDk0LCA2MSwgMjExLCA5NCwgMjI3LCAxMzEsIDIwOSwgMTcsIDIxMCwgMjE0LCAyNTAsIDc4LCAyMjEsIDE4OCwgCi0gICAgMjQ0LCAxOSwgMjIxLCAxODgsIDI0NSwgMjA0LCAyMTksIDI1MCwgNjIsIDIwOSwgMTYxLCA2MSwgMjA5LCAxNjEsIDI0OCwgCi0gICAgMjQ4LCAyNDcsIDIzMywgMjQ4LCAyNDgsIDk4LCAzLCAyNDYsIDE2OCwgMjQ4LCAyNDgsIDk4LCAzLCAyMDMsIDE5NiwgMjE0LCAKLSAgICAyNTQsIDIwNywgNCwgMywgMjE2LCAxOTEsIDI0MiwgNDgsIDIzNiwgNDcsIDI0OCwgMTAyLCA2MSwgMjEyLCAyMzcsIDIxOCwgCi0gICAgMTU5LCA2MiwgMjEyLCAyMzcsIDIxOCwgMTU5LCAyMTMsIDY4LCAyMTYsIDczLCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgCi0gICAgNTYsIDI0NywgMTc3LCA2MiwgNDksIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDQ5LCAKLSAgICAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgMTEyLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIAotICAgIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgMjQ3LCAxMSwgNTQsIDIxNiwgMjAzLCAKLSAgICA1NCwgMjQ4LCA2MiwgNTQsIDI0NywgODMsIDI1MCwgMjA4LCAyMTksIDIzMCwgMjQ1LCAxMzAsIDI0NiwgMTQzLCAyMTYsIAotICAgIDU5LCAyNDUsIDEzMSwgNzYsIDIyNywgOSwgMjQ1LCAxMzEsIDc2LCAyMzAsIDE1MSwgMjExLCA5NSwgMjUsIDI0NSwgMTM4LCAKLSAgICAyNDAsIDc1LCA5NywgMjUxLCAxMTUsIDIxMywgNzAsIDIzNywgMTMxLCAyNSwgMjEyLCAxNTksIDIxOSwgMzMsIDk3LCAyMDMsIAotICAgIDEsIDIwMywgNzYsIDIwOCwgNzUsIDM1LCAyMzcsIDUxLCAyMDgsIDc1LCAzNSwgMjI4LCAzMywgMjA4LCA3NSwgMzUsIDIzOSwgCi0gICAgMjQ5LCAyMDgsIDc1LCAzNSwgMjA5LCAxOCwgMjA4LCA3NSwgMzUsIDIwNCwgMTYsIDIwOCwgNzUsIDM1LCAyMDQsIDgwLCAKLSAgICAyMDgsIDc1LCAzNSwgMjI0LCAxMiwgMjA4LCA3NSwgMzUsIDI0MSwgMTc5LCAyMDQsIDM3LCA3NiwgMjQzLCAyNDksIDYxLCAKLSAgICAyMzksIDExNCwgMjQwLCAxMDIsIDYxLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjIsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MSwgCi0gICAgMjEwLCAyMTUsIDMsIDIxNiwgMTYyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAyOSwgMjI4LCAxLCAyMTcsIDU2LCAyMjQsIAotICAgIDI5LCAyMjQsIDIzNCwgMjQwLCA0MywgNTQsIDI0MSwgMTc5LCAyMjUsIDEyNywgNTQsIDIzMCwgNjksIDIxNCwgMjE4LCAKLSAgICAyMDYsIDIwNSwgMjIyLCAyMjQsIDIxOCwgNzMsIDI1MCwgMTE0LCAyMDksIDIwNSwgMjM4LCAxNzgsIDI0NywgNTcsIDIyNywgCi0gICAgMTg0LCAyMDUsIDIwMiwgMjI3LCAxNDUsIDIxNCwgMTg3LCAyMTUsIDIwLCAyNDcsIDQzLCAyNTAsIDE0NSwgMjE4LCAxMDgsIAotICAgIDYxLCAyNDYsIDE1MCwgMjI5LCA4MSwgNjEsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MSwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MSwgCi0gICAgMjQ2LCAxNTAsIDI0OCwgNTQsIDYxLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjEsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjQ2LCAKLSAgICAxNTAsIDIyOSwgODEsIDYyLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjIsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjIsIDI0NiwgCi0gICAgMTUwLCAyNDgsIDU0LCA2MiwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYyLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDIxMSwgMjI2LCAKLSAgICAyMTAsIDIyNywgNjEsIDIzNywgNTYsIDIxMCwgMjI3LCA2MSwgMjQzLCAyMjIsIDIxMCwgMjI3LCA2MiwgMjQ2LCA1LCAyMTAsIAotICAgIDIyNywgNjEsIDIxMSwgMjI2LCAyMTAsIDIyNywgNjIsIDIzNywgNTYsIDIxMCwgMjI3LCA2MiwgMjQzLCAyMjIsIDIxMCwgCi0gICAgMjI3LCA2MSwgMjQ2LCA1LCAyMTAsIDIyNywgMjM2LCA0NywgMjExLCAxODIsIDIxNywgNTYsIDIyMSwgMTYwLCAyNDEsIAotICAgIDEzOSwgMjIxLCAxNjAsIDI0OCwgMTU4LCAyNDEsIDEzOSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyMTIsIDgxLCAyMjEsIDE1NSwgCi0gICAgMjIzLCAxOTUsIDIzOSwgMjE3LCA1NCwgMjIzLCAxOTUsIDIyMywgNjYsIDU0LCAyMjMsIDE5NSwgMjEzLCA1NywgNTQsIAotICAgIDIwNCwgNDYsIDIxMCwgODksIDI0NSwgMTMwLCAyNDEsIDE3NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDIwNiwgMjMzLCAyMTYsIAotICAgIDEzOSwgOTcsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTIwLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExOCwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTcsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE1LCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTEsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTA5LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMzgsIDE3NiwgCi0gICAgMjI1LCA3MCwgNjIsIDIwNiwgMjMzLCAyMTYsIDEzOSwgOTcsIDIxNiwgMTQwLCAyMTksIDk1LCA5NywgMjE5LCA2OCwgMjE5LCAKLSAgICA5NSwgOTcsIDIxOCwgMjM4LCAyMTksIDk1LCA1NCwgMjA0LCAzNSwgOTcsIDI0MywgMjE0LCAyNDAsIDEwMSwgMjQzLCAyMTQsIAotICAgIDI0MCwgMTAwLCAyNDMsIDIxNCwgMjQwLCA5OSwgMjQzLCAyMTQsIDI0MCwgOTgsIDI0MywgMjE0LCAyNDAsIDk3LCAyNDMsIAotICAgIDIxNCwgMjQwLCA5NiwgNjEsIDI0NiwgNjIsIDMsIDcwLCAyMTYsIDE2LCA2MSwgMjQ2LCA2MiwgMywgMTIwLCAyNDMsIDgzLCAKLSAgICA2MiwgMjQ2LCA2MiwgMywgNjEsIDcwLCAyMTYsIDE2LCA2MiwgMjQ2LCA2MiwgMywgMTIwLCA2MSwgMjQzLCA4MywgMjI0LCAKLSAgICA0NSwgMzUsIDIwMywgNzYsIDIyNCwgNDUsIDM1LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgNzYsIAotICAgIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCA3NiwgMjQzLCAKLSAgICAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCAwLCA2MSwgMjM5LCAyMjUsIDYyLCAyMzksIDIyNSwgMjM3LCAxMzEsIDI1LCAyMTgsIAotICAgIDE2MywgMjUwLCAyMjgsIDI0NSwgMTI4LCAyMTAsIDE1NCwgMjExLCAxMDMsIDc2LCAyNTEsIDkyLCAyMTQsIDIwMywgMjUxLCAKLSAgICAyOSwgMjM5LCAxOTcsIDIzOCwgMTg3LCAyMTEsIDEwMywgNzYsIDIzNywgMjYsIDI1MCwgNDIsIDk3LCAyMzksIDIxMywgCi0gICAgMjE5LCAyMDcsIDYxLCAyMTEsIDk0LCAxMjYsIDIyNywgMTA5LCAyNDUsIDE4MSwgMjE2LCAxNiwgMTI2LCAyMjcsIDEwOSwgCi0gICAgMjQ1LCAxODEsIDIyNywgMjIyLCAyMDQsIDkxLCA1NCwgMTM4LCAyMDUsIDE3OSwgNTQsIDI0MiwgNzUsIDI0MCwgNDMsIDU0LCAKLSAgICAyNDIsIDc1LCAyMjUsIDEyNywgNTQsIDIzMCwgMjUwLCAyNDAsIDQzLCAyNSwgMjI1LCAxMjcsIDU0LCAyMjUsIDEyNywgMjUsIAotICAgIDI0MCwgNDMsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCAyNSwgMjI1LCAKLSAgICAxMjcsIDI1LCAyNDAsIDQzLCA1NCwgODAsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjM2LCAxMDYsIDIyNSwgMTI3LCAKLSAgICAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMCwgNjEsIDI0NiwgNjEsIDIyNSwgMTAsIDYyLCAyNDYsIDYxLCAyMjUsIDEwLCA1LCAKLSAgICA2MSwgMjQ2LCA2MSwgMjI1LCA4NiwgOTcsIDI0MywgMTM1LCA5NywgMjA2LCAyMzAsIDIxOSwgNjcsIDk3LCAyNDUsIDI0NywgCi0gICAgMjM5LCA5NywgMjA2LCAyMDEsIDIyMiwgMjE3LCAyNDYsIDIwMywgMjE5LCAxMzcsIDIzMCwgNzUsIDIwNSwgMjQwLCAyNDYsIAotICAgIDEyMywgNjIsIDIyNCwgMzAsIDIyNywgMTI4LCAyMTMsIDEwMSwgMjEzLCAxNDAsIDIxNywgMzgsIDIxMywgMTIwLCAyMTIsIAotICAgIDEwLCAyNDgsIDI1MSwgMjQ4LCAyMTcsIDEwMywgMjI5LCAxNTEsIDYxLCAyNDIsIDU4LCAyMjUsIDEyMiwgNjEsIDI0MiwgCi0gICAgNTgsIDIyOSwgODEsIDYyLCAyNDIsIDU4LCAyMjUsIDEyMiwgNjIsIDI0MiwgNTgsIDIyOSwgODEsIDIxMiwgMTYsIDIwNCwgCi0gICAgMywgMjEyLCAxOSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAyNDYsIDcsIDIxNiwgMTkwLCA2MiwgMjEyLCAxNSwgMjA5LCAxOSwgCi0gICAgMjQ2LCA4LCAyNSwgMjE2LCAxOTAsIDIwNywgMTc0LCA2MSwgMjEyLCAyMzcsIDIxOCwgMTU5LCAyMDcsIDE3NCwgNjIsIAotICAgIDIxMiwgMjM3LCAyMTgsIDE1OSwgNjEsIDI0MywgMjIyLCAyMzEsIDUwLCAyMTEsIDE3NywgMjQ1LCAxMjQsIDIyOCwgMTUsIAotICAgIDI0MywgMTYyLCAyNDcsIDM5LCAyMTksIDI1MywgMjE4LCAxNjMsIDI0NywgNDAsIDIxMiwgNDgsIDIzNywgMzYsIDMsIDYxLCAKLSAgICAyNDUsIDEzMCwgNDMsIDI0NSwgMTI0LCAyMjgsIDE1LCAyNDYsIDE5NSwgMjIxLCAxOTIsIDI0MSwgNjIsIDI1MCwgMjU1LCAKLSAgICAyMjAsIDI2LCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MSwgCi0gICAgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDQ5LCAyMjgsIDE2LCAyMjQsIDIzMywgNjEsIDQ5LCAyMjgsIAotICAgIDE2LCAyMjQsIDIzMywgMjQyLCA1MywgMjEyLCA0MCwgNTQsIDc5LCA2MSwgMjQyLCA2OSwgMjA4LCA4NSwgNDksIDI0NiwgCi0gICAgMTYsIDI0MSwgNjIsIDEwMywgMjE0LCAyNTQsIDI0MCwgODQsIDI0MywgMjI4LCAyMzEsIDUwLCA2MSwgMjQ2LCA2MiwgMjMxLCAKLSAgICA1MCwgNjIsIDIxMSwgMTc3LCA2MiwgMjA4LCA1MCwgMjE2LCA4NCwgNDksIDI0MSwgNjEsIDIxNiwgODQsIDQ5LCAyNDEsIAotICAgIDYwLCAyNTAsIDU0LCAxNiwgMzUsIDIwNiwgMjA1LCA3OSwgMjQ2LCA2MiwgMywgMjExLCAzMiwgMjUsIDEyMCwgMTg3LCA1NSwgCi0gICAgMjE4LCAyNTQsIDIxNiwgMTMsIDIzMCwgMjUyLCAyMTgsIDI1NCwgMjI3LCAyMTksIDIzMCwgMjUyLCAyMTgsIDI1NCwgMjMwLCAKLSAgICAyMzksIDIxOCwgMjU0LCA2MiwgMjQ1LCAxMzEsIDIyMCwgMzIsIDIxMywgOCwgMjEyLCAyNTIsIDIxMiwgMjAzLCAyNDYsIAotICAgIDkwLCAyNDcsIDE5LCAyMzYsIDIzMSwgMjEyLCA4OSwgMjM4LCAxODgsIDIwNCwgMywgMjM2LCAyMywgMjM4LCAxODgsIDMsIAotICAgIDIzNywgMTAxLCAyMjUsIDEwNywgMTYsIDM1LCAyMjcsIDEzMywgMjI0LCAxMiwgMjA3LCA0LCAyMjAsIDMyLCAyMzcsIDIzOSwgCi0gICAgMjM5LCAxNDgsIDIzOSwgMjI2LCAyMzEsIDUwLCAyMzYsIDEyNiwgMjQwLCAzNCwgMjE1LCAxNSwgNTEsIDIzOSwgMTQ3LCAKLSAgICAyNDUsIDE2NCwgMjEyLCA2NiwgMjM1LCAxNjMsIDIxMiwgNjksIDIxOCwgMjMwLCAzLCAyNDgsIDI1MSwgMjA5LCAxNDQsIAotICAgIDIzMCwgMTY5LCAyNDgsIDIzNiwgOTcsIDIzNywgNTksIDIzNywgMjUwLCA5NywgMjM5LCAxMDUsIDIxNywgMTgwLCAyNDUsIAotICAgIDEwMCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA2MSwgMjM5LCAyMjYsIDMsIDIzNiwgMTA2LCAxMDEsIDYyLCAyMTEsIDMzLCAKLSAgICA2MiwgMjE1LCAyNSwgMjE0LCAxOTAsIDIwNiwgMjIxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjIsIDIxNCwgMTkwLCAyMjYsIAotICAgIDI1MSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYxLCAyMTQsIDE5MCwgNjEsIDc5LCAyNDYsIDE2OSwgODIsIDIwOSwgMTYyLCAKLSAgICAyMjcsIDQ3LCA1NCwgMjA5LCAyMjEsIDI0MiwgNTIsIDI1MSwgNTIsIDI0MSwgNTcsIDIxNiwgMTg4LCAyMzksIDIzOCwgCi0gICAgMjE2LCAxODgsIDIzNywgMTIzLCAyMDUsIDIyOCwgMjM3LCAxMjMsIDIwMywgMjIwLCAyMzcsIDEyMywgMjI2LCAyNTEsIDUwLCAKLSAgICAyMTksIDgsIDIxOSwgOCwgMjA2LCAyMjEsIDUwLCAyMTksIDgsIDYxLCAyMjIsIDk3LCA2MiwgMjIyLCA5NywgMjQ2LCAxNjksIAotICAgIDgyLCA3OSwgMjQ2LCAxNjksIDgyLCAyMjMsIDIyNCwgMjAzLCAxOTYsIDc5LCAyMjMsIDIyNCwgMjAzLCAxOTYsIDI0OCwgCi0gICAgMjQ4LCAyMDMsIDE5NiwgNzksIDI0OCwgMjQ4LCAyMDMsIDE5NiwgMjE5LCAyMDcsIDMwLCAyNDUsIDEzMCwgNzksIDMwLCAKLSAgICAyNDUsIDEzMCwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDc5LCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgOCwgMjQ1LCAKLSAgICAxMzAsIDIxMywgNzcsIDYxLCA4LCAyNDUsIDEzMCwgMjE5LCAyMDcsIDgsIDI0NSwgMTMwLCAyMjUsIDEyNCwgMjQ1LCAxMzAsIAotICAgIDIxMSwgOTUsIDc2LCAyNDQsIDEzNywgMjM5LCAxNDcsIDIwOSwgMTgwLCAyNTAsIDU5LCAyMzksIDE0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgNTksIDc5LCAyMzksIDE0NywgMjQ4LCAyNDksIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDYsIDMsIDI1MCwgNTksIDYyLCAKLSAgICAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCAyMTEsIDIyMSwgCi0gICAgMjExLCA0MiwgMjE5LCAyMDcsIDYxLCAyMTEsIDk0LCA0MywgNjEsIDIxMSwgOTQsIDE3MSwgMjQ2LCAyMTgsIDYyLCAyMTEsIAotICAgIDk0LCA2MiwgMjQ2LCAyMTgsIDYxLCAyMTEsIDk0LCAyMTksIDIwNywgNjIsIDIxMSwgOTQsIDc5LCAyMTksIDIwNywgNjIsIAotICAgIDIxMSwgOTQsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTMsIDc3LCA2MSwgMjExLCA5NCwgNzksIDI1MCwgNTksIDE3MSwgMjQ2LCAKLSAgICAyMTgsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIAotICAgIDk0LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKLSAgICAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAxNDEsIDYyLCAyMTEsIDk0LCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgCi0gICAgMTQxLCA2MiwgMjExLCA5NCwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMTIsIDgzLCAyMTgsIDYxLCAyNTAsIAotICAgIDU5LCAyMDksIDE4MCwgMjUwLCA1OSwgMTcxLCAyNDYsIDIxOCwgMjA5LCAxODAsIDI1MCwgNTksIDc5LCAyMDksIDE4MCwgCi0gICAgMjUwLCA1OSwgMjEyLCA4OCwgMjE4LCAyMTgsIDYyLCAyNSwgNjEsIDIzOSwgMjAwLCA2MiwgMjM5LCAyMDAsIDYxLCAyMzksIAotICAgIDIwMCwgMjQxLCAxNDMsIDIxOCwgMjE4LCAyMTksIDIwNywgNjIsIDIzOSwgMjAwLCA0MywgMTcxLCAyNDYsIDIxOCwgMjQxLCAKLSAgICAxNDMsIDIxOCwgNjEsIDIxMSwgOTQsIDc5LCAyMDksIDE4MCwgMjE4LCAxMTgsIDI1MCwgNTksIDIxMiwgMTcsIDIwOCwgCi0gICAgMjQ0LCAyMDgsIDc4LCAyMTIsIDE3LCA3OSwgMjQ2LCAxNDYsIDIxMiwgMTcsIDIxMSwgMjIzLCA3OSwgMjExLCAyMjMsIAotICAgIDI0OCwgMjQ5LCAyNTAsIDU5LCAyNDEsIDE0MywgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCA3OSwgMjQxLCAxNDMsIAotICAgIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgMjQ1LCAxMzEsIDgyLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMTgyLCAKLSAgICAxMDMsIDI0NSwgMTMxLCA4MiwgMjI2LCAyNTEsIDUwLCAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDYyLCAyMTcsIDQ3LCAxMzEsIDIxOSwgMjMzLCA2MSwgMjE3LCA0NywgMTMxLCAyMTksIAotICAgIDIzMywgNjEsIDI0MCwgMjEyLCAxMzEsIDIxOSwgMjMzLCA2MiwgMjQzLCAyMjIsIDIyNCwgMTAzLCA2MSwgMjAzLCAxOTYsIAotICAgIDc5LCAyNDAsIDIxMiwgMTMxLCA5NywgMTU3LCA4MCwgMTQyLCAyMjUsIDEwLCA4MCwgMTQyLCA3OSwgODAsIDE0MiwgNzksIAotICAgIDIxMiwgMTIwLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMTIsIDEyMCwgMjQ1LCAKLSAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCA1MiwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCAyMTIsIDEyMCwgCi0gICAgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgMjQ1LCA4NiwgMjExLCA3OCwgMjE5LCA4OSwgMiwgMjE5LCAyMzMsIDc5LCAyNDAsIDIxMiwgMTMxLCAyMTksIAotICAgIDIzMywgNzksIDIzNywgNTYsIDI0MCwgMjEyLCAxMzEsIDIxOSwgMjMzLCA3OSwgNjIsIDIzNywgNTUsIDIxNSwgMTk4LCA3OSwgCi0gICAgNjIsIDIzNywgNTYsIDI0NywgMTc3LCAyMzksIDIwMSwgMjM3LCA1NSwgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIDU2LCAKLSAgICAyNDcsIDE3NywgMjI1LCAxMCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCA1MCwgMjE5LCA3NywgMjE5LCAyMzMsIAotICAgIDIyNSwgMTAsIDIzOSwgMjE0LCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDIzOSwgMjE0LCA1MCwgMjE5LCA3NywgCi0gICAgMjE5LCAyMzMsIDIyNSwgMTAsIDIyNywgMjE3LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMTYsIAotICAgIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgCi0gICAgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIAotICAgIDE1NywgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDE1NywgNTAsIDIwOCwgMTMzLCAyMTMsIAotICAgIDMzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgCi0gICAgMTAsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgMTgyLCA0MywgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCi0gICAgMTQ5LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTUsIDI0MywgMTc0LCAKLSAgICAxODIsIDQzLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAotICAgIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCA0MywgNDEsIDE3LCAxMDgsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAKLSAgICAxNDksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxNzAsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTUsIDI0MywgMTc0LCA0MywgCi0gICAgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIyMiwgCi0gICAgNjMsIDI0MywgMTc0LCA0MywgNDEsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgCi0gICAgNDMsIDQxLCAxNywgMTQ5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgCi0gICAgMTcsIDE5NSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIAotICAgIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCA0MiwgMjA5LCAKLSAgICAxNTIsIDc5LCAyMDQsIDI2LCA4NiwgNDcsIDc5LCA5MSwgNTQsIDc5LCAyMjQsIDEwMywgNTQsIDc5LCAyNDMsIDEzNywgNTQsIAotICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCA3OSwgODYsIDQ3LCA3OSwgMTUzLCAyNDEsIDE3NiwgNDcsIDI0MiwgNjMsIAotICAgIDIxOCwgNjMsIDg2LCA0NywgNzksIDIxNSwgMTkwLCA4NiwgNDcsIDIwOCwgODQsIDg2LCA0NywgNzksIDIwOCwgODQsIDg2LCAKLSAgICA0NywgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNzksIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDYyLCA4NiwgNDcsIAotICAgIDIwOSwgMzEsIDIwOCwgMTQzLCA4NiwgMjUwLCA5NCwgMjA5LCAzMSwgMjQ3LCAyNDYsIDg2LCAyNTAsIDk0LCA2MiwgODYsIAotICAgIDI1MCwgOTQsIDc5LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgODYsIDQ3LCA3OSwgNjIsIDI0NSwgODYsIDE3NywgMjUsIDg2LCAKLSAgICA0NywgMjExLCAxNzQsIDYyLCA4NiwgNDcsIDc5LCAyNDUsIDIxNywgNjIsIDg2LCA0NywgMjE2LCAxMCwgNjEsIDg2LCA0NywgCi0gICAgMjI3LCAyMTYsIDYxLCA4NiwgNDcsIDI0OSwgMjQsIDIxMywgNzcsIDYxLCA4NiwgNDcsIDIzOSwgMTE3LCAyMTMsIDc3LCAKLSAgICA2MSwgODYsIDQ3LCA3OSwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgNzksIDIwNiwgMjIxLCAyMTYsIDksIDYxLCAKLSAgICA4NiwgNDcsIDIyMSwgMTYyLCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCAyNDUsIDkzLCAyMjcsIDE0LCAyMjEsIAotICAgIDE2MiwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIDg2LCA0NywgNDMsIDc5LCA2MSwgODYsIDQ3LCAyMDQsIDMyLCA4NiwgNDcsIAotICAgIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDI0OCwgNDIsIDg2LCA0NywgMjQ4LCA0MiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgNDcsIDc5LCAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCA3OSwgMjQ4LCA0MiwgODYsIDQ3LCA3OSwgMjQ4LCAKLSAgICA0MiwgMTUzLCAyNDEsIDE3NiwgNDcsIDIwOSwgMTgyLCA4NiwgNDcsIDc5LCAyMDksIDE4MSwgODYsIDQ3LCAyMDQsIDU2LCAKLSAgICA4NiwgNDcsIDc5LCAyMDQsIDU2LCA4NiwgNDcsIDIyMCwgMywgODYsIDQ3LCA1MiwgMjQ1LCA5MywgMjI3LCAxNCwgMTI2LCAKLSAgICAyNDMsIDE4NCwgMjUwLCAyMTcsIDYxLCAyMDgsIDg2LCAyNDUsIDE5NSwgNSwgNjEsIDIwOCwgODUsIDIxOCwgMjMzLCAxNzEsIAotICAgIDIxMCwgMjQ0LCAxNzEsIDIxMCwgMTk3LCA0OSwgMjE1LCA5MywgMjQ5LCAxMSwgMjQ0LCA0MywgNTAsIDIxNSwgOTMsIDI0OSwgCi0gICAgMTEsIDI0NCwgNDMsIDIxOSwgMjQ1LCAzLCA3MCwgMjMxLCA2LCAyMTYsIDc0LCAyMTIsIDEsIDIxNywgMjQ4LCAyMTAsIAotICAgIDI0NCwgMjEwLCAxOTgsIDIxNywgMjQ4LCAyMTIsIDAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAxMywgMjE1LCAKLSAgICAyNDUsIDI0MywgMjI3LCAxNjMsIDI0MywgMTM2LCAxMywgMjQwLCA4NCwgMjQzLCAyMjcsIDEwMywgMjI3LCAzNywgMjUwLCAKLSAgICAyMjYsIDEwMywgMjI3LCAzNywgMjE5LCAyNDQsIDYxLCAyNDMsIDIyMiwgMywgMjQ2LCAyMTYsIDI0MywgODUsIDI1LCAzLCAKLSAgICAyNDMsIDg1LCAyNDEsIDExNSwgNzYsIDIyMCwgMSwgMjA2LCAyMTIsIDIyNiwgMjUxLCA1MCwgMjQ1LCAxNjYsIDMsIDI0MywgCi0gICAgODUsIDIwNiwgMjIxLCA0OSwgMjQ1LCAxNjYsIDMsIDI0MywgODUsIDQ5LCAyMTksIDIwOSwgMjMwLCA5OSwgNTAsIDIxOSwgCi0gICAgMjA5LCAyMzAsIDk5LCAyMzksIDEwMiwgMjE5LCAyMDksIDIzMCwgOTksIDIyOCwgOCwgMTEyLCAyMTAsIDMsIDIyOCwgOCwgCi0gICAgMTIxLCAyMTAsIDMsIDQ5LCAyNSwgNTAsIDUyLCAyMDcsIDE3MywgNDksIDI1LCA1MCwgMjEwLCAzLCA0OSwgMjIzLCAyMjgsIAotICAgIDE2MywgNTAsIDIxMCwgMywgMTYzLCA0OSwgMjEwLCAzLCAxMTIsIDIxMCwgNCwgMywgMjQ2LCA2MiwgNTUsIDIyNiwgMjQ3LCAKLSAgICAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyMTUsIDEzNSwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMSwgNjEsIDI0NSwgCi0gICAgMjE2LCAyNDMsIDIyMiwgMywgOTYsIDIwOCwgMjU0LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIyLCAzLCA4NiwgMjA4LCAyNTQsIAotICAgIDYxLCA1MSwgMywgOTYsIDIwOCwgMjU0LCA2MSwgNTEsIDMsIDg2LCAyMDgsIDI1NCwgMTMsIDQ5LCA2MSwgNTEsIDE1NSwgCi0gICAgMTMsIDUwLCA2MSwgNTEsIDE1NSwgMTMsIDQ5LCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDI1MCwgMjE4LCAxNTUsIDEzLCAKLSAgICA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDEzLCA0OSwgNjEsIDIwOCwgMTMzLCAKLSAgICAyMTMsIDMzLCAxNTUsIDEzLCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDEzLCA0OSwgMjM5LCAyMTQsIDIxOSwgCi0gICAgNzYsIDEzLCA1MCwgMjM5LCAyMTQsIDIxOSwgNzYsIDE3NywgMjE3LCA1OCwgNDcsIDE4MywgMjE3LCA1OCwgNDcsIDI1MCwgCi0gICAgMTk0LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgNTAsIDUzLCAzLCAKLSAgICA0MywgMjE4LCA3NiwgMTYzLCA5NiwgNDcsIDE2MywgODYsIDQ3LCAxNjMsIDQ5LCA1MCwgNDcsIDE2MywgOTYsIDUyLCA0NywgCi0gICAgMTYzLCA4NiwgNTIsIDQ3LCAxNjMsIDQ5LCA1MCwgNTIsIDQ3LCAxNjMsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCAKLSAgICA4NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgNTIsIDUzLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCAyMTEsIDE3MSwgNDcsIDU4LCA1OSwgMjQ4LCAzNiwgNTgsIDU5LCAyNDMsIDgyLCAKLSAgICA1OCwgNTksIDI0MiwgMjEwLCA1OCwgNTksIDI0MywgODEsIDU4LCA1OSwgMjQyLCAxNDYsIDU4LCA1OSwgMjQzLCAxNywgNTgsIAotICAgIDU5LCAyNDIsIDIwOSwgNTgsIDU5LCAyNDMsIDgwLCA1OCwgNTksIDI0MiwgMTE0LCA1OCwgNTksIDI0MiwgMjQxLCA1OCwgCi0gICAgNTksIDI0MiwgMTc3LCA1OCwgNTksIDI0MywgNDgsIDU4LCA1OSwgMjQyLCAxNDUsIDU4LCA1OSwgMjQzLCAxNiwgNTgsIDU5LCAKLSAgICAyNDIsIDIwOCwgNTgsIDU5LCAyNDMsIDc5LCA1OCwgNTksIDI0MiwgOTgsIDU4LCA1OSwgMjQyLCAyMjUsIDU4LCA1OSwgCi0gICAgMjQyLCAxNjEsIDU4LCA1OSwgMjQzLCAzMiwgNTgsIDU5LCAyNDIsIDEyOSwgNTgsIDU5LCAyNDMsIDAsIDU4LCA1OSwgMjQyLCAKLSAgICAxOTIsIDU4LCA1OSwgMjQzLCA2MywgNTgsIDU5LCAyNDIsIDExMywgNTgsIDU5LCAyNDIsIDI0MCwgNTgsIDU5LCAyNDIsIAotICAgIDE3NiwgNTgsIDU5LCAyNDMsIDQ3LCA1OCwgNTksIDI0MiwgMTQ0LCA1OCwgNTksIDI0MywgMTUsIDU4LCA1OSwgMjQyLCAKLSAgICAyMDcsIDU4LCA1OSwgMjQzLCA3OCwgNTgsIDU5LCAyNDIsIDkwLCA1OCwgNTksIDI0MiwgMjE3LCA1OCwgNTksIDI0MiwgCi0gICAgMTUzLCA1OCwgNTksIDI0MywgMjQsIDU4LCA1OSwgMjQyLCAxMjEsIDU4LCA1OSwgMjQyLCAyNDgsIDU4LCA1OSwgMjQyLCAKLSAgICAxODQsIDU4LCA1OSwgMjQzLCA1NSwgNTgsIDU5LCAyNDIsIDEwNSwgNTgsIDU5LCAyNDIsIDIzMiwgNTgsIDU5LCAyNDIsIAotICAgIDE2OCwgNTgsIDU5LCAyNDMsIDM5LCA1OCwgNTksIDI0MiwgMTM2LCA1OCwgNTksIDI0MywgNywgNTgsIDU5LCAyNDIsIDE5OSwgCi0gICAgNTgsIDU5LCAyNDMsIDcwLCA1OCwgNTksIDI0MiwgOTcsIDU4LCA1OSwgMjQyLCAyMjQsIDU4LCA1OSwgMjQyLCAxNjAsIDU4LCAKLSAgICA1OSwgMjQzLCAzMSwgNTgsIDU5LCAyNDIsIDEyOCwgNTgsIDU5LCAyNDIsIDI1NSwgNTgsIDU5LCAyNDIsIDE5MSwgNTgsIAotICAgIDU5LCAyNDMsIDYyLCA1OCwgNTksIDI0MiwgMTEyLCA1OCwgNTksIDI0MiwgMjM5LCA1OCwgNTksIDI0MiwgMTc1LCA1OCwgCi0gICAgNTksIDI0MywgNDYsIDU4LCA1OSwgMjQyLCAxNDMsIDU4LCA1OSwgMjQzLCAxNCwgNTgsIDU5LCAyNDIsIDIwNiwgNTgsIDU5LCAKLSAgICAyNDMsIDc3LCA1OCwgNTksIDI0MiwgODYsIDU4LCA1OSwgMjQyLCAyMTMsIDU4LCA1OSwgMjQyLCAxNDksIDU4LCA1OSwgCi0gICAgMjQzLCAyMCwgNTgsIDU5LCAyNDIsIDExNywgNTgsIDU5LCAyNDIsIDI0NCwgNTgsIDU5LCAyNDIsIDE4MCwgNTgsIDU5LCAKLSAgICAyNDMsIDUxLCA1OCwgNTksIDI0MiwgMTAxLCA1OCwgNTksIDI0MiwgMjI4LCA1OCwgNTksIDI0MiwgMTY0LCA1OCwgNTksIAotICAgIDI0MywgMzUsIDU4LCA1OSwgMjQyLCAxMzIsIDU4LCA1OSwgMjQzLCAzLCA1OCwgNTksIDI0MiwgMTk1LCA1OCwgNTksIDI0MywgCi0gICAgNjYsIDU4LCA1OSwgMjQyLCA5MywgNTgsIDU5LCAyNDIsIDIyMCwgNTgsIDU5LCAyNDIsIDE1NiwgNTgsIDU5LCAyNDMsIDI3LCAKLSAgICA1OCwgNTksIDI0MiwgMTI0LCA1OCwgNTksIDI0MiwgMjUxLCA1OCwgNTksIDI0MiwgMTg3LCA1OCwgNTksIDI0MywgNTgsIAotICAgIDU4LCA1OSwgMjQyLCAxMDgsIDU4LCA1OSwgMjQyLCAyMzUsIDU4LCA1OSwgMjQyLCAxNzEsIDU4LCA1OSwgMjQzLCA0MiwgCi0gICAgNTgsIDU5LCAyNDIsIDEzOSwgNTgsIDU5LCAyNDMsIDEwLCA1OCwgNTksIDI0MiwgMjAyLCA1OCwgNTksIDI0MywgNzMsIDU4LCAKLSAgICA1OSwgMjQyLCA4OSwgNTgsIDU5LCAyNDIsIDIxNiwgNTgsIDU5LCAyNDIsIDE1MiwgNTgsIDU5LCAyNDMsIDIzLCA1OCwgNTksIAotICAgIDI0MiwgMTIwLCA1OCwgNTksIDI0MiwgMjQ3LCA1OCwgNTksIDI0MiwgMTgzLCA1OCwgNTksIDI0MywgNTQsIDU4LCA1OSwgCi0gICAgMjQyLCAxMDQsIDU4LCA1OSwgMjQyLCAyMzEsIDU4LCA1OSwgMjQyLCAxNjcsIDU4LCA1OSwgMjQzLCAzOCwgNTgsIDU5LCAKLSAgICAyNDIsIDEzNSwgNTgsIDU5LCAyNDMsIDYsIDU4LCA1OSwgMjQyLCAxOTgsIDU4LCA1OSwgMjQzLCA2OSwgNTgsIDU5LCAyNDIsIAotICAgIDk2LCA1OCwgNTksIDI0MiwgMjIzLCA1OCwgNTksIDI0MiwgMTU5LCA1OCwgNTksIDI0MywgMzAsIDU4LCA1OSwgMjQyLCAKLSAgICAxMjcsIDU4LCA1OSwgMjQyLCAyNTQsIDU4LCA1OSwgMjQyLCAxOTAsIDU4LCA1OSwgMjQzLCA2MSwgNTgsIDU5LCAyNDIsIAotICAgIDExMSwgNTgsIDU5LCAyNDIsIDIzOCwgNTgsIDU5LCAyNDIsIDE3NCwgNTgsIDU5LCAyNDMsIDQ1LCA1OCwgNTksIDI0MiwgCi0gICAgMTQyLCA1OCwgNTksIDI0MywgMTMsIDU4LCA1OSwgMjQyLCAyMDUsIDU4LCA1OSwgMjQzLCA3NiwgNTgsIDU5LCAyNDIsIDg0LCAKLSAgICA1OCwgNTksIDI0MiwgMjExLCA1OCwgNTksIDI0MiwgMTQ3LCA1OCwgNTksIDI0MywgMTgsIDU4LCA1OSwgMjQyLCAxMTUsIAotICAgIDU4LCA1OSwgMjQyLCAyNDIsIDU4LCA1OSwgMjQyLCAxNzgsIDU4LCA1OSwgMjQzLCA0OSwgNTgsIDU5LCAyNDIsIDk5LCA1OCwgCi0gICAgNTksIDI0MiwgMjI2LCA1OCwgNTksIDI0MiwgMTYyLCA1OCwgNTksIDI0MywgMzMsIDU4LCA1OSwgMjQyLCAxMzAsIDU4LCAKLSAgICA1OSwgMjQzLCAxLCA1OCwgNTksIDI0MiwgMTkzLCA1OCwgNTksIDI0MywgNjQsIDU4LCA1OSwgMjQyLCA5MSwgNTgsIDU5LCAKLSAgICAyNDIsIDIxOCwgNTgsIDU5LCAyNDIsIDE1NCwgNTgsIDU5LCAyNDMsIDI1LCA1OCwgNTksIDI0MiwgMTIyLCA1OCwgNTksIAotICAgIDI0MiwgMjQ5LCA1OCwgNTksIDI0MiwgMTg1LCA1OCwgNTksIDI0MywgNTYsIDU4LCA1OSwgMjQyLCAxMDYsIDU4LCA1OSwgCi0gICAgMjQyLCAyMzMsIDU4LCA1OSwgMjQyLCAxNjksIDU4LCA1OSwgMjQzLCA0MCwgNTgsIDU5LCAyNDIsIDEzNywgNTgsIDU5LCAKLSAgICAyNDMsIDgsIDU4LCA1OSwgMjQyLCAyMDAsIDU4LCA1OSwgMjQzLCA3MSwgNTgsIDU5LCAyNDIsIDg3LCA1OCwgNTksIDI0MiwgCi0gICAgMjE0LCA1OCwgNTksIDI0MiwgMTUwLCA1OCwgNTksIDI0MywgMjEsIDU4LCA1OSwgMjQyLCAxMTgsIDU4LCA1OSwgMjQyLCAKLSAgICAyNDUsIDU4LCA1OSwgMjQyLCAxODEsIDU4LCA1OSwgMjQzLCA1MiwgNTgsIDU5LCAyNDIsIDEwMiwgNTgsIDU5LCAyNDIsIAotICAgIDIyOSwgNTgsIDU5LCAyNDIsIDE2NSwgNTgsIDU5LCAyNDMsIDM2LCA1OCwgNTksIDI0MiwgMTMzLCA1OCwgNTksIDI0MywgNCwgCi0gICAgNTgsIDU5LCAyNDIsIDE5NiwgNTgsIDU5LCAyNDMsIDY3LCA1OCwgNTksIDI0MiwgOTQsIDU4LCA1OSwgMjQyLCAyMjEsIDU4LCAKLSAgICA1OSwgMjQyLCAxNTcsIDU4LCA1OSwgMjQzLCAyOCwgNTgsIDU5LCAyNDIsIDEyNSwgNTgsIDU5LCAyNDIsIDI1MiwgNTgsIAotICAgIDU5LCAyNDIsIDE4OCwgNTgsIDU5LCAyNDMsIDU5LCA1OCwgNTksIDI0MiwgMTA5LCA1OCwgNTksIDI0MiwgMjM2LCA1OCwgCi0gICAgNTksIDI0MiwgMTcyLCA1OCwgNTksIDI0MywgNDMsIDU4LCA1OSwgMjQyLCAxNDAsIDU4LCA1OSwgMjQzLCAxMSwgNTgsIDU5LCAKLSAgICAyNDIsIDIwMywgNTgsIDU5LCAyNDMsIDc0LCA1OCwgNTksIDI0MiwgODUsIDU4LCA1OSwgMjQyLCAyMTIsIDU4LCA1OSwgCi0gICAgMjQyLCAxNDgsIDU4LCA1OSwgMjQzLCAxOSwgNTgsIDU5LCAyNDIsIDExNiwgNTgsIDU5LCAyNDIsIDI0MywgNTgsIDU5LCAKLSAgICAyNDIsIDE3OSwgNTgsIDU5LCAyNDMsIDUwLCA1OCwgNTksIDI0MiwgMTAwLCA1OCwgNTksIDI0MiwgMjI3LCA1OCwgNTksIAotICAgIDI0MiwgMTYzLCA1OCwgNTksIDI0MywgMzQsIDU4LCA1OSwgMjQyLCAxMzEsIDU4LCA1OSwgMjQzLCAyLCA1OCwgNTksIDI0MiwgCi0gICAgMTk0LCA1OCwgNTksIDI0MywgNjUsIDU4LCA1OSwgMjQyLCA5MiwgNTgsIDU5LCAyNDIsIDIxOSwgNTgsIDU5LCAyNDIsIAotICAgIDE1NSwgNTgsIDU5LCAyNDMsIDI2LCA1OCwgNTksIDI0MiwgMTIzLCA1OCwgNTksIDI0MiwgMjUwLCA1OCwgNTksIDI0MiwgCi0gICAgMTg2LCA1OCwgNTksIDI0MywgNTcsIDU4LCA1OSwgMjQyLCAxMDcsIDU4LCA1OSwgMjQyLCAyMzQsIDU4LCA1OSwgMjQyLCAKLSAgICAxNzAsIDU4LCA1OSwgMjQzLCA0MSwgNTgsIDU5LCAyNDIsIDEzOCwgNTgsIDU5LCAyNDMsIDksIDU4LCA1OSwgMjQyLCAyMDEsIAotICAgIDU4LCA1OSwgMjQzLCA3MiwgNTgsIDU5LCAyNDIsIDg4LCA1OCwgNTksIDI0MiwgMjE1LCA1OCwgNTksIDI0MiwgMTUxLCA1OCwgCi0gICAgNTksIDI0MywgMjIsIDU4LCA1OSwgMjQyLCAxMTksIDU4LCA1OSwgMjQyLCAyNDYsIDU4LCA1OSwgMjQyLCAxODIsIDU4LCAKLSAgICA1OSwgMjQzLCA1MywgNTgsIDU5LCAyNDIsIDEwMywgNTgsIDU5LCAyNDIsIDIzMCwgNTgsIDU5LCAyNDIsIDE2NiwgNTgsIAotICAgIDU5LCAyNDMsIDM3LCA1OCwgNTksIDI0MiwgMTM0LCA1OCwgNTksIDI0MywgNSwgNTgsIDU5LCAyNDIsIDE5NywgNTgsIDU5LCAKLSAgICAyNDMsIDY4LCA1OCwgNTksIDI0MiwgOTUsIDU4LCA1OSwgMjQyLCAyMjIsIDU4LCA1OSwgMjQyLCAxNTgsIDU4LCA1OSwgCi0gICAgMjQzLCAyOSwgNTgsIDU5LCAyNDIsIDEyNiwgNTgsIDU5LCAyNDIsIDI1MywgNTgsIDU5LCAyNDIsIDE4OSwgNTgsIDU5LCAKLSAgICAyNDMsIDYwLCA1OCwgNTksIDI0MiwgMTEwLCA1OCwgNTksIDI0MiwgMjM3LCA1OCwgNTksIDI0MiwgMTczLCA1OCwgNTksIAotICAgIDI0MywgNDQsIDU4LCA1OSwgMjQyLCAxNDEsIDU4LCA1OSwgMjQzLCAxMiwgNTgsIDU5LCAyNDIsIDIwNCwgNTgsIDU5LCAKLSAgICAyNDMsIDc1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgOTUsIAotICAgIDk2LCA1MiwgNTMsIDMsIDgwLCA5NSwgODYsIDUyLCA1MywgMywgODAsIDk1LCA0OSwgNTAsIDUyLCA1MywgMywgODAsIDk1LCAKLSAgICA4NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTIsIDUzLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxODMsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCAKLSAgICAyMDgsIDcwLCA0NywgMTgzLCAyMDgsIDcwLCA0NywgOTYsIDUyLCAyNDQsIDE0NSwgNDcsIDg2LCA1MiwgMjQ0LCAxNDUsIAotICAgIDQ3LCA5NiwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgMjA3LCAxMzQsIAotICAgIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCAxNzcsIDUzLCAyMDgsIDE3MywgCi0gICAgMTQyLCAxODMsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCA1MywgMywgCi0gICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA4NiwgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAotICAgIDI1MCwgOTYsIDg2LCAyNTAsIDk2LCA5NiwgNTIsIDI1MCwgOTYsIDg2LCA1MiwgMjUwLCA5NiwgOTYsIDUzLCAyMDgsIDE3MywgCi0gICAgNjIsIDI0MywgMjIxLCA4NiwgNTMsIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDk2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAKLSAgICAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA4NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgMjA4LCAxNzMsIDYyLCAyNDMsIAotICAgIDIyMSwgMTUzLCAyMDQsIDQ2LCAyNSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgMjUsIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMywgMTEzLCAxNTMsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAKLSAgICAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MywgMywgMTEzLCAxNTMsIDIwNCwgCi0gICAgNDYsIDUzLCAyNSwgMTUzLCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIAotICAgIDUzLCAyNSwgMTUzLCAyMDQsIDQ2LCA0NywgMjE1LCAyNDUsIDI0MywgMjI4LCAyNDUsIDEyNCwgMjQwLCA4NCwgMjQzLCAKLSAgICAyMjcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMjE1LCAyNDUsIDI0MywgMjI3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDUzLCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCA0NywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjE1LCAyNDUsIAotICAgIDI0MywgMjI4LCAyNDUsIDEyNCwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAKLSAgICAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIwNCwgNzYsIAotICAgIDUzLCAyMTgsIDU5LCAyNDMsIDE2NCwgMjE2LCAxNiwgNTMsIDIxOCwgNTksIDg2LCAyMDksIDg0LCAyNDUsIDg0LCAyMDYsIAotICAgIDIxMiwgNTMsIDIxOCwgNTksIDg2LCAyMDksIDg0LCAyNDUsIDg0LCAyNDIsIDY4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIAotICAgIDg0LCAyNDUsIDg0LCAyMjcsIDIxMiwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMjQ1LCA4NCwgMjE2LCA1LCAyMTYsIAotICAgIDgsIDI1MCwgMTI5LCAyNDYsIDE4LCA0NywgMjI3LCAyMTUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAKLSAgICAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyNDcsIDI0OCwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIDI1MCwgCi0gICAgMTI5LCAyNDYsIDE4LCA1MywgMywgMjI0LCAxMDIsIDIwOCwgMTQ1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDUzLCAzLCAyMTgsIAotICAgIDc2LCAyMjYsIDI1MSwgNTAsIDIxMywgMTQ1LCAyNDYsIDE4LCA0NywgMjI2LCAyNTEsIDQ5LCAyMTMsIDE0NSwgMjUwLCAKLSAgICAxOTQsIDQ3LCAyNTAsIDE5NCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAKLSAgICA4NiwgNTMsIDg3LCAyMTIsIDIyOCwgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTIsIDIyOCwgODYsIDQ3LCAyMTIsIDIyOCwgODYsIAotICAgIDUzLCA4NywgOTYsIDQ3LCA4NiwgNTMsIDMsIDkxLCA1NiwgOTYsIDUzLCAzLCA5MSwgNTYsIDg2LCA1MywgMjA5LCAyNSwgCi0gICAgMjAzLCAxOTYsIDQ5LCA1MCwgNTMsIDIwOSwgMjUsIDUsIDI0NiwgNjEsIDE3NywgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgCi0gICAgNSwgMjQ2LCA2MSwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMjEsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgCi0gICAgMTEyLCAyMzcsIDg2LCAxMTIsIDE1MCwgNTAsIDEyMSwgMTUwLCA0OSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAotICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTEyLCAyMzcsIDg2LCAxMTIsIDE1MCwgNTAsIDEyMSwgCi0gICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAxMjEsIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKLSAgICAxNTAsIDQ5LCAyMzcsIDg2LCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDg2LCAyMzcsIDg3LCAKLSAgICAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCAxODMsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIAotICAgIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIAotICAgIDIwOCwgMTczLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDE3NywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgCi0gICAgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIAotICAgIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDI0MiwgNzAsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyMTYsIDE2LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCAxODMsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgOTYsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDEyMSwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDk2LCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDg3LCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAyNDIsIDcwLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCAxNjMsIDI0NCwgMTQ0LCA5NiwgMjM3LCA4NywgCi0gICAgMywgMTUwLCAxMjEsIDI0OCwgMTI2LCAxNjMsIDI0NCwgMTQ0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCAxNjMsIAotICAgIDI0NCwgMTQ0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDI0OCwgMTI2LCAxNjMsIDI0NCwgMTQ0LCAxNzcsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgMTgzLCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDUwLCA1MiwgNTMsIDMsIDIxNSwgCi0gICAgMTg5LCAyMzcsIDY0LCAyNDEsIDM1LCAyLCA4NywgODYsIDQ3LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA4NiwgNDcsIDk2LCAKLSAgICA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAKLSAgICAyNTEsIDcsIDE1NiwgMTM1LCAyMjcsIDE3OSwgODcsIDk2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMjcsIDE3OCwgMjM3LCAKLSAgICAyNDcsIDg3LCA4NiwgNDcsIDIxMCwgMjQ1LCA4NywgODYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIxMCwgMjQ0LCAyMTAsIAotICAgIDE5OCwgODcsIDk2LCA0NywgNDksIDIzOSwgMjQ0LCAyMDksIDI0OCwgNTAsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTEyLCAKLSAgICAyMzksIDI0NCwgMjA5LCAyNDgsIDEyMSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDI0NCwgCi0gICAgNDMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjExLCAxODgsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjA3LCAxMjEsIDI0NSwgMjQyLCAKLSAgICA0OSwgNjEsIDI0NSwgOTMsIDE1NSwgNTAsIDYxLCAyNDUsIDkzLCAxNTUsIDQ5LCA2MSwgMjE5LCA3NiwgNTAsIDYxLCAyMTksIAotICAgIDc2LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyMzEsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIDIzMSwgCi0gICAgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjQ4LCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAKLSAgICAyNDgsIDY1LCAxNTUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgMjQ2LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIAotICAgIDI0NiwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA4LCAyNTUsIDIzMSwgNTAsIDIwOCwgMTQ1LCAyNDUsIDE2NSwgNTAsIDUxLCAKLSAgICAyNDcsIDIyNywgMywgMjA4LCAyNTUsIDIzMSwgNTAsIDI0NywgMjQ4LCAyNDUsIDE2NSwgNDksIDUxLCAyNDcsIDIyNywgMywgCi0gICAgMjA4LCAyNTUsIDIzMSwgNTAsIDI0NywgMjQ4LCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA4LCAyNTUsIAotICAgIDIzMSwgNTAsIDIwOCwgMTQ1LCAyNDUsIDE2NSwgNDksIDI1MCwgMjE4LCAyNDcsIDIyNywgMywgMjQzLCA4NSwgNTAsIDI1MCwgCi0gICAgMjE4LCAyNDcsIDIyNywgMywgMjQzLCA4NSwgNDksIDI1MCwgMTI5LCAyMjcsIDE3OSwgMTU1LCA1MCwgMjUwLCAxMjksIAotICAgIDIzNywgMjQ3LCAxNTUsIDUyLCA0OSwgMjUwLCAxMjksIDIzNywgMjQ3LCAxNTUsIDUyLCA1MCwgMjUwLCAxMjksIDIyNywgCi0gICAgMTc5LCAxNTUsIDQ5LCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAKLSAgICAyNDIsIDgzLCAyNDAsIDQwLCA4MCwgMjAyLCAzMCwgMjI3LCAxMTQsIDIyNSwgMTcsIDI1MCwgMjE4LCAyMjAsIDEsIDIyNywgCi0gICAgMjIyLCA1MCwgMjUwLCAyMTgsIDIwNiwgNjksIDMsIDIxMSwgMTc3LCAyMjUsIDE3LCA1MCwgMjUwLCAyMTgsIDMsIDI0MywgCi0gICAgODUsIDI1MCwgMjE4LCAzLCAyMTUsIDk0LCAyMzEsIDYsIDI1MSwgMTI2LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE4LCAKLSAgICAyMjAsIDEsIDIyNywgMjIyLCAyMTEsIDIwOCwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIwNywgMTc0LCAyNTAsIAotICAgIDIxNywgMjE2LCA3MywgMjUwLCAyMTcsIDI1MCwgMjE4LCAzLCAyMDYsIDI0NiwgMjE2LCA3MywgMjUwLCAyMTgsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjQyLCAKLSAgICA3MCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAKLSAgICAxMTIsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgCi0gICAgNTMsIDIxOCwgNTksIDExMiwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCAKLSAgICA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIAotICAgIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgCi0gICAgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNTAsIDI1LCAyMDYsIDIyNCwgCi0gICAgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA0OSwgCi0gICAgMjUsIDIwNiwgMjI0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIAotICAgIDIxOCwgNTksIDUwLCAyNSwgMjQyLCA3MCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIAotICAgIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA0OSwgMjUsIDI0MiwgNzAsIDIxNiwgNzMsIDI0MSwgOTQsIDIxMywgMTE3LCAyNDEsIAotICAgIDk0LCAyMTMsIDExOCwgMywgMjE5LCAyMDMsIDI0MSwgOTQsIDIxMywgMTE4LCAzLCA1LCAyNDYsIDYyLCA1NSwgMjQxLCA5NCwgCi0gICAgMjEzLCAxMTgsIDMsIDUwLCA1MywgNTUsIDI0MSwgOTQsIDIxMywgMTE4LCAzLCA0OSwgNTMsIDU1LCAyNDYsIDYyLCAzLCAKLSAgICAyMzYsIDEwNiwgMTQyLCA0MywgODAsIDE0MiwgNDMsIDIxOSwgODEsIDQzLCAyMTYsIDc0LCAyMTIsIDAsIDQzLCAyMTgsIAotICAgIDIzMywgMjQ2LCA2MiwgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDI1LCAyMDgsIDE0NSwgMTYyLCAKLSAgICAyNDMsIDE0MiwgMjQ3LCAxMzcsIDgwLCAxNDIsIDI0NiwgNjIsIDMsIDIxMCwgMjAwLCAyMDMsIDE5NiwgNDMsIDI1MCwgCi0gICAgMTkyLCAyNDMsIDEzNywgNTQsIDExMiwgNTMsIDIwOSwgMjUsIDI0NiwgNjEsIDQzLCA2MSwgMjQ3LCAxNzcsIDQzLCAyNDcsIAotICAgIDE3NywgNDMsIDIyNywgMTc4LCA0MywgMjM3LCAyNDYsIDI0NiwgNjIsIDMsIDUsIDI0NiwgNjIsIDIwOCwgMTczLCAyMDksIAotICAgIDkzLCAyMTYsIDE2LCAyNDYsIDYyLCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDIwLCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAKLSAgICAxNiwgMTAzLCAyMTUsIDI0NSwgMjQzLCAyMjgsIDIxMiwgNTcsIDEwMywgMjQwLCA4NCwgMjQzLCAyMjgsIDIxMiwgNTcsIAotICAgIDEwMywgMjUwLCA1OSwgMTAzLCA1LCAyNDYsIDYxLCAxMDMsIDIxMSwgMTc3LCAxMjAsIDIzMCwgOTgsIDIxMSwgMTc1LCAKLSAgICAyMDgsIDg2LCAzLCA3MCwgNTUsIDIwOCwgODYsIDMsIDIwNiwgMjQ2LCAyMTUsIDk0LCAyMzEsIDUwLCAyMDgsIDg1LCAyMDgsIAotICAgIDg2LCAzLCAyMTMsIDEyNCwgMjUwLCA1MCwgMjQ3LCAyNDcsIDUwLCAyMDgsIDg2LCA4NywgNDksIDIwOCwgODUsIDQ5LCAKLSAgICAyMDgsIDg2LCAyNDgsIDExMCwgODAsIDE0MiwgODAsIDI0OCwgMjMxLCAyNDgsIDExMCwgNTAsIDIwOCwgODUsIDI0NywgCi0gICAgMjM1LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDcsIDIzNSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0NywgMjM0LCAKLSAgICAyMywgMywgNDksIDE2MiwgMjQ4LCA0MywgMjMsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYxLCAyMzYsIDQwLCA2MiwgMjM2LCAKLSAgICA0MCwgNDksIDIwNCwgMjEsIDI0MCwgNDAsIDUwLCAyMDQsIDIxLCAyNDAsIDQwLCA0OSwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIAotICAgIDUwLCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgMjMxLCA0MiwgMjMxLCAyNywgMjA4LCAyNTEsIDExNSwgMjMxLCAyNywgMjMxLCAKLSAgICAyOCwgMjIyLCAyMzQsIDMsIDgwLCAxNDIsIDI0MiwgNzcsIDIyMywgMjI4LCA1MSwgMywgMjQ1LCAxODcsIDIxOSwgMjA4LCAKLSAgICAyMzEsIDM5LCAyNTAsIDgxLCAyMTIsIDE5MywgMjE3LCAyMjQsIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgxLCAKLSAgICAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MiwgMywgMjA4LCAyMjgsIDU1LCAyMzUsIDE1NCwgMjA4LCAxNzMsIAotICAgIDI1LCAyMTIsIDU5LCAyMTksIDgxLCAyMzgsIDQ4LCAyMTEsIDkzLCAyMDksIDgxLCAyNDIsIDY5LCAyMDgsIDg2LCAzLCA0OSwgCi0gICAgMTYyLCAyNDgsIDQzLCAyNDIsIDY5LCAyMDgsIDg2LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQzLCAyMjIsIDMsIAotICAgIDEyMSwgNDcsIDYyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIDYyLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCAKLSAgICAyNDEsIDIwLCA2MSwgMjExLCAxNzcsIDI0MSwgMjAsIDYyLCAyMTEsIDE3NywgMjQxLCAyMCwgNjEsIDI0MywgMjIxLCAyNDEsIAotICAgIDIwLCA2MiwgMjQzLCAyMjEsIDI0MSwgMjAsIDYxLCAyNDYsIDYxLCAyNDEsIDIwLCA2MiwgMjQ2LCA2MSwgMjE1LCAxMzQsIAotICAgIDIxNiwgNzQsIDIxMiwgMSwgMjE5LCAyNTQsIDIxMiwgMSwgMywgMjE5LCAyMDMsIDIxNiwgNzQsIDIxMiwgMSwgMywgMjM2LCAKLSAgICAxMDYsIDk1LCAyNDgsIDczLCAyMTIsIDAsIDI0OCwgNzMsIDIxNiwgNzQsIDIxMiwgMCwgNTIsIDIxOCwgNzYsIDIwOCwgNzAsIAotICAgIDIxOCwgNzYsIDIyNywgMjE3LCAyNDUsIDg2LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNDUsIDg2LCAyNTAsIDIxOCwgCi0gICAgMTU1LCAyMDgsIDIxMiwgMjI0LCAxMDAsIDIyMywgMTYyLCA0MywgNzAsIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDkxLCAKLSAgICAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCAyMywgMjE5LCAyNTQsIDIyMywgMTYyLCAyMDYsIDIzOCwgMjE5LCAyNTUsIDMsIAotICAgIDI0MywgODUsIDIyMywgMTYyLCAyMDYsIDIzOCwgMjE5LCAyNTUsIDMsIDIxOCwgNzYsIDIyMywgMTYyLCA1MSwgMjMwLCAKLSAgICAyNDUsIDIxOSwgMjU0LCAyMjMsIDE2MiwgNTEsIDIwNiwgMjM4LCAyMTksIDI1NCwgMTIwLCAyMjcsIDM3LCAyNSwgMjE5LCAKLSAgICAyNTQsIDEyMCwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjMsIDIxOSwgMjU0LCAyMjQsIDU4LCAKLSAgICAxMjAsIDIxMCwgMjIwLCAyMTAsIDIxOCwgMywgMjMxLCAyLCAyMTcsIDU4LCAyMzEsIDMsIDIxOSwgMjU0LCAyMzksIDI1MiwgCi0gICAgMjE5LCA3MSwgMjMxLCAyLCAyMzEsIDMsIDMsIDUyLCA5NSwgMjMxLCAzLCAyNTAsIDE1LCAzLCAyMTIsIDU3LCAyNDYsIDU0LCAKLSAgICAyMzksIDk5LCAyNTAsIDE5NCwgMjMxLCAwLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTYsIDE0MiwgMjE5LCA1MiwgMjUwLCAKLSAgICAxMDQsIDIxOCwgNTMsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxMywgMTQ1LCAyMTksIDUyLCAyNTAsIDEwNCwgMjE4LCA1MywgCi0gICAgMjI3LCAxMTUsIDIzMSwgMSwgMjIxLCAxNjYsIDIzMSwgNDQsIDIwOSwgOTMsIDIxOCwgNTMsIDIzMSwgMywgMjUwLCAxMDQsIAotICAgIDM0LCAyMTgsIDYzLCAyMTksIDI1NCwgMjE3LCA1MiwgMjMxLCAzLCAyMTksIDI1NCwgMjMxLCAzLCAzLCA5NiwgNTMsIDMsIAotICAgIDExMywgMjMxLCAzLCAzLCAyMywgNTQsIDIzMSwgMywgMywgMjMwLCAyNDQsIDIzMSwgMywgMywgMjA2LCAyMzcsIDIzMSwgMywgCi0gICAgMywgMjE5LCAyMDMsIDIzMSwgMywgMywgMjA2LCAyNDYsIDIzMCwgOTksIDIyOCwgOCwgNDksIDIwOCwgODYsIDIxOSwgMjU0LCAKLSAgICAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyNDUsIDIyMywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgCi0gICAgMjE4LCAxMTQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDIxNywgMjE5LCA5MSwgMiwgMywgNSwgMjQ2LCA2MiwgCi0gICAgNTUsIDkxLCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOSwgNTUsIDkxLCAyLCAzLCAyMDgsIDIyOCwgNTUsIDkxLCAyLCAzLCAKLSAgICA3MCwgNTYsIDkxLCAyLCAzLCAyMDgsIDIyOCwgNTYsIDkxLCAyLCAzLCAyMTAsIDI0NiwgMTA4LCA5MSwgMiwgMywgNjIsIAotICAgIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAzLCAyNDUsIDIzNCwgNTUsIDIyNCwgMTAzLCAyLCAzLCA3MCwgNTYsIDIyNCwgMTAzLCAKLSAgICAyLCAzLCAyNDAsIDg0LCAyNDMsIDgzLCAyMjQsIDEwMywgMiwgMywgMjE1LCAyNDUsIDI0MywgODMsIDkxLCAyLCAyMzEsIAotICAgIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCA5MSwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCA2MSwgMjA2LCA1NCwgMjE5LCAKLSAgICAyNDUsIDI0NSwgMTMxLCAyMTcsIDIyNCwgMjIzLCAyMjQsIDIsIDMsIDcwLCA1NSwgMjIzLCAyMjQsIDIsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMTMsIDE0MiwgMjE3LCAyMjUsIDMsIDI0NywgMjQ4LCAyNDYsIDE1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjIzLCAKLSAgICAyMjQsIDIsIDIzMSwgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIAotICAgIDYxLCA0MywgMjIzLCAyMjQsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM4LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTIsIDI0NiwgCi0gICAgNjEsIDQzLCAyNDMsIDEzNywgNTQsIDkxLCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMjMxLCA1MCwgMjA4LCAKLSAgICA4NSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIzMCwgMjUzLCAyMTcsIDIyNCwgMjE2LCA2LCAyMzAsIDI1MywgCi0gICAgMjE3LCAyMjQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE2LCAxMTYsIDI0NSwgMjIzLCAyNTAsIDI0NSwgMjE5LCAyNDUsIAotICAgIDI0NSwgMTcxLCAyMzAsIDI0NSwgMywgMjQzLCA4NSwgMjA2LCAyMzgsIDMsIDIyNCwgMTAzLCA1NCwgMjA2LCAyMzgsIDMsIAotICAgIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjA2LCAKLSAgICAyMzgsIDMsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMDYsIDIzOCwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDIwNiwgCi0gICAgMjM3LCAyMDYsIDIzOCwgODcsIDI0OCwgMjMxLCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjQ4LCAyMzEsIDg3LCAKLSAgICAyMDYsIDIzNywgMjA2LCAyMzgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjA2LCAyMzcsIDIzMCwgMjQ1LCAyNDgsIAotICAgIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIzMCwgMjQ0LCAyNDYsIDE2LCAyMDYsIDIzOCwgMywgMjEzLCAxMjMsIDI0NiwgMTYsIAotICAgIDIzMCwgMjQ1LCAzLCAyMTMsIDEyMywgNTIsIDUxLCAyMzAsIDI0NCwgNTIsIDUxLCAyMDYsIDIzNywgMjQ2LCAxNiwgMjA2LCAKLSAgICAyMzgsIDMsIDIxMywgMTI0LCAyNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyNywgMzcsIDI1LCAzLCA3MCwgNTUsIDIyNywgMzcsIAotICAgIDIxOSwgMjQ1LCAzLCA3MCwgNTUsIDUyLCAyMjcsIDM3LCAyNTAsIDIyNiwgNTIsIDIyNywgMzcsIDIxOSwgMjQ0LCAxMjAsIAotICAgIDIzMCwgMjQ2LCAyMjcsIDM3LCAyNTAsIDIyNiwgMTIwLCAyMzAsIDI0NiwgMjI3LCAzNywgMjE5LCAyNDQsIDIxMiwgNDMsIAotICAgIDIyOCwgOCwgMjE5LCAyNDQsIDIxMiwgNDMsIDIyOCwgOCwgMjUwLCAyMjYsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDIwMCwgCi0gICAgMjI3LCAzNywgMjUwLCAyMjYsIDIyNywgMzcsIDI1LCAzLCAxMDEsIDIxMSwgNzcsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCAKLSAgICAxMDEsIDIxMSwgNzcsIDIyNywgMzcsIDI1LCAzLCAyMzYsIDEwNiwgMjQ0LCAxNDQsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCAKLSAgICAyMzYsIDEwNiwgMjQ0LCAxNDQsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjE5LCAyMDMsIDIyNywgMzcsIDI1LCAzLCAyMDYsIAotICAgIDI0NiwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMDYsIDI0NiwgNSwgMjA2LCA1MSwgMywgMjA2LCAyNDYsIDIyNywgMzcsIDIxOSwgCi0gICAgMjQ1LCAzLCA1MiwgMjE5LCAyMDMsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCA1MiwgMjA2LCAyNDYsIDIwMiwgMTYwLCAyMjEsIAotICAgIDE2NCwgMjQzLCA5NCwgMjUwLCAxODQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE2LCAxNzksIDI1MCwgMTg0LCAyNDEsIDM1LCAKLSAgICAyLCAzLCA3MCwgNTYsIDIzNSwgMTU0LCAzLCA3MCwgNTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgNTIsIAotICAgIDgwLCA5NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCAyMDgsIDcwLCA4MCwgOTUsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NSwgMywgNzAsIDU1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCAyMTIsIDEyOSwgMjI0LCAKLSAgICAxMDMsIDIxMiwgMTI4LCAyNDUsIDIxMCwgMywgNzAsIDU1LCAyNDEsIDM1LCAzLCAyNTAsIDU5LCAyNTEsIDcsIDE1NiwgCi0gICAgMjA4LCAxNzMsIDMsIDI0NiwgNTMsIDI1MSwgMTM4LCAyNTAsIDE1MSwgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgCi0gICAgMzUsIDIsIDg3LCA5MSwgNTQsIDkxLCAyLCA4NywgMjQxLCAzNSwgNTQsIDI0MSwgMzUsIDIsIDg3LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTQsIDUyLCAyNDUsIDI0MywgMjQxLCAzNiwgMTIwLCAyNDUsIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDEyNiwgMjQ1LCAKLSAgICAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAyNDEsIDM1LCAyLCAzLCAxMjAsIDE4NywgODcsIDI1LCAxMjAsIDE4NywgNTYsIAotICAgIDI0MSwgMzAsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAyMjcsIDE3OSwgMywgMjQ2LCA2MiwgMjMxLCA2LCAyMzcsIDI0NywgMywgCi0gICAgMjQ2LCA2MiwgMjMxLCA2LCAyMjcsIDE3OSwgMywgMjE3LCA0NywgMTMxLCA1NSwgMjM3LCAyNDcsIDMsIDIxNywgNDcsIAotICAgIDEzMSwgNTUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCAKLSAgICA1OSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgCi0gICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAyMjcsIDE3OSwgMjE5LCAKLSAgICAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIAotICAgIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIAotICAgIDg3LCAyMTYsIDE2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA4NywgMjI3LCAKLSAgICAyMjIsIDIyNywgMTc5LCAyMTksIDI0NSwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjUwLCAxNTIsIDIyNywgCi0gICAgMTc5LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIAotICAgIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjUsIDIyMSwgMTY2LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDI1LCAyMjEsIDE2NiwgMjUwLCAKLSAgICAxNTIsIDIyNywgMTc5LCA4NywgMjQyLCA3NiwgMTU2LCA4NywgMjM3LCAyNDYsIDIzNywgMjQ3LCA4NywgMjQyLCA3NiwgCi0gICAgMTU2LCA4NywgMjI3LCAxNzgsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMzcsIDI0NywgCi0gICAgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgODcsIDIzNywgMjQ2LCAKLSAgICAyMzcsIDI0NywgODcsIDIxMiwgMTI5LCA4NywgMjI3LCAxNzgsIDIyNywgMTc5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDIsIAotICAgIDc2LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIyNywgMTc5LCA4NywgMjQyLCA3NiwgMjQxLCAzNiwgMjI3LCAxNzksIDg3LCAKLSAgICAyMTIsIDU5LCAxNTYsIDg3LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgCi0gICAgMTU2LCA4NywgMjI3LCAxNzksIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIAotICAgIDI0NSwgMjI3LCAxNzgsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjEyLCA1OSwgMTU2LCAKLSAgICAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc5LCAzLCA3MCwgMjMxLCA2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIAotICAgIDI0NSwgMjM3LCAyNDcsIDMsIDcwLCAyMzEsIDYsIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgCi0gICAgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgCi0gICAgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIAotICAgIDI0NiwgMjEyLCAxMjksIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjEyLCAxMjksIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjEyLCAKLSAgICAxMjksIDg3LCAyMjcsIDE3OSwgODcsIDI0MSwgMzUsIDU0LCAyMTIsIDEyOSwgODcsIDIzNywgMjQ3LCA4NywgMjQxLCAzNSwgCi0gICAgNTQsIDUyLCAyMjIsIDIyMSwgMjI3LCAxNzgsIDUyLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDUyLCAyMjIsIDIyMSwgMjI3LCAKLSAgICAxNzksIDMsIDIwNiwgMjQ2LCAyMzcsIDI0NywgMjE5LCAyMDAsIDIyNywgMTc4LCAyMzcsIDI0NywgMjQ4LCAxMTAsIDIyNywgCi0gICAgMTc4LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODcsIDIzNywgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgCi0gICAgMjQ1LCA4NywgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg4LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAKLSAgICAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg4LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCAzNSwgMjA5LCA5NywgCi0gICAgMjI4LCA2LCAyMDksIDk3LCAyMTIsIDM1LCAyMDksIDk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyOCwgNiwgMjA5LCA5OCwgCi0gICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIDM1LCAyLCAzLCAyNDcsIDE3MCwgNTUsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAotICAgIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDIxMiwgMTE4LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDIzNywgODcsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCAKLSAgICA4NywgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjIxLCAxNjYsIDE1NiwgCi0gICAgMTM1LCAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAKLSAgICAyMTAsIDIzNywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIAotICAgIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDUyLCAyMTcsIDI0OSwgNTIsIDIxMCwgMjM2LCAKLSAgICAyMTAsIDI0NSwgMywgMjQzLCA4NSwgMjEwLCAxOTgsIDMsIDI0MywgODUsIDIxMCwgMjQ1LCAzLCA5MSwgMiwgNTYsIDIxMCwgCi0gICAgMTk4LCAzLCA5MSwgMiwgNTYsIDIxMCwgMjQ1LCAzLCAyMjMsIDIyNCwgMiwgNTYsIDIxMCwgMTk4LCAzLCAyMjMsIDIyNCwgCi0gICAgMiwgNTYsIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAxOTgsIDc2LCAKLSAgICAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDI0NSwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAKLSAgICAxOTgsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgNTEsIDQ5LCAxNzEsIDk4LCAyMTksIDI1NCwgNTEsIDUwLCAxNzEsIDk4LCAKLSAgICAyMTksIDI1NCwgMjQ2LCAxNiwgMjEwLCAyNDQsIDI0NiwgMTYsIDIxMCwgMTk3LCAyNDYsIDE2LCAyMTAsIDI0NSwgMjE5LCAKLSAgICAyNDUsIDE1NiwgMTM1LCAyNDYsIDE2LCAyMTAsIDE5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgODcsIDIxMCwgCi0gICAgMTk3LCAyMTAsIDE5OCwgODcsIDIxMCwgMjQ0LCAyMTAsIDI0NSwgODcsIDIxMCwgMjQ0LCAyMTAsIDE5OCwgODcsIDIxMCwgCi0gICAgMTk3LCAyMTAsIDE5OCwgMjQ4LCAxMTAsIDIxMCwgMjQ0LCAyMTAsIDE5OCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAyNDcsIAotICAgIDEzNywgMjQ0LCAxNDUsIDMsIDIxMCwgMjQ0LCAyNDEsIDExNSwgNzYsIDIyMCwgMSwgMjQyLCA2OCwgMjE4LCAxMDQsIDMsIAotICAgIDIwOSwgMTc3LCAyMDgsIDE0NCwgMjA4LCAxMDIsIDIzMCwgMjQ0LCAyMzksIDE2MCwgMjIxLCAxODEsIDIxMiwgMjI4LCA0OSwgCi0gICAgMjEwLCAzLCAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDIxMiwgMjI4LCAxMTIsIDIxMCwgMywgMjE4LCAyMzQsIDMsIDE5NCwgCi0gICAgODAsIDI0OCwgMjMxLCAyMDgsIDcwLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDQ5LCAyMDcsIDE3MywgODAsIAotICAgIDI0OCwgMjMxLCA1MiwgNDksIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNDksIDIwNywgMTczLCAxNjMsIDI0NCwgCi0gICAgMTQ1LCAyMzksIDEyMCwgNDksIDIyNCwgMjQ1LCA3NiwgNTIsIDIwNiwgMzgsIDIxMiwgMjI4LCAxMjEsIDIxMCwgNCwgMywgCi0gICAgMjE5LCAyMDMsIDIxMiwgMjI4LCAxMTIsIDIxMCwgNCwgMywgMjA2LCAyNDYsIDIxMiwgMjI4LCAxMTIsIDIxMCwgNCwgODcsIAotICAgIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgNTIsIDEyMSwgMjEwLCAzLCA1MiwgMTEyLCAyMTAsIDMsIDUyLCAyMTEsIDMyLCAKLSAgICAyMjEsIDE2NiwgNTQsIDIxNiwgNzMsIDUyLCAyMTEsIDMyLCAyMjEsIDE2NiwgNTQsIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjQzLCAxNDQsIDMsIDIxNiwgNzMsIDIyMiwgMjMzLCAyMTIsIDU3LCA4MCwgMjI3LCAxMTUsIDMsIDI0NiwgNjIsIDU1LCAKLSAgICA4MCwgMjI3LCAxMTUsIDMsIDI0NiwgNjIsIDU2LCAxMjEsIDIxMCwgNCwgMywgMjQ2LCA2MiwgNTYsIDIxOSwgODIsIDMsIAotICAgIDIzNiwgMTA2LCA5NSwgMjE5LCA4MiwgMywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDI0OCwgCi0gICAgNjcsIDIxNiwgMTE3LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMjA4LCA3MCwgMjQ1LCAyNDMsIAotICAgIDIxOSwgMjU0LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjI3LCAxNzgsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMzcsIDI0NiwgMjQyLCAKLSAgICA3NiwgMjEyLCA1OSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQyLCA3NiwgMjEyLCA1OSwgMjM3LCAyNDcsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjEyLCAxLCAyNDgsIDY3LCAyMTYsIDExNywgMjI4LCA4LCAyMDgsIDcwLCAKLSAgICA4MCwgMjQ4LCAyMzEsIDIxOSwgMjU0LCA1MiwgMjEyLCAxLCAyMTksIDI1NCwgNjEsIDgwLCAxNDIsIDIyMywgMTYyLCA2MSwgCi0gICAgODAsIDE0MiwgMTUzLCAyNDEsIDE3NiwgNjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDYxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA2MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MSwgNDcsIDQ5LCA1MCwgNjEsIDQ3LCA5NiwgNjIsIDQ3LCAxNzcsIDYyLCAKLSAgICA0NywgMTgzLCA2MiwgNDcsIDE1MywgMjQxLCAxNzYsIDYyLCA0NywgMTUzLCAyMDQsIDQ2LCA2MiwgNDcsIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgNjIsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjIsIDQ3LCA0OSwgNTAsIDYyLCA0NywgMTEyLCAxMjEsIAotICAgIDYyLCA0NywgODYsIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAKLSAgICA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDk2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA1MSwgMywgMjA4LCAxNDUsIAotICAgIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDI0MywgCi0gICAgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAKLSAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDIwOCwgCi0gICAgMTQ1LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCAyNDIsIDgzLCAyMTEsIAotICAgIDE3NywgNjIsIDIyOCwgOCwgMjExLCAxNzcsIDYxLCAyMjgsIDgsIDIxMSwgMTc3LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCi0gICAgMTc3LCA2MSwgMjA1LCAyNDIsIDUsIDIxMSwgMTc3LCA2MiwgMjE4LCAyNTUsIDYxLCAyMTgsIDI1NSwgNjEsIDIzNywgMTcsIAotICAgIDYyLCAyMzcsIDE3LCAyMzYsIDEwNiwgNjIsIDIzNywgMTcsIDYyLCAyMjgsIDgsIDI0NiwgNjEsIDYyLCAyMjUsIDEwLCAKLSAgICAyNDMsIDIyMSwgNjEsIDIyNSwgMTAsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgMjI2LCAyNDYsIDYxLCAyMjUsIDEwLCAyMjYsIAotICAgIDI0NiwgNjIsIDUsIDI0MywgMjIxLCA2MiwgNSwgMjI2LCAyNDYsIDYxLCA1LCAyMjYsIDI0NiwgNjIsIDIzNiwgMTA2LCAKLSAgICAyNDEsIDEwOSwgNjEsIDIzNiwgMTA2LCAyNDEsIDEwOSwgNjIsIDgwLCAyNDEsIDEwOSwgNjEsIDgwLCAyNDEsIDEwOSwgNDksIAotICAgIDUzLCAzLCA1LCAyNDYsIDYxLCAxMjYsIDk2LCAyNTAsIDkxLCA0OSwgNTMsIDMsIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCAKLSAgICAyMTEsIDE3MSwgNDcsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCAKLSAgICA5NSwgOTYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDIwNywgMTM0LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIAotICAgIDk2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgOTYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgNTMsIDMsIAotICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgOTYsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKLSAgICA1MywgMjA5LCAyNSwgMjAzLCAxOTYsIDIwNCwgNzYsIDUzLCAyMTgsIDU5LCAyNDMsIDE2NCwgMjI3LCAyMjIsIDI0MSwgMzUsIAotICAgIDIsIDg3LCA5NiwgNDcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDk2LCA0NywgOTYsIDUzLCA4NywgMjE2LCAKLSAgICA3NCwgMjUxLCA3LCAxNTYsIDEzNSwgODYsIDUzLCAyMDksIDI1LCAyMzcsIDI0NiwgODYsIDUzLCAyMDksIDI1LCAyMTAsIAotICAgIDE5NywgOTYsIDIxNywgNTgsIDQ3LCA4NiwgMjE3LCA1OCwgNDcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAotICAgIDg2LCA0NywgODYsIDUzLCA4NywgMjE2LCA3NCwgMjUxLCA3LCAxNTYsIDEzNSwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCi0gICAgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCA5NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTQsIDg2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NCwgMTgzLCAyMDgsIDg0LCAyMDIsIDMwLCA0NywgCi0gICAgMjEyLCAyMjgsIDIxMiwgNTksIDE1MywgNDcsIDIxMiwgMjI4LCAyNDksIDIyLCAyMTEsIDIzOCwgNDcsIDYxLCAyMjUsIDEwLCAKLSAgICAyMTEsIDk0LCA2MiwgNSwgMjExLCA5NCwgNjEsIDUsIDIxMSwgOTQsIDYyLCAyMTYsIDExLCAyMTgsIDI1NSwgNjEsIDIxNiwgCi0gICAgMTEsIDIxOCwgMjU1LCA3OSwgMjI4LCA4LCAyNDYsIDYxLCA3OSwgMjE5LCAyMDUsIDMsIDIxOSwgMjA1LCAyMzEsIDYsIDc5LCAKLSAgICAyNDYsIDYyLCAzLCAyNDYsIDYyLCAyMzEsIDYsIDc5LCAyNDYsIDYxLCA3OSwgNDMsIDIxNCwgMjU0LCAyMTIsIDU5LCAxNTMsIAotICAgIDUzLCAzLCAyMzYsIDExNSwgMjM3LCA2NCwgMjQ5LCAyMiwgMjExLCAyMzgsIDUzLCAzLCAyMzYsIDExNSwgMjA5LCAyNDgsIAotICAgIDIxMiwgNTksIDE1MywgNTMsIDMsIDIzNiwgMTA2LCAyMDksIDI0OCwgMjQ5LCAyMiwgMjExLCAyMzgsIDUzLCAzLCAyMzYsIAotICAgIDEwNiwgMjA5LCAyNDgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCAyMTIsIAotICAgIDIyOCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDk2LCAyMDgsIDg0LCA0NywgCi0gICAgMTc3LCAyMDgsIDg0LCA0NywgODYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDQ3LCA0OSwgNTAsIDIwOCwgODQsIDQ3LCAKLSAgICAxMTIsIDEyMSwgMjA4LCA4NCwgNDcsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNDcsIDE1MywgMjQxLCAxNzYsIDIwOCwgODQsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNDcsIDk2LCAKLSAgICAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDE3NywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCA4NiwgMjA4LCA4NCwgMjQ0LCAxNDMsIAotICAgIDQ3LCAxODMsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMjQ2LCAxOCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgMjUwLCAKLSAgICAxOTQsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDk2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMDgsIAotICAgIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxODMsIDIwOCwgODQsIDUzLCAKLSAgICAyMDgsIDE3MywgMTQyLCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNTMsIDI0MSwgMTc2LCAKLSAgICAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIAotICAgIDE0MiwgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIAotICAgIDUyLCAyMzYsIDEwNiwgOTUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCi0gICAgMywgNTIsIDIzNiwgMTA2LCA5NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgMjM2LCAxMDYsIAotICAgIDIxMCwgMTEsIDIyOSwgMTUxLCA4MCwgMjEwLCAxMSwgMjI5LCAxNTEsIDk2LCAyMDgsIDg0LCA1MywgMTE1LCA4NiwgMjA4LCAKLSAgICA4NCwgNDcsIDE3NywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTgzLCAyMDgsIDg0LCA0NywgODYsIDIwOCwgODQsIDUzLCAxMTUsIAotICAgIDk2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxNzcsIDIwOCwgODQsIDQ3LCA5NiwgMjA4LCA4NCwgCi0gICAgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDg2LCAyMDgsIDg0LCAyMTksIAotICAgIDE0NiwgMjUwLCA5MSwgMTgzLCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDYyLCA0MywgNjEsIDQ3LCAxNzcsIAotICAgIDYyLCA0MywgNjEsIDQ3LCA4NiwgNjIsIDQzLCA2MSwgNDcsIDE4MywgNjIsIDQzLCA2MSwgNDcsIDI1MCwgMTk0LCAyMDgsIAotICAgIDg0LCA1MCwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAyMDgsIDg0LCAyNDcsIDI0OCwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAKLSAgICAyMDgsIDg0LCA0OSwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAyMDgsIDg0LCAyMDgsIDE0NSwgMjA3LCA5MiwgNDcsIDIxNiwgCi0gICAgNzgsIDIyNywgMjIyLCAyMTYsIDc4LCAyMTYsIDE2LCAyMjIsIDIxMiwgMjI3LCAyMjIsIDIyMiwgMjEyLCAyMTYsIDE2LCAKLSAgICAyMzksIDE0NywgMjQ1LCAxNjYsIDI1MCwgOTIsIDI0NiwgNTcsIDI1MCwgMTkzLCA4NiwgNjIsIDQ3LCAyMDksIDMxLCAyMDgsIAotICAgIDE0MywgOTYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIxNiwgMTIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAKLSAgICAzMSwgMjA4LCAxNDMsIDg2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMjcsIDIxOCwgMTgzLCAyNDEsIDMxLCAyNTAsIAotICAgIDk0LCA2MiwgOTYsIDI0MSwgMzEsIDI1MCwgOTQsIDYyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDYyLCA4NiwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNjIsIDE4MywgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgCi0gICAgMjI3LCAyMTIsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIxNiwgNSwgMTc3LCAyMDgsIDg0LCA1MywgCi0gICAgMywgMTYzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIxNiwgNSwgCi0gICAgOTYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMDYsIDIxMiwgODYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIAotICAgIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA5NiwgNDcsIDYyLCAyNDUsIAotICAgIDg2LCAxODMsIDI1LCA4NiwgNDcsIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA5NiwgNDcsIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCAKLSAgICA4NiwgNDcsIDYyLCAyNDUsIDg2LCA5NiwgMjUsIDE3NywgNDcsIDYyLCAyNDUsIDg2LCA4NiwgMjUsIDE3NywgNDcsIDYyLCAKLSAgICAyNDUsIDg2LCA5NiwgMjUsIDE4MywgNDcsIDYyLCAyNDUsIDg2LCA4NiwgMjUsIDE4MywgNDcsIDIxNiwgNTUsIDUzLCAxMjEsIAotICAgIDIyNywgMjIyLCAyMTYsIDU1LCA1MywgMTIxLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgMTEyLCAyMjcsIDIyMiwgMjE2LCA1NSwgCi0gICAgNTMsIDExMiwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDQ5LCAyMDYsIDIyNCwgMjE2LCA1NSwgNTMsIDUwLCAyMDYsIDIyNCwgCi0gICAgMjE2LCA1NSwgNTMsIDQ5LCAyNDIsIDcwLCAyMTYsIDU1LCA1MywgNTAsIDI0MiwgNzAsIDE3NywgNjEsIDUzLCAyMzksIAotICAgIDEyMCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCAxNDIsIDExMiwgMjUwLCA5NSwgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAKLSAgICAyNDcsIDIzMywgMjQ4LCAyNDgsIDk4LCAzLCAxNTcsIDIwMywgMTk2LCA0MywgMjAzLCAxOTYsIDQzLCAyNiwgMjAzLCAxOTYsIAotICAgIDYyLCA1MSwgMjQ2LCAyMTUsIDYyLCAyNDMsIDIyMiwgMjQ2LCAyMTUsIDIwNywgMTc0LCA2MiwgMjE4LCAyNTUsIDIzNiwgCi0gICAgMTA2LCA2MiwgMjIwLCA4MSwgNjIsIDIyMCwgODEsIDYyLCAyMjUsIDEwLCAyMDYsIDIyMywgMjA4LCA4NiwgMjQ2LCAyMTUsIAotICAgIDYyLCAyMjUsIDEwLCAyNDIsIDY5LCAyMDgsIDg2LCAyNDYsIDIxNSwgNjIsIDIyNSwgMTAsIDIyNywgMjE3LCAyMDgsIDg2LCAKLSAgICAyNDYsIDIxNSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODYsIDI0NiwgMjE1LCAyMDgsIDE0NSwgMTYyLCA2MiwgCi0gICAgMjQ2LCA2MSwgMjQ3LCAyNDgsIDE2MiwgNjIsIDI0NiwgNjEsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCAKLSAgICAyMTUsIDE5OCwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgCi0gICAgMjQ1LCA4MiwgMjE1LCAxOTgsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjQ1LCA4MiwgNTEsIDIxOCwgMzQsIDIzMSwgMzEsIAotICAgIDIwNiwgMjUwLCA1NCwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTc3LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOCwgODYsIDI1MCwgOTMsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MywgMjA3LCAKLSAgICAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODAsIDYsIDEsIDI1MCwgMCwgMTgwLCA2LCAxLCAyNDcsIDE4MSwgCi0gICAgMTgwLCA2LCAxLCAyMDYsIDUzLCAxODAsIDYsIDEsIDIzOCwgNTAsIDE4MCwgNiwgMSwgMjQzLCAxMDgsIDE4MCwgNiwgMSwgCi0gICAgMjAzLCAyNCwgMTgwLCA2LCAxLCAyMDIsIDY0LCAxODAsIDYsIDEsIDI0MSwgMjUwLCAxODAsIDYsIDEsIDIwMiwgODksIAotICAgIDE4MCwgNiwgMSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgODEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDc1LCAxODAsIDYsIDEsIAotICAgIDI0MywgMTI4LCAxODAsIDYsIDEsIDIzMCwgMTAsIDE4MCwgNiwgMSwgMjI3LCA3OSwgMTgwLCA2LCAxLCAyMjMsIDE2NywgCi0gICAgMTgwLCA2LCAxLCAyMjMsIDY5LCAxODAsIDYsIDEsIDIyMCwgMjAsIDE4MCwgNiwgMSwgMjE4LCA1NiwgMTgwLCA2LCAxLCAKLSAgICAyMTUsIDI0NCwgMTgwLCA2LCAxLCAyMTIsIDQxLCAxODAsIDYsIDEsIDIwNywgMTYxLCAxODAsIDYsIDEsIDIwNywgMTAsIAotICAgIDE4MCwgNiwgMSwgMjM5LCAxMjMsIDE4MCwgNiwgMSwgMjM3LCAyMywgMTgwLCA2LCAxLCAyMTksIDIxNywgMTgwLCA2LCAxLCAKLSAgICAyMTksIDM0LCAxODAsIDYsIDEsIDIxMiwgMjAyLCAxODAsIDYsIDEsIDIwNywgMjU1LCAxODAsIDYsIDEsIDI0NiwgMTA0LCAKLSAgICAxODAsIDYsIDEsIDIxMywgOTAsIDE4MCwgNiwgMSwgMjAzLCAzMCwgMTgwLCA2LCAxLCAyMDMsIDMyLCAxODAsIDYsIDEsIAotICAgIDIwMywgNjQsIDE4MCwgNiwgMSwgMjExLCAyMDQsIDE1MiwgMTgwLCA2LCAxLCAyMDIsIDIxMywgMTgwLCA2LCAxLCA1LCAKLSAgICAyMDIsIDE4MywgMTgwLCA2LCAxLCA1LCAyMDIsIDE4NCwgMywgMjA5LCAyNDgsIDE4MCwgNiwgMSwgMjAyLCAyNDcsIDE4MCwgCi0gICAgNiwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIAotICAgIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyMzksIDIzNSwgMTgwLCA2LCAxLCAyMzAsIDE4NiwgCi0gICAgMTgwLCA2LCAxLCAyMTIsIDIwMSwgMTgwLCA2LCAxLCAyMDgsIDYwLCA2MywgMTgwLCA2LCAxLCAyMjcsIDI1MiwgMjIzLCAKLSAgICAxNjcsIDE4MCwgNSwgMSwgMjUwLCAwLCAxODAsIDUsIDEsIDI0NywgMTgxLCAxODAsIDUsIDEsIDIwNiwgNTMsIDE4MCwgNSwgCi0gICAgMSwgMjM4LCA1MCwgMTgwLCA1LCAxLCAyNDMsIDEwOCwgMTgwLCA1LCAxLCAyMDMsIDI0LCAxODAsIDUsIDEsIDIwMiwgNjQsIAotICAgIDE4MCwgNSwgMSwgMjQxLCAyNTAsIDE4MCwgNSwgMSwgMjAyLCA4OSwgMTgwLCA1LCAxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCAKLSAgICA4MSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgNzUsIDE4MCwgNSwgMSwgMjQzLCAxMjgsIDE4MCwgNSwgMSwgMjMwLCAxMCwgCi0gICAgMTgwLCA1LCAxLCAyMjcsIDc5LCAxODAsIDUsIDEsIDIyMywgMTY3LCAxODAsIDUsIDEsIDIyMywgNjksIDE4MCwgNSwgMSwgCi0gICAgMjIwLCAyMCwgMTgwLCA1LCAxLCAyMTgsIDU2LCAxODAsIDUsIDEsIDIxNSwgMjQ0LCAxODAsIDUsIDEsIDIxMiwgNDEsIAotICAgIDE4MCwgNSwgMSwgMjA3LCAxNjEsIDE4MCwgNSwgMSwgMjA3LCAxMCwgMTgwLCA1LCAxLCAyMzksIDEyMywgMTgwLCA1LCAxLCAKLSAgICAyMzcsIDIzLCAxODAsIDUsIDEsIDIxOSwgMjE3LCAxODAsIDUsIDEsIDIxOSwgMzQsIDE4MCwgNSwgMSwgMjEyLCAyMDIsIAotICAgIDE4MCwgNSwgMSwgMjA3LCAyNTUsIDE4MCwgNSwgMSwgMjQ2LCAxMDQsIDE4MCwgNSwgMSwgMjEzLCA5MCwgMTgwLCA1LCAxLCAKLSAgICAyMDMsIDMwLCAxODAsIDUsIDEsIDIwMywgMzIsIDE4MCwgNSwgMSwgMjAzLCA2NCwgMTgwLCA1LCAxLCAyMTEsIDIwNCwgCi0gICAgMTUyLCAxODAsIDUsIDEsIDIwMiwgMjEzLCAxODAsIDUsIDEsIDUsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDUsIDIwMiwgMTg0LCAKLSAgICAzLCAyMDksIDI0OCwgMTgwLCA1LCAxLCAyMDIsIDI0NywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgCi0gICAgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIAotICAgIDEsIDIzOSwgMjM1LCAxODAsIDUsIDEsIDIzMCwgMTg2LCAxODAsIDUsIDEsIDIxMiwgMjAxLCAxODAsIDUsIDEsIDIwOCwgCi0gICAgNjAsIDYzLCAxODAsIDUsIDEsIDIyNywgMjUyLCAyMjMsIDE2NywgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAzNCwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzNywgCi0gICAgMTcyLCAzLCAyNDQsIDIwLCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDQsIAotICAgIDIwLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDI1MSwgMiwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDExMywgOCwgNiwgMSwgMjA3LCAxNzQsIDYzLCA4LCA2LCAxLCAKLSAgICAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgNTAsIDExMywgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIAotICAgIDExMywgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDExMywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0NSwgOTUsIDgsIDYsIDEsIAotICAgIDE2MiwgMjM3LCAxNzEsIDgsIDUsIDEsIDE2MiwgMjM3LCAxNzEsIDgsIDUsIDEsIDIwOSwgMjQ2LCAyMTgsIDE5MiwgOCwgNSwgCi0gICAgMSwgMTg4LCAzLCAyMjEsIDE2MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMTI0LCAyMTUsIDI1MywgMjMxLCA2LCA4LCAxLCA1LCA2LCAyMDcsIDE3NCwgNzQsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMzAsIDE4NCwgNjUsIDEsIDYsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIAotICAgIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIDg0LCA2LCAxLCAyNTEsIDI0LCA4NCwgNSwgMSwgCi0gICAgMjUxLCAyNCwgODQsIDYsIDEsIDIwNSwgMjI3LCA4NCwgNSwgMSwgMjA1LCAyMjcsIDg0LCA2LCAxLCAyMzgsIDIzNSwgODQsIAotICAgIDUsIDEsIDIzOCwgMjM1LCA4NCwgNiwgMSwgMjQ0LCAxODAsIDg0LCA1LCAxLCAyNDQsIDE4MCwgODQsIDYsIDEsIDI0MSwgCi0gICAgMTQ0LCA4NCwgNSwgMSwgMjQxLCAxNDQsIDg0LCA2LCAxLCAyMTEsIDI0MywgODQsIDUsIDEsIDIxMSwgMjQzLCA4NCwgNiwgCi0gICAgMSwgMjAyLCA5OSwgODQsIDUsIDEsIDIwMiwgOTksIDg0LCA2LCAxLCAyMzcsIDgwLCA4NCwgNSwgMSwgMjM3LCA4MCwgODQsIAotICAgIDYsIDEsIDIwOSwgNzIsIDg0LCA1LCAxLCAyMDksIDcyLCA4NCwgNiwgMSwgMjM1LCAxNjgsIDg0LCA1LCAxLCAyMzUsIDE2OCwgCi0gICAgODQsIDYsIDEsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjI5LCAyNTIsIDg0LCA2LCAxLCAyMjcsIDI0OCwgODQsIDUsIDEsIAotICAgIDIyNywgMjQ4LCA4NCwgNiwgMSwgMjI0LCAxNTUsIDg0LCA1LCAxLCAyMjQsIDE1NSwgODQsIDYsIDEsIDIyMiwgMTAwLCA4NCwgCi0gICAgNSwgMSwgMjIyLCAxMDAsIDg0LCA2LCAxLCAyMjgsIDIyNSwgODQsIDUsIDEsIDIyOCwgMjI1LCA4NCwgNiwgMSwgNzgsIDg0LCAKLSAgICA1LCAxLCA3OCwgODQsIDYsIDEsIDIxOCwgMTY3LCA4NCwgNSwgMSwgMjE4LCAxNjcsIDg0LCA2LCAxLCAyMTUsIDIyNywgODQsIAotICAgIDUsIDEsIDIxNSwgMjI3LCA4NCwgNiwgMSwgMjEyLCAxMzIsIDg0LCA1LCAxLCAyMTIsIDEzMiwgODQsIDYsIDEsIDIwOSwgCi0gICAgMjA3LCA4NCwgNSwgMSwgMjA5LCAyMDcsIDg0LCA2LCAxLCAyMDcsIDM5LCA4NCwgNSwgMSwgMjA3LCAzOSwgODQsIDYsIDEsIAotICAgIDI0MCwgMjYsIDg0LCA1LCAxLCAyNDAsIDI2LCA4NCwgNiwgMSwgMjI5LCAxMjIsIDg0LCA1LCAxLCAyMjksIDEyMiwgODQsIAotICAgIDYsIDEsIDIxNywgMjAyLCA4NCwgNSwgMSwgMjE3LCAyMDIsIDg0LCA2LCAxLCAyMjAsIDEyLCA4NCwgNSwgMSwgMjIwLCAxMiwgCi0gICAgODQsIDYsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA2LCAxLCAzOCwgCi0gICAgODQsIDI1MSwgNTksIDg0LCA1LCAxLCAzOCwgODQsIDI1MSwgNTksIDg0LCA2LCAxLCAyNDUsIDExMywgMjQxLCAxNDQsIDg0LCAKLSAgICA1LCAxLCAyNDUsIDExMywgMjQxLCAxNDQsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyNDMsIAotICAgIDIyNiwgMjI5LCAyNTIsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjIyLCAxMDAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjIyLCAKLSAgICAxMDAsIDg0LCA2LCAxLCAyNDUsIDExMywgMjIyLCAxMDAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjIyLCAxMDAsIDg0LCA2LCAKLSAgICAxLCAzOCwgODQsIDIyMCwgMTIsIDg0LCA1LCAxLCAzOCwgODQsIDIyMCwgMTIsIDg0LCA2LCAxLCAyMTQsIDI0NiwgODQsIDUsIAotICAgIDEsIDIxNCwgMjQ2LCA4NCwgNiwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgCi0gICAgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAzNSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAzNSwgODQsIDYsIDEsIDM4LCA4NCwgCi0gICAgMjQxLCA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyNDEsIDcsIDg0LCA2LCAxLCAyNTEsIDQzLCAyMjksIDEyNywgODQsIDUsIDEsIAotICAgIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIzNiwgCi0gICAgMTA3LCA4NCwgNiwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDUsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA2LCAxLCAKLSAgICAzOCwgODQsIDE1MiwgODQsIDUsIDEsIDM4LCA4NCwgMTUyLCA4NCwgNiwgMSwgMjI4LCAxMzAsIDE1MiwgODQsIDUsIDEsIAotICAgIDIyOCwgMTMwLCAxNTIsIDg0LCA2LCAxLCAzOCwgODQsIDIzNywgNDIsIDg0LCA1LCAxLCAzOCwgODQsIDIzNywgNDIsIDg0LCAKLSAgICA2LCAxLCAzOCwgODQsIDIzNywgODMsIDg0LCA1LCAxLCAzOCwgODQsIDIzNywgODMsIDg0LCA2LCAxLCAzOCwgODQsIDIzOCwgCi0gICAgMjMwLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzgsIDIzMCwgODQsIDYsIDEsIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA1LCAxLCAKLSAgICAzOCwgODQsIDI0MywgMTMxLCA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIAotICAgIDYsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNiwgMSwgMzgsIAotICAgIDIyMSwgNTQsIDIyMiwgMTUxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIyMiwgMTUxLCA4NCwgNiwgMSwgMzgsIDIyMSwgCi0gICAgNTQsIDIyMCwgMjQ4LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIyMCwgMjQ4LCA4NCwgNiwgMSwgMzgsIDIyMSwgNTQsIAotICAgIDIwNCwgNzcsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjA0LCA3NywgODQsIDE2LCAyMzAsIDE4LCA4NCwgMTYsIDIyNCwgCi0gICAgMTU2LCAyMTUsIDIyNywgODQsIDE2LCAyMTgsIDE2OCwgMjE1LCAyMjcsIDg0LCAxNiwgMjExLCA4NSwgODQsIDE2LCAyMDksIAotICAgIDIwOCwgMjE1LCAyMjcsIDg0LCAxNiwgMjI5LCAxMjMsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMywgMiwgMjEyLCAxMzIsIDg0LCAKLSAgICA2LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIAotICAgIDIzOCwgMjMwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIzOCwgMjMwLCA4NCwgMzksIDIyMiwgMTAxLCA1NSwgODQsIDM5LCAKLSAgICAyMTEsIDE5NywgMjUwLCA2NywgODQsIDM5LCAyMTEsIDE5NywgMjI3LCAxODYsIDg0LCA2LCAxLCAyNDgsIDE2LCAyMjksIAotICAgIDEyNywgODQsIDUsIDEsIDI0OCwgMTYsIDIyOSwgMTI3LCA4NCwgMzgsIDIyMSwgNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgCi0gICAgMzgsIDIyMSwgNTQsIDI0MywgMTY3LCAyMTcsIDQ3LCA4MiwgODQsIDM4LCAyMjEsIDU0LCAyMzEsIDMwLCAyMTcsIDQ3LCAKLSAgICA4MiwgODQsIDM4LCAyMjEsIDU0LCAyMDYsIDQwLCAyNDMsIDE0MSwgODQsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCA4NCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAyMjQsIDI1LCAyNDMsIDE0MSwgMTE0LCA1LCAxLCAyNTAsIDIzMSwgMTE0LCA1LCAxLCAKLSAgICAyNDgsIDI0MiwgMTE0LCA1LCAxLCAyMzgsIDIzNCwgMTE0LCA1LCAxLCAyNDMsIDkzLCAxMTQsIDUsIDEsIDI0MSwgOTIsIAotICAgIDExNCwgNSwgMSwgMjA1LCAyMTMsIDExNCwgNSwgMSwgMjAyLCA4NywgMTE0LCA1LCAxLCAyMDksIDIzMCwgMTE0LCA1LCAxLCAKLSAgICAyMzEsIDQ5LCAxMTQsIDUsIDEsIDIzMCwgNCwgMTE0LCA1LCAxLCAyMjgsIDIsIDExNCwgNSwgMSwgMjI1LCAxMjIsIDExNCwgCi0gICAgNSwgMSwgMjIzLCA3NCwgMTE0LCA1LCAxLCAyMjAsIDMxLCAxMTQsIDUsIDEsIDIxOSwgOTEsIDExNCwgNSwgMSwgMjAyLCAKLSAgICA3NiwgMTE0LCA1LCAxLCAyMTYsIDIwMiwgMTE0LCA1LCAxLCAyMTQsIDI0MywgMTE0LCA1LCAxLCAyMDksIDIxOCwgMTE0LCAKLSAgICA1LCAxLCAyMDYsIDI1NSwgMTE0LCA1LCAxLCAyMTgsIDIwMCwgMTE0LCA1LCAxLCAyMjksIDEzMiwgMTE0LCA1LCAxLCAyMzgsIAotICAgIDExMCwgMTE0LCA1LCAxLCAyMTcsIDExMSwgMTE0LCA1LCAxLCAyMTIsIDI1NSwgMTE0LCA1LCAxLCAyNDYsIDEyOSwgMTE0LCAKLSAgICA1LCAxLCAyNDcsIDYxLCAxMTQsIDUsIDEsIDIzMCwgMTMzLCAxMTQsIDUsIDEsIDI0NiwgNjgsIDExNCwgNSwgMSwgMjQ2LCAKLSAgICAxODMsIDExNCwgNSwgMSwgMjAzLCAxODAsIDExNCwgNSwgMSwgMjMwLCAxNDYsIDExNCwgNSwgMSwgMjM3LCAxNTQsIDExNCwgCi0gICAgNSwgMSwgMjM3LCA2NywgMTE0LCA1LCAxLCAyMzYsIDI1NCwgMTE0LCA1LCAxLCAyMDQsIDYyLCAxMTQsIDUsIDEsIDIzNywgCi0gICAgOTIsIDExNCwgNSwgMSwgMjM2LCAxMzIsIDExNCwgNSwgMSwgMjAyLCAyNDksIDExNCwgNSwgMSwgMjUxLCA5OCwgMjA4LCAKLSAgICAyNDcsIDEsIDE5OCwgMjA4LCAyNDcsIDEsIDIwMywgMTA2LCAyMDgsIDI0NywgMSwgMjAzLCAxMDUsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDMsIDk1LCAyMDgsIDI0NywgMSwgMjAzLCA5MywgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgMjAzLCA4OCwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgODgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMywgMjA4LCAyNDcsIDEsIDIwMywgMTAwLCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCAxMDIsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMSwgMjA4LCAyNDcsIDEsIDIwMywgMTUsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDk3LCAyMDgsIDI0NywgMSwgMjAzLCA4NiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg2LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA4MywgMjA4LCAyNDcsIDEsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIAotICAgIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwMywgOTAsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDExMCwgMjA4LCAyNDcsIDEsIDIwMywgODQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NCwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwMywgMTEsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjUxLCA3MSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwNywgCi0gICAgMjAwLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjAzLCA4MiwgMjA4LCAyNDcsIDEsIDIwMywgODEsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDMsIDc4LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTIsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA3NiwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNzQsIDIwOCwgMjQ3LCAxLCAyMDIsIDIxMywgMjA4LCAyNDcsIDEsIDIwMywgNzEsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDcwLCAyMDgsIDI0NywgMSwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDk0LCAKLSAgICAyMDgsIDI0NywgMSwgMjUwLCA0LCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjAzLCA2OSwgMjA4LCAyNDcsIDEsIDIwMywgNjcsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDY4LCAyMDgsIDI0NywgMSwgMjAzLCA2NiwgMjA4LCAyNDcsIDEsIDIwMywgNjUsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDEwNCwgMjA4LCAyNDcsIDEsIDIwMywgNjMsIDIwOCwgMjQ3LCAxLCAyMDMsIDYxLCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCA2MCwgMjA4LCAyNDcsIDEsIDIwMywgNTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjA5LCAKLSAgICAxOTksIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDUzLCAyMDgsIDI0NywgMSwgMjAzLCA1MiwgMjA4LCAyNDcsIDEsIAotICAgIDIwMiwgMjQ3LCAyMDgsIDI0NywgNjUsIDEsIDIyOCwgMTAzLCA4MiwgMjA4LCAyNDcsIDIxMywgMTMxLCA4MiwgMjA4LCAKLSAgICAyNDcsIDEwOSwgMjMwLCA5NiwgMzMsIDQsIDIyNywgNDgsIDMzLCA0LCAyMjQsIDgxLCAzMywgNCwgMjE1LCAyMjUsIDMzLCAKLSAgICA0LCAyMTIsIDEyLCAzMywgNCwgMjEyLCAyNDEsIDMzLCA0LCAyNDgsIDIyLCAzMywgNCwgMjA4LCAxNzIsIDMzLCA0LCAyNDUsIAotICAgIDI1MywgMzMsIDQsIDIyMSwgMTg5LCAzMywgNCwgMjIwLCAyMzIsIDMzLCA0LCAyMzgsIDQ1LCAyMjAsIDk3LCAzMywgNCwgCi0gICAgMjAyLCAxNiwgMzMsIDQsIDI0MywgMTExLCAzMywgNCwgMjQ0LCA4OSwgMzMsIDQsIDIzMCwgMTAwLCAzMywgNCwgMjA5LCAKLSAgICA0NiwgMzMsIDQsIDI0NiwgMTE1LCAzMywgNCwgMjE4LCAxNzksIDMzLCA0LCAyMTgsIDY4LCAzMywgNCwgMjM4LCAxMjUsIAotICAgIDMzLCA0LCAyMzgsIDEyMSwgMzMsIDQsIDIzOCwgMTIyLCAzMywgNCwgMjM4LCAxMjMsIDMzLCA0LCAyMTEsIDE2NCwgMzMsIAotICAgIDQsIDIxMSwgMTE5LCAzMywgNCwgMjExLCAxMzIsIDMzLCA0LCAyMTEsIDE2MywgMzMsIDQsIDIxMSwgMTM3LCAzMywgNCwgCi0gICAgMjExLCAxMzgsIDMzLCA0LCAyMTEsIDEyNCwgMzMsIDQsIDI0NywgNSwgMzMsIDQsIDI0NiwgMjQwLCAzMywgNCwgMjQ2LCAKLSAgICAyNDIsIDMzLCA0LCAyNDcsIDQsIDMzLCA0LCAyNDcsIDIsIDMzLCA0LCAyNDcsIDMsIDMzLCA0LCAyNDYsIDI0MSwgMzMsIDQsIAotICAgIDIwMSwgMjM1LCAzMywgNCwgMjAxLCAyMTMsIDMzLCA0LCAyMDEsIDIyNiwgMzMsIDQsIDIwMSwgMjM0LCAzMywgNCwgMjAxLCAKLSAgICAyMjksIDMzLCA0LCAyMDEsIDIzMCwgMzMsIDQsIDIwMSwgMjE4LCAzMywgNCwgMjQ3LCAwLCAzMywgNCwgMjQ2LCAyNDMsIAotICAgIDMzLCA0LCAyNDYsIDI0NSwgMzMsIDQsIDI0NiwgMjU1LCAzMywgNCwgMjQ2LCAyNTMsIDMzLCA0LCAyNDYsIDI1NCwgMzMsIAotICAgIDQsIDI0NiwgMjQ0LCAzMywgNCwgMjE3LCAxMywgMzMsIDQsIDIxNywgMywgMzMsIDQsIDIxNywgOSwgMzMsIDQsIDIxNywgCi0gICAgMTIsIDMzLCA0LCAyMTcsIDEwLCAzMywgNCwgMjE3LCAxMSwgMzMsIDQsIDIxNywgOCwgMzMsIDQsIDIyOCwgMTQxLCAzMywgCi0gICAgNCwgMjI4LCAxMzMsIDMzLCA0LCAyMjgsIDEzNiwgMzMsIDQsIDIyOCwgMTQwLCAzMywgNCwgMjI4LCAxMzcsIDMzLCA0LCAKLSAgICAyMjgsIDEzOCwgMzMsIDQsIDIyOCwgMTM0LCAzMywgNCwgMjAzLCAxNDAsIDMzLCA0LCAyMDMsIDEyNywgMzMsIDQsIDIwMywgCi0gICAgMTM1LCAzMywgNCwgMjAzLCAxMzksIDMzLCA0LCAyMDMsIDEzNywgMzMsIDQsIDIwMywgMTM4LCAzMywgNCwgMjAzLCAxMzQsIAotICAgIDMzLCA0LCAyMzcsIDE4MywgMzMsIDQsIDIzNywgMTczLCAzMywgNCwgMjM3LCAxNzYsIDMzLCA0LCAyMzcsIDE4MiwgMzMsIAotICAgIDQsIDIzNywgMTc4LCAzMywgNCwgMjM3LCAxNzksIDMzLCA0LCAyMzcsIDE3NSwgMzksIDM2LCAxLCAyNDgsIDE2MiwgMzksIAotICAgIDM2LCAxLCAyMDYsIDU1LCAzOSwgMzYsIDEsIDIzOCwgMTA1LCAzOSwgMzYsIDEsIDI0NCwgNzUsIDM5LCAzNiwgMSwgMjAyLCAKLSAgICA3MSwgMzksIDM2LCAxLCAyMDIsIDkyLCAzOSwgMzYsIDEsIDE3MywgMzksIDM2LCAxLCAyNDEsIDEyMiwgMzksIDM2LCAxLCAKLSAgICAyNDEsIDEwMywgMzksIDM2LCAxLCAyNDEsIDkyLCAzOSwgMzYsIDEsIDc4LCAzOSwgMzYsIDEsIDIxOSwgMzQsIDM5LCAzNiwgCi0gICAgMSwgMjQxLCAyOCwgMzksIDM2LCAxLCAyNDEsIDE3LCAzOSwgMzYsIDEsIDIwOSwgMTg3LCAzOSwgMzYsIDEsIDE1MiwgMzksIAotICAgIDM2LCAxLCAyMDgsIDE0LCAzOSwgMzYsIDEsIDI0NiwgMTcwLCAzOSwgMzYsIDEsIDIxMywgOTAsIDM5LCAzNiwgMSwgMjEzLCAKLSAgICA0NiwgMzksIDM2LCAxLCAyMzksIDIzNSwgMzksIDM2LCAxLCAyNDEsIDEzLCAzOSwgMzYsIDEsIDYzLCAzOSwgMzYsIDEsIAotICAgIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDI0MywgMTI5LCAzOSwgMzYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM5LCAzNiwgMSwgCi0gICAgMjAzLCA2NiwgMzksIDM2LCAxLCAyMDIsIDIxMywgMzksIDM2LCAxLCAyMzAsIDIyOCwgNjMsIDM5LCAzNiwgMSwgMjI3LCAKLSAgICA4NiwgMjAyLCAxODMsIDM5LCAzNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDI0OCwgNzMsIAotICAgIDIwMiwgMTgzLCA1MCwgMjUwLCAyMTgsIDIxMCwgMjQxLCAyMjUsIDg4LCA1MCwgMjUwLCAyMTgsIDI0MiwgODMsIDIxMCwgCi0gICAgMjQxLCAyMjUsIDg4LCA0OSwgMjEwLCAyNDEsIDE1NSwgNTAsIDIxMCwgMjQxLCAxNTUsIDQ5LCAyNDIsIDgzLCAyMTAsIAotICAgIDI0MSwgMTU1LCA1MCwgMjQyLCA4MywgMjEwLCAyNDEsIDE1NSwgMjE2LCAxODgsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyMTYsIAotICAgIDE4OCwgMjQyLCA4MywgMjMwLCAyNDksIDIyNSwgODgsIDI0MiwgODMsIDIwOCwgMTAzLCAyMjUsIDg4LCA0OSwgMjA4LCAKLSAgICAxMDMsIDE1NSwgNTAsIDIwOCwgMTAzLCAxNTUsIDIxNiwgMTg4LCAyMTEsIDE3NywgNDksIDIxNiwgMTg4LCAyMjAsIDMzLCAKLSAgICAxNTUsIDUwLCAyMTYsIDE4OCwgMjIwLCAzMywgMTU1LCAyNDEsIDE2MiwgMjQ1LCAxNjMsIDIxOSwgODcsIDIzOSwgMTYxLCAKLSAgICAyMTksIDg3LCAyMTYsIDczLCAyMzksIDE2MSwgMjE5LCA4NywgMjM1LCAyMTcsIDI0MiwgODMsIDIyMCwgOTIsIDE4MywgCi0gICAgMjUwLCAyMjcsIDE3NywgMjUwLCAyMjcsIDI0MiwgODMsIDIxNiwgMTEsIDI1MCwgMjE3LCA1MiwgMjIwLCA4OSwgMjM1LCAKLSAgICAyMjAsIDIzMCwgMjM5LCAyMzAsIDI0NywgMjE5LCAxMzUsIDI0NywgMjIzLCAyMzUsIDIyMSwgMywgMjQzLCAyMzEsIDIwOCwgCi0gICAgMjI4LCAzLCAyMTUsIDI1MywgNTUsIDQ5LCAxMjQsIDIxOSwgNzksIDE1NSwgNTAsIDEyNCwgMjE5LCA3OSwgMTU1LCAyMDgsIAotICAgIDIyOCwgMywgNzAsIDU1LCAyMDgsIDIyOCwgMywgNzAsIDU2LCA0OSwgODAsIDI0OCwgMjMxLCAzLCAyMTcsIDQxLCA1MCwgCi0gICAgODAsIDI0OCwgMjMxLCAzLCAyMTcsIDQxLCAyMDgsIDE0NSwgNDksIDE2MiwgMTU1LCAyMDgsIDE0NSwgNTAsIDE2MiwgMTU1LCAKLSAgICAyNDcsIDI0OCwgNDksIDE2MiwgMTU1LCAyNDcsIDI0OCwgNTAsIDE2MiwgMTU1LCA0OSwgMjEyLCAxNTQsIDEwNiwgMTU1LCAKLSAgICA1MCwgMjEyLCAxNTQsIDEwNiwgMTU1LCA0OSwgNTIsIDIxOSwgNzYsIDUwLCA1MiwgMjE5LCA3NiwgMTIwLCAxODcsIDExNSwgCi0gICAgMTE4LCA3MCwgMjE3LCAxNzgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIDIxNywgMTc4LCAxMDMsIDIzOSwgMTQ3LCA3MCwgCi0gICAgMjE3LCAxNzgsIDIzOSwgMjMzLCA3MCwgODIsIDIxNiwgNzMsIDIxNywgNDcsIDgyLCA4MCwgMjA4LCAyMjcsIDIxNSwgMjUzLCAKLSAgICAyMTgsIDYyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDEwMSwgMjQzLCA4NSwgMjA3LCAxNzQsIDI0NSwgMjMzLCAyMTYsIDE4OCwgCi0gICAgMjQzLCA4NSwgMjE2LCAxODgsIDI0NSwgMjMzLCAyMDcsIDE3NCwgMjEzLCAxNDMsIDI0NCwgMTk2LCAzLCA0OSwgMjM3LCAKLSAgICAyMjQsIDI0NCwgMTk2LCAzLCA1MCwgMjM3LCAyMjQsIDIwNywgMTc0LCAyNDQsIDE5NSwgMjA4LCAxNDUsIDE2MiwgMjE0LCAKLSAgICAxNjgsIDU0LCAyMDcsIDEzNSwgMjQ0LCAxNDQsIDIwOSwgMzAsIDI0NCwgMTQ0LCAyMTEsIDc2LCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgODAsIDIxMiwgODgsIDI0MywgODMsIDIwNCwgMjEsIDgwLCAyMjcsIDExNCwgMjQ3LCA0NiwgNTIsIDIzNSwgMjIwLCAKLSAgICAyMTYsIDczLCAyNDUsIDIzMywgNTIsIDIyNiwgMjUyLCAyMTcsIDMxLCA4MiwgMTIsIDQwLCAyMTYsIDEwMCwgMTIsIDQwLCAKLSAgICAyNDYsIDI2LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDUsIDEyLCA0MCwgMjE0LCAxNzEsIDEwOCwgMTIsIDQwLCAyMTQsIDE3MSwgCi0gICAgMTQ3LCAxMiwgNDAsIDIxOCwgMjI5LCAxMiwgNDAsIDI0NywgMjMzLCAxMiwgNDAsIDIxMCwgOCwgMTIsIDQwLCAyMjksIDM0LCAKLSAgICAxMDUsIDEyLCA0MCwgMjI5LCAzNCwgMTA4LCAxMiwgNDAsIDI0MywgMTM4LCAxMiwgNDAsIDIxNCwgMTc1LCAxMiwgNDAsIDUsIAotICAgIDEwNSwgMTIsIDQwLCA1LCAxMDgsIDEyLCA0MCwgMjI4LCAyMywgMTA1LCAxMiwgNDAsIDIyOCwgMjMsIDEwOCwgMTIsIDQwLCAKLSAgICAyMjgsIDIzLCAxNDcsIDEyLCA0MCwgMjI4LCAyMywgMTQ5LCAxMiwgNDAsIDIxMiwgMjQsIDEyLCA0MCwgMjA5LCAzMywgMTIsIAotICAgIDQwLCAyMTIsIDIyLCAxMDUsIDEyLCA0MCwgMjEyLCAyMiwgMTA4LCAxMiwgNDAsIDIzNywgNTYsIDEwNSwgMTIsIDQwLCAKLSAgICAyMzcsIDU2LCAxMDgsIDEyLCA0MCwgMjM3LCAxMjMsIDEyLCA0MCwgMjE2LCAxNzgsIDEyLCA0MCwgMjQ2LCAxMTIsIDEyLCAKLSAgICA0MCwgMjEwLCAyMTQsIDEyLCA0MCwgMjI0LCAyOSwgMTIsIDQwLCAyNDQsIDczLCAxMiwgNDAsIDIyNCwgMjAsIDEyLCA0MCwgCi0gICAgMjQ2LCA0NCwgMTIsIDQwLCAyMDQsIDgxLCAxMDUsIDEyLCA0MCwgMjA0LCA4MSwgMTA4LCAxMiwgNDAsIDIzOSwgMjQ5LCAKLSAgICAxMiwgNDAsIDIxOSwgNDYsIDEwNSwgMTIsIDQwLCAyMTksIDQ2LCAxMDgsIDEyLCA0MCwgMjEyLCAxMjcsIDE2MiwgMjA4LCAKLSAgICA5NiwgMjA4LCAyNSwgMTIsIDQwLCAyNDUsIDE0OSwgMTIsIDQwLCAyNDMsIDEwMiwgMTIsIDQwLCAyMzAsIDE3NiwgMTIsIAotICAgIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgMTIsIDQwLCAyNDAsIDE5MSwgMTIsIDQwLCAyMTEsIDE5OSwgMTA1LCAxMiwgCi0gICAgNDAsIDIxMSwgMTk5LCAxMDgsIDEyLCA0MCwgMjQ4LCAyNDQsIDEyLCA0MCwgMjEyLCAxMzQsIDEyLCA0MCwgMjQ3LCAxMjIsIAotICAgIDIxMiwgMTM0LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDUsIDEyLCA0MCwgMjIyLCAyMjAsIDEwOCwgMTIsIDQwLCAyMjIsIDIyMCwgCi0gICAgMTQ3LCAxMiwgNDAsIDIyMiwgMjIwLCAxNDksIDEyLCA0MCwgMjI0LCAyMjcsIDEyLCA0MCwgMjEzLCAzNywgMTIsIDQwLCAKLSAgICAyMTYsIDE4NCwgMTIsIDQwLCAyNDAsIDIxOSwgMTIsIDQwLCAyMjAsIDQ1LCAxMiwgNDAsIDI0NywgMjAxLCAxMDUsIDEyLCAKLSAgICA0MCwgMjQ3LCAyMDEsIDEwOCwgMTIsIDQwLCAyMjUsIDE1LCAxMiwgNDAsIDIyNCwgMjQsIDEyLCA0MCwgMjM4LCAxLCAxMDUsIAotICAgIDEyLCA0MCwgMjM4LCAxLCAxMDgsIDEyLCA0MCwgMjM4LCAxLCAxNDcsIDEyLCA0MCwgMjA4LCAyNDUsIDEyLCA0MCwgMjQ2LCAKLSAgICA5LCAxMiwgNDAsIDIwNCwgNDYsIDEwNSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxNCwgCi0gICAgMTY1LCAxMiwgNDAsIDIxMiwgMTI3LCAyMzYsIDUzLCAxMiwgNDAsIDIzNiwgNTMsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMSwgCi0gICAgMjExLCAxMiwgNDAsIDI0NywgMTIyLCAyMTMsIDMyLCAxMiwgNDAsIDIzOSwgMTcyLCAxMiwgNDAsIDI0NywgMTIyLCAyNDcsIAotICAgIDIzLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDEwMSwgMTIsIDQwLCAyMDQsIDEwMiwgMTA1LCAxMiwgNDAsIDIwNCwgMTAyLCAKLSAgICAxMDgsIDEyLCA0MCwgMjQ2LCA0NywgMTIsIDQwLCAyNDcsIDEyMiwgMjM4LCAzMSwgMTIsIDQwLCAxNjMsIDEwNSwgMTIsIAotICAgIDQwLCAxNjMsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjM4LCAyMTYsIDEyLCAKLSAgICA0MCwgMjI0LCAxNiwgMTA1LCAxMiwgNDAsIDIyNCwgMTYsIDEwOCwgMTIsIDQwLCAyMTYsIDE5MCwgMTIsIDQwLCAyNDgsIAotICAgIDI1LCAxMiwgNDAsIDI0NywgMTIyLCAyMDksIDIyNCwgMjI3LCAyMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjI5LCAxMiwgCi0gICAgNDAsIDI0NywgMTIyLCAyMDQsIDE2LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDE5MCwgMTIsIDQwLCAyNDEsIDE3MywgMTA1LCAKLSAgICAxMiwgNDAsIDI0MSwgMTczLCAxMDgsIDEyLCA0MCwgMjQxLCAxNzMsIDE0NywgMTIsIDQwLCAyNDcsIDEyMiwgMjQxLCAxNzIsIAotICAgIDEyLCA0MCwgMjM3LCA2NCwgMTIsIDQwLCAyNDcsIDEyMiwgMjM2LCA0OSwgMTIsIDQwLCAyNDgsIDExLCAxMiwgNDAsIDIzOCwgCi0gICAgODksIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMjQzLCAxMiwgNDAsIDI0NywgMTIyLCAyNDgsIDYwLCAxMiwgNDAsIDI0NywgCi0gICAgMTIyLCAyMTUsIDEsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMzgsIDEyLCA0MCwgMjEyLCAxMjcsIDIwMywgNDQsIDEyLCAKLSAgICA0MCwgMjQ3LCAxMjIsIDIzOSwgMTIxLCAxMiwgNDAsIDIzMCwgMTgzLCAyNDAsIDIyNCwgMTIsIDQwLCAyNDcsIDEyMiwgCi0gICAgMjQwLCAyMjQsIDEyLCA0MCwgMjMwLCAxODMsIDIwOCwgMTQ2LCAxMiwgNDAsIDI0NywgMTIyLCAyMDgsIDE0NiwgMTIsIDQwLCAKLSAgICAyMzAsIDE4MywgMjQyLCA2MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjQyLCA2MSwgMTIsIDQwLCAyMDcsIDE3MSwgMTIsIDQwLCAKLSAgICAyMzAsIDE4MywgMjA3LCAxNzEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwNywgMTcxLCA3MSwgNDAsIDEwNSwgNzEsIDQwLCAyMjcsIAotICAgIDExNCwgNzEsIDQwLCAyNDMsIDg1LCA3MSwgNDAsIDIxMiwgNTcsIDcxLCA0MCwgMjE0LCAxNzAsIDcxLCA0MCwgMTEzLCA3MSwgCi0gICAgNDAsIDEwOCwgNzEsIDQwLCAyMjcsIDE0MywgNzEsIDQwLCAyMjUsIDEyMiwgNzEsIDQwLCAyMjcsIDIwNywgNzEsIDQwLCAKLSAgICAyNDEsIDY3LCA3MSwgNDAsIDE5OSwgNzEsIDQwLCAxMjEsIDI0NywgMjMzLCA3MSwgNDAsIDI0NSwgMTUxLCA3MSwgNDAsIAotICAgIDIzNSwgMTYyLCA3MSwgNDAsIDIxMCwgOCwgNzEsIDQwLCAxNzEsIDI0NywgMjMzLCA3MSwgNDAsIDIyOSwgMzMsIDcxLCA0MCwgCi0gICAgMjE4LCAxNiwgNzEsIDQwLCAyMDMsIDIyOCwgNzEsIDQwLCAyMTEsIDE5MCwgNzEsIDQwLCA1MCwgMTcxLCAyNDcsIDIzMywgCi0gICAgNzEsIDQwLCAyMzYsIDI1NSwgMjQxLCA4NywgNzEsIDQwLCAyMDksIDE1MiwgNzEsIDQwLCAyNDMsIDEzOCwgNzEsIDQwLCAKLSAgICAyMTQsIDE3NSwgNzEsIDQwLCAyNDYsIDI2LCA3MSwgNDAsIDIxNywgMjI2LCA3MSwgNDAsIDI1MSwgODAsIDcxLCA0MCwgCi0gICAgMjI0LCA3LCA3MSwgNDAsIDI0MSwgODcsIDcxLCA0MCwgMjQxLCAxNzksIDcxLCA0MCwgMjE0LCAxOTcsIDcxLCA0MCwgMjM4LCAKLSAgICAzOSwgNzEsIDQwLCAyMzgsIDQwLCAyMTIsIDM4LCA3MSwgNDAsIDI0MCwgMjIzLCA3MSwgNDAsIDI0OCwgNzIsIDcxLCA0MCwgCi0gICAgMjAzLCAyNTAsIDcxLCA0MCwgMjQ2LCAxMzMsIDcxLCA0MCwgMjE1LCAyMDcsIDcxLCA0MCwgMjMxLCA0NSwgNzEsIDQwLCAKLSAgICAyMTIsIDM2LCA3MSwgNDAsIDIyOCwgMjIsIDcxLCA0MCwgMjQ1LCAxNjEsIDcxLCA0MCwgMjExLCAxODEsIDcxLCA0MCwgCi0gICAgMjI0LCAxMiwgNzEsIDQwLCAyMTUsIDI0MSwgNzEsIDQwLCAyMDMsIDIzNSwgNzEsIDQwLCAyMjAsIDI1LCA3MSwgNDAsIAotICAgIDIwNywgMTgwLCA3MSwgNDAsIDI0MiwgNDQsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMzMsIDcxLCA0MCwgMjQyLCA4MywgCi0gICAgMjQ2LCAyNiwgNzEsIDQwLCAxNjMsIDIxMSwgMzgsIDcxLCA0MCwgMTIwLCAyMzcsIDk5LCA3MSwgNDAsIDIxMiwgMjM0LCAKLSAgICA3MSwgNDAsIDI0NywgMjQwLCA3MSwgNDAsIDIxMiwgMjEsIDcxLCA0MCwgMjQ3LCAyMDUsIDcxLCA0MCwgMjExLCA3NSwgNzEsIAotICAgIDQwLCAyMzcsIDU1LCA3MSwgNDAsIDIzNywgMTM4LCA3MSwgNDAsIDI0MywgODgsIDcxLCA0MCwgMjM3LCAxMjMsIDcxLCA0MCwgCi0gICAgMjQ3LCAyMjMsIDcxLCA0MCwgMjE2LCAxNzgsIDcxLCA0MCwgMjE0LCAxODMsIDcxLCA0MCwgMjQzLCAxNjksIDcxLCA0MCwgCi0gICAgMjUwLCA5LCA3MSwgNDAsIDIxMSwgMTc3LCA3MSwgNDAsIDIyMSwgMTY1LCA3MSwgNDAsIDIxMCwgMjE0LCA3MSwgNDAsIAotICAgIDIxNCwgMjA4LCA3MSwgNDAsIDIyNCwgMjksIDcxLCA0MCwgMjA4LCA5NSwgNzEsIDQwLCAyMjgsIDk5LCA3MSwgNDAsIDIxMSwgCi0gICAgNjEsIDcxLCA0MCwgMjQ0LCA3MywgNzEsIDQwLCAyMDQsIDYxLCA3MSwgNDAsIDI0MywgMTE0LCAyMjEsIDE2NSwgNzEsIDQwLCAKLSAgICAyNDUsIDIyOSwgNzEsIDQwLCAyMzksIDk1LCA3MSwgNDAsIDI0NiwgMzgsIDcxLCA0MCwgMjExLCA4MCwgNzEsIDQwLCAyMDQsIAotICAgIDgwLCA3MSwgNDAsIDIzOSwgMjQ5LCA3MSwgNDAsIDI0NiwgMzQsIDcxLCA0MCwgMjQwLCA2NywgNzEsIDQwLCA1MiwgMjAzLCAKLSAgICAxOTYsIDcxLCA0MCwgMTYyLCAyMDgsIDk2LCAyMDgsIDI1LCA3MSwgNDAsIDIxMiwgNTAsIDcxLCA0MCwgMjQwLCA3OSwgNzEsIAotICAgIDQwLCAyNDUsIDE0OSwgNzEsIDQwLCAyNDMsIDEwMiwgNzEsIDQwLCAyMTcsIDIyMywgNzEsIDQwLCAyMzAsIDE3NiwgNzEsIAotICAgIDQwLCAyMjQsIDI0OSwgNzEsIDQwLCAyMDgsIDIyNiwgNzEsIDQwLCAyMTAsIDE2NCwgNzEsIDQwLCAyMjcsIDEzNywgNzEsIAotICAgIDQwLCAyMDYsIDE5MSwgNzEsIDQwLCAyNDAsIDI0LCA3MSwgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCA3MSwgNDAsIDIxMiwgCi0gICAgMTU4LCA3MSwgNDAsIDI0MiwgODMsIDIwOSwgMTQ0LCA3MSwgNDAsIDIwNCwgMzMsIDcxLCA0MCwgMjEyLCA2NSwgNzEsIDQwLCAKLSAgICAyNDMsIDE1NiwgNzEsIDQwLCAyNDAsIDE5MSwgNzEsIDQwLCAyMTEsIDIxNCwgNzEsIDQwLCA0NywgNzEsIDQwLCAyMTEsIAotICAgIDYzLCA3MSwgNDAsIDIxMSwgMTk4LCA3MSwgNDAsIDIwOCwgMTE4LCA3MSwgNDAsIDIzOCwgMTAsIDcxLCA0MCwgMjQ3LCAxMCwgCi0gICAgNzEsIDQwLCAyMTEsIDk4LCA3MSwgNDAsIDI0OCwgMjQ0LCA3MSwgNDAsIDIxNiwgNTIsIDcxLCA0MCwgMjEyLCAxMzQsIDcxLCAKLSAgICA0MCwgMjMwLCAxNjgsIDcxLCA0MCwgMjIyLCAyMTksIDcxLCA0MCwgMjEzLCAzNywgNzEsIDQwLCAyNDAsIDU1LCA3MSwgNDAsIAotICAgIDIyMCwgNDUsIDcxLCA0MCwgMjUwLCAyMjYsIDcxLCA0MCwgMjE4LCA4MywgNzEsIDQwLCAyNDEsIDE4MywgNzEsIDQwLCAKLSAgICAyNDcsIDIwMCwgNzEsIDQwLCAyMjUsIDE1LCA3MSwgNDAsIDIyNCwgMTA0LCA3MSwgNDAsIDIxMywgMTQ5LCA3MSwgNDAsIAotICAgIDI1MCwgOTgsIDcxLCA0MCwgMjI0LCAyNCwgNzEsIDQwLCAyMDgsIDE1MCwgNzEsIDQwLCAyMTksIDI1MiwgNzEsIDQwLCAKLSAgICAyNDgsIDE5LCA3MSwgNDAsIDIxMSwgNTksIDcxLCA0MCwgMjQ1LCAyNDEsIDcxLCA0MCwgMjM4LCAwLCA3MSwgNDAsIDIwOCwgCi0gICAgMjQ1LCA3MSwgNDAsIDIzMSwgOSwgNzEsIDQwLCAyNDgsIDMxLCA3MSwgNDAsIDIwNCwgMTAyLCAyNDEsIDg3LCA3MSwgNDAsIAotICAgIDI0NiwgOSwgNzEsIDQwLCAyMDQsIDQ1LCA3MSwgNDAsIDIxNCwgMTY1LCA3MSwgNDAsIDIzNiwgNTMsIDcxLCA0MCwgMjExLCAKLSAgICAyMTEsIDcxLCA0MCwgMjA2LCA3OSwgNzEsIDQwLCAyNDgsIDE1NywgNzEsIDQwLCAyMTgsIDEzMSwgNzEsIDQwLCAyNDksIAotICAgIDEzLCA3MSwgNDAsIDIxMywgMzIsIDcxLCA0MCwgMjE2LCAxMzcsIDcxLCA0MCwgMjE1LCAxMjgsIDcxLCA0MCwgMjM5LCAKLSAgICAxNzIsIDcxLCA0MCwgMjQ4LCAxNywgNzEsIDQwLCAyNDcsIDIzLCA3MSwgNDAsIDI0OCwgNDgsIDcxLCA0MCwgMjI0LCAyNiwgCi0gICAgNzEsIDQwLCAyMDQsIDEwMSwgNzEsIDQwLCAyNDYsIDQ3LCA3MSwgNDAsIDIwNCwgMTIsIDcxLCA0MCwgMjQzLCAxNDksIDcxLCAKLSAgICA0MCwgMjA1LCAyMTQsIDcxLCA0MCwgMjM4LCAzMSwgNzEsIDQwLCAyMjcsIDI4LCA3MSwgNDAsIDIzOCwgMjE2LCA3MSwgNDAsIAotICAgIDIyNCwgMTUsIDcxLCA0MCwgMjEyLCA1NiwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAyNDcsIDI0OCwgNjAsIDcxLCA0MCwgCi0gICAgMjE2LCAxOTAsIDcxLCA0MCwgMjQ4LCAyNSwgNzEsIDQwLCAyMDMsIDIxOSwgNzEsIDQwLCAyNDAsIDEwMiwgNzEsIDQwLCAKLSAgICAyMjcsIDIyOCwgNzEsIDQwLCAyMDksIDIyNCwgMjI3LCAyMjgsIDcxLCA0MCwgMjI3LCAyMjQsIDcxLCA0MCwgMjExLCAyNDAsIAotICAgIDcxLCA0MCwgMjI3LCAyMjksIDcxLCA0MCwgMjA0LCAxNiwgNzEsIDQwLCAyMzksIDE5MCwgNzEsIDQwLCAyNDEsIDE3MiwgCi0gICAgNzEsIDQwLCAyMzcsIDY0LCA3MSwgNDAsIDIzOSwgMTM2LCA3MSwgNDAsIDIzNiwgNDksIDcxLCA0MCwgMjQ4LCAxMSwgNzEsIAotICAgIDQwLCAyMDksIDIzMywgNzEsIDQwLCAyMzcsIDE0NSwgNzEsIDQwLCAyNDAsIDE3LCA3MSwgNDAsIDIxNSwgMzAsIDIwNCwgCi0gICAgMTIsIDcxLCA0MCwgMjQ3LCAxMiwgNzEsIDQwLCAyMzgsIDg5LCA3MSwgNDAsIDIzOSwgMjQzLCA3MSwgNDAsIDI0OCwgNjAsIAotICAgIDcxLCA0MCwgMjE1LCAxLCA3MSwgNDAsIDI0NCwgNTgsIDcxLCA0MCwgMjA0LCAzOCwgNzEsIDQwLCAyMzcsIDM0LCA3MSwgCi0gICAgNDAsIDIwMywgNDQsIDcxLCA0MCwgMjI0LCAxMTUsIDcxLCA0MCwgMjQ4LCA0MywgNzEsIDQwLCAyNDEsIDk5LCA3MSwgNDAsIAotICAgIDIzOSwgMTIxLCA3MSwgNDAsIDIwOCwgNjcsIDcxLCA0MCwgMjQyLCA0NiwgNzEsIDQwLCAyMTYsIDE3MiwgNzEsIDQwLCAKLSAgICAyMjEsIDE2NywgNzEsIDQwLCAyNDAsIDIyNCwgNzEsIDQwLCAyMDgsIDE0NiwgNzEsIDQwLCAyNDIsIDYxLCA3MSwgNDAsIAotICAgIDIwNywgMTcxLCA3MSwgNDAsIDIzOSwgMTkzLCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAyMTYsIDE2LCAKLSAgICAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCA1NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgCi0gICAgMTAxLCAyNSwgMjE2LCAxNiwgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgMTAxLCAyNSwgNTYsIDEzOSwgMjQ0LCAKLSAgICAxOCwgMTY3LCAyMzksIDEwMiwgMjEwLCAxODYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU1LCAKLSAgICAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAKLSAgICAyMzksIDEyMCwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMjcsIAotICAgIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIxNiwgMTYsIDEzOSwgMjQ0LCAKLSAgICAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxOSwgCi0gICAgMjAyLCAxMzksIDIxMSwgMjI4LCAxMzksIDI0NSwgMjMzLCAxMzksIDIzOSwgMTAyLCAyMTEsIDYxLCAyNDMsIDE0NiwgODIsIAotICAgIDIzMCwgMTY5LCAyMzEsIDI5LCAyMTEsIDk3LCA5NywgMTM5LCAyMzAsIDE5OSwgODIsIDEzOSwgMjQ2LCAxMiwgODIsIDEzOSwgCi0gICAgNDIsIDIwMiwgODQsIDQ5LCAyNTAsIDIxOCwgMTU1LCA1MCwgMjUwLCAyMTgsIDE1NSwgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAKLSAgICA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDQ5LCAyNDUsIDE2NiwgMTU1LCA1MCwgMjQ1LCAxNjYsIDE1NSwgNDksIDYxLCAyNDUsIAotICAgIDE2NiwgMTU1LCA1MCwgNjEsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgNTAsIDYyLCAyMjcsIDE4NSwgCi0gICAgMTU1LCAyMTgsIDI5LCA4MiwgMjM4LCAxNTgsIDgyLCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDIwOCwgMTMzLCAKLSAgICAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgMjI3LCAxODUsIDE1NSwgNTAsIDYxLCAyMjcsIDE4NSwgMTU1LCA0OSwgNjEsIDIwOCwgCi0gICAgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNDksIDYxLCA1MSwgMTU1LCA1MCwgCi0gICAgNjEsIDUxLCAxNTUsIDIwNCwgNzYsIDI0NCwgMTQ0LCAyMTYsIDczLCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCA1MiwgCi0gICAgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAxMjQsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDIxOCwgMjksIDEzMSwgMjQwLCAKLSAgICAxMDIsIDIzNywgOTcsIDIyMSwgNDQsIDEwNSwgMjM3LCA5NywgMjIxLCA0NCwgMTA4LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNDcsIAotICAgIDIzNywgOTcsIDIyMSwgNDQsIDE0OSwgMjM3LCA5NywgMjIxLCA0NCwgMTcwLCAyMzcsIDk3LCAyMjEsIDQ0LCAxOTUsIDIzNywgCi0gICAgOTcsIDIyMSwgNDQsIDIxMywgMTExLCAyMzcsIDk3LCAyMjEsIDQ0LCAxOTksIDIzNywgOTcsIDIyMSwgNDQsIDIyMiwgNjMsIAotICAgIDEzOSwgMjI3LCAxNjcsIDE0MywgODIsIDEzOSwgMjE1LCAyNDUsIDE0MywgODIsIDEzOSwgMjQ0LCAyNywgMTQzLCA4MiwgCi0gICAgMTM5LCAyNDEsIDY2LCAxNDMsIDgyLCAyOCwgMjEyLCAxMjAsIDcwLCAxNDMsIDgyLCAyOCwgNTIsIDcwLCAxNDMsIDgyLCAKLSAgICAyMDQsIDcyLCAyNDQsIDE0NCwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMywgCi0gICAgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCAKLSAgICA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMywgMjA1LCAxODYsIDIxMSwgMjQxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgODAsIAotICAgIDIzMCwgMywgMjE2LCAxMDEsIDEzMSwgMjI2LCAyNTEsIDIzNywgMTM3LCA0MywgMjE4LCAyOSwgODIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDIyNywgMTE1LCAyNDAsIDUyLCAyMTMsIDEzMSwgOTcsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMzcsIAotICAgIDk3LCAyMjEsIDQ0LCAyMDcsIDE1MSwgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCA1MywgODAsIDEzOSwgMjMwLCAxOTksIDgyLCAKLSAgICAyMjUsIDcyLCA4MiwgMjE5LCA3MSwgMjUwLCAyNTEsIDgyLCAxMzksIDU3LCAyMzEsIDMxLCAxMzksIDE2MiwgMjQwLCAxMCwgCi0gICAgMjExLCAyMjgsIDE3MiwgMSwgNSwgNjMsIDE3MiwgMSwgNjMsIDE3MiwgMSwgNSwgNzUsIDE3MiwgMSwgNzUsIDE3MiwgMSwgCi0gICAgNSwgNjgsIDE3MiwgMSwgNjgsIDE3MiwgMSwgNSwgNzQsIDE3MiwgMSwgNzQsIDE3MiwgMSwgNSwgNzgsIDE3MiwgMSwgNzgsIAotICAgIDE3MiwgMSwgMTczLCAxNzIsIDEsIDIzOSwgOCwgMTcyLCAxLCAyMjksIDEwMCwgMTcyLCAxLCAyMzgsIDgxLCAxNzIsIDEsIAotICAgIDIyOCwgMjA5LCAxNzIsIDEsIDIzNywgMjMwLCAxNzIsIDEsIDIyOSwgMjAxLCAxNzIsIDEsIDIzOCwgMTkwLCAxNzIsIDEsIAotICAgIDIyOSwgMjYsIDE3MiwgMSwgMjM4LCAzOSwgMTcyLCAxLCAyMTUsIDM2LCAxNzIsIDEsIDIwMiwgMTE2LCAxNzIsIDEsIDIxMiwgCi0gICAgMTYyLCAxNzIsIDEsIDIwMiwgMzksIDE3MiwgMSwgMjExLCAxMCwgMTcyLCAxLCAyMDIsIDYsIDE3MiwgMSwgMjE0LCAxNzcsIAotICAgIDE3MiwgMSwgMjAyLCA5MiwgMTcyLCAxLCAyMTIsIDEzLCAxNzIsIDEsIDIwMiwgMTcsIDE3MiwgMSwgMjEwLCAyMiwgMTcyLCAKLSAgICAxLCAyNDQsIDIxMiwgMTcyLCAxLCAyMDksIDIsIDE3MiwgMSwgMjQzLCAyMzMsIDE3MiwgMSwgNSwgMjA3LCAyMDMsIDE3MiwgCi0gICAgMSwgMjA3LCAyMDMsIDE3MiwgMSwgMjQyLCA0MiwgMTcyLCAxLCAyMDksIDE4NywgMTcyLCAxLCAyNDQsIDc1LCAxNzIsIDEsIAotICAgIDEzNSwgMTcyLCAxLCAyNDMsIDExMywgMTcyLCAxLCAyMDEsIDIwMSwgMTcyLCAxLCAyMjIsIDEwMCwgMTcyLCAxLCAyMjEsIAotICAgIDg0LCAxNzIsIDEsIDIyMiwgMjQwLCAxNzIsIDEsIDIyMSwgMTkxLCAxNzIsIDEsIDE1MiwgMTcyLCAxLCAyNDksIDMyLCAKLSAgICAxNzIsIDEsIDE4NSwgMTcyLCAxLCAyMzcsIDMsIDE3MiwgMSwgMjQ4LCA4NiwgMTcyLCAxLCAyMTgsIDE2NywgMTcyLCAxLCAKLSAgICAyMzYsIDI2LCAxNzIsIDEsIDI0NywgMTkzLCAxNzIsIDEsIDIxNywgMTkxLCAxNzIsIDEsIDIzNywgNjcsIDE3MiwgMSwgCi0gICAgMjQ4LCAxNjIsIDE3MiwgMSwgMjE5LCAzNCwgMTcyLCAxLCAyMzYsIDEzNiwgMTcyLCAxLCAyNDgsIDIzLCAxNzIsIDEsIAotICAgIDIxOCwgNjksIDE3MiwgMSwgMTkyLCAxNzIsIDEsIDIyNCwgMTU1LCAxNzIsIDEsIDIyMywgMjQ2LCAxNzIsIDEsIDIyNSwgCi0gICAgMjAsIDE3MiwgMSwgMjI0LCA4MiwgMTcyLCAxLCA1LCAxOTgsIDE3MiwgMSwgMTk4LCAxNzIsIDEsIDUsIDIwMiwgMjEzLCAKLSAgICAxNzIsIDEsIDIwMiwgMjEzLCAxNzIsIDEsIDUsIDIwMiwgMjQ3LCAxNzIsIDEsIDIwMiwgMjQ3LCAxNzIsIDEsIDIxNiwgCi0gICAgMjIwLCAxNzIsIDEsIDIxNiwgNTcsIDE3MiwgMSwgMjE1LCAxNDUsIDE3MiwgMSwgMjE2LCAxNTgsIDE3MiwgMSwgMjE1LCAKLSAgICAyMjcsIDE3MiwgMSwgNSwgMjA0LCAxMTEsIDE3MiwgMSwgMjA0LCAxMTEsIDE3MiwgMSwgMjA0LCAzMCwgMTcyLCAxLCAyMDQsIAotICAgIDYyLCAxNzIsIDEsIDIwNCwgMCwgMTcyLCAxLCAyMjMsIDE2MywgMTcyLCAxLCAyMDQsIDE2MywgMTcyLCAxLCA1LCAxNzMsIAotICAgIDE3MiwgMSwgNSwgMjI5LCAyMDEsIDM5LCAyMjksIDIyNSwgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgMzksIDIyOSwgMjI1LCAKLSAgICAyMTMsIDE0OCwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIxMywgCi0gICAgMTQ4LCAyMTEsIDI0MSwgODIsIDE3MiwgMjMwLCAxOTksIDgyLCAxNzIsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDE3MiwgCi0gICAgMjQzLCAxOTIsIDIwMiwgMjI4LCAyMjksIDIyNSwgNTIsIDIzNSwgMjIwLCA2NywgMSwgNSwgNjMsIDY3LCAxLCA2MywgNjcsIAotICAgIDEsIDUsIDc1LCA2NywgMSwgNzUsIDY3LCAxLCA1LCA2OCwgNjcsIDEsIDY4LCA2NywgMSwgNSwgNzQsIDY3LCAxLCA3NCwgCi0gICAgNjcsIDEsIDUsIDc4LCA2NywgMSwgNzgsIDY3LCAxLCAxNzMsIDY3LCAxLCAyMzksIDgsIDY3LCAxLCAyMjksIDEwMCwgNjcsIAotICAgIDEsIDIzOCwgODEsIDY3LCAxLCAyMjgsIDIwOSwgNjcsIDEsIDIzNywgMjMwLCA2NywgMSwgMjI5LCAyMDEsIDY3LCAxLCAKLSAgICAyMzgsIDE5MCwgNjcsIDEsIDIyOSwgMjYsIDY3LCAxLCAyMzgsIDM5LCA2NywgMSwgMjE1LCAzNiwgNjcsIDEsIDIwMiwgCi0gICAgMTE2LCA2NywgMSwgMjEyLCAxNjIsIDY3LCAxLCAyMDIsIDM5LCA2NywgMSwgMjExLCAxMCwgNjcsIDEsIDIwMiwgNiwgNjcsIAotICAgIDEsIDIxNCwgMTc3LCA2NywgMSwgMjAyLCA5MiwgNjcsIDEsIDIxMiwgMTMsIDY3LCAxLCAyMDIsIDE3LCA2NywgMSwgMjEwLCAKLSAgICAyMiwgNjcsIDEsIDI0NCwgMjEyLCA2NywgMSwgMjA5LCAyLCA2NywgMSwgMjQzLCAyMzMsIDY3LCAxLCA1LCAyMDcsIDIwMywgCi0gICAgNjcsIDEsIDIwNywgMjAzLCA2NywgMSwgMjQyLCA0MiwgNjcsIDEsIDIwOSwgMTg3LCA2NywgMSwgMjQ0LCA3NSwgNjcsIDEsIAotICAgIDEzNSwgNjcsIDEsIDI0MywgMTEzLCA2NywgMSwgMjAxLCAyMDEsIDY3LCAxLCAyMjIsIDEwMCwgNjcsIDEsIDIyMSwgODQsIAotICAgIDY3LCAxLCAyMjIsIDI0MCwgNjcsIDEsIDIyMSwgMTkxLCA2NywgMSwgMTUyLCA2NywgMSwgMjQ5LCAzMiwgNjcsIDEsIDE4NSwgCi0gICAgNjcsIDEsIDIzNywgMywgNjcsIDEsIDI0OCwgODYsIDY3LCAxLCAyMTgsIDE2NywgNjcsIDEsIDIzNiwgMjYsIDY3LCAxLCAKLSAgICAyNDcsIDE5MywgNjcsIDEsIDIxNywgMTkxLCA2NywgMSwgMjM3LCA2NywgNjcsIDEsIDI0OCwgMTYyLCA2NywgMSwgMjE5LCAKLSAgICAzNCwgNjcsIDEsIDIzNiwgMTM2LCA2NywgMSwgMjQ4LCAyMywgNjcsIDEsIDIxOCwgNjksIDY3LCAxLCAxOTIsIDY3LCAxLCAKLSAgICAyMjQsIDE1NSwgNjcsIDEsIDIyMywgMjQ2LCA2NywgMSwgMjI1LCAyMCwgNjcsIDEsIDIyNCwgODIsIDY3LCAxLCA1LCAxOTgsIAotICAgIDY3LCAxLCAxOTgsIDY3LCAxLCA1LCAyMDIsIDIxMywgNjcsIDEsIDIwMiwgMjEzLCA2NywgMSwgNSwgMjAyLCAyNDcsIDY3LCAKLSAgICAxLCAyMDIsIDI0NywgNjcsIDEsIDIxNiwgMjIwLCA2NywgMSwgMjE2LCA1NywgNjcsIDEsIDIxNSwgMTQ1LCA2NywgMSwgCi0gICAgMjE2LCAxNTgsIDY3LCAxLCAyMTUsIDIyNywgNjcsIDEsIDUsIDIwNCwgMTExLCA2NywgMSwgMjA0LCAxMTEsIDY3LCAxLCAKLSAgICAyMDQsIDMwLCA2NywgMSwgMjA0LCA2MiwgNjcsIDEsIDIwNCwgMCwgNjcsIDEsIDIyMywgMTYzLCA2NywgMSwgMjA0LCAxNjMsIAotICAgIDY3LCAxLCA1LCAxNzMsIDY3LCAxLCA1LCAyMjksIDIwMSwgNjcsIDEsIDIwNiwgODYsIDY3LCAxLCAyMDUsIDIzMCwgNjcsIAotICAgIDEsIDIwNiwgNTUsIDY3LCAxLCAyMDUsIDE4OSwgNjcsIDEwMSwgMjQzLCA4NSwgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIAotICAgIDI0MSwgODIsIDY3LCAyMzAsIDE5OSwgODIsIDY3LCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCA2NywgMjQzLCAxOTIsIDIyOCwgCi0gICAgMjQ5LCAyNDgsIDEsIDEsIDI0OSwgMjU1LCAyNDgsIDEsIDEsIDIxOSwgMTg0LCAyNDgsIDEsIDEsIDIyNiwgMTg1LCAyNDgsIAotICAgIDEsIDEsIDI0MCwgMTc0LCAyNDgsIDEsIDEsIDI0NSwgNTEsIDI0OCwgMSwgMSwgMjEwLCA2OSwgMjQ4LCAxLCAxLCAyMjMsIAotICAgIDE2MywgMjQ4LCAxLCAxLCAxNTksIDI0OCwgMSwgMSwgMjM5LCA3NSwgMjQ4LCAxLCAxLCAyMzAsIDU0LCAyNDgsIDEsIDEsIAotICAgIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzMCwgMTg0LCAyNDgsIDEsIDEsIDIxNywgMTM0LCAyNDgsIDEsIDEsIDIwMywgMTk2LCAKLSAgICAyNDgsIDEsIDEsIDIwMiwgODEsIDI0OCwgMSwgMSwgMjQ2LCAyMDAsIDI0OCwgMSwgMSwgMjEzLCA5MiwgMjQ4LCAxLCAxLCAKLSAgICAxNDYsIDI0OCwgMSwgMSwgMjAyLCAxNTksIDI0OCwgMSwgMSwgMjQ3LCAxMjUsIDI0OCwgMSwgMSwgMTk0LCAyNDgsIDEsIDEsIAotICAgIDYzLCAyNDgsIDEsIDEsIDc4LCAyNDgsIDEsIDEsIDc0LCAyNDgsIDEsIDEsIDI0MSwgMTQ3LCAyNDgsIDEsIDEsIDI1MSwgCi0gICAgNjQsIDI0OCwgMSwgMSwgMjQxLCAxNDUsIDI0OCwgMSwgMSwgMjUwLCAzNCwgMjQ4LCAxLCAxLCAyMTksIDIxNiwgMjQ4LCAxLCAKLSAgICAxLCAyNTAsIDIzMSwgMjQ4LCAxLCAxLCAyNDEsIDkyLCAyNDgsIDEsIDEsIDI1MCwgMjIzLCAyNDgsIDEsIDEsIDI0MSwgNzgsIAotICAgIDI0OCwgMSwgMSwgMjQxLCAyOCwgMjQ4LCAxLCAxLCA3NSwgMjQ4LCAxLCAxLCA2OCwgMjQ4LCAxLCAxLCAyMzAsIDE5NywgCi0gICAgMjQ4LCAxLCAxLCAyMDYsIDE2NCwgMjQ4LCAxLCAxLCAyMjIsIDIwNSwgMjQ4LCAxLCAxLCAyMzgsIDQzLCAyNDgsIDEsIDEsIAotICAgIDIzMSwgODQsIDI4LCAxLCAyMjksIDU5LCAyOCwgMSwgMjExLCAxNTYsIDI4LCAxLCAyMjksIDUyLCAyOCwgMSwgMjIyLCA5MywgCi0gICAgMjgsIDEsIDIyMiwgOTEsIDI4LCAxLCAyMjIsIDkwLCAyOCwgMSwgMjA4LCAyNDAsIDI4LCAxLCAyMTEsIDE0NSwgMjgsIDEsIAotICAgIDIxNiwgNDcsIDI4LCAxLCAyMTYsIDQyLCAyOCwgMSwgMjE2LCAzOSwgMjgsIDEsIDIxNiwgMzIsIDI4LCAxLCAyMTYsIDI3LCAKLSAgICAyOCwgMSwgMjE2LCAyMiwgMjgsIDEsIDIxNiwgMzMsIDI4LCAxLCAyMTYsIDQ1LCAyOCwgMSwgMjI0LCAxNDEsIDI4LCAxLCAKLSAgICAyMTgsIDE1MywgMjgsIDEsIDIxMSwgMTUzLCAyOCwgMSwgMjE4LCAxNDIsIDI4LCAxLCAyMTIsIDExMSwgMjgsIDEsIDIxMSwgCi0gICAgMTUwLCAyOCwgMSwgMjMxLCAxMDYsIDI4LCAxLCAyNDYsIDc0LCAyOCwgMSwgMjExLCAxNjAsIDI4LCAxLCAyNDYsIDEzOCwgCi0gICAgMjgsIDEsIDIyOSwgMTIwLCAyOCwgMSwgMjA5LCA2NiwgMjgsIDEsIDIxOCwgMTkwLCAyOCwgMSwgMjM2LCAyNTEsIDI4LCAxLCAKLSAgICA2MywgMjgsIDEsIDI1MSwgMTA5LCAyOCwgMSwgMTk4LCAyOCwgMSwgMjAzLCA5OSwgMjgsIDEsIDI0MSwgNTUsIDI4LCAxLCAKLSAgICA3NCwgMjgsIDEsIDIwMywgMzksIDI4LCAxLCAyMDMsIDUyLCAyOCwgMSwgNzgsIDI4LCAxLCAyMDQsIDExMSwgMjgsIDEsIAotICAgIDIwNCwgMTA3LCAyOCwgMSwgMjIwLCA3MywgMjgsIDEsIDIwMiwgMjQ3LCAyOCwgMSwgNjgsIDI4LCAxLCAyMDQsIDQ4LCAyOCwgCi0gICAgMSwgMjA0LCA2MiwgMjgsIDEsIDIwNCwgMzAsIDI4LCAxLCAyMDIsIDIxMywgMjgsIDEsIDI0MCwgMjM4LCAyOCwgMSwgMjAzLCAKLSAgICAxMSwgMjgsIDEsIDc1LCAyOCwgMjQwLCA3LCAyOCwgMSwgMjExLCAxNTQsIDI4LCAxLCAyMjIsIDgzLCAyOCwgMSwgMjIyLCAKLSAgICA4NSwgMjgsIDEsIDIyMiwgODgsIDI4LCAxLCAyMTYsIDQwLCAyOCwgMSwgMjE2LCAyMSwgMjgsIDEsIDIxNiwgMjksIDI4LCAKLSAgICAxLCAyMTYsIDM0LCAyOCwgMSwgMjE2LCAxOSwgMjgsIDEsIDIyNCwgMTM0LCAyOCwgMSwgMjI0LCAxMzEsIDI4LCAxLCAyMjQsIAotICAgIDEzNSwgMjgsIDEsIDIyOSwgMjQ2LCAyOCwgMSwgMjE4LCAxNDgsIDI4LCAxLCAyMTgsIDEzNCwgMjgsIDEsIDIxOCwgMTQwLCAKLSAgICAyOCwgMSwgMjE4LCAxMzcsIDI4LCAxLCAyMTgsIDE1MSwgMjgsIDEsIDIxOCwgMTM1LCAyOCwgMSwgMjI5LCAyNDQsIDI4LCAKLSAgICAxLCAyMjksIDI0MiwgMjgsIDEsIDIxMiwgMTA0LCAyOCwgMSwgMjEyLCAxMDIsIDI4LCAxLCAyMTIsIDk0LCAyOCwgMSwgCi0gICAgMjEyLCA5OSwgMjgsIDEsIDIxMiwgMTA5LCAyOCwgMSwgMjE5LCAxMDcsIDI4LCAxLCAyMTEsIDE1NywgMjgsIDEsIDIwMywgCi0gICAgMjksIDI4LCAxLCAyMDMsIDI1LCAyOCwgMSwgMjAzLCAyNiwgMjgsIDEsIDIyOSwgMjQ1LCAyOCwgMSwgMjExLCAxNTgsIDI4LCAKLSAgICAxLCAyMDMsIDM1LCAyOCwgMSwgMjAyLCAyNDEsIDI4LCAxLCAyMDIsIDI0MCwgMjgsIDEsIDIwMiwgMjQzLCAyOCwgMSwgCi0gICAgMjAyLCAyMDQsIDI4LCAxLCAyMDIsIDIwNSwgMjgsIDEsIDIwMiwgMjA4LCAyOCwgMSwgMjUwLCAxMzcsIDI4LCAxLCAyNTAsIAotICAgIDEzMSwgMTM5LCAyNTAsIDIwNSwgMjI3LCAxMDMsIDgyLCAxMzksIDI1MCwgMjA1LCAyMTYsIDc0LCA4MiwgMTM5LCAyNTAsIAotICAgIDIwNSwgMTE4LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTIwLCA4MiwgMTM5LCAyNTAsIDIwNSwgMTI2LCA4MiwgMTM5LCAyNTAsIAotICAgIDIwNSwgMjM5LCAxNDcsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDgsIDE0NSwgODIsIDEzOSwgMjUwLCAyMDUsIDEwMSwgODIsIAotICAgIDEzOSwgMjUwLCAyMDUsIDI0NywgMjQ4LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAyNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAKLSAgICAyMTQsIDE3MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIwOSwgNjEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDE0MCwgODIsIAotICAgIDEzOSwgMjUwLCAyMDUsIDIzNywgNTIsIDgyLCAxMzksIDI1MCwgMjA1LCAyNDEsIDE4MCwgODIsIDEzOSwgMjUwLCAyMDUsIAotICAgIDIyNSwgMTIzLCA4MiwgMjQ4LCAxLCAxLCAyNDcsIDE5MywgMjQ4LCAxLCAxLCAyMDIsIDM5LCAyNDgsIDEsIDEsIDIzMCwgCi0gICAgMTQxLCAyNDgsIDEsIDEsIDIzNywgMjMwLCAyNDgsIDEsIDEsIDI0MSwgMTYxLCAyNDgsIDEsIDEsIDI0MSwgNzUsIDI0OCwgCi0gICAgMSwgMSwgMjIwLCAxOCwgMjQ4LCAxLCAxLCAyMjAsIDIyLCAyNDgsIDEsIDEsIDIzMCwgMjI0LCAyNDgsIDEsIDEsIDI1MCwgCi0gICAgMjA3LCAyNDgsIDEsIDEsIDIzMSwgMTYsIDI0OCwgMSwgMSwgMjA2LCAyMjksIDI0OCwgMSwgMSwgMjMxLCA2NiwgMjQ4LCAxLCAKLSAgICAxLCAyMjIsIDE4MywgMjQ4LCAxLCAxLCAyNTEsIDU4LCAyNDgsIDEsIDEsIDI1MCwgMjksIDI0OCwgMSwgMSwgMjUwLCAyNDcsIAotICAgIDI0OCwgMSwgMSwgMjIwLCAzOSwgMjQ4LCAxLCAxLCAyMjAsIDI0LCAyNDgsIDEsIDEsIDIzMSwgMTMsIDI0OCwgMSwgNDYsIAotICAgIDEsIDIxOSwgMTg0LCAyNDgsIDEsIDQ2LCAxLCAyMTAsIDY5LCAyNDgsIDEsIDQ2LCAxLCAyMzAsIDU0LCAyNDgsIDEsIDQ2LCAKLSAgICAxLCAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzgsIDEyMCwgMjQ4LCAxLCAxLCAyMjcsIDE2MiwgMjQ4LCAxLCAxLCAyMDEsIAotICAgIDI0MiwgMTIsIDIxMSwgMzIsIDIxMCwgNjksIDEyLCAyMTEsIDMyLCAyMDQsIDQxLCAxMiwgMjExLCAzMiwgMjAzLCAxNzEsIAotICAgIDEyLCAyMTEsIDMyLCAyNDcsIDEzOCwgMTIsIDIxMSwgMzIsIDIxMCwgMTczLCAxMiwgMjExLCAzMiwgMjM1LCAyMTAsIDEyLCAKLSAgICAyMTEsIDMyLCAyMzUsIDIxNCwgMTIsIDIxMSwgMzIsIDIzNiwgMzUsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMSwgMTIsIDIxMSwgCi0gICAgMzIsIDIxMCwgNzIsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA5LCAxMiwgMjExLCAzMiwgCi0gICAgMjM2LCAzMywgMTIsIDIxMSwgMzIsIDIzNSwgMjEyLCAxMiwgMjExLCAzMiwgMjM1LCAyMDgsIDEyLCAyMTEsIDMyLCAyMjMsIAotICAgIDE2MywgMTIsIDIxMSwgMzIsIDIzNywgMTcxLCAxMiwgMjExLCAzMiwgMTk0LCAxMiwgMjExLCAzMiwgMjE5LCAxODQsIDEyLCAKLSAgICAyMTEsIDMyLCAyMTEsIDIzMSwgMTIsIDIxMSwgMzIsIDI0NSwgNTEsIDEyLCAyMTEsIDMyLCAyMzUsIDIxNSwgMTIsIDIxMSwgCi0gICAgMzIsIDIzNywgMTMsIDEyLCAyMTEsIDMyLCAyMTAsIDgxLCAxMiwgMjExLCAzMiwgMjEwLCAxNTIsIDEyLCAyMTEsIDMyLCAKLSAgICAyMTEsIDEwOCwgMTIsIDIxMSwgMzIsIDIxMywgOTgsIDEyLCAyMTEsIDMyLCAyMTksIDM4LCAxMiwgMjExLCAzMiwgMjE3LCAKLSAgICAxMzYsIDEyLCAyMTEsIDMyLCAyMDgsIDE3NCwgMTIsIDIxMSwgMzIsIDIxMCwgNzEsIDEyLCAyMTEsIDMyLCAyMTAsIDE2MywgCi0gICAgMTIsIDIxMSwgMzIsIDIzNSwgMjIzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDcsIDEyLCAyMTEsIDMyLCAyMTgsIDIxMCwgMTIsIAotICAgIDIxMSwgMzIsIDIxNywgMTM0LCA2NywgMSwgNSwgMjI4LCAyMDksIDY3LCAxLCA1LCAyMTIsIDE2MiwgNjcsIDEsIDUsIDIxMSwgCi0gICAgMTAsIDY3LCAxLCA1LCAxMzUsIDY3LCAxLCA1LCAyMjEsIDg0LCA2NywgMSwgNSwgMTUyLCA2NywgMSwgNSwgMjM3LCAzLCAKLSAgICA2NywgMSwgNSwgMjM2LCAyNiwgNjcsIDEsIDUsIDIzNywgNjcsIDY3LCAxLCA1LCAyMzYsIDEzNiwgNjcsIDEsIDUsIDIyMywgCi0gICAgMjQ2LCA2NywgMSwgNSwgMjE2LCAyMjAsIDY3LCAxLCA1LCAyMTYsIDU3LCA2NywgMSwgNSwgMjE1LCAxNDUsIDY3LCAxLCA1LCAKLSAgICAyMTYsIDE1OCwgNjcsIDEsIDUsIDIxNSwgMjI3LCAxMDIsIDI4LCAyMjksIDU5LCAxMDIsIDI4LCAyMjIsIDkzLCAxMDIsIAotICAgIDI4LCAyMDgsIDI0MCwgMTAyLCAyOCwgMjE2LCA0NywgMTAyLCAyOCwgMjI0LCAxNDEsIDEwMiwgMjgsIDIxOCwgMTUzLCAKLSAgICAxMDIsIDI4LCAyMTIsIDExMSwgMTAyLCAyOCwgMjMxLCAxMDYsIDEwMiwgMjgsIDI0NiwgNzQsIDEwMiwgMjgsIDI0NiwgCi0gICAgMTM4LCAxMDIsIDI4LCAyMjksIDEyMCwgMTAyLCAyOCwgMjA5LCA2NiwgMTAyLCAyOCwgMjE4LCAxOTAsIDEwMiwgMjgsIAotICAgIDIzNiwgMjUxLCAxMDIsIDI4LCAyMjksIDYwLCA2MywgMTAyLCAyOCwgMjIyLCA5NCwgNjMsIDEwMiwgMjgsIDIwOCwgMjQxLCAKLSAgICA2MywgMTAyLCAyOCwgMjE2LCA0OCwgNjMsIDEwMiwgMjgsIDIyNCwgMTQyLCA2MywgMTAyLCAyOCwgMjE4LCAxNTQsIDYzLCAKLSAgICAxMDIsIDI4LCAyMTIsIDExMiwgNjMsIDEwMiwgMjgsIDIzMSwgMTA3LCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjMsIDEwMiwgCi0gICAgMjgsIDI0NiwgMTM5LCA2MywgMTAyLCAyOCwgMjI5LCAxMjEsIDYzLCAxMDIsIDI4LCAyMDksIDY3LCA2MywgMTAyLCAyOCwgCi0gICAgMjE4LCAxOTEsIDYzLCAxMDIsIDI4LCAyMzYsIDI1MiwgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDY4LCAxMDIsIDIyOCwgMjUzLCAKLSAgICAxNjcsIDIyMCwgNTQsIDEwMiwgMjI4LCAyNTMsIDE2NywgMTU4LCAyMzYsIDI2LCAxMDIsIDE4OSwgMTA1LCAxMDIsIDE4OSwgCi0gICAgMTA4LCAxMDIsIDE4OSwgMTQ3LCAxMDIsIDE4OSwgMTQ5LCAxMDIsIDE4OSwgMTcwLCAxMDIsIDE4OSwgMTk1LCAxMDIsIAotICAgIDE4OSwgMjEzLCAxMTEsIDEwMiwgMTg5LCAxOTksIDEwMiwgMTg5LCAyMjIsIDYzLCAxMDIsIDE4OSwgMjA5LCAxNTIsIDEwMiwgCi0gICAgMTg5LCAyMjQsIDI5LCAxMDIsIDE4OSwgMjM5LCAyNDksIDEwMiwgMTg5LCAyMDQsIDgwLCAxMDIsIDE4OSwgMjAzLCAyNDMsIAotICAgIDEwMiwgMTg5LCAyMjQsIDIyMCwgMTAyLCAxODksIDI0MSwgMTc5LCAxMDIsIDE4OSwgMjEwLCAyMTQsIDEwMiwgMTg5LCAKLSAgICAyMTEsIDY0LCAxMDIsIDE4OSwgMjM3LCA3NCwgMTAyLCAxODksIDIxMiwgOSwgMTAyLCAxODksIDIyMywgODQsIDEwMiwgCi0gICAgMTg5LCAyMTEsIDIxMywgMTAyLCAxODksIDI0MCwgNCwgMTAyLCAxODksIDI0NSwgMjExLCAxMDIsIDE4OSwgMjI4LCAxMDIsIAotICAgIDEwMiwgMTg5LCAyMTYsIDk1LCAxMDIsIDE4OSwgMjQ3LCA3MSwgMTAyLCAxODksIDIxMSwgMTQsIDEwMiwgMTg5LCAyMTAsIAotICAgIDE5NiwgMTAyLCAxODksIDI0MSwgNjUsIDEwMiwgMTg5LCAyMTYsIDg3LCAxMDIsIDE4OSwgMjUxLCAxMCwgMTAyLCAxODksIAotICAgIDI0MCwgMzMsIDEwMiwgMTg5LCAyMTYsIDg1LCAxMDIsIDE4OSwgMjEzLCAxNDksIDEwMiwgMTg5LCAyMTYsIDE1NywgNDMsIAotICAgIDE4OSwgMjE3LCA0NiwgNDMsIDE4OSwgMjI5LCA4MywgNDMsIDE4OSwgMjE0LCAxOTUsIDQzLCAxODksIDIyOCwgMjQ5LCA0MywgCi0gICAgNDIsIDIwOSwgMTUzLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjA3LCAxNTIsIDIyMCwgMzIsIDYyLCAyMTEsIAotICAgIDE3NywgNDMsIDQyLCAyMDksIDU0LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjM5LCAxNTQsIDIyMCwgMzIsIAotICAgIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyNDAsIDE5LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEyLCA3NSwgCi0gICAgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMywgMTA2LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgCi0gICAgMjQxLCAxMzUsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgMjE5LCA2NywgNTQsIDQzLCA0MiwgMjA3LCAxNTIsIDEwNSwgNDMsIAotICAgIDQyLCAyMDcsIDE1MiwgMTA4LCA0MywgNDIsIDIwNywgMTUyLCAxNDcsIDQzLCA0MiwgMjA3LCAxNTIsIDE0OSwgNDMsIDQyLCAKLSAgICAyMDcsIDE1MiwgMTcwLCA0MywgNDIsIDIwNywgMTUyLCAxOTUsIDQzLCA0MiwgMjA3LCAxNTIsIDIxMywgMTExLCA0MywgNDIsIAotICAgIDIwNywgMTUyLCAxOTksIDQzLCA0MiwgMjA3LCAxNTIsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCA1MywgNDMsIDQyLCAyMDksIAotICAgIDU0LCAxMDUsIDQzLCA0MiwgMjA5LCA1NCwgMTA4LCA0MywgNDIsIDIwOSwgNTQsIDE0NywgNDMsIDQyLCAyMDksIDU0LCAKLSAgICAxNDksIDQzLCA0MiwgMjA5LCA1NCwgMTcwLCA0MywgMjgsIDIyOSwgNTksIDQzLCAyOCwgMjIyLCA5MywgNDMsIDI4LCAyMDgsIAotICAgIDI0MCwgNDMsIDI4LCAyMTYsIDQ3LCA0MywgMjgsIDIyNCwgMTQxLCA0MywgMjgsIDIxOCwgMTUzLCA0MywgMjgsIDIxMiwgCi0gICAgMTExLCA0MywgMjgsIDIzMSwgMTA2LCA0MywgMjgsIDI0NiwgNzQsIDQzLCAyOCwgMjQ2LCAxMzgsIDQzLCAyOCwgMjI5LCAKLSAgICAxMjAsIDQzLCAyOCwgMjA5LCA2NiwgNDMsIDI4LCAyMTgsIDE5MCwgNDMsIDI4LCAyMzYsIDI1MSwgNDMsIDI4LCAyMjksIAotICAgIDYwLCA2MywgNDMsIDI4LCAyMjIsIDk0LCA2MywgNDMsIDI4LCAyMDgsIDI0MSwgNjMsIDQzLCAyOCwgMjE2LCA0OCwgNjMsIAotICAgIDQzLCAyOCwgMjI0LCAxNDIsIDYzLCA0MywgMjgsIDIxOCwgMTU0LCA2MywgNDMsIDI4LCAyMTIsIDExMiwgNjMsIDQzLCAyOCwgCi0gICAgMjMxLCAxMDcsIDYzLCA0MywgMjgsIDI0NiwgNzUsIDYzLCA0MywgMjgsIDI0NiwgMTM5LCA2MywgNDMsIDI4LCAyMjksIAotICAgIDEyMSwgNjMsIDQzLCAyOCwgMjA5LCA2NywgNjMsIDQzLCAyOCwgMjE4LCAxOTEsIDYzLCA0MywgMjgsIDIzNiwgMjUyLCA2MywgCi0gICAgNDMsIDIyOCwgMjUzLCAxNjcsIDI0NiwgMTg5LCA0MywgMjI4LCAyNTMsIDE2NywgMjMwLCA3OCwgNDMsIDI4LCAyMzEsIAotICAgIDEwNywgNjgsIDIyOCwgMjUzLCAyMTEsIDk3LCA5NywgNDMsIDE4OSwgMTA1LCA0MywgMTg5LCAxMDgsIDQzLCAxODksIDE0NywgCi0gICAgNDMsIDE4OSwgMTQ5LCA0MywgMTg5LCAxNzAsIDQzLCAxODksIDE5NSwgNDMsIDE4OSwgMjEzLCAxMTEsIDQzLCAxODksIAotICAgIDE5OSwgNDMsIDE4OSwgMjIyLCA2MywgNDMsIDE4OSwgMjA5LCAxNTIsIDQzLCAxODksIDIyNCwgMjksIDQzLCAxODksIDIzOSwgCi0gICAgMjQ5LCA0MywgMTg5LCAyMDQsIDgwLCA0MywgMTg5LCAyMDMsIDI0MywgNDMsIDE4OSwgMjI0LCAyMjAsIDQzLCAxODksIAotICAgIDI0MSwgMTc5LCA0MywgMTg5LCAyMTAsIDIxNCwgNDMsIDE4OSwgMjExLCA2NCwgNDMsIDE4OSwgMjM3LCA3NCwgNDMsIDE4OSwgCi0gICAgMjEyLCA5LCA0MywgMTg5LCAyMjMsIDg0LCA0MywgMTg5LCAyMTEsIDIxMywgNDMsIDE4OSwgMjQwLCA0LCA0MywgMTg5LCAKLSAgICAyNDUsIDIxMSwgNDMsIDE4OSwgMjI4LCAxMDIsIDQzLCAxODksIDIxNCwgMTY5LCA0MywgMTg5LCAyMjUsIDEyNiwgNDMsIAotICAgIDE4OSwgMjQwLCA0MiwgNDMsIDE4OSwgMjEwLCAyMjYsIDQzLCAxODksIDI0MCwgMjE2LCA0MywgMTg5LCAyMTcsIDIzMywgCi0gICAgNDMsIDE4OSwgMjUwLCAzOCwgNDMsIDE4OSwgMjMwLCAyMDAsIDQzLCAxODksIDIxNiwgODUsIDQzLCAxODksIDI0NSwgMTcwLCAKLSAgICA0MywgMTg5LCAyNDUsIDE2MCwgNDMsIDE4OSwgMjM2LCAyNDQsIDQzLCAxODksIDI0NiwgMjE3LCA0MywgMTg5LCAyMjcsIDAsIAotICAgIDQzLCAxODksIDIyNywgMjIyLCA0MywgMTg5LCAyMTYsIDE2LCA0MywgMTg5LCAyMjUsIDExLCA0MywgMTg5LCAyMTYsIDExMiwgCi0gICAgNDMsIDE4OSwgMjExLCAxNCwgNDMsIDE4OSwgMjEwLCAxOTYsIDQzLCAxODksIDI0MSwgNjUsIDQzLCAxODksIDIxNiwgODcsIAotICAgIDQzLCAxODksIDI1MSwgMTAsIDQzLCAxODksIDIyMiwgNzksIDQzLCA0MiwgMjA5LCA1NCwgMTk1LCA0MywgNDIsIDIwOSwgCi0gICAgNTQsIDIxMywgMTExLCA0MywgNDIsIDIwOSwgNTQsIDE5OSwgNDMsIDQyLCAyMDksIDU0LCAyMjIsIDYzLCA0MywgNDIsIAotICAgIDIzOSwgMTUzLCA0MywgNDIsIDIzOSwgMTU0LCAxMDUsIDQzLCA0MiwgMjM5LCAxNTQsIDEwOCwgNDMsIDQyLCAyMzksIDE1NCwgCi0gICAgMTQ3LCA0MywgNDIsIDIzOSwgMTU0LCAxNDksIDQzLCA0MiwgMjM5LCAxNTQsIDE3MCwgNDMsIDQyLCAyMzksIDE1NCwgMTk1LCAKLSAgICA0MywgNDIsIDIzOSwgMTU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMzksIDE1NCwgMTk5LCA0MywgNDIsIDIzOSwgMTU0LCAyMjIsIAotICAgIDYzLCA0MywgNDIsIDI0MCwgMTgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCAxNzEsIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQwLCA1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDk0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI1MCwgCi0gICAgMTUwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NiwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI1MCwgMzAsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjEzLCAxMjksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjIwLCA3OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMjEsIDE1MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDcwLCA1MSwgMjM3LCAxMywgNTEsIDI0MSwgMjQsIDUxLCAKLSAgICAyNDAsIDIyNiwgMjI3LCAxMjAsIDIyNywgMTQ3LCA1NCwgNDMsIDY3LCA2MywgNDMsIDY3LCA3NSwgNDMsIDY3LCA2OCwgNDMsIAotICAgIDY3LCA3NCwgNDMsIDY3LCA3OCwgNDMsIDY3LCAxNzMsIDQzLCA2NywgMjI5LCAxMDAsIDQzLCA2NywgMjI4LCAyMDksIDQzLCAKLSAgICA2NywgMjI5LCAyMDEsIDQzLCA2NywgMjI5LCAyNiwgNDMsIDY3LCAyMTUsIDM2LCA0MywgNjcsIDIxMiwgMTYyLCA0MywgNjcsIAotICAgIDIxMSwgMTAsIDQzLCA2NywgMjE0LCAxNzcsIDQzLCA2NywgMjEyLCAxMywgNDMsIDY3LCAyMTAsIDIyLCA0MywgNjcsIDIwOSwgCi0gICAgMiwgNDMsIDY3LCAyMDcsIDIwMywgNDMsIDY3LCAyMDksIDE4NywgNDMsIDY3LCAxMzUsIDQzLCA2NywgMjAxLCAyMDEsIDQzLCAKLSAgICA2NywgMjIyLCAxMDAsIDQzLCA2NywgMjIxLCA4NCwgNDMsIDY3LCAyMjIsIDI0MCwgNDMsIDY3LCAyMjEsIDE5MSwgNDMsIAotICAgIDY3LCAxNTIsIDQzLCA2NywgMjM3LCAzLCA0MywgNjcsIDIzNiwgMjYsIDQzLCA2NywgMjM3LCA2NywgNDMsIDY3LCAyMzYsIAotICAgIDEzNiwgNDMsIDY3LCAxOTIsIDQzLCA2NywgMjI0LCAxNTUsIDQzLCA2NywgMjIzLCAyNDYsIDQzLCA2NywgMjI1LCAyMCwgCi0gICAgNDMsIDY3LCAyMjQsIDgyLCA0MywgNjcsIDE5OCwgNDMsIDY3LCAyMDIsIDIxMywgNDMsIDY3LCAyMDIsIDI0NywgNDMsIDY3LCAKLSAgICAyMTYsIDIyMCwgNDMsIDY3LCAyMTYsIDU3LCA0MywgNjcsIDIxNSwgMTQ1LCA0MywgNjcsIDIxNiwgMTU4LCA0MywgNjcsIAotICAgIDIxNSwgMjI3LCA0MywgNjcsIDIwNCwgMTExLCA0MywgNjcsIDIwNCwgMzAsIDQzLCA2NywgMjA0LCA2MiwgNDMsIDY3LCAKLSAgICAyMDQsIDAsIDUxLCAyNTAsIDE3NCwgNTEsIDI1MCwgODMsIDUxLCAyNTAsIDIwMSwgNTEsIDI1MSwgMjM5LCA1MSwgMjMxLCAKLSAgICAxOCwgNTEsIDIzMCwgMjQyLCA1MSwgMjA2LCAyMjcsIDUxLCAyNDAsIDI1MywgNTEsIDI0MSwgMTU4LCA1MSwgMjIwLCAyMSwgCi0gICAgNTEsIDIyMCwgMTQsIDUxLCAyMzAsIDE2LCA1MSwgMjI5LCAyMzgsIDUxLCAyMjksIDIzNSwgNTEsIDIzOCwgMjIwLCA1MSwgCi0gICAgMjM4LCAyMjksIDUxLCAyMzgsIDcwLCA1MSwgMjM4LCA2NiwgNTEsIDIyOCwgMTMyLCA1MSwgMjM4LCA1OCwgNTEsIDIyOSwgCi0gICAgNzUsIDUxLCAyMjksIDc0LCA1MSwgMjI5LCA3MywgNTEsIDIyOSwgNzIsIDUxLCAyMzcsIDIwMCwgNTEsIDIzNywgMTk5LCAKLSAgICA1MSwgMjI4LCAxODAsIDUxLCAyMjgsIDE4MiwgNTEsIDIyOSwgMTk0LCA1MSwgMjI4LCAyNTEsIDUxLCAyMjksIDMsIDUxLCAKLSAgICAyMTUsIDE3LCA1MSwgMjE0LCAyMzYsIDUxLCAyMTIsIDkyLCA1MSwgMjEzLCAxMzQsIDUxLCAyMTMsIDEzMywgNTEsIDI0NCwgCi0gICAgMjA5LCA1MSwgMjQ0LCAxNCwgNTEsIDI0MywgODYsIDUxLCAyMDgsIDE2MywgNTEsIDIyMywgNzksIDUxLCAyMjEsIDE1NCwgCi0gICAgNTEsIDIzNywgMTQyLCA1MSwgMjE5LCAxNjMsIDUxLCAyMTksIDE2MiwgNTEsIDI0OSwgMjksIDUxLCAyMTgsIDE2NCwgNTEsIAotICAgIDIxOCwgMTI3LCA1MSwgMjE4LCAxMjgsIDUxLCAyNDgsIDU3LCA1MSwgMjM2LCAyNCwgNTEsIDIzNiwgMTksIDUxLCAyNDcsIAotICAgIDE1MSwgNTEsIDIzNiwgNCwgNTEsIDIzNywgMzksIDUxLCAyMTgsIDIyMCwgNTEsIDIxOSwgNCwgNTEsIDIzNywgMjIsIDUxLCAKLSAgICAyMTksIDAsIDUxLCAyMTksIDE4LCA1MSwgMjQ4LCAxNDUsIDUxLCAyMTgsIDU4LCA1MSwgMjQ3LCAyNTMsIDUxLCAyMzYsIAotICAgIDEyMCwgNTEsIDIxOCwgNDYsIDUxLCAyMzYsIDExMSwgNTEsIDIzNiwgMTEzLCA1MSwgMjI1LCAxMzgsIDUxLCAyMjUsIDEzNCwgCi0gICAgNTEsIDIyNSwgMTQzLCA1MSwgMjI1LCA4MywgNTEsIDIyNSwgMTEwLCA1MSwgMjI0LCAxMjEsIDUxLCAyMjQsIDk3LCA1MSwgCi0gICAgMjI0LCA5NiwgNTEsIDIyNSwgMCwgNTEsIDIyNCwgMjUzLCA1MSwgMjI1LCAxLCA1MSwgMjAzLCAxMDksIDUxLCAyMDMsIAotICAgIDEwNywgNTEsIDIwMiwgMjAyLCA1MSwgMjE1LCAyNDMsIDUxLCAyMTUsIDI0NywgNTEsIDIxNSwgMTE5LCA1MSwgMjE1LCAKLSAgICAxMTMsIDUxLCAyMTYsIDEwOSwgNTEsIDIxNiwgMTA2LCA1MSwgMjA0LCA3OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIAotICAgIDQzLCAyMDIsIDg0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTk1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIzNiwgNDMsIDE5OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYzLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDI0MSwgMTEyLCAKLSAgICAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIAotICAgIDIwOSwgNTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMjQwLCAyMiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIzNiwgNDMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDI0MSwgMTQwLCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAKLSAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDcsIDUxLCAyMzYsIDM0LCA1MSwgMjQ0LCAyMTIsIDUxLCAyNTAsIDM0LCAKLSAgICA1MSwgMTQyLCA1MSwgMjE5LCAyMDYsIDUxLCAyMTksIDM5LCA1MSwgMjQzLCAxMTUsIDUxLCAyNDMsIDExNiwgMjExLCAxNzYsIAotICAgIDUxLCAyNDMsIDExNiwgMjQ1LCAxMDUsIDUxLCAyMzAsIDE5NywgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIzNywgNDAsIDUxLCAKLSAgICAyNDEsIDI3LCAyMjMsIDg1LCAyMTAsIDkyLCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjA5LCAyNDUsIDUxLCAyNDEsIDI3LCAKLSAgICAyMjMsIDg1LCAyMjQsIDI1MiwgNTEsIDI0NSwgMTYyLCA1MSwgMjE5LCAxNjksIDI1MCwgMjMzLCA1MSwgMjAxLCAyMDEsIAotICAgIDUxLCAyMjMsIDI0NywgNjMsIDUxLCAxOTIsIDUxLCAxNzMsIDUxLCAyMjksIDIwNCwgNTEsIDIyNSwgNTksIDUxLCAyMzgsIAotICAgIDIwOCwgNTEsIDI0NywgNzYsIDUxLCAyMjksIDIwMywgNTEsIDIxOCwgMjExLCA1MSwgMjIyLCAyMDcsIDUxLCAyMjMsIDI0NywgCi0gICAgMjQwLCAxNzQsIDUxLCAyMjMsIDI0NywgMjM5LCA3NSwgNTEsIDIyNCwgMTk2LCA1MSwgMjI5LCAxNDYsIDUxLCAyMzUsIAotICAgIDIxNSwgNTEsIDIyOSwgMTAyLCA1MSwgMjI0LCAxNTcsIDUxLCAyMzgsIDgzLCA1MSwgMjA5LCA0LCA1MSwgMjIzLCAyNDcsIAotICAgIDE1OSwgNTEsIDIyNCwgOTAsIDUxLCAyNDMsIDEyNSwgNTEsIDIyOSwgNDEsIDUxLCAyMzksIDE4OCwgNTEsIDIyMSwgMjI5LCAKLSAgICA1MSwgMjIzLCAyNDcsIDIyNiwgMTg1LCA1MSwgMjI0LCA4NywgNTEsIDI0NSwgMjU1LCA1MSwgMjI5LCAzNSwgNTEsIDIyNCwgCi0gICAgODgsIDIxMSwgMTc2LCA1MSwgMjQ2LCAwLCAyMTEsIDE3NiwgNTEsIDIyNiwgMTg2LCAyMTEsIDE3NiwgNTEsIDIyOSwgMzYsIAotICAgIDIxMSwgMTc2LCA1MSwgMjI0LCA4OCwgMjQ1LCAxMDUsIDUxLCAyNDYsIDAsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDI0NSwgCi0gICAgMTA1LCA1MSwgMjI5LCAzNiwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMTE1LCAxOTQsIDUxLCAyMjYsIDE4NiwgMTE1LCAKLSAgICAyMTUsIDk0LCAyMTEsIDE3NiwgNTEsIDE4NSwgNTEsIDIyOCwgMjQ0LCA1MSwgMjIzLCAyNTAsIDUxLCAyMzgsIDE1LCA1MSwgCi0gICAgMjE2LCAyMDcsIDUxLCAyMTYsIDIwOCwgMTE1LCAxOTQsIDUxLCAyMTYsIDIwOCwgMTE1LCAyMTUsIDk0LCAyMTEsIDE3NiwgCi0gICAgNTEsIDIxNywgMjA0LCA1MSwgMjIxLCAxMjIsIDUxLCAyMjMsIDI0NywgMTk0LCA1MSwgMjIzLCAyNDgsIDUxLCAyMTcsIAotICAgIDE1NCwgNTEsIDIyMSwgMjIsIDUxLCAyMjMsIDI0NywgMjA2LCAxNjQsIDUxLCAyMjMsIDE4NywgNTEsIDIyOCwgMTcwLCA1MSwgCi0gICAgMjIzLCAxODgsIDIyNSwgMCwgNTEsIDIxNywgMTUzLCA1MSwgMjIxLCAyMSwgNTEsIDIyMywgMjQ3LCAyMDQsIDE0NCwgNTEsIAotICAgIDIyMywgMTgxLCA1MSwgMjI4LCAxNjgsIDUxLCAyMjMsIDE4MiwgMjI1LCAwLCA1MSwgMjMwLCA1NSwgMjIwLCA1OCwgNTEsIAotICAgIDIyNiwgMTg2LCAyMjAsIDU4LCA1MSwgMjUwLCAyNDcsIDUxLCAyNDcsIDIyOSwgNTEsIDI0NywgNiwgNTEsIDI0NiwgMjM5LCAKLSAgICA1MSwgMjQ3LCAxMjYsIDExNSwgMjI5LCAxNDYsIDUxLCAyNDUsIDI1NCwgNTEsIDI0NCwgMTI5LCA1MSwgMjM3LCAxODQsIAotICAgIDUxLCAxNTIsIDUxLCAyMzYsIDM1LCA1MSwgMjMxLCA0OSwgNTEsIDIyOSwgNDgsIDUxLCAyMjksIDM2LCAyNDcsIDQ3LCA1MSwgCi0gICAgMjI4LCAyMTEsIDUxLCAyMjcsIDUyLCA1MSwgMjI3LCA1MSwgNTEsIDIyNywgMzgsIDUxLCAyMjYsIDIwMCwgNTEsIDIyNSwgCi0gICAgNjAsIDIxMiwgMzYsIDUxLCAyMjQsIDEyMCwgNTEsIDIyNCwgNTYsIDUxLCAyMTgsIDIwOSwgNTEsIDIxOCwgNzIsIDUxLCAKLSAgICAyMTgsIDExLCA1MSwgMjE4LCA5LCA1MSwgMjExLCAxNjgsIDUxLCAyMTAsIDE3NywgNTEsIDIwNCwgNjQsIDUxLCAyMDYsIAotICAgIDE2NSwgMTE1LCAyMjYsIDE4NSwgNTEsIDM0LCAxMTUsIDIyNiwgMTg1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgCi0gICAgMTMzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQ0LCAxMzMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTk1LCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDI0NCwgMTMzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTk5LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMjIsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKLSAgICAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxMTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQ0LCAxMzMsIDIwNywgMTU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDU1LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCi0gICAgMjQwLCAyMiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTQwLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAotICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCi0gICAgMTQ4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjA3LCAxNDQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTUwLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCAKLSAgICA1MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1MiwgNTEsIDIzOCwgMjQ2LCAyMzcsIDE2LCAzNSwgCi0gICAgMjA5LCA5MywgMjQ1LCAxNDIsIDIzNywgNTEsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMTYsIDE1MSwgMjQxLCAxNzksIAotICAgIDIzNywgMTYsIDM1LCAyNDMsIDIwMywgMjUwLCA1MCwgMjA5LCA5MywgMjQ4LCAxNDAsIDIzNywgMTYsIDM1LCAyMDIsIDIyNiwgCi0gICAgMjM5LCAxODAsIDIzNywgMTYsIDM1LCAyMDQsIDEwMywgMjM3LCAxNiwgMzUsIDI0NSwgMjE0LCAyMzcsIDE2LCAzNSwgMjA5LCAKLSAgICA5MywgMjUwLCAxMDUsIDIzNywgMTYsIDM1LCAyMzYsIDEyNywgMjA4LCAxNjksIDIzNywgMTYsIDM1LCA1LCAyMDksIDIzMSwgCi0gICAgMjM3LCAxNiwgMzUsIDIwOCwgOTcsIDIzNywgMTYsIDM1LCAyMTksIDMyLCAyMzcsIDE2LCAzNSwgMjExLCA5NiwgMjM3LCAKLSAgICAxNiwgMzUsIDI0MCwgNDQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE4LCAzMiwgMjM3LCAxNiwgMzUsIDIyNCwgNzUsIAotICAgIDIzNywgMTYsIDM1LCAyNDEsIDY0LCAyMzcsIDE2LCAzNSwgMjM5LCAxODEsIDIzNywgMTYsIDM1LCAyMDMsIDIzNiwgMjIwLCAKLSAgICAzMiwgMjA5LCA5MywgMjQ0LCA3MSwgMjM3LCAxNiwgMzUsIDI1MCwgMTU0LCAyMzcsIDE2LCAzNSwgMjQ1LCAxOTMsIDIzNywgCi0gICAgMTYsIDM1LCAyNDgsIDQ5LCAyMDksIDI0LCAyMzcsIDE2LCAzNSwgMjM4LCAxMywgMjM3LCAxNiwgMzUsIDIxMSwgMTkyLCAKLSAgICAyNTAsIDE3MywgMjM3LCAxNiwgMzUsIDIxNiwgNzcsIDIzNywgMTYsIDM1LCAyMzEsIDEyLCAyMzcsIDE2LCAzNSwgMjM3LCAKLSAgICAyNDksIDIwOSwgMjMxLCAyMzcsIDE2LCAzNSwgMjI0LCA4LCAyNDUsIDE2NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTcsIAotICAgIDI0NCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI1MSwgMTQzLCAyMDQsIDgwLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ2LCAKLSAgICAyNCwgMjM5LCAyNDksIDIzNywgMTYsIDM1LCAyMzEsIDI2LCAyMzcsIDE2LCAzNSwgMjQyLCAyMCwgMjM3LCAxNiwgMzUsIAotICAgIDIxNiwgODAsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE4LCAxNiwgMjM3LCAxNiwgMzUsIDIxNywgMjIxLCAyMzcsIDE2LCAKLSAgICAzNSwgMjQ0LCAxNDksIDc2LCAyMDksIDkzLCAyMjcsIDEzNCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0MCwgODIsIDIzNywgCi0gICAgMTYsIDM1LCAyMTksIDI1MCwgMjM3LCAxNiwgMzUsIDIyMCwgODUsIDIzNywgMTYsIDM1LCAyNDQsIDQyLCAyMzcsIDE2LCAKLSAgICAzNSwgMjQ0LCA2MywgMjM3LCAxNiwgMzUsIDIzMSwgNDAsIDIzNywgMTYsIDM1LCAyNDcsIDIxNywgMjM3LCAxNiwgMzUsIAotICAgIDI0NSwgMjM1LCAyMDgsIDE3MywgMjI1LCAzLCAyMzcsIDE2LCAzNSwgMjM4LCAyMTUsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgCi0gICAgMjE3LCAxNjMsIDIwNiwgMjEzLCAyMzcsIDE2LCAzNSwgMjE5LCAyNDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDUwLCAKLSAgICAyMzcsIDE2LCAzNSwgMjE2LCA2OCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NywgMTIsIDIzNywgMTYsIDM1LCAyMDksIAotICAgIDkzLCAyNTAsIDEwMSwgMjA5LCAxOCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyOSwgMTk1LCAyMTEsIDY4LCAyMjQsIDEyLCAKLSAgICAyMzcsIDE2LCAzNSwgMjQ0LCA5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI1LCA4NSwgMjI1LCAxMzksIDIzNywgMTYsIAotICAgIDM1LCAyNTEsIDE0NCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgOTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzgsIAotICAgIDE3MywgMjA0LCAxNiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzMCwgODQsIDIyOCwgMzMsIDIzNywgMTYsIDM1LCAyNDMsIAotICAgIDE1MywgMjM3LCAxNiwgMzUsIDIyNywgMTIxLCAyMzcsIDE2LCAzNSwgMjMxLCAxNSwgMjA4LCAyNCwgMjM3LCAxNiwgMzUsIAotICAgIDUsIDIxNywgMjQ0LCAyMzcsIDE2LCAzNSwgMjUxLCA4MiwgMjQ1LCAyMjYsIDIzNywgMTYsIDM1LCAyNDgsIDE0MywgMjQ1LCAKLSAgICAyMjYsIDExLCA0LCAyMzAsIDIwMSwgMTEsIDQsIDIzMCwgMTkzLCAxMSwgNCwgNzUsIDExLCA0LCAyMzAsIDIyNywgMTEsIDQsIAotICAgIDIzMSwgMTA4LCAxMSwgNCwgMjMxLCA5MSwgMTEsIDQsIDIzMSwgMTEwLCAxMSwgNCwgMjMxLCAxMDksIDExLCA0LCAyNTAsIAotICAgIDQ5LCAxMSwgNCwgMjUwLCAxMCwgMTEsIDQsIDYzLCAxMSwgNCwgMjUwLCAxNzUsIDExLCA0LCAyMDYsIDIyNSwgMTEsIDQsIAotICAgIDIwNiwgMjI4LCAxMSwgNCwgMjA2LCAyMjYsIDExLCA0LCAyMTksIDIyNCwgMTEsIDQsIDIxOSwgMTkzLCAxMSwgNCwgNzgsIAotICAgIDExLCA0LCAyMjAsIDksIDExLCA0LCAyNDAsIDIxNywgMTEsIDQsIDc0LCAxMSwgNCwgMjAzLCAyMTcsIDExLCA0LCAyNDgsIAotICAgIDUxLCAxMSwgNCwgMjQ4LCA0NywgMTEsIDQsIDI0OCwgODYsIDExLCA0LCAyNDgsIDYxLCAxMSwgNCwgMjQ4LCA3NSwgMTEsIAotICAgIDQsIDI0OCwgNzQsIDExLCA0LCAyNDgsIDc3LCAxMSwgNCwgMjQ4LCA3NiwgMTEsIDQsIDI0OCwgMjA5LCAxMSwgNCwgMjQ4LCAKLSAgICAyMDEsIDExLCA0LCAyNDksIDMyLCAxMSwgNCwgMjQ4LCAyMzIsIDExLCA0LCAyNDcsIDE2MywgMTEsIDQsIDI0NywgMTY3LCAKLSAgICAxMSwgNCwgMjQ3LCAxNjQsIDExLCA0LCAyNDcsIDI1MiwgMTEsIDQsIDI0NywgMjMzLCAxMSwgNCwgMjQ4LCAyMywgMTEsIDQsIAotICAgIDI0OCwgMiwgMTEsIDQsIDI0OCwgMTAxLCAxMSwgNCwgMjQ4LCAxNjIsIDExLCA0LCAyNDgsIDExMywgMTEsIDQsIDI0NywgCi0gICAgMTQ3LCAxMSwgNCwgMjQ3LCAxNDMsIDExLCA0LCAyNDcsIDE5MywgMTEsIDQsIDI0NywgMTYyLCAxMSwgNCwgMjQ3LCAxNTUsIAotICAgIDExLCA0LCAyNDcsIDE2MCwgMTEsIDQsIDI0NywgMTMxLCAxMSwgNCwgMjQ3LCAxMjksIDExLCA0LCAyNDcsIDEzNiwgMTEsIAotICAgIDQsIDI0NywgMTM0LCAxMSwgNCwgMjQ3LCAxMzIsIDExLCA0LCAyNDcsIDEzMywgMTEsIDQsIDIxOCwgMTA1LCAxMSwgNCwgCi0gICAgMjE4LCAxMDEsIDExLCA0LCAyMTgsIDE2NywgMTEsIDQsIDIxOCwgMTE3LCAxMSwgNCwgMjE4LCAxMzMsIDExLCA0LCAyMTgsIAotICAgIDE2MCwgMTEsIDQsIDIxOCwgMTU2LCAxMSwgNCwgMjE5LCA1NSwgMTEsIDQsIDIxOSwgNDQsIDExLCA0LCAxODUsIDExLCA0LCAKLSAgICAyMTksIDk2LCAxMSwgNCwgMjE3LCAxNzMsIDExLCA0LCAyMTcsIDE3NSwgMTEsIDQsIDIxNywgMTc0LCAxMSwgNCwgMjE4LCAKLSAgICAyNSwgMTEsIDQsIDIxOCwgMTQsIDExLCA0LCAyMTgsIDY5LCAxMSwgNCwgMjE4LCA0MSwgMTEsIDQsIDIxNywgMTU5LCAxMSwgCi0gICAgNCwgMjE3LCAxNTUsIDExLCA0LCAyMTcsIDE5MSwgMTEsIDQsIDIxNywgMTcyLCAxMSwgNCwgMjE3LCAxNjQsIDExLCA0LCAKLSAgICAyMTcsIDE3MCwgMTEsIDQsIDIxNywgMTM4LCAxMSwgNCwgMjE3LCAxMzcsIDExLCA0LCAyMTcsIDE0MiwgMTEsIDQsIDIxNywgCi0gICAgMTQxLCAxMSwgNCwgMjE3LCAxMzksIDExLCA0LCAyMTcsIDE0MCwgMTEsIDQsIDI0OCwgMTgzLCAxMSwgNCwgMjQ4LCAxODIsIAotICAgIDExLCA0LCAyNDgsIDE4OSwgMTEsIDQsIDI0OCwgMTg0LCAxMSwgNCwgMjQ4LCAxODYsIDExLCA0LCAyNDgsIDE4NSwgMTEsIAotICAgIDQsIDI0OCwgMTg4LCAxMSwgNCwgMjQ4LCAxODcsIDExLCA0LCAyNDgsIDE5NSwgMTEsIDQsIDI0OCwgMTk0LCAxMSwgNCwgCi0gICAgMjQ4LCAxOTgsIDExLCA0LCAyNDgsIDE5NiwgMTEsIDQsIDI0OCwgMTc0LCAxMSwgNCwgMjQ4LCAxNzYsIDExLCA0LCAyNDgsIAotICAgIDE3NSwgMTEsIDQsIDI0OCwgMTc5LCAxMSwgNCwgMjQ4LCAxNzgsIDExLCA0LCAyNDgsIDE4MSwgMTEsIDQsIDI0OCwgMTgwLCAKLSAgICAxMSwgNCwgMjQ4LCAxOTAsIDExLCA0LCAyNDgsIDE5MywgMTEsIDQsIDI0OCwgMTkxLCAxMSwgNCwgMjQ4LCAxNzAsIDExLCAKLSAgICA0LCAyNDgsIDE2OSwgMTEsIDQsIDI0OCwgMTc3LCAxMSwgNCwgMjQ4LCAxNzMsIDExLCA0LCAyNDgsIDE3MSwgMTEsIDQsIAotICAgIDI0OCwgMTcyLCAxMSwgNCwgMjQ4LCAxNjYsIDExLCA0LCAyNDgsIDE2NSwgMTEsIDQsIDI0OCwgMTY4LCAxMSwgNCwgMjQ4LCAKLSAgICAxNjcsIDExLCA0LCAyMjMsIDQ3LCAxMSwgNCwgMjIzLCA0NiwgMTEsIDQsIDIyMywgNTIsIDExLCA0LCAyMjMsIDQ4LCAxMSwgCi0gICAgNCwgMjIzLCA0OSwgMTEsIDQsIDIyMywgNTEsIDExLCA0LCAyMjMsIDUwLCAxMSwgNCwgMjIzLCA1NSwgMTEsIDQsIDIyMywgCi0gICAgNTQsIDExLCA0LCAyMjMsIDU3LCAxMSwgNCwgMjIzLCA1NiwgMTEsIDQsIDIyMywgNDMsIDExLCA0LCAyMjMsIDQyLCAxMSwgCi0gICAgNCwgMjIzLCA0NSwgMTEsIDQsIDIyMywgNDQsIDExLCA0LCAyMjMsIDM2LCAxMSwgNCwgMjIzLCAzNSwgMTEsIDQsIDIyMywgCi0gICAgNDAsIDExLCA0LCAyMjMsIDM5LCAxMSwgNCwgMjIzLCAzNywgMTEsIDQsIDIyMywgMzgsIDExLCA0LCAyMjMsIDMwLCAxMSwgCi0gICAgNCwgMjIzLCAyOSwgMTEsIDQsIDIyMywgMzQsIDExLCA0LCAyMjMsIDMzLCAxMSwgNCwgMjIzLCAzMSwgMTEsIDQsIDIyMywgCi0gICAgMzIsIDExLCA0LCAyMzYsIDE4MCwgMTEsIDQsIDIzNiwgMTc5LCAxMSwgNCwgMjM2LCAxODUsIDExLCA0LCAyMzYsIDE4MSwgCi0gICAgMTEsIDQsIDIzNiwgMTgyLCAxMSwgNCwgMjM2LCAxODQsIDExLCA0LCAyMzYsIDE4MywgMTEsIDQsIDIzNiwgMTg4LCAxMSwgCi0gICAgNCwgMjM2LCAxODcsIDExLCA0LCAyMzYsIDE5MCwgMTEsIDQsIDIzNiwgMTg5LCAxMSwgNCwgMjM2LCAxNzEsIDExLCA0LCAKLSAgICAyMzYsIDE3MywgMTEsIDQsIDIzNiwgMTcyLCAxMSwgNCwgMjM2LCAxNzYsIDExLCA0LCAyMzYsIDE3NSwgMTEsIDQsIDIzNiwgCi0gICAgMTc4LCAxMSwgNCwgMjM2LCAxNzcsIDExLCA0LCAyMzYsIDE2NywgMTEsIDQsIDIzNiwgMTY2LCAxMSwgNCwgMjM2LCAxNzQsIAotICAgIDExLCA0LCAyMzYsIDE3MCwgMTEsIDQsIDIzNiwgMTY4LCAxMSwgNCwgMjM2LCAxNjksIDExLCA0LCAyMzYsIDE2MSwgMTEsIAotICAgIDQsIDIzNiwgMTY1LCAxMSwgNCwgMjM2LCAxNjQsIDExLCA0LCAyMzYsIDE2MiwgMTEsIDQsIDIzNiwgMTYzLCAxMSwgNCwgCi0gICAgMjI0LCA5MywgMTEsIDQsIDIyNCwgOTIsIDExLCA0LCAyMjQsIDE1NSwgMTEsIDQsIDIyNCwgOTksIDExLCA0LCAyMjQsIAotICAgIDEyNywgMTEsIDQsIDIyNCwgMTQ1LCAxMSwgNCwgMjI0LCAxNDMsIDExLCA0LCAyMjUsIDcxLCAxMSwgNCwgMjI1LCA2NiwgCi0gICAgMTEsIDQsIDE5MiwgMTEsIDQsIDIyNSwgMTA2LCAxMSwgNCwgMjIzLCAyMTMsIDExLCA0LCAyMjMsIDIxMiwgMTEsIDQsIAotICAgIDIyMywgMjE2LCAxMSwgNCwgMjIzLCAyMTQsIDExLCA0LCAyMjQsIDIxLCAxMSwgNCwgMjIzLCAyNTIsIDExLCA0LCAyMjQsIAotICAgIDgyLCAxMSwgNCwgMjI0LCAyNywgMTEsIDQsIDIyNCwgMjA3LCAxMSwgNCwgMjI1LCAyMCwgMTEsIDQsIDIyMywgMTkzLCAxMSwgCi0gICAgNCwgMjIzLCAxODksIDExLCA0LCAyMjMsIDI0NiwgMTEsIDQsIDIyMywgMjA5LCAxMSwgNCwgMjIzLCAyMDIsIDExLCA0LCAKLSAgICAyMjMsIDIwNywgMTEsIDQsIDIyMywgMTY2LCAxMSwgNCwgMjIzLCAxNjUsIDExLCA0LCAyMjMsIDE3MSwgMTEsIDQsIDIyMywgCi0gICAgMTY4LCAxMSwgNCwgMjM5LCAyMzYsIDExLCA0LCAyMzksIDIzMCwgMTEsIDQsIDI0MCwgMjYsIDExLCA0LCAyMzksIDI1MSwgCi0gICAgMTEsIDQsIDI0MCwgNzMsIDExLCA0LCAyNDAsIDY0LCAxMSwgNCwgMjQwLCAxMDgsIDExLCA0LCAyNDAsIDc4LCAxMSwgNCwgCi0gICAgMjM5LCAxMzksIDExLCA0LCAyMzksIDE4NiwgMTEsIDQsIDIzOSwgMTY3LCAxMSwgNCwgMjM5LCA5MSwgMTEsIDQsIDIzOSwgCi0gICAgOTAsIDExLCA0LCAyMzksIDEwOCwgMTEsIDQsIDIzOSwgOTYsIDExLCA0LCAyMzksIDk0LCAxMSwgNCwgMjM5LCA5NSwgMTEsIAotICAgIDQsIDIzOSwgNzgsIDExLCA0LCAyMzksIDc3LCAxMSwgNCwgMjM5LCA4MSwgMTEsIDQsIDIzOSwgNzksIDExLCA0LCAyMDUsIAotICAgIDE5NiwgMTEsIDQsIDIwNSwgMTkxLCAxMSwgNCwgMjA1LCAyMzAsIDExLCA0LCAyMDUsIDIwNSwgMTEsIDQsIDIwNSwgMjE5LCAKLSAgICAxMSwgNCwgMjA1LCAyMTYsIDExLCA0LCAyMDUsIDIyMiwgMTEsIDQsIDIwNSwgMjIxLCAxMSwgNCwgMjA2LCA2MywgMTEsIDQsIAotICAgIDIwNiwgNTgsIDExLCA0LCAyMDYsIDg2LCAxMSwgNCwgMjA2LCA3NSwgMTEsIDQsIDIwNSwgMTcyLCAxMSwgNCwgMjA1LCAKLSAgICAxNjgsIDExLCA0LCAyMDUsIDE4OSwgMTEsIDQsIDIwNSwgMTc0LCAxMSwgNCwgMjA1LCAyMzMsIDExLCA0LCAyMDYsIDQ0LCAKLSAgICAxMSwgNCwgMjA0LCAxNTcsIDExLCA0LCAyMDQsIDE1NSwgMTEsIDQsIDIwNCwgMTYzLCAxMSwgNCwgMjA0LCAxNjAsIDExLCAKLSAgICA0LCAyMDQsIDE1OCwgMTEsIDQsIDIwNCwgMTU5LCAxMSwgNCwgMjA0LCAxNDgsIDExLCA0LCAyMDQsIDE0NywgMTEsIDQsIAotICAgIDIwNCwgMTUyLCAxMSwgNCwgMjA0LCAxNTEsIDExLCA0LCAyMDQsIDE0OSwgMTEsIDQsIDIwNCwgMTUwLCAxMSwgNCwgMjQzLCAKLSAgICAxNDcsIDExLCA0LCAyNDMsIDEzNCwgMTEsIDQsIDI0MywgMjMzLCAxMSwgNCwgMjQzLCAxNzMsIDExLCA0LCAyNDMsIDIwOCwgCi0gICAgMTEsIDQsIDI0MywgMjEzLCAxMSwgNCwgMjQzLCAyMTIsIDExLCA0LCAyNDQsIDE0MCwgMTEsIDQsIDI0NCwgMTM0LCAxMSwgCi0gICAgNCwgMjQ0LCAyMTIsIDExLCA0LCAyNDQsIDE2MCwgMTEsIDQsIDI0MiwgMjUsIDExLCA0LCAyNDIsIDI2LCAxMSwgNCwgMjQzLCAKLSAgICA4NSwgMTEsIDQsIDI0MiwgNjcsIDExLCA0LCAyNDMsIDExMywgMTEsIDQsIDI0MywgODcsIDExLCA0LCAyNDQsIDcsIDExLCAKLSAgICA0LCAyNDQsIDc1LCAxMSwgNCwgMjQ0LCAyOCwgMTEsIDQsIDI0MiwgMTYsIDExLCA0LCAyNDIsIDE0LCAxMSwgNCwgMjQyLCAKLSAgICA0MiwgMTEsIDQsIDI0MiwgMjQsIDExLCA0LCAyNDIsIDE5LCAxMSwgNCwgMjQyLCAyMiwgMTEsIDQsIDIwOCwgMjAwLCAxMSwgCi0gICAgNCwgMjA4LCAxOTIsIDExLCA0LCAyMDksIDIsIDExLCA0LCAyMDgsIDIxMCwgMTEsIDQsIDIwOCwgMjQ4LCAxMSwgNCwgMjA4LCAKLSAgICAyNTAsIDExLCA0LCAyMDgsIDI0OSwgMTEsIDQsIDIwOSwgMjEyLCAxMSwgNCwgMjA5LCAxOTgsIDExLCA0LCAyMTAsIDIyLCAKLSAgICAxMSwgNCwgMjA5LCAyMjIsIDExLCA0LCAyMDcsIDE4NSwgMTEsIDQsIDIwNywgMTg0LCAxMSwgNCwgMjA3LCAxODcsIDExLCAKLSAgICA0LCAyMDcsIDE4NiwgMTEsIDQsIDIwOCwgMTMxLCAxMSwgNCwgMjA4LCAxMjEsIDExLCA0LCAxMzUsIDExLCA0LCAyMDgsIAotICAgIDE0NCwgMTEsIDQsIDIwOSwgMTE0LCAxMSwgNCwgMjA5LCAxODcsIDExLCA0LCAyMDksIDEzOSwgMTEsIDQsIDIwNywgMTY4LCAKLSAgICAxMSwgNCwgMjA3LCAxNjMsIDExLCA0LCAyMDcsIDIwMywgMTEsIDQsIDIwNywgMTgzLCAxMSwgNCwgMjA3LCAxNjksIDExLCAKLSAgICA0LCAyMDcsIDE4MSwgMTEsIDQsIDI0NCwgOTIsIDExLCA0LCAyNDQsIDkxLCAxMSwgNCwgMjQ0LCA5NywgMTEsIDQsIDI0NCwgCi0gICAgOTMsIDExLCA0LCAyNDQsIDk0LCAxMSwgNCwgMjQ0LCA5NiwgMTEsIDQsIDI0NCwgOTUsIDExLCA0LCAyNDQsIDExMywgMTEsIAotICAgIDQsIDI0NCwgMTEyLCAxMSwgNCwgMjQ0LCAxMjAsIDExLCA0LCAyNDQsIDExNCwgMTEsIDQsIDI0NCwgODIsIDExLCA0LCAKLSAgICAyNDQsIDg0LCAxMSwgNCwgMjQ0LCA4MywgMTEsIDQsIDI0NCwgODcsIDExLCA0LCAyNDQsIDg2LCAxMSwgNCwgMjQ0LCA5MCwgCi0gICAgMTEsIDQsIDI0NCwgODgsIDExLCA0LCAyNDQsIDEwNSwgMTEsIDQsIDI0NCwgMTA4LCAxMSwgNCwgMjQ0LCAxMDYsIDExLCA0LCAKLSAgICAyNDQsIDc4LCAxMSwgNCwgMjQ0LCA3NywgMTEsIDQsIDI0NCwgODUsIDExLCA0LCAyNDQsIDgxLCAxMSwgNCwgMjQ0LCA3OSwgCi0gICAgMTEsIDQsIDI0NCwgODAsIDExLCA0LCAyMjMsIDMsIDExLCA0LCAyMjMsIDIsIDExLCA0LCAyMjMsIDEwLCAxMSwgNCwgMjIzLCAKLSAgICA1LCAxMSwgNCwgMjIzLCA2LCAxMSwgNCwgMjIzLCA3LCAxMSwgNCwgMjIzLCAxOSwgMTEsIDQsIDIyMywgMTgsIDExLCA0LCAKLSAgICAyMjMsIDI1LCAxMSwgNCwgMjIzLCAyMCwgMTEsIDQsIDIyMiwgMjUxLCAxMSwgNCwgMjIyLCAyNTAsIDExLCA0LCAyMjMsIDEsIAotICAgIDExLCA0LCAyMjIsIDI1MiwgMTEsIDQsIDIyMywgMTEsIDExLCA0LCAyMjMsIDE3LCAxMSwgNCwgMjIzLCAxNSwgMTEsIDQsIAotICAgIDIyMiwgMjQzLCAxMSwgNCwgMjIyLCAyNDIsIDExLCA0LCAyMjIsIDI0OCwgMTEsIDQsIDIyMiwgMjQ2LCAxMSwgNCwgMjIyLCAKLSAgICAyNDQsIDExLCA0LCAyMjIsIDI0NSwgMTEsIDQsIDIzNiwgMTQ2LCAxMSwgNCwgMjM2LCAxNDUsIDExLCA0LCAyMzYsIDE1MiwgCi0gICAgMTEsIDQsIDIzNiwgMTQ3LCAxMSwgNCwgMjM2LCAxNDksIDExLCA0LCAyMzYsIDE0OCwgMTEsIDQsIDIzNiwgMTUxLCAxMSwgCi0gICAgNCwgMjM2LCAxNTAsIDExLCA0LCAyMzYsIDE1OCwgMTEsIDQsIDIzNiwgMTU2LCAxMSwgNCwgMjM2LCAxNjAsIDExLCA0LCAKLSAgICAyMzYsIDE1OSwgMTEsIDQsIDIzNiwgMTM5LCAxMSwgNCwgMjM2LCAxNDAsIDExLCA0LCAyMzYsIDE0MywgMTEsIDQsIDIzNiwgCi0gICAgMTQyLCAxMSwgNCwgMjM2LCAxNDQsIDExLCA0LCAyMzYsIDE1MywgMTEsIDQsIDIzNiwgMTU1LCAxMSwgNCwgMjM2LCAxNTQsIAotICAgIDExLCA0LCAyMzYsIDEzOCwgMTEsIDQsIDIyMiwgNTIsIDExLCA0LCAyMjIsIDUwLCAxMSwgNCwgMjIyLCAxMDAsIDExLCA0LCAKLSAgICAyMjIsIDU1LCAxMSwgNCwgMjIyLCA4MiwgMTEsIDQsIDIyMiwgOTYsIDExLCA0LCAyMjIsIDk1LCAxMSwgNCwgMjIzLCA2MSwgCi0gICAgMTEsIDQsIDIwMSwgMjAxLCAxMSwgNCwgMjIzLCA3NiwgMTEsIDQsIDIyMSwgMzIsIDExLCA0LCAyMjEsIDM0LCAxMSwgNCwgCi0gICAgMjIxLCAzMywgMTEsIDQsIDIyMSwgMTY1LCAxMSwgNCwgMjIxLCAxNTAsIDExLCA0LCAyMjEsIDE5MSwgMTEsIDQsIDIyMSwgCi0gICAgMTc2LCAxMSwgNCwgMjIyLCAyMDksIDExLCA0LCAyMjIsIDI0MCwgMTEsIDQsIDIyMiwgMjI1LCAxMSwgNCwgMjIxLCAyNywgCi0gICAgMTEsIDQsIDIyMSwgMjMsIDExLCA0LCAyMjEsIDg0LCAxMSwgNCwgMjIxLCAzMSwgMTEsIDQsIDIyMSwgMjksIDExLCA0LCAKLSAgICAyMjEsIDMwLCAxMSwgNCwgMjM2LCAyMTEsIDExLCA0LCAyMzYsIDIxMCwgMTEsIDQsIDIzNiwgMjE2LCAxMSwgNCwgMjM2LCAKLSAgICAyMTIsIDExLCA0LCAyMzYsIDIxMywgMTEsIDQsIDIzNiwgMjE1LCAxMSwgNCwgMjM2LCAyMTQsIDExLCA0LCAyMzYsIDIyMiwgCi0gICAgMTEsIDQsIDIzNiwgMjIwLCAxMSwgNCwgMjM2LCAyMjQsIDExLCA0LCAyMzYsIDIyMywgMTEsIDQsIDIzNiwgMjAzLCAxMSwgCi0gICAgNCwgMjM2LCAyMDUsIDExLCA0LCAyMzYsIDIwNCwgMTEsIDQsIDIzNiwgMjA3LCAxMSwgNCwgMjM2LCAyMDksIDExLCA0LCAKLSAgICAyMzYsIDIwOCwgMTEsIDQsIDIzNiwgMjE3LCAxMSwgNCwgMjM2LCAyMTksIDExLCA0LCAyMzYsIDIxOCwgMTEsIDQsIDIzNiwgCi0gICAgMTk5LCAxMSwgNCwgMjM2LCAxOTgsIDExLCA0LCAyMzYsIDIwNiwgMTEsIDQsIDIzNiwgMjAyLCAxMSwgNCwgMjM2LCAyMDAsIAotICAgIDExLCA0LCAyMzYsIDIwMSwgMTEsIDQsIDIzNiwgMTkzLCAxMSwgNCwgMjM2LCAxOTIsIDExLCA0LCAyMzYsIDE5NywgMTEsIAotICAgIDQsIDIzNiwgMTk2LCAxMSwgNCwgMjM2LCAxOTQsIDExLCA0LCAyMzYsIDE5NSwgMTEsIDQsIDIyNywgOTAsIDExLCA0LCAKLSAgICAyMjcsIDgyLCAxMSwgNCwgMjI3LCAxNDgsIDExLCA0LCAyMjcsIDEwMCwgMTEsIDQsIDIyNywgMTM5LCAxMSwgNCwgMjI3LCAKLSAgICAxMzgsIDExLCA0LCAyMjcsIDE0MiwgMTEsIDQsIDIyNywgMTQwLCAxMSwgNCwgMjI4LCAwLCAxMSwgNCwgMjI3LCAyNDUsIAotICAgIDExLCA0LCAyMjgsIDExMywgMTEsIDQsIDIyOCwgMTEsIDExLCA0LCAyMjYsIDIxNywgMTEsIDQsIDIyNiwgMjE2LCAxMSwgNCwgCi0gICAgMjI2LCAyMTksIDExLCA0LCAyMjYsIDIxOCwgMTEsIDQsIDIyNywgNiwgMTEsIDQsIDIyNiwgMjQ4LCAxMSwgNCwgMjI3LCAKLSAgICA0OSwgMTEsIDQsIDIyNywgMTEsIDExLCA0LCAyMjcsIDE2NSwgMTEsIDQsIDIyNywgMjM0LCAxMSwgNCwgMjI3LCAxODIsIAotICAgIDExLCA0LCAyMjYsIDIxMSwgMTEsIDQsIDIyNiwgMjA5LCAxMSwgNCwgMjI2LCAyMzksIDExLCA0LCAyMjYsIDIxNSwgMTEsIAotICAgIDQsIDIyNiwgMjEzLCAxMSwgNCwgMjI2LCAyMTQsIDExLCA0LCAyMjYsIDE5MCwgMTEsIDQsIDIyNiwgMTg5LCAxMSwgNCwgCi0gICAgMjI2LCAxOTksIDExLCA0LCAyMjYsIDE5MywgMTEsIDQsIDIyNiwgMTkxLCAxMSwgNCwgMjI2LCAxOTIsIDExLCA0LCAyMzgsIAotICAgIDU0LCAxMSwgNCwgMjM4LCA1MywgMTEsIDQsIDIzOCwgODEsIDExLCA0LCAyMzgsIDY1LCAxMSwgNCwgMjM4LCA3MywgMTEsIAotICAgIDQsIDIzOCwgNzIsIDExLCA0LCAyMzgsIDc1LCAxMSwgNCwgMjM4LCA3NCwgMTEsIDQsIDIzOCwgMjE3LCAxMSwgNCwgMjM4LCAKLSAgICAyMTIsIDExLCA0LCAyMzksIDgsIDExLCA0LCAyMzgsIDIyNywgMTEsIDQsIDIzNywgMjA1LCAxMSwgNCwgMjM3LCAyMDQsIAotICAgIDExLCA0LCAyMzcsIDIwNywgMTEsIDQsIDIzNywgMjA2LCAxMSwgNCwgMjM4LCAxOCwgMTEsIDQsIDIzOCwgMTYsIDExLCA0LCAKLSAgICAyMzgsIDM5LCAxMSwgNCwgMjM4LCAyNiwgMTEsIDQsIDIzOCwgMTU5LCAxMSwgNCwgMjM4LCAxNTcsIDExLCA0LCAyMzgsIAotICAgIDE5MCwgMTEsIDQsIDIzOCwgMTcwLCAxMSwgNCwgMjM3LCAxOTQsIDExLCA0LCAyMzcsIDE5MywgMTEsIDQsIDIzNywgMjMwLCAKLSAgICAxMSwgNCwgMjM3LCAyMDMsIDExLCA0LCAyMzcsIDE5NSwgMTEsIDQsIDIzNywgMjAyLCAxMSwgNCwgMjI5LCA2NCwgMTEsIDQsIAotICAgIDIyOSwgNjEsIDExLCA0LCAyMjksIDEwMCwgMTEsIDQsIDIyOSwgNzgsIDExLCA0LCAyMjksIDg5LCAxMSwgNCwgMjI5LCA5MywgCi0gICAgMTEsIDQsIDIyOSwgOTEsIDExLCA0LCAyMjksIDIyNiwgMTEsIDQsIDIyOSwgMjA5LCAxMSwgNCwgMTczLCAxMSwgNCwgMjI5LCAKLSAgICAyNTMsIDExLCA0LCAyMjgsIDE4NywgMTEsIDQsIDIyOCwgMTkyLCAxMSwgNCwgMjI4LCAxODksIDExLCA0LCAyMjgsIDI1MCwgCi0gICAgMTEsIDQsIDIyOCwgMjQ1LCAxMSwgNCwgMjI5LCAyNiwgMTEsIDQsIDIyOSwgMSwgMTEsIDQsIDIyOSwgMTcwLCAxMSwgNCwgCi0gICAgMjI5LCAxNTMsIDExLCA0LCAyMjksIDIwMSwgMTEsIDQsIDIyOSwgMTc0LCAxMSwgNCwgMjI4LCAxNzUsIDExLCA0LCAyMjgsIAotICAgIDE3MSwgMTEsIDQsIDIyOCwgMjA5LCAxMSwgNCwgMjI4LCAxODYsIDExLCA0LCAyMjgsIDE3OSwgMTEsIDQsIDIyOCwgMTgzLCAKLSAgICAxMSwgNCwgMjM4LCAxNDEsIDExLCA0LCAyMzgsIDE0MCwgMTEsIDQsIDIzOCwgMTQ1LCAxMSwgNCwgMjM4LCAxNDIsIDExLCAKLSAgICA0LCAyMzgsIDE0NCwgMTEsIDQsIDIzOCwgMTQzLCAxMSwgNCwgMjM4LCAxNTIsIDExLCA0LCAyMzgsIDE1MSwgMTEsIDQsIAotICAgIDIzOCwgMTU1LCAxMSwgNCwgMjM4LCAxNTMsIDExLCA0LCAyMzgsIDEzMiwgMTEsIDQsIDIzOCwgMTMxLCAxMSwgNCwgMjM4LCAKLSAgICAxMzQsIDExLCA0LCAyMzgsIDEzMywgMTEsIDQsIDIzOCwgMTM3LCAxMSwgNCwgMjM4LCAxMzYsIDExLCA0LCAyMzgsIDEzOSwgCi0gICAgMTEsIDQsIDIzOCwgMTM4LCAxMSwgNCwgMjM4LCAxNDcsIDExLCA0LCAyMzgsIDE0NiwgMTEsIDQsIDIzOCwgMTUwLCAxMSwgCi0gICAgNCwgMjM4LCAxNDgsIDExLCA0LCAyMzgsIDEyNywgMTEsIDQsIDIzOCwgMTI2LCAxMSwgNCwgMjM4LCAxMzUsIDExLCA0LCAKLSAgICAyMzgsIDEzMCwgMTEsIDQsIDIzOCwgMTI4LCAxMSwgNCwgMjM4LCAxMjksIDExLCA0LCAyMjQsIDE3NCwgMTEsIDQsIDIyNCwgCi0gICAgMTc1LCAxMSwgNCwgMjI0LCAxOTMsIDExLCA0LCAyMjQsIDE5MiwgMTEsIDQsIDIyNCwgMTk1LCAxMSwgNCwgMjI0LCAxOTQsIAotICAgIDExLCA0LCAyMjQsIDE2NSwgMTEsIDQsIDIyNCwgMTY3LCAxMSwgNCwgMjI0LCAxNjYsIDExLCA0LCAyMjQsIDE3MCwgMTEsIAotICAgIDQsIDIyNCwgMTY5LCAxMSwgNCwgMjI0LCAxNzIsIDExLCA0LCAyMjQsIDE3MSwgMTEsIDQsIDIyNCwgMTc2LCAxMSwgNCwgCi0gICAgMjI0LCAxNzgsIDExLCA0LCAyMjQsIDE3NywgMTEsIDQsIDIyNCwgMTYxLCAxMSwgNCwgMjI0LCAxNjAsIDExLCA0LCAyMjQsIAotICAgIDE2OCwgMTEsIDQsIDIyNCwgMTY0LCAxMSwgNCwgMjI0LCAxNjIsIDExLCA0LCAyMjQsIDE2MywgMTEsIDQsIDIzNSwgMjMzLCAKLSAgICAxMSwgNCwgMjM1LCAyMzIsIDExLCA0LCAyMzUsIDIzOSwgMTEsIDQsIDIzNSwgMjM0LCAxMSwgNCwgMjM1LCAyMzYsIDExLCAKLSAgICA0LCAyMzUsIDIzNSwgMTEsIDQsIDIzNSwgMjM4LCAxMSwgNCwgMjM1LCAyMzcsIDExLCA0LCAyMzUsIDI0NCwgMTEsIDQsIAotICAgIDIzNSwgMjQzLCAxMSwgNCwgMjM1LCAyNDYsIDExLCA0LCAyMzUsIDI0NSwgMTEsIDQsIDIzNSwgMjI1LCAxMSwgNCwgMjM1LCAKLSAgICAyMjQsIDExLCA0LCAyMzUsIDIyNywgMTEsIDQsIDIzNSwgMjI2LCAxMSwgNCwgMjM1LCAyMjksIDExLCA0LCAyMzUsIDIyOCwgCi0gICAgMTEsIDQsIDIzNSwgMjMxLCAxMSwgNCwgMjM1LCAyMzAsIDExLCA0LCAyMzUsIDI0MCwgMTEsIDQsIDIzNSwgMjQyLCAxMSwgCi0gICAgNCwgMjM1LCAyNDEsIDExLCA0LCAyMjIsIDE0OCwgMTEsIDQsIDIyMiwgMTUwLCAxMSwgNCwgMjIyLCAxNDksIDExLCA0LCAKLSAgICAyMjIsIDE5MywgMTEsIDQsIDIyMiwgMTkxLCAxMSwgNCwgMjIyLCAyMDMsIDExLCA0LCAyMjIsIDE5NiwgMTEsIDQsIDIyMiwgCi0gICAgMTEwLCAxMSwgNCwgMjIyLCAxMDksIDExLCA0LCAyMjIsIDExMSwgMTEsIDQsIDIyMiwgMTIwLCAxMSwgNCwgMjIyLCAxMTcsIAotICAgIDExLCA0LCAyMjIsIDEyOCwgMTEsIDQsIDIyMiwgMTIyLCAxMSwgNCwgMjIyLCAxODQsIDExLCA0LCAyMjIsIDE5MCwgMTEsIAotICAgIDQsIDIyMiwgMTg2LCAxMSwgNCwgMjM2LCAyMzAsIDExLCA0LCAyMzYsIDI0NSwgMTEsIDQsIDIzNiwgMjU0LCAxMSwgNCwgCi0gICAgMjM3LCA4MywgMTEsIDQsIDIzNywgNzIsIDExLCA0LCAxNTIsIDExLCA0LCAyMzcsIDk0LCAxMSwgNCwgMjM2LCA2LCAxMSwgCi0gICAgNCwgMjM2LCA1LCAxMSwgNCwgMjM2LCA4LCAxMSwgNCwgMjM2LCA3LCAxMSwgNCwgMjM2LCA0NiwgMTEsIDQsIDIzNiwgMzcsIAotICAgIDExLCA0LCAyMzYsIDEzNiwgMTEsIDQsIDIzNiwgMTA5LCAxMSwgNCwgMjM3LCAxOCwgMTEsIDQsIDIzNywgNjcsIDExLCA0LCAKLSAgICAyMzcsIDMwLCAxMSwgNCwgMjA0LCA4MywgMTEsIDQsIDIwNCwgNjgsIDExLCA0LCAyMDQsIDExMSwgMTEsIDQsIDIwNCwgOTMsIAotICAgIDExLCA0LCAyMDMsIDIwNiwgMTEsIDQsIDIwMywgMjA4LCAxMSwgNCwgMjAzLCAyMDcsIDExLCA0LCAyMDMsIDIyOSwgMTEsIAotICAgIDQsIDIwNCwgMCwgMTEsIDQsIDIwMywgMjM5LCAxMSwgNCwgMjA0LCA0MiwgMTEsIDQsIDIwNCwgNjIsIDExLCA0LCAyMDQsIAotICAgIDQ3LCAxMSwgNCwgMjAyLCAyNCwgMTEsIDQsIDIwMiwgMjMsIDExLCA0LCAyMDIsIDM5LCAxMSwgNCwgMjAyLCAyNywgMTEsIAotICAgIDQsIDIwMiwgMzIsIDExLCA0LCAyMDIsIDM0LCAxMSwgNCwgMjAyLCAzMywgMTEsIDQsIDIwMiwgMTAwLCAxMSwgNCwgMjAyLCAKLSAgICA5NywgMTEsIDQsIDIwMiwgMTE2LCAxMSwgNCwgMjAyLCAxMDQsIDExLCA0LCAyMDEsIDI1NSwgMTEsIDQsIDIwMiwgMSwgMTEsIAotICAgIDQsIDIwMiwgMCwgMTEsIDQsIDIwMiwgMTMsIDExLCA0LCAyMDIsIDEyLCAxMSwgNCwgMjAyLCAxNywgMTEsIDQsIDIwMiwgCi0gICAgMTQsIDExLCA0LCAyMDIsIDgyLCAxMSwgNCwgMjAyLCA5MiwgMTEsIDQsIDIwMiwgODYsIDExLCA0LCAyMDEsIDI1MSwgMTEsIAotICAgIDQsIDIwMSwgMjUwLCAxMSwgNCwgMjAyLCA2LCAxMSwgNCwgMjAxLCAyNTQsIDExLCA0LCAyMDEsIDI1MiwgMTEsIDQsIDIwMSwgCi0gICAgMjUzLCAxMSwgNCwgMjAxLCAyMzcsIDExLCA0LCAyMDEsIDIzNiwgMTEsIDQsIDIwMSwgMjQyLCAxMSwgNCwgMjAxLCAyNDAsIAotICAgIDExLCA0LCAyMDEsIDIzOCwgMTEsIDQsIDIwMSwgMjM5LCAxMSwgNCwgMjQ2LCA1MCwgMTEsIDQsIDI0NiwgNDMsIDExLCA0LCAKLSAgICAyNDYsIDc5LCAxMSwgNCwgMjQ2LCA2MywgMTEsIDQsIDI0NiwgNzYsIDExLCA0LCAyNDYsIDcwLCAxMSwgNCwgMjQ2LCA3OCwgCi0gICAgMTEsIDQsIDI0NiwgNzcsIDExLCA0LCAyNDcsIDE3LCAxMSwgNCwgMjQ3LCA5LCAxMSwgNCwgMjQ3LCA5MiwgMTEsIDQsIAotICAgIDI0NywgNDgsIDExLCA0LCAyNDUsIDEwMSwgMTEsIDQsIDI0NSwgMTAzLCAxMSwgNCwgMjQ1LCAxMDIsIDExLCA0LCAyNDUsIAotICAgIDE1OCwgMTEsIDQsIDI0NSwgMTQ4LCAxMSwgNCwgMjQ1LCAyNTQsIDExLCA0LCAyNDUsIDE3NSwgMTEsIDQsIDI0NiwgMjAyLCAKLSAgICAxMSwgNCwgMjQ2LCAyMzgsIDExLCA0LCAyNDYsIDIwNywgMTEsIDQsIDI0NSwgNzcsIDExLCA0LCAyNDUsIDc1LCAxMSwgNCwgCi0gICAgMjQ1LCAxMTAsIDExLCA0LCAyNDUsIDk5LCAxMSwgNCwgMjQ1LCA4MywgMTEsIDQsIDI0NSwgOTYsIDExLCA0LCAyNDUsIDU0LCAKLSAgICAxMSwgNCwgMjQ1LCA1MywgMTEsIDQsIDI0NSwgNjYsIDExLCA0LCAyNDUsIDYwLCAxMSwgNCwgMjQ1LCA1NSwgMTEsIDQsIAotICAgIDI0NSwgNTcsIDExLCA0LCAyMDEsIDIyMCwgMTEsIDQsIDIwMSwgMjE5LCAxMSwgNCwgMjAxLCAyMjYsIDExLCA0LCAyMDEsIAotICAgIDIyMSwgMTEsIDQsIDIwMSwgMjIzLCAxMSwgNCwgMjAxLCAyMjIsIDExLCA0LCAyMDEsIDIyNSwgMTEsIDQsIDIwMSwgMjI0LCAKLSAgICAxMSwgNCwgMjAxLCAyMzIsIDExLCA0LCAyMDEsIDIzMSwgMTEsIDQsIDIwMSwgMjM1LCAxMSwgNCwgMjAxLCAyMzMsIDExLCAKLSAgICA0LCAyMDEsIDIxNiwgMTEsIDQsIDIwMSwgMjE4LCAxMSwgNCwgMjAxLCAyMTcsIDExLCA0LCAyMDEsIDIyNywgMTEsIDQsIAotICAgIDIwMSwgMjMwLCAxMSwgNCwgMjAxLCAyMjgsIDExLCA0LCAyMDEsIDIwOSwgMTEsIDQsIDIwMSwgMjEzLCAxMSwgNCwgMjAxLCAKLSAgICAyMTIsIDExLCA0LCAyMDEsIDIxMCwgMTEsIDQsIDIwMSwgMjExLCAxMSwgNCwgMjAxLCAyMDMsIDExLCA0LCAyMDEsIDIwMiwgCi0gICAgMTEsIDQsIDIwMSwgMjA4LCAxMSwgNCwgMjAxLCAyMDYsIDExLCA0LCAyMDEsIDIwNCwgMTEsIDQsIDIwMSwgMjA1LCAxMSwgCi0gICAgNCwgMjIwLCAyMDEsIDExLCA0LCAyMjAsIDIwMCwgMTEsIDQsIDIyMCwgMjA2LCAxMSwgNCwgMjIwLCAyMDIsIDExLCA0LCAKLSAgICAyMjAsIDIwMywgMTEsIDQsIDIyMCwgMjA1LCAxMSwgNCwgMjIwLCAyMDQsIDExLCA0LCAyMjAsIDIxMSwgMTEsIDQsIDIyMCwgCi0gICAgMjEwLCAxMSwgNCwgMjIwLCAyMTQsIDExLCA0LCAyMjAsIDIxMywgMTEsIDQsIDIyMCwgMTk0LCAxMSwgNCwgMjIwLCAxOTUsIAotICAgIDExLCA0LCAyMjAsIDE5OCwgMTEsIDQsIDIyMCwgMTk5LCAxMSwgNCwgMjIwLCAyMDcsIDExLCA0LCAyMjAsIDIwOSwgMTEsIAotICAgIDQsIDIyMCwgMTg5LCAxMSwgNCwgMjIwLCAxOTcsIDExLCA0LCAyMjAsIDE5MywgMTEsIDQsIDIyMCwgMTkwLCAxMSwgNCwgCi0gICAgMjIwLCAxOTEsIDExLCA0LCAyMjAsIDE4NCwgMTEsIDQsIDIyMCwgMTgzLCAxMSwgNCwgMjIwLCAxODgsIDExLCA0LCAyMjAsIAotICAgIDE4NywgMTEsIDQsIDIyMCwgMTg1LCAxMSwgNCwgMjIwLCAxODYsIDExLCA0LCAyMTIsIDkwLCAxMSwgNCwgMTk1LCAxMSwgNCwgCi0gICAgMjEyLCAxNjIsIDExLCA0LCAyMTIsIDkzLCAxMSwgNCwgMjEyLCAxNTAsIDExLCA0LCAyMTIsIDE1MywgMTEsIDQsIDIxMiwgCi0gICAgMTUxLCAxMSwgNCwgMjE0LCAyMjUsIDExLCA0LCAyMTQsIDIxMSwgMTEsIDQsIDIxNSwgMzYsIDExLCA0LCAyMTQsIDIzMywgCi0gICAgMTEsIDQsIDIxMCwgMjA0LCAxMSwgNCwgMjEwLCAyMDYsIDExLCA0LCAyMTAsIDIwNSwgMTEsIDQsIDIxMSwgMjQ0LCAxMSwgCi0gICAgNCwgMjExLCAyMzMsIDExLCA0LCAyMTIsIDEzLCAxMSwgNCwgMjExLCAyNDgsIDExLCA0LCAyMTMsIDEwMywgMTEsIDQsIAotICAgIDIxNCwgMTc3LCAxMSwgNCwgMjEzLCAxMzIsIDExLCA0LCAyMTAsIDE4MSwgMTEsIDQsIDIxMCwgMTc4LCAxMSwgNCwgMjExLCAKLSAgICAxMCwgMTEsIDQsIDIxMCwgMjAzLCAxMSwgNCwgMjEwLCAxODUsIDExLCA0LCAyMTAsIDE5MywgMTEsIDQsIDIxMCwgODMsIAotICAgIDExLCA0LCAyMTAsIDgyLCAxMSwgNCwgMjEwLCAxNTEsIDExLCA0LCAyMTAsIDkxLCAxMSwgNCwgMjEwLCA4NSwgMTEsIDQsIAotICAgIDIxMCwgOTAsIDExLCA0LCAyMTEsIDEyNiwgMTEsIDQsIDIxMSwgMTI1LCAxMSwgNCwgMjExLCAxMzIsIDExLCA0LCAyMTEsIAotICAgIDEyNywgMTEsIDQsIDIxMSwgMTI5LCAxMSwgNCwgMjExLCAxMzEsIDExLCA0LCAyMTEsIDEzMCwgMTEsIDQsIDIxMSwgMTQxLCAKLSAgICAxMSwgNCwgMjExLCAxMzksIDExLCA0LCAyMTEsIDE2NCwgMTEsIDQsIDIxMSwgMTQyLCAxMSwgNCwgMjExLCAxMjEsIDExLCAKLSAgICA0LCAyMTEsIDEyMCwgMTEsIDQsIDIxMSwgMTI0LCAxMSwgNCwgMjExLCAxMjIsIDExLCA0LCAyMTEsIDEzNSwgMTEsIDQsIAotICAgIDIxMSwgMTM4LCAxMSwgNCwgMjExLCAxMzYsIDExLCA0LCAyMTEsIDExNywgMTEsIDQsIDIxMSwgMTE1LCAxMSwgNCwgMjExLCAKLSAgICAxMTksIDExLCA0LCAyMTEsIDExOCwgMTEsIDQsIDIxMSwgMTEwLCAxMSwgNCwgMjExLCAxMDksIDExLCA0LCAyMTEsIDExNCwgCi0gICAgMTEsIDQsIDIxMSwgMTEzLCAxMSwgNCwgMjExLCAxMTEsIDExLCA0LCAyMTEsIDExMiwgMTEsIDQsIDIwMiwgNzUsIDExLCA0LCAKLSAgICAyMDIsIDc0LCAxMSwgNCwgMjAyLCA4MCwgMTEsIDQsIDIwMiwgNzcsIDExLCA0LCAyMDIsIDU0LCAxMSwgNCwgMjAyLCA1NiwgCi0gICAgMTEsIDQsIDIwMiwgNTUsIDExLCA0LCAyMDIsIDU5LCAxMSwgNCwgMjAyLCA1OCwgMTEsIDQsIDIwMiwgNjMsIDExLCA0LCAKLSAgICAyMDIsIDYwLCAxMSwgNCwgMjAyLCA2OCwgMTEsIDQsIDIwMiwgNjcsIDExLCA0LCAyMDIsIDcxLCAxMSwgNCwgMjAyLCA2OSwgCi0gICAgMTEsIDQsIDIwMiwgNTAsIDExLCA0LCAyMDIsIDQ5LCAxMSwgNCwgMjAyLCA1NywgMTEsIDQsIDIwMiwgNTMsIDExLCA0LCAKLSAgICAyMDIsIDUxLCAxMSwgNCwgMjAyLCA1MiwgMTEsIDQsIDIwMiwgNDIsIDExLCA0LCAyMDIsIDQxLCAxMSwgNCwgMjAyLCA0NiwgCi0gICAgMTEsIDQsIDIwMiwgNDUsIDExLCA0LCAyMDIsIDQzLCAxMSwgNCwgMjAyLCA0NCwgMTEsIDQsIDI0NiwgMTc2LCAxMSwgNCwgCi0gICAgMjQ2LCAxNzIsIDExLCA0LCAyNDYsIDE5OSwgMTEsIDQsIDI0NiwgMTg1LCAxMSwgNCwgMjQ2LCA5NCwgMTEsIDQsIDI0NiwgCi0gICAgOTMsIDExLCA0LCAyNDYsIDk2LCAxMSwgNCwgMjQ2LCA5NSwgMTEsIDQsIDI0NiwgMTA5LCAxMSwgNCwgMjQ2LCAxMDgsIDExLCAKLSAgICA0LCAyNDYsIDExNiwgMTEsIDQsIDI0NiwgMTExLCAxMSwgNCwgMjQ2LCAxNDcsIDExLCA0LCAyNDYsIDE0NSwgMTEsIDQsIAotICAgIDI0NiwgMTcwLCAxMSwgNCwgMjQ2LCAxNTUsIDExLCA0LCAyNDYsIDg4LCAxMSwgNCwgMjQ2LCA5OCwgMTEsIDQsIDI0NiwgCi0gICAgOTIsIDExLCA0LCAyNDYsIDg5LCAxMSwgNCwgMjQ2LCA5MSwgMTEsIDQsIDI0NiwgODEsIDExLCA0LCAyNDYsIDgwLCAxMSwgCi0gICAgNCwgMjQ2LCA4NSwgMTEsIDQsIDI0NiwgODQsIDExLCA0LCAyNDYsIDgyLCAxMSwgNCwgMjQ2LCA4MywgMTEsIDQsIDIxNSwgCi0gICAgMTgxLCAxMSwgNCwgMjE1LCAxODUsIDExLCA0LCAyMTUsIDE2MywgMTEsIDQsIDIxNSwgMTY0LCAxMSwgNCwgMjE1LCAxNjgsIAotICAgIDExLCA0LCAyMTUsIDE2NywgMTEsIDQsIDIxNSwgMTcxLCAxMSwgNCwgMjE1LCAxNjksIDExLCA0LCAyMTUsIDE3NSwgMTEsIAotICAgIDQsIDIxNSwgMTc0LCAxMSwgNCwgMjE1LCAxODAsIDExLCA0LCAyMTUsIDE3NiwgMTEsIDQsIDIxNSwgMTU5LCAxMSwgNCwgCi0gICAgMjE1LCAxNTcsIDExLCA0LCAyMTUsIDE2NSwgMTEsIDQsIDIxNSwgMTYyLCAxMSwgNCwgMjE1LCAxNjAsIDExLCA0LCAyMTUsIAotICAgIDE2MSwgMTEsIDQsIDIxNSwgMTUyLCAxMSwgNCwgMjE1LCAxNTEsIDExLCA0LCAyMTUsIDE1NiwgMTEsIDQsIDIxNSwgMTU1LCAKLSAgICAxMSwgNCwgMjE1LCAxNTMsIDExLCA0LCAyMTUsIDE1NCwgMTEsIDQsIDIyMSwgMTQ1LCAxMSwgNCwgMjIxLCAxNDQsIDExLCAKLSAgICA0LCAyMjEsIDE0NywgMTEsIDQsIDIyMSwgMTQ2LCAxMSwgNCwgMjIxLCAxMzYsIDExLCA0LCAyMjEsIDEzOCwgMTEsIDQsIAotICAgIDIyMSwgMTM3LCAxMSwgNCwgMjIxLCAxNDAsIDExLCA0LCAyMjEsIDEzOSwgMTEsIDQsIDIyMSwgMTQzLCAxMSwgNCwgMjIxLCAKLSAgICAxNDIsIDExLCA0LCAyMjEsIDEzMCwgMTEsIDQsIDIyMSwgMTI5LCAxMSwgNCwgMjIxLCAxMzUsIDExLCA0LCAyMjEsIDEzMywgCi0gICAgMTEsIDQsIDIyMSwgMTMxLCAxMSwgNCwgMjIxLCAxMzIsIDExLCA0LCAyMjEsIDEyNCwgMTEsIDQsIDIyMSwgMTIzLCAxMSwgCi0gICAgNCwgMjIxLCAxMjgsIDExLCA0LCAyMjEsIDEyNywgMTEsIDQsIDIyMSwgMTI1LCAxMSwgNCwgMjIxLCAxMjYsIDExLCA0LCAKLSAgICAyMTMsIDUzLCAxMSwgNCwgMjEzLCA0OCwgMTEsIDQsIDIxMywgOTAsIDExLCA0LCAyMTMsIDY0LCAxMSwgNCwgMjEyLCAxODgsIAotICAgIDExLCA0LCAyMTIsIDE5MCwgMTEsIDQsIDIxMiwgMTg5LCAxMSwgNCwgMjEyLCAyMTIsIDExLCA0LCAyMTIsIDIwOCwgMTEsIAotICAgIDQsIDIxMiwgMjQyLCAxMSwgNCwgMjEyLCAyMzIsIDExLCA0LCAyMTMsIDIxLCAxMSwgNCwgMjEzLCAxNCwgMTEsIDQsIDIxMywgCi0gICAgNDMsIDExLCA0LCAyMTMsIDMwLCAxMSwgNCwgMjEyLCAxODQsIDExLCA0LCAyMTIsIDE4MSwgMTEsIDQsIDIxMiwgMTk5LCAKLSAgICAxMSwgNCwgMjEyLCAxODcsIDExLCA0LCAyMTIsIDE4NSwgMTEsIDQsIDIxMiwgMTg2LCAxMSwgNCwgMjEyLCAxNjUsIDExLCAKLSAgICA0LCAyMTIsIDE2NCwgMTEsIDQsIDIxMiwgMTcxLCAxMSwgNCwgMjEyLCAxNjgsIDExLCA0LCAyMTIsIDE2NiwgMTEsIDQsIAotICAgIDIxMiwgMTY3LCAxMSwgNCwgMjE2LCAxNzIsIDExLCA0LCAyMTYsIDE2NiwgMTEsIDQsIDIxNiwgMjIwLCAxMSwgNCwgMjE2LCAKLSAgICAxNzgsIDExLCA0LCAyMTUsIDEyMiwgMTEsIDQsIDIxNSwgMTI0LCAxMSwgNCwgMjE1LCAxMjMsIDExLCA0LCAyMTUsIDE5OSwgCi0gICAgMTEsIDQsIDIxNSwgMTg3LCAxMSwgNCwgMjE1LCAyMjcsIDExLCA0LCAyMTUsIDIwMywgMTEsIDQsIDIxNiwgNjYsIDExLCA0LCAKLSAgICAyMTYsIDE1OCwgMTEsIDQsIDIxNiwgMTA1LCAxMSwgNCwgMjE1LCAxMTUsIDExLCA0LCAyMTUsIDExMiwgMTEsIDQsIDIxNSwgCi0gICAgMTQ1LCAxMSwgNCwgMjE1LCAxMjEsIDExLCA0LCAyMTUsIDExNywgMTEsIDQsIDIxNSwgMTE4LCAxMSwgNCwgMjE1LCA5NywgCi0gICAgMTEsIDQsIDIxNSwgOTYsIDExLCA0LCAyMTUsIDEwMiwgMTEsIDQsIDIxNSwgMTAwLCAxMSwgNCwgMjE1LCA5OCwgMTEsIDQsIAotICAgIDIxNSwgOTksIDExLCA0LCAyMzAsIDEzMSwgMTEsIDQsIDIzMCwgMTMwLCAxMSwgNCwgMjMwLCAxNDEsIDExLCA0LCAyMzAsIAotICAgIDEzMiwgMTEsIDQsIDIzMCwgMTM3LCAxMSwgNCwgMjMwLCAxMzYsIDExLCA0LCAyMzAsIDEzOSwgMTEsIDQsIDIzMCwgMTM4LCAKLSAgICAxMSwgNCwgMjMwLCA3MiwgMTEsIDQsIDIzMCwgNzEsIDExLCA0LCAyMzAsIDc0LCAxMSwgNCwgMjMwLCA3MywgMTEsIDQsIAotICAgIDIzMCwgODgsIDExLCA0LCAyMzAsIDg2LCAxMSwgNCwgMjMwLCAxMDEsIDExLCA0LCAyMzAsIDkwLCAxMSwgNCwgMjMwLCA2NSwgCi0gICAgMTEsIDQsIDIzMCwgNjMsIDExLCA0LCAyMzAsIDgyLCAxMSwgNCwgMjMwLCA3MCwgMTEsIDQsIDIzMCwgNjcsIDExLCA0LCAKLSAgICAyMzAsIDY4LCAxMSwgNCwgMjMwLCA1NywgMTEsIDQsIDIzMCwgNTYsIDExLCA0LCAyMzAsIDYxLCAxMSwgNCwgMjMwLCA2MCwgCi0gICAgMTEsIDQsIDIzMCwgNTgsIDExLCA0LCAyMzAsIDU5LCAxMSwgNCwgMjE3LCA4MSwgMTEsIDQsIDIxNywgNzksIDExLCA0LCAKLSAgICAyMTcsIDg4LCAxMSwgNCwgMjE3LCA4MiwgMTEsIDQsIDIxNywgODUsIDExLCA0LCAyMTcsIDg0LCAxMSwgNCwgMjE3LCA4NywgCi0gICAgMTEsIDQsIDIxNywgODYsIDExLCA0LCAyMTcsIDMyLCAxMSwgNCwgMjE3LCAyOSwgMTEsIDQsIDIxNywgMzQsIDExLCA0LCAKLSAgICAyMTcsIDMzLCAxMSwgNCwgMjE3LCA2OCwgMTEsIDQsIDIxNywgNjcsIDExLCA0LCAyMTcsIDc3LCAxMSwgNCwgMjE3LCA3MSwgCi0gICAgMTEsIDQsIDIxNywgMjQsIDExLCA0LCAyMTcsIDIwLCAxMSwgNCwgMjE3LCA2NSwgMTEsIDQsIDIxNywgMjgsIDExLCA0LCAKLSAgICAyMTcsIDI2LCAxMSwgNCwgMjE3LCAyNywgMTEsIDQsIDIxNywgNCwgMTEsIDQsIDIxNywgMiwgMTEsIDQsIDIxNywgMTQsIAotICAgIDExLCA0LCAyMTcsIDcsIDExLCA0LCAyMTcsIDUsIDExLCA0LCAyMTcsIDYsIDExLCA0LCAyMzAsIDEyMCwgMTEsIDQsIDIzMCwgCi0gICAgMTE5LCAxMSwgNCwgMjMwLCAxMjYsIDExLCA0LCAyMzAsIDEyMSwgMTEsIDQsIDIzMCwgMTIzLCAxMSwgNCwgMjMwLCAxMjIsIAotICAgIDExLCA0LCAyMzAsIDEyNSwgMTEsIDQsIDIzMCwgMTI0LCAxMSwgNCwgMjMwLCAxMTEsIDExLCA0LCAyMzAsIDExMywgMTEsIAotICAgIDQsIDIzMCwgMTEyLCAxMSwgNCwgMjMwLCAxMTYsIDExLCA0LCAyMzAsIDExNSwgMTEsIDQsIDIzMCwgMTE4LCAxMSwgNCwgCi0gICAgMjMwLCAxMTcsIDExLCA0LCAyMzAsIDEwNywgMTEsIDQsIDIzMCwgMTA2LCAxMSwgNCwgMjMwLCAxMTQsIDExLCA0LCAyMzAsIAotICAgIDExMCwgMTEsIDQsIDIzMCwgMTA4LCAxMSwgNCwgMjMwLCAxMDksIDExLCA0LCAyMzAsIDEwMywgMTEsIDQsIDIzMCwgMTAyLCAKLSAgICAxMSwgNCwgMjMwLCAxMDUsIDExLCA0LCAyMzAsIDEwNCwgMTEsIDQsIDIyMiwgMjUsIDExLCA0LCAyMjIsIDI0LCAxMSwgNCwgCi0gICAgMjIyLCAzMiwgMTEsIDQsIDIyMiwgMjYsIDExLCA0LCAyMjIsIDI4LCAxMSwgNCwgMjIyLCAyNywgMTEsIDQsIDIyMiwgMzEsIAotICAgIDExLCA0LCAyMjIsIDI5LCAxMSwgNCwgMjIyLCAxNCwgMTEsIDQsIDIyMiwgMTUsIDExLCA0LCAyMjIsIDIwLCAxMSwgNCwgCi0gICAgMjIyLCAxOSwgMTEsIDQsIDIyMiwgMjMsIDExLCA0LCAyMjIsIDIxLCAxMSwgNCwgMjIyLCA5LCAxMSwgNCwgMjIyLCAxOCwgCi0gICAgMTEsIDQsIDIyMiwgMTMsIDExLCA0LCAyMjIsIDEwLCAxMSwgNCwgMjIyLCAxMSwgMTEsIDQsIDIyMiwgNCwgMTEsIDQsIAotICAgIDIyMiwgMywgMTEsIDQsIDIyMiwgOCwgMTEsIDQsIDIyMiwgNywgMTEsIDQsIDIyMiwgNSwgMTEsIDQsIDIyMiwgNiwgMTEsIAotICAgIDQsIDIyMCwgMjM2LCAxMSwgNCwgMjIwLCAyMzUsIDExLCA0LCAyMjAsIDI0OCwgMTEsIDQsIDIyMCwgMjQwLCAxMSwgNCwgCi0gICAgMjIwLCAyNDUsIDExLCA0LCAyMjAsIDI0NCwgMTEsIDQsIDIyMCwgMjQ3LCAxMSwgNCwgMjIwLCAyNDYsIDExLCA0LCAyMjAsIAotICAgIDIyMSwgMTEsIDQsIDIyMCwgMjIzLCAxMSwgNCwgMjIwLCAyMjIsIDExLCA0LCAyMjAsIDIyOCwgMTEsIDQsIDIyMCwgMjI3LCAKLSAgICAxMSwgNCwgMjIwLCAyMzMsIDExLCA0LCAyMjAsIDIyOSwgMTEsIDQsIDIyMCwgMjE5LCAxMSwgNCwgMjIwLCAyMTcsIDExLCAKLSAgICA0LCAyMjAsIDIyNiwgMTEsIDQsIDIyMCwgMjIwLCAxMSwgNCwgMjAzLCAxNjIsIDExLCA0LCAyMDMsIDE2MSwgMTEsIDQsIAotICAgIDIwMywgMTcwLCAxMSwgNCwgMjAzLCAxNjQsIDExLCA0LCAyMDMsIDE2NiwgMTEsIDQsIDIwMywgMTY1LCAxMSwgNCwgMjAzLCAKLSAgICAxNjgsIDExLCA0LCAyMDMsIDE2NywgMTEsIDQsIDIwMywgMTUwLCAxMSwgNCwgMjAzLCAxNTEsIDExLCA0LCAyMDMsIDE1NSwgCi0gICAgMTEsIDQsIDIwMywgMTU0LCAxMSwgNCwgMjAzLCAxNjAsIDExLCA0LCAyMDMsIDE1OCwgMTEsIDQsIDIwMywgMTI4LCAxMSwgCi0gICAgNCwgMjAzLCAxMjYsIDExLCA0LCAyMDMsIDE0MSwgMTEsIDQsIDIwMywgMTMxLCAxMSwgNCwgMjAzLCAxMjksIDExLCA0LCAKLSAgICAyMDMsIDEzMCwgMTEsIDQsIDIwMiwgMjUzLCAxMSwgNCwgMjAyLCAyNTEsIDExLCA0LCAyMDMsIDExLCAxMSwgNCwgMjAyLCAKLSAgICAyNTQsIDExLCA0LCAyMDMsIDUsIDExLCA0LCAyMDMsIDQsIDExLCA0LCAyMDMsIDgsIDExLCA0LCAyMDMsIDYsIDExLCA0LCAKLSAgICAyMDIsIDE5MSwgMTEsIDQsIDIwMiwgMTkwLCAxMSwgNCwgMjAyLCAxOTQsIDExLCA0LCAyMDIsIDE5MiwgMTEsIDQsIDIwMiwgCi0gICAgMjI3LCAxMSwgNCwgMjAyLCAyMjMsIDExLCA0LCAyMDIsIDI0NywgMTEsIDQsIDIwMiwgMjMxLCAxMSwgNCwgMjAyLCAxODIsIAotICAgIDExLCA0LCAyMDIsIDE3OCwgMTEsIDQsIDIwMiwgMjEzLCAxMSwgNCwgMjAyLCAxODksIDExLCA0LCAyMDIsIDE4NSwgMTEsIAotICAgIDQsIDIwMiwgMTg2LCAxMSwgNCwgMjAyLCAxNjIsIDExLCA0LCAyMDIsIDE2MSwgMTEsIDQsIDIwMiwgMTY5LCAxMSwgNCwgCi0gICAgMjAyLCAxNjUsIDExLCA0LCAyMDIsIDE2MywgMTEsIDQsIDIwMiwgMTY0LCAxMSwgNDAsIDIxNywgNjgsIDExLCA0MCwgMjI3LCAKLSAgICAxNDgsIDExLCA0MCwgMjI5LCA2NCwgMTEsIDQwLCAyMjAsIDI0MCwgMTEsIDQwLCAyNDUsIDYwLCAxMSwgNDAsIDIxMSwgCi0gICAgMTMyLCAxMSwgNDAsIDIzOCwgMTM4LCAxMSwgNDAsIDIzOCwgMTcwLCAxMSwgNDAsIDIyNCwgMTU1LCAxMSwgNDAsIDIzNSwgCi0gICAgMjMzLCAxMSwgNDAsIDIyNiwgMTkyLCAxMSwgNDAsIDI0OCwgMTcwLCAxMSwgNDAsIDIyNCwgMjcsIDExLCA0MCwgMjAyLCAKLSAgICAyNDcsIDExLCA0MCwgMjE3LCAxNTksIDExLCA0MCwgMjM1LCAyMjcsIDExLCA0MCwgMjA5LCAyMTIsIDExLCA0MCwgMjM5LCAKLSAgICA4LCAxMSwgNDAsIDIwMSwgMjU0LCAxMSwgNDAsIDI0NSwgNTQsIDExLCA0MCwgMjQ0LCA4MCwgMTEsIDQwLCAyNDcsIDE2MCwgCi0gICAgMTEsIDQwLCAyMzgsIDEzNCwgMTEsIDQwLCAyMjAsIDIyOSwgMTEsIDQwLCAyMDcsIDIwMywgMTEsIDQwLCAyMjAsIDksIDExLCAKLSAgICA0MCwgMjMwLCAxMDcsIDExLCA0MCwgMjAyLCAxMywgMTEsIDQwLCAyMTcsIDEzOCwgMTEsIDQwLCAyMzYsIDE3OCwgMTEsIAotICAgIDQwLCAyMDIsIDI1MywgMTEsIDQwLCAyMDQsIDE1OSwgMTEsIDQwLCAyMTIsIDE3MSwgMTEsIDQwLCAyMDYsIDQ0LCAxMSwgCi0gICAgNDAsIDIwMiwgMTE2LCAxMSwgNDAsIDIzMCwgMTAxLCAxMSwgNDAsIDIyMCwgMTkzLCAxMSwgNDAsIDIzMCwgMTA1LCAxMSwgCi0gICAgNDAsIDIzOCwgMTgsIDExLCA0MCwgMjMwLCAxMjUsIDExLCA0MCwgMjA0LCAwLCAxMSwgNDAsIDI0MiwgNDIsIDExLCA0MCwgCi0gICAgMjEyLCAxODYsIDExLCA0MCwgMjI3LCAxNDIsIDExLCA0MCwgMjQ1LCA2NiwgMTEsIDQwLCAyNDUsIDEwMiwgMTEsIDQwLCAKLSAgICAyNDYsIDYzLCAxMSwgNDAsIDIzNSwgMjMwLCAxMSwgNDAsIDIxMywgNTMsIDExLCA0MCwgMjAxLCAyNTMsIDExLCA0MCwgCi0gICAgMjEyLCAyMzIsIDExLCA0MCwgMjQ2LCAxNzAsIDExLCA0MCwgMjAxLCAyMjMsIDExLCA0MCwgMjIzLCA1MSwgMTEsIDQwLCAKLSAgICAyMjksIDIwMSwgMjI3LCA5MSwgMSwgMjQ5LCAzMiwgMjI3LCA5MSwgMSwgMTg1LCAyMjcsIDkxLCAxLCAyMTgsIDIwOCwgCi0gICAgMjI3LCA5MSwgMSwgMjQ0LCAyMTIsIDIyNywgOTEsIDEsIDIxMCwgMjIsIDIyNywgOTEsIDEsIDIwOSwgMTA4LCAyMjcsIDkxLCAKLSAgICAxLCAyMzksIDgsIDIyNywgOTEsIDEsIDE3MywgMjI3LCA5MSwgMSwgMjI5LCAxNDQsIDIyNywgOTEsIDEsIDIzMCwgMTgxLCAKLSAgICAyMjcsIDkxLCAxLCAyNDcsIDkyLCAyMjcsIDkxLCAxLCAyNDYsIDE5OSwgMjI3LCA5MSwgMSwgMjQxLCAyNTUsIDIyNywgOTEsIAotICAgIDEsIDIwOCwgMjAsIDIyNywgOTEsIDEsIDIwOCwgMTAsIDIyNywgOTEsIDEsIDE5MiwgMjI3LCA5MSwgMSwgMjAxLCAyMDEsIAotICAgIDIyNywgOTEsIDEsIDIyOCwgMTEzLCAyMjcsIDkxLCAxLCAyMTUsIDM2LCAyMjcsIDkxLCAxLCAyMDIsIDgwLCAyMjcsIDkxLCAKLSAgICAxLCAyMDIsIDExNiwgMjI3LCA5MSwgMSwgMjIyLCAyMDMsIDIyNywgOTEsIDEsIDE1MiwgMjI3LCA5MSwgMSwgMjAzLCAxODIsIAotICAgIDIyNywgOTEsIDEsIDIzNywgMTIsIDIyNywgOTEsIDEsIDI0MCwgMTA4LCAyMjcsIDkxLCAxLCAyMDQsIDExMSwgMjI3LCA5MSwgCi0gICAgMSwgMjEzLCA5MCwgMjI3LCA5MSwgMSwgMTk4LCAyMjcsIDkxLCAxLCAyMzgsIDExOSwgMjI3LCA5MSwgMSwgNjMsIDIyNywgCi0gICAgOTEsIDEsIDI1MSwgMTA5LCAyMjcsIDkxLCAxLCA3NCwgMjI3LCA5MSwgMSwgMjQwLCAyMzgsIDIyNywgOTEsIDEsIDc1LCAKLSAgICAyMjcsIDkxLCAxLCA3OCwgMjI3LCA5MSwgMSwgNjgsIDIyNywgOTEsIDEsIDIwNywgMjQsIDIyNywgOTEsIDEsIDIwNywgMTgsIAotICAgIDIyNywgOTEsIDEsIDIyMCwgNzMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwOSwgMiwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDExMSwgMjE4LCA2OSwgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjQ1LCA2NSwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDE3MCwgMjQ4LCAyMywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjAxLCAyMDEsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxNzAsIDIzMCwgMTUwLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjQ1LCAyMzMsIDIyNywgOTEsIDIxNywgMTc5LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgNDgsIDQsIDI0MSwgMTYxLCA0OCwgNCwgMjQxLCAxNTcsIDQ4LCA0LCAyMzcsIDQ4LCA0OCwgNCwgCi0gICAgMjA0LCA1NSwgNDgsIDQsIDIwNCwgNTQsIDQ4LCA0LCAyMTksIDIzLCA0OCwgNCwgMjQ4LCA5MywgNDgsIDQsIDI0OCwgMTUwLCAKLSAgICA0OCwgNCwgMjI1LCA0NiwgNDgsIDQsIDIyOCwgMjM5LCA0OCwgNCwgMjI0LCAxODcsIDQ4LCA0LCAyMzgsIDIwMywgNDgsIDQsIAotICAgIDI0MCwgNTMsIDQ4LCA0LCAyMDYsIDUwLCA0OCwgNCwgMjA5LCAxNzYsIDQ4LCA0LCAyMDksIDkwLCA0OCwgNCwgMjQzLCAKLSAgICAyNDcsIDQ4LCA0LCAyNDMsIDI0NCwgNDgsIDQsIDIyNywgMjI2LCA0OCwgNCwgMjE2LCAxMzUsIDQ4LCA0LCAyNDQsIDYxLCAKLSAgICA0OCwgNCwgMjIzLCAxNiwgNDgsIDQsIDIxNCwgMTY1LCA0OCwgNCwgMjEzLCA0MSwgNDgsIDQsIDIwMiwgOTAsIDQ4LCA0LCAKLSAgICAyMDIsIDcwLCA0OCwgNCwgMjQ2LCAyMzAsIDQ4LCA0LCAyMzAsIDE1OSwgNDgsIDQsIDIyMiwgMzksIDQ4LCA0LCAyMDMsIAotICAgIDQ5LCA0OCwgNCwgMjI5LCAxOTgsIDQ4LCA0LCAyMjIsIDE3NiwgNDgsIDQsIDIzOCwgMTgyLCA0OCwgNCwgMjI1LCA4LCA0OCwgCi0gICAgNCwgMjIyLCAyMzUsIDQ4LCA0LCAyMjEsIDAsIDQ4LCA0LCA3NSwgNDgsIDQsIDIzMSwgNDksIDQ4LCA0LCAyMzcsIDMsIDQ4LCAKLSAgICA0LCAyMzYsIDIzOCwgNDgsIDQsIDIwNCwgMzAsIDQ4LCA0LCAyMDQsIDE4LCA0OCwgNCwgMjE4LCAxNjcsIDQ4LCA0LCAyNDgsIAotICAgIDkxLCA0OCwgNCwgMjQ4LCA4NiwgNDgsIDQsIDIyNSwgMzksIDQ4LCA0LCAyMjgsIDIzNiwgNDgsIDQsIDIyNCwgMTg0LCA0OCwgCi0gICAgNCwgMjM4LCAxOTksIDQ4LCA0LCAyNDAsIDI2LCA0OCwgNCwgMjA1LCAyMzAsIDQ4LCA0LCAyMDksIDIsIDQ4LCA0LCAyMDksIAotICAgIDcwLCA0OCwgNCwgMjQzLCAyMzksIDQ4LCA0LCAyNDMsIDI0MywgNDgsIDQsIDIyNywgMTQ4LCA0OCwgNCwgMjE2LCA1NywgCi0gICAgNDgsIDQsIDI0MywgMjMzLCA0OCwgNCwgMjIzLCAxMCwgNDgsIDQsIDIxMiwgMTYyLCA0OCwgNCwgMjEzLCAxMSwgNDgsIDQsIAotICAgIDIwMiwgMzksIDQ4LCA0LCAyMDIsIDY2LCA0OCwgNCwgMjQ2LCA3OSwgNDgsIDQsIDIzMCwgMTQxLCA0OCwgNCwgMjIyLCAzMiwgCi0gICAgNDgsIDQsIDIwMywgMTEsIDQ4LCA0LCAyMjksIDEwMCwgNDgsIDQsIDIyMiwgMTY4LCA0OCwgNCwgMjM4LCA4MSwgNDgsIDQsIAotICAgIDIyNCwgMTU1LCA0OCwgNCwgMjIyLCAxMDAsIDQ4LCA0LCAyMjAsIDI0OCwgNDgsIDQsIDYzLCA0OCwgNCwgMjUwLCAyMzEsIAotICAgIDQ4LCA0LCAyMjIsIDE5OCwgNDgsIDQsIDE1MiwgNDgsIDQsIDIzNywgMTI2LCA0OCwgNCwgMjA0LCAxMTEsIDQ4LCA0LCAKLSAgICAyMDQsIDk3LCA0OCwgNCwgMTg1LCA0OCwgNCwgMjQ4LCA5OCwgNDgsIDQsIDI0OSwgMzIsIDQ4LCA0LCAyMjUsIDU0LCA0OCwgCi0gICAgNCwgMjI4LCAyNDQsIDQ4LCA0LCAyMjgsIDI0MiwgNDgsIDQsIDIyNCwgMTkxLCA0OCwgNCwgMjM4LCAyMDcsIDQ4LCA0LCAKLSAgICAyNDAsIDEwOCwgNDgsIDQsIDIwNiwgODYsIDQ4LCA0LCAyMTAsIDIyLCA0OCwgNCwgMjA5LCAxMDgsIDQ4LCA0LCAyNDQsIDEsIAotICAgIDQ4LCA0LCAyNDMsIDI0NiwgNDgsIDQsIDIyOCwgMTEzLCA0OCwgNCwgMjE2LCAyMjAsIDQ4LCA0LCAyNDQsIDIxMiwgNDgsIAotICAgIDQsIDIyMywgMjUsIDQ4LCA0LCAyMTUsIDM2LCA0OCwgNCwgMjEzLCA5MCwgNDgsIDQsIDIwMiwgMTE2LCA0OCwgNCwgMjAyLCAKLSAgICA4MCwgNDgsIDQsIDI0NywgOTIsIDQ4LCA0LCAyMzAsIDE4MSwgNDgsIDQsIDIyMiwgNDgsIDQ4LCA0LCAxOTgsIDQ4LCA0LCAKLSAgICAxNzMsIDQ4LCA0LCAyMzAsIDQsIDQ4LCA0LCAyMjIsIDE4MiwgNDgsIDQsIDIzOSwgOCwgNDgsIDQsIDE5MiwgNDgsIDQsIAotICAgIDIwMSwgMjAxLCA0OCwgNCwgMjIxLCAxMSwgNDgsIDQsIDIyMCwgMTgsIDQ4LCA0LCAyMjAsIDEzLCA0OCwgNCwgMjM2LCAKLSAgICAxMTcsIDQ4LCA0LCAyMDMsIDI0NCwgNDgsIDQsIDIwMywgMjQwLCA0OCwgNCwgMjE4LCA0NSwgNDgsIDQsIDI0OCwgODksIAotICAgIDQ4LCA0LCAyNDgsIDEwLCA0OCwgNCwgMjI1LCAzNCwgNDgsIDQsIDIyOCwgMjM0LCA0OCwgNCwgMjI0LCAxODAsIDQ4LCA0LCAKLSAgICAyMzgsIDE5NSwgNDgsIDQsIDIzOSwgMTc1LCA0OCwgNCwgMjA1LCAxNzYsIDQ4LCA0LCAyMDgsIDE0OCwgNDgsIDQsIDIwOSwgCi0gICAgNDIsIDQ4LCA0LCAyNDMsIDIzNiwgNDgsIDQsIDI0MywgMjQxLCA0OCwgNCwgMjI3LCAxOCwgNDgsIDQsIDIxNSwgMjA4LCAKLSAgICA0OCwgNCwgMjQzLCA5MCwgNDgsIDQsIDIyMiwgMjUzLCA0OCwgNCwgMjExLCAyNTAsIDQ4LCA0LCAyMTIsIDIzNiwgNDgsIDQsIAotICAgIDIwMiwgMTUsIDQ4LCA0LCAyMDIsIDYxLCA0OCwgNCwgMjQ1LCAxODAsIDQ4LCA0LCAyMzAsIDkxLCA0OCwgNCwgMjIyLCAyMiwgCi0gICAgNDgsIDQsIDIwMiwgMjMyLCA0OCwgNCwgMjI5LCA2LCA0OCwgNCwgMjIyLCAxNjYsIDQ4LCA0LCAyMzgsIDI4LCA0OCwgNCwgCi0gICAgMjI0LCAzNSwgNDgsIDQsIDIyMSwgMTgwLCA0OCwgNCwgMjIwLCAyMzAsIDQ4LCA0LCA2OCwgNDgsIDQsIDIwNiwgMjU1LCAKLSAgICA0OCwgNCwgMjM2LCAyNiwgNDgsIDQsIDIzNiwgMTMsIDQ4LCA0LCAyMDMsIDIxNywgNDgsIDQsIDIwMywgMjEwLCA0OCwgNCwgCi0gICAgMjE3LCAxOTEsIDQ4LCA0LCAyNDgsIDg4LCA0OCwgNCwgMjQ3LCAxOTMsIDQ4LCA0LCAyMjUsIDMzLCA0OCwgNCwgMjI4LCAKLSAgICAyMzIsIDQ4LCA0LCAyMjQsIDE3OSwgNDgsIDQsIDIzOCwgMTk0LCA0OCwgNCwgMjM5LCAxMDgsIDQ4LCA0LCAyMDQsIDE2MywgCi0gICAgNDgsIDQsIDIwNywgMjAzLCA0OCwgNCwgMjA5LCAyMiwgNDgsIDQsIDI0MywgMjM0LCA0OCwgNCwgMjQzLCAyNDAsIDQ4LCA0LCAKLSAgICAyMjYsIDIzOSwgNDgsIDQsIDIxNSwgMTQ1LCA0OCwgNCwgMjQyLCA0MiwgNDgsIDQsIDIyMiwgMjQ4LCA0OCwgNCwgMjExLCAKLSAgICAxMCwgNDgsIDQsIDIxMiwgMTk5LCA0OCwgNCwgMjAyLCA2LCA0OCwgNCwgMjAyLCA1NywgNDgsIDQsIDI0NSwgMTEwLCA0OCwgCi0gICAgNCwgMjMwLCA4MiwgNDgsIDQsIDIyMiwgMTgsIDQ4LCA0LCAyMDIsIDIxMywgNDgsIDQsIDIyOCwgMjA5LCA0OCwgNCwgMjIyLCAKLSAgICAxNjUsIDQ4LCA0LCAyMzcsIDIzMCwgNDgsIDQsIDIyMywgMjQ2LCA0OCwgNCwgMjIxLCA4NCwgNDgsIDQsIDIyMCwgMjI2LCAKLSAgICA0OCwgNCwgNzgsIDQ4LCA0LCAyMjAsIDMxLCA0OCwgNCwgMjIyLCAxMjQsIDQ4LCA0LCAyMzYsIDEzNiwgNDgsIDQsIDIzNiwgCi0gICAgMTIwLCA0OCwgNCwgMjA0LCAwLCA0OCwgNCwgMjAzLCAyNDUsIDQ4LCA0LCAyMTgsIDY5LCA0OCwgNCwgMjQ4LCA5MCwgNDgsIAotICAgIDQsIDI0OCwgMjMsIDQ4LCA0LCAyMjUsIDM1LCA0OCwgNCwgMjI4LCAyMzUsIDQ4LCA0LCAyMjQsIDE4MiwgNDgsIDQsIDIzOCwgCi0gICAgMTk3LCA0OCwgNCwgMjM4LCAxOTYsIDQ4LCA0LCAyMzksIDE4NiwgNDgsIDQsIDIwNSwgMTg5LCA0OCwgNCwgMTM1LCA0OCwgCi0gICAgNCwgMjA5LCA0NywgNDgsIDQsIDI0MywgMjM3LCA0OCwgNCwgMjQzLCAyNDIsIDQ4LCA0LCAyMjcsIDQ5LCA0OCwgNCwgMjE1LCAKLSAgICAyMjcsIDQ4LCA0LCAyNDMsIDExMywgNDgsIDQsIDIyMywgMSwgNDgsIDQsIDIxMiwgMTMsIDQ4LCA0LCAyMTIsIDI0MiwgNDgsIAotICAgIDQsIDIwMiwgMTcsIDQ4LCA0LCAyMDIsIDYzLCA0OCwgNCwgMjQ1LCAyNTQsIDQ4LCA0LCAyMzAsIDEwMSwgNDgsIDQsIDIyMiwgCi0gICAgMjMsIDQ4LCA0LCAyMDIsIDI0NywgNDgsIDQsIDIyOSwgMjYsIDQ4LCA0LCAyMjIsIDE2NywgNDgsIDQsIDIzOCwgMzksIDQ4LCAKLSAgICA0LCAyMjQsIDgyLCA0OCwgNCwgMjIxLCAxOTEsIDQ4LCA0LCAyMjAsIDIzMywgNDgsIDQsIDc0LCA0OCwgNCwgMjQxLCA5MiwgCi0gICAgNDgsIDQsIDIyMiwgMTg3LCA0OCwgNCwgMjM3LCA2NywgNDgsIDQsIDIzNywgMzMsIDQ4LCA0LCAyMDQsIDYyLCA0OCwgNCwgCi0gICAgMjA0LCA0OSwgNDgsIDQsIDIxOSwgMzQsIDQ4LCA0LCAyNDgsIDk0LCA0OCwgNCwgMjQ4LCAxNjIsIDQ4LCA0LCAyMjUsIDQ3LCAKLSAgICA0OCwgNCwgMjI4LCAyNDAsIDQ4LCA0LCAyMjgsIDIzOCwgNDgsIDQsIDIyNCwgMTg4LCA0OCwgNCwgMjM4LCAyMDQsIDQ4LCAKLSAgICA0LCAyMzgsIDIwMiwgNDgsIDQsIDI0MCwgNjAsIDQ4LCA0LCAyMDYsIDU1LCA0OCwgNCwgMjA5LCAxODcsIDQ4LCA0LCAyMDksIAotICAgIDkyLCA0OCwgNCwgMjQzLCAyNDgsIDQ4LCA0LCAyNDMsIDI0NSwgNDgsIDQsIDIyNywgMjM0LCA0OCwgNCwgMjE2LCAxNTgsIAotICAgIDQ4LCA0LCAyNDQsIDc1LCA0OCwgNCwgMjIzLCAxNywgNDgsIDQsIDIxNCwgMTc3LCA0OCwgNCwgMjEzLCA0MywgNDgsIDQsIAotICAgIDIwMiwgOTIsIDQ4LCA0LCAyMDIsIDcxLCA0OCwgNCwgMjQ2LCAyMzgsIDQ4LCA0LCAyMzAsIDE2MSwgNDgsIDQsIDIyMiwgCi0gICAgNDEsIDQ4LCA0LCAyMDMsIDUyLCA0OCwgNCwgMjI5LCAyMDEsIDQ4LCA0LCAyMjIsIDE3NywgNDgsIDQsIDIyMiwgMTczLCAKLSAgICA0OCwgNCwgMjM4LCAxOTAsIDQ4LCA0LCAyMzgsIDE3NywgNDgsIDQsIDIyNSwgMjAsIDQ4LCA0LCAyMjIsIDI0MCwgNDgsIDQsIAotICAgIDIyMSwgMSwgNDgsIDQsIDIyMiwgMjA1LCA0OCwgNCwgMjI3LCAxODgsIDQ4LCAyNDUsIDIzMywgNDgsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCA0OCwgMjE3LCA0NywgODIsIDQ4LCA0LCAyMjMsIDAsIDI0MCwgMTA4LCA0OCwgNCwgMjIzLCAwLCAxNzMsIAotICAgIDQ4LCA0LCAyMjMsIDAsIDIxMSwgMjUwLCA0OCwgMTYsIDI0MCwgNDksIDQ4LCAxNiwgMjI5LCAxOTYsIDQ4LCAxNiwgMjA4LCAKLSAgICAyMTUsIDQ4LCAxNiwgMjIyLCA3NSwgNDgsIDE2LCAyNDgsIDIzNywgNDgsIDE2LCAyNDAsIDEwNywgNDgsIDE2LCAyMTAsIAotICAgIDE4LCA0OCwgMTYsIDI0NCwgMTY0LCA0OCwgMTYsIDI0MywgODksIDQ4LCAxNiwgMjI4LCAxOTMsIDQ4LCAxNiwgMjA4LCAKLSAgICAxNTIsIDQ4LCAxNiwgMjQzLCAxMTIsIDQ4LCAxNiwgMjMwLCA5MiwgNDgsIDE3LCAyMDIsIDg0LCA0OCwgMTcsIDEwNSwgNDgsIAotICAgIDE3LCAxMDgsIDQ4LCAxNywgMTQ3LCA0OCwgMTcsIDE0OSwgNDgsIDE3LCAxNzAsIDQ4LCAxNywgMTk1LCA0OCwgMTcsIDIxMywgCi0gICAgMTExLCA0OCwgMTcsIDE5OSwgNDgsIDE3LCAyMjIsIDYzLCA0OCwgNCwgMjIzLCAwLCAxOTIsIDQ4LCA0LCAyMjMsIDAsIAotICAgIDI0MywgMTEzLCAzNiwgNiwgMSwgMjAyLCA4OCwgMzYsIDUsIDEsIDIwMiwgODgsIDM2LCA2LCAxLCAyNDEsIDI1MCwgMzYsIAotICAgIDUsIDEsIDI0MSwgMjUwLCAzNiwgNiwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIDM2LCA1LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgCi0gICAgMzYsIDYsIDEsIDIzMCwgMjMwLCAzNiwgNSwgMSwgMjMwLCAyMzAsIDM2LCA2LCAxLCAyNDMsIDEyOSwgMzYsIDUsIDEsIAotICAgIDI0MywgMTI5LCAzNiwgNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDUsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA2LCAKLSAgICAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDUsIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIyLCAyMTYsIAotICAgIDIwMywgMzQsIDM2LCA1LCAxLCAyMjIsIDIxNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgCi0gICAgMzQsIDM2LCA1LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIAotICAgIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMjE2LCAKLSAgICA3MywgMjAyLCAyMTMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNjMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgNjMsIDM2LCA2LCAxLCAKLSAgICAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgCi0gICAgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKLSAgICAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIAotICAgIDE4MywgMzYsIDYsIDEsIDIwMiwgMjQ5LCAzNiwgNSwgMSwgMjAyLCAyNDksIDM2LCA2LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAKLSAgICAzNiwgNSwgMSwgMjE2LCA3MywgMjA4LCAxNCwgMzYsIDYsIDEsIDIxMiwgNywgMjQ0LCA3NSwgMzYsIDUsIDEsIDIxMiwgNywgCi0gICAgMjQ0LCA3NSwgMzYsIDYsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNiwgCi0gICAgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA2LCAxLCAyMjQsIDQ3LCA3OCwgCi0gICAgMzYsIDUsIDEsIDIyNCwgNDcsIDc4LCAzNiwgNiwgMSwgMjQ4LCA2MywgNzgsIDM2LCA1LCAxLCAyNDgsIDYzLCA3OCwgMzYsIAotICAgIDYsIDEsIDUyLCAyMjQsIDQ3LCA3OCwgMzYsIDUsIDEsIDUyLCAyMjQsIDQ3LCA3OCwgMzYsIDEsIDIyMywgMjI3LCA3OCwgCi0gICAgMzksIDM2LCAyMDQsIDE0NiwgMzksIDM2LCAyMDksIDE1MywgMjI0LCAxMTQsIDU0LCAzOSwgMzYsIDIzNiwgMTIsIDIyNCwgCi0gICAgMTE0LCA1NCwgMzksIDM2LCAyMDksIDM3LCAyMjQsIDExNCwgNTQsIDIxMiwgNTUsIDI1MCwgNTksIDM5LCAzNiwgMSwgMjA3LCAKLSAgICAxMSwgMjMxLCAxMTAsIDM5LCAzNiwgMSwgNzUsIDM5LCAzNiwgMSwgMjAzLCAxMSwgMzksIDM2LCAxLCA2OCwgMzksIDM2LCAKLSAgICAxLCAyMzcsIDkxLCA1NCwgMzksIDM2LCAxLCAyMDMsIDMwLCAzOSwgMzYsIDEsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgCi0gICAgMjIwLCAzNiwgMzksIDM2LCAyMjksIDIxMywgMzksIDM2LCAyMTksIDQxLCAzNiwgMjI5LCAyMTMsIDM2LCAyMTksIDQxLCAKLSAgICAzNiwgNiwgMSwgMjQyLCA5LCAzNiwgNSwgMSwgMjQyLCA5LCAzNiwgNiwgMSwgMjQxLCAyNDEsIDM2LCA1LCAxLCAyNDEsIAotICAgIDI0MSwgMzYsIDYsIDEsIDIwMiwgNDcsIDM2LCA1LCAxLCAyMDIsIDQ3LCAzNiwgNiwgMSwgMjQ2LCAyNTQsIDM2LCA1LCAxLCAKLSAgICAyNDYsIDI1NCwgMzYsIDYsIDEsIDI0MSwgMjM4LCAzNiwgNSwgMSwgMjQxLCAyMzgsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgCi0gICAgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMDksIDE4OCwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDcsIDE1OCwgMzYsIDUsIDEsIAotICAgIDIwNywgMTU4LCAzNiwgNiwgMSwgMjA3LCAyNDUsIDM2LCA1LCAxLCAyMDcsIDI0NSwgMzYsIDYsIDEsIDIwNywgMjUwLCAzNiwgCi0gICAgNSwgMSwgMjA3LCAyNTAsIDM2LCA2LCAxLCAyMDksIDE5MywgMzYsIDUsIDEsIDIwOSwgMTkzLCAzNiwgNiwgMSwgMjM1LCAKLSAgICAyNTEsIDM2LCA1LCAxLCAyMzUsIDI1MSwgMzYsIDYsIDEsIDIxMiwgMTc3LCAzNiwgNSwgMSwgMjEyLCAxNzcsIDM2LCA2LCAKLSAgICAxLCA1MiwgNzgsIDM2LCA1LCAxLCA1MiwgNzgsIDM2LCA2LCAxLCAyNDUsIDEyOCwgNzgsIDM2LCA1LCAxLCAyNDUsIDEyOCwgCi0gICAgNzgsIDY1LCAxLCAzNiwgMjM3LCA5MSwgNTQsIDY1LCAxLCAzNiwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAyNDEsIDE1NCwgCi0gICAgMzksIDM2LCAxLCAyMzAsIDIyOCwgNzQsIDI0LCAxLCA2MywgMjQsIDEsIDE3MywgMjQsIDEsIDY4LCAyNCwgMSwgMjI4LCAKLSAgICAyMDksIDI0LCAxLCAyNDEsIDE2MSwgMjQsIDEsIDIxNiwgMTM1LCAyNCwgMSwgMjEwLCAxLCAyNCwgMSwgNzgsIDI0LCAxLCAKLSAgICAyMjAsIDI0OCwgMjQsIDEsIDc1LCAyNCwgMSwgMjI4LCAxMTMsIDI0LCAxLCAxODUsIDI0LCAxLCAyMTYsIDMsIDI0LCAxLCAKLSAgICAyMTYsIDUwLCAyNCwgMSwgMjI3LCAyMjUsIDI0LCAxLCAyMjUsIDcsIDI0LCAxLCAyMTAsIDE4LCAyNCwgMSwgMjIzLCAyMywgCi0gICAgMjQsIDEsIDIyMiwgNDYsIDI0LCAxLCAyMjYsIDE4NSwgMjQsIDEsIDIxMCwgMTc5LCAyNCwgMSwgMjIzLCAyNDYsIDI0LCAxLCAKLSAgICAyMTMsIDYsIDI0LCAxLCAyMTIsIDE2MiwgMjQsIDEsIDIxMywgMTYsIDI0LCAxLCAyMTMsIDExMywgMjQsIDEsIDIyOCwgCi0gICAgMTM3LCAyNCwgMSwgMjI5LCAxNzAsIDI0LCAxLCAyMjEsIDU1LCAyNCwgMSwgMjIxLCA4NCwgMjQsIDEsIDIyMiwgMTcsIDI0LCAKLSAgICAxLCAyMDIsIDIyOSwgMjQsIDEsIDIxMiwgMTk5LCAyNCwgMSwgMjAyLCAxODcsIDI0LCAxLCAxOTgsIDI0LCAxLCAyMjEsIAotICAgIDExOCwgMjQsIDEsIDIyOSwgMTU2LCAyNCwgMSwgMjE4LCAyMTIsIDI0LCAxLCAyMjIsIDM5LCAyNCwgMSwgMjIxLCA5OSwgCi0gICAgMjQsIDEsIDIxNywgMTgzLCAyNCwgMSwgMjAzLCAyMTQsIDI0LCAxLCAyMTksIDIzLCAyNCwgMSwgMjQwLCA1MywgMjQsIDEsIAotICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjI2LCAyMzksIDI0LCAxLCAyMjQsIDE1NSwgMjQsIDEsIDIyMiwgMTAwLCAyNCwgMSwgMjE2LCAKLSAgICA3NSwgMjQsIDEsIDIxNiwgMjAyLCAyNCwgMSwgMjI5LCAxODAsIDI0LCAxLCAyMjIsIDEzMSwgMjQsIDEsIDIyMiwgMTgyLCAKLSAgICAyNCwgMSwgMjIyLCAyMDMsIDI0LCAxLCAyMTIsIDI0MiwgMjQsIDEsIDIxNywgMTg4LCAyNCwgMSwgMjM5LCAxMDgsIDI0LCAKLSAgICAxLCAyMzksIDE3OSwgMjQsIDEsIDIwNCwgMTExLCAyNCwgMSwgMjAxLCAyMDEsIDI0LCAxLCAyMjcsIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMTY3LCAyNCwgMSwgMjI3LCAxMCwgMjQsIDEsIDIyOSwgMjYsIDI0LCAxLCAyMjUsIDQ0LCAyNCwgMSwgMjE2LCAKLSAgICAxMDcsIDI0LCAxLCAyMjQsIDI0MCwgMjQsIDEsIDE5MiwgMjQsIDEsIDIwOSwgMiwgMjQsIDEsIDIyOSwgMTAwLCAyNCwgMSwgCi0gICAgMjI0LCA4MiwgMjQsIDEsIDIyNSwgNTIsIDI0LCAxLCAyMDksIDEzMiwgMjQsIDEsIDIyOCwgMjQ0LCAyNCwgMSwgMjA5LCAKLSAgICAxNTIsIDI0LCAxLCAyMjEsIDg2LCAyNCwgMSwgMjE0LCAyNTEsIDI0LCAxLCAyNDAsIDEwNCwgMjQsIDEsIDIyOCwgMjQ2LCAKLSAgICAyNCwgMSwgMjI5LCAyMSwgMjQsIDM5LCAxMzEsIDIyOCwgMjU1LCAyNCwgMzksIDEzMSwgMjA3LCAxOTQsIDI0LCAyMjIsIAotICAgIDQ1LCAyNCwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0LCAyNDUsIDI0MiwgMjQsIDI0NSwgMjMzLCAyNCwgMjEzLCAxNDMsIDI0LCAKLSAgICAyMTcsIDQ3LCA4MiwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgCi0gICAgMTQzLCAyMDMsIDc3LCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjEzLCA2NSwgNjUsIDEsIAotICAgIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxMywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxNywgNjUsIAotICAgIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTcsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAKLSAgICAyMTUsIDE0NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNSwgMTQ1LCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgCi0gICAgODMsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAKLSAgICAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQyLCA4MywgMTQzLCAKLSAgICAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyNDIsIDgzLCAKLSAgICAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgCi0gICAgMTI0LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQyLCA4MywgMjI3LCAyMTQsIAotICAgIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjI3LCAyMTQsIDE0MywgCi0gICAgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMjI3LCAyMTQsIDE0MywgMTQyLCAKLSAgICA2NSwgMSwgMjQwLCAxOTcsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDcwLCA4MCwgMTQyLCA2NSwgMSwgNzAsIDIxMiwgCi0gICAgNTcsIDY1LCAxLCA3MCwgMjM2LCAxMDYsIDE0MiwgNjUsIDEsIDIyNiwgMjUxLCA1MCwgMjQ1LCAxNjYsIDI1MCwgMjE3LCAKLSAgICA2NSwgMSwgMjE2LCAxODgsIDExMiwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMTIxLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAyNDAsIAotICAgIDIxMiwgODIsIDY1LCAxLCAyMTYsIDE4OCwgMjMwLCAyMzksIDI0MCwgMjEyLCA4MiwgNjUsIDEsIDEyNCwgMjMwLCAyMzksIAotICAgIDI0MCwgMjEyLCA4MiwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEyNCwgCi0gICAgMjA4LCAxNjEsIDgsIDYsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNiwgCi0gICAgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA2LCAxLCAyMzcsIDMxLCA4LCA1LCAKLSAgICAxLCAyMzcsIDMxLCA4LCA2LCAxLCAyMDcsIDEwNywgOCwgNSwgMSwgMjA3LCAxMDcsIDgsIDYsIDEsIDIwOCwgODksIDgsIDUsIAotICAgIDEsIDIwOCwgODksIDgsIDYsIDEsIDI0NSwgMTA3LCA4LCA1LCAxLCAyNDUsIDEwNywgOCwgNiwgMSwgMjQ1LCAxMDgsIDMsIAotICAgIDI0NSwgMjMzLCA4LCA1LCAxLCAyNDUsIDEwOCwgMywgMjQ1LCAyMzMsIDgsIDEsIDUsIDYsIDI0MCwgMTc0LCA4LCAxLCA1LCAKLSAgICA2LCAxOTQsIDgsIDYsIDEsIDI1MiwgMjUsIDgsIDUsIDEsIDI1MiwgMjUsIDgsIDYsIDEsIDI1MCwgMTc4LCA4LCA1LCAxLCAKLSAgICAyNTAsIDE3OCwgOCwgNiwgMSwgMjUwLCAzNCwgOCwgNSwgMSwgMjUwLCAzNCwgOCwgNiwgMSwgMjUwLCAxOCwgOCwgNSwgMSwgCi0gICAgMjUwLCAxOCwgOCwgNiwgMSwgMjUwLCAxOSwgMywgMjM2LCAxMDYsIDE0MiwgOCwgNSwgMSwgMjUwLCAxOSwgMywgMjM2LCAKLSAgICAxMDYsIDE0MiwgOCwgNiwgMSwgMjUwLCA4LCA4LCA1LCAxLCAyNTAsIDgsIDgsIDYsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAKLSAgICAzLCAyNDMsIDg1LCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgMywgMjQzLCA4NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCi0gICAgOTUsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIAotICAgIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjExLCAzMiwgMjUsIDI0MywgMjI4LCA5NSwgCi0gICAgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjExLCAzMiwgMjUsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjQ3LCAyMDMsIDE1OSwgCi0gICAgOCwgNSwgMSwgMjQ3LCAyMDMsIDE1OSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEzOCwgOTUsIDgsIDUsIDEsIDIyOCwgMTMxLCAKLSAgICAzLCAxMzgsIDk1LCA4LCA2LCAxLCAxNTgsIDMsIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNiwgMSwgMTU4LCAzLCAyMjcsIDE0LCA4LCA1LCAxLCAxNTgsIDMsIDIyNywgCi0gICAgMTQsIDgsIDYsIDEsIDIyMCwgMTgsIDgsIDUsIDEsIDIyMCwgMTgsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAKLSAgICAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDYsIDEsIDIxOSwgCi0gICAgMTg1LCAzLCAyMTEsIDE3MCwgMjA5LCAyNDgsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDE3MCwgMjA5LCAyNDgsIDgsIAotICAgIDYsIDEsIDIxNywgMTM1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgMjExLCAKLSAgICAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNiwgMSwgMjE3LCAxMzUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjE3LCAKLSAgICAxMzUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE3LCAxLCAyMTUsIAotICAgIDE5MiwgOCwgNiwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDYsIDEsIAotICAgIDIwNiwgMTY1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIAotICAgIDIwNCwgMTUyLCA4LCA1LCAxLCAyMDQsIDE1MiwgOCwgNiwgMSwgMjA1LCAxOTcsIDIwMiwgMTU5LCA4LCA1LCAxLCAyMDUsIAotICAgIDE5NywgMjAyLCAxNTksIDgsIDYsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA1LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNiwgMSwgCi0gICAgMjA5LCA0MSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjA5LCA0MSwgMywgMjExLCAzMiwgMjA5LCAKLSAgICAyNSwgMjQ0LCAyMCwgOCwgNiwgMSwgMjA2LCA0NSwgOCwgNSwgMSwgMjA2LCA0NSwgOCwgNiwgMSwgMjQwLCAyNTAsIDgsIDUsIAotICAgIDEsIDI0MCwgMjUwLCA4LCA2LCAxLCAyMzAsIDIxNSwgOCwgNSwgMSwgMjMwLCAyMTUsIDgsIDYsIDEsIDI0NSwgMjE4LCA4LCAKLSAgICA1LCAxLCAyNDUsIDIxOCwgNjUsIDEsIDIwNiwgMTkzLCA4LCA1LCAxLCAyNDIsIDMyLCA4LCA1LCAxLCAyMjYsIDIyMiwgOCwgCi0gICAgNSwgMSwgMjIzLCAyMjAsIDgsIDUsIDEsIDIyMSwgNDcsIDgsIDUsIDEsIDIxNSwgMTMxLCA4LCAxLCA1LCA2LCAyMTUsIAotICAgIDEzMSwgOCwgNSwgMSwgMjA3LCAxOTEsIDgsIDUsIDEsIDIwNywgNiwgOCwgNiwgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA1LCAKLSAgICAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDYsIDEsIDIzMSwgNCwgMjQwLCAxNzQsIDgsIDUsIDEsIDIzMSwgNCwgMjQwLCAxNzQsIAotICAgIDgsIDYsIDEsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDE1OSwgOCwgNSwgMSwgMjA3LCAxNzQsIAotICAgIDE1OSwgOCwgNiwgMSwgMjMxLCA0LCAxNDYsIDgsIDUsIDEsIDIzMSwgNCwgMTQ2LCA4LCA2LCAxLCAyMzEsIDQsIDE5NCwgOCwgCi0gICAgNSwgMSwgMjMxLCA0LCAxOTQsIDgsIDYsIDEsIDIzMSwgNCwgMjEwLCA2OSwgOCwgNSwgMSwgMjMxLCA0LCAyMTAsIDY5LCAKLSAgICA2NSwgMSwgMTI0LCAyNDYsIDUzLCAyNTEsIDEzOCwgNjUsIDEsIDI0NSwgMjQyLCA2NSwgMSwgMjEyLCAyMjgsIDI0MSwgMzUsIAotICAgIDU0LCA4LCA2LCAxLCAyMTQsIDI1NSwgOCwgNSwgMSwgMjE0LCAyNTUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDIzNiwgMTE2LCAyNSwgMjQ4LCAxMjQsIDgsIDEsIDIxMiwgMTE0LCAyNDMsIAotICAgIDg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDI0NywgMTI2LCAzLCAxNDIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNDIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAKLSAgICAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjE5LCAxNDIsIDExMywgOCwgNiwgMSwgNjYsIDMsIDIzOSwgCi0gICAgMTk5LCA4LCA1LCAxLCA2NiwgMywgMjM5LCAxOTksIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA5NSwgOCwgNSwgMSwgMjQwLCAKLSAgICAxNzUsIDMsIDk1LCA4LCA2LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgCi0gICAgNiwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA2LCAxLCAyMDUsIDE4MiwgCi0gICAgMjA3LCAyNCwgOCwgNSwgMSwgMjA1LCAxODIsIDIwNywgMjQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCAKLSAgICA1LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIAotICAgIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIyMywgCi0gICAgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAKLSAgICAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIyMCwgCi0gICAgODksIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA2LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA2LCAxLCAKLSAgICAxMzIsIDIzOSwgNzUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIAotICAgIDgsIDYsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDYsIDEsIDI0NiwgCi0gICAgMTQyLCA4LCA2LCAxLCAyNDgsIDEwNiwgOCwgNSwgMSwgMjQ4LCAxMDYsIDgsIDYsIDEsIDIyMCwgMzYsIDgsIDUsIDEsIAotICAgIDIyMCwgMzYsIDgsIDI0MSwgNDAsIDEsIDIxMiwgMTU0LCA3NSwgNjUsIDEsIDYsIDIzNywgMTcyLCAzLCA5NSwgNjUsIDEsIAotICAgIDUsIDMyLCAyMjAsIDczLCA4LCAxLCA1LCA2LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIAotICAgIDI0MCwgMTc0LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAyMTksIDE4NCwgOCwgMjQxLCA0MCwgMSwgMjMwLCAyMzksIDIyNiwgCi0gICAgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMzUsIDIwNiwgMjI3LCAyMCwgOCwgMjQxLCA0MCwgMSwgMjUwLCAxMjYsIDIyNiwgMTg1LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIAotICAgIDI0MiwgMTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc0LCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgNzgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAyMzcsIDg1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAKLSAgICAyNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgMTE1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCAzOSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDEsIDIzOCwgOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAyNTAsIDE4MCwgMjEwLCAxNDksIDIyMywgCi0gICAgOTQsIDEsIDI0NSwgMjU0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ2LCAxMTYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKLSAgICAyMzAsIDEwMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzMCwgMTQzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMTgsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIyNCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NCwgOTAsIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCAyNDQsIDk5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMTM1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCi0gICAgMjA5LCA0NywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMTEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAyMzcsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjEsIDE5MSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxOCwgNjksIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCAyMTgsIDE4MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0OCwgMjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAKLSAgICAxLCAyNDgsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI0LCA4MiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxNSwgCi0gICAgMjI3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI3LCA0OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxNSwgMTcxLCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMSwgMjEyLCAxMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzNiwgMTM2LCAyMTAsIDE0OSwgMjIzLCAKLSAgICA5NCwgMjIsIDIsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIAotICAgIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDc0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDIyMCwgMTgsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDg5LCAxNTMsIAotICAgIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIAotICAgIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTIsIAotICAgIDgwLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDI0MSwgMTM4LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIAotICAgIDIxMiwgNzksIDE1MywgMjMxLCAzMywgMjE3LCA1NiwgODIsIDE1MywgMjMxLCAzMywgMjE4LCA5NiwgODIsIDE1MywgMjMxLCAKLSAgICAzMywgMjE1LCAxMjAsIDgyLCAxNTMsIDIzMSwgMzMsIDIxNywgNTcsIDgyLCAyMTgsIDIwNCwgMSwgMTczLCAyMTgsIDIwNCwgCi0gICAgMSwgMjI5LCAxNDQsIDIxOCwgMjA0LCAxLCAyMzksIDgsIDIxOCwgMjA0LCAxLCAyMjIsIDIwMywgMjE4LCAyMDQsIDEsIAotICAgIDI0NywgOTIsIDIxOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjE4LCAyMDQsIDEsIDIzMCwgMTgxLCAyMTgsIDIwNCwgMSwgMjIxLCAKLSAgICAxMSwgMjE4LCAyMDQsIDEsIDIxMCwgMjIsIDIxOCwgMjA0LCAxLCAyMDksIDEwOCwgMjE4LCAyMDQsIDEsIDI0NCwgMjEyLCAKLSAgICAyMTgsIDIwNCwgMSwgMjAxLCAyMDEsIDIxOCwgMjA0LCAxLCAxODUsIDIxOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjE4LCAyMDQsIAotICAgIDEsIDI0OSwgMzIsIDIxOCwgMjA0LCAxLCAxOTIsIDIxOCwgMjA0LCAxLCAyMDgsIDIwLCAyMTgsIDIwNCwgMSwgMjA4LCAxMCwgCi0gICAgMjE4LCAyMDQsIDEsIDI0MSwgMjU1LCAyMTgsIDIwNCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAxLCAyMDIsIDgwLCAyMTgsIAotICAgIDIwNCwgMSwgMjAyLCAxMTYsIDIxOCwgMjA0LCAxLCA1LCA2MywgMjE4LCAyMDQsIDEsIDE5OCwgMjE4LCAyMDQsIDEsIDIxNiwgCi0gICAgMjIwLCAyMTgsIDIwNCwgMSwgMjI4LCAxMTMsIDIxOCwgMjA0LCAxLCAyMTMsIDkwLCAyMTgsIDIwNCwgMSwgMjE1LCAzNiwgCi0gICAgMjE4LCAyMDQsIDEsIDE1MiwgMjE4LCAyMDQsIDEsIDYzLCAyMTgsIDIwNCwgMSwgNzUsIDIxOCwgMjA0LCAxLCA2OCwgMjE4LCAKLSAgICAyMDQsIDEsIDc0LCAyMTgsIDIwNCwgMSwgNzgsIDIxOCwgMjA0LCAxLCAyMTcsIDEyNiwgMjE4LCAyMDQsIDEsIDIwMywgCi0gICAgMTgyLCAyMTgsIDIwNCwgMSwgMjQwLCAxMDgsIDIxOCwgMjA0LCAxLCAyMzgsIDE1NSwgMjE4LCAyMDQsIDEsIDI0MSwgMTYxLCAKLSAgICAyMTgsIDIwNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMjEwLCAyNTQsIDEsIDE5OCwgMjE4LCAyMDQsIDEsIAotICAgIDIwNywgMjQxLCAyMTgsIDIwNCwgMSwgMjA3LCAyMjksIDIxOCwgMjA0LCAxLCAyNDQsIDEyMCwgMjE4LCAyMDQsIDEsIDIyMSwgCi0gICAgMjI3LCAyMTgsIDIwNCwgMSwgMjUwLCAyNTUsIDE5OCwgMjE4LCAyMDQsIDEsIDIwNSwgMTg1LCAyMTMsIDkwLCAyMTgsIAotICAgIDIwNCwgMSwgMjA1LCAxODYsIDE1MiwgMjE4LCAyMDQsIDEsIDI1MCwgNjYsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMjEwLCAKLSAgICAyNTQsIDEsIDIxNiwgMjIwLCAyMTgsIDIwNCwgMjEwLCAyMDEsIDEsIDIxNiwgMjIwLCAyMTgsIDIwNCwgMSwgMjQ3LCA1MiwgCi0gICAgMjE4LCAyMDQsIDIxMiwgMTIwLCAyMzcsIDY1LCA4MiwgMjE4LCAyMDQsIDUyLCAyMzcsIDY1LCA4MiwgMjE4LCAyMDQsIAotICAgIDEzMSwgMjEzLCA4MiwgMjE4LCAyMDQsIDEzMSwgNTIsIDIxMywgODIsIDIxNCwgMjE1LCAyLCAyNTAsIDE4MCwgMjE0LCAKLSAgICAyMTUsIDIsIDIwNSwgMTk5LCAyMTQsIDIxNSwgMSwgNjMsIDIxNCwgMjE1LCAxLCAyNTIsIDI1LCAyMTQsIDIxNSwgMSwgNzUsIAotICAgIDIxNCwgMjE1LCAxLCAyMzEsIDgzLCAyMTQsIDIxNSwgMSwgNjgsIDIxNCwgMjE1LCAxLCAyMDYsIDE3OCwgMjE0LCAyMTUsIAotICAgIDEsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMSwgMTI1LCAyMTUsIDE4NiwgMjE0LCAyMTUsIDEsIDEyNSwgMTU5LCAyMTQsIDIxNSwgCi0gICAgMSwgMTI1LCAyMjcsIDc4LCAyMTQsIDIxNSwgMSwgNzQsIDIxNCwgMjE1LCAxLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDEsIAotICAgIDI1MSwgNjQsIDIxNCwgMjE1LCAxLCA3OCwgMjE0LCAyMTUsIDEsIDIyMCwgMTgsIDIxNCwgMjE1LCAxLCAyNTAsIDM0LCAKLSAgICAyMTQsIDIxNSwgMSwgMTczLCAyMTQsIDIxNSwgMSwgMjI5LCAxNDQsIDIxNCwgMjE1LCAxLCAyMzksIDgsIDIxNCwgMjE1LCAKLSAgICAxLCAyMzgsIDExOSwgMjE0LCAyMTUsIDEsIDIyMiwgMjAzLCAyMTQsIDIxNSwgMSwgMjQ3LCA5MiwgMjE0LCAyMTUsIDEsIAotICAgIDI0NiwgMTk5LCAyMTQsIDIxNSwgMSwgMjMwLCAxODEsIDIxNCwgMjE1LCAxLCAyMzAsIDE0OSwgMjE0LCAyMTUsIDEsIDIyMSwgCi0gICAgMTEsIDIxNCwgMjE1LCAxLCAyMDcsIDI0MSwgMjE0LCAyMTUsIDEsIDIwNywgMjI5LCAyMTQsIDIxNSwgMSwgMjQ0LCAxMjAsIAotICAgIDIxNCwgMjE1LCAxLCAyNDQsIDEwNCwgMjE0LCAyMTUsIDEsIDIyMSwgMjI3LCAyMTQsIDIxNSwgMSwgMjEwLCAyMiwgMjE0LCAKLSAgICAyMTUsIDEsIDIwOSwgMTA4LCAyMTQsIDIxNSwgMSwgMjQ0LCAyMTIsIDIxNCwgMjE1LCAxLCAyNDQsIDEsIDIxNCwgMjE1LCAKLSAgICAxLCAyMDEsIDIwMSwgMjE0LCAyMTUsIDEsIDE4NSwgMjE0LCAyMTUsIDEsIDIxOCwgMjA4LCAyMTQsIDIxNSwgMSwgMjQ5LCAKLSAgICAzMiwgMjE0LCAyMTUsIDEsIDI0OCwgOTgsIDIxNCwgMjE1LCAxLCAxOTIsIDIxNCwgMjE1LCAxLCAxOTgsIDIxNCwgMjE1LCAKLSAgICAxLCAyMTYsIDIyMCwgMjE0LCAyMTUsIDEsIDIyOCwgMTEzLCAyMTQsIDIxNSwgMSwgMjA2LCA4NiwgMjE0LCAyMTUsIDEsIAotICAgIDIxMywgOTAsIDIxNCwgMjE1LCAxLCAyMTEsIDE2NCwgMjE0LCAyMTUsIDEsIDIxNSwgMzYsIDIxNCwgMjE1LCAxLCAxNTIsIAotICAgIDIxNCwgMjE1LCAxLCAyMjcsIDc3LCAyMTQsIDIxNSwgMTA5LCAyLCAyMzcsIDE1NSwgMjE0LCAyMTUsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMTQsIDIxNSwgMjIsIDIsIDc1LCAyMTQsIDIxNSwgMjIsIDIsIDIzMSwgODMsIDIxNCwgMjE1LCAyMiwgMiwgNjgsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgMjA2LCAxNzgsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNDYsIDIxNCwgMjE1LCAyMiwgMiwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE1OSwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgNzQsIDIxNCwgMjE1LCAyMiwgMiwgMjQxLCAxNjEsIDIxNCwgMjE1LCAyMiwgMiwgMjUxLCA2NCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCA3OCwgMjE0LCAyMTUsIDIyLCAyLCAyMjAsIDE4LCAyMTQsIDIxNSwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIxNCwgMjE1LCAyLCAyMDUsIDIwNCwgMjE0LCAyMTUsIDI0NCwgMTY2LCAyMTQsIDIxNSwgNTIsIDI0NCwgMTY2LCAyMTQsIAotICAgIDIxNSwgMTcsIDIwMiwgODQsIDIxNCwgMjE1LCAxNywgMTA1LCAyMTQsIDIxNSwgMTcsIDEwOCwgMjE0LCAyMTUsIDE3LCAKLSAgICAxNDcsIDIxNCwgMjE1LCAxNywgMTQ5LCAyMTQsIDIxNSwgMTcsIDE3MCwgMjE0LCAyMTUsIDE3LCAxOTUsIDIxNCwgMjE1LCAKLSAgICAxNywgMjEzLCAxMTEsIDIxNCwgMjE1LCAxNywgMTk5LCAyMTQsIDIxNSwgMTcsIDIyMiwgNjMsIDM5LCA5MiwgMTcsIDIwMiwgCi0gICAgODQsIDM5LCA5MiwgMTcsIDEwNSwgMzksIDkyLCAxNywgMTA4LCAzOSwgOTIsIDE3LCAxNDcsIDM5LCA5MiwgMTcsIDE0OSwgCi0gICAgMzksIDkyLCAxNywgMTcwLCAzOSwgOTIsIDE3LCAxOTUsIDM5LCA5MiwgMTcsIDIxMywgMTExLCAzOSwgOTIsIDE3LCAxOTksIAotICAgIDM5LCA5MiwgMTcsIDIyMiwgNjMsIDM5LCA5MiwgMSwgNjMsIDM5LCA5MiwgMSwgNjgsIDM5LCA5MiwgMSwgMTczLCAzOSwgCi0gICAgOTIsIDEsIDIwMSwgMjAxLCAzOSwgOTIsIDEsIDE4NSwgMzksIDkyLCAxLCAyMTYsIDIyMCwgMzksIDkyLCAxLCAyMDUsIAotICAgIDIzMCwgMzksIDkyLCAyLCAyNTAsIDE3LCA5MiwgMiwgMjExLCAyMjcsIDI0NywgNTIsIDkyLCAyLCAyNDcsIDUzLCAyMDUsIAotICAgIDIwNCwgOTIsIDIsIDUyLCAyNDcsIDUzLCAyMDUsIDIwNCwgOTIsIDIsIDI0NywgNTMsIDEwOCwgOTIsIDIsIDI0NywgNTMsIAotICAgIDE0NywgOTIsIDIsIDI0NywgNTMsIDI1MCwgMTcsIDkyLCAyLCAyMTcsIDE2MiwgOTIsIDIzOCwgMjI4LCAyNDAsIDcsIDkyLCAKLSAgICAyNDcsIDMzLCA5MiwgMjM3LCA1OCwgOTIsIDIsIDIxMiwgMTU3LCA5MiwgMjMwLCAxNzMsIDIyMCwgMzksIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMTcsIDIwMiwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDEwNSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNywgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDcsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0OSwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxNywgMTcwLCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxOTUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTcsIDIxMywgMTExLCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxOTksIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyOSwgMTQ0LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIzOSwgOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjIsIDIwMywgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAxLCAyMTUsIDM2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMywgOTAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgCi0gICAgMjAyLCAxMTYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIxLCAxMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTAsIDIyLCAKLSAgICAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIzNiwgMzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjAxLCAyMDEsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMTg1LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxOCwgMjA4LCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDEsIDE5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDQsIDIxMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDksIAotICAgIDMyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxNiwgMjIwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE5OCwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjgsIDExMywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDQsIDExMSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAxLCAyMDksIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgCi0gICAgMjA2LCA4NiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDcsIDkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDYzLCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIyMCwgNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNzUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMSwgMjIwLCAxOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjA3LCAyNCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNzQsIAotICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyNDEsIDE2MSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAyMiwgNzgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE0MywgMjQ3LCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDI0NywgNjksIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMiwgMjQ1LCA3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyLCAyMTIsIDE3MCwgMjE2LCAxMTksIDEsIDE3MywgMjE2LCAKLSAgICAxMTksIDEsIDIzOSwgOCwgMjE2LCAxMTksIDEsIDIyMiwgMjAzLCAyMTYsIDExOSwgMSwgMjEwLCAyMiwgMjE2LCAxMTksIDEsIAotICAgIDI0NCwgMjEyLCAyMTYsIDExOSwgMSwgMjAxLCAyMDEsIDIxNiwgMTE5LCAxLCAxODUsIDIxNiwgMTE5LCAxLCAyNDksIDMyLCAKLSAgICAyMTYsIDExOSwgMSwgMTkyLCAyMTYsIDExOSwgMSwgMjQ3LCA5MiwgMjE2LCAxMTksIDEsIDIzMCwgMTgxLCAyMTYsIDExOSwgCi0gICAgMSwgMjIxLCAxMSwgMjE2LCAxMTksIDEsIDIxNSwgMzYsIDIxNiwgMTE5LCAxLCAyMTYsIDIyMCwgMjE2LCAxMTksIDEsIAotICAgIDIyOCwgMTEzLCAyMTYsIDExOSwgMSwgMTk4LCAyMTYsIDExOSwgMSwgMjA0LCAxMTEsIDIxNiwgMTE5LCAxLCAxNTIsIDIxNiwgCi0gICAgMTE5LCAxLCAyMjUsIDU0LCAyMTYsIDExOSwgMSwgMjIyLCAxODIsIDIxNiwgMTE5LCAxLCAyMjMsIDI1LCAyMTYsIDExOSwgCi0gICAgMSwgMjIwLCAyMzQsIDIxNiwgMTE5LCAxLCA2MywgMjE2LCAxMTksIDIyLCAyLCA3NSwgMjE2LCAxMTksIDIyLCAyLCA2OCwgCi0gICAgMjE2LCAxMTksIDIyLCAyLCA3NCwgMjE2LCAxMTksIDIyLCAyLCAyNTEsIDY0LCAyMTYsIDExOSwgMjIsIDIsIDc4LCAyMTYsIAotICAgIDExOSwgMjIsIDIsIDI1MCwgMzQsIDIxNiwgMTE5LCAyMiwgMiwgMjQwLCAyMzgsIDIxNiwgMTE5LCAyMiwgMiwgMjQxLCAKLSAgICAxODksIDIxNiwgMTE5LCAxMDksIDIsIDIyMiwgMjA1LCAyMTYsIDExOSwgMTA5LCAyLCAyMjMsIDE2MywgMjE2LCAxMTksIAotICAgIDEwOSwgMiwgMTQ2LCAyMTYsIDExOSwgMTA5LCAyLCAyMzcsIDE3MSwgMjE2LCAxMTksIDIwNSwgMjA0LCAyMTYsIDExOSwgCi0gICAgMjE0LCAxNjgsIDgyLCAyOCwgMTIzLCAyMDgsIDIzNiwgMjgsIDEyMywgMjA4LCAyMzUsIDI4LCAxMjMsIDIwOCwgMjMzLCAKLSAgICAyOCwgMTIzLCAyMDgsIDIzOCwgMjgsIDEyMywgMjE2LCA0MiwgMjgsIDEyMywgMjE2LCAyNiwgMjgsIDEyMywgMjE2LCAyMSwgCi0gICAgMjgsIDEyMywgMjE2LCAyMywgMjgsIDEyMywgMjE2LCAzOSwgMjgsIDEyMywgMjE2LCAzMiwgMjgsIDEyMywgMjE2LCAyNSwgCi0gICAgMjgsIDEyMywgMjE2LCA0NCwgMjgsIDEyMywgMjE2LCAyNywgMjgsIDEyMywgMjE2LCA0NiwgMjgsIDEyMywgMjE2LCA0MywgCi0gICAgMjgsIDEyMywgMjI0LCAxMzcsIDI4LCAxMjMsIDIyNCwgMTI4LCAyOCwgMTIzLCAyMjQsIDEzMSwgMjgsIDEyMywgMjE4LCAKLSAgICAxMzgsIDI4LCAxMjMsIDIxOCwgMTQ5LCAyOCwgMTIzLCAyMTgsIDE1MCwgMjgsIDEyMywgMjExLCAxNDgsIDI4LCAxMjMsIAotICAgIDIzMSwgOTYsIDI4LCAxMjMsIDIzMSwgMTAzLCAyOCwgMTIzLCAyMTEsIDE1OSwgMjgsIDEyMywgMjExLCAxNDYsIDI4LCAKLSAgICAxMjMsIDIxOCwgMTg5LCAyOCwgMTIzLCAyMzYsIDI0NiwgMjgsIDEyMywgMjExLCAxNDMsIDE5MCwgMiwgMjE5LCAxMDIsIAotICAgIDE5MCwgMiwgMjQ2LCAyMzUsIDE5MCwgMiwgMjI3LCAyNDIsIDE5MCwgMiwgMjA0LCAyMCwgMTkwLCAxLCA2MywgMTkwLCAxLCAKLSAgICAyMzUsIDIwNiwgMjI5LCAyMTEsIDE5MCwgMSwgNzUsIDE5MCwgMSwgMjMxLCA4MywgMTkwLCAxLCA2OCwgMTkwLCAxLCAyMTksIAotICAgIDE2OSwgMjQ2LCAyMDUsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAxLCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMiwgCi0gICAgMjE2LCAxNzMsIDE5MCwgMSwgNzQsIDE5MCwgMSwgMjUxLCA2NCwgMTkwLCAxLCA3OCwgMTkwLCAxLCAxNzMsIDE5MCwgMSwgCi0gICAgMjMwLCA0NCwgMjE0LCAyMjcsIDE5MCwgMSwgMjMwLCA0NCwgMjIzLCAyMDUsIDE5MCwgMSwgMjM5LCA4LCAxOTAsIDEsIAotICAgIDIzOSwgOSwgMjIzLCAyMDUsIDE5MCwgMSwgMjIyLCAyMDMsIDE5MCwgMSwgMjQ3LCA5MiwgMTkwLCAxLCAyNDcsIDkzLCAKLSAgICAyMjMsIDIwNSwgMTkwLCAxLCAyMzAsIDE4MSwgMTkwLCAxLCAyMjEsIDEyLCAyMjMsIDIwNSwgMTkwLCAxLCAyMzAsIDE4MiwgCi0gICAgMjI1LCAxNDQsIDE5MCwgMSwgMjIxLCAxMSwgMTkwLCAxLCAyMDcsIDI0MSwgMTkwLCAxLCAyMDcsIDI0MiwgMjI1LCAxNDQsIAotICAgIDE5MCwgMSwgMjQ0LCAxMjAsIDE5MCwgMSwgMjQ0LCAxMjEsIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMywgMTExLCAyMjMsIDIwNSwgCi0gICAgMTkwLCAxLCAyMTAsIDIyLCAxOTAsIDEsIDIxMCwgMjMsIDIyMywgMjA1LCAxOTAsIDEsIDI0NCwgMjEyLCAxOTAsIDEsIAotICAgIDI0NCwgMjEzLCAyMjUsIDE0NCwgMTkwLCAxLCAyMDEsIDIwMSwgMTkwLCAxLCAxODUsIDE5MCwgMSwgMjE5LCAxNjksIDIyMywgCi0gICAgMjA1LCAxOTAsIDEsIDI0OSwgMzIsIDE5MCwgMSwgMjQ5LCAzMywgMjIzLCAyMDUsIDE5MCwgMSwgMTkyLCAxOTAsIDEsIAotICAgIDE5OCwgMTkwLCAxLCAyMTYsIDIyMCwgMTkwLCAxLCAyMTYsIDIyMSwgMjUxLCA3NCwgMTkwLCAxLCAyMjgsIDExMywgMTkwLCAKLSAgICAxLCAyMDQsIDExMSwgMTkwLCAxLCAyMTUsIDM3LCAyMjMsIDIwNSwgMTkwLCAxLCAyMTUsIDM3LCAyMjUsIDE0NCwgMTkwLCAKLSAgICAxLCAyMTUsIDM2LCAxOTAsIDEsIDE1MiwgMTkwLCAyLCAyNDYsIDIzNiwgMjA5LCAxNTUsIDE5MCwgMjIsIDIsIDIwOSwgCi0gICAgMjE0LCAxOTAsIDIyLCAyLCAyMDgsIDE2NiwgMTkwLCAyMiwgMiwgMjAzLCAyMTEsIDE5MCwgMjIsIDIsIDIwMywgMjEyLCAKLSAgICAyMjQsIDI1MSwgMTkwLCAyMiwgMiwgMjEwLCAyMjQsIDE5MCwgMjIsIDIsIDIxMCwgMjI1LCAyMjQsIDIzOSwgMTkwLCAyMiwgCi0gICAgMiwgMjA5LCAyMzUsIDE5MCwgMjIsIDIsIDI0MywgMTYzLCAyMjMsIDIwNCwgMTkwLCAyMiwgMiwgMjE4LCAyNDksIDE5MCwgCi0gICAgMTA5LCAyLCAyMjksIDE3MywgMTkwLCAxMDksIDIsIDIxOSwgNiwgMTkwLCAxMDksIDIsIDI0NywgNzcsIDE5MCwgMjE5LCAKLSAgICAxMTUsIDE5MCwgNDksIDIxNiwgOTMsIDE5MCwgNTAsIDIxNiwgOTMsIDE5MCwgMjE5LCAxNTgsIDI1MCwgMjI1LCAxOTAsIAotICAgIDIxOSwgMTU4LCAyMjUsIDE2MiwgMTkwLCAyMTksIDE1OCwgMjI2LCAyMjYsIDE5MCwgMjE5LCAxNTgsIDIwNCwgMTQsIDE5MCwgCi0gICAgMjE5LCAxNTgsIDIxOSwgMTE2LCAxOTAsIDIxOSwgMTU4LCAyMjcsIDEwNiwgMTkwLCAyMTksIDE1OCwgMjI2LCAyMjAsIAotICAgIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE2LCAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNywgMjUxLCAxMTYsIDE5MCwgMjE5LCAKLSAgICAxNTgsIDIxOCwgMTA3LCAxOTAsIDIwNywgMTc0LCAyMTksIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjE5LCAxMTEsIDE5MCwgMTcsIAotICAgIDIwMiwgODQsIDE5MCwgMTcsIDEwNSwgMTkwLCAxNywgMTA4LCAxOTAsIDE3LCAxNDcsIDE5MCwgMTcsIDE0OSwgMTkwLCAxNywgCi0gICAgMTcwLCAxOTAsIDE3LCAxOTUsIDE5MCwgMTcsIDIxMywgMTExLCAxOTAsIDE3LCAxOTksIDE5MCwgMTcsIDIyMiwgNjMsIAotICAgIDE5MCwgMjE5LCAxNTgsIDIwOCwgMjAyLCAyMDcsIDE4OSwgMTkwLCAyMTksIDE1OCwgMjMwLCAyMTEsIDY5LCAxLCAyMTMsIAotICAgIDY3LCAyMzgsIDExOSwgNjksIDEsIDIxMywgNjcsIDI0NiwgMTk5LCA2OSwgMSwgMjEzLCA2NywgMjMwLCAxNDksIDY5LCAxLCAKLSAgICAyMTMsIDY3LCAyMjEsIDIyNywgNjksIDEsIDIxMywgNjcsIDI0OCwgOTgsIDY5LCAyLCAyMTMsIDY3LCAyMTQsIDIxMywgNjksIAotICAgIDY1LCAxLCAyMTMsIDY3LCAyMTYsIDEzNiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMjEsIDExLCA2OSwgMSwgNDUsIDIyOCwgCi0gICAgODUsIDI0MCwgMTA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOSwgOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzgsIDExOSwgCi0gICAgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzAsIDE4MSwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzAsIDE0OSwgNjksIDEsIDQ1LCAKLSAgICAyMjgsIDg1LCAyNDQsIDEyMCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDEwNCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMjEsIAotICAgIDIyNywgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjAyLCA4NCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTA1LCA2OSwgNDUsIDIyOCwgCi0gICAgODUsIDE3LCAxMDgsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0NywgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ5LCA2OSwgNDUsIAotICAgIDIyOCwgODUsIDE3LCAxNzAsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE5NSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjEzLCAKLSAgICAxMTEsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE5OSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjIyLCA2MywgNjksIDEsIDQ1LCAKLSAgICAyMjgsIDg1LCAyMjcsIDc3LCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMjEyLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgCi0gICAgMSwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDksIDMyLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OCwgOTgsIDI0NiwgMTkyLCAxLCAKLSAgICA2MywgMjQ2LCAxOTIsIDEsIDc1LCAyNDYsIDE5MiwgMSwgNjgsIDI0NiwgMTkyLCAxLCA3NCwgMjQ2LCAxOTIsIDEsIDI1MSwgCi0gICAgNjQsIDI0NiwgMTkyLCAxLCA3OCwgMjQ2LCAxOTIsIDEsIDE3MywgMjQ2LCAxOTIsIDEsIDIyOSwgMTQ0LCAyNDYsIDE5MiwgCi0gICAgMSwgMjM5LCA4LCAyNDYsIDE5MiwgMSwgMjM4LCAxMTksIDI0NiwgMTkyLCAxLCAyMjIsIDExMiwgMjQ2LCAxOTIsIDEsIAotICAgIDIyMiwgMjAzLCAyNDYsIDE5MiwgMSwgMjQ2LCAxOTksIDI0NiwgMTkyLCAxLCAyNDYsIDE0NCwgMjQ2LCAxOTIsIDEsIDIzMCwgCi0gICAgMTgxLCAyNDYsIDE5MiwgMSwgMjMwLCAxNDksIDI0NiwgMTkyLCAxLCAyMjIsIDEwMiwgMjQ2LCAxOTIsIDEsIDIyMiwgMTA0LCAKLSAgICAyNDYsIDE5MiwgMSwgMjIyLCAxMDMsIDI0NiwgMTkyLCAxLCAyMTAsIDIyLCAyNDYsIDE5MiwgMSwgMjA5LCAxMDgsIDI0NiwgCi0gICAgMTkyLCAxLCAyNDQsIDIxMiwgMjQ2LCAxOTIsIDEsIDI0NCwgMSwgMjQ2LCAxOTIsIDEsIDIyMSwgNTMsIDI0NiwgMTkyLCAxLCAKLSAgICAyMDEsIDIwMSwgMjQ2LCAxOTIsIDEsIDI0NCwgMTIwLCAyNDYsIDE5MiwgMSwgMTg1LCAyNDYsIDE5MiwgMSwgMjE4LCAxMiwgCi0gICAgMjQ2LCAxOTIsIDEsIDIxOCwgMjA4LCAyNDYsIDE5MiwgMSwgMjQ5LCAzMiwgMjQ2LCAxOTIsIDEsIDI0OCwgOTgsIDI0NiwgCi0gICAgMTkyLCAxLCAyMjMsIDIzOCwgMjQ2LCAxOTIsIDEsIDE5MiwgMjQ2LCAxOTIsIDEsIDI0OCwgMTk4LCAyNDYsIDE5MiwgMSwgCi0gICAgMTk4LCAyNDYsIDE5MiwgMSwgMjE2LCAyMjAsIDI0NiwgMTkyLCAxLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEsIDIwNiwgODYsIAotICAgIDI0NiwgMTkyLCAxLCAyMTEsIDE2NCwgMjQ2LCAxOTIsIDEsIDIxNSwgMzYsIDI0NiwgMTkyLCAxLCAxNTIsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjUyLCAyNSwgMjQ2LCAxOTIsIDIyLCAyLCA3NSwgMjQ2LCAxOTIsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDI0MSwgMTQ1LCAyNDYsIDE5MiwgMjIsIDIsIDY4LCAyNDYsIDE5MiwgMjIsIDIsIDIyMCwgNzMsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgNzgsIDI0NiwgMTkyLCAyMiwgMiwgMjUxLCA2NCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDIwNywgMjQsIDI0NiwgMTkyLCAxMDksIDIsIDE5OCwgMjQ2LCAxOTIsIDEwOSwgMiwgMjE2LCAyMjAsIDI0NiwgCi0gICAgMTkyLCAxMDksIDIsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMTA5LCAyLCAyMDQsIDExMSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzAsIAotICAgIDU0LCAyNDYsIDE5MiwgMSwgNDYsIDIzOSwgNzUsIDI0NiwgMTkyLCAxLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxMDksIAotICAgIDIsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEsIDQ2LCAyNDYsIDIwMCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMTAsIDY5LCAKLSAgICAyNDYsIDE5MiwgMSwgNDYsIDIyMywgMTYzLCAyNDYsIDE5MiwgMSwgNDYsIDIxOSwgMTg0LCAyNDYsIDE5MiwgMSwgNDYsIAotICAgIDIwMywgMTI0LCAyNDYsIDE5MiwgMSwgNDYsIDE0NiwgMjQ2LCAxOTIsIDEsIDQ2LCAxNTksIDI0NiwgMTkyLCAxLCA0NiwgCi0gICAgMjExLCAxNjcsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMjYsIDE4NSwgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIzNywgMTcxLCAKLSAgICAyNDYsIDE5MiwgMTcsIDIwMiwgODQsIDI0NiwgMTkyLCAxNywgMTA1LCAyNDYsIDE5MiwgMTcsIDEwOCwgMjQ2LCAxOTIsIAotICAgIDE3LCAxNDcsIDI0NiwgMTkyLCAxNywgMTQ5LCAyNDYsIDE5MiwgMTcsIDE3MCwgMjQ2LCAxOTIsIDE3LCAxOTUsIDI0NiwgCi0gICAgMTkyLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkyLCAxNywgMTk5LCAyNDYsIDE5MiwgMTcsIDIyMiwgNjMsIDI0NiwgMTkyLCAKLSAgICAyMTcsIDE3OSwgMjExLCAyMDEsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgNTIsIAotICAgIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDIwOCwgNzAsIDI0NCwgMTY2LCA2OSwgMSwgMjI5LCAxMzcsIDIzOSwgOCwgCi0gICAgNjksIDEsIDIyOSwgMTM3LCAyNDcsIDkyLCA2OSwgMSwgMjI5LCAxMzcsIDI0NiwgMTk5LCA2OSwgMSwgMjI5LCAxMzcsIAotICAgIDIzMCwgMTgxLCA2OSwgMSwgMjI5LCAxMzcsIDIzMCwgMTQ5LCA2OSwgMSwgMjI5LCAxMzcsIDIyMSwgMTEsIDY5LCAxLCAKLSAgICAyMjksIDEzNywgMjA3LCAyNDEsIDY5LCAxLCAyMjksIDEzNywgMjA3LCAyMjksIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxMjAsIAotICAgIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxMDQsIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxLCA2OSwgMSwgMjI5LCAxMzcsIDIwMSwgCi0gICAgMjAxLCA2OSwgMSwgMjI5LCAxMzcsIDIxNSwgMzYsIDY5LCAxLCAyMjksIDEzNywgMTUyLCA2OSwgMSwgMjI5LCAxMzcsIAotICAgIDIzNywgMTIsIDY5LCAxLCAyMjksIDEzNywgMjQwLCAxMDgsIDY5LCA2NSwgMSwgMjI5LCAxMzcsIDIxNiwgMTM2LCA2OSwgMSwgCi0gICAgMjI5LCAxMzcsIDIwMywgMTgyLCA2OSwgMSwgMjI5LCAxMzcsIDIwMiwgMTE2LCA2OSwgMSwgMjI5LCAxMzcsIDIxNiwgMjIwLCAKLSAgICA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIyMCwgOTQsIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjE3LCA3OCwgNjksIDIyNywgCi0gICAgMzYsIDIyOSwgMTM3LCAyMzYsIDE5MSwgNjksIDE2LCAyNTEsIDUxLCAyNDAsIDIxMSwgNjksIDE2LCAyNTEsIDUxLCAxMDUsIAotICAgIDY5LCAxNiwgMjUxLCA1MSwgMTA4LCA2OSwgMSwgMjUxLCA1MSwgMjE2LCAyMjAsIDY5LCAyLCAyMTksIDk4LCAyMjksIDIzNywgCi0gICAgMjA4LCAxNjEsIDY5LCAyLCA0NSwgMjI4LCA4NSwgMjA4LCAxNTksIDY5LCAyLCA0NSwgMjI4LCA4NSwgMjA4LCAxNTYsIDY5LCAKLSAgICAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDI0NiwgMTk5LCA2OSwgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyMTMsIDkwLCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzOCwgMzksIAotICAgIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzgsIDM5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjIyLCAxMjgsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMjIsIDEyOCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDYsIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0NiwgCi0gICAgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjEyLCAxMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxMiwgMTMsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDEzNSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDEzNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwOSwgNDcsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0OCwgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDgsIAotICAgIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCA2OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxOCwgNjksIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjAyLCAyNDcsIAotICAgIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDIsIDI0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxNSwgMjI3LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjE1LCAyMjcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwNSwgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjA1LCAKLSAgICAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzYsIDEzNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzNiwgMTM2LCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgNzgsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCA3OCwgNDUsIDIwNSwgMjIwLCAyMjUsIDE0MSwgCi0gICAgMjMwLCAwLCA0NSwgMjA1LCAyMjAsIDIyLCAyNTIsIDI1LCA0NSwgMjA1LCAyMjAsIDIyLCA3NSwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgMjA3LCAyNCwgNDUsIDIwNSwgMjIwLCAyMiwgNjgsIDQ1LCAyMDUsIDIyMCwgMjIsIDc0LCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCA3OCwgNDUsIDIwNSwgMjIwLCAyMjUsIDE0MSwgMjI5LCAxMTgsIDQ1LCAyMDUsIDIyMCwgMjIsIDIzNSwgMTcxLCA0NSwgCi0gICAgMjA1LCAyMjAsIDIyLCAyMDcsIDIzLCA0NSwgMjA1LCAyMjAsIDIyLCAyMDcsIDM5LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIAotICAgIDMyLCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDgsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgMjMxLCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCAyNTAsIDI0NywgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgNDUsIDIwNSwgMjIwLCAxNDMsIAotICAgIDIyNSwgMTQxLCAyMjEsIDUyLCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMTQzLCAyMjUsIDE0MSwgMjExLCAyNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIyOSwgOSwgNDUsIDIwNSwgMjIwLCAxNiwgMjIxLCAKLSAgICA1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjE0LCAyNTMsIDQ1LCAyMDUsIDIyMCwgMTYsIDIzNiwgMTM3LCAyMzYsIDEzMSwgNDUsIAotICAgIDIwNSwgMjIwLCAxNiwgMjI5LCAxOSwgMjI5LCAxOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCA3NCwgMjI1LCAyLCAyMjUsIDYxLCAKLSAgICAxLCA3OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDYsIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDExLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIwNywgMjQxLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNywgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDI0NCwgMTIwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NCwgMTA0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMjI3LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMywgOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjExLCAxNjQsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjIsIDIsIDIzMSwgODMsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMTc4LCAyMjUsIDIsIDIyNSwgNjEsIAotICAgIDIyLCAyLCAyNTEsIDI0NSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAzNCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgCi0gICAgMjUxLCAyMzgsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTksIDIyNSwgMiwgMjI1LCA2MSwgMjUxLCA3MCwgMjI5LCAxMDcsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAyMDksIDIyNSwgMiwgMjI1LCA2MSwgNCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjAzLCAyMzgsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDUsIDE5OSwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMDUsIDIwNCwgMzMsIDQsIDIwNywgMjIyLCAzMywgNCwgMjA3LCAyMjUsIDMzLCA0LCAyMDcsIDIyOCwgMzMsIDQsIAotICAgIDIwNywgMjI2LCAzMywgNCwgMjA3LCAyMjcsIDMzLCA0LCAyMDcsIDIyNCwgMzMsIDQsIDI0NCwgOTgsIDMzLCA0LCAyNDQsIAotICAgIDEwMCwgMzMsIDQsIDI0NCwgMTAzLCAzMywgNCwgMjQ0LCAxMDEsIDMzLCA0LCAyNDQsIDEwMiwgMzMsIDQsIDI0NCwgOTksIAotICAgIDMzLCA0LCAyNDEsIDI0MiwgMzMsIDQsIDI0MSwgMjQ2LCAzMywgNCwgMjQxLCAyNTQsIDMzLCA0LCAyNDEsIDI1MSwgMzMsIAotICAgIDQsIDI0MSwgMjUyLCAzMywgNCwgMjQxLCAyNDMsIDMzLCA0LCAyNDYsIDI1MiwgMzMsIDQsIDI0NiwgMjQ2LCAzMywgNCwgCi0gICAgMjQ2LCAyNDgsIDMzLCA0LCAyNDYsIDI1MSwgMzMsIDQsIDI0NiwgMjQ5LCAzMywgNCwgMjQ2LCAyNTAsIDMzLCA0LCAyNDYsIAotICAgIDI0NywgMzMsIDQsIDI0OCwgMTk4LCAzMywgNCwgMjQ4LCAxNzcsIDMzLCA0LCAyNDgsIDE4OSwgMzMsIDQsIDI0OCwgMTk3LCAKLSAgICAzMywgNCwgMjQ4LCAxOTIsIDMzLCA0LCAyNDgsIDE5MywgMzMsIDQsIDI0OCwgMTgxLCA4LCA1LCAxLCAyNDgsIDIyNSwgCi0gICAgMjUxLCAyLCA4LCA1LCAxLCAzNCwgMjE2LCA3MSwgOCwgNSwgMSwgMjQ4LCAzOSwgNzQsIDgsIDUsIDEsIDI0OCwgMjI1LCAKLSAgICA3NCwgOCwgNSwgMSwgMTg4LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjI3LCAxODcsIDI0MCwgMTc0LCA4LCA1LCAxLCAxMzIsIAotICAgIDIzOSwgNzYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjE1LCAKLSAgICAyNTIsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgMTI2LCA4LCAKLSAgICA1LCAxLCAyNDEsIDc5LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjQ4LCAzOSwgNzgsIDgsIDUsIDEsIDI0OCwgMzksIDE1OCwgCi0gICAgMywgOTUsIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzksIDIyMCwgNzMsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMjAsIDc0LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDIzNiwgMTA2LCA5NSwgOCwgCi0gICAgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDUsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMTEsIDY2LCAxNDYsIDgsIDEsIDUsIDYsIDIxNywgMSwgMywgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIAotICAgIDIwNCwgMywgMjM3LCAxMDIsIDgsIDUsIDEsIDUyLCAxNDYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIAotICAgIDEsIDUyLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAxMzIsIDE0NiwgOCwgNSwgMSwgMTMyLCAyMTcsIDEsIDMsIAotICAgIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDgsIDIxNiwgMjQxLCA3LCA4LCA1LCAxLCAxMDYsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAKLSAgICAyMTAsIDgsIDUsIDEsIDEwNiwgMjQ4LCAyMzEsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTcsIAotICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMDcsIDE3LCA4LCA1LCAxLCAxMDYsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDI0NiwgMTQyLCAKLSAgICA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDQ5LCAKLSAgICAyMTMsIDEyNSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgCi0gICAgMTYzLCA0OSwgMjI3LCAyMTAsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMjUsIDEyNCwgNTAsIAotICAgIDIxNSwgMjUyLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDMsIDIxMywgMTI1LCA4LCA1LCAxLCAKLSAgICAyMDMsIDEyNSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgNjUsIDI0NywgMjE1LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIAotICAgIDY1LCAxLCA1LCAyMzcsIDMxLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA2NSwgMSwgCi0gICAgNSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDY1LCAxLCA1LCAxMDYsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDIxNSwgCi0gICAgMTEsIDIwMywgNjYsIDgsIDUsIDEsIDIzMCwgMjI4LCA3NCwgOCwgNSwgMSwgMTcxLCAyMjAsIDczLCA4LCA1LCAxLCAyMDYsIAotICAgIDIyOCwgOCwgNSwgMSwgMjMwLCAyMzksIDI1MSwgMiwgMzAsIDEsIDUsIDYsIDIyMCwgMzYsIDkwLCA1LCAxLCA2MywgOTAsIAotICAgIDUsIDEsIDc0LCA5MCwgNSwgMSwgNzUsIDkwLCA1LCAxLCA3OCwgOTAsIDUsIDEsIDY4LCA5MCwgNSwgMSwgMjA2LCAxNjQsIAotICAgIDkwLCA1LCAxLCAyMzksIDgsIDkwLCA1LCAxLCAxNzMsIDkwLCA1LCAxLCAyMzgsIDE5MCwgOTAsIDUsIDEsIDIzOCwgODEsIAotICAgIDkwLCA1LCAxLCAyMzgsIDM5LCA5MCwgNSwgMSwgMjM3LCAyMzAsIDkwLCA1LCAxLCAyMzcsIDE5MiwgOTAsIDUsIDEsIDE1MiwgCi0gICAgOTAsIDUsIDEsIDIzNywgNjcsIDkwLCA1LCAxLCAyMzcsIDMsIDkwLCA1LCAxLCAyMzYsIDEzNiwgOTAsIDUsIDEsIDIzNiwgCi0gICAgMjYsIDkwLCA1LCAxLCAyMzUsIDI1NSwgOTAsIDUsIDEsIDIyOCwgMTEzLCA5MCwgNSwgMSwgMjI3LCAyMzQsIDkwLCA1LCAxLCAKLSAgICAyMjcsIDE0OCwgOTAsIDUsIDEsIDIyNywgNDksIDkwLCA1LCAxLCAyMjYsIDIzOSwgOTAsIDUsIDEsIDIyNiwgMjA4LCA5MCwgCi0gICAgNSwgMSwgMTkyLCA5MCwgNSwgMSwgMjI1LCAyMCwgOTAsIDUsIDEsIDIyNCwgMTU1LCA5MCwgNSwgMSwgMjI0LCA4MiwgOTAsIAotICAgIDUsIDEsIDIyMywgMjQ2LCA5MCwgNSwgMSwgMjAxLCAyMDEsIDkwLCA1LCAxLCAyMzYsIDE2MCwgOTAsIDUsIDEsIDIyMywgCi0gICAgOTMsIDkwLCA1LCAxLCAyMjIsIDI0MCwgOTAsIDUsIDEsIDIyMiwgMTAwLCA5MCwgNSwgMSwgMjIxLCAxOTEsIDkwLCA1LCAxLCAKLSAgICAyMjEsIDg0LCA5MCwgNSwgMSwgMjIxLCAyMiwgOTAsIDUsIDEsIDIxNywgNjQsIDkwLCA1LCAxLCAyMTcsIDUwLCA5MCwgNSwgCi0gICAgMSwgMjE3LCA0MywgOTAsIDUsIDEsIDIxNywgMzQsIDkwLCA1LCAxLCAyMTcsIDIzLCA5MCwgNSwgMSwgMjE3LCAyMSwgOTAsIAotICAgIDUsIDEsIDIxNSwgMzYsIDkwLCA1LCAxLCAxOTQsIDkwLCA1LCAxLCAyMTQsIDE3NywgOTAsIDUsIDEsIDIxMiwgMTYyLCA5MCwgCi0gICAgNSwgMSwgMjEyLCAxMywgOTAsIDUsIDEsIDIxMSwgMTAsIDkwLCA1LCAxLCAyMTAsIDE3NywgOTAsIDUsIDEsIDI0NCwgMjEyLCAKLSAgICA5MCwgNSwgMSwgMjEwLCAyMiwgOTAsIDUsIDEsIDI0NCwgNzUsIDkwLCA1LCAxLCAyMDksIDE4NywgOTAsIDUsIDEsIDI0MywgCi0gICAgMjMzLCA5MCwgNSwgMSwgMjA5LCAyLCA5MCwgNSwgMSwgMjQzLCAxMTMsIDkwLCA1LCAxLCAyNDIsIDQyLCA5MCwgNSwgMSwgCi0gICAgMjQyLCAxMywgOTAsIDUsIDEsIDI0MywgMTI0LCA5MCwgNSwgMSwgMjA4LCAxOTAsIDkwLCA1LCAxLCAyMDgsIDE4OSwgOTAsIAotICAgIDUsIDEsIDIwOCwgMTc4LCA5MCwgNSwgMSwgMjA4LCAxNzcsIDkwLCA1LCAxLCAyMDgsIDE3NiwgOTAsIDUsIDEsIDIwOCwgCi0gICAgMTc1LCA5MCwgNSwgMSwgMjA4LCAyMCwgOTAsIDUsIDEsIDIwOCwgMTQsIDkwLCA1LCAxLCAyMDcsIDI1NSwgOTAsIDUsIDEsIAotICAgIDIwNywgMjUzLCA5MCwgNSwgMSwgMjA3LCAyNDksIDkwLCA1LCAxLCAyMDcsIDI0OCwgOTAsIDUsIDEsIDIwNCwgMTExLCA5MCwgCi0gICAgNSwgMSwgMjA0LCA2MiwgOTAsIDUsIDEsIDIwNCwgMzAsIDkwLCA1LCAxLCAyMDQsIDAsIDkwLCA1LCAxLCAyMDMsIDIxNywgCi0gICAgOTAsIDUsIDEsIDIwMywgMjA0LCA5MCwgNSwgMSwgMTk4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTYsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjE0LCAyNTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI4LCA4NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMjQsIDkzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDE4NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDEsIDIwMSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyNDYsIDEzNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMjksIDExMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDksIDM5LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDIwNCwgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMywgNzYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjM2LCAxOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDYsIDI1NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCA3NSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMTgsIDIwMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNTAsIDQ1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIzOCwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxNDcsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjE2LCAxOTcsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjQ5LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDEzMywgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyNDMsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzgsIDg4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0MywgMjM1LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDI0OCwgOTYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNywgMjI3LCAxOSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMjgsIDg3LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyNCwgOTQsIDIyNywgMTksIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjE5LCAxNjksIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIzLCAxMTEsIDIyNywgMTksIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMzAsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTksIDIyNywgCi0gICAgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM1LCAyMDYsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIyMCwgCi0gICAgMzAsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIzMSwgNDcsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMjMwLCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDMsIDQxLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMTEsIDI0MiwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAyNTIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI0NiwgMTU3LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDIyLCAyLCAyMjEsIDM3LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU4LCAyMjUsIDIsIDIyNSwgNjEsIDIyNiwgCi0gICAgMjIzLCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDE0OSwgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAotICAgIDIwMiwgODQsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA4LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDE3LCAxNDcsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE0OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTcwLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDE3LCAxOTUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDIxMywgMTExLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKLSAgICAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDIyMiwgNjMsIDI4LCAxNzYsIDIyMCwgMTc0LCAyOCwgMTc2LCAyMjAsIDE3OSwgCi0gICAgMjgsIDE3NiwgMjAyLCAyNDYsIDI4LCAxNzYsIDIwMiwgMjQ1LCAyOCwgMTc2LCAyMDIsIDI0NCwgMjgsIDE3NiwgMjA3LCAKLSAgICA4OSwgMjgsIDE3NiwgMjA3LCA5MywgMjgsIDE3NiwgMjAyLCAyMTEsIDI4LCAxNzYsIDIwMiwgMjA3LCAyOCwgMTc2LCAyNDAsIAotICAgIDIzNywgMjgsIDE3NiwgMjQwLCAyMzUsIDI4LCAxNzYsIDI0MCwgMjM2LCAyOCwgMTc2LCAyNDAsIDIzMywgMjgsIDE3NiwgCi0gICAgMjM1LCAxOTYsIDI4LCAxNzYsIDIzNSwgMTk1LCAyOCwgMTc2LCAyMzUsIDE5MywgMjgsIDE3NiwgMjM1LCAxOTQsIDI4LCAKLSAgICAxNzYsIDIzNSwgMTk5LCAyOCwgMTc2LCAyMzUsIDE5MiwgMjgsIDE3NiwgMjM1LCAxOTEsIDI4LCAxNzYsIDIzNSwgMjAxLCAKLSAgICAyOCwgMTc2LCAyNTAsIDEzNiwgMjgsIDE3NiwgMjUwLCAxMzUsIDI4LCAxMDcsIDIyMiwgODYsIDI4LCAxMDcsIDIyMiwgOTIsIAotICAgIDI4LCAxMDcsIDIxMSwgMTQ1LCAyOCwgMTA3LCAyMTEsIDE0NCwgMjgsIDEwNywgMjA4LCAyMzUsIDI4LCAxMDcsIDIwOCwgCi0gICAgMjMzLCAyOCwgMTA3LCAyMDgsIDIzMiwgMjgsIDEwNywgMjA4LCAyMzgsIDI4LCAxMDcsIDIwOCwgMjM5LCAyOCwgMTA3LCAKLSAgICAyMDgsIDIzMSwgMjgsIDEwNywgMjE2LCAyNiwgMjgsIDEwNywgMjE2LCA0MSwgMjgsIDEwNywgMjExLCAxNTEsIDI4LCAxMDcsIAotICAgIDIxNiwgMzgsIDI4LCAxMDcsIDIxNiwgMjgsIDI4LCAxMDcsIDIxNiwgMzAsIDI4LCAxMDcsIDIxNiwgMTcsIDI4LCAxMDcsIAotICAgIDIxNiwgMTgsIDI4LCAxMDcsIDIyOSwgMjQzLCAyOCwgMTA3LCAyMjQsIDEzNiwgMjgsIDEwNywgMjI0LCAxMzAsIDI4LCAKLSAgICAxMDcsIDIxMSwgMTU1LCAyOCwgMTA3LCAyMjQsIDEzMywgMjgsIDEwNywgMjI0LCAxMzksIDI4LCAxMDcsIDIxOCwgMTM0LCAKLSAgICAyOCwgMTA3LCAyMTgsIDE0MywgMjgsIDEwNywgMjE4LCAxNDcsIDI4LCAxMDcsIDIxMSwgMTUzLCAyOCwgMTA3LCAyMTgsIAotICAgIDEzNywgMjgsIDEwNywgMjE4LCAxNTEsIDI4LCAxMDcsIDIxOCwgMTUyLCAyOCwgMTA3LCAyMTIsIDEwMywgMjgsIDEwNywgCi0gICAgMjEyLCAxMDYsIDI4LCAxMDcsIDIxMSwgMTQ5LCAyOCwgMTA3LCAyMTEsIDE0NywgMjgsIDEwNywgMjEyLCAxMDEsIDI4LCAKLSAgICAxMDcsIDIxMiwgMTA5LCAyOCwgMTA3LCAyMTIsIDExMCwgMjgsIDEwNywgMjEyLCA5NSwgMjgsIDEwNywgMjEyLCAxMDgsIAotICAgIDI4LCAxMDcsIDIxOSwgMTA1LCAyOCwgMTA3LCAyMTksIDEwNiwgMjgsIDEwNywgMjAzLCAyNywgMjgsIDEwNywgMjAzLCAyOCwgCi0gICAgMjgsIDEwNywgMjQ2LCA3MiwgMjgsIDEwNywgMjQ2LCA3MSwgMjgsIDEwNywgMjExLCAxNjAsIDI4LCAxMDcsIDIxOCwgMTg3LCAKLSAgICAyOCwgMTA3LCAyMTgsIDE4NiwgMTIsIDE1LCAyMzMsIDc0LCAxMiwgMTUsIDIzMywgNzMsIDEyLCAxNSwgMjMzLCA3MiwgMTIsIAotICAgIDE1LCAyMzMsIDcxLCAxMiwgMTUsIDIzMywgNzAsIDEyLCAxNSwgMjMzLCA2OSwgMTIsIDE1LCAyMzMsIDY4LCAxMiwgMTUsIAotICAgIDIzMywgNjcsIDEyLCAxNSwgMjMzLCA2NiwgMTIsIDE1LCAyMzMsIDY1LCAxMiwgMTUsIDIzMywgNjQsIDEyLCAxNSwgMjMzLCAKLSAgICA2MywgMTIsIDE1LCAyMzMsIDYyLCAxMiwgMTUsIDIzMywgNjEsIDEyLCAxNSwgMjMzLCA2MCwgMTIsIDE1LCAyMzMsIDU5LCAKLSAgICAxMiwgMTUsIDIzMywgNTgsIDEyLCAxNSwgMjMzLCA1NywgMTIsIDE1LCAyMzMsIDU2LCAxMiwgMTUsIDIzMywgNTUsIDEyLCAKLSAgICAxNSwgMjMzLCA1NCwgMTIsIDE1LCAyMzMsIDUzLCAxMiwgMTUsIDIzMywgNTIsIDEyLCAxNSwgMjMzLCA1MSwgMTIsIDE1LCAKLSAgICAyMzMsIDUwLCAxMiwgMTUsIDIzMywgNDksIDEyLCAxNSwgMjMzLCA0OCwgMTIsIDE1LCAyMzMsIDQ3LCAxMiwgMTUsIDIzMywgCi0gICAgNDYsIDEyLCAxNSwgMjMzLCA0NSwgMTIsIDE1LCAyMzMsIDQ0LCAxMiwgMTUsIDIzMywgNDMsIDEyLCAxNSwgMjMzLCA0MiwgCi0gICAgMTIsIDE1LCAyMzMsIDQxLCAxMiwgMTUsIDIzMywgNDAsIDEyLCAxNSwgMjMzLCAzOSwgMTIsIDE1LCAyMzMsIDM4LCAxMiwgCi0gICAgMTUsIDIzMywgMzcsIDEyLCAxNSwgMjMzLCAzNiwgMTIsIDE1LCAyMzMsIDM1LCAxMiwgMTUsIDIzMywgMzQsIDEyLCAxNSwgCi0gICAgMjMzLCAzMywgMTIsIDE1LCAyMzMsIDMyLCAxMiwgMTUsIDIzMywgMzEsIDEyLCAxNSwgMjMzLCAzMCwgMTIsIDE1LCAyMzMsIAotICAgIDI5LCAxMiwgMTUsIDIzMywgMjgsIDEyLCAxNSwgMjMzLCAyNywgMTIsIDE1LCAyMzMsIDI2LCAxMiwgMTUsIDIzMywgMjUsIAotICAgIDEyLCAxNSwgMjMzLCAyNCwgMTIsIDE1LCAyMzMsIDIzLCAxMiwgMTUsIDIzMywgMjIsIDEyLCAxNSwgMjMzLCAyMSwgMTIsIAotICAgIDE1LCAyMzMsIDIwLCAxMiwgMTUsIDIzMywgMTksIDEyLCAxNSwgMjMzLCAxOCwgMTIsIDE1LCAyMzMsIDE3LCAxMiwgMTUsIAotICAgIDIzMywgMTYsIDEyLCAxNSwgMjMzLCAxNSwgMTIsIDE1LCAyMzMsIDE0LCAxMiwgMTUsIDIzMywgMTMsIDEyLCAxNSwgMjMzLCAKLSAgICAxMiwgMTIsIDE1LCAyMzMsIDExLCAxMiwgMTUsIDIzMywgMTAsIDEyLCAxNSwgMjMzLCA5LCAxMiwgMTUsIDIzMywgOCwgMTIsIAotICAgIDE1LCAyMzMsIDcsIDEyLCAxNSwgMjMzLCA2LCAxMiwgMTUsIDIzMywgNSwgMTIsIDE1LCAyMzMsIDQsIDEyLCAxNSwgMjMzLCAKLSAgICAzLCAxMiwgMTUsIDIzMywgMiwgMTIsIDE1LCAyMzMsIDEsIDEyLCAxNSwgMjMzLCAwLCAxMiwgMTUsIDIzMiwgMjU1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjU0LCAxMiwgMTUsIDIzMiwgMjUzLCAxMiwgMTUsIDIzMiwgMjUyLCAxMiwgMTUsIDIzMiwgMjUxLCAxMiwgCi0gICAgMTUsIDIzMiwgMjUwLCAxMiwgMTUsIDIzMiwgMjQ5LCAxMiwgMTUsIDIzMiwgMjQ4LCAxMiwgMTUsIDIzMiwgMjQ3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjQ2LCAxMiwgMTUsIDIzMiwgMjQ1LCAxMiwgMTUsIDIzMiwgMjQ0LCAxMiwgMTUsIDIzMiwgMjQzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjQyLCAxMiwgMTUsIDIzMiwgMjQxLCAxMiwgMTUsIDIzMiwgMjQwLCAxMiwgMTUsIDIzMiwgMjM5LCAxMiwgCi0gICAgMTUsIDIzMiwgMjM4LCAxMiwgMTUsIDIzMiwgMjM3LCAxMiwgMTUsIDIzMiwgMjM2LCAxMiwgMTUsIDIzMiwgMjM1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjM0LCAxMiwgMTUsIDIzMiwgMjMzLCAxMiwgMTUsIDIzMiwgMjMyLCAxMiwgMTUsIDIzMiwgMjMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMjMwLCAxMiwgMTUsIDIzMiwgMjI5LCAxMiwgMTUsIDIzMiwgMjI4LCAxMiwgMTUsIDIzMiwgMjI3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjI2LCAxMiwgMTUsIDIzMiwgMjI1LCAxMiwgMTUsIDIzMiwgMjI0LCAxMiwgMTUsIDIzMiwgMjIzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjIyLCAxMiwgMTUsIDIzMiwgMjIxLCAxMiwgMTUsIDIzMiwgMjIwLCAxMiwgMTUsIDIzMiwgMjE5LCAxMiwgCi0gICAgMTUsIDIzMiwgMjE4LCAxMiwgMTUsIDIzMiwgMjE3LCAxMiwgMTUsIDIzMiwgMjE2LCAxMiwgMTUsIDIzMiwgMjE1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjE0LCAxMiwgMTUsIDIzMiwgMjEzLCAxMiwgMTUsIDIzMiwgMjEyLCAxMiwgMTUsIDIzMiwgMjExLCAxMiwgCi0gICAgMTUsIDIzMiwgMjEwLCAxMiwgMTUsIDIzMiwgMjA5LCAxMiwgMTUsIDIzMiwgMjA4LCAxMiwgMTUsIDIzMiwgMjA3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjA2LCAxMiwgMTUsIDIzMiwgMjA1LCAxMiwgMTUsIDIzMiwgMjA0LCAxMiwgMTUsIDIzMiwgMjAzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjAyLCAxMiwgMTUsIDIzMiwgMjAxLCAxMiwgMTUsIDIzMiwgMjAwLCAxMiwgMTUsIDIzMiwgMTk5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTk4LCAxMiwgMTUsIDIzMiwgMTk3LCAxMiwgMTUsIDIzMiwgMTk2LCAxMiwgMTUsIDIzMiwgMTk1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTk0LCAxMiwgMTUsIDIzMiwgMTkzLCAxMiwgMTUsIDIzMiwgMTkyLCAxMiwgMTUsIDIzMiwgMTkxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTkwLCAxMiwgMTUsIDIzMiwgMTg5LCAxMiwgMTUsIDIzMiwgMTg4LCAxMiwgMTUsIDIzMiwgMTg3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTg2LCAxMiwgMTUsIDIzMiwgMTg1LCAxMiwgMTUsIDIzMiwgMTg0LCAxMiwgMTUsIDIzMiwgMTgzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTgyLCAxMiwgMTUsIDIzMiwgMTgxLCAxMiwgMTUsIDIzMiwgMTgwLCAxMiwgMTUsIDIzMiwgMTc5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTc4LCAxMiwgMTUsIDIzMiwgMTc3LCAxMiwgMTUsIDIzMiwgMTc2LCAxMiwgMTUsIDIzMiwgMTc1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTc0LCAxMiwgMTUsIDIzMiwgMTczLCAxMiwgMTUsIDIzMiwgMTcyLCAxMiwgMTUsIDIzMiwgMTcxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTcwLCAxMiwgMTUsIDIzMiwgMTY5LCAxMiwgMTUsIDIzMiwgMTY4LCAxMiwgMTUsIDIzMiwgMTY3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTY2LCAxMiwgMTUsIDIzMiwgMTY1LCAxMiwgMTUsIDIzMiwgMTY0LCAxMiwgMTUsIDIzMiwgMTYzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTYyLCAxMiwgMTUsIDIzMiwgMTYxLCAxMiwgMTUsIDIzMiwgMTYwLCAxMiwgMTUsIDIzMiwgMTU5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTU4LCAxMiwgMTUsIDIzMiwgMTU3LCAxMiwgMTUsIDIzMiwgMTU2LCAxMiwgMTUsIDIzMiwgMTU1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTU0LCAxMiwgMTUsIDIzMiwgMTUzLCAxMiwgMTUsIDIzMiwgMTUyLCAxMiwgMTUsIDIzMiwgMTUxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTUwLCAxMiwgMTUsIDIzMiwgMTQ5LCAxMiwgMTUsIDIzMiwgMTQ4LCAxMiwgMTUsIDIzMiwgMTQ3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTQ2LCAxMiwgMTUsIDIzMiwgMTQ1LCAxMiwgMTUsIDIzMiwgMTQ0LCAxMiwgMTUsIDIzMiwgMTQzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTQyLCAxMiwgMTUsIDIzMiwgMTQxLCAxMiwgMTUsIDIzMiwgMTQwLCAxMiwgMTUsIDIzMiwgMTM5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTM4LCAxMiwgMTUsIDIzMiwgMTM3LCAxMiwgMTUsIDIzMiwgMTM2LCAxMiwgMTUsIDIzMiwgMTM1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTM0LCAxMiwgMTUsIDIzMiwgMTMzLCAxMiwgMTUsIDIzMiwgMTMyLCAxMiwgMTUsIDIzMiwgMTMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTMwLCAxMiwgMTUsIDIzMiwgMTI5LCAxMiwgMTUsIDIzMiwgMTI4LCAxMiwgMTUsIDIzMiwgMTI3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTI2LCAxMiwgMTUsIDIzMiwgMTI1LCAxMiwgMTUsIDIzMiwgMTI0LCAxMiwgMTUsIDIzMiwgMTIzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTIyLCAxMiwgMTUsIDIzMiwgMTIxLCAxMiwgMTUsIDIzMiwgMTIwLCAxMiwgMTUsIDIzMiwgMTE5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTE4LCAxMiwgMTUsIDIzMiwgMTE3LCAxMiwgMTUsIDIzMiwgMTE2LCAxMiwgMTUsIDIzMiwgMTE1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTE0LCAxMiwgMTUsIDIzMiwgMTEzLCAxMiwgMTUsIDIzMiwgMTEyLCAxMiwgMTUsIDIzMiwgMTExLCAxMiwgCi0gICAgMTUsIDIzMiwgMTEwLCAxMiwgMTUsIDIzMiwgMTA5LCAxMiwgMTUsIDIzMiwgMTA4LCAxMiwgMTUsIDIzMiwgMTA3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTA2LCAxMiwgMTUsIDIzMiwgMTA1LCAxMiwgMTUsIDIzMiwgMTA0LCAxMiwgMTUsIDIzMiwgMTAzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTAyLCAxMiwgMTUsIDIzMiwgMTAxLCAxMiwgMTUsIDIzMiwgMTAwLCAxMiwgMTUsIDIzMiwgOTksIDEyLCAKLSAgICAxNSwgMjMyLCA5OCwgMTIsIDE1LCAyMzIsIDk3LCAxMiwgMTUsIDIzMiwgOTYsIDEyLCAxNSwgMjMyLCA5NSwgMTIsIDE1LCAKLSAgICAyMzIsIDk0LCAxMiwgMTUsIDIzMiwgOTMsIDEyLCAxNSwgMjMyLCA5MiwgMTIsIDE1LCAyMzIsIDkxLCAxMiwgMTUsIDIzMiwgCi0gICAgOTAsIDEyLCAxNSwgMjMyLCA4OSwgMTIsIDE1LCAyMzIsIDg4LCAxMiwgMTUsIDIzMiwgODcsIDEyLCAxNSwgMjMyLCA4NiwgCi0gICAgMTIsIDE1LCAyMzIsIDg1LCAxMiwgMTUsIDIzMiwgODQsIDEyLCAxNSwgMjMyLCA4MywgMTIsIDE1LCAyMzIsIDgyLCAxMiwgCi0gICAgMTUsIDIzMiwgODEsIDEyLCAxNSwgMjMyLCA4MCwgMTIsIDE1LCAyMzIsIDc5LCAxMiwgMTUsIDIzMiwgNzgsIDEyLCAxNSwgCi0gICAgMjMyLCA3NywgMTIsIDE1LCAyMzIsIDc2LCAxMiwgMTUsIDIzMiwgNzUsIDEyLCAxNSwgMjMyLCA3NCwgMTIsIDE1LCAyMzIsIAotICAgIDczLCAxMiwgMTUsIDIzMiwgNzIsIDEyLCAxNSwgMjMyLCA3MSwgMTIsIDE1LCAyMzIsIDcwLCAxMiwgMTUsIDIzMiwgNjksIAotICAgIDEyLCAxNSwgMjMyLCA2OCwgMTIsIDE1LCAyMzIsIDY3LCAxMiwgMTUsIDIzMiwgNjYsIDEyLCAxNSwgMjMyLCA2NSwgMTIsIAotICAgIDE1LCAyMzIsIDY0LCAxMiwgMTUsIDIzMiwgNjMsIDEyLCAxNSwgMjMyLCA2MiwgMTIsIDE1LCAyMzIsIDYxLCAxMiwgMTUsIAotICAgIDIzMiwgNjAsIDEyLCAxNSwgMjMyLCA1OSwgMTIsIDE1LCAyMzIsIDU4LCAxMiwgMTUsIDIzMiwgNTcsIDEyLCAxNSwgMjMyLCAKLSAgICA1NiwgMTIsIDE1LCAyMzIsIDU1LCAxMiwgMTUsIDIzMiwgNTQsIDEyLCAxNSwgMjMyLCA1MywgMTIsIDE1LCAyMzIsIDUyLCAKLSAgICAxMiwgMTUsIDIzMiwgNTEsIDEyLCAxNSwgMjMyLCA1MCwgMTIsIDE1LCAyMzIsIDQ5LCAxMiwgMTUsIDIzMiwgNDgsIDEyLCAKLSAgICAxNSwgMjMyLCA0NywgMTIsIDE1LCAyMzIsIDQ2LCAxMiwgMTUsIDIzMiwgNDUsIDEyLCAxNSwgMjMyLCA0NCwgMTIsIDE1LCAKLSAgICAyMzIsIDQzLCAxMiwgMTUsIDIzMiwgNDIsIDEyLCAxNSwgMjMyLCA0MSwgMTIsIDE1LCAyMzIsIDQwLCAxMiwgMTUsIDIzMiwgCi0gICAgMzksIDEyLCAxNSwgMjMyLCAzOCwgMTIsIDE1LCAyMzIsIDM3LCAxMiwgMTUsIDIzMiwgMzYsIDEyLCAxNSwgMjMyLCAzNSwgCi0gICAgMTIsIDE1LCAyMzIsIDM0LCAxMiwgMTUsIDIzMiwgMzMsIDEyLCAxNSwgMjMyLCAzMiwgMTIsIDE1LCAyMzIsIDMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMzAsIDEyLCAxNSwgMjMyLCAyOSwgMTIsIDE1LCAyMzIsIDI4LCAxMiwgMTUsIDIzMiwgMjcsIDEyLCAxNSwgCi0gICAgMjMyLCAyNiwgMTIsIDE1LCAyMzIsIDI1LCAxMiwgMTUsIDIzMiwgMjQsIDEyLCAxNSwgMjMyLCAyMywgMTIsIDE1LCAyMzIsIAotICAgIDIyLCAxMiwgMTUsIDIzMiwgMjEsIDEyLCAxNSwgMjMyLCAyMCwgMTIsIDE1LCAyMzIsIDE5LCAxMiwgMTUsIDIzMiwgMTgsIAotICAgIDEyLCAxNSwgMjMyLCAxNywgMTIsIDE1LCAyMzIsIDE2LCAxMiwgMTUsIDIzMiwgMTUsIDEyLCAxNSwgMjMyLCAxNCwgMTIsIAotICAgIDE1LCAyMzIsIDEzLCAxMiwgMTUsIDIzMiwgMTIsIDEyLCAxNSwgMjMyLCAxMSwgMTIsIDE1LCAyMzIsIDEwLCAxMiwgMTUsIAotICAgIDIzMiwgOSwgMTIsIDE1LCAyMzIsIDgsIDEyLCAxNSwgMjMyLCA3LCAxMiwgMTUsIDIzMiwgNiwgMTIsIDE1LCAyMzIsIDUsIAotICAgIDEyLCAxNSwgMjMyLCA0LCAxMiwgMTUsIDIzMiwgMywgMTIsIDE1LCAyMzIsIDIsIDEyLCAxNSwgMjMyLCAxLCAxMiwgMTUsIAotICAgIDIzMiwgMCwgMTIsIDE1LCAyMzEsIDI1NSwgMTIsIDE1LCAyMzEsIDI1NCwgMTIsIDE1LCAyMzEsIDI1MywgMTIsIDE1LCAKLSAgICAyMzEsIDI1MiwgMTIsIDE1LCAyMzEsIDI1MSwgMTIsIDE1LCAyMzEsIDI1MCwgMTIsIDE1LCAyMzEsIDI0OSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0OCwgMTIsIDE1LCAyMzEsIDI0NywgMTIsIDE1LCAyMzEsIDI0NiwgMTIsIDE1LCAyMzEsIDI0NSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0NCwgMTIsIDE1LCAyMzEsIDI0MywgMTIsIDE1LCAyMzEsIDI0MiwgMTIsIDE1LCAyMzEsIDI0MSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0MCwgMTIsIDE1LCAyMzEsIDIzOSwgMTIsIDE1LCAyMzEsIDIzOCwgMTIsIDE1LCAyMzEsIDIzNywgMTIsIDE1LCAKLSAgICAyMzEsIDIzNiwgMTIsIDE1LCAyMzEsIDIzNSwgMTIsIDE1LCAyMzEsIDIzNCwgMTIsIDE1LCAyMzEsIDIzMywgMTIsIDE1LCAKLSAgICAyMzEsIDIzMiwgMTIsIDE1LCAyMzEsIDIzMSwgMTIsIDE1LCAyMzEsIDIzMCwgMTIsIDE1LCAyMzEsIDIyOSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyOCwgMTIsIDE1LCAyMzEsIDIyNywgMTIsIDE1LCAyMzEsIDIyNiwgMTIsIDE1LCAyMzEsIDIyNSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyNCwgMTIsIDE1LCAyMzEsIDIyMywgMTIsIDE1LCAyMzEsIDIyMiwgMTIsIDE1LCAyMzEsIDIyMSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyMCwgMTIsIDE1LCAyMzEsIDIxOSwgMTIsIDE1LCAyMzEsIDIxOCwgMTIsIDE1LCAyMzEsIDIxNywgMTIsIDE1LCAKLSAgICAyMzEsIDIxNiwgMTIsIDE1LCAyMzEsIDIxNSwgMTIsIDE1LCAyMzEsIDIxNCwgMTIsIDE1LCAyMzEsIDIxMywgMTIsIDE1LCAKLSAgICAyMzEsIDIxMiwgMTIsIDE1LCAyMzEsIDIxMSwgMTIsIDE1LCAyMzEsIDIxMCwgMTIsIDE1LCAyMzEsIDIwOSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwOCwgMTIsIDE1LCAyMzEsIDIwNywgMTIsIDE1LCAyMzEsIDIwNiwgMTIsIDE1LCAyMzEsIDIwNSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwNCwgMTIsIDE1LCAyMzEsIDIwMywgMTIsIDE1LCAyMzEsIDIwMiwgMTIsIDE1LCAyMzEsIDIwMSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwMCwgMTIsIDE1LCAyMzEsIDE5OSwgMTIsIDE1LCAyMzEsIDE5OCwgMTIsIDE1LCAyMzEsIDE5NywgMTIsIDE1LCAKLSAgICAyMzEsIDE5NiwgMTIsIDE1LCAyMzEsIDE5NSwgMTIsIDE1LCAyMzEsIDE5NCwgMTIsIDE1LCAyMzEsIDE5MywgMTIsIDE1LCAKLSAgICAyMzEsIDE5MiwgMTIsIDE1LCAyMzEsIDE5MSwgMTIsIDE1LCAyMzEsIDE5MCwgMTIsIDE1LCAyMzEsIDE4OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4OCwgMTIsIDE1LCAyMzEsIDE4NywgMTIsIDE1LCAyMzEsIDE4NiwgMTIsIDE1LCAyMzEsIDE4NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4NCwgMTIsIDE1LCAyMzEsIDE4MywgMTIsIDE1LCAyMzEsIDE4MiwgMTIsIDE1LCAyMzEsIDE4MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4MCwgMTIsIDE1LCAyMzEsIDE3OSwgMTIsIDE1LCAyMzEsIDE3OCwgMTIsIDE1LCAyMzEsIDE3NywgMTIsIDE1LCAKLSAgICAyMzEsIDE3NiwgMTIsIDE1LCAyMzEsIDE3NSwgMTIsIDE1LCAyMzEsIDE3NCwgMTIsIDE1LCAyMzEsIDE3MywgMTIsIDE1LCAKLSAgICAyMzEsIDE3MiwgMTIsIDE1LCAyMzEsIDE3MSwgMTIsIDE1LCAyMzEsIDE3MCwgMTIsIDE1LCAyMzEsIDE2OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2OCwgMTIsIDE1LCAyMzEsIDE2NywgMTIsIDE1LCAyMzEsIDE2NiwgMTIsIDE1LCAyMzEsIDE2NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2NCwgMTIsIDE1LCAyMzEsIDE2MywgMTIsIDE1LCAyMzEsIDE2MiwgMTIsIDE1LCAyMzEsIDE2MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2MCwgMTIsIDE1LCAyMzEsIDE1OSwgMTIsIDE1LCAyMzEsIDE1OCwgMTIsIDE1LCAyMzEsIDE1NywgMTIsIDE1LCAKLSAgICAyMzEsIDE1NiwgMTIsIDE1LCAyMzEsIDE1NSwgMTIsIDE1LCAyMzEsIDE1NCwgMTIsIDE1LCAyMzEsIDE1MywgMTIsIDE1LCAKLSAgICAyMzEsIDE1MiwgMTIsIDE1LCAyMzEsIDE1MSwgMTIsIDE1LCAyMzEsIDE1MCwgMTIsIDE1LCAyMzEsIDE0OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0OCwgMTIsIDE1LCAyMzEsIDE0NywgMTIsIDE1LCAyMzEsIDE0NiwgMTIsIDE1LCAyMzEsIDE0NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0NCwgMTIsIDE1LCAyMzEsIDE0MywgMTIsIDE1LCAyMzEsIDE0MiwgMTIsIDE1LCAyMzEsIDE0MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0MCwgMTIsIDE1LCAyMzEsIDEzOSwgMTIsIDE1LCAyMzEsIDEzOCwgMTIsIDE1LCAyMzEsIDEzNywgMTIsIDE1LCAKLSAgICAyMzEsIDEzNiwgMTIsIDE1LCAyMzEsIDEzNSwgMTIsIDE1LCAyMzEsIDEzNCwgMTIsIDE1LCAyMzEsIDEzMywgMTIsIDE1LCAKLSAgICAyMzEsIDEzMiwgMTIsIDE1LCAyMzEsIDEzMSwgMTIsIDE1LCAyMzEsIDEzMCwgMTIsIDE1LCAyMzEsIDEyOSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyOCwgMTIsIDE1LCAyMzEsIDEyNywgMTIsIDE1LCAyMzEsIDEyNiwgMTIsIDE1LCAyMzEsIDEyNSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyNCwgMTIsIDE1LCAyMzEsIDEyMywgMTIsIDE1LCAyMzEsIDEyMiwgMTIsIDE1LCAyMzEsIDEyMSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyMCwgMTIsIDE1LCAyMzEsIDExOSwgMTIsIDE1LCAyMzEsIDExOCwgMTIsIDE1LCAyMzEsIDExNywgMTIsIDE1LCAKLSAgICAyMzEsIDExNiwgMTIsIDE1LCAyMzEsIDExNSwgOCwgNSwgMzIsIDI0MCwgMzAsIDgsIDUsIDMyLCAyNDAsIDI2LCA4LCA1LCAKLSAgICAzMiwgMjM5LCAyMjgsIDgsIDUsIDMyLCAyNDAsIDI5LCA4LCA1LCAzMiwgMjQwLCAyOCwgOCwgNSwgMzIsIDE2MywgMjE1LCAKLSAgICA5NCwgMjEwLCA2OSwgOCwgNSwgMzIsIDIxMSwgMTA4LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjIxLCAxNTIsIDE3OCwgNSwgCi0gICAgMzIsIDIyNCwgMjQxLCAyNDEsIDE2NywgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIzMSwgMTksIDE3OCwgNSwgMzIsIDIwNSwgCi0gICAgMjM1LCAyMjEsIDE1MiwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIwMywgMTc0LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyMzYsIAotICAgIDIzMiwgMTEwLCAyMTgsIDYzLCAyMzAsIDgxLCAyMDYsIDY3LCAxMTAsIDMyLCAyMDMsIDksIDIwMiwgMjM3LCAyMDIsIDIzNywgCi0gICAgMjE5LCA1NCwgMTEwLCAxLCAyNTAsIDI1MCwgMjUwLCAzLCAxMTAsIDEsIDIwNCwgMjcsIDI1MSwgMzAsIDExMCwgMSwgMjA0LCAKLSAgICAyNywgMjQ0LCAxNzgsIDExMCwgMSwgMjA0LCAyNywgMjM3LCA2NywgMTEwLCAxLCAyMDQsIDI3LCAyMzAsIDIyLCAxMTAsIDEsIAotICAgIDIwNCwgMjcsIDIyOCwgMjAsIDExMCwgMSwgMjA0LCAyNywgNDYsIDIyNCwgMjQ3LCAxMTAsIDEsIDIwNCwgMjcsIDIxNiwgCi0gICAgOTEsIDExMCwgMSwgMjA0LCAyNywgMjA5LCAyMDMsIDExMCwgMSwgMjUwLCAyNTAsIDkxLCA1NCwgMTEwLCAxLCAyMTMsIDAsIAotICAgIDMsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgCi0gICAgMywgMjQ0LCAxOTgsIDI1LCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5OCwgMjUsIDIxMiwgCi0gICAgMTI0LCAyNDMsIDg1LCAxMTAsIDEsIDEzNywgMywgMjE5LCA1NCwgMTEwLCAxLCAxMzcsIDMsIDIxNywgMTE0LCAxMTAsIDEsIAotICAgIDEzNywgMywgMjI1LCAxMDUsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzOCwgNjgsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDI0NCwgMTc5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzcsIDY4LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAKLSAgICAyMDYsIDYwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDk2LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDEzMywgMywgCi0gICAgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDQ2LCAyMzAsIDIzLCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyMzAsIDIzLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjgsIDIxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAKLSAgICAyMjQsIDI0OCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjIxLCA0MSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE0LCAyNTAsIDMsIAotICAgIDI0NCwgMTk3LCAxMTAsIDEsIDQ2LCAyMTksIDM1LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTksIDM1LCAzLCAyNDQsIDE5NywgCi0gICAgMTEwLCAxLCAyMDgsIDE2LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTcsIDc1LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTYsIAotICAgIDkyLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMjA0LCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyMDYsIDYwLCAzLCAyMzYsIDEyOCwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjE2LCAyMDAsIDExMCwgMSwgCi0gICAgMjMwLCAyMywgMywgMjE2LCAyMDAsIDExMCwgMSwgMjE5LCAzNSwgMywgMjE2LCAyMDAsIDExMCwgMzIsIDEzNywgMjI4LCAKLSAgICAyMCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNjQsIDE4LCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA0NiwgMTgsIDEwLCAxLCAyNDgsIAotICAgIDE0OSwgNjQsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA4MSwgMTgsIDEwLCAxLCAKLSAgICAyNDgsIDE0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTcsIDY0LCAxOCwgMTAsIDEsIDIxOSwgMTcsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIxOSwgMTcsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTcsIDE3NCwgMTgsIDEwLCAxLCAyNDgsIDEzNywgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjQ4LCAxMzcsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA4MSwgMTgsIDEwLCAxLCAyNDgsIDEzNywgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIwNywgMjMyLCA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIwNywgMjMyLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDE2OCwgODEsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA4MSwgMTgsIDEwLCAxLCAyMDcsIAotICAgIDIzNCwgMTc0LCAxOCwgMTAsIDEsIDIwNiwgNDksIDY0LCAxOCwgMTAsIDEsIDIwNiwgNDksIDQ2LCAxOCwgMTAsIDEsIDIwNiwgCi0gICAgNDksIDgxLCAxOCwgMTAsIDEsIDIwNiwgNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE1LCA2NCwgMTgsIDEwLCAxLCAyMTksIAotICAgIDE1LCA0NiwgMTgsIDEwLCAxLCAyMTksIDE1LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE1LCAxNzQsIDE4LCAxMCwgMSwgMjQyLCAKLSAgICA2LCA2NCwgMTgsIDEwLCAxLCAyNDIsIDYsIDQ2LCAxOCwgMTAsIDEsIDI0MiwgNiwgODEsIDE4LCAxMCwgMSwgMjQyLCA2LCAKLSAgICAxNzQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDY0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA0NiwgMTgsIDEwLCAxLCAyMjAsIAotICAgIDI1NSwgODEsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE5MiwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjA5LCAxOTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE5MiwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIwOSwgMTkwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE5MCwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMTkwLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDQ2LCAxOCwgMTAsIDEsIDI0MiwgMzQsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDI0MiwgMzQsIDQ2LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMTU2LCA0NiwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA2NCwgMTgsIDEwLCAxLCAyMjksIAotICAgIDE5MCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTkwLCAxNzQsIDE4LCAxMCwgMSwgCi0gICAgMjM4LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjM4LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNjQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIzNywgMjE4LCA4MSwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgMTc0LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyMjIsIDEyNywgNDYsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDgxLCAxOCwgMTAsIDEsIDIyMiwgMTI3LCAKLSAgICAxNzQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDY0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAKLSAgICA4MSwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjM3LCA0NCwgMywgODksIDg3LCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMzcsIDQ0LCAyMzgsIDM3LCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM3LCA4MSwgMTgsIDEwLCAxLCAyMzcsIAotICAgIDQ0LCAyMzgsIDM3LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAotICAgIDI0MywgMTEwLCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAKLSAgICAxMTAsIDE3NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDY0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxNiwgNzAsIDU1LCAxMCwgMTYsIDcwLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgCi0gICAgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDU2LCAxMCwgMTYsIDEyNiwgMTg3LCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgNTYsIDEwLCAKLSAgICAxNiwgMTI2LCAxODcsIDIxOCwgNTksIDE4MywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDIxOCwgNTksIDE4MywgNTYsIDEwLCAKLSAgICAxNiwgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAxNiwgMjM5LCAxNDcsIDE4NywgNTYsIDEwLCAxNiwgNTIsIDgwLCAyNDgsIAotICAgIDIzMSwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU2LCAKLSAgICAxMCwgMTYsIDIxNSwgMjUyLCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NSwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTYsIDEwLCAKLSAgICAxLCAyMjIsIDIwNiwgNjQsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMjIsIDIwNiwgMTc0LCAxOCwgMTAsIDEsIDEwNiwgNjQsIDE4LCAxMCwgMSwgMTA2LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMjAsIDc0LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAxLCAyMDIsIDIxNCwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDU2LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDYsIDU2LCA0NiwgMTgsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDc0LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMjksIDc2LCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxNCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKLSAgICA3NiwgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgNjQsIDE4LCAxMCwgMSwgMTg4LCA0NiwgMTgsIDEwLCAxLCAxODgsIAotICAgIDgxLCAxOCwgMTAsIDEsIDE4OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgCi0gICAgMTMwLCA4MSwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIDEzMCwgMTc0LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAKLSAgICAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgMjA0LCA3MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMDYsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMDYsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgCi0gICAgMjE0LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIDgxLCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNzUsIAotICAgIDg5LCA2NCwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDgxLCAxOCwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxODQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAKLSAgICAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTUxLCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjI5LCAxNDEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNCwgMTYyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTQsIDE2MiwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIAotICAgIDI5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIwMiwgMTExLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIzOCwgMTE1LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCi0gICAgNDgsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKLSAgICA0OCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjQwLCA0OCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAKLSAgICAxMjAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTcsIDEyMCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAKLSAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAKLSAgICAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDgzLCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAKLSAgICAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAotICAgIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTAxLCAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxMjMsIAotICAgIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAxNzEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIyOCwgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIAotICAgIDE3MywgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgCi0gICAgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAKLSAgICAxMjgsIDg3LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjQ4LCAxMzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjQ4LCAxMzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAotICAgIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAKLSAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAKLSAgICAxMjAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjMwLCAyMywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgCi0gICAgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDgzLCAKLSAgICAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIAotICAgIDMsIDIxMCwgMTk5LCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjIxLCAxNzksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIAotICAgIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODMsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjQ0LCAyMDgsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDI0NCwgMjA4LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDIsIAotICAgIDExMSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKLSAgICAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDIxMCwgCi0gICAgMTk5LCAxMzcsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAKLSAgICAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgCi0gICAgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIzNywgNDQsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIAotICAgIDIxMywgODEsIDMsIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgCi0gICAgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCAKLSAgICA0MCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgCi0gICAgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIAotICAgIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIzNywgNDQsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDE3NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIwMiwgMTExLCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAxMzcsIDMsIDI0MCwgNzAsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAxMzcsIDMsIDI0MCwgNzAsIDY0LCAxOCwgMjE5LCAyMzEsIDQ5LCAyMTksIDc2LCAyMTksIDIzMSwgNTAsIDIxOSwgNzYsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCAzLCAKLSAgICAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgCi0gICAgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIAotICAgIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgCi0gICAgMTYyLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCi0gICAgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAKLSAgICAxNjIsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIAotICAgIDQwLCAzLCA4MywgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAKLSAgICAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAKLSAgICAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjUxLCA2MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAKLSAgICA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgNDYsIAotICAgIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgCi0gICAgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAKLSAgICAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDIyOSwgMTQxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODMsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCAxODQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgCi0gICAgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCAKLSAgICA0NCwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgCi0gICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAKLSAgICAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAKLSAgICAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIAotICAgIDE3MCwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDEzNywgMjI1LCAKLSAgICAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIAotICAgIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAKLSAgICAyMDgsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4MywgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMjgsIDI5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxODQsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgMTUxLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgCi0gICAgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAKLSAgICAxNzksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgCi0gICAgMjExLCA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTE2LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIDIxMSwgCi0gICAgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDEzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA0NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIyNCwgNTcsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDUsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDE3NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDI1MSwgMzMsIDY0LCAxOCwgMTAsIDMyLCAyMDQsIDkwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjE1LCAzLCAyNTEsIDMzLCAyMDQsIDg5LCAxMCwgMzIsIDIzMCwgMTcyLCAyMTYsIDU2LCA1NCwgMTAsIDMyLCAyNDgsIAotICAgIDUzLCAyNTAsIDE0MiwgMjUwLCAxNDMsIDU3LCAyMTQsIDE0OSwgNTcsIDIxNCwgMzgsIDU3LCAyMTMsIDIyNiwgNTcsIDIxMywgCi0gICAgMjE1LCA1NywgMjEzLCAyMDQsIDU3LCAyMTMsIDE5MywgNTcsIDIxMywgMTgyLCA1NywgMjEzLCAxNzEsIDU3LCAyMTMsIAotICAgIDE2MCwgNTcsIDIxNCwgMTQ4LCA1NywgMjE0LCAxMzcsIDU3LCAyMTQsIDEyNiwgNTcsIDIxNCwgMTE1LCA1NywgMjE0LCAKLSAgICAxMDQsIDU3LCAyMTQsIDkzLCA1NywgMjE0LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjMzLCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAyNDUsIDIzMywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDI0MiwgMjE3LCAyNDEsIDIzOSwgCi0gICAgMTU5LCAzNSwgODAsIDIxMywgMTQzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQwLCAyMTIsIDgyLCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjE3LCA0NywgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjEsIAotICAgIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIDIyNywgMTg1LCAyNDcsIDIyNSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMzksIDMyLCA0OSwgMjM3LCAxMzcsIDM5LCAKLSAgICAzMiwgNTAsIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA0OSwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDUwLCAKLSAgICAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA0OSwgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNTAsIDIzNywgMTM3LCAzOSwgCi0gICAgMjQ1LCAyMDYsIDIyNSwgMTcwLCAzOSwgMzIsIDQ5LCAxNjIsIDU2LCAzOSwgMzIsIDUwLCAxNjIsIDU2LCAzOSwgMjA4LCAKLSAgICAyMjgsIDQ5LCAxNjIsIDU2LCAzOSwgMjA4LCAyMjgsIDUwLCAxNjIsIDU2LCAzOSwgMjI1LCAxNzEsIDQ5LCAxNjIsIDU2LCAKLSAgICAzOSwgMjI1LCAxNzEsIDUwLCAxNjIsIDU2LCAzOSwgMjQ1LCAyMDYsIDIyNSwgMTcxLCA1NiwgMzksIDM2LCAyMDgsIDE5OCwgCi0gICAgNDksIDIzNywgMTM3LCAzOSwgMzYsIDIwOCwgMTk4LCA1MCwgMjM3LCAxMzcsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKLSAgICAxMjAsIDcwLCAyMjcsIDIzMiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MSwgMTA0LCAyNDQsIDE0NCwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCi0gICAgMTI0LCAyMjcsIDExNCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjE5LCA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyMTksIAotICAgIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCi0gICAgODAsIDUwLCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIAotICAgIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyMTcsIDI0MSwgCi0gICAgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIAotICAgIDYyLCAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIAotICAgIDM1LCA4MCwgNDksIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjUwLCAyMTgsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKLSAgICA4MCwgNTAsIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjEsIDI0NSwgMTY2LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIDI0NSwgMTY2LCAxNTUsIDIxMywgMTIxLCAyNDMsIDg1LCA2MSwgCi0gICAgMjEzLCAxMjEsIDI0MywgODUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTEsIDE1NSwgMjE3LCAyNDEsIAotICAgIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MSwgMTU1LCAyNDQsIDE0MywgMjE5LCAxOTgsIDI0NiwgMjE0LCAyMTksIDE5OCwgCi0gICAgMjA0LCA3MiwgMjE5LCAxOTgsIDUyLCAyMDQsIDcyLCAyMTksIDE5OCwgMjQ0LCAxNDMsIDEyNCwgMjI3LCAxMTQsIDI0NiwgCi0gICAgMjE0LCAxMjQsIDIyNywgMTE0LCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCA1LCAyNDUsIDIzMywgNSwgMTM5LCAyNDUsIAotICAgIDIzMywgNSwgMjM5LCAxMDIsIDIxMSwgNjEsIDUsIDIxMywgMTQzLCA1LCAyNDUsIDI0MiwgNSwgMjE3LCA0NywgODIsIDUsIAotICAgIDI0MCwgMjEyLCA4MiwgNSwgMjQxLCAxMDQsIDI0NCwgMTQ0LCA1LCA0OSwgMjE5LCA3NiwgNSwgNTAsIDIxOSwgNzYsIDUsIAotICAgIDQ5LCAyNDUsIDkzLCAxNTUsIDUsIDUwLCAyNDUsIDkzLCAxNTUsIDUsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCAKLSAgICA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgNDIsIDU0LCA1LCAyNTAsIDIzNSwgNSwgMjUwLCA1OSwgNSwgOTEsIAotICAgIDU0LCA1LCAyMzUsIDIxOSwgNSwgMjI3LCAxNzksIDU0LCA1LCAyMzcsIDI0NywgNTQsIDUsIDI0MSwgMzUsIDU0LCA1LCAKLSAgICAyMTYsIDc0LCAyMTIsIDAsIDUsIDI0MywgOTcsIDU0LCA1LCAyMTgsIDI0NiwgNTQsIDUsIDI0NSwgMjMxLCAyNTAsIDQ5LCAKLSAgICAxMCwgMjQwLCA3MCwgNjQsIDE4LCAxMCwgMjA5LCAyMTAsIDMsIDI0MCwgNzAsIDU1LCAxMCwgMjQ0LCAxNzEsIDY0LCAxOCwgCi0gICAgMTAsIDIwOSwgMjQ5LCAyMzksIDEzNywgMTAsIDIyOSwgMjI4LCA2NCwgMTgsIDEwLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAKLSAgICAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMjQ0LCAxNzMsIDY0LCAxOCwgMTAsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgMjI5LCAKLSAgICAyMzAsIDY0LCAxOCwgMTAsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMjEzLCA4MSwgNjQsIDE4LCAxMCwgMjEzLCA4MSwgCi0gICAgMTc0LCAxOCwgMTAsIDIxMCwgMjIzLCA2NCwgMTgsIDEwLCAyMTAsIDIyMywgMTc0LCAxOCwgMTAsIDEsIDIzNywgMTI4LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIAotICAgIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAxLCAxMzcsIAotICAgIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA4NywgODEsIDE4LCAxMCwgMSwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMTc0LCAxOCwgMTAsIDEsIDEzNywgNjQsIDE4LCAxMCwgMSwgMTM3LCA0NiwgMTgsIDEwLCAKLSAgICAxLCAyNDgsIDEzOSwgNjQsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA4MSwgMTgsIAotICAgIDEwLCAxLCAyNDgsIDEzOSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCA2NCwgMTgsIDEwLCAxLCAyMDksIAotICAgIDE3MCwgMjI1LCA5OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMDksIDE3MCwgODEsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDg5LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDg5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDg5LCA4MSwgMTgsIDEwLCAxLCAyMDksIDg5LCAxNzQsIAotICAgIDE4LCAxMCwgMSwgMTg0LCA2NCwgMTgsIDEwLCAxLCAxODQsIDQ2LCAxOCwgMTAsIDEsIDE4NCwgODEsIDE4LCAxMCwgMSwgCi0gICAgMTg0LCAxNzQsIDE4LCAxMCwgMSwgMTUxLCA2NCwgMTgsIDEwLCAxLCAxNTEsIDQ2LCAxOCwgMTAsIDEsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMSwgMTUxLCAxNzQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCA2NCwgMTgsIDEwLCAxLCAyMDksIDEwMSwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAxLCAyMDIsIAotICAgIDEwOCwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMTQsIDE2MiwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDgxLCAxOCwgMTAsIDEsIDIxNCwgMTYyLCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjEzLCA0MCwgNjQsIDE4LCAxMCwgMSwgMjEzLCA0MCwgNDYsIDE4LCAxMCwgMSwgMjEzLCA0MCwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjEzLCA0MCwgMTc0LCAxOCwgMTAsIDEsIDIxNSwgMjksIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjksIDQ2LCAxOCwgMTAsIAotICAgIDEsIDIxNSwgMjksIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjksIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjQ0LCAyMDgsIDQ2LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA4MSwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgMTc0LCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMDksIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDgxLCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMDIsIDExMSwgODEsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDE3NCwgMTgsIDEwLCAxLCAyNTEsIAotICAgIDYwLCA2NCwgMTgsIDEwLCAxLCAyNTEsIDYwLCA0NiwgMTgsIDEwLCAxLCAyNTEsIDYwLCA4MSwgMTgsIDEwLCAxLCAyNTEsIAotICAgIDYwLCAxNzQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDY0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMzgsIDExNSwgODEsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDAsIDQ4LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyNDAsIDQ4LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDQ4LCA4MSwgMTgsIDEwLCAxLCAyNDAsIDQ4LCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjE3LCAxMjAsIDY0LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA0NiwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjE3LCAxMjAsIDE3NCwgMTgsIDEwLCAxLCAyMzAsIDIzLCA2NCwgMTgsIDEwLCAxLCAyMzAsIDIzLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMzAsIDIzLCA4MSwgMTgsIDEwLCAxLCAyMzAsIDIzLCAxNzQsIDE4LCAxMCwgMSwgMjI4LCAyOSwgNjQsIDE4LCAKLSAgICAxMCwgMSwgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMSwgMjI4LCAyOSwgODEsIDE4LCAxMCwgMSwgMjI4LCAyOSwgMTc0LCAxOCwgCi0gICAgMTAsIDEsIDgzLCA2NCwgMTgsIDEwLCAxLCA4MywgNDYsIDE4LCAxMCwgMSwgODMsIDgxLCAxOCwgMTAsIDEsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMSwgMjIxLCAxNzksIDY0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgODEsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMSwgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMSwgODksIDY0LCAxOCwgMTAsIDEsIDg5LCA0NiwgMTgsIDEwLCAxLCA4OSwgODEsIAotICAgIDE4LCAxMCwgMSwgODksIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDEzNywgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCA0NiwgMTgsIDIwMiwgODUsIDIwNCwgMjQsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMTU0LCAyNDAsIDIxMiwgODIsIDE1NCwgMjE3LCAzMSwgODIsIDE1NCwgNDIsIDU0LCAxNTQsIDI0MywgOTcsIDU0LCAKLSAgICAxNTQsIDIxOCwgMjQ2LCA1NCwgMTU0LCAyNTAsIDIzNSwgMTU0LCAyNTAsIDE2MCwgMTU0LCA0OSwgMjE5LCA3NiwgMTU0LCAKLSAgICA1MCwgMjE5LCA3NiwgMTU0LCAyNTAsIDU5LCAxNTQsIDkxLCA1NCwgMTU0LCAyNDUsIDIzMywgMTU0LCAyMzUsIDIxOSwgCi0gICAgMTU0LCAyMzksIDEwMiwgMjExLCA2MSwgMTU0LCAyMTIsIDAsIDE1NCwgMTcsIDIwMiwgODQsIDE1NCwgMTcsIDEwNSwgMTU0LCAKLSAgICAxNywgMTA4LCAxNTQsIDE3LCAxNDcsIDE1NCwgMTcsIDE0OSwgMTU0LCAxNywgMTcwLCAxNTQsIDE3LCAxOTUsIDE1NCwgMTcsIAotICAgIDIxMywgMTExLCAxNTQsIDE3LCAxOTksIDE1NCwgMTcsIDIyMiwgNjMsIDE1NCwgMjQ1LCAyNDIsIDE1NCwgMjEzLCAxNDMsIAotICAgIDE1NCwgMjI3LCAxNzksIDU0LCAxNTQsIDI0MSwgMzUsIDU0LCAxNTQsIDIzNywgMjQ3LCA1NCwgMTU0LCAyMTcsIDQ3LCA4MiwgCi0gICAgMTU0LCAyNDUsIDIzMSwgMjUwLCA0OSwgMTU0LCA4LCA2LCAxLCA2MywgMTU0LCA4LCA2LCAxLCAyNDksIDI1NSwgMTU0LCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNSwgMTU0LCA4LCA2LCAxLCAyNDUsIDUxLCAxNTQsIDgsIDYsIDEsIDc0LCAxNTQsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc0LCAxNTQsIDgsIDYsIDEsIDIzOSwgNzUsIDE1NCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE1NCwgOCwgNiwgMSwgCi0gICAgNzUsIDE1NCwgOCwgNiwgMSwgMjMwLCAxODQsIDE1NCwgOCwgNiwgMSwgMjMwLCA1NCwgMTU0LCA4LCA2LCAxLCAxNTksIAotICAgIDE1NCwgOCwgNiwgMSwgMjI2LCAxODUsIDE1NCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE1NCwgOCwgNiwgMSwgNzgsIDE1NCwgOCwgCi0gICAgNiwgMSwgMjE5LCAxODQsIDE1NCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE1NCwgOCwgNiwgMSwgMTQ2LCAxNTQsIDgsIDYsIDEsIAotICAgIDE5NCwgMTU0LCA4LCA2LCAxLCAyMTAsIDY5LCAxNTQsIDgsIDYsIDEsIDY4LCAxNTQsIDgsIDYsIDEsIDIwNiwgMTY0LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNTQsIDgsIDYsIDEsIDIwMywgMTk2LCAxNTQsIDgsIDYsIDEsIDIwMywgMTI0LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNTQsIDQ5LCA1MSwgMTU1LCAxNTQsIDIxNiwgNzQsIDIxMiwgMCwgMTU0LCA1MCwgCi0gICAgNTEsIDE1NSwgMTU0LCAyNDYsIDUzLCAyNTEsIDEzOCwgMTU0LCAxMjQsIDIyNywgMTE0LCAxNTQsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgMTU0LCA4LCA1LCAxLCA2MywgMTU0LCA4LCA1LCAxLCAyNDksIDI1NSwgMTU0LCA4LCA1LCAxLCAyNDcsIDEyNSwgCi0gICAgMTU0LCA4LCA1LCAxLCAyNDUsIDUxLCAxNTQsIDgsIDUsIDEsIDc0LCAxNTQsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNTQsIDgsIAotICAgIDUsIDEsIDIzOSwgNzUsIDE1NCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE1NCwgOCwgNSwgMSwgNzUsIDE1NCwgOCwgNSwgMSwgCi0gICAgMjMwLCAxODQsIDE1NCwgOCwgNSwgMSwgMjMwLCA1NCwgMTU0LCA4LCA1LCAxLCAxNTksIDE1NCwgOCwgNSwgMSwgMjI2LCAKLSAgICAxODUsIDE1NCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE1NCwgOCwgNSwgMSwgNzgsIDE1NCwgOCwgNSwgMSwgMjE5LCAxODQsIAotICAgIDE1NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE1NCwgOCwgNSwgMSwgMTQ2LCAxNTQsIDgsIDUsIDEsIDE5NCwgMTU0LCA4LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAxNTQsIDgsIDUsIDEsIDY4LCAxNTQsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNTQsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ0LCAxNTQsIDgsIDUsIDEsIDIwMywgMTk2LCAxNTQsIDgsIDUsIDEsIDIwMywgMTI0LCAxNTQsIDgsIDUsIDEsIDIwMiwgCi0gICAgMTU5LCAxNTQsIDQ5LCAyNDUsIDkzLCAxNTUsIDE1NCwgODAsIDIyNywgMTE0LCAxNTQsIDUwLCAyNDUsIDkzLCAxNTUsIAotICAgIDE1NCwgMjA4LCAyMjcsIDE1NCwgNDksIDYxLCAyMTksIDc2LCAxNTQsIDUwLCA2MSwgMjE5LCA3NiwgMTI3LCAxMzksIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCAxMjcsIDQ5LCAyNDUsIDE2NiwgMTU1LCAxMjcsIDUwLCAyNDUsIDE2NiwgMTU1LCAxMjcsIDEzOSwgCi0gICAgMjQ1LCAyMzMsIDEyNywgNjcsIDEwMSwgMjQzLCA4NSwgMTI3LCA2NywgMSwgMjA0LCAwLCAxMjcsIDY3LCAxLCA1LCA2MywgCi0gICAgMTI3LCA2NywgMSwgNSwgNzUsIDEyNywgNjcsIDEsIDUsIDY4LCAxMjcsIDY3LCAxLCA1LCA3NCwgMTI3LCA2NywgMSwgNSwgCi0gICAgNzgsIDEyNywgNjcsIDEsIDUsIDE5OCwgMTI3LCA2NywgMSwgNSwgMjAyLCAyMTMsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjQ3LCAKLSAgICAxMjcsIDY3LCAxLCA1LCAyMDcsIDIwMywgMTI3LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgMjQxLCA4MiwgMTI3LCA2NywgCi0gICAgMSwgNjMsIDEyNywgNjcsIDEsIDc1LCAxMjcsIDY3LCAxLCA2OCwgMTI3LCA2NywgMSwgNzQsIDEyNywgNjcsIDEsIDc4LCAKLSAgICAxMjcsIDY3LCAxLCAxNzMsIDEyNywgNjcsIDEsIDIyOSwgMTAwLCAxMjcsIDY3LCAxLCAyMjgsIDIwOSwgMTI3LCA2NywgMSwgCi0gICAgMjI5LCAyMDEsIDEyNywgNjcsIDEsIDIyOSwgMjYsIDEyNywgNjcsIDEsIDIxNSwgMzYsIDEyNywgNjcsIDEsIDIxMiwgMTYyLCAKLSAgICAxMjcsIDY3LCAxLCAyMTEsIDEwLCAxMjcsIDY3LCAxLCAyMTQsIDE3NywgMTI3LCA2NywgMSwgMjEyLCAxMywgMTI3LCA2NywgCi0gICAgMSwgMjEwLCAyMiwgMTI3LCA2NywgMSwgMjA5LCAyLCAxMjcsIDY3LCAxLCAyMDcsIDIwMywgMTI3LCA2NywgMSwgMjA5LCAKLSAgICAxODcsIDEyNywgNjcsIDEsIDEzNSwgMTI3LCA2NywgMSwgMjAxLCAyMDEsIDEyNywgNjcsIDEsIDIyMiwgMTAwLCAxMjcsIAotICAgIDY3LCAxLCAyMjEsIDg0LCAxMjcsIDY3LCAxLCAyMjIsIDI0MCwgMTI3LCA2NywgMSwgMjIxLCAxOTEsIDEyNywgNjcsIDEsIAotICAgIDE1MiwgMTI3LCA2NywgMSwgMjM3LCAzLCAxMjcsIDY3LCAxLCAyMzYsIDI2LCAxMjcsIDY3LCAxLCAyMzcsIDY3LCAxMjcsIAotICAgIDY3LCAxLCAyMzYsIDEzNiwgMTI3LCA2NywgMSwgMTkyLCAxMjcsIDY3LCAxLCAyMjQsIDE1NSwgMTI3LCA2NywgMSwgMjIzLCAKLSAgICAyNDYsIDEyNywgNjcsIDEsIDIyNSwgMjAsIDEyNywgNjcsIDEsIDIyNCwgODIsIDEyNywgNjcsIDEsIDE5OCwgMTI3LCA2NywgCi0gICAgMSwgMjAyLCAyMTMsIDEyNywgNjcsIDEsIDIwMiwgMjQ3LCAxMjcsIDY3LCAxLCAyMTYsIDIyMCwgMTI3LCA2NywgMSwgMjE2LCAKLSAgICA1NywgMTI3LCA2NywgMSwgMjE1LCAxNDUsIDEyNywgNjcsIDEsIDIxNiwgMTU4LCAxMjcsIDY3LCAxLCAyMTUsIDIyNywgCi0gICAgMTI3LCA2NywgMSwgMjA0LCAxMTEsIDEyNywgNjcsIDEsIDIyMywgMTYzLCAxMjcsIDY3LCAyMDUsIDE4NiwgMjExLCAyNDEsIAotICAgIDgyLCAxMjcsIDY3LCAyMTMsIDE0OCwgMjExLCAyNDEsIDgyLCAxMjcsIDI4LCAyNDAsIDcsIDEyNywgMjgsIDEsIDIyOSwgCi0gICAgNTksIDEyNywgMjgsIDEsIDIxMSwgMTU2LCAxMjcsIDI4LCAxLCAyMjksIDUyLCAxMjcsIDI4LCAxLCAyMjIsIDkzLCAxMjcsIAotICAgIDI4LCAxLCAyMjIsIDkxLCAxMjcsIDI4LCAxLCAyMjIsIDkwLCAxMjcsIDI4LCAxLCAyMDgsIDI0MCwgMTI3LCAyOCwgMSwgCi0gICAgMjExLCAxNDUsIDEyNywgMjgsIDEsIDIxNiwgNDcsIDEyNywgMjgsIDEsIDIxNiwgNDIsIDEyNywgMjgsIDEsIDIxNiwgMzksIAotICAgIDEyNywgMjgsIDEsIDIxNiwgMzIsIDEyNywgMjgsIDEsIDIxNiwgMjcsIDEyNywgMjgsIDEsIDIxNiwgMjIsIDEyNywgMjgsIAotICAgIDEsIDIxNiwgMzMsIDEyNywgMjgsIDEsIDIxNiwgNDUsIDEyNywgMjgsIDEsIDIyNCwgMTQxLCAxMjcsIDI4LCAxLCAyMTgsIAotICAgIDE1MywgMTI3LCAyOCwgMSwgMjExLCAxNTMsIDEyNywgMjgsIDEsIDIxOCwgMTQyLCAxMjcsIDI4LCAxLCAyMTIsIDExMSwgCi0gICAgMTI3LCAyOCwgMSwgMjExLCAxNTAsIDEyNywgMjgsIDEsIDIzMSwgMTA2LCAxMjcsIDI4LCAxLCAyNDYsIDc0LCAxMjcsIDI4LCAKLSAgICAxLCAyMTEsIDE2MCwgMTI3LCAyOCwgMSwgMjQ2LCAxMzgsIDEyNywgMjgsIDEsIDIyOSwgMTIwLCAxMjcsIDI4LCAxLCAyMDksIAotICAgIDY2LCAxMjcsIDI4LCAxLCAyMTgsIDE5MCwgMTI3LCAyOCwgMSwgMjM2LCAyNTEsIDEyNywgMjgsIDEsIDYzLCAxMjcsIDI4LCAKLSAgICAxLCAyNTEsIDEwOSwgMTI3LCAyOCwgMSwgMTk4LCAxMjcsIDI4LCAxLCAyMDMsIDk5LCAxMjcsIDI4LCAxLCAyNDEsIDU1LCAKLSAgICAxMjcsIDI4LCAxLCA3NCwgMTI3LCAyOCwgMSwgMjAzLCAzOSwgMTI3LCAyOCwgMSwgMjAzLCA1MiwgMTI3LCAyOCwgMSwgNzgsIAotICAgIDEyNywgMjgsIDEsIDIwNCwgMTExLCAxMjcsIDI4LCAxLCAyMDQsIDEwNywgMTI3LCAyOCwgMSwgMjIwLCA3MywgMTI3LCAyOCwgCi0gICAgMSwgMjAyLCAyNDcsIDEyNywgMjgsIDEsIDY4LCAxMjcsIDI4LCAxLCAyMDQsIDQ4LCAxMjcsIDI4LCAxLCAyMDQsIDYyLCAKLSAgICAxMjcsIDI4LCAxLCAyMDQsIDMwLCAxMjcsIDI4LCAxLCAyMDIsIDIxMywgMTI3LCAyOCwgMSwgMjQwLCAyMzgsIDEyNywgMjgsIAotICAgIDEsIDIwMywgMTEsIDEyNywgMjgsIDEsIDc1LCAxNTQsIDI0NiwgMjIwLCA1NCwgMTU0LCAyMTgsIDIwLCA1NCwgMTU0LCAKLSAgICAyMjEsIDE2NiwgNTQsIDE1NCwgMjI1LCAxNzAsIDE1NCwgMjQ3LCAyMDMsIDE0MiwgMTU0LCAyMDMsIDQzLCA1NCwgMTU0LCAKLSAgICAyMDMsIDI0NiwgNTQsIDEyNywgMjM5LCAxNTYsIDE1NywgMjA2LCAzOCwgMTI3LCA5NiwgNDcsIDEyNywgMTc3LCA0NywgCi0gICAgMTI3LCA4NiwgNDcsIDEyNywgMTgzLCA0NywgMTI3LCA2MiwgMjExLCAxNzcsIDEyNywgNjEsIDI0NiwgNjEsIDIzMCwgMjUxLCAKLSAgICAyNTAsIDIwNSwgMjUwLCAyMjgsIDIzMCwgMjUxLCAyNTAsIDIwNSwgMjEzLCAxMzAsIDIzMCwgMjUxLCAyNTAsIDIwNSwgCi0gICAgMjA5LCAxMzgsIDIyMCwgOTAsIDIxNiwgOTYsIDI0NiwgMTgyLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjksIDY2LCA0LCAyNDksIAotICAgIDIzOSwgNjMsIDI5LCA2NiwgNCwgMjQ5LCAyMDgsIDc0LCAyOSwgNjYsIDQsIDI0OSwgMjE3LCA3NSwgMjksIDY2LCA0LCAKLSAgICAyNDksIDE4NSwgNzgsIDI5LCA2NiwgNCwgMjQ5LCAyMzUsIDY4LCAyOSwgNjYsIDQsIDI0OSwgMjU0LCAyNDQsIDIxMiwgMjksIAotICAgIDY2LCA0LCAyNDksIDIwMSwgMjQ0LCA3NSwgMjksIDY2LCA0LCAyNDksIDI0MSwgMjQzLCAyMzMsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzEsIDI0MywgMTEzLCAyOSwgNjYsIDQsIDI0OSwgMTk1LCAyNDIsIDQyLCAyOSwgNjYsIDQsIDI0OSwgMTg5LCAyMzAsIAotICAgIDE4MSwgMjksIDY2LCA0LCAyNDksIDIwMCwgMjMwLCAxNjEsIDI5LCA2NiwgNCwgMjQ5LCAyMTAsIDIzMCwgMTAxLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMTgxLCAyMzAsIDgyLCAyOSwgNjYsIDQsIDI0OSwgMTY5LCAxNzMsIDI5LCA2NiwgNCwgMjQ5LCAyMDIsIAotICAgIDIyOSwgMjAxLCAyOSwgNjYsIDQsIDI0OSwgMTc5LCAyMjksIDEwMCwgMjksIDY2LCA0LCAyNDksIDE3NiwgMjI5LCAyNiwgCi0gICAgMjksIDY2LCA0LCAyNDksIDE2NSwgMjI4LCAyMDksIDI5LCA2NiwgNCwgMjQ5LCAxNjYsIDE5MiwgMjksIDY2LCA0LCAyNDksIAotICAgIDIzMiwgMjI1LCAyMCwgMjksIDY2LCA0LCAyNDksIDE3MywgMjI0LCAxNTUsIDI5LCA2NiwgNCwgMjQ5LCAyMzAsIDIyNCwgCi0gICAgODIsIDI5LCA2NiwgNCwgMjQ5LCAyMjIsIDIyMywgMjQ2LCAyOSwgNjYsIDQsIDI0OSwgMjQzLCAyMDEsIDIwMSwgMjksIDY2LCAKLSAgICA0LCAyNDksIDIyMSwgMjIyLCAyNDAsIDI5LCA2NiwgNCwgMjQ5LCAyMTUsIDIyMiwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTk0LCAyMjEsIDE5MSwgMjksIDY2LCA0LCAyNDksIDE5MSwgMjIxLCA4NCwgMjksIDY2LCA0LCAyNDksIDI1MCwgMTg1LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMTc0LCAyMTksIDM0LCAyOSwgNjYsIDQsIDI0OSwgMjA3LCAyMTgsIDE2NywgMjksIDY2LCA0LCAKLSAgICAyNDksIDIzNCwgMjE4LCA2OSwgMjksIDY2LCA0LCAyNDksIDE5NiwgMjE3LCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAyMjksIAotICAgIDIxNywgMTI2LCAyOSwgNjYsIDQsIDI0OSwgMTY4LCAyMTcsIDEwNiwgMjksIDY2LCA0LCAyNDksIDIyNCwgMjE3LCA4OCwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIxMywgMjE3LCA3NywgMjksIDY2LCA0LCAyNDksIDE4NiwgMjE2LCAyMjAsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMTgsIDIxNiwgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTkzLCAyMTYsIDU3LCAyOSwgNjYsIDQsIDI0OSwgMjUyLCAKLSAgICAyMTUsIDIyNywgMjksIDY2LCA0LCAyNDksIDIxOSwgMjE1LCAxNDUsIDI5LCA2NiwgNCwgMjQ5LCAyMTQsIDIxNSwgMzYsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMzcsIDIxNCwgMTc3LCAyOSwgNjYsIDQsIDI0OSwgMjA1LCAyMTIsIDE2MiwgMjksIDY2LCA0LCAKLSAgICAyNDksIDIzMywgMjEyLCAxMywgMjksIDY2LCA0LCAyNDksIDE4OCwgMjExLCAxMCwgMjksIDY2LCA0LCAyNDksIDE4NywgCi0gICAgMjEwLCAyMiwgMjksIDY2LCA0LCAyNDksIDI0OCwgMjA5LCAxODcsIDI5LCA2NiwgNCwgMjQ5LCAyMDksIDIwOSwgMiwgMjksIAotICAgIDY2LCA0LCAyNDksIDI0NiwgMTM1LCAyOSwgNjYsIDQsIDI0OSwgMTc3LCAyMDcsIDIwMywgMjksIDY2LCA0LCAyNDksIDE5MiwgCi0gICAgMjA0LCAxMTEsIDI5LCA2NiwgNCwgMjQ5LCAxNzEsIDIwNCwgNjIsIDI5LCA2NiwgNCwgMjQ5LCAyMDYsIDIwNCwgMzAsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyMDQsIDIwNCwgMCwgMjksIDY2LCA0LCAyNDksIDIyOCwgMjAyLCAxMTYsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxNzIsIDIwMiwgOTIsIDI5LCA2NiwgNCwgMjQ5LCAyMjUsIDIwMiwgMTcsIDI5LCA2NiwgNCwgMjQ5LCAyMjAsIDI1NCwgMzQsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMDMsIDI1MywgMTc4LCAyOSwgNjYsIDQsIDI0OSwgMTYyLCAyNTAsIDM0LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMTc1LCAyNDIsIDksIDI5LCA2NiwgNCwgMjQ5LCAxNTgsIDI0MiwgOCwgMjksIDY2LCA0LCAyNDksIDE5OCwgMjIxLCAKLSAgICAyMCwgMjksIDY2LCA0LCAyNDksIDIxNiwgMjE3LCAxODksIDI5LCA2NiwgNCwgMjQ5LCAxODQsIDIxNywgMTkzLCAyOSwgNjYsIAotICAgIDQsIDI0OSwgMTcwLCAyMTYsIDIxOCwgMjksIDY2LCA0LCAyNDksIDIxMiwgMjE2LCAyMTcsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxNzgsIDIxNSwgMjI2LCAyOSwgNjYsIDQsIDI0OSwgMTgwLCAyMTAsIDE5LCAyOSwgNjYsIDQsIDI0OSwgMTYwLCAyMDcsIAotICAgIDE1OCwgMjksIDY2LCA0LCAyNDksIDE1NywgMTA4LCAyOSwgNjYsIDE2LCAyNDksIDIyNywgMjksIDY2LCAxNiwgMjQ5LCAKLSAgICAyMjYsIDI5LCA2NiwgMTYsIDI0OSwgMjIzLCAyOSwgNjYsIDE2LCAyNDksIDIxMSwgMjksIDY2LCAxNiwgMjQ5LCAxOTksIAotICAgIDI5LCA2NiwgMTYsIDI0OSwgMTk3LCAyOSwgNjYsIDE2LCAyNDksIDE5MCwgMjksIDY2LCAxNiwgMjQ5LCAxODMsIDI5LCA2NiwgCi0gICAgMTYsIDI0OSwgMTgyLCAyOSwgNjYsIDE2LCAyNDksIDE2NywgMjksIDY2LCAxNiwgMjQ5LCAxNjQsIDI5LCA2NiwgMTYsIAotICAgIDI0OSwgMTYzLCAyOSwgNjYsIDE2LCAyNDksIDE2MSwgMjksIDY2LCAxNiwgMjQ5LCAxNTksIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDE1NiwgMjI1LCAxMjIsIDI5LCA2NiwgMTMzLCAyNDksIDE1NSwgMjAzLCAyNTAsIDI5LCA2NiwgMTMzLCAyNDksIDE1NCwgCi0gICAgMjQ0LCA1OCwgMjksIDY2LCAxMzMsIDI0OSwgMTUzLCAyNDEsIDMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTIsIDIyNSwgOTMsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDE1MSwgMjExLCAxMDEsIDI5LCA2NiwgMTMzLCAyNDksIDE1MCwgMjQwLCAyMTksIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDE0OSwgMjE2LCAxODQsIDI5LCA2NiwgMTMzLCAyNDksIDE0OCwgMjEzLCA0MiwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTQ3LCAyMzcsIDY2LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDYsIDIxMSwgMjM1LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxNDUsIDI0OCwgMjEsIDI5LCA2NiwgMTMzLCAyNDksIDE0NCwgMjQ1LCAxNDksIDI5LCA2NiwgMTMzLCAyNDksIDE0MywgCi0gICAgMjQ3LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDE0MiwgMjA0LCAzOCwgMjksIDY2LCAxMzMsIDI0OSwgMTQxLCAyNDgsIAotICAgIDIyNywgMjksIDY2LCAxMzMsIDI0OSwgMTQwLCAyMjAsIDQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzksIDIxMSwgMjA3LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMzgsIDI0NSwgNTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzcsIDIyOSwgMjQ5LCAyOSwgNjYsIAotICAgIDIyNCwgNDUsIDI0OSwgMTM2LCAyMzAsIDIsIDI5LCA2NiwgMTMzLCAyNDksIDEzNSwgMjIwLCA1NSwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTM0LCAyMDQsIDEyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzMsIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzIsIDI1MCwgCi0gICAgMTE5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMxLCAyMjQsIDIzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMwLCAyNDcsIAotICAgIDIwMiwgMjksIDY2LCAxMzMsIDI0OSwgMTI5LCAyMzgsIDMxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjgsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDEyNywgMjAzLCAyNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEyNiwgMjksIDY2LCAxMzMsIDI0OSwgMTI1LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMjQsIDIzNiwgNTMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMywgMjksIDY2LCAxMzMsIDI0OSwgMTIyLCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMjEsIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMTksIDIwNywgMTcyLCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxMTgsIDI5LCA2NiwgMTMzLCAyNDksIDExNywgMjksIDY2LCAxMzMsIDI0OSwgMTE2LCAyNDYsIDEwLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMTUsIDI5LCA2NiwgMTMzLCAyNDksIDExNCwgMjksIDY2LCAxMzMsIDI0OSwgMTEzLCAyMzgsIDIyMSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTEyLCAyNTAsIDEwNiwgMjksIDY2LCAxMzMsIDI0OSwgMTExLCAyOSwgNjYsIDEzMywgMjQ5LCAxMTAsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDEwOSwgMjksIDY2LCAxMzMsIDI0OSwgMTA4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDcsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEwNiwgMjksIDY2LCAxMzMsIDI0OSwgMTA1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDQsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDEwMywgMjksIDY2LCAxMzMsIDI0OSwgMTAyLCAyMjQsIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDEsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEwMCwgMjA4LCA5NSwgMjksIDY2LCAxMzMsIDI0OSwgOTksIDI5LCA2NiwgMTMzLCAyNDksIDk4LCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCA5NywgMjksIDY2LCAxMzMsIDI0OSwgOTYsIDI5LCA2NiwgMTMzLCAyNDksIDk1LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA5NCwgMjksIDY2LCAxMzMsIDI0OSwgOTMsIDI5LCA2NiwgMTMzLCAyNDksIDkyLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA5MSwgMjksIDY2LCAxMzMsIDI0OSwgOTAsIDI5LCA2NiwgMTMzLCAyNDksIDg5LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICA4OCwgMjM3LCAzNSwgMjksIDY2LCAxMzMsIDI0OSwgNjcsIDIzOSwgMTY4LCAyOSwgNjYsIDEzMywgMjQ5LCA2NCwgMjQ4LCAKLSAgICAyMDQsIDI5LCA2NiwgMTMzLCAyNDksIDU5LCAyMTEsIDIxNCwgMjksIDY2LCAxMzMsIDI0OSwgNTgsIDQ3LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA1NywgMjksIDY2LCAxMzMsIDI0OSwgNTYsIDIxMCwgMTU1LCAyOSwgNjYsIDEzMywgMjQ5LCA1NSwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgNTQsIDI5LCA2NiwgMTMzLCAyNDksIDUzLCAyMDQsIDM0LCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgNTIsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCA1MSwgMjQ2LCAxODAsIDIzOSwgMTM0LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA1MCwgMjA0LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgNDksIDI5LCA2NiwgMTMzLCAyNDksIDQ4LCAyOSwgNjYsIAotICAgIDIyNCwgNDUsIDI0OSwgNDcsIDI0MywgMTY4LCAyOSwgNjYsIDEzMywgMjQ5LCA0NiwgMjksIDY2LCAxMzMsIDI0OSwgNDUsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDQzLCAyOSwgNjYsIDEzMywgMjQ5LCA0MiwgMjksIDY2LCAxMzMsIDI0OSwgNDEsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDQwLCAyNDQsIDE0NywgMjksIDY2LCAxMzMsIDI0OSwgMzksIDI5LCA2NiwgMTMzLCAyNDksIDM4LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDM1LCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgMTIwLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODcsIDI5LCA2NiwgMTMzLCAKLSAgICAyMDUsIDI0MSwgMjQ5LCA4NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAotICAgIDI0OSwgODQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgyLCAKLSAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODEsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MCwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDc5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzgsIDI5LCA2NiwgMTMzLCAyMDUsIAotICAgIDI0MSwgMjQ5LCA3NywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgCi0gICAgNzUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDczLCAyOSwgCi0gICAgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzIsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MSwgMjksIDY2LCAxMzMsIAotICAgIDIwNSwgMjQxLCAyNDksIDcwLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCi0gICAgMjQ5LCA2OCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjUsIAotICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYyLCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNjEsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MCwgMjksIDY2LCAxMzMsIDIwNSwgCi0gICAgMjQxLCAyNDksIDQ0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgMzQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAKLSAgICAxMzEsIDIyNywgMTE0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgMTMxLCAyNDMsIDg1LCAyNTEsIDEwMiwgMjQ2LCAxNjksIAotICAgIDgyLCAyNTEsIDEwMiwgNDIsIDEwNSwgMjUxLCAxMDIsIDQyLCAxMDgsIDI1MSwgMTAyLCA0MiwgMTQ3LCAyNTEsIDEwMiwgCi0gICAgNDIsIDE0OSwgMjUxLCAxMDIsIDQyLCAxNzAsIDI1MSwgMTAyLCA0MiwgMTk1LCAyNTEsIDEwMiwgNDIsIDIxMywgMTExLCAKLSAgICAyNTEsIDEwMiwgNDIsIDE5OSwgMjUxLCAxMDIsIDQyLCAyMjIsIDYzLCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUyLCAyNTEsIAotICAgIDEwMiwgNDIsIDIwNywgMTUxLCAyNTEsIDEwMiwgNDIsIDIwOSwgNTMsIDI1MSwgMTAyLCA0MiwgMjM5LCAxNTMsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjQwLCAxOCwgMjUxLCAxMDIsIDQyLCAyMTIsIDc0LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA1LCAyNTEsIAotICAgIDEwMiwgNDIsIDI0MSwgMTM0LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTgsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMzYsIDExLCAKLSAgICAyNTEsIDEwMiwgNDIsIDEyMCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMjYsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgCi0gICAgMjM5LCAxNDcsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEyLCAKLSAgICA4OCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgCi0gICAgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDExOCwgMjA5LCAzNiwgMjUxLCAKLSAgICAxMDIsIDQyLCAxMjAsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIzOSwgCi0gICAgMTQ3LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgODgsIAotICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIDIwOSwgCi0gICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjUxLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIAotICAgIDIzOSwgMTU0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NSwgCi0gICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDEzNSwgMjA5LCAKLSAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDU5LCAyMDksIDM2LCAyNTEsIDEwMiwgMjA0LCA1MSwgMjQ4LCAyMTksIDIwNiwgCi0gICAgMjM1LCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjE0LCAxNzEsIAotICAgIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjA5LCA2MSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIAotICAgIDE0MCwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyNDIsIDQ1LCAyMjUsIDE5LCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAKLSAgICAyMjcsIDk1LCAyMjUsIDE5LCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMjUsIDE5LCAyMTQsIDE3MSwgMjEwLCAKLSAgICAyNDAsIDI1MSwgMTAyLCAyMjUsIDE5LCAyMDksIDYxLCAyMTAsIDI0MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIAotICAgIDIxNywgNTUsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzcsIDEzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAKLSAgICAxMTgsIDI0MiwgNjUsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTcwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTgsIAotICAgIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAKLSAgICAyMzMsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyMzksIDIzMywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMjM3LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAKLSAgICAxMiwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIwOSwgMjM3LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAKLSAgICAyMzMsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMTEsIDg4LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIAotICAgIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIDEyLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjA5LCAzNywgMjExLCAKLSAgICA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyNDAsIDE5LCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMjQsIDg1LCAKLSAgICAzMCwgMjUxLCAxMjksIDIzNywgMjksIDExOCwgMjE4LCA4NiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMDUsIDMwLCAyNTEsIAotICAgIDEyOSwgMjM3LCAyNSwgMTA1LCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDEwOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAKLSAgICAxMDgsIDMwLCAyNTEsIDEyOSwgMjQ1LCA1NiwgMTIwLCAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDEyMCwgCi0gICAgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAxNzAsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjA5LCAxNTIsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjA5LCAxNTMsIDI1MCwgMjU1LCAxOCwgMzAsIDI1MSwgMTI5LCAyMzcsIDI1LCAyMDksIAotICAgIDE1MiwgMzAsIDI1MSwgMTI5LCAyMjQsIDIyMiwgMjA5LCAxNTIsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjA5LCAxNTIsIAotICAgIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjA5LCA1MywgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyNDAsIDE4LCAzMCwgMjUxLCAKLSAgICAxMjksIDIwOCwgNjEsIDI0MCwgMTksIDI1MCwgMjU1LCAxOCwgMzAsIDI1MSwgMTI5LCAyMzcsIDI1LCAyNDAsIDE4LCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOSwgNzYsIDI0MCwgMTgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMzYsIDExLCAzMCwgMjUxLCAKLSAgICAxMjksIDIwOSwgNzYsIDEyNiwgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMzksIDIzMywgCi0gICAgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNDcsIDIxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMjMsIDYwLCAKLSAgICAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgCi0gICAgMjA5LCA3NiwgMjM5LCAyMzMsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjQ0LCA0MCwgMjM5LCAyMzMsIDIyNCwgODUsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjExLCA0OSwgMjQwLCAxOSwgMjI0LCA4NSwgMzAsIDExOCwgMTYyLCA1NCwgMzAsIDExOCwgMTYyLCAyLCAKLSAgICAyNTAsIDI1NSwgMTgsIDMwLCAxMjAsIDIwOSwgNTgsIDU0LCAzMCwgMTI2LCAyMTcsIDU0LCA1NCwgMzAsIDIwMywgNTAsIAotICAgIDU0LCAzMCwgMjA5LCAyMzgsIDU0LCAzMCwgMjQyLCA2NiwgNTQsIDMwLCAyMjAsIDg3LCA1NCwgMzAsIDEyMCwgMjIwLCA4NiwgCi0gICAgNTQsIDMwLCAxMjYsIDIyMCwgODYsIDU0LCAzMCwgMjM5LCAxNDcsIDIyMCwgODYsIDU0LCAzMCwgMjM5LCAyMzMsIDIyMCwgCi0gICAgODYsIDU0LCAzMCwgMjI0LCAyMTYsIDU0LCAzMCwgMjI4LCAxMzksIDI0OCwgMjE5LCA1NCwgMzAsIDIyNywgODgsIDU0LCAKLSAgICAzMCwgMjE5LCAyMTMsIDU0LCAzMCwgMjAzLCAxNzMsIDU0LCAzMCwgMjUwLCA4NywgNTQsIDMwLCAyNTAsIDEwMiwgNTQsIAotICAgIDMwLCAyMzgsIDcsIDU0LCAzMCwgMjA4LCAyMywgMjQ4LCAyMTksIDU0LCAzMCwgMjAyLCA4NSwgNTQsIDMwLCAxMTgsIDIxNywgCi0gICAgNTYsIDU0LCAzMCwgMjEyLCAxMTMsIDU0LCAyMTUsIDIxMCwgMjEzLCAxMDIsIDU0LCAyMTUsIDIxMCwgMjA2LCAyNDksIDU0LCAKLSAgICAyMTUsIDIxMCwgMjEzLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjEzLCAxMDAsIDU0LCAyMTUsIDIxMCwgMjQzLCAxODMsIDIxMywgCi0gICAgMTAwLCA1NCwgMjE1LCAyMTAsIDIxMiwgMTM1LCA1NCwgMjE1LCAyMTAsIDI0NCwgMzYsIDU0LCAyMTUsIDIxMCwgMjE3LCAKLSAgICAzOSwgNTQsIDIxNSwgMjEwLCAyMTMsIDExOSwgNTQsIDIxNSwgMjEwLCAyNDIsIDIzLCA1NCwgMjE1LCAyMTAsIDI1MCwgODIsIAotICAgIDU0LCAyMTUsIDIxMCwgMjQ2LCAyMTMsIDU0LCAzMCwgMTYsIDIwOSwgMjA4LCAyMTYsIDU5LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIxOSwgMjUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA3OCwgMjM3LCA2NCwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMDksIDIxMSwgMjM3LCA2NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDQyLCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDI0NiwgMTMzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwMywgMjUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDIzNywgMzUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM4LCAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA5LCAwLCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDQ3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjQwLCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDIxMywgOCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDYsIDQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgCi0gICAgMiwgMjI1LCAxMjEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI1LCA2OCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTQsIAotICAgIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDE0MywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDUsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNiwgMjE4LCA5MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDMsIDk4LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NSwgMjM5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMiwgNDYsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjQ1LCAyNDAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNDcsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjEyLCAyNTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM2LCA1MywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyMzcsIDEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAxNzQsIDIyNywgMjEwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDI0NywgMTcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE2LCAxODQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQxLCAKLSAgICAxODYsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQyLCA3MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDcsIDE4OCwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDkyLCAyMDgsIDk1LCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNSwgMjExLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOSwgOTIsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjE1LCAyMDEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxMjcsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjE5LCAxOTQsIDI0OSwgMjUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM5LCAxOTMsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjM3LCAyNTUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjExLCA1MCwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCA1LCAyNTAsIDksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA0LCA3MiwgMjQ4LCAyMzgsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMzksIDIyMCwgODksIDk1LCAyMjYsIDE5NywgMSwgNjMsIDIyNiwgMTk3LCAxLCA3NCwgMjI2LCAKLSAgICAxOTcsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NywgMSwgMjQ4LCA5OSwgMjI2LCAxOTcsIDEsIDIzOSwgNzUsIDIyNiwgMTk3LCAKLSAgICAxLCAyNDUsIDUxLCAyMjYsIDE5NywgMSwgNzUsIDIyNiwgMTk3LCAxLCAyMDQsIDE0NCwgMjI2LCAxOTcsIDEsIDIwMiwgCi0gICAgMTU5LCAyMjYsIDE5NywgMSwgMjA5LCAxMTAsIDIyNiwgMTk3LCAxLCAyMzAsIDE4NCwgMjI2LCAxOTcsIDEsIDIzMCwgNTQsIAotICAgIDIyNiwgMTk3LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTcsIDEsIDE1OSwgMjI2LCAxOTcsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NywgCi0gICAgMSwgMjIzLCAxNjMsIDIyNiwgMTk3LCAxLCAyMjQsIDg3LCAyMjYsIDE5NywgMSwgMjIxLCAyMjgsIDIyNiwgMTk3LCAxLCAKLSAgICA2OCwgMjI2LCAxOTcsIDEsIDIxOSwgMTg0LCAyMjYsIDE5NywgMSwgMjI5LCA0OCwgMjI2LCAxOTcsIDEsIDE0NiwgMjI2LCAKLSAgICAxOTcsIDEsIDE5NCwgMjI2LCAxOTcsIDEsIDIxMCwgNjksIDIyNiwgMTk3LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTcsIDEsIAotICAgIDI1MCwgMjMxLCAyMjYsIDE5NywgMSwgMjQxLCA5MiwgMjI2LCAxOTcsIDEsIDIzNywgMTcxLCAyMjYsIDE5NywgMSwgMjAzLCAKLSAgICAxOTYsIDI0NywgMzIsIDEsIDYzLCAyNDcsIDMyLCAxLCAyMTksIDE3MCwgMjQ3LCAzMiwgMSwgMjQ1LCA1MSwgMjQ3LCAzMiwgCi0gICAgMSwgMTU5LCAyNDcsIDMyLCAxLCAyMDYsIDE3NiwgMjQ3LCAzMiwgMSwgMTQ2LCAyNDcsIDMyLCAxLCAyMjcsIDIzOCwgMjQ3LCAKLSAgICAzMiwgMSwgMjU0LCAzNCwgMjQ3LCAzMiwgMSwgMjE3LCAxMzQsIDI0NywgMzIsIDEsIDI0OSwgMjU1LCAyNDcsIDMyLCAxLCAKLSAgICAyMjYsIDE4NSwgMjQ3LCAzMiwgMSwgNzgsIDI0NywgMzIsIDEsIDI0NCwgMjE0LCAyNDcsIDMyLCAxLCAyMTAsIDY5LCAyNDcsIAotICAgIDMyLCAxLCAyMTMsIDkyLCAyNDcsIDMyLCAxLCAyMTMsIDkxLCAyNDcsIDMyLCAxLCAxOTQsIDI0NywgMzIsIDEsIDI0NywgCi0gICAgMTI0LCAyNDcsIDMyLCAxLCA2OCwgMjQ3LCAzMiwgMSwgMjIxLCAyMjgsIDI0NywgMzIsIDEsIDIwMywgMTk2LCAyNDcsIDMyLCAKLSAgICAxLCAyMjMsIDE2MywgMjQ3LCAzMiwgMSwgMjA3LCAyNDMsIDI0NywgMzIsIDEsIDIxOSwgMTg0LCAyNDcsIDMyLCAxLCAyMTEsIAotICAgIDE2NywgMjQ3LCAzMiwgMSwgNzUsIDI0NywgMzIsIDEsIDc0LCAyNDcsIDMyLCAxLCAyMDYsIDE3MywgMjQ3LCAzMiwgMSwgCi0gICAgMjMwLCA1NCwgMjQ3LCAzMiwgMSwgMjMwLCA0NSwgMjQ3LCAzMiwgMSwgMjIzLCAyNywgMjQ3LCAzMiwgMSwgMjA2LCAxNzgsIAotICAgIDI0NywgMzIsIDEsIDIzOSwgNzUsIDI0NywgMzIsIDEsIDIzOSwgMTAsIDI0NywgMzIsIDEsIDIxMSwgMTA4LCAyNDcsIDMyLCAKLSAgICAxLCAyMTEsIDEwNywgMjQ3LCAzMiwgMSwgMjIyLCAyMDUsIDI0NywgMzIsIDEsIDIzMSwgODMsIDI0NywgMzIsIDEsIDI0NywgCi0gICAgMTIzLCAyNDcsIDMyLCAxLCAyMDcsIDI0NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzUsIDI0NywgMzIsIDEsIDIxNSwgMTg2LCAKLSAgICAyNDcsIDMyLCAxLCAyMjUsIDU5LCAyNDcsIDMyLCAxLCAyMjUsIDU4LCAyNDcsIDMyLCAxLCAyMjUsIDU3LCAyNDcsIDMyLCAKLSAgICAxLCAyMjUsIDU2LCAyNDcsIDMyLCAxLCAyMjcsIDIzNywgMjQ3LCAzMiwgMSwgMjQxLCAxOTAsIDI0NywgMzIsIDEsIDIwNiwgCi0gICAgMTc0LCA4NCwgMjQxLCA0NCwgMjA5LCAzNSwgODIsIDg0LCAyNDEsIDQ0LCAxNywgMTA1LCA4NCwgMjQxLCA0NCwgMTcsIAotICAgIDEwOCwgODQsIDI0MSwgNDQsIDE3LCAxNDcsIDg0LCAyNDEsIDQ0LCAxNywgMTQ5LCA4NCwgMjQxLCA0NCwgMTcsIDE3MCwgCi0gICAgODQsIDI0MSwgNDQsIDE3LCAxOTUsIDg0LCAyNDEsIDQ0LCAxNywgMjEzLCAxMTEsIDg0LCAyNDEsIDQ0LCAxNywgMTk5LCAKLSAgICA4NCwgMjQxLCA0NCwgMTcsIDIyMiwgNjMsIDg0LCAyNDEsIDQ0LCA0MiwgMjA5LCAxNTIsIDg0LCAyNDEsIDQ0LCA0MiwgCi0gICAgMjA3LCAxNTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjA5LCA1MywgODQsIDI0MSwgNDQsIDQyLCAyMzksIDE1MywgODQsIDI0MSwgCi0gICAgNDQsIDQyLCAyNDAsIDE4LCA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgNzQsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMDUsIDg0LCAKLSAgICAyNDEsIDQ0LCA0MiwgMjQxLCAxMzQsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA1OCwgODQsIDI0MSwgNDQsIDQyLCAxMTgsIAotICAgIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTIwLCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyNiwgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDg4LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIAotICAgIDM4LCAzNywgMSwgNjMsIDM4LCAzNywgMSwgMjQ4LCAxNjIsIDM4LCAzNywgMSwgMjI5LCAyMDEsIDM4LCAzNywgMSwgMjQ0LCAKLSAgICA3NSwgMzgsIDM3LCAxLCA3NCwgMzgsIDM3LCAxLCAyMDYsIDU1LCAzOCwgMzcsIDEsIDIwMiwgOTIsIDM4LCAzNywgMSwgCi0gICAgMjM3LCA2NywgMzgsIDM3LCAxLCAyMDksIDkyLCAzOCwgMzcsIDEsIDc1LCAzOCwgMzcsIDEsIDE3MywgMzgsIDM3LCAxLCAKLSAgICAyNDEsIDEyMiwgMzgsIDM3LCAxLCAyNDEsIDEwMywgMzgsIDM3LCAxLCAyNDEsIDkyLCAzOCwgMzcsIDEsIDI0MSwgNywgMzgsIAotICAgIDM3LCAxLCA3OCwgMzgsIDM3LCAxLCAyMTksIDM0LCAzOCwgMzcsIDEsIDIxMywgNDMsIDM4LCAzNywgMSwgMjI4LCAyMDksIAotICAgIDM4LCAzNywgMSwgMjQxLCAyOCwgMzgsIDM3LCAxLCAyNDEsIDE3LCAzOCwgMzcsIDEsIDIwOSwgMTg3LCAzOCwgMzcsIDEsIAotICAgIDY4LCAzOCwgMzcsIDEsIDI0MSwgMTI1LCAzOCwgMzcsIDEsIDIxOCwgMTk1LCAzOCwgMzcsIDEsIDIyOSwgMTI5LCAzOCwgCi0gICAgMzcsIDEsIDI0MSwgMTU0LCAzOCwgMzcsIDEsIDI0MSwgMTksIDM4LCAzNywgMSwgMjQ2LCAxNzAsIDM4LCAzNywgMSwgMjMxLCAKLSAgICA4MywgMzgsIDM3LCAxLCAyMDYsIDE3OCwgMzgsIDM3LCAxLCAyNDEsIDAsIDM4LCAzNywgMjIxLCA0NCwgMTA1LCAzOCwgMzcsIAotICAgIDIyMSwgNDQsIDE3MCwgMzgsIDM3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMzgsIDM3LCAyMjEsIDQ0LCAyNDAsIDE4LCAyMzgsIAotICAgIDE3LCAxLCAyNTEsIDY3LCAyMzgsIDE3LCAxLCAyNDgsIDI1NSwgMjM4LCAxNywgMSwgMjM4LCA3OCwgMjM4LCAxNywgMSwgCi0gICAgMjQ0LCAxOTQsIDIzOCwgMTcsIDEsIDI1MSwgNjMsIDIzOCwgMTcsIDEsIDIxNywgMTE3LCAyMzgsIDE3LCAxLCAyMzAsIAotICAgIDE5NiwgMjM4LCAxNywgMSwgMjM3LCAxNTAsIDIzOCwgMTcsIDEsIDIwOSwgNDksIDIzOCwgMTcsIDEsIDI0MSwgMTMzLCAKLSAgICAyMzgsIDE3LCAxLCAyMjgsIDE3NiwgMjM4LCAxNywgMSwgMjI4LCA5MCwgMjM4LCAxNywgMSwgMjI1LCAxMTQsIDIzOCwgMTcsIAotICAgIDEsIDIyMywgNjIsIDIzOCwgMTcsIDEsIDIzMCwgMTU0LCAyMzgsIDE3LCAxLCAyMDYsIDE5NiwgMjM4LCAxNywgMSwgMjE5LCAKLSAgICAxNDUsIDIzOCwgMTcsIDEsIDIyMiwgNTgsIDIzOCwgMTcsIDEsIDIxNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTQsIDIxNiwgCi0gICAgMjM4LCAxNywgMSwgMjA5LCAxNjYsIDIzOCwgMTcsIDEsIDIwNCwgMTAsIDIzOCwgMTcsIDEsIDI0MCwgODgsIDIzOCwgMTcsIAotICAgIDEsIDIzMSwgODcsIDIzOCwgMTcsIDEsIDIzNSwgMjUyLCAyMzgsIDE3LCAxLCAyMTksIDIyMywgMjM4LCAxNywgMSwgMjIyLCAKLSAgICA2NCwgMjM2LCAxMSwgMzgsIDIxOCwgMjM3LCAxLCAyNTAsIDIzMSwgMzgsIDIxOCwgMjM3LCAxLCAyNDcsIDE2MCwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyMzgsIDI0OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzgsIDIxOCwgMjM3LCAxLCA3NCwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDYyLCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ3LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgOTksIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDUsIDM4LCAyMTgsIDIzNywgMSwgNzUsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjI5LCAxNSwgMzgsIDIxOCwgMjM3LCAxLCAyMjcsIDIwNiwgMzgsIDIxOCwgMjM3LCAxLCAyMjQsIDIzOCwgMzgsIDIxOCwgCi0gICAgMjM3LCAxLCAyMjIsIDIyOCwgMzgsIDIxOCwgMjM3LCAxLCAyMDUsIDE3NSwgMzgsIDIxOCwgMjM3LCAxLCAyMTksIDIyLCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIxNiwgMTIxLCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwOSwgMjUwLCAzOCwgMjE4LCAyMzcsIDEsIDY4LCAzOCwgMjE4LCAyMzcsIDEsIDI0NiwgMTUxLCAzOCwgMjE4LCAyMzcsIAotICAgIDEsIDIxMiwgMjM1LCAzOCwgMjE4LCAyMzcsIDEsIDIxMywgNDUsIDM4LCAyMTgsIDIzNywgMSwgMjAyLCAyMTUsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjAzLCAzMCwgMzgsIDIxOCwgMjM3LCAxLCA3OCwgMzgsIDIxOCwgMjM3LCAxLCAyMjAsIDE4LCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDI0MSwgMTU0LCAzOCwgMjE4LCAyMzcsIDEsIDE1MiwgMzgsIDIxOCwgMjM3LCAxLCAyMDcsIDI1NCwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMDYsIDQzLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgMzQsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAKLSAgICAzMiwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDY2LCAzOCwgMjE4LCAyMzcsIDEsIDIzMSwgMTEwLCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgMjEzLCAzOCwgMjE4LCAyMzcsIDEsIDE5OCwgMzgsIDIxOCwgMjM3LCAxLCAyMzUsIDE3MSwgMzksIDM4LCAyMTgsIAotICAgIDIzNywgMSwgMjUwLCAyMzEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDk5LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMjIsIDIyOCwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIAotICAgIDIwNywgMTksIDEsIDI1MSwgNiwgMjA3LCAxOSwgMSwgMjQ4LCAxMDYsIDIwNywgMTksIDEsIDIzOCwgMjM2LCAyMDcsIDE5LCAKLSAgICAxLCAyMjksIDE0NCwgMjA3LCAxOSwgMSwgMjQ0LCAzNywgMjA3LCAxOSwgMSwgMjM2LCAxMzYsIDIwNywgMTksIDEsIDIwNCwgCi0gICAgMCwgMjA3LCAxOSwgMSwgMjAyLCA4MywgMjA3LCAxOSwgMSwgMjM2LCA0NSwgMjA3LCAxOSwgMSwgMjA5LCAxMzIsIDIwNywgCi0gICAgMTksIDEsIDIwMiwgMjM2LCAyMDcsIDE5LCAxLCAyMzAsIDIyLCAyMDcsIDE5LCAxLCAyMTIsIDI1NSwgMjA3LCAxOSwgMSwgCi0gICAgMjI4LCAyNCwgMjA3LCAxOSwgMSwgMjI0LCAyNDcsIDIwNywgMTksIDEsIDI0MywgMjUzLCAyMDcsIDE5LCAxLCAyMjEsIDQwLCAKLSAgICAyMDcsIDE5LCAxLCAyMDIsIDYsIDIwNywgMTksIDEsIDIxNCwgMjQ4LCAyMDcsIDE5LCAxLCAyNTEsIDU5LCAyMDcsIDE5LCAKLSAgICAxLCAyMTcsIDE5MSwgMjA3LCAxOSwgMSwgMjE1LCAyNywgMjA3LCAxOSwgMSwgMjE3LCA3MCwgMjA3LCAxOSwgMSwgMjE2LCAKLSAgICAxNzUsIDIwNywgMTksIDEsIDIwOSwgOTYsIDIwNywgMTksIDEsIDIzOCwgMTE0LCAyMDcsIDE5LCAxLCAxMzUsIDIwNywgMTksIAotICAgIDEsIDc1LCAyMDcsIDE5LCAxLCA2OCwgMjA3LCAxOSwgMSwgMjExLCAxMTksIDIwNywgMTksIDIwMywgMjM4LCAyNDMsIDE0MSwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCA2MywgMzgsIDIxOCwgMjMxLCAyLCA3NSwgMzgsIDIxOCwgMjMxLCAyLCA2OCwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAxNzMsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAyMDksIDM4LCAyMTgsIDIzMSwgMiwgMjM5LCA4LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDIzNywgMjMwLCAzOCwgMjE4LCAyMzEsIDIsIDIwMywgMTgyLCAzOCwgMjE4LCAyMzEsIDIsIDI0NywgOTIsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgMjMwLCAxODEsIDM4LCAyMTgsIDIzMSwgMiwgMjMwLCAxNDEsIDM4LCAyMTgsIDIzMSwgMiwgCi0gICAgMjEwLCAyMiwgMzgsIDIxOCwgMjMxLCAyLCAyMDcsIDIwMywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDIxMiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyNDMsIDIzMywgMzgsIDIxOCwgMjMxLCAyLCAyNDIsIDQyLCAzOCwgMjE4LCAyMzEsIDIsIDIwOSwgMTA4LCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDE4NSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDMyLCAzOCwgMjE4LCAyMzEsIDIsIDI0MCwgCi0gICAgMTA4LCAzOCwgMjE4LCAyMzEsIDIsIDIwMSwgMjAxLCAzOCwgMjE4LCAyMzEsIDIsIDIyMSwgODQsIDM4LCAyMTgsIDIzMSwgCi0gICAgMiwgMTkyLCAzOCwgMjE4LCAyMzEsIDIsIDIyNCwgMTU1LCAzOCwgMjE4LCAyMzEsIDIsIDIyMywgMjQ2LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDE5OCwgMzgsIDIxOCwgMjMxLCAyLCAyMDYsIDg2LCAzOCwgMjE4LCAyMzEsIDIsIDIwNSwgMjMwLCAzOCwgCi0gICAgMjE4LCAyMzEsIDIsIDIxNiwgMjIwLCAzOCwgMjE4LCAyMzEsIDIsIDIxNSwgMTQ1LCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgCi0gICAgMTEzLCAzOCwgMjE4LCAyMzEsIDIsIDIxNSwgMzYsIDM4LCAyMTgsIDIzMSwgMiwgMjAyLCAxMTYsIDM4LCAyMTgsIDIzMSwgCi0gICAgMiwgMjEzLCA5MCwgMzgsIDIxOCwgMjMxLCAyLCAyMTEsIDE2NCwgMzgsIDIxOCwgMjMxLCAyLCAxNTIsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjUwLCAyOCwgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI3LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjYsIDM4LCAKLSAgICAyMTgsIDIzMSwgMiwgMjAzLCAxNTMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAxOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAKLSAgICAxODksIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCA4LCAzOCwgMjE4LCAyMzEsIDIsIDI0NywgMTQ0LCAzOCwgMjE4LCAyMzEsIAotICAgIDIwMywgMjM4LCAyNDMsIDE0MSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA1LCAzOCwgMjE4LCAyMzEsIDQyLCAxMDgsIDM4LCAKLSAgICAyMTgsIDIzMSwgNDIsIDIwOSwgMTUyLCAzOCwgMjE4LCAyMzEsIDQyLCAyMDcsIDE1MSwgMzgsIDIxOCwgMjMxLCA0MiwgCi0gICAgMjM2LCAxMSwgMjQ0LCAxNywgNiwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNiwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMTYzLCA2MywgMjQ0LCAxNywgNiwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIAotICAgIDc0LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAotICAgIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNTAsIDgsIDI0NCwgMTcsIDYsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA2LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjAzLCA0OSwgMjQ0LCAxNywgNiwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDYsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA2LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNiwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDYsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA2LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA2LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNiwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3LCAyNDQsIDE3LCA2LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDEsIDI4LCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MSwgOTIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDYsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MCwgMjIwLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAxNjMsIDYzLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDUsIAotICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgCi0gICAgNzQsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCi0gICAgMTcsIDUsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI1MCwgOCwgMjQ0LCAxNywgNSwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDUsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyMDMsIDQ5LCAyNDQsIDE3LCA1LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNSwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDUsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA1LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNSwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDUsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDUsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDUsIAotICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA1LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDUsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MSwgMjgsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQxLCA5MiwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNSwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQwLCAyMjAsIDIxMywgNTAsIDEsIDIxOSwgMjAsIDIxMywgNTAsIDEsIDIwOCwgMTMxLCAyMTMsIDUwLCAxLCAyMjksIDk2LCAKLSAgICAyMTMsIDUwLCAxLCAyNDAsIDUzLCAyMTMsIDUwLCAxLCAyMDksIDY1LCAyMTMsIDUwLCAxLCAyMTIsIDEzLCAyMTMsIDUwLCAKLSAgICAxLCAyMTAsIDE5MCwgMjEzLCA1MCwgMSwgMjQ2LCA5MCwgMjEzLCA1MCwgMSwgMjAzLCA1MSwgMjEzLCA1MCwgMSwgMjM2LCAKLSAgICA5LCAyMTMsIDUwLCAxLCAyNDgsIDg1LCAyMTMsIDUwLCAxLCAyNDQsIDc0LCAyMTMsIDUwLCAxLCAyMzgsIDI1MCwgMjEzLCAKLSAgICA1MCwgMSwgMjA1LCAxNzAsIDIxMywgNTAsIDEsIDIwOSwgNzEsIDIxMywgNTAsIDEsIDIwMiwgMTUsIDIxMywgNTAsIDEsIAotICAgIDIyNSwgMTgsIDIxMywgNTAsIDEsIDIzMCwgODAsIDIxMywgNTAsIDEsIDIwMywgMjU0LCAyMTMsIDUwLCAxLCAyMzcsIDE1OSwgCi0gICAgMjEzLCA1MCwgMSwgMjI3LCAzMywgMjEzLCA1MCwgMSwgMjI0LCAxMTEsIDIxMywgNTAsIDEsIDIzMSwgOTAsIDIxMywgNTAsIAotICAgIDEsIDI0MSwgMTUyLCAyMTMsIDUwLCAxLCAyNTAsIDc1LCAyMTMsIDUwLCAxLCAyNTEsIDExMywgMjEzLCA1MCwgMSwgMjIwLCAKLSAgICAzMSwgMjEzLCA1MCwgMSwgMjAzLCAyNDEsIDIxMywgNTAsIDEsIDIxOSwgMjExLCAyMTMsIDUwLCAxLCAyNTEsIDczLCAyMTMsIAotICAgIDUwLCAxLCAyMTUsIDIyNCwgMjEzLCA1MCwgMSwgMjIxLCA0MCwgMjEzLCA1MCwgMSwgMjQxLCAxNzIsIDIxMywgNTAsIDEsIAotICAgIDI1MSwgNzgsIDIxMywgNTAsIDEsIDIzNSwgMTYyLCAyMTMsIDUwLCAxLCAyMDYsIDIyNCwgMjEzLCA1MCwgMSwgMjIwLCA5NSwgCi0gICAgMjEzLCA1MCwgMSwgMjIwLCAxMCwgMjEzLCA1MCwgMSwgMjIwLCA1NSwgMjEzLCA1MCwgMSwgMjUwLCAxMSwgMjEzLCA1MCwgCi0gICAgMSwgMjUwLCAxMjEsIDIxMywgNTAsIDEsIDIxOSwgMjQ0LCAyMTMsIDUwLCAxLCAyNTEsIDU0LCAyMTMsIDUwLCAxLCAyNDEsIAotICAgIDIxLCAyMTMsIDUwLCAxLCAyNTAsIDk5LCAyMTMsIDUwLCAxLCAyNDEsIDE4MywgMjEzLCA1MCwgMSwgMjM1LCAxNzAsIDIxMywgCi0gICAgNTAsIDEsIDIwMywgMTYsIDIxOSwgMjI1LCAxLCAyNTEsIDMwLCAyMTksIDIyNSwgMSwgMjQ5LCAzMiwgMjE5LCAyMjUsIDEsIAotICAgIDIxMCwgMjIsIDIxOSwgMjI1LCAxLCAyMzAsIDE4MSwgMjE5LCAyMjUsIDEsIDIwMywgMTgyLCAyMTksIDIyNSwgMSwgMjI5LCAKLSAgICAxNDQsIDIxOSwgMjI1LCAxLCAyNDQsIDYwLCAyMTksIDIyNSwgMSwgMjE2LCAyMjAsIDIxOSwgMjI1LCAxLCAyMTUsIDM2LCAKLSAgICAyMTksIDIyNSwgMSwgMjEzLCA1LCAyMTksIDIyNSwgMSwgMjQ0LCAxLCAyMTksIDIyNSwgMSwgMjQ3LCA3LCAyMTksIDIyNSwgCi0gICAgMSwgMjM5LCA4LCAyMTksIDIyNSwgMSwgMjQwLCAxMDgsIDIxOSwgMjI1LCAxLCAyMTcsIDEyNCwgMjE5LCAyMjUsIDEsIAotICAgIDIzMCwgMzgsIDIxOSwgMjI1LCAxLCAyMjgsIDEwOCwgMjE5LCAyMjUsIDEsIDIyNCwgMTI0LCAyMTksIDIyNSwgMSwgMjIxLCAKLSAgICAyNCwgMjE5LCAyMjUsIDEsIDIwNCwgNzAsIDIxOSwgMjI1LCAxLCAxNTIsIDIxOSwgMjI1LCAxLCAxOTgsIDIxOSwgMjI1LCAKLSAgICAxLCA2MywgMjE5LCAyMjUsIDEsIDc0LCAyMTksIDIyNSwgMSwgNzUsIDIxOSwgMjI1LCAxLCA3OCwgMjE5LCAyMjUsIDEsIAotICAgIDY4LCAyMTksIDIyNSwgMSwgMjUyLCAyNSwgMjE5LCAyMjUsIDEsIDI0MSwgMTYxLCAyMTksIDIyNSwgMSwgMjIwLCAxOCwgCi0gICAgMjE5LCAyMjUsIDE3LCAyMDIsIDg0LCAyMTksIDIyNSwgMTcsIDEwNSwgMjE5LCAyMjUsIDE3LCAxMDgsIDIxOSwgMjI1LCAKLSAgICAxNywgMTQ3LCAyMTksIDIyNSwgMTcsIDE0OSwgMjE5LCAyMjUsIDE3LCAxNzAsIDIxOSwgMjI1LCAxNywgMTk1LCAyMTksIAotICAgIDIyNSwgMTcsIDIxMywgMTExLCAyMTksIDIyNSwgMTcsIDE5OSwgMjE5LCAyMjUsIDE3LCAyMjIsIDYzLCAyNDEsIDExOCwgMSwgCi0gICAgNjMsIDI0MSwgMTE4LCAxLCAyNDgsIDE2MiwgMjQxLCAxMTgsIDEsIDI0NiwgMjM4LCAyNDEsIDExOCwgMSwgMjQ2LCAxNzAsIAotICAgIDI0MSwgMTE4LCAxLCAyNDQsIDc1LCAyNDEsIDExOCwgMSwgMjIzLCAxNywgMjQxLCAxMTgsIDEsIDI0MywgMjQ4LCAyNDEsIAotICAgIDExOCwgMSwgMjQxLCAxNDUsIDI0MSwgMTE4LCAxLCA3NCwgMjQxLCAxMTgsIDEsIDI0MCwgNjAsIDI0MSwgMTE4LCAxLCAKLSAgICAyMzgsIDE5MCwgMjQxLCAxMTgsIDEsIDIzOCwgNTIsIDI0MSwgMTE4LCAxLCAyMzcsIDY3LCAyNDEsIDExOCwgMSwgNzUsIAotICAgIDI0MSwgMTE4LCAxLCAyMzAsIDE2MSwgMjQxLCAxMTgsIDEsIDIyOSwgMjAxLCAyNDEsIDExOCwgMSwgMjI3LCAyMzQsIDI0MSwgCi0gICAgMTE4LCAxLCAyMjcsIDczLCAyNDEsIDExOCwgMSwgMjI1LCAyMCwgMjQxLCAxMTgsIDEsIDIyMiwgMjQwLCAyNDEsIDExOCwgCi0gICAgMSwgMjAxLCAyMDEsIDI0MSwgMTE4LCAxLCAyMjIsIDQxLCAyNDEsIDExOCwgMSwgNzgsIDI0MSwgMTE4LCAxLCAyMTksIDM0LCAKLSAgICAyNDEsIDExOCwgMSwgMjE3LCAxMDYsIDI0MSwgMTE4LCAxLCAyMTYsIDE1OCwgMjQxLCAxMTgsIDEsIDIxNSwgMTgwLCAyNDEsIAotICAgIDExOCwgMSwgMjE0LCAxNzcsIDI0MSwgMTE4LCAxLCAyMTMsIDQzLCAyNDEsIDExOCwgMSwgMjA5LCAxODcsIDI0MSwgMTE4LCAKLSAgICAxLCAyMDksIDkyLCAyNDEsIDExOCwgMSwgNjgsIDI0MSwgMTE4LCAxLCAyMDYsIDU1LCAyNDEsIDExOCwgMSwgMjAzLCAxNzYsIAotICAgIDI0MSwgMTE4LCAxLCAyMDMsIDEyNCwgMjQxLCAxMTgsIDEsIDIwMiwgOTIsIDI0MSwgMTE4LCAxLCAyMDIsIDcxLCAyNDEsIAotICAgIDExOCwgMSwgMjM4LCAxMDUsIDI0MSwgMTE4LCAxLCAyMzgsIDExMSwgMjQxLCAxMTgsIDEsIDIyOSwgMTI5LCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyNTEsIDEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0OCwgMTA4LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyMzgsIDY5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDQsIDE0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAxNzEsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDE4MywgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjAyLCA2NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA5LCAyMTMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDI0NiwgMTk5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDIyNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCA4MCwgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMjMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgOTAsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDIyOCwgMTcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjM1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyMDMsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQyLCA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDM5LCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE0MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjI5LCAyNDAsIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDIyNiwgMTk0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzcsIDE0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIAotICAgIDEwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjUwLCAxNzcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTA3LCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE0MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ1LCA2MywgMjQ3LCAxNCwgMjUxLCAzMSwgCi0gICAgMSwgMjI1LCAxMDMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgMTExLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjEsIAotICAgIDE1MSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAyNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgNzMsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTYyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjAsIDMxLCAyNDcsIDE0LCAyNTEsIDMxLCAKLSAgICAxLCAyMDcsIDEyNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCA4MywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAyNTMsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTc2LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTksIDksIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDIzOCwgOTUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNiwgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIAotICAgIDk5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDUsIDIzMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA4LCAxOTMsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIxMiwgMjA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE5NCwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjQ1LCA2NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDMsIAotICAgIDU2LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTgsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjI5LCA2MiwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMjQ2LCA0OSwgODIsIDI5LCAzNCwgMiwgMjUxLCAyMzEsIDI5LCAzNCwgMiwgMjUxLCAyMzAsIDI5LCAzNCwgCi0gICAgMiwgMjUxLCAyMjksIDI5LCAzNCwgMiwgMjUxLCAyMjgsIDI5LCAzNCwgMiwgMjUxLCAyMjcsIDI5LCAzNCwgMiwgMjUxLCAKLSAgICAyMjYsIDI5LCAzNCwgMiwgMjUxLCAyMjUsIDI5LCAzNCwgMiwgMjUxLCAyMjQsIDI5LCAzNCwgMiwgMjUxLCAyMjMsIDI5LCAKLSAgICAzNCwgMiwgMjUxLCAyMjIsIDI5LCAzNCwgMiwgMjUxLCAyMjEsIDI5LCAzNCwgMiwgMjUxLCAyMjAsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMTksIDI5LCAzNCwgMiwgMjUxLCAyMTgsIDI5LCAzNCwgMiwgMjUxLCAyMTcsIDI5LCAzNCwgMiwgMjUxLCAyMTYsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMTUsIDI5LCAzNCwgMiwgMjUxLCAyMTQsIDI5LCAzNCwgMiwgMjUxLCAyMTMsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMTIsIDI5LCAzNCwgMiwgMjUxLCAyMTEsIDI5LCAzNCwgMiwgMjUxLCAyMTAsIDI5LCAzNCwgMiwgMjUxLCAyMDksIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMDgsIDI5LCAzNCwgMiwgMjUxLCAyMDcsIDI5LCAzNCwgMiwgMjUxLCAyMDYsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMDUsIDI5LCAzNCwgMiwgMjU0LCAyMzksIDI5LCAzNCwgMiwgMjUxLCAyMDQsIDI5LCAzNCwgMiwgMjUxLCAyMDMsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMDIsIDI5LCAzNCwgMiwgMjUxLCAyMDEsIDI5LCAzNCwgMiwgMjUxLCAyMDAsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxOTksIDI5LCAzNCwgMiwgMjUxLCAxOTgsIDI5LCAzNCwgMiwgMjUxLCAxOTcsIDI5LCAzNCwgMiwgMjUxLCAxOTYsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxOTUsIDI5LCAzNCwgMiwgMjUxLCAxOTQsIDI5LCAzNCwgMiwgMjUxLCAxOTMsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxOTIsIDI5LCAzNCwgMiwgMjUxLCAxOTEsIDI5LCAzNCwgMiwgMjUxLCAxOTAsIDI5LCAzNCwgMiwgMjUxLCAxODksIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxODgsIDI5LCAzNCwgMiwgMjUxLCAxODcsIDI5LCAzNCwgMiwgMjUxLCAxODYsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxODUsIDI5LCAzNCwgMiwgMjUxLCAxODQsIDI5LCAzNCwgMiwgMjUxLCAxODMsIDI5LCAzNCwgMiwgMjUxLCAxODIsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxODEsIDI5LCAzNCwgMiwgMjUxLCAxODAsIDI5LCAzNCwgMiwgMjUxLCAxNzksIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNzgsIDI5LCAzNCwgMiwgMjUxLCAxNzcsIDI5LCAzNCwgMiwgMjUxLCAxNzYsIDI5LCAzNCwgMiwgMjUxLCAxNzUsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNzQsIDI5LCAzNCwgMiwgMjUxLCAxNzMsIDI5LCAzNCwgMiwgMjUxLCAxNzIsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNzEsIDI5LCAzNCwgMiwgMjUxLCAxNzAsIDI5LCAzNCwgMiwgMjUxLCAxNjksIDI5LCAzNCwgMiwgMjUxLCAxNjgsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNjcsIDI5LCAzNCwgMiwgMjUxLCAxNjYsIDI5LCAzNCwgMiwgMjUxLCAxNjUsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNjQsIDI5LCAzNCwgMiwgMjUxLCAxNjMsIDI5LCAzNCwgMiwgMjUxLCAxNjIsIDI5LCAzNCwgMiwgMjU0LCAxNTIsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNjEsIDI5LCAzNCwgMiwgMjUxLCAxNjAsIDI5LCAzNCwgMiwgMjU0LCAxMTcsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNTksIDI5LCAzNCwgMiwgMjUxLCAxNTgsIDI5LCAzNCwgMiwgMjUxLCAxNTcsIDI5LCAzNCwgMiwgMjUxLCAxNTYsIAotICAgIDI5LCAzNCwgMiwgMjU0LCAxMDQsIDI5LCAzNCwgMiwgMjUxLCAxNTUsIDI5LCAzNCwgMiwgMjUxLCAxNTQsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNTMsIDI5LCAzNCwgMiwgMjUxLCAxNTIsIDI5LCAzNCwgMiwgMjUxLCAxNTEsIDI5LCAzNCwgMiwgMjUzLCAxNzYsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNzUsIDI5LCAzNCwgMiwgMjUzLCAxNzQsIDI5LCAzNCwgMiwgMjUzLCAxNzMsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNzIsIDI5LCAzNCwgMiwgMjUzLCAxNzEsIDI5LCAzNCwgMiwgMjUzLCAxNzAsIDI5LCAzNCwgMiwgMjUzLCAxNjksIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNjcsIDI5LCAzNCwgMiwgMjUzLCAxNjYsIDI5LCAzNCwgMiwgMjUzLCAxNjUsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNjQsIDI5LCAzNCwgMiwgMjUzLCAxNjMsIDI5LCAzNCwgMiwgMjUzLCAxNjIsIDI5LCAzNCwgMiwgMjUzLCAxNjAsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNTksIDI5LCAzNCwgMiwgMjUzLCAxNTgsIDI5LCAzNCwgMiwgMjUzLCAxNTcsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNTYsIDI5LCAzNCwgMiwgMjUzLCAxNTUsIDI5LCAzNCwgMiwgMjUzLCAxNTQsIDI5LCAzNCwgMiwgMjUzLCAxNTMsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNTIsIDI5LCAzNCwgMiwgMjUzLCAxNTEsIDI5LCAzNCwgMiwgMjUzLCAxNTAsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNDksIDI5LCAzNCwgMiwgMjUzLCAxNDgsIDI5LCAzNCwgMiwgMjUzLCAxNDcsIDI5LCAzNCwgMiwgMjUzLCAxNDYsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNDUsIDI5LCAzNCwgMiwgMjUzLCAxNDQsIDI5LCAzNCwgMiwgMjUzLCAxNDMsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNDIsIDI5LCAzNCwgMiwgMjUzLCAxNDAsIDI5LCAzNCwgMiwgMjUzLCAxMzksIDI5LCAzNCwgMiwgMjUzLCAxMzgsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMzQsIDI5LCAzNCwgMiwgMjUzLCAxMzMsIDI5LCAzNCwgMiwgMjUzLCAxMzIsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMzEsIDI5LCAzNCwgMiwgMjUzLCAxMjcsIDI5LCAzNCwgMiwgMjUzLCAxMjYsIDI5LCAzNCwgMiwgMjUzLCAxMjUsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMjQsIDI5LCAzNCwgMiwgMjUzLCAxMjMsIDI5LCAzNCwgMiwgMjUzLCAxMjIsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMjEsIDI5LCAzNCwgMiwgMjUzLCAxMjAsIDI5LCAzNCwgMiwgMjUzLCAxMTksIDI5LCAzNCwgMiwgMjUzLCAxMTgsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMTcsIDI5LCAzNCwgMiwgMjUzLCAxMTYsIDI5LCAzNCwgMiwgMjUzLCAxMTUsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMTQsIDI5LCAzNCwgMiwgMjUzLCAxMTMsIDI5LCAzNCwgMiwgMjUzLCAxMTIsIDI5LCAzNCwgMiwgMjUzLCAxMTEsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMTAsIDI5LCAzNCwgMiwgMjUzLCAxMDksIDI5LCAzNCwgMiwgMjUzLCAxMDgsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMDcsIDI5LCAzNCwgMiwgMjUzLCAxMDYsIDI5LCAzNCwgMiwgMjUzLCAxMDUsIDI5LCAzNCwgMiwgMjUzLCAxMDMsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMDIsIDI5LCAzNCwgMiwgMjUzLCAxMDEsIDI5LCAzNCwgMiwgMjUzLCAxMDAsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCA5OSwgMjksIDM0LCAyLCAyNTMsIDk3LCAyOSwgMzQsIDIsIDI1MywgOTYsIDI5LCAzNCwgMiwgMjUzLCA5NSwgMjksIAotICAgIDM0LCAyLCAyNTMsIDk0LCAyOSwgMzQsIDIsIDI1MywgOTIsIDI5LCAzNCwgMiwgMjUzLCA5MSwgMjksIDM0LCAyLCAyNTMsIAotICAgIDkwLCAyOSwgMzQsIDIsIDI1MywgNTYsIDI5LCAzNCwgMiwgMjUzLCA1NCwgMjksIDM0LCAyLCAyNTMsIDUyLCAyOSwgMzQsIAotICAgIDIsIDI1MywgNTAsIDI5LCAzNCwgMiwgMjUzLCA0OCwgMjksIDM0LCAyLCAyNTMsIDQ2LCAyOSwgMzQsIDIsIDI1MywgNDQsIAotICAgIDI5LCAzNCwgMiwgMjUzLCA0MiwgMjksIDM0LCAyLCAyNTMsIDQwLCAyOSwgMzQsIDIsIDI1MywgMzgsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAzNiwgMjksIDM0LCAyLCAyNTMsIDMzLCAyOSwgMzQsIDIsIDI1MywgMzEsIDI5LCAzNCwgMiwgMjUzLCAyOSwgMjksIAotICAgIDM0LCAyLCAyNTMsIDI3LCAyOSwgMzQsIDIsIDI1MywgMjUsIDI5LCAzNCwgMiwgMjUzLCAyMywgMjksIDM0LCAyLCAyNTMsIAotICAgIDIxLCAyOSwgMzQsIDIsIDI1MywgMTksIDI5LCAzNCwgMiwgMjUyLCAxOTMsIDI5LCAzNCwgMiwgMjUyLCAxOTIsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCAxOTEsIDI5LCAzNCwgMiwgMjUyLCAxOTAsIDI5LCAzNCwgMiwgMjUyLCAxODksIDI5LCAzNCwgMiwgMjUyLCAKLSAgICAxODgsIDI5LCAzNCwgMiwgMjUyLCAxODYsIDI5LCAzNCwgMiwgMjUyLCAxODUsIDI5LCAzNCwgMiwgMjUyLCAxODQsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCAxODMsIDI5LCAzNCwgMiwgMjUyLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAxODEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNzksIDI5LCAzNCwgMiwgMjUyLCAxNzgsIDI5LCAzNCwgMiwgMjUyLCAxNzQsIDI5LCAzNCwgMiwgMjUyLCAxNzMsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNzEsIDI5LCAzNCwgMiwgMjUyLCAxNzAsIDI5LCAzNCwgMiwgMjUyLCAxNjksIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNjgsIDI5LCAzNCwgMiwgMjUyLCAxNjcsIDI5LCAzNCwgMiwgMjUyLCAxNjYsIDI5LCAzNCwgMiwgMjUyLCAxNjUsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNjQsIDI5LCAzNCwgMiwgMjUyLCAxNjMsIDI5LCAzNCwgMiwgMjUyLCAxNjIsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAxNjAsIDI5LCAzNCwgMiwgMjUyLCAxNTksIDI5LCAzNCwgMiwgMjUyLCAxNTgsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNTcsIDI5LCAzNCwgMiwgMjUyLCAxNTYsIDI5LCAzNCwgMiwgMjUyLCAxNTUsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNTQsIDI5LCAzNCwgMiwgMjUyLCAxNTMsIDI5LCAzNCwgMiwgMjUyLCAxNTIsIDI5LCAzNCwgMiwgMjUyLCAxNTEsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNTAsIDI5LCAzNCwgMiwgMjUyLCAxNDksIDI5LCAzNCwgMiwgMjUyLCAxNDgsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNDcsIDI5LCAzNCwgMiwgMjUyLCAxNDYsIDI5LCAzNCwgMiwgMjUyLCAxNDUsIDI5LCAzNCwgMiwgMjUyLCAxNDQsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNDMsIDI5LCAzNCwgMiwgMjUyLCAxNDIsIDI5LCAzNCwgMiwgMjUyLCAxNDEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNDAsIDI5LCAzNCwgMiwgMjUyLCAxMzksIDI5LCAzNCwgMiwgMjUyLCAxMzgsIDI5LCAzNCwgMiwgMjUyLCAxMzcsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMzYsIDI5LCAzNCwgMiwgMjUyLCAxMzUsIDI5LCAzNCwgMiwgMjUyLCAxMzQsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMzMsIDI5LCAzNCwgMiwgMjUyLCAxMzIsIDI5LCAzNCwgMiwgMjUyLCAxMzEsIDI5LCAzNCwgMiwgMjUyLCAxMzAsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMjksIDI5LCAzNCwgMiwgMjUyLCAxMjgsIDI5LCAzNCwgMiwgMjUyLCAxMjcsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMjYsIDI5LCAzNCwgMiwgMjUyLCAxMjUsIDI5LCAzNCwgMiwgMjUyLCAxMjQsIDI5LCAzNCwgMiwgMjUyLCAxMjMsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMjIsIDI5LCAzNCwgMiwgMjUyLCAxMjEsIDI5LCAzNCwgMiwgMjUyLCAxMjAsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMTksIDI5LCAzNCwgMiwgMjUyLCAxMTgsIDI5LCAzNCwgMiwgMjUyLCAxMTcsIDI5LCAzNCwgMiwgMjUyLCAxMTYsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMTUsIDI5LCAzNCwgMiwgMjUyLCAxMTQsIDI5LCAzNCwgMiwgMjUyLCAxMTMsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMTIsIDI5LCAzNCwgMiwgMjUyLCAxMTEsIDI5LCAzNCwgMiwgMjUyLCAxMTAsIDI5LCAzNCwgMiwgMjUyLCAxMDksIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMDgsIDI5LCAzNCwgMiwgMjUyLCAxMDcsIDI5LCAzNCwgMiwgMjUyLCAxMDYsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMDUsIDI5LCAzNCwgMiwgMjUyLCAxMDQsIDI5LCAzNCwgMiwgMjUyLCAxMDMsIDI5LCAzNCwgMiwgMjUyLCAxMDIsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMDEsIDI5LCAzNCwgMiwgMjUyLCAxMDAsIDI5LCAzNCwgMiwgMjUyLCA5OSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDk4LCAyOSwgMzQsIDIsIDI1MiwgOTcsIDI5LCAzNCwgMiwgMjUyLCA5NiwgMjksIDM0LCAyLCAyNTIsIDk1LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgOTQsIDI5LCAzNCwgMiwgMjUyLCA5MywgMjksIDM0LCAyLCAyNTIsIDkyLCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgOTEsIDI5LCAzNCwgMiwgMjUyLCA5MCwgMjksIDM0LCAyLCAyNTIsIDg5LCAyOSwgMzQsIDIsIDI1MiwgODgsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCA4NywgMjksIDM0LCAyLCAyNTIsIDg2LCAyOSwgMzQsIDIsIDI1MiwgODUsIDI5LCAzNCwgMiwgMjUyLCA4NCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDgzLCAyOSwgMzQsIDIsIDI1MiwgODIsIDI5LCAzNCwgMiwgMjUyLCA4MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDgwLCAyOSwgMzQsIDIsIDI1MiwgNzksIDI5LCAzNCwgMiwgMjUyLCA3OCwgMjksIDM0LCAyLCAyNTIsIDc3LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNzYsIDI5LCAzNCwgMiwgMjUyLCA3NSwgMjksIDM0LCAyLCAyNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNzMsIDI5LCAzNCwgMiwgMjUyLCA3MiwgMjksIDM0LCAyLCAyNTIsIDcxLCAyOSwgMzQsIDIsIDI1MiwgNzAsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCA2OSwgMjksIDM0LCAyLCAyNTIsIDY4LCAyOSwgMzQsIDIsIDI1MiwgNjcsIDI5LCAzNCwgMiwgMjUyLCA2NiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDY1LCAyOSwgMzQsIDIsIDI1MiwgNjQsIDI5LCAzNCwgMiwgMjUyLCA2MywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDYyLCAyOSwgMzQsIDIsIDI1MiwgNjEsIDI5LCAzNCwgMiwgMjUyLCA2MCwgMjksIDM0LCAyLCAyNTIsIDU5LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNTgsIDI5LCAzNCwgMiwgMjUyLCA1NywgMjksIDM0LCAyLCAyNTIsIDU2LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNTUsIDYzLCAyOSwgMzQsIDIsIDI1MiwgNTQsIDI0OSwgMjU1LCAyOSwgMzQsIDIsIDI1MiwgNTMsIDI0NSwgNTEsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCA1MSwgMjQwLCAxNzQsIDI5LCAzNCwgMiwgMjUyLCA1MCwgCi0gICAgMjM3LCAxNzEsIDI5LCAzNCwgMiwgMjUyLCA0OSwgMjMwLCAxODQsIDI5LCAzNCwgMiwgMjUyLCA0OCwgMjMwLCA1NCwgMjksIAotICAgIDM0LCAyLCAyNTIsIDQ3LCAxNTksIDI5LCAzNCwgMiwgMjUyLCA0NiwgMjI4LCAxMTgsIDI5LCAzNCwgMiwgMjUyLCA0NSwgCi0gICAgMjI4LCAxMTcsIDI5LCAzNCwgMiwgMjUyLCA0NCwgMjI4LCAxMTYsIDI5LCAzNCwgMiwgMjUyLCA0MywgMjI4LCAxMTUsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA0MiwgMjA0LCAxNDQsIDI5LCAzNCwgMiwgMjUyLCA0MSwgMjAzLCAxOTYsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA0MCwgMjAzLCAxMjQsIDI5LCAzNCwgMiwgMjUyLCAzOSwgMjIwLCAzNiwgMjksIDM0LCAyLCAyNTIsIDM4LCAyNTEsIDE0NywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDM3LCAyNDgsIDE5OSwgMjksIDM0LCAyLCAyNTIsIDM2LCAyNDQsIDEyMiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDM1LCAyNDAsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDM0LCAyMzAsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDMzLCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgMzIsIDI5LCAzNCwgMiwgMjUyLCAzMSwgMjksIDM0LCAyLCAyNTIsIDMwLCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgMjksIDI5LCAzNCwgMiwgMjUyLCAyOCwgMjksIDM0LCAyLCAyNTIsIDI3LCAyOSwgMzQsIDIsIDI1MiwgMjYsIDI0NSwgNTgsIAotICAgIDQsIDYzLCAyNDUsIDU4LCA0LCA3NCwgMjQ1LCA1OCwgNCwgNzUsIDI0NSwgNTgsIDQsIDc4LCAyNDUsIDU4LCA0LCA2OCwgCi0gICAgMjQ1LCA1OCwgNCwgMjMwLCAxODEsIDI0NSwgNTgsIDQsIDIzMCwgMTAxLCAyNDUsIDU4LCA0LCAxNzMsIDI0NSwgNTgsIDQsIAotICAgIDIyOSwgMjAxLCAyNDUsIDU4LCA0LCAyMjksIDEwMCwgMjQ1LCA1OCwgNCwgMjI5LCAyNiwgMjQ1LCA1OCwgNCwgMjI4LCAKLSAgICAyMDksIDI0NSwgNTgsIDQsIDIyOCwgMTEzLCAyNDUsIDU4LCA0LCAyMjcsIDIzNCwgMjQ1LCA1OCwgNCwgMjI3LCAxNDgsIAotICAgIDI0NSwgNTgsIDQsIDIyNywgNDksIDI0NSwgNTgsIDQsIDIyNiwgMjM5LCAyNDUsIDU4LCA0LCAxOTIsIDI0NSwgNTgsIDQsIAotICAgIDIyNSwgMjAsIDI0NSwgNTgsIDQsIDIyNCwgMTU1LCAyNDUsIDU4LCA0LCAyMjQsIDgyLCAyNDUsIDU4LCA0LCAyMjMsIDI0NiwgCi0gICAgMjQ1LCA1OCwgNCwgMjAxLCAyMDEsIDI0NSwgNTgsIDQsIDIyMiwgMjQwLCAyNDUsIDU4LCA0LCAyMjIsIDEwMCwgMjQ1LCAKLSAgICA1OCwgNCwgMjIxLCAxOTEsIDI0NSwgNTgsIDQsIDIyMSwgODQsIDI0NSwgNTgsIDQsIDE4NSwgMjQ1LCA1OCwgNCwgMjE5LCAKLSAgICAzNCwgMjQ1LCA1OCwgNCwgMjE4LCAxNjcsIDI0NSwgNTgsIDQsIDIxOCwgNjksIDI0NSwgNTgsIDQsIDIxNywgMTkxLCAyNDUsIAotICAgIDU4LCA0LCAyMTYsIDIyMCwgMjQ1LCA1OCwgNCwgMjE2LCAxNTgsIDI0NSwgNTgsIDQsIDIxNiwgNTcsIDI0NSwgNTgsIDQsIAotICAgIDIxNSwgMjI3LCAyNDUsIDU4LCA0LCAyMTUsIDE0NSwgMjQ1LCA1OCwgNCwgMjE1LCAzNiwgMjQ1LCA1OCwgNCwgMjE0LCAKLSAgICAxNzcsIDI0NSwgNTgsIDQsIDIxMiwgMTYyLCAyNDUsIDU4LCA0LCAyMTIsIDEzLCAyNDUsIDU4LCA0LCAyMTEsIDEwLCAyNDUsIAotICAgIDU4LCA0LCAyMTAsIDIyLCAyNDUsIDU4LCA0LCAyMDksIDE4NywgMjQ1LCA1OCwgNCwgMjA5LCAyLCAyNDUsIDU4LCA0LCAKLSAgICAxMzUsIDI0NSwgNTgsIDQsIDIwNywgMjAzLCAyNDUsIDU4LCA0LCAyMDQsIDExMSwgMjQ1LCA1OCwgNCwgMjA0LCA2MiwgCi0gICAgMjQ1LCA1OCwgNCwgMjA0LCAzMCwgMjQ1LCA1OCwgNCwgMjA0LCAwLCAyNDUsIDU4LCA0LCAyMDMsIDE4MiwgMjQ1LCA1OCwgCi0gICAgNCwgMjAzLCAxNzYsIDI0NSwgNTgsIDQsIDIwMiwgMTE2LCAyNDUsIDU4LCA0LCAyMDIsIDE3LCAyMzEsIDUxLCAyNTAsIAotICAgIDEzMCwgMSwgMjUxLCAyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI0OCwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgCi0gICAgMjM4LCA2NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI0NCwgMTc3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjM3LCA2NywgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwNCwgNzAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDIsIDk1LCAyMzEsIDUxLCAKLSAgICAyNTAsIDEzMCwgMSwgMjM3LCAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwOSwgMTI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgCi0gICAgMSwgMjAyLCAyMzUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjksIDI1MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOCwgCi0gICAgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjQsIDI0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyMSwgNDAsIDIzMSwgCi0gICAgNTEsIDI1MCwgMTMwLCAxLCAyMTQsIDI0OSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI1MCwgMywgMjMxLCA1MSwgMjUwLCAKLSAgICAxMzAsIDEsIDIxOSwgMzQsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTUsIDI2LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgCi0gICAgMjE3LCA2OSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNiwgOTEsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTIsIDI1NSwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwOSwgMjAxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMjE0LCAxNjgsIDU0LCAyMzEsIDUxLCAKLSAgICAyNTAsIDEzMCwgNDIsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMDgsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgCi0gICAgMTQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUyLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwNywgMTUxLCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIwOSwgMzYsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDIxOSwgMTM0LCAxLCAyNTEsIDI4LCAyMTksIDEzNCwgCi0gICAgMSwgMjQ4LCAxMDUsIDIxOSwgMTM0LCAxLCAyMzgsIDY3LCAyMTksIDEzNCwgMSwgMjQ0LCAxNzcsIDIxOSwgMTM0LCAxLCAKLSAgICAyMzcsIDY3LCAyMTksIDEzNCwgMSwgMjA0LCA3MCwgMjE5LCAxMzQsIDEsIDIwMiwgOTUsIDIxOSwgMTM0LCAxLCAyMzcsIAotICAgIDE5LCAyMTksIDEzNCwgMSwgMjA5LCAxMjgsIDIxOSwgMTM0LCAxLCAyMDIsIDIzNSwgMjE5LCAxMzQsIDEsIDIyOSwgMjUwLCAKLSAgICAyMTksIDEzNCwgMSwgMjI4LCAxOSwgMjE5LCAxMzQsIDEsIDIyNCwgMjQ3LCAyMTksIDEzNCwgMSwgNDYsIDIyMSwgNDAsIAotICAgIDIxOSwgMTM0LCAxLCAyMjEsIDQwLCAyMTksIDEzNCwgMSwgMjE0LCAyNDksIDIxOSwgMTM0LCAxLCAyNTAsIDMsIDIxOSwgCi0gICAgMTM0LCAxLCAyMTksIDM0LCAyMTksIDEzNCwgMSwgMjE1LCAyNiwgMjE5LCAxMzQsIDEsIDIxNywgNjksIDIxOSwgMTM0LCAxLCAKLSAgICAyMTYsIDkxLCAyMTksIDEzNCwgMSwgMjEyLCAyNTUsIDIxOSwgMTM0LCAxLCAyMDksIDIwMSwgMjE5LCAxMzQsIDIyNywgCi0gICAgMjE3LCAyMzksIDIxMiwgMjE5LCAxMzQsIDIxNiwgMTEsIDIzOSwgMjEyLCAyMTksIDEzNCwgNDIsIDEwNSwgMjE5LCAxMzQsIAotICAgIDQyLCAxMDgsIDIxOSwgMTM0LCA0MiwgMTQ3LCAyMTksIDEzNCwgNDIsIDE0OSwgMjE5LCAxMzQsIDQyLCAxNzAsIDIxOSwgCi0gICAgMTM0LCA0MiwgMjA5LCAxNTIsIDIxOSwgMTM0LCA0MiwgMjA3LCAxNTEsIDIyMywgMTAyLCAxLCA0NiwgMjUxLCAyOCwgMjIzLCAKLSAgICAxMDIsIDEsIDI1MSwgMjgsIDIyMywgMTAyLCAxLCA0NiwgMjQ4LCAxMDUsIDIyMywgMTAyLCAxLCAyNDgsIDEwNSwgMjIzLCAKLSAgICAxMDIsIDEsIDIzOCwgNjcsIDIyMywgMTAyLCAxLCAyNDQsIDE3NywgMjIzLCAxMDIsIDEsIDQ2LCAyMzcsIDY3LCAyMjMsIAotICAgIDEwMiwgMSwgMjM3LCA2NywgMjIzLCAxMDIsIDEsIDIwNCwgNzAsIDIyMywgMTAyLCAxLCAyMDIsIDk1LCAyMjMsIDEwMiwgMSwgCi0gICAgMjM3LCAxOSwgMjIzLCAxMDIsIDEsIDIwOSwgMTI4LCAyMjMsIDEwMiwgMSwgNDYsIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgCi0gICAgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCA0NiwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIAotICAgIDQ2LCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjQsIDI0NywgMjIzLCAxMDIsIAotICAgIDEsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgMSwgNDYsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgCi0gICAgMjE0LCAyNDksIDIyMywgMTAyLCAxLCAyNTAsIDMsIDIyMywgMTAyLCAxLCAyMTksIDM0LCAyMjMsIDEwMiwgMSwgMjE1LCAKLSAgICAyNiwgMjIzLCAxMDIsIDEsIDIxNywgNjksIDIyMywgMTAyLCAxLCAyMTYsIDkxLCAyMjMsIDEwMiwgMSwgNDYsIDIxMiwgCi0gICAgMjU1LCAyMjMsIDEwMiwgMSwgMjEyLCAyNTUsIDIyMywgMTAyLCAxLCAyMDksIDIwMSwgMjIzLCAxMDIsIDQyLCAxMDUsIAotICAgIDIyMywgMTAyLCA0MiwgMTA4LCAyMjMsIDEwMiwgNDIsIDE0NywgMjIzLCAxMDIsIDQyLCAxNDksIDIyMywgMTAyLCAyNDUsIAotICAgIDExNiwgNDIsIDE0OSwgMjIzLCAxMDIsIDQyLCAxNzAsIDIyMywgMTAyLCA0MiwgMjA5LCAxNTIsIDIyMywgMTAyLCA0MiwgCi0gICAgMjA3LCAxNTEsIDIyMywgMTAyLCA0MiwgMTE4LCAyMzYsIDExLCAyMzcsIDc4LCAxLCAyNTEsIDI4LCAyMzcsIDc4LCAxLCAKLSAgICAyNDgsIDEwNSwgMjM3LCA3OCwgMSwgMjM4LCA2NywgMjM3LCA3OCwgMSwgMjQ0LCAxNzYsIDIzNywgNzgsIDEsIDIzNywgNjcsIAotICAgIDIzNywgNzgsIDEsIDIwNCwgNzAsIDIzNywgNzgsIDEsIDIwMiwgOTQsIDIzNywgNzgsIDEsIDIzNywgMTksIDIzNywgNzgsIAotICAgIDEsIDIwOSwgMTI4LCAyMzcsIDc4LCAxLCAyMDIsIDIzNSwgMjM3LCA3OCwgMSwgMjI5LCAyNTAsIDIzNywgNzgsIDEsIDIyOCwgCi0gICAgMTksIDIzNywgNzgsIDEsIDIyNCwgMjQ3LCAyMzcsIDc4LCAxLCAyMjEsIDQwLCAyMzcsIDc4LCAxLCAyMTQsIDI0OSwgMjM3LCAKLSAgICA3OCwgMSwgMjUwLCAyLCAyMzcsIDc4LCAxLCAyMTksIDM0LCAyMzcsIDc4LCAxLCAyMTUsIDI2LCAyMzcsIDc4LCAxLCAyMTcsIAotICAgIDY5LCAyMzcsIDc4LCAxLCAyMTIsIDI1NSwgMjM3LCA3OCwgMSwgMjA5LCAyMDEsIDIzNywgNzgsIDQyLCAxMDUsIDIzNywgCi0gICAgNzgsIDQyLCAxNzAsIDIzNywgNzgsIDQyLCAyMDksIDE1MiwgMjM3LCA3OCwgNDIsIDIwNywgMTUxLCAyMzcsIDc4LCA0MiwgCi0gICAgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgMSwgMjUxLCAyNSwgMjE4LCAxNzgsIDEsIDI0OCwgMTA4LCAyMTgsIDE3OCwgMSwgCi0gICAgMjM4LCAyMzcsIDIxOCwgMTc4LCAxLCAyNDQsIDM5LCAyMTgsIDE3OCwgMSwgMjM3LCA2NywgMjE4LCAxNzgsIDEsIDIwNCwgCi0gICAgNzcsIDIxOCwgMTc4LCAxLCAyMDIsIDEwOSwgMjE4LCAxNzgsIDEsIDIzNywgMjEsIDIxOCwgMTc4LCAxLCAyMDksIDEzMiwgCi0gICAgMjE4LCAxNzgsIDEsIDIwMiwgMjM2LCAyMTgsIDE3OCwgMSwgMjMwLCAyMiwgMjE4LCAxNzgsIDEsIDIyOCwgMjUsIDIxOCwgCi0gICAgMTc4LCAxLCAyMjQsIDI0NywgMjE4LCAxNzgsIDEsIDIyMSwgNDAsIDIxOCwgMTc4LCAxLCAyMTMsIDEzNywgMjE4LCAxNzgsIAotICAgIDEsIDI1MSwgNTksIDIxOCwgMTc4LCAxLCAyMTksIDM0LCAyMTgsIDE3OCwgMSwgMjE1LCAyNywgMjE4LCAxNzgsIDEsIDIxNywgCi0gICAgNzQsIDIxOCwgMTc4LCAxLCAyMTUsIDIwMCwgMjE4LCAxNzgsIDEsIDIxMiwgMjU1LCAyMTgsIDE3OCwgMSwgMjA5LCAyMDcsIAotICAgIDIxOCwgMTc4LCA0MiwgMTA1LCAyMTgsIDE3OCwgNDIsIDIwOSwgMTUyLCAyMTgsIDE3OCwgNDIsIDIwNywgMTUxLCAyMTgsIAotICAgIDE3OCwgNDIsIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDQyLCAxMDgsIDIxOCwgMTc4LCA0MiwgMTQ3LCAyMTgsIDE3OCwgCi0gICAgMjAzLCAyMzgsIDIxMywgMTMwLCAyMjYsIDE5NiwgMSwgNjMsIDIyNiwgMTk2LCAxLCAyNDksIDI1NSwgMjI2LCAxOTYsIDEsIAotICAgIDIzOSwgNzUsIDIyNiwgMTk2LCAxLCAyNDUsIDUxLCAyMjYsIDE5NiwgMSwgNzQsIDIyNiwgMTk2LCAxLCAyMDYsIDE2NCwgCi0gICAgMjI2LCAxOTYsIDEsIDc1LCAyMjYsIDE5NiwgMSwgMjAzLCAxMjQsIDIyNiwgMTk2LCAxLCAyMzAsIDU0LCAyMjYsIDE5NiwgCi0gICAgMSwgMTU5LCAyMjYsIDE5NiwgMSwgMjI2LCAxODUsIDIyNiwgMTk2LCAxLCAyMjMsIDE2MywgMjI2LCAxOTYsIDEsIDc4LCAKLSAgICAyMjYsIDE5NiwgMSwgMTQ2LCAyMjYsIDE5NiwgMSwgMjExLCAxNjcsIDIyNiwgMTk2LCAxLCAyMTAsIDY5LCAyMjYsIDE5NiwgCi0gICAgMSwgNjgsIDIyNiwgMTk2LCAxLCAyNDAsIDE3NCwgMjI2LCAxOTYsIDEsIDIxNywgMTM0LCAyMjYsIDE5NiwgMSwgMTk0LCAKLSAgICAyMjYsIDE5NiwgMSwgMjA3LCAyNDQsIDIyNiwgMTk2LCAxLCAyNTAsIDIzMSwgMjI2LCAxOTYsIDEsIDI0MSwgOTIsIDIyNiwgCi0gICAgMTk2LCAxLCAyMjYsIDE5OSwgMjI2LCAxOTYsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NiwgMSwgMjQ3LCAxMjUsIDIyNiwgMTk2LCAKLSAgICAyMDgsIDgyLCA4MiwgMTI5LCAyMzYsIDI1MywgMSwgNjMsIDEyOSwgMjM2LCAyNTMsIDEsIDc0LCAxMjksIDIzNiwgMjUzLCAKLSAgICAxLCA3NSwgMTI5LCAyMzYsIDI1MywgMSwgNzgsIDEyOSwgMjM2LCAyNTMsIDEsIDE5OCwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjA0LCAxMTEsIDEyOSwgMjM2LCAyNTMsIDEsIDI0OSwgMzIsIDEyOSwgMjM2LCAyNTMsIDEsIDI0OSwgMzEsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDE4NSwgMTI5LCAyMzYsIDI1MywgMSwgMTkyLCAxMjksIDIzNiwgMjUzLCAxLCAyMDEsIDIwMSwgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMjIzLCAxMTAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjQwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDIzOSwgCi0gICAgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMjAsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjE5LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMjgsIDExMywgMTI5LCAyMzYsIDI1MywgMSwgMjI5LCAxNDQsIDEyOSwgMjM2LCAyNTMsIDEsIDIzNywgMTIsIDEyOSwgCi0gICAgMjM2LCAyNTMsIDEsIDIxNSwgMzYsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNSwgMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNCwgCi0gICAgMTc3LCAxMjksIDIzNiwgMjUzLCAxLCAxNzMsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNywgMTI2LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMTAsIDIyLCAxMjksIDIzNiwgMjUzLCAxLCAyMTAsIDIxLCAxMjksIDIzNiwgMjUzLCAxLCAyMDksIDE4NywgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMjA5LCAxODYsIDEyOSwgMjM2LCAyNTMsIDEsIDEzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ0LCAyMTIsIDEyOSwgCi0gICAgMjM2LCAyNTMsIDE2LCAyMDUsIDIyNCwgMTI5LCAyMzYsIDI1MywgMTYsIDIwNSwgMjIzLCAxMjksIDE5MSwgMSwgNjMsIAotICAgIDEyOSwgMTkxLCAxLCA3NCwgMTI5LCAxOTEsIDEsIDc1LCAxMjksIDE5MSwgMSwgNzgsIDEyOSwgMTkxLCAxLCAxOTgsIDEyOSwgCi0gICAgMTkxLCAxLCAyMDQsIDExMSwgMTI5LCAxOTEsIDEsIDI0OSwgMzIsIDEyOSwgMTkxLCAxLCAxODUsIDEyOSwgMTkxLCAxLCAKLSAgICAxOTIsIDEyOSwgMTkxLCAxLCAyMDEsIDIwMSwgMTI5LCAxOTEsIDEsIDIyMiwgMjQwLCAxMjksIDE5MSwgMSwgMjE2LCAyMjAsIAotICAgIDEyOSwgMTkxLCAxLCAyMjgsIDExMywgMTI5LCAxOTEsIDEsIDIyOSwgMTQ0LCAxMjksIDE5MSwgMSwgMjM3LCAxMiwgMTI5LCAKLSAgICAxOTEsIDEsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyNTAsIDEyNiwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDIxNCwgMTc3LCAKLSAgICAxMjksIDE5MSwgMSwgMTczLCAxMjksIDE5MSwgMSwgMjE3LCAxMjYsIDEyOSwgMTkxLCAxLCAyMTAsIDIyLCAxMjksIDE5MSwgCi0gICAgMSwgMjA5LCAxODcsIDEyOSwgMTkxLCAxLCAxMzUsIDEyOSwgMTkxLCAxLCAyNDQsIDIxMiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAKLSAgICAyNDEsIDExMywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTI5LCAxOTEsIDIyNywgMzYsIAotICAgIDIxNSwgMjMzLCAxMjksIDE5MSwgMjI3LCAzNiwgMjMxLCA1NiwgMTI5LCAxOTEsIDQyLCAxMDUsIDEyOSwgMTkxLCA0MiwgCi0gICAgMTA4LCAxMjksIDE5MSwgNDIsIDE0NywgMTI5LCAxOTEsIDQyLCAxNDksIDEyOSwgMTkxLCA0MiwgMTcwLCAxMjksIDE5MSwgCi0gICAgNDIsIDE5NSwgMTI5LCAxOTEsIDQyLCAyMTMsIDExMSwgMTI5LCAxOTEsIDQyLCAxOTksIDEyOSwgMTkxLCA0MiwgMjIyLCAKLSAgICA2MywgMTI5LCAxOTEsIDQyLCAyMDksIDE1MiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MSwgMTI5LCAxOTEsIDQyLCAyMDksIAotICAgIDUzLCAxMjksIDE5MSwgNDIsIDIzOSwgMTUzLCAxMjksIDE5MSwgNDIsIDI0MCwgMTgsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NCwgCi0gICAgMTI5LCAxOTEsIDQyLCAyMTMsIDEwNSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTIwLCAKLSAgICAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCi0gICAgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAxMjksIAotICAgIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAxMjksIDE5MSwgCi0gICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyMCwgMjA5LCAKLSAgICAzNiwgMTI5LCAxOTEsIDQyLCAxMjYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIwOSwgMzYsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKLSAgICAyMTMsIDExMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMjIsIAotICAgIDY0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwNywgMTUyLCAKLSAgICAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTQsIDIwOSwgMzYsIAotICAgIDEyOSwgMTkxLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDc1LCAyMDksIDM2LCAxMjksIDE5MSwgCi0gICAgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTM1LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAotICAgIDIyMiwgNTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAKLSAgICAxNDcsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMiwgMjA5LCAKLSAgICAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMjIsIDY0LCAyMzYsIAotICAgIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjA3LCAxNTcsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTIwLCAKLSAgICAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjYsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgCi0gICAgMTQ3LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIAotICAgIDEzOCwgMjEyLCA4OCwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjEzLCAxMTIsIDIwNywgMTU2LCAxMjksIDE5MSwgCi0gICAgMjM5LCAxMzgsIDI0MSwgMTQzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMjIsIDY0LCAyMDcsIDE1NiwgMTI5LCAKLSAgICAxOTEsIDIzOSwgMTM4LCAyMDksIDE1MywgMjA3LCAxNTYsIDIyOSwgMTMxLCAxLCA2MywgMjI5LCAxMzEsIDIyLCAyLCA3NSwgCi0gICAgMjI5LCAxMzEsIDIyLCAyLCA2OCwgMjI5LCAxMzEsIDIyLCAyLCAxMjUsIDE0NiwgMjI5LCAxMzEsIDIyLCAyLCA3NCwgMjI5LCAKLSAgICAxMzEsIDIyLCAyLCA3OCwgMjI5LCAxMzEsIDIyLCAyMjcsIDE5NiwgODIsIDIyOSwgMTMxLCAyLCA1MiwgMjE1LCAyNTMsIAotICAgIDU2LCAyMjksIDEzMSwgMiwgMjUwLCAxODAsIDIyOSwgMTMxLCAyLCAyMDUsIDE5OSwgMjI5LCAxMzEsIDEsIDE3MywgMjI5LCAKLSAgICAxMzEsIDEsIDIyOSwgMTQ0LCAyMjksIDEzMSwgMSwgMjM5LCA4LCAyMjksIDEzMSwgMSwgMjM4LCAxMTksIDIyOSwgMTMxLCAKLSAgICAxLCAyNDcsIDkyLCAyMjksIDEzMSwgMSwgMjQ2LCAxOTksIDIyOSwgMTMxLCAxLCAyMzAsIDE4MSwgMjI5LCAxMzEsIDEsIAotICAgIDIyMSwgMTEsIDIyOSwgMTMxLCAxLCAyMDcsIDI0MSwgMjI5LCAxMzEsIDEsIDIwNywgMjI5LCAyMjksIDEzMSwgMSwgMjQ0LCAKLSAgICAxMjAsIDIyOSwgMTMxLCAxLCAyNDQsIDEwNCwgMjI5LCAxMzEsIDEsIDIyMSwgMjI3LCAyMjksIDEzMSwgMSwgMjEwLCAyMiwgCi0gICAgMjI5LCAxMzEsIDEsIDIwOSwgMTA4LCAyMjksIDEzMSwgMSwgMjQ0LCAyMTIsIDIyOSwgMTMxLCAxLCAyNDQsIDEsIDIyOSwgCi0gICAgMTMxLCAxLCAyMDEsIDIwMSwgMjI5LCAxMzEsIDEsIDE4NSwgMjI5LCAxMzEsIDEsIDIxOCwgMjA4LCAyMjksIDEzMSwgMSwgCi0gICAgMjQ5LCAzMiwgMjI5LCAxMzEsIDEsIDI0OCwgOTgsIDIyOSwgMTMxLCAxLCAxOTIsIDIyOSwgMTMxLCAxLCAxOTgsIDIyOSwgCi0gICAgMTMxLCAxLCAyMTYsIDIyMCwgMjI5LCAxMzEsIDEsIDIyOCwgMTEzLCAyMjksIDEzMSwgMSwgMjA2LCA4NiwgMjI5LCAxMzEsIAotICAgIDEsIDIxMywgOTAsIDIyOSwgMTMxLCAxLCAyMTEsIDE2NCwgMjI5LCAxMzEsIDEsIDIxNSwgMzYsIDIyOSwgMTMxLCAxLCAKLSAgICAyMDIsIDExNiwgMjI5LCAxMzEsIDEsIDE1MiwgMjI5LCAxMzEsIDEsIDIyOSwgNDcsIDIyOSwgMTMxLCAxLCAyMDcsIDIwOSwgCi0gICAgMjI5LCAxMzEsIDIsIDI0OCwgMjMxLCA1NSwgMjI5LCAxMzEsIDIsIDI0NywgMTMsIDIyOSwgMTMxLCAyLCA3MCwgNTYsIAotICAgIDIyOSwgMTMxLCAyMDUsIDIwNCwgMjI5LCAxMzEsIDE3LCAxMDUsIDIyOSwgMTMxLCAxNywgMTA4LCAyMjksIDEzMSwgMTcsIAotICAgIDE0NywgMjI5LCAxMzEsIDE3LCAxNDksIDIyOSwgMTMxLCA0MiwgMjA5LCAxNTIsIDIyOSwgMTMxLCA0MiwgMjA3LCAxNTEsIAotICAgIDIyOSwgMTMxLCA0MiwgMTE4LCAyMzYsIDExLCAyMjksIDEzMSwgNDIsIDExOCwgMjA5LCAzNiwgMjI5LCAxMzEsIDIxNywgCi0gICAgMTc5LCAyNDMsIDg1LCAyMjksIDEzMSwgMjE3LCAxNzksIDUsIDI0NiwgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ2LCAKLSAgICA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNSwgMTE2LCAyMjksIAotICAgIDEzMSwgMjE3LCAxNzksIDIyNywgNSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAKLSAgICA1MiwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI3LCAxMDgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzNywgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOCwgMTksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzNywgMTksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyNCwgMjQ3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTcsIDY5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTIsIDI1NSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE2LCA5MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjQ4LCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMjAxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTQsIDIyNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAyNTAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIyMSwgNDAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMTI2LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTUsIDI2LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTQsIDI0OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjQwLCA2MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjUwLCAyLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM4LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQ0LCAxNzcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzOCwgMTA3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDEyOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjAyLCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwMiwgMjM1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDksIDczLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCA0MiwgCi0gICAgMjQwLCAxOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMTQxLCAyMzEsIDMxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAKLSAgICA0MywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOCwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIDE0OCwgMzgsIAotICAgIDE1MywgMjUwLCAxNDEsIDEsIDIyNSwgNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIxNywgMTE5LCAzOCwgMTUzLCAyNTAsIAotICAgIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTYsIDEyMiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0OCwgMTM4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxNjksIAotICAgIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE2LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjMwLCAyMiwgMzgsIDE1MywgCi0gICAgMjUwLCAxNDEsIDEsIDIyMSwgMTc4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI5LCAxNDAsIDM4LCAxNTMsIDI1MCwgMTQxLCAKLSAgICAxLCAyMTUsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MCwgNDcsIAotICAgIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCA1OSwgMzgsIDE1MywgCi0gICAgMjUwLCAxNDEsIDEsIDI0NCwgMjA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxODEsIDM4LCAxNTMsIDI1MCwgMTQxLCAKLSAgICAxLCAyNDQsIDE4NCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAKLSAgICAyNTEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDIsIDEwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTAwLCAzOCwgCi0gICAgMTUzLCAyNTAsIDE0MSwgMSwgMjAzLCA0NywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgODgsIDM4LCAxNTMsIDI1MCwgCi0gICAgMTQxLCAxLCAyMDIsIDExMCwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMjA5LCAKLSAgICAxNTIsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMjA3LCAxNTEsIDIyNSwgMTE1LCAxLCAyNTEsIDI4LCAyMjUsIDExNSwgMSwgCi0gICAgMjQ4LCAxMDUsIDIyNSwgMTE1LCAxLCAyNDgsIDkyLCAyMjUsIDExNSwgMSwgMjM4LCA2NywgMjI1LCAxMTUsIDEsIDIzOCwgCi0gICAgOTIsIDIyNSwgMTE1LCAxLCAyNDQsIDE3NywgMjI1LCAxMTUsIDEsIDIzNywgNjcsIDIyNSwgMTE1LCAxLCAyMDQsIDcwLCAKLSAgICAyMjUsIDExNSwgMiwgMjA3LCAyOSwgMjI1LCAxMTUsIDEsIDIwMiwgOTUsIDIyNSwgMTE1LCAxLCAyMDIsIDczLCAyMjUsIAotICAgIDExNSwgMSwgMjMwLCAxNjMsIDIyNSwgMTE1LCAxLCAyMzAsIDE0NSwgMjI1LCAxMTUsIDEsIDIzNywgMTksIDIyNSwgMTE1LCAKLSAgICAxLCAyMDksIDEyOCwgMjI1LCAxMTUsIDEsIDIwMiwgMjM1LCAyMjUsIDExNSwgMSwgMjI5LCAyNTAsIDIyNSwgMTE1LCAxLCAKLSAgICAyMDMsIDE3OSwgMjI1LCAxMTUsIDEsIDIyOSwgMTMzLCAyMjUsIDExNSwgMSwgMjI4LCAxOSwgMjI1LCAxMTUsIDEsIDI0MywgCi0gICAgMjUwLCAyMjUsIDExNSwgMSwgMjA5LCA5OSwgMjI1LCAxMTUsIDEsIDIyNCwgMjQ3LCAyMjUsIDExNSwgMSwgMjIxLCA0MCwgCi0gICAgMjI1LCAxMTUsIDEsIDIxNCwgMjQ5LCAyMjUsIDExNSwgMSwgMjUwLCAzLCAyMjUsIDExNSwgMSwgMjUxLCAyMzQsIDIyNSwgCi0gICAgMTE1LCAxLCAyMTksIDM0LCAyMjUsIDExNSwgMSwgMjQwLCA2MCwgMjI1LCAxMTUsIDEsIDIxNSwgMjYsIDIyNSwgMTE1LCAxLCAKLSAgICAyMTcsIDY5LCAyMjUsIDExNSwgMSwgMjAzLCAxNTcsIDIyNSwgMTE1LCAxLCAyMTcsIDk1LCAyMjUsIDExNSwgMSwgMjE2LCAKLSAgICA5MSwgMjI1LCAxMTUsIDEsIDIxMiwgMjU1LCAyMjUsIDExNSwgMSwgMjExLCAxMzMsIDIyNSwgMTE1LCAxLCAyMDksIDIwMSwgCi0gICAgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU1LCAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTYsIDIyNSwgMTE1LCA0MiwgCi0gICAgMTA1LCAyMjUsIDExNSwgNDIsIDE3MCwgMjI1LCAxMTUsIDQyLCAyMDksIDE1MiwgMjI1LCAxMTUsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjI1LCAxMTUsIDQyLCAxMTgsIDIzNiwgMTEsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjExLCA5NCwgMjI1LCAxMTUsIDIxNywgCi0gICAgMTc5LCAyMzksIDIxMiwgMjI1LCAxMTUsIDIxNywgMTc5LCA1MiwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIAotICAgIDIxNywgMTc5LCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgMjE3LCAxNzksIDI0MywgODUsIDIyNSwgMTE1LCAKLSAgICAyMTcsIDE3OSwgMTIwLCAyNDMsIDgzLCAyMjUsIDExNSwgMjE3LCAxNzksIDIyNywgMTE1LCAyNDAsIDcsIDI1MCwgMTQsIDEsIAotICAgIDYzLCAyNTAsIDE0LCAxLCAyNTIsIDI1LCAyNTAsIDE0LCAxLCAyNTAsIDE3OCwgMjUwLCAxNCwgMSwgMjUxLCAyNDAsIDI1MCwgCi0gICAgMTQsIDEsIDI1MCwgMjMxLCAyNTAsIDE0LCAxLCAyNTEsIDI0MSwgMjUwLCAxNCwgMSwgMjUxLCAxMDksIDI1MCwgMTQsIDEsIAotICAgIDI1MSwgMTA1LCAyNTAsIDE0LCAxLCA3NCwgMjUwLCAxNCwgMSwgMjQxLCAxNjEsIDI1MCwgMTQsIDEsIDc4LCAyNTAsIDE0LCAKLSAgICAxLCAyMjAsIDE4LCAyNTAsIDE0LCAxLCA3NSwgMjUwLCAxNCwgMSwgMjMxLCA4MywgMjUwLCAxNCwgMSwgNjgsIDI1MCwgMTQsIAotICAgIDEsIDIwNiwgMTc4LCAyNTAsIDE0LCAxLCAyMjksIDIwMSwgMjUwLCAxNCwgMSwgMjAzLCAxNzYsIDI1MCwgMTQsIDEsIDIwMywgCi0gICAgMTM4LCAyNTAsIDE0LCAxLCAyMDMsIDE0OCwgMjUwLCAxNCwgMSwgMjM4LCAxOTAsIDI1MCwgMTQsIDEsIDIzOCwgMTUwLCAKLSAgICAyNTAsIDE0LCAxLCAyMzgsIDEwNSwgMjUwLCAxNCwgMSwgMjQ2LCAyMzgsIDI1MCwgMTQsIDEsIDIzMCwgMTYxLCAyNTAsIAotICAgIDE0LCAxLCAyMDksIDE4NywgMjUwLCAxNCwgMSwgMjA5LCA5MiwgMjUwLCAxNCwgMSwgMjQ0LCA3NSwgMjUwLCAxNCwgMSwgCi0gICAgMjQzLCAyNDgsIDI1MCwgMTQsIDEsIDIwNywgMjM2LCAyNTAsIDE0LCAxLCAyMTksIDM0LCAyNTAsIDE0LCAxLCAyNDAsIDYwLCAKLSAgICAyNTAsIDE0LCAxLCAyNDgsIDE2MiwgMjUwLCAxNCwgMSwgMjQ4LCA5NCwgMjUwLCAxNCwgMSwgMjIyLCAxOTAsIDI1MCwgMTQsIAotICAgIDEsIDIyMiwgMTA2LCAyNTAsIDE0LCAxLCAyMjIsIDEwNywgMjUwLCAxNCwgMSwgMjIyLCAyNDAsIDI1MCwgMTQsIDEsIDIyMSwgCi0gICAgMSwgMjUwLCAxNCwgMSwgMjIxLCAyMjIsIDI1MCwgMTQsIDEsIDIyNSwgMjAsIDI1MCwgMTQsIDEsIDIzNiwgMTg2LCAyNTAsIAotICAgIDE0LCAxLCAyMDIsIDE2NiwgMjUwLCAxNCwgMSwgMjAzLCA1MiwgMjUwLCAxNCwgMSwgMjA2LCA1NSwgMjUwLCAxNCwgMSwgCi0gICAgMjE2LCAxNTgsIDI1MCwgMTQsIDEsIDIyNywgMjM0LCAyNTAsIDE0LCAxLCAyMTQsIDE3NywgMjUwLCAxNCwgMSwgMjAyLCAKLSAgICA5MiwgMjUwLCAxNCwgMSwgMjEzLCA0MywgMjUwLCAxNCwgMSwgMjAyLCA3MSwgMjUwLCAxNCwgMSwgMjEyLCAxNjksIDI1MCwgCi0gICAgMTQsIDEsIDIxMSwgMTM0LCAyNTAsIDE0LCAxLCAyMzcsIDY3LCAyNTAsIDE0LCAyNTEsIDE0NiwgODIsIDIwOCwgMjEzLCAKLSAgICAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgNSwgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIAotICAgIDIyOCwgOCwgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDIyOCwgOCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgCi0gICAgMjE3LCAxNzgsIDIyOCwgOCwgMTIwLCAyMTUsIDI1MCwgMTE1LCAxMTgsIDIxNSwgMjUzLCAyMTcsIDE3OCwgMjI4LCA4LCAKLSAgICAxMTgsIDIxNSwgMjUzLCAxMTUsIDEyMCwgMjE1LCAyNTAsIDIxNywgMTc4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyNTEsIAotICAgIDI4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM4LCA2NywgMjMxLCAxMCwgCi0gICAgMjE5LCA3MCwgMSwgMjQ0LCAxNzcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIAotICAgIDIwNCwgNzAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzNywgMTksIDIzMSwgCi0gICAgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMTI4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAKLSAgICA3MCwgMSwgMjI5LCAyNTAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyOCwgMTksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyNCwgCi0gICAgMjQ3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTQsIDI0OSwgMjMxLCAKLSAgICAxMCwgMjE5LCA3MCwgMSwgMjUwLCAzLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDcwLCAKLSAgICAxLCAyMTUsIDI2LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTcsIDY5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTYsIDkxLCAKLSAgICAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIAotICAgIDIxOSwgNzAsIDQyLCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxNDcsIAotICAgIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxNDksIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAKLSAgICA3MCwgNDIsIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDEwLCAyMTksIDcwLCAKLSAgICA0MiwgMTE4LCAyMDksIDM2LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAotICAgIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKLSAgICAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIzMSwgMTAsIAotICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM3LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIAotICAgIDEsIDIwOSwgMTI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjksIAotICAgIDI1MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOCwgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjMxLCAKLSAgICAxMCwgMjE5LCAxNDksIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjMxLCAxMCwgMjE5LCAKLSAgICAxNDksIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMTUsIDI2LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCi0gICAgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDUsIAotICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDE0NywgMjMxLCAxMCwgMjE5LCAKLSAgICAxNDksIDQyLCAxNDksIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAotICAgIDExOCwgMjA5LCAzNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0OCwgCi0gICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAotICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM3LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM3LCAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICAxLCAyMDIsIDIzNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjksIDI1MCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjgsIAotICAgIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyMSwgNDAsIDIxNywgCi0gICAgMjAzLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjE5LCAzNCwgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCAxLCAyMTUsIDI2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxMiwgMjU1LCAyMTcsIDIwMywgMjE5LCAKLSAgICAxNDksIDEsIDIwOSwgMjAxLCAyMTcsIDIwMywgMjE5LCAxNDksIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICAyMDcsIDE3NCwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIDIzOSwgMTQ3LCAxODcsIDMsIDI0NSwgMTMwLCAKLSAgICAyMTcsIDIwMywgMjE5LCAxNDksIDIzOSwgMTQ3LCAxODcsIDMsIDI0MywgODUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIAotICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTA4LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxNDcsIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgNDIsIDE0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMjA5LCAxNTIsIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgNDIsIDIwNywgMTUxLCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDYzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDYzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgCi0gICAgMTA5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA3NSwgMzgsIAotICAgIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA3NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAyMzIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAyMzIsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTA4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTA4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEyMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEyMiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MCwgMTgxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MCwgMTgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgMTAxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgMTA2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCAyMzEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDIyMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA3OCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDk3LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMjAsIDksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDIzNSwgMTY0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDE2OSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDE2OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCAxNDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCAxNDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIzMCwgMjI2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIzMCwgMjI2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMTksIDI0NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMTksIDI0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCAxNDQsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCAxNDQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTQsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDIxOSwgMjI0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDgsIDIxNSwgMzgsIDE0NSwgNiwgMSwgNjMsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI1MiwgMjUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcxLCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDI0MiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjksIDM4LCAxNDUsIDYsIDEsIDI0MSwgODksIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY2LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyMjYsIDM4LCAxNDUsIDYsIDEsIDc0LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDYsIDE3LCA3NCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjEsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTU0LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MywgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTQ3LCAzOCwgMTQ1LCA2LCAxLCA3NSwgMzgsIDE0NSwgNiwgMSwgMjMxLCA4MywgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMzIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTI5LCAzOCwgMTQ1LCA2LCAxLCAyNTEsIDQ3LCAzOCwgMTQ1LCA2LCAxLCAyMDYsIDIzMiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTA1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDEwMywgMzgsIDE0NSwgNiwgMSwgMjQxLCA5MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA1NiwgMzgsIDE0NSwgNiwgMSwgNzgsIAotICAgIDM4LCAxNDUsIDYsIDEsIDIyMCwgMTgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIAotICAgIDIxNSwgMTQxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAyMjAsIDcyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDQ2LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDEsIDk3LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDI4LCAzOCwgMTQ1LCA2LCAxLCAyMTIsIDIyOCwgMjQxLCAKLSAgICAyOCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNywgMzgsIDE0NSwgNiwgMSwgMjQwLCAyNTIsIDM4LCAxNDUsIDYsIDEsIDI0MCwgCi0gICAgMjUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDcwLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIzOSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxNjcsIDM4LCAxNDUsIDYsIDEsIDY4LCAzOCwgMTQ1LCA2LCAxLCAyMDYsIDE3OCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgCi0gICAgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjE1LCAxNDEsIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjI2LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDAsIDE4MSwgMzgsIDE0NSwgNiwgMSwgMjQwLCAxNzYsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNjksIDU0LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyMDYsIDE5MywgMzgsIDE0NSwgNSwgMSwgNjMsIDM4LCAxNDUsIDUsIDEsIDI1MiwgMjUsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDI0MSwgMTcxLCAzOCwgMTQ1LCA1LCAxLCAyNTAsIDI0MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjksIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgODksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjUwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDc0LCAzOCwgMTQ1LCA1LCAxLCAyNDYsIDE3LCA3NCwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjEsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTU0LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIAotICAgIDE1MywgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTQ3LCAzOCwgMTQ1LCA1LCAxLCA3NSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjMxLCA4MywgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTI5LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNTEsIDQ3LCAzOCwgMTQ1LCA1LCAxLCAyMDYsIDIzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjIsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTA1LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwMywgMzgsIDE0NSwgNSwgMSwgMjQxLCA5MiwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA1NiwgMzgsIDE0NSwgNSwgMSwgNzgsIDM4LCAxNDUsIDUsIDEsIDIyMCwgMTgsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDIyMiwgNzEsIDIyMCwgNzMsIDM4LCAxNDUsIDUsIDEsIDIxNSwgMTQxLCAyMjAsIDczLCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyMjAsIDcyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDQ2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDk3LCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyMTIsIDIyOCwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNywgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTIsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDcwLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIzOSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjcsIDM4LCAxNDUsIDUsIDEsIDY4LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyMDYsIDE3OCwgMzgsIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjE1LCAKLSAgICAxNDEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDE4MSwgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjQwLCAxNzYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNjksIDU0LCAzOCwgMTQ1LCA1LCAxLCAyMDYsIDE5MywgMzgsIAotICAgIDE0NSwgNDIsIDEwNSwgMzgsIDE0NSwgNDIsIDE3MCwgMzgsIDE0NSwgNDIsIDIwOSwgMTUyLCAzOCwgMTQ1LCA0MiwgMjQwLCAKLSAgICAxOCwgMzgsIDE0NSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDE0NSwgNDIsIDExOCwgMjA5LCAzNiwgMjE1LCAxMjksIDE3LCAKLSAgICAxMDUsIDIxNSwgMTI5LCAxNywgMTA4LCAyMTUsIDEyOSwgMTcsIDE0NywgMjE1LCAxMjksIDE3LCAxNDksIDIxNSwgMTI5LCAKLSAgICAxNywgMTcwLCAyMTUsIDEyOSwgMTcsIDE5NSwgMjE1LCAxMjksIDE3LCAyMTMsIDExMSwgMjE1LCAxMjksIDE3LCAxOTksIAotICAgIDIxNSwgMTI5LCAxNywgMjIyLCA2MywgMjE1LCAxMjksIDQyLCAyMDksIDE1MiwgMjE1LCAxMjksIDQyLCAyMDcsIDE1MSwgCi0gICAgMjE1LCAxMjksIDQyLCAyMDksIDUzLCAyMTUsIDEyOSwgNDIsIDIzOSwgMTUzLCAyMTUsIDEyOSwgNDIsIDI0MCwgMTgsIAotICAgIDIxNSwgMTI5LCA0MiwgMjEyLCA3NCwgMjE1LCAxMjksIDQyLCAyMTMsIDEwNSwgMjE1LCAxMjksIDQyLCAyNDEsIDEzNCwgCi0gICAgMjE1LCAxMjksIDQyLCAyMjIsIDU4LCAyMTUsIDEyOSwgNDIsIDExOCwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjAsIAotICAgIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTI2LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKLSAgICAyMTUsIDEyOSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDIxNSwgCi0gICAgMTI5LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDIxNSwgMTI5LCAKLSAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjE1LCAxMjksIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAyMTUsIDEyOSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjE3LCA1NSwgMjE1LCAxMjksIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIxNSwgMTI5LCAyMzksIDEzOCwgCi0gICAgMTIwLCAyMDksIDU3LCAxNDQsIDIsIDI0NywgNTIsIDE0NCwgMiwgMjUwLCAxODAsIDE0NCwgMiwgMjA1LCAxOTksIDE0NCwgCi0gICAgMiwgMjMwLCAxMzUsIDE0NCwgMiwgMjA2LCAyMjIsIDE0NCwgMSwgNjMsIDE0NCwgMSwgMjUyLCAyNSwgMTQ0LCAxLCA3NSwgCi0gICAgMTQ0LCAxLCAyMzEsIDgzLCAxNDQsIDEsIDY4LCAxNDQsIDEsIDIwNiwgMTc4LCAxNDQsIDEsIDEyNSwgMTQ2LCAxNDQsIDEsIAotICAgIDEyNSwgMjE1LCAxODYsIDE0NCwgMSwgMTI1LCAxNTksIDE0NCwgMSwgMTI1LCAyMjcsIDc4LCAxNDQsIDEsIDc0LCAxNDQsIAotICAgIDEsIDI1MSwgNjQsIDE0NCwgMSwgNzgsIDE0NCwgMSwgMjUwLCAzNCwgMTQ0LCAxLCAxNzMsIDE0NCwgMSwgMjI5LCAxNDQsIAotICAgIDE0NCwgMSwgMjM5LCA4LCAxNDQsIDEsIDIzOCwgMTE5LCAxNDQsIDEsIDIyMiwgMjAzLCAxNDQsIDEsIDI0NywgOTIsIDE0NCwgCi0gICAgMSwgMjQ2LCAxOTksIDE0NCwgMSwgMjMwLCAxODEsIDE0NCwgMSwgMjMwLCAxNDksIDE0NCwgMSwgMjIxLCAxMSwgMTQ0LCAxLCAKLSAgICAyMDcsIDI0MSwgMTQ0LCAxLCAyMDcsIDIyOSwgMTQ0LCAxLCAyNDQsIDEyMCwgMTQ0LCAxLCAyNDQsIDEwNCwgMTQ0LCAxLCAKLSAgICAyMjEsIDIyNywgMTQ0LCAxLCAyMTAsIDIyLCAxNDQsIDEsIDIwOSwgMTA4LCAxNDQsIDEsIDI0NCwgMjEyLCAxNDQsIDEsIAotICAgIDI0NCwgMSwgMTQ0LCAxLCAyMDEsIDIwMSwgMTQ0LCAxLCAxODUsIDE0NCwgMSwgMjE4LCAyMDgsIDE0NCwgMSwgMjQ5LCAzMiwgCi0gICAgMTQ0LCAxLCAyNDgsIDk4LCAxNDQsIDEsIDE5MiwgMTQ0LCAxLCAxOTgsIDE0NCwgMSwgMjE2LCAyMjAsIDE0NCwgMSwgMjI4LCAKLSAgICAxMTMsIDE0NCwgMSwgMjA2LCA4NiwgMTQ0LCAxLCAyMTMsIDkwLCAxNDQsIDEsIDIxMSwgMTY0LCAxNDQsIDEsIDIxNSwgMzYsIAotICAgIDE0NCwgMSwgMTUyLCAxNDQsIDEsIDIyNywgNzcsIDE0NCwgMSwgMzgsIDQ0LCAyMjcsIDY4LCAxNDQsIDEsIDM4LCA0NCwgCi0gICAgMjE1LCAxODUsIDE0NCwgMSwgMzgsIDQ0LCAyMjEsIDIwOSwgMTQ0LCAyMiwgMiwgMjUyLCAyNSwgMTQ0LCAyMiwgMiwgMjQ4LCAKLSAgICA5NSwgMjUyLCAyNSwgMTQ0LCAyMiwgMiwgNzUsIDE0NCwgMjIsIDIsIDIzMSwgODMsIDE0NCwgMjIsIDIsIDY4LCAxNDQsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMTQ0LCAyMiwgMiwgMTI1LCAxNDYsIDE0NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE0NCwgCi0gICAgMjIsIDIsIDEyNSwgMTU5LCAxNDQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE0NCwgMjIsIDIsIDc0LCAxNDQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAxNDQsIDIyLCAyLCA3OCwgMTQ0LCAyMiwgMiwgMjUwLCAzNCwgMTQ0LCAyMDUsIDIwNCwgMTQ0LCAyNDQsIAotICAgIDE2NiwgMTQ0LCA1MiwgMjQ0LCAxNjYsIDE0NCwgMjE3LCAxNzksIDI0MywgODUsIDE0NCwgMjE3LCAxNzksIDUyLCAyNDMsIAotICAgIDg1LCAxNDQsIDIxNywgMTc5LCAyMjcsIDExNCwgMTQ0LCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMTQ0LCAyMTcsIDE3OSwgCi0gICAgMjI3LCA1LCAxNDQsIDQyLCAxMDUsIDE0NCwgNDIsIDEwOCwgMTQ0LCA0MiwgMTQ3LCAxNDQsIDQyLCAxNDksIDE0NCwgNDIsIAotICAgIDE3MCwgMTQ0LCA0MiwgMTk1LCAxNDQsIDQyLCAyMTMsIDExMSwgMTQ0LCA0MiwgMTk5LCAxNDQsIDQyLCAyMjIsIDYzLCAKLSAgICAxNDQsIDQyLCAyMDksIDE1MiwgMTQ0LCA0MiwgMjA3LCAxNTEsIDE0NCwgNDIsIDIwOSwgNTMsIDE0NCwgNDIsIDIzOSwgCi0gICAgMTUzLCAxNDQsIDQyLCAyNDAsIDE4LCAxNDQsIDQyLCAyMTIsIDc0LCAxNDQsIDQyLCAyMTMsIDEwNSwgMTQ0LCA0MiwgMjQxLCAKLSAgICAxMzQsIDE0NCwgNDIsIDIyMiwgNTgsIDE0NCwgNDIsIDExOCwgMjM2LCAxMSwgMTQ0LCA0MiwgMTE4LCAyMDksIDM2LCAxNDQsIAotICAgIDE3LCAyMDIsIDg0LCAxNDQsIDE3LCAxMDUsIDE0NCwgMTcsIDEwOCwgMTQ0LCAxNywgMTQ3LCAxNDQsIDE3LCAxNDksIDE0NCwgCi0gICAgMTcsIDE3MCwgMTQ0LCAxNywgMTk1LCAxNDQsIDE3LCAyMTMsIDExMSwgMTQ0LCAxNywgMTk5LCAxNDQsIDE3LCAyMjIsIDYzLCAKLSAgICAxNDQsIDQyLCAyMzAsIDk2LCAyMzAsIDE1LCAyLCAyNDcsIDUyLCAyMzAsIDE1LCAyLCAyNTAsIDE4MCwgMjMwLCAxNSwgMiwgCi0gICAgMjA1LCAxOTksIDIzMCwgMTUsIDEsIDYzLCAyMzAsIDE1LCAxLCAyNTIsIDI1LCAyMzAsIDE1LCAxLCA3NSwgMjMwLCAxNSwgCi0gICAgMSwgMjMxLCA4MywgMjMwLCAxNSwgMSwgNjgsIDIzMCwgMTUsIDEsIDIwNiwgMTc4LCAyMzAsIDE1LCAxLCA3NCwgMjMwLCAKLSAgICAxNSwgMSwgMjUxLCA2NCwgMjMwLCAxNSwgMSwgNzgsIDIzMCwgMTUsIDEsIDI1MCwgMzQsIDIzMCwgMTUsIDEsIDE3MywgCi0gICAgMjMwLCAxNSwgMSwgMjI5LCAxNDQsIDIzMCwgMTUsIDEsIDIzOSwgOCwgMjMwLCAxNSwgMSwgMjM4LCAxMTksIDIzMCwgMTUsIAotICAgIDEsIDIyMiwgMjAzLCAyMzAsIDE1LCAxLCAyNDcsIDkyLCAyMzAsIDE1LCAxLCAyNDYsIDE5OSwgMjMwLCAxNSwgMSwgMjMwLCAKLSAgICAxODEsIDIzMCwgMTUsIDEsIDIzMCwgMTQ5LCAyMzAsIDE1LCAxLCAyMjEsIDExLCAyMzAsIDE1LCAxLCAyMDcsIDI0MSwgCi0gICAgMjMwLCAxNSwgMSwgMjA3LCAyMjksIDIzMCwgMTUsIDEsIDI0NCwgMTIwLCAyMzAsIDE1LCAxLCAyNDQsIDEwOSwgMjMwLCAKLSAgICAxNSwgMSwgMjQ0LCAxMDQsIDIzMCwgMTUsIDEsIDIxNiwgNjEsIDIzMCwgMTUsIDEsIDIyMSwgMjI3LCAyMzAsIDE1LCAxLCAKLSAgICAyMTAsIDIyLCAyMzAsIDE1LCAxLCAyMDksIDEwOCwgMjMwLCAxNSwgMSwgMjQ0LCAyMTIsIDIzMCwgMTUsIDEsIDI0NCwgMSwgCi0gICAgMjMwLCAxNSwgMSwgMjAxLCAyMDEsIDIzMCwgMTUsIDEsIDE4NSwgMjMwLCAxNSwgMSwgMjE4LCAyMDgsIDIzMCwgMTUsIDEsIAotICAgIDI0OSwgMzIsIDIzMCwgMTUsIDEsIDI0OCwgOTgsIDIzMCwgMTUsIDEsIDE5MiwgMjMwLCAxNSwgMSwgMTk4LCAyMzAsIDE1LCAKLSAgICAxLCAyMTYsIDIyMCwgMjMwLCAxNSwgMSwgMjI4LCAxMTMsIDIzMCwgMTUsIDEsIDIwNiwgODYsIDIzMCwgMTUsIDEsIDIxMywgCi0gICAgOTAsIDIzMCwgMTUsIDEsIDIxMSwgMTY0LCAyMzAsIDE1LCAxLCAyMTUsIDM2LCAyMzAsIDE1LCAxLCAxNTIsIDIzMCwgMTUsIAotICAgIDIyLCAyLCAyNTIsIDI1LCAyMzAsIDE1LCAyMiwgMiwgNzUsIDIzMCwgMTUsIDIyLCAyLCAyMzEsIDgzLCAyMzAsIDE1LCAyMiwgCi0gICAgMiwgNjgsIDIzMCwgMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjMwLCAxNSwgMjIsIDIsIDc0LCAyMzAsIDE1LCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMjMwLCAxNSwgMjIsIDIsIDc4LCAyMzAsIDE1LCAyMiwgMiwgMjUwLCAzNCwgMjMwLCAxNSwgMiwgMjA1LCAyMDQsIAotICAgIDIzMCwgMTUsIDIsIDIyMSwgNTEsIDIzMCwgMTUsIDI1MSwgMTQ2LCA1NCwgMjMwLCAxNSwgMjQxLCA1OSwgNTQsIDIzMCwgCi0gICAgMTUsIDQyLCA1NCwgMjMwLCAxNSwgMjE0LCAxNjgsIDgyLCAyMzAsIDE1LCA1MiwgMjE0LCAxNjgsIDgyLCAyMzAsIDE1LCAKLSAgICAyNDQsIDE2NiwgMjMwLCAxNSwgNTIsIDI0NCwgMTY2LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNSwgMTksIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA5LCAyNTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQ5LCA1LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDI0NywgODEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQ0LCAxOTMsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCi0gICAgMjM4LCAyNDksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIyLCAKLSAgICAyMDAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI4LCA4OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjMsIDkzLCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNiwgODIsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE5LCAxNTAsIDIxMSwgMjQ2LCAKLSAgICAyMTEsIDI1NCwgMSwgMjAzLCA5MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTYsIDE5OSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyMzcsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzAsIDIwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAotICAgIDIzMCwgMTc1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMSwgOCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNTEsIDczLCAKLSAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0MSwgMTU5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMSwgODQsIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA3LCAxOCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjAsIDYwLCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDI0MSwgMTQ3LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTYxLCAyMTEsIDI0NiwgMjExLCAyNTQsIAotICAgIDE3LCAyMDIsIDg0LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwOCwgCi0gICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ3LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDksIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMTcsIDE3MCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTk1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAyMTMsIAotICAgIDExMSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTk5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAyMjIsIDYzLCAyNDYsIAotICAgIDE5MywgMiwgMjQ3LCA1MiwgMjQ2LCAxOTMsIDIsIDI1MCwgMTgwLCAyNDYsIDE5MywgMiwgMjA1LCAxOTksIDI0NiwgMTkzLCAKLSAgICAxLCAyNTIsIDI1LCAyNDYsIDE5MywgMSwgNzUsIDI0NiwgMTkzLCAxLCA2OCwgMjQ2LCAxOTMsIDEsIDc0LCAyNDYsIDE5MywgCi0gICAgMSwgMjMwLCA0MSwgMjQ2LCAxOTMsIDEsIDIyOSwgMTQzLCAyNDYsIDE5MywgMSwgMjM5LCA1LCAyNDYsIDE5MywgMSwgMjM4LCAKLSAgICAxMTgsIDI0NiwgMTkzLCAxLCAyMjIsIDIwMiwgMjQ2LCAxOTMsIDEsIDI0NywgOTEsIDI0NiwgMTkzLCAxLCAyNDYsIDE5OCwgCi0gICAgMjQ2LCAxOTMsIDEsIDIzMCwgMTgwLCAyNDYsIDE5MywgMSwgMjMwLCAxNDgsIDI0NiwgMTkzLCAxLCAyMjEsIDEwLCAyNDYsIAotICAgIDE5MywgMSwgMjA3LCAyNDAsIDI0NiwgMTkzLCAxLCAyMDcsIDIyOCwgMjQ2LCAxOTMsIDEsIDI0NCwgMTE5LCAyNDYsIDE5MywgCi0gICAgMSwgMjQ0LCAxMDMsIDI0NiwgMTkzLCAxLCAyMjEsIDIyNiwgMjQ2LCAxOTMsIDEsIDIxMCwgMTgsIDI0NiwgMTkzLCAxLCAKLSAgICAyMDksIDEwNywgMjQ2LCAxOTMsIDEsIDI0NCwgMjExLCAyNDYsIDE5MywgMSwgMjQ0LCAwLCAyNDYsIDE5MywgMSwgMjIzLCAKLSAgICAxMDYsIDI0NiwgMTkzLCAxLCAyMTksIDE2OCwgMjQ2LCAxOTMsIDEsIDIxOCwgMjA3LCAyNDYsIDE5MywgMSwgMjQ5LCAzMCwgCi0gICAgMjQ2LCAxOTMsIDEsIDI0OCwgOTcsIDI0NiwgMTkzLCAxLCAyMjUsIDE3NSwgMjQ2LCAxOTMsIDEsIDIwMiwgMTY3LCAyNDYsIAotICAgIDE5MywgMSwgMjAzLCAxMTAsIDI0NiwgMTkzLCAxLCAyMTYsIDIxNiwgMjQ2LCAxOTMsIDEsIDIyOCwgMTEyLCAyNDYsIDE5MywgCi0gICAgMSwgMjA0LCAxMTAsIDI0NiwgMTkzLCAxLCAyMTUsIDMzLCAyNDYsIDE5MywgMSwgMjM3LCAxNTcsIDI0NiwgMTkzLCAyMiwgCi0gICAgMiwgNjMsIDI0NiwgMTkzLCAyMiwgMiwgNzUsIDI0NiwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTMsIDIyLCAyLCAKLSAgICA2OCwgMjQ2LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMjQ2LCAxOTMsIDIyLCAyLCA3NCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAyNDYsIDE5MywgMjIsIDIsIDc4LCAyNDYsIDE5MywgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkzLCAyMiwgMiwgMjIwLCAKLSAgICA1NywgMjQ2LCAxOTMsIDE1OCwgODIsIDI0NiwgMTkzLCAyNTAsIDM1LCA4MiwgMjQ2LCAxOTMsIDIwNSwgMjA0LCAyNDYsIAotICAgIDE5MywgMjI1LCAxNzMsIDI0NiwgMTkzLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTMsIDE3LCAxMDUsIDI0NiwgMTkzLCAxNywgCi0gICAgMTA4LCAyNDYsIDE5MywgMTcsIDE0NywgMjQ2LCAxOTMsIDE3LCAxNDksIDI0NiwgMTkzLCAxNywgMTcwLCAyNDYsIDE5MywgCi0gICAgMTcsIDE5NSwgMjQ2LCAxOTMsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTMsIDE3LCAxOTksIDI0NiwgMTkzLCAxNywgMjIyLCAKLSAgICA2MywgMjQ2LCAxOTMsIDIxNCwgMTY4LCA4MiwgMjQ2LCAxOTMsIDI0NCwgMTY2LCAyNDYsIDE5MywgNTIsIDI0NCwgMTY2LCAKLSAgICAyNDYsIDE5MywgMjE3LCA0NywgODIsIDIyNSwgMTQ2LCAxLCA2MywgMjI1LCAxNDYsIDEsIDc1LCAyMjUsIDE0NiwgMSwgNjgsIAotICAgIDIyNSwgMTQ2LCAxLCA3NCwgMjI1LCAxNDYsIDEsIDc4LCAyMjUsIDE0NiwgMSwgMTczLCAyMjUsIDE0NiwgMSwgMjI5LCAKLSAgICAxNDQsIDIyNSwgMTQ2LCAxLCAyMzksIDgsIDIyNSwgMTQ2LCAxLCAyMzgsIDExOSwgMjI1LCAxNDYsIDEsIDI0NywgOTIsIAotICAgIDIyNSwgMTQ2LCAxLCAyNDYsIDE5OSwgMjI1LCAxNDYsIDEsIDIzMCwgMTgxLCAyMjUsIDE0NiwgMSwgMjMwLCAxNDksIDIyNSwgCi0gICAgMTQ2LCAxLCAyMjEsIDExLCAyMjUsIDE0NiwgMSwgMjA3LCAyNDEsIDIyNSwgMTQ2LCAxLCAyMDcsIDIyOSwgMjI1LCAxNDYsIAotICAgIDEsIDI0NCwgMTIwLCAyMjUsIDE0NiwgMSwgMjQ0LCAxMDQsIDIyNSwgMTQ2LCAxLCAyMjEsIDIyNywgMjI1LCAxNDYsIDEsIAotICAgIDIxMCwgMjIsIDIyNSwgMTQ2LCAxLCAyMDksIDEwOCwgMjI1LCAxNDYsIDEsIDI0NCwgMjEyLCAyMjUsIDE0NiwgMSwgMjQ0LCAKLSAgICAxLCAyMjUsIDE0NiwgMSwgMjAxLCAyMDEsIDIyNSwgMTQ2LCAxLCAxODUsIDIyNSwgMTQ2LCAxLCAyMTgsIDIwOCwgMjI1LCAKLSAgICAxNDYsIDEsIDI0OSwgMzIsIDIyNSwgMTQ2LCAxLCAyNDgsIDk4LCAyMjUsIDE0NiwgMSwgMTkyLCAyMjUsIDE0NiwgMSwgCi0gICAgMjE2LCAyMjAsIDIyNSwgMTQ2LCAxLCAyMjgsIDExMywgMjI1LCAxNDYsIDEsIDIwNiwgODYsIDIyNSwgMTQ2LCAxLCAyMTUsIAotICAgIDM2LCAyMjUsIDE0NiwgMSwgMTUyLCAyMjUsIDE0NiwgMSwgMjE1LCAxODUsIDIyNSwgMTQ2LCAyLCAyMjEsIDUxLCAyMjUsIAotICAgIDE0NiwgMjUxLCAxNDYsIDU0LCAyMjUsIDE0NiwgMjE0LCAxNjgsIDgyLCAyMjUsIDE0NiwgMzIsIDIxMiwgMjA2LCAxODEsIAotICAgIDIsIDI0NywgNTIsIDE4MSwgMiwgMjUwLCAxODAsIDE4MSwgMiwgMjA1LCAxOTksIDE4MSwgMSwgNjMsIDE4MSwgMSwgMjUyLCAKLSAgICAyNSwgMTgxLCAxLCA3NSwgMTgxLCAxLCAyMzEsIDgzLCAxODEsIDEsIDY4LCAxODEsIDEsIDIwNiwgMTc4LCAxODEsIDEsIAotICAgIDEyNSwgMTQ2LCAxODEsIDEsIDEyNSwgMjE1LCAxODYsIDE4MSwgMSwgMTI1LCAxNTksIDE4MSwgMSwgMTI1LCAyMjcsIDc4LCAKLSAgICAxODEsIDEsIDc0LCAxODEsIDEsIDI1MSwgNjQsIDE4MSwgMSwgNzgsIDE4MSwgMSwgMjUwLCAzNCwgMTgxLCAxLCAxNzMsIAotICAgIDE4MSwgMSwgMjI5LCAxNDQsIDE4MSwgMSwgMjM5LCA4LCAxODEsIDEsIDIzOCwgMTE5LCAxODEsIDEsIDIyMiwgMjAzLCAKLSAgICAxODEsIDEsIDI0NywgOTIsIDE4MSwgMSwgMjQ2LCAxOTksIDE4MSwgMSwgMjMwLCAxODEsIDE4MSwgMSwgMjMwLCAxNDksIAotICAgIDE4MSwgMSwgMjIxLCAxMSwgMTgxLCAxLCAyMDcsIDI0MSwgMTgxLCAxLCAyMDcsIDIyOSwgMTgxLCAxLCAyNDQsIDEyMCwgCi0gICAgMTgxLCAxLCAyNDQsIDEwNCwgMTgxLCAxLCAyMjEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAxODEsIDEsIDIwOSwgMTA4LCAKLSAgICAxODEsIDEsIDI0NCwgMjEyLCAxODEsIDEsIDI0NCwgMSwgMTgxLCAxLCAyMDEsIDIwMSwgMTgxLCAxLCAxODUsIDE4MSwgMSwgCi0gICAgMjE4LCAyMDgsIDE4MSwgMSwgMjQ5LCAzMiwgMTgxLCAxLCAyNDgsIDk4LCAxODEsIDEsIDE5MiwgMTgxLCAxLCAxOTgsIAotICAgIDE4MSwgMSwgMjE2LCAyMjAsIDE4MSwgMSwgMjI4LCAxMTMsIDE4MSwgMSwgMjI3LCA3NywgMTgxLCAxLCAyMDYsIDg2LCAKLSAgICAxODEsIDEsIDIxMywgOTAsIDE4MSwgMSwgMjExLCAxNjQsIDE4MSwgMSwgMjE1LCAzNiwgMTgxLCAxLCAxNTIsIDE4MSwgMjIsIAotICAgIDIsIDI1MiwgMjUsIDE4MSwgMjIsIDIsIDc1LCAxODEsIDIyLCAyLCAyMzEsIDgzLCAxODEsIDIyLCAyLCA2OCwgMTgxLCAyMiwgCi0gICAgMiwgMjA2LCAxNzgsIDE4MSwgMjIsIDIsIDEyNSwgMTQ2LCAxODEsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxODEsIDIyLCAyLCAKLSAgICAxMjUsIDE1OSwgMTgxLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxODEsIDIyLCAyLCA3NCwgMTgxLCAyMiwgMiwgMjUxLCA2NCwgCi0gICAgMTgxLCAyMiwgMiwgNzgsIDE4MSwgMjIsIDIsIDI1MCwgMzQsIDE4MSwgMiwgMjA1LCAyMDQsIDE4MSwgMiwgMjUwLCAxNywgCi0gICAgMTgxLCAyLCAyMzAsIDEzNSwgMTgxLCAyLCAyMDYsIDIyMiwgMTgxLCAyMjAsIDM5LCAxODEsIDI0NCwgMTY2LCAxODEsIDUyLCAKLSAgICAyNDQsIDE2NiwgMTgxLCAyNTEsIDE0NiwgNTQsIDE4MSwgMjEzLCAxMzAsIDE4MSwgMjE0LCAyMzksIDgyLCAxODEsIDIsIAotICAgIDIyMSwgNTEsIDE4MSwgMjIsIDY1LCA4MiwgMTgxLCAyNDAsIDE5OSwgMjEyLCAyMjgsIDIyLCA4MiwgMTgxLCAyMTAsIDE4MCwgCi0gICAgODIsIDE4MSwgMTcsIDIwMiwgODQsIDE4MSwgMTcsIDEwNSwgMTgxLCAxNywgMTA4LCAxODEsIDE3LCAxNDcsIDE4MSwgMTcsIAotICAgIDE0OSwgMTgxLCAxNywgMTcwLCAxODEsIDE3LCAxOTUsIDE4MSwgMTcsIDIxMywgMTExLCAxODEsIDE3LCAxOTksIDE4MSwgCi0gICAgMTcsIDIyMiwgNjMsIDE4MSwgMjQxLCAxMjgsIDE4MSwgMiwgMjEyLCAxNTcsIDE4MSwgMjM3LCA1OCwgMTgxLCAyNDUsIAotICAgIDE5MSwgNTQsIDE4MSwgMjE0LCAxNjgsIDIyNSwgOTIsIDE4MSwgMjE0LCAxNjgsIDIyNSwgOTEsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAxMDUsIDE0MCwgMjUwLCAxMjYsIDE3LCAxMDgsIDE0MCwgMjUwLCAxMjYsIDE3LCAxNDcsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAxNDksIDE0MCwgMjUwLCAxMjYsIDE3LCAxNzAsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTUsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAyMTMsIDExMSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDIyMiwgNjMsIDE0MCwgCi0gICAgMjUwLCAxMjYsIDQyLCAyMDksIDE1MiwgMTQwLCAyNTAsIDEyNiwgNDIsIDIwNywgMTUxLCAxNDAsIDI1MCwgMTI2LCA0MiwgCi0gICAgMjA5LCA1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDIzOSwgMTUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjQwLCAxOCwgMTQwLCAKLSAgICAyNTAsIDEyNiwgNDIsIDIxMiwgNzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMTMsIDEwNSwgMTQwLCAyNTAsIDEyNiwgNDIsIAotICAgIDI0MSwgMTM0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjIyLCA1OCwgMTQwLCAyNTAsIDEyNiwgNDIsIDExOCwgMjM2LCAxMSwgCi0gICAgMTQwLCAyNTAsIDEyNiwgNDIsIDExOCwgMjA5LCAzNiwgMjI5LCAxMTQsIDEsIDYzLCAyMjksIDExNCwgMSwgMjUyLCAyNSwgCi0gICAgMjI5LCAxMTQsIDEsIDc1LCAyMjksIDExNCwgMSwgNjgsIDIyOSwgMTE0LCAxLCA3NCwgMjI5LCAxMTQsIDEsIDI1MSwgNjQsIAotICAgIDIyOSwgMTE0LCAxLCA3OCwgMjI5LCAxMTQsIDEsIDI1MCwgMzQsIDIyOSwgMTE0LCAxLCAxNzMsIDIyOSwgMTE0LCAxLCAKLSAgICAyMjksIDE0NCwgMjI5LCAxMTQsIDEsIDIzOSwgOCwgMjI5LCAxMTQsIDEsIDIzOCwgMTU1LCAyMjksIDExNCwgMSwgMjM4LCAKLSAgICAxMTksIDIyOSwgMTE0LCAxLCAyMjIsIDIwMywgMjI5LCAxMTQsIDEsIDI0NywgOTIsIDIyOSwgMTE0LCAxLCAyNDYsIDE5OSwgCi0gICAgMjI5LCAxMTQsIDEsIDIzMCwgMTgxLCAyMjksIDExNCwgMSwgMjMwLCAxMjksIDIyOSwgMTE0LCAxLCAyMjEsIDExLCAyMjksIAotICAgIDExNCwgMSwgMjA3LCAyNDEsIDIyOSwgMTE0LCAxLCAyMDcsIDIyOSwgMjI5LCAxMTQsIDEsIDI0NCwgMTIwLCAyMjksIDExNCwgCi0gICAgMSwgMjQ0LCAxMDQsIDIyOSwgMTE0LCAxLCAyMjEsIDIyNywgMjI5LCAxMTQsIDEsIDIxMCwgMjIsIDIyOSwgMTE0LCAxLCAKLSAgICAyMDksIDEwOCwgMjI5LCAxMTQsIDEsIDI0NCwgMjEyLCAyMjksIDExNCwgMSwgMjQ0LCAxMTAsIDIyOSwgMTE0LCAxLCAyNDQsIAotICAgIDEsIDIyOSwgMTE0LCAxLCAyMDEsIDIwMSwgMjI5LCAxMTQsIDEsIDE4NSwgMjI5LCAxMTQsIDEsIDIxOCwgMjA4LCAyMjksIAotICAgIDExNCwgMSwgMjQ5LCAzMiwgMjI5LCAxMTQsIDEsIDI0OCwgMTk4LCAyMjksIDExNCwgMSwgMjQ4LCA5OCwgMjI5LCAxMTQsIAotICAgIDEsIDE5MiwgMjI5LCAxMTQsIDEsIDE5OCwgMjI5LCAxMTQsIDEsIDIxNiwgMjIwLCAyMjksIDExNCwgMSwgMjI4LCAxMTMsIAotICAgIDIyOSwgMTE0LCAxLCAyMDYsIDg2LCAyMjksIDExNCwgMSwgMjE1LCAzNiwgMjI5LCAxMTQsIDEsIDE1MiwgMjI5LCAxMTQsIAotICAgIDEsIDIyNywgNzcsIDIyOSwgMTE0LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAxMTQsIDIyLCAyLCA3NSwgMjI5LCAxMTQsIDIyLCAKLSAgICAyLCAyMzEsIDgzLCAyMjksIDExNCwgMjIsIDIsIDY4LCAyMjksIDExNCwgMjIsIDIsIDc0LCAyMjksIDExNCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyOSwgMTE0LCAyMiwgMiwgNzgsIDIyOSwgMTE0LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMTQsIDIsIDI1MCwgCi0gICAgMTgwLCAyMjksIDExNCwgMiwgMjA1LCAyMDQsIDIyOSwgMTE0LCAyLCAyMjEsIDUxLCAyMjksIDExNCwgMiwgMjEzLCA4MCwgCi0gICAgMjI5LCAxMTQsIDI0NCwgMTY2LCAyMjksIDExNCwgNTIsIDI0NCwgMTY2LCAyMjksIDExNCwgMjAzLCAyMzgsIDIxMywgMTMwLCAKLSAgICAyMjksIDExNCwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgNTIsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDI1MSwgMTQ2LCAKLSAgICA1NCwgMjIzLCAyMzAsIDEsIDYzLCAyMjMsIDIzMCwgMSwgNzUsIDIyMywgMjMwLCAxLCA2OCwgMjIzLCAyMzAsIDEsIDc0LCAKLSAgICAyMjMsIDIzMCwgMSwgMTczLCAyMjMsIDIzMCwgMSwgMjI5LCAxNDQsIDIyMywgMjMwLCAxLCAyMzksIDgsIDIyMywgMjMwLCAKLSAgICAxLCAyMzgsIDExOSwgMjIzLCAyMzAsIDEsIDI0NywgOTIsIDIyMywgMjMwLCAxLCAyNDYsIDE5OSwgMjIzLCAyMzAsIDEsIAotICAgIDIzMCwgMTgxLCAyMjMsIDIzMCwgMSwgMjMwLCAxMjksIDIyMywgMjMwLCAxLCAyMjEsIDExLCAyMjMsIDIzMCwgMSwgMjA3LCAKLSAgICAyNDEsIDIyMywgMjMwLCAxLCAyMDcsIDIyOSwgMjIzLCAyMzAsIDEsIDI0NCwgMTIwLCAyMjMsIDIzMCwgMSwgMjQ0LCAxMTAsIAotICAgIDIyMywgMjMwLCAxLCAyNDQsIDEwNCwgMjIzLCAyMzAsIDEsIDIyMSwgMjI3LCAyMjMsIDIzMCwgMSwgMjEwLCAyMiwgMjIzLCAKLSAgICAyMzAsIDEsIDIwOSwgMTA4LCAyMjMsIDIzMCwgMSwgMjQ0LCAyMTIsIDIyMywgMjMwLCAxLCAyNDQsIDEsIDIyMywgMjMwLCAKLSAgICAxLCAyMDEsIDIwMSwgMjIzLCAyMzAsIDEsIDE4NSwgMjIzLCAyMzAsIDEsIDIxOCwgMjA4LCAyMjMsIDIzMCwgMSwgMjQ5LCAKLSAgICAzMiwgMjIzLCAyMzAsIDEsIDI0OCwgOTgsIDIyMywgMjMwLCAxLCAxOTIsIDIyMywgMjMwLCAxLCAxOTgsIDIyMywgMjMwLCAKLSAgICAxLCAyMTYsIDIyMCwgMjIzLCAyMzAsIDEsIDIyOCwgMTEzLCAyMjMsIDIzMCwgMSwgMjA2LCA4NiwgMjIzLCAyMzAsIDEsIAotICAgIDIxNSwgMzYsIDIyMywgMjMwLCAxLCAxNTIsIDIyMywgMjMwLCAxLCAyMTUsIDE4NSwgMjIzLCAyMzAsIDEsIDIxNiwgNjEsIAotICAgIDIyMywgMjMwLCAyMTQsIDE2OCwgODIsIDIyOSwgMTA2LCAxLCA2MywgMjI5LCAxMDYsIDEsIDI1MiwgMjUsIDIyOSwgMTA2LCAKLSAgICAxLCA3NSwgMjI5LCAxMDYsIDEsIDIzMSwgODMsIDIyOSwgMTA2LCAxLCA2OCwgMjI5LCAxMDYsIDEsIDIwNiwgMTc4LCAyMjksIAotICAgIDEwNiwgMSwgNzQsIDIyOSwgMTA2LCAxLCAyNTEsIDY0LCAyMjksIDEwNiwgMSwgNzgsIDIyOSwgMTA2LCAxLCAyNTAsIDM0LCAKLSAgICAyMjksIDEwNiwgMSwgMTczLCAyMjksIDEwNiwgMSwgMjI5LCAxNDQsIDIyOSwgMTA2LCAxLCAyMzksIDgsIDIyOSwgMTA2LCAKLSAgICAxLCAyMzgsIDE1NSwgMjI5LCAxMDYsIDEsIDIzOCwgMTE5LCAyMjksIDEwNiwgMSwgMjIyLCAyMDMsIDIyOSwgMTA2LCAxLCAKLSAgICAyNDcsIDkyLCAyMjksIDEwNiwgMSwgMjQ2LCAxOTksIDIyOSwgMTA2LCAxLCAyMzAsIDE4MSwgMjI5LCAxMDYsIDEsIDIzMCwgCi0gICAgMTI5LCAyMjksIDEwNiwgMSwgMjMwLCAxNDksIDIyOSwgMTA2LCAxLCAyMjEsIDExLCAyMjksIDEwNiwgMSwgMjA3LCAyNDEsIAotICAgIDIyOSwgMTA2LCAxLCAyMDcsIDIyOSwgMjI5LCAxMDYsIDEsIDI0NCwgMTIwLCAyMjksIDEwNiwgMSwgMjQ0LCAxMTAsIDIyOSwgCi0gICAgMTA2LCAxLCAyMTUsIDE4NSwgMjI5LCAxMDYsIDEsIDI0NCwgMTA0LCAyMjksIDEwNiwgMSwgMjIxLCAyMjcsIDIyOSwgMTA2LCAKLSAgICAxLCAyMTAsIDIyLCAyMjksIDEwNiwgMSwgMjA5LCAxMDgsIDIyOSwgMTA2LCAxLCAyNDQsIDIxMiwgMjI5LCAxMDYsIDEsIAotICAgIDI0NCwgMSwgMjI5LCAxMDYsIDEsIDIwMSwgMjAxLCAyMjksIDEwNiwgMSwgMTg1LCAyMjksIDEwNiwgMSwgMjE4LCAyMDgsIAotICAgIDIyOSwgMTA2LCAxLCAyNDksIDMyLCAyMjksIDEwNiwgMSwgMjQ4LCAxOTgsIDIyOSwgMTA2LCAxLCAyNDgsIDk4LCAyMjksIAotICAgIDEwNiwgMSwgMTkyLCAyMjksIDEwNiwgMSwgMTk4LCAyMjksIDEwNiwgMSwgMjE2LCAyMjAsIDIyOSwgMTA2LCAxLCAyMjgsIAotICAgIDExMywgMjI5LCAxMDYsIDEsIDIwNiwgODYsIDIyOSwgMTA2LCAxLCAyMTMsIDkwLCAyMjksIDEwNiwgMSwgMjE1LCAzNiwgCi0gICAgMjI5LCAxMDYsIDEsIDE1MiwgMjI5LCAxMDYsIDIsIDI1MCwgMTgwLCAyMjksIDEwNiwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgCi0gICAgMTA2LCAyMiwgMiwgNzUsIDIyOSwgMTA2LCAyMiwgMiwgMjMxLCA4MywgMjI5LCAxMDYsIDIyLCAyLCA2OCwgMjI5LCAxMDYsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMjI5LCAxMDYsIDIyLCAyLCA3NCwgMjI5LCAxMDYsIDIyLCAyLCAyNTEsIDY0LCAyMjksIDEwNiwgCi0gICAgMjIsIDIsIDc4LCAyMjksIDEwNiwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTA2LCAyLCAyMjEsIDUxLCAyMjksIDEwNiwgMiwgCi0gICAgMjA1LCAyMDQsIDIyOSwgMTA2LCAxNywgMjAyLCA4NCwgMjI5LCAxMDYsIDE3LCAxMDUsIDIyOSwgMTA2LCAxNywgMTA4LCAKLSAgICAyMjksIDEwNiwgMTcsIDE0NywgMjI5LCAxMDYsIDE3LCAxNDksIDIyOSwgMTA2LCAxNywgMTcwLCAyMjksIDEwNiwgMTcsIAotICAgIDE5NSwgMjI5LCAxMDYsIDE3LCAyMTMsIDExMSwgMjI5LCAxMDYsIDE3LCAxOTksIDIyOSwgMTA2LCAxNywgMjIyLCA2MywgCi0gICAgMjM4LCA2LCAyLCAzOSwgMjUwLCAxODEsIDU1LCAyMzgsIDYsIDIsIDI0NywgNTIsIDIzOCwgNiwgMiwgMjUwLCAxODAsIAotICAgIDIzOCwgNiwgMiwgMjA1LCAxOTksIDIzOCwgNiwgMSwgNjMsIDIzOCwgNiwgMSwgMjUyLCAyNSwgMjM4LCA2LCAxLCA3NSwgCi0gICAgMjM4LCA2LCAxLCAyMzEsIDgzLCAyMzgsIDYsIDEsIDY4LCAyMzgsIDYsIDEsIDIwNiwgMTc4LCAyMzgsIDYsIDEsIDEyNSwgCi0gICAgMTQ2LCAyMzgsIDYsIDEsIDEyNSwgMTU5LCAyMzgsIDYsIDEsIDI0MSwgMTYxLCAyMzgsIDYsIDEsIDI1MSwgNjQsIDIzOCwgCi0gICAgNiwgMSwgMjIwLCAxOCwgMjM4LCA2LCAxLCAyNTAsIDM0LCAyMzgsIDYsIDEsIDE3MywgMjM4LCA2LCAxLCAyMjksIDE0NCwgCi0gICAgMjM4LCA2LCAxLCAyMzksIDgsIDIzOCwgNiwgMSwgMjM4LCAxMTksIDIzOCwgNiwgMSwgMjIyLCAyMDMsIDIzOCwgNiwgMSwgCi0gICAgMjQ3LCA5MiwgMjM4LCA2LCAxLCAyNDYsIDE5OSwgMjM4LCA2LCAxLCAyMzAsIDE4MSwgMjM4LCA2LCAxLCAyMzAsIDE0OSwgCi0gICAgMjM4LCA2LCAxLCAyMjEsIDExLCAyMzgsIDYsIDEsIDIwNywgMjQxLCAyMzgsIDYsIDEsIDIwNywgMjI5LCAyMzgsIDYsIDEsIAotICAgIDI0NCwgMTIwLCAyMzgsIDYsIDEsIDI0NCwgMTA0LCAyMzgsIDYsIDEsIDIyMSwgMjI3LCAyMzgsIDYsIDEsIDIxMCwgMjIsIAotICAgIDIzOCwgNiwgMSwgMjA5LCAxMDgsIDIzOCwgNiwgMSwgMjQ0LCAyMTIsIDIzOCwgNiwgMSwgMjQ0LCAxLCAyMzgsIDYsIDEsIAotICAgIDIwMSwgMjAxLCAyMzgsIDYsIDEsIDE4NSwgMjM4LCA2LCAxLCAyMTgsIDIwOCwgMjM4LCA2LCAxLCAyNDksIDMyLCAyMzgsIAotICAgIDYsIDEsIDI0OCwgOTgsIDIzOCwgNiwgMSwgMTkyLCAyMzgsIDYsIDEsIDE5OCwgMjM4LCA2LCAxLCAyMTYsIDIyMCwgMjM4LCAKLSAgICA2LCAxLCAyMjgsIDExMywgMjM4LCA2LCAxLCAyMjcsIDc3LCAyMzgsIDYsIDEsIDIwNiwgODYsIDIzOCwgNiwgMSwgMjEzLCAKLSAgICA5MCwgMjM4LCA2LCAxLCAyMTEsIDE2NCwgMjM4LCA2LCAxLCAyMTUsIDM2LCAyMzgsIDYsIDEsIDE1MiwgMjM4LCA2LCAyLCAKLSAgICAyMjEsIDUxLCAyMzgsIDYsIDIsIDI1MCwgMTcsIDIzOCwgNiwgMjIsIDIsIDI1MiwgMjUsIDIzOCwgNiwgMjIsIDIsIDc1LCAKLSAgICAyMzgsIDYsIDIyLCAyLCAyMzEsIDgzLCAyMzgsIDYsIDIyLCAyLCA2OCwgMjM4LCA2LCAyMiwgMiwgMjA2LCAxNzgsIDIzOCwgCi0gICAgNiwgMjIsIDIsIDEyNSwgMTQ2LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMzgsIDYsIDIyLCAyLCAyNDEsIAotICAgIDE2MSwgMjM4LCA2LCAyMiwgMiwgMjUxLCA2NCwgMjM4LCA2LCAyMiwgMiwgMjIwLCAxOCwgMjM4LCA2LCAyMiwgMiwgMjUwLCAKLSAgICAzNCwgMjM4LCA2LCAyLCAyMDUsIDIwNCwgMjM4LCA2LCAyMjAsIDM5LCAyMzgsIDYsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgCi0gICAgMjM4LCA2LCAyLCAyMTgsIDc0LCAyMzgsIDYsIDEsIDIwNiwgNTIsIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDIwNiwgNTIsIDUyLCAKLSAgICAyNTAsIDE4MCwgMjM4LCA2LCAxLCAxMjUsIDIxNSwgMTg2LCAyMzgsIDYsIDEsIDEyNSwgMjI3LCA3OCwgMjM4LCA2LCAyMiwgCi0gICAgMiwgMTI1LCAxNTksIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMzksIDIzOCwgNiwgMTcsIDIwMiwgODQsIDM5LCAKLSAgICAyMzgsIDYsIDE3LCAxMDUsIDM5LCAyMzgsIDYsIDE3LCAxMDgsIDM5LCAyMzgsIDYsIDE3LCAxNDcsIDM5LCAyMzgsIDYsIAotICAgIDE3LCAxNDksIDM5LCAyMzgsIDYsIDE3LCAxNzAsIDM5LCAyMzgsIDYsIDE3LCAxOTUsIDM5LCAyMzgsIDYsIDEsIDYzLCAzOSwgCi0gICAgMjM4LCA2LCAxLCAxNzMsIDM5LCAyMzgsIDYsIDEsIDIwMSwgMjAxLCAzOSwgMjM4LCA2LCAxLCAyMDUsIDIzMCwgMzksIAotICAgIDIzOCwgNiwgMSwgMTg1LCAyMDgsIDIwNCwgMjUwLCAyMDksIDIwOCwgMjA0LCAxLCA2MywgMjA4LCAyMDQsIDEsIDI1MiwgCi0gICAgMjUsIDIwOCwgMjA0LCAxLCA3NSwgMjA4LCAyMDQsIDEsIDIzMSwgODMsIDIwOCwgMjA0LCAxLCA2OCwgMjA4LCAyMDQsIDEsIAotICAgIDIwNiwgMTc4LCAyMDgsIDIwNCwgMSwgMTI1LCAxNDYsIDIwOCwgMjA0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMDgsIDIwNCwgMSwgCi0gICAgMTI1LCAxNTksIDIwOCwgMjA0LCAxLCAxMjUsIDIyNywgNzgsIDIwOCwgMjA0LCAxLCA3NCwgMjA4LCAyMDQsIDEsIDI1MSwgCi0gICAgNjQsIDIwOCwgMjA0LCAxLCA3OCwgMjA4LCAyMDQsIDEsIDI1MCwgMzQsIDIwOCwgMjA0LCAxLCAxNzMsIDIwOCwgMjA0LCAxLCAKLSAgICAyMjksIDE0NCwgMjA4LCAyMDQsIDEsIDIzOSwgOCwgMjA4LCAyMDQsIDEsIDIzOCwgMTE5LCAyMDgsIDIwNCwgMSwgMjIyLCAKLSAgICAyMDMsIDIwOCwgMjA0LCAxLCAyNDcsIDkyLCAyMDgsIDIwNCwgMSwgMjQ2LCAxOTksIDIwOCwgMjA0LCAxLCAyMzAsIDE4MSwgCi0gICAgMjA4LCAyMDQsIDEsIDIzMCwgMTQ5LCAyMDgsIDIwNCwgMSwgMjIxLCAxMSwgMjA4LCAyMDQsIDEsIDIwNywgMjQxLCAyMDgsIAotICAgIDIwNCwgMSwgMjA3LCAyMjksIDIwOCwgMjA0LCAxLCAyNDQsIDEyMCwgMjA4LCAyMDQsIDEsIDI0NCwgMTA0LCAyMDgsIDIwNCwgCi0gICAgMSwgMjIxLCAyMjcsIDIwOCwgMjA0LCAxLCAyMTAsIDIyLCAyMDgsIDIwNCwgMSwgMjA5LCAxMDgsIDIwOCwgMjA0LCAxLCAKLSAgICAyNDQsIDIxMiwgMjA4LCAyMDQsIDEsIDI0NCwgMSwgMjA4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMDgsIDIwNCwgMSwgMTg1LCAKLSAgICAyMDgsIDIwNCwgMSwgMjE4LCAyMDgsIDIwOCwgMjA0LCAxLCAyNDksIDMyLCAyMDgsIDIwNCwgMSwgMjQ4LCA5OCwgMjA4LCAKLSAgICAyMDQsIDEsIDE5MiwgMjA4LCAyMDQsIDEsIDE5OCwgMjA4LCAyMDQsIDEsIDIxNiwgMjIwLCAyMDgsIDIwNCwgMSwgMjI4LCAKLSAgICAxMTMsIDIwOCwgMjA0LCAxLCAyMDYsIDg2LCAyMDgsIDIwNCwgMSwgMjEzLCA5MCwgMjA4LCAyMDQsIDEsIDIxMSwgMTY0LCAKLSAgICAyMDgsIDIwNCwgMSwgMjE1LCAzNiwgMjA4LCAyMDQsIDEsIDE1MiwgMjA4LCAyMDQsIDIyLCAyLCAyNTIsIDI1LCAyMDgsIAotICAgIDIwNCwgMjIsIDIsIDc1LCAyMDgsIDIwNCwgMjIsIDIsIDIzMSwgODMsIDIwOCwgMjA0LCAyMiwgMiwgNjgsIDIwOCwgMjA0LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNDYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMTUsIAotICAgIDE4NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE1OSwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwOCwgMjA0LCAKLSAgICAyMiwgMiwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjEyLCAyMjgsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDI1MSwgNjQsIDIwOCwgCi0gICAgMjA0LCAyMiwgMiwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjEyLCAyMjgsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIwOCwgMjA0LCAyLCAyNDcsIDUyLCAyMDgsIDIwNCwgMiwgMjUwLCAxODAsIDIwOCwgMjA0LCAyLCAyMDUsIDE5OSwgMjA4LCAKLSAgICAyMDQsIDIsIDIwNSwgMjA0LCAyMDgsIDIwNCwgMiwgMjIxLCA1MSwgMjA4LCAyMDQsIDIsIDI1MCwgMTcsIDIwOCwgMjA0LCAKLSAgICAyMzcsIDE5MSwgMjA4LCAyMDQsIDI1MSwgMTQ2LCA1NCwgMjA4LCAyMDQsIDIyMCwgMzksIDIwOCwgMjA0LCAxNywgMjAyLCAKLSAgICA4NCwgMjA4LCAyMDQsIDE3LCAxMDUsIDIwOCwgMjA0LCAxNywgMTA4LCAyMDgsIDIwNCwgMTcsIDE0NywgMjA4LCAyMDQsIAotICAgIDE3LCAxNDksIDIwOCwgMjA0LCAxNywgMTcwLCAyMDgsIDIwNCwgMTcsIDE5NSwgMjA4LCAyMDQsIDE3LCAyMTMsIDExMSwgCi0gICAgMjA4LCAyMDQsIDE3LCAxOTksIDIwOCwgMjA0LCAxNywgMjIyLCA2MywgMTg2LCAxLCA2MywgMTg2LCAxLCAyNTIsIDI1LCAKLSAgICAxODYsIDEsIDc1LCAxODYsIDEsIDIzMSwgODMsIDE4NiwgMSwgNjgsIDE4NiwgMSwgMjA2LCAxNzgsIDE4NiwgMSwgMTI1LCAKLSAgICAxNDYsIDE4NiwgMSwgMTI1LCAyMTUsIDE4NiwgMTg2LCAxLCAxMjUsIDE1OSwgMTg2LCAxLCAxMjUsIDIyNywgNzgsIDE4NiwgCi0gICAgMSwgNzQsIDE4NiwgMSwgMjUxLCA2NCwgMTg2LCAxLCA3OCwgMTg2LCAxLCAyNTAsIDM0LCAxODYsIDEsIDE3MywgMTg2LCAxLCAKLSAgICAyMjksIDE0NCwgMTg2LCAxLCAyMzksIDgsIDE4NiwgMSwgMjM4LCAxMTksIDE4NiwgMSwgMjIyLCAyMDMsIDE4NiwgMSwgCi0gICAgMjQ3LCA5MiwgMTg2LCAxLCAyNDYsIDE5OSwgMTg2LCAxLCAyMzAsIDE4MSwgMTg2LCAxLCAyMzAsIDE0OSwgMTg2LCAxLCAKLSAgICAyMjEsIDExLCAxODYsIDEsIDIwNywgMjQxLCAxODYsIDEsIDIwNywgMjI5LCAxODYsIDEsIDI0NCwgMTIwLCAxODYsIDEsIAotICAgIDI0NCwgMTA0LCAxODYsIDEsIDIyMSwgMjI3LCAxODYsIDEsIDIxMCwgMjIsIDE4NiwgMSwgMjA5LCAxMDgsIDE4NiwgMSwgCi0gICAgMjQ0LCAyMTIsIDE4NiwgMSwgMjQ0LCAxLCAxODYsIDEsIDIwMSwgMjAxLCAxODYsIDEsIDE4NSwgMTg2LCAxLCAyMTgsIAotICAgIDIwOCwgMTg2LCAxLCAyNDksIDMyLCAxODYsIDEsIDI0OCwgOTgsIDE4NiwgMSwgMTkyLCAxODYsIDEsIDE5OCwgMTg2LCAxLCAKLSAgICAyMTYsIDIyMCwgMTg2LCAxLCAyMjgsIDExMywgMTg2LCAxLCAyMDYsIDg2LCAxODYsIDEsIDIxMywgOTAsIDE4NiwgMSwgCi0gICAgMjExLCAxNjQsIDE4NiwgMSwgMjE1LCAzNiwgMTg2LCAxLCAxNTIsIDE4NiwgMjIsIDIsIDI1MiwgMjUsIDE4NiwgMjIsIDIsIAotICAgIDc1LCAxODYsIDIyLCAyLCAyMzEsIDgzLCAxODYsIDIyLCAyLCA2OCwgMTg2LCAyMiwgMiwgMjA2LCAxNzgsIDE4NiwgMjIsIAotICAgIDIsIDEyNSwgMTQ2LCAxODYsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxODYsIDIyLCAyLCA3NCwgMTg2LCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMTg2LCAyMiwgMiwgNzgsIDE4NiwgMjIsIDIsIDI1MCwgMzQsIDE4NiwgMiwgMjQ3LCA1MiwgMTg2LCAyLCAyNTAsIAotICAgIDE4MCwgMTg2LCAyLCAyMDUsIDE5OSwgMTg2LCAyLCAyMDUsIDIwNCwgMTg2LCAyLCAyMjEsIDUxLCAxODYsIDIsIDIxMiwgCi0gICAgMTU3LCAxODYsIDI0NCwgMTY2LCAxODYsIDUyLCAyNDQsIDE2NiwgMTg2LCAyMTMsIDEzMSwgMjQzLCA4NSwgMTg2LCAyMTMsIAotICAgIDEzMSwgMTQyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MSwgMTg2LCAyMTYsIDk4LCAKLSAgICAyMjUsIDkwLCAxODYsIDI0MSwgODQsIDc2LCAyMDksIDExMywgODIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgCi0gICAgMjUsIDIwNywgOTIsIDIxOSwgMjMyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIDI1LCAyNDIsIDgzLCAyNDUsIAotICAgIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDI0NSwgMTM3LCAxODYsIDIxNCwgCi0gICAgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgNTIsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIAotICAgIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgCi0gICAgMjUyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIDI1MywgMywgMjE2LCAxNjIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgCi0gICAgMywgNTIsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAKLSAgICAxMzEsIDMsIDIxNywgNTgsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxMywgMTI4LCAyNDUsIDEzNywgCi0gICAgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIDU5LCAyNSwgMjE2LCAxNjIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCAKLSAgICA1OSwgMjUsIDEyMCwgMjQxLCA4NiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIDU5LCAyNSwgMjM5LCAxNDcsIDI0MSwgCi0gICAgODYsIDE4NiwgMSwgMjA5LCAzMiwgMjUwLCAyNTUsIDc1LCAxODYsIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgNzUsIDE4NiwgCi0gICAgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCAyMzEsIDgzLCAxODYsIDEsIDI1MCwgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAKLSAgICAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIDI1NSwgMjA2LCAxNzgsIDIyNCwgNzQsIDEsIDYzLCAyMjQsIDc0LCAxLCAyNTIsIAotICAgIDI1LCAyMjQsIDc0LCAxLCA3NSwgMjI0LCA3NCwgMSwgMjMxLCA4MywgMjI0LCA3NCwgMSwgNjgsIDIyNCwgNzQsIDEsIDIwNiwgCi0gICAgMTc4LCAyMjQsIDc0LCAxLCAxMjUsIDE0NiwgMjI0LCA3NCwgMSwgMTI1LCAyMTUsIDE4NiwgMjI0LCA3NCwgMSwgMTI1LCAKLSAgICAxNTksIDIyNCwgNzQsIDEsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMSwgNzQsIDIyNCwgNzQsIDEsIDI1MSwgNjQsIDIyNCwgCi0gICAgNzQsIDEsIDc4LCAyMjQsIDc0LCAxLCAyNTAsIDM0LCAyMjQsIDc0LCAxLCAxNzMsIDIyNCwgNzQsIDEsIDIyOSwgMTQ0LCAKLSAgICAyMjQsIDc0LCAxLCAyMzksIDgsIDIyNCwgNzQsIDEsIDIzOCwgMTE5LCAyMjQsIDc0LCAxLCAyMjIsIDIwMywgMjI0LCA3NCwgCi0gICAgMSwgMjQ3LCA5MiwgMjI0LCA3NCwgMSwgMjQ2LCAxOTksIDIyNCwgNzQsIDEsIDIzMCwgMTgxLCAyMjQsIDc0LCAxLCAyMzAsIAotICAgIDE0OSwgMjI0LCA3NCwgMSwgMjIxLCAxMSwgMjI0LCA3NCwgMSwgMjA3LCAyNDEsIDIyNCwgNzQsIDEsIDIwNywgMjI5LCAKLSAgICAyMjQsIDc0LCAxLCAyNDQsIDEyMCwgMjI0LCA3NCwgMSwgMjQ0LCAxMDQsIDIyNCwgNzQsIDEsIDIyMSwgMjI3LCAyMjQsIAotICAgIDc0LCAxLCAyMTAsIDIyLCAyMjQsIDc0LCAxLCAyMDksIDEwOCwgMjI0LCA3NCwgMSwgMjQ0LCAyMTIsIDIyNCwgNzQsIDEsIAotICAgIDI0NCwgMSwgMjI0LCA3NCwgMSwgMjAxLCAyMDEsIDIyNCwgNzQsIDEsIDE4NSwgMjI0LCA3NCwgMSwgMjE4LCAyMDgsIDIyNCwgCi0gICAgNzQsIDEsIDI0OSwgMzIsIDIyNCwgNzQsIDEsIDI0OCwgOTgsIDIyNCwgNzQsIDEsIDE5MiwgMjI0LCA3NCwgMSwgMTk4LCAKLSAgICAyMjQsIDc0LCAxLCAyMTYsIDIyMCwgMjI0LCA3NCwgMSwgMjI4LCAxMTMsIDIyNCwgNzQsIDEsIDIwNiwgODYsIDIyNCwgNzQsIAotICAgIDEsIDIxMywgOTAsIDIyNCwgNzQsIDEsIDIxMSwgMTY0LCAyMjQsIDc0LCAxLCAyMTUsIDM2LCAyMjQsIDc0LCAxLCAxNTIsIAotICAgIDIyNCwgNzQsIDEsIDIyNywgNzcsIDIyNCwgNzQsIDIyLCAyLCAyNTIsIDI1LCAyMjQsIDc0LCAyMiwgMiwgNzUsIDIyNCwgCi0gICAgNzQsIDIyLCAyLCAyMzEsIDgzLCAyMjQsIDc0LCAyMiwgMiwgNjgsIDIyNCwgNzQsIDIyLCAyLCAyMDYsIDE3OCwgMjI0LCAKLSAgICA3NCwgMjIsIDIsIDEyNSwgMTQ2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAyMiwgMiwgNzQsIDIyNCwgNzQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjQsIDc0LCAyMiwgMiwgNzgsIDIyNCwgNzQsIDIyLCAyLCAyNTAsIDM0LCAyMjQsIDc0LCAyLCAyNTAsIAotICAgIDE4MCwgMjI0LCA3NCwgMiwgMjA1LCAxOTksIDIyNCwgNzQsIDIsIDIwNSwgMjA0LCAyMjQsIDc0LCAyLCAyNTAsIDEyMywgCi0gICAgMjI0LCA3NCwgMjQ0LCAxNjYsIDIyNCwgNzQsIDUyLCAyNDQsIDE2NiwgMjI0LCA3NCwgMjUxLCAxNDYsIDU0LCAyMjQsIDc0LCAKLSAgICAyLCAyMzYsIDAsIDIyNCwgNzQsIDE3LCAyMDIsIDg0LCAyMjQsIDc0LCAxNywgMTA1LCAyMjQsIDc0LCAxNywgMTA4LCAyMjQsIAotICAgIDc0LCAxNywgMTQ3LCAyMjQsIDc0LCAxNywgMTQ5LCAyMjQsIDc0LCAxNywgMTcwLCAyMjQsIDc0LCAxNywgMTk1LCAyMjQsIAotICAgIDc0LCAxNywgMjEzLCAxMTEsIDIyNCwgNzQsIDE3LCAxOTksIDIyNCwgNzQsIDE3LCAyMjIsIDYzLCAyMDksIDIzOSwgMSwgCi0gICAgNjMsIDIwOSwgMjM5LCAxLCAyNTIsIDI1LCAyMDksIDIzOSwgMSwgNzUsIDIwOSwgMjM5LCAxLCAyMzEsIDgzLCAyMDksIAotICAgIDIzOSwgMSwgNjgsIDIwOSwgMjM5LCAxLCAyMDYsIDE3OCwgMjA5LCAyMzksIDEsIDc0LCAyMDksIDIzOSwgMSwgMjUxLCA2NCwgCi0gICAgMjA5LCAyMzksIDEsIDc4LCAyMDksIDIzOSwgMSwgMjUwLCAzNCwgMjA5LCAyMzksIDEsIDE3MywgMjA5LCAyMzksIDEsIAotICAgIDIyOSwgMTQ0LCAyMDksIDIzOSwgMSwgMjM5LCA4LCAyMDksIDIzOSwgMSwgMjM4LCAxMTksIDIwOSwgMjM5LCAxLCAyMjIsIAotICAgIDIwMywgMjA5LCAyMzksIDEsIDI0NywgOTIsIDIwOSwgMjM5LCAxLCAyNDYsIDE5OSwgMjA5LCAyMzksIDEsIDIzMCwgMTgxLCAKLSAgICAyMDksIDIzOSwgMSwgMjMwLCAxNDksIDIwOSwgMjM5LCAxLCAyMjEsIDExLCAyMDksIDIzOSwgMSwgMjA3LCAyNDEsIDIwOSwgCi0gICAgMjM5LCAxLCAyMDcsIDIyOSwgMjA5LCAyMzksIDEsIDI0NCwgMTIwLCAyMDksIDIzOSwgMSwgMjQ0LCAxMDQsIDIwOSwgMjM5LCAKLSAgICAxLCAyMjEsIDIyNywgMjA5LCAyMzksIDEsIDIxMCwgMjIsIDIwOSwgMjM5LCAxLCAyMDksIDEwOCwgMjA5LCAyMzksIDEsIAotICAgIDI0NCwgMjEyLCAyMDksIDIzOSwgMSwgMjQ0LCAxLCAyMDksIDIzOSwgMSwgMjAxLCAyMDEsIDIwOSwgMjM5LCAxLCAxODUsIAotICAgIDIwOSwgMjM5LCAxLCAyMTgsIDIwOCwgMjA5LCAyMzksIDEsIDI0OSwgMzIsIDIwOSwgMjM5LCAxLCAyNDgsIDk4LCAyMDksIAotICAgIDIzOSwgMSwgMTkyLCAyMDksIDIzOSwgMSwgMTk4LCAyMDksIDIzOSwgMSwgMjE2LCAyMjAsIDIwOSwgMjM5LCAxLCAyMjgsIAotICAgIDExMywgMjA5LCAyMzksIDEsIDIwNiwgODYsIDIwOSwgMjM5LCAxLCAyMTMsIDkwLCAyMDksIDIzOSwgMSwgMjE1LCAzNiwgCi0gICAgMjA5LCAyMzksIDEsIDE1MiwgMjA5LCAyMzksIDEsIDIxNSwgMTg1LCAyMDksIDIzOSwgMiwgMjUwLCAxODAsIDIwOSwgMjM5LCAKLSAgICAyLCAyMDUsIDE5OSwgMjA5LCAyMzksIDIyLCAyLCAyNTIsIDI1LCAyMDksIDIzOSwgMjIsIDIsIDc1LCAyMDksIDIzOSwgMjIsIAotICAgIDIsIDIzMSwgODMsIDIwOSwgMjM5LCAyMiwgMiwgNjgsIDIwOSwgMjM5LCAyMiwgMiwgMjA2LCAxNzgsIDIwOSwgMjM5LCAyMiwgCi0gICAgMiwgNzQsIDIwOSwgMjM5LCAyMiwgMiwgMjUxLCA2NCwgMjA5LCAyMzksIDIyLCAyLCA3OCwgMjA5LCAyMzksIDIyLCAyLCAKLSAgICAyNTAsIDM0LCAyMDksIDIzOSwgMiwgMjA1LCAyMDQsIDIwOSwgMjM5LCAyLCAyMjEsIDUxLCAyMDksIDIzOSwgMTcsIDIwMiwgCi0gICAgODQsIDIwOSwgMjM5LCAxNywgMTA1LCAyMDksIDIzOSwgMTcsIDEwOCwgMjA5LCAyMzksIDE3LCAxNDcsIDIwOSwgMjM5LCAKLSAgICAxNywgMTQ5LCAyMDksIDIzOSwgMTcsIDE3MCwgMjA5LCAyMzksIDE3LCAxOTUsIDIwOSwgMjM5LCAxNywgMjEzLCAxMTEsIAotICAgIDIwOSwgMjM5LCAxNywgMTk5LCAyMDksIDIzOSwgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDEsIDE3MywgMjUxLCA2OCwgMSwgCi0gICAgMjI5LCAxNDQsIDI1MSwgNjgsIDEsIDIyMiwgMjAzLCAyNTEsIDY4LCAxLCAyMDEsIDIwMSwgMjUxLCA2OCwgMSwgMjEwLCAKLSAgICAyMiwgMjUxLCA2OCwgMSwgMjUwLCAyNTUsIDIxMCwgMjIsIDI1MSwgNjgsIDEsIDE4NSwgMjUxLCA2OCwgMSwgMjE4LCAyMDgsIAotICAgIDI1MSwgNjgsIDEsIDI0OSwgMzIsIDI1MSwgNjgsIDEsIDE5MiwgMjUxLCA2OCwgMSwgMjMwLCAxODEsIDI1MSwgNjgsIDEsIAotICAgIDI0NiwgMTk5LCAyNTEsIDY4LCAxLCAyMDksIDEwOCwgMjUxLCA2OCwgMSwgMjE2LCAyMjAsIDI1MSwgNjgsIDEsIDIyOCwgCi0gICAgMTEzLCAyNTEsIDY4LCAxLCAyMTUsIDM2LCAyNTEsIDY4LCAxLCAyMjEsIDExLCAyNTEsIDY4LCAxLCAxNTIsIDI1MSwgNjgsIAotICAgIDEsIDYzLCAyNTEsIDY4LCAxLCAyNDQsIDIxMiwgMjUxLCA2OCwgMSwgMjQ0LCAxLCAyNTEsIDY4LCAxLCAyMzksIDgsIDI1MSwgCi0gICAgNjgsIDEsIDI1MCwgMjU1LCAyMzksIDgsIDI1MSwgNjgsIDEsIDIzOCwgMTE5LCAyNTEsIDY4LCAxLCAyNDgsIDk4LCAyNTEsIAotICAgIDY4LCAxLCAyMzAsIDE0OSwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgCi0gICAgMjE2LCAyMjAsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjcsIDEzNSwgMjE2LCAyMjAsIDI1MSwgNjgsIDIyLCAyLCA2MywgCi0gICAgMjUxLCA2OCwgMjIsIDIsIDI1MiwgMjUsIDI1MSwgNjgsIDIyLCAyLCA3NSwgMjUxLCA2OCwgMjIsIDIsIDIzMSwgODMsIAotICAgIDI1MSwgNjgsIDIyLCAyLCA2OCwgMjUxLCA2OCwgMjIsIDIsIDIwNiwgMTc4LCAyNTEsIDY4LCAyMiwgMiwgNzQsIDI1MSwgCi0gICAgNjgsIDIyLCAyLCAyNTAsIDEzLCAyNTEsIDY4LCAyMiwgMiwgNzgsIDI1MSwgNjgsIDIyLCAyLCAyNTEsIDY0LCAyNTEsIDY4LCAKLSAgICAyMiwgMiwgMjUwLCAyNDcsIDI1MSwgNjgsIDIsIDIyOSwgODYsIDI1MSwgNjgsIDE3LCAyMDIsIDg0LCAyNTEsIDY4LCAxNywgCi0gICAgMTA1LCAyNTEsIDY4LCAxNywgMTA4LCAyNTEsIDY4LCAxNywgMTQ3LCAyNTEsIDY4LCAxNywgMTQ5LCAyNTEsIDY4LCAxNywgCi0gICAgMTcwLCAyNTEsIDY4LCAxNywgMTk1LCAyNTEsIDY4LCAxNywgMjEzLCAxMTEsIDI1MSwgNjgsIDE3LCAxOTksIDI1MSwgNjgsIAotICAgIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCA0MiwgMjA5LCAxNTIsIDI1MSwgNjgsIDQyLCAyMDcsIDE1MSwgMjUxLCA2OCwgMiwgNSwgCi0gICAgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTUsIDEzNiwgMjUxLCA2OCwgMTYsIDIwNSwgCi0gICAgMjMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjIsIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNjMsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNCwgMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA2LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAKLSAgICA2LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCi0gICAgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDIyMywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM5LCA4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA2LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCi0gICAgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIwLCAKLSAgICA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA3LCAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMSwgMzcsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NCwgMjEyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDQ5LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDYsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNiwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAotICAgIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKLSAgICAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMiwgCi0gICAgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA0LCAzMCwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzgsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgMjIzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzksIDgsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDUsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjAsIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDcsIAotICAgIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIxLCAzNywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ0LCAyMTIsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgNDksIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgMjQ3LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDUsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAKLSAgICAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDIwMiwgODQsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxMDUsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDE3LCAxMDgsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAKLSAgICAxNDksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxNzAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTUsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDE3LCAyMTMsIDExMSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDIyMiwgCi0gICAgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDE1MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwNywgMTUxLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCA1MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIzOSwgMTUzLCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA0MiwgMjQwLCAxOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIxMiwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAKLSAgICAyMTMsIDEwNSwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDI0MSwgMTM0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjIyLCA1OCwgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgMjIwLCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTg1LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxNzMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyOCwgMTEzLCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxOTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NCwgMjEyLCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDIsIDExNiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjA2LCA4NiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjIyLCAyMDMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDE1MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjM5LCA4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCAyMjksIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE1LCAzNiwgMjE5LCA0OSwgMjQ2LCA2NiwgCi0gICAgMjM3LCA3NywgMSwgMjQ5LCAzMiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ3LCA5MiwgMjE5LCA0OSwgMjQ2LCAKLSAgICA2NiwgMjM3LCA3NywgMSwgMjEwLCAyMiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA5LCAxMDgsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMSwgMjAxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTgsIDIwOCwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE2LCAyMjAsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDI0MCwgMTA4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDYsIDE5OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAxLCA3NSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDcsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyMzUsIDE3MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIxOSwgMTg0LCAyMTksIDQ5LCAyNDYsIDY2LCAKLSAgICAyMzcsIDc3LCAxLCA0NiwgMjMwLCA1NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIxMCwgNjksIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMjYsIDE4NSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIAotICAgIDIyMywgMTYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMTU5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCA0NiwgMjA0LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMjIsIDIwNSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIwMywgMTI0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgCi0gICAgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMjA4LCAxNjEsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMTUsIDI0NSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDE0MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAyMTQsIDIzOSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDE2MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgCi0gICAgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCAKLSAgICA2MiwgMjA2LCA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjI2LCAyNTQsIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI2LCAyNTQsIDIwOCwgMTYxLCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIDYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMjYsIDI1NCwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI2LCAyNTQsIDE0MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIDksIDIsIDYzLCA5LCAKLSAgICAyLCAzNCwgMjMsIDYzLCA5LCAyLCAzNCwgMjMsIDI0OSwgMTUsIDksIDIsIDM0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCAKLSAgICA5LCAyLCAzNCwgMjMsIDE1MiwgOSwgMiwgMzQsIDIzLCAyMzEsIDg1LCA5LCAyLCAzNCwgMjMsIDIyOCwgOTMsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAzNCwgMjMsIDIyMywgMTk5LCA5LCAyLCAzNCwgMjMsIDIxNSwgMjIsIDksIDIsIDI1NCwgMzQsIDksIDIsIAotICAgIDI1MSwgMjMyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI1MCwgNzMsIDksIDIsIDI1MSwgMjMzLCAyMywgMjQyLCAzMCwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDI1MSwgMjMzLCAyMywgMjM4LCAyNDYsIDksIDIsIDI1MSwgMjMzLCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyNTEsIDIzMywgMjMsIDE1MiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjUxLCAyMzMsIDIzLCAyMzEsIDU5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyOCwgOTQsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMywgMjEzLCAyNywgOSwgMiwgMjUxLCAyMzMsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzNywgMjA4LCA5LCAyLCAyNTEsIDE0OSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjUxLCAxNTAsIAotICAgIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI1MSwgMTUwLCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAotICAgIDI1MSwgMTUwLCAyMywgMjEzLCA4OCwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjUxLCAxMjIsIDksIAotICAgIDIsIDI1MSwgNDcsIDksIDIsIDI1MSwgNDgsIDIzLCAyNDEsIDIyLCA5LCAyLCAyNTEsIDQ4LCAyMywgMjEyLCAyNDUsIDkxLCAKLSAgICAyMzgsIDU1LCA5LCAyLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIAotICAgIDI0MywgMTg2LCA5LCAyLCAyNTEsIDQwLCAyMywgMjM4LCA1NSwgOSwgMiwgMjUxLCA0MCwgMjMsIDE1MiwgOSwgMiwgMjUxLCAKLSAgICA0MCwgMjMsIDIzMCwgMjcsIDksIDIsIDI1MSwgNDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjUxLCA0MCwgMjMsIDIxMywgNDMsIAotICAgIDksIDIsIDI1MSwgNDAsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjUxLCAzNiwgOSwgMiwgMjUxLCAyOCwgOSwgMiwgMjUwLCAKLSAgICAyNDMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMTUsIAotICAgIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTI2LCAyMDgsIDIxOSwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAKLSAgICAyMTksIDI1MSwgMjUwLCAyMzIsIDkxLCAyMjMsIDk2LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIDIxMSwgMTc2LCAKLSAgICA5LCAyLCAyNTAsIDIwMCwgOSwgMiwgMjUwLCAxNzAsIDksIDIsIDI1MCwgMTM4LCA5LCAyLCAyNTAsIDEzOSwgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyNTAsIDExMCwgOSwgMiwgMjUwLCA4MCwgOSwgMiwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMjAyLCAKLSAgICAzNSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgCi0gICAgNzYsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjE5LCA5NiwgOSwgMiwgMjUwLCAKLSAgICA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIAotICAgIDc2LCAyNDUsIDEyNCwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzMsIDksIDIsIAotICAgIDI1MCwgNjksIDksIDIsIDI0OSwgMzIsIDksIDIsIDI0OSwgMTUsIDksIDIsIDI0OSwgOSwgOSwgMiwgMjQ5LCAzLCA5LCAyLCAKLSAgICAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTQsIDExNSwgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjUyLCA5LCAyLCAxNDIsIDksIDIsIAotICAgIDI0OCwgMjMwLCA5LCAyLCAyNDgsIDg2LCA5LCAyLCAyNDgsIDg3LCAyMywgNjMsIDksIDIsIDI0OCwgODcsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjQ4LCA4NywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAKLSAgICAxOTQsIDExNSwgMjQ3LCAxOTQsIDI1MSwgMjMyLCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjA2LCAyNTUsIDksIAotICAgIDIsIDI0NywgMTk0LCAyNDUsIDEyNCwgMjQ3LCAxOTMsIDksIDIsIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE3MiwgMTE1LCAKLSAgICAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNjAsIDksIDIsIDI0NywgMTU5LCA5LCAyLCAyNDQsIDIxMiwgOSwgMiwgMjQ0LCAyMDMsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMzQsIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgCi0gICAgMjMsIDI1MCwgMjQzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCAKLSAgICA2OSwgMjMsIDI0OCwgODYsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM5LCA4LCA5LCAyLCAyNDQsIDIwNCwgCi0gICAgMjI5LCA2OSwgMjMsIDIzOSwgOSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDYzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzNywgCi0gICAgMjE5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDE1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzAsIAotICAgIDIyNCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzAsIDIyNSwgOTEsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgCi0gICAgMjI5LCA2OSwgMjMsIDIzMCwgMTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI4LCAxMTMsIDksIDIsIDI0NCwgCi0gICAgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyNDAsIDkxLCAKLSAgICAyMjUsIDc4LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgCi0gICAgMjMsIDIyMiwgMjQwLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAKLSAgICAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIxMiwgMTYyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIwOSwgMjQyLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIwNywgNDEsIDkxLCAyMzgsIDYzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCAKLSAgICA2OSwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNDQsIDE3NSwgOSwgMiwgMjQ0LCAxNTQsIDksIDIsIDI0NCwgMTUzLCA5LCAyLCAKLSAgICAyNDQsIDE1MiwgOSwgMiwgMjQzLCAyMzMsIDksIDIsIDI0MywgMjE1LCA5LCAyLCAyNDMsIDE4OCwgOSwgMiwgMjQzLCAxODksIAotICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDMsIDE4NiwgOSwgMiwgMjQzLCAxNzYsIDksIDIsIDI0MywgMTc3LCAyMjksIDIzMiwgCi0gICAgMTA2LCAyMzcsIDIwOSwgMjQzLCAxNTYsIDksIDIsIDI0MywgMTU2LCA5LCAyLCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAKLSAgICAxMTUsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIDIzNywgMjA4LCA5LCAyLCAyNDIsIDQzLCAyMTMsIDI0LCA5LCAyLCAyNDIsIAotICAgIDQwLCA5LCAyLCAyNDIsIDQxLCAyMywgMjQxLCA0LCA5LCAyLCAyNDIsIDM5LCA5LCAyLCAyNDIsIDM3LCA5LCAyLCAyNDIsIAotICAgIDM2LCA5LCAyLCAyNDIsIDM1LCA5LCAyLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDI5LCA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOCwgCi0gICAgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDIsIDI4LCA5LCAyLCAyNDIsIDIxLCA5LCAyLCAKLSAgICA3NCwgOSwgMiwgMTg4LCAyMywgMjE5LCA5NiwgOSwgMiwgMTg4LCAxMTUsIDE4OCwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCAKLSAgICA5LCAyLCAyNDEsIDE5MCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAzNCwgOTEsIDIzNywgMTYwLCA5MSwgMjQ0LCAyMTIsIDksIDIsIAotICAgIDI0MSwgMTkxLCAyMywgMjM4LCAyMjQsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI0LCAxNTUsIDksIDIsIDI0MSwgMTkxLCAyMywgCi0gICAgMjE1LCA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIxMywgNDMsIDksIDIsIDI0MSwgMTkxLCAyMywgNjgsIDksIDIsIDI0MSwgCi0gICAgMTYzLCA5LCAyLCAyNDEsIDE1MSwgOSwgMiwgMjQxLCAxMjIsIDksIDIsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIzLCAKLSAgICAyMzgsIDIzMiwgOSwgMiwgMjQxLCA5MywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjQxLCA5MywgMjMsIDIyNSwgCi0gICAgMjAsIDksIDIsIDI0MSwgOTMsIDI0NSwgMTI0LCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMTksIDI1MSwgMjQxLCA5MiwgCi0gICAgOSwgMiwgMjQxLCA5MywgMjExLCAxNzYsIDksIDIsIDI0MSwgMjUsIDksIDIsIDI0MSwgMjIsIDksIDIsIDI0MSwgNCwgOSwgCi0gICAgMiwgMjQwLCAxNzksIDksIDIsIDI0MCwgMTgwLCAyMywgNjMsIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMwLCAKLSAgICA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMjUwLCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDIsIDMwLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMTUyLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzEsIDg2LCAKLSAgICAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjksIDIzMiwgCi0gICAgMjExLCAxNzYsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAyMDcsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAxMTMsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI3LCAxNDgsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMywgMjI2LCAyMzksIDksIDIsIDI0MCwgMTgwLCAyMywgMjA3LCA0MCwgOSwgMiwgMjQwLCAxODAsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzksIDgsIDksIDIsIDIzOSwgOSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNiwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMzQsIDkxLCAyNDQsIDIxMywgOTEsIDE1MiwgOSwgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAxNTIsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM5LCA3LCAyMywgMjUxLCAxNTAsIDIwOSwgMTQyLCA5MSwgCi0gICAgMjEwLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgNzUsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDI1MCwgNzQsIDkxLCAyMzgsIDI0NiwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjQ4LCAyMzEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ3LCAxNjAsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDI0NywgMTYxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NCwgMjEyLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyNDMsIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjQzLCAxODksIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIAotICAgIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMiwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjMsIDkxLCAyMjgsIDExMywgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCA5MiwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCA5MywgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNCwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjM4LCA4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA3OSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAKLSAgICA4MCwgOTEsIDYzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDY0LCA5MSwgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjM3LCAxNjAsIDkxLCAyMjYsIDI0MCwgOTEsIDI0MSwgNCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAxNDAsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIzNywgMTQxLCA5MSwgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgNCwgOTEsIDIyNywgCi0gICAgMTQ4LCA5LCAyLCAyMzksIDcsIDIzLCAyMzYsIDIxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjMwLCAyMTAsIDkxLCAyMzYsIDI3LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjM5LCA3LCAyMywgMjMwLCAKLSAgICAxMiwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgOTQsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDIyOSwgOTUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDIwOCwgOTEsIDI1MCwgMjMxLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMzksIDcsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjEsIDQxLCAKLSAgICAxMTUsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDE4NSwgOSwgMiwgMjM5LCA3LCAyMywgMjE1LCA4LCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMTQsIDIzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA0NCwgCi0gICAgOTEsIDIwNywgMTgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDksIDksIDIsIDIzOSwgNywgMjMsIDIxMCwgMjIwLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM5LCA3LCAyMywgNjgsIDksIDIsIDIzOSwgNywgMjMsIDIwNywgMjksIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIwNywgMzAsIDkxLCAyNDIsIDQyLCA5LCAyLCAyMzksIDcsIDExNSwgMjM5LCA2LCA5LCAyLCAKLSAgICAyMzksIDEsIDksIDIsIDIzOSwgMiwgMjQ1LCAxMjQsIDIzOSwgMSwgOSwgMiwgMjM4LCAyNTUsIDksIDIsIDIzOSwgMCwgCi0gICAgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAyMzgsIDI0NiwgOSwgMiwgMjM4LCAyNDcsIAotICAgIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAyMzgsIDI0NSwgOSwgMiwgMjM4LCAKLSAgICAyNDMsIDksIDIsIDIzOCwgMjM0LCA5LCAyLCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIAotICAgIDIzMywgMTE1LCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMzMsIDI0NSwgMTI0LCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMjQsIAotICAgIDksIDIsIDIzOCwgMjIzLCA5LCAyLCAyMzgsIDIxOCwgOSwgMiwgMjM4LCAxNjIsIDksIDIsIDIzOCwgMTYzLCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDIzOCwgODEsIDksIDIsIDIzOCwgODIsIDIzLCA3NCwgOSwgMiwgMjM4LCA4MiwgMjMsIDY4LCA5LCAyLCAKLSAgICAyMzgsIDgyLCAyNDUsIDEyNCwgMjM4LCA4MSwgOSwgMiwgMjM4LCA3OSwgOSwgMiwgMjM4LCA4MCwgMTE1LCAyMzgsIDc5LCAKLSAgICA5LCAyLCAyMzgsIDgwLCAyNDUsIDEyNCwgMjM4LCA3OSwgOSwgMiwgMjM4LCA3NiwgOSwgMiwgMjM4LCA2MywgOSwgMiwgCi0gICAgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIDIzOCwgNjEsIDksIDIsIDIzOCwgNjIsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIAotICAgIDIsIDIzOCwgNjIsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgNjIsIDIzLCAyMzEsIDg1LCA5LCAyLCAKLSAgICAyMzgsIDYyLCAyMywgMjI2LCAyNDAsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzgsIDYyLCAyMywgMTg1LCA5LCAyLCAyMzgsIAotICAgIDU3LCA5LCAyLCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM4LCA1NiwgMjA5LCAxNDEsIDksIDIsIDIzNywgCi0gICAgMjMwLCA5LCAyLCAyMzcsIDIzMSwgMjQ1LCAxMjQsIDIzNywgMjMwLCA5LCAyLCAyMzcsIDIyOCwgOSwgMiwgMjM3LCAyMjksIAotICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjM3LCAyMjksIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIxNSwgOSwgOTEsIDIwNywgMTk3LCA5LCAyLCAKLSAgICAyMzcsIDIyOSwgMjM3LCAyMDgsIDksIDIsIDIzNywgMjE5LCA5LCAyLCAyMzcsIDIyMCwgMjMsIDM0LCA5MSwgMjI4LCAxODMsIAotICAgIDksIDIsIDIzNywgMjIwLCAyMywgMjI4LCAxODMsIDksIDIsIDIzNywgMjIwLCAxMTUsIDIzNywgMjIwLCAyMjYsIDIzMCwgOSwgCi0gICAgMiwgMjM3LCAyMTIsIDksIDIsIDIzNywgMjEwLCA5LCAyLCAyMzcsIDIxMSwgMjMsIDIxMywgNDMsIDksIDIsIDIzNywgMjAyLCAKLSAgICA5LCAyLCAyMzcsIDIwMSwgOSwgMiwgMjM3LCAxOTcsIDksIDIsIDIzNywgMTk2LCA5LCAyLCAxNTIsIDksIDIsIDIzNywgCi0gICAgMTYwLCAyMDksIDE0MSwgOSwgMiwgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyMzcsIDE0MCwgOSwgMiwgMjM3LCAzLCA5LCAKLSAgICAyLCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzcsIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAyMzcsIDQsIDIzLCAyNDksIAotICAgIDE1LCA5LCAyLCAyMzcsIDQsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjM3LCA0LCAyMywgMjM4LCAyNTUsIDksIDIsIDIzNywgNCwgCi0gICAgMjMsIDIyOSwgODQsIDksIDIsIDIzNywgNCwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgNCwgMjMsIDIxMywgNDMsIDksIDIsIAotICAgIDIzNywgNCwgMjMsIDY4LCA5LCAyLCAyMzYsIDI2LCA5LCAyLCAyMzYsIDIxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjUwLCAKLSAgICAyMzEsIDksIDIsIDIzNiwgMjIsIDIzLCAyMzcsIDE0MCwgOSwgMiwgMjM2LCAyMiwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzYsIAotICAgIDIyLCAyMywgMjI3LCA5MiwgOSwgMiwgMjM2LCAyMiwgMjMsIDIwNywgMjksIDksIDIsIDIzNiwgMTcsIDksIDIsIDc1LCA5LCAKLSAgICAyLCAyMzUsIDIwNiwgNjMsIDksIDIsIDIzNSwgMTY2LCA5LCAyLCAyMzEsIDExMywgOSwgMiwgMjMxLCAxMTQsIDExNSwgCi0gICAgMjMxLCAxMTQsIDI0NywgMTYwLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAyMzEsIDExNCwgMjExLCAxNzYsIDksIDIsIDIzMSwgCi0gICAgODgsIDksIDIsIDIzMSwgODUsIDksIDIsIDIzMSwgODYsIDI0MywgMjE1LCA5LCAyLCAyMzEsIDg2LCAyMTYsIDU3LCA5LCAyLCAKLSAgICAyMzEsIDg2LCAxMTUsIDIzMSwgODYsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyMDcsIDMwLCAxMTUsIDIwNywgMjksIDksIAotICAgIDIsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzEsIDc3LCA5LCAyLCAyMzEsIDc4LCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMzEsIDc2LCA5LCAyLCAyMzEsIDY2LCA5LCAyLCAyMzEsIDY3LCAyMywgMjA5LCAyNDIsIDksIDIsIAotICAgIDIzMSwgNjcsIDI0NSwgMTI0LCAyMzEsIDY2LCA5LCAyLCAyMzEsIDY3LCAyMTksIDI1MSwgMjMxLCA2NiwgOSwgMiwgMjMxLCAKLSAgICA2NywgMjExLCAxNzYsIDksIDIsIDIzMSwgNTksIDksIDIsIDIzMSwgNDksIDksIDIsIDIzMCwgMjI0LCA5LCAyLCAyMzAsIAotICAgIDIwOSwgOSwgMiwgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTEsIDEyMiwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDI1MSwgMTIzLCA5MSwgMjI4LCAyMDcsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMTQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0MSwgMjIsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyNDEsIDQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzksIDgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDI0NiwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjI0LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjM4LCAyMjUsIDkxLCAyMTMsIDg5LCA5MSwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTYsIDkxLCAyMTQsIDIzMCwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMzAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIwMSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMSwgODUsIDksIDIsIDIzMCwgNDQsIAotICAgIDIzLCAyMzEsIDY2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMwLCAxMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyOSwgMTAwLCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjI5LCA5NCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNywgMTQ4LCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMjI2LCAyMzksIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIAotICAgIDI0MiwgNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCA4MSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgCi0gICAgMjEsIDkxLCAyMDksIDE4NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAKLSAgICAxNTYsIDkxLCAyMjEsIDM1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIyLCAyNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjEsIAotICAgIDQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE4LCAxNjcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTUsIDE0NSwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDIxNSwgMzYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTQsIDIzMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOTAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5LCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMjEyLCAxOTksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTIsIDE0OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMCwgMjI5LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjA5LCAyMTgsIDksIDIsIDIzMCwgNDQsIDIzLCA2OCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjA2LCAxODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDIsIDM5LCA5LCAyLCAyMzAsIDQyLCA5LCAyLCAKLSAgICAyMzAsIDQzLCAyNDUsIDEyNCwgMjMwLCA0MiwgOSwgMiwgMjMwLCAzMiwgOSwgMiwgMjMwLCAyOSwgOSwgMiwgMjMwLCAyNywgCi0gICAgOSwgMiwgMjMwLCAyNiwgOSwgMiwgMjMwLCAyNCwgOSwgMiwgMjMwLCAyNSwgMTE1LCAyMzAsIDI0LCA5LCAyLCAyMzAsIDEyLCAKLSAgICA5LCAyLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMCwgOCwgOSwgMiwgMjMwLCA5LCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjMwLCA5LCAyNDUsIDEyNCwgMjMwLCA4LCA5LCAyLCAyMzAsIDYsIDksIDIsIDIzMCwgNSwgOSwgCi0gICAgMiwgMjI5LCAyMzEsIDksIDIsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgCi0gICAgMiwgMjI5LCAyMzIsIDExNSwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAKLSAgICAyMjksIDE3MSwgOSwgMiwgMjI5LCAxMDAsIDksIDIsIDIyOSwgMTAxLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI5LCAxMDEsIAotICAgIDIzLCA2OCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjksIDk0LCA5LCAyLCAyMjksIDg0LCA5LCAyLCAKLSAgICAyMjksIDcxLCA5LCAyLCAyMjksIDcwLCA5LCAyLCAyMjksIDY4LCA5LCAyLCAyMjksIDY5LCAxMTUsIDIyOSwgNjgsIDksIDIsIAotICAgIDIyOCwgMjA5LCA5LCAyLCAyMjgsIDIxMCwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc0LCAyMjgsIDIxMCwgMTE1LCAyMzcsIAotICAgIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAyMDUsIDksIDIsIDIyOCwgMjA2LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMiwgMjI4LCAyMDQsIDksIDIsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDE5NywgMjM3LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgMTk1LCA5LCAyLCAyMjgsIDE4MywgOSwgMiwgMjI4LCAxODQsIDIxOSwgMjUxLCAyMjgsIDE4MywgOSwgMiwgMjI4LCAxNzcsIAotICAgIDksIDIsIDIyOCwgMTU1LCA5LCAyLCAyMjgsIDExMywgOSwgMiwgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDYzLCA5LCAKLSAgICAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyNDQsIDIxMywgOTEsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIDksIDIsIDIyOCwgOTUsIDIzLCAyNTEsIDM5LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCAyMzEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDc2LCAyMDIsIDM1LCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjQ0LCAxNTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM5LCA4LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMywgMjM4LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIzNywgMjIwLCA5MSwgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIDIzLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAKLSAgICAyMzcsIDE0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgNCwgMjMsIDIyMSwgNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIAotICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgCi0gICAgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIDIyNiwgMjM5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCAKLSAgICAxMDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIDg0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMTk3LCA5MSwgMjM3LCA0LCA5MSwgNjMsIDksIDIsIAotICAgIDIyOCwgOTUsIDIzLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI3LCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgCi0gICAgMjM5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjUsIDIwLCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjEyLCAyNDUsIDkxLCAyMzgsIDU2LCA5MSwgMjQxLCAyMiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMjQ1LCA5MSwgCi0gICAgMjM4LCA1NiwgMjA5LCAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgCi0gICAgMTk4LCA5MSwgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgCi0gICAgMjU1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDE4OCwgOTEsIDM0LCAKLSAgICA5MSwgMjExLCAxMSwgOTEsIDIwMSwgMjAxLCA5LCAyLCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIAotICAgIDkxLCA2MywgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAKLSAgICA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA2LCAxODYsIAotICAgIDksIDIsIDIyOCwgOTUsIDIxMSwgMTc2LCA5LCAyLCAyMjgsIDkyLCA5LCAyLCAyMjgsIDkzLCAyMywgMjEzLCA0MywgOSwgMiwgCi0gICAgMjI4LCA5MywgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5MywgMjM3LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgOTMsIDIzNywgMjA5LCAxMTUsIDIyOCwgOTMsIDIzNywgMjA5LCAyMTMsIDQzLCA5LCAyLCAyMjgsIDg4LCA5LCAyLCAyMjgsIAotICAgIDMwLCA5LCAyLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjI4LCAyOCwgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAxODQsIDkxLCAyMTUsIDE0NSwgOSwgMiwgMjI3LCAxNDgsIDksIDIsIAotICAgIDIyNywgMTI5LCA5LCAyLCAyMjcsIDExNywgOSwgMiwgMjI3LCA5MiwgOSwgMiwgMjI2LCAyMzksIDksIDIsIDIyNiwgMjQwLCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjUxLCAzOSwgOSwgMiwgMjI2LCAyMzgsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDUsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDQsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMSwgNjYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOSwgOSwgCi0gICAgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjgsIDkxLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyOCwgMTE0LCA5MSwgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjgsIDk0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyMSwgODQsIDksIDIsIDIyNiwgMjM4LCAyMywgCi0gICAgMjEyLCAxNjMsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTQxLCA5MSwgMjQ3LCAxOTMsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjA3LCAxOTcsIDksIDIsIDIyNiwgMjM4LCAyMDksIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDI0NSwgCi0gICAgMTI0LCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIxOSwgMjUxLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIxMSwgCi0gICAgMTc2LCA5LCAyLCAyMjYsIDIzOCwgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIAotICAgIDIzMSwgMTE1LCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAyMzEsIDIxOSwgMjUxLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAyMzEsIAotICAgIDIxMywgMjQsIDksIDIsIDIyNiwgMjI3LCA5LCAyLCAyMjYsIDIyNCwgOSwgMiwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAKLSAgICAxMTUsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgMTE1LCAyMjYsIDIyMywgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIAotICAgIDIsIDE5MiwgOSwgMiwgMjI1LCAxNzcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI1LCAxNzcsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMjUsIDE3NiwgOSwgMiwgMjI1LCAxNDgsIDksIDIsIDIyNSwgMTAwLCA5LCAyLCAyMjUsIDc5LCA5LCAyLCAyMjUsIDc4LCAKLSAgICA5LCAyLCAyMjUsIDIwLCA5LCAyLCAyMjQsIDIyOCwgOSwgMiwgMjI0LCAxNTUsIDksIDIsIDIyNCwgMTEwLCA5LCAyLCAyMjMsIAotICAgIDI0NiwgOSwgMiwgMjIzLCAyNDcsIDExNSwgMjIzLCAyNDYsIDksIDIsIDIyMywgMjM1LCA5LCAyLCAyMjMsIDIzNiwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDIyMywgMjE3LCA5LCAyLCAyMjMsIDIwMywgOSwgMiwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAyMywgCi0gICAgNjMsIDksIDIsIDIyMywgMjAwLCAyMywgMjI4LCAxODMsIDksIDIsIDIyMywgMjAwLCAyMywgMjAyLCAxMTYsIDksIDIsIAotICAgIDIyMywgMjAwLCAxMTUsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDM0LCA5MSwgMjAxLCAKLSAgICAyMDEsIDksIDIsIDIyMywgMjAwLCAyNDUsIDEyNCwgMjIzLCAxOTksIDksIDIsIDIyMywgMTk3LCA5LCAyLCAyMjMsIDE5OCwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDM0LCA5MSwgMjQzLCAyMzMsIDksIDIsIDIyMywgMTk4LCAyMywgMjQzLCAKLSAgICAyMzMsIDksIDIsIDIyMywgMTk4LCAyMzcsIDIwOCwgOSwgMiwgMjAxLCAyMDEsIDksIDIsIDIyMywgMTA5LCA5LCAyLCAyMjMsIAotICAgIDk2LCA5LCAyLCAyMjMsIDk3LCAyMzAsIDIzOCwgOSwgMiwgMjIzLCA5NywgMjMsIDIxMiwgMjAwLCAyMDksIDE0MSwgOSwgMiwgCi0gICAgMjIzLCA5NywgMjE5LCAyNTEsIDIyMywgOTYsIDksIDIsIDIyMywgOTUsIDksIDIsIDIyMywgODgsIDIyMSwgMjYsIDksIDIsIAotICAgIDIyMywgODcsIDksIDIsIDIyMywgODYsIDksIDIsIDIyMiwgMjQwLCA5LCAyLCAyMjIsIDI0MSwgMjMsIDYzLCA5LCAyLCAKLSAgICAyMjIsIDI0MSwgMjMsIDIwNywgMjksIDksIDIsIDIyMiwgMjQxLCAyMTMsIDI0LCA5LCAyLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjIyLCAxMDEsIDIzLCA3NCwgOSwgMiwgMjIyLCA5OSwgOSwgMiwgMjIyLCA2OSwgOSwgMiwgMjIyLCA3MCwgMjMsIDIzOCwgCi0gICAgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA3MCwgMjMsIDIzOCwgMjI1LCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAKLSAgICAyMjIsIDY1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDIxOSwgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjIsIAotICAgIDI0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMSwgNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMjIsIAotICAgIDY2LCAyMywgMjEzLCA0NCwgOTEsIDM0LCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIAotICAgIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAKLSAgICAyMywgMjA3LCA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIyLCA1MywgOSwgCi0gICAgMiwgMjIxLCA4NCwgOSwgMiwgMjIxLCA1NiwgOSwgMiwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjI1LCA3OSwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgCi0gICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIxNSwgOSwgMTE1LCAyMjEsIDQxLCAyMjgsIDkzLCAKLSAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjA2LCAxODYsIDksIDIsIDIyMSwgNDEsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQwLCA5LCAyLCAKLSAgICAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MSwgMjI4LCA5MywgMTE1LCAyMjgsIDkyLCA5LCAyLCAyMjEsIDM1LCA5LCAyLCAKLSAgICAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI1MCwgNjksIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQ4LCA4NiwgOSwgCi0gICAgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDIsIDM3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIzNywgMjE5LCAKLSAgICA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgCi0gICAgMjMsIDIzMCwgMjcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyMSwgMzYsIDI1MSwgCi0gICAgMTUwLCAyMywgMjIyLCAyNDAsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjEyLCAxMzgsIDksIDIsIDIyMSwgMzYsIAotICAgIDI1MSwgMTUwLCAyMywgMjA3LCA0MCwgOSwgMiwgMjIxLCAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODYsIDksIDIsIDIyMSwgCi0gICAgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg3LCA2OCwgOSwgMiwgMTg1LCA5LCAyLCAyMTksIDE1OSwgOSwgMiwgMjE5LCAxMjIsIAotICAgIDksIDIsIDIxOSwgOTYsIDksIDIsIDIxOCwgMjIyLCA5LCAyLCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxNjgsIDIzLCA2MywgOSwgCi0gICAgMiwgMjE4LCAxNjgsIDIzLCAyNTEsIDIzMiwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMTgsIDE2OCwgCi0gICAgMjMsIDI0NywgMTkzLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDc0LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDc1LCA5LCAyLCAyMTgsIAotICAgIDE2OCwgMjMsIDIzNSwgMTY2LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDY4LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIxOCwgMTY4LCAyNDUsIDEyNCwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTA5LCA5LCAyLCAyMTgsIDExMCwgMjMsIAotICAgIDIzMCwgOCwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKLSAgICAyMTgsIDExMCwgMjE5LCAyNTEsIDIxOCwgMTA5LCA5LCAyLCAyMTYsIDIyMCwgOSwgMiwgMjE2LCAyMTQsIDksIDIsIDIxNiwgCi0gICAgNTcsIDksIDIsIDIxNSwgMTQ1LCA5LCAyLCAyMTUsIDM2LCA5LCAyLCAyMTUsIDIzLCAyMjEsIDI2LCA5LCAyLCAyMTUsIDIyLCAKLSAgICA5LCAyLCAyMTUsIDIzLCAyMywgNjMsIDksIDIsIDIxNSwgMjMsIDIzLCAyNDIsIDQyLCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjQyLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDIzMCwgMTIsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjE1LCAyMywgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI0LCAKLSAgICAxNTUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjE1LCA4LCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMywgMjEzLCA5LCA5LCAyLCAyMTUsIDIzLCAyMywgMjEwLCAxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDM1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA2LCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjA2LCAyMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjE1LCAyMywgMTE1LCAyMTUsIDIyLCA5LCAyLCAKLSAgICAyMTUsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjE1LCA4LCA5LCAyLCAyMTUsIDksIDIyOCwgOTUsIDIzLCAyNTAsIDczLCA5LCAKLSAgICAyLCAyMTQsIDIzOCwgOSwgMiwgMjE0LCAyMzAsIDksIDIsIDIxMywgOTAsIDksIDIsIDIxMywgODgsIDksIDIsIDIxMywgODksIAotICAgIDIzLCA2MywgOSwgMiwgMjEzLCA4OSwgMjMsIDI0OSwgMTUsIDksIDIsIDIxMywgODksIDIzLCAyMzgsIDU1LCA5LCAyLCAKLSAgICAyMTMsIDg5LCAyMywgMjIyLCAyNDAsIDksIDIsIDIxMywgODksIDIzLCAyMTIsIDE5NywgOSwgMiwgMjEzLCA4OSwgMjMsIAotICAgIDIwNywgMTgxLCA5LCAyLCAyMTMsIDg5LCAyMywgNjgsIDksIDIsIDIxMywgODksIDIzLCAxMDYsIDkxLCA2MywgOSwgMiwgCi0gICAgMjEzLCA4NiwgOSwgMiwgMjEzLCA4NCwgOSwgMiwgMjEzLCA1OSwgOSwgMiwgMjEzLCA0MywgOSwgMiwgMjEzLCA0NCwgMjM2LCAKLSAgICAyNiwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQ0LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQ0LCAyMTAsIDExLCAxMTUsIDIxMCwgMTEsIDIzOCwgMjI1LCAxMTUsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMTMsIDM2LCA5LCAyLCAyMTMsIDMxLCA5LCAyLCAyMTMsIDI3LCA5LCAyLCAyMTMsIDI2LCA5LCAKLSAgICAyLCAyMTMsIDIzLCA5LCAyLCAyMTMsIDksIDksIDIsIDIxMywgMTAsIDIzLCA2MywgOSwgMiwgMjEzLCAxMCwgMjMsIDIzMSwgCi0gICAgNjYsIDksIDIsIDIxMywgMywgOSwgMiwgMjEzLCA0LCAyMywgNjMsIDksIDIsIDIxMywgNCwgMjMsIDI0OCwgMjUzLCA5LCAyLCAKLSAgICAyMTMsIDQsIDIzLCAyNDcsIDE3MSwgOSwgMiwgMjEzLCA0LCAyMywgMjQzLCAxNzYsIDksIDIsIDIxMywgNCwgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjEzLCA0LCAyMywgMjI4LCAxNzcsIDksIDIsIDIxMywgNCwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMTMsIDQsIDIzLCAKLSAgICAyMjMsIDIzNSwgOSwgMiwgMjEzLCA0LCAyMywgMjE1LCA4LCA5LCAyLCAyMTIsIDI1MywgOSwgMiwgMjEyLCAyNDgsIDksIDIsIAotICAgIDIxMiwgMjQ5LCAyMDksIDE0MSwgOSwgMiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDI0NywgMTYxLCAxMTUsIDI0NywgCi0gICAgMTYwLCA5LCAyLCAyMTIsIDI0NCwgOSwgMiwgMjEyLCAxOTksIDksIDIsIDIxMiwgMjAwLCAxMTUsIDIzMCwgMjM5LCAyMTIsIAotICAgIDE5OSwgOSwgMiwgMjEyLCAxOTcsIDksIDIsIDIxMiwgMTk2LCA5LCAyLCAyMTIsIDE2MiwgOSwgMiwgMjEyLCAxNjMsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyMTIsIDE0OSwgOSwgMiwgMjEyLCAxNDcsIDksIDIsIDIxMiwgMTQ4LCAxMTUsIDIxMiwgMTQ4LCAyMTIsIAotICAgIDE5NywgOSwgMiwgMjEyLCAxNDAsIDksIDIsIDIxMiwgMTM4LCA5LCAyLCAyMTEsIDEwLCA5LCAyLCAyMTEsIDExLCAxMTUsIAotICAgIDIxMSwgMTAsIDksIDIsIDIxMCwgMjMyLCA5LCAyLCAyMTAsIDIzMSwgOSwgMiwgMjEwLCAyMjksIDksIDIsIDIxMCwgMjIwLCAKLSAgICA5LCAyLCAyMTAsIDIxOSwgOSwgMiwgMjEwLCAxOTMsIDksIDIsIDIxMCwgMTkyLCA5LCAyLCAyMTAsIDIyLCA5LCAyLCAyMTAsIAotICAgIDIzLCAyNTAsIDU5LCA5LCAyLCAyMTAsIDIzLCAyMywgMjM3LCAzLCA5LCAyLCAyMTAsIDIzLCAyMywgMjI0LCAxNTUsIDksIAotICAgIDIsIDIxMCwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTAsIDEwLCA5LCAyLCAyMTAsIDExLCAxMTUsIDIxMCwgMTEsIDIyMiwgCi0gICAgMTAxLCAxMTUsIDIyMiwgMTAxLCAyNDMsIDE1NywgMTE1LCAyNDMsIDE1NiwgOSwgMiwgMjEwLCAxMSwgMjExLCAxNzYsIDksIAotICAgIDIsIDIwOSwgMjU1LCA5LCAyLCAxNjAsIDIzLCAyNDgsIDg2LCA5LCAyLCAxNjAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMTYwLCAKLSAgICAyMywgMjEzLCA0MywgOSwgMiwgMTYwLCAyMywgMjEyLCAxOTksIDksIDIsIDE2MCwgMjMsIDIwNywgMTk3LCA5LCAyLCAxNjAsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyMTgsIDksIDIsIDIwOSwgMTg3LCA5LCAyLCAyMDksIAotICAgIDE4OCwgMjM3LCAyMDgsIDksIDIsIDIwOSwgMiwgOSwgMiwgMjA5LCAzLCAyMDksIDE0MSwgOSwgMiwgMjA4LCAyMjksIDksIAotICAgIDIsIDIwOCwgMjA2LCA5LCAyLCAyMDgsIDIwNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNiwgCi0gICAgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDcsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMDcsIDIwMywgOSwgMiwgMjA3LCAxOTcsIDksIDIsIDIwNywgMTk1LCA5LCAyLCAyMDcsIDE5MSwgOSwgCi0gICAgMiwgMjA3LCAxODEsIDksIDIsIDIwNywgMTgyLCAxMTUsIDIwNywgMTgyLCAyMDIsIDExNywgMTE1LCAyMDIsIDExNiwgOSwgCi0gICAgMiwgNjgsIDksIDIsIDEwNiwgMjM3LCAyMTksIDksIDIsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjE5LCAKLSAgICAxNjksIDExNSwgMjE5LCAxNjksIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTAsIAotICAgIDE5NCwgMTE1LCAyMTAsIDE5MywgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMTA2LCAyMTYsIDczLCAxMTUsIDEwNiwgMjE2LCA3MiwgCi0gICAgOSwgMiwgMjA3LCA0MCwgOSwgMiwgMjA3LCAzNSwgOSwgMiwgMjA3LCAyOSwgOSwgMiwgMjA3LCAzMCwgMjI4LCAxNzcsIDksIAotICAgIDIsIDIwNywgMzAsIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDMwLCAyMywgMjI0LCAxNTUsIDksIDIsIDIwNywgMzAsIDIzLCAKLSAgICAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjA3LCAzMCwgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDEwNiwgMjM3LCAyMDgsIAotICAgIDksIDIsIDIwNywgMzAsIDIzNywgMjA4LCA5LCAyLCAyMDcsIDMwLCAyMTMsIDI0LCA5LCAyLCAyMDcsIDMwLCAyMTMsIDI1LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAyNSwgOSwgMiwgMjA3LCA2LCA5LCAyLCAyMDcsIDcsIDIzLCAyMjgsIDk0LCA5LCAKLSAgICAyLCAyMDcsIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQ0LCAyMTIsIDksIDIsIDIwNywgNywgMjMsIDIxMywgODgsIDksIDIsIAotICAgIDIwNywgNywgMjMsIDY4LCA5LCAyLCAyMDcsIDUsIDksIDIsIDIwNywgMSwgOSwgMiwgMjA3LCAyLCAyMywgMjI5LCAyMzEsIAotICAgIDksIDIsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgMjA2LCAyNTUsIDksIDIsIDIwNywgMCwgMjM3LCAyMDgsIDksIDIsIDIwNiwgCi0gICAgMjEwLCA5LCAyLCAyMDYsIDIxMSwgMjQ1LCAxMjQsIDIwNiwgMjEwLCA5LCAyLCAyMDYsIDIxMSwgMjEzLCAyNCwgOSwgMiwgCi0gICAgMjA2LCAyMDgsIDksIDIsIDIwNiwgMjA5LCAyMywgMzQsIDkxLCAxNTIsIDksIDIsIDIwNiwgMjA5LCAyMywgMzQsIDkxLCAKLSAgICAyMDEsIDIwMSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyNTEsIDM5LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDE1MiwgOSwgMiwgCi0gICAgMjA2LCAyMDksIDIzLCAyMjEsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgCi0gICAgMjA3LCA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MSwgOTEsIDI0OCwgODYsIDksIDIsIAotICAgIDIwNiwgMjA3LCA5LCAyLCAyMDYsIDIwNCwgOSwgMiwgMjA2LCAyMDMsIDksIDIsIDIwNiwgMTk5LCA5LCAyLCAyMDYsIDIwMCwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI1MCwgNjksIDksIDIsIDIwNiwgMjAwLCAyMywgMTQyLCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDI0MiwgMzEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCi0gICAgMjQ2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNTIsIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjMxLCA4NSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMCwgCi0gICAgMjA5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAKLSAgICAyMDYsIDIwMCwgMjMsIDIyNCwgMTEwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE4NSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTMsIAotICAgIDQzLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMiwgMTQ3LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIwNywgMjAzLCA5LCAyLCAKLSAgICAyMDYsIDIwMCwgMjMsIDEwNiwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIwNywgMjksIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5OCwgMjMsIDY4LCA5LCAyLCAyMDYsIAotICAgIDE4NiwgOSwgMiwgMjA2LCAxODcsIDIzLCA2MywgOSwgMiwgMjA2LCAxODcsIDIzLCAyMjgsIDIwOSwgOSwgMiwgMjA2LCAKLSAgICAxODcsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjA2LCAxODcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA2LCAxODIsIDksIDIsIAotICAgIDIwNiwgMTg1LCA5LCAyLCAyMDYsIDE4MywgOSwgMiwgMjA2LCAxNzksIDksIDIsIDIwNiwgMTY3LCA5LCAyLCAyMDYsIDE2OCwgCi0gICAgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMDYsIDE2NiwgOSwgMiwgMjAyLCAxMTYsIDksIDIsIDIwMiwgMTE3LCAyMDksIDE0MSwgCi0gICAgOSwgMiwgMjAyLCAxMTcsIDEwMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDIsIDExMiwgOSwgMiwgMjAyLCAxMDUsIDksIDIsIAotICAgIDIwMiwgOTEsIDksIDIsIDIwMiwgMzksIDksIDIsIDIwMiwgNDAsIDExNSwgMjAyLCAzOSwgOSwgMiwgMjAyLCAzOCwgOSwgMiwgCi0gICAgMjAyLCAzNiwgOSwgMiwgMjAyLCAzNywgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDIwMiwgMzEsIDksIDIsIDIwMiwgMjIsIAotICAgIDksIDIsIDIwMiwgNiwgOSwgMiwgMjAyLCA0LCA5LCAyLCAyMDIsIDUsIDIzLCA2MywgOSwgMiwgMjAyLCAzLCA5LCAyLCAKLSAgICAyMDIsIDIsIDksIDIsIDIyOSwgMjU0LCAyNDEsIDExOSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQwLCA5LCAyLCAyNTEsIAotICAgIDE1MCwgMjMsIDYzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIyOCwgMTk4LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIAotICAgIDIwNywgNDEsIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwMiwgOSwgMiwgMjQzLCAxNTcsIDkxLCAyMTIsIDE5OSwgOSwgMiwgCi0gICAgMjQyLCA0MSwgMjMsIDIxMywgNDMsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAyMTksIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCAyMzIsIDkxLCAyMzAsIDEzLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDI1MCwgNzMsIDksIDIsIDIzOCwgMTg5LCA5LCAyLCAyMzgsIDcxLCA5LCAyLCAyMzYsIDMsIDksIDIsIDIzMCwgNDQsIAotICAgIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU1LCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMTksIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjI2LCAyMjIsIDksIDIsIDIzMCwgNDQsIDIzLCAxODUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTIsIAotICAgIDE5MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjAzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA2LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMjYsIDIzOCwgMjEzLCAyNSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAKLSAgICAyMywgMjQxLCA1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMjI0LCAyMjcsIDksIAotICAgIDIsIDIyMywgMTk4LCAyMywgMjAyLCAxMTYsIDksIDIsIDIyMywgMTA4LCA5LCAyLCAyMjIsIDY4LCA5LCAyLCAyMjIsIDY3LCAKLSAgICA5LCAyLCAyMjIsIDY2LCAyMywgMjQ4LCAyNTMsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMjEsIDU3LCAKLSAgICAyMTUsIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjE4LCAyMjMsIDI1MCwgNTksIDksIDIsIDIxOCwgMTEzLCA5LCAKLSAgICAyLCAyMTUsIDIzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIwOSwgMSwgOSwgMiwgMjA3LCA3LCAyMywgMjI1LCAKLSAgICAyMCwgOSwgMiwgMTA2LCA2OCwgOSwgMTQxLCAyLCAxMjAsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNTAsIDc1LCA5LCAKLSAgICAxNDEsIDIsIDIzOSwgMTQ3LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMiwgCi0gICAgODgsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI1MCwgNzUsIAotICAgIDksIDE0MSwgMiwgMjIyLCA2NCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgCi0gICAgMTQ3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjQzLCAKLSAgICAxNTYsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNDMsIDE1NiwgOSwgCi0gICAgMTQxLCAyLCAyMjIsIDY0LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDE0NywgNjgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIAotICAgIDY4LCA5LCAxNDEsIDIsIDIxMiwgODgsIDY4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCA2OCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgCi0gICAgNjgsIDksIDE0MSwgMiwgMjIyLCA2NCwgNjgsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjAsIAotICAgIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyNiwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTY0LCA5LCAKLSAgICAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMTMsIAotICAgIDExMiwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIzOCwgCi0gICAgMTY0LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTIwLCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjYsIAotICAgIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjEsIAotICAgIDksIDE0MSwgMiwgMTIwLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgCi0gICAgNjAsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMTMsIAotICAgIDU5LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIxMywgNTksIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIxMywgNTksIDksIDE0MSwgMiwgCi0gICAgMjQxLCAxNDMsIDIxMywgNTksIDksIDE0MSwgMiwgMjIyLCA2NCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMTgsIDIxMywgNTQsIAotICAgIDksIDE0MSwgMiwgMTIwLCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgCi0gICAgNTUsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMTMsIAotICAgIDU0LCA5LCAxNDEsIDIsIDIxMywgNjAsIDIzLCAyMzgsIDI0NywgOTEsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMywgNjAsIAotICAgIDIzLCAyMzgsIDI0NywgOTEsIDIyNCwgMTEwLCA5LCAxNDEsIDIsIDExOCwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTIwLCAKLSAgICAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTcsIDIwNiwgNjksIAotICAgIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ3LCAxNTYsIDksIDE0MSwgCi0gICAgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgMjQxLCA2LCA5LCAxNDEsIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDI0MSwgMywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE4LCA5LCAxNDEsIDIsIDIzOSwgCi0gICAgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICAyMjcsIDExOSwgNjMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOSwgMjQ5LCAyNTUsIAotICAgIDksIDE0MSwgMiwgMjEyLCA4OCwgMjA2LCA2OSwgMjM5LCAxNTksIDI1MCwgNzEsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgCi0gICAgNjksIDIzOSwgMTU5LCAyMzEsIDU4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgCi0gICAgNjMsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAyNDksIDI1NSwgOSwgMTQxLCAyLCAKLSAgICAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAxNTksIDIwNiwgMTgxLCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIAotICAgIDE1OSwgMjA2LCAxODAsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzQsIDksIDE0MSwgMiwgCi0gICAgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzMsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAKLSAgICAxNTksIDIzMSwgNzIsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzUsIDYzLCA5LCAxNDEsIAotICAgIDIsIDEyMCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTI2LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAKLSAgICAyMzksIDE0NywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAKLSAgICAxNDEsIDIsIDIxMiwgODgsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDExOCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgCi0gICAgMTIwLCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAxMjYsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MCwgCi0gICAgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDEsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIAotICAgIDI0MCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAyNDEsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNzcsIDksIAotICAgIDE0MSwgMiwgMjIyLCA3OCwgOSwgMTQxLCAyLCAxMTgsIDI0MSwgMiwgOSwgMTQxLCAyLCAxMjAsIDI0MSwgMiwgOSwgMTQxLCAKLSAgICAyLCAxMTgsIDIwOSwgNjEsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgMjA5LCA1OCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgCi0gICAgMjM5LCAyMzMsIDIxMiwgNzcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDExOCwgMjA5LCA2MSwgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDYzLCA5LCAxNDEsIDIsIDEyMCwgMjA5LCA1OCwgMjA2LCA2OSwgMjM5LCAxNTksIDYzLCA5LCAxNDEsIDIsIDExOCwgMjQxLCAKLSAgICAxMzksIDI1MCwgNzUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIDU2LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAKLSAgICAxMTgsIDIxMiwgNzgsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIDExOCwgMjE3LCA1NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgCi0gICAgNTYsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDExOCwgMTYyLCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTE4LCAKLSAgICAyMDksIDYwLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMjAsIDIwOSwgNTcsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDIzOSwgCi0gICAgMTUzLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyNDAsIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAxMDYsIDIwNiwgNjksIDE4LCAKLSAgICA5LCAxNDEsIDIsIDIzOSwgMjMzLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIxMiwgODgsIDEwNiwgMjA2LCA2OSwgCi0gICAgMTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDEwNiwgMjA2LCAKLSAgICA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA2NCwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMjE3LCAxNzksIDIsIDM4LCAyNTAsIAotICAgIDYyLCAyMDMsIDIzOCwgMjQzLCAxNDEsIDksIDIxNywgMTc5LCAyLCA4MCwgMjQ1LCAyNDIsIDksIDIxNywgMTc5LCAyLCAKLSAgICAyNDMsIDIyOCwgMjQ1LCAyNDIsIDksIDIxNywgMTc5LCAyLCAyNDMsIDIyOCwgMjA4LCA4MSwgOSwgMjE3LCAxNzksIDIsIAotICAgIDI0MywgMjI4LCAyMTcsIDYxLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDEsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjMsIDIxMiwgMTk3LCA5LCAyLCAyNTEsIDEyMywgMjMsIDI0MSwgNCwgOSwgMiwgMjQ5LCAxNiwgMjMsIDI0MywgMTU3LCAKLSAgICAyMDksIDE0MSwgOSwgMiwgMjQ5LCA0LCAyMywgMjUxLCAxNDksIDksIDIsIDI0OSwgNCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyNDksIDQsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIzLCAyMjMsIDEwOSwgOSwgMiwgCi0gICAgMjQ0LCAyMTMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjQ0LCAyMDQsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQzLCAxODksIDIzLCAKLSAgICAyMzEsIDg1LCA5LCAyLCAyNDMsIDE4OSwgMjMsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMjQzLCAxODcsIDIzLCAyMDcsIDI5LCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCAyMDAsIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDIsIDM4LCAKLSAgICAyMywgMjUwLCA3NiwgMjUwLCA1MCwgMjI3LCAyMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjQyLCAKLSAgICAzOCwgMjMsIDI0MiwgMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyNDEsIDIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM5LCA4LCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA4MSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDE1MiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzNywgMywgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgODIsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjgsIDI4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI2LCAyMjgsIDkxLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI1LCA3OSwgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyNCwgMjI4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI0LCAxNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyNDIsIDM4LCAyMywgMjEzLCA0MywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIxMiwgMTYzLCAyMzcsIDIwOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQxLCAxOTEsIDIzLCAKLSAgICAyMTksIDk2LCA5LCAyLCAyNDEsIDIzLCAyMDMsIDE5NiwgOSwgMiwgMjQxLCA1LCAyNDUsIDEyNCwgMjQxLCA0LCA5LCAyLCAKLSAgICAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjM3LCAzLCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIAotICAgIDIyOCwgMTEzLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAKLSAgICAyMywgMjI1LCAyMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjQsIDIyOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgCi0gICAgMjUsIDIzLCAyMTEsIDEwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMywgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjMxLCAKLSAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjQxLCAyNSwgOSwgMiwgMjM5LCA3LCAyMywgMjM5LCA4LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNSwgOTEsIDI0MywgCi0gICAgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNSwgOTEsIDIyMiwgMjQwLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIAotICAgIDE2MCwgOTEsIDYzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyMjgsIDI4LCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDIzOSwgNywgMjMsIDIyNiwgCi0gICAgMjI3LCA5LCAyLCAyMzksIDcsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDAsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIyMiwgMjQxLCA5MSwgMjQxLCAxOTAsIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQxLCA5MSwgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCAzLCA5LCAyLCAyMzksIDcsIDIzLCAyMDIsIDIyLCA5LCAyLCAyMzksIDIsIDIxNSwgCi0gICAgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMzgsIDE2MywgMjMsIDY4LCA5LCAyLCAyMzgsIDU2LCAyMywgMjM4LCAKLSAgICA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzNywgMjI5LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzNywgCi0gICAgMjIwLCA5MSwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzcsIDE2MCwgMjA5LCAxNDIsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMzcsIDQsIDIzLCAyNTAsIDc2LCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDcsIAotICAgIDE5MywgOSwgMiwgMjMwLCA0NCwgMjMsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDIwNiwgMjEwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjAyLCA3LCAxMTUsIDIwMiwgNiwgOSwgMiwgMjI4LCA4MywgCi0gICAgOSwgMiwgMjI4LCA4MSwgOSwgMiwgMjI4LCA4MCwgOSwgMiwgMjI4LCA3OSwgOSwgMiwgMjI4LCA3OCwgOSwgMiwgMjI4LCAKLSAgICA3NywgOSwgMiwgMjI4LCA3NiwgOSwgMiwgMjI4LCA3NSwgMTE1LCAyMjgsIDc1LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA3NCwgCi0gICAgOSwgMiwgMjI4LCA3MywgMTE1LCAyMjgsIDcyLCA5LCAyLCAyMjgsIDcxLCA5LCAyLCAyMjgsIDcwLCA5LCAyLCAyMjgsIDY5LCAKLSAgICA5LCAyLCAyMjgsIDY4LCA5LCAyLCAyMjgsIDY3LCA5LCAyLCAyMjgsIDY2LCA5LCAyLCAyMjgsIDY1LCA5LCAyLCAyMjgsIAotICAgIDY0LCA5LCAyLCAyMjgsIDYzLCA5LCAyLCAyMjgsIDYyLCA5LCAyLCAyMjgsIDYxLCA5LCAyLCAyMjgsIDYwLCA5LCAyLCAKLSAgICAyMjgsIDU5LCA5LCAyLCAyMjgsIDU4LCA5LCAyLCAyMjgsIDU3LCA5LCAyLCAyMjgsIDU2LCA5LCAyLCAyMjgsIDU1LCA5LCAKLSAgICAyLCAyMjgsIDU0LCA5LCAyLCAyMjgsIDUyLCA5LCAyLCAyMjgsIDUzLCAyMywgMjM3LCAyMzAsIDksIDIsIDIyOCwgNTMsIAotICAgIDIzLCAyMzEsIDg1LCA5LCAyLCAyMjgsIDUzLCAyMywgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgCi0gICAgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIDIwNywgNDEsIDkxLCAyNDksIAotICAgIDMyLCA5LCAyLCAyMjgsIDUxLCA5LCAyLCAyMjgsIDUwLCA5LCAyLCAyMjgsIDQ5LCA5LCAyLCAyMjgsIDQ4LCA5LCAyLCAKLSAgICAyMjgsIDQ3LCA5LCAyLCAyMjgsIDQ2LCA5LCAyLCAyMjgsIDQ1LCA5LCAyLCAyMjgsIDQ0LCA5LCAyLCAyMjgsIDQzLCA5LCAKLSAgICAyLCAyMjgsIDQyLCA5LCAyLCAyMjgsIDQwLCA5LCAyLCAyMjgsIDQxLCAyMywgMjUwLCA3NSwgOSwgMiwgMjI4LCA0MSwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIyOCwgNDEsIDIzLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNDEsIAotICAgIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCA0MSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAyMTgsIAotICAgIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDE4NywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNywgNDAsIDksIDIsIDIyOCwgNDEsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzksIDksIDIsIDIyOCwgMzcsIAotICAgIDksIDIsIDIyOCwgMzgsIDIzLCAyNDIsIDQwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjM5LCA4LCA5LCAyLCAyMjgsIDM4LCAyMywgCi0gICAgMjMxLCA4NSwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDM4LCAyMywgMjIyLCAKLSAgICAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIAotICAgIDM4LCAyMywgMjEzLCAyOCwgOTEsIDIyOSwgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCAzOCwgCi0gICAgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM1LCA5LCAyLCAyMjgsIDM0LCA5LCAyLCAyMjYsIDIzOCwgMjM3LCAyMDksIDIzLCAKLSAgICAyNTAsIDc1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgMTQwLCA5LCAKLSAgICAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAKLSAgICAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI0LCAxNTYsIDkxLCAyMDIsIDExNSwgOSwgCi0gICAgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAKLSAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjIyLCA2NiwgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjIyLCA2NiwgMjMsIAotICAgIDIzOCwgNTUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDIxMiwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMywgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDIyOSwgMTcxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjI4LCA3OCwgOSwgMiwgMjIyLCA2NiwgMjMsIAotICAgIDIyNSwgNzksIDksIDIsIDIyMiwgNjYsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgMjIyLCA2NiwgMjMsIDY4LCAKLSAgICA5LCAyLCAyMjIsIDY2LCAyMywgMTA2LCA5MSwgNjgsIDksIDIsIDIyMiwgNjYsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjE1LCAKLSAgICAyMywgMjM3LCAyMDksIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjEzLCA0NCwgMjUwLCA1MCwgMjI3LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjEzLCA4NywgCi0gICAgMjA5LCAxNDEsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0MywgOSwgMiwgMjEzLCA0NCwgOTEsIDIzNiwgMjEsIDksIDIsIAotICAgIDIxMywgNDQsIDkxLCAyMjMsIDg2LCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIxMiwgMTk4LCA5MSwgCi0gICAgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIDI0MSwgMTkxLCAyMywgMjUwLCAyMzEsIDksIDIsIAotICAgIDIxMiwgMTYzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjQzLCA5MSwgMjE1LCAyMiwgOSwgMiwgMjA3LCAxOTIsIDIzLCAKLSAgICAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNywgMTkyLCAyMywgMTI2LCAyNDMsIDE1NiwgOSwgMiwgMjA2LCAyMDksIAotICAgIDIzMCwgMjM4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgMjksIDksIDIsIDIwNiwgMjAwLCAyMywgMjQ0LCAxNTMsIDksIAotICAgIDIsIDIwNiwgMjAwLCAyMywgMjI4LCAzNiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIzNiwgOSwgMiwgMjAyLCAxMTUsIAotICAgIDksIDIsIDIwMiwgNywgMTE1LCAyMDIsIDcsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjAyLCA1LCAyMywgMTI2LCAyNDMsIDE1NywgCi0gICAgMjA5LCAxNDEsIDE0LCA3LCAyNTUsIDE4LCAxNCwgNywgMjU1LCAxNywgMTQsIDcsIDI1NSwgMTYsIDE0LCA3LCAyNTUsIDE1LCAKLSAgICAxNCwgNywgMjU1LCAxNCwgMTQsIDcsIDI1NSwgMTMsIDE0LCA3LCAyNTUsIDEyLCAxNCwgNywgMjU1LCAxMSwgMTQsIDcsIAotICAgIDI1NSwgMTAsIDE0LCA3LCAyNTUsIDksIDE0LCA3LCAyNTUsIDgsIDE0LCA3LCAyNTUsIDcsIDE0LCA3LCAyNTUsIDYsIDE0LCAKLSAgICA3LCAyNTUsIDQsIDE0LCA3LCAyNTUsIDMsIDE0LCA3LCAyNTUsIDIsIDE0LCA3LCAyNTUsIDEsIDE0LCA3LCAyNTUsIDAsIAotICAgIDE0LCA3LCAyNTQsIDI1NSwgMTQsIDcsIDI1NCwgMjU0LCAxNCwgNywgMjU0LCAyNTMsIDE0LCA3LCAyNTQsIDI1MiwgMTQsIAotICAgIDcsIDI1NCwgMjUxLCAxNCwgNywgMjU0LCAyNTAsIDE0LCA3LCAyNTQsIDI0OSwgMTQsIDcsIDI1NCwgMjQ4LCAxNCwgNywgCi0gICAgMjU0LCAyNDcsIDE0LCA3LCAyNTQsIDI0NiwgMTQsIDcsIDI1NCwgMjQ1LCAxNCwgNywgMjU0LCAyNDQsIDE0LCA3LCAyNTQsIAotICAgIDI0MywgMTQsIDcsIDI1NCwgMjQxLCAxNCwgNywgMjU0LCAyNDAsIDE0LCA3LCAyNTQsIDIzOCwgMTQsIDcsIDI1NCwgMjM3LCAKLSAgICAxNCwgNywgMjU0LCAyMzYsIDE0LCA3LCAyNTQsIDIzNSwgMTQsIDcsIDI1NCwgMjM0LCAxNCwgNywgMjU0LCAyMzMsIDE0LCAKLSAgICA3LCAyNTQsIDIzMiwgMTQsIDcsIDI1NCwgMjMxLCAxNCwgNywgMjU0LCAyMzAsIDE0LCA3LCAyNTQsIDIyOSwgMTQsIDcsIAotICAgIDI1NCwgMjI4LCAxNCwgNywgMjU0LCAyMjcsIDE0LCA3LCAyNTQsIDIyNSwgMTQsIDcsIDI1NCwgMjI0LCAxNCwgNywgMjU0LCAKLSAgICAyMjMsIDE0LCA3LCAyNTQsIDIyMSwgMTQsIDcsIDI1NCwgMjIwLCAxNCwgNywgMjU0LCAyMTksIDE0LCA3LCAyNTQsIDIxOCwgCi0gICAgMTQsIDcsIDI1NCwgMjE3LCAxNCwgNywgMjU0LCAyMTYsIDE0LCA3LCAyNTQsIDIxNSwgMTQsIDcsIDI1NCwgMjE0LCAxNCwgCi0gICAgNywgMjU0LCAyMTEsIDE0LCA3LCAyNTQsIDIxMCwgMTQsIDcsIDI1NCwgMjA5LCAxNCwgNywgMjU0LCAyMDgsIDE0LCA3LCAKLSAgICAyNTQsIDIwNywgMTQsIDcsIDI1NCwgMjA2LCAxNCwgNywgMjU0LCAyMDUsIDE0LCA3LCAyNTQsIDIwNCwgMTQsIDcsIDI1NCwgCi0gICAgMjAzLCAxNCwgNywgMjU0LCAyMDIsIDE0LCA3LCAyNTQsIDIwMSwgMTQsIDcsIDI1NCwgMjAwLCAxNCwgNywgMjU0LCAxOTksIAotICAgIDE0LCA3LCAyNTQsIDE5OCwgMTQsIDcsIDI1NCwgMTk3LCAxNCwgNywgMjU0LCAxOTYsIDE0LCA3LCAyNTQsIDE5NSwgMTQsIAotICAgIDcsIDI1NCwgMTk0LCAxNCwgNywgMjU0LCAxOTMsIDE0LCA3LCAyNTQsIDE5MiwgMTQsIDcsIDI1NCwgMTg4LCAxNCwgNywgCi0gICAgMjU0LCAxODcsIDE0LCA3LCAyNTQsIDE4NiwgMTQsIDcsIDI1NCwgMTg1LCAxNCwgNywgMjQ5LCAyNTMsIDE0LCA3LCAyNDksIAotICAgIDI1MSwgMTQsIDcsIDI0OSwgMjQ5LCAxNCwgNywgMjQ5LCAyNDcsIDE0LCA3LCAyNDksIDI0NSwgMTQsIDcsIDI0OSwgMjQ0LCAKLSAgICAxNCwgNywgMjQ5LCAyNDIsIDE0LCA3LCAyNDksIDI0MCwgMTQsIDcsIDI0OSwgMjM4LCAxNCwgNywgMjQ5LCAyMzYsIDE0LCAKLSAgICA3LCAyNDcsIDEyMSwgMTQsIDcsIDI0NywgMTIwLCAxNCwgNywgMjQ3LCAxMTksIDE0LCA3LCAyNDcsIDExOCwgMTQsIDcsIAotICAgIDI0NywgMTE3LCAxNCwgNywgMjQ3LCAxMTYsIDE0LCA3LCAyNDcsIDExNSwgMTQsIDcsIDI0NywgMTE0LCAxNCwgNywgMjQ3LCAKLSAgICAxMTMsIDE0LCA3LCAyNDcsIDExMiwgMTQsIDcsIDI0NywgMTExLCAxNCwgNywgMjQ3LCAxMTAsIDE0LCA3LCAyNDcsIDEwOSwgCi0gICAgMTQsIDcsIDI0NywgMTA4LCAxNCwgNywgMjQ3LCAxMDcsIDE0LCA3LCAyNDcsIDEwNiwgMTQsIDcsIDI0NywgMTA1LCAxNCwgCi0gICAgNywgMjQ3LCAxMDQsIDE0LCA3LCAyNDcsIDEwMywgMTQsIDcsIDI0NywgMTAyLCAxNCwgNywgMjQ3LCAxMDEsIDE0LCA3LCAKLSAgICAyNDcsIDEwMCwgMTQsIDcsIDI0NywgOTksIDE0LCA3LCAyNDcsIDk4LCAxNCwgNywgMjQ3LCA5NywgMTQsIDcsIDI0NywgOTYsIAotICAgIDE0LCA3LCAyNDcsIDk1LCAxNCwgNywgMjQ3LCA5NCwgMTQsIDcsIDI0NSwgNTAsIDE0LCA3LCAyNDUsIDQ5LCAxNCwgNywgCi0gICAgMjQ1LCA0OCwgMTQsIDcsIDI0NSwgNDcsIDE0LCA3LCAyNDUsIDQ2LCAxNCwgNywgMjQ1LCA0NSwgMTQsIDcsIDI0NSwgNDQsIAotICAgIDE0LCA3LCAyNDUsIDQzLCAxNCwgNywgMjQ1LCA0MiwgMTQsIDcsIDI0NSwgNDEsIDE0LCA3LCAyNDUsIDQwLCAxNCwgNywgCi0gICAgMjQ1LCAzOSwgMTQsIDcsIDI0NSwgMzgsIDE0LCA3LCAyNDUsIDM3LCAxNCwgNywgMjQ1LCAzNiwgMTQsIDcsIDI0NSwgMzUsIAotICAgIDE0LCA3LCAyNDUsIDM0LCAxNCwgNywgMjQ1LCAzMywgMTQsIDcsIDI0NSwgMzIsIDE0LCA3LCAyNDUsIDMxLCAxNCwgNywgCi0gICAgMjQ1LCAzMCwgMTQsIDcsIDI0NSwgMjksIDE0LCA3LCAyNDUsIDI4LCAxNCwgNywgMjQ1LCAyNywgMTQsIDcsIDI0NSwgMjYsIAotICAgIDE0LCA3LCAyNDUsIDI1LCAxNCwgNywgMjQ1LCAyNCwgMTQsIDcsIDI0NSwgMjMsIDE0LCA3LCAyNDUsIDIyLCAxNCwgNywgCi0gICAgMjQ1LCAyMSwgMTQsIDcsIDI0NSwgMjAsIDE0LCA3LCAyNDUsIDE5LCAxNCwgNywgMjQ1LCAxOCwgMTQsIDcsIDI0NSwgMTcsIAotICAgIDE0LCA3LCAyNDUsIDE2LCAxNCwgNywgMjQ1LCAxNSwgMTQsIDcsIDI0NSwgMTQsIDE0LCA3LCAyNDUsIDEzLCAxNCwgNywgCi0gICAgMjQ1LCAxMiwgMTQsIDcsIDI0NSwgMTEsIDE0LCA3LCAyNDUsIDEwLCAxNCwgNywgMjQ1LCA5LCAxNCwgNywgMjQ1LCA4LCAKLSAgICAxNCwgNywgMjQ1LCA3LCAxNCwgNywgMjQ1LCA2LCAxNCwgNywgMjQ1LCA1LCAxNCwgNywgMjQ1LCA0LCAxNCwgNywgMjQ1LCAKLSAgICAzLCAxNCwgNywgMjQ1LCAyLCAxNCwgNywgMjQ1LCAxLCAxNCwgNywgMjQ1LCAwLCAxNCwgNywgMjQ0LCAyNTUsIDE0LCA3LCAKLSAgICAyNDQsIDI1NCwgMTQsIDcsIDI0NCwgMjUzLCAxNCwgNywgMjQ0LCAyNTIsIDE0LCA3LCAyNDQsIDI1MSwgMTQsIDcsIDI0NCwgCi0gICAgMjUwLCAxNCwgNywgMjQ0LCAyNDksIDE0LCA3LCAyNDQsIDI0OCwgMTQsIDcsIDI0NCwgMjQ3LCAxNCwgNywgMjQ0LCAyNDYsIAotICAgIDE0LCA3LCAyNDQsIDI0NSwgMTQsIDcsIDI0NCwgMjQ0LCAxNCwgNywgMjQ0LCAyNDMsIDE0LCA3LCAyNDQsIDI0MiwgMTQsIAotICAgIDcsIDI0NCwgMjQxLCAxNCwgNywgMjQ0LCAyNDAsIDE0LCA3LCAyNDQsIDIzOSwgMTQsIDcsIDI0NCwgMjM4LCAxNCwgNywgCi0gICAgMjQ0LCAyMzcsIDE0LCA3LCAyNDQsIDIzNiwgMTQsIDcsIDI0NCwgMjM1LCAxNCwgNywgMjQ0LCAyMzQsIDE0LCA3LCAyNDQsIAotICAgIDIzMywgMTQsIDcsIDI0NCwgMjMyLCAxNCwgNywgMjQ0LCAyMzEsIDE0LCA3LCAyNDQsIDIzMCwgMTQsIDcsIDI0NCwgMjI5LCAKLSAgICAxNCwgNywgMjQ0LCAyMjgsIDE0LCA3LCAyNDQsIDIyNywgMTQsIDcsIDI0NCwgMjI2LCAxNCwgNywgMjQ0LCAyMjUsIDE0LCAKLSAgICA3LCAyNDQsIDIyNCwgMTQsIDcsIDI0NCwgMjIzLCAxNCwgNywgMjQ0LCAyMjIsIDE0LCA3LCAyNDQsIDIyMSwgMTQsIDcsIAotICAgIDI0NCwgMjIwLCAxNCwgNywgMjQ0LCAyMTksIDE0LCA3LCAyNDQsIDIxOCwgMTQsIDcsIDI0NCwgMjE3LCAxNCwgNywgMjQ0LCAKLSAgICAyMTYsIDE0LCA3LCAyNDQsIDIxNSwgMTQsIDcsIDI0MSwgMjM1LCAxNCwgNywgMjQxLCAyMzQsIDE0LCA3LCAyNDEsIDIzMywgCi0gICAgMTQsIDcsIDI0MSwgMjMyLCAxNCwgNywgMjQxLCAyMzEsIDE0LCA3LCAyNDEsIDIzMCwgMTQsIDcsIDI0MSwgMjI5LCAxNCwgCi0gICAgNywgMjQxLCAyMjgsIDE0LCA3LCAyNDEsIDIyNywgMTQsIDcsIDI0MSwgMjI2LCAxNCwgNywgMjQxLCAyMjUsIDE0LCA3LCAKLSAgICAyNDEsIDIyNCwgMTQsIDcsIDI0MSwgMjIzLCAxNCwgNywgMjQxLCAyMjIsIDE0LCA3LCAyNDEsIDIyMSwgMTQsIDcsIDI0MSwgCi0gICAgMjIwLCAxNCwgNywgMjQxLCAyMTksIDE0LCA3LCAyNDEsIDIxOCwgMTQsIDcsIDI0MSwgMjE3LCAxNCwgNywgMjQxLCAyMTYsIAotICAgIDE0LCA3LCAyNDEsIDIxNSwgMTQsIDcsIDI0MSwgMjE0LCAxNCwgNywgMjQxLCAyMTMsIDE0LCA3LCAyNDEsIDIxMiwgMTQsIAotICAgIDcsIDI0MSwgMjExLCAxNCwgNywgMjQxLCAyMTAsIDE0LCA3LCAyNDEsIDIwOSwgMTQsIDcsIDI0MSwgMjA4LCAxNCwgNywgCi0gICAgMjQxLCAyMDcsIDE0LCA3LCAyNDEsIDIwNiwgMTQsIDcsIDI0MSwgMjA1LCAxNCwgNywgMjQxLCAyMDQsIDE0LCA3LCAyNDEsIAotICAgIDIwMywgMTQsIDcsIDI0MSwgMjAyLCAxNCwgNywgMjQxLCAyMDEsIDE0LCA3LCAyNDEsIDIwMCwgMTQsIDcsIDI0MSwgMTk5LCAKLSAgICAxNCwgNywgMjQxLCAxOTgsIDE0LCA3LCAyNDEsIDE5NywgMTQsIDcsIDI0MSwgMTk2LCAxNCwgNywgMjQxLCAxOTUsIDE0LCAKLSAgICA3LCAyNDEsIDE5NCwgMTQsIDcsIDI0MSwgMTkzLCAxNCwgNywgMjQxLCAxOTIsIDE0LCA3LCAyNDAsIDE3MywgMTQsIDcsIAotICAgIDI0MCwgMTcyLCAxNCwgNywgMjQwLCAxNzEsIDE0LCA3LCAyNDAsIDE3MCwgMTQsIDcsIDI0MCwgMTY5LCAxNCwgNywgMjQwLCAKLSAgICAxNjgsIDE0LCA3LCAyNDAsIDE2NywgMTQsIDcsIDI0MCwgMTY2LCAxNCwgNywgMjQwLCAxNjUsIDE0LCA3LCAyNDAsIDE2NCwgCi0gICAgMTQsIDcsIDI0MCwgMTYzLCAxNCwgNywgMjQwLCAxNjIsIDE0LCA3LCAyNDAsIDE2MSwgMTQsIDcsIDI0MCwgMTYwLCAxNCwgCi0gICAgNywgMjQwLCAxNTksIDE0LCA3LCAyNDAsIDE1OCwgMTQsIDcsIDI0MCwgMTU3LCAxNCwgNywgMjQwLCAxNTYsIDE0LCA3LCAKLSAgICAyNDAsIDE1NSwgMTQsIDcsIDI0MCwgMTU0LCAxNCwgNywgMjQwLCAxNTMsIDE0LCA3LCAyNDAsIDE1MiwgMTQsIDcsIDI0MCwgCi0gICAgMTUxLCAxNCwgNywgMjQwLCAxNTAsIDE0LCA3LCAyNDAsIDE0OSwgMTQsIDcsIDI0MCwgMTQ4LCAxNCwgNywgMjQwLCAxNDcsIAotICAgIDE0LCA3LCAyNDAsIDE0NiwgMTQsIDcsIDI0MCwgMTQ1LCAxNCwgNywgMjQwLCAxNDQsIDE0LCA3LCAyNDAsIDE0MywgMTQsIAotICAgIDcsIDI0MCwgMTQyLCAxNCwgNywgMjQwLCAxNDEsIDE0LCA3LCAyNDAsIDE0MCwgMTQsIDcsIDI0MCwgMTM5LCAxNCwgNywgCi0gICAgMjQwLCAxMzgsIDE0LCA3LCAyNDAsIDEzNywgMTQsIDcsIDI0MCwgMTM2LCAxNCwgNywgMjQwLCAxMzUsIDE0LCA3LCAyNDAsIAotICAgIDEzNCwgMTQsIDcsIDI0MCwgMTMzLCAxNCwgNywgMjQwLCAxMzIsIDE0LCA3LCAyNDAsIDEzMSwgMTQsIDcsIDI0MCwgMTMwLCAKLSAgICAxNCwgNywgMjQwLCAxMjksIDE0LCA3LCAyNDAsIDEyOCwgMTQsIDcsIDI0MCwgMTI3LCAxNCwgNywgMjQwLCAxMjYsIDE0LCAKLSAgICA3LCAyNDAsIDEyNSwgMTQsIDcsIDI0MCwgMTI0LCAxNCwgNywgMjQwLCAxMjMsIDE0LCA3LCAyNDAsIDEyMiwgMTQsIDcsIAotICAgIDI0MCwgMTIxLCAxNCwgNywgMjQwLCAxMjAsIDE0LCA3LCAyNDAsIDExOSwgMTQsIDcsIDI0MCwgMTE4LCAxNCwgNywgMjQwLCAKLSAgICAxMTcsIDE0LCA3LCAyNDAsIDExNiwgMTQsIDcsIDI0MCwgMTE1LCAxNCwgNywgMjQwLCAxMTQsIDE0LCA3LCAyNDAsIDExMywgCi0gICAgMTQsIDcsIDI0MCwgMTEyLCAxNCwgNywgMjQwLCAxMTEsIDE0LCA3LCAyNDAsIDExMCwgMTQsIDcsIDI0MCwgMTA5LCAxNCwgCi0gICAgNywgMjM5LCA3NCwgMTQsIDcsIDIzOSwgNzMsIDE0LCA3LCAyMzksIDcyLCAxNCwgNywgMjM5LCA3MSwgMTQsIDcsIDIzOSwgCi0gICAgNzAsIDE0LCA3LCAyMzksIDY5LCAxNCwgNywgMjM5LCA2OCwgMTQsIDcsIDIzOSwgNjcsIDE0LCA3LCAyMzksIDY2LCAxNCwgCi0gICAgNywgMjM5LCA2NSwgMTQsIDcsIDIzOSwgNjQsIDE0LCA3LCAyMzksIDYzLCAxNCwgNywgMjM5LCA2MiwgMTQsIDcsIDIzOSwgCi0gICAgNjEsIDE0LCA3LCAyMzksIDYwLCAxNCwgNywgMjM5LCA1OSwgMTQsIDcsIDIzOSwgNTgsIDE0LCA3LCAyMzksIDU3LCAxNCwgCi0gICAgNywgMjM5LCA1NiwgMTQsIDcsIDIzOSwgNTUsIDE0LCA3LCAyMzksIDU0LCAxNCwgNywgMjM5LCA1MywgMTQsIDcsIDIzOSwgCi0gICAgNTIsIDE0LCA3LCAyMzksIDUxLCAxNCwgNywgMjM5LCA1MCwgMTQsIDcsIDIzOSwgNDksIDE0LCA3LCAyMzksIDQ4LCAxNCwgCi0gICAgNywgMjM5LCA0NywgMTQsIDcsIDIzOSwgNDYsIDE0LCA3LCAyMzksIDQ1LCAxNCwgNywgMjM5LCA0NCwgMTQsIDcsIDIzOSwgCi0gICAgNDMsIDE0LCA3LCAyMzksIDQyLCAxNCwgNywgMjM5LCA0MSwgMTQsIDcsIDIzOSwgNDAsIDE0LCA3LCAyMzksIDM5LCAxNCwgCi0gICAgNywgMjM5LCAzOCwgMTQsIDcsIDIzOSwgMzcsIDE0LCA3LCAyMzksIDM2LCAxNCwgNywgMjM5LCAzNSwgMTQsIDcsIDIzOSwgCi0gICAgMzQsIDE0LCA3LCAyMzksIDMzLCAxNCwgNywgMjM5LCAzMiwgMTQsIDcsIDIzOSwgMzEsIDE0LCA3LCAyMzksIDMwLCAxNCwgCi0gICAgNywgMjM5LCAyOSwgMTQsIDcsIDIzOSwgMjgsIDE0LCA3LCAyMzksIDI3LCAxNCwgNywgMjM5LCAyNiwgMTQsIDcsIDIzOSwgCi0gICAgMjUsIDE0LCA3LCAyMzksIDI0LCAxNCwgNywgMjM5LCAyMywgMTQsIDcsIDIzOSwgMjIsIDE0LCA3LCAyMzksIDIxLCAxNCwgCi0gICAgNywgMjM5LCAyMCwgMTQsIDcsIDIzOSwgMTksIDE0LCA3LCAyMzksIDE4LCAxNCwgNywgMjM5LCAxNywgMTQsIDcsIDIzOSwgCi0gICAgMTYsIDE0LCA3LCAyMzksIDE1LCAxNCwgNywgMjM5LCAxNCwgMTQsIDcsIDIzOSwgMTMsIDE0LCA3LCAyMzksIDEyLCAxNCwgCi0gICAgNywgMjM5LCAxMSwgMTQsIDcsIDIzNywgMTY5LCAxNCwgNywgMjM3LCAxNjgsIDE0LCA3LCAyMzcsIDE2NywgMTQsIDcsIAotICAgIDIzNywgMTY2LCAxNCwgNywgMjM3LCAxNjUsIDE0LCA3LCAyMzcsIDE2NCwgMTQsIDcsIDIzNywgMTYzLCAxNCwgNywgMjM3LCAKLSAgICAxNjIsIDE0LCA3LCAyMzcsIDE2MSwgMTQsIDcsIDIzNSwgMTkwLCAxNCwgNywgMjM1LCAxODksIDE0LCA3LCAyMzUsIDE4OCwgCi0gICAgMTQsIDcsIDIzNSwgMTg3LCAxNCwgNywgMjM1LCAxODYsIDE0LCA3LCAyMzUsIDE4NSwgMTQsIDcsIDIzNSwgMTg0LCAxNCwgCi0gICAgNywgMjM1LCAxODMsIDE0LCA3LCAyMzUsIDE4MiwgMTQsIDcsIDIzNSwgMTgxLCAxNCwgNywgMjM1LCAxODAsIDE0LCA3LCAKLSAgICAyMzUsIDE3OSwgMTQsIDcsIDIzNSwgMTc4LCAxNCwgNywgMjM1LCAxNzcsIDE0LCA3LCAyMzUsIDE3NiwgMTQsIDcsIDIzNSwgCi0gICAgMTc1LCAxNCwgNywgMjM1LCAxNzQsIDE0LCA3LCAyMzUsIDE3MywgMTQsIDcsIDIzNSwgMTcyLCAxNCwgNywgMjMwLCA1MywgCi0gICAgMTQsIDcsIDIzMCwgNTIsIDE0LCA3LCAyMzAsIDUxLCAxNCwgNywgMjMwLCA1MCwgMTQsIDcsIDIzMCwgNDksIDE0LCA3LCAKLSAgICAyMzAsIDQ4LCAxNCwgNywgMjMwLCA0NywgMTQsIDcsIDIzMCwgNDYsIDE0LCA3LCAyMjgsIDEyOCwgMTQsIDcsIDIyOCwgCi0gICAgMTI3LCAxNCwgNywgMjI4LCAxMjYsIDE0LCA3LCAyMjgsIDEyNSwgMTQsIDcsIDIyOCwgMTI0LCAxNCwgNywgMjI4LCAxMjMsIAotICAgIDE0LCA3LCAyMjgsIDEyMiwgMTQsIDcsIDIyOCwgMTIxLCAxNCwgNywgMjI4LCAxMjAsIDE0LCA3LCAyMjgsIDExOSwgMTQsIAotICAgIDcsIDIyNiwgMTgzLCAxNCwgNywgMjI2LCAxODIsIDE0LCA3LCAyMjYsIDE4MSwgMTQsIDcsIDIyNiwgMTc5LCAxNCwgNywgCi0gICAgMjI2LCAxNzcsIDE0LCA3LCAyMjYsIDE3NiwgMTQsIDcsIDIyNiwgMTc0LCAxNCwgNywgMjI2LCAxNzIsIDE0LCA3LCAyMjYsIAotICAgIDE3MCwgMTQsIDcsIDIyNiwgMTY4LCAxNCwgNywgMjI2LCAxNjYsIDE0LCA3LCAyMjYsIDE2NCwgMTQsIDcsIDIyNiwgMTYyLCAKLSAgICAxNCwgNywgMjI2LCAxNjEsIDE0LCA3LCAyMjYsIDE1OSwgMTQsIDcsIDIyNiwgMTU3LCAxNCwgNywgMjI2LCAxNTYsIDE0LCAKLSAgICA3LCAyMjYsIDE1NSwgMTQsIDcsIDIyNiwgMTU0LCAxNCwgNywgMjI2LCAxNTMsIDE0LCA3LCAyMjYsIDE1MiwgMTQsIDcsIAotICAgIDIyNiwgMTUxLCAxNCwgNywgMjI2LCAxNTAsIDE0LCA3LCAyMjYsIDE0OSwgMTQsIDcsIDIyNiwgMTQ3LCAxNCwgNywgMjI2LCAKLSAgICAxNDUsIDE0LCA3LCAyMjYsIDE0MywgMTQsIDcsIDIyNiwgMTQyLCAxNCwgNywgMjI2LCAxNDAsIDE0LCA3LCAyMjYsIDEzOSwgCi0gICAgMTQsIDcsIDIyNiwgMTM3LCAxNCwgNywgMjI2LCAxMzYsIDE0LCA3LCAyMjYsIDEzNCwgMTQsIDcsIDIyNiwgMTMyLCAxNCwgCi0gICAgNywgMjI2LCAxMzAsIDE0LCA3LCAyMjYsIDEyOCwgMTQsIDcsIDIyNiwgMTI2LCAxNCwgNywgMjI2LCAxMjUsIDE0LCA3LCAKLSAgICAyMjYsIDEyMywgMTQsIDcsIDIyNiwgMTIxLCAxNCwgNywgMjI2LCAxMjAsIDE0LCA3LCAyMjYsIDExOCwgMTQsIDcsIDIyNiwgCi0gICAgMTE2LCAxNCwgNywgMjI2LCAxMTQsIDE0LCA3LCAyMjYsIDExMiwgMTQsIDcsIDIyNiwgMTExLCAxNCwgNywgMjI2LCAxMDksIAotICAgIDE0LCA3LCAyMjYsIDEwNywgMTQsIDcsIDIyNiwgMTA1LCAxNCwgNywgMjI2LCAxMDQsIDE0LCA3LCAyMjYsIDEwMiwgMTQsIAotICAgIDcsIDIyNiwgMTAwLCAxNCwgNywgMjI2LCA5OSwgMTQsIDcsIDIyNiwgOTgsIDE0LCA3LCAyMjYsIDk2LCAxNCwgNywgMjI2LCAKLSAgICA5NCwgMTQsIDcsIDIyNiwgOTIsIDE0LCA3LCAyMjYsIDkwLCAxNCwgNywgMjI2LCA4OCwgMTQsIDcsIDIyNiwgODYsIDE0LCAKLSAgICA3LCAyMjYsIDg0LCAxNCwgNywgMjI2LCA4MywgMTQsIDcsIDIyNiwgODEsIDE0LCA3LCAyMjYsIDc5LCAxNCwgNywgMjI2LCAKLSAgICA3NywgMTQsIDcsIDIyNiwgNzUsIDE0LCA3LCAyMjMsIDE2MCwgMTQsIDcsIDIyMywgMTU5LCAxNCwgNywgMjIzLCAxNTgsIAotICAgIDE0LCA3LCAyMjMsIDE1NywgMTQsIDcsIDIyMywgMTU2LCAxNCwgNywgMjIzLCAxNTUsIDE0LCA3LCAyMjMsIDE1NCwgMTQsIAotICAgIDcsIDIyMywgMTUzLCAxNCwgNywgMjIzLCAxNTIsIDE0LCA3LCAyMjMsIDE1MSwgMTQsIDcsIDIyMywgMTUwLCAxNCwgNywgCi0gICAgMjIzLCAxNDksIDE0LCA3LCAyMjMsIDE0OCwgMTQsIDcsIDIyMywgMTQ3LCAxNCwgNywgMjIzLCAxNDYsIDE0LCA3LCAyMjMsIAotICAgIDE0NSwgMTQsIDcsIDIyMywgMTQ0LCAxNCwgNywgMjIzLCAxNDMsIDE0LCA3LCAyMjMsIDE0MiwgMTQsIDcsIDIyMywgMTQxLCAKLSAgICAxNCwgNywgMjIzLCAxNDAsIDE0LCA3LCAyMjMsIDEzOSwgMTQsIDcsIDIyMywgMTM4LCAxNCwgNywgMjIzLCAxMzcsIDE0LCAKLSAgICA3LCAyMjMsIDEzNiwgMTQsIDcsIDIyMywgMTM1LCAxNCwgNywgMjIzLCAxMzQsIDE0LCA3LCAyMjMsIDEzMywgMTQsIDcsIAotICAgIDIyMywgMTMyLCAxNCwgNywgMjIzLCAxMzEsIDE0LCA3LCAyMjMsIDEzMCwgMTQsIDcsIDIyMywgMTI5LCAxNCwgNywgMjIzLCAKLSAgICAxMjgsIDE0LCA3LCAyMjMsIDEyNywgMTQsIDcsIDIyMywgMTI2LCAxNCwgNywgMjIzLCAxMjUsIDE0LCA3LCAyMjMsIDEyNCwgCi0gICAgMTQsIDcsIDIyMywgMTIzLCAxNCwgNywgMjIzLCAxMjIsIDE0LCA3LCAyMjMsIDEyMSwgMTQsIDcsIDIyMywgMTIwLCAxNCwgCi0gICAgNywgMjIzLCAxMTksIDE0LCA3LCAyMjMsIDExOCwgMTQsIDcsIDIyMywgMTE3LCAxNCwgNywgMjIzLCAxMTYsIDE0LCA3LCAKLSAgICAyMjMsIDExNSwgMTQsIDcsIDIyMywgMTE0LCAxNCwgNywgMjIzLCAxMTMsIDE0LCA3LCAyMjMsIDExMiwgMTQsIDcsIDIyMSwgCi0gICAgMjUyLCAxNCwgNywgMjIxLCAyNTEsIDE0LCA3LCAyMjEsIDI1MCwgMTQsIDcsIDIyMSwgMjQ5LCAxNCwgNywgMjIxLCAyNDgsIAotICAgIDE0LCA3LCAyMjEsIDI0NywgMTQsIDcsIDIyMSwgMjQ2LCAxNCwgNywgMjIxLCAyNDUsIDE0LCA3LCAyMjEsIDI0NCwgMTQsIAotICAgIDcsIDIyMSwgMjQzLCAxNCwgNywgMjIxLCAyNDIsIDE0LCA3LCAyMjEsIDI0MSwgMTQsIDcsIDIyMSwgMjQwLCAxNCwgNywgCi0gICAgMjIxLCAyMzksIDE0LCA3LCAyMjEsIDIzOCwgMTQsIDcsIDIyMSwgMjM3LCAxNCwgNywgMjIxLCAyMzYsIDE0LCA3LCAyMjEsIAotICAgIDIzNSwgMTQsIDcsIDIyMSwgMjM0LCAxNCwgNywgMjIxLCAyMzMsIDE0LCA3LCAyMjEsIDIzMiwgMTQsIDcsIDIyMSwgMjMxLCAKLSAgICAxNCwgNywgMjIxLCA4MywgMTQsIDcsIDIyMSwgODIsIDE0LCA3LCAyMjEsIDgxLCAxNCwgNywgMjIxLCA4MCwgMTQsIDcsIAotICAgIDIyMSwgNzksIDE0LCA3LCAyMjEsIDc4LCAxNCwgNywgMjIxLCA3NywgMTQsIDcsIDIyMSwgNzYsIDE0LCA3LCAyMjEsIDc1LCAKLSAgICAxNCwgNywgMjIxLCA3NCwgMTQsIDcsIDIyMSwgNzMsIDE0LCA3LCAyMjEsIDcyLCAxNCwgNywgMjIxLCA3MSwgMTQsIDcsIAotICAgIDIyMSwgNzAsIDE0LCA3LCAyMjEsIDY5LCAxNCwgNywgMjIxLCA2OCwgMTQsIDcsIDIyMSwgNjcsIDE0LCA3LCAyMjEsIDY2LCAKLSAgICAxNCwgNywgMjIxLCA2NSwgMTQsIDcsIDIyMSwgNjQsIDE0LCA3LCAyMjEsIDYzLCAxNCwgNywgMjIxLCA2MiwgMTQsIDcsIAotICAgIDIyMSwgNjEsIDE0LCA3LCAyMjEsIDYwLCAxNCwgNywgMjIxLCA1OSwgMTQsIDcsIDIyMSwgNTgsIDE0LCA3LCAyMjAsIDE3MywgCi0gICAgMTQsIDcsIDIyMCwgMTcyLCAxNCwgNywgMjIwLCAxNzEsIDE0LCA3LCAyMjAsIDE3MCwgMTQsIDcsIDIyMCwgMTY5LCAxNCwgCi0gICAgNywgMjIwLCAxNjgsIDE0LCA3LCAyMjAsIDE2NywgMTQsIDcsIDIyMCwgMTY2LCAxNCwgNywgMjIwLCAxNjUsIDE0LCA3LCAKLSAgICAyMjAsIDE2NCwgMTQsIDcsIDIyMCwgMTYzLCAxNCwgNywgMjIwLCAxNjIsIDE0LCA3LCAyMjAsIDE2MSwgMTQsIDcsIDIyMCwgCi0gICAgMTYwLCAxNCwgNywgMjIwLCAxNTksIDE0LCA3LCAyMjAsIDE1OCwgMTQsIDcsIDIyMCwgMTU3LCAxNCwgNywgMjIwLCAxNTYsIAotICAgIDE0LCA3LCAyMjAsIDE1NSwgMTQsIDcsIDIyMCwgMTU0LCAxNCwgNywgMjIwLCAxNTMsIDE0LCA3LCAyMjAsIDE1MiwgMTQsIAotICAgIDcsIDIyMCwgMTUxLCAxNCwgNywgMjIwLCAxNTAsIDE0LCA3LCAyMjAsIDE0OSwgMTQsIDcsIDIyMCwgMTQ4LCAxNCwgNywgCi0gICAgMjIwLCAxNDcsIDE0LCA3LCAyMjAsIDE0NiwgMTQsIDcsIDIyMCwgMTQ1LCAxNCwgNywgMjIwLCAxNDQsIDE0LCA3LCAyMjAsIAotICAgIDE0MywgMTQsIDcsIDIyMCwgMTQyLCAxNCwgNywgMjIwLCAxNDEsIDE0LCA3LCAyMjAsIDE0MCwgMTQsIDcsIDIyMCwgMTM5LCAKLSAgICAxNCwgNywgMjIwLCAxMzgsIDE0LCA3LCAyMjAsIDEzNywgMTQsIDcsIDIyMCwgMTM2LCAxNCwgNywgMjIwLCAxMzUsIDE0LCAKLSAgICA3LCAyMjAsIDEzNCwgMTQsIDcsIDIyMCwgMTMzLCAxNCwgNywgMjIwLCAxMzIsIDE0LCA3LCAyMjAsIDEzMSwgMTQsIDcsIAotICAgIDIyMCwgMTMwLCAxNCwgNywgMjIwLCAxMjksIDE0LCA3LCAyMjAsIDEyOCwgMTQsIDcsIDIyMCwgMTI3LCAxNCwgNywgMjIwLCAKLSAgICAxMjYsIDE0LCA3LCAyMjAsIDEyNSwgMTQsIDcsIDIyMCwgMTI0LCAxNCwgNywgMjIwLCAxMjMsIDE0LCA3LCAyMjAsIDEyMiwgCi0gICAgMTQsIDcsIDIyMCwgMTIxLCAxNCwgNywgMjIwLCAxMjAsIDE0LCA3LCAyMjAsIDExOSwgMTQsIDcsIDIyMCwgMTE4LCAxNCwgCi0gICAgNywgMjIwLCAxMTcsIDE0LCA3LCAyMjAsIDExNiwgMTQsIDcsIDIyMCwgMTE1LCAxNCwgNywgMjIwLCAxMTQsIDE0LCA3LCAKLSAgICAyMjAsIDExMywgMTQsIDcsIDIyMCwgMTEyLCAxNCwgNywgMjIwLCAxMTEsIDE0LCA3LCAyMjAsIDExMCwgMTQsIDcsIDIyMCwgCi0gICAgMTA5LCAxNCwgNywgMjIwLCAxMDgsIDE0LCA3LCAyMjAsIDEwNywgMTQsIDcsIDIyMCwgMTA2LCAxNCwgNywgMjIwLCAxMDUsIAotICAgIDE0LCA3LCAyMjAsIDEwNCwgMTQsIDcsIDIyMCwgMTAzLCAxNCwgNywgMjIwLCAxMDIsIDE0LCA3LCAyMjAsIDEwMSwgMTQsIAotICAgIDcsIDIyMCwgMTAwLCAxNCwgNywgMjIwLCA5OSwgMTQsIDcsIDIxOSwgMTgzLCAxNCwgNywgMjE5LCAxODIsIDE0LCA3LCAKLSAgICAyMTksIDE4MSwgMTQsIDcsIDIxOSwgMTgwLCAxNCwgNywgMjE5LCAxNzksIDE0LCA3LCAyMTksIDE3OCwgMTQsIDcsIDIxOSwgCi0gICAgMTc3LCAxNCwgNywgMjE5LCAxNzYsIDE0LCA3LCAyMTksIDE3NSwgMTQsIDcsIDIxOSwgMTc0LCAxNCwgNywgMjE5LCAxNzMsIAotICAgIDE0LCA3LCAyMTksIDE3MiwgMTQsIDcsIDIxOSwgMTcxLCAxNCwgNywgMjE3LCAxMzMsIDE0LCA3LCAyMTcsIDEzMiwgMTQsIAotICAgIDcsIDIxNywgMTMxLCAxNCwgNywgMjE3LCAxMzAsIDE0LCA3LCAyMTcsIDEyOSwgMTQsIDcsIDIxNywgMTI4LCAxNCwgNywgCi0gICAgMjE3LCAxMjcsIDE0LCA3LCAyMTYsIDI1NSwgMTQsIDcsIDIxNiwgMjU0LCAxNCwgNywgMjE2LCAyNTMsIDE0LCA3LCAyMTYsIAotICAgIDI1MiwgMTQsIDcsIDIxNiwgMjUxLCAxNCwgNywgMjE2LCAyNTAsIDE0LCA3LCAyMTYsIDI0OSwgMTQsIDcsIDIxNiwgMjQ4LCAKLSAgICAxNCwgNywgMjE2LCAyNDcsIDE0LCA3LCAyMTYsIDI0NiwgMTQsIDcsIDIxNiwgMjQ1LCAxNCwgNywgMjE2LCAyNDQsIDE0LCAKLSAgICA3LCAyMTYsIDI0MywgMTQsIDcsIDIxNiwgMjQyLCAxNCwgNywgMjE2LCAyNDEsIDE0LCA3LCAyMTYsIDI0MCwgMTQsIDcsIAotICAgIDIxNiwgMjM5LCAxNCwgNywgMjE2LCAyMzgsIDE0LCA3LCAyMTYsIDIzNywgMTQsIDcsIDIxNiwgMjM2LCAxNCwgNywgMjE2LCAKLSAgICAyMzUsIDE0LCA3LCAyMTYsIDIzNCwgMTQsIDcsIDIxNiwgMjMzLCAxNCwgNywgMjE2LCAyMzIsIDE0LCA3LCAyMTYsIDIzMSwgCi0gICAgMTQsIDcsIDIxNiwgMjMwLCAxNCwgNywgMjE2LCAyMjksIDE0LCA3LCAyMTYsIDIyOCwgMTQsIDcsIDIxNiwgMjI3LCAxNCwgCi0gICAgNywgMjE2LCAyMjYsIDE0LCA3LCAyMTYsIDIyNSwgMTQsIDcsIDIxNiwgMjI0LCAxNCwgNywgMjE2LCAyMjMsIDE0LCA3LCAKLSAgICAyMTYsIDIyMiwgMTQsIDcsIDIxNSwgOTEsIDE0LCA3LCAyMTUsIDkwLCAxNCwgNywgMjE1LCA4OSwgMTQsIDcsIDIxNSwgODgsIAotICAgIDE0LCA3LCAyMTUsIDg3LCAxNCwgNywgMjE1LCA4NiwgMTQsIDcsIDIxNSwgODUsIDE0LCA3LCAyMTUsIDg0LCAxNCwgNywgCi0gICAgMjE1LCA4MywgMTQsIDcsIDIxNSwgODIsIDE0LCA3LCAyMTUsIDgxLCAxNCwgNywgMjE1LCA4MCwgMTQsIDcsIDIxNSwgNzksIAotICAgIDE0LCA3LCAyMTUsIDc4LCAxNCwgNywgMjE1LCA3NywgMTQsIDcsIDIxNSwgNzYsIDE0LCA3LCAyMTUsIDc1LCAxNCwgNywgCi0gICAgMjE1LCA3NCwgMTQsIDcsIDIxNSwgNzMsIDE0LCA3LCAyMTUsIDcyLCAxNCwgNywgMjE1LCA3MSwgMTQsIDcsIDIxNSwgNzAsIAotICAgIDE0LCA3LCAyMTUsIDY5LCAxNCwgNywgMjE1LCA2OCwgMTQsIDcsIDIxNSwgNjcsIDE0LCA3LCAyMTUsIDY2LCAxNCwgNywgCi0gICAgMjE1LCA2NSwgMTQsIDcsIDIxNSwgNjQsIDE0LCA3LCAyMTUsIDYzLCAxNCwgNywgMjE1LCA2MiwgMTQsIDcsIDIxNSwgNjEsIAotICAgIDE0LCA3LCAyMTUsIDYwLCAxNCwgNywgMjE1LCA1OSwgMTQsIDcsIDIxNSwgNTgsIDE0LCA3LCAyMTUsIDU3LCAxNCwgNywgCi0gICAgMjE1LCA1NiwgMTQsIDcsIDIxNSwgNTUsIDE0LCA3LCAyMTUsIDU0LCAxNCwgNywgMjE1LCA1MywgMTQsIDcsIDIxNSwgNTIsIAotICAgIDE0LCA3LCAyMTUsIDUxLCAxNCwgNywgMjE1LCA1MCwgMTQsIDcsIDIxNSwgNDksIDE0LCA3LCAyMTUsIDQ4LCAxNCwgNywgCi0gICAgMjE1LCA0NywgMTQsIDcsIDIxNSwgNDYsIDE0LCA3LCAyMTUsIDQ1LCAxNCwgNywgMjE1LCA0NCwgMTQsIDcsIDIxNSwgNDMsIAotICAgIDE0LCA3LCAyMTUsIDQyLCAxNCwgNywgMjE1LCA0MSwgMTQsIDcsIDIxNSwgNDAsIDE0LCA3LCAyMTUsIDM5LCAxNCwgNywgCi0gICAgMjE1LCAzOCwgMTQsIDcsIDIxMCwgNjcsIDE0LCA3LCAyMTAsIDY2LCAxNCwgNywgMjEwLCA2NSwgMTQsIDcsIDIxMCwgNjQsIAotICAgIDE0LCA3LCAyMTAsIDYzLCAxNCwgNywgMjEwLCA2MiwgMTQsIDcsIDIxMCwgNjEsIDE0LCA3LCAyMTAsIDYwLCAxNCwgNywgCi0gICAgMjEwLCA1OSwgMTQsIDcsIDIxMCwgNTgsIDE0LCA3LCAyMTAsIDU3LCAxNCwgNywgMjEwLCA1NiwgMTQsIDcsIDIxMCwgNTUsIAotICAgIDE0LCA3LCAyMTAsIDU0LCAxNCwgNywgMjEwLCA1MywgMTQsIDcsIDIxMCwgNTIsIDE0LCA3LCAyMTAsIDUxLCAxNCwgNywgCi0gICAgMjEwLCA1MCwgMTQsIDcsIDIxMCwgNDksIDE0LCA3LCAyMTAsIDQ4LCAxNCwgNywgMjEwLCA0NywgMTQsIDcsIDIxMCwgNDYsIAotICAgIDE0LCA3LCAyMTAsIDQ1LCAxNCwgNywgMjEwLCA0NCwgMTQsIDcsIDIxMCwgNDMsIDE0LCA3LCAyMTAsIDQyLCAxNCwgNywgCi0gICAgMjEwLCA0MSwgMTQsIDcsIDIxMCwgNDAsIDE0LCA3LCAyMTAsIDM5LCAxNCwgNywgMjEwLCAzOCwgMTQsIDcsIDIxMCwgMzcsIAotICAgIDE0LCA3LCAyMTAsIDM2LCAxNCwgNywgMjEwLCAzNSwgMTQsIDcsIDIxMCwgMzQsIDE0LCA3LCAyMTAsIDMzLCAxNCwgNywgCi0gICAgMjEwLCAzMiwgMTQsIDcsIDIxMCwgMzEsIDE0LCA3LCAyMTAsIDMwLCAxNCwgNywgMjEwLCAyOSwgMTQsIDcsIDIxMCwgMjgsIAotICAgIDE0LCA3LCAyMTAsIDI3LCAxNCwgNywgMjEwLCAyNiwgMTQsIDcsIDIxMCwgMjUsIDE0LCA3LCAyMTAsIDI0LCAxNCwgNywgCi0gICAgMjA3LCA4OCwgMTQsIDcsIDIwNywgODcsIDE0LCA3LCAyMDcsIDg2LCAxNCwgNywgMjA3LCA4NSwgMTQsIDcsIDIwNywgODQsIAotICAgIDE0LCA3LCAyMDcsIDgzLCAxNCwgNywgMjA3LCA4MiwgMTQsIDcsIDIwNywgODEsIDE0LCA3LCAyMDcsIDgwLCAxNCwgNywgCi0gICAgMjA3LCA3OSwgMTQsIDcsIDIwNywgNzgsIDE0LCA3LCAyMDcsIDc3LCAxNCwgNywgMjA3LCA3NiwgMTQsIDcsIDIwNywgNzUsIAotICAgIDE0LCA3LCAyMDcsIDc0LCAxNCwgNywgMjA3LCA3MywgMTQsIDcsIDIwNywgNzIsIDE0LCA3LCAyMDcsIDcxLCAxNCwgNywgCi0gICAgMjA3LCA3MCwgMTQsIDcsIDIwNywgNjksIDE0LCA3LCAyMDcsIDY4LCAxNCwgNywgMjA3LCA2NywgMTQsIDcsIDIwNywgNjYsIAotICAgIDE0LCA3LCAyMDcsIDY1LCAxNCwgNywgMjA3LCA2NCwgMTQsIDcsIDIwNywgNjMsIDE0LCA3LCAyMDcsIDYyLCAxNCwgNywgCi0gICAgMjA3LCA2MSwgMTQsIDcsIDIwNywgNjAsIDE0LCA3LCAyMDcsIDU5LCAxNCwgNywgMjA3LCA1OCwgMTQsIDcsIDIwNywgNTcsIAotICAgIDE0LCA3LCAyMDcsIDU2LCAxNCwgNywgMjA3LCA1NSwgMTQsIDcsIDIwNywgNTQsIDE0LCA3LCAyMDcsIDUzLCAxNCwgNywgCi0gICAgMjA3LCA1MiwgMTQsIDcsIDIwNywgNTEsIDE0LCA3LCAyMDcsIDUwLCAxNCwgNywgMjA3LCA0OSwgMTQsIDcsIDIwNywgNDgsIAotICAgIDE0LCA3LCAyMDcsIDQ3LCAxNCwgNywgMjA3LCA0NiwgMTQsIDcsIDIwNywgNDUsIDE0LCA3LCAyMDcsIDQ0LCAxNCwgNywgCi0gICAgMjA3LCA0MywgMTQsIDcsIDIwNywgNDIsIDE0LCA3LCAyMDYsIDE2MywgMTQsIDcsIDIwNiwgMTYyLCAxNCwgNywgMjA2LCAKLSAgICAxNjEsIDE0LCA3LCAyMDYsIDE2MCwgMTQsIDcsIDIwNiwgMTU5LCAxNCwgNywgMjA2LCAxNTgsIDE0LCA3LCAyMDYsIDE1NywgCi0gICAgMTQsIDcsIDIwNiwgMTU2LCAxNCwgNywgMjA2LCAxNTUsIDE0LCA3LCAyMDYsIDE1NCwgMTQsIDcsIDIwNiwgMTUzLCAxNCwgCi0gICAgNywgMjA2LCAxNTIsIDE0LCA3LCAyMDYsIDE1MSwgMTQsIDcsIDIwNiwgMTUwLCAxNCwgNywgMjA2LCAxNDksIDE0LCA3LCAKLSAgICAyMDYsIDE0OCwgMTQsIDcsIDIwNiwgMTQ3LCAxNCwgNywgMjA2LCAxNDYsIDE0LCA3LCAyMDYsIDE0NSwgMTQsIDcsIDIwNiwgCi0gICAgMTQ0LCAxNCwgNywgMjA2LCAxNDMsIDE0LCA3LCAyMDYsIDE0MiwgMTQsIDcsIDIwNiwgMTQxLCAxNCwgNywgMjA2LCAxNDAsIAotICAgIDE0LCA3LCAyMDYsIDEzOSwgMTQsIDcsIDIwNiwgMTM4LCAxNCwgNywgMjA2LCAxMzcsIDE0LCA3LCAyMDYsIDEzNiwgMTQsIAotICAgIDcsIDIwNiwgMTM1LCAxNCwgNywgMjA2LCAxMzQsIDE0LCA3LCAyMDYsIDEzMywgMTQsIDcsIDIwNiwgMTMyLCAxNCwgNywgCi0gICAgMjA2LCAxMzEsIDE0LCA3LCAyMDYsIDEzMCwgMTQsIDcsIDIwNiwgMTI5LCAxNCwgNywgMjA2LCAxMjgsIDE0LCA3LCAyMDYsIAotICAgIDEyNywgMTQsIDcsIDIwNiwgMTI2LCAxNCwgNywgMjA2LCAxMjUsIDE0LCA3LCAyMDYsIDEyNCwgMTQsIDcsIDIwNiwgMTIzLCAKLSAgICAxNCwgNywgMjA2LCAxMjIsIDE0LCA3LCAyMDYsIDEyMSwgMTQsIDcsIDIwNiwgMTIwLCAxNCwgNywgMjA2LCAxMTksIDE0LCAKLSAgICA3LCAyMDYsIDExOCwgMTQsIDcsIDIwNiwgMTE3LCAxNCwgNywgMjA2LCAxMTYsIDE0LCA3LCAyMDYsIDExNSwgMTQsIDcsIAotICAgIDIwNiwgMTE0LCAxNCwgNywgMjA2LCAxMTMsIDE0LCA3LCAyMDYsIDExMiwgMTQsIDcsIDIwNiwgMTExLCAxNCwgNywgMjA2LCAKLSAgICAxMTAsIDE0LCA3LCAyMDYsIDEwOSwgMTQsIDcsIDIwNiwgMTA4LCAxNCwgNywgMjA2LCAxMDcsIDE0LCA3LCAyMDYsIDEwNiwgCi0gICAgMTQsIDcsIDIwNiwgMTA1LCAxNCwgNywgMjA2LCAxMDQsIDE0LCA3LCAyMDYsIDEwMywgMTQsIDcsIDIwNiwgMTAyLCAxNCwgCi0gICAgNywgMjA2LCAxMDEsIDE0LCA3LCAyMDYsIDEwMCwgMTQsIDcsIDIwNiwgOTksIDE0LCA3LCAyMDYsIDk4LCAxNCwgNywgMjA2LCAKLSAgICA5NywgMTQsIDcsIDIwNiwgOTYsIDE0LCA3LCAyMDYsIDk1LCAxNCwgNywgMjA2LCA5NCwgMTQsIDcsIDIwNiwgOTMsIDE0LCAKLSAgICA3LCAyMDYsIDkyLCAxNCwgNywgMjA2LCA5MSwgMTQsIDcsIDIwNiwgOTAsIDE0LCA3LCAyMDYsIDg5LCAxNCwgNywgMjA2LCAKLSAgICA4OCwgMTQsIDcsIDIwNiwgODcsIDE0LCA3LCAyMDQsIDE0MywgMTQsIDcsIDIwNCwgMTQyLCAxNCwgNywgMjA0LCAxNDEsIAotICAgIDE0LCA3LCAyMDQsIDE0MCwgMTQsIDcsIDIwNCwgMTM5LCAxNCwgNywgMjA0LCAxMzgsIDE0LCA3LCAyMDQsIDEzNywgMTQsIAotICAgIDcsIDIwNCwgMTM2LCAxNCwgNywgMjA0LCAxMzUsIDE0LCA3LCAyMDQsIDEzNCwgMTQsIDcsIDIwNCwgMTMzLCAxNCwgNywgCi0gICAgMjA0LCAxMzIsIDE0LCA3LCAyMDQsIDEzMSwgMTQsIDcsIDIwNCwgMTMwLCAxNCwgNywgMjA0LCAxMjksIDE0LCA3LCAyMDQsIAotICAgIDEyOCwgMTQsIDcsIDIwNCwgMTI3LCAxNCwgNywgMjA0LCAxMjYsIDE0LCA3LCAyMDQsIDEyNSwgMTQsIDcsIDIwNCwgMTI0LCAKLSAgICAxNCwgNywgMjA0LCAxMjMsIDE0LCA3LCAyMDQsIDEyMiwgMTQsIDcsIDIwNCwgMTIxLCAxNCwgNywgMjA0LCAxMjAsIDE0LCAKLSAgICA3LCAyMDQsIDExOSwgMTQsIDcsIDIwNCwgMTE4LCAxNCwgNywgMjA0LCAxMTcsIDE0LCA3LCAyMDQsIDExNiwgMTQsIDcsIAotICAgIDIwNCwgMTE1LCAxNCwgNywgMjA0LCAxMTQsIDE0LCA3LCAyMDQsIDExMywgMTQsIDcsIDIwNCwgMTEyLCAxNCwgNywgMjAzLCAKLSAgICAxOTQsIDE0LCA3LCAyMDMsIDE5MywgMTQsIDcsIDIwMywgMTkyLCAxNCwgNywgMjAzLCAxOTEsIDE0LCA3LCAyMDMsIDE5MCwgCi0gICAgMTQsIDcsIDIwMywgMTg5LCAxNCwgNywgMjAzLCAxODgsIDE0LCA3LCAyMDMsIDE4NywgMTQsIDcsIDIwMywgMTg2LCAxNCwgCi0gICAgNywgMjAzLCAxODUsIDE0LCA3LCAyMDMsIDE4NCwgMTQsIDcsIDIwMywgMTgzLCAxNCwgNywgMjAzLCAxMjIsIDE0LCA3LCAKLSAgICAyMDMsIDEyMSwgMTQsIDcsIDIwMywgMTIwLCAxNCwgNywgMjAzLCAxMTksIDE0LCA3LCAyMDMsIDExOCwgMTQsIDcsIDIwMywgCi0gICAgMTE3LCAxNCwgNywgMjAzLCAxMTYsIDE0LCA3LCAyMDMsIDExNSwgMTQsIDcsIDIwMywgMTE0LCAxNCwgNywgMjAyLCAxNTgsIAotICAgIDE0LCA3LCAyMDIsIDE1NywgMTQsIDcsIDIwMiwgMTU2LCAxNCwgNywgMjAyLCAxNTUsIDE0LCA3LCAyMDIsIDE1NCwgMTQsIAotICAgIDcsIDIwMiwgMTUzLCAxNCwgNywgMjAyLCAxNTIsIDE0LCA3LCAyMDIsIDE1MSwgMTQsIDcsIDIwMiwgMTUwLCAxNCwgNywgCi0gICAgMjAyLCAxNDksIDE0LCA3LCAyMDIsIDE0OCwgMTQsIDcsIDIwMiwgMTQ3LCAxNCwgNywgMjAyLCAxNDYsIDE0LCA3LCAyMDIsIAotICAgIDE0NSwgMTQsIDcsIDIwMiwgMTQ0LCAxNCwgNywgMjAyLCAxNDMsIDE0LCA3LCAyMDIsIDE0MiwgMTQsIDcsIDIwMiwgMTQxLCAKLSAgICAxNCwgNywgMjAyLCAxNDAsIDE0LCA3LCAyMDIsIDEzOSwgMTQsIDcsIDIwMiwgMTM4LCAxNCwgNywgMjAyLCAxMzcsIDE0LCAKLSAgICA3LCAyMDIsIDEzNiwgMTQsIDcsIDIwMiwgMTM1LCAxNCwgNywgMjAyLCAxMzQsIDE0LCA3LCAyMDIsIDEzMywgMTQsIDcsIAotICAgIDIwMiwgMTMyLCAxNCwgNywgMjAyLCAxMzEsIDE0LCA3LCAyMDIsIDEzMCwgMTQsIDcsIDIwMiwgMTI5LCAxNCwgNywgMjAyLCAKLSAgICAxMjgsIDE0LCA3LCAyMDIsIDEyNywgMTQsIDcsIDIwMiwgMTI2LCAxNCwgNywgMjAyLCAxMjUsIDE0LCA3LCAyMDIsIDEyNCwgCi0gICAgMTQsIDcsIDIwMiwgMTIzLCAxNCwgNywgMjAyLCAxMjIsIDE0LCA3LCAyMDIsIDEyMSwgMTQsIDcsIDIwMiwgMTIwLCAxNCwgCi0gICAgNywgMjAyLCAxMTksIDE0LCA3LCAyMDIsIDExOCwgMTQsIDcsIDI1MiwgMjQsIDE0LCA3LCAyNTIsIDIzLCAxNCwgNywgMjUyLCAKLSAgICAyMiwgMTQsIDcsIDI1MiwgMjEsIDE0LCA3LCAyNTIsIDIwLCAxNCwgNywgMjUyLCAxOSwgMTQsIDcsIDI1MiwgMTgsIDE0LCAKLSAgICA3LCAyNTIsIDE3LCAxNCwgNywgMjUyLCAxNiwgMTQsIDcsIDI1MiwgMTUsIDE0LCA3LCAyNTIsIDE0LCAxNCwgNywgMjUyLCAKLSAgICAxMywgMTQsIDcsIDI1MiwgMTIsIDE0LCA3LCAyNTIsIDExLCAxNCwgNywgMjUyLCAxMCwgMTQsIDcsIDI1MiwgOSwgMTQsIDcsIAotICAgIDI1MiwgOCwgMTQsIDcsIDI1MiwgNywgMTQsIDcsIDI1MiwgNiwgMTQsIDcsIDI1MiwgNSwgMTQsIDcsIDI1MiwgNCwgMTQsIAotICAgIDcsIDI1MiwgMywgMTQsIDcsIDI1MiwgMiwgMTQsIDcsIDI1MiwgMSwgMTQsIDcsIDI1MiwgMCwgMTQsIDcsIDI1MSwgMjU1LCAKLSAgICAxNCwgNywgMjUxLCAyNTQsIDE0LCA3LCAyNTEsIDI1MywgMTQsIDcsIDI1MSwgMjUyLCAxNCwgNywgMjUxLCAyNTEsIDE0LCAKLSAgICA3LCAyNTEsIDI1MCwgMTQsIDcsIDI1MSwgMjQ5LCAxNCwgNywgMjUxLCAyNDgsIDE0LCA3LCAyNTEsIDI0NywgMjcsIDcsIAotICAgIDI1NSwgMTgsIDI3LCA3LCAyNTUsIDE3LCAyNywgNywgMjU1LCAxNiwgMjcsIDcsIDI1NSwgMTUsIDI3LCA3LCAyNTUsIDE0LCAKLSAgICAyNywgNywgMjU1LCAxMiwgMjcsIDcsIDI1NSwgOSwgMjcsIDcsIDI1NSwgOCwgMjcsIDcsIDI1NSwgNywgMjcsIDcsIDI1NSwgCi0gICAgNiwgMjcsIDcsIDI1NSwgNSwgMjcsIDcsIDI1NSwgNCwgMjcsIDcsIDI1NSwgMywgMjcsIDcsIDI1NSwgMiwgMjcsIDcsIAotICAgIDI1NSwgMSwgMjcsIDcsIDI1NCwgMjU1LCAyNywgNywgMjU0LCAyNTQsIDI3LCA3LCAyNTQsIDI1MywgMjcsIDcsIDI1NCwgCi0gICAgMjUxLCAyNywgNywgMjU0LCAyNTAsIDI3LCA3LCAyNTQsIDI0OSwgMjcsIDcsIDI1NCwgMjQ4LCAyNywgNywgMjU0LCAyNDcsIAotICAgIDI3LCA3LCAyNTQsIDI0NiwgMjcsIDcsIDI1NCwgMjQ1LCAyNywgNywgMjU0LCAyNDQsIDI3LCA3LCAyNTQsIDI0MywgMjcsIAotICAgIDcsIDI1NCwgMjQyLCAyNywgNywgMjU0LCAyNDEsIDI3LCA3LCAyNTQsIDI0MCwgMjcsIDcsIDI1NCwgMjM4LCAyNywgNywgCi0gICAgMjU0LCAyMzcsIDI3LCA3LCAyNTQsIDIzNiwgMjcsIDcsIDI1NCwgMjM1LCAyNywgNywgMjU0LCAyMzMsIDI3LCA3LCAyNTQsIAotICAgIDIzMiwgMjcsIDcsIDI1NCwgMjMxLCAyNywgNywgMjU0LCAyMzAsIDI3LCA3LCAyNTQsIDIyOSwgMjcsIDcsIDI1NCwgMjI4LCAKLSAgICAyNywgNywgMjU0LCAyMjcsIDI3LCA3LCAyNTQsIDIyNiwgMjcsIDcsIDI1NCwgMjI1LCAyNywgNywgMjU0LCAyMjMsIDI3LCAKLSAgICA3LCAyNTQsIDIyMiwgMjcsIDcsIDI1NCwgMjIxLCAyNywgNywgMjU0LCAyMTksIDI3LCA3LCAyNTQsIDIxNywgMjcsIDcsIAotICAgIDI1NCwgMjE2LCAyNywgNywgMjU0LCAyMTUsIDI3LCA3LCAyNTQsIDIxNCwgMjcsIDcsIDI1NCwgMjEzLCAyNywgNywgMjU0LCAKLSAgICAyMTIsIDI3LCA3LCAyNTQsIDIxMSwgMjcsIDcsIDI1NCwgMjEwLCAyNywgNywgMjU0LCAyMDksIDI3LCA3LCAyNTQsIDIwOCwgCi0gICAgMjcsIDcsIDI1NCwgMjA3LCAyNywgNywgMjU0LCAyMDYsIDI3LCA3LCAyNTQsIDIwNSwgMjcsIDcsIDI1NCwgMjA0LCAyNywgCi0gICAgNywgMjU0LCAyMDMsIDI3LCA3LCAyNTQsIDIwMiwgMjcsIDcsIDI1NCwgMjAxLCAyNywgNywgMjU0LCAyMDAsIDI3LCA3LCAKLSAgICAyNTQsIDE5OSwgMjcsIDcsIDI1NCwgMTk4LCAyNywgNywgMjU0LCAxOTcsIDI3LCA3LCAyNTQsIDE5NiwgMjcsIDcsIDI1NCwgCi0gICAgMTk1LCAyNywgNywgMjU0LCAxOTQsIDI3LCA3LCAyNTQsIDE5MywgMjcsIDcsIDI1NCwgMTkyLCAyNywgNywgMjU0LCAxOTEsIAotICAgIDI3LCA3LCAyNTQsIDE5MCwgMjcsIDcsIDI1NCwgMTg5LCAyNywgNywgMjU0LCAxODgsIDI3LCA3LCAyNTQsIDE4NywgMjcsIAotICAgIDcsIDI1NCwgMTg2LCAyNywgNywgMjU0LCAxODUsIDI3LCA3LCAyNTQsIDE4NCwgMjcsIDcsIDI1NCwgMTgzLCAyNywgNywgCi0gICAgMjU0LCAxODIsIDI3LCA3LCAyNTQsIDE4MSwgMjcsIDcsIDI1NCwgMTgwLCAyNywgNywgMjU0LCAxNzksIDI3LCA3LCAyNTQsIAotICAgIDE3OCwgMjcsIDcsIDI1NCwgMTc3LCAyNywgNywgMjU0LCAxNzYsIDI3LCA3LCAyNTQsIDE3NSwgMjcsIDcsIDI1NCwgMTc0LCAKLSAgICAyNywgNywgMjU0LCAxNzMsIDI3LCA3LCAyNTQsIDE3MiwgMjcsIDcsIDI1NCwgMTcxLCAyNywgNywgMjU0LCAxNzAsIDI3LCAKLSAgICA3LCAyNTQsIDE2OSwgMjcsIDcsIDI1NCwgMTY4LCAyNywgNywgMjU0LCAxNjcsIDI3LCA3LCAyNTQsIDE2NiwgMjcsIDcsIAotICAgIDI1NCwgMTY1LCAyNywgNywgMjU0LCAxNjQsIDI3LCA3LCAyNTQsIDE2MywgMjcsIDcsIDI1NCwgMTYyLCAyNywgNywgMjU0LCAKLSAgICAxNjEsIDI3LCA3LCAyNTQsIDE2MCwgMjcsIDcsIDI1NCwgMTU5LCAyNywgNywgMjU0LCAxNTgsIDI3LCA3LCAyNTQsIDE1NywgCi0gICAgMjcsIDcsIDI1NCwgMTU2LCAyNywgNywgMjU0LCAxNTUsIDI3LCA3LCAyNTQsIDE1NCwgMjcsIDcsIDI1NCwgMTUzLCAyNywgCi0gICAgNywgMjU0LCAxNTEsIDI3LCA3LCAyNTQsIDE1MCwgMjcsIDcsIDI1NCwgMTQ5LCAyNywgNywgMjU0LCAxNDgsIDI3LCA3LCAKLSAgICAyNTQsIDE0NywgMjcsIDcsIDI1NCwgMTQ2LCAyNywgNywgMjU0LCAxNDUsIDI3LCA3LCAyNTQsIDE0NCwgMjcsIDcsIDI1NCwgCi0gICAgMTQzLCAyNywgNywgMjU0LCAxNDIsIDI3LCA3LCAyNTQsIDE0MSwgMjcsIDcsIDI1NCwgMTQwLCAyNywgNywgMjU0LCAxMzksIAotICAgIDI3LCA3LCAyNTQsIDEzOCwgMjcsIDcsIDI1NCwgMTM3LCAyNywgNywgMjU0LCAxMzYsIDI3LCA3LCAyNTQsIDEzNSwgMjcsIAotICAgIDcsIDI1NCwgMTM0LCAyNywgNywgMjU0LCAxMzMsIDI3LCA3LCAyNTQsIDEzMiwgMjcsIDcsIDI1NCwgMTMxLCAyNywgNywgCi0gICAgMjU0LCAxMzAsIDI3LCA3LCAyNTQsIDEyOSwgMjcsIDcsIDI1NCwgMTI4LCAyNywgNywgMjU0LCAxMjcsIDI3LCA3LCAyNTQsIAotICAgIDEyNiwgMjcsIDcsIDI1NCwgMTI1LCAyNywgNywgMjU0LCAxMjQsIDI3LCA3LCAyNTQsIDEyMywgMjcsIDcsIDI1NCwgMTIyLCAKLSAgICAyNywgNywgMjU0LCAxMjEsIDI3LCA3LCAyNTQsIDEyMCwgMjcsIDcsIDI1NCwgMTE5LCAyNywgNywgMjU0LCAxMTgsIDI3LCAKLSAgICA3LCAyNTQsIDExNiwgMjcsIDcsIDI1NCwgMTE1LCAyNywgNywgMjU0LCAxMTQsIDI3LCA3LCAyNTQsIDExMywgMjcsIDcsIAotICAgIDI1NCwgMTEyLCAyNywgNywgMjU0LCAxMTEsIDI3LCA3LCAyNTQsIDExMCwgMjcsIDcsIDI1NCwgMTA5LCAyNywgNywgMjU0LCAKLSAgICAxMDgsIDI3LCA3LCAyNTQsIDEwNywgMjcsIDcsIDI1NCwgMTA2LCAyNywgNywgMjU0LCAxMDUsIDI3LCA3LCAyNTQsIDEwMywgCi0gICAgMjcsIDcsIDI1NCwgMTAyLCAyNywgNywgMjU0LCAxMDEsIDI3LCA3LCAyNTQsIDEwMCwgMjcsIDcsIDI1NCwgOTksIDI3LCA3LCAKLSAgICAyNTQsIDk4LCAyNywgNywgMjU0LCA5NywgMjcsIDcsIDI1NCwgOTYsIDI3LCA3LCAyNTQsIDk1LCAyNywgNywgMjU0LCA5NCwgCi0gICAgMjcsIDcsIDI1NCwgOTMsIDI3LCA3LCAyNTQsIDkyLCAyNywgNywgMjU0LCA5MSwgMjcsIDcsIDI1NCwgOTAsIDI3LCA3LCAKLSAgICAyNTQsIDg5LCAyNywgNywgMjU0LCA4OCwgMjcsIDcsIDI1NCwgODcsIDI3LCA3LCAyNTQsIDg2LCAyNywgNywgMjU0LCA4NSwgCi0gICAgMjcsIDcsIDI1NCwgODQsIDI3LCA3LCAyNTQsIDgzLCAyNywgNywgMjU0LCA4MiwgMjcsIDcsIDI1NCwgODEsIDI3LCA3LCAKLSAgICAyNTQsIDgwLCAyNywgNywgMjU0LCA3OSwgMjcsIDcsIDI1NCwgNzgsIDI3LCA3LCAyNTQsIDc3LCAyNywgNywgMjU0LCA3NiwgCi0gICAgMjcsIDcsIDI1NCwgNzUsIDI3LCA3LCAyNTQsIDc0LCAyNywgNywgMjU0LCA3MywgMjcsIDcsIDI1NCwgNzIsIDI3LCA3LCAKLSAgICAyNTQsIDcxLCAyNywgNywgMjU0LCA3MCwgMjcsIDcsIDI1NCwgNjksIDI3LCA3LCAyNTQsIDY4LCAyNywgNywgMjU0LCA2NywgCi0gICAgMjcsIDcsIDI1NCwgNjYsIDI3LCA3LCAyNTQsIDY1LCAyNywgNywgMjU0LCA2NCwgMjcsIDcsIDI1NCwgNjMsIDI3LCA3LCAKLSAgICAyNTQsIDYyLCAyNywgNywgMjU0LCA2MSwgMjcsIDcsIDI1NCwgNjAsIDI3LCA3LCAyNTQsIDU5LCAyNywgNywgMjU0LCA1OCwgCi0gICAgMjcsIDcsIDI1NCwgNTcsIDI3LCA3LCAyNTQsIDU2LCAyNywgNywgMjU0LCA1NSwgMjcsIDcsIDI1NCwgNTQsIDI3LCA3LCAKLSAgICAyNTQsIDUzLCAyNywgNywgMjU0LCA1MiwgMjcsIDcsIDI1NCwgNTEsIDI3LCA3LCAyNTQsIDUwLCAyNywgNywgMjU0LCA0OSwgCi0gICAgMjcsIDcsIDI1NCwgNDgsIDI3LCA3LCAyNTQsIDQ3LCAyNywgNywgMjU0LCA0NiwgMjcsIDcsIDI1NCwgNDUsIDI3LCA3LCAKLSAgICAyNTQsIDQ0LCAyNywgNywgMjU0LCA0MywgMjcsIDcsIDI1NCwgNDIsIDI3LCA3LCAyNTQsIDQxLCAyNywgNywgMjU0LCA0MCwgCi0gICAgMjcsIDcsIDI1NCwgMzksIDI3LCA3LCAyNTQsIDM4LCAyNywgNywgMjU0LCAzNywgMjcsIDcsIDI1NCwgMzYsIDI3LCA3LCAKLSAgICAyNTQsIDM1LCAyNywgNywgMjU0LCAzMywgMjcsIDcsIDI1NCwgMzIsIDI3LCA3LCAyNTQsIDMxLCAyNywgNywgMjU0LCAzMCwgCi0gICAgMjcsIDcsIDI1NCwgMjksIDI3LCA3LCAyNTQsIDI4LCAyNywgNywgMjU0LCAyNywgMjcsIDcsIDI1NCwgMjYsIDI3LCA3LCAKLSAgICAyNTQsIDI1LCAyNywgNywgMjU0LCAyNCwgMjcsIDcsIDI1NCwgMjMsIDI3LCA3LCAyNTQsIDIyLCAyNywgNywgMjU0LCAyMSwgCi0gICAgMjcsIDcsIDI1NCwgMjAsIDI3LCA3LCAyNTQsIDE5LCAyNywgNywgMjU0LCAxOCwgMjcsIDcsIDI1NCwgMTcsIDI3LCA3LCAKLSAgICAyNTQsIDE2LCAyNywgNywgMjU0LCAxNSwgMjcsIDcsIDI1NCwgMTQsIDI3LCA3LCAyNTQsIDEzLCAyNywgNywgMjU0LCAxMiwgCi0gICAgMjcsIDcsIDI1NCwgMTEsIDI3LCA3LCAyNTQsIDEwLCAyNywgNywgMjU0LCA5LCAyNywgNywgMjU0LCA4LCAyNywgNywgMjU0LCAKLSAgICA3LCAyNywgNywgMjU0LCA2LCAyNywgNywgMjU0LCA1LCAyNywgNywgMjU0LCA0LCAyNywgNywgMjU0LCAzLCAyNywgNywgCi0gICAgMjU0LCAyLCAyNywgNywgMjU0LCAxLCAyNywgNywgMjU0LCAwLCAyNywgNywgMjUzLCAyNTUsIDI3LCA3LCAyNTMsIDI1NCwgCi0gICAgMjcsIDcsIDI1MywgMjUzLCAyNywgNywgMjUzLCAyNTIsIDI3LCA3LCAyNTMsIDI1MSwgMjcsIDcsIDI1MywgMjUwLCAyNywgCi0gICAgNywgMjUzLCAyNDksIDI3LCA3LCAyNTMsIDI0OCwgMjcsIDcsIDI1MywgMjQ3LCAyNywgNywgMjUzLCAyNDYsIDI3LCA3LCAKLSAgICAyNTMsIDI0NSwgMjcsIDcsIDI1MywgMjQ0LCAyNywgNywgMjUzLCAyNDMsIDI3LCA3LCAyNTMsIDI0MiwgMjcsIDcsIDI1MywgCi0gICAgMjQxLCAyNywgNywgMjUzLCAyNDAsIDI3LCA3LCAyNTMsIDIzOSwgMjcsIDcsIDI1MywgMjM4LCAyNywgNywgMjUzLCAyMzcsIAotICAgIDI3LCA3LCAyNTMsIDIzNiwgMjcsIDcsIDI1MywgMjM1LCAyNywgNywgMjUzLCAyMzQsIDI3LCA3LCAyNTMsIDIzMywgMjcsIAotICAgIDcsIDI1MywgMjMyLCAyNywgNywgMjUzLCAyMzEsIDI3LCA3LCAyNTMsIDIzMCwgMjcsIDcsIDI1MywgMjI5LCAyNywgNywgCi0gICAgMjUzLCAyMjgsIDI3LCA3LCAyNTMsIDIyNywgMjcsIDcsIDI1MywgMjI2LCAyNywgNywgMjUzLCAyMjUsIDI3LCA3LCAyNTMsIAotICAgIDIyNCwgMjcsIDcsIDI1MywgMjIzLCAyNywgNywgMjUzLCAyMjIsIDI3LCA3LCAyNTMsIDIyMSwgMjcsIDcsIDI1MywgMjIwLCAKLSAgICAyNywgNywgMjUzLCAyMTksIDI3LCA3LCAyNTMsIDIxOCwgMjcsIDcsIDI1MywgMjE3LCAyNywgNywgMjUzLCAyMTYsIDI3LCAKLSAgICA3LCAyNTMsIDIxNSwgMjcsIDcsIDI1MywgMjE0LCAyNywgNywgMjUzLCAyMTMsIDI3LCA3LCAyNTMsIDIxMiwgMjcsIDcsIAotICAgIDI1MywgMjExLCAyNywgNywgMjUzLCAyMTAsIDI3LCA3LCAyNTMsIDIwOSwgMjcsIDcsIDI1MywgMjA4LCAyNywgNywgMjUzLCAKLSAgICAyMDcsIDI3LCA3LCAyNTMsIDIwNiwgMjcsIDcsIDI1MywgMjA1LCAyNywgNywgMjUzLCAyMDQsIDI3LCA3LCAyNTMsIDIwMywgCi0gICAgMjcsIDcsIDI1MywgMjAyLCAyNywgNywgMjUzLCAyMDEsIDI3LCA3LCAyNTMsIDIwMCwgMjcsIDcsIDI1MywgMTk5LCAyNywgCi0gICAgNywgMjUzLCAxOTgsIDI3LCA3LCAyNTMsIDE5NywgMjcsIDcsIDI1MywgMTk2LCAyNywgNywgMjUzLCAxOTUsIDI3LCA3LCAKLSAgICAyNTMsIDE5NCwgMjcsIDcsIDI1MywgMTkzLCAyNywgNywgMjUzLCAxOTIsIDI3LCA3LCAyNTMsIDE5MSwgMjcsIDcsIDI1MywgCi0gICAgMTkwLCAyNywgNywgMjUzLCAxODksIDI3LCA3LCAyNTMsIDE4OCwgMjcsIDcsIDI1MywgMTg3LCAyNywgNywgMjUzLCAxODYsIAotICAgIDI3LCA3LCAyNTMsIDE4NSwgMjcsIDcsIDI1MywgMTg0LCAyNywgNywgMjUzLCAxODMsIDI3LCA3LCAyNTMsIDE4MiwgMjcsIAotICAgIDcsIDI1MywgMTgxLCAyNywgNywgMjUzLCAxODAsIDI3LCA3LCAyNTMsIDE3OSwgMjcsIDcsIDI1MywgMTc3LCAyNywgNywgCi0gICAgMjUzLCAxNzYsIDI3LCA3LCAyNTMsIDE3NSwgMjcsIDcsIDI1MywgMTc0LCAyNywgNywgMjUzLCAxNzMsIDI3LCA3LCAyNTMsIAotICAgIDE3MiwgMjcsIDcsIDI1MywgMTcxLCAyNywgNywgMjUzLCAxNzAsIDI3LCA3LCAyNTMsIDE2OSwgMjcsIDcsIDI1MywgMTY4LCAKLSAgICAyNywgNywgMjUzLCAxNjcsIDI3LCA3LCAyNTMsIDE2NCwgMjcsIDcsIDI1MywgMTYzLCAyNywgNywgMjUzLCAxNjIsIDI3LCAKLSAgICA3LCAyNTMsIDE2MSwgMjcsIDcsIDI1MywgMTU3LCAyNywgNywgMjUzLCAxNTYsIDI3LCA3LCAyNTMsIDE1NSwgMjcsIDcsIAotICAgIDI1MywgMTU0LCAyNywgNywgMjUzLCAxNTMsIDI3LCA3LCAyNTMsIDE1MiwgMjcsIDcsIDI1MywgMTUxLCAyNywgNywgMjUzLCAKLSAgICAxNTAsIDI3LCA3LCAyNTMsIDE0OSwgMjcsIDcsIDI1MywgMTQ4LCAyNywgNywgMjUzLCAxNDcsIDI3LCA3LCAyNTMsIDE0NiwgCi0gICAgMjcsIDcsIDI1MywgMTQ1LCAyNywgNywgMjUzLCAxNDQsIDI3LCA3LCAyNTMsIDE0MywgMjcsIDcsIDI1MywgMTQyLCAyNywgCi0gICAgNywgMjUzLCAxNDEsIDI3LCA3LCAyNTMsIDE0MCwgMjcsIDcsIDI1MywgMTM5LCAyNywgNywgMjUzLCAxMzcsIDI3LCA3LCAKLSAgICAyNTMsIDEzNiwgMjcsIDcsIDI1MywgMTM1LCAyNywgNywgMjUzLCAxMzQsIDI3LCA3LCAyNTMsIDEzMywgMjcsIDcsIDI1MywgCi0gICAgMTMyLCAyNywgNywgMjUzLCAxMzEsIDI3LCA3LCAyNTMsIDEzMCwgMjcsIDcsIDI1MywgMTI5LCAyNywgNywgMjUzLCAxMjgsIAotICAgIDI3LCA3LCAyNTMsIDEyNywgMjcsIDcsIDI1MywgMTI2LCAyNywgNywgMjUzLCAxMjUsIDI3LCA3LCAyNTMsIDEyNCwgMjcsIAotICAgIDcsIDI1MywgMTIzLCAyNywgNywgMjUzLCAxMjIsIDI3LCA3LCAyNTMsIDEyMSwgMjcsIDcsIDI1MywgMTIwLCAyNywgNywgCi0gICAgMjUzLCAxMTksIDI3LCA3LCAyNTMsIDExOCwgMjcsIDcsIDI1MywgMTE3LCAyNywgNywgMjUzLCAxMTYsIDI3LCA3LCAyNTMsIAotICAgIDExNSwgMjcsIDcsIDI1MywgMTE0LCAyNywgNywgMjUzLCAxMTMsIDI3LCA3LCAyNTMsIDExMiwgMjcsIDcsIDI1MywgMTExLCAKLSAgICAyNywgNywgMjUzLCAxMTAsIDI3LCA3LCAyNTMsIDEwOSwgMjcsIDcsIDI1MywgMTA4LCAyNywgNywgMjUzLCAxMDcsIDI3LCAKLSAgICA3LCAyNTMsIDEwNiwgMjcsIDcsIDI1MywgMTA1LCAyNywgNywgMjUzLCAxMDQsIDI3LCA3LCAyNTMsIDEwMywgMjcsIDcsIAotICAgIDI1MywgMTAyLCAyNywgNywgMjUzLCAxMDEsIDI3LCA3LCAyNTMsIDEwMCwgMjcsIDcsIDI1MywgOTksIDI3LCA3LCAyNTMsIAotICAgIDk4LCAyNywgNywgMjUzLCA5NywgMjcsIDcsIDI1MywgOTYsIDI3LCA3LCAyNTMsIDk1LCAyNywgNywgMjUzLCA5NCwgMjcsIAotICAgIDcsIDI1MywgOTMsIDI3LCA3LCAyNTMsIDkyLCAyNywgNywgMjUzLCA5MSwgMjcsIDcsIDI1MywgOTAsIDI3LCA3LCAyNTMsIAotICAgIDg5LCAyNywgNywgMjUzLCA4OCwgMjcsIDcsIDI1MywgODcsIDI3LCA3LCAyNTMsIDg2LCAyNywgNywgMjUzLCA4NSwgMjcsIAotICAgIDcsIDI1MywgODQsIDI3LCA3LCAyNTMsIDgzLCAyNywgNywgMjUzLCA4MiwgMjcsIDcsIDI1MywgODEsIDI3LCA3LCAyNTMsIAotICAgIDgwLCAyNywgNywgMjUzLCA3OSwgMjcsIDcsIDI1MywgNzgsIDI3LCA3LCAyNTMsIDc3LCAyNywgNywgMjUzLCA3NiwgMjE2LCAKLSAgICAyMjEsIDIxOSwgMjQ1LCAyMTYsIDU3LCAyNywgNywgMjUzLCA3NSwgMjcsIDcsIDI1MywgNzQsIDI3LCA3LCAyNTMsIDczLCAKLSAgICAyNywgNywgMjUzLCA3MiwgMjcsIDcsIDI1MywgNzEsIDI3LCA3LCAyNTMsIDcwLCAyNywgNywgMjUzLCA2OSwgMjcsIDcsIAotICAgIDI1MywgNjgsIDI3LCA3LCAyNTMsIDY3LCAyNywgNywgMjUzLCA2NiwgMjcsIDcsIDI1MywgNjUsIDI3LCA3LCAyNTMsIDY0LCAKLSAgICAxOTksIDI3LCA3LCAyNTMsIDYzLCAyNywgNywgMjUzLCA2MiwgMjcsIDcsIDI1MywgNjEsIDI3LCA3LCAyNTMsIDYwLCAyNywgCi0gICAgNywgMjUzLCA1OSwgMjcsIDcsIDI1MywgNTgsIDI3LCA3LCAyNTMsIDU3LCAyNywgNywgMjUzLCA1NSwgMjcsIDcsIDI1MywgCi0gICAgNTMsIDI3LCA3LCAyNTMsIDUxLCAyNywgNywgMjUzLCA0OSwgMjcsIDcsIDI1MywgNDcsIDI3LCA3LCAyNTMsIDQ1LCAyNywgCi0gICAgNywgMjUzLCA0MywgMjcsIDcsIDI1MywgNDEsIDI3LCA3LCAyNTMsIDM5LCAyNywgNywgMjUzLCAzNywgMjQ4LCAxNDIsIAotICAgIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNSwgMjQxLCA4NCwgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM0LCAyNywgNywgCi0gICAgMjUzLCAzMiwgMjcsIDcsIDI1MywgMzAsIDI3LCA3LCAyNTMsIDI4LCAyNywgNywgMjUzLCAyNiwgMjcsIDcsIDI1MywgMjQsIAotICAgIDI3LCA3LCAyNTMsIDIyLCAyNywgNywgMjUzLCAyMCwgMjcsIDcsIDI1MywgMTgsIDI3LCA3LCAyNTMsIDE3LCAyNywgNywgCi0gICAgMjUzLCAxNiwgMjcsIDcsIDI1MywgMTUsIDI3LCA3LCAyNTMsIDE0LCAyNywgNywgMjUzLCAxMywgMjcsIDcsIDI1MywgMTIsIAotICAgIDI3LCA3LCAyNTMsIDExLCAyNywgNywgMjUzLCAxMCwgMjcsIDcsIDI1MywgOSwgMjcsIDcsIDI1MywgOCwgMjcsIDcsIDI1MywgCi0gICAgNywgMjcsIDcsIDI1MywgNiwgMjcsIDcsIDI1MywgNSwgMjcsIDcsIDI1MywgNCwgMjcsIDcsIDI1MywgMywgMjcsIDcsIAotICAgIDI1MywgMiwgMjcsIDcsIDI1MywgMSwgMjcsIDcsIDI1MywgMCwgMjcsIDcsIDI1MiwgMjU1LCAyNywgNywgMjUyLCAyNTQsIAotICAgIDI3LCA3LCAyNTIsIDI1MywgMjcsIDcsIDI1MiwgMjUyLCAyNywgNywgMjUyLCAyNTEsIDI3LCA3LCAyNTIsIDI1MCwgMjcsIAotICAgIDcsIDI1MiwgMjQ5LCAyNywgNywgMjUyLCAyNDgsIDI3LCA3LCAyNTIsIDI0NywgMjcsIDcsIDI1MiwgMjQ2LCAyNywgNywgCi0gICAgMjUyLCAyNDUsIDI3LCA3LCAyNTIsIDI0NCwgMjcsIDcsIDI1MiwgMjQzLCAyNywgNywgMjUyLCAyNDIsIDI3LCA3LCAyNTIsIAotICAgIDI0MSwgMjcsIDcsIDI1MiwgMjQwLCAyNywgNywgMjUyLCAyMzksIDI3LCA3LCAyNTIsIDIzOCwgMjcsIDcsIDI1MiwgMjM3LCAKLSAgICAyNywgNywgMjUyLCAyMzYsIDI3LCA3LCAyNTIsIDIzNSwgMjcsIDcsIDI1MiwgMjM0LCAyNywgNywgMjUyLCAyMzMsIDI3LCAKLSAgICA3LCAyNTIsIDIzMiwgMjcsIDcsIDI1MiwgMjMxLCAyNywgNywgMjUyLCAyMzAsIDI3LCA3LCAyNTIsIDIyOSwgMjcsIDcsIAotICAgIDI1MiwgMjI4LCAyNywgNywgMjUyLCAyMjcsIDI3LCA3LCAyNTIsIDIyNiwgMjcsIDcsIDI1MiwgMjI1LCAyNywgNywgMjUyLCAKLSAgICAyMjQsIDI3LCA3LCAyNTIsIDIyMywgMjcsIDcsIDI1MiwgMjIyLCAyNywgNywgMjUyLCAyMjEsIDI3LCA3LCAyNTIsIDIyMCwgCi0gICAgMjcsIDcsIDI1MiwgMjE5LCAyNywgNywgMjUyLCAyMTgsIDI3LCA3LCAyNTIsIDIxNywgMjcsIDcsIDI1MiwgMjE2LCAyNywgCi0gICAgNywgMjUyLCAyMTUsIDI3LCA3LCAyNTIsIDIxNCwgMjcsIDcsIDI1MiwgMjEzLCAyNywgNywgMjUyLCAyMTIsIDI3LCA3LCAKLSAgICAyNTIsIDIxMSwgMjcsIDcsIDI1MiwgMjEwLCAyNywgNywgMjUyLCAyMDksIDI3LCA3LCAyNTIsIDIwOCwgMjcsIDcsIDI1MiwgCi0gICAgMjA3LCAyNywgNywgMjUyLCAyMDYsIDI3LCA3LCAyNTIsIDIwNSwgMjcsIDcsIDI1MiwgMjA0LCAyNywgNywgMjUyLCAyMDMsIAotICAgIDI3LCA3LCAyNTIsIDIwMiwgMjcsIDcsIDI1MiwgMjAxLCAyNywgNywgMjUyLCAyMDAsIDI3LCA3LCAyNTIsIDE5OSwgMjcsIAotICAgIDcsIDI1MiwgMTk4LCAyNywgNywgMjUyLCAxOTcsIDI3LCA3LCAyNTIsIDE5NiwgMjcsIDcsIDI1MiwgMTk1LCAyNywgNywgCi0gICAgMjUyLCAxOTQsIDI3LCA3LCAyNTIsIDE5MywgMjcsIDcsIDI1MiwgMTkyLCAyNywgNywgMjUyLCAxOTEsIDI3LCA3LCAyNTIsIAotICAgIDE5MCwgMjcsIDcsIDI1MiwgMTg5LCAyNywgNywgMjUyLCAxODgsIDI3LCA3LCAyNTIsIDE4NywgMjcsIDcsIDI1MiwgMTg2LCAKLSAgICAyNywgNywgMjUyLCAxODUsIDI3LCA3LCAyNTIsIDE4NCwgMjcsIDcsIDI1MiwgMTgzLCAyNywgNywgMjUyLCAxODIsIDI3LCAKLSAgICA3LCAyNTIsIDE4MSwgMjcsIDcsIDI1MiwgMTgwLCAyNywgNywgMjUyLCAxNzksIDI3LCA3LCAyNTIsIDE3OCwgMjcsIDcsIAotICAgIDI1MiwgMTc3LCAyNywgNywgMjUyLCAxNzYsIDI3LCA3LCAyNTIsIDE3NSwgMjcsIDcsIDI1MiwgMTc0LCAyNywgNywgMjUyLCAKLSAgICAxNzMsIDI3LCA3LCAyNTIsIDE3MiwgMjcsIDcsIDI1MiwgMTcxLCAyNywgNywgMjUyLCAxNzAsIDI3LCA3LCAyNTIsIDE2OSwgCi0gICAgMjcsIDcsIDI1MiwgMTY4LCAyNywgNywgMjUyLCAxNjcsIDI3LCA3LCAyNTIsIDE2NiwgMjcsIDcsIDI1MiwgMTY1LCAyNywgCi0gICAgNywgMjUyLCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxMzYsIDIyNCwgMTk3LCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgCi0gICAgMTk4LCAyMzksIDE3OCwgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE2LCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTA3LCAyMjQsIDE5NywgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDE5NSwgMjQsIDEsIDIxOCwgMTk4LCAyMDgsIDE5OSwgMjI0LCAxOTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjIwLCAyMTUsIDIyNCwgMTk3LCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjU0LCAyMTksIDE2OSwgMjIyLCAKLSAgICAzMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE2LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU2LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIwNywgMjA0LCAyMjUsIDE1NywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDE5NywgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjUsIDE1MywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDExMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDE4NiwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMTMsIDExNCwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyOSwgCi0gICAgMTYzLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTAsIDE3OSwgMjQsIDEsIDIxOCwgMTk4LCAKLSAgICAyMjIsIDEzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDEwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMTc2LCAyMjgsIDE3NSwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjI0LCAyMDUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNjAsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjE5LCA2MiwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDEyNSwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDU1LCAyMjIsIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDE5NiwgMjI0LCAyMDgsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMTA2LCAyMDIsIDE4OCwgMjIzLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyMSwgMTAyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgOTEsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI0LCAxOTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCAzMSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMzAsIDIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY5LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjMsIDI2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDIxOSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIAotICAgIDE1NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDc0LCAyNCwgMSwgMjE4LCAxOTgsIDIxNywgMTcyLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIwNywgMjAxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM1LCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjUxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIwOSwgMTE3LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUxLCAyNCwgMSwgMjE4LCAxOTgsIDIyOSwgCi0gICAgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMjIsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxODgsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI0LCAzMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDE5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDI5LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIzOSwgMjQ2LCAyNCwgMSwgMjE4LCAxOTgsIDIxNSwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMjMzLCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTA3LCAyMTgsIDE1NywgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMTIsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDIzMCwgCi0gICAgMjIxLCAxMTEsIDIwMiwgMTk2LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjM3LCAyMjQsIDUxLCAyNCwgMSwgMjE4LCAxOTgsIAotICAgIDIxOSwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMiwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIDIzMSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjIsIDE3MywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDQ0LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyNSwgNDksIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjA5LCAKLSAgICAxMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDQsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIxLCAxMTUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTgsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyNDgsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjI5LCAyNDEsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAKLSAgICA1MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzOSwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIzMCwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjMsIDc1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgNDgsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMTMsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyNSwgMTU1LCAyNCwgMSwgMjE4LCAxOTcsIDIxMiwgMTUyLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMywgMTE4LCAyMDcsIDIwMywgMjQsIDEsIDIxOCwgMTk3LCAyMjcsIDMxLCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyNSwgNTUsIDIyNSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgOTIsIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAxOCwgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDUwLCAyNCwgMSwgMjE4LCAxOTcsIDIzMCwgNywgMjQsIDEsIDIxOCwgMTk3LCAyMTksIAotICAgIDE5LCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgOTYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOCwgMjksIDIyMSwgCi0gICAgMTExLCAyMjEsIDYsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCA5NCwgMjEzLCAxNywgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIAotICAgIDI0OSwgMjIyLCA0NywgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk4LCAyNCwgMSwgMjE4LCAxOTcsIDIxOCwgMTA1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjEsIDEwOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTMsIDIyLCAyMjIsIDQyLCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIxMywgMTgsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAxOTgsIDIwOSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyNSwgMzcsIDIyNSwgNTEsIDI0LCAxLCAyMTgsIDE5NywgMjIwLCAyNDksIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI5LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDE1NSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjgsIDEwNywgMjQsIDEsIDIxOCwgMTk3LCAyMTksIDY1LCAyNCwgMSwgMjE4LCAxOTcsIDIwNSwgMjM3LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTM3LCAyMjMsIDE4NCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE3MiwgMjI1LCAzMywgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDIxNSwgMjQsIDEsIDIxOCwgMTk3LCAyMTUsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMCwgMTQsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMTAsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNTYsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjIyLCAxNTcsIDIyOCwgNywgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwMCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTAsIDIzMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDQxLCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMzYsIDI0LCAxLCAyMTgsIAotICAgIDE5NywgMjIxLCA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxNywgMTc2LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjA5LCAyMjIsIAotICAgIDE3NCwgMjQsIDEsIDIxOCwgMTk3LCAyNDAsIDMxLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMjgsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjQwLCA1MywgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDE2NywgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDE3NywgMjIyLCAzNiwgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDE3NywgMjIyLCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAyMjcsIDE3NSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjIsIDE4MCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAxOTIsIDI0LCAKLSAgICAxLCAyMTgsIDE5NywgMjI5LCA3NywgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAxMzYsIAotICAgIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjAsIDIxNCwgMjQsIDEsIDE2OCwgMjAyLCAxOTYsIDI0LCAxLCAxNjgsIDIwNCwgCi0gICAgOTUsIDI0LCAxLCAxNjgsIDIyMiwgMTczLCAyNCwgMSwgMTY4LCAyMjMsIDE0LCAyNCwgMSwgMTY4LCAyMjIsIDE0MywgMjQsIAotICAgIDEsIDE2OCwgMjM4LCAxMDgsIDI0LCAxLCAxNjgsIDIyNSwgNDUsIDI0LCAxLCAxNjgsIDIzOCwgMjA1LCAyNCwgMSwgMTY4LCAKLSAgICAyMjAsIDIzOSwgMjI0LCA5MSwgMjI0LCAyMTIsIDI0LCAxLCAxNjgsIDIyMSwgODksIDIyNSwgMzYsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgNDIsIDI0LCAxLCAxNjgsIDIxOCwgMTExLCAyNCwgMSwgMTY4LCAyMjIsIDI1NSwgMjQsIDEsIDE2OCwgMjI1LCA1MywgCi0gICAgMjQ3LCA4OCwgMjQsIDEsIDE2OCwgMjI5LCAxNTcsIDI0LCAxLCAxNjgsIDIzOCwgMTA5LCAyNCwgMSwgMTY4LCAyMjksIAotICAgIDE2NCwgMjQsIDEsIDE2OCwgMjAyLCAyMTQsIDIyMywgMjE1LCAyNCwgMSwgMTY4LCAyMjAsIDIwOCwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCAzMCwgMjQsIDEsIDE2OCwgMjIxLCAxMTksIDI0LCAxLCAxNjgsIDIyNSwgMzYsIDI0LCAxLCAxNjgsIDIwMywgMTksIAotICAgIDI0LCAxLCAxNjgsIDIyOCwgMjQxLCAyNCwgMSwgMTY4LCAyMzAsIDQxLCAyNCwgMSwgMTY4LCAyMTMsIDExMywgMjQsIDEsIAotICAgIDE2OCwgMjIzLCA4LCAyNCwgMSwgMTY4LCAyMTAsIDEyLCAyNCwgMSwgMTY4LCAyMjIsIDE2LCAyNCwgMSwgMTY4LCAyMDgsIAotICAgIDE5OSwgMjAyLCAxOTksIDI0LCAxLCAxNjgsIDIxMSwgNSwgMjQsIDEsIDE2OCwgMjIyLCAxNjMsIDIyMSwgNiwgMjQsIDEsIAotICAgIDE2OCwgMjA1LCAyMzYsIDI0LCAxLCAxNjgsIDIyMywgNzgsIDI0LCAxLCAxNjgsIDIyNSwgMTc3LCAyMjksIDE2NiwgMjQsIAotICAgIDEsIDE2OCwgMjIxLCAxMDIsIDI0LCAxLCAxNjgsIDIyMiwgMTU4LCAyNCwgMSwgMTY4LCAyMjgsIDExLCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDM4LCAyNCwgMSwgMTY4LCAyMjQsIDE4OSwgMjQsIDEsIDE2OCwgMjIxLCA5NiwgMjQsIDEsIDE2OCwgMjA5LCAxMTYsIAotICAgIDI0LCAxLCAxNjgsIDIyMiwgMTYwLCAyNCwgMSwgMTY4LCAyMzksIDEwNiwgMjQsIDEsIDE2OCwgMjIzLCAxMywgMjQsIDEsIAotICAgIDE2OCwgMjIxLCAxMjEsIDI0LCAxLCAxNjgsIDIyMSwgMTE3LCAyNCwgMSwgMTY4LCAyNDcsIDE2OSwgMjQsIDEsIDE2OCwgCi0gICAgMjA1LCAyMzgsIDI0LCAxLCAxNjgsIDIyNSwgNDMsIDI0LCAxLCAxNjgsIDIxNSwgMTQ1LCAyNCwgMSwgMTY4LCAyMjIsIDQ2LCAKLSAgICAyNCwgMSwgMTY4LCAyMjgsIDI4LCAyNCwgMSwgMTY4LCAyMDgsIDE5NiwgMjQsIDEsIDE2OCwgMjIxLCAxMDMsIDIyMiwgCi0gICAgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDM4LCAyNCwgMSwgMTY4LCAyMjksIDE3MCwgMjQsIDEsIDE2OCwgMjIyLCAxNjUsIDI0LCAKLSAgICAxLCAxNjgsIDIyNSwgMTUwLCAyNCwgMSwgMTY4LCAyMjUsIDMxLCAyNCwgMSwgMTY4LCAyMjYsIDIzOSwgMjQsIDEsIDE2OCwgCi0gICAgMjI4LCAxNzUsIDI0LCAxLCAxNjgsIDIyMiwgNDQsIDI0LCAxLCAxNjgsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMDMsIAotICAgIDIwNSwgMjQsIDEsIDE2OCwgMjIyLCAxNjEsIDI0LCAxLCAxNjgsIDIyMSwgMTA2LCAyNCwgMSwgMTY4LCAyMjEsIDk4LCAyNCwgCi0gICAgMSwgMTY4LCAyMjgsIDE5MCwgMjIyLCAyLCAyNCwgMSwgMTY4LCAyMjEsIDEwNCwgMjQsIDEsIDE2OCwgMjIzLCAyMSwgMjQsIAotICAgIDEsIDE2OCwgMjI1LCAxNzcsIDIyMSwgMTA5LCAyNCwgMSwgMTY4LCAyMDMsIDExMCwgMjQsIDEsIDE2OCwgMjIzLCAyMCwgCi0gICAgMjQsIDEsIDE2OCwgMjEyLCAxOTQsIDI0LCAxLCAxNjgsIDIxMywgMTE2LCAyNCwgMSwgMTY4LCAyMjUsIDM5LCAyNCwgMSwgCi0gICAgMTY4LCAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjI1LCA0OSwgMjQsIDEsIDE2OCwgMjI5LCAxNTgsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgNDAsIDI0LCAxLCAxNjgsIDIyOSwgMTYyLCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAyMTgsIDE2MiwgMjQsIDEsIDE2OCwgCi0gICAgMjAyLCAxNzksIDI0LCAxLCAxNjgsIDIyMiwgMzQsIDI0LCAxLCAxNjgsIDIyNCwgMTQ0LCAyNCwgMSwgMTY4LCAyMjMsIAotICAgIDI0NCwgMjQsIDEsIDE2OCwgMjEyLCAyNTAsIDI0LCAxLCAxNjgsIDIyOSwgMTgxLCAyMjcsIDI0NiwgMjQsIDEsIDE2OCwgCi0gICAgMjI5LCAxODEsIDI0MCwgNjYsIDI0LCAxLCAxNjgsIDIyMiwgMTk1LCAyNCwgMSwgMTY4LCAyMjMsIDc1LCAyNCwgMSwgMTY4LCAKLSAgICAyMjcsIDk2LCAyNCwgMSwgMTY4LCAyMTgsIDEyMywgMjQsIDEsIDE2OCwgMjE5LCA5LCAyNCwgMSwgMTY4LCAyMDksIDEzMiwgCi0gICAgMjQsIDEsIDEzNCwgMjI1LCAyOSwgMjQsIDEsIDEzNCwgMjA0LCA5MywgMjQsIDEsIDEzNCwgMjIyLCAzMiwgMjQsIDEsIAotICAgIDEzNCwgMjI0LCAxOTcsIDI0LCAxLCAxMzQsIDIyMiwgMzAsIDI0LCAxLCAxMzQsIDIyNywgMTQxLCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDM1LCAyNCwgMSwgMTM0LCAyMjEsIDExNiwgMjQsIDEsIDEzNCwgMjIyLCAxNzksIDI0LCAxLCAxMzQsIDIyMSwgNiwgCi0gICAgMjQsIDEsIDEzNCwgMjAzLCAyMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTMzLCAyNCwgMSwgMTM0LCAyMTMsIDQxLCAyNCwgMSwgCi0gICAgMTM0LCAyMjIsIDE0NCwgMjQsIDEsIDEzNCwgMjI5LCAxNjUsIDI0LCAxLCAxMzQsIDIwOSwgMTE4LCAyNCwgMSwgMTM0LCAKLSAgICAyMTMsIDIwLCAyNCwgMSwgMTM0LCAyMjIsIDQzLCAyNCwgMSwgMTM0LCAyMTAsIDIzMCwgMjQsIDEsIDEzNCwgMjI5LCAxNzAsIAotICAgIDI0LCAxLCAxMzQsIDIwMywgOTgsIDI0LCAxLCAxMzQsIDIyOCwgMTkxLCAyNCwgMSwgMTM0LCAyMTQsIDIzMywgMjQsIDEsIAotICAgIDEzNCwgMjI0LCAyMDIsIDI0LCAxLCAxMzQsIDIyMywgMTIsIDI0LCAxLCAxMzQsIDIyNSwgMTI1LCAyNCwgMSwgMTM0LCAKLSAgICAyMjQsIDIwOCwgMjQsIDEsIDEzNCwgMjEzLCAxMTUsIDI0LCAxLCAxMzQsIDIwMywgNDIsIDI0LCAxLCAxMzQsIDIyMiwgMzcsIAotICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYxLCAyMjUsIDMyLCAyNCwgMSwgMTM0LCAyMjIsIDE0MCwgMjQsIDEsIDEzNCwgMjA3LCAKLSAgICAyMDMsIDI0LCAxLCAxMzQsIDIzOCwgMTE4LCAyNCwgMSwgMTM0LCAyMjIsIDEzMCwgMjQsIDEsIDEzNCwgMjQwLCAzMiwgMjQsIAotICAgIDEsIDEzNCwgMjIzLCAxNiwgMjQsIDEsIDEzNCwgMjI0LCAxODEsIDI0LCAxLCAxMzQsIDIyNywgMTY5LCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDI1NCwgMjQsIDEsIDEzNCwgMjI0LCA1MCwgMjQsIDEsIDEzNCwgMjI0LCAxODUsIDI0LCAxLCAxMzQsIDIxNywgCi0gICAgMTU2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MywgMjQsIDEsIDEzNCwgMjI0LCAxOTksIDI0LCAxLCAxMzQsIDIyNiwgMjIyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjEsIDEwOCwgMjQsIDEsIDEzNCwgMjI1LCA1MiwgMjQsIDEsIDEzNCwgMjI4LCAxNjUsIDI0LCAxLCAKLSAgICAxMzQsIDIyMCwgMjUxLCAyNCwgMSwgMTM0LCAyMDksIDEyMSwgMjQsIDEsIDEzNCwgMjExLCAyNDQsIDI0LCAxLCAxMzQsIAotICAgIDIwMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjksIDE2MiwgMjQsIDEsIDEzNCwgMjE2LCAyMDEsIDI0LCAxLCAxMzQsIDIwOSwgCi0gICAgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE0MSwgMjQsIDEsIDEzNCwgMjI0LCAyMDQsIDI0LCAxLCAxMzQsIDIyMSwgMTA3LCAKLSAgICAyNCwgMSwgMTM0LCAyMjksIDE2MCwgMjQsIDEsIDEzNCwgMjE4LCAxMTcsIDI0LCAxLCAxMzQsIDIxOCwgMjEzLCAyNCwgMSwgCi0gICAgMTM0LCAyMjAsIDIyNSwgMjQsIDEsIDEzNCwgMjI3LCAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTgwLCAyNCwgMSwgMTM0LCAKLSAgICAyMjQsIDIwMSwgMjQsIDEsIDEzNCwgMjIyLCAxNTMsIDI0LCAxLCAxMzQsIDIwMiwgMTkzLCAyNCwgMSwgMTM0LCAyMTksIAotICAgIDk2LCAyNCwgMSwgMTM0LCAyMDIsIDE5MiwgMjQsIDEsIDEzNCwgMjIzLCAyMSwgMjQsIDEsIDEzNCwgMjIxLCA5NywgMjQsIAotICAgIDEsIDEzNCwgMjExLCA3LCAyNCwgMSwgMTM0LCAyMjgsIDE5NSwgMjQsIDEsIDEzNCwgMjIyLCAxNjksIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMTM4LCAyNCwgMSwgMTM0LCAyMDcsIDE4NSwgMjQsIDEsIDEzNCwgMjI0LCAyMTIsIDI0LCAxLCAxMzQsIDIyOCwgCi0gICAgMTg1LCAyNCwgMSwgMTM0LCAyMjEsIDEwNSwgMjQsIDEsIDEzNCwgMjA5LCAxMTksIDI0LCAxLCAxMzQsIDIyNSwgMTUyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjIsIDE3OCwgMjQsIDEsIDEzNCwgMjI3LCAxNjgsIDI0LCAxLCAxMzQsIDIyMiwgMTU5LCAyNCwgMSwgCi0gICAgMTM0LCAyMjEsIDExMCwgMjQsIDEsIDEzNCwgMjIyLCAxNiwgMjQsIDEsIDEzNCwgMjM4LCAxMDIsIDI0LCAxLCAxMzQsIAotICAgIDIyOCwgMjA5LCAyNCwgMSwgMTM0LCAyMTYsIDEwOCwgMjIwLCA0NSwgMjQsIDEsIDEzNCwgMjEwLCAxLCAyNCwgMSwgMTM0LCAKLSAgICAyMDgsIDE0MSwgMjQsIDEsIDEzNCwgMjIwLCAyNDgsIDI0LCAxLCAxMzQsIDIxNiwgMywgMjQsIDEsIDEzNCwgMjI3LCAyMjUsIAotICAgIDI0LCAxLCAxMzQsIDIyNSwgNywgMjQsIDEsIDEzNCwgMjI2LCAxODUsIDI0LCAxLCAxMzQsIDIxMCwgMTc5LCAyNCwgMSwgCi0gICAgMTM0LCAyMjMsIDI0NiwgMjQsIDEsIDEzNCwgMjEzLCA2LCAyNCwgMSwgMTM0LCAyMTMsIDE2LCAyNCwgMSwgMTM0LCAyMjgsIAotICAgIDEzNywgMjQsIDEsIDEzNCwgMjIxLCA4NCwgMjQsIDEsIDEzNCwgMjEyLCAxOTksIDI0LCAxLCAxMzQsIDIyMSwgOTksIDI0LCAKLSAgICAxLCAxMzQsIDIxOSwgMjMsIDI0LCAxLCAxMzQsIDIyMiwgMTAwLCAyNCwgMSwgMTM0LCAyMTIsIDIyOSwgMjQsIDEsIDEzNCwgCi0gICAgMjE3LCAxNzEsIDI0LCAxLCAxMzQsIDIyMywgMTg0LCAyNCwgMSwgMTM0LCAyMjcsIDEwLCAyNCwgMSwgMTM0LCAyMTYsIAotICAgIDEwOCwgMjIzLCAyMzksIDI0LCAxLCAxMzQsIDIwOSwgMiwgMjQsIDEsIDEzNCwgMjIxLCA4NiwgMjQsIDEsIDEzNCwgMjI1LCAKLSAgICA1MywgMjEzLCAxMTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMxLCAyNCwgMSwgMTM0LCAyNDAsIDEwNywgMjQsIDEsIDkzLCAyMjMsIAotICAgIDIwLCAyNCwgMSwgOTMsIDIwOCwgMTQ3LCAyNCwgMSwgOTMsIDIyNSwgNDIsIDI0LCAxLCA5MywgMjI4LCAxMSwgMjQsIDEsIAotICAgIDkzLCAyMDUsIDE3NywgMjQsIDEsIDkzLCAyMjcsIDE2LCAyNCwgMSwgOTMsIDIxOSwgMTY4LCAyNCwgMSwgOTMsIDIxMSwgCi0gICAgMjU1LCAyNCwgMSwgOTMsIDIxNiwgMTc2LCAyNCwgMSwgOTMsIDIyMSwgMTEyLCAyNCwgMSwgOTMsIDIyMiwgMjQ3LCAyNCwgCi0gICAgMSwgOTMsIDIxNywgMTg4LCAyNCwgMSwgOTMsIDIwOSwgMjMyLCAyNCwgMSwgOTMsIDIyMiwgMTQ2LCAyNCwgMSwgOTMsIAotICAgIDIyOCwgMjM3LCAyNCwgMSwgOTMsIDIwMywgMjA4LCAyNCwgMSwgOTMsIDIxNCwgMTY1LCAyNCwgMSwgOTMsIDIyMiwgMTcwLCAKLSAgICAyNCwgMSwgOTMsIDIxOSwgMTY1LCAyNCwgMSwgOTMsIDIwOCwgMTQ4LCAyNCwgMSwgOTMsIDIyOCwgMTg5LCAyNCwgMSwgOTMsIAotICAgIDIyNywgMzAsIDI0LCAxLCA5MywgMjIxLCAxMTUsIDI0LCAxLCA5MywgMjIyLCAxMjIsIDI0LCAxLCA5MywgMjI1LCAxNTgsIAotICAgIDI0LCAxLCA5MywgMjIyLCAxMzksIDI0LCAxLCA5MywgMjIyLCAxMjEsIDI0LCAxLCA5MywgMjIxLCAxMTQsIDI0LCAxLCA5MywgCi0gICAgMjE2LCAwLCAyNCwgMSwgOTMsIDIyMiwgMzQsIDI0LCAxLCA5MywgMjE5LCAyMSwgMjQsIDEsIDkzLCAyMTUsIDMzLCAyNCwgCi0gICAgMSwgOTMsIDIyMiwgMTU0LCAyNCwgMSwgOTMsIDIyNCwgMTkxLCAyNCwgMSwgOTMsIDIzOCwgOTYsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxNDIsIDI0LCAxLCA5MywgMjIyLCA0NSwgMjQsIDEsIDkzLCAyMjUsIDEwNiwgMjQsIDEsIDkzLCAyMjcsIDEyLCAyNCwgMSwgCi0gICAgOTMsIDIyMiwgMTc1LCAyNCwgMSwgOTMsIDIyMywgNCwgMjQsIDEsIDkzLCAyMTAsIDAsIDIyMSwgOTcsIDI0LCAxLCA5MywgCi0gICAgMjEzLCAxMTcsIDI0LCAxLCA5MywgMjE3LCAxODEsIDI0LCAxLCA5MywgMjIzLCAyNCwgMjEyLCA2LCAyNCwgMSwgOTMsIAotICAgIDIyMiwgMTYyLCAyMjEsIDYsIDI0LCAxLCA5MywgMjAzLCA3LCAyNCwgMSwgOTMsIDIzOCwgOTcsIDI0LCAxLCA5MywgMjA3LCAKLSAgICAyMDIsIDI0LCAxLCA5MywgMjAzLCAyMiwgMjQsIDEsIDkzLCAyMTgsIDY5LCAyNCwgMSwgOTMsIDIwNywgMTkwLCAyNCwgMSwgCi0gICAgOTMsIDIyOSwgMTY4LCAyNCwgMSwgOTMsIDIxMSwgNiwgMjQsIDEsIDkzLCAyMDksIDEyMCwgMjQsIDEsIDkzLCAyMDUsIAotICAgIDIzOSwgMjQsIDEsIDkzLCAyMDQsIDQzLCAyNCwgMSwgOTMsIDIyOCwgMTEwLCAyNCwgMSwgOTMsIDIxNywgMTkxLCAyNCwgMSwgCi0gICAgOTMsIDIxMCwgMTMsIDI0LCAxLCA5MywgMjM4LCAxMTcsIDI0LCAxLCA5MywgMjIyLCAxODUsIDI0LCAxLCA5MywgMjEzLCAKLSAgICAxOSwgMjQsIDEsIDkzLCAyMjQsIDE4NiwgMjQsIDEsIDkzLCAyMjUsIDQ2LCAyNCwgMSwgOTMsIDIyMCwgMjEyLCAyNCwgMSwgCi0gICAgOTMsIDIyMSwgMjU0LCAyNCwgMSwgOTMsIDIzOCwgMjAxLCAyNCwgMSwgOTMsIDIwNywgMTkxLCAyNCwgMSwgOTMsIDIyOCwgCi0gICAgMTk5LCAyNCwgMSwgOTMsIDIwMywgNzQsIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0NiwgMzIsIDI0LCAxLCA5MywgMjAyLCAKLSAgICAyNTMsIDI0LCAxLCA5MywgMjI0LCAyMDMsIDI0LCAxLCA5MywgMjIzLCA5LCAyNCwgMSwgOTMsIDIxOCwgMTU4LCAyNCwgMSwgCi0gICAgOTMsIDIwMiwgMTk4LCAyNCwgMSwgOTMsIDIyNywgMTcwLCAyNCwgMSwgOTMsIDIzOSwgMTA2LCAyNCwgMSwgOTMsIDIzOCwgCi0gICAgMjAwLCAyNCwgMSwgOTMsIDIyMiwgMTMyLCAyNCwgMSwgOTMsIDIyOSwgMTcwLCAyNCwgMSwgOTMsIDIyNSwgMTYxLCAyNCwgCi0gICAgMSwgOTMsIDIyMiwgMTQ1LCAyNCwgMSwgOTMsIDIzOCwgMTAzLCAyNCwgMSwgOTMsIDI0MCwgMTA4LCAyNCwgMSwgOTMsIAotICAgIDIyMSwgODcsIDI0LCAxLCA5MywgMjE4LCAyMTQsIDI0LCAxLCA5MywgMjAzLCAyMCwgMjQsIDEsIDkzLCAyMjIsIDE3MSwgCi0gICAgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ4LCAxMDMsIDI0LCAxLCA5MywgMjIwLCAxOTIsIDI0LCAxLCA5MywgMjE4LCA0MywgCi0gICAgMjQsIDEsIDkzLCAyMjQsIDE0NCwgMjQsIDEsIDkzLCAyMzksIDEwNCwgMjQsIDEsIDkzLCAyMjMsIDEwMCwgMjQsIDEsIDkzLCAKLSAgICAyMjMsIDI0NCwgMjQsIDEsIDkzLCAyMzgsIDEwMiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgNzUsIDI0LCAxLCA5MywgMjIzLCAKLSAgICAxODUsIDI0LCAxLCA5MywgMjE3LCAxODcsIDI0LCAxLCA5MywgMjIyLCAxMzQsIDI0LCAxLCA5MywgMjI4LCAxNzUsIDI0LCAKLSAgICAxLCA5MywgMjE4LCAxNTUsIDI0LCAxLCA5MywgMjIxLCAxMDAsIDI0LCAxLCA5MywgMjAzLCAyMSwgMjQsIDEsIDkzLCAyMjIsIAotICAgIDE1NSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAyNTIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDI0NywgNzEsIDI0LCAxLCAKLSAgICA5MywgMjM5LCAxNzksIDI0LCAxLCA5MywgMjIyLCAzOSwgMjQsIDEsIDkzLCA2MywgMjQsIDEsIDkzLCAyMDgsIDE0MSwgMjQsIAotICAgIDEsIDkzLCA3OCwgMjQsIDEsIDkzLCA3NSwgMjQsIDEsIDkzLCAyMjgsIDksIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgCi0gICAgNzcsIDI0LCAxLCA5MywgMjEwLCAxOCwgMjQsIDEsIDkzLCAyMDksIDIxOSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMjMsIAotICAgIDE3MiwgMjM2LCAzOCwgMjQsIDEsIDkzLCAyMTIsIDI1MCwgMjQsIDEsIDkzLCAyMDMsIDE3LCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTE1LCAyNCwgMSwgOTMsIDIwMiwgMjAzLCAyNCwgMSwgOTMsIDIwMiwgMjMwLCAyMTAsIDE1OSwgMjQsIDEsIDkzLCAyMDIsIAotICAgIDIzMCwgMjQ1LCAxNTEsIDI0LCAxLCA5MywgMjAyLCAxODcsIDI0LCAxLCA5MywgMjAyLCAxOTUsIDI0LCAxLCA5MywgMjI5LCAKLSAgICAxNTYsIDI0LCAxLCA5MywgMjE4LCAyMTIsIDI0LCAxLCA5MywgMjIyLCA0MCwgMjQxLCAzOSwgMjQsIDEsIDkzLCAyMTcsIAotICAgIDE4MywgMjQsIDEsIDkzLCAyMDMsIDIxNCwgMjQsIDEsIDkzLCAyNDAsIDUzLCAyNCwgMSwgOTMsIDIwNiwgNTAsIDI0LCAxLCAKLSAgICA5MywgMjI2LCAyMzksIDI0LCAxLCA5MywgMjI0LCAxNTUsIDI0LCAxLCA5MywgMjE2LCA3NSwgMjQsIDEsIDkzLCAyMTYsIAotICAgIDIwMiwgMjQsIDEsIDkzLCAyMjIsIDExNCwgMjQsIDEsIDkzLCAyMjIsIDIwMywgMjQsIDEsIDkzLCAyMTIsIDI0MiwgMjQsIAotICAgIDEsIDkzLCAyMTIsIDIyOSwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjE2LCAxMTEsIDI0LCAxLCA5MywgMjAxLCAyMDEsIDI0LCAKLSAgICAxLCA5MywgMjE4LCAxNjcsIDI0LCAxLCA5MywgMjI3LCAxMCwgMjQsIDEsIDkzLCAyMjksIDI2LCAyNCwgMSwgOTMsIDIyNCwgCi0gICAgMjQwLCAyNCwgMSwgOTMsIDE5MiwgMjQsIDEsIDkzLCAyMjUsIDEwMywgMjQsIDEsIDkzLCAyMDksIDEyMiwgMjQsIDEsIDkzLCAKLSAgICAyMjksIDEwMCwgMjQsIDEsIDkzLCAyMjQsIDU0LCAyNCwgMSwgOTMsIDIwOSwgMTUyLCAyNCwgMSwgOTMsIDI0MCwgNzcsIAotICAgIDI0LCAxLCA5MywgMjM4LCA5MCwgMjQsIDEsIDIxOCwgMTk2LCAxNzMsIDI0LCAxLCAyMTgsIDE5NiwgNjgsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI4LCAyMDksIDI0LCAxLCAyMTgsIDE5NiwgMjQxLCAxNjEsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMzUsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxLCAyNCwgMSwgMjE4LCAxOTYsIDIyMCwgMjQ4LCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgCi0gICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDUwLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIyNSwgNywgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDE4LCAyNCwgMSwgMjE4LCAxOTYsIDIyMywgMjMsIDI0LCAxLCAyMTgsIAotICAgIDE5NiwgMjIyLCA0NiwgMjQsIDEsIDIxOCwgMTk2LCAyMjYsIDE4NSwgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDE3OSwgMjQsIAotICAgIDEsIDIxOCwgMTk2LCAyMTMsIDYsIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAxNjIsIDI0LCAxLCAyMTgsIDE5NiwgMjEzLCAKLSAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAxMzcsIDI0LCAxLCAyMTgsIDE5NiwgMjI5LCAxNzAsIDI0LCAxLCAyMTgsIAotICAgIDE5NiwgMjIxLCA1NSwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIDg0LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjAyLCAyMjksIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAxOTksIDI0LCAxLCAyMTgsIDE5NiwgMTk4LCAyNCwgCi0gICAgMSwgMjE4LCAxOTYsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTYsIDIxOCwgMjEyLCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgCi0gICAgOTksIDI0LCAxLCAyMTgsIDE5NiwgMjAzLCAyMTQsIDI0LCAxLCAyMTgsIDE5NiwgMjE5LCAyMywgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMTUsIDE0NSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEwMCwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDc1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyOSwgMTgwLCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTMxLCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTgyLCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMjQyLCAyNCwgMSwgMjE4LCAxOTYsIDIxNywgMTg4LCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIzOSwgMTc5LCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTExLCAyNCwgMSwgMjE4LCAxOTYsIDIyNywgMTQ4LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyNywgMTAsIDI0LCAxLCAyMTgsIDE5NiwgMjI5LCAyNiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDQ0LCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTA3LCAyNCwgMSwgMjE4LCAxOTYsIDE5MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjQsIAotICAgIDgyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNTIsIDI0LCAxLCAyMTgsIDE5NiwgMjA5LCAxMzIsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjI4LCAyNDQsIDI0LCAxLCAyMTgsIDE5NiwgMjE0LCAyNTEsIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxNjIsIDIyMywgMjQ5LCAKLSAgICAxLCAyMTAsIDIyLCAyMjMsIDI0OSwgMSwgMjIyLCAxNTEsIDIyMywgMjQ5LCAxLCAyMDIsIDI0NywgMjIzLCAyNDksIDEsIAotICAgIDIyNCwgMTEyLCAyMjMsIDI0OSwgMSwgMjQ5LCAzMiwgMjIzLCAyNDksIDEsIDI0NCwgMjEyLCAyMjMsIDI0OSwgMSwgNjMsIAotICAgIDIyMywgMjQ5LCAxLCAyMTgsIDE5MiwgMjIzLCAyNDksIDEsIDIyOSwgMTM5LCAyMjMsIDI0OSwgMSwgMjM3LCA5NSwgMjIzLCAKLSAgICAyNDksIDEsIDI0NCwgMTg4LCAyMjMsIDI0OSwgMSwgMjQ2LCA5OCwgMjIzLCAyNDksIDEsIDIyOSwgMjAwLCAyMjMsIDI0OSwgCi0gICAgMSwgMjIwLCA0NiwgMjIzLCAyNDksIDEsIDIyNSwgMTU4LCAyMjMsIDI0OSwgMSwgMjIyLCA2OCwgMjIzLCAyNDksIDEsIAotICAgIDE4NSwgMjIzLCAyNDksIDEsIDIyMCwgMTgsIDIyMywgMjQ5LCAxLCA3OCwgMjIzLCAyNDksIDEsIDIxNSwgMjI3LCAyMjMsIAotICAgIDI0OSwgMSwgMjEzLCAxMSwgMjIzLCAyNDksIDEsIDIwOSwgOTEsIDIyMywgMjQ5LCAxLCAyNDEsIDE4OSwgMjIzLCAyNDksIAotICAgIDEsIDIwNCwgMTExLCAyMjMsIDI0OSwgMSwgNzQsIDIyMywgMjQ5LCAxLCAyMjksIDI2LCAyMjMsIDI0OSwgMSwgMjI4LCAxNywgCi0gICAgMjIzLCAyNDksIDEsIDIyOCwgMTEzLCAyMjMsIDI0OSwgMSwgMjM3LCAxNDcsIDIyMywgMjQ5LCAxLCAyMTYsIDU3LCAyMjMsIAotICAgIDI0OSwgMSwgMjA5LCAxNjUsIDIyMywgMjQ5LCAxNywgMjAyLCA4NCwgMjIzLCAyNDksIDE3LCAxMDUsIDIyMywgMjQ5LCAxNywgCi0gICAgMTA4LCAyMjMsIDI0OSwgMTcsIDE0NywgMjIzLCAyNDksIDE3LCAxNDksIDIyMywgMjQ5LCAxNywgMTcwLCAyMjMsIDI0OSwgCi0gICAgMTcsIDE5NSwgMjIzLCAyNDksIDE3LCAyMTMsIDExMSwgMjIzLCAyNDksIDE3LCAxOTksIDIyMywgMjQ5LCAxNywgMjIyLCAKLSAgICA2MywgMjIzLCAyNDksIDI0NCwgMTY2LCAyMjMsIDI0OSwgNTIsIDI0NCwgMTY2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMjQxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDE3MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIxNCwgMTc3LCAyNDgsIAotICAgIDIxMiwgMjA2LCA4MywgMSwgMjQwLCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjUsIDQ3LCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjAzLCA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAyNDksIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDMsIAotICAgIDIzOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyOCwgMjQzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjMwLCAxMDEsIDI0OCwgCi0gICAgMjEyLCAyMDYsIDgzLCAxLCAyMzUsIDI1MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNCwgMTExLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjAyLCAxNywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMTk0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMjQzLCAxMTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDYsIDIzOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNiwgMTcxLCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTM1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ5LCAzMiwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwNCwgMTYzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjAzLCA0NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDE4NSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjMsIDI0OCwgMjEyLCAKLSAgICAyMDYsIDgzLCAxLCA3OCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyMCwgMTgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2OCwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MSwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNzQsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCA3NSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAxMzgsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIAotICAgIDEyNCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjI0LCAxNTAsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMzksIDIyNiwgMjUzLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMzYsIDI0MiwgMjA4LCAxNjEsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgMTE5LCAxMTcsIDIyLCAyMjksIDE5NywgMTE5LCAxMTcsIAotICAgIDIyLCAyMjksIDE5MywgMTE5LCAxMTcsIDIyLCAyMjksIDk3LCAxMTksIDExNywgMjIsIDIyOSwgNjMsIDExOSwgMTE3LCAyMiwgCi0gICAgMjI5LCAyMTgsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTUsIDExOSwgMTE3LCAyMiwgMjI4LCAyMDAsIDExOSwgMTE3LCAyMiwgCi0gICAgMjI4LCAxNzIsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTksIDExOSwgMTE3LCAyMiwgMjI5LCAxNTQsIDExOSwgMTE3LCAyMiwgCi0gICAgMjMwLCAxNywgMTE5LCAxMTcsIDIyLCAyMzAsIDE0LCAxMTksIDExNywgMjIsIDIyOSwgNSwgMTE5LCAxMTcsIDIyLCAyMjksIAotICAgIDIsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTIsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTAsIDExOSwgMTE3LCAyMiwgMjI4LCAKLSAgICAyMDIsIDExOSwgMTE3LCAyMiwgMjI4LCAyMDEsIDExOSwgMTE3LCAyMiwgMjI5LCAyMywgMTE5LCAxMTcsIDIyLCAyMjgsIAotICAgIDI0NywgMTE5LCAxMTcsIDIyLCAyMjksIDk5LCAxMTksIDExNywgMjIsIDIyOSwgOTgsIDExOSwgMTE3LCAyMiwgMjMwLCAzMiwgCi0gICAgMTE5LCAxMTcsIDIyLCAyMjksIDIxNCwgMTE5LCAxMTcsIDIyLCAyMjgsIDE2MywgMTE5LCAxMTcsIDIyLCAyMjgsIDE1NCwgCi0gICAgMTE5LCAxMTcsIDIyLCAyMzAsIDQwLCAxMTksIDExNywgMjIsIDIzMCwgMzMsIDExOSwgMTE3LCAxMDksIDIwNiwgNjEsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMSwgOTAsIDExOSwgMTE3LCAxMDksIDIyNywgMjUxLCAxMTksIDExNywgMTA5LCAyMzcsIDc2LCAKLSAgICAxMTksIDExNywgMTA5LCAyMjEsIDIzMCwgMTE5LCAxMTcsIDEwOSwgMjE2LCAxNjcsIDExOSwgMTE3LCAxMDksIDIyMiwgMSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjE3LCAxMDAsIDExOSwgMTE3LCAxMDksIDIwMywgNjIsIDExOSwgMTE3LCAxMDksIDIzNiwgMjIxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMjUsIDY3LCAxMTksIDExNywgMTA5LCAyNDYsIDE3NCwgMTE5LCAxMTcsIDEwOSwgMjIzLCAyOCwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjM2LCAxNTcsIDExOSwgMTE3LCAxMDksIDIxOCwgODUsIDExOSwgMTE3LCAxMDksIDIyMSwgOTUsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMywgNjUsIDExOSwgMTE3LCAxMDksIDI1MCwgMzQsIDExOSwgMTE3LCAxMDksIDIwMywgMTc4LCAKLSAgICAxMTksIDExNywgMTA5LCAyNDcsIDE1LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMDcsIDE5OSwgMTE5LCAxMTcsIDEzMSwgCi0gICAgMjQ2LCA2NywgMjEyLCAxMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjI5LCAxNzIsIDExOSwgMTE3LCAxMzEsIDI0NiwgCi0gICAgNjcsIDIyOSwgMTMwLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMTEsIDQsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIAotICAgIDIzNiwgMTIzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMDksIDIwNiwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDksIAotICAgIDQ0LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOCwgOSwgMjQ2LCAyMjksIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyNDYsIAotICAgIDE2MywgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDksIDY5LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDI0MCwgNTAsIDExOSwgCi0gICAgMTE3LCAyLCAyMDMsIDEzNiwgMjIxLCA4NSwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyMTYsIDU5LCAxMTksIDExNywgMiwgCi0gICAgMjAzLCAxMzYsIDIwOCwgMTI0LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDI0MCwgODksIDExOSwgMTE3LCAyLCAyMDUsIAotICAgIDE3MywgMjE0LCAxNTksIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIxMSwgOCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjEsIAotICAgIDEzNCwgMTE5LCAxMTcsIDIsIDIzNSwgMTY3LCAyMDMsIDgxLCAxMTksIDExNywgMiwgMjAzLCAxNzcsIDExOSwgMTE3LCAyLCAKLSAgICAyNDYsIDY3LCAyMDcsIDI1MiwgMjE1LCAyMTYsIDExOSwgMTE3LCAxNywgMjAyLCA4NCwgMTE5LCAxMTcsIDE3LCAxMDUsIAotICAgIDExOSwgMTE3LCAxNywgMTA4LCAxMTksIDExNywgMTcsIDE0NywgMTE5LCAxMTcsIDE3LCAxNDksIDExOSwgMTE3LCAxNywgCi0gICAgMTcwLCAxMTksIDExNywgMTcsIDE5NSwgMTE5LCAxMTcsIDE3LCAyMTMsIDExMSwgMTE5LCAxMTcsIDE3LCAxOTksIDExOSwgCi0gICAgMTE3LCAxNywgMjIyLCA2MywgMTE5LCAxMTcsIDQyLCAyMDksIDE0NywgMTE5LCAxMTcsIDQyLCAyMzYsIDEwLCAxMTksIAotICAgIDExNywgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCAxMTksIDExNywgNDIsIDIyNCwgMTEzLCAxMTksIDExNywgNDIsIDIzNiwgCi0gICAgMTIsIDIyNCwgMTEzLCAxMTksIDExNywgNDIsIDIwOSwgMTUzLCAyNDgsIDY4LCAxMTksIDExNywgNDIsIDIwOCwgNzIsIAotICAgIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjI2LCAyMzQsIDExOSwgMTE3LCAyLCAyMDMsIDEzMywgMTE5LCAxMTcsIDIsIDIzNiwgCi0gICAgMjE2LCAxMTksIDExNywgMiwgMjA5LCA1OSwgMjM2LCAyMTYsIDExOSwgMTE3LCAyLCAyMDEsIDI0NywgMjA5LCAxMDIsIAotICAgIDExOSwgMTE3LCAyLCAyMzYsIDE0MSwgMTE5LCAxMTcsIDIsIDIyMSwgMTQ4LCAxMTksIDExNywgMiwgMjAzLCAxNjksIDExOSwgCi0gICAgMTE3LCAyLCAyMjEsIDg4LCAxMTksIDExNywgMiwgMjUwLCAxOCwgMTE5LCAxMTcsIDIsIDIwNywgMTI5LCAyNDYsIDIyOCwgCi0gICAgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjA4LCAxMiwgMTE5LCAxMTcsIDIsIDIwOSwgMjA3LCAxMTksIDExNywgMiwgMjI3LCA3LCAKLSAgICAxMTksIDExNywgMiwgMjIzLCAyMDEsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMzcsIDE0MywgMjI2LCAyMTIsIDIyMSwgOTMsIAotICAgIDIyMSwgOTIsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyNDUsIDEwOSwgMjA4LCAzLCAxMTksIDExNywgMiwgMjQ2LCA2NywgCi0gICAgMjA3LCAxMjcsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMDcsIDEyOCwgMjQ2LCA4NiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAotICAgIDIxNywgMTg2LCAyNDQsIDEzNSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIyMSwgMTQxLCAyMDgsIDEzMiwgMTE5LCAxMTcsIAotICAgIDI0NiwgMzksIDIsIDIwOCwgNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgNDgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKLSAgICAyMjcsIDkzLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI3LCAyNTAsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDEzMiwgCi0gICAgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgNiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIzNywgNzMsIDExOSwgMTE3LCAKLSAgICAyNDYsIDM5LCAyLCAyMjMsIDI0MiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwOSwgNDUsIDExOSwgMTE3LCAyNDYsIDM5LCAKLSAgICAyLCAyMDgsIDE3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjE4LCAyMDUsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIAotICAgIDE0MiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIzNywgMTMzLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA2LCA4MCwgMTE5LCAKLSAgICAxMTcsIDI0NiwgMzksIDIsIDI0MCwgODYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDg4LCAxMTksIDExNywgMjQ2LCAKLSAgICAzOSwgMiwgMjA3LCAyNDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjgsIDE1OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAotICAgIDIwNCwgMTUzLCAxMTEsIDEsIDE4NSwgMTExLCAxLCAyNDksIDMyLCAxMTEsIDEsIDExLCAxODUsIDExMSwgMSwgMjE4LCA5OCwgCi0gICAgMTExLCAxLCAxOTIsIDExMSwgMSwgMjI0LCAxNTgsIDExMSwgMSwgMjUwLCAxMjYsIDE5MiwgMTExLCAxLCAyNDAsIDEwOCwgCi0gICAgMTExLCAxLCAyMDYsIDg2LCAxMTEsIDEsIDIwNSwgMjMxLCAxMTEsIDEsIDIxMCwgMjIsIDExMSwgMSwgMjQ0LCAyMTIsIAotICAgIDExMSwgMSwgMTEsIDIwNywgMjQxLCAxMTEsIDEsIDExLCAyMTAsIDIyLCAxMTEsIDEsIDIwNywgMjQxLCAxMTEsIDEsIDI0NCwgCi0gICAgMTIwLCAxMTEsIDEsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMiwgMTA0LCAxMTEsIDEsIDExLCAyMjEsIDIyNywgMTExLCAxLCAKLSAgICAyNTAsIDEyNiwgMjAxLCAyMDEsIDExMSwgMSwgMjIxLCAyMjcsIDExMSwgMSwgMjIxLCAyMTMsIDExMSwgMSwgMjI4LCAxMTMsIAotICAgIDExMSwgMSwgMjI2LCAxOTgsIDExMSwgMSwgMjI3LCAxNjEsIDExMSwgMSwgMjI3LCAxNTAsIDExMSwgMSwgMjA4LCAxODcsIAotICAgIDExMSwgMSwgMjQzLCAxMjEsIDExMSwgMSwgMjA4LCAxNzksIDExMSwgMSwgMjQzLCAxMjAsIDExMSwgMSwgMTczLCAxMTEsIAotICAgIDEsIDIzOSwgOCwgMTExLCAxLCAxMSwgMTczLCAxMTEsIDEsIDIxNywgMTI2LCAxMTEsIDEsIDIxNywgMTAzLCAxMTEsIDEsIAotICAgIDIyMiwgMjAzLCAxMTEsIDEsIDIyMiwgMTUyLCAxMTEsIDEsIDI1MCwgMTI2LCAyMjIsIDIwMywgMTExLCAxLCAxNTIsIDExMSwgCi0gICAgMSwgMjAzLCAxODIsIDExMSwgMSwgMjM4LCAxMTksIDExMSwgMSwgMjM4LCA5NCwgMTExLCAxLCAyMDcsIDI1MSwgMTExLCAxLCAKLSAgICAyNDEsIDIzOSwgMTExLCAxLCAyMjEsIDExLCAxMTEsIDEsIDIyMCwgMjUwLCAxMTEsIDEsIDIwOCwgMTAsIDExMSwgMSwgCi0gICAgMjQxLCAyNDksIDExMSwgMSwgMTEsIDIwOCwgMTAsIDExMSwgMSwgMTEsIDI0MSwgMjQ5LCAxMTEsIDEsIDIxNiwgMTMzLCAKLSAgICAyMDgsIDEwLCAxMTEsIDEsIDIxMywgOTAsIDExMSwgMSwgMjExLCAxNjQsIDExMSwgMSwgMjAyLCA4MCwgMTExLCAxLCAyMDIsIAotICAgIDgsIDExMSwgMSwgMjA4LCAyMCwgMTExLCAxLCAyNDEsIDI1NSwgMTExLCAxLCAxMSwgMjA4LCAyMCwgMTExLCAxLCAyMTUsIAotICAgIDM2LCAxMTEsIDEsIDIwMiwgMTE2LCAxMTEsIDEsIDIwMiwgOSwgMTExLCAxLCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIxNSwgCi0gICAgMTExLCAxLCAyNTAsIDEyNiwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMDcsIDExMSwgMSwgMjAxLCAyMTQsIDExMSwgMSwgCi0gICAgMjA0LCAxMTEsIDExMSwgMSwgMjUxLCA3MywgMTExLCAxLCAyMzcsIDEyLCAxMTEsIDEsIDIyMywgNzAsIDExMSwgMiwgMjUwLCAKLSAgICA2NSwgMTExLCAyLCAyMTYsIDEzMywgMjA1LCAxODQsIDExMSwgMiwgMjE2LCAxMzMsIDI1MCwgNjUsIDExMSwgMjIsIDIsIAotICAgIDYzLCAxMTEsIDIyLCAyLCAyNTIsIDI1LCAxMTEsIDIyLCAyLCAyNTEsIDY5LCAxMTEsIDIyLCAyLCAyNTAsIDIzMSwgMTExLCAKLSAgICAyMiwgMiwgMjUwLCAyMjMsIDExMSwgMjIsIDIsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDE4LCAxMTEsIDIyLCAyLCAyMDQsIDAsIAotICAgIDExMSwgMjIsIDIsIDIwNCwgMTQ0LCAxMTEsIDIyLCAyLCA3NCwgMTExLCAyMiwgMiwgMjQxLCA5MiwgMTExLCAyMiwgMiwgCi0gICAgMjQxLCA3OCwgMTExLCAyMiwgMiwgMjIwLCA3MCwgMTExLCAyMiwgMiwgNzUsIDExMSwgMjIsIDIsIDIzNSwgMTcxLCAxMTEsIAotICAgIDIyLCAyLCAyMzUsIDE3MCwgMTExLCAyMiwgMiwgMjM1LCAxNjksIDExMSwgMjIsIDIsIDIzMCwgMjM0LCAxMTEsIDIyLCAyLCAKLSAgICAyMzEsIDExMCwgMTExLCAyMiwgMiwgMjMxLCA4MywgMTExLCAyMiwgMiwgMjMwLCAxOTcsIDExMSwgMjIsIDIsIDIzMSwgMjQsIAotICAgIDExMSwgMjIsIDIsIDY4LCAxMTEsIDIyLCAyLCAyMDcsIDM5LCAxMTEsIDIyLCAyLCAyMDcsIDM4LCAxMTEsIDIyLCAyLCAKLSAgICAyMDcsIDM3LCAxMTEsIDIyLCAyLCAyMDYsIDE3OCwgMTExLCAyMiwgMiwgMjA3LCAyMSwgMTExLCAyMiwgMiwgMjA2LCAyNDEsIAotICAgIDExMSwgMjIsIDIsIDIwMywgMTI0LCAxMTEsIDIyLCAyLCAyMDMsIDExLCAxMTEsIDIyLCAyLCAyNTEsIDEwOSwgMTExLCAyMiwgCi0gICAgMiwgMjUxLCAxMDUsIDExMSwgMjIsIDIsIDI0MSwgMjEsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDIxLCAxMTEsIDIyLCAKLSAgICAyLCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjUxLCA2NCwgMTExLCAyMiwgCi0gICAgMiwgMjQxLCAxNDUsIDExMSwgMjIsIDIsIDI1MCwgMzQsIDExMSwgMjIsIDIsIDIxOSwgMjE2LCAxMTEsIDIyLCAyLCAyMjMsIAotICAgIDE2MywgMTExLCAyMiwgMiwgMjIyLCAyMDUsIDExMSwgMTQzLCAyMTYsIDE2LCAxMTEsIDE0MywgMjA4LCAxNDUsIDIxNiwgCi0gICAgMTYsIDExMSwgMTQzLCA1NSwgMTExLCAxNDMsIDU2LCAxMTEsIDEsIDIwOCwgMTU5LCAxMTEsIDEsIDIwOCwgMTU4LCAxMTEsIAotICAgIDEsIDIwOCwgMTU3LCAxMTEsIDEsIDIwOCwgMTU2LCAxMTEsIDEsIDIwOCwgMTU1LCAxMTEsIDEsIDIwOCwgMTU0LCAxMTEsIAotICAgIDEsIDIwOCwgMTUzLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE2MCwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTksIDExMSwgCi0gICAgMSwgMjE2LCAxMzMsIDIwOCwgMTU3LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1NiwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAKLSAgICAxNTUsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTUzLCA2NywgMSwgMjUwLCAxMjYsIDc0LCAxNzIsIDEsIDI1MCwgMTI2LCAKLSAgICAyMDMsIDUyLCAxMDAsIDEsIDIzNywgMTcxLCAxMDAsIDEsIDIwMywgMTk2LCAxMDAsIDEsIDIxOSwgMTg0LCAxMDAsIDEsIAotICAgIDIxMCwgNjksIDEwMCwgMSwgMjQwLCAxNzQsIDEwMCwgMSwgMjMwLCA1NCwgMTAwLCAxLCAxNTksIDEwMCwgMSwgMjQ5LCAKLSAgICAyNTUsIDEwMCwgMSwgMjQ1LCA1MSwgMTAwLCAxLCAyMDYsIDE2NCwgMTAwLCAxLCAyMzksIDc1LCAxMDAsIDEsIDE0NiwgCi0gICAgMTAwLCAxLCAyMTksIDE4NSwgMjIzLCAxNjMsIDEwMCwgMSwgMjQ1LCA1MiwgMTk0LCAxMDAsIDEsIDI0MCwgMTc1LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMzAsIDU1LCAyMjYsIDE4NSwgMTAwLCAxLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAyMDksIDExMCwgCi0gICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDQsIDIsIDEwMCwgMSwgMjQ0LCAyLCAxMDAsIDEsIDIyOSwgNDgsIDEwMCwgMSwgMjEyLCAKLSAgICA0NSwgMjMwLCAxODQsIDEwMCwgMSwgMjM2LCAyMjUsIDEwMCwgMSwgMjI3LCAxNjIsIDEwMCwgMSwgMjE2LCA2MiwgMTAwLCAKLSAgICAxLCAyMjYsIDE4NSwgMTAwLCAxLCAyMjMsIDE2MywgMTAwLCAxLCAyMzAsIDE4NCwgMTAwLCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjI2LCAxODYsIDIyMywgMTYzLCAxMDAsIDEsIDIyMywgMTY0LCAyMjYsIDE4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAKLSAgICAxODUsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAxODQsIDEwMCwgMSwgMjI2LCAxODYsIDMsIDI0MywgODUsIDEwMCwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDMsIAotICAgIDE4NywgMjMxLCA3LCAyNSwgNTUsIDEwMCwgMSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCA3MCwgCi0gICAgNTYsIDEwMCwgMSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAxOTQsIAotICAgIDEwMCwgMSwgMjE1LCA5NCwgMTk0LCAxMDAsIDEsIDIyNiwgMTg2LCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAKLSAgICAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgCi0gICAgMTg1LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIxMCwgNjksIDEwMCwgMSwgCi0gICAgMjE1LCA5NCwgMjEwLCA3MCwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIxOSwgMTg0LCAxMDAsIDEsIDIxNSwgOTQsIDIxOSwgCi0gICAgMTg1LCAxNDYsIDEwMCwgMSwgMjEwLCA3MCwgMTk0LCAxMDAsIDEsIDIxMCwgNzAsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIwNCwgMTQ0LCAxMDAsIDEsIDIwNCwgNDAsIDEwMCwgMSwgMjA0LCAxNDUsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMTUsIDk0LCAyMjYsIDE4NSwgMTAwLCAxLCAyMzAsIDU1LCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMzksIDc2LCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTUsIAotICAgIDE0NiwgMTAwLCAxLCA2MywgMTAwLCAxLCAyMTIsIDQ1LCAyMTksIDE5NSwgMTAwLCAxLCAyMjAsIDk3LCAxMDAsIDEsIDc4LCAKLSAgICAxMDAsIDEsIDI1MCwgMTc2LCAxMDAsIDEsIDc1LCAxMDAsIDEsIDc0LCAxMDAsIDEsIDIzMSwgMTEwLCAxMDAsIDEsIDIxMiwgCi0gICAgMjI4LCA3NSwgMTAwLCAxLCAyMDcsIDE3LCAxMDAsIDEsIDI0MSwgMTYxLCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTQ3LCAKLSAgICAxMDAsIDEsIDIxNSwgMjA5LCA3NSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE2MSwgMTAwLCAxLCAxNjMsIDc1LCAxMDAsIDEsIAotICAgIDIwMywgNTIsIDEwMCwgMSwgNjgsIDEwMCwgMSwgMjQwLCAyMzgsIDEwMCwgMSwgMjAzLCAxNDcsIDEwMCwgMSwgMTA2LCAKLSAgICAyMjMsIDE2MywgMTAwLCAxLCAxNjMsIDY4LCAxMDAsIDEsIDIxNSwgMjA5LCA2OCwgMTAwLCAxLCAyMDcsIDE4LCAxMDAsIDEsIAotICAgIDIxMiwgNDUsIDY4LCAxMDAsIDEsIDIyMCwgMTUsIDEwMCwgMSwgMjE5LCAxOTUsIDEwMCwgMSwgMjE5LCAyMTYsIDEwMCwgMSwgCi0gICAgMjA0LCAxMTEsIDEwMCwgMSwgMjA0LCAwLCAxMDAsIDEsIDIwNCwgMzAsIDEwMCwgMSwgMjA0LCA1MywgMTAwLCAxLCAyMDMsIAotICAgIDIzMCwgMTAwLCAxLCAyMjMsIDcyLCA2OCwgMTAwLCAxLCAyMjMsIDcyLCA3OCwgMTAwLCAxLCAyMjMsIDcyLCA3NSwgMTAwLCAKLSAgICAxLCAyMjMsIDcyLCA2MywgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyMzEsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjQ3LCAKLSAgICAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgOTIsIDEwMCwgMSwgMjEyLCA0NSwgMjUwLCAyMzEsIDEwMCwgMSwgMjEyLCA0NSwgCi0gICAgMjIwLCAzMSwgMTAwLCAxLCAxMjUsIDIyNiwgMTg1LCAxMDAsIDI1MSwgODgsIDQ5LCAyMzYsIDEwNiwgMjE0LCAxNzIsIAotICAgIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDIzNiwgMTA2LCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCA1MCwgMjM2LCAxMDYsIAotICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEyNCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCA4MCwgCi0gICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTM4LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjE0LCAKLSAgICAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjI3LCAyMTMsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIAotICAgIDIwOSwgMjI2LCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgMjQ4LCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDE4OCwgCi0gICAgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIzNSwgMjA2LCAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAKLSAgICAyMjcsIDExMywgMTAwLCAyNTEsIDg4LCAxMzgsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgCi0gICAgMjUxLCA4OCwgMTM4LCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMzgsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgCi0gICAgMTM4LCAyNDMsIDg1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIyNywgMTE0LCAKLSAgICAxMDAsIDI1MSwgODgsIDEzOCwgMjA0LCA3NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgCi0gICAgMTI0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDgsIDI0NCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjM3LCAyNTMsIAotICAgIDEwMCwgMjUxLCA4OCwgMTI0LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEyNCwgMjQzLCA4NSwgMTAwLCAyNTEsIAotICAgIDg4LCAxMjQsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMjcsIDExNCwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNCwgCi0gICAgNzUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIDEyNCwgNDcsIDEwMCwgMiwgMTU4LCAzLCAKLSAgICAyNDUsIDEzMCwgMTAwLCAyMDksIDY4LCAxLCAyMTQsIDE1MCwgMTAwLCA1MiwgODIsIDEwMCwgMjE3LCAxNzksIDI0NiwgCi0gICAgMTI2LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgCi0gICAgMTU4LCAyNDUsIDE5MCwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMTIxLCAyMTEsIDc1LCAyMTIsIDIxNSwgMjM5LCAKLSAgICAxNTgsIDExMiwgMjExLCA3NSwgNjAsIDMxLCAxNiwgMjE3LCAxOTUsIDYwLCAzMSwgMTYsIDI0NCwgMTQ2LCA2MCwgMzEsIAotICAgIDE2LCAyMTgsIDIzOSwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQzLCAKLSAgICAxNzEsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDMsIDE3MSwgNjAsIAotICAgIDMxLCAxNiwgMjI5LCAyMjEsIDYwLCAzMSwgMTYsIDIxMCwgODYsIDYwLCAzMSwgMTYsIDIxOSwgODMsIDYwLCAzMSwgMTYsIAotICAgIDIwMiwgMjE5LCA2MCwgMzEsIDE2LCAyMDIsIDIyMCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIyOCwgMjI2LCA2MCwgMzEsIAotICAgIDE2LCAyNTAsIDE3MSwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDI0MCwgMjA2LCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA5LCAKLSAgICAxNjMsIDYwLCAzMSwgMTYsIDIyOSwgMTc2LCA2MCwgMzEsIDE2LCAyNTAsIDE2MSwgNjAsIDMxLCAxNiwgMjUwLCAxNjIsIAotICAgIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMTAsIDkzLCA2MCwgMzEsIDE2LCAyMDksIDUwLCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIxNywgMTk0LCA2MCwgMzEsIAotICAgIDE2LCAyNDYsIDE5MCwgNjAsIDMxLCAxNiwgMjA2LCA2MiwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDI1MCwgMTI0LCA2MCwgCi0gICAgMzEsIDE2LCAyMjksIDE3OCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjE0LCAyMTAsIDYwLCAzMSwgMTYsIDIxOSwgNzMsIDYwLCAzMSwgMTYsIDIxMSwgODQsIDI1MCwgMTY0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDE5MSwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIwNiwgNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE2NSwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTU5LCA2MCwgMzEsIDE2LCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMTYsIDY5LCAKLSAgICA2MCwgMzEsIDE2LCAyMTgsIDE2NSwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIwOCwgMjE3LCA2MCwgMzEsIDE2LCAyNTAsIAotICAgIDIyOSwgNjAsIDMxLCAxNiwgMjE0LCAxNTMsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTAsIDk3LCAyMjQsIDIyMSwgMjExLCA4MiwgNjAsIDMxLCAxNiwgMjE5LCAxODYsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMDksIDg2LCA2MCwgMzEsIDE2LCAyMjcsIDIwMCwgNjAsIDMxLCAxNiwgMjQyLCAyLCA2MCwgMzEsIDE2LCAyMDgsIDg3LCAKLSAgICA2MCwgMzEsIDE2LCAyMDksIDEzNCwgNjAsIDMxLCAxNiwgMjI4LCAyMjksIDYwLCAzMSwgMTYsIDI1MCwgMTcxLCAyNDAsIAotICAgIDIwNiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjMxLCA2MiwgNjAsIAotICAgIDMxLCAxNiwgMjA4LCA1NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOSwgMjI0LCAyMDgsIDU2LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDExLCA2MCwgMzEsIDE2LCAyMTcsIDE5OSwgNjAsIDMxLCAxNiwgMjI5LCA3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIxNiwgMTc3LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyNTAsIDEyNCwgNjAsIDMxLCAKLSAgICAxNiwgMjE5LCA4NCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzNSwgMTYwLCA2MCwgMzEsIDE2LCAyMjMsIDgyLCA2MCwgMzEsIAotICAgIDE2LCAyMTgsIDIxNywgNjAsIDMxLCAxNiwgMjI5LCA4LCAyNTEsIDksIDYwLCAzMSwgMTYsIDIwOCwgNTcsIDI1MSwgOSwgCi0gICAgNjAsIDMxLCAxNiwgMjExLCA1NSwgNjAsIDMxLCAxNiwgMjM3LCAyNDAsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyMjIsIAotICAgIDIyNiwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyMjIsIDIyNiwgNjAsIAotICAgIDMxLCAxNiwgMjE4LCAyMTYsIDYwLCAzMSwgMTYsIDIyOCwgMjQ4LCA2MCwgMzEsIDE2LCAyMTgsIDIxNSwgNjAsIDMxLCAxNiwgCi0gICAgMjI4LCAyMjgsIDYwLCAzMSwgMTYsIDIxOSwgMTIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIAotICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAyMjcsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMDIsIDIxNywgCi0gICAgNjAsIDMxLCAxNiwgMjUwLCAxNjIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2MywgMjEwLCA5NCwgMjIyLCAyMjYsIAotICAgIDYwLCAzMSwgMTYsIDIwMiwgMjE4LCA2MCwgMzEsIDE2LCAyMjgsIDIyNywgNjAsIDMxLCAxNiwgMjQxLCAxMjEsIDYwLCAzMSwgCi0gICAgMTYsIDI0NiwgMTkxLCA2MCwgMzEsIDE2LCAyMjQsIDEyMiwgMjMwLCAyMDUsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDIyMiwgCi0gICAgMjI2LCA2MCwgMzEsIDE2LCAyMTgsIDE2NSwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxNywgMjAwLCAyMjIsIDIyNiwgNjAsIAotICAgIDMxLCAxNiwgMjIwLCAzOCwgNjAsIDMxLCAxNiwgMjUwLCAxODksIDYwLCAzMSwgMTYsIDIyNiwgMTk1LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDg0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MCwgMjQ0LCAKLSAgICAyMTksIDg1LCA2MCwgMzEsIDE2LCAyMjgsIDEzNSwgNjAsIDMxLCAxNiwgMjUwLCAxOTAsIDYwLCAzMSwgMTYsIDIwOCwgNTcsIAotICAgIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDEyNCwgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjIyLCAyMjYsIDYwLCAzMSwgCi0gICAgMTYsIDIxMCwgODcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCA0MywgNjAsIDMxLCAKLSAgICAxNiwgMjE0LCAxNTQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMDMsIDE2MywgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjA4LCAKLSAgICA1NCwgNjAsIDMxLCAxNiwgMjE3LCAyMDEsIDYwLCAzMSwgMTYsIDIwOCwgNTgsIDYwLCAzMSwgMTYsIDIwOCwgNTUsIDYwLCAKLSAgICAzMSwgMTYsIDIxNywgMTk4LCA2MCwgMzEsIDE2LCAyMDgsIDUzLCA2MCwgMzEsIDE2LCAyMTcsIDE5NywgNjAsIDMxLCAxNiwgCi0gICAgMjM4LCAyMiwgNjAsIDMxLCAxNiwgMjUwLCAxMTYsIDYwLCAzMSwgMTYsIDI0MCwgMjQ0LCAyNTAsIDExNiwgNjAsIDMxLCAKLSAgICAxNiwgMjE5LCAxODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMDksIDg1LCAyNDEsIDEsIDYwLCAzMSwgMTYsIDIwOSwgODUsIAotICAgIDI0MCwgMjA1LCA2MCwgMzEsIDE2LCAyMDksIDg3LCAyNTAsIDE2NiwgNjAsIDMxLCAxNiwgMjA5LCA3OSwgMjMwLCAxOSwgCi0gICAgMjUwLCAxNTgsIDYwLCAzMSwgMTYsIDIyOSwgMjIzLCA2MCwgMzEsIDE2LCAyNDEsIDgwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAKLSAgICAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIxMSwgODMsIDYwLCAzMSwgMTYsIAotICAgIDIyOSwgMzksIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIDIyMiwgMjI2LCAKLSAgICA2MCwgMzEsIDE2LCAyNTAsIDE2NSwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTY3LCA2MCwgMzEsIDE2LCAyNDMsIAotICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA4LCA2OCwgNjAsIDMxLCAxNiwgMjA5LCAxMjUsIDYwLCAzMSwgMTYsIDIyOCwgMjUyLCA2MCwgCi0gICAgMzEsIDE2LCAyMjcsIDIwNSwgMjQxLCA3MywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyNDIsIDMsIDI0NiwgCi0gICAgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA4LCA3MSwgMjQ2LCAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDksIAotICAgIDEzNiwgMjQ2LCAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMzEsIDU3LCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAyMywgMjIyLCAyMjcsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNTAsIDExMiwgNjAsIDMxLCAKLSAgICAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NiwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIAotICAgIDIxOSwgNzQsIDI1MCwgMTEzLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIDIxOSwgNzQsIDI1MCwgMTEzLCAKLSAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjA4LCA3NiwgNjAsIAotICAgIDMxLCAxNiwgMjUwLCAxMTcsIDYwLCAzMSwgMTYsIDIzMSwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjE5LCA2MCwgMzEsIDE2LCAKLSAgICAyNTEsIDc1LCAyMTgsIDUyLCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjUwLCAxMTUsIDYwLCAzMSwgMTYsIAotICAgIDI1MSwgNzUsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMjQsIDIxNSwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgCi0gICAgMjI0LCAyMjYsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIzOCwgMjQsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIzOCwgMjEsIDYwLCAKLSAgICAzMSwgMTYsIDI1MSwgNzUsIDIxOCwgNTIsIDIzOCwgMjQsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA3LCAyMzUsIAotICAgIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjE3LCAyMDcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIAotICAgIDg0LCAyNDQsIDUsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyNDQsIDUsIDIzNSwgMTU4LCA2MCwgCi0gICAgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDYzLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA3NywgNjAsIDMxLCAKLSAgICAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjI3LCAyMDksIAotICAgIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMjcsIDIwOSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIAotICAgIDIxOCwgOTUsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzAsIDIxMywgMjA5LCAxNTYsIDIzNSwgMTU5LCA2MCwgMzEsIDE2LCAKLSAgICAyNTAsIDE2MywgMjA5LCAxNTYsIDIzNSwgMTU5LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyMDksIDEyNywgNjAsIDMxLCAxNiwgCi0gICAgMjQwLCA4MCwgMjI0LCA0NiwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIyNSwgODQsIAotICAgIDIwNiwgNjYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIAotICAgIDIyNSwgODQsIDIxOCwgOTUsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI1MCwgCi0gICAgMTY2LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjQzLCAxNzAsIDYwLCAzMSwgMTYsIDI0MSwgOTAsIDIzMCwgCi0gICAgMTksIDIzOSwgMTEwLCAyMDUsIDE3MSwgNjAsIDMxLCAxNiwgMjMxLCA2MywgNjAsIDMxLCAxNiwgMjMxLCA2MSwgNjAsIDMxLCAKLSAgICAxNiwgMjM5LCAxMTAsIDI1MCwgMTI1LCAyNDQsIDQsIDIzNSwgMTU3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIAotICAgIDE4NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjMsIDgyLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjIzLCAKLSAgICA3NywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDIzOSwgCi0gICAgMTEwLCAyMTIsIDY0LCAyNDMsIDIxNiwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjI5LCAKLSAgICAyMDEsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgCi0gICAgMjE3LCAyMjIsIDEwMSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIyLCAxMDEsIDI1MCwgCi0gICAgMjAyLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAKLSAgICAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjI0LCA0NiwgNjAsIDMxLCAxNiwgMjQwLCAyNywgMjEyLCA2NCwgMjQ2LCAxMDIsIAotICAgIDIwNiwgNjUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjEwLCA5OCwgNjAsIDMxLCAxNiwgCi0gICAgMjM5LCAxMTAsIDIyMiwgMjI5LCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgMjAxLCAyNDEsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAKLSAgICAyMjksIDM3LCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgMjExLCAyMTksIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMzUsIDIwNiwgCi0gICAgMjAzLCAxMywgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDEsIDkxLCAyNTAsIDE5MSwgNjAsIDMxLCAxNiwgCi0gICAgMjAzLCAxMywgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAKLSAgICAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAKLSAgICAyNDMsIDIxMCwgMjI0LCA0NCwgMjA5LCAxMzUsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjQzLCAxOTMsIAotICAgIDI0MCwgMjE4LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgCi0gICAgMzEsIDE2LCAyMDMsIDEzLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjI0LCAKLSAgICA0NCwgMjA5LCAxMzUsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyNDMsIDE5MywgMjQwLCAyMTgsIDI0MywgCi0gICAgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAxNzUsIDI0MywgMjA5LCA2MCwgMzEsIDE2LCAyMzgsIDE3NSwgMjAzLCAxMiwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDI1MCwgCi0gICAgMTY4LCAyMjQsIDEyMywgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDI1MCwgMTY4LCAyMjQsIDI1NSwgNjAsIDMxLCAxNiwgMjQzLCAKLSAgICAyMTgsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjA5LCA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgCi0gICAgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIDc4LCAyNDMsIDE1NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgCi0gICAgNzgsIDIwOCwgNjUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIDc4LCAyMDksIDEyMywgNjAsIDMxLCAxNiwgMjEyLCAKLSAgICAxMzAsIDI1MCwgODgsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyNTAsIDg5LCAyNDMsIDE1NSwgNjAsIDMxLCAxNiwgMjEyLCAKLSAgICAxMzAsIDI1MCwgODksIDIwOCwgNjUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyNTAsIDg5LCAyMDksIDEyMywgNjAsIDMxLCAKLSAgICAxNiwgMjQzLCAxOTQsIDIzOCwgMTU2LCA2MCwgMzEsIDE2LCAyNDMsIDIwMSwgMjE5LCAyMTYsIDYwLCAzMSwgMTYsIDIxMSwgCi0gICAgNzEsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAxODUsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMDUsIDE3MSwgNjAsIDMxLCAKLSAgICAxNiwgMjUwLCAxMDksIDIzOSwgOCwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyNTAsIAotICAgIDEwOSwgMjI5LCAyMDEsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjIyLCAKLSAgICAxMDAsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgMjI0LCAyMjUsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIAotICAgIDIyNywgMjI0LCAyMjUsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIyOSwgCi0gICAgMTc4LCAyMjIsIDIyNywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIyOSwgMzksIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDIzLCAyMjIsIDIyNywgMjI5LCAyMjAsIDMxLCAxNiwgMjEyLCAxMjAsIDI0OCwgMjI2LCAzMSwgMTYsIDUyLCAyNDgsIDIyNiwgCi0gICAgMzEsIDE2LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjE2LCA3NCwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDI0NCwgMTQzLCAKLSAgICAyNDgsIDIyNiwgMzEsIDE2LCAyMTIsIDIyOCwgMjQ4LCAyMjYsIDMxLCAxNiwgNDksIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAKLSAgICA1MCwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIDIxNiwgMTAxLCAyNDMsIDgzLCAzMSwgMTYsIDI0NCwgMTg1LCAyMTQsIDE1NywgCi0gICAgMzEsIDE2LCAyNDQsIDIxMywgMjQ3LCA0NSwgMzEsIDE2LCAyMTQsIDE1NywgMzEsIDE2LCAyNDUsIDI1MCwgMzEsIDE2LCAKLSAgICAyMTYsIDk5LCAyNDAsIDE1LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTQsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxMywgMzEsIAotICAgIDE2LCAyNDAsIDM2LCAzMSwgMTYsIDI0MCwgMzcsIDU2LCAzMSwgMTYsIDI0NywgMjE2LCA4MiwgMzEsIDE2LCAyNDcsIDgyLCAKLSAgICAzMSwgMTYsIDI0NywgMjI4LCAzMSwgMTYsIDE1NSwgMzEsIDE2LCAyMjAsIDI4LCAyMTEsIDEwMiwgMzEsIDE2LCAyMDcsIAotICAgIDEzMywgMjExLCAxMDIsIDMxLCAxNiwgMjA5LCAyOSwgMjExLCAxMDIsIDMxLCAxNiwgMjM5LCAxNDYsIDIxMSwgMTAyLCAzMSwgCi0gICAgMTYsIDIzOSwgMjMyLCAyMTEsIDEwMiwgMzEsIDE2LCAyMTIsIDg3LCAyMTEsIDEwMiwgMzEsIDE2LCAyMTIsIDg1LCAyMzksIAotICAgIDEyNywgMzEsIDE2LCAyMzksIDE0NCwgMjM5LCAxMjcsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMCwgMzEsIDE2LCAyMzksIAotICAgIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAotICAgIDIxMSwgMzEsIDE2LCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIDE2LCAyNDAsIDE3NSwgMjQ2LCAzMCwgMzEsIDE2LCAyNDAsIAotICAgIDE3NSwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyNDAsIDE3NSwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCi0gICAgMjExLCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjksIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOCwgMzEsIDE2LCAyMjMsIAotICAgIDIyNiwgMjI1LCAxOSwgMjE2LCA4NSwgMzEsIDE2LCA1MiwgMjEzLCA1NiwgMzEsIDE2LCA1MiwgMjM5LCAyMTYsIDMxLCAxNiwgCi0gICAgMjM5LCAyMTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOSwgMjE3LCAyNDIsIDcwLCAzMSwgMTYsIDIyMywgNjYsIDIwNiwgMjI0LCAKLSAgICAzMSwgMTYsIDIyMywgNjYsIDI0MiwgNzAsIDMxLCAxNiwgMjEzLCA1NywgMjA2LCAyMjQsIDMxLCAxNiwgMjEzLCA1NywgCi0gICAgMjQyLCA3MCwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIxMywgNTYsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMzksIDIxNiwgCi0gICAgMzEsIDE2LCAyNDUsIDIzMCwgMjA4LCAyMjEsIDMxLCAxNiwgMjQ1LCA3OCwgMjA4LCAyMjEsIDMxLCAxNiwgMjE5LCAyMTgsIAotICAgIDI1MSwgMCwgMzEsIDE2LCAyMTksIDIxOCwgMjQ4LCAyMTEsIDMxLCAxNiwgMjE3LCAzNywgMjUxLCAwLCAzMSwgMTYsIDIxNywgCi0gICAgMzcsIDI0OCwgMjExLCAzMSwgMTYsIDIyMywgMjI5LCAyMTYsIDg1LCAzMSwgMTYsIDIwNCwgMzEsIDIxNiwgODUsIDMxLCAKLSAgICAxNiwgMTYyLCAyMTYsIDg1LCAzMSwgMTYsIDIxNywgNTYsIDIxNiwgODUsIDMxLCAxNiwgMjQxLCAxMzksIDIxNiwgODUsIAotICAgIDMxLCAxNiwgMjEyLCA4MSwgMjE2LCA4NSwgMzEsIDE2LCAyMDksIDUxLCAyMTYsIDg1LCAzMSwgMTYsIDIxMiwgNzMsIDIxNiwgCi0gICAgODUsIDMxLCAxNiwgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjE2LCA4NSwgMzEsIDE2LCAyMDMsIDE5NywgMjIxLCAxNTYsIAotICAgIDMxLCAxNiwgOTEsIDIyMSwgMTU2LCAzMSwgMTYsIDI0NiwgNjIsIDIwMywgMTk3LCAyMjEsIDE1NiwgMzEsIDE2LCA1MSwgCi0gICAgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgNTEsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgCi0gICAgMTU3LCAxMTIsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIAotICAgIDg2LCAyMjEsIDE1NywgNDksIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDQ5LCAyNDgsIDQzLCAzMSwgCi0gICAgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDI0OCwgCi0gICAgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgCi0gICAgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgCi0gICAgODYsIDIyMSwgMTU3LCAxMTIsIDUwLCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMzAsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgCi0gICAgMTYsIDIyNCwgMzAsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIAotICAgIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMTksIDc3LCAyMjEsIDE1NiwgMzEsIAotICAgIDE2LCAyMDUsIDE4MywgMjIxLCAxNTYsIDMxLCAxNiwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjIxLCA0OSwgMjIxLCAKLSAgICAxNTYsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyNDgsIAotICAgIDQzLCAzMSwgMTYsIDI0NywgMjE0LCAzMSwgMTYsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIDE2MiwgMjIxLCAxNjAsIAotICAgIDMxLCAxNiwgMjE3LCA1NiwgMjIxLCAxNjAsIDMxLCAxNiwgMjQxLCAxMzksIDIyMSwgMTYwLCAzMSwgMTYsIDIxMiwgODEsIAotICAgIDIyMSwgMTYwLCAzMSwgMTYsIDIwOSwgNTEsIDIyMSwgMTYwLCAzMSwgMTYsIDIxMiwgNzMsIDIyMSwgMTYwLCAzMSwgMTYsIAotICAgIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIyMSwgMTYwLCAzMSwgMTYsIDM5LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMTEsIAotICAgIDE4NCwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjA4LCA5NCwgMzEsIDE2LCAzOSwgMjA4LCA5MywgMzEsIDE2LCAzOSwgMjA4LCAKLSAgICA5MiwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTQsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDkzLCAzMSwgMTYsIDI0MCwgMCwgCi0gICAgMjA4LCA5MiwgMzEsIDE2LCAzOSwgMjUwLCAzMSwgMjQzLCA4NSwgMzEsIDE2LCAzOSwgMjM5LCAyMjQsIDMxLCAxNiwgMzksIAotICAgIDIzOSwgMjIzLCAzMSwgMTYsIDM5LCAyMzksIDIyMiwgMzEsIDE2LCAzOSwgMjM5LCAyMjEsIDMxLCAxNiwgMzksIDIzOSwgCi0gICAgMjIwLCAzMSwgMTYsIDI0OCwgMTQyLCAyNDgsIDE1OSwgMzEsIDE2LCAyNDEsIDg0LCAyNDgsIDE1OSwgMzEsIDE2LCAyNDgsIAotICAgIDE0MiwgMjA4LCAyNTAsIDMxLCAxNiwgMjQxLCA4NCwgMjA4LCAyNTAsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxMiwgMzcsIDMxLCAKLSAgICAxNiwgMjQxLCA4NCwgMjEyLCAzNywgMzEsIDE2LCAyNDgsIDE0MiwgMjE4LCAxNzQsIDMxLCAxNiwgMjQxLCA4NCwgMjE4LCAKLSAgICAxNzQsIDMxLCAxNiwgMzksIDI1MSwgMTM4LCAzMSwgMTYsIDM5LCAyMTEsIDEwNSwgMzEsIDE2LCAzOSwgMjA5LCAxNDAsIAotICAgIDMxLCAxNiwgMzksIDIxMSwgMTA2LCAzMSwgMTYsIDM5LCAyMjUsIDk2LCAzMSwgMTYsIDM5LCAyMjUsIDk1LCAzMSwgMTYsIAotICAgIDM5LCAyNTEsIDEzNywgMzEsIDE2LCAzOSwgMjI3LCAyLCAzMSwgMTYsIDI1MCwgMTAwLCAyMDYsIDIyNCwgMzEsIDE2LCAKLSAgICAyNTAsIDEwMCwgMjQyLCA3MCwgMzEsIDE2LCAzOSwgMjQzLCAxMDAsIDMxLCAxNiwgMzksIDIxNSwgMjQ5LCAzMSwgMTYsIAotICAgIDM5LCAyMzksIDIwNiwgMzEsIDE2LCAzOSwgMjEyLCAzMywgMzEsIDE2LCAzOSwgMjQ4LCAxMjAsIDMxLCAxNiwgMzksIDUyLCAKLSAgICAyMDgsIDE1MCwgMzEsIDE2LCAzOSwgMjA4LCA3MCwgMjA4LCAxNTAsIDMxLCAxNiwgMjE1LCAyNTQsIDMxLCAxNiwgMjExLCAKLSAgICAwLCAzMSwgMTYsIDIwMiwgMTU5LCAzMSwgMTYsIDIxOCwgMTY2LCAzMSwgMTYsIDIyNCwgMjA2LCAzMSwgMTYsIDIzOSwgCi0gICAgMTU1LCAzMSwgMTYsIDI0NSwgMTQwLCAzMSwgMTYsIDI0NCwgNjIsIDMxLCAxNiwgMjM4LCAxNCwgMjIxLCAxNjEsIDIxMiwgCi0gICAgNTcsIDMxLCAxNiwgMjM4LCAxNCwgMjIxLCAxNjEsIDIyMSwgMTkyLCAyMTIsIDU3LCAzMSwgMTYsIDIwOCwgMTIwLCAzMSwgCi0gICAgMTYsIDIwNywgMTc1LCAzMSwgMTYsIDIzMCwgMjM5LCAyMDcsIDE3NSwgMzEsIDE2LCAyMDcsIDE3NiwgMjEyLCA1NywgMzEsIAotICAgIDE2LCAyMDcsIDE3NiwgMjA2LCAyMjQsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMzEsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgCi0gICAgMjgsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjcsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjYsIDMxLCAxNiwgMjE5LCAKLSAgICAyMzQsIDIxMSwgMjUsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjQsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjMsIDMxLCAKLSAgICAxNiwgMjE5LCAyMzQsIDIxMSwgMjIsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjEsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgCi0gICAgMzAsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjksIDMxLCAxNiwgMjM3LCA3NSwgMzEsIDE2LCAyMjIsIDIzOCwgMzEsIDE2LCAKLSAgICAyNDEsIDg0LCA3NiwgMjExLCA2NywgMzEsIDE2LCAyNDQsIDU1LCAyMTIsIDU3LCAzMSwgMTYsIDM5LCAxMjEsIDI0NywgCi0gICAgMjQwLCAzMSwgMTYsIDM5LCAxMTIsIDI0NywgMjQwLCAzMSwgMTYsIDM5LCAyMzcsIDg4LCAzMSwgMTYsIDM5LCAyMTIsIDIzLCAKLSAgICAyMTgsIDk5LCAzMSwgMTYsIDIxOSwgMjgsIDgyLCAzMSwgMTYsIDIxOSwgMjgsIDExMiwgODIsIDMxLCAxNiwgMTYyLCAyMTksIAotICAgIDI4LCA4MiwgMzEsIDE2LCAyMzgsIDQ3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzgsIDQ3LCAyNDIsIDcwLCAzMSwgMTYsIDMsIAotICAgIDIzOSwgMjU1LCAzMSwgMTYsIDI0NCwgMTY4LCAzMSwgMTYsIDI0NCwgMTY5LCAyNTEsIDE0LCAzMSwgMTYsIDIyNSwgNjUsIAotICAgIDMxLCAxNiwgMjI3LCAyMCwgMzEsIDE2LCAyNDcsIDIxMSwgMzEsIDE2LCAyMTMsIDE0NywgMjA0LCAzMywgMzEsIDE2LCAKLSAgICAyMTMsIDE0NywgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDEwNiwgMzEsIDE2LCAyMjQsIDEwNywgMjQ4LCA0MywgMzEsIDE2LCAKLSAgICAyMTMsIDE0MSwgMjA0LCAzMywgMzEsIDE2LCAyMTMsIDE0MSwgMjQ4LCA0MywgMzEsIDE2LCAyMzksIDkzLCAyMDQsIDMzLCAKLSAgICAzMSwgMTYsIDIzOSwgOTMsIDI0OCwgNDMsIDMxLCAxNiwgMjI3LCAyMSwgMjE4LCAyNDQsIDIxNiwgODUsIDMxLCAxNiwgCi0gICAgMjI3LCAyMSwgMjMxLCA1NCwgMjE2LCA4NSwgMzEsIDE2LCAyNDcsIDIxMiwgMjE2LCA4NSwgMzEsIDE2LCAyMTMsIDE0NywgCi0gICAgMjE2LCA4NSwgMzEsIDE2LCAyMjQsIDEwNywgMjE2LCA4NSwgMzEsIDE2LCAyMTMsIDE0MSwgMjE2LCA4NSwgMzEsIDE2LCAKLSAgICAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIxOCwgCi0gICAgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIDMxLCAxNiwgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgCi0gICAgMjE3LCAyMTYsIDIxOCwgMjQ0LCAyNDMsIDE4MSwgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgCi0gICAgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAKLSAgICAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTgxLCAzMSwgMTYsIAotICAgIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTgwLCAzMSwgMTYsIDIwOSwgCi0gICAgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTc5LCAzMSwgMTYsIDI0NSwgMTMzLCAKLSAgICAzMSwgMTYsIDIzNywgMjQzLCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIDE2LCAyMzcsIDI0MywgMjQwLCAxNzUsIDI0NiwgMzAsIAotICAgIDMxLCAxNiwgNTEsIDI0OSwgMjU1LCAzMSwgMTYsIDIwNSwgMjAzLCAzMSwgMTYsIDIxOCwgNjYsIDMxLCAxNiwgMjQ2LCAyMSwgCi0gICAgMzEsIDE2LCAyMTQsIDIwMCwgMzEsIDE2LCAyNDYsIDI1LCAzMSwgMTYsIDIwOCwgMTM4LCAzMSwgMTYsIDIxOCwgMzYsIDMxLCAKLSAgICAxNiwgMjE4LCAzNywgMjM5LCAyMDksIDMxLCAxNiwgMjE0LCAyMDEsIDIzOSwgMjA5LCAzMSwgMTYsIDIwOCwgMTM5LCAyMTYsIAotICAgIDgyLCAzMSwgMTYsIDIxOCwgMjI1LCAyMTAsIDI0NywgMzEsIDE2LCAyMjksIDkwLCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIAotICAgIDE2LCAyMjksIDkwLCAyNDEsIDg0LCA3NiwgMjE4LCAxNTksIDMxLCAxNiwgMjI5LCA5MCwgNDYsIDIyMSwgMTYwLCAzMSwgCi0gICAgMTYsIDIyOSwgOTAsIDIxNiwgMTUwLCA4MiwgMzEsIDE2LCAyMjksIDkwLCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAKLSAgICAyMjksIDkwLCAxNjIsIDIyMSwgMTYwLCAzMSwgMTYsIDIyOSwgOTAsIDIxNywgNTYsIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIAotICAgIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDIxNywgNTYsIDIyMSwgMTYxLCAyMTEsIDc4LCAyMDYsIDIyNCwgMzEsIDE2LCAyMjksIAotICAgIDkwLCAyNDEsIDEzOSwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjQxLCAxMzksIDIyMSwgCi0gICAgMTYxLCAyMTEsIDc4LCAyMDYsIDIyNCwgMzEsIDE2LCAyMjksIDkwLCAyMzksIDIxNywgNTQsIDMwLCAyMDUsIDE4OCwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQ4LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMjcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIAotICAgIDExMiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA1LCAKLSAgICAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDMsIDMwLCAKLSAgICAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIwNSwgCi0gICAgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDUsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ0LCAzMCwgMjA1LCAxODgsIAotICAgIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDIsIDMwLCAyMDUsIDE4OCwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQxLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMzksIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM4LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIAotICAgIDEzNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzUsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM0LCAKLSAgICAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAKLSAgICAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMCwgMzAsIDIwNSwgCi0gICAgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDksIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA4LCAzMCwgMjA1LCAxODgsIAotICAgIDIyMSwgMTY0LCAyMTAsIDEwNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMzcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTEyLCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNCwgMzAsIDIzMSwgCi0gICAgNSwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDUsIDMwLCAyMzEsIDUsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0NCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxNDAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM4LCAzMCwgCi0gICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIDIzMSwgNSwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTMxLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEyOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjYsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI0LCAzMCwgMjMxLCAKLSAgICA1LCAyMjEsIDE2NCwgMjEwLCAxMjMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyMiwgMzAsIDIzMSwgNSwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTIxLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAotICAgIDExOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTYsIDMwLCAKLSAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE0LCAzMCwgMjMxLCA1LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMTMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTEwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOCwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA3LCAzOSwgMzAsIDMxLCAyMDgsIDY2LCAzOSwgMzAsIDMxLCAyMDksIAotICAgIDEyNCwgMzksIDMwLCAzMSwgMjE4LCAyNTMsIDMwLCAzMSwgMjI3LCAyMDQsIDIyNCwgNDUsIDM1LCAyNDEsIDE3OSwgMjQzLCAKLSAgICAxOTUsIDM1LCAyMzcsIDUwLCAyNDEsIDE3OSwgMjQzLCAxOTUsIDM1LCAyMzYsIDE2LCAyNDEsIDE3OSwgMjQzLCAxOTUsIAotICAgIDM1LCAyNDEsIDE3OCwgMjM3LCA1MSwgMjQzLCAxOTUsIDM1LCAyNDEsIDE3OCwgMjM2LCAxNSwgMjQzLCAxOTUsIDM1LCAKLSAgICAyNDEsIDE3OSwgMjA5LCAxMjYsIDM1LCAyNDYsIDIxNywgMjA5LCAxMjYsIDM1LCAyMzksIDEwMiwgMjQ2LCA2MSwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMjQsIDk4LCAyMDksIDEyNiwgMzUsIDI0OCwgMjIxLCAyMDksIDEyNiwgMzUsIDIyOSwgMTk1LCAyMTIsIAotICAgIDM2LCAyMDksIDEyNiwgMzUsIDI0NSwgMTg1LCAyMDksIDEyNiwgMzUsIDI1MCwgNzcsIDIwOSwgMTI2LCAzNSwgMjE5LCAKLSAgICAyNTAsIDIwOSwgMTI2LCAzNSwgMjQ3LCAyMjEsIDIxOSwgMjExLCAyMDksIDEyNiwgMzUsIDI0NCwgNTcsIDIxOSwgMjQ1LCAKLSAgICAyNDMsIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE0NSwgMjA5LCAxMjYsIDM1LCAyMDIsIDIyNSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMzEsIDQwLCAyMDksIDEyNiwgMzUsIDIxOSwgNywgMjA5LCAxMjYsIDM1LCAyMTYsIDE1NywgMjA5LCAxMjYsIDM1LCAyNDUsIAotICAgIDE5NywgMjA5LCAxMjYsIDM1LCAyMzYsIDEyNywgMjQ5LCAyNSwgMjA5LCAxMjYsIDM1LCAyMDQsIDEwMywgMjA5LCAxMjYsIAotICAgIDM1LCAyMzksIDE4MSwgMjA5LCAxMjYsIDM1LCAyNTEsIDExMiwgMjA5LCAxMjYsIDM1LCAyMTYsIDExNCwgMjA5LCAxMjYsIAotICAgIDM1LCAyMTYsIDg5LCAyMDksIDEyNiwgMzUsIDI0MSwgMTc3LCAyMDksIDEyNiwgMzUsIDIzMCwgODUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjQ1LCAxOTIsIDIwOSwgMTI2LCAzNSwgMjQxLCA4MywgMjA5LCAxMjYsIDM1LCAyNDIsIDE1LCAyMDksIDEyNiwgMzUsIAotICAgIDI0NiwgMTg2LCAyMDksIDEyNiwgMzUsIDI0NCwgNjcsIDIwOSwgMTI2LCAzNSwgMjYsIDIxNiwgODgsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjE5LCAxNjAsIDIwOSwgMTI2LCAzNSwgMjI3LCAyMDgsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxNCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMjksIDgwLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE0LCAyMDksIDEyNiwgMzUsIDIxMSwgNDMsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjE3LCAxNjgsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjE2LCA5MCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMjcsIDI0NywgMjE5LCAyNDUsIDIyNCwgNzgsIDIwOSwgMTI2LCAzNSwgMjE2LCA4NiwgMjA5LCAxMjYsIDM1LCAyMzgsIAotICAgIDMzLCAyMDgsIDE3MywgMjI1LCAzLCAyMDksIDEyNiwgMzUsIDI0MSwgODUsIDIwOSwgMTI2LCAzNSwgMjExLCA1NiwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMzcsIDI0NSwgMjA5LCAxMjYsIDM1LCAyNDEsIDc2LCAyMDksIDEyNiwgMzUsIDIxOSwgNTAsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjE1LCAyNDIsIDIwOSwgMTI2LCAzNSwgMjM5LCAyMDcsIDIwOSwgMTI2LCAzNSwgMjA2LCA2NCwgMjE5LCAKLSAgICAyNDUsIDIwNCwgODQsIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMDIsIDIwOSwgMTI2LCAzNSwgMjI1LCAxOCwgMjA5LCAxMjYsIAotICAgIDM1LCAyNDAsIDI0NSwgMjA5LCAxMjYsIDM1LCAyMDYsIDIzNCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE4MiwgMjA5LCAxMjYsIAotICAgIDM1LCAyNDYsIDE2LCAyMjQsIDcsIDIwOSwgMTI2LCAzNSwgMjM3LCAyMjIsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTUsIDIzMSwgCi0gICAgNDksIDIwOSwgMTI2LCAzNSwgMjI1LCA3MywgMjA5LCAxMjYsIDM1LCAyNTEsIDEzMywgMjA5LCAxMjYsIDM1LCAyNDEsIAotICAgIDEwMSwgMjA5LCAxMjYsIDM1LCAyNDIsIDc0LCAyMDksIDEyNiwgMzUsIDIwNCwgODIsIDIwOSwgMTI2LCAzNSwgMjEyLCAKLSAgICAxMTUsIDIwOSwgMTI2LCAzNSwgMjMxLCAxNCwgMjA5LCAxMjYsIDM1LCAyNDQsIDI1LCAyMDksIDEyNiwgMzUsIDI0NCwgCi0gICAgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTc4LCAyMDksIDEyNiwgMzUsIDI0MCwgMjA5LCAyMDksIDEyNiwgMzUsIDIxMywgCi0gICAgMTA0LCAyMDksIDEyNiwgMzUsIDIxMSwgNjAsIDIwOSwgMTI2LCAzNSwgMjM3LCA5MCwgMjA5LCAxMjYsIDM1LCAyNDUsIAotICAgIDIyNiwgMjA5LCAxMjYsIDM1LCAyNDYsIDExLCAyMDksIDEyNiwgMzUsIDI0MCwgODcsIDIwOSwgMTI2LCAzNSwgMjUxLCA3NiwgCi0gICAgMjA5LCAxMjYsIDM1LCAyNDUsIDIyNSwgMjA5LCAxMjYsIDM1LCAyMjAsIDMyLCAyMDksIDkzLCAyMDYsIDQxLCAyMDksIAotICAgIDEyNiwgMzUsIDI0MywgMjA0LCAyMDksIDEyNiwgMzUsIDIyOCwgMTAxLCAyMDksIDEyNiwgMzUsIDIzOSwgMTUwLCAyNDUsIAotICAgIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTA1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTA4LCAKLSAgICAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTQ3LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgCi0gICAgMTQ5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTcwLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAKLSAgICAxNywgMTk1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjEzLCAxMTEsIDI0NSwgMTUzLCAyMTUsIDIxNywgCi0gICAgMjA2LCAyMzYsIDE3LCAxOTksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMjIsIDYzLCAyNDUsIDE1MywgCi0gICAgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTA1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTA4LCAyNDUsIAotICAgIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTQ3LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTQ5LCAKLSAgICAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTcwLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgCi0gICAgMTk1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjEzLCAxMTEsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAKLSAgICAxNDgsIDE3LCAxOTksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMjIsIDYzLCAxMywgMjYsIDYsIDYzLCAKLSAgICAxMywgMjYsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDYsIDI0NSwgNTEsIDEzLCAyNiwgNiwgCi0gICAgNzQsIDEzLCAyNiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgNiwgMjM5LCA3NSwgMTMsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAKLSAgICA2LCA3NSwgMTMsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIDI2LCA2LCAyMzAsIDU0LCAxMywgMjYsIDYsIDE1OSwgMTMsIDI2LCAKLSAgICA2LCAyMjYsIDE4NSwgMTMsIDI2LCA2LCAyMjMsIDE2MywgMTMsIDI2LCA2LCA3OCwgMTMsIDI2LCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDI2LCA2LCAyMTcsIDEzNCwgMTMsIDI2LCA2LCAxNDYsIDEzLCAyNiwgNiwgMTk0LCAxMywgMjYsIDYsIDIxMCwgNjksIDEzLCAKLSAgICAyNiwgNiwgNjgsIDEzLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgNiwgMjAzLCAxOTYsIAotICAgIDEzLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgNSwgNjMsIDEzLCAyNiwgNSwgMjQ5LCAKLSAgICAyNTUsIDEzLCAyNiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCA1LCA3NCwgMTMsIDI2LCA1LCAKLSAgICAyNDAsIDE3NCwgMTMsIDI2LCA1LCAyMzksIDc1LCAxMywgMjYsIDUsIDIzNywgMTcxLCAxMywgMjYsIDUsIDc1LCAxMywgMjYsIAotICAgIDUsIDIzMCwgMTg0LCAxMywgMjYsIDUsIDIzMCwgNTQsIDEzLCAyNiwgNSwgMTU5LCAxMywgMjYsIDUsIDIyNiwgMTg1LCAxMywgCi0gICAgMjYsIDUsIDIyMywgMTYzLCAxMywgMjYsIDUsIDc4LCAxMywgMjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDUsIDIxNywgMTM0LCAKLSAgICAxMywgMjYsIDUsIDE0NiwgMTMsIDI2LCA1LCAxOTQsIDEzLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDI2LCA1LCA2OCwgMTMsIAotICAgIDI2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCA1LCAKLSAgICAyMDMsIDEyNCwgMTMsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDM3LCA2LCA2MywgMTMsIDM3LCA2LCAyNDksIDI1NSwgMTMsIAotICAgIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDM3LCA2LCAyNDUsIDUxLCAxMywgMzcsIDYsIDc0LCAxMywgMzcsIDYsIDI0MCwgMTc0LCAKLSAgICAxMywgMzcsIDYsIDIzOSwgNzUsIDEzLCAzNywgNiwgMjM3LCAxNzEsIDEzLCAzNywgNiwgNzUsIDEzLCAzNywgNiwgMjMwLCAKLSAgICAxODQsIDEzLCAzNywgNiwgMjMwLCA1NCwgMTMsIDM3LCA2LCAxNTksIDEzLCAzNywgNiwgMjI2LCAxODUsIDEzLCAzNywgNiwgCi0gICAgMjIzLCAxNjMsIDEzLCAzNywgNiwgNzgsIDEzLCAzNywgNiwgMjE5LCAxODQsIDEzLCAzNywgNiwgMjE3LCAxMzQsIDEzLCAKLSAgICAzNywgNiwgMTQ2LCAxMywgMzcsIDYsIDE5NCwgMTMsIDM3LCA2LCAyMTAsIDY5LCAxMywgMzcsIDYsIDY4LCAxMywgMzcsIDYsIAotICAgIDIwNiwgMTY0LCAxMywgMzcsIDYsIDIwNCwgMTQ0LCAxMywgMzcsIDYsIDIwMywgMTk2LCAxMywgMzcsIDYsIDIwMywgMTI0LCAKLSAgICAxMywgMzcsIDYsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDYzLCAxMywgMzcsIDUsIDI0OSwgMjU1LCAxMywgMzcsIDUsIDI0NywgCi0gICAgMTI1LCAxMywgMzcsIDUsIDI0NSwgNTEsIDEzLCAzNywgNSwgNzQsIDEzLCAzNywgNSwgMjQwLCAxNzQsIDEzLCAzNywgNSwgCi0gICAgMjM5LCA3NSwgMTMsIDM3LCA1LCA3NSwgMTMsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDM3LCA1LCAyMzAsIDU0LCAxMywgMzcsIAotICAgIDUsIDE1OSwgMTMsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDM3LCA1LCA3OCwgMTMsIDM3LCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDM3LCA1LCAxNDYsIDEzLCAzNywgNSwgMTk0LCAxMywgMzcsIAotICAgIDUsIDIxMCwgNjksIDEzLCAzNywgNSwgNjgsIDEzLCAzNywgNSwgMjA2LCAxNjQsIDEzLCAzNywgNSwgMjA0LCAxNDQsIDEzLCAKLSAgICAzNywgNSwgMjAzLCAxOTYsIDEzLCAzNywgNSwgMjAzLCAxMjQsIDEzLCAzNywgNSwgMjAyLCAxNTksIDEzLCAyNiwgMzcsIDYsIAotICAgIDYzLCAxMywgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgMzcsIDYsIDI0NSwgCi0gICAgNTEsIDEzLCAyNiwgMzcsIDYsIDc0LCAxMywgMjYsIDM3LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCAzNywgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDYsIDc1LCAxMywgMjYsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNiwgMTU5LCAxMywgMjYsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAKLSAgICAzNywgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDYsIDc4LCAxMywgMjYsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDI2LCAzNywgCi0gICAgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDI2LCAzNywgNiwgMTk0LCAxMywgMjYsIDM3LCA2LCAyMTAsIAotICAgIDY5LCAxMywgMjYsIDM3LCA2LCA2OCwgMTMsIDI2LCAzNywgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMzcsIDYsIDIwMiwgCi0gICAgMTU5LCAxMywgMjYsIDM3LCA1LCA2MywgMTMsIDI2LCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAKLSAgICAxMywgMjYsIDM3LCA1LCAyNDUsIDUxLCAxMywgMjYsIDM3LCA1LCA3NCwgMTMsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCAyNiwgMzcsIDUsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA1LCA3NSwgMTMsIDI2LCAKLSAgICAzNywgNSwgMjMwLCAxODQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDUsIDE1OSwgMTMsIDI2LCAzNywgCi0gICAgNSwgMjI2LCAxODUsIDEzLCAyNiwgMzcsIDUsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA1LCA3OCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjE5LCAxODQsIDEzLCAyNiwgMzcsIDUsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA1LCAxNDYsIDEzLCAyNiwgMzcsIDUsIAotICAgIDE5NCwgMTMsIDI2LCAzNywgNSwgMjEwLCA2OSwgMTMsIDI2LCAzNywgNSwgNjgsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAKLSAgICAxMywgMjYsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDUsIDIwMywgCi0gICAgMTI0LCAxMywgMjYsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDEzMiwgNiwgNjMsIDEzLCAxMzIsIDYsIDI0NywgMTI1LCAxMywgCi0gICAgMTMyLCA2LCAyNDUsIDUxLCAxMywgMTMyLCA2LCAyMzksIDc1LCAxMywgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDEzMiwgNiwgCi0gICAgMjMwLCA1NCwgMTMsIDEzMiwgNiwgMjIzLCAxNjMsIDEzLCAxMzIsIDYsIDc4LCAxMywgMTMyLCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDEzMiwgNiwgMjE3LCAxMzQsIDEzLCAxMzIsIDYsIDE5NCwgMTMsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDEzMiwgNiwgNjgsIAotICAgIDEzLCAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDEzMiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAxMzIsIDYsIDIwMywgMTI0LCAxMywgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDEzMiwgNSwgNjMsIDEzLCAxMzIsIDUsIDI0OSwgCi0gICAgMjU1LCAxMywgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDEzMiwgNSwgMjQ1LCA1MSwgMTMsIDEzMiwgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICAxMzIsIDUsIDIzNywgMTcxLCAxMywgMTMyLCA1LCA3NSwgMTMsIDEzMiwgNSwgMjMwLCAxODQsIDEzLCAxMzIsIDUsIDIzMCwgCi0gICAgNTQsIDEzLCAxMzIsIDUsIDE1OSwgMTMsIDEzMiwgNSwgMjI2LCAxODUsIDEzLCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMTMyLCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDEzMiwgNSwgMjE3LCAxMzQsIDEzLCAxMzIsIDUsIDE0NiwgMTMsIDEzMiwgNSwgMTk0LCAxMywgCi0gICAgMTMyLCA1LCAyMTAsIDY5LCAxMywgMTMyLCA1LCA2OCwgMTMsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAxMzIsIDUsIDIwNCwgCi0gICAgMTQ0LCAxMywgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDEzMiwgNSwgMjAzLCAxMjQsIDEzLCAxMzIsIDUsIDIwMiwgMTU5LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgNjMsIDEzLCAyNiwgMTMyLCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxMzIsIDYsIDI0NywgMTI1LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCAxMzIsIDYsIDc0LCAxMywgMjYsIDEzMiwgNiwgMjQwLCAxNzQsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMzksIDc1LCAxMywgMjYsIDEzMiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTMyLCA2LCA3NSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDEzMiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxMzIsIDYsIDE1OSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIyNiwgMTg1LCAxMywgMjYsIDEzMiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTMyLCA2LCA3OCwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDEzMiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTMyLCA2LCAxNDYsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAxOTQsIDEzLCAyNiwgMTMyLCA2LCAyMTAsIDY5LCAxMywgMjYsIDEzMiwgNiwgNjgsIDEzLCAyNiwgCi0gICAgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDEzMiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAyNiwgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDEzMiwgNSwgNjMsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyNDksIDI1NSwgMTMsIDI2LCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMjYsIDEzMiwgNSwgMjQ1LCA1MSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDc0LCAxMywgMjYsIDEzMiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTMyLCA1LCAyMzksIDc1LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMTMyLCA1LCA3NSwgMTMsIDI2LCAxMzIsIDUsIDIzMCwgMTg0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjMwLCA1NCwgMTMsIDI2LCAxMzIsIDUsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDIyNiwgMTg1LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMTMyLCA1LCA3OCwgMTMsIDI2LCAxMzIsIDUsIDIxOSwgMTg0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMTMyLCA1LCAxNDYsIDEzLCAyNiwgMTMyLCA1LCAxOTQsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyMTAsIDY5LCAxMywgMjYsIDEzMiwgNSwgNjgsIDEzLCAyNiwgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIAotICAgIDI2LCAxMzIsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDEyNCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIwMiwgMTU5LCAxMywgMTY2LCA2LCA2MywgMTMsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAxNjYsIAotICAgIDYsIDI0NSwgNTEsIDEzLCAxNjYsIDYsIDc0LCAxMywgMTY2LCA2LCAyNDAsIDE3NCwgMTMsIDE2NiwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDE2NiwgNiwgMjMwLCAxODQsIDEzLCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAxNjYsIDYsIDE1OSwgMTMsIDE2NiwgNiwgCi0gICAgMjI2LCAxODUsIDEzLCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMTY2LCA2LCA3OCwgMTMsIDE2NiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAxNjYsIDYsIDIxNywgMTM0LCAxMywgMTY2LCA2LCAxOTQsIDEzLCAxNjYsIDYsIDIxMCwgNjksIDEzLCAxNjYsIDYsIDY4LCAKLSAgICAxMywgMTY2LCA2LCAyMDYsIDE2NCwgMTMsIDE2NiwgNiwgMjA0LCAxNDQsIDEzLCAxNjYsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMTY2LCA2LCAyMDMsIDEyNCwgMTMsIDE2NiwgNSwgNjMsIDEzLCAxNjYsIDUsIDI0OSwgMjU1LCAxMywgMTY2LCA1LCAyNDcsIAotICAgIDEyNSwgMTMsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDE2NiwgNSwgNzQsIDEzLCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMTY2LCAKLSAgICA1LCAyMzksIDc1LCAxMywgMTY2LCA1LCAyMzcsIDE3MSwgMTMsIDE2NiwgNSwgNzUsIDEzLCAxNjYsIDUsIDIzMCwgMTg0LCAKLSAgICAxMywgMTY2LCA1LCAyMzAsIDU0LCAxMywgMTY2LCA1LCAxNTksIDEzLCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMTY2LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDE2NiwgNSwgNzgsIDEzLCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMTY2LCA1LCAyMTcsIDEzNCwgMTMsIAotICAgIDE2NiwgNSwgMTQ2LCAxMywgMTY2LCA1LCAxOTQsIDEzLCAxNjYsIDUsIDIxMCwgNjksIDEzLCAxNjYsIDUsIDY4LCAxMywgCi0gICAgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDE2NiwgNSwgMjA0LCAxNDQsIDEzLCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMTY2LCA1LCAKLSAgICAyMDMsIDEyNCwgMTMsIDE2NiwgNSwgMjAyLCAxNTksIDEzLCAxNjksIDYsIDYzLCAxMywgMTY5LCA2LCAyNDksIDI1NSwgMTMsIAotICAgIDE2OSwgNiwgMjQ1LCA1MSwgMTMsIDE2OSwgNiwgNzQsIDEzLCAxNjksIDYsIDI0MCwgMTc0LCAxMywgMTY5LCA2LCAyMzksIAotICAgIDc1LCAxMywgMTY5LCA2LCA3NSwgMTMsIDE2OSwgNiwgMjMwLCAxODQsIDEzLCAxNjksIDYsIDIzMCwgNTQsIDEzLCAxNjksIAotICAgIDYsIDE1OSwgMTMsIDE2OSwgNiwgMjI2LCAxODUsIDEzLCAxNjksIDYsIDc4LCAxMywgMTY5LCA2LCAxOTQsIDEzLCAxNjksIAotICAgIDYsIDIxMCwgNjksIDEzLCAxNjksIDYsIDY4LCAxMywgMTY5LCA2LCAyMDYsIDE2NCwgMTMsIDE2OSwgNiwgMjA0LCAxNDQsIAotICAgIDEzLCAxNjksIDYsIDIwMywgMTk2LCAxMywgMTY5LCA2LCAyMDMsIDEyNCwgMTMsIDE2OSwgNSwgNjMsIDEzLCAxNjksIDUsIAotICAgIDI0OSwgMjU1LCAxMywgMTY5LCA1LCAyNDcsIDEyNSwgMTMsIDE2OSwgNSwgMjQ1LCA1MSwgMTMsIDE2OSwgNSwgNzQsIDEzLCAKLSAgICAxNjksIDUsIDI0MCwgMTc0LCAxMywgMTY5LCA1LCAyMzksIDc1LCAxMywgMTY5LCA1LCAyMzcsIDE3MSwgMTMsIDE2OSwgNSwgCi0gICAgNzUsIDEzLCAxNjksIDUsIDIzMCwgMTg0LCAxMywgMTY5LCA1LCAyMzAsIDU0LCAxMywgMTY5LCA1LCAxNTksIDEzLCAxNjksIAotICAgIDUsIDIyNiwgMTg1LCAxMywgMTY5LCA1LCAyMjMsIDE2MywgMTMsIDE2OSwgNSwgNzgsIDEzLCAxNjksIDUsIDIxOSwgMTg0LCAKLSAgICAxMywgMTY5LCA1LCAyMTcsIDEzNCwgMTMsIDE2OSwgNSwgMTQ2LCAxMywgMTY5LCA1LCAxOTQsIDEzLCAxNjksIDUsIDIxMCwgCi0gICAgNjksIDEzLCAxNjksIDUsIDY4LCAxMywgMTY5LCA1LCAyMDYsIDE2NCwgMTMsIDE2OSwgNSwgMjA0LCAxNDQsIDEzLCAxNjksIAotICAgIDUsIDIwMywgMTk2LCAxMywgMTY5LCA1LCAyMDMsIDEyNCwgMTMsIDE2OSwgNSwgMjAyLCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKLSAgICA2MywgMTMsIDI2LCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDE2NiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyNDUsIDUxLCAxMywgMjYsIDE2NiwgNiwgNzQsIDEzLCAyNiwgMTY2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIzOSwgNzUsIDEzLCAyNiwgMTY2LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxNjYsIDYsIDc1LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjMwLCAxODQsIDEzLCAyNiwgMTY2LCA2LCAyMzAsIDU0LCAxMywgMjYsIDE2NiwgNiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjI2LCAxODUsIDEzLCAyNiwgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxNjYsIDYsIDc4LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjE5LCAxODQsIDEzLCAyNiwgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxNjYsIDYsIDE0NiwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDE5NCwgMTMsIDI2LCAxNjYsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTY2LCA2LCA2OCwgMTMsIDI2LCAxNjYsIDYsIDIwNiwgCi0gICAgMTY0LCAxMywgMjYsIDE2NiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIwMywgMTI0LCAxMywgMjYsIDE2NiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTY2LCA1LCA2MywgMTMsIDI2LCAxNjYsIDUsIAotICAgIDI0OSwgMjU1LCAxMywgMjYsIDE2NiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTY2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDE2NiwgCi0gICAgNSwgNzQsIDEzLCAyNiwgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxNjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMzcsIDE3MSwgMTMsIDI2LCAxNjYsIDUsIDc1LCAxMywgMjYsIDE2NiwgNSwgMjMwLCAxODQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMzAsIDU0LCAxMywgMjYsIDE2NiwgNSwgMTU5LCAxMywgMjYsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDI2LCAxNjYsIDUsIDc4LCAxMywgMjYsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMTcsIDEzNCwgMTMsIDI2LCAxNjYsIDUsIDE0NiwgMTMsIDI2LCAxNjYsIDUsIDE5NCwgMTMsIDI2LCAxNjYsIDUsIDIxMCwgCi0gICAgNjksIDEzLCAyNiwgMTY2LCA1LCA2OCwgMTMsIDI2LCAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDE2NiwgNSwgMjA0LCAKLSAgICAxNDQsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTI0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjAyLCAxNTksIDEzLCA0MSwgNiwgNjMsIDEzLCA0MSwgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAKLSAgICA0MSwgNiwgMjQ1LCA1MSwgMTMsIDQxLCA2LCA3NCwgMTMsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDQxLCA2LCAyMzksIDc1LCAKLSAgICAxMywgNDEsIDYsIDIzNywgMTcxLCAxMywgNDEsIDYsIDc1LCAxMywgNDEsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDYsIDIzMCwgCi0gICAgNTQsIDEzLCA0MSwgNiwgMTU5LCAxMywgNDEsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDYsIDIyMywgMTYzLCAxMywgNDEsIDYsIAotICAgIDc4LCAxMywgNDEsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDYsIDIxNywgMTM0LCAxMywgNDEsIDYsIDE0NiwgMTMsIDQxLCA2LCAKLSAgICAxOTQsIDEzLCA0MSwgNiwgMjEwLCA2OSwgMTMsIDQxLCA2LCA2OCwgMTMsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDQxLCA2LCAKLSAgICAyMDQsIDE0NCwgMTMsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDQxLCA2LCAyMDIsIDE1OSwgCi0gICAgMTMsIDQxLCA1LCA2MywgMTMsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDQxLCA1LCAyNDcsIDEyNSwgMTMsIDQxLCA1LCAyNDUsIAotICAgIDUxLCAxMywgNDEsIDUsIDc0LCAxMywgNDEsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDUsIDIzOSwgNzUsIDEzLCA0MSwgNSwgCi0gICAgMjM3LCAxNzEsIDEzLCA0MSwgNSwgNzUsIDEzLCA0MSwgNSwgMjMwLCAxODQsIDEzLCA0MSwgNSwgMjMwLCA1NCwgMTMsIDQxLCAKLSAgICA1LCAxNTksIDEzLCA0MSwgNSwgMjI2LCAxODUsIDEzLCA0MSwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgNSwgNzgsIDEzLCA0MSwgCi0gICAgNSwgMjE5LCAxODQsIDEzLCA0MSwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgNSwgMTQ2LCAxMywgNDEsIDUsIDE5NCwgMTMsIDQxLCAKLSAgICA1LCAyMTAsIDY5LCAxMywgNDEsIDUsIDY4LCAxMywgNDEsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDUsIDIwNCwgMTQ0LCAxMywgCi0gICAgNDEsIDUsIDIwMywgMTk2LCAxMywgNDEsIDUsIDIwMywgMTI0LCAxMywgNDEsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCA2LCAKLSAgICA2MywgMTMsIDQxLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDYsIDI0NywgMTI1LCAxMywgNDEsIDI2LCA2LCAyNDUsIAotICAgIDUxLCAxMywgNDEsIDI2LCA2LCA3NCwgMTMsIDQxLCAyNiwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDYsIDIzOSwgNzUsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA2LCA3NSwgMTMsIDQxLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAKLSAgICA0MSwgMjYsIDYsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDYsIDE1OSwgMTMsIDQxLCAyNiwgNiwgMjI2LCAxODUsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA2LCA3OCwgMTMsIDQxLCAyNiwgNiwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIAotICAgIDYsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDYsIDE5NCwgMTMsIDQxLCAyNiwgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDQxLCAyNiwgNiwgNjgsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCA2LCAyMDIsIAotICAgIDE1OSwgMTMsIDQxLCAyNiwgNSwgNjMsIDEzLCA0MSwgMjYsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA1LCAyNDcsIDEyNSwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgNSwgNzQsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgNDEsIDI2LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNSwgNzUsIDEzLCA0MSwgCi0gICAgMjYsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA1LCAxNTksIDEzLCA0MSwgMjYsIAotICAgIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNSwgNzgsIDEzLCA0MSwgMjYsIDUsIAotICAgIDIxOSwgMTg0LCAxMywgNDEsIDI2LCA1LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNSwgMTQ2LCAxMywgNDEsIDI2LCA1LCAKLSAgICAxOTQsIDEzLCA0MSwgMjYsIDUsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDUsIDY4LCAxMywgNDEsIDI2LCA1LCAyMDYsIDE2NCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA1LCAyMDMsIAotICAgIDEyNCwgMTMsIDQxLCAyNiwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDYsIDYzLCAxMywgNDEsIDM3LCA2LCAyNDksIDI1NSwgCi0gICAgMTMsIDQxLCAzNywgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDYsIDI0NSwgNTEsIDEzLCA0MSwgMzcsIDYsIDc0LCAxMywgCi0gICAgNDEsIDM3LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNiwgMjM5LCA3NSwgMTMsIDQxLCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDc1LCAxMywgNDEsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgNiwgMjMwLCA1NCwgMTMsIDQxLCAKLSAgICAzNywgNiwgMTU5LCAxMywgNDEsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIAotICAgIDYsIDc4LCAxMywgNDEsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMzcsIDYsIAotICAgIDE0NiwgMTMsIDQxLCAzNywgNiwgMTk0LCAxMywgNDEsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDM3LCA2LCA2OCwgMTMsIAotICAgIDQxLCAzNywgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDM3LCA2LCAyMDMsIDE5NiwgCi0gICAgMTMsIDQxLCAzNywgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA1LCA2MywgMTMsIAotICAgIDQxLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA1LCAyNDUsIDUxLCAxMywgCi0gICAgNDEsIDM3LCA1LCA3NCwgMTMsIDQxLCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgCi0gICAgMzcsIDUsIDIzNywgMTcxLCAxMywgNDEsIDM3LCA1LCA3NSwgMTMsIDQxLCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIAotICAgIDUsIDIzMCwgNTQsIDEzLCA0MSwgMzcsIDUsIDE1OSwgMTMsIDQxLCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDUsIAotICAgIDIyMywgMTYzLCAxMywgNDEsIDM3LCA1LCA3OCwgMTMsIDQxLCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDUsIDIxNywgCi0gICAgMTM0LCAxMywgNDEsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMzcsIDUsIDE5NCwgMTMsIDQxLCAzNywgNSwgMjEwLCA2OSwgMTMsIAotICAgIDQxLCAzNywgNSwgNjgsIDEzLCA0MSwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAKLSAgICAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMzcsIDUsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDYzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDcsIAotICAgIDEyNSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDM3LCA2LCA3NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCAzNywgNiwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgCi0gICAgNTQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIyMywgMTYzLCAxMywgNDEsIDI2LCAzNywgNiwgNzgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDI2LCAzNywgNiwgMTQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMTk0LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDY4LCAxMywgNDEsIDI2LCAzNywgNiwgMjA2LCAKLSAgICAxNjQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDYzLCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCAzNywgNSwgNzUsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMTYzLCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgNzgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMTM0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMTQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMTk0LCAxMywgNDEsIDI2LCAzNywgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDY4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxMjQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDYzLCAxMywgMjI0LCA0MSwgNiwgMjQ5LCAKLSAgICAyNTUsIDEzLCAyMjQsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIDIyNCwgNDEsIDYsIDI0NSwgNTEsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICA3NCwgMTMsIDIyNCwgNDEsIDYsIDI0MCwgMTc0LCAxMywgMjI0LCA0MSwgNiwgMjM5LCA3NSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIzNywgMTcxLCAxMywgMjI0LCA0MSwgNiwgNzUsIDEzLCAyMjQsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIzMCwgNTQsIDEzLCAyMjQsIDQxLCA2LCAxNTksIDEzLCAyMjQsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIyMywgMTYzLCAxMywgMjI0LCA0MSwgNiwgNzgsIDEzLCAyMjQsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIxNywgMTM0LCAxMywgMjI0LCA0MSwgNiwgMTQ2LCAxMywgMjI0LCA0MSwgNiwgMTk0LCAxMywgMjI0LCA0MSwgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDIyNCwgNDEsIDYsIDY4LCAxMywgMjI0LCA0MSwgNiwgMjA2LCAxNjQsIDEzLCAyMjQsIDQxLCA2LCAyMDQsIAotICAgIDE0NCwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTk2LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxMjQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMDIsIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDYzLCAxMywgMjI0LCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAyNDcsIDEyNSwgMTMsIDIyNCwgNDEsIDUsIDI0NSwgNTEsIDEzLCAyMjQsIDQxLCA1LCA3NCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDI0MCwgMTc0LCAxMywgMjI0LCA0MSwgNSwgMjM5LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzNywgMTcxLCAxMywgMjI0LCA0MSwgCi0gICAgNSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgNTQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAxNTksIDEzLCAyMjQsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDIyNCwgNDEsIDUsIDIyMywgMTYzLCAxMywgMjI0LCA0MSwgNSwgCi0gICAgNzgsIDEzLCAyMjQsIDQxLCA1LCAyMTksIDE4NCwgMTMsIDIyNCwgNDEsIDUsIDIxNywgMTM0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMTQ2LCAxMywgMjI0LCA0MSwgNSwgMTk0LCAxMywgMjI0LCA0MSwgNSwgMjEwLCA2OSwgMTMsIDIyNCwgNDEsIDUsIDY4LCAKLSAgICAxMywgMjI0LCA0MSwgNSwgMjA2LCAxNjQsIDEzLCAyMjQsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIDIyNCwgNDEsIDUsIDIwMywgCi0gICAgMTk2LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAxMjQsIDEzLCAyMjQsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCAyNDMsIAotICAgIDg0LCA3NSwgMTMsIDM3LCA1LCAyNDMsIDg0LCAyMzAsIDE4NCwgMTMsIDI2LCA2LCAyNTEsIDIsIDEzLCAyNiwgNiwgMjQ4LCAKLSAgICAxMDYsIDEzLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCAyNiwgNiwgMjQ0LCAzNywgMTMsIDI2LCA2LCAyNDEsIDM3LCAxMywgMjYsIAotICAgIDYsIDIwMiwgODMsIDEzLCAyNiwgNiwgMjQwLCAyNDgsIDEzLCAyNiwgNiwgMjA5LCA3NCwgMTMsIDI2LCA2LCAyMzAsIDIzMCwgCi0gICAgMTMsIDI2LCA2LCAyMjksIDI0NywgMTMsIDI2LCA2LCAyMjgsIDI0LCAxMywgMjYsIDYsIDIyMywgMjQ2LCAxMywgMjYsIDYsIAotICAgIDIyMSwgODQsIDEzLCAyNiwgNiwgMjAzLCAxNzAsIDEzLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDI2LCA2LCAyMTgsIDE2NywgCi0gICAgMTMsIDI2LCA2LCAyMTYsIDU5LCAxMywgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIAotICAgIDYsIDIwOSwgMjA3LCAxMywgMjYsIDYsIDIwNiwgMjE2LCAxMywgMjYsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDYsIDI0NiwgCi0gICAgMTQyLCAxMywgMjYsIDYsIDIxNywgMjAyLCAxMywgMjYsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMjIzLCAxMDEsIDEzLCAyNiwgCi0gICAgNSwgMjUxLCAyLCAxMywgMjYsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDUsIDI0NCwgMzcsIAotICAgIDEzLCAyNiwgNSwgMjQxLCAzNywgMTMsIDI2LCA1LCAyMDIsIDgzLCAxMywgMjYsIDUsIDI0MCwgMjQ4LCAxMywgMjYsIDUsIAotICAgIDIwOSwgNzQsIDEzLCAyNiwgNSwgMjMwLCAyMzAsIDEzLCAyNiwgNSwgMjI5LCAyNDcsIDEzLCAyNiwgNSwgMjI4LCAyNCwgCi0gICAgMTMsIDI2LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCA1LCAyMjEsIDg0LCAxMywgMjYsIDUsIDIwMywgMTcwLCAxMywgMjYsIDUsIAotICAgIDIyMCwgMzQsIDEzLCAyNiwgNSwgMjE4LCAxNjcsIDEzLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDI2LCA1LCA0NiwgMjEyLCAKLSAgICAxNDQsIDEzLCAyNiwgNSwgMjEyLCAxNDQsIDEzLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCAyNiwgNSwgMjA2LCAyMTYsIDEzLCAKLSAgICAyNiwgNSwgMjE4LCAxOTIsIDEzLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgNSwgMjE3LCAyMDIsIDEzLCAyNiwgNSwgCi0gICAgMjIwLCAzNiwgMTMsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAyNDEsIDM4LCA5NywgMTMsIDI2LCAyMDksIDc1LCAKLSAgICA5NywgMTMsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDIxNiwgNjAsIDk3LCAxMywgCi0gICAgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDM3LCA2LCAyNTEsIDIsIDEzLCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAzNywgNiwgMjM4LCAKLSAgICAyMzUsIDEzLCAzNywgNiwgMjQ0LCAzNywgMTMsIDM3LCA2LCAyNDEsIDM3LCAxMywgMzcsIDYsIDIwMiwgODMsIDEzLCAzNywgCi0gICAgNiwgMjQwLCAyNDgsIDEzLCAzNywgNiwgMjA5LCA3NCwgMTMsIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDM3LCA2LCAyMjksIAotICAgIDI0NywgMTMsIDM3LCA2LCAyMjgsIDI0LCAxMywgMzcsIDYsIDIyMywgMjQ2LCAxMywgMzcsIDYsIDIyMSwgODQsIDEzLCAzNywgCi0gICAgNiwgMjAzLCAxNzAsIDEzLCAzNywgNiwgMjIwLCAzNCwgMTMsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDM3LCA2LCAyMTYsIDU5LCAKLSAgICAxMywgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMzcsIDYsIDIwOSwgMjA3LCAxMywgMzcsIAotICAgIDYsIDIwNiwgMjE2LCAxMywgMzcsIDYsIDIxOCwgMTkyLCAxMywgMzcsIDYsIDI0NiwgMTQyLCAxMywgMzcsIDYsIDIxNywgCi0gICAgMjAyLCAxMywgMzcsIDYsIDIyMCwgMzYsIDEzLCAzNywgMjIzLCAxMDEsIDEzLCAzNywgNSwgMjUxLCAyLCAxMywgMzcsIDUsIAotICAgIDI0OCwgMTA2LCAxMywgMzcsIDUsIDIzOCwgMjM1LCAxMywgMzcsIDUsIDI0NCwgMzcsIDEzLCAzNywgNSwgMjQxLCAzNywgCi0gICAgMTMsIDM3LCA1LCAyMDIsIDgzLCAxMywgMzcsIDUsIDI0MCwgMjQ4LCAxMywgMzcsIDUsIDIwOSwgNzQsIDEzLCAzNywgNSwgCi0gICAgMjMwLCAyMzAsIDEzLCAzNywgNSwgMjI5LCAyNDcsIDEzLCAzNywgNSwgMjI4LCAyNCwgMTMsIDM3LCA1LCAyMjMsIDI0NiwgCi0gICAgMTMsIDM3LCA1LCAyMjEsIDg0LCAxMywgMzcsIDUsIDIwMywgMTcwLCAxMywgMzcsIDUsIDIyMCwgMzQsIDEzLCAzNywgNSwgCi0gICAgMjE4LCAxNjcsIDEzLCAzNywgNSwgMjE2LCA1OSwgMTMsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAzNywgNSwgMjEyLCAKLSAgICAxNDQsIDEzLCAzNywgNSwgMjA5LCAyMDcsIDEzLCAzNywgNSwgMjA2LCAyMTYsIDEzLCAzNywgNSwgMjE4LCAxOTIsIDEzLCAKLSAgICAzNywgNSwgMjQ2LCAxNDIsIDEzLCAzNywgNSwgMjE3LCAyMDIsIDEzLCAzNywgNSwgMjIwLCAzNiwgMTMsIDM3LCAyMTksIAotICAgIDY5LCAyNDMsIDIwNSwgMTMsIDM3LCAyNDEsIDM4LCA5NywgMTMsIDM3LCAyMDksIDc1LCA5NywgMTMsIDM3LCAyMjksIDI0OCwgCi0gICAgOTcsIDEzLCAzNywgMjE4LCAxOTMsIDk3LCAxMywgMzcsIDIxNiwgNjAsIDk3LCAxMywgMzcsIDIxOCwgMTY4LCA5NywgMTMsIAotICAgIDI2LCAzNywgNiwgMjUxLCAyLCAxMywgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI0NCwgMzcsIDEzLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCAyNiwgMzcsIDYsIDIwMiwgODMsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgMjYsIDM3LCA2LCAyMzAsIDIzMCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjI5LCAyNDcsIDEzLCAyNiwgMzcsIDYsIDIyOCwgMjQsIDEzLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMjEsIDg0LCAxMywgMjYsIDM3LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjE4LCAxNjcsIDEzLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDYsIDIwNiwgCi0gICAgMjE2LCAxMywgMjYsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDYsIAotICAgIDIxNywgMjAyLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjUxLCAyLCAxMywgMjYsIDM3LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCAzNywgNSwgMjM4LCAyMzUsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI0NCwgMzcsIDEzLCAyNiwgMzcsIDUsIDI0MSwgMzcsIDEzLCAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI0MCwgMjQ4LCAxMywgMjYsIDM3LCA1LCAyMDksIDc0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjI5LCAyNDcsIDEzLCAyNiwgMzcsIDUsIDIyOCwgMjQsIDEzLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMjEsIDg0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjE4LCAxNjcsIDEzLCAyNiwgMzcsIDUsIDIxNiwgNTksIDEzLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDI2LCAKLSAgICAzNywgNSwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIAotICAgIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA1LCAyMTcsIDIwMiwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMzcsIDI0MSwgCi0gICAgMzgsIDk3LCAxMywgMjYsIDM3LCAyMDksIDc1LCA5NywgMTMsIDI2LCAzNywgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDM3LCAKLSAgICAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgMjYsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI1MSwgMiwgMTMsIDQxLCAyNiwgNiwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAotICAgIDI2LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCA2LCAyNDEsIDM3LCAxMywgNDEsIDI2LCA2LCAyMDIsIDgzLCAxMywgNDEsIAotICAgIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgNiwgMjMwLCAyMzAsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCA2LCAyMjgsIDI0LCAxMywgNDEsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzQsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCA2LCAyMTYsIDU5LCAxMywgNDEsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIAotICAgIDQxLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDYsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA2LCAyMDYsIDIxNiwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDYsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA2LCAyMTcsIAotICAgIDIwMiwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjIzLCAxMDEsIDEzLCA0MSwgMjYsIDUsIDI1MSwgMiwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDUsIDIzOCwgMjM1LCAxMywgNDEsIDI2LCA1LCAyNDQsIDM3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDEsIDM3LCAxMywgNDEsIDI2LCA1LCAyMDIsIDgzLCAxMywgNDEsIDI2LCA1LCAyNDAsIDI0OCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDUsIDIyOSwgMjQ3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCA1LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgNSwgMjIxLCA4NCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDUsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDUsIDIxOCwgMTY3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDUsIDIxMiwgCi0gICAgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNSwgMjA2LCAyMTYsIDEzLCA0MSwgMjYsIDUsIAotICAgIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNSwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIAotICAgIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAyNDEsIDM4LCA5NywgMTMsIAotICAgIDQxLCAyNiwgMjA5LCA3NSwgOTcsIDEzLCA0MSwgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMjE4LCAxOTMsIDk3LCAKLSAgICAxMywgNDEsIDI2LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMjE4LCAxNjgsIDk3LCAxMywgNDEsIDI2LCAzNywgNiwgCi0gICAgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAKLSAgICA4MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgCi0gICAgMzcsIDYsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjgsIDI0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxNjcsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCAzNywgNiwgMjA2LCAyMTYsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA1LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDUsIAotICAgIDIzOCwgMjM1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MSwgMzcsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIAotICAgIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgCi0gICAgMzcsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMSwgODQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjA2LCAyMTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NiwgMTQyLCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAzNywgCi0gICAgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDM3LCAyNDEsIDM4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIwOSwgNzUsIAotICAgIDk3LCAxMywgNDEsIDI2LCAzNywgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxOTMsIDk3LCAxMywgNDEsIAotICAgIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAyNiwgNiwgMjQzLCAxOTksIAotICAgIDEzLCAyNiwgNSwgMjQzLCAxOTksIDEzLCAyNiwgMTcsIDIwMiwgODQsIDEzLCAyNiwgMTcsIDEwNSwgMTMsIDI2LCAxNywgCi0gICAgMTA4LCAxMywgMjYsIDE3LCAxNDcsIDEzLCAyNiwgMTcsIDE0OSwgMTMsIDI2LCAxNywgMTcwLCAxMywgMjYsIDE3LCAxOTUsIAotICAgIDEzLCAyNiwgMTcsIDIxMywgMTExLCAxMywgMjYsIDE3LCAxOTksIDEzLCAyNiwgMTcsIDIyMiwgNjMsIDEzLCAxNjksIDE3LCAKLSAgICAyMDIsIDg0LCAxMywgMTY5LCAxNywgMTA1LCAxMywgMTY5LCAxNywgMTA4LCAxMywgMTY5LCAxNywgMTQ3LCAxMywgMTY5LCAKLSAgICAxNywgMTQ5LCAxMywgMTY5LCAxNywgMTcwLCAxMywgMTY5LCAxNywgMTk1LCAxMywgMTY5LCAxNywgMjEzLCAxMTEsIDEzLCAKLSAgICAxNjksIDE3LCAxOTksIDEzLCAxNjksIDE3LCAyMjIsIDYzLCAxMywgNDEsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDE3LCAxMDUsIAotICAgIDEzLCA0MSwgMTcsIDEwOCwgMTMsIDQxLCAxNywgMTQ3LCAxMywgNDEsIDE3LCAxNDksIDEzLCA0MSwgMTcsIDE3MCwgMTMsIAotICAgIDQxLCAxNywgMTk1LCAxMywgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAxNywgMTk5LCAxMywgNDEsIDE3LCAyMjIsIDYzLCAKLSAgICAxMywgNDEsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDQxLCAyNiwgMTcsIDEwNSwgMTMsIDQxLCAyNiwgMTcsIDEwOCwgMTMsIAotICAgIDQxLCAyNiwgMTcsIDE0NywgMTMsIDQxLCAyNiwgMTcsIDE0OSwgMTMsIDQxLCAyNiwgMTcsIDE3MCwgMTMsIDQxLCAyNiwgCi0gICAgMTcsIDE5NSwgMTMsIDQxLCAyNiwgMTcsIDIxMywgMTExLCAxMywgNDEsIDI2LCAxNywgMTk5LCAxMywgNDEsIDI2LCAxNywgCi0gICAgMjIyLCA2MywgMTMsIDIyNCwgNDEsIDE3LCAyMDIsIDg0LCAxMywgMjI0LCA0MSwgMTcsIDEwNSwgMTMsIDIyNCwgNDEsIDE3LCAKLSAgICAxMDgsIDEzLCAyMjQsIDQxLCAxNywgMTQ3LCAxMywgMjI0LCA0MSwgMTcsIDE0OSwgMTMsIDIyNCwgNDEsIDE3LCAxNzAsIAotICAgIDEzLCAyMjQsIDQxLCAxNywgMTk1LCAxMywgMjI0LCA0MSwgMTcsIDIxMywgMTExLCAxMywgMjI0LCA0MSwgMTcsIDE5OSwgCi0gICAgMTMsIDIyNCwgNDEsIDE3LCAyMjIsIDYzLCAyMSwgMTI4LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjAsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDExNiwgMjMxLCAzNSwgMjEsIDIzNywgMTA1LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIzMSwgMzUsIDIxLCAyMzcsIAotICAgIDEyMiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAyNDgsIDExNywgMjEsIDIzNywgMTIwLCAxMjIsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgCi0gICAgMTI4LCAxMjIsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDIyNywgCi0gICAgMCwgMjEsIDIzNywgMTIwLCAxMjIsIDIzNiwgMjM3LCAyMSwgMTI4LCAxMjIsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjAsIAotICAgIDEyMiwgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNiwgMTg4LCAKLSAgICAyMjksIDI4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM1LCAKLSAgICAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDcsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMDEsIAotICAgIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIAotICAgIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyNywgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAKLSAgICAxMjcsIDIxLCAxMjgsIDEwMSwgMjQ4LCAxMTgsIDExNSwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAyNDgsIDExOCwgMTE1LCAKLSAgICAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIwOSwgMjEsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIwOSwgMjEsIAotICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTEsIDUzLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTgsIAotICAgIDE0OCwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIAotICAgIDIzNiwgMjExLCAxODYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAyMzYsIAotICAgIDIzNiwgMTAxLCAxMTIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxMTIsIDIxMSwgMTg2LCAxNDgsIDIzOSwgCi0gICAgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDYsIDYwLCAKLSAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDExNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAyMzUsIDIxLCAKLSAgICAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMTAxLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMTIsIDE1NiwgMjQ1LCAyMDcsIDIxLCAxMjgsIAotICAgIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMTIsIDE1NiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMzYsIDExNSwgCi0gICAgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIAotICAgIDEwMSwgMjQ1LCAyMDgsIDIzNiwgMjM2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjgsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDI0NSwgMjA4LCAyNDUsIDk4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMDEsIDE0OCwgMjQ1LCA5OCwgMTIyLCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgOTgsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgCi0gICAgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjUwLCAyMTYsIDIzMSwgNTAsIAotICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCA0MywgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDE0OCwgMjQ1LCAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTEsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE1LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMjIsIAotICAgIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMjIsIDI0NSwgMTI3LCAyMSwgMTI4LCAKLSAgICAxMDEsIDE0OCwgMjUwLCAyMTYsIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMzYsIAotICAgIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDIzNiwgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgCi0gICAgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwOCwgMjExLCAKLSAgICAxOTMsIDIxLCAyMzcsIDExOCwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDEyOCwgMjM5LCAxNDcsIDIzOSwgCi0gICAgMjU0LCAyNDUsIDIwOCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEwOSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIAotICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAKLSAgICAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyNDgsIDExNywgMjEsIDIzNywgCi0gICAgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIAotICAgIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgCi0gICAgMjExLCAxODUsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAKLSAgICAxMDksIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgMTA1LCAyMzksIDIzMywgMjM5LCAKLSAgICAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM1LCAyMSwgCi0gICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKLSAgICAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM2LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgCi0gICAgMTEwLCAyMSwgMjM3LCAxMTEsIDI0OCwgMTA0LCAyMTksIDEzNSwgMjQwLCA5NCwgMjEsIDIzNywgMTExLCAyMzcsIDQ1LCAKLSAgICAyMSwgMjM3LCAxMTEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIAotICAgIDIzNywgMTExLCAxNDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExMSwgMjExLCAKLSAgICAxOTQsIDEyMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTcsIDIxLCAyMzcsIDExMSwgCi0gICAgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAKLSAgICAyMTIsIDE1NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDIyNywgODUsIDIxLCAyMzcsIDExNywgMjEsIAotICAgIDIzNywgMTE4LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTgsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTgsIAotICAgIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDEwNywgMjQ1LCA5NCwgMjEsIDIzNywgMTA2LCAyMSwgMjM3LCAxMTYsIDIyMCwgOCwgCi0gICAgMjEsIDIzNywgMTE1LCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE2LCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMjM3LCAxMTYsIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMjIxLCAxOTIsIDIwOSwgCi0gICAgMjEsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTYsIDE0OCwgMjM5LCAxNTEsIDIxLCAKLSAgICAyMzcsIDExNCwgMjIwLCA4LCAyMSwgMjM3LCAxMTMsIDIxLCAyMzcsIDExOSwgMjEsIDIzNywgMTA0LCAyMSwgMjM3LCAxMDUsIAotICAgIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwNSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNSwgMTQ4LCAyMzksIAotICAgIDE1MSwgMjEsIDIzNywgMTA5LCAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAKLSAgICAxMDgsIDIxLCAyMzcsIDEwOSwgMjEyLCAzNiwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAotICAgIDEwOSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA5LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIAotICAgIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDE0OCwgMjEyLCAxNTYsIDIwOCwgMTI3LCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMDksIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMSwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAKLSAgICAyNTIsIDIxLCAyMzcsIDEyMiwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDIyNywgODUsIDIxLCAxMjgsIAotICAgIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAKLSAgICAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIDEyOCwgMjI3LCA4NiwgMjQyLCA3MCwgMjEsIAotICAgIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTUsIDI0OCwgMjExLCA1MiwgMjEsIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTUsIDI0OCwgCi0gICAgMjQ1LCA4NSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTksIDIyMCwgMjQ2LCA2MCwgMjEsIDEyOCwgMjI3LCA4NiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDIyNywgODYsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIDIyNywgODYsIAotICAgIDIwNiwgMjI0LCAyMSwgMjM3LCAxMDUsIDIyNywgODYsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAyMjcsIDg2LCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDIyNywgODYsIDIwOCwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIAotICAgIDIyNywgODYsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAKLSAgICAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIAotICAgIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMjAsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTIyLCAKLSAgICAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgCi0gICAgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAyMTUsIDI1MiwgMjEsIAotICAgIDIzNywgMTIyLCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgCi0gICAgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDI0MiwgNzAsIDIxLCAKLSAgICAyMzcsIDEwOSwgMjE1LCAyNTMsIDEyMSwgMTIyLCAxNDgsIDIzNiwgMTE2LCAyMjQsIDE0OCwgMjEsIDIzNywgMTIyLCAyMTUsIAotICAgIDI1MywgMTIxLCAxMDEsIDE0OCwgMTIyLCAyNDUsIDEzMCwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwNiwgMjI0LCAyMSwgMTI4LCAKLSAgICAyMTUsIDI1MywgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIAotICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDUsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDIxNSwgCi0gICAgMjUzLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI0LCAxNDgsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDI0NSwgCi0gICAgMjA3LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyMTYsIDE4OCwgMjI5LCAyOCwgMjEsIDEyOCwgMjE1LCAyNTMsIDIzMSwgCi0gICAgMzUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDksIDIxLCAyMSwgMjM3LCAxMDcsIDIxNSwgMjUzLCAyMDksIDIxLCAyMSwgMTI4LCAKLSAgICAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAotICAgIDExNCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjIwLCAzMSwgMjEsIDIzNywgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAKLSAgICAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIwNiwgMjQ3LCAyMSwgMjM3LCAxMTYsIDEyMiwgMjE1LCAyNTMsIDIyNywgCi0gICAgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAxMjIsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMTI4LCAxMDEsIAotICAgIDI0MiwgNzAsIDIxLCAyMzcsIDEwOSwgMjI0LCAxNDgsIDIxLCAxMjgsIDEwMSwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgCi0gICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMTAxLCAxMTIsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAyMzcsIDEwNywgMTAxLCAyMDksIDIxLCAyMSwgMTI4LCAxMDEsIDE0OCwgMjI3LCA4NSwgMjEsIAotICAgIDEyOCwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEwMSwgCi0gICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDExNCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjIwLCAzMSwgMjEsIAotICAgIDIzNywgMTE2LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIAotICAgIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIAotICAgIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKLSAgICAxMjAsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTgsIDEwMSwgMjE1LCAyNTMsIDIyNywgCi0gICAgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTIsIDE1NSwgCi0gICAgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgCi0gICAgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIzMSwgNDksIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDEwOSwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIAotICAgIDI0MywgMjI3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyMTIsIDE1NiwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxMjIsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDI0NywgMjUxLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAKLSAgICAxMjIsIDIzNiwgMjM3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAKLSAgICAxNDgsIDIzOSwgMTUyLCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMTEzLCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjQ1LCA5NCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMjM3LCAxMTgsIDEyMiwgMTQ4LCAKLSAgICAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgODgsIDE0OCwgMjA2LCAyNDcsIDIxLCAxMjgsIAotICAgIDEyMiwgMTQ4LCAyNDYsIDYxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAxMjIsIDE0OCwgCi0gICAgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyOCwgNywgCi0gICAgMjEsIDIzNywgMTA5LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMzYsIDIxLCAyMzcsIAotICAgIDEyMiwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTQ4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIAotICAgIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMTQ4LCAyMzcsIDQ1LCAyMSwgMTI4LCAxNDgsIDIxMiwgCi0gICAgMTU2LCAyNDMsIDIyNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgMjQ1LCAyMDcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIAotICAgIDI0OCwgMTE3LCAyMSwgMTI4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDIyNCwgMTQ4LCAKLSAgICAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NSwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIwLCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAxMTUsIDEyMCwgCi0gICAgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyNiwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIAotICAgIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAxMTUsIDIzOSwgMTQ3LCAyMTYsIDE4OCwgMjI5LCAyOCwgMjEsIAotICAgIDIzNywgMTEyLCAyMSwgMTI4LCAyMzcsIDQ1LCAyMSwgMjA4LCAxMjksIDIxMiwgMTE5LCAyMSwgMjA4LCAxMjksIDIyMywgCi0gICAgMjI1LCAyMSwgMjA4LCAxMjksIDI0OCwgMTAzLCAyMSwgMjM4LCAyLCAyMTIsIDExOSwgMjEsIDIzOCwgMiwgMjIzLCAyMjUsIAotICAgIDIxLCAyMzgsIDIsIDI0OCwgMTAzLCAyMSwgMjExLCAzNywgMjEyLCAxMTksIDIxLCAyMTEsIDM3LCAyMjMsIDIyNSwgMjEsIAotICAgIDIxMSwgMzcsIDI0OCwgMTAzLCAyMSwgMjQ3LCAyMDEsIDIxMiwgMTE5LCAyMSwgMjQ3LCAyMDEsIDIyMywgMjI1LCAyMSwgCi0gICAgMjQ3LCAyMDEsIDI0OCwgMTAzLCAyMSwgMjE1LCAxNDMsIDIxMiwgMTE5LCAyMSwgMjE1LCAxNDMsIDIyMywgMjI1LCAyMSwgCi0gICAgMjE1LCAxNDMsIDI0OCwgMTAzLCAyMSwgMjEwLCAxODksIDIxMCwgMTAyLCAyMSwgMjEwLCAxODksIDI0OCwgMTAzLCAyMSwgCi0gICAgMjExLCAxNzMsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMTEsIDE3MywgNSwgMjEyLCAxMTksIDIxLCAyMTEsIDE3MywgMjI4LCAKLSAgICA4LCAyMjMsIDIyNSwgMjEsIDIxMSwgMTczLCA1LCAyMjMsIDIyNSwgMjEsIDIxMSwgMTczLCAyMTMsIDEyNiwgMjEsIDIzOSwgCi0gICAgMjA4LCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjM5LCAyMDgsIDUsIDIxMiwgMTE5LCAyMSwgMjM5LCAyMDgsIDIyOCwgOCwgCi0gICAgMjIzLCAyMjUsIDIxLCAyMzksIDIwOCwgNSwgMjIzLCAyMjUsIDIxLCAyMzksIDIwOCwgMjEzLCAxMjYsIDIxLCAyMTEsIAotICAgIDE3MywgMjM5LCAyMDgsIDI1MCwgMjUyLCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIAotICAgIDEyMSwgMjEyLCAzNiwgMjEsIDIyNCwgMCwgMTEyLCAyMTMsIDEyNiwgMjEsIDIyNCwgMCwgMTIxLCAyMTMsIDEyNiwgMjEsIAotICAgIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMCwgMjEyLCAxNTYsIDIwOCwgMTczLCAyMTIsIDE1NiwgMjE0LCAxOTAsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQwLCAzLCAyNDUsIDE5NywgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDUsIDE5NywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgCi0gICAgMjExLCA1MywgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIAotICAgIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNSwgMjEsIAotICAgIDIyMywgMjU1LCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyMTEsIDUyLCAyMSwgCi0gICAgMjIzLCAyNTUsIDUyLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDI1MCwgMjUyLCAyMSwgMjIzLCAKLSAgICAyNTUsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0NSwgMTMwLCAyMSwgMjIzLCAKLSAgICAyNTUsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIAotICAgIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjUwLCAyNTIsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjUwLCAyNTMsIDIwMywgCi0gICAgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgCi0gICAgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIxMiwgMzYsIAotICAgIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI4LCA3LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgMTY2LCAyMTUsIDE5NiwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDYsIDE2OSwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgOTgsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjMsIDI1NSwgOTgsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCA5OCwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIAotICAgIDIwMiwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIAotICAgIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyNSwgOSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIAotICAgIDk5LCAyMTUsIDE5NCwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxNSwgCi0gICAgMTk1LCAyMTIsIDExOSwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIAotICAgIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjEzLCA3MSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjEyLCAKLSAgICAxMTksIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgCi0gICAgMjExLCAyMDIsIDIwOCwgNjksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIAotICAgIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAKLSAgICAyMjQsIDIsIDIwOCwgMTIzLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAyLCAyMDgsIAotICAgIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyMDgsIDEyMywgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgCi0gICAgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIAotICAgIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAKLSAgICAxMDQsIDIwOCwgMTIzLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgCi0gICAgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA1LCAKLSAgICAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIAotICAgIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgCi0gICAgNTMsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIAotICAgIDIxMSwgNTIsIDIxLCAyMjQsIDEsIDUyLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MiwgCi0gICAgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0NSwgMTMwLCAyMSwgCi0gICAgMjI0LCAxLCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIAotICAgIDIxMSwgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjUwLCAyNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjUwLCAKLSAgICAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ4LCAxMjAsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjI4LCA3LCAyMSwgMjI0LCAKLSAgICAxLCAyNDYsIDE2OCwgMjEsIDIyNCwgMSwgOTgsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDk4LCAyMjUsIDksIDIxLCAyMjQsIDEsIAotICAgIDk4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyNSwgOSwgCi0gICAgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAKLSAgICAyMTksIDMwLCAyMjUsIDksIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgCi0gICAgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIDI1MCwgCi0gICAgMjUyLCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjQyLCA3OCwgCi0gICAgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDEwMCwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDUsIDg4LCAyMTcsIDU2LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyNSwgOSwgMjEsIAotICAgIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCAKLSAgICA1LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgCi0gICAgMTM2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAotICAgIDg4LCAyMzcsIDEzNiwgMjI4LCA1LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIxMiwgMzYsIAotICAgIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIAotICAgIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyOCwgNywgCi0gICAgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIyNSwgOSwgMjEsIDIyMywgCi0gICAgMjU1LCAyMjcsIDE1LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgNSwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAKLSAgICAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI1LCAKLSAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjQ1LCA4OCwgMjA4LCA3MCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjUsIAotICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCi0gICAgODgsIDIwOSwgODQsIDIxMSwgNTIsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4NiwgMjQ1LCAxMzEsIDIxMiwgMzYsIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCA4NiwgMjQ1LCAxMzEsIDIyNSwgOSwgMjEsIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIxNSwgMTk0LCAKLSAgICAyNDIsIDc4LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjU0LCAyMSwgMjIzLCAyNTUsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAKLSAgICAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIAotICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDIxMiwgCi0gICAgMTIwLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgNTIsIDIzNiwgMjI5LCAyMzksIDExOSwgCi0gICAgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgODgsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAKLSAgICAxNDksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyMTIsIDEyMCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAKLSAgICAxOTQsIDUyLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyNDYsIDE0OSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyNDMsIDIyOCwgMjE5LCA1MiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMjgsIAotICAgIDcsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgCi0gICAgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgCi0gICAgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAKLSAgICAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgCi0gICAgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIAotICAgIDIyNywgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMTIsIAotICAgIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAKLSAgICAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAKLSAgICAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgCi0gICAgMjEsIDIxNSwgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgCi0gICAgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIyNCwgMSwgMjQ1LCAKLSAgICA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAotICAgIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAKLSAgICAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAKLSAgICAyMjksIDIzOSwgMjA1LCAyMDgsIDcwLCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAKLSAgICAyMDUsIDIwOCwgNzAsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCAKLSAgICA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDIxMiwgMTE5LCAKLSAgICAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIyNywgMTUsIAotICAgIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAKLSAgICAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA3LCAyMSwgMjE1LCAKLSAgICAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAyMzksIDIwNCwgCi0gICAgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMTIsIDM2LCAKLSAgICAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyOCwgNywgMjEsIDIyNCwgMSwgCi0gICAgMjQ1LCA4OCwgMjI4LCA1LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyNDUsIDIzNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjEyLCAyNCwgMjEsIDIyNCwgCi0gICAgMSwgMjA0LCA3NiwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjI4LCA3LCAyMSwgMjE1LCAxOTUsIDIxMiwgMTE5LCAKLSAgICAyMSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTIsIDIxLCAyMjQsIDEsIDIxMywgNzIsIDIxOSwgCi0gICAgODEsIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAKLSAgICAyNDYsIDYyLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjQyLCA3OCwgCi0gICAgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIAotICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAKLSAgICAyMjksIDIwNCwgMTAwLCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgCi0gICAgMTAwLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAKLSAgICAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyMTIsIDExOSwgMjEsIAotICAgIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAKLSAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjEyLCAxMTksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgCi0gICAgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAyMjksIDIwNCwgMTAwLCAKLSAgICAyNDIsIDc4LCAyMSwgMjQyLCA0LCAyNTAsIDk1LCAyMTIsIDM2LCAyMSwgMjQyLCA0LCAyNTAsIDk1LCAyMjgsIDcsIDIxLCAKLSAgICAyNDIsIDQsIDI0MCwgNzQsIDIxLCAyNDIsIDQsIDIxMiwgMzksIDIxLCAyNDIsIDQsIDIwOSwgMTQ1LCAyMSwgMjQyLCA0LCAKLSAgICAyMTYsIDExNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjUsIDIxLCAyNDIsIDQsIDIxMiwgMTI2LCAyNTAsIDI1MiwgMjEsIDI0MiwgCi0gICAgNCwgMjQwLCAyMjEsIDIxOSwgMjIxLCAyMDgsIDIyMSwgMjEsIDI0MiwgNCwgMjM4LCAxMiwgMjEsIDIzNywgNjQsIDIxLCAKLSAgICAyMzcsIDY1LCAyMTYsIDEsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjExLCA1MiwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAKLSAgICAyMDgsIDIyNCwgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjExLCA1MiwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyNDUsIDg3LCAKLSAgICAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyNDUsIDg3LCAyMSwgMjM3LCA2NSwgMjI0LCA0LCAyNDYsIDYxLCAyMSwgMjQwLCAxMDMsIAotICAgIDI0MywgMTY2LCAyMTgsIDM0LCAyMjEsIDE2OCwgMjM5LCAxNTIsIDIwOCwgMjIyLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAKLSAgICAyMTgsIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMjQyLCA3MCwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgMjE4LCAKLSAgICAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDEyMSwgMjA4LCAyMjIsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjA2LCAKLSAgICAyMjQsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjIyLCAyMTUsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjQyLCA3MCwgMjEsIAotICAgIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIDIxNiwgMjQyLCA3MCwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMjEsIDIyMiwgCi0gICAgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDExMiwgMjIyLCAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAKLSAgICAyMTYsIDIwNiwgMjI0LCAyMSwgMjM5LCAxNjQsIDIyMiwgMjE1LCAyMSwgMjM5LCAxNjQsIDI0NSwgMTk3LCAyMSwgMjM5LCAKLSAgICAxNjQsIDIwMywgMjI0LCAyMSwgMjQwLCAxODUsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMTEsIDE3MiwgMjEsIDI0MCwgCi0gICAgMTg1LCAyNDYsIDE1LCAyMSwgMjQwLCAxOTIsIDI0OCwgMzQsIDIxMiwgMTE5LCAyMSwgMjQwLCAxOTIsIDI0OCwgMzQsIAotICAgIDIyMywgMjI1LCAyMSwgMjQwLCAxODUsIDE2MiwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIwNCwgMjcsIDIyMCwgOCwgMjEsIAotICAgIDI0MCwgMTg1LCAxNjIsIDI0NiwgMTUsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNSwgMjI0LCAzLCAyMSwgMjQwLCAxOTIsIDIwNCwgCi0gICAgOSwgMjEsIDI0MCwgMTg2LCAyMDYsIDIyNCwgMjEsIDI0MCwgMTg2LCAyNDIsIDcwLCAyMSwgMjQwLCAxODYsIDIzOSwgMTkxLCAKLSAgICAyMSwgMjQwLCAxODgsIDIxMSwgNTIsIDIxLCAyNDAsIDE4OCwgMjExLCA1MywgMjQyLCA3OCwgMjEsIDI0MCwgMTg4LCAyMTEsIAotICAgIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAKLSAgICAyNDAsIDE4OSwgMjExLCA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OCwgMjQ1LCA4NSwgMjEsIDI0MCwgMTg5LCAyNDUsIAotICAgIDg1LCAyMSwgMjQwLCAxODgsIDI0NiwgNTYsIDIxLCAyNDYsIDE2NCwgMjE3LCAxODIsIDIxLCAyNDYsIDE2NCwgMjIyLCAKLSAgICAyMTUsIDIxLCAyNDYsIDE2NCwgMjEwLCAyMzQsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIzNiwgMjQ0LCAyMSwgMjA5LCAKLSAgICAxNDYsIDI0NiwgMTY0LCAyMjQsIDE0OCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjI3LCAwLCAyMSwgMjQxLCAxODEsIAotICAgIDIxLCAyMjEsIDE2OCwgMjIyLCAyMTUsIDIxLCAyMjEsIDE2OCwgMjQ1LCAxOTcsIDIxLCAyMjEsIDE2OCwgMjAzLCAyMjIsIAotICAgIDIxLCAyMjEsIDE2OCwgMjA0LCAyMiwgMjEsIDI1MSwgNTUsIDI0OCwgMjcsIDIxOSwgMjExLCAyMSwgMjUxLCA1NSwgMjEwLCAKLSAgICAyMzMsIDIzMSwgNDksIDIxLCAyNTEsIDU1LCAyNDgsIDI5LCA1LCAyMTUsIDE5MywgMjEsIDI1MSwgNTUsIDIxMCwgMjM1LCAKLSAgICA1LCAyMTUsIDE5MywgMjEsIDI0NywgMjE2LCAyMzEsIDIyLCAyMSwgMjQ3LCAyMTYsIDI0MCwgMjEwLCAyMSwgMjI0LCA4LCAKLSAgICAyNDYsIDE2LCAyMjIsIDIxNSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIAotICAgIDI0NSwgMTk3LCAyMSwgMjI0LCA4LCAyMTIsIDMxLCAyMSwgMjI0LCA4LCAyMTIsIDMyLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgCi0gICAgMjEyLCAzMiwgMjIwLCA4LCAyMSwgMjI0LCA4LCAyMzksIDExNSwgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIwMywgMjI0LCAKLSAgICAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjIwLCA4LCAyMSwgMjI0LCA4LCAxNzEsIDI0NiwgNjEsIDIxLCAyMjQsIDgsIDE3MSwgCi0gICAgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDE3MSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDQsIDIxLCAyMjQsIAotICAgIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDU5LCAyMSwgMjI0LCAKLSAgICA4LCAxNzEsIDIxNiwgMTQzLCAyMSwgMjI0LCA4LCAxNzEsIDIxNiwgMTQ0LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAKLSAgICAyMTYsIDE0NCwgMjAzLCA1OSwgMjEsIDIyNCwgOCwgMjI5LCA2NiwgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjM5LCAxNTEsIAotICAgIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAyMDksIDE0NSwgMjEsIDIyNCwgOCwgMjA5LCAKLSAgICAxNDYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyMDksIDE0NiwgMjEwLCAyMzQsIDIxLCAyMjcsIDk5LCAyMTcsIDIzOSwgCi0gICAgMjA4LCAxNjksIDIxLCAyMjcsIDEwMSwgMjI2LCAyNTEsIDExNSwgMjA2LCAyMjAsIDIxLCAyMjcsIDEwMSwgMjA2LCAyMjEsIAotICAgIDExNSwgMjI2LCAyNTAsIDIxLCAyMjQsIDgsIDI0NSwgMTY0LCAyMSwgMjI0LCA4LCAyMDMsIDIyMywgMjEyLCAxMTksIDIxLCAKLSAgICAyMjQsIDgsIDIwMywgMjIzLCAyNDIsIDc4LCAyMSwgMjA4LCAxNTEsIDIxMSwgNzIsIDIxOSwgMjEyLCAyNDAsIDc2LCAyMSwgCi0gICAgMjA4LCAxNTEsIDIyNywgMTQ0LCAyMjcsIDk4LCAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyNDgsIDEwNCwgMjI3LCA5OCwgCi0gICAgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjA4LCAxMjcsIDIzMSwgNywgMjI0LCA3LCAyMSwgMjA4LCAxNTEsIDIzMSwgNywgCi0gICAgMjI0LCA4LCAyMTYsIDExNSwgMjEsIDIwOCwgMTUxLCAyMjMsIDI1NCwgMjUxLCA3OSwgMjQ2LCAxNjUsIDIxLCAyMDgsIAotICAgIDE1MSwgMjQ2LCAyMTgsIDIxMSwgNzIsIDIxOSwgMjExLCAyMSwgMjA4LCAxNTEsIDI0NiwgMjE4LCAyMzEsIDcsIDIyNCwgNywgCi0gICAgMjEsIDIwOSwgMTcyLCAyMSwgMjA5LCAxNzMsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMDgsIDE1MCwgMjEsIAotICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMDgsIDE1MSwgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTgsIDIxLCAKLSAgICAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OSwgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDI0OCwgNTAsIDIyNywgOTgsIDIxLCAKLSAgICAyMjMsIDI1NSwgMjMwLCAxNjUsIDIxLCAyMjQsIDEsIDIzMCwgMTY1LCAyMSwgMjIyLCAyMzcsIDIxLCAyMzcsIDE0NSwgMjEsIAotICAgIDI0MCwgMjEzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTEsIDIwMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjE4LCAKLSAgICAzMywgMjEsIDIwNCwgOTgsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjI0LCA2LCAyMSwgMjM5LCAyMDMsIDIxMiwgMjExLCAyMzYsIAotICAgIDIzNCwgMjI0LCA2LCAyMSwgMjEyLCAyMTEsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjA0LCAxMDQsIDIxLCAyMDgsIDEzNCwgCi0gICAgMjExLCA1MywgMjExLCA0MSwgMjEsIDIwOCwgMTM0LCAyNDUsIDg2LCAyNDgsIDEyMCwgMjEsIDIwOCwgMTM1LCAyMDcsIAotICAgIDEzNywgMjEsIDIwNiwgMjIxLCAyNDgsIDE4LCAyMDgsIDIyMywgMjM5LCAxMjAsIDIzNiwgMjM0LCAyMzAsIDk1LCAyMSwgCi0gICAgMjI3LCAxMjYsIDI0NSwgMjM4LCAyMSwgMjI3LCAxMjYsIDIyNywgMTk1LCAyMSwgMjI3LCAxMjYsIDIyNywgMTk0LCAyMSwgCi0gICAgMjI3LCAxMjYsIDIyNywgMTkzLCAyMSwgMjI3LCAxMjYsIDIyNywgMTkyLCAyMSwgMjI3LCAxMjYsIDIyNywgMTkxLCAyMSwgCi0gICAgMjI3LCAxMjYsIDIyNywgMTkwLCAyMSwgMjI3LCAxMjYsIDIyNywgMTg5LCAyMSwgMjQwLCAyLCAyMSwgMjI3LCA0NSwgMjExLCAKLSAgICAyMjgsIDIxLCAyMjcsIDQ2LCAyMTEsIDIyOCwgMjEsIDIyNywgNDcsIDIzNywgNDEsIDIxLCAyMjcsIDQ3LCAyMDQsIDIzLCAKLSAgICAyMSwgMjI3LCA0NywgMjQ0LCAyNCwgMjEsIDIyNywgNDcsIDIzNywgNjUsIDIyMiwgMjM3LCAyMSwgMjI3LCA0NywgMjA4LCAKLSAgICAxMzYsIDIxLCAyMjcsIDQ3LCAyMjcsIDEyNSwgMjQzLCAxOTgsIDIxLCAyNDUsIDIzMywgMjEsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAyMSwgMjEzLCAxNDMsIDIxLCAyNDUsIDI0MiwgMjEsIDIxOSwgNzYsIDIxLCAyNDAsIDEwLCAyMjQsIDY2LCAyMSwgCi0gICAgMjQwLCAxMCwgMjI0LCA2NSwgMjEsIDI0MCwgMTAsIDIyNCwgNjQsIDIxLCAyNDAsIDEwLCAyMjQsIDYzLCAyMSwgMjQwLCAKLSAgICAxMCwgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY2LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjUsIDIxLCAyMTUsIDE5NywgCi0gICAgMjI0LCA2NCwgMjEsIDIxNSwgMTk3LCAyMjQsIDYzLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCAKLSAgICA2MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDYwLCAyMSwgMjE1LCAxOTcsIDIyNCwgNTksIDIxLCAyMTUsIDE5NywgMjI0LCA3MywgCi0gICAgMjEsIDIxNSwgMTk3LCAyMjQsIDcyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzEsIDIxLCAyMTUsIDE5NywgMjI0LCA3MCwgMjEsIAotICAgIDIxNSwgMTk3LCAyMjQsIDY5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjgsIDIxLCAyMTUsIDE5NywgMjI0LCA2NywgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDE4NCwgMjI5LCAxMDAsIDczLCA3MiwgNCwgMjI2LCAxODAsIDE3MywgNzMsIDcyLCA0LCAyMjYsIDE3OCwgCi0gICAgMjI4LCAyMDksIDczLCA3MiwgNCwgMjI2LCA1NCwgMjI5LCAxOTgsIDczLCA3MiwgNCwgMjI2LCAyNCwgMjI5LCAyMDEsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA0MywgMjI5LCA2LCA3MywgNzIsIDQsIDIyNiwgNzEsIDIyOSwgMjYsIDczLCA3MiwgNCwgMjI1LCAxOTYsIAotICAgIDIyOCwgMjAzLCA3MywgNzIsIDQsIDIyNiwgMTc1LCAyMDQsIDMwLCA3MywgNzIsIDQsIDIyNiwgMTczLCAyMDQsIDExMSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE3MSwgMjAzLCAyMTcsIDczLCA3MiwgNCwgMjI1LCAyNDksIDIwNCwgNTUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAxLCAyMDQsIDYyLCA3MywgNzIsIDQsIDIyNiwgNSwgMjAzLCAyNDQsIDczLCA3MiwgNCwgMjI2LCA3NCwgMjA0LCAwLCAKLSAgICA3MywgNzIsIDQsIDIyNSwgMTgxLCAyMDMsIDIxMywgNzMsIDcyLCA0LCAyMjUsIDIzMiwgMjA0LCA1MywgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDU4LCAyMDMsIDIwMSwgNzMsIDcyLCA0LCAyMjYsIDcwLCAyMDMsIDIwMywgNzMsIDcyLCA0LCAyMjUsIDIzNiwgCi0gICAgMjAzLCAyMDIsIDczLCA3MiwgNCwgMjI2LCAxNjksIDIyNCwgMTEwLCA3MywgNzIsIDQsIDIyNiwgMTY3LCAyMjUsIDEyMiwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE2NSwgMjIzLCAyMTksIDczLCA3MiwgNCwgMjI2LCA2MCwgMjI0LCAyNDAsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAyNSwgMjI0LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDIyMSwgMjIzLCAyNDMsIDczLCA3MiwgNCwgMjI1LCAxODYsIAotICAgIDIyMywgMjM3LCA3MywgNzIsIDQsIDIyNiwgMTYzLCAyNDgsIDg2LCA3MywgNzIsIDQsIDIyNiwgMTYwLCAyNDksIDMyLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTU4LCAyNDcsIDE5MywgNzMsIDcyLCA0LCAyMjUsIDIyNSwgMjQ4LCAxNTAsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAyMiwgMjQ4LCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxNiwgMjQ4LCAxMCwgNzMsIDcyLCA0LCAyMjUsIDIzNywgMjQ4LCAyMywgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE0OCwgNzUsIDczLCA3MiwgNCwgMjI2LCAxNDYsIDYzLCA3MywgNzIsIDQsIDIyNiwgMTQ0LCAKLSAgICA2OCwgNzMsIDcyLCA0LCAyMjUsIDIxMiwgMjQxLCAxNjEsIDczLCA3MiwgNCwgMjI2LCAxOSwgNzQsIDczLCA3MiwgNCwgCi0gICAgMjI1LCAyMTAsIDIyMCwgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjgsIDc4LCA3MywgNzIsIDQsIDIyNSwgMjM4LCAyNDEsIAotICAgIDE0NSwgNzMsIDcyLCA0LCAyMjUsIDI0NCwgMjMxLCA0OSwgNzMsIDcyLCA0LCAyMjUsIDI0MCwgMjMxLCA0OSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDE4MCwgMjUwLCAyMzEsIDczLCA3MiwgNCwgMjI1LCAxOTcsIDI0MSwgOTIsIDczLCA3MiwgNCwgMjI2LCAxMzMsIAotICAgIDIxMiwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTMxLCAyMTUsIDM2LCA3MywgNzIsIDQsIDIyNiwgMTI5LCAyMTEsIDEwLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjEzLCAyMTQsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDMsIDIxNCwgMTc3LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjM5LCAyMTEsIDI1MCwgNzMsIDcyLCA0LCAyMjYsIDQwLCAyMTIsIDEzLCA3MywgNzIsIDQsIDIyNSwgMTc5LCAyMTIsIAotICAgIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDExOSwgMjI3LCAxNDgsIDczLCA3MiwgNCwgMjI2LCAxMTcsIDIyOCwgMTEzLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTE1LCAyMjYsIDIzOSwgNzMsIDcyLCA0LCAyMjYsIDM1LCAyMjcsIDIyNiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDQ2LCAyMjcsIDIzNCwgNzMsIDcyLCA0LCAyMjYsIDY1LCAyMjcsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjIyLCAyMjcsIDQ5LCAKLSAgICA3MywgNzIsIDQsIDIyNiwgOSwgMTYzLCAyMjcsIDIzNCwgNzMsIDcyLCA0LCAyMjYsIDE0MSwgMjQzLCAyMzMsIDczLCA3MiwgCi0gICAgNCwgMjI2LCAxMzgsIDI0NCwgMjEyLCA3MywgNzIsIDQsIDIyNiwgMTM1LCAyNDIsIDQyLCA3MywgNzIsIDQsIDIyNiwgMzAsIAotICAgIDI0NCwgNjEsIDczLCA3MiwgNCwgMjI1LCAxOTUsIDI0MywgOTAsIDczLCA3MiwgNCwgMjI1LCAxOTQsIDI0MywgMTEzLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTI3LCAyMDksIDIsIDczLCA3MiwgNCwgMjI2LCAxMjQsIDIxMCwgMjIsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAxMjIsIDIwNywgMjAzLCA3MywgNzIsIDQsIDIyNiwgMjgsIDIwOSwgMTc2LCA3MywgNzIsIDQsIDIyNiwgNjQsIDIwOSwgCi0gICAgMTg3LCA3MywgNzIsIDQsIDIyNiwgMTUsIDIwOCwgMTQ4LCA3MywgNzIsIDQsIDIyNiwgNTAsIDEzNSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDExMywgMjMwLCAxNDEsIDczLCA3MiwgNCwgMjI2LCAxMTAsIDIzMCwgMTgxLCA3MywgNzIsIDQsIDIyNiwgMTA4LCAKLSAgICAyMzAsIDgyLCA3MywgNzIsIDQsIDIyNSwgMjE4LCAyMzAsIDE1OSwgNzMsIDcyLCA0LCAyMjYsIDYsIDIzMCwgMTYxLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjE1LCAyMzAsIDkxLCA3MywgNzIsIDQsIDIyNiwgNTYsIDIzMCwgMTAxLCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjAwLCAxNjMsIDIzMCwgMTAxLCA3MywgNzIsIDQsIDIyNiwgMTA2LCAyMDMsIDExLCA3MywgNzIsIDQsIDIyNiwgMTAzLCAKLSAgICAxOTgsIDczLCA3MiwgNCwgMjI2LCAxMDEsIDIwMiwgMjEzLCA3MywgNzIsIDQsIDIyNiwgMTAsIDIwMywgNDksIDczLCA3MiwgCi0gICAgNCwgMjI2LCAzOSwgMjAzLCA1MiwgNzMsIDcyLCA0LCAyMjUsIDIzNCwgMjAyLCAyMzIsIDczLCA3MiwgNCwgMjI1LCAyNTQsIAotICAgIDIwMiwgMjQ3LCA3MywgNzIsIDQsIDIyNiwgOTcsIDI0MCwgMjYsIDczLCA3MiwgNCwgMjI2LCA5NSwgMjQwLCAxMDgsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA5MywgMjM5LCAxMDgsIDczLCA3MiwgNCwgMjI2LCA0MSwgMjQwLCA1MywgNzMsIDcyLCA0LCAyMjYsIAotICAgIDQ0LCAyNDAsIDYwLCA3MywgNzIsIDQsIDIyNSwgMjQyLCAyMzksIDE3NSwgNzMsIDcyLCA0LCAyMjYsIDMxLCAyMzksIDE4NiwgCi0gICAgNzMsIDcyLCA0LCAyMjUsIDE3OCwgMjM5LCAxMDcsIDczLCA3MiwgNCwgMjI2LCAxOCwgMjQwLCA4MSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDkxLCAyMjIsIDY4LCA3MywgNzIsIDQsIDIyNiwgODksIDIyMywgODMsIDczLCA3MiwgNCwgMjI2LCA4NywgMjIxLCAKLSAgICA0MCwgNzMsIDcyLCA0LCAyMjYsIDIsIDIyMiwgMjMwLCA3MywgNzIsIDQsIDIyNSwgMjA2LCAyMjEsIDE4NSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDE5OSwgMjM3LCAzLCA3MywgNzIsIDQsIDIyNiwgODIsIDE1MiwgNzMsIDcyLCA0LCAyMjUsIDE4OSwgMjM2LCAKLSAgICAyNiwgNzMsIDcyLCA0LCAyMjYsIDg1LCAyMzcsIDQ4LCA3MywgNzIsIDQsIDIyNiwgMjMsIDIzNywgNjcsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA4MCwgMjM2LCAxMTcsIDczLCA3MiwgNCwgMjI1LCAyMzUsIDIzNiwgMTM2LCA3MywgNzIsIDQsIDIyNiwgMzYsIAotICAgIDIzNywgNDcsIDczLCA3MiwgNCwgMjI1LCAyNDcsIDIzNiwgMTEwLCA3MywgNzIsIDQsIDIyNiwgNjYsIDIzNiwgMjM4LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjQ1LCAyMzcsIDEyNiwgNzMsIDcyLCA0LCAyMjYsIDMyLCAyMzYsIDEzLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNjcsIDIzNywgMzMsIDczLCA3MiwgNCwgMjI1LCAxODIsIDIzNiwgMTIwLCA3MywgNzIsIDQsIDIyNiwgNzMsIDIzNiwgMjUsIAotICAgIDczLCA3MiwgNCwgMjI2LCAyOSwgMjIyLCAxNjgsIDczLCA3MiwgNCwgMjI2LCA3OCwgMjIyLCAxODIsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAzNywgMjIyLCAxNjUsIDczLCA3MiwgNCwgMjI2LCA0LCAyMjIsIDE3NiwgNzMsIDcyLCA0LCAyMjUsIDIyOSwgMjIyLCAKLSAgICAxNzcsIDczLCA3MiwgNCwgMjI1LCAyMTksIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgMjU1LCAyMjIsIDE2NywgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxNiwgMjIyLCAxODEsIDczLCA3MiwgNCwgMjI1LCAyNDgsIDIyMiwgMTY0LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMzMsIDE2MywgMjIyLCAxNzcsIDczLCA3MiwgNCwgMjI2LCAxMywgMTYzLCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDE5MiwgMTYzLCAyMjIsIDE2NywgNzMsIDcyLCA0LCAyMjUsIDIyMCwgMjM4LCA4MSwgNzMsIDcyLCA0LCAyMjYsIDgsIDIzOSwgCi0gICAgOCwgNzMsIDcyLCA0LCAyMjUsIDIwNywgMjM3LCAyMzAsIDczLCA3MiwgNCwgMjI1LCAxODUsIDIzOCwgMTgyLCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjA5LCAyMzcsIDIxNiwgNzMsIDcyLCA0LCAyMjUsIDIwOCwgMjM3LCAyMjYsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAxOTEsIDIyMiwgMTg3LCA3MywgNzIsIDQsIDIyNiwgNjIsIDIyMiwgMTI0LCA3MywgNzIsIDQsIDIyNSwgMTk4LCAyMjIsIAotICAgIDExMywgNzMsIDcyLCA0LCAyMjYsIDUxLCAyMTgsIDE2NywgNzMsIDcyLCA0LCAyMjYsIDIwLCAxODUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA2OSwgMjE3LCAxOTEsIDczLCA3MiwgNCwgMjI2LCAzOCwgMjE5LCAyMywgNzMsIDcyLCA0LCAyMjYsIDY4LCAyMTksIAotICAgIDM0LCA3MywgNzIsIDQsIDIyNiwgMTcsIDIxOCwgNDUsIDczLCA3MiwgNCwgMjI2LCA1MywgMjE4LCA2OSwgNzMsIDcyLCA0LCAKLSAgICAyMjUsIDIzMCwgMjI1LCAzOSwgNzMsIDcyLCA0LCAyMjYsIDU3LCAyMjUsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjUzLCAyMjUsIAotICAgIDMzLCA3MywgNzIsIDQsIDIyNiwgNzIsIDIyNSwgNDYsIDczLCA3MiwgNCwgMjI1LCAxODcsIDIyNSwgNDYsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA0NywgMjI1LCA0NywgNzMsIDcyLCA0LCAyMjUsIDIwMywgMjI1LCAzNCwgNzMsIDcyLCA0LCAyMjUsIDIwMSwgMjI1LCAKLSAgICAzNSwgNzMsIDcyLCA0LCAyMjUsIDE4OCwgMjI1LCAyNywgNzMsIDcyLCA0LCAyMjUsIDIxNCwgMTYzLCAyMjUsIDQ3LCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTQsIDE2MywgMjI1LCAzNCwgNzMsIDcyLCA0LCAyMjUsIDIzMywgMTYzLCAyMjUsIDM1LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjQzLCAyMjgsIDIzNiwgNzMsIDcyLCA0LCAyMjYsIDI3LCAyMjgsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDQ1LCAKLSAgICAyMjgsIDIzMiwgNzMsIDcyLCA0LCAyMjYsIDc2LCAyMjgsIDIzOSwgNzMsIDcyLCA0LCAyMjYsIDExLCAyMjgsIDI0MCwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDcsIDIyOCwgMjM0LCA3MywgNzIsIDQsIDIyNSwgMjE3LCAyMjgsIDIzNSwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDI1MSwgMjM4LCAxOTksIDczLCA3MiwgNCwgMjI2LCA2MywgMjM4LCAyMDcsIDczLCA3MiwgNCwgMjI1LCAyMjcsIDIzOCwgCi0gICAgMTk0LCA3MywgNzIsIDQsIDIyNiwgMjYsIDIzOCwgMjAzLCA3MywgNzIsIDQsIDIyNiwgMTIsIDIzOCwgMjA0LCA3MywgNzIsIAotICAgIDQsIDIyNiwgNDgsIDIzOCwgMTk1LCA3MywgNzIsIDQsIDIyNiwgNDksIDIzOCwgMTk3LCA3MywgNzIsIDQsIDIyNSwgMjA0LCAKLSAgICAyMTYsIDIyMCwgNzMsIDcyLCA0LCAyMjUsIDI1MiwgMjIzLCAxMCwgNzMsIDcyLCA0LCAyMjUsIDI0NiwgMjIzLCAyNSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDI1MCwgMjIyLCAyNDgsIDczLCA3MiwgNCwgMjI1LCAxODQsIDIyMywgMTYsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAwLCAyMjMsIDE3LCA3MywgNzIsIDQsIDIyNiwgNTIsIDIyMiwgMjUzLCA3MywgNzIsIDQsIDIyNiwgNTUsIDIyMywgMSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIyMywgMjIyLCA0OCwgNzMsIDcyLCA0LCAyMjUsIDE4MywgMjIyLCAxOCwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIyNiwgMjIyLCAzOSwgNzMsIDcyLCA0LCAyMjUsIDI0MSwgMjIyLCAyMiwgNzMsIDcyLCA0LCAyMjUsIDE5MywgMjA1LCAKLSAgICAyMzAsIDczLCA3MiwgNCwgMjI1LCAxOTAsIDIwNiwgODYsIDczLCA3MiwgNCwgMjI1LCAyMjQsIDIwNCwgMTYzLCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjAyLCAyMDYsIDUwLCA3MywgNzIsIDQsIDIyNiwgMzQsIDIwNiwgNTUsIDczLCA3MiwgNCwgMjI1LCAyMzEsIAotICAgIDIwNSwgMTc2LCA3MywgNzIsIDQsIDIyNiwgNDIsIDIwNSwgMTg5LCA3MywgNzIsIDQsIDIyNSwgMjExLCAyMjAsIDI0MiwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDYxLCAyMjEsIDUsIDczLCA3MiwgNCwgMjI1LCAyMDUsIDIyMCwgMjI0LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMjEsIDIyMCwgMjUzLCA3MywgNzIsIDQsIDIyNiwgNTksIDIyMCwgMjMxLCA3MywgNzIsIDE3LCAxMDUsIDczLCA3MiwgCi0gICAgMTcsIDEwOCwgNzMsIDcyLCAxNywgMTQ3LCA3MywgNzIsIDE3LCAxNDksIDczLCA3MiwgMTcsIDE3MCwgNzMsIDcyLCAxNywgCi0gICAgMTk1LCA3MywgNzIsIDE3LCAyMTMsIDExMSwgNzMsIDcyLCAxNywgMTk5LCA3MywgNzIsIDE3LCAyMjIsIDYzLCA3MywgNzIsIAotICAgIDM5LCA0MiwgMjA5LCAxNzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE0NywgNzMsIDcyLCAzOSwgNDIsIDIzNiwgMTAsIDczLCAKLSAgICA3MiwgMzksIDQyLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAKLSAgICAyMzYsIDEyLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgMjI0LCAxMTMsIDEwLCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyNDgsIAotICAgIDEzOCwgMTAsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMDQsIDcwLCAxMCwgMTMsIDIwMiwgCi0gICAgMTA3LCAxMCwgMTMsIDIzNywgMTQ4LCAxMCwgMTMsIDIwOSwgMjUxLCAxMCwgMTMsIDIwMywgNDcsIDEwLCAxMywgMjMwLCAKLSAgICAyMiwgMTAsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTQsIDE2MSwgCi0gICAgMTAsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMTcsIDExOSwgMTAsIAotICAgIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIwOSwgMTY5LCAxMCwgMTMsIDIwOSwgODgsIDEwLCAxMywgCi0gICAgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAxMDAsIDEwLCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjM4LCAxMTQsIDEwLCAxMywgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAxMywgCi0gICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjQ4LCAxMzgsIDEwLCAKLSAgICAxMywgODEsIDIzMCwgMTU4LCAxMCwgMTMsIDgxLCAyMzcsIDQzLCAxMCwgMTMsIDgxLCAyMzcsIDE0OCwgMTAsIDEzLCA4MSwgCi0gICAgMjAzLCA0NywgMTAsIDEzLCA4MSwgMjMwLCAyMiwgMTAsIDEzLCA4MSwgMjI4LCAyOCwgMTAsIDEzLCA4MSwgMjI1LCA1LCAKLSAgICAxMCwgMTMsIDgxLCAyMjEsIDE3OCwgMTAsIDEzLCA4MSwgMjE0LCAxNjEsIDEwLCAxMywgODEsIDI1MSwgNTksIDEwLCAxMywgCi0gICAgODEsIDI0MCwgNDcsIDEwLCAxMywgODEsIDIxNSwgMjgsIDEwLCAxMywgODEsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyMTMsIAotICAgIDM5LCAxMCwgMTMsIDgxLCAyMDksIDE2OSwgMTAsIDEzLCA4MSwgMjA5LCA4OCwgMTAsIDEzLCA4MSwgMjI5LCAxNDAsIDEwLCAKLSAgICAxMywgODEsIDI0NCwgMjA3LCAxMCwgMTMsIDgxLCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjMwLCAxNTgsIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDIzNywgMTQ4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMDMsIDQ3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjgsIAotICAgIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjEsIDE3OCwgMTAsIDEzLCAyMDksIDI0NywgMjE0LCAxNjEsIDEwLCAxMywgMjA5LCAKLSAgICAyNDcsIDI1MSwgNTksIDEwLCAxMywgMjA5LCAyNDcsIDIxNSwgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNywgMTE5LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyMTMsIDM5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDI0NywgMjQ0LCAKLSAgICAyMDcsIDEwLCAxMywgMjA5LCAyNDcsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCAKLSAgICA0MCwgMjMwLCAxNTgsIDEwLCAxMywgMjExLCA0MCwgMjM3LCA0MywgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDE0OCwgMTAsIAotICAgIDEzLCAyMTEsIDQwLCAyMDksIDI1MSwgMTAsIDEzLCAyMTEsIDQwLCAyMDMsIDQ3LCAxMCwgMTMsIDIxMSwgNDAsIDIzMCwgCi0gICAgMjIsIDEwLCAxMywgMjExLCA0MCwgMjI1LCA1LCAxMCwgMTMsIDIxMSwgNDAsIDIyMSwgMTc4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDIxNCwgMTYxLCAxMCwgMTMsIDIxMSwgNDAsIDI1MSwgNTksIDEwLCAxMywgMjExLCA0MCwgMjQwLCA0NywgMTAsIDEzLCAKLSAgICAyMTEsIDQwLCAyMTUsIDI4LCAxMCwgMTMsIDIxMSwgNDAsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDIxMywgMzksIAotICAgIDEwLCAxMywgMjExLCA0MCwgMjA5LCAxNjksIDEwLCAxMywgMjExLCA0MCwgMjA5LCA4OCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyMjksIDE0MCwgMTAsIDEzLCAyMTEsIDQwLCAyNDQsIDIwNywgMTAsIDEzLCAyMTEsIDQwLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMTEsIDQwLCAyMzgsIDExNCwgMTAsIDEzLCAyMTEsIDQwLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjI3LCAxMywgMjQ4LCAxMzgsIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjI3LCAxMywgCi0gICAgMjM3LCA0MywgMTAsIDEzLCAyMjcsIDEzLCAyMDQsIDcwLCAxMCwgMTMsIDIyNywgMTMsIDIwMiwgMTA3LCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIzNywgMTQ4LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMjUxLCAxMCwgMTMsIDIyNywgMTMsIDIwMywgNDcsIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjI3LCAxMywgMjIxLCAKLSAgICAxNzgsIDEwLCAxMywgMjI3LCAxMywgMjE0LCAxNjEsIDEwLCAxMywgMjI3LCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyMjcsIAotICAgIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIyNywgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjE3LCAxMTksIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjI3LCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDE2OSwgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDg4LCAxMCwgMTMsIDIyNywgMTMsIDIyOSwgMTQwLCAxMCwgMTMsIDIyNywgMTMsIAotICAgIDIwOSwgMTAwLCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIyNywgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIzOCwgMTE0LCAxMCwgMTMsIDE2OSwgMjQ4LCAxMzgsIDEwLCAxMywgMTY5LCAyMzAsIDE1OCwgMTAsIDEzLCAKLSAgICAxNjksIDI0NCwgMTg0LCAxMCwgMTMsIDE2OSwgMjA0LCA3MCwgMTAsIDEzLCAxNjksIDIwMiwgMTA3LCAxMCwgMTMsIDE2OSwgCi0gICAgMjM3LCAxNDgsIDEwLCAxMywgMTY5LCAyMDksIDI1MSwgMTAsIDEzLCAxNjksIDIwMywgNDcsIDEwLCAxMywgMTY5LCAyMjgsIAotICAgIDI4LCAxMCwgMTMsIDE2OSwgMjI1LCA1LCAxMCwgMTMsIDE2OSwgMjIxLCAxNzgsIDEwLCAxMywgMTY5LCAyMTQsIDE2MSwgCi0gICAgMTAsIDEzLCAxNjksIDI1MSwgNTksIDEwLCAxMywgMTY5LCAyNDAsIDQ3LCAxMCwgMTMsIDE2OSwgMjE1LCAyOCwgMTAsIDEzLCAKLSAgICAxNjksIDIxNywgMTE5LCAxMCwgMTMsIDE2OSwgMjE2LCAxMjIsIDEwLCAxMywgMTY5LCAyMTMsIDM5LCAxMCwgMTMsIDE2OSwgCi0gICAgMjA5LCAxNjksIDEwLCAxMywgMTY5LCAyMDksIDg4LCAxMCwgMTMsIDE2OSwgMjI5LCAxNDAsIDEwLCAxMywgMTY5LCAyMDksIAotICAgIDEwMCwgMTAsIDEzLCAxNjksIDI0NCwgMjA3LCAxMCwgMTMsIDE2OSwgMjAyLCAxMTAsIDEwLCAxMywgMTY5LCAyMzgsIDExNCwgCi0gICAgMTAsIDEzLCAyMTksIDI1NSwgODMsIDMsIDE1MSwgMywgMjA5LCAyMDksIDEwLCAxMywgMjE5LCAyNTUsIDE1MSwgMywgMjQ0LCAKLSAgICAxODQsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNzYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMjExLCAyMzgsIDIwNCwgMTYsIAotICAgIDIyNSwgMTQyLCA5OSwgMjA0LCA0NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAxNTMsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgCi0gICAgMjE2LCAxMzgsIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgMjM3LCAyNDQsIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgNjEsIAotICAgIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ2LCAKLSAgICAxODEsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAotICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAKLSAgICAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCAKLSAgICA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjIyLCA2NCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIAotICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0OCwgCi0gICAgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAKLSAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIAotICAgIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIyMiwgCi0gICAgNjQsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIAotICAgIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjIyLCA2NCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjE4LCA3OSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMTksIDI0MiwgMjI1LCAxNDIsIDk5LCAyNDgsIDI0NCwgMjI1LCAxNDIsIDk5LCAyNDYsIDk5LCAyMjUsIDE0MiwgCi0gICAgOTksIDIxMSwgMTgzLCAyMjUsIDE0MiwgOTksIDIxMCwgMjE2LCAyMjUsIDE0MiwgOTksIDI1MCwgMjEsIDIyNSwgMTQyLCAKLSAgICA5OSwgMjA0LCA3LCAyMjUsIDE0MiwgOTksIDIzMCwgOTQsIDIyNSwgMTQyLCA5OSwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAKLSAgICAxMDYsIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgMTA0LCAxNjEsIDk5LCAyMzYsIDEwMywgMTYxLCA5OSwgMjM2LCAxMDIsIAotICAgIDE2MSwgOTksIDIzNiwgMTAxLCAxNjEsIDk5LCAyMzYsIDEwMCwgMTYxLCA5OSwgMjM2LCA5OSwgMTYxLCA5OSwgMjM2LCA5OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA5NywgMTYxLCA5OSwgMjM2LCA5NiwgMTYxLCA5OSwgMjM2LCA5NSwgMTYxLCA5OSwgMjM2LCA5NCwgCi0gICAgMTYxLCA5OSwgMjM2LCA5MywgMTYxLCA5OSwgMjM2LCA5MiwgMTYxLCA5OSwgMjM2LCA5MSwgMTYxLCA5OSwgMjM2LCA5MCwgCi0gICAgMTYxLCA5OSwgMjM2LCA4OSwgMTYxLCA5OSwgMjM2LCA4OCwgMTYxLCA5OSwgMjM2LCA4NywgMTYxLCA5OSwgMjM2LCA4NiwgCi0gICAgMTYxLCA5OSwgMjM2LCA4NSwgMTYxLCA5OSwgMjM2LCA4NCwgMTYxLCA5OSwgMjM2LCA4MywgMTYxLCA5OSwgMjM2LCA4MiwgCi0gICAgMTYxLCA5OSwgMjM2LCA4MSwgMTYxLCA5OSwgMjM2LCA4MCwgMTYxLCA5OSwgMjM2LCA3OSwgMTYxLCA5OSwgMjM2LCA3OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA3NywgMTYxLCA5OSwgMjM2LCA3NiwgMTYxLCA5OSwgMjM2LCA3NSwgMTYxLCA5OSwgMjM2LCA3NCwgCi0gICAgMTYxLCA5OSwgMjM2LCA3MywgMTYxLCA5OSwgMjM2LCA3MiwgMTYxLCA5OSwgMjM2LCA3MSwgMTYxLCA5OSwgMjM2LCA3MCwgCi0gICAgMTYxLCA5OSwgMjM2LCA2OSwgMTYxLCA5OSwgMjM2LCA2OCwgMTYxLCA5OSwgMjM2LCA2NywgMTYxLCA5OSwgMjM2LCA2NiwgCi0gICAgMTYxLCA5OSwgMjM2LCA2NSwgMTYxLCA5OSwgMjM2LCA2NCwgMTYxLCA5OSwgMjM2LCA2MywgMTYxLCA5OSwgMjM2LCA2MiwgCi0gICAgMTYxLCA5OSwgMjM2LCA2MSwgMTYxLCA5OSwgMjM2LCA2MCwgMTYxLCA5OSwgMjM2LCA1OSwgMTYxLCA5OSwgMjM2LCA1OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA1NywgMTYxLCA5OSwgMjM2LCA1NiwgMTYxLCA5OSwgODAsIDI0OSwgMjUsIDE2MSwgOTksIDIwNiwgCi0gICAgMzcsIDE2MSwgOTksIDIwNiwgMzYsIDE2MSwgOTksIDIwNiwgMzUsIDE2MSwgOTksIDIwNiwgMzQsIDE2MSwgOTksIDIwNiwgCi0gICAgMzMsIDE2MSwgOTksIDIwNiwgMzIsIDE2MSwgOTksIDIwNiwgMzEsIDE2MSwgOTksIDIwNiwgMzAsIDE2MSwgOTksIDIwNiwgCi0gICAgMjksIDE2MSwgOTksIDIwNiwgMjgsIDE2MSwgOTksIDIwNiwgMjcsIDE2MSwgOTksIDIwNiwgMjYsIDE2MSwgOTksIDIwNiwgCi0gICAgMjUsIDE2MSwgOTksIDIwNiwgMjQsIDE2MSwgOTksIDIwNiwgMjMsIDE2MSwgOTksIDIwNiwgMjIsIDE2MSwgOTksIDIwNiwgCi0gICAgMjEsIDE2MSwgOTksIDIwNiwgMjAsIDE2MSwgOTksIDIwNiwgMTksIDE2MSwgOTksIDIwNiwgMTgsIDE2MSwgOTksIDIwNiwgCi0gICAgMTcsIDE2MSwgOTksIDIwNiwgMTYsIDE2MSwgOTksIDIwNiwgMTUsIDE2MSwgOTksIDIwNiwgMTQsIDE2MSwgOTksIDIwNiwgCi0gICAgMTMsIDE2MSwgOTksIDIwNiwgMTIsIDE2MSwgOTksIDIwNiwgMTEsIDE2MSwgOTksIDIwNiwgMTAsIDE2MSwgOTksIDIwNiwgCi0gICAgOSwgMTYxLCA5OSwgMjA2LCA4LCAxNjEsIDk5LCAyMDYsIDcsIDE2MSwgOTksIDIwNiwgNiwgMTYxLCA5OSwgMjA2LCA1LCAKLSAgICAxNjEsIDk5LCAyMDYsIDQsIDE2MSwgOTksIDIwNiwgMywgMTYxLCA5OSwgMjA2LCAyLCAxNjEsIDk5LCAyMDYsIDEsIDE2MSwgCi0gICAgOTksIDIwNiwgMCwgMTYxLCA5OSwgMjA1LCAyNTUsIDE2MSwgOTksIDIwNSwgMjU0LCAxNjEsIDk5LCAyMDUsIDI1MywgMTYxLCAKLSAgICA5OSwgMjA1LCAyNTIsIDE2MSwgOTksIDIwNSwgMjUxLCAxNjEsIDk5LCAyMDUsIDI1MCwgMTYxLCA5OSwgMjA1LCAyNDksIAotICAgIDE2MSwgOTksIDIwNSwgMjQ4LCAxNjEsIDk5LCAyMDUsIDI0NywgMTYxLCA5OSwgMjA1LCAyNDYsIDE2MSwgOTksIDIwNSwgCi0gICAgMjQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDksIDI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgCi0gICAgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAKLSAgICAxMTIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgCi0gICAgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAKLSAgICA4MiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDEyMCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDIzOSwgMTQ3LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyMzcsIDUzLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAxMTIsIDc2LCAyMzcsIAotICAgIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIAotICAgIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIzMCwgMTc5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIxNywgNDksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjM3LCA1MywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjE2LCAxMzgsIDIzMCwgOTQsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQzLCAKLSAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyNDMsIAotICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAKLSAgICAyMzMsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAyMTMsIDExMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDI0MywgMjIwLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgCi0gICAgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIyOSwgMzIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDYyLCAyMzAsIDk0LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQ2LCAyLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQ2LCAyLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIAotICAgIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAxMTIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgCi0gICAgMTQzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDksIDE1MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDYsIDIsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDYsIDIsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDYxLCAyMzAsIDk0LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMzksIDE3MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0OCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMywgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCAzMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjA4LCAyOSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAyOCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCA0NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MiwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjA4LCA0MSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzOSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzOCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNiwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCAzNSwgMTcsIDIwMiwgODUsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjAyLCA4NSwgMjQ1LCAyMzMsIDE3LCAxMTgsIAotICAgIDI0NSwgMjMzLCAxNywgMTIwLCAyNDUsIDIzMywgMTcsIDEyNiwgMjQ1LCAyMzMsIDE3LCAyMzksIDE0NywgMjQ1LCAyMzMsIAotICAgIDE3LCAyMzksIDIzMywgMjQ1LCAyMzMsIDE3LCAyMTIsIDg4LCAyNDUsIDIzMywgMTcsIDIxMywgMTEyLCAyNDUsIDIzMywgCi0gICAgMTcsIDI0MSwgMTQzLCAyNDUsIDIzMywgMTcsIDIyMiwgNjQsIDI0NSwgMjMzLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjAyLCAKLSAgICA4NCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjAyLCA4NCwgMTAyLCA4LCA2LCAxLCA2MywgMTAyLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTAyLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTAyLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDIsIDgsIDYsIDEsIAotICAgIDc0LCAxMDIsIDgsIDYsIDEsIDI0MCwgMTc0LCAxMDIsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMiwgOCwgNiwgMSwgMjM3LCAKLSAgICAxNzEsIDEwMiwgOCwgNiwgMSwgNzUsIDEwMiwgOCwgNiwgMSwgMjMwLCAxODQsIDEwMiwgOCwgNiwgMSwgMjMwLCA1NCwgCi0gICAgMTAyLCA4LCA2LCAxLCAxNTksIDEwMiwgOCwgNiwgMSwgMjI2LCAxODUsIDEwMiwgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMiwgCi0gICAgOCwgNiwgMSwgNzgsIDEwMiwgOCwgNiwgMSwgMjE5LCAxODQsIDEwMiwgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMiwgOCwgNiwgCi0gICAgMSwgMTQ2LCAxMDIsIDgsIDYsIDEsIDE5NCwgMTAyLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDIsIDgsIDYsIDEsIDY4LCAxMDIsIAotICAgIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDIsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxMDIsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDIsIAotICAgIDgsIDYsIDEsIDIwMywgMTI0LCAxMDIsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAotICAgIDgsIDYsIDEsIDE5NCwgNDMsIDM3LCA4LCA2LCAxLCAyNDcsIDEyNSwgNDMsIDM3LCA4LCA2LCAxLCAxNDYsIDQzLCAyNDYsIAotICAgIDIzOSwgNDMsIDIwMywgMTk4LCAxMDMsIDgsIDYsIDEsIDYzLCAxMDMsIDgsIDYsIDEsIDI0OSwgMjU1LCAxMDMsIDgsIDYsIAotICAgIDEsIDI0NywgMTI1LCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMywgOCwgNiwgMSwgNzQsIDEwMywgOCwgNiwgMSwgMjQwLCAKLSAgICAxNzQsIDEwMywgOCwgNiwgMSwgMjM5LCA3NSwgMTAzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTAzLCA4LCA2LCAxLCA3NSwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAzLCA4LCA2LCAxLCAyMzAsIDU0LCAxMDMsIDgsIDYsIDEsIDE1OSwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMjYsIDE4NSwgMTAzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAzLCA4LCA2LCAxLCA3OCwgMTAzLCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NCwgMTAzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAzLCA4LCA2LCAxLCAxNDYsIDEwMywgOCwgNiwgMSwgMTk0LCAKLSAgICAxMDMsIDgsIDYsIDEsIDIxMCwgNjksIDEwMywgOCwgNiwgMSwgNjgsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMywgOCwgCi0gICAgNiwgMSwgMjA0LCAxNDQsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMywgOCwgCi0gICAgNiwgMSwgMjAyLCAxNTksIDEwMywgMjM1LCAyNTUsIDEwMywgMjIzLCAxODcsIDEwMywgMjE0LCAxNzksIDEwMywgMjExLCAKLSAgICAxNjcsIDEwMywgMjE4LCAxMCwgMTAzLCAyMDQsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCA2MywgMTgyLCA0MywgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCAxODIsIDQzLCAKLSAgICA4LCA2LCAxLCA3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDIzOSwgNzUsIDE4MiwgCi0gICAgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDQzLCA4LCA2LCAxLCA3NSwgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCAxODQsIAotICAgIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgNDMsIDgsIDYsIDEsIDE1OSwgMTgyLCA0MywgOCwgNiwgMSwgMjI2LCAKLSAgICAxODUsIDE4MiwgNDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDQzLCA4LCA2LCAxLCA3OCwgMTgyLCA0MywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDQzLCA4LCA2LCAxLCAxNDYsIDE4MiwgNDMsIDgsIAotICAgIDYsIDEsIDE5NCwgMTgyLCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCA0MywgOCwgNiwgMSwgNjgsIDE4MiwgNDMsIDgsIAotICAgIDYsIDEsIDIwNiwgMTY0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxOTYsIAotICAgIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjE2LCAxODgsIDIyNSwgCi0gICAgMjYsIDU0LCAyMTYsIDE4OCwgMjI1LCAyMywgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCA2MywgMTgyLCAxMDMsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzOSwgCi0gICAgNzUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCAxMDMsIDgsIDYsIDEsIDc1LCAxODIsIDEwMywgOCwgNiwgCi0gICAgMSwgMjMwLCAxODQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgMTU5LCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgMjI2LCAxODUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCAxMDMsIDgsIDYsIDEsIAotICAgIDc4LCAxODIsIDEwMywgOCwgNiwgMSwgMjE5LCAxODQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCAxMDMsIAotICAgIDgsIDYsIDEsIDE0NiwgMTgyLCAxMDMsIDgsIDYsIDEsIDE5NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCA2OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxODIsIDEwMywgOCwgNiwgMSwgMjA0LCAKLSAgICAxNDQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxODIsIDEwMywgCi0gICAgOCwgNiwgMSwgMjAyLCAxNTksIDI0NSwgMTI4LCAxODIsIDEwMywgOCwgNiwgMSwgMjE5LCAxODQsIDE4MiwgMTAzLCAyMzUsIAotICAgIDE2NCwgMTgyLCAxMDMsIDE4NSwgMTgyLCAxMDMsIDIxNSwgMzYsIDE4MiwgMTAzLCAyNTEsIDIzMiwgMTgyLCAxMDMsIDIwNCwgCi0gICAgNjMsIDUxLCAyNDMsIDEzMiwgMTAzLCAyNDYsIDQyLCAxMDMsIDI0NSwgMTc2LCAxMDMsIDIzOSwgMTI5LCAxMDMsIDIzNSwgCi0gICAgMTU1LCAxMDMsIDIyMiwgMjEzLCAxMDMsIDIyMiwgMjA1LCAxMDMsIDIyMCwgNTEsIDEwMywgMjExLCAyNDUsIDEwMywgMTEyLCAKLSAgICAzLCAyNDAsIDIxMiwgODIsIDEwMywgMjA1LCAxNjYsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNjMsIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgMjQ5LCAyNTUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjQ3LCAxMjUsIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgMjQ1LCA1MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NCwgMjE2LCAxMzAsIDIzMSwgMzIsIAotICAgIDE2LCAxLCAyNDAsIDE3NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzksIDc1LCAyMTYsIDEzMCwgMjMxLCAzMiwgCi0gICAgMTYsIDEsIDIzNywgMTcxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAotICAgIDIzMCwgMTg0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzMCwgNTQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCi0gICAgMTU5LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIyNiwgMTg1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIyMywgCi0gICAgMTYzLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxOSwgMTg0LCAKLSAgICAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxNywgMTM0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE0NiwgMjE2LCAKLSAgICAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxOTQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjEwLCA2OSwgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCA2OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDYsIDE2NCwgMjE2LCAxMzAsIDIzMSwgCi0gICAgMzIsIDE2LCAxLCAyMDQsIDE0NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDMsIDE5NiwgMjE2LCAxMzAsIDIzMSwgCi0gICAgMzIsIDE2LCAxLCAyMDMsIDEyNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDIsIDE1OSwgNTEsIDE3MiwgMjM2LCAKLSAgICAxMzAsIDEwMywgNjcsIDIyOSwgMTQsIDEwMywgNjcsIDIxNSwgMzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMCwgCi0gICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTIsIDEwMywgNjcsIDI0NCwgCi0gICAgNzUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA2LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA3OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMTgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4NSwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgOTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTAxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkzLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA4NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNywgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTA5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgOTgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDk2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjIsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDEyMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEwMiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIwLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTEsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDk3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgOTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MCwgMTAzLCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgMTEwLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTAsIAotICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MywgMTAzLCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgMTE0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCi0gICAgMTIsIDIwNiwgMjM5LCAyMzMsIDg5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExOSwgMjA4LCAxMzMsIDIxMywgCi0gICAgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTAzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA4NiwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgOTksIAotICAgIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDgyLCAyMDgsIDEzMywgMjEzLCAzMywgCi0gICAgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDk1LCA0MywgMTg5LCAyNTEsIDExMSwgNDMsIDE4OSwgMjUxLCAxMzYsIDI0NSwgNjIsIDIzOSwgMTg0LCAKLSAgICAyNDYsIDE2LCAyMDcsIDMsIDIyMiwgODAsIDMsIDIxMSwgOTEsIDIxMCwgMjA5LCAxMTUsIDIyNCwgMTEsIDIxMCwgMjA4LCAKLSAgICAyNDYsIDQ2LCAyNTAsIDUwLCAyNDIsIDE3LCAyMTAsIDIwNywgMTE1LCAyNDcsIDE4MiwgMjE2LCAxODksIDI0NywgMjA4LCAKLSAgICAyNTAsIDUwLCAyMjIsIDc5LCAyMDQsIDgxLCAyMDQsIDc1LCAyMDUsIDE4MSwgMjI0LCAxMTgsIDIwNCwgNjUsIDI0MSwgCi0gICAgMTgwLCAyMzgsIDQ2LCAyNDAsIDIyOCwgMjQxLCAxODAsIDIzOCwgNDYsIDI1MCwgMjM4LCAyNDEsIDE4MCwgMjM4LCA0NiwgCi0gICAgMjUwLCA2OCwgMjM4LCA0NiwgMywgMjI0LCAyMzEsIDIyMiwgMjE0LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjQ1LCAxMzksIAotICAgIDIyNCwgMzAsIDk3LCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDIzOCwgNzcsIDIyNCwgMzAsIAotICAgIDk3LCAyMzksIDEwMiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDIzOCwgNzcsIDIyNCwgMzAsIDk3LCAyMjgsIDEsIDIxNywgCi0gICAgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyNDUsIDEzOSwgMjI0LCAzMCwgOTcsIDI0NSwgMTM5LCAyMjQsIDI5LCAyMjIsIAotICAgIDIxNCwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjI4LCAKLSAgICAxLCAyMTcsIDU2LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAxMDIsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMTAsIAotICAgIDIxNSwgMywgMjQwLCAxMDIsIDIzOCwgNDQsIDIxMSwgOTQsIDIxMiwgMjMzLCAyMTEsIDk0LCAyMDksIDgwLCA2MiwgMjQyLCAKLSAgICA0OSwgNjEsIDIxMCwgMjE0LCA2MSwgMjEwLCAyMTUsIDMsIDUsIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgCi0gICAgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAyNDYsIDgsIDMsIDIxNiwgMTkwLCAyNDYsIDgsIDMsIDIxNiwgMTkwLCAKLSAgICAyNDYsIDgsIDMsIDIxMiwgMTksIDI0NiwgOCwgMywgMjI3LCAxMzEsIDI0NiwgOCwgMywgMjA4LCAxMzcsIDIzOSwgMTg1LCAKLSAgICAyMDQsIDE3LCAyNDgsIDI3LCAyNDAsIDEwMiwgMjM2LCA0NywgMjQzLCAxMDIsIDIxMCwgMiwgMjQ3LCAxNTgsIDI0NiwgCi0gICAgMTQ4LCAyMTQsIDE2MywgMjQwLCAyMjIsIDIwOCwgOTUsIDI0NCwgNjksIDIwOCwgOTUsIDIxOSwgMTM1LCAyMDgsIDk1LCAKLSAgICAyNDcsIDg1LCAyMzYsIDQ3LCAyMTgsIDI0OCwgMjA3LCAxOTMsIDI0NiwgMTUyLCAyNDgsIDMwLCAyMTUsIDIwMiwgMjM3LCAKLSAgICAyLCAyMTAsIDIxMiwgMjQ4LCAzMCwgMjQxLCAxODQsIDc2LCAyMjUsIDEzMSwgMjQxLCAxODQsIDc2LCAyMTYsIDUyLCAyMzcsIAotICAgIDI4LCAyMzksIDE0NywgMjI3LCAyMzAsIDI0NiwgNiwgMjI1LCAxMDQsIDIyNywgMjI5LCAyNDAsIDg1LCAyMjcsIDIyOSwgCi0gICAgMjI3LCAyMzAsIDIzOSwgMTkyLCAyMzEsIDUwLCAyMDQsIDE2LCAyMjMsIDE5NiwgMjA4LCAxNjUsIDI1MCwgMzMsIDIzOCwgCi0gICAgNSwgMjI0LCAyNDksIDIwNCwgNzksIDIwOSwgMjI1LCAyMjcsIDE5OSwgMjQ4LCAyMzksIDIxOCwgMTIwLCAyMTYsIDEzOCwgCi0gICAgMjUwLCAxNTcsIDIzNywgMjQ0LCAyNTAsIDE1NywgMjE5LCAyOSwgMjE5LCAzMSwgMjQ2LCAxNTMsIDIxMSwgNDUsIDIzNywgCi0gICAgMTMyLCAyMTIsIDUxLCA3NiwgMjE4LCAxMDAsIDIyNSwgMTYsIDIyMCwgMzIsIDI0OCwgMTEsIDIxOCwgMjEsIDIyNywgMjEwLCAKLSAgICAyMTYsIDUzLCAyNDUsIDE0NSwgMjE2LCA1MywgMjQ4LCAyNTEsIDI0NSwgMTc5LCAyMTYsIDUyLCAyNDUsIDg5LCAyNSwgCi0gICAgMjE2LCA1MiwgMjExLCA3OSwgMjQ3LCAyMzcsIDIxMSwgMjI0LCAyNDcsIDIxOSwgMjM5LCAxMjgsIDIzOSwgMTI0LCAyMTUsIAotICAgIDIyMywgMjEwLCAxNjUsIDIxOCwgMjMsIDI0NCwgMTYzLCAyMjAsIDc1LCAyMTAsIDE4MywgMjM5LCAxMjUsIDIxMiwgMjA0LCAKLSAgICAyMzksIDI0NCwgMjQ3LCA3OSwgMywgMjEwLCAxNTgsIDI0NCwgMTMsIDIxMiwgNywgMjM1LCAxNjMsIDI0NSwgMTQzLCAyMTMsIAotICAgIDUxLCAyMzUsIDE2MiwgMjM1LCAxNjMsIDI0NSwgMTQzLCAyNDIsIDczLCAyNDUsIDE3OCwgMjQ2LCAxMTQsIDE0MiwgMjQ3LCAKLSAgICA1MSwgMjI3LCAzMiwgMjQ1LCA4MSwgMjM2LCAxMTksIDIxOCwgMjUsIDIxMiwgMjE3LCAyNDgsIDExNiwgMjQ3LCAyMzMsIAotICAgIDIxOCwgMjYsIDc2LCAyMzksIDE3NCwgMjQ1LCAxNzcsIDIzOSwgMTYzLCAyNSwgMjI5LCAzMywgMjA5LCAxODQsIDIwNCwgMywgCi0gICAgMjM3LCAxMDIsIDIxNSwgMTMsIDI0NywgMjUwLCAyNSwgMjQ1LCA5OSwgMjA0LCAxMywgMjM4LCA0OSwgMjQ1LCAyNTEsIAotICAgIDIzOCwgNDksIDIwOCwgNTEsIDI0MiwgNTQsIDI0OCwgMTQ2LCAyMjMsIDIzNSwgMjQ2LCAyMywgMjQ4LCAxNDYsIDIyMywgCi0gICAgMjM0LCAyNDksIDI4LCAyNDcsIDI0OSwgMjM5LCAxNjMsIDI1LCAyMjksIDM0LCAzLCAyMTgsIDg5LCAyNDcsIDI1MCwgMywgCi0gICAgMjE4LCAzOCwgMjQ1LCAxNjcsIDIxOCwgNDAsIDIxNiwgNTQsIDIwMywgMjI3LCAyMTcsIDI0MiwgMjQ4LCA1OCwgMjQ3LCAKLSAgICA3OCwgMjMwLCAxNzgsIDI0NiwgMTA2LCAyMDgsIDk1LCAyNDAsIDY4LCAyNDYsIDEwNSwgMjM5LCAyNDcsIDIzOSwgMjQ4LCAKLSAgICAyMTEsIDIyMiwgMjQ4LCAyNTAsIDIxOSwgNjYsIDIxOCwgMzksIDI0NSwgMjE1LCAyNDgsIDI1MSwgMjA5LCAyMjksIDIwOCwgCi0gICAgOTUsIDI0NSwgMTI4LCAyMzksIDIxOSwgMjE4LCAxMjEsIDI0NCwgNjYsIDIzMCwgMTY5LCAyNDMsIDk2LCAyNDcsIDI3LCAKLSAgICAyMTEsIDQ0LCAyMDQsIDE3LCAyNDYsIDEzMCwgMjI0LCAzMCwgMjA1LCAyMTcsIDI0NiwgMjA0LCAyMTQsIDE5NiwgMjE0LCAKLSAgICAyMjMsIDIzOCwgMTEsIDI0NywgNDgsIDIzNywgNTYsIDMsIDIwOCwgMjExLCAyMjAsIDMyLCAyMDksIDkzLCAyMjcsIDIyMiwgCi0gICAgMjQ3LCAyNDMsIDc2LCAyMzksIDE5NiwgMjI0LCAxMTksIDIyNSwgMTMsIDIxNiwgMTEwLCAyMTYsIDU0LCAzMSwgMjI5LCAKLSAgICAxNTAsIDMsIDIzMCwgMTc3LCAyMTEsIDE1LCAyMjQsIDE1MiwgMjI3LCAxNjcsIDIxMiwgNDksIDI0NSwgMTg0LCAyMjksIAotICAgIDMwLCAyNDgsIDE1OCwgMjUwLCA3OCwgMzEsIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjQ0LCAxOSwgMzEsIDIyMSwgMTU1LCAKLSAgICAyNDAsIDYsIDIzOSwgMTMzLCAyNTEsIDExNCwgMjA4LCAyNTIsIDI0NywgMjgsIDIzNiwgNDksIDI0MCwgMzUsIDIwNCwgMzYsIAotICAgIDIxNSwgMjEzLCAyNDUsIDI1MiwgMjM5LCAyMzksIDIxOCwgNTQsIDI1LCAyMzksIDI0MywgMjI0LCAxNTIsIDIyMywgMjUzLCAKLSAgICAyNDcsIDY1LCAyNDYsIDY1LCAyMzcsIDYwLCAyNTAsIDg1LCAyMTksIDEzOCwgMjA4LCAxNDUsIDIzNywgODMsIDI0NiwgNTEsIAotICAgIDIwOSwgMTQ0LCAyMDgsIDI1MywgMjQ2LCAzNywgMjQ4LCAyMCwgMjE4LCAyNDEsIDI1MCwgODQsIDIwNSwgMjI2LCAyMzgsIAotICAgIDIzOCwgMjQzLCAxNjcsIDIzNiwgMjMwLCAyMTIsIDQyLCAyMjUsIDE3MiwgMjQ4LCA2OSwgMjM4LCAyMzksIDI0MywgMjEzLCAKLSAgICAyNDcsIDIzNiwgMjM5LCAxOTgsIDIxOCwgODgsIDI0NywgMzYsIDMxLCAyMjEsIDE2MCwgMjIzLCAyMjYsIDMxLCAyMjEsIAotICAgIDE1NSwgMjE0LCAyMDksIDIzNywgMjE0LCAzMSwgMjI5LCAxNDksIDIwOCwgMjcsIDIwNSwgMjA2LCAzMSwgMjE0LCAxODksIAotICAgIDIxNSwgMTI2LCAyMTIsIDI0NiwgMywgMjE0LCAyMjYsIDIwOSwgMTQ5LCAyMTYsIDIwOSwgMjUsIDI0OCwgMjUxLCAyMTIsIAotICAgIDY3LCAyNSwgMjEyLCA2NywgMjQ4LCA0LCAyNDgsIDIxMywgMjUsIDIzNiwgMTEyLCAyNDYsIDE1NCwgMjM5LCAyMjUsIDIxMiwgCi0gICAgMTgsIDIxNSwgMTI3LCAyMTAsIDE4OCwgMjExLCAxODksIDIyNSwgMTMsIDIwOCwgNTIsIDIzNiwgNTAsIDIxNiwgMjEwLCAKLSAgICAyNTAsIDIzOSwgMjM5LCAxNzEsIDIxNSwgMTM5LCAyMzksIDE3MSwgMjEwLCAxNjAsIDIwNCwgNTEsIDIyNywgMTM2LCAyMzgsIAotICAgIDMwLCAyMTYsIDIxMSwgMjI0LCAxOCwgMjE2LCAyMTEsIDI0NywgMzksIDI0NSwgMTM2LCAyNDgsIDIxMCwgMjUsIDI0OCwgCi0gICAgMjUxLCAyMDUsIDE4MCwgMjQwLCAyNSwgMjM2LCAxMzMsIDIxMSwgNzMsIDI1LCAyNDgsIDI1MSwgMjM1LCAxNjMsIDIzNiwgCi0gICAgMTMzLCAyMTEsIDczLCAyNSwgMjE3LCAxODQsIDIxMCwgOSwgMjA5LCAxNDksIDIxOSwgMTU2LCAyNSwgMjQ4LCAyNTEsIAotICAgIDIxMiwgMjAsIDI0NywgNDQsIDIyNCwgMTIsIDI0NywgNjMsIDI0OCwgMTYxLCAzLCAyMDcsIDMsIDI0NywgMTg0LCAyNDUsIAotICAgIDE5OCwgMjM2LCAzOSwgMjQ3LCAxODIsIDI0NiwgNDUsIDI0NCwgMjMsIDIzNiwgMzksIDI0NywgMTgzLCAyNDYsIDM1LCAKLSAgICAyNDcsIDE4MywgMjQ0LCAxNSwgMjQ0LCAxNiwgMjMwLCAyMDgsIDIyMywgNjcsIDIxOSwgNzIsIDIxMSwgMTA0LCAyMzYsIAotICAgIDM5LCAyNDcsIDE4MywgMjM2LCAzOSwgMywgMjM4LCAyMjIsIDIyMCwgNjcsIDI0NywgMTgzLCAyMzAsIDE2OSwgMjE4LCAzMSwgCi0gICAgMjIwLCA2NiwgMjQwLCAyMjcsIDIxOCwgMzEsIDIyMCwgNjYsIDIzNiwgNDgsIDI0OCwgMjM1LCAyNTAsIDIzLCAyMDksIAotICAgIDE1NywgMjI1LCAxNzIsIDIzNiwgNDQsIDIyNywgMSwgMjM2LCA0NCwgMjQ1LCAxODIsIDIxMSwgNTcsIDIxNCwgMTk1LCAKLSAgICAyNDQsIDI2LCAyMTEsIDU3LCAyNDAsIDkxLCAyMzAsIDE4OSwgMjI4LCAxMywgMjMwLCAxNjksIDI0NywgMTksIDI0MCwgCi0gICAgMjI3LCAyNDcsIDE5LCA2MSwgMjE5LCAzLCA2MiwgMjE5LCAzLCAyMDQsIDczLCA2MSwgMjM5LCAyMjUsIDIwNCwgNzMsIDYyLCAKLSAgICAyMzksIDIyNSwgMjE1LCAyMDEsIDYyLCAyMTUsIDIwMSwgMjI4LCAxMDUsIDI0OSwgMTIsIDIxNiwgMjA5LCAyNSwgMjEyLCAKLSAgICAxODMsIDI0NywgMjQxLCAyNSwgNDcsIDI1MCwgMjM0LCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE5LCAyNDEsIAotICAgIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE2LCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE0LCAyNDEsIDk4LCA2NSwgCi0gICAgMjM5LCAyMzQsIDIwNywgMTEyLCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTEwLCAyMTYsIDE3MiwgMjI0LCA5LCAKLSAgICAyMTksIDE5MywgMjA0LCA4MSwgMjQ3LCAxODgsIDI0NSwgMTQ5LCAyMDgsIDI0NSwgMjI3LCAxODMsIDIxNiwgMjEyLCAyNDcsIAotICAgIDE3LCAyNDIsIDYxLCAyNDUsIDEzNSwgMjA0LCAzOSwgMjEyLCAyNiwgMjEyLCAyNCwgMjM2LCA0OSwgMjE2LCAxODQsIDIzOCwgCi0gICAgMzUsIDIxMywgMzcsIDIyNCwgNDgsIDIxNSwgMjA1LCAyNDYsIDE0MCwgMjQzLCAxMDIsIDIxOCwgMTMxLCAyNDgsIDIxLCAKLSAgICAyNDEsIDExNCwgMjIwLCA3OCwgMjExLCAyMDIsIDIxMywgMzIsIDI0NywgMTg3LCAyNTAsIDE5OCwgMjM2LCAxMTgsIDIyOCwgCi0gICAgOTgsIDI0OCwgMTQ0LCAyMzksIDI0MywgMjA4LCA1MSwgMjM5LCAyNDMsIDI0OCwgMjgsIDIwNywgMTcxLCAyMzcsIDgxLCAKLSAgICAyNDYsIDE0MSwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDIzOSwgMTE4LCAyNDksIDI4LCAyNDYsIDE0MSwgMjQ4LCA2MCwgMjE5LCAKLSAgICA1LCAyMjksIDI0LCAyMTgsIDQ0LCAyNDIsIDUxLCAyNDcsIDY3LCAyNDksIDE3LCAyNDcsIDY3LCAyNDMsIDk1LCAyMjQsIAotICAgIDEwLCAyNDAsIDEwMiwgMjQ1LCAxNTAsIDI0MCwgMTAyLCAyMDgsIDI0NiwgMjQwLCAxMDIsIDIxNiwgMjEzLCAyNDAsIDEwMiwgCi0gICAgMjQ3LCAxOCwgMjQwLCAxMDIsIDI0MiwgNjIsIDI0MCwgMTAyLCAyMTEsIDE4NywgMjA0LCAzOSwgMjM2LCA1MCwgMjQwLCAKLSAgICAxMDIsIDIyNCwgNDksIDI0MCwgMTAyLCAyNDMsIDEwMywgMjQwLCAxMDIsIDIxOCwgMTMyLCAyNDAsIDEwMiwgMjM5LCAxMjIsIAotICAgIDI0MCwgMTAyLCAyMzcsIDEyOSwgMjQwLCAxMDIsIDIwMywgMjUzLCAyNDAsIDEwMiwgMjQ4LCAxNTYsIDI0MCwgMTAyLCAKLSAgICAyMTksIDEyMCwgMjQwLCAxMDIsIDIxOCwgMTMyLCAyMjEsIDE2NywgMjE5LCA0NiwgMjE3LCAyMzAsIDI0NiwgMTI1LCAyNDAsIAotICAgIDE4NCwgMjQwLCAxOTEsIDI0MSwgMTgzLCAyMjEsIDE2NywgMjI0LCA3LCAyMDgsIDE1MCwgNjEsIDExMiwgMjE4LCA1OSwgCi0gICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDQ5LCAyMTgsIDU5LCAKLSAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIzOSwgMjM3LCAyMzcsIDEyNCwgCi0gICAgNTQsIDIwNCwgNzMsIDIzNywgMTI0LCA1NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAyMDksIDIwLCAxMTIsIDU0LCAyMDksIAotICAgIDIwLCAxMjEsIDU0LCAyNDYsIDM2LCAyMzcsIDEwMCwgNTQsIDE3MSwgMjM3LCAxMDAsIDU0LCAyNDUsIDEyMiwgMjAzLCAKLSAgICAyNDksIDIzNywgODMsIDI0MCwgMTg3LCAyMjIsIDIzNiwgMjEwLCA2OCwgMjMwLCAxNjAsIDI0MiwgNTYsIDIyOSwgODUsIAotICAgIDI0OCwgNzEsIDIwMywgMjQ5LCAyNDYsIDksIDIxNywgMTY1LCAyMzcsIDEwMywgMjE4LCAyMiwgMjI1LCAxMTIsIDIxMiwgCi0gICAgMjM5LCAyNTAsIDQ2LCAyMTIsIDIzOSwgMjM2LCAyNDMsIDIxMiwgMjM5LCAyMDMsIDI0OSwgMjE0LCAyNDAsIDIwMywgMjQ5LCAKLSAgICAyNDgsIDMsIDIzOSwgMTY5LCAyNDcsIDE1MCwgMjMxLCA1MCwgMjEyLCAxMzYsIDI0NywgMTQ5LCAyMzEsIDUwLCAyMTIsIAotICAgIDEzNiwgMjQ3LCAyMzIsIDIzOCwgNjAsIDIyNSwgMTIyLCAyMDMsIDI1MCwgMjQwLCA4MiwgMjI1LCAxMjMsIDI1LCAyMDMsIAotICAgIDI1MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjI0LCAyNDEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIwMywgMjQ4LCAKLSAgICAyMzYsIDEyNywgMjM3LCA5OSwgMjE4LCA1MSwgMjIwLCA2NSwgMjAzLCAyNTEsIDMsIDI0NywgMTY4LCAyNDEsIDE4MSwgCi0gICAgMjQ3LCAyMDksIDMsIDIwNiwgNDYsIDIxOCwgMjMwLCAzLCAyNDgsIDMyLCAyMzcsIDE0NSwgMjI1LCAxMjMsIDMsIDIzNywgCi0gICAgMjI3LCAyMTgsIDE2OCwgMjI1LCAxMDgsIDIyNSwgMTIzLCAzLCAyMDcsIDE4MCwgMjIwLCA0NCwgMjI1LCAxMjIsIDIyMCwgCi0gICAgNDQsIDIwMywgMjUwLCAyNDksIDI3LCAyNDUsIDE5OSwgMjAzLCAyMzQsIDIxNywgMjM1LCAyMzAsIDE2OSwgMjIwLCA2MSwgCi0gICAgMjMwLCAxNjksIDIzOCwgMzQsIDIzOCwgODksIDI0OSwgMjgsIDI1MCwgMjIxLCAyNDAsIDE5NiwgMjUxLCAyMCwgMjUxLCAKLSAgICAyMSwgMjI0LCAzOSwgMjMxLCA1NSwgMjEyLCA2MiwgMjMxLCAyNSwgMjQ0LCAxMiwgMjE4LCAyMjksIDIzNywgMjIxLCAyNDQsIAotICAgIDE2NywgMjI3LCA5NywgMjIzLCA5MSwgMjE4LCA1MCwgMjQwLCAxMDMsIDIyNSwgNzQsIDIzNywgMTQ0LCAyNDgsIDIyOSwgCi0gICAgMjE4LCA1MywgMjEwLCA4OCwgMjE4LCAxMjQsIDIyOSwgNjcsIDgyLCAyMjcsIDEsIDIyNywgMTc0LCAyMTUsIDI1MiwgMjM4LCAKLSAgICAxODAsIDIxMSwgNjMsIDIyOSwgNjYsIDI0NywgMjQyLCAyNDUsIDE1MiwgMywgMjM3LCA1NSwgMjA0LCA1OCwgMjQ4LCAxNTQsIAotICAgIDIzNywgNTUsIDI0NywgMjAzLCAyMzcsIDU1LCAxMjAsIDIzNywgNTMsIDIxMSwgMjIwLCAyMzcsIDU1LCAyMzcsIDIzNywgCi0gICAgMjM3LCA1NSwgMjM3LCA1NiwgMywgNDcsIDI0OCwgMjYsIDIzNywgNTUsIDIzNywgMjQ0LCAyMzcsIDU1LCAyMDMsIDQ1LCAKLSAgICAyMzcsIDU1LCAyMTcsIDE2NiwgMjM3LCA1NSwgMjM3LCA1NiwgMywgMjE2LCA1NCwgMjE2LCA2NywgMjM3LCA1MywgMjM3LCAKLSAgICA1NiwgMjQ0LCA2NiwgMjQzLCAyMjIsIDIxMywgNjMsIDMsIDM0LCA3MCwgMjMxLCA2LCAyNDEsIDExNywgMTU3LCAyNDcsIAotICAgIDE4MCwgMjUwLCAyMjAsIDk3LCAyNDgsIDEyLCAyMTIsIDU0LCA5NywgMjQ1LCAyNDQsIDk3LCAyMTEsIDE5NiwgMjEwLCAKLSAgICAxNjcsIDk3LCAyNDIsIDQ5LCAyNDQsIDE0NSwgOTcsIDIxOCwgMTI1LCA3NiwgMjE4LCA0NSwgMjM5LCAyMTAsIDI0OCwgODMsIAotICAgIDI0MywgMTMzLCA5NywgMjExLCAyMTIsIDI0OCwgMjUwLCAyMDksIDM4LCAyNDgsIDI1MCwgNjEsIDIzOSwgMTk3LCAyMzYsIAotICAgIDEyLCAyMTgsIDU3LCA5NywgMjI0LCA1MywgMjQ5LCAxMCwgMjQ1LCA5MiwgMjQwLCAyMTQsIDc5LCAyNDMsIDk3LCA1NCwgCi0gICAgMjQ1LCAxNDEsIDI0NywgMzcsIDI0OCwgMjM0LCAzLCAyMDMsIDQzLCA1NCwgMjQ4LCAyMzQsIDMsIDI0MywgOTcsIDU0LCAKLSAgICAyNDgsIDIzNCwgMywgMjQwLCAyMzAsIDU0LCAyNDgsIDIzNCwgMywgMjE4LCAyMCwgNTQsIDIyNCwgNTMsIDMsIDIwNCwgMTEsIAotICAgIDI0NiwgMTc4LCAzLCAxNzcsIDIwOCwgOTEsIDI1LCAyMDMsIDQzLCA1NCwgMjE0LCAxNzQsIDIxOCwgMjI4LCAyNDUsIDIyMCwgCi0gICAgMjQ3LCAyMDcsIDIyNCwgMTA4LCAyMzksIDIwMiwgMjQzLCAxNTQsIDIxOSwgMjQ4LCAyNDMsIDE1OSwgMjQyLCAxMiwgMjQwLCAKLSAgICAxMSwgMjM5LCAxODIsIDE3MSwgMjQwLCAxMSwgMjM5LCAxODIsIDIxOSwgMTU0LCAzLCAyNDUsIDk1LCAyMTksIDE1NCwgCi0gICAgMjQwLCA5NSwgMjA2LCAyMjQsIDI0NywgNzIsIDIwOSwgMTgzLCAyNDcsIDcyLCAyNDcsIDM4LCAyMzEsIDM1LCAyNDYsIAotICAgIDE3OCwgMywgMTc3LCAyMDgsIDkwLCAyNDYsIDE3OCwgMywgMTgzLCAyMDgsIDkwLCAyNDgsIDIzMSwgMjQ2LCAxNzcsIDI0NiwgCi0gICAgMjIsIDIxNywgMTYxLCAyMTUsIDE5MSwgMjE3LCAxNjEsIDIxOSwgOTQsIDIxMSwgNTMsIDIxNSwgMTMzLCAyMDgsIDgyLCAKLSAgICAyMTUsIDEzMywgMjQ4LCA4LCAyMTAsIDcsIDIyNywgMjI3LCAyMjEsIDE1OCwgMjIxLCAxNTksIDMsIDI0NCwgNjUsIDI0NSwgCi0gICAgMTUxLCAyNDYsIDE2LCAyNDgsIDksIDE3MSwgMjQ4LCA5LCAyMzcsIDI0NCwgMjQ4LCA5LCAyNDgsIDI2LCAyNDgsIDksIAotICAgIDIxOSwgMjQzLCAyNDgsIDksIDI0OCwgNiwgMjIzLCA4NSwgMjQ5LCAxNCwgMjE0LCAxODIsIDIyNCwgMjQyLCAyMDksIDE2MiwgCi0gICAgMjE2LCAxNTIsIDIxOSwgMTUyLCAyNDAsIDY1LCAyMjUsIDE3MiwgMjE0LCAyMjIsIDI1MCwgMTk1LCAyMTcsIDE4NSwgMjUxLCAKLSAgICAxMTksIDIyNywgMywgMjQ2LCAxNjIsIDIyNCwgMjU0LCAyMTksIDIxMCwgMjA4LCA5OCwgMjMxLCA0NiwgMjA4LCA5OCwgCi0gICAgMjE5LCAxNjEsIDI0MSwgMjM2LCA5NywgMjMxLCA0MywgMjQxLCA1NywgMjQxLCA1OCwgMywgMTgzLCA1MywgNTUsIDI0NiwgCi0gICAgMTYsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgMjM5LCAyMjUsIDI0NiwgMTYsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAKLSAgICAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjI2LCAyNDksIAotICAgIDIzOSwgMjI1LCAyMTgsIDI4LCAyMTgsIDI5LCAyMzYsIDUzLCAyMjIsIDIxMCwgMjI0LCA4MCwgMjE4LCAxNzYsIDIyNCwgCi0gICAgODAsIDIxOCwgMTc3LCAzLCA4NiwgNTMsIDI1MCwgNTAsIDIyNywgMjIyLCAyMDUsIDIyOSwgMjI0LCA3OSwgMjI0LCA4MCwgCi0gICAgMjE4LCAxNzcsIDIyMCwgNjgsIDIyMSwgMTkyLCAyMjQsIDgwLCAyMTgsIDE3NSwgMjUwLCAxOTYsIDMsIDI0OCwgMjIwLCAKLSAgICAyNDcsIDY1LCAyNDcsIDY2LCAzLCAyMzksIDIxOCwgMjA1LCAyMjYsIDI0NywgNjUsIDIwOSwgMTU5LCAyMTYsIDIwNCwgCi0gICAgMjA1LCAyMjUsIDI0MCwgNiwgMjE3LCAyMTcsIDIxOCwgMzUsIDIxMSwgNzQsIDIxNywgMjU0LCAyNDgsIDE2MCwgMjA3LCAKLSAgICAxMzgsIDg2LCAyNTAsIDkxLCAyNDYsIDE4LCA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI0NiwgMTgsIAotICAgIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MiwgMywgNDMsIDExOCwgMjE5LCAxOTksIDI0NiwgMTgsIDE4MywgCi0gICAgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNTAsIDE5NCwgMTgzLCAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIAotICAgIDI1MCwgOTEsIDEyNCwgMjQ3LCAyMDYsIDk3LCAxMzgsIDI0NywgMjA2LCA5NywgMjExLCAyMTcsIDMsIDI0NywgNTgsIDk1LCAKLSAgICAyMTEsIDIxNiwgMjExLCAyMTcsIDMsIDExOCwgMjExLCAyNDEsIDIwNCwgNzUsIDIxMSwgMjE3LCAzLCAxMjYsIDIxMSwgCi0gICAgMjQxLCAyMDQsIDc0LCAyNDgsIDIwMywgMjQxLCAxMTcsIDIxOCwgODEsIDIyNywgMjE3LCAyMjUsIDE0OSwgMjM4LCA0OSwgCi0gICAgMjE2LCAxMSwgMjI1LCAxNDksIDIzOCwgNDksIDIyNywgNDMsIDMsIDIzMSwgMTcsIDIxOSwgOSwgMjQ2LCAxNiwgMjI3LCAKLSAgICA0MywgMywgMjI5LCAxNTEsIDIyOSwgMTUxLCAyMjcsIDQyLCAxNzEsIDIyNywgNDIsIDI0OCwgMTI4LCAyNDgsIDEyOSwgMywgCi0gICAgMjQ3LCA1OCwgOTUsIDI0OCwgNywgMjI3LCAxMDUsIDk3LCAyMTYsIDIwNSwgMjQ3LCAxNDUsIDI0OSwgMjYsIDMsIDk2LCAKLSAgICA1MywgNTUsIDI0MSwgODQsIDMsIDk2LCA1MywgNTUsIDIyMCwgMzIsIDMsIDI0MCwgMjEyLCAxMzEsIDMsIDQ5LCA1MCwgNTMsIAotICAgIDU1LCAyMTEsIDI0OSwgMywgODYsIDUzLCA1NSwgMjA4LCAxNDUsIDMsIDE3NywgNTMsIDU1LCAyMjEsIDE5MiwgMTE4LCAKLSAgICAyMDYsIDI0OCwgMjQxLCAxNDEsIDk3LCAyMjksIDE0OCwgMjA5LCAxNTIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgNiwgMjI3LCAKLSAgICAxNzMsIDIzMSwgMTEsIDE2LCAzNSwgOCwgNSwgMjI3LCAxNzMsIDIzMSwgMTEsIDE2LCAzNSwgMjIxLCA0NSwgMjMxLCAxMSwgCi0gICAgMTYsIDM1LCAyMTAsIDEwMiwgMjMxLCAxMSwgMTYsIDM1LCA4LCAyMjcsIDE3MywgMjM5LCAyNDksIDI0MSwgMTE3LCAyMDgsIAotICAgIDE0MCwgMjAzLCAyMjUsIDIzNywgMTMwLCAyMjEsIDI4LCAyNSwgMjQ4LCAxNCwgMjM2LCAxMzQsIDIxOCwgMTA2LCAyMjQsIAotICAgIDE1MSwgMjA5LCAxNjAsIDI0NSwgMTEyLCAyNDgsIDI1MSwgMjEyLCA4OCwgMjE4LCA2MSwgMjExLCA5NSwgMywgMTAxLCAKLSAgICAyNDMsIDg1LCAyMzAsIDE2OSwgMTYsIDM1LCAyNDgsIDE0MSwgMjA4LCA4MCwgMjQxLCAxMDAsIDYyLCA1MSwgMjQ3LCAxNDUsIAotICAgIDYxLCA1MSwgMjQ3LCAxNDUsIDIyOCwgOCwgMjE2LCAxMzgsIDI0NiwgNjEsIDIyOCwgOCwgMjQ4LCAyNiwgMjQ2LCA2MSwgCi0gICAgMjI4LCA4LCAyMTksIDI0MywgMjQzLCAyMjEsIDIyOCwgOCwgMjQ4LCAyNiwgMjQzLCAyMjEsIDUsIDIxOSwgMjQzLCAyNDMsIAotICAgIDIyMSwgNSwgMjQ4LCAyNiwgMjQzLCAyMjEsIDIwNiwgMjIzLCAyMTYsIDEzOCwgMjA4LCA4NSwgMjQyLCA2OSwgMjE2LCAKLSAgICAxMzgsIDIwOCwgODUsIDIwNiwgMjIzLCA1LCAyMTYsIDEzOCwgMjA4LCA4NSwgMjQyLCA2OSwgNSwgMjE2LCAxMzgsIDIwOCwgCi0gICAgODUsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCA1MCwgMjEzLCA3NywgNjEsIDI0NiwgCi0gICAgNjEsIDQzLCAyNDUsIDEzMSwgMjE4LCA0OCwgMjQ1LCAxMzEsIDIxOCwgNDksIDMsIDIzNywgMTM2LCA1NiwgMjQ1LCAxMzEsIAotICAgIDIxOCwgNDgsIDIyMSwgMTYyLCA0OSwgMjEzLCAxNDYsIDMsIDEyNiwgMjQzLCA4MywgMjIxLCAxNjIsIDUwLCAyMTMsIDE0NiwgCi0gICAgMywgMTI2LCAyNDMsIDgzLCAxNiwgMzUsIDIyNSwgODcsIDI0NiwgMTg0LCA2MSwgOCwgMjQ1LCAxMzAsIDc5LCA4LCAyNDUsIAotICAgIDEzMCwgMjQ2LCAyMjIsIDI0NSwgMTMwLCAyMjAsIDQwLCA5NywgMjQyLCA3MiwgNzYsIDIxOSwgMzIsIDIzMCwgMzksIDIyNCwgCi0gICAgMjIsIDIxMCwgOTYsIDIyNCwgMjM3LCAzLCAyMjIsIDY0LCAyNDcsIDIyMiwgMjQ3LCAyMzgsIDc2LCAyMzUsIDIyMiwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDExOCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDEyMCwgMjIwLCA4MywgMjQ2LCAyMCwgCi0gICAgMjQwLCAxMDMsIDEyNiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQ3LCAyMjAsIDgzLCAyNDYsIDIwLCAKLSAgICAyNDAsIDEwMywgMjM5LCAyMzMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg4LCAyMjAsIDgzLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjEzLCAxMTIsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MywgMjIwLCA4MywgCi0gICAgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjQsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDksIDE1MywgMjIwLCAKLSAgICA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTEzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTUsIAotICAgIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjAsIDI3LCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxMzIsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyMDksIDI2LCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDMsIDI0NiwgMjAsIDI0MCwgMTAzLCAKLSAgICAyMzksIDIzMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODQsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTMsIDExMCwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDI0MSwgMTQyLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIAotICAgIDIwOSwgMTUxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1MywgNTAsIAotICAgIDIxMSwgMjE2LCA1MCwgMjExLCAyMTcsIDMsIDExOCwgMjExLCAyNDEsIDIwNCwgNzUsIDUwLCAyMTEsIDIxNywgMywgMTI2LCAKLSAgICAyMTEsIDI0MSwgMjA0LCA3NCwgMjQ3LCAxNzUsIDI0NywgMTc2LCAzLCAyMTEsIDI0MSwgMjA0LCA3NCwgMjE1LCAyNTEsIAotICAgIDI0OCwgMTI4LCAyNDgsIDksIDI0NywgNTYsIDIyNSwgMTA5LCAyNDYsIDE5LCA2MiwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAKLSAgICAyMjEsIDE5MiwgMjE4LCAxMTIsIDIzNiwgMTI2LCAyMjUsIDEyMywgMjMxLCA1MCwgMjQ3LCAxNTIsIDIxMCwgMjI4LCAyMjcsIAotICAgIDE2NiwgMjEyLCA1MiwgMjE5LCAyNDUsIDIxMSwgMTc4LCAyNDQsIDE1MCwgMjEwLCAyMTAsIDIxMSwgMjA1LCAyMTEsIDIwNiwgCi0gICAgMjA0LCA1OSwgMjMwLCA4MywgNDksIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDIwOSwgMTYyLCAyMTYsIDE1MywgCi0gICAgMywgMjE5LCAxNTMsIDUwLCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCA2MSwgMjA4LCAxMjYsIDIwOSwgMTYxLCAKLSAgICA2MiwgMjA4LCAxMjYsIDIwOSwgMTYxLCAyMDksIDE2MiwgMjIwLCAzMiwgMjA4LCAxNDUsIDc2LCAyMjQsIDc2LCAyNDYsIAotICAgIDQwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjQ5LCAyNiwgNzYsIDI0MSwgNTcsIDIxMSwgMTAwLCAyNDEsIDU3LCAyNDEsIDU4LCAKLSAgICAzLCAyMjcsIDEzMSwgMjM5LCAxODksIDI0MSwgNTcsIDIxOSwgMTAsIDExNSwgMjExLCAxMDAsIDI0MSwgNTcsIDIyNywgCi0gICAgMTA0LCAyMTksIDkzLCA2MiwgMjE3LCAxNjEsIDIyNiwgMjUxLCA0OSwgMjE5LCA4LCAyMjYsIDI1MSwgNDksIDI0OCwgMjQ2LCAKLSAgICAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjM5LCAxNDksIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMTksIDE0NywgMjI2LCAyNTEsIAotICAgIDQ5LCAyNDUsIDE0NCwgNDksIDIwMywgMjIwLCAyMzcsIDEyMywgMjA3LCAxNzQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgCi0gICAgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIxNiwgMTg4LCAyMzcsIDEyNCwgCi0gICAgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMDksIDIwLCAxMTIsIDU0LCAyMTYsIDczLCAyMDksIDIwLCAxMjEsIAotICAgIDU0LCAyMTYsIDczLCAyMDUsIDIyOCwgMjM3LCAxMjMsIDIxNiwgNzMsIDIzNywgMTI0LCAzLCAxMDEsIDI0MCwgMywgMjQwLCAKLSAgICAyMDEsIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjE5LCA3MSwgMjQ4LCAxMDQsIDEwMSwgMjUsIDIxNSwgMjUzLCAyMzksIAotICAgIDI1MywgNjEsIDEyMSwgMjE4LCA1OSwgNDksIDIzNywgMTI0LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDQ5LCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDQ5LCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNDksIDIxOCwgNTksIDI0OSwgMjMsIAotICAgIDIzMSwgMzUsIDYyLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMTIsIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDExMiwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCAxMTIsIDIxOCwgNTksIDI0OSwgMjMsIAotICAgIDIzMSwgMzUsIDYyLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDI0NCwgMTEsIDI0NSwgMjIwLCAyMjksIDE1MCwgCi0gICAgMjUsIDIyNCwgOSwgMTI2LCAyMjIsIDIxOCwgMjQ1LCAyMTksIDIxNywgMjMxLCAyMTgsIDY3LCAyNDcsIDc0LCA2MiwgMjM3LCAKLSAgICA5MSwgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCA2MSwgMjM3LCA5MSwgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgCi0gICAgMTU0LCAyMTIsIDcsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjA5LCAyMjEsIDI0NywgMjIsIDIwNCwgNiwgMjI5LCAKLSAgICAxNDksIDExOCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTIwLCAyNDcsIDE0NiwgMjI0LCA5LCAxMjYsIDI0NywgMTQ2LCAyMjQsIDksIAotICAgIDIwOCwgMTE3LCAzOCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAyMzcsIDkxLCAyNDMsIDE1NCwgMjE0LCAxODQsIDIxNywgMjMyLCAKLSAgICAyMzUsIDE1NiwgMjQwLCA2NSwgMjM1LCAxNTYsIDIxOSwgMjQ4LCAyNDMsIDE2MCwgMjM1LCAxNTYsIDI0MywgMTA3LCAzLCAKLSAgICAyMDksIDExMiwgMjQzLCAxMDcsIDMsIDIwOSwgMTEzLCAyNSwgMjE4LCAxNjEsIDI0MywgMTA3LCAzLCAyMTgsIDE2MSwgCi0gICAgMjM5LCAxMzUsIDMsIDIxOCwgMTYxLCAyMzksIDEzNSwgMywgMjA4LCAyMjUsIDIzOSwgMTM1LCAzLCAyNTAsIDIzMiwgMjAzLCAKLSAgICAxOTYsIDYyLCAyMzksIDE4MiwgMjM5LCAxODIsIDE3MSwgMjM5LCAxODIsIDI0NywgMzgsIDEyMiwgMjQzLCAxNDAsIDI0NywgCi0gICAgMzgsIDI0MCwgMTEsIDI0NywgMjMzLCAyNDAsIDExLCAyNDcsIDg3LCAyNDEsIDk0LCAyMjEsIDE2MCwgMjQxLCA5NCwgMjIxLCAKLSAgICAxNjEsIDIxOSwgMTUzLCAyNDEsIDk0LCAyMjEsIDE2MSwgMjE5LCAxNTksIDIyMSwgMTYwLCAyMjEsIDE2MSwgMjE5LCAxNTMsIAotICAgIDIyMSwgMTYxLCAyMTksIDE1OSwgMjQxLCA5NCwgMjQzLCAxMDYsIDI0MSwgOTQsIDIxOSwgMTUzLCAyNDEsIDk0LCAyMTksIAotICAgIDE1MSwgMjQzLCAxMDYsIDIxOSwgMTUzLCAyMTksIDE1MSwgMjA0LCA4NSwgMjExLCAyMDIsIDIyMSwgMTYxLCAyMTksIDE1OSwgCi0gICAgMjExLCAyMDIsIDI0NywgNzMsIDIxOSwgMTU5LCAyNDQsIDExLCAyMDQsIDE1LCAyMjQsIDEwNSwgMjI1LCA2NCwgMjE5LCAKLSAgICAyMDEsIDI0NiwgMTgsIDUwLCAyNSwgNDksIDIxMywgMTQ2LCAyNTAsIDkxLCAyNDcsIDU4LCAyMDMsIDE5NiwgMjMxLCA0MSwgCi0gICAgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDQsIDY0LCAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NSwgMjIxLCAzOCwgMjI5LCAKLSAgICAxNTEsIDIxNSwgMjE0LCAyMjIsIDIxMCwgMjE5LCAxNTQsIDMsIDQzLCAyMDksIDExMiwgMjExLCA2NSwgMjQ2LCAxNzcsIAotICAgIDI0NCwgMTk2LCAyMjksIDMzLCAyMjcsIDk4LCAyMTEsIDIxNSwgMjM3LCA2NSwgMjMxLCA1MCwgMjEyLCAxMzYsIDEyNiwgCi0gICAgMjE2LCAxNjMsIDU1LCAxMjYsIDIxNiwgMTYzLCA1NiwgMTI2LCAyMTYsIDE2MywgMjI3LCAyMjIsIDEyNiwgMjE2LCAxNjMsIAotICAgIDIxNiwgMTYsIDQ5LCAyMTEsIDIxMiwgMjQ3LCAxOTIsIDUwLCAyMTEsIDIxMiwgMjQ3LCAxOTIsIDEyMCwgMjExLCAyMTIsIAotICAgIDI0NywgMTkxLCAxMjYsIDIxMSwgMjEyLCAyNDcsIDE5MSwgNDksIDIwOSwgMzgsIDI0NywgMTkyLCA1MCwgMjA5LCAzOCwgCi0gICAgMjQ3LCAxOTIsIDQ5LCAyNTAsIDIyMCwgMjQ3LCAxOTIsIDUwLCAyNTAsIDIyMCwgMjQ3LCAxOTIsIDIyNCwgMzQsIDI0NywgCi0gICAgMTkyLCAyMjcsIDEzMiwgMjI0LCAzNCwgMjQ3LCAxOTIsIDIyNywgMTMyLCAyMjQsIDMzLCAyNDgsIDI0OCwgOTgsIDMsIAotICAgIDI0OCwgMjQ3LCAyNDgsIDI0OCwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAxMzIsIDIwMywgMTk2LCAyNDgsIAotICAgIDI0OCwgMjYsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDEzMiwgMjAzLCAxOTYsIDE1NywgMjQ2LCAKLSAgICAxNjksIDgyLCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAyNDYsIDE2OCwgMjAzLCAyMzMsIDIyNSwgMTA2LCAyMjQsIDE0LCAyMzksIAotICAgIDEwMywgMjA4LCAxNjcsIDIwOCwgMTIyLCAyMTEsIDg2LCA3NiwgMjI3LCAxNDYsIDIxMiwgMTM3LCA3NiwgMjMwLCAxNzAsIAotICAgIDIyMywgMjUxLCAyMzcsIDI0MSwgMjQwLCAxMDIsIDIzNywgMjQxLCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIAotICAgIDI0MCwgMTAzLCAzLCAyMDksIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgCi0gICAgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjEyLCAzMCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgCi0gICAgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgCi0gICAgMjI0LCA4LCAyNSwgMjA4LCAyNDMsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjM3LCAxMzUsIDIxMiwgMzAsIAotICAgIDI0MCwgMTAzLCAzLCAyMzYsIDUyLCAyMDQsIDgsIDI0MCwgMTAyLCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjEyLCAzMCwgCi0gICAgMjQwLCAxODQsIDI0MCwgMTAzLCAyMTQsIDIxNCwgMjQ0LCA0NSwgMjM5LCAxNzQsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjEyLCAKLSAgICAzMCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjEwLCAyMTAsIDIxMiwgCi0gICAgMjksIDI0MCwgMTAyLCAyMjIsIDIxNiwgMjQwLCAxMDIsIDI0MCwgMjAzLCAyNDAsIDEwMiwgMjA2LCAyNTMsIDI0MCwgMTAyLCAKLSAgICAyNDAsIDEwMywgMywgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTksIDEsIDI0MCwgMTAyLCAyNDUsIDIxMiwgMjQwLCAxMDIsIAotICAgIDI0NSwgMjEzLCAyNDAsIDEwMiwgMjI5LCA2NSwgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDksIDIzLCAzNCwgMjI5LCA2NiwgCi0gICAgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMjksIDY1LCAyNDAsIDEwMywgMywgMjQ2LCAxNiwgCi0gICAgMjQwLCAxODQsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUxLCAKLSAgICAyNSwgMjA0LCA4LCAyNDAsIDE5MSwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUxLCAyNSwgMjA4LCAyNDMsIDI0MCwgCi0gICAgMTg0LCAyNDMsIDE2MSwgMjQwLCAxMDIsIDIwMywgMjMyLCAyNDAsIDEwMiwgMjUwLCAyMTQsIDI0MCwgMTAyLCAyMTgsIDE5LCAKLSAgICAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0MCwgMTAyLCAyMTgsIDIzMiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAyMjcsIDE3LCAKLSAgICA3NiwgMjA4LCA2MiwgMjQzLCAxNjEsIDI0NywgMTQ4LCAyMTYsIDExMywgMjQwLCAxMDIsIDIzOSwgMTE0LCAyNDAsIDEwMywgCi0gICAgMywgMTcxLCAyMjQsIDcsIDI1MCwgMjEyLCAyNDAsIDEwMiwgMjQwLCA1OCwgMjQwLCAxMDIsIDIwNCwgNjAsIDI0MCwgMTAyLCAKLSAgICAyMTIsIDUzLCAyNDAsIDEwMiwgMjA4LCAyMDUsIDI0MCwgMTAyLCAyMzcsIDI0MiwgMjQwLCAxMDIsIDIyNywgNCwgMjQ1LCAKLSAgICAxMTQsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIDIzNiwgMiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAKLSAgICAxNzEsIDIyNCwgOCwgMjUsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjQwLCAxMDMsIDIxNCwgMTg2LCAyMzEsIDUwLCAyNDAsIAotICAgIDU5LCAyNTAsIDU2LCAyNDAsIDEwMiwgMjM5LCAxOTQsIDI0MCwgMTAyLCAyMTIsIDU0LCAyNDAsIDEwMiwgMjQzLCAxMzMsIAotICAgIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA0LCAzLCAyMjQsIDcsIDI0MCwgMTAzLCAzLCAyMjUsIDEyLCAyMjUsIDc2LCAyMzcsIAotICAgIDI0MSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjA5LCAKLSAgICAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIDIxMiwgMzAsIAotICAgIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwMywgMjE4LCAKLSAgICAyMTIsIDMxLCAyMjksIDY1LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjQ2LCAxNiwgMjQwLCAxODQsIDIxOCwgMTksIDI0NywgCi0gICAgMTgsIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQ3LCAxOCwgMjQwLCAxMDIsIDIwNCwgNjAsIDI0NywgMTgsIDI0MCwgMTAyLCAKLSAgICAyMTIsIDQ3LCAyMzksIDExNCwgMjQwLCAxMDIsIDIxMiwgNDcsIDIxMiwgMzAsIDI0MCwgMTAyLCAyMDYsIDIxOCwgMjQwLCAKLSAgICAxMDIsIDI0MCwgMTAzLCAzLCAyMTUsIDIxMiwgMjQwLCAxODQsIDI0MCwgMTAzLCAzLCAyMjEsIDE5MiwgMjM4LCAyNywgCi0gICAgMjM4LCAxNjAsIDI0MCwgMTAzLCAzLCAyMjAsIDUyLCAyMzgsIDE2MCwgMjE4LCAyMzAsIDI0NywgMjM5LCAyNDQsIDU5LCAKLSAgICAyMTQsIDE2NCwgMjI0LCA0OCwgMjM3LCA1NywgMjI0LCA0OCwgMjExLCAyMTgsIDIyNCwgNDgsIDIzNywgOTMsIDIxOCwgCi0gICAgMjMwLCAyMTYsIDE4NywgMTE4LCAyMzcsIDEyMywgMjE4LCAyMzAsIDIxNiwgMTg3LCAyNDcsIDI1MSwgMjM3LCAxMDAsIAotICAgIDIzMSwgNTAsIDI0NiwgMjI0LCAyMTgsIDIzMCwgMjM5LCAxMTMsIDIxOCwgMjMwLCAzLCAyMTgsIDE5LCAyNDAsIDEwMiwgCi0gICAgMjE4LCAyMzAsIDMsIDIzOSwgMTgzLCAyMzcsIDk5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMTEsIAotICAgIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIAotICAgIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjQxLCAKLSAgICAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgCi0gICAgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAKLSAgICAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgCi0gICAgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAKLSAgICAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgCi0gICAgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjExLCAyMzgsIDIwNCwgCi0gICAgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjExLCAyMzgsIDI0MSwgCi0gICAgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgCi0gICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIzNiwgMTI1LCAyMTcsIDQwLCA1MSwgMjE5LCAKLSAgICAyMzMsIDIzNiwgMTI1LCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgMjEyLCAyLCAyMTcsIAotICAgIDQwLCA1MSwgMjE5LCAyMzMsIDIxMiwgMiwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIAotICAgIDk2LCAyMTUsIDIxOCwgMTc3LCAyMTUsIDIxOCwgODYsIDIxNSwgMjE4LCAxODMsIDIxNSwgMjE4LCAxMzIsIDMyLCAyNDAsIAotICAgIDI1MSwgMjE5LCAyMzMsIDc5LCAxMzIsIDMyLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDMyLCAxNzEsIDI0MCwgMjUxLCAyMTksIAotICAgIDIzMywgNzksIDMyLCAxNzEsIDI0MCwgMjUxLCAyMTksIDIzMywgNzksIDI1MCwgMjM2LCAyMTksIDIzMywgMjEwLCAxNjksIAotICAgIDI1MCwgMjM2LCAyMTksIDIzMywgNDEsIDc5LCA1MiwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgCi0gICAgMjMzLCA0MSwgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNDEsIDc5LCAxMjQsIDUyLCAyNDUsIAotICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIzMCwgMjQ4LCAyMTksIDIzMywgNDEsIDIzMCwgMjQ4LCAyMTksIAotICAgIDIzMywgNzksIDQxLCAyMzAsIDI0OCwgMjE5LCAyMzMsIDIwNSwgMjQyLCA3OSwgMjEyLCAwLCAyMDUsIDI0MiwgNzksIDIxNiwgCi0gICAgNzQsIDIxMiwgMCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNiwgNzQsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTUsIDIxOCwgMjM3LCAKLSAgICAzOCwgMjExLCA4MSwgMjI3LCA0MCwgMjE2LCAxOTMsIDI0NywgMzksIDIzNiwgMjQwLCAyMDgsIDExMCwgMjM2LCAyNDAsIAotICAgIDIwOCwgMTExLCAzLCAyNDcsIDE3OCwgMjIxLCAxNjcsIDIwOCwgMTEwLCAyMjQsIDIxMywgMTU3LCAyMTYsIDE5NCwgMjExLCAKLSAgICA4NywgMjA4LCAxMDgsIDIwOCwgMTA5LCAyNDcsIDM5LCAyNDcsIDE1MywgMjIwLCAyOSwgMjQ3LCAxNTMsIDIwOCwgNTksIAotICAgIDI0NywgMTU0LCAyMTEsIDYxLCAyMjQsIDEwOSwgMjUwLCAyNDAsIDIzOSwgMjUwLCAyNDEsIDc3LCAyMTgsIDUxLCAyNDcsIAotICAgIDM5LCAyMjAsIDI5LCAyMTgsIDUxLCAyNDcsIDM5LCAyMDksIDE5NywgMjIwLCAyOSwgMjA5LCAxOTcsIDI1MCwgMjIsIDIyMCwgCi0gICAgMjksIDI1MCwgMjIsIDIxNiwgMTQ1LCAyMDYsIDQ3LCAyNDQsIDQxLCAyMDgsIDUwLCAyNTAsIDg2LCAyMjcsIDgsIDIwOCwgCi0gICAgMTE2LCAyMjQsIDQyLCAyMjQsIDEzLCAyMTYsIDE5MiwgMjEwLCAxODIsIDIxNiwgMTkyLCAyMjQsIDEzLCAyNDcsIDg2LCAKLSAgICAyNTEsIDk1LCAyMDgsIDEwNywgMjEyLCAyNTEsIDIxNSwgMTg4LCAyMTEsIDIxMCwgMjM2LCAxMDYsIDIwOCwgMTE0LCAyMjcsIAotICAgIDEzNCwgODAsIDIwOCwgMTE0LCAyMjcsIDEzNCwgMjQ1LCAxOTksIDU0LCAyMTgsIDUxLCAyNDcsIDI0LCAyMTYsIDY3LCAKLSAgICAyMjcsIDEzNCwgMjA4LCA4MiwgMjM5LCAyMjYsIDIyMCwgMzIsIDIxOCwgMzAsIDI0MywgODgsIDIyMSwgMTkyLCAyNDEsIAotICAgIDYzLCA1NCwgMjEyLCAyOCwgOTcsIDIyMSwgMTkyLCAyMTIsIDI4LCA5NywgMjE3LCAxNjAsIDIyNywgODcsIDIzMSwgNTAsIAotICAgIDIzMCwgMTk4LCAyMTgsIDk3LCA5NywgMjQzLCAxMTQsIDIyMSwgMTY2LCAyMjcsIDg3LCA5NywgMjE4LCAyNCwgMjA0LCA4MSwgCi0gICAgOTcsIDIyMSwgMTgyLCAyMDQsIDgxLCA5NywgMjQ4LCA4MiwgMjIxLCAxOTIsIDI0OCwgODEsIDI0OCwgODAsIDIyNCwgMTMsIAotICAgIDI0OCwgODAsIDIxOSwgMjUsIDIyMSwgMTkyLCAyMTksIDI0LCAyNDYsIDEzMiwgMjQ1LCAxMjMsIDIyNCwgMjM2LCA5NywgCi0gICAgMjAzLCAyNDcsIDk3LCAyMTYsIDgzLCAyNDksIDI4LCA5NywgMjA4LCAxNjgsIDIwNCwgODEsIDI0NiwgMTMsIDIxMiwgMjA5LCAKLSAgICAyNDgsIDIwNiwgMjQ4LCAyMDQsIDIxOSwgNTcsIDI0NSwgMTgzLCAyNDUsIDc5LCAyNDksIDcsIDI0NiwgNDEsIDQ5LCAyMjYsIAotICAgIDIyOSwgMjA4LCA4NiwgMywgMjE1LCAxODksIDI0NSwgMTY0LCAyMTcsIDIyMCwgNTQsIDQzLCAyMzEsIDI1LCAyMTEsIDIzOSwgCi0gICAgMjQ3LCAyMzEsIDk3LCAyMzgsIDU5LCA5NywgMjQ1LCAxNTcsIDI1LCAyMjgsIDE4LCAyMTIsIDU0LCAyNTEsIDEzNSwgMjEyLCAKLSAgICAyMzEsIDI0OSwgNiwgMjQ4LCAxMjcsIDI0OCwgMTI4LCAyNDgsIDE1MSwgMjE4LCA5NywgNzYsIDIwMywgMjMxLCAyMzcsIAotICAgIDEzMSwgMjUsIDIwMywgMjI1LCAyMTMsIDgsIDIyMCwgNTYsIDI0MiwgNDYsIDIyNCwgMTcsIDIxNiwgMTkzLCAyMDgsIDExOCwgCi0gICAgMjI0LCAxOSwgMjQ4LCAxOSwgMjA2LCAyMjMsIDIyNCwgMTE5LCAyNTEsIDUyLCAyMDYsIDIyMywgMjUxLCA1MiwgMjA2LCAKLSAgICAyMjMsIDUsIDI1MSwgNTIsIDUsIDI1MSwgNTIsIDIyMSwgMTcxLCAyNTEsIDUyLCAyNTEsIDUzLCAyNDQsIDI1LCAyNTEsIAotICAgIDUzLCAyNTAsIDk3LCAyMTQsIDIyMSwgMjIwLCAyOSwgMjM5LCAyNTAsIDI0MSwgNzcsIDI0MywgMjExLCAyMjcsIDQwLCAKLSAgICAyMTksIDYwLCAyMTIsIDI1MSwgMTM2LCAxNiwgMzUsIDIxNywgMzYsIDEzNiwgMTYsIDM1LCAyNTEsIDU0LCAxMzYsIDE2LCAKLSAgICAzNSwgMjM5LCAyNDksIDEzNiwgMTYsIDM1LCAyNDEsIDE3OSwgMTM2LCAxNiwgMzUsIDIwNCwgODAsIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDE0NiwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMTYsIDEzMiwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMTYsIAotICAgIDEzMSwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMDUsIDE5NSwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMDUsIDE5NCwgCi0gICAgMTM2LCAxNiwgMzUsIDIwNSwgMjA5LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDgsIDEzNiwgMTYsIDM1LCAyMDUsIDIwNywgMTM2LCAKLSAgICAxNiwgMzUsIDIxMCwgMjIxLCAxMzYsIDE2LCAzNSwgMjE4LCAxODQsIDIxMCwgMjIxLCAxMzYsIDE2LCAzNSwgNjIsIDIxMCwgCi0gICAgMjIxLCAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUyLCAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUxLCAKLSAgICAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUwLCAxMzYsIDE2LCAzNSwgMjQ2LCA2NCwgMTM2LCAxNiwgMzUsIDIxNSwgCi0gICAgMSwgMTM2LCAxNiwgMzUsIDIyMiwgNTEsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MywgMTM2LCAxNiwgMzUsIDIwNSwgMTkyLCAKLSAgICAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMSwgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDAsIDEzNiwgMTYsIAotICAgIDM1LCAyMzgsIDMxLCAxMzYsIDE2LCAzNSwgMjEyLCAxMzMsIDEzNiwgMTYsIDM1LCAyMzAsIDIyMSwgMjE5LCAyMzksIDEzNiwgCi0gICAgMTYsIDM1LCAyMzAsIDIyMSwgMjE5LCAyMzgsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE2LCAxMjgsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTc0LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAotICAgIDIzMCwgMjE5LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDUsIDEzNCwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MiwgMTM2LCAxNiwgMzUsIAotICAgIDI0NSwgMTc0LCAyNTAsIDE4OCwgMTM2LCAxNiwgMzUsIDIxNSwgMiwgNzYsIDI0NSwgMTc0LCAyNTAsIDE4OCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyMDYsIDQyLCAxMzYsIDE2LCAKLSAgICAzNSwgMjA4LCAyMTgsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjI3LCAyMzMsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCAxODcsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIAotICAgIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgCi0gICAgMTM2LCAxNiwgMzUsIDIwNSwgMjEwLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg2LCAKLSAgICAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTI3LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE2LCAxMjYsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNSwgMTM2LCAxNiwgMzUsIDIxNiwgMTI0LCAxMzYsIDE2LCAzNSwgMjUxLCAKLSAgICAxNywgMTM2LCAxNiwgMzUsIDI1MSwgMTYsIDEzNiwgMTYsIDM1LCAyMjUsIDk3LCAxMzYsIDE2LCAzNSwgMjE1LCA3LCAxMzYsIAotICAgIDE2LCAzNSwgMjUwLCA5MCwgMTM2LCAxNiwgMzUsIDIxNiwgMTU1LCAxMzYsIDE2LCAzNSwgMjE2LCAxNTQsIDEzNiwgMTYsIAotICAgIDM1LCAyNTAsIDI1LCAxMzYsIDE2LCAzNSwgMjQ4LCA1MiwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMDksIDIxNiwgMTM2LCAKLSAgICAxNiwgMzUsIDIwOSwgMjE1LCAxMzYsIDE2LCAzNSwgMjE3LCA0MiwgMjI3LCAxMjMsIDEzNiwgMTYsIDM1LCAyNDgsIDAsIAotICAgIDEzNiwgMTYsIDM1LCAyNDcsIDI1NSwgMTM2LCAxNiwgMzUsIDI0NywgMjU0LCAxMzYsIDE2LCAzNSwgMjUwLCAyNDksIDEzNiwgCi0gICAgMTYsIDM1LCAyMjAsIDU1LCAxMzYsIDE2LCAzNSwgMjExLCAxOTgsIDEzNiwgMTYsIDM1LCAyMDgsIDIxNiwgMTM2LCAxNiwgCi0gICAgMzUsIDIzNywgMjEwLCAxMzYsIDE2LCAzNSwgMjA0LCA2OCwgMTM2LCAxNiwgMzUsIDIxOCwgMTgsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDcsIDcwLCAxMzYsIDE2LCAzNSwgMjA3LCAxNjYsIDEzNiwgMTYsIDM1LCAyNDcsIDQxLCAyMjQsIDIzLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE0LCAxOTksIDc2LCAyMzAsIDg3LCAxMzYsIDE2LCAzNSwgMjQ3LCA4MywgMTM2LCAxNiwgMzUsIDIwOCwgNzksIAotICAgIDEzNiwgMTYsIDM1LCAyMTEsIDkyLCAyMDgsIDc5LCAxMzYsIDE2LCAzNSwgMjI3LCAzOSwgMTM2LCAxNiwgMzUsIDIxMiwgCi0gICAgMTEsIDEzNiwgMTYsIDM1LCAyMDYsIDIwMiwgMTM2LCAxNiwgMzUsIDIzNiwgNTAsIDI0MiwgMjcsIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjE4LCAyNiwgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDI0NywgMjEwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE4LCAxNywgMjQ3LCAyMTAsIDEzNiwgMTYsIDM1LCAyNTAsIDI0NiwgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgCi0gICAgMjAyLCAyMTEsIDQ3LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAyMDIsIDIxMSwgNDYsIDEzNiwgMTYsIDM1LCAyMTAsIAotICAgIDI0OSwgMTM2LCAxNiwgMzUsIDIxNywgMjQ3LCAxMzYsIDE2LCAzNSwgMjQzLCAxNTAsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MiwgCi0gICAgMTM2LCAxNiwgMzUsIDI0MywgMTUxLCAxMzYsIDE2LCAzNSwgMjE3LCAxNjksIDEzNiwgMTYsIDM1LCAyMTcsIDE1OCwgMTM2LCAKLSAgICAxNiwgMzUsIDI0NSwgMTIxLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDExOSwgMTM2LCAxNiwgCi0gICAgMzUsIDI0NSwgMTE4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDI5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ4LCAyMDcsIDc2LCAyMjUsIDgxLCAxMzYsIDE2LCAzNSwgMjQ4LCAyMDcsIDc2LCAyMDYsIDc0LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE2LCA4MSwgMTM2LCAxNiwgMzUsIDIzNiwgNDIsIDEzNiwgMTYsIDM1LCAyMjIsIDc5LCAxMzYsIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzIsIDEzNiwgMTYsIDM1LCAyMjQsIDM3LCAxMzYsIDE2LCAzNSwgMTYyLCAyNDIsIDU5LCAxMzYsIDE2LCAzNSwgMTYyLCAKLSAgICAyMTksIDIxNCwgNjIsIDIyNywgMjE3LCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgMjMwLCAyMDQsIAotICAgIDUwLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjQyLCA2OSwgMjMwLCAyMDQsIAotICAgIDUwLCAyMDgsIDg1LCA2MiwgMjEyLCA0NywgNSwgMjQ2LCA2MSwgMjI1LCAxMCwgMjYsIDYxLCAyNDYsIDYxLCAyNiwgNjEsIAotICAgIDI0NiwgNjEsIDc5LCA2MSwgMjQ2LCA2MSwgMjA1LCAyNDIsIDc5LCA2MSwgMjQ2LCA2MSwgMjQwLCAxOTUsIDc5LCA2MSwgCi0gICAgMjQ2LCA2MSwgNjEsIDI0NiwgNjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQ2LCA2MSwgMjE1LCAxOTEsIDIwOSwgMjE3LCA2MiwgCi0gICAgMjA4LCAyMTMsIDIxMSwgMTc3LCA2MiwgMjEyLCA0NywgNSwgMjExLCAxNzcsIDE1NywgNjEsIDIxMSwgMTc3LCAyMjUsIDEwLCAKLSAgICA2MSwgMjExLCAxNzcsIDI2LCA2MSwgMjExLCAxNzcsIDc5LCA2MSwgMjExLCAxNzcsIDIwNSwgMjQyLCA3OSwgNjEsIDIxMSwgCi0gICAgMTc3LCAyNDAsIDE5NSwgNzksIDYxLCAyMTEsIDE3NywgNjEsIDUxLCAyNDUsIDE5NSwgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAotICAgIDE3NywgNjEsIDUxLCAyNDUsIDE5NSwgNjIsIDIyNSwgMTAsIDIxMSwgMTc3LCA1MSwgMjA5LCAyMTcsIDYyLCAyMDgsIDIxMywgCi0gICAgMjQzLCAyMjEsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCA1LCAyNDMsIDIyMSwgNjEsIDI0MywgCi0gICAgMjIyLCAyNDUsIDE5NSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjEsIDI0MywgMjIyLCAyNDUsIDE5NSwgNjIsIAotICAgIDIyNSwgMTAsIDI0MywgMjIxLCAyNDMsIDIyMiwgMjA5LCAyMTcsIDYyLCAyMDgsIDIxMywgMjI2LCAyNDYsIDYyLCAyMDUsIAotICAgIDI0MiwgNSwgMjI2LCAyNDYsIDYyLCAyMjUsIDEwLCA1LCAyMjYsIDI0NiwgNjEsIDIyNiwgMjQ3LCAyNDUsIDE5NSwgNjIsIAotICAgIDUsIDIyNiwgMjQ2LCAyMDksIDYzLCAzMCwgMjQ1LCAxMzAsIDE1NywgMzAsIDI0NSwgMTMwLCAyMjUsIDEwLCAzMCwgMjQ1LCAKLSAgICAxMzAsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgNzksIDMwLCAyNDUsIAotICAgIDEzMCwgMjQwLCAxOTUsIDc5LCAzMCwgMjQ1LCAxMzAsIDIwOSwgNjMsIDIxNCwgMjU0LCAxNTcsIDIxNCwgMjU0LCAyMjUsIAotICAgIDEwLCAyMTQsIDI1NCwgMjYsIDIxNCwgMjU0LCA3OSwgMjE0LCAyNTQsIDIwNSwgMjQyLCA3OSwgMjE0LCAyNTQsIDI0MCwgCi0gICAgMTk1LCA3OSwgMjE0LCAyNTQsIDE1NywgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAyMzksIDIzMywgCi0gICAgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMzksIDIzMywgMjExLCAKLSAgICAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDAsIDE5NSwgNzksIAotICAgIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgCi0gICAgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIxMiwgODgsIAotICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDAsIDE5NSwgCi0gICAgNzksIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAKLSAgICAxMCwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgCi0gICAgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgCi0gICAgMTU3LCAxMjYsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAxMjYsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAxMjYsIAotICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAxMjYsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgCi0gICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMzksIAotICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgCi0gICAgMjE2LCA3NCwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAyMzMsIDIxOCwgCi0gICAgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjM5LCAyMzMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMTIsIDg4LCAKLSAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIxMiwgODgsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIAotICAgIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjI1LCAxMCwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjQxLCAKLSAgICAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMDUsIDI0MiwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCi0gICAgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIAotICAgIDIxMSwgOTQsIDc5LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMDcsIDE1NSwgMjE4LCA2MSwgMjE4LCAKLSAgICAxMTgsIDIxMSwgOTQsIDk2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAKLSAgICA5NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgCi0gICAgOTQsIDg2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjgsIDgsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDIyOCwgOCwgMjA4LCAKLSAgICA4NiwgMjUwLCA5NCwgODYsIDUzLCAzLCAyMjgsIDgsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyOCwgOCwgCi0gICAgMjA4LCA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIAotICAgIDk2LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgODYsIDUzLCAzLCAKLSAgICAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDg2LCA1MywgMywgMjQxLCAzMSwgMjUwLCAKLSAgICA5NCwgNzksIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDg2LCA1MywgMywgMjI4LCA4LCAKLSAgICAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgMTgzLCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA5NiwgMjA4LCA4NCwgCi0gICAgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgOTYsIAotICAgIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgCi0gICAgNzUsIDk2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgOTYsIAotICAgIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA5NiwgMjA4LCA4NCwgCi0gICAgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIAotICAgIDc5LCAyMTMsIDc1LCA5NiwgMjQwLCAxLCA0NywgMTc3LCAyNDAsIDEsIDQ3LCA4NiwgMjQwLCAxLCA0NywgMTgzLCAyNDAsIAotICAgIDEsIDQ3LCA5NiwgMTAzLCA0NywgMTc3LCAxMDMsIDQ3LCA4NiwgMTAzLCA0NywgMTgzLCAxMDMsIDQ3LCA5NiwgMjQ1LCAKLSAgICAyMjIsIDQ3LCAxNzcsIDI0NSwgMjIyLCA0NywgODYsIDI0NSwgMjIyLCA0NywgMTgzLCAyNDUsIDIyMiwgNDcsIDk2LCA3OSwgCi0gICAgMjQ1LCAyMjIsIDQ3LCAxNzcsIDc5LCAyNDUsIDIyMiwgNDcsIDg2LCA3OSwgMjQ1LCAyMjIsIDQ3LCAxODMsIDc5LCAyNDUsIAotICAgIDIyMiwgNDcsIDk2LCA3OSwgNDcsIDE3NywgNzksIDQ3LCA4NiwgNzksIDQ3LCAxODMsIDc5LCA0NywgOTYsIDQxLCA0NywgCi0gICAgMTc3LCA0MSwgNDcsIDg2LCA0MSwgNDcsIDE4MywgNDEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQxLCA0NywgMTUzLCAyNDEsIAotICAgIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQxLCA0NywgNDksIAotICAgIDUwLCA0MSwgNDcsIDExMiwgMTIxLCA0MSwgNDcsIDIwNCwgMjYsIDk2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgCi0gICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDE1NywgMTUwLCA0NywgMjA0LCAKLSAgICAyNiwgMTUzLCAyMDQsIDQ2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKLSAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMTUzLCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgCi0gICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMjI1LCAxMCwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAKLSAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDE3NywgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCA3OSwgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgNzksIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIAotICAgIDE3NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgOTYsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDE3NywgMjA4LCA4NiwgMjUwLCA5NCwgODYsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgMjA4LCA4NiwgMjUwLCAKLSAgICA5NCwgOTYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA4NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgCi0gICAgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCAxNzcsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAKLSAgICAyNDgsIDg2LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCAxODMsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDc5LCAKLSAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA3OSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgNzksIAotICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIzNywgMTM3LCA3OSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjA5LCAKLSAgICA2MCwgOTYsIDI0NywgMjQ1LCA2MSwgNDcsIDg2LCAyNDcsIDI0OCwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjA4LCAxNDUsIAotICAgIDIxMywgNzgsIDYxLCA0NywgODYsIDIwOCwgMTQ1LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMjcsIDIxNiwgNjEsIDQ3LCA4NiwgCi0gICAgMjE2LCAxMCwgNjEsIDQ3LCA5NiwgMjE2LCAxMCwgNjEsIDQ3LCA4NiwgMjI3LCAyMTYsIDYxLCA0NywgOTYsIDI0OSwgMjQsIAotICAgIDIxMywgNzcsIDYxLCA0NywgODYsIDI0OSwgMjQsIDIxMywgNzcsIDYxLCA0NywgOTYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgCi0gICAgNDcsIDg2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIDQ3LCA2MSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNjEsIDUzLCAKLSAgICAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDIwMiwgMjYsIDI0MCwgMTAyLCAyMjQsIDUyLCAyNDAsIDEwMiwgCi0gICAgMjQwLCAxMDMsIDMsIDIwOSwgODAsIDIyMiwgMjIyLCAyNDAsIDEwMiwgMjA5LCA2MiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAKLSAgICAyMzcsIDYzLCAyMTUsIDIyMSwgMjQwLCAxMDIsIDIzNiwgMjAsIDI0MCwgMTAyLCAyLCA3NiwgMjA5LCA5MywgMjM2LCA1MiwgCi0gICAgMjQ1LCAxNDYsIDIyNywgMTAyLCAyNDAsIDEwMiwgMjE0LCAxODgsIDIwNywgMTc5LCAyMDYsIDI0MCwgMjQwLCAxMDIsIAotICAgIDI0NiwgMTYxLCAyMDQsIDU3LCAxMiwgMTUsIDIzNSwgMTUyLCAxMiwgMTUsIDIzNSwgMTUxLCAxMiwgMTUsIDIzNSwgMTUwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTQ5LCAxMiwgMTUsIDIzNSwgMTQ4LCAxMiwgMTUsIDIzNSwgMTQ3LCAxMiwgMTUsIDIzNSwgMTQ2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTQ1LCAxMiwgMTUsIDIzNSwgMTQ0LCAxMiwgMTUsIDIzNSwgMTQzLCAxMiwgMTUsIDIzNSwgMTQyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTQxLCAxMiwgMTUsIDIzNSwgMTQwLCAxMiwgMTUsIDIzNSwgMTM5LCAxMiwgMTUsIDIzNSwgMTM4LCAKLSAgICAxMiwgMTUsIDIzNSwgMTM3LCAxMiwgMTUsIDIzNSwgMTM2LCAxMiwgMTUsIDIzNSwgMTM1LCAxMiwgMTUsIDIzNSwgMTM0LCAKLSAgICAxMiwgMTUsIDIzNSwgMTMzLCAxMiwgMTUsIDIzNSwgMTMyLCAxMiwgMTUsIDIzNSwgMTMxLCAxMiwgMTUsIDIzNSwgMTMwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTI5LCAxMiwgMTUsIDIzNSwgMTI4LCAxMiwgMTUsIDIzNSwgMTI3LCAxMiwgMTUsIDIzNSwgMTI2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTI1LCAxMiwgMTUsIDIzNSwgMTI0LCAxMiwgMTUsIDIzNSwgMTIzLCAxMiwgMTUsIDIzNSwgMTIyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTIxLCAxMiwgMTUsIDIzNSwgMTIwLCAxMiwgMTUsIDIzNSwgMTE5LCAxMiwgMTUsIDIzNSwgMTE4LCAKLSAgICAxMiwgMTUsIDIzNSwgMTE3LCAxMiwgMTUsIDIzNSwgMTE2LCAxMiwgMTUsIDIzNSwgMTE1LCAxMiwgMTUsIDIzNSwgMTE0LCAKLSAgICAxMiwgMTUsIDIzNSwgMTEzLCAxMiwgMTUsIDIzNSwgMTEyLCAxMiwgMTUsIDIzNSwgMTExLCAxMiwgMTUsIDIzNSwgMTEwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTA5LCAxMiwgMTUsIDIzNSwgMTA4LCAxMiwgMTUsIDIzNSwgMTA3LCAxMiwgMTUsIDIzNSwgMTA2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTA1LCAxMiwgMTUsIDIzNSwgMTA0LCAxMiwgMTUsIDIzNSwgMTAzLCAxMiwgMTUsIDIzNSwgMTAyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTAxLCAxMiwgMTUsIDIzNSwgMTAwLCAxMiwgMTUsIDIzNSwgOTksIDEyLCAxNSwgMjM1LCA5OCwgMTIsIAotICAgIDE1LCAyMzUsIDk3LCAxMiwgMTUsIDIzNSwgOTYsIDEyLCAxNSwgMjM1LCA5NSwgMTIsIDE1LCAyMzUsIDk0LCAxMiwgMTUsIAotICAgIDIzNSwgOTMsIDEyLCAxNSwgMjM1LCA5MiwgMTIsIDE1LCAyMzUsIDkxLCAxMiwgMTUsIDIzNSwgOTAsIDEyLCAxNSwgMjM1LCAKLSAgICA4OSwgMTIsIDE1LCAyMzUsIDg4LCAxMiwgMTUsIDIzNSwgODcsIDEyLCAxNSwgMjM1LCA4NiwgMTIsIDE1LCAyMzUsIDg1LCAKLSAgICAxMiwgMTUsIDIzNSwgODQsIDEyLCAxNSwgMjM1LCA4MywgMTIsIDE1LCAyMzUsIDgyLCAxMiwgMTUsIDIzNSwgODEsIDEyLCAKLSAgICAxNSwgMjM1LCA4MCwgMTIsIDE1LCAyMzUsIDc5LCAxMiwgMTUsIDIzNSwgNzgsIDEyLCAxNSwgMjM1LCA3NywgMTIsIDE1LCAKLSAgICAyMzUsIDc2LCAxMiwgMTUsIDIzNSwgNzUsIDEyLCAxNSwgMjM1LCA3NCwgMTIsIDE1LCAyMzUsIDczLCAxMiwgMTUsIDIzNSwgCi0gICAgNzIsIDEyLCAxNSwgMjM1LCA3MSwgMTIsIDE1LCAyMzUsIDcwLCAxMiwgMTUsIDIzNSwgNjksIDEyLCAxNSwgMjM1LCA2OCwgCi0gICAgMTIsIDE1LCAyMzUsIDY3LCAxMiwgMTUsIDIzNSwgNjYsIDEyLCAxNSwgMjM1LCA2NSwgMTIsIDE1LCAyMzUsIDY0LCAxMiwgCi0gICAgMTUsIDIzNSwgNjMsIDEyLCAxNSwgMjM1LCA2MiwgMTIsIDE1LCAyMzUsIDYxLCAxMiwgMTUsIDIzNSwgNjAsIDEyLCAxNSwgCi0gICAgMjM1LCA1OSwgMTIsIDE1LCAyMzUsIDU4LCAxMiwgMTUsIDIzNSwgNTcsIDEyLCAxNSwgMjM1LCA1NiwgMTIsIDE1LCAyMzUsIAotICAgIDU1LCAxMiwgMTUsIDIzNSwgNTQsIDEyLCAxNSwgMjM1LCA1MywgMTIsIDE1LCAyMzUsIDUyLCAxMiwgMTUsIDIzNSwgNTEsIAotICAgIDEyLCAxNSwgMjM1LCA1MCwgMTIsIDE1LCAyMzUsIDQ5LCAxMiwgMTUsIDIzNSwgNDgsIDEyLCAxNSwgMjM1LCA0NywgMTIsIAotICAgIDE1LCAyMzUsIDQ2LCAxMiwgMTUsIDIzNSwgNDUsIDEyLCAxNSwgMjM1LCA0NCwgMTIsIDE1LCAyMzUsIDQzLCAxMiwgMTUsIAotICAgIDIzNSwgNDIsIDEyLCAxNSwgMjM1LCA0MSwgMTIsIDE1LCAyMzUsIDQwLCAxMiwgMTUsIDIzNSwgMzksIDEyLCAxNSwgMjM1LCAKLSAgICAzOCwgMTIsIDE1LCAyMzUsIDM3LCAxMiwgMTUsIDIzNSwgMzYsIDEyLCAxNSwgMjM1LCAzNSwgMTIsIDE1LCAyMzUsIDM0LCAKLSAgICAxMiwgMTUsIDIzNSwgMzMsIDEyLCAxNSwgMjM1LCAzMiwgMTIsIDE1LCAyMzUsIDMxLCAxMiwgMTUsIDIzNSwgMzAsIDEyLCAKLSAgICAxNSwgMjM1LCAyOSwgMTIsIDE1LCAyMzUsIDI4LCAxMiwgMTUsIDIzNSwgMjcsIDEyLCAxNSwgMjM1LCAyNiwgMTIsIDE1LCAKLSAgICAyMzUsIDI1LCAxMiwgMTUsIDIzNSwgMjQsIDEyLCAxNSwgMjM1LCAyMywgMTIsIDE1LCAyMzUsIDIyLCAxMiwgMTUsIDIzNSwgCi0gICAgMjEsIDEyLCAxNSwgMjM1LCAyMCwgMTIsIDE1LCAyMzUsIDE5LCAxMiwgMTUsIDIzNSwgMTgsIDEyLCAxNSwgMjM1LCAxNywgCi0gICAgMTIsIDE1LCAyMzUsIDE2LCAxMiwgMTUsIDIzNSwgMTUsIDEyLCAxNSwgMjM1LCAxNCwgMTIsIDE1LCAyMzUsIDEzLCAxMiwgCi0gICAgMTUsIDIzNSwgMTIsIDEyLCAxNSwgMjM1LCAxMSwgMTIsIDE1LCAyMzUsIDEwLCAxMiwgMTUsIDIzNSwgOSwgMTIsIDE1LCAKLSAgICAyMzUsIDgsIDEyLCAxNSwgMjM1LCA3LCAxMiwgMTUsIDIzNSwgNiwgMTIsIDE1LCAyMzUsIDUsIDEyLCAxNSwgMjM1LCA0LCAKLSAgICAxMiwgMTUsIDIzNSwgMywgMTIsIDE1LCAyMzUsIDIsIDEyLCAxNSwgMjM1LCAxLCAxMiwgMTUsIDIzNSwgMCwgMTIsIDE1LCAKLSAgICAyMzQsIDI1NSwgMTIsIDE1LCAyMzQsIDI1NCwgMTIsIDE1LCAyMzQsIDI1MywgMTIsIDE1LCAyMzQsIDI1MiwgMTIsIDE1LCAKLSAgICAyMzQsIDI1MSwgMTIsIDE1LCAyMzQsIDI1MCwgMTIsIDE1LCAyMzQsIDI0OSwgMTIsIDE1LCAyMzQsIDI0OCwgMTIsIDE1LCAKLSAgICAyMzQsIDI0NywgMTIsIDE1LCAyMzQsIDI0NiwgMTIsIDE1LCAyMzQsIDI0NSwgMTIsIDE1LCAyMzQsIDI0NCwgMTIsIDE1LCAKLSAgICAyMzQsIDI0MywgMTIsIDE1LCAyMzQsIDI0MiwgMTIsIDE1LCAyMzQsIDI0MSwgMTIsIDE1LCAyMzQsIDI0MCwgMTIsIDE1LCAKLSAgICAyMzQsIDIzOSwgMTIsIDE1LCAyMzQsIDIzOCwgMTIsIDE1LCAyMzQsIDIzNywgMTIsIDE1LCAyMzQsIDIzNiwgMTIsIDE1LCAKLSAgICAyMzQsIDIzNSwgMTIsIDE1LCAyMzQsIDIzNCwgMTIsIDE1LCAyMzQsIDIzMywgMTIsIDE1LCAyMzQsIDIzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDIzMSwgMTIsIDE1LCAyMzQsIDIzMCwgMTIsIDE1LCAyMzQsIDIyOSwgMTIsIDE1LCAyMzQsIDIyOCwgMTIsIDE1LCAKLSAgICAyMzQsIDIyNywgMTIsIDE1LCAyMzQsIDIyNiwgMTIsIDE1LCAyMzQsIDIyNSwgMTIsIDE1LCAyMzQsIDIyNCwgMTIsIDE1LCAKLSAgICAyMzQsIDIyMywgMTIsIDE1LCAyMzQsIDIyMiwgMTIsIDE1LCAyMzQsIDIyMSwgMTIsIDE1LCAyMzQsIDIyMCwgMTIsIDE1LCAKLSAgICAyMzQsIDIxOSwgMTIsIDE1LCAyMzQsIDIxOCwgMTIsIDE1LCAyMzQsIDIxNywgMTIsIDE1LCAyMzQsIDIxNiwgMTIsIDE1LCAKLSAgICAyMzQsIDIxNSwgMTIsIDE1LCAyMzQsIDIxNCwgMTIsIDE1LCAyMzQsIDIxMywgMTIsIDE1LCAyMzQsIDIxMiwgMTIsIDE1LCAKLSAgICAyMzQsIDIxMSwgMTIsIDE1LCAyMzQsIDIxMCwgMTIsIDE1LCAyMzQsIDIwOSwgMTIsIDE1LCAyMzQsIDIwOCwgMTIsIDE1LCAKLSAgICAyMzQsIDIwNywgMTIsIDE1LCAyMzQsIDIwNiwgMTIsIDE1LCAyMzQsIDIwNSwgMTIsIDE1LCAyMzQsIDIwNCwgMTIsIDE1LCAKLSAgICAyMzQsIDIwMywgMTIsIDE1LCAyMzQsIDIwMiwgMTIsIDE1LCAyMzQsIDIwMSwgMTIsIDE1LCAyMzQsIDIwMCwgMTIsIDE1LCAKLSAgICAyMzQsIDE5OSwgMTIsIDE1LCAyMzQsIDE5OCwgMTIsIDE1LCAyMzQsIDE5NywgMTIsIDE1LCAyMzQsIDE5NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE5NSwgMTIsIDE1LCAyMzQsIDE5NCwgMTIsIDE1LCAyMzQsIDE5MywgMTIsIDE1LCAyMzQsIDE5MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE5MSwgMTIsIDE1LCAyMzQsIDE5MCwgMTIsIDE1LCAyMzQsIDE4OSwgMTIsIDE1LCAyMzQsIDE4OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE4NywgMTIsIDE1LCAyMzQsIDE4NiwgMTIsIDE1LCAyMzQsIDE4NSwgMTIsIDE1LCAyMzQsIDE4NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE4MywgMTIsIDE1LCAyMzQsIDE4MiwgMTIsIDE1LCAyMzQsIDE4MSwgMTIsIDE1LCAyMzQsIDE4MCwgMTIsIDE1LCAKLSAgICAyMzQsIDE3OSwgMTIsIDE1LCAyMzQsIDE3OCwgMTIsIDE1LCAyMzQsIDE3NywgMTIsIDE1LCAyMzQsIDE3NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE3NSwgMTIsIDE1LCAyMzQsIDE3NCwgMTIsIDE1LCAyMzQsIDE3MywgMTIsIDE1LCAyMzQsIDE3MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE3MSwgMTIsIDE1LCAyMzQsIDE3MCwgMTIsIDE1LCAyMzQsIDE2OSwgMTIsIDE1LCAyMzQsIDE2OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE2NywgMTIsIDE1LCAyMzQsIDE2NiwgMTIsIDE1LCAyMzQsIDE2NSwgMTIsIDE1LCAyMzQsIDE2NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE2MywgMTIsIDE1LCAyMzQsIDE2MiwgMTIsIDE1LCAyMzQsIDE2MSwgMTIsIDE1LCAyMzQsIDE2MCwgMTIsIDE1LCAKLSAgICAyMzQsIDE1OSwgMTIsIDE1LCAyMzQsIDE1OCwgMTIsIDE1LCAyMzQsIDE1NywgMTIsIDE1LCAyMzQsIDE1NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE1NSwgMTIsIDE1LCAyMzQsIDE1NCwgMTIsIDE1LCAyMzQsIDE1MywgMTIsIDE1LCAyMzQsIDE1MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE1MSwgMTIsIDE1LCAyMzQsIDE1MCwgMTIsIDE1LCAyMzQsIDE0OSwgMTIsIDE1LCAyMzQsIDE0OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE0NywgMTIsIDE1LCAyMzQsIDE0NiwgMTIsIDE1LCAyMzQsIDE0NSwgMTIsIDE1LCAyMzQsIDE0NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE0MywgMTIsIDE1LCAyMzQsIDE0MiwgMTIsIDE1LCAyMzQsIDE0MSwgMTIsIDE1LCAyMzQsIDE0MCwgMTIsIDE1LCAKLSAgICAyMzQsIDEzOSwgMTIsIDE1LCAyMzQsIDEzOCwgMTIsIDE1LCAyMzQsIDEzNywgMTIsIDE1LCAyMzQsIDEzNiwgMTIsIDE1LCAKLSAgICAyMzQsIDEzNSwgMTIsIDE1LCAyMzQsIDEzNCwgMTIsIDE1LCAyMzQsIDEzMywgMTIsIDE1LCAyMzQsIDEzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDEzMSwgMTIsIDE1LCAyMzQsIDEzMCwgMTIsIDE1LCAyMzQsIDEyOSwgMTIsIDE1LCAyMzQsIDEyOCwgMTIsIDE1LCAKLSAgICAyMzQsIDEyNywgMTIsIDE1LCAyMzQsIDEyNiwgMTIsIDE1LCAyMzQsIDEyNSwgMTIsIDE1LCAyMzQsIDEyNCwgMTIsIDE1LCAKLSAgICAyMzQsIDEyMywgMTIsIDE1LCAyMzQsIDEyMiwgMTIsIDE1LCAyMzQsIDEyMSwgMTIsIDE1LCAyMzQsIDEyMCwgMTIsIDE1LCAKLSAgICAyMzQsIDExOSwgMTIsIDE1LCAyMzQsIDExOCwgMTIsIDE1LCAyMzQsIDExNywgMTIsIDE1LCAyMzQsIDExNiwgMTIsIDE1LCAKLSAgICAyMzQsIDExNSwgMTIsIDE1LCAyMzQsIDExNCwgMTIsIDE1LCAyMzQsIDExMywgMTIsIDE1LCAyMzQsIDExMiwgMTIsIDE1LCAKLSAgICAyMzQsIDExMSwgMTIsIDE1LCAyMzQsIDExMCwgMTIsIDE1LCAyMzQsIDEwOSwgMTIsIDE1LCAyMzQsIDEwOCwgMTIsIDE1LCAKLSAgICAyMzQsIDEwNywgMTIsIDE1LCAyMzQsIDEwNiwgMTIsIDE1LCAyMzQsIDEwNSwgMTIsIDE1LCAyMzQsIDEwNCwgMTIsIDE1LCAKLSAgICAyMzQsIDEwMywgMTIsIDE1LCAyMzQsIDEwMiwgMTIsIDE1LCAyMzQsIDEwMSwgMTIsIDE1LCAyMzQsIDEwMCwgMTIsIDE1LCAKLSAgICAyMzQsIDk5LCAxMiwgMTUsIDIzNCwgOTgsIDEyLCAxNSwgMjM0LCA5NywgMTIsIDE1LCAyMzQsIDk2LCAxMiwgMTUsIDIzNCwgCi0gICAgOTUsIDEyLCAxNSwgMjM0LCA5NCwgMTIsIDE1LCAyMzQsIDkzLCAxMiwgMTUsIDIzNCwgOTIsIDEyLCAxNSwgMjM0LCA5MSwgCi0gICAgMTIsIDE1LCAyMzQsIDkwLCAxMiwgMTUsIDIzNCwgODksIDEyLCAxNSwgMjM0LCA4OCwgMTIsIDE1LCAyMzQsIDg3LCAxMiwgCi0gICAgMTUsIDIzNCwgODYsIDEyLCAxNSwgMjM0LCA4NSwgMTIsIDE1LCAyMzQsIDg0LCAxMiwgMTUsIDIzNCwgODMsIDEyLCAxNSwgCi0gICAgMjM0LCA4MiwgMTIsIDE1LCAyMzQsIDgxLCAxMiwgMTUsIDIzNCwgODAsIDEyLCAxNSwgMjM0LCA3OSwgMTIsIDE1LCAyMzQsIAotICAgIDc4LCAxMiwgMTUsIDIzNCwgNzcsIDEyLCAxNSwgMjM0LCA3NiwgMTIsIDE1LCAyMzQsIDc1LCAxMiwgMTUsIDIzNCwgNzQsIAotICAgIDEyLCAxNSwgMjM0LCA3MywgMTIsIDE1LCAyMzQsIDcyLCAxMiwgMTUsIDIzNCwgNzEsIDEyLCAxNSwgMjM0LCA3MCwgMTIsIAotICAgIDE1LCAyMzQsIDY5LCAxMiwgMTUsIDIzNCwgNjgsIDEyLCAxNSwgMjM0LCA2NywgMTIsIDE1LCAyMzQsIDY2LCAxMiwgMTUsIAotICAgIDIzNCwgNjUsIDEyLCAxNSwgMjM0LCA2NCwgMTIsIDE1LCAyMzQsIDYzLCAxMiwgMTUsIDIzNCwgNjIsIDEyLCAxNSwgMjM0LCAKLSAgICA2MSwgMTIsIDE1LCAyMzQsIDYwLCAxMiwgMTUsIDIzNCwgNTksIDEyLCAxNSwgMjM0LCA1OCwgMTIsIDE1LCAyMzQsIDU3LCAKLSAgICAxMiwgMTUsIDIzNCwgNTYsIDEyLCAxNSwgMjM0LCA1NSwgMTIsIDE1LCAyMzQsIDU0LCAxMiwgMTUsIDIzNCwgNTMsIDEyLCAKLSAgICAxNSwgMjM0LCA1MiwgMTIsIDE1LCAyMzQsIDUxLCAxMiwgMTUsIDIzNCwgNTAsIDEyLCAxNSwgMjM0LCA0OSwgMTIsIDE1LCAKLSAgICAyMzQsIDQ4LCAxMiwgMTUsIDIzNCwgNDcsIDEyLCAxNSwgMjM0LCA0NiwgMTIsIDE1LCAyMzQsIDQ1LCAxMiwgMTUsIDIzNCwgCi0gICAgNDQsIDEyLCAxNSwgMjM0LCA0MywgMTIsIDE1LCAyMzQsIDQyLCAxMiwgMTUsIDIzNCwgNDEsIDEyLCAxNSwgMjM0LCA0MCwgCi0gICAgMTIsIDE1LCAyMzQsIDM5LCAxMiwgMTUsIDIzNCwgMzgsIDEyLCAxNSwgMjM0LCAzNywgMTIsIDE1LCAyMzQsIDM2LCAxMiwgCi0gICAgMTUsIDIzNCwgMzUsIDEyLCAxNSwgMjM0LCAzNCwgMTIsIDE1LCAyMzQsIDMzLCAxMiwgMTUsIDIzNCwgMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAzMSwgMTIsIDE1LCAyMzQsIDMwLCAxMiwgMTUsIDIzNCwgMjksIDEyLCAxNSwgMjM0LCAyOCwgMTIsIDE1LCAyMzQsIAotICAgIDI3LCAxMiwgMTUsIDIzNCwgMjYsIDEyLCAxNSwgMjM0LCAyNSwgMTIsIDE1LCAyMzQsIDI0LCAxMiwgMTUsIDIzNCwgMjMsIAotICAgIDEyLCAxNSwgMjM0LCAyMiwgMTIsIDE1LCAyMzQsIDIxLCAxMiwgMTUsIDIzNCwgMjAsIDEyLCAxNSwgMjM0LCAxOSwgMTIsIAotICAgIDE1LCAyMzQsIDE4LCAxMiwgMTUsIDIzNCwgMTcsIDEyLCAxNSwgMjM0LCAxNiwgMTIsIDE1LCAyMzQsIDE1LCAxMiwgMTUsIAotICAgIDIzNCwgMTQsIDEyLCAxNSwgMjM0LCAxMywgMTIsIDE1LCAyMzQsIDEyLCAxMiwgMTUsIDIzNCwgMTEsIDEyLCAxNSwgMjM0LCAKLSAgICAxMCwgMTIsIDE1LCAyMzQsIDksIDEyLCAxNSwgMjM0LCA4LCAxMiwgMTUsIDIzNCwgNywgMTIsIDE1LCAyMzQsIDYsIDEyLCAKLSAgICAxNSwgMjM0LCA1LCAxMiwgMTUsIDIzNCwgNCwgMTIsIDE1LCAyMzQsIDMsIDEyLCAxNSwgMjM0LCAyLCAxMiwgMTUsIDIzNCwgCi0gICAgMSwgMTIsIDE1LCAyMzQsIDAsIDEyLCAxNSwgMjMzLCAyNTUsIDEyLCAxNSwgMjMzLCAyNTQsIDEyLCAxNSwgMjMzLCAyNTMsIAotICAgIDEyLCAxNSwgMjMzLCAyNTIsIDEyLCAxNSwgMjMzLCAyNTEsIDEyLCAxNSwgMjMzLCAyNTAsIDEyLCAxNSwgMjMzLCAyNDksIAotICAgIDEyLCAxNSwgMjMzLCAyNDgsIDEyLCAxNSwgMjMzLCAyNDcsIDEyLCAxNSwgMjMzLCAyNDYsIDEyLCAxNSwgMjMzLCAyNDUsIAotICAgIDEyLCAxNSwgMjMzLCAyNDQsIDEyLCAxNSwgMjMzLCAyNDMsIDEyLCAxNSwgMjMzLCAyNDIsIDEyLCAxNSwgMjMzLCAyNDEsIAotICAgIDEyLCAxNSwgMjMzLCAyNDAsIDEyLCAxNSwgMjMzLCAyMzksIDEyLCAxNSwgMjMzLCAyMzgsIDEyLCAxNSwgMjMzLCAyMzcsIAotICAgIDEyLCAxNSwgMjMzLCAyMzYsIDEyLCAxNSwgMjMzLCAyMzUsIDEyLCAxNSwgMjMzLCAyMzQsIDEyLCAxNSwgMjMzLCAyMzMsIAotICAgIDEyLCAxNSwgMjMzLCAyMzIsIDEyLCAxNSwgMjMzLCAyMzEsIDEyLCAxNSwgMjMzLCAyMzAsIDEyLCAxNSwgMjMzLCAyMjksIAotICAgIDEyLCAxNSwgMjMzLCAyMjgsIDEyLCAxNSwgMjMzLCAyMjcsIDEyLCAxNSwgMjMzLCAyMjYsIDEyLCAxNSwgMjMzLCAyMjUsIAotICAgIDEyLCAxNSwgMjMzLCAyMjQsIDEyLCAxNSwgMjMzLCAyMjMsIDEyLCAxNSwgMjMzLCAyMjIsIDEyLCAxNSwgMjMzLCAyMjEsIAotICAgIDEyLCAxNSwgMjMzLCAyMjAsIDEyLCAxNSwgMjMzLCAyMTksIDEyLCAxNSwgMjMzLCAyMTgsIDEyLCAxNSwgMjMzLCAyMTcsIAotICAgIDEyLCAxNSwgMjMzLCAyMTYsIDEyLCAxNSwgMjMzLCAyMTUsIDEyLCAxNSwgMjMzLCAyMTQsIDEyLCAxNSwgMjMzLCAyMTMsIAotICAgIDEyLCAxNSwgMjMzLCAyMTIsIDEyLCAxNSwgMjMzLCAyMTEsIDEyLCAxNSwgMjMzLCAyMTAsIDEyLCAxNSwgMjMzLCAyMDksIAotICAgIDEyLCAxNSwgMjMzLCAyMDgsIDEyLCAxNSwgMjMzLCAyMDcsIDEyLCAxNSwgMjMzLCAyMDYsIDEyLCAxNSwgMjMzLCAyMDUsIAotICAgIDEyLCAxNSwgMjMzLCAyMDQsIDEyLCAxNSwgMjMzLCAyMDMsIDEyLCAxNSwgMjMzLCAyMDIsIDEyLCAxNSwgMjMzLCAyMDEsIAotICAgIDEyLCAxNSwgMjMzLCAyMDAsIDEyLCAxNSwgMjMzLCAxOTksIDEyLCAxNSwgMjMzLCAxOTgsIDEyLCAxNSwgMjMzLCAxOTcsIAotICAgIDEyLCAxNSwgMjMzLCAxOTYsIDEyLCAxNSwgMjMzLCAxOTUsIDEyLCAxNSwgMjMzLCAxOTQsIDEyLCAxNSwgMjMzLCAxOTMsIAotICAgIDEyLCAxNSwgMjMzLCAxOTIsIDEyLCAxNSwgMjMzLCAxOTEsIDEyLCAxNSwgMjMzLCAxOTAsIDEyLCAxNSwgMjMzLCAxODksIAotICAgIDEyLCAxNSwgMjMzLCAxODgsIDEyLCAxNSwgMjMzLCAxODcsIDEyLCAxNSwgMjMzLCAxODYsIDEyLCAxNSwgMjMzLCAxODUsIAotICAgIDEyLCAxNSwgMjMzLCAxODQsIDEyLCAxNSwgMjMzLCAxODMsIDEyLCAxNSwgMjMzLCAxODIsIDEyLCAxNSwgMjMzLCAxODEsIAotICAgIDEyLCAxNSwgMjMzLCAxODAsIDEyLCAxNSwgMjMzLCAxNzksIDEyLCAxNSwgMjMzLCAxNzgsIDEyLCAxNSwgMjMzLCAxNzcsIAotICAgIDEyLCAxNSwgMjMzLCAxNzYsIDEyLCAxNSwgMjMzLCAxNzUsIDEyLCAxNSwgMjMzLCAxNzQsIDEyLCAxNSwgMjMzLCAxNzMsIAotICAgIDEyLCAxNSwgMjMzLCAxNzIsIDEyLCAxNSwgMjMzLCAxNzEsIDEyLCAxNSwgMjMzLCAxNzAsIDEyLCAxNSwgMjMzLCAxNjksIAotICAgIDEyLCAxNSwgMjMzLCAxNjgsIDEyLCAxNSwgMjMzLCAxNjcsIDEyLCAxNSwgMjMzLCAxNjYsIDEyLCAxNSwgMjMzLCAxNjUsIAotICAgIDEyLCAxNSwgMjMzLCAxNjQsIDEyLCAxNSwgMjMzLCAxNjMsIDEyLCAxNSwgMjMzLCAxNjIsIDEyLCAxNSwgMjMzLCAxNjEsIAotICAgIDEyLCAxNSwgMjMzLCAxNjAsIDEyLCAxNSwgMjMzLCAxNTksIDEyLCAxNSwgMjMzLCAxNTgsIDEyLCAxNSwgMjMzLCAxNTcsIAotICAgIDEyLCAxNSwgMjMzLCAxNTYsIDEyLCAxNSwgMjMzLCAxNTUsIDEyLCAxNSwgMjMzLCAxNTQsIDEyLCAxNSwgMjMzLCAxNTMsIAotICAgIDEyLCAxNSwgMjMzLCAxNTIsIDEyLCAxNSwgMjMzLCAxNTEsIDEyLCAxNSwgMjMzLCAxNTAsIDEyLCAxNSwgMjMzLCAxNDksIAotICAgIDEyLCAxNSwgMjMzLCAxNDgsIDEyLCAxNSwgMjMzLCAxNDcsIDEyLCAxNSwgMjMzLCAxNDYsIDEyLCAxNSwgMjMzLCAxNDUsIAotICAgIDEyLCAxNSwgMjMzLCAxNDQsIDEyLCAxNSwgMjMzLCAxNDMsIDEyLCAxNSwgMjMzLCAxNDIsIDEyLCAxNSwgMjMzLCAxNDEsIAotICAgIDEyLCAxNSwgMjMzLCAxNDAsIDEyLCAxNSwgMjMzLCAxMzksIDEyLCAxNSwgMjMzLCAxMzgsIDEyLCAxNSwgMjMzLCAxMzcsIAotICAgIDEyLCAxNSwgMjMzLCAxMzYsIDEyLCAxNSwgMjMzLCAxMzUsIDEyLCAxNSwgMjMzLCAxMzQsIDEyLCAxNSwgMjMzLCAxMzMsIAotICAgIDEyLCAxNSwgMjMzLCAxMzIsIDEyLCAxNSwgMjMzLCAxMzEsIDEyLCAxNSwgMjMzLCAxMzAsIDEyLCAxNSwgMjMzLCAxMjksIAotICAgIDEyLCAxNSwgMjMzLCAxMjgsIDEyLCAxNSwgMjMzLCAxMjcsIDEyLCAxNSwgMjMzLCAxMjYsIDEyLCAxNSwgMjMzLCAxMjUsIAotICAgIDEyLCAxNSwgMjMzLCAxMjQsIDEyLCAxNSwgMjMzLCAxMjMsIDIyOCwgMTQsIDIwOSwgMjU1LCAxNjAsIDIxMSwgMjI4LCAKLSAgICAxNjAsIDI0MCwgMjEyLCA4MiwgMTYwLCAyMTcsIDMxLCA4MiwgMTYwLCA0MiwgNTQsIDE2MCwgMjQzLCA5NywgNTQsIDE2MCwgCi0gICAgMjE4LCAyNDYsIDU0LCAxNjAsIDI1MCwgMjM1LCAxNjAsIDI1MCwgMTYwLCAxNjAsIDQ5LCAyMTksIDc2LCAxNjAsIDUwLCAKLSAgICAyMTksIDc2LCAxNjAsIDI1MCwgNTksIDE2MCwgOTEsIDU0LCAxNjAsIDI0NSwgMjMzLCAxNjAsIDIzNSwgMjE5LCAxNjAsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxNjAsIDIxMiwgMCwgMTYwLCAxNywgMjAyLCA4NCwgMTYwLCAxNywgMTA1LCAxNjAsIDE3LCAKLSAgICAxMDgsIDE2MCwgMTcsIDE0NywgMTYwLCAxNywgMTQ5LCAxNjAsIDE3LCAxNzAsIDE2MCwgMTcsIDE5NSwgMTYwLCAxNywgCi0gICAgMjEzLCAxMTEsIDE2MCwgMTcsIDE5OSwgMTYwLCAxNywgMjIyLCA2MywgMTYwLCAyNDUsIDI0MiwgMTYwLCAyMTMsIDE0MywgCi0gICAgMTYwLCAyMjcsIDE3OSwgNTQsIDE2MCwgMjQxLCAzNSwgNTQsIDE2MCwgMjM3LCAyNDcsIDU0LCAxNjAsIDIxNywgNDcsIDgyLCAKLSAgICAxNjAsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNjAsIDgsIDYsIDEsIDYzLCAxNjAsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNjAsIDgsIAotICAgIDYsIDEsIDI0NywgMTI1LCAxNjAsIDgsIDYsIDEsIDI0NSwgNTEsIDE2MCwgOCwgNiwgMSwgNzQsIDE2MCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzQsIDE2MCwgOCwgNiwgMSwgMjM5LCA3NSwgMTYwLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTYwLCA4LCA2LCAxLCAKLSAgICA3NSwgMTYwLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTYwLCA4LCA2LCAxLCAyMzAsIDU0LCAxNjAsIDgsIDYsIDEsIDE1OSwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTYwLCA4LCA2LCAxLCAyMjMsIDE2MywgMTYwLCA4LCA2LCAxLCA3OCwgMTYwLCA4LCAKLSAgICA2LCAxLCAyMTksIDE4NCwgMTYwLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTYwLCA4LCA2LCAxLCAxNDYsIDE2MCwgOCwgNiwgMSwgCi0gICAgMTk0LCAxNjAsIDgsIDYsIDEsIDIxMCwgNjksIDE2MCwgOCwgNiwgMSwgNjgsIDE2MCwgOCwgNiwgMSwgMjA2LCAxNjQsIAotICAgIDE2MCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE2MCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE2MCwgOCwgNiwgMSwgMjAzLCAxMjQsIAotICAgIDE2MCwgOCwgNiwgMSwgMjAyLCAxNTksIDE2MCwgNDksIDUxLCAxNTUsIDE2MCwgMjE2LCA3NCwgMjEyLCAwLCAxNjAsIDUwLCAKLSAgICA1MSwgMTU1LCAxNjAsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNjAsIDEyNCwgMjI3LCAxMTQsIDE2MCwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCAxNjAsIDgsIDUsIDEsIDYzLCAxNjAsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNjAsIDgsIDUsIDEsIDI0NywgMTI1LCAKLSAgICAxNjAsIDgsIDUsIDEsIDI0NSwgNTEsIDE2MCwgOCwgNSwgMSwgNzQsIDE2MCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE2MCwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NSwgMTYwLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTYwLCA4LCA1LCAxLCA3NSwgMTYwLCA4LCA1LCAxLCAKLSAgICAyMzAsIDE4NCwgMTYwLCA4LCA1LCAxLCAyMzAsIDU0LCAxNjAsIDgsIDUsIDEsIDE1OSwgMTYwLCA4LCA1LCAxLCAyMjYsIAotICAgIDE4NSwgMTYwLCA4LCA1LCAxLCAyMjMsIDE2MywgMTYwLCA4LCA1LCAxLCA3OCwgMTYwLCA4LCA1LCAxLCAyMTksIDE4NCwgCi0gICAgMTYwLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTYwLCA4LCA1LCAxLCAxNDYsIDE2MCwgOCwgNSwgMSwgMTk0LCAxNjAsIDgsIDUsIAotICAgIDEsIDIxMCwgNjksIDE2MCwgOCwgNSwgMSwgNjgsIDE2MCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE2MCwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDQsIDE2MCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE2MCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE2MCwgOCwgNSwgMSwgMjAyLCAKLSAgICAxNTksIDE2MCwgNDksIDI0NSwgOTMsIDE1NSwgMTYwLCA4MCwgMjI3LCAxMTQsIDE2MCwgNTAsIDI0NSwgOTMsIDE1NSwgCi0gICAgMTYwLCAyMDgsIDIyNywgMjQ3LCA2MCwgMjA5LCAyNTUsIDU3LCAyMTQsIDcxLCA1NywgMjE0LCA2MCwgNTcsIDIxNCwgNDksIAotICAgIDU3LCAyMTQsIDM3LCA1NywgMjE0LCAyNiwgNTcsIDIxNCwgMTUsIDU3LCAyMTQsIDQsIDU3LCAyMTMsIDI0OSwgNTcsIDIxMywgCi0gICAgMjM4LCA1NywgMjEzLCAyMzAsIDU3LCAyMTMsIDIyOSwgNTcsIDIxMywgMjI4LCA1NywgMjEzLCAyMjcsIDU3LCAyMTMsIAotICAgIDIyNSwgNTcsIDIxMywgMjI0LCA1NywgMjEzLCAyMjMsIDU3LCAyMTMsIDIyMiwgNTcsIDIxMywgMjIxLCA1NywgMjEzLCAKLSAgICAyMjAsIDU3LCAyMTMsIDIxOSwgNTcsIDIxMywgMjE4LCA1NywgMjEzLCAyMTcsIDU3LCAyMTMsIDIxNiwgNTcsIDIxMywgCi0gICAgMjE0LCA1NywgMjEzLCAyMTMsIDU3LCAyMTMsIDIxMiwgNTcsIDIxMywgMjExLCA1NywgMjEzLCAyMTAsIDU3LCAyMTMsIAotICAgIDIwOSwgNTcsIDIxMywgMjA4LCA1NywgMjEzLCAyMDcsIDU3LCAyMTMsIDIwNiwgNTcsIDIxMywgMjA1LCA1NywgMjEzLCAKLSAgICAyMDMsIDU3LCAyMTMsIDIwMiwgNTcsIDIxMywgMjAxLCA1NywgMjEzLCAyMDAsIDU3LCAyMTMsIDE5OSwgNTcsIDIxMywgCi0gICAgMTk4LCA1NywgMjEzLCAxOTcsIDU3LCAyMTMsIDE5NiwgNTcsIDIxMywgMTk1LCA1NywgMjEzLCAxOTQsIDU3LCAyMTMsIAotICAgIDE5MiwgNTcsIDIxMywgMTkxLCA1NywgMjEzLCAxOTAsIDU3LCAyMTMsIDE4OSwgNTcsIDIxMywgMTg4LCA1NywgMjEzLCAKLSAgICAxODcsIDU3LCAyMTMsIDE4NiwgNTcsIDIxMywgMTg1LCA1NywgMjEzLCAxODQsIDU3LCAyMTMsIDE4MywgNTcsIDIxMywgCi0gICAgMTgxLCA1NywgMjEzLCAxODAsIDU3LCAyMTMsIDE3OSwgNTcsIDIxMywgMTc4LCA1NywgMjEzLCAxNzcsIDU3LCAyMTMsIAotICAgIDE3NiwgNTcsIDIxMywgMTc1LCA1NywgMjEzLCAxNzQsIDU3LCAyMTMsIDE3MywgNTcsIDIxMywgMTcyLCA1NywgMjEzLCAKLSAgICAxNzAsIDU3LCAyMTMsIDE2OSwgNTcsIDIxMywgMTY4LCA1NywgMjEzLCAxNjcsIDU3LCAyMTMsIDE2NiwgNTcsIDIxMywgCi0gICAgMTY1LCA1NywgMjEzLCAxNjQsIDU3LCAyMTMsIDE2MywgNTcsIDIxMywgMTYyLCA1NywgMjEzLCAxNjEsIDU3LCAyMTMsIAotICAgIDE1OSwgNTcsIDIxMywgMTU4LCA1NywgMjEzLCAxNTcsIDU3LCAyMTMsIDE1NiwgNTcsIDIxMywgMTU1LCA1NywgMjEzLCAKLSAgICAxNTQsIDU3LCAyMTMsIDE1MywgNTcsIDIxMywgMTUyLCA1NywgMjEzLCAxNTEsIDU3LCAyMTMsIDE1MCwgNTcsIDIxNCwgCi0gICAgMTQ3LCA1NywgMjE0LCAxNDYsIDU3LCAyMTQsIDE0NSwgNTcsIDIxNCwgMTQ0LCA1NywgMjE0LCAxNDMsIDU3LCAyMTQsIAotICAgIDE0MiwgNTcsIDIxNCwgMTQxLCA1NywgMjE0LCAxNDAsIDU3LCAyMTQsIDEzOSwgNTcsIDIxNCwgMTM4LCA1NywgMjE0LCAKLSAgICAxMzYsIDU3LCAyMTQsIDEzNSwgNTcsIDIxNCwgMTM0LCA1NywgMjE0LCAxMzMsIDU3LCAyMTQsIDEzMiwgNTcsIDIxNCwgCi0gICAgMTMxLCA1NywgMjE0LCAxMzAsIDU3LCAyMTQsIDEyOSwgNTcsIDIxNCwgMTI4LCA1NywgMjE0LCAxMjcsIDU3LCAyMTQsIAotICAgIDEyNSwgNTcsIDIxNCwgMTI0LCA1NywgMjE0LCAxMjMsIDU3LCAyMTQsIDEyMiwgNTcsIDIxNCwgMTIxLCA1NywgMjE0LCAKLSAgICAxMjAsIDU3LCAyMTQsIDExOSwgNTcsIDIxNCwgMTE4LCA1NywgMjE0LCAxMTcsIDU3LCAyMTQsIDExNiwgNTcsIDIxNCwgCi0gICAgMTE0LCA1NywgMjE0LCAxMTMsIDU3LCAyMTQsIDExMiwgNTcsIDIxNCwgMTExLCA1NywgMjE0LCAxMTAsIDU3LCAyMTQsIAotICAgIDEwOSwgNTcsIDIxNCwgMTA4LCA1NywgMjE0LCAxMDcsIDU3LCAyMTQsIDEwNiwgNTcsIDIxNCwgMTA1LCA1NywgMjE0LCAKLSAgICAxMDMsIDU3LCAyMTQsIDEwMiwgNTcsIDIxNCwgMTAxLCA1NywgMjE0LCAxMDAsIDU3LCAyMTQsIDk5LCA1NywgMjE0LCA5OCwgCi0gICAgNTcsIDIxNCwgOTcsIDU3LCAyMTQsIDk2LCA1NywgMjE0LCA5NSwgNTcsIDIxNCwgOTQsIDU3LCAyMTQsIDkyLCA1NywgMjE0LCAKLSAgICA5MSwgNTcsIDIxNCwgOTAsIDU3LCAyMTQsIDg5LCA1NywgMjE0LCA4OCwgNTcsIDIxNCwgODcsIDU3LCAyMTQsIDg2LCA1NywgCi0gICAgMjE0LCA4NSwgNTcsIDIxNCwgODQsIDU3LCAyMTQsIDgzLCA1NywgMjE0LCA4MSwgNTcsIDIxNCwgODAsIDU3LCAyMTQsIDc5LCAKLSAgICA1NywgMjE0LCA3OCwgNTcsIDIxNCwgNzcsIDU3LCAyMTQsIDc2LCA1NywgMjE0LCA3NSwgNTcsIDIxNCwgNzQsIDU3LCAyMTQsIAotICAgIDczLCA1NywgMjE0LCA3MiwgNTcsIDIxNCwgNzAsIDU3LCAyMTQsIDY5LCA1NywgMjE0LCA2OCwgNTcsIDIxNCwgNjcsIDU3LCAKLSAgICAyMTQsIDY2LCA1NywgMjE0LCA2NSwgNTcsIDIxNCwgNjQsIDU3LCAyMTQsIDYzLCA1NywgMjE0LCA2MiwgNTcsIDIxNCwgNjEsIAotICAgIDU3LCAyMTQsIDU5LCA1NywgMjE0LCA1OCwgNTcsIDIxNCwgNTcsIDU3LCAyMTQsIDU2LCA1NywgMjE0LCA1NSwgNTcsIDIxNCwgCi0gICAgNTQsIDU3LCAyMTQsIDUzLCA1NywgMjE0LCA1MiwgNTcsIDIxNCwgNTEsIDU3LCAyMTQsIDUwLCA1NywgMjE0LCA0OCwgNTcsIAotICAgIDIxNCwgNDcsIDU3LCAyMTQsIDQ2LCA1NywgMjE0LCA0NSwgNTcsIDIxNCwgNDQsIDU3LCAyMTQsIDQzLCA1NywgMjE0LCA0MiwgCi0gICAgNTcsIDIxNCwgNDEsIDU3LCAyMTQsIDQwLCA1NywgMjE0LCAzOSwgNTcsIDIxNCwgMzYsIDU3LCAyMTQsIDM1LCA1NywgMjE0LCAKLSAgICAzNCwgNTcsIDIxNCwgMzMsIDU3LCAyMTQsIDMyLCA1NywgMjE0LCAzMSwgNTcsIDIxNCwgMzAsIDU3LCAyMTQsIDI5LCA1NywgCi0gICAgMjE0LCAyOCwgNTcsIDIxNCwgMjcsIDU3LCAyMTQsIDI1LCA1NywgMjE0LCAyNCwgNTcsIDIxNCwgMjMsIDU3LCAyMTQsIDIyLCAKLSAgICA1NywgMjE0LCAyMSwgNTcsIDIxNCwgMjAsIDU3LCAyMTQsIDE5LCA1NywgMjE0LCAxOCwgNTcsIDIxNCwgMTcsIDU3LCAyMTQsIAotICAgIDE2LCA1NywgMjE0LCAxNCwgNTcsIDIxNCwgMTMsIDU3LCAyMTQsIDEyLCA1NywgMjE0LCAxMSwgNTcsIDIxNCwgMTAsIDU3LCAKLSAgICAyMTQsIDksIDU3LCAyMTQsIDgsIDU3LCAyMTQsIDcsIDU3LCAyMTQsIDYsIDU3LCAyMTQsIDUsIDU3LCAyMTQsIDMsIDU3LCAKLSAgICAyMTQsIDIsIDU3LCAyMTQsIDEsIDU3LCAyMTQsIDAsIDU3LCAyMTMsIDI1NSwgNTcsIDIxMywgMjU0LCA1NywgMjEzLCAyNTMsIAotICAgIDU3LCAyMTMsIDI1MiwgNTcsIDIxMywgMjUxLCA1NywgMjEzLCAyNTAsIDU3LCAyMTMsIDI0OCwgNTcsIDIxMywgMjQ3LCA1NywgCi0gICAgMjEzLCAyNDYsIDU3LCAyMTMsIDI0NSwgNTcsIDIxMywgMjQ0LCA1NywgMjEzLCAyNDMsIDU3LCAyMTMsIDI0MiwgNTcsIAotICAgIDIxMywgMjQxLCA1NywgMjEzLCAyNDAsIDU3LCAyMTMsIDIzOSwgNTcsIDIxMywgMjM3LCA1NywgMjEzLCAyMzYsIDU3LCAKLSAgICAyMTMsIDIzNSwgNTcsIDIxMywgMjM0LCA1NywgMjEzLCAyMzMsIDU3LCAyMTMsIDIzMiwgNTcsIDIxMywgMjMxLCAyMjEsIAotICAgIDQ4LCAyMjEsIDUwLCAyMTEsIDkwLCA3NiwgMjM3LCA2MSwgMjEyLCAzLCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDIxMSwgCi0gICAgMTIsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgMjQwLCAyNDAsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMjQxLCA0NywgMjQxLCAKLSAgICA3MSwgMjQxLCA3MiwgMjUxLCAxMzAsIDI1MSwgMTMxLCAyNTEsIDI3LCAyNDgsIDEzMSwgMjQ5LCAxOSwgMjQ3LCAxOTksIAotICAgIDE2NywgMjEwLCA1LCAyMzYsIDEwNiwgMjEwLCA1LCAyMzYsIDMxLCAyMTAsIDEwLCAyMjcsIDExNSwgMjQwLCA1MSwgMjIyLCAKLSAgICAyMTQsIDIyNywgMTE0LCAyNDEsIDg0LCA3NiwgMjI3LCAxMTQsIDIyNywgMTYzLCAyMjEsIDI1MywgMjQxLCA1MCwgMjI3LCAKLSAgICAxMTUsIDIxMCwgNSwgODAsIDIxMCwgNSwgMjA0LCAxNjUsIDIzOSwgMTU5LCAyNDAsIDUxLCAyNDAsIDMwLCAyNDcsIDI1LCAKLSAgICAyMTYsIDc3LCAyNDUsIDE0NywgMjEzLCA3LCAyMTksIDIxMSwgMjI3LCA0MSwgMTA1LCAyMTIsIDEzLCAyMTMsIDcsIDIzMSwgCi0gICAgNDksIDIyNywgNDEsIDIwMiwgODQsIDIxMiwgMTYyLCAyNDQsIDEzOSwgMjI3LCAxMDUsIDI0MSwgOSwgMjQzLCAxMjMsIAotICAgIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMjQ0LCAxMjgsIDI0NCwgOCwgMjQ1LCAxODQsIDEwOCwgMjQ0LCAxMjcsIDI0NCwgOCwgCi0gICAgMjQ1LCAxODQsIDE0NywgMjQ0LCAxMjYsIDI0NCwgOCwgMjQ1LCAxODQsIDE0OSwgMjQ0LCAxMjUsIDE4MiwgMjUxLCAxMzAsIAotICAgIDIyMywgODksIDIxMCwgOTUsIDIzMSwgMTEyLCAyMTAsIDk5LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDYsIDI0OCwgMzMsIDI0MCwgCi0gICAgMjQ3LCAyNDcsIDU5LCAyNDcsIDYxLCAyNDEsIDg0LCA3NiwgMjI1LCA5LCAyNDEsIDQ4LCAyMTAsIDI0MiwgMjExLCAzLCAKLSAgICAyNDEsIDksIDI0MSwgMTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxNDksIDI0MCwgMTEsIDIxMywgMTMwLCAyMzksIDExMiwgCi0gICAgMjMxLCAyNSwgMjEzLCAxMzEsIDE0NywgMjM3LCAyMzgsIDIxMywgMTMwLCAyMzcsIDIzNSwgMjMxLCAyNSwgMjEzLCAxMzEsIAotICAgIDEwOCwgMjE2LCAxNDksIDIxMywgMTMwLCAyMTUsIDE1MCwgMjMxLCAyNSwgMjEzLCAxMzEsIDEwNSwgMjA2LCAyMzYsIDIxMywgCi0gICAgMTMwLCAyMDYsIDE5MywgMjExLCAyMzEsIDI0NCwgNDYsIDI0NCwgNDgsIDIxOSwgMTU3LCAyNDYsIDE4MiwgMjE5LCAxNTksIAotICAgIDEzOCwgMjIwLCA4MCwgMjE3LCAyNDAsIDIzNiwgMTA5LCAyNDcsIDIxOCwgMjE4LCAyMzYsIDIzNywgMjcsIDI0NywgMjMwLCAKLSAgICAyMjEsIDE5MiwgMjQ3LCAyMTgsIDIzNywgMjcsIDIyMywgNTMsIDIzMSwgMzUsIDIzMSwgMzcsIDIyMiwgMjA4LCAyMjcsIAotICAgIDExNCwgMjIyLCAyMzEsIDIxMSwgOTAsIDc2LCAyMTQsIDE1MiwgMjUwLCAxMjAsIDIxMSwgMTY0LCAyNDEsIDg0LCA3NiwgCi0gICAgMjE0LCAxNTIsIDI1MCwgMTIwLCAyNDEsIDEyLCAxNjcsIDIxMCwgNiwgMjEzLCAxMTcsIDIzNiwgMTA2LCAyMTAsIDYsIAotICAgIDIxMywgMTE3LCAyMzYsIDI4LCAxNjcsIDIxMCwgNiwgMywgMjMwLCA2NiwgMjM2LCAxMDYsIDIxMCwgNiwgMywgMjMwLCA2NiwgCi0gICAgMjM2LCAyOSwgMjI3LCAxMTUsIDIxMCwgNiwgMjEzLCAxMTcsIDgwLCAyMTAsIDYsIDIxMywgMTE3LCAyMDQsIDE2NCwgMjE5LCAKLSAgICA2OSwgMjI3LCAxMTUsIDIzOSwgMTUxLCAyMTksIDY5LCAyMjcsIDExNSwgMjQyLCA3MCwgMjE4LCA4NywgMjE5LCA2OSwgCi0gICAgMjI3LCAxMTUsIDI0OSwgMTgsIDIxOSwgNjksIDIyNywgMTE1LCAyMDYsIDIyNCwgMjE4LCA4MiwgMjE2LCA3NCwgMjI3LCAKLSAgICAxMTUsIDI0MCwgNTEsIDIxNiwgNzQsIDIzMSwgMzUsIDIxNiwgNTcsIDIxMiwgMTIwLCAyMTMsIDcsIDEwOCwgMjEyLCAxMTcsIAotICAgIDIxMSwgMTY2LCAyMTIsIDEyMCwgMjEzLCA3LCAxNDcsIDIxMiwgMTE2LCAyMTEsIDE2NSwgMjQ0LCA4LCAyNDUsIDE4NCwgCi0gICAgMjExLCAzNCwgMjQ0LCAxMjMsIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA1LCAyMTcsIDIyNywgMjA2LCAxOTAsIDIxNywgMTkwLCAKLSAgICAyMTcsIDIyNywgMjA2LCAxOTIsIDEwOCwgMjE3LCAyMjcsIDIwNiwgMTg5LCAyMTcsIDE4OSwgMjEzLCAxMTgsIDIwOCwgCi0gICAgMTA0LCAyMTEsIDg5LCAyMTEsIDE3LCAyNDcsIDYwLCAyNDYsIDE4MiwgMjQ3LCAxLCAyMjQsIDIyNCwgMjA0LCAxMDMsIAotICAgIDIyMywgMTgxLCAyMTEsIDkwLCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyMTEsIDkwLCA3NiwgMjE3LCAyMDgsIDI1MCwgCi0gICAgMTIwLCAyMTEsIDIzMCwgMjQxLCA4NCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjQxLCA4NCwgNzYsIDIxNywgMjA4LCAKLSAgICAyNTAsIDEyMCwgMjQxLCA0NSwgMjExLCA5MCwgNzYsIDIxMSwgMzQsIDIxMSwgMjQ1LCAyMTIsIDEyMCwgMjM4LCAzLCAxNjcsIAotICAgIDIzMCwgMjQxLCAyMTMsIDk1LCAyMTIsIDEyMCwgMTY3LCAyMzAsIDI0MSwgMjE0LCAxOTEsIDI0NSwgMTg0LCAyMTMsIDEyNywgCi0gICAgMjMwLCAyNDEsIDI0NSwgMTExLCAyMTEsIDM1LCAyMDksIDEzOCwgMjExLCAxMDgsIDIyMCwgMCwgMjEwLCA4NCwgMjQ1LCAKLSAgICAyMzIsIDIxOSwgMjI2LCAyMTcsIDIyOCwgMjI0LCAyMjMsIDIxOCwgNzIsIDI1MCwgMTU2LCAyMTcsIDIyMiwgMjQ1LCAyMzIsIAotICAgIDI1MCwgMTcyLCAyMjMsIDQxLCAyMTIsIDE3MSwgOCwgNiwgMSwgMjM4LCAxMTksIDgsIDUsIDEsIDIzOCwgMTE5LCAyNDYsIAotICAgIDIwMSwgMjUxLCA4LCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgMjIyLCAyMDAsIDEsIDIyNywgCi0gICAgNjgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyMzksIDE3OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDI0MCwgNjMsIDIyOCwgCi0gICAgMTIsIDEsIDIxNSwgMjI3LCAyMjgsIDEyLCAxLCAyMjcsIDQ5LCA3NywgMTMxLCAyNDgsIDQ1LCAyMTIsIDIzOCwgMjM4LCAKLSAgICA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDIzOSwgODksIDIzOSwgODgsIDIzOSwgODcsIDIyMywgMTgzLCAyMDEsIDI0MywgCi0gICAgMjAxLCAyNDQsIDIwMSwgMjQ2LCAyMjYsIDI0MywgMjE1LCAyMzUsIDIyNiwgMjQ1LCAyMTUsIDIzNywgMjE5LCAzNywgMjI2LCAKLSAgICAyNDIsIDIxNSwgMjM0LCAyMjEsIDIyMywgMjI0LCA4NiwgMjA0LCAyLCAyMjYsIDI0NCwgMjE1LCAyMzYsIDIzOSwgMTExLCAKLSAgICAyMTksIDM2LCAyMDQsIDUyLCAyNDEsIDEwNywgMjM5LCA5OSwgMjI0LCAxNTQsIDIyMCwgMzIsIDIwNiwgMTk0LCA5NywgCi0gICAgMjI0LCAxNTQsIDI0NCwgMTQ1LCA5NywgOTYsIDIwOCwgODQsIDUzLCAzLCA1MiwgODAsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAotICAgIDMsIDUyLCA4MCwgOTUsIDExLCA0LCAyMzAsIDE5OSwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIAotICAgIDIyNywgMTg1LCAxNTUsIDIwNSwgMTY1LCAyMDUsIDU0LCAyMDQsIDI0MiwgMjA0LCAyMzEsIDIwNCwgMjIwLCAyMDQsIDIwOSwgCi0gICAgMjA0LCAxOTgsIDIwNCwgMTg3LCAyMDQsIDE3NiwgMjA1LCAxNjQsIDIwNSwgMTUzLCAyMDUsIDE0MiwgMjA1LCAxMzEsIAotICAgIDIwNSwgMTIwLCAyMDUsIDEwOSwgMjA1LCA5OCwgMjQ3LCAxMzAsIDIxOSwgMjQxLCA4MiwgMjQ4LCAxMywgMjAxLCAyNDUsIAotICAgIDksIDIsIDIyMSwgNTcsIDIwOSwgMTQxLCA5LCAyLCAyMjEsIDU3LCAxMTUsIDIyMSwgNTcsIDI0NywgMTYxLCAxMTUsIDI0NywgCi0gICAgMTYwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIwNiwgNjUsIDIwNSwgODcsIDIwNSwgNzYsIAotICAgIDIwNSwgNjUsIDIwNSwgNTMsIDIwNSwgNDIsIDIwNSwgMzEsIDIwNSwgMjAsIDIwNSwgOSwgMjA0LCAyNTQsIDIwNCwgMjQ2LCAKLSAgICAyMDQsIDI0NSwgMjA0LCAyNDQsIDIwNCwgMjQzLCAyMDQsIDI0MSwgMjA0LCAyNDAsIDIwNCwgMjM5LCAyMDQsIDIzOCwgCi0gICAgMjA0LCAyMzcsIDIwNCwgMjM2LCAyMDQsIDIzNSwgMjA0LCAyMzQsIDIwNCwgMjMzLCAyMDQsIDIzMiwgMjA0LCAyMzAsIAotICAgIDIwNCwgMjI5LCAyMDQsIDIyOCwgMjA0LCAyMjcsIDIwNCwgMjI2LCAyMDQsIDIyNSwgMjA0LCAyMjQsIDIwNCwgMjIzLCAKLSAgICAyMDQsIDIyMiwgMjA0LCAyMjEsIDIwNCwgMjE5LCAyMDQsIDIxOCwgMjA0LCAyMTcsIDIwNCwgMjE2LCAyMDQsIDIxNSwgCi0gICAgMjA0LCAyMTQsIDIwNCwgMjEzLCAyMDQsIDIxMiwgMjA0LCAyMTEsIDIwNCwgMjEwLCAyMDQsIDIwOCwgMjA0LCAyMDcsIAotICAgIDIwNCwgMjA2LCAyMDQsIDIwNSwgMjA0LCAyMDQsIDIwNCwgMjAzLCAyMDQsIDIwMiwgMjA0LCAyMDEsIDIwNCwgMjAwLCAKLSAgICAyMDQsIDE5OSwgMjA0LCAxOTcsIDIwNCwgMTk2LCAyMDQsIDE5NSwgMjA0LCAxOTQsIDIwNCwgMTkzLCAyMDQsIDE5MiwgCi0gICAgMjA0LCAxOTEsIDIwNCwgMTkwLCAyMDQsIDE4OSwgMjA0LCAxODgsIDIwNCwgMTg2LCAyMDQsIDE4NSwgMjA0LCAxODQsIAotICAgIDIwNCwgMTgzLCAyMDQsIDE4MiwgMjA0LCAxODEsIDIwNCwgMTgwLCAyMDQsIDE3OSwgMjA0LCAxNzgsIDIwNCwgMTc3LCAKLSAgICAyMDQsIDE3NSwgMjA0LCAxNzQsIDIwNCwgMTczLCAyMDQsIDE3MiwgMjA0LCAxNzEsIDIwNCwgMTcwLCAyMDQsIDE2OSwgCi0gICAgMjA0LCAxNjgsIDIwNCwgMTY3LCAyMDQsIDE2NiwgMjA1LCAxNjMsIDIwNSwgMTYyLCAyMDUsIDE2MSwgMjA1LCAxNjAsIAotICAgIDIwNSwgMTU5LCAyMDUsIDE1OCwgMjA1LCAxNTcsIDIwNSwgMTU2LCAyMDUsIDE1NSwgMjA1LCAxNTQsIDIwNSwgMTUyLCAKLSAgICAyMDUsIDE1MSwgMjA1LCAxNTAsIDIwNSwgMTQ5LCAyMDUsIDE0OCwgMjA1LCAxNDcsIDIwNSwgMTQ2LCAyMDUsIDE0NSwgCi0gICAgMjA1LCAxNDQsIDIwNSwgMTQzLCAyMDUsIDE0MSwgMjA1LCAxNDAsIDIwNSwgMTM5LCAyMDUsIDEzOCwgMjA1LCAxMzcsIAotICAgIDIwNSwgMTM2LCAyMDUsIDEzNSwgMjA1LCAxMzQsIDIwNSwgMTMzLCAyMDUsIDEzMiwgMjA1LCAxMzAsIDIwNSwgMTI5LCAKLSAgICAyMDUsIDEyOCwgMjA1LCAxMjcsIDIwNSwgMTI2LCAyMDUsIDEyNSwgMjA1LCAxMjQsIDIwNSwgMTIzLCAyMDUsIDEyMiwgCi0gICAgMjA1LCAxMjEsIDIwNSwgMTE5LCAyMDUsIDExOCwgMjA1LCAxMTcsIDIwNSwgMTE2LCAyMDUsIDExNSwgMjA1LCAxMTQsIAotICAgIDIwNSwgMTEzLCAyMDUsIDExMiwgMjA1LCAxMTEsIDIwNSwgMTEwLCAyMDUsIDEwOCwgMjA1LCAxMDcsIDIwNSwgMTA2LCAKLSAgICAyMDUsIDEwNSwgMjA1LCAxMDQsIDIwNSwgMTAzLCAyMDUsIDEwMiwgMjA1LCAxMDEsIDIwNSwgMTAwLCAyMDUsIDk5LCAyMDUsIAotICAgIDk3LCAyMDUsIDk2LCAyMDUsIDk1LCAyMDUsIDk0LCAyMDUsIDkzLCAyMDUsIDkyLCAyMDUsIDkxLCAyMDUsIDkwLCAyMDUsIAotICAgIDg5LCAyMDUsIDg4LCAyMDUsIDg2LCAyMDUsIDg1LCAyMDUsIDg0LCAyMDUsIDgzLCAyMDUsIDgyLCAyMDUsIDgxLCAyMDUsIAotICAgIDgwLCAyMDUsIDc5LCAyMDUsIDc4LCAyMDUsIDc3LCAyMDUsIDc1LCAyMDUsIDc0LCAyMDUsIDczLCAyMDUsIDcyLCAyMDUsIAotICAgIDcxLCAyMDUsIDcwLCAyMDUsIDY5LCAyMDUsIDY4LCAyMDUsIDY3LCAyMDUsIDY2LCAyMDUsIDY0LCAyMDUsIDYzLCAyMDUsIAotICAgIDYyLCAyMDUsIDYxLCAyMDUsIDYwLCAyMDUsIDU5LCAyMDUsIDU4LCAyMDUsIDU3LCAyMDUsIDU2LCAyMDUsIDU1LCAyMDUsIAotICAgIDUyLCAyMDUsIDUxLCAyMDUsIDUwLCAyMDUsIDQ5LCAyMDUsIDQ4LCAyMDUsIDQ3LCAyMDUsIDQ2LCAyMDUsIDQ1LCAyMDUsIAotICAgIDQ0LCAyMDUsIDQzLCAyMDUsIDQxLCAyMDUsIDQwLCAyMDUsIDM5LCAyMDUsIDM4LCAyMDUsIDM3LCAyMDUsIDM2LCAyMDUsIAotICAgIDM1LCAyMDUsIDM0LCAyMDUsIDMzLCAyMDUsIDMyLCAyMDUsIDMwLCAyMDUsIDI5LCAyMDUsIDI4LCAyMDUsIDI3LCAyMDUsIAotICAgIDI2LCAyMDUsIDI1LCAyMDUsIDI0LCAyMDUsIDIzLCAyMDUsIDIyLCAyMDUsIDIxLCAyMDUsIDE5LCAyMDUsIDE4LCAyMDUsIAotICAgIDE3LCAyMDUsIDE2LCAyMDUsIDE1LCAyMDUsIDE0LCAyMDUsIDEzLCAyMDUsIDEyLCAyMDUsIDExLCAyMDUsIDEwLCAyMDUsIAotICAgIDgsIDIwNSwgNywgMjA1LCA2LCAyMDUsIDUsIDIwNSwgNCwgMjA1LCAzLCAyMDUsIDIsIDIwNSwgMSwgMjA1LCAwLCAyMDQsIAotICAgIDI1NSwgMjA0LCAyNTMsIDIwNCwgMjUyLCAyMDQsIDI1MSwgMjA0LCAyNTAsIDIwNCwgMjQ5LCAyMDQsIDI0OCwgMjA0LCAKLSAgICAyNDcsIDgsIDYsIDEsIDM0LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDgwLCAKLSAgICAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCAKLSAgICA1LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCA4MCwgCi0gICAgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIAotICAgIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgCi0gICAgMTY1LCA4LCA1LCAxLCAyMjIsIDIwNiwgMywgMjA4LCAyMjgsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCi0gICAgNTYsIDgsIDUsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAotICAgIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgCi0gICAgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgODAsIDIyNywgMTE1LCA1NiwgCi0gICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIAotICAgIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDIyMCwgNjMsIAotICAgIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIAotICAgIDYzLCAyNSwgNzAsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCAKLSAgICA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAKLSAgICAyMDgsIDIyNywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIwOCwgMjI3LCAKLSAgICA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCAKLSAgICA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMjUxLCAxMTAsIDMsIDIzNywgMjUzLCAKLSAgICA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAxNjUsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMDYsIDE2NSwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NSwgMywgMTY1LCA4LCA1LCAxLCAKLSAgICAyMTQsIDE5MywgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNCwgMTkzLCAzLCAxNjUsIDgsIDUsIDEsIDIzNiwgMTE1LCAyMTQsIAotICAgIDE5MywgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNiwgMTE1LCAyMTQsIDE5MywgMywgMTY1LCAxMCwgMjEzLCAxMjcsIDg5LCAKLSAgICAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCAKLSAgICA3MCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgMjEzLCAxMjcsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzMsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgNjgsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAyMTMsIDEwLCAyMTMsIDEyNywgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgNzQsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMDksIDEwLCAKLSAgICAyMTMsIDEyNywgMjIxLCAxNzksIDMsIDIyOSwgMTg5LCAxNzksIDEsIDIyOSwgMTE5LCA0NCwgMTA5LCAyMzAsIDU0LCA0NCwgCi0gICAgMTA5LCAyMjIsIDIwNSwgNDQsIDEwOSwgMjQ3LCAxMjUsIDQ0LCAxMDksIDIyMSwgMTMsIDQ0LCAxMDksIDIwNywgMjQ0LCAKLSAgICA0NCwgMTA5LCAyMjEsIDIyOCwgNDQsIDEwOSwgMjEwLCA2OSwgNDQsIDEwOSwgMjIzLCAxNjMsIDQ0LCAxMDksIDIxOSwgCi0gICAgMTg0LCA0NCwgMTA5LCAyMjYsIDE4NSwgNDQsIDEwOSwgMjAzLCAxMjQsIDQ0LCAxMDksIDE0NiwgNDQsIDEwOSwgMTU5LCAKLSAgICA0NCwgMTA5LCAyMDYsIDE2NCwgNDQsIDEwOSwgMjI3LCA2OSwgNDQsIDEwOSwgMjI3LCA3OCwgNDQsIDEwOSwgMjE1LCAxODYsIAotICAgIDQ0LCAxMDksIDIyMSwgMjEwLCA0NCwgMTA5LCAyMzAsIDE4NCwgNDQsIDEwOSwgMjEzLCA5MiwgNDQsIDEwOSwgMjExLCAKLSAgICAxNjcsIDQ0LCAxMDksIDE5NCwgNDQsIDEwOSwgMjM3LCAxNzEsIDQ0LCAxMDksIDIyOCwgMjI0LCA0NCwgNCwgMjMwLCA0MSwgCi0gICAgNDQsIDQsIDIyOSwgMTAwLCA0NCwgNCwgMjI5LCA4NywgNDQsIDQsIDIyOCwgMjA5LCA0NCwgNCwgMjI4LCAxNzQsIDQ0LCA0LCAKLSAgICAyMjksIDIwMSwgNDQsIDQsIDIyOSwgMTk4LCA0NCwgNCwgMjMwLCAxOCwgNDQsIDQsIDIyOSwgMjYsIDQ0LCA0LCAyMjksIDYsIAotICAgIDQ0LCA0LCAyMjksIDIxOSwgNDQsIDQsIDIyMiwgMjAyLCA0NCwgNCwgMjIyLCAxNTEsIDQ0LCA0LCAyMjIsIDE0NywgNDQsIAotICAgIDQsIDIyMiwgMTE2LCA0NCwgNCwgMjIyLCAxMDgsIDQ0LCA0LCAyMjIsIDE5MCwgNDQsIDQsIDIyMiwgMTg4LCA0NCwgNCwgCi0gICAgMjIyLCAxOTksIDQ0LCA0LCAyMjIsIDEyOCwgNDQsIDQsIDIyMiwgMTIzLCA0NCwgNCwgMjIyLCAxOTIsIDQ0LCA0LCAyNDcsIAotICAgIDkxLCA0NCwgNCwgMjQ2LCA3OSwgNDQsIDQsIDI0NiwgNjksIDQ0LCA0LCAyNDUsIDExMCwgNDQsIDQsIDI0NSwgNzYsIDQ0LCAKLSAgICA0LCAyNDYsIDIzOCwgNDQsIDQsIDI0NiwgMjMwLCA0NCwgNCwgMjQ3LCA4MCwgNDQsIDQsIDI0NSwgMjU0LCA0NCwgNCwgCi0gICAgMjQ1LCAxODAsIDQ0LCA0LCAyNDcsIDE1LCA0NCwgNCwgMjIxLCAxMCwgNDQsIDQsIDIyMCwgMjQ4LCA0NCwgNCwgMjIwLCAKLSAgICAyNDMsIDQ0LCA0LCAyMjAsIDIyNiwgNDQsIDQsIDIyMCwgMjE4LCA0NCwgNCwgMjIxLCAxLCA0NCwgNCwgMjIxLCAwLCA0NCwgCi0gICAgNCwgMjIxLCA3LCA0NCwgNCwgMjIwLCAyMzMsIDQ0LCA0LCAyMjAsIDIzMCwgNDQsIDQsIDIyMSwgNCwgNDQsIDQsIDIwNywgCi0gICAgMjQwLCA0NCwgNCwgMjA3LCAyMjAsIDQ0LCA0LCAyMDcsIDIxOSwgNDQsIDQsIDIwNywgMjA4LCA0NCwgNCwgMjA3LCAyMDUsIAotICAgIDQ0LCA0LCAyMDcsIDIzNiwgNDQsIDQsIDIwNywgMjM1LCA0NCwgNCwgMjA3LCAyMzksIDQ0LCA0LCAyMDcsIDIxOCwgNDQsIAotICAgIDQsIDIwNywgMjE3LCA0NCwgNCwgMjA3LCAyMzgsIDQ0LCA0LCAyMjEsIDIyNiwgNDQsIDQsIDIyMSwgMjEyLCA0NCwgNCwgCi0gICAgMjIxLCAyMTEsIDQ0LCA0LCAyMjEsIDE5NSwgNDQsIDQsIDIyMSwgMTk0LCA0NCwgNCwgMjIxLCAyMjIsIDQ0LCA0LCAyMjEsIAotICAgIDIyMSwgNDQsIDQsIDIyMSwgMjI1LCA0NCwgNCwgMjIxLCAxOTcsIDQ0LCA0LCAyMjEsIDE5NiwgNDQsIDQsIDIyMSwgMjI0LCAKLSAgICA0NCwgNCwgMjEwLCAxOCwgNDQsIDQsIDIwOSwgMiwgNDQsIDQsIDIwOCwgMjQyLCA0NCwgNCwgMjA3LCAyMDMsIDQ0LCA0LCAKLSAgICAyMDcsIDE2NSwgNDQsIDQsIDIwOSwgMTg3LCA0NCwgNCwgMjA5LCAxNzYsIDQ0LCA0LCAyMDksIDI1MCwgNDQsIDQsIDEzNSwgCi0gICAgNDQsIDQsIDIwOCwgMTQ4LCA0NCwgNCwgMjA5LCAyMDcsIDQ0LCA0LCAyMjMsIDEwNiwgNDQsIDQsIDIyMiwgMTAwLCA0NCwgCi0gICAgNCwgMjIyLCA3NSwgNDQsIDQsIDIyMSwgODQsIDQ0LCA0LCAyMjEsIDI1LCA0NCwgNCwgMjIyLCAyNDAsIDQ0LCA0LCAyMjIsIAotICAgIDIzNSwgNDQsIDQsIDIyMywgOTIsIDQ0LCA0LCAyMjEsIDE5MSwgNDQsIDQsIDIyMSwgMTgwLCA0NCwgNCwgMjIzLCA2NSwgCi0gICAgNDQsIDQsIDIxOSwgMTY4LCA0NCwgNCwgMjE4LCAxNjcsIDQ0LCA0LCAyMTgsIDEyOSwgNDQsIDQsIDIxNywgMTkxLCA0NCwgCi0gICAgNCwgMjE3LCAxNTcsIDQ0LCA0LCAyMTksIDM0LCA0NCwgNCwgMjE5LCAyMywgNDQsIDQsIDIxOSwgMTQ4LCA0NCwgNCwgMjE4LCAKLSAgICA2OSwgNDQsIDQsIDIxOCwgNDUsIDQ0LCA0LCAyMTksIDQ4LCA0NCwgNCwgMjI1LCAxNzUsIDQ0LCA0LCAyMjQsIDE1NSwgNDQsIAotICAgIDQsIDIyNCwgMTI1LCA0NCwgNCwgMjIzLCAyNDYsIDQ0LCA0LCAyMjMsIDE5MiwgNDQsIDQsIDIyNSwgMjAsIDQ0LCA0LCAKLSAgICAyMjUsIDgsIDQ0LCA0LCAyMjUsIDE0MCwgNDQsIDQsIDIyNCwgODIsIDQ0LCA0LCAyMjQsIDM1LCA0NCwgNCwgMjI1LCA2NywgCi0gICAgNDQsIDQsIDIwMywgMTEwLCA0NCwgNCwgMjAzLCAxMSwgNDQsIDQsIDIwMywgMiwgNDQsIDQsIDIwMiwgMjEzLCA0NCwgNCwgCi0gICAgMjAyLCAxODEsIDQ0LCA0LCAyMDMsIDUyLCA0NCwgNCwgMjAzLCA0OSwgNDQsIDQsIDIwMywgODksIDQ0LCA0LCAyMDIsIAotICAgIDI0NywgNDQsIDQsIDIwMiwgMjMyLCA0NCwgNCwgMjAzLCA2MiwgNDQsIDQsIDIxNiwgMjE2LCA0NCwgNCwgMjE2LCA1NywgCi0gICAgNDQsIDQsIDIxNiwgMywgNDQsIDQsIDIxNSwgMTQ1LCA0NCwgNCwgMjE1LCAxMTQsIDQ0LCA0LCAyMTYsIDE1OCwgNDQsIDQsIAotICAgIDIxNiwgMTM1LCA0NCwgNCwgMjE2LCAxOTcsIDQ0LCA0LCAyMTUsIDIyNywgNDQsIDQsIDIxNSwgMjA4LCA0NCwgNCwgMjE2LCAKLSAgICAxNjcsIDQ0LCA0LCAyMjgsIDExMiwgNDQsIDQsIDIyNywgMTQ4LCA0NCwgNCwgMjI3LCAxMzAsIDQ0LCA0LCAyMjYsIDIzOSwgCi0gICAgNDQsIDQsIDIyNiwgMjEwLCA0NCwgNCwgMjI3LCAyMzQsIDQ0LCA0LCAyMjcsIDIyNiwgNDQsIDQsIDIyOCwgODYsIDQ0LCA0LCAKLSAgICAyMjcsIDQ5LCA0NCwgNCwgMjI3LCAxOCwgNDQsIDQsIDIyNywgMjUxLCA0NCwgNCwgMjA2LCA4NSwgNDQsIDQsIDIwNSwgCi0gICAgMjMwLCA0NCwgNCwgMjA1LCAyMTUsIDQ0LCA0LCAyMDQsIDE2MywgNDQsIDQsIDIwNCwgMTU2LCA0NCwgNCwgMjA2LCA1NSwgCi0gICAgNDQsIDQsIDIwNiwgNTAsIDQ0LCA0LCAyMDYsIDgxLCA0NCwgNCwgMjA1LCAxODksIDQ0LCA0LCAyMDUsIDE3NiwgNDQsIDQsIAotICAgIDIwNiwgNjEsIDQ0LCA0LCAyMjcsIDY3LCA0NCwgNCwgMjI3LCA2MiwgNDQsIDQsIDIyNywgNjEsIDQ0LCA0LCAyMjcsIDU4LCAKLSAgICA0NCwgNCwgMjI3LCA1NywgNDQsIDQsIDIyNywgNjQsIDQ0LCA0LCAyMjcsIDYzLCA0NCwgNCwgMjI3LCA2NiwgNDQsIDQsIAotICAgIDIyNywgNjAsIDQ0LCA0LCAyMjcsIDU5LCA0NCwgNCwgMjI3LCA2NSwgNDQsIDQsIDIyNywgNzYsIDQ0LCA0LCAyMjcsIDcxLCAKLSAgICA0NCwgNCwgMjI3LCA3MCwgNDQsIDQsIDIyNywgNTQsIDQ0LCA0LCAyMjcsIDUzLCA0NCwgNCwgMjI3LCA3MywgNDQsIDQsIAotICAgIDIyNywgNzIsIDQ0LCA0LCAyMjcsIDc1LCA0NCwgNCwgMjI3LCA1NiwgNDQsIDQsIDIyNywgNTUsIDQ0LCA0LCAyMjcsIDc0LCAKLSAgICA0NCwgNCwgMjE1LCAxODQsIDQ0LCA0LCAyMTUsIDE3MywgNDQsIDQsIDIxNSwgMTcyLCA0NCwgNCwgMjE1LCAxNjUsIDQ0LCAKLSAgICA0LCAyMTUsIDE1OCwgNDQsIDQsIDIxNSwgMTgwLCA0NCwgNCwgMjE1LCAxNzksIDQ0LCA0LCAyMTUsIDE4MywgNDQsIDQsIAotICAgIDIxNSwgMTcxLCA0NCwgNCwgMjE1LCAxNzAsIDQ0LCA0LCAyMTUsIDE4MiwgNDQsIDQsIDIyMSwgMjA4LCA0NCwgNCwgMjIxLCAKLSAgICAyMDMsIDQ0LCA0LCAyMjEsIDIwMiwgNDQsIDQsIDIyMSwgMTk5LCA0NCwgNCwgMjIxLCAxOTgsIDQ0LCA0LCAyMjEsIDIwNSwgCi0gICAgNDQsIDQsIDIyMSwgMjA0LCA0NCwgNCwgMjIxLCAyMDcsIDQ0LCA0LCAyMjEsIDIwMSwgNDQsIDQsIDIyMSwgMjAwLCA0NCwgCi0gICAgNCwgMjIxLCAyMDYsIDQ0LCA0LCAyMzAsIDE4MCwgNDQsIDQsIDIzMCwgMTQxLCA0NCwgNCwgMjMwLCAxMzQsIDQ0LCA0LCAKLSAgICAyMzAsIDgyLCA0NCwgNCwgMjMwLCA2NCwgNDQsIDQsIDIzMCwgMTYxLCA0NCwgNCwgMjMwLCAxNTksIDQ0LCA0LCAyMzAsIAotICAgIDE3NCwgNDQsIDQsIDIzMCwgMTAxLCA0NCwgNCwgMjMwLCA5MSwgNDQsIDQsIDIzMCwgMTY3LCA0NCwgNCwgMjEzLCA4NSwgCi0gICAgNDQsIDQsIDIxMywgMTEsIDQ0LCA0LCAyMTMsIDYsIDQ0LCA0LCAyMTIsIDE5OSwgNDQsIDQsIDIxMiwgMTgyLCA0NCwgNCwgCi0gICAgMjEzLCA0MywgNDQsIDQsIDIxMywgNDEsIDQ0LCA0LCAyMTMsIDc0LCA0NCwgNCwgMjEyLCAyNDIsIDQ0LCA0LCAyMTIsIAotICAgIDIzNiwgNDQsIDQsIDIxMywgNTIsIDQ0LCA0LCAyMTEsIDE2MywgNDQsIDQsIDIxMSwgMTMyLCA0NCwgNCwgMjExLCAxMjgsIAotICAgIDQ0LCA0LCAyMTEsIDExOSwgNDQsIDQsIDIxMSwgMTE2LCA0NCwgNCwgMjExLCAxMzgsIDQ0LCA0LCAyMTEsIDEzNywgNDQsIAotICAgIDQsIDIxMSwgMTYyLCA0NCwgNCwgMjExLCAxMjQsIDQ0LCA0LCAyMTEsIDEyMywgNDQsIDQsIDIxMSwgMTQwLCA0NCwgNCwgCi0gICAgMjE1LCAzMywgNDQsIDQsIDIxMiwgMTYyLCA0NCwgNCwgMjEyLCAxNDIsIDQ0LCA0LCAyMTEsIDEwLCA0NCwgNCwgMjEwLCAKLSAgICAxNzksIDQ0LCA0LCAyMTQsIDE3NywgNDQsIDQsIDIxNCwgMTY1LCA0NCwgNCwgMjE1LCAxOCwgNDQsIDQsIDIxMiwgMTMsIAotICAgIDQ0LCA0LCAyMTEsIDI1MCwgNDQsIDQsIDIxNCwgMjE3LCA0NCwgNCwgMjM3LCAxNTcsIDQ0LCA0LCAyMzcsIDMsIDQ0LCA0LCAKLSAgICAyMzYsIDIzOSwgNDQsIDQsIDIzNiwgMjYsIDQ0LCA0LCAyMzYsIDEsIDQ0LCA0LCAyMzcsIDY3LCA0NCwgNCwgMjM3LCA0OCwgCi0gICAgNDQsIDQsIDIzNywgMTQ3LCA0NCwgNCwgMjM2LCAxMzYsIDQ0LCA0LCAyMzYsIDExNywgNDQsIDQsIDIzNywgNzYsIDQ0LCA0LCAKLSAgICAyMjgsIDIyMywgNDQsIDQsIDIyOCwgMjIyLCA0NCwgNCwgMjI4LCAyMTcsIDQ0LCA0LCAyMjgsIDIxNiwgNDQsIDQsIDIyOCwgCi0gICAgMjEzLCA0NCwgNCwgMjI4LCAyMTIsIDQ0LCA0LCAyMjgsIDIxOSwgNDQsIDQsIDIyOCwgMjE4LCA0NCwgNCwgMjI4LCAyMjEsIAotICAgIDQ0LCA0LCAyMjgsIDIxNSwgNDQsIDQsIDIyOCwgMjE0LCA0NCwgNCwgMjI4LCAyMjAsIDQ0LCA0LCAyMTIsIDIwNSwgMTQwLCAKLSAgICAxMDksIDIsIDIwMywgNzUsIDE0MCwgMTA5LCAyLCAyMTYsIDE4NiwgMTQwLCAxMDksIDIsIDIxNiwgMTAyLCAxMTQsIDEsIAotICAgIDIwNywgOTUsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDE0NCwgODUsIAotICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMjYsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDExNSwgODUsIDEwOSwgMiwgCi0gICAgMjQ1LCAyNDksIDIyMiwgMTI4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ3LCA5MiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAotICAgIDI0NiwgMTk5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ1LCAyNTQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDYsIDExNiwgCi0gICAgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMCwgMjMzLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ0LCAyMTIsIDg1LCAxMDksIAotICAgIDIsIDI0NSwgMjQ5LCAyMDcsIDIyOSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0MywgMTEzLCA4NSwgMTA5LCAyLCAyNDUsIAotICAgIDI0OSwgMjA3LCAyMjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDEsIDIwMSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxMCwgCi0gICAgMjIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDksIDEwOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDEzNSwgODUsIDEwOSwgCi0gICAgMiwgMjQ1LCAyNDksIDIwOSwgNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjEsIDE5MSwgODUsIDEwOSwgMiwgMjQ1LCAKLSAgICAyNDksIDI0OSwgMzIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIDIwOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgCi0gICAgNjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIDE4MCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyNCwgODIsIDg1LCAKLSAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMDIsIDI0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMjI3LCA4NSwgMTA5LCAyLCAKLSAgICAyNDUsIDI0OSwgMjI3LCA0OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwNSwgMTg5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCi0gICAgMjEzLCA5MCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxMSwgMTY0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAzNiwgCi0gICAgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE1MiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOCwgMTEzLCA4NSwgMjIsIDIsIAotICAgIDI0NSwgMjQ5LCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIAotICAgIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgOTUsIDg1LCAKLSAgICAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgMTA2LCA4NSwgMjIsIDIsIDIyMCwgMzksIDg1LCAyMiwgMiwgMjUxLCAKLSAgICAyNDIsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDE3MiwgMSwgMjQ4LCAKLSAgICA3OSwgMjIyLCAxMTYsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAKLSAgICAxLCAyNDgsIDc5LCAyMjIsIDIwMywgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMTYsIAotICAgIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgMSwgMjUxLCA1NywgMjQ2LCAKLSAgICAyMzgsIDY3LCAxLCAyNTEsIDU3LCAyMDcsIDIwMywgNjcsIDEsIDI1MSwgNTcsIDEzNSwgNjcsIDEsIDI1MSwgNTcsIDIxOSwgCi0gICAgMTg0LCA2NSwgMSwgMjQwLCAxOTgsIDI0MCwgMTk3LCAyNDUsIDE4OCwgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQwLCAKLSAgICAxOTgsIDI0NSwgMTg4LCAxNDMsIDE0MiwgCisgICAgMCwgMjA4LCAyNDQsIDIzOCwgNDMsIDgxLCAyMTQsIDYzLCA4MSwgNDEsIDU0LCAyNDAsIDE5NCwgNTQsIDIxNiwgMjcsIDU0LCAKKyAgICAyNTEsIDg5LCAyNTEsIDEzLCA0OSwgMjE2LCAxMTUsIDUxLCAyMTYsIDExNSwgMjUwLCAxNjUsIDkzLCA1NCwgMjQ2LCA3MCwgCisgICAgMjMzLCAzMiwgMjM2LCAxODMsIDIwOCwgNzYsIDIwOSwgMTYsIDE3LCAxOTksIDgxLCAxNywgMTAyLCAxNywgMTA1LCAxNywgCisgICAgMTQ3LCAxNywgMTQ5LCAxNywgMTY0LCAxNywgMTg3LCAxNywgMjEwLCAxMzUsIDE3LCAxOTIsIDE3LCAyMTksIDExMywgMjQ2LCAKKyAgICA3OSwgMjEwLCAxNjcsIDIyNCwgMjQxLCA1NCwgMjM4LCAxMjIsIDU0LCAyMzUsIDY3LCA1NCwgMjE0LCA3OSwgODEsIDI0NiwgCisgICAgNjgsIDI1MCwgMTU1LCA4LCA2LCAxLCA2MiwgOCwgNiwgMSwgMjUwLCAxMDMsIDgsIDYsIDEsIDI0NywgMjIzLCA4LCA2LCAxLCAKKyAgICAyNDIsIDE1MywgOCwgNiwgMSwgNzIsIDgsIDYsIDEsIDIzOCwgNSwgOCwgNiwgMSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIzNCwgCisgICAgMjQ3LCA4LCA2LCAxLCA3MCwgOCwgNiwgMSwgMjI3LCAyNTEsIDgsIDYsIDEsIDIyNywgMTE4LCA4LCA2LCAxLCAxNTYsIDgsIAorICAgIDYsIDEsIDIyMywgMjQzLCA4LCA2LCAxLCAyMjAsIDIxNCwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDIxNiwgMjI2LCA4LCA2LCAKKyAgICAxLCAyMTQsIDE2NywgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAyMTIsIDEyMiwgOCwgNiwgMSwgMjA3LCA4MywgOCwgNiwgMSwgCisgICAgNjYsIDgsIDYsIDEsIDIwMywgMTY4LCA4LCA2LCAxLCAyMDEsIDE0NywgOCwgNiwgMSwgMjAwLCAxOTUsIDgsIDYsIDEsIAorICAgIDIwMCwgMTIzLCA4LCA2LCAxLCAxOTksIDE1NywgNDksIDUyLCAxNTksIDIxMywgMTA2LCAyMDksIDE2LCA1MSwgNTIsIDE1OSwgCisgICAgMjQ2LCAxNDcsIDI1MSwgMjUxLCAxMjgsIDIyNCwgMTc2LCAyMzUsIDc0LCAyNTEsIDI1MSwgOCwgNCwgMSwgNjIsIDgsIDQsIAorICAgIDEsIDI1MCwgMTAzLCA4LCA0LCAxLCAyNDcsIDIyMywgOCwgNCwgMSwgMjQyLCAxNTMsIDgsIDQsIDEsIDcyLCA4LCA0LCAxLCAKKyAgICAyMzgsIDUsIDgsIDQsIDEsIDIzNiwgMTU2LCA4LCA0LCAxLCAyMzQsIDI0NywgOCwgNCwgMSwgNzAsIDgsIDQsIDEsIDIyNywgCisgICAgMjUxLCA4LCA0LCAxLCAyMjcsIDExOCwgOCwgNCwgMSwgMTU2LCA4LCA0LCAxLCAyMjMsIDI0MywgOCwgNCwgMSwgMjIwLCAKKyAgICAyMTQsIDgsIDQsIDEsIDc0LCA4LCA0LCAxLCAyMTYsIDIyNiwgOCwgNCwgMSwgMjE0LCAxNjcsIDgsIDQsIDEsIDE0NiwgOCwgCisgICAgNCwgMSwgMjEyLCAxMjIsIDgsIDQsIDEsIDIwNywgODMsIDgsIDQsIDEsIDY2LCA4LCA0LCAxLCAyMDMsIDE2OCwgOCwgNCwgCisgICAgMSwgMjAxLCAxNDcsIDgsIDQsIDEsIDIwMCwgMTk1LCA4LCA0LCAxLCAyMDAsIDEyMywgOCwgNCwgMSwgMTk5LCAxNTcsIDQ5LCAKKyAgICAyNDIsIDE5NiwgMTU5LCA4MywgMjI0LCAxNzYsIDUxLCAyNDIsIDE5NiwgMTU5LCAyMDUsIDI0MCwgMjE4LCAyNDAsIDIwOCwgCisgICAgMjQ0LCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgMjQ3LCA1OCwgNTQsIDIxNSwgNTYsIDU0LCAyNDIsIDE5NSwgNTQsIDIwMCwgCisgICAgNDIsIDU0LCAyNDgsIDQ2LCAxNDgsIDIxMSwgMTkzLCA1NCwgMjQxLCA3NCwgMjQzLCAxOSwgNTQsIDIzNywgMTI4LCAyMTcsIAorICAgIDI5LCAyMjgsIDk5LCAyMjUsIDIzLCA1MywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIxOCwgMjE1LCA1NCwgMjA5LCAyMywgCisgICAgMjMzLCAzMywgMjEzLCAxNjEsIDU0LCAyMjIsIDIyOCwgMjQxLCAxNTUsIDU0LCAyMTUsIDExMiwgNTQsIDIwNywgMjEzLCAKKyAgICAxMDUsIDIwNywgMjEzLCAxNDcsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMjIxLCAyMDksIDU0LCAyMTUsIDE2MywgNTQsIDEwMSwgCisgICAgMjQwLCAxODIsIDI0NywgNjksIDIwNywgMjEzLCAxMDIsIDIyMiwgMTM2LCAyMTcsIDI5LCAyMjgsIDk5LCAyMTMsIDQxLCAKKyAgICA1MywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAyMDEsIDE2NCwgCisgICAgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAyMjgsIDUwLCAyMTQsIAorICAgIDc5LCA4MSwgOCwgNiwgMSwgMzUsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAxNjksIDgsIDYsIDEsIDM1LCAzLCAKKyAgICAyNDYsIDE0NiwgOCwgNiwgMSwgMzUsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMzUsIAorICAgIDMsIDIxMywgMjcsIDU2LCA4LCA2LCAxLCAyNTEsIDIyMSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNjksIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCAxNjksIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDYsIDgsIAorICAgIDYsIDEsIDE5NywgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMjMzLCAxOSwgMywgCisgICAgMTY5LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NCwgOCwgNiwgCisgICAgMSwgMjM4LCA3NCwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDIzNSwgNzMsIDgsIAorICAgIDYsIDEsIDE2MywgMywgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDIyMSwgMTksIDU0LCA4LCA2LCAxLCAxNjMsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIAorICAgIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAKKyAgICAxMDgsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAxNjksIDgsIDYsIDEsIDIwNiwgNTQsIDgsIDQsIDEsIAorICAgIDIxMCwgNzksIDIxMiwgMTIyLCA4LCA0LCAxLCAzNSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDE2OSwgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAzNSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCA4LCA0LCAKKyAgICAxLCAzNSwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDI1MSwgMjIxLCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA2OSwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIAorICAgIDE0NiwgOCwgNCwgMSwgMTk3LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAxNjksIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIAorICAgIDc0LCA4LCA0LCAxLCAyMzgsIDc0LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMjQwLCAyMzUsIDU0LCA4LCA0LCAxLCAxNjMsIDMsIDk3LCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDI0NiwgCisgICAgMTQ2LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAxNjksIDgsIDQsIDEsIDIwNiwgCisgICAgNTQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAzNSwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAKKyAgICAzNSwgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjQ3LCAyMjQsIDMsIDE2OSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyNCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgMTI1LCA4LCA2LCAKKyAgICAxLCAyNDIsIDE1NCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDk3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgOTcsIDgsIDYsIDEsIDE5NywgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDE5NywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDE5NywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAxOTcsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTk3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTAsIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5NywgMywgCisgICAgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU3LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA5NywgOCwgNCwgMSwgMjM0LCAKKyAgICAyNDgsIDMsIDk3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgCisgICAgMjMzLCAxOSwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ4LCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgCisgICAgMjE3LCAxMTAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDI0MCwgMTgxLCA3MCwgOCwgNiwgMzMsIDIyOCwgMTQ5LCA4LCA0LCAzMywgMjI4LCAxNDksIDgsIDYsIDEsIDIyNywgCisgICAgMjUyLCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDI0NywgNjksIDgsIDQsIDEsIDIyNiwgMzcsIDgsIDYsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxNjksIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAxNjksIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDY5LCA4LCAKKyAgICA0LCAxLCAyMjUsIDE5MywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDI0MCwgMTgyLCA4LCA0LCAxLCAyMjUsIDE5MywgCisgICAgMywgMTAxLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDk3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgOTcsIDgsIAorICAgIDYsIDEsIDIyMCwgMjE1LCAzLCAxNjksIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxNjksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0NywgMTI1LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyMCwgMjE1LCAyMTUsIDMwLCAyNDcsIDIzNSwgCisgICAgMjUxLCAxMywgOCwgNiwgMSwgMjM4LCAxNjUsIDgsIDQsIDEsIDIzOCwgMTY1LCA4LCA2LCAxLCAxNjMsIDMsIDIyMiwgMjI4LCAKKyAgICA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjQ4LCA1NywgOCwgNiwgMSwgMTYzLCAzLCA1MywgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDUzLCAxNjksIDgsIDYsIDMzLCAKKyAgICAyMTcsIDEyMSwgOCwgNCwgMzMsIDIxNywgMTIxLCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAxNjksIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDE2OSwgOCwgNiwgMSwgMjE0LCAzMywgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjQ3LCA2OSwgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMywgMywgMTY5LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTY5LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ2LCAxNDYsIAorICAgIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgNjksIDgsIDQsIDEsIAorICAgIDIxMiwgMTIzLCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIxMiwgMTIzLCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQ3LCA2OSwgCisgICAgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDg0LCAzLCA5NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgOTcsIDgsIDYsIDEsIDEwOCwgMywgMjA1LCAyNDAsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAKKyAgICAyMjgsIDgsIDYsIDEsIDEwOCwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIxMywgMjcsIDU2LCA4LCA2LCAxLCAxMDgsIDMsIDUzLCAxNjksIDgsIAorICAgIDQsIDEsIDEwOCwgMywgNTMsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIAorICAgIDExMCwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjQ2LCAxNDYsIDgsIAorICAgIDYsIDEsIDIwMCwgMTI0LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDE2OSwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIAorICAgIDE2OSwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NiwgOCwgNiwgMSwgCisgICAgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE2OCwgMjEyLCAKKyAgICAxMjIsIDgsIDQsIDEsIDY4LCAzLCA5NywgOCwgNiwgMSwgNjgsIDMsIDExNywgOCwgNiwgMSwgNjgsIDMsIDIwNSwgMTU1LCAKKyAgICA4LCA0LCAxLCA2OCwgMywgMjA1LCAxNTUsIDgsIDYsIDEsIDE1MCwgMTg3LCA4LCA0LCAxLCAxNTAsIDE4NywgOCwgNiwgMSwgCisgICAgMTc2LCA3NCwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDExNywgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDExNywgOCwgNiwgMSwgCisgICAgMjUxLCAxOTYsIDI0MiwgMTUzLCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgMTE3LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgMjA1LCAKKyAgICAxNTUsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMDUsIDE1NSwgOCwgNCwgMSwgMjA0LCAxODUsIDI0MSwgMTM2LCA4LCA2LCAKKyAgICAxLCAyMTMsIDEwNSwgNzIsIDgsIDYsIDEsIDIxMSwgMjE4LCA4LCA2LCAxLCAxNzYsIDcyLCA4LCA2LCAxLCAyMzgsIDYsIDMsIAorICAgIDExNywgOCwgNCwgMSwgMjM4LCA2LCAzLCAxMTcsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDYsIDEsIDIzNiwgCisgICAgNjAsIDgsIDQsIDEsIDIzMywgNjksIDgsIDYsIDEsIDIyOCwgNDEsIDgsIDYsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAyMjcsIDExOSwgMywgMTE3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMTE3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMTQ4LCAKKyAgICA4LCA0LCAxLCAyMjUsIDg5LCAzLCA5NywgOCwgNiwgMSwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCA2LCAxLCAyMjAsIDIxNSwgCisgICAgMywgNDksIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDE2OCwgNTEsIDIyNSwgMTYsIDgsIDYsIDEsIDE2MywgMywgMTAxLCAKKyAgICAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNCwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNCwgOCwgNiwgMSwgCisgICAgMjE3LCAxMDUsIDgsIDQsIDEsIDIxNywgMTA1LCA4LCA2LCAxLCAyMTYsIDIyNywgMywgMTE3LCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNywgMywgMTE3LCA4LCAxLCAxOTksIDIxNCwgOCwgNiwgMSwgMTUwLCAxMDUsIDgsIDQsIDEsIDE1MCwgMTA1LCA4LCA2LCAKKyAgICAxLCAyMzgsIDk0LCA4LCAxLCAyMTMsIDEwNSwgMjM4LCA5NSwgMjI0LCA3NCwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjE2LCAKKyAgICAxODQsIDExNywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMTE3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAxMTcsIDgsIDYsIDEsIAorICAgIDIwNywgODQsIDMsIDIxMywgMTExLCAxMTcsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjQsIDgsIDQsIDEsIDEwOCwgMywgCisgICAgMjMzLCAxMjQsIDgsIDYsIDEsIDIwMywgMjIwLCA4LCA2LCAxLCAyMDMsIDE2OSwgMywgMTE3LCA4LCA2LCAxLCAyMDAsIAorICAgIDEyNCwgMywgMTE3LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMTE3LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgOTcsIDgsIDQsIAorICAgIDEsIDE5OSwgMTU4LCAzLCA5NywgOCwgNiwgMSwgMjM4LCA4LCA4LCA2LCAxLCAyMzgsIDksIDIxMywgMTA0LCA4LCA0LCAxLCAKKyAgICAyMzgsIDksIDIxMywgMTA0LCA4LCA0LCAxLCAyMzgsIDksIDMsIDIwNywgNiwgOCwgMSwgMTIwLCAzLCA5NywgOCwgNiwgMSwgCisgICAgMTUwLCAxNjQsIDgsIDQsIDEsIDE1MCwgMTY0LCA4LCAxLCAyMjgsIDUwLCAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIAorICAgIDEsIDIwMCwgMTk4LCA4LCAxLCAyNDEsIDEyOSwgMjQ2LCAxMjEsIDgsIDEsIDIyNSwgNjEsIDI0NiwgMTIxLCA4LCAxLCAKKyAgICAyNTEsIDEwMiwgMjQ2LCAxMjEsIDgsIDEsIDIxMywgMTExLCAyNDYsIDEyMSwgOCwgNiwgMSwgMjM5LCA5NSwgMywgMjQ3LCAKKyAgICAxMjUsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA0LCAxLCAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzOSwgOTUsIAorICAgIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjQsIDE0MiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDQsIDEsIDIyNywgMjUxLCA4LCAKKyAgICA0LCAxLCAyMjQsIDE0MiwgOCwgNiwgMSwgMjE5LCA5OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDQsIDEsIDIyNywgMjUxLCAKKyAgICA4LCA0LCAxLCAyMTksIDk5LCA4LCA2LCAxLCAzNSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDM1LCAzLCAyNDcsIDEyNSwgOCwgCisgICAgNiwgMSwgMjMzLCAxOSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxNjMsIAorICAgIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxNjMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0NywgMTI1LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyNDcsIDEyNSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIzNSwgCisgICAgNzMsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIwNCwgMTg1LCA3MiwgOCwgNiwgCisgICAgMSwgMzUsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgCisgICAgOCwgNiwgMSwgMzUsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgMywgNzMsIDg4LCAyNiwgMjIyLCAKKyAgICAyMjgsIDgsIDYsIDEsIDI1MSwgMjIyLCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjUxLCAyMjIsIDMsIDIyMiwgMjI4LCA4LCAKKyAgICA2LCAxLCAyMzYsIDE1NywgMywgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCA5NywgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDI0NywgMTI1LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDEyNSwgCisgICAgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxNjMsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAxNjMsIDMsIDIxNywgMTExLCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjE3LCAxMTEsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjM4LCA5LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM4LCA5LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMzksIDk0LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgNCwgMSwgMTk5LCAxNTcsIDgsIDQsIDEsIDIzOSwgOTQsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDIzNiwgMTU3LCAzLCAxNjksIDgsIDYsIDEsIDIzMywgNjYsIDgsIDYsIDEsIDIwMCwgMTk4LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyMTMsIAorICAgIDI3LCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDIxMywgMjcsIDg4LCAyNiwgMTY5LCA4LCA2LCAxLCAyNTEsIDIyMiwgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyNTEsIDIyMiwgMywgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIwOCwgNDcsIDI2LCAxNjksIDgsIAorICAgIDQsIDEsIDE2MywgMywgMjA4LCA0NywgMjYsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgCisgICAgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMTk3LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCA1MywgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMTk3LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDIzMywgMTksIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMjMzLCAxOSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIAorICAgIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMjE0LCAzMywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMTA4LCAzLCA1MywgCisgICAgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDcxLCA1NywgOCwgCisgICAgNCwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgNzEsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDYsIDcxLCA1NywgOCwgNCwgCisgICAgMSwgMjA3LCA4NCwgMywgMjQ2LCA3MSwgNTcsIDgsIDYsIDEsIDE5OSwgMjMyLCA4LCA0LCAxLCAxOTksIDIzMiwgOCwgNiwgCisgICAgMSwgMjM0LCAyNDgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyMCwgCisgICAgMjE1LCAzLCAxNjgsIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQyLCAxOTgsIDgsIDYsIDEsIDIxNywgCisgICAgMywgOCwgNCwgMSwgMjE3LCAzLCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMTE3LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgNzMsIDU2LCA4LCA0LCAxLCAzNSwgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgNjksIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMTYzLCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIAorICAgIDEsIDE2MywgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjIyLCAKKyAgICAyMjgsIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDE2MywgMywgNzMsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxNjMsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDIwMCwgMTI0LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMjAsIDIxNSwgCisgICAgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyNDAsIDE4MSwgMjI3LCAyNTEsIAorICAgIDgsIDQsIDEsIDI0MSwgMjMwLCAyNDEsIDM0LCA4LCA0LCAxLCAyMTQsIDk4LCAyNDEsIDM0LCA4LCA2LCAxLCAzNSwgMywgCisgICAgOTcsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCA5NywgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDk3LCA4LCA2LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTQ4LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIwNywgCisgICAgMTgzLCAyMDcsIDYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMDcsIDE4MywgMjA3LCA2LCA4LCA2LCAxLCAyMzUsIDEyMywgCisgICAgMjA4LCA3NiwgOCwgNCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDYsIDEsIDY4LCAzLCA5NywgOCwgNiwgMSwgMTA4LCAKKyAgICAxNDgsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OCwgOCwgNiwgMSwgMTk3LCAzLCA5NywgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICA5NywgOCwgNiwgMSwgMjI3LCAyNTIsIDMsIDk3LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgOTcsIDgsIDYsIDEsIDQsIDIxNCwgCisgICAgMTY4LCAzLCAyMzMsIDE4NywgMjA3LCA2LCA4LCA0LCAxLCAyMTQsIDE2OCwgMywgMjMzLCAxODcsIDIwNywgNiwgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgOTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDk3LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgOTcsIDgsIAorICAgIDQsIDEsIDIwMCwgMTI0LCAzLCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIDYyLCA4LCA0LCAxLCAyNTEsIDExMiwgOCwgNCwgMSwgCisgICAgMjA0LCAxODUsIDI1MSwgMTEyLCA4LCA0LCAxLCA2OCwgMywgMTE3LCA4LCA0LCAxLCAxNzYsIDc0LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyNCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMDcsIDYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAxMTcsIDgsIDQsIDEsIDIxMywgMTA1LCA3MiwgOCwgNCwgMSwgMjExLCAyMTgsIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAxMTcsIAorICAgIDgsIDQsIDEsIDE3NiwgNzIsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCAKKyAgICAxOTcsIDMsIDExNywgOCwgNCwgMSwgMjQ2LCAxMTAsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA0LCAxLCAyNDAsIDE4MSwgCisgICAgMjI3LCAyNTIsIDMsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMTE3LCA4LCA0LCAxLCAxMzUsIDIzNiwgMTU2LCA4LCAxLCAKKyAgICA0LCA2LCAyMzYsIDE1NiwgOCwgNCwgMSwgMjM2LCA2MCwgOCwgNCwgMSwgMjEzLCAyMTQsIDIzMywgMTI0LCA4LCA0LCAxLCAKKyAgICAyMDQsIDE4NSwgMjM0LCAyNDcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIzNCwgMTA0LCAzLCAxMTcsIAorICAgIDgsIDQsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA0LCAxLCAyMjgsIDQxLCA4LCAxLCA0LCA2LCA3MCwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDgsIDIyNiwgOCwgNCwgMSwgMjI1LCAxOTMsIAorICAgIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIyNCwgMjI2LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDQsIAorICAgIDEsIDIwNCwgMTg1LCAyMjMsIDI0NCwgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMTE3LCA4LCA0LCAKKyAgICAxLCAyMjAsIDIxNSwgMywgNDksIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIxMywgMTExLCAxMTcsIDgsIDEsIDQsIDYsIAorICAgIDIyMCwgMjE0LCA4LCA0LCAxLCAyNDksIDcxLCA3NCwgOCwgMSwgNCwgNiwgMjE3LCAxMjEsIDgsIDQsIDEsIDI0NiwgMTEwLCAKKyAgICAyMTcsIDgzLCA4LCA0LCAxLCAyMTUsIDIyOSwgOCwgNCwgMSwgMjA0LCAxODUsIDE0NiwgOCwgNCwgMSwgMjA0LCAxODUsIAorICAgIDIxNCwgMzMsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNCwgMzMsIDMsIDExNywgOCwgNCwgMSwgCisgICAgMjE0LCAzMywgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMDcsIDYsIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIzNywgNjgsIDgsIDQsIDEsIDIxMywgMTA1LCAyMTQsIDMzLCAzLCAyMzcsIDY4LCA4LCAxLCA0LCA2LCAxNDYsIDgsIAorICAgIDEsIDQsIDYsIDIyOCwgNTAsIDE0NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDExNywgOCwgNCwgMSwgMjM4LCA5NCwgOCwgNCwgCisgICAgMSwgMjQwLCAxODEsIDIyNywgMjUyLCAzLCAyMDgsIDQ3LCAyNiwgMTE3LCA4LCA0LCAxLCAyMDgsIDE5MCwgMjEzLCAxMDUsIAorICAgIDIzOCwgOTQsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjA3LCA4MywgOCwgNCwgCisgICAgMSwgMjA3LCA4NCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTA4LCAxNDgsIDgsIDQsIDEsIDIwMywgMjIwLCA4LCA0LCAKKyAgICAxLCAyMDMsIDE2OSwgMywgMTE3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDEsIAorICAgIDE0NywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMCwgMTIzLCA4LCAxLCA0LCA2LCAyMDAsIDEyMywgOCwgNCwgMSwgMTk5LCAKKyAgICAxNTgsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjM4LCA4LCAKKyAgICA4LCA0LCAxLCAyMzgsIDksIDMsIDI0MiwgMTk4LCA4LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgMSwgMjE1LCAyMzYsIAorICAgIDIwMiwgMTg5LCAyMzYsIDIwNywgOCwgMSwgMjI4LCA1MCwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDEsIDIwOCwgNTUsIDI0NywgCisgICAgMjIzLCA4LCAxLCAyNDgsIDE3MiwgMjQ2LCAxMjEsIDgsIDEsIDQsIDYsIDI1MCwgMTAzLCA4LCA0LCAxLCAyNDYsIDExMCwgCisgICAgMTc2LCA3MiwgOCwgMSwgNCwgNiwgMjM2LCAxNTcsIDMsIDExNywgOCwgMSwgNCwgNiwgMjM0LCAyNDcsIDgsIDQsIDEsIAorICAgIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjA0LCAxODUsIDIyNywgMTE4LCA4LCAxLCA0LCA2LCAxNTYsIDgsIAorICAgIDQsIDEsIDIxNCwgMTY4LCAzLCAxMTcsIDgsIDEsIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgMSwgMjEzLCAxMDUsIAorICAgIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgNCwgMSwgMjM5LCA5NSwgMjQxLCAzNCwgOCwgNCwgMSwgMjQxLCAxMDIsIAorICAgIDI0MSwgMzQsIDgsIDQsIDEsIDIzOSwgOTUsIDI0MSwgMzUsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDUsIDM0LCAyNDEsIAorICAgIDM0LCA4LCA0LCAxLCAyMDYsIDE1MSwgMjQxLCAzNCwgOCwgNCwgMSwgMjA2LCAyMDgsIDI0MSwgMzUsIDMsIDI0MiwgMTk4LCAKKyAgICA4LCA0LCAxLCAyMzcsIDEyNSwgMjQxLCAzNCwgOCwgNCwgMSwgMjI0LCA0NCwgMjQxLCAzNCwgOCwgNCwgMSwgMjIzLCAyNDUsIAorICAgIDI0MSwgMzQsIDgsIDEsIDI0OCwgMTcyLCAyMTYsIDI2LCA4LCAxLCAyNDgsIDE4MCwgMjE2LCAyNiwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDIzNCwgMjQ4LCAzLCAyMzcsIDY4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjM0LCAyNDgsIDMsIDIzNywgNjksIDI2LCAKKyAgICAyMDcsIDYsIDY3LCAxLCA0LCAyMzQsIDI0NywgNjcsIDEsIDQsIDIzNCwgMjQ4LCAzLCAxMTcsIDY3LCAxLCA0LCAyMjcsIAorICAgIDI1MSwgNjcsIDEsIDQsIDE0NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAxNDYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjE0LCAzMywgCisgICAgMywgMTE3LCA2NywgMSwgNCwgNiwgMjI4LCA1MCwgMTQ2LCA2NywgMSwgNCwgMjAxLCAxNDcsIDY3LCAxLCA0LCAyMDAsIAorICAgIDEyMywgNjcsIDEsIDIxNSwgMTQsIDY3LCAxLCA1MywgMjE1LCAxNCwgNjcsIDEsIDIwNCwgMTg1LCAyNDYsIDcwLCA2NywgMSwgCisgICAgMjUxLCAxMywgNjcsIDEsIDIxMywgMTA1LCAyNDYsIDcwLCA2NywgMSwgNTEsIDE2NywgMjEzLCAyNiwgNjcsIDEsIDQ5LCAKKyAgICAxNjcsIDIxMywgMjYsIDY3LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgNjcsIDEsIDIxMywgMTA1LCAyMzUsIDEyMywgMjA4LCAKKyAgICA3NiwgNjcsIDEsIDQ5LCAyNTAsIDIwMiwgNjcsIDEsIDUxLCAyNTAsIDIwMiwgNjcsIDEsIDExNSwgMjUwLCAyMDIsIDY3LCAKKyAgICAxLCAxMjcsIDI1MCwgMjAyLCA2NywgMSwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAyNDcsIDEyNSwgNjcsIDEsIDgzLCAyMjQsIAorICAgIDE3NiwgNjcsIDEsIDIyMiwgMjI4LCA2NywgMSwgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjM1LCA3NCwgMjUxLCAKKyAgICAyNTEsIDY3LCAxLCAxMjgsIDgzLCAyMjQsIDE3NiwgNjcsIDEsIDEyOCwgMjIyLCAyMjgsIDY3LCAxLCAxMjgsIDIzNSwgNzQsIAorICAgIDI1MSwgMjUxLCA2NywgMSwgMTI4LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMDUsIDk1LCAyNDYsIDc5LCA2NywgMSwgCisgICAgMTY3LCAyMDUsIDk1LCAyNDYsIDc5LCA2NywgMSwgMjQ3LCA1NCwgNTEsIDE2NywgMjEzLCAyNiwgNjcsIDEsIDI0NywgNTQsIAorICAgIDQ5LCAxNjcsIDIxMywgMjYsIDY3LCAxLCAxMTUsIDIwNywgMTcsIDY3LCAxLCAxMjcsIDIwNywgMTcsIDY3LCAxLCA5MywgCisgICAgNTQsIDY3LCAxLCAyMjEsIDE1NywgNTQsIDI0OCwgNTcsIDczLCA1NiwgMjEzLCAyNywgNTYsIDIxNywgMTEwLCA0LCAyMDUsIAorICAgIDI0MCwgNTMsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIxMywgODksIDExNywgNjcsIDEsIDI0MiwgMjM1LCAyNTEsIAorICAgIDI1MSwgNjcsIDEsIDQsIDIzNiwgNjAsIDY3LCAxLCA0LCAxNTYsIDY3LCAxLCA0LCAyMTIsIDEyMiwgNjcsIDEsIDQsIDIwMCwgCisgICAgMTk1LCA2NywgMSwgNCwgMjEzLCAxMDUsIDIzNSwgMTIzLCAyMDgsIDc2LCA2NywgMSwgMjM4LCAyOSwgMTUwLCAxNDgsIDY3LCAKKyAgICAxLCAxMjIsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAxNTAsIDE0OCwgNjcsIDEsIAorICAgIDIzOCwgMjgsIDE1MCwgMTQ4LCA2NywgMSwgMTk5LCAyNTUsIDI0MSwgMTI2LCAxNTAsIDgxLCA2NywgMSwgMjAwLCA3NiwgCisgICAgMjQxLCAxMjYsIDE1MCwgODEsIDY3LCAxLCAyMDIsIDE4NywgNjcsIDEsIDIwNCwgMSwgNjcsIDEsIDUzLCAyNTEsIDEzLCAKKyAgICA2NywgMSwgMTI4LCAxMjcsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCAxMTUsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCA0OSwgCisgICAgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDUxLCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgMjEzLCAyNiwgNjcsIDEsIDEwMSwgMjM1LCAKKyAgICA3NCwgMjUxLCAyNTEsIDY3LCAxLCAxMDEsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgNjcsIDEsIDEwMSwgNTMsIDI1MSwgCisgICAgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDEyOCwgMjA1LCAyNDAsIDY3LCAxLCAyMTMsIDIyMCwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDI0OCwgMjQ0LCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjM4LCAxNzEsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyNDgsIDI0NCwgCisgICAgMTI4LCAyMDUsIDE3NCwgNjcsIDEsIDIzOCwgMTcxLCAxMjgsIDIwNSwgMTc0LCA2NywgMSwgMjEwLCA1NiwgNjcsIDEsIAorICAgIDE3NiwgMjEwLCA1NiwgNjcsIDEsIDEyOCwgNDksIDQ4LCAzOCwgMjM1LCA3NCwgMjUxLCAyNTEsIDM4LCAyNTEsIDIzOSwgCisgICAgMjUxLCAyNTEsIDM4LCAyNDYsIDE0NywgMjUxLCAyNTEsIDM4LCAyMDUsIDI0MCwgMzgsIDIyMiwgMjI4LCAzOCwgMjE2LCAKKyAgICAyNDEsIDM4LCAyNDgsIDU3LCAzOCwgNzMsIDU2LCAzOCwgMjQxLCA3NCwgMzgsIDIzMywgMTg3LCA1NiwgMzgsIDIxMywgMjcsIAorICAgIDU2LCAzOCwgNTMsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMzgsIDI0NywgMTI1LCAzOCwgODMsIDIyNCwgMTc3LCA1NiwgMzgsIAorICAgIDUzLCA4MywgMjI0LCAxNzcsIDU2LCAzOCwgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAzOCwgMjQ3LCAxNDksIDM4LCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCAzOCwgMjA0LCAxODUsIDI0NiwgNzEsIDU2LCAzOCwgMjQ2LCA3MSwgNTYsIDM4LCAyMTMsIDEwNSwgCisgICAgMjQ2LCA3MSwgNTYsIDM4LCAyNDYsIDcxLCA4OCwgMjEzLCA0NiwgMzgsIDIzNSwgNzQsIDI1MSwgMjUyLCA1NywgMzgsIAorICAgIDI1MSwgMjM5LCAyNTEsIDI1MiwgNTcsIDM4LCA0OSwgMjA3LCAxOCwgNTcsIDM4LCA1MSwgMjA3LCAxOCwgNTcsIDM4LCA0OSwgCisgICAgMjUxLCA3MSwgNTYsIDM4LCAyMzMsIDEyNCwgMzgsIDQ5LCAxNjcsIDIxMywgMjcsIDU3LCAzOCwgMTE1LCAyMDcsIDE4LCAKKyAgICA1NywgMzgsIDEyNywgMjA3LCAxOCwgNTcsIDM4LCA5MywgMiwgNTcsIDM4LCAyMjEsIDE1NywgMiwgNTcsIDM4LCAyMTYsIAorICAgIDE4MiwgMjMzLCAxODcsIDU3LCAzOCwgMjEzLCAxMTEsIDIzMywgMTg3LCA1NywgMzgsIDczLCA1NywgMzgsIDI0MSwgNzUsIAorICAgIDU3LCAzOCwgMjEzLCAyNywgNTcsIDM4LCAyNDYsIDcxLCA1NywgMzgsIDI0NywgNjksIDM4LCAyMTcsIDExMCwgMzgsIDgzLCAKKyAgICAyMjQsIDE3NywgNTcsIDM4LCAyNDgsIDUxLCA1NywgMzgsIDIyOCwgNTAsIDUzLCAyNTAsIDIzNSwgNTcsIDM4LCAyNDcsIAorICAgIDEyNiwgNTcsIDM4LCAyNDYsIDE0NywgMjUxLCAyNTIsIDU3LCAzOCwgMjQ4LCA1OCwgNTcsIDM4LCAyMjgsIDUwLCAyNDgsIAorICAgIDU4LCA1NywgMzgsIDIwNSwgMjQxLCA1NywgMzgsIDIyMiwgMjI5LCA1NywgMzgsIDEyOCwgMjI0LCAxNzYsIDM4LCA1MywgCisgICAgMTI4LCAyMjQsIDE3NiwgMzgsIDIwNSwgMjQxLCAyMTYsIDI0MiwgMzgsIDIwOSwgMjUwLCAyMDgsIDQ3LCAyMTYsIDI0MiwgCisgICAgMzgsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDM4LCAyMDksIDI1MCwgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCAxNjgsIAorICAgIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgNTEsIDE2NywgMjEzLCAyNywgNTcsIDM4LCAyMjgsIDUwLCAyNDgsIDUxLCA1NywgCisgICAgMzgsIDUyLCA1NywgMzgsIDIxMSwgMjAxLCA1NywgMzgsIDIwMCwgMTk2LCA1NiwgMzgsIDgzLCAyMDUsIDI0MCwgMzgsIDUzLCAKKyAgICAyMTYsIDI0MSwgMzgsIDIzNSwgNzQsIDE1MCwgODEsIDM4LCAyNTEsIDIzOSwgMTUwLCA4MSwgMzgsIDMxLCAyMTYsIDIwLCAKKyAgICAzOCwgMzEsIDIyNiwgNTgsIDM4LCAzMSwgMjQxLCA2OCwgMjA1LCAxNjIsIDM4LCAzMSwgMTk5LCAyMTksIDM4LCAyNDgsIAorICAgIDUxLCA1NiwgMzgsIDIzOCwgMTIyLCAyLCA1NywgMzgsIDUzLCA4MywgMjI0LCAxNzcsIDU3LCAzOCwgNDksIDI1MSwgNzEsIAorICAgIDU3LCAzOCwgMjE4LCAyMTUsIDIwNSwgMjQxLCA1NiwgMzgsIDIzMywgMTkzLCA1NiwgMzgsIDI1MSwgMTE3LCAxNjAsIDIwNSwgCisgICAgMTg2LCA1NiwgMzgsIDQ5LCA1MSwgNTUsIDU3LCAzOCwgMTgyLCA1NSwgNTcsIDM4LCAyMzUsIDgwLCAyMjcsIDE2MSwgMzgsIAorICAgIDUxLCAyNTAsIDIwMywgNTYsIDM4LCA0OSwgMTY3LCAyMTMsIDI3LCA1NiwgMzgsIDIzNywgMTIyLCAzOCwgMjAwLCAxOTYsIAorICAgIDU3LCAzOCwgNDksIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMjUwLCAyMDMsIDI2LCAKKyAgICAxMTUsIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAxNjcsIDIxMywgMjcsIDU2LCAzOCwgNzMsIDg4LCAyMTMsIDQ2LCAzOCwgCisgICAgMjUwLCAxNjYsIDU3LCAzOCwgNTMsIDIxMywgMjcsIDU3LCAzOCwgMTk5LCAyNywgNTYsIDM4LCA1MywgMjQ4LCA1OCwgNTcsIAorICAgIDM4LCA1MywgMjQ4LCA1NywgMzgsIDUzLCAyMjIsIDIyOCwgMzgsIDUzLCAyMjIsIDIyOSwgNTcsIDM4LCA1MywgMjA1LCAKKyAgICAyNDAsIDM4LCA1MywgMjI4LCA1MCwgMjQ4LCA1NywgMzgsIDUzLCA4NywgNTUsIDU3LCAzOCwgOCwgNCwgMSwgNjIsIDM4LCAKKyAgICA4LCA0LCAxLCA3MiwgMzgsIDgsIDQsIDEsIDcwLCAzOCwgOCwgNCwgMSwgNzQsIDM4LCA4LCA0LCAxLCA2NiwgMzgsIDgsIDQsIAorICAgIDEsIDI0NywgMjIzLCAzOCwgOCwgNCwgMSwgMjQyLCAxNTMsIDM4LCA4LCA0LCAxLCAyMzQsIDI0NywgMzgsIDgsIDQsIDEsIAorICAgIDIyMywgMjQzLCAzOCwgOCwgNCwgMSwgMTQ2LCAzOCwgOCwgNCwgMSwgMjA3LCA4MywgMzgsIDgsIDQsIDEsIDIwMywgMTY4LCAKKyAgICAzOCwgOCwgNCwgMSwgMjAwLCAxOTUsIDMxLCA2LCAxLCAyMzQsIDkyLCAzMSwgNCwgMSwgMjM0LCA5MiwgMzEsIDYsIDEsIAorICAgIDI1MCwgMjM0LCAyMTIsIDE2LCAzMSwgNCwgMSwgMjUwLCAyMzQsIDIxMiwgMTYsIDMxLCAyMTgsIDkzLCA1NCwgMzEsIDIyNCwgCisgICAgNTQsIDIxOCwgOTMsIDU0LCAzMSwgNiwgMSwgMjE2LCAxNjcsIDI0MSwgNDIsIDMxLCA0LCAxLCAyMTYsIDE2NywgMjQxLCAKKyAgICA0MiwgMzEsIDE5OSwgMjE5LCAzMSwgNCwgMjEzLCAxMDUsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDQsIDIzOSwgCisgICAgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA0LCAyMTMsIDEwNSwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCAKKyAgICA5OSwgMzEsIDIxNCwgNzksIDgxLCAzMSwgNiwgMSwgMTk5LCAyMjUsIDMxLCAyMDUsIDE2MiwgMzEsIDI0MSwgNjgsIDIwNSwgCisgICAgMTYyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwNSwgMTYyLCAzMSwgMjUxLCA1NiwgMjA2LCAxNzcsIDMxLCA2LCAxLCAKKyAgICAyMzgsIDEyNSwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIyOCwgNDIsIAorICAgIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjA1LCAKKyAgICAxNjIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAKKyAgICAyMDUsIDE2MiwgMzEsIDYsIDEsIDI1MSwgMTEyLCAzMSwgNiwgMSwgMjQ4LCAyMDgsIDMxLCA2LCAxLCAyMzYsIDYwLCAzMSwgCisgICAgNiwgMSwgMjQxLCAxMzYsIDMxLCA2LCAxLCAyMzgsIDEyNCwgMzEsIDYsIDEsIDE5OSwgODAsIDMxLCA2LCAxLCAyMzgsIDc5LCAKKyAgICAzMSwgNiwgMSwgMjA2LCA4OCwgMzEsIDYsIDEsIDIyOCwgNDEsIDMxLCA2LCAxLCAyMjcsIDU0LCAzMSwgNiwgMSwgMjI1LCAKKyAgICA4NywgMzEsIDYsIDEsIDIyMSwgNDEsIDMxLCA2LCAxLCAyMTgsIDEzMywgMzEsIDYsIDEsIDIwMCwgMTY5LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MSwgMzEsIDYsIDEsIDIxNSwgMjA0LCAzMSwgNiwgMSwgMjEzLCA5MCwgMzEsIDYsIDEsIDIwOSwgMTYzLCAzMSwgCisgICAgNiwgMSwgMjA2LCAyMjEsIDMxLCA2LCAxLCAyMDMsIDIyMCwgMzEsIDYsIDEsIDIxNSwgMjI5LCAzMSwgNiwgMSwgMjQ2LCAKKyAgICAyMzYsIDMxLCA2LCAxLCAyMTQsIDIzNSwgMzEsIDYsIDEsIDIxNywgODMsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIAorICAgIDY3LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjA1LCAxNjIsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDEyNSwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIAorICAgIDIyOCwgNDIsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMDUsIDE2MiwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEyLCAzMSwgNCwgMSwgMjQ4LCAyMDgsIDMxLCA0LCAxLCAyMzYsIDYwLCAzMSwgNCwgMSwgMjQxLCAKKyAgICAxMzYsIDMxLCA0LCAxLCAyMzgsIDEyNCwgMzEsIDQsIDEsIDE5OSwgODAsIDMxLCA0LCAxLCAyMzgsIDc5LCAzMSwgNCwgMSwgCisgICAgMjA2LCA4OCwgMzEsIDQsIDEsIDIyOCwgNDEsIDMxLCA0LCAxLCAyMjcsIDU0LCAzMSwgNCwgMSwgMjI1LCA4NywgMzEsIDQsIAorICAgIDEsIDIyMSwgNDEsIDMxLCA0LCAxLCAyMTgsIDEzMywgMzEsIDQsIDEsIDIwMCwgMTY5LCAzMSwgNCwgMSwgMjE3LCA4MSwgCisgICAgMzEsIDQsIDEsIDIxNSwgMjA0LCAzMSwgNCwgMSwgMjEzLCA5MCwgMzEsIDQsIDEsIDQ3LCAyMDksIDE2MywgMzEsIDQsIDEsIAorICAgIDIwOSwgMTYzLCAzMSwgNCwgMSwgMjA2LCAyMjEsIDMxLCA0LCAxLCAyMDMsIDIyMCwgMzEsIDQsIDEsIDIxNSwgMjI5LCAzMSwgCisgICAgNCwgMSwgMjQ2LCAyMzYsIDMxLCA0LCAxLCAyMTQsIDIzNSwgMzEsIDQsIDEsIDIxNywgODMsIDMxLCA0LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMDUsIAorICAgIDE2MiwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwNSwgMTYyLCAzMSwgCisgICAgNiwgMjI3LCA4MywgOTksIDMxLCAyNDgsIDIwOSwgOTksIDMxLCAyMDYsIDg5LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAyMzMsIAorICAgIDE4NywgOTksIDMxLCAyMDMsIDIyMSwgMywgMjUxLCAyMzksIDI2LCAyMzMsIDE4NywgOTksIDMxLCAyMDMsIDIyMSwgMywgCisgICAgMjQxLCA3NSwgMjYsIDIzMywgMTg3LCA5OSwgMzEsIDIxNSwgMjMwLCA5OSwgMzEsIDIxNSwgMjA1LCA5OSwgMzEsIDIyNywgCisgICAgODMsIDk5LCAzMSwgMSwgMjUwLCAyMzQsIDIyNiwgNjIsIDMxLCA0LCAxLCAyNTAsIDIzNCwgMjI2LCA2MiwgMzEsIDEsIAorICAgIDIwOCwgODYsIDMxLCA0LCAxLCAyMDgsIDg2LCAzMSwgMSwgMjQxLCA0MiwgMzEsIDQsIDEsIDI0MSwgNDIsIDMxLCAxLCAKKyAgICAyMjYsIDYyLCAzMSwgNCwgMSwgMjI2LCA2MiwgMzEsIDEsIDIxMiwgMTYsIDMxLCA0LCAxLCAyMTIsIDE2LCA4NSwgNiwgMSwgCisgICAgMjEwLCA1NywgODUsIDQsIDEsIDIxMCwgNTcsIDg1LCA2LCAxLCAyMzcsIDEzMiwgODUsIDQsIDEsIDIzNywgMTMyLCA4NSwgCisgICAgNiwgMSwgMjI2LCAxOTAsIDg1LCA0LCAxLCAyMjYsIDE5MCwgODUsIDYsIDEsIDIzMywgMTc4LCA4NSwgNCwgMSwgMjMzLCAKKyAgICAxNzgsIDg1LCA2LCAxLCAyMzYsIDU1LCA4NSwgNCwgMSwgMjM2LCA1NSwgODUsIDYsIDEsIDIxMCwgMjMsIDg1LCA0LCAxLCAKKyAgICAyMTAsIDIzLCA4NSwgNiwgMSwgMjQxLCAxNTIsIDg1LCA0LCAxLCAyNDEsIDE1MiwgMzEsIDIyNywgNTUsIDk5LCAzMSwgCisgICAgMjEzLCA5MSwgOTksIDMxLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCAxLCAxOTksIDIyNSwgMzEsIDYsIDIwNiwgODksIAorICAgIDk5LCAzMSwgMjI0LCAyNCwgMjM4LCAxMjUsIDk5LCAzMSwgMjEzLCAxMDUsIDIyNCwgMjQsIDIzOCwgMTI1LCA5OSwgMzEsIAorICAgIDYsIDEsIDIxMCwgOCwgMzEsIDQsIDEsIDIxMCwgOCwgMzEsIDYsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIDEsIAorICAgIDIxMiwgMTMsIDMxLCA0LCAxLCAyMTIsIDEzLCAzMSwgMjEzLCA5MSwgMywgMjA4LCA0NywgOTksIDMxLCA2LCAyMTMsIDEwNSwgCisgICAgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIAorICAgIDIxMywgMTA1LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzNywgNiwgMSwgMjI4LCAxNzksIDMsIDIzNSwgCisgICAgNzMsIDM3LCA2LCAxLCAyMjgsIDQ1LCAzNywgNiwgMSwgMjQwLCAyMjgsIDM3LCA2LCAxLCAyMzUsIDEzMiwgMzcsIDYsIDEsIAorICAgIDIwNCwgMTcsIDIyOCwgMTc4LCAzNywgNiwgMSwgMjM5LCA5MCwgMzcsIDYsIDEsIDI0NywgMjMzLCA3MCwgMzcsIDYsIDEsIAorICAgIDIwMCwgOSwgMzcsIDYsIDEsIDIyNywgMjI3LCAzNywgNiwgMSwgMjI0LCAxNDEsIDM3LCA2LCAxLCAyMTksIDkxLCAzNywgNiwgCisgICAgMSwgMjA1LCAyMCwgMzcsIDYsIDEsIDIyNiwgMTExLCAzNywgNiwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgMzcsIDYsIDEsIAorICAgIDIwOSwgMjUwLCA2NiwgMzcsIDYsIDEsIDIzOSwgODYsIDM3LCA2LCAxLCA2MiwgMzcsIDYsIDEsIDI0OSwgOCwgMzcsIDYsIAorICAgIDEsIDIwMywgNTksIDM3LCA2LCAxLCAyMzUsIDE4NSwgMzcsIDYsIDEsIDI0MSwgMTc1LCAzNywgNiwgMSwgMjI4LCAxNzgsIAorICAgIDM3LCA2LCAxLCAxOTksIDY4LCAzNywgNiwgMSwgMTk5LCA4OSwgMzcsIDYsIDEsIDcwLCAzNywgNiwgMSwgMjA5LCAyNTAsIAorICAgIDcwLCAzNywgNiwgMSwgMTYxLCAzNywgNiwgMSwgMjM4LCAyMDksIDM3LCA2LCAxLCAyMzgsIDE5MCwgMzcsIDYsIDEsIDIzOCwgCisgICAgMTc5LCAzNywgNiwgMSwgNzQsIDM3LCA2LCAxLCAyMTYsIDczLCAzNywgNiwgMSwgMjM4LCAxMTUsIDM3LCA2LCAxLCAyMzgsIAorICAgIDEwNCwgMzcsIDYsIDEsIDIwNiwgMjAxLCAzNywgNiwgMSwgNjYsIDM3LCA2LCAxLCAyMzgsIDI0OCwgMzcsIDYsIDEsIDE0NCwgCisgICAgMzcsIDYsIDEsIDIwNSwgMjYsIDM3LCA2LCAxLCAyNDcsIDgsIDM3LCA2LCAxLCAyMTAsIDExNCwgMzcsIDYsIDEsIDIxMCwgCisgICAgNjgsIDM3LCA2LCAxLCAyMzQsIDE2NSwgNTQsIDM3LCA2LCAxLCAyMDAsIDI5LCAzNywgNiwgMSwgMjA5LCAyMywgNTQsIDM3LCAKKyAgICA2LCAxLCA3MiwgMzcsIDYsIDEsIDE5OSwgMjExLCAzNywgNiwgMSwgMTgzLCAzNywgNCwgMSwgNjIsIDM3LCA0LCAxLCAyNDksIAorICAgIDgsIDM3LCA0LCAxLCAyMDMsIDU5LCAzNywgNCwgMSwgMjM1LCAxODUsIDM3LCA0LCAxLCAyNDEsIDE3NSwgMzcsIDQsIDEsIAorICAgIDIyOCwgMTc4LCAzNywgNCwgMSwgMTk5LCA2OCwgMzcsIDQsIDEsIDE5OSwgODksIDM3LCA0LCAxLCA3MCwgMzcsIDQsIDEsIAorICAgIDIwOSwgMjUwLCA3MCwgMzcsIDQsIDEsIDE2MSwgMzcsIDQsIDEsIDIzOCwgMjA5LCAzNywgNCwgMSwgMjM4LCAxOTAsIDM3LCAKKyAgICA0LCAxLCAyMzgsIDE3OSwgMzcsIDQsIDEsIDc0LCAzNywgNCwgMSwgMjE2LCA3MywgMzcsIDQsIDEsIDIzOCwgMTE1LCAzNywgCisgICAgNCwgMSwgMjM4LCAxMDQsIDM3LCA0LCAxLCAyMDYsIDIwMSwgMzcsIDQsIDEsIDY2LCAzNywgNCwgMSwgMjM4LCAyNDgsIDM3LCAKKyAgICA0LCAxLCAxNDQsIDM3LCA0LCAxLCAyMDUsIDI2LCAzNywgNCwgMSwgMjQ3LCA4LCAzNywgNCwgMSwgMjEwLCAxMTQsIDM3LCAKKyAgICA0LCAxLCAyMTAsIDY4LCAzNywgNCwgMSwgMjM0LCAxNjUsIDU0LCAzNywgNCwgMSwgMjAwLCAyOSwgMzcsIDQsIDEsIDIwOSwgCisgICAgMjMsIDU0LCAzNywgNCwgMSwgNzIsIDM3LCA0LCAxLCAxOTksIDIxMSwgMzcsIDQsIDEsIDE4MywgMzcsIDQsIDEsIDIyOCwgCisgICAgMTc5LCAzLCAyMzUsIDczLCAzNywgNCwgMSwgMjI4LCA0NSwgMzcsIDQsIDEsIDI0MCwgMjI4LCAzNywgNCwgMSwgMjM1LCAKKyAgICAxMzIsIDM3LCA0LCAxLCAyMDQsIDE3LCAyMjgsIDE3OCwgMzcsIDQsIDEsIDIzOSwgOTAsIDM3LCA0LCAxLCAyNDcsIDIzMywgCisgICAgNzAsIDM3LCA0LCAxLCAyMDAsIDksIDM3LCA0LCAxLCAyMjcsIDIyNywgMzcsIDQsIDEsIDIyNCwgMTQxLCAzNywgNCwgMSwgCisgICAgMjE5LCA5MSwgMzcsIDQsIDEsIDIwNSwgMjAsIDM3LCA0LCAxLCAyMjYsIDExMSwgMzcsIDQsIDEsIDIzMywgMTksIDMsIAorICAgIDIzNSwgNzMsIDM3LCA0LCAxLCAyMDksIDI1MCwgNjYsIDM3LCA0LCAxLCAyMzksIDg2LCAzNywgNiwgMSwgMjE3LCA4MywgCisgICAgMzcsIDQsIDEsIDIxNywgODMsIDM3LCA2LCAxLCAyMDAsIDY1LCAzNywgNCwgMSwgMjAwLCA2NSwgMzcsIDYsIDEsIDIyOCwgCisgICAgMzksIDcyLCAzNywgNCwgMSwgMjI4LCAzOSwgNzIsIDM3LCA2LCAxLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAKKyAgICAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjgsIDM5LCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIAorICAgIDM5LCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDgsIDE3NSwgCisgICAgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjgsIDM5LCAyNDgsIDE3NSwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIDM5LCAyNDgsIAorICAgIDE3NSwgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjYsIDMxLCAzNywgNCwgMSwgMjI2LCAzMSwgMzcsIDYsIDEsIDIxNCwgMjM1LCAKKyAgICAzNywgNCwgMSwgMjE0LCAyMzUsIDM3LCA2LCAxLCAyMzcsIDYzLCAzNywgNCwgMSwgMjM3LCA2MywgMzcsIDYsIDEsIDIyNywgCisgICAgMjUzLCAzNywgNCwgMSwgMjI3LCAyNTMsIDM3LCA2LCAxLCAyMjcsIDI1NCwgMywgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAKKyAgICAzNywgNCwgMSwgMjI3LCAyNTQsIDMsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgMzcsIDYsIDEsIDIwNCwgMjAsIDM3LCA0LCAKKyAgICAxLCAyMDQsIDIwLCAzNywgNiwgMSwgMjEyLCAyMjEsIDIxNywgODMsIDM3LCA0LCAxLCAyMTIsIDIyMSwgMjE3LCA4MywgMzcsIAorICAgIDYsIDEsIDIxNywgODQsIDMsIDIwNSwgMjEwLCAzNywgNCwgMSwgMjE3LCA4NCwgMywgMjA1LCAyMTAsIDM3LCA2LCAxLCAKKyAgICAyMTcsIDExLCAzNywgNCwgMSwgMjE3LCAxMSwgMzcsIDYsIDEsIDIyNiwgNjIsIDM3LCA0LCAxLCAyMjYsIDYyLCAzNywgCisgICAgMjA2LCA0OSwgNTQsIDM4LCAzNywgMjA1LCAyMTAsIDM4LCAzNywgMjE2LCAxODMsIDM4LCAzNywgMjQxLCAyNDIsIDIxNSwgCisgICAgMTA4LCAzOCwgMzcsIDIxNCwgMjI5LCAyMTUsIDEwOCwgMzgsIDM3LCAyMTUsIDkyLCAzOCwgMzcsIDIzMywgODMsIDIwNiwgCisgICAgNDksIDU0LCAzOCwgMzcsIDIyMSwgMTY4LCA1NCwgMzcsIDYsIDEsIDIwOSwgMjUwLCAyMzMsIDE5LCAzLCAyMDcsIDYsIDM3LCAKKyAgICA0LCAxLCAyMDksIDI1MCwgMjMzLCAxOSwgMywgMjA3LCA2LCAzNywgNiwgMSwgMjEwLCAxNjMsIDU0LCAzNywgNCwgMSwgCisgICAgMjEwLCAxNjMsIDU0LCAzNywgNiwgMSwgMjM4LCAxMTYsIDMsIDIwNiwgMTEsIDM3LCA0LCAxLCAyMzgsIDExNiwgMywgMjA2LCAKKyAgICAxMSwgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAyMDMsIDIxOSwgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyMDMsIDIxOSwgMzcsIAorICAgIDYsIDEsIDIzNSwgMTg2LCAzLCA5NywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCA5NywgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAKKyAgICAxMDEsIDExNywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0MSwgCisgICAgMTE5LCAzNywgNCwgMSwgMTk5LCA2OSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAxOTksIDkwLCAzLCAyNDEsIDExOSwgMzcsIAorICAgIDQsIDEsIDE5OSwgOTAsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgCisgICAgMjI3LCAxMDgsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDgzLCA5NywgMzcsIDQsIDEsIDIyNywgMTA4LCAKKyAgICAzLCA4MywgOTcsIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgOTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgMywgOTcsIDM3LCA2LCAKKyAgICAxLCAyNDksIDYwLCAxNjEsIDM3LCA0LCAxLCAyNDksIDYwLCAxNjEsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMjQxLCAxMTksIAorICAgIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgMjQxLCAxMTksIDM3LCA2LCAzMywgMjM4LCAxODAsIDIzNSwgMTg1LCAzNywgNCwgCisgICAgMzMsIDIzOCwgMTgwLCAyMzUsIDE4NSwgMzcsIDYsIDEsIDIxNiwgNzQsIDMsIDEwMSwgMTE3LCAzNywgNCwgMSwgMjE2LCAKKyAgICA3NCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyNTIsIDIsIDE0NCwgMzcsIDQsIDEsIDI1MiwgMiwgMTQ0LCAzNywgNiwgMSwgCisgICAgMjM4LCAxMDUsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM4LCAxMDUsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjA2LCAKKyAgICAyMDIsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjA2LCAyMDIsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjA4LCA2OCwgNjYsIAorICAgIDM3LCA0LCAxLCAyMDgsIDY4LCA2NiwgMzcsIDYsIDEsIDIwOCwgNjgsIDEwOCwgMywgOTcsIDM3LCA0LCAxLCAyMDgsIDY4LCAKKyAgICAxMDgsIDMsIDk3LCAzNywgNiwgMSwgMjM0LCAyMzYsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM0LCAyMzYsIDMsIDI0MSwgCisgICAgMTE5LCAzNywgNiwgMzMsIDIwNiwgMjAyLCAyMDUsIDI2LCAzNywgNCwgMzMsIDIwNiwgMjAyLCAyMDUsIDI2LCAzNywgNiwgCisgICAgMSwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyNDcsIDksIAorICAgIDMsIDgzLCA5NywgMzcsIDQsIDEsIDI0NywgOSwgMywgODMsIDk3LCAzNywgNiwgMSwgMjEwLCAzNCwgMzcsIDQsIDEsIDIxMCwgCisgICAgMzQsIDM3LCA2LCAxLCAyNTIsIDIsIDI0NywgOCwgMzcsIDQsIDEsIDI1MiwgMiwgMjQ3LCA4LCAzNywgNiwgMSwgMjUyLCAyLCAKKyAgICAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjUyLCAyLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgMSwgMjE2LCAKKyAgICAxNzQsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMTk5LCA2OSwgMywgMjQ4LCA1NywgMzcsIDYsIAorICAgIDEsIDIyNywgMTA4LCAzLCAxMTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgMywgMTE3LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIAorICAgIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMTE3LCAzNywgNCwgCisgICAgMSwgMjM4LCAxODAsIDMsIDExNywgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDE4MCwgCisgICAgMywgMjA3LCA2LCAzNywgNiwgMSwgMjI2LCAyMDEsIDI0NywgOCwgMzcsIDQsIDEsIDIyNiwgMjAxLCAyNDcsIDgsIDM3LCA2LCAKKyAgICAxLCAyMzgsIDE5MSwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAxOTEsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIxNiwgCisgICAgMTc0LCAzNywgNiwgMSwgMzUsIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAzNSwgMywgMjQ4LCA1NywgMzcsIDYsIDEsIDM1LCAzLCAKKyAgICAyNDEsIDc0LCAzNywgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDM3LCA2LCAzMywgMzUsIDIyOCwgMTc4LCAzNywgNCwgMzMsIAorICAgIDM1LCAyMjgsIDE3OCwgMzcsIDYsIDEsIDIyOCwgMTc5LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMjI4LCAxNzksIDMsIDI0OCwgCisgICAgNTcsIDM3LCA2LCAxLCAyMTEsIDIxOCwgMzcsIDQsIDEsIDIxMSwgMjE4LCAzNywgNiwgMSwgMjExLCAyMTksIDMsIDI0MSwgCisgICAgNzQsIDM3LCA0LCAxLCAyMTEsIDIxOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0MSwgNzQsIDM3LCA0LCAKKyAgICAxLCAxOTksIDY5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTk5LCA5MCwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDE5OSwgOTAsIAorICAgIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyNTIsIDIsIDIzOSwgOTAsIDM3LCA0LCAxLCAyNTIsIDIsIDIzOSwgOTAsIDM3LCA2LCAKKyAgICAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgMzcsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCAzNywgNiwgMSwgMjMzLCAKKyAgICAxOSwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzQsIAorICAgIDM3LCA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyNDksIDcxLCA3NCwgMzcsIDQsIDEsIDI0OSwgNzEsIDc0LCAKKyAgICAzNywgNiwgMSwgMjQ5LCA3MSwgMTYzLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjQ5LCA3MSwgMTYzLCAzLCAyNDEsIDc0LCAKKyAgICAzNywgNiwgMSwgMTk3LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMTk3LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOCwgMzcsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjgsIDM3LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDM3LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxMDgsIDMsIDUzLCAxNjksIDM3LCA0LCAxLCAxMDgsIDMsIDUzLCAxNjksIAorICAgIDM3LCA2LCAxLCAyNDcsIDksIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyNDcsIDksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAKKyAgICAyMzUsIDE4NiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDAsIAorICAgIDMwLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjAwLCAzMCwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAKKyAgICAyMDgsIDQ3LCAyNiwgMTE3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDIwOCwgNDcsIDI2LCAxMTcsIDM3LCA2LCAxLCAyMzQsIAorICAgIDIzNiwgMywgMTE3LCAzNywgNCwgMSwgMjM0LCAyMzYsIDMsIDExNywgMzcsIDYsIDEsIDIzNCwgMjM2LCAzLCA5NywgMzcsIAorICAgIDQsIDEsIDIzNCwgMjM2LCAzLCA5NywgMzcsIDYsIDEsIDIyNiwgNzIsIDI0MSwgMTc1LCAzNywgNCwgMSwgMjI2LCA3MiwgCisgICAgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMjYsIDcyLCAyNDAsIDIyOCwgMzcsIDQsIDEsIDIyNiwgNzIsIDI0MCwgMjI4LCAzNywgCisgICAgNiwgMSwgMjI2LCA3MiwgMTk5LCAxOCwgMzcsIDQsIDEsIDIyNiwgNzIsIDE5OSwgMTgsIDM3LCA2LCAxLCAyMjYsIDcyLCAKKyAgICAyMzksIDgyLCAzNywgNCwgMSwgMjI2LCA3MiwgMjM5LCA4MiwgMzcsIDYsIDEsIDIyNiwgNzIsIDIyNCwgMTQxLCAzNywgNCwgCisgICAgMSwgMjI2LCA3MiwgMjI0LCAxNDEsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMTksIDkxLCAzNywgNCwgMSwgMjI2LCA3MiwgMjE5LCAKKyAgICA5MSwgMzcsIDYsIDEsIDIyNiwgNzIsIDIwOSwgODksIDM3LCA0LCAxLCAyMjYsIDcyLCAyMDksIDg5LCAzNywgNiwgMSwgCisgICAgMjI2LCA3MiwgMjA1LCAyMDQsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMDUsIDIwNCwgMzcsIDYsIDEsIDIxMywgMTA1LCAxOTksIAorICAgIDg5LCAzNywgNCwgMSwgMjEzLCAxMDUsIDE5OSwgODksIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMTE3LCAzNywgNCwgMSwgCisgICAgMjM4LCAyMTAsIDMsIDExNywgMzcsIDYsIDEsIDIyNCwgMjIzLCAzNywgNCwgMSwgMjI0LCAyMjMsIDM3LCA2LCAxLCAyMTMsIAorICAgIDkzLCAzNywgNCwgMSwgMjEzLCA5MywgMzcsIDYsIDEsIDIwMCwgOTgsIDM3LCA0LCAxLCAyMDAsIDk4LCAzNywgNiwgMSwgCisgICAgMjE0LCAxNTksIDM3LCA0LCAxLCAyMTQsIDE1OSwgMzcsIDYsIDEsIDIwMSwgNjQsIDM3LCA0LCAxLCAyMDEsIDY0LCAzNywgCisgICAgNiwgMSwgMjUxLCAxMzgsIDE2MSwgMzcsIDQsIDEsIDI1MSwgMTM4LCAxNjEsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMTAxLCAKKyAgICAxMTcsIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMTAxLCAxMTcsIAorICAgIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyMTYsIDc0LCAzLCAyNDEsIDExOSwgMzcsIDQsIAorICAgIDEsIDIxNiwgNzQsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjEwLCAzNSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMTAsIAorICAgIDM1LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCA0OSwgMTE3LCAzNywgNCwgMSwgMjM4LCAxODAsIDMsIAorICAgIDQ5LCAxMTcsIDM3LCA2LCAxLCAyMzksIDc1LCAzNywgNCwgMSwgMjM5LCA3NSwgMzcsIDYsIDEsIDI0MSwgMjI0LCAzNywgNCwgCisgICAgMSwgMjQxLCAyMjQsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMjQxLCAKKyAgICAxMTksIDE4NCwgNiwgMSwgMjUwLCAxMDksIDE4NCwgNiwgMSwgMjQ4LCAyMjQsIDE4NCwgNiwgMSwgMjM1LCAxNDksIDE4NCwgCisgICAgNiwgMSwgMjQyLCA1OCwgMTg0LCA2LCAxLCAyMzksIDUsIDE4NCwgNiwgMSwgMTk5LCAxMTQsIDE4NCwgNiwgMSwgMjM4LCAKKyAgICAyNDEsIDE4NCwgNiwgMSwgMjM4LCA4MSwgMTg0LCA2LCAxLCAxMzgsIDE4NCwgNiwgMSwgMTk5LCA2OCwgMTg0LCA2LCAxLCAKKyAgICAyMjgsIDg2LCAxODQsIDYsIDEsIDIyNCwgMTQ1LCAxODQsIDYsIDEsIDIwMCwgMTczLCAxODQsIDYsIDEsIDI0NywgMTkwLCAKKyAgICAxODQsIDYsIDEsIDIyNiwgMjQzLCAxODQsIDYsIDEsIDIzMywgMjA3LCAxODQsIDYsIDEsIDIyNywgMjQ4LCAxODQsIDYsIDEsIAorICAgIDIzNSwgMTk2LCAxODQsIDYsIDEsIDI0NiwgMjU0LCAxODQsIDYsIDEsIDIyMiwgNDAsIDE4NCwgNiwgMSwgMjAwLCA5LCAKKyAgICAxODQsIDYsIDEsIDIxOCwgMjAxLCAxODQsIDYsIDEsIDIxMCwgMTE0LCAxODQsIDYsIDEsIDIwMiwgMTkzLCAxODQsIDYsIDEsIAorICAgIDI0NywgMzcsIDE4NCwgNiwgMSwgMjE2LCA1NCwgMTg0LCA2LCAxLCAyMjcsIDIxMCwgMTg0LCA2LCAxLCAyMTMsIDI1MiwgCisgICAgMTg0LCA2LCAxLCAyMTEsIDE4MCwgMTg0LCA2LCAxLCAyMDIsIDIzOCwgMTg0LCA2LCAxLCAyMDUsIDIwNywgMTg0LCA2LCAxLCAKKyAgICAyMTMsIDE1NCwgMTg0LCA2LCAxLCAyNDYsIDkxLCAxODQsIDYsIDEsIDE5OSwgMjUwLCAxODQsIDYsIDEsIDIxNSwgMTM5LCAKKyAgICAxODQsIDYsIDEsIDIyNiwgMjU0LCAxODQsIDYsIDEsIDIxNywgMTA4LCAxODQsIDYsIDEsIDIzNywgMTM0LCAxODQsIDY3LCAKKyAgICAxLCA0OSwgMTY3LCAyMTMsIDI2LCAxODQsIDI1MSwgMTMsIDE4NCwgMjM4LCAxODMsIDgxLCAxODQsIDIzOCwgNDMsIDgxLCAKKyAgICAxODQsIDI0NiwgNzAsIDE4NCwgMjE0LCA3OSwgODEsIDE4NCwgMjUyLCAzLCA4MSwgMTg0LCA0LCAxLCAyNTAsIDEwOSwgCisgICAgMTg0LCA0LCAxLCAyNDgsIDIyNCwgMTg0LCA0LCAxLCAyMzUsIDE0OSwgMTg0LCA0LCAxLCAyNDIsIDU4LCAxODQsIDQsIDEsIAorICAgIDIzOSwgNSwgMTg0LCA0LCAxLCAxOTksIDExNCwgMTg0LCA0LCAxLCAyMzgsIDI0MSwgMTg0LCA0LCAxLCAyMzgsIDgxLCAKKyAgICAxODQsIDQsIDEsIDEzOCwgMTg0LCA0LCAxLCAxOTksIDY4LCAxODQsIDQsIDEsIDIyOCwgODYsIDE4NCwgNCwgMSwgMjI0LCAKKyAgICAxNDUsIDE4NCwgNCwgMSwgMjAwLCAxNzMsIDE4NCwgNCwgMSwgMjQ3LCAxOTAsIDE4NCwgNCwgMSwgMjI2LCAyNDMsIDE4NCwgCisgICAgNCwgMSwgMjMzLCAyMDcsIDE4NCwgNCwgMSwgMjI3LCAyNDgsIDE4NCwgNCwgMSwgMjM1LCAxOTYsIDE4NCwgNCwgMSwgMjQ2LCAKKyAgICAyNTQsIDE4NCwgNCwgMSwgMjIyLCA0MCwgMTg0LCA0LCAxLCAyMDAsIDksIDE4NCwgNCwgMSwgMjE4LCAyMDEsIDE4NCwgNCwgCisgICAgMSwgMjEwLCAxMTQsIDE4NCwgNCwgMSwgMjAyLCAxOTMsIDE4NCwgNCwgMSwgMjQ3LCAzNywgMTg0LCA0LCAxLCAyMTYsIDU0LCAKKyAgICAxODQsIDQsIDEsIDIyNywgMjEwLCAxODQsIDQsIDEsIDIxMywgMjUyLCAxODQsIDQsIDEsIDIxMSwgMTgwLCAxODQsIDQsIDEsIAorICAgIDIwMiwgMjM4LCAxODQsIDQsIDEsIDIwNSwgMjA3LCAxODQsIDQsIDEsIDIxMywgMTU0LCAxODQsIDQsIDEsIDI0NiwgOTEsIAorICAgIDE4NCwgNCwgMSwgMTk5LCAyNTAsIDE4NCwgNCwgMSwgMjE1LCAxMzksIDE4NCwgNCwgMSwgMjI2LCAyNTQsIDE4NCwgNCwgMSwgCisgICAgMjE3LCAxMDgsIDE4NCwgNCwgMSwgMjM3LCAxMzQsIDE4NCwgNCwgMzMsIDIzOSwgNiwgMTk5LCAyNTAsIDE4NCwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDE4NCwgMjMzLCAzMywgMjEzLCA0NSwgMTg0LCAyMzgsIDc3LCA1NCwgMjI1LCAyNywgMTg0LCAyMzgsIAorICAgIDc3LCA1NCwgMTg0LCAyMzksIDE1NywgNTQsIDExMywgMjUxLCAyNTIsIDIzOCwgNzIsIDExMywgMjUxLCAyNTIsIDIxMSwgCisgICAgMTgxLCAxMTMsIDI1MSwgMjUyLCAyMTAsIDkyLCAxMTMsIDI1MSwgMjUyLCAxOTksIDEwMCwgMjE0LCAxNDIsIDExMywgMjUxLCAKKyAgICAyNTIsIDE5OSwgMTAwLCAyMzYsIDc5LCAxMTMsIDI1MSwgMjUyLCAyMDUsIDIyMiwgMTEzLCAyNTEsIDI1MiwgMjEzLCAxMDIsIAorICAgIDExMywgMjUxLCAyNTIsIDE5OSwgOTgsIDExMywgMjUxLCAyNTIsIDIxNiwgMTAwLCAxMTMsIDI1MSwgMjUyLCAyMDAsIDIyLCAKKyAgICAxMTMsIDI1MSwgMjUyLCAyMDYsIDEyOSwgMTEzLCAyNTEsIDI1MiwgMjM1LCAyNDcsIDExMywgMjUxLCAyNTIsIDIzNSwgCisgICAgMjQ4LCAyMjEsIDMsIDExMywgMjUxLCAyNTIsIDIzNSwgMjQ1LCAxMTMsIDI1MSwgMjUyLCAyMTQsIDE0MywgMjE2LCAxMjksIAorICAgIDExMywgMjUxLCAyNTIsIDIwNiwgMTcyLCAyMzYsIDgsIDExMywgMjUxLCAyNTIsIDIxNiwgNzksIDExMywgMjUxLCAyNTIsIAorICAgIDI1MCwgMTQ4LCAyMzQsIDIyOCwgMTEzLCAyNTEsIDI1MiwgMjIxLCAxMywgMTEzLCAyNTEsIDI1MiwgMjIyLCAyMDMsIDExMywgCisgICAgMjUxLCAyNTIsIDIyMiwgMjksIDExMywgMjUxLCAyNTIsIDIyMiwgMzAsIDIyNiwgMjU1LCAxMTMsIDI1MSwgMjUyLCAyNDEsIAorICAgIDI1MSwgMTEzLCAyNTEsIDI1MiwgMjE0LCAxNTQsIDExMywgMjUxLCAyNTIsIDIwNiwgMTcyLCAyMTQsIDEzNywgMTEzLCAKKyAgICAyNTEsIDI1MiwgMjAwLCAzMiwgMjQ4LCAyMjUsIDE5OSwgMjMxLCAxMTMsIDI1MSwgMjUyLCAyMTcsIDkwLCAxMTMsIDI1MSwgCisgICAgMjUyLCAyMjgsIDEzNywgMTEzLCAyNTEsIDI1MiwgMjQxLCAxNTMsIDExMywgMjUxLCAyNTIsIDE5OSwgMjUsIDExMywgMTM0LCAKKyAgICAyMjIsIDEzMSwgMjQ2LCAxNTUsIDExMywgMjE1LCAxMDAsIDIxMCwgMzcsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTEsIAorICAgIDE4MSwgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxNiwgOTMsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTQsIDE0NywgCisgICAgMTEzLCAyMTUsIDEwMCwgMjM0LCA0NywgMTEzLCAyMTUsIDEwMCwgMjA1LCAyMywgMTEzLCAyMTUsIDEwMCwgMjExLCAxODEsIAorICAgIDExMywgMjE1LCAxMDAsIDIxNiwgOTMsIDExMywgMjE1LCAxMDAsIDIxNCwgMTQ3LCAxMTMsIDIxNSwgMTAwLCAyMzMsIDE5OSwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjMzLCAyMDAsIDIzNCwgMTU4LCAzNiwgMjAzLCA2MywgMTEzLCAyMTUsIDEwMCwgMjE0LCA4MywgCisgICAgMTEzLCAyMTUsIDEwMCwgMjQyLCA0MywgMjE3LCAzNCwgMjIyLCAxNjMsIDExMywgMjE1LCAxMDAsIDIyMiwgMTksIDExMywgCisgICAgMjE0LCAyMTIsIDIyMiwgMTYwLCAxMTMsIDIxNSwgMTAwLCAyMTMsIDIzMiwgMTEzLCAyMTQsIDIxMiwgMjE2LCAxMDIsIAorICAgIDExMywgMjE1LCAxMDAsIDIxMCwgMjIsIDI0MCwgMTgyLCAxMTMsIDIxNSwgMTAwLCAyMDksIDE0MywgMjQwLCAxODIsIDExMywgCisgICAgMjE0LCAyMTIsIDIwOSwgMjQsIDIxNiwgOTUsIDExMywgMTM0LCAyMDMsIDIyNSwgMjQwLCAxODIsIDExMywgMTM0LCAyMjQsIAorICAgIDU0LCAyNDAsIDE4MiwgMTEzLCAyMTQsIDIxMiwgMjE4LCA5MCwgMjM0LCAyMjcsIDExMywgMjE1LCAxMDAsIDIxNCwgMTQ4LCAKKyAgICAyMTQsIDE0MiwgMTEzLCAxLCAyNTEsIDE0MiwgMTEzLCAxLCAyNDgsIDIxMCwgMTEzLCAxLCAyMzUsIDE0NywgMTEzLCAxLCAKKyAgICAyNDIsIDIzLCAxMTMsIDEsIDIzNCwgMTM5LCAxMTMsIDEsIDIwMywgNjMsIDExMywgMSwgMTk5LCA5MiwgMTEzLCAxLCAyMzQsIAorICAgIDkzLCAxMTMsIDEsIDIwNiwgMTQ2LCAxMTMsIDEsIDE5OSwgMjM0LCAxMTMsIDEsIDQ3LCAyMjcsIDg2LCAxMTMsIDEsIDIyNywgCisgICAgODYsIDExMywgMSwgMjI1LCA4MywgMTEzLCAxLCA0NywgMjIyLCA0NywgMTEzLCAxLCAyMjIsIDQ3LCAxMTMsIDEsIDQ3LCAKKyAgICAyMTgsIDg5LCAxMTMsIDEsIDIxOCwgODksIDExMywgMSwgMjEyLCAxOSwgMTEzLCAxLCAyNTAsIDEwNywgMTEzLCAxLCA0NywgCisgICAgMjE2LCA3MywgMTEzLCAxLCAyMTYsIDczLCAxMTMsIDEsIDQ3LCAyMDUsIDI3LCAxMTMsIDEsIDIwNSwgMjcsIDExMywgMSwgCisgICAgMjE0LCAxMDYsIDExMywgMSwgMjEzLCAxMjMsIDExMywgMSwgMjEwLCAyMSwgMTEzLCAxLCAyMDYsIDIxNywgMTEzLCAzMywgCisgICAgMjAwLCA3LCA1MywgMjAzLCA2MywgMTEzLCAzMywgMjAwLCA3LCAyMDMsIDY0LCAxOTksIDIzNCwgMTEzLCAzMywgMjAwLCA3LCAKKyAgICA1MywgMTk5LCAyMzQsIDExMywgMjE0LCAyMTIsIDIzNSwgMjQ3LCAxMTMsIDIxNCwgMjEyLCAyMzUsIDI0NSwgOSwgNDEsIAorICAgIDU0LCA5LCAyLCAyMTIsIDEyLCA5LCAyMzYsIDI1MywgMjIyLCAxNDUsIDksIDIsIDIxMiwgNTIsIDksIDIsIDIxMiwgMTUsIAorICAgIDksIDQxLCAxMzQsIDU2LCAyNTAsIDI0OCwgMjQyLCAyMTAsIDIxMiwgMjM0LCAyNTAsIDI0OCwgMjM2LCAyMjIsIDIxMiwgCisgICAgMjM0LCA5LCAyMTMsIDE5NywgMjUwLCAyNDgsIDIxNiwgMjgsIDIyMSwgMTcwLCA1NCwgMjUwLCAyNDgsIDIxNiwgMjgsIAorICAgIDIwNiwgMTY3LCAyMDYsIDUxLCA1NCwgMjUxLCAxOTgsIDU0LCA5LCAyNDYsIDcwLCA5LCAyNDEsIDIzOCwgMjEwLCAxNTQsIAorICAgIDksIDIxNSwgMTAyLCAyMDMsIDQ0LCA1NCwgOSwgMiwgMjIxLCAxNDksIDksIDIsIDIxMiwgMjksIDI1MSwgMTQ1LCAyMDEsIAorICAgIDg4LCA5LCAyLCAyNTEsIDE0NSwgMjUwLCAxNzAsIDksIDIsIDIxMywgMjMwLCAyNTEsIDE0NCwgOSwgMiwgMjEzLCAyMzgsIAorICAgIDI1MSwgMTIyLCAyNTEsIDYzLCA5LCAyLCAyMDYsIDI1NCwgOSwgNCwgMTIyLCAyMDcsIDksIDksIDQsIDEyMiwgMzMsIDE0MCwgCisgICAgMywgMjI1LCA5MiwgMywgMjAwLCA0NiwgOSwgNCwgMTIyLCAxOTksIDEwNSwgOSwgNCwgMjM3LCAxNTgsIDksIDQsIDI0MiwgCisgICAgMTcsIDksIDQsIDIyNywgMzYsIDksIDIxMCwgMTY3LCA5LCAxLCA4MSwgOSwgMjA1LCA4MywgNzMsIDIxNCwgMjEyLCA4MSwgCisgICAgOSwgMjE0LCA3OSwgODEsIDksIDEsIDIyNywgNDAsIDIwMCwgNDYsIDksIDEsIDIzNCwgMjAzLCA5LCAxLCAxNDAsIDMsIAorICAgIDIyMiwgMjI0LCA1NiwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA1NiwgCisgICAgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgNTcsIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDI1MSwgMTQyLCA5LCAKKyAgICAxLCAyNDgsIDI0MCwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU2LCA5LCAxLCAyMDYsIDE4MywgOSwgMSwgMjA2LCAxMDIsIDksIAorICAgIDEsIDIyNywgMjI0LCA5LCAxLCAyMzQsIDIyNCwgOSwgMSwgMjI2LCAyMDMsIDksIDEsIDI0MiwgMjksIDksIDEsIDIwNiwgCisgICAgMTE0LCA5LCAxLCAyMTMsIDE1NCwgOSwgMSwgMTk5LCAxMDUsIDksIDEsIDIxMSwgMTg2LCA5LCAxLCAyMTAsIDYxLCA5LCAxLCAKKyAgICAyMTIsIDU2LCA5LCAxLCAyNDIsIDUyLCA5LCAxLCAyMDcsIDksIDksIDEsIDE5OSwgMTA4LCA5LCAxLCAyNTEsIDE3MSwgOSwgCisgICAgMSwgMjM1LCAxOTQsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIAorICAgIDE5MCwgNTcsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgCisgICAgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMjA2LCAyMjMsIDksIDEsIAorICAgIDIzNywgMTM0LCA5LCAxLCAyMTQsIDE1MiwgOSwgMSwgMjI3LCA4NiwgOSwgMSwgMjI1LCA5MSwgOSwgMSwgMjIyLCA2MSwgOSwgCisgICAgMSwgMjE4LCAyMjcsIDksIDEsIDIzNCwgMTE1LCA5LCAxLCAyMDEsIDcyLCA5LCAxLCAxNDAsIDIyMiwgMTg3LCA5LCAxLCAKKyAgICAyMDAsIDQ2LCA5LCAyMzcsIDE1NiwgOSwgMjQyLCAxNSwgOSwgMjI3LCAzNCwgOSwgMjM3LCAxNTgsIDksIDI0MiwgMTcsIDksIAorICAgIDIyNywgMzYsIDksIDIxMCwgMTA0LCA5LCAyMDcsIDIzNiwgOSwgMjIyLCAyMjIsIDU2LCA5LCAyMzQsIDIwNCwgNTYsIDksIAorICAgIDIzNCwgMjA0LCA1NywgOSwgMjA4LCA0LCAyNTEsIDE0MiwgOSwgMjI4LCA1MCwgMjQyLCAxNywgOSwgMTM0LCAyMTgsIDIyOCwgCisgICAgMjM1LCAxNjUsIDksIDE5OCwgMjQ1LCA5LCAyMiwgMiwgNCwgMjAzLCAxNjksIDU2LCA5LCAyMiwgMiwgMjI4LCA1MCwgNCwgCisgICAgMjAzLCAxNjksIDU2LCA5LCAyMiwgMiwgNzMsIDU3LCA5LCAyMTMsIDEwNSwgMjQyLCAxNywgOSwgMjM3LCAxNTksIDMsIAorICAgIDEyMCwgMjQwLCAxODAsIDksIDIwMSwgNzQsIDIzNCwgMjA0LCA1NywgMjUwLCAyNDgsIDE3LCAxOTksIDgxLCAyNTAsIDI0OCwgCisgICAgMTcsIDEwMiwgMjUwLCAyNDgsIDE3LCAxMDUsIDI1MCwgMjQ4LCAxNywgMTQ3LCAyNTAsIDI0OCwgMTcsIDE0OSwgMjUwLCAKKyAgICAyNDgsIDE3LCAxNjQsIDI1MCwgMjQ4LCAxNywgMTg3LCAyNTAsIDI0OCwgMTcsIDIxMCwgMTM1LCAyNTAsIDI0OCwgMTcsIAorICAgIDE5MiwgMjUwLCAyNDgsIDE3LCAyMTksIDExMywgOSwgMjE2LCAyNywgNTQsIDksIDI0MSwgMTY4LCAyMTAsIDE1NCwgOSwgCisgICAgMjA2LCA0OSwgMjEwLCAxNTQsIDksIDIzNywgNjEsIDIxNSwgOTgsIDIwOCwgMTA5LCA5LCAxLCAyNDAsIDE4MSwgMjQ4LCAKKyAgICAyNDAsIDksIDEsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMSwgMjA3LCAyMTMsIDI1MSwgMTQyLCA5LCAxLCAxNDAsIDIwMSwgCisgICAgODksIDksIDEsIDE0MCwgMywgMjAxLCA3NCwgMjM0LCAyMDQsIDU2LCA5LCAxLCAxNDAsIDMsIDIwMSwgNzQsIDIzNCwgMjA0LCAKKyAgICA1NywgOSwgMSwgMTIyLCAyMzQsIDIwMywgOSwgMSwgMTIyLCAyMzQsIDIwNCwgMjUxLCAxNDIsIDksIDEsIDEyMiwgMjM0LCAKKyAgICAyMDQsIDIwMSwgNzIsIDksIDEsIDEwOCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxMjIsIDIzNCwgMjA0LCAyMDAsIDQ2LCAKKyAgICA5LCAxLCAyMDQsIDI0NSwgOSwgMSwgMjA0LCAyNDMsIDksIDEsIDI0OCwgMjUwLCA5LCAxLCAyMDYsIDE4NCwgMywgMjEzLCAKKyAgICAyNiwgOSwgMSwgMjA2LCAxODQsIDMsIDEyNiwgMTkwLCA4OCwgMjM5LCAxNjUsIDksIDEsIDIxNiwgNTQsIDksIDEsIDIwNiwgCisgICAgMTgxLCA5LCAxLCAyNDgsIDIzOCwgOSwgMSwgMTU1LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDE1NSwgMywgMTIwLCAxOTAsIAorICAgIDgzLCA1NiwgOSwgMSwgMjE4LCA0NywgOSwgMSwgMjM5LCA5OSwgOSwgMSwgMTU1LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwNiwgMjA1LCA5LCAxLCAyMDYsIDIwMywgOSwgMSwgMjQxLCAyMTUsIDksIDEsIDI0MiwgMzAsIDMsIDIxMywgMjYsIDksIAorICAgIDEsIDI0MiwgMzAsIDMsIDczLCA1NywgOSwgMSwgMjQyLCAzMCwgMywgNzMsIDI0OCwgMjI4LCAyNiwgNCwgMjA3LCA5LCA5LCAKKyAgICAxLCAyNDIsIDM2LCA5LCAxLCAyNDEsIDIxNywgOSwgMSwgMjM5LCAxMjcsIDksIDEsIDI0MiwgMzAsIDMsIDEyNiwgMTkwLCAKKyAgICA4OCwgMjM5LCAxNjUsIDksIDEsIDI0MiwgMzAsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxLCAyMTIsIDIwNywgOSwgMSwgCisgICAgMjEzLCAxNTUsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAyMTMsIDE1NSwgMywgMjEzLCAyNiwgOSwgMSwgMjEzLCAxNTUsIDMsIAorICAgIDczLCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDIwMywgMTY5LCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDczLCAyNDgsIAorICAgIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjI3LCAyMjEsIDksIDEsIAorICAgIDIxMywgMTU1LCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCAKKyAgICA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjExLCAxODcsIDMsIDEyNiwgMTkwLCAyNDgsIAorICAgIDIyOCwgMjYsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjEyLCA1NywgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMTIsIDU3LCAzLCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDIwNywgMTAsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgCisgICAgMTkwLCA1NiwgOSwgMSwgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxLCAyMzcsIDEzNSwgMywgNzMsIDIyMSwgNTYsIDU3LCA5LCAKKyAgICAxLCAyMzcsIDEzNSwgMywgNzMsIDU3LCA5LCAxLCAyMDMsIDUyLCA5LCAxLCAyMzcsIDEzNSwgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCAyMTYsIDUyLCA5LCAxLCAyMTQsIDE1MywgMywgNzMsIDU2LCA5LCAxLCAyMTQsIDE1MywgMywgMTI2LCAxOTAsIAorICAgIDU2LCA5LCAxLCAyMjYsIDI1MiwgOSwgMSwgMjA3LCAxODMsIDIyNywgODYsIDksIDEsIDIyNywgODcsIDMsIDIxMywgMjYsIAorICAgIDksIDEsIDIyNywgODcsIDMsIDczLCA1NiwgOSwgMSwgMjE5LCAyNTUsIDksIDEsIDIyNywgODcsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgMjM2LCA3NiwgOSwgMSwgMjM2LCA3NywgMywgMjEzLCAyNiwgOSwgMSwgMjE5LCAxNzYsIDksIDEsIDIzNiwgNzcsIAorICAgIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjM1LCAzNywgOSwgMSwgMjM2LCA3NywgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMjUsIDkyLCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMjI1LCA5MiwgMywgNzMsIDU2LCA5LCAxLCAyMjUsIDkyLCAzLCAxMjYsIAorICAgIDE5MCwgNTYsIDksIDEsIDIyNSwgOTIsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjE4LCAyMjgsIDMsIDczLCA1NywgOSwgMSwgCisgICAgMjE4LCAyMjgsIDIzNSwgMTY1LCA5LCAxLCAyMTMsIDQsIDksIDEsIDIxOCwgMjI4LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDcsIDksIDEsIDIwNiwgMjA2LCAzLCA3MywgCisgICAgNTYsIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgNTYsIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExMywgOSwgMSwgMjM0LCAxMTYsIAorICAgIDIzNSwgMTE0LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NywgMjM1LCAxMTMsIDksIDEsIDIwMSwgCisgICAgNzMsIDMsIDIxMywgMjYsIDksIDEsIDIyNiwgMTM5LCAyMTcsIDEyMSwgOSwgMSwgMjE3LCAxMjEsIDksIDEsIDY2LCA5LCAxLCAKKyAgICAxOTksIDIxMSwgOSwgMSwgMjI2LCAxMzksIDE5OSwgMjExLCA5LCAxLCAyMDEsIDczLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwMywgNTksIDksIDEsIDIzNywgMTYyLCAyMDAsIDQ2LCA5LCAxLCA5MCwgMywgMjA3LCA2LCA5LCAxLCA5MCwgMywgNCwgCisgICAgMjAzLCAxNjgsIDksIDEsIDIwMSwgNzMsIDMsIDczLCA1NiwgOSwgMSwgNzIsIDksIDEsIDkwLCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDkwLCAyNDksIDY5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgOSwgMSwgMjUxLCAyMjEsIDksIDQsIDEyMiwgMzMsIDIxMiwgNTcsIDMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODcsIAorICAgIDksIDQsIDEyMiwgMzMsIDIxNCwgMTUzLCAzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg3LCA5LCA0LCAxMjIsIDg0LCA4MiwgCisgICAgMTksIDksIDQsIDEyMiwgMjI1LCA5MiwgMjUxLCAxNDIsIDksIDQsIDEyMiwgMjI3LCAyMjQsIDksIDQsIDEyMiwgMTI2LCAKKyAgICAyNDAsIDE4MCwgOSwgNCwgMTIyLCAyMTEsIDE4NiwgOSwgMjM4LCAxNzEsIDc2LCAyNTAsIDExMSwgOSwgMjA4LCAxMDUsIAorICAgIDc2LCAyMTIsIDE3MywgMjM4LCAyMTAsIDIzNCwgNDIsIDksIDQsIDEyMiwgMjEyLCAyMTksIDE5OSwgODEsIDksIDQsIDEyMiwgCisgICAgMjAzLCAyMjMsIDIxMywgMTc0LCAxOTksIDgxLCA5LCA0LCAxMjIsIDI0MCwgMTgxLCAyMzQsIDEzNywgNzYsIDIyNiwgMjAzLCAKKyAgICA5LCA0LCAxMjIsIDg0LCA2NSwgMTksIDksIDQsIDEyOCwgMjExLCAxODYsIDksIDQsIDEyMiwgMjIyLCAyMjMsIDksIDQsIAorICAgIDIwMSwgNzIsIDksIDQsIDIwMCwgNDYsIDksIDQsIDEyMiwgMjAwLCA0NiwgOSwgNCwgMTIyLCAyMTgsIDIyNywgOSwgMjE1LCAKKyAgICAxMzQsIDc2LCAyMTIsIDQyLCA5LCAyMzgsIDE4MSwgMjQ3LCA1NiwgMTI4LCAyMDgsIDc2LCA5LCAyMzgsIDE4MSwgMjQ3LCAKKyAgICA1NiwgMTIyLCAyMDgsIDc2LCA5LCAyMTIsIDIxOSwgMTIyLCAyMDgsIDc3LCAzLCAyMzcsIDk0LCAyNDcsIDU1LCA5LCA0LCAKKyAgICAxMjgsIDIyMiwgNjEsIDksIDEsIDI0MiwgMzAsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMTMsIDE1NSwgMywgCisgICAgMjI4LCA1MCwgMjAzLCAxNjgsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTk5LCA4MSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxMDIsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTA1LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE0NywgMjM4LCAzMywgCisgICAgMjUwLCAyNDgsIDE3LCAxNDksIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTY0LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDE4NywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMTAsIDEzNSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxOTIsIDIzOCwgCisgICAgMzMsIDI1MCwgMjQ4LCAxNywgMjE5LCAxMTMsIDksIDEsIDIxMCwgNjIsIDMsIDczLCA1NywgOSwgMSwgMjQyLCA1MywgMywgCisgICAgNzMsIDU3LCA5LCAxLCAyMzUsIDE5NSwgMywgNzMsIDU3LCA5LCAyLCAyMDksIDE0MiwgMjUxLCA4OSwgOSwgMiwgMjA5LCAKKyAgICAxNDIsIDIxNSwgNjMsIDIyMiwgNDAsIDksIDEsIDIzNCwgMTE2LCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgMjA3LCAxMDMsIAorICAgIDIzOCwgMTcxLCA3NiwgMjE2LCAxMjcsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjM2LCAxODMsIDIwOCwgNzYsIDIwNywgMTAzLCAKKyAgICAyMDgsIDYsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDcsIDEwMywgMjA3LCAyMDksIDI0NiwgNzksIDIwNywgMTAzLCAyMDgsIDYsIAorICAgIDI0NiwgNzksIDIwNywgMTAzLCAyMzMsIDE3NywgMjQ2LCA3OSwgMjA3LCAxMDMsIDI0NiwgODAsIDIwOSwgODYsIDIyNSwgCisgICAgMjgsIDIwNywgMTAzLCAyNDYsIDgwLCAyMDksIDg2LCAyMTMsIDQ2LCAyMDcsIDEwMywgMjA3LCAyMDksIDI0NiwgODAsIAorICAgIDIwOSwgODYsIDIyNSwgMjgsIDIwNywgMTAzLCAyMDgsIDYsIDI0NiwgODAsIDIwOSwgODYsIDIxMywgNDYsIDIwNywgMTAzLCAKKyAgICAyNDMsIDM2LCAyMDcsIDEwMywgMjM0LCAxNjMsIDIxNywgMTQwLCAyMDcsIDEwMywgMjM0LCAxNjMsIDIyMiwgMTcsIDIwNywgCisgICAgMTAzLCAyMzQsIDE2MywgMjUwLCAxNjcsIDIwNywgMTAzLCAyNTIsIDMsIDgxLCAyMDcsIDEwMywgMSwgMjUxLCAxNDcsIAorICAgIDIwNywgMTAzLCAxLCAyMDcsIDIxMywgMjUxLCAxNDcsIDIwNywgMTAzLCAxLCAyNDgsIDIwNywgMjA3LCAxMDMsIDEsIDIzNiwgCisgICAgNjYsIDIwNywgMTAzLCAxLCAyMzYsIDY3LCAyMzYsIDQ0LCAyMDcsIDEwMywgMSwgMjQyLCAyNiwgMjA3LCAxMDMsIDEsIAorICAgIDI0MCwgMTgxLCAyNDIsIDI3LCAyMTMsIDIwLCAyMDcsIDEwMywgMSwgMjM0LCAxMzksIDIwNywgMTAzLCAxLCAyMDEsIDcyLCAKKyAgICAyMDcsIDEwMywgMSwgMTk5LCAxMDUsIDIwNywgMTAzLCAxLCAyMzQsIDkxLCAyMDcsIDEwMywgMSwgMjA2LCAxNDIsIDIwNywgCisgICAgMTAzLCAxLCAyMDYsIDE0MywgMjM2LCA0NCwgMjA3LCAxMDMsIDEsIDE5OSwgMTk4LCAyMDcsIDEwMywgMSwgMTk5LCAxOTksIAorICAgIDIzNCwgMTM5LCAyMDcsIDEwMywgMSwgMjI3LCA1NywgMjA3LCAxMDMsIDEsIDIyNSwgOTAsIDIwNywgMTAzLCAxLCAyMjEsIAorICAgIDE2NiwgMjA3LCAxMDMsIDEsIDIxOCwgODksIDIwNywgMTAzLCAxLCAyMTAsIDE2MCwgMjA3LCAxMDMsIDEsIDQ3LCAyMTAsIAorICAgIDE2MCwgMjA3LCAxMDMsIDEsIDcyLCAyMDcsIDEwMywgMSwgMjE2LCA3MywgMjA3LCAxMDMsIDEsIDIxMywgMTA1LCAyMTYsIAorICAgIDczLCAyMDcsIDEwMywgMSwgMjEyLCA1NCwgMjA3LCAxMDMsIDEsIDIxNCwgMTQ2LCAyMDcsIDEwMywgMSwgMjEzLCAyMCwgCisgICAgMjA3LCAxMDMsIDEsIDIxMCwgMjEsIDIwNywgMTAzLCAxLCAyMDYsIDIxNSwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDI0OCwgCisgICAgMTk0LCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjM1LCAxOTIsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyNDEsIDk1LCAyMDcsIAorICAgIDEwMywgMjE0LCAyMjUsIDU2LCAyMDcsIDEwMywgMjE0LCAyMjUsIDU3LCAyMDcsIDEwMywgMjE0LCAyMjUsIDIzOSwgMTc5LCAKKyAgICAyMDcsIDEwMywgMTk5LCA4LCA1NiwgMjA3LCAxMDMsIDE5OSwgOCwgNTcsIDIwNywgMTAzLCAxOTksIDgsIDIzOSwgMTc5LCAKKyAgICAyMDcsIDEwMywgMjEzLCAxOTMsIDU2LCAyMDcsIDEwMywgMjEzLCAxOTMsIDU3LCAyMDcsIDEwMywgMjM5LCAxODAsIDE5OSwgCisgICAgMTUsIDIzMywgMTc2LCAyMDcsIDEwMywgMjM5LCAxODAsIDE5OSwgMTUsIDI1MSwgNjQsIDIwNywgMTAzLCAyMzQsIDE0NCwgCisgICAgNTYsIDIwNywgMTAzLCAyMzQsIDE0NCwgNTcsIDIwNywgMTAzLCAyMzQsIDE0MywgMjM5LCAxNzksIDIwNywgMTAzLCAyMzgsIAorICAgIDk4LCA1NiwgMjA3LCAxMDMsIDIzOCwgOTgsIDU3LCAyMDcsIDEwMywgMjEyLCAxMzgsIDIwNywgMTAzLCAyMzcsIDEyOCwgCisgICAgMjQwLCAxODIsIDIwNywgMTAzLCAyMTQsIDU3LCAyMDcsIDEwMywgMjEyLCAxNjcsIDIwNywgMTAzLCAxMjAsIDgzLCAxOTAsIAorICAgIDU2LCAyMDcsIDEwMywgMTIwLCA4MywgMTkwLCA1NywgMjA3LCAxMDMsIDEyNiwgMTkwLCA1NiwgMjA3LCAxMDMsIDEyNiwgCisgICAgMTkwLCA1NywgMjA3LCAxMDMsIDIxNywgMTM4LCAyMjQsIDE3NywgNTYsIDIwNywgMTAzLCAyMTcsIDEzOCwgMjI0LCAxNzcsIAorICAgIDU3LCAyMDcsIDEwMywgMjIwLCAyNDUsIDIwNywgMTAzLCAyNDksIDY4LCAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMTk5LCA3NSwgCisgICAgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDIyNiwgMTk2LCAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMjM3LCAxNDcsIDksIDEsIAorICAgIDI0OCwgMjQxLCAzLCAxMjYsIDE5MCwgMjMzLCAxMjYsIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgNzMsIDI0OCwgMjI4LCAyNiwgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCAyNDgsIDI0MSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDI0OCwgCisgICAgMjQxLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCAyNDgsIDIyOCwgMjYsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjQ4LCAKKyAgICAyNDEsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjQ4LCAyNDEsIDMsIDIyOCwgNTAsIDQsIAorICAgIDIwMywgMTY5LCA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAxNTUsIDMsIDEyMCwgMTkwLCA1NiwgCisgICAgOSwgMSwgMTU1LCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjQyLCAzMCwgMywgMTIwLCAxOTAsIAorICAgIDIwMiwgMjQ4LCAyNDgsIDIyOCwgMjYsIDQsIDIwNywgOSwgOSwgMSwgMjQyLCAzMCwgMywgMjI4LCA1MCwgNCwgMjAzLCAKKyAgICAxNjksIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgOTcsIDksIDEsIDIxMSwgMTg3LCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgCisgICAgMSwgMjUxLCAxNzIsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIAorICAgIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NiwgOSwgMSwgMjM3LCAxMzUsIDMsIDEyMCwgCisgICAgMTkwLCA1NywgOSwgMSwgMjM3LCAxMzUsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyMjYsIDI1MywgCisgICAgMywgNzMsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAxOTAsIAorICAgIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDg0LCAzLCA3MywgNTYsIDksIDEsIDg0LCAzLCA3MywgNTcsIDksIDEsIDIxOCwgCisgICAgMjI4LCAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIxOCwgMjI4LCAzLCA0LCAyMDcsIDksIDksIDEsIDIxOCwgMjI4LCAzLCA0LCAKKyAgICAyMDMsIDE2OCwgOSwgMSwgMjI1LCA5MiwgMywgMTQ4LCA5LCAxLCAyMTMsIDE1NSwgMywgMTIwLCAxOTAsIDIwMiwgMjQ4LCAKKyAgICA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDEyMCwgMTkwLCAyMDIsIAorICAgIDI0OCwgNTYsIDksIDEsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAxMCwgNTcsIDksIDEsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAKKyAgICAxMCwgMjYsIDEyMCwgMjQwLCAxODAsIDksIDEsIDIxMSwgMTg3LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCAyNiwgMTIwLCAyNDAsIAorICAgIDE4MCwgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgMTAsIDI2LCAxMjAsIDI0MCwgMTgwLCA5LCAxLCAxNTUsIAorICAgIDMsIDQsIDksIDEsIDIwNywgMTAsIDU2LCA5LCAxLCAxNDAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgCisgICAgMSwgMTQwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAKKyAgICAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTI2LCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIzNiwgMjI5LCA1NywgOSwgCisgICAgMSwgMjAxLCA3MywgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAxLCAyMDEsIDczLCAzLCAyMzgsIDMzLCAKKyAgICAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgCisgICAgNTYsIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDE1NSwgMywgCisgICAgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMzYsIDIyOSwgNTcsIDksIDEsIDIxMSwgMTg3LCAzLCAyMzgsIDMzLCAyNTAsIAorICAgIDI0OCwgMTcsIDIzNiwgMjI5LCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMjcsIAorICAgIDg3LCAzLCAxMjAsIDE5MCwgNTYsIDIwNiwgMTE5LCAxLCAyMzQsIDIzMywgMjA2LCAxMTksIDEsIDIxMCwgNzEsIDIwNiwgCisgICAgMTE5LCAxLCAyMTgsIDIyNiwgMjA2LCAxMTksIDEsIDIxMywgMjQ4LCAyMDYsIDExOSwgMSwgMjQ5LCAxMzQsIDIwNiwgMTE5LCAKKyAgICAxLCAyMjQsIDIyMCwgMjA2LCAxMTksIDEsIDIyNywgMTAxLCAyMDYsIDExOSwgMSwgMjUxLCAxMjksIDIwNiwgMTE5LCAxLCAKKyAgICAyMDMsIDg4LCAyMDYsIDExOSwgMSwgMjIyLCA2MCwgMjA2LCAxMTksIDEsIDIzNywgMTkzLCAyMDYsIDExOSwgMSwgMjQxLCAKKyAgICA5OCwgMjA2LCAxMTksIDEsIDIwNiwgMTIxLCAyMDYsIDExOSwgMSwgMjI1LCAxNzIsIDIwNiwgMTE5LCAxLCAyMzYsIDg1LCAKKyAgICAyMDYsIDExOSwgMSwgMjM1LCAxMTksIDIwNiwgMTE5LCAxLCAyMTEsIDE4NSwgMjA2LCAxMTksIDEsIDI0MSwgMjM2LCAyMDYsIAorICAgIDExOSwgMSwgMTk5LCA5NSwgMjA2LCAxMTksIDEsIDIwNiwgMjE2LCAyMDYsIDExOSwgMSwgMjAwLCAxMDksIDIwNiwgMTE5LCAKKyAgICAxLCAyMTYsIDg2LCAyMDYsIDExOSwgMSwgMjI3LCAyMzIsIDIwNiwgMTE5LCAxLCAyNDcsIDExLCAyMDYsIDExOSwgMSwgCisgICAgMjA0LCAyNTIsIDIwNiwgMTE5LCAxLCAyMzQsIDgzLCAyMDYsIDExOSwgMSwgMjI2LCAyMDYsIDIwNiwgMTE5LCAxLCAyMDYsIAorICAgIDEyMCwgMjA2LCAxMTksIDEsIDE5OSwgMTEyLCAyMDYsIDExOSwgMSwgMjEwLCA2MCwgMjA2LCAxMTksIDEsIDIxMiwgNjAsIAorICAgIDIwNiwgMTE5LCAxLCAyNDIsIDU2LCAyMDYsIDExOSwgMSwgMTM4LCAyMDYsIDExOSwgMSwgMTk5LCAxNCwgMjA2LCAxMTksIAorICAgIDEsIDI1MSwgMTY4LCAyMDYsIDExOSwgMSwgMjM1LCAxOTMsIDIwNiwgMTE5LCAxLCAyMTQsIDE1NiwgMjA2LCAxMTksIDEsIAorICAgIDIwMSwgMTEyLCAyMDYsIDExOSwgMjUyLCA1LCAyMDYsIDExOSwgMjUyLCAxMDMsIDIwNiwgMTE5LCAyMzIsIDIzNCwgMjA2LCAKKyAgICAxMTksIDIzOCwgMjU0LCAyMDYsIDExOSwgMjA0LCAzOSwgMjA2LCAxMTksIDIxNywgNjIsIDIwNiwgMTE5LCAyMzksIDgsIAorICAgIDIwNiwgMTE5LCAyMzgsIDI0LCAyMDYsIDExOSwgMjE3LCAxMzcsIDIwNiwgMTE5LCAyMTcsIDE0NSwgMjA2LCAxMTksIDIwNywgCisgICAgMjM2LCAyMDYsIDExOSwgMSwgMjIwLCAxNTcsIDIxOSwgNDksIDE3LCAxOTksIDgxLCAyMTksIDQ5LCAxNywgMTAyLCAyMTksIAorICAgIDQ5LCAxNywgMTA1LCAyMTksIDQ5LCAxNywgMTQ3LCAyMTksIDQ5LCAxNywgMTQ5LCAyMTksIDQ5LCAxNywgMTY0LCAyMTksIAorICAgIDQ5LCAxNywgMTg3LCAyMTksIDQ5LCAxNywgMjEwLCAxMzUsIDIxOSwgNDksIDE3LCAxOTIsIDIxOSwgNDksIDE3LCAyMTksIAorICAgIDExMywgMjE5LCA0OSwgMSwgNjIsIDIxOSwgNDksIDEsIDIzOCwgMjU1LCAyMTksIDQ5LCAxLCA3MCwgMjE5LCA0OSwgMSwgCisgICAgNzIsIDIxOSwgNDksIDEsIDY2LCAyMTksIDQ5LCAxLCAyMTcsIDYzLCAyMTksIDQ5LCAxLCA3NCwgMjE5LCA0OSwgMSwgMjQyLCAKKyAgICA0NCwgMjE5LCA0OSwgMSwgMjIwLCAyMTQsIDIxOSwgNDksIDEsIDI0OSwgMTM2LCAyMTksIDQ5LCAxLCAxNzIsIDIxOSwgNDksIAorICAgIDEsIDIwNywgMzYsIDIxOSwgNDksIDEsIDIyNywgMjQ4LCAyMTksIDQ5LCAxLCAyNDcsIDM3LCAyMTksIDQ5LCAxLCAyNDIsIAorICAgIDU4LCAyMTksIDQ5LCAxLCAyMTMsIDI1MiwgMjE5LCA0OSwgMSwgMjEyLCAyMTUsIDIxOSwgNDksIDEsIDIxMiwgNjQsIDIxOSwgCisgICAgNDksIDEsIDIzNiwgMzIsIDIxOSwgNDksIDEsIDIzNywgMTk1LCAyMTksIDQ5LCAxLCAxNjEsIDIxOSwgNDksIDEsIDE5NCwgCisgICAgMjE5LCA0OSwgMSwgMjIwLCAxNjIsIDIwMCwgMjUyLCAyMTksIDQ5LCAxLCAxNzgsIDIxOSwgNDksIDEsIDIxOCwgNjAsIAorICAgIDIxOSwgNDksIDEsIDE4OCwgMjE5LCA0OSwgMSwgMTQ0LCAyMTksIDQ5LCAxLCAyMDEsIDExNCwgMjE5LCA0OSwgMSwgMTgzLCAKKyAgICAyMTksIDQ5LCAxLCAyMTgsIDYxLCAyMDAsIDI1MiwgMjE5LCA0OSwgMSwgMjI3LCAxNTgsIDIyNywgMjQ4LCAyMTksIDQ5LCAKKyAgICAxLCAyMjcsIDE1OCwgMjQ3LCAzNywgMjE5LCA0OSwgMSwgMjI3LCAxNTgsIDIxMywgMjUyLCAyMTksIDQ5LCAzOCwgMjA5LCAKKyAgICAyNTAsIDEyMiwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAyMDksIDI1MCwgMTI4LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIAorICAgIDIwOSwgMjUwLCAyMTMsIDE5LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDE2OCwgMjQxLCAxMTgsIDIwNSwgMTc0LCAyMTksIAorICAgIDQ5LCAzOCwgMTY4LCAxMjIsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMTY4LCAxMjgsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgCisgICAgMTY4LCAyMTMsIDE5LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDIyMCwgMTIyLCA4MSwgMjE5LCA0OSwgMzgsIDUzLCA3MywgCisgICAgNTYsIDIxOSwgNDksIDEyMiwgMTUwLCAyNTEsIDEzLCAyMTksIDQ5LCAxMjgsIDE1MCwgMjUxLCAxMywgMjE5LCA0OSwgMTYsIAorICAgIDIxNywgNjQsIDI0MSwgMTMyLCAyMTksIDQ5LCAxNiwgMjM2LCAzMSwgMjE5LCA0OSwgMjQ2LCA3MCwgMjE5LCA0OSwgMjM4LCAKKyAgICA0MywgODEsIDIxOSwgNDksIDIyNSwgMTQ3LCAyMTIsIDIyLCAxLCAyNTEsIDE0OSwgMjEyLCAyMiwgMSwgMjQ4LCAxNTIsIAorICAgIDIxMiwgMjIsIDEsIDIzNiwgNjUsIDIxMiwgMjIsIDEsIDI0MiwgMjgsIDIxMiwgMjIsIDEsIDIyOCwgMywgMjEyLCAyMiwgMSwgCisgICAgMjQ5LCAxMzQsIDIxMiwgMjIsIDEsIDE5OSwgODQsIDIxMiwgMjIsIDEsIDIyOCwgMTIsIDIxMiwgMjIsIDEsIDIwNSwgMjEzLCAKKyAgICAyMTIsIDIyLCAxLCAxOTksIDE4MCwgMjEyLCAyMiwgMSwgMjI3LCAxMDIsIDIxMiwgMjIsIDEsIDIyNSwgMTY5LCAyMTIsIAorICAgIDIyLCAxLCAyMjEsIDE2NiwgMjEyLCAyMiwgMSwgMjE4LCA4OSwgMjEyLCAyMiwgMSwgMjA5LCAxNDAsIDIxMiwgMjIsIDEsIAorICAgIDIyOCwgMTE3LCAyMTIsIDIyLCAxLCAyMzcsIDExMiwgMjEyLCAyMiwgMSwgMjA1LCAzMCwgMjEyLCAyMiwgMSwgMjE0LCA3NiwgCisgICAgMjEyLCAyMiwgMSwgMjEzLCAyMCwgMjEyLCAyMiwgMSwgMjEwLCA4OSwgMjEyLCAyMiwgMSwgMjA3LCAzMSwgMjEyLCAyMiwgCisgICAgMTM0LCAyMjgsIDExNywgMjEyLCAyMiwgMTM0LCAyMjgsIDExNiwgMjEyLCAyMiwgMTM0LCAyMTcsIDEzMywgMjEyLCAyMiwgCisgICAgMTM0LCAyNDIsIDQyLCAyMTIsIDIyLCA2NywgMSwgMjM4LCAxMjksIDE5OSwgMTgwLCAyMTIsIDIyLCAxMzQsIDIzOCwgMTI5LCAKKyAgICAxOTksIDE4MCwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgNzIsIDIxMiwgMjIsIDIyLCAyLCA3MiwgMjEyLCAyMiwgMjIsIDIsIAorICAgIDIxNiwgMjQwLCAyNTIsIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgMjUyLCAxMzgsIDIxMiwgMjIsIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDIxNiwgMjQwLCA2MiwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgNjIsIDIxMiwgMjIsIDIyLCAKKyAgICAyLCA2MiwgMjEyLCAyMiwgNjcsIDEsIDIwOSwgMjUwLCA2MiwgMjEyLCAyMiwgMjIsIDIsIDIwOSwgMjUwLCA2MiwgMjEyLCAKKyAgICAyMiwgMjIsIDIsIDE2OCwgNjYsIDIxMiwgMjIsIDIyLCAyLCA2NiwgMjEyLCAyMiwgNjcsIDEsIDcwLCAyMTIsIDIyLCAyMiwgCisgICAgMiwgMTY4LCA3MCwgMjEyLCAyMiwgMjIsIDIsIDcwLCAyMTIsIDIyLCAyMiwgMiwgNzQsIDIxMiwgMjIsIDIyLCAyLCAyMDcsIAorICAgIDIzNiwgMjEyLCAyMiwgMTM0LCAyMjAsIDE3LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjIwLCAxNywgMjEyLCAyMiwgMjE0LCAKKyAgICAyMTIsIDI1MSwgMTk1LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUxLCA3NSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI0OSwgNDgsIAorICAgIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTAsIDE0OSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIxMCwgOSwgMjEyLCAyMiwgMjUyLCAzLCAKKyAgICA4MSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIyMiwgNTAsIDIxNCwgMTEyLCAyMTIsIDIyLCAyMTQsIDIxMiwgMTk5LCAyMiwgCisgICAgMjEyLCAyMiwgMjE0LCAyMTIsIDIxNCwgMTEyLCAyMTIsIDIyLCAyMTQsIDIxMiwgMTk5LCAxMTEsIDIxMiwgMjIsIDIxNCwgCisgICAgMjEyLCAyMDQsIDE4MSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MCwgMjE5LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjA5LCAyNCwgCisgICAgMjIyLCAxMzMsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTEsIDU5LCAyMjIsIDE3NiwgMSwgMjM0LCAyMTAsIDIyMiwgMTc2LCAxLCAKKyAgICAyNTIsIDg5LCAyMjIsIDE3NiwgMSwgMjUxLCAxOTMsIDIyMiwgMTc2LCAxLCAyNTEsIDIzNSwgMjIyLCAxNzYsIDEsIDI1MSwgCisgICAgMTg1LCAyMjIsIDE3NiwgMSwgMjAzLCAxODgsIDIyMiwgMTc2LCAxLCAyNTAsIDEwNSwgMjIyLCAxNzYsIDEsIDIyOCwgMTIsIAorICAgIDIyMiwgMTc2LCAxLCAyNTAsIDE0NiwgMjIyLCAxNzYsIDEsIDI1MSwgMTU0LCAyMjIsIDE3NiwgMSwgMjUxLCAxNTksIDIyMiwgCisgICAgMTc2LCAxLCAyNTEsIDE1MSwgMjIyLCAxNzYsIDEsIDI1MSwgMTAxLCAyMjIsIDE3NiwgMSwgMjUxLCA4NSwgMjIyLCAxNzYsIAorICAgIDEsIDI1MCwgMTg4LCAyMjIsIDE3NiwgMSwgMjI4LCAxMTcsIDIyMiwgMTc2LCAxLCAyNTEsIDI4LCAyMjIsIDE3NiwgMSwgCisgICAgMjUwLCAxNTcsIDIyMiwgMTc2LCAxLCAyNTEsIDEsIDIyMiwgMTc2LCAxLCAyNTAsIDI1MywgMjIyLCAxNzYsIDEsIDI1MCwgCisgICAgMTgxLCAyMjIsIDE3NiwgMSwgMjUwLCAxNTUsIDIyMiwgMTc2LCAxLCAyMzksIDExMiwgMjIyLCAxNzYsIDEsIDIyNywgOTQsIAorICAgIDIyMiwgMTc2LCAxLCAyNTEsIDE3MSwgMjIyLCAxNzYsIDI1MSwgMTk5LCA4MSwgMjIyLCAxNzYsIDIwMiwgMTkxLCA4MSwgCisgICAgMjIyLCAxNzYsIDIzNiwgMywgODEsIDIyMiwgMTc2LCAyMTQsIDIxMSwgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDIwMywgMTY5LCAKKyAgICA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTkzLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwNywgMTAsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjM3LCAxMzUsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDEyNiwgMTkwLCAKKyAgICA1NiwgOSwgMSwgMjE0LCAxNTMsIDMsIDczLCA1NywgOSwgMSwgMjI1LCA5MiwgMywgNTMsIDE0OCwgOSwgMSwgODQsIDMsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgOTAsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDIzNCwgMjA0LCA1NiwgOSwgMSwgCisgICAgOTAsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDIyNCwgNzQsIDksIDEsIAorICAgIDIwMSwgNzMsIDMsIDczLCAyMDEsIDQsIDksIDEsIDIxMiwgMjQ1LCAyMDAsIDQ2LCA5LCAxLCAxMjgsIDI1MSwgMTQyLCA5LCAKKyAgICAxLCAyNDIsIDMwLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxMiwgNTcsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjM2LCAKKyAgICA3NywgMywgMjI4LCA1MCwgOTcsIDksIDEsIDIwOCwgNjgsIDIwMSwgNzIsIDksIDEsIDE5OSwgMTA2LCAzLCAyMjgsIDUwLCAKKyAgICAyMDMsIDE2OSwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIyNywgODcsIDMsIDczLCA1NywgCisgICAgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDg0LCA1NiwgOSwgMSwgMjE2LCA1NSwgMywgNCwgODQsIDU2LCA5LCAxLCAyMDYsIAorICAgIDE4NCwgMywgNCwgMjA2LCAxODQsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgMjE4LCAyMjgsIDU2LCA5LCAxLCA5MCwgMywgCisgICAgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNCwgMjE4LCAyMjgsIDU2LCA5LCAxLCAyNTEsIDE5NiwgMjM3LCAxMzQsIDksIDEsIAorICAgIDI1MSwgMTk2LCAyMTQsIDE1MiwgOSwgMSwgMjUxLCAxOTYsIDIxOCwgMjI3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyNTAsIAorICAgIDI1MCwgOSwgNCwgMTIyLCAyMTIsIDU2LCA5LCA0LCAxMjIsIDI1MSwgMTcxLCA5LCA0LCAxMjIsIDIxNCwgMTUyLCA5LCA0LCAKKyAgICAxMjIsIDIxOCwgMjI4LCAzLCAyMjcsIDM2LCA5LCA0LCAxMjgsIDIxOCwgMjI4LCAzLCAyMjcsIDM2LCA5LCA0LCAxMjIsIAorICAgIDIwMCwgMjM4LCAyNTAsIDE1NCwgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjUwLCAxODcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIAorICAgIDI1MSwgODQsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDIxMiwgMzcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDIxNCwgMTE2LCA5LCAKKyAgICA0LCAxMjIsIDIwMCwgMjM4LCAyMDEsIDk1LCA5LCA0LCAxMjIsIDIzNiwgMjUzLCAyMjIsIDE0NSwgOSwgNCwgMTIyLCAyLCAKKyAgICAyMTIsIDUyLCA5LCAyNDAsIDI1MSwgMjM4LCAxNzEsIDc2LCAyNTAsIDExMSwgOSwgMjA0LCAxODUsIDI0MiwgMTgsIDU3LCAKKyAgICA5LCAyNDIsIDE5NiwgMjM3LCAxNTgsIDksIDI0MiwgMTk2LCAyNDIsIDE3LCA5LCAyNDIsIDE5NiwgMjI3LCAzNiwgOSwgCisgICAgMjQyLCAxOTYsIDIzNywgMTU2LCA5LCAyNDIsIDE5NiwgMjQyLCAxNSwgOSwgMjQyLCAxOTYsIDIyNywgMzQsIDksIDE1MCwgCisgICAgMTEyLCA3MywgNTYsIDksIDE1MCwgMTIwLCAxOTAsIDU2LCA5LCAxNTAsIDIyNCwgNzUsIDU2LCA5LCAxNTAsIDExMiwgNzMsIAorICAgIDU3LCA5LCAxNTAsIDEyMCwgMTkwLCA1NywgOSwgMTUwLCAyMjQsIDc1LCA1NywgOSwgMTc2LCAyMzcsIDE1NiwgOSwgMTc2LCAKKyAgICAyNDIsIDE1LCA5LCAxNzYsIDIyNywgMzQsIDksIDQsIDEyMiwgMjAxLCA3MiwgOSwgMjM3LCAxNTksIDMsIDIxMywgMjYsIDksIAorICAgIDIzNywgMTU5LCAzLCA3MywgNTYsIDksIDIyNywgMzcsIDMsIDczLCA1NywgOSwgNDksIDI1MCwgMjAzLCA1NiwgOSwgNTEsIAorICAgIDI1MCwgMjAzLCA1NiwgOSwgNDksIDI1MCwgMjAzLCA1NywgOSwgNTEsIDI1MCwgMjAzLCA1NywgOSwgNTMsIDUxLCAyNTAsIAorICAgIDIwMywgNTYsIDksIDUzLCA1MSwgMjUwLCAyMDMsIDg4LCAzLCAyNDAsIDE4MiwgOSwgNTEsIDI1MCwgMjAzLCA4OCwgMywgCisgICAgMjQwLCAxODIsIDksIDI0MiwgMTgsIDMsIDI0MCwgMTgyLCA5LCAxMzQsIDIwOSwgMTczLCAyMTgsIDIyOCwgMjM1LCAxNjUsIAorICAgIDk0LCAyLCAyMjgsIDUwLCAyNDcsIDE0OSwgOTQsIDIsIDI0NywgMTQ5LCA5NCwgMiwgMjUxLCAzMywgOTQsIDIsIDIwMiwgCisgICAgMjAzLCA5NCwgMSwgMjA5LCAyNTAsIDYyLCA5NCwgMSwgNjIsIDk0LCAxLCAyNTIsIDEzOCwgOTQsIDEsIDcwLCA5NCwgMSwgCisgICAgMjI4LCAxNTEsIDk0LCAxLCA2NiwgOTQsIDEsIDIwMywgMTgyLCA5NCwgMSwgMTA5LCAxNDYsIDk0LCAxLCAxMDksIDE1NiwgCisgICAgOTQsIDEsIDI0NywgMTUyLCA3MiwgOTQsIDEsIDIwOSwgMjUwLCA3MiwgOTQsIDEsIDcyLCA5NCwgMSwgMjUxLCAxNzYsIDk0LCAKKyAgICAxLCAyNDcsIDE1MiwgNzQsIDk0LCAxLCAyMDksIDI1MCwgNzQsIDk0LCAxLCA3NCwgOTQsIDEsIDI1MCwgMTM5LCA5NCwgMSwgCisgICAgMTYxLCA5NCwgMSwgMjI2LCAyMDcsIDk0LCAxLCAyMzYsIDg5LCA5NCwgMSwgMjM1LCAxOTksIDk0LCAxLCAyMTksIDI1MywgCisgICAgOTQsIDEsIDI0NywgMTkwLCA5NCwgMSwgMjQ3LCAzNywgOTQsIDEsIDIyNywgMjQ4LCA5NCwgMSwgMjI3LCAyMTUsIDk0LCAxLCAKKyAgICAyMTgsIDYwLCA5NCwgMSwgMjA0LCAyNTMsIDk0LCAxLCAyMDQsIDI0MSwgOTQsIDEsIDI0MSwgMjIwLCA5NCwgMSwgMjQxLCAKKyAgICAyMDQsIDk0LCAxLCAyMTksIDIxLCA5NCwgMSwgMjA3LCAzNiwgOTQsIDEsIDIwNiwgMTIyLCA5NCwgMSwgMjQyLCA1OCwgOTQsIAorICAgIDEsIDI0MSwgMTAwLCA5NCwgMSwgMTg4LCA5NCwgMSwgMjE5LCAzLCA5NCwgMSwgMTcyLCA5NCwgMSwgMjE1LCAyNDUsIDk0LCAKKyAgICAxLCAyNDksIDEzNiwgOTQsIDEsIDI0OCwgMjAwLCA5NCwgMSwgMTc4LCA5NCwgMSwgMTgzLCA5NCwgMSwgMjEzLCAyNTIsIAorICAgIDk0LCAxLCAyMTIsIDIxNSwgOTQsIDEsIDE5NCwgOTQsIDEsIDIyNCwgMTM4LCA5NCwgMSwgMjI0LCAxMjksIDk0LCAxLCAKKyAgICAyMDMsIDkwLCA5NCwgMSwgMjEwLCAxMTQsIDk0LCAxLCAyMDgsIDE3OSwgOTQsIDEsIDIxMiwgNjQsIDk0LCAxLCAxNDQsIAorICAgIDk0LCAyMiwgMiwgMjE3LCAxMjEsIDk0LCAyMiwgMiwgMjE3LCA2MSwgOTQsIDIsIDIxOCwgMTAwLCA5NCwgMiwgMjUwLCAKKyAgICAxMjIsIDk0LCAyMiwgMiwgMjUyLCAxMzgsIDk0LCAyMiwgMiwgNzAsIDk0LCAyMiwgMiwgMjI4LCAxNTEsIDk0LCAyMiwgMiwgCisgICAgNjYsIDk0LCAyMiwgMiwgMjAzLCAxODIsIDk0LCAyMiwgMiwgMTA5LCAxNDYsIDk0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgCisgICAgOTQsIDIyLCAyLCAyNDcsIDE1MiwgNzIsIDk0LCAyMiwgMiwgMjA5LCAyNTAsIDcyLCA5NCwgMjIsIDIsIDcyLCA5NCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCA5NCwgMjIsIDIsIDI0NywgMTUyLCA3NCwgOTQsIDIyLCAyLCAyMDksIDI1MCwgNzQsIDk0LCAyMiwgMiwgCisgICAgNzQsIDk0LCAyMiwgMiwgMjUwLCAxMzksIDk0LCAyLCAyMDIsIDIwOCwgOTQsIDIyLCAyLCAyMTUsIDYsIDcyLCA5NCwgMjIsIAorICAgIDIsIDI1MCwgMTE3LCA5NCwgMjE3LCA4NiwgOTQsIDIwOCwgNTcsIDIsIDIwNCwgMzMsIDk0LCAyMDgsIDU3LCAyLCAyNTEsIAorICAgIDM1LCA5NCwgMjM1LCA3NCwgMjUxLCAyNTEsIDk0LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIAorICAgIDE2OCwgNzIsIDk0LCAyMiwgMiwgMjA0LCAzMSwgOTQsIDIyLCAyLCAyMDMsIDE4MSwgOTQsIDEsIDIxNCwgMTU5LCA5NCwgMSwgCisgICAgMjI2LCAxODgsIDk0LCAxLCAyMzUsIDE3NCwgOTQsIDEsIDE5OSwgMTE0LCA5NCwgMSwgMjQxLCAyMDksIDk0LCAxLCAyMTMsIAorICAgIDkzLCA5NCwgMSwgMjM3LCAxOTUsIDk0LCAxLCAxOTksIDE2NiwgOTQsIDEsIDEwOSwgMjEyLCAyMTYsIDk0LCAxLCAxMDksIAorICAgIDIyNCwgMTM5LCA5NCwgMjIsIDIsIDEwOSwgMTU2LCA5NCwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDk0LCAyNDIsIDEwLCA5NCwgCisgICAgNTMsIDI0MiwgMTAsIDk0LCAxNywgMTk5LCA4MSwgOTQsIDE3LCAxMDIsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDE0NywgOTQsIAorICAgIDE3LCAxNDksIDk0LCAxNywgMTY0LCA5NCwgMTcsIDE4NywgOTQsIDE3LCAyMTAsIDEzNSwgOTQsIDE3LCAxOTIsIDk0LCAxNywgCisgICAgMjE5LCAxMTMsIDk0LCAyNTIsIDMsIDU0LCA5NCwgMiwgMTIyLCAyMDgsIDI0MywgMjQwLCAxODIsIDk0LCAxLCAyNDcsIAorICAgIDE1MiwgNjIsIDk0LCAxLCAyMTcsIDEyMSwgOTQsIDEsIDIxNywgNjEsIDk0LCAxLCAyNTAsIDExNywgOTQsIDEsIDIwNCwgCisgICAgMzEsIDk0LCAxLCAyMDMsIDE4MSwgOTQsIDEsIDIyMiwgMTM4LCAyNDEsIDIyMCwgOTQsIDEsIDE5OSwgNzcsIDk0LCAxLCAKKyAgICA4MCwgMTgzLCA5NCwgMSwgMjM1LCAyMzUsIDk0LCAxLCAyMjcsIDE5NCwgOTQsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA5NCwgCisgICAgMSwgMjQxLCAyMTAsIDk0LCAxLCAyNDksIDQ0LCAxODUsIDI1MSwgNjIsIDE4NSwgMiwgMjQ3LCAxNDksIDE4NSwgMiwgMjUxLCAKKyAgICAzMywgMTg1LCAyLCAyMDIsIDIwMywgMTg1LCAxLCA2MiwgMTg1LCAxLCAyNTIsIDEzOCwgMTg1LCAxLCA3MCwgMTg1LCAxLCAKKyAgICAyMjgsIDE1MSwgMTg1LCAxLCA2NiwgMTg1LCAxLCAyMDMsIDE4MiwgMTg1LCAxLCAxMDksIDE0NiwgMTg1LCAxLCAxMDksIAorICAgIDE1NiwgMTg1LCAxLCA3MiwgMTg1LCAxLCAyNTEsIDE3NiwgMTg1LCAxLCA3NCwgMTg1LCAxLCAyNTAsIDEzOSwgMTg1LCAxLCAKKyAgICAxNjEsIDE4NSwgMSwgMjI2LCAyMDcsIDE4NSwgMSwgMjM2LCA4OSwgMTg1LCAxLCAyMzUsIDE5OSwgMTg1LCAxLCAyMTksIAorICAgIDI1MywgMTg1LCAxLCAyNDcsIDE5MCwgMTg1LCAxLCAyNDcsIDM3LCAxODUsIDEsIDIyNywgMjQ4LCAxODUsIDEsIDIyNywgCisgICAgMjE1LCAxODUsIDEsIDIxOCwgNjAsIDE4NSwgMSwgMjA0LCAyNTMsIDE4NSwgMSwgMjA0LCAyNDEsIDE4NSwgMSwgMjQxLCAKKyAgICAyMjAsIDE4NSwgMSwgMjQxLCAyMDQsIDE4NSwgMSwgMjE5LCAyMSwgMTg1LCAxLCAyMDcsIDM2LCAxODUsIDEsIDIwNiwgCisgICAgMTIyLCAxODUsIDEsIDI0MiwgNTgsIDE4NSwgMSwgMjQxLCAxMDAsIDE4NSwgMSwgMTg4LCAxODUsIDEsIDE3MiwgMTg1LCAxLCAKKyAgICAyMTUsIDI0NSwgMTg1LCAxLCAyNDksIDEzNiwgMTg1LCAxLCAyNDgsIDIwMCwgMTg1LCAxLCAxNzgsIDE4NSwgMSwgMTgzLCAKKyAgICAxODUsIDEsIDIxMywgMjUyLCAxODUsIDEsIDE5NCwgMTg1LCAxLCAyMTAsIDExNCwgMTg1LCAxLCAyMDgsIDE3OSwgMTg1LCAKKyAgICAxLCAyMTIsIDY0LCAxODUsIDEsIDE0NCwgMTg1LCAyLCAyMTgsIDEwMCwgMTg1LCAyLCAyNTAsIDEyMiwgMTg1LCAyMiwgMiwgCisgICAgMjUyLCAxMzgsIDE4NSwgMjIsIDIsIDcwLCAxODUsIDIyLCAyLCAyMjgsIDE1MSwgMTg1LCAyMiwgMiwgNjYsIDE4NSwgMjIsIAorICAgIDIsIDIwMywgMTgyLCAxODUsIDIyLCAyLCAxMDksIDE0NiwgMTg1LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTg1LCAyMiwgMiwgCisgICAgNzIsIDE4NSwgMjIsIDIsIDI1MSwgMTc2LCAxODUsIDIyLCAyLCA3NCwgMTg1LCAyMiwgMiwgMjUwLCAxMzksIDE4NSwgMiwgCisgICAgMjAyLCAyMDgsIDE4NSwgMSwgMjI2LCAxOTgsIDIwNywgMzYsIDE4NSwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDE4NSwgMSwgCisgICAgMjEyLCAyMTUsIDE4NSwgMSwgMjEzLCA5MywgMTg1LCAxLCAxOTksIDE2NiwgMTg1LCAxLCAxMDksIDIxMiwgMjE2LCAxODUsIAorICAgIDEsIDEwOSwgMjI0LCAxMzksIDE4NSwgMjIsIDIsIDEwOSwgMTU2LCAxODUsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxODUsIAorICAgIDE3LCAxOTksIDgxLCAxODUsIDE3LCAxMDIsIDE4NSwgMTcsIDEwNSwgMTg1LCAxNywgMTQ3LCAxODUsIDE3LCAxNDksIDE4NSwgCisgICAgMTcsIDE2NCwgMTg1LCAxNywgMTg3LCAxODUsIDE3LCAyMTAsIDEzNSwgMTg1LCAxNywgMTkyLCAxODUsIDE3LCAyMTksIAorICAgIDExMywgMTg1LCAxLCAyMTMsIDI1MywgMywgMTAxLCAyNDEsIDcwLCAxODUsIDEsIDIxMywgMjUzLCAzLCAyMjQsIDU0LCAKKyAgICAyNDEsIDcwLCAxODUsIDIxMiwgMTQ5LCA4MSwgMTg1LCAyMTIsIDE0OSwgNTQsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIAorICAgIDEwMiwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTA1LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxNDcsIDE4NSwgMjQyLCAKKyAgICAxOTUsIDIxOCwgOTIsIDE0OSwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTEyLCAyMjQsIDI0MiwgMjA2LCAxMTIsIDIwNiwgCisgICAgMTA3LCAyNDEsIDEzMCwgMTg1LCAyNDIsIDE5NSwgMjQxLCAxMzEsIDIwOSwgMTAwLCAxODUsIDIyOCwgMTMsIDE4NSwgMjM2LCAKKyAgICA1NiwgODEsIDIzNSwgMTgsIDIsIDI1MSwgMjM0LCAyNDgsIDE2OCwgMjM1LCAxOCwgMiwgMjQ4LCAxNjgsIDIzNSwgMTgsIDIsIAorICAgIDIwMiwgMjAzLCAyMzUsIDE4LCAxLCA2MiwgMjM1LCAxOCwgMSwgMjUyLCAxMzgsIDIzNSwgMTgsIDEsIDcwLCAyMzUsIDE4LCAKKyAgICAxLCAyMjgsIDE1MSwgMjM1LCAxOCwgMSwgNjYsIDIzNSwgMTgsIDEsIDIwMywgMTgyLCAyMzUsIDE4LCAxLCAyMzgsIDI1NSwgCisgICAgMjM1LCAxOCwgMSwgMjUxLCAxNzYsIDIzNSwgMTgsIDEsIDIxNywgNjMsIDIzNSwgMTgsIDEsIDI1MCwgMTM5LCAyMzUsIDE4LCAKKyAgICAxLCAxNjEsIDIzNSwgMTgsIDEsIDIyNiwgMjA3LCAyMzUsIDE4LCAxLCAyMzYsIDg5LCAyMzUsIDE4LCAxLCAyMzUsIDE5OSwgCisgICAgMjM1LCAxOCwgMSwgMjE5LCAyNTMsIDIzNSwgMTgsIDEsIDI0NywgMTkwLCAyMzUsIDE4LCAxLCAyNDcsIDM3LCAyMzUsIDE4LCAKKyAgICAxLCAyMjcsIDI0OCwgMjM1LCAxOCwgMSwgMjI3LCAyMTUsIDIzNSwgMTgsIDEsIDIxOCwgNjAsIDIzNSwgMTgsIDEsIDIwNCwgCisgICAgMjUzLCAyMzUsIDE4LCAxLCAyMDQsIDI0MSwgMjM1LCAxOCwgMSwgMjQxLCAyMjAsIDIzNSwgMTgsIDEsIDI0MSwgMjA0LCAKKyAgICAyMzUsIDE4LCAxLCAyMTksIDIxLCAyMzUsIDE4LCAxLCAyMDcsIDM2LCAyMzUsIDE4LCAxLCAyMDYsIDEyMiwgMjM1LCAxOCwgCisgICAgMSwgMjQyLCA1OCwgMjM1LCAxOCwgMSwgMjQxLCAxMDAsIDIzNSwgMTgsIDEsIDE4OCwgMjM1LCAxOCwgMSwgMTcyLCAyMzUsIAorICAgIDE4LCAxLCAyMTUsIDI0NSwgMjM1LCAxOCwgMSwgMjQ5LCAxMzYsIDIzNSwgMTgsIDEsIDI0OCwgMjAwLCAyMzUsIDE4LCAxLCAKKyAgICAxNzgsIDIzNSwgMTgsIDEsIDE4MywgMjM1LCAxOCwgMSwgMjEzLCAyNTIsIDIzNSwgMTgsIDEsIDE5NCwgMjM1LCAxOCwgMSwgCisgICAgMjI0LCAxMzgsIDIzNSwgMTgsIDEsIDIwMywgOTAsIDIzNSwgMTgsIDEsIDIxMCwgMTE0LCAyMzUsIDE4LCAxLCAyMTIsIDY0LCAKKyAgICAyMzUsIDE4LCAxLCAxNDQsIDIzNSwgMTgsIDIsIDIxOCwgMTAwLCAyMzUsIDE4LCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgMTgsIAorICAgIDIyLCAyLCA3MCwgMjM1LCAxOCwgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDE4LCAyMiwgMiwgNjYsIDIzNSwgMTgsIDIyLCAyLCAKKyAgICAyMDMsIDE4MiwgMjM1LCAxOCwgMjIsIDIsIDIzOCwgMjU1LCAyMzUsIDE4LCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgMTgsIAorICAgIDIyLCAyLCAyMTcsIDYzLCAyMzUsIDE4LCAyMiwgMiwgMjUwLCAxMzksIDIzNSwgMTgsIDIsIDIwMiwgMjA4LCAyMzUsIDE4LCAKKyAgICAyLCAyMDQsIDM1LCAyMzUsIDE4LCAxLCAyMjYsIDE4OCwgMjM1LCAxOCwgMSwgMjM1LCAxNzQsIDIzNSwgMTgsIDEsIDE5OSwgCisgICAgMTE0LCAyMzUsIDE4LCAxLCAyMTIsIDIxNSwgMjM1LCAxOCwgMSwgMjM3LCAxOTUsIDIzNSwgMTgsIDE3LCAxOTksIDgxLCAKKyAgICAyMzUsIDE4LCAxNywgMTAyLCAyMzUsIDE4LCAxNywgMTA1LCAyMzUsIDE4LCAxNywgMTQ3LCAyMzUsIDE4LCAxNywgMTQ5LCAKKyAgICAyMzUsIDE4LCAxNywgMTY0LCAyMzUsIDE4LCAxNywgMTg3LCAyMzUsIDE4LCAxNywgMjEwLCAxMzUsIDIzNSwgMTgsIDE3LCAKKyAgICAxOTIsIDIzNSwgMTgsIDE3LCAyMTksIDExMywgMjM1LCAxOCwgMjA1LCAyMjEsIDIzNSwgMTgsIDI1MSwgMjMzLCAyMzUsIAorICAgIDE4LCAyMjgsIDMzLCAyMzUsIDE4LCAyMDMsIDIxMCwgMjM1LCAxOCwgMjM4LCAyMTcsIDIxNywgNjgsIDIzNSwgMTgsIDIsIAorICAgIDIwMCwgODQsIDIzNSwgMzMsIDIsIDI0NywgMTQ5LCAyMzUsIDMzLCAyLCAyNTEsIDMzLCAyMzUsIDMzLCAyLCAyMDIsIDIwMywgCisgICAgMjM1LCAzMywgMSwgNjIsIDIzNSwgMzMsIDEsIDI1MiwgMTM4LCAyMzUsIDMzLCAxLCA3MCwgMjM1LCAzMywgMSwgMjI4LCAKKyAgICAxNTEsIDIzNSwgMzMsIDEsIDY2LCAyMzUsIDMzLCAxLCAyMDMsIDE4MiwgMjM1LCAzMywgMSwgMTA5LCAxNDYsIDIzNSwgMzMsIAorICAgIDEsIDEwOSwgMTU2LCAyMzUsIDMzLCAyMiwgMjQ3LCAxNTIsIDcyLCAyMzUsIDMzLCAxLCA3MiwgMjM1LCAzMywgMSwgMjUxLCAKKyAgICAxNzYsIDIzNSwgMzMsIDIyLCAyNDcsIDE1MiwgNzQsIDIzNSwgMzMsIDEsIDc0LCAyMzUsIDMzLCAxLCAyNTAsIDEzOSwgCisgICAgMjM1LCAzMywgMSwgMTYxLCAyMzUsIDMzLCAxLCAyMjYsIDIwNywgMjM1LCAzMywgMSwgMjM2LCA4OSwgMjM1LCAzMywgMSwgCisgICAgMjM1LCAxOTksIDIzNSwgMzMsIDEsIDIxOSwgMjUzLCAyMzUsIDMzLCAxLCAyNDcsIDE5MCwgMjM1LCAzMywgMSwgMjQ3LCAKKyAgICAzNywgMjM1LCAzMywgMSwgMjI3LCAyNDgsIDIzNSwgMzMsIDEsIDIyNywgMjE1LCAyMzUsIDMzLCAxLCAyMTgsIDYwLCAyMzUsIAorICAgIDMzLCAxLCAyMDQsIDI1MywgMjM1LCAzMywgMSwgMjA0LCAyNDEsIDIzNSwgMzMsIDEsIDI0MSwgMjIwLCAyMzUsIDMzLCAxLCAKKyAgICAyNDEsIDIwNCwgMjM1LCAzMywgMSwgMjE5LCAyMSwgMjM1LCAzMywgMSwgMjA3LCAzNiwgMjM1LCAzMywgMSwgMjA2LCAxMjIsIAorICAgIDIzNSwgMzMsIDEsIDI0MiwgNTgsIDIzNSwgMzMsIDEsIDI0MSwgMTAwLCAyMzUsIDMzLCAxLCAxODgsIDIzNSwgMzMsIDEsIAorICAgIDE3MiwgMjM1LCAzMywgMSwgMjE1LCAyNDUsIDIzNSwgMzMsIDEsIDI0OSwgMTM2LCAyMzUsIDMzLCAxLCAyNDgsIDIwMCwgCisgICAgMjM1LCAzMywgMSwgMTc4LCAyMzUsIDMzLCAxLCAxODMsIDIzNSwgMzMsIDEsIDIxMywgMjUyLCAyMzUsIDMzLCAxLCAxOTQsIAorICAgIDIzNSwgMzMsIDEsIDIyNCwgMTM4LCAyMzUsIDMzLCAxLCAyMDMsIDkwLCAyMzUsIDMzLCAxLCAyMTAsIDExNCwgMjM1LCAzMywgCisgICAgMSwgMjA4LCAxNzksIDIzNSwgMzMsIDEsIDIxMiwgNjQsIDIzNSwgMzMsIDEsIDE0NCwgMjM1LCAzMywgMiwgMjE4LCAxMDAsIAorICAgIDIzNSwgMzMsIDIsIDI1MCwgMTIyLCAyMzUsIDMzLCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgMzMsIDIyLCAyLCA3MCwgMjM1LCAKKyAgICAzMywgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDMzLCAyMiwgMiwgNjYsIDIzNSwgMzMsIDIyLCAyLCAyMDMsIDE4MiwgMjM1LCAKKyAgICAzMywgMjIsIDIsIDEwOSwgMTQ2LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjM1LCAzMywgMjIsIDIsIDI0NywgCisgICAgMTUyLCA3MiwgMjM1LCAzMywgMjIsIDIsIDcyLCAyMzUsIDMzLCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgMzMsIDIyLCAyLCAKKyAgICAyNDcsIDE1MiwgNzQsIDIzNSwgMzMsIDIyLCAyLCA3NCwgMjM1LCAzMywgMjIsIDIsIDI1MCwgMTM5LCAyMzUsIDMzLCAyLCAKKyAgICAyMDIsIDIwOCwgMjM1LCAzMywgMjE3LCA4NiwgMjM1LCAzMywgMSwgMTA5LCAyMTIsIDIxNiwgMjM1LCAzMywgMSwgMTA5LCAKKyAgICAyMjQsIDEzOSwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMTU2LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjM1LCAKKyAgICAzMywgMTcsIDE5OSwgODEsIDIzNSwgMzMsIDE3LCAxMDIsIDIzNSwgMzMsIDE3LCAxMDUsIDIzNSwgMzMsIDE3LCAxNDcsIAorICAgIDIzNSwgMzMsIDE3LCAxNDksIDIzNSwgMzMsIDE3LCAxNjQsIDIzNSwgMzMsIDE3LCAxODcsIDIzNSwgMzMsIDE3LCAyMTAsIAorICAgIDEzNSwgMjM1LCAzMywgMTcsIDE5MiwgMjM1LCAzMywgMTcsIDIxOSwgMTEzLCAyMzUsIDMzLCAyNTIsIDMsIDU0LCAyMzUsIAorICAgIDMzLCAyMTIsIDE0OSwgNTQsIDIzNSwgMzMsIDEsIDE5OSwgNzcsIDIxNywgMjQsIDIsIDI0NywgMTQ5LCAyMTcsIDI0LCAyLCAKKyAgICAyNTEsIDMzLCAyMTcsIDI0LCAyLCAyMDIsIDIwMywgMjE3LCAyNCwgMSwgNjIsIDIxNywgMjQsIDEsIDI1MiwgMTM4LCAyMTcsIAorICAgIDI0LCAxLCA3MCwgMjE3LCAyNCwgMSwgMjI4LCAxNTEsIDIxNywgMjQsIDEsIDY2LCAyMTcsIDI0LCAxLCAyMDMsIDE4MiwgCisgICAgMjE3LCAyNCwgMSwgMTA5LCAxNDYsIDIxNywgMjQsIDEsIDEwOSwgMTU2LCAyMTcsIDI0LCAxLCA3MiwgMjE3LCAyNCwgMSwgCisgICAgMjUxLCAxNzYsIDIxNywgMjQsIDEsIDc0LCAyMTcsIDI0LCAxLCAyNTAsIDEzOSwgMjE3LCAyNCwgMSwgMTYxLCAyMTcsIDI0LCAKKyAgICAxLCAyMjYsIDIwNywgMjE3LCAyNCwgMSwgMjM2LCA4OSwgMjE3LCAyNCwgMSwgMjM1LCAxOTksIDIxNywgMjQsIDEsIDIxOSwgCisgICAgMjUzLCAyMTcsIDI0LCAxLCAyNDcsIDE5MCwgMjE3LCAyNCwgMSwgMjQ3LCAzNywgMjE3LCAyNCwgMSwgMjI3LCAyNDgsIAorICAgIDIxNywgMjQsIDEsIDIyNywgMjE1LCAyMTcsIDI0LCAxLCAyMTgsIDYwLCAyMTcsIDI0LCAxLCAyMDQsIDI1MywgMjE3LCAyNCwgCisgICAgMSwgMjA0LCAyNDEsIDIxNywgMjQsIDEsIDI0MSwgMjIwLCAyMTcsIDI0LCAxLCAyNDEsIDIwNCwgMjE3LCAyNCwgMSwgMjE5LCAKKyAgICAyMSwgMjE3LCAyNCwgMSwgMjA3LCAzNiwgMjE3LCAyNCwgMSwgMjA2LCAxMjIsIDIxNywgMjQsIDEsIDI0MiwgNTgsIDIxNywgCisgICAgMjQsIDEsIDI0MSwgMTAwLCAyMTcsIDI0LCAxLCAxODgsIDIxNywgMjQsIDEsIDE3MiwgMjE3LCAyNCwgMSwgMjE1LCAyNDUsIAorICAgIDIxNywgMjQsIDEsIDI0OSwgMTM2LCAyMTcsIDI0LCAxLCAyNDgsIDIwMCwgMjE3LCAyNCwgMSwgMTc4LCAyMTcsIDI0LCAxLCAKKyAgICAxODMsIDIxNywgMjQsIDEsIDIxMywgMjUyLCAyMTcsIDI0LCAxLCAxOTQsIDIxNywgMjQsIDEsIDIyNCwgMTM4LCAyMTcsIAorICAgIDI0LCAxLCAyMDMsIDkwLCAyMTcsIDI0LCAxLCAyMTAsIDExNCwgMjE3LCAyNCwgMSwgMjA4LCAxNzksIDIxNywgMjQsIDEsIAorICAgIDIxMiwgNjQsIDIxNywgMjQsIDEsIDE0NCwgMjE3LCAyNCwgMiwgMjE4LCAxMDAsIDIxNywgMjQsIDIsIDI1MCwgMTIyLCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgMjUyLCAxMzgsIDIxNywgMjQsIDIyLCAyLCA3MCwgMjE3LCAyNCwgMjIsIDIsIDIyOCwgMTUxLCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgNjYsIDIxNywgMjQsIDIyLCAyLCAyMDMsIDE4MiwgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjE3LCAyNCwgMjIsIDIsIDcyLCAyMTcsIDI0LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIxNywgMjQsIDIyLCAyLCA3NCwgMjE3LCAyNCwgMjIsIDIsIDI1MCwgMTM5LCAyMTcsIDI0LCAyLCAyMDIsIDIwOCwgCisgICAgMjE3LCAyNCwgMjUxLCAxNzcsIDIyNSwgMiwgODEsIDIxNywgMjQsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAyMTcsIDI0LCAxLCAKKyAgICAyMTIsIDIxNSwgMjE3LCAyNCwgMSwgMjEzLCA5MywgMjE3LCAyNCwgMSwgMTk5LCAxNjYsIDIxNywgMjQsIDEsIDEwOSwgCisgICAgMjEyLCAyMTYsIDIxNywgMjQsIDEsIDEwOSwgMjI0LCAxMzksIDIxNywgMjQsIDIyLCAyLCAxMDksIDE1NiwgMjE3LCAyNCwgCisgICAgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIxNywgMjQsIDE3LCAxOTksIDgxLCAyMTcsIDI0LCAxNywgMTAyLCAyMTcsIDI0LCAKKyAgICAxNywgMTA1LCAyMTcsIDI0LCAxNywgMTQ3LCAyMTcsIDI0LCAxNywgMTQ5LCAyMTcsIDI0LCAxNywgMTY0LCAyMTcsIDI0LCAKKyAgICAxNywgMTg3LCAyMTcsIDI0LCAxNywgMjEwLCAxMzUsIDIxNywgMjQsIDE3LCAxOTIsIDIxNywgMjQsIDE3LCAyMTksIDExMywgCisgICAgMjE3LCAyNCwgMjI4LCAxMywgMjE3LCAyNCwgMSwgMjAxLCAxMTQsIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIAorICAgIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMTcsIDI0LCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAyMTcsIAorICAgIDI0LCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMjE3LCAyNCwgCisgICAgMjM2LCAyMTksIDEyNiwgMjA5LCA5NywgNDUsIDIsIDI1MSwgMzMsIDQ1LCAyLCAyMDIsIDIwMywgNDUsIDEsIDYyLCA0NSwgCisgICAgMSwgMjUyLCAxMzgsIDQ1LCAxLCA3MCwgNDUsIDEsIDIyOCwgMTUxLCA0NSwgMSwgNjYsIDQ1LCAxLCAyMDMsIDE4MiwgNDUsIAorICAgIDEsIDcyLCA0NSwgMSwgMjM4LCAyNTUsIDQ1LCAxLCAyNTEsIDE3NiwgNDUsIDEsIDc0LCA0NSwgMSwgMjE3LCA2MywgNDUsIAorICAgIDEsIDI1MCwgMTM5LCA0NSwgMSwgMTYxLCA0NSwgMSwgMjE5LCAyNTMsIDQ1LCAxLCAyNDcsIDE5MCwgNDUsIDEsIDIyNywgCisgICAgMjQ4LCA0NSwgMSwgMjE4LCA2MCwgNDUsIDEsIDIwNCwgMjUzLCA0NSwgMSwgMjE5LCAyMSwgNDUsIDEsIDIwNywgMzYsIDQ1LCAKKyAgICAxLCAxODgsIDQ1LCAxLCAyMTksIDMsIDQ1LCAxLCAxNzIsIDQ1LCAxLCAxNzgsIDQ1LCAxLCAxODMsIDQ1LCAxLCAyMTMsIAorICAgIDI1MiwgNDUsIDEsIDIxMiwgMjE1LCA0NSwgMSwgMTk0LCA0NSwgMSwgMjI0LCAxMzgsIDQ1LCAxLCAyMjQsIDEyOSwgNDUsIAorICAgIDEsIDIwMywgOTAsIDQ1LCAxLCAyMTAsIDExNCwgNDUsIDEsIDIwOCwgMTc5LCA0NSwgMSwgMjEyLCA2NCwgNDUsIDEsIDE0NCwgCisgICAgNDUsIDIyLCAyLCAyNTIsIDEzOCwgNDUsIDIyLCAyLCA3MCwgNDUsIDIyLCAyLCAyMjgsIDE1MSwgNDUsIDIyLCAyLCA2NiwgCisgICAgNDUsIDIyLCAyLCAyMDMsIDE4MiwgNDUsIDIyLCAyLCA3MiwgNDUsIDIyLCAyLCAyMzgsIDI1NSwgNDUsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgNDUsIDIyLCAyLCA3NCwgNDUsIDIyLCAyLCAyMTcsIDYzLCA0NSwgMjIsIDIsIDI1MCwgMTM5LCA0NSwgMiwgMjAyLCAKKyAgICAyMDgsIDQ1LCAyMTcsIDg2LCA0NSwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDQ1LCAxNywgMTk5LCA4MSwgNDUsIDE3LCAxMDIsIAorICAgIDQ1LCAxNywgMTA1LCA0NSwgMTcsIDE0NywgNDUsIDE3LCAxNDksIDQ1LCAxNywgMTY0LCA0NSwgMTcsIDE4NywgNDUsIDE3LCAKKyAgICAyMTAsIDEzNSwgNDUsIDE3LCAxOTIsIDQ1LCAxNywgMjE5LCAxMTMsIDQ1LCA0MSwgMjA2LCAxNjYsIDQ1LCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCA0NSwgNDEsIDExMiwgMjA2LCA1MCwgNDUsIDI0MSwgMjMzLCA1NCwgNDUsIDIyMSwgOTAsIDU0LCA0NSwgCisgICAgMjAwLCA0OSwgNTQsIDQ1LCAyNDEsIDE3MiwgNTQsIDQ1LCAyNDIsIDI0NiwgNTQsIDQ1LCAyNTAsIDE4OSwgODgsIDU0LCAKKyAgICA0NSwgMjEyLCAxNDksIDU0LCA0NSwgNDEsIDU0LCAxODAsIDIsIDM4LCAyNDcsIDE1MCwgNTYsIDE4MCwgMiwgMjQ3LCAxNDksIAorICAgIDE4MCwgMiwgMjUxLCAzMywgMTgwLCAyLCAyMDIsIDIwMywgMTgwLCAxLCA2MiwgMTgwLCAxLCAyNTIsIDEzOCwgMTgwLCAxLCAKKyAgICA3MCwgMTgwLCAxLCAyMjgsIDE1MSwgMTgwLCAxLCA2NiwgMTgwLCAxLCAyMDMsIDE4MiwgMTgwLCAxLCAxMDksIDE0NiwgCisgICAgMTgwLCAxLCAxMDksIDE1NiwgMTgwLCAxLCA3MiwgMTgwLCAxLCAyMzgsIDI1NSwgMTgwLCAxLCAyNTEsIDE3NiwgMTgwLCAxLCAKKyAgICA3NCwgMTgwLCAxLCAyMTcsIDYzLCAxODAsIDEsIDI1MCwgMTM5LCAxODAsIDEsIDE2MSwgMTgwLCAxLCAyMjYsIDIwNywgCisgICAgMTgwLCAxLCAyMzYsIDg5LCAxODAsIDEsIDIzNSwgMTk5LCAxODAsIDEsIDIxOSwgMjUzLCAxODAsIDEsIDI0NywgMTkwLCAKKyAgICAxODAsIDEsIDI0NywgMzcsIDE4MCwgMSwgMjI3LCAyNDgsIDE4MCwgMSwgMjI3LCAyMTUsIDE4MCwgMSwgMjE4LCA2MCwgCisgICAgMTgwLCAxLCAyMDQsIDI1MywgMTgwLCAxLCAyMDQsIDI0MSwgMTgwLCAxLCAyNDEsIDIyMCwgMTgwLCAxLCAyNDEsIDIwNCwgCisgICAgMTgwLCAxLCAyMTksIDIxLCAxODAsIDEsIDIwNywgMzYsIDE4MCwgMSwgMjA2LCAxMjIsIDE4MCwgMSwgMjQyLCA1OCwgMTgwLCAKKyAgICAxLCAyNDEsIDEwMCwgMTgwLCAxLCAxODgsIDE4MCwgMSwgMTcyLCAxODAsIDEsIDIxNSwgMjQ1LCAxODAsIDEsIDI0OSwgCisgICAgMTM2LCAxODAsIDEsIDI0OCwgMjAwLCAxODAsIDEsIDE3OCwgMTgwLCAxLCAxODMsIDE4MCwgMSwgMjEzLCAyNTIsIDE4MCwgCisgICAgMSwgMjEyLCAyMTUsIDE4MCwgMSwgMTk0LCAxODAsIDEsIDIyNCwgMTM4LCAxODAsIDEsIDIyNCwgMTI5LCAxODAsIDEsIAorICAgIDIwMywgOTAsIDE4MCwgMSwgMjEwLCAxMTQsIDE4MCwgMSwgMjA4LCAxNzksIDE4MCwgMSwgMjEyLCA2NCwgMTgwLCAxLCAKKyAgICAxNDQsIDE4MCwgMiwgMjUwLCAxMjIsIDE4MCwgMjIsIDIsIDI1MiwgMTM4LCAxODAsIDIyLCAyLCA3MCwgMTgwLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE4MCwgMjIsIDIsIDY2LCAxODAsIDIyLCAyLCAyMDMsIDE4MiwgMTgwLCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE4MCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4MCwgMjIsIDIsIDcyLCAxODAsIDIyLCAyLCAyMzgsIDI1NSwgMTgwLCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE4MCwgMjIsIDIsIDc0LCAxODAsIDIyLCAyLCAyMTcsIDYzLCAxODAsIDIyLCAyLCAyNTAsIDEzOSwgCisgICAgMTgwLCAyLCAyMDIsIDIwOCwgMTgwLCAyMjUsIDIsIDgxLCAxODAsIDI1MSwgMTc3LCAyMjUsIDIsIDgxLCAxODAsIDEsIAorICAgIDIwNSwgMzIsIDE4MCwgMSwgMjM5LCA5MywgMTgwLCAxLCAyMTIsIDE5NiwgMTgwLCAxLCAxMDksIDIxMiwgMjE2LCAxODAsIAorICAgIDEsIDEwOSwgMjI0LCAxMzksIDE4MCwgMjIsIDIsIDEwOSwgMTU2LCAxODAsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxODAsIAorICAgIDE3LCAxOTksIDgxLCAxODAsIDE3LCAxMDIsIDE4MCwgMTcsIDEwNSwgMTgwLCAxNywgMTQ3LCAxODAsIDE3LCAxNDksIDE4MCwgCisgICAgMTcsIDE2NCwgMTgwLCAxNywgMTg3LCAxODAsIDE3LCAyMTAsIDEzNSwgMTgwLCAxNywgMTkyLCAxODAsIDE3LCAyMTksIAorICAgIDExMywgMTgwLCAyMzYsIDIxOSwgMTcsIDE5OSwgODIsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAKKyAgICAyMzYsIDIxOSwgMTcsIDExMiwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgCisgICAgMTIwLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMjYsIDM2LCAyMTcsIAorICAgIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDExMiwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAKKyAgICAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMjAsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgCisgICAgMjE5LCAxNywgMTI2LCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyLCAyMDQsIDE3NSwgMjI3LCA2MywgCisgICAgMiwgMjA4LCAyNDMsIDI0NywgMTQ5LCAyMjcsIDYzLCAyLCAyNDcsIDE0OSwgMjI3LCA2MywgMiwgMjUxLCAzMywgMjI3LCAKKyAgICA2MywgMiwgMjAyLCAyMDMsIDIyNywgNjMsIDEsIDYyLCAyMjcsIDYzLCAxLCAyNTIsIDEzOCwgMjI3LCA2MywgMSwgNzAsIAorICAgIDIyNywgNjMsIDEsIDIyOCwgMTUxLCAyMjcsIDYzLCAxLCA2NiwgMjI3LCA2MywgMSwgMjAzLCAxODIsIDIyNywgNjMsIDEsIAorICAgIDEwOSwgMTQ2LCAyMjcsIDYzLCAxLCAxMDksIDE1NiwgMjI3LCA2MywgMSwgNzIsIDIyNywgNjMsIDEsIDIzOCwgMjU1LCAKKyAgICAyMjcsIDYzLCAxLCAyNTEsIDE3NiwgMjI3LCA2MywgMSwgNzQsIDIyNywgNjMsIDEsIDIxNywgNjMsIDIyNywgNjMsIDEsIAorICAgIDI1MCwgMTM5LCAyMjcsIDYzLCAxLCAxNjEsIDIyNywgNjMsIDEsIDIyNiwgMjA3LCAyMjcsIDYzLCAxLCAyMzYsIDg5LCAKKyAgICAyMjcsIDYzLCAxLCAyMzUsIDE5OSwgMjI3LCA2MywgMSwgMjE5LCAyNTMsIDIyNywgNjMsIDEsIDI0NywgMTkwLCAyMjcsIAorICAgIDYzLCAxLCAyNDcsIDM3LCAyMjcsIDYzLCAxLCAyMjcsIDI0OCwgMjI3LCA2MywgMSwgMjI3LCAyMTUsIDIyNywgNjMsIDEsIAorICAgIDIxOCwgNjAsIDIyNywgNjMsIDEsIDIwNCwgMjUzLCAyMjcsIDYzLCAxLCAyMDQsIDI0MSwgMjI3LCA2MywgMSwgMjQxLCAKKyAgICAyMjAsIDIyNywgNjMsIDEsIDI0MSwgMjA0LCAyMjcsIDYzLCAxLCAyMTksIDIxLCAyMjcsIDYzLCAxLCAyMDcsIDM2LCAyMjcsIAorICAgIDYzLCAxLCAyMDYsIDEyMiwgMjI3LCA2MywgMSwgMjQyLCA1OCwgMjI3LCA2MywgMSwgMjQxLCAxMDAsIDIyNywgNjMsIDEsIAorICAgIDE4OCwgMjI3LCA2MywgMSwgMTcyLCAyMjcsIDYzLCAxLCAyMTUsIDI0NSwgMjI3LCA2MywgMSwgMjQ5LCAxMzYsIDIyNywgCisgICAgNjMsIDEsIDI0OCwgMjAwLCAyMjcsIDYzLCAxLCAxNzgsIDIyNywgNjMsIDEsIDE4MywgMjI3LCA2MywgMSwgMjEzLCAyNTIsIAorICAgIDIyNywgNjMsIDEsIDIxMiwgMjE1LCAyMjcsIDYzLCAxLCAxOTQsIDIyNywgNjMsIDEsIDIyNCwgMTM4LCAyMjcsIDYzLCAxLCAKKyAgICAyMDMsIDkwLCAyMjcsIDYzLCAxLCAyMTAsIDExNCwgMjI3LCA2MywgMSwgMjA4LCAxNzksIDIyNywgNjMsIDEsIDIxMiwgNjQsIAorICAgIDIyNywgNjMsIDEsIDE0NCwgMjI3LCA2MywgMiwgMjE4LCAxMDAsIDIyNywgNjMsIDIsIDI1MCwgMTIyLCAyMjcsIDYzLCAyMiwgCisgICAgMiwgMjUyLCAxMzgsIDIyNywgNjMsIDIyLCAyLCA3MCwgMjI3LCA2MywgMjIsIDIsIDIyOCwgMTUxLCAyMjcsIDYzLCAyMiwgCisgICAgMiwgNjYsIDIyNywgNjMsIDIyLCAyLCAyMDMsIDE4MiwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMTQ2LCAyMjcsIDYzLCAyMiwgCisgICAgMiwgMTA5LCAyMTIsIDIxNiwgMjI3LCA2MywgMjIsIDIsIDcyLCAyMjcsIDYzLCAyMiwgMiwgMjM4LCAyNTUsIDIyNywgNjMsIAorICAgIDIyLCAyLCAyNTEsIDE3NiwgMjI3LCA2MywgMjIsIDIsIDc0LCAyMjcsIDYzLCAyMiwgMiwgMjE3LCA2MywgMjI3LCA2MywgCisgICAgMjIsIDIsIDI1MCwgMTM5LCAyMjcsIDYzLCAyLCAyMDIsIDIwOCwgMjI3LCA2MywgMjI1LCAyLCA4MSwgMjI3LCA2MywgMjUxLCAKKyAgICAxNzcsIDIyNSwgMiwgODEsIDIyNywgNjMsIDEsIDIzNywgMTk1LCAyMjcsIDYzLCAxLCAxMDksIDIxMiwgMjE2LCAyMjcsIAorICAgIDYzLCAxLCAxMDksIDIyNCwgMTM5LCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAxNTYsIDIyNywgNjMsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAyMjcsIDYzLCAxNywgMTk5LCA4MSwgMjI3LCA2MywgMTcsIDEwMiwgMjI3LCA2MywgMTcsIDEwNSwgMjI3LCA2MywgCisgICAgMTcsIDE0NywgMjI3LCA2MywgMTcsIDE0OSwgMjI3LCA2MywgMTcsIDE2NCwgMjI3LCA2MywgMTcsIDE4NywgMjI3LCA2MywgCisgICAgMTcsIDIxMCwgMTM1LCAyMjcsIDYzLCAxNywgMTkyLCAyMjcsIDYzLCAxNywgMjE5LCAxMTMsIDIyNywgNjMsIDIsIDIyNywgCisgICAgMjAxLCAyMjcsIDYzLCAyLCAyMDMsIDIyNiwgMTQyLCAyLCAyNDcsIDE0OSwgMTQyLCAyLCAyNTEsIDMzLCAxNDIsIDIsIAorICAgIDIwMiwgMjAzLCAxNDIsIDEsIDYyLCAxNDIsIDEsIDI1MiwgMTM4LCAxNDIsIDEsIDcwLCAxNDIsIDEsIDIyOCwgMTUxLCAKKyAgICAxNDIsIDEsIDY2LCAxNDIsIDEsIDIwMywgMTgyLCAxNDIsIDEsIDEwOSwgMTQ2LCAxNDIsIDEsIDEwOSwgMTU2LCAxNDIsIDEsIAorICAgIDcyLCAxNDIsIDEsIDIzOCwgMjU1LCAxNDIsIDEsIDI1MSwgMTc2LCAxNDIsIDEsIDc0LCAxNDIsIDEsIDIxNywgNjMsIDE0MiwgCisgICAgMSwgMjUwLCAxMzksIDE0MiwgMSwgMTYxLCAxNDIsIDEsIDIyNiwgMjA3LCAxNDIsIDEsIDIzNiwgODksIDE0MiwgMSwgMjM1LCAKKyAgICAxOTksIDE0MiwgMSwgMjE5LCAyNTMsIDE0MiwgMSwgMjQ3LCAxOTAsIDE0MiwgMSwgMjQ3LCAzNywgMTQyLCAxLCAyMjcsIAorICAgIDI0OCwgMTQyLCAxLCAyMjcsIDIxNSwgMTQyLCAxLCAyMTgsIDYwLCAxNDIsIDEsIDIwNCwgMjUzLCAxNDIsIDEsIDIwNCwgCisgICAgMjQxLCAxNDIsIDEsIDI0MSwgMjIwLCAxNDIsIDEsIDI0MSwgMjA0LCAxNDIsIDEsIDIxOSwgMjEsIDE0MiwgMSwgMjA3LCAKKyAgICAzNiwgMTQyLCAxLCAyMDYsIDEyMiwgMTQyLCAxLCAyNDIsIDU4LCAxNDIsIDEsIDI0MSwgMTAwLCAxNDIsIDEsIDE4OCwgCisgICAgMTQyLCAxLCAyMTksIDMsIDE0MiwgMSwgMTcyLCAxNDIsIDEsIDIxNSwgMjQ1LCAxNDIsIDEsIDI0OSwgMTM2LCAxNDIsIDEsIAorICAgIDI0OCwgMjAwLCAxNDIsIDEsIDE3OCwgMTQyLCAxLCAxODMsIDE0MiwgMSwgMjEzLCAyNTIsIDE0MiwgMSwgMjEyLCAyMTUsIAorICAgIDE0MiwgMSwgMTk0LCAxNDIsIDEsIDIyNCwgMTM4LCAxNDIsIDEsIDIyNCwgMTI5LCAxNDIsIDEsIDIwMywgOTAsIDE0MiwgMSwgCisgICAgMjEwLCAxMTQsIDE0MiwgMSwgMjA4LCAxNzksIDE0MiwgMSwgMjEyLCA2NCwgMTQyLCAxLCAxNDQsIDE0MiwgMSwgMjA0LCAKKyAgICAyMjIsIDE0MiwgMiwgMjUwLCAxMjIsIDE0MiwgMjIsIDIsIDI1MiwgMTM4LCAxNDIsIDIyLCAyLCA3MCwgMTQyLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE0MiwgMjIsIDIsIDY2LCAxNDIsIDIyLCAyLCAyMDMsIDE4MiwgMTQyLCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE0MiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE0MiwgMjIsIDIsIDcyLCAxNDIsIDIyLCAyLCAyMzgsIDI1NSwgMTQyLCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE0MiwgMjIsIDIsIDc0LCAxNDIsIDIyLCAyLCAyMTcsIDYzLCAxNDIsIDIyLCAyLCAyNTAsIDEzOSwgCisgICAgMTQyLCAyLCAyMDIsIDIwOCwgMTQyLCAxLCA3MywgMjEzLCAxMjksIDE0MiwgMiwgMjE2LCAxMjksIDE0MiwgMSwgMjQ2LCAKKyAgICAyMjUsIDIyMywgMjQzLCAxNDIsIDEsIDI0NiwgMjI1LCAyMDAsIDEyMywgMTQyLCAxLCAyNDYsIDIyNSwgMjI0LCAxMzAsIAorICAgIDE0MiwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDE0MiwgMjM2LCAyMTksIDExMiwgMjE3LCA3NCwgMTQyLCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMzYsIDIzNywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMzgsIDIyNCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDQsIAorICAgIDE2MiwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDYsIDE1NywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMDQsIDE2MSwgMTQyLCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzcsIDEwNywgMTQyLCAxLCAyNTAsIDIzNCwgMjI4LCAxNTEsIDE0MiwgMSwgMTA5LCAyMTIsIAorICAgIDIxNiwgMTQyLCAxLCAxMDksIDIyNCwgMTM5LCAxNDIsIDIyLCAyLCAxMDksIDE1NiwgMTQyLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMTQyLCAxNywgMTk5LCA4MSwgMTQyLCAxNywgMTAyLCAxNDIsIDE3LCAxMDUsIDE0MiwgMTcsIDE0NywgMTQyLCAxNywgCisgICAgMTQ5LCAxNDIsIDE3LCAxNjQsIDE0MiwgMTcsIDE4NywgMTQyLCAxNywgMjEwLCAxMzUsIDE0MiwgMTcsIDE5MiwgMTQyLCAKKyAgICAxNywgMjE5LCAxMTMsIDE0MiwgNDEsIDIwNiwgMTY2LCAxNDIsIDQxLCAxMTIsIDIzMywgODIsIDE0MiwgNDEsIDExMiwgCisgICAgMjA2LCA1MCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAxNDIsIAorICAgIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAKKyAgICAyMzgsIDIyNywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMDksIDk3LCAxNDIsIDI0MSwgMjM4LCA4MSwgMTQyLCAxLCAyNDYsIAorICAgIDIyNSwgMjE5LCAyMiwgMTQyLCAxLCAyNDYsIDIyNSwgMjIwLCAyMTQsIDE0MiwgMSwgMjQ2LCAyMjUsIDIxMiwgMjE2LCAKKyAgICAxNDIsIDEsIDI0NiwgMjI1LCAxNTYsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNCwgMTM5LCAxNDIsIDEsIDI0NiwgMjI1LCAyMjcsIAorICAgIDExOCwgMTQzLCAyLCAyNTEsIDMyLCAxNDMsIDIsIDIwMiwgMjAyLCAxNDMsIDEsIDI1MCwgMTEwLCAxNDMsIDEsIDI1MiwgCisgICAgOTIsIDE0MywgMSwgMjUxLCAyMDEsIDE0MywgMSwgMjUxLCAyMTYsIDE0MywgMSwgMjI4LCAyLCAxNDMsIDEsIDIyOCwgMTUwLCAKKyAgICAxNDMsIDEsIDIwMywgMTczLCAxNDMsIDEsIDIwMywgMTc2LCAxNDMsIDEsIDIyOCwgMjgsIDE0MywgMSwgMjI4LCAyOSwgCisgICAgMTQzLCAxLCAyMjgsIDEzNiwgMTQzLCAxLCAyMjgsIDEzOCwgMTQzLCAxLCAyMzgsIDI1LCAxNDMsIDEsIDIzOCwgMjUwLCAKKyAgICAxNDMsIDEsIDI1MSwgMTYxLCAxNDMsIDEsIDIxNiwgMjI5LCAxNDMsIDEsIDIxNywgNTYsIDE0MywgMSwgMjUwLCAxMjUsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIyNywgMTMsIDE0MywgMSwgMjIyLCAyMDUsIDIyNywgMTMsIDE0MywgMSwgMjUxLCAxMTUsIAorICAgIDIzNiwgMzUsIDE0MywgMSwgMjIyLCAyMDUsIDIzNiwgMzUsIDE0MywgMSwgMjI3LCA2MiwgMjIwLCAxNTQsIDE0MywgMSwgCisgICAgMjEyLCA1LCAyMzYsIDM1LCAxNDMsIDEsIDI1MSwgMTE1LCAyNDcsIDEwMiwgMTQzLCAxLCAyMjIsIDIwNSwgMjQ3LCAxMDIsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIyNywgMjMwLCAxNDMsIDEsIDIyMiwgMjA1LCAyMjcsIDIzMCwgMTQzLCAxLCAyMDcsIDI5LCAKKyAgICAyMjAsIDE1NCwgMTQzLCAxLCAyMDcsIDI5LCAyMTIsIDQsIDIyMCwgMTU1LCAxNDMsIDEsIDIxMiwgNSwgMjI3LCAyMzAsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIwNCwgMjQ5LCAxNDMsIDEsIDIyMiwgMjA1LCAyMDQsIDI0OSwgMTQzLCAxLCAyNTEsIDExNSwgCisgICAgMjQxLCAyMTEsIDE0MywgMSwgMjIyLCAyMDUsIDI0MSwgMjExLCAxNDMsIDEsIDIyMCwgMjQyLCAyMjAsIDEwOCwgMTQzLCAxLCAKKyAgICAyMTIsIDUsIDI0MSwgMjExLCAxNDMsIDEsIDI1MSwgMTE1LCAyMDYsIDIwOSwgMTQzLCAxLCAyMjIsIDIwNSwgMjA2LCAyMDksIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDI0MSwgMjMxLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDEsIDIzMSwgMTQzLCAxLCAyNDIsIDYsIAorICAgIDIyMCwgMTA4LCAxNDMsIDEsIDIxMiwgNSwgMjQxLCAyMzEsIDE0MywgMSwgMjUxLCAxMTUsIDIxNiwgODEsIDE0MywgMSwgCisgICAgMjIyLCAyMDUsIDIxNiwgODEsIDE0MywgMSwgMjUxLCAxMTUsIDI0OSwgNDYsIDE0MywgMSwgMjIyLCAyMDUsIDI0OSwgNDYsIAorICAgIDE0MywgMSwgMjIyLCAxMTgsIDE0MywgMSwgMjUxLCA5NSwgMjQ5LCA0NiwgMTQzLCAxLCAyMDAsIDU2LCAxNDMsIDEsIDIxMywgCisgICAgMTk2LCAxNDMsIDEsIDI0MiwgNiwgMjI1LCA0OSwgMTQzLCAxLCAyMDMsIDYxLCAxNDMsIDEsIDIwNywgMjksIDIxMSwgMjMzLCAKKyAgICAxNDMsIDEsIDIyMCwgMjQyLCAyMTEsIDIzMywgMTQzLCAxLCAyNDIsIDYsIDIxMSwgMjMzLCAxNDMsIDEsIDIzNCwgMTQ1LCAKKyAgICAxNDMsIDEsIDIyMCwgMjQyLCAyMjUsIDQ5LCAxNDMsIDEsIDIzNywgMTQ5LCAxNDMsIDIsIDI1MSwgMTUwLCAxNDMsIDIyLCAKKyAgICAyLCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgMjI2LCAyMzIsIDI1MSwgMjE4LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyNTEsIAorICAgIDIxOCwgMTQzLCAyMiwgMiwgMjI2LCAyMzIsIDIyOCwgMjUsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIyOCwgMjUsIDE0MywgCisgICAgMjIsIDIsIDIyNiwgMjMyLCAyMTYsIDIwOSwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjE2LCAyMDksIDE0MywgMjIsIDIsIAorICAgIDIzNiwgNzgsIDE0MywgMjIsIDIsIDIyNiwgNzMsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIyNiwgNzMsIDE0MywgMjIsIDIsIAorICAgIDIyNiwgNzUsIDI0MSwgMTUwLCAxNDMsIDIyLCAyLCAyMjYsIDc0LCAyMzQsIDIzNCwgMjUxLCAyMTEsIDE0MywgMjIsIDIsIAorICAgIDIyNiwgNzQsIDIzNCwgMjM0LCAyNDEsIDQzLCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgMjI2LCA3NCwgMjM0LCAyMzQsIDIzNiwgCisgICAgMzQsIDE0MywgMjIsIDIsIDIzNiwgMzQsIDE0MywgMjI0LCAxNTEsIDE3LCAxOTksIDgxLCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMTAyLCAxNDMsIDIyNCwgMTUxLCAxNywgMTA1LCAxNDMsIDIyNCwgMTUxLCAxNywgMTQ3LCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMTQ5LCAxNDMsIDIyNCwgMTUxLCAxNywgMTY0LCAxNDMsIDIyNCwgMTUxLCAxNywgMTg3LCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMjEwLCAxMzUsIDE0MywgMjI0LCAxNTEsIDE3LCAxOTIsIDE0MywgMjI0LCAxNTEsIDE3LCAyMTksIDExMywgMTQzLCAyMiwgCisgICAgMiwgMjQxLCA0MywgMjM2LCA3OCwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjM2LCAzNCwgMTQzLCAyMTQsIDIxMiwgMjI2LCAwLCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjYsIDg5LCAyMjcsIDgyLCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAyMDIsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE3MSwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTY2LCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNzUsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMTMsIDIxNywgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjE5LCAxNzksIDIxOSwgMTY2LCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ3LCAyNiwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjQ2LCAyMTEsIDI0NiwgMjIxLCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ3LCAyNSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjA5LCAzMCwgMjA5LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NiwgMjA3LCAyMDYsIDExNywgMTcxLCAxOTksIAorICAgIDI0NiwgMTk5LCAyNTMsIDIwNiwgMTE3LCAxNzEsIDI0MCwgMjEyLCAyNDcsIDM0LCAyMDYsIDExNywgMTcxLCAyMDUsIDE4NiwgCisgICAgMjE2LCA5MiwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAxMTEsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIyMCwgCisgICAgMTMxLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMTUsIDIwNywgMjA2LCAxMTcsIDE3MSwgMjE4LCAyNDIsIDIyMCwgMjQsIAorICAgIDIwNiwgMTE3LCAxNzEsIDI0MCwgMjEyLCAyNDEsIDE1MSwgMjA2LCAxMTcsIDE3MSwgMjA1LCAxODYsIDIwNiwgMjM3LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDI5LCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDExOCwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCA1NywgMjA2LCAxMTcsIDE3MSwgMjE4LCAyNDIsIDIxOCwgMTMzLCAyMDYsIDExNywgCisgICAgMTcxLCAyNDgsIDEyNSwgMjQ5LCAxMDIsIDIwNiwgMTE3LCAxNzEsIDIxNSwgMTA3LCAyMTUsIDEzNSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjE1LCAyMTgsIDIxNSwgMjA5LCAyMDYsIDExNywgMTcxLCAyMzcsIDE0LCAyMzcsIDE5NSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjE1LCAyMTgsIDIxNSwgMjM4LCAyMDYsIDExNywgMTcxLCAyMzcsIDE0LCAyMzcsIDE2OCwgMjA2LCAxMTcsIDE3MSwgMjE1LCAKKyAgICAyMTgsIDIxMiwgMTcsIDIwNiwgMTE3LCAxNzEsIDIyMSwgMTM3LCAxNzgsIDIwNiwgMTE3LCAxNzEsIDE5OSwgMjQ2LCAyMDAsIAorICAgIDg1LCAyMDYsIDExNywgMTcxLCAyMTMsIDIsIDIxMiwgMTc0LCAyMDYsIDExNywgMTcxLCAyMTIsIDE3NSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjI0LCAxMTEsIDIyNCwgMTY5LCAyMDYsIDExNywgMTcxLCAyMjQsIDQyLCAyMDYsIDExNywgMTcxLCAyMDEsIDEsIAorICAgIDIwMSwgMTA5LCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMTIsIDMzLCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMTIsIAorICAgIDE0NSwgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjA4LCAyMywgMjA2LCAxMTcsIDE3MSwgMjMzLCAyMDgsIDIzNCwgNDgsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyNCwgMTExLCAyNDYsIDE5MSwgMjA2LCAxMTcsIDE3MSwgMTYzLCAyNTEsIDc2LCAyMDYsIDExNywgCisgICAgMTcxLCAyMzMsIDIwOCwgMjE4LCAyMzcsIDIwNiwgMTE3LCAxNzEsIDIxNiwgMTg2LCAyMDYsIDExNywgMTcxLCAyMTEsIAorICAgIDI1NSwgNjIsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMzQsIDIwMSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MiwgCisgICAgMTM4LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAxMDEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA3MCwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjExLCAyNTUsIDIyOCwgMTUxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjA0LCAzMSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDIwNCwgMjksIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA2NiwgMjA2LCAxMTcsIDE3MSwgMjExLCAKKyAgICAyNTUsIDIwMywgMTgyLCAyMDYsIDExNywgMTcxLCAyMTUsIDIyMCwgMjA2LCAxMTcsIDI0MiwgMTk1LCAxNiwgMjQ5LCAxMDMsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA3MiwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMjIxLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgNzQsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDE3NywgMjIyLCAxOTMsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCAyNTEsIDE3NywgMjIyLCAxOTQsIDIwNiwgMTE3LCAxNzEsIDIyNSwgOTUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIyMiwgMTkwLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5MSwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIzOCwgMjE2LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjA2LCA2MSwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIwNSwgMTAxLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjIsIDE5OSwgMjQ3LCAxMywgMjA2LCAxMTcsIDE3MSwgMjA2LCAxMDksIDIwNiwgMTE3LCAxNzEsIDIxOSwgCisgICAgMTIyLCAyMDYsIDExNywgMTcxLCAyMDAsIDc5LCAyMDYsIDExNywgMTcxLCAyMzcsIDQsIDIwNiwgMTE3LCAxNywgMTk5LCAKKyAgICA4MSwgMjA2LCAxMTcsIDE3LCAxMDIsIDIwNiwgMTE3LCAxNywgMTA1LCAyMDYsIDExNywgMTcsIDE0NywgMjA2LCAxMTcsIAorICAgIDE3LCAxNDksIDIwNiwgMTE3LCAxNywgMTY0LCAyMDYsIDExNywgMTcsIDE4NywgMjA2LCAxMTcsIDE3LCAyMTAsIDEzNSwgCisgICAgMjA2LCAxMTcsIDE3LCAxOTIsIDIwNiwgMTE3LCAxNywgMjE5LCAxMTMsIDIwNiwgMTE3LCAxNzEsIDI1MSwgNzIsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc2LCAyMjUsIDc1LCAxLCAyMjYsIDg4LCAyMjUsIDc1LCAxLCAyMjYsIDE3OSwgMjA3LCAyMjUsIAorICAgIDIyNSwgNzUsIDEsIDIyNiwgMTc5LCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE5LCAxNzgsIDIyNSwgNzUsIDEsIDI0NiwgCisgICAgOTEsIDIyNSwgNzUsIDEsIDIwOSwgMzAsIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTgsIDI2LCAyMjUsIDc1LCAxLCAyNDAsIAorICAgIDIxMSwgMjI1LCA3NSwgMSwgMTM4LCAyMjUsIDc1LCAxLCAyMDYsIDYyLCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgMjA2LCA2MiwgCisgICAgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOCwgMjQxLCAyMjUsIDc1LCAxLCAyNDgsIDEyNCwgMjI1LCA3NSwgMSwgMjE1LCAKKyAgICAxMDYsIDIyNSwgNzUsIDEsIDIxNSwgMjE4LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjA2LCAyNDYsIDIyNSwgCisgICAgNzUsIDEsIDIxNSwgMjE4LCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIAorICAgIDIyMSwgMTM2LCAyMjUsIDc1LCAxLCAxOTksIDI0NSwgMjI1LCA3NSwgMSwgMjI0LCAxMTEsIDIyNCwgMTY5LCAyMjUsIDc1LCAKKyAgICAxLCAyMjQsIDExMSwgMjI0LCA3MiwgMjI1LCA3NSwgMSwgMjAxLCAwLCAyMjUsIDc1LCAxLCAyMDksIDMwLCAyMDcsIDIyNSwgCisgICAgMjI1LCA3NSwgMSwgMjMzLCAyMDgsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCA3NCwgMjI1LCA3NSwgMSwgMjMzLCAyMDgsIAorICAgIDIwNiwgMjQ2LCAyMjUsIDc1LCAyMzgsIDE5NSwgMjI1LCA3NSwgMjIsIDIsIDYyLCAyMjUsIDc1LCAyMiwgMiwgMjIyLCAKKyAgICAxOTksIDIyNywgNjgsIDIyNSwgNzUsIDIyLCAyLCAyNTIsIDEzOCwgMjI1LCA3NSwgMjIsIDIsIDI1MSwgMTAxLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgNzAsIDIyNSwgNzUsIDIyLCAyLCAyMjgsIDE1MSwgMjI1LCA3NSwgMjIsIDIsIDIwMCwgMTIzLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgMTk5LCAxNjcsIDIyNSwgNzUsIDIyLCAyLCA2NiwgMjI1LCA3NSwgMjIsIDIsIDIwMywgMTgyLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgMjIyLCAxOTksIDIyNiwgNzEsIDIyNSwgNzUsIDIxMCwgMTYyLCAyLCAyMjQsIDExMCwgMjI1LCA3NSwgCisgICAgMjEwLCAxNjIsIDIsIDIxOCwgMjYsIDIyNSwgNzUsIDIyLCAyLCA3MiwgMjI1LCA3NSwgMjIsIDIsIDIzOCwgMjM0LCAyMjUsIAorICAgIDc1LCAyMiwgMiwgNzQsIDIyNSwgNzUsIDIyLCAyLCAyNTAsIDExMiwgMjI1LCA3NSwgMjIsIDIsIDI1MSwgMTc2LCAyMjUsIAorICAgIDc1LCAyMjYsIDg5LCAxOTQsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIDIzOCwgMjE2LCAyMjUsIDc1LCAxNTAsIDIyMiwgCisgICAgMTk5LCAyMDYsIDYxLCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAyMDYsIDE1LCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAKKyAgICAyNDcsIDExMCwgMjI1LCA3NSwgMjQ3LCAxNTUsIDgxLCAyMjUsIDc1LCAyMTksIDEzMSwgMjI1LCA3NSwgMTcsIDE5OSwgODEsIAorICAgIDIyNSwgNzUsIDE3LCAxMDIsIDIyNSwgNzUsIDE3LCAxMDUsIDIyNSwgNzUsIDE3LCAxNDcsIDIyNSwgNzUsIDE3LCAxNDksIAorICAgIDIyNSwgNzUsIDE3LCAxNjQsIDIyNSwgNzUsIDE3LCAxODcsIDIyNSwgNzUsIDE3LCAyMTAsIDEzNSwgMjI1LCA3NSwgMTcsIAorICAgIDE5MiwgMjI1LCA3NSwgMTcsIDIxOSwgMTEzLCAyMjUsIDc1LCAyMzMsIDIwOCwgMjE4LCAyNDEsIDIyNSwgNzUsIDIzMywgCisgICAgMjA4LCAyMjEsIDEzNiwgMjI1LCA3NSwgMSwgMjI2LCAxODAsIDIzNSwgMTE2LCAyMjUsIDc1LCAxLCAyMjYsIDE4MCwgMjE4LCAKKyAgICAyNiwgNzksIDUsIDIxNywgODYsIDc5LCAxMzQsIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDIwNSwgMzgsIDYyLCA3OSwgCisgICAgMTM0LCAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyNTUsIDEzNSwgMjEzLCA2LCAyNDksIDEwLCAxNzgsIDc5LCAxMzQsIAorICAgIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDI1NSwgMTM1LCAyMzUsIDUyLCAyMDUsIDE4LCAxNzgsIDc5LCAxMzQsIDgyLCAKKyAgICAyMDAsIDEsIDIyMSwgMjI5LCAyMjIsIDc4LCAxNzgsIDc5LCAxMzQsIDI0NiwgMTA2LCAyMDAsIDEsIDIyMSwgMjI5LCAyMTAsIAorICAgIDEyMSwgMTc4LCA3OSwgMTM0LCAyNDcsIDEzMCwgMjAwLCAxLCAyMjEsIDIyOSwgMjE1LCAyMDgsIDIxMCwgMTA3LCAxNzgsIAorICAgIDc5LCAxMzQsIDIwMCwgMSwgMjIxLCAyMjksIDIwNSwgMTgsIDIxMCwgMTA3LCAxNzgsIDc5LCAxMzQsIDIxMSwgMjMxLCAKKyAgICAyMTAsIDEwNiwgNzksIDEzNCwgMjQ4LCAzOSwgMjAwLCAxLCAyMjEsIDIyOCwgNzksIDEzNCwgMjQ4LCAxNDYsIDIxMCwgNCwgCisgICAgMjAwLCAxLCAyMjEsIDIyOCwgNzksIDEzNCwgMjI4LCA1NCwgMjA1LCAxNywgNzksIDEzNCwgMjQxLCAxNDMsIDIwNSwgMTgsIAorICAgIDI0OCwgMzgsIDc5LCAxMzQsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMTAsIDEwNiwgNzksIDEzNCwgMjA1LCAxOCwgCisgICAgMjEwLCAxMDYsIDc5LCAxMzQsIDIxOCwgMzEsIDIwNSwgMTgsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTMsIDI5LCAyNDYsIAorICAgIDI1MCwgMjA4LCAxOTYsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTMsIDk3LCAyMzUsIDg1LCAyMTAsIDEwNiwgNzksIDEzNCwgCisgICAgMjQ3LCAxMzAsIDI1NSwgMTM5LCAyMTIsIDE3OSwgMjIyLCA3NywgMTY4LCAyNDcsIDE1OCwgNzksIDEzNCwgMjM1LCA1MiwgCisgICAgMjA1LCAxNywgNzksIDIyNCwgOTYsIDIsIDI0NywgMzUsIDIxMiwgMTc4LCA3OSwgMjI0LCA5NiwgMiwgMjI0LCAyMjEsIAorICAgIDIxMiwgMTc4LCA3OSwgMjUwLCAxNjEsIDIsIDIxMCwgMTE3LCAyMzYsIDE4LCAyNTUsIDE0MCwgMjEyLCAxNzgsIDc5LCAKKyAgICAyNTAsIDE2MSwgMiwgMjU1LCAxMzcsIDE3MiwgNzksIDI1MCwgMTYxLCAyLCAyMTEsIDIwMywgMjA1LCAxMiwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM2LCAxNywgNzksIDIsIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM1LCAxMTgsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNSwgNTMsIDc5LCAyLCAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNiwgMTcsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNSwgMTE4LCA3OSwgMiwgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMTMsIDE5MiwgMjIwLCAKKyAgICAxNDksIDc5LCAxNywgMTk5LCA4MSwgNzksIDE3LCAxMDIsIDc5LCAxNywgMTA1LCA3OSwgMTcsIDE0NywgNzksIDE3LCAxNDksIAorICAgIDc5LCAxNywgMTY0LCA3OSwgMTcsIDE4NywgNzksIDE3LCAyMTAsIDEzNSwgNzksIDE3LCAxOTIsIDc5LCAxNywgMjE5LCAKKyAgICAxMTMsIDc5LCAxNywgMTY3LCAxMDIsIDc5LCAxNywgMTY3LCAxMDUsIDc5LCAxNywgMTY3LCAxNDcsIDc5LCAxNywgMTY3LCAKKyAgICAxNDksIDc5LCAxNywgMTY3LCAxNjQsIDc5LCAxNywgMTY3LCAxODcsIDc5LCAxNywgMTY3LCAyMTAsIDEzNSwgNzksIDE3LCAKKyAgICAxNjcsIDE5MiwgNzksIDE3LCAxNjcsIDIxOSwgMTEzLCA3OSwgMTcsIDE2NywgMTk5LCA4MSwgNzksIDEzNCwgMjQ4LCA0MSwgCisgICAgMjEyLCAxNzgsIDc5LCAxMzQsIDIxOSwgMjQ0LCAyNDcsIDIyNSwgMjE4LCA0MiwgMTk5LCAxNiwgNzksIDEzNCwgMjQ3LCAKKyAgICAxMzAsIDI1NSwgMTM5LCAyMTIsIDE3OSwgMjQ3LCAyMjYsIDIyMSwgMTgyLCAyNDcsIDE1OCwgNzksIDEzNCwgMjE5LCAyNDQsIAorICAgIDI0NywgMjI1LCAyMTAsIDExOCwgMjEyLCAxNzgsIDc5LCAxMzQsIDI0NywgOSwgMjIxLCAyMjgsIDc5LCAxMzQsIDIwNSwgCisgICAgMzMsIDI1NSwgMTM2LCA3OSwgMTM0LCAyMzUsIDM1LCAyMTIsIDE3OSwgMjM0LCAyNTAsIDc5LCAxMzQsIDIzNSwgMzUsIAorICAgIDIxMiwgMTc5LCAyMzUsIDAsIDc5LCAxMzQsIDI1MSwgNzcsIDIyNiwgMTk3LCAyMzQsIDI1MCwgNzksIDEzNCwgMjUxLCA3NywgCisgICAgMjI2LCAxOTcsIDIzNSwgMCwgNzksIDIsIDIwMCwgNzEsIDIwNSwgMTYsIDc5LCAyLCAyMjIsIDE1OSwgMjA1LCAxNiwgNzksIAorICAgIDEsIDE2MSwgNzksIDEsIDIyNiwgMjA3LCA3OSwgMSwgMjM2LCA4OSwgNzksIDEsIDIzNSwgMTk5LCA3OSwgMSwgMjE5LCAKKyAgICAyNTMsIDc5LCAxLCAyNDcsIDE5MCwgNzksIDEsIDI0NywgMzcsIDc5LCAxLCAyMjcsIDI0OCwgNzksIDEsIDIxOCwgNjAsIAorICAgIDc5LCAxLCAyMDQsIDI1MywgNzksIDEsIDIwNCwgMjQxLCA3OSwgMSwgMjQxLCAyMjAsIDc5LCAxLCAyNDEsIDIwNCwgNzksIAorICAgIDEsIDIxOSwgMjEsIDc5LCAxLCAyMDcsIDM2LCA3OSwgMSwgMjA2LCAxMjIsIDc5LCAxLCAyNDIsIDU4LCA3OSwgMSwgMjQxLCAKKyAgICAxMDAsIDc5LCAxLCAxODgsIDc5LCAxLCAxNzIsIDc5LCAxLCAyMTUsIDI0NSwgNzksIDEsIDI0OSwgMTM2LCA3OSwgMSwgCisgICAgMjQ4LCAyMDAsIDc5LCAxLCAxNzgsIDc5LCAxLCAyMDUsIDMyLCA3OSwgMSwgMjA1LCAyMiwgNzksIDEsIDIzOSwgOTMsIDc5LCAKKyAgICAxLCAyMzksIDg3LCA3OSwgMSwgMjAxLCAxMTQsIDc5LCAxLCAxOTksIDc3LCA3OSwgMSwgMTk5LCAxMTQsIDc5LCAxLCAyNTUsIAorICAgIDE0MiwgNzksIDEsIDE4MywgNzksIDEsIDIxMywgMjUyLCA3OSwgMSwgMTk0LCA3OSwgMSwgMjEwLCAxMTQsIDc5LCAxLCAKKyAgICAyMDgsIDE3OSwgNzksIDEsIDIxMiwgNjQsIDc5LCAxLCAxNDQsIDc5LCAxLCA2MiwgNzksIDEsIDIyNiwgMjksIDc5LCAxLCAKKyAgICAyMzcsIDU3LCAyMTMsIDI1MiwgNzksIDEsIDIyNiwgMTA5LCA3OSwgMSwgMjEyLCAyMTUsIDc5LCAyMiwgMiwgMjUyLCAxMzgsIAorICAgIDc5LCAyMiwgMiwgNzAsIDc5LCAyMiwgMiwgMjI4LCAxNTEsIDc5LCAyMiwgMiwgNjYsIDc5LCAyMiwgMiwgMjAzLCAxODIsIAorICAgIDc5LCAyMiwgMiwgMTA5LCAxNDYsIDc5LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgNzksIDIyLCAyLCAxMDksIDE1NiwgNzksIAorICAgIDIyLCAyLCAxMDksIDIyNCwgMTM5LCA3OSwgMjIsIDIsIDcyLCA3OSwgMjIsIDIsIDIzOCwgMjU1LCA3OSwgMjIsIDIsIDc0LCAKKyAgICA3OSwgMjIsIDIsIDIxNywgNjMsIDc5LCAyLCAyMTMsIDEyLCAyMDgsIDI1LCAyMTksIDI1NCwgMjEzLCAxLCA3OSwgMiwgCisgICAgMjEzLCA2LCAyNDksIDksIDc5LCAyMiwgMiwgMjEzLCAxMDUsIDcwLCA3OSwgMjIsIDIsIDIxMywgMTA1LCAyMjgsIDE1MSwgCisgICAgNzksIDIsIDIxOCwgNDIsIDE5OSwgMTcsIDIyMCwgMTU4LCAyNDIsIDU4LCA3OSwgMiwgMjA5LCA0NCwgMjI1LCA0MiwgNzksIAorICAgIDEzNCwgMjM0LCAyMTUsIDc5LCAxMzQsIDIxNiwgMTczLCA3OSwgMiwgMjI1LCA0NSwgMjEyLCAxNzgsIDc5LCAyLCAyMDAsIAorICAgIDc2LCAyMTIsIDE3OCwgNzksIDIsIDIyNSwgNDYsIDIwNSwgMzMsIDI0NywgMTU4LCA3OSwgMiwgMjIyLCA4MCwgMjQ3LCAKKyAgICAxNTgsIDc5LCAyLCAyMzUsIDU2LCAyNDcsIDE1OSwgMjEzLCA5NSwgNzksIDIsIDIzNSwgNTYsIDIyMiwgNzAsIDIxMywgOTUsIAorICAgIDc5LCAyLCAyMjgsIDUwLCAyMjIsIDgwLCAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyNSwgNDYsIDIwNSwgMzMsIDI0NywgCisgICAgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjIyLCA4MCwgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjgsIDUwLCAyMjIsIDgwLCAKKyAgICAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDEsIDE2MSwgNzksIDIwOCwgMTIsIDEsIDIyNiwgMjA3LCA3OSwgMjA4LCAxMiwgMSwgCisgICAgMjM2LCA4OSwgNzksIDIwOCwgMTIsIDEsIDIzNSwgMTk5LCA3OSwgMjA4LCAxMiwgMSwgMjE5LCAyNTMsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyNDcsIDE5MCwgNzksIDIwOCwgMTIsIDEsIDI0NywgMzcsIDc5LCAyMDgsIDEyLCAxLCAyMjcsIDI0OCwgNzksIDIwOCwgCisgICAgMTIsIDEsIDIxOCwgNjAsIDc5LCAyMDgsIDEyLCAxLCAyMDQsIDI1MywgNzksIDIwOCwgMTIsIDEsIDIwNCwgMjQxLCA3OSwgCisgICAgMjA4LCAxMiwgMSwgMjQxLCAyMjAsIDc5LCAyMDgsIDEyLCAxLCAyNDEsIDIwNCwgNzksIDIwOCwgMTIsIDEsIDIxOSwgMjEsIAorICAgIDc5LCAyMDgsIDEyLCAxLCAyMDcsIDM2LCA3OSwgMjA4LCAxMiwgMSwgMjA2LCAxMjIsIDc5LCAyMDgsIDEyLCAxLCAyNDIsIAorICAgIDU4LCA3OSwgMjA4LCAxMiwgMSwgMjQxLCAxMDAsIDc5LCAyMDgsIDEyLCAxLCAxODgsIDc5LCAyMDgsIDEyLCAxLCAxNzIsIAorICAgIDc5LCAyMDgsIDEyLCAxLCAyMTUsIDI0NSwgNzksIDIwOCwgMTIsIDEsIDI0OSwgMTM2LCA3OSwgMjA4LCAxMiwgMSwgMjQ4LCAKKyAgICAyMDAsIDc5LCAyMDgsIDEyLCAxLCAxNzgsIDc5LCAyMDgsIDEyLCAxLCAyMDUsIDMyLCA3OSwgMjA4LCAxMiwgMSwgMjA1LCAKKyAgICAyMiwgNzksIDIwOCwgMTIsIDEsIDIzOSwgOTMsIDc5LCAyMDgsIDEyLCAxLCAyMzksIDg3LCA3OSwgMjA4LCAxMiwgMSwgCisgICAgMjAxLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAxOTksIDc3LCA3OSwgMjA4LCAxMiwgMSwgMTk5LCAxMTQsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyNTUsIDE0MiwgNzksIDIwOCwgMTIsIDEsIDE4MywgNzksIDIwOCwgMTIsIDEsIDIxMywgMjUyLCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMTk0LCA3OSwgMjA4LCAxMiwgMSwgMjEwLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAyMDgsIDE3OSwgNzksIDIwOCwgMTIsIAorICAgIDEsIDIxMiwgNjQsIDc5LCAyMDgsIDEyLCAxLCAxNDQsIDc5LCAyMDgsIDEyLCAxLCA2MiwgNzksIDIwOCwgMTIsIDEsIDIyNiwgCisgICAgMjksIDc5LCAyMDgsIDEyLCAxLCAyMzcsIDU3LCAyMDEsIDExNCwgNzksIDIwOCwgMTIsIDEsIDIzNywgNTcsIDE4MywgNzksIAorICAgIDIwOCwgMTIsIDEsIDIzNywgNTcsIDIxMywgMjUyLCA3OSwgMjI2LCAxNiwgMjEyLCAxNzYsIDIyNiwgMjA3LCA3OSwgMjI2LCAKKyAgICAxNiwgMjEyLCAxNzYsIDIyNiwgMjA4LCAyNDcsIDIyNiwgMjIxLCAxODIsIDI0NywgMTU4LCA3OSwgMjQ3LCAxNDUsIDIsIAorICAgIDgwLCAyNDksIDEsIDc5LCAyNDcsIDE0NSwgMiwgMTYyLCAyNDksIDEsIDc5LCAyNDcsIDE0NSwgMiwgMjQ3LCAxNDcsIDIwNiwgCisgICAgMTk5LCA3OSwgMjQ3LCAxNDUsIDIsIDIxMSwgMjMwLCAyNTUsIDE0MSwgNzksIDE2LCAyMzksIDE1MiwgMjQ4LCAzNiwgNzksIAorICAgIDE2LCAyMTMsIDE5MSwgMjEzLCAxMywgNzksIDE2LCAyMTYsIDE5NywgMjM2LCAxNiwgNzksIDE2LCAyMTMsIDE5MSwgMjEzLCAKKyAgICAxNCwgMjEzLCA5NywgMjM1LCA4NCwgNzksIDE2LCAyMTUsIDIwOCwgMTcyLCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM2LCAKKyAgICA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAyMTgsIDMxLCAyNTUsIDEzOCwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgCisgICAgMjM1LCA1NCwgMjU1LCAxMzgsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIDI0NywgMjI2LCAyNTUsIDEzOCwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyMjAsIDE1MCwgMjEzLCAxOTIsIDI0MCwgMjI0LCA3OSwgMiwgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzUsIAorICAgIDUzLCA3OSwgMTM0LCAyNDgsIDQwLCAyMTAsIDQsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgNzksIDEzNCwgMjIxLCAKKyAgICAxMzgsIDIwMCwgMSwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMDUsIDE3LCA3OSwgCisgICAgMTM0LCA4MiwgMjQ4LCA2MywgMjEzLCAzLCAyMDAsIDEsIDIyMSwgMjI5LCAyMjIsIDc4LCAxNzgsIDc5LCAxMzQsIDI0NiwgCisgICAgMTA2LCAyNDgsIDYzLCAyMTMsIDMsIDIwMCwgMSwgMjIxLCAyMjksIDIxMCwgMTIxLCAxNzgsIDIxMywgNDUsIDIwNywgMTg4LCAKKyAgICA1NCwgMjI1LCAyNywgMjA3LCAxODgsIDU0LCAyMTMsIDQ1LCAyMDcsIDE4OCwgMiwgMywgMjQwLCAxODAsIDIyNSwgMjcsIAorICAgIDIwNywgMTg4LCAyLCAzLCAyNDAsIDE4MCwgNzksIDEzNCwgMjI1LCAzNywgMjIyLCA4MSwgMjEyLCAxNzgsIDc5LCAxMzQsIAorICAgIDIwNSwgMTI1LCAyMjIsIDgxLCAyMTIsIDE3OCwgNzEsIDEsIDE2MSwgNzEsIDEsIDIyNiwgMjA3LCA3MSwgMSwgMjM2LCA4OSwgCisgICAgNzEsIDEsIDIzNSwgMTk5LCA3MSwgMSwgMjE5LCAyNTMsIDcxLCAxLCAyNDcsIDE5MCwgNzEsIDEsIDI0NywgMzcsIDcxLCAxLCAKKyAgICAyMjcsIDI0OCwgNzEsIDEsIDIyNywgMjE1LCA3MSwgMSwgMjE4LCA2MCwgNzEsIDEsIDIxOCwgMjQzLCA3MSwgMSwgMjA0LCAKKyAgICAyNTMsIDcxLCAxLCAyMDQsIDI0MSwgNzEsIDEsIDI0MSwgMjIwLCA3MSwgMSwgMjQxLCAyMDQsIDcxLCAxLCAyMTksIDIxLCAKKyAgICA3MSwgMSwgMjA3LCAzNiwgNzEsIDEsIDIwNiwgMTIyLCA3MSwgMSwgMjQyLCA1OCwgNzEsIDEsIDI0MSwgMTAwLCA3MSwgMSwgCisgICAgMTg4LCA3MSwgMSwgMTcyLCA3MSwgMSwgMjE1LCAyNDUsIDcxLCAxLCAyNDksIDEzNiwgNzEsIDEsIDI0OCwgMjAwLCA3MSwgCisgICAgMSwgMTc4LCA3MSwgMSwgMTgzLCA3MSwgMSwgMjEzLCAyNTIsIDcxLCAxLCAxOTQsIDcxLCAxLCAyMDEsIDExNCwgNzEsIDEsIAorICAgIDIxMiwgNjQsIDcxLCAxLCAxNDQsIDcxLCAxLCAyMjQsIDEzOCwgNzEsIDEsIDYyLCA3MSwgMSwgMjEwLCA5MCwgNjIsIDcxLCAKKyAgICAxLCA3MCwgNzEsIDEsIDIyOCwgMTUxLCA3MSwgMSwgNjYsIDcxLCAxLCAyMDMsIDE4MiwgNzEsIDEsIDcyLCA3MSwgMSwgCisgICAgMjIxLCAxMDcsIDcyLCA3MSwgMSwgNzQsIDcxLCAxLCAyNTAsIDEzOSwgNzEsIDIyLCAyLCAyMDYsIDI0OCwgMjUyLCAxMzgsIAorICAgIDcxLCAyMiwgMiwgMjUyLCAxMzgsIDcxLCAyMiwgMiwgNzAsIDcxLCAyMiwgMiwgMjI4LCAxNTEsIDcxLCAyMiwgMiwgNjYsIAorICAgIDcxLCAyMiwgMiwgMjAzLCAxODIsIDcxLCAyMiwgMiwgNzIsIDcxLCAyMiwgMiwgMjUxLCAxNzYsIDcxLCAyMiwgMiwgMjIxLCAKKyAgICAxMDcsIDIyOCwgMTUxLCA3MSwgMjIsIDIsIDIyMSwgMTA3LCA3NCwgNzEsIDIyLCAyLCAxOTcsIDU2LCA3MSwgMiwgMjUxLCAKKyAgICAzMywgNzEsIDIsIDczLCA1NywgNzEsIDIsIDIwMiwgMjAzLCA3MSwgMiwgMjAyLCAyMDgsIDcxLCAyLCAyNTAsIDE4NSwgNzEsIAorICAgIDExMSwgMiwgMTc5LCAxODMsIDcxLCAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDcxLCAxMTEsIDIsIDE3OSwgMjAxLCAxMTQsIAorICAgIDcxLCAxMTEsIDIsIDE3OSwgMTQ0LCA3MSwgMSwgMjM1LCA2OSwgMjEyLCA2NCwgNzEsIDE3LCAxOTksIDgxLCA3MSwgMTcsIAorICAgIDEwMiwgNzEsIDE3LCAxMDUsIDcxLCAxNywgMTQ3LCA3MSwgMTcsIDE0OSwgNzEsIDE3LCAxNjQsIDcxLCAxNywgMTg3LCA3MSwgCisgICAgMTcsIDIxMCwgMTM1LCA3MSwgMTcsIDE5MiwgNzEsIDE3LCAyMTksIDExMywgNzEsIDIsIDIyNCwgMTQ4LCAyMTEsIDE5MiwgCisgICAgNzEsIDIsIDIxMSwgMTkyLCA3MSwgMTYsIDIyNCwgMTA1LCA3MSwgMTYsIDI0NiwgNjQsIDcxLCAxNiwgMjUxLCAxOTcsIDcxLCAKKyAgICAxNiwgMjM1LCAyNTQsIDcxLCAxLCAyMTAsIDExNCwgNzEsIDEsIDIwOCwgMTc5LCA3MSwgMSwgMTA5LCAxNDYsIDcxLCAxLCAKKyAgICAxMDksIDIxMiwgMjE2LCA3MSwgMSwgMTA5LCAxNTYsIDcxLCAxLCAxMDksIDIyNCwgMTM5LCA3MSwgMjIsIDIsIDEwOSwgCisgICAgMTQ2LCA3MSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDcxLCAyMiwgMiwgMTA5LCAxNTYsIDcxLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgNzEsIDEsIDIyMSwgMTA3LCAyMTksIDI1MywgNzEsIDEsIDIyMSwgMTA3LCAyMjcsIDIxNSwgNzEsIDEsIDIyMSwgCisgICAgMTA3LCAyNDksIDQ0LCA3MSwgMSwgMjIxLCAxMDcsIDI0OSwgMzksIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE4OCwgCisgICAgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTc4LCA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxOTQsIDcxLCAxLCAKKyAgICAyMTAsIDEyMCwgMjI3LCA0NCwgMjEwLCAxMTQsIDcxLCAyMiwgMiwgMjEwLCAxMjAsIDIyNywgNDQsIDIzOCwgNjksIDcxLCAKKyAgICAxNTAsIDEzNCwgMjEwLCAxMjAsIDIyNywgNDQsIDIzNCwgMTUzLCA3MSwgMTUwLCAxMzQsIDIxMCwgMTIwLCAyMjcsIDQ0LCAKKyAgICAyMjcsIDksIDIxNSwgMjE3LCA3MSwgMSwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNiwgMTIyLCA3MSwgMSwgCisgICAgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIxNCwgMTg1LCA3MSwgMjIsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIAorICAgIDQ0LCAyMzgsIDY5LCA3MSwgMjIsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDQsIDMxLCA3MSwgMiwgMjAxLCAKKyAgICA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTczLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgCisgICAgMTcyLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTcxLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAKKyAgICAxNzksIDIyNywgNDQsIDIwNSwgMTcwLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTY5LCA3MSwgCisgICAgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgNDQsIDIxOSwgMjEsIDcxLCAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCAKKyAgICA0NCwgMTk5LCAxNzQsIDcxLCAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCA0NCwgMjM1LCAxNjQsIDcxLCAyMiwgMiwgCisgICAgMjM2LCAxMSwgMjI3LCA0NCwgNzAsIDcxLCAyMiwgMiwgMjI3LCAxNCwgMjE3LCAxMjEsIDcxLCAyMiwgMiwgMjI3LCAxNCwgCisgICAgNjYsIDcxLCAyMiwgMiwgMjI3LCAxNCwgMjM4LCAyNTUsIDcxLCAxLCAyMTAsIDkwLCAxNjEsIDcxLCAxLCAyMTAsIDkwLCAKKyAgICAyMjYsIDIwNywgNzEsIDEsIDIxMCwgOTAsIDIzNiwgODksIDcxLCAxLCAyMTAsIDkwLCAyNDcsIDE5MCwgNzEsIDEsIDIxMCwgCisgICAgOTAsIDE5OSwgMTE0LCA3MSwgMSwgMjEwLCA5MCwgMjE4LCA2MCwgNzEsIDEsIDIxMCwgOTAsIDI0MiwgNTgsIDcxLCAxLCAKKyAgICAyMTAsIDkwLCAxODgsIDcxLCAxLCAyMTAsIDkwLCAyMTUsIDI0NSwgNzEsIDEsIDIxMCwgOTAsIDIzNywgMTk1LCA3MSwgMSwgCisgICAgMjEwLCA5MCwgMjQ5LCAxMzYsIDcxLCAxLCAyMTAsIDkwLCAyMDYsIDEyMiwgNzEsIDEsIDIxMCwgOTAsIDE0NCwgNzEsIAorICAgIDExMSwgMiwgMjEwLCA5MCwgMTc5LCAyMDEsIDExNCwgNzEsIDIyLCAyLCAyMTAsIDkwLCAyNTIsIDEzOCwgNzEsIDIyLCAyLCAKKyAgICAyMTAsIDkwLCA3MiwgNzEsIDIyLCAyLCAyMTAsIDkwLCAxOTcsIDU2LCA3MSwgMjIsIDIsIDIxMCwgOTAsIDQ3LCAyMDAsIAorICAgIDEyMywgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTcyLCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNzEsIDcxLCAyLCAyMTAsIDkwLCAKKyAgICAyMDUsIDE2OSwgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTY4LCA3MSwgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMDUsIDE3MiwgNzEsIAorICAgIDIsIDIxMCwgOTAsIDI0MywgNiwgMjA1LCAxNzEsIDcxLCAyLCAyMTAsIDkwLCAyNDMsIDYsIDIzOCwgMTgyLCAyMDUsIDE3NCwgCisgICAgNzEsIDEsIDIxMiwgMTYwLCAyMTYsIDE4MSwgMjM3LCAxOTUsIDcxLCAyLCAyMTIsIDE2MCwgMjE2LCAxODEsIDIwNSwgMTY5LCAKKyAgICA3MSwgMjEwLCA5MCwgMTcsIDE5OSwgODEsIDcxLCAyMTAsIDkwLCAxNywgMTAyLCA3MSwgMjEwLCA5MCwgMTcsIDEwNSwgNzEsIAorICAgIDIxMCwgOTAsIDE3LCAxNDcsIDcxLCAyMTAsIDkwLCAxNywgMTQ5LCA3MSwgMjEwLCA5MCwgMTcsIDE2NCwgNzEsIDIxMCwgCisgICAgOTAsIDE3LCAxODcsIDcxLCAyMTAsIDkwLCAxNywgMjEwLCAxMzUsIDcxLCAyMTAsIDkwLCAxNywgMTkyLCA3MSwgMjEwLCAKKyAgICA5MCwgMTcsIDIxOSwgMTEzLCA3MSwgMiwgMjI2LCAyMDAsIDIwNSwgMTczLCA3MSwgMiwgMjI2LCAyMDAsIDIwNSwgMTcxLCAKKyAgICA3MSwgMjIsIDIsIDI1MSwgMTYzLCA2MiwgNzEsIDIyLCAyLCAyNTEsIDE2MywgMjUxLCAxNzYsIDcxLCAxNiwgMjEwLCA5MCwgCisgICAgMTAyLCA3MSwgMTYsIDIxMCwgOTAsIDIzOCwgNDIsIDExOCwgNiwgMSwgMjUxLCA4NSwgMTE4LCA2LCAxLCAyNDksIDg4LCAKKyAgICAxMTgsIDYsIDEsIDIzNiwgNTksIDExOCwgNiwgMSwgMjQwLCAxOTAsIDExOCwgNiwgMSwgMjM4LCAxNzksIDExOCwgNiwgMSwgCisgICAgMjAyLCAyMTcsIDExOCwgNiwgMSwgMTk5LCA4NCwgMTE4LCA2LCAxLCAyMDYsIDI0NCwgMTE4LCA2LCAxLCAyMjgsIDExNywgCisgICAgMTE4LCA2LCAxLCAyMjcsIDY4LCAxMTgsIDYsIDEsIDIyNSwgNjUsIDExOCwgNiwgMSwgMjIyLCAxODAsIDExOCwgNiwgMSwgCisgICAgMjIwLCAxMjUsIDExOCwgNiwgMSwgMjE3LCA3OCwgMTE4LCA2LCAxLCAyMTYsIDEzMCwgMTE4LCA2LCAxLCAxOTksIDczLCAKKyAgICAxMTgsIDYsIDEsIDIxMywgMjM0LCAxMTgsIDYsIDEsIDIxMiwgMTMsIDExOCwgNiwgMSwgMjA2LCAyMzIsIDExOCwgNiwgMSwgCisgICAgMjA0LCA1LCAxMTgsIDYsIDEsIDIxNSwgMjM3LCAxMTgsIDYsIDEsIDIyNiwgMTk1LCAxMTgsIDYsIDEsIDIzNSwgMTkwLCAKKyAgICAxMTgsIDYsIDEsIDIxNCwgMTQ0LCAxMTgsIDYsIDEsIDIxMCwgMjEsIDExOCwgNiwgMSwgMjQ2LCAyMjMsIDExOCwgNiwgMSwgCisgICAgMjQ3LCAxNTgsIDExOCwgNiwgMSwgMjI3LCAxOTgsIDExOCwgNiwgMSwgMjQ2LCAxNjIsIDExOCwgNiwgMSwgMjQ3LCAyMSwgCisgICAgMTE4LCA2LCAxLCAyMDAsIDE3OSwgMTE4LCA2LCAxLCAyMjcsIDIxMiwgMTE4LCA2LCAxLCAyMzQsIDIzMCwgMTE4LCA2LCAxLCAKKyAgICAyMzQsIDEzOSwgMTE4LCA2LCAxLCAyMzQsIDY5LCAxMTgsIDYsIDEsIDIwMSwgNjQsIDExOCwgNiwgMSwgMjM0LCAxNjYsIAorICAgIDExOCwgNiwgMSwgMjMzLCAyMDMsIDExOCwgNiwgMSwgMTk5LCAyNDcsIDExOCwgNiwgMSwgMjUxLCAyMTAsIDExOCwgMSwgCisgICAgMjUxLCA4NSwgMTE4LCAxLCAyNDksIDg4LCAxMTgsIDEsIDIzNiwgNTksIDExOCwgMSwgMjQwLCAxOTAsIDExOCwgMSwgMjM4LCAKKyAgICAxNzksIDExOCwgMSwgMjAyLCAyMTcsIDExOCwgMSwgMTk5LCA4NCwgMTE4LCAxLCAyMDYsIDI0NCwgMTE4LCAxLCAyMjgsIAorICAgIDExNywgMTE4LCAxLCAyMjcsIDY4LCAxMTgsIDEsIDIyNSwgNjUsIDExOCwgMSwgMjIyLCAxODAsIDExOCwgMSwgMjIwLCAKKyAgICAxMjUsIDExOCwgMSwgMjE3LCA3OCwgMTE4LCAxLCAyMTYsIDEzMCwgMTE4LCAxLCAxOTksIDczLCAxMTgsIDEsIDIxMywgCisgICAgMjM0LCAxMTgsIDEsIDIxMiwgMTMsIDExOCwgMSwgMjA2LCAyMzIsIDExOCwgMSwgMjA0LCA1LCAxMTgsIDEsIDIxNSwgMjM3LCAKKyAgICAxMTgsIDEsIDIyNiwgMTk1LCAxMTgsIDEsIDIzNSwgMTkwLCAxMTgsIDEsIDIxNCwgMTQ0LCAxMTgsIDEsIDIxMCwgMjEsIAorICAgIDExOCwgMSwgMjQ2LCAyMjMsIDExOCwgMSwgMjQ3LCAxNTgsIDExOCwgMSwgMjI3LCAxOTgsIDExOCwgMSwgMjQ2LCAxNjIsIAorICAgIDExOCwgMSwgMjQ3LCAyMSwgMTE4LCAxLCAyMDAsIDE3OSwgMTE4LCAxLCAyMjcsIDIxMiwgMTE4LCAxLCAyMzQsIDIzMCwgCisgICAgMTE4LCAxLCAyMzQsIDEzOSwgMTE4LCAxLCAyMzQsIDY5LCAxMTgsIDEsIDIwMSwgNjQsIDExOCwgMSwgMjM0LCAxNjYsIAorICAgIDExOCwgMSwgMjMzLCAyMDMsIDExOCwgMSwgMjM3LCAxMTIsIDExOCwgMSwgMTk5LCAyNDcsIDExOCwgMSwgMjM4LCAxOTcsIAorICAgIDExOCwgMSwgMjA0LCAxODUsIDIzNiwgNTksIDExOCwgMSwgMjUxLCAxNzEsIDExOCwgMjE2LCAxMjgsIDIxMCwgMTU0LCA2NywgCisgICAgMSwgMTE4LCAyMjAsIDEyNSwgMTE4LCAxLCAyNTEsIDIxMCwgMTE4LCAxLCAyMzQsIDE2NSwgNTQsIDExOCwgMSwgMjI1LCAKKyAgICAxNjcsIDU0LCAyOSwgMTI5LCAyMjYsIDEyMSwgMjksIDEyOSwgMjA4LCAxNzEsIDI5LCAxMjksIDIxOSwgMTQzLCAyOSwgCisgICAgMTI5LCAyMDUsIDI1MywgMjksIDEyOSwgMjA4LCAxNjAsIDI5LCAxMjksIDIxMywgNzgsIDI5LCAxMjksIDIyMSwgMTk3LCAKKyAgICAyOSwgMTI5LCAyMTUsIDE5MCwgMjksIDEyOSwgMjA4LCAxNjgsIDI5LCAxMjksIDIwOSwgMTI5LCAyOSwgMTI5LCAyMDgsIAorICAgIDE2NSwgMjksIDEyOSwgMjI4LCAxNzQsIDI5LCAxMjksIDI0NiwgMTY4LCAyOSwgMTI5LCAyMDgsIDE3NSwgMjksIDEyOSwgCisgICAgMjQ2LCAyMzIsIDI5LCAxMjksIDIyNiwgMTgzLCAyOSwgMTI5LCAyMDYsIDgwLCAyOSwgMTI5LCAyMTUsIDIyNywgMjksIAorICAgIDEyOSwgMjM0LCA2NiwgMjksIDEyOSwgMjE5LCAxMzksIDI5LCAxMjksIDIwOCwgMTY5LCAyOSwgMTI5LCAyMTksIDEzMywgCisgICAgMjksIDEyOSwgMjE5LCAxMzcsIDI5LCAxMjksIDIwNSwgMjUwLCAyOSwgMTI5LCAyMTMsIDY2LCAyOSwgMTI5LCAyMDgsIAorICAgIDE2NywgMjksIDEyOSwgMjEzLCA3NiwgMjksIDEyOSwgMjI3LCA1MCwgMjksIDEyOSwgMjIxLCAxOTAsIDI5LCAxMjksIDIyNywgCisgICAgNTMsIDI5LCAxMjksIDIxNSwgMTg1LCAyOSwgMTI5LCAyMTUsIDE4MywgMjksIDEyOSwgMjE1LCAxNzEsIDI5LCAxMjksIAorICAgIDIxNSwgMTc5LCAyOSwgMTI5LCAyMTUsIDE3NywgMjksIDEyOSwgMjE1LCAxNzQsIDI5LCAxMjksIDIxNSwgMTc2LCAyOSwgCisgICAgMTI5LCAyMTUsIDE3MywgMjksIDEyOSwgMjE1LCAxNzgsIDI5LCAxMjksIDIxNSwgMTg4LCAyOSwgMTI5LCAyMTUsIDE4OSwgCisgICAgMjksIDEyOSwgMjE1LCAxNzIsIDI5LCAxMjksIDIxNSwgMTgyLCAyOSwgMTI5LCAyMjcsIDUxLCAyOSwgMTI5LCAyMjcsIDQ5LCAKKyAgICAyOSwgMTI5LCAyMDksIDEyMiwgMjksIDEyOSwgMjA5LCAxMjAsIDI5LCAxMjksIDIwOSwgMTEyLCAyOSwgMTI5LCAyMDksIAorICAgIDExNSwgMjksIDEyOSwgMjA5LCAxMjEsIDI5LCAxMjksIDIwOSwgMTE3LCAyOSwgMTI5LCAyMDksIDExNiwgMjksIDEyOSwgCisgICAgMjA5LCAxMTQsIDI5LCAxMjksIDIwOSwgMTI1LCAyOSwgMTI5LCAyMDksIDEyNywgMjksIDEyOSwgMjA5LCAxMjgsIDI5LCAKKyAgICAxMjksIDIwOSwgMTIzLCAyOSwgMTI5LCAyMDksIDExMywgMjksIDEyOSwgMjA5LCAxMTgsIDI5LCAxMjksIDIwOSwgMTI2LCAKKyAgICAyOSwgMTI5LCAyNDYsIDIxNCwgMjksIDEyOSwgMjQ2LCAyMTIsIDI5LCAxMjksIDI0NywgNDgsIDI5LCAxMjksIDI0NywgNDYsIAorICAgIDI5LCAxMjksIDIxNiwgMTQ2LCAyOSwgMTI5LCAyMjgsIDE2OSwgMjksIDEyOSwgMjI4LCAxNjAsIDI5LCAxMjksIDIyOCwgCisgICAgMTY4LCAyOSwgMTI5LCAyMjgsIDE2NSwgMjksIDEyOSwgMjI4LCAxNjMsIDI5LCAxMjksIDIyOCwgMTY3LCAyOSwgMTI5LCAKKyAgICAyMDgsIDE3MiwgMjksIDEyOSwgMjI4LCAxNzIsIDI5LCAxMjksIDIyOCwgMTczLCAyOSwgMTI5LCAyMjgsIDE2MSwgMjksIAorICAgIDEyOSwgMjI4LCAxNjYsIDI5LCAxMjksIDIwMCwgMjgsIDI5LCAxMjksIDI0NiwgMTY3LCAyOSwgMTI5LCAyNDYsIDIxNSwgCisgICAgMjksIDEyOSwgMjQ2LCAyMTMsIDI5LCAxMjksIDI0NywgNDksIDI5LCAxMjksIDI0NywgNDcsIDI5LCAxMjksIDI0NiwgMjMwLCAKKyAgICAyOSwgMTI5LCAyNDYsIDIzMSwgMjksIDEyOSwgMjQ2LCAyMTYsIDI5LCAxMjksIDI0NywgNTAsIDI5LCAxMjksIDIxNSwgCisgICAgMjI1LCAyOSwgMTI5LCAyMjcsIDUyLCAyOSwgMTI5LCAyMDgsIDE3MywgMjksIDEyOSwgMjAwLCAzNCwgMjksIDEyOSwgMjI2LCAKKyAgICAxMTIsIDI5LCAxMjksIDIxOSwgMTM1LCAyOSwgMTI5LCAyMTksIDE0MSwgMjksIDEyOSwgMjE5LCAxNDAsIDI5LCAxMjksIAorICAgIDIwNSwgMjQ3LCAyOSwgMTI5LCAyMzcsIDkzLCAyOSwgMTgxLCAyMzcsIDkzLCAyOSwgMTgxLCA2MiwgMjksIDE4MSwgMjUxLCAKKyAgICAyMjEsIDI5LCAxODEsIDE4MywgMjksIDE4MSwgMjAwLCA5OCwgMjksIDE4MSwgMjM4LCAxNDIsIDI5LCAxODEsIDcyLCAyOSwgCisgICAgMTgxLCAyMDAsIDM4LCAyOSwgMTgxLCAyMDAsIDUxLCAyOSwgMTgxLCA3NCwgMjksIDE4MSwgMjAxLCAxMTQsIDI5LCAxODEsIAorICAgIDIwMSwgMTEwLCAyOSwgMTgxLCAyMTcsIDEyMSwgMjksIDE4MSwgMTk5LCAyNDUsIDI5LCAxODEsIDY2LCAyOSwgMTgxLCAKKyAgICAyMDEsIDUwLCAyOSwgMTgxLCAyMDEsIDY0LCAyOSwgMTgxLCAyMDEsIDMxLCAyOSwgMTgxLCAxOTksIDIxMSwgMjksIDE4MSwgCisgICAgMjM4LCA2OSwgMjksIDE4MSwgMjAwLCA5LCAyOSwgMTgxLCA3MCwgMjksIDE4MSwgMjU1LCAxMzMsIDI5LCAxODEsIDI1NSwgCisgICAgMTMyLCAyOSwgMTgxLCAyMDAsIDExMiwgMjksIDE4MSwgMjAwLCAxMTAsIDI5LCAxODEsIDIzOCwgMTQwLCAyOSwgMTgxLCAKKyAgICAyMzgsIDEzOSwgMjksIDE4MSwgMjM4LCAxNDEsIDI5LCAxODEsIDIwMCwgMzcsIDI5LCAxODEsIDIwMCwgMzYsIDI5LCAxODEsIAorICAgIDIxNywgMjMwLCAyOSwgMTgxLCAyMTcsIDIzMSwgMjksIDE4MSwgMjE3LCAyMjQsIDI5LCAxODEsIDIxNywgMjI5LCAyOSwgCisgICAgMTgxLCAyMTcsIDIyNywgMjksIDE4MSwgMTk5LCAyMzksIDI5LCAxODEsIDE5OSwgMjM4LCAyOSwgMTgxLCAxOTksIDIzNywgCisgICAgMjksIDE4MSwgMTk5LCAyNDAsIDI5LCAxODEsIDE5OSwgMjQxLCAyOSwgMTgxLCAyMDQsIDEwNCwgMjksIDE4MSwgMjA0LCAKKyAgICAxMDMsIDI5LCAxODEsIDIwNCwgMTAxLCAyOSwgMTgxLCAyMDQsIDk3LCAyOSwgMTgxLCAyMDQsIDk4LCAyOSwgMTgxLCAxOTksIAorICAgIDIxMCwgMjksIDE4MSwgMTk5LCAyMDcsIDI5LCAxODEsIDE5OSwgMjA4LCAyOSwgMTgxLCAxOTksIDIwMiwgMjksIDE4MSwgCisgICAgMTk5LCAyMDMsIDI5LCAxODEsIDE5OSwgMjA0LCAyOSwgMTgxLCAxOTksIDIwNiwgMjksIDE4MSwgMjM4LCA2MywgMjksIAorICAgIDE4MSwgMjM4LCA2NSwgMjksIDE4MSwgMjAwLCA4LCAyOSwgMTgxLCAyMzMsIDE4LCAyOSwgMTgxLCAyMzMsIDEwLCAyOSwgCisgICAgMTgxLCAyMzMsIDEzLCAyOSwgMTgxLCAyMzMsIDExLCAyOSwgMTgxLCAyMzMsIDE1LCAyOSwgMTgxLCAyMzMsIDE3LCAyOSwgCisgICAgMTgxLCAyNTAsIDI0NSwgMjksIDE4MSwgMjUwLCAyNDIsIDI5LCAxODEsIDI1MCwgMjQwLCAyOSwgMTgxLCAyNTAsIDI0MSwgCisgICAgMjksIDE4MSwgMjA4LCAxNzYsIDI5LCAxODEsIDI1NSwgMTM0LCAyOSwgMTgxLCAyMDAsIDExMSwgMjksIDE4MSwgMjAwLCAKKyAgICAzNSwgMjksIDE4MSwgMjE3LCAyMjYsIDI5LCAxODEsIDIxNywgMjI1LCAyOSwgMTEwLCAyMjYsIDEyMSwgMjksIDExMCwgCisgICAgMjA4LCAxNzEsIDI5LCAxMTAsIDIyNiwgMTE0LCAyOSwgMTEwLCAyMTksIDE0MywgMjksIDExMCwgMjE5LCAxNDEsIDI5LCAKKyAgICAxMTAsIDIxOSwgMTQwLCAyOSwgMTEwLCAyMDUsIDI1MywgMjksIDExMCwgMjEzLCA3OCwgMjksIDExMCwgMjEzLCA3MywgMjksIAorICAgIDExMCwgMjEzLCA3MCwgMjksIDExMCwgMjEzLCA2MywgMjksIDExMCwgMjEzLCA1OCwgMjksIDExMCwgMjEzLCA1MywgMjksIAorICAgIDExMCwgMjEzLCA2NCwgMjksIDExMCwgMjEzLCA3NiwgMjksIDExMCwgMjIxLCAxOTcsIDI5LCAxMTAsIDIxNSwgMTkwLCAyOSwgCisgICAgMTEwLCAyMTUsIDE3OSwgMjksIDExMCwgMjA5LCAxMjksIDI5LCAxMTAsIDIwOCwgMTY1LCAyOSwgMTEwLCAyMjgsIDE3NCwgCisgICAgMjksIDExMCwgMjQ2LCAxNjgsIDI5LCAxMTAsIDI0NiwgMjMyLCAyOSwgMTEwLCAyMjYsIDE4MywgMjksIDExMCwgMjA2LCAKKyAgICA4MCwgMjksIDExMCwgMjE1LCAyMjcsIDI5LCAxMTAsIDIzNCwgNjYsIDI5LCAxMTAsIDIyNiwgMTE1LCAyOSwgMTEwLCAyMjYsIAorICAgIDExMywgMjksIDExMCwgMjE5LCAxMzksIDI5LCAxMTAsIDIxOSwgMTMzLCAyOSwgMTEwLCAyMTksIDEzNSwgMjksIDExMCwgCisgICAgMjE5LCAxMzgsIDI5LCAxMTAsIDIxOSwgMTM0LCAyOSwgMTEwLCAyMDUsIDI1MCwgMjksIDExMCwgMjA1LCAyNDcsIDI5LCAKKyAgICAxMTAsIDIxMywgNzEsIDI5LCAxMTAsIDIxMywgNjYsIDI5LCAxMTAsIDIxMywgNTIsIDI5LCAxMTAsIDIxMywgNTEsIDI5LCAKKyAgICAxMTAsIDIwOCwgMTY3LCAyOSwgMTEwLCAyMTMsIDY4LCAyOSwgMTEwLCAyMTMsIDY3LCAyOSwgMTEwLCAyMTMsIDYwLCAyOSwgCisgICAgMTEwLCAyMTMsIDYyLCAyOSwgMTEwLCAyMTMsIDc1LCAyOSwgMTEwLCAyMTMsIDU1LCAyOSwgMTEwLCAyMTMsIDY1LCAyOSwgCisgICAgMTEwLCAyMTMsIDc0LCAyOSwgMTEwLCAyMTMsIDUwLCAyOSwgMTEwLCAyMjEsIDE5MywgMjksIDExMCwgMjIxLCAxODgsIDI5LCAKKyAgICAxMTAsIDIyMSwgMTkwLCAyOSwgMTEwLCAyMjEsIDE4NywgMjksIDExMCwgMjIxLCAxODUsIDI5LCAxMTAsIDIyMSwgMTkxLCAKKyAgICAyOSwgMTEwLCAyMjEsIDE5NiwgMjksIDExMCwgMjIxLCAxOTQsIDI5LCAxMTAsIDIyNywgNTMsIDI5LCAxMTAsIDIxNSwgCisgICAgMTgxLCAyOSwgMTEwLCAyMTUsIDE4MiwgMjksIDExMCwgMjE1LCAxODcsIDI5LCAxMTAsIDIyNywgNTEsIDI5LCAxMTAsIAorICAgIDIwOSwgMTIyLCAyOSwgMTEwLCAyMDksIDExMiwgMjksIDExMCwgMjA5LCAxMTUsIDI5LCAxMTAsIDIwOSwgMTE3LCAyOSwgCisgICAgMTEwLCAyMTYsIDE0NiwgMjksIDExMCwgMjI4LCAxNjksIDI5LCAxMTAsIDIyOCwgMTYyLCAyOSwgMTEwLCAyMDgsIDE3MiwgCisgICAgMjksIDExMCwgMjI4LCAxNzAsIDI5LCAxMTAsIDIwMCwgMjgsIDI5LCAxMTAsIDIwMCwgMjQsIDI5LCAxMTAsIDIwMCwgMjUsIAorICAgIDI5LCAxMTAsIDIxNSwgMjI1LCAyOSwgMTEwLCAyMjcsIDUyLCAyOSwgMTEwLCAyMzQsIDY0LCAyOSwgMTEwLCAyMzQsIDYyLCAKKyAgICAyOSwgMTEwLCAyMzQsIDY1LCAyOSwgMTEwLCAyMzQsIDYzLCAyOSwgMTEwLCAyMDAsIDM0LCAyOSwgMTEwLCAyMjYsIDExNywgCisgICAgMjksIDExMCwgMjI2LCAxMTYsIDI5LCAxMTAsIDIyNiwgMTIwLCAyOSwgMTEwLCAyMjYsIDExOCwgMjksIDExMCwgMjI2LCAKKyAgICAxMTksIDI5LCAxMTAsIDIwOCwgMTY5LCAzNCwgNSwgMTQ0LCAzNCwgNSwgMjMzLCA5NywgMzQsIDUsIDIzNCwgNzUsIDM0LCAKKyAgICA1LCAyMzQsIDIzMywgMzQsIDUsIDIzNCwgMTIwLCAzNCwgNSwgMjM0LCAxMzksIDM0LCA1LCAyMzMsIDIwNywgMzQsIDUsIAorICAgIDIzMywgMjA2LCAzNCwgNSwgMTk0LCAzNCwgNSwgMjI0LCA0MiwgMzQsIDUsIDIyNCwgMjEwLCAzNCwgNSwgMjI1LCAxNzUsIAorICAgIDM0LCA1LCAyMjUsIDMyLCAzNCwgNSwgMjI1LCA0MCwgMzQsIDUsIDIyNCwgMTEwLCAzNCwgNSwgMjI0LCAxMCwgMzQsIDUsIAorICAgIDIzNCwgODQsIDM0LCA1LCAyMzQsIDc4LCAzNCwgNSwgMjM0LCA4MCwgMzQsIDUsIDIzNCwgODMsIDM0LCA1LCAyMzQsIDgxLCAKKyAgICAzNCwgNSwgMjM0LCA4MiwgMzQsIDUsIDIzNCwgNzksIDM0LCA1LCAyMzQsIDc3LCAzNCwgNSwgMTc4LCAzNCwgNSwgMjIxLCAKKyAgICA0MSwgMzQsIDUsIDIyMSwgMjExLCAzNCwgNSwgMjIyLCAyMzMsIDM0LCA1LCAyMjIsIDY0LCAzNCwgNSwgMjIyLCA3NiwgMzQsIAorICAgIDUsIDIyMSwgMTM2LCAzNCwgNSwgMjIwLCAyMzEsIDM0LCA1LCAyMDcsIDk0LCAzNCwgNSwgMjA3LCA4OCwgMzQsIDUsIDIwNywgCisgICAgOTAsIDM0LCA1LCAyMDcsIDkzLCAzNCwgNSwgMjA3LCA5MSwgMzQsIDUsIDIwNywgOTIsIDM0LCA1LCAyMDcsIDg5LCAzNCwgCisgICAgNSwgMjA3LCA4NywgMzQsIDUsIDIxMywgMjUyLCAzNCwgNSwgMjEyLCAxNzUsIDM0LCA1LCAyMTMsIDg4LCAzNCwgNSwgMjEzLCAKKyAgICAyNDgsIDM0LCA1LCAyMTMsIDE2NywgMzQsIDUsIDIxMywgMTkwLCAzNCwgNSwgMjEzLCAxLCAzNCwgNSwgMjEyLCAxNDAsIAorICAgIDM0LCA1LCAyMTIsIDY0LCAzNCwgNSwgMjA4LCAyNCwgMzQsIDUsIDIwOSwgMTgyLCAzNCwgNSwgMjEyLCA2MSwgMzQsIDUsIAorICAgIDIxMSwgMTkwLCAzNCwgNSwgMjExLCAyMDIsIDM0LCA1LCAyMDksIDI5LCAzNCwgNSwgMjA3LCAxODYsIDM0LCA1LCAyMTAsIAorICAgIDExNCwgMzQsIDUsIDIwOSwgMjIwLCAzNCwgNSwgMjEwLCAzMywgMzQsIDUsIDIxMCwgMTA5LCAzNCwgNSwgMjEwLCA2MywgCisgICAgMzQsIDUsIDIxMCwgNjUsIDM0LCA1LCAyMTAsIDgsIDM0LCA1LCAyMDksIDIwMCwgMzQsIDUsIDIxNCwgMTU5LCAzNCwgNSwgCisgICAgMjE0LCA5NywgMzQsIDUsIDIxNCwgMTIxLCAzNCwgNSwgMjE0LCAxNTgsIDM0LCA1LCAyMTQsIDEzOCwgMzQsIDUsIDIxNCwgCisgICAgMTM5LCAzNCwgNSwgMjE0LCAxMDksIDM0LCA1LCAyMTQsIDEwOCwgMzQsIDUsIDIxNCwgNTEsIDM0LCA1LCAyMTQsIDQ3LCAKKyAgICAzNCwgNSwgMjE0LCA1MCwgMzQsIDUsIDIxNCwgNDgsIDM0LCA1LCAyMTQsIDQ5LCAzNCwgNSwgMjE0LCAxMzUsIDM0LCA1LCAKKyAgICAyMTQsIDEyNywgMzQsIDUsIDIxNCwgMTMwLCAzNCwgNSwgMjE0LCAxMzQsIDM0LCA1LCAyMTQsIDEzMSwgMzQsIDUsIDIxNCwgCisgICAgMTMyLCAzNCwgNSwgMjE0LCAxMjksIDM0LCA1LCAyMTQsIDEyNiwgMzQsIDUsIDIxNCwgMTIyLCAzNCwgNSwgMjE0LCAxMjUsIAorICAgIDM0LCA1LCAyMTQsIDEyMywgMzQsIDUsIDIxNCwgMTI0LCAzNCwgNSwgMjQ5LCAxMzYsIDM0LCA1LCAyNDgsIDM2LCAzNCwgNSwgCisgICAgMjQ4LCAxODgsIDM0LCA1LCAyNDksIDEzNCwgMzQsIDUsIDI0OCwgMjUyLCAzNCwgNSwgMjQ5LCA4LCAzNCwgNSwgMjQ4LCAKKyAgICAxMjQsIDM0LCA1LCAyNDcsIDI0MCwgMzQsIDUsIDIwMywgOTAsIDM0LCA1LCAyMDEsIDE2NiwgMzQsIDUsIDIwMiwgMjM0LCAKKyAgICAzNCwgNSwgMjAzLCA4OSwgMzQsIDUsIDIwMywgNTQsIDM0LCA1LCAyMDMsIDU5LCAzNCwgNSwgMjAyLCAxOTMsIDM0LCA1LCAKKyAgICAyMDEsIDE1NywgMzQsIDUsIDIwNywgMzYsIDM0LCA1LCAyMDQsIDIxNSwgMzQsIDUsIDIwNiwgMTUsIDM0LCA1LCAyMDcsIAorICAgIDMyLCAzNCwgNSwgMjA2LCAxOTAsIDM0LCA1LCAyMDYsIDIwMSwgMzQsIDUsIDEzOCwgMzQsIDUsIDIwNCwgMTcwLCAzNCwgNSwgCisgICAgMjQ3LCAxOTAsIDM0LCA1LCAyNDIsIDIxNCwgMzQsIDUsIDI0NiwgMTczLCAzNCwgNSwgMjQ3LCAxODksIDM0LCA1LCAyNDcsIAorICAgIDY4LCAzNCwgNSwgMjQ3LCA3NiwgMzQsIDUsIDI0NiwgOTEsIDM0LCA1LCAyNDIsIDE3NiwgMzQsIDUsIDIwMCwgMTgxLCAzNCwgCisgICAgNSwgMjAwLCAxNTEsIDM0LCA1LCAyMDAsIDE2OSwgMzQsIDUsIDIwMCwgMTgwLCAzNCwgNSwgMjAwLCAxNzQsIDM0LCA1LCAKKyAgICAyMDAsIDE3NSwgMzQsIDUsIDIwMCwgMTU5LCAzNCwgNSwgMjAwLCAxNTgsIDM0LCA1LCAyMDAsIDE0NSwgMzQsIDUsIDIwMCwgCisgICAgMTQxLCAzNCwgNSwgMjAwLCAxNDQsIDM0LCA1LCAyMDAsIDE0MiwgMzQsIDUsIDIwMCwgMTQzLCAzNCwgNSwgMTg4LCAzNCwgCisgICAgNSwgMjE4LCAxMzMsIDM0LCA1LCAyMTksIDE1MCwgMzQsIDUsIDIyMCwgMTU3LCAzNCwgNSwgMjIwLCAyOSwgMzQsIDUsIAorICAgIDIyMCwgMzQsIDM0LCA1LCAyMTgsIDI0MSwgMzQsIDUsIDIxOCwgNjksIDM0LCA1LCAyMTgsIDYwLCAzNCwgNSwgMjE4LCAxOSwgCisgICAgMzQsIDUsIDIxOCwgNDEsIDM0LCA1LCAyMTgsIDU5LCAzNCwgNSwgMjE4LCA0OSwgMzQsIDUsIDIxOCwgNTAsIDM0LCA1LCAKKyAgICAyMTgsIDI2LCAzNCwgNSwgMjE4LCA5LCAzNCwgNSwgMjM1LCAxMjMsIDYyLCAzNCwgNSwgMjM1LCAxMjMsIDY2LCAzNCwgNSwgCisgICAgMjM1LCAxMjMsIDcwLCAzNCwgNSwgMjM1LCAxMjMsIDI1MiwgMTM4LCAzNCwgNSwgMjM1LCAxMjMsIDIzOCwgMjU1LCAzNCwgCisgICAgNSwgMjM1LCAxMjMsIDcyLCAzNCwgNSwgMjM1LCAxMjMsIDc0LCAzNCwgNSwgMjM1LCAxMjMsIDIwMSwgMTE0LCAzNCwgNSwgCisgICAgMTYxLCAzNCwgNSwgMjI2LCAxNSwgMzQsIDUsIDIyNiwgMTYzLCAzNCwgNSwgMjI3LCAxMDUsIDM0LCA1LCAyMjcsIDUsIDM0LCAKKyAgICA1LCAyMjcsIDgsIDM0LCA1LCAyMjYsIDg4LCAzNCwgNSwgMjI2LCA4NywgMzQsIDUsIDIyNSwgMjI5LCAzNCwgNSwgMjI1LCAKKyAgICAyMjIsIDM0LCA1LCAyMjUsIDIyOCwgMzQsIDUsIDIyNSwgMjIzLCAzNCwgNSwgMjI1LCAyMjQsIDM0LCA1LCAyMjUsIDIxNSwgCisgICAgMzQsIDUsIDIyNSwgMjA5LCAzNCwgNSwgMjI1LCAyMTEsIDM0LCA1LCAyMjUsIDIxNCwgMzQsIDUsIDIyNSwgMjEyLCAzNCwgCisgICAgNSwgMjI1LCAyMTMsIDM0LCA1LCAyMjUsIDIxMCwgMzQsIDUsIDIyNSwgMjA4LCAzNCwgNSwgMjI1LCAyMDQsIDM0LCA1LCAKKyAgICAyMjUsIDIwNywgMzQsIDUsIDIyNSwgMjA1LCAzNCwgNSwgMjI1LCAyMDYsIDM0LCA1LCAyMDEsIDExNCwgMzQsIDUsIDIwMCwgCisgICAgMjE2LCAzNCwgNSwgMjAxLCAzMSwgMzQsIDUsIDIwMSwgMTEzLCAzNCwgNSwgMjAxLCA1NywgMzQsIDUsIDIwMSwgNjQsIDM0LCAKKyAgICA1LCAyMDEsIDAsIDM0LCA1LCAyMDAsIDI1NSwgMzQsIDUsIDIxNSwgMjM2LCA2MiwgMzQsIDUsIDIxNSwgMjM2LCA2NiwgMzQsIAorICAgIDUsIDIxNSwgMjM2LCA3MCwgMzQsIDUsIDIxNSwgMjM2LCAyNTIsIDEzOCwgMzQsIDUsIDIxNSwgMjM2LCAyMzgsIDI1NSwgCisgICAgMzQsIDUsIDIxNSwgMjM2LCA3MiwgMzQsIDUsIDIxNSwgMjM2LCA3NCwgMzQsIDUsIDE5OSwgMTE0LCAzNCwgNSwgMTk5LCAzLCAKKyAgICAzNCwgNSwgMTk5LCAzNiwgMzQsIDUsIDE5OSwgMTEyLCAzNCwgNSwgMTk5LCA4NywgMzQsIDUsIDE5OSwgODksIDM0LCA1LCAKKyAgICAxOTksIDE0LCAzNCwgNSwgMTk4LCAyNDYsIDM0LCA1LCAxOTksIDc3LCAzNCwgNSwgMTk5LCA1NCwgMzQsIDUsIDE5OSwgNjMsIAorICAgIDM0LCA1LCAxOTksIDc2LCAzNCwgNSwgMTk5LCA2NywgMzQsIDUsIDE5OSwgNjgsIDM0LCA1LCAxOTksIDYwLCAzNCwgNSwgCisgICAgMTk5LCA0NSwgMzQsIDUsIDE4MywgMzQsIDUsIDE5OSwgMjExLCAzNCwgNSwgMjAwLCA5LCAzNCwgNSwgMjAwLCAxMDksIDM0LCAKKyAgICA1LCAyMDAsIDQ4LCAzNCwgNSwgMjAwLCA1MSwgMzQsIDUsIDE5OSwgMjQ1LCAzNCwgNSwgMTk5LCAyMzYsIDM0LCA1LCAyNDIsIAorICAgIDU4LCAzNCwgNSwgMjM5LCAxMzcsIDM0LCA1LCAyNDEsIDc2LCAzNCwgNSwgMjQyLCA1NywgMzQsIDUsIDI0MSwgMTYxLCAzNCwgCisgICAgNSwgMjQxLCAxNzUsIDM0LCA1LCAyNDAsIDIxMSwgMzQsIDUsIDIzOSwgMTA0LCAzNCwgNSwgMjQxLCAyMjAsIDM0LCA1LCAKKyAgICAyNDEsIDE4NSwgMzQsIDUsIDI0MSwgMTk3LCAzNCwgNSwgMjQxLCAyMTksIDM0LCA1LCAyNDEsIDIwNywgMzQsIDUsIDI0MSwgCisgICAgMjA4LCAzNCwgNSwgMjQxLCAxOTAsIDM0LCA1LCAyNDEsIDE3NiwgMzQsIDUsIDIyNywgMjQ4LCAzNCwgNSwgMjI3LCAxNDcsIAorICAgIDM0LCA1LCAyMjcsIDIwNywgMzQsIDUsIDIyNywgMjQ3LCAzNCwgNSwgMjI3LCAyMjUsIDM0LCA1LCAyMjcsIDIyNywgMzQsIAorICAgIDUsIDIyNywgMTY2LCAzNCwgNSwgMjI3LCAxMjYsIDM0LCA1LCAyMzYsIDg5LCAzNCwgNSwgMjM1LCA1MCwgMzQsIDUsIDIzNSwgCisgICAgMTYxLCAzNCwgNSwgMjM2LCA4NiwgMzQsIDUsIDIzNiwgNywgMzQsIDUsIDIzNiwgMTUsIDM0LCA1LCAyMzUsIDExNiwgMzQsIAorICAgIDUsIDIzNSwgMTE1LCAzNCwgNSwgMjM1LCAxMCwgMzQsIDUsIDIzNSwgNiwgMzQsIDUsIDIzNSwgOSwgMzQsIDUsIDIzNSwgNywgCisgICAgMzQsIDUsIDIzNSwgOCwgMzQsIDUsIDIzNSwgMjM1LCAzNCwgNSwgMjM1LCAyMTUsIDM0LCA1LCAyMzUsIDIyNSwgMzQsIDUsIAorICAgIDIzNSwgMjM0LCAzNCwgNSwgMjM1LCAyMjksIDM0LCA1LCAyMzUsIDIzMCwgMzQsIDUsIDIzNSwgMjE5LCAzNCwgNSwgMjM1LCAKKyAgICAyMDQsIDM0LCA1LCAyMDYsIDEyMiwgMzQsIDUsIDIwNiwgMzUsIDM0LCA1LCAyMDYsIDg0LCAzNCwgNSwgMjA2LCAxMjEsIAorICAgIDM0LCA1LCAyMDYsIDEwNCwgMzQsIDUsIDIwNiwgMTA2LCAzNCwgNSwgMjA2LCA2MSwgMzQsIDUsIDIwNiwgMjYsIDM0LCA1LCAKKyAgICAyNDcsIDM3LCAzNCwgNSwgMjQ2LCAxOTIsIDM0LCA1LCAyNDYsIDIzNiwgMzQsIDUsIDI0NywgMzYsIDM0LCA1LCAyNDcsIDQsIAorICAgIDM0LCA1LCAyNDcsIDgsIDM0LCA1LCAyNDYsIDIxMCwgMzQsIDUsIDI0NiwgMTgxLCAzNCwgNSwgMjE1LCAyNDUsIDM0LCA1LCAKKyAgICAyMTUsIDIxMCwgMzQsIDUsIDIxNSwgMjI5LCAzNCwgNSwgMjE1LCAyNDQsIDM0LCA1LCAyMTUsIDIzMSwgMzQsIDUsIDIxNSwgCisgICAgMjMyLCAzNCwgNSwgMjE1LCAyMTcsIDM0LCA1LCAyMTUsIDIwNiwgMzQsIDUsIDIwNSwgMzIsIDM0LCA1LCAyMDUsIDUsIDM0LCAKKyAgICA1LCAyMDUsIDExLCAzNCwgNSwgMjA1LCAzMSwgMzQsIDUsIDIwNSwgMjUsIDM0LCA1LCAyMDUsIDI2LCAzNCwgNSwgMjA1LCAKKyAgICA5LCAzNCwgNSwgMjA1LCAzLCAzNCwgNSwgMjA0LCAxMTMsIDM0LCA1LCAyMDQsIDEwNSwgMzQsIDUsIDIwNCwgMTA5LCAzNCwgCisgICAgNSwgMjA0LCAxMTIsIDM0LCA1LCAyMDQsIDExMCwgMzQsIDUsIDIwNCwgMTExLCAzNCwgNSwgMjA0LCAxMDcsIDM0LCA1LCAKKyAgICAyMDQsIDEwNiwgMzQsIDUsIDIzNywgMTk1LCAzNCwgNSwgMjM2LCAxODksIDM0LCA1LCAyMzcsIDExMiwgMzQsIDUsIDIzNywgCisgICAgMTk0LCAzNCwgNSwgMjM3LCAxNDAsIDM0LCA1LCAyMzcsIDE0NywgMzQsIDUsIDIzNywgMTMsIDM0LCA1LCAyMzYsIDE2NywgCisgICAgMzQsIDUsIDE3MiwgMzQsIDUsIDIxNCwgMjI0LCAzNCwgNSwgMjE1LCAyMDQsIDM0LCA1LCAyMTYsIDIxMCwgMzQsIDUsIAorICAgIDIxNiwgNjEsIDM0LCA1LCAyMTYsIDczLCAzNCwgNSwgMjE1LCAxMDYsIDM0LCA1LCAyMTQsIDE4NSwgMzQsIDUsIDIxMiwgCisgICAgMTMwLCAzNCwgNSwgMjIwLCAyMjAsIDM0LCA1LCAyMzYsIDE2MSwgMzQsIDM4LCAyMzYsIDMsIDI2LCAyMiwgMjI1LCAyLCAKKyAgICA4MSwgMzQsIDM4LCAyMiwgMjI1LCAyLCA4MSwgMzQsIDM4LCAyMzYsIDMsIDgxLCAzNCwgMjExLCAxOTMsIDgxLCAzNCwgCisgICAgMjAwLCAyMzcsIDM0LCAyMzYsIDE4MywgMjA4LCA3NiwgMzQsIDI0NiwgNzAsIDM0LCAyMTAsIDE2NywgMzQsIDI0NiwgNzksIAorICAgIDM0LCAyMTUsIDI1LCAyNDYsIDc5LCAzNCwgMjE0LCA3OSwgODEsIDM0LCAyMTYsIDEyOCwgMjEwLCAxNTQsIDM0LCAxNywgCisgICAgMTAyLCAzNCwgMTcsIDEwNSwgMzQsIDE3LCAxNDcsIDM0LCAxNywgMTQ5LCAzNCwgMTcsIDE2NCwgMzQsIDE3LCAxODcsIDM0LCAKKyAgICAxNywgMjEwLCAxMzUsIDM0LCAxNywgMTkyLCAzNCwgMTcsIDIxOSwgMTEzLCAzNCwgNDEsIDIwNiwgMTY2LCAzNCwgNDEsIAorICAgIDIwNCwgMTU5LCAzNCwgNDEsIDIwNiwgNjcsIDM0LCA0MSwgMjM2LCAyMzUsIDM0LCA0MSwgMjM3LCAxMDQsIDM0LCA0MSwgCisgICAgMjA5LCA5MiwgMzQsIDQxLCAyMTAsIDEyOSwgMzQsIDQxLCAyMzgsIDIyMiwgMzQsIDQxLCAyMTksIDEwOCwgMzQsIDQxLCAKKyAgICAyMzMsIDgyLCAzNCwgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAzNCwgNSwgMjExLCAxOTgsIDIyMCwgMjMxLCAzNCwgNSwgCisgICAgMjIwLCAyMjcsIDM0LCA1LCAyMjAsIDIyOCwgMzQsIDUsIDIyMCwgMjI5LCAzNCwgNSwgMjExLCAxOTgsIDI0NywgMjQwLCAKKyAgICAzNCwgNSwgMjQ3LCAyMzcsIDM0LCA1LCAyNDcsIDIzOCwgMzQsIDUsIDI0NywgMjM5LCAzNCwgNSwgMjExLCAxOTgsIDIzNiwgCisgICAgMTY3LCAzNCwgNSwgMjM2LCAxNjMsIDM0LCA1LCAyMzYsIDE2NCwgMzQsIDUsIDIzNiwgMTY1LCAzNCwgNSwgMjExLCAxOTgsIAorICAgIDIxNCwgMTg1LCAzNCwgNSwgMjE0LCAxODEsIDM0LCA1LCAyMTQsIDE4MiwgMzQsIDUsIDIxNCwgMTgzLCAzNCwgMjA1LCAKKyAgICAxNzUsIDEzNCwgMTk5LCAyNDgsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDEyMSwgMzQsIDIwNSwgMTc1LCAxMzQsIDIxMywgCisgICAgMzIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMDksIDI1MCwgMjEzLCAzMiwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgNTAsIDM0LCAKKyAgICAyMDUsIDE3NSwgMTM0LCAyMjYsIDI0MiwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0NiwgMjE4LCAzNCwgMjA1LCAxNzUsIDEzNCwgCisgICAgMjM0LCA3MSwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgMTIwLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjI1LCAyNDMsIDkxLCAxLCAKKyAgICA2MiwgOTEsIDEsIDcyLCA5MSwgMSwgNzAsIDkxLCAxLCA3NCwgOTEsIDEsIDY2LCA5MSwgMSwgMjAzLCAxNjgsIDkxLCAxLCAKKyAgICAyMzYsIDg5LCA5MSwgMSwgMTYxLCA5MSwgMSwgMjM2LCAxNSwgOTEsIDEsIDIzNSwgMTYxLCA5MSwgMSwgMjM1LCAxMTYsIAorICAgIDkxLCAxLCAyMzUsIDUwLCA5MSwgMSwgMjM1LCAxMiwgOTEsIDEsIDE0NCwgOTEsIDEsIDIzNCwgMTM5LCA5MSwgMSwgMjM0LCAKKyAgICA3NSwgOTEsIDEsIDIzMywgMjA3LCA5MSwgMSwgMjMzLCA5NywgOTEsIDEsIDIzMywgNjksIDkxLCAxLCAxOTQsIDkxLCAxLCAKKyAgICAyMjUsIDQwLCA5MSwgMSwgMjI0LCAyMTAsIDkxLCAxLCAyMjQsIDExMCwgOTEsIDEsIDIyNCwgNDIsIDkxLCAxLCAyMjQsIAorICAgIDExLCA5MSwgMSwgMTc4LCA5MSwgMSwgMjIyLCA3NiwgOTEsIDEsIDIyMSwgMjExLCA5MSwgMSwgMjIxLCAxMzYsIDkxLCAxLCAKKyAgICAyMjEsIDQxLCA5MSwgMSwgMTg4LCA5MSwgMSwgMjMzLCAyMzEsIDkxLCAxLCAyMjAsIDE0NCwgOTEsIDEsIDIyMCwgMzQsIAorICAgIDkxLCAxLCAyMTksIDE1MCwgOTEsIDEsIDIxOCwgMjQxLCA5MSwgMSwgMjE4LCAxMzMsIDkxLCAxLCAyMTgsIDcxLCA5MSwgMSwgCisgICAgMjE0LCA5NiwgOTEsIDEsIDIxNCwgODIsIDkxLCAxLCAyMTQsIDc1LCA5MSwgMSwgMjE0LCA2NiwgOTEsIDEsIDIxNCwgNTUsIAorICAgIDkxLCAxLCAyMTQsIDUzLCA5MSwgMSwgMjEyLCA2NCwgOTEsIDEsIDIxMiwgMTIyLCA5MSwgMSwgMjExLCAyMDIsIDkxLCAxLCAKKyAgICAyMDksIDE4MiwgOTEsIDEsIDIwOSwgMjksIDkxLCAxLCAyMDgsIDI0LCA5MSwgMSwgMjA3LCAxOTEsIDkxLCAxLCAyNDIsIAorICAgIDU4LCA5MSwgMSwgMjA3LCAzNiwgOTEsIDEsIDI0MSwgMTc1LCA5MSwgMSwgMjA2LCAyMDEsIDkxLCAxLCAyNDEsIDc2LCA5MSwgCisgICAgMSwgMjA2LCAxNSwgOTEsIDEsIDI0MCwgMjExLCA5MSwgMSwgMjM5LCAxMzcsIDkxLCAxLCAyMzksIDEwNywgOTEsIDEsIAorICAgIDI0MCwgMjIyLCA5MSwgMSwgMjA1LCAyMDMsIDkxLCAxLCAyMDUsIDIwMiwgOTEsIDEsIDIwNSwgMTkxLCA5MSwgMSwgMjA1LCAKKyAgICAxOTAsIDkxLCAxLCAyMDUsIDE4OSwgOTEsIDEsIDIwNSwgMTg4LCA5MSwgMSwgMjA1LCAzMiwgOTEsIDEsIDIwNSwgMjYsIAorICAgIDkxLCAxLCAyMDUsIDExLCA5MSwgMSwgMjA1LCA5LCA5MSwgMSwgMjA1LCA1LCA5MSwgMSwgMjA1LCA0LCA5MSwgMSwgMjAxLCAKKyAgICAxMTQsIDkxLCAxLCAyMDEsIDY0LCA5MSwgMSwgMjAxLCAzMSwgOTEsIDEsIDIwMSwgMCwgOTEsIDEsIDIwMCwgMjE2LCA5MSwgCisgICAgMSwgMjAwLCAyMDMsIDkxLCAxLCAxODMsIDkxLCAxLCAyMDAsIDUxLCA5MSwgMSwgMjAwLCA5LCA5MSwgMSwgMTk5LCAyNDUsIAorICAgIDkxLCAxLCAxOTksIDIxMSwgOTEsIDEsIDE5OSwgMTc1LCA5MSwgMSwgMjIwLCAyMzgsIDkxLCA0LCAxLCAyMDAsIDUxLCA5MSwgCisgICAgNCwgMSwgMjAwLCA5LCA5MSwgNCwgMSwgMTk5LCAyNDUsIDkxLCA0LCAxLCAxOTksIDIxMSwgOTEsIDQsIDEsIDE5OSwgMTc1LCAKKyAgICA5MSwgNCwgMSwgMjIwLCAyMzgsIDIwLCAyMSwgMjMzLCAzMywgMjAsIDIxLCA3MiwgMjAsIDIxLCAyNTIsIDEwMiwgMjAsIAorICAgIDIxLCA3MCwgMjAsIDIxLCAyMjgsIDE1MSwgMjAsIDIxLCA3NCwgMjAsIDIxLCAyMTcsIDYzLCAyMCwgMjEsIDIwMCwgMTIyLCAKKyAgICAyMTcsIDYzLCAyMCwgMjEsIDg5LCAyMzgsIDI1NSwgMjAsIDIxLCA4OSwgNzAsIDIwLCAyMSwgNjIsIDIwLCAyMSwgMjUyLCAKKyAgICAxMzgsIDIwLCAyMSwgMjAxLCA2NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDY0LCAyMCwgMjEsIDIwMSwgMzEsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjAxLCAzMSwgMjAsIDIxLCAyMDEsIDIwLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMjAsIDIwLCAyMSwgMjAxLCAKKyAgICAwLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMCwgMjAsIDIxLCAyMDAsIDI0NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDAsIDI0NCwgCisgICAgMjAsIDIxLCAyMjAsIDExOSwgMjAwLCAyNDQsIDIwLCAyMSwgMjAxLCAxMTQsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAxMTQsIAorICAgIDIwLCAyMSwgMjAxLCAxMTMsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAxMTMsIDIwLCAyMSwgMjIwLCAxMTksIDIwMSwgMTEzLCAKKyAgICAyMCwgMjEsIDI1MSwgMTc2LCAyMCwgMjEsIDIwMCwgMTIyLCAyMDEsIDE0NywgMjAsIDIxLCAyMzUsIDEyMywgMjA4LCA3NiwgCisgICAgMjAsIDIxLCA0NywgMTY5LCAyMCwgMjEsIDQ3LCAyMzUsIDczLCAyMCwgMjEsIDQ3LCAyNDgsIDkzLCAxNjcsIDIxMywgMjYsIAorICAgIDIwLCAyMSwgNDcsIDIwNSwgMTU4LCAxNjcsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDUxLCAxNjcsIDIxMywgMjYsIDIwLCAyMSwgCisgICAgNDcsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDUzLCAxNjksIDIwLCAyMSwgNDcsIDUzLCAyMDksIDI1MCwgODMsIDIwOCwgMzQsIAorICAgIDIwLCAyMSwgNDcsIDEwMSwgMjQwLCAxODIsIDIwLCAyMSwgNDcsIDIwOSwgMjUwLCAyMzMsIDE3NywgOTcsIDIwLCAyMSwgCisgICAgNDcsIDIxNSwgMTEzLCAyMCwgMjEsIDQ3LCAxMjcsIDIwNywgMTcsIDIwLCAyMSwgMjM4LCAxNzksIDIwLCAyMSwgMjI4LCAKKyAgICAxMTcsIDIwLCAyMSwgMjE3LCA3OCwgMjAsIDIxLCAyNTEsIDg1LCAyMCwgMjEsIDIxNiwgNzMsIDIwLCAyMSwgMjE2LCAyMDgsIAorICAgIDIwLCAyMSwgMjE1LCAyMDQsIDIwLCAyMSwgMjE1LCAxNjYsIDIwLCAyMSwgMjE1LCAxMDYsIDIwLCAyMSwgMjE1LCA4MSwgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjE1LCA4MSwgMjAsIDIxLCA4OSwgMjM0LCAxMjAsIDIwLCAyMSwgODksIDIzNCwgNzUsIDIwLCAKKyAgICAyMSwgMTcyLCAyMCwgMjEsIDIxNiwgMjEwLCAyMCwgMjEsIDIxNCwgMTgzLCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTgzLCAKKyAgICAyMCwgMjEsIDIxNCwgMTgxLCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTgxLCAyMCwgMjEsIDIxNCwgMTgwLCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIxNCwgMTgwLCAyMCwgMjEsIDIxNCwgMTc4LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTc4LCAyMCwgMjEsIAorICAgIDIxNCwgMTc3LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTc3LCAyMCwgMjEsIDIxNCwgMTg1LCAyMCwgMjEsIDIwMSwgNDYsIAorICAgIDIxNCwgMTg1LCAyMCwgMjEsIDIxNCwgMTg0LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTg0LCAyMCwgMjEsIDIwMCwgMTIyLCAKKyAgICAyMTQsIDE4NCwgMjAsIDIxLCAyMTYsIDIyNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMTYsIDIyNiwgMjAsIDIxLCA4OSwgMjM0LCAKKyAgICAyNDcsIDIwLCAyMSwgMjA2LCAyMDEsIDIwLCAyMSwgMjA3LCAzMCwgMjAsIDIxLCAyMDYsIDE1LCAyMCwgMjEsIDIwNSwgCisgICAgMjU1LCAyMCwgMjEsIDEzOCwgMjAsIDIxLCAyMDUsIDE2MSwgMjAsIDIxLCAyMDAsIDEyMiwgMjA1LCAxNjEsIDIwLCAyMSwgCisgICAgODksIDI0MSwgMTYxLCAyMCwgMjEsIDg5LCAyNDEsIDc2LCAyMCwgMjEsIDIwNywgMzYsIDIwLCAyMSwgMjA3LCAzMiwgMjAsIAorICAgIDIxLCAyMDQsIDE2OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE2OCwgMjAsIDIxLCAyMDQsIDE0NywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDQsIDE0NywgMjAsIDIxLCAyMDQsIDE0NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE0NiwgMjAsIDIxLCAxMDUsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMTA1LCAyMCwgMjEsIDIwNCwgMTM3LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTM3LCAyMCwgCisgICAgMjEsIDIwNCwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTcwLCAyMCwgMjEsIDIwNCwgMTY5LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNCwgMTY5LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDQsIDE2OSwgMjAsIDIxLCAyMDcsIDgzLCAyMCwgMjEsIDIwNCwgCisgICAgMjQ4LCAyMCwgMjEsIDIwNCwgMjMyLCAyMCwgMjEsIDIwNCwgMjMwLCAyMCwgMjEsIDIwNCwgMjUzLCAyMCwgMjEsIDIyNywgCisgICAgOCwgMjAsIDIxLCAyMjcsIDEwMCwgMjAsIDIxLCAyMjYsIDE2MywgMjAsIDIxLCAyMjYsIDE1MCwgMjAsIDIxLCAyMjYsIDg4LCAKKyAgICAyMCwgMjEsIDIyNiwgNjgsIDIwLCAyMSwgMjAwLCAxMjIsIDIyNiwgNjgsIDIwLCAyMSwgMTYxLCAyMCwgMjEsIDIyNywgCisgICAgMTA1LCAyMCwgMjEsIDIyNSwgMjI0LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI0LCAyMCwgMjEsIDIyNSwgMjIyLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIyNSwgMjIyLCAyMCwgMjEsIDIyNSwgMjIxLCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjIxLCAyMCwgCisgICAgMjEsIDIyNSwgMjE5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjE5LCAyMCwgMjEsIDIyNSwgMjE4LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyNSwgMjE4LCAyMCwgMjEsIDIyNSwgMjI5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI5LCAyMCwgMjEsIDIyNSwgCisgICAgMjI4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMjUsIDIyOCwgMjAsIDIxLCAyMjcsIAorICAgIDExOCwgMjAsIDIxLCAyMjUsIDIzMCwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCAyNTQsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgCisgICAgMTUxLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIDgyLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjcsIDg0LCAyMCwgMjEsIDI0NywgCisgICAgNzYsIDIwLCAyMSwgMjQ3LCAxODgsIDIwLCAyMSwgMjQ2LCAxNzMsIDIwLCAyMSwgMjQ2LCAxNjMsIDIwLCAyMSwgMjQ2LCAKKyAgICA5MSwgMjAsIDIxLCAyNDMsIDMwLCAyMCwgMjEsIDIwMCwgMTIyLCAyNDMsIDMwLCAyMCwgMjEsIDI0NywgMTkwLCAyMCwgMjEsIAorICAgIDI0NywgMTg5LCAyMCwgMjEsIDI0MiwgMTc0LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc0LCAyMCwgMjEsIDI0MiwgMTcyLCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcyLCAyMCwgMjEsIDI0MiwgMTcxLCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcxLCAKKyAgICAyMCwgMjEsIDI0MiwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcwLCAyMCwgMjEsIDI0MiwgMTY5LCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDI0MiwgMTY5LCAyMCwgMjEsIDI0MiwgMTc2LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc2LCAyMCwgMjEsIAorICAgIDI0MiwgMTc1LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc1LCAyMCwgMjEsIDIyMCwgMTE5LCAyNDIsIDE3NSwgMjAsIDIxLCAKKyAgICAyNDcsIDIyMywgMjAsIDIxLCAyMTEsIDIzMiwgMjA2LCAxMjQsIDIwLCAyMSwgMjIyLCA3NiwgMjAsIDIxLCAyMjIsIDIzMiwgCisgICAgMjAsIDIxLCAyMjEsIDIxMSwgMjAsIDIxLCAyMjEsIDE4MSwgMjAsIDIxLCAyMjEsIDEzNiwgMjAsIDIxLCAyMjEsIDg3LCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMjEsIDg3LCAyMCwgMjEsIDE3OCwgMjAsIDIxLCAyMjIsIDIzMywgMjAsIDIxLCAyMjAsIAorICAgIDIyOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyOSwgMjAsIDIxLCAyMjAsIDIyNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIAorICAgIDIyNywgMjAsIDIxLCAyMjAsIDIyNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNiwgMjAsIDIxLCAyMjAsIDIyNSwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNSwgMjAsIDIxLCAyMjAsIDIyNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNCwgMjAsIAorICAgIDIxLCAyMjAsIDIzMSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIzMSwgMjAsIDIxLCAyMjAsIDIzMCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjAsIDIzMCwgMjAsIDIxLCAyMjAsIDExOSwgMjIwLCAyMzAsIDIwLCAyMSwgMjIzLCAyNDMsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjIzLCAyNDMsIDIwLCAyMSwgMjIxLCAyMTUsIDIwLCAyMSwgMjUwLCAxNTMsIDIyMywgMjQzLCAyMCwgMjEsIDIxMSwgCisgICAgMjMyLCAyMjMsIDI0MywgMjAsIDIxLCAyMjAsIDM0LCAyMCwgMjEsIDIyMCwgMTU2LCAyMCwgMjEsIDIxOSwgMTUwLCAyMCwgCisgICAgMjEsIDIxOSwgMTI1LCAyMCwgMjEsIDIxOCwgMjQxLCAyMCwgMjEsIDIxOCwgMjI5LCAyMCwgMjEsIDIwMCwgMTIyLCAyMTgsIAorICAgIDIyOSwgMjAsIDIxLCAxODgsIDIwLCAyMSwgMjIwLCAxNTcsIDIwLCAyMSwgMjE4LCA2NywgMjAsIDIxLCAyMDEsIDQ2LCAKKyAgICAyMTgsIDY3LCAyMCwgMjEsIDIxOCwgNjksIDIwLCAyMSwgMjAxLCA0NiwgMjE4LCA2OSwgMjAsIDIxLCAyMTgsIDY4LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIxOCwgNjgsIDIwLCAyMSwgMjIwLCAxMTksIDIxOCwgNjgsIDIwLCAyMSwgMjIwLCAyMTQsIDIwLCAKKyAgICAyMSwgODksIDIxOSwgMjU1LCAyMCwgMjEsIDIxOSwgMTU1LCAyMCwgMjEsIDIyNSwgNDAsIDIwLCAyMSwgMjI1LCAxNzQsIAorICAgIDIwLCAyMSwgMjI0LCAyMTAsIDIwLCAyMSwgMjI0LCAxOTIsIDIwLCAyMSwgMjI0LCAxMTAsIDIwLCAyMSwgMjI0LCA3OCwgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjI0LCA3OCwgMjAsIDIxLCAxOTQsIDIwLCAyMSwgMjI1LCAxNzUsIDIwLCAyMSwgMjI0LCA4LCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgOCwgMjAsIDIxLCAyMjQsIDcsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA3LCAyMCwgMjEsIAorICAgIDIyNCwgNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDYsIDIwLCAyMSwgMjI0LCA1LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNSwgCisgICAgMjAsIDIxLCAyMjQsIDQsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA0LCAyMCwgMjEsIDIyNCwgMTAsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjI0LCAxMCwgMjAsIDIxLCAyMjQsIDksIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA5LCAyMCwgMjEsIDE1NiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAxNTYsIDIwLCAyMSwgMTc5LCAxNTYsIDIwLCAyMSwgMjExLCAyMDIsIDIwLCAyMSwgMjEyLCA1OSwgCisgICAgMjAsIDIxLCAyMDksIDE4MiwgMjAsIDIxLCAyMDksIDE2MSwgMjAsIDIxLCAyMDksIDI5LCAyMCwgMjEsIDIwOSwgMTAsIDIwLCAKKyAgICAyMSwgMjAwLCAxMjIsIDIwOSwgMTAsIDIwLCAyMSwgMjEyLCA2NCwgMjAsIDIxLCAyMTIsIDYxLCAyMCwgMjEsIDIwNywgCisgICAgMTgyLCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTgyLCAyMCwgMjEsIDIwNywgMTc2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgCisgICAgMTc2LCAyMCwgMjEsIDIwNywgMTc1LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTc1LCAyMCwgMjEsIDIwNywgMTcxLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIwNywgMTcxLCAyMCwgMjEsIDIwNywgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTcwLCAyMCwgCisgICAgMjEsIDIwNywgMTg2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTg2LCAyMCwgMjEsIDIwNywgMTg1LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNywgMTg1LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDcsIDE4NSwgMjAsIDIxLCAyMTIsIDEyMiwgMjAsIDIxLCAyNTAsIAorICAgIDE1MywgMjEyLCAxMjIsIDIwLCAyMSwgMjA3LCAxODcsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxMiwgMTIyLCAyMCwgMjEsIDIyMSwgCisgICAgODAsIDIwOSwgODgsIDIwLCAyMSwgMjIwLCAxMTksIDIwOSwgNzksIDIwLCAyMSwgMjIwLCAxMTksIDIxMiwgMTIwLCAyMCwgCisgICAgMjEsIDIyMCwgMTE5LCAyMDgsIDE5NSwgMjAsIDIxLCAyMjAsIDExOSwgMjA4LCAyNywgMjAsIDIxLCAyMjAsIDExOSwgMjA5LCAKKyAgICA3OCwgMjAsIDIxLCAyMjAsIDExOSwgMjExLCAyMDUsIDIwLCAyMSwgMjEwLCA2NSwgMjAsIDIxLCAyMTAsIDMzLCAyMCwgMjEsIAorICAgIDIxMCwgMjgsIDIwLCAyMSwgMjEwLCA4LCAyMCwgMjEsIDIxMCwgMiwgMjAsIDIxLCAyMTAsIDExNCwgMjAsIDIxLCAyMTAsIAorICAgIDEwOSwgMjAsIDIxLCAyMDksIDE5NywgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NywgMjAsIDIxLCAyMDksIDE5NiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMDksIDE5NiwgMjAsIDIxLCAyMDksIDE5NSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NSwgMjAsIAorICAgIDIxLCAyMDksIDE5NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NCwgMjAsIDIxLCAyMDksIDE5MywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDksIDE5MywgMjAsIDIxLCAyMDksIDIwMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDIwMCwgMjAsIDIxLCAyMDksIAorICAgIDE5OSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5OSwgMjAsIDIxLCAyMTAsIDExNiwgMjAsIDIxLCAyMDAsIDUxLCAyMCwgCisgICAgMjEsIDIwMCwgMTA3LCAyMCwgMjEsIDIwMCwgOSwgMjAsIDIxLCAyMDAsIDAsIDIwLCAyMSwgMTk5LCAyNDUsIDIwLCAyMSwgCisgICAgMTk5LCAyMzAsIDIwLCAyMSwgMjAwLCAxMjIsIDE5OSwgMjMwLCAyMCwgMjEsIDE4MywgMjAsIDIxLCAyMDAsIDEwOSwgMjAsIAorICAgIDIxLCAxOTksIDE3MiwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3MiwgMjAsIDIxLCAxOTksIDE3MSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAxOTksIDE3MSwgMjAsIDIxLCAxOTksIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3MCwgMjAsIDIxLCAxOTksIAorICAgIDE2OSwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE2OSwgMjAsIDIxLCAxOTksIDE2OCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIAorICAgIDE2OCwgMjAsIDIxLCAxOTksIDE3NCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3NCwgMjAsIDIxLCAxOTksIDE3MywgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAxOTksIDE3MywgMjAsIDIxLCAyMjAsIDExOSwgMTk5LCAxNzMsIDIwLCAyMSwgMjAwLCAxMjMsIDIwLCAKKyAgICAyMSwgMjQ4LCAxODYsIDIwMCwgMTIzLCAyMCwgMjEsIDIwMSwgNDYsIDIwMCwgMTIzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMDAsIAorICAgIDksIDIwLCAyMSwgMjEzLCAxOTAsIDIwLCAyMSwgMjE0LCAzMiwgMjEzLCAxOTAsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCA0MCwgCisgICAgMjAsIDIxLCAyMTMsIDI0NywgMjAsIDIxLCAyMTMsIDg4LCAyMCwgMjEsIDIxMywgMzMsIDIwLCAyMSwgMjEzLCAxLCAyMCwgCisgICAgMjEsIDIxMiwgMjM4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgMTEwLCAyMCwgMjEsIDIxMywgMjUyLCAyMCwgMjEsIDIxMywgCisgICAgMjQ4LCAyMCwgMjEsIDIwMSwgNDYsIDE5NCwgMjAsIDIxLCAyMTIsIDEzOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTIsIDEzOSwgCisgICAgMjAsIDIxLCAxNDYsIDIwLCAyMSwgMjAxLCA0NiwgMTQ2LCAyMCwgMjEsIDE3OSwgMTQ2LCAyMCwgMjEsIDIzNywgMTQ3LCAKKyAgICAyMCwgMjEsIDIzNywgMTkyLCAyMCwgMjEsIDIzNywgMTEyLCAyMCwgMjEsIDIzNywgOTgsIDIwLCAyMSwgMjM3LCAxMywgMjAsIAorICAgIDIxLCAyMzcsIDIsIDIwLCAyMSwgMjM3LCAxOTUsIDIwLCAyMSwgMjM3LCAxOTQsIDIwLCAyMSwgMjM2LCAxNjYsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjM2LCAxNjYsIDIwLCAyMSwgMjM4LCA1LCAyMCwgMjEsIDIwNiwgMTA2LCAyMCwgMjEsIDIyMCwgMjEyLCAKKyAgICAyMDYsIDEwNiwgMjAsIDIxLCAyMDYsIDg0LCAyMCwgMjEsIDIyMCwgMjEyLCAyMDYsIDg0LCAyMCwgMjEsIDIwNiwgNzgsIAorICAgIDIwLCAyMSwgMjIwLCAyMTIsIDIwNiwgNzgsIDIwLCAyMSwgMjA2LCA2MSwgMjAsIDIxLCAyMDYsIDU2LCAyMCwgMjEsIDIwNiwgCisgICAgMTIyLCAyMCwgMjEsIDIwNiwgMTIxLCAyMCwgMjEsIDIwNiwgMjUsIDIwLCAyMSwgMjAxLCA0NiwgMjA2LCAyNSwgMjAsIDIxLCAKKyAgICAyMDYsIDEyNCwgMjAsIDIxLCAyMDQsIDIzOSwgMjAsIDIxLCAyMDQsIDIzNywgMjAsIDIxLCAyMDQsIDIzNiwgMjAsIDIxLCAKKyAgICAyMDQsIDI0MSwgMjAsIDIxLCAyMDQsIDI0MiwgMjAsIDIxLCAyMDQsIDEzMSwgMjAsIDIxLCAyMDQsIDEzMCwgMjAsIDIxLCAKKyAgICAyMDQsIDEyOSwgMjAsIDIxLCAyMDQsIDEzMywgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDEzOSwgMjAsIDIxLCAyMTgsIDg4LCAKKyAgICAyMzQsIDc1LCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgNTQsIDIwLCAyMSwgMjE4LCA4OCwgMjMzLCAyMDcsIDIwLCAyMSwgCisgICAgMjE4LCA4OCwgMjMzLCAxODgsIDIwLCAyMSwgMjE4LCA4OCwgMTQ0LCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgMjMzLCAyMCwgCisgICAgMjEsIDIxOCwgODgsIDIzNCwgMjQ3LCAyMCwgMjEsIDIxOCwgODcsIDIzNCwgMjQ3LCAyMCwgMjEsIDIzNCwgNDEsIDIwLCAKKyAgICAyMSwgMjE0LCAxNTUsIDIwLCAyMSwgMjE0LCAxMjEsIDIwLCAyMSwgMjE0LCAxMTUsIDIwLCAyMSwgMjE0LCAxMDksIDIwLCAKKyAgICAyMSwgMjE0LCAxMDQsIDIwLCAyMSwgMjE0LCAxNTksIDIwLCAyMSwgMjE0LCAxNTgsIDIwLCAyMSwgMjE0LCAxNjcsIDIwLCAKKyAgICAyMSwgMjA1LCAxOTksIDIwLCAyMSwgMjA1LCAxOTcsIDIwLCAyMSwgMjA1LCAxOTYsIDIwLCAyMSwgMjA1LCAyMDAsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjEzLCAxOTAsIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCA4OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDEsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCAyNTIsIDIwLCAyMSwgMjE5LCAyNTEsIDIwLCAyMSwgMjE5LCAyMDEsIDIwLCAyMSwgCisgICAgMjE5LCAxOTcsIDIwLCAyMSwgMjE5LCAxNzgsIDIwLCAyMSwgMjE5LCAxNzMsIDIwLCAyMSwgMjE5LCAyNTMsIDIwLCAyMSwgCisgICAgMjE5LCAyNTIsIDIwLCAyMSwgMjE5LCAyNTUsIDIwLCAyMSwgMjE5LCAxNCwgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCA2NSwgCisgICAgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCAzMywgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCA4LCAyMCwgMjEsIDIxMSwgMjMyLCAKKyAgICAyMTAsIDExNCwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAxMDYsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgODQsIDIwLCAyMSwgCisgICAgMjAwLCAyNDIsIDIwNiwgNjEsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMTIyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIAorICAgIDEyNCwgMjAsIDIxLCAyMjQsIDIxNywgMjAsIDIxLCAyMjQsIDIxNiwgMjAsIDIxLCAyMjQsIDIxNSwgMjAsIDIxLCAyMjQsIAorICAgIDIxNCwgMjAsIDIxLCAyMjQsIDIyMywgMjAsIDIxLCAyMjQsIDIyMiwgMjAsIDIxLCAyMjQsIDIyNCwgMjAsIDIxLCAyMDYsIAorICAgIDEyMywgMjA2LCAxMDYsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgODQsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgNzgsIDIwLCAKKyAgICAyMSwgMjA2LCAxMjMsIDIwNiwgNjEsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgNTYsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgCisgICAgMTIyLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDEyMSwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAxMjQsIDIwLCAyMSwgMjUxLCAKKyAgICAxNjIsIDI1MCwgMTAzLCAyMCwgMjEsIDI0OCwgMTQxLCA3MiwgMjAsIDIxLCAyNDgsIDE0MSwgNzAsIDIwLCAyMSwgMjQ4LCAKKyAgICAxNDEsIDc0LCAyMCwgMjEsIDI0OCwgMTQxLCA2MiwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCA2NCwgMjAsIDIxLCAyNDgsIAorICAgIDE0MSwgMjAxLCAzMSwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAwLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDExNCwgMjAsIAorICAgIDIxLCAyNDgsIDE0MSwgMjIwLCAzNCwgMjAsIDIxLCAyNDgsIDE0MSwgMjE5LCAxNTAsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxOCwgCisgICAgMjQxLCAyMCwgMjEsIDI0OCwgMTQxLCAxODgsIDIwLCAyMSwgMjQ4LCAxNDEsIDIyNywgOCwgMjAsIDIxLCAyNDgsIDE0MSwgCisgICAgMjI2LCAxNjMsIDIwLCAyMSwgMjQ4LCAxNDEsIDIyNiwgODgsIDIwLCAyMSwgMjQ4LCAxNDEsIDE2MSwgMjAsIDIxLCAyMTEsIAorICAgIDIzMiwgMjM0LCAxMzksIDIwLCAyMSwgMjExLCAyMzIsIDIzNCwgNzUsIDIwLCAyMSwgMjExLCAyMzIsIDIzMywgMjA3LCAyMCwgCisgICAgMjEsIDIxMSwgMjMyLCAxNDQsIDIwLCAyMSwgODksIDIzNSwgMTY3LCAyMCwgMjEsIDg5LCAyMzUsIDE3MSwgMjAsIDIxLCAKKyAgICA4OSwgMjM1LCAxODUsIDIwLCAyMSwgODksIDIzNSwgMTg0LCAyMCwgMjEsIDg5LCAyMzUsIDE3MywgMjAsIDIxLCA4OSwgCisgICAgMjM1LCAxOTksIDIwLCAyMSwgODksIDIxMiwgMTc1LCAyMCwgMjEsIDg5LCAyMTMsIDEsIDIwLCAyMSwgODksIDIxMywgMTkwLCAKKyAgICAyMCwgMjEsIDg5LCAyMTMsIDE2NywgMjAsIDIxLCA4OSwgMjEzLCA4OCwgMjAsIDIxLCA4OSwgMjEzLCAyNTIsIDIwLCAyMSwgCisgICAgODksIDIwMCwgMjE2LCAyMCwgMjEsIDg5LCAyMDEsIDAsIDIwLCAyMSwgODksIDIwMSwgNjQsIDIwLCAyMSwgODksIDIwMSwgCisgICAgNTcsIDIwLCAyMSwgODksIDIwMSwgMzEsIDIwLCAyMSwgODksIDIwMSwgMTE0LCAyMCwgMjEsIDg5LCAyMzMsIDYxLCAyMCwgCisgICAgMjEsIDg5LCAyMzMsIDYyLCAyMCwgMjEsIDg5LCAyMzMsIDY1LCAyMCwgMjEsIDg5LCAyMzMsIDY0LCAyMCwgMjEsIDg5LCAKKyAgICAyMzMsIDYzLCAyMCwgMjEsIDg5LCAyMzMsIDY4LCAyMCwgMjEsIDg5LCAyMDYsIDM1LCAyMCwgMjEsIDg5LCAyMDYsIDYxLCAKKyAgICAyMCwgMjEsIDg5LCAyMDYsIDEwNiwgMjAsIDIxLCA4OSwgMjA2LCAxMDQsIDIwLCAyMSwgODksIDIwNiwgODQsIDIwLCAyMSwgCisgICAgODksIDIwNiwgMTIyLCAyMCwgMjEsIDg5LCAyMDQsIDIyMCwgMjAsIDIxLCA4OSwgMjA0LCAyMzAsIDIwLCAyMSwgODksIAorICAgIDIwNCwgMjQ4LCAyMCwgMjEsIDg5LCAyMDQsIDI0NywgMjAsIDIxLCA4OSwgMjA0LCAyMzIsIDIwLCAyMSwgODksIDIwNCwgCisgICAgMjUzLCAyMCwgMjEsIDg5LCAyMTQsIDIyNCwgMjAsIDIxLCA4OSwgMjE1LCAxMDYsIDIwLCAyMSwgODksIDIxNiwgNzMsIDIwLCAKKyAgICAyMSwgODksIDIxNiwgNjEsIDIwLCAyMSwgODksIDIxNSwgMjA0LCAyMCwgMjEsIDg5LCAxNzIsIDIwLCAyMSwgODksIDIxNiwgCisgICAgMjI2LCAyMCwgMjEsIDg5LCAyMzUsIDUwLCAyMCwgMjEsIDg5LCAyMzUsIDExNiwgMjAsIDIxLCA4OSwgMjM2LCAxNSwgMjAsIAorICAgIDIxLCA4OSwgMjM2LCA3LCAyMCwgMjEsIDg5LCAyMzUsIDE2MSwgMjAsIDIxLCA4OSwgMjM2LCA4OSwgMjAsIDIxLCA4OSwgCisgICAgMjI2LCAxNzIsIDIwLCAyMSwgODksIDIyNiwgMTc4LCAyMCwgMjEsIDg5LCAyMjYsIDE5MiwgMjAsIDIxLCA4OSwgMjI2LCAKKyAgICAxOTEsIDIwLCAyMSwgODksIDIyNiwgMTg1LCAyMCwgMjEsIDg5LCAyMjYsIDIwNywgMjAsIDIxLCA4OSwgMjI2LCAxMDQsIAorICAgIDIwLCAyMSwgODksIDIyNiwgMTA1LCAyMCwgMjEsIDg5LCAyMjYsIDEwOCwgMjAsIDIxLCA4OSwgMjI2LCAxMDcsIDIwLCAyMSwgCisgICAgODksIDIyNiwgMTA2LCAyMCwgMjEsIDg5LCAyMjYsIDEwOSwgMjAsIDIxLCA4OSwgMjI2LCAxMTAsIDIwLCAyMSwgODksIAorICAgIDIxOCwgMTMzLCAyMCwgMjEsIDg5LCAyMTgsIDI0MSwgMjAsIDIxLCA4OSwgMjIwLCAzNCwgMjAsIDIxLCA4OSwgMjIwLCAyOSwgCisgICAgMjAsIDIxLCA4OSwgMjE5LCAxNTAsIDIwLCAyMSwgODksIDE4OCwgMjAsIDIxLCA4OSwgMjIxLCA0MSwgMjAsIDIxLCA4OSwgCisgICAgMjIxLCAxMzYsIDIwLCAyMSwgODksIDIyMiwgNzYsIDIwLCAyMSwgODksIDIyMiwgNjQsIDIwLCAyMSwgODksIDIyMSwgMjExLCAKKyAgICAyMCwgMjEsIDg5LCAxNzgsIDIwLCAyMSwgODksIDE5OSwgMjExLCAyMCwgMjEsIDg5LCAxOTksIDI0NSwgMjAsIDIxLCA4OSwgCisgICAgMjAwLCA1MSwgMjAsIDIxLCA4OSwgMjAwLCA0OCwgMjAsIDIxLCA4OSwgMjAwLCA5LCAyMCwgMjEsIDg5LCAxODMsIDIwLCAKKyAgICAyMSwgODksIDIyNywgMTQ3LCAyMCwgMjEsIDIxMSwgMjMyLCAyMjcsIDE0NywgMjAsIDIxLCA4OSwgMjI3LCAxNjYsIDIwLCAKKyAgICAyMSwgODksIDIyNywgMjI3LCAyMCwgMjEsIDg5LCAyMjcsIDIyNSwgMjAsIDIxLCA4OSwgMjI3LCAyMDcsIDIwLCAyMSwgCisgICAgMjExLCAyMzIsIDIyNywgMjA3LCAyMCwgMjEsIDg5LCAyMjcsIDI0OCwgMjAsIDIxLCA4OSwgMjI3LCAxNzksIDIwLCAyMSwgCisgICAgODksIDIyNywgMTgzLCAyMCwgMjEsIDg5LCAyMjcsIDE5MywgMjAsIDIxLCA4OSwgMjI3LCAxOTIsIDIwLCAyMSwgODksIAorICAgIDIyNywgMTkxLCAyMCwgMjEsIDg5LCAyMjcsIDE5NCwgMjAsIDIxLCA4OSwgMjI0LCA0MiwgMjAsIDIxLCA4OSwgMjI0LCAKKyAgICAxMTAsIDIwLCAyMSwgODksIDIyNSwgNDAsIDIwLCAyMSwgODksIDIyNSwgMzIsIDIwLCAyMSwgODksIDIyNCwgMjEwLCAyMCwgCisgICAgMjEsIDg5LCAxOTQsIDIwLCAyMSwgODksIDI0MCwgMjE1LCAyMCwgMjEsIDg5LCAyNDAsIDIxNiwgMjAsIDIxLCA4OSwgMjQwLCAKKyAgICAyMjEsIDIwLCAyMSwgODksIDI0MCwgMjIwLCAyMCwgMjEsIDg5LCAyNDAsIDIxNywgMjAsIDIxLCA4OSwgMjQwLCAyMjIsIAorICAgIDIwLCAyMSwgODksIDIyNCwgMjEzLCAyMCwgMjEsIDg5LCAyMjQsIDIxNSwgMjAsIDIxLCA4OSwgMjI0LCAyMTksIDIwLCAyMSwgCisgICAgODksIDIyNCwgMjE4LCAyMCwgMjEsIDg5LCAyMjQsIDIxNywgMjAsIDIxLCA4OSwgMjI0LCAyMjMsIDIwLCAyMSwgODksIAorICAgIDIwNSwgMTk0LCAyMCwgMjEsIDg5LCAyMDUsIDE5NiwgMjAsIDIxLCA4OSwgMjA1LCAxOTksIDIwLCAyMSwgODksIDIwNSwgCisgICAgMTk4LCAyMCwgMjEsIDg5LCAyMDUsIDE5NywgMjAsIDIxLCA4OSwgMjA1LCAyMDAsIDIwLCAyMSwgODksIDIwNSwgMTg5LCAKKyAgICAyMCwgMjEsIDg5LCAyMDUsIDE5MCwgMjAsIDIxLCA4OSwgMjA1LCAyMDIsIDIwLCAyMSwgODksIDIwNSwgMjAxLCAyMCwgMjEsIAorICAgIDg5LCAyMDUsIDE5MSwgMjAsIDIxLCA4OSwgMjA1LCAyMDMsIDIwLCAyMSwgODksIDE5OSwgMywgMjAsIDIxLCA4OSwgMTk5LCAKKyAgICAxNCwgMjAsIDIxLCA4OSwgMTk5LCA4OSwgMjAsIDIxLCA4OSwgMTk5LCA4NywgMjAsIDIxLCA4OSwgMTk5LCAzNiwgMjAsIAorICAgIDIxLCA4OSwgMTk5LCAxMTQsIDIwLCAyMSwgODksIDE5OSwgMTU3LCAyMCwgMjEsIDg5LCA4MiwgMTk5LCAxNTcsIDIwLCAyMSwgCisgICAgODksIDIzOSwgODAsIDIwLCAyMSwgODksIDIzOSwgODEsIDIwLCAyMSwgODksIDIzOSwgOTAsIDIwLCAyMSwgODksIDIzOSwgCisgICAgODksIDIwLCAyMSwgODksIDIzOSwgODQsIDIwLCAyMSwgODksIDIzOSwgOTMsIDIwLCAyMSwgODksIDIwOCwgMjQsIDIwLCAKKyAgICAyMSwgODksIDIwOSwgMjksIDIwLCAyMSwgODksIDIxMSwgMjAyLCAyMCwgMjEsIDg5LCAyMTEsIDE5MCwgMjAsIDIxLCA4OSwgCisgICAgMjA5LCAxODIsIDIwLCAyMSwgODksIDIxMiwgNjQsIDIwLCAyMSwgODksIDIwOSwgMjIwLCAyMCwgMjEsIDg5LCAyMTAsIDgsIAorICAgIDIwLCAyMSwgODksIDIxMCwgNjUsIDIwLCAyMSwgODksIDIxMCwgNjMsIDIwLCAyMSwgODksIDIxMCwgMzMsIDIwLCAyMSwgCisgICAgODksIDIxMCwgMTE0LCAyMCwgMjEsIDg5LCAyMTAsIDExNiwgMjAsIDIxLCA4OSwgMjA1LCA1LCAyMCwgMjEsIDg5LCAyMDUsIAorICAgIDksIDIwLCAyMSwgODksIDIwNSwgMjYsIDIwLCAyMSwgODksIDIwNSwgMjUsIDIwLCAyMSwgODksIDIwNSwgMTEsIDIwLCAyMSwgCisgICAgODksIDIwNSwgMzIsIDIwLCAyMSwgODksIDI0NiwgMTkyLCAyMCwgMjEsIDg5LCAyNDYsIDIxMCwgMjAsIDIxLCA4OSwgMjQ3LCAKKyAgICA4LCAyMCwgMjEsIDg5LCAyNDcsIDQsIDIwLCAyMSwgODksIDI0NiwgMjM2LCAyMCwgMjEsIDg5LCAyNDcsIDM3LCAyMCwgMjEsIAorICAgIDg5LCAyMDQsIDIyMywgMjAsIDIxLCA4OSwgMjA0LCAyMjQsIDIwLCAyMSwgODksIDIwNCwgMjI3LCAyMCwgMjEsIDg5LCAKKyAgICAyMDQsIDIyNiwgMjAsIDIxLCA4OSwgMjA0LCAyMjUsIDIwLCAyMSwgODksIDIwNCwgMjI4LCAyMCwgMjEsIDI0NiwgMjM3LCAKKyAgICA1NCwgMjAsIDIxLCAyMzYsIDE4MywgMjA4LCA3NiwgMjAsIDIxLCAyMTQsIDE1MSwgMjAsIDIxLCAyMTksIDI0OSwgMjAsIAorICAgIDIxLCAyMTksIDExLCAyMCwgMjEsIDIxOSwgMTAsIDIwLCAyMSwgMjE5LCA5LCAyMCwgMjEsIDIxOSwgOCwgMjAsIDIxLCAKKyAgICAyMTksIDEzLCAyMCwgMjEsIDIxOSwgMTIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjMsIDIwLCAyMSwgMjAwLCAyNDIsIAorICAgIDIwNiwgMjIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjEsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjAsIDIwLCAyMSwgCisgICAgMjAwLCAyNDIsIDIwNiwgMTksIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjYsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjUsIAorICAgIDIwLCAyMSwgMjAwLCAyNDIsIDQ3LCAyMDYsIDEyNCwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAxNDcsIDIxNywgMTEyLCAKKyAgICAyMDgsIDI0NSwgODEsIDIxNywgMTEyLCAxLCAyNDgsIDIzNCwgMjE3LCAxMTIsIDEsIDIyNCwgMjgsIDIxNywgMTEyLCAxLCAKKyAgICAyMzcsIDE0NCwgMjE3LCAxMTIsIDEsIDIxMiwgNDQsIDIxNywgMTEyLCAxLCAyMTksIDEwNiwgMjE3LCAxMTIsIDEsIDIwNCwgCisgICAgNDMsIDIxNywgMTEyLCAxLCAyNDIsIDMxLCAyMTcsIDExMiwgMSwgMjA1LCAyMjcsIDIxNywgMTEyLCAxLCAyNDYsIDgyLCAKKyAgICAyMTcsIDExMiwgMSwgMjQ3LCA2MywgMjE3LCAxMTIsIDEsIDIyMSwgMjgsIDIxNywgMTEyLCAxLCAyMzUsIDk2LCAyMTcsIAorICAgIDExMiwgMSwgMjE5LCAyMzksIDIxNywgMTEyLCAxLCAyMDgsIDY5LCAyMTcsIDExMiwgMSwgMjEyLCAxNjgsIDIxNywgMTEyLCAKKyAgICAxLCAyNTEsIDE3MywgMjE3LCAxMTIsIDEsIDIxNywgNjcsIDIxNywgMTEyLCAxLCAyMDMsIDIxNCwgMjE3LCAxMTIsIDEsIAorICAgIDIzOSwgMjUsIDIxNywgMTEyLCAxLCAyMjgsIDQ0LCAyMTcsIDExMiwgMSwgMjM5LCAyNiwgMjE3LCAxMTIsIDEsIDIxNywgCisgICAgMzMsIDIxNywgMTEyLCAxLCAyMDQsIDIxLCAyMTcsIDExMiwgMSwgMjI4LCAxNTcsIDIxNywgMTEyLCAxLCAyMzksIDIzLCAKKyAgICAyMTcsIDExMiwgMSwgMjE2LCA1MSwgMjE3LCAxMTIsIDIzNywgMTQzLCA4MSwgMjE3LCAxMTIsIDIxMywgMTA1LCAyMzcsIAorICAgIDE0MywgODEsIDIxMiwgMTU3LCAxLCAyMzcsIDEzMywgMjM3LCAxMjQsIDIzNywgMTQ4LCAyMzgsIDUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMDMsIDE2OCwgMjEyLCAxNTcsIDEsIDIwMywgMTk5LCAyMDMsIDIxNSwgNjYsIDIxMiwgMTU3LCAxLCAxOTksIDIxNCwgCisgICAgMjEyLCAxNTcsIDEsIDIwMCwgMTIzLCAyMTIsIDE1NywgMSwgMjAxLCAxNDcsIDIxMiwgMTU3LCAxLCAyMDYsIDI4LCAyMDYsIAorICAgIDI3LCAyMDYsIDU0LCAyMTIsIDE1NywgMSwgMjM4LCA3NCwgMjEyLCAxNTcsIDEsIDI1MSwgNTIsIDYyLCAyMTIsIDE1NywgMSwgCisgICAgMjE3LCAxNiwgNzQsIDIxMiwgMTU3LCAxLCAyNTEsIDI1NSwgNjIsIDIxMiwgMTU3LCAxLCAyNTEsIDIwNSwgMjEyLCAxNTcsIAorICAgIDEsIDIyNCwgODUsIDc0LCAyMTIsIDE1NywgMSwgMjA5LCAyNDMsIDc0LCAyMTIsIDE1NywgMSwgNzQsIDIxMiwgMTU3LCAxLCAKKyAgICAyMTcsIDEyMSwgMjEyLCAxNTcsIDEsIDIxNywgNzgsIDIxMiwgMTU3LCAxLCAyMTMsIDIyNywgMjEzLCAyNDAsIDIxMywgCisgICAgMTUyLCAxNDYsIDIxMiwgMTU3LCAxLCAyMjcsIDIzLCAyMTIsIDE1NywgMSwgMjQ3LCA1OSwgMjEyLCAxNTcsIDEsIDIyNywgCisgICAgMjQsIDIyNywgMTE4LCAyMTIsIDE1NywgMSwgMjM2LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzgsIDE2NSwgMjEyLCAxNTcsIDEsIAorICAgIDIzNiwgMTAsIDIzNCwgMjUzLCAyMzYsIDE1NiwgMjEyLCAxNTcsIDEsIDIzNiwgNDksIDIxMiwgMTU3LCAxLCAyMDAsIDIwOCwgCisgICAgMjAwLCAxOTksIDIwMSwgMTQ3LCAyMTIsIDE1NywgMSwgMjM0LCAyMjUsIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjM0LCAKKyAgICAyMjksIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjI0LCA4NywgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMDksIDI0NiwgCisgICAgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMjAsIDExNCwgMjE4LCA1MSwgMjIwLCAxMTUsIDIyMCwgMjE0LCAyMTIsIDE1NywgCisgICAgMSwgMjA5LCAyNDQsIDIyMCwgMjE0LCAyMTIsIDE1NywgMSwgMjM5LCAxNzcsIDIxMiwgMTU3LCAxLCAyMjgsIDIzLCAyMjgsIAorICAgIDI3LCAyMjgsIDE0LCA3MCwgMjEyLCAxNTcsIDEsIDcyLCAyMTIsIDE1NywgMSwgMjI3LCAyMTgsIDIyNywgMjUxLCAyMTIsIAorICAgIDE1NywgMSwgMjM1LCAyNDksIDIxMiwgMTU3LCAxLCAyMjQsIDg4LCAyNTEsIDIyMSwgMjEyLCAxNTcsIDEsIDIwOSwgMjQ4LCAKKyAgICA2MiwgMjEyLCAxNTcsIDEsIDIyOCwgNiwgMjM4LCAxMzgsIDIxMiwgMTU3LCAxLCAyMTYsIDcsIDIxNiwgMzIsIDIxNiwgCisgICAgMjI2LCAyMTIsIDE1NywgMSwgMjUxLCAxMzUsIDIzOCwgMTM2LCAyMTIsIDE1NywgMSwgMjA4LCAyNTAsIDIxMiwgMTIyLCAKKyAgICAyMTIsIDE1NywgMSwgMjA5LCAxNjUsIDIyNCwgODQsIDIxMiwgMTIyLCAyMTIsIDE1NywgMSwgMjA5LCAyNDIsIDIxMiwgCisgICAgMTIyLCAyMTIsIDE1NywgMSwgMjQ3LCAyMjMsIDIxMiwgMTU3LCAxLCAxOTksIDE1NywgMjEyLCAxNTcsIDEsIDIwNSwgMjA4LCAKKyAgICAyMDUsIDIyMCwgMjA0LCAxMTUsIDIwNywgODMsIDIxMiwgMTU3LCAxLCAyMDksIDI0MSwgMjA3LCA4MywgMjEyLCAxNTcsIDEsIAorICAgIDI0MiwgMTUzLCAyMTIsIDE1NywgMSwgMjQ4LCAyMTMsIDI0OCwgMjE2LCAyNDgsIDE0NywgMjUwLCAxMDMsIDIxMiwgMTU3LCAKKyAgICAxLCAyMDksIDI0NywgMjUwLCAxMDMsIDIxMiwgMTU3LCAxLCAyMzksIDE3NiwgMjEyLCAxNTcsIDEsIDIxNywgNDcsIDIxMiwgCisgICAgMTU3LCAxLCAyMzgsIDIzNSwgMjM4LCAyNDIsIDcyLCAyMTIsIDE1NywgMSwgMjIyLCAxNzEsIDIyMiwgMTgxLCAyMjMsIAorICAgIDI0MywgMjEyLCAxNTcsIDEsIDIyNCwgODYsIDIyMywgMjQzLCAyMTIsIDE1NywgMSwgMjA5LCAyNDUsIDIyMywgMjQzLCAKKyAgICAyMTIsIDE1NywgMSwgMjI1LCA1NSwgMjI1LCAxNTQsIDIyNCwgOTUsIDE1NiwgMjEyLCAxNTcsIDEsIDIzOSwgMTc4LCAyMTIsIAorICAgIDE1NywgMSwgMjI4LCA5MCwgMjEyLCAxNTcsIDEsIDIyOCwgOTEsIDIxMiwgMTU3LCAxLCAyNDIsIDQ1LCAyNDIsIDUxLCAKKyAgICAyNDIsIDE1MywgMjEyLCAxNTcsIDEsIDIxNywgOSwgMjM4LCA3MywgNzQsIDIxMiwgMTU3LCAxLCAyMzksIDIxLCAyMTIsIAorICAgIDE1NywgMSwgMjI4LCA0MywgMjEyLCAxNTcsIDEsIDI0MiwgMTczLCAyMTIsIDE1NywgMSwgMjQ3LCAxNzMsIDIxMiwgMTU3LCAKKyAgICAxLCAyNDcsIDc1LCAyMTIsIDE1NywgMSwgMjA4LCAxMTQsIDIxMiwgMTU3LCAxLCAyMjQsIDgzLCAyMTIsIDE1NywgMSwgCisgICAgMjA5LCAyNDAsIDIxMiwgMTU3LCAxLCAyMzIsIDIzMCwgMjEyLCAxNTcsIDEsIDIxNCwgMTY3LCAyMTIsIDE1NywgMSwgMjAwLCAKKyAgICAxOTUsIDIxMiwgMTU3LCAyMDksIDEzOSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAyMjEsIDIxLCAyMTQsIDIxMSwgMjEyLCAxNTcsIAorICAgIDI0MiwgMjM1LCAyMTQsIDIxMSwgMjEyLCAxNTcsIDI1MCwgMjE2LCA5OSwgMjEyLCAxNTcsIDIwNCwgMTcyLCA5OSwgMjEyLCAKKyAgICAxNTcsIDI0OCwgMjMyLCA5OSwgMjEyLCAxNTcsIDEsIDIyNywgMTE4LCAyMTIsIDE1NywgMSwgMjEwLCAxMTYsIDIxMiwgCisgICAgMTU3LCAxLCAyMTcsIDYzLCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyMTcsIDE1LCAyMTIsIDE1NywgMSwgCisgICAgMjM2LCAyMTIsIDI0NywgMTE0LCAyMjgsIDI2LCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyMzgsIDI0MSwgCisgICAgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjUxLCAyNTQsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAKKyAgICAxMTQsIDI1MSwgMjA1LCAyMDcsIDEyLCAxLCA2MiwgMjA3LCAxMiwgMSwgNzAsIDIwNywgMTIsIDEsIDY2LCAyMDcsIDEyLCAKKyAgICAxLCAxNjEsIDIwNywgMTIsIDEsIDIzNiwgODksIDIwNywgMTIsIDEsIDIxOSwgMjUzLCAyMDcsIDEyLCAxLCAyMDcsIDM2LCAKKyAgICAyMDcsIDEyLCAxLCAyNDIsIDU4LCAyMDcsIDEyLCAxLCAxODgsIDIwNywgMTIsIDEsIDE3MiwgMjA3LCAxMiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIwNywgMTIsIDEsIDE3OCwgMjA3LCAxMiwgMSwgMTgzLCAyMDcsIDEyLCAxLCAxOTQsIDIwNywgMTIsIDEsIDIwMSwgCisgICAgMTE0LCAyMDcsIDEyLCAxLCAyMTIsIDY0LCAyMDcsIDEyLCAxLCAxNDQsIDIwNywgMTIsIDIyLCAyLCA3MCwgMjA3LCAxMiwgCisgICAgMjIsIDIsIDY2LCAyMDcsIDEyLCAyLCAyMDIsIDIwOCwgMjM0LCAxNzAsIDEsIDYyLCAyMzQsIDE3MCwgMSwgNzAsIDIzNCwgCisgICAgMTcwLCAxLCA2NiwgMjM0LCAxNzAsIDEsIDE2MSwgMjM0LCAxNzAsIDEsIDIzNiwgODksIDIzNCwgMTcwLCAxLCAyMTksIAorICAgIDI1MywgMjM0LCAxNzAsIDEsIDIwNywgMzYsIDIzNCwgMTcwLCAxLCAyNDIsIDU4LCAyMzQsIDE3MCwgMSwgMTg4LCAyMzQsIAorICAgIDE3MCwgMSwgMTcyLCAyMzQsIDE3MCwgMSwgMjQ5LCAxMzYsIDIzNCwgMTcwLCAxLCAxNzgsIDIzNCwgMTcwLCAxLCAxODMsIAorICAgIDIzNCwgMTcwLCAxLCAyMTMsIDI1MiwgMjM0LCAxNzAsIDEsIDE5NCwgMjM0LCAxNzAsIDEsIDIwMSwgMTE0LCAyMzQsIDE3MCwgCisgICAgMSwgMjEyLCA2NCwgMjM0LCAxNzAsIDEsIDE0NCwgMjM0LCAxNzAsIDIyLCAyLCA3MCwgMjM0LCAxNzAsIDIyLCAyLCA2NiwgCisgICAgMjM0LCAxNzAsIDIsIDIxNiwgMTY1LCAyMTUsIDIyMiwgMjA5LCAxMzksIDIxNCwgMjExLCAyMTUsIDIyMiwgNTMsIDIxNCwgCisgICAgMjExLCAyNDgsIDI4LCAxLCA2MiwgMjQ4LCAyOCwgMSwgNzAsIDI0OCwgMjgsIDEsIDY2LCAyNDgsIDI4LCAxLCAxNjEsIAorICAgIDI0OCwgMjgsIDEsIDIzNiwgODksIDI0OCwgMjgsIDEsIDIxOSwgMjUzLCAyNDgsIDI4LCAxLCAyMDcsIDM2LCAyNDgsIDI4LCAKKyAgICAxLCAyNDIsIDU4LCAyNDgsIDI4LCAxLCAxODgsIDI0OCwgMjgsIDEsIDE3MiwgMjQ4LCAyOCwgMSwgMjQ5LCAxMzYsIDI0OCwgCisgICAgMjgsIDEsIDE3OCwgMjQ4LCAyOCwgMSwgMTgzLCAyNDgsIDI4LCAxLCAyMTMsIDI1MiwgMjQ4LCAyOCwgMSwgMTk0LCAyNDgsIAorICAgIDI4LCAxLCAyMDEsIDExNCwgMjQ4LCAyOCwgMSwgMjEyLCA2NCwgMjQ4LCAyOCwgMSwgMTQ0LCAyNDgsIDI4LCAyMiwgMiwgCisgICAgNzAsIDI0OCwgMjgsIDIyLCAyLCA2NiwgMjA3LCAxMSwgMSwgNjIsIDIwNywgMTEsIDEsIDcwLCAyMDcsIDExLCAxLCA2NiwgCisgICAgMjA3LCAxMSwgMSwgMTYxLCAyMDcsIDExLCAxLCAyMzYsIDg5LCAyMDcsIDExLCAxLCAyMTksIDI1MywgMjA3LCAxMSwgMSwgCisgICAgMjA3LCAzNiwgMjA3LCAxMSwgMSwgMjQyLCA1OCwgMjA3LCAxMSwgMSwgMTg4LCAyMDcsIDExLCAxLCAxNzIsIDIwNywgMTEsIAorICAgIDEsIDI0OSwgMTM2LCAyMDcsIDExLCAxLCAxNzgsIDIwNywgMTEsIDEsIDE4MywgMjA3LCAxMSwgMSwgMTk0LCAyMDcsIDExLCAKKyAgICAxLCAyMDEsIDExNCwgMjA3LCAxMSwgMSwgMjEyLCA2NCwgMjA3LCAxMSwgMjIsIDIsIDcwLCAyMDcsIDExLCAyMiwgMiwgNjYsIAorICAgIDg2LCAxLCAxNjEsIDg2LCAxLCAyMjYsIDIwNywgODYsIDEsIDIyNiwgODgsIDg2LCAxLCAyMjYsIDE3OCwgODYsIDEsIDIxOSwgCisgICAgMTc4LCA4NiwgMSwgMjQ3LCAxOTAsIDg2LCAxLCAyNDcsIDM3LCA4NiwgMSwgMjQ2LCA5MSwgODYsIDEsIDI0NiwgMjEwLCAKKyAgICA4NiwgMSwgMjE4LCAyNiwgODYsIDEsIDI0MiwgNTgsIDg2LCAxLCAyMDQsIDI0MSwgODYsIDEsIDI0MCwgMjExLCA4NiwgMSwgCisgICAgMjA0LCAyMzYsIDg2LCAxLCAyMTgsIDI0NywgODYsIDEsIDIwNywgMzYsIDg2LCAxLCAyMDYsIDEyMiwgODYsIDEsIDEzOCwgCisgICAgODYsIDEsIDIwNiwgNjEsIDg2LCAxLCAyMTgsIDI0MSwgODYsIDEsIDI0OSwgMTM2LCA4NiwgMSwgMjE1LCAyNDUsIDg2LCAxLCAKKyAgICAyMTUsIDEwNiwgODYsIDEsIDIxNSwgMjE3LCA4NiwgMSwgMjIxLCAxMzYsIDg2LCAxLCAxOTksIDI0NSwgODYsIDEsIDIxMywgCisgICAgMSwgODYsIDEsIDIyNCwgMTEwLCA4NiwgMSwgMjAyLCAxOTMsIDg2LCAxLCAyMTAsIDExNCwgODYsIDEsIDIwOCwgMTM5LCAKKyAgICA4NiwgMSwgMjEyLCA2NCwgODYsIDEsIDE0NCwgODYsIDEsIDE5NCwgODYsIDEsIDIxNCwgMTU5LCA4NiwgMjI4LCAxMDQsIAorICAgIDIyLCAyMTQsIDE0NSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxNTgsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTIxLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyMTQsIDExNSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA5NywgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAKKyAgICA2NywgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA1NSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA1NCwgODYsIDIyOCwgMTA0LCAKKyAgICAyMiwgMjEyLCAxMzEsIDg2LCAyMjgsIDEwNCwgMjIsIDIxMiwgMTI0LCA4NiwgMjI4LCAxMDQsIDIyLCAyMjQsIDIsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIyMywgMjQ2LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEzOSwgODYsIDIyOCwgMTA0LCAyMiwgCisgICAgMjE0LCAxNTEsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTA1LCAyMDQsIDEyOCwgMTAyLCA4NiwgMjI4LCAxMDQsIDIyLCAKKyAgICAyMTQsIDEwNSwgMjA0LCAxMjgsIDEwNSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxNDEsIDg2LCAyMiwgMjI4LCA4OCwgCisgICAgMjUxLCAxLCA4NiwgMjIsIDIyOCwgODgsIDI1MiwgMTM4LCA4NiwgMjIsIDIsIDI1MiwgMTM4LCA4NiwgMjIsIDIsIDcwLCAKKyAgICA4NiwgMjIsIDIsIDIyOCwgMTUxLCA4NiwgMjIsIDIsIDIwMCwgMTIzLCA4NiwgMjIsIDIsIDE5OSwgMTY3LCA4NiwgMjIsIDIsIAorICAgIDY2LCA4NiwgMjIsIDIsIDIwMywgMTgyLCA4NiwgMjIsIDIsIDIwNCwgNDYsIDg2LCAyMiwgMiwgMjE3LCAxMjEsIDg2LCAyMiwgCisgICAgMiwgMTgzLCA4NiwgMjIsIDIsIDIyOCwgMTc4LCA4NiwgMjIsIDIsIDcyLCA4NiwgMjIsIDIsIDI1MSwgMjIxLCA4NiwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCA4NiwgMjIsIDIsIDIxNywgNjMsIDg2LCAyMiwgMiwgMjUwLCAxMzksIDg2LCAyLCAyMTksIDEyMywgCisgICAgODYsIDIsIDIxMywgMTg4LCA4NiwgMiwgMTk5LCAxNzgsIDg2LCAyLCAyMjAsIDI0MSwgODYsIDIsIDIwNSwgODYsIDg2LCAyLCAKKyAgICAyNDksIDc5LCA4NiwgMiwgMjEyLCAyNTIsIDg2LCAyLCAyMDUsIDE4NCwgODYsIDIsIDIyNywgNzUsIDg2LCAyLCAyNTEsIAorICAgIDE3OCwgODYsIDIsIDIxMiwgMTQsIDIxMiwgNywgODYsIDIsIDIwMiwgMjA1LCA4NiwgMiwgMjQ2LCA4NSwgODYsIDIsIDI0OSwgCisgICAgNTEsIDg2LCAyLCAyMjYsIDE5OSwgODYsIDIsIDI0OSwgNzQsIDg2LCAyLCAyNDcsIDE2MSwgMjE1LCAxNjcsIDIyNSwgMjM1LCAKKyAgICA4NiwgMiwgMjI1LCA5LCAyMDUsIDE2MSwgODYsIDIsIDI0OCwgMjAyLCA4NiwgMiwgMjE1LCAyMTksIDIyMSwgMzgsIDg2LCAKKyAgICAyLCAyMjYsIDY2LCA4NiwgMjQyLCAxOTUsIDE2LCAyMTMsIDgwLCA4NiwgMiwgMjUwLCAxMjEsIDg2LCAyLCAyNTAsIDE0MiwgCisgICAgODYsIDE3LCAxOTksIDgxLCA4NiwgMTcsIDEwMiwgODYsIDE3LCAxMDUsIDg2LCAxNywgMTQ3LCA4NiwgMTcsIDE0OSwgODYsIAorICAgIDE3LCAxNjQsIDg2LCAxNywgMTg3LCA4NiwgMTcsIDIxMCwgMTM1LCA4NiwgMTcsIDE5MiwgODYsIDE3LCAyMTksIDExMywgCisgICAgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMDksIDEzLCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIyMSwgNSwgODYsIAorICAgIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDE2NiwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyNDgsIDIzNSwgODYsIAorICAgIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyNDgsIDgsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCA0MiwgODYsIDE2LCAKKyAgICAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM2LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzQsIDg2LCAxNiwgCisgICAgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCA0MCwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM4LCA5MiwgMjQ4LCAKKyAgICAxNjAsIDkyLCAyMzgsIDE5NSwgOTIsIDI0NiwgNzAsIDkyLCAyMzYsIDE4MywgMjA4LCA3NiwgOTIsIDI0NiwgNzksIDkyLCAKKyAgICAyMzYsIDIyOSwgMjQwLCAxODAsIDkyLCAyMDUsIDE4MywgMjA5LCAyMywgMjMzLCAzMywgOTIsIDIwOSwgMTgwLCA1LCAyNDgsIAorICAgIDg5LCAyMjIsIDE0NSwgOTIsIDIyMiwgMTc3LCAyNDYsIDcwLCA5MiwgMjIyLCAxNzcsIDIzNiwgMTgzLCAyMDgsIDc2LCA5MiwgCisgICAgMjE5LCAxMDQsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAxMDIsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAKKyAgICAxMDUsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAxNDcsIDkyLCAyMiwgMjEwLCAxNTQsIDkyLCAxNywgMTk5LCA4MSwgCisgICAgOTIsIDE3LCAxMDIsIDkyLCAxNywgMTA1LCA5MiwgMTcsIDE0NywgOTIsIDE3LCAxNDksIDkyLCAxNywgMTY0LCA5MiwgMTcsIAorICAgIDE4NywgOTIsIDE3LCAyMTAsIDEzNSwgOTIsIDE3LCAxOTIsIDkyLCAxNywgMjE5LCAxMTMsIDkyLCAxLCA2MiwgOTIsIDEsIAorICAgIDcyLCA5MiwgMSwgNzAsIDkyLCAxLCA3NCwgOTIsIDEsIDY2LCA5MiwgMSwgMjE3LCAxMjEsIDkyLCAxLCAyMDQsIDMxLCA5MiwgCisgICAgMSwgMjM4LCAyNTUsIDkyLCAxLCAxODgsIDkyLCAxLCAyNTEsIDc2LCA5MiwgMSwgMjQ5LCAxMzYsIDkyLCAxLCAxNzIsIDkyLCAKKyAgICAxLCAyMTQsIDE1OSwgOTIsIDEsIDIzNiwgODksIDkyLCAxLCAxNzgsIDkyLCAxLCAxOTQsIDkyLCAxLCAyMTIsIDY0LCA5MiwgCisgICAgMSwgMjEwLCAxMTQsIDkyLCAxLCAyMDcsIDM2LCA5MiwgMSwgMjQyLCA1OCwgOTIsIDEsIDI0NywgMzcsIDkyLCAxLCAyMjcsIAorICAgIDI0OCwgOTIsIDEsIDE4MywgOTIsIDEsIDIxMywgMjUyLCA5MiwgMSwgMjAxLCAxMTQsIDkyLCAxLCAyMzcsIDE5NSwgOTIsIAorICAgIDEsIDE2MSwgOTIsIDEsIDIyNiwgMjA3LCA5MiwgMSwgMjA1LCAzMiwgOTIsIDEsIDE5OSwgMTE0LCA5MiwgMSwgMjM0LCAKKyAgICAyMzMsIDkyLCAxLCAxOTksIDcsIDkyLCAxLCAyMjQsIDIyMywgOTIsIDEsIDE5OSwgNjMsIDkyLCAxLCAyNDYsIDIzNiwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCAxNjgsIDIyLCA1NCwgOTIsIDEsIDIwNSwgMTgzLCA3MiwgOTIsIDEsIDIwNSwgMTgzLCA3MCwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCA3NCwgOTIsIDEsIDIwNSwgMTgzLCA2NiwgOTIsIDEsIDIwNSwgMTgzLCAyMTcsIDEyMSwgOTIsIDEsIAorICAgIDIwNSwgMTgzLCAyMDQsIDMxLCA5MiwgMSwgMjA1LCAxODMsIDI1MSwgNzYsIDkyLCAxLCAyMDUsIDE4MywgMjQ5LCAxMzYsIAorICAgIDkyLCAxLCAyMDUsIDE4MywgMTcyLCA5MiwgMSwgMjA1LCAxODMsIDIxNCwgMTU5LCA5MiwgMSwgMjA1LCAxODMsIDIzNiwgCisgICAgODksIDkyLCAxLCAyMDUsIDE4MywgMTc4LCA5MiwgMSwgMjA1LCAxODMsIDIwNywgMzYsIDkyLCAxLCAyMDUsIDE4MywgMjQyLCAKKyAgICA1OCwgOTIsIDEsIDIwNSwgMTgzLCAyNDcsIDM3LCA5MiwgMSwgMjA1LCAxODMsIDIyNywgMjQ4LCA5MiwgMSwgMjA1LCAxODMsIAorICAgIDIwNSwgMzIsIDkyLCAxLCAyMDUsIDE4MywgMTgzLCA5MiwgMSwgMjA1LCAxODMsIDIwMSwgMTE0LCA5MiwgMSwgMjA1LCAKKyAgICAxODMsIDE2MSwgOTIsIDEsIDIwNSwgMTgzLCAyMzYsIDg2LCA5MiwgMSwgMjA1LCAxODMsIDIzNCwgMjMzLCA5MiwgMSwgCisgICAgMjA1LCAxODMsIDIyNywgMjA2LCA5MiwgMSwgMjA1LCAxODMsIDIxOSwgMTQ4LCA5MiwgMSwgMjA1LCAxODMsIDIzOSwgOTMsIAorICAgIDkyLCAxLCAyMDksIDE4MCwgNzIsIDkyLCAxLCAyMDksIDE4MCwgNzAsIDkyLCAxLCAyMDksIDE4MCwgMjI4LCAzLCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDIwNCwgMzEsIDkyLCAxLCAyMDksIDE4MCwgNjYsIDkyLCAxLCAyMDksIDE4MCwgMjUxLCA3NiwgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAxNjEsIDkyLCAxLCAyMDksIDE4MCwgMjM2LCA4OSwgOTIsIDEsIDIwOSwgMTgwLCAxNDQsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMTcyLCA5MiwgMSwgMjA5LCAxODAsIDIxMCwgMTE0LCA5MiwgMSwgMjA5LCAxODAsIDIwNywgMzYsIDkyLCAKKyAgICAxLCAyMDksIDE4MCwgMjQyLCA1OCwgOTIsIDEsIDIwOSwgMTgwLCAyMjcsIDI0OCwgOTIsIDEsIDIwOSwgMTgwLCAyMzcsIAorICAgIDE5NSwgOTIsIDEsIDIwOSwgMTgwLCAyMzYsIDg2LCA5MiwgMSwgMjA5LCAxODAsIDIzNCwgMjMzLCA5MiwgMSwgMjA5LCAKKyAgICAxODAsIDIwNSwgMzIsIDkyLCAxLCAyMDksIDE4MCwgMTk5LCAxMTQsIDkyLCAxLCAyMDksIDE4MCwgMjEzLCAyNDgsIDkyLCAKKyAgICAxLCAyMDksIDE4MCwgMjQ3LCAzNywgOTIsIDEsIDIwOSwgMTgwLCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDcwLCA5MiwgCisgICAgMSwgMjIyLCAxNzcsIDE2MSwgOTIsIDEsIDIyMiwgMTc3LCAyMTMsIDI1MiwgOTIsIDEsIDIyMiwgMTc3LCAyMzcsIDE5NSwgCisgICAgOTIsIDEsIDIyMiwgMTc3LCAxOTksIDc3LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI1MSwgMzQsIDEwMiwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDIsIDIwNCwgMTAyLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgMTksIDkyLCAKKyAgICAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCA0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMjgsIDUwLCAyMDQsIAorICAgIDQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0OSwgOTEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTI2LCAKKyAgICAyNDksIDkxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDYyLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDcwLCA5MiwgCisgICAgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE2MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDI1MywgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDcsIDE5MCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI1MywgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDIyMCwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDIxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCA1OCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNzIsIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMjE1LCAyNDUsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA4LCAxNzksIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDExNCwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAyNTEsIDE4NSwgOTIsIDEsIDIwNSwgMTgzLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCAKKyAgICA2OSwgMjM1LCAxOTksIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjUzLCA5MiwgMSwgMjIyLCAKKyAgICAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDcsIDE5MCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMjI3LCAyMTUsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjUzLCA5MiwgMSwgMjIyLCAxNzcsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDIwNCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgCisgICAgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAxMDAsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIAorICAgIDIzNiwgNjksIDIwOCwgMTc5LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDE2NywgOTIsIDEsIAorICAgIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMTk5LCAxMTQsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTY3LCA2NiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAxNjcsIDE4MywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ4LCAyMDAsIDkyLCAxLCAyNTEsIDEzNCwgCisgICAgMjM2LCA2OSwgMjQyLCA0NiwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjI0LCAyMjMsIDIwLCAyMSwgCisgICAgMjE2LCAyMzAsIDIwLCAyMSwgMjUwLCAxMTIsIDIwLCAyMSwgMjUyLCA5MywgMjAsIDIxLCAyMDEsIDY3LCAyMCwgMjEsIAorICAgIDIxNSwgNDgsIDIwLCAyMSwgMjE2LCA4MiwgMjAsIDIxLCAyMTQsIDE3NiwgMjAsIDIxLCAyMDYsIDIxMCwgMjAsIDIxLCAKKyAgICAyMjcsIDE1LCAyMCwgMjEsIDIyNSwgMjI2LCAyMCwgMjEsIDIyMiwgMTE5LCAyMCwgMjEsIDIxOCwgMTk4LCAyMCwgMjEsIAorICAgIDIyMCwgMTA5LCAyMCwgMjEsIDIyNSwgNTAsIDIwLCAyMSwgMjA4LCAyNDgsIDIwLCAyMSwgMjExLCAyMzQsIDIwLCAyMSwgCisgICAgMjA5LCAyMjksIDIwLCAyMSwgMjEwLCA2OSwgMjAsIDIxLCAyMDksIDE5MiwgMjAsIDIxLCAxOTksIDIyMCwgMjAsIDIxLCAKKyAgICAyMDAsIDU3LCAyMCwgMjEsIDIxMywgMTk3LCAyMCwgMjEsIDIxOCwgNjYsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjYsIAorICAgIDIwLCAyMSwgMjE4LCA2NSwgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2NSwgMjAsIDIxLCAyMTgsIDY0LCAyMCwgMjEsIDIxNywgCisgICAgMTAwLCAyMTgsIDY0LCAyMCwgMjEsIDIxOCwgNjMsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjMsIDIwLCAyMSwgMjEyLCAKKyAgICAxMzYsIDIwLCAyMSwgMjEyLCAxMzUsIDIwLCAyMSwgMjEyLCAxMzQsIDIwLCAyMSwgMjEyLCAxMzMsIDIwLCAyMSwgMjEyLCAKKyAgICAxMzIsIDIwLCAyMSwgMjEyLCAxNDAsIDIwLCAyMSwgMjE3LCAxMDAsIDIxNiwgMjI2LCAyMCwgMjEsIDIxNywgMTAwLCAyMDcsIAorICAgIDgzLCAyMCwgMjEsIDIxNywgMTAwLCAyMjcsIDExOCwgMjAsIDIxLCAyMTcsIDEwMCwgMjQ3LCAyMjMsIDIwLCAyMSwgMjE3LCAKKyAgICAxMDAsIDIyMywgMjQzLCAyMCwgMjEsIDIxNywgMTAwLCAyMjAsIDIxNCwgMjAsIDIxLCAyMTcsIDEwMCwgMjEyLCAxMjIsIAorICAgIDIwLCAyMSwgMjE3LCAxMDAsIDIxMCwgMTE2LCAyMCwgMjEsIDIzOSwgMTIsIDIwMSwgMTQ3LCAyMCwgMjEsIDIwMSwgNDUsIAorICAgIDIwMSwgMTQ3LCAyMCwgMjEsIDQ3LCA0LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCAyMTMsIDIyMCwgMjQwLCAxODIsIDIwLCAyMSwgCisgICAgMjE0LCAzMiwgMjEyLCAxMzcsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA3OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDE3NSwgCisgICAgMjAsIDIxLCAyMDYsIDI0LCAyMCwgMjEsIDIwNiwgMjYsIDIwLCAyMSwgMjA0LCAyMzMsIDIwLCAyMSwgMjA0LCAyMzUsIDIwLCAKKyAgICAyMSwgMjA0LCAyNDAsIDIwLCAyMSwgMjA1LCAxOTMsIDIwLCAyMSwgMjA1LCAxOTUsIDIwLCAyMSwgMjExLCAyMzIsIDIwOSwgCisgICAgMTk3LCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDIsIDIwLCAyMSwgMjExLCAyMzIsIDIzMywgMTg4LCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDUsIDIwLCAyMSwgODksIDI0MSwgMTM0LCAyMzYsIDcsIDIwLCAyMSwgODksIDIzNiwgODYsIDIwLCAyMSwgODksIAorICAgIDIzNSwgMTAsIDIwLCAyMSwgMjExLCAyMzIsIDIyNywgMTI4LCAyMCwgMjEsIDg5LCAyMjcsIDEyNiwgMjAsIDIxLCAyNDgsIAorICAgIDI1NSwgMjQxLCAxMzQsIDE1NiwgMjAsIDIxLCAyNDgsIDI1NSwgMjQxLCAxMzQsIDE0NiwgMjAsIDIxLCA4OSwgMjQxLCAKKyAgICAxMjksIDIxMiwgMTIyLCAyMjQsIDE4NiwgMjAyLCAxNzIsIDIyNCwgMjM2LCAyMjQsIDE4NiwgMSwgMTYxLCAyMjQsIDE4NiwgCisgICAgMSwgMjI2LCAyMDcsIDIyNCwgMTg2LCAxLCAyMzYsIDg5LCAyMjQsIDE4NiwgMSwgMjM1LCAxOTksIDIyNCwgMTg2LCAxLCAKKyAgICAyMTksIDI1MywgMjI0LCAxODYsIDEsIDI0NywgMTkwLCAyMjQsIDE4NiwgMSwgMjQ3LCAzNywgMjI0LCAxODYsIDEsIDIyNywgCisgICAgMjQ4LCAyMjQsIDE4NiwgMSwgMjI3LCAyMTUsIDIyNCwgMTg2LCAxLCAyMDAsIDc3LCAyMjQsIDE4NiwgMSwgMjA3LCAzNiwgCisgICAgMjI0LCAxODYsIDEsIDIwNiwgMTIyLCAyMjQsIDE4NiwgMSwgMjQyLCA1OCwgMjI0LCAxODYsIDEsIDI0MSwgMTAwLCAyMjQsIAorICAgIDE4NiwgMSwgMTg4LCAyMjQsIDE4NiwgMSwgMTcyLCAyMjQsIDE4NiwgMSwgMjE1LCAyNDUsIDIyNCwgMTg2LCAxLCAyNDksIAorICAgIDEzNiwgMjI0LCAxODYsIDEsIDI0OCwgMjAwLCAyMjQsIDE4NiwgMSwgMTc4LCAyMjQsIDE4NiwgMSwgMTgzLCAyMjQsIDE4NiwgCisgICAgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCAxLCAxOTQsIDIyNCwgMTg2LCAxLCAyMDEsIDExNCwgMjI0LCAxODYsIDEsIDIxMCwgCisgICAgMTE0LCAyMjQsIDE4NiwgMSwgMjA4LCAxNzksIDIyNCwgMTg2LCAxLCAyMTIsIDY0LCAyMjQsIDE4NiwgMSwgMTQ0LCAyMjQsIAorICAgIDE4NiwgMSwgMjM1LCAxLCAyMjQsIDE4NiwgMSwgMjA1LCAxMzIsIDIyNCwgMTg2LCAyMiwgMiwgNjIsIDIyNCwgMTg2LCAyMiwgCisgICAgMiwgNzAsIDIyNCwgMTg2LCAyMiwgMiwgNjYsIDIyNCwgMTg2LCAyMiwgMiwgMjM4LCAyNTUsIDIyNCwgMTg2LCAyMiwgMiwgCisgICAgMjUxLCAxNzYsIDIyNCwgMTg2LCAyMiwgMiwgMjE3LCA2MywgMjI0LCAxODYsIDIyLCAyLCAyNTAsIDEzOSwgMjI0LCAxODYsIAorICAgIDIyLCAyLCA3MiwgMjI0LCAxODYsIDIyLCAyLCA3NCwgMjI0LCAxODYsIDIwOCwgMTIsIDEsIDE4MywgMjI0LCAxODYsIDIwOCwgCisgICAgMTIsIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgMjA4LCAxMiwgMSwgMjAxLCAxMTQsIDIyNCwgMTg2LCA0LCAxLCAxNjEsIAorICAgIDIyNCwgMTg2LCA0LCAxLCAyMTksIDI1MywgMjI0LCAxODYsIDQsIDEsIDI1MSwgMzMsIDIyNCwgMTg2LCA0LCAxLCAyMDcsIAorICAgIDM2LCAyMjQsIDE4NiwgNCwgMSwgMTg4LCAyMjQsIDE4NiwgNCwgMSwgMTcyLCAyMjQsIDE4NiwgNCwgMSwgMTc4LCAyMjQsIAorICAgIDE4NiwgNCwgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCA0LCAxLCAxOTQsIDIyNCwgMTg2LCAyLCAyMjEsIDI2LCAyMjQsIDE4NiwgCisgICAgMiwgMjI2LCAyNDksIDIyNCwgMTg2LCAyLCAyMTIsIDYyLCAyMjQsIDE4NiwgMiwgMjI0LCA3OCwgMjI0LCAxODYsIDIzOCwgCisgICAgNDMsIDgxLCAyMjQsIDE4NiwgMjE0LCA3OSwgODEsIDIyNCwgMTg2LCAxNywgMTk5LCA4MSwgMjI0LCAxODYsIDE3LCAxMDIsIAorICAgIDIyNCwgMTg2LCAxNywgMTA1LCAyMjQsIDE4NiwgMTcsIDE0NywgMjI0LCAxODYsIDE3LCAxNDksIDIyNCwgMTg2LCAxNywgCisgICAgMTY0LCAyMjQsIDE4NiwgMTcsIDE4NywgMjI0LCAxODYsIDE3LCAyMTAsIDEzNSwgMjI0LCAxODYsIDE3LCAxOTIsIDIyNCwgCisgICAgMTg2LCAxNywgMjE5LCAxMTMsIDQ2LCAyMjUsIDQxLCAxLCAxNjEsIDQ2LCAyMjUsIDQxLCAxLCAyMDAsIDE4MSwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDIxOSwgMjUzLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAzMiwgNDYsIDIyNSwgNDEsIDEsIDIxMiwgNjQsIAorICAgIDQ2LCAyMjUsIDQxLCAxLCAxODMsIDQ2LCAyMjUsIDQxLCAxLCAyMDcsIDM2LCA0NiwgMjI1LCA0MSwgMSwgMjA2LCAxMjIsIAorICAgIDQ2LCAyMjUsIDQxLCAxLCAxOTQsIDQ2LCAyMjUsIDQxLCAxLCAxNzIsIDQ2LCAyMjUsIDQxLCAxLCAyMTUsIDI0NSwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDE3OCwgNDYsIDIyNSwgNDEsIDEsIDIzNywgMTk1LCA0NiwgMjI1LCA0MSwgMSwgMjAzLCA5MCwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDE0NCwgNDYsIDIyNSwgNDEsIDEsIDIxNCwgMTU5LCA0NiwgMjI1LCA0MSwgMSwgMjI2LCAyMDcsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAyMDUsIDIyLCA0NiwgMjI1LCA0MSwgMSwgMTg4LCA0NiwgMjI1LCA0MSwgMSwgNjIsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCA3MCwgNDYsIDIyNSwgNDEsIDEsIDIzOCwgMjU1LCA0NiwgMjI1LCA0MSwgMSwgMjM4LCAyNDEsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCA2NiwgNDYsIDIyNSwgNDEsIDEsIDIxNywgNjMsIDQ2LCAyMjUsIDQxLCAxLCA3NCwgNDYsIDIyNSwgNDEsIDEsIAorICAgIDIwNCwgMzEsIDQ2LCAyMjUsIDQxLCAxLCA3MiwgNDYsIDIyNSwgNDEsIDEsIDI1MCwgMTM3LCA0NiwgMjI1LCA0MSwgMSwgCisgICAgMjUxLCAxNzYsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE3MiwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTcxLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgMjA1LCAxNzAsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE2OSwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTY4LCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIxNCwgMTU5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxNCwgMTU5LCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE2MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDAsIDE4MSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMTksIDI1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAxNjEsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjAwLCAxODEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE5LCAKKyAgICAyNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA1LCAzMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAKKyAgICAyMTIsIDY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE4MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAKKyAgICAyMDUsIDMyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxMiwgNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTgzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwNywgMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjA2LCAxMjIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTg4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDIwNywgMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjA2LCAxMjIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTg4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMTUsIDI0NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxNSwgMjQ1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE3OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMzcsIDE5NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMDMsIDkwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE5NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAyMzcsIDE5NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDMsIDkwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE5NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNDQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjQyLCA1OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyNDksIDEzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxNDQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjQyLCA1OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAyNDksIDEzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMjUsIDIzMSwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMSwgMTIyLCAyMDAsIDE0OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMjUsIDIzMSwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMSwgMTI4LCAyMDAsIDE0OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDgsIDIzLCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwOCwgMjMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMiwgMjA5LCAyMzgsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTIsIDEzOCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIyOCwgCisgICAgMTUxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNjYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUxLCAKKyAgICAyMjEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA3NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIxNywgCisgICAgMTQ2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjA0LCAzMSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIAorICAgIDI1MCwgMTEyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUyLCA5MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIAorICAgIDIsIDIwMywgMTc0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjE2LCAyMzAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDIyLCAyLCAyMTcsIDE0MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwNCwgMjcsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDIyLCAyLCAyMjgsIDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMDMsIDE2OCwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMSwgNDcsIDIxOSwgMjU1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjIwLCAyMTQsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDEsIDQ3LCAyMjMsIDI0MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIyNywgMTE4LCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjQyLCAxNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyNTAsIDEwMywgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMTUwLCAyMjIsIDE0OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTUwLCAyMjIsIDE0OCwgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMTcsIDE5OSwgODEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxMDIsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDE3LCAxMDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxNDcsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAKKyAgICAxNDksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxODcsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDE3LCAyMTAsIDEzNSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE5MiwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMTcsIDIxOSwgMTEzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxMDcsIDE3LCAxMDIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDIsIDIyNSwgMTYwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyLCAyMjUsIDE1OSwgODYsIDE2LCAyMTYsIDkwLCA4NiwgMTYsIAorICAgIDIyMSwgNiwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDE2NywgMjI2LCA4NCwgODYsIDE2LCAyNDgsIDIzNiwgMjI2LCA4NCwgCisgICAgODYsIDE2LCAyNDgsIDksIDIyNiwgODQsIDg2LCAxNiwgMjE1LCA0MywgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDM3LCAyMjYsIAorICAgIDg0LCA4NiwgMTYsIDIxNSwgMzUsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCA0MSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDM5LCAKKyAgICAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgNSwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDEsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAKKyAgICAwLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMywgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDIsIDIyNiwgODQsIDg2LCAxNiwgCisgICAgMjQxLCAyNTUsIDIyNiwgODQsIDg2LCAxNiwgMjA0LCAxNzgsIDg2LCAxNiwgMjIxLCA2LCAyMTIsIDI1MCwgODYsIDE2LCAKKyAgICAyMTUsIDE2NywgMjEyLCAyNTAsIDg2LCAxNiwgMjQ4LCAyMzYsIDIxMiwgMjUwLCA4NiwgMTYsIDI0OCwgOSwgMjEyLCAyNTAsIAorICAgIDg2LCAxNiwgMjE1LCA0MywgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzNywgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzNSwgCisgICAgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCA0MSwgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzOSwgMjEyLCAyNTAsIDg2LCAxNiwgCisgICAgMjQyLCA1LCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDEsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMCwgMjEyLCAyNTAsIDg2LCAKKyAgICAxNiwgMjQyLCAzLCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDIsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MSwgMjU1LCAyMTIsIAorICAgIDI1MCwgMjQ4LCAyOSwgMSwgMTYxLCAyNDgsIDI5LCAxLCAyMzYsIDg5LCAyNDgsIDI5LCAxLCAyMTksIDI1MywgMjQ4LCAyOSwgCisgICAgMSwgMjE5LCAxOTYsIDI0OCwgMjksIDEsIDE3MiwgMjQ4LCAyOSwgMSwgMjQ5LCAxMzYsIDI0OCwgMjksIDEsIDE3OCwgMjQ4LCAKKyAgICAyOSwgMSwgMjIxLCA0NSwgMjQ4LCAyOSwgMSwgMjA3LCAzNiwgMjQ4LCAyOSwgMSwgMjQyLCA1OCwgMjQ4LCAyOSwgMSwgCisgICAgMTg4LCAyNDgsIDI5LCAxLCAyMTgsIDE5NiwgMjQ4LCAyOSwgMSwgMjQ3LCAxOTAsIDI0OCwgMjksIDEsIDIyNywgMjQ4LCAKKyAgICAyNDgsIDI5LCAxLCAyMTgsIDYwLCAyNDgsIDI5LCAxLCAyMTgsIDUyLCAyNDgsIDI5LCAxLCAxODMsIDI0OCwgMjksIDEsIAorICAgIDIxMywgMjUyLCAyNDgsIDI5LCAxLCAxOTQsIDI0OCwgMjksIDEsIDIwMywgOTAsIDI0OCwgMjksIDEsIDIxMiwgNjQsIDI0OCwgCisgICAgMjksIDEsIDYyLCAyNDgsIDI5LCAxLCAxNDQsIDI0OCwgMjksIDIyLCAyLCA3MCwgMjQ4LCAyOSwgMjIsIDIsIDY2LCAyNDgsIAorICAgIDI5LCAyMiwgMiwgNzIsIDI0OCwgMjksIDIyLCAyLCA3NCwgMjQ4LCAyOSwgMjIsIDIsIDI1MSwgMjIxLCAyNDgsIDI5LCAKKyAgICAyMTYsIDE3OCwgMjQ4LCAyOSwgMjM4LCAxNzEsIDc2LCAyMTEsIDE5MiwgNDYsIDEwNywgMSwgMTIyLCAxNjEsIDQ2LCAxMDcsIAorICAgIDEsIDEyMiwgMjI2LCAyMDcsIDQ2LCAxMDcsIDEsIDEyMiwgMjI1LCAyMTUsIDQ2LCAxMDcsIDEsIDEyOCwgMTYxLCA0NiwgCisgICAgMTA3LCAxLCAxMjgsIDIyNSwgMjE1LCA0NiwgMTA3LCAxLCAxMjgsIDIyNiwgMjA3LCA0NiwgMTA3LCAxLCAyMTksIDI1MywgCisgICAgNDYsIDEwNywgMSwgMTIyLCAyNDcsIDE5MCwgNDYsIDEwNywgMSwgMTIyLCAyNDcsIDM3LCA0NiwgMTA3LCAxLCAxMjgsIAorICAgIDI0NywgMTkwLCA0NiwgMTA3LCAxLCAxMjgsIDIxMiwgNjQsIDQ2LCAxMDcsIDEsIDEyOCwgMjQ3LCAzNywgNDYsIDEwNywgMSwgCisgICAgMjE4LCA2MCwgNDYsIDEwNywgMSwgMjEzLCAyMDMsIDQ2LCAxMDcsIDEsIDEyMiwgMjEzLCAyMDEsIDQ2LCAxMDcsIDEsIAorICAgIDI0MiwgNTgsIDQ2LCAxMDcsIDEsIDEyOCwgMjEzLCAyMDEsIDQ2LCAxMDcsIDEsIDIxMywgMjEyLCA0NiwgMTA3LCAxLCAKKyAgICAxMjIsIDIwNywgMzYsIDQ2LCAxMDcsIDEsIDEyMiwgMjA2LCAxMjIsIDQ2LCAxMDcsIDEsIDEyOCwgMjA3LCAzNiwgNDYsIAorICAgIDEwNywgMSwgMTI4LCAyMDYsIDEyMiwgNDYsIDEwNywgMSwgMTg4LCA0NiwgMTA3LCAxLCAyNDksIDEzNiwgNDYsIDEwNywgMSwgCisgICAgMTIyLCAxNzIsIDQ2LCAxMDcsIDEsIDEyMiwgMjE1LCAyNDUsIDQ2LCAxMDcsIDEsIDEyMiwgMjM3LCAxOTUsIDQ2LCAxMDcsIAorICAgIDEsIDEyOCwgMTcyLCA0NiwgMTA3LCAxLCAxMjgsIDIzNywgMTk1LCA0NiwgMTA3LCAxLCAxMjgsIDIxNSwgMjQ1LCA0NiwgCisgICAgMTA3LCAxLCAxNzgsIDQ2LCAxMDcsIDEsIDEyOCwgMTgzLCA0NiwgMTA3LCAxLCAxMjIsIDE4MywgNDYsIDEwNywgMSwgMjEzLCAKKyAgICAyNTIsIDQ2LCAxMDcsIDEsIDIxMiwgMTcwLCA0NiwgMTA3LCAxLCAxOTQsIDQ2LCAxMDcsIDEsIDIyNCwgMzUsIDQ2LCAxMDcsIAorICAgIDEsIDIwMSwgMTE0LCA0NiwgMTA3LCAxLCAxMjIsIDIxMCwgMTE0LCA0NiwgMTA3LCAxLCAxMjIsIDIwOCwgMTc5LCA0NiwgCisgICAgMTA3LCAxLCAxMjIsIDIxMiwgNjQsIDQ2LCAxMDcsIDEsIDEyMiwgMTQ0LCA0NiwgMTA3LCAxLCAyMjQsIDEzOCwgNDYsIAorICAgIDEwNywgMSwgNjIsIDQ2LCAxMDcsIDEsIDEyOCwgMTQ0LCA0NiwgMTA3LCAxLCA3MCwgNDYsIDEwNywgMSwgMjI4LCAxNTEsIAorICAgIDQ2LCAxMDcsIDEsIDY2LCA0NiwgMTA3LCAxLCAyMDMsIDE4MiwgNDYsIDEwNywgMSwgMjM4LCAyNTUsIDQ2LCAxMDcsIDEsIAorICAgIDIxNywgNjMsIDQ2LCAxMDcsIDEsIDIyNSwgMTYwLCA0NiwgMTA3LCAxLCAyMzUsIDY5LCAyMTIsIDY0LCA0NiwgMTA3LCAKKyAgICAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDQ2LCAxMDcsIDExMSwgMiwgMTc5LCAxOTQsIDQ2LCAxMDcsIDExMSwgMiwgMjI1LCAKKyAgICAxNzYsIDIwNiwgMjQyLCAyMjUsIDE0OSwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIyNywgNjUsIDIyNSwgMTQ5LCA0NiwgCisgICAgMTA3LCAxMTEsIDIsIDQ3LCAyMTksIDI1MywgNDYsIDEwNywgMTExLCAyLCAxMjgsIDE3MiwgNDYsIDEwNywgMTExLCAyLCAKKyAgICAxMjIsIDIxMywgMjAyLCAyMTcsIDM0LCAxMjgsIDE3MiwgNDYsIDEwNywgMTExLCAyLCAxNzgsIDQ2LCAxMDcsIDExMSwgMiwgCisgICAgMjQ5LCAxMzYsIDQ2LCAxMDcsIDExMSwgMiwgMjEyLCA2NCwgNDYsIDEwNywgMiwgMjEyLCAzOCwgNDYsIDEwNywgMjIsIDIsIAorICAgIDYyLCA0NiwgMTA3LCAyMiwgMiwgMjIyLCAxOTksIDIxMSwgMjUxLCA0NiwgMTA3LCAyMiwgMiwgMjUyLCAxMzgsIDQ2LCAKKyAgICAxMDcsIDIyLCAyLCAyMDYsIDI0OCwgMjUyLCAxMzgsIDQ2LCAxMDcsIDIyLCAyLCA3MCwgNDYsIDEwNywgMjIsIDIsIDIyOCwgCisgICAgMTUxLCA0NiwgMTA3LCAyMiwgMiwgMjA0LCAzMSwgNDYsIDEwNywgMjIsIDIsIDIwMywgMTgxLCA0NiwgMTA3LCAyMiwgMiwgCisgICAgNjYsIDQ2LCAxMDcsIDIyLCAyLCAyMDMsIDE4MiwgNDYsIDEwNywgMjIsIDIsIDc0LCA0NiwgMTA3LCAyMiwgMiwgMjE3LCAKKyAgICAxNDcsIDU3LCA0NiwgMTA3LCAyMiwgMiwgMjE2LCAyMzAsIDQ2LCAxMDcsIDIyLCAyLCA3MiwgNDYsIDEwNywgMjIsIDIsIAorICAgIDI1MSwgMjIxLCA0NiwgMTA3LCAyMiwgMiwgMjE3LCA2MywgNDYsIDEwNywgMjIsIDIsIDI1MSwgMTc2LCA0NiwgMTA3LCAyMiwgCisgICAgMiwgMTA3LCAyNTEsIDE3NiwgNDYsIDEwNywgMjIsIDIsIDIxNywgMTQ3LCA1NiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIAorICAgIDIyNywgNjQsIDQ2LCAxMDcsIDIsIDIwNSwgMTczLCA0NiwgMTA3LCAyLCAyMDUsIDE3MiwgNDYsIDEwNywgMiwgMjI2LCAKKyAgICAxNjgsIDIwNSwgMTcxLCA0NiwgMTA3LCAyLCAyMjYsIDE2OCwgMjA1LCAxNzAsIDQ2LCAxMDcsIDIsIDIyNiwgMTY4LCAyMDUsIAorICAgIDE2OSwgNDYsIDEwNywgMiwgMjEzLCAyNTMsIDIzNCwgMjMyLCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjEyLCAyMywgNDYsIAorICAgIDEwNywgMiwgMjI2LCAxNjcsIDIyNywgNDYsIDQ2LCAxMDcsIDM4LCAyNDIsIDIxNywgMjQwLCAxODIsIDQ2LCAxMDcsIDIzMywgCisgICAgMTc5LCAxNywgMTk5LCA4MSwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxMDIsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTA1LCAKKyAgICA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE0NywgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxNDksIDQ2LCAxMDcsIDIzMywgCisgICAgMTc5LCAxNywgMTY0LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE4NywgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAyMTAsIAorICAgIDEzNSwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxOTIsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMjE5LCAxMTMsIDQ2LCAKKyAgICAxMDcsIDEwNywgMTcsIDE5OSwgODEsIDQ2LCAxMDcsIDEwNywgMTcsIDEwMiwgNDYsIDEwNywgMTA3LCAxNywgMTA1LCA0NiwgCisgICAgMTA3LCAxMDcsIDE3LCAxNDcsIDQ2LCAxMDcsIDEwNywgMTcsIDE0OSwgNDYsIDEwNywgMTA3LCAxNywgMTY0LCA0NiwgMTA3LCAKKyAgICAxMDcsIDE3LCAxODcsIDQ2LCAxMDcsIDEwNywgMTcsIDIxMCwgMTM1LCA0NiwgMTA3LCAxMDcsIDE3LCAxOTIsIDQ2LCAxMDcsIAorICAgIDEwNywgMTcsIDIxOSwgMTEzLCA0NiwgMTA3LCAyLCAyMDEsIDMwLCA0NiwgMTA3LCAyLCAyMDEsIDI5LCA0NiwgMTA3LCAyLCAKKyAgICAyMTEsIDIzOCwgNDYsIDEwNywgMiwgMjI2LCAyMzgsIDQ2LCAxMDcsIDIsIDIzMywgMTA3LCA0NiwgMTA3LCAyLCAyNDAsIAorICAgIDE5NiwgNDYsIDEwNywgMiwgMjEzLCAxMDUsIDIxMiwgMjI4LCAyMTMsIDIxMiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIwMCwgCisgICAgNzgsIDQ2LCAxMDcsIDIsIDIyNywgOTksIDQ2LCAxMDcsIDIsIDIyNywgOTgsIDQ2LCAxMDcsIDIsIDIxMSwgMjQ2LCA0NiwgCisgICAgMTA3LCAyLCAyMTEsIDI0NSwgNDYsIDEwNywgMiwgMjM0LCAxNzIsIDQ2LCAxMDcsIDIsIDI0NywgMTg3LCAzOCwgMjM5LCAKKyAgICAxNzIsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMzgsIDI0MSwgNzMsIDM4LCAyMjgsIDk0LCAzOCwgMTkxLCA0OCwgMzgsIDIwNSwgCisgICAgODMsIDI0MCwgMTgyLCAzOCwgMjAwLCAxOTQsIDU3LCAzOCwgMjAxLCAyMiwgMjI0LCAxNzcsIDU3LCAzOCwgMTc2LCAxMzQsIAorICAgIDU3LCAzOCwgNTMsIDE3NiwgMTM0LCA1NywgMzgsIDE2MiwgMjQ3LCA1NywgMjA4LCA0NywgNTcsIDM4LCAyMDgsIDMzLCAKKyAgICAyNDcsIDU3LCAyMDgsIDQ3LCA1NywgMzgsIDIxNiwgMTE3LCA1NiwgMzgsIDUzLCAyMTYsIDExNywgNTYsIDM4LCAyMTYsIAorICAgIDExNywgNTcsIDM4LCAyMTYsIDExNywgMjE2LCAyNDIsIDEzMywgMiwgMjA0LCAxNSwgMjEzLCA4MiwgMTMzLCAyLCAyMDQsIAorICAgIDE1LCAyNDcsIDE1MSwgMTMzLCAyLCAyNDcsIDcyLCAxMzMsIDIsIDIwNywgMjA1LCAxMzMsIDIsIDI0OCwgMTU3LCAxMzMsIAorICAgIDEsIDI1MSwgMTU3LCAxMzMsIDEsIDI1MSwgMTU4LCAyMDYsIDE5MiwgMTMzLCAxLCAyMjgsIDE0NywgMTMzLCAxLCAyMjgsIAorICAgIDE0OCwgMjA2LCAxOTIsIDEzMywgMSwgMjA0LCAxOCwgMTMzLCAxLCAyMDQsIDE5LCAyMDYsIDE5MiwgMTMzLCAxLCAyMTMsIAorICAgIDI1MywgMjEzLCAxMzUsIDEzMywgMSwgMjEzLCAyNTMsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAxLCAyMjUsIDE3NiwgCisgICAgMjI1LCAzLCAxMzMsIDEsIDIyNSwgMTc2LCAyMjUsIDQsIDIwNiwgMTkyLCAxMzMsIDEsIDIzOCwgMjE0LCAxMzMsIDEsIAorICAgIDI1MSwgMTc0LCAxMzMsIDEsIDIxNywgOTYsIDEzMywgMSwgMjE3LCA5NywgMjA2LCAxOTIsIDEzMywgMSwgMTYxLCAxMzMsIAorICAgIDEsIDIyNywgMTA4LCAyMjIsIDIwMiwgMTMzLCAxLCAyMzYsIDg5LCAxMzMsIDEsIDIzNiwgOTAsIDIzNSwgMTAyLCAxMzMsIAorICAgIDEsIDIxOSwgMjUzLCAxMzMsIDEsIDI0NywgMTkwLCAxMzMsIDEsIDI0NywgMTkxLCAyMjUsIDE2MywgMTMzLCAxLCAyMjcsIAorICAgIDI0OCwgMTMzLCAxLCAyMjcsIDI0OSwgMjI3LCAyMTksIDEzMywgMSwgMjE4LCA2MCwgMTMzLCAxLCAyMDcsIDM3LCAyMjUsIAorICAgIDYwLCAxMzMsIDEsIDIwNywgMzcsIDIyMSwgMSwgMjIyLCAyMDIsIDEzMywgMSwgMjQyLCA1OSwgMjIxLCAxLCAyNTEsIDExNCwgCisgICAgMTMzLCAxLCAyNDIsIDU5LCAyMjEsIDEsIDIyMiwgMjAyLCAxMzMsIDEsIDIyMCwgMTYyLCAyMTMsIDIxNSwgMTMzLCAxLCAKKyAgICAyMDcsIDM2LCAxMzMsIDEsIDIwNywgMzcsIDIwNiwgMjE0LCAxMzMsIDEsIDI0MiwgNTgsIDEzMywgMSwgMjQyLCA1OSwgCisgICAgMjIyLCAyMjEsIDEzMywgMSwgMTg4LCAxMzMsIDEsIDE3MiwgMTMzLCAxLCAyMTYsIDIxMSwgMjI3LCA1OCwgMTMzLCAxLCAKKyAgICAyNDksIDEzNiwgMTMzLCAxLCAyNDksIDEzNywgMjI2LCAyNTAsIDEzMywgMSwgMTc4LCAxMzMsIDEsIDE4MywgMTMzLCAxLCAKKyAgICAyMTMsIDI1MiwgMTMzLCAxLCAxOTQsIDEzMywgMSwgMjAxLCAxMTQsIDEzMywgMSwgMjEyLCA2NSwgMjEyLCA0OSwgMTMzLCAKKyAgICAxLCAyMTIsIDY1LCAyMTIsIDIsIDEzMywgMSwgMjEyLCA2NCwgMTMzLCAxLCAxNDQsIDEzMywgMiwgMjEzLCAxMjYsIDEzMywgCisgICAgMjIsIDIsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMDQsIDE0LCAxMzMsIDIyLCAyLCAyMDQsIDE1LCAyMTEsIDI1NCwgMTMzLCAKKyAgICAyMiwgMiwgMjA3LCAyMzgsIDEzMywgMjIsIDIsIDIwNywgMjM5LCAyMjgsIDEzOSwgMTMzLCAyMiwgMiwgMjEzLCAyNTMsIAorICAgIDIxMywgMTM1LCAxMzMsIDIyLCAyLCAyMTMsIDI1MywgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMjUsIDE3NiwgCisgICAgMjI1LCAzLCAxMzMsIDIyLCAyLCAyMjUsIDE3NiwgMjI1LCA0LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjA2LCAyNDksIAorICAgIDEzMywgMjIsIDIsIDIwNiwgMjUwLCAyMTMsIDEzNSwgMTMzLCAyMiwgMiwgMjA2LCAyNTAsIDIwNiwgMTkyLCAxMzMsIDIyLCAKKyAgICAyLCAyMDYsIDI1MCwgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMTYsIDMwLCAxMzMsIDIyLCAyLCAyMTYsIAorICAgIDMxLCAyMDYsIDE5MiwgMTMzLCAyNTEsIDIzMCwgMjUxLCAyMjksIDEzMywgMSwgMjI3LCA4NywgMjExLCAyNTMsIDEzMywgMSwgCisgICAgMjI2LCAxNzQsIDIxMSwgMjUzLCAxMzMsIDEsIDIwNCwgMTA4LCAyMTEsIDI1MywgMTMzLCAxLCAyMzgsIDI0OSwgMjExLCAKKyAgICAyNTMsIDEzMywgMSwgMjAzLCA2MCwgMjExLCAyNTMsIDEzMywgMSwgMTk5LCAxMDQsIDIxMSwgMjUzLCAxMzMsIDEsIDI1MCwgCisgICAgMTU4LCAyMTEsIDI1MywgMTMzLCAxNywgMTk5LCA4MSwgMTMzLCAxNywgMTAyLCAxMzMsIDE3LCAxMDUsIDEzMywgMTcsIAorICAgIDE0NywgMTMzLCAxNywgMTQ5LCAxMzMsIDE3LCAxNjQsIDEzMywgMTcsIDE4NywgMTMzLCAxNywgMjEwLCAxMzUsIDEzMywgCisgICAgMTcsIDE5MiwgMTMzLCAxNywgMjE5LCAxMTMsIDEzMywgMjE2LCAxNDMsIDEzMywgMjE2LCAxNzEsIDEzMywgMjAxLCAxNCwgCisgICAgMTMzLCAyNDcsIDEyNywgMjE2LCAxNjQsIDEzMywgMjQ3LCAxMjcsIDIwOSwgMTU4LCAxMzMsIDI0NywgMTI3LCAyMTYsIAorICAgIDExNCwgMTMzLCAyMTYsIDE3MCwgMTMzLCAzMiwgMTYsIDI0MCwgMTg4LCAxMzMsIDMyLCAxNiwgMjQxLCAxMzMsIDEzMywgCisgICAgMzIsIDE2LCAyMzksIDEyMSwgMTMzLCAzMiwgMTYsIDI0MiwgOCwgMTMzLCAzMiwgMTYsIDI0MiwgOSwgMjA3LCAyMDUsIAorICAgIDEzMywgMzIsIDE2LCAyNDEsIDE4LCAxMzMsIDMyLCAxNiwgMjQyLCA1MCwgMTMzLCAzMiwgMTYsIDI0MSwgMTA5LCAxMzMsIAorICAgIDMyLCAxNiwgMjQyLCAzMiwgMTMzLCAzMiwgMTYsIDI0MiwgOSwgMjM2LCA5LCAxMzMsIDMyLCAxNiwgMzgsIDIwNiwgMTg1LCAKKyAgICAxMzMsIDMyLCAxNiwgMzgsIDIzOCwgMTY5LCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ1LCAxMzMsIDMyLCAxNiwgMzgsIAorICAgIDIyNiwgMjQ3LCAxMzMsIDMyLCAxNiwgMzgsIDIyNywgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ2LCAzLCAyMjcsIAorICAgIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0OCwgMywgMjI3LCAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjQ4LCAyMjEsIAorICAgIDEzMywgMzIsIDE2LCAzOCwgMjM1LCAxMDYsIDEzMywgMzIsIDE2LCAyMTMsIDQ0LCAxNzYsIDIzOSwgMTMxLCAxMzMsIDMyLCAKKyAgICAxNiwgMjEzLCA0NCwgMTc2LCAyNDIsIDQ4LCAxMzMsIDMyLCAxNiwgMjEzLCA0NCwgMjQ2LCAxMTAsIDIwNCwgMjA3LCAxMzMsIAorICAgIDMyLCAxNiwgMjEzLCA0NCwgMjQ2LCAxMTAsIDIwNywgMiwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgMjE2LCAxNTcsIAorICAgIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIDIxNCwgMjEwLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMjQ2LCAxMTAsIDIxNSwgCisgICAgMTMxLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMjQ2LCAxMTAsIDIxNSwgMTE3LCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAKKyAgICAyMTUsIDE1NiwgMjA3LCAyMjcsIDIsIDIxNiwgMTQwLCAyMDcsIDIyNywgMiwgMjE2LCAxNTMsIDIwNywgMjI3LCAyLCAyMTYsIAorICAgIDE0OSwgMjA3LCAyMjcsIDEsIDYyLCAyMDcsIDIyNywgMSwgNzAsIDIwNywgMjI3LCAxLCA2NiwgMjA3LCAyMjcsIDEsIDI1MSwgCisgICAgMjIxLCAyMDcsIDIyNywgMSwgNzQsIDIwNywgMjI3LCAxLCA3MiwgMjA3LCAyMjcsIDEsIDIzOCwgNjksIDIwNywgMjI3LCAxLCAKKyAgICAxNjEsIDIwNywgMjI3LCAxLCAyMTQsIDE1OSwgMjA3LCAyMjcsIDEsIDIzNiwgODksIDIwNywgMjI3LCAxLCAyMTksIDI1MywgCisgICAgMjA3LCAyMjcsIDEsIDI0NywgMTkwLCAyMDcsIDIyNywgMSwgMjI3LCAyNDgsIDIwNywgMjI3LCAxLCAxOTksIDExNCwgMjA3LCAKKyAgICAyMjcsIDEsIDIxOCwgNjAsIDIwNywgMjI3LCAxLCAyMDcsIDM2LCAyMDcsIDIyNywgMSwgMjQyLCA1OCwgMjA3LCAyMjcsIDEsIAorICAgIDE4OCwgMjA3LCAyMjcsIDEsIDE3MiwgMjA3LCAyMjcsIDEsIDIzNywgMTk1LCAyMDcsIDIyNywgMSwgMjAzLCA5MCwgMjA3LCAKKyAgICAyMjcsIDEsIDI0OSwgMTM2LCAyMDcsIDIyNywgMSwgMTc4LCAyMDcsIDIyNywgMSwgMTgzLCAyMDcsIDIyNywgMSwgMjEzLCAKKyAgICAyNTIsIDIwNywgMjI3LCAxLCAxOTQsIDIwNywgMjI3LCAxLCAyMDEsIDExNCwgMjA3LCAyMjcsIDEsIDIxMiwgNjQsIDIwNywgCisgICAgMjI3LCAxLCAyMDAsIDE4MSwgMjA3LCAyMjcsIDEsIDE0NCwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxNjgsIDIwNywgMjI3LCAKKyAgICAxMTEsIDIsIDIxNiwgMTQyLCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDEzOSwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE1NiwgCisgICAgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDEzOCwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE2MSwgMjA3LCAyMjcsIDIyLCAyLCAKKyAgICAyMTYsIDE0OCwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE2OSwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE1OCwgMjA3LCAyMjcsIAorICAgIDIsIDIxNiwgMTcyLCAyMDcsIDIyNywgMiwgMjAyLCAyMDgsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTAzLCAxNzgsIDIwNywgCisgICAgMjI3LCAxMTEsIDIsIDIxNiwgMTAzLCAyMDEsIDExNCwgMjA3LCAyMjcsIDEsIDIyNiwgMjA3LCAyMDcsIDIyNywgMSwgMjA3LCAKKyAgICAxNjQsIDIwNywgMjI3LCAxNywgMTk5LCA4MSwgMjA3LCAyMjcsIDE3LCAxMDIsIDIwNywgMjI3LCAxNywgMTA1LCAyMDcsIAorICAgIDIyNywgMTcsIDE0NywgMjA3LCAyMjcsIDE3LCAxNDksIDIwNywgMjI3LCAxNywgMTY0LCAyMDcsIDIyNywgMTcsIDE4NywgCisgICAgMjA3LCAyMjcsIDE3LCAyMTAsIDEzNSwgMjA3LCAyMjcsIDE3LCAxOTIsIDIwNywgMjI3LCAxNywgMjE5LCAxMTMsIDIwNywgCisgICAgMjI3LCAyNTAsIDEyMiwgMjA3LCAyMjcsIDEsIDIxMywgMTA4LCAyMDcsIDIyNywgMSwgMjI0LCAyMzMsIDIwNywgMjI3LCAxLCAKKyAgICAyNDgsIDIwMCwgMjA3LCAyMjcsIDEsIDQ3LCAyMjcsIDExOCwgMjA3LCAyMjcsIDEsIDQ3LCAyMjMsIDI0MywgMjQ5LCA1NCwgCisgICAgMSwgNjIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCA2MiwgMjQ5LCA1NCwgMSwgMTQ0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgCisgICAgMTQ0LCAyNDksIDU0LCAxLCAyMjIsIDE3NSwgMTQ0LCAyNDksIDU0LCAxLCAyNDksIDEzNiwgMjQ5LCA1NCwgMSwgMjI3LCAKKyAgICA0MywgMjQ5LCAxMzYsIDI0OSwgNTQsIDEsIDE3MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE3MiwgMjQ5LCA1NCwgMSwgCisgICAgMTg4LCAyNDksIDU0LCAxLCAyMjIsIDE3NSwgMTg4LCAyNDksIDU0LCAxLCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjA5LCAKKyAgICAxNTAsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMTYsIDE4NSwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIzNiwgODksIDI0OSwgCisgICAgNTQsIDEsIDIwOSwgMTUwLCAyMzYsIDg5LCAyNDksIDU0LCAxLCAyMjcsIDI0OCwgMjQ5LCA1NCwgMSwgMjQyLCA1OCwgMjQ5LCAKKyAgICA1NCwgMSwgMjEzLCAyNTIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAyMTMsIDI1MiwgMjQ5LCA1NCwgMSwgMTc4LCAyNDksIAorICAgIDU0LCAxLCAyMDksIDE1MCwgMTc4LCAyNDksIDU0LCAxLCAyMDgsIDI1MiwgMjA3LCAzNiwgMjQ5LCA1NCwgMSwgMjE4LCAKKyAgICAyMTksIDIwNywgMzYsIDI0OSwgNTQsIDEsIDIxMiwgNjQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAyMTIsIDY0LCAyNDksIAorICAgIDU0LCAxLCAyMjIsIDE3NSwgMjEyLCA2NCwgMjQ5LCA1NCwgMSwgMTgzLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTgzLCAKKyAgICAyNDksIDU0LCAxLCAyMTksIDI1MywgMjQ5LCA1NCwgMSwgMTk0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTk0LCAyNDksIAorICAgIDU0LCAxLCAyMTgsIDYwLCAyNDksIDU0LCAxLCAyNDcsIDE5MCwgMjQ5LCA1NCwgMSwgMjIwLCA3NSwgMjQ5LCA1NCwgMSwgCisgICAgMjIyLCAxMTAsIDI0OSwgNTQsIDEsIDcwLCAyNDksIDU0LCAxLCA2NiwgMjQ5LCA1NCwgMiwgMjA1LCAxNzcsIDI0OSwgNTQsIAorICAgIDIyLCAyLCA3MiwgMjQ5LCA1NCwgMjIsIDIsIDIxNiwgMTg1LCA3MiwgMjQ5LCA1NCwgMjIsIDIsIDIzOCwgMjU1LCAyNDksIAorICAgIDU0LCAyMiwgMiwgNzAsIDI0OSwgNTQsIDIyLCAyLCAyMjcsIDQzLCA3MCwgMjQ5LCA1NCwgMjIsIDIsIDc0LCAyNDksIDU0LCAKKyAgICAyMiwgMiwgMjI3LCA0MywgNzQsIDI0OSwgNTQsIDIyLCAyLCA2NiwgMjQ5LCA1NCwgMjIsIDIsIDEwOCwgMzYsIDIwOSwgCisgICAgMTUwLCAyMTIsIDY0LCAyNDksIDU0LCAxMTEsIDIsIDIxOSwgMjU1LCAyNDksIDU0LCAxMTEsIDIsIDIzNCwgMjQ3LCAyNDksIAorICAgIDU0LCAyMTYsIDE1MSwgMjQ5LCA1NCwgMjE2LCAxNDcsIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjIwLCAxNjIsIDIyMiwgCisgICAgMTgsIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjE1LCAxNTksIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjI3LCAxNDQsIAorICAgIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjE2LCAxNTEsIDIyNCwgMjQzLCAxLCAxNjEsIDIyNCwgMjQzLCAxLCAyMjYsIDEwMiwgCisgICAgMjI0LCAyNDMsIDEsIDIyNiwgMjA3LCAyMjQsIDI0MywgMSwgMjM2LCA4OSwgMjI0LCAyNDMsIDEsIDIzNSwgMTMxLCAyMjQsIAorICAgIDI0MywgMSwgMjE5LCAyNTMsIDIyNCwgMjQzLCAxLCAyNDcsIDE5MCwgMjI0LCAyNDMsIDEsIDI0NywgMzcsIDIyNCwgMjQzLCAKKyAgICAxLCAyMjcsIDI0OCwgMjI0LCAyNDMsIDEsIDIxOCwgNjAsIDIyNCwgMjQzLCAxLCAyMDcsIDM2LCAyMjQsIDI0MywgMSwgCisgICAgMjA2LCAxMjIsIDIyNCwgMjQzLCAxLCAyNDIsIDU4LCAyMjQsIDI0MywgMSwgMTg4LCAyMjQsIDI0MywgMSwgMTcyLCAyMjQsIAorICAgIDI0MywgMSwgMjE1LCAxMzUsIDIyNCwgMjQzLCAxLCAyMTUsIDI0NSwgMjI0LCAyNDMsIDEsIDIzNywgMTk1LCAyMjQsIDI0MywgCisgICAgMSwgMjM3LCA1NSwgMjI0LCAyNDMsIDEsIDI0OSwgMTM2LCAyMjQsIDI0MywgMSwgMjQ4LCAxNDUsIDIyNCwgMjQzLCAxLCAKKyAgICAxNzgsIDIyNCwgMjQzLCAxLCAyMjEsIDE0MywgMjI0LCAyNDMsIDEsIDIwNSwgMzIsIDIyNCwgMjQzLCAxLCAyMDUsIDIyLCAKKyAgICAyMjQsIDI0MywgMSwgMjM5LCA5MywgMjI0LCAyNDMsIDEsIDE4MywgMjI0LCAyNDMsIDEsIDIxMywgMjUyLCAyMjQsIDI0MywgCisgICAgMSwgMTk0LCAyMjQsIDI0MywgMSwgMTQ0LCAyMjQsIDI0MywgMSwgMjM0LCAzOSwgMjI0LCAyNDMsIDEsIDIwMywgOTAsIAorICAgIDIyNCwgMjQzLCAxLCAyMTIsIDY0LCAyMjQsIDI0MywgMSwgMjEwLCAxMTQsIDIyNCwgMjQzLCAxLCAyMDEsIDExNCwgMjI0LCAKKyAgICAyNDMsIDEsIDYyLCAyMjQsIDI0MywgMjA4LCAxMiwgMSwgMTgzLCAyMjQsIDI0MywgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIAorICAgIDIyNCwgMjQzLCAyMiwgMiwgMjUyLCAxMzgsIDIyNCwgMjQzLCAyMiwgMiwgNzAsIDIyNCwgMjQzLCAyMiwgMiwgNzQsIDIyNCwgCisgICAgMjQzLCAyMiwgMiwgMjE3LCA2MywgMjI0LCAyNDMsIDIyLCAyLCA2NiwgMjI0LCAyNDMsIDIyLCAyLCAyMDMsIDE4MiwgMjI0LCAKKyAgICAyNDMsIDIyLCAyLCA3MiwgMjI0LCAyNDMsIDExMSwgMiwgMjI3LCAxMTgsIDIyNCwgMjQzLCAxMTEsIDIsIDIyMywgMjQzLCAKKyAgICAyMjQsIDI0MywgMTExLCAyLCAxNTYsIDIyNCwgMjQzLCAxMTEsIDIsIDIyMCwgMjE0LCAyMjQsIDI0MywgMTExLCAyLCAyMTYsIAorICAgIDIyNiwgMjI0LCAyNDMsIDExMSwgMiwgMTQ2LCAyMjQsIDI0MywgMTExLCAyLCAyMDcsIDgzLCAyMjQsIDI0MywgMTExLCAyLCAKKyAgICAyMTgsIDM0LCAyMjQsIDI0MywgMTExLCAyLCAyMjcsIDY0LCAyMjQsIDI0MywgMiwgMjEzLCAyMTMsIDIyNCwgMjQzLCAyLCAKKyAgICAyMTgsIDEwMCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDcsIDM0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIxOCwgNDUsIDIwNiwgCisgICAgMTgsIDIwNywgMzQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjQ3LCA0NCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDUsIDE0LCAKKyAgICAyNDcsIDQ0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNSwgMTMsIDIyNCwgMjQzLCAxNywgMTk5LCA4MSwgMjI0LCAyNDMsIAorICAgIDE3LCAxMDIsIDIyNCwgMjQzLCAxNywgMTA1LCAyMjQsIDI0MywgMTcsIDE0NywgMjI0LCAyNDMsIDE3LCAxNDksIDIyNCwgCisgICAgMjQzLCAxNywgMTY0LCAyMjQsIDI0MywgMTcsIDE4NywgMjI0LCAyNDMsIDE3LCAyMTAsIDEzNSwgMjI0LCAyNDMsIDE3LCAKKyAgICAxOTIsIDIyNCwgMjQzLCAxNywgMjE5LCAxMTMsIDIyNCwgMjQzLCAxLCAyMDQsIDI1MywgMjI0LCAyNDMsIDEsIDIwNCwgCisgICAgMjQxLCAyMjQsIDI0MywgMSwgMjQxLCAyMjAsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTk5LCA4MSwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDE3LCAxMDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTA1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE0NywgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNDksIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTY0LCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMTcsIDE4NywgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAyMTAsIDEzNSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAKKyAgICAxOTIsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMjE5LCAxMTMsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAxOTQsIDIxNywgOTQsIAorICAgIDI0NiwgMjI5LCAxLCAyNTAsIDE1NSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MSwgMTkzLCAyMTcsIDk0LCAyNDYsIDIyOSwgCisgICAgMSwgMjUxLCA3NiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MSwgMTUxLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI1LCAKKyAgICAxNzUsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDEwMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgMTAxLCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCA5OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgOTQsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxLCAyMjQsIDIxMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgMjYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAKKyAgICAyMjgsIDE1MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgNDcsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDM1LCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI0LCA0MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIwNCwgMzgsIDIxNywgOTQsIAorICAgIDI0NiwgMjI5LCAxLCAyMDQsIDM2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjAzLCAyMzMsIDIxNywgOTQsIDI0NiwgMjI5LCAKKyAgICAxLCAyMDMsIDE3NCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNSwgNDAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIAorICAgIDEzMywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOSwgMiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgMTc5LCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAxMDgsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjQsIDExMCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDEsIDIxNywgNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIxNywgMTQyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgCisgICAgMjE2LCAyNDksIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMTcsIDEwOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIyMSwgNDIsIAorICAgIDIwNCwgMjE4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjM2LCA4NCwgMjA0LCAyMTksIDIxNywgOTQsIDI0NiwgMjI5LCAyMjEsIAorICAgIDQwLCAyMDQsIDIxOSwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxMywgMTUwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMjE1LCAyNDMsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAyNTEsIDE4NCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxNCwgMjEyLCAyMjEsIDM2LCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMjE0LCAyMTIsIDUzLCAyMjEsIDM2LCAzNywgNCwgMSwgMjEyLCAyMTksIDIwMywgNTksIDM3LCA0LCAKKyAgICAxLCAyMjQsIDgyLCAyNDEsIDE3NSwgMzcsIDQsIDEsIDIyMCwgMTI0LCA3NCwgMzcsIDQsIDEsIDIwMSwgMjgsIDIzOCwgCisgICAgMTA0LCAzNywgNCwgMSwgMjA2LCAyNDgsIDIwNiwgMjAxLCAzNywgNCwgMSwgMjA2LCA0MywgMjA2LCAyMDEsIDM3LCA0LCAxLCAKKyAgICAyMDYsIDI0OCwgMjM0LCAxNjUsIDU0LCAzNywgNCwgMSwgMjA2LCAyNDgsIDIwMCwgNjUsIDM3LCA0LCAxLCAyMDQsIDAsIAorICAgIDIwNCwgMjAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIwNywgMTk4LCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgCisgICAgMTY2LCAyMTYsIDE1MiwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjE0LCAyMDAsIDIwNywgMjI3LCAyMTQsIAorICAgIDIxMiwgMjQ4LCAxNjYsIDI0NywgMTc1LCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMjQsIDIzNCwgMjExLCAKKyAgICAyNTAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIyNywgMTA4LCAyMTEsIDI1MCwgMjA3LCAyMjcsIDIxNCwgCisgICAgMjEyLCAyNDgsIDE2NiwgMjQyLCA1OSwgMjExLCAyNTAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDI0OSwgMTM3LCAKKyAgICAyMTEsIDI1MCwgMjAzLCA1NiwgMTUwLCAyMjcsIDQxLCAyMDMsIDU2LCAxNTAsIDIxMCwgODEsIDIwMywgNTYsIDE1MCwgCisgICAgMjE1LCAyMywgMjAzLCA1NiwgMiwgMjE5LCAxMjYsIDIwMywgNTYsIDIsIDIwMCwgODYsIDIyMSwgMjAyLCAyMDcsIDE4OSwgCisgICAgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyNTEsIDE4OSwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwMCwgCisgICAgODYsIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyMjcsIDI5LCAyMjgsIDEwNCwgMjA3LCAKKyAgICAxODksIDIwMywgNTYsIDE1MCwgMjQ3LCAxNTIsIDU3LCAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDIyNywgMjksIDIyOCwgCisgICAgMTA0LCAyMDcsIDE5MCwgMjExLCAyMjAsIDIwMywgNTYsIDE1MCwgNTMsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwNSwgCisgICAgODMsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIyNywgMjksIDI1MSwgMzUsIDIwMywgNTYsIDE1MCwgNzMsIDU3LCAyMDMsIAorICAgIDU2LCAxNTAsIDEyMCwgMTkwLCA1NywgMjAzLCA1NiwgMTUwLCAxMjYsIDE5MCwgNTcsIDIwMywgNTYsIDE1MCwgMjEzLCAzNCwgCisgICAgMjI3LCA0MCwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDI1MCwgMTUyLCAyMjgsIDEwNCwgMjA3LCAxODksIAorICAgIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNCwgMzMsIDIwMywgNTYsIAorICAgIDIsIDIxMywgMTA1LCAyMDIsIDIwNCwgMjA0LCAzMywgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDI1MSwgMzUsIDIwMywgNTYsIAorICAgIDIsIDIxMywgMTA1LCAyMDIsIDIwNCwgMjUxLCAzNSwgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNCwgMzQsIDMsIDIwNywgNiwgCisgICAgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDI1MSwgMzYsIDMsIDIwNywgNiwgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjUxLCA1MCwgCisgICAgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjQ5LCAxMDQsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDIwMywgODEsIDIwMywgNTYsIDIsIAorICAgIDI1MSwgMzQsIDIwMywgODIsIDMsIDIwNywgNiwgMjAzLCA1NiwgMiwgMjA1LCAyMTQsIDIwMywgNTYsIDIsIDIzNCwgODcsIAorICAgIDE2OCwgMjUxLCAzMywgMjAzLCA1NiwgMiwgMTY4LCAyNTEsIDMzLCAyMDMsIDU2LCAyLCAyMTIsIDE3NywgMTY4LCAyNTEsIAorICAgIDMzLCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyMDQsIDQwLCAyMjEsIDI3LCAyMDMsIDU2LCAyLCAyNTAsIDIzMCwgMjAzLCA1NiwgCisgICAgMiwgMjEyLCAyMjgsIDI1MCwgMjMwLCAyMDMsIDU2LCAxNTAsIDI0NywgMTUyLCA1NiwgMjAzLCA1NiwgMiwgMjI3LCAyMDEsIAorICAgIDIwMywgNTYsIDIsIDIwMywgMjI2LCAyMDMsIDU2LCAxNTAsIDIxMywgMjcsIDU2LCAyMDMsIDU2LCAxNTAsIDUzLCAyMTMsIAorICAgIDI3LCA1NiwgOCwgMSwgNCwgNiwgNjIsIDgsIDEsIDQsIDYsIDI1MSwgMjIxLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjUxLCAKKyAgICAyMjEsIDgsIDEsIDQsIDYsIDI0OSwgNzEsIDI1MCwgMTAzLCA4LCAxLCA0LCA2LCAyNDcsIDIyMywgOCwgMSwgNCwgNiwgCisgICAgMjQyLCAxNTMsIDgsIDEsIDQsIDYsIDIzOCwgNzQsIDgsIDEsIDQsIDYsIDcyLCA4LCA0LCAxLCAyMDQsIDE4NSwgMTc2LCAKKyAgICA3MiwgOCwgNCwgMSwgMjA0LCAxODUsIDcwLCA4LCAxLCA0LCA2LCAyMjcsIDI1MSwgOCwgMSwgNCwgNiwgMjI3LCAxMTgsIDgsIAorICAgIDEsIDQsIDYsIDIyNSwgMTkzLCAzLCA5NywgOCwgMSwgNCwgNiwgMjIzLCAyNDMsIDgsIDEsIDQsIDYsIDIxMywgMTA1LCAKKyAgICAyMjAsIDIxNCwgOCwgMSwgNCwgNiwgNzQsIDgsIDEsIDQsIDYsIDE3NiwgNzQsIDgsIDQsIDEsIDIwOSwgMTczLCA3NCwgOCwgCisgICAgNCwgMSwgMjA5LCAxNzMsIDE3NiwgNzQsIDgsIDQsIDEsIDIwOSwgMTczLCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMjE3LCAxMjEsIDgsIDEsIDQsIDYsIDIxNywgMywgOCwgNCwgMSwgMjA1LCAxNTgsIDE2NywgNzQsIDgsIDQsIDEsIAorICAgIDI0OCwgOTMsIDE2NywgNzQsIDgsIDEsIDQsIDYsIDIxNiwgMjI2LCA4LCAxLCA0LCA2LCAyMTMsIDEwNSwgMTQ2LCA4LCAxLCAKKyAgICA0LCA2LCAyMDQsIDE4NSwgMTQ2LCA4LCAxLCA0LCA2LCAyMDcsIDgzLCA4LCAxLCA0LCA2LCA2NiwgOCwgNCwgMSwgMjA5LCAKKyAgICAxNzMsIDY2LCA4LCA0LCAxLCAyMDksIDE3MywgMjQxLCA3MiwgNjYsIDgsIDQsIDEsIDIwOSwgMTczLCAyMDQsIDE4NSwgCisgICAgMjIzLCAyNDMsIDgsIDEsIDQsIDYsIDIwMywgMTY4LCA4LCAxLCA0LCA2LCAyMDEsIDE0NywgOCwgMSwgNCwgNiwgMTk5LCAKKyAgICAxNTcsIDgsIDEsIDQsIDYsIDIzOCwgOCwgOCwgMSwgMjAyLCAxODksIDIyNSwgNjYsIDIwOCwgMjE2LCA4LCAxLCAyNTEsIAorICAgIDE3MSwgMzEsIDEsIDQsIDYsIDIzNiwgNjAsIDMxLCAxLCA0LCA2LCAyMjUsIDg3LCAzMSwgMSwgNCwgNiwgMjE1LCAyMDQsIAorICAgIDMxLCAxLCA0LCA2LCAyMTMsIDkwLCAzMSwgMSwgNCwgNiwgMjE0LCAyMzUsIDM3LCAxLCA0LCA2LCAyMzgsIDIwOSwgNjcsIAorICAgIDEsIDYsIDYyLCA2NywgMSwgNiwgMjUxLCAyMjEsIDY3LCAxLCA2LCAyNTAsIDEwMywgNjcsIDEsIDYsIDI0OSwgNzEsIDI1MCwgCisgICAgMTAzLCA2NywgMSwgNiwgMjQyLCAxNTMsIDY3LCAxLCA2LCA3MiwgNjcsIDEsIDYsIDIxMywgMTA1LCA3MiwgNjcsIDEsIDYsIAorICAgIDIzNiwgMTU2LCA2NywgMSwgNiwgMjM0LCAyNDcsIDY3LCAxLCA2LCA3MCwgNjcsIDEsIDYsIDIyNywgMjUxLCA2NywgMSwgNiwgCisgICAgMjI3LCAxMTgsIDY3LCAxLCA2LCAxNTYsIDY3LCAxLCA2LCAyMjMsIDI0MywgNjcsIDEsIDYsIDIyMCwgMjE0LCA2NywgMSwgCisgICAgNiwgMjEzLCAxMDUsIDIyMCwgMjE0LCA2NywgMSwgNiwgNzQsIDY3LCAxLCA2LCAyMTcsIDMsIDY3LCAxLCA2LCAyMTYsIAorICAgIDIyNiwgNjcsIDEsIDYsIDE0NiwgNjcsIDEsIDYsIDIwNywgODMsIDY3LCAxLCA2LCA2NiwgNjcsIDEsIDYsIDIwMSwgMTQ3LCAKKyAgICA2NywgMSwgNCwgNjIsIDY3LCAxLCA0LCAyMDQsIDE4NSwgNjIsIDY3LCAxLCA0LCAyNTEsIDExMiwgNjcsIDEsIDQsIDIwNCwgCisgICAgMTg1LCAyNTEsIDIyMSwgNjcsIDEsIDQsIDI1MCwgMTAzLCA2NywgMSwgNCwgMjQyLCAxNTMsIDY3LCAxLCA0LCA3MiwgNjcsIAorICAgIDEsIDQsIDIxMSwgMjE4LCA2NywgMSwgNCwgMTc2LCA3MiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAxNzYsIDcyLCA2NywgMSwgNCwgCisgICAgMjM2LCAxNTYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgNzAsIDY3LCAxLCA0LCAyMjcsIDExOCwgNjcsIDEsIDQsIDIyMywgMjQzLCAKKyAgICA2NywgMSwgNCwgMjM4LCAxNjUsIDY3LCAxLCA0LCA3NCwgNjcsIDEsIDQsIDE3NiwgNzQsIDY3LCAxLCA0LCAyMDUsIDE1OCwgCisgICAgMTY3LCA3NCwgNjcsIDEsIDQsIDI0OCwgOTMsIDE2NywgNzQsIDY3LCAxLCA0LCAyMTYsIDIyNiwgNjcsIDEsIDQsIDIwNywgCisgICAgODMsIDY3LCAxLCA0LCA2NiwgNjcsIDEsIDQsIDIwOSwgMTczLCA2NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMjMsIDI0MywgCisgICAgNjcsIDEsIDQsIDIwMywgMTY4LCA2NywgMSwgNCwgMjUxLCAxNzEsIDY3LCAxLCA0LCAyNDgsIDIwOCwgNjcsIDEsIDQsIDMxLCAKKyAgICAyMzYsIDYwLCA2NywgMSwgNCwgMjQxLCAxMzYsIDY3LCAxLCA0LCAzMSwgMjE1LCAyMjksIDY3LCAxLCA0LCAyNDYsIDIzNiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCA3MCwgOCwgMjA4LCA0LCA0LCAxLCAxNDYsIDgsIDIwOCwgNCwgNCwgMSwgNjYsIDgsIDIwOCwgCisgICAgNCwgNCwgMSwgMjAzLCAxNjgsIDMxLCAyMDgsIDQsIDQsIDEsIDI0OCwgMjA4LCAzMSwgMjA4LCA0LCA0LCAxLCAyMzYsIDYwLCAKKyAgICAzMSwgMjA4LCA0LCA0LCAxLCAyMTMsIDkwLCAzMSwgMjA4LCA0LCA0LCAxLCAyMTUsIDIyOSwgMzEsIDIwOCwgNCwgNCwgMSwgCisgICAgMjQ2LCAyMzYsIDgsIDQsIDEsIDIwNCwgMzEsIDgsIDQsIDEsIDY4LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjM4LCA2LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjMsIAorICAgIDI0NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI3LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIAorICAgIDMzLCAzLCAyMzcsIDY5LCAyNiwgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDEwMSwgMjA1LCAyNDAsIAorICAgIDgsIDQsIDEsIDIwNywgODQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAxMDEsIDIwNSwgMjQwLCAKKyAgICA4LCA0LCAxLCAyMDQsIDE4NSwgMjM2LCAxNTYsIDY3LCAxLCAzNywgMjM4LCAxNzksIDgsIDQsIDEsIDIyOCwgNzEsIDIzNiwgCisgICAgMTU2LCA4LCA0LCAxLCAyMDYsIDEyNSwgMywgMjA4LCA1MSwgOCwgNCwgNiwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDQsIDEsIAorICAgIDIyOCwgNDIsIDMsIDk3LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgOTcsIDgsIDQsIDYsIDEsIDEwOCwgMywgOTcsIDgsIDQsIAorICAgIDEsIDIwMywgMjIxLCAzLCA5NywgOCwgNCwgMSwgNjgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAKKyAgICAxMTEsIDExNywgOCwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMzMsIAorICAgIDE4NywgMjYsIDIwNywgNiwgOCwgNCwgMSwgMTk3LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxNzYsIDE5NywgMywgCisgICAgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgMTk3LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAyMTEsIDIxOSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMTc2LCAxNjMsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDEwOCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjM4LCA5LCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMjA0LCAKKyAgICAxODUsIDI1MSwgMTEyLCA2NywgMSwgNCwgMjQ3LCAyMjMsIDY3LCAxLCA0LCAyNDcsIDIyNCwgMywgMjQyLCAxOTgsIDY3LCAKKyAgICAxLCA0LCAyMzgsIDc0LCA2NywgMSwgNCwgMjEzLCAxMDUsIDE3NiwgNzIsIDY3LCAxLCA0LCAyMzgsIDUsIDY3LCAxLCA0LCAKKyAgICAyNDAsIDE4MSwgMjI3LCAyNTIsIDMsIDk3LCA2NywgMSwgNCwgMTM1LCAyMzYsIDE1NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAKKyAgICAyMzQsIDI0NywgNjcsIDEsIDQsIDIzMywgMTksIDMsIDk3LCA2NywgMSwgNCwgMjI4LCA0MSwgNjcsIDEsIDQsIDYsIDcwLCAKKyAgICA2NywgMSwgNCwgNiwgMjMzLCAxOSwgMywgOTcsIDY3LCAxLCA0LCAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDY3LCAxLCA0LCAKKyAgICAyMjUsIDE5MywgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAyMTYsIDE4NCwgMTE3LCA2NywgMSwgCisgICAgNCwgNiwgMTU2LCA2NywgMSwgNCwgMjIzLCAyNDQsIDMsIDExNywgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMjMsIDI0NCwgMywgCisgICAgMTY4LCAyMjUsIDE2LCA2NywgMSwgNCwgMjIwLCAyMTUsIDMsIDQ5LCAxMTcsIDY3LCAxLCA0LCAyMjAsIDIxNSwgMywgMjEzLCAKKyAgICAxMTEsIDExNywgNjcsIDEsIDQsIDYsIDIyMCwgMjE0LCA2NywgMSwgNCwgMjQ5LCA3MSwgNzQsIDY3LCAxLCA0LCAyMTUsIAorICAgIDIyOSwgNjcsIDEsIDQsIDIxMiwgMTIzLCAzLCAxMTcsIDY3LCAxLCA0LCAyMzgsIDk0LCA2NywgMSwgNCwgMjA3LCA4NCwgMywgCisgICAgMjE2LCAxODQsIDExNywgNjcsIDEsIDQsIDEwOCwgMTQ4LCA2NywgMSwgNCwgMjAzLCAyMjAsIDY3LCAxLCA0LCA2LCA2NiwgCisgICAgNjcsIDEsIDQsIDIwMywgMTY5LCAzLCAxMTcsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjAzLCAxNjgsIDY3LCAxLCA0LCAxOTksIAorICAgIDE1NywgNjcsIDEsIDQsIDE5OSwgMTU4LCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMTk5LCAxNTgsIDMsIDI0MiwgCisgICAgMTk4LCA2NywgMSwgNCwgMjM4LCA4LCA2NywgMSwgNCwgMjA2LCA4OCwgMzgsIDIzOSwgMTgwLCAyMzUsIDc0LCAyNTEsIAorICAgIDI1MSwgMzgsIDIzOSwgMTgwLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDM4LCAyMDksIDQyLCA1NywgMzgsIDIwNywgMTk2LCA4MSwgCisgICAgMzgsIDIyMiwgMjI3LCAzOCwgMjM1LCA3MSwgMzgsIDIyMiwgMjI1LCAzOCwgMjUxLCAyMzcsIDM4LCAyMzUsIDcyLCAzOCwgCisgICAgMjUxLCAyMzgsIDM4LCA4LCA0LCAxLCAyMTQsIDMzLCA1NywgMzgsIDI0OCwgNTYsIDM4LCAyMjIsIDIyNiwgMzgsIDUzLCAKKyAgICAyNDYsIDE0NywgNTYsIDM4LCAyMTcsIDExMSwgNTYsIDM4LCAxOTksIDI3LCA1NywgMzgsIDIyOCwgMjcsIDU3LCAzOCwgCisgICAgMjAzLCAyMTUsIDU2LCAzOCwgMjAzLCAxOTgsIDU2LCAzOCwgOCwgNCwgMSwgMjM3LCA0MSwgMTc2LCAzNSwgNTYsIDM4LCA4LCAKKyAgICA0LCAxLCAyNTEsIDIyMSwgMzgsIDgsIDQsIDEsIDI1MSwgMzEsIDM4LCA4LCA0LCAxLCAyNTAsIDEyMywgMzgsIDgsIDQsIDEsIAorICAgIDI0NywgMjI0LCAyNDcsIDY5LCAzOCwgOCwgNCwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDM4LCA4LCA0LCAxLCAyMzgsIDc0LCAKKyAgICAzOCwgOCwgNCwgMSwgMjM2LCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAyMzYsIDE1NiwgMzgsIDgsIDQsIDEsIDIyNywgMTE4LCAKKyAgICAzOCwgOCwgNCwgMSwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMjIzLCAyNDMsIDM4LCA4LCAKKyAgICA0LCAxLCAyMjAsIDIxNCwgMzgsIDgsIDEsIDQsIDYsIDIyMCwgMjE0LCAzOCwgOCwgMSwgNCwgNiwgMTQ2LCAzOCwgOCwgNCwgCisgICAgMSwgMjE0LCAzMywgMjEyLCAyMjIsIDM4LCA4LCA0LCAxLCAyMTIsIDEyMiwgMzgsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjIsIAorICAgIDM4LCA4LCA0LCAxLCAxOTksIDE1NywgMzgsIDgsIDQsIDEsIDI1MSwgMTEyLCAzOCwgOCwgNCwgMSwgMjUwLCAxMDMsIDM4LCAKKyAgICA4LCA0LCAxLCAyNDgsIDIwOCwgMzgsIDgsIDQsIDEsIDIxMSwgMjE4LCAzOCwgOCwgNCwgMSwgMjM4LCA1LCAzOCwgOCwgNCwgCisgICAgMSwgMjI1LCAxOTMsIDMsIDUzLCAxMDEsIDIwNSwgMjQwLCAzOCwgOCwgNCwgMSwgMTYzLCAzLCAxNjIsIDI0NywgNTcsIDk3LCAKKyAgICAzOCwgOCwgNCwgMSwgMjE2LCAyMjYsIDM4LCA4LCA0LCAxLCAyMzgsIDk0LCAzOCwgOCwgNCwgMSwgMTA4LCAzLCAxNjIsIAorICAgIDI0NywgNTcsIDk3LCAzOCwgOCwgNCwgMSwgMjAxLCAxNDcsIDM4LCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgMzgsIDgsIAorICAgIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMzgsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NCwgMzgsIDExNSwgMjA3LCAxOCwgCisgICAgNTYsIDM4LCAyNDEsIDE0NSwgODEsIDM4LCA1MywgMjI4LCA1MCwgMjQ4LCA1OCwgNTcsIDM4LCAyNTEsIDExNywgMTYwLCAKKyAgICAyMDUsIDE4NiwgNTcsIDM4LCA0OSwgMjUwLCAyMDMsIDU2LCAzOCwgNTEsIDI1MCwgMjAzLCAyNiwgMTI3LCAyNTAsIDIwMywgCisgICAgNTcsIDgsIDYsIDEsIDM1LCAzLCAyMTMsIDI3LCA1NywgOCwgNCwgMSwgMzUsIDMsIDIxMywgMjcsIDU3LCA4LCA2LCAxLCAKKyAgICA2OCwgMywgNzMsIDU2LCA4LCA0LCAxLCA2OCwgMywgNzMsIDU2LCA4LCA2LCAxLCA2OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICA2OCwgMywgNzMsIDU3LCA4LCA2LCAxLCA2OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCA2OCwgMywgMjI0LCAxNzcsIAorICAgIDU3LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA3MCwgMjYsIDE2OSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgCisgICAgNzAsIDI2LCAxNjksIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTYsIAorICAgIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMjIsIAorICAgIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIAorICAgIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIAorICAgIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjA1LCAKKyAgICAyNDEsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDcwLCAyNiwgCisgICAgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDcsIDcwLCAyNiwgMjQ4LCA1NywgOCwgNiwgMSwgMjM4LCA2LCAzLCA3MywgCisgICAgNTYsIDgsIDQsIDEsIDIzOCwgNiwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDIzNiwgMTU3LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjM0LCAyNDgsIAorICAgIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMzQsIAorICAgIDI0OCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAKKyAgICAyNDgsIDU4LCA1NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0OCwgNTgsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMDUsIAorICAgIDI0MSwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NSwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIAorICAgIDE2OSwgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDE2OSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMjI3LCAxMTksIDMsIDczLCA1NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjI3LCAKKyAgICAxMTksIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDczLCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyMjQsIDE3NywgNTcsIAorICAgIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDYsIDE0NywgNTcsIAorICAgIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCAxNjksIDgsIDQsIDEsIAorICAgIDIyMywgMjQ0LCAzLCAxNjksIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE1LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICA3MywgNTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMjQsIDE3NywgNTcsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDYsIDE0NywgNTcsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAxNjksIAorICAgIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyNDEsIAorICAgIDc0LCA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjQxLCA3NCwgOCwgNiwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAyMTYsIDIyNywgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMTY5LCA4LCA2LCAxLCAyMTYsIDIyNywgMywgNzMsIDU2LCA4LCA0LCAxLCAKKyAgICAyMTYsIDIyNywgMywgNzMsIDU2LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIAorICAgIDczLCA1NiwgOCwgNiwgMSwgMjE0LCAzMywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA3MywgNTcsIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA3MywgMjQ4LCAKKyAgICAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjE0LCAzMywgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDIxMiwgMTIzLCAzLCAyNTEsIDIzOSwgMjYsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDI1MSwgMjM5LCAyNiwgCisgICAgNzMsIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCAxMjYsIDI2LCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAKKyAgICAyNDcsIDEyNiwgMjYsIDczLCA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOCwgNiwgMSwgMjA3LCA4NCwgMywgNzMsIDU2LCAKKyAgICA4LCA0LCAxLCAyMDcsIDg0LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIwNywgODQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjA3LCAKKyAgICA4NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIAorICAgIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAKKyAgICAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgNTcsIAorICAgIDgsIDYsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgCisgICAgMTA4LCAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMjQxLCA3NCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDI0MSwgNzQsIDgsIDYsIDEsIAorICAgIDIwMywgMTY5LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMDMsIDE2OSwgCisgICAgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAxNjksIDgsIDQsIDEsIDIwMSwgCisgICAgMTQ4LCAzLCAxNjksIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjQxLCAKKyAgICA3NCwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NiwgOCwgNiwgMSwgCisgICAgMjAxLCAxNDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NywgOCwgNiwgMSwgMjAwLCAxOTYsIDMsIAorICAgIDczLCA1NiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjAwLCAxOTYsIDMsIDI0MSwgNzQsIDgsIAorICAgIDQsIDEsIDIwMCwgMTk2LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMDAsIAorICAgIDEyNCwgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAKKyAgICAyNDYsIDE0NiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMTk5LCAxNTgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIyNCwgMTc3LCA1NywgOCwgCisgICAgNCwgMSwgMjM0LCAyNDgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgCisgICAgMjAxLCAxNDgsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA1MSwgMTY3LCAyMTMsIDI2LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDE2OCwgCisgICAgMjEyLCAxMjMsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIzLCAzLCAxMjIsIDk3LCA4LCA2LCAxLCAKKyAgICAyMTAsIDc5LCAyMTIsIDEyMiwgOCwgNCwgMSwgMjQxLCAxMzYsIDgsIDYsIDEsIDM1LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDM1LCAzLCA3MywgNTcsIDgsIDYsIDEsIDM1LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDM1LCAzLCAyMzMsIDE4NywgCisgICAgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIAorICAgIDczLCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgCisgICAgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDgsIDU4LCAyNiwgMTY5LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzMsIDE4NywgNTYsIAorICAgIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIAorICAgIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgCisgICAgMjYsIDczLCA1NywgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDE5NywgMywgNzMsIDU3LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDczLCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE5NywgMywgCisgICAgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDIwNSwgMjQwLCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIAorICAgIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAKKyAgICAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIAorICAgIDEsIDIzMywgMTksIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMjMzLCAxOSwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMzMsIAorICAgIDE5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDE2MywgMywgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIAorICAgIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIAorICAgIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNCwgCisgICAgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzMsIAorICAgIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAxMDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMTA4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxODcsIAorICAgIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgCisgICAgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxMDgsIAorICAgIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNiwgCisgICAgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgCisgICAgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgCisgICAgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgCisgICAgMjA1LCAyNDAsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjIxLCAyMDMsIDIyNCwgMTM5LCA4LCAKKyAgICA0LCAxLCAyMjEsIDIwMywgMjI0LCAxMzksIDgsIDYsIDEsIDIyMSwgMjAzLCAyMDMsIDE2OCwgOCwgNCwgMSwgMjIxLCAyMDMsIAorICAgIDIwMywgMTY4LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjI0LCA3NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIyNCwgNzQsIAorICAgIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDEsIDMxLCA0LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgCisgICAgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDI1MSwgCisgICAgMTEzLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIAorICAgIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgCisgICAgMjMxLCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQxLCAKKyAgICAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIAorICAgIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIAorICAgIDI0MSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDQsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIAorICAgIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIAorICAgIDIwLCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MSwgMzEsIAorICAgIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIAorICAgIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgyLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIAorICAgIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA0LCAxLCAyMDMsIDIyMSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIAorICAgIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDEsIAorICAgIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgCisgICAgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgCisgICAgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMzEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODIsIDMsIAorICAgIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMDMsIDc0LCAKKyAgICAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIAorICAgIDIxNywgODQsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIAorICAgIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIAorICAgIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAKKyAgICAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIAorICAgIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgCisgICAgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAKKyAgICAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNCwgMSwgCisgICAgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgCisgICAgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgCisgICAgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAKKyAgICAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgCisgICAgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAKKyAgICAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIAorICAgIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgCisgICAgMjE0LCAyNDIsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjQxLCAyNDIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAKKyAgICAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTQsIDI0MiwgCisgICAgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIAorICAgIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgCisgICAgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgCisgICAgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDIsIDE3MCwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEzLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc1LCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAyMzIsIAorICAgIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyMjIsIDIyOCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjQyLCAzMSwgMjI2LCA1OCwgMzEsIDIxNCwgMjQyLCAzMSwgMjE0LCAKKyAgICAyMjgsIDMxLCAyMTYsIDIwLCAzMSwgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgCisgICAgMywgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIAorICAgIDEyNSwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDI0MiwgMzEsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAKKyAgICAyMDIsIDE3MCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjI4LCA0MiwgCisgICAgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAKKyAgICAzMSwgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMDIsIDE3MCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAKKyAgICAyNDEsIDY4LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMTMsIDkxLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxMywgOTEsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgCisgICAgMjAzLCAyMjEsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA2LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjIyLCAyMjgsIDMxLCA2LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxMywgOTEsIDMsIAorICAgIDI0MSwgMjQxLCAzMSwgMjQxLCA2OCwgMjYsIDIwMywgNzQsIDMxLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgCisgICAgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIAorICAgIDIxNywgODIsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIAorICAgIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgCisgICAgMjQyLCAzMSwgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MSwgMjM4LCAxODAsIDIxNCwgOTQsIDIzOCwgMTkxLCAyMTQsIDk0LCAKKyAgICAyMzgsIDE4MCwgMjA4LCAyNDQsIDIzOCwgMTkxLCAyMDgsIDI0NCwgMjA2LCA0MSwgMjA4LCAyNDQsIDIzNiwgMjI3LCAyMDgsIAorICAgIDI0NCwgMjA5LCAxMDQsIDIwOCwgMjQ0LCAyMzcsIDEwMiwgMjA4LCAyNDQsIDIxNCwgMjEyLCAyMDgsIDI0NCwgMjA2LCA3NywgCisgICAgMjA4LCAyNDQsIDIzNCwgMjIyLCAyMDgsIDI0NCwgMTk5LCA4MiwgMjAxLCAyNSwgMjA4LCAyNDQsIDE5OSwgODIsIDIwMSwgCisgICAgMjUsIDIxOCwgMjMyLCAxOTksIDgyLCAyMDEsIDI1LCAyMjcsIDE2MSwgMjI1LCAxOSwgODEsIDIxMywgMzcsIDgxLCAyMzMsIAorICAgIDMzLCAyMTgsIDIzMywgMjMzLCAzMywgMjM3LCAxMDIsIDI0MSwgMjQ0LCAyMzgsIDE4MCwgMjQxLCAyNDQsIDIzOCwgMTkxLCAKKyAgICAyNDEsIDI0NCwgMjMzLCAxNzcsIDE0OCwgNTMsIDgzLCAyMjQsIDE3NiwgNTMsIDEyOCwgMjI0LCAxNzYsIDQ5LCAyMDksIAorICAgIDEzOSwgMjE0LCA2MywgODEsIDUxLCAyMDksIDEzOSwgMjE0LCA2MywgODEsIDIwOSwgMTM5LCAyMjQsIDU4LCAyMTQsIDYzLCAKKyAgICA4MSwgMjA5LCAxMzksIDIzNCwgNTYsIDIxNCwgNjMsIDgxLCA0OSwgNTMsIDIxNCwgNjMsIDgxLCA1MSwgNTMsIDIxNCwgNjMsIAorICAgIDgxLCA1MywgMjI0LCA1OCwgMjE0LCA2MywgODEsIDUzLCAyMzQsIDU2LCAyMTQsIDYzLCA4MSwgMjQyLCA0MCwgNTMsIDI0MiwgCisgICAgNDAsIDI0OCwgMjAsIDIwNSwgOTUsIDI0OCwgMjAsIDExMiwgNzMsIDIyNSwgMzgsIDEyMCwgNzMsIDIyNSwgMzgsIDIzMywgCisgICAgMTc3LCAyMzgsIDE5NSwgMjMzLCAzMSwgMjE1LCA5OSwgMjI0LCAxNzcsIDIxMCwgMTU0LCAyMTYsIDEyOCwgMjEwLCAxNTQsIAorICAgIDIyNSwgMTksIDIzOCwgMTg5LCAyMTMsIDM3LCAyMzgsIDE4OSwgMjE1LCA3OCwgMjQxLCA4LCAyMzYsIDI0MCwgMjI1LCAxOSwgCisgICAgMjE2LCAyMzksIDIxMywgMzcsIDIxNiwgMjM5LCAyMjAsIDEyNCwgMjE4LCAyNDAsIDIwOCwgMjQ0LCAyMTYsIDI4LCAyMjEsIAorICAgIDE3MCwgNTQsIDIxNiwgMjgsIDIwNiwgMTY3LCAyMDYsIDUxLCA1NCwgMjE1LCAxNCwgNTMsIDIxNSwgMTQsIDIwNSwgODMsIAorICAgIDIxNSwgMTQsIDIxMywgMTA1LCAyMTUsIDE0LCAyMTMsIDEwNSwgNTMsIDIxNSwgMTQsIDIxMywgMTA1LCAyMDUsIDgzLCAKKyAgICAyMTUsIDE0LCAyNDcsIDEyOSwgMjA5LCAxMzksIDIyNSwgMjMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMDksIDEzOSwgCisgICAgMjEzLCA0MSwgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIxMywgMTY2LCA4MSwgNTMsIDIzOCwgNDMsIDgxLCAyMjgsIDU4LCAKKyAgICAyMTYsIDI0MSwgMjAzLCAyNDgsIDE3MSwgMjA2LCA3LCAyNDcsIDEzMCwgMjI4LCA3NSwgMjE1LCA5OSwgMjUwLCAxNjMsIAorICAgIDIzMywgMzQsIDI0OCwgMjAsIDIzNiwgMjE5LCAyMDksIDc1LCA0OSwgNTIsIDI0OCwgNzAsIDMsIDIxNCwgNzMsIDUxLCA1MiwgCisgICAgMjQ4LCA3MCwgMywgMjE0LCA3MywgNTMsIDIxNCwgNzksIDgxLCAyMTQsIDc5LCAyMzgsIDQzLCA4MSwgMjM4LCA0MywgMjE0LCAKKyAgICA3OSwgODEsIDIwNSwgMjE2LCAyLCAyMzgsIDgxLCAyMTMsIDEwNSwgMjE1LCAxNjMsIDU0LCA2MywgOTgsIDI0OCwgMjAsIAorICAgIDYzLCA4NywgMjQ4LCAyMCwgMTI4LCAyNTAsIDE2NSwgMjEzLCAxMDUsIDIxMCwgMTY3LCAyNDYsIDExMSwgMjAzLCAyMjgsIAorICAgIDEyMCwgMjUwLCAxNjQsIDI1MSwgMTI4LCAyMDIsIDI0NywgMjQ2LCA2OCwgMjIxLCAxNTcsIDU0LCAyMDcsIDE2NywgMjQxLCAKKyAgICAyNDQsIDIyOCwgNTAsIDIwMywgMjQ4LCAyMzcsIDI1LCAyMTQsIDIxMiwgODEsIDEyNiwgNzMsIDIxNCwgMjExLCAyMTQsIAorICAgIDkwLCAyMTUsIDE0LCAyMzYsIDIyOSwgNzMsIDIxNCwgMjExLCAyMzcsIDYxLCA3MywgMjE0LCAyMTEsIDEyMCwgNzMsIDIxNCwgCisgICAgMjExLCAyMzYsIDIyOSwgNzMsIDgxLCAyMzksIDE4MCwgMjQyLCAyMzQsIDIwNSwgOTQsIDgzLCAyMzYsIDIyOSwgMjQwLCAKKyAgICAxODAsIDIyMiwgNjYsIDEzLCAyMDgsIDI0NCwgMjAwLCAyMzgsIDIyNywgMTYxLCAyMzYsIDE4MSwgMjUxLCA4LCAyMjgsIAorICAgIDQ4LCAyMDUsIDIzMiwgMjI4LCA0OCwgMjEwLCAxNTQsIDIyOCwgNDgsIDIxNSwgMTEzLCAyMjUsIDE5LCAyMjgsIDE4LCAKKyAgICAyMTMsIDM3LCAyMjgsIDE4LCAyMzcsIDczLCAyMDgsIDMzLCAyMjgsIDE4LCAyMTUsIDc4LCAyNDEsIDgsIDIyOCwgMTgsIAorICAgIDIyOCwgODcsIDIwNywgMTE1LCAyMDcsIDE4NCwgMjUxLCAyNDEsIDIwNywgMTE1LCAyMDcsIDE4NCwgMjI4LCA4NywgOSwgCisgICAgMjM2LCAyNDIsIDIxMCwgODQsIDI1MSwgMjQxLCA5LCAyMzYsIDI0MiwgMjEwLCA4NCwgMjIwLCAxMTgsIDE3LCAyMTAsIDg1LCAKKyAgICAyMTgsIDIzNiwgMTcsIDIxMCwgODUsIDIwNywgMjEzLCAxOTksIDgxLCAyMDcsIDIxMywgOCwgNCwgMSwgNzAsIDIwNywgCisgICAgMjEzLCAxNDksIDIwNywgMjEzLCAxNjQsIDIwNywgMjEzLCAxODcsIDIwNywgMjEzLCAyMTAsIDEzNSwgMjA3LCAyMTMsIAorICAgIDE5MiwgMjA3LCAyMTMsIDIxOSwgMTEzLCAyMDcsIDIxMywgOTMsIDU0LCAyMDcsIDIxMywgMjIxLCAxNTYsIDIwNywgMjEzLCAKKyAgICAyMzgsIDEyMiwgNTQsIDIwNywgMjEzLCA0OSwgMjE2LCAxMTUsIDIwNywgMjEzLCA1MSwgMjE2LCAxMTUsIDIwNywgMjEzLCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNCwgMjA4LCA0LCAxOTksIDgxLCAyMDgsIDQsIDEwMiwgMjA4LCA0LCAxMDUsIDIwOCwgNCwgCisgICAgMTQ3LCAyMDgsIDQsIDE0OSwgMjA4LCA0LCAxNjQsIDIwOCwgNCwgMTg3LCAyMDgsIDQsIDIxMCwgMTM1LCAyMDgsIDQsIAorICAgIDE5MiwgMjA4LCA0LCAyMTksIDExMywgMjA4LCA0LCA5MywgNTQsIDIwOCwgNCwgMjIxLCAxNTYsIDIwOCwgNCwgMjM4LCAKKyAgICAxMjIsIDU0LCAyMDgsIDQsIDQ5LCAyMTYsIDExNSwgMjA4LCA0LCA1MSwgMjE2LCAxMTUsIDgsIDIwOCwgNCwgNCwgMSwgNjIsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgNzIsIDgsIDIwOCwgNCwgNCwgMSwgNzQsIDgsIDIwOCwgNCwgNCwgMSwgMjAwLCAxOTUsIDgsIAorICAgIDIwOCwgNCwgNCwgMSwgMjExLCAyMTgsIDgsIDIwOCwgNCwgNCwgMSwgMjM0LCAyNDcsIDgsIDIwOCwgNCwgNCwgMSwgMjI3LCAKKyAgICAxMTgsIDgsIDIwOCwgNCwgNCwgMSwgMTU2LCA4LCAyMDgsIDQsIDQsIDEsIDIyMywgMjQzLCA4LCAyMDgsIDQsIDQsIDEsIAorICAgIDIyMCwgMjE0LCA4LCAyMDgsIDQsIDQsIDEsIDIxNiwgMjI2LCA4LCAyMDgsIDQsIDQsIDEsIDIxMiwgMTIyLCA4LCAyMDgsIAorICAgIDQsIDQsIDEsIDIwNywgODMsIDIzOCwgNjAsIDU0LCAyNDYsIDgwLCA1NCwgMjQyLCAyMTksIDU0LCAyMzYsIDIwOSwgMjM2LCAKKyAgICAyMTMsIDU0LCAyMjQsIDE1NiwgNTQsIDIyMSwgMTcxLCA1NCwgMjIwLCAxNDEsIDU0LCAyMTYsIDUsIDU0LCAyMTIsIDE0OSwgCisgICAgNTQsIDIwMCwgMjQ2LCA1NCwgMjIwLCA4LCAyMTAsIDUxLCA1NCwgMjQwLCAxODksIDU0LCAyMzgsIDYxLCA1NCwgMjI2LCAKKyAgICAxNDIsIDU0LCAyMDQsIDIwOCwgNTQsIDIzOSwgMTYzLCA1NCwgMjM1LCAyNDYsIDIxNiwgNDAsIDU0LCAyMTYsIDIsIDU0LCAKKyAgICAyMzUsIDQ1LCA1NCwgMjUwLCAxMjksIDU0LCAyMzMsIDEwMywgNTQsIDI0NywgNzEsIDU0LCAyMjQsIDE0NiwgMjA1LCAxMzgsIAorICAgIDU0LCAyMDgsIDIyNSwgNTQsIDIwNiwgMTY0LCA1NCwgMjI4LCAxMDIsIDIxMiwgMTQ5LCA1NCwgMjA0LCAxODgsIDIyNCwgCisgICAgMTU2LCA1NCwgMjE4LCAyMjIsIDEzNCwgNTQsIDIyMiwgMTc4LCA1NCwgMjEyLCAxNzIsIDU0LCAyMjUsIDY3LCA1NCwgMzgsIAorICAgIDQ5LCAyMzQsIDE2MSwgNTYsIDM4LCA1MSwgMjM0LCAxNjEsIDU2LCAzOCwgMTY4LCA4MywgMjI0LCAxNzcsIDIxNiwgMjQyLCAKKyAgICAzOCwgMjA5LCAyNTAsIDgzLCAyMjQsIDE3NywgMjE2LCAyNDIsIDM4LCAyNTEsIDQ3LCA1NSwgNTYsIDM4LCAyNDYsIDExMiwgCisgICAgNTUsIDU2LCAzOCwgNDksIDU1LCA1NiwgMzgsIDUxLCA1NSwgNTYsIDM4LCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDI0NiwgCisgICAgMTEyLCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNDcsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMTI2LCAxOTAsIDU2LCAKKyAgICAzOCwgMjM2LCAyMjksIDE5MCwgNTYsIDM4LCAyMzgsIDE3NSwgMjQ2LCAxNTUsIDM4LCAyMzgsIDE3NSwgMjA4LCAxOTMsIAorICAgIDM4LCAyMzgsIDE3NSwgMjQxLCA2NCwgMzgsIDIzOCwgMTc1LCAyNDYsIDE1NiwgMjQ5LCAxMjQsIDM4LCA0OSwgNTEsIDU1LCAKKyAgICA1NiwgMzgsIDIzOCwgMTc1LCAyMTEsIDIwOSwgMzgsIDIzOCwgMTc1LCAyMjYsIDIxMCwgMzgsIDIzOCwgMTc1LCAyMDMsIAorICAgIDIxOCwgMjE1LCA5NiwgMjA1LCA5OCwgMzgsIDIxMywgMTA2LCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDUzLCA4MywgMjA4LCAKKyAgICA0NywgMjE2LCAyNDIsIDM4LCAyNTEsIDU3LCA5OSwgMzgsIDIwNSwgODMsIDIwMywgMjUwLCAzOCwgMjAxLCAyOCwgMjQ4LCAKKyAgICA1MSwgNTYsIDM4LCA5OCwgNTUsIDIxNiwgMjQyLCAzOCwgMTY4LCA1MywgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA4NywgCisgICAgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDM4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDM4LCA0OSwgCisgICAgNTUsIDU3LCAzOCwgNTEsIDU1LCA1NywgMzgsIDI1MCwgMTY2LCA1NiwgMjUxLCAyNDcsIDIxNywgMTE3LCAyNTEsIDIzMSwgCisgICAgMjA1LCAxODYsIDIwNiwgMTA3LCAyMDgsIDEzLCAxNzUsIDYsIDI0NywgMjIzLCAyNDEsIDE1NSwgMjQ3LCA2MSwgMjQ3LCAKKyAgICA1NiwgMjI0LCAxNzcsIDk5LCAyNDcsIDEzMSwgMjE3LCAxMTcsIDI0NywgMTgyLCAyMDQsIDQsIDIzOCwgNjIsIDI0MywgNTAsIAorICAgIDIxMSwgMjA2LCAyNDEsIDE1NSwgMjM3LCAxNzcsIDEzNSwgNCwgMjM2LCAxNTYsIDEzNSwgNiwgMjM0LCAyNDcsIDI0OCwgCisgICAgMTQyLCA2LCAyMzQsIDI0NywgMTc1LCA2LCAyMzQsIDI0NywgMjE1LCAxMzAsIDI0MywgNTAsIDIxNSwgMTMwLCAyNDMsIDUxLCAKKyAgICAxMTksIDEyMCwgMjE1LCAyMDQsIDEzNSwgNiwgNzAsIDI0OCwgMTQyLCA2LCA3MCwgMTM1LCA2LCAxNTYsIDEzNSwgNCwgCisgICAgMTU2LCAyMjUsIDE5MywgNjgsIDI0OSwgNzcsIDk5LCAxNzUsIDYsIDIyMCwgMjE0LCAyMTgsIDkxLCA1NCwgMjA5LCAxLCAKKyAgICAyMTMsIDE3OCwgMjQzLCAxOCwgMTM1LCA2LCAyMTYsIDIyNiwgMTc1LCA2LCAyMTYsIDIyNiwgMTc1LCA2LCAyMTQsIDE2NywgCisgICAgMTM1LCA2LCAxNDYsIDI0OCwgMTQyLCA2LCAxNDYsIDE3NSwgNiwgMTQ2LCAyMTUsIDIxLCAyMDYsIDI1NSwgMjEzLCAxMTgsIAorICAgIDIxMCwgMTQ2LCA4MSwgMjA2LCAxNzYsIDU0LCAyMDUsIDEyOCwgMTM0LCA1NCwgMjAzLCA0MywgMTc1LCA2LCAxOTksIDE1NywgCisgICAgMjE3LCAyLCA1NCwgMjE3LCAxMDcsIDU0LCAyMjgsIDUwLCAyMTcsIDEwNywgNTQsIDI0OCwgMTQyLCA2LCAxOTksIDE1NywgCisgICAgMjA0LCAxODUsIDMxLCA0LCAxLCAyMjgsIDQxLCAyMjYsIDI1MSwgNTQsIDI1MSwgNjYsIDU0LCAxMzUsIDYsIDI1MCwgMTAzLCAKKyAgICAyNDgsIDE0MiwgNiwgMjQ3LCAyMjMsIDIzOCwgODYsIDk5LCAxMzUsIDQsIDcyLCAxMzUsIDYsIDcyLCAxMzUsIDYsIDIzOCwgCisgICAgNSwgMjA0LCAxODUsIDYsIDIzOCwgNSwgMTM1LCA2LCAyMjMsIDI0MywgMTM1LCA0LCA3NCwgMTQwLCA5OSwgMjQ4LCAyMTEsIAorICAgIDk5LCAyMzUsIDE0OCwgOTksIDI0MiwgMjQsIDk5LCAyMjgsIDkyLCAyMDgsIDI1NSwgMjEyLCAyMjgsIDYsIDIxNCwgMTY3LCAKKyAgICAyMzcsIDE4MCwgNTQsIDE3NSwgNCwgMjE1LCAyMDQsIDE3NSwgNCwgMjM2LCA2MCwgMTc1LCA2LCAyMzYsIDYwLCAxNzUsIDYsIAorICAgIDIxNSwgMjA0LCAxNzUsIDIyMCwgMjEzLCAyMDcsIDIzMSwgMjA0LCAxODUsIDQzLCA2LCAyMzYsIDE1NiwgMjA0LCAxODUsIAorICAgIDQzLCA2LCAxNTYsIDIxMywgMTA1LCA0MywgNiwgMTU2LCAyMDQsIDE4NSwgNDMsIDYsIDIwMCwgMTIzLCAxNzUsIDM5LCA2LCAKKyAgICAyNDIsIDE1MywgMTc1LCAzOSwgNCwgMjQyLCAxNTMsIDE3NSwgMzksIDQsIDcyLCAxNzUsIDM5LCA0LCA3MCwgMTc1LCAzOSwgCisgICAgNCwgMjI3LCAyNTEsIDIxNCwgMjQ1LCAyMjQsIDE3NiwgMjA0LCAxODUsIDI1MSwgODksIDIxNiwgMjgsIDU0LCAyNTEsIAorICAgIDE1MywgMjA0LCAxODUsIDQsIDIzOCwgNSwgMTYsIDM2LCAyMTIsIDIyLCAyMDgsIDI1NSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIxMCwgMTMxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjE5LCAxMDcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMDYsIDE1NywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIwNiwgNzQsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTIwLCAKKyAgICAyMDYsIDcxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjM3LCAxMDcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTIwLCAyMzcsIAorICAgIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIzNywgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNiwgMjI5LCAKKyAgICAyMzcsIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM3LCA2MSwgCisgICAgMjA5LCA5NCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjM4LCAKKyAgICAyMjUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM3LCA2MSwgMjM4LCAyMjUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjEwLCAxMzYsIAorICAgIDIzOCwgMjI1LCAyMzYsIDIxOSwgMjE4LCA5MiwgMTAyLCAyMTIsIDI0MCwgMjE4LCA5MywgMTAyLCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTA1LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ3LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ5LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTY0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTg3LCAyMTIsIDI0MCwgMjE4LCA5MywgMjEwLCAxMzUsIDIxMiwgMjQwLCAKKyAgICAyMTgsIDkzLCAxOTIsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTksIDExMywgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNiwgMTY2LCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMjM4LCAxOTksIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDQsIDE2NCwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDIzNywgMTA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgyLCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAKKyAgICA2MSwgMjMzLCA4MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwMiwgCisgICAgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwNSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE0NywgNCwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDE0OSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE2NCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE4NywgNCwgMjEyLCAKKyAgICAyNDAsIDIxOCwgOTMsIDIxMCwgMTM1LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTkyLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgCisgICAgMjE5LCAxMTMsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDYsIDE2NiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzOCwgMTk5LCAKKyAgICA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA0LCAxNjQsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDEwNCwgNCwgMjEyLCAKKyAgICAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgNjEsIDIzMywgODIsIDQsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTEsIDI0NywgCisgICAgMjI0LCAyNDIsIDE1MywgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgNjEsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAKKyAgICAyMDYsIDE2NywgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIxMywgMTA1LCAxMTIsIDIzMywgODIsIDgsIDQsIDEsIAorICAgIDIxMywgMTA1LCAyNDcsIDIyMywgMjEyLCAyNDAsIDIxOCwgOTMsIDIwOSwgMTA2LCAyMjUsIDYyLCAxOSwgMjEyLCAyNDAsIAorICAgIDIxOCwgOTMsIDIzNywgMTA1LCAyMzksIDIwLCAxOSwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgMTA1LCAyMDYsIDUwLCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgzLCAyMDYsIDUwLCAyMDEsIDE2NCwgMjM2LCAyMTksIDE5OSwgODIsIAorICAgIDIwNiwgNzEsIDIwNCwgMTg1LCAxNywgMTA1LCAyMDQsIDE4NSwgMTcsIDE0NywgOTgsIDQ4LCAxODIsIDQ4LCA4NywgNDgsIAorICAgIDE5MSwgNDgsIDQ5LCA1MSwgNDgsIDExNSwgMTI3LCA0OCwgMTU3LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMzksIDE0LCA0OCwgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDgsIDk4LCA1NSwgMywgOTcsIDg3LCA1NSwgMywgCisgICAgOTcsIDk4LCAyMDEsIDc4LCA0OCwgODcsIDIwMSwgNzgsIDQ4LCA5OCwgMTIwLCAyMzQsIDEzNCwgNDgsIDE4MiwgMTIwLCAKKyAgICAyMzQsIDEzNCwgNDgsIDg3LCAxMjAsIDIzNCwgMTM0LCA0OCwgMTkxLCAxMjAsIDIzNCwgMTM0LCA0OCwgOTgsIDU1LCAzLCAKKyAgICAyMDcsIDYsIDg3LCA1NSwgMywgMjA3LCA2LCA5OCwgNTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDg3LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTkxLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTE1LCAxMjcsIDU1LCAzLCAyNDksIDY0LCAKKyAgICA5OCwgNTUsIDMsIDExNywgODcsIDU1LCAzLCAxMTcsIDk4LCA1NSwgMywgMjI0LCA3NCwgODcsIDU1LCAzLCAyMjQsIDc0LCAKKyAgICA0OSwgNTEsIDIwMSwgNzgsIDQ4LCA0OSwgNTEsIDU1LCAzLCA5NywgMTkxLCAxOTksIDI3LCA0OCwgMTgyLCA1NSwgMywgCisgICAgMjA1LCAyMjQsIDIyNSwgMTgsIDE4MiwgNTUsIDMsIDIwNSwgMjI0LCAyMTMsIDM1LCAxOTEsIDU1LCAzLCAyMDUsIDIyNCwgCisgICAgMjI1LCAxOCwgMTkxLCA1NSwgMywgMjA1LCAyMjQsIDIxMywgMzUsIDg3LCA1NSwgMywgMjQzLCAxNiwgMjM5LCAxNjUsIAorICAgIDE5MSwgNTUsIDMsIDI0MywgMTYsIDIyNSwgMTgsIDI1MSwgNDcsIDIwNSwgMTU4LCAyMTAsIDE3MCwgNDgsIDI0NiwgMTEyLCAKKyAgICAyMDUsIDE1OCwgMjEwLCAxNzAsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAyMDUsIDE4NiwgMTY4LCAxNDgsIDk4LCA1NSwgCisgICAgMjA1LCAxODYsIDI0OSwgNzcsIDExOSwgODcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAyNTEsIDQ3LCAxNzYsIDI0NiwgMTU2LCAKKyAgICA0OCwgMjQ2LCAxMTIsIDE3NiwgMjQ2LCAxNTYsIDQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMTYsIDk4LCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDM1LCAxODIsIDIzNCwgMTYxLCAzLCAKKyAgICAxNTQsIDIyNSwgMTgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIxNiwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgCisgICAgMTY1LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgMzUsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjI1LCAxOCwgODcsIAorICAgIDU1LCAxMTksIDk4LCA0OCwgMTgyLCA1NSwgOTgsIDc2LCAxOTEsIDQ4LCA5OCwgNTUsIDExOSwgODcsIDQ4LCA5OCwgMjE2LCAKKyAgICAxODgsIDI1MCwgMTk5LCAxODIsIDIxNiwgMTg4LCAyNTAsIDE5OSwgODcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgMTkxLCAyMTYsIAorICAgIDE4OCwgMjUwLCAxOTksIDk4LCAyMzQsIDE2MSwgMTE5LCA4NywgMjM0LCAxNjAsIDg3LCAyMzQsIDE2MSwgMTE5LCA5OCwgCisgICAgMjM0LCAxNjAsIDk4LCA1MywgNTUsIDMsIDk3LCA0OSwgNTEsIDUzLCA1NSwgMywgOTcsIDg3LCA1MywgNTUsIDMsIDk3LCAKKyAgICA5OCwgNTMsIDQ4LCAxODIsIDUzLCA0OCwgODcsIDUzLCA0OCwgMTkxLCA1MywgNDgsIDQ5LCA1MSwgNTMsIDQ4LCAxMTUsIAorICAgIDEyNywgNTMsIDQ4LCAxNTcsIDIwMSwgNDgsIDUzLCA0OCwgMTU3LCAyMzksIDE0LCA1MywgNDgsIDIwOCwgMjU0LCAyMzksIAorICAgIDE0LCA1MywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA1MywgNDgsIDk4LCAyMDUsIDgzLCA0OCwgODcsIDIwNSwgODMsIDQ4LCAKKyAgICA5OCwgMjA4LCAxODYsIDQ4LCA4NywgMjA4LCAxODYsIDQ4LCAxODIsIDU1LCAzLCA1MywgOTcsIDE5MSwgNTUsIDMsIDUzLCAKKyAgICA5NywgOTgsIDI0MSwgMjQzLCA0OCwgMTgyLCAyNDEsIDI0MywgNDgsIDg3LCAyNDEsIDI0MywgNDgsIDE5MSwgMjQxLCAyNDMsIAorICAgIDQ4LCA5OCwgNTUsIDIwNSwgMTg2LCAxNDgsIDg3LCA1NSwgMjA1LCAxODYsIDE0OCwgOTgsIDY0LCA0OCwgMTgyLCA2NCwgCisgICAgNDgsIDg3LCA2NCwgNDgsIDE5MSwgNjQsIDQ4LCAxODIsIDY0LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTgyLCA2NCwgNTUsIAorICAgIDIxNywgNzksIDIxNiwgNjQsIDE4MiwgNjQsIDU1LCAyMTcsIDc5LCAyMTYsIDY1LCAzLCAyMzMsIDE3NywgMTQ4LCAxODIsIAorICAgIDY0LCA1NSwgMjE3LCA3OSwgMjE2LCA2NSwgMywgODMsIDE0OCwgMTgyLCA2NCwgNTMsIDQ4LCAxODIsIDY0LCA1MywgNTUsIAorICAgIDIxNywgNzksIDIxNiwgNjQsIDg3LCA2NCwgNTUsIDIzNiwgMjAxLCAyMDEsIDEwMiwgMTU3LCAyMDEsIDQ4LCA1NSwgMjA1LCAKKyAgICAxODYsIDI0MywgMTUsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjA1LCAxODYsIDI0MywgMTUsIDExNSwgMTI3LCA2NCwgNDgsIAorICAgIDUxLCA1NSwgMywgNCwgMjQ2LCAxNTUsIDE5MSwgNTUsIDk4LCA3NiwgMTgyLCA0OCwgMTI2LCA4NywgMjUwLCAxOTksIDk4LCAKKyAgICA1NSwgMywgODMsIDk3LCA4NywgNTUsIDMsIDgzLCA5NywgNDksIDUxLCA1NSwgMywgODMsIDk3LCA5OCwgNTUsIDMsIDUzLCAKKyAgICA4MywgOTcsIDg3LCA1NSwgMywgNTMsIDgzLCA5NywgNDksIDUxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDIxNywgNTEsIAorICAgIDQ4LCA4NywgMjE3LCA1MSwgNDgsIDQ5LCA1MSwgMjE3LCA1MSwgNDgsIDM2LCAyNTEsIDEyNCwgMjQ2LCA2NSwgMjE2LCAKKyAgICAxMDgsIDI0MSwgNDgsIDIwNiwgOTcsIDIzOCwgMzgsIDIwNiwgOTcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjM4LCAzOSwgCisgICAgMjM4LCAxODEsIDIxMCwgMTQxLCAyMjgsIDEwNiwgMjIwLCAxNTIsIDIzOCwgMjAyLCAyMTcsIDExNywgMjE4LCAyMTUsIAorICAgIDI1MSwgODYsIDIzOCwgMjAyLCAyMTcsIDExNywgNCwgMjM4LCAyMDIsIDIxNywgMTE3LCAyNDMsIDQ0LCAyNTAsIDE4OSwgCisgICAgMjIyLCA0NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIDQ2LCAyNTAsIDE4OSwgMjIyLCA0NCwgNCwgMjQzLCA0NCwgMjUwLCAKKyAgICAxODksIDIyMiwgNDQsIDIzOCwgMTcxLCA3NiwgMjE0LCAyNDcsIDIyMCwgMjEzLCAyMTUsIDEsIDIyMCwgMjEzLCAyNDMsIAorICAgIDIxLCAyMjAsIDIxMywgMjA3LCAyMzEsIDIyMSwgMTU3LCA1NCwgMjIxLCAxNTUsIDU0LCA3MywgMjE1LCAxMTMsIDI0MCwgCisgICAgMjM1LCAyMDksIDc1LCAyMTAsIDE0MiwgMjIxLCAxNTYsIDI1MCwgMTY2LCAyMTcsIDQzLCAyMTMsIDI3LCAyMTcsIDQzLCAKKyAgICAyNDgsIDIxLCAyMTcsIDQzLCA1MiwgMjEyLCAyMzQsIDI0MiwgMjEwLCAyMTIsIDIzNCwgMjM2LCAyMjIsIDIxMiwgMjM0LCAKKyAgICAyMTQsIDI0MywgMTM4LCAyMjgsIDk0LCA1MSwgMjUxLCA3MCwgMjUxLCA3MCwgMjIyLCA3MywgMjUxLCA3MCwgMjA4LCAyMjQsIAorICAgIDI1MSwgNzAsIDI0MCwgMjM3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MCwgMjQxLCAyMTYsIDEyMSwgMTM4LCAyMTgsIDIxNSwgCisgICAgMjE2LCAxMjEsIDEzOCwgMjI0LCA5OCwgMjUxLCA3OSwgMjI0LCA5OCwgMjE3LCAzMywgMjI4LCA1NSwgMjAzLCAyNDEsIAorICAgIDIyOCwgNjksIDUzLCAyMjgsIDY5LCAyMDUsIDgzLCAyMjgsIDY5LCAyNDMsIDM4LCAyMjgsIDY5LCAyMDcsIDIwMywgMjI4LCAKKyAgICA2OSwgMjAyLCAxODEsIDIyOCwgNjksIDI0NiwgMTEyLCAyMjgsIDY5LCAyNDYsIDExMiwgMjQzLCAzOCwgMjI4LCA2OSwgCisgICAgMjUxLCA0NywgMjQzLCAzOCwgMjI4LCA2OSwgMjA2LCA5NiwgMjQ4LCAyNTQsIDIxMywgMjAwLCAyMTQsIDI0NCwgNzMsIAorICAgIDIyMSwgMTU2LCAyMzgsIDQ2LCAyMzUsIDI1MiwgMjE0LCAyNDQsIDIzMywgMTkyLCAyMDUsIDI0MSwgMjE3LCA0MywgMjEzLCAKKyAgICAxMDUsIDIwNSwgMjQwLCAyMjgsIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgMjA5LCAxNDEsIDIwMSwgNzcsIDIwMCwgMjI2LCAKKyAgICAyMTUsIDEsIDIxOCwgMjE1LCAyMDUsIDI0MCwgMjIxLCAxNTcsIDIwNSwgMjQwLCAyNTAsIDE1OSwgMTYwLCAxMzgsIDIxOCwgCisgICAgMjE1LCAyNTAsIDE1OSwgMTYwLCAxMzgsIDI1MSwgNCwgMTYwLCAxMzgsIDI1MSwgNCwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAKKyAgICAyNTEsIDI0MCwgMTYwLCAxMzgsIDIyMCwgMjYsIDI1MSwgNCwgMjE4LCAyMjQsIDI1MSwgMjQwLCAxNjAsIDEzOCwgMjUxLCAKKyAgICAxMTcsIDE2MCwgMTM4LCAyMTgsIDIxNSwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyNTEsIDExNywgMTYwLCAyMTcsIDM0LCAxNjAsIAorICAgIDEzOCwgMjA1LCA4MywgMjA1LCAyNDAsIDI1MSwgMTI1LCAxNjAsIDEzOCwgMjM4LCAxMTcsIDEzOCwgMjM1LCAyNTEsIDIzOCwgCisgICAgMTE3LCAxMzgsIDI0MSwgNDksIDI0OCwgMjA1LCAyNTEsIDYsIDIwNiwgMTA3LCAyMjQsIDE4NCwgMjM1LCAyNTEsIDE2MCwgCisgICAgMTM4LCAyNTEsIDQsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIwNiwgMTA3LCAyMjgsIDEzMywgMjE3LCAxMTcsIDIyOCwgCisgICAgMTMzLCA3NiwgMjE3LCAzNCwgMjUxLCA0LCAxNjAsIDEzOCwgMjQ2LCA4MCwgMjM4LCAxMjEsIDIzOCwgMTIyLCAyNDYsIDc5LCAKKyAgICAyMTMsIDI3LCAyMjgsIDExOCwgMTYwLCAxMzgsIDIxMywgMjcsIDE2MCwgMTM4LCAyNDMsIDksIDEzOCwgMjM4LCA4NSwgCisgICAgMjM4LCAxMjAsIDEzOCwgMjA4LCAxMTAsIDIzOCwgMTIxLCAyNDEsIDEzNywgMTYwLCAxMzgsIDE2MCwgMjA1LCAxODYsIAorICAgIDI0NywgMjM1LCAyNDEsIDE1NiwgMjIyLCA3MywgMjQ3LCAyMzQsIDIxNCwgNzcsIDE2MCwgMTM4LCAyMTgsIDIxNSwgMTYwLCAKKyAgICAxMzgsIDIzMiwgMjIzLCAxMzgsIDIxOCwgMjE1LCAyMzIsIDIyMywgMTM4LCAyMDgsIDU0LCAyMzgsIDExNywgMTM4LCAyMjQsIAorICAgIDI0MSwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMTE5LCAxNjAsIAorICAgIDEzOCwgMjM1LCA2NywgMTE5LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIzNSwgCisgICAgNjcsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyMSwgMzUsIDIyNCwgMjQwLCAyMjEsIDM1LCAyMzUsIDY2LCAKKyAgICAyNDgsIDIwNSwgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxOCwgMjE1LCAyMjQsIDI0MCwgMjE4LCAyMTUsIDIzNSwgNjYsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAxNjAsIAorICAgIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMjM4LCAxMTcsIDEzOCwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIAorICAgIDIzOCwgMTE3LCAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMzUsIDY2LCAyMzUsIDY3LCAyMTcsIDM0LCAyMjQsIDI0MCwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAyMzUsIDY2LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgMjI0LCAKKyAgICAyNDAsIDIxNSwgMjgsIDIwNywgMjUwLCAyMTUsIDI5LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMTUsIDI5LCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAyMDcsIDI1MSwgMjE3LCAzNCwgMjM4LCAxMTcsIAorICAgIDEzOCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTUsIDMxLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIwNywgMjUyLCAyMDgsIDMsIAorICAgIDIxNywgMTE3LCAyMDcsIDIxMiwgMjE3LCAxMTcsIDIxOCwgMjE1LCAzNSwgMjA4LCAzLCAyMTcsIDExNywgMjE4LCAyMTUsIAorICAgIDM1LCAyMDcsIDIxMiwgMjE3LCAxMTcsIDIwOCwgMywgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMjAsIDI2LCAzNSwgMjA4LCAzLCA3NiwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMjAsIDI2LCAzNSwgCisgICAgMjA3LCAyMTIsIDc2LCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIwOCwgMywgNzYsIDMsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAKKyAgICAyMTIsIDc2LCAzLCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyMSwgMTYsIDIyMSwgMTcsIDIyMSwgMTgsIDIyMSwgMTcsIDIwMywgCisgICAgMjQxLCA1MiwgMjI4LCAxMzMsIDIxNywgMTE3LCA1MiwgMjE3LCAyNSwgMjE3LCAxMTcsIDUyLCAyMjgsIDEzMywgNzYsIAorICAgIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgMjQ3LCAxNDQsIDUyLCAKKyAgICAyNDIsIDIwMiwgNDQsIDIxNSwgMTEzLCA0NCwgMjIxLCAxNTYsIDQ0LCAyMDUsIDIzMiwgNDQsIDI0MCwgMjM1LCAyMDksIAorICAgIDc1LCA0NCwgNzMsIDIxNywgNDMsIDQ0LCAyMTMsIDI3LCAyMTcsIDQzLCA0NCwgMjUwLCAxNjYsIDIxNywgNDMsIDQ0LCAKKyAgICAyMzgsIDEyMSwgNDQsIDI0MSwgMjQ0LCA5NSwgMjE1LCAxMTMsIDk1LCAyMjEsIDE1NiwgOTUsIDIwNSwgMjMyLCA5NSwgNzMsIAorICAgIDIxNywgNDMsIDUxLCAyMDcsIDE3LCA0OSwgMjA3LCAxNywgMTI3LCAyMDcsIDE3LCAxMTUsIDIwNywgMTcsIDI1MCwgMTY5LCAKKyAgICAyMjEsIDEzMSwgMjA1LCA2MSwgMjM2LCAyNDgsIDIwNSwgODMsIDgzLCAyNDksIDc3LCA1MSwgMjA0LCAxODQsIDUzLCA4MywgCisgICAgMjQ5LCA3NywgNTMsIDUxLCAyMDQsIDE4NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTQsIDIzOCwgMjE4LCAyMTUsIDIwNSwgCisgICAgNjEsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjM2LCAyNDksIDIyMCwgMjgsIDUzLCA4MywgMjQ5LCA3NywgNTMsIDUxLCAyMDQsIAorICAgIDE4NCwgMjE1LCAyOSwgMjAzLCAyNTMsIDIxMywgMTQ5LCAyMDcsIDI1MSwgMjAzLCAyNTMsIDIxMywgMTQ5LCAyMTgsIDIyMSwgCisgICAgMjA4LCAxNiwgMjE3LCAxMTcsIDI0MywgNDQsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNSwgMjE4LCAyMjEsIDIwOCwgCisgICAgMTYsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQzLCA0NCwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE2LCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjE3LCAyNSwgMjE3LCAxMTcsIDIyOCwgMTMzLCAyMTcsIDExNywgMjIxLCAyMywgMjM0LCA5NiwgMjQzLCAKKyAgICA1NSwgMjIyLCAxMjUsIDIyOCwgNjYsIDIwMCwgMTU1LCAyMjAsIDEzMiwgMjE4LCAyMjMsIDUxLCAyNTEsIDcxLCAzLCAyNTAsIAorICAgIDIzNiwgNTEsIDIwNSwgOTgsIDIyMCwgMjEzLCAyMjQsIDk4LCAyNTEsIDc5LCAyMjAsIDIxMywgMjI0LCA5OCwgMjE3LCAzMywgCisgICAgMjIwLCAyMTMsIDIyOCwgNTUsIDIyMCwgMjEzLCAyMDMsIDI0MSwgMjQxLCA2NSwgMjE3LCA0MywgNzMsIDIxNywgNDMsIAorICAgIDIwOCwgMTEwLCAyMTcsIDQzLCAyNDAsIDIzNSwgMjA1LCAyMzIsIDI0OCwgNzksIDQ5LCAyMTgsIDIyMSwgMjM3LCAxNzksIAorICAgIDIxMCwgMTY2LCAyMTUsIDEsIDUxLCAyMTgsIDIyMSwgMjM3LCAxNzksIDIxMCwgMTY2LCAyMTUsIDEsIDQ5LCAyMTAsIDE2NiwgCisgICAgMjE1LCAxLCA1MSwgMjEwLCAxNjYsIDIxNSwgMSwgMjEzLCAxMDUsIDIwNSwgMjQxLCAyMzgsIDEyMSwgMjQyLCAxOTYsIAorICAgIDIyNCwgOTgsIDIxNywgMzMsIDI0MiwgMTk2LCAyMjQsIDk4LCAyNTEsIDc5LCA1MywgMjA4LCAyLCA1MywgMjA3LCAyMTEsIAorICAgIDUzLCAyMjgsIDU1LCA1MywgMjAzLCAyNDEsIDIxNSwgMTQwLCAxNjAsIDI2LCAyMTYsIDEyMSwgMTM4LCAyMjQsIDI0MSwgMywgCisgICAgMjQwLCAxODIsIDIzNSwgNjcsIDMsIDI0MCwgMTgyLCAyMDIsIDI0NiwgMjIxLCAzNSwgMjI0LCAyNDAsIDIwMiwgMjQ2LCAKKyAgICAyMjEsIDM1LCAyMzUsIDY2LCAyMjQsIDI0MSwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMjM1LCA2NywgCisgICAgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAxNjAsIAorICAgIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMTUsIDI4LCAxNjAsIDIwNSwgCisgICAgMTg2LCAyMTcsIDM0LCAyMDcsIDI1MCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTUsIDMyLCAyMTcsIDM0LCAyMzgsIDEyMywgCisgICAgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMDcsIDI1MywgMjE3LCAzNCwgMjM4LCAxMjMsIDIxOCwgMjE1LCA1MiwgMjI4LCAxMzMsIAorICAgIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAKKyAgICAyMjgsIDEzMywgNzYsIDIxNywgMzQsIDIxOCwgMjE1LCAxNjAsIDEzOCwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAyMTgsIAorICAgIDIxNSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIzNSwgNjcsIDI0NywgCisgICAgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE1LCAyOSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAKKyAgICAyMDcsIDI1MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTgsIDIxNSwgMjE4LCAyMjEsIDIwOCwgMTYsIAorICAgIDIxNywgMTE3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgNDYsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNSwgMjE4LCAKKyAgICAyMTUsIDIxOCwgMjIxLCAyMDgsIDE2LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCAKKyAgICA0NiwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE2LCAyMTcsIDM0LCAyMzgsIDEyMywgODMsIDIzOCwgMTk1LCAyMjEsIAorICAgIDIwMiwgMjMzLCAxNzcsIDIzOCwgMTk1LCAxMTUsIDUxLCAyNDEsIDcxLCAyMzgsIDE5NSwgMTI3LCA1MSwgMjQxLCA3MSwgCisgICAgMjM4LCAxOTUsIDIzOCwgMjAyLCA3NiwgMywgMTY4LCAyMzMsIDE3NywgOTcsIDIzOCwgMjAyLCA3NiwgMywgODMsIDI0OSwgCisgICAgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgNCwgMjM4LCAyMDIsIDc2LCAzLCA4MywgMjQ5LCAKKyAgICA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCAyMzgsIDIwMiwgNzYsIDMsIDczLCA1NiwgMjM4LCAKKyAgICAyMDIsIDc2LCAzLCAyMTYsIDI0NiwgNCwgMjM4LCAyMDIsIDc2LCAzLCAyMTYsIDI0NiwgMjM4LCAyMDIsIDc2LCAzLCAyMDMsIAorICAgIDI1MSwgMjM4LCAyMDIsIDc2LCAzLCAxMjAsIDIzMywgMTc3LCAyMDgsIDM0LCAyNDMsIDQ0LCAzLCAxNjgsIDIzMywgMTc3LCAKKyAgICA5NywgMjQzLCA0NCwgMywgODMsIDI0OSwgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgNCwgCisgICAgMjQzLCA0NCwgMywgODMsIDI0OSwgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgMjQzLCA0NCwgCisgICAgMywgMjE2LCAyNDYsIDQsIDI0MywgNDQsIDMsIDIxNiwgMjQ2LCAxOTksIDE1OCwgMjE4LCAyMTMsIDI0OSwgMTE0LCAyMjIsIAorICAgIDQzLCAyNDEsIDY2LCA1NCwgMjM4LCAyMDQsIDQ4LCAyMzMsIDEwOSwgMTE1LCAyNTAsIDIwMiwgMTI3LCAyNTAsIDIwMiwgCisgICAgMjE0LCAyNTEsIDIxNiwgOCwgMjAxLCA3NCwgMjI0LCAxNzYsIDQ5LCAyNDcsIDY0LCA1MSwgMjQ3LCA2NCwgNDksIDIzNywgCisgICAgMzEsIDUxLCAyMzcsIDMxLCAyNDgsIDkzLCA1MSwgMjQyLCAyMzYsIDI0OCwgOTMsIDQ5LCAyNDIsIDIzNiwgMjA1LCAxNTgsIAorICAgIDUxLCAyNDIsIDIzNiwgMjA1LCAxNTgsIDQ5LCAyNDIsIDIzNiwgMjEzLCAxMDUsIDIxOCwgMjE1LCA1NCwgNTIsIDIyNCwgCisgICAgNDksIDI1MCwgMjM2LCAyMTEsIDE4MywgMjExLCAxOTEsIDIwNiwgMTc2LCAyMTMsIDE3OSwgMjE1LCA3MCwgMjI4LCA5OSwgCisgICAgMjAyLCAyMjIsIDIwOCwgMTkzLCAyMTUsIDEzNCwgNzYsIDIyOCwgNjUsIDU0LCAyMDQsIDE4NSwgMjE4LCAyMTUsIDU0LCAKKyAgICAyMDEsIDg0LCAyMzMsIDExMSwgMjA1LCAxNTgsIDQ5LCAyNDMsIDE1LCAyMDUsIDE1OCwgNTEsIDI0MywgMTUsIDI0OCwgOTMsIAorICAgIDQ5LCAyNDMsIDE1LCAyNDgsIDkzLCA1MSwgMjQzLCAxNSwgMjA1LCAxNTgsIDE2NywgMjI4LCA2OSwgMjQ4LCA5MywgMTY3LCAKKyAgICAyMjgsIDY5LCAyMzYsIDE5NiwgMjA5LCA0OCwgMTE1LCAyNTAsIDIwMywgMjQ4LCAyMDYsIDEyMCwgMjMzLCAxNzcsIDI0OSwgCisgICAgNjYsIDIxNywgMzYsIDIyNiwgMjE0LCAyMzgsIDExMywgMjA1LCAxODYsIDIwNiwgMTA3LCAyMTMsIDQ2LCAyMDAsIDE5NiwgCisgICAgMjI4LCAxMTgsIDM1LCAyMTMsIDE3NiwgMjQ4LCA3OCwgMjI2LCAyMTIsIDIyNSwgMjMsIDI1MSwgNzEsIDE1OSwgMjEzLCAKKyAgICA0MSwgMjUxLCA3MSwgMTU5LCAyMzgsIDExMywgMjA1LCAxODYsIDIwNiwgMTA3LCAyMjUsIDI4LCAyNDgsIDIxNywgMjEzLCAKKyAgICAyNiwgMjQyLCAxNjMsIDI1MSwgMTI1LCAyNTAsIDIxMSwgMjA3LCAxMTQsIDIwNSwgMTQzLCAyMTIsIDE1NCwgMjQxLCAyOCwgCisgICAgMjE3LCAyNiwgMjQzLCA1OSwgMjA2LCAyMzQsIDIwOSwgNjEsIDI0MywgNSwgMjQzLCA0LCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIzMywgMTYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjA4LCAxODQsIDIxNCwgOTQsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjE0LCA5NSwgMjM4LCAxMjMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQwLCAyNDEsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQxLCA2NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMjcsIDE1MywgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDYsIDE1NSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIAorICAgIDE1NiwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjI3LCAxNTMsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjA5LCA3NiwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0OSwgMTI1LCAxNDgsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjA5LCA3NSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDksIDEyNCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMjQsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAKKyAgICAyMzUsIDY2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDk4LCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDg3LCAKKyAgICAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDk4LCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCA4NywgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDI0OSwgMTI0LCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDEyNywgMjA3LCAxOCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxMzcsIDIwOCwgCisgICAgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTI3LCAyNDcsIDEyOSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCAyNDEsIDEzNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIDIwNywgMTgsIDIyNywgMTUzLCAyNTEsIAorICAgIDIyLCAyMzYsIDE3OSwgMTYsIDE4MiwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxODIsIDQ4LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjA3LCAxOCwgMjE2LCAyNDYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjQxLCAxNDksIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTE1LCAyNDcsIDEyOSwgMjUxLCAKKyAgICAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDEsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIwNywgMTgsIAorICAgIDIyNywgMTUzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDE5MSwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCAxOTEsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgNjIsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDI0MSwgMTM3LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDY1LCAyMDMsIDI1MSwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjcsIDE1NCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAKKyAgICAxNTYsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjEwLCA2LCAyMjcsIDE1MywgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDYyLCAyMTQsIDk0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyMDgsIAorICAgIDEwOSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDYsIDc5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgCisgICAgMjA3LCAxOCwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDE0OSwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMDgsIDExMCwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjcsIDE1NCwgMjQxLCA3NCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIAorICAgIDIxMCwgNiwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA0OSwgMjEwLCA2LCAyMDgsIDg0LCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIwNSwgMjQxLCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIzNSwgNjcsIDI0MSwgNzQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCA3MSwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTQ5LCAKKyAgICAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxOTksIDI2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIwOCwgODUsIAorICAgIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxMCwgMTY4LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMTQsIDk1LCAyMTgsIDIxNSwgMjM4LCAxMjMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjE0LCA3OCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIDI0NywgMTMwLCAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAxMTUsIDI0NywgMTMwLCAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjgsIDQxLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIxMywgOTAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE3LCA4MywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyNTEsIDExMywgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjM4LCAxMjUsIDIwMywgMjUxLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIyOCwgNDIsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNywgODQsIDIwMywgCisgICAgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI1MSwgMTEyLCAyMTgsIDIxNSwgMjQ3LCA3LCA4MSwgNTEsIDI1MSwgNzEsIAorICAgIDMsIDE5MSwgMTk5LCAyNywgNDgsIDIwOSwgMjMyLCAxNzYsIDI0OCwgNzgsIDI0OCwgMjMxLCA5OSwgODMsIDIyNCwgMTc3LCAKKyAgICAzLCAxMDEsIDI0MCwgMTgyLCAyMjgsIDc1LCA5OSwgMjQzLCAzOSwgMjAzLCAyNDksIDk5LCAyNDEsIDEsIDIwMywgMjQ5LCAKKyAgICA5OSwgMjM4LCAxODMsIDk5LCAyNDMsIDc0LCA5OSwgNjQsIDUyLCAzLCAyNDcsIDU2LCA4MywgMjI0LCAxNzYsIDIzOCwgCisgICAgMTU1LCA5OSwgMjUxLCAxMDQsIDIyNiwgMjE1LCA5OSwgMjM0LCAxMDksIDk5LCA0NCwgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIAorICAgIDIxOCwgMjEyLCA0NCwgMjA1LCA5OSwgMjM5LCAxNjcsIDI0OCwgNDYsIDI0NiwgMTU2LCAzLCAyMTgsIDIxOCwgNDgsIDIwMywgCisgICAgMjQ3LCA5OSwgMjIxLCA5MiwgOTksIDIzMywgMjksIDk5LCAyMTcsIDUyLCAyMzQsIDI0NiwgOTksIDIxNywgNTIsIDIyNSwgCisgICAgMTkxLCA5OSwgMjE2LCA5OCwgOTksIDIxNiwgOTcsIDk5LCAyNDEsIDEwLCAyNDIsIDE5NCwgMTYsIDIzNiwgMjQyLCAxMDUsIAorICAgIDIwOSwgMjEsIDk5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTQsIDI0MSwgMTY4LCAyMTAsIDE1NSwgMjI2LCAKKyAgICAyMTUsIDk5LCAyMTUsIDE2LCAyMTYsIDE5NSwgMjIwLCAyLCAyMTYsIDE5NSwgMjE1LCAxMSwgMjExLCAyMTAsIDk5LCAyNDYsIAorICAgIDEyNywgMjExLCAyMTAsIDk5LCA0OSwgMjE2LCAxMTYsIDIwMywgMjI1LCAxMTcsIDQ5LCAyMTYsIDExNiwgMjM4LCAzMSwgCisgICAgNDksIDIxNiwgMTE2LCAyMjQsIDU0LCAxMTcsIDUxLCAyMTYsIDExNiwgMjAzLCAyMjUsIDExNywgNTEsIDIxNiwgMTE2LCAKKyAgICAyMzgsIDMxLCA1MSwgMjE2LCAxMTYsIDIyNCwgNTQsIDExNywgNDksIDUyLCAyNDgsIDcwLCAyMDMsIDIyNSwgMjQzLCAxNSwgCisgICAgNDksIDUyLCAyNDgsIDcwLCAyMzgsIDMxLCA0OSwgNTIsIDI0OCwgNzAsIDIyNCwgNTQsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCAKKyAgICA3MCwgMjAzLCAyMjUsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMjM4LCAzMSwgNTEsIDUyLCAyNDgsIDcwLCAyMjQsIAorICAgIDU0LCAyNDMsIDE1LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIwMywgMjI1LCAxMTcsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMTAxLCAyMTUsIDE5NiwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMjQsIDU0LCAxMTcsIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAyMzgsIDMxLCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIwMywgMjI1LCAxMTcsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMTAxLCAyMTUsIDE5NiwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMjQsIDU0LCAxMTcsIDIyOCwgNzAsIDIzOCwgMzEsIAorICAgIDIzMywgMTc3LCAyMjQsIDE3NywgMjM4LCAzMSwgMjAzLCAyMjUsIDQ5LCAyMTcsIDM0LCAyMjQsIDU0LCA1MSwgMjQyLCAKKyAgICAxOTYsIDI0OCwgNzAsIDIxMSwgMTkyLCAyMDMsIDIyNSwgNTEsIDIxNywgMzQsIDIyNCwgNTQsIDQ5LCAyNDIsIDE5NiwgCisgICAgMjQ4LCA3MCwgMjExLCAxOTIsIDIwNywgMjMyLCAyMDUsIDE1NywgMjA3LCAyMzIsIDI0OCwgOTIsIDIwNSwgMTU4LCA1MiwgCisgICAgMTU5LCAyNDgsIDkzLCA1MiwgMTU5LCAyNDgsIDkzLCA1MiwgMjQ4LCA3MCwgMTE5LCAyMDUsIDE1OCwgNTIsIDE1OSwgNDIsIAorICAgIDE2LCAyNDgsIDkyLCA0OSwgODMsIDEwMCwgMjI0LCAxNzYsIDUxLCA4MywgMTAwLCAyMjQsIDE3NiwgMjMzLCAxNzcsIDIxMSwgCisgICAgMjI4LCAyMjQsIDE3NSwgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIDE3NCwgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIAorICAgIDE3MywgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIDE3MiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjA1LCAxNTgsIAorICAgIDIxMywgNDYsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDI0OCwgOTMsIDIxMywgNDYsIDI0MSwgMTI4LCAxNiwgMTYyLCAKKyAgICA4MywgMywgMjQ2LCAxNTUsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjQ2LCAxNTUsIDI0MSwgCisgICAgMTI4LCAxNiwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NywgMywgMjQ2LCAxNTUsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMywgCisgICAgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIAorICAgIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzcsIDMsIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwMSwgNzcsIAorICAgIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjAxLCA3NywgMjQxLCAxMjgsIDE2LCAxNjIsIDExNSwgCisgICAgMjYsIDIzMywgMTc3LCAzLCAyMDEsIDc3LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzYsIDI0MSwgMTI4LCAKKyAgICAxNiwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjA1LCAxNTgsIDIyNSwgMjgsIAorICAgIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDI0OCwgOTMsIDIyNSwgMjgsIDUyLCAyMzYsIDI1NSwgMjEzLCAxMTAsIDk5LCAKKyAgICAyMzgsIDIxOCwgOTksIDgzLCAyMjQsIDE3NywgMjM4LCAzMSwgMjIyLCAxNCwgMjQ4LCA1NywgMjIyLCAxNCwgMTY4LCAxMTksIAorICAgIDIwOSwgMjQ5LCAyMjIsIDE0LCAyMDksIDI1MCwgMTE5LCAyMjQsIDg5LCAyMjIsIDE0LCAxNjgsIDExOSwgMTIwLCAyMDksIAorICAgIDIzNSwgMjIyLCAxNCwgMTIwLCAyMDksIDIzNiwgMTE5LCAyMjQsIDg5LCAyMjIsIDE0LCAxMjAsIDIwOSwgMjM2LCAyMjcsIAorICAgIDE2MiwgMjIyLCAxNCwgMjA1LCA3OSwgMjIyLCAxNCwgMjA2LCAxMzgsIDIyMiwgMTQsIDIxNiwgMzUsIDIzOSwgMTgsIDIzNSwgCisgICAgNTksIDIzNiwgMTczLCAyMDUsIDE1OCwgMjE2LCAxMTUsIDI0OCwgOTMsIDIxNiwgMTE1LCAyMDUsIDE1OCwgMjQyLCAxOTYsIAorICAgIDE1OSwgMjQ4LCA5MywgMjQyLCAxOTYsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDI0OCwgOTMsIAorICAgIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDY0LCAyMDUsIDExNCwgMjQ4LCAyMTcsIDIxMywgMjcsIDMsIDI0NiwgMTU1LCAKKyAgICAyMDgsIDY2LCAyMzcsIDQyLCAyNTEsIDI1NSwgMjQyLCAxOTMsIDIzOCwgMjAzLCAyMjgsIDU1LCAyNDEsIDE2OCwgMjM4LCAKKyAgICAzNSwgOTksIDYzLCAyMTMsIDQxLCA1MywgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDUzLCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIAorICAgIDUzLCAyMDUsIDk4LCA2MywgMjM5LCAxNjYsIDUzLCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgNTMsIDIwNSwgOTksIDMsIDgzLCAKKyAgICAxNDgsIDYzLCAyMjUsIDIzLCA1MywgMjA1LCA5OSwgMywgODMsIDE0OCwgNjMsIDIxMywgNDEsIDIwNSwgOTksIDMsIDUzLCAKKyAgICA4MywgMTQ4LCAyNTEsIDE0NiwgMjQ2LCAxMTMsIDIwOCwgNzMsIDIwNSwgMjMzLCAyNDYsIDExMywgMjMzLCAxMTIsIDMsIAorICAgIDIzNywgMjIsIDIxMiwgMTEsIDYzLCAyMjIsIDY2LCAyMjUsIDIzLCAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjEzLCA0MSwgCisgICAgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIwMywgMjI3LCAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjM5LCAxNjYsIDIwNSwgOTgsIAorICAgIDUzLCA4MywgMTQ4LCA2MywgNTIsIDM2LCAyMDgsIDc2LCA2MywgMjQ2LCAxNTYsIDM2LCAyMTMsIDE4MCwgMjE1LCA1MiwgCisgICAgOTksIDIxNSwgNTIsIDIxNywgNzcsIDk5LCAyMTUsIDUyLCAyMTcsIDc5LCA5OSwgMjE1LCA1MiwgMjA5LCA3MiwgOTksIDE2LCAKKyAgICAzNiwgMjE4LCA5NywgMTYsIDM2LCAyMDgsIDEwNSwgNzYsIDIzNCwgMTMzLCAxNiwgMzYsIDIwOCwgMTA1LCA3NiwgMjA2LCAKKyAgICAxMjYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE4LCAxNiwgCisgICAgMzYsIDIzOCwgMTU4LCAxNiwgMzYsIDI1MSwgMjQzLCAxNiwgMzYsIDI0OCwgMjMwLCAxNiwgMzYsIDI0OSwgMTIzLCAxNiwgCisgICAgMzYsIDIzMywgMTc3LCAyMDcsIDE5LCAxNiwgMzYsIDIyNCwgMTc3LCAyMzcsIDEzOCwgMTYsIDM2LCA4MywgMjA3LCAxOSwgCisgICAgMTYsIDM2LCAyMzYsIDI0MiwgMjM3LCAxMzgsIDE2LCAzNiwgMjQ3LCAxMjEsIDIxMywgMTA5LCAxNiwgMzYsIDIxMCwgMjksIAorICAgIDIxNiwgMjU0LCAxNiwgMzYsIDIxMCwgMjksIDIyOCwgMTE3LCAxNiwgMzYsIDI0MSwgMjM5LCAyMjQsIDE2NywgMjM4LCA5NiwgCisgICAgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTAyLCAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDUsIDE2LCAzNiwgCisgICAgMjQxLCAxMDcsIDI0MywgMzQsIDE0NywgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ5LCAxNiwgMzYsIDE4OSwgMjUxLCAKKyAgICAyNDMsIDE2LCAzNiwgMjA3LCAxMDksIDIyOCwgMTgwLCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTksIDI0OCwgCisgICAgMTM0LCAxNiwgMzYsIDI0NywgMTU2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjIyLCA2NSwgMTYsIDM2LCAyMDgsIDAsIDE2LCAKKyAgICAzNiwgMjM4LCA5NiwgMTYsIDM2LCAyMzcsIDk3LCAyMTAsIDE1NCwgMTYsIDM2LCAyMzUsIDU4LCAyMTAsIDE1NCwgMTYsIAorICAgIDM2LCAyMTMsIDE4MSwgMjEwLCAxNTQsIDE2LCAzNiwgMjAzLCAyNDAsIDIxMCwgMTU0LCAxNiwgMzYsIDIwOCwgMjQ0LCAxNiwgCisgICAgMzYsIDI0MSwgMTQ2LCAyNDgsIDEzOCwgOTksIDE3NiwgMjQ4LCA3OCwgMTYsIDM2LCAyMjAsIDUsIDE2LCAzNiwgMjQxLCAKKyAgICAxNDcsIDIzNiwgMjQyLCAxMDUsIDE2LCAzNiwgMjA4LCAxLCAyMzYsIDI0MiwgMTA1LCAyMTcsIDEzMSwgMTE3LCAyMTcsIAorICAgIDEzMSwgMjQ3LCAzMiwgMjE3LCAxMzEsIDIzNiwgMjQ1LCAyMTcsIDEzMSwgMjI4LCA1MCwgMjM2LCAyNDUsIDIxNywgMTMxLCAKKyAgICAyNDgsIDIyNywgMjQ4LCAzMywgMjE3LCAxMzEsIDI0OCwgODYsIDIwNiwgNywgMjE3LCAxMzEsIDI0OCwgNjcsIDI0OSwgODIsIAorICAgIDIzMiwgMjIyLCAyMTcsIDEzMSwgMjUxLCA5MSwgNzYsIDI0NywgNiwgMjE3LCAxMzEsIDI0MSwgMjQ0LCAyMTcsIDEzMSwgCisgICAgMjQyLCAxODIsIDI1MSwgMjQ3LCAyMTgsIDk1LCAyMTcsIDEzMSwgNTMsIDI0OSwgMTI0LCA0NCwgMTcsIDEwMiwgNDQsIDE3LCAKKyAgICAxMDUsIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNjQsIDQ0LCAxNywgMTg3LCA0NCwgMTcsIDIxMCwgCisgICAgMTM1LCA0NCwgMTcsIDE5MiwgNDQsIDE3LCAyMTksIDExMywgNDQsIDQxLCAyMDYsIDE2NiwgNDQsIDQxLCAyMzgsIDE5OSwgCisgICAgNDQsIDQxLCAyMDQsIDE2NCwgNDQsIDQxLCAyMDYsIDY5LCA0NCwgNDEsIDIzNiwgMjIzLCA0NCwgNDEsIDIzNywgMTA4LCAKKyAgICA0NCwgNDEsIDIwOSwgMTAwLCA0NCwgNDEsIDIxMCwgMTMyLCA0NCwgNDEsIDIzOCwgMjI5LCA0NCwgNDEsIDIxOSwgMTEwLCAKKyAgICA0NCwgNDEsIDIwNCwgMTU5LCAxMDYsIDE3LCAxMDIsIDEwNiwgMTcsIDEwNSwgMTA2LCAxNywgMTQ3LCAxMDYsIDE3LCAxNDksIAorICAgIDEwNiwgMTcsIDE2NCwgMTA2LCAxNywgMTg3LCAxMDYsIDE3LCAyMTAsIDEzNSwgMTA2LCAxNywgMTkyLCAxMDYsIDE3LCAKKyAgICAyMTksIDExMywgMTA2LCA0MSwgMjA2LCAxNjYsIDEwNiwgNDEsIDIzOCwgMTk5LCAxMDYsIDQxLCAyMDQsIDE2NCwgMTA2LCAKKyAgICA0MSwgMjA2LCA2OSwgMTA2LCA0MSwgMjM2LCAyMjMsIDEwNiwgNDEsIDIzNywgMTA4LCAxMDYsIDQxLCAyMDksIDEwMCwgCisgICAgMTA2LCA0MSwgMjEwLCAxMzIsIDEwNiwgNDEsIDIzOCwgMjI5LCAxMDYsIDQxLCAyMTksIDExMCwgMTA2LCA0MSwgMjA0LCAKKyAgICAxNTksIDE3LCAxMTIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTIwLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDEyNiwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMzYsIDIyOSwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMzcsIDYxLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTcsIDIwOSwgMTA2LCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIxMCwgMTM2LCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgMTcsIDIzOCwgMjMyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIxOSwgMTE0LCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgNDEsIDIwNiwgMTY3LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzOCwgMjAwLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIAorICAgIDIwNCwgMTY1LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwNiwgNzAsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM2LCAKKyAgICAyMjQsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM3LCAxMDksIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA5LCAxMDEsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjEwLCAxMzMsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM4LCAyMzAsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCA0MSwgMjE5LCAxMTEsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA0LCAxNjAsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCAxMDYsIDgsIDQsIDEsIDYyLCAxMDYsIDgsIDQsIDEsIDI1MCwgMTAzLCAxMDYsIDgsIDQsIDEsIDI0NywgCisgICAgMjIzLCAxMDYsIDgsIDQsIDEsIDI0MiwgMTUzLCAxMDYsIDgsIDQsIDEsIDcyLCAxMDYsIDgsIDQsIDEsIDIzOCwgNSwgMTA2LCAKKyAgICA4LCA0LCAxLCAyMzYsIDE1NiwgMTA2LCA4LCA0LCAxLCAyMzQsIDI0NywgMTA2LCA4LCA0LCAxLCA3MCwgMTA2LCA4LCA0LCAKKyAgICAxLCAyMjcsIDI1MSwgMTA2LCA4LCA0LCAxLCAyMjcsIDExOCwgMTA2LCA4LCA0LCAxLCAxNTYsIDEwNiwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDMsIDEwNiwgOCwgNCwgMSwgMjIwLCAyMTQsIDEwNiwgOCwgNCwgMSwgNzQsIDEwNiwgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjYsIDEwNiwgOCwgNCwgMSwgMjE0LCAxNjcsIDEwNiwgOCwgNCwgMSwgMTQ2LCAxMDYsIDgsIDQsIDEsIDIxMiwgMTIyLCAKKyAgICAxMDYsIDgsIDQsIDEsIDIwNywgODMsIDEwNiwgOCwgNCwgMSwgNjYsIDEwNiwgOCwgNCwgMSwgMjAzLCAxNjgsIDEwNiwgOCwgCisgICAgNCwgMSwgMjAxLCAxNDcsIDEwNiwgOCwgNCwgMSwgMjAwLCAxOTUsIDEwNiwgOCwgNCwgMSwgMjAwLCAxMjMsIDEwNiwgOCwgCisgICAgNCwgMSwgMTk5LCAxNTcsIDQ0LCA4LCA2LCAxLCA2MiwgNDQsIDgsIDYsIDEsIDI1MCwgMTAzLCA0NCwgOCwgNiwgMSwgMjQ3LCAKKyAgICAyMjMsIDQ0LCA4LCA2LCAxLCAyNDIsIDE1MywgNDQsIDgsIDYsIDEsIDcyLCA0NCwgOCwgNiwgMSwgMjM4LCA1LCA0NCwgOCwgCisgICAgNiwgMSwgMjM2LCAxNTYsIDQ0LCA4LCA2LCAxLCAyMzQsIDI0NywgNDQsIDgsIDYsIDEsIDcwLCA0NCwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTEsIDQ0LCA4LCA2LCAxLCAyMjcsIDExOCwgNDQsIDgsIDYsIDEsIDE1NiwgNDQsIDgsIDYsIDEsIDIyMywgMjQzLCA0NCwgCisgICAgOCwgNiwgMSwgMjIwLCAyMTQsIDQ0LCA4LCA2LCAxLCA3NCwgNDQsIDgsIDYsIDEsIDIxNiwgMjI2LCA0NCwgOCwgNiwgMSwgCisgICAgMjE0LCAxNjcsIDQ0LCA4LCA2LCAxLCAxNDYsIDQ0LCA4LCA2LCAxLCAyMTIsIDEyMiwgNDQsIDgsIDYsIDEsIDIwNywgODMsIAorICAgIDQ0LCA4LCA2LCAxLCA2NiwgNDQsIDgsIDYsIDEsIDIwMywgMTY4LCA0NCwgOCwgNiwgMSwgMjAxLCAxNDcsIDQ0LCA4LCA2LCAKKyAgICAxLCAyMDAsIDE5NSwgNDQsIDgsIDYsIDEsIDIwMCwgMTIzLCA0NCwgOCwgNiwgMSwgMTk5LCAxNTcsIDQ0LCA4LCA0LCAxLCAKKyAgICA2MiwgNDQsIDgsIDQsIDEsIDI1MCwgMTAzLCA0NCwgOCwgNCwgMSwgMjQ3LCAyMjMsIDQ0LCA4LCA0LCAxLCAyNDIsIDE1MywgCisgICAgNDQsIDgsIDQsIDEsIDcyLCA0NCwgOCwgNCwgMSwgMjM4LCA1LCA0NCwgOCwgNCwgMSwgMjM2LCAxNTYsIDQ0LCA4LCA0LCAxLCAKKyAgICAyMzQsIDI0NywgNDQsIDgsIDQsIDEsIDcwLCA0NCwgOCwgNCwgMSwgMjI3LCAyNTEsIDQ0LCA4LCA0LCAxLCAyMjcsIDExOCwgCisgICAgNDQsIDgsIDQsIDEsIDE1NiwgNDQsIDgsIDQsIDEsIDIyMywgMjQzLCA0NCwgOCwgNCwgMSwgMjIwLCAyMTQsIDQ0LCA4LCA0LCAKKyAgICAxLCA3NCwgNDQsIDgsIDQsIDEsIDIxNiwgMjI2LCA0NCwgOCwgNCwgMSwgMjE0LCAxNjcsIDQ0LCA4LCA0LCAxLCAxNDYsIAorICAgIDQ0LCA4LCA0LCAxLCAyMTIsIDEyMiwgNDQsIDgsIDQsIDEsIDIwNywgODMsIDQ0LCA4LCA0LCAxLCA2NiwgNDQsIDgsIDQsIAorICAgIDEsIDIwMywgMTY4LCA0NCwgOCwgNCwgMSwgMjAxLCAxNDcsIDQ0LCA4LCA0LCAxLCAyMDAsIDE5NSwgNDQsIDgsIDQsIDEsIAorICAgIDIwMCwgMTIzLCA0NCwgOCwgNCwgMSwgMTk5LCAxNTcsIDQ0LCAxNywgMTk5LCA4MSwgMTg5LCA0NCwgNDEsIDIzOCwgMTk5LCAKKyAgICAxODksIDQ0LCA0MSwgMjA0LCAxNjQsIDE4OSwgNDQsIDQxLCAyMDYsIDY5LCAxODksIDQ0LCA0MSwgMjM2LCAyMjMsIDE4OSwgCisgICAgNDQsIDQxLCAyMzcsIDEwOCwgMTg5LCA0NCwgNDEsIDIwOSwgMTAwLCAxODksIDQ0LCA0MSwgMjEwLCAxMzIsIDE4OSwgNDQsIAorICAgIDQxLCAyMzgsIDIyOSwgMTg5LCA0NCwgNDEsIDIxOSwgMTEwLCAxODksIDQ0LCA0MSwgMjA0LCAxNTksIDUzLCA0NCwgMTcsIAorICAgIDEwMiwgNTMsIDQ0LCAxNywgMTA1LCA1MywgNDQsIDE3LCAxNDcsIDUzLCA0NCwgMTcsIDE0OSwgNTMsIDQ0LCAxNywgMTY0LCAKKyAgICA1MywgNDQsIDE3LCAxODcsIDUzLCA0NCwgMTcsIDIxMCwgMTM1LCA1MywgNDQsIDE3LCAxOTIsIDUzLCA0NCwgMTcsIDIxOSwgCisgICAgMTEzLCA1MywgNDQsIDQxLCAyMDYsIDE2NiwgMTg5LCA0NCwgMTcsIDE5OSwgODEsIDEwMCwgMTIxLCAxNjIsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgODAsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDIwMywgNDIsIAorICAgIDEwMCwgMTIxLCAxNjIsIDIwNSwgODMsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDgwLCAyMDUsIDgzLCAyNDEsIAorICAgIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIwNSwgODMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIAorICAgIDIwNSwgODMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgMTYyLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA4MCwgMjE0LCA5MCwgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMTQsIDkwLCAyNDEsIAorICAgIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDE2MiwgCisgICAgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCAKKyAgICA4MCwgMjYsIDUxLCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMjcsIAorICAgIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgCisgICAgNDksIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIAorICAgIDIxMywgNDYsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA1MSwgCisgICAgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgMjI1LCAKKyAgICAyOCwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDQ5LCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCA4MywgMjYsIDIxMywgNDYsIDEwMCwgCisgICAgMTIxLCA4MywgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDgwLCAyNiwgNTEsIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA1MSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgCisgICAgNTEsIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCA4MywgMjYsIAorICAgIDIyNSwgMjgsIDEwMCwgMTIxLCA4MywgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDQ5LCAKKyAgICAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIAorICAgIDgwLCAyNiwgNDksIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA0OSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAKKyAgICAxMjEsIDExNSwgMTYyLCAyNiwgNDksIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMjUsIDI4LCAxMDAsIAorICAgIDEyMSwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDQ5LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgNTEsIDgwLCAyNiwgNDksIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDIzMywgCisgICAgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgCisgICAgMTYyLCAyNiwgNDksIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA0OSwgMTYyLCAyNiwgNTEsIDEyNywgMjM0LCAxMjEsIAorICAgIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDIzMywgMTc2LCAxMDAsIAorICAgIDEyMSwgNDksIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgODAsIDI2LCA0OSwgMTE1LCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIAorICAgIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAxNjIsIDI2LCA0OSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIAorICAgIDQ5LCAxNjIsIDI2LCA1MSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMzMsIDE3NiwgMTAwLCAKKyAgICAxMjEsIDE2MiwgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDQ5LCA4MCwgMjYsIDUxLCA4MywgMjI0LCAxOTYsIDEwMCwgCisgICAgMTIxLCA1MSwgODAsIDI2LCA0OSwgODMsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDE2MiwgMjYsIDIzMywgMTc3LCAyMzQsIAorICAgIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCAxMjcsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgODAsIAorICAgIDI2LCAxMTUsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCA4MCwgMjYsIDIzMywgMTc3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDQ5LCAxMTUsIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgMTE1LCA4MCwgMjYsIAorICAgIDQ5LCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNDksIDEyNywgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAKKyAgICAxMjEsIDUxLCAxMjcsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDExNSwgCisgICAgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAxMjcsIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAKKyAgICAxMjEsIDUxLCAxNjIsIDI2LCA0OSwgODMsIDIzNCwgMTIxLCAxMDAsIDEyMSwgNDksIDE2MiwgMjYsIDUxLCA4MywgMjM0LCAKKyAgICAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgNTMsIDI0MSwgMjQ1LCAyMzMsIAorICAgIDE3NiwgMTAwLCAxMjEsIDgwLCA1MywgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCA1MywgMjQxLCAyNDUsIAorICAgIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgNTMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgNTMsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgNTMsIDIwMywgNDIsIDEwMCwgMTIxLCAxMjcsIDIwOSwgMTM5LCAyNiwgNTEsIDIzOSwgMTc1LCAxMDAsIAorICAgIDEyMSwgMTI3LCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgCisgICAgMTI3LCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDEyNywgNTMsIDI2LCA0OSwgMjA5LCAxMzgsIAorICAgIDEwMCwgMTIxLCA1MywgMTI3LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCA1MSwgMjM5LCAKKyAgICAxNzUsIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIxMywgNDYsIAorICAgIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDQ5LCAKKyAgICAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgNTEsIAorICAgIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjEzLCAKKyAgICA0NiwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgMjYsIDQ5LCAKKyAgICAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMjcsIDIwOSwgMTM5LCAyNiwgCisgICAgMjMzLCAxNzcsIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTI3LCA1MywgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIAorICAgIDUzLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCAyMzMsIDE3NywgMjM5LCAxNzUsIAorICAgIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIzMywgCisgICAgMTc2LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgMjMzLCAxNzcsIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAKKyAgICAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIAorICAgIDI1MCwgMjM3LCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTI3LCAyNiwgMjI1LCAyOCwgCisgICAgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMTUsIAorICAgIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyMDMsIDIyNSwgNTEsIDIwNSwgMTg2LCAyMjQsIDU0LCAKKyAgICAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyMDMsIDIyNSwgNDksIDIwNSwgMTg2LCAyMjQsIDU0LCAyMTMsIAorICAgIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyNDIsIDIzNCwgMTAwLCAxMjEsIDE2MiwgMjI1LCAyOCwgMTAwLCAxMjEsIAorICAgIDE2MiwgMjAzLCAyMjgsIDEwMCwgMTIxLCAxNjIsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDIzOSwgMTY3LCAxMDAsIDEyMSwgCisgICAgODAsIDIyNSwgMjgsIDEwMCwgMTIxLCA4MCwgMjAzLCAyMjgsIDEwMCwgMTIxLCA4MCwgMjEzLCA0NiwgMTAwLCAxMjEsIDgwLCAKKyAgICAyMzksIDE2NywgMTAwLCAxMjEsIDE2MiwgNDksIDI2LCA4MCwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgODAsIAorICAgIDIzOSwgMTY3LCAxMDAsIDEyMSwgODAsIDQ5LCAyNiwgMTYyLCAyMTMsIDQ2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDE2MiwgCisgICAgMjM5LCAxNjcsIDIwMywgMjI1LCAxNjcsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgMjI0LCAKKyAgICA1NCwgMTEyLCAyMTQsIDg4LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTI2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIyNCwgNTQsIAorICAgIDE2NywgMjQ4LCAxMzQsIDIyNCwgNTQsIDIzNywgNjEsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTI2LCAyMTQsIAorICAgIDg2LCAyNDgsIDEzNCwgMjI0LCA1NCwgMjEwLCAxMzYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjM2LCAxODMsIDI0OCwgMTM0LCAKKyAgICA0OSwgMjEwLCAxMzYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgNDksIDEyNiwgMjE0LCA4NiwgMjQ4LCAxMzQsIDQ5LCAyMzcsIAorICAgIDYxLCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDQ5LCAxNjcsIDI0OCwgMTM0LCA0OSwgMTI2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIAorICAgIDQ5LCAxMTIsIDIxNCwgODgsIDI0OCwgMTM0LCA0OSwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDUxLCAxNjcsIDI0OCwgCisgICAgMTM0LCAxNjIsIDIxMCwgMTAzLCAyMjIsIDY2LCAyMTAsIDEwMywgMjQxLCAyNTAsIDIxMCwgMTAzLCAyMDMsIDIyNSwgMTEyLCAKKyAgICAyMzgsIDIyOCwgMjQ4LCAxMzQsIDUxLCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgMjE0LCA5MiwgMjI0LCA1NCwgMjI1LCAKKyAgICAyOCwgMjE0LCA5MiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDIyNSwgMjgsIDIxNCwgOTIsIDIwMywgCisgICAgMjI1LCA0OSwgMjYsIDIyNCwgNTQsIDQ5LCAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAKKyAgICAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAyNiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCAKKyAgICA1NCwgMjI1LCAyOCwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAyNiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgMjEzLCAKKyAgICA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDIyNSwgCisgICAgMjgsIDIxNCwgOTIsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDQ5LCAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgNjMsIAorICAgIDIwOCwgMTkzLCA2NCwgMjA4LCAxOTMsIDY0LCA1MiwgMywgMjEyLCAyMTksIDI0MywgMTQsIDY0LCA1MiwgMjQzLCA0NSwgCisgICAgNjMsIDQsIDIwOCwgMTkzLCA1MiwgMywgMjMzLCAxNzcsIDIzNywgOTUsIDUyLCAzLCA4MywgMjM3LCA5NSwgNTIsIDMsIAorICAgIDIxNywgMTcsIDI0MiwgMjI5LCAyMzcsIDk1LCA1MiwgMywgMjAzLCAyMjUsIDQ5LCAyMDUsIDE4NiwgMjI0LCA1NCwgNTEsIAorICAgIDIzNywgOTUsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDIwNSwgMTg2LCAyMjQsIDU0LCA0OSwgMjM3LCA5NSwgNTIsIDMsIDI0MSwgCisgICAgNzEsIDI0MiwgMjI5LCAyMzcsIDk1LCA2MywgNCwgMjA4LCAxOTMsIDY0LCA0LCAyMDgsIDE5MywgNjMsIDIxMywgMTc1LCAKKyAgICA2NCwgMjEzLCAxNzUsIDYzLCA4MywgMjEzLCAxNzUsIDY0LCA4MywgMjEzLCAxNzUsIDYzLCAyMTYsIDExOSwgNjQsIDIxNiwgCisgICAgMTE5LCA2MywgMjAzLCAyMjcsIDIwNSwgOTgsIDY0LCAyMDMsIDIyNywgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCA0LCAyMDUsIAorICAgIDk4LCA2NCwgMjAzLCAyMjcsIDQsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMDUsIDk4LCA2NCwgMjEzLCA0MSwgMjA1LCA5OCwgCisgICAgNjMsIDIxMywgNDEsIDQsIDIwNSwgOTgsIDY0LCAyMTMsIDQxLCA0LCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjE1LCA5NywgCisgICAgNjQsIDIxMywgNDEsIDIxNSwgOTcsIDYzLCAyMzksIDE2NiwgMjA1LCA5OCwgNjQsIDIzOSwgMTY2LCAyMDUsIDk4LCA2MywgCisgICAgMjM5LCAxNjYsIDQsIDIwNSwgOTgsIDY0LCAyMzksIDE2NiwgNCwgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDIwNSwgOTgsIDY0LCAKKyAgICAyMjUsIDIzLCAyMDUsIDk4LCA2MywgMjI1LCAyMywgNCwgMjA1LCA5OCwgNjQsIDIyNSwgMjMsIDQsIDIwNSwgOTgsIDYzLCAKKyAgICAyMjUsIDIzLCAyMTUsIDk3LCA2NCwgMjI1LCAyMywgMjE1LCA5NywgNjMsIDI0MSwgNjQsIDY0LCAyNDEsIDY0LCA2NCwgCisgICAgMjQxLCA2NSwgMjQzLCA0NSwgNjMsIDQsIDI0MSwgNjQsIDIzNywgNzAsIDIyNCwgNDksIDY0LCAyNDYsIDE1NSwgMjM5LCAKKyAgICAxODAsIDI0NiwgMTU1LCAyNDYsIDE1NiwgMywgODMsIDIzNywgOTUsIDI0OCwgMTYsIDYzLCAyNDYsIDE1NSwgMjQ2LCAxNTYsIAorICAgIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyMjQsIAorICAgIDU0LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAKKyAgICAyMDMsIDIyNSwgNTEsIDIxNCwgOTIsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjUxLCAxMjUsIDI0NywgMjQ3LCAyMDMsIAorICAgIDIyNSwgNDksIDIxNCwgOTIsIDI0OCwgMTQ0LCA0OSwgMTY3LCA2MywgMjQ2LCAxNTUsIDUxLCAxNjcsIDYzLCAyNDYsIDE1NSwgCisgICAgMjI4LCA1MSwgMjQ4LCAyMCwgMjI4LCA1MSwgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgMTY3LCAyMjgsIDUxLCA2NCwgMjQ2LCAKKyAgICAxNTUsIDIyNCwgNTQsIDE2NywgMjI4LCA1MSwgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgNDksIDIxNCwgOTIsIDI0NiwgCisgICAgMTQ5LCAyNTAsIDIzNiwgMjAzLCAyMjUsIDUxLCAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIDIyNCwgNTQsIDUxLCAKKyAgICAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIDIyNCwgNTQsIDQ5LCAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIAorICAgIDIwMywgMjI1LCAxNjcsIDI0NiwgMTU1LCAyMjQsIDU0LCAxNjcsIDI0NiwgMTU1LCA2MywgMjI0LCA1NCwgNTEsIDIwNSwgCisgICAgOTgsIDYzLCAyMjQsIDU0LCA0OSwgMjA1LCA5OCwgNjMsIDIwMywgMjI1LCA0OSwgMjA1LCA5OCwgNjMsIDIwMywgMjI1LCAKKyAgICA1MSwgMjA1LCA5OCwgNjQsIDI0OCwgMjAsIDUyLCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDUxLCAxNjcsIDI0OCwgCisgICAgMTQ0LCA1MiwgMywgMjAzLCAyMjUsIDQ5LCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgMjI0LCA1NCwgNTEsIAorICAgIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDY0LCA1MiwgMywgODMsIDI0OCwgMTU2LCAyMjQsIDE3NiwgNjQsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAzLCAyNDAsIDE4MiwgMjAzLCAyMjcsIDIwNSwgOTksIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDIyNSwgNzEsIDI0NiwgMTU1LCA2NCwgNTIsIDMsIDIwMywgMjI1LCAKKyAgICA0OSwgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMjQsIDU0LCA0OSwgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMjQsIDU0LCA1MSwgCisgICAgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDQ5LCAKKyAgICAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIyNCwgNTQsIDQ5LCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIyNCwgNTQsIAorICAgIDUxLCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCA1MSwgMjE0LCA5MSwgMjAzLCAyMjUsIDQ5LCAyMDUsIAorICAgIDk4LCAyMDMsIDIyNSwgNTEsIDIwNSwgOTgsIDIyNCwgNTQsIDQ5LCAyMDUsIDk4LCA2NCwgMjIyLCA2NiwgMjA4LCAxOTMsIAorICAgIDYzLCAyMjIsIDY2LCAyMDgsIDE5MywgNjQsIDIyMiwgNjYsIDQsIDIwOCwgMTkzLCA2MywgMjIyLCA2NiwgNCwgMjA4LCAKKyAgICAxOTMsIDIyNCwgNTQsIDUxLCAyMDUsIDk4LCA2MywgMjA3LCAyMjksIDMsIDIxMywgMTk0LCAyNDYsIDEwMSwgMjA0LCA5LCAKKyAgICAyMDksIDMxLCAyNDYsIDczLCA2MywgMjA4LCAxMDksIDY0LCAyMDgsIDEwOSwgMjI0LCAxOTMsIDIwNiwgMzAsIDIwNywgCisgICAgMjI4LCAyNTAsIDE4NCwgMjE4LCAyMzgsIDI0MSwgMTE4LCAyMTgsIDIzOCwgMjQzLCA1NCwgMjE3LCAzOSwgNjMsIDIwNiwgCisgICAgMTc1LCA2NCwgMjA2LCAxNzUsIDI0OSwgOTQsIDI0OCwgNzgsIDI0OSwgOTQsIDEwMCwgMywgMjQ3LCA2LCAyNDksIDk0LCAKKyAgICAxMDAsIDMsIDIwMCwgMTk1LCAyMTIsIDI0LCAyMDQsIDEwLCAzLCAyMTMsIDIyMywgMjM5LCAxNDQsIDIzMywgMTE4LCAyNDgsIAorICAgIDIwNCwgNjQsIDIxMCwgMywgMjE1LCAxOTYsIDYzLCAyMTAsIDMsIDIxNSwgMTk2LCAyMTAsIDkxLCAyMTMsIDEwNSwgMjEyLCAKKyAgICAyMjgsIDIzNywgMjgsIDIzNCwgMTI4LCAyNDgsIDIwLCA2MywgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgNTEsIDIxNSwgCisgICAgOTYsIDIyOCwgMTAzLCA2NCwgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIAorICAgIDUxLCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgODEsIDI2LCAyNDIsIDIzMywgCisgICAgMjQ3LCAxMDUsIDU0LCAyMTMsIDIzNSwgNTQsIDI0OCwgMTY0LCA1NCwgMjQ3LCAxODEsIDI1MSwgNjEsIDIxNywgMTgsIAorICAgIDI0MiwgMjM0LCAyNDYsIDIzNywgMjEzLCA5MCwgMjQyLCAyMzUsIDc2LCAyMjQsIDY5LCAyNDIsIDIzNSwgNzYsIDIyNywgCisgICAgMjE3LCAyMDgsIDExMCwgMjYsIDI0MiwgMjQzLCAyMzcsIDE2MiwgOTksIDI1MSwgMjI4LCAyMTAsIDk0LCAyMzQsIDIwNywgCisgICAgMjYsIDIwOSwgMTc5LCAyMTYsIDcyLCA5OSwgMTk5LCAyNTUsIDIwMCwgNzUsIDIwNSwgODgsIDM2LCAyMzQsIDEyMywgMjA1LCAKKyAgICA4OCwgMzYsIDIyNSwgOTYsIDIwNSwgODgsIDM2LCAyMzcsIDc3LCAyMDUsIDg4LCAzNiwgMjA2LCAzMSwgMjA1LCA4OCwgMzYsIAorICAgIDIwMSwgMTYsIDIwNSwgODgsIDM2LCAyMDEsIDgyLCAyMDUsIDg4LCAzNiwgMjIxLCA2MywgMjA1LCA4OCwgMzYsIDIzOSwgCisgICAgMTcsIDIwMSwgMzgsIDc2LCAyNDEsIDkyLCA2NCwgMjM2LCAxOTUsIDIzNywgMTg5LCA2NCwgMjA5LCA0NywgMjM3LCAxODksIAorICAgIDYzLCAyMDksIDQ3LCAyMzcsIDE4OSwgNjQsIDIwNywgMjI5LCAzLCAyMTMsIDE5NCwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCAKKyAgICA4MSwgMjI1LCA2NCwgMjE0LCA4OCwgMjIxLCA4MSwgMjIyLCAzNCwgMjM3LCAxMzAsIDU0LCAyMzksIDE3LCAyMjIsIDE4NSwgCisgICAgNTQsIDIyNywgMTMzLCAyMTEsIDI0NCwgMjAzLCAyMDksIDIyMCwgMTgsIDIxNSwgMTEwLCAyNTAsIDIyMiwgMjA2LCAyMTksIAorICAgIDIzNiwgMiwgMjQ3LCAxNTQsIDIyNCwgMjQ2LCAyMDIsIDIwNiwgMjI0LCAyMDcsIDIxMSwgMjEyLCAyMTIsIDQ4LCAyNDcsIAorICAgIDEzOSwgMjUwLCAyNTQsIDIxNSwgMTQ1LCA2NCwgMjQ2LCAyNDQsIDIyNiwgMTQ0LCA2NCwgMjQ2LCAyNDQsIDIxNCwgODAsIAorICAgIDY0LCAyNDYsIDI0NCwgMjEyLCAyMzYsIDY0LCAyNDYsIDI0NCwgMjQ4LCAxNTUsIDY0LCAyNDYsIDI0NCwgMjI2LCA5MywgCisgICAgNjQsIDI0NiwgMjQ0LCAyMTYsIDg0LCA2MywgMjQ2LCAyNDQsIDIyNiwgMTQ0LCA2MywgMjQ2LCAyNDQsIDIxNCwgODAsIDYzLCAKKyAgICAyNDYsIDI0NCwgMjEyLCAyMzYsIDYzLCAyNDYsIDI0NCwgMjQ4LCAxNTUsIDYzLCAyNDYsIDI0NCwgMjI2LCA5MywgNjMsIAorICAgIDI0NiwgMjQ0LCAyMTYsIDg0LCA2MywgMjA4LCAyNDIsIDIwNywgMjQxLCA2NCwgMjM0LCAxMjgsIDIwNywgMjQxLCA2NCwgCisgICAgMjQxLCA2NSwgMjA3LCAyNDEsIDYzLCAyNDYsIDk4LCAyMDcsIDI0MSwgNjQsIDIwOCwgMjQyLCAyMDcsIDI0MSwgNjMsIAorICAgIDIzNCwgMTI4LCAyMDcsIDI0MSwgNjMsIDI0MSwgNjUsIDIwNywgMjQxLCA2NCwgMjQ2LCA5OCwgMjA3LCAyNDEsIDIzMywgCisgICAgMTE4LCAyMDgsIDE5OCwgMjE0LCA4OCwgMjE4LCAyMDksIDIzOCwgMjI4LCAyMTgsIDIwOSwgMjQ5LCA0LCAyMzgsIDIyOCwgCisgICAgMjE4LCAyMDQsIDI0OSwgNCwgMjA5LCA5OSwgMjE4LCAyMDQsIDIyMCwgMjQ2LCAyMzcsIDQ1LCA1NCwgMjIwLCAyNDYsIAorICAgIDIyMCwgMTE3LCA1NCwgMjIwLCAyNDYsIDIxMCwgNzksIDU0LCAyMDEsIDQ4LCAyMDcsIDEwMywgMjQyLCAyMzQsIDIzOSwgCisgICAgMTQsIDIwNywgMTAzLCAyNDIsIDIzNCwgMjAzLCAyMzcsIDIxMywgMTcxLCA5OSwgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAKKyAgICAxMjcsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDEyNSwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIAorICAgIDIwNCwgMTI0LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMjIsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIAorICAgIDM2LCAyMDQsIDEyMCwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTE4LCAyMTUsIDEyNywgMjEzLCAxNzEsIAorICAgIDE2LCAzNiwgMjA0LCAxMTYsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMzYsIDAsIDIyMiwgMTI2LCA2MywgMjAzLCAKKyAgICAyMzcsIDIxMywgMTcxLCA5OSwgMjEzLCAxNzIsIDIxNiwgMTM0LCA5OSwgMjE2LCAxMDcsIDIxNiwgMTM0LCA5OSwgMjE2LCAKKyAgICAxOSwgMjE2LCAxMzQsIDU0LCAyMDEsIDM2LCA5OSwgMjQxLCA1NywgMjM3LCAxODgsIDI0MSwgNTcsIDIzNywgMTg3LCAyNDEsIAorICAgIDU3LCAyMzcsIDE4NiwgMjQxLCA1NywgMjM3LCAxODUsIDI0MSwgNTcsIDIzNywgMTg0LCAyNDEsIDU3LCAyMzcsIDE4MywgCisgICAgNjQsIDI0NiwgMTU2LCAzLCA3MywgMjEzLCA0NiwgNjQsIDI0NiwgMTU2LCAzLCAxMjAsIDI0MCwgMTgwLCA2MywgMjQ2LCAKKyAgICAxNTYsIDMsIDY0LCA3MywgMjEzLCA0NiwgNjMsIDI0NiwgMTU2LCAzLCAxMjAsIDY0LCAyNDAsIDE4MCwgMjIxLCA5NywgMzYsIAorICAgIDIwMCwgNzUsIDIyMSwgOTcsIDM2LCAxOTksIDI1NCwgMjQxLCAzOCwgMzYsIDIzNSwgNjgsIDIwMCwgNzUsIDI0MSwgMzgsIAorICAgIDM2LCAyMjQsIDIzOSwgMTk5LCAyNTQsIDI0MSwgMzgsIDM2LCAyMjQsIDIzOSwgMjAwLCA3NSwgMjQxLCAzOCwgMzYsIDIzNSwgCisgICAgNjgsIDE5OSwgMjU0LCA2NCwgMjM3LCA1MywgNjMsIDIzNywgNTMsIDIzNCwgMjA3LCAyNiwgMjE1LCAyMDAsIDI1MSwgODEsIAorICAgIDI0MiwgMjMyLCAyMDcsIDE2OCwgMjA4LCAxMTgsIDc2LCAyNTEsIDIwNCwgMjExLCAyMjksIDI1MSwgMTQxLCAyMzcsIDI0LCAKKyAgICAyMzYsIDEyLCAyMDgsIDExOCwgNzYsIDIzNCwgOTgsIDI1MCwgMTQ3LCA5OSwgMjM3LCA0MCwgMjE2LCAyNTAsIDY0LCAyMDgsIAorICAgIDEwOSwgMTI2LCAyMjQsIDE3MSwgMjQzLCAzMSwgMjEzLCA0NiwgMTI2LCAyMjQsIDE3MSwgMjQzLCAzMSwgMjI1LCAyOCwgCisgICAgMjAxLCA5MywgNTQsIDEyMiwgMjAyLCAxODIsIDU0LCAyMzksIDE3MiwgMjM3LCAxMzAsIDU0LCAyMzksIDE3MiwgMjIyLCAKKyAgICAxODUsIDU0LCAyMjgsIDYxLCAyMzcsIDEzMCwgMjYsIDIyMiwgMTg1LCA1NCwgMjIyLCAxODUsIDI2LCAyMzcsIDEzMCwgNTQsIAorICAgIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCA1NCwgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDI2LCAyMjIsIDE4NSwgMjYsIDIzNywgCisgICAgMTMwLCA1NCwgODMsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCA1NCwgMjMzLCAxNzcsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCAKKyAgICA1NCwgMjIyLCA2NiwgNjQsIDI0NiwgMTU1LCAyMjIsIDY2LCA2MywgMjQ2LCAxNTUsIDIyMiwgNjYsIDQsIDY0LCAyNDYsIAorICAgIDE1NSwgMjIyLCAxNDMsIDk5LCAyNDAsIDIzMywgOTksIDIwMywgMjM0LCAyMTYsIDEwNiwgOTksIDI0NiwgODQsIDIzNiwgCisgICAgMTc4LCAyMDMsIDIwNSwgMjIwLCAxMSwgMjQ3LCA0MSwgMjE2LCAxNzksIDIyNywgMTM5LCAyMDIsIDI0NCwgMjQ2LCAyMTcsIAorICAgIDYzLCAyMjEsIDgyLCAyMjQsIDE5MCwgMjEwLCAxMjUsIDIxMCwgMTY0LCAyMTQsIDcwLCAyMTAsIDE0NCwgMjA5LCAyNiwgCisgICAgMjQ5LCA5NywgMjQ5LCA2MywgOTUsIDIyNiwgMjE0LCA2NCwgMjM5LCAxNTUsIDIyMiwgMTgwLCA2NCwgMjM5LCAxNTUsIAorICAgIDIyNiwgMTQ0LCA2MywgMjM5LCAxNTUsIDIyMiwgMTgwLCA2MywgMjM5LCAxNTUsIDIyNiwgMTQ0LCAyMDksIDMyLCAyMDEsIAorICAgIDMsIDIwOSwgMzUsIDIwNywgMjI5LCAyNDgsIDIzNywgMjQ2LCAxMDEsIDIxMywgMjIyLCA2MywgMjA5LCAzMSwgMjA2LCAzMiwgCisgICAgMjQ2LCAxMDIsIDI2LCAyMTMsIDIyMiwgMjA0LCAxODUsIDY0LCAyMTAsIDMsIDIxNSwgMTk2LCAyMDQsIDE4NSwgNjMsIAorICAgIDIxMCwgMywgMjE1LCAxOTYsIDY0LCAyNDEsIDY1LCAyMjgsIDExOCwgMjA4LCAxOTMsIDI0MiwgMjI4LCAyMjUsIDc4LCAKKyAgICAyNDEsIDUsIDI0NywgMTM1LCAyMTcsIDQyLCAyMTUsIDIwMCwgMjQ3LCAxMzYsIDIwOSwgNjUsIDIzNCwgMTA4LCAzLCA2NCwgCisgICAgMjQyLCAyMzQsIDQ0LCAyNDIsIDIyOCwgMjI1LCA3OCwgMjQ3LCAzMywgMjE4LCAyNDIsIDIzOCwgMTQ5LCAyNTEsIDEwOSwgCisgICAgMjE3LCA3MSwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2MywgMjA0LCAxMzgsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjQsIAorICAgIDIwNCwgMTM4LCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDYzLCA0OSwgMjI1LCA3OSwgMjIyLCAzMywgNjQsIDQ5LCAyMjUsIAorICAgIDc5LCAyMjIsIDMzLCAyMzksIDE1MCwgMjA5LCA1NywgNTQsIDgwLCA2NCwgMjM5LCAxNjYsIDIwNSwgOTgsIDQ5LCAyNDYsIAorICAgIDExMCwgMjM4LCAxNDksIDk1LCAyMTIsIDI0LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjI4LCAxMTgsIDY0LCAyNDYsIDE1NiwgCisgICAgMjI4LCAxMTgsIDYzLCAyMDgsIDE5MywgNjMsIDIwNSwgNjIsIDIxMywgMTE2LCA0OSwgMjM4LCAxNDgsIDIxMywgMTE2LCAKKyAgICA0OSwgMjM4LCAxNDcsIDI1MCwgMTYwLCAxNiwgMzYsIDIwMywgMjA5LCA4MCwgMjQ2LCAxNTYsIDMsIDIwOCwgNDcsIDI2LCAKKyAgICAxMjAsIDE5MCwgNTYsIDIxNiwgMzYsIDIxMywgNDMsIDIyOCwgNjMsIDIxNiwgMzYsIDIyNSwgMjUsIDIyOCwgNjMsIDIxNiwgCisgICAgMzYsIDIyOCwgNTAsIDIxNiwgMzYsIDYzLCAyNDIsIDIzNSwgMjE3LCA3OSwgMjEwLCAzMCwgMjEwLCAxOCwgMjA5LCAyMjUsIAorICAgIDI0NiwgMTg0LCAyNDcsIDExMywgMjM0LCA0NiwgMjA5LCAxMDcsIDIzNiwgMTMsIDIwMSwgMywgMjMzLCA5NCwgMjM2LCAxMywgCisgICAgMywgMjM0LCAxNzYsIDIyMiwgMTY1LCAxNiwgMzYsIDIyNCwgMTk1LCAyMjEsIDYzLCAyMDQsIDEwLCAyMTcsIDc5LCAyMzUsIAorICAgIDU5LCAyMzYsIDIzMCwgMjM3LCA1NCwgMjI4LCAxMTgsIDIzMywgMTk3LCAyMzcsIDEyMCwgMjEyLCA0MywgNTIsIDIzNiwgCisgICAgMjI5LCAyNDMsIDE0LCAyMDksIDg0LCAyMzIsIDIzMiwgMjA5LCA4NywgMjE2LCAxMSwgMywgMjQ5LCA5NywgMjA2LCAxNTgsIAorICAgIDIyNywgMjM2LCAyNDksIDgyLCA5OSwgMjM0LCAxMzEsIDIzNSwgNzAsIDk5LCAyMzYsIDE4NiwgMjE0LCAyMTMsIDI0MiwgCisgICAgMjAzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDY0LCAyMzcsIDU0LCAzLCAyMzMsIDE3NywgMTAxLCA2MywgMjA4LCA0OCwgCisgICAgNjMsIDIxMiwgNTMsIDIxMSwgMjE2LCAyMDMsIDIyNSwgMjQ4LCAxMzksIDIxMSwgMjE2LCA2MywgMjExLCAyMTYsIDIyNCwgCisgICAgNTQsIDI0OCwgMTM5LCAyMTEsIDIxNiwgNjQsIDIxMSwgMjE2LCA2NCwgODAsIDI0NywgNywgODEsIDIwNiwgMTc2LCAyMjQsIAorICAgIDEwOCwgNTQsIDIwNiwgMjM1LCAyMzksIDE0OSwgMjUxLCAxNjQsIDIzOCwgMTQ0LCAyMTMsIDIyMCwgMjM3LCA2NiwgMjEzLCAKKyAgICAyMjAsIDIzNCwgMTk5LCAyMDIsIDIzMiwgMjM0LCAxOTksIDIwMCwgMjE5LCAyMzQsIDE5OSwgMjI0LCA1NCwgNTEsIDIxNiwgCisgICAgNDYsIDIxNiwgNDYsIDIwMywgMjI1LCA1MSwgMjE2LCA0NiwgNjQsIDIxOSwgMTQ3LCA2MywgMjE5LCAxNDcsIDI0NywgNywgCisgICAgODEsIDgwLCAyNDcsIDcsIDgxLCAyMjEsIDE5LCAyMDAsIDE5NSwgODAsIDIyMSwgMTksIDIwMCwgMTk1LCAyNDksIDk0LCAKKyAgICAyMDAsIDE5NSwgODAsIDI0OSwgOTQsIDIwMCwgMTk1LCAyMTYsIDI1MCwgMzEsIDI0MiwgMjM0LCA4MCwgMzEsIDI0MiwgCisgICAgMjM0LCAxNzYsIDI0NywgNTYsIDI0MiwgMjM0LCA4MCwgMTc2LCAyNDcsIDU2LCAyNDIsIDIzNCwgOCwgMjQyLCAyMzQsIAorICAgIDIxMCwgMTAxLCA2NCwgOCwgMjQyLCAyMzQsIDIxNiwgMjUwLCA4LCAyNDIsIDIzNCwgMjIyLCAxODIsIDI0MiwgMjM0LCAKKyAgICAyMDgsIDExMCwgNzYsIDI0MSwgMjM3LCAyMzYsIDIyOSwgMjA2LCAxOTQsIDI1MCwgMTY1LCAyMzYsIDIyOSwgMjQ5LCA5NSwgCisgICAgMjUwLCAxNjUsIDgwLCAyMzYsIDIyOSwgMjQ5LCA5NSwgMjUwLCAxNjUsIDIzNiwgMjI5LCAyNDYsIDk2LCAyNTAsIDE2NSwgCisgICAgNjMsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMDgsIDEwOSwgNjQsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMDgsIDEwOSwgMjA4LCAKKyAgICAyMzcsIDIwOCwgNTcsIDIxNiwgMjUwLCA2NCwgMjA4LCAxMDksIDQ0LCA2NCwgMjA4LCAxMDksIDE3NiwgMjQ3LCA1NiwgNjMsIAorICAgIDIwOCwgMTA5LCA2MywgMjQ3LCA1NiwgNjQsIDIwOCwgMTA5LCAyMTYsIDI1MCwgNjMsIDIwOCwgMTA5LCA4MCwgMjE2LCAKKyAgICAyNTAsIDYzLCAyMDgsIDEwOSwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMTAsIDEwMSwgNjQsIDIwOCwgMTA5LCA4MCwgMjUwLCAKKyAgICAxNjUsIDE3NiwgMjQ3LCA1NiwgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIwOSwgMTA2LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTMsIDE3MywgNjMsIDIwOCwgMTA5LCA4MCwgMjM4LCAKKyAgICAyMzIsIDIxNSwgOTgsIDIxMywgMTczLCA2MywgMjA4LCAxMDksIDIwNCwgMTY1LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIAorICAgIDIwOSwgMTAxLCAyMTUsIDk4LCAyNTAsIDE2NSwgMjA2LCAxOTQsIDI1MCwgMTY1LCAxNzYsIDI0NywgNTYsIDIwNiwgMTk0LCAKKyAgICAyNTAsIDE2NSwgODAsIDIwNiwgMTk0LCAyNTAsIDE2NSwgMjA5LCAxMDYsIDIxNSwgMjU1LCA2MywgMjYsIDY0LCAyMzcsIAorICAgIDI3LCA2MywgMjM3LCAyNywgNjQsIDIzNywgMjcsIDIzOCwgMjMyLCAyMTUsIDI1NSwgMjE2LCAyNTAsIDYzLCAyMzcsIDI3LCAKKyAgICA0NCwgMTc2LCAyNDcsIDU2LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjA4LCAxMDksIDgwLCAyMDYsIDE5NCwgMjE1LCAxNTUsIAorICAgIDI1MCwgMTY1LCAyMDksIDMzLCAyMDYsIDEsIDIwNSwgOTEsIDIwOSwgMzMsIDgwLCAyNDYsIDI0MCwgMjA5LCAzMywgMjA4LCAKKyAgICAyMzksIDgwLCAyMDgsIDIzOSwgMjQ5LCA5NSwgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMDYsIDE5NCwgMjE0LCAyNDYsIDI1MCwgCisgICAgMTY1LCA4MCwgMjM4LCAyMzIsIDIwNiwgMTk0LCAyMTQsIDI0NiwgMjUwLCAxNjUsIDI0MiwgMjM1LCA4MSwgMjEwLCAxMDEsIAorICAgIDY0LCAyNDYsIDE1NSwgMTg5LCA5NSwgMjQyLCAyMzUsIDgxLCAyMjQsIDU0LCA1MSwgMjM5LCAxNDYsIDY0LCAyMDgsIDE5MywgCisgICAgMjAzLCAyMjUsIDUxLCAyMzksIDE0NiwgNjQsIDIwOCwgMTkzLCAyMjQsIDU0LCA1MSwgMjEwLCAxMDEsIDY0LCAyMDgsIAorICAgIDE5MywgMjAzLCAyMjUsIDUxLCAyMTAsIDEwMSwgNjQsIDIwOCwgMTkzLCA2MywgMjE0LCA3OSwgMTM0LCAyMTcsIDIxLCA2NCwgCisgICAgMjE0LCA3OSwgMTM0LCAyMTcsIDIxLCA2NCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCA2MywgMjQxLCA2NSwgMjIxLCAxNTcsIAorICAgIDY0LCAyMDAsIDE5NSwgODAsIDIzOCwgNDMsIDEzNCwgOTksIDE2MiwgODMsIDE0OCwgMjIyLCA2NiwgODMsIDE0OCwgODAsIAorICAgIDgzLCAxNDgsIDgwLCAyMDksIDEzOSwgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIwOSwgCisgICAgMTM5LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCA1MywgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIAorICAgIDEzNCwgMjE3LCAyMSwgODAsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAxMjgsIDIwOSwgMTM5LCAKKyAgICAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAxMjgsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgCisgICAgMjEsIDI0MiwgMTg4LCAyMDgsIDkzLCAyMTYsIDEyOCwgMiwgMjE3LCAyMSwgODAsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgCisgICAgODAsIDIzNCwgMTI4LCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIDgwLCA2MywgMjM0LCAxMjcsIDIxMiwgMjI4LCA4MCwgNjMsIAorICAgIDIzNCwgMTI4LCAyNDgsIDIwLCAyMzcsIDI4LCAyMzQsIDEyNywgMjEyLCAyMjgsIDIzNywgMjgsIDIzNCwgMTI4LCAyNDgsIAorICAgIDIwLCAyMjIsIDY2LCA0OSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgNjYsIDUxLCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCAKKyAgICA2NiwgMjM3LCA0MSwgNDksIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIDY2LCAyMzcsIDQxLCA1MSwgMjE2LCAxMTYsIDIxNywgCisgICAgMjEsIDIyMiwgNjYsIDIyNSwgMjMsIDI1MSwgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgNjYsIDIxMywgNDEsIDI1MSwgCisgICAgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDgwLCAyMjUsIDIzLCAyNTEsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAKKyAgICAyMTMsIDQxLCAyNTEsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMjUsIDIzLCAyNTEsIDcxLCAyNDgsIDcwLCAKKyAgICAyMTcsIDIxLCA4MCwgMjEzLCA0MSwgMjUxLCA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgMTYyLCA0OSwgMjA1LCAxNDYsIDIxMCwgCisgICAgNTUsIDI0OCwgNzAsIDIxNywgMjEsIDE2MiwgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIAorICAgIDY2LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgNjYsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjE3LCAKKyAgICAyMSwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDEwMiwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDEwNSwgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgMTcsIDE0NywgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDE0OSwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDE2NCwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgMTcsIDE4NywgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCAxODksIDQ0LCAKKyAgICAxNywgMTkyLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDE4OSwgNDQsIDQxLCAyMDYsIDE2NiwgCisgICAgMjQxLCAxNywgNDQsIDQzLCAxNywgMTAyLCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxMDUsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIAorICAgIDE0NywgMjQxLCAxNywgNDQsIDQzLCAxNywgMTQ5LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxNjQsIDI0MSwgMTcsIDQ0LCA0MywgCisgICAgMTcsIDE4NywgMjQxLCAxNywgNDQsIDQzLCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE5MiwgMjQxLCAKKyAgICAxNywgNDQsIDQzLCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDQ0LCA0MywgNDEsIDIwNiwgMTY2LCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCA0MywgMTcsIDEwMiwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxMDUsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgCisgICAgMTQ3LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDE0OSwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxNjQsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTg3LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCAKKyAgICAxODksIDQ0LCA0MywgMTcsIDE5MiwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAyMTksIDExMywgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgNDMsIDQxLCAyMDYsIDE2NiwgODAsIDIwMSwgMjcsIDg3LCA0OCwgODAsIDkzLCA1NCwgODAsIDIyMSwgMTU3LCA1NCwgCisgICAgODAsIDI0MCwgMjM1LCA1NCwgODAsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgODAsIDg3LCA0OCwgODAsIDE1NywgMjM5LCAKKyAgICAxNCwgNDgsIDIzOSwgMTYwLCAyMTUsIDEwMCwgODcsIDQ4LCA4MCwgMjEyLCAyMjAsIDg3LCA0OCwgMjA1LCA5NywgODcsIAorICAgIDQ4LCA4MCwgMjA1LCA5NywgODcsIDQ4LCAyNDEsIDI0MywgMjA1LCA5NywgODcsIDQ4LCA4MCwgMjQxLCAyNDMsIDIwNSwgCisgICAgOTcsIDg3LCA0OCwgNjMsIDg3LCA0OCwgMjA2LCA0NSwgMjA1LCAxNTYsIDg3LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjQ4LCAKKyAgICA5MSwgODcsIDI1MCwgMjAyLCA2MywgODcsIDI1MCwgMjAyLCA4MCwgNjMsIDI0MiwgMTg4LCAxOTEsIDI2LCA4NywgNDgsIAorICAgIDgwLCA2MywgMjQyLCAxODgsIDE4MiwgMjYsIDg3LCA0OCwgMjA4LCAxOTAsIDYzLCA4NywgNDgsIDgwLCAyNDMsIDY3LCA2MywgCisgICAgODcsIDQ4LCAyMTMsIDQwLCA2NCwgODcsIDQ4LCAyMjUsIDIyLCA2NCwgODcsIDQ4LCAyNDksIDEyOCwgMjEwLCAxMDEsIDY0LCAKKyAgICA4NywgNDgsIDIzNiwgMTk4LCAyMTAsIDEwMSwgNjQsIDg3LCA0OCwgODAsIDIyNCwgNTQsIDIxMywgMzksIDY0LCA4NywgNDgsIAorICAgIDgwLCAyMDMsIDIyNSwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgMjE4LCAyMTEsIDIyNCwgNTQsIDIxMywgMzksIDY0LCA4NywgCisgICAgNDgsIDI0MiwgMTk2LCAyMjQsIDc0LCAyMTgsIDIxMSwgMjAzLCAyMjUsIDIxMywgMzksIDY0LCA4NywgNDgsIDQ0LCA4MCwgCisgICAgNjQsIDg3LCA0OCwgMjAxLCAzMywgODcsIDQ4LCAyNDgsIDE0MywgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyNDgsIDE0MywgCisgICAgODcsIDQ4LCAyNDgsIDE0MywgMTU3LCAyMzksIDE0LCA0OCwgODAsIDI0OCwgMTQzLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIAorICAgIDgwLCAyNDgsIDE0MywgODcsIDQ4LCA4MCwgMjQ4LCAxNDMsIDE1NywgMjM5LCAxNCwgNDgsIDIwNiwgMTk2LCA4NywgNDgsIAorICAgIDgwLCAyMDYsIDE5NSwgODcsIDQ4LCAyMDEsIDU4LCA4NywgNDgsIDgwLCAyMDEsIDU4LCA4NywgNDgsIDIxNywgNDgsIDg3LCAKKyAgICA0OCwgNTMsIDI0MiwgMTk2LCAyMjQsIDc0LCAxMjYsIDI0MSwgMjcsIDI1MSwgNzAsIDY0LCAyMDUsIDk5LCAyNDMsIDQ1LCAKKyAgICA0LCA2NCwgMjA1LCA5OCwgMjE2LCAxNCwgMTc2LCAyMDgsIDIsIDE3NiwgMjA3LCAyMTEsIDQ5LCAyMTIsIDEyMSwgMjQ5LCAKKyAgICAxMTQsIDI0MSwgMTQyLCA1MSwgMjEyLCAxMjEsIDI0OSwgMTE0LCAyNDEsIDE0MiwgMjE3LCAzNCwgMywgNzMsIDIyOCwgNzMsIAorICAgIDIxMywgMTA2LCAyMDksIDE3LCAyMTUsIDI3LCAyMDgsIDIsIDIwNywgMjEyLCAyMTUsIDI3LCAyMDksIDE2LCA4MywgMjQ5LCAKKyAgICA3NywgMywgMjMzLCAxNzcsIDk3LCAxMywgMjEzLCAxOSwgMjQxLCA3MCwgMTY4LCAyNDAsIDIzNCwgMTMsIDIzNywgMTcxLCAKKyAgICAyNDEsIDcwLCA5NSwgMjI0LCA5OCwgMjUxLCA3OSwgOTUsIDIyNCwgOTgsIDIxNywgMzMsIDY0LCAyNDEsIDY1LCAzLCAyNDcsIAorICAgIDU0LCAyNDAsIDE4MiwgMjYsIDMsIDI0MCwgMTgyLCAyMzgsIDIwMiwgNzYsIDIxNywgNDYsIDIwMywgMjE2LCAyMjQsIDU0LCAKKyAgICA1MSwgMjQzLCAxNiwgMywgMjQwLCAxODIsIDIwMywgMjI1LCA0OSwgMjQzLCAxNiwgMywgMjQwLCAxODIsIDQ5LCAyMTYsIAorICAgIDI1MiwgMjI3LCAxNjQsIDUxLCAyMTYsIDI1MiwgMjI3LCAxNjQsIDIzNiwgMTgzLCAyMTYsIDI1MiwgMjI3LCAxNjQsIDIyNSwgCisgICAgNzEsIDExNSwgMjA3LCAxNywgMjI1LCA3MSwgMTI3LCAyMDcsIDE3LCA0OSwgMjYsIDUxLCA1MywgMjA0LCAxODQsIDQ5LCAKKyAgICAyNiwgNTEsIDIwNywgMTcsIDQ5LCAyMjEsIDIzLCAxNjgsIDUxLCAyMDcsIDE3LCAxNjgsIDQ5LCAyMDcsIDE3LCAxMTUsIAorICAgIDIwNywgMTgsIDMsIDI0NiwgMTU2LCA1NiwgMjI0LCA1MCwgMjQwLCAyNDAsIDI0NywgMjM1LCAyMzMsIDE3NywgMjEyLCAKKyAgICAxNjUsIDY0LCAyNDMsIDY2LCAyNDEsIDY0LCA2NCwgMjQzLCA2NiwgMjQxLCA2NSwgMywgOTgsIDIwNiwgMTEsIDY0LCAyNDMsIAorICAgIDY2LCAyNDEsIDY1LCAzLCA4NywgMjA2LCAxMSwgNjQsIDUyLCAzLCA5OCwgMjA2LCAxMSwgNjQsIDUyLCAzLCA4NywgMjA2LCAKKyAgICAxMSwgMTMsIDQ5LCA2NCwgNTIsIDE1OSwgMTMsIDUxLCA2NCwgNTIsIDE1OSwgMTMsIDQ5LCAyNTEsIDcxLCAxNTksIDEzLCAKKyAgICA1MSwgMjUxLCA3MSwgMTU5LCAxMywgNDksIDUzLCAyNTEsIDcxLCAxNTksIDEzLCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgMTMsIAorICAgIDQ5LCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMTMsIDUxLCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMTMsIAorICAgIDQ5LCAyMzcsIDQxLCAyMTYsIDExNSwgMTMsIDUxLCAyMzcsIDQxLCAyMTYsIDExNSwgMTgyLCAyMTQsIDkwLCA0OCwgMTkxLCAKKyAgICAyMTQsIDkwLCA0OCwgMjUxLCA0NywgMjM2LCA1MSwgMjQ2LCAxNTYsIDQ4LCAyNDYsIDExMiwgMjM2LCA1MSwgMjQ2LCAxNTYsIAorICAgIDQ4LCA1MSwgNTUsIDMsIDQ0LCAyMTUsIDExMywgMTY4LCA5OCwgNDgsIDE2OCwgODcsIDQ4LCAxNjgsIDQ5LCA1MSwgNDgsIAorICAgIDE2OCwgOTgsIDUzLCA0OCwgMTY4LCA4NywgNTMsIDQ4LCAxNjgsIDQ5LCA1MSwgNTMsIDQ4LCAxNjgsIDk4LCA1NSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgMTY4LCA4NywgNTUsIDIzNiwgMjAxLCAxNDgsIDE2OCwgOTgsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgMTY4LCA4NywgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxNjgsIDg3LCAyMDgsIDE4NiwgNDgsIDU5LCA2MCwgMjQ4LCAxMzcsIAorICAgIDU5LCA2MCwgMjQwLCAxNzksIDU5LCA2MCwgMjQwLCA1MSwgNTksIDYwLCAyNDAsIDE3OCwgNTksIDYwLCAyMzksIDI0MywgCisgICAgNTksIDYwLCAyNDAsIDExNCwgNTksIDYwLCAyNDAsIDUwLCA1OSwgNjAsIDI0MCwgMTc3LCA1OSwgNjAsIDIzOSwgMjExLCAKKyAgICA1OSwgNjAsIDI0MCwgODIsIDU5LCA2MCwgMjQwLCAxOCwgNTksIDYwLCAyNDAsIDE0NSwgNTksIDYwLCAyMzksIDI0MiwgNTksIAorICAgIDYwLCAyNDAsIDExMywgNTksIDYwLCAyNDAsIDQ5LCA1OSwgNjAsIDI0MCwgMTc2LCA1OSwgNjAsIDIzOSwgMTk1LCA1OSwgCisgICAgNjAsIDI0MCwgNjYsIDU5LCA2MCwgMjQwLCAyLCA1OSwgNjAsIDI0MCwgMTI5LCA1OSwgNjAsIDIzOSwgMjI2LCA1OSwgNjAsIAorICAgIDI0MCwgOTcsIDU5LCA2MCwgMjQwLCAzMywgNTksIDYwLCAyNDAsIDE2MCwgNTksIDYwLCAyMzksIDIxMCwgNTksIDYwLCAKKyAgICAyNDAsIDgxLCA1OSwgNjAsIDI0MCwgMTcsIDU5LCA2MCwgMjQwLCAxNDQsIDU5LCA2MCwgMjM5LCAyNDEsIDU5LCA2MCwgCisgICAgMjQwLCAxMTIsIDU5LCA2MCwgMjQwLCA0OCwgNTksIDYwLCAyNDAsIDE3NSwgNTksIDYwLCAyMzksIDE4NywgNTksIDYwLCAKKyAgICAyNDAsIDU4LCA1OSwgNjAsIDIzOSwgMjUwLCA1OSwgNjAsIDI0MCwgMTIxLCA1OSwgNjAsIDIzOSwgMjE4LCA1OSwgNjAsIAorICAgIDI0MCwgODksIDU5LCA2MCwgMjQwLCAyNSwgNTksIDYwLCAyNDAsIDE1MiwgNTksIDYwLCAyMzksIDIwMiwgNTksIDYwLCAKKyAgICAyNDAsIDczLCA1OSwgNjAsIDI0MCwgOSwgNTksIDYwLCAyNDAsIDEzNiwgNTksIDYwLCAyMzksIDIzMywgNTksIDYwLCAyNDAsIAorICAgIDEwNCwgNTksIDYwLCAyNDAsIDQwLCA1OSwgNjAsIDI0MCwgMTY3LCA1OSwgNjAsIDIzOSwgMTk0LCA1OSwgNjAsIDI0MCwgCisgICAgNjUsIDU5LCA2MCwgMjQwLCAxLCA1OSwgNjAsIDI0MCwgMTI4LCA1OSwgNjAsIDIzOSwgMjI1LCA1OSwgNjAsIDI0MCwgOTYsIAorICAgIDU5LCA2MCwgMjQwLCAzMiwgNTksIDYwLCAyNDAsIDE1OSwgNTksIDYwLCAyMzksIDIwOSwgNTksIDYwLCAyNDAsIDgwLCA1OSwgCisgICAgNjAsIDI0MCwgMTYsIDU5LCA2MCwgMjQwLCAxNDMsIDU5LCA2MCwgMjM5LCAyNDAsIDU5LCA2MCwgMjQwLCAxMTEsIDU5LCAKKyAgICA2MCwgMjQwLCA0NywgNTksIDYwLCAyNDAsIDE3NCwgNTksIDYwLCAyMzksIDE4MywgNTksIDYwLCAyNDAsIDU0LCA1OSwgNjAsIAorICAgIDIzOSwgMjQ2LCA1OSwgNjAsIDI0MCwgMTE3LCA1OSwgNjAsIDIzOSwgMjE0LCA1OSwgNjAsIDI0MCwgODUsIDU5LCA2MCwgCisgICAgMjQwLCAyMSwgNTksIDYwLCAyNDAsIDE0OCwgNTksIDYwLCAyMzksIDE5OCwgNTksIDYwLCAyNDAsIDY5LCA1OSwgNjAsIAorICAgIDI0MCwgNSwgNTksIDYwLCAyNDAsIDEzMiwgNTksIDYwLCAyMzksIDIyOSwgNTksIDYwLCAyNDAsIDEwMCwgNTksIDYwLCAKKyAgICAyNDAsIDM2LCA1OSwgNjAsIDI0MCwgMTYzLCA1OSwgNjAsIDIzOSwgMTkwLCA1OSwgNjAsIDI0MCwgNjEsIDU5LCA2MCwgCisgICAgMjM5LCAyNTMsIDU5LCA2MCwgMjQwLCAxMjQsIDU5LCA2MCwgMjM5LCAyMjEsIDU5LCA2MCwgMjQwLCA5MiwgNTksIDYwLCAKKyAgICAyNDAsIDI4LCA1OSwgNjAsIDI0MCwgMTU1LCA1OSwgNjAsIDIzOSwgMjA1LCA1OSwgNjAsIDI0MCwgNzYsIDU5LCA2MCwgCisgICAgMjQwLCAxMiwgNTksIDYwLCAyNDAsIDEzOSwgNTksIDYwLCAyMzksIDIzNiwgNTksIDYwLCAyNDAsIDEwNywgNTksIDYwLCAKKyAgICAyNDAsIDQzLCA1OSwgNjAsIDI0MCwgMTcwLCA1OSwgNjAsIDIzOSwgMTg2LCA1OSwgNjAsIDI0MCwgNTcsIDU5LCA2MCwgCisgICAgMjM5LCAyNDksIDU5LCA2MCwgMjQwLCAxMjAsIDU5LCA2MCwgMjM5LCAyMTcsIDU5LCA2MCwgMjQwLCA4OCwgNTksIDYwLCAKKyAgICAyNDAsIDI0LCA1OSwgNjAsIDI0MCwgMTUxLCA1OSwgNjAsIDIzOSwgMjAxLCA1OSwgNjAsIDI0MCwgNzIsIDU5LCA2MCwgCisgICAgMjQwLCA4LCA1OSwgNjAsIDI0MCwgMTM1LCA1OSwgNjAsIDIzOSwgMjMyLCA1OSwgNjAsIDI0MCwgMTAzLCA1OSwgNjAsIAorICAgIDI0MCwgMzksIDU5LCA2MCwgMjQwLCAxNjYsIDU5LCA2MCwgMjM5LCAxOTMsIDU5LCA2MCwgMjQwLCA2NCwgNTksIDYwLCAKKyAgICAyNDAsIDAsIDU5LCA2MCwgMjQwLCAxMjcsIDU5LCA2MCwgMjM5LCAyMjQsIDU5LCA2MCwgMjQwLCA5NSwgNTksIDYwLCAyNDAsIAorICAgIDMxLCA1OSwgNjAsIDI0MCwgMTU4LCA1OSwgNjAsIDIzOSwgMjA4LCA1OSwgNjAsIDI0MCwgNzksIDU5LCA2MCwgMjQwLCAxNSwgCisgICAgNTksIDYwLCAyNDAsIDE0MiwgNTksIDYwLCAyMzksIDIzOSwgNTksIDYwLCAyNDAsIDExMCwgNTksIDYwLCAyNDAsIDQ2LCAKKyAgICA1OSwgNjAsIDI0MCwgMTczLCA1OSwgNjAsIDIzOSwgMTgxLCA1OSwgNjAsIDI0MCwgNTIsIDU5LCA2MCwgMjM5LCAyNDQsIAorICAgIDU5LCA2MCwgMjQwLCAxMTUsIDU5LCA2MCwgMjM5LCAyMTIsIDU5LCA2MCwgMjQwLCA4MywgNTksIDYwLCAyNDAsIDE5LCA1OSwgCisgICAgNjAsIDI0MCwgMTQ2LCA1OSwgNjAsIDIzOSwgMTk2LCA1OSwgNjAsIDI0MCwgNjcsIDU5LCA2MCwgMjQwLCAzLCA1OSwgNjAsIAorICAgIDI0MCwgMTMwLCA1OSwgNjAsIDIzOSwgMjI3LCA1OSwgNjAsIDI0MCwgOTgsIDU5LCA2MCwgMjQwLCAzNCwgNTksIDYwLCAKKyAgICAyNDAsIDE2MSwgNTksIDYwLCAyMzksIDE4OCwgNTksIDYwLCAyNDAsIDU5LCA1OSwgNjAsIDIzOSwgMjUxLCA1OSwgNjAsIAorICAgIDI0MCwgMTIyLCA1OSwgNjAsIDIzOSwgMjE5LCA1OSwgNjAsIDI0MCwgOTAsIDU5LCA2MCwgMjQwLCAyNiwgNTksIDYwLCAKKyAgICAyNDAsIDE1MywgNTksIDYwLCAyMzksIDIwMywgNTksIDYwLCAyNDAsIDc0LCA1OSwgNjAsIDI0MCwgMTAsIDU5LCA2MCwgCisgICAgMjQwLCAxMzcsIDU5LCA2MCwgMjM5LCAyMzQsIDU5LCA2MCwgMjQwLCAxMDUsIDU5LCA2MCwgMjQwLCA0MSwgNTksIDYwLCAKKyAgICAyNDAsIDE2OCwgNTksIDYwLCAyMzksIDE4NCwgNTksIDYwLCAyNDAsIDU1LCA1OSwgNjAsIDIzOSwgMjQ3LCA1OSwgNjAsIAorICAgIDI0MCwgMTE4LCA1OSwgNjAsIDIzOSwgMjE1LCA1OSwgNjAsIDI0MCwgODYsIDU5LCA2MCwgMjQwLCAyMiwgNTksIDYwLCAKKyAgICAyNDAsIDE0OSwgNTksIDYwLCAyMzksIDE5OSwgNTksIDYwLCAyNDAsIDcwLCA1OSwgNjAsIDI0MCwgNiwgNTksIDYwLCAyNDAsIAorICAgIDEzMywgNTksIDYwLCAyMzksIDIzMCwgNTksIDYwLCAyNDAsIDEwMSwgNTksIDYwLCAyNDAsIDM3LCA1OSwgNjAsIDI0MCwgCisgICAgMTY0LCA1OSwgNjAsIDIzOSwgMTkxLCA1OSwgNjAsIDI0MCwgNjIsIDU5LCA2MCwgMjM5LCAyNTQsIDU5LCA2MCwgMjQwLCAKKyAgICAxMjUsIDU5LCA2MCwgMjM5LCAyMjIsIDU5LCA2MCwgMjQwLCA5MywgNTksIDYwLCAyNDAsIDI5LCA1OSwgNjAsIDI0MCwgCisgICAgMTU2LCA1OSwgNjAsIDIzOSwgMjA2LCA1OSwgNjAsIDI0MCwgNzcsIDU5LCA2MCwgMjQwLCAxMywgNTksIDYwLCAyNDAsIAorICAgIDE0MCwgNTksIDYwLCAyMzksIDIzNywgNTksIDYwLCAyNDAsIDEwOCwgNTksIDYwLCAyNDAsIDQ0LCA1OSwgNjAsIDI0MCwgCisgICAgMTcxLCA1OSwgNjAsIDIzOSwgMTgyLCA1OSwgNjAsIDI0MCwgNTMsIDU5LCA2MCwgMjM5LCAyNDUsIDU5LCA2MCwgMjQwLCAKKyAgICAxMTYsIDU5LCA2MCwgMjM5LCAyMTMsIDU5LCA2MCwgMjQwLCA4NCwgNTksIDYwLCAyNDAsIDIwLCA1OSwgNjAsIDI0MCwgCisgICAgMTQ3LCA1OSwgNjAsIDIzOSwgMTk3LCA1OSwgNjAsIDI0MCwgNjgsIDU5LCA2MCwgMjQwLCA0LCA1OSwgNjAsIDI0MCwgMTMxLCAKKyAgICA1OSwgNjAsIDIzOSwgMjI4LCA1OSwgNjAsIDI0MCwgOTksIDU5LCA2MCwgMjQwLCAzNSwgNTksIDYwLCAyNDAsIDE2MiwgNTksIAorICAgIDYwLCAyMzksIDE4OSwgNTksIDYwLCAyNDAsIDYwLCA1OSwgNjAsIDIzOSwgMjUyLCA1OSwgNjAsIDI0MCwgMTIzLCA1OSwgCisgICAgNjAsIDIzOSwgMjIwLCA1OSwgNjAsIDI0MCwgOTEsIDU5LCA2MCwgMjQwLCAyNywgNTksIDYwLCAyNDAsIDE1NCwgNTksIDYwLCAKKyAgICAyMzksIDIwNCwgNTksIDYwLCAyNDAsIDc1LCA1OSwgNjAsIDI0MCwgMTEsIDU5LCA2MCwgMjQwLCAxMzgsIDU5LCA2MCwgCisgICAgMjM5LCAyMzUsIDU5LCA2MCwgMjQwLCAxMDYsIDU5LCA2MCwgMjQwLCA0MiwgNTksIDYwLCAyNDAsIDE2OSwgNTksIDYwLCAKKyAgICAyMzksIDE4NSwgNTksIDYwLCAyNDAsIDU2LCA1OSwgNjAsIDIzOSwgMjQ4LCA1OSwgNjAsIDI0MCwgMTE5LCA1OSwgNjAsIAorICAgIDIzOSwgMjE2LCA1OSwgNjAsIDI0MCwgODcsIDU5LCA2MCwgMjQwLCAyMywgNTksIDYwLCAyNDAsIDE1MCwgNTksIDYwLCAKKyAgICAyMzksIDIwMCwgNTksIDYwLCAyNDAsIDcxLCA1OSwgNjAsIDI0MCwgNywgNTksIDYwLCAyNDAsIDEzNCwgNTksIDYwLCAyMzksIAorICAgIDIzMSwgNTksIDYwLCAyNDAsIDEwMiwgNTksIDYwLCAyNDAsIDM4LCA1OSwgNjAsIDI0MCwgMTY1LCA1OSwgNjAsIDIzOSwgCisgICAgMTkyLCA1OSwgNjAsIDI0MCwgNjMsIDU5LCA2MCwgMjM5LCAyNTUsIDU5LCA2MCwgMjQwLCAxMjYsIDU5LCA2MCwgMjM5LCAKKyAgICAyMjMsIDU5LCA2MCwgMjQwLCA5NCwgNTksIDYwLCAyNDAsIDMwLCA1OSwgNjAsIDI0MCwgMTU3LCA1OSwgNjAsIDIzOSwgCisgICAgMjA3LCA1OSwgNjAsIDI0MCwgNzgsIDU5LCA2MCwgMjQwLCAxNCwgNTksIDYwLCAyNDAsIDE0MSwgNTksIDYwLCAyMzksIAorICAgIDIzOCwgNTksIDYwLCAyNDAsIDEwOSwgNTksIDYwLCAyNDAsIDQ1LCA1OSwgNjAsIDI0MCwgMTcyLCA4NywgMjA0LCAxNDEsIAorICAgIDU1LCAzLCA4MywgOTcsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCA1MywgNTUsIDMsIDgzLCA5NywgCisgICAgODcsIDUzLCA1NSwgMywgODMsIDk3LCA0OSwgNTEsIDUzLCA1NSwgMywgODMsIDk3LCA4NywgMjA0LCAxNDEsIDU1LCAyMzYsIAorICAgIDIwMSwgMTQ4LCA5OCwgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCA4NywgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDU1LCAKKyAgICAzLCAyMzMsIDE3NywgOTcsIDE4MiwgNTUsIDMsIDIzMywgMTc3LCA5NywgMTgyLCAyMDUsIDgzLCA0OCwgMTkxLCAyMDUsIAorICAgIDgzLCA0OCwgOTgsIDUzLCAyNDEsIDI0NSwgNDgsIDg3LCA1MywgMjQxLCAyNDUsIDQ4LCA5OCwgMjA1LCA4MywgMjQxLCAKKyAgICAyNDUsIDQ4LCA4NywgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCA4NywgMjA0LCAxNDEsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgCisgICAgODcsIDU1LCAzLCAyMzksIDE4MCwgMjA4LCA5MiwgMTgyLCA1NSwgMjA1LCAxODYsIDE0OCwgMTkxLCA1NSwgMjA1LCAxODYsIAorICAgIDE0OCwgODcsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgODcsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDg3LCAKKyAgICAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNiwgODcsIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDg3LCAyMDQsIAorICAgIDE0MSwgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDI1MCwgMjA0LCA4NywgMjUwLCAyMDQsIDk4LCA1MywgCisgICAgMjUwLCAyMDQsIDg3LCA1MywgMjUwLCAyMDQsIDk4LCA1NSwgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCA4NywgNTUsIDIwNSwgCisgICAgMTg2LCA2MywgMjQxLCA2NCwgOTgsIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCA4NywgCisgICAgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDE1NywgMjAxLCA0OCwgMjYsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCA0OCwgMTU3LCAyMzksIDE0LCAyNiwgMjA4LCAyNTQsIDIwMSwgNDgsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAKKyAgICAzLCAxMTcsIDE1NywgMjM5LCAxNCwgNTUsIDMsIDExNywgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAzLCAxMTcsIDIwOCwgCisgICAgMjU0LCAyMDEsIDQ4LCA1NSwgMywgMTE3LCAxNTcsIDIwMSwgNDgsIDU1LCAyNiwgMTU3LCAyMzksIDE0LCA0OCwgMTU3LCAKKyAgICAyMzksIDE0LCA1NSwgMjYsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyNiwgMjA4LCAKKyAgICAyNTQsIDIwMSwgNDgsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNTUsIDI2LCAxNTcsIDIwMSwgNDgsIDQ4LCAyMTMsIDE5LCAKKyAgICAyNDEsIDcxLCAyNDIsIDIyOCwgMjM3LCAxNzEsIDI0MSwgNzAsIDIzNywgMTcxLCAyNDEsIDcxLCAyNDIsIDIyOCwgMjEzLCAKKyAgICAxOSwgMjQxLCA3MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyNDIsIDIyOCwgMTU3LCAyMzksIDE0LCA0OCwgMTU3LCAyMzksIAorICAgIDE0LCA1NSwgMjQyLCAyMjgsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjM3LCAxNzEsIDI0MSwgNzEsIDI0MiwgMjI4LCAKKyAgICAxNTcsIDIzOSwgMTQsIDQ4LCAyMTMsIDE5LCAyNDEsIDcxLCAyNDIsIDIyOCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAxNTcsIAorICAgIDIzOSwgMTQsIDU1LCAyNDIsIDIyOCwgMTU3LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgMjQyLCAyMjgsIDE1NywgCisgICAgMjM5LCAxNCwgNDgsIDIwMSwgNzgsIDU1LCAyMTUsIDk2LCAyNDEsIDcsIDIxMywgNDYsIDU1LCAyMTUsIDk2LCA4NywgMjA2LCAKKyAgICA5OCwgMjQyLCAxODYsIDIwMywgMjE2LCA1NSwgMjE1LCA5NiwgODcsIDIwNiwgOTgsIDI0MiwgMTg2LCAyMzksIDE2NSwgNTUsIAorICAgIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMjQyLCAxODYsIDIyNSwgMTgsIDU1LCAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDI0MiwgCisgICAgMTg2LCAyMTMsIDM1LCAyMTMsIDM4LCAyNTAsIDIzNywgMjQ2LCAxMTIsIDQ4LCAyMjUsIDIxLCAyNTAsIDIzNywgMjUxLCAKKyAgICA0NywgNDgsIDIwNSwgMTU4LCAyNTAsIDIzNywgMjUxLCA0NywgNDgsIDI0OCwgOTMsIDI1MCwgMjM3LCAyNTEsIDQ3LCA0OCwgCisgICAgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNDYsIDExMiwgNTUsIDMsIDIyMSwgMTU2LCAyMDUsIDE1OCwgMjUwLCAyMzcsIDI1MSwgCisgICAgNDcsIDU1LCAzLCAyMTUsIDExMywgMjI0LCA1NCwgNTEsIDIxMCwgMTY5LCAyNDYsIDExMiwgNDgsIDIyNCwgNTQsIDQ5LCAKKyAgICAyMTAsIDE2OSwgMjUxLCA0NywgNDgsIDI1MSwgNDcsIDI0NiwgMTEwLCAyNDYsIDE1NiwgNDgsIDI0NiwgMTEyLCAyNDYsIAorICAgIDExMCwgMjQ2LCAxNTYsIDQ4LCA4NywgNTUsIDg4LCAyMDksIDI1MCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyMDksIDI1MCwgCisgICAgODcsIDQ4LCAyMDksIDI1MCwgODcsIDU1LCA4OCwgOTgsIDQ4LCA4NywgNTUsIDMsIDkzLCA1NywgOTgsIDU1LCAzLCA5MywgCisgICAgNTcsIDg3LCA1NSwgMjA2LCAzOCwgMjAwLCAxOTUsIDQ5LCA1MSwgNTUsIDIwNiwgMzgsIDQsIDI0NiwgMTU1LCAxODIsIAorICAgIDIwNCwgMTQxLCA1NSwgMjM2LCAyMDEsIDQsIDI0NiwgMTU1LCA0OSwgMTU0LCAxMTUsIDUxLCAxNTQsIDEyNywgMjM0LCAKKyAgICAxNjAsIDQ5LCAxNTQsIDEyNywgNTEsIDE1NCwgMTE1LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDUxLCAxMjcsIDE1NCwgNDksIAorICAgIDIzNCwgMTYwLCAxMTUsIDE1NCwgNDksIDEyNywgMTU0LCA1MSwgMjM0LCAxNjAsIDQ5LCAxNTQsIDExNSwgNTEsIDE1NCwgCisgICAgMTE1LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDUxLCAxMjcsIDE1NCwgNTEsIDIzNCwgMTYwLCA0OSwgMTU0LCAxMjcsIDUxLCAKKyAgICAxNTQsIDEyNywgMjM0LCAxNjAsIDExNSwgMTU0LCA0OSwgMTI3LCAxNTQsIDQ5LCAyMzQsIDE2MCwgOTgsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDExNSwgMjA1LCAxODYsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjA1LCAxODYsIDE0OCwgCisgICAgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjA1LCAKKyAgICAxODYsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjA1LCAxODYsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDEyNywgMjA1LCAxODYsIDE0OCwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA0OSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjA1LCAxODYsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjM2LCAyMDEsIDE0OCwgCisgICAgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjM2LCAyMDEsIDE0OCwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjM2LCAyMDEsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDEyNywgMjM2LCAyMDEsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjM2LCAyMDEsIDE0OCwgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjM2LCAyMDEsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA0OSwgMjM2LCAyMDEsIDE0OCwgCisgICAgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgODcsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDExNSwgODgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICA0OSwgMjQ4LCAyMTIsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgCisgICAgODgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIyOCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgODgsIDg3LCAKKyAgICAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDk4LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAyMDMsIDIyOCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgODgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAyMzksIDE2NywgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDE2OCwgMjQxLCAyNDQsIDk4LCAyMzQsIDE2MSwgMywgCisgICAgMTU0LCAxMjcsIDI0OCwgMjI4LCAxNjgsIDI0MSwgMjQ0LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgMTY4LCAKKyAgICAyNDEsIDI0NCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjQ4LCAyMjgsIDE2OCwgMjQxLCAyNDQsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDE5MSwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDUxLCA1MywgNTUsIDMsIDIxMiwgCisgICAgMjE5LCAyMzQsIDEzNiwgMjM4LCAxMjIsIDIsIDg4LCA4NywgNDgsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgODcsIDQ4LCAKKyAgICA5OCwgNTUsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIAorICAgIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDg4LCA5OCwgNDgsIDk4LCA1NSwgMjA2LCAzOCwgMjI0LCAyNDAsIDIzNSwgCisgICAgNjcsIDg4LCA4NywgNDgsIDIwOCwgMywgODgsIDg3LCA0OCwgOTgsIDU1LCAyMDYsIDM4LCAyMDgsIDIsIDIwNywgMjEyLCAKKyAgICA4OCwgOTgsIDQ4LCA0OSwgMjM3LCA3MiwgMjA3LCA2LCA1MSwgMjM3LCA3MiwgMjA3LCA2LCAxMTUsIDIzNywgNzIsIDIwNywgCisgICAgNiwgMTI3LCAyMzcsIDcyLCAyMDcsIDYsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyNDEsIDE0MiwgMTk5LCAxNTgsIDIxOCwgCisgICAgMjEzLCAyMDgsIDIwNCwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMDQsIDEyOCwgMjQ2LCA3OSwgNDksIDY0LCAyNDIsIDE5NiwgCisgICAgMTU5LCA1MSwgNjQsIDI0MiwgMTk2LCAxNTksIDQ5LCA2NCwgMjE2LCAxMTUsIDUxLCA2NCwgMjE2LCAxMTUsIDE5OSwgMTU4LCAKKyAgICAyMTgsIDIxMywgNDksIDIyOCwgMTMzLCAxNTksIDE5OSwgMTU4LCAyMTgsIDIxMywgNTEsIDIyOCwgMTMzLCAxNTksIDE5OSwgCisgICAgMTU4LCAyMTgsIDIxMywgNDksIDI0OCwgMTY3LCAxNTksIDE5OSwgMTU4LCAyMTgsIDIxMywgNTEsIDI0OCwgMTY3LCAxNTksIAorICAgIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjAzLCAyNTEsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjAzLCAyNTEsIDQ5LCA1MiwgMjQ4LCAKKyAgICA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDIwNSwgMTU4LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIAorICAgIDIyOCwgMTE4LCAyNDgsIDkzLCAyNDMsIDE1LCA0OSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyNDgsIAorICAgIDkzLCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyMDUsIDE1OCwgMjQzLCAxNSwgCisgICAgNDksIDI1MSwgNzEsIDI0OCwgNzAsIDMsIDI0MCwgMTgyLCA1MSwgMjUxLCA3MSwgMjQ4LCA3MCwgMywgMjQwLCAxODIsIDQ5LCAKKyAgICAyNTAsIDIzNywgMjI0LCAyNDEsIDE1OSwgNTEsIDI1MCwgMjM3LCAyMzUsIDY3LCAxNTksIDUzLCA0OSwgMjUwLCAyMzcsIAorICAgIDIzNSwgNjcsIDE1OSwgNTMsIDUxLCAyNTAsIDIzNywgMjI0LCAyNDEsIDE1OSwgNDksIDYzLCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMTU5LCA1MSwgNjMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDIzOSwgMTgwLCAyMzcsIDEyNywgODMsIDE5OSwgMjcsIAorICAgIDIyNCwgMTc2LCAyMjIsIDczLCAyNTEsIDcxLCAyMTcsIDQ2LCAyMjUsIDI4LCA1MSwgMjUxLCA3MSwgMjAzLCA3MywgMywgCisgICAgMjA4LCAxOTMsIDIyMiwgNzMsIDUxLCAyNTEsIDcxLCAzLCAyNDAsIDE4MiwgMjUxLCA3MSwgMywgMjEyLCAxMjMsIDIyOCwgCisgICAgNzMsIDI1MSwgMjM5LCAyNTEsIDcwLCAyMDgsIDIyNCwgMjUxLCA3MSwgMjE3LCA0NiwgMjI1LCAyOCwgMjA4LCAyMjQsIAorICAgIDI1MSwgNzEsIDIxNywgNDYsIDIwMywgMjI4LCAyMDQsIDE4NSwgMjUxLCA3MCwgMjEzLCAxMDUsIDI1MSwgNzAsIDI1MSwgCisgICAgNzEsIDMsIDIwMywgMjUxLCAyMTMsIDEwNSwgMjUxLCA3MSwgMywgMjAzLCAyNTEsIDIxNywgMTM4LCAyNTEsIDcxLCAyMTcsIAorICAgIDQ2LCAyMDMsIDIyOCwgMjE3LCAxMzgsIDI1MSwgNzEsIDIxNywgNDYsIDIzOSwgMTY3LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAKKyAgICAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCAxMTUsIDI2LCAyMTMsIDQ2LCAyMjIsIAorICAgIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCAxMTUsIDI2LCAKKyAgICAyMjUsIDI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIAorICAgIDk2LCAxMjcsIDI2LCAyMTMsIDQ2LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAKKyAgICAxMTgsIDU1LCAyMTUsIDk2LCAxMjcsIDI2LCAyMjUsIDI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAKKyAgICAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA1MSwgMjYsIDIwMywgMjI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAKKyAgICAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA0OSwgMjYsIDIwMywgMjI4LCAyMjIsIAorICAgIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA1MSwgMjYsIAorICAgIDIzOSwgMTY3LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAKKyAgICAyMTUsIDk2LCA0OSwgMjYsIDIzOSwgMTY3LCAyMTMsIDEwNSwgMjM4LCAxODEsIDIxMCwgMTQxLCAyMzgsIDE4MSwgMjEwLCAKKyAgICAxNDIsIDMsIDIxNiwgMjQ2LCAyMzgsIDE4MSwgMjEwLCAxNDIsIDMsIDQsIDI0NiwgMTU2LCA1NiwgMjM4LCAxODEsIDIxMCwgCisgICAgMTQyLCAzLCA1MSwgNTUsIDU2LCAyMzgsIDE4MSwgMjEwLCAxNDIsIDMsIDQ5LCA1NSwgNTYsIDI0NiwgMTU2LCAzLCAyMzMsIAorICAgIDE3NywgMTQ4LCA0NCwgODMsIDE0OCwgNDQsIDIxNiwgMTIwLCA0NCwgMjEzLCAxMDYsIDIwOSwgMTYsIDQ0LCAyMTYsIDE0LCAKKyAgICAyNDYsIDE1NiwgMjQwLCAyNDAsIDI0NywgMjM1LCAyMzMsIDE3NywgMjQ5LCA3NywgMjYsIDIwNSwgMTU4LCAxNjcsIDI0MCwgCisgICAgMjQwLCAyNDcsIDIzNSwgODMsIDE0OCwgMjQ2LCAxNTYsIDMsIDIwNywgMjE0LCAyMDAsIDE5NSwgNDQsIDI1MSwgNDUsIAorICAgIDI0MCwgMjM1LCA1NCwgMTE1LCA1NSwgMjA2LCAzOCwgMjQ2LCAxNTUsIDQ0LCA2NCwgMjQ4LCAyMCwgNDQsIDI0OCwgMjAsIAorICAgIDQ0LCAyMjQsIDI0MCwgNDQsIDIzNSwgNjYsIDI0NiwgMTU2LCAzLCA0LCAyNDYsIDE1NiwgMjA1LCAxODYsIDIwNiwgMTA3LCAKKyAgICAyMTMsIDQ2LCAyNDYsIDE1NiwgMywgMTIwLCAyMzMsIDE3NywgMjA4LCAzNSwgMjA1LCAxODYsIDIwNiwgMTA3LCAyMTMsIAorICAgIDQ2LCA5NSwgMjEzLCAxOSwgMjQxLCA3MSwgMjA5LCA3NSwgOTUsIDIzNywgMTcxLCAyNDEsIDcxLCAyMDksIDc1LCA5NSwgCisgICAgMjUwLCAxNjUsIDk1LCA0LCAyNDYsIDE1NSwgOTUsIDIwOCwgMTkzLCAxMjAsIDIyNywgMTYzLCAyMDgsIDE5MSwgMjA1LCAKKyAgICA5OSwgMywgNzMsIDU2LCAyMDUsIDk5LCAzLCAyMDMsIDI1MSwgMjEyLCAxMjMsIDIyOCwgMTE4LCAyMDUsIDk4LCAyMDUsIAorICAgIDk5LCAzLCAyMTAsIDE0OCwgMjUwLCAxNTYsIDI0OCwgOTIsIDUxLCAyMDUsIDk5LCA4OCwgNDksIDIwNSwgOTgsIDQ5LCAKKyAgICAyMDUsIDk5LCAyNDgsIDIxMiwgODMsIDE0OCwgODMsIDI0OSwgNzcsIDI0OCwgMjEyLCA1MSwgMjA1LCA5OCwgMjQ4LCA4MCwgCisgICAgMywgNDksIDE2NywgMjQ4LCAxNDQsIDI0OCwgODAsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2MywgMjQ4LCA3OSwgMjQsIDMsIAorICAgIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNCwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDY0LCAyMzMsIDExMSwgNjMsIDIzMywgMTExLCAKKyAgICA0OSwgMjAxLCAyMiwgMjM3LCAxMjcsIDUxLCAyMDEsIDIyLCAyMzcsIDEyNywgNDksIDUzLCAyMDEsIDIyLCAyMzcsIDEyNywgCisgICAgNTEsIDUzLCAyMDEsIDIyLCAyMzcsIDEyNywgMjI4LCAxMTAsIDIyOCwgOTQsIDIwNiwgOCwgMTE5LCAyMjgsIDk0LCAyMjgsIAorICAgIDk1LCAyMjAsIDI4LCAzLCA4MywgMTQ4LCAyMzksIDE3NCwgMjIxLCAyMywgNTIsIDMsIDI0MywgMzcsIDIxNiwgMjUxLCAKKyAgICAyMjgsIDEwNywgMjUwLCAxODgsIDIwOSwgMjE0LCAyMTUsIDEsIDIzOCwgMTIyLCAyLCAyNiwgMjA5LCA3NywgMjE2LCAxMjAsIAorICAgIDIzOCwgMTIyLCAyLCAyNiwgMjA5LCA3NywgMjE2LCAxMjEsIDMsIDIwNSwgMjQxLCA1NiwgMjMyLCAyMjMsIDIwNSwgMTg2LCAKKyAgICAyNiwgMjA5LCA3NywgMjE2LCAxMjAsIDIzNSwgMTI2LCAyMDgsIDEwOCwgMjA2LCA5NSwgMjM5LCAxNjYsIDIwNSwgOTksIDMsIAorICAgIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyMzksIDE2NiwgMjA1LCA5OSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDYzLCAyNDEsIDY1LCAKKyAgICAzLCAxMjcsIDQ4LCA2MywgMjI0LCA0OSwgNjQsIDI0NiwgMTU2LCAzLCAxMjcsIDQ4LCA2MywgMjQ2LCAxNTYsIDMsIDEyNywgCisgICAgNDgsIDIzOCwgMTA3LCA2NCwgMjA4LCAxOTMsIDIzOCwgMTA3LCA2MywgMjA4LCAxOTMsIDIzOCwgMTA3LCA2NCwgMjQxLCAKKyAgICA2NCwgMjM4LCAxMDcsIDYzLCAyNDEsIDY0LCAyMzgsIDEwNywgNjQsIDI0NiwgMTU1LCAyMzgsIDEwNywgNjMsIDI0NiwgCisgICAgMTU1LCAyMTIsIDE2NCwgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNywgNDMsIDIwOSwgMTcsIDMsIDIxNiwgMjQ2LCAyMTMsIAorICAgIDEwNiwgMjA5LCAxNywgMywgMjMzLCAxNzcsIDk3LCAyNDgsIDE3NSwgMjA5LCAxNiwgMjQ4LCAxNzUsIDIxMywgMTA2LCAKKyAgICAyMDksIDE2LCA1MywgMjE1LCAxMTMsIDIwNSwgODMsIDIxNSwgMTEzLCAyMjUsIDIzLCAyNDIsIDE4OCwgMjUxLCA3MSwgCisgICAgMTU5LCAyMTMsIDQxLCAyNDIsIDE4OCwgMjUxLCA3MSwgMTU5LCAyMDUsIDIyNSwgMjIxLCAxNTQsIDIyMCwgMjEzLCA0NCwgCisgICAgNzMsIDIxNywgNDMsIDIyMCwgMjEzLCA0NCwgOTMsIDIxNywgNDMsIDIyMCwgMjEzLCA0NCwgMjQsIDIxNywgNDMsIDIyMCwgCisgICAgMjEzLCAyMDMsIDI0MiwgMjE3LCA0NCwgMywgMjQwLCAxODIsIDIyMCwgMjEzLCAyMDMsIDI0MiwgMjE3LCA0NCwgMywgMjE1LCAKKyAgICAxMTMsIDIyMCwgMjEzLCA1MiwgMjI4LCA1NiwgMjE3LCA0MywgMjIwLCAyMTMsIDUyLCAyMDMsIDI0MiwgMjE3LCA0MywgCisgICAgMTIwLCAyMjQsIDk4LCAyNiwgMjE3LCA0MywgMTIwLCAyMjQsIDk4LCAyMTcsIDM0LCAyMTcsIDQzLCAyMjAsIDIxMywgMjQsIAorICAgIDIxNywgNDMsIDIyMSwgMTEwLCAxMjAsIDIwNywgMjM0LCAyMDcsIDIzMiwgMywgMjI4LCA2OSwgMjE0LCA5MCwgMjI4LCA3MCwgCisgICAgMjE3LCA0MywgMjM3LCA4MCwgMjE2LCAxMTAsIDIyOCwgNjksIDIyOCwgNzAsIDMsIDUzLCA5NywgMjI4LCA3MCwgMjUwLCAKKyAgICAxMjAsIDMsIDIwOSwgNzUsIDI0NiwgMTQ4LCAyMzYsIDE4MCwgMjUxLCA0NywgMjI4LCA2NywgMjI0LCAxNzcsIDIyOCwgNjgsIAorICAgIDMsIDIxMywgMTc0LCAyMTYsIDkxLCAyNTAsIDIxMiwgMjE1LCA5MCwgMjI0LCAxNzcsIDIyOCwgNjgsIDMsIDIxMCwgMTY5LCAKKyAgICAyMTYsIDkxLCAyNTAsIDIxMiwgMjE1LCA5MCwgMjI0LCAxNzcsIDIyOCwgNjgsIDIxOCwgMjE1LCAyMjgsIDExMiwgMjA2LCAKKyAgICAxMDcsIDIxNSwgOTAsIDIyOCwgNzAsIDI1MCwgMjEyLCAzNSwgMjE1LCAxMDAsIDIxNywgNDMsIDIxNCwgODQsIDIyOCwgNzAsIAorICAgIDIxNywgNDMsIDIyOCwgNzAsIDMsIDk4LCA1NSwgMywgMTE3LCAyMjgsIDcwLCAzLCAyNCwgNTQsIDIyOCwgNzAsIDMsIDIyOCwgCisgICAgNTUsIDIyOCwgNzAsIDMsIDIwMywgMjQxLCAyMjgsIDcwLCAzLCAyMTYsIDI0NiwgMjI4LCA3MCwgMywgMjAzLCAyNTEsIAorICAgIDIyNywgMTY0LCAyMjUsIDcxLCA0OSwgMjA1LCA5OSwgMjE3LCA0MywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIDIyNCwgCisgICAgMjQzLCA3MywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIDIyNCwgMjE1LCAxNTEsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAKKyAgICAyMjQsIDIxNCwgMjUyLCA5MywgMiwgMywgNCwgMjQ2LCAxNTYsIDU2LCA5MywgMiwgMywgMjQ2LCAxNDcsIDI1MSwgMjUyLCAKKyAgICA1NiwgOTMsIDIsIDMsIDIwNSwgMjQxLCA1NiwgOTMsIDIsIDMsIDczLCA1NywgOTMsIDIsIDMsIDIwNSwgMjQxLCA1NywgOTMsIAorICAgIDIsIDMsIDIwOCwgNCwgMTA1LCA5MywgMiwgMywgNjMsIDIwNSwgOTgsIDIyMSwgMTU3LCAyLCAzLCAyNDYsIDcxLCA1NiwgCisgICAgMjIxLCAxNTcsIDIsIDMsIDczLCA1NywgMjIxLCAxNTcsIDIsIDMsIDIzNywgMTcxLCAyNDAsIDE4MCwgMjIxLCAxNTcsIDIsIAorICAgIDMsIDIxMywgMTksIDI0MCwgMTgwLCA5MywgMiwgMjI4LCAxMTgsIDQ5LCAxNjcsIDI0NiwgMTU1LCA5MywgMiwgMjI4LCAKKyAgICAxMTgsIDUxLCAxNjcsIDI0NiwgMTU1LCAyMDMsIDU4LCAyMTcsIDM0LCAyNDIsIDIzNSwgMjE1LCAxLCAyMjEsIDE5LCAyLCAKKyAgICAzLCA3MywgNTYsIDIyMSwgMTksIDIsIDMsIDIwMywgMjUxLCAyMTAsIDE2NiwgMjE1LCAyLCAzLCAyNDgsIDkzLCAyNDYsIAorICAgIDEwOSwgMjA5LCA1MSwgMjE1LCAxLCAyMjEsIDE5LCAyLCAyMjgsIDExOCwgNDksIDE2NywgMjQ2LCAxNTUsIDIyMSwgMTksIAorICAgIDIsIDIyOCwgMTE4LCA1MSwgMTY3LCAyNDYsIDE1NSwgNDQsIDIyMSwgMTksIDIsIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgCisgICAgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDUzLCAyNDYsIDE1NSwgNDQsIDI0MCwgMjM1LCA1NCwgOTMsIDIsIDIyOCwgMTE4LCAKKyAgICAyMDUsIDk4LCAyMjEsIDE1NywgMiwgMjI4LCAxMTgsIDIwNSwgOTgsIDIyMSwgMTksIDIsIDIyOCwgMTE4LCAyMDUsIDk4LCAKKyAgICAyMjgsIDY0LCAyMTUsIDEsIDIxMywgMzYsIDIyOCwgNjQsIDIxNSwgMSwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTMsIDE0OCwgCisgICAgMjQzLCA3MywgMjUxLCA5OSwgMjE3LCAzNCwgMjQzLCAyMSwgMjI4LCA1NiwgMywgMjQwLCAxODIsIDIwMywgMjQyLCAzLCAKKyAgICAyMjEsIDE1NywgNTQsIDIwMywgMjQyLCAzLCAyMTYsIDI0NiwgMjI4LCA1NiwgMywgMjE2LCAyNDYsIDIyOCwgNTYsIDMsIAorICAgIDIyNCwgOTgsIDI1MSwgNzksIDIwMywgMjQyLCAzLCAyMjQsIDk4LCAyMTcsIDMzLCAyMDMsIDI0MiwgODgsIDIyOCwgNTUsIAorICAgIDIyOCwgNTYsIDg4LCAyMDMsIDI0MSwgMjAzLCAyNDIsIDg4LCAyNDksIDc3LCA4OCwgMjI4LCA1NSwgMjI4LCA1NiwgODgsIAorICAgIDI0OSwgNzcsIDg4LCAyMDMsIDI0MSwgMjAzLCAyNDIsIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDMsIDIwMywgMjQxLCAKKyAgICAyMjgsIDU2LCAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAzLCAyMjgsIDU1LCAyNDYsIDExMCwgMjAzLCAyNDIsIDMsIDIxMCwgCisgICAgMTQ3LCAyNDYsIDExMCwgMjI4LCA1NiwgMywgMjEwLCAxNDcsIDUzLCA1MiwgMjI4LCA1NSwgNTMsIDUyLCAyMDMsIDI0MSwgCisgICAgMjQ2LCAxMTAsIDIwMywgMjQyLCAzLCAyMTAsIDE0OCwgMjYsIDIwOSwgNTEsIDIxNSwgMSwgMjI0LCA5OCwgMjYsIDMsIDczLCAKKyAgICA1NiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgNzMsIDU2LCA1MywgMjI0LCA5OCwgMjUxLCA3OSwgNTMsIDIyNCwgOTgsIDIxNywgCisgICAgMzMsIDEyMCwgMjI4LCA1NywgMjI0LCA5OCwgMjUxLCA3OSwgMTIwLCAyMjgsIDU3LCAyMjQsIDk4LCAyMTcsIDMzLCAyMDksIAorICAgIDYwLCAyMjUsIDcxLCAyMTcsIDMzLCAyMDksIDYwLCAyMjUsIDcxLCAyNTEsIDc5LCAyMjQsIDk4LCAyMTcsIDM0LCAyMTYsIAorICAgIDI0MywgMjI0LCA5OCwgMjUxLCA3OSwgMjI0LCA5OCwgMjYsIDMsIDEwMSwgMjA4LCA5MiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgCisgICAgMTAxLCAyMDgsIDkyLCAyMjQsIDk4LCAyNiwgMywgMjMzLCAxNzcsIDI0MSwgMjQ0LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCAKKyAgICAyMzMsIDE3NywgMjQxLCAyNDQsIDIyNCwgOTgsIDI2LCAzLCA1MywgMjE2LCAyNDYsIDIyNCwgOTgsIDI2LCAzLCAyMDMsIAorICAgIDI1MSwgMjI0LCA5OCwgMjYsIDMsIDUzLCAyMDMsIDI1MSwgNCwgMjAzLCA1NSwgMywgMjAzLCAyNTEsIDIyNCwgOTgsIDIxNywgCisgICAgMzQsIDMsIDUzLCAyMTYsIDI0NiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgNTMsIDIwMywgMjUxLCAxOTksIDE1OCwgMjE4LCAKKyAgICAyMTMsIDI0MCwgMTkxLCAyNTEsIDM3LCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMywgMjExLCAyNTEsIDM3LCAyMzgsIDEyMiwgCisgICAgMiwgMywgNzMsIDU3LCAyMzIsIDIyMywgMywgNzMsIDU2LCAyMDUsIDgzLCAyMzMsIDE3NywgMjQ5LCA3NywgMywgNTMsIDgzLCAKKyAgICA5NywgMjA1LCA4MywgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIDIwNSwgODMsIDgzLCA5NywgMjA1LCAyNDEsIDIxNywgNDQsIDMsIAorICAgIDczLCA1NiwgMjA1LCAyNDEsIDIxNywgNDQsIDMsIDIxMywgMTksIDI0MCwgMTgwLCAyMDksIDE0OCwgMjIxLCAxNTcsIDIwOSwgCisgICAgMTQ3LCAyNDMsIDYwLCAzLCA3MywgNTYsIDIzOCwgMTIyLCAzLCAyNTAsIDE2NSwgMjUxLCAxMTcsIDE2MCwgMjA1LCAxODYsIAorICAgIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMjUxLCA0LCAxNjAsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzgsIDEyMiwgMiwgODgsIAorICAgIDkzLCA1NCwgOTMsIDIsIDg4LCAyMzgsIDEyMiwgNTQsIDIzOCwgMTIyLCAyLCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDUzLCAKKyAgICAyNDYsIDgwLCAyMzgsIDEyMywgMTIwLCAyNDMsIDUzLCAyMzgsIDEyMiwgMjA5LCAxNjIsIDEyNiwgMjQzLCA1MywgMjM4LCAKKyAgICAxMjIsIDIwOSwgMTYyLCAyMzgsIDEyMiwgMiwgMywgMTIwLCAxOTAsIDg4LCAyNiwgMTIwLCAxOTAsIDU3LCAyMzgsIDExNywgCisgICAgMywgMjM2LCAyMjksIDE5MCwgNTYsIDIyNCwgMjQxLCAzLCAyNDYsIDE1NiwgMjI4LCA3MywgMjM1LCA2NywgMywgMjQ2LCAKKyAgICAxNTYsIDIyOCwgNzMsIDIyNCwgMjQxLCAzLCAyMTQsIDc5LCAxMzQsIDU2LCAyMzUsIDY3LCAzLCAyMTQsIDc5LCAxMzQsIAorICAgIDU2LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgCisgICAgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDIyOCwgNzMsIDIzNSwgNjcsIAorICAgIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCAyMjgsIDczLCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCAKKyAgICA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDU2LCAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAzLCA3MywgNTYsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgODgsIDIxMywgNDYsIAorICAgIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA4OCwgMjI1LCAyOCwgMjI0LCAyNDEsIAorICAgIDIxNywgMzQsIDI1MSwgNSwgMjM1LCA2NywgMjE3LCAzNCwgMjUxLCA1LCAyMjQsIDI0MSwgMjYsIDIwOSwgMTM3LCAyMTgsIAorICAgIDIxNSwgMTYwLCAxMzgsIDIzNSwgNjcsIDI2LCAyMDksIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjYsIAorICAgIDIxOCwgMjE1LCAyNTEsIDUsIDIzNSwgNjcsIDI2LCAyMTgsIDIxNSwgMjUxLCA1LCAyMjQsIDI0MSwgODgsIDIzOSwgMTczLCAKKyAgICAxNjAsIDg4LCAyMzUsIDY2LCAyMzUsIDY3LCA4OCwgMjM5LCAxNzMsIDE2MCwgODgsIDIyNCwgMjQwLCAyMjQsIDI0MSwgODgsIAorICAgIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMzgsIDEyMywgCisgICAgMjI0LCAyNDEsIDg4LCAyMDksIDE0OCwgODgsIDIzNSwgNjYsIDIzNSwgNjcsIDg4LCAyMDksIDE0OCwgODgsIDIyNCwgMjQwLCAKKyAgICAyMjQsIDI0MSwgODgsIDIzNSwgNjcsIDg4LCAyMzksIDE3MywgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMjQsIDI0MSwgODgsIAorICAgIDIzOSwgMTczLCAyMzgsIDEyMywgMjI0LCAyNDEsIDg4LCAyMDksIDc3LCAxNjAsIDg4LCAyMzUsIDY3LCA4OCwgMjA5LCA3NywgCisgICAgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMDksIDc3LCAxNjAsIDg4LCAyMjQsIDI0MSwgODgsIDIwOSwgNzcsIDIzOCwgMTIzLCAKKyAgICAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAKKyAgICAzNCwgMjM1LCA2NiwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDEsIDMsIDczLCAyMjgsIDczLCAKKyAgICAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY3LCAzLCA3MywgMjI4LCA3MywgMjM5LCAxNzMsIDE2MCwgCisgICAgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMzksIDE3MywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgCisgICAgMjM5LCAxNzMsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMzksIDE3MywgMjA5LCA3NywgCisgICAgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMjA5LCAxNDgsIDIxNywgMzQsIDIyNCwgMjQwLCAyMDksIDE0OCwgCisgICAgMjE3LCAzNCwgMjM1LCA2NiwgMjA5LCAxNDgsIDg4LCAyMjQsIDI0MSwgODgsIDIzOCwgMTIyLCA1NCwgMjA5LCAxNDgsIDg4LCAKKyAgICAyMzUsIDY3LCA4OCwgMjM4LCAxMjIsIDU0LCA1MywgMjIwLCAxNSwgMjI0LCAyNDAsIDUzLCAyMjAsIDE1LCAyMzUsIDY2LCAKKyAgICA1MywgMjIwLCAxNSwgMjI0LCAyNDEsIDMsIDIwMywgMjUxLCAyMzUsIDY3LCAyMTYsIDI0MywgMjI0LCAyNDAsIDIzNSwgNjcsIAorICAgIDI0OCwgMjEyLCAyMjQsIDI0MCwgMjI0LCAyNDEsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxODksIDIzNSwgNjcsIDI0NiwgCisgICAgMTEwLCAyNDcsIDIzNSwgMjQyLCAxODksIDIyNCwgMjQxLCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTkwLCA4OCwgMjA5LCAKKyAgICA3NywgMjM4LCAxMjMsIDIzNSwgNjcsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxOTAsIDg4LCAyMDksIDc3LCAyMzgsIAorICAgIDEyMywgMjA5LCA1MiwgMjA2LCAxMTEsIDIyNSwgNjksIDIwNiwgMTExLCAyMDksIDUyLCAyMDYsIDExMiwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIyNSwgNjksIDIwNiwgMTEyLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM4LCAxMjIsIDIsIDMsIDI0OCwgMTMsIAorICAgIDU2LCAyMTUsIDI5LCA4OCwgMjA5LCAxMzcsIDIzOCwgMTIyLCA1NCwgMjA3LCAyNTEsIDg4LCAyMDksIDEzNywgMjM4LCAKKyAgICAxMjIsIDU0LCAyMTUsIDI5LCA4OCwgMjA5LCAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMDksIAorICAgIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMTUsIDI5LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDcsIDI1MSwgODgsIDIzOCwgCisgICAgMTIyLCA1NCwgMjE1LCAyOSwgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMTgsIDIxNSwgMTYwLCAKKyAgICAxMzgsIDIxNSwgMjksIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAKKyAgICAyMTUsIDI5LCA4OCwgMjE4LCAyMTUsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMTgsIDIxNSwgMjUxLCAKKyAgICAxMTcsIDE2MCwgMTM4LCA1MywgMjE1LCAyOCwgNTMsIDIwNywgMjUwLCAyMDgsIDMsIDMsIDI0MCwgMTgyLCAyMDcsIDIxMiwgCisgICAgMywgMjQwLCAxODIsIDIwOCwgMywgMywgOTMsIDIsIDU3LCAyMDcsIDIxMiwgMywgOTMsIDIsIDU3LCAyMDgsIDMsIDMsIAorICAgIDIyMSwgMTksIDIsIDU3LCAyMDcsIDIxMiwgMywgMjIxLCAxOSwgMiwgNTcsIDIwOCwgMywgNzYsIDIxNywgMzQsIDE2MCwgCisgICAgMjA1LCAxODYsIDMsIDczLCA1NiwgMjA3LCAyMTIsIDc2LCAyMTcsIDM0LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgNTYsIAorICAgIDIwOCwgMywgNzYsIDg4LCAyMzgsIDEyMiwgNTQsIDIwNywgMjEyLCA3NiwgODgsIDIzOCwgMTIyLCA1NCwgMjA4LCAzLCA3NiwgCisgICAgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDcsIDIxMiwgNzYsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgMjA4LCAzLCA3NiwgCisgICAgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDUyLCA0OSwgCisgICAgMTc2LCAxMDAsIDIxNywgNDMsIDUyLCA1MSwgMTc2LCAxMDAsIDIxNywgNDMsIDI0NiwgMTEwLCAyMDgsIDIsIDI0NiwgMTEwLCAKKyAgICAyMDcsIDIxMSwgMjQ2LCAxMTAsIDIwOCwgMywgMjE3LCAzNCwgMTYwLCAxMzgsIDI0NiwgMTEwLCAyMDcsIDIxMiwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIwOCwgMywgODgsIDIwNywgMjExLCAyMDcsIDIxMiwgODgsIDIwOCwgMiwgMjA4LCAzLCA4OCwgCisgICAgMjA4LCAyLCAyMDcsIDIxMiwgODgsIDIwNywgMjExLCAyMDcsIDIxMiwgMjQ4LCAyMTIsIDIwOCwgMiwgMjA3LCAyMTIsIAorICAgIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDI0NywgMjM1LCAyNDEsIDI0NSwgMywgMjA4LCAyLCAyMzgsIDIwMiwgNzYsIDIxNywgCisgICAgNDYsIDIzOSwgMTY1LCAyMTUsIDE0MSwgMywgMjA2LCAxOTEsIDIwNSwgMTU3LCAyMDUsIDExNSwgMjI4LCA1NSwgMjM2LCAKKyAgICAyNDMsIDIxOCwgMjMwLCAyMDksIDI1MCwgNDksIDIwNywgMTcsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTcsIDIwOSwgMjUwLCAKKyAgICAxMTUsIDIwNywgMTcsIDIxNiwgMTUsIDMsIDIxMiwgMTIyLCA4MywgMjQ5LCA3NywgMjA1LCA4MywgNTEsIDIwNCwgMTg0LCAKKyAgICA1MywgODMsIDI0OSwgNzcsIDQ5LCAyMDQsIDE4NCwgODMsIDI0OSwgNzcsIDUzLCA0OSwgMjA0LCAxODQsIDUzLCA4MywgCisgICAgMjQ5LCA3NywgNTMsIDQ5LCAyMDQsIDE4NCwgMTY4LCAyNDEsIDI0NSwgMjM2LCAyMDEsIDQ5LCAyMjIsIDQ1LCA3NiwgNTMsIAorICAgIDIwMywgNDIsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTgsIDMsIDIxNiwgMjQ2LCAyMDksIDI1MCwgMTE1LCAyMDcsIDE4LCAzLCAKKyAgICAyMDMsIDI1MSwgMjA5LCAyNTAsIDExNSwgMjA3LCAxOCwgODgsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTcsIDUzLCAxMjcsIAorICAgIDIwNywgMTcsIDUzLCAxMTUsIDIwNywgMTcsIDUzLCAyMDgsIDQ3LCAyMTgsIDIxNSwgNTQsIDIxMywgMTA1LCA1MywgMjA4LCAKKyAgICA0NywgMjE4LCAyMTUsIDU0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MCwgMjQyLCAzLCAyMTMsIDEwNSwgMjIwLCAyNywgCisgICAgMjA5LCA3NSwgODMsIDIyNCwgMTc3LCAzLCAyNDYsIDE1NiwgNTYsIDgzLCAyMjQsIDE3NywgMywgMjQ2LCAxNTYsIDU3LCAKKyAgICAxMjcsIDIwNywgMTgsIDMsIDI0NiwgMTU2LCA1NywgMjE2LCAxMjEsIDMsIDIzMywgMTc3LCA5NywgMjE2LCAxMjEsIDMsIAorICAgIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjQ4LCAxNjksIDIxMywgMTQ5LCAyMDUsIDgzLCA4MywgCisgICAgMjQ5LCA3NywgMywgMjMzLCAxNzcsIDk3LCAyMDUsIDgzLCAyNDYsIDgwLCAyMTcsIDQzLCAyMDUsIDgzLCAyMjAsIDE1LCAKKyAgICAyMjQsIDI0MCwgMjA1LCA4MywgMjIwLCAxNSwgMjM1LCA2NiwgMjM5LCAxNzMsIDIwOSwgNzcsIDIyNCwgMjQxLCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjM5LCAxNzMsIDIwOSwgNzcsIDIzNSwgNjcsIDIxNywgMzQsIDE2MCwgMTM4LCAyMDUsIDgzLCAKKyAgICAyMDksIDE3LCAyNDgsIDE2OSwgMjEzLCAxNDksIDIyNSwgNzEsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyMTcsIDQzLCA1MywgCisgICAgMjA5LCAxNywgMjE3LCA0MywgNjQsIDgzLCAxNDgsIDIyMCwgMjEzLCA2NCwgODMsIDE0OCwgMTU3LCAyMzksIDE0LCA2NCwgCisgICAgNDgsIDE1NywgMjAxLCA0OCwgNjQsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNjQsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgNjQsIDQ4LCA0OSwgNTEsIDY0LCA0OCwgOTgsIDYzLCA0OCwgMTgyLCA2MywgNDgsIDE5MSwgNjMsIDQ4LCAxNTcsIDIzOSwgCisgICAgMTQsIDYzLCA0OCwgMTU3LCAyMDEsIDQ4LCA2MywgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA2MywgNDgsIDIwOCwgMjU0LCAKKyAgICAyMDEsIDQ4LCA2MywgNDgsIDQ5LCA1MSwgNjMsIDQ4LCAxMTUsIDEyNywgNjMsIDQ4LCA4NywgNTUsIDMsIDIwNSwgMjI0LCAKKyAgICAyMzksIDE2NSwgODcsIDU1LCAzLCAyMDUsIDIyNCwgMjAzLCAyMTYsIDk4LCA1NSwgMywgMjA1LCAyMjQsIDIzOSwgMTY1LCAKKyAgICA5OCwgNTUsIDMsIDIwNSwgMjI0LCAyMDMsIDIxNiwgNTIsIDMsIDIwNSwgMTU4LCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgCisgICAgMjQ4LCA5MywgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNTIsIAorICAgIDMsIDIyNCwgNTQsIDQ5LCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCAyNDEsIDY1LCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgCisgICAgMjQxLCA2NSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDI0MSwgNjUsIDMsIDIwNSwgMTU4LCAxNjcsIDI0OCwgMTQ0LCAyNDEsIAorICAgIDY1LCAzLCAyNDgsIDkzLCAxNjcsIDI0OCwgMTQ0LCAyMzksIDE4MCwgMjA4LCAxOTMsIDYzLCAyMjUsIDcxLCAyMDgsIDE5MywgCisgICAgNjQsIDIyNSwgNzEsIDIwOCwgMTkzLCA2MywgMjAyLCAyNDYsIDQsIDIwOCwgMTkzLCA2NCwgMjAyLCAyNDYsIDQsIDIwOCwgCisgICAgMTkzLCA2MywgMjE2LCAzNywgNjQsIDIxNiwgMzcsIDY0LCAyMzQsIDg5LCA2MywgMjM0LCA4OSwgMjMzLCAxNzcsIDYzLCAKKyAgICAyMzQsIDg5LCA2MywgMjI1LCA3MSwgMjQ2LCAxNTUsIDYzLCAyMjIsIDY2LCAyNDEsIDY0LCA2NCwgMjIyLCA2NiwgMjQxLCAKKyAgICA2NCwgNjMsIDIyMiwgNjYsIDIyNCwgNDksIDY0LCAyMjIsIDY2LCAyMjQsIDQ5LCA2MywgNCwgMjQxLCA2NCwgNjMsIDQsIAorICAgIDIyNCwgNDksIDY0LCA0LCAyMjQsIDQ5LCA2MywgMjMzLCAxNzcsIDIzOCwgMTk2LCA2NCwgMjMzLCAxNzcsIDIzOCwgMTk2LCAKKyAgICA2MywgODMsIDIzOCwgMTk2LCA2NCwgODMsIDIzOCwgMTk2LCA0OSwgNTUsIDMsIDQsIDI0NiwgMTU1LCAxMjYsIDk4LCAyNTAsIAorICAgIDE5OSwgNDksIDU1LCAzLCA0NCwgMjE1LCAxMTMsIDE2OCwgOTgsIDIwOCwgMTg2LCA0OCwgOTgsIDIwNCwgMTQxLCA1NSwgMywgCisgICAgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA5OCwgMjA0LCAxNDEsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgOTgsIDU1LCAzLCAyMzksIDE4MCwgMjA4LCA5MiwgOTgsIAorICAgIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgOTgsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgCisgICAgNTUsIDMsIDIwNywgNiwgOTgsIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIAorICAgIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDU1LCAyMDYsIDM4LCAyMDAsIDE5NSwgMjAxLCA3OCwgNTUsIDIxNSwgCisgICAgOTYsIDI0MSwgNywgMjI1LCAyOCwgMjM4LCAxMjIsIDIsIDg4LCA5OCwgNDgsIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCAKKyAgICA0NCwgODgsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjEzLCAxMDYsIDI1MSwgMTE3LCAxNjAsIDEzOCwgODcsIDU1LCAyMDYsIAorICAgIDM4LCAyMzUsIDY2LCA4NywgNTUsIDIwNiwgMzgsIDIwNywgMjExLCA5OCwgMjE0LCA5MCwgNDgsIDg3LCAyMTQsIDkwLCA0OCwgCisgICAgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgODcsIDQ4LCA4NywgNTUsIDg4LCAyMTMsIDEwNiwgMjUxLCAxMTcsIAorICAgIDE2MCwgMTM4LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAKKyAgICA5OCwgNTUsIDg4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIDIxMywgMTA2LCAyMDUsIDI0MSwgCisgICAgMjE3LCA0MywgMTkxLCAyMDUsIDk3LCAxOTksIDI3LCA0OCwgMjA5LCAyNTAsIDIwOSwgNzcsIDE1NywgNDgsIDIwOSwgMjUwLCAKKyAgICAyNDksIDEyNiwgMjA4LCAyNTQsIDQ4LCA2NCwgMjIyLCA2NiwgMjA4LCAxMDksIDYzLCA0LCAyMDgsIDEwOSwgNjQsIDQsIAorICAgIDIwOCwgMTA5LCA2MywgMjEzLCA0MSwgMjE2LCAzNywgNjQsIDIxMywgNDEsIDIxNiwgMzcsIDgwLCAyMjUsIDcxLCAyNDYsIAorICAgIDE1NSwgODAsIDIxNiwgMjQ4LCAzLCAyMTYsIDI0OCwgMjI4LCA3MywgODAsIDI0NiwgMTU2LCAzLCAyNDYsIDE1NiwgMjI4LCAKKyAgICA3MywgODAsIDI0NiwgMTU1LCA4MCwgNDQsIDIxMiwgMjQsIDIwOSwgNzcsIDE1NywgNTUsIDMsIDIzMywgMTg2LCAyMzQsIAorICAgIDEzNiwgMjQ5LCAxMjYsIDIwOCwgMjU0LCA1NSwgMywgMjMzLCAxODYsIDIwNywgNiwgMjA5LCA3NywgMTU3LCA1NSwgMywgCisgICAgMjMzLCAxNzcsIDIwNywgNiwgMjQ5LCAxMjYsIDIwOCwgMjU0LCA1NSwgMywgMjMzLCAxNzcsIDIwNywgNiwgMjQ4LCAyMjAsIAorICAgIDU1LCAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDE1NywgMjM5LCAxMywgMjA5LCAyNTAsIDI0OCwgMjIwLCA1NSwgMjE1LCA5NiwgCisgICAgMTkxLCAyMDYsIDk4LCAxNTcsIDIzOSwgMTMsIDk4LCAyMDUsIDk3LCA0OCwgMTgyLCAyMDUsIDk3LCA0OCwgODcsIDIwNSwgCisgICAgOTcsIDQ4LCAxOTEsIDIwNSwgOTcsIDQ4LCA0OSwgNTEsIDIwNSwgOTcsIDQ4LCAxMTUsIDEyNywgMjA1LCA5NywgNDgsIAorICAgIDE1NywgMjAxLCA0OCwgMjA1LCA5NywgNDgsIDE1NywgMjM5LCAxNCwgMjA1LCA5NywgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCAKKyAgICAyMDUsIDk3LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDIwNSwgOTcsIDQ4LCA5OCwgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCAKKyAgICAxODIsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgODcsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgMTkxLCAyMDUsIDk3LCAyNDEsIAorICAgIDI0MywgNDgsIDI0NiwgMTEyLCAyMDUsIDk3LCAxNzYsIDI0NiwgMTU2LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMTc2LCAKKyAgICAyNDYsIDE1NiwgNDgsIDk4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTgyLCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIAorICAgIDE0OCwgODcsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAKKyAgICAxNTcsIDIwMSwgNDgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxNTcsIDIzOSwgMTQsIDIwNSwgOTcsIDU1LCAyMDUsIAorICAgIDE4NiwgMTQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDIwOCwgMjU0LCAyMDEsIAorICAgIDQ4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgOTgsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCAKKyAgICAxODIsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCA4NywgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgCisgICAgOTcsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIDIzMywgMTc3LCAyMDcsIDI1LCAyMjYsIDIxNCwgCisgICAgODMsIDIwNywgMjUsIDIyNiwgMjE0LCA5OCwgMjA1LCA5NywgNTUsIDExOSwgODcsIDIwNSwgOTcsIDQ4LCAxODIsIDIwNSwgCisgICAgOTcsIDU1LCA5OCwgNzYsIDE5MSwgMjA1LCA5NywgNDgsIDg3LCAyMDUsIDk3LCA1NSwgMTE5LCA5OCwgMjA1LCA5NywgNDgsIAorICAgIDE5MSwgMjA1LCA5NywgNTUsIDk4LCA3NiwgMTgyLCAyMDUsIDk3LCA0OCwgOTgsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIAorICAgIDE5OSwgMTgyLCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDg3LCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIAorICAgIDE5MSwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCA5OCwgNjMsIDQ0LCA2NCwgNDgsIDE4MiwgNjMsIDQ0LCA2NCwgCisgICAgNDgsIDg3LCA2MywgNDQsIDY0LCA0OCwgMTkxLCA2MywgNDQsIDY0LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgNTEsIDIwNCwgCisgICAgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAyNDgsIDkzLCAyMDQsIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgNDksIAorICAgIDIwNCwgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAyMDUsIDE1OCwgMjA0LCA5OSwgNDgsIDIxMywgMTEwLCAyMjUsIDI4LCAKKyAgICAyMTMsIDExMCwgMjEzLCA0NiwgMjIwLCA2LCAyMjUsIDI4LCAyMjAsIDYsIDIxMywgNDYsIDIzNiwgMjI5LCAyNDMsIDE2LCAKKyAgICAyNTAsIDIwMCwgMjQ2LCAxNTEsIDI1MSwgNDYsIDg3LCA2MywgNDgsIDIwNiwgNDUsIDIwNSwgMTU2LCA5OCwgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMTMsIDQyLCAxODIsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjA1LCAxNTYsIAorICAgIDg3LCAyMzgsIDExOCwgMjUwLCAyMDIsIDIwNiwgNDUsIDIyNSwgMjQsIDE5MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgCisgICAgOTgsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIDE4MiwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgODcsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgNjMsIDE5MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgCisgICAgMjI0LCAyMjUsIDE4LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMTMsIDM1LCAxODIsIDIwNSwgOTcsIAorICAgIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMjUsIDE4LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMTMsIAorICAgIDM1LCA5OCwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIwMywgMjE2LCA4NywgMjA1LCA5NywgNTUsIDMsIDE2OCwgCisgICAgMjA1LCAyMjQsIDIwMywgMjE2LCA5OCwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIzOSwgMTY1LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIzOSwgMTY1LCA2MywgMjQyLCAxODgsIDE5MSwgMjYsIDk4LCA0OCwgNjMsIAorICAgIDI0MiwgMTg4LCAxOTEsIDI2LCA4NywgNDgsIDYzLCAyNDIsIDE4OCwgMTgyLCAyNiwgOTgsIDQ4LCA2MywgMjQyLCAxODgsIAorICAgIDE4MiwgMjYsIDg3LCA0OCwgNjMsIDI0MiwgMTg4LCA5OCwgMjYsIDE4MiwgNDgsIDYzLCAyNDIsIDE4OCwgODcsIDI2LCAKKyAgICAxODIsIDQ4LCA2MywgMjQyLCAxODgsIDk4LCAyNiwgMTkxLCA0OCwgNjMsIDI0MiwgMTg4LCA4NywgMjYsIDE5MSwgNDgsIAorICAgIDIxMywgODYsIDU1LCAxMjcsIDIyNSwgMjgsIDIxMywgODYsIDU1LCAxMjcsIDIxMywgNDYsIDIxMywgODYsIDU1LCAxMTUsIAorICAgIDIyNSwgMjgsIDIxMywgODYsIDU1LCAxMTUsIDIxMywgNDYsIDIxMywgODYsIDU1LCA0OSwgMjAzLCAyMjgsIDIxMywgODYsIAorICAgIDU1LCA1MSwgMjAzLCAyMjgsIDIxMywgODYsIDU1LCA0OSwgMjM5LCAxNjcsIDIxMywgODYsIDU1LCA1MSwgMjM5LCAxNjcsIAorICAgIDE4MiwgNjQsIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMywgMjMzLCAxNzcsIDE0OCwgMTE1LCAyNTAsIDIwMywgMjI4LCAKKyAgICAxMTgsIDM1LCAyMTMsIDE3NiwgMjQ4LCA3OCwgMjQ5LCA5NCwgMTAwLCAzLCAxNjIsIDIwMCwgMTk1LCA0NCwgMjAwLCAxOTUsIAorICAgIDQ0LCAyNywgMjAwLCAxOTUsIDYzLCA1MiwgMjQ3LCA1MywgNjMsIDI0MSwgNjUsIDI0NywgNTMsIDIwNCwgMTg1LCA2MywgCisgICAgMjE2LCAzNywgMjMzLCAxNzcsIDYzLCAyMTcsIDEzMCwgNjMsIDIxNywgMTMwLCA2MywgMjIyLCA2NiwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAyMzksIDE2NiwgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIAorICAgIDIyNSwgMjMsIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAyMTMsIDQxLCAyMDUsIDk5LCAyNDcsIDUzLCAyMDUsIAorICAgIDE1OCwgMTY3LCA2MywgMjQ2LCAxNTUsIDI0OCwgOTMsIDE2NywgNjMsIDI0NiwgMTU1LCAxNjIsIDIzNiwgMjI5LCAyMTUsIAorICAgIDk4LCA2MywgMjQyLCAxODQsIDIxMiwgMjI4LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCA2MywgMjQyLCAxODQsIDY0LCAKKyAgICAyMzYsIDIyOSwgMjE1LCA5OCwgMjQyLCAxODQsIDIxMiwgMjI4LCA2NCwgMjM2LCAyMjksIDIxNSwgOTgsIDI0MiwgMTg0LCAKKyAgICA1MiwgMjE1LCA3MCwgMjI4LCA5OSwgMjAzLCAyNTUsIDU0LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIAorICAgIDIwMSwgMTgyLCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgMjAxLCA4NywgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIAorICAgIDk5LCAyNTAsIDIwMSwgMTkxLCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgMjAxLCAxMTYsIDYsIDEsIDI1MCwgCisgICAgMTA0LCAxMTYsIDYsIDEsIDI0OCwgMjQsIDExNiwgNiwgMSwgMjAzLCA1NywgMTE2LCA2LCAxLCAyMzUsIDEzMCwgMTE2LCA2LCAKKyAgICAxLCAyNDAsIDIwNiwgMTE2LCA2LCAxLCAyMDAsIDIzLCAxMTYsIDYsIDEsIDE5OSwgNjEsIDExNiwgNiwgMSwgMjM5LCA4OCwgCisgICAgMTE2LCA2LCAxLCAxOTksIDg2LCAxMTYsIDYsIDEsIDIyNywgMjU1LCAxMTYsIDYsIDEsIDgyLCAyMjcsIDI1NSwgMTE2LCA2LCAKKyAgICAxLCA3MCwgMTE2LCA2LCAxLCAyNDAsIDIyNiwgMTE2LCA2LCAxLCAyMjcsIDc0LCAxMTYsIDYsIDEsIDIyNCwgMTQwLCAxMTYsIAorICAgIDYsIDEsIDIyMCwgMjE4LCAxMTYsIDYsIDEsIDIyMCwgMTIwLCAxMTYsIDYsIDEsIDIxNywgNjUsIDExNiwgNiwgMSwgMjE1LCAKKyAgICA5MywgMTE2LCA2LCAxLCAyMTMsIDE4LCAxMTYsIDYsIDEsIDIwOSwgNTgsIDExNiwgNiwgMSwgMjA0LCAxNzEsIDExNiwgNiwgCisgICAgMSwgMjA0LCAxNiwgMTE2LCA2LCAxLCAyMzYsIDIwNCwgMTE2LCA2LCAxLCAyMzQsIDk1LCAxMTYsIDYsIDEsIDIxNywgNCwgCisgICAgMTE2LCA2LCAxLCAyMTYsIDczLCAxMTYsIDYsIDEsIDIwOSwgMjIzLCAxMTYsIDYsIDEsIDIwNSwgMTEsIDExNiwgNiwgMSwgCisgICAgMjQ2LCAxOTgsIDExNiwgNiwgMSwgMjEwLCAxMTQsIDExNiwgNiwgMSwgMjAwLCAyOSwgMTE2LCA2LCAxLCAyMDAsIDMxLCAKKyAgICAxMTYsIDYsIDEsIDIwMCwgNjMsIDExNiwgNiwgMSwgMjA4LCAyMjAsIDE0NCwgMTE2LCA2LCAxLCAxOTksIDIxMSwgMTE2LCAKKyAgICA2LCAxLCA0LCAxOTksIDE4MSwgMTE2LCA2LCAxLCA0LCAxOTksIDE4MiwgMywgMjA3LCA2LCAxMTYsIDYsIDEsIDE5OSwgCisgICAgMjQ1LCAxMTYsIDYsIDEsIDIyOCwgNDAsIDQsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCAKKyAgICA2LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgNiwgMSwgMjM3LCA2MywgMTE2LCA2LCAxLCAyMjcsIAorICAgIDI1MywgMTE2LCA2LCAxLCAyMDksIDIyMiwgMTE2LCA2LCAxLCAyMDUsIDczLCA2MiwgMTE2LCA2LCAxLCAyMjUsIDU5LCAKKyAgICAyMjAsIDIxOCwgMTE2LCA0LCAxLCAyNTAsIDEwNCwgMTE2LCA0LCAxLCAyNDgsIDI0LCAxMTYsIDQsIDEsIDIwMywgNTcsIAorICAgIDExNiwgNCwgMSwgMjM1LCAxMzAsIDExNiwgNCwgMSwgMjQwLCAyMDYsIDExNiwgNCwgMSwgMjAwLCAyMywgMTE2LCA0LCAxLCAKKyAgICAxOTksIDYxLCAxMTYsIDQsIDEsIDIzOSwgODgsIDExNiwgNCwgMSwgMTk5LCA4NiwgMTE2LCA0LCAxLCAyMjcsIDI1NSwgCisgICAgMTE2LCA0LCAxLCA4MiwgMjI3LCAyNTUsIDExNiwgNCwgMSwgNzAsIDExNiwgNCwgMSwgMjQwLCAyMjYsIDExNiwgNCwgMSwgCisgICAgMjI3LCA3NCwgMTE2LCA0LCAxLCAyMjQsIDE0MCwgMTE2LCA0LCAxLCAyMjAsIDIxOCwgMTE2LCA0LCAxLCAyMjAsIDEyMCwgCisgICAgMTE2LCA0LCAxLCAyMTcsIDY1LCAxMTYsIDQsIDEsIDIxNSwgOTMsIDExNiwgNCwgMSwgMjEzLCAxOCwgMTE2LCA0LCAxLCAKKyAgICAyMDksIDU4LCAxMTYsIDQsIDEsIDIwNCwgMTcxLCAxMTYsIDQsIDEsIDIwNCwgMTYsIDExNiwgNCwgMSwgMjM2LCAyMDQsIAorICAgIDExNiwgNCwgMSwgMjM0LCA5NSwgMTE2LCA0LCAxLCAyMTcsIDQsIDExNiwgNCwgMSwgMjE2LCA3MywgMTE2LCA0LCAxLCAKKyAgICAyMDksIDIyMywgMTE2LCA0LCAxLCAyMDUsIDExLCAxMTYsIDQsIDEsIDI0NiwgMTk4LCAxMTYsIDQsIDEsIDIxMCwgMTE0LCAKKyAgICAxMTYsIDQsIDEsIDIwMCwgMjksIDExNiwgNCwgMSwgMjAwLCAzMSwgMTE2LCA0LCAxLCAyMDAsIDYzLCAxMTYsIDQsIDEsIAorICAgIDIwOCwgMjIwLCAxNDQsIDExNiwgNCwgMSwgMTk5LCAyMTEsIDExNiwgNCwgMSwgNCwgMTk5LCAxODEsIDExNiwgNCwgMSwgNCwgCisgICAgMTk5LCAxODIsIDMsIDIwNywgNiwgMTE2LCA0LCAxLCAxOTksIDI0NSwgMTE2LCA0LCAxLCAyMjgsIDQwLCA0LCAxOTksIAorICAgIDE4MSwgMTE2LCA0LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgNCwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgCisgICAgMTgxLCAxMTYsIDQsIDEsIDIzNywgNjMsIDExNiwgNCwgMSwgMjI3LCAyNTMsIDExNiwgNCwgMSwgMjA5LCAyMjIsIDExNiwgCisgICAgNCwgMSwgMjA1LCA3MywgNjIsIDExNiwgNCwgMSwgMjI1LCA1OSwgMjIwLCAyMTgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICA1MywgMTQ4LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgNTMsIDE0OCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjA1LCAKKyAgICAyNDAsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjA3LCA2LCA4LCA0LCAxLCAzNSwgCisgICAgMywgOTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMjQxLCAxMTksIAorICAgIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAKKyAgICAyMjcsIDExOSwgMywgMjQxLCAxMTksIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgMTk5LCAxNTgsIAorICAgIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyNTEsIDExMiwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDExNywgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDYyLCA4LCA2LCAxLCAyMDQsIDE4NSwgMjUxLCAxMTIsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCA1MSwgMTE3LCA4LCAKKyAgICA2LCAxLCAyMDEsIDE0OCwgMywgMTE3LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMTE3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgCisgICAgMjQyLCAxOTgsIDgsIDYsIDEsIDE2NywgMjM0LCAyNDcsIDgsIDQsIDEsIDE2NywgMjM0LCAyNDcsIDgsIDQsIDEsIDIwNywgCisgICAgNCwgMjE1LCAyMjksIDgsIDQsIDEsIDE5NywgMywgMjE4LCAyMTIsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTQsIDMzLCAzLCAKKyAgICAyMDcsIDYsIDgsIDQsIDEsIDE2MywgMywgMTI4LCAyMTMsIDI3LCAyMjgsIDczLCA4LCAxLCA0LCA2LCAyMDQsIDE4NSwgNzIsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgMjI3LCAyNTEsIDY3LCAxLCA2LCAyMDMsIDE2OCwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDIwNywgCisgICAgMTgzLCAyMDcsIDYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyMDcsIDE4MywgMjA3LCA2LCA4NSwgNiwgMSwgMjUxLCAxMzYsIAorICAgIDg1LCA0LCAxLCAyNTEsIDEzNiwgODUsIDYsIDEsIDIwMiwgMjMxLCA4NSwgNCwgMSwgMjAyLCAyMzEsIDg1LCA2LCAxLCAKKyAgICAyMzYsIDYwLCA4NSwgNCwgMSwgMjM2LCA2MCwgODUsIDYsIDEsIDI0MiwgMjUsIDg1LCA0LCAxLCAyNDIsIDI1LCA4NSwgNiwgCisgICAgMSwgMjM4LCAyMzMsIDg1LCA0LCAxLCAyMzgsIDIzMywgODUsIDYsIDEsIDIwOSwgMywgODUsIDQsIDEsIDIwOSwgMywgODUsIAorICAgIDYsIDEsIDE5OSwgOTYsIDg1LCA0LCAxLCAxOTksIDk2LCA4NSwgNiwgMSwgMjM0LCAxNTQsIDg1LCA0LCAxLCAyMzQsIDE1NCwgCisgICAgODUsIDYsIDEsIDIwNiwgODYsIDg1LCA0LCAxLCAyMDYsIDg2LCA4NSwgNiwgMSwgMjMyLCAyMzcsIDg1LCA0LCAxLCAyMzIsIAorICAgIDIzNywgODUsIDYsIDEsIDIyNywgNTksIDg1LCA0LCAxLCAyMjcsIDU5LCA4NSwgNiwgMSwgMjI1LCA1NCwgODUsIDQsIDEsIAorICAgIDIyNSwgNTQsIDg1LCA2LCAxLCAyMjEsIDIxMSwgODUsIDQsIDEsIDIyMSwgMjExLCA4NSwgNiwgMSwgMjE5LCAxNTAsIDg1LCAKKyAgICA0LCAxLCAyMTksIDE1MCwgODUsIDYsIDEsIDIyNiwgMzEsIDg1LCA0LCAxLCAyMjYsIDMxLCA4NSwgNiwgMSwgNzQsIDg1LCAKKyAgICA0LCAxLCA3NCwgODUsIDYsIDEsIDIxNSwgMjA0LCA4NSwgNCwgMSwgMjE1LCAyMDQsIDg1LCA2LCAxLCAyMTMsIDEsIDg1LCAKKyAgICA0LCAxLCAyMTMsIDEsIDg1LCA2LCAxLCAyMDksIDE1MSwgODUsIDQsIDEsIDIwOSwgMTUxLCA4NSwgNiwgMSwgMjA2LCAyMjEsIAorICAgIDg1LCA0LCAxLCAyMDYsIDIyMSwgODUsIDYsIDEsIDIwNCwgNDYsIDg1LCA0LCAxLCAyMDQsIDQ2LCA4NSwgNiwgMSwgMjM3LCAKKyAgICAxMTIsIDg1LCA0LCAxLCAyMzcsIDExMiwgODUsIDYsIDEsIDIyNiwgMTg1LCA4NSwgNCwgMSwgMjI2LCAxODUsIDg1LCA2LCAKKyAgICAxLCAyMTQsIDIzNSwgODUsIDQsIDEsIDIxNCwgMjM1LCA4NSwgNiwgMSwgMjE3LCA1NywgODUsIDQsIDEsIDIxNywgNTcsIAorICAgIDg1LCA2LCAxLCAyNDEsIDY5LCAyNTEsIDE0MiwgODUsIDQsIDEsIDI0MSwgNjksIDI1MSwgMTQyLCA4NSwgNiwgMSwgNDAsIAorICAgIDg1LCAyNTEsIDE3MSwgODUsIDQsIDEsIDQwLCA4NSwgMjUxLCAxNzEsIDg1LCA2LCAxLCAyNDIsIDIxNywgMjM4LCAyMzMsIAorICAgIDg1LCA0LCAxLCAyNDIsIDIxNywgMjM4LCAyMzMsIDg1LCA2LCAxLCAyNDEsIDY5LCAyMjcsIDU5LCA4NSwgNCwgMSwgMjQxLCAKKyAgICA2OSwgMjI3LCA1OSwgODUsIDYsIDEsIDI0MSwgNjksIDIxOSwgMTUwLCA4NSwgNCwgMSwgMjQxLCA2OSwgMjE5LCAxNTAsIAorICAgIDg1LCA2LCAxLCAyNDIsIDIxNywgMjE5LCAxNTAsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjE5LCAxNTAsIDg1LCA2LCAxLCA0MCwgCisgICAgODUsIDIxNywgNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIxNywgNTcsIDg1LCA2LCAxLCAyMTIsIDE2LCA4NSwgNCwgMSwgMjEyLCAKKyAgICAxNiwgODUsIDYsIDEsIDI0MiwgMjMyLCAyMTAsIDU3LCA4NSwgNCwgMSwgMjQyLCAyMzIsIDIxMCwgNTcsIDg1LCA2LCAxLCAKKyAgICA0MCwgODUsIDIxMCwgNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIxMCwgNTcsIDg1LCA2LCAxLCA0MCwgODUsIDIzOCwgOTQsIAorICAgIDg1LCA0LCAxLCA0MCwgODUsIDIzOCwgOTQsIDg1LCA2LCAxLCAyNTEsIDE1NSwgMjI2LCAxOTAsIDg1LCA0LCAxLCAyNTEsIAorICAgIDE1NSwgMjI2LCAxOTAsIDg1LCA2LCAxLCAyNDEsIDY5LCAyMzMsIDE3OCwgODUsIDQsIDEsIDI0MSwgNjksIDIzMywgMTc4LCAKKyAgICA4NSwgNiwgMSwgNDAsIDg1LCAyMzMsIDE3OCwgODUsIDQsIDEsIDQwLCA4NSwgMjMzLCAxNzgsIDg1LCA2LCAxLCA0MCwgODUsIAorICAgIDE0NCwgODUsIDQsIDEsIDQwLCA4NSwgMTQ0LCA4NSwgNiwgMSwgMjI1LCAxOTIsIDE0NCwgODUsIDQsIDEsIDIyNSwgMTkyLCAKKyAgICAxNDQsIDg1LCA2LCAxLCA0MCwgODUsIDIzNCwgMTE0LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzQsIDExNCwgODUsIDYsIDEsIAorICAgIDQwLCA4NSwgMjM0LCAxNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIzNCwgMTU3LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzYsIDU1LCAKKyAgICA4NSwgNCwgMSwgNDAsIDg1LCAyMzYsIDU1LCA4NSwgNiwgMSwgNDAsIDg1LCAyNDAsIDIyOSwgODUsIDQsIDEsIDQwLCA4NSwgCisgICAgMjQwLCAyMjksIDg1LCA2LCAxLCA0MCwgODUsIDIxMCwgMjMsIDg1LCA0LCAxLCA0MCwgODUsIDIxMCwgMjMsIDg1LCA2LCAxLCAKKyAgICA0MCwgMjE4LCAxMDMsIDIxMCwgMjMsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxMCwgMjMsIDg1LCA2LCAxLCA0MCwgCisgICAgMjE4LCAxMDMsIDIxOSwgMjAxLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTksIDIwMSwgODUsIDYsIDEsIDQwLCAyMTgsIAorICAgIDEwMywgMjE4LCA0MSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjE4LCA0MSwgODUsIDYsIDEsIDQwLCAyMTgsIDEwMywgCisgICAgMjAxLCA3OSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjAxLCA3OSwgODUsIDE2LCAyMjcsIDgyLCA4NSwgMTYsIDIyMSwgCisgICAgMjEyLCAyMTMsIDEsIDg1LCAxNiwgMjE1LCAyMDUsIDIxMywgMSwgODUsIDE2LCAyMDgsIDEwMCwgODUsIDE2LCAyMDYsIAorICAgIDIyMiwgMjEzLCAxLCA4NSwgMTYsIDIyNiwgMTg2LCAyMTMsIDEsIDg1LCAxNiwgMjEwLCAyNCwgMjA5LCAxNTEsIDg1LCA2LCAKKyAgICAxLCAyNDIsIDIxNywgMjEwLCA1NywgODUsIDQsIDEsIDI0MiwgMjE3LCAyMTAsIDU3LCA4NSwgNiwgMSwgMjQyLCAyMTcsIAorICAgIDIzNiwgNTUsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjM2LCA1NSwgODUsIDM4LCAyMTksIDE1MSwgNTYsIDg1LCAzOCwgMjA4LCAKKyAgICAyMTMsIDI1MCwgMTczLCA4NSwgMzgsIDIwOCwgMjEzLCAyMjQsIDI0OCwgODUsIDYsIDEsIDI0OCwgMTE3LCAyMjYsIDE5MCwgCisgICAgODUsIDQsIDEsIDI0OCwgMTE3LCAyMjYsIDE5MCwgODUsIDQwLCAyMTgsIDEwMywgMjM2LCAxODMsIDIwOCwgNzYsIDg1LCAKKyAgICA0MCwgMjE4LCAxMDMsIDI0MSwgMTAsIDIxNCwgNzksIDgxLCA4NSwgNDAsIDIxOCwgMTAzLCAyMjgsIDk3LCAyMTQsIDc5LCAKKyAgICA4MSwgODUsIDQwLCAyMTgsIDEwMywgMjAzLCA0NCwgMjQwLCAyMzksIDg1LCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgODUsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCA4NSwgMjIxLCA3NywgMjQwLCAyMzksIDExOCwgNCwgMSwgMjUxLCA4NSwgMTE4LCA0LCAxLCAKKyAgICAyNDksIDg4LCAxMTgsIDQsIDEsIDIzNiwgNTksIDExOCwgNCwgMSwgMjQwLCAxOTAsIDExOCwgNCwgMSwgMjM4LCAxNzksIAorICAgIDExOCwgNCwgMSwgMjAyLCAyMTcsIDExOCwgNCwgMSwgMTk5LCA4NCwgMTE4LCA0LCAxLCAyMDYsIDI0NCwgMTE4LCA0LCAxLCAKKyAgICAyMjgsIDExNywgMTE4LCA0LCAxLCAyMjcsIDY4LCAxMTgsIDQsIDEsIDIyNSwgNjUsIDExOCwgNCwgMSwgMjIyLCAxODAsIAorICAgIDExOCwgNCwgMSwgMjIwLCAxMjUsIDExOCwgNCwgMSwgMjE3LCA3OCwgMTE4LCA0LCAxLCAyMTYsIDEzMCwgMTE4LCA0LCAxLCAKKyAgICAxOTksIDczLCAxMTgsIDQsIDEsIDIxMywgMjM0LCAxMTgsIDQsIDEsIDIxMiwgMTMsIDExOCwgNCwgMSwgMjA2LCAyMzIsIAorICAgIDExOCwgNCwgMSwgMjA0LCA1LCAxMTgsIDQsIDEsIDIxNSwgMjM3LCAxMTgsIDQsIDEsIDIyNiwgMTk1LCAxMTgsIDQsIDEsIAorICAgIDIzNSwgMTkwLCAxMTgsIDQsIDEsIDIxNCwgMTQ0LCAxMTgsIDQsIDEsIDIxMCwgMjEsIDExOCwgNCwgMSwgMjQ2LCAyMjMsIAorICAgIDExOCwgNCwgMSwgMjQ3LCAxNTgsIDExOCwgNCwgMSwgMjI3LCAxOTgsIDExOCwgNCwgMSwgMjQ2LCAxNjIsIDExOCwgNCwgMSwgCisgICAgMjQ3LCAyMSwgMTE4LCA0LCAxLCAyMDAsIDE3OSwgMTE4LCA0LCAxLCAyMjcsIDIxMiwgMTE4LCA0LCAxLCAyMzQsIDIzMCwgCisgICAgMTE4LCA0LCAxLCAyMzQsIDEzOSwgMTE4LCA0LCAxLCAyMzQsIDY5LCAxMTgsIDQsIDEsIDIwMSwgNjQsIDExOCwgNCwgMSwgCisgICAgMjM0LCAxNjYsIDExOCwgNCwgMSwgMjMzLCAyMDMsIDExOCwgNCwgMSwgMTk5LCAyNDcsIDExOCwgNCwgMSwgMjUxLCAyMTAsIAorICAgIDIwNiwgNCwgMSwgMTgzLCAyMDYsIDQsIDEsIDIwMCwgMTA1LCAyMDYsIDQsIDEsIDIwMCwgMTA0LCAyMDYsIDQsIDEsIDIwMCwgCisgICAgOTQsIDIwNiwgNCwgMSwgMjAwLCA5MiwgMjA2LCA0LCAxLCAyNDgsIDIxNCwgMjUxLCAyNTMsIDIwMCwgODcsIDIwNiwgNCwgCisgICAgMSwgMjAwLCA4NywgMjA2LCA0LCAxLCAyMDAsIDEwMiwgMjA2LCA0LCAxLCAyMDAsIDk5LCAyMDYsIDQsIDEsIDIwMCwgMTAxLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgMTAwLCAyMDYsIDQsIDEsIDIwMCwgMTQsIDIwNiwgNCwgMSwgMjAwLCA5NiwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDg1LCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDg1LCAyMDYsIDQsIDEsIDIwMCwgODIsIDIwNiwgNCwgMSwgCisgICAgMjAwLCA5MCwgMjA2LCA0LCAxLCAyNDgsIDIxNCwgMjUxLCAyNTMsIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjAwLCA4OSwgMjA2LCA0LCAxLCAyMDAsIDEwOSwgMjA2LCA0LCAxLCAyMDAsIDgzLCAKKyAgICAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDgzLCAyMDYsIDQsIDEsIDIwMCwgNzIsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgNzIsIDIwNiwgNCwgMSwgMjAwLCA5LCAyMDYsIDQsIDEsIDIwMCwgNTMsIDIwNiwgNCwgMSwgMjUxLCAxODMsIDIwMCwgCisgICAgNTMsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgNTMsIDIwNiwgNCwgMSwgMjAwLCA4MSwgMjA2LCA0LCAxLCAyMDAsIDgwLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNzcsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgOTEsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgNzUsIDIwNiwgNCwgMSwgMjAwLCA3MywgMjA2LCA0LCAxLCAxOTksIDIxMSwgMjA2LCA0LCAxLCAyMDAsIDcwLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNjksIDIwNiwgNCwgMSwgMjAwLCA5MywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA5MywgCisgICAgMjA2LCA0LCAxLCAyNTAsIDEwOCwgMjAwLCA5MywgMjA2LCA0LCAxLCAyMDAsIDY4LCAyMDYsIDQsIDEsIDIwMCwgNjYsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA2NywgMjA2LCA0LCAxLCAyMDAsIDY1LCAyMDYsIDQsIDEsIDIwMCwgNjQsIDIwNiwgNCwgMSwgCisgICAgMjAwLCAxMDMsIDIwNiwgNCwgMSwgMjAwLCA2MiwgMjA2LCA0LCAxLCAyMDAsIDYwLCAyMDYsIDQsIDEsIDIwMCwgNTksIAorICAgIDIwNiwgNCwgMSwgMjAwLCA1NywgMjA2LCA0LCAxLCAyMDAsIDU0LCAyMDYsIDQsIDEsIDIwNiwgMjEzLCAyMDAsIDU0LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNTIsIDIwNiwgNCwgMSwgMjAwLCA1MSwgMjA2LCA0LCAxLCAxOTksIDI0NSwgMjA2LCA0LCA2NywgCisgICAgMSwgMjI1LCAxNjYsIDgxLCAyMDYsIDQsIDIxMCwgMTU1LCA4MSwgMjA2LCA0LCAxMTEsIDIyNywgMTYxLCAzNCwgNSwgMjI0LCAKKyAgICAxMDksIDM0LCA1LCAyMjEsIDEzNSwgMzQsIDUsIDIxMiwgMjU1LCAzNCwgNSwgMjA5LCAyOCwgMzQsIDUsIDIxMCwgNywgMzQsIAorICAgIDUsIDI0OCwgMTIzLCAzNCwgNSwgMjA1LCAxODUsIDM0LCA1LCAyNDYsIDkwLCAzNCwgNSwgMjE4LCAyMzksIDM0LCA1LCAKKyAgICAyMTgsIDI1LCAzNCwgNSwgMjM1LCAxMjMsIDIxNywgMTQ2LCAzNCwgNSwgMTk5LCAxMywgMzQsIDUsIDI0MCwgMjA5LCAzNCwgCisgICAgNSwgMjQxLCAxODksIDM0LCA1LCAyMjcsIDE2NSwgMzQsIDUsIDIwNiwgNjAsIDM0LCA1LCAyNDYsIDIwOSwgMzQsIDUsIAorICAgIDIxNSwgMjE2LCAzNCwgNSwgMjE1LCAxMDUsIDM0LCA1LCAyMzUsIDIwNSwgMzQsIDUsIDIzNSwgMjAxLCAzNCwgNSwgMjM1LCAKKyAgICAyMDIsIDM0LCA1LCAyMzUsIDIwMywgMzQsIDUsIDIwOCwgMTc5LCAzNCwgNSwgMjA4LCAxMzQsIDM0LCA1LCAyMDgsIDE0NywgCisgICAgMzQsIDUsIDIwOCwgMTc4LCAzNCwgNSwgMjA4LCAxNTIsIDM0LCA1LCAyMDgsIDE1MywgMzQsIDUsIDIwOCwgMTM5LCAzNCwgCisgICAgNSwgMjQ3LCA5OSwgMzQsIDUsIDI0NywgNzgsIDM0LCA1LCAyNDcsIDgwLCAzNCwgNSwgMjQ3LCA5OCwgMzQsIDUsIDI0NywgCisgICAgOTYsIDM0LCA1LCAyNDcsIDk3LCAzNCwgNSwgMjQ3LCA3OSwgMzQsIDUsIDE5OCwgMjMyLCAzNCwgNSwgMTk4LCAyMTAsIDM0LCAKKyAgICA1LCAxOTgsIDIyMywgMzQsIDUsIDE5OCwgMjMxLCAzNCwgNSwgMTk4LCAyMjYsIDM0LCA1LCAxOTgsIDIyNywgMzQsIDUsIAorICAgIDE5OCwgMjE1LCAzNCwgNSwgMjQ3LCA5NCwgMzQsIDUsIDI0NywgODEsIDM0LCA1LCAyNDcsIDgzLCAzNCwgNSwgMjQ3LCA5MywgCisgICAgMzQsIDUsIDI0NywgOTEsIDM0LCA1LCAyNDcsIDkyLCAzNCwgNSwgMjQ3LCA4MiwgMzQsIDUsIDIxNCwgNDUsIDM0LCA1LCAKKyAgICAyMTQsIDM1LCAzNCwgNSwgMjE0LCA0MSwgMzQsIDUsIDIxNCwgNDQsIDM0LCA1LCAyMTQsIDQyLCAzNCwgNSwgMjE0LCA0MywgCisgICAgMzQsIDUsIDIxNCwgNDAsIDM0LCA1LCAyMjUsIDIwMywgMzQsIDUsIDIyNSwgMTk1LCAzNCwgNSwgMjI1LCAxOTgsIDM0LCA1LCAKKyAgICAyMjUsIDIwMiwgMzQsIDUsIDIyNSwgMTk5LCAzNCwgNSwgMjI1LCAyMDAsIDM0LCA1LCAyMjUsIDE5NiwgMzQsIDUsIDIwMCwgCisgICAgMTM5LCAzNCwgNSwgMjAwLCAxMjYsIDM0LCA1LCAyMDAsIDEzNCwgMzQsIDUsIDIwMCwgMTM4LCAzNCwgNSwgMjAwLCAxMzYsIAorICAgIDM0LCA1LCAyMDAsIDEzNywgMzQsIDUsIDIwMCwgMTMzLCAzNCwgNSwgMjM1LCAzLCAzNCwgNSwgMjM0LCAyNDksIDM0LCA1LCAKKyAgICAyMzQsIDI1MiwgMzQsIDUsIDIzNSwgMiwgMzQsIDUsIDIzNCwgMjU0LCAzNCwgNSwgMjM0LCAyNTUsIDM0LCA1LCAyMzQsIAorICAgIDI1MSwgMzgsIDM3LCAxLCAyNDksIDgsIDM4LCAzNywgMSwgMjAzLCA1OSwgMzgsIDM3LCAxLCAyMzUsIDE4NSwgMzgsIDM3LCAKKyAgICAxLCAyNDEsIDE3NSwgMzgsIDM3LCAxLCAxOTksIDY4LCAzOCwgMzcsIDEsIDE5OSwgODksIDM4LCAzNywgMSwgMTYxLCAzOCwgCisgICAgMzcsIDEsIDIzOCwgMjA5LCAzOCwgMzcsIDEsIDIzOCwgMTkwLCAzOCwgMzcsIDEsIDIzOCwgMTc5LCAzOCwgMzcsIDEsIDc0LCAKKyAgICAzOCwgMzcsIDEsIDIxNiwgNzMsIDM4LCAzNywgMSwgMjM4LCAxMTUsIDM4LCAzNywgMSwgMjM4LCAxMDQsIDM4LCAzNywgMSwgCisgICAgMjA2LCAyMDEsIDM4LCAzNywgMSwgMTQ0LCAzOCwgMzcsIDEsIDIwNSwgMjYsIDM4LCAzNywgMSwgMjQ3LCA4LCAzOCwgMzcsIAorICAgIDEsIDIxMCwgMTE0LCAzOCwgMzcsIDEsIDIxMCwgNjgsIDM4LCAzNywgMSwgMjM3LCA2MywgMzgsIDM3LCAxLCAyMzgsIDEwMCwgCisgICAgMzgsIDM3LCAxLCA2MiwgMzgsIDM3LCAxLCAyMjgsIDE3OCwgMzgsIDM3LCAxLCAyNDAsIDIyNywgMzgsIDM3LCAxLCAyMjEsIAorICAgIDk1LCAyMDQsIDIwLCAzOCwgMzcsIDEsIDIwMCwgNjUsIDM4LCAzNywgMSwgMTk5LCAyMTEsIDM4LCAzNywgMSwgMjI4LCAzOSwgCisgICAgNjIsIDM4LCAzNywgMSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzOCwgMzcsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIDM3LCAKKyAgICAxLCAyMjgsIDM5LCAyNDgsIDE3NSwgMTk5LCAxODEsIDUxLCAyNTEsIDcxLCAyMDcsIDI1NSwgMjIyLCAxNDUsIDUxLCAyNTEsIAorICAgIDcxLCAyMzksIDE4MCwgMjA3LCAyNTUsIDIyMiwgMTQ1LCA0OSwgMjA3LCAyNTUsIDE1OSwgNTEsIDIwNywgMjU1LCAxNTksIAorICAgIDQ5LCAyMzksIDE4MCwgMjA3LCAyNTUsIDE1OSwgNTEsIDIzOSwgMTgwLCAyMDcsIDI1NSwgMTU5LCAyMTMsIDIyMCwgMjI4LCAKKyAgICA2MCwgMjIyLCAxNDUsIDIxMywgMjIwLCAyMzksIDE4MCwgMjI4LCA2MCwgMjIyLCAxNDUsIDIzOSwgMTgwLCAyMDUsIDExNiwgCisgICAgMjIyLCAxNDUsIDQ5LCAyMDUsIDExNiwgMTU5LCA1MSwgMjA1LCAxMTYsIDE1OSwgMjEzLCAyMjAsIDIwOCwgMTkzLCA0OSwgCisgICAgMjEzLCAyMjAsIDIxNywgODAsIDE1OSwgNTEsIDIxMywgMjIwLCAyMTcsIDgwLCAxNTksIDIzOSwgMCwgMjQzLCAxMywgMjE2LCAKKyAgICAxMjYsIDIzNiwgMjQ0LCAyMTYsIDEyNiwgMjEzLCAxMDUsIDIzNiwgMjQ0LCAyMTYsIDEyNiwgMjMzLCAzMCwgMjM5LCAxODAsIAorICAgIDIxNywgMTQxLCAxOTEsIDI1MSwgODAsIDE4MiwgMjUxLCA4MCwgMjM5LCAxODAsIDIxMywgNDEsIDI1MSwgNzAsIDUzLCAKKyAgICAyMTcsIDEzOCwgMjMzLCAzMywgMjI4LCA1MCwgMjI4LCA1OCwgMjE2LCAxNzcsIDI0OCwgNjYsIDIzMywgMzQsIDMsIDI0MSwgCisgICAgNzQsIDIwNSwgMjQxLCAzLCAyMTMsIDI3LCA1NiwgNDksIDEyOCwgMjE2LCAxMTgsIDE1OSwgNTEsIDEyOCwgMjE2LCAxMTgsIAorICAgIDE1OSwgMjA1LCAyNDEsIDMsIDczLCA1NiwgMjA1LCAyNDEsIDMsIDczLCA1NywgNDksIDgzLCAyNDksIDc3LCAzLCAyMTQsIAorICAgIDczLCA1MSwgODMsIDI0OSwgNzcsIDMsIDIxNCwgNzMsIDIwNSwgMTU4LCA0OSwgMTY3LCAxNTksIDIwNSwgMTU4LCA1MSwgCisgICAgMTY3LCAxNTksIDI0OCwgOTMsIDQ5LCAxNjcsIDE1OSwgMjQ4LCA5MywgNTEsIDE2NywgMTU5LCA0OSwgMjA5LCAxNzMsIAorICAgIDEwOCwgMTU5LCA1MSwgMjA5LCAxNzMsIDEwOCwgMTU5LCA0OSwgNTMsIDIxNiwgMTE1LCA1MSwgNTMsIDIxNiwgMTE1LCAKKyAgICAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgMTEyLCA3MywgMTE5LCAxMjAsIDE5MCwgMjE0LCAyMTEsIDk1LCAKKyAgICAyMzYsIDIyOSwgNzMsIDIxNCwgMjExLCAyMzcsIDYxLCA3MywgODEsIDIxMywgMTA1LCAyMTQsIDc5LCA4MSwgODMsIDIwNSwgCisgICAgMjQwLCAyMTMsIDI3LCAyMTUsIDk5LCAyMDAsIDIzOCwgMjEwLCAxNTUsIDEwMSwgMjQwLCAxODIsIDIwNCwgMTg1LCAyNDYsIAorICAgIDcwLCAyMTMsIDIyMCwgMjQwLCAxODIsIDIxMywgMjIwLCAyNDYsIDcwLCAyMDQsIDE4NSwgMjEwLCAxNjcsIDI0MiwgNDEsIAorICAgIDMsIDQ5LCAyMzUsIDQ0LCAyNDIsIDQxLCAzLCA1MSwgMjM1LCA0NCwgMjA0LCAxODUsIDI0MiwgNDAsIDIwNSwgMTU4LCAKKyAgICAxNjcsIDIxMSwgMTkzLCA1NCwgMjA0LCAxNDIsIDI0MSwgMjQ0LCAyMDYsIDQ0LCAyNDEsIDI0NCwgMjA4LCA5MSwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDgzLCAyMDksIDEwNiwgMjQwLCAxODAsIDIwMSwgMjIsIDgzLCAyMjQsIDE3NiwgMjQ3LCAxNDIsIAorICAgIDUzLCAyMzMsIDMzLCAyMTMsIDEwNSwgMjQ2LCA3MCwgNTMsIDIyNCwgNTUsIDIxNCwgNjMsIDgxLCAyNDEsIDI0NSwgMywgCisgICAgNDksIDIwMywgMjE5LCA1MywgMjA3LCAxOTYsIDgxLCAxMiwgNDIsIDIxMywgMTMyLCAxMiwgNDIsIDI0NiwgMTIwLCAxMiwgCisgICAgNDIsIDIxMSwgMTk2LCAxMDIsIDEyLCA0MiwgMjExLCAxOTYsIDEwNSwgMTIsIDQyLCAyMTEsIDE5NiwgMTQ3LCAxMiwgNDIsIAorICAgIDIxNiwgMTAsIDEyLCA0MiwgMjQ4LCA3OCwgMTIsIDQyLCAyMDcsIDIyLCAxMiwgNDIsIDIyNiwgOTYsIDEwMiwgMTIsIDQyLCAKKyAgICAyMjYsIDk2LCAxMDUsIDEyLCA0MiwgMjQwLCAyMzYsIDEyLCA0MiwgMjExLCAyMDAsIDEyLCA0MiwgNCwgMTAyLCAxMiwgNDIsIAorICAgIDQsIDEwNSwgMTIsIDQyLCAyMjUsIDg2LCAxMDIsIDEyLCA0MiwgMjI1LCA4NiwgMTA1LCAxMiwgNDIsIDIyNSwgODYsIDE0NywgCisgICAgMTIsIDQyLCAyMjUsIDg2LCAxNDksIDEyLCA0MiwgMjA5LCA0MSwgMTIsIDQyLCAyMDYsIDQ3LCAxMiwgNDIsIDIwOSwgMzgsIAorICAgIDEwMiwgMTIsIDQyLCAyMDksIDM4LCAxMDUsIDEyLCA0MiwgMjM0LCAxMjgsIDEwMiwgMTIsIDQyLCAyMzQsIDEyOCwgMTA1LCAKKyAgICAxMiwgNDIsIDIzNCwgMTk5LCAxMiwgNDIsIDIxMywgMjEwLCAxMiwgNDIsIDI0NiwgMjA2LCAxMiwgNDIsIDIwNywgMjI4LCAKKyAgICAxMiwgNDIsIDIyMSwgODEsIDEyLCA0MiwgMjQxLCAxNzMsIDEyLCA0MiwgMjIxLCA3MSwgMTIsIDQyLCAyNDYsIDEzOCwgMTIsIAorICAgIDQyLCAyMDEsIDgzLCAxMDIsIDEyLCA0MiwgMjAxLCA4MywgMTA1LCAxMiwgNDIsIDIzNywgNzcsIDEyLCA0MiwgMjE2LCA4NSwgCisgICAgMTAyLCAxMiwgNDIsIDIxNiwgODUsIDEwNSwgMTIsIDQyLCAyMDksIDE0NiwgMTY3LCAyMDUsIDEwOSwgMjA1LCAzNywgMTIsIAorICAgIDQyLCAyNDIsIDI1NSwgMTIsIDQyLCAyNDAsIDIwMCwgMTIsIDQyLCAyMjcsIDI0MywgMTIsIDQyLCAyNDgsIDExNiwgNzYsIAorICAgIDI0NiwgMTA0LCAxMiwgNDIsIDIzOCwgMjIsIDEyLCA0MiwgMjA4LCAyMTUsIDEwMiwgMTIsIDQyLCAyMDgsIDIxNSwgMTA1LCAKKyAgICAxMiwgNDIsIDI0OSwgOTAsIDEyLCA0MiwgMjA5LCAxNTMsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwOSwgMTUzLCAxMiwgNDIsIAorICAgIDIyMCwgMTQsIDEwMiwgMTIsIDQyLCAyMjAsIDE0LCAxMDUsIDEyLCA0MiwgMjIwLCAxNCwgMTQ3LCAxMiwgNDIsIDIyMCwgCisgICAgMTQsIDE0OSwgMTIsIDQyLCAyMjIsIDI3LCAxMiwgNDIsIDIxMCwgNTksIDEyLCA0MiwgMjEzLCAyMTYsIDEyLCA0MiwgMjM4LCAKKyAgICA1MCwgMTIsIDQyLCAyMTcsIDkyLCAxMiwgNDIsIDI0OCwgNDQsIDEwMiwgMTIsIDQyLCAyNDgsIDQ0LCAxMDUsIDEyLCA0MiwgCisgICAgMjIyLCA3MSwgMTIsIDQyLCAyMjEsIDc2LCAxMiwgNDIsIDIzNSwgNzcsIDEwMiwgMTIsIDQyLCAyMzUsIDc3LCAxMDUsIDEyLCAKKyAgICA0MiwgMjM1LCA3NywgMTQ3LCAxMiwgNDIsIDIwNiwgMiwgMTIsIDQyLCAyNDYsIDEwMywgMTIsIDQyLCAyMDEsIDQ4LCAxMDIsIAorICAgIDEyLCA0MiwgMjAxLCA0OCwgMTA1LCAxMiwgNDIsIDI0NywgMjIwLCAyMTEsIDE5MCwgMTIsIDQyLCAyMDksIDE0NiwgMjMzLCAKKyAgICAxMjQsIDEyLCA0MiwgMjMzLCAxMjQsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwOCwgMjI3LCAxMiwgNDIsIDI0NywgMjIwLCAyMTAsIAorICAgIDU0LCAxMiwgNDIsIDIzNiwgMjU1LCAxMiwgNDIsIDI0NywgMjIwLCAyNDcsIDExOCwgMTIsIDQyLCAyMDksIDE0NiwgMjAxLCAKKyAgICAxMDQsIDEyLCA0MiwgMjAxLCAxMDUsIDEwMiwgMTIsIDQyLCAyMDEsIDEwNSwgMTA1LCAxMiwgNDIsIDI0NiwgMTQxLCAxMiwgCisgICAgNDIsIDI0NywgMjIwLCAyMzUsIDEwOCwgMTIsIDQyLCAxNjgsIDEwMiwgMTIsIDQyLCAxNjgsIDEwNSwgMTIsIDQyLCAyNDcsIAorICAgIDIyMCwgMjI0LCA4OSwgMTIsIDQyLCAyNDcsIDIyMCwgMjM2LCA0MSwgMTIsIDQyLCAyMjEsIDY3LCAxMDIsIDEyLCA0MiwgCisgICAgMjIxLCA2NywgMTA1LCAxMiwgNDIsIDIxMywgMjIyLCAxMiwgNDIsIDI0OCwgMTI2LCAxMiwgNDIsIDI0NywgMjIwLCAyMDYsIAorICAgIDIzOCwgMjI1LCAzNCwgMTIsIDQyLCAyNDcsIDIyMCwgMjI1LCAzNSwgMTIsIDQyLCAyNDcsIDIyMCwgMjAxLCAxNiwgMTIsIAorICAgIDQyLCAyNDcsIDIyMCwgMjM3LCAxNywgMTIsIDQyLCAyMzksIDExLCAxMDIsIDEyLCA0MiwgMjM5LCAxMSwgMTA1LCAxMiwgCisgICAgNDIsIDIzOSwgMTEsIDE0NywgMTIsIDQyLCAyNDcsIDIyMCwgMjM5LCAxMCwgMTIsIDQyLCAyMzQsIDEzNiwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjMzLCAxMjAsIDEyLCA0MiwgMjQ4LCAxMTIsIDEyLCA0MiwgMjM1LCAxNjksIDEyLCA0MiwgMjQ3LCAyMjAsIAorICAgIDIzNywgNzEsIDEyLCA0MiwgMjQ3LCAyMjAsIDI0OCwgMTYyLCAxMiwgNDIsIDI0NywgMjIwLCAyMTIsIDI3LCAxMiwgNDIsIAorICAgIDIwOSwgMTQ2LCAyMDEsIDM5LCAxMiwgNDIsIDIwOSwgMTQ2LCAyMDAsIDQzLCAxMiwgNDIsIDI0NywgMjIwLCAyMzYsIDIwMiwgCisgICAgMTIsIDQyLCAyMjcsIDI1MCwgMjM4LCA1NSwgMTIsIDQyLCAyNDcsIDIyMCwgMjM4LCA1NSwgMTIsIDQyLCAyMjcsIDI1MCwgCisgICAgMjA1LCAxNTksIDEyLCA0MiwgMjQ3LCAyMjAsIDIwNSwgMTU5LCAxMiwgNDIsIDIyNywgMjUwLCAyMzksIDE1OCwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjM5LCAxNTgsIDEyLCA0MiwgMjA0LCAxODIsIDEyLCA0MiwgMjI3LCAyNTAsIDIwNCwgMTgyLCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMDQsIDE4MiwgNzUsIDQyLCAxMDIsIDc1LCA0MiwgMjI0LCAxNzYsIDc1LCA0MiwgMjQwLCAxODIsIDc1LCAKKyAgICA0MiwgMjA5LCA3NSwgNzUsIDQyLCAyMTEsIDE5NSwgNzUsIDQyLCAxMTcsIDc1LCA0MiwgMTA1LCA3NSwgNDIsIDIyNCwgCisgICAgMjA1LCA3NSwgNDIsIDIyMiwgMTgwLCA3NSwgNDIsIDIyNSwgMTMsIDc1LCA0MiwgMjM4LCAxNTQsIDc1LCA0MiwgMTkyLCAKKyAgICA3NSwgNDIsIDEyNywgMjQ4LCA3OCwgNzUsIDQyLCAyNDMsIDEsIDc1LCA0MiwgMjMyLCAyMzEsIDc1LCA0MiwgMjA3LCAyMiwgCisgICAgNzUsIDQyLCAxNzYsIDI0OCwgNzgsIDc1LCA0MiwgMjI2LCA5NSwgNzUsIDQyLCAyMTUsIDUxLCA3NSwgNDIsIDIwMCwgMjI4LCAKKyAgICA3NSwgNDIsIDIwOCwgMjA2LCA3NSwgNDIsIDUxLCAxNzYsIDI0OCwgNzgsIDc1LCA0MiwgMjM0LCA3MCwgMjM4LCAxNzQsIAorICAgIDc1LCA0MiwgMjA2LCAxNjYsIDc1LCA0MiwgMjQwLCAyMzYsIDc1LCA0MiwgMjExLCAyMDAsIDc1LCA0MiwgMjQ2LCAxMjAsIAorICAgIDc1LCA0MiwgMjE1LCAzLCA3NSwgNDIsIDI1MSwgMTkyLCA3NSwgNDIsIDIyMSwgNTgsIDc1LCA0MiwgMjM4LCAxNzQsIDc1LCAKKyAgICA0MiwgMjM5LCAxNywgNzUsIDQyLCAyMTEsIDIyMywgNzUsIDQyLCAyMzUsIDExNiwgNzUsIDQyLCAyMzUsIDExNywgMjA5LCAKKyAgICA1NSwgNzUsIDQyLCAyMzgsIDU0LCA3NSwgNDIsIDI0OCwgMTc0LCA3NSwgNDIsIDIwMCwgMjUwLCA3NSwgNDIsIDI0NiwgCisgICAgMjI3LCA3NSwgNDIsIDIxMiwgMjM3LCA3NSwgNDIsIDIyOCwgMTEzLCA3NSwgNDIsIDIwOSwgNTMsIDc1LCA0MiwgMjI1LCAKKyAgICA4NSwgNzUsIDQyLCAyNDMsIDExLCA3NSwgNDIsIDIwOCwgMTk3LCA3NSwgNDIsIDIyMSwgNjMsIDc1LCA0MiwgMjEzLCAxNSwgCisgICAgNzUsIDQyLCAyMDAsIDIzNSwgNzUsIDQyLCAyMTcsIDcwLCA3NSwgNDIsIDIwNCwgMTkxLCA3NSwgNDIsIDIzOSwgMTM5LCAKKyAgICA3NSwgNDIsIDIwOSwgMjUwLCAyMDYsIDQ3LCA3NSwgNDIsIDIzOSwgMTgwLCAyNDYsIDEyMCwgNzUsIDQyLCAxNjgsIDIwOCwgCisgICAgNTMsIDc1LCA0MiwgMTIwLCAyMzQsIDE3NCwgNzUsIDQyLCAyMTAsIDAsIDc1LCA0MiwgMjQ4LCA4NSwgNzUsIDQyLCAyMDksIAorICAgIDM3LCA3NSwgNDIsIDI0OCwgNDgsIDc1LCA0MiwgMjA4LCA5MCwgNzUsIDQyLCAyMzQsIDEyNywgNzUsIDQyLCAyMzQsIDIxNCwgCisgICAgNzUsIDQyLCAyNDAsIDE4NSwgNzUsIDQyLCAyMzQsIDE5OSwgNzUsIDQyLCAyNDgsIDY2LCA3NSwgNDIsIDIxMywgMjEwLCAKKyAgICA3NSwgNDIsIDIxMSwgMjA4LCA3NSwgNDIsIDI0MSwgMTIsIDc1LCA0MiwgMjUwLCAxMTMsIDc1LCA0MiwgMjA4LCAxOTMsIAorICAgIDc1LCA0MiwgMjE4LCAyMTQsIDc1LCA0MiwgMjA3LCAyMjgsIDc1LCA0MiwgMjExLCAyMzQsIDc1LCA0MiwgMjIxLCA4MSwgCisgICAgNzUsIDQyLCAyMDUsIDEwOCwgNzUsIDQyLCAyMjUsIDE2MiwgNzUsIDQyLCAyMDgsIDc2LCA3NSwgNDIsIDI0MSwgMTczLCAKKyAgICA3NSwgNDIsIDIwMSwgNjMsIDc1LCA0MiwgMjQwLCAyMTIsIDIxOCwgMjE0LCA3NSwgNDIsIDI0NiwgNjYsIDc1LCA0MiwgCisgICAgMjM2LCAxNzYsIDc1LCA0MiwgMjQ2LCAxMzIsIDc1LCA0MiwgMjA4LCA5NSwgNzUsIDQyLCAyMDEsIDgyLCA3NSwgNDIsIAorICAgIDIzNywgNzcsIDc1LCA0MiwgMjQ2LCAxMjgsIDc1LCA0MiwgMjM3LCAxNTQsIDc1LCA0MiwgNTMsIDIwMCwgMTk1LCA3NSwgCisgICAgNDIsIDE2NywgMjA1LCAxMDksIDIwNSwgMzcsIDc1LCA0MiwgMjA5LCA2NywgNzUsIDQyLCAyMzcsIDE2NiwgNzUsIDQyLCAKKyAgICAyNDIsIDI1NSwgNzUsIDQyLCAyNDAsIDIwMCwgNzUsIDQyLCAyMTUsIDAsIDc1LCA0MiwgMjI3LCAyNDMsIDc1LCA0MiwgCisgICAgMjIyLCA0OSwgNzUsIDQyLCAyMDUsIDIzOSwgNzUsIDQyLCAyMDcsIDE3OCwgNzUsIDQyLCAyMjQsIDE5OSwgNzUsIDQyLCAKKyAgICAyMDMsIDE5NSwgNzUsIDQyLCAyMzcsIDExMCwgNzUsIDQyLCAyNDgsIDExNiwgNzYsIDI0NiwgMTA0LCA3NSwgNDIsIDIwOSwgCisgICAgMTc4LCA3NSwgNDIsIDIzOSwgMTgwLCAyMDYsIDE1OCwgNzUsIDQyLCAyMDEsIDM0LCA3NSwgNDIsIDIwOSwgODMsIDc1LCAKKyAgICA0MiwgMjQwLCAyNTUsIDc1LCA0MiwgMjM4LCAyMiwgNzUsIDQyLCAyMDgsIDIzMCwgNzUsIDQyLCA0OCwgNzUsIDQyLCAyMDgsIAorICAgIDc4LCA3NSwgNDIsIDIwOCwgMjE0LCA3NSwgNDIsIDIwNSwgMTMxLCA3NSwgNDIsIDIzNSwgODYsIDc1LCA0MiwgMjQ3LCAKKyAgICAxMDQsIDc1LCA0MiwgMjA4LCAxMTMsIDc1LCA0MiwgMjQ5LCA5MCwgNzUsIDQyLCAyMTMsIDgzLCA3NSwgNDIsIDIwOSwgCisgICAgMTUzLCA3NSwgNDIsIDIyNywgMjM1LCA3NSwgNDIsIDIyMCwgMTMsIDc1LCA0MiwgMjEwLCA1OSwgNzUsIDQyLCAyMzcsIAorICAgIDE0MiwgNzUsIDQyLCAyMTcsIDkyLCA3NSwgNDIsIDI1MSwgNzksIDc1LCA0MiwgMjE1LCAxMjAsIDc1LCA0MiwgMjM5LCAyMSwgCisgICAgNzUsIDQyLCAyNDgsIDQzLCA3NSwgNDIsIDIyMiwgNzEsIDc1LCA0MiwgMjIxLCAxNTgsIDc1LCA0MiwgMjEwLCAxNzQsIDc1LCAKKyAgICA0MiwgMjUwLCAyMDYsIDc1LCA0MiwgMjIxLCA3NiwgNzUsIDQyLCAyMDUsIDE2MywgNzUsIDQyLCAyMTcsIDQxLCA3NSwgNDIsIAorICAgIDI0OCwgMTIwLCA3NSwgNDIsIDIwOCwgNzQsIDc1LCA0MiwgMjQ2LCA3OCwgNzUsIDQyLCAyMzUsIDc2LCA3NSwgNDIsIDIwNiwgCisgICAgMiwgNzUsIDQyLCAyMjgsIDc2LCA3NSwgNDIsIDI0OCwgMTMyLCA3NSwgNDIsIDIwMSwgMTA1LCAyMzgsIDE3NCwgNzUsIDQyLCAKKyAgICAyNDYsIDEwMywgNzUsIDQyLCAyMDEsIDQ3LCA3NSwgNDIsIDIxMSwgMTkwLCA3NSwgNDIsIDIzMywgMTI0LCA3NSwgNDIsIAorICAgIDIwOCwgMjI3LCA3NSwgNDIsIDIwMywgODMsIDc1LCA0MiwgMjQ5LCAzLCA3NSwgNDIsIDIxNSwgMTY4LCA3NSwgNDIsIDI0OSwgCisgICAgMTE2LCA3NSwgNDIsIDIxMCwgNTQsIDc1LCA0MiwgMjEzLCAxNjksIDc1LCA0MiwgMjEyLCAxNTgsIDc1LCA0MiwgMjM2LCAKKyAgICAyNTUsIDc1LCA0MiwgMjQ4LCAxMTgsIDc1LCA0MiwgMjQ3LCAxMTgsIDc1LCA0MiwgMjQ4LCAxNDksIDc1LCA0MiwgMjIxLCAKKyAgICA3OCwgNzUsIDQyLCAyMDEsIDEwNCwgNzUsIDQyLCAyNDYsIDE0MSwgNzUsIDQyLCAyMDEsIDEyLCA3NSwgNDIsIDI0MCwgCisgICAgMjQ3LCA3NSwgNDIsIDIwMiwgMjE4LCA3NSwgNDIsIDIzNSwgMTA4LCA3NSwgNDIsIDIyNCwgODksIDc1LCA0MiwgMjM2LCAKKyAgICA0MSwgNzUsIDQyLCAyMjEsIDY2LCA3NSwgNDIsIDIwOSwgNzQsIDc1LCA0MiwgMjA5LCAyNTAsIDIwNywgNSwgMjQ4LCAxNjIsIAorICAgIDc1LCA0MiwgMjEzLCAyMjIsIDc1LCA0MiwgMjQ4LCAxMjYsIDc1LCA0MiwgMjAwLCAyMTgsIDc1LCA0MiwgMjM3LCAxODksIAorICAgIDc1LCA0MiwgMjI1LCAzNCwgNzUsIDQyLCAyMDYsIDIzOCwgMjI1LCAzNCwgNzUsIDQyLCAyMjUsIDMwLCA3NSwgNDIsIDIwOSwgCisgICAgMCwgNzUsIDQyLCAyMjUsIDM1LCA3NSwgNDIsIDIwMSwgMTYsIDc1LCA0MiwgMjM3LCAxNywgNzUsIDQyLCAyMzksIDEwLCAKKyAgICA3NSwgNDIsIDIzNCwgMTM2LCA3NSwgNDIsIDIzNiwgMjE3LCA3NSwgNDIsIDIzMywgMTIwLCA3NSwgNDIsIDI0OCwgMTEyLCAKKyAgICA3NSwgNDIsIDIwNiwgMjQ3LCA3NSwgNDIsIDIzNCwgMjIxLCA3NSwgNDIsIDIzNywgMTAzLCA3NSwgNDIsIDIxMiwgNTgsIAorICAgIDIwMSwgMTIsIDc1LCA0MiwgMjQ3LCAxMDYsIDc1LCA0MiwgMjM1LCAxNjksIDc1LCA0MiwgMjM3LCA3MSwgNzUsIDQyLCAKKyAgICAyNDgsIDE2MiwgNzUsIDQyLCAyMTIsIDI3LCA3NSwgNDIsIDI0MSwgMTU4LCA3NSwgNDIsIDIwMSwgMzksIDc1LCA0MiwgCisgICAgMjM0LCAxMDYsIDc1LCA0MiwgMjAwLCA0MywgNzUsIDQyLCAyMjEsIDE2OSwgNzUsIDQyLCAyNDgsIDE0NCwgNzUsIDQyLCAKKyAgICAyMzgsIDE4NiwgNzUsIDQyLCAyMzYsIDIwMiwgNzUsIDQyLCAyMDUsIDgwLCA3NSwgNDIsIDIzOSwgMTQyLCA3NSwgNDIsIAorICAgIDIxMywgMjA0LCA3NSwgNDIsIDIxOCwgMjE2LCA3NSwgNDIsIDIzOCwgNTUsIDc1LCA0MiwgMjA1LCAxNTksIDc1LCA0MiwgCisgICAgMjM5LCAxNTgsIDc1LCA0MiwgMjA0LCAxODIsIDc1LCA0MiwgMjM3LCAyMCwgMTQxLCAyNDEsIDExNywgMTcxLCA0OSwgMjA1LCAKKyAgICAxODYsIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgODgsIDIwNSwgMTg2LCA1NywgMTQxLCAyNDEsIDExNywgMTcxLCAKKyAgICA0OSwgMjA1LCAxODYsIDEwMSwgMjYsIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgODgsIDIwNSwgMTg2LCAxMDEsIAorICAgIDI2LCA1NywgMTQxLCAyNDEsIDExNywgMTcxLCAyMzYsIDE4MywgMjA3LCAyMDAsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAKKyAgICAyMDEsIDIzNiwgMjAxLCA1NiwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDU3LCAxNDEsIDI0MSwgCisgICAgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjI1LCAyOCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAKKyAgICAyMDEsIDIwMywgMjI1LCAyMjUsIDI4LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjAzLCAyMjUsIAorICAgIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMjQsIDU0LCAyMjUsIDI4LCAxNDEsIAorICAgIDI0MSwgMTE3LCAxNzEsIDIxNiwgMjQ1LCAxNDEsIDIwOCwgMjQ0LCAxNDEsIDI0NiwgNzAsIDE0MSwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDI0MCwgMjQ0LCA4MSwgMjI3LCAyMzYsIDIyOCwgOTYsIDIwOCwgMTEyLCA5OSwgMTQxLCAyMjgsIDEwLCA4MSwgMTQxLCAKKyAgICAyNDYsIDEwNiwgODEsIDE0MSwgNDEsIDE5OSwgODEsIDQ5LCAyNTEsIDcxLCAxNTksIDUxLCAyNTEsIDcxLCAxNTksIDQ5LCAKKyAgICA1MywgMjUxLCA3MSwgMTU5LCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgNDksIDI0MywgMTYsIDE1OSwgNTEsIDI0MywgMTYsIAorICAgIDE1OSwgNDksIDY0LCAyNDMsIDE2LCAxNTksIDUxLCA2NCwgMjQzLCAxNiwgMTU5LCA0OSwgNjMsIDIyNCwgMjQ3LCAxNTksIAorICAgIDUxLCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCA2NSwgODEsIDIzNSwgMjM4LCA4MSwgNDksIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAxNTksIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0OSwgNjQsIDIyNCwgMjQ3LCAxNTksIDUxLCA2NCwgMjI0LCAyNDcsIAorICAgIDE1OSwgNDksIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA1MSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQ5LCAKKyAgICA2NCwgNTIsIDE1OSwgNTEsIDY0LCA1MiwgMTU5LCAyMDEsIDc4LCAyNDEsIDI0NCwgMjEzLCAxMDUsIDUzLCAyMTUsIDE1LCAKKyAgICAyMTQsIDYzLCA4MSwgNTMsIDIxNSwgMTUsIDIxNCwgNjMsIDgxLCAxMjgsIDUzLCAyMTUsIDE1LCAyMTQsIDYzLCA4MSwgCisgICAgMjE1LCA2NSwgMTM0LCAyMzcsIDE4OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDEwMiwgMjM0LCAxNzEsIDIxOCwgOTMsIDEwNSwgCisgICAgMjM0LCAxNzEsIDIxOCwgOTMsIDE0NywgMjM0LCAxNzEsIDIxOCwgOTMsIDE0OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDE2NCwgCisgICAgMjM0LCAxNzEsIDIxOCwgOTMsIDE4NywgMjM0LCAxNzEsIDIxOCwgOTMsIDIxMCwgMTM1LCAyMzQsIDE3MSwgMjE4LCA5MywgCisgICAgMTkyLCAyMzQsIDE3MSwgMjE4LCA5MywgMjE5LCAxMTMsIDE0MSwgMjI0LCAyMjksIDE1MCwgODEsIDE0MSwgMjEzLCAxOSwgCisgICAgMTUwLCA4MSwgMTQxLCAyNDEsIDEyNiwgMTUwLCA4MSwgMTQxLCAyMzgsIDE1MywgMTUwLCA4MSwgMjksIDIwOSwgMTM5LCAKKyAgICA3MywgMTUwLCA4MSwgMjksIDUzLCA3MywgMTUwLCA4MSwgMjAxLCA3NCwgMjQxLCAyNDQsIDgzLCAyMjcsIDY3LCAyMTMsIAorICAgIDEzMywgODEsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMywgMjAyLCAxODksIDIwOSwgMSwgODEsIDgzLCAyMjcsIDY3LCAKKyAgICAyMTMsIDEzMywgMTM0LCAyMDMsIDIyNSwgMjM0LCAyMTMsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMywgMjAyLCAxODksIAorICAgIDIwOSwgMSwgMTM0LCAyMDMsIDIyNSwgMjM0LCAyMTMsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMTM0LCAyMjQsIDU0LCAKKyAgICAyMzQsIDIxMywgNDQsIDIxNSwgNjUsIDgxLCAxNDEsIDIwNiwgMTc4LCAyMjQsIDE3NywgMjM3LCAxMzksIDIxMCwgMTU1LCAKKyAgICA5OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDIwNiwgMTY2LCAyMzQsIDE3MSwgMjE4LCA5MywgMjA0LCAxNTksIDIzNCwgMTcxLCAKKyAgICAyMTgsIDkzLCAyMDYsIDY3LCA4MywgMTQxLCAyMjgsIDEwLCA4MSwgMjIyLCAxMjgsIDgxLCAyMTYsIDExMCwgMjUxLCAxMDUsIAorICAgIDgxLCAxNDEsIDU4LCAyMjgsIDk5LCAxNDEsIDE2NywgMjM3LCA5NiwgMjA4LCAyNDQsIDE3NywgMSwgNCwgNjIsIDE3NywgMSwgCisgICAgNjIsIDE3NywgMSwgNCwgNzAsIDE3NywgMSwgNzAsIDE3NywgMSwgNCwgNjYsIDE3NywgMSwgNjYsIDE3NywgMSwgNCwgNzIsIAorICAgIDE3NywgMSwgNzIsIDE3NywgMSwgNCwgNzQsIDE3NywgMSwgNzQsIDE3NywgMSwgMTYxLCAxNzcsIDEsIDIzNiwgODksIDE3NywgCisgICAgMSwgMjI2LCAxNjMsIDE3NywgMSwgMjM1LCAxNjEsIDE3NywgMSwgMjI2LCAxNSwgMTc3LCAxLCAyMzUsIDUwLCAxNzcsIDEsIAorICAgIDIyNywgOCwgMTc3LCAxLCAyMzYsIDE1LCAxNzcsIDEsIDIyNiwgODgsIDE3NywgMSwgMjM1LCAxMTYsIDE3NywgMSwgMjEyLCAKKyAgICA2NCwgMTc3LCAxLCAxOTksIDExNCwgMTc3LCAxLCAyMDksIDE4MiwgMTc3LCAxLCAxOTksIDM2LCAxNzcsIDEsIDIwOCwgMjQsIAorICAgIDE3NywgMSwgMTk5LCAzLCAxNzcsIDEsIDIxMSwgMjAyLCAxNzcsIDEsIDE5OSwgODksIDE3NywgMSwgMjA5LCAyOSwgMTc3LCAKKyAgICAxLCAxOTksIDE0LCAxNzcsIDEsIDIwNywgMzYsIDE3NywgMSwgMjQyLCA1OCwgMTc3LCAxLCAyMDYsIDE1LCAxNzcsIDEsIAorICAgIDI0MSwgNzYsIDE3NywgMSwgNCwgMjA0LCAyMTUsIDE3NywgMSwgMjA0LCAyMTUsIDE3NywgMSwgMjM5LCAxMzcsIDE3NywgMSwgCisgICAgMjA2LCAyMDEsIDE3NywgMSwgMjQxLCAxNzUsIDE3NywgMSwgMTM4LCAxNzcsIDEsIDI0MCwgMjExLCAxNzcsIDEsIDE4OCwgCisgICAgMTc3LCAxLCAyMTksIDE1MCwgMTc3LCAxLCAyMTgsIDEzMywgMTc3LCAxLCAyMjAsIDM0LCAxNzcsIDEsIDIxOCwgMjQxLCAKKyAgICAxNzcsIDEsIDE0NCwgMTc3LCAxLCAyNDksIDEzNiwgMTc3LCAxLCAxNzIsIDE3NywgMSwgMjM0LCA3NSwgMTc3LCAxLCAyNDgsIAorICAgIDE4OCwgMTc3LCAxLCAyMTUsIDIwNCwgMTc3LCAxLCAyMzMsIDk3LCAxNzcsIDEsIDI0OCwgMzYsIDE3NywgMSwgMjE0LCAKKyAgICAyMjQsIDE3NywgMSwgMjM0LCAxMzksIDE3NywgMSwgMjQ5LCA4LCAxNzcsIDEsIDIxNiwgNzMsIDE3NywgMSwgMjMzLCAyMDcsIAorICAgIDE3NywgMSwgMjQ4LCAxMjQsIDE3NywgMSwgMjE1LCAxMDYsIDE3NywgMSwgMTc4LCAxNzcsIDEsIDIyMSwgMjExLCAxNzcsIAorICAgIDEsIDIyMSwgNDEsIDE3NywgMSwgMjIyLCA3NiwgMTc3LCAxLCAyMjEsIDEzNiwgMTc3LCAxLCA0LCAxODMsIDE3NywgMSwgCisgICAgMTgzLCAxNzcsIDEsIDQsIDE5OSwgMjExLCAxNzcsIDEsIDE5OSwgMjExLCAxNzcsIDEsIDQsIDE5OSwgMjQ1LCAxNzcsIDEsIAorICAgIDE5OSwgMjQ1LCAxNzcsIDEsIDIxMywgMjUyLCAxNzcsIDEsIDIxMywgODgsIDE3NywgMSwgMjEyLCAxNzUsIDE3NywgMSwgCisgICAgMjEzLCAxOTAsIDE3NywgMSwgMjEzLCAxLCAxNzcsIDEsIDQsIDIwMSwgMTE0LCAxNzcsIDEsIDIwMSwgMTE0LCAxNzcsIDEsIAorICAgIDIwMSwgMzEsIDE3NywgMSwgMjAxLCA2NCwgMTc3LCAxLCAyMDEsIDAsIDE3NywgMSwgMjIwLCAyMTQsIDE3NywgMSwgMjAxLCAKKyAgICAxNjYsIDE3NywgMSwgNCwgMTYxLCAxNzcsIDEsIDQsIDIyNywgOCwgMzgsIDIyNywgMzIsIDIwMiwgMTg5LCAyMDksIDEsIAorICAgIDgxLCAzOCwgMjI3LCAzMiwgMjEwLCAxNzIsIDIwOSwgMSwgODEsIDIyNywgMzIsIDIwMiwgMTg5LCAyMDksIDEsIDgxLCAKKyAgICAyMjcsIDMyLCAyMTAsIDE3MiwgMjA5LCAxLCA4MSwgMTc3LCAyMjgsIDEwLCA4MSwgMTc3LCAyMDIsIDE4OSwgMjI4LCAxMCwgCisgICAgODEsIDE3NywgMjQxLCAzNSwgMTk5LCAyMjYsIDIyNywgMzIsIDUzLCAyMzMsIDMzLCA2OSwgMSwgNCwgNjIsIDY5LCAxLCAKKyAgICA2MiwgNjksIDEsIDQsIDcwLCA2OSwgMSwgNzAsIDY5LCAxLCA0LCA2NiwgNjksIDEsIDY2LCA2OSwgMSwgNCwgNzIsIDY5LCAKKyAgICAxLCA3MiwgNjksIDEsIDQsIDc0LCA2OSwgMSwgNzQsIDY5LCAxLCAxNjEsIDY5LCAxLCAyMzYsIDg5LCA2OSwgMSwgMjI2LCAKKyAgICAxNjMsIDY5LCAxLCAyMzUsIDE2MSwgNjksIDEsIDIyNiwgMTUsIDY5LCAxLCAyMzUsIDUwLCA2OSwgMSwgMjI3LCA4LCA2OSwgCisgICAgMSwgMjM2LCAxNSwgNjksIDEsIDIyNiwgODgsIDY5LCAxLCAyMzUsIDExNiwgNjksIDEsIDIxMiwgNjQsIDY5LCAxLCAxOTksIAorICAgIDExNCwgNjksIDEsIDIwOSwgMTgyLCA2OSwgMSwgMTk5LCAzNiwgNjksIDEsIDIwOCwgMjQsIDY5LCAxLCAxOTksIDMsIDY5LCAKKyAgICAxLCAyMTEsIDIwMiwgNjksIDEsIDE5OSwgODksIDY5LCAxLCAyMDksIDI5LCA2OSwgMSwgMTk5LCAxNCwgNjksIDEsIDIwNywgCisgICAgMzYsIDY5LCAxLCAyNDIsIDU4LCA2OSwgMSwgMjA2LCAxNSwgNjksIDEsIDI0MSwgNzYsIDY5LCAxLCA0LCAyMDQsIDIxNSwgCisgICAgNjksIDEsIDIwNCwgMjE1LCA2OSwgMSwgMjM5LCAxMzcsIDY5LCAxLCAyMDYsIDIwMSwgNjksIDEsIDI0MSwgMTc1LCA2OSwgCisgICAgMSwgMTM4LCA2OSwgMSwgMjQwLCAyMTEsIDY5LCAxLCAxODgsIDY5LCAxLCAyMTksIDE1MCwgNjksIDEsIDIxOCwgMTMzLCAKKyAgICA2OSwgMSwgMjIwLCAzNCwgNjksIDEsIDIxOCwgMjQxLCA2OSwgMSwgMTQ0LCA2OSwgMSwgMjQ5LCAxMzYsIDY5LCAxLCAxNzIsIAorICAgIDY5LCAxLCAyMzQsIDc1LCA2OSwgMSwgMjQ4LCAxODgsIDY5LCAxLCAyMTUsIDIwNCwgNjksIDEsIDIzMywgOTcsIDY5LCAxLCAKKyAgICAyNDgsIDM2LCA2OSwgMSwgMjE0LCAyMjQsIDY5LCAxLCAyMzQsIDEzOSwgNjksIDEsIDI0OSwgOCwgNjksIDEsIDIxNiwgNzMsIAorICAgIDY5LCAxLCAyMzMsIDIwNywgNjksIDEsIDI0OCwgMTI0LCA2OSwgMSwgMjE1LCAxMDYsIDY5LCAxLCAxNzgsIDY5LCAxLCAKKyAgICAyMjEsIDIxMSwgNjksIDEsIDIyMSwgNDEsIDY5LCAxLCAyMjIsIDc2LCA2OSwgMSwgMjIxLCAxMzYsIDY5LCAxLCA0LCAxODMsIAorICAgIDY5LCAxLCAxODMsIDY5LCAxLCA0LCAxOTksIDIxMSwgNjksIDEsIDE5OSwgMjExLCA2OSwgMSwgNCwgMTk5LCAyNDUsIDY5LCAKKyAgICAxLCAxOTksIDI0NSwgNjksIDEsIDIxMywgMjUyLCA2OSwgMSwgMjEzLCA4OCwgNjksIDEsIDIxMiwgMTc1LCA2OSwgMSwgCisgICAgMjEzLCAxOTAsIDY5LCAxLCAyMTMsIDEsIDY5LCAxLCA0LCAyMDEsIDExNCwgNjksIDEsIDIwMSwgMTE0LCA2OSwgMSwgMjAxLCAKKyAgICAzMSwgNjksIDEsIDIwMSwgNjQsIDY5LCAxLCAyMDEsIDAsIDY5LCAxLCAyMjAsIDIxNCwgNjksIDEsIDIwMSwgMTY2LCA2OSwgCisgICAgMSwgNCwgMTYxLCA2OSwgMSwgNCwgMjI3LCA4LCA2OSwgMSwgMjAzLCA5MCwgNjksIDEsIDIwMiwgMjM0LCA2OSwgMSwgMjAzLCAKKyAgICA1OSwgNjksIDEsIDIwMiwgMTkzLCA2OSwgMTAxLCAyNDAsIDE4MiwgMjI3LCAzMiwgMjE0LCAyNDgsIDIwOSwgMSwgODEsIAorICAgIDY5LCAyMjgsIDEwLCA4MSwgNjksIDIwMiwgMTg5LCAyMjgsIDEwLCA4MSwgNjksIDI0MSwgMzUsIDIyNiwgNTUsIDI0OCwgCisgICAgMTAyLCAxLCAyNTAsIDEwMywgMjQ4LCAxMDIsIDEsIDIxNiwgMjI2LCAyNDgsIDEwMiwgMSwgMjIzLCAyNDMsIDI0OCwgMTAyLCAKKyAgICAxLCAyMzgsIDUsIDI0OCwgMTAyLCAxLCAyNDIsIDE1MywgMjQ4LCAxMDIsIDEsIDIwNywgODMsIDI0OCwgMTAyLCAxLCAyMjAsIAorICAgIDIxNCwgMjQ4LCAxMDIsIDEsIDE1NiwgMjQ4LCAxMDIsIDEsIDIzNiwgMTU2LCAyNDgsIDEwMiwgMSwgMjI3LCAxMTgsIDI0OCwgCisgICAgMTAyLCAxLCAyMzQsIDI0NywgMjQ4LCAxMDIsIDEsIDIyNywgMjUxLCAyNDgsIDEwMiwgMSwgMjE0LCAxNjcsIDI0OCwgMTAyLCAKKyAgICAxLCAyMDAsIDE5NSwgMjQ4LCAxMDIsIDEsIDE5OSwgNzgsIDI0OCwgMTAyLCAxLCAyNDcsIDM4LCAyNDgsIDEwMiwgMSwgCisgICAgMjEwLCAxMTYsIDI0OCwgMTAyLCAxLCAxNDYsIDI0OCwgMTAyLCAxLCAxOTksIDE1NywgMjQ4LCAxMDIsIDEsIDI0NywgMjIzLCAKKyAgICAyNDgsIDEwMiwgMSwgMjEyLCAxMjIsIDI0OCwgMTAyLCAxLCA2MiwgMjQ4LCAxMDIsIDEsIDc0LCAyNDgsIDEwMiwgMSwgNzIsIAorICAgIDI0OCwgMTAyLCAxLCAyMzgsIDI0MSwgMjQ4LCAxMDIsIDEsIDI1MSwgMTc2LCAyNDgsIDEwMiwgMSwgMjM4LCAyMzQsIDI0OCwgCisgICAgMTAyLCAxLCAyNTAsIDEzOSwgMjQ4LCAxMDIsIDEsIDIxNywgMywgMjQ4LCAxMDIsIDEsIDI1MSwgODUsIDI0OCwgMTAyLCAxLCAKKyAgICAyMzgsIDE3OSwgMjQ4LCAxMDIsIDEsIDI1MSwgNzYsIDI0OCwgMTAyLCAxLCAyMzgsIDE2NSwgMjQ4LCAxMDIsIDEsIDIzOCwgCisgICAgMTE1LCAyNDgsIDEwMiwgMSwgNzAsIDI0OCwgMTAyLCAxLCA2NiwgMjQ4LCAxMDIsIDEsIDIyOCwgOCwgMjQ4LCAxMDIsIDEsIAorICAgIDIwMywgMTY4LCAyNDgsIDEwMiwgMSwgMjE5LCAyNTUsIDI0OCwgMTAyLCAxLCAyMzUsIDEyMCwgMjQ4LCAxMDIsIDEsIDIyOCwgCisgICAgMTUyLCAyOSwgMSwgMjI2LCAxMjEsIDI5LCAxLCAyMDgsIDE3MSwgMjksIDEsIDIyNiwgMTE0LCAyOSwgMSwgMjE5LCAxNDMsIAorICAgIDI5LCAxLCAyMTksIDE0MSwgMjksIDEsIDIxOSwgMTQwLCAyOSwgMSwgMjA1LCAyNTMsIDI5LCAxLCAyMDgsIDE2MCwgMjksIAorICAgIDEsIDIxMywgNzgsIDI5LCAxLCAyMTMsIDczLCAyOSwgMSwgMjEzLCA3MCwgMjksIDEsIDIxMywgNjMsIDI5LCAxLCAyMTMsIAorICAgIDU4LCAyOSwgMSwgMjEzLCA1MywgMjksIDEsIDIxMywgNjQsIDI5LCAxLCAyMTMsIDc2LCAyOSwgMSwgMjIxLCAxOTcsIDI5LCAKKyAgICAxLCAyMTUsIDE5MCwgMjksIDEsIDIwOCwgMTY4LCAyOSwgMSwgMjE1LCAxNzksIDI5LCAxLCAyMDksIDEyOSwgMjksIDEsIAorICAgIDIwOCwgMTY1LCAyOSwgMSwgMjI4LCAxNzQsIDI5LCAxLCAyNDYsIDE2OCwgMjksIDEsIDIwOCwgMTc1LCAyOSwgMSwgMjQ2LCAKKyAgICAyMzIsIDI5LCAxLCAyMjYsIDE4MywgMjksIDEsIDIwNiwgODAsIDI5LCAxLCAyMTUsIDIyNywgMjksIDEsIDIzNCwgNjYsIAorICAgIDI5LCAxLCA2MiwgMjksIDEsIDI1MSwgMjIxLCAyOSwgMSwgMTgzLCAyOSwgMSwgMjAwLCA5OCwgMjksIDEsIDIzOCwgMTQyLCAKKyAgICAyOSwgMSwgNzIsIDI5LCAxLCAyMDAsIDM4LCAyOSwgMSwgMjAwLCA1MSwgMjksIDEsIDc0LCAyOSwgMSwgMjAxLCAxMTQsIAorICAgIDI5LCAxLCAyMDEsIDExMCwgMjksIDEsIDIxNywgMTIxLCAyOSwgMSwgMTk5LCAyNDUsIDI5LCAxLCA2NiwgMjksIDEsIDIwMSwgCisgICAgNTAsIDI5LCAxLCAyMDEsIDY0LCAyOSwgMSwgMjAxLCAzMSwgMjksIDEsIDE5OSwgMjExLCAyOSwgMSwgMjM4LCA2OSwgMjksIAorICAgIDEsIDIwMCwgOSwgMjksIDEsIDcwLCAyOSwgMjM3LCA5MywgMjksIDEsIDIwOCwgMTY5LCAyOSwgMSwgMjE5LCAxMzMsIDI5LCAKKyAgICAxLCAyMTksIDEzNSwgMjksIDEsIDIxOSwgMTM4LCAyOSwgMSwgMjEzLCA3MSwgMjksIDEsIDIxMywgNTIsIDI5LCAxLCAyMTMsIAorICAgIDYwLCAyOSwgMSwgMjEzLCA2NSwgMjksIDEsIDIxMywgNTAsIDI5LCAxLCAyMjEsIDE5MCwgMjksIDEsIDIyMSwgMTg3LCAyOSwgCisgICAgMSwgMjIxLCAxOTEsIDI5LCAxLCAyMjcsIDUzLCAyOSwgMSwgMjE1LCAxODUsIDI5LCAxLCAyMTUsIDE3MSwgMjksIDEsIAorICAgIDIxNSwgMTc3LCAyOSwgMSwgMjE1LCAxNzQsIDI5LCAxLCAyMTUsIDE4OCwgMjksIDEsIDIxNSwgMTcyLCAyOSwgMSwgMjI3LCAKKyAgICA1MSwgMjksIDEsIDIyNywgNDksIDI5LCAxLCAyMDksIDEyMiwgMjksIDEsIDIwOSwgMTIwLCAyOSwgMSwgMjA5LCAxMTIsIAorICAgIDI5LCAxLCAyMDksIDExNywgMjksIDEsIDIwOSwgMTI3LCAyOSwgMSwgMjE2LCAxNDYsIDI5LCAxLCAyMDgsIDE3MiwgMjksIAorICAgIDEsIDIwMCwgMjgsIDI5LCAxLCAyMDAsIDI0LCAyOSwgMSwgMjAwLCAyNSwgMjksIDEsIDIyNywgNTIsIDI5LCAxLCAyMDgsIAorICAgIDE3MywgMjksIDEsIDIwMCwgMzQsIDI5LCAxLCAxOTksIDIzOSwgMjksIDEsIDE5OSwgMjM4LCAyOSwgMSwgMTk5LCAyNDEsIAorICAgIDI5LCAxLCAxOTksIDIwMiwgMjksIDEsIDE5OSwgMjAzLCAyOSwgMSwgMTk5LCAyMDYsIDI5LCAxLCAyNTAsIDI0NSwgMjksIAorICAgIDEsIDI1MCwgMjM5LCAxNDEsIDI1MSwgNTgsIDIyNCwgMTY1LCA4MSwgMTQxLCAyNTEsIDU4LCAyMTMsIDEwNiwgODEsIDE0MSwgCisgICAgMjUxLCA1OCwgMTEyLCA4MSwgMTQxLCAyNTEsIDU4LCAxMjAsIDgxLCAxNDEsIDI1MSwgNTgsIDEyNiwgODEsIDE0MSwgMjUxLCAKKyAgICA1OCwgMjM2LCAyMjksIDgxLCAxNDEsIDI1MSwgNTgsIDIwNSwgMTU4LCA4MSwgMTQxLCAyNTEsIDU4LCAxMDEsIDgxLCAxNDEsIAorICAgIDI1MSwgNTgsIDI0OCwgOTMsIDgxLCAxNDEsIDI1MSwgNTgsIDIzNywgNzMsIDgxLCAxNDEsIDI1MSwgNTgsIDIxMSwgMTk2LCAKKyAgICA4MSwgMTQxLCAyNTEsIDU4LCAyMDYsIDc1LCA4MSwgMTQxLCAyNTEsIDU4LCAyMzYsIDIyMiwgODEsIDE0MSwgMjUxLCA1OCwgCisgICAgMjM0LCAxMjQsIDgxLCAxNDEsIDI1MSwgNTgsIDIzOSwgMTgsIDgxLCAxNDEsIDI1MSwgNTgsIDIyMiwgMTgxLCA4MSwgMjQ4LCAKKyAgICAxMDIsIDEsIDI0OCwgMzYsIDI0OCwgMTAyLCAxLCAxOTksIDM2LCAyNDgsIDEwMiwgMSwgMjI3LCAyMDcsIDI0OCwgMTAyLCAKKyAgICAxLCAyMzUsIDUwLCAyNDgsIDEwMiwgMSwgMjM4LCAyNTUsIDI0OCwgMTAyLCAxLCAyMzgsIDE2MiwgMjQ4LCAxMDIsIDEsIAorICAgIDIxNywgNjMsIDI0OCwgMTAyLCAxLCAyMTcsIDY3LCAyNDgsIDEwMiwgMSwgMjI4LCAzNSwgMjQ4LCAxMDIsIDEsIDI1MSwgCisgICAgNjAsIDI0OCwgMTAyLCAxLCAyMjgsIDgzLCAyNDgsIDEwMiwgMSwgMjAzLCAyMzMsIDI0OCwgMTAyLCAxLCAyMjgsIDEzNCwgCisgICAgMjQ4LCAxMDIsIDEsIDIxOSwgMjMzLCAyNDgsIDEwMiwgMSwgMjUxLCAxNzAsIDI0OCwgMTAyLCAxLCAyNTAsIDEzNCwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MSwgMTAxLCAyNDgsIDEwMiwgMSwgMjE3LCA4NiwgMjQ4LCAxMDIsIDEsIDIxNywgNjksIDI0OCwgMTAyLCAKKyAgICAxLCAyMjgsIDgwLCAyNDgsIDEwMiwgNDcsIDEsIDIxNiwgMjI2LCAyNDgsIDEwMiwgNDcsIDEsIDIwNywgODMsIDI0OCwgCisgICAgMTAyLCA0NywgMSwgMjI3LCAxMTgsIDI0OCwgMTAyLCA0NywgMSwgMjM0LCAyNDcsIDI0OCwgMTAyLCAxLCAyMzUsIDIwMCwgCisgICAgMjQ4LCAxMDIsIDEsIDIyNCwgMjI0LCAyNDgsIDEwMiwgMSwgMTk4LCAyMzksIDEyLCAyMDgsIDQ3LCAyMDcsIDgzLCAxMiwgCisgICAgMjA4LCA0NywgMjAxLCA0MiwgMTIsIDIwOCwgNDcsIDIwMCwgMTcwLCAxMiwgMjA4LCA0NywgMjQ3LCAyMzYsIDEyLCAyMDgsIAorICAgIDQ3LCAyMDcsIDE4NywgMTIsIDIwOCwgNDcsIDIzMywgMjMsIDEyLCAyMDgsIDQ3LCAyMzMsIDI3LCAxMiwgMjA4LCA0NywgCisgICAgMjMzLCAxMDYsIDEyLCAyMDgsIDQ3LCAyMzMsIDI0LCAxMiwgMjA4LCA0NywgMjA3LCA4NiwgMTIsIDIwOCwgNDcsIDIzMywgCisgICAgMjYsIDEyLCAyMDgsIDQ3LCAyMzMsIDIyLCAxMiwgMjA4LCA0NywgMjMzLCAxMDQsIDEyLCAyMDgsIDQ3LCAyMzMsIDI1LCAKKyAgICAxMiwgMjA4LCA0NywgMjMzLCAyMSwgMTIsIDIwOCwgNDcsIDIyMCwgMjE0LCAxMiwgMjA4LCA0NywgMjM0LCAyNDcsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMTIsIDEyMiwgMTIsIDIwOCwgNDcsIDIxNiwgMjI2LCAxMiwgMjA4LCA0NywgMjA4LCAyNDcsIDEyLCAyMDgsIAorICAgIDQ3LCAyNDIsIDE1MywgMTIsIDIwOCwgNDcsIDIzMywgMjgsIDEyLCAyMDgsIDQ3LCAyMzQsIDg1LCAxMiwgMjA4LCA0NywgCisgICAgMjA3LCA5NSwgMTIsIDIwOCwgNDcsIDIwNywgMTY2LCAxMiwgMjA4LCA0NywgMjA4LCAxMjMsIDEyLCAyMDgsIDQ3LCAyMTAsIAorICAgIDEyMiwgMTIsIDIwOCwgNDcsIDIxNiwgNzcsIDEyLCAyMDgsIDQ3LCAyMTQsIDE2OSwgMTIsIDIwOCwgNDcsIDIwNSwgMTg3LCAKKyAgICAxMiwgMjA4LCA0NywgMjA3LCA4NSwgMTIsIDIwOCwgNDcsIDIwNywgMTc3LCAxMiwgMjA4LCA0NywgMjMzLCAzNywgMTIsIAorICAgIDIwOCwgNDcsIDIzMywgMjAsIDEyLCAyMDgsIDQ3LCAyMTUsIDI0NywgMTIsIDIwOCwgNDcsIDIxNCwgMTY3LCA2OSwgMSwgNCwgCisgICAgMjI2LCAxNSwgNjksIDEsIDQsIDIwOSwgMTgyLCA2OSwgMSwgNCwgMjA4LCAyNCwgNjksIDEsIDQsIDEzOCwgNjksIDEsIDQsIAorICAgIDIxOCwgMTMzLCA2OSwgMSwgNCwgMTQ0LCA2OSwgMSwgNCwgMjM0LCA3NSwgNjksIDEsIDQsIDIzMywgOTcsIDY5LCAxLCA0LCAKKyAgICAyMzQsIDEzOSwgNjksIDEsIDQsIDIzMywgMjA3LCA2OSwgMSwgNCwgMjIxLCA0MSwgNjksIDEsIDQsIDIxMywgMjUyLCA2OSwgCisgICAgMSwgNCwgMjEzLCA4OCwgNjksIDEsIDQsIDIxMiwgMTc1LCA2OSwgMSwgNCwgMjEzLCAxOTAsIDY5LCAxLCA0LCAyMTMsIDEsIAorICAgIDEwNiwgMjksIDIyNiwgMTIxLCAxMDYsIDI5LCAyMTksIDE0MywgMTA2LCAyOSwgMjA1LCAyNTMsIDEwNiwgMjksIDIxMywgCisgICAgNzgsIDEwNiwgMjksIDIyMSwgMTk3LCAxMDYsIDI5LCAyMTUsIDE5MCwgMTA2LCAyOSwgMjA5LCAxMjksIDEwNiwgMjksIAorICAgIDIyOCwgMTc0LCAxMDYsIDI5LCAyNDYsIDE2OCwgMTA2LCAyOSwgMjQ2LCAyMzIsIDEwNiwgMjksIDIyNiwgMTgzLCAxMDYsIAorICAgIDI5LCAyMDYsIDgwLCAxMDYsIDI5LCAyMTUsIDIyNywgMTA2LCAyOSwgMjM0LCA2NiwgMTA2LCAyOSwgMjI2LCAxMjIsIDYyLCAKKyAgICAxMDYsIDI5LCAyMTksIDE0NCwgNjIsIDEwNiwgMjksIDIwNSwgMjU0LCA2MiwgMTA2LCAyOSwgMjEzLCA3OSwgNjIsIDEwNiwgCisgICAgMjksIDIyMSwgMTk4LCA2MiwgMTA2LCAyOSwgMjE1LCAxOTEsIDYyLCAxMDYsIDI5LCAyMDksIDEzMCwgNjIsIDEwNiwgMjksIAorICAgIDIyOCwgMTc1LCA2MiwgMTA2LCAyOSwgMjQ2LCAxNjksIDYyLCAxMDYsIDI5LCAyNDYsIDIzMywgNjIsIDEwNiwgMjksIDIyNiwgCisgICAgMTg0LCA2MiwgMTA2LCAyOSwgMjA2LCA4MSwgNjIsIDEwNiwgMjksIDIxNSwgMjI4LCA2MiwgMTA2LCAyOSwgMjM0LCA2NywgCisgICAgNjIsIDEwNiwgMjksIDI0NiwgMTY5LCA2NiwgMTA2LCAyMjYsIDU5LCAxNzEsIDIxNywgMTAxLCAxMDYsIDIyNiwgNTksIAorICAgIDE3MSwgMTYzLCAyMzMsIDk3LCAxMDYsIDE5OCwgMTk4LCAxMDIsIDEwNiwgMTk4LCAxOTgsIDEwNSwgMTA2LCAxOTgsIDE5OCwgCisgICAgMTQ3LCAxMDYsIDE5OCwgMTk4LCAxNDksIDEwNiwgMTk4LCAxOTgsIDE2NCwgMTA2LCAxOTgsIDE5OCwgMTg3LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMTAsIDEzNSwgMTA2LCAxOTgsIDE5OCwgMTkyLCAxMDYsIDE5OCwgMTk4LCAyMTksIDExMywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjA2LCAxNjYsIDEwNiwgMTk4LCAxOTgsIDIyMSwgODEsIDEwNiwgMTk4LCAxOTgsIDIzNywgNzcsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwMSwgODIsIDEwNiwgMTk4LCAxOTgsIDIwMCwgMjQzLCAxMDYsIDE5OCwgMTk4LCAyMjIsIDIwLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMzksIDE3LCAxMDYsIDE5OCwgMTk4LCAyMDcsIDIyOCwgMTA2LCAxOTgsIDE5OCwgMjA4LCA3OSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjM0LCAxNDgsIDEwNiwgMTk4LCAxOTgsIDIwOSwgMjUsIDEwNiwgMTk4LCAxOTgsIDIyMCwgMTM1LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDgsIDIyOSwgMTA2LCAxOTgsIDE5OCwgMjM3LCA4OCwgMTA2LCAxOTgsIDE5OCwgMjQzLCA2MSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjI1LCAxNjUsIDEwNiwgMTk4LCAxOTgsIDIxMywgMTI3LCAxMDYsIDE5OCwgMTk4LCAyNDcsIDE2OCwgCisgICAgMTA2LCAxOTgsIDE5OCwgMjA4LCAyOSwgMTA2LCAxOTgsIDE5OCwgMjA3LCAyMTAsIDEwNiwgMTk4LCAxOTgsIDIzOCwgMTUyLCAKKyAgICAxMDYsIDE5OCwgMTk4LCAyMTMsIDExOSwgMTA2LCAxOTgsIDE5OCwgMjUxLCAxMjAsIDEwNiwgMTk4LCAxOTgsIDIzNywgCisgICAgMTE5LCAxMDYsIDE5OCwgMTk4LCAyMTMsIDExNywgMTA2LCAxOTgsIDE5OCwgMjEwLCAxNzQsIDEwNiwgMTk4LCAxOTgsIAorICAgIDIxMywgMTg5LCA0NCwgMTk4LCAxOTgsIDIxNCwgNzgsIDQ0LCAxOTgsIDE5OCwgMjI2LCAxNDYsIDQ0LCAxOTgsIDE5OCwgCisgICAgMjExLCAyMjEsIDQ0LCAxOTgsIDE5OCwgMjI2LCA1NSwgNDQsIDQxLCAyMDYsIDE2NywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCAKKyAgICA0NCwgNDEsIDIwNCwgMTYwLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjA2LCA2OCwgMjE3LCA3OSwgNjMsIAorICAgIDIwOCwgMTkzLCA0NCwgNDEsIDIzNiwgMjM2LCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjM3LCAxMDUsIDIxNywgCisgICAgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMDksIDkzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjEwLCAKKyAgICAxMzAsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMzgsIDIyMywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCAyMTYsIAorICAgIDEwNiwgNTQsIDQ0LCA0MSwgMjA0LCAxNjAsIDEwMiwgNDQsIDQxLCAyMDQsIDE2MCwgMTA1LCA0NCwgNDEsIDIwNCwgMTYwLCAKKyAgICAxNDcsIDQ0LCA0MSwgMjA0LCAxNjAsIDE0OSwgNDQsIDQxLCAyMDQsIDE2MCwgMTY0LCA0NCwgNDEsIDIwNCwgMTYwLCAxODcsIAorICAgIDQ0LCA0MSwgMjA0LCAxNjAsIDIxMCwgMTM1LCA0NCwgNDEsIDIwNCwgMTYwLCAxOTIsIDQ0LCA0MSwgMjA0LCAxNjAsIDIxOSwgCisgICAgMTEzLCA0NCwgNDEsIDIwNiwgNjcsIDQ0LCA0MSwgMjA2LCA2OCwgMTAyLCA0NCwgNDEsIDIwNiwgNjgsIDEwNSwgNDQsIDQxLCAKKyAgICAyMDYsIDY4LCAxNDcsIDQ0LCA0MSwgMjA2LCA2OCwgMTQ5LCA0NCwgNDEsIDIwNiwgNjgsIDE2NCwgNDQsIDI5LCAyMjYsIAorICAgIDEyMSwgNDQsIDI5LCAyMTksIDE0MywgNDQsIDI5LCAyMDUsIDI1MywgNDQsIDI5LCAyMTMsIDc4LCA0NCwgMjksIDIyMSwgCisgICAgMTk3LCA0NCwgMjksIDIxNSwgMTkwLCA0NCwgMjksIDIwOSwgMTI5LCA0NCwgMjksIDIyOCwgMTc0LCA0NCwgMjksIDI0NiwgCisgICAgMTY4LCA0NCwgMjksIDI0NiwgMjMyLCA0NCwgMjksIDIyNiwgMTgzLCA0NCwgMjksIDIwNiwgODAsIDQ0LCAyOSwgMjE1LCAKKyAgICAyMjcsIDQ0LCAyOSwgMjM0LCA2NiwgNDQsIDI5LCAyMjYsIDEyMiwgNjIsIDQ0LCAyOSwgMjE5LCAxNDQsIDYyLCA0NCwgMjksIAorICAgIDIwNSwgMjU0LCA2MiwgNDQsIDI5LCAyMTMsIDc5LCA2MiwgNDQsIDI5LCAyMjEsIDE5OCwgNjIsIDQ0LCAyOSwgMjE1LCAKKyAgICAxOTEsIDYyLCA0NCwgMjksIDIwOSwgMTMwLCA2MiwgNDQsIDI5LCAyMjgsIDE3NSwgNjIsIDQ0LCAyOSwgMjQ2LCAxNjksIAorICAgIDYyLCA0NCwgMjksIDI0NiwgMjMzLCA2MiwgNDQsIDI5LCAyMjYsIDE4NCwgNjIsIDQ0LCAyOSwgMjA2LCA4MSwgNjIsIDQ0LCAKKyAgICAyOSwgMjE1LCAyMjgsIDYyLCA0NCwgMjksIDIzNCwgNjcsIDYyLCA0NCwgMjI2LCA1OSwgMTcxLCAyNDcsIDI3LCA0NCwgCisgICAgMjI2LCA1OSwgMTcxLCAyMjcsIDE0MywgNDQsIDI5LCAyMjgsIDE3NSwgNjYsIDIyNiwgNTksIDIwOCwgMTEyLCA5OSwgNDQsIAorICAgIDE5OCwgMTk4LCAxMDIsIDQ0LCAxOTgsIDE5OCwgMTA1LCA0NCwgMTk4LCAxOTgsIDE0NywgNDQsIDE5OCwgMTk4LCAxNDksIAorICAgIDQ0LCAxOTgsIDE5OCwgMTY0LCA0NCwgMTk4LCAxOTgsIDE4NywgNDQsIDE5OCwgMTk4LCAyMTAsIDEzNSwgNDQsIDE5OCwgCisgICAgMTk4LCAxOTIsIDQ0LCAxOTgsIDE5OCwgMjE5LCAxMTMsIDQ0LCAxOTgsIDE5OCwgMjA2LCAxNjYsIDQ0LCAxOTgsIDE5OCwgCisgICAgMjIxLCA4MSwgNDQsIDE5OCwgMTk4LCAyMzcsIDc3LCA0NCwgMTk4LCAxOTgsIDIwMSwgODIsIDQ0LCAxOTgsIDE5OCwgMjAwLCAKKyAgICAyNDMsIDQ0LCAxOTgsIDE5OCwgMjIyLCAyMCwgNDQsIDE5OCwgMTk4LCAyMzksIDE3LCA0NCwgMTk4LCAxOTgsIDIwNywgCisgICAgMjI4LCA0NCwgMTk4LCAxOTgsIDIwOCwgNzksIDQ0LCAxOTgsIDE5OCwgMjM0LCAxNDgsIDQ0LCAxOTgsIDE5OCwgMjA5LCAKKyAgICAyNSwgNDQsIDE5OCwgMTk4LCAyMjAsIDEzNSwgNDQsIDE5OCwgMTk4LCAyMDgsIDIyOSwgNDQsIDE5OCwgMTk4LCAyMzcsIAorICAgIDg4LCA0NCwgMTk4LCAxOTgsIDI0MywgNjEsIDQ0LCAxOTgsIDE5OCwgMjI1LCAxNjUsIDQ0LCAxOTgsIDE5OCwgMjExLCAKKyAgICAxOTQsIDQ0LCAxOTgsIDE5OCwgMjIyLCAxODQsIDQ0LCAxOTgsIDE5OCwgMjM3LCAxMjksIDQ0LCAxOTgsIDE5OCwgMjA3LCAKKyAgICAyNDAsIDQ0LCAxOTgsIDE5OCwgMjM4LCA0NywgNDQsIDE5OCwgMTk4LCAyMTUsIDEwLCA0NCwgMTk4LCAxOTgsIDI1MCwgCisgICAgMTQzLCA0NCwgMTk4LCAxOTgsIDIyOCwgMTEsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxMTcsIDQ0LCAxOTgsIDE5OCwgMjQzLCAKKyAgICAyMCwgNDQsIDE5OCwgMTk4LCAyNDMsIDEwLCA0NCwgMTk4LCAxOTgsIDIzNCwgNTksIDQ0LCAxOTgsIDE5OCwgMjQ3LCA1NSwgCisgICAgNDQsIDE5OCwgMTk4LCAyMjQsIDU5LCA0NCwgMTk4LCAxOTgsIDIyNSwgMjgsIDQ0LCAxOTgsIDE5OCwgMjEzLCA0NiwgNDQsIAorICAgIDE5OCwgMTk4LCAyMjIsIDY3LCA0NCwgMTk4LCAxOTgsIDIxMywgMTQ0LCA0NCwgMTk4LCAxOTgsIDIwOCwgMjksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjA3LCAyMTAsIDQ0LCAxOTgsIDE5OCwgMjM4LCAxNTIsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxMTksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjUxLCAxMjAsIDQ0LCAxOTgsIDE5OCwgMjE5LCAxMjksIDQ0LCA0MSwgMjA2LCA2OCwgMTg3LCA0NCwgNDEsIAorICAgIDIwNiwgNjgsIDIxMCwgMTM1LCA0NCwgNDEsIDIwNiwgNjgsIDE5MiwgNDQsIDQxLCAyMDYsIDY4LCAyMTksIDExMywgNDQsIAorICAgIDQxLCAyMzYsIDIzNSwgNDQsIDQxLCAyMzYsIDIzNiwgMTAyLCA0NCwgNDEsIDIzNiwgMjM2LCAxMDUsIDQ0LCA0MSwgMjM2LCAKKyAgICAyMzYsIDE0NywgNDQsIDQxLCAyMzYsIDIzNiwgMTQ5LCA0NCwgNDEsIDIzNiwgMjM2LCAxNjQsIDQ0LCA0MSwgMjM2LCAyMzYsIAorICAgIDE4NywgNDQsIDQxLCAyMzYsIDIzNiwgMjEwLCAxMzUsIDQ0LCA0MSwgMjM2LCAyMzYsIDE5MiwgNDQsIDQxLCAyMzYsIDIzNiwgCisgICAgMjE5LCAxMTMsIDQ0LCA0MSwgMjM3LCAxMDQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjI3LCAyMzgsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjM3LCAxNDEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjIyLCAxNTIsIDE0MSwgMjA2LCAxNzgsIAorICAgIDE2LCAzNiwgMjUxLCAzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyMiwgMTE5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIyNywgMTQwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyNywgMTQxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI1MCwgCisgICAgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxMCwgMTUzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxNywgMTI3LCAKKyAgICAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxOCwgMjAyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMTcwLCA1MiwgCisgICAgMjM0LCA4NSwgNTIsIDIzOCwgMTExLCA1MiwgMjM4LCA1NywgMjI0LCAxODIsIDIyNCwgMjA5LCA1NCwgNDQsIDY5LCA2MiwgCisgICAgNDQsIDY5LCA3MCwgNDQsIDY5LCA2NiwgNDQsIDY5LCA3MiwgNDQsIDY5LCA3NCwgNDQsIDY5LCAxNjEsIDQ0LCA2OSwgMjI2LCAKKyAgICAxNjMsIDQ0LCA2OSwgMjI2LCAxNSwgNDQsIDY5LCAyMjcsIDgsIDQ0LCA2OSwgMjI2LCA4OCwgNDQsIDY5LCAyMTIsIDY0LCAKKyAgICA0NCwgNjksIDIwOSwgMTgyLCA0NCwgNjksIDIwOCwgMjQsIDQ0LCA2OSwgMjExLCAyMDIsIDQ0LCA2OSwgMjA5LCAyOSwgNDQsIAorICAgIDY5LCAyMDcsIDM2LCA0NCwgNjksIDIwNiwgMTUsIDQ0LCA2OSwgMjA0LCAyMTUsIDQ0LCA2OSwgMjA2LCAyMDEsIDQ0LCA2OSwgCisgICAgMTM4LCA0NCwgNjksIDE4OCwgNDQsIDY5LCAyMTksIDE1MCwgNDQsIDY5LCAyMTgsIDEzMywgNDQsIDY5LCAyMjAsIDM0LCAKKyAgICA0NCwgNjksIDIxOCwgMjQxLCA0NCwgNjksIDE0NCwgNDQsIDY5LCAyMzQsIDc1LCA0NCwgNjksIDIzMywgOTcsIDQ0LCA2OSwgCisgICAgMjM0LCAxMzksIDQ0LCA2OSwgMjMzLCAyMDcsIDQ0LCA2OSwgMTc4LCA0NCwgNjksIDIyMSwgMjExLCA0NCwgNjksIDIyMSwgCisgICAgNDEsIDQ0LCA2OSwgMjIyLCA3NiwgNDQsIDY5LCAyMjEsIDEzNiwgNDQsIDY5LCAxODMsIDQ0LCA2OSwgMTk5LCAyMTEsIDQ0LCAKKyAgICA2OSwgMTk5LCAyNDUsIDQ0LCA2OSwgMjEzLCAyNTIsIDQ0LCA2OSwgMjEzLCA4OCwgNDQsIDY5LCAyMTIsIDE3NSwgNDQsIAorICAgIDY5LCAyMTMsIDE5MCwgNDQsIDY5LCAyMTMsIDEsIDQ0LCA2OSwgMjAxLCAxMTQsIDQ0LCA2OSwgMjAxLCAzMSwgNDQsIDY5LCAKKyAgICAyMDEsIDY0LCA0NCwgNjksIDIwMSwgMCwgNTIsIDI1MSwgMjcsIDUyLCAyNTAsIDE5MCwgNTIsIDI1MSwgNTQsIDUyLCAyNTIsIAorICAgIDk2LCA1MiwgMjI4LCA4NSwgNTIsIDIyOCwgNTMsIDUyLCAyMDMsIDIzMSwgNTIsIDIzOCwgODQsIDUyLCAyMzgsIDI1MiwgCisgICAgNTIsIDIxNywgNjYsIDUyLCAyMTcsIDU5LCA1MiwgMjI3LCA4MCwgNTIsIDIyNywgNDUsIDUyLCAyMjcsIDQyLCA1MiwgMjM2LCAKKyAgICA0NSwgNTIsIDIzNiwgNTQsIDUyLCAyMzUsIDE1MCwgNTIsIDIzNSwgMTQ2LCA1MiwgMjI1LCAxOTQsIDUyLCAyMzUsIDEzOCwgCisgICAgNTIsIDIyNiwgMTM4LCA1MiwgMjI2LCAxMzcsIDUyLCAyMjYsIDEzNiwgNTIsIDIyNiwgMTM1LCA1MiwgMjM1LCAyMCwgNTIsIAorICAgIDIzNSwgMTksIDUyLCAyMjUsIDI0MiwgNTIsIDIyNSwgMjQ0LCA1MiwgMjI3LCAxLCA1MiwgMjI2LCA1NywgNTIsIDIyNiwgCisgICAgNjUsIDUyLCAyMTIsIDQ1LCA1MiwgMjEyLCA2LCA1MiwgMjA5LCAxMTAsIDUyLCAyMTAsIDE1OCwgNTIsIDIxMCwgMTU3LCAKKyAgICA1MiwgMjQyLCA1NCwgNTIsIDI0MSwgMTEzLCA1MiwgMjQwLCAxODMsIDUyLCAyMDUsIDE3NiwgNTIsIDIyMCwgMTMwLCA1MiwgCisgICAgMjE4LCAyMDMsIDUyLCAyMzQsIDIxOCwgNTIsIDIxNiwgMjA1LCA1MiwgMjE2LCAyMDQsIDUyLCAyNDksIDEzMywgNTIsIAorICAgIDIxNSwgMjAxLCA1MiwgMjE1LCAxNjQsIDUyLCAyMTUsIDE2NSwgNTIsIDI0OCwgMTU4LCA1MiwgMjMzLCA5NSwgNTIsIDIzMywgCisgICAgOTAsIDUyLCAyNDcsIDI1MCwgNTIsIDIzMywgNzQsIDUyLCAyMzQsIDExMSwgNTIsIDIxNiwgMSwgNTIsIDIxNiwgNDIsIDUyLCAKKyAgICAyMzQsIDk0LCA1MiwgMjE2LCAzOCwgNTIsIDIxNiwgNTYsIDUyLCAyNDgsIDI0NywgNTIsIDIxNSwgOTUsIDUyLCAyNDgsIAorICAgIDk4LCA1MiwgMjMzLCAxOTEsIDUyLCAyMTUsIDgyLCA1MiwgMjMzLCAxODIsIDUyLCAyMzMsIDE4NCwgNTIsIDIyMiwgMTk2LCAKKyAgICA1MiwgMjIyLCAxOTIsIDUyLCAyMjIsIDIwMSwgNTIsIDIyMiwgMTM5LCA1MiwgMjIyLCAxNjgsIDUyLCAyMjEsIDE3NiwgNTIsIAorICAgIDIyMSwgMTUxLCA1MiwgMjIxLCAxNTAsIDUyLCAyMjIsIDU2LCA1MiwgMjIyLCA1MywgNTIsIDIyMiwgNTcsIDUyLCAyMDAsIAorICAgIDEwOCwgNTIsIDIwMCwgMTA2LCA1MiwgMTk5LCAyMDAsIDUyLCAyMTMsIDE3LCA1MiwgMjEzLCAyMSwgNTIsIDIxMiwgMTQ4LCAKKyAgICA1MiwgMjEyLCAxNDIsIDUyLCAyMTMsIDE0MSwgNTIsIDIxMywgMTM4LCA1MiwgMjAxLCA4MCwgMTQxLCAyMDYsIDE3OCwgMTYsIAorICAgIDM2LCAyMzMsIDExNCwgMTk5LCA4MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTAyLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxMDUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE0NywgMTQxLCAKKyAgICAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTQ5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNjQsIAorICAgIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE4NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgCisgICAgMjEwLCAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE5MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjE5LCAxMTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNiwgMTY2LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzgsIDE5OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAKKyAgICAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNiwgNjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIzNiwgMjIzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzcsIDEwOCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA5LCAxMDAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIxMCwgCisgICAgMTMyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzgsIDIyOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjE5LCAxMTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTU5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1MywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAKKyAgICAxNDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTUwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMDQsIDE1NSwgNTIsIDIzMywgMTA1LCA1MiwgMjQyLCA1OCwgNTIsIDI1MCwgMTM5LCA1MiwgMTQ4LCA1MiwgCisgICAgMjE2LCAyNDksIDUyLCAyMTYsIDc4LCA1MiwgMjQwLCAyMTMsIDUyLCAyNDAsIDIxNCwgMjA4LCAxOTIsIDUyLCAyNDAsIAorICAgIDIxNCwgMjQyLCAyMDksIDUyLCAyMjgsIDgsIDUyLCAyMzgsIDExNCwgMjIwLCAxMzYsIDIzNCwgMTEyLCA1MiwgMjM4LCAKKyAgICAxMTQsIDIyMCwgMTM2LCAyMDcsIDEwNiwgNTIsIDIzOCwgMTE0LCAyMjAsIDEzNiwgMjA3LCAzLCA1MiwgMjM4LCAxMTQsIAorICAgIDIyMCwgMTM2LCAyMjIsIDUyLCA1MiwgMjQzLCAxMiwgNTIsIDIxNiwgMjExLCAyNTEsIDg3LCA1MiwgMTg4LCA1MiwgMjIxLCAKKyAgICA0MiwgNjIsIDUyLCAxNzgsIDUyLCAxNjEsIDUyLCAyMjcsIDExLCA1MiwgMjIyLCAxMTUsIDUyLCAyMzYsIDMzLCA1MiwgCisgICAgMjQ3LCAxNzQsIDUyLCAyMjcsIDEwLCA1MiwgMjE1LCAyNDgsIDUyLCAyMjAsIDEsIDUyLCAyMjEsIDQyLCAyMzgsIDUsIDUyLCAKKyAgICAyMjEsIDQyLCAyMzYsIDE1NiwgNTIsIDIyMSwgMjUyLCA1MiwgMjI2LCAyMDksIDUyLCAyMzMsIDI4LCA1MiwgMjI2LCAxNjUsIAorICAgIDUyLCAyMjEsIDIxMywgNTIsIDIzNSwgMTYzLCA1MiwgMjA2LCAxNywgNTIsIDIyMSwgNDIsIDE1NiwgNTIsIDIyMSwgMTQ0LCAKKyAgICA1MiwgMjQwLCAyMjMsIDUyLCAyMjYsIDEwMywgNTIsIDIzNywgMTUsIDUyLCAyMTksIDIzLCA1MiwgMjIxLCA0MiwgMjIzLCAKKyAgICAyNDMsIDUyLCAyMjEsIDE0MSwgNTIsIDI0NiwgOTIsIDUyLCAyMjYsIDk3LCA1MiwgMjIxLCAxNDIsIDIwOCwgMTkyLCA1MiwgCisgICAgMjQ2LCA5MywgMjA4LCAxOTIsIDUyLCAyMjMsIDI0NCwgMjA4LCAxOTIsIDUyLCAyMjYsIDk4LCAyMDgsIDE5MiwgNTIsIAorICAgIDIyMSwgMTQyLCAyNDIsIDIwOSwgNTIsIDI0NiwgOTMsIDI0MiwgMjA5LCA1MiwgMjIzLCAyNDQsIDI0MiwgMjA5LCA1MiwgCisgICAgMjI2LCA5OCwgMjQyLCAyMDksIDUyLCAyMjMsIDI0NCwgMTE5LCAyMTIsIDEyMiwgNTIsIDIyMywgMjQ0LCAxMTksIDIxMiwgCisgICAgMTIzLCAyMDgsIDE5MiwgNTIsIDE3MiwgNTIsIDIyNiwgNTAsIDUyLCAyMjEsIDQ1LCA1MiwgMjM1LCA5MSwgNTIsIDIxMywgCisgICAgMjM5LCA1MiwgMjEzLCAyNDAsIDExOSwgMjEyLCAxMjIsIDUyLCAyMTMsIDI0MCwgMTE5LCAyMTIsIDEyMywgMjA4LCAxOTIsIAorICAgIDUyLCAyMTQsIDIzNywgNTIsIDIxOCwgMTcxLCA1MiwgMjIxLCA0MiwgMjEyLCAxMjIsIDUyLCAyMjEsIDQzLCA1MiwgMjE0LCAKKyAgICAxODcsIDUyLCAyMTgsIDcxLCA1MiwgMjIxLCA0MiwgMjAzLCAxNjgsIDUyLCAyMjAsIDIzOCwgNTIsIDIyNSwgMjMyLCA1MiwgCisgICAgMjIwLCAyMzksIDIyMiwgNTYsIDUyLCAyMTQsIDE4NiwgNTIsIDIxOCwgNzAsIDUyLCAyMjEsIDQyLCAyMDEsIDE0NywgNTIsIAorICAgIDIyMCwgMjMyLCA1MiwgMjI1LCAyMzAsIDUyLCAyMjAsIDIzMywgMjIyLCA1NiwgNTIsIDIyNywgMTE5LCAyMTcsIDEwNiwgCisgICAgNTIsIDIyMywgMjQ0LCAyMTcsIDEwNiwgNTIsIDI1MSwgMTAxLCA1MiwgMjQ4LCA3MywgNTIsIDI0NywgMTAwLCA1MiwgMjQ3LCAKKyAgICA3NywgNTIsIDI0NywgMjI0LCAxMTksIDIyNiwgMjA5LCA1MiwgMjQ2LCA5MSwgNTIsIDI0MSwgMjI5LCA1MiwgMjM1LCA0LCAKKyAgICA1MiwgMTQ0LCA1MiwgMjMzLCAxMDYsIDUyLCAyMjgsIDExNywgNTIsIDIyNiwgMTEwLCA1MiwgMjI2LCA5OCwgMjQ3LCAxNDMsIAorICAgIDUyLCAyMjYsIDE3LCA1MiwgMjI0LCAxMTMsIDUyLCAyMjQsIDExMiwgNTIsIDIyNCwgOTksIDUyLCAyMjQsIDMsIDUyLCAKKyAgICAyMjIsIDExNiwgMjA5LCA1MywgNTIsIDIyMSwgMTc1LCA1MiwgMjIxLCAxMDgsIDUyLCAyMTUsIDI0NiwgNTIsIDIxNSwgCisgICAgMTA5LCA1MiwgMjE1LCA0NiwgNTIsIDIxNSwgNDQsIDUyLCAyMDgsIDE4MywgNTIsIDIwNywgMTkxLCA1MiwgMjAxLCA2NiwgCisgICAgNTIsIDIwMywgMTY5LCAxMTksIDIyMywgMjQzLCA1MiwgMzUsIDExOSwgMjIzLCAyNDMsIDE0MSwgMjA2LCAxNzgsIDE2LCAKKyAgICAzNiwgMjQxLCAyMzMsIDEwMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTA1LCAxNDEsIDIwNiwgMTc4LCAKKyAgICAxNiwgMzYsIDI0MSwgMjMzLCAxNDcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE0OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxODcsIDE0MSwgCisgICAgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxMCwgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAKKyAgICAxOTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxOSwgMTEzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDYsIDE2NiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM4LCAxOTksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDYsIAorICAgIDY5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzYsIDIyMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjM3LCAxMDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwOSwgMTAwLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTAsIDEzMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM4LCAKKyAgICAyMjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxOSwgMTEwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDQsIDE1OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTMsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTQ4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIAorICAgIDE1MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNCwgMTU2LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgCisgICAgMTU4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA2LCA2NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA2LCA2NiwgNTIsIDIzNiwgNzEsIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjQyLCAyNDcsIDIzNCwgMTIzLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIxMywgCisgICAgMTgzLCAyMzksIDE3LCAyMzQsIDg4LCAzNiwgMjQxLCA0NiwgMjUwLCAxNTYsIDIwNiwgMTA3LCAyNDgsIDI0MiwgMjM0LCAKKyAgICA4OCwgMzYsIDE5OSwgMjI0LCAyMzcsIDcsIDIzNCwgODgsIDM2LCAyMDEsIDEwNiwgMjM0LCA4OCwgMzYsIDI0MywgNjQsIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUwLCAyMTMsIDIzNCwgODgsIDM2LCAyMzMsIDE5OCwgMjA1LCAxODIsIDIzNCwgCisgICAgODgsIDM2LCA0LCAyMDYsIDI0NSwgMjM0LCA4OCwgMzYsIDIwNSwgMTEwLCAyMzQsIDg4LCAzNiwgMjE2LCA3MSwgMjM0LCAKKyAgICA4OCwgMzYsIDIwOCwgMTExLCAyMzQsIDg4LCAzNiwgMjM3LCAxMzEsIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDY4LCAKKyAgICAyMzQsIDg4LCAzNiwgMjIxLCAxMjgsIDIzNCwgODgsIDM2LCAyMzgsIDE1MSwgMjM0LCA4OCwgMzYsIDIzNywgOCwgMjM0LCAKKyAgICA4OCwgMzYsIDIwMCwgMjM2LCAyMTcsIDc5LCAyMDYsIDEwNywgMjQxLCAxNzEsIDIzNCwgODgsIDM2LCAyNTEsIDcsIDIzNCwgCisgICAgODgsIDM2LCAyNDMsIDQzLCAyMzQsIDg4LCAzNiwgMjQ4LCAxNTAsIDIwNiwgMzcsIDIzNCwgODgsIDM2LCAyMzUsIDg5LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA4LCAyMDgsIDI1MSwgMjYsIDIzNCwgODgsIDM2LCAyMTMsIDEwOSwgMjM0LCA4OCwgMzYsIDIyOCwgCisgICAgNzksIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMDYsIDI0NSwgMjM0LCA4OCwgMzYsIDIyMSwgNTksIDI0MywgMTQsIDIzNCwgCisgICAgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDIyLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MiwgMCwgMjAxLCA4MiwgMjM0LCAKKyAgICA4OCwgMzYsIDIwNiwgMTA3LCAyNDYsIDExOCwgMjM3LCA3NywgMjM0LCA4OCwgMzYsIDIyOCwgOTMsIDIzNCwgODgsIDM2LCAKKyAgICAyMzksIDExNCwgMjM0LCA4OCwgMzYsIDIxMywgMTEyLCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCA1MSwgMjM0LCA4OCwgCisgICAgMzYsIDIxNCwgMjU0LCAyMzQsIDg4LCAzNiwgMjQxLCAyNDksIDc2LCAyMDYsIDEwNywgMjI0LCAxOTYsIDIzNCwgODgsIDM2LCAKKyAgICAyMDYsIDEwNywgMjM3LCAxNjksIDIzNCwgODgsIDM2LCAyMTcsIDM5LCAyMzQsIDg4LCAzNiwgMjE3LCAxMzQsIDIzNCwgODgsIAorICAgIDM2LCAyNDEsIDE0MSwgMjM0LCA4OCwgMzYsIDI0MSwgMTYzLCAyMzQsIDg4LCAzNiwgMjI4LCAxMDgsIDIzNCwgODgsIDM2LCAKKyAgICAyNDgsIDYwLCAyMzQsIDg4LCAzNiwgMjQ2LCA3MiwgMjA1LCAxODYsIDIyMiwgNTksIDIzNCwgODgsIDM2LCAyMzYsIDQwLCAKKyAgICAyMDUsIDE4MiwgMjM0LCA4OCwgMzYsIDIxNCwgMTk2LCAyMDMsIDIxNywgMjM0LCA4OCwgMzYsIDIxNywgMzgsIDIzNCwgODgsIAorICAgIDM2LCAyMDYsIDEwNywgMjAxLCA1MiwgMjM0LCA4OCwgMzYsIDIxMywgMTAwLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI0NywgCisgICAgMTA2LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MCwgMjA5LCAyMDYsIDMxLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIAorICAgIDIyNywgMiwgMjA4LCA4MywgMjIxLCA2MywgMjM0LCA4OCwgMzYsIDI0MSwgMTA4LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIAorICAgIDIyMiwgMTQyLCAyMjIsIDE5NywgMjM0LCA4OCwgMzYsIDI1MiwgMSwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMDEsIDk5LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIzNSwgMjUzLCAyMDEsIDE2LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIyNywgCisgICAgMTQ5LCAyMjUsIDk2LCAyMzQsIDg4LCAzNiwgMjQwLCAyNTIsIDIzNCwgODgsIDM2LCAyMjQsIDE4MywgMjM0LCA4OCwgMzYsIAorICAgIDIyOCwgODIsIDIwNSwgMzYsIDIzNCwgODgsIDM2LCA0LCAyMTUsIDIyLCAyMzQsIDg4LCAzNiwgMjUxLCAxOTQsIDI0NiwgCisgICAgNjMsIDIzNCwgODgsIDM2LCAyNDgsIDI0NSwgMjQ2LCA2MywgMTEsIDUsIDIyOCwgMTIsIDExLCA1LCAyMjgsIDQsIDExLCA1LCAKKyAgICA3MCwgMTEsIDUsIDIyOCwgMzgsIDExLCA1LCAyMjgsIDE3NiwgMTEsIDUsIDIyOCwgMTU5LCAxMSwgNSwgMjI4LCAxNzgsIAorICAgIDExLCA1LCAyMjgsIDE3NywgMTEsIDUsIDI1MCwgMTU1LCAxMSwgNSwgMjUwLCAxMTQsIDExLCA1LCA2MiwgMTEsIDUsIDI1MSwgCisgICAgMjgsIDExLCA1LCAyMDMsIDIyOSwgMTEsIDUsIDIwMywgMjMyLCAxMSwgNSwgMjAzLCAyMzAsIDExLCA1LCAyMTcsIDExLCAKKyAgICAxMSwgNSwgMjE2LCAyMzUsIDExLCA1LCA3NCwgMTEsIDUsIDIxNywgNTQsIDExLCA1LCAyMzgsIDQ4LCAxMSwgNSwgNzIsIAorICAgIDExLCA1LCAyMDAsIDIxNiwgMTEsIDUsIDI0OCwgMTUyLCAxMSwgNSwgMjQ4LCAxNDgsIDExLCA1LCAyNDgsIDE4OCwgMTEsIAorICAgIDUsIDI0OCwgMTYzLCAxMSwgNSwgMjQ4LCAxNzcsIDExLCA1LCAyNDgsIDE3NiwgMTEsIDUsIDI0OCwgMTc5LCAxMSwgNSwgCisgICAgMjQ4LCAxNzgsIDExLCA1LCAyNDksIDU1LCAxMSwgNSwgMjQ5LCA0NywgMTEsIDUsIDI0OSwgMTM2LCAxMSwgNSwgMjQ5LCAKKyAgICA3OCwgMTEsIDUsIDI0OCwgNiwgMTEsIDUsIDI0OCwgMTAsIDExLCA1LCAyNDgsIDcsIDExLCA1LCAyNDgsIDk3LCAxMSwgNSwgCisgICAgMjQ4LCA3OCwgMTEsIDUsIDI0OCwgMTI0LCAxMSwgNSwgMjQ4LCAxMDMsIDExLCA1LCAyNDgsIDIwMywgMTEsIDUsIDI0OSwgCisgICAgOCwgMTEsIDUsIDI0OCwgMjE1LCAxMSwgNSwgMjQ3LCAyNDYsIDExLCA1LCAyNDcsIDI0MSwgMTEsIDUsIDI0OCwgMzYsIDExLCAKKyAgICA1LCAyNDgsIDUsIDExLCA1LCAyNDcsIDI1NCwgMTEsIDUsIDI0OCwgMywgMTEsIDUsIDI0NywgMjI5LCAxMSwgNSwgMjQ3LCAKKyAgICAyMjcsIDExLCA1LCAyNDcsIDIzNCwgMTEsIDUsIDI0NywgMjMyLCAxMSwgNSwgMjQ3LCAyMzAsIDExLCA1LCAyNDcsIDIzMSwgCisgICAgMTEsIDUsIDIxNSwgMTQyLCAxMSwgNSwgMjE1LCAxMzgsIDExLCA1LCAyMTUsIDIwNCwgMTEsIDUsIDIxNSwgMTU0LCAxMSwgCisgICAgNSwgMjE1LCAxNzAsIDExLCA1LCAyMTUsIDE5NywgMTEsIDUsIDIxNSwgMTkzLCAxMSwgNSwgMjE2LCA5NCwgMTEsIDUsIAorICAgIDIxNiwgODMsIDExLCA1LCAxNzIsIDExLCA1LCAyMTYsIDEzNSwgMTEsIDUsIDIxNCwgMjA2LCAxMSwgNSwgMjE0LCAyMDgsIAorICAgIDExLCA1LCAyMTQsIDIwNywgMTEsIDUsIDIxNSwgNjEsIDExLCA1LCAyMTUsIDQ5LCAxMSwgNSwgMjE1LCAxMDYsIDExLCA1LCAKKyAgICAyMTUsIDc3LCAxMSwgNSwgMjE0LCAxOTIsIDExLCA1LCAyMTQsIDE4OCwgMTEsIDUsIDIxNCwgMjI0LCAxMSwgNSwgMjE0LCAKKyAgICAyMDUsIDExLCA1LCAyMTQsIDE5NywgMTEsIDUsIDIxNCwgMjAzLCAxMSwgNSwgMjE0LCAxNzEsIDExLCA1LCAyMTQsIDE3MCwgCisgICAgMTEsIDUsIDIxNCwgMTc1LCAxMSwgNSwgMjE0LCAxNzQsIDExLCA1LCAyMTQsIDE3MiwgMTEsIDUsIDIxNCwgMTczLCAxMSwgCisgICAgNSwgMjQ5LCAyOSwgMTEsIDUsIDI0OSwgMjgsIDExLCA1LCAyNDksIDM1LCAxMSwgNSwgMjQ5LCAzMCwgMTEsIDUsIDI0OSwgCisgICAgMzIsIDExLCA1LCAyNDksIDMxLCAxMSwgNSwgMjQ5LCAzNCwgMTEsIDUsIDI0OSwgMzMsIDExLCA1LCAyNDksIDQxLCAxMSwgCisgICAgNSwgMjQ5LCA0MCwgMTEsIDUsIDI0OSwgNDQsIDExLCA1LCAyNDksIDQyLCAxMSwgNSwgMjQ5LCAyMCwgMTEsIDUsIDI0OSwgCisgICAgMjIsIDExLCA1LCAyNDksIDIxLCAxMSwgNSwgMjQ5LCAyNSwgMTEsIDUsIDI0OSwgMjQsIDExLCA1LCAyNDksIDI3LCAxMSwgCisgICAgNSwgMjQ5LCAyNiwgMTEsIDUsIDI0OSwgMzYsIDExLCA1LCAyNDksIDM5LCAxMSwgNSwgMjQ5LCAzNywgMTEsIDUsIDI0OSwgCisgICAgMTYsIDExLCA1LCAyNDksIDE1LCAxMSwgNSwgMjQ5LCAyMywgMTEsIDUsIDI0OSwgMTksIDExLCA1LCAyNDksIDE3LCAxMSwgCisgICAgNSwgMjQ5LCAxOCwgMTEsIDUsIDI0OSwgMTIsIDExLCA1LCAyNDksIDExLCAxMSwgNSwgMjQ5LCAxNCwgMTEsIDUsIDI0OSwgCisgICAgMTMsIDExLCA1LCAyMjAsIDk3LCAxMSwgNSwgMjIwLCA5NiwgMTEsIDUsIDIyMCwgMTAyLCAxMSwgNSwgMjIwLCA5OCwgMTEsIAorICAgIDUsIDIyMCwgOTksIDExLCA1LCAyMjAsIDEwMSwgMTEsIDUsIDIyMCwgMTAwLCAxMSwgNSwgMjIwLCAxMDUsIDExLCA1LCAKKyAgICAyMjAsIDEwNCwgMTEsIDUsIDIyMCwgMTA3LCAxMSwgNSwgMjIwLCAxMDYsIDExLCA1LCAyMjAsIDkzLCAxMSwgNSwgMjIwLCAKKyAgICA5MiwgMTEsIDUsIDIyMCwgOTUsIDExLCA1LCAyMjAsIDk0LCAxMSwgNSwgMjIwLCA4NiwgMTEsIDUsIDIyMCwgODUsIDExLCAKKyAgICA1LCAyMjAsIDkwLCAxMSwgNSwgMjIwLCA4OSwgMTEsIDUsIDIyMCwgODcsIDExLCA1LCAyMjAsIDg4LCAxMSwgNSwgMjIwLCAKKyAgICA4MCwgMTEsIDUsIDIyMCwgNzksIDExLCA1LCAyMjAsIDg0LCAxMSwgNSwgMjIwLCA4MywgMTEsIDUsIDIyMCwgODEsIDExLCAKKyAgICA1LCAyMjAsIDgyLCAxMSwgNSwgMjMzLCAyNTEsIDExLCA1LCAyMzMsIDI1MCwgMTEsIDUsIDIzNCwgMCwgMTEsIDUsIDIzMywgCisgICAgMjUyLCAxMSwgNSwgMjMzLCAyNTMsIDExLCA1LCAyMzMsIDI1NSwgMTEsIDUsIDIzMywgMjU0LCAxMSwgNSwgMjM0LCAzLCAKKyAgICAxMSwgNSwgMjM0LCAyLCAxMSwgNSwgMjM0LCA1LCAxMSwgNSwgMjM0LCA0LCAxMSwgNSwgMjMzLCAyNDIsIDExLCA1LCAyMzMsIAorICAgIDI0NCwgMTEsIDUsIDIzMywgMjQzLCAxMSwgNSwgMjMzLCAyNDcsIDExLCA1LCAyMzMsIDI0NiwgMTEsIDUsIDIzMywgMjQ5LCAKKyAgICAxMSwgNSwgMjMzLCAyNDgsIDExLCA1LCAyMzMsIDIzOCwgMTEsIDUsIDIzMywgMjM3LCAxMSwgNSwgMjMzLCAyNDUsIDExLCAKKyAgICA1LCAyMzMsIDI0MSwgMTEsIDUsIDIzMywgMjM5LCAxMSwgNSwgMjMzLCAyNDAsIDExLCA1LCAyMzMsIDIzMiwgMTEsIDUsIAorICAgIDIzMywgMjM2LCAxMSwgNSwgMjMzLCAyMzUsIDExLCA1LCAyMzMsIDIzMywgMTEsIDUsIDIzMywgMjM0LCAxMSwgNSwgMjIxLCAKKyAgICAxNDcsIDExLCA1LCAyMjEsIDE0NiwgMTEsIDUsIDIyMSwgMjExLCAxMSwgNSwgMjIxLCAxNTMsIDExLCA1LCAyMjEsIDE4MywgCisgICAgMTEsIDUsIDIyMSwgMjAxLCAxMSwgNSwgMjIxLCAxOTksIDExLCA1LCAyMjIsIDEyNywgMTEsIDUsIDIyMiwgMTIyLCAxMSwgCisgICAgNSwgMTc4LCAxMSwgNSwgMjIyLCAxNjQsIDExLCA1LCAyMjEsIDgsIDExLCA1LCAyMjEsIDcsIDExLCA1LCAyMjEsIDExLCAKKyAgICAxMSwgNSwgMjIxLCA5LCAxMSwgNSwgMjIxLCA3MywgMTEsIDUsIDIyMSwgNDcsIDExLCA1LCAyMjEsIDEzNiwgMTEsIDUsIAorICAgIDIyMSwgNzksIDExLCA1LCAyMjIsIDcsIDExLCA1LCAyMjIsIDc2LCAxMSwgNSwgMjIwLCAyNDQsIDExLCA1LCAyMjAsIDI0MCwgCisgICAgMTEsIDUsIDIyMSwgNDEsIDExLCA1LCAyMjEsIDQsIDExLCA1LCAyMjAsIDI1MywgMTEsIDUsIDIyMSwgMiwgMTEsIDUsIAorICAgIDIyMCwgMjE3LCAxMSwgNSwgMjIwLCAyMTYsIDExLCA1LCAyMjAsIDIyMiwgMTEsIDUsIDIyMCwgMjE5LCAxMSwgNSwgMjM3LCAKKyAgICA2NCwgMTEsIDUsIDIzNywgNTgsIDExLCA1LCAyMzcsIDExMiwgMTEsIDUsIDIzNywgNzksIDExLCA1LCAyMzcsIDE2MCwgMTEsIAorICAgIDUsIDIzNywgMTUxLCAxMSwgNSwgMjM3LCAxOTUsIDExLCA1LCAyMzcsIDE2NSwgMTEsIDUsIDIzNiwgMjIwLCAxMSwgNSwgCisgICAgMjM3LCAxMywgMTEsIDUsIDIzNiwgMjUwLCAxMSwgNSwgMjM2LCAxNzIsIDExLCA1LCAyMzYsIDE3MSwgMTEsIDUsIDIzNiwgCisgICAgMTg5LCAxMSwgNSwgMjM2LCAxNzcsIDExLCA1LCAyMzYsIDE3NSwgMTEsIDUsIDIzNiwgMTc2LCAxMSwgNSwgMjM2LCAxNTksIAorICAgIDExLCA1LCAyMzYsIDE1OCwgMTEsIDUsIDIzNiwgMTYyLCAxMSwgNSwgMjM2LCAxNjAsIDExLCA1LCAyMDIsIDIwMCwgMTEsIAorICAgIDUsIDIwMiwgMTk1LCAxMSwgNSwgMjAyLCAyMzQsIDExLCA1LCAyMDIsIDIwOSwgMTEsIDUsIDIwMiwgMjIzLCAxMSwgNSwgCisgICAgMjAyLCAyMjAsIDExLCA1LCAyMDIsIDIyNiwgMTEsIDUsIDIwMiwgMjI1LCAxMSwgNSwgMjAzLCA2NywgMTEsIDUsIDIwMywgCisgICAgNjIsIDExLCA1LCAyMDMsIDkwLCAxMSwgNSwgMjAzLCA3OSwgMTEsIDUsIDIwMiwgMTc1LCAxMSwgNSwgMjAyLCAxNzEsIDExLCAKKyAgICA1LCAyMDIsIDE5MywgMTEsIDUsIDIwMiwgMTc3LCAxMSwgNSwgMjAyLCAyMzcsIDExLCA1LCAyMDMsIDQ4LCAxMSwgNSwgCisgICAgMjAxLCAxNjAsIDExLCA1LCAyMDEsIDE1OCwgMTEsIDUsIDIwMSwgMTY2LCAxMSwgNSwgMjAxLCAxNjMsIDExLCA1LCAyMDEsIAorICAgIDE2MSwgMTEsIDUsIDIwMSwgMTYyLCAxMSwgNSwgMjAxLCAxNTEsIDExLCA1LCAyMDEsIDE1MCwgMTEsIDUsIDIwMSwgMTU1LCAKKyAgICAxMSwgNSwgMjAxLCAxNTQsIDExLCA1LCAyMDEsIDE1MiwgMTEsIDUsIDIwMSwgMTUzLCAxMSwgNSwgMjQwLCAyNDUsIDExLCAKKyAgICA1LCAyNDAsIDIzMiwgMTEsIDUsIDI0MSwgNzYsIDExLCA1LCAyNDEsIDE2LCAxMSwgNSwgMjQxLCA1MSwgMTEsIDUsIDI0MSwgCisgICAgNTYsIDExLCA1LCAyNDEsIDU1LCAxMSwgNSwgMjQxLCAyNDAsIDExLCA1LCAyNDEsIDIzNCwgMTEsIDUsIDI0MiwgNTgsIDExLCAKKyAgICA1LCAyNDIsIDQsIDExLCA1LCAyMzksIDExOSwgMTEsIDUsIDIzOSwgMTIwLCAxMSwgNSwgMjQwLCAxODIsIDExLCA1LCAyMzksIAorICAgIDE2NCwgMTEsIDUsIDI0MCwgMjExLCAxMSwgNSwgMjQwLCAxODQsIDExLCA1LCAyNDEsIDEwNiwgMTEsIDUsIDI0MSwgMTc1LCAKKyAgICAxMSwgNSwgMjQxLCAxMjcsIDExLCA1LCAyMzksIDExMCwgMTEsIDUsIDIzOSwgMTA4LCAxMSwgNSwgMjM5LCAxMzcsIDExLCAKKyAgICA1LCAyMzksIDExOCwgMTEsIDUsIDIzOSwgMTEzLCAxMSwgNSwgMjM5LCAxMTYsIDExLCA1LCAyMDUsIDIxMywgMTEsIDUsIAorICAgIDIwNSwgMjA1LCAxMSwgNSwgMjA2LCAxNSwgMTEsIDUsIDIwNSwgMjIzLCAxMSwgNSwgMjA2LCA1LCAxMSwgNSwgMjA2LCA3LCAKKyAgICAxMSwgNSwgMjA2LCA2LCAxMSwgNSwgMjA2LCAyMjYsIDExLCA1LCAyMDYsIDIxMiwgMTEsIDUsIDIwNywgMzYsIDExLCA1LCAKKyAgICAyMDYsIDIzNiwgMTEsIDUsIDIwNCwgMTk2LCAxMSwgNSwgMjA0LCAxOTUsIDExLCA1LCAyMDQsIDE5OCwgMTEsIDUsIDIwNCwgCisgICAgMTk3LCAxMSwgNSwgMjA1LCAxNDQsIDExLCA1LCAyMDUsIDEzNCwgMTEsIDUsIDEzOCwgMTEsIDUsIDIwNSwgMTU3LCAxMSwgCisgICAgNSwgMjA2LCAxMjgsIDExLCA1LCAyMDYsIDIwMSwgMTEsIDUsIDIwNiwgMTUzLCAxMSwgNSwgMjA0LCAxNzksIDExLCA1LCAKKyAgICAyMDQsIDE3NCwgMTEsIDUsIDIwNCwgMjE1LCAxMSwgNSwgMjA0LCAxOTQsIDExLCA1LCAyMDQsIDE4MCwgMTEsIDUsIDIwNCwgCisgICAgMTkyLCAxMSwgNSwgMjQxLCAxOTIsIDExLCA1LCAyNDEsIDE5MSwgMTEsIDUsIDI0MSwgMTk3LCAxMSwgNSwgMjQxLCAxOTMsIAorICAgIDExLCA1LCAyNDEsIDE5NCwgMTEsIDUsIDI0MSwgMTk2LCAxMSwgNSwgMjQxLCAxOTUsIDExLCA1LCAyNDEsIDIxMywgMTEsIAorICAgIDUsIDI0MSwgMjEyLCAxMSwgNSwgMjQxLCAyMjAsIDExLCA1LCAyNDEsIDIxNCwgMTEsIDUsIDI0MSwgMTgyLCAxMSwgNSwgCisgICAgMjQxLCAxODQsIDExLCA1LCAyNDEsIDE4MywgMTEsIDUsIDI0MSwgMTg3LCAxMSwgNSwgMjQxLCAxODYsIDExLCA1LCAyNDEsIAorICAgIDE5MCwgMTEsIDUsIDI0MSwgMTg4LCAxMSwgNSwgMjQxLCAyMDUsIDExLCA1LCAyNDEsIDIwOCwgMTEsIDUsIDI0MSwgMjA2LCAKKyAgICAxMSwgNSwgMjQxLCAxNzgsIDExLCA1LCAyNDEsIDE3NywgMTEsIDUsIDI0MSwgMTg1LCAxMSwgNSwgMjQxLCAxODEsIDExLCAKKyAgICA1LCAyNDEsIDE3OSwgMTEsIDUsIDI0MSwgMTgwLCAxMSwgNSwgMjIwLCA1MywgMTEsIDUsIDIyMCwgNTIsIDExLCA1LCAyMjAsIAorICAgIDYwLCAxMSwgNSwgMjIwLCA1NSwgMTEsIDUsIDIyMCwgNTYsIDExLCA1LCAyMjAsIDU3LCAxMSwgNSwgMjIwLCA2OSwgMTEsIAorICAgIDUsIDIyMCwgNjgsIDExLCA1LCAyMjAsIDc1LCAxMSwgNSwgMjIwLCA3MCwgMTEsIDUsIDIyMCwgNDUsIDExLCA1LCAyMjAsIAorICAgIDQ0LCAxMSwgNSwgMjIwLCA1MSwgMTEsIDUsIDIyMCwgNDYsIDExLCA1LCAyMjAsIDYxLCAxMSwgNSwgMjIwLCA2NywgMTEsIAorICAgIDUsIDIyMCwgNjUsIDExLCA1LCAyMjAsIDM3LCAxMSwgNSwgMjIwLCAzNiwgMTEsIDUsIDIyMCwgNDIsIDExLCA1LCAyMjAsIAorICAgIDQwLCAxMSwgNSwgMjIwLCAzOCwgMTEsIDUsIDIyMCwgMzksIDExLCA1LCAyMzMsIDIxNywgMTEsIDUsIDIzMywgMjE2LCAxMSwgCisgICAgNSwgMjMzLCAyMjMsIDExLCA1LCAyMzMsIDIxOCwgMTEsIDUsIDIzMywgMjIwLCAxMSwgNSwgMjMzLCAyMTksIDExLCA1LCAKKyAgICAyMzMsIDIyMiwgMTEsIDUsIDIzMywgMjIxLCAxMSwgNSwgMjMzLCAyMjksIDExLCA1LCAyMzMsIDIyNywgMTEsIDUsIDIzMywgCisgICAgMjMxLCAxMSwgNSwgMjMzLCAyMzAsIDExLCA1LCAyMzMsIDIxMCwgMTEsIDUsIDIzMywgMjExLCAxMSwgNSwgMjMzLCAyMTQsIAorICAgIDExLCA1LCAyMzMsIDIxMywgMTEsIDUsIDIzMywgMjE1LCAxMSwgNSwgMjMzLCAyMjQsIDExLCA1LCAyMzMsIDIyNiwgMTEsIAorICAgIDUsIDIzMywgMjI1LCAxMSwgNSwgMjMzLCAyMDksIDExLCA1LCAyMTksIDEwMiwgMTEsIDUsIDIxOSwgMTAwLCAxMSwgNSwgCisgICAgMjE5LCAxNTAsIDExLCA1LCAyMTksIDEwNSwgMTEsIDUsIDIxOSwgMTMyLCAxMSwgNSwgMjE5LCAxNDYsIDExLCA1LCAyMTksIAorICAgIDE0NSwgMTEsIDUsIDIyMCwgMTExLCAxMSwgNSwgMTg4LCAxMSwgNSwgMjIwLCAxMjcsIDExLCA1LCAyMTgsIDgxLCAxMSwgNSwgCisgICAgMjE4LCA4MywgMTEsIDUsIDIxOCwgODIsIDExLCA1LCAyMTgsIDIxNCwgMTEsIDUsIDIxOCwgMTk5LCAxMSwgNSwgMjE4LCAKKyAgICAyNDEsIDExLCA1LCAyMTgsIDIyNSwgMTEsIDUsIDIyMCwgMywgMTEsIDUsIDIyMCwgMzQsIDExLCA1LCAyMjAsIDE5LCAxMSwgCisgICAgNSwgMjE4LCA3NiwgMTEsIDUsIDIxOCwgNzIsIDExLCA1LCAyMTgsIDEzMywgMTEsIDUsIDIxOCwgODAsIDExLCA1LCAyMTgsIAorICAgIDc4LCAxMSwgNSwgMjE4LCA3OSwgMTEsIDUsIDIzNCwgMjYsIDExLCA1LCAyMzQsIDI1LCAxMSwgNSwgMjM0LCAzMSwgMTEsIAorICAgIDUsIDIzNCwgMjcsIDExLCA1LCAyMzQsIDI4LCAxMSwgNSwgMjM0LCAzMCwgMTEsIDUsIDIzNCwgMjksIDExLCA1LCAyMzQsIAorICAgIDM3LCAxMSwgNSwgMjM0LCAzNSwgMTEsIDUsIDIzNCwgMzksIDExLCA1LCAyMzQsIDM4LCAxMSwgNSwgMjM0LCAxOCwgMTEsIAorICAgIDUsIDIzNCwgMjAsIDExLCA1LCAyMzQsIDE5LCAxMSwgNSwgMjM0LCAyMiwgMTEsIDUsIDIzNCwgMjQsIDExLCA1LCAyMzQsIAorICAgIDIzLCAxMSwgNSwgMjM0LCAzMiwgMTEsIDUsIDIzNCwgMzQsIDExLCA1LCAyMzQsIDMzLCAxMSwgNSwgMjM0LCAxNCwgMTEsIAorICAgIDUsIDIzNCwgMTMsIDExLCA1LCAyMzQsIDIxLCAxMSwgNSwgMjM0LCAxNywgMTEsIDUsIDIzNCwgMTUsIDExLCA1LCAyMzQsIAorICAgIDE2LCAxMSwgNSwgMjM0LCA4LCAxMSwgNSwgMjM0LCA3LCAxMSwgNSwgMjM0LCAxMiwgMTEsIDUsIDIzNCwgMTEsIDExLCA1LCAKKyAgICAyMzQsIDksIDExLCA1LCAyMzQsIDEwLCAxMSwgNSwgMjI0LCAxNTIsIDExLCA1LCAyMjQsIDE0NCwgMTEsIDUsIDIyNCwgCisgICAgMjEwLCAxMSwgNSwgMjI0LCAxNjIsIDExLCA1LCAyMjQsIDIwMSwgMTEsIDUsIDIyNCwgMjAwLCAxMSwgNSwgMjI0LCAyMDQsIAorICAgIDExLCA1LCAyMjQsIDIwMiwgMTEsIDUsIDIyNSwgNjMsIDExLCA1LCAyMjUsIDUxLCAxMSwgNSwgMTk0LCAxMSwgNSwgMjI1LCAKKyAgICA3NCwgMTEsIDUsIDIyNCwgMjAsIDExLCA1LCAyMjQsIDE5LCAxMSwgNSwgMjI0LCAyMiwgMTEsIDUsIDIyNCwgMjEsIDExLCAKKyAgICA1LCAyMjQsIDY1LCAxMSwgNSwgMjI0LCA1MSwgMTEsIDUsIDIyNCwgMTEwLCAxMSwgNSwgMjI0LCA3MSwgMTEsIDUsIDIyNCwgCisgICAgMjI3LCAxMSwgNSwgMjI1LCA0MCwgMTEsIDUsIDIyNCwgMjQ0LCAxMSwgNSwgMjI0LCAxNCwgMTEsIDUsIDIyNCwgMTIsIDExLCAKKyAgICA1LCAyMjQsIDQyLCAxMSwgNSwgMjI0LCAxOCwgMTEsIDUsIDIyNCwgMTYsIDExLCA1LCAyMjQsIDE3LCAxMSwgNSwgMjIzLCAKKyAgICAyNDgsIDExLCA1LCAyMjMsIDI0NywgMTEsIDUsIDIyNCwgMiwgMTEsIDUsIDIyMywgMjUxLCAxMSwgNSwgMjIzLCAyNDksIAorICAgIDExLCA1LCAyMjMsIDI1MCwgMTEsIDUsIDIzNSwgMTM0LCAxMSwgNSwgMjM1LCAxMzMsIDExLCA1LCAyMzUsIDE2MSwgMTEsIAorICAgIDUsIDIzNSwgMTQ1LCAxMSwgNSwgMjM1LCAxNTMsIDExLCA1LCAyMzUsIDE1MiwgMTEsIDUsIDIzNSwgMTU1LCAxMSwgNSwgCisgICAgMjM1LCAxNTQsIDExLCA1LCAyMzYsIDQyLCAxMSwgNSwgMjM2LCAzNywgMTEsIDUsIDIzNiwgODksIDExLCA1LCAyMzYsIDUyLCAKKyAgICAxMSwgNSwgMjM1LCAyNSwgMTEsIDUsIDIzNSwgMjQsIDExLCA1LCAyMzUsIDI3LCAxMSwgNSwgMjM1LCAyNiwgMTEsIDUsIAorICAgIDIzNSwgOTQsIDExLCA1LCAyMzUsIDkyLCAxMSwgNSwgMjM1LCAxMTYsIDExLCA1LCAyMzUsIDEwMywgMTEsIDUsIDIzNSwgCisgICAgMjM5LCAxMSwgNSwgMjM1LCAyMzcsIDExLCA1LCAyMzYsIDE1LCAxMSwgNSwgMjM1LCAyNTAsIDExLCA1LCAyMzUsIDE0LCAKKyAgICAxMSwgNSwgMjM1LCAxMywgMTEsIDUsIDIzNSwgNTAsIDExLCA1LCAyMzUsIDIzLCAxMSwgNSwgMjM1LCAxNSwgMTEsIDUsIAorICAgIDIzNSwgMjIsIDExLCA1LCAyMjYsIDEyNywgMTEsIDUsIDIyNiwgMTIzLCAxMSwgNSwgMjI2LCAxNjMsIDExLCA1LCAyMjYsIAorICAgIDE0MSwgMTEsIDUsIDIyNiwgMTUyLCAxMSwgNSwgMjI2LCAxNTYsIDExLCA1LCAyMjYsIDE1NCwgMTEsIDUsIDIyNywgMzMsIAorICAgIDExLCA1LCAyMjcsIDE2LCAxMSwgNSwgMTYxLCAxMSwgNSwgMjI3LCA2MCwgMTEsIDUsIDIyNSwgMjQ5LCAxMSwgNSwgMjI1LCAKKyAgICAyNTQsIDExLCA1LCAyMjUsIDI1MSwgMTEsIDUsIDIyNiwgNTYsIDExLCA1LCAyMjYsIDUxLCAxMSwgNSwgMjI2LCA4OCwgMTEsIAorICAgIDUsIDIyNiwgNjMsIDExLCA1LCAyMjYsIDIzMywgMTEsIDUsIDIyNiwgMjE2LCAxMSwgNSwgMjI3LCA4LCAxMSwgNSwgMjI2LCAKKyAgICAyMzcsIDExLCA1LCAyMjUsIDIzNywgMTEsIDUsIDIyNSwgMjMzLCAxMSwgNSwgMjI2LCAxNSwgMTEsIDUsIDIyNSwgMjQ4LCAKKyAgICAxMSwgNSwgMjI1LCAyNDEsIDExLCA1LCAyMjUsIDI0NSwgMTEsIDUsIDIzNSwgMjIxLCAxMSwgNSwgMjM1LCAyMjAsIDExLCAKKyAgICA1LCAyMzUsIDIyNSwgMTEsIDUsIDIzNSwgMjIyLCAxMSwgNSwgMjM1LCAyMjQsIDExLCA1LCAyMzUsIDIyMywgMTEsIDUsIAorICAgIDIzNSwgMjMyLCAxMSwgNSwgMjM1LCAyMzEsIDExLCA1LCAyMzUsIDIzNSwgMTEsIDUsIDIzNSwgMjMzLCAxMSwgNSwgMjM1LCAKKyAgICAyMTIsIDExLCA1LCAyMzUsIDIxMSwgMTEsIDUsIDIzNSwgMjE0LCAxMSwgNSwgMjM1LCAyMTMsIDExLCA1LCAyMzUsIDIxNywgCisgICAgMTEsIDUsIDIzNSwgMjE2LCAxMSwgNSwgMjM1LCAyMTksIDExLCA1LCAyMzUsIDIxOCwgMTEsIDUsIDIzNSwgMjI3LCAxMSwgCisgICAgNSwgMjM1LCAyMjYsIDExLCA1LCAyMzUsIDIzMCwgMTEsIDUsIDIzNSwgMjI4LCAxMSwgNSwgMjM1LCAyMDcsIDExLCA1LCAKKyAgICAyMzUsIDIwNiwgMTEsIDUsIDIzNSwgMjE1LCAxMSwgNSwgMjM1LCAyMTAsIDExLCA1LCAyMzUsIDIwOCwgMTEsIDUsIDIzNSwgCisgICAgMjA5LCAxMSwgNSwgMjIxLCAyMzAsIDExLCA1LCAyMjEsIDIzMSwgMTEsIDUsIDIyMSwgMjQ5LCAxMSwgNSwgMjIxLCAyNDgsIAorICAgIDExLCA1LCAyMjEsIDI1MSwgMTEsIDUsIDIyMSwgMjUwLCAxMSwgNSwgMjIxLCAyMjEsIDExLCA1LCAyMjEsIDIyMywgMTEsIAorICAgIDUsIDIyMSwgMjIyLCAxMSwgNSwgMjIxLCAyMjYsIDExLCA1LCAyMjEsIDIyNSwgMTEsIDUsIDIyMSwgMjI4LCAxMSwgNSwgCisgICAgMjIxLCAyMjcsIDExLCA1LCAyMjEsIDIzMiwgMTEsIDUsIDIyMSwgMjM0LCAxMSwgNSwgMjIxLCAyMzMsIDExLCA1LCAyMjEsIAorICAgIDIxNywgMTEsIDUsIDIyMSwgMjE2LCAxMSwgNSwgMjIxLCAyMjQsIDExLCA1LCAyMjEsIDIyMCwgMTEsIDUsIDIyMSwgMjE4LCAKKyAgICAxMSwgNSwgMjIxLCAyMTksIDExLCA1LCAyMzMsIDQ3LCAxMSwgNSwgMjMzLCA0NiwgMTEsIDUsIDIzMywgNTMsIDExLCA1LCAKKyAgICAyMzMsIDQ4LCAxMSwgNSwgMjMzLCA1MCwgMTEsIDUsIDIzMywgNDksIDExLCA1LCAyMzMsIDUyLCAxMSwgNSwgMjMzLCA1MSwgCisgICAgMTEsIDUsIDIzMywgNTgsIDExLCA1LCAyMzMsIDU3LCAxMSwgNSwgMjMzLCA2MCwgMTEsIDUsIDIzMywgNTksIDExLCA1LCAKKyAgICAyMzMsIDM5LCAxMSwgNSwgMjMzLCAzOCwgMTEsIDUsIDIzMywgNDEsIDExLCA1LCAyMzMsIDQwLCAxMSwgNSwgMjMzLCA0MywgCisgICAgMTEsIDUsIDIzMywgNDIsIDExLCA1LCAyMzMsIDQ1LCAxMSwgNSwgMjMzLCA0NCwgMTEsIDUsIDIzMywgNTQsIDExLCA1LCAKKyAgICAyMzMsIDU2LCAxMSwgNSwgMjMzLCA1NSwgMTEsIDUsIDIxOSwgMTk4LCAxMSwgNSwgMjE5LCAyMDAsIDExLCA1LCAyMTksIAorICAgIDE5OSwgMTEsIDUsIDIxOSwgMjQzLCAxMSwgNSwgMjE5LCAyNDEsIDExLCA1LCAyMTksIDI1MywgMTEsIDUsIDIxOSwgMjQ2LCAKKyAgICAxMSwgNSwgMjE5LCAxNjAsIDExLCA1LCAyMTksIDE1OSwgMTEsIDUsIDIxOSwgMTYxLCAxMSwgNSwgMjE5LCAxNzAsIDExLCAKKyAgICA1LCAyMTksIDE2NywgMTEsIDUsIDIxOSwgMTc4LCAxMSwgNSwgMjE5LCAxNzIsIDExLCA1LCAyMTksIDIzNCwgMTEsIDUsIAorICAgIDIxOSwgMjQwLCAxMSwgNSwgMjE5LCAyMzYsIDExLCA1LCAyMzQsIDQ1LCAxMSwgNSwgMjM0LCA2MCwgMTEsIDUsIDIzNCwgCisgICAgNjksIDExLCA1LCAyMzQsIDE1NywgMTEsIDUsIDIzNCwgMTQ2LCAxMSwgNSwgMTQ0LCAxMSwgNSwgMjM0LCAxNjgsIDExLCA1LCAKKyAgICAyMzMsIDc2LCAxMSwgNSwgMjMzLCA3NSwgMTEsIDUsIDIzMywgNzgsIDExLCA1LCAyMzMsIDc3LCAxMSwgNSwgMjMzLCAxMTcsIAorICAgIDExLCA1LCAyMzMsIDEwOCwgMTEsIDUsIDIzMywgMjA3LCAxMSwgNSwgMjMzLCAxODAsIDExLCA1LCAyMzQsIDkwLCAxMSwgNSwgCisgICAgMjM0LCAxMzksIDExLCA1LCAyMzQsIDEwMiwgMTEsIDUsIDIwMSwgODUsIDExLCA1LCAyMDEsIDcwLCAxMSwgNSwgMjAxLCAKKyAgICAxMTQsIDExLCA1LCAyMDEsIDk2LCAxMSwgNSwgMjAwLCAyMDUsIDExLCA1LCAyMDAsIDIwNywgMTEsIDUsIDIwMCwgMjA2LCAKKyAgICAxMSwgNSwgMjAwLCAyMjksIDExLCA1LCAyMDEsIDAsIDExLCA1LCAyMDAsIDIzOSwgMTEsIDUsIDIwMSwgNDMsIDExLCA1LCAKKyAgICAyMDEsIDY0LCAxMSwgNSwgMjAxLCA0OSwgMTEsIDUsIDE5OSwgMjEsIDExLCA1LCAxOTksIDIwLCAxMSwgNSwgMTk5LCAzNiwgCisgICAgMTEsIDUsIDE5OSwgMjQsIDExLCA1LCAxOTksIDI5LCAxMSwgNSwgMTk5LCAzMSwgMTEsIDUsIDE5OSwgMzAsIDExLCA1LCAKKyAgICAxOTksIDk3LCAxMSwgNSwgMTk5LCA5NCwgMTEsIDUsIDE5OSwgMTE0LCAxMSwgNSwgMTk5LCAxMDEsIDExLCA1LCAxOTgsIAorICAgIDI1MiwgMTEsIDUsIDE5OCwgMjU0LCAxMSwgNSwgMTk4LCAyNTMsIDExLCA1LCAxOTksIDEwLCAxMSwgNSwgMTk5LCA5LCAxMSwgCisgICAgNSwgMTk5LCAxNCwgMTEsIDUsIDE5OSwgMTEsIDExLCA1LCAxOTksIDc5LCAxMSwgNSwgMTk5LCA4OSwgMTEsIDUsIDE5OSwgCisgICAgODMsIDExLCA1LCAxOTgsIDI0OCwgMTEsIDUsIDE5OCwgMjQ3LCAxMSwgNSwgMTk5LCAzLCAxMSwgNSwgMTk4LCAyNTEsIDExLCAKKyAgICA1LCAxOTgsIDI0OSwgMTEsIDUsIDE5OCwgMjUwLCAxMSwgNSwgMTk4LCAyMzQsIDExLCA1LCAxOTgsIDIzMywgMTEsIDUsIAorICAgIDE5OCwgMjM5LCAxMSwgNSwgMTk4LCAyMzcsIDExLCA1LCAxOTgsIDIzNSwgMTEsIDUsIDE5OCwgMjM2LCAxMSwgNSwgMjQ2LCAKKyAgICAxNDQsIDExLCA1LCAyNDYsIDEzNywgMTEsIDUsIDI0NiwgMTczLCAxMSwgNSwgMjQ2LCAxNTcsIDExLCA1LCAyNDYsIDE3MCwgCisgICAgMTEsIDUsIDI0NiwgMTY0LCAxMSwgNSwgMjQ2LCAxNzIsIDExLCA1LCAyNDYsIDE3MSwgMTEsIDUsIDI0NywgMTExLCAxMSwgCisgICAgNSwgMjQ3LCAxMDMsIDExLCA1LCAyNDcsIDE5MCwgMTEsIDUsIDI0NywgMTQ0LCAxMSwgNSwgMjQyLCAyMDQsIDExLCA1LCAKKyAgICAyNDIsIDIwNiwgMTEsIDUsIDI0MiwgMjA1LCAxMSwgNSwgMjQzLCA4LCAxMSwgNSwgMjQyLCAyNTMsIDExLCA1LCAyNDYsIAorICAgIDkxLCAxMSwgNSwgMjQzLCAyNSwgMTEsIDUsIDI0NywgNDAsIDExLCA1LCAyNDcsIDc2LCAxMSwgNSwgMjQ3LCA0NSwgMTEsIAorICAgIDUsIDI0MiwgMTc5LCAxMSwgNSwgMjQyLCAxNzcsIDExLCA1LCAyNDIsIDIxNCwgMTEsIDUsIDI0MiwgMjAyLCAxMSwgNSwgCisgICAgMjQyLCAxODUsIDExLCA1LCAyNDIsIDE5OSwgMTEsIDUsIDI0MiwgMTU2LCAxMSwgNSwgMjQyLCAxNTUsIDExLCA1LCAyNDIsIAorICAgIDE2OCwgMTEsIDUsIDI0MiwgMTYyLCAxMSwgNSwgMjQyLCAxNTcsIDExLCA1LCAyNDIsIDE1OSwgMTEsIDUsIDE5OCwgMjE3LCAKKyAgICAxMSwgNSwgMTk4LCAyMTYsIDExLCA1LCAxOTgsIDIyMywgMTEsIDUsIDE5OCwgMjE4LCAxMSwgNSwgMTk4LCAyMjAsIDExLCAKKyAgICA1LCAxOTgsIDIxOSwgMTEsIDUsIDE5OCwgMjIyLCAxMSwgNSwgMTk4LCAyMjEsIDExLCA1LCAxOTgsIDIyOSwgMTEsIDUsIAorICAgIDE5OCwgMjI4LCAxMSwgNSwgMTk4LCAyMzIsIDExLCA1LCAxOTgsIDIzMCwgMTEsIDUsIDE5OCwgMjEzLCAxMSwgNSwgMTk4LCAKKyAgICAyMTUsIDExLCA1LCAxOTgsIDIxNCwgMTEsIDUsIDE5OCwgMjI0LCAxMSwgNSwgMTk4LCAyMjcsIDExLCA1LCAxOTgsIDIyNSwgCisgICAgMTEsIDUsIDE5OCwgMjA2LCAxMSwgNSwgMTk4LCAyMTAsIDExLCA1LCAxOTgsIDIwOSwgMTEsIDUsIDE5OCwgMjA3LCAxMSwgCisgICAgNSwgMTk4LCAyMDgsIDExLCA1LCAxOTgsIDIwMCwgMTEsIDUsIDE5OCwgMTk5LCAxMSwgNSwgMTk4LCAyMDUsIDExLCA1LCAKKyAgICAxOTgsIDIwMywgMTEsIDUsIDE5OCwgMjAxLCAxMSwgNSwgMTk4LCAyMDIsIDExLCA1LCAyMTcsIDI1MCwgMTEsIDUsIDIxNywgCisgICAgMjQ5LCAxMSwgNSwgMjE3LCAyNTUsIDExLCA1LCAyMTcsIDI1MSwgMTEsIDUsIDIxNywgMjUyLCAxMSwgNSwgMjE3LCAyNTQsIAorICAgIDExLCA1LCAyMTcsIDI1MywgMTEsIDUsIDIxOCwgNCwgMTEsIDUsIDIxOCwgMywgMTEsIDUsIDIxOCwgNywgMTEsIDUsIDIxOCwgCisgICAgNiwgMTEsIDUsIDIxNywgMjQzLCAxMSwgNSwgMjE3LCAyNDQsIDExLCA1LCAyMTcsIDI0NywgMTEsIDUsIDIxNywgMjQ4LCAKKyAgICAxMSwgNSwgMjE4LCAwLCAxMSwgNSwgMjE4LCAyLCAxMSwgNSwgMjE3LCAyMzgsIDExLCA1LCAyMTcsIDI0NiwgMTEsIDUsIAorICAgIDIxNywgMjQyLCAxMSwgNSwgMjE3LCAyMzksIDExLCA1LCAyMTcsIDI0MCwgMTEsIDUsIDIxNywgMjMzLCAxMSwgNSwgMjE3LCAKKyAgICAyMzIsIDExLCA1LCAyMTcsIDIzNywgMTEsIDUsIDIxNywgMjM2LCAxMSwgNSwgMjE3LCAyMzQsIDExLCA1LCAyMTcsIDIzNSwgCisgICAgMTEsIDUsIDIwOSwgMTA4LCAxMSwgNSwgMTg3LCAxMSwgNSwgMjA5LCAxODIsIDExLCA1LCAyMDksIDExMSwgMTEsIDUsIAorICAgIDIwOSwgMTY5LCAxMSwgNSwgMjA5LCAxNzIsIDExLCA1LCAyMDksIDE3MCwgMTEsIDUsIDIxMSwgMjUxLCAxMSwgNSwgMjExLCAKKyAgICAyMzcsIDExLCA1LCAyMTIsIDY0LCAxMSwgNSwgMjEyLCAzLCAxMSwgNSwgMjA3LCAyMTgsIDExLCA1LCAyMDcsIDIyMCwgMTEsIAorICAgIDUsIDIwNywgMjE5LCAxMSwgNSwgMjA5LCA0LCAxMSwgNSwgMjA4LCAyNDksIDExLCA1LCAyMDksIDI5LCAxMSwgNSwgMjA5LCAKKyAgICA4LCAxMSwgNSwgMjEwLCAxMjcsIDExLCA1LCAyMTEsIDIwMiwgMTEsIDUsIDIxMCwgMTU2LCAxMSwgNSwgMjA3LCAxOTUsIAorICAgIDExLCA1LCAyMDcsIDE5MiwgMTEsIDUsIDIwOCwgMjQsIDExLCA1LCAyMDcsIDIxNywgMTEsIDUsIDIwNywgMTk5LCAxMSwgNSwgCisgICAgMjA3LCAyMDcsIDExLCA1LCAyMDcsIDk3LCAxMSwgNSwgMjA3LCA5NiwgMTEsIDUsIDIwNywgMTY1LCAxMSwgNSwgMjA3LCAKKyAgICAxMDUsIDExLCA1LCAyMDcsIDk5LCAxMSwgNSwgMjA3LCAxMDQsIDExLCA1LCAyMDgsIDE0MSwgMTEsIDUsIDIwOCwgMTQwLCAKKyAgICAxMSwgNSwgMjA4LCAxNDcsIDExLCA1LCAyMDgsIDE0MiwgMTEsIDUsIDIwOCwgMTQ0LCAxMSwgNSwgMjA4LCAxNDYsIDExLCAKKyAgICA1LCAyMDgsIDE0NSwgMTEsIDUsIDIwOCwgMTU2LCAxMSwgNSwgMjA4LCAxNTQsIDExLCA1LCAyMDgsIDE3OSwgMTEsIDUsIAorICAgIDIwOCwgMTU3LCAxMSwgNSwgMjA4LCAxMzYsIDExLCA1LCAyMDgsIDEzNSwgMTEsIDUsIDIwOCwgMTM5LCAxMSwgNSwgMjA4LCAKKyAgICAxMzcsIDExLCA1LCAyMDgsIDE1MCwgMTEsIDUsIDIwOCwgMTUzLCAxMSwgNSwgMjA4LCAxNTEsIDExLCA1LCAyMDgsIDEzMiwgCisgICAgMTEsIDUsIDIwOCwgMTMwLCAxMSwgNSwgMjA4LCAxMzQsIDExLCA1LCAyMDgsIDEzMywgMTEsIDUsIDIwOCwgMTI1LCAxMSwgCisgICAgNSwgMjA4LCAxMjQsIDExLCA1LCAyMDgsIDEyOSwgMTEsIDUsIDIwOCwgMTI4LCAxMSwgNSwgMjA4LCAxMjYsIDExLCA1LCAKKyAgICAyMDgsIDEyNywgMTEsIDUsIDE5OSwgNzIsIDExLCA1LCAxOTksIDcxLCAxMSwgNSwgMTk5LCA3NywgMTEsIDUsIDE5OSwgNzQsIAorICAgIDExLCA1LCAxOTksIDUxLCAxMSwgNSwgMTk5LCA1MywgMTEsIDUsIDE5OSwgNTIsIDExLCA1LCAxOTksIDU2LCAxMSwgNSwgCisgICAgMTk5LCA1NSwgMTEsIDUsIDE5OSwgNjAsIDExLCA1LCAxOTksIDU3LCAxMSwgNSwgMTk5LCA2NSwgMTEsIDUsIDE5OSwgNjQsIAorICAgIDExLCA1LCAxOTksIDY4LCAxMSwgNSwgMTk5LCA2NiwgMTEsIDUsIDE5OSwgNDcsIDExLCA1LCAxOTksIDQ2LCAxMSwgNSwgCisgICAgMTk5LCA1NCwgMTEsIDUsIDE5OSwgNTAsIDExLCA1LCAxOTksIDQ4LCAxMSwgNSwgMTk5LCA0OSwgMTEsIDUsIDE5OSwgMzksIAorICAgIDExLCA1LCAxOTksIDM4LCAxMSwgNSwgMTk5LCA0MywgMTEsIDUsIDE5OSwgNDIsIDExLCA1LCAxOTksIDQwLCAxMSwgNSwgCisgICAgMTk5LCA0MSwgMTEsIDUsIDI0NywgMTQsIDExLCA1LCAyNDcsIDEwLCAxMSwgNSwgMjQ3LCAzNywgMTEsIDUsIDI0NywgMjMsIAorICAgIDExLCA1LCAyNDYsIDE4OCwgMTEsIDUsIDI0NiwgMTg3LCAxMSwgNSwgMjQ2LCAxOTAsIDExLCA1LCAyNDYsIDE4OSwgMTEsIAorICAgIDUsIDI0NiwgMjAzLCAxMSwgNSwgMjQ2LCAyMDIsIDExLCA1LCAyNDYsIDIxMCwgMTEsIDUsIDI0NiwgMjA1LCAxMSwgNSwgCisgICAgMjQ2LCAyNDEsIDExLCA1LCAyNDYsIDIzOSwgMTEsIDUsIDI0NywgOCwgMTEsIDUsIDI0NiwgMjQ5LCAxMSwgNSwgMjQ2LCAKKyAgICAxODIsIDExLCA1LCAyNDYsIDE5MiwgMTEsIDUsIDI0NiwgMTg2LCAxMSwgNSwgMjQ2LCAxODMsIDExLCA1LCAyNDYsIDE4NSwgCisgICAgMTEsIDUsIDI0NiwgMTc1LCAxMSwgNSwgMjQ2LCAxNzQsIDExLCA1LCAyNDYsIDE3OSwgMTEsIDUsIDI0NiwgMTc4LCAxMSwgCisgICAgNSwgMjQ2LCAxNzYsIDExLCA1LCAyNDYsIDE3NywgMTEsIDUsIDIxMiwgMjExLCAxMSwgNSwgMjEyLCAyMTUsIDExLCA1LCAKKyAgICAyMTIsIDE5MywgMTEsIDUsIDIxMiwgMTk0LCAxMSwgNSwgMjEyLCAxOTgsIDExLCA1LCAyMTIsIDE5NywgMTEsIDUsIDIxMiwgCisgICAgMjAxLCAxMSwgNSwgMjEyLCAxOTksIDExLCA1LCAyMTIsIDIwNSwgMTEsIDUsIDIxMiwgMjA0LCAxMSwgNSwgMjEyLCAyMTAsIAorICAgIDExLCA1LCAyMTIsIDIwNiwgMTEsIDUsIDIxMiwgMTg5LCAxMSwgNSwgMjEyLCAxODcsIDExLCA1LCAyMTIsIDE5NSwgMTEsIAorICAgIDUsIDIxMiwgMTkyLCAxMSwgNSwgMjEyLCAxOTAsIDExLCA1LCAyMTIsIDE5MSwgMTEsIDUsIDIxMiwgMTgyLCAxMSwgNSwgCisgICAgMjEyLCAxODEsIDExLCA1LCAyMTIsIDE4NiwgMTEsIDUsIDIxMiwgMTg1LCAxMSwgNSwgMjEyLCAxODMsIDExLCA1LCAyMTIsIAorICAgIDE4NCwgMTEsIDUsIDIxOCwgMTk0LCAxMSwgNSwgMjE4LCAxOTMsIDExLCA1LCAyMTgsIDE5NiwgMTEsIDUsIDIxOCwgMTk1LCAKKyAgICAxMSwgNSwgMjE4LCAxODUsIDExLCA1LCAyMTgsIDE4NywgMTEsIDUsIDIxOCwgMTg2LCAxMSwgNSwgMjE4LCAxODksIDExLCAKKyAgICA1LCAyMTgsIDE4OCwgMTEsIDUsIDIxOCwgMTkyLCAxMSwgNSwgMjE4LCAxOTEsIDExLCA1LCAyMTgsIDE3OSwgMTEsIDUsIAorICAgIDIxOCwgMTc4LCAxMSwgNSwgMjE4LCAxODQsIDExLCA1LCAyMTgsIDE4MiwgMTEsIDUsIDIxOCwgMTgwLCAxMSwgNSwgMjE4LCAKKyAgICAxODEsIDExLCA1LCAyMTgsIDE3MywgMTEsIDUsIDIxOCwgMTcyLCAxMSwgNSwgMjE4LCAxNzcsIDExLCA1LCAyMTgsIDE3NiwgCisgICAgMTEsIDUsIDIxOCwgMTc0LCAxMSwgNSwgMjE4LCAxNzUsIDExLCA1LCAyMTAsIDc1LCAxMSwgNSwgMjEwLCA3MCwgMTEsIDUsIAorICAgIDIxMCwgMTE0LCAxMSwgNSwgMjEwLCA4NywgMTEsIDUsIDIwOSwgMjA5LCAxMSwgNSwgMjA5LCAyMTEsIDExLCA1LCAyMDksIAorICAgIDIxMCwgMTEsIDUsIDIwOSwgMjM0LCAxMSwgNSwgMjA5LCAyMzAsIDExLCA1LCAyMTAsIDgsIDExLCA1LCAyMDksIDI1NCwgCisgICAgMTEsIDUsIDIxMCwgNDMsIDExLCA1LCAyMTAsIDM2LCAxMSwgNSwgMjEwLCA2NSwgMTEsIDUsIDIxMCwgNTIsIDExLCA1LCAKKyAgICAyMDksIDIwNSwgMTEsIDUsIDIwOSwgMjAyLCAxMSwgNSwgMjA5LCAyMjAsIDExLCA1LCAyMDksIDIwOCwgMTEsIDUsIDIwOSwgCisgICAgMjA2LCAxMSwgNSwgMjA5LCAyMDcsIDExLCA1LCAyMDksIDE4NSwgMTEsIDUsIDIwOSwgMTg0LCAxMSwgNSwgMjA5LCAxOTEsIAorICAgIDExLCA1LCAyMDksIDE4OCwgMTEsIDUsIDIwOSwgMTg2LCAxMSwgNSwgMjA5LCAxODcsIDExLCA1LCAyMTMsIDIwNCwgMTEsIAorICAgIDUsIDIxMywgMTk4LCAxMSwgNSwgMjEzLCAyNTIsIDExLCA1LCAyMTMsIDIxMCwgMTEsIDUsIDIxMiwgMTUxLCAxMSwgNSwgCisgICAgMjEyLCAxNTMsIDExLCA1LCAyMTIsIDE1MiwgMTEsIDUsIDIxMiwgMjI5LCAxMSwgNSwgMjEyLCAyMTcsIDExLCA1LCAyMTMsIAorICAgIDEsIDExLCA1LCAyMTIsIDIzMywgMTEsIDUsIDIxMywgOTgsIDExLCA1LCAyMTMsIDE5MCwgMTEsIDUsIDIxMywgMTM3LCAxMSwgCisgICAgNSwgMjEyLCAxNDQsIDExLCA1LCAyMTIsIDE0MSwgMTEsIDUsIDIxMiwgMTc1LCAxMSwgNSwgMjEyLCAxNTAsIDExLCA1LCAKKyAgICAyMTIsIDE0NiwgMTEsIDUsIDIxMiwgMTQ3LCAxMSwgNSwgMjEyLCAxMjYsIDExLCA1LCAyMTIsIDEyNSwgMTEsIDUsIDIxMiwgCisgICAgMTMxLCAxMSwgNSwgMjEyLCAxMjksIDExLCA1LCAyMTIsIDEyNywgMTEsIDUsIDIxMiwgMTI4LCAxMSwgNSwgMjI3LCAxOTYsIAorICAgIDExLCA1LCAyMjcsIDE5NSwgMTEsIDUsIDIyNywgMjA3LCAxMSwgNSwgMjI3LCAxOTcsIDExLCA1LCAyMjcsIDIwMywgMTEsIAorICAgIDUsIDIyNywgMjAyLCAxMSwgNSwgMjI3LCAyMDUsIDExLCA1LCAyMjcsIDIwNCwgMTEsIDUsIDIyNywgMTM2LCAxMSwgNSwgCisgICAgMjI3LCAxMzUsIDExLCA1LCAyMjcsIDEzOCwgMTEsIDUsIDIyNywgMTM3LCAxMSwgNSwgMjI3LCAxNTMsIDExLCA1LCAyMjcsIAorICAgIDE1MSwgMTEsIDUsIDIyNywgMTY2LCAxMSwgNSwgMjI3LCAxNTUsIDExLCA1LCAyMjcsIDEyOSwgMTEsIDUsIDIyNywgMTI3LCAKKyAgICAxMSwgNSwgMjI3LCAxNDcsIDExLCA1LCAyMjcsIDEzNCwgMTEsIDUsIDIyNywgMTMxLCAxMSwgNSwgMjI3LCAxMzIsIDExLCAKKyAgICA1LCAyMjcsIDEyMSwgMTEsIDUsIDIyNywgMTIwLCAxMSwgNSwgMjI3LCAxMjUsIDExLCA1LCAyMjcsIDEyNCwgMTEsIDUsIAorICAgIDIyNywgMTIyLCAxMSwgNSwgMjI3LCAxMjMsIDExLCA1LCAyMTQsIDExMywgMTEsIDUsIDIxNCwgMTExLCAxMSwgNSwgMjE0LCAKKyAgICAxMjEsIDExLCA1LCAyMTQsIDExNCwgMTEsIDUsIDIxNCwgMTE4LCAxMSwgNSwgMjE0LCAxMTcsIDExLCA1LCAyMTQsIDEyMCwgCisgICAgMTEsIDUsIDIxNCwgMTE5LCAxMSwgNSwgMjE0LCA2NCwgMTEsIDUsIDIxNCwgNjEsIDExLCA1LCAyMTQsIDY2LCAxMSwgNSwgCisgICAgMjE0LCA2NSwgMTEsIDUsIDIxNCwgMTAwLCAxMSwgNSwgMjE0LCA5OSwgMTEsIDUsIDIxNCwgMTA5LCAxMSwgNSwgMjE0LCAKKyAgICAxMDMsIDExLCA1LCAyMTQsIDU2LCAxMSwgNSwgMjE0LCA1MiwgMTEsIDUsIDIxNCwgOTcsIDExLCA1LCAyMTQsIDYwLCAxMSwgCisgICAgNSwgMjE0LCA1OCwgMTEsIDUsIDIxNCwgNTksIDExLCA1LCAyMTQsIDM2LCAxMSwgNSwgMjE0LCAzNCwgMTEsIDUsIDIxNCwgCisgICAgNDYsIDExLCA1LCAyMTQsIDM5LCAxMSwgNSwgMjE0LCAzNywgMTEsIDUsIDIxNCwgMzgsIDExLCA1LCAyMjcsIDE4NSwgMTEsIAorICAgIDUsIDIyNywgMTg0LCAxMSwgNSwgMjI3LCAxOTEsIDExLCA1LCAyMjcsIDE4NiwgMTEsIDUsIDIyNywgMTg4LCAxMSwgNSwgCisgICAgMjI3LCAxODcsIDExLCA1LCAyMjcsIDE5MCwgMTEsIDUsIDIyNywgMTg5LCAxMSwgNSwgMjI3LCAxNzYsIDExLCA1LCAyMjcsIAorICAgIDE3OCwgMTEsIDUsIDIyNywgMTc3LCAxMSwgNSwgMjI3LCAxODEsIDExLCA1LCAyMjcsIDE4MCwgMTEsIDUsIDIyNywgMTgzLCAKKyAgICAxMSwgNSwgMjI3LCAxODIsIDExLCA1LCAyMjcsIDE3MiwgMTEsIDUsIDIyNywgMTcxLCAxMSwgNSwgMjI3LCAxNzksIDExLCAKKyAgICA1LCAyMjcsIDE3NSwgMTEsIDUsIDIyNywgMTczLCAxMSwgNSwgMjI3LCAxNzQsIDExLCA1LCAyMjcsIDE2OCwgMTEsIDUsIAorICAgIDIyNywgMTY3LCAxMSwgNSwgMjI3LCAxNzAsIDExLCA1LCAyMjcsIDE2OSwgMTEsIDUsIDIxOSwgNzUsIDExLCA1LCAyMTksIAorICAgIDc0LCAxMSwgNSwgMjE5LCA4MiwgMTEsIDUsIDIxOSwgNzYsIDExLCA1LCAyMTksIDc4LCAxMSwgNSwgMjE5LCA3NywgMTEsIAorICAgIDUsIDIxOSwgODEsIDExLCA1LCAyMTksIDc5LCAxMSwgNSwgMjE5LCA2NCwgMTEsIDUsIDIxOSwgNjUsIDExLCA1LCAyMTksIAorICAgIDcwLCAxMSwgNSwgMjE5LCA2OSwgMTEsIDUsIDIxOSwgNzMsIDExLCA1LCAyMTksIDcxLCAxMSwgNSwgMjE5LCA1OSwgMTEsIAorICAgIDUsIDIxOSwgNjgsIDExLCA1LCAyMTksIDYzLCAxMSwgNSwgMjE5LCA2MCwgMTEsIDUsIDIxOSwgNjEsIDExLCA1LCAyMTksIAorICAgIDU0LCAxMSwgNSwgMjE5LCA1MywgMTEsIDUsIDIxOSwgNTgsIDExLCA1LCAyMTksIDU3LCAxMSwgNSwgMjE5LCA1NSwgMTEsIAorICAgIDUsIDIxOSwgNTYsIDExLCA1LCAyMTgsIDI5LCAxMSwgNSwgMjE4LCAyOCwgMTEsIDUsIDIxOCwgNDEsIDExLCA1LCAyMTgsIAorICAgIDMzLCAxMSwgNSwgMjE4LCAzOCwgMTEsIDUsIDIxOCwgMzcsIDExLCA1LCAyMTgsIDQwLCAxMSwgNSwgMjE4LCAzOSwgMTEsIAorICAgIDUsIDIxOCwgMTQsIDExLCA1LCAyMTgsIDE2LCAxMSwgNSwgMjE4LCAxNSwgMTEsIDUsIDIxOCwgMjEsIDExLCA1LCAyMTgsIAorICAgIDIwLCAxMSwgNSwgMjE4LCAyNiwgMTEsIDUsIDIxOCwgMjIsIDExLCA1LCAyMTgsIDEyLCAxMSwgNSwgMjE4LCAxMCwgMTEsIAorICAgIDUsIDIxOCwgMTksIDExLCA1LCAyMTgsIDEzLCAxMSwgNSwgMjAwLCAxNjEsIDExLCA1LCAyMDAsIDE2MCwgMTEsIDUsIDIwMCwgCisgICAgMTY5LCAxMSwgNSwgMjAwLCAxNjMsIDExLCA1LCAyMDAsIDE2NSwgMTEsIDUsIDIwMCwgMTY0LCAxMSwgNSwgMjAwLCAxNjcsIAorICAgIDExLCA1LCAyMDAsIDE2NiwgMTEsIDUsIDIwMCwgMTQ5LCAxMSwgNSwgMjAwLCAxNTAsIDExLCA1LCAyMDAsIDE1NCwgMTEsIAorICAgIDUsIDIwMCwgMTUzLCAxMSwgNSwgMjAwLCAxNTksIDExLCA1LCAyMDAsIDE1NywgMTEsIDUsIDIwMCwgMTI3LCAxMSwgNSwgCisgICAgMjAwLCAxMjUsIDExLCA1LCAyMDAsIDE0MCwgMTEsIDUsIDIwMCwgMTMwLCAxMSwgNSwgMjAwLCAxMjgsIDExLCA1LCAyMDAsIAorICAgIDEyOSwgMTEsIDUsIDE5OSwgMjUxLCAxMSwgNSwgMTk5LCAyNDksIDExLCA1LCAyMDAsIDksIDExLCA1LCAxOTksIDI1MiwgCisgICAgMTEsIDUsIDIwMCwgMywgMTEsIDUsIDIwMCwgMiwgMTEsIDUsIDIwMCwgNiwgMTEsIDUsIDIwMCwgNCwgMTEsIDUsIDE5OSwgCisgICAgMTg5LCAxMSwgNSwgMTk5LCAxODgsIDExLCA1LCAxOTksIDE5MiwgMTEsIDUsIDE5OSwgMTkwLCAxMSwgNSwgMTk5LCAyMjUsIAorICAgIDExLCA1LCAxOTksIDIyMSwgMTEsIDUsIDE5OSwgMjQ1LCAxMSwgNSwgMTk5LCAyMjksIDExLCA1LCAxOTksIDE4MCwgMTEsIAorICAgIDUsIDE5OSwgMTc2LCAxMSwgNSwgMTk5LCAyMTEsIDExLCA1LCAxOTksIDE4NywgMTEsIDUsIDE5OSwgMTgzLCAxMSwgNSwgCisgICAgMTk5LCAxODQsIDExLCA1LCAxOTksIDE2MCwgMTEsIDUsIDE5OSwgMTU5LCAxMSwgNSwgMTk5LCAxNjcsIDExLCA1LCAxOTksIAorICAgIDE2MywgMTEsIDUsIDE5OSwgMTYxLCAxMSwgNSwgMTk5LCAxNjIsIDExLCA0MiwgMjE0LCAxMDAsIDExLCA0MiwgMjI0LCAKKyAgICAyMTAsIDExLCA0MiwgMjI2LCAxMjcsIDExLCA0MiwgMjE4LCAzMywgMTEsIDQyLCAyNDIsIDE2MiwgMTEsIDQyLCAyMDgsIAorICAgIDE0NywgMTEsIDQyLCAyMzUsIDIxOCwgMTEsIDQyLCAyMzUsIDI1MCwgMTEsIDQyLCAyMjEsIDIxMSwgMTEsIDQyLCAyMzMsIAorICAgIDQ3LCAxMSwgNDIsIDIyMywgMjUwLCAxMSwgNDIsIDI0OSwgMTYsIDExLCA0MiwgMjIxLCA3OSwgMTEsIDQyLCAxOTksIDI0NSwgCisgICAgMTEsIDQyLCAyMTQsIDE5MiwgMTEsIDQyLCAyMzMsIDQxLCAxMSwgNDIsIDIwNiwgMjI2LCAxMSwgNDIsIDIzNiwgODksIDExLCAKKyAgICA0MiwgMTk4LCAyNTEsIDExLCA0MiwgMjQyLCAxNTYsIDExLCA0MiwgMjQxLCAxODAsIDExLCA0MiwgMjQ4LCAzLCAxMSwgNDIsIAorICAgIDIzNSwgMjE0LCAxMSwgNDIsIDIxOCwgMjIsIDExLCA0MiwgMjA0LCAyMTUsIDExLCA0MiwgMjE3LCA1NCwgMTEsIDQyLCAKKyAgICAyMjcsIDE3MiwgMTEsIDQyLCAxOTksIDEwLCAxMSwgNDIsIDIxNCwgMTcxLCAxMSwgNDIsIDIzMywgMjQ5LCAxMSwgNDIsIAorICAgIDE5OSwgMjUxLCAxMSwgNDIsIDIwMSwgMTYyLCAxMSwgNDIsIDIwOSwgMTkxLCAxMSwgNDIsIDIwMywgNDgsIDExLCA0MiwgCisgICAgMTk5LCAxMTQsIDExLCA0MiwgMjI3LCAxNjYsIDExLCA0MiwgMjE3LCAyNDIsIDExLCA0MiwgMjI3LCAxNzAsIDExLCA0MiwgCisgICAgMjM1LCA5NCwgMTEsIDQyLCAyMjcsIDE5MCwgMTEsIDQyLCAyMDEsIDAsIDExLCA0MiwgMjM5LCAxMzcsIDExLCA0MiwgMjA5LCAKKyAgICAyMDcsIDExLCA0MiwgMjI0LCAyMDQsIDExLCA0MiwgMjQyLCAxNjgsIDExLCA0MiwgMjQyLCAyMDUsIDExLCA0MiwgMjQ2LCAKKyAgICAxNTcsIDExLCA0MiwgMjMzLCA0NCwgMTEsIDQyLCAyMTAsIDc1LCAxMSwgNDIsIDE5OCwgMjUwLCAxMSwgNDIsIDIwOSwgCisgICAgMjU0LCAxMSwgNDIsIDI0NywgOCwgMTEsIDQyLCAxOTgsIDIyMCwgMTEsIDQyLCAyMjAsIDEwMSwgMTEsIDQyLCAyMjcsIDgsIAorICAgIDIyNCwgMTUzLCAxLCAyNDksIDEzNiwgMjI0LCAxNTMsIDEsIDE3MiwgMjI0LCAxNTMsIDEsIDIxNSwgMjQ1LCAyMjQsIDE1MywgCisgICAgMSwgMjQyLCA1OCwgMjI0LCAxNTMsIDEsIDIwNywgMzYsIDIyNCwgMTUzLCAxLCAyMDYsIDEyMiwgMjI0LCAxNTMsIDEsIAorICAgIDIzNiwgODksIDIyNCwgMTUzLCAxLCAxNjEsIDIyNCwgMTUzLCAxLCAyMjYsIDIwNywgMjI0LCAxNTMsIDEsIDIyNywgMjQ4LCAKKyAgICAyMjQsIDE1MywgMSwgMjQ3LCAxOTAsIDIyNCwgMTUzLCAxLCAyNDcsIDM3LCAyMjQsIDE1MywgMSwgMjM5LCA5MywgMjI0LCAKKyAgICAxNTMsIDEsIDIwNSwgMzIsIDIyNCwgMTUzLCAxLCAyMDUsIDIyLCAyMjQsIDE1MywgMSwgMTc4LCAyMjQsIDE1MywgMSwgCisgICAgMTg4LCAyMjQsIDE1MywgMSwgMTk0LCAyMjQsIDE1MywgMSwgMjEyLCA2NCwgMjI0LCAxNTMsIDEsIDE5OSwgNzcsIDIyNCwgCisgICAgMTUzLCAxLCAxOTksIDExNCwgMjI0LCAxNTMsIDEsIDIxOSwgMjUzLCAyMjQsIDE1MywgMSwgMTQ0LCAyMjQsIDE1MywgMSwgCisgICAgMjAwLCAxODEsIDIyNCwgMTUzLCAxLCAyMzQsIDg0LCAyMjQsIDE1MywgMSwgMjM3LCAxOTUsIDIyNCwgMTUzLCAxLCAyMDEsIAorICAgIDExNCwgMjI0LCAxNTMsIDEsIDIxMCwgMTE0LCAyMjQsIDE1MywgMSwgMTgzLCAyMjQsIDE1MywgMSwgMjM1LCAxOTksIDIyNCwgCisgICAgMTUzLCAxLCA2MiwgMjI0LCAxNTMsIDEsIDI1MSwgMjIxLCAyMjQsIDE1MywgMSwgNzIsIDIyNCwgMTUzLCAxLCAyMzgsIDY5LCAKKyAgICAyMjQsIDE1MywgMSwgNzAsIDIyNCwgMTUzLCAxLCA3NCwgMjI0LCAxNTMsIDEsIDY2LCAyMjQsIDE1MywgMSwgMjA0LCAzMSwgCisgICAgMjI0LCAxNTMsIDEsIDIwNCwgMjUsIDIyNCwgMTUzLCAxLCAyMTcsIDEyMSwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIAorICAgIDIwNiwgMTUsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMTYyLCAyMTUsIDEwNiwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAKKyAgICAyMjEsIDI0MiwgMTY3LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgMjQ4LCAxMjQsIDIyNCwgMTUzLCAxLCAxNTAsIAorICAgIDIyMCwgMjIxLCAxODgsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAyMjcsIDIxNiwgMjI0LCAxNTMsIDIxNCwgMjEyLCAKKyAgICAyNDYsIDcwLCAyMjQsIDE1MywgMjE0LCAyMTIsIDIzNiwgMTgzLCAyMDgsIDc2LCA1MCwgNSwgMjM4LCAyNTUsIDUwLCA1LCAKKyAgICAyMzgsIDI1MSwgNTAsIDUsIDIzNCwgMTIwLCA1MCwgNSwgMjAxLCA1NywgNTAsIDUsIDIwMSwgNTYsIDUwLCA1LCAyMTYsIAorICAgIDYxLCA1MCwgNSwgMjQ4LCAxOTUsIDUwLCA1LCAyNDgsIDI1MiwgNTAsIDUsIDIyMiwgMTAyLCA1MCwgNSwgMjI2LCA0NSwgCisgICAgNTAsIDUsIDIyMSwgMjQzLCA1MCwgNSwgMjM2LCAyOCwgNTAsIDUsIDIzNywgMTQwLCA1MCwgNSwgMjAzLCA1NCwgNTAsIDUsIAorICAgIDIwNiwgMTkwLCA1MCwgNSwgMjA2LCAxMDQsIDUwLCA1LCAyNDEsIDkwLCA1MCwgNSwgMjQxLCA4NywgNTAsIDUsIDIyNSwgCisgICAgMzIsIDUwLCA1LCAyMTMsIDE2NywgNTAsIDUsIDI0MSwgMTYxLCA1MCwgNSwgMjIwLCA2NiwgNTAsIDUsIDIxMSwgMTkwLCAKKyAgICA1MCwgNSwgMjEwLCA2MywgNTAsIDUsIDE5OSwgODcsIDUwLCA1LCAxOTksIDY3LCA1MCwgNSwgMjQ3LCA2OCwgNTAsIDUsIAorICAgIDIyNywgMjI1LCA1MCwgNSwgMjE5LCA4OSwgNTAsIDUsIDIwMCwgNDgsIDUwLCA1LCAyMjcsIDUsIDUwLCA1LCAyMTksIDIyNiwgCisgICAgNTAsIDUsIDIzNiwgNywgNTAsIDUsIDIyMiwgNjQsIDUwLCA1LCAyMjAsIDI5LCA1MCwgNSwgMjE4LCA0OSwgNTAsIDUsIDcwLCAKKyAgICA1MCwgNSwgMjI4LCAxMTcsIDUwLCA1LCAyMzQsIDc1LCA1MCwgNSwgMjM0LCA1MywgNTAsIDUsIDIwMSwgMzEsIDUwLCA1LCAKKyAgICAyMDEsIDE4LCA1MCwgNSwgMjE1LCAyMDQsIDUwLCA1LCAyNDgsIDE5MywgNTAsIDUsIDI0OCwgMTg4LCA1MCwgNSwgMjIyLCAKKyAgICA5NSwgNTAsIDUsIDIyNiwgNDIsIDUwLCA1LCAyMjEsIDI0MCwgNTAsIDUsIDIzNiwgMjQsIDUwLCA1LCAyMzcsIDExMiwgNTAsIAorICAgIDUsIDIwMiwgMjM0LCA1MCwgNSwgMjA2LCAxNSwgNTAsIDUsIDIwNiwgODQsIDUwLCA1LCAyNDEsIDgyLCA1MCwgNSwgMjQxLCAKKyAgICA4NiwgNTAsIDUsIDIyNCwgMjEwLCA1MCwgNSwgMjEzLCA4OCwgNTAsIDUsIDI0MSwgNzYsIDUwLCA1LCAyMjAsIDYwLCA1MCwgCisgICAgNSwgMjA5LCAxODIsIDUwLCA1LCAyMTAsIDMzLCA1MCwgNSwgMTk5LCAzNiwgNTAsIDUsIDE5OSwgNjMsIDUwLCA1LCAyNDYsIAorICAgIDE3MywgNTAsIDUsIDIyNywgMjA3LCA1MCwgNSwgMjE5LCA4MiwgNTAsIDUsIDIwMCwgOSwgNTAsIDUsIDIyNiwgMTYzLCA1MCwgCisgICAgNSwgMjE5LCAyMTgsIDUwLCA1LCAyMzUsIDE2MSwgNTAsIDUsIDIyMSwgMjExLCA1MCwgNSwgMjE5LCAxNTAsIDUwLCA1LCAKKyAgICAyMTgsIDQxLCA1MCwgNSwgNjIsIDUwLCA1LCAyNTEsIDg1LCA1MCwgNSwgMjE5LCAyNDgsIDUwLCA1LCAxNDQsIDUwLCA1LCAKKyAgICAyMzQsIDIwMiwgNTAsIDUsIDIwMSwgMTE0LCA1MCwgNSwgMjAxLCAxMDAsIDUwLCA1LCAxNzIsIDUwLCA1LCAyNDgsIDIwMCwgCisgICAgNTAsIDUsIDI0OSwgMTM2LCA1MCwgNSwgMjIyLCAxMTAsIDUwLCA1LCAyMjYsIDUwLCA1MCwgNSwgMjI2LCA0OCwgNTAsIDUsIAorICAgIDIyMSwgMjQ3LCA1MCwgNSwgMjM2LCAzMiwgNTAsIDUsIDIzNywgMTk1LCA1MCwgNSwgMjAzLCA5MCwgNTAsIDUsIDIwNywgCisgICAgMzYsIDUwLCA1LCAyMDYsIDEyMiwgNTAsIDUsIDI0MSwgMTAwLCA1MCwgNSwgMjQxLCA4OSwgNTAsIDUsIDE5NCwgNTAsIDUsIAorICAgIDIxMywgMjUyLCA1MCwgNSwgMjQyLCA1OCwgNTAsIDUsIDIyMCwgNzUsIDUwLCA1LCAyMTIsIDY0LCA1MCwgNSwgMjEwLCAKKyAgICAxMTQsIDUwLCA1LCAxOTksIDExNCwgNTAsIDUsIDE5OSwgNzcsIDUwLCA1LCAyNDcsIDE5MCwgNTAsIDUsIDIyNywgMjQ4LCAKKyAgICA1MCwgNSwgMjE5LCA5OCwgNTAsIDUsIDE4MywgNTAsIDUsIDE2MSwgNTAsIDUsIDIyNywgNjgsIDUwLCA1LCAyMTksIDIzMiwgCisgICAgNTAsIDUsIDIzNiwgODksIDUwLCA1LCAxNzgsIDUwLCA1LCAxODgsIDUwLCA1LCAyMTgsIDYwLCA1MCwgNSwgMjE3LCA2MywgCisgICAgNTAsIDUsIDIxNywgNTgsIDUwLCA1LCAyMzMsIDE4OCwgNTAsIDUsIDIwMCwgMjQ0LCA1MCwgNSwgMjAwLCAyNDAsIDUwLCA1LCAKKyAgICAyMTUsIDgxLCA1MCwgNSwgMjQ4LCAxOTEsIDUwLCA1LCAyNDgsIDExMSwgNTAsIDUsIDIyMiwgOTAsIDUwLCA1LCAyMjYsIAorICAgIDQwLCA1MCwgNSwgMjIxLCAyMzYsIDUwLCA1LCAyMzYsIDIwLCA1MCwgNSwgMjM3LCAyLCA1MCwgNSwgMjAyLCAxNzksIDUwLCAKKyAgICA1LCAyMDUsIDE2MSwgNTAsIDUsIDIwNiwgNTYsIDUwLCA1LCAyNDEsIDc5LCA1MCwgNSwgMjQxLCA4NCwgNTAsIDUsIDIyNCwgCisgICAgNzgsIDUwLCA1LCAyMTIsIDIzOCwgNTAsIDUsIDI0MCwgMTg3LCA1MCwgNSwgMjIwLCA0NywgNTAsIDUsIDIwOSwgMTAsIDUwLCAKKyAgICA1LCAyMTAsIDIsIDUwLCA1LCAxOTksIDEyLCA1MCwgNSwgMTk5LCA1OCwgNTAsIDUsIDI0MywgMzAsIDUwLCA1LCAyMjcsIAorICAgIDE1NiwgNTAsIDUsIDIxOSwgNzIsIDUwLCA1LCAxOTksIDIzMCwgNTAsIDUsIDIyNiwgNjgsIDUwLCA1LCAyMTksIDIxNiwgCisgICAgNTAsIDUsIDIzNSwgMTA1LCA1MCwgNSwgMjIxLCA4NywgNTAsIDUsIDIxOCwgMjI5LCA1MCwgNSwgMjE4LCAyMywgNTAsIDUsIAorICAgIDY2LCA1MCwgNSwgMjA0LCA1LCA1MCwgNSwgMjMzLCA5NywgNTAsIDUsIDIzMywgODQsIDUwLCA1LCAyMDAsIDIxNiwgNTAsIAorICAgIDUsIDIwMCwgMjA5LCA1MCwgNSwgMjE0LCAyMjQsIDUwLCA1LCAyNDgsIDE5MCwgNTAsIDUsIDI0OCwgMzYsIDUwLCA1LCAKKyAgICAyMjIsIDg5LCA1MCwgNSwgMjI2LCAzOCwgNTAsIDUsIDIyMSwgMjM1LCA1MCwgNSwgMjM2LCAxOSwgNTAsIDUsIDIzNiwgCisgICAgMTg5LCA1MCwgNSwgMjAxLCAxNjYsIDUwLCA1LCAyMDQsIDIxNSwgNTAsIDUsIDIwNiwgMzUsIDUwLCA1LCAyNDEsIDc3LCAKKyAgICA1MCwgNSwgMjQxLCA4MywgNTAsIDUsIDIyNCwgNDIsIDUwLCA1LCAyMTIsIDE3NSwgNTAsIDUsIDIzOSwgMTM3LCA1MCwgNSwgCisgICAgMjIwLCA0MiwgNTAsIDUsIDIwOCwgMjQsIDUwLCA1LCAyMDksIDIyMCwgNTAsIDUsIDE5OSwgMywgNTAsIDUsIDE5OSwgNTQsIAorICAgIDUwLCA1LCAyNDIsIDIxNCwgNTAsIDUsIDIyNywgMTQ3LCA1MCwgNSwgMjE5LCA2OCwgNTAsIDUsIDE5OSwgMjExLCA1MCwgNSwgCisgICAgMjI2LCAxNSwgNTAsIDUsIDIxOSwgMjE1LCA1MCwgNSwgMjM1LCA1MCwgNTAsIDUsIDIyMSwgNDEsIDUwLCA1LCAyMTgsIAorICAgIDEzMywgNTAsIDUsIDIxOCwgMTksIDUwLCA1LCA3NCwgNTAsIDUsIDIxNywgNzgsIDUwLCA1LCAyMTksIDE3NCwgNTAsIDUsIAorICAgIDIzMywgMjA3LCA1MCwgNSwgMjMzLCAxOTEsIDUwLCA1LCAyMDEsIDAsIDUwLCA1LCAyMDAsIDI0NSwgNTAsIDUsIDIxNSwgCisgICAgMTA2LCA1MCwgNSwgMjQ4LCAxOTIsIDUwLCA1LCAyNDgsIDEyNCwgNTAsIDUsIDIyMiwgOTEsIDUwLCA1LCAyMjYsIDQxLCAKKyAgICA1MCwgNSwgMjIxLCAyMzgsIDUwLCA1LCAyMzYsIDIyLCA1MCwgNSwgMjM2LCAyMSwgNTAsIDUsIDIzNywgMTMsIDUwLCA1LCAKKyAgICAyMDIsIDE5MywgNTAsIDUsIDEzOCwgNTAsIDUsIDIwNiwgNjEsIDUwLCA1LCAyNDEsIDgwLCA1MCwgNSwgMjQxLCA4NSwgNTAsIAorICAgIDUsIDIyNCwgMTEwLCA1MCwgNSwgMjEzLCAxLCA1MCwgNSwgMjQwLCAyMTEsIDUwLCA1LCAyMjAsIDUxLCA1MCwgNSwgMjA5LCAKKyAgICAyOSwgNTAsIDUsIDIxMCwgOCwgNTAsIDUsIDE5OSwgMTQsIDUwLCA1LCAxOTksIDYwLCA1MCwgNSwgMjQ2LCA5MSwgNTAsIDUsIAorICAgIDIyNywgMTY2LCA1MCwgNSwgMjE5LCA3MywgNTAsIDUsIDE5OSwgMjQ1LCA1MCwgNSwgMjI2LCA4OCwgNTAsIDUsIDIxOSwgCisgICAgMjE3LCA1MCwgNSwgMjM1LCAxMTYsIDUwLCA1LCAyMjEsIDEzNiwgNTAsIDUsIDIxOCwgMjQxLCA1MCwgNSwgMjE4LCAyNiwgCisgICAgNTAsIDUsIDcyLCA1MCwgNSwgMjM4LCAxNzksIDUwLCA1LCAyMTksIDIzNywgNTAsIDUsIDIzNCwgMTM5LCA1MCwgNSwgMjM0LCAKKyAgICAxMDUsIDUwLCA1LCAyMDEsIDY0LCA1MCwgNSwgMjAxLCA1MSwgNTAsIDUsIDIxNiwgNzMsIDUwLCA1LCAyNDgsIDE5NiwgNTAsIAorICAgIDUsIDI0OSwgOCwgNTAsIDUsIDIyMiwgMTAzLCA1MCwgNSwgMjI2LCA0NiwgNTAsIDUsIDIyNiwgNDQsIDUwLCA1LCAyMjEsIAorICAgIDI0NCwgNTAsIDUsIDIzNiwgMjksIDUwLCA1LCAyMzYsIDI3LCA1MCwgNSwgMjM3LCAxNDcsIDUwLCA1LCAyMDMsIDU5LCA1MCwgCisgICAgNSwgMjA2LCAyMDEsIDUwLCA1LCAyMDYsIDEwNiwgNTAsIDUsIDI0MSwgOTEsIDUwLCA1LCAyNDEsIDg4LCA1MCwgNSwgMjI1LCAKKyAgICA0MCwgNTAsIDUsIDIxMywgMTkwLCA1MCwgNSwgMjQxLCAxNzUsIDUwLCA1LCAyMjAsIDY3LCA1MCwgNSwgMjExLCAyMDIsIAorICAgIDUwLCA1LCAyMTAsIDY1LCA1MCwgNSwgMTk5LCA4OSwgNTAsIDUsIDE5OSwgNjgsIDUwLCA1LCAyNDcsIDc2LCA1MCwgNSwgCisgICAgMjI3LCAyMjcsIDUwLCA1LCAyMTksIDkxLCA1MCwgNSwgMjAwLCA1MSwgNTAsIDUsIDIyNywgOCwgNTAsIDUsIDIxOSwgMjI3LCAKKyAgICA1MCwgNSwgMjE5LCAyMjMsIDUwLCA1LCAyMzYsIDE1LCA1MCwgNSwgMjM2LCAxLCA1MCwgNSwgMjIyLCA3NiwgNTAsIDUsIAorICAgIDIyMCwgMzQsIDUwLCA1LCAyMTgsIDUwLCA1MCwgNSwgMjE5LCAyNTUsIDUwLCA1LCAyMjQsIDI1MCwgNTAsIDI0NiwgNzAsIAorICAgIDUwLCAyMzYsIDE4MywgMjA4LCA3NiwgNTAsIDIxNCwgNzksIDgxLCA1MCwgNSwgMjIwLCA1MCwgMjM3LCAxOTUsIDUwLCA1LCAKKyAgICAyMjAsIDUwLCAxNjEsIDUwLCA1LCAyMjAsIDUwLCAyMDksIDEwLCA1MCwgMTYsIDIzNywgMTM2LCA1MCwgMTYsIDIyNywgMywgCisgICAgNTAsIDE2LCAyMDUsIDIyOCwgNTAsIDE2LCAyMTksIDEyNSwgNTAsIDE2LCAyNDksIDgzLCA1MCwgMTYsIDIzNywgMTk0LCAKKyAgICA1MCwgMTYsIDIwNywgMzIsIDUwLCAxNiwgMjQyLCA4LCA1MCwgMTYsIDI0MCwgMTg2LCA1MCwgMTYsIDIyNSwgMjU1LCA1MCwgCisgICAgMTYsIDIwNSwgMTY1LCA1MCwgMTYsIDI0MCwgMjEwLCA1MCwgMTYsIDIyNywgMTU3LCA1MCwgMTcsIDE5OSwgODEsIDUwLCAKKyAgICAxNywgMTAyLCA1MCwgMTcsIDEwNSwgNTAsIDE3LCAxNDcsIDUwLCAxNywgMTQ5LCA1MCwgMTcsIDE2NCwgNTAsIDE3LCAxODcsIAorICAgIDUwLCAxNywgMjEwLCAxMzUsIDUwLCAxNywgMTkyLCA1MCwgMTcsIDIxOSwgMTEzLCA1MCwgNSwgMjIwLCA1MCwgMTc4LCA1MCwgCisgICAgNSwgMjIwLCA1MCwgMjQwLCAyMTEsIDM3LCA2LCAxLCAxOTksIDg1LCAzNywgNCwgMSwgMTk5LCA4NSwgMzcsIDYsIDEsIAorICAgIDIzOSwgODgsIDM3LCA0LCAxLCAyMzksIDg4LCAzNywgNiwgMSwgMjEzLCAxMDUsIDIzOSwgOTAsIDM3LCA0LCAxLCAyMTMsIAorICAgIDEwNSwgMjM5LCA5MCwgMzcsIDYsIDEsIDIyOCwgNDEsIDM3LCA0LCAxLCAyMjgsIDQxLCAzNywgNiwgMSwgMjQwLCAyMjcsIAorICAgIDM3LCA0LCAxLCAyNDAsIDIyNywgMzcsIDYsIDEsIDIyMSwgOTUsIDIwNCwgMjAsIDM3LCA0LCAxLCAyMjEsIDk1LCAyMDQsIAorICAgIDIwLCAzNywgNiwgMSwgMjQ4LCA0NywgMjE3LCA4MywgMzcsIDQsIDEsIDI0OCwgNDcsIDIxNywgODMsIDM3LCA2LCAxLCAKKyAgICAyMjAsIDEwLCAyMDAsIDMzLCAzNywgNCwgMSwgMjIwLCAxMCwgMjAwLCAzMywgMzcsIDYsIDEsIDIwMCwgMzAsIDMsIDI0OSwgCisgICAgMTMwLCAyMDAsIDMzLCAzNywgNCwgMSwgMjAwLCAzMCwgMywgMjQ5LCAxMzAsIDIwMCwgMzMsIDM3LCA2LCAxLCAyMjgsIDM5LCAKKyAgICAyMDAsIDY1LCAzNywgNCwgMSwgMjI4LCAzOSwgMjAwLCA2NSwgMzcsIDYsIDEsIDIxMywgMTA1LCAxOTksIDIxMSwgMzcsIDQsIAorICAgIDEsIDIxMywgMTA1LCAxOTksIDIxMSwgMzcsIDYsIDEsIDIyOCwgMzksIDYyLCAzNywgNCwgMSwgMjI4LCAzOSwgNjIsIDM3LCAKKyAgICA2LCAxLCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIAorICAgIDE4MSwgMzcsIDYsIDEsIDI0OCwgMTM2LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0OCwgMTM2LCAxOTksIDE4MSwgMzcsIDYsIAorICAgIDEsIDIyOCwgMzksIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIDM5LCAyNDYsIDExMCwgCisgICAgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMTk5LCAyNDcsIDM3LCA0LCAxLCAxOTksIDI0NywgMzcsIDYsIDEsIAorICAgIDIxMywgMTA1LCAyMDUsIDI2LCAzNywgNCwgMSwgMjEzLCAxMDUsIDIwNSwgMjYsIDM3LCA2LCAxLCAyMDksIDIzLCAyNDEsIAorICAgIDE3NSwgMzcsIDQsIDEsIDIwOSwgMjMsIDI0MSwgMTc1LCAzNywgNiwgMSwgMjA5LCAyMywgMjM4LCAyMDksIDM3LCA0LCAxLCAKKyAgICAyMDksIDIzLCAyMzgsIDIwOSwgMzcsIDYsIDEsIDIwOSwgMjMsIDIzOCwgMTkwLCAzNywgNCwgMSwgMjA5LCAyMywgMjM4LCAKKyAgICAxOTAsIDM3LCA2LCAxLCAyMjEsIDk5LCA3NCwgMzcsIDQsIDEsIDIyMSwgOTksIDc0LCAzNywgNiwgMSwgMjQ4LCAxNjUsIAorICAgIDc0LCAzNywgNCwgMSwgMjQ4LCAxNjUsIDc0LCAzNywgNiwgMSwgNTMsIDIyMSwgOTksIDc0LCAzNywgNCwgMSwgNTMsIDIyMSwgCisgICAgOTksIDc0LCAzNywgMSwgMjIxLCAyMiwgNzQsIDM4LCAzNywgMjAxLCAxNDksIDM4LCAzNywgMjA2LCAxNjcsIDIyMSwgMTY4LCAKKyAgICA1NCwgMzgsIDM3LCAyMzMsIDgzLCAyMjEsIDE2OCwgNTQsIDM4LCAzNywgMjA2LCA1MSwgMjIxLCAxNjgsIDU0LCAyMDksIAorICAgIDczLCAyNTAsIDE2NSwgMzgsIDM3LCAxLCAyMDQsIDE3LCAyMjgsIDE3OCwgMzgsIDM3LCAxLCA3MCwgMzgsIDM3LCAxLCAKKyAgICAyMDAsIDksIDM4LCAzNywgMSwgNjYsIDM4LCAzNywgMSwgMjM0LCAxNjUsIDU0LCAzOCwgMzcsIDEsIDIwMCwgMjksIDM4LCAKKyAgICAzNywgMSwgMjA5LCAyMywgNTQsIDM4LCAzNywgMSwgMjE3LCA4MywgMzgsIDM3LCAyMjcsIDIwLCAzOCwgMzcsIDIxNiwgODAsIAorICAgIDM3LCAyMjcsIDIwLCAzNywgMjE2LCA4MCwgMzcsIDYsIDEsIDIzOSwgMTAzLCAzNywgNCwgMSwgMjM5LCAxMDMsIDM3LCA2LCAKKyAgICAxLCAyMzksIDc5LCAzNywgNCwgMSwgMjM5LCA3OSwgMzcsIDYsIDEsIDE5OSwgNDQsIDM3LCA0LCAxLCAxOTksIDQ0LCAzNywgCisgICAgNiwgMSwgMjQ3LCA5MiwgMzcsIDQsIDEsIDI0NywgOTIsIDM3LCA2LCAxLCAyMzksIDc2LCAzNywgNCwgMSwgMjM5LCA3NiwgCisgICAgMzcsIDYsIDEsIDIwNiwgMjAyLCAzLCAxMDEsIDExNywgMzcsIDQsIDEsIDIwNiwgMjAyLCAzLCAxMDEsIDExNywgMzcsIDYsIAorICAgIDEsIDIwNCwgMTY4LCAzNywgNCwgMSwgMjA0LCAxNjgsIDM3LCA2LCAxLCAyMDUsIDEsIDM3LCA0LCAxLCAyMDUsIDEsIDM3LCAKKyAgICA2LCAxLCAyMDUsIDYsIDM3LCA0LCAxLCAyMDUsIDYsIDM3LCA2LCAxLCAyMDYsIDIwNywgMzcsIDQsIDEsIDIwNiwgMjA3LCAKKyAgICAzNywgNiwgMSwgMjMzLCA2NSwgMzcsIDQsIDEsIDIzMywgNjUsIDM3LCA2LCAxLCAyMDksIDE5NywgMzcsIDQsIDEsIDIwOSwgCisgICAgMTk3LCAzNywgNiwgMSwgNTMsIDc0LCAzNywgNCwgMSwgNTMsIDc0LCAzNywgNiwgMSwgMjQyLCAyMzIsIDc0LCAzNywgNCwgCisgICAgMSwgMjQyLCAyMzIsIDc0LCA2NywgMSwgMzcsIDIzNCwgMTY1LCA1NCwgNjcsIDEsIDM3LCAyMDksIDIzLCA1NCwgMzgsIDM3LCAKKyAgICAxLCAyMzgsIDI0OCwgMzgsIDM3LCAxLCAyMjgsIDM5LCA3MiwgMjUsIDEsIDYyLCAyNSwgMSwgMTYxLCAyNSwgMSwgNjYsIAorICAgIDI1LCAxLCAyMjYsIDE1LCAyNSwgMSwgMjM4LCAyNTUsIDI1LCAxLCAyMTMsIDE2NywgMjUsIDEsIDIwNywgMTUsIDI1LCAxLCAKKyAgICA3NCwgMjUsIDEsIDIxOCwgNDEsIDI1LCAxLCA3MCwgMjUsIDEsIDE5NCwgMjUsIDEsIDE3MiwgMjUsIDEsIDIxMywgMzMsIAorICAgIDI1LCAxLCAyMTMsIDgxLCAyNSwgMSwgMjI1LCAzMSwgMjUsIDEsIDIyMiwgNjMsIDI1LCAxLCAyMDcsIDMyLCAyNSwgMSwgCisgICAgMjIwLCA3MywgMjUsIDEsIDIxOSwgOTYsIDI1LCAxLCAyMjMsIDI0MywgMjUsIDEsIDIwNywgMTkzLCAyNSwgMSwgMjIxLCAKKyAgICA0MSwgMjUsIDEsIDIxMCwgMjgsIDI1LCAxLCAyMDksIDE4MiwgMjUsIDEsIDIxMCwgMzgsIDI1LCAxLCAyMTAsIDEzNywgMjUsIAorICAgIDEsIDIyNSwgMTk5LCAyNSwgMSwgMjI2LCAyMzMsIDI1LCAxLCAyMTgsIDEwNCwgMjUsIDEsIDIxOCwgMTMzLCAyNSwgMSwgCisgICAgMjE5LCA2NywgMjUsIDEsIDE5OSwgMjI3LCAyNSwgMSwgMjA5LCAyMjAsIDI1LCAxLCAxOTksIDE4NSwgMjUsIDEsIDE4MywgCisgICAgMjUsIDEsIDIxOCwgMTY3LCAyNSwgMSwgMjI2LCAyMTksIDI1LCAxLCAyMTUsIDI0OSwgMjUsIDEsIDIxOSwgODksIDI1LCAxLCAKKyAgICAyMTgsIDE0OCwgMjUsIDEsIDIxNCwgMjE2LCAyNSwgMSwgMjAwLCAyMTMsIDI1LCAxLCAyMTYsIDYxLCAyNSwgMSwgMjM3LCAKKyAgICAxNDAsIDI1LCAxLCAyMTIsIDE3NSwgMjUsIDEsIDIyNCwgNDIsIDI1LCAxLCAyMjEsIDIxMSwgMjUsIDEsIDIxOSwgMTUwLCAKKyAgICAyNSwgMSwgMjEzLCAxMDcsIDI1LCAxLCAyMTMsIDIzNCwgMjUsIDEsIDIyNiwgMjQzLCAyNSwgMSwgMjE5LCAxODEsIDI1LCAKKyAgICAxLCAyMTksIDIzMiwgMjUsIDEsIDIxOSwgMjUzLCAyNSwgMSwgMjEwLCA4LCAyNSwgMSwgMjE0LCAyMjEsIDI1LCAxLCAyMzYsIAorICAgIDE4OSwgMjUsIDEsIDIzNywgNiwgMjUsIDEsIDIwMSwgMTE0LCAyNSwgMSwgMTg4LCAyNSwgMSwgMjI0LCAyMTAsIDI1LCAxLCAKKyAgICAyMTUsIDIwNCwgMjUsIDEsIDIyNCwgNzAsIDI1LCAxLCAyMjYsIDg4LCAyNSwgMSwgMjIyLCAxMDAsIDI1LCAxLCAyMTMsIAorICAgIDEzOSwgMjUsIDEsIDIyMiwgNDAsIDI1LCAxLCAxNzgsIDI1LCAxLCAyMDYsIDE1LCAyNSwgMSwgMjI2LCAxNjMsIDI1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjUsIDEsIDIyMiwgMTA4LCAyNSwgMSwgMjA2LCAxNDYsIDI1LCAxLCAyMjYsIDUwLCAyNSwgMSwgMjA2LCAKKyAgICAxNjYsIDI1LCAxLCAyMTgsIDEzNSwgMjUsIDEsIDIxMiwgMjEsIDI1LCAxLCAyMzcsIDE5MSwgMjUsIDEsIDIyNiwgNTIsIAorICAgIDI1LCAxLCAyMjYsIDgzLCAyNSwgMzgsIDEzNCwgMjI2LCA2MSwgMjUsIDM4LCAxMzQsIDIwNCwgMjA2LCAyNSwgMjE5LCA5NSwgCisgICAgMjUsIDIzNiwgMTgzLCAyMDgsIDc2LCAyNSwgMjQ2LCA3OSwgMjUsIDI0NiwgNzAsIDI1LCAyMTAsIDE2NywgMjUsIDIxNCwgCisgICAgNzksIDgxLCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxNSwgMTU2LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgCisgICAgMjAwLCA3NiwgMjE1LCAxNTYsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjEwLCA4OCwgNjcsIDEsIDI0NiwgCisgICAgMjIyLCAxNTAsIDIwMCwgNzYsIDIxMCwgODgsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjE0LCA5NywgNjcsIAorICAgIDEsIDI0NiwgMjIyLCAxNTAsIDIwMCwgNzYsIDIxNCwgOTcsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjEyLCAKKyAgICAxNzUsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTIsIDE3NSwgNjcsIDEsIDIzOCwgMjksIDIzOSwgMTgwLCAKKyAgICAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjM5LCAxODAsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDIzOSwgMTgwLCAxNTAsIAorICAgIDE0OCwgNjcsIDEsIDEyOCwgMjM5LCAxODAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM5LCAxODAsIDE1MCwgMTQ4LCAKKyAgICA2NywgMSwgMjM4LCAyOSwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMzksIDE4MCwgMjI1LCAKKyAgICAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAKKyAgICAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIAorICAgIDY3LCAxLCAyMzgsIDI5LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAKKyAgICAyMjEsIDIwNiwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAKKyAgICAyOCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCA3MywgODMsIDE0OCwgNjcsIDEsIDczLCAyMDksIDc1LCA2NywgMSwgNzMsIAorICAgIDIzMywgMTc3LCAxNDgsIDY3LCAxLCAyMjQsIDU0LCA1MSwgMjQzLCAxNiwgMjUxLCA3MCwgNjcsIDEsIDIxMywgMjIwLCAKKyAgICAxMTUsIDQ4LCA2NywgMSwgMjEzLCAyMjAsIDEyNywgNDgsIDY3LCAxLCAyMTMsIDIyMCwgMjM4LCA0MywgODEsIDY3LCAxLCAKKyAgICAyMTMsIDIyMCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDY3LCAxLCAxMjgsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCA2NywgMSwgCisgICAgMjA4LCA1NywgMjYsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyMDgsIDU3LCAyNiwgMTI4LCAyMDUsIDE3NCwgOCwgNiwgMSwgCisgICAgMjM4LCAyNDMsIDI1MSwgMTQyLCA4LCA0LCAxLCAyMzgsIDI0MywgMjUxLCAxNDIsIDgsIDYsIDEsIDIzOCwgMjQzLCAyNTEsIAorICAgIDE3MSwgOCwgNCwgMSwgMjM4LCAyNDMsIDI1MSwgMTcxLCA4LCA2LCAxLCAyMzQsIDEwMywgOCwgNCwgMSwgMjM0LCAxMDMsIAorICAgIDgsIDYsIDEsIDIwNCwgMTE0LCA4LCA0LCAxLCAyMDQsIDExNCwgOCwgNiwgMSwgMjA1LCAxMDIsIDgsIDQsIDEsIDIwNSwgCisgICAgMTAyLCA4LCA2LCAxLCAyNDIsIDIxMSwgOCwgNCwgMSwgMjQyLCAyMTEsIDgsIDYsIDEsIDI0MiwgMjEyLCAzLCAyNDYsIDcwLCAKKyAgICA4LCA0LCAxLCAyNDIsIDIxMiwgMywgMjQ2LCA3MCwgOCwgMSwgNCwgNiwgMjM4LCA1LCA4LCAxLCA0LCA2LCAyMTIsIDEyMiwgCisgICAgOCwgNiwgMSwgMjUyLCAxMzgsIDgsIDQsIDEsIDI1MiwgMTM4LCA4LCA2LCAxLCAyNTEsIDMxLCA4LCA0LCAxLCAyNTEsIDMxLCAKKyAgICA4LCA2LCAxLCAyNTAsIDEzOSwgOCwgNCwgMSwgMjUwLCAxMzksIDgsIDYsIDEsIDI1MCwgMTIzLCA4LCA0LCAxLCAyNTAsIAorICAgIDEyMywgOCwgNiwgMSwgMjUwLCAxMjQsIDMsIDIzMywgMTc3LCAxNDgsIDgsIDQsIDEsIDI1MCwgMTI0LCAzLCAyMzMsIDE3NywgCisgICAgMTQ4LCA4LCA2LCAxLCAyNTAsIDExMiwgOCwgNCwgMSwgMjUwLCAxMTIsIDgsIDYsIDEsIDIxMywgMTA1LCAyNDcsIDIyNCwgCisgICAgMywgMjQwLCAxODIsIDgsIDQsIDEsIDIxMywgMTA1LCAyNDcsIDIyNCwgMywgMjQwLCAxODIsIDgsIDYsIDEsIDIyNywgMTE5LCAKKyAgICAzLCA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIAorICAgIDEsIDIyNywgMTE5LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIwOCwgNDcsIDI2LCAyNDEsIDcxLCAKKyAgICA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIwOCwgNDcsIDI2LCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjQ4LCA0NiwgCisgICAgMTU2LCA4LCA0LCAxLCAyNDgsIDQ2LCAxNTYsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMjIsIDk3LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTIyLCA5NywgOCwgNiwgMSwgMTYzLCAzLCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDgsIDYsIDEsIDE2MywgMywgMjI0LCA3NCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMjQsIDc0LCA4LCA2LCAxLCAyMTcsIDYzLCA4LCA0LCAxLCAyMTcsIDYzLCA4LCA2LCAxLCAyMTYsIDIyNywgMywgMjA4LCAKKyAgICA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgCisgICAgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMzcsIDI2LCA4LCA2LCAxLCAKKyAgICAyMTYsIDIyNywgMywgMjA4LCAxODUsIDIwNywgNiwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgMTg1LCAyMDcsIDYsIDgsIAorICAgIDYsIDEsIDIxNCwgMTY4LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjE0LCAxNjgsIDMsIDIwOCwgCisgICAgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMTQsIDE2OCwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIxNCwgCisgICAgMTY4LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMjEyLCAyMjIsIDgsIDQsIDEsIDIxNCwgMzMsIDIxMiwgCisgICAgMjIyLCA4LCA2LCAxLCAyMTIsIDE2MiwgMjEyLCAyMjIsIDgsIDQsIDEsIDIxMiwgMTYyLCAyMTIsIDIyMiwgOCwgNiwgMSwgCisgICAgMjAzLCAxNjksIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIAorICAgIDIwMSwgMTU1LCA4LCA0LCAxLCAyMDEsIDE1NSwgOCwgNiwgMSwgMjAyLCAyMDEsIDE5OSwgMTU3LCA4LCA0LCAxLCAyMDIsIAorICAgIDIwMSwgMTk5LCAxNTcsIDgsIDYsIDEsIDIwNiwgNTUsIDMsIDk3LCA4LCA0LCAxLCAyMDYsIDU1LCAzLCA5NywgOCwgNiwgMSwgCisgICAgMjA2LCA1NSwgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIwNiwgNTUsIDMsIDIwOCwgNDcsIAorICAgIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMDMsIDQ5LCA4LCA0LCAxLCAyMDMsIDQ5LCA4LCA2LCAxLCAyMzgsIDgxLCAKKyAgICA4LCA0LCAxLCAyMzgsIDgxLCA4LCA2LCAxLCAyMjgsIDI2LCA4LCA0LCAxLCAyMjgsIDI2LCA4LCA2LCAxLCAyNDMsIDY4LCAKKyAgICA4LCA0LCAxLCAyNDMsIDY4LCA2NywgMSwgMjAzLCAxOTcsIDgsIDQsIDEsIDIzOSwgMTI2LCA4LCA0LCAxLCAyMjQsIDI1LCAKKyAgICA4LCA0LCAxLCAyMjEsIDE1LCA4LCA0LCAxLCAyMTgsIDk2LCA4LCA0LCAxLCAyMTIsIDE2MSwgOCwgMSwgNCwgNiwgMjEyLCAKKyAgICAxNjEsIDgsIDQsIDEsIDIwNCwgMjAzLCA4LCA0LCAxLCAyMDQsIDEyLCA4LCA2LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgOCwgCisgICAgNCwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDgsIDYsIDEsIDIyOCwgNzEsIDIzOCwgNSwgOCwgNCwgMSwgMjI4LCA3MSwgMjM4LCAKKyAgICA1LCA4LCA2LCAxLCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjA0LCAxODUsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCAKKyAgICA0LCAxLCAyMDQsIDE4NSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIwNCwgMTg1LCAxNTYsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAxNTYsIDgsIDYsIDEsIDIyOCwgNzEsIDE0NiwgOCwgNCwgMSwgMjI4LCA3MSwgMTQ2LCA4LCA2LCAxLCAyMjgsIDcxLCAKKyAgICAyMTIsIDEyMiwgOCwgNCwgMSwgMjI4LCA3MSwgMjEyLCAxMjIsIDgsIDYsIDEsIDIyOCwgNzEsIDIwNywgODMsIDgsIDQsIDEsIAorICAgIDIyOCwgNzEsIDIwNywgODMsIDY3LCAxLCAxMjgsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgNjcsIDEsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAyMDksIDI1MCwgMjM4LCAxMjIsIDU0LCA4LCA2LCAxLCAyMTIsIDI1LCA4LCA0LCAxLCAyMTIsIDI1LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgMjM0LCAyNDcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMTMsIDExMSwgMjMzLCAxODcsIDI2LCAyNDgsIDIyNiwgOCwgCisgICAgMSwgMjA5LCAxMzIsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQxLCAxMTksIDgsIDQsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDE0OCwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDE0OCwgOCwgNCwgCisgICAgMSwgMjQ3LCAyMjQsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA2LCAKKyAgICAxLCA2OCwgMywgMjM3LCAyNiwgOCwgNCwgMSwgNjgsIDMsIDIzNywgMjYsIDgsIDYsIDEsIDIzOCwgNiwgMywgOTcsIDgsIDQsIAorICAgIDEsIDIzOCwgNiwgMywgOTcsIDgsIDYsIDEsIDIwMiwgMTg1LCAyNTEsIDIyMSwgOCwgNCwgMSwgMjAyLCAxODUsIDI1MSwgCisgICAgMjIxLCA4LCA2LCAxLCAyMDIsIDE4NSwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyMTcsIDEyMSwgOCwgNiwgMSwgCisgICAgMjAyLCAxODUsIDIwNCwgMzEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyMDQsIDMxLCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDExNywgCisgICAgOCwgNiwgMSwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDYsIDEsIDEzNSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyNDgsIDIyNiwgOCwgNiwgMSwgNCwgNiwgNzAsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjcsIDExOCwgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDIwNywgODMsIDgsIDYsIDEsIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgOCwgNiwgMSwgMjQ2LCAyMzYsIDgsIDYsIDEsIAorICAgIDI0OCwgMjA4LCA4LCA0LCAxLCAyNDgsIDIwOCwgOCwgNiwgMSwgMjE3LCA4MywgOCwgNCwgMSwgMjE3LCA4MywgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIwOSwgMTczLCA3MCwgNjcsIDEsIDYsIDIzNCwgMjQ4LCAzLCA5NywgNjcsIDEsIDQsIDMzLCAyMTcsIDEyMSwgCisgICAgOCwgMSwgNCwgNiwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCAyMzgsIDEyNywgMSwgMjEzLCAxMDUsIDIzOCwgNSwgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIxMywgMTA1LCAyMTYsIDIyNiwgOCwgMjM4LCAxMjcsIDEsIDIyOCwgNTAsIDIyMywgMjQzLCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjMzLCAxOSwgMjI0LCA4MCwgOCwgMjM4LCAxMjcsIDEsIDI1MCwgMjM0LCAyMjMsIDI0MywgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCA2MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA3MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyMzksIAorICAgIDEwNSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA3MiwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCA3NCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyMzQsIDE1OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjYsIAorICAgIDg4LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNiwgMTc4LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIzNSwgMTE2LCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIzNSwgMTcxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDI1MSwgMzMsIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjQ2LCA5MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDYsIDIxMCwgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCAyMjcsIDE2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjcsIDIwOSwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCAyMDQsIDIzMCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDQsIDIzNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAKKyAgICAyNDEsIDE5MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDEsIDE5OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAxMzgsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA2LCA2MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDAsIDIxMSwgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyNDEsIDgwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxOCwgMjQxLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDIxNSwgMTA2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxNSwgMjE3LCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDI0OCwgMTI0LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0OCwgMTkyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIAorICAgIDIyMSwgMTM2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxMywgMSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjQsIDExMCwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTIsIDIwMSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDksIDI5LCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDIzMywgMjA3LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCA2MiwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAyMiwgMiwgNzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCAKKyAgICA3MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgMjE3LCA2MywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgCisgICAgMjIyLCAxNDksIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIDIyMiwgMTQ4LCAyMDcsIDE2MywgMjIwLCAxNDUsIAorICAgIDIxNSwgMTAxLCAyMjIsIDE0NywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgMjIyLCAxNDYsIDE1NywgMjI4LCAKKyAgICAxMDEsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAxNTcsIAorICAgIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAKKyAgICAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDEyNiwgCisgICAgMjA5LCA5NywgMTU3LCAyMjgsIDEwMSwgMjE0LCA4OCwgODEsIDE1NywgMjI4LCAxMDEsIDIxNSwgMTMzLCA4MSwgMTU3LCAKKyAgICAyMjgsIDEwMSwgMjEyLCAxNDksIDgxLCAxNTcsIDIyOCwgMTAxLCAyMTQsIDg5LCA4MSwgMjE1LCAyNDEsIDEsIDE2MSwgCisgICAgMjE1LCAyNDEsIDEsIDIyNiwgMjA3LCAyMTUsIDI0MSwgMSwgMjM2LCA4OSwgMjE1LCAyNDEsIDEsIDIxOSwgMjUzLCAyMTUsIAorICAgIDI0MSwgMSwgMjQ3LCAxOTAsIDIxNSwgMjQxLCAxLCAyNDcsIDM3LCAyMTUsIDI0MSwgMSwgMjI3LCAyNDgsIDIxNSwgMjQxLCAKKyAgICAxLCAyMTgsIDYwLCAyMTUsIDI0MSwgMSwgMjA3LCAzNiwgMjE1LCAyNDEsIDEsIDIwNiwgMTIyLCAyMTUsIDI0MSwgMSwgCisgICAgMjQyLCA1OCwgMjE1LCAyNDEsIDEsIDE4OCwgMjE1LCAyNDEsIDEsIDE3MiwgMjE1LCAyNDEsIDEsIDIxNSwgMjQ1LCAyMTUsIAorICAgIDI0MSwgMSwgMjQ5LCAxMzYsIDIxNSwgMjQxLCAxLCAxNzgsIDIxNSwgMjQxLCAxLCAyMDUsIDMyLCAyMTUsIDI0MSwgMSwgCisgICAgMjA1LCAyMiwgMjE1LCAyNDEsIDEsIDIzOSwgOTMsIDIxNSwgMjQxLCAxLCAyMDEsIDExNCwgMjE1LCAyNDEsIDEsIDE5OSwgCisgICAgNzcsIDIxNSwgMjQxLCAxLCAxOTksIDExNCwgMjE1LCAyNDEsIDEsIDQsIDYyLCAyMTUsIDI0MSwgMSwgMTgzLCAyMTUsIAorICAgIDI0MSwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAxLCAxOTQsIDIxNSwgMjQxLCAxLCAyMTAsIDExNCwgMjE1LCAyNDEsIDEsIAorICAgIDIxMiwgNjQsIDIxNSwgMjQxLCAxLCAxNDQsIDIxNSwgMjQxLCAxLCA2MiwgMjE1LCAyNDEsIDEsIDcwLCAyMTUsIDI0MSwgMSwgCisgICAgNjYsIDIxNSwgMjQxLCAxLCA3MiwgMjE1LCAyNDEsIDEsIDc0LCAyMTUsIDI0MSwgMSwgMjE0LCAxNTksIDIxNSwgMjQxLCAxLCAKKyAgICAyMDAsIDE4MSwgMjE1LCAyNDEsIDEsIDIzNywgMTk1LCAyMTUsIDI0MSwgMSwgMjM1LCAyMzUsIDIxNSwgMjQxLCAxLCAyMzgsIAorICAgIDI1NSwgMjE1LCAyNDEsIDIwOCwgMTIsIDEsIDIwMSwgMTE0LCAyMTUsIDI0MSwgMjA4LCAxMiwgMSwgMTgzLCAyMTUsIDI0MSwgCisgICAgMSwgMjA0LCAyNTMsIDIxNSwgMjQxLCAxLCAyMDQsIDI0MSwgMjE1LCAyNDEsIDEsIDI0MSwgMjIwLCAyMTUsIDI0MSwgMSwgCisgICAgMjE5LCAyMSwgMjE1LCAyNDEsIDEsIDI1MSwgMTA5LCAxODMsIDIxNSwgMjQxLCAxLCAyMDIsIDE4OCwgMjEwLCAxMTQsIAorICAgIDIxNSwgMjQxLCAxLCAyMDIsIDE4OSwgMTQ0LCAyMTUsIDI0MSwgMSwgMjUwLCAxNzIsIDIzNywgMTk1LCAyMTUsIDI0MSwgCisgICAgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAyMDcsIDIxNSwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAxLCAyNDcsIAorICAgIDE0OSwgMjE1LCAyNDEsIDIwOSwgMTM5LCAyMzQsIDEzNywgODEsIDIxNSwgMjQxLCA1MywgMjM0LCAxMzcsIDgxLCAyMTUsIAorICAgIDI0MSwgMTM0LCAyMTAsIDEwNiwgMjE1LCAyNDEsIDEzNCwgNTMsIDIxMCwgMTA2LCAyMTEsIDI0MSwgMiwgMjUxLCAzMywgCisgICAgMjExLCAyNDEsIDIsIDIwMiwgMjAzLCAyMTEsIDI0MSwgMSwgNjIsIDIxMSwgMjQxLCAxLCAyNTIsIDEzOCwgMjExLCAyNDEsIAorICAgIDEsIDcwLCAyMTEsIDI0MSwgMSwgMjI4LCAxNTEsIDIxMSwgMjQxLCAxLCA2NiwgMjExLCAyNDEsIDEsIDIwMywgMTgyLCAKKyAgICAyMTEsIDI0MSwgMSwgMTA5LCAxNDYsIDIxMSwgMjQxLCAxLCAxMDksIDIxMiwgMjE2LCAyMTEsIDI0MSwgMSwgMTA5LCAxNTYsIAorICAgIDIxMSwgMjQxLCAxLCAxMDksIDIyNCwgMTM5LCAyMTEsIDI0MSwgMSwgNzIsIDIxMSwgMjQxLCAxLCAyMzgsIDI1NSwgMjExLCAKKyAgICAyNDEsIDEsIDI1MSwgMTc2LCAyMTEsIDI0MSwgMSwgNzQsIDIxMSwgMjQxLCAxLCAyMTcsIDYzLCAyMTEsIDI0MSwgMSwgCisgICAgMjUwLCAxMzksIDIxMSwgMjQxLCAxLCAxNjEsIDIxMSwgMjQxLCAxLCAyMjYsIDIwNywgMjExLCAyNDEsIDEsIDIzNiwgODksIAorICAgIDIxMSwgMjQxLCAxLCAyMzUsIDE5OSwgMjExLCAyNDEsIDEsIDIxOSwgMjUzLCAyMTEsIDI0MSwgMSwgMjQ3LCAxOTAsIDIxMSwgCisgICAgMjQxLCAxLCAyNDcsIDM3LCAyMTEsIDI0MSwgMSwgMjI3LCAyNDgsIDIxMSwgMjQxLCAxLCAyMjcsIDIxNSwgMjExLCAyNDEsIAorICAgIDEsIDIxOCwgNjAsIDIxMSwgMjQxLCAxLCAyMDQsIDI1MywgMjExLCAyNDEsIDEsIDIwNCwgMjQxLCAyMTEsIDI0MSwgMSwgCisgICAgMjQxLCAyMjAsIDIxMSwgMjQxLCAxLCAyNDEsIDIwNCwgMjExLCAyNDEsIDEsIDIxOSwgMjEsIDIxMSwgMjQxLCAxLCAyMDcsIAorICAgIDM2LCAyMTEsIDI0MSwgMSwgMjA2LCAxMjIsIDIxMSwgMjQxLCAxLCAyNDIsIDU4LCAyMTEsIDI0MSwgMSwgMjQxLCAxMDAsIAorICAgIDIxMSwgMjQxLCAxLCAxODgsIDIxMSwgMjQxLCAxLCAxNzIsIDIxMSwgMjQxLCAxLCAyMTUsIDI0NSwgMjExLCAyNDEsIDEsIAorICAgIDI0OSwgMTM2LCAyMTEsIDI0MSwgMSwgMjQ4LCAyMDAsIDIxMSwgMjQxLCAxLCAxNzgsIDIxMSwgMjQxLCAxLCAxODMsIDIxMSwgCisgICAgMjQxLCAxLCAyMTMsIDI1MiwgMjExLCAyNDEsIDEsIDE5NCwgMjExLCAyNDEsIDEsIDIwMywgOTAsIDIxMSwgMjQxLCAxLCAKKyAgICAyMTAsIDExNCwgMjExLCAyNDEsIDEsIDIwOCwgMTc5LCAyMTEsIDI0MSwgMSwgMjEyLCA2NCwgMjExLCAyNDEsIDEsIDE0NCwgCisgICAgMjExLCAyNDEsIDEsIDIyNCwgMTM4LCAyMTEsIDI0MSwgMTExLCAyLCAyMzQsIDIzMSwgMjExLCAyNDEsIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjExLCAyNDEsIDIyLCAyLCA3MCwgMjExLCAyNDEsIDIyLCAyLCAyMjgsIDE1MSwgMjExLCAyNDEsIDIyLCAyLCA2NiwgCisgICAgMjExLCAyNDEsIDIyLCAyLCAyMDMsIDE4MiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDE0NiwgMjExLCAyNDEsIDIyLCAyLCAKKyAgICAxMDksIDIxMiwgMjE2LCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMTU2LCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIAorICAgIDIxMSwgMjQxLCAyMiwgMiwgNzIsIDIxMSwgMjQxLCAyMiwgMiwgMjM4LCAyNTUsIDIxMSwgMjQxLCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIxMSwgMjQxLCAyMiwgMiwgNzQsIDIxMSwgMjQxLCAyMiwgMiwgMjE3LCA2MywgMjExLCAyNDEsIDIyLCAyLCAyNTAsIAorICAgIDEzOSwgMjExLCAyNDEsIDIsIDIwMiwgMjA4LCAyMTEsIDI0MSwgMiwgMjQ3LCAxNDksIDIxMSwgMjQxLCAyNDIsIDEwLCAKKyAgICAyMTEsIDI0MSwgNTMsIDI0MiwgMTAsIDIxMSwgMjQxLCAxNywgMTk5LCA4MSwgMjExLCAyNDEsIDE3LCAxMDIsIDIxMSwgCisgICAgMjQxLCAxNywgMTA1LCAyMTEsIDI0MSwgMTcsIDE0NywgMjExLCAyNDEsIDE3LCAxNDksIDIxMSwgMjQxLCAxNywgMTY0LCAKKyAgICAyMTEsIDI0MSwgMTcsIDE4NywgMjExLCAyNDEsIDE3LCAyMTAsIDEzNSwgMjExLCAyNDEsIDE3LCAxOTIsIDIxMSwgMjQxLCAKKyAgICAxNywgMjE5LCAxMTMsIDM4LCA5NCwgMTcsIDE5OSwgODEsIDM4LCA5NCwgMTcsIDEwMiwgMzgsIDk0LCAxNywgMTA1LCAzOCwgCisgICAgOTQsIDE3LCAxNDcsIDM4LCA5NCwgMTcsIDE0OSwgMzgsIDk0LCAxNywgMTY0LCAzOCwgOTQsIDE3LCAxODcsIDM4LCA5NCwgCisgICAgMTcsIDIxMCwgMTM1LCAzOCwgOTQsIDE3LCAxOTIsIDM4LCA5NCwgMTcsIDIxOSwgMTEzLCAzOCwgOTQsIDEsIDYyLCAzOCwgCisgICAgOTQsIDEsIDY2LCAzOCwgOTQsIDEsIDE2MSwgMzgsIDk0LCAxLCAxODgsIDM4LCA5NCwgMSwgMTcyLCAzOCwgOTQsIDEsIAorICAgIDIxMywgMjUyLCAzOCwgOTQsIDEsIDIwMiwgMjM0LCAzOCwgOTQsIDIsIDI1MCwgMTIyLCA5NCwgMiwgMjA4LCAyNDMsIDI0NywgCisgICAgMTQ5LCA5NCwgMiwgMjQ3LCAxNTAsIDIwMiwgMjA4LCA5NCwgMiwgNTMsIDI0NywgMTUwLCAyMDIsIDIwOCwgOTQsIDIsIAorICAgIDI0NywgMTUwLCAxMDUsIDk0LCAyLCAyNDcsIDE1MCwgMTQ3LCA5NCwgMiwgMjQ3LCAxNTAsIDI1MCwgMTIyLCA5NCwgMiwgCisgICAgMjE0LCAxOTUsIDk0LCAyMzYsIDUzLCAyMzcsIDkzLCA5NCwgMjQ3LCAxMjksIDk0LCAyMzQsIDEzMCwgOTQsIDIsIDIwOSwgCisgICAgMTc3LCA5NCwgMjI3LCAyNDAsIDIxNywgODYsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTk5LCA4MSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDE3LCAxMDIsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTA1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE0NywgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNDksIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTY0LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMTcsIDE4NywgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAyMTAsIDEzNSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAKKyAgICAxOTIsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMjE5LCAxMTMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNjEsIDIyNywgMTQsIAorICAgIDIyNCwgMjExLCAxLCAyMjYsIDIwNywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIzNiwgODksIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAxLCAyMTksIDI1MywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMiwgNjQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTAsIAorICAgIDExNCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE5OSwgMTE0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjE4LCA2MCwgMjI3LCAKKyAgICAxNCwgMjI0LCAyMTEsIDEsIDIwNywgMzYsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMzMsIDEwMSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDEsIDE4OCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE3MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTc4LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjQyLCA1OCwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDEsIDI0OSwgMTM2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEzLCAyNTIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAKKyAgICAxODMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxOTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMDEsIDExNCwgMjI3LCAxNCwgCisgICAgMjI0LCAyMTEsIDEsIDIwNiwgMTIyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTQ0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgCisgICAgMjAzLCA5MCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDI0NywgMTkwLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgNjIsIDIyNywgCisgICAgMTQsIDIyNCwgMjExLCAxLCAyMTcsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDcwLCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMSwgMjE3LCA2MywgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCAyMDQsIDMxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDcyLCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDY2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDIzOCwgMjU1LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMjIsIDc0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAyMTUsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgCisgICAgMjQ3LCAxNjUsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIDI0NywgMTY2LCAyMTUsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDIsIDI0MiwgMTcyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMiwgMjA5LCAxOTAsIDIxMywgMTUxLCAxLCAxNjEsIDIxMywgMTUxLCAKKyAgICAxLCAyMzYsIDg5LCAyMTMsIDE1MSwgMSwgMjE5LCAyNTMsIDIxMywgMTUxLCAxLCAyMDcsIDM2LCAyMTMsIDE1MSwgMSwgCisgICAgMjQyLCA1OCwgMjEzLCAxNTEsIDEsIDE4OCwgMjEzLCAxNTEsIDEsIDE3MiwgMjEzLCAxNTEsIDEsIDI0OSwgMTM2LCAyMTMsIAorICAgIDE1MSwgMSwgMTc4LCAyMTMsIDE1MSwgMSwgMjQ3LCAxOTAsIDIxMywgMTUxLCAxLCAyMjcsIDI0OCwgMjEzLCAxNTEsIDEsIAorICAgIDIxOCwgNjAsIDIxMywgMTUxLCAxLCAyMTIsIDY0LCAyMTMsIDE1MSwgMSwgMjEzLCAyNTIsIDIxMywgMTUxLCAxLCAxOTQsIAorICAgIDIxMywgMTUxLCAxLCAxODMsIDIxMywgMTUxLCAxLCAyMDEsIDExNCwgMjEzLCAxNTEsIDEsIDE0NCwgMjEzLCAxNTEsIDEsIAorICAgIDIyMiwgMTEwLCAyMTMsIDE1MSwgMSwgMjE5LCAyMzIsIDIxMywgMTUxLCAxLCAyMjAsIDc1LCAyMTMsIDE1MSwgMSwgMjE4LCAKKyAgICAyNywgMjEzLCAxNTEsIDEsIDYyLCAyMTMsIDE1MSwgMjIsIDIsIDcwLCAyMTMsIDE1MSwgMjIsIDIsIDY2LCAyMTMsIDE1MSwgCisgICAgMjIsIDIsIDcyLCAyMTMsIDE1MSwgMjIsIDIsIDI1MSwgMTc2LCAyMTMsIDE1MSwgMjIsIDIsIDc0LCAyMTMsIDE1MSwgMjIsIAorICAgIDIsIDI1MCwgMTM5LCAyMTMsIDE1MSwgMjIsIDIsIDIzOCwgNjksIDIxMywgMTUxLCAyMiwgMiwgMjM5LCAyNywgMjEzLCAKKyAgICAxNTEsIDExMSwgMiwgMjE5LCAyNTUsIDIxMywgMTUxLCAxMTEsIDIsIDIyMCwgMjE0LCAyMTMsIDE1MSwgMTExLCAyLCAxNDYsIAorICAgIDIxMywgMTUxLCAxMTEsIDIsIDIzNCwgMjQ3LCAyMTMsIDE1MSwgMjAyLCAyMDgsIDIxMywgMTUxLCAyMTEsIDE5MywgODEsIAorICAgIDI5LCAxMjksIDIwNSwgMjQ5LCAyOSwgMTI5LCAyMDUsIDI0OCwgMjksIDEyOSwgMjA1LCAyNDYsIDI5LCAxMjksIDIwNSwgCisgICAgMjUxLCAyOSwgMTI5LCAyMTMsIDczLCAyOSwgMTI5LCAyMTMsIDU3LCAyOSwgMTI5LCAyMTMsIDUyLCAyOSwgMTI5LCAyMTMsIAorICAgIDU0LCAyOSwgMTI5LCAyMTMsIDcwLCAyOSwgMTI5LCAyMTMsIDYzLCAyOSwgMTI5LCAyMTMsIDU2LCAyOSwgMTI5LCAyMTMsIAorICAgIDc1LCAyOSwgMTI5LCAyMTMsIDU4LCAyOSwgMTI5LCAyMTMsIDc3LCAyOSwgMTI5LCAyMTMsIDc0LCAyOSwgMTI5LCAyMjEsIAorICAgIDE5MywgMjksIDEyOSwgMjIxLCAxODQsIDI5LCAxMjksIDIyMSwgMTg3LCAyOSwgMTI5LCAyMTUsIDE3NSwgMjksIDEyOSwgCisgICAgMjE1LCAxODYsIDI5LCAxMjksIDIxNSwgMTg3LCAyOSwgMTI5LCAyMDgsIDE2MywgMjksIDEyOSwgMjI4LCAxNjQsIDI5LCAKKyAgICAxMjksIDIyOCwgMTcxLCAyOSwgMTI5LCAyMDgsIDE3NCwgMjksIDEyOSwgMjA4LCAxNjEsIDI5LCAxMjksIDIxNSwgMjI2LCAKKyAgICAyOSwgMTI5LCAyMzQsIDYxLCAyOSwgMTI5LCAyMDgsIDE1OCwgMjI3LCAyMzMsIDIsIDIxNiwgMTQxLCAyMjcsIDIzMywgMiwgCisgICAgMjQ3LCA3MywgMjI3LCAyMzMsIDIsIDIyNSwgNDgsIDIyNywgMjMzLCAyLCAyMDEsIDIxLCAyMjcsIDIzMywgMSwgNjIsIAorICAgIDIyNywgMjMzLCAxLCAyMzMsIDE5LCAyMjcsIDE4LCAyMjcsIDIzMywgMSwgNzAsIDIyNywgMjMzLCAxLCAyMjgsIDE1MSwgCisgICAgMjI3LCAyMzMsIDEsIDY2LCAyMjcsIDIzMywgMSwgMjE2LCAyMTEsIDI0NywgNDMsIDIyNywgMjMzLCAxLCAyMTksIDI1NCwgCisgICAgMjI1LCA3LCAyMjcsIDIzMywgMSwgMjE5LCAyNTQsIDIyNSwgOCwgMjEzLCAyMDUsIDIyNywgMjMzLCAxLCA3MiwgMjI3LCAKKyAgICAyMzMsIDEsIDI1MSwgMTc2LCAyMjcsIDIzMywgMSwgNzQsIDIyNywgMjMzLCAxLCAxNjEsIDIyNywgMjMzLCAxLCAyMjcsIAorICAgIDEwOCwgMjExLCAyNTMsIDIyNywgMjMzLCAxLCAyMjcsIDEwOCwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjM2LCA4OSwgMjI3LCAKKyAgICAyMzMsIDEsIDIzNiwgOTAsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIxOSwgMjUzLCAyMjcsIDIzMywgMSwgMjQ3LCAxOTAsIAorICAgIDIyNywgMjMzLCAxLCAyNDcsIDE5MSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjI3LCAyNDgsIDIyNywgMjMzLCAxLCAyMTgsIAorICAgIDYxLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMjcsIDI0OSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMTgsIDYwLCAyMjcsIAorICAgIDIzMywgMSwgMjA0LCAyNTMsIDIyNywgMjMzLCAxLCAyMDQsIDI1NCwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyNDEsIDIyMCwgCisgICAgMjI3LCAyMzMsIDEsIDI0MSwgMjIxLCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIyMCwgMTYyLCAyMjEsIDAsIDIyNywgMjMzLCAKKyAgICAxLCAyMDcsIDM2LCAyMjcsIDIzMywgMSwgMjA3LCAzNywgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjQyLCA1OCwgMjI3LCAyMzMsIAorICAgIDEsIDI0MiwgNTksIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMTg4LCAyMjcsIDIzMywgMSwgMTcyLCAyMjcsIDIzMywgMSwgCisgICAgMjE2LCAyMTEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDI0OSwgMTM2LCAyMjcsIDIzMywgMSwgMjQ5LCAxMzcsIDIyMSwgMCwgCisgICAgMjI3LCAyMzMsIDEsIDE3OCwgMjI3LCAyMzMsIDEsIDE4MywgMjI3LCAyMzMsIDEsIDIxMywgMjUyLCAyMjcsIDIzMywgMSwgCisgICAgMjEzLCAyNTMsIDI1MSwgMTg2LCAyMjcsIDIzMywgMSwgMTk0LCAyMjcsIDIzMywgMSwgMjAxLCAxMTQsIDIyNywgMjMzLCAxLCAKKyAgICAyMTIsIDY1LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMTIsIDY1LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIxMiwgNjQsIAorICAgIDIyNywgMjMzLCAxLCAxNDQsIDIyNywgMjMzLCAyLCAyNDcsIDc0LCAyMDYsIDE2OSwgMjI3LCAyMzMsIDIyLCAyLCAyMDYsIAorICAgIDIyOCwgMjI3LCAyMzMsIDIyLCAyLCAyMDUsIDE3OSwgMjI3LCAyMzMsIDIyLCAyLCAyMDAsIDIxMCwgMjI3LCAyMzMsIDIyLCAKKyAgICAyLCAyMDAsIDIxMSwgMjIyLCA1MSwgMjI3LCAyMzMsIDIyLCAyLCAyMDcsIDIzOCwgMjI3LCAyMzMsIDIyLCAyLCAyMDcsIAorICAgIDIzOSwgMjIyLCAzOSwgMjI3LCAyMzMsIDIyLCAyLCAyMDYsIDI0OSwgMjI3LCAyMzMsIDIyLCAyLCAyNDEsIDYsIDIyMCwgCisgICAgMjU1LCAyMjcsIDIzMywgMjIsIDIsIDIxNiwgMzAsIDIyNywgMjMzLCAxMTEsIDIsIDIyNiwgMjM2LCAyMjcsIDIzMywgMTExLCAKKyAgICAyLCAyMTYsIDQ0LCAyMjcsIDIzMywgMTExLCAyLCAyNDcsIDE3NSwgMjI3LCAyMzMsIDIxNiwgMTU0LCAyMjcsIDIzMywgNDksIAorICAgIDIxMywgMTI1LCAyMjcsIDIzMywgNTEsIDIxMywgMTI1LCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgNzgsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjIyLCAyMjAsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjI0LCAyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMDEsIAorICAgIDE0LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIxNiwgMTU1LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIyNCwgMTY4LCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyNCwgMjMsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCAyMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCAKKyAgICAyMzAsIDI1MSwgMjI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIxNSwgMTQ0LCAyMjcsIDIzMywgMjA0LCAxODUsIDIxNiwgCisgICAgMjAwLCAyMTUsIDE0NCwgMjI3LCAyMzMsIDIxNiwgMTUwLCAyMjcsIDIzMywgMTcsIDE5OSwgODEsIDIyNywgMjMzLCAxNywgCisgICAgMTAyLCAyMjcsIDIzMywgMTcsIDEwNSwgMjI3LCAyMzMsIDE3LCAxNDcsIDIyNywgMjMzLCAxNywgMTQ5LCAyMjcsIDIzMywgCisgICAgMTcsIDE2NCwgMjI3LCAyMzMsIDE3LCAxODcsIDIyNywgMjMzLCAxNywgMjEwLCAxMzUsIDIyNywgMjMzLCAxNywgMTkyLCAKKyAgICAyMjcsIDIzMywgMTcsIDIxOSwgMTEzLCAyMjcsIDIzMywgMjE2LCAyMDAsIDIwNSwgMjE1LCAyMDQsIDIwMCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjgsIDIyLCA3MSwgMSwgMjEwLCA5MCwgMjM1LCAxOTksIDcxLCAxLCAyMTAsIDkwLCAyNDcsIDM3LCA3MSwgCisgICAgMSwgMjEwLCA5MCwgMjI3LCAyMTUsIDcxLCAxLCAyMTAsIDkwLCAyMTksIDIxLCA3MSwgMSwgMjEwLCA5MCwgMjQ4LCAyMDAsIAorICAgIDcxLCAyLCAyMTAsIDkwLCAyMTEsIDIzOSwgNzEsIDY3LCAxLCAyMTAsIDkwLCAyMTMsIDE2OCwgNzEsIDEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMjE4LCA2MCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM3LCAxOTUsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNiwgCisgICAgODksIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNSwgMTk5LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMjcsIDI0OCwgNzEsIDEsIAorICAgIDQ2LCAyMjUsIDE0OCwgMjI3LCAyMTUsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MSwgMjIwLCA3MSwgMSwgNDYsIDIyNSwgCisgICAgMTQ4LCAyNDEsIDIwNCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjE5LCAyMSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE5OSwgCisgICAgODEsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxMDIsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxMDUsIDcxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDE3LCAxNDcsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxNDksIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxNjQsIDcxLCAKKyAgICA0NiwgMjI1LCAxNDgsIDE3LCAxODcsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAyMTAsIDEzNSwgNzEsIDQ2LCAyMjUsIDE0OCwgCisgICAgMTcsIDE5MiwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDIxOSwgMTEzLCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMjQsIDEzOCwgCisgICAgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQyLCA1OCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQxLCAxMDAsIDcxLCAxLCA0NiwgCisgICAgMjI1LCAxNDgsIDI0OSwgMTM2LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDgsIDIwMCwgMjQ3LCAzMCwgMSwgNjIsIDI0NywgCisgICAgMzAsIDEsIDcwLCAyNDcsIDMwLCAxLCA2NiwgMjQ3LCAzMCwgMSwgNzIsIDI0NywgMzAsIDEsIDI1MSwgMTc2LCAyNDcsIDMwLCAKKyAgICAxLCA3NCwgMjQ3LCAzMCwgMSwgMTYxLCAyNDcsIDMwLCAxLCAyMjYsIDIwNywgMjQ3LCAzMCwgMSwgMjM2LCA4OSwgMjQ3LCAKKyAgICAzMCwgMSwgMjM1LCAxOTksIDI0NywgMzAsIDEsIDIxOSwgMTYyLCAyNDcsIDMwLCAxLCAyMTksIDI1MywgMjQ3LCAzMCwgMSwgCisgICAgMjQ3LCAzNywgMjQ3LCAzMCwgMSwgMjQ2LCAyMzgsIDI0NywgMzAsIDEsIDIyNywgMjQ4LCAyNDcsIDMwLCAxLCAyMjcsIAorICAgIDIxNSwgMjQ3LCAzMCwgMSwgMjE5LCAxNTIsIDI0NywgMzAsIDEsIDIxOSwgMTU0LCAyNDcsIDMwLCAxLCAyMTksIDE1MywgCisgICAgMjQ3LCAzMCwgMSwgMjA3LCAzNiwgMjQ3LCAzMCwgMSwgMjA2LCAxMjIsIDI0NywgMzAsIDEsIDI0MiwgNTgsIDI0NywgMzAsIAorICAgIDEsIDI0MSwgMTAwLCAyNDcsIDMwLCAxLCAyMTgsIDEwMiwgMjQ3LCAzMCwgMSwgMTg4LCAyNDcsIDMwLCAxLCAyNDEsIDIyMCwgCisgICAgMjQ3LCAzMCwgMSwgMTcyLCAyNDcsIDMwLCAxLCAyMTUsIDQ3LCAyNDcsIDMwLCAxLCAyMTUsIDI0NSwgMjQ3LCAzMCwgMSwgCisgICAgMjQ5LCAxMzYsIDI0NywgMzAsIDEsIDI0OCwgMjAwLCAyNDcsIDMwLCAxLCAyMjEsIDMzLCAyNDcsIDMwLCAxLCAxNzgsIAorICAgIDI0NywgMzAsIDEsIDI0OSwgNDQsIDI0NywgMzAsIDEsIDE4MywgMjQ3LCAzMCwgMSwgMjEzLCAyNTIsIDI0NywgMzAsIDEsIAorICAgIDE5NCwgMjQ3LCAzMCwgMSwgMjAzLCA5MCwgMjQ3LCAzMCwgMSwgMjA4LCAxNzksIDI0NywgMzAsIDEsIDIxMiwgNjQsIDI0NywgCisgICAgMzAsIDEsIDE0NCwgMjQ3LCAzMCwgMjIsIDIsIDI1MiwgMTM4LCAyNDcsIDMwLCAyMiwgMiwgNzAsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMjQ3LCAzMCwgMjIsIDIsIDIzOCwgMjM0LCAyNDcsIDMwLCAyMiwgMiwgNjYsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyMTcsIDEyMSwgMjQ3LCAzMCwgMjIsIDIsIDc0LCAyNDcsIDMwLCAyMiwgMiwgMjUxLCAxNzYsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMjQ3LCAzMCwgMjIsIDIsIDIwNCwgMzEsIDI0NywgMzAsIDExMSwgMiwgMTgzLCAyNDcsIDMwLCAxMTEsIDIsIAorICAgIDIxMywgMjUyLCAyNDcsIDMwLCAxMTEsIDIsIDE5NCwgMjQ3LCAzMCwgMTExLCAyLCAyMDEsIDExNCwgMjQ3LCAzMCwgMSwgCisgICAgNDcsIDIyNywgMTE4LCAyNDcsIDMwLCAxLCA0NywgMjM2LCAxNTYsIDI0NywgMzAsIDEsIDQ3LCAyMTksIDI1NSwgMjQ3LCAKKyAgICAzMCwgMTExLCAyLCA0NywgMjE5LCAyNTUsIDI0NywgMzAsIDEsIDQ3LCAyNDcsIDM4LCAyNDcsIDMwLCAxLCA0NywgMjA3LCAKKyAgICA4MywgMjQ3LCAzMCwgMSwgNDcsIDIyMCwgMjE0LCAyNDcsIDMwLCAxLCA0NywgMjE2LCAyMjYsIDI0NywgMzAsIDEsIDQ3LCAKKyAgICAyMDAsIDEyMywgMjQ3LCAzMCwgMSwgNDcsIDE0NiwgMjQ3LCAzMCwgMSwgNDcsIDE1NiwgMjQ3LCAzMCwgMSwgNDcsIDIwOCwgCisgICAgMTgyLCAyNDcsIDMwLCAxMTEsIDIsIDQ3LCAyMjMsIDI0MywgMjQ3LCAzMCwgMTExLCAyLCA0NywgMjM0LCAyNDcsIDI0NywgCisgICAgMzAsIDE3LCAxOTksIDgxLCAyNDcsIDMwLCAxNywgMTAyLCAyNDcsIDMwLCAxNywgMTA1LCAyNDcsIDMwLCAxNywgMTQ3LCAKKyAgICAyNDcsIDMwLCAxNywgMTQ5LCAyNDcsIDMwLCAxNywgMTY0LCAyNDcsIDMwLCAxNywgMTg3LCAyNDcsIDMwLCAxNywgMjEwLCAKKyAgICAxMzUsIDI0NywgMzAsIDE3LCAxOTIsIDI0NywgMzAsIDE3LCAyMTksIDExMywgMjQ3LCAzMCwgMjE0LCAyMTIsIDIwOCwgCisgICAgMjE3LCAyNDcsIDMwLCAyMTQsIDIxMiwgMjQyLCAxMCwgMjQ3LCAzMCwgMjE0LCAyMTIsIDUzLCAyNDIsIDEwLCAyNDcsIDMwLCAKKyAgICAyMTQsIDIxMiwgMjA1LCA4MywgMjQyLCAxMCwgNzEsIDEsIDIyNiwgMjAwLCAyMzYsIDg5LCA3MSwgMSwgMjI2LCAyMDAsIAorICAgIDI0NywgMTkwLCA3MSwgMSwgMjI2LCAyMDAsIDI0NywgMzcsIDcxLCAxLCAyMjYsIDIwMCwgMjI3LCAyNDgsIDcxLCAxLCAKKyAgICAyMjYsIDIwMCwgMjI3LCAyMTUsIDcxLCAxLCAyMjYsIDIwMCwgMjE4LCA2MCwgNzEsIDEsIDIyNiwgMjAwLCAyMDQsIDI1MywgCisgICAgNzEsIDEsIDIyNiwgMjAwLCAyMDQsIDI0MSwgNzEsIDEsIDIyNiwgMjAwLCAyNDEsIDIyMCwgNzEsIDEsIDIyNiwgMjAwLCAKKyAgICAyNDEsIDIwNCwgNzEsIDEsIDIyNiwgMjAwLCAyNDEsIDEwMCwgNzEsIDEsIDIyNiwgMjAwLCAxODgsIDcxLCAxLCAyMjYsIAorICAgIDIwMCwgMjEyLCA2NCwgNzEsIDEsIDIyNiwgMjAwLCAxNDQsIDcxLCAxLCAyMjYsIDIwMCwgMjM0LCA4NCwgNzEsIDEsIDIyNiwgCisgICAgMjAwLCAyMzcsIDE5NSwgNzEsIDY3LCAxLCAyMjYsIDIwMCwgMjEzLCAxNjgsIDcxLCAxLCAyMjYsIDIwMCwgMjAwLCAxODEsIAorICAgIDcxLCAxLCAyMjYsIDIwMCwgMTk5LCAxMTQsIDcxLCAxLCAyMjYsIDIwMCwgMjEzLCAyNTIsIDcxLCAyMjQsIDk3LCAyMjYsIAorICAgIDIwMCwgMjE3LCAxNDMsIDcxLCAyMjQsIDk3LCAyMjYsIDIwMCwgMjE0LCAxMTAsIDcxLCAyMjQsIDk3LCAyMjYsIDIwMCwgCisgICAgMjM0LCA2LCA3MSwgMTYsIDI1MSwgMTYzLCAyMzgsIDQyLCA3MSwgMTYsIDI1MSwgMTYzLCAxMDIsIDcxLCAxNiwgMjUxLCAKKyAgICAxNjMsIDEwNSwgNzEsIDEsIDI1MSwgMTYzLCAyMTMsIDI1MiwgNzEsIDIsIDIxNiwgMTM3LCAyMjcsIDQ0LCAyMDUsIDE3NCwgCisgICAgNzEsIDIsIDQ2LCAyMjUsIDE0OCwgMjA1LCAxNzIsIDcxLCAyLCA0NiwgMjI1LCAxNDgsIDIwNSwgMTY5LCA3MSwgMSwgMjA5LCAKKyAgICAxOTgsIDIxNiwgMTgxLCAyNDcsIDM3LCA3MSwgMSwgMjA5LCAxOTgsIDIxNiwgMTgxLCAyMTAsIDExNCwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIyNiwgODgsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDg4LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjI2LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyNiwgCisgICAgMTg3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCAxODcsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMzUsIDExNiwgNDYsIAorICAgIDIwMiwgMjI0LCAxLCAxMjIsIDIzNSwgMTE2LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE5LCAxNzgsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMTksIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0NiwgOTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyNDYsIDkxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ2LCAyMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDYsIDIxMCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwOSwgMjksIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMDksIDI5LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjE4LCAyNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxOCwgMjYsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyNDAsIDIxMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0MCwgMjExLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMTM4LCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMTM4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTgsIDI0MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDIxOCwgMjQxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ4LCAxMjQsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDgsIDEyNCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxNSwgMTA2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE1LCAxMDYsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMTUsIDIxNywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxNSwgMjE3LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjM3LCAxMywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIzNywgMTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjEsIAorICAgIDEzNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyMSwgMTM2LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMTk5LCAyNDUsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMSwgMTIyLCAxOTksIDI0NSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxMywgMSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIxMywgMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyNCwgMTEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjI0LCAxMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDIsIDE5MywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIwMiwgMTkzLCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjMzLCAyMDcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMzMsIDIwNywgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDc0LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgNzQsIDQ2LCAyMDIsIDIyNCwgMjIyLCAxOTksIDIyNywgCisgICAgNjQsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MiwgMTM4LCA0NiwgMjAyLCAyMjQsIDIyLCA3MCwgNDYsIDIwMiwgMjI0LCAyMiwgCisgICAgMjA0LCAzMSwgNDYsIDIwMiwgMjI0LCAyMiwgNjYsIDQ2LCAyMDIsIDIyNCwgMjIsIDcyLCA0NiwgMjAyLCAyMjQsIDIyLCAKKyAgICA3NCwgNDYsIDIwMiwgMjI0LCAyMjIsIDE5OSwgMjI2LCAxODEsIDQ2LCAyMDIsIDIyNCwgMjIsIDIzMiwgMjQwLCA0NiwgCisgICAgMjAyLCAyMjQsIDIyLCAyMDQsIDMwLCA0NiwgMjAyLCAyMjQsIDIyLCAyMDQsIDQ2LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTAsIAorICAgIDEzNywgNDYsIDIwMiwgMjI0LCAyMiwgMjUwLCAxMTIsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MSwgODUsIDQ2LCAyMDIsIDIyNCwgCisgICAgMjIsIDI1MSwgMTAxLCA0NiwgMjAyLCAyMjQsIDE1MCwgMjIyLCAxOTksIDIzOCwgMjE2LCA0NiwgMjAyLCAyMjQsIDE1MCwgCisgICAgMjIyLCAxOTksIDIxOCwgMTAxLCA0NiwgMjAyLCAyMjQsIDE1MCwgMjIyLCAxOTksIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMTUwLCAyMjIsIDE5OSwgMjA5LCAxMiwgNDYsIDIwMiwgMjI0LCAxNiwgMjI2LCA3MSwgNDYsIDIwMiwgMjI0LCAxNiwgMjE4LCAKKyAgICAxMDEsIDQ2LCAyMDIsIDIyNCwgMTYsIDIxMiwgMjMsIDQ2LCAyMDIsIDIyNCwgMTYsIDIzMywgMjA4LCAyMzMsIDIwMiwgNDYsIAorICAgIDIwMiwgMjI0LCAxNiwgMjI2LCA4MSwgMjI2LCA4MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDcyLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgNzQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDcsIDM3LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE4LCA2MCwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNCwgMjUzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA0LCAyNDEsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxLCAyNDEsIDIyMCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgMjA0LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjE5LCAyMSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMCwgMTE0LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA4LCAKKyAgICAxNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjI4LCAxNTEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUyLCAxMDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUwLCAKKyAgICAxMzksIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUyLCA5NSwgMjIyLCA1OCwgMjIyLCAxMTcsIDI0NiwgMjUzLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMjUxLCAxODIsIDIyNiwgMTcwLCAyMjIsIDU4LCAyMjIsIDExNywgMjUxLCA2MiwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDUsIDIxMywgMTMwLCA4MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIwMCwgMjM4LCAyMTMsIDEzMCwgODEsIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAyLCAyMDMsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMDIsIDIwOCwgMzQsIDUsIAorICAgIDIwNCwgMjM0LCAzNCwgNSwgMjA0LCAyMzcsIDM0LCA1LCAyMDQsIDI0MCwgMzQsIDUsIDIwNCwgMjM4LCAzNCwgNSwgMjA0LCAKKyAgICAyMzksIDM0LCA1LCAyMDQsIDIzNiwgMzQsIDUsIDI0MSwgMTk4LCAzNCwgNSwgMjQxLCAyMDAsIDM0LCA1LCAyNDEsIDIwMywgCisgICAgMzQsIDUsIDI0MSwgMjAxLCAzNCwgNSwgMjQxLCAyMDIsIDM0LCA1LCAyNDEsIDE5OSwgMzQsIDUsIDIzOSwgODAsIDM0LCA1LCAKKyAgICAyMzksIDg0LCAzNCwgNSwgMjM5LCA5MiwgMzQsIDUsIDIzOSwgODksIDM0LCA1LCAyMzksIDkwLCAzNCwgNSwgMjM5LCA4MSwgCisgICAgMzQsIDUsIDI0NywgOTAsIDM0LCA1LCAyNDcsIDg0LCAzNCwgNSwgMjQ3LCA4NiwgMzQsIDUsIDI0NywgODksIDM0LCA1LCAKKyAgICAyNDcsIDg3LCAzNCwgNSwgMjQ3LCA4OCwgMzQsIDUsIDI0NywgODUsIDM0LCA1LCAyNDksIDQ0LCAzNCwgNSwgMjQ5LCAyMywgCisgICAgMzQsIDUsIDI0OSwgMzUsIDM0LCA1LCAyNDksIDQzLCAzNCwgNSwgMjQ5LCAzOCwgMzQsIDUsIDI0OSwgMzksIDM0LCA1LCAKKyAgICAyNDksIDI3LCA4LCA0LCAxLCAyNDksIDcxLCAyNTEsIDExMiwgOCwgNCwgMSwgMzUsIDIxMywgMTAzLCA4LCA0LCAxLCAyNDgsIAorICAgIDE0MCwgNzIsIDgsIDQsIDEsIDI0OSwgNzEsIDcyLCA4LCA0LCAxLCAxOTcsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDIyNCwgCisgICAgMjQ5LCAyMzgsIDUsIDgsIDQsIDEsIDEzNSwgMjM2LCAxNTcsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjI4LCA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA1MywgMTAxLCAyMDUsIDI0MCwgOCwgCisgICAgNCwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjEzLCAyNiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIzOCwgMTY2LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjQ4LCAxNDAsIAorICAgIDc0LCA4LCA0LCAxLCAyNDgsIDE0MCwgMTYzLCAzLCA5NywgOCwgNCwgMSwgMTc2LCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAKKyAgICAyMjgsIDUwLCAyMTcsIDEyMSwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNywgMTIyLCAzLCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIAorICAgIDIxNywgMTIyLCAzLCAyMzMsIDE3NywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAxNjMsIDIxNywgNDksIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAxNjMsIDIxNywgNTAsIDMsIDk3LCA4LCA0LCAxLCAyMDgsIDgxLCAxNDYsIDgsIDEsIDQsIDYsIDIxNCwgMzMsIDMsIAorICAgIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAyMTQsIDMzLCAyMDEsIDMsIDIzNCwgMTc3LCA4LCA0LCAxLCA1MywgMTQ2LCA4LCA0LCAKKyAgICAxLCAyMTQsIDMzLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgNTMsIDIxNCwgMzMsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAxMzUsIAorICAgIDE0NiwgOCwgNCwgMSwgMTM1LCAyMTQsIDMzLCAzLCAyMTMsIDI2LCA4LCA0LCAxLCAyNDksIDYyLCAyMzgsIDk0LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDIwOSwgMjUwLCA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMTA4LCAyNDksIDc3LCAzLCAyMDksIDI1MCwgNTEsIAorICAgIDIyNSwgMTYsIDgsIDQsIDEsIDIwNCwgMjMsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDQsIDIzLCA4LCA0LCAxLCAxMDgsIDMsIAorICAgIDQ5LCAxMTcsIDgsIDQsIDEsIDI0NiwgMjM2LCA4LCA0LCAxLCAyNDYsIDIzNywgMywgMTI4LCA1MSwgMjEzLCAyNiwgOCwgNCwgCisgICAgMSwgMjQ2LCAyMzcsIDMsIDEyOCwgNDksIDIxMCwgMTQ5LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTI4LCA1MSwgMjEzLCAKKyAgICAyNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgNDksIDIyNSwgMTYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIAorICAgIDQ5LCAyMjUsIDE3LCAyNiwgMTI4LCA1MSwgMjEzLCAyNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgNDksIDIyNSwgCisgICAgMTcsIDMsIDIxMCwgMTQ5LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjA5LCAyNTAsIDUxLCAyMjUsIDE2LCA2NywgMjQ4LCAKKyAgICA1OCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgNjcsIDEsIDQsIDIzNCwgMTAzLCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDIyOCwgCisgICAgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDEwMSwgMjA1LCAyNDAsIDY3LCAxLCA0LCAKKyAgICAxMDgsIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIxMiwgMzksIDIwMCwgNjUsIDgsIDQsIDEsIDIyOCwgMzksIDcyLCA4LCA0LCAKKyAgICAxLCAxNzYsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDMsIDIzMiwgOCwgNCwgMSwgMjI4LCA1MCwgMjUxLCAxMTIsIDMxLCAxLCAKKyAgICA0LCA2LCAyMTcsIDgzLCA5MSwgNCwgMSwgNjIsIDkxLCA0LCAxLCA3MiwgOTEsIDQsIDEsIDcwLCA5MSwgNCwgMSwgNzQsIAorICAgIDkxLCA0LCAxLCA2NiwgOTEsIDQsIDEsIDIwMywgMTY4LCA5MSwgNCwgMSwgMjM2LCA4OSwgOTEsIDQsIDEsIDE2MSwgOTEsIAorICAgIDQsIDEsIDIzNiwgMTUsIDkxLCA0LCAxLCAyMzUsIDE2MSwgOTEsIDQsIDEsIDIzNSwgMTE2LCA5MSwgNCwgMSwgMjM1LCA1MCwgCisgICAgOTEsIDQsIDEsIDIzNSwgMTIsIDkxLCA0LCAxLCAxNDQsIDkxLCA0LCAxLCAyMzQsIDEzOSwgOTEsIDQsIDEsIDIzNCwgNzUsIAorICAgIDkxLCA0LCAxLCAyMzMsIDIwNywgOTEsIDQsIDEsIDIzMywgOTcsIDkxLCA0LCAxLCAyMzMsIDY5LCA5MSwgNCwgMSwgMTk0LCAKKyAgICA5MSwgNCwgMSwgMjI1LCA0MCwgOTEsIDQsIDEsIDIyNCwgMjEwLCA5MSwgNCwgMSwgMjI0LCAxMTAsIDkxLCA0LCAxLCAyMjQsIAorICAgIDQyLCA5MSwgNCwgMSwgMjI0LCAxMSwgOTEsIDQsIDEsIDE3OCwgOTEsIDQsIDEsIDIyMiwgNzYsIDkxLCA0LCAxLCAyMjEsIAorICAgIDIxMSwgOTEsIDQsIDEsIDIyMSwgMTM2LCA5MSwgNCwgMSwgMjIxLCA0MSwgOTEsIDQsIDEsIDE4OCwgOTEsIDQsIDEsIDIzMywgCisgICAgMjMxLCA5MSwgNCwgMSwgMjIwLCAxNDQsIDkxLCA0LCAxLCAyMjAsIDM0LCA5MSwgNCwgMSwgMjE5LCAxNTAsIDkxLCA0LCAxLCAKKyAgICAyMTgsIDI0MSwgOTEsIDQsIDEsIDIxOCwgMTMzLCA5MSwgNCwgMSwgMjE4LCA3MSwgOTEsIDQsIDEsIDIxNCwgOTYsIDkxLCAKKyAgICA0LCAxLCAyMTQsIDgyLCA5MSwgNCwgMSwgMjE0LCA3NSwgOTEsIDQsIDEsIDIxNCwgNjYsIDkxLCA0LCAxLCAyMTQsIDU1LCAKKyAgICA5MSwgNCwgMSwgMjE0LCA1MywgOTEsIDQsIDEsIDIxMiwgNjQsIDkxLCA0LCAxLCAyMTIsIDEyMiwgOTEsIDQsIDEsIDIxMSwgCisgICAgMjAyLCA5MSwgNCwgMSwgMjA5LCAxODIsIDkxLCA0LCAxLCAyMDksIDI5LCA5MSwgNCwgMSwgMjA4LCAyNCwgOTEsIDQsIDEsIAorICAgIDIwNywgMTkxLCA5MSwgNCwgMSwgMjQyLCA1OCwgOTEsIDQsIDEsIDIwNywgMzYsIDkxLCA0LCAxLCAyNDEsIDE3NSwgOTEsIAorICAgIDQsIDEsIDIwNiwgMjAxLCA5MSwgNCwgMSwgMjQxLCA3NiwgOTEsIDQsIDEsIDIwNiwgMTUsIDkxLCA0LCAxLCAyNDAsIDIxMSwgCisgICAgOTEsIDQsIDEsIDIzOSwgMTM3LCA5MSwgNCwgMSwgMjM5LCAxMDcsIDkxLCA0LCAxLCAyNDAsIDIyMiwgOTEsIDQsIDEsIAorICAgIDIwNSwgMjAzLCA5MSwgNCwgMSwgMjA1LCAyMDIsIDkxLCA0LCAxLCAyMDUsIDE5MSwgOTEsIDQsIDEsIDIwNSwgMTkwLCA5MSwgCisgICAgNCwgMSwgMjA1LCAxODksIDkxLCA0LCAxLCAyMDUsIDE4OCwgOTEsIDQsIDEsIDIwNSwgMzIsIDkxLCA0LCAxLCAyMDUsIDI2LCAKKyAgICA5MSwgNCwgMSwgMjA1LCAxMSwgOTEsIDQsIDEsIDIwNSwgOSwgOTEsIDQsIDEsIDIwNSwgNSwgOTEsIDQsIDEsIDIwNSwgNCwgCisgICAgOTEsIDQsIDEsIDIwMSwgMTE0LCA5MSwgNCwgMSwgMjAxLCA2NCwgOTEsIDQsIDEsIDIwMSwgMzEsIDkxLCA0LCAxLCAyMDEsIAorICAgIDAsIDkxLCA0LCAxLCAyMDAsIDIxNiwgOTEsIDQsIDEsIDIwMCwgMjAzLCA5MSwgNCwgMSwgMTgzLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgMjI2LCA3OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMiwgMjMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAKKyAgICAyMjUsIDE0OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMSwgMTQ3LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMTcyLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMTg4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQ2LCAyMjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMDUsIDI0MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNiwgMTczLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE5LCAKKyAgICAxNjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDYsIDUzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjAxLCAxMDgsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyMDAsIDc1LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjMzLCA4OSwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDIwNCwgNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDcwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE1LCAyMzksIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNTAsIDE1MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzNSwgMTA5LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMSwgMjI3LCAyMTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTMsIDIyOSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDI0OSwgMTM2LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI3LCAxOTgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIAorICAgIDMzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjM1LCAxNjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIDc4LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjQ4LCAxOTgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjYsIDc5LCAyMjQsIDc5LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjI1LCAxNTAsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjEsIDE0OCwgMjI0LCAKKyAgICA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxNiwgMjExLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIwLCAKKyAgICAxNjIsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDUsIDI0MywgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIxOSwgMTY5LCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjMzLCAxOSwgMjI0LCA3OSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyMTcsIDc2LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIyOCwgMTE1LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDI1MSwgODMsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAwLCA0MCwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyMDksIDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjA0LCAyLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMjIsIDIsIDI0NiwgMjUxLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIxOCwgODYsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAyNDYsIDI1MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyNCwgMjYsIDIyOCwgMSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDI1MSwgMiwgMjI4LCAxLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE5OSwgODEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgCisgICAgMTAyLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDEwNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxNDcsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxNywgMTQ5LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE2NCwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAKKyAgICAxODcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMjEwLCAxMzUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTkyLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMTcsIDIxOSwgMTEzLCAyOSwgMTgxLCAyMTcsIDIyMywgMjksIDE4MSwgMjE3LCAyMjgsIDI5LCAKKyAgICAxODEsIDE5OSwgMjQ0LCAyOSwgMTgxLCAxOTksIDI0MywgMjksIDE4MSwgMTk5LCAyNDIsIDI5LCAxODEsIDIwNCwgOTYsIAorICAgIDI5LCAxODEsIDIwNCwgMTAwLCAyOSwgMTgxLCAxOTksIDIwOSwgMjksIDE4MSwgMTk5LCAyMDUsIDI5LCAxODEsIDIzOCwgCisgICAgNjgsIDI5LCAxODEsIDIzOCwgNjYsIDI5LCAxODEsIDIzOCwgNjcsIDI5LCAxODEsIDIzOCwgNjQsIDI5LCAxODEsIDIzMywgCisgICAgOSwgMjksIDE4MSwgMjMzLCA4LCAyOSwgMTgxLCAyMzMsIDYsIDI5LCAxODEsIDIzMywgNywgMjksIDE4MSwgMjMzLCAxMiwgCisgICAgMjksIDE4MSwgMjMzLCA1LCAyOSwgMTgxLCAyMzMsIDQsIDI5LCAxODEsIDIzMywgMTQsIDI5LCAxODEsIDI1MCwgMjQ0LCAKKyAgICAyOSwgMTgxLCAyNTAsIDI0MywgMjksIDExMCwgMjE5LCAxMzYsIDI5LCAxMTAsIDIxOSwgMTQyLCAyOSwgMTEwLCAyMDgsIAorICAgIDE2MCwgMjksIDExMCwgMjA4LCAxNTksIDI5LCAxMTAsIDIwNSwgMjQ4LCAyOSwgMTEwLCAyMDUsIDI0NiwgMjksIDExMCwgCisgICAgMjA1LCAyNDUsIDI5LCAxMTAsIDIwNSwgMjUxLCAyOSwgMTEwLCAyMDUsIDI1MiwgMjksIDExMCwgMjA1LCAyNDQsIDI5LCAKKyAgICAxMTAsIDIxMywgNTcsIDI5LCAxMTAsIDIxMywgNzIsIDI5LCAxMTAsIDIwOCwgMTY2LCAyOSwgMTEwLCAyMTMsIDY5LCAyOSwgCisgICAgMTEwLCAyMTMsIDU5LCAyOSwgMTEwLCAyMTMsIDYxLCAyOSwgMTEwLCAyMTMsIDQ4LCAyOSwgMTEwLCAyMTMsIDQ5LCAyOSwgCisgICAgMTEwLCAyMjcsIDUwLCAyOSwgMTEwLCAyMjEsIDE5MiwgMjksIDExMCwgMjIxLCAxODYsIDI5LCAxMTAsIDIwOCwgMTcwLCAKKyAgICAyOSwgMTEwLCAyMjEsIDE4OSwgMjksIDExMCwgMjIxLCAxOTUsIDI5LCAxMTAsIDIxNSwgMTcxLCAyOSwgMTEwLCAyMTUsIAorICAgIDE4MCwgMjksIDExMCwgMjE1LCAxODQsIDI5LCAxMTAsIDIwOCwgMTY4LCAyOSwgMTEwLCAyMTUsIDE3NCwgMjksIDExMCwgCisgICAgMjE1LCAxODgsIDI5LCAxMTAsIDIxNSwgMTg5LCAyOSwgMTEwLCAyMDksIDEyMSwgMjksIDExMCwgMjA5LCAxMjQsIDI5LCAKKyAgICAxMTAsIDIwOCwgMTY0LCAyOSwgMTEwLCAyMDgsIDE2MiwgMjksIDExMCwgMjA5LCAxMTksIDI5LCAxMTAsIDIwOSwgMTI3LCAKKyAgICAyOSwgMTEwLCAyMDksIDEyOCwgMjksIDExMCwgMjA5LCAxMTMsIDI5LCAxMTAsIDIwOSwgMTI2LCAyOSwgMTEwLCAyMTYsIAorICAgIDE0NCwgMjksIDExMCwgMjE2LCAxNDUsIDI5LCAxMTAsIDIwMCwgMjYsIDI5LCAxMTAsIDIwMCwgMjcsIDI5LCAxMTAsIDI0NiwgCisgICAgMTY2LCAyOSwgMTEwLCAyNDYsIDE2NSwgMjksIDExMCwgMjA4LCAxNzUsIDI5LCAxMTAsIDIxNSwgMjI0LCAyOSwgMTEwLCAKKyAgICAyMTUsIDIyMywgMTIsIDE1LCAyMzAsIDE0MiwgMTIsIDE1LCAyMzAsIDE0MSwgMTIsIDE1LCAyMzAsIDE0MCwgMTIsIDE1LCAKKyAgICAyMzAsIDEzOSwgMTIsIDE1LCAyMzAsIDEzOCwgMTIsIDE1LCAyMzAsIDEzNywgMTIsIDE1LCAyMzAsIDEzNiwgMTIsIDE1LCAKKyAgICAyMzAsIDEzNSwgMTIsIDE1LCAyMzAsIDEzNCwgMTIsIDE1LCAyMzAsIDEzMywgMTIsIDE1LCAyMzAsIDEzMiwgMTIsIDE1LCAKKyAgICAyMzAsIDEzMSwgMTIsIDE1LCAyMzAsIDEzMCwgMTIsIDE1LCAyMzAsIDEyOSwgMTIsIDE1LCAyMzAsIDEyOCwgMTIsIDE1LCAKKyAgICAyMzAsIDEyNywgMTIsIDE1LCAyMzAsIDEyNiwgMTIsIDE1LCAyMzAsIDEyNSwgMTIsIDE1LCAyMzAsIDEyNCwgMTIsIDE1LCAKKyAgICAyMzAsIDEyMywgMTIsIDE1LCAyMzAsIDEyMiwgMTIsIDE1LCAyMzAsIDEyMSwgMTIsIDE1LCAyMzAsIDEyMCwgMTIsIDE1LCAKKyAgICAyMzAsIDExOSwgMTIsIDE1LCAyMzAsIDExOCwgMTIsIDE1LCAyMzAsIDExNywgMTIsIDE1LCAyMzAsIDExNiwgMTIsIDE1LCAKKyAgICAyMzAsIDExNSwgMTIsIDE1LCAyMzAsIDExNCwgMTIsIDE1LCAyMzAsIDExMywgMTIsIDE1LCAyMzAsIDExMiwgMTIsIDE1LCAKKyAgICAyMzAsIDExMSwgMTIsIDE1LCAyMzAsIDExMCwgMTIsIDE1LCAyMzAsIDEwOSwgMTIsIDE1LCAyMzAsIDEwOCwgMTIsIDE1LCAKKyAgICAyMzAsIDEwNywgMTIsIDE1LCAyMzAsIDEwNiwgMTIsIDE1LCAyMzAsIDEwNSwgMTIsIDE1LCAyMzAsIDEwNCwgMTIsIDE1LCAKKyAgICAyMzAsIDEwMywgMTIsIDE1LCAyMzAsIDEwMiwgMTIsIDE1LCAyMzAsIDEwMSwgMTIsIDE1LCAyMzAsIDEwMCwgMTIsIDE1LCAKKyAgICAyMzAsIDk5LCAxMiwgMTUsIDIzMCwgOTgsIDEyLCAxNSwgMjMwLCA5NywgMTIsIDE1LCAyMzAsIDk2LCAxMiwgMTUsIDIzMCwgCisgICAgOTUsIDEyLCAxNSwgMjMwLCA5NCwgMTIsIDE1LCAyMzAsIDkzLCAxMiwgMTUsIDIzMCwgOTIsIDEyLCAxNSwgMjMwLCA5MSwgCisgICAgMTIsIDE1LCAyMzAsIDkwLCAxMiwgMTUsIDIzMCwgODksIDEyLCAxNSwgMjMwLCA4OCwgMTIsIDE1LCAyMzAsIDg3LCAxMiwgCisgICAgMTUsIDIzMCwgODYsIDEyLCAxNSwgMjMwLCA4NSwgMTIsIDE1LCAyMzAsIDg0LCAxMiwgMTUsIDIzMCwgODMsIDEyLCAxNSwgCisgICAgMjMwLCA4MiwgMTIsIDE1LCAyMzAsIDgxLCAxMiwgMTUsIDIzMCwgODAsIDEyLCAxNSwgMjMwLCA3OSwgMTIsIDE1LCAyMzAsIAorICAgIDc4LCAxMiwgMTUsIDIzMCwgNzcsIDEyLCAxNSwgMjMwLCA3NiwgMTIsIDE1LCAyMzAsIDc1LCAxMiwgMTUsIDIzMCwgNzQsIAorICAgIDEyLCAxNSwgMjMwLCA3MywgMTIsIDE1LCAyMzAsIDcyLCAxMiwgMTUsIDIzMCwgNzEsIDEyLCAxNSwgMjMwLCA3MCwgMTIsIAorICAgIDE1LCAyMzAsIDY5LCAxMiwgMTUsIDIzMCwgNjgsIDEyLCAxNSwgMjMwLCA2NywgMTIsIDE1LCAyMzAsIDY2LCAxMiwgMTUsIAorICAgIDIzMCwgNjUsIDEyLCAxNSwgMjMwLCA2NCwgMTIsIDE1LCAyMzAsIDYzLCAxMiwgMTUsIDIzMCwgNjIsIDEyLCAxNSwgMjMwLCAKKyAgICA2MSwgMTIsIDE1LCAyMzAsIDYwLCAxMiwgMTUsIDIzMCwgNTksIDEyLCAxNSwgMjMwLCA1OCwgMTIsIDE1LCAyMzAsIDU3LCAKKyAgICAxMiwgMTUsIDIzMCwgNTYsIDEyLCAxNSwgMjMwLCA1NSwgMTIsIDE1LCAyMzAsIDU0LCAxMiwgMTUsIDIzMCwgNTMsIDEyLCAKKyAgICAxNSwgMjMwLCA1MiwgMTIsIDE1LCAyMzAsIDUxLCAxMiwgMTUsIDIzMCwgNTAsIDEyLCAxNSwgMjMwLCA0OSwgMTIsIDE1LCAKKyAgICAyMzAsIDQ4LCAxMiwgMTUsIDIzMCwgNDcsIDEyLCAxNSwgMjMwLCA0NiwgMTIsIDE1LCAyMzAsIDQ1LCAxMiwgMTUsIDIzMCwgCisgICAgNDQsIDEyLCAxNSwgMjMwLCA0MywgMTIsIDE1LCAyMzAsIDQyLCAxMiwgMTUsIDIzMCwgNDEsIDEyLCAxNSwgMjMwLCA0MCwgCisgICAgMTIsIDE1LCAyMzAsIDM5LCAxMiwgMTUsIDIzMCwgMzgsIDEyLCAxNSwgMjMwLCAzNywgMTIsIDE1LCAyMzAsIDM2LCAxMiwgCisgICAgMTUsIDIzMCwgMzUsIDEyLCAxNSwgMjMwLCAzNCwgMTIsIDE1LCAyMzAsIDMzLCAxMiwgMTUsIDIzMCwgMzIsIDEyLCAxNSwgCisgICAgMjMwLCAzMSwgMTIsIDE1LCAyMzAsIDMwLCAxMiwgMTUsIDIzMCwgMjksIDEyLCAxNSwgMjMwLCAyOCwgMTIsIDE1LCAyMzAsIAorICAgIDI3LCAxMiwgMTUsIDIzMCwgMjYsIDEyLCAxNSwgMjMwLCAyNSwgMTIsIDE1LCAyMzAsIDI0LCAxMiwgMTUsIDIzMCwgMjMsIAorICAgIDEyLCAxNSwgMjMwLCAyMiwgMTIsIDE1LCAyMzAsIDIxLCAxMiwgMTUsIDIzMCwgMjAsIDEyLCAxNSwgMjMwLCAxOSwgMTIsIAorICAgIDE1LCAyMzAsIDE4LCAxMiwgMTUsIDIzMCwgMTcsIDEyLCAxNSwgMjMwLCAxNiwgMTIsIDE1LCAyMzAsIDE1LCAxMiwgMTUsIAorICAgIDIzMCwgMTQsIDEyLCAxNSwgMjMwLCAxMywgMTIsIDE1LCAyMzAsIDEyLCAxMiwgMTUsIDIzMCwgMTEsIDEyLCAxNSwgMjMwLCAKKyAgICAxMCwgMTIsIDE1LCAyMzAsIDksIDEyLCAxNSwgMjMwLCA4LCAxMiwgMTUsIDIzMCwgNywgMTIsIDE1LCAyMzAsIDYsIDEyLCAKKyAgICAxNSwgMjMwLCA1LCAxMiwgMTUsIDIzMCwgNCwgMTIsIDE1LCAyMzAsIDMsIDEyLCAxNSwgMjMwLCAyLCAxMiwgMTUsIDIzMCwgCisgICAgMSwgMTIsIDE1LCAyMzAsIDAsIDEyLCAxNSwgMjI5LCAyNTUsIDEyLCAxNSwgMjI5LCAyNTQsIDEyLCAxNSwgMjI5LCAyNTMsIAorICAgIDEyLCAxNSwgMjI5LCAyNTIsIDEyLCAxNSwgMjI5LCAyNTEsIDEyLCAxNSwgMjI5LCAyNTAsIDEyLCAxNSwgMjI5LCAyNDksIAorICAgIDEyLCAxNSwgMjI5LCAyNDgsIDEyLCAxNSwgMjI5LCAyNDcsIDEyLCAxNSwgMjI5LCAyNDYsIDEyLCAxNSwgMjI5LCAyNDUsIAorICAgIDEyLCAxNSwgMjI5LCAyNDQsIDEyLCAxNSwgMjI5LCAyNDMsIDEyLCAxNSwgMjI5LCAyNDIsIDEyLCAxNSwgMjI5LCAyNDEsIAorICAgIDEyLCAxNSwgMjI5LCAyNDAsIDEyLCAxNSwgMjI5LCAyMzksIDEyLCAxNSwgMjI5LCAyMzgsIDEyLCAxNSwgMjI5LCAyMzcsIAorICAgIDEyLCAxNSwgMjI5LCAyMzYsIDEyLCAxNSwgMjI5LCAyMzUsIDEyLCAxNSwgMjI5LCAyMzQsIDEyLCAxNSwgMjI5LCAyMzMsIAorICAgIDEyLCAxNSwgMjI5LCAyMzIsIDEyLCAxNSwgMjI5LCAyMzEsIDEyLCAxNSwgMjI5LCAyMzAsIDEyLCAxNSwgMjI5LCAyMjksIAorICAgIDEyLCAxNSwgMjI5LCAyMjgsIDEyLCAxNSwgMjI5LCAyMjcsIDEyLCAxNSwgMjI5LCAyMjYsIDEyLCAxNSwgMjI5LCAyMjUsIAorICAgIDEyLCAxNSwgMjI5LCAyMjQsIDEyLCAxNSwgMjI5LCAyMjMsIDEyLCAxNSwgMjI5LCAyMjIsIDEyLCAxNSwgMjI5LCAyMjEsIAorICAgIDEyLCAxNSwgMjI5LCAyMjAsIDEyLCAxNSwgMjI5LCAyMTksIDEyLCAxNSwgMjI5LCAyMTgsIDEyLCAxNSwgMjI5LCAyMTcsIAorICAgIDEyLCAxNSwgMjI5LCAyMTYsIDEyLCAxNSwgMjI5LCAyMTUsIDEyLCAxNSwgMjI5LCAyMTQsIDEyLCAxNSwgMjI5LCAyMTMsIAorICAgIDEyLCAxNSwgMjI5LCAyMTIsIDEyLCAxNSwgMjI5LCAyMTEsIDEyLCAxNSwgMjI5LCAyMTAsIDEyLCAxNSwgMjI5LCAyMDksIAorICAgIDEyLCAxNSwgMjI5LCAyMDgsIDEyLCAxNSwgMjI5LCAyMDcsIDEyLCAxNSwgMjI5LCAyMDYsIDEyLCAxNSwgMjI5LCAyMDUsIAorICAgIDEyLCAxNSwgMjI5LCAyMDQsIDEyLCAxNSwgMjI5LCAyMDMsIDEyLCAxNSwgMjI5LCAyMDIsIDEyLCAxNSwgMjI5LCAyMDEsIAorICAgIDEyLCAxNSwgMjI5LCAyMDAsIDEyLCAxNSwgMjI5LCAxOTksIDEyLCAxNSwgMjI5LCAxOTgsIDEyLCAxNSwgMjI5LCAxOTcsIAorICAgIDEyLCAxNSwgMjI5LCAxOTYsIDEyLCAxNSwgMjI5LCAxOTUsIDEyLCAxNSwgMjI5LCAxOTQsIDEyLCAxNSwgMjI5LCAxOTMsIAorICAgIDEyLCAxNSwgMjI5LCAxOTIsIDEyLCAxNSwgMjI5LCAxOTEsIDEyLCAxNSwgMjI5LCAxOTAsIDEyLCAxNSwgMjI5LCAxODksIAorICAgIDEyLCAxNSwgMjI5LCAxODgsIDEyLCAxNSwgMjI5LCAxODcsIDEyLCAxNSwgMjI5LCAxODYsIDEyLCAxNSwgMjI5LCAxODUsIAorICAgIDEyLCAxNSwgMjI5LCAxODQsIDEyLCAxNSwgMjI5LCAxODMsIDEyLCAxNSwgMjI5LCAxODIsIDEyLCAxNSwgMjI5LCAxODEsIAorICAgIDEyLCAxNSwgMjI5LCAxODAsIDEyLCAxNSwgMjI5LCAxNzksIDEyLCAxNSwgMjI5LCAxNzgsIDEyLCAxNSwgMjI5LCAxNzcsIAorICAgIDEyLCAxNSwgMjI5LCAxNzYsIDEyLCAxNSwgMjI5LCAxNzUsIDEyLCAxNSwgMjI5LCAxNzQsIDEyLCAxNSwgMjI5LCAxNzMsIAorICAgIDEyLCAxNSwgMjI5LCAxNzIsIDEyLCAxNSwgMjI5LCAxNzEsIDEyLCAxNSwgMjI5LCAxNzAsIDEyLCAxNSwgMjI5LCAxNjksIAorICAgIDEyLCAxNSwgMjI5LCAxNjgsIDEyLCAxNSwgMjI5LCAxNjcsIDEyLCAxNSwgMjI5LCAxNjYsIDEyLCAxNSwgMjI5LCAxNjUsIAorICAgIDEyLCAxNSwgMjI5LCAxNjQsIDEyLCAxNSwgMjI5LCAxNjMsIDEyLCAxNSwgMjI5LCAxNjIsIDEyLCAxNSwgMjI5LCAxNjEsIAorICAgIDEyLCAxNSwgMjI5LCAxNjAsIDEyLCAxNSwgMjI5LCAxNTksIDEyLCAxNSwgMjI5LCAxNTgsIDEyLCAxNSwgMjI5LCAxNTcsIAorICAgIDEyLCAxNSwgMjI5LCAxNTYsIDEyLCAxNSwgMjI5LCAxNTUsIDEyLCAxNSwgMjI5LCAxNTQsIDEyLCAxNSwgMjI5LCAxNTMsIAorICAgIDEyLCAxNSwgMjI5LCAxNTIsIDEyLCAxNSwgMjI5LCAxNTEsIDEyLCAxNSwgMjI5LCAxNTAsIDEyLCAxNSwgMjI5LCAxNDksIAorICAgIDEyLCAxNSwgMjI5LCAxNDgsIDEyLCAxNSwgMjI5LCAxNDcsIDEyLCAxNSwgMjI5LCAxNDYsIDEyLCAxNSwgMjI5LCAxNDUsIAorICAgIDEyLCAxNSwgMjI5LCAxNDQsIDEyLCAxNSwgMjI5LCAxNDMsIDEyLCAxNSwgMjI5LCAxNDIsIDEyLCAxNSwgMjI5LCAxNDEsIAorICAgIDEyLCAxNSwgMjI5LCAxNDAsIDEyLCAxNSwgMjI5LCAxMzksIDEyLCAxNSwgMjI5LCAxMzgsIDEyLCAxNSwgMjI5LCAxMzcsIAorICAgIDEyLCAxNSwgMjI5LCAxMzYsIDEyLCAxNSwgMjI5LCAxMzUsIDEyLCAxNSwgMjI5LCAxMzQsIDEyLCAxNSwgMjI5LCAxMzMsIAorICAgIDEyLCAxNSwgMjI5LCAxMzIsIDEyLCAxNSwgMjI5LCAxMzEsIDEyLCAxNSwgMjI5LCAxMzAsIDEyLCAxNSwgMjI5LCAxMjksIAorICAgIDEyLCAxNSwgMjI5LCAxMjgsIDEyLCAxNSwgMjI5LCAxMjcsIDEyLCAxNSwgMjI5LCAxMjYsIDEyLCAxNSwgMjI5LCAxMjUsIAorICAgIDEyLCAxNSwgMjI5LCAxMjQsIDEyLCAxNSwgMjI5LCAxMjMsIDEyLCAxNSwgMjI5LCAxMjIsIDEyLCAxNSwgMjI5LCAxMjEsIAorICAgIDEyLCAxNSwgMjI5LCAxMjAsIDEyLCAxNSwgMjI5LCAxMTksIDEyLCAxNSwgMjI5LCAxMTgsIDEyLCAxNSwgMjI5LCAxMTcsIAorICAgIDEyLCAxNSwgMjI5LCAxMTYsIDEyLCAxNSwgMjI5LCAxMTUsIDEyLCAxNSwgMjI5LCAxMTQsIDEyLCAxNSwgMjI5LCAxMTMsIAorICAgIDEyLCAxNSwgMjI5LCAxMTIsIDEyLCAxNSwgMjI5LCAxMTEsIDEyLCAxNSwgMjI5LCAxMTAsIDEyLCAxNSwgMjI5LCAxMDksIAorICAgIDEyLCAxNSwgMjI5LCAxMDgsIDEyLCAxNSwgMjI5LCAxMDcsIDEyLCAxNSwgMjI5LCAxMDYsIDEyLCAxNSwgMjI5LCAxMDUsIAorICAgIDEyLCAxNSwgMjI5LCAxMDQsIDEyLCAxNSwgMjI5LCAxMDMsIDEyLCAxNSwgMjI5LCAxMDIsIDEyLCAxNSwgMjI5LCAxMDEsIAorICAgIDEyLCAxNSwgMjI5LCAxMDAsIDEyLCAxNSwgMjI5LCA5OSwgMTIsIDE1LCAyMjksIDk4LCAxMiwgMTUsIDIyOSwgOTcsIDEyLCAKKyAgICAxNSwgMjI5LCA5NiwgMTIsIDE1LCAyMjksIDk1LCAxMiwgMTUsIDIyOSwgOTQsIDEyLCAxNSwgMjI5LCA5MywgMTIsIDE1LCAKKyAgICAyMjksIDkyLCAxMiwgMTUsIDIyOSwgOTEsIDEyLCAxNSwgMjI5LCA5MCwgMTIsIDE1LCAyMjksIDg5LCAxMiwgMTUsIDIyOSwgCisgICAgODgsIDEyLCAxNSwgMjI5LCA4NywgMTIsIDE1LCAyMjksIDg2LCAxMiwgMTUsIDIyOSwgODUsIDEyLCAxNSwgMjI5LCA4NCwgCisgICAgMTIsIDE1LCAyMjksIDgzLCAxMiwgMTUsIDIyOSwgODIsIDEyLCAxNSwgMjI5LCA4MSwgMTIsIDE1LCAyMjksIDgwLCAxMiwgCisgICAgMTUsIDIyOSwgNzksIDEyLCAxNSwgMjI5LCA3OCwgMTIsIDE1LCAyMjksIDc3LCAxMiwgMTUsIDIyOSwgNzYsIDEyLCAxNSwgCisgICAgMjI5LCA3NSwgMTIsIDE1LCAyMjksIDc0LCAxMiwgMTUsIDIyOSwgNzMsIDEyLCAxNSwgMjI5LCA3MiwgMTIsIDE1LCAyMjksIAorICAgIDcxLCAxMiwgMTUsIDIyOSwgNzAsIDEyLCAxNSwgMjI5LCA2OSwgMTIsIDE1LCAyMjksIDY4LCAxMiwgMTUsIDIyOSwgNjcsIAorICAgIDEyLCAxNSwgMjI5LCA2NiwgMTIsIDE1LCAyMjksIDY1LCAxMiwgMTUsIDIyOSwgNjQsIDEyLCAxNSwgMjI5LCA2MywgMTIsIAorICAgIDE1LCAyMjksIDYyLCAxMiwgMTUsIDIyOSwgNjEsIDEyLCAxNSwgMjI5LCA2MCwgMTIsIDE1LCAyMjksIDU5LCAxMiwgMTUsIAorICAgIDIyOSwgNTgsIDEyLCAxNSwgMjI5LCA1NywgMTIsIDE1LCAyMjksIDU2LCAxMiwgMTUsIDIyOSwgNTUsIDEyLCAxNSwgMjI5LCAKKyAgICA1NCwgMTIsIDE1LCAyMjksIDUzLCAxMiwgMTUsIDIyOSwgNTIsIDEyLCAxNSwgMjI5LCA1MSwgMTIsIDE1LCAyMjksIDUwLCAKKyAgICAxMiwgMTUsIDIyOSwgNDksIDEyLCAxNSwgMjI5LCA0OCwgMTIsIDE1LCAyMjksIDQ3LCAxMiwgMTUsIDIyOSwgNDYsIDEyLCAKKyAgICAxNSwgMjI5LCA0NSwgMTIsIDE1LCAyMjksIDQ0LCAxMiwgMTUsIDIyOSwgNDMsIDEyLCAxNSwgMjI5LCA0MiwgMTIsIDE1LCAKKyAgICAyMjksIDQxLCAxMiwgMTUsIDIyOSwgNDAsIDEyLCAxNSwgMjI5LCAzOSwgMTIsIDE1LCAyMjksIDM4LCAxMiwgMTUsIDIyOSwgCisgICAgMzcsIDEyLCAxNSwgMjI5LCAzNiwgMTIsIDE1LCAyMjksIDM1LCAxMiwgMTUsIDIyOSwgMzQsIDEyLCAxNSwgMjI5LCAzMywgCisgICAgMTIsIDE1LCAyMjksIDMyLCAxMiwgMTUsIDIyOSwgMzEsIDEyLCAxNSwgMjI5LCAzMCwgMTIsIDE1LCAyMjksIDI5LCAxMiwgCisgICAgMTUsIDIyOSwgMjgsIDEyLCAxNSwgMjI5LCAyNywgMTIsIDE1LCAyMjksIDI2LCAxMiwgMTUsIDIyOSwgMjUsIDEyLCAxNSwgCisgICAgMjI5LCAyNCwgMTIsIDE1LCAyMjksIDIzLCAxMiwgMTUsIDIyOSwgMjIsIDEyLCAxNSwgMjI5LCAyMSwgMTIsIDE1LCAyMjksIAorICAgIDIwLCAxMiwgMTUsIDIyOSwgMTksIDEyLCAxNSwgMjI5LCAxOCwgMTIsIDE1LCAyMjksIDE3LCAxMiwgMTUsIDIyOSwgMTYsIAorICAgIDEyLCAxNSwgMjI5LCAxNSwgMTIsIDE1LCAyMjksIDE0LCAxMiwgMTUsIDIyOSwgMTMsIDEyLCAxNSwgMjI5LCAxMiwgMTIsIAorICAgIDE1LCAyMjksIDExLCAxMiwgMTUsIDIyOSwgMTAsIDEyLCAxNSwgMjI5LCA5LCAxMiwgMTUsIDIyOSwgOCwgMTIsIDE1LCAKKyAgICAyMjksIDcsIDEyLCAxNSwgMjI5LCA2LCAxMiwgMTUsIDIyOSwgNSwgMTIsIDE1LCAyMjksIDQsIDEyLCAxNSwgMjI5LCAzLCAKKyAgICAxMiwgMTUsIDIyOSwgMiwgMTIsIDE1LCAyMjksIDEsIDEyLCAxNSwgMjI5LCAwLCAxMiwgMTUsIDIyOCwgMjU1LCAxMiwgMTUsIAorICAgIDIyOCwgMjU0LCAxMiwgMTUsIDIyOCwgMjUzLCAxMiwgMTUsIDIyOCwgMjUyLCAxMiwgMTUsIDIyOCwgMjUxLCAxMiwgMTUsIAorICAgIDIyOCwgMjUwLCAxMiwgMTUsIDIyOCwgMjQ5LCAxMiwgMTUsIDIyOCwgMjQ4LCAxMiwgMTUsIDIyOCwgMjQ3LCAxMiwgMTUsIAorICAgIDIyOCwgMjQ2LCAxMiwgMTUsIDIyOCwgMjQ1LCAxMiwgMTUsIDIyOCwgMjQ0LCAxMiwgMTUsIDIyOCwgMjQzLCAxMiwgMTUsIAorICAgIDIyOCwgMjQyLCAxMiwgMTUsIDIyOCwgMjQxLCAxMiwgMTUsIDIyOCwgMjQwLCAxMiwgMTUsIDIyOCwgMjM5LCAxMiwgMTUsIAorICAgIDIyOCwgMjM4LCAxMiwgMTUsIDIyOCwgMjM3LCAxMiwgMTUsIDIyOCwgMjM2LCAxMiwgMTUsIDIyOCwgMjM1LCAxMiwgMTUsIAorICAgIDIyOCwgMjM0LCAxMiwgMTUsIDIyOCwgMjMzLCAxMiwgMTUsIDIyOCwgMjMyLCAxMiwgMTUsIDIyOCwgMjMxLCAxMiwgMTUsIAorICAgIDIyOCwgMjMwLCAxMiwgMTUsIDIyOCwgMjI5LCAxMiwgMTUsIDIyOCwgMjI4LCAxMiwgMTUsIDIyOCwgMjI3LCAxMiwgMTUsIAorICAgIDIyOCwgMjI2LCAxMiwgMTUsIDIyOCwgMjI1LCAxMiwgMTUsIDIyOCwgMjI0LCAxMiwgMTUsIDIyOCwgMjIzLCAxMiwgMTUsIAorICAgIDIyOCwgMjIyLCAxMiwgMTUsIDIyOCwgMjIxLCAxMiwgMTUsIDIyOCwgMjIwLCAxMiwgMTUsIDIyOCwgMjE5LCAxMiwgMTUsIAorICAgIDIyOCwgMjE4LCAxMiwgMTUsIDIyOCwgMjE3LCAxMiwgMTUsIDIyOCwgMjE2LCAxMiwgMTUsIDIyOCwgMjE1LCAxMiwgMTUsIAorICAgIDIyOCwgMjE0LCAxMiwgMTUsIDIyOCwgMjEzLCAxMiwgMTUsIDIyOCwgMjEyLCAxMiwgMTUsIDIyOCwgMjExLCAxMiwgMTUsIAorICAgIDIyOCwgMjEwLCAxMiwgMTUsIDIyOCwgMjA5LCAxMiwgMTUsIDIyOCwgMjA4LCAxMiwgMTUsIDIyOCwgMjA3LCAxMiwgMTUsIAorICAgIDIyOCwgMjA2LCAxMiwgMTUsIDIyOCwgMjA1LCAxMiwgMTUsIDIyOCwgMjA0LCAxMiwgMTUsIDIyOCwgMjAzLCAxMiwgMTUsIAorICAgIDIyOCwgMjAyLCAxMiwgMTUsIDIyOCwgMjAxLCAxMiwgMTUsIDIyOCwgMjAwLCAxMiwgMTUsIDIyOCwgMTk5LCAxMiwgMTUsIAorICAgIDIyOCwgMTk4LCAxMiwgMTUsIDIyOCwgMTk3LCAxMiwgMTUsIDIyOCwgMTk2LCAxMiwgMTUsIDIyOCwgMTk1LCAxMiwgMTUsIAorICAgIDIyOCwgMTk0LCAxMiwgMTUsIDIyOCwgMTkzLCAxMiwgMTUsIDIyOCwgMTkyLCAxMiwgMTUsIDIyOCwgMTkxLCAxMiwgMTUsIAorICAgIDIyOCwgMTkwLCAxMiwgMTUsIDIyOCwgMTg5LCAxMiwgMTUsIDIyOCwgMTg4LCAxMiwgMTUsIDIyOCwgMTg3LCAxMiwgMTUsIAorICAgIDIyOCwgMTg2LCAxMiwgMTUsIDIyOCwgMTg1LCAxMiwgMTUsIDIyOCwgMTg0LCAxMiwgMTUsIDIyOCwgMTgzLCA4LCA0LCAzMywgCisgICAgMjM3LCAxMTYsIDgsIDQsIDMzLCAyMzcsIDExMiwgOCwgNCwgMzMsIDIzNywgNTYsIDgsIDQsIDMzLCAyMzcsIDExNSwgOCwgCisgICAgNCwgMzMsIDIzNywgMTE0LCA4LCA0LCAzMywgMTY4LCAyMTIsIDEyMywgMjA3LCA4MywgOCwgNCwgMzMsIDIwOCwgMTIzLCAKKyAgICAxODQsIDQsIDMzLCAyMjIsIDQxLCAyMTgsIDIwMSwgMTg0LCA0LCAzMywgMjIyLCA0MSwgMjM5LCA1LCAxODQsIDQsIDMzLCAKKyAgICAyMjIsIDQxLCAyMjgsIDg2LCAxODQsIDQsIDMzLCAyMDIsIDIzOSwgMjE4LCAyMDEsIDE4NCwgNCwgMzMsIDIyMiwgNDEsIAorICAgIDIwMCwgMTczLCAxMTMsIDEsIDE5OSwgMjM1LCAzLCAyMzQsIDQ3LCAxMTMsIDIxNSwgMTAwLCAyMjcsIDE0NiwgMjAzLCA3MSwgCisgICAgMTEzLCAzMywgMjAwLCA3LCAxOTksIDIzNSwgMTk5LCAyMzUsIDIxNiwgOTMsIDExMywgMSwgMjUxLCAxMDQsIDI1MCwgMTA3LCAKKyAgICAxMTMsIDEsIDIwMSwgMjgsIDI1MSwgMTQyLCAxMTMsIDEsIDIwMSwgMjgsIDI0MiwgMjMsIDExMywgMSwgMjAxLCAyOCwgCisgICAgMjM0LCAxMzksIDExMywgMSwgMjAxLCAyOCwgMjI3LCA4NiwgMTEzLCAxLCAyMDEsIDI4LCAyMjUsIDgzLCAxMTMsIDEsIAorICAgIDIwMSwgMjgsIDQ3LCAyMjIsIDQ3LCAxMTMsIDEsIDIwMSwgMjgsIDIxMywgMTIzLCAxMTMsIDEsIDIwMSwgMjgsIDIwNiwgCisgICAgMjE3LCAxMTMsIDEsIDI1MSwgMTA0LCA5MywgNTQsIDExMywgMSwgMjEwLCAyMiwgMywgMjEwLCAyMiwgMjQwLCAxODIsIAorICAgIDExMywgMSwgMjEwLCAyMiwgMywgMjA5LCAxNDMsIDI0MCwgMTgyLCAxMTMsIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDMsIDI2LCAKKyAgICAyMTAsIDIyLCAyNDAsIDE4MiwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyNDIsIDQzLCAyNiwgMjA5LCAxNDMsIDI0MCwgMTgyLCAKKyAgICAxMTMsIDEsIDE0MCwgMywgMjE2LCA5MywgMTEzLCAxLCAxNDAsIDMsIDIxNCwgMTQ3LCAxMTMsIDEsIDE0MCwgMywgMjIyLCAKKyAgICAxNjMsIDExMywgMSwgMjQ4LCAyMTEsIDMsIDI0MiwgNDIsIDExMywgMSwgMjM1LCAxNDgsIDMsIDI0MiwgNDIsIDExMywgMSwgCisgICAgMjQyLCAyNCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMzQsIDE0MCwgMywgMjIyLCAxNjMsIDExMywgMSwgMjAzLCA2NCwgMywgCisgICAgMjQyLCA0MiwgMTEzLCAxLCAxOTksIDkzLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNiwgMTQ3LCAzLCAyNDIsIDQyLCAxMTMsIAorICAgIDEsIDE5OSwgMjM1LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDQ3LCAyMjcsIDg3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyNywgCisgICAgODcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjI1LCA4NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjIsIDQ4LCAzLCAyNDIsIDQyLCAKKyAgICAxMTMsIDEsIDIxOCwgOTAsIDMsIDI0MiwgNDIsIDExMywgMSwgMjEyLCAyMCwgMywgMjQyLCA0MiwgMTEzLCAxLCA0NywgCisgICAgMjE2LCA3NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTYsIDc0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNSwgMjgsIDMsIAorICAgIDI0MiwgNDIsIDExMywgMSwgMjE0LCAxMDcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjEzLCAxMjQsIDMsIDI0MiwgNDIsIDExMywgCisgICAgMSwgMjEwLCAyMiwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDYsIDIxOCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDMsIDY0LCAzLCAKKyAgICAyMzMsIDE5OSwgMTEzLCAxLCAyNDgsIDIxMSwgMywgMjEzLCAyMzIsIDExMywgMSwgMjI3LCA4NywgMywgMjEzLCAyMzIsIAorICAgIDExMywgMSwgMjE2LCA3NCwgMywgMjEzLCAyMzIsIDExMywgMzMsIDE0MCwgMjI1LCA4MywgOSwgMSwgMTQwLCAyMDEsIDkwLCAKKyAgICA2NSwgMTksIDksIDEsIDE0MCwgMjAxLCA5MCwgNDcsIDE5LCA5LCAxLCAyNDgsIDI1MSwgNjUsIDE5LCA5LCAxLCAyNDgsIAorICAgIDI1MSwgNDcsIDE5LCA5LCAxLCAyNDgsIDI1MSwgODIsIDE5LCA5LCAxLCAyNDgsIDI1MSwgMTc5LCAxOSwgOSwgMSwgMjE2LCAKKyAgICA1NSwgNjUsIDE5LCA5LCAxLCAyMTYsIDU1LCA0NywgMTksIDksIDEsIDIxNiwgNTUsIDgyLCAxOSwgOSwgMSwgMjE2LCA1NSwgCisgICAgMTc5LCAxOSwgOSwgMSwgMjQ4LCAyMzksIDY1LCAxOSwgOSwgMSwgMjQ4LCAyMzksIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyMzksIAorICAgIDgyLCAxOSwgOSwgMSwgMjQ4LCAyMzksIDE3OSwgMTksIDksIDEsIDIwNCwgMjQ0LCA2NSwgMTksIDksIDEsIDIwNCwgMjQ0LCAKKyAgICA0NywgMTksIDksIDEsIDIwNCwgMjQ0LCA4MiwgMTksIDksIDEsIDIwNCwgMjQ0LCAxNzksIDE5LCA5LCAxLCAyMDYsIDE4MiwgCisgICAgNjUsIDE5LCA5LCAxLCAyMDYsIDE4MiwgNDcsIDE5LCA5LCAxLCAyMDYsIDE4MiwgODIsIDE5LCA5LCAxLCAyMDYsIDE4MiwgCisgICAgMTc5LCAxOSwgOSwgMSwgMjA0LCAyNDYsIDY1LCAxOSwgOSwgMSwgMjA0LCAyNDYsIDQ3LCAxOSwgOSwgMSwgMjA0LCAyNDYsIAorICAgIDgyLCAxOSwgOSwgMSwgMjA0LCAyNDYsIDE3OSwgMTksIDksIDEsIDIwMywgNTMsIDY1LCAxOSwgOSwgMSwgMjAzLCA1MywgCisgICAgNDcsIDE5LCA5LCAxLCAyMDMsIDUzLCA4MiwgMTksIDksIDEsIDIwMywgNTMsIDE3OSwgMTksIDksIDEsIDIxNiwgNTMsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjE2LCA1MywgNDcsIDE5LCA5LCAxLCAyMTYsIDUzLCA4MiwgMTksIDksIDEsIDIxNiwgNTMsIDE3OSwgMTksIAorICAgIDksIDEsIDIzOSwgMTAwLCA2NSwgMTksIDksIDEsIDIzOSwgMTAwLCA0NywgMTksIDksIDEsIDIzOSwgMTAwLCA4MiwgMTksIAorICAgIDksIDEsIDIzOSwgMTAwLCAxNzksIDE5LCA5LCAxLCAyMTgsIDQ4LCA2NSwgMTksIDksIDEsIDIxOCwgNDgsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjE4LCA0OCwgODIsIDE5LCA5LCAxLCAyMTgsIDQ4LCAxNzksIDE5LCA5LCAxLCAyMDYsIDIwNiwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNiwgNDcsIDE5LCA5LCAxLCAyMDYsIDIwNiwgODIsIDE5LCA5LCAxLCAyMDYsIDIwNiwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDQsIDY1LCAxOSwgOSwgMSwgMjA2LCAyMDQsIDQ3LCAxOSwgOSwgMSwgMjA2LCAyMDQsIDgyLCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDQsIDE3OSwgMTksIDksIDEsIDI0MSwgMjE4LCA2NSwgMTksIDksIDEsIDI0MSwgMjE4LCA0NywgMTksIDksIDEsIAorICAgIDI0MiwgMzcsIDY1LCAxOSwgOSwgMSwgMjQyLCAzNywgNDcsIDE5LCA5LCAxLCAyMzksIDEyOCwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzksIDEyOCwgNDcsIDE5LCA5LCAxLCAyNDEsIDIxNiwgNjUsIDE5LCA5LCAxLCAyNDEsIDIxNiwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjcsIDIyMiwgNjUsIDE5LCA5LCAxLCAyMjcsIDIyMiwgNDcsIDE5LCA5LCAxLCAyMTIsIDIwOCwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMTIsIDIwOCwgNDcsIDE5LCA5LCAxLCAyMjYsIDI1MywgNjUsIDE5LCA5LCAxLCAyMjYsIDI1MywgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjYsIDI1MywgODIsIDE5LCA5LCAxLCAyMjYsIDI1MywgMTc5LCAxOSwgOSwgMSwgMjM2LCA3NywgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzYsIDc3LCA0NywgMTksIDksIDEsIDIzNiwgNzcsIDgyLCAxOSwgOSwgMSwgMjM2LCA3NywgMTc5LCAxOSwgOSwgMSwgCisgICAgMjM1LCAzOCwgNjUsIDE5LCA5LCAxLCAyMzUsIDM4LCA0NywgMTksIDksIDEsIDIzNSwgMzgsIDgyLCAxOSwgOSwgMSwgMjM1LCAKKyAgICAzOCwgMTc5LCAxOSwgOSwgMSwgMjE5LCAxNzcsIDY1LCAxOSwgOSwgMSwgMjE5LCAxNzcsIDQ3LCAxOSwgOSwgMSwgMjE5LCAKKyAgICAxNzcsIDgyLCAxOSwgOSwgMSwgMjE5LCAxNzcsIDE3OSwgMTksIDksIDEsIDIxOCwgMjI4LCAyMzUsIDE2NiwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMTgsIDIyOCwgMjM1LCAxNjYsIDQ3LCAxOSwgOSwgMSwgMjEzLCA1LCA2NSwgMTksIDksIDEsIDIxMywgNSwgNDcsIAorICAgIDE5LCA5LCAxLCAyMTMsIDUsIDgyLCAxOSwgOSwgMSwgMjEzLCA1LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIAorICAgIDg4LCA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgODgsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCAKKyAgICA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDgyLCAKKyAgICAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDY1LCAxOSwgCisgICAgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgODIsIDE5LCA5LCAxLCAKKyAgICAyMzQsIDExNiwgMjQwLCAyMDgsIDE3OSwgMTksIDksIDEsIDkwLCAyNDksIDcwLCA2NSwgMTksIDksIDEsIDkwLCAyNDksIAorICAgIDcwLCA0NywgMTksIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgMSwgOTAsIDI0OSwgCisgICAgNzAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxNiwgNzMsIDU2LCA5LCAxNiwgNzMsIDU3LCA5LCAxNiwgMTIwLCAKKyAgICAxOTAsIDU2LCA5LCAxNiwgMTIwLCAxOTAsIDU3LCA5LCAxNiwgMTI2LCAxOTAsIDU2LCA5LCAxNiwgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxNiwgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgNTYsIDksIDE2LCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCA1NywgOSwgCisgICAgMTYsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxNiwgMjM2LCAyMjksIDE5MCwgNTcsIDksIDE2LCA1MywgODMsIDI0OSwgNzcsIAorICAgIDU3LCA5LCAxNiwgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NiwgOSwgMTYsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTcsIDksIDE2LCAKKyAgICAyMTMsIDI2LCA5LCAxNiwgNCwgMjA3LCAxMCwgNTYsIDksIDE2LCA0LCAyMDcsIDEwLCA1NywgOSwgMSwgMjIwLCAwLCA2NSwgCisgICAgMTksIDksIDEsIDIyMCwgMCwgNDcsIDE5LCA5LCAxLCAyMjAsIDAsIDgyLCAxOSwgOSwgMSwgMjIwLCAwLCAxNzksIDE5LCA5LCAKKyAgICAxLCAxMDgsIDY1LCAxOSwgOSwgMSwgMTA4LCA0NywgMTksIDksIDEsIDIxNywgMTIyLCA2NSwgMTksIDksIDEsIDIxNywgCisgICAgMTIyLCA0NywgMTksIDksIDEsIDE5OSwgMjEyLCA2NSwgMTksIDksIDEsIDE5OSwgMjEyLCA0NywgMTksIDksIDEsIDEwOCwgCisgICAgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIDEsIDIwMywgNjAsIDY1LCAxOSwgOSwgMSwgMjAzLCA2MCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMjYsIDEzOSwgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMSwgMjI2LCAxMzksIDIxNywgMTIyLCA0NywgMTksIDksIDEsIAorICAgIDIyNiwgMTM5LCAxOTksIDIxMiwgNjUsIDE5LCA5LCAxLCAyMjYsIDEzOSwgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMSwgMTk3LCAKKyAgICA2NSwgMTksIDksIDEsIDE5NywgNDcsIDE5LCA5LCAxLCAxOTcsIDgyLCAxOSwgOSwgMSwgMTk3LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMDQsIDIyLCAyMjcsIDEyLCAyMjYsIDEzOSwgMTQwLCAyMjIsIDE4OCwgODIsIDE5LCA5LCAxLCAyMDQsIDIyLCAyMjcsIAorICAgIDEyLCAyMjYsIDEzOSwgMTQwLCAyMjIsIDE4OCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgCisgICAgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAKKyAgICAyMDQsIDg4LCAzLCAyNTEsIDIyMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjUxLCAyMjIsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzMsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDEwOCwgNjUsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTA4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCAzLCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjE3LCAxMjIsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgMjEyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCAzLCAxOTksIDIxMiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk3LCA2NSwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTcsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE5NywgODIsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA0NywgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgODIsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDY1LCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCA0NywgMTksIDksIAorICAgIDEsIDIzNywgMTYyLCA5MCwgODIsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAKKyAgICAyMDQsIDg4LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE1NSwgNjUsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxODQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTAzLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxMDMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMTkzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDE5MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgMTkzLCA2NSwgCisgICAgMTksIDksIDMzLCAxNTUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMjYsIDIwNCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxOTMsIDY1LCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDI0MiwgNTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIAorICAgIDMsIDg0LCA2NSwgMTksIDksIDMzLCAxOTksIDEwOSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIAorICAgIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE5MywgNjUsIDE5LCAKKyAgICA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzcsIDEzNSwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNywgMTM1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjE0LCAKKyAgICAxNTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjE0LCAxNTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIAorICAgIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjYsIAorICAgIDIwNCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCA5MiwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDkwLCAKKyAgICA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA5MCwgNjUsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgCisgICAgMjA0LCA2NSwgMTksIDksIDMzLCA4NCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCA4NCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMzQsIAorICAgIDExNiwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzQsIDExNiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAxNTUsIAorICAgIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAKKyAgICA5MCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMDYsIDExNSwgCisgICAgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjEzLCAxNTUsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgCisgICAgMzMsIDE0MCwgMjIyLCAxODgsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE2LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjI3LCAzNSwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIzNywgCisgICAgMTU5LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxOCwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIAorICAgIDIyNywgMzcsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAKKyAgICAxMDYsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA0NywgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAKKyAgICAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDkwLCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDEwMywgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAxOTksIDEwNiwgNDcsIAorICAgIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMjE4LCAyMjgsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTAzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgCisgICAgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCA5MiwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIAorICAgIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAKKyAgICAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNDAsIDIyMiwgCisgICAgMTg4LCAzLCAyMDcsIDIxMywgMTQwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDkwLCAKKyAgICAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjE4LCAyMjgsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgOTAsIAorICAgIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIzNCwgMTE2LCAKKyAgICA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCA4MiwgMTksIAorICAgIDksIDMzLCAyNDgsIDI0MSwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjQ4LCAyNDEsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCA4MiwgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMDYsIDEwMywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjI2LCAyMDQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCA4MiwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIwNywgMTAsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTk5LCAxMDksIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgCisgICAgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxOTMsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjM3LCAxMzUsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxNCwgCisgICAgMTUzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIAorICAgIDkyLCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCA4MiwgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCA4MiwgMTksIAorICAgIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMzQsIDExNiwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNCwgCisgICAgMTE2LCAzLCAyMDcsIDIxMywgMTQwLCA4MiwgMTksIDksIDMzLCA5MCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgMTc5LCAxOSwgCisgICAgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgCisgICAgOTIsIDE3OSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAxNzksIAorICAgIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIzNCwgMTE2LCAxNzksIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgCisgICAgMjEwLCAxMDUsIDMsIDIzNywgMTU5LCAxNzksIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTgsIDE3OSwgMTksIDksIAorICAgIDMzLCAyMTAsIDEwNSwgMywgMjI3LCAzNywgMTc5LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAxOTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgCisgICAgOSwgMzMsIDE5MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjYsIDIwNCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIxMiwgNTcsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAKKyAgICAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIAorICAgIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDcsIAorICAgIDEwLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgCisgICAgMTcyLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIzNSwgMTk1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgCisgICAgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAxOTMsIDMsIAorICAgIDkwLCA0NywgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI2LCAyMDQsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjEzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMTMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMzQsIDExNiwgODIsIDE5LCAKKyAgICA5LCAzMywgMjA3LCAxMCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTEsIDE4NywgMywgMTU1LCAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAzMywgCisgICAgMjEwLCA2MiwgMywgMTkzLCAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAxNzksIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMjI2LCAyMDQsIDE3OSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDE5OSwgCisgICAgMTA5LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDE0MCwgMywgMjM3LCAxNTcsIDQ3LCAxOSwgOSwgMzMsIDE0MCwgMywgMjM3LCAKKyAgICAxNTcsIDY1LCAxOSwgMjE3LCAxOSwgNDksIDIxNiwgMTE1LCAyMTcsIDE5LCA1MSwgMjE2LCAxMTUsIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgMTkzLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIAorICAgIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAKKyAgICAzLCA4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgCisgICAgMTkzLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTU1LCAKKyAgICAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDMsIDE0MCwgCisgICAgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAKKyAgICAxNTUsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDg0LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCAxNTUsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAzLCAKKyAgICA4NCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIAorICAgIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAKKyAgICAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIAorICAgIDMsIDE5MywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDE5MywgNDcsIDE5LCA5LCAzMywgCisgICAgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCAxNTUsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAyMDQsIDMsIDE5MywgODIsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgCisgICAgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAKKyAgICAyMjgsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgODQsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAKKyAgICAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMjYsIDIwNCwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCAKKyAgICAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAKKyAgICA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMTkzLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgCisgICAgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAKKyAgICAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgCisgICAgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgCisgICAgMjI2LCAyMDQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMjcsIDg3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgODQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIAorICAgIDksIDMzLCAxNTUsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAKKyAgICAyMDQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEyLCAKKyAgICAzMCwgMjAzLCAxOTIsIDI1MCwgMTg5LCAyMjYsIDYwLCAyMDgsIDc3LCAyLCA2NSwgMTksIDksIDMzLCAyMTQsIDE0OSwgCisgICAgMjAzLCAxOTIsIDI1MCwgMTg5LCAyMjYsIDYwLCAyMDgsIDc3LCAyLCA2NSwgMTksIDksIDMzLCAyNTEsIDEyMywgNjUsIDE5LCAKKyAgICA5LCAzMywgMjUxLCAxNTYsIDY1LCAxOSwgOSwgMzMsIDIyMSwgMTA5LCA2NSwgMTksIDksIDMzLCAyMTIsIDMxLCA2NSwgMTksIAorICAgIDksIDMzLCAyMTMsIDIwNiwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNDUsIDY1LCAxOSwgOSwgMzMsIDIwMSwgOTIsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIxMiwgMzAsIDY1LCAxOSwgOSwgMzMsIDIxMiwgMjksIDI1MSwgMTQ1LCAyMDEsIDkxLCA5LCAzMywgMjI3LCAKKyAgICAyMzksIDIxMywgODcsIDU0LCA5LCAzMywgMjQ4LCAxNTQsIDI1MCwgMjUxLCAyNTAsIDI1MiwgNTgsIDIxMSwgMTc0LCA1OCwgCisgICAgMjExLCA2MywgNTgsIDIxMCwgMjUxLCA1OCwgMjEwLCAyNDAsIDU4LCAyMTAsIDIyOSwgNTgsIDIxMCwgMjE4LCA1OCwgMjEwLCAKKyAgICAyMDcsIDU4LCAyMTAsIDE5NiwgNTgsIDIxMCwgMTg1LCA1OCwgMjExLCAxNzMsIDU4LCAyMTEsIDE2MiwgNTgsIDIxMSwgCisgICAgMTUxLCA1OCwgMjExLCAxNDAsIDU4LCAyMTEsIDEyOSwgNTgsIDIxMSwgMTE4LCA1OCwgMjExLCAxMDcsIDIxNSwgMTksIAorICAgIDIzNiwgMjQyLCAzNiwgODMsIDI0NiwgNzAsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDE0MSwgMjQ2LCA3MCwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMTQxLCAyMzYsIDE4MywgMjA4LCA3NiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgMjQ2LCA3OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjEwLCAxNjcsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDIzOCwgNDMsIDgxLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMTQsIDc5LCA4MSwgMjE1LCAxOSwgMjM2LCAyNDIsIAorICAgIDM2LCA4MywgNDksIDY0LCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDIyNCwgCisgICAgMjQ3LCAyNDgsIDY4LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzMsIDE3NywgMjM4LCAxOTUsIDM4LCAzMywgNDksIAorICAgIDIzNCwgMjEzLCAzOCwgMzMsIDUxLCAyMzQsIDIxMywgMzgsIDUzLCAyMDUsIDI0MSwgNDksIDIzNCwgMjEzLCAzOCwgNTMsIAorICAgIDIwNSwgMjQxLCA1MSwgMjM0LCAyMTMsIDM4LCAyMjIsIDIyOSwgNDksIDIzNCwgMjEzLCAzOCwgMjIyLCAyMjksIDUxLCAKKyAgICAyMzQsIDIxMywgMzgsIDI0MywgNTYsIDIyMiwgMjI4LCAzOCwgMzMsIDQ5LCAxNjcsIDU3LCAzOCwgMzMsIDUxLCAxNjcsIAorICAgIDU3LCAzOCwgMjA1LCAyNDEsIDQ5LCAxNjcsIDU3LCAzOCwgMjA1LCAyNDEsIDUxLCAxNjcsIDU3LCAzOCwgMjIyLCAyMjksIAorICAgIDQ5LCAxNjcsIDU3LCAzOCwgMjIyLCAyMjksIDUxLCAxNjcsIDU3LCAzOCwgMjQzLCA1NiwgMjIyLCAyMjksIDU3LCAzOCwgCisgICAgMzcsIDIwNSwgMjExLCA0OSwgMjM0LCAyMTMsIDM4LCAzNywgMjA1LCAyMTEsIDUxLCAyMzQsIDIxMywgMjE1LCAxOSwgMjM2LCAKKyAgICAyNDIsIDM2LCA4MywgMTIwLCA3MywgMjI1LCAzOCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjM4LCAxOTEsIDI0MSwgCisgICAgMjQ0LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzgsIDE4MCwgMjQxLCAyNDQsIDIxNSwgMTksIDIzNiwgMjQyLCAKKyAgICAzNiwgODMsIDEyOCwgMjI0LCAxNzYsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIwMSwgNzQsIDEyOCwgMjI0LCAxNzYsIAorICAgIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyMTYsIDExNSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIAorICAgIDIxNiwgMTE1LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjQyLCAxOTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAKKyAgICAyNDIsIDM2LCA4MywgNTEsIDI0MiwgMTk2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyMDUsIDE0NiwgCisgICAgMjEwLCA1NSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICA1MSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA1MywgMjUxLCA3MSwgMTU5LCAKKyAgICAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCAKKyAgICA4MywgNDksIDI1MSwgNzEsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDI1MSwgNzEsIDE1OSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIAorICAgIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDY0LCAyNDMsIDE2LCAxNTksIDIxNSwgMTksIAorICAgIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjQzLCAxNiwgMTU5LCAyMTAsIDE0NSwgMjQwLCAxODIsIDY0LCAyMTAsIDE0NSwgCisgICAgMjQwLCAxODIsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA1MiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIAorICAgIDgzLCA1MSwgNTIsIDE1OSwgMjQxLCAyNDMsIDIxNiwgMjQxLCAyNDcsIDUyLCAyMTYsIDI0MSwgMjAxLCA3NCwgMjE2LCAKKyAgICAyNDEsIDUzLCAyMDEsIDc0LCAyMTYsIDI0MSwgMjQxLCAyNDMsIDEyOCwgMjI0LCAxNzYsIDI0NywgNTIsIDEyOCwgMjI0LCAKKyAgICAxNzYsIDIwMSwgNzQsIDEyOCwgMjI0LCAxNzYsIDQsIDI0NiwgNzAsIDQsIDE0MSwgMjQ2LCA3MCwgNCwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDQsIDIxMCwgMTY3LCA0LCAyNDYsIDc5LCA0LCAyMTQsIDc5LCA4MSwgNCwgMjM4LCA0MywgODEsIDQsIDIzOCwgCisgICAgMTkxLCAyNDEsIDI0NCwgNCwgNDksIDIxNiwgMTE1LCA0LCA1MSwgMjE2LCAxMTUsIDQsIDQ5LCAyNDIsIDE5NiwgMTU5LCA0LCAKKyAgICA1MSwgMjQyLCAxOTYsIDE1OSwgNCwgNDksIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQsIDUxLCAyMDUsIDE0NiwgMjEwLCAKKyAgICA1NSwgMTU5LCA0LCA0MSwgNTQsIDQsIDI1MSwgODksIDQsIDI1MCwgMTY1LCA0LCA5MywgNTQsIDQsIDIzMywgMzIsIDQsIAorICAgIDIyNCwgMjQxLCA1NCwgNCwgMjM1LCA2NywgNTQsIDQsIDIzOCwgMTIyLCA1NCwgNCwgMjEzLCAxMDYsIDIwOSwgMTYsIDQsIAorICAgIDI0MCwgMTk0LCA1NCwgNCwgMjE2LCAyNywgNTQsIDQsIDI0NiwgNjgsIDI1MCwgMTU1LCA5LCAyMzcsIDE1NywgNjUsIDE5LCAKKyAgICA5LCAyMDYsIDIyNCwgMywgMjM3LCAxNTcsIDU2LCA5LCAyNDIsIDE2LCA2NSwgMTksIDksIDIwNywgNywgMjM2LCAyMTgsIDksIAorICAgIDIyNywgMzUsIDY1LCAxOSwgOSwgMjM3LCAxNTksIDY1LCAxOSwgOSwgMjM3LCAxNTksIDE3OSwgMTksIDksIDI0MiwgMTgsIAorICAgIDY1LCAxOSwgOSwgMjQyLCAxOCwgMTc5LCAxOSwgOSwgMjI3LCAzNywgNjUsIDE5LCA5LCAyMjcsIDM3LCAxNzksIDE5LCA5LCAKKyAgICAyMTAsIDEwNSwgNjUsIDE5LCA5LCAyMTAsIDEwNSwgMTc5LCAxOSwgOSwgMjA3LCAyMzcsIDY1LCAxOSwgOSwgMjA3LCAyMzcsIAorICAgIDE3OSwgMTksIDksIDEsIDIzNCwgMjA0LCA2NSwgMTksIDksIDEsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA2NSwgMTksIDksIAorICAgIDEsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA0NywgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIAorICAgIDEsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAyMjgsIAorICAgIDY1LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAyMjgsIDQ3LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgNjUsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIAorICAgIDgyLCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMTc5LCAxOSwgOSwgMSwgMTQwLCA2NSwgMTksIDksIDEsIDE0MCwgCisgICAgNDcsIDE5LCA5LCAxLCAyNDgsIDI0MSwgNjUsIDE5LCA5LCAxLCAyNDgsIDI0MSwgNDcsIDE5LCA5LCAxLCAyNDgsIDI0MSwgCisgICAgODIsIDE5LCA5LCAxLCAyNDgsIDI0MSwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU3LCA2NSwgMTksIDksIDEsIAorICAgIDIwNiwgMTg0LCAyMjIsIDE1NywgNDcsIDE5LCA5LCAxLCAyMDYsIDE4NCwgNjUsIDE5LCA5LCAxLCAyMDYsIDE4NCwgNDcsIAorICAgIDE5LCA5LCAxLCAyMDYsIDE4NCwgODIsIDE5LCA5LCAxLCAyMDYsIDE4NCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxMDMsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjA2LCAxMDMsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxMDMsIDgyLCAxOSwgOSwgMSwgMjA2LCAxMDMsIDE3OSwgCisgICAgMTksIDksIDEsIDE5MywgNjUsIDE5LCA5LCAxLCAxOTMsIDQ3LCAxOSwgOSwgMSwgMTkzLCA4MiwgMTksIDksIDEsIDE5MywgCisgICAgMTc5LCAxOSwgOSwgMSwgMTU1LCA2NSwgMTksIDksIDEsIDE1NSwgNDcsIDE5LCA5LCAxLCAxNTUsIDgyLCAxOSwgOSwgMSwgCisgICAgMTU1LCAxNzksIDE5LCA5LCAxLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAxLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAxLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAxLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMSwgMjQyLCAzMCwgNjUsIDE5LCA5LCAxLCAyNDIsIAorICAgIDMwLCA0NywgMTksIDksIDEsIDIwNiwgMTE1LCA2NSwgMTksIDksIDEsIDIwNiwgMTE1LCA0NywgMTksIDksIDEsIDIxMywgCisgICAgMTU1LCA2NSwgMTksIDksIDEsIDIxMywgMTU1LCA0NywgMTksIDksIDEsIDE5OSwgMTA2LCA2NSwgMTksIDksIDEsIDE5OSwgCisgICAgMTA2LCA0NywgMTksIDksIDEsIDIxMSwgMTg3LCA2NSwgMTksIDksIDEsIDIxMSwgMTg3LCA0NywgMTksIDksIDEsIDIxMSwgCisgICAgMTg3LCA4MiwgMTksIDksIDEsIDIxMSwgMTg3LCAxNzksIDE5LCA5LCAxLCAyMTAsIDYyLCA2NSwgMTksIDksIDEsIDIxMCwgCisgICAgNjIsIDQ3LCAxOSwgOSwgMSwgMjEwLCA2MiwgODIsIDE5LCA5LCAxLCAyMTAsIDYyLCAxNzksIDE5LCA5LCAxLCAyMTIsIDU3LCAKKyAgICA2NSwgMTksIDksIDEsIDIxMiwgNTcsIDQ3LCAxOSwgOSwgMSwgMjEyLCA1NywgODIsIDE5LCA5LCAxLCAyMTIsIDU3LCAxNzksIAorICAgIDE5LCA5LCAxLCAyNDIsIDUzLCA2NSwgMTksIDksIDEsIDI0MiwgNTMsIDQ3LCAxOSwgOSwgMSwgMjQyLCA1MywgODIsIDE5LCAKKyAgICA5LCAxLCAyNDIsIDUzLCAxNzksIDE5LCA5LCAxLCAyMDcsIDEwLCA2NSwgMTksIDksIDEsIDIwNywgMTAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjA3LCAxMCwgODIsIDE5LCA5LCAxLCAyMDcsIDEwLCAxNzksIDE5LCA5LCAxLCAxOTksIDEwOSwgNjUsIDE5LCA5LCAxLCAKKyAgICAxOTksIDEwOSwgNDcsIDE5LCA5LCAxLCAxOTksIDEwOSwgODIsIDE5LCA5LCAxLCAxOTksIDEwOSwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjUxLCAxNzIsIDY1LCAxOSwgOSwgMSwgMjUxLCAxNzIsIDQ3LCAxOSwgOSwgMSwgMjUxLCAxNzIsIDgyLCAxOSwgOSwgMSwgCisgICAgMjUxLCAxNzIsIDE3OSwgMTksIDksIDEsIDIzNSwgMTk1LCA2NSwgMTksIDksIDEsIDIzNSwgMTk1LCA0NywgMTksIDksIDEsIAorICAgIDIzNSwgMTk1LCA4MiwgMTksIDksIDEsIDIzNSwgMTk1LCAxNzksIDE5LCA5LCAxLCAyMzcsIDEzNSwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzcsIDEzNSwgNDcsIDE5LCA5LCAxLCAyMzcsIDEzNSwgODIsIDE5LCA5LCAxLCAyMzcsIDEzNSwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjE0LCAxNTMsIDY1LCAxOSwgOSwgMSwgMjE0LCAxNTMsIDQ3LCAxOSwgOSwgMSwgMjE0LCAxNTMsIDgyLCAxOSwgOSwgMSwgCisgICAgMjE0LCAxNTMsIDE3OSwgMTksIDksIDEsIDIyNywgODcsIDY1LCAxOSwgOSwgMSwgMjI3LCA4NywgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjcsIDg3LCA4MiwgMTksIDksIDEsIDIyNywgODcsIDE3OSwgMTksIDksIDEsIDIyNSwgOTIsIDY1LCAxOSwgOSwgMSwgCisgICAgMjI1LCA5MiwgNDcsIDE5LCA5LCAxLCAyMjUsIDkyLCA4MiwgMTksIDksIDEsIDIyNSwgOTIsIDE3OSwgMTksIDksIDEsIDg0LCAKKyAgICA2NSwgMTksIDksIDEsIDg0LCA0NywgMTksIDksIDEsIDg0LCA4MiwgMTksIDksIDEsIDg0LCAxNzksIDE5LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgNjUsIDE5LCA5LCAxLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAxLCAyMTgsIDIyOCwgODIsIDE5LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDQ3LCAxOSwgOSwgMSwgMjM0LCAKKyAgICAxMTYsIDgyLCAxOSwgOSwgMSwgMjM0LCAxMTYsIDE3OSwgMTksIDksIDEsIDIwMSwgNzMsIDY1LCAxOSwgOSwgMSwgMjAxLCAKKyAgICA3MywgNDcsIDE5LCA5LCAxLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDEsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMSwgOTAsIDY1LCAxOSwgOSwgMSwgOTAsIDQ3LCAxOSwgOSwgMSwgOTAsIDgyLCAxOSwgOSwgMSwgOTAsIDE3OSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAKKyAgICAyMjIsIDIyNCwgODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAKKyAgICAyMzQsIDIwNCwgMjQ4LCAyMjgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgCisgICAgMjI4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgNDcsIAorICAgIDE5LCAxOTksIDgyLCAyMDEsIDI1LCAyMTgsIDI0MCwgMjA4LCAyNDQsIDE1OCwgMjM4LCA0MywgODEsIDE1OCwgMjE0LCA2MywgCisgICAgODEsIDE1OCwgNDEsIDU0LCAxNTgsIDI0MCwgMTk0LCA1NCwgMTU4LCAyMTYsIDI3LCA1NCwgMTU4LCAyNTEsIDg5LCAxNTgsIAorICAgIDI1MSwgMTMsIDE1OCwgNDksIDIxNiwgMTE1LCAxNTgsIDUxLCAyMTYsIDExNSwgMTU4LCAyNTAsIDE2NSwgMTU4LCA5MywgCisgICAgNTQsIDE1OCwgMjQ2LCA3MCwgMTU4LCAyMzMsIDMyLCAxNTgsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNTgsIDIwOSwgMTYsIAorICAgIDE1OCwgMTcsIDE5OSwgODEsIDE1OCwgMTcsIDEwMiwgMTU4LCAxNywgMTA1LCAxNTgsIDE3LCAxNDcsIDE1OCwgMTcsIDE0OSwgCisgICAgMTU4LCAxNywgMTY0LCAxNTgsIDE3LCAxODcsIDE1OCwgMTcsIDIxMCwgMTM1LCAxNTgsIDE3LCAxOTIsIDE1OCwgMTcsIAorICAgIDIxOSwgMTEzLCAxNTgsIDI0NiwgNzksIDE1OCwgMjEwLCAxNjcsIDE1OCwgMjI0LCAyNDEsIDU0LCAxNTgsIDIzOCwgMTIyLCAKKyAgICA1NCwgMTU4LCAyMzUsIDY3LCA1NCwgMTU4LCAyMTQsIDc5LCA4MSwgMTU4LCAyNDYsIDY4LCAyNTAsIDE1NSwgMTU4LCA4LCAKKyAgICA2LCAxLCA2MiwgMTU4LCA4LCA2LCAxLCAyNTAsIDEwMywgMTU4LCA4LCA2LCAxLCAyNDcsIDIyMywgMTU4LCA4LCA2LCAxLCAKKyAgICAyNDIsIDE1MywgMTU4LCA4LCA2LCAxLCA3MiwgMTU4LCA4LCA2LCAxLCAyMzgsIDUsIDE1OCwgOCwgNiwgMSwgMjM2LCAxNTYsIAorICAgIDE1OCwgOCwgNiwgMSwgMjM0LCAyNDcsIDE1OCwgOCwgNiwgMSwgNzAsIDE1OCwgOCwgNiwgMSwgMjI3LCAyNTEsIDE1OCwgOCwgCisgICAgNiwgMSwgMjI3LCAxMTgsIDE1OCwgOCwgNiwgMSwgMTU2LCAxNTgsIDgsIDYsIDEsIDIyMywgMjQzLCAxNTgsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE0LCAxNTgsIDgsIDYsIDEsIDc0LCAxNTgsIDgsIDYsIDEsIDIxNiwgMjI2LCAxNTgsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCAxNTgsIDgsIDYsIDEsIDE0NiwgMTU4LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTU4LCA4LCA2LCAxLCAyMDcsIDgzLCAKKyAgICAxNTgsIDgsIDYsIDEsIDY2LCAxNTgsIDgsIDYsIDEsIDIwMywgMTY4LCAxNTgsIDgsIDYsIDEsIDIwMSwgMTQ3LCAxNTgsIDgsIAorICAgIDYsIDEsIDIwMCwgMTk1LCAxNTgsIDgsIDYsIDEsIDIwMCwgMTIzLCAxNTgsIDgsIDYsIDEsIDE5OSwgMTU3LCAxNTgsIDQ5LCAKKyAgICA1MiwgMTU5LCAxNTgsIDIxMywgMTA2LCAyMDksIDE2LCAxNTgsIDUxLCA1MiwgMTU5LCAxNTgsIDI0NiwgMTQ3LCAyNTEsIAorICAgIDI1MSwgMTU4LCAxMjgsIDIyNCwgMTc2LCAxNTgsIDIzNSwgNzQsIDI1MSwgMjUxLCAxNTgsIDgsIDQsIDEsIDYyLCAxNTgsIAorICAgIDgsIDQsIDEsIDI1MCwgMTAzLCAxNTgsIDgsIDQsIDEsIDI0NywgMjIzLCAxNTgsIDgsIDQsIDEsIDI0MiwgMTUzLCAxNTgsIAorICAgIDgsIDQsIDEsIDcyLCAxNTgsIDgsIDQsIDEsIDIzOCwgNSwgMTU4LCA4LCA0LCAxLCAyMzYsIDE1NiwgMTU4LCA4LCA0LCAxLCAKKyAgICAyMzQsIDI0NywgMTU4LCA4LCA0LCAxLCA3MCwgMTU4LCA4LCA0LCAxLCAyMjcsIDI1MSwgMTU4LCA4LCA0LCAxLCAyMjcsIAorICAgIDExOCwgMTU4LCA4LCA0LCAxLCAxNTYsIDE1OCwgOCwgNCwgMSwgMjIzLCAyNDMsIDE1OCwgOCwgNCwgMSwgMjIwLCAyMTQsIAorICAgIDE1OCwgOCwgNCwgMSwgNzQsIDE1OCwgOCwgNCwgMSwgMjE2LCAyMjYsIDE1OCwgOCwgNCwgMSwgMjE0LCAxNjcsIDE1OCwgOCwgCisgICAgNCwgMSwgMTQ2LCAxNTgsIDgsIDQsIDEsIDIxMiwgMTIyLCAxNTgsIDgsIDQsIDEsIDIwNywgODMsIDE1OCwgOCwgNCwgMSwgCisgICAgNjYsIDE1OCwgOCwgNCwgMSwgMjAzLCAxNjgsIDE1OCwgOCwgNCwgMSwgMjAxLCAxNDcsIDE1OCwgOCwgNCwgMSwgMjAwLCAKKyAgICAxOTUsIDE1OCwgOCwgNCwgMSwgMjAwLCAxMjMsIDE1OCwgOCwgNCwgMSwgMTk5LCAxNTcsIDE1OCwgNDksIDI0MiwgMTk2LCAKKyAgICAxNTksIDE1OCwgODMsIDIyNCwgMTc2LCAxNTgsIDUxLCAyNDIsIDE5NiwgMTU5LCAxNTgsIDIwNSwgMjQwLCAxNTgsIDQ5LCAKKyAgICA2NCwgMjE2LCAxMTUsIDE1OCwgNTEsIDY0LCAyMTYsIDExNSwgMTMwLCAxNDEsIDIzNiwgMTgzLCAyMDgsIDc2LCAxMzAsIAorICAgIDQ5LCAyNDMsIDE2LCAxNTksIDEzMCwgNTEsIDI0MywgMTYsIDE1OSwgMTMwLCAxNDEsIDI0NiwgNzAsIDEzMCwgNjksIDEwMSwgCisgICAgMjQwLCAxODIsIDEzMCwgNjksIDEsIDIwMSwgMCwgMTMwLCA2OSwgMSwgNCwgNjIsIDEzMCwgNjksIDEsIDQsIDcwLCAxMzAsIAorICAgIDY5LCAxLCA0LCA2NiwgMTMwLCA2OSwgMSwgNCwgNzIsIDEzMCwgNjksIDEsIDQsIDc0LCAxMzAsIDY5LCAxLCA0LCAxODMsIAorICAgIDEzMCwgNjksIDEsIDQsIDE5OSwgMjExLCAxMzAsIDY5LCAxLCA0LCAxOTksIDI0NSwgMTMwLCA2OSwgMSwgNCwgMjA0LCAKKyAgICAyMTUsIDEzMCwgMjI3LCAzMiwgMjE0LCAyNDgsIDIwOSwgMSwgODEsIDEzMCwgNjksIDEsIDYyLCAxMzAsIDY5LCAxLCA3MCwgCisgICAgMTMwLCA2OSwgMSwgNjYsIDEzMCwgNjksIDEsIDcyLCAxMzAsIDY5LCAxLCA3NCwgMTMwLCA2OSwgMSwgMTYxLCAxMzAsIDY5LCAKKyAgICAxLCAyMjYsIDE2MywgMTMwLCA2OSwgMSwgMjI2LCAxNSwgMTMwLCA2OSwgMSwgMjI3LCA4LCAxMzAsIDY5LCAxLCAyMjYsIAorICAgIDg4LCAxMzAsIDY5LCAxLCAyMTIsIDY0LCAxMzAsIDY5LCAxLCAyMDksIDE4MiwgMTMwLCA2OSwgMSwgMjA4LCAyNCwgMTMwLCAKKyAgICA2OSwgMSwgMjExLCAyMDIsIDEzMCwgNjksIDEsIDIwOSwgMjksIDEzMCwgNjksIDEsIDIwNywgMzYsIDEzMCwgNjksIDEsIAorICAgIDIwNiwgMTUsIDEzMCwgNjksIDEsIDIwNCwgMjE1LCAxMzAsIDY5LCAxLCAyMDYsIDIwMSwgMTMwLCA2OSwgMSwgMTM4LCAKKyAgICAxMzAsIDY5LCAxLCAxODgsIDEzMCwgNjksIDEsIDIxOSwgMTUwLCAxMzAsIDY5LCAxLCAyMTgsIDEzMywgMTMwLCA2OSwgMSwgCisgICAgMjIwLCAzNCwgMTMwLCA2OSwgMSwgMjE4LCAyNDEsIDEzMCwgNjksIDEsIDE0NCwgMTMwLCA2OSwgMSwgMjM0LCA3NSwgMTMwLCAKKyAgICA2OSwgMSwgMjMzLCA5NywgMTMwLCA2OSwgMSwgMjM0LCAxMzksIDEzMCwgNjksIDEsIDIzMywgMjA3LCAxMzAsIDY5LCAxLCAKKyAgICAxNzgsIDEzMCwgNjksIDEsIDIyMSwgMjExLCAxMzAsIDY5LCAxLCAyMjEsIDQxLCAxMzAsIDY5LCAxLCAyMjIsIDc2LCAxMzAsIAorICAgIDY5LCAxLCAyMjEsIDEzNiwgMTMwLCA2OSwgMSwgMTgzLCAxMzAsIDY5LCAxLCAxOTksIDIxMSwgMTMwLCA2OSwgMSwgMTk5LCAKKyAgICAyNDUsIDEzMCwgNjksIDEsIDIxMywgMjUyLCAxMzAsIDY5LCAxLCAyMTMsIDg4LCAxMzAsIDY5LCAxLCAyMTIsIDE3NSwgCisgICAgMTMwLCA2OSwgMSwgMjEzLCAxOTAsIDEzMCwgNjksIDEsIDIxMywgMSwgMTMwLCA2OSwgMSwgMjAxLCAxMTQsIDEzMCwgNjksIAorICAgIDEsIDIyMCwgMjE0LCAxMzAsIDY5LCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgMTMwLCA2OSwgMjEwLCAxNzIsIDIwOSwgMSwgCisgICAgODEsIDEzMCwgMjksIDIzNywgOTMsIDEzMCwgMjksIDEsIDIyNiwgMTIxLCAxMzAsIDI5LCAxLCAyMDgsIDE3MSwgMTMwLCAKKyAgICAyOSwgMSwgMjI2LCAxMTQsIDEzMCwgMjksIDEsIDIxOSwgMTQzLCAxMzAsIDI5LCAxLCAyMTksIDE0MSwgMTMwLCAyOSwgMSwgCisgICAgMjE5LCAxNDAsIDEzMCwgMjksIDEsIDIwNSwgMjUzLCAxMzAsIDI5LCAxLCAyMDgsIDE2MCwgMTMwLCAyOSwgMSwgMjEzLCAKKyAgICA3OCwgMTMwLCAyOSwgMSwgMjEzLCA3MywgMTMwLCAyOSwgMSwgMjEzLCA3MCwgMTMwLCAyOSwgMSwgMjEzLCA2MywgMTMwLCAKKyAgICAyOSwgMSwgMjEzLCA1OCwgMTMwLCAyOSwgMSwgMjEzLCA1MywgMTMwLCAyOSwgMSwgMjEzLCA2NCwgMTMwLCAyOSwgMSwgCisgICAgMjEzLCA3NiwgMTMwLCAyOSwgMSwgMjIxLCAxOTcsIDEzMCwgMjksIDEsIDIxNSwgMTkwLCAxMzAsIDI5LCAxLCAyMDgsIAorICAgIDE2OCwgMTMwLCAyOSwgMSwgMjE1LCAxNzksIDEzMCwgMjksIDEsIDIwOSwgMTI5LCAxMzAsIDI5LCAxLCAyMDgsIDE2NSwgCisgICAgMTMwLCAyOSwgMSwgMjI4LCAxNzQsIDEzMCwgMjksIDEsIDI0NiwgMTY4LCAxMzAsIDI5LCAxLCAyMDgsIDE3NSwgMTMwLCAKKyAgICAyOSwgMSwgMjQ2LCAyMzIsIDEzMCwgMjksIDEsIDIyNiwgMTgzLCAxMzAsIDI5LCAxLCAyMDYsIDgwLCAxMzAsIDI5LCAxLCAKKyAgICAyMTUsIDIyNywgMTMwLCAyOSwgMSwgMjM0LCA2NiwgMTMwLCAyOSwgMSwgNjIsIDEzMCwgMjksIDEsIDI1MSwgMjIxLCAxMzAsIAorICAgIDI5LCAxLCAxODMsIDEzMCwgMjksIDEsIDIwMCwgOTgsIDEzMCwgMjksIDEsIDIzOCwgMTQyLCAxMzAsIDI5LCAxLCA3MiwgCisgICAgMTMwLCAyOSwgMSwgMjAwLCAzOCwgMTMwLCAyOSwgMSwgMjAwLCA1MSwgMTMwLCAyOSwgMSwgNzQsIDEzMCwgMjksIDEsIAorICAgIDIwMSwgMTE0LCAxMzAsIDI5LCAxLCAyMDEsIDExMCwgMTMwLCAyOSwgMSwgMjE3LCAxMjEsIDEzMCwgMjksIDEsIDE5OSwgCisgICAgMjQ1LCAxMzAsIDI5LCAxLCA2NiwgMTMwLCAyOSwgMSwgMjAxLCA1MCwgMTMwLCAyOSwgMSwgMjAxLCA2NCwgMTMwLCAyOSwgCisgICAgMSwgMjAxLCAzMSwgMTMwLCAyOSwgMSwgMTk5LCAyMTEsIDEzMCwgMjksIDEsIDIzOCwgNjksIDEzMCwgMjksIDEsIDIwMCwgCisgICAgOSwgMTMwLCAyOSwgMSwgNzAsIDE1OCwgMjQ3LCA1OCwgNTQsIDE1OCwgMjE1LCA1NiwgNTQsIDE1OCwgMjE4LCAyMTUsIDU0LCAKKyAgICAxNTgsIDIyMiwgMjI4LCAxNTgsIDI0OCwgNDYsIDE0OCwgMTU4LCAyMDAsIDQyLCA1NCwgMTU4LCAyMDAsIDI0NiwgNTQsIAorICAgIDEzMCwgMjM2LCAyMzksIDE2MiwgMjAzLCA0MiwgMTMwLCA5OCwgNDgsIDEzMCwgMTgyLCA0OCwgMTMwLCA4NywgNDgsIDEzMCwgCisgICAgMTkxLCA0OCwgMTMwLCA2MywgMjA4LCAxOTMsIDEzMCwgNjQsIDI0NiwgMTU1LCAyMjgsIDYyLCAyNTEsIDU4LCAyNTEsIDgxLCAKKyAgICAyMjgsIDYyLCAyNTEsIDU4LCAyMTAsIDE1NCwgMjI4LCA2MiwgMjUxLCA1OCwgMjA2LCAxNTIsIDIxNywgMTM5LCAyMTMsIAorICAgIDEyOCwgMjQ3LCAyMCwgMjEzLCAxMjgsIDI0NywgMjAsIDMwLCA2OCwgNSwgMjUwLCA4NywgNjIsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA1NiwgNzIsIDMwLCA2OCwgNSwgMjUwLCA2NSwgNzAsIDMwLCA2OCwgNSwgMjUwLCAzMywgNzQsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA4MywgNjYsIDMwLCA2OCwgNSwgMjUwLCAxMDIsIDI0MiwgNTgsIDMwLCA2OCwgNSwgMjUwLCA0OSwgMjQxLCAxNzUsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA4OSwgMjQxLCA3NiwgMzAsIDY4LCA1LCAyNTAsIDc5LCAyNDAsIDIxMSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDQzLCAyMzksIDEzNywgMzAsIDY4LCA1LCAyNTAsIDM3LCAyMjcsIDI0OCwgMzAsIDY4LCA1LCAyNTAsIDQ4LCAyMjcsIDIyNywgCisgICAgMzAsIDY4LCA1LCAyNTAsIDU4LCAyMjcsIDE2NiwgMzAsIDY4LCA1LCAyNTAsIDI5LCAyMjcsIDE0NywgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDE3LCAxNjEsIDMwLCA2OCwgNSwgMjUwLCA1MCwgMjI3LCA4LCAzMCwgNjgsIDUsIDI1MCwgMjcsIDIyNiwgMTYzLCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgMjQsIDIyNiwgODgsIDMwLCA2OCwgNSwgMjUwLCAxMywgMjI2LCAxNSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDE0LCAxNzgsIDMwLCA2OCwgNSwgMjUwLCA4MCwgMjIyLCA3NiwgMzAsIDY4LCA1LCAyNTAsIDIxLCAyMjEsIDIxMSwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDc4LCAyMjEsIDEzNiwgMzAsIDY4LCA1LCAyNTAsIDcwLCAyMjEsIDQxLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgOTEsIDE4OCwgMzAsIDY4LCA1LCAyNTAsIDY5LCAyMjAsIDM0LCAzMCwgNjgsIDUsIDI1MCwgNjMsIDIxOSwgMTUwLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNDIsIDIxOCwgMjQxLCAzMCwgNjgsIDUsIDI1MCwgMzksIDIxOCwgMTMzLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgOTgsIDE3MiwgMzAsIDY4LCA1LCAyNTAsIDIyLCAyMTYsIDczLCAzMCwgNjgsIDUsIDI1MCwgNTUsIDIxNSwgMjA0LCAzMCwgCisgICAgNjgsIDUsIDI1MCwgODIsIDIxNSwgMTA2LCAzMCwgNjgsIDUsIDI1MCwgNDQsIDIxNCwgMjI0LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNzcsIDIxNCwgMTU5LCAzMCwgNjgsIDUsIDI1MCwgMTYsIDIxNCwgMTM5LCAzMCwgNjgsIDUsIDI1MCwgNzIsIDIxNCwgMTIxLCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgNjEsIDIxNCwgMTA5LCAzMCwgNjgsIDUsIDI1MCwgMzQsIDIxMywgMjUyLCAzMCwgNjgsIDUsIAorICAgIDI1MCwgNjYsIDIxMywgMTkwLCAzMCwgNjgsIDUsIDI1MCwgNDEsIDIxMywgODgsIDMwLCA2OCwgNSwgMjUwLCAxMDAsIDIxMywgCisgICAgMSwgMzAsIDY4LCA1LCAyNTAsIDY3LCAyMTIsIDE3NSwgMzAsIDY4LCA1LCAyNTAsIDYyLCAyMTIsIDY0LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgODUsIDIxMSwgMjAyLCAzMCwgNjgsIDUsIDI1MCwgNTMsIDIwOSwgMTgyLCAzMCwgNjgsIDUsIDI1MCwgODEsIDIwOSwgCisgICAgMjksIDMwLCA2OCwgNSwgMjUwLCAzNiwgMjA4LCAyNCwgMzAsIDY4LCA1LCAyNTAsIDM1LCAyMDcsIDM2LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgOTYsIDIwNiwgMjAxLCAzMCwgNjgsIDUsIDI1MCwgNTcsIDIwNiwgMTUsIDMwLCA2OCwgNSwgMjUwLCA5NCwgMTM4LCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgMjUsIDIwNCwgMjE1LCAzMCwgNjgsIDUsIDI1MCwgNDAsIDIwMSwgMTE0LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgMTksIDIwMSwgNjQsIDMwLCA2OCwgNSwgMjUwLCA1NCwgMjAxLCAzMSwgMzAsIDY4LCA1LCAyNTAsIDUyLCAyMDEsIAorICAgIDAsIDMwLCA2OCwgNSwgMjUwLCA3NiwgMTk5LCAxMTQsIDMwLCA2OCwgNSwgMjUwLCAyMCwgMTk5LCA4OSwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDczLCAxOTksIDE0LCAzMCwgNjgsIDUsIDI1MCwgNjgsIDI1NCwgMTQ3LCAzMCwgNjgsIDUsIDI1MCwgNTEsIDI1NCwgCisgICAgMzUsIDMwLCA2OCwgNSwgMjUwLCAxMCwgMjUwLCAxMzksIDMwLCA2OCwgNSwgMjUwLCAyMywgMjM5LCAxMDMsIDMwLCA2OCwgCisgICAgNSwgMjUwLCA2LCAyMzksIDEwMiwgMzAsIDY4LCA1LCAyNTAsIDQ2LCAyMTgsIDY5LCAzMCwgNjgsIDUsIDI1MCwgNjQsIAorICAgIDIxNCwgMjIyLCAzMCwgNjgsIDUsIDI1MCwgMzIsIDIxNCwgMjI2LCAzMCwgNjgsIDUsIDI1MCwgMTgsIDIxMywgMjUwLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNjAsIDIxMywgMjQ5LCAzMCwgNjgsIDUsIDI1MCwgMjYsIDIxMywgMCwgMzAsIDY4LCA1LCAyNTAsIDI4LCAKKyAgICAyMDcsIDMzLCAzMCwgNjgsIDUsIDI1MCwgOCwgMjA0LCAxNjgsIDMwLCA2OCwgNSwgMjUwLCA1LCAxMDUsIDMwLCA2OCwgMTYsIAorICAgIDI1MCwgNzUsIDMwLCA2OCwgMTYsIDI1MCwgNzQsIDMwLCA2OCwgMTYsIDI1MCwgNzEsIDMwLCA2OCwgMTYsIDI1MCwgNTksIAorICAgIDMwLCA2OCwgMTYsIDI1MCwgNDcsIDMwLCA2OCwgMTYsIDI1MCwgNDUsIDMwLCA2OCwgMTYsIDI1MCwgMzgsIDMwLCA2OCwgCisgICAgMTYsIDI1MCwgMzEsIDMwLCA2OCwgMTYsIDI1MCwgMzAsIDMwLCA2OCwgMTYsIDI1MCwgMTUsIDMwLCA2OCwgMTYsIDI1MCwgCisgICAgMTIsIDMwLCA2OCwgMTYsIDI1MCwgMTEsIDMwLCA2OCwgMTYsIDI1MCwgOSwgMzAsIDY4LCAxNiwgMjUwLCA3LCAzMCwgNjgsIAorICAgIDEzNiwgMjUwLCA0LCAyMjIsIDE4MCwgMzAsIDY4LCAxMzYsIDI1MCwgMywgMjAwLCAyNTAsIDMwLCA2OCwgMTM2LCAyNTAsIAorICAgIDIsIDI0MSwgMTU4LCAzMCwgNjgsIDEzNiwgMjUwLCAxLCAyMzgsIDExOSwgMzAsIDY4LCAxMzYsIDI1MCwgMCwgMjIyLCAKKyAgICAxNTAsIDMwLCA2OCwgMTM2LCAyNDksIDI1NSwgMjA4LCAxMTYsIDMwLCA2OCwgMTM2LCAyNDksIDI1NCwgMjM4LCA1MCwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjUzLCAyMTMsIDIxNiwgMzAsIDY4LCAxMzYsIDI0OSwgMjUyLCAyMTAsIDY0LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyNTEsIDIzNCwgMTM4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTAsIDIwOCwgMjUxLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyNDksIDI0OCwgMTIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDgsIDI0MiwgMjU1LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDcsIAorICAgIDI0OCwgMjIsIDMwLCA2OCwgMTM2LCAyNDksIDI0NiwgMjAxLCAzOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ1LCAyNDksIDczLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAyNDQsIDIxNywgODgsIDMwLCA2OCwgMTM2LCAyNDksIDI0MywgMjA4LCAyMjMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDI0MiwgMjQyLCAxNjEsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyNDEsIDIyNywgNTYsIDMwLCA2OCwgMjIxLCAKKyAgICA5NywgMjQ5LCAyNDAsIDIyNywgNjYsIDMwLCA2OCwgMTM2LCAyNDksIDIzOSwgMjE3LCAxMDMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIzOCwgMjAxLCAxMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM3LCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjM2LCAyNTAsIDIyNywgCisgICAgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIzNSwgMjIyLCAzMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM0LCAyNDgsIDQ1LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMzMsIDIzNSwgMTA4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzIsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIzMSwgMjAwLCAyNDEsIDMwLCA2OCwgMTM2LCAyNDksIDIzMCwgMzAsIDY4LCAxMzYsIDI0OSwgMjI5LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyMjgsIDIzMywgMTI0LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjcsIDMwLCA2OCwgMTM2LCAyNDksIDIyNiwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjI1LCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjIzLCAyMDQsIDE4MywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjEsIDMwLCA2OCwgMTM2LCAyNDksIDIyMCwgMjQ2LCAxMDQsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDIxOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjE4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTcsIDIzNiwgNDYsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIxNiwgMjUwLCAyMTQsIDMwLCA2OCwgMTM2LCAyNDksIDIxNSwgMzAsIDY4LCAxMzYsIDI0OSwgMjE0LCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAyMTMsIDMwLCA2OCwgMTM2LCAyNDksIDIxMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjExLCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMTAsIDMwLCA2OCwgMTM2LCAyNDksIDIwOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjA4LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMDcsIDMwLCA2OCwgMTM2LCAyNDksIDIwNiwgMjIxLCA4OSwgMzAsIDY4LCAxMzYsIDI0OSwgMjA1LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMDQsIDIwNSwgMTA4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIwMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjAxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDAsIDMwLCA2OCwgMTM2LCAyNDksIDE5OSwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTk4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTcsIDMwLCA2OCwgMTM2LCAyNDksIDE5NiwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMTk1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTQsIDMwLCA2OCwgMTM2LCAyNDksIDE5MywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTkyLCAyMzQsIDEwNywgMzAsIDY4LCAxMzYsIDI0OSwgMTcxLCAyMzYsIDI1MSwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMTY4LCAyNDksIDUwLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjMsIDIwOCwgMjMwLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAxNjIsIDQ4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjEsIDMwLCA2OCwgMTM2LCAyNDksIDE2MCwgMjA3LCAxNjksIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE1OSwgMzAsIDY4LCAxMzYsIDI0OSwgMTU4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTcsIDIwMSwgMzUsIAorICAgIDI0NywgMTcsIDMwLCA2OCwgMTM2LCAyNDksIDE1NiwgMjQ3LCAxNywgMzAsIDY4LCAxMzYsIDI0OSwgMTU1LCAyNDcsIDE4LCAKKyAgICAyMzYsIDIxNSwgMzAsIDY4LCAxMzYsIDI0OSwgMTU0LCAyMDEsIDM3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE1MiwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDE1MSwgMjQxLCAxMSwgMzAsIDY4LCAxMzYsIDI0OSwgMTUwLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxNDksIDMwLCA2OCwgMTM2LCAyNDksIDE0NywgMzAsIDY4LCAxMzYsIDI0OSwgMTQ2LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAxNDUsIDMwLCA2OCwgMTM2LCAyNDksIDE0NCwgMjQxLCAyNDcsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDE0MywgMzAsIDY4LCAxMzYsIDI0OSwgMTQyLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDEsIDMwLCA2OCwgMTM2LCAyNDksIDE0MCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTM5LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMjI0LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTkxLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTkwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIAorICAgIDI0OSwgMTg5LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgCisgICAgMTg3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg2LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg1LCAKKyAgICAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg0LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgzLCAzMCwgNjgsIAorICAgIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgyLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgxLCAzMCwgNjgsIDEzNiwgCisgICAgMjAyLCAyNDUsIDI0OSwgMTgwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc5LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTc4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIAorICAgIDI0OSwgMTc2LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc1LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgCisgICAgMTc0LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTczLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTcyLCAKKyAgICAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTcwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY5LCAzMCwgNjgsIAorICAgIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY2LCAzMCwgNjgsIDEzNiwgCisgICAgMjAyLCAyNDUsIDI0OSwgMTY1LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY0LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTQ4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTM4LCAyNTEsIDIxNCwgMjAwLCAyMzgsIDIxMCwgCisgICAgMTU1LCAyMjQsIDE3NiwgMjUxLCAyMTQsIDIwMCwgMjM4LCAyMTAsIDE1NSwgMjQwLCAxODIsIDI1MSwgMjE0LCAyNDcsIDcsIAorICAgIDgxLCAyNTEsIDIxNCwgNDEsIDEwMiwgMjUxLCAyMTQsIDQxLCAxMDUsIDI1MSwgMjE0LCA0MSwgMTQ3LCAyNTEsIDIxNCwgCisgICAgNDEsIDE0OSwgMjUxLCAyMTQsIDQxLCAxNjQsIDI1MSwgMjE0LCA0MSwgMTg3LCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM1LCAKKyAgICAyNTEsIDIxNCwgNDEsIDE5MiwgMjUxLCAyMTQsIDQxLCAyMTksIDExMywgMjUxLCAyMTQsIDQxLCAyMDYsIDE2NiwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMDQsIDE1OSwgMjUxLCAyMTQsIDQxLCAyMDYsIDY3LCAyNTEsIDIxNCwgNDEsIDIzNiwgMjM1LCAyNTEsIAorICAgIDIxNCwgNDEsIDIzNywgMTA0LCAyNTEsIDIxNCwgNDEsIDIwOSwgOTIsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMjksIDI1MSwgCisgICAgMjE0LCA0MSwgMjM4LCAyMjIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMDgsIDI1MSwgMjE0LCA0MSwgMTEyLCAyMzMsIDgyLCAKKyAgICAyNTEsIDIxNCwgNDEsIDEyMCwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAxMjYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgCisgICAgMjM2LCAyMjksIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMDksIAorICAgIDEwNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMzgsIDIzMiwgCisgICAgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAxMTIsIDIwNiwgNTAsIAorICAgIDI1MSwgMjE0LCA0MSwgMTIwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDEyNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAKKyAgICAyMzYsIDIyOSwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzcsIDYxLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwOSwgCisgICAgMTA2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTE0LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwNiwgMTY3LCAyMDYsIAorICAgIDUwLCAyNTEsIDIxNCwgNDEsIDIwNCwgMTYwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwNiwgNjgsIDIwNiwgNTAsIDI1MSwgCisgICAgMjE0LCA0MSwgMjM2LCAyMzYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIDI1MSwgMjE0LCAKKyAgICA0MSwgMjA5LCA5MywgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzMCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzgsIAorICAgIDIyMywgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTksIDEwOSwgMjA2LCA1MCwgMjUxLCAyMTQsIDIwMSwgNTMsIDI0OSwgCisgICAgNjUsIDIwMywgMjM5LCAyNTEsIDIxNCwgMjAxLCA1MywgMjM3LCA3MywgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIDUzLCAKKyAgICAyMTEsIDE5NiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIDUzLCAyMDYsIDc1LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgCisgICAgNTMsIDIzNiwgMjIyLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIzOSwgMTQwLCAyMjIsIDc1LCAyMzcsIDczLCAyMDcsIDI1NCwgCisgICAgMjUxLCAyMTQsIDIyNCwgMTU3LCAyMjIsIDc1LCAyMzcsIDczLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIyMiwgNzUsIDIxMSwgCisgICAgMTk2LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIyMiwgNzUsIDIwNiwgNzUsIDIwNywgMjU0LCAzMSwgMjUxLCAyNDIsIDI1MCwgCisgICAgMTQxLCAxMTIsIDIxNCwgODcsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjM0LCAyMTMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjM5LCAxNjIsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDE2NCwgMzEsIDI1MSwgMjQyLCAyNTAsIAorICAgIDE0MSwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAKKyAgICAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAKKyAgICAxNjcsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjMzLCA4MywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgCisgICAgODMsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIwNiwgNTEsIDIwNiwgMjUxLCAzMSwgMjUxLCAKKyAgICAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDUxLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAKKyAgICA2MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIzMywgODMsIDIwOCwgCisgICAgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIDgzLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMDYsIDUxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIwNiwgCisgICAgNTEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCA1MSwgMjA4LCAxMDMsIDMxLCAKKyAgICAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMjEsIDEzOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDEwMSwgMTEyLCAyMTUsIAorICAgIDEyMywgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMDIsIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMTAyLCAzMSwgMjUxLCAKKyAgICAyNDIsIDIzOCwgMTI4LCAxMDUsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTA1LCAzMSwgMjUxLCAyNDIsIDI0MiwgMTU4LCAKKyAgICAxMjAsIDIzOSwgMTYxLCAzMSwgMjUxLCAyNDIsIDIzOCwgMTI4LCAxMjAsIDIzOSwgMTYxLCAzMSwgMjUxLCAyNDIsIDIwNSwgCisgICAgNzQsIDE2NCwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMDYsIAorICAgIDE2NywgMjUxLCAxMDksIDE5LCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIyMiwgCisgICAgMjIsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIAorICAgIDIwNiwgNjcsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjM3LCAKKyAgICAxMDUsIDI1MSwgMTA5LCAxOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDYsIAorICAgIDkwLCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMTIsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgCisgICAgMTI2LCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIzOCwgMTI4LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIAorICAgIDIwNSwgNzQsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIAorICAgIDI1MSwgMjQyLCAyNDcsIDExNSwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMjAsIDExMCwgMjM3LCA2MSwgCisgICAgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMTIsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjM3LCAKKyAgICA2MSwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyNDEsIDEzOSwgMjM3LCA2MSwgMjIxLCAxMzksIDMxLCAyNTEsIDI0MiwgCisgICAgMjA4LCA2NCwgMjM3LCAxMDUsIDIyMSwgMTM5LCAzMSwgMTEyLCAxNjcsIDU0LCAzMSwgMTEyLCAxNjcsIDIsIDI1MSwgMTA5LCAKKyAgICAxOSwgMzEsIDEyMCwgMjA2LCA3MiwgNTQsIDMxLCAxMjYsIDIxNCwgODYsIDU0LCAzMSwgMjAwLCA0OSwgNTQsIDMxLCAyMDYsIAorICAgIDI1MiwgNTQsIDMxLCAyMzksIDE2MywgNTQsIDMxLCAyMTcsIDEzNiwgNTQsIDMxLCAxMjAsIDIxNywgMTM1LCA1NCwgMzEsIAorICAgIDEyNiwgMjE3LCAxMzUsIDU0LCAzMSwgMjM2LCAyMjksIDIxNywgMTM1LCA1NCwgMzEsIDIzNywgNjEsIDIxNywgMTM1LCA1NCwgCisgICAgMzEsIDIyMiwgMTYsIDU0LCAzMSwgMjI1LCAyMDEsIDI0OSwgNjUsIDU0LCAzMSwgMjI0LCAxNTAsIDU0LCAzMSwgMjE3LCAwLCAKKyAgICA1NCwgMzEsIDIwMCwgMTcyLCA1NCwgMzEsIDI1MCwgMTk1LCA1NCwgMzEsIDI1MCwgMjEwLCA1NCwgMzEsIDIzNSwgODMsIAorICAgIDU0LCAzMSwgMjA1LCAzNSwgMjQ5LCA2NSwgNTQsIDMxLCAxOTksIDgyLCA1NCwgMzEsIDExMiwgMjE0LCA4OCwgNTQsIDMxLCAKKyAgICAyMDksIDEzMSwgNTQsIDMxLCAyMjgsIDk4LCA1NCwgMjE4LCAyMzUsIDU0LCAyMTIsIDI0MCwgMjEwLCAxMjYsIDU0LCAyMTIsIAorICAgIDI0MCwgMjAzLCAyNTQsIDU0LCAyMTIsIDI0MCwgMjEwLCAxNTksIDU0LCAyMTIsIDI0MCwgMjEwLCAxMjQsIDU0LCAyMTIsIAorICAgIDI0MCwgMjQxLCAyNiwgMjEwLCAxMjQsIDU0LCAyMTIsIDI0MCwgMjA5LCAxNTQsIDU0LCAyMTIsIDI0MCwgMjQxLCAxMzUsIAorICAgIDU0LCAyMTIsIDI0MCwgMjE0LCA3MSwgNTQsIDIxMiwgMjQwLCAyMTAsIDE0MywgNTQsIDIxMiwgMjQwLCAyMzksIDExNywgCisgICAgNTQsIDIxMiwgMjQwLCAyNTAsIDE4OSwgNTQsIDIxMiwgMjQwLCAyNDcsIDUxLCA1NCwgMzEsIDE2LCAyMDYsIDIyMiwgMjEzLCAKKyAgICA5MCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCA2MywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE1LCAxMTUsIDIzNCwgCisgICAgMTM2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDYsIDIyNSwgMjM0LCAxMzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NywgCisgICAgMTM4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDIyNywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAwLCAyNTAsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDIzNCwgMTA3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzYsIDM4LCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyMDYsIDEzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCA0OCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCA4NSwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjEwLCAzMCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ2LCA5NywgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjIyLCAxNzksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIyMiwgMTI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTEsIAorICAgIDIzOSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjI0LCAyMDUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMTA2LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyNDcsIDEyMiwgMjE1LCAxMjgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0MCwgMTk1LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDc2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDksIDYzLCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyNDYsIDc3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDI0OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjEwLCAxNywgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjMzLCAxMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNCwgNzIsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDI0OCwgMTcsIDIyNSwgMTYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NywgMTExLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMTMsIDIxNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM5LCAyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgCisgICAgMjM5LCAxNjgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwNCwgMTk5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDI1MiwgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE1LCAxMjksIDIwNSwgMTA4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDIsIDIxNSwgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCAxMzEsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMiwgMjMxLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMjQsIDE4OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCAyMzYsIDI0OSwgMTI5LCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMzcsIDIwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzUsIDc1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAKKyAgICAyMDgsIDY1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCA0LCAyNTAsIDExMywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAxLCA3NCwgCisgICAgMjQ5LCA4NCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMzgsIDIxNywgMTM4LCA5NywgMjI0LCAwLCAxLCA2MiwgMjI0LCAwLCAxLCAKKyAgICA3MiwgMjI0LCAwLCAxLCAyNTAsIDEwMywgMjI0LCAwLCAxLCAyNDgsIDIwMSwgMjI0LCAwLCAxLCAyMzYsIDE1NiwgMjI0LCAKKyAgICAwLCAxLCAyNDIsIDE1MywgMjI0LCAwLCAxLCA3MCwgMjI0LCAwLCAxLCAyMDEsIDE0NywgMjI0LCAwLCAxLCAxOTksIDE1NywgCisgICAgMjI0LCAwLCAxLCAyMDYsIDEyNCwgMjI0LCAwLCAxLCAyMjcsIDI1MSwgMjI0LCAwLCAxLCAyMjcsIDExOCwgMjI0LCAwLCAxLCAKKyAgICAyMTQsIDE2NywgMjI0LCAwLCAxLCAxNTYsIDIyNCwgMCwgMSwgMjIzLCAyNDMsIDIyNCwgMCwgMSwgMjIwLCAyMTQsIDIyNCwgCisgICAgMCwgMSwgMjIxLCAxNDEsIDIyNCwgMCwgMSwgMjE5LCAyMiwgMjI0LCAwLCAxLCA2NiwgMjI0LCAwLCAxLCAyMTYsIDIyNiwgCisgICAgMjI0LCAwLCAxLCAyMjYsIDExMCwgMjI0LCAwLCAxLCAxNDYsIDIyNCwgMCwgMSwgMjEyLCAxMjIsIDIyNCwgMCwgMSwgMjA3LCAKKyAgICA4MywgMjI0LCAwLCAxLCAyMDUsIDAsIDIyNCwgMCwgMSwgMjUxLCA4NSwgMjI0LCAwLCAxLCAyMzgsIDE3OSwgMjI0LCAwLCAKKyAgICAxLCAyMzQsIDI0NywgMjI0LCAwLCAxLCAyMDAsIDE5NSwgMjQ3LCAxMjgsIDEsIDYyLCAyNDcsIDEyOCwgMSwgMjE2LCAyMTIsIAorICAgIDI0NywgMTI4LCAxLCAyNDIsIDE1MywgMjQ3LCAxMjgsIDEsIDE1NiwgMjQ3LCAxMjgsIDEsIDIwMywgMTgwLCAyNDcsIDEyOCwgCisgICAgMSwgMTQ2LCAyNDcsIDEyOCwgMSwgMjI1LCA0NCwgMjQ3LCAxMjgsIDEsIDI1NCwgMTQ3LCAyNDcsIDEyOCwgMSwgMjE0LCAKKyAgICAxNjcsIDI0NywgMTI4LCAxLCAyNTAsIDEwMywgMjQ3LCAxMjgsIDEsIDIyMywgMjQzLCAyNDcsIDEyOCwgMSwgNzQsIDI0NywgCisgICAgMTI4LCAxLCAyNDIsIDYwLCAyNDcsIDEyOCwgMSwgMjA3LCA4MywgMjQ3LCAxMjgsIDEsIDIxMCwgMTE2LCAyNDcsIDEyOCwgCisgICAgMSwgMjEwLCAxMTUsIDI0NywgMTI4LCAxLCAyMTIsIDEyMiwgMjQ3LCAxMjgsIDEsIDI0NywgMjIyLCAyNDcsIDEyOCwgMSwgCisgICAgNjYsIDI0NywgMTI4LCAxLCAyMTksIDIyLCAyNDcsIDEyOCwgMSwgMjAwLCAxOTUsIDI0NywgMTI4LCAxLCAyMjAsIDIxNCwgCisgICAgMjQ3LCAxMjgsIDEsIDIwNCwgMjU1LCAyNDcsIDEyOCwgMSwgMjE2LCAyMjYsIDI0NywgMTI4LCAxLCAyMDgsIDE4MiwgMjQ3LCAKKyAgICAxMjgsIDEsIDcwLCAyNDcsIDEyOCwgMSwgNzIsIDI0NywgMTI4LCAxLCAyMDMsIDE3NywgMjQ3LCAxMjgsIDEsIDIyNywgCisgICAgMTE4LCAyNDcsIDEyOCwgMSwgMjI3LCAxMDksIDI0NywgMTI4LCAxLCAyMjAsIDc3LCAyNDcsIDEyOCwgMSwgMjAzLCAxODIsIAorICAgIDI0NywgMTI4LCAxLCAyMzYsIDE1NiwgMjQ3LCAxMjgsIDEsIDIzNiwgOTEsIDI0NywgMTI4LCAxLCAyMDgsIDEyMywgMjQ3LCAKKyAgICAxMjgsIDEsIDIwOCwgMTIyLCAyNDcsIDEyOCwgMSwgMjE5LCAyNTUsIDI0NywgMTI4LCAxLCAyMjgsIDE1MSwgMjQ3LCAxMjgsIAorICAgIDEsIDI0NywgMjIxLCAyNDcsIDEyOCwgMSwgMjA1LCAwLCAyNDcsIDEyOCwgMSwgMjAzLCAxNzksIDI0NywgMTI4LCAxLCAKKyAgICAyMTIsIDIxNiwgMjQ3LCAxMjgsIDEsIDIyMiwgMTE1LCAyNDcsIDEyOCwgMSwgMjIyLCAxMTQsIDI0NywgMTI4LCAxLCAyMjIsIAorICAgIDExMywgMjQ3LCAxMjgsIDEsIDIyMiwgMTEyLCAyNDcsIDEyOCwgMSwgMjI1LCA0MywgMjQ3LCAxMjgsIDEsIDIzOSwgMjgsIAorICAgIDI0NywgMTI4LCAxLCAyMDMsIDE3OCwgODUsIDIzOCwgMTMxLCAyMDYsIDQ5LCA4MSwgODUsIDIzOCwgMTMxLCAxNywgMTAyLCAKKyAgICA4NSwgMjM4LCAxMzEsIDE3LCAxMDUsIDg1LCAyMzgsIDEzMSwgMTcsIDE0NywgODUsIDIzOCwgMTMxLCAxNywgMTQ5LCA4NSwgCisgICAgMjM4LCAxMzEsIDE3LCAxNjQsIDg1LCAyMzgsIDEzMSwgMTcsIDE4NywgODUsIDIzOCwgMTMxLCAxNywgMjEwLCAxMzUsIDg1LCAKKyAgICAyMzgsIDEzMSwgMTcsIDE5MiwgODUsIDIzOCwgMTMxLCAxNywgMjE5LCAxMTMsIDg1LCAyMzgsIDEzMSwgNDEsIDIwNiwgCisgICAgMTY2LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDQsIDE1OSwgODUsIDIzOCwgMTMxLCA0MSwgMjA2LCA2NywgODUsIDIzOCwgMTMxLCAKKyAgICA0MSwgMjM2LCAyMzUsIDg1LCAyMzgsIDEzMSwgNDEsIDIzNywgMTA0LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDksIDkyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTAsIDEyOSwgODUsIDIzOCwgMTMxLCA0MSwgMjM4LCAyMjIsIDg1LCAyMzgsIDEzMSwgNDEsIAorICAgIDIxOSwgMTA4LCA4NSwgMjM4LCAxMzEsIDQxLCAxMTIsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDEyMCwgMjMzLCA4MiwgCisgICAgODUsIDIzOCwgMTMxLCA0MSwgMTI2LCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjA5LCAxMDYsIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMzgsIDIzMiwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDQwLCAzOSwgMSwgNjIsIDQwLCAzOSwgMSwgMjQ5LCA4LCA0MCwgCisgICAgMzksIDEsIDIyNywgOCwgNDAsIDM5LCAxLCAyNDEsIDE3NSwgNDAsIDM5LCAxLCA3MiwgNDAsIDM5LCAxLCAyMDMsIDU5LCAKKyAgICA0MCwgMzksIDEsIDE5OSwgODksIDQwLCAzOSwgMSwgMjM0LCAxMzksIDQwLCAzOSwgMSwgMjA2LCAxMDYsIDQwLCAzOSwgMSwgCisgICAgNzAsIDQwLCAzOSwgMSwgMTYxLCA0MCwgMzksIDEsIDIzOCwgMjA5LCA0MCwgMzksIDEsIDIzOCwgMTkwLCA0MCwgMzksIDEsIAorICAgIDIzOCwgMTc5LCA0MCwgMzksIDEsIDIzOCwgOTQsIDQwLCAzOSwgMSwgNzQsIDQwLCAzOSwgMSwgMjE2LCA3MywgNDAsIDM5LCAKKyAgICAxLCAyMTAsIDY1LCA0MCwgMzksIDEsIDIyNiwgMTUsIDQwLCAzOSwgMSwgMjM4LCAxMTUsIDQwLCAzOSwgMSwgMjM4LCAxMDQsIAorICAgIDQwLCAzOSwgMSwgMjA2LCAyMDEsIDQwLCAzOSwgMSwgNjYsIDQwLCAzOSwgMSwgMjM4LCAyMTIsIDQwLCAzOSwgMSwgMjE1LCAKKyAgICAyMzIsIDQwLCAzOSwgMSwgMjI2LCAxOTIsIDQwLCAzOSwgMSwgMjM4LCAyNDgsIDQwLCAzOSwgMSwgMjM4LCAxMDYsIDQwLCAKKyAgICAzOSwgMSwgMjQ3LCA4LCA0MCwgMzksIDEsIDIyOCwgMTUxLCA0MCwgMzksIDEsIDIwMywgMTgyLCA0MCwgMzksIDEsIDIzOCwgCisgICAgODcsIDQwLCAzOSwgMjE4LCA5MywgMTAyLCA0MCwgMzksIDIxOCwgOTMsIDE2NCwgNDAsIDM5LCAyMTgsIDkzLCAyMDYsIAorICAgIDE2NiwgNDAsIDM5LCAyMTgsIDkzLCAyMzcsIDEwNCwgMjM1LCA5MywgMSwgMjUxLCAxNzksIDIzNSwgOTMsIDEsIDI0OSwgCisgICAgMTAxLCAyMzUsIDkzLCAxLCAyMzUsIDE1OCwgMjM1LCA5MywgMSwgMjQyLCAzOSwgMjM1LCA5MywgMSwgMjUxLCAxNzUsIAorICAgIDIzNSwgOTMsIDEsIDIxNCwgMTUwLCAyMzUsIDkzLCAxLCAyMjgsIDcsIDIzNSwgOTMsIDEsIDIzNCwgMjI2LCAyMzUsIDkzLCAKKyAgICAxLCAyMDYsIDYzLCAyMzUsIDkzLCAxLCAyMzgsIDIyMCwgMjM1LCA5MywgMSwgMjI1LCAyMzgsIDIzNSwgOTMsIDEsIDIyNSwgCisgICAgMTUzLCAyMzUsIDkzLCAxLCAyMjIsIDE3MiwgMjM1LCA5MywgMSwgMjIwLCAxMTIsIDIzNSwgOTMsIDEsIDIyNywgMjIwLCAKKyAgICAyMzUsIDkzLCAxLCAyMDMsIDIwMCwgMjM1LCA5MywgMSwgMjE2LCAxODcsIDIzNSwgOTMsIDEsIDIxOSwgMTA4LCAyMzUsIAorICAgIDkzLCAxLCAyMTMsIDIyOCwgMjM1LCA5MywgMSwgMjExLCAyNDIsIDIzNSwgOTMsIDEsIDIwNiwgMTgwLCAyMzUsIDkzLCAxLCAKKyAgICAyMDEsIDEwLCAyMzUsIDkzLCAxLCAyMzcsIDE3NSwgMjM1LCA5MywgMSwgMjI4LCAxNTUsIDIzNSwgOTMsIDEsIDIzMywgNjYsIAorICAgIDIzNSwgOTMsIDEsIDIxNywgMTAsIDIzNSwgOTMsIDEsIDIxOSwgMTE0LCAyMzMsIDgyLCA0MCwgMjE2LCAxOCwgMSwgMjUxLCAKKyAgICA4NSwgNDAsIDIxNiwgMTgsIDEsIDI0OCwgMywgNDAsIDIxNiwgMTgsIDEsIDIzNiwgNzMsIDQwLCAyMTYsIDE4LCAxLCAyNDAsIAorICAgIDE5OSwgNDAsIDIxNiwgMTgsIDEsIDcyLCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA1OSwgNDAsIDIxNiwgMTgsIDEsIDIzOSwgCisgICAgODUsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDk2LCA0MCwgMjE2LCAxOCwgMSwgMjM5LCA4MywgNDAsIDIxNiwgMTgsIDEsIDcwLCAKKyAgICA0MCwgMjE2LCAxOCwgMSwgMjI2LCA3NywgNDAsIDIxNiwgMTgsIDEsIDIyNSwgMTIsIDQwLCAyMTYsIDE4LCAxLCAyMjIsIAorICAgIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjIwLCAyMiwgNDAsIDIxNiwgMTgsIDEsIDIwMiwgMTc4LCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjE2LCA2MCwgNDAsIDIxNiwgMTgsIDEsIDIxMywgMTUzLCA0MCwgMjE2LCAxOCwgMSwgMjA5LCAxNjEsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDcsIDgsIDQwLCAyMTYsIDE4LCAxLCA2NiwgNDAsIDIxNiwgMTgsIDEsIDI0NiwgMjQ1LCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjEwLCAxLCA0MCwgMjE2LCAxOCwgMSwgMjEwLCA2NywgNDAsIDIxNiwgMTgsIDEsIDE5OSwgMjEzLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjAwLCAyOSwgNDAsIDIxNiwgMTgsIDEsIDc0LCA0MCwgMjE2LCAxOCwgMSwgMjE3LCA2MywgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIzOCwgMjQ4LCA0MCwgMjE2LCAxOCwgMSwgMTQ0LCA0MCwgMjE2LCAxOCwgMSwgMjA1LCAxMCwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIwMywgNDcsIDQwLCAyMTYsIDE4LCAxLCAyMDAsIDMzLCA0MCwgMjE2LCAxOCwgMSwgMjAwLCAzMSwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwMCwgNjUsIDQwLCAyMTYsIDE4LCAxLCAyMjgsIDE3OCwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgMjExLCA0MCwgMjE2LCAKKyAgICAxOCwgMSwgMTgzLCA0MCwgMjE2LCAxOCwgMSwgMjMyLCAyNDAsIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjUxLCA4NSwgMzgsIAorICAgIDQwLCAyMTYsIDE4LCAxLCAyNDAsIDE5OSwgMzgsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDk2LCAzOCwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIyMCwgMjIsIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjA5LCAxNjEsIDIwNCwgMjYsIDEsIDI1MSwgMTE2LCAyMDQsIDI2LCAKKyAgICAxLCAyNDgsIDIwOCwgMjA0LCAyNiwgMSwgMjM2LCA2MSwgMjA0LCAyNiwgMSwgMjI2LCAyMDcsIDIwNCwgMjYsIDEsIDI0MSwgCisgICAgMTM2LCAyMDQsIDI2LCAxLCAyMzMsIDIwNywgMjA0LCAyNiwgMSwgMjAxLCAwLCAyMDQsIDI2LCAxLCAxOTksIDgwLCAyMDQsIAorICAgIDI2LCAxLCAyMzMsIDExNiwgMjA0LCAyNiwgMSwgMjA2LCAxNDYsIDIwNCwgMjYsIDEsIDE5OSwgMjM0LCAyMDQsIDI2LCAxLCAKKyAgICAyMjcsIDg2LCAyMDQsIDI2LCAxLCAyMTAsIDIxLCAyMDQsIDI2LCAxLCAyMjUsIDg3LCAyMDQsIDI2LCAxLCAyMjIsIDQ3LCAKKyAgICAyMDQsIDI2LCAxLCAyNDEsIDk2LCAyMDQsIDI2LCAxLCAyMTgsIDg5LCAyMDQsIDI2LCAxLCAxOTksIDMsIDIwNCwgMjYsIDEsIAorICAgIDIxMiwgMTgsIDIwNCwgMjYsIDEsIDI1MSwgMTcxLCAyMDQsIDI2LCAxLCAyMTQsIDIyNCwgMjA0LCAyNiwgMSwgMjEyLCA1NSwgCisgICAgMjA0LCAyNiwgMSwgMjE0LCAxMDIsIDIwNCwgMjYsIDEsIDIxMywgMjA3LCAyMDQsIDI2LCAxLCAyMDYsIDExMCwgMjA0LCAKKyAgICAyNiwgMSwgMjM1LCAxOTQsIDIwNCwgMjYsIDEsIDEzOCwgMjA0LCAyNiwgMSwgNzAsIDIwNCwgMjYsIDEsIDY2LCAyMDQsIAorICAgIDI2LCAxLCAyMDgsIDEzNCwgMjA0LCAyNiwgMjAwLCAyMzgsIDI0MCwgMjM5LCA0MCwgMjE2LCAxMiwgMiwgNjIsIDQwLCAKKyAgICAyMTYsIDEyLCAyLCA3MCwgNDAsIDIxNiwgMTIsIDIsIDY2LCA0MCwgMjE2LCAxMiwgMiwgMTYxLCA0MCwgMjE2LCAxMiwgMiwgCisgICAgMjI2LCAxNSwgNDAsIDIxNiwgMTIsIDIsIDIzNiwgODksIDQwLCAyMTYsIDEyLCAyLCAyMzUsIDUwLCA0MCwgMjE2LCAxMiwgCisgICAgMiwgMjAwLCAxODEsIDQwLCAyMTYsIDEyLCAyLCAyNDcsIDE5MCwgNDAsIDIxNiwgMTIsIDIsIDIyNywgMjQ4LCA0MCwgMjE2LCAKKyAgICAxMiwgMiwgMjI3LCAyMDcsIDQwLCAyMTYsIDEyLCAyLCAyMDcsIDM2LCA0MCwgMjE2LCAxMiwgMiwgMjA0LCAyMTUsIDQwLCAKKyAgICAyMTYsIDEyLCAyLCAyNDIsIDU4LCA0MCwgMjE2LCAxMiwgMiwgMjQxLCA3NiwgNDAsIDIxNiwgMTIsIDIsIDIzOSwgMTM3LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjA2LCAxMjIsIDQwLCAyMTYsIDEyLCAyLCAxNzIsIDQwLCAyMTYsIDEyLCAyLCAyNDksIDEzNiwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIzNywgMTk1LCA0MCwgMjE2LCAxMiwgMiwgMTg4LCA0MCwgMjE2LCAxMiwgMiwgMjE4LCAxMzMsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAxNzgsIDQwLCAyMTYsIDEyLCAyLCAyMjEsIDIxMSwgNDAsIDIxNiwgMTIsIDIsIDIyMSwgNDEsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAxODMsIDQwLCAyMTYsIDEyLCAyLCAyMDMsIDkwLCA0MCwgMjE2LCAxMiwgMiwgMjAyLCAyMzQsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMTMsIDI1MiwgNDAsIDIxNiwgMTIsIDIsIDIxMiwgMTc1LCA0MCwgMjE2LCAxMiwgMiwgMTk0LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjEyLCA2NCwgNDAsIDIxNiwgMTIsIDIsIDE5OSwgMTE0LCA0MCwgMjE2LCAxMiwgMiwgMjEwLCAKKyAgICAxMTQsIDQwLCAyMTYsIDEyLCAyLCAyMDgsIDE3OSwgNDAsIDIxNiwgMTIsIDIsIDE0NCwgNDAsIDIxNiwgMTIsIDIsIDI1MCwgCisgICAgMTMzLCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAxMzIsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIDEzMSwgNDAsIDIxNiwgMTIsIDIsIAorICAgIDIwMCwgMTUyLCA0MCwgMjE2LCAxMiwgMiwgMjQyLCAzNSwgNDAsIDIxNiwgMTIsIDIsIDI0MiwgMzQsIDQwLCAyMTYsIDEyLCAKKyAgICAyLCAyNDksIDExMSwgNDAsIDIxNiwgMTIsIDIsIDI0NywgMjQyLCA0MCwgMjE2LCAxMiwgMjAwLCAyMzgsIDI0MCwgMjM5LCAKKyAgICA0MCwgMjE2LCAxMiwgNDEsIDEwMiwgNDAsIDIxNiwgMTIsIDQxLCAxMDUsIDQwLCAyMTYsIDEyLCA0MSwgMjA2LCAxNjYsIAorICAgIDQwLCAyMTYsIDEyLCA0MSwgMjA0LCAxNTksIDQwLCAyMTYsIDEyLCA0MSwgMjMzLCA4MiwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgCisgICAgNzAsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDcyLCAyNDEsIDExNiwgNiwgMSwgMTY4LCA2MiwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDE2OCwgMjUxLCAxODUsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDc0LCAyNDEsIDExNiwgNiwgMSwgMTY4LCAyMTcsIDYzLCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDcwLCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDcyLCAyNDEsIDExNiwgNiwgCisgICAgMSwgMjA5LCAyNTAsIDYyLCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDI1MSwgMTg1LCAyNDEsIDExNiwgNiwgMSwgMjA5LCAKKyAgICAyNTAsIDc0LCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDIxNywgNjMsIDI0MSwgMTE2LCA2LCAxLCAyNTAsIDExMiwgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIxNiwgMjM4LCAyNDEsIDExNiwgNiwgMSwgMjAwLCAyMTYsIDI0MSwgMTE2LCA2LCAxLCAyMDAsIAorICAgIDQ4LCAyNDEsIDExNiwgNiwgMSwgMjM0LCAyNDcsIDI0MSwgMTE2LCA2LCAxLCAyMTYsIDYxLCAyNDEsIDExNiwgNiwgMSwgCisgICAgMjQ4LCAyNTIsIDI0MSwgMTE2LCA2LCAxLCAyMDYsIDE5MCwgMjQxLCAxMTYsIDYsIDEsIDI0MSwgMTYxLCAyNDEsIDExNiwgCisgICAgNiwgMSwgMjQ3LCA0LCAyNDEsIDExNiwgNiwgMSwgMjI3LCAyMjUsIDI0MSwgMTE2LCA2LCAxLCAyMjcsIDE1LCAyNDEsIAorICAgIDExNiwgNiwgMSwgMjM2LCAzNiwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMjQ4LCAyNDEsIDExNiwgNiwgMSwgMjAzLCA1NCwgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIzOCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAyMDYsIDEwNCwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgCisgICAgMTA0LCAyNDEsIDExNiwgNiwgMSwgMTk5LCA4NywgMjQxLCAxMTYsIDYsIDEsIDIzOCwgOTQsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAxOTksIDY3LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxMTUsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDIwOSwgMjQxLCAxMTYsIDYsIAorICAgIDEsIDIzOCwgMTkwLCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxNzksIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDE2NSwgMjQxLCAKKyAgICAxMTYsIDYsIDEsIDIxNywgMTA1LCAyNDEsIDExNiwgNiwgMSwgMjM4LCA1MSwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzAsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDcyLCAyNDEsIDExNiwgNCwgMSwgMTY4LCA2MiwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgCisgICAgMjUxLCAxODUsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDc0LCAyNDEsIDExNiwgNCwgMSwgMTY4LCAyMTcsIDYzLCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjA5LCAyNTAsIDcwLCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDcyLCAyNDEsIDExNiwgNCwgMSwgCisgICAgMjA5LCAyNTAsIDYyLCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDI1MSwgMTg1LCAyNDEsIDExNiwgNCwgMSwgMjA5LCAKKyAgICAyNTAsIDc0LCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDIxNywgNjMsIDI0MSwgMTE2LCA0LCAxLCAyNTAsIDExMiwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDIxNiwgMjM4LCAyNDEsIDExNiwgNCwgMSwgMjAwLCAyMTYsIDI0MSwgMTE2LCA0LCAxLCAyMDAsIAorICAgIDQ4LCAyNDEsIDExNiwgNCwgMSwgMjM0LCAyNDcsIDI0MSwgMTE2LCA0LCAxLCAyMTYsIDYxLCAyNDEsIDExNiwgNCwgMSwgCisgICAgMjQ4LCAyNTIsIDI0MSwgMTE2LCA0LCAxLCAyMDYsIDE5MCwgMjQxLCAxMTYsIDQsIDEsIDI0MSwgMTYxLCAyNDEsIDExNiwgCisgICAgNCwgMSwgMjQ3LCA0LCAyNDEsIDExNiwgNCwgMSwgMjI3LCAyMjUsIDI0MSwgMTE2LCA0LCAxLCAyMjcsIDE1LCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjM2LCAzNiwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMjQ4LCAyNDEsIDExNiwgNCwgMSwgMjAzLCA1NCwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDIzOCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAyMDYsIDEwNCwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgCisgICAgMTA0LCAyNDEsIDExNiwgNCwgMSwgMTk5LCA4NywgMjQxLCAxMTYsIDQsIDEsIDIzOCwgOTQsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAxOTksIDY3LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxMTUsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDIwOSwgMjQxLCAxMTYsIDQsIAorICAgIDEsIDIzOCwgMTkwLCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxNzksIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDE2NSwgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIxNywgMTA1LCAyNDEsIDExNiwgNCwgMSwgMjM4LCA1MSwgMjEwLCA3MiwgMSwgMjE2LCA1OCwgMjEwLCAKKyAgICA3MiwgMSwgMjA1LCAxNDQsIDIxMCwgNzIsIDEsIDIyNiwgMTU5LCAyMTAsIDcyLCAxLCAyMzcsIDE0MCwgMjEwLCA3MiwgMSwgCisgICAgMjA2LCA3OSwgMjEwLCA3MiwgMSwgMjA5LCAyOSwgMjEwLCA3MiwgMSwgMjA3LCAyMDQsIDIxMCwgNzIsIDEsIDI0NiwgMTg0LCAKKyAgICAyMTAsIDcyLCAxLCAyMDAsIDUwLCAyMTAsIDcyLCAxLCAyMzMsIDc5LCAyMTAsIDcyLCAxLCAyNDgsIDE4NywgMjEwLCA3MiwgCisgICAgMSwgMjQxLCAxNzQsIDIxMCwgNzIsIDEsIDIzNiwgNzUsIDIxMCwgNzIsIDEsIDIwMiwgMTczLCAyMTAsIDcyLCAxLCAyMDYsIAorICAgIDg1LCAyMTAsIDcyLCAxLCAxOTksIDEyLCAyMTAsIDcyLCAxLCAyMjIsIDc0LCAyMTAsIDcyLCAxLCAyMjcsIDE0NSwgMjEwLCAKKyAgICA3MiwgMSwgMjAwLCAyNTQsIDIxMCwgNzIsIDEsIDIzNCwgMjM1LCAyMTAsIDcyLCAxLCAyMjQsIDk0LCAyMTAsIDcyLCAxLCAKKyAgICAyMjEsIDE2NSwgMjEwLCA3MiwgMSwgMjI4LCAxNTgsIDIxMCwgNzIsIDEsIDIzOCwgMjQ2LCAyMTAsIDcyLCAxLCAyNTAsIAorICAgIDE4MSwgMjEwLCA3MiwgMSwgMjUxLCAyMjUsIDIxMCwgNzIsIDEsIDIxNywgNzgsIDIxMCwgNzIsIDEsIDIwMCwgMjQxLCAKKyAgICAyMTAsIDcyLCAxLCAyMTYsIDI1NCwgMjEwLCA3MiwgMSwgMjUxLCAxODUsIDIxMCwgNzIsIDEsIDIxMiwgMjU0LCAyMTAsIAorICAgIDcyLCAxLCAyMTgsIDg5LCAyMTAsIDcyLCAxLCAyMzksIDEwLCAyMTAsIDcyLCAxLCAyNTEsIDE5MCwgMjEwLCA3MiwgMSwgCisgICAgMjMyLCAyMzEsIDIxMCwgNzIsIDEsIDIwMywgMjI4LCAyMTAsIDcyLCAxLCAyMTcsIDE0NCwgMjEwLCA3MiwgMSwgMjE3LCAKKyAgICA1NSwgMjEwLCA3MiwgMSwgMjE3LCAxMDMsIDIxMCwgNzIsIDEsIDI1MCwgMTE1LCAyMTAsIDcyLCAxLCAyNTAsIDIyOSwgCisgICAgMjEwLCA3MiwgMSwgMjE3LCAzMywgMjEwLCA3MiwgMSwgMjUxLCAxNjYsIDIxMCwgNzIsIDEsIDIzOCwgMTA4LCAyMTAsIDcyLCAKKyAgICAxLCAyNTAsIDIwNywgMjEwLCA3MiwgMSwgMjM5LCAyMSwgMjEwLCA3MiwgMSwgMjMyLCAyMzksIDIxMCwgNzIsIDEsIDIwMCwgCisgICAgMTUsIDIxNywgMTIsIDEsIDI1MSwgMTQyLCAyMTcsIDEyLCAxLCAyNDksIDEzNiwgMjE3LCAxMiwgMSwgMjA3LCAzNiwgMjE3LCAKKyAgICAxMiwgMSwgMjI3LCAyNDgsIDIxNywgMTIsIDEsIDIwMCwgMTgxLCAyMTcsIDEyLCAxLCAyMjYsIDIwNywgMjE3LCAxMiwgMSwgCisgICAgMjQxLCAxNjAsIDIxNywgMTIsIDEsIDIxMywgMjUyLCAyMTcsIDEyLCAxLCAyMTIsIDY0LCAyMTcsIDEyLCAxLCAyMTAsIDI3LCAKKyAgICAyMTcsIDEyLCAxLCAyNDEsIDEwMCwgMjE3LCAxMiwgMSwgMjQ3LCAxMDEsIDIxNywgMTIsIDEsIDIzNiwgODksIDIxNywgMTIsIAorICAgIDEsIDIzNywgMTk1LCAyMTcsIDEyLCAxLCAyMTQsIDE1NywgMjE3LCAxMiwgMSwgMjI3LCAxMDIsIDIxNywgMTIsIDEsIDIyNSwgCisgICAgMTcxLCAyMTcsIDEyLCAxLCAyMjEsIDE3OSwgMjE3LCAxMiwgMSwgMjE4LCA3MywgMjE3LCAxMiwgMSwgMjAxLCA3MiwgMjE3LCAKKyAgICAxMiwgMSwgMTQ0LCAyMTcsIDEyLCAxLCAxODMsIDIxNywgMTIsIDEsIDYyLCAyMTcsIDEyLCAxLCA3MiwgMjE3LCAxMiwgMSwgCisgICAgNzAsIDIxNywgMTIsIDEsIDc0LCAyMTcsIDEyLCAxLCA2NiwgMjE3LCAxMiwgMSwgMjUyLCAxMzgsIDIxNywgMTIsIDEsIAorICAgIDIzOCwgMjU1LCAyMTcsIDEyLCAxLCAyMTcsIDYzLCAyMTcsIDEyLCAxNywgMTk5LCA4MSwgMjE3LCAxMiwgMTcsIDEwMiwgCisgICAgMjE3LCAxMiwgMTcsIDEwNSwgMjE3LCAxMiwgMTcsIDE0NywgMjE3LCAxMiwgMTcsIDE0OSwgMjE3LCAxMiwgMTcsIDE2NCwgCisgICAgMjE3LCAxMiwgMTcsIDE4NywgMjE3LCAxMiwgMTcsIDIxMCwgMTM1LCAyMTcsIDEyLCAxNywgMTkyLCAyMTcsIDEyLCAxNywgCisgICAgMjE5LCAxMTMsIDIxNywgMTQsIDYsIDEsIDYyLCAyMTcsIDE0LCA2LCAxLCAyNTEsIDE3NiwgMjE3LCAxNCwgNiwgMSwgMjUxLCAKKyAgICAxNzEsIDIxNywgMTQsIDYsIDEsIDI1MSwgMTg1LCAyMTcsIDE0LCA2LCAxLCAyNDgsIDcyLCAyMTcsIDE0LCA2LCAxLCAyNDcsIAorICAgIDM3LCAyMTcsIDE0LCA2LCAxLCAyMzgsIDI0MCwgMjE3LCAxNCwgNiwgMSwgNzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjIxLCAKKyAgICAyMTcsIDE0LCA2LCAxLCAxNDQsIDIxNywgMTQsIDYsIDEsIDIzMywgMzYsIDIxNywgMTQsIDYsIDEsIDcwLCAyMTcsIDE0LCAKKyAgICA2LCAxLCAxNjEsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM5LCAyMTcsIDE0LCA2LCAxLCAyMjUsIDIwMywgMjE3LCAxNCwgNiwgCisgICAgMSwgMTk0LCAyMTcsIDE0LCA2LCAxLCAxNzgsIDIxNywgMTQsIDYsIDEsIDE4OCwgMjE3LCAxNCwgNiwgMSwgNzQsIDIxNywgCisgICAgMTQsIDYsIDEsIDIxNywgMTAyLCAyMTcsIDE0LCA2LCAxLCAxNzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM4LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMTIsIDY0LCAyMTcsIDE0LCA2LCAxLCAyMTAsIDExNCwgMjE3LCAxNCwgNiwgMSwgMjA3LCAzNiwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjM4LCAyMzcsIDIxNywgMTQsIDYsIDEsIDIwNSwgMzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM2LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMDUsIDIyLCAyMTcsIDE0LCA2LCAxLCAyNDEsIDEwMCwgMjE3LCAxNCwgNiwgMSwgNjYsIDIxNywgMTQsIDYsIDEsIAorICAgIDIwMSwgMTE0LCAyMTcsIDE0LCA2LCAxLCAyMjYsIDIwNywgMjE3LCAxNCwgNiwgMSwgMjM1LCAxOTksIDIxNywgMTQsIDYsIAorICAgIDEsIDE5OSwgMTE0LCAyMTcsIDE0LCA2LCAxLCAxOTksIDc3LCAyMTcsIDE0LCA0LCAxLCA2MiwgMjE3LCAxNCwgNCwgMSwgCisgICAgMjUxLCAxNzYsIDIxNywgMTQsIDQsIDEsIDI1MSwgMTcxLCAyMTcsIDE0LCA0LCAxLCAyNTEsIDE4NSwgMjE3LCAxNCwgNCwgCisgICAgMSwgMjQ4LCA3MiwgMjE3LCAxNCwgNCwgMSwgMjQ3LCAzNywgMjE3LCAxNCwgNCwgMSwgMjM4LCAyNDAsIDIxNywgMTQsIDQsIAorICAgIDEsIDcyLCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIyMSwgMjE3LCAxNCwgNCwgMSwgMTQ0LCAyMTcsIDE0LCA0LCAxLCAyMzMsIAorICAgIDM2LCAyMTcsIDE0LCA0LCAxLCA3MCwgMjE3LCAxNCwgNCwgMSwgMTYxLCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzOSwgMjE3LCAKKyAgICAxNCwgNCwgMSwgMjI1LCAyMDMsIDIxNywgMTQsIDQsIDEsIDE5NCwgMjE3LCAxNCwgNCwgMSwgMTc4LCAyMTcsIDE0LCA0LCAKKyAgICAxLCAxODgsIDIxNywgMTQsIDQsIDEsIDc0LCAyMTcsIDE0LCA0LCAxLCAyMTcsIDEwMiwgMjE3LCAxNCwgNCwgMSwgMTcyLCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzOCwgMjE3LCAxNCwgNCwgMSwgMjEyLCA2NCwgMjE3LCAxNCwgNCwgMSwgMjEwLCAxMTQsIAorICAgIDIxNywgMTQsIDQsIDEsIDIwNywgMzYsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM3LCAyMTcsIDE0LCA0LCAxLCAyMDUsIDMyLCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzNiwgMjE3LCAxNCwgNCwgMSwgMjA1LCAyMiwgMjE3LCAxNCwgNCwgMSwgMjQxLCAxMDAsIAorICAgIDIxNywgMTQsIDQsIDEsIDY2LCAyMTcsIDE0LCA0LCAxLCAyMDEsIDExNCwgMjE3LCAxNCwgNCwgMSwgMjI2LCAyMDcsIDIxNywgCisgICAgMTQsIDQsIDEsIDIzNSwgMTk5LCAyMTcsIDE0LCA0LCAxLCAxOTksIDExNCwgMjE3LCAxNCwgNCwgMSwgMTk5LCA3NywgMjM4LCAKKyAgICAyMDUsIDEsIDYyLCAyMzgsIDIwNSwgMSwgMjQ5LCA4LCAyMzgsIDIwNSwgMSwgMjQ3LCA3NiwgMjM4LCAyMDUsIDEsIDI0NywgCisgICAgOCwgMjM4LCAyMDUsIDEsIDI0MSwgMTc1LCAyMzgsIDIwNSwgMSwgMjIwLCA2NywgMjM4LCAyMDUsIDEsIDI0MSwgOTEsIAorICAgIDIzOCwgMjA1LCAxLCAyMzgsIDIzNCwgMjM4LCAyMDUsIDEsIDcyLCAyMzgsIDIwNSwgMSwgMjM3LCAxNDcsIDIzOCwgMjA1LCAKKyAgICAxLCAyMzYsIDE1LCAyMzgsIDIwNSwgMSwgMjM1LCAxMzIsIDIzOCwgMjA1LCAxLCAyMzQsIDEzOSwgMjM4LCAyMDUsIDEsIAorICAgIDcwLCAyMzgsIDIwNSwgMSwgMjI3LCAyMjcsIDIzOCwgMjA1LCAxLCAyMjcsIDgsIDIzOCwgMjA1LCAxLCAyMjUsIDQwLCAKKyAgICAyMzgsIDIwNSwgMSwgMjI0LCAxMzQsIDIzOCwgMjA1LCAxLCAyMjIsIDc2LCAyMzgsIDIwNSwgMSwgMjIwLCAzNCwgMjM4LCAKKyAgICAyMDUsIDEsIDE4OCwgMjM4LCAyMDUsIDEsIDIxOSwgOTEsIDIzOCwgMjA1LCAxLCA3NCwgMjM4LCAyMDUsIDEsIDIxNiwgNzMsIAorICAgIDIzOCwgMjA1LCAxLCAyMTQsIDEzOSwgMjM4LCAyMDUsIDEsIDIxMywgMTkwLCAyMzgsIDIwNSwgMSwgMjEyLCAyMTAsIDIzOCwgCisgICAgMjA1LCAxLCAyMTEsIDIwMiwgMjM4LCAyMDUsIDEsIDIxMCwgNjUsIDIzOCwgMjA1LCAxLCAyMDYsIDIwMSwgMjM4LCAyMDUsIAorICAgIDEsIDIwNiwgMTA2LCAyMzgsIDIwNSwgMSwgNjYsIDIzOCwgMjA1LCAxLCAyMDMsIDU5LCAyMzgsIDIwNSwgMSwgMjAwLCAKKyAgICAxNzUsIDIzOCwgMjA1LCAxLCAyMDAsIDEyMywgMjM4LCAyMDUsIDEsIDE5OSwgODksIDIzOCwgMjA1LCAxLCAxOTksIDY4LCAKKyAgICAyMzgsIDIwNSwgMSwgMjM1LCAxODUsIDIzOCwgMjA1LCAxLCAyMzUsIDE5MSwgMjM4LCAyMDUsIDEsIDIyNiwgMTkyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDI1MSwgMTExLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0OCwgMjEwLCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDIzNSwgMTQ5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MSwgMjQwLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIzOSwgOSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDk5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIzOCwgMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA2MiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDYsIDIyNywgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDM3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgMjIyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgNzcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI4LCAzNCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMTAsIDExNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjUsIDgwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIyOCwgNDYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAwLCAxNzEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM5LCAKKyAgICAxMDEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAxMzUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCAyMDgsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCA0NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjMsIDI1MiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMzQsIDg2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNCwgMTQwLCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDI1MSwgMzAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ2LCAyMDEsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjQ2LCAyMzYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQyLCAxNjUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjIyLCAxNjEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE0LCAxNDQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE4LCAKKyAgICAyMDAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM5LCA3OCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTAsIDk3LCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgMjI4LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNywgNzgsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjA0LCAxMzIsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM3LCAxNzAsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjM5LCA5MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIxNiwgNDcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM1LCAxNzUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEzLCAKKyAgICAyMDQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEwLCAxMjMsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAyLCAyMzYsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA1LCAyMDYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA5LCAyMjksIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjI4LCA1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MiwgMTY2LCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDI0NywgMTAxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMCwgNTUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjE1LCAxMzksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI2LCAxMjUsIDI0NywgMTA4LCAyNTEsIDE0MywgMjQ2LCAxNDMsIAorICAgIDgxLCAzMCwgMzUsIDIsIDI1MiwgODgsIDMwLCAzNSwgMiwgMjUyLCA4NywgMzAsIDM1LCAyLCAyNTIsIDg2LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgODUsIDMwLCAzNSwgMiwgMjUyLCA4NCwgMzAsIDM1LCAyLCAyNTIsIDgzLCAzMCwgMzUsIDIsIDI1MiwgODIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA4MSwgMzAsIDM1LCAyLCAyNTIsIDgwLCAzMCwgMzUsIDIsIDI1MiwgNzksIDMwLCAzNSwgMiwgCisgICAgMjUyLCA3OCwgMzAsIDM1LCAyLCAyNTIsIDc3LCAzMCwgMzUsIDIsIDI1MiwgNzYsIDMwLCAzNSwgMiwgMjUyLCA3NSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDc0LCAzMCwgMzUsIDIsIDI1MiwgNzMsIDMwLCAzNSwgMiwgMjUyLCA3MiwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDcxLCAzMCwgMzUsIDIsIDI1MiwgNzAsIDMwLCAzNSwgMiwgMjUyLCA2OSwgMzAsIDM1LCAyLCAyNTIsIDY4LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgNjcsIDMwLCAzNSwgMiwgMjUyLCA2NiwgMzAsIDM1LCAyLCAyNTIsIDY1LCAzMCwgMzUsIDIsIDI1MiwgNjQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA2MywgMzAsIDM1LCAyLCAyNTIsIDYyLCAzMCwgMzUsIDIsIDI1NSwgOTYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCA2MSwgMzAsIDM1LCAyLCAyNTIsIDYwLCAzMCwgMzUsIDIsIDI1MiwgNTksIDMwLCAzNSwgMiwgMjUyLCA1OCwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDU3LCAzMCwgMzUsIDIsIDI1MiwgNTYsIDMwLCAzNSwgMiwgMjUyLCA1NSwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDU0LCAzMCwgMzUsIDIsIDI1MiwgNTMsIDMwLCAzNSwgMiwgMjUyLCA1MiwgMzAsIDM1LCAyLCAyNTIsIDUxLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgNTAsIDMwLCAzNSwgMiwgMjUyLCA0OSwgMzAsIDM1LCAyLCAyNTIsIDQ4LCAzMCwgMzUsIDIsIDI1MiwgNDcsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA0NiwgMzAsIDM1LCAyLCAyNTIsIDQ1LCAzMCwgMzUsIDIsIDI1MiwgNDQsIDMwLCAzNSwgMiwgCisgICAgMjUyLCA0MywgMzAsIDM1LCAyLCAyNTIsIDQyLCAzMCwgMzUsIDIsIDI1MiwgNDEsIDMwLCAzNSwgMiwgMjUyLCA0MCwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDM5LCAzMCwgMzUsIDIsIDI1MiwgMzgsIDMwLCAzNSwgMiwgMjUyLCAzNywgMzAsIDM1LCAyLCAyNTIsIAorICAgIDM2LCAzMCwgMzUsIDIsIDI1MiwgMzUsIDMwLCAzNSwgMiwgMjUyLCAzNCwgMzAsIDM1LCAyLCAyNTIsIDMzLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMzIsIDMwLCAzNSwgMiwgMjUyLCAzMSwgMzAsIDM1LCAyLCAyNTIsIDMwLCAzMCwgMzUsIDIsIDI1MiwgMjksIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyOCwgMzAsIDM1LCAyLCAyNTIsIDI3LCAzMCwgMzUsIDIsIDI1MiwgMjYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNSwgMzAsIDM1LCAyLCAyNTIsIDI0LCAzMCwgMzUsIDIsIDI1MiwgMjMsIDMwLCAzNSwgMiwgMjUyLCAyMiwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDIxLCAzMCwgMzUsIDIsIDI1MiwgMjAsIDMwLCAzNSwgMiwgMjUyLCAxOSwgMzAsIDM1LCAyLCAyNTUsIAorICAgIDksIDMwLCAzNSwgMiwgMjUyLCAxOCwgMzAsIDM1LCAyLCAyNTIsIDE3LCAzMCwgMzUsIDIsIDI1NCwgMjMwLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMTYsIDMwLCAzNSwgMiwgMjUyLCAxNSwgMzAsIDM1LCAyLCAyNTIsIDE0LCAzMCwgMzUsIDIsIDI1MiwgMTMsIAorICAgIDMwLCAzNSwgMiwgMjU0LCAyMTcsIDMwLCAzNSwgMiwgMjUyLCAxMiwgMzAsIDM1LCAyLCAyNTIsIDExLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTAsIDMwLCAzNSwgMiwgMjUyLCA5LCAzMCwgMzUsIDIsIDI1MiwgOCwgMzAsIDM1LCAyLCAyNTQsIDMzLCAzMCwgCisgICAgMzUsIDIsIDI1NCwgMzIsIDMwLCAzNSwgMiwgMjU0LCAzMSwgMzAsIDM1LCAyLCAyNTQsIDMwLCAzMCwgMzUsIDIsIDI1NCwgCisgICAgMjksIDMwLCAzNSwgMiwgMjU0LCAyOCwgMzAsIDM1LCAyLCAyNTQsIDI3LCAzMCwgMzUsIDIsIDI1NCwgMjYsIDMwLCAzNSwgCisgICAgMiwgMjU0LCAyNCwgMzAsIDM1LCAyLCAyNTQsIDIzLCAzMCwgMzUsIDIsIDI1NCwgMjIsIDMwLCAzNSwgMiwgMjU0LCAyMSwgCisgICAgMzAsIDM1LCAyLCAyNTQsIDIwLCAzMCwgMzUsIDIsIDI1NCwgMTksIDMwLCAzNSwgMiwgMjU0LCAxNywgMzAsIDM1LCAyLCAKKyAgICAyNTQsIDE2LCAzMCwgMzUsIDIsIDI1NCwgMTUsIDMwLCAzNSwgMiwgMjU0LCAxNCwgMzAsIDM1LCAyLCAyNTQsIDEzLCAzMCwgCisgICAgMzUsIDIsIDI1NCwgMTIsIDMwLCAzNSwgMiwgMjU0LCAxMSwgMzAsIDM1LCAyLCAyNTQsIDEwLCAzMCwgMzUsIDIsIDI1NCwgCisgICAgOSwgMzAsIDM1LCAyLCAyNTQsIDgsIDMwLCAzNSwgMiwgMjU0LCA3LCAzMCwgMzUsIDIsIDI1NCwgNiwgMzAsIDM1LCAyLCAKKyAgICAyNTQsIDUsIDMwLCAzNSwgMiwgMjU0LCA0LCAzMCwgMzUsIDIsIDI1NCwgMywgMzAsIDM1LCAyLCAyNTQsIDIsIDMwLCAzNSwgCisgICAgMiwgMjU0LCAxLCAzMCwgMzUsIDIsIDI1NCwgMCwgMzAsIDM1LCAyLCAyNTMsIDI1NSwgMzAsIDM1LCAyLCAyNTMsIDI1MywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDI1MiwgMzAsIDM1LCAyLCAyNTMsIDI1MSwgMzAsIDM1LCAyLCAyNTMsIDI0NywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDI0NiwgMzAsIDM1LCAyLCAyNTMsIDI0NSwgMzAsIDM1LCAyLCAyNTMsIDI0NCwgMzAsIDM1LCAyLCAyNTMsIDI0MCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIzOSwgMzAsIDM1LCAyLCAyNTMsIDIzOCwgMzAsIDM1LCAyLCAyNTMsIDIzNywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIzNiwgMzAsIDM1LCAyLCAyNTMsIDIzNSwgMzAsIDM1LCAyLCAyNTMsIDIzNCwgMzAsIDM1LCAyLCAyNTMsIDIzMywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIzMiwgMzAsIDM1LCAyLCAyNTMsIDIzMSwgMzAsIDM1LCAyLCAyNTMsIDIzMCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIyOSwgMzAsIDM1LCAyLCAyNTMsIDIyOCwgMzAsIDM1LCAyLCAyNTMsIDIyNywgMzAsIDM1LCAyLCAyNTMsIDIyNiwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIyNSwgMzAsIDM1LCAyLCAyNTMsIDIyNCwgMzAsIDM1LCAyLCAyNTMsIDIyMywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIyMiwgMzAsIDM1LCAyLCAyNTMsIDIyMSwgMzAsIDM1LCAyLCAyNTMsIDIyMCwgMzAsIDM1LCAyLCAyNTMsIDIxOSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIxOCwgMzAsIDM1LCAyLCAyNTMsIDIxNiwgMzAsIDM1LCAyLCAyNTMsIDIxNSwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIxNCwgMzAsIDM1LCAyLCAyNTMsIDIxMywgMzAsIDM1LCAyLCAyNTMsIDIxMiwgMzAsIDM1LCAyLCAyNTMsIDIxMCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIwOSwgMzAsIDM1LCAyLCAyNTMsIDIwOCwgMzAsIDM1LCAyLCAyNTMsIDIwNywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIwNSwgMzAsIDM1LCAyLCAyNTMsIDIwNCwgMzAsIDM1LCAyLCAyNTMsIDIwMywgMzAsIDM1LCAyLCAyNTMsIDE2OSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDE2NywgMzAsIDM1LCAyLCAyNTMsIDE2NSwgMzAsIDM1LCAyLCAyNTMsIDE2MywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDE2MSwgMzAsIDM1LCAyLCAyNTMsIDE1OSwgMzAsIDM1LCAyLCAyNTMsIDE1NywgMzAsIDM1LCAyLCAyNTMsIDE1NSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDE1MywgMzAsIDM1LCAyLCAyNTMsIDE1MSwgMzAsIDM1LCAyLCAyNTMsIDE0OSwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDE0NiwgMzAsIDM1LCAyLCAyNTMsIDE0NCwgMzAsIDM1LCAyLCAyNTMsIDE0MiwgMzAsIDM1LCAyLCAyNTMsIDE0MCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDEzOCwgMzAsIDM1LCAyLCAyNTMsIDEzNiwgMzAsIDM1LCAyLCAyNTMsIDEzNCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDEzMiwgMzAsIDM1LCAyLCAyNTMsIDUwLCAzMCwgMzUsIDIsIDI1MywgNDksIDMwLCAzNSwgMiwgMjUzLCA0OCwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDQ3LCAzMCwgMzUsIDIsIDI1MywgNDYsIDMwLCAzNSwgMiwgMjUzLCA0NSwgMzAsIDM1LCAyLCAyNTMsIAorICAgIDQzLCAzMCwgMzUsIDIsIDI1MywgNDIsIDMwLCAzNSwgMiwgMjUzLCA0MSwgMzAsIDM1LCAyLCAyNTMsIDQwLCAzMCwgMzUsIAorICAgIDIsIDI1MywgMzksIDMwLCAzNSwgMiwgMjUzLCAzOCwgMzAsIDM1LCAyLCAyNTMsIDM2LCAzMCwgMzUsIDIsIDI1MywgMzUsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAzMSwgMzAsIDM1LCAyLCAyNTMsIDMwLCAzMCwgMzUsIDIsIDI1MywgMjgsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyNywgMzAsIDM1LCAyLCAyNTMsIDI2LCAzMCwgMzUsIDIsIDI1MywgMjUsIDMwLCAzNSwgMiwgMjUzLCAyNCwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDIzLCAzMCwgMzUsIDIsIDI1MywgMjIsIDMwLCAzNSwgMiwgMjUzLCAyMSwgMzAsIDM1LCAyLCAyNTMsIAorICAgIDIwLCAzMCwgMzUsIDIsIDI1MywgMTksIDMwLCAzNSwgMiwgMjUzLCAxOCwgMzAsIDM1LCAyLCAyNTMsIDE3LCAzMCwgMzUsIAorICAgIDIsIDI1MywgMTYsIDMwLCAzNSwgMiwgMjUzLCAxNSwgMzAsIDM1LCAyLCAyNTMsIDE0LCAzMCwgMzUsIDIsIDI1MywgMTMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxMiwgMzAsIDM1LCAyLCAyNTMsIDExLCAzMCwgMzUsIDIsIDI1MywgMTAsIDMwLCAzNSwgMiwgCisgICAgMjUzLCA5LCAzMCwgMzUsIDIsIDI1MywgOCwgMzAsIDM1LCAyLCAyNTMsIDcsIDMwLCAzNSwgMiwgMjUzLCA2LCAzMCwgMzUsIAorICAgIDIsIDI1MywgNSwgMzAsIDM1LCAyLCAyNTMsIDQsIDMwLCAzNSwgMiwgMjUzLCAzLCAzMCwgMzUsIDIsIDI1MywgMiwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDEsIDMwLCAzNSwgMiwgMjUzLCAwLCAzMCwgMzUsIDIsIDI1MiwgMjU1LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMjU0LCAzMCwgMzUsIDIsIDI1MiwgMjUzLCAzMCwgMzUsIDIsIDI1MiwgMjUyLCAzMCwgMzUsIDIsIDI1MiwgMjUxLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMjUwLCAzMCwgMzUsIDIsIDI1MiwgMjQ5LCAzMCwgMzUsIDIsIDI1MiwgMjQ4LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjQ3LCAzMCwgMzUsIDIsIDI1MiwgMjQ2LCAzMCwgMzUsIDIsIDI1MiwgMjQ1LCAzMCwgMzUsIDIsIDI1MiwgMjQ0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjQzLCAzMCwgMzUsIDIsIDI1MiwgMjQyLCAzMCwgMzUsIDIsIDI1MiwgMjQxLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjQwLCAzMCwgMzUsIDIsIDI1MiwgMjM5LCAzMCwgMzUsIDIsIDI1MiwgMjM4LCAzMCwgMzUsIDIsIDI1MiwgMjM3LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjM2LCAzMCwgMzUsIDIsIDI1MiwgMjM1LCAzMCwgMzUsIDIsIDI1MiwgMjM0LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjMzLCAzMCwgMzUsIDIsIDI1MiwgMjMyLCAzMCwgMzUsIDIsIDI1MiwgMjMxLCAzMCwgMzUsIDIsIDI1MiwgMjMwLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjI5LCAzMCwgMzUsIDIsIDI1MiwgMjI4LCAzMCwgMzUsIDIsIDI1MiwgMjI3LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjI2LCAzMCwgMzUsIDIsIDI1MiwgMjI1LCAzMCwgMzUsIDIsIDI1MiwgMjI0LCAzMCwgMzUsIDIsIDI1MiwgMjIzLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjIyLCAzMCwgMzUsIDIsIDI1MiwgMjIxLCAzMCwgMzUsIDIsIDI1MiwgMjIwLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjE5LCAzMCwgMzUsIDIsIDI1MiwgMjE4LCAzMCwgMzUsIDIsIDI1MiwgMjE3LCAzMCwgMzUsIDIsIDI1MiwgMjE2LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjE1LCAzMCwgMzUsIDIsIDI1MiwgMjE0LCAzMCwgMzUsIDIsIDI1MiwgMjEzLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjEyLCAzMCwgMzUsIDIsIDI1MiwgMjExLCAzMCwgMzUsIDIsIDI1MiwgMjEwLCAzMCwgMzUsIDIsIDI1MiwgMjA5LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjA4LCAzMCwgMzUsIDIsIDI1MiwgMjA3LCAzMCwgMzUsIDIsIDI1MiwgMjA2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjA1LCAzMCwgMzUsIDIsIDI1MiwgMjA0LCAzMCwgMzUsIDIsIDI1MiwgMjAzLCAzMCwgMzUsIDIsIDI1MiwgMjAyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjAxLCAzMCwgMzUsIDIsIDI1MiwgMjAwLCAzMCwgMzUsIDIsIDI1MiwgMTk5LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTk4LCAzMCwgMzUsIDIsIDI1MiwgMTk3LCAzMCwgMzUsIDIsIDI1MiwgMTk2LCAzMCwgMzUsIDIsIDI1MiwgMTk1LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTk0LCAzMCwgMzUsIDIsIDI1MiwgMTkzLCAzMCwgMzUsIDIsIDI1MiwgMTkyLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTkxLCAzMCwgMzUsIDIsIDI1MiwgMTkwLCAzMCwgMzUsIDIsIDI1MiwgMTg5LCAzMCwgMzUsIDIsIDI1MiwgMTg4LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTg3LCAzMCwgMzUsIDIsIDI1MiwgMTg2LCAzMCwgMzUsIDIsIDI1MiwgMTg1LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTg0LCAzMCwgMzUsIDIsIDI1MiwgMTgzLCAzMCwgMzUsIDIsIDI1MiwgMTgyLCAzMCwgMzUsIDIsIDI1MiwgMTgxLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTgwLCAzMCwgMzUsIDIsIDI1MiwgMTc5LCAzMCwgMzUsIDIsIDI1MiwgMTc4LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTc3LCAzMCwgMzUsIDIsIDI1MiwgMTc2LCAzMCwgMzUsIDIsIDI1MiwgMTc1LCAzMCwgMzUsIDIsIDI1MiwgMTc0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTczLCAzMCwgMzUsIDIsIDI1MiwgMTcyLCAzMCwgMzUsIDIsIDI1MiwgMTcxLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTcwLCAzMCwgMzUsIDIsIDI1MiwgMTY5LCAzMCwgMzUsIDIsIDI1MiwgMTY4LCA2MiwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDE2NywgMjUwLCAxMDMsIDMwLCAzNSwgMiwgMjUyLCAxNjYsIDI0MiwgMTUzLCAzMCwgMzUsIDIsIDI1MiwgMTY1LCA3MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE2NCwgMjM4LCA1LCAzMCwgMzUsIDIsIDI1MiwgMTYzLCAyMzQsIDI0NywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE2MiwgMjI3LCAyNTEsIDMwLCAzNSwgMiwgMjUyLCAxNjEsIDIyNywgMTE4LCAzMCwgMzUsIDIsIDI1MiwgMTYwLCAKKyAgICAxNTYsIDMwLCAzNSwgMiwgMjUyLCAxNTksIDIyNSwgMTgwLCAzMCwgMzUsIDIsIDI1MiwgMTU4LCAyMjUsIDE3OSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDE1NywgMjI1LCAxNzgsIDMwLCAzNSwgMiwgMjUyLCAxNTYsIDIyNSwgMTc3LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMTU1LCAyMDEsIDE0NywgMzAsIDM1LCAyLCAyNTIsIDE1NCwgMjAwLCAxOTUsIDMwLCAzNSwgMiwgMjUyLCAxNTMsIDIwMCwgCisgICAgMTIzLCAzMCwgMzUsIDIsIDI1MiwgMTUyLCAyMTcsIDgzLCAzMCwgMzUsIDIsIDI1MiwgMTUxLCAyNTIsIDQsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAxNTAsIDI0OSwgNDUsIDMwLCAzNSwgMiwgMjUyLCAxNDksIDI0MSwgMjIyLCAzMCwgMzUsIDIsIDI1MiwgMTQ4LCAKKyAgICAyMzgsIDEzLCAzMCwgMzUsIDIsIDI1MiwgMTQ3LCAyMjcsIDIyNywgMzAsIDM1LCAyLCAyNTIsIDE0NiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE0NSwgMzAsIDM1LCAyLCAyNTIsIDE0NCwgMzAsIDM1LCAyLCAyNTIsIDE0MywgMzAsIDM1LCAyLCAyNTIsIDE0MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE0MSwgMzAsIDM1LCAyLCAyNTIsIDE0MCwgMzAsIDM1LCAyLCAyNTIsIDEzOSwgMjQyLCAxNjAsIAorICAgIDUsIDYyLCAyNDIsIDE2MCwgNSwgNzIsIDI0MiwgMTYwLCA1LCA3MCwgMjQyLCAxNjAsIDUsIDc0LCAyNDIsIDE2MCwgNSwgCisgICAgNjYsIDI0MiwgMTYwLCA1LCAyMjcsIDI0OCwgMjQyLCAxNjAsIDUsIDIyNywgMTY2LCAyNDIsIDE2MCwgNSwgMTYxLCAyNDIsIAorICAgIDE2MCwgNSwgMjI3LCA4LCAyNDIsIDE2MCwgNSwgMjI2LCAxNjMsIDI0MiwgMTYwLCA1LCAyMjYsIDg4LCAyNDIsIDE2MCwgNSwgCisgICAgMjI2LCAxNSwgMjQyLCAxNjAsIDUsIDE5NCwgMjQyLCAxNjAsIDUsIDIyNSwgNDAsIDI0MiwgMTYwLCA1LCAyMjQsIDIxMCwgCisgICAgMjQyLCAxNjAsIDUsIDIyNCwgMTEwLCAyNDIsIDE2MCwgNSwgMjI0LCA0MiwgMjQyLCAxNjAsIDUsIDE3OCwgMjQyLCAxNjAsIAorICAgIDUsIDIyMiwgNzYsIDI0MiwgMTYwLCA1LCAyMjEsIDIxMSwgMjQyLCAxNjAsIDUsIDIyMSwgMTM2LCAyNDIsIDE2MCwgNSwgCisgICAgMjIxLCA0MSwgMjQyLCAxNjAsIDUsIDE4OCwgMjQyLCAxNjAsIDUsIDIyMCwgMzQsIDI0MiwgMTYwLCA1LCAyMTksIDE1MCwgCisgICAgMjQyLCAxNjAsIDUsIDIxOCwgMjQxLCAyNDIsIDE2MCwgNSwgMjE4LCAxMzMsIDI0MiwgMTYwLCA1LCAxNzIsIDI0MiwgMTYwLCAKKyAgICA1LCAyMTYsIDczLCAyNDIsIDE2MCwgNSwgMjE1LCAyMDQsIDI0MiwgMTYwLCA1LCAyMTUsIDEwNiwgMjQyLCAxNjAsIDUsIAorICAgIDIxNCwgMjI0LCAyNDIsIDE2MCwgNSwgMjEzLCAyNTIsIDI0MiwgMTYwLCA1LCAyMTMsIDE5MCwgMjQyLCAxNjAsIDUsIDIxMywgCisgICAgODgsIDI0MiwgMTYwLCA1LCAyMTMsIDEsIDI0MiwgMTYwLCA1LCAyMTIsIDE3NSwgMjQyLCAxNjAsIDUsIDIxMiwgNjQsIAorICAgIDI0MiwgMTYwLCA1LCAyMTEsIDIwMiwgMjQyLCAxNjAsIDUsIDIwOSwgMTgyLCAyNDIsIDE2MCwgNSwgMjA5LCAyOSwgMjQyLCAKKyAgICAxNjAsIDUsIDIwOCwgMjQsIDI0MiwgMTYwLCA1LCAyMDcsIDM2LCAyNDIsIDE2MCwgNSwgMjA2LCAyMDEsIDI0MiwgMTYwLCAKKyAgICA1LCAyMDYsIDE1LCAyNDIsIDE2MCwgNSwgMTM4LCAyNDIsIDE2MCwgNSwgMjA0LCAyMTUsIDI0MiwgMTYwLCA1LCAyMDEsIAorICAgIDExNCwgMjQyLCAxNjAsIDUsIDIwMSwgNjQsIDI0MiwgMTYwLCA1LCAyMDEsIDMxLCAyNDIsIDE2MCwgNSwgMjAxLCAwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjAwLCAxODEsIDI0MiwgMTYwLCA1LCAyMDAsIDE3NSwgMjQyLCAxNjAsIDUsIDE5OSwgMTE0LCAyNDIsIAorICAgIDE2MCwgNSwgMTk5LCAxNCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyNTEsIDE0MCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyNDgsIDIwNywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzUsIDE0NywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyNDIsIAorICAgIDIyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNCwgMTM5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIwMSwgNzIsIDIyOCwgCisgICAgMTE5LCAyNTAsIDIzOCwgMSwgMTk5LCA5MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzQsIDkxLCAyMjgsIDExOSwgMjUwLCAKKyAgICAyMzgsIDEsIDIwNiwgMTQyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDE5OSwgMjMzLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDIyNywgNTcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjI1LCA4MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMjIsIDQ3LCAKKyAgICAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxOCwgODksIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjEyLCAxOSwgMjI4LCAxMTksIAorICAgIDI1MCwgMjM4LCAxLCAyNTAsIDEwNywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTYsIDczLCAyMjgsIDExOSwgMjUwLCAKKyAgICAyMzgsIDEsIDIxMiwgNTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE0LCAxMDEsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjEzLCAxMjMsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjEwLCAyMSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMDYsIAorICAgIDIxNSwgMjI4LCAxMTksIDI1MCwgMjM4LCAyMTEsIDE5MywgNTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDEwMiwgMjI4LCAKKyAgICAxMTksIDI1MCwgMjM4LCA0MSwgMTA1LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxNDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgCisgICAgNDEsIDIwNiwgMTY2LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAyMDQsIDE1OSwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgCisgICAgMTEyLCAyMzMsIDgyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxMTIsIDIwNiwgNTAsIDIyOCwgMTE5LCAyNTAsIDIzOCwgCisgICAgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAyMTYsIDE3NSwgMSwgMjUxLCAxNDAsIDIxNiwgMTc1LCAxLCAyNDgsIDIwNywgMjE2LCAKKyAgICAxNzUsIDEsIDIzNSwgMTQ3LCAyMTYsIDE3NSwgMSwgMjQyLCAyMiwgMjE2LCAxNzUsIDEsIDIzNCwgMTM5LCAyMTYsIDE3NSwgCisgICAgMSwgMjAxLCA3MiwgMjE2LCAxNzUsIDEsIDE5OSwgOTIsIDIxNiwgMTc1LCAxLCAyMzQsIDkxLCAyMTYsIDE3NSwgMSwgMjA2LCAKKyAgICAxNDIsIDIxNiwgMTc1LCAxLCAxOTksIDIzMywgMjE2LCAxNzUsIDEsIDIyNywgNTcsIDIxNiwgMTc1LCAxLCAyMjUsIDgyLCAKKyAgICAyMTYsIDE3NSwgMSwgMjIyLCA0NywgMjE2LCAxNzUsIDEsIDQ3LCAyMTgsIDg5LCAyMTYsIDE3NSwgMSwgMjE4LCA4OSwgCisgICAgMjE2LCAxNzUsIDEsIDIxMiwgMTksIDIxNiwgMTc1LCAxLCAyNTAsIDEwNywgMjE2LCAxNzUsIDEsIDIxNiwgNzMsIDIxNiwgCisgICAgMTc1LCAxLCAyMTIsIDU0LCAyMTYsIDE3NSwgMSwgMjE0LCAxMDEsIDIxNiwgMTc1LCAxLCAyMTMsIDEyMywgMjE2LCAxNzUsIAorICAgIDEsIDIxMCwgMjEsIDIxNiwgMTc1LCAxLCAyMDYsIDIxNSwgMjE2LCAxNzUsIDIyNSwgMjMsIDIzNywgMzksIDIxNiwgMTc1LCAKKyAgICAyMTMsIDQxLCAyMzcsIDM5LCAyMTYsIDE3NSwgNDEsIDEwMiwgMjE2LCAxNzUsIDQxLCAxMDUsIDIxNiwgMTc1LCA0MSwgCisgICAgMTQ3LCAyMTYsIDE3NSwgNDEsIDE0OSwgMjE2LCAxNzUsIDQxLCAxNjQsIDIxNiwgMTc1LCA0MSwgMjA2LCAxNjYsIDIxNiwgCisgICAgMTc1LCA0MSwgMjA0LCAxNTksIDIyMCwgMTUzLCAxLCA0NywgMjUxLCAxNDAsIDIyMCwgMTUzLCAxLCAyNTEsIDE0MCwgMjIwLCAKKyAgICAxNTMsIDEsIDQ3LCAyNDgsIDIwNywgMjIwLCAxNTMsIDEsIDI0OCwgMjA3LCAyMjAsIDE1MywgMSwgMjM1LCAxNDcsIDIyMCwgCisgICAgMTUzLCAxLCAyNDIsIDIyLCAyMjAsIDE1MywgMSwgNDcsIDIzNCwgMTM5LCAyMjAsIDE1MywgMSwgMjM0LCAxMzksIDIyMCwgCisgICAgMTUzLCAxLCAyMDEsIDcyLCAyMjAsIDE1MywgMSwgMTk5LCA5MiwgMjIwLCAxNTMsIDEsIDIzNCwgOTEsIDIyMCwgMTUzLCAxLCAKKyAgICAyMDYsIDE0MiwgMjIwLCAxNTMsIDEsIDQ3LCAxOTksIDIzMywgMjIwLCAxNTMsIDEsIDE5OSwgMjMzLCAyMjAsIDE1MywgMSwgCisgICAgNDcsIDIyNywgNTcsIDIyMCwgMTUzLCAxLCAyMjcsIDU3LCAyMjAsIDE1MywgMSwgNDcsIDIyNSwgODIsIDIyMCwgMTUzLCAxLCAKKyAgICAyMjUsIDgyLCAyMjAsIDE1MywgMSwgNDcsIDIyMiwgNDcsIDIyMCwgMTUzLCAxLCAyMjIsIDQ3LCAyMjAsIDE1MywgMSwgNDcsIAorICAgIDIxOCwgODksIDIyMCwgMTUzLCAxLCAyMTgsIDg5LCAyMjAsIDE1MywgMSwgMjEyLCAxOSwgMjIwLCAxNTMsIDEsIDI1MCwgCisgICAgMTA3LCAyMjAsIDE1MywgMSwgMjE2LCA3MywgMjIwLCAxNTMsIDEsIDIxMiwgNTQsIDIyMCwgMTUzLCAxLCAyMTQsIDEwMSwgCisgICAgMjIwLCAxNTMsIDEsIDIxMywgMTIzLCAyMjAsIDE1MywgMSwgNDcsIDIxMCwgMjEsIDIyMCwgMTUzLCAxLCAyMTAsIDIxLCAKKyAgICAyMjAsIDE1MywgMSwgMjA2LCAyMTUsIDIyMCwgMTUzLCA0MSwgMTAyLCAyMjAsIDE1MywgNDEsIDEwNSwgMjIwLCAxNTMsIAorICAgIDQxLCAxNDcsIDIyMCwgMTUzLCA0MSwgMTQ5LCAyMjAsIDE1MywgMjQyLCAyMjAsIDQxLCAxNDksIDIyMCwgMTUzLCA0MSwgCisgICAgMTY0LCAyMjAsIDE1MywgNDEsIDIwNiwgMTY2LCAyMjAsIDE1MywgNDEsIDIwNCwgMTU5LCAyMjAsIDE1MywgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgMjM0LCAxNTIsIDEsIDI1MSwgMTQwLCAyMzQsIDE1MiwgMSwgMjQ4LCAyMDcsIDIzNCwgMTUyLCAxLCAyMzUsIAorICAgIDE0NywgMjM0LCAxNTIsIDEsIDI0MiwgMjEsIDIzNCwgMTUyLCAxLCAyMzQsIDEzOSwgMjM0LCAxNTIsIDEsIDIwMSwgNzIsIAorICAgIDIzNCwgMTUyLCAxLCAxOTksIDkxLCAyMzQsIDE1MiwgMSwgMjM0LCA5MSwgMjM0LCAxNTIsIDEsIDIwNiwgMTQyLCAyMzQsIAorICAgIDE1MiwgMSwgMTk5LCAyMzMsIDIzNCwgMTUyLCAxLCAyMjcsIDU3LCAyMzQsIDE1MiwgMSwgMjI1LCA4MiwgMjM0LCAxNTIsIAorICAgIDEsIDIyMiwgNDcsIDIzNCwgMTUyLCAxLCAyMTgsIDg5LCAyMzQsIDE1MiwgMSwgMjEyLCAxOSwgMjM0LCAxNTIsIDEsIDI1MCwgCisgICAgMTA2LCAyMzQsIDE1MiwgMSwgMjE2LCA3MywgMjM0LCAxNTIsIDEsIDIxMiwgNTQsIDIzNCwgMTUyLCAxLCAyMTQsIDEwMSwgCisgICAgMjM0LCAxNTIsIDEsIDIxMCwgMjEsIDIzNCwgMTUyLCAxLCAyMDYsIDIxNSwgMjM0LCAxNTIsIDQxLCAxMDIsIDIzNCwgMTUyLCAKKyAgICA0MSwgMTY0LCAyMzQsIDE1MiwgNDEsIDIwNiwgMTY2LCAyMzQsIDE1MiwgNDEsIDIwNCwgMTU5LCAyMzQsIDE1MiwgNDEsIAorICAgIDExMiwgMjMzLCA4MiwgMjE1LCAyMTUsIDEsIDI1MSwgMTM3LCAyMTUsIDIxNSwgMSwgMjQ4LCAyMTAsIDIxNSwgMjE1LCAxLCAKKyAgICAyMzYsIDYyLCAyMTUsIDIxNSwgMSwgMjQxLCAxMzgsIDIxNSwgMjE1LCAxLCAyMzQsIDEzOSwgMjE1LCAyMTUsIDEsIDIwMSwgCisgICAgNzksIDIxNSwgMjE1LCAxLCAxOTksIDEwNywgMjE1LCAyMTUsIDEsIDIzNCwgOTMsIDIxNSwgMjE1LCAxLCAyMDYsIDE0NiwgCisgICAgMjE1LCAyMTUsIDEsIDE5OSwgMjM0LCAyMTUsIDIxNSwgMSwgMjI3LCA4NiwgMjE1LCAyMTUsIDEsIDIyNSwgODgsIDIxNSwgCisgICAgMjE1LCAxLCAyMjIsIDQ3LCAyMTUsIDIxNSwgMSwgMjE4LCA4OSwgMjE1LCAyMTUsIDEsIDIxMCwgMTYxLCAyMTUsIDIxNSwgCisgICAgMSwgMjUxLCAxNzEsIDIxNSwgMjE1LCAxLCAyMTYsIDczLCAyMTUsIDIxNSwgMSwgMjEyLCA1NSwgMjE1LCAyMTUsIDEsIAorICAgIDIxNCwgMTA2LCAyMTUsIDIxNSwgMSwgMjEyLCAyMzAsIDIxNSwgMjE1LCAxLCAyMTAsIDIxLCAyMTUsIDIxNSwgMSwgMjA2LCAKKyAgICAyMjEsIDIxNSwgMjE1LCA0MSwgMTAyLCAyMTUsIDIxNSwgNDEsIDIwNiwgMTY2LCAyMTUsIDIxNSwgNDEsIDIwNCwgMTU5LCAKKyAgICAyMTUsIDIxNSwgNDEsIDExMiwgMjMzLCA4MiwgMjE1LCAyMTUsIDQxLCAxMDUsIDIxNSwgMjE1LCA0MSwgMTQ3LCAyMTUsIAorICAgIDIxNSwgMjAwLCAyMzgsIDIxMCwgMTU0LCAyMjMsIDI1NSwgMSwgNjIsIDIyMywgMjU1LCAxLCAyNTAsIDEwMywgMjIzLCAKKyAgICAyNTUsIDEsIDIzNiwgMTU2LCAyMjMsIDI1NSwgMSwgMjQyLCAxNTMsIDIyMywgMjU1LCAxLCA3MiwgMjIzLCAyNTUsIDEsIAorICAgIDIwMywgMTY4LCAyMjMsIDI1NSwgMSwgNzAsIDIyMywgMjU1LCAxLCAyMDAsIDEyMywgMjIzLCAyNTUsIDEsIDIyNywgMTE4LCAKKyAgICAyMjMsIDI1NSwgMSwgMTU2LCAyMjMsIDI1NSwgMSwgMjIzLCAyNDMsIDIyMywgMjU1LCAxLCAyMjAsIDIxNCwgMjIzLCAyNTUsIAorICAgIDEsIDc0LCAyMjMsIDI1NSwgMSwgMTQ2LCAyMjMsIDI1NSwgMSwgMjA4LCAxODIsIDIyMywgMjU1LCAxLCAyMDcsIDgzLCAKKyAgICAyMjMsIDI1NSwgMSwgNjYsIDIyMywgMjU1LCAxLCAyMzgsIDUsIDIyMywgMjU1LCAxLCAyMTQsIDE2NywgMjIzLCAyNTUsIDEsIAorICAgIDIxMiwgMTIyLCAyMjMsIDI1NSwgMSwgMjA1LCAwLCAyMjMsIDI1NSwgMSwgMjUxLCA4NSwgMjIzLCAyNTUsIDEsIDIzOCwgCisgICAgMTc5LCAyMjMsIDI1NSwgMSwgMjI0LCAyLCAyMjMsIDI1NSwgMSwgMjE5LCAyMiwgMjIzLCAyNTUsIDEsIDI0NywgMjIzLCAKKyAgICAyMjMsIDI1NSwgMjA1LCA5NSwgODEsIDEzMiwgMjM0LCA2OCwgMSwgNjIsIDEzMiwgMjM0LCA2OCwgMSwgNzIsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgNzAsIDEzMiwgMjM0LCA2OCwgMSwgNzQsIDEzMiwgMjM0LCA2OCwgMSwgMTgzLCAxMzIsIDIzNCwgNjgsIAorICAgIDEsIDIwMSwgMTE0LCAxMzIsIDIzNCwgNjgsIDEsIDI0OSwgMTM2LCAxMzIsIDIzNCwgNjgsIDEsIDI0OSwgMTM1LCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDE3MiwgMTMyLCAyMzQsIDY4LCAxLCAxNzgsIDEzMiwgMjM0LCA2OCwgMSwgMTg4LCAxMzIsIDIzNCwgCisgICAgNjgsIDEsIDIyMCwgMTYxLCAxMzIsIDIzNCwgNjgsIDEsIDIyMCwgMzQsIDEzMiwgMjM0LCA2OCwgMSwgMjIwLCAzMywgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAyMTMsIDI1MiwgMTMyLCAyMzQsIDY4LCAxLCAyMTMsIDI1MSwgMTMyLCAyMzQsIDY4LCAxLCAxOTQsIAorICAgIDEzMiwgMjM0LCA2OCwgMSwgMjI2LCAyMDcsIDEzMiwgMjM0LCA2OCwgMSwgMjM0LCA4NCwgMTMyLCAyMzQsIDY4LCAxLCAKKyAgICAyMTIsIDY0LCAxMzIsIDIzNCwgNjgsIDEsIDIxMiwgNjMsIDEzMiwgMjM0LCA2OCwgMSwgMjExLCAyMDIsIDEzMiwgMjM0LCAKKyAgICA2OCwgMSwgMTYxLCAxMzIsIDIzNCwgNjgsIDEsIDIxNCwgMTU5LCAxMzIsIDIzNCwgNjgsIDEsIDIwNywgMzYsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMjA3LCAzNSwgMTMyLCAyMzQsIDY4LCAxLCAyMDYsIDIwMSwgMTMyLCAyMzQsIDY4LCAxLCAyMDYsIAorICAgIDIwMCwgMTMyLCAyMzQsIDY4LCAxLCAxMzgsIDEzMiwgMjM0LCA2OCwgMSwgMjQyLCA1OCwgMTMyLCAyMzQsIDY4LCAxNiwgCisgICAgMjAyLCAyMjgsIDEzMiwgMjM0LCA2OCwgMTYsIDIwMiwgMjI3LCAxMzIsIDI0MiwgMTkxLCAxLCA2MiwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgNzIsIDEzMiwgMjQyLCAxOTEsIDEsIDcwLCAxMzIsIDI0MiwgMTkxLCAxLCA3NCwgMTMyLCAyNDIsIDE5MSwgMSwgCisgICAgMTgzLCAxMzIsIDI0MiwgMTkxLCAxLCAyMDEsIDExNCwgMTMyLCAyNDIsIDE5MSwgMSwgMjQ5LCAxMzYsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDE3MiwgMTMyLCAyNDIsIDE5MSwgMSwgMTc4LCAxMzIsIDI0MiwgMTkxLCAxLCAxODgsIDEzMiwgMjQyLCAxOTEsIAorICAgIDEsIDIyMCwgMzQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMywgMjUyLCAxMzIsIDI0MiwgMTkxLCAxLCAxOTQsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDIyNiwgMjA3LCAxMzIsIDI0MiwgMTkxLCAxLCAyMzQsIDg0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTIsIDY0LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAxLCAyNTAsIDIzNCwgMjEyLCA2NCwgMTMyLCAyNDIsIDE5MSwgMSwgMjExLCAyMDIsIDEzMiwgCisgICAgMjQyLCAxOTEsIDEsIDE2MSwgMTMyLCAyNDIsIDE5MSwgMSwgMjE0LCAxNTksIDEzMiwgMjQyLCAxOTEsIDEsIDIwNywgMzYsIAorICAgIDEzMiwgMjQyLCAxOTEsIDEsIDIwNiwgMjAxLCAxMzIsIDI0MiwgMTkxLCAxLCAxMzgsIDEzMiwgMjQyLCAxOTEsIDEsIDI0MiwgCisgICAgNTgsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzgsIDIwMCwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIzNCwgMjEzLCAxMzIsIDI0MiwgMTkxLCAyMjQsIDk3LCAyMTMsIDcsIDEzMiwgMjQyLCAxOTEsIDIyNCwgOTcsIAorICAgIDIyOCwgMTI0LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTAyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTA1LCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMTQ3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTQ5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTY0LCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMTg3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzUsIDEzMiwgMjQyLCAxOTEsIDQxLCAxOTIsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMTksIDExMywgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgMTY2LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA0LCAKKyAgICAxNTksIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDY3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMzUsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzcsIDEwNCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgOTIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIAorICAgIDEyOSwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgMjMzLCA4MiwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMzMsIAorICAgIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgCisgICAgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMDYsIAorICAgIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMjksIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIAorICAgIDEzNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgCisgICAgMjE5LCAxMTQsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDIwNCwgMTYwLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCA2OCwgMjA2LCA1MCwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNiwgMjM2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIDEzMiwgCisgICAgMjQyLCAxOTEsIDQxLCAyMDksIDkzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzAsIDIwNiwgNTAsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIyMywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTA5LCAyMDYsIAorICAgIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAKKyAgICAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM2LCAyMjksIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAyMzMsIDgzLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAyMTAsIDEzNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgzLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMTQsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIwNCwgMTY3LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMTIwLCAyMDQsIDE2NiwgMTMyLCAKKyAgICAyNDIsIDE5MSwgMjM2LCAyMTksIDEyNiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzYsIDIyOSwgCisgICAgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzcsIDYxLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAKKyAgICAyMTksIDIwOSwgMTA2LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIxMCwgMTM2LCAyMDQsIDE2NiwgCisgICAgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzOCwgMjMyLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIAorICAgIDIxOSwgMTE0LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIwNiwgMTY3LCAyMDQsIDE2NiwgMjI2LCAKKyAgICAxOTQsIDEsIDYyLCAyMjYsIDE5NCwgMjIsIDIsIDcwLCAyMjYsIDE5NCwgMjIsIDIsIDY2LCAyMjYsIDE5NCwgMjIsIDIsIAorICAgIDEwOSwgMTQ2LCAyMjYsIDE5NCwgMjIsIDIsIDcyLCAyMjYsIDE5NCwgMjIsIDIsIDc0LCAyMjYsIDE5NCwgMjIsIDIyNSwgMiwgCisgICAgODEsIDIyNiwgMTk0LCAyLCA1MywgMjEzLCAyNywgNTcsIDIyNiwgMTk0LCAyLCAyNTEsIDMzLCAyMjYsIDE5NCwgMiwgMjAyLCAKKyAgICAyMDMsIDIyNiwgMTk0LCAxLCAxNjEsIDIyNiwgMTk0LCAxLCAyMjYsIDIwNywgMjI2LCAxOTQsIDEsIDIzNiwgODksIDIyNiwgCisgICAgMTk0LCAxLCAyMzUsIDE5OSwgMjI2LCAxOTQsIDEsIDI0NywgMTkwLCAyMjYsIDE5NCwgMSwgMjQ3LCAzNywgMjI2LCAxOTQsIAorICAgIDEsIDIyNywgMjQ4LCAyMjYsIDE5NCwgMSwgMjE4LCA2MCwgMjI2LCAxOTQsIDEsIDIwNCwgMjUzLCAyMjYsIDE5NCwgMSwgCisgICAgMjA0LCAyNDEsIDIyNiwgMTk0LCAxLCAyNDEsIDIyMCwgMjI2LCAxOTQsIDEsIDI0MSwgMjA0LCAyMjYsIDE5NCwgMSwgMjE5LCAKKyAgICAyMSwgMjI2LCAxOTQsIDEsIDIwNywgMzYsIDIyNiwgMTk0LCAxLCAyMDYsIDEyMiwgMjI2LCAxOTQsIDEsIDI0MiwgNTgsIAorICAgIDIyNiwgMTk0LCAxLCAyNDEsIDEwMCwgMjI2LCAxOTQsIDEsIDE4OCwgMjI2LCAxOTQsIDEsIDE3MiwgMjI2LCAxOTQsIDEsIAorICAgIDIxNSwgMjQ1LCAyMjYsIDE5NCwgMSwgMjQ5LCAxMzYsIDIyNiwgMTk0LCAxLCAyNDgsIDIwMCwgMjI2LCAxOTQsIDEsIDE3OCwgCisgICAgMjI2LCAxOTQsIDEsIDE4MywgMjI2LCAxOTQsIDEsIDIxMywgMjUyLCAyMjYsIDE5NCwgMSwgMTk0LCAyMjYsIDE5NCwgMSwgCisgICAgMjAzLCA5MCwgMjI2LCAxOTQsIDEsIDIxMCwgMTE0LCAyMjYsIDE5NCwgMSwgMjA4LCAxNzksIDIyNiwgMTk0LCAxLCAyMTIsIAorICAgIDY0LCAyMjYsIDE5NCwgMSwgMTk5LCAxMTQsIDIyNiwgMTk0LCAxLCAxNDQsIDIyNiwgMTk0LCAxLCAyMjYsIDEwOSwgMjI2LCAKKyAgICAxOTQsIDEsIDIwNCwgMjIxLCAyMjYsIDE5NCwgMiwgMjQ5LCA3NywgNTYsIDIyNiwgMTk0LCAyLCAyNDcsIDEwNywgMjI2LCAKKyAgICAxOTQsIDIsIDczLCA1NywgMjI2LCAxOTQsIDIwMiwgMjA4LCAyMjYsIDE5NCwgMTcsIDEwMiwgMjI2LCAxOTQsIDE3LCAxMDUsIAorICAgIDIyNiwgMTk0LCAxNywgMTQ3LCAyMjYsIDE5NCwgMTcsIDE0OSwgMjI2LCAxOTQsIDQxLCAyMDYsIDE2NiwgMjI2LCAxOTQsIAorICAgIDQxLCAyMDQsIDE1OSwgMjI2LCAxOTQsIDQxLCAxMTIsIDIzMywgODIsIDIyNiwgMTk0LCA0MSwgMTEyLCAyMDYsIDUwLCAKKyAgICAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MCwgMTgyLCAyMjYsIDE5NCwgMjE0LCAyMTIsIDQsIDI0NiwgMTU1LCAyMjYsIDE5NCwgCisgICAgMjE0LCAyMTIsIDI0NiwgMTU1LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MiwgMjQ0LCAxNDgsIDIyNiwgMTk0LCAyMTQsIAorICAgIDIxMiwgMjIyLCAxNzQsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjI0LCA2NCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDIsIDEwLCAKKyAgICAyMjYsIDE5NCwgMjE0LCAyMTIsIDUzLCAyNDIsIDEwLCAyMjYsIDE5NCwgMjE0LCAyMTIsIDIyNCwgMTcwLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzQsIDEzOSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI1LCA4MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM0LCA5MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjIyLCA0NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjE0LCAxMDEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwMSwgNzIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMCwgMjEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIxMywgMTIzLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyNDgsIDIwNywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAyMTUsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMSwgMjUxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjcsIDU3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTgsIDg5LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjYsIDE4OSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjEyLCA1NCwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjEyLCAxOSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM3LCAxNDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI1MSwgMTQyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyNTAsIDEwNiwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQxLCA5NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM1LCAxNDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MiwgMjIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNSwgMTg3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDE0MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMTk5LCA5MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQxLCA5NCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMTk5LCAyMzMsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMTA4LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDg3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCA0MSwgMTAyLCA0MCwgMjA4LCAyNTQsIAorICAgIDI1MCwgMjQ5LCA0MSwgMjM3LCAxMDQsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDE0NSwgMjI4LCA5OSwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIzNCwgMTE1LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjI1LCA5MSwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDIzNCwgMjI0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjIyLCA2MSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxNCwgCisgICAgMTUyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjAxLCA3MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAyLCA0MCwgCisgICAgMTU3LCAyNTAsIDI0OSwgMSwgMjEzLCAxNTQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDgsIDI0MCwgNDAsIDE1NywgMjUwLCAKKyAgICAyNDksIDEsIDIwNiwgMTgzLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDMsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAKKyAgICAyMjcsIDg2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjE4LCAyMjcsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjYsIDIwMywgCisgICAgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxMiwgNTYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMSwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIzNywgMTM0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjUxLCAxNDIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyNTEsIDE3MSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0MiwgNTIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzYsIDYsIAorICAgIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDIsIDI5LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM1LCAxOTQsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMDcsIDksIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAxOTksIDEwNSwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDIwNiwgMTE0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjAwLCA0NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwNiwgCisgICAgMTAyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMTk5LCAxMDgsIDQwLCAxNTcsIDI1MCwgMjQ5LCA0MSwgMTAyLCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgNDEsIDIwNiwgMTY2LCA0MCwgMTU3LCAyNTAsIDI0OSwgNDEsIDIwNCwgMTU5LCAyMjIsIDE3MywgMSwgCisgICAgMjUxLCAxNDAsIDIyMiwgMTczLCAxLCAyNDgsIDIwNywgMjIyLCAxNzMsIDEsIDI0OCwgMTk0LCAyMjIsIDE3MywgMSwgMjM1LCAKKyAgICAxNDcsIDIyMiwgMTczLCAxLCAyMzUsIDE3MiwgMjIyLCAxNzMsIDEsIDI0MiwgMjIsIDIyMiwgMTczLCAxLCAyMzQsIDEzOSwgCisgICAgMjIyLCAxNzMsIDEsIDIwMSwgNzIsIDIyMiwgMTczLCAyLCAyMDQsIDM2LCAyMjIsIDE3MywgMSwgMTk5LCA5MiwgMjIyLCAKKyAgICAxNzMsIDEsIDE5OSwgNzAsIDIyMiwgMTczLCAxLCAyMjcsIDIyOSwgMjIyLCAxNzMsIDEsIDIyNywgMjExLCAyMjIsIDE3MywgCisgICAgMSwgMjM0LCA5MSwgMjIyLCAxNzMsIDEsIDIwNiwgMTQyLCAyMjIsIDE3MywgMSwgMTk5LCAyMzMsIDIyMiwgMTczLCAxLCAKKyAgICAyMjcsIDU3LCAyMjIsIDE3MywgMSwgMjAwLCAxNzgsIDIyMiwgMTczLCAxLCAyMjYsIDE5NiwgMjIyLCAxNzMsIDEsIDIyNSwgCisgICAgODIsIDIyMiwgMTczLCAxLCAyNDEsIDkzLCAyMjIsIDE3MywgMSwgMjA2LCAxMTMsIDIyMiwgMTczLCAxLCAyMjIsIDQ3LCAKKyAgICAyMjIsIDE3MywgMSwgMjE4LCA4OSwgMjIyLCAxNzMsIDEsIDIxMiwgMTksIDIyMiwgMTczLCAxLCAyNTAsIDEwNywgMjIyLCAKKyAgICAxNzMsIDEsIDI1MiwgOTEsIDIyMiwgMTczLCAxLCAyMTYsIDczLCAyMjIsIDE3MywgMSwgMjM3LCAxNDcsIDIyMiwgMTczLCAKKyAgICAxLCAyMTIsIDU0LCAyMjIsIDE3MywgMSwgMjE0LCAxMDEsIDIyMiwgMTczLCAxLCAyMDAsIDE1NiwgMjIyLCAxNzMsIDEsIAorICAgIDIxNCwgMTI4LCAyMjIsIDE3MywgMSwgMjEzLCAxMjMsIDIyMiwgMTczLCAxLCAyMTAsIDIxLCAyMjIsIDE3MywgMSwgMjA4LCAKKyAgICAxNDgsIDIyMiwgMTczLCAxLCAyMDYsIDIxNSwgMjIyLCAxNzMsIDI1MiwgMywgMTM0LCA1NiwgMjIyLCAxNzMsIDI1MiwgMywgCisgICAgMTM0LCA1NywgMjIyLCAxNzMsIDQxLCAxMDIsIDIyMiwgMTczLCA0MSwgMTY0LCAyMjIsIDE3MywgNDEsIDIwNiwgMTY2LCAKKyAgICAyMjIsIDE3MywgNDEsIDIwNCwgMTU5LCAyMjIsIDE3MywgNDEsIDExMiwgMjMzLCA4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCAKKyAgICAyMDgsIDEwOSwgMjIyLCAxNzMsIDIxNCwgMjEyLCAyMzcsIDM5LCAyMjIsIDE3MywgMjE0LCAyMTIsIDUzLCA3MywgMjAxLCAKKyAgICA1LCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCA3MywgMjAxLCA1LCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgCisgICAgMjEyLCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCAxMjAsIDI0MCwgMTgwLCAyMjIsIDE3MywgMjE0LCAyMTIsIAorICAgIDIyNCwgMTc3LCAyMzcsIDkzLCAyNTAsIDExOSwgMSwgNjIsIDI1MCwgMTE5LCAxLCAyNTIsIDEzOCwgMjUwLCAxMTksIDEsIAorICAgIDI1MSwgMzEsIDI1MCwgMTE5LCAxLCAyNTIsIDk3LCAyNTAsIDExOSwgMSwgMjUxLCA4NSwgMjUwLCAxMTksIDEsIDI1MiwgCisgICAgOTgsIDI1MCwgMTE5LCAxLCAyNTEsIDIyMSwgMjUwLCAxMTksIDEsIDI1MSwgMjE3LCAyNTAsIDExOSwgMSwgNzIsIDI1MCwgCisgICAgMTE5LCAxLCAyMzgsIDI1NSwgMjUwLCAxMTksIDEsIDc0LCAyNTAsIDExOSwgMSwgMjE3LCA2MywgMjUwLCAxMTksIDEsIDcwLCAKKyAgICAyNTAsIDExOSwgMSwgMjI4LCAxNTEsIDI1MCwgMTE5LCAxLCA2NiwgMjUwLCAxMTksIDEsIDIwMywgMTgyLCAyNTAsIDExOSwgCisgICAgMSwgMjI3LCA4LCAyNTAsIDExOSwgMSwgMjAwLCAxNzUsIDI1MCwgMTE5LCAxLCAyMDAsIDEzNywgMjUwLCAxMTksIDEsIAorICAgIDIwMCwgMTQ3LCAyNTAsIDExOSwgMSwgMjM2LCAxNSwgMjUwLCAxMTksIDEsIDIzNSwgMjMwLCAyNTAsIDExOSwgMSwgMjM1LCAKKyAgICAxODUsIDI1MCwgMTE5LCAxLCAyNDcsIDc2LCAyNTAsIDExOSwgMSwgMjI3LCAyMjcsIDI1MCwgMTE5LCAxLCAyMDYsIDIwMSwgCisgICAgMjUwLCAxMTksIDEsIDIwNiwgMTA2LCAyNTAsIDExOSwgMSwgMjQxLCAxNzUsIDI1MCwgMTE5LCAxLCAyNDEsIDkxLCAyNTAsIAorICAgIDExOSwgMSwgMjA0LCAyNDgsIDI1MCwgMTE5LCAxLCAyMTYsIDczLCAyNTAsIDExOSwgMSwgMjM3LCAxNDcsIDI1MCwgMTE5LCAKKyAgICAxLCAyNDksIDgsIDI1MCwgMTE5LCAxLCAyNDgsIDE5NiwgMjUwLCAxMTksIDEsIDIxOSwgMjQwLCAyNTAsIDExOSwgMSwgCisgICAgMjE5LCAxNTYsIDI1MCwgMTE5LCAxLCAyMTksIDE1NywgMjUwLCAxMTksIDEsIDIyMCwgMzQsIDI1MCwgMTE5LCAxLCAyMTgsIAorICAgIDUwLCAyNTAsIDExOSwgMSwgMjE5LCAxNiwgMjUwLCAxMTksIDEsIDIyMiwgNzYsIDI1MCwgMTE5LCAxLCAyMzQsIDEsIDI1MCwgCisgICAgMTE5LCAxLCAxOTksIDE2NCwgMjUwLCAxMTksIDEsIDIwMCwgNTEsIDI1MCwgMTE5LCAxLCAyMDMsIDU5LCAyNTAsIDExOSwgCisgICAgMSwgMjEzLCAxOTAsIDI1MCwgMTE5LCAxLCAyMjUsIDQwLCAyNTAsIDExOSwgMSwgMjExLCAyMDIsIDI1MCwgMTE5LCAxLCAKKyAgICAxOTksIDg5LCAyNTAsIDExOSwgMSwgMjEwLCA2NSwgMjUwLCAxMTksIDEsIDE5OSwgNjgsIDI1MCwgMTE5LCAxLCAyMDksIAorICAgIDE4OSwgMjUwLCAxMTksIDEsIDIwOCwgMTQ5LCAyNTAsIDExOSwgMSwgMjM0LCAxMzksIDI1MCwgMTE5LCAyNTIsIDMsIDgxLCAKKyAgICAyMDUsIDIyNiwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDQsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIAorICAgIDIxNCwgMjExLCAyMjUsIDcxLCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgMjI1LCA3MSwgMTEyLCA3MywgCisgICAgMTE5LCAxMjAsIDE5MCwgMjE0LCAyMTEsIDIyNSwgNzEsIDEyMCwgMjEzLCAyNCwgMTE5LCAxMTIsIDIxMywgMjcsIDIxNCwgCisgICAgMjExLCAyMjUsIDcxLCAxMTIsIDIxMywgMjcsIDExOSwgMTIwLCAyMTMsIDI0LCAyMTQsIDIxMSwgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDEsIDI1MSwgMTQwLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjQ4LCAyMDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAKKyAgICAyMzUsIDE0NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI0MiwgMjIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMzQsIDEzOSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwMSwgNzIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAxOTksIDkyLCAyMjgsIDc3LCAKKyAgICAyMTYsIDEwOSwgMSwgMjM0LCA5MSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwNiwgMTQyLCAyMjgsIDc3LCAyMTYsIDEwOSwgCisgICAgMSwgMTk5LCAyMzMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjcsIDU3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjI1LCAKKyAgICA4MiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyMiwgNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTgsIDg5LCAyMjgsIAorICAgIDc3LCAyMTYsIDEwOSwgMSwgMjEyLCAxOSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI1MCwgMTA3LCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgMSwgMjE2LCA3MywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMiwgNTQsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAKKyAgICAyMTQsIDEwMSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMywgMTIzLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEwLCAyMSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwNiwgMjE1LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDEwMiwgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDQxLCAxMDUsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDE0OSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAyMDYsIDE2NiwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAyMDQsIDE1OSwgMjI4LCAKKyAgICA3NywgMjE2LCAxMDksIDQxLCAxMTIsIDIzMywgODIsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTEyLCAyMDYsIDUwLCAyMjgsIAorICAgIDc3LCAyMTYsIDE5MSwgMSwgMjUxLCAxNDAsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyNDgsIDIwNywgMjI4LCA3NywgMjE2LCAKKyAgICAxOTEsIDEsIDIzNSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjQyLCAyMiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIAorICAgIDIzNCwgMTM5LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjAxLCA3MSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDE5OSwgOTIsIAorICAgIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMzQsIDkxLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjA2LCAxNDIsIDIyOCwgNzcsIAorICAgIDIxNiwgMTkxLCAxLCAxOTksIDIzMywgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIyNywgNTcsIDIyOCwgNzcsIDIxNiwgMTkxLCAKKyAgICAxLCAyMjUsIDgyLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjIyLCA0NiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxOCwgODksIAorICAgIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTIsIDE5LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjE2LCA3MywgMjI4LCA3NywgCisgICAgMjE2LCAxOTEsIDEsIDIxMiwgNTQsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTAsIDIxLCAyMjgsIDc3LCAyMTYsIDE5MSwgCisgICAgMSwgMjA2LCAyMTUsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTAyLCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDEwNSwgMjI4LCAKKyAgICA3NywgMjE2LCAxOTEsIDQxLCAxNDcsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTQ5LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIAorICAgIDIwNiwgMTY2LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDIwNCwgMTU5LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMTIsIDIwNiwgNTAsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjUxLCAKKyAgICAxNDAsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjQ4LCAyMDcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjM1LCAxNDcsIAorICAgIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjQyLCAyMiwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMzQsIDEzOSwgMjE0LCAKKyAgICAyMzYsIDIxNiwgMTkxLCAxLCAyMDEsIDcxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDE5OSwgOTIsIDIxNCwgMjM2LCAyMTYsIAorICAgIDE5MSwgMSwgMjM0LCA5MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAxOTksIDIzMywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAKKyAgICAyMjcsIDU3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIyNSwgODIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjIyLCA0NiwgCisgICAgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTgsIDg5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxMiwgMTksIDIxNCwgMjM2LCAKKyAgICAyMTYsIDE5MSwgMSwgMjE2LCA3MywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTIsIDU0LCAyMTQsIDIzNiwgMjE2LCAxOTEsIAorICAgIDEsIDIxMCwgMjEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjA2LCAyMTUsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjExLCAKKyAgICAxOTMsIDgxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIwNCwgMTg1LCAyMTEsIDE5MywgODEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgCisgICAgMjM2LCAyMjksIDE5MCwgMywgMjQyLCAyMzQsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjM2LCAyMjksIDE5MCwgMywgMjQwLCAKKyAgICAxODIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDEwMiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTA1LCAyMTQsIDIzNiwgCisgICAgMjE2LCAxOTEsIDQxLCAxNDcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDE0OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgCisgICAgMjA2LCAxNjYsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDIwNCwgMTU5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgNjIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgNjIsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgNzAsIDQwLCAyMDQsIAorICAgIDE4OSwgMSwgMjAwLCAzOSwgNzAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgNzIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAKKyAgICAyMywgNzQsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAxMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjE3LCAxMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUyLCA4OSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTIsIDg5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjIwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjIwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjE1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjE1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjM1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjM1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjE5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTAsIDExMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDExMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIwMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIwMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIxMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMTcsIDExOSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMTcsIDExOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDE1MSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDE1MSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE5MCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDg1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjEwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTU3LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTU3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTc2LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTc2LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTQzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTQzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxNjUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMDksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxMzMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjE3LCA1NCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzIsIDIzMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzksIDcsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM5LCA3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgCisgICAgMSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjI4LCAzNywgCisgICAgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMjgsIDM3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMzUsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjE3LCAzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDI1MywgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDI1MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwOCwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE4OCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwNiwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE4MSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDE4MSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDk0LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgOTQsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxNTUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxNTUsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMDMsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAxMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNDksIDYxLCA0MCwgCisgICAgMTUyLCA2LCAxLCA2MiwgNDAsIDE1MiwgNiwgMSwgMjUyLCAxMzgsIDQwLCAxNTIsIDYsIDEsIDIzOSwgOSwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjUxLCA5NiwgNDAsIDE1MiwgNiwgMSwgMjM5LCA3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE3NiwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM5LCA0LCA0MCwgMTUyLCA2LCAxLCAyMzksIDMsIDQwLCAxNTIsIDYsIDEsIDI1MSwgNzksIDQwLCAxNTIsIDYsIAorICAgIDEsIDcyLCA0MCwgMTUyLCA2LCAxLCAyNDYsIDExMSwgNzIsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjU1LCA0MCwgMTUyLCA2LCAKKyAgICAxLCAyMzgsIDI0OCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNDcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjQ0LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzgsIDI0MSwgNDAsIDE1MiwgNiwgMSwgNzAsIDQwLCAxNTIsIDYsIDEsIDIyOCwgMTUxLCA0MCwgMTUyLCA2LCAKKyAgICAxLCAyMzgsIDIxOSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyMTYsIDQwLCAxNTIsIDYsIDEsIDI1MSwgMTU5LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMDMsIDIzNiwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyMDksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTkyLCA0MCwgCisgICAgMTUyLCA2LCAxLCAyMzgsIDE5MCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNzksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTQzLCAKKyAgICA0MCwgMTUyLCA2LCAxLCA3NCwgNDAsIDE1MiwgNiwgMSwgMjE3LCA2MywgNDAsIDE1MiwgNiwgMSwgMjE5LCAxMjEsIDIxNywgCisgICAgMTIxLCA0MCwgMTUyLCA2LCAxLCAyMTIsIDE3MSwgMjE3LCAxMjEsIDQwLCAxNTIsIDYsIDEsIDIxNywgMTIwLCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzgsIDEzMywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxODQsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTE1LCA0MCwgCisgICAgMTUyLCA2LCAxLCAyMDksIDI1MCwgMjM4LCAxMTUsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTA0LCA0MCwgMTUyLCA2LCAxLCAKKyAgICAyMzgsIDgzLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDgxLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE1NywgNDAsIDE1MiwgNiwgMSwgCisgICAgMjM4LCA3MCwgNDAsIDE1MiwgNiwgMSwgMjM5LCA1LCA0MCwgMTUyLCA2LCAxLCA2NiwgNDAsIDE1MiwgNiwgMSwgMjAzLCAKKyAgICAxODIsIDQwLCAxNTIsIDYsIDEsIDIxOSwgMTIxLCAyMDQsIDMxLCA0MCwgMTUyLCA2LCAxLCAyMTIsIDE3MSwgMjA0LCAzMSwgCisgICAgNDAsIDE1MiwgNiwgMSwgMjM4LCA1NywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMiwgNDAsIDE1MiwgNiwgMSwgMjM4LCA3LCAKKyAgICA0MCwgMTUyLCA2LCAxLCAyMzgsIDE1NiwgNTQsIDQwLCAxNTIsIDYsIDEsIDIwMywgMTk3LCA0MCwgMTUyLCA0LCAxLCA2MiwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjUyLCAxMzgsIDQwLCAxNTIsIDQsIDEsIDIzOSwgOSwgNDAsIDE1MiwgNCwgMSwgMjUxLCA5NiwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCA3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE3NiwgNDAsIDE1MiwgNCwgMSwgMjM5LCA0LCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDMsIDQwLCAxNTIsIDQsIDEsIDI1MSwgNzksIDQwLCAxNTIsIDQsIDEsIDcyLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyNDYsIDExMSwgNzIsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjU1LCA0MCwgMTUyLCA0LCAxLCAyMzgsIAorICAgIDI0OCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNDcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjQ0LCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMzgsIDI0MSwgNDAsIDE1MiwgNCwgMSwgNzAsIDQwLCAxNTIsIDQsIDEsIDIyOCwgMTUxLCA0MCwgMTUyLCA0LCAxLCAyMzgsIAorICAgIDIxOSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyMTYsIDQwLCAxNTIsIDQsIDEsIDI1MSwgMTU5LCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMDMsIDIzNiwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyMDksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTkyLCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMzgsIDE5MCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNzksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTQzLCA0MCwgMTUyLCAKKyAgICA0LCAxLCA3NCwgNDAsIDE1MiwgNCwgMSwgMjE3LCA2MywgNDAsIDE1MiwgNCwgMSwgMjE5LCAxMjEsIDIxNywgMTIxLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyMTIsIDE3MSwgMjE3LCAxMjEsIDQwLCAxNTIsIDQsIDEsIDIxNywgMTIwLCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMzgsIDEzMywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxODQsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTE1LCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMDksIDI1MCwgMjM4LCAxMTUsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTA0LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDgzLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzgsIDgxLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE1NywgNDAsIDE1MiwgNCwgMSwgMjM4LCA3MCwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCA1LCA0MCwgMTUyLCA0LCAxLCA2NiwgNDAsIDE1MiwgNCwgMSwgMjAzLCAxODIsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDIxOSwgMTIxLCAyMDQsIDMxLCA0MCwgMTUyLCA0LCAxLCAyMTIsIDE3MSwgMjA0LCAzMSwgNDAsIDE1MiwgCisgICAgNCwgMSwgMjM4LCA1NywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMiwgNDAsIDE1MiwgNCwgMSwgMjM4LCA3LCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMzgsIDE1NiwgNTQsIDQwLCAxNTIsIDQsIDEsIDIwMywgMTk3LCA0MCwgMTUyLCA0MSwgMTAyLCA0MCwgMTUyLCA0MSwgCisgICAgMTY0LCA0MCwgMTUyLCA0MSwgMjA2LCAxNjYsIDQwLCAxNTIsIDQxLCAyMzcsIDEwNCwgNDAsIDE1MiwgNDEsIDExMiwgMjMzLCAKKyAgICA4MiwgNDAsIDE1MiwgNDEsIDExMiwgMjA2LCA1MCwgMjEyLCAxNTksIDE3LCAxMDIsIDIxMiwgMTU5LCAxNywgMTA1LCAyMTIsIAorICAgIDE1OSwgMTcsIDE0NywgMjEyLCAxNTksIDE3LCAxNDksIDIxMiwgMTU5LCAxNywgMTY0LCAyMTIsIDE1OSwgMTcsIDE4NywgCisgICAgMjEyLCAxNTksIDE3LCAyMTAsIDEzNSwgMjEyLCAxNTksIDE3LCAxOTIsIDIxMiwgMTU5LCAxNywgMjE5LCAxMTMsIDIxMiwgCisgICAgMTU5LCA0MSwgMjA2LCAxNjYsIDIxMiwgMTU5LCA0MSwgMjA0LCAxNTksIDIxMiwgMTU5LCA0MSwgMjA2LCA2NywgMjEyLCAKKyAgICAxNTksIDQxLCAyMzYsIDIzNSwgMjEyLCAxNTksIDQxLCAyMzcsIDEwNCwgMjEyLCAxNTksIDQxLCAyMDksIDkyLCAyMTIsIAorICAgIDE1OSwgNDEsIDIxMCwgMTI5LCAyMTIsIDE1OSwgNDEsIDIzOCwgMjIyLCAyMTIsIDE1OSwgNDEsIDIxOSwgMTA4LCAyMTIsIAorICAgIDE1OSwgNDEsIDExMiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAxMjAsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMTI2LCAKKyAgICAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIzNywgNjEsIDIzMywgODIsIAorICAgIDIxMiwgMTU5LCA0MSwgMjA5LCAxMDYsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDIxMiwgCisgICAgMTU5LCA0MSwgMjM4LCAyMzIsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDIxMiwgMTU5LCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjEyLCAxNTksIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDIxMiwgMTU5LCAyMzYsIAorICAgIDIxOSwgMTEyLCAyMDYsIDc0LCAyMTIsIDE1OSwgMjM2LCAyMTksIDEyMCwgMjA2LCA3MSwgMTUxLCAyLCAyNDcsIDE0OSwgCisgICAgMTUxLCAyLCAyNTEsIDMzLCAxNTEsIDIsIDIwMiwgMjAzLCAxNTEsIDIsIDIyNywgMjAxLCAxNTEsIDIsIDIwMywgMjI2LCAKKyAgICAxNTEsIDEsIDYyLCAxNTEsIDEsIDI1MiwgMTM4LCAxNTEsIDEsIDcwLCAxNTEsIDEsIDIyOCwgMTUxLCAxNTEsIDEsIDY2LCAKKyAgICAxNTEsIDEsIDIwMywgMTgyLCAxNTEsIDEsIDEwOSwgMTQ2LCAxNTEsIDEsIDEwOSwgMjEyLCAyMTYsIDE1MSwgMSwgMTA5LCAKKyAgICAxNTYsIDE1MSwgMSwgMTA5LCAyMjQsIDEzOSwgMTUxLCAxLCA3MiwgMTUxLCAxLCAyNTEsIDE3NiwgMTUxLCAxLCA3NCwgCisgICAgMTUxLCAxLCAyNTAsIDEzOSwgMTUxLCAxLCAxNjEsIDE1MSwgMSwgMjI2LCAyMDcsIDE1MSwgMSwgMjM2LCA4OSwgMTUxLCAxLCAKKyAgICAyMzUsIDE5OSwgMTUxLCAxLCAyMTksIDI1MywgMTUxLCAxLCAyNDcsIDE5MCwgMTUxLCAxLCAyNDcsIDM3LCAxNTEsIDEsIAorICAgIDIyNywgMjQ4LCAxNTEsIDEsIDIyNywgMjE1LCAxNTEsIDEsIDIxOCwgNjAsIDE1MSwgMSwgMjA0LCAyNTMsIDE1MSwgMSwgCisgICAgMjA0LCAyNDEsIDE1MSwgMSwgMjQxLCAyMjAsIDE1MSwgMSwgMjQxLCAyMDQsIDE1MSwgMSwgMjE5LCAyMSwgMTUxLCAxLCAKKyAgICAyMDcsIDM2LCAxNTEsIDEsIDIwNiwgMTIyLCAxNTEsIDEsIDI0MiwgNTgsIDE1MSwgMSwgMjQxLCAxMDAsIDE1MSwgMSwgCisgICAgMTg4LCAxNTEsIDEsIDE3MiwgMTUxLCAxLCAyMTUsIDI0NSwgMTUxLCAxLCAyNDksIDEzNiwgMTUxLCAxLCAyNDgsIDIwMCwgCisgICAgMTUxLCAxLCAxNzgsIDE1MSwgMSwgMTgzLCAxNTEsIDEsIDIxMywgMjUyLCAxNTEsIDEsIDE5NCwgMTUxLCAxLCAyMDMsIDkwLCAKKyAgICAxNTEsIDEsIDIxMCwgMTE0LCAxNTEsIDEsIDIwOCwgMTc5LCAxNTEsIDEsIDIxMiwgNjQsIDE1MSwgMSwgMTQ0LCAxNTEsIDEsIAorICAgIDIyNCwgMTM4LCAxNTEsIDEsIDQwLCA0NSwgMjI0LCAxMjksIDE1MSwgMSwgNDAsIDQ1LCAyMTIsIDIxNSwgMTUxLCAxLCA0MCwgCisgICAgNDUsIDIxOSwgMywgMTUxLCAyMiwgMiwgMjUyLCAxMzgsIDE1MSwgMjIsIDIsIDI0OCwgMTk3LCAyNTIsIDEzOCwgMTUxLCAKKyAgICAyMiwgMiwgNzAsIDE1MSwgMjIsIDIsIDIyOCwgMTUxLCAxNTEsIDIyLCAyLCA2NiwgMTUxLCAyMiwgMiwgMjAzLCAxODIsIAorICAgIDE1MSwgMjIsIDIsIDEwOSwgMTQ2LCAxNTEsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNTEsIDIyLCAyLCAxMDksIDE1NiwgCisgICAgMTUxLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTUxLCAyMiwgMiwgNzIsIDE1MSwgMjIsIDIsIDI1MSwgMTc2LCAxNTEsIDIyLCAKKyAgICAyLCA3NCwgMTUxLCAyMiwgMiwgMjUwLCAxMzksIDE1MSwgMjAyLCAyMDgsIDE1MSwgMjQyLCAxMCwgMTUxLCA1MywgMjQyLCAKKyAgICAxMCwgMTUxLCAyMTQsIDIxMiwgMjQwLCAxODIsIDE1MSwgMjE0LCAyMTIsIDUzLCAyNDAsIDE4MiwgMTUxLCAyMTQsIDIxMiwgCisgICAgMjI0LCAxNzYsIDE1MSwgMjE0LCAyMTIsIDI0MiwgMjQ0LCAxNDgsIDE1MSwgMjE0LCAyMTIsIDIyNCwgNjQsIDE1MSwgNDEsIAorICAgIDEwMiwgMTUxLCA0MSwgMTA1LCAxNTEsIDQxLCAxNDcsIDE1MSwgNDEsIDE0OSwgMTUxLCA0MSwgMTY0LCAxNTEsIDQxLCAKKyAgICAxODcsIDE1MSwgNDEsIDIxMCwgMTM1LCAxNTEsIDQxLCAxOTIsIDE1MSwgNDEsIDIxOSwgMTEzLCAxNTEsIDQxLCAyMDYsIAorICAgIDE2NiwgMTUxLCA0MSwgMjA0LCAxNTksIDE1MSwgNDEsIDIwNiwgNjcsIDE1MSwgNDEsIDIzNiwgMjM1LCAxNTEsIDQxLCAKKyAgICAyMzcsIDEwNCwgMTUxLCA0MSwgMjA5LCA5MiwgMTUxLCA0MSwgMjEwLCAxMjksIDE1MSwgNDEsIDIzOCwgMjIyLCAxNTEsIAorICAgIDQxLCAyMTksIDEwOCwgMTUxLCA0MSwgMTEyLCAyMzMsIDgyLCAxNTEsIDQxLCAxMTIsIDIwNiwgNTAsIDE1MSwgMTcsIDE5OSwgCisgICAgODEsIDE1MSwgMTcsIDEwMiwgMTUxLCAxNywgMTA1LCAxNTEsIDE3LCAxNDcsIDE1MSwgMTcsIDE0OSwgMTUxLCAxNywgMTY0LCAKKyAgICAxNTEsIDE3LCAxODcsIDE1MSwgMTcsIDIxMCwgMTM1LCAxNTEsIDE3LCAxOTIsIDE1MSwgMTcsIDIxOSwgMTEzLCAxNTEsIAorICAgIDQxLCAyMjcsIDE2MSwgMjI3LCA3OSwgMiwgMjQ3LCAxNDksIDIyNywgNzksIDIsIDI1MSwgMzMsIDIyNywgNzksIDIsIDIwMiwgCisgICAgMjAzLCAyMjcsIDc5LCAxLCA2MiwgMjI3LCA3OSwgMSwgMjUyLCAxMzgsIDIyNywgNzksIDEsIDcwLCAyMjcsIDc5LCAxLCAKKyAgICAyMjgsIDE1MSwgMjI3LCA3OSwgMSwgNjYsIDIyNywgNzksIDEsIDIwMywgMTgyLCAyMjcsIDc5LCAxLCA3MiwgMjI3LCA3OSwgCisgICAgMSwgMjUxLCAxNzYsIDIyNywgNzksIDEsIDc0LCAyMjcsIDc5LCAxLCAyNTAsIDEzOSwgMjI3LCA3OSwgMSwgMTYxLCAyMjcsIAorICAgIDc5LCAxLCAyMjYsIDIwNywgMjI3LCA3OSwgMSwgMjM2LCA4OSwgMjI3LCA3OSwgMSwgMjM1LCAxOTksIDIyNywgNzksIDEsIAorICAgIDIxOSwgMjUzLCAyMjcsIDc5LCAxLCAyNDcsIDE5MCwgMjI3LCA3OSwgMSwgMjQ3LCAzNywgMjI3LCA3OSwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNywgNzksIDEsIDIyNywgMjE1LCAyMjcsIDc5LCAxLCAyMTgsIDYwLCAyMjcsIDc5LCAxLCAyMDQsIDI1MywgCisgICAgMjI3LCA3OSwgMSwgMjA0LCAyNDEsIDIyNywgNzksIDEsIDI0MSwgMjIwLCAyMjcsIDc5LCAxLCAyNDEsIDIwOSwgMjI3LCAKKyAgICA3OSwgMSwgMjQxLCAyMDQsIDIyNywgNzksIDEsIDIxMywgOTMsIDIyNywgNzksIDEsIDIxOSwgMjEsIDIyNywgNzksIDEsIAorICAgIDIwNywgMzYsIDIyNywgNzksIDEsIDIwNiwgMTIyLCAyMjcsIDc5LCAxLCAyNDIsIDU4LCAyMjcsIDc5LCAxLCAyNDEsIDEwMCwgCisgICAgMjI3LCA3OSwgMSwgMTg4LCAyMjcsIDc5LCAxLCAxNzIsIDIyNywgNzksIDEsIDIxNSwgMjQ1LCAyMjcsIDc5LCAxLCAyNDksIAorICAgIDEzNiwgMjI3LCA3OSwgMSwgMjQ4LCAyMDAsIDIyNywgNzksIDEsIDE3OCwgMjI3LCA3OSwgMSwgMTgzLCAyMjcsIDc5LCAxLCAKKyAgICAyMTMsIDI1MiwgMjI3LCA3OSwgMSwgMTk0LCAyMjcsIDc5LCAxLCAyMDMsIDkwLCAyMjcsIDc5LCAxLCAyMTAsIDExNCwgCisgICAgMjI3LCA3OSwgMSwgMjA4LCAxNzksIDIyNywgNzksIDEsIDIxMiwgNjQsIDIyNywgNzksIDEsIDE0NCwgMjI3LCA3OSwgMjIsIAorICAgIDIsIDI1MiwgMTM4LCAyMjcsIDc5LCAyMiwgMiwgNzAsIDIyNywgNzksIDIyLCAyLCAyMjgsIDE1MSwgMjI3LCA3OSwgMjIsIAorICAgIDIsIDY2LCAyMjcsIDc5LCAyMiwgMiwgMjAzLCAxODIsIDIyNywgNzksIDIyLCAyLCA3MiwgMjI3LCA3OSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMjcsIDc5LCAyMiwgMiwgNzQsIDIyNywgNzksIDIyLCAyLCAyNTAsIDEzOSwgMjI3LCA3OSwgMiwgMjAyLCAyMDgsIAorICAgIDIyNywgNzksIDIsIDIxOCwgMTAwLCAyMjcsIDc5LCAyNTIsIDMsIDU0LCAyMjcsIDc5LCAyMzgsIDE0NiwgNTQsIDIyNywgCisgICAgNzksIDQxLCA1NCwgMjI3LCA3OSwgMjExLCAxOTMsIDgxLCAyMjcsIDc5LCA1MywgMjExLCAxOTMsIDgxLCAyMjcsIDc5LCAKKyAgICAyNDIsIDEwLCAyMjcsIDc5LCA1MywgMjQyLCAxMCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTIsIDQ3LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDEsIDIwNywgOSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDksIDEwNywgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDcsIAorICAgIDE3OSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDIsIDM4LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzNiwgNzQsIDIwOSwgNiwgCisgICAgMjA5LCAxNCwgMSwgMjIyLCAyMDYsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE5LCAyNTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjI1LCAxNTIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjIwLCAxNDQsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjAzLCA4NiwgMjA5LCAKKyAgICA2LCAyMDksIDE0LCAxLCAyMTYsIDE5MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDAsIDkwLCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDIxMywgMjMxLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzNCwgMjI0LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyNywgODQsIDIwOSwgCisgICAgNiwgMjA5LCAxNCwgMSwgMjI3LCAyNDIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE4LCA1NywgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyNTEsIDE4NSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzgsIDI1MywgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjgsIDE1MiwgCisgICAgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDQsIDI1LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxNywgMTA4LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDEsIDIzOCwgMjQxLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyMiwgMjE5LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxOTksIAorICAgIDgxLCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxMDIsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDEwNSwgMjA5LCA2LCAyMDksIDE0LCAKKyAgICAxNywgMTQ3LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxNDksIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE2NCwgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxNywgMTg3LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAyMTAsIDEzNSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTkyLCAKKyAgICAyMDksIDYsIDIwOSwgMTQsIDE3LCAyMTksIDExMywgMjQ3LCAzMSwgMiwgMjQ3LCAxNDksIDI0NywgMzEsIDIsIDI1MSwgMzMsIAorICAgIDI0NywgMzEsIDIsIDIwMiwgMjAzLCAyNDcsIDMxLCAxLCAyNTIsIDEzOCwgMjQ3LCAzMSwgMSwgNzAsIDI0NywgMzEsIDEsIAorICAgIDY2LCAyNDcsIDMxLCAxLCA3MiwgMjQ3LCAzMSwgMSwgMjI3LCAxMDUsIDI0NywgMzEsIDEsIDIyNiwgMjA2LCAyNDcsIDMxLCAKKyAgICAxLCAyMzYsIDg2LCAyNDcsIDMxLCAxLCAyMzUsIDE5OCwgMjQ3LCAzMSwgMSwgMjE5LCAyNTIsIDI0NywgMzEsIDEsIDI0NywgCisgICAgMTg5LCAyNDcsIDMxLCAxLCAyNDcsIDM2LCAyNDcsIDMxLCAxLCAyMjcsIDI0NywgMjQ3LCAzMSwgMSwgMjI3LCAyMTQsIAorICAgIDI0NywgMzEsIDEsIDIxOCwgNTksIDI0NywgMzEsIDEsIDIwNCwgMjUyLCAyNDcsIDMxLCAxLCAyMDQsIDI0MCwgMjQ3LCAzMSwgCisgICAgMSwgMjQxLCAyMTksIDI0NywgMzEsIDEsIDI0MSwgMjAzLCAyNDcsIDMxLCAxLCAyMTksIDIwLCAyNDcsIDMxLCAxLCAyMDcsIAorICAgIDMyLCAyNDcsIDMxLCAxLCAyMDYsIDEyMSwgMjQ3LCAzMSwgMSwgMjQyLCA1NywgMjQ3LCAzMSwgMSwgMjQxLCA5OSwgMjQ3LCAKKyAgICAzMSwgMSwgMjIwLCAxNTcsIDI0NywgMzEsIDEsIDIxNiwgMjEwLCAyNDcsIDMxLCAxLCAyMTUsIDI0NCwgMjQ3LCAzMSwgMSwgCisgICAgMjQ5LCAxMzQsIDI0NywgMzEsIDEsIDI0OCwgMTk5LCAyNDcsIDMxLCAxLCAyMjIsIDIzMywgMjQ3LCAzMSwgMSwgMTk5LCAKKyAgICAxNjUsIDI0NywgMzEsIDEsIDIwMCwgMTA5LCAyNDcsIDMxLCAxLCAyMTMsIDI0OCwgMjQ3LCAzMSwgMSwgMjI1LCAxNzUsIAorICAgIDI0NywgMzEsIDEsIDIwMSwgMTEzLCAyNDcsIDMxLCAxLCAyMTIsIDYxLCAyNDcsIDMxLCAxLCAyMzQsIDIzMywgMjQ3LCAzMSwgCisgICAgMjIsIDIsIDYyLCAyNDcsIDMxLCAyMiwgMiwgNzAsIDI0NywgMzEsIDIyLCAyLCAyMjgsIDE1MSwgMjQ3LCAzMSwgMjIsIDIsIAorICAgIDY2LCAyNDcsIDMxLCAyMiwgMiwgMjAzLCAxODIsIDI0NywgMzEsIDIyLCAyLCA3MiwgMjQ3LCAzMSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyNDcsIDMxLCAyMiwgMiwgNzQsIDI0NywgMzEsIDIyLCAyLCAyNTAsIDEzOSwgMjQ3LCAzMSwgMjIsIDIsIDIxNywgCisgICAgMTA1LCAyNDcsIDMxLCAxNjMsIDgxLCAyNDcsIDMxLCAyNTAsIDE0MCwgODEsIDI0NywgMzEsIDIwMiwgMjA4LCAyNDcsIDMxLCAKKyAgICAyMjIsIDIzMSwgMjQ3LCAzMSwgMTcsIDE5OSwgODEsIDI0NywgMzEsIDE3LCAxMDIsIDI0NywgMzEsIDE3LCAxMDUsIDI0NywgCisgICAgMzEsIDE3LCAxNDcsIDI0NywgMzEsIDE3LCAxNDksIDI0NywgMzEsIDE3LCAxNjQsIDI0NywgMzEsIDE3LCAxODcsIDI0NywgCisgICAgMzEsIDE3LCAyMTAsIDEzNSwgMjQ3LCAzMSwgMTcsIDE5MiwgMjQ3LCAzMSwgMTcsIDIxOSwgMTEzLCAyNDcsIDMxLCAyMTEsIAorICAgIDE5MywgODEsIDI0NywgMzEsIDI0MiwgMTAsIDI0NywgMzEsIDUzLCAyNDIsIDEwLCAyNDcsIDMxLCAyMTQsIDc5LCA4MSwgCisgICAgMjIyLCAyMDQsIDEsIDYyLCAyMjIsIDIwNCwgMSwgNzAsIDIyMiwgMjA0LCAxLCA2NiwgMjIyLCAyMDQsIDEsIDcyLCAyMjIsIAorICAgIDIwNCwgMSwgNzQsIDIyMiwgMjA0LCAxLCAxNjEsIDIyMiwgMjA0LCAxLCAyMjYsIDIwNywgMjIyLCAyMDQsIDEsIDIzNiwgCisgICAgODksIDIyMiwgMjA0LCAxLCAyMzUsIDE5OSwgMjIyLCAyMDQsIDEsIDI0NywgMTkwLCAyMjIsIDIwNCwgMSwgMjQ3LCAzNywgCisgICAgMjIyLCAyMDQsIDEsIDIyNywgMjQ4LCAyMjIsIDIwNCwgMSwgMjI3LCAyMTUsIDIyMiwgMjA0LCAxLCAyMTgsIDYwLCAyMjIsIAorICAgIDIwNCwgMSwgMjA0LCAyNTMsIDIyMiwgMjA0LCAxLCAyMDQsIDI0MSwgMjIyLCAyMDQsIDEsIDI0MSwgMjIwLCAyMjIsIDIwNCwgCisgICAgMSwgMjQxLCAyMDQsIDIyMiwgMjA0LCAxLCAyMTksIDIxLCAyMjIsIDIwNCwgMSwgMjA3LCAzNiwgMjIyLCAyMDQsIDEsIAorICAgIDIwNiwgMTIyLCAyMjIsIDIwNCwgMSwgMjQyLCA1OCwgMjIyLCAyMDQsIDEsIDI0MSwgMTAwLCAyMjIsIDIwNCwgMSwgMTg4LCAKKyAgICAyMjIsIDIwNCwgMSwgMTcyLCAyMjIsIDIwNCwgMSwgMjE1LCAyNDUsIDIyMiwgMjA0LCAxLCAyNDksIDEzNiwgMjIyLCAyMDQsIAorICAgIDEsIDI0OCwgMjAwLCAyMjIsIDIwNCwgMSwgMTc4LCAyMjIsIDIwNCwgMSwgMjEzLCAyNTIsIDIyMiwgMjA0LCAxLCAxOTQsIAorICAgIDIyMiwgMjA0LCAxLCAyMDMsIDkwLCAyMjIsIDIwNCwgMSwgMjEyLCA2NCwgMjIyLCAyMDQsIDEsIDE0NCwgMjIyLCAyMDQsIAorICAgIDEsIDIxMiwgMjE1LCAyMjIsIDIwNCwgMiwgMjE4LCAxMDAsIDIyMiwgMjA0LCAyNTIsIDMsIDU0LCAyMjIsIDIwNCwgMjExLCAKKyAgICAxOTMsIDgxLCAyMjIsIDIwNCwgMzMsIDIwOSwgMjI4LCAxODYsIDIsIDI0NywgMTQ5LCAxODYsIDIsIDI1MSwgMzMsIDE4NiwgCisgICAgMiwgMjAyLCAyMDMsIDE4NiwgMSwgNjIsIDE4NiwgMSwgMjUyLCAxMzgsIDE4NiwgMSwgNzAsIDE4NiwgMSwgMjI4LCAxNTEsIAorICAgIDE4NiwgMSwgNjYsIDE4NiwgMSwgMjAzLCAxODIsIDE4NiwgMSwgMTA5LCAxNDYsIDE4NiwgMSwgMTA5LCAyMTIsIDIxNiwgCisgICAgMTg2LCAxLCAxMDksIDE1NiwgMTg2LCAxLCAxMDksIDIyNCwgMTM5LCAxODYsIDEsIDcyLCAxODYsIDEsIDI1MSwgMTc2LCAKKyAgICAxODYsIDEsIDc0LCAxODYsIDEsIDI1MCwgMTM5LCAxODYsIDEsIDE2MSwgMTg2LCAxLCAyMjYsIDIwNywgMTg2LCAxLCAyMzYsIAorICAgIDg5LCAxODYsIDEsIDIzNSwgMTk5LCAxODYsIDEsIDIxOSwgMjUzLCAxODYsIDEsIDI0NywgMTkwLCAxODYsIDEsIDI0NywgCisgICAgMzcsIDE4NiwgMSwgMjI3LCAyNDgsIDE4NiwgMSwgMjI3LCAyMTUsIDE4NiwgMSwgMjE4LCA2MCwgMTg2LCAxLCAyMDQsIAorICAgIDI1MywgMTg2LCAxLCAyMDQsIDI0MSwgMTg2LCAxLCAyNDEsIDIyMCwgMTg2LCAxLCAyNDEsIDIwNCwgMTg2LCAxLCAyMTksIAorICAgIDIxLCAxODYsIDEsIDIwNywgMzYsIDE4NiwgMSwgMjA2LCAxMjIsIDE4NiwgMSwgMjQyLCA1OCwgMTg2LCAxLCAyNDEsIDEwMCwgCisgICAgMTg2LCAxLCAxODgsIDE4NiwgMSwgMTcyLCAxODYsIDEsIDIxNSwgMjQ1LCAxODYsIDEsIDI0OSwgMTM2LCAxODYsIDEsIAorICAgIDI0OCwgMjAwLCAxODYsIDEsIDE3OCwgMTg2LCAxLCAxODMsIDE4NiwgMSwgMjEzLCAyNTIsIDE4NiwgMSwgMTk0LCAxODYsIAorICAgIDEsIDIyNCwgMTM4LCAxODYsIDEsIDIwMywgOTAsIDE4NiwgMSwgMjEwLCAxMTQsIDE4NiwgMSwgMjA4LCAxNzksIDE4NiwgMSwgCisgICAgMjEyLCA2NCwgMTg2LCAxLCAxNDQsIDE4NiwgMjIsIDIsIDI1MiwgMTM4LCAxODYsIDIyLCAyLCA3MCwgMTg2LCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE4NiwgMjIsIDIsIDY2LCAxODYsIDIyLCAyLCAyMDMsIDE4MiwgMTg2LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE4NiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4NiwgMjIsIDIsIDEwOSwgMTU2LCAxODYsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAxODYsIDIyLCAyLCA3MiwgMTg2LCAyMiwgMiwgMjUxLCAxNzYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMTg2LCAyLCAyMDIsIDIwOCwgMTg2LCAyLCAyNTAsIDEyMiwgMTg2LCAyLCAyMjcsIDIwMSwgMTg2LCAyLCAKKyAgICAyMDMsIDIyNiwgMTg2LCAyMTcsIDg2LCAxODYsIDI0MiwgMTAsIDE4NiwgNTMsIDI0MiwgMTAsIDE4NiwgMjUyLCAzLCA1NCwgCisgICAgMTg2LCAyMTAsIDE1NCwgMTg2LCAyMTIsIDksIDgxLCAxODYsIDIsIDIxOCwgMTAwLCAxODYsIDIyLCA2NywgODEsIDE4NiwgCisgICAgMjM4LCAzMCwgMjA5LCAyNTAsIDIyLCA4MSwgMTg2LCAyMDcsIDE5NCwgODEsIDE4NiwgMTcsIDE5OSwgODEsIDE4NiwgMTcsIAorICAgIDEwMiwgMTg2LCAxNywgMTA1LCAxODYsIDE3LCAxNDcsIDE4NiwgMTcsIDE0OSwgMTg2LCAxNywgMTY0LCAxODYsIDE3LCAKKyAgICAxODcsIDE4NiwgMTcsIDIxMCwgMTM1LCAxODYsIDE3LCAxOTIsIDE4NiwgMTcsIDIxOSwgMTEzLCAxODYsIDIzOCwgMjE1LCAKKyAgICAxODYsIDIsIDIwOSwgMTc3LCAxODYsIDIzNCwgMTMwLCAxODYsIDI0MywgNDEsIDU0LCAxODYsIDIxMSwgMTkzLCAyMjIsIAorICAgIDE0OSwgMTg2LCAyMTEsIDE5MywgMjIyLCAxNDgsIDE0MywgMjUwLCAyMzQsIDE3LCAxMDIsIDE0MywgMjUwLCAyMzQsIDE3LCAKKyAgICAxMDUsIDE0MywgMjUwLCAyMzQsIDE3LCAxNDcsIDE0MywgMjUwLCAyMzQsIDE3LCAxNDksIDE0MywgMjUwLCAyMzQsIDE3LCAKKyAgICAxNjQsIDE0MywgMjUwLCAyMzQsIDE3LCAxODcsIDE0MywgMjUwLCAyMzQsIDE3LCAyMTAsIDEzNSwgMTQzLCAyNTAsIDIzNCwgCisgICAgMTcsIDE5MiwgMTQzLCAyNTAsIDIzNCwgMTcsIDIxOSwgMTEzLCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA2LCAxNjYsIDE0MywgCisgICAgMjUwLCAyMzQsIDQxLCAyMDQsIDE1OSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIwNiwgNjcsIDE0MywgMjUwLCAyMzQsIDQxLCAKKyAgICAyMzYsIDIzNSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIzNywgMTA0LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA5LCA5MiwgMTQzLCAKKyAgICAyNTAsIDIzNCwgNDEsIDIxMCwgMTI5LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjM4LCAyMjIsIDE0MywgMjUwLCAyMzQsIDQxLCAKKyAgICAyMTksIDEwOCwgMTQzLCAyNTAsIDIzNCwgNDEsIDExMiwgMjMzLCA4MiwgMTQzLCAyNTAsIDIzNCwgNDEsIDExMiwgMjA2LCAKKyAgICA1MCwgMjI2LCAxNzcsIDEsIDYyLCAyMjYsIDE3NywgMSwgMjUyLCAxMzgsIDIyNiwgMTc3LCAxLCA3MCwgMjI2LCAxNzcsIDEsIAorICAgIDY2LCAyMjYsIDE3NywgMSwgNzIsIDIyNiwgMTc3LCAxLCAyNTEsIDE3NiwgMjI2LCAxNzcsIDEsIDc0LCAyMjYsIDE3NywgMSwgCisgICAgMjUwLCAxMzksIDIyNiwgMTc3LCAxLCAxNjEsIDIyNiwgMTc3LCAxLCAyMjYsIDIwNywgMjI2LCAxNzcsIDEsIDIzNiwgODksIAorICAgIDIyNiwgMTc3LCAxLCAyMzUsIDIzNSwgMjI2LCAxNzcsIDEsIDIzNSwgMTk5LCAyMjYsIDE3NywgMSwgMjE5LCAyNTMsIDIyNiwgCisgICAgMTc3LCAxLCAyNDcsIDE5MCwgMjI2LCAxNzcsIDEsIDI0NywgMzcsIDIyNiwgMTc3LCAxLCAyMjcsIDI0OCwgMjI2LCAxNzcsIAorICAgIDEsIDIyNywgMTk0LCAyMjYsIDE3NywgMSwgMjE4LCA2MCwgMjI2LCAxNzcsIDEsIDIwNCwgMjUzLCAyMjYsIDE3NywgMSwgCisgICAgMjA0LCAyNDEsIDIyNiwgMTc3LCAxLCAyNDEsIDIyMCwgMjI2LCAxNzcsIDEsIDI0MSwgMjA0LCAyMjYsIDE3NywgMSwgMjE5LCAKKyAgICAyMSwgMjI2LCAxNzcsIDEsIDIwNywgMzYsIDIyNiwgMTc3LCAxLCAyMDYsIDEyMiwgMjI2LCAxNzcsIDEsIDI0MiwgNTgsIAorICAgIDIyNiwgMTc3LCAxLCAyNDEsIDIxMCwgMjI2LCAxNzcsIDEsIDI0MSwgMTAwLCAyMjYsIDE3NywgMSwgMTg4LCAyMjYsIDE3NywgCisgICAgMSwgMTcyLCAyMjYsIDE3NywgMSwgMjE1LCAyNDUsIDIyNiwgMTc3LCAxLCAyNDksIDEzNiwgMjI2LCAxNzcsIDEsIDI0OSwgCisgICAgNDQsIDIyNiwgMTc3LCAxLCAyNDgsIDIwMCwgMjI2LCAxNzcsIDEsIDE3OCwgMjI2LCAxNzcsIDEsIDE4MywgMjI2LCAxNzcsIAorICAgIDEsIDIxMywgMjUyLCAyMjYsIDE3NywgMSwgMTk0LCAyMjYsIDE3NywgMSwgMjAzLCA5MCwgMjI2LCAxNzcsIDEsIDIxMiwgCisgICAgNjQsIDIyNiwgMTc3LCAxLCAxNDQsIDIyNiwgMTc3LCAxLCAyMjQsIDEzOCwgMjI2LCAxNzcsIDIyLCAyLCAyNTIsIDEzOCwgCisgICAgMjI2LCAxNzcsIDIyLCAyLCA3MCwgMjI2LCAxNzcsIDIyLCAyLCAyMjgsIDE1MSwgMjI2LCAxNzcsIDIyLCAyLCA2NiwgMjI2LCAKKyAgICAxNzcsIDIyLCAyLCA3MiwgMjI2LCAxNzcsIDIyLCAyLCAyNTEsIDE3NiwgMjI2LCAxNzcsIDIyLCAyLCA3NCwgMjI2LCAxNzcsIAorICAgIDIyLCAyLCAyNTAsIDEzOSwgMjI2LCAxNzcsIDIsIDI1MSwgMzMsIDIyNiwgMTc3LCAyLCAyMDIsIDIwOCwgMjI2LCAxNzcsIAorICAgIDIsIDIxOCwgMTAwLCAyMjYsIDE3NywgMiwgMjEwLCAxMDQsIDIyNiwgMTc3LCAyNDIsIDEwLCAyMjYsIDE3NywgNTMsIDI0MiwgCisgICAgMTAsIDIyNiwgMTc3LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDIyNiwgMTc3LCAyMTEsIDE5MywgODEsIDIyNiwgMTc3LCA1MywgCisgICAgMjExLCAxOTMsIDgxLCAyMjYsIDE3NywgMjUyLCAzLCA1NCwgMjI2LCAxNzcsIDIsIDIwNywgMjM2LCAyMjEsIDI1LCAxLCAKKyAgICA2MiwgMjIxLCAyNSwgMSwgNzAsIDIyMSwgMjUsIDEsIDY2LCAyMjEsIDI1LCAxLCA3MiwgMjIxLCAyNSwgMSwgMTYxLCAyMjEsIAorICAgIDI1LCAxLCAyMjYsIDIwNywgMjIxLCAyNSwgMSwgMjM2LCA4OSwgMjIxLCAyNSwgMSwgMjM1LCAxOTksIDIyMSwgMjUsIDEsIAorICAgIDI0NywgMTkwLCAyMjEsIDI1LCAxLCAyNDcsIDM3LCAyMjEsIDI1LCAxLCAyMjcsIDI0OCwgMjIxLCAyNSwgMSwgMjI3LCAKKyAgICAxOTQsIDIyMSwgMjUsIDEsIDIxOCwgNjAsIDIyMSwgMjUsIDEsIDIwNCwgMjUzLCAyMjEsIDI1LCAxLCAyMDQsIDI0MSwgCisgICAgMjIxLCAyNSwgMSwgMjQxLCAyMjAsIDIyMSwgMjUsIDEsIDI0MSwgMjEwLCAyMjEsIDI1LCAxLCAyNDEsIDIwNCwgMjIxLCAKKyAgICAyNSwgMSwgMjE5LCAyMSwgMjIxLCAyNSwgMSwgMjA3LCAzNiwgMjIxLCAyNSwgMSwgMjA2LCAxMjIsIDIyMSwgMjUsIDEsIAorICAgIDI0MiwgNTgsIDIyMSwgMjUsIDEsIDI0MSwgMTAwLCAyMjEsIDI1LCAxLCAxODgsIDIyMSwgMjUsIDEsIDE3MiwgMjIxLCAyNSwgCisgICAgMSwgMjE1LCAyNDUsIDIyMSwgMjUsIDEsIDI0OSwgMTM2LCAyMjEsIDI1LCAxLCAyNDgsIDIwMCwgMjIxLCAyNSwgMSwgMTc4LCAKKyAgICAyMjEsIDI1LCAxLCAxODMsIDIyMSwgMjUsIDEsIDIxMywgMjUyLCAyMjEsIDI1LCAxLCAxOTQsIDIyMSwgMjUsIDEsIDIwMywgCisgICAgOTAsIDIyMSwgMjUsIDEsIDIxMiwgNjQsIDIyMSwgMjUsIDEsIDE0NCwgMjIxLCAyNSwgMSwgMjEyLCAyMTUsIDIyMSwgMjUsIAorICAgIDEsIDIxMywgOTMsIDIyMSwgMjUsIDIxMSwgMTkzLCA4MSwgMjI2LCAxNjksIDEsIDYyLCAyMjYsIDE2OSwgMSwgMjUyLCAKKyAgICAxMzgsIDIyNiwgMTY5LCAxLCA3MCwgMjI2LCAxNjksIDEsIDIyOCwgMTUxLCAyMjYsIDE2OSwgMSwgNjYsIDIyNiwgMTY5LCAKKyAgICAxLCAyMDMsIDE4MiwgMjI2LCAxNjksIDEsIDcyLCAyMjYsIDE2OSwgMSwgMjUxLCAxNzYsIDIyNiwgMTY5LCAxLCA3NCwgCisgICAgMjI2LCAxNjksIDEsIDI1MCwgMTM5LCAyMjYsIDE2OSwgMSwgMTYxLCAyMjYsIDE2OSwgMSwgMjI2LCAyMDcsIDIyNiwgMTY5LCAKKyAgICAxLCAyMzYsIDg5LCAyMjYsIDE2OSwgMSwgMjM1LCAyMzUsIDIyNiwgMTY5LCAxLCAyMzUsIDE5OSwgMjI2LCAxNjksIDEsIAorICAgIDIxOSwgMjUzLCAyMjYsIDE2OSwgMSwgMjQ3LCAxOTAsIDIyNiwgMTY5LCAxLCAyNDcsIDM3LCAyMjYsIDE2OSwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNiwgMTY5LCAxLCAyMjcsIDE5NCwgMjI2LCAxNjksIDEsIDIyNywgMjE1LCAyMjYsIDE2OSwgMSwgMjE4LCA2MCwgCisgICAgMjI2LCAxNjksIDEsIDIwNCwgMjUzLCAyMjYsIDE2OSwgMSwgMjA0LCAyNDEsIDIyNiwgMTY5LCAxLCAyNDEsIDIyMCwgMjI2LCAKKyAgICAxNjksIDEsIDI0MSwgMjEwLCAyMjYsIDE2OSwgMSwgMjEyLCAyMTUsIDIyNiwgMTY5LCAxLCAyNDEsIDIwNCwgMjI2LCAxNjksIAorICAgIDEsIDIxOSwgMjEsIDIyNiwgMTY5LCAxLCAyMDcsIDM2LCAyMjYsIDE2OSwgMSwgMjA2LCAxMjIsIDIyNiwgMTY5LCAxLCAKKyAgICAyNDIsIDU4LCAyMjYsIDE2OSwgMSwgMjQxLCAxMDAsIDIyNiwgMTY5LCAxLCAxODgsIDIyNiwgMTY5LCAxLCAxNzIsIDIyNiwgCisgICAgMTY5LCAxLCAyMTUsIDI0NSwgMjI2LCAxNjksIDEsIDI0OSwgMTM2LCAyMjYsIDE2OSwgMSwgMjQ5LCA0NCwgMjI2LCAxNjksIAorICAgIDEsIDI0OCwgMjAwLCAyMjYsIDE2OSwgMSwgMTc4LCAyMjYsIDE2OSwgMSwgMTgzLCAyMjYsIDE2OSwgMSwgMjEzLCAyNTIsIAorICAgIDIyNiwgMTY5LCAxLCAxOTQsIDIyNiwgMTY5LCAxLCAyMDMsIDkwLCAyMjYsIDE2OSwgMSwgMjEwLCAxMTQsIDIyNiwgMTY5LCAKKyAgICAxLCAyMTIsIDY0LCAyMjYsIDE2OSwgMSwgMTQ0LCAyMjYsIDE2OSwgMiwgMjUxLCAzMywgMjI2LCAxNjksIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjI2LCAxNjksIDIyLCAyLCA3MCwgMjI2LCAxNjksIDIyLCAyLCAyMjgsIDE1MSwgMjI2LCAxNjksIDIyLCAyLCA2NiwgCisgICAgMjI2LCAxNjksIDIyLCAyLCAyMDMsIDE4MiwgMjI2LCAxNjksIDIyLCAyLCA3MiwgMjI2LCAxNjksIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjI2LCAxNjksIDIyLCAyLCA3NCwgMjI2LCAxNjksIDIyLCAyLCAyNTAsIDEzOSwgMjI2LCAxNjksIDIsIDIxOCwgCisgICAgMTAwLCAyMjYsIDE2OSwgMiwgMjAyLCAyMDgsIDIyNiwgMTY5LCAxNywgMTk5LCA4MSwgMjI2LCAxNjksIDE3LCAxMDIsIAorICAgIDIyNiwgMTY5LCAxNywgMTA1LCAyMjYsIDE2OSwgMTcsIDE0NywgMjI2LCAxNjksIDE3LCAxNDksIDIyNiwgMTY5LCAxNywgCisgICAgMTY0LCAyMjYsIDE2OSwgMTcsIDE4NywgMjI2LCAxNjksIDE3LCAyMTAsIDEzNSwgMjI2LCAxNjksIDE3LCAxOTIsIDIyNiwgCisgICAgMTY5LCAxNywgMjE5LCAxMTMsIDIzNSwgODIsIDIsIDM4LCAyNTEsIDM0LCA1NiwgMjM1LCA4MiwgMiwgMjQ3LCAxNDksIAorICAgIDIzNSwgODIsIDIsIDI1MSwgMzMsIDIzNSwgODIsIDIsIDIwMiwgMjAzLCAyMzUsIDgyLCAxLCA2MiwgMjM1LCA4MiwgMSwgCisgICAgMjUyLCAxMzgsIDIzNSwgODIsIDEsIDcwLCAyMzUsIDgyLCAxLCAyMjgsIDE1MSwgMjM1LCA4MiwgMSwgNjYsIDIzNSwgODIsIAorICAgIDEsIDIwMywgMTgyLCAyMzUsIDgyLCAxLCAxMDksIDE0NiwgMjM1LCA4MiwgMSwgMTA5LCAxNTYsIDIzNSwgODIsIDEsIDIzOCwgCisgICAgMjU1LCAyMzUsIDgyLCAxLCAyNTEsIDE3NiwgMjM1LCA4MiwgMSwgMjE3LCA2MywgMjM1LCA4MiwgMSwgMjUwLCAxMzksIAorICAgIDIzNSwgODIsIDEsIDE2MSwgMjM1LCA4MiwgMSwgMjI2LCAyMDcsIDIzNSwgODIsIDEsIDIzNiwgODksIDIzNSwgODIsIDEsIAorICAgIDIzNSwgMTk5LCAyMzUsIDgyLCAxLCAyMTksIDI1MywgMjM1LCA4MiwgMSwgMjQ3LCAxOTAsIDIzNSwgODIsIDEsIDI0NywgCisgICAgMzcsIDIzNSwgODIsIDEsIDIyNywgMjQ4LCAyMzUsIDgyLCAxLCAyMjcsIDIxNSwgMjM1LCA4MiwgMSwgMjE4LCA2MCwgMjM1LCAKKyAgICA4MiwgMSwgMjA0LCAyNTMsIDIzNSwgODIsIDEsIDIwNCwgMjQxLCAyMzUsIDgyLCAxLCAyNDEsIDIyMCwgMjM1LCA4MiwgMSwgCisgICAgMjQxLCAyMDQsIDIzNSwgODIsIDEsIDIxOSwgMjEsIDIzNSwgODIsIDEsIDIwNywgMzYsIDIzNSwgODIsIDEsIDIwNiwgMTIyLCAKKyAgICAyMzUsIDgyLCAxLCAyNDIsIDU4LCAyMzUsIDgyLCAxLCAyNDEsIDEwMCwgMjM1LCA4MiwgMSwgMTg4LCAyMzUsIDgyLCAxLCAKKyAgICAxNzIsIDIzNSwgODIsIDEsIDIxNSwgMjQ1LCAyMzUsIDgyLCAxLCAyNDksIDEzNiwgMjM1LCA4MiwgMSwgMjQ4LCAyMDAsIAorICAgIDIzNSwgODIsIDEsIDE3OCwgMjM1LCA4MiwgMSwgMTgzLCAyMzUsIDgyLCAxLCAyMTMsIDI1MiwgMjM1LCA4MiwgMSwgMTk0LCAKKyAgICAyMzUsIDgyLCAxLCAyMjQsIDEzOCwgMjM1LCA4MiwgMSwgMjAzLCA5MCwgMjM1LCA4MiwgMSwgMjEwLCAxMTQsIDIzNSwgODIsIAorICAgIDEsIDIwOCwgMTc5LCAyMzUsIDgyLCAxLCAyMTIsIDY0LCAyMzUsIDgyLCAxLCAxNDQsIDIzNSwgODIsIDIsIDIxOCwgMTAwLCAKKyAgICAyMzUsIDgyLCAyLCAyNTAsIDEyMiwgMjM1LCA4MiwgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDgyLCAyMiwgMiwgNzAsIDIzNSwgCisgICAgODIsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCA4MiwgMjIsIDIsIDY2LCAyMzUsIDgyLCAyMiwgMiwgMjAzLCAxODIsIDIzNSwgCisgICAgODIsIDIyLCAyLCAxMDksIDE0NiwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIzNSwgODIsIDIyLCAyLCAyMzgsIAorICAgIDI1NSwgMjM1LCA4MiwgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDgyLCAyMiwgMiwgMjE3LCA2MywgMjM1LCA4MiwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAyMzUsIDgyLCAyLCAyMDIsIDIwOCwgMjM1LCA4MiwgMjE3LCA4NiwgMjM1LCA4MiwgMjUwLCAxNDAsIDIyNSwgCisgICAgMiwgODEsIDIzNSwgODIsIDIsIDIxNSwgMTExLCAyMzUsIDgyLCAxLCAyMDMsIDU2LCAyNTEsIDMzLCAyMzUsIDgyLCAxLCAKKyAgICAyMDMsIDU2LCA1MywgMjUxLCAzMywgMjM1LCA4MiwgMSwgMTA5LCAyMTIsIDIxNiwgMjM1LCA4MiwgMSwgMTA5LCAyMjQsIAorICAgIDEzOSwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMTU2LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMzgsIDIzNSwgCisgICAgODIsIDE3LCAxOTksIDgxLCAzOCwgMjM1LCA4MiwgMTcsIDEwMiwgMzgsIDIzNSwgODIsIDE3LCAxMDUsIDM4LCAyMzUsIDgyLCAKKyAgICAxNywgMTQ3LCAzOCwgMjM1LCA4MiwgMTcsIDE0OSwgMzgsIDIzNSwgODIsIDE3LCAxNjQsIDM4LCAyMzUsIDgyLCAxNywgCisgICAgMTg3LCAzOCwgMjM1LCA4MiwgMSwgNjIsIDM4LCAyMzUsIDgyLCAxLCAxNjEsIDM4LCAyMzUsIDgyLCAxLCAxODgsIDM4LCAKKyAgICAyMzUsIDgyLCAxLCAyMDIsIDIzNCwgMzgsIDIzNSwgODIsIDEsIDE3MiwgMTk1LCAxLCA2MiwgMTk1LCAxLCAyNTIsIDEzOCwgCisgICAgMTk1LCAxLCA3MCwgMTk1LCAxLCAyMjgsIDE1MSwgMTk1LCAxLCA2NiwgMTk1LCAxLCAyMDMsIDE4MiwgMTk1LCAxLCAxMDksIAorICAgIDE0NiwgMTk1LCAxLCAxMDksIDIxMiwgMjE2LCAxOTUsIDEsIDEwOSwgMTU2LCAxOTUsIDEsIDEwOSwgMjI0LCAxMzksIDE5NSwgCisgICAgMSwgNzIsIDE5NSwgMSwgMjUxLCAxNzYsIDE5NSwgMSwgNzQsIDE5NSwgMSwgMjUwLCAxMzksIDE5NSwgMSwgMTYxLCAxOTUsIAorICAgIDEsIDIyNiwgMjA3LCAxOTUsIDEsIDIzNiwgODksIDE5NSwgMSwgMjM1LCAxOTksIDE5NSwgMSwgMjE5LCAyNTMsIDE5NSwgMSwgCisgICAgMjE5LCAyMDIsIDE5NSwgMSwgMjQ3LCAxOTAsIDE5NSwgMSwgMjQ3LCAzNywgMTk1LCAxLCAyMjcsIDI0OCwgMTk1LCAxLCAKKyAgICAyMjcsIDIxNSwgMTk1LCAxLCAyMTgsIDYwLCAxOTUsIDEsIDIxOCwgNDMsIDE5NSwgMSwgMjA0LCAyNTMsIDE5NSwgMSwgCisgICAgMjA0LCAyNDEsIDE5NSwgMSwgMjQxLCAyMjAsIDE5NSwgMSwgMjQxLCAyMDQsIDE5NSwgMSwgMjE5LCAyMSwgMTk1LCAxLCAKKyAgICAyMDcsIDM2LCAxOTUsIDEsIDIwNiwgMTIyLCAxOTUsIDEsIDI0MiwgNTgsIDE5NSwgMSwgMjQxLCAxMDAsIDE5NSwgMSwgCisgICAgMTg4LCAxOTUsIDEsIDIxOSwgMTU0LCAxOTUsIDEsIDE3MiwgMTk1LCAxLCAyMTUsIDI0NSwgMTk1LCAxLCAyNDksIDEzNiwgCisgICAgMTk1LCAxLCAyNDgsIDIwMCwgMTk1LCAxLCAxNzgsIDE5NSwgMSwgMjIxLCAyMTQsIDE5NSwgMSwgMTgzLCAxOTUsIDEsIAorICAgIDIxMywgMjUyLCAxOTUsIDEsIDIxMywgOTMsIDE5NSwgMSwgMTk0LCAxOTUsIDEsIDIyNCwgMjIzLCAxOTUsIDEsIDIwMSwgCisgICAgMTE0LCAxOTUsIDEsIDIxMCwgMTE0LCAxOTUsIDEsIDIwOCwgMTc5LCAxOTUsIDEsIDIxMiwgNjQsIDE5NSwgMSwgMTQ0LCAKKyAgICAxOTUsIDIyLCAyLCAyNTIsIDEzOCwgMTk1LCAyMiwgMiwgNzAsIDE5NSwgMjIsIDIsIDIyOCwgMTUxLCAxOTUsIDIyLCAyLCAKKyAgICA2NiwgMTk1LCAyMiwgMiwgMjAzLCAxODIsIDE5NSwgMjIsIDIsIDEwOSwgMTQ2LCAxOTUsIDIyLCAyLCAxMDksIDIxMiwgCisgICAgMjE2LCAxOTUsIDIyLCAyLCAxMDksIDE1NiwgMTk1LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTk1LCAyMiwgMiwgNzIsIAorICAgIDE5NSwgMjIsIDIsIDI1MSwgMTc2LCAxOTUsIDIyLCAyLCA3NCwgMTk1LCAyMiwgMiwgMjUwLCAxMzksIDE5NSwgMiwgMjAyLCAKKyAgICAyMDgsIDE5NSwgMiwgMjQ3LCAxNDksIDE5NSwgMiwgMjUxLCAzMywgMTk1LCAyLCAyMDIsIDIwMywgMTk1LCAyLCAyMTgsIAorICAgIDEwMCwgMTk1LCAyLCAyNTAsIDEyMiwgMTk1LCAyLCA0NywgMjUxLCAzMywgMTk1LCAyMTcsIDg2LCAxOTUsIDIwOSwgMTc2LCAKKyAgICAxOTUsIDI0MiwgMTAsIDE5NSwgNTMsIDI0MiwgMTAsIDE5NSwgMjQ2LCA3MCwgMTk1LCAyMzYsIDUzLCAyMzcsIDkzLCAxOTUsIAorICAgIDI1MiwgMywgNTQsIDE5NSwgMTcsIDE5OSwgODEsIDE5NSwgMTcsIDEwMiwgMTk1LCAxNywgMTA1LCAxOTUsIDE3LCAxNDcsIAorICAgIDE5NSwgMTcsIDE0OSwgMTk1LCAxNywgMTY0LCAxOTUsIDE3LCAxODcsIDE5NSwgMTcsIDIxMCwgMTM1LCAxOTUsIDE3LCAKKyAgICAxOTIsIDE5NSwgMTcsIDIxOSwgMTEzLCAxOTUsIDIxNSwgMTMzLCA4MSwgMTk1LCAyMjgsIDc1LCA1NCwgMjA1LCAyMTcsIAorICAgIDI1MSwgNjIsIDIwNSwgMjE3LCAxLCA2MiwgMjA1LCAyMTcsIDEsIDI1MiwgMTM4LCAyMDUsIDIxNywgMSwgNzAsIDIwNSwgCisgICAgMjE3LCAxLCAyMjgsIDE1MSwgMjA1LCAyMTcsIDEsIDY2LCAyMDUsIDIxNywgMSwgMjAzLCAxODIsIDIwNSwgMjE3LCAxLCAKKyAgICAxMDksIDE0NiwgMjA1LCAyMTcsIDEsIDEwOSwgMjEyLCAyMTYsIDIwNSwgMjE3LCAxLCAxMDksIDE1NiwgMjA1LCAyMTcsIDEsIAorICAgIDEwOSwgMjI0LCAxMzksIDIwNSwgMjE3LCAxLCA3MiwgMjA1LCAyMTcsIDEsIDI1MSwgMTc2LCAyMDUsIDIxNywgMSwgNzQsIAorICAgIDIwNSwgMjE3LCAxLCAyNTAsIDEzOSwgMjA1LCAyMTcsIDEsIDE2MSwgMjA1LCAyMTcsIDEsIDIyNiwgMjA3LCAyMDUsIDIxNywgCisgICAgMSwgMjM2LCA4OSwgMjA1LCAyMTcsIDEsIDIzNSwgMTk5LCAyMDUsIDIxNywgMSwgMjE5LCAyNTMsIDIwNSwgMjE3LCAxLCAKKyAgICAyNDcsIDE5MCwgMjA1LCAyMTcsIDEsIDI0NywgMzcsIDIwNSwgMjE3LCAxLCAyMjcsIDI0OCwgMjA1LCAyMTcsIDEsIDIyNywgCisgICAgMjE1LCAyMDUsIDIxNywgMSwgMjE4LCA2MCwgMjA1LCAyMTcsIDEsIDIwNCwgMjUzLCAyMDUsIDIxNywgMSwgMjA0LCAyNDEsIAorICAgIDIwNSwgMjE3LCAxLCAyNDEsIDIyMCwgMjA1LCAyMTcsIDEsIDI0MSwgMjA0LCAyMDUsIDIxNywgMSwgMjE5LCAyMSwgMjA1LCAKKyAgICAyMTcsIDEsIDIwNywgMzYsIDIwNSwgMjE3LCAxLCAyMDYsIDEyMiwgMjA1LCAyMTcsIDEsIDI0MiwgNTgsIDIwNSwgMjE3LCAKKyAgICAxLCAyNDEsIDEwMCwgMjA1LCAyMTcsIDEsIDE4OCwgMjA1LCAyMTcsIDEsIDE3MiwgMjA1LCAyMTcsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMDUsIDIxNywgMSwgMjQ5LCAxMzYsIDIwNSwgMjE3LCAxLCAyNDgsIDIwMCwgMjA1LCAyMTcsIDEsIDE3OCwgMjA1LCAyMTcsIAorICAgIDEsIDE4MywgMjA1LCAyMTcsIDEsIDIxMywgMjUyLCAyMDUsIDIxNywgMSwgMTk0LCAyMDUsIDIxNywgMSwgMjAzLCA5MCwgCisgICAgMjA1LCAyMTcsIDEsIDIxMCwgMTE0LCAyMDUsIDIxNywgMSwgMjA4LCAxNzksIDIwNSwgMjE3LCAxLCAyMTIsIDY0LCAyMDUsIAorICAgIDIxNywgMSwgMTQ0LCAyMDUsIDIxNywgMjIsIDIsIDI1MiwgMTM4LCAyMDUsIDIxNywgMjIsIDIsIDcwLCAyMDUsIDIxNywgCisgICAgMjIsIDIsIDIyOCwgMTUxLCAyMDUsIDIxNywgMjIsIDIsIDY2LCAyMDUsIDIxNywgMjIsIDIsIDIwMywgMTgyLCAyMDUsIAorICAgIDIxNywgMjIsIDIsIDEwOSwgMTQ2LCAyMDUsIDIxNywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIwNSwgMjE3LCAyMiwgMiwgCisgICAgMTA5LCAxNTYsIDIwNSwgMjE3LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjA1LCAyMTcsIDIyLCAyLCA3MiwgMjA1LCAyMTcsIAorICAgIDIyLCAyLCAyMDksIDI1MCwgNzIsIDIwNSwgMjE3LCAyMiwgMiwgMjUxLCAxNzYsIDIwNSwgMjE3LCAyMiwgMiwgNzQsIDIwNSwgCisgICAgMjE3LCAyMiwgMiwgMjA5LCAyNTAsIDc0LCAyMDUsIDIxNywgMjIsIDIsIDI1MCwgMTM5LCAyMDUsIDIxNywgMiwgMjQ3LCAKKyAgICAxNDksIDIwNSwgMjE3LCAyLCAyNTEsIDMzLCAyMDUsIDIxNywgMiwgMjAyLCAyMDMsIDIwNSwgMjE3LCAyLCAyMDIsIDIwOCwgCisgICAgMjA1LCAyMTcsIDIsIDIxOCwgMTAwLCAyMDUsIDIxNywgMiwgMjUwLCAxMjIsIDIwNSwgMjE3LCAyMzUsIDExLCAyMDUsIAorICAgIDIxNywgMjUyLCAzLCA1NCwgMjA1LCAyMTcsIDIxNywgODYsIDIwNSwgMjE3LCAxNywgMTk5LCA4MSwgMjA1LCAyMTcsIDE3LCAKKyAgICAxMDIsIDIwNSwgMjE3LCAxNywgMTA1LCAyMDUsIDIxNywgMTcsIDE0NywgMjA1LCAyMTcsIDE3LCAxNDksIDIwNSwgMjE3LCAKKyAgICAxNywgMTY0LCAyMDUsIDIxNywgMTcsIDE4NywgMjA1LCAyMTcsIDE3LCAyMTAsIDEzNSwgMjA1LCAyMTcsIDE3LCAxOTIsIAorICAgIDIwNSwgMjE3LCAxNywgMjE5LCAxMTMsIDE5NiwgMSwgNjIsIDE5NiwgMSwgMjUyLCAxMzgsIDE5NiwgMSwgNzAsIDE5NiwgMSwgCisgICAgMjI4LCAxNTEsIDE5NiwgMSwgNjYsIDE5NiwgMSwgMjAzLCAxODIsIDE5NiwgMSwgMTA5LCAxNDYsIDE5NiwgMSwgMTA5LCAKKyAgICAyMTIsIDIxNiwgMTk2LCAxLCAxMDksIDE1NiwgMTk2LCAxLCAxMDksIDIyNCwgMTM5LCAxOTYsIDEsIDcyLCAxOTYsIDEsIAorICAgIDI1MSwgMTc2LCAxOTYsIDEsIDc0LCAxOTYsIDEsIDI1MCwgMTM5LCAxOTYsIDEsIDE2MSwgMTk2LCAxLCAyMjYsIDIwNywgCisgICAgMTk2LCAxLCAyMzYsIDg5LCAxOTYsIDEsIDIzNSwgMTk5LCAxOTYsIDEsIDIxOSwgMjUzLCAxOTYsIDEsIDI0NywgMTkwLCAKKyAgICAxOTYsIDEsIDI0NywgMzcsIDE5NiwgMSwgMjI3LCAyNDgsIDE5NiwgMSwgMjI3LCAyMTUsIDE5NiwgMSwgMjE4LCA2MCwgCisgICAgMTk2LCAxLCAyMDQsIDI1MywgMTk2LCAxLCAyMDQsIDI0MSwgMTk2LCAxLCAyNDEsIDIyMCwgMTk2LCAxLCAyNDEsIDIwNCwgCisgICAgMTk2LCAxLCAyMTksIDIxLCAxOTYsIDEsIDIwNywgMzYsIDE5NiwgMSwgMjA2LCAxMjIsIDE5NiwgMSwgMjQyLCA1OCwgMTk2LCAKKyAgICAxLCAyNDEsIDEwMCwgMTk2LCAxLCAxODgsIDE5NiwgMSwgMTcyLCAxOTYsIDEsIDIxNSwgMjQ1LCAxOTYsIDEsIDI0OSwgCisgICAgMTM2LCAxOTYsIDEsIDI0OCwgMjAwLCAxOTYsIDEsIDE3OCwgMTk2LCAxLCAxODMsIDE5NiwgMSwgMjEzLCAyNTIsIDE5NiwgCisgICAgMSwgMTk0LCAxOTYsIDEsIDIwMywgOTAsIDE5NiwgMSwgMjEwLCAxMTQsIDE5NiwgMSwgMjA4LCAxNzksIDE5NiwgMSwgMjEyLCAKKyAgICA2NCwgMTk2LCAxLCAxNDQsIDE5NiwgMjIsIDIsIDI1MiwgMTM4LCAxOTYsIDIyLCAyLCA3MCwgMTk2LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDE5NiwgMjIsIDIsIDY2LCAxOTYsIDIyLCAyLCAyMDMsIDE4MiwgMTk2LCAyMiwgMiwgMTA5LCAxNDYsIDE5NiwgMjIsIAorICAgIDIsIDEwOSwgMjEyLCAyMTYsIDE5NiwgMjIsIDIsIDcyLCAxOTYsIDIyLCAyLCAyNTEsIDE3NiwgMTk2LCAyMiwgMiwgNzQsIAorICAgIDE5NiwgMjIsIDIsIDI1MCwgMTM5LCAxOTYsIDIsIDI0NywgMTQ5LCAxOTYsIDIsIDI1MSwgMzMsIDE5NiwgMiwgMjAyLCAKKyAgICAyMDMsIDE5NiwgMiwgMjAyLCAyMDgsIDE5NiwgMiwgMjE4LCAxMDAsIDE5NiwgMiwgMjA5LCAxNzcsIDE5NiwgMjQyLCAxMCwgCisgICAgMTk2LCA1MywgMjQyLCAxMCwgMTk2LCAyMTAsIDE1NSwgMjQwLCAxODIsIDE5NiwgMjEwLCAxNTUsIDE0OCwgMTk2LCAyMTMsIAorICAgIDEzMCwgMjIyLCAxNDksIDE5NiwgMjEzLCAxMzAsIDIyMiwgMTQ4LCAxOTYsIDIxMywgMTMwLCAyMjIsIDE0NywgMTk2LCAKKyAgICAyMzgsIDE3MSwgNzYsIDIwNiwgMTI3LCA4MSwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDkzLCAyNiwgMjA0LCA5OSwgCisgICAgMjE3LCAyMCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDkzLCAyNiwgMjM5LCAxODAsIDI0MiwgMjQyLCAxOTYsIAorICAgIDIxMSwgMTkzLCAxMzQsIDMsIDIxMywgMTk1LCAyNiwgMjM5LCAxODAsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIAorICAgIDMsIDIxMywgMTk1LCAyNiwgMjM5LCAxODAsIDUzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMTMsIDE5NSwgCisgICAgMjYsIDIzOSwgMTgwLCAyMDUsIDgzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCA1MywgMjEzLCAyNiwgMTk2LCAKKyAgICAyMTEsIDE5MywgMTM0LCA1MywgMjEzLCAyNywgMywgMjEzLCAxOTQsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgNTMsIDI0MiwgCisgICAgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgODMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIAorICAgIDIxNCwgOTAsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIxMCwgMTUyLCAyNDIsIDI0MiwgMTk2LCAyMTEsIAorICAgIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIDIxMywgMTk0LCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgCisgICAgMTIwLCAyMzgsIDE3MywgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIDIzNiwgMjI5LCAyMzgsIDE3MywgCisgICAgMTk2LCAxLCAyMDYsIDQ2LCAyNTEsIDEwOSwgNzAsIDE5NiwgMSwgMjA0LCAxNDMsIDI1MSwgMTA5LCA3MCwgMTk2LCAxLCAKKyAgICAyMDQsIDE0MywgMjUxLCAxMDksIDIyOCwgMTUxLCAxOTYsIDEsIDI1MSwgMTA5LCA2NiwgMTk2LCAyMiwgMiwgMjUxLCAxMDksIAorICAgIDY2LCAxOTYsIDIyLCAyLCAyNTEsIDEwOSwgMjAzLCAxODIsIDIyMSwgMTI3LCAxLCA2MiwgMjIxLCAxMjcsIDEsIDI1MiwgCisgICAgMTM4LCAyMjEsIDEyNywgMSwgNzAsIDIyMSwgMTI3LCAxLCAyMjgsIDE1MSwgMjIxLCAxMjcsIDEsIDY2LCAyMjEsIDEyNywgCisgICAgMSwgMjAzLCAxODIsIDIyMSwgMTI3LCAxLCAxMDksIDE0NiwgMjIxLCAxMjcsIDEsIDEwOSwgMjEyLCAyMTYsIDIyMSwgMTI3LCAKKyAgICAxLCAxMDksIDE1NiwgMjIxLCAxMjcsIDEsIDEwOSwgMjI0LCAxMzksIDIyMSwgMTI3LCAxLCA3MiwgMjIxLCAxMjcsIDEsIAorICAgIDI1MSwgMTc2LCAyMjEsIDEyNywgMSwgNzQsIDIyMSwgMTI3LCAxLCAyNTAsIDEzOSwgMjIxLCAxMjcsIDEsIDE2MSwgMjIxLCAKKyAgICAxMjcsIDEsIDIyNiwgMjA3LCAyMjEsIDEyNywgMSwgMjM2LCA4OSwgMjIxLCAxMjcsIDEsIDIzNSwgMTk5LCAyMjEsIDEyNywgCisgICAgMSwgMjE5LCAyNTMsIDIyMSwgMTI3LCAxLCAyNDcsIDE5MCwgMjIxLCAxMjcsIDEsIDI0NywgMzcsIDIyMSwgMTI3LCAxLCAKKyAgICAyMjcsIDI0OCwgMjIxLCAxMjcsIDEsIDIyNywgMjE1LCAyMjEsIDEyNywgMSwgMjE4LCA2MCwgMjIxLCAxMjcsIDEsIDIwNCwgCisgICAgMjUzLCAyMjEsIDEyNywgMSwgMjA0LCAyNDEsIDIyMSwgMTI3LCAxLCAyNDEsIDIyMCwgMjIxLCAxMjcsIDEsIDI0MSwgMjA0LCAKKyAgICAyMjEsIDEyNywgMSwgMjE5LCAyMSwgMjIxLCAxMjcsIDEsIDIwNywgMzYsIDIyMSwgMTI3LCAxLCAyMDYsIDEyMiwgMjIxLCAKKyAgICAxMjcsIDEsIDI0MiwgNTgsIDIyMSwgMTI3LCAxLCAyNDEsIDEwMCwgMjIxLCAxMjcsIDEsIDE4OCwgMjIxLCAxMjcsIDEsIAorICAgIDE3MiwgMjIxLCAxMjcsIDEsIDIxNSwgMjQ1LCAyMjEsIDEyNywgMSwgMjQ5LCAxMzYsIDIyMSwgMTI3LCAxLCAyNDgsIDIwMCwgCisgICAgMjIxLCAxMjcsIDEsIDE3OCwgMjIxLCAxMjcsIDEsIDE4MywgMjIxLCAxMjcsIDEsIDIxMywgMjUyLCAyMjEsIDEyNywgMSwgCisgICAgMTk0LCAyMjEsIDEyNywgMSwgMjAzLCA5MCwgMjIxLCAxMjcsIDEsIDIxMCwgMTE0LCAyMjEsIDEyNywgMSwgMjA4LCAxNzksIAorICAgIDIyMSwgMTI3LCAxLCAyMTIsIDY0LCAyMjEsIDEyNywgMSwgMTQ0LCAyMjEsIDEyNywgMSwgMjI0LCAxMzgsIDIyMSwgMTI3LCAKKyAgICAyMiwgMiwgMjUyLCAxMzgsIDIyMSwgMTI3LCAyMiwgMiwgNzAsIDIyMSwgMTI3LCAyMiwgMiwgMjI4LCAxNTEsIDIyMSwgCisgICAgMTI3LCAyMiwgMiwgNjYsIDIyMSwgMTI3LCAyMiwgMiwgMjAzLCAxODIsIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDE1NiwgMjIxLCAxMjcsIDIyLCAKKyAgICAyLCAxMDksIDIyNCwgMTM5LCAyMjEsIDEyNywgMjIsIDIsIDcyLCAyMjEsIDEyNywgMjIsIDIsIDI1MSwgMTc2LCAyMjEsIAorICAgIDEyNywgMjIsIDIsIDc0LCAyMjEsIDEyNywgMjIsIDIsIDI1MCwgMTM5LCAyMjEsIDEyNywgMiwgMjUxLCAzMywgMjIxLCAKKyAgICAxMjcsIDIsIDIwMiwgMjAzLCAyMjEsIDEyNywgMiwgMjAyLCAyMDgsIDIyMSwgMTI3LCAyLCAyNTAsIDIzMSwgMjIxLCAxMjcsIAorICAgIDI0MiwgMTAsIDIyMSwgMTI3LCA1MywgMjQyLCAxMCwgMjIxLCAxMjcsIDI1MiwgMywgNTQsIDIyMSwgMTI3LCAyLCAyMzMsIAorICAgIDcwLCAyMjEsIDEyNywgMTcsIDE5OSwgODEsIDIyMSwgMTI3LCAxNywgMTAyLCAyMjEsIDEyNywgMTcsIDEwNSwgMjIxLCAKKyAgICAxMjcsIDE3LCAxNDcsIDIyMSwgMTI3LCAxNywgMTQ5LCAyMjEsIDEyNywgMTcsIDE2NCwgMjIxLCAxMjcsIDE3LCAxODcsIAorICAgIDIyMSwgMTI3LCAxNywgMjEwLCAxMzUsIDIyMSwgMTI3LCAxNywgMTkyLCAyMjEsIDEyNywgMTcsIDIxOSwgMTEzLCA5MiwgCisgICAgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMTIsIDIyOCwgMjQ4LCAxNjAsIDkyLCA1MywgMjQ4LCAxNjEsIDMsIDIxNywgCisgICAgMjEsIDkyLCAyMDUsIDgzLCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIAorICAgIDIxMiwgMjI4LCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIxMiwgMjI4LCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIAorICAgIDkyLCAyMjgsIDUwLCAyNDgsIDE2MCwgOTIsIDIyOCwgNTAsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIDIwNywgCisgICAgMTcyLCAyNDgsIDE2MCwgOTIsIDIwNywgMTcyLCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIwNywgMTcyLCAyNDgsIAorICAgIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAyMDQsIDE4NSwgMjA3LCAxNzIsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgCisgICAgMjA2LCAyNTMsIDEsIDYyLCAyMDYsIDI1MywgMSwgMjUyLCAxMzgsIDIwNiwgMjUzLCAxLCA3MCwgMjA2LCAyNTMsIDEsIAorICAgIDIyOCwgMTUxLCAyMDYsIDI1MywgMSwgNjYsIDIwNiwgMjUzLCAxLCAyMDMsIDE4MiwgMjA2LCAyNTMsIDEsIDcyLCAyMDYsIAorICAgIDI1MywgMSwgMjUxLCAxNzYsIDIwNiwgMjUzLCAxLCA3NCwgMjA2LCAyNTMsIDEsIDI1MCwgMTM5LCAyMDYsIDI1MywgMSwgCisgICAgMTYxLCAyMDYsIDI1MywgMSwgMjI2LCAyMDcsIDIwNiwgMjUzLCAxLCAyMzYsIDg5LCAyMDYsIDI1MywgMSwgMjM1LCAxOTksIAorICAgIDIwNiwgMjUzLCAxLCAyMTksIDI1MywgMjA2LCAyNTMsIDEsIDI0NywgMTkwLCAyMDYsIDI1MywgMSwgMjQ3LCAzNywgMjA2LCAKKyAgICAyNTMsIDEsIDIyNywgMjQ4LCAyMDYsIDI1MywgMSwgMjI3LCAyMTUsIDIwNiwgMjUzLCAxLCAyMTgsIDYwLCAyMDYsIDI1MywgCisgICAgMSwgMjA0LCAyNTMsIDIwNiwgMjUzLCAxLCAyMDQsIDI0MSwgMjA2LCAyNTMsIDEsIDI0MSwgMjIwLCAyMDYsIDI1MywgMSwgCisgICAgMjQxLCAyMDQsIDIwNiwgMjUzLCAxLCAyMTksIDIxLCAyMDYsIDI1MywgMSwgMjA3LCAzNiwgMjA2LCAyNTMsIDEsIDIwNiwgCisgICAgMTIyLCAyMDYsIDI1MywgMSwgMjQyLCA1OCwgMjA2LCAyNTMsIDEsIDI0MSwgMTAwLCAyMDYsIDI1MywgMSwgMTg4LCAyMDYsIAorICAgIDI1MywgMSwgMTcyLCAyMDYsIDI1MywgMSwgMjE1LCAyNDUsIDIwNiwgMjUzLCAxLCAyNDksIDEzNiwgMjA2LCAyNTMsIDEsIAorICAgIDI0OCwgMjAwLCAyMDYsIDI1MywgMSwgMTc4LCAyMDYsIDI1MywgMSwgMTgzLCAyMDYsIDI1MywgMSwgMjEzLCAyNTIsIDIwNiwgCisgICAgMjUzLCAxLCAxOTQsIDIwNiwgMjUzLCAxLCAyMDMsIDkwLCAyMDYsIDI1MywgMSwgMjEwLCAxMTQsIDIwNiwgMjUzLCAxLCAKKyAgICAyMTIsIDY0LCAyMDYsIDI1MywgMSwgMTQ0LCAyMDYsIDI1MywgMSwgMjEyLCAyMTUsIDIwNiwgMjUzLCAyLCAyNTEsIDMzLCAKKyAgICAyMDYsIDI1MywgMiwgMjAyLCAyMDMsIDIwNiwgMjUzLCAyMiwgMiwgMjUyLCAxMzgsIDIwNiwgMjUzLCAyMiwgMiwgNzAsIAorICAgIDIwNiwgMjUzLCAyMiwgMiwgMjI4LCAxNTEsIDIwNiwgMjUzLCAyMiwgMiwgNjYsIDIwNiwgMjUzLCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIwNiwgMjUzLCAyMiwgMiwgNzIsIDIwNiwgMjUzLCAyMiwgMiwgMjUxLCAxNzYsIDIwNiwgMjUzLCAyMiwgMiwgNzQsIAorICAgIDIwNiwgMjUzLCAyMiwgMiwgMjUwLCAxMzksIDIwNiwgMjUzLCAyLCAyMDIsIDIwOCwgMjA2LCAyNTMsIDIsIDIxOCwgMTAwLCAKKyAgICAyMDYsIDI1MywgMTcsIDE5OSwgODEsIDIwNiwgMjUzLCAxNywgMTAyLCAyMDYsIDI1MywgMTcsIDEwNSwgMjA2LCAyNTMsIAorICAgIDE3LCAxNDcsIDIwNiwgMjUzLCAxNywgMTQ5LCAyMDYsIDI1MywgMTcsIDE2NCwgMjA2LCAyNTMsIDE3LCAxODcsIDIwNiwgCisgICAgMjUzLCAxNywgMjEwLCAxMzUsIDIwNiwgMjUzLCAxNywgMTkyLCAyMDYsIDI1MywgMTcsIDIxOSwgMTEzLCAyNTEsIDE4MCwgCisgICAgMSwgMTYxLCAyNTEsIDE4MCwgMSwgMjI2LCAyMDcsIDI1MSwgMTgwLCAxLCAyMTksIDI1MywgMjUxLCAxODAsIDEsIDE4OCwgCisgICAgMjUxLCAxODAsIDEsIDIwNywgMzYsIDI1MSwgMTgwLCAxLCAyNTEsIDEwOSwgMjA3LCAzNiwgMjUxLCAxODAsIDEsIDE3MiwgCisgICAgMjUxLCAxODAsIDEsIDIxNSwgMjQ1LCAyNTEsIDE4MCwgMSwgMjQ5LCAxMzYsIDI1MSwgMTgwLCAxLCAxNzgsIDI1MSwgMTgwLCAKKyAgICAxLCAyMjcsIDI0OCwgMjUxLCAxODAsIDEsIDI0NywgMzcsIDI1MSwgMTgwLCAxLCAyMDYsIDEyMiwgMjUxLCAxODAsIDEsIAorICAgIDIxMywgMjUyLCAyNTEsIDE4MCwgMSwgMTk0LCAyNTEsIDE4MCwgMSwgMjEyLCA2NCwgMjUxLCAxODAsIDEsIDIxOCwgNjAsIAorICAgIDI1MSwgMTgwLCAxLCAxNDQsIDI1MSwgMTgwLCAxLCA2MiwgMjUxLCAxODAsIDEsIDI0MiwgNTgsIDI1MSwgMTgwLCAxLCAKKyAgICAyNDEsIDEwMCwgMjUxLCAxODAsIDEsIDIzNiwgODksIDI1MSwgMTgwLCAxLCAyNTEsIDEwOSwgMjM2LCA4OSwgMjUxLCAxODAsIAorICAgIDEsIDIzNSwgMTk5LCAyNTEsIDE4MCwgMSwgMjQ4LCAyMDAsIDI1MSwgMTgwLCAxLCAyMjcsIDIxNSwgMjUxLCAxODAsIDExMSwgCisgICAgMiwgMTc5LCAxOTQsIDI1MSwgMTgwLCAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDI1MSwgMTgwLCAxMTEsIDIsIDE3OSwgMjI0LCAKKyAgICAxOTcsIDIxMywgMjUyLCAyNTEsIDE4MCwgMjIsIDIsIDYyLCAyNTEsIDE4MCwgMjIsIDIsIDI1MiwgMTM4LCAyNTEsIDE4MCwgCisgICAgMjIsIDIsIDcwLCAyNTEsIDE4MCwgMjIsIDIsIDIyOCwgMTUxLCAyNTEsIDE4MCwgMjIsIDIsIDY2LCAyNTEsIDE4MCwgMjIsIAorICAgIDIsIDIwMywgMTgyLCAyNTEsIDE4MCwgMjIsIDIsIDcyLCAyNTEsIDE4MCwgMjIsIDIsIDI1MCwgMTE3LCAyNTEsIDE4MCwgCisgICAgMjIsIDIsIDc0LCAyNTEsIDE4MCwgMjIsIDIsIDI1MSwgMTc2LCAyNTEsIDE4MCwgMjIsIDIsIDI1MSwgMTAxLCAyNTEsIAorICAgIDE4MCwgMiwgMjI2LCAxNDksIDI1MSwgMTgwLCAxNywgMTk5LCA4MSwgMjUxLCAxODAsIDE3LCAxMDIsIDI1MSwgMTgwLCAxNywgCisgICAgMTA1LCAyNTEsIDE4MCwgMTcsIDE0NywgMjUxLCAxODAsIDE3LCAxNDksIDI1MSwgMTgwLCAxNywgMTY0LCAyNTEsIDE4MCwgCisgICAgMTcsIDE4NywgMjUxLCAxODAsIDE3LCAyMTAsIDEzNSwgMjUxLCAxODAsIDE3LCAxOTIsIDI1MSwgMTgwLCAxNywgMjE5LCAKKyAgICAxMTMsIDI1MSwgMTgwLCA0MSwgMjA2LCAxNjYsIDI1MSwgMTgwLCA0MSwgMjA0LCAxNTksIDI1MSwgMTgwLCAyLCA0LCAyMTEsIAorICAgIDE5MiwgMjUxLCAxODAsIDIsIDIxMSwgMTkyLCAyNTEsIDE4MCwgMiwgMjEyLCAxNjYsIDI1MSwgMTgwLCAxNiwgMjAyLCAKKyAgICAyMzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTksIDI1MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjAxLCAzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMjExLCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNiwgMSwgMTgzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAyNDUsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyMjgsIDE1MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwMywgMTgyLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgNzIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCA3NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI1MSwgCisgICAgNzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzYsIDg5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjI2LCA4OCwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzOCwgMTQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAxOTUsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDQsIDM4LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM4LCAxNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTcsIDEyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwNCwgMjQ4LCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNiwgMSwgMjE4LCA4NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI0MiwgNTgsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyNTAsIDE1NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI1MSwgMTAxLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjQ4LCAzNiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxNCwgMjI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgCisgICAgNiwgMSwgMjM0LCA0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzMywgMTk1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgCisgICAgMSwgMjMzLCAxMjIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzQsIDE2NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIAorICAgIDIwOCwgMTMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA5LCAxNjEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAKKyAgICAyMDIsIDE5NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxOSwgMjUyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgNjIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDEsIDMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAyMTEsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA0LCAxLCAxODMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDI0NSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDIyOCwgMTUxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjAzLCAxODIsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCA3MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDc0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjUxLCAKKyAgICA3NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzNiwgODksIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMjYsIDg4LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM4LCAxNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDE5NSwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwNCwgMzgsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzgsIDE2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxNywgMTI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA0LCAyNDgsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA0LCAxLCAyMTgsIDg2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjQyLCA1OCwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDI1MCwgMTU1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjUxLCAxMDEsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyNDgsIDM2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE0LCAyMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAKKyAgICA0LCAxLCAyMzQsIDQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjMzLCAxOTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAKKyAgICAxLCAyMzMsIDEyMiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzNCwgMTY2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgCisgICAgMjA4LCAxMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDksIDE2MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIAorICAgIDIwMiwgMTk0LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE5OSwgODEsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTAyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDEwNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxNDcsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCAxNywgMTQ5LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE2NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxODcsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMjEwLCAxMzUsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTkyLCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgMTcsIDIxOSwgMTEzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwNiwgMTY2LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNDEsIDIwNCwgMTU5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwNiwgNjcsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgCisgICAgMjM2LCAyMzUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjM3LCAxMDQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA5LCAKKyAgICA5MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMTAsIDEyOSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMzgsIDIyMiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMTksIDEwOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDIxNywgODYsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTcyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE2MSwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxOTQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTc4LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0MiwgNTgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTk5LCAxMTQsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjAzLCA5MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAKKyAgICAyMTksIDI1MywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNDQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgMjM2LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMjYsIDIwNywgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAxLCAyMTIsIDY0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0OSwgMTM2LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0NywgMTkwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNywgCisgICAgMzYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA2LCAxMjIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgMTg4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIxNSwgMjQ1LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDEsIDIxMywgMjUyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIzNywgMTk1LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0NywgMzcsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNjIsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzAsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNjYsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA0LCA0NiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMzIsIAorICAgIDI0MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjE2LCAyMjYsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMSwgNDcsIDIyNywgMTE4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDcsIDgzLCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMjMsIDI0MywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCA0NywgMjIwLCAyMTQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDE1NiwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjAxLCAxNDcsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIAorICAgIDIxOSwgMjU1LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDAsIDEyMywgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDIyNCwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEzLCAKKyAgICAxOSwgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAyMzUsIDEyMywgMjA4LCA3NiwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCAKKyAgICA5LCAyMzUsIDEyMywgMjA4LCA3NywgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDE1MCwgCisgICAgMjI0LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgCisgICAgMjEyLCA5LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjIxLCAyMDUsIDIwNSwgMTc0LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc3LCAyMDMsIDcyLCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIyMSwgMjA1LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAKKyAgICAyMjEsIDIwNSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgMjI0LCAKKyAgICA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIAorICAgIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIDIzNywgODksIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIzNywgODksIDE3NCwgMSwgNjIsIDE3NCwgMSwgCisgICAgMjUyLCAxMzgsIDE3NCwgMSwgNzAsIDE3NCwgMSwgMjI4LCAxNTEsIDE3NCwgMSwgNjYsIDE3NCwgMSwgMjAzLCAxODIsIAorICAgIDE3NCwgMSwgMTA5LCAxNDYsIDE3NCwgMSwgMTA5LCAyMTIsIDIxNiwgMTc0LCAxLCAxMDksIDE1NiwgMTc0LCAxLCA3MiwgCisgICAgMTc0LCAxLCAyNTEsIDE3NiwgMTc0LCAxLCA3NCwgMTc0LCAxLCAyNTAsIDEzOSwgMTc0LCAxLCAxNjEsIDE3NCwgMSwgMjI2LCAKKyAgICAyMDcsIDE3NCwgMSwgMjM2LCA4OSwgMTc0LCAxLCAyMzUsIDE5OSwgMTc0LCAxLCAyMTksIDI1MywgMTc0LCAxLCAyNDcsIAorICAgIDE5MCwgMTc0LCAxLCAyNDcsIDM3LCAxNzQsIDEsIDIyNywgMjQ4LCAxNzQsIDEsIDIyNywgMjE1LCAxNzQsIDEsIDIxOCwgCisgICAgNjAsIDE3NCwgMSwgMjA0LCAyNTMsIDE3NCwgMSwgMjA0LCAyNDEsIDE3NCwgMSwgMjQxLCAyMjAsIDE3NCwgMSwgMjQxLCAKKyAgICAyMDQsIDE3NCwgMSwgMjE5LCAyMSwgMTc0LCAxLCAyMDcsIDM2LCAxNzQsIDEsIDIwNiwgMTIyLCAxNzQsIDEsIDI0MiwgNTgsIAorICAgIDE3NCwgMSwgMjQxLCAxMDAsIDE3NCwgMSwgMTg4LCAxNzQsIDEsIDE3MiwgMTc0LCAxLCAyMTUsIDI0NSwgMTc0LCAxLCAKKyAgICAyNDksIDEzNiwgMTc0LCAxLCAyNDgsIDIwMCwgMTc0LCAxLCAxNzgsIDE3NCwgMSwgMTgzLCAxNzQsIDEsIDIxMywgMjUyLCAKKyAgICAxNzQsIDEsIDE5NCwgMTc0LCAxLCAyMDMsIDkwLCAxNzQsIDEsIDIxMCwgMTE0LCAxNzQsIDEsIDIwOCwgMTc5LCAxNzQsIDEsIAorICAgIDIxMiwgNjQsIDE3NCwgMSwgMTQ0LCAxNzQsIDIyLCAyLCAyNTIsIDEzOCwgMTc0LCAyMiwgMiwgNzAsIDE3NCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxNzQsIDIyLCAyLCA2NiwgMTc0LCAyMiwgMiwgMjAzLCAxODIsIDE3NCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxNzQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNzQsIDIyLCAyLCAxMDksIDE1NiwgMTc0LCAyMiwgMiwgNzIsIDE3NCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxNzQsIDIyLCAyLCA3NCwgMTc0LCAyMiwgMiwgMjUwLCAxMzksIDE3NCwgMiwgMjQ3LCAxNDksIDE3NCwgCisgICAgMiwgMjUxLCAzMywgMTc0LCAyLCAyMDIsIDIwMywgMTc0LCAyLCAyMDIsIDIwOCwgMTc0LCAyLCAyNTAsIDEyMiwgMTc0LCAKKyAgICAyNDIsIDEwLCAxNzQsIDUzLCAyNDIsIDEwLCAxNzQsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMTc0LCAyMzYsIDUzLCAyMzcsIAorICAgIDkyLCAxNzQsIDIzNiwgNTMsIDIzNywgOTEsIDE3NCwgMTcsIDE5OSwgODEsIDE3NCwgMTcsIDEwMiwgMTc0LCAxNywgMTA1LCAKKyAgICAxNzQsIDE3LCAxNDcsIDE3NCwgMTcsIDE0OSwgMTc0LCAxNywgMTY0LCAxNzQsIDE3LCAxODcsIDE3NCwgMTcsIDIxMCwgCisgICAgMTM1LCAxNzQsIDE3LCAxOTIsIDE3NCwgMTcsIDIxOSwgMTEzLCAxNzQsIDQxLCAxMDIsIDE3NCwgNDEsIDEwNSwgMTc0LCAKKyAgICA0MSwgMTQ3LCAxNzQsIDQxLCAxNDksIDE3NCwgNDEsIDE2NCwgMTc0LCA0MSwgMTg3LCAxNzQsIDQxLCAyMTAsIDEzNSwgCisgICAgMTc0LCA0MSwgMTkyLCAxNzQsIDQxLCAyMTksIDExMywgMTc0LCA0MSwgMjA2LCAxNjYsIDE3NCwgNDEsIDIwNCwgMTU5LCAKKyAgICAxNzQsIDQxLCAyMDYsIDY3LCAxNzQsIDQxLCAyMzYsIDIzNSwgMTc0LCA0MSwgMjM3LCAxMDQsIDE3NCwgNDEsIDIwOSwgOTIsIAorICAgIDE3NCwgNDEsIDIxMCwgMTI5LCAxNzQsIDQxLCAyMzgsIDIyMiwgMTc0LCA0MSwgMjE5LCAxMDgsIDE3NCwgMjMzLCA4MSwgCisgICAgMjAzLCAyNDAsIDgxLCAyMjIsIDE1MSwgMjM0LCAxMzcsIDgxLCAyMjIsIDE1MSwgMTM0LCAyMTAsIDEwNiwgMjIyLCAxNTEsIAorICAgIDEsIDE2MSwgMjIyLCAxNTEsIDEsIDIyNiwgMjA3LCAyMjIsIDE1MSwgMSwgMjM2LCA4OSwgMjIyLCAxNTEsIDEsIDIxOSwgCisgICAgMjUzLCAyMjIsIDE1MSwgMSwgMjQ3LCAxOTAsIDIyMiwgMTUxLCAxLCAyNDcsIDM3LCAyMjIsIDE1MSwgMSwgMjI3LCAyNDgsIAorICAgIDIyMiwgMTUxLCAxLCAyMTgsIDYwLCAyMjIsIDE1MSwgMSwgMjA3LCAzNiwgMjIyLCAxNTEsIDEsIDIwNiwgMTIyLCAyMjIsIAorICAgIDE1MSwgMSwgMjQyLCA1OCwgMjIyLCAxNTEsIDEsIDE4OCwgMjIyLCAxNTEsIDEsIDE3MiwgMjIyLCAxNTEsIDEsIDIxNSwgCisgICAgMjQ1LCAyMjIsIDE1MSwgMSwgMjQ5LCAxMzYsIDIyMiwgMTUxLCAxLCAxNzgsIDIyMiwgMTUxLCAxLCAyMDUsIDMyLCAyMjIsIAorICAgIDE1MSwgMSwgMjA1LCAyMiwgMjIyLCAxNTEsIDEsIDIzOSwgOTMsIDIyMiwgMTUxLCAxLCAyMDEsIDExNCwgMjIyLCAxNTEsIAorICAgIDEsIDE5OSwgNzcsIDIyMiwgMTUxLCAxLCAxOTksIDExNCwgMjIyLCAxNTEsIDEsIDI1NSwgMTQyLCAyMjIsIDE1MSwgMSwgCisgICAgMTgzLCAyMjIsIDE1MSwgMSwgMjEzLCAyNTIsIDIyMiwgMTUxLCAxLCAxOTQsIDIyMiwgMTUxLCAxLCAyMTAsIDExNCwgMjIyLCAKKyAgICAxNTEsIDEsIDIxMiwgNjQsIDIyMiwgMTUxLCAxLCAxNDQsIDIyMiwgMTUxLCAxLCA2MiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDE2MSwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIyNiwgMjA3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjM2LCA4OSwgMjIyLCAKKyAgICAxNTEsIDIwOCwgMTIsIDEsIDIxOSwgMjUzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQ3LCAxOTAsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAyNDcsIDM3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjI3LCAyNDgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAyMTgsIDYwLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA3LCAzNiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNiwgMTIyLCAKKyAgICAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQyLCA1OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE4OCwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDE3MiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxNSwgMjQ1LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxNzgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDUsIDMyLCAyMjIsIDE1MSwgCisgICAgMjA4LCAxMiwgMSwgMjA1LCAyMiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIzOSwgOTMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAyMDEsIDExNCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE5OSwgNzcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxOTksIDExNCwgCisgICAgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE4MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMTk0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEwLCAxMTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTIsIAorICAgIDY0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTQ0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgNjIsIDIyMiwgMTUxLCAyMiwgMiwgCisgICAgMjUyLCAxMzgsIDIyMiwgMTUxLCAyMiwgMiwgNzAsIDIyMiwgMTUxLCAyMiwgMiwgNjYsIDIyMiwgMTUxLCAyMiwgMiwgNzIsIAorICAgIDIyMiwgMTUxLCAyMiwgMiwgNzQsIDIyMiwgMTUxLCAyLCAyNTEsIDMzLCAyMjIsIDE1MSwgMiwgMjQ3LCAxNDksIDEwLCAyLCAKKyAgICA2MiwgMTAsIDIsIDM1LCAyNCwgNjIsIDEwLCAyLCAzNSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMzUsIDI0LCAyMzYsIDU4LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDM1LCAyNCwgMTQ0LCAxMCwgMiwgMzUsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDM1LCAyNCwgCisgICAgMjI1LCAxNTYsIDIzNSwgMjgsIDEwLCAyLCAzNSwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMzUsIDI0LCAyMTIsIDUwLCAxMCwgCisgICAgMiwgMjU0LCAxNDcsIDEwLCAyLCAyNTIsIDg5LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjUyLCAKKyAgICA5MCwgMjQsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyNTIsIDkwLCAKKyAgICAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMTQ0LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyOCwgMTI3LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyNSwgMTU3LCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxMCwgNDksIDEwLCAyLCAyNTIsIDkwLCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA2LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjQ5LCA5OCwgMTAsIAorICAgIDIsIDI1MiwgNywgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgCisgICAgMTc5LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjEwLCAxMTIsIDEwLCAyLCAyNTIsIDcsIDI0LCAyMDcsIDAsIDEwLCAyLCAyNTEsIAorICAgIDIzNSwgMTAsIDIsIDI1MSwgMTU5LCAxMCwgMiwgMjUxLCAxNjAsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDI1MSwgMTYwLCAyNCwgCisgICAgMjEwLCAxMSwgOTMsIDIzNSwgMTM1LCAxMCwgMiwgMjUxLCAxNTEsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDI1MSwgMTUxLCAKKyAgICAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyNDEsIDI5LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDI1MSwgCisgICAgMTUyLCAyNCwgMTQ0LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMjYsIAorICAgIDE2MywgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAKKyAgICAyNTEsIDE0OCwgMTAsIDIsIDI1MSwgMTQwLCAxMCwgMiwgMjUxLCA5NywgMTAsIDIsIDI1MSwgOTgsIDI0LCAyMTAsIDY1LCAKKyAgICAxMCwgMiwgMjUxLCA4NSwgMTAsIDIsIDI1MSwgODYsIDExOSwgMjUxLCA4NSwgMTAsIDIsIDI1MSwgODYsIDEyNiwgMjA1LCAKKyAgICAyMzIsIDEwLCAyLCAyNTEsIDg2LCA5MywgMjIwLCAxNDgsIDIxNywgNDAsIDI1MSwgODYsIDkzLCAyMjAsIDE0NywgMTAsIDIsIAorICAgIDI1MSwgODYsIDkzLCAyMjAsIDE0OCwgMjA4LCAxOTIsIDEwLCAyLCAyNTEsIDUzLCAxMCwgMiwgMjUxLCAyMywgMTAsIDIsIAorICAgIDI1MCwgMjQ2LCAxMCwgMiwgMjUwLCAyNDcsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDI1MCwgMjE4LCAxMCwgMiwgMjUwLCAKKyAgICAxODYsIDEwLCAyLCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTgyLCAxOTksIDMyLCAyMDYsIDE1NSwgMTAsIDIsIDI1MCwgCisgICAgMTgyLCAyMjcsIDk1LCAyMDYsIDE1NSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAyMDQsIDIxMCwgMTE5LCAKKyAgICAyMDQsIDIxMCwgMjA0LCAyMTAsIDExOSwgMjA0LCAyMTAsIDIxNiwgMTM1LCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAKKyAgICAxODIsIDExOSwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMjQyLCAKKyAgICAyMjgsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxNzksIDEwLCAyLCAyNTAsIAorICAgIDE3NSwgMTAsIDIsIDI0OSwgMTM2LCAxMCwgMiwgMjQ5LCAxMTgsIDEwLCAyLCAyNDksIDExMiwgMTAsIDIsIDI0OSwgMTA1LCAKKyAgICAxMCwgMiwgMjQ5LCA5OSwgMTAsIDIsIDI0OSwgMTAwLCAxMTksIDI0OSwgOTksIDEwLCAyLCAyNDksIDk4LCAxMCwgMiwgCisgICAgMTQ4LCAxMCwgMiwgMjQ5LCA3NiwgMTAsIDIsIDI0OCwgMTg4LCAxMCwgMiwgMjQ4LCAxODksIDI0LCA2MiwgMTAsIDIsIAorICAgIDI0OCwgMTg5LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDI0OCwgMTg5LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyNDgsIDM2LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIDM3LCAyNTIsIDg5LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIAorICAgIDM3LCAyMDQsIDUsIDEwLCAyLCAyNDgsIDM3LCAyNDIsIDIyOCwgMjQ4LCAzNiwgMTAsIDIsIDI0OCwgMTQsIDEwLCAyLCAKKyAgICAyNDgsIDE1LCAxMTksIDI0OCwgMTQsIDEwLCAyLCAyNDgsIDMsIDEwLCAyLCAyNDgsIDIsIDEwLCAyLCAyNDIsIDU4LCAxMCwgCisgICAgMiwgMjQyLCA0OCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMzUsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjUxLCA5NywgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjQ5LCA5OCwgMTAsIDIsIAorICAgIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNiwgODksIAorICAgIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNiwgOTAsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgCisgICAgMTMyLCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNSwgMTQzLCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAxNDQsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDIyOCwgMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyOCwgMzYsIDkzLCAKKyAgICAyMjQsIDQyLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIAorICAgIDI0LCAxOTQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgCisgICAgMjQsIDIyNCwgNDMsIDkzLCAyMjIsIDEzNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI0LCAyNSwgMTAsIDIsIAorICAgIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjE2LCAxMzYsIAorICAgIDkzLCAyMTYsIDEzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA5LCAxODIsIDEwLCAyLCAyNDIsIDQ5LCAKKyAgICAyMjYsIDEzMiwgMjQsIDIwNywgMCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA0LCA0OCwgOTMsIDIzNSwgCisgICAgMTQzLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIDI0MiwgMjAsIDEwLCAyLCAyNDEsIAorICAgIDI1NCwgMTAsIDIsIDI0MSwgMjUzLCAxMCwgMiwgMjQxLCAyNTIsIDEwLCAyLCAyNDEsIDc2LCAxMCwgMiwgMjQxLCA1OCwgCisgICAgMTAsIDIsIDI0MSwgMzEsIDEwLCAyLCAyNDEsIDMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDI0MSwgMjksIDEwLCAyLCAyNDEsIAorICAgIDE5LCAxMCwgMiwgMjQxLCAyMCwgMjI3LCAzOSwgMTA4LCAyMzUsIDI5LCAyNDAsIDI1NSwgMTAsIDIsIDI0MCwgMjU1LCAxMCwgCisgICAgMiwgMjM5LCAxMzcsIDEwLCAyLCAyMzksIDEzOCwgMTE5LCAyMzksIDEzNywgMTAsIDIsIDIzOSwgMTM4LCAyMzUsIDI4LCAKKyAgICAxMCwgMiwgMjM5LCAxMzgsIDIxMCwgNDYsIDEwLCAyLCAyMzksIDEzNSwgMTAsIDIsIDIzOSwgMTM2LCAyNCwgMjM4LCA5MSwgCisgICAgMTAsIDIsIDIzOSwgMTM0LCAxMCwgMiwgMjM5LCAxMzEsIDEwLCAyLCAyMzksIDEzMCwgMTAsIDIsIDIzOSwgMTI5LCAxMCwgCisgICAgMiwgMjM5LCAxMjUsIDEwLCAyLCAyMzksIDEyMywgMTAsIDIsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMjQsIAorICAgIDIzNSwgMjksIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEyMiwgMTAsIDIsIDIzOSwgMTE1LCAxMCwgMiwgNzIsIDEwLCAyLCAKKyAgICAxOTcsIDI0LCAyMTYsIDEzNSwgMTAsIDIsIDE5NywgMTE5LCAxOTcsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIzOSwgMjgsIDEwLCAyLCAyMzksIDI5LCAyNCwgMzUsIDkzLCAyMzQsIDIzNiwgOTMsIDI0MiwgNTgsIDEwLCAyLCAyMzksIAorICAgIDI5LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTIsIAorICAgIDM1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzksIDI5LCAyNCwgNjYsIDEwLCAyLCAyMzksIDEsIAorICAgIDEwLCAyLCAyMzgsIDI0NSwgMTAsIDIsIDIzOCwgMjA5LCAxMCwgMiwgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjQsIAorICAgIDIzNiwgNTcsIDEwLCAyLCAyMzgsIDE4MCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAKKyAgICAyMjIsIDc2LCAxMCwgMiwgMjM4LCAxODAsIDI0MiwgMjI4LCAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyMTcsIDQwLCAKKyAgICAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyMDgsIDE5MiwgMTAsIDIsIDIzOCwgMTEyLCAxMCwgMiwgMjM4LCAxMDksIAorICAgIDEwLCAyLCAyMzgsIDkxLCAxMCwgMiwgMjM4LCAxMCwgMTAsIDIsIDIzOCwgMTEsIDI0LCA2MiwgMTAsIDIsIDIzOCwgMTEsIAorICAgIDI0LCAzNSwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAyNCwgMzUsIDkzLCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgCisgICAgMTAsIDIsIDIzOCwgMTEsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjQsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzOSwgMTI0LCAyMzUsIDI5LCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDE0NCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzQsIDIzNiwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIzOCwgMTEsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjM4LCAxMSwgMjQsIDIyNywgMzksIDIwOCwgMTkyLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNiwgMTMsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyNCwgMTk0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjQsIDIyNCwgMjEwLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA0LCA0NywgCisgICAgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM2LCA4OSwgMTAsIDIsIDIzNiwgOTAsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMzYsIDg3LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDM1LCA5MywgMjQyLCA1OSwgOTMsIDE0NCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAzNSwgOTMsIDE0NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAzNSwgOTMsIDIyOCwgMTUzLCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDI1MiwgNywgMjA2LCAxNTYsIDkzLCAyMDcsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MSwgODUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUwLCAxODAsIDkzLCAyMzYsIDcxLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OSwgNzcsIDkzLCAyMTMsIDI1MiwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDgsIDMsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ4LCA0LCA5MywgMjEzLCAyNTIsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQyLCA1OCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDEsIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDI0MSwgMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTM1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIzOCwgMjA5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgMjEwLCA5MywgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgCisgICAgMTc5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgMTgwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMzUsIDE2MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE1OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE2MCwgOTMsIAorICAgIDYyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTQ0LCA5MywgMjA4LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIAorICAgIDIzNiwgOTMsIDIyNCwgNDMsIDkzLCAyMzgsIDkxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDIzNCwgMjE3LCA5MywgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgNzYsIDkzLCAyMjQsIDIxMCwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMzMsIDkyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyOCwgMjEsIDkzLCAyMzMsIDk4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI3LCAKKyAgICA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNiwgMTU3LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNiwgMTU4LCA5MywgMjI1LCA5MywgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjYsIDE0LCA5MywgMjUxLCAKKyAgICA4NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAKKyAgICAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDE3MiwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMiwgMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDY1LCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIxMCwgNjYsIDkzLCAyMDQsIDE5MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDMxLCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIwNywgMjM0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNywgMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICA2NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNCwgMzcsIDkzLCAyMzksIAorICAgIDEzNywgMTAsIDIsIDIzNiwgODgsIDExOSwgMjM2LCA4NywgMTAsIDIsIDIzNiwgODIsIDEwLCAyLCAyMzYsIDgzLCAyNDIsIAorICAgIDIyOCwgMjM2LCA4MiwgMTAsIDIsIDIzNiwgODAsIDEwLCAyLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgCisgICAgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNzEsIDEwLCAyLCAyMzYsIDcyLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIAorICAgIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNzAsIDEwLCAyLCAyMzYsIDY4LCAxMCwgMiwgMjM2LCA1OSwgMTAsIDIsIDIzNiwgCisgICAgNTcsIDEwLCAyLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgNTgsIDExOSwgMjM2LCA1NywgMTAsIDIsIDIzNiwgCisgICAgNTgsIDI0MiwgMjI4LCAyMzYsIDU3LCAxMCwgMiwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNDgsIDEwLCAyLCAyMzYsIDQzLCAKKyAgICAxMCwgMiwgMjM1LCAyNDIsIDEwLCAyLCAyMzUsIDI0MywgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCAxNjEsIDEwLCAyLCAKKyAgICAyMzUsIDE2MiwgMjQsIDcyLCAxMCwgMiwgMjM1LCAxNjIsIDI0LCA2NiwgMTAsIDIsIDIzNSwgMTYyLCAyNDIsIDIyOCwgCisgICAgMjM1LCAxNjEsIDEwLCAyLCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgMTYwLCAxMTksIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAKKyAgICAxNjAsIDI0MiwgMjI4LCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgMTU2LCAxMCwgMiwgMjM1LCAxNDMsIDEwLCAyLCAyMzUsIAorICAgIDE0NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgMTQxLCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAzNSwgOTMsIDIyOCwgMTUzLCAxMCwgCisgICAgMiwgMjM1LCAxNDIsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAKKyAgICAyMzUsIDE0MiwgMjQsIDIyNCwgNDMsIDkzLCAyMjgsIDE1MywgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMTcyLCAxMCwgMiwgCisgICAgMjM1LCAxMzcsIDEwLCAyLCAyMzUsIDEzNSwgMTAsIDIsIDIzNSwgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAKKyAgICAyMzUsIDEzNiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM1LCAxMzYsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMzUsIDEzNiwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMzUsIDUwLCAxMCwgMiwgMjM1LCA1MSwgMjQyLCAyMjgsIDIzNSwgNTAsIDEwLCAyLCAyMzUsIAorICAgIDQ4LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjI3LCA3NywgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjEyLCAzNiwgCisgICAgOTMsIDIwNCwgMjA5LCAxMCwgMiwgMjM1LCA0OSwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgMzksIDEwLCAyLCAyMzUsIDQwLCAKKyAgICAyNCwgMzUsIDkzLCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgNDAsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgNDAsIDExOSwgCisgICAgMjM1LCA0MCwgMjI0LCAzMywgMTAsIDIsIDIzNSwgMzIsIDEwLCAyLCAyMzUsIDMwLCAxMCwgMiwgMjM1LCAzMSwgMjQsIAorICAgIDIxMCwgNjUsIDEwLCAyLCAyMzUsIDIyLCAxMCwgMiwgMjM1LCAyMSwgMTAsIDIsIDIzNSwgMTcsIDEwLCAyLCAyMzUsIDE2LCAKKyAgICAxMCwgMiwgMTQ0LCAxMCwgMiwgMjM0LCAyMzYsIDIwNiwgMTU1LCAxMCwgMiwgMjM0LCAyMzYsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzQsIDIxNiwgMTAsIDIsIDIzNCwgNzUsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzQsIDc2LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjQwLCAyNTUsIAorICAgIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjM2LCA4MCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMjYsIDE0NywgMTAsIDIsIDIzNCwgCisgICAgNzYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzQsIDc2LCAyNCwgNjYsIDEwLCAKKyAgICAyLCAyMzMsIDk3LCAxMCwgMiwgMjMzLCA5MiwgMTAsIDIsIDIzMywgOTMsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjMzLCA5MywgCisgICAgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjMzLCA5MywgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjI0LCAxNTQsIAorICAgIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzMywgODgsIDEwLCAyLCA3MCwgMTAsIDIsIDIzMywgMTksIAorICAgIDYyLCAxMCwgMiwgMjMyLCAyMzUsIDEwLCAyLCAyMjgsIDE4MSwgMTAsIDIsIDIyOCwgMTgyLCAxMTksIDIyOCwgMTgyLCAKKyAgICAyNDgsIDMsIDEwLCAyLCAyMjgsIDE4MiwgMTE5LCAyMjgsIDE4MiwgMjA4LCAxOTIsIDEwLCAyLCAyMjgsIDE1NiwgMTAsIDIsIAorICAgIDIyOCwgMTUzLCAxMCwgMiwgMjI4LCAxNTQsIDI0MSwgNTgsIDEwLCAyLCAyMjgsIDE1NCwgMjEzLCA4OCwgMTAsIDIsIDIyOCwgCisgICAgMTU0LCAxMTksIDIyOCwgMTU0LCAyMTAsIDE1LCAxMTksIDIxMCwgMTUsIDIwNCwgMzcsIDExOSwgMjA0LCAzNiwgMTAsIDIsIAorICAgIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI4LCAxNDUsIDEwLCAyLCAyMjgsIDE0NiwgMjQsIDIzNiwgNTgsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjI4LCAxNDQsIDEwLCAyLCAyMjgsIDEzNCwgMTAsIDIsIDIyOCwgMTM1LCAyNCwgMjA3LCAwLCAxMCwgCisgICAgMiwgMjI4LCAxMzUsIDI0MiwgMjI4LCAyMjgsIDEzNCwgMTAsIDIsIDIyOCwgMTM1LCAyMTcsIDQwLCAyMjgsIDEzNCwgMTAsIAorICAgIDIsIDIyOCwgMTM1LCAyMDgsIDE5MiwgMTAsIDIsIDIyOCwgMTI3LCAxMCwgMiwgMjI4LCAxMTcsIDEwLCAyLCAyMjgsIDM1LCAKKyAgICAxMCwgMiwgMjI4LCAyMCwgMTAsIDIsIDE2MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgNjIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDI1MSwgMjM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNTEsIDIzNiwgOTMsIDIyNiwgMTMsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ5LCAKKyAgICA5OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTQ4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzOCwgOTEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIzNiwgODksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNTgsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDUwLCA5MywgMjEwLCAKKyAgICAxMTMsIDkzLCA2MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgCisgICAgMTQzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDEzNiwgOTMsIDIxMiwgMCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAKKyAgICAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCA1MCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjM1LCAyMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyOCwgCisgICAgMTM0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjYsIDE2MywgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjI2LCAxNTcsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNCwgMjEwLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc3LCAKKyAgICA5MywgMjM5LCAxMzcsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzcsIDkzLCAyMzUsIDE2MSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjIyLCA3NywgOTMsIDIwNiwgMjAxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjIxLCAyMTIsIDkzLCAyMTgsIDg0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjAsIDM0LCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTUsIDIwNCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjEyLCAxNzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMiwgNjQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMiwgMCwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEwLCAxMTQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIxMCwgMzEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwOSwgMjIwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMDksIDE2OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA3LCAyNDMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNiwgMjMyLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCA2NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCA4LCAyNCwgMTcyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMDMsIDE5MCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTk5LCAzNiwgMTAsIDIsIDIyNywgMTA2LCAxMCwgMiwgMjI3LCAxMDcsIAorICAgIDI0MiwgMjI4LCAyMjcsIDEwNiwgMTAsIDIsIDIyNywgOTYsIDEwLCAyLCAyMjcsIDkzLCAxMCwgMiwgMjI3LCA5MSwgMTAsIAorICAgIDIsIDIyNywgOTAsIDEwLCAyLCAyMjcsIDg4LCAxMCwgMiwgMjI3LCA4OSwgMTE5LCAyMjcsIDg4LCAxMCwgMiwgMjI3LCA3NiwgCisgICAgMTAsIDIsIDIyNywgNzcsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyNywgNzIsIDEwLCAyLCAyMjcsIDczLCAKKyAgICAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjcsIDczLCAyNDIsIDIyOCwgMjI3LCA3MiwgMTAsIDIsIDIyNywgNzAsIDEwLCAyLCAKKyAgICAyMjcsIDY5LCAxMCwgMiwgMjI3LCAzOCwgMTAsIDIsIDIyNywgMzksIDIyNSwgMTU4LCAyNCwgMTA4LCAxMTksIDIyNSwgCisgICAgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjcsIDM5LCAxMTksIDIyNywgMzksIDIyNSwgMTU4LCAyNCwgMTA4LCAxMTksIDIyNSwgCisgICAgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjYsIDIzNCwgMTAsIDIsIDIyNiwgMTYzLCAxMCwgMiwgMjI2LCAxNjQsIDI0LCAyNDksIAorICAgIDExOCwgMTAsIDIsIDIyNiwgMTY0LCAyNCwgNjYsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjYsIAorICAgIDE1NywgMTAsIDIsIDIyNiwgMTQ3LCAxMCwgMiwgMjI2LCAxMzQsIDEwLCAyLCAyMjYsIDEzMywgMTAsIDIsIDIyNiwgMTMxLCAKKyAgICAxMCwgMiwgMjI2LCAxMzIsIDExOSwgMjI2LCAxMzEsIDEwLCAyLCAyMjYsIDE1LCAxMCwgMiwgMjI2LCAxNiwgMTE5LCAyMzQsIAorICAgIDc2LCAyNCwgMjUwLCAxODAsIDIyNiwgMTYsIDExOSwgMjM0LCA3NiwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI2LCAxMywgCisgICAgMTAsIDIsIDIyNiwgMTEsIDEwLCAyLCAyMjYsIDEyLCAyMDMsIDczLCAxOSwgMTAsIDIsIDIyNiwgMTAsIDEwLCAyLCAyMjYsIAorICAgIDIsIDEwLCAyLCAyMjYsIDMsIDIzNSwgMjgsIDEwLCAyLCAyMjYsIDEsIDEwLCAyLCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgCisgICAgMjQ2LCAyMTcsIDQwLCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgMjM5LCAxMCwgMiwgMjI1LCAyMTcsIDEwLCAyLCAxOTQsIDEwLCAKKyAgICAyLCAyMjUsIDE1NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgNjIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDM1LCA5MywgMjQyLCAKKyAgICA1OSwgOTMsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMzUsIDkzLCAyMzYsIDQ5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAzNSwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MSwgMTUxLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTEsIAorICAgIDg1LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTAsIDE4MiwgMTk5LCAzMiwgMjA2LCAxNTUsIDEwLCAyLCAyMjUsIDE1OCwgCisgICAgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjQxLCAKKyAgICAyNTQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzOCwgMTc5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzYsIDg5LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAyMzUsIDQwLCA5MywgMjM1LCAzOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzQsIAorICAgIDIxNiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM0LCA3NiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIDEzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAKKyAgICAxMzUsIDkzLCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgMTM1LCA5MywgMjI0LCA0MiwgMTAsIDIsIDIyNSwgCisgICAgMTU4LCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMTQ3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAyMjYsIDEzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMywgOTMsIAorICAgIDIzNCwgNzYsIDkzLCA2MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgCisgICAgMTU0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIDI3LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjI1LCAxNTgsIAorICAgIDI0LCAyMTAsIDY2LCA5MywgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIxMCwgMTEsIDkzLCAyMzUsIDEzNiwgCisgICAgOTMsIDIzOCwgMTA5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMTAsIDExLCA5MywgMjM1LCAxMzYsIDIwNiwgMTU1LCAxMCwgCisgICAgMiwgMjI1LCAxNTgsIDI0LCAyMDksIDIxOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA5LCAyMTksIDkzLCAyMDksIDIxOCwgCisgICAgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNywgMTMsIDEwLCAyLCAyMjUsIAorICAgIDE1OCwgMjQsIDIwNywgMCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA2LCAyMDIsIDkzLCAzNSwgOTMsIDIwOCwgMjUsIDkzLCAKKyAgICAxODgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAxMDgsIDkzLCA2MiwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNCwgNDgsIDkzLCAKKyAgICAyNTAsIDE4MSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjAzLCAxOTAsIAorICAgIDEwLCAyLCAyMjUsIDE1OCwgMjA4LCAxOTIsIDEwLCAyLCAyMjUsIDE1NSwgMTAsIDIsIDIyNSwgMTU2LCAyNCwgMjEwLCA2NSwgCisgICAgMTAsIDIsIDIyNSwgMTU2LCAyNCwgMjEwLCA2NiwgOTMsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTYsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMjUsIDE1NiwgMjM1LCAyOSwgMTE5LCAyMjUsIDE1NiwgMjM1LCAyOSwgMjEwLCA2NSwgMTAsIDIsIDIyNSwgMTUxLCAKKyAgICAxMCwgMiwgMjI1LCA5MywgMTAsIDIsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjI1LCA5MSwgMTAsIDIsIDIyNSwgCisgICAgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgOTIsIDI0LCAyMjUsIDI0NiwgOTMsIDIxMiwgMTc1LCAxMCwgMiwgMjI0LCAKKyAgICAyMTAsIDEwLCAyLCAyMjQsIDE5MSwgMTAsIDIsIDIyNCwgMTc5LCAxMCwgMiwgMjI0LCAxNTQsIDEwLCAyLCAyMjQsIDQyLCAKKyAgICAxMCwgMiwgMjI0LCA0MywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyNTEsIAorICAgIDE1MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzgsIDkxLCAxMCwgMiwgCisgICAgMjI0LCA0MSwgMjQsIDIzOCwgOTIsIDIwNiwgMTU1LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAKKyAgICAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNCwgNzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjgsIDEzNCwgCisgICAgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjcsIDkzLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNywgOTEsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjI3LCA5MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyNSwgMTc2LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjE4LCAxMzMsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjA5LCAxODMsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMDksIDE2MCwgOTMsIDI0OCwgMzYsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjA0LCAyMDksIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIyNCwgNDEsIDI0MiwgMjI4LCAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjE3LCA0MCwgCisgICAgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDIwOCwgMTkyLCAxMCwgMiwgMjI0LCA0MSwgMjEwLCA0NiwgMTAsIDIsIDIyNCwgCisgICAgMzksIDEwLCAyLCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMTE5LCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMjE3LCAKKyAgICA0MCwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDIxMCwgNDYsIDEwLCAyLCAyMjQsIDMwLCAxMCwgMiwgMjI0LCAyNywgMTAsIAorICAgIDIsIDIyNCwgMjUsIDEwLCAyLCAyMjQsIDI2LCAxMTksIDIyNCwgMjUsIDEwLCAyLCAyMjQsIDI2LCAxMTksIDIyNCwgMjYsIAorICAgIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDE3OCwgMTAsIDIsIDIyMiwgMjM1LCAyNCwgMjA3LCAwLCAxMCwgMiwgCisgICAgMjIyLCAyMzUsIDIzNSwgMjgsIDEwLCAyLCAyMjIsIDIzNCwgMTAsIDIsIDIyMiwgMjA2LCAxMCwgMiwgMjIyLCAxNTgsIDEwLCAKKyAgICAyLCAyMjIsIDEzNSwgMTAsIDIsIDIyMiwgMTM0LCAxMCwgMiwgMjIyLCA3NiwgMTAsIDIsIDIyMiwgMjgsIDEwLCAyLCAyMjEsIAorICAgIDIxMSwgMTAsIDIsIDIyMSwgMTY0LCAxMCwgMiwgMjIxLCA0MSwgMTAsIDIsIDIyMSwgNDIsIDExOSwgMjIxLCA0MSwgMTAsIAorICAgIDIsIDIyMSwgMzAsIDEwLCAyLCAyMjEsIDMxLCAyMzUsIDI4LCAxMCwgMiwgMjIxLCAxMiwgMTAsIDIsIDIyMCwgMjU0LCAxMCwgCisgICAgMiwgMjIwLCAyNTAsIDEwLCAyLCAyMjAsIDI1MSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAyNTEsIDI0LCAyMjUsIDI0NSwgMTAsIAorICAgIDIsIDIyMCwgMjUxLCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MCwgMTAsIDIsIDIyMCwgCisgICAgMjUxLCAxMTksIDIyMCwgMjUxLCAyNCwgMzUsIDkzLCAxODgsIDEwLCAyLCAyMjAsIDI1MSwgMjQyLCAyMjgsIDIyMCwgMjUwLCAKKyAgICAxMCwgMiwgMjIwLCAyNDgsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAyNDksIDI0LCAzNSwgOTMsIAorICAgIDI0MSwgNzYsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDI0MSwgNzYsIDEwLCAyLCAyMjAsIDI0OSwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDE4OCwgMTAsIDIsIDIyMCwgMTYwLCAxMCwgMiwgMjIwLCAxNDcsIDEwLCAyLCAyMjAsIDE0OCwgMjI4LCA0OSwgMTAsIDIsIAorICAgIDIyMCwgMTQ4LCAyNCwgMjA5LCAyMjEsIDIwNiwgMTU1LCAxMCwgMiwgMjIwLCAxNDgsIDIxNywgNDAsIDIyMCwgMTQ3LCAxMCwgCisgICAgMiwgMjIwLCAxNDYsIDEwLCAyLCAyMjAsIDEzOSwgMjE4LCA3NSwgMTAsIDIsIDIyMCwgMTM4LCAxMCwgMiwgMjIwLCAxMzcsIAorICAgIDEwLCAyLCAyMjAsIDM0LCAxMCwgMiwgMjIwLCAzNSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAzNSwgMjQsIDIwNCwgMzYsIDEwLCAKKyAgICAyLCAyMjAsIDM1LCAyMTAsIDQ2LCAxMCwgMiwgMjE5LCAxNTAsIDEwLCAyLCAyMTksIDE1MSwgMjQsIDcyLCAxMCwgMiwgCisgICAgMjE5LCAxNDksIDEwLCAyLCAyMTksIDExOSwgMTAsIDIsIDIxOSwgMTIwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAKKyAgICAyMTksIDEyMCwgMjQsIDIzNiwgNTAsIDkzLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIxOSwgMTE1LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAKKyAgICAyNCwgMjUwLCAxODIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjIyLCA3NywgOTMsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjAsIDM0LCAKKyAgICAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMzUsIDI1MSwgODUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAyNTAsIAorICAgIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDI1MCwgMTgyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDIwNCwgNDgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjAzLCAxOTAsIDEwLCAKKyAgICAyLCAyMTksIDEwMywgMTAsIDIsIDIxOCwgMTMzLCAxMCwgMiwgMjE4LCAxMDUsIDEwLCAyLCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMjIsIDEzNSwgCisgICAgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAKKyAgICAzNiwgMTE5LCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIAorICAgIDIwMywgMTkwLCAxMCwgMiwgMjE4LCA5MCwgMjA2LCAxNTUsIDEwLCAyLCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMTgsIDkwLCAyNDIsIDIyOCwgMjE4LCA4OSwgMTAsIDIsIDIxOCwgOTAsIDI0MiwgMjI4LCAyMTgsIDkwLCAyMjUsIDE1NiwgCisgICAgMTE5LCAyMjUsIDE1NSwgMTAsIDIsIDIxOCwgODQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyNTAsIDE3NSwgMTAsIAorICAgIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjM5LCAxMzEsIAorICAgIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjE4LCA4NSwgMjUyLCAKKyAgICA3LCAyNCwgMTk0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgCisgICAgMjQsIDIwOSwgMTU3LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIxOCwgODUsIDIyNiwgCisgICAgMTMyLCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTgsIDg1LCAyMjYsIDEzMiwgMjQsIDI0OCwgMTg5LCA2NiwgMTAsIDIsIAorICAgIDE3MiwgMTAsIDIsIDIxNiwgMjAxLCAxMCwgMiwgMjE2LCAxNjIsIDEwLCAyLCAyMTYsIDEzNSwgMTAsIDIsIDIxNiwgMywgCisgICAgMTAsIDIsIDIxNSwgMjA0LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCA2MiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjUyLCA4OSwgCisgICAgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI0OCwgMzYsIDEwLCAyLCAyMTUsIAorICAgIDIwNSwgMjQsIDcyLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCA3MCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjMyLCAyMzUsIDEwLCAKKyAgICAyLCAyMTUsIDIwNSwgMjQsIDY2LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjE1LCAyMDUsIDI0MiwgCisgICAgMjI4LCAyMTUsIDIwNCwgMTAsIDIsIDIxNSwgMTQ2LCAxMCwgMiwgMjE1LCAxNDcsIDI0LCAyMjcsIDcyLCAxMCwgMiwgMjE1LCAKKyAgICAxNDcsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjE1LCAxNDcsIDI0LCAxOTksIDExNCwgMTAsIDIsIDIxNSwgMTQ3LCAyMTcsIAorICAgIDQwLCAyMTUsIDE0NiwgMTAsIDIsIDIxMywgMjUyLCAxMCwgMiwgMjEzLCAyNDYsIDEwLCAyLCAyMTMsIDg4LCAxMCwgMiwgCisgICAgMjEyLCAxNzUsIDEwLCAyLCAyMTIsIDY0LCAxMCwgMiwgMjEyLCA1MSwgMjE4LCA3NSwgMTAsIDIsIDIxMiwgNTAsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgNjIsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM5LCAxMzcsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM5LCAKKyAgICAxMzUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMTQ0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMTIsIAorICAgIDUxLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjEsIAorICAgIDIxMSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxMiwgMzUsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgMjEwLCAzMSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDcsIDI0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIAorICAgIDIwNCwgNDcsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA0LCA0MiwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDQsIDEyLCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDIwMywgMjE0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwMywgMTkwLCAxMCwgMiwgMjEyLCA1MSwgMTE5LCAKKyAgICAyMTIsIDUwLCAxMCwgMiwgMjEyLCA1MSwgMjM1LCAyOCwgMTAsIDIsIDIxMiwgMzUsIDEwLCAyLCAyMTIsIDM2LCAyMjUsIAorICAgIDE1OCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjEyLCA4LCAxMCwgMiwgMjEyLCAwLCAxMCwgMiwgMjEwLCAxMTQsIDEwLCAyLCAKKyAgICAyMTAsIDExMiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgNjIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgCisgICAgMjEwLCAxMTMsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIxMCwgMTEzLCAKKyAgICAyNCwgMjA5LCAyMTgsIDEwLCAyLCAyMTAsIDExMywgMjQsIDIwNCwgMTkyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCA2NiwgMTAsIAorICAgIDIsIDIxMCwgMTEzLCAyNCwgMTA4LCA5MywgNjIsIDEwLCAyLCAyMTAsIDExMCwgMTAsIDIsIDIxMCwgMTA4LCAxMCwgMiwgCisgICAgMjEwLCA4MiwgMTAsIDIsIDIxMCwgNjUsIDEwLCAyLCAyMTAsIDY2LCAyMzMsIDk3LCAxMCwgMiwgMjEwLCA2NiwgMTE5LCAKKyAgICAyMTAsIDY2LCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIxMCwgNjYsIAorICAgIDExOSwgMjEwLCA2NiwgMjA3LCAyNSwgMTE5LCAyMDcsIDI1LCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMTAsIAorICAgIDU4LCAxMCwgMiwgMjEwLCA1MywgMTAsIDIsIDIxMCwgNDksIDEwLCAyLCAyMTAsIDQ4LCAxMCwgMiwgMjEwLCA0NSwgMTAsIAorICAgIDIsIDIxMCwgMzEsIDEwLCAyLCAyMTAsIDMyLCAyNCwgNjIsIDEwLCAyLCAyMTAsIDMyLCAyNCwgMjI4LCAxMzQsIDEwLCAyLCAKKyAgICAyMTAsIDI1LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDYyLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDI0OSwgOTksIDEwLCAyLCAyMTAsIAorICAgIDI2LCAyNCwgMjQ4LCAxNCwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyNDEsIDE5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIzNiwgCisgICAgNDksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIAorICAgIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI1LCAyMzksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI0LCAyNywgMTAsIDIsIDIxMCwgCisgICAgMjYsIDI0LCAyMjEsIDMwLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTAsIDE5LCAxMCwgMiwgMjEwLCAKKyAgICAxNCwgMTAsIDIsIDIxMCwgMTUsIDIwNiwgMTU1LCAxMCwgMiwgMjEwLCAxNSwgMTE5LCAyMTAsIDE1LCAyNDgsIDQsIDExOSwgCisgICAgMjQ4LCAzLCAxMCwgMiwgMjEwLCAxMCwgMTAsIDIsIDIwOSwgMjIwLCAxMCwgMiwgMjA5LCAyMjEsIDExOSwgMjI4LCA1MCwgCisgICAgMjA5LCAyMjAsIDEwLCAyLCAyMDksIDIxOCwgMTAsIDIsIDIwOSwgMjE3LCAxMCwgMiwgMjA5LCAxODIsIDEwLCAyLCAyMDksIAorICAgIDE4MywgMjM1LCAyOCwgMTAsIDIsIDIwOSwgMTY4LCAxMCwgMiwgMjA5LCAxNjYsIDEwLCAyLCAyMDksIDE2NywgMTE5LCAKKyAgICAyMDksIDE2NywgMjA5LCAyMTgsIDEwLCAyLCAyMDksIDE1OSwgMTAsIDIsIDIwOSwgMTU3LCAxMCwgMiwgMjA4LCAyNCwgMTAsIAorICAgIDIsIDIwOCwgMjUsIDExOSwgMjA4LCAyNCwgMTAsIDIsIDIwNywgMjQ2LCAxMCwgMiwgMjA3LCAyNDUsIDEwLCAyLCAyMDcsIAorICAgIDI0MywgMTAsIDIsIDIwNywgMjM0LCAxMCwgMiwgMjA3LCAyMzMsIDEwLCAyLCAyMDcsIDIwNywgMTAsIDIsIDIwNywgMjA2LCAKKyAgICAxMCwgMiwgMjA3LCAzNiwgMTAsIDIsIDIwNywgMzcsIDI1MCwgMTY1LCAxMCwgMiwgMjA3LCAzNywgMjQsIDIzNCwgNzUsIAorICAgIDEwLCAyLCAyMDcsIDM3LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMDcsIDM3LCAyMzUsIDI4LCAxMCwgMiwgMjA3LCAyNCwgCisgICAgMTAsIDIsIDIwNywgMjUsIDExOSwgMjA3LCAyNSwgMjE5LCAxNTEsIDExOSwgMjE5LCAxNTEsIDI0MSwgMCwgMTE5LCAyNDAsIAorICAgIDI1NSwgMTAsIDIsIDIwNywgMjUsIDIwOCwgMTkyLCAxMCwgMiwgMjA3LCAxMywgMTAsIDIsIDE2NSwgMjQsIDI0OCwgMTg4LCAKKyAgICAxMCwgMiwgMTY1LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDE2NSwgMjQsIDIxMCwgNjUsIDEwLCAyLCAxNjUsIDI0LCAyMDksIAorICAgIDIyMCwgMTAsIDIsIDE2NSwgMjQsIDIwNCwgMjA5LCAxMCwgMiwgMTY1LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwNywgMCwgCisgICAgMTAsIDIsIDIwNiwgMjMyLCAxMCwgMiwgMjA2LCAyMDEsIDEwLCAyLCAyMDYsIDIwMiwgMjM1LCAyOCwgMTAsIDIsIDIwNiwgCisgICAgMTUsIDEwLCAyLCAyMDYsIDE2LCAyMDYsIDE1NSwgMTAsIDIsIDIwNSwgMjQyLCAxMCwgMiwgMjA1LCAyMTksIDEwLCAyLCAKKyAgICAyMDUsIDIyMCwgMjQsIDIwNywgMCwgMTAsIDIsIDIwNSwgMjIwLCAxMTksIDIwNSwgMjE5LCAxMCwgMiwgMjA1LCAyMjAsIAorICAgIDExOSwgMjA1LCAyMjAsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjA0LCAKKyAgICAyMTUsIDEwLCAyLCAyMDQsIDIwOSwgMTAsIDIsIDIwNCwgMjA3LCAxMCwgMiwgMjA0LCAyMDMsIDEwLCAyLCAyMDQsIDE5MiwgCisgICAgMTAsIDIsIDIwNCwgMTkzLCAxMTksIDIwNCwgMTkzLCAxOTksIDExNSwgMTE5LCAxOTksIDExNCwgMTAsIDIsIDY2LCAxMCwgCisgICAgMiwgMTA4LCAyMzUsIDM5LCAxMCwgMiwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMjE2LCAyMTEsIAorICAgIDExOSwgMjE2LCAyMTEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDIwNywgMjA4LCAKKyAgICAxMTksIDIwNywgMjA3LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMTA4LCAyMTMsIDEwNSwgMTE5LCAxMDgsIDIxMywgMTA0LCAKKyAgICAxMCwgMiwgMjA0LCA0NywgMTAsIDIsIDIwNCwgNDIsIDEwLCAyLCAyMDQsIDM2LCAxMCwgMiwgMjA0LCAzNywgMjI1LCAyMzksIAorICAgIDEwLCAyLCAyMDQsIDM3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMDQsIDM3LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMDQsIAorICAgIDM3LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIDEwLCAyLCAyMDQsIDM3LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgMTA4LCAKKyAgICAyMzUsIDI4LCAxMCwgMiwgMjA0LCAzNywgMjM1LCAyOCwgMTAsIDIsIDIwNCwgMzcsIDIxMCwgNDYsIDEwLCAyLCAyMDQsIAorICAgIDM3LCAyMTAsIDQ3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMDQsIDMyLCAxMCwgMiwgMjA0LCAxMiwgMTAsIDIsIDIwNCwgCisgICAgMTMsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIwNCwgMTMsIDI0LCAyMjIsIDc3LCA5MywgMjQyLCA1OCwgMTAsIDIsIDIwNCwgCisgICAgMTMsIDI0LCAyMTAsIDExMiwgMTAsIDIsIDIwNCwgMTMsIDI0LCA2NiwgMTAsIDIsIDIwNCwgMTEsIDEwLCAyLCAyMDQsIDcsIAorICAgIDEwLCAyLCAyMDQsIDgsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjA0LCA4LCAyNCwgMTcyLCAxMCwgMiwgMjA0LCA1LCAxMCwgMiwgCisgICAgMjA0LCA2LCAyMzUsIDI4LCAxMCwgMiwgMjAzLCAyMTQsIDEwLCAyLCAyMDMsIDIxNSwgMjQyLCAyMjgsIDIwMywgMjE0LCAKKyAgICAxMCwgMiwgMjAzLCAyMTUsIDIxMCwgNDYsIDEwLCAyLCAyMDMsIDIxMiwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMzUsIDkzLCAKKyAgICAxNDQsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDM1LCA5MywgMTg4LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyNTEsIDE1MSwgMTAsIAorICAgIDIsIDIwMywgMjEzLCAyNCwgMTQ0LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAKKyAgICAyMDQsIDQ3LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMDQsIDQ4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMDMsIDIxMywgMjQsIAorICAgIDIwNCwgNDgsIDkzLCAyNDgsIDE4OCwgMTAsIDIsIDIwMywgMjExLCAxMCwgMiwgMjAzLCAyMDgsIDEwLCAyLCAyMDMsIDIwNywgCisgICAgMTAsIDIsIDIwMywgMjAzLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCA2MiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjUwLCAxNzUsIAorICAgIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDE0OCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM5LCAxMjUsIDEwLCAyLCAyMDMsIDIwNCwgCisgICAgMjQsIDIzNiwgODksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNTgsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzUsIDUwLCAxMCwgCisgICAgMiwgMjAzLCAyMDQsIDI0LCAxNDQsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAKKyAgICAyMjgsIDEzNCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI4LCAyMCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI2LCAxNjMsIAorICAgIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyMSwgMTY0LCAxMCwgMiwgMjAzLCAKKyAgICAyMDQsIDI0LCAxNzIsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwOSwgCisgICAgMTY2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDQsIDIxNSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMTA4LCA5MywgMjM1LCAKKyAgICAzOSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAKKyAgICAyMDMsIDIwMSwgMTAsIDIsIDIwMywgMjAyLCAyNCwgNjYsIDEwLCAyLCAyMDMsIDE5MCwgMTAsIDIsIDIwMywgMTkxLCAyNCwgCisgICAgNjIsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIDIyNiwgMTUsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgCisgICAgMjAzLCAxOTEsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDMsIDE4NiwgMTAsIDIsIDIwMywgMTg5LCAxMCwgMiwgMjAzLCAxODcsIAorICAgIDEwLCAyLCAyMDMsIDE4MywgMTAsIDIsIDIwMywgMTcxLCAxMCwgMiwgMjAzLCAxNzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjAzLCAxNzAsIDEwLCAyLCAxOTksIDExNCwgMTAsIDIsIDE5OSwgMTE1LCAyMDYsIDE1NSwgMTAsIDIsIDE5OSwgMTE1LCAKKyAgICA5NSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMTk5LCAxMTAsIDEwLCAyLCAxOTksIDEwMiwgMTAsIDIsIDE5OSwgODgsIDEwLCAKKyAgICAyLCAxOTksIDM2LCAxMCwgMiwgMTk5LCAzNywgMTE5LCAxOTksIDM2LCAxMCwgMiwgMTk5LCAzNSwgMTAsIDIsIDE5OSwgMzMsIAorICAgIDEwLCAyLCAxOTksIDM0LCAyMjcsIDk1LCAyMDYsIDE1NSwgMTAsIDIsIDE5OSwgMjgsIDEwLCAyLCAxOTksIDE5LCAxMCwgMiwgCisgICAgMTk5LCAzLCAxMCwgMiwgMTk5LCAxLCAxMCwgMiwgMTk5LCAyLCAyNCwgNjIsIDEwLCAyLCAxOTksIDAsIDEwLCAyLCAxOTgsIAorICAgIDI1NSwgMTAsIDIsIDIyNywgNjEsIDIzOCwgMjA2LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxOCwgODksIDEwLCAyLCAyNTIsIAorICAgIDcsIDI0LCA2MiwgMTAsIDIsIDI1MSwgOTgsIDI0LCAyMjYsIDQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwNCwgCisgICAgNDgsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgNDcsIDEwLCAyLCAyNDEsIDAsIDkzLCAyMDksIDIyMCwgMTAsIDIsIAorICAgIDIzOSwgMTM2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjM4LCAxMSwgMjQsIAorICAgIDIxMCwgNjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUxLCA4NiwgOTMsIDIyNywgNzcsIDkzLCA2MiwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIzNiwgMTQsIDEwLCAyLCAyMzUsIDE1MSwgMTAsIDIsIDIzMywgNzMsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDI1MSwgNTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI1MCwgMTc4LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM0LCA3NiwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNzIsIDEwLCAKKyAgICAyLCAyMjcsIDEwOCwgMjQsIDIwOSwgMjEzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDIxNSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjAzLCAyMTIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjI0LCA0MSwgMjEwLCAKKyAgICA0NywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzOCwgOTIsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjI0LCAKKyAgICA0MSwgMjQsIDIwOSwgMjIwLCAxMCwgMiwgMjIyLCAyNywgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAKKyAgICAyMjAsIDE1OSwgMTAsIDIsIDIxOSwgMTE4LCAxMCwgMiwgMjE5LCAxMTcsIDEwLCAyLCAyMTksIDExNiwgMjQsIDI0OSwgOTksIAorICAgIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjE4LCAxMDYsIDIxMiwgMjI4LCAyMTksIDEwOSwgMjQxLCAKKyAgICAxNTQsIDEwLCAyLCAyMTYsIDQsIDI1MCwgMTY1LCAxMCwgMiwgMjE1LCAxNTAsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMDYsIDE0LCAxMCwgMiwgMjA0LCAxMywgMjQsIDIyMiwgNzYsIDEwLCAyLCAxMDgsIAorICAgIDY2LCAxMCwgMTQ1LCAyLCAxMjAsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMjYsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDI1MCwgMTgxLCAKKyAgICAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDEyNiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjQwLCAyNTUsIAorICAgIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDY2LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzcsIDYxLCA2NiwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDY2LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgNjYsIDEwLCAxNDUsIAorICAgIDIsIDIzOCwgMjMyLCA2NiwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDY2LCAxMCwgMTQ1LCAyLCAxMTIsIDIzNSwgMjQ0LCAxMCwgCisgICAgMTQ1LCAyLCAxMjAsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAxMjYsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgCisgICAgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjM1LCAyNDQsIAorICAgIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDExNCwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDExMiwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDEyMCwgMjM1LCAKKyAgICAyNDEsIDEwLCAxNDUsIDIsIDEyNiwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMzUsIDI0MSwgMTAsIDE0NSwgCisgICAgMiwgMjM3LCA2MSwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDEyMCwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDgyLCAKKyAgICAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgODMsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjEwLCA4MiwgMTAsIAorICAgIDE0NSwgMiwgMjM3LCA2MSwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIxMCwgCisgICAgMTM2LCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIxMCwgCisgICAgODIsIDEwLCAxNDUsIDIsIDExMiwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTIwLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjYsIAorICAgIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA3NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAKKyAgICAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAyMTAsIDgzLCAyNCwgMjM2LCA3MiwgCisgICAgOTMsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMTAsIDgzLCAyNCwgMjM2LCA3MiwgOTMsIDIyMSwgMTY0LCAxMCwgMTQ1LCAyLCAKKyAgICAxMTIsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjAsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjYsIDI0NywgMjU1LCAxMCwgCisgICAgMTQ1LCAyLCAxMjYsIDI0OCwgMCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNDcsIDI1NSwgMTAsIAorICAgIDE0NSwgMiwgMjM3LCA2MSwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIzOCwgOTMsIAorICAgIDEwLCAxNDUsIDIsIDEyNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIzOCwgOTAsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIAorICAgIDczLCAyMzYsIDI0MiwgMjI0LCAxODAsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAKKyAgICAxNzgsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAxODEsIDYyLCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgMTgxLCAyNTAsIDEwMywgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDIwMywgNzMsIDIzNiwgMjQyLCAyNTAsIDE3NywgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAKKyAgICAyMjgsIDEyNiwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDEyOCwgNjIsIDEwLCAxNDUsIAorICAgIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxMjgsIDI1MCwgMTAzLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgCisgICAgMjAzLCA3MywgMjM2LCAyNDIsIDIwMywgMTg1LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjAzLCA3MywgMjM2LCAyNDIsIAorICAgIDIwMywgMTg0LCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQyLCAxMCwgMTQ1LCAyLCAKKyAgICAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQxLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgCisgICAgMjM2LCAyNDIsIDIyOCwgMTQwLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQzLCAKKyAgICA2MiwgMTAsIDE0NSwgMiwgMTIwLCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjUwLCAxODIsIDIwNiwgCisgICAgMTU1LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNTAsIAorICAgIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMTIwLCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAxMjYsIDI0OSwgODYsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjQ5LCA4NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIzNywgNjEsIDI0OSwgODYsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI0OSwgODcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDEyNywgMTAsIDE0NSwgMiwgMjE5LCAxMjgsIDEwLCAxNDUsIDIsIDExMiwgMjM4LCA4OSwgMTAsIDE0NSwgMiwgCisgICAgMTIwLCAyMzgsIDg5LCAxMCwgMTQ1LCAyLCAxMTIsIDIwNiwgNzUsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAxMjAsIDIwNiwgCisgICAgNzIsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMDksIDk1LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAyMDYsIDc1LCAyMDMsIDczLCAyMzYsIDI0MiwgNjIsIDEwLCAxNDUsIDIsIDEyMCwgMjA2LCA3MiwgMjAzLCA3MywgMjM2LCAKKyAgICAyNDIsIDYyLCAxMCwgMTQ1LCAyLCAxMTIsIDIzOCwgMjI4LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTEyLCAyMTQsIDg4LCAKKyAgICAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgNDAsIDI1MCwgMTY4LCAxMTIsIDIwOSwgOTYsIDEwLCAxNDUsIDIsIDQwLCAyNTAsIAorICAgIDE2OCwgMTEyLCAyMTQsIDg3LCAxMCwgMTQ1LCAyLCAxMTIsIDIxNCwgODgsIDIzNSwgMjIsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMTY3LCAyMzUsIDIyLCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMTEyLCAyMDYsIDc0LCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgCisgICAgMTIwLCAyMDYsIDcxLCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMjM2LCAyMzUsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAyMzcsIAorICAgIDEwNCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNywgNjEsIDEwOCwgCisgICAgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMTAsIAorICAgIDEzNiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTE0LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMjE0LCAyMTIsIDIsIDQwLCAyNTAsIDE2OCwgMjAwLCAyMzgsIAorICAgIDI0MCwgMjM5LCAxMCwgMjE0LCAyMTIsIDIsIDgzLCAyNDYsIDc5LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDI0NiwgCisgICAgNzksIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjA1LCA5NCwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyMTQsIDkzLCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxOCwgOTAsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIwOSwgMjE4LCAxMCwgCisgICAgMiwgMjUxLCAyMzYsIDI0LCAyMzgsIDkxLCAxMCwgMiwgMjQ5LCAxMTksIDI0LCAyNDEsIDAsIDIwNiwgMTU1LCAxMCwgMiwgCisgICAgMjQ5LCAxMDYsIDI0LCAyNTIsIDYsIDEwLCAyLCAyNDksIDEwNiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjQ5LCAxMDYsIDI0LCAKKyAgICAxOTksIDExNCwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAzNywgMjQsIDIyMCwgMTYwLCAxMCwgMiwgMjQyLCA1OSwgMjQsIAorICAgIDIwNywgMCwgMTAsIDIsIDI0MiwgNDksIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDI0MSwgMzIsIDI0LCAyMjgsIDE1MywgMTAsIAorICAgIDIsIDI0MSwgMzIsIDI0LCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAyNDEsIDMwLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjUxLCA1MywgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDI1MCwgMTgyLCAyNTAsIDE1NiwgMjI1LCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjQxLCAxOSwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjM5LCAxMjUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyMzYsIDg5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxNDQsIAorICAgIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAxNDQsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMTMyLCAKKyAgICAyNCwgMjI1LCAyMzksIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgMjQwLCA5MywgMjI3LCAzOCwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjI1LCAxNDUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgOTEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDIyNSwgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI0LCAzMSwgOTMsIDIzNSwgMTM1LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMjIsIDEzNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjIyLCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAKKyAgICAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTUsIAorICAgIDIwNCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjA5LCAxODMsIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjE2LCAxMzUsIDEwLCAyLCAKKyAgICAyMzgsIDExMCwgMjAwLCAxOTUsIDEwLCAyLCAyMzgsIDkyLCAyNDIsIDIyOCwgMjM4LCA5MSwgMTAsIDIsIDIzOCwgMTEsIAorICAgIDIxMCwgNDcsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjEwLCA0NywgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDE5NCwgMTAsIAorICAgIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyMiwgNzYsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjIyLCAyOCwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMDgsIAorICAgIDI0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwOCwgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ5LCAxMDUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQxLCAzMiwgMjM1LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzMiwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTMyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzgsIDExMiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNTAsIAorICAgIDkzLCAyNDEsIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNTAsIDkzLCAyMjAsIDM0LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzNCwgMjM2LCA5MywgNjIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI1LCAyNDAsIDkzLCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNSwgOTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI1LCA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNCwgMzAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjIwLCAzNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjAsIDM1LCA5MywgMjM5LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMjAsIDM1LCA5MywgMjM1LCAxNjEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCAyNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAxOTksIDE5LCAxMCwgMiwgMjM2LCA4MywgMjEyLCAyMjgsIDIxOSwgMTA5LCAyNDEsIDE1NCwgMTAsIDIsIDIzNSwgMjQzLCAKKyAgICAyNCwgNjYsIDEwLCAyLCAyMzUsIDEzNiwgMjQsIDIzNSwgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAyMzUsIAorICAgIDQ5LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDQwLCA5MywgMjM1LCAxMzYsIDI0LCAyMDcsIDAsIDEwLCAKKyAgICAyLCAyMzQsIDIzNiwgMjA2LCAxNTYsIDIzNSwgMjgsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjUwLCAxODIsIDExOSwgMjM0LCAKKyAgICA3NiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDgsIDM2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNjEsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjAzLCAyMTQsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDE5OSwgNCwgMTE5LCAxOTksIDMsIDEwLCAyLCAyMjUsIDE0NiwgMTAsIDIsIDIyNSwgMTQ0LCAxMCwgCisgICAgMiwgMjI1LCAxNDMsIDEwLCAyLCAyMjUsIDE0MiwgMTAsIDIsIDIyNSwgMTQxLCAxMCwgMiwgMjI1LCAxNDAsIDEwLCAyLCAKKyAgICAyMjUsIDEzOSwgMTAsIDIsIDIyNSwgMTM4LCAxMTksIDIyNSwgMTM4LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAxMzcsIDEwLCAKKyAgICAyLCAyMjUsIDEzNiwgMTE5LCAyMjUsIDEzNSwgMTAsIDIsIDIyNSwgMTM0LCAxMCwgMiwgMjI1LCAxMzMsIDEwLCAyLCAyMjUsIAorICAgIDEzMiwgMTAsIDIsIDIyNSwgMTMxLCAxMCwgMiwgMjI1LCAxMzAsIDEwLCAyLCAyMjUsIDEyOSwgMTAsIDIsIDIyNSwgMTI4LCAKKyAgICAxMCwgMiwgMjI1LCAxMjcsIDEwLCAyLCAyMjUsIDEyNiwgMTAsIDIsIDIyNSwgMTI1LCAxMCwgMiwgMjI1LCAxMjQsIDEwLCAKKyAgICAyLCAyMjUsIDEyMywgMTAsIDIsIDIyNSwgMTIyLCAxMCwgMiwgMjI1LCAxMjEsIDEwLCAyLCAyMjUsIDEyMCwgMTAsIDIsIAorICAgIDIyNSwgMTE5LCAxMCwgMiwgMjI1LCAxMTgsIDEwLCAyLCAyMjUsIDExNywgMTAsIDIsIDIyNSwgMTE1LCAxMCwgMiwgMjI1LCAKKyAgICAxMTYsIDI0LCAyMzUsIDUwLCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNSwgMTE2LCAyNCwgCisgICAgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM2LCA5MywgCisgICAgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjA0LCA0OCwgOTMsIDI0OSwgMTM2LCAxMCwgMiwgMjI1LCAxMTQsIDEwLCAKKyAgICAyLCAyMjUsIDExMywgMTAsIDIsIDIyNSwgMTEyLCAxMCwgMiwgMjI1LCAxMTEsIDEwLCAyLCAyMjUsIDExMCwgMTAsIDIsIAorICAgIDIyNSwgMTA5LCAxMCwgMiwgMjI1LCAxMDgsIDEwLCAyLCAyMjUsIDEwNywgMTAsIDIsIDIyNSwgMTA2LCAxMCwgMiwgMjI1LCAKKyAgICAxMDUsIDEwLCAyLCAyMjUsIDEwMywgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIAorICAgIDI0OSwgMTE4LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMzksIDEyNCwgMjM1LCAyOSwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgCisgICAgMTA0LCAyNCwgMjI2LCAxMywgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMTk0LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDYsIAorICAgIDIzMiwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA2LCAyMDEsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNCwgNDcsIDEwLCAyLCAKKyAgICAyMjUsIDEwNCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjI1LCAxMDIsIAorICAgIDEwLCAyLCAyMjUsIDEwMCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjM5LCAxMzUsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIzNiwgCisgICAgODksIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMjgsIDE1NCwgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxNiwgMTM2LCA5MywgCisgICAgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTAsIDUwLCA5MywgMjI2LCAxNjMsIDEwLCAyLCAKKyAgICAyMjUsIDEwMSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjI1LCA5OCwgMTAsIAorICAgIDIsIDIyNSwgOTcsIDEwLCAyLCAyMjQsIDQxLCAyMzUsIDI5LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgCisgICAgMjQwLCAyNTUsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjE2LCAxMzUsIDEwLCAKKyAgICAyLCAyMjQsIDQxLCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjQsIDQxLCAyNCwgCisgICAgMjA3LCAwLCAxMCwgMiwgMjIxLCAyMTIsIDkzLCAxOTksIDExMywgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUxLCAKKyAgICAyNCwgMjM2LCA4OSwgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUxLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjQxLCAzMiwgMjM1LCAyOCwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIzNSwgMzIsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyNiwgCisgICAgMjM0LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjUsIDE0MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjIyLCAxMzUsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDY2LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMTIsIDUxLCAKKyAgICAyMzUsIDI5LCAyNCwgMTQ0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOCwgMTc5LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxMCwgCisgICAgNjYsIDI1MCwgMTU2LCAyMjUsIDI4LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNywgMCwgMTAsIDIsIDIxMCwgMTExLCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIxMCwgNjYsIDExOSwgMjEwLCA2NSwgMTAsIDIsIDIxMCwgNjYsIDkzLCAyMzMsIDkyLCAxMCwgMiwgCisgICAgMjEwLCA2NiwgOTMsIDIyMCwgMTM3LCAxMCwgMiwgMjEwLCA2NiwgOTMsIDIxMiwgMCwgMTAsIDIsIDIwOSwgMjE5LCA5MywgCisgICAgMjM5LCAxMzIsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIwOSwgMjE5LCA5MywgMjM5LCAyOSwgMjQsIDI1MSwgODUsIDEwLCAyLCAKKyAgICAyMDksIDE4MywgMjQsIDIwNywgMCwgMTAsIDIsIDIwNywgMSwgOTMsIDIxMiwgNTAsIDEwLCAyLCAyMDQsIDIwNCwgMjQsIAorICAgIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjA0LCAyMDQsIDI0LCAxMjYsIDI0MCwgMjU1LCAxMCwgMiwgMjAzLCAyMTMsIAorICAgIDIyOCwgNDksIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDI0MSwgMjUzLCAxMCwgCisgICAgMiwgMjAzLCAyMDQsIDI0LCAyMjUsIDk5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjQsIDM5LCAxMCwgMiwgMTk5LCAxMTMsIAorICAgIDEwLCAyLCAxOTksIDQsIDExOSwgMTk5LCA0LCA5MywgMjEyLCAwLCAxMCwgMiwgMTk5LCAyLCAyNCwgMTI2LCAyNDEsIDAsIAorICAgIDIwNiwgMTU1LCAxNCwgNywgMjU1LCAxMzEsIDE0LCA3LCAyNTUsIDEzMCwgMTQsIDcsIDI1NSwgMTI5LCAxNCwgNywgMjU1LCAKKyAgICAxMjgsIDE0LCA3LCAyNTUsIDEyNywgMTQsIDcsIDI1NSwgMTI2LCAxNCwgNywgMjU1LCAxMjUsIDE0LCA3LCAyNTUsIDEyNCwgCisgICAgMTQsIDcsIDI1NSwgMTIzLCAxNCwgNywgMjU1LCAxMjIsIDE0LCA3LCAyNTUsIDEyMSwgMTQsIDcsIDI1NSwgMTIwLCAxNCwgCisgICAgNywgMjU1LCAxMTksIDE0LCA3LCAyNTUsIDExNywgMTQsIDcsIDI1NSwgMTE2LCAxNCwgNywgMjU1LCAxMTUsIDE0LCA3LCAKKyAgICAyNTUsIDExNCwgMTQsIDcsIDI1NSwgMTEzLCAxNCwgNywgMjU1LCAxMTIsIDE0LCA3LCAyNTUsIDExMSwgMTQsIDcsIDI1NSwgCisgICAgMTEwLCAxNCwgNywgMjU1LCAxMDksIDE0LCA3LCAyNTUsIDEwOCwgMTQsIDcsIDI1NSwgMTA3LCAxNCwgNywgMjU1LCAxMDYsIAorICAgIDE0LCA3LCAyNTUsIDEwNSwgMTQsIDcsIDI1NSwgMTA0LCAxNCwgNywgMjU1LCAxMDMsIDE0LCA3LCAyNTUsIDEwMiwgMTQsIAorICAgIDcsIDI1NSwgMTAxLCAxNCwgNywgMjU1LCAxMDAsIDE0LCA3LCAyNTUsIDk4LCAxNCwgNywgMjU1LCA5NywgMTQsIDcsIDI1NSwgCisgICAgOTUsIDE0LCA3LCAyNTUsIDk0LCAxNCwgNywgMjU1LCA5MywgMTQsIDcsIDI1NSwgOTIsIDE0LCA3LCAyNTUsIDkxLCAxNCwgCisgICAgNywgMjU1LCA5MCwgMTQsIDcsIDI1NSwgODksIDE0LCA3LCAyNTUsIDg4LCAxNCwgNywgMjU1LCA4NywgMTQsIDcsIDI1NSwgCisgICAgODYsIDE0LCA3LCAyNTUsIDg1LCAxNCwgNywgMjU1LCA4NCwgMTQsIDcsIDI1NSwgODIsIDE0LCA3LCAyNTUsIDgxLCAxNCwgCisgICAgNywgMjU1LCA4MCwgMTQsIDcsIDI1NSwgNzgsIDE0LCA3LCAyNTUsIDc3LCAxNCwgNywgMjU1LCA3NiwgMTQsIDcsIDI1NSwgCisgICAgNzUsIDE0LCA3LCAyNTUsIDc0LCAxNCwgNywgMjU1LCA3MywgMTQsIDcsIDI1NSwgNzIsIDE0LCA3LCAyNTUsIDcxLCAxNCwgCisgICAgNywgMjU1LCA2OCwgMTQsIDcsIDI1NSwgNjcsIDE0LCA3LCAyNTUsIDY2LCAxNCwgNywgMjU1LCA2NSwgMTQsIDcsIDI1NSwgCisgICAgNjQsIDE0LCA3LCAyNTUsIDYzLCAxNCwgNywgMjU1LCA2MiwgMTQsIDcsIDI1NSwgNjEsIDE0LCA3LCAyNTUsIDYwLCAxNCwgCisgICAgNywgMjU1LCA1OSwgMTQsIDcsIDI1NSwgNTgsIDE0LCA3LCAyNTUsIDU3LCAxNCwgNywgMjU1LCA1NiwgMTQsIDcsIDI1NSwgCisgICAgNTUsIDE0LCA3LCAyNTUsIDU0LCAxNCwgNywgMjU1LCA1MywgMTQsIDcsIDI1NSwgNTIsIDE0LCA3LCAyNTUsIDUxLCAxNCwgCisgICAgNywgMjU1LCA1MCwgMTQsIDcsIDI1NSwgNDksIDE0LCA3LCAyNTUsIDQ1LCAxNCwgNywgMjU1LCA0NCwgMTQsIDcsIDI1NSwgCisgICAgNDMsIDE0LCA3LCAyNTUsIDQyLCAxNCwgNywgMjUwLCAxMDEsIDE0LCA3LCAyNTAsIDk5LCAxNCwgNywgMjUwLCA5NywgMTQsIAorICAgIDcsIDI1MCwgOTUsIDE0LCA3LCAyNTAsIDkzLCAxNCwgNywgMjUwLCA5MiwgMTQsIDcsIDI1MCwgOTAsIDE0LCA3LCAyNTAsIAorICAgIDg4LCAxNCwgNywgMjUwLCA4NiwgMTQsIDcsIDI1MCwgODQsIDE0LCA3LCAyNDcsIDIxOSwgMTQsIDcsIDI0NywgMjE4LCAxNCwgCisgICAgNywgMjQ3LCAyMTcsIDE0LCA3LCAyNDcsIDIxNiwgMTQsIDcsIDI0NywgMjE1LCAxNCwgNywgMjQ3LCAyMTQsIDE0LCA3LCAKKyAgICAyNDcsIDIxMywgMTQsIDcsIDI0NywgMjEyLCAxNCwgNywgMjQ3LCAyMTEsIDE0LCA3LCAyNDcsIDIxMCwgMTQsIDcsIDI0NywgCisgICAgMjA5LCAxNCwgNywgMjQ3LCAyMDgsIDE0LCA3LCAyNDcsIDIwNywgMTQsIDcsIDI0NywgMjA2LCAxNCwgNywgMjQ3LCAyMDUsIAorICAgIDE0LCA3LCAyNDcsIDIwNCwgMTQsIDcsIDI0NywgMjAzLCAxNCwgNywgMjQ3LCAyMDIsIDE0LCA3LCAyNDcsIDIwMSwgMTQsIAorICAgIDcsIDI0NywgMjAwLCAxNCwgNywgMjQ3LCAxOTksIDE0LCA3LCAyNDcsIDE5OCwgMTQsIDcsIDI0NywgMTk3LCAxNCwgNywgCisgICAgMjQ3LCAxOTYsIDE0LCA3LCAyNDcsIDE5NSwgMTQsIDcsIDI0NywgMTk0LCAxNCwgNywgMjQ3LCAxOTMsIDE0LCA3LCAyNDcsIAorICAgIDE5MiwgMTQsIDcsIDI0MiwgMTUyLCAxNCwgNywgMjQyLCAxNTEsIDE0LCA3LCAyNDIsIDE1MCwgMTQsIDcsIDI0MiwgMTQ5LCAKKyAgICAxNCwgNywgMjQyLCAxNDgsIDE0LCA3LCAyNDIsIDE0NywgMTQsIDcsIDI0MiwgMTQ2LCAxNCwgNywgMjQyLCAxNDUsIDE0LCAKKyAgICA3LCAyNDIsIDE0NCwgMTQsIDcsIDI0MiwgMTQzLCAxNCwgNywgMjQyLCAxNDIsIDE0LCA3LCAyNDIsIDE0MSwgMTQsIDcsIAorICAgIDI0MiwgMTQwLCAxNCwgNywgMjQyLCAxMzksIDE0LCA3LCAyNDIsIDEzOCwgMTQsIDcsIDI0MiwgMTM3LCAxNCwgNywgMjQyLCAKKyAgICAxMzYsIDE0LCA3LCAyNDIsIDEzNSwgMTQsIDcsIDI0MiwgMTM0LCAxNCwgNywgMjQyLCAxMzMsIDE0LCA3LCAyNDIsIDEzMiwgCisgICAgMTQsIDcsIDI0MiwgMTMxLCAxNCwgNywgMjQyLCAxMzAsIDE0LCA3LCAyNDIsIDEyOSwgMTQsIDcsIDI0MiwgMTI4LCAxNCwgCisgICAgNywgMjQyLCAxMjcsIDE0LCA3LCAyNDIsIDEyNiwgMTQsIDcsIDI0MiwgMTI1LCAxNCwgNywgMjQyLCAxMjQsIDE0LCA3LCAKKyAgICAyNDIsIDEyMywgMTQsIDcsIDI0MiwgMTIyLCAxNCwgNywgMjQyLCAxMjEsIDE0LCA3LCAyNDIsIDEyMCwgMTQsIDcsIDI0MiwgCisgICAgMTE5LCAxNCwgNywgMjQyLCAxMTgsIDE0LCA3LCAyNDIsIDExNywgMTQsIDcsIDI0MiwgMTE2LCAxNCwgNywgMjQyLCAxMTUsIAorICAgIDE0LCA3LCAyNDIsIDExNCwgMTQsIDcsIDI0MiwgMTEzLCAxNCwgNywgMjQyLCAxMTIsIDE0LCA3LCAyNDIsIDExMSwgMTQsIAorICAgIDcsIDI0MiwgMTEwLCAxNCwgNywgMjQyLCAxMDksIDE0LCA3LCAyNDIsIDEwOCwgMTQsIDcsIDI0MiwgMTA3LCAxNCwgNywgCisgICAgMjQyLCAxMDYsIDE0LCA3LCAyNDIsIDEwNSwgMTQsIDcsIDI0MiwgMTA0LCAxNCwgNywgMjQyLCAxMDMsIDE0LCA3LCAyNDIsIAorICAgIDEwMiwgMTQsIDcsIDI0MiwgMTAxLCAxNCwgNywgMjQyLCAxMDAsIDE0LCA3LCAyNDIsIDk5LCAxNCwgNywgMjQyLCA5OCwgCisgICAgMTQsIDcsIDI0MiwgOTcsIDE0LCA3LCAyNDIsIDk2LCAxNCwgNywgMjQyLCA5NSwgMTQsIDcsIDI0MiwgOTQsIDE0LCA3LCAKKyAgICAyNDIsIDkzLCAxNCwgNywgMjQyLCA5MiwgMTQsIDcsIDI0MiwgOTEsIDE0LCA3LCAyNDIsIDkwLCAxNCwgNywgMjQyLCA4OSwgCisgICAgMTQsIDcsIDI0MiwgODgsIDE0LCA3LCAyNDIsIDg3LCAxNCwgNywgMjQyLCA4NiwgMTQsIDcsIDI0MiwgODUsIDE0LCA3LCAKKyAgICAyNDIsIDg0LCAxNCwgNywgMjQyLCA4MywgMTQsIDcsIDI0MiwgODIsIDE0LCA3LCAyNDIsIDgxLCAxNCwgNywgMjQyLCA4MCwgCisgICAgMTQsIDcsIDI0MiwgNzksIDE0LCA3LCAyNDIsIDc4LCAxNCwgNywgMjQyLCA3NywgMTQsIDcsIDI0MiwgNzYsIDE0LCA3LCAKKyAgICAyNDIsIDc1LCAxNCwgNywgMjQyLCA3NCwgMTQsIDcsIDI0MiwgNzMsIDE0LCA3LCAyNDIsIDcyLCAxNCwgNywgMjQyLCA3MSwgCisgICAgMTQsIDcsIDI0MiwgNzAsIDE0LCA3LCAyNDIsIDY5LCAxNCwgNywgMjQyLCA2OCwgMTQsIDcsIDI0MiwgNjcsIDE0LCA3LCAKKyAgICAyNDIsIDY2LCAxNCwgNywgMjQyLCA2NSwgMTQsIDcsIDI0MiwgNjQsIDE0LCA3LCAyNDIsIDYzLCAxNCwgNywgMjQyLCA2MiwgCisgICAgMTQsIDcsIDI0MiwgNjEsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAKKyAgICAyMzksIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgCisgICAgMTQsIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAKKyAgICAyMzksIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgCisgICAgMTQsIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAKKyAgICAyMzksIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgCisgICAgMTQsIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAKKyAgICAyMzksIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgCisgICAgMTQsIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAKKyAgICAyMzksIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgCisgICAgMTQsIDcsIDIzOCwgNCwgMTQsIDcsIDIzOCwgMywgMTQsIDcsIDIzOCwgMiwgMTQsIDcsIDIzOCwgMSwgMTQsIDcsIDIzOCwgCisgICAgMCwgMTQsIDcsIDIzNywgMjU1LCAxNCwgNywgMjM3LCAyNTQsIDE0LCA3LCAyMzcsIDI1MywgMTQsIDcsIDIzNywgMjUyLCAKKyAgICAxNCwgNywgMjM3LCAyNTEsIDE0LCA3LCAyMzcsIDI1MCwgMTQsIDcsIDIzNywgMjQ5LCAxNCwgNywgMjM3LCAyNDgsIDE0LCAKKyAgICA3LCAyMzcsIDI0NywgMTQsIDcsIDIzNywgMjQ2LCAxNCwgNywgMjM3LCAyNDUsIDE0LCA3LCAyMzcsIDI0NCwgMTQsIDcsIAorICAgIDIzNywgMjQzLCAxNCwgNywgMjM3LCAyNDIsIDE0LCA3LCAyMzcsIDI0MSwgMTQsIDcsIDIzNywgMjQwLCAxNCwgNywgMjM3LCAKKyAgICAyMzksIDE0LCA3LCAyMzcsIDIzOCwgMTQsIDcsIDIzNywgMjM3LCAxNCwgNywgMjM3LCAyMzYsIDE0LCA3LCAyMzcsIDIzNSwgCisgICAgMTQsIDcsIDIzNywgMjM0LCAxNCwgNywgMjM3LCAyMzMsIDE0LCA3LCAyMzcsIDIzMiwgMTQsIDcsIDIzNywgMjMxLCAxNCwgCisgICAgNywgMjM3LCAyMzAsIDE0LCA3LCAyMzcsIDIyOSwgMTQsIDcsIDIzNywgMjI4LCAxNCwgNywgMjM3LCAyMjcsIDE0LCA3LCAKKyAgICAyMzcsIDIyNiwgMTQsIDcsIDIzNywgMjI1LCAxNCwgNywgMjM3LCAyMjQsIDE0LCA3LCAyMzcsIDIyMywgMTQsIDcsIDIzNywgCisgICAgMjIyLCAxNCwgNywgMjM3LCAyMjEsIDE0LCA3LCAyMzcsIDIyMCwgMTQsIDcsIDIzNywgMjE5LCAxNCwgNywgMjM3LCAyMTgsIAorICAgIDE0LCA3LCAyMzcsIDIxNywgMTQsIDcsIDIzNywgMjE2LCAxNCwgNywgMjM3LCAyMTUsIDE0LCA3LCAyMzcsIDIxNCwgMTQsIAorICAgIDcsIDIzNywgMjEzLCAxNCwgNywgMjM3LCAyMTIsIDE0LCA3LCAyMzcsIDIxMSwgMTQsIDcsIDIzNywgMjEwLCAxNCwgNywgCisgICAgMjM3LCAyMDksIDE0LCA3LCAyMzcsIDIwOCwgMTQsIDcsIDIzNywgMjA3LCAxNCwgNywgMjM3LCAyMDYsIDE0LCA3LCAyMzcsIAorICAgIDIwNSwgMTQsIDcsIDIzNywgMjA0LCAxNCwgNywgMjM3LCAyMDMsIDE0LCA3LCAyMzcsIDIwMiwgMTQsIDcsIDIzNywgMjAxLCAKKyAgICAxNCwgNywgMjM3LCAyMDAsIDE0LCA3LCAyMzcsIDE5OSwgMTQsIDcsIDIzNywgMTk4LCAxNCwgNywgMjM3LCAxOTcsIDE0LCAKKyAgICA3LCAyMzcsIDE5NiwgMTQsIDcsIDIzNiwgMTU1LCAxNCwgNywgMjM2LCAxNTQsIDE0LCA3LCAyMzYsIDE1MywgMTQsIDcsIAorICAgIDIzNiwgMTUyLCAxNCwgNywgMjM2LCAxNTEsIDE0LCA3LCAyMzYsIDE1MCwgMTQsIDcsIDIzNiwgMTQ5LCAxNCwgNywgMjM2LCAKKyAgICAxNDgsIDE0LCA3LCAyMzYsIDE0NywgMTQsIDcsIDIzNiwgMTQ2LCAxNCwgNywgMjM2LCAxNDUsIDE0LCA3LCAyMzYsIDE0NCwgCisgICAgMTQsIDcsIDIzNiwgMTQzLCAxNCwgNywgMjM2LCAxNDIsIDE0LCA3LCAyMzYsIDE0MSwgMTQsIDcsIDIzNiwgMTQwLCAxNCwgCisgICAgNywgMjM2LCAxMzksIDE0LCA3LCAyMzYsIDEzOCwgMTQsIDcsIDIzNiwgMTM3LCAxNCwgNywgMjM2LCAxMzYsIDE0LCA3LCAKKyAgICAyMzYsIDEzNSwgMTQsIDcsIDIzNiwgMTM0LCAxNCwgNywgMjM2LCAxMzMsIDE0LCA3LCAyMzYsIDEzMiwgMTQsIDcsIDIzNiwgCisgICAgMTMxLCAxNCwgNywgMjM2LCAxMzAsIDE0LCA3LCAyMzYsIDEyOSwgMTQsIDcsIDIzNiwgMTI4LCAxNCwgNywgMjM2LCAxMjcsIAorICAgIDE0LCA3LCAyMzYsIDEyNiwgMTQsIDcsIDIzNiwgMTI1LCAxNCwgNywgMjM2LCAxMjQsIDE0LCA3LCAyMzYsIDEyMywgMTQsIAorICAgIDcsIDIzNiwgMTIyLCAxNCwgNywgMjM2LCAxMjEsIDE0LCA3LCAyMzYsIDEyMCwgMTQsIDcsIDIzNiwgMTE5LCAxNCwgNywgCisgICAgMjM2LCAxMTgsIDE0LCA3LCAyMzYsIDExNywgMTQsIDcsIDIzNiwgMTE2LCAxNCwgNywgMjM2LCAxMTUsIDE0LCA3LCAyMzYsIAorICAgIDExNCwgMTQsIDcsIDIzNiwgMTEzLCAxNCwgNywgMjM2LCAxMTIsIDE0LCA3LCAyMzYsIDExMSwgMTQsIDcsIDIzNiwgMTEwLCAKKyAgICAxNCwgNywgMjM2LCAxMDksIDE0LCA3LCAyMzYsIDEwOCwgMTQsIDcsIDIzNiwgMTA3LCAxNCwgNywgMjM2LCAxMDYsIDE0LCAKKyAgICA3LCAyMzYsIDEwNSwgMTQsIDcsIDIzNiwgMTA0LCAxNCwgNywgMjM2LCAxMDMsIDE0LCA3LCAyMzYsIDEwMiwgMTQsIDcsIAorICAgIDIzNiwgMTAxLCAxNCwgNywgMjM2LCAxMDAsIDE0LCA3LCAyMzYsIDk5LCAxNCwgNywgMjM2LCA5OCwgMTQsIDcsIDIzNiwgCisgICAgOTcsIDE0LCA3LCAyMzYsIDk2LCAxNCwgNywgMjM2LCA5NSwgMTQsIDcsIDIzNiwgOTQsIDE0LCA3LCAyMzYsIDkzLCAxNCwgCisgICAgNywgMjM2LCA5MiwgMTQsIDcsIDIzNCwgMjQ1LCAxNCwgNywgMjM0LCAyNDQsIDE0LCA3LCAyMzQsIDI0MywgMTQsIDcsIAorICAgIDIzNCwgMjQyLCAxNCwgNywgMjM0LCAyNDEsIDE0LCA3LCAyMzQsIDI0MCwgMTQsIDcsIDIzNCwgMjM5LCAxNCwgNywgMjM0LCAKKyAgICAyMzgsIDE0LCA3LCAyMzQsIDIzNywgMTQsIDcsIDIzMywgMywgMTQsIDcsIDIzMywgMiwgMTQsIDcsIDIzMywgMSwgMTQsIDcsIAorICAgIDIzMywgMCwgMTQsIDcsIDIzMiwgMjU1LCAxNCwgNywgMjMyLCAyNTQsIDE0LCA3LCAyMzIsIDI1MywgMTQsIDcsIDIzMiwgCisgICAgMjUyLCAxNCwgNywgMjMyLCAyNTEsIDE0LCA3LCAyMzIsIDI1MCwgMTQsIDcsIDIzMiwgMjQ5LCAxNCwgNywgMjMyLCAyNDgsIAorICAgIDE0LCA3LCAyMzIsIDI0NywgMTQsIDcsIDIzMiwgMjQ2LCAxNCwgNywgMjMyLCAyNDUsIDE0LCA3LCAyMzIsIDI0NCwgMTQsIAorICAgIDcsIDIzMiwgMjQzLCAxNCwgNywgMjMyLCAyNDIsIDE0LCA3LCAyMzIsIDI0MSwgMTQsIDcsIDIyNywgMTE3LCAxNCwgNywgCisgICAgMjI3LCAxMTYsIDE0LCA3LCAyMjcsIDExNSwgMTQsIDcsIDIyNywgMTE0LCAxNCwgNywgMjI3LCAxMTMsIDE0LCA3LCAyMjcsIAorICAgIDExMiwgMTQsIDcsIDIyNywgMTExLCAxNCwgNywgMjI3LCAxMTAsIDE0LCA3LCAyMjUsIDE5MCwgMTQsIDcsIDIyNSwgMTg5LCAKKyAgICAxNCwgNywgMjI1LCAxODgsIDE0LCA3LCAyMjUsIDE4NywgMTQsIDcsIDIyNSwgMTg2LCAxNCwgNywgMjI1LCAxODUsIDE0LCAKKyAgICA3LCAyMjUsIDE4NCwgMTQsIDcsIDIyNSwgMTgzLCAxNCwgNywgMjI1LCAxODIsIDE0LCA3LCAyMjUsIDE4MSwgMTQsIDcsIAorICAgIDIyMywgMjQxLCAxNCwgNywgMjIzLCAyNDAsIDE0LCA3LCAyMjMsIDIzOSwgMTQsIDcsIDIyMywgMjM3LCAxNCwgNywgMjIzLCAKKyAgICAyMzUsIDE0LCA3LCAyMjMsIDIzNCwgMTQsIDcsIDIyMywgMjMyLCAxNCwgNywgMjIzLCAyMzAsIDE0LCA3LCAyMjMsIDIyOCwgCisgICAgMTQsIDcsIDIyMywgMjI2LCAxNCwgNywgMjIzLCAyMjQsIDE0LCA3LCAyMjMsIDIyMiwgMTQsIDcsIDIyMywgMjIwLCAxNCwgCisgICAgNywgMjIzLCAyMTksIDE0LCA3LCAyMjMsIDIxNywgMTQsIDcsIDIyMywgMjE1LCAxNCwgNywgMjIzLCAyMTQsIDE0LCA3LCAKKyAgICAyMjMsIDIxMywgMTQsIDcsIDIyMywgMjEyLCAxNCwgNywgMjIzLCAyMTEsIDE0LCA3LCAyMjMsIDIxMCwgMTQsIDcsIDIyMywgCisgICAgMjA5LCAxNCwgNywgMjIzLCAyMDgsIDE0LCA3LCAyMjMsIDIwNywgMTQsIDcsIDIyMywgMjA1LCAxNCwgNywgMjIzLCAyMDMsIAorICAgIDE0LCA3LCAyMjMsIDIwMSwgMTQsIDcsIDIyMywgMjAwLCAxNCwgNywgMjIzLCAxOTgsIDE0LCA3LCAyMjMsIDE5NywgMTQsIAorICAgIDcsIDIyMywgMTk1LCAxNCwgNywgMjIzLCAxOTQsIDE0LCA3LCAyMjMsIDE5MiwgMTQsIDcsIDIyMywgMTkwLCAxNCwgNywgCisgICAgMjIzLCAxODgsIDE0LCA3LCAyMjMsIDE4NiwgMTQsIDcsIDIyMywgMTg0LCAxNCwgNywgMjIzLCAxODMsIDE0LCA3LCAyMjMsIAorICAgIDE4MSwgMTQsIDcsIDIyMywgMTc5LCAxNCwgNywgMjIzLCAxNzgsIDE0LCA3LCAyMjMsIDE3NiwgMTQsIDcsIDIyMywgMTc0LCAKKyAgICAxNCwgNywgMjIzLCAxNzIsIDE0LCA3LCAyMjMsIDE3MCwgMTQsIDcsIDIyMywgMTY5LCAxNCwgNywgMjIzLCAxNjcsIDE0LCAKKyAgICA3LCAyMjMsIDE2NSwgMTQsIDcsIDIyMywgMTYzLCAxNCwgNywgMjIzLCAxNjIsIDE0LCA3LCAyMjMsIDE2MCwgMTQsIDcsIAorICAgIDIyMywgMTU4LCAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU0LCAxNCwgNywgMjIzLCAKKyAgICAxNTIsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDYsIDE0LCA3LCAyMjMsIDE0NCwgCisgICAgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIDE0LCA3LCAyMjMsIDEzOSwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCisgICAgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzMywgMTQsIDcsIDIyMCwgMjExLCAxNCwgNywgMjIwLCAyMTAsIDE0LCA3LCAKKyAgICAyMjAsIDIwOSwgMTQsIDcsIDIyMCwgMjA4LCAxNCwgNywgMjIwLCAyMDcsIDE0LCA3LCAyMjAsIDIwNiwgMTQsIDcsIDIyMCwgCisgICAgMjA1LCAxNCwgNywgMjIwLCAyMDQsIDE0LCA3LCAyMjAsIDIwMywgMTQsIDcsIDIyMCwgMjAyLCAxNCwgNywgMjIwLCAyMDEsIAorICAgIDE0LCA3LCAyMjAsIDIwMCwgMTQsIDcsIDIyMCwgMTk5LCAxNCwgNywgMjIwLCAxOTgsIDE0LCA3LCAyMjAsIDE5NywgMTQsIAorICAgIDcsIDIyMCwgMTk2LCAxNCwgNywgMjIwLCAxOTUsIDE0LCA3LCAyMjAsIDE5NCwgMTQsIDcsIDIyMCwgMTkzLCAxNCwgNywgCisgICAgMjIwLCAxOTIsIDE0LCA3LCAyMjAsIDE5MSwgMTQsIDcsIDIyMCwgMTkwLCAxNCwgNywgMjIwLCAxODksIDE0LCA3LCAyMjAsIAorICAgIDE4OCwgMTQsIDcsIDIyMCwgMTg3LCAxNCwgNywgMjIwLCAxODYsIDE0LCA3LCAyMjAsIDE4NSwgMTQsIDcsIDIyMCwgMTg0LCAKKyAgICAxNCwgNywgMjIwLCAxODMsIDE0LCA3LCAyMjAsIDE4MiwgMTQsIDcsIDIyMCwgMTgxLCAxNCwgNywgMjIwLCAxODAsIDE0LCAKKyAgICA3LCAyMjAsIDE3OSwgMTQsIDcsIDIyMCwgMTc4LCAxNCwgNywgMjIwLCAxNzcsIDE0LCA3LCAyMjAsIDE3NiwgMTQsIDcsIAorICAgIDIyMCwgMTc1LCAxNCwgNywgMjIwLCAxNzQsIDE0LCA3LCAyMjAsIDE3MywgMTQsIDcsIDIyMCwgMTcyLCAxNCwgNywgMjIwLCAKKyAgICAxNzEsIDE0LCA3LCAyMjAsIDE3MCwgMTQsIDcsIDIyMCwgMTY5LCAxNCwgNywgMjIwLCAxNjgsIDE0LCA3LCAyMjAsIDE2NywgCisgICAgMTQsIDcsIDIyMCwgMTY2LCAxNCwgNywgMjIwLCAxNjUsIDE0LCA3LCAyMjAsIDE2NCwgMTQsIDcsIDIyMCwgMTYzLCAxNCwgCisgICAgNywgMjE5LCA0NiwgMTQsIDcsIDIxOSwgNDUsIDE0LCA3LCAyMTksIDQ0LCAxNCwgNywgMjE5LCA0MywgMTQsIDcsIDIxOSwgCisgICAgNDIsIDE0LCA3LCAyMTksIDQxLCAxNCwgNywgMjE5LCA0MCwgMTQsIDcsIDIxOSwgMzksIDE0LCA3LCAyMTksIDM4LCAxNCwgCisgICAgNywgMjE5LCAzNywgMTQsIDcsIDIxOSwgMzYsIDE0LCA3LCAyMTksIDM1LCAxNCwgNywgMjE5LCAzNCwgMTQsIDcsIDIxOSwgCisgICAgMzMsIDE0LCA3LCAyMTksIDMyLCAxNCwgNywgMjE5LCAzMSwgMTQsIDcsIDIxOSwgMzAsIDE0LCA3LCAyMTksIDI5LCAxNCwgCisgICAgNywgMjE5LCAyOCwgMTQsIDcsIDIxOSwgMjcsIDE0LCA3LCAyMTksIDI2LCAxNCwgNywgMjE5LCAyNSwgMTQsIDcsIDIxOCwgCisgICAgMTMyLCAxNCwgNywgMjE4LCAxMzEsIDE0LCA3LCAyMTgsIDEzMCwgMTQsIDcsIDIxOCwgMTI5LCAxNCwgNywgMjE4LCAxMjgsIAorICAgIDE0LCA3LCAyMTgsIDEyNywgMTQsIDcsIDIxOCwgMTI2LCAxNCwgNywgMjE4LCAxMjUsIDE0LCA3LCAyMTgsIDEyNCwgMTQsIAorICAgIDcsIDIxOCwgMTIzLCAxNCwgNywgMjE4LCAxMjIsIDE0LCA3LCAyMTgsIDEyMSwgMTQsIDcsIDIxOCwgMTIwLCAxNCwgNywgCisgICAgMjE4LCAxMTksIDE0LCA3LCAyMTgsIDExOCwgMTQsIDcsIDIxOCwgMTE3LCAxNCwgNywgMjE4LCAxMTYsIDE0LCA3LCAyMTgsIAorICAgIDExNSwgMTQsIDcsIDIxOCwgMTE0LCAxNCwgNywgMjE4LCAxMTMsIDE0LCA3LCAyMTgsIDExMiwgMTQsIDcsIDIxOCwgMTExLCAKKyAgICAxNCwgNywgMjE4LCAxMTAsIDE0LCA3LCAyMTgsIDEwOSwgMTQsIDcsIDIxOCwgMTA4LCAxNCwgNywgMjE4LCAxMDcsIDE0LCAKKyAgICA3LCAyMTcsIDIyMiwgMTQsIDcsIDIxNywgMjIxLCAxNCwgNywgMjE3LCAyMjAsIDE0LCA3LCAyMTcsIDIxOSwgMTQsIDcsIAorICAgIDIxNywgMjE4LCAxNCwgNywgMjE3LCAyMTcsIDE0LCA3LCAyMTcsIDIxNiwgMTQsIDcsIDIxNywgMjE1LCAxNCwgNywgMjE3LCAKKyAgICAyMTQsIDE0LCA3LCAyMTcsIDIxMywgMTQsIDcsIDIxNywgMjEyLCAxNCwgNywgMjE3LCAyMTEsIDE0LCA3LCAyMTcsIDIxMCwgCisgICAgMTQsIDcsIDIxNywgMjA5LCAxNCwgNywgMjE3LCAyMDgsIDE0LCA3LCAyMTcsIDIwNywgMTQsIDcsIDIxNywgMjA2LCAxNCwgCisgICAgNywgMjE3LCAyMDUsIDE0LCA3LCAyMTcsIDIwNCwgMTQsIDcsIDIxNywgMjAzLCAxNCwgNywgMjE3LCAyMDIsIDE0LCA3LCAKKyAgICAyMTcsIDIwMSwgMTQsIDcsIDIxNywgMjAwLCAxNCwgNywgMjE3LCAxOTksIDE0LCA3LCAyMTcsIDE5OCwgMTQsIDcsIDIxNywgCisgICAgMTk3LCAxNCwgNywgMjE3LCAxOTYsIDE0LCA3LCAyMTcsIDE5NSwgMTQsIDcsIDIxNywgMTk0LCAxNCwgNywgMjE3LCAxOTMsIAorICAgIDE0LCA3LCAyMTcsIDE5MiwgMTQsIDcsIDIxNywgMTkxLCAxNCwgNywgMjE3LCAxOTAsIDE0LCA3LCAyMTcsIDE4OSwgMTQsIAorICAgIDcsIDIxNywgMTg4LCAxNCwgNywgMjE3LCAxODcsIDE0LCA3LCAyMTcsIDE4NiwgMTQsIDcsIDIxNywgMTg1LCAxNCwgNywgCisgICAgMjE3LCAxODQsIDE0LCA3LCAyMTcsIDE4MywgMTQsIDcsIDIxNywgMTgyLCAxNCwgNywgMjE3LCAxODEsIDE0LCA3LCAyMTcsIAorICAgIDE4MCwgMTQsIDcsIDIxNywgMTc5LCAxNCwgNywgMjE3LCAxNzgsIDE0LCA3LCAyMTcsIDE3NywgMTQsIDcsIDIxNywgMTc2LCAKKyAgICAxNCwgNywgMjE3LCAxNzUsIDE0LCA3LCAyMTcsIDE3NCwgMTQsIDcsIDIxNywgMTczLCAxNCwgNywgMjE3LCAxNzIsIDE0LCAKKyAgICA3LCAyMTcsIDE3MSwgMTQsIDcsIDIxNywgMTcwLCAxNCwgNywgMjE3LCAxNjksIDE0LCA3LCAyMTcsIDE2OCwgMTQsIDcsIAorICAgIDIxNywgMTY3LCAxNCwgNywgMjE3LCAxNjYsIDE0LCA3LCAyMTcsIDE2NSwgMTQsIDcsIDIxNywgMTY0LCAxNCwgNywgMjE3LCAKKyAgICAxNjMsIDE0LCA3LCAyMTcsIDE2MiwgMTQsIDcsIDIxNywgMTYxLCAxNCwgNywgMjE3LCAxNjAsIDE0LCA3LCAyMTcsIDE1OSwgCisgICAgMTQsIDcsIDIxNywgMTU4LCAxNCwgNywgMjE3LCAxNTcsIDE0LCA3LCAyMTcsIDE1NiwgMTQsIDcsIDIxNywgMTU1LCAxNCwgCisgICAgNywgMjE3LCAxNTQsIDE0LCA3LCAyMTcsIDE1MywgMTQsIDcsIDIxNywgMTUyLCAxNCwgNywgMjE3LCAxNTEsIDE0LCA3LCAKKyAgICAyMTcsIDE1MCwgMTQsIDcsIDIxNywgMTQ5LCAxNCwgNywgMjE3LCAxNDgsIDE0LCA3LCAyMTYsIDIyNSwgMTQsIDcsIDIxNiwgCisgICAgMjI0LCAxNCwgNywgMjE2LCAyMjMsIDE0LCA3LCAyMTYsIDIyMiwgMTQsIDcsIDIxNiwgMjIxLCAxNCwgNywgMjE2LCAyMjAsIAorICAgIDE0LCA3LCAyMTYsIDIxOSwgMTQsIDcsIDIxNiwgMjE4LCAxNCwgNywgMjE2LCAyMTcsIDE0LCA3LCAyMTYsIDIxNiwgMTQsIAorICAgIDcsIDIxNiwgMjE1LCAxNCwgNywgMjE2LCAyMTQsIDE0LCA3LCAyMTYsIDIxMywgMTQsIDcsIDIxNCwgMTY2LCAxNCwgNywgCisgICAgMjE0LCAxNjUsIDE0LCA3LCAyMTQsIDE2NCwgMTQsIDcsIDIxNCwgMTYzLCAxNCwgNywgMjE0LCAxNjIsIDE0LCA3LCAyMTQsIAorICAgIDE2MSwgMTQsIDcsIDIxNCwgMTYwLCAxNCwgNywgMjE0LCAzMSwgMTQsIDcsIDIxNCwgMzAsIDE0LCA3LCAyMTQsIDI5LCAxNCwgCisgICAgNywgMjE0LCAyOCwgMTQsIDcsIDIxNCwgMjcsIDE0LCA3LCAyMTQsIDI2LCAxNCwgNywgMjE0LCAyNSwgMTQsIDcsIDIxNCwgCisgICAgMjQsIDE0LCA3LCAyMTQsIDIzLCAxNCwgNywgMjE0LCAyMiwgMTQsIDcsIDIxNCwgMjEsIDE0LCA3LCAyMTQsIDIwLCAxNCwgCisgICAgNywgMjE0LCAxOSwgMTQsIDcsIDIxNCwgMTgsIDE0LCA3LCAyMTQsIDE3LCAxNCwgNywgMjE0LCAxNiwgMTQsIDcsIDIxNCwgCisgICAgMTUsIDE0LCA3LCAyMTQsIDE0LCAxNCwgNywgMjE0LCAxMywgMTQsIDcsIDIxNCwgMTIsIDE0LCA3LCAyMTQsIDExLCAxNCwgCisgICAgNywgMjE0LCAxMCwgMTQsIDcsIDIxNCwgOSwgMTQsIDcsIDIxNCwgOCwgMTQsIDcsIDIxNCwgNywgMTQsIDcsIDIxNCwgNiwgCisgICAgMTQsIDcsIDIxNCwgNSwgMTQsIDcsIDIxNCwgNCwgMTQsIDcsIDIxNCwgMywgMTQsIDcsIDIxNCwgMiwgMTQsIDcsIDIxNCwgCisgICAgMSwgMTQsIDcsIDIxNCwgMCwgMTQsIDcsIDIxMywgMjU1LCAxNCwgNywgMjEzLCAyNTQsIDE0LCA3LCAyMTIsIDExOSwgMTQsIAorICAgIDcsIDIxMiwgMTE4LCAxNCwgNywgMjEyLCAxMTcsIDE0LCA3LCAyMTIsIDExNiwgMTQsIDcsIDIxMiwgMTE1LCAxNCwgNywgCisgICAgMjEyLCAxMTQsIDE0LCA3LCAyMTIsIDExMywgMTQsIDcsIDIxMiwgMTEyLCAxNCwgNywgMjEyLCAxMTEsIDE0LCA3LCAyMTIsIAorICAgIDExMCwgMTQsIDcsIDIxMiwgMTA5LCAxNCwgNywgMjEyLCAxMDgsIDE0LCA3LCAyMTIsIDEwNywgMTQsIDcsIDIxMiwgMTA2LCAKKyAgICAxNCwgNywgMjEyLCAxMDUsIDE0LCA3LCAyMTIsIDEwNCwgMTQsIDcsIDIxMiwgMTAzLCAxNCwgNywgMjEyLCAxMDIsIDE0LCAKKyAgICA3LCAyMTIsIDEwMSwgMTQsIDcsIDIxMiwgMTAwLCAxNCwgNywgMjEyLCA5OSwgMTQsIDcsIDIxMiwgOTgsIDE0LCA3LCAyMTIsIAorICAgIDk3LCAxNCwgNywgMjEyLCA5NiwgMTQsIDcsIDIxMiwgOTUsIDE0LCA3LCAyMTIsIDk0LCAxNCwgNywgMjEyLCA5MywgMTQsIAorICAgIDcsIDIxMiwgOTIsIDE0LCA3LCAyMTIsIDkxLCAxNCwgNywgMjEyLCA5MCwgMTQsIDcsIDIxMiwgODksIDE0LCA3LCAyMTIsIAorICAgIDg4LCAxNCwgNywgMjEyLCA4NywgMTQsIDcsIDIxMiwgODYsIDE0LCA3LCAyMTIsIDg1LCAxNCwgNywgMjEyLCA4NCwgMTQsIAorICAgIDcsIDIxMiwgODMsIDE0LCA3LCAyMTIsIDgyLCAxNCwgNywgMjEyLCA4MSwgMTQsIDcsIDIxMiwgODAsIDE0LCA3LCAyMTIsIAorICAgIDc5LCAxNCwgNywgMjEyLCA3OCwgMTQsIDcsIDIxMiwgNzcsIDE0LCA3LCAyMTIsIDc2LCAxNCwgNywgMjEyLCA3NSwgMTQsIAorICAgIDcsIDIxMiwgNzQsIDE0LCA3LCAyMTIsIDczLCAxNCwgNywgMjEyLCA3MiwgMTQsIDcsIDIxMiwgNzEsIDE0LCA3LCAyMTIsIAorICAgIDcwLCAxNCwgNywgMjEyLCA2OSwgMTQsIDcsIDIxMiwgNjgsIDE0LCA3LCAyMTIsIDY3LCAxNCwgNywgMjEyLCA2NiwgMTQsIAorICAgIDcsIDIwNywgODEsIDE0LCA3LCAyMDcsIDgwLCAxNCwgNywgMjA3LCA3OSwgMTQsIDcsIDIwNywgNzgsIDE0LCA3LCAyMDcsIAorICAgIDc3LCAxNCwgNywgMjA3LCA3NiwgMTQsIDcsIDIwNywgNzUsIDE0LCA3LCAyMDcsIDc0LCAxNCwgNywgMjA3LCA3MywgMTQsIAorICAgIDcsIDIwNywgNzIsIDE0LCA3LCAyMDcsIDcxLCAxNCwgNywgMjA3LCA3MCwgMTQsIDcsIDIwNywgNjksIDE0LCA3LCAyMDcsIAorICAgIDY4LCAxNCwgNywgMjA3LCA2NywgMTQsIDcsIDIwNywgNjYsIDE0LCA3LCAyMDcsIDY1LCAxNCwgNywgMjA3LCA2NCwgMTQsIAorICAgIDcsIDIwNywgNjMsIDE0LCA3LCAyMDcsIDYyLCAxNCwgNywgMjA3LCA2MSwgMTQsIDcsIDIwNywgNjAsIDE0LCA3LCAyMDcsIAorICAgIDU5LCAxNCwgNywgMjA3LCA1OCwgMTQsIDcsIDIwNywgNTcsIDE0LCA3LCAyMDcsIDU2LCAxNCwgNywgMjA3LCA1NSwgMTQsIAorICAgIDcsIDIwNywgNTQsIDE0LCA3LCAyMDcsIDUzLCAxNCwgNywgMjA3LCA1MiwgMTQsIDcsIDIwNywgNTEsIDE0LCA3LCAyMDcsIAorICAgIDUwLCAxNCwgNywgMjA3LCA0OSwgMTQsIDcsIDIwNywgNDgsIDE0LCA3LCAyMDcsIDQ3LCAxNCwgNywgMjA3LCA0NiwgMTQsIAorICAgIDcsIDIwNywgNDUsIDE0LCA3LCAyMDcsIDQ0LCAxNCwgNywgMjA3LCA0MywgMTQsIDcsIDIwNywgNDIsIDE0LCA3LCAyMDcsIAorICAgIDQxLCAxNCwgNywgMjA3LCA0MCwgMTQsIDcsIDIwNywgMzksIDE0LCA3LCAyMDcsIDM4LCAxNCwgNywgMjA0LCA5NSwgMTQsIAorICAgIDcsIDIwNCwgOTQsIDE0LCA3LCAyMDQsIDkzLCAxNCwgNywgMjA0LCA5MiwgMTQsIDcsIDIwNCwgOTEsIDE0LCA3LCAyMDQsIAorICAgIDkwLCAxNCwgNywgMjA0LCA4OSwgMTQsIDcsIDIwNCwgODgsIDE0LCA3LCAyMDQsIDg3LCAxNCwgNywgMjA0LCA4NiwgMTQsIAorICAgIDcsIDIwNCwgODUsIDE0LCA3LCAyMDQsIDg0LCAxNCwgNywgMjA0LCA4MywgMTQsIDcsIDIwNCwgODIsIDE0LCA3LCAyMDQsIAorICAgIDgxLCAxNCwgNywgMjA0LCA4MCwgMTQsIDcsIDIwNCwgNzksIDE0LCA3LCAyMDQsIDc4LCAxNCwgNywgMjA0LCA3NywgMTQsIAorICAgIDcsIDIwNCwgNzYsIDE0LCA3LCAyMDQsIDc1LCAxNCwgNywgMjA0LCA3NCwgMTQsIDcsIDIwNCwgNzMsIDE0LCA3LCAyMDQsIAorICAgIDcyLCAxNCwgNywgMjA0LCA3MSwgMTQsIDcsIDIwNCwgNzAsIDE0LCA3LCAyMDQsIDY5LCAxNCwgNywgMjA0LCA2OCwgMTQsIAorICAgIDcsIDIwNCwgNjcsIDE0LCA3LCAyMDQsIDY2LCAxNCwgNywgMjA0LCA2NSwgMTQsIDcsIDIwNCwgNjQsIDE0LCA3LCAyMDQsIAorICAgIDYzLCAxNCwgNywgMjA0LCA2MiwgMTQsIDcsIDIwNCwgNjEsIDE0LCA3LCAyMDQsIDYwLCAxNCwgNywgMjA0LCA1OSwgMTQsIAorICAgIDcsIDIwNCwgNTgsIDE0LCA3LCAyMDQsIDU3LCAxNCwgNywgMjA0LCA1NiwgMTQsIDcsIDIwNCwgNTUsIDE0LCA3LCAyMDQsIAorICAgIDU0LCAxNCwgNywgMjA0LCA1MywgMTQsIDcsIDIwNCwgNTIsIDE0LCA3LCAyMDQsIDUxLCAxNCwgNywgMjA0LCA1MCwgMTQsIAorICAgIDcsIDIwNCwgNDksIDE0LCA3LCAyMDMsIDE2NywgMTQsIDcsIDIwMywgMTY2LCAxNCwgNywgMjAzLCAxNjUsIDE0LCA3LCAKKyAgICAyMDMsIDE2NCwgMTQsIDcsIDIwMywgMTYzLCAxNCwgNywgMjAzLCAxNjIsIDE0LCA3LCAyMDMsIDE2MSwgMTQsIDcsIDIwMywgCisgICAgMTYwLCAxNCwgNywgMjAzLCAxNTksIDE0LCA3LCAyMDMsIDE1OCwgMTQsIDcsIDIwMywgMTU3LCAxNCwgNywgMjAzLCAxNTYsIAorICAgIDE0LCA3LCAyMDMsIDE1NSwgMTQsIDcsIDIwMywgMTU0LCAxNCwgNywgMjAzLCAxNTMsIDE0LCA3LCAyMDMsIDE1MiwgMTQsIAorICAgIDcsIDIwMywgMTUxLCAxNCwgNywgMjAzLCAxNTAsIDE0LCA3LCAyMDMsIDE0OSwgMTQsIDcsIDIwMywgMTQ4LCAxNCwgNywgCisgICAgMjAzLCAxNDcsIDE0LCA3LCAyMDMsIDE0NiwgMTQsIDcsIDIwMywgMTQ1LCAxNCwgNywgMjAzLCAxNDQsIDE0LCA3LCAyMDMsIAorICAgIDE0MywgMTQsIDcsIDIwMywgMTQyLCAxNCwgNywgMjAzLCAxNDEsIDE0LCA3LCAyMDMsIDE0MCwgMTQsIDcsIDIwMywgMTM5LCAKKyAgICAxNCwgNywgMjAzLCAxMzgsIDE0LCA3LCAyMDMsIDEzNywgMTQsIDcsIDIwMywgMTM2LCAxNCwgNywgMjAzLCAxMzUsIDE0LCAKKyAgICA3LCAyMDMsIDEzNCwgMTQsIDcsIDIwMywgMTMzLCAxNCwgNywgMjAzLCAxMzIsIDE0LCA3LCAyMDMsIDEzMSwgMTQsIDcsIAorICAgIDIwMywgMTMwLCAxNCwgNywgMjAzLCAxMjksIDE0LCA3LCAyMDMsIDEyOCwgMTQsIDcsIDIwMywgMTI3LCAxNCwgNywgMjAzLCAKKyAgICAxMjYsIDE0LCA3LCAyMDMsIDEyNSwgMTQsIDcsIDIwMywgMTI0LCAxNCwgNywgMjAzLCAxMjMsIDE0LCA3LCAyMDMsIDEyMiwgCisgICAgMTQsIDcsIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgCisgICAgNywgMjAzLCAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAKKyAgICAyMDMsIDExMywgMTQsIDcsIDIwMywgMTEyLCAxNCwgNywgMjAzLCAxMTEsIDE0LCA3LCAyMDMsIDExMCwgMTQsIDcsIDIwMywgCisgICAgMTA5LCAxNCwgNywgMjAzLCAxMDgsIDE0LCA3LCAyMDMsIDEwNywgMTQsIDcsIDIwMywgMTA2LCAxNCwgNywgMjAzLCAxMDUsIAorICAgIDE0LCA3LCAyMDMsIDEwNCwgMTQsIDcsIDIwMywgMTAzLCAxNCwgNywgMjAzLCAxMDIsIDE0LCA3LCAyMDMsIDEwMSwgMTQsIAorICAgIDcsIDIwMywgMTAwLCAxNCwgNywgMjAzLCA5OSwgMTQsIDcsIDIwMywgOTgsIDE0LCA3LCAyMDMsIDk3LCAxNCwgNywgMjAzLCAKKyAgICA5NiwgMTQsIDcsIDIwMywgOTUsIDE0LCA3LCAyMDMsIDk0LCAxNCwgNywgMjAzLCA5MywgMTQsIDcsIDIwMywgOTIsIDE0LCAKKyAgICA3LCAyMDMsIDkxLCAxNCwgNywgMjAxLCAxNDYsIDE0LCA3LCAyMDEsIDE0NSwgMTQsIDcsIDIwMSwgMTQ0LCAxNCwgNywgCisgICAgMjAxLCAxNDMsIDE0LCA3LCAyMDEsIDE0MiwgMTQsIDcsIDIwMSwgMTQxLCAxNCwgNywgMjAxLCAxNDAsIDE0LCA3LCAyMDEsIAorICAgIDEzOSwgMTQsIDcsIDIwMSwgMTM4LCAxNCwgNywgMjAxLCAxMzcsIDE0LCA3LCAyMDEsIDEzNiwgMTQsIDcsIDIwMSwgMTM1LCAKKyAgICAxNCwgNywgMjAxLCAxMzQsIDE0LCA3LCAyMDEsIDEzMywgMTQsIDcsIDIwMSwgMTMyLCAxNCwgNywgMjAxLCAxMzEsIDE0LCAKKyAgICA3LCAyMDEsIDEzMCwgMTQsIDcsIDIwMSwgMTI5LCAxNCwgNywgMjAxLCAxMjgsIDE0LCA3LCAyMDEsIDEyNywgMTQsIDcsIAorICAgIDIwMSwgMTI2LCAxNCwgNywgMjAxLCAxMjUsIDE0LCA3LCAyMDEsIDEyNCwgMTQsIDcsIDIwMSwgMTIzLCAxNCwgNywgMjAxLCAKKyAgICAxMjIsIDE0LCA3LCAyMDEsIDEyMSwgMTQsIDcsIDIwMSwgMTIwLCAxNCwgNywgMjAxLCAxMTksIDE0LCA3LCAyMDEsIDExOCwgCisgICAgMTQsIDcsIDIwMSwgMTE3LCAxNCwgNywgMjAxLCAxMTYsIDE0LCA3LCAyMDEsIDExNSwgMTQsIDcsIDIwMCwgMTkzLCAxNCwgCisgICAgNywgMjAwLCAxOTIsIDE0LCA3LCAyMDAsIDE5MSwgMTQsIDcsIDIwMCwgMTkwLCAxNCwgNywgMjAwLCAxODksIDE0LCA3LCAKKyAgICAyMDAsIDE4OCwgMTQsIDcsIDIwMCwgMTg3LCAxNCwgNywgMjAwLCAxODYsIDE0LCA3LCAyMDAsIDE4NSwgMTQsIDcsIDIwMCwgCisgICAgMTg0LCAxNCwgNywgMjAwLCAxODMsIDE0LCA3LCAyMDAsIDE4MiwgMTQsIDcsIDIwMCwgMTIxLCAxNCwgNywgMjAwLCAxMjAsIAorICAgIDE0LCA3LCAyMDAsIDExOSwgMTQsIDcsIDIwMCwgMTE4LCAxNCwgNywgMjAwLCAxMTcsIDE0LCA3LCAyMDAsIDExNiwgMTQsIAorICAgIDcsIDIwMCwgMTE1LCAxNCwgNywgMjAwLCAxMTQsIDE0LCA3LCAyMDAsIDExMywgMTQsIDcsIDE5OSwgMTU2LCAxNCwgNywgCisgICAgMTk5LCAxNTUsIDE0LCA3LCAxOTksIDE1NCwgMTQsIDcsIDE5OSwgMTUzLCAxNCwgNywgMTk5LCAxNTIsIDE0LCA3LCAxOTksIAorICAgIDE1MSwgMTQsIDcsIDE5OSwgMTUwLCAxNCwgNywgMTk5LCAxNDksIDE0LCA3LCAxOTksIDE0OCwgMTQsIDcsIDE5OSwgMTQ3LCAKKyAgICAxNCwgNywgMTk5LCAxNDYsIDE0LCA3LCAxOTksIDE0NSwgMTQsIDcsIDE5OSwgMTQ0LCAxNCwgNywgMTk5LCAxNDMsIDE0LCAKKyAgICA3LCAxOTksIDE0MiwgMTQsIDcsIDE5OSwgMTQxLCAxNCwgNywgMTk5LCAxNDAsIDE0LCA3LCAxOTksIDEzOSwgMTQsIDcsIAorICAgIDE5OSwgMTM4LCAxNCwgNywgMTk5LCAxMzcsIDE0LCA3LCAxOTksIDEzNiwgMTQsIDcsIDE5OSwgMTM1LCAxNCwgNywgMTk5LCAKKyAgICAxMzQsIDE0LCA3LCAxOTksIDEzMywgMTQsIDcsIDE5OSwgMTMyLCAxNCwgNywgMTk5LCAxMzEsIDE0LCA3LCAxOTksIDEzMCwgCisgICAgMTQsIDcsIDE5OSwgMTI5LCAxNCwgNywgMTk5LCAxMjgsIDE0LCA3LCAxOTksIDEyNywgMTQsIDcsIDE5OSwgMTI2LCAxNCwgCisgICAgNywgMTk5LCAxMjUsIDE0LCA3LCAxOTksIDEyNCwgMTQsIDcsIDE5OSwgMTIzLCAxNCwgNywgMTk5LCAxMjIsIDE0LCA3LCAKKyAgICAxOTksIDEyMSwgMTQsIDcsIDE5OSwgMTIwLCAxNCwgNywgMTk5LCAxMTksIDE0LCA3LCAxOTksIDExOCwgMTQsIDcsIDE5OSwgCisgICAgMTE3LCAxNCwgNywgMTk5LCAxMTYsIDE0LCA3LCAyNTIsIDEzNywgMTQsIDcsIDI1MiwgMTM2LCAxNCwgNywgMjUyLCAxMzUsIAorICAgIDE0LCA3LCAyNTIsIDEzNCwgMTQsIDcsIDI1MiwgMTMzLCAxNCwgNywgMjUyLCAxMzIsIDE0LCA3LCAyNTIsIDEzMSwgMTQsIAorICAgIDcsIDI1MiwgMTMwLCAxNCwgNywgMjUyLCAxMjksIDE0LCA3LCAyNTIsIDEyOCwgMTQsIDcsIDI1MiwgMTI3LCAxNCwgNywgCisgICAgMjUyLCAxMjYsIDE0LCA3LCAyNTIsIDEyNSwgMTQsIDcsIDI1MiwgMTI0LCAxNCwgNywgMjUyLCAxMjMsIDE0LCA3LCAyNTIsIAorICAgIDEyMiwgMTQsIDcsIDI1MiwgMTIxLCAxNCwgNywgMjUyLCAxMjAsIDE0LCA3LCAyNTIsIDExOSwgMTQsIDcsIDI1MiwgMTE4LCAKKyAgICAxNCwgNywgMjUyLCAxMTcsIDE0LCA3LCAyNTIsIDExNiwgMTQsIDcsIDI1MiwgMTE1LCAxNCwgNywgMjUyLCAxMTQsIDE0LCAKKyAgICA3LCAyNTIsIDExMywgMTQsIDcsIDI1MiwgMTEyLCAxNCwgNywgMjUyLCAxMTEsIDE0LCA3LCAyNTIsIDExMCwgMTQsIDcsIAorICAgIDI1MiwgMTA5LCAxNCwgNywgMjUyLCAxMDgsIDE0LCA3LCAyNTIsIDEwNywgMTQsIDcsIDI1MiwgMTA2LCAxNCwgNywgMjUyLCAKKyAgICAxMDUsIDE0LCA3LCAyNTIsIDEwNCwgMjgsIDcsIDI1NSwgMTMxLCAyOCwgNywgMjU1LCAxMzAsIDI4LCA3LCAyNTUsIDEyOSwgCisgICAgMjgsIDcsIDI1NSwgMTI4LCAyOCwgNywgMjU1LCAxMjcsIDI4LCA3LCAyNTUsIDEyNSwgMjgsIDcsIDI1NSwgMTIyLCAyOCwgCisgICAgNywgMjU1LCAxMjEsIDI4LCA3LCAyNTUsIDEyMCwgMjgsIDcsIDI1NSwgMTE5LCAyOCwgNywgMjU1LCAxMTgsIDI4LCA3LCAKKyAgICAyNTUsIDExNywgMjgsIDcsIDI1NSwgMTE2LCAyOCwgNywgMjU1LCAxMTUsIDI4LCA3LCAyNTUsIDExNCwgMjgsIDcsIDI1NSwgCisgICAgMTEyLCAyOCwgNywgMjU1LCAxMTEsIDI4LCA3LCAyNTUsIDExMCwgMjgsIDcsIDI1NSwgMTA4LCAyOCwgNywgMjU1LCAxMDcsIAorICAgIDI4LCA3LCAyNTUsIDEwNiwgMjgsIDcsIDI1NSwgMTA1LCAyOCwgNywgMjU1LCAxMDQsIDI4LCA3LCAyNTUsIDEwMywgMjgsIAorICAgIDcsIDI1NSwgMTAyLCAyOCwgNywgMjU1LCAxMDEsIDI4LCA3LCAyNTUsIDEwMCwgMjgsIDcsIDI1NSwgOTksIDI4LCA3LCAKKyAgICAyNTUsIDk4LCAyOCwgNywgMjU1LCA5NywgMjgsIDcsIDI1NSwgOTUsIDI4LCA3LCAyNTUsIDk0LCAyOCwgNywgMjU1LCA5MywgCisgICAgMjgsIDcsIDI1NSwgOTIsIDI4LCA3LCAyNTUsIDkwLCAyOCwgNywgMjU1LCA4OSwgMjgsIDcsIDI1NSwgODgsIDI4LCA3LCAKKyAgICAyNTUsIDg3LCAyOCwgNywgMjU1LCA4NiwgMjgsIDcsIDI1NSwgODUsIDI4LCA3LCAyNTUsIDg0LCAyOCwgNywgMjU1LCA4MywgCisgICAgMjgsIDcsIDI1NSwgODIsIDI4LCA3LCAyNTUsIDgwLCAyOCwgNywgMjU1LCA3OSwgMjgsIDcsIDI1NSwgNzgsIDI4LCA3LCAKKyAgICAyNTUsIDc2LCAyOCwgNywgMjU1LCA3NCwgMjgsIDcsIDI1NSwgNzMsIDI4LCA3LCAyNTUsIDcyLCAyOCwgNywgMjU1LCA3MSwgCisgICAgMjgsIDcsIDI1NSwgNzAsIDI4LCA3LCAyNTUsIDY5LCAyOCwgNywgMjU1LCA2OCwgMjgsIDcsIDI1NSwgNjcsIDI4LCA3LCAKKyAgICAyNTUsIDY2LCAyOCwgNywgMjU1LCA2NSwgMjgsIDcsIDI1NSwgNjQsIDI4LCA3LCAyNTUsIDYzLCAyOCwgNywgMjU1LCA2MiwgCisgICAgMjgsIDcsIDI1NSwgNjEsIDI4LCA3LCAyNTUsIDYwLCAyOCwgNywgMjU1LCA1OSwgMjgsIDcsIDI1NSwgNTgsIDI4LCA3LCAKKyAgICAyNTUsIDU3LCAyOCwgNywgMjU1LCA1NiwgMjgsIDcsIDI1NSwgNTUsIDI4LCA3LCAyNTUsIDU0LCAyOCwgNywgMjU1LCA1MywgCisgICAgMjgsIDcsIDI1NSwgNTIsIDI4LCA3LCAyNTUsIDUxLCAyOCwgNywgMjU1LCA1MCwgMjgsIDcsIDI1NSwgNDksIDI4LCA3LCAKKyAgICAyNTUsIDQ4LCAyOCwgNywgMjU1LCA0NywgMjgsIDcsIDI1NSwgNDYsIDI4LCA3LCAyNTUsIDQ1LCAyOCwgNywgMjU1LCA0NCwgCisgICAgMjgsIDcsIDI1NSwgNDMsIDI4LCA3LCAyNTUsIDQyLCAyOCwgNywgMjU1LCA0MSwgMjgsIDcsIDI1NSwgNDAsIDI4LCA3LCAKKyAgICAyNTUsIDM5LCAyOCwgNywgMjU1LCAzOCwgMjgsIDcsIDI1NSwgMzcsIDI4LCA3LCAyNTUsIDM2LCAyOCwgNywgMjU1LCAzNSwgCisgICAgMjgsIDcsIDI1NSwgMzQsIDI4LCA3LCAyNTUsIDMzLCAyOCwgNywgMjU1LCAzMiwgMjgsIDcsIDI1NSwgMzEsIDI4LCA3LCAKKyAgICAyNTUsIDMwLCAyOCwgNywgMjU1LCAyOSwgMjgsIDcsIDI1NSwgMjgsIDI4LCA3LCAyNTUsIDI3LCAyOCwgNywgMjU1LCAyNiwgCisgICAgMjgsIDcsIDI1NSwgMjUsIDI4LCA3LCAyNTUsIDI0LCAyOCwgNywgMjU1LCAyMywgMjgsIDcsIDI1NSwgMjIsIDI4LCA3LCAKKyAgICAyNTUsIDIxLCAyOCwgNywgMjU1LCAyMCwgMjgsIDcsIDI1NSwgMTksIDI4LCA3LCAyNTUsIDE4LCAyOCwgNywgMjU1LCAxNywgCisgICAgMjgsIDcsIDI1NSwgMTYsIDI4LCA3LCAyNTUsIDE1LCAyOCwgNywgMjU1LCAxNCwgMjgsIDcsIDI1NSwgMTMsIDI4LCA3LCAKKyAgICAyNTUsIDEyLCAyOCwgNywgMjU1LCAxMSwgMjgsIDcsIDI1NSwgMTAsIDI4LCA3LCAyNTUsIDgsIDI4LCA3LCAyNTUsIDcsIAorICAgIDI4LCA3LCAyNTUsIDYsIDI4LCA3LCAyNTUsIDUsIDI4LCA3LCAyNTUsIDQsIDI4LCA3LCAyNTUsIDMsIDI4LCA3LCAyNTUsIAorICAgIDIsIDI4LCA3LCAyNTUsIDEsIDI4LCA3LCAyNTUsIDAsIDI4LCA3LCAyNTQsIDI1NSwgMjgsIDcsIDI1NCwgMjU0LCAyOCwgNywgCisgICAgMjU0LCAyNTMsIDI4LCA3LCAyNTQsIDI1MiwgMjgsIDcsIDI1NCwgMjUxLCAyOCwgNywgMjU0LCAyNTAsIDI4LCA3LCAyNTQsIAorICAgIDI0OSwgMjgsIDcsIDI1NCwgMjQ4LCAyOCwgNywgMjU0LCAyNDcsIDI4LCA3LCAyNTQsIDI0NiwgMjgsIDcsIDI1NCwgMjQ1LCAKKyAgICAyOCwgNywgMjU0LCAyNDQsIDI4LCA3LCAyNTQsIDI0MywgMjgsIDcsIDI1NCwgMjQyLCAyOCwgNywgMjU0LCAyNDEsIDI4LCAKKyAgICA3LCAyNTQsIDI0MCwgMjgsIDcsIDI1NCwgMjM5LCAyOCwgNywgMjU0LCAyMzgsIDI4LCA3LCAyNTQsIDIzNywgMjgsIDcsIAorICAgIDI1NCwgMjM2LCAyOCwgNywgMjU0LCAyMzUsIDI4LCA3LCAyNTQsIDIzNCwgMjgsIDcsIDI1NCwgMjMzLCAyOCwgNywgMjU0LCAKKyAgICAyMzIsIDI4LCA3LCAyNTQsIDIzMSwgMjgsIDcsIDI1NCwgMjI5LCAyOCwgNywgMjU0LCAyMjgsIDI4LCA3LCAyNTQsIDIyNywgCisgICAgMjgsIDcsIDI1NCwgMjI2LCAyOCwgNywgMjU0LCAyMjUsIDI4LCA3LCAyNTQsIDIyNCwgMjgsIDcsIDI1NCwgMjIzLCAyOCwgCisgICAgNywgMjU0LCAyMjIsIDI4LCA3LCAyNTQsIDIyMSwgMjgsIDcsIDI1NCwgMjIwLCAyOCwgNywgMjU0LCAyMTksIDI4LCA3LCAKKyAgICAyNTQsIDIxOCwgMjgsIDcsIDI1NCwgMjE2LCAyOCwgNywgMjU0LCAyMTUsIDI4LCA3LCAyNTQsIDIxNCwgMjgsIDcsIDI1NCwgCisgICAgMjEzLCAyOCwgNywgMjU0LCAyMTIsIDI4LCA3LCAyNTQsIDIxMSwgMjgsIDcsIDI1NCwgMjEwLCAyOCwgNywgMjU0LCAyMDksIAorICAgIDI4LCA3LCAyNTQsIDIwOCwgMjgsIDcsIDI1NCwgMjA3LCAyOCwgNywgMjU0LCAyMDYsIDI4LCA3LCAyNTQsIDIwNSwgMjgsIAorICAgIDcsIDI1NCwgMjA0LCAyOCwgNywgMjU0LCAyMDMsIDI4LCA3LCAyNTQsIDIwMiwgMjgsIDcsIDI1NCwgMjAxLCAyOCwgNywgCisgICAgMjU0LCAyMDAsIDI4LCA3LCAyNTQsIDE5OSwgMjgsIDcsIDI1NCwgMTk4LCAyOCwgNywgMjU0LCAxOTcsIDI4LCA3LCAyNTQsIAorICAgIDE5NiwgMjgsIDcsIDI1NCwgMTk1LCAyOCwgNywgMjU0LCAxOTQsIDI4LCA3LCAyNTQsIDE5MywgMjgsIDcsIDI1NCwgMTkyLCAKKyAgICAyOCwgNywgMjU0LCAxOTEsIDI4LCA3LCAyNTQsIDE5MCwgMjgsIDcsIDI1NCwgMTg5LCAyOCwgNywgMjU0LCAxODgsIDI4LCAKKyAgICA3LCAyNTQsIDE4NywgMjgsIDcsIDI1NCwgMTg2LCAyOCwgNywgMjU0LCAxODUsIDI4LCA3LCAyNTQsIDE4NCwgMjgsIDcsIAorICAgIDI1NCwgMTgzLCAyOCwgNywgMjU0LCAxODIsIDI4LCA3LCAyNTQsIDE4MSwgMjgsIDcsIDI1NCwgMTgwLCAyOCwgNywgMjU0LCAKKyAgICAxNzksIDI4LCA3LCAyNTQsIDE3OCwgMjgsIDcsIDI1NCwgMTc3LCAyOCwgNywgMjU0LCAxNzYsIDI4LCA3LCAyNTQsIDE3NSwgCisgICAgMjgsIDcsIDI1NCwgMTc0LCAyOCwgNywgMjU0LCAxNzMsIDI4LCA3LCAyNTQsIDE3MiwgMjgsIDcsIDI1NCwgMTcxLCAyOCwgCisgICAgNywgMjU0LCAxNzAsIDI4LCA3LCAyNTQsIDE2OSwgMjgsIDcsIDI1NCwgMTY4LCAyOCwgNywgMjU0LCAxNjcsIDI4LCA3LCAKKyAgICAyNTQsIDE2NiwgMjgsIDcsIDI1NCwgMTY1LCAyOCwgNywgMjU0LCAxNjQsIDI4LCA3LCAyNTQsIDE2MywgMjgsIDcsIDI1NCwgCisgICAgMTYyLCAyOCwgNywgMjU0LCAxNjEsIDI4LCA3LCAyNTQsIDE2MCwgMjgsIDcsIDI1NCwgMTU5LCAyOCwgNywgMjU0LCAxNTgsIAorICAgIDI4LCA3LCAyNTQsIDE1NywgMjgsIDcsIDI1NCwgMTU2LCAyOCwgNywgMjU0LCAxNTUsIDI4LCA3LCAyNTQsIDE1NCwgMjgsIAorICAgIDcsIDI1NCwgMTUzLCAyOCwgNywgMjU0LCAxNTIsIDI4LCA3LCAyNTQsIDE1MSwgMjgsIDcsIDI1NCwgMTUwLCAyOCwgNywgCisgICAgMjU0LCAxNDksIDI4LCA3LCAyNTQsIDE0OCwgMjgsIDcsIDI1NCwgMTQ2LCAyOCwgNywgMjU0LCAxNDUsIDI4LCA3LCAyNTQsIAorICAgIDE0NCwgMjgsIDcsIDI1NCwgMTQzLCAyOCwgNywgMjU0LCAxNDIsIDI4LCA3LCAyNTQsIDE0MSwgMjgsIDcsIDI1NCwgMTQwLCAKKyAgICAyOCwgNywgMjU0LCAxMzksIDI4LCA3LCAyNTQsIDEzOCwgMjgsIDcsIDI1NCwgMTM3LCAyOCwgNywgMjU0LCAxMzYsIDI4LCAKKyAgICA3LCAyNTQsIDEzNSwgMjgsIDcsIDI1NCwgMTM0LCAyOCwgNywgMjU0LCAxMzMsIDI4LCA3LCAyNTQsIDEzMiwgMjgsIDcsIAorICAgIDI1NCwgMTMxLCAyOCwgNywgMjU0LCAxMzAsIDI4LCA3LCAyNTQsIDEyOSwgMjgsIDcsIDI1NCwgMTI4LCAyOCwgNywgMjU0LCAKKyAgICAxMjcsIDI4LCA3LCAyNTQsIDEyNiwgMjgsIDcsIDI1NCwgMTI1LCAyOCwgNywgMjU0LCAxMjQsIDI4LCA3LCAyNTQsIDEyMywgCisgICAgMjgsIDcsIDI1NCwgMTIyLCAyOCwgNywgMjU0LCAxMjEsIDI4LCA3LCAyNTQsIDEyMCwgMjgsIDcsIDI1NCwgMTE5LCAyOCwgCisgICAgNywgMjU0LCAxMTgsIDI4LCA3LCAyNTQsIDExNywgMjgsIDcsIDI1NCwgMTE2LCAyOCwgNywgMjU0LCAxMTUsIDI4LCA3LCAKKyAgICAyNTQsIDExNCwgMjgsIDcsIDI1NCwgMTEzLCAyOCwgNywgMjU0LCAxMTIsIDI4LCA3LCAyNTQsIDExMSwgMjgsIDcsIDI1NCwgCisgICAgMTEwLCAyOCwgNywgMjU0LCAxMDksIDI4LCA3LCAyNTQsIDEwOCwgMjgsIDcsIDI1NCwgMTA3LCAyOCwgNywgMjU0LCAxMDYsIAorICAgIDI4LCA3LCAyNTQsIDEwNSwgMjgsIDcsIDI1NCwgMTA0LCAyOCwgNywgMjU0LCAxMDMsIDI4LCA3LCAyNTQsIDEwMiwgMjgsIAorICAgIDcsIDI1NCwgMTAxLCAyOCwgNywgMjU0LCAxMDAsIDI4LCA3LCAyNTQsIDk5LCAyOCwgNywgMjU0LCA5OCwgMjgsIDcsIDI1NCwgCisgICAgOTcsIDI4LCA3LCAyNTQsIDk2LCAyOCwgNywgMjU0LCA5NSwgMjgsIDcsIDI1NCwgOTQsIDI4LCA3LCAyNTQsIDkzLCAyOCwgCisgICAgNywgMjU0LCA5MiwgMjgsIDcsIDI1NCwgOTEsIDI4LCA3LCAyNTQsIDkwLCAyOCwgNywgMjU0LCA4OSwgMjgsIDcsIDI1NCwgCisgICAgODgsIDI4LCA3LCAyNTQsIDg3LCAyOCwgNywgMjU0LCA4NiwgMjgsIDcsIDI1NCwgODUsIDI4LCA3LCAyNTQsIDg0LCAyOCwgCisgICAgNywgMjU0LCA4MywgMjgsIDcsIDI1NCwgODIsIDI4LCA3LCAyNTQsIDgxLCAyOCwgNywgMjU0LCA4MCwgMjgsIDcsIDI1NCwgCisgICAgNzksIDI4LCA3LCAyNTQsIDc4LCAyOCwgNywgMjU0LCA3NywgMjgsIDcsIDI1NCwgNzYsIDI4LCA3LCAyNTQsIDc1LCAyOCwgCisgICAgNywgMjU0LCA3NCwgMjgsIDcsIDI1NCwgNzMsIDI4LCA3LCAyNTQsIDcyLCAyOCwgNywgMjU0LCA3MSwgMjgsIDcsIDI1NCwgCisgICAgNzAsIDI4LCA3LCAyNTQsIDY5LCAyOCwgNywgMjU0LCA2OCwgMjgsIDcsIDI1NCwgNjcsIDI4LCA3LCAyNTQsIDY2LCAyOCwgCisgICAgNywgMjU0LCA2NSwgMjgsIDcsIDI1NCwgNjQsIDI4LCA3LCAyNTQsIDYzLCAyOCwgNywgMjU0LCA2MiwgMjgsIDcsIDI1NCwgCisgICAgNjEsIDI4LCA3LCAyNTQsIDYwLCAyOCwgNywgMjU0LCA1OSwgMjgsIDcsIDI1NCwgNTgsIDI4LCA3LCAyNTQsIDU3LCAyOCwgCisgICAgNywgMjU0LCA1NiwgMjgsIDcsIDI1NCwgNTUsIDI4LCA3LCAyNTQsIDU0LCAyOCwgNywgMjU0LCA1MywgMjgsIDcsIDI1NCwgCisgICAgNTIsIDI4LCA3LCAyNTQsIDUxLCAyOCwgNywgMjU0LCA1MCwgMjgsIDcsIDI1NCwgNDksIDI4LCA3LCAyNTQsIDQ4LCAyOCwgCisgICAgNywgMjU0LCA0NywgMjgsIDcsIDI1NCwgNDYsIDI4LCA3LCAyNTQsIDQ1LCAyOCwgNywgMjU0LCA0NCwgMjgsIDcsIDI1NCwgCisgICAgNDMsIDI4LCA3LCAyNTQsIDQyLCAyOCwgNywgMjU0LCA0MSwgMjgsIDcsIDI1NCwgNDAsIDI4LCA3LCAyNTQsIDM5LCAyOCwgCisgICAgNywgMjU0LCAzOCwgMjgsIDcsIDI1NCwgMzcsIDI4LCA3LCAyNTQsIDM2LCAyOCwgNywgMjU0LCAzNCwgMjgsIDcsIDI1NCwgCisgICAgMzMsIDI4LCA3LCAyNTQsIDMyLCAyOCwgNywgMjU0LCAzMSwgMjgsIDcsIDI1NCwgMzAsIDI4LCA3LCAyNTQsIDI5LCAyOCwgCisgICAgNywgMjU0LCAyOCwgMjgsIDcsIDI1NCwgMjcsIDI4LCA3LCAyNTQsIDI2LCAyOCwgNywgMjU0LCAyNSwgMjgsIDcsIDI1NCwgCisgICAgMjQsIDI4LCA3LCAyNTQsIDIxLCAyOCwgNywgMjU0LCAyMCwgMjgsIDcsIDI1NCwgMTksIDI4LCA3LCAyNTQsIDE4LCAyOCwgCisgICAgNywgMjU0LCAxNCwgMjgsIDcsIDI1NCwgMTMsIDI4LCA3LCAyNTQsIDEyLCAyOCwgNywgMjU0LCAxMSwgMjgsIDcsIDI1NCwgCisgICAgMTAsIDI4LCA3LCAyNTQsIDksIDI4LCA3LCAyNTQsIDgsIDI4LCA3LCAyNTQsIDcsIDI4LCA3LCAyNTQsIDYsIDI4LCA3LCAKKyAgICAyNTQsIDUsIDI4LCA3LCAyNTQsIDQsIDI4LCA3LCAyNTQsIDMsIDI4LCA3LCAyNTQsIDIsIDI4LCA3LCAyNTQsIDEsIDI4LCAKKyAgICA3LCAyNTQsIDAsIDI4LCA3LCAyNTMsIDI1NSwgMjgsIDcsIDI1MywgMjU0LCAyOCwgNywgMjUzLCAyNTMsIDI4LCA3LCAyNTMsIAorICAgIDI1MiwgMjgsIDcsIDI1MywgMjUwLCAyOCwgNywgMjUzLCAyNDksIDI4LCA3LCAyNTMsIDI0OCwgMjgsIDcsIDI1MywgMjQ3LCAKKyAgICAyOCwgNywgMjUzLCAyNDYsIDI4LCA3LCAyNTMsIDI0NSwgMjgsIDcsIDI1MywgMjQ0LCAyOCwgNywgMjUzLCAyNDMsIDI4LCAKKyAgICA3LCAyNTMsIDI0MiwgMjgsIDcsIDI1MywgMjQxLCAyOCwgNywgMjUzLCAyNDAsIDI4LCA3LCAyNTMsIDIzOSwgMjgsIDcsIAorICAgIDI1MywgMjM4LCAyOCwgNywgMjUzLCAyMzcsIDI4LCA3LCAyNTMsIDIzNiwgMjgsIDcsIDI1MywgMjM1LCAyOCwgNywgMjUzLCAKKyAgICAyMzQsIDI4LCA3LCAyNTMsIDIzMywgMjgsIDcsIDI1MywgMjMyLCAyOCwgNywgMjUzLCAyMzEsIDI4LCA3LCAyNTMsIDIzMCwgCisgICAgMjgsIDcsIDI1MywgMjI5LCAyOCwgNywgMjUzLCAyMjgsIDI4LCA3LCAyNTMsIDIyNywgMjgsIDcsIDI1MywgMjI2LCAyOCwgCisgICAgNywgMjUzLCAyMjUsIDI4LCA3LCAyNTMsIDIyNCwgMjgsIDcsIDI1MywgMjIzLCAyOCwgNywgMjUzLCAyMjIsIDI4LCA3LCAKKyAgICAyNTMsIDIyMSwgMjgsIDcsIDI1MywgMjIwLCAyOCwgNywgMjUzLCAyMTksIDI4LCA3LCAyNTMsIDIxOCwgMjgsIDcsIDI1MywgCisgICAgMjE3LCAyOCwgNywgMjUzLCAyMTYsIDI4LCA3LCAyNTMsIDIxNSwgMjgsIDcsIDI1MywgMjE0LCAyOCwgNywgMjUzLCAyMTMsIAorICAgIDI4LCA3LCAyNTMsIDIxMiwgMjgsIDcsIDI1MywgMjExLCAyOCwgNywgMjUzLCAyMTAsIDI4LCA3LCAyNTMsIDIwOSwgMjgsIAorICAgIDcsIDI1MywgMjA4LCAyOCwgNywgMjUzLCAyMDcsIDI4LCA3LCAyNTMsIDIwNiwgMjgsIDcsIDI1MywgMjA1LCAyOCwgNywgCisgICAgMjUzLCAyMDQsIDI4LCA3LCAyNTMsIDIwMywgMjgsIDcsIDI1MywgMjAyLCAyOCwgNywgMjUzLCAyMDEsIDI4LCA3LCAyNTMsIAorICAgIDIwMCwgMjgsIDcsIDI1MywgMTk5LCAyOCwgNywgMjUzLCAxOTgsIDI4LCA3LCAyNTMsIDE5NywgMjgsIDcsIDI1MywgMTk2LCAKKyAgICAyOCwgNywgMjUzLCAxOTUsIDI4LCA3LCAyNTMsIDE5NCwgMjgsIDcsIDI1MywgMTkzLCAyOCwgNywgMjUzLCAxOTIsIDI4LCAKKyAgICA3LCAyNTMsIDE5MSwgMjgsIDcsIDI1MywgMTkwLCAyOCwgNywgMjUzLCAxODksIDIxMywgMjUzLCAyMTcsIDM0LCAyMTMsIAorICAgIDg4LCAyOCwgNywgMjUzLCAxODgsIDI4LCA3LCAyNTMsIDE4NywgMjgsIDcsIDI1MywgMTg2LCAyOCwgNywgMjUzLCAxODUsIAorICAgIDI4LCA3LCAyNTMsIDE4NCwgMjgsIDcsIDI1MywgMTgzLCAyOCwgNywgMjUzLCAxODIsIDI4LCA3LCAyNTMsIDE4MSwgMjgsIAorICAgIDcsIDI1MywgMTgwLCAyOCwgNywgMjUzLCAxNzksIDI4LCA3LCAyNTMsIDE3OCwgMjgsIDcsIDI1MywgMTc3LCAxOTIsIDI4LCAKKyAgICA3LCAyNTMsIDE3NiwgMjgsIDcsIDI1MywgMTc1LCAyOCwgNywgMjUzLCAxNzQsIDI4LCA3LCAyNTMsIDE3MywgMjgsIDcsIAorICAgIDI1MywgMTcyLCAyOCwgNywgMjUzLCAxNzEsIDI4LCA3LCAyNTMsIDE3MCwgMjgsIDcsIDI1MywgMTY4LCAyOCwgNywgMjUzLCAKKyAgICAxNjYsIDI4LCA3LCAyNTMsIDE2NCwgMjgsIDcsIDI1MywgMTYyLCAyOCwgNywgMjUzLCAxNjAsIDI4LCA3LCAyNTMsIDE1OCwgCisgICAgMjgsIDcsIDI1MywgMTU2LCAyOCwgNywgMjUzLCAxNTQsIDI4LCA3LCAyNTMsIDE1MiwgMjgsIDcsIDI1MywgMTUwLCAyNDgsIAorICAgIDI0NCwgMjI0LCA5NywgODEsIDI4LCA3LCAyNTMsIDE0OCwgMjM4LCAxNzEsIDIyNCwgOTcsIDgxLCAyOCwgNywgMjUzLCAKKyAgICAxNDcsIDI4LCA3LCAyNTMsIDE0NSwgMjgsIDcsIDI1MywgMTQzLCAyOCwgNywgMjUzLCAxNDEsIDI4LCA3LCAyNTMsIDEzOSwgCisgICAgMjgsIDcsIDI1MywgMTM3LCAyOCwgNywgMjUzLCAxMzUsIDI4LCA3LCAyNTMsIDEzMywgMjgsIDcsIDI1MywgMTMxLCAyOCwgCisgICAgNywgMjUzLCAxMzAsIDI4LCA3LCAyNTMsIDEyOSwgMjgsIDcsIDI1MywgMTI4LCAyOCwgNywgMjUzLCAxMjcsIDI4LCA3LCAKKyAgICAyNTMsIDEyNiwgMjgsIDcsIDI1MywgMTI1LCAyOCwgNywgMjUzLCAxMjQsIDI4LCA3LCAyNTMsIDEyMywgMjgsIDcsIDI1MywgCisgICAgMTIyLCAyOCwgNywgMjUzLCAxMjEsIDI4LCA3LCAyNTMsIDEyMCwgMjgsIDcsIDI1MywgMTE5LCAyOCwgNywgMjUzLCAxMTgsIAorICAgIDI4LCA3LCAyNTMsIDExNywgMjgsIDcsIDI1MywgMTE2LCAyOCwgNywgMjUzLCAxMTUsIDI4LCA3LCAyNTMsIDExNCwgMjgsIAorICAgIDcsIDI1MywgMTEzLCAyOCwgNywgMjUzLCAxMTIsIDI4LCA3LCAyNTMsIDExMSwgMjgsIDcsIDI1MywgMTEwLCAyOCwgNywgCisgICAgMjUzLCAxMDksIDI4LCA3LCAyNTMsIDEwOCwgMjgsIDcsIDI1MywgMTA3LCAyOCwgNywgMjUzLCAxMDYsIDI4LCA3LCAyNTMsIAorICAgIDEwNSwgMjgsIDcsIDI1MywgMTA0LCAyOCwgNywgMjUzLCAxMDMsIDI4LCA3LCAyNTMsIDEwMiwgMjgsIDcsIDI1MywgMTAxLCAKKyAgICAyOCwgNywgMjUzLCAxMDAsIDI4LCA3LCAyNTMsIDk5LCAyOCwgNywgMjUzLCA5OCwgMjgsIDcsIDI1MywgOTcsIDI4LCA3LCAKKyAgICAyNTMsIDk2LCAyOCwgNywgMjUzLCA5NSwgMjgsIDcsIDI1MywgOTQsIDI4LCA3LCAyNTMsIDkzLCAyOCwgNywgMjUzLCA5MiwgCisgICAgMjgsIDcsIDI1MywgOTEsIDI4LCA3LCAyNTMsIDkwLCAyOCwgNywgMjUzLCA4OSwgMjgsIDcsIDI1MywgODgsIDI4LCA3LCAKKyAgICAyNTMsIDg3LCAyOCwgNywgMjUzLCA4NiwgMjgsIDcsIDI1MywgODUsIDI4LCA3LCAyNTMsIDg0LCAyOCwgNywgMjUzLCA4MywgCisgICAgMjgsIDcsIDI1MywgODIsIDI4LCA3LCAyNTMsIDgxLCAyOCwgNywgMjUzLCA4MCwgMjgsIDcsIDI1MywgNzksIDI4LCA3LCAKKyAgICAyNTMsIDc4LCAyOCwgNywgMjUzLCA3NywgMjgsIDcsIDI1MywgNzYsIDI4LCA3LCAyNTMsIDc1LCAyOCwgNywgMjUzLCA3NCwgCisgICAgMjgsIDcsIDI1MywgNzMsIDI4LCA3LCAyNTMsIDcyLCAyOCwgNywgMjUzLCA3MSwgMjgsIDcsIDI1MywgNzAsIDI4LCA3LCAKKyAgICAyNTMsIDY5LCAyOCwgNywgMjUzLCA2OCwgMjgsIDcsIDI1MywgNjcsIDI4LCA3LCAyNTMsIDY2LCAyOCwgNywgMjUzLCA2NSwgCisgICAgMjgsIDcsIDI1MywgNjQsIDI4LCA3LCAyNTMsIDYzLCAyOCwgNywgMjUzLCA2MiwgMjgsIDcsIDI1MywgNjEsIDI4LCA3LCAKKyAgICAyNTMsIDYwLCAyOCwgNywgMjUzLCA1OSwgMjgsIDcsIDI1MywgNTgsIDI4LCA3LCAyNTMsIDU3LCAyOCwgNywgMjUzLCA1NiwgCisgICAgMjgsIDcsIDI1MywgNTUsIDI4LCA3LCAyNTMsIDU0LCAyOCwgNywgMjUzLCA1MywgMjgsIDcsIDI1MywgNTIsIDI4LCA3LCAKKyAgICAyNTMsIDUxLCAyOCwgNywgMjUzLCA1MCwgMjgsIDcsIDI1MywgNDksIDI4LCA3LCAyNTMsIDQ4LCAyOCwgNywgMjUzLCA0NywgCisgICAgMjgsIDcsIDI1MywgNDYsIDI4LCA3LCAyNTMsIDQ1LCAyOCwgNywgMjUzLCA0NCwgMjgsIDcsIDI1MywgNDMsIDI4LCA3LCAKKyAgICAyNTMsIDQyLCAyOCwgNywgMjUzLCA0MSwgMjgsIDcsIDI1MywgNDAsIDI4LCA3LCAyNTMsIDM5LCAyOCwgNywgMjUzLCAzOCwgCisgICAgMjgsIDcsIDI1MywgMzcsIDI4LCA3LCAyNTMsIDM2LCAyOCwgNywgMjUzLCAzNSwgMjgsIDcsIDI1MywgMzQsIDI4LCA3LCAKKyAgICAyNTMsIDMzLCAyOCwgNywgMjUzLCAzMiwgMjgsIDcsIDI1MywgMzEsIDI4LCA3LCAyNTMsIDMwLCAyOCwgNywgMjUzLCAyOSwgCisgICAgMjgsIDcsIDI1MywgMjgsIDI4LCA3LCAyNTMsIDI3LCAyOCwgNywgMjUzLCAyNiwgMjgsIDcsIDI1MywgMjUsIDI4LCA3LCAKKyAgICAyNTMsIDI0LCAyOCwgNywgMjUzLCAyMywgMjgsIDcsIDI1MywgMjIsIDI4LCA3LCAyNTMsIDIxLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxOSwgMTg2LCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMzYsIDIzLCAyMzcsIDUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE1LCA4MywgMjIxLCAyNTQsIDIxNSwgMTUyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIyMSwgMjU0LCAyMTUsIAorICAgIDE1MywgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDE1OCwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyMTYsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA1LCAyMTIsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgOCwgMjIxLCAyNTMsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjEwLCAyMCwgMjE2LCAyMTEsIDIxOSwgODIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjE2LCAKKyAgICAyMTEsIDIxOSwgODMsIDIxNSwgMTUyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIxNiwgMjExLCAyMTksIDgzLCAyMTUsIAorICAgIDE1MywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxNCwgMjUsIDEsIDIxNSwgMjM1LCAyMDQsIDIxNiwgMjIyLCAyMTUsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjE5LCAyNDcsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAxNjksIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAyMzcsIDI1LCAxLCAyMTUsIDIzNSwgMjEwLCAxMzgsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE4LCAxNDAsIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAyMjYsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA1MCwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDcsIDE5MywgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDE4NSwgMjUsIDEsIDIxNSwgMjM1LCAyMjUsIAorICAgIDczLCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgMjM4LCAyMjUsIDIzNywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE1MCwgMjIyLCAKKyAgICA1LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE4LCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMTAxLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIzNSwgMTgwLCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMTY2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgMTA3LCAyMTksIDIyMCwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMTcsIDI0NSwgMjIyLCA4LCAyNSwgMSwgMjE1LCAyMzUsIDEwOCwgMTk5LCAxODYsIDIyMCwgCisgICAgMTUxLCAyNSwgMSwgMjE1LCAyMzUsIDIzNSwgMTgxLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTUwLCAyMTgsIDE1MSwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDksIDEwOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDI0NiwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDExLCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgODMsIDI1LCAxLCAyMTUsIDIzNSwgMjI3LCA4NSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTYsIDIxMSwgMjI1LCAyOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDc2LCAyMjUsIDI5LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNiwgMCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxMiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDEyNCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTQsIDIwNSwgMjUsIDEsIDIxNSwgMjM1LCAyMDQsIDIxMywgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDM4LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwOSwgMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjA2LCAxMzEsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAyMDksIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAyMzMsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCA3MiwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMjUsIDI1MCwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDg0LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjEyLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIyNCwgOTAsIDI1LCAxLCAyMTUsIDIzNSwgMjM3LCA3NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTIsIAorICAgIDI0MSwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDM5LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgNywgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMjIsIDE2NSwgMjE1LCAxOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjEwLCAxMywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE0OSwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDI1MiwgMjE4LCAxNjAsIDE5OSwgMTk0LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMzAsIAorICAgIDIyMSwgMTAzLCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMjA2LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgNTIsIDI1LCAxLCAKKyAgICAyMTUsIDIzNSwgMjAzLCAyMzUsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAyMjMsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMDgsIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDEwNSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTgsIDQ0LCAyNSwgMSwgMjE1LCAyMzUsIDIwNiwgMTM1LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgNCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTYsIDIwNywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE2NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxNiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTgsIDQxLCAyNSwgMSwgMjE1LCAyMzUsIDIyNywgNDgsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAKKyAgICAxNjcsIDI1LCAxLCAyMTUsIDIzNSwgMjAzLCA1NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDQyLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIyMCwgMjQsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAxMjYsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAxMDQsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE4LCAxNjIsIDI1LCAxLCAyMTUsIDIzNCwgMjA0LCAyMTYsIDIyMiwgMjEzLCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIwOSwgMTcxLCAyNSwgMSwgMjE1LCAyMzQsIDIxMCwgMTQyLCAyMDQsIDIxNSwgMjUsIDEsIDIxNSwgMjM0LCAyMjQsIDkyLCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDExMSwgMjIyLCAyMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAxNTUsIAorICAgIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCAxNywgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDEwNiwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMjcsIDcxLCAyNSwgMSwgMjE1LCAyMzQsIDIxNiwgNTcsIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCA5NSwgMjI1LCAyOSwgMjUsIAorICAgIDEsIDIxNSwgMjM0LCAyMjUsIDkyLCAyMTgsIDE2MCwgMjE4LCA1NSwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDE0MywgMjEwLCAKKyAgICAzOSwgMjUsIDEsIDIxNSwgMjM0LCAyMjAsIDQzLCAyMTksIDk3LCAyNSwgMSwgMjE1LCAyMzQsIDIzNSwgMTc4LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxNSwgMTQyLCAyNSwgMSwgMjE1LCAyMzQsIDIwNCwgMjE2LCAyMTgsIDE1OCwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMTAsIDQ0LCAyMTksIDkyLCAyNSwgMSwgMjE1LCAyMzQsIDIxMCwgNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjIxLCAyNTQsIAorICAgIDIwNiwgMTM0LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgOTMsIDIyMiwgMTA3LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgNDIsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMjIyLCAyNSwgMSwgMjE1LCAyMzQsIDIzNSwgMTc5LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIyNiwgMjE4LCAyNSwgMSwgMjE1LCAyMzQsIDIyNSwgMTcwLCAyNSwgMSwgMjE1LCAyMzQsIDIxNiwgMTA0LCAKKyAgICAyNSwgMSwgMjE1LCAyMzQsIDIwMiwgMjQxLCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMTg3LCAyMjAsIDIzNSwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTksIDIyMiwgMjIyLCA4OSwgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDIxNCwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMTIsIDQwLCAyNSwgMSwgMjE1LCAyMzQsIDIwNywgMjgsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMCwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMTksIDIwNiwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDIwNywgMjI1LCA3MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIAorICAgIDAsIDI1LCAxLCAyMTUsIDIzNCwgMjA3LCAyNDQsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCA5NywgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMjEsIDg4LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgNTgsIDI1LCAxLCAyMTUsIDIzNCwgMjE0LCAyMDksIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjIyLCA5LCAyMTksIDIyNCwgMjUsIDEsIDIxNSwgMjM0LCAyMzcsIDExNywgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIAorICAgIDg0LCAyNSwgMSwgMjE1LCAyMzQsIDIzNywgMTQwLCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMjMwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyMiwgMjM1LCAyMTksIDg2LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMjM1LCAyMTksIDYyLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyNCwgMjM3LCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMjMwLCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgMTY5LCAyNSwgCisgICAgMSwgMjE1LCAyMzQsIDE3OCwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDE0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDE3NSwgCisgICAgMjUsIDEsIDE3MywgMjE5LCAxODYsIDIyMiwgMjE1LCAyNSwgMSwgMTczLCAyMTgsIDcsIDI1LCAxLCAxNzMsIDE5OSwgMTk0LCAKKyAgICAyNSwgMSwgMTczLCAyMDEsIDk4LCAyNSwgMSwgMTczLCAyMTksIDIyMywgMjUsIDEsIDE3MywgMjIwLCA2NCwgMjUsIDEsIAorICAgIDE3MywgMjE5LCAxOTMsIDI1LCAxLCAxNzMsIDIzNSwgMTg4LCAyNSwgMSwgMTczLCAyMjIsIDEwMSwgMjUsIDEsIDE3MywgCisgICAgMjM2LCAzMCwgMjUsIDEsIDE3MywgMjE4LCAzMiwgMjIxLCAxNDUsIDIyMiwgMTIsIDI1LCAxLCAxNzMsIDIxOCwgMTM4LCAKKyAgICAyMjIsIDkyLCAyNSwgMSwgMTczLCAyMjIsIDk4LCAyNSwgMSwgMTczLCAyMTUsIDE0OCwgMjUsIDEsIDE3MywgMjIwLCA0OSwgCisgICAgMjUsIDEsIDE3MywgMjIyLCAxMDksIDI0NywgMTg2LCAyNSwgMSwgMTczLCAyMjYsIDIyMCwgMjUsIDEsIDE3MywgMjM1LCAKKyAgICAxODksIDI1LCAxLCAxNzMsIDIyNiwgMjI3LCAyNSwgMSwgMTczLCAxOTksIDIxMiwgMjIxLCAxMCwgMjUsIDEsIDE3MywgCisgICAgMjE4LCAxLCAyNSwgMSwgMTczLCAyMjIsIDg2LCAyNSwgMSwgMTczLCAyMTgsIDE2OCwgMjUsIDEsIDE3MywgMjIyLCA5MiwgCisgICAgMjUsIDEsIDE3MywgMjAwLCAxOCwgMjUsIDEsIDE3MywgMjI2LCA0NywgMjUsIDEsIDE3MywgMjI3LCAxMDUsIDI1LCAxLCAKKyAgICAxNzMsIDIxMCwgMTM3LCAyNSwgMSwgMTczLCAyMjAsIDU4LCAyNSwgMSwgMTczLCAyMDcsIDI2LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDY2LCAyNSwgMSwgMTczLCAyMDUsIDIxMiwgMTk5LCAxOTcsIDI1LCAxLCAxNzMsIDIwOCwgMTksIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgMjEzLCAyMTgsIDU1LCAyNSwgMSwgMTczLCAyMDIsIDI0MCwgMjUsIDEsIDE3MywgMjIwLCAxMjksIDI1LCAxLCAxNzMsIAorICAgIDIyMiwgMjM1LCAyMjYsIDIyOSwgMjUsIDEsIDE3MywgMjE4LCAxNTEsIDI1LCAxLCAxNzMsIDIxOSwgMjA4LCAyNSwgMSwgCisgICAgMTczLCAyMjUsIDc0LCAyNSwgMSwgMTczLCAyMjIsIDk0LCAyNSwgMSwgMTczLCAyMjEsIDI0NSwgMjUsIDEsIDE3MywgMjE4LCAKKyAgICAxNDUsIDI1LCAxLCAxNzMsIDIwNiwgMTMwLCAyNSwgMSwgMTczLCAyMTksIDIxMCwgMjUsIDEsIDE3MywgMjM2LCAxODcsIAorICAgIDI1LCAxLCAxNzMsIDIyMCwgNjMsIDI1LCAxLCAxNzMsIDIxOCwgMTcwLCAyNSwgMSwgMTczLCAyMTgsIDE2NiwgMjUsIDEsIAorICAgIDE3MywgMjQ4LCAxMiwgMjUsIDEsIDE3MywgMjAyLCAyNDIsIDI1LCAxLCAxNzMsIDIyMiwgOTksIDI1LCAxLCAxNzMsIDIxMiwgCisgICAgMTc1LCAyNSwgMSwgMTczLCAyMTksIDk2LCAyNSwgMSwgMTczLCAyMjUsIDkxLCAyNSwgMSwgMTczLCAyMDUsIDIwOSwgMjUsIAorICAgIDEsIDE3MywgMjE4LCAxNTIsIDIxOSwgMTc1LCAyNSwgMSwgMTczLCAyMTksIDg4LCAyNSwgMSwgMTczLCAyMjYsIDIzMywgCisgICAgMjUsIDEsIDE3MywgMjE5LCAyMTUsIDI1LCAxLCAxNzMsIDIyMiwgMjA4LCAyNSwgMSwgMTczLCAyMjIsIDg3LCAyNSwgMSwgCisgICAgMTczLCAyMjQsIDQyLCAyNSwgMSwgMTczLCAyMjUsIDIzNywgMjUsIDEsIDE3MywgMjE5LCA5NCwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICAxNzUsIDI1LCAxLCAxNzMsIDIwMCwgMjA0LCAyNSwgMSwgMTczLCAyMTksIDIxMSwgMjUsIDEsIDE3MywgMjE4LCAxNTUsIAorICAgIDI1LCAxLCAxNzMsIDIxOCwgMTQ3LCAyNSwgMSwgMTczLCAyMjUsIDI1MiwgMjE5LCA1MiwgMjUsIDEsIDE3MywgMjE4LCAKKyAgICAxNTMsIDI1LCAxLCAxNzMsIDIyMCwgNzEsIDI1LCAxLCAxNzMsIDIyMiwgMjM1LCAyMTgsIDE1OCwgMjUsIDEsIDE3MywgCisgICAgMjAwLCAxMDksIDI1LCAxLCAxNzMsIDIyMCwgNzAsIDI1LCAxLCAxNzMsIDIwOSwgMjE1LCAyNSwgMSwgMTczLCAyMTAsIAorICAgIDE0MCwgMjUsIDEsIDE3MywgMjIyLCA5NSwgMjUsIDEsIDE3MywgMjIyLCAyMTUsIDI1LCAxLCAxNzMsIDIyMiwgMTA1LCAyNSwgCisgICAgMSwgMTczLCAyMjYsIDIyMSwgMjUsIDEsIDE3MywgMjIyLCA5NiwgMjUsIDEsIDE3MywgMjI2LCAyMjUsIDI1LCAxLCAxNzMsIAorICAgIDIyMiwgMTA5LCAyMTUsIDE5OSwgMjUsIDEsIDE3MywgMTk5LCAxNzcsIDI1LCAxLCAxNzMsIDIxOSwgODQsIDI1LCAxLCAKKyAgICAxNzMsIDIyMSwgMjAwLCAyNSwgMSwgMTczLCAyMjEsIDM5LCAyNSwgMSwgMTczLCAyMTAsIDE2LCAyNSwgMSwgMTczLCAyMjYsIAorICAgIDI0NCwgMjI1LCA1MiwgMjUsIDEsIDE3MywgMjI2LCAyNDQsIDIzNywgMTUzLCAyNSwgMSwgMTczLCAyMTksIDI0NSwgMjUsIAorICAgIDEsIDE3MywgMjIwLCAxMjYsIDI1LCAxLCAxNzMsIDIyNCwgMTU4LCAyNSwgMSwgMTczLCAyMTUsIDE2MCwgMjUsIDEsIDE3MywgCisgICAgMjE2LCA0NywgMjUsIDEsIDE3MywgMjA2LCAxNDYsIDI1LCAxLCAxMzcsIDIyMiwgODUsIDI1LCAxLCAxMzcsIDIwMSwgOTYsIAorICAgIDI1LCAxLCAxMzcsIDIxOSwgODIsIDI1LCAxLCAxMzcsIDIyMSwgMjUzLCAyNSwgMSwgMTM3LCAyMTksIDgwLCAyNSwgMSwgCisgICAgMTM3LCAyMjQsIDIwMywgMjUsIDEsIDEzNywgMjE5LCA4NSwgMjUsIDEsIDEzNywgMjE4LCAxNjUsIDI1LCAxLCAxMzcsIAorICAgIDIxOSwgMjI5LCAyNSwgMSwgMTM3LCAyMTgsIDU1LCAyNSwgMSwgMTM3LCAyMDAsIDIxNSwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAxODMsIDI1LCAxLCAxMzcsIDIxMCwgNjMsIDI1LCAxLCAxMzcsIDIxOSwgMTk0LCAyNSwgMSwgMTM3LCAyMjYsIDIyOCwgMjUsIAorICAgIDEsIDEzNywgMjA2LCAxMzIsIDI1LCAxLCAxMzcsIDIxMCwgNDIsIDI1LCAxLCAxMzcsIDIxOSwgOTMsIDI1LCAxLCAxMzcsIAorICAgIDIwNywgMjQ0LCAyNSwgMSwgMTM3LCAyMjYsIDIzMywgMjUsIDEsIDEzNywgMjAwLCA5NywgMjUsIDEsIDEzNywgMjI1LCAKKyAgICAyNTMsIDI1LCAxLCAxMzcsIDIxMiwgMywgMjUsIDEsIDEzNywgMjIyLCAyLCAyNSwgMSwgMTM3LCAyMjAsIDYyLCAyNSwgMSwgCisgICAgMTM3LCAyMjIsIDE4MywgMjUsIDEsIDEzNywgMjIyLCA4LCAyNSwgMSwgMTM3LCAyMTAsIDEzOSwgMjUsIDEsIDEzNywgMjAwLCAKKyAgICA0MSwgMjUsIDEsIDEzNywgMjE5LCA4NywgMjUsIDEsIDEzNywgMjI2LCAyMjQsIDIyMiwgODgsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMTkwLCAyNSwgMSwgMTM3LCAyMDQsIDIxNSwgMjUsIDEsIDEzNywgMjM1LCAxOTgsIDI1LCAxLCAxMzcsIDIxOSwgMTgwLCAKKyAgICAyNSwgMSwgMTM3LCAyMzcsIDExOCwgMjUsIDEsIDEzNywgMjIwLCA2NiwgMjUsIDEsIDEzNywgMjIxLCAyMzcsIDI1LCAxLCAKKyAgICAxMzcsIDIyNCwgMjMxLCAyNSwgMSwgMTM3LCAyMjAsIDQ4LCAyNSwgMSwgMTM3LCAyMjEsIDEwMiwgMjUsIDEsIDEzNywgCisgICAgMjIxLCAyNDEsIDI1LCAxLCAxMzcsIDIxNCwgMTg5LCAyNSwgMSwgMTM3LCAyMjEsIDIzOSwgMjUsIDEsIDEzNywgMjIxLCAKKyAgICAyNTUsIDI1LCAxLCAxMzcsIDIyNCwgMjUsIDI1LCAxLCAxMzcsIDIxOCwgMTU3LCAyNSwgMSwgMTM3LCAyMjIsIDEwOCwgMjUsIAorICAgIDEsIDEzNywgMjI1LCAyMjcsIDI1LCAxLCAxMzcsIDIxOCwgNDQsIDI1LCAxLCAxMzcsIDIwNiwgMTM1LCAyNSwgMSwgMTM3LCAKKyAgICAyMDksIDQsIDI1LCAxLCAxMzcsIDE5OSwgMTc3LCAyNSwgMSwgMTM3LCAyMjYsIDIyNSwgMjUsIDEsIDEzNywgMjEzLCAyMzMsIAorICAgIDI1LCAxLCAxMzcsIDIwNiwgMTg5LCAyNSwgMSwgMTM3LCAyMTksIDE5MSwgMjUsIDEsIDEzNywgMjIyLCA0LCAyNSwgMSwgCisgICAgMTM3LCAyMTgsIDE1NiwgMjUsIDEsIDEzNywgMjI2LCAyMjMsIDI1LCAxLCAxMzcsIDIxNSwgMTU0LCAyNSwgMSwgMTM3LCAKKyAgICAyMTUsIDI1MCwgMjUsIDEsIDEzNywgMjE4LCAxOCwgMjUsIDEsIDEzNywgMjI0LCAyMzcsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMjMwLCAyNSwgMSwgMTM3LCAyMjIsIDEsIDI1LCAxLCAxMzcsIDIxOSwgMjAzLCAyNSwgMSwgMTM3LCAxOTksIDE5MSwgMjUsIAorICAgIDEsIDEzNywgMjE2LCAxMzUsIDI1LCAxLCAxMzcsIDE5OSwgMTkwLCAyNSwgMSwgMTM3LCAyMjAsIDcxLCAyNSwgMSwgMTM3LCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDEzNywgMjA4LCAyMSwgMjUsIDEsIDEzNywgMjI2LCAxLCAyNSwgMSwgMTM3LCAyMTksIDIxOSwgCisgICAgMjUsIDEsIDEzNywgMjE5LCAxODgsIDI1LCAxLCAxMzcsIDIwNCwgMTk2LCAyNSwgMSwgMTM3LCAyMjIsIDEyLCAyNSwgMSwgCisgICAgMTM3LCAyMjUsIDI0NywgMjUsIDEsIDEzNywgMjE4LCAxNTQsIDI1LCAxLCAxMzcsIDIwNiwgMTMzLCAyNSwgMSwgMTM3LCAKKyAgICAyMjIsIDIxMCwgMjUsIDEsIDEzNywgMjE5LCAyMjgsIDI1LCAxLCAxMzcsIDIyNCwgMjMwLCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDIwOSwgMjUsIDEsIDEzNywgMjE4LCAxNTksIDI1LCAxLCAxMzcsIDIxOSwgNjYsIDI1LCAxLCAxMzcsIDIzNSwgMTgyLCAyNSwgCisgICAgMSwgMTM3LCAyMjYsIDE1LCAyNSwgMSwgMTM3LCAyMTMsIDE0MCwgMjE3LCA5MiwgMjUsIDEsIDEzNywgMjA3LCAxNSwgMjUsIAorICAgIDEsIDEzNywgMjA1LCAxNTQsIDI1LCAxLCAxMzcsIDIxOCwgNDEsIDI1LCAxLCAxMzcsIDIxMywgMzMsIDI1LCAxLCAxMzcsIAorICAgIDIyNSwgMzEsIDI1LCAxLCAxMzcsIDIyMiwgNjMsIDI1LCAxLCAxMzcsIDIyMywgMjQzLCAyNSwgMSwgMTM3LCAyMDcsIDE5MywgCisgICAgMjUsIDEsIDEzNywgMjIxLCA0MSwgMjUsIDEsIDEzNywgMjEwLCAyOCwgMjUsIDEsIDEzNywgMjEwLCAzOCwgMjUsIDEsIAorICAgIDEzNywgMjI1LCAxOTksIDI1LCAxLCAxMzcsIDIxOCwgMTMzLCAyNSwgMSwgMTM3LCAyMDksIDIyMCwgMjUsIDEsIDEzNywgCisgICAgMjE4LCAxNDgsIDI1LCAxLCAxMzcsIDIxNiwgNjEsIDI1LCAxLCAxMzcsIDIxOSwgMTUwLCAyNSwgMSwgMTM3LCAyMDksIAorICAgIDI1MSwgMjUsIDEsIDEzNywgMjE0LCAyMDQsIDI1LCAxLCAxMzcsIDIyMCwgMjM1LCAyNSwgMSwgMTM3LCAyMjQsIDcwLCAyNSwgCisgICAgMSwgMTM3LCAyMTMsIDE0MCwgMjIxLCAzNCwgMjUsIDEsIDEzNywgMjA2LCAxNSwgMjUsIDEsIDEzNywgMjE4LCAxMzUsIDI1LCAKKyAgICAxLCAxMzcsIDIyMiwgMTA5LCAyMTAsIDEzNSwgMjUsIDEsIDEzNywgMjEyLCAxLCAyNSwgMSwgMTM3LCAyMzcsIDE5NCwgMjUsIAorICAgIDEsIDk2LCAyMjAsIDcwLCAyNSwgMSwgOTYsIDIwNSwgMTYwLCAyNSwgMSwgOTYsIDIyMiwgOTgsIDI1LCAxLCA5NiwgMjI1LCAKKyAgICA3NCwgMjUsIDEsIDk2LCAyMDIsIDE4MCwgMjUsIDEsIDk2LCAyMjQsIDc2LCAyNSwgMSwgOTYsIDIxNiwgMjEwLCAyNSwgMSwgCisgICAgOTYsIDIwOSwgMTUsIDI1LCAxLCA5NiwgMjEzLCAyMDgsIDI1LCAxLCA5NiwgMjE4LCAxNjEsIDI1LCAxLCA5NiwgMjIwLCAKKyAgICA0MSwgMjUsIDEsIDk2LCAyMTQsIDIyMSwgMjUsIDEsIDk2LCAyMDYsIDI0NiwgMjUsIDEsIDk2LCAyMTksIDE5NiwgMjUsIDEsIAorICAgIDk2LCAyMjYsIDQzLCAyNSwgMSwgOTYsIDIwMCwgMjA3LCAyNSwgMSwgOTYsIDIxMSwgMTkwLCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMjIwLCAyNSwgMSwgOTYsIDIxNiwgMjA3LCAyNSwgMSwgOTYsIDIwNSwgMTYxLCAyNSwgMSwgOTYsIDIyNSwgMjUxLCAyNSwgCisgICAgMSwgOTYsIDIyNCwgOTEsIDI1LCAxLCA5NiwgMjE4LCAxNjQsIDI1LCAxLCA5NiwgMjE5LCAxNzIsIDI1LCAxLCA5NiwgMjIyLCAKKyAgICAyMTYsIDI1LCAxLCA5NiwgMjE5LCAxODksIDI1LCAxLCA5NiwgMjE5LCAxNzEsIDI1LCAxLCA5NiwgMjE4LCAxNjMsIDI1LCAKKyAgICAxLCA5NiwgMjEzLCAzMCwgMjUsIDEsIDk2LCAyMTksIDg0LCAyNSwgMSwgOTYsIDIxNiwgNTksIDI1LCAxLCA5NiwgMjEyLCAKKyAgICA2MSwgMjUsIDEsIDk2LCAyMTksIDIwNCwgMjUsIDEsIDk2LCAyMjEsIDI0NywgMjUsIDEsIDk2LCAyMzUsIDE3NiwgMjUsIDEsIAorICAgIDk2LCAyMTksIDE5MiwgMjUsIDEsIDk2LCAyMTksIDk1LCAyNSwgMSwgOTYsIDIyMiwgMTY0LCAyNSwgMSwgOTYsIDIyNCwgCisgICAgNzIsIDI1LCAxLCA5NiwgMjE5LCAyMjUsIDI1LCAxLCA5NiwgMjIwLCA1NCwgMjUsIDEsIDk2LCAyMDcsIDE0LCAyMTgsIAorICAgIDE0NiwgMjUsIDEsIDk2LCAyMTAsIDE0MSwgMjUsIDEsIDk2LCAyMTQsIDIxNCwgMjUsIDEsIDk2LCAyMjAsIDc0LCAyMDksIAorICAgIDIyLCAyNSwgMSwgOTYsIDIxOSwgMjEyLCAyMTgsIDU1LCAyNSwgMSwgOTYsIDIwMCwgNSwgMjUsIDEsIDk2LCAyMzUsIDE3NywgCisgICAgMjUsIDEsIDk2LCAyMDQsIDIxNCwgMjUsIDEsIDk2LCAyMDAsIDIxLCAyNSwgMSwgOTYsIDIxNSwgMTA2LCAyNSwgMSwgOTYsIAorICAgIDIwNCwgMjAyLCAyNSwgMSwgOTYsIDIyNiwgMjMxLCAyNSwgMSwgOTYsIDIwOCwgMjAsIDI1LCAxLCA5NiwgMjA2LCAxMzQsIAorICAgIDI1LCAxLCA5NiwgMjAyLCAyNDMsIDI1LCAxLCA5NiwgMjAxLCA0NCwgMjUsIDEsIDk2LCAyMjUsIDE3MywgMjUsIDEsIDk2LCAKKyAgICAyMTQsIDIyNCwgMjUsIDEsIDk2LCAyMDcsIDI3LCAyNSwgMSwgOTYsIDIzNSwgMTk3LCAyNSwgMSwgOTYsIDIxOSwgMjM1LCAKKyAgICAyNSwgMSwgOTYsIDIxMCwgNDEsIDI1LCAxLCA5NiwgMjIxLCAyNDIsIDI1LCAxLCA5NiwgMjIyLCAxMDIsIDI1LCAxLCA5NiwgCisgICAgMjE4LCA1LCAyNSwgMSwgOTYsIDIxOSwgNDgsIDI1LCAxLCA5NiwgMjM2LCAyNiwgMjUsIDEsIDk2LCAyMDQsIDIwMywgMjUsIAorICAgIDEsIDk2LCAyMjYsIDUsIDI1LCAxLCA5NiwgMjAwLCA3MywgMjUsIDEsIDk2LCAyMTgsIDQyLCAyNDYsIDEyNiwgMjUsIDEsIAorICAgIDk2LCAxOTksIDI1MSwgMjUsIDEsIDk2LCAyMjIsIDMsIDI1LCAxLCA5NiwgMjIwLCA1OSwgMjUsIDEsIDk2LCAyMTUsIDE5NSwgCisgICAgMjUsIDEsIDk2LCAxOTksIDE5NiwgMjUsIDEsIDk2LCAyMjQsIDIzMiwgMjUsIDEsIDk2LCAyMzYsIDE4NywgMjUsIDEsIDk2LCAKKyAgICAyMzYsIDI1LCAyNSwgMSwgOTYsIDIxOSwgMTgyLCAyNSwgMSwgOTYsIDIyNiwgMjMzLCAyNSwgMSwgOTYsIDIyMiwgMjE5LCAKKyAgICAyNSwgMSwgOTYsIDIxOSwgMTk1LCAyNSwgMSwgOTYsIDIzNSwgMTgzLCAyNSwgMSwgOTYsIDIzNywgMTk1LCAyNSwgMSwgOTYsIAorICAgIDIxOCwgMTM2LCAyNSwgMSwgOTYsIDIxNSwgMjUxLCAyNSwgMSwgOTYsIDIwMCwgMTksIDI1LCAxLCA5NiwgMjE5LCAyMjEsIAorICAgIDI1LCAxLCA5NiwgMjE4LCA0MiwgMjQ4LCAyMDUsIDI1LCAxLCA5NiwgMjE3LCAyNDEsIDI1LCAxLCA5NiwgMjE1LCA3OSwgCisgICAgMjUsIDEsIDk2LCAyMjEsIDIwMCwgMjUsIDEsIDk2LCAyMzYsIDE4NSwgMjUsIDEsIDk2LCAyMjAsIDE1MSwgMjUsIDEsIDk2LCAKKyAgICAyMjEsIDM5LCAyNSwgMSwgOTYsIDIzNSwgMTgyLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCA3MCwgMjUsIDEsIDk2LCAyMjAsIAorICAgIDIzNiwgMjUsIDEsIDk2LCAyMTQsIDIyMCwgMjUsIDEsIDk2LCAyMTksIDE4NCwgMjUsIDEsIDk2LCAyMjUsIDIzNywgMjUsIAorICAgIDEsIDk2LCAyMTUsIDE5MiwgMjUsIDEsIDk2LCAyMTgsIDE0OSwgMjUsIDEsIDk2LCAyMDAsIDIwLCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMjA1LCAyNSwgMSwgOTYsIDIxNiwgMjExLCAyMTYsIDMzLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCAyNDcsIDE2OCwgMjUsIDEsIAorICAgIDk2LCAyMzcsIDYsIDI1LCAxLCA5NiwgMjE5LCA4OSwgMjUsIDEsIDk2LCA2MiwgMjUsIDEsIDk2LCAyMDUsIDE1NCwgMjUsIAorICAgIDEsIDk2LCA3NCwgMjUsIDEsIDk2LCA3MCwgMjUsIDEsIDk2LCAyMjUsIDcyLCAyNSwgMSwgOTYsIDIxNiwgMjExLCAyMTUsIAorICAgIDExNCwgMjUsIDEsIDk2LCAyMDcsIDMyLCAyNSwgMSwgOTYsIDIwNiwgMjMzLCAyNSwgMSwgOTYsIDIyMCwgNzQsIDIyMCwgCisgICAgMjIzLCAyMzMsIDEwOSwgMjUsIDEsIDk2LCAyMTAsIDE2LCAyNSwgMSwgOTYsIDIwMCwgMTYsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAxNjUsIDI1LCAxLCA5NiwgMTk5LCAyMDEsIDI1LCAxLCA5NiwgMTk5LCAyMjgsIDIwNywgMTczLCAyNSwgMSwgOTYsIDE5OSwgCisgICAgMjI4LCAyNDMsIDEsIDI1LCAxLCA5NiwgMTk5LCAxODUsIDI1LCAxLCA5NiwgMTk5LCAxOTMsIDI1LCAxLCA5NiwgMjI2LCAKKyAgICAyMTksIDI1LCAxLCA5NiwgMjE1LCAyNDksIDI1LCAxLCA5NiwgMjE5LCA5MCwgMjM4LCAxMjYsIDI1LCAxLCA5NiwgMjE0LCAKKyAgICAyMTYsIDI1LCAxLCA5NiwgMjAwLCAyMTMsIDI1LCAxLCA5NiwgMjM3LCAxNDAsIDI1LCAxLCA5NiwgMjAzLCA1NCwgMjUsIDEsIAorICAgIDk2LCAyMjQsIDQyLCAyNSwgMSwgOTYsIDIyMSwgMjExLCAyNSwgMSwgOTYsIDIxMywgMTA3LCAyNSwgMSwgOTYsIDIxMywgCisgICAgMjM0LCAyNSwgMSwgOTYsIDIxOSwgMTY0LCAyNSwgMSwgOTYsIDIxOSwgMjUzLCAyNSwgMSwgOTYsIDIxMCwgOCwgMjUsIDEsIAorICAgIDk2LCAyMDksIDI1MSwgMjUsIDEsIDk2LCAyMzYsIDE5MCwgMjEzLCAxNDMsIDI1LCAxLCA5NiwgMTg4LCAyNSwgMSwgOTYsIAorICAgIDIxNSwgMjA0LCAyNSwgMSwgOTYsIDIyNCwgNzAsIDI1LCAxLCA5NiwgMjI2LCA4OCwgMjUsIDEsIDk2LCAyMjIsIDQwLCAyNSwgCisgICAgMSwgOTYsIDE3OCwgMjUsIDEsIDk2LCAyMjIsIDE2MSwgMjUsIDEsIDk2LCAyMDYsIDEzNiwgMjUsIDEsIDk2LCAyMjYsIAorICAgIDE2MywgMjUsIDEsIDk2LCAyMjEsIDEwNiwgMjUsIDEsIDk2LCAyMDYsIDE2NiwgMjUsIDEsIDk2LCAyMzcsIDE2NCwgMjUsIAorICAgIDEsIDk2LCAyMzUsIDE3MCwgMjUsIDEsIDIxNSwgMjMzLCAxNjEsIDI1LCAxLCAyMTUsIDIzMywgNjYsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjI2LCAxNSwgMjUsIDEsIDIxNSwgMjMzLCAyMzgsIDI1NSwgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDE2NywgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMDcsIDE1LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgNDEsIDI1LCAxLCAyMTUsIDIzMywgMTk0LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIxMywgMzMsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCA4MSwgMjUsIDEsIDIxNSwgMjMzLCAyMjIsIDYzLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIwNywgMzIsIDI1LCAxLCAyMTUsIDIzMywgMjIwLCA3MywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIAorICAgIDk2LCAyNSwgMSwgMjE1LCAyMzMsIDIyMywgMjQzLCAyNSwgMSwgMjE1LCAyMzMsIDIwNywgMTkzLCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIxMCwgMjgsIDI1LCAxLCAyMTUsIDIzMywgMjA5LCAxODIsIDI1LCAxLCAyMTUsIDIzMywgMjEwLCAxMzcsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjI1LCAxOTksIDI1LCAxLCAyMTUsIDIzMywgMjI2LCAyMzMsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAKKyAgICAxMDQsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAxMzMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCA2NywgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAxOTksIDIyNywgMjUsIDEsIDIxNSwgMjMzLCAyMDksIDIyMCwgMjUsIDEsIDIxNSwgMjMzLCAxODMsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjE4LCAxNjcsIDI1LCAxLCAyMTUsIDIzMywgMjE1LCAyNDksIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAxNDgsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjAwLCAyMTMsIDI1LCAxLCAyMTUsIDIzMywgMjE2LCA2MSwgMjUsIDEsIDIxNSwgMjMzLCAKKyAgICAyMTIsIDE3NSwgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDE1MCwgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDEwNywgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMjYsIDI0MywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDE4MSwgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDIzMiwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMTAsIDgsIDI1LCAxLCAyMTUsIDIzMywgMjE0LCAyMjEsIDI1LCAxLCAyMTUsIDIzMywgMjM3LCAKKyAgICA2LCAyNSwgMSwgMjE1LCAyMzMsIDIwMSwgMTE0LCAyNSwgMSwgMjE1LCAyMzMsIDIyNCwgMjEwLCAyNSwgMSwgMjE1LCAyMzMsIAorICAgIDIyNCwgNzAsIDI1LCAxLCAyMTUsIDIzMywgMjI2LCA4OCwgMjUsIDEsIDIxNSwgMjMzLCAyMjIsIDEwMCwgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMTMsIDEzOSwgMjUsIDEsIDIxNSwgMjMzLCAxNzgsIDI1LCAxLCAyMTUsIDIzMywgMjIxLCAxMzYsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjIyLCAxMDgsIDI1LCAxLCAyMTUsIDIzMywgMjA2LCAxNDYsIDI1LCAxLCAyMTUsIDIzMywgMjI2LCA1MCwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMTIsIDIxLCAyNSwgMSwgMjE1LCAyMzMsIDIwMSwgMTY1LCAyMjEsIDQ0LCAxLCAyMDcsIDM2LCAKKyAgICAyMjEsIDQ0LCAxLCAyMTksIDIwMSwgMjIxLCA0NCwgMSwgMTk5LCAyNDUsIDIyMSwgNDQsIDEsIDIyMSwgMTY2LCAyMjEsIAorICAgIDQ0LCAxLCAyNDksIDEzNiwgMjIxLCA0NCwgMSwgMjQyLCA1OCwgMjIxLCA0NCwgMSwgNjIsIDIyMSwgNDQsIDEsIDIxNSwgCisgICAgMjI5LCAyMjEsIDQ0LCAxLCAyMjYsIDIwMiwgMjIxLCA0NCwgMSwgMjM0LCAxNjksIDIyMSwgNDQsIDEsIDI0MiwgMzMsIAorICAgIDIyMSwgNDQsIDEsIDI0NiwgMTkyLCAyMjEsIDQ0LCAxLCAyMjcsIDcsIDIyMSwgNDQsIDEsIDIxNywgOTMsIDIyMSwgNDQsIAorICAgIDEsIDIyMiwgMjE2LCAyMjEsIDQ0LCAxLCAyMTksIDExOCwgMjIxLCA0NCwgMSwgMTcyLCAyMjEsIDQ0LCAxLCAyMTcsIDYzLCAKKyAgICAyMjEsIDQ0LCAxLCA3NCwgMjIxLCA0NCwgMSwgMjEzLCAxLCAyMjEsIDQ0LCAxLCAyMTAsIDMzLCAyMjEsIDQ0LCAxLCAyMDYsIAorICAgIDEwNSwgMjIxLCA0NCwgMSwgMjM5LCAyNywgMjIxLCA0NCwgMSwgMjAxLCAxMTQsIDIyMSwgNDQsIDEsIDcyLCAyMjEsIDQ0LCAKKyAgICAxLCAyMjYsIDg4LCAyMjEsIDQ0LCAxLCAyMjUsIDgwLCAyMjEsIDQ0LCAxLCAxOTQsIDIyMSwgNDQsIDEsIDIzNCwgMjIzLCAKKyAgICAyMjEsIDQ0LCAxLCAyMTMsIDg4LCAyMjEsIDQ0LCAxLCAyMDYsIDE3OSwgMjIxLCA0NCwgMTcsIDE5OSwgODEsIDIyMSwgNDQsIAorICAgIDE3LCAxMDIsIDIyMSwgNDQsIDE3LCAxMDUsIDIyMSwgNDQsIDE3LCAxNDcsIDIyMSwgNDQsIDE3LCAxNDksIDIyMSwgNDQsIAorICAgIDE3LCAxNjQsIDIyMSwgNDQsIDE3LCAxODcsIDIyMSwgNDQsIDE3LCAyMTAsIDEzNSwgMjIxLCA0NCwgMTcsIDE5MiwgMjIxLCAKKyAgICA0NCwgMTcsIDIxOSwgMTEzLCAyMjEsIDQ0LCAyNDIsIDEwLCAyMjEsIDQ0LCA1MywgMjQyLCAxMCwgMjQ5LCA1OCwgMjAzLCAKKyAgICA4NywgMSwgMjM4LCAxNjEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDE2MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjExLCAyMDIsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNywgMTk1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjIsIDEwMywgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMjAwLCA2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzYsIDc0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAKKyAgICAyNDEsIDgxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjYsIDQ5LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjcsIDE2NiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjMzLCA2NywgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAxLCAxMTQsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDE5OSwgMTQsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNiwgMTksIDI0OSwgNTgsIDIwMywgODcsIDEsIAorICAgIDI0MCwgMjExLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyNDcsIDc2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDMsIDE3NSwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTM4LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyNDksIDEzNiwgMjQ5LCA1OCwgMjAzLCAKKyAgICA4NywgMSwgMjAxLCAxNjYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMCwgNDUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDE3MiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAxLCAxMTEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDYyLCAyNDksIDU4LCAyMDMsIDg3LCAKKyAgICAxLCA3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjE3LCA2MywgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNjYsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDIzOCwgMjU1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCA3MiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNzAsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDM4LCAxMjIsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMTI4LCAyMDUsIDE3NCwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIyMSwgMjA2LCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIyNCwgNTYsIAorICAgIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjM0LCA1NywgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxMjUsIDEyMywgMjIsIDIyNywgNCwgMTI1LCAxMjMsIDIyLCAyMjcsIDAsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI2LCAxNjAsIDEyNSwgMTIzLCAyMiwgMjI2LCAxMjYsIDEyNSwgMTIzLCAyMiwgMjI3LCAyNSwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjcsIDIyLCAxMjUsIDEyMywgMjIsIDIyNiwgNiwgMTI1LCAxMjMsIDIyLCAyMjUsIDIzNCwgMTI1LCAxMjMsIDIyLCAyMjcsIAorICAgIDYsIDEyNSwgMTIzLCAyMiwgMjI2LCAyMTcsIDEyNSwgMTIzLCAyMiwgMjI3LCA4MSwgMTI1LCAxMjMsIDIyLCAyMjcsIDc4LCAKKyAgICAxMjUsIDEyMywgMjIsIDIyNiwgNjcsIDEyNSwgMTIzLCAyMiwgMjI2LCA2NCwgMTI1LCAxMjMsIDIyLCAyMjcsIDE5LCAxMjUsIAorICAgIDEyMywgMjIsIDIyNywgMTcsIDEyNSwgMTIzLCAyMiwgMjI2LCA4LCAxMjUsIDEyMywgMjIsIDIyNiwgNywgMTI1LCAxMjMsIAorICAgIDIyLCAyMjYsIDg1LCAxMjUsIDEyMywgMjIsIDIyNiwgNTMsIDEyNSwgMTIzLCAyMiwgMjI2LCAxNjIsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI2LCAxNjEsIDEyNSwgMTIzLCAyMiwgMjI3LCA5NiwgMTI1LCAxMjMsIDIyLCAyMjcsIDIxLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNSwgMjI1LCAxMjUsIDEyMywgMjIsIDIyNSwgMjE2LCAxMjUsIDEyMywgMjIsIDIyNywgMTA0LCAxMjUsIDEyMywgMjIsIAorICAgIDIyNywgOTcsIDEyNSwgMTIzLCAxMTEsIDIwMywgNjUsIDEyNSwgMTIzLCAxMTEsIDIxOCwgMTM5LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMjUsIDU4LCAxMjUsIDEyMywgMTExLCAyMzQsIDE1MCwgMTI1LCAxMjMsIDExMSwgMjE5LCAyNCwgMTI1LCAxMjMsIDExMSwgCisgICAgMjEzLCAxOTksIDEyNSwgMTIzLCAxMTEsIDIxOSwgNTEsIDEyNSwgMTIzLCAxMTEsIDIxNCwgMTMzLCAxMjUsIDEyMywgMTExLCAKKyAgICAyMDAsIDYxLCAxMjUsIDEyMywgMTExLCAyMzQsIDM2LCAxMjUsIDEyMywgMTExLCAyMjIsIDEyMywgMTI1LCAxMjMsIDExMSwgCisgICAgMjQ3LCAxMiwgMTI1LCAxMjMsIDExMSwgMjIwLCA3OCwgMTI1LCAxMjMsIDExMSwgMjMzLCAyMjgsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIxNSwgMTIyLCAxMjUsIDEyMywgMTExLCAyMTgsIDE0NCwgMTI1LCAxMjMsIDExMSwgMjIwLCAxMTYsIDEyNSwgMTIzLCAKKyAgICAxMTEsIDI1MCwgMTM5LCAxMjUsIDEyMywgMTExLCAyMDAsIDE3NywgMTI1LCAxMjMsIDExMSwgMjQ3LCAxMDksIDEyNSwgCisgICAgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMDQsIDIxMSwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIwOSwgMjksIDEyNSwgMTIzLCAKKyAgICAxMzQsIDI0NiwgMTYxLCAyMjYsIDIzNSwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIyNiwgMTkzLCAxMjUsIDEyMywgCisgICAgMTM0LCAyNDYsIDE2MSwgMjA4LCAxOCwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIzMywgMTk0LCAxMjUsIDEyMywgMTM0LCAKKyAgICAyNDYsIDE2MSwgMjA2LCAyMjAsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjA2LCA1OCwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMDUsIDIxLCAyNDcsIDY3LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDI0NywgMSwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMDYsIDgzLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIzNywgMTM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIAorICAgIDIxOCwgMTM0LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIxMywgOTAsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjA1LCAKKyAgICAxMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjM3LCAxNzYsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjExLCAxODQsIAorICAgIDEyNSwgMTIzLCAyLCAyMjIsIDYyLCAyMDgsIDIyLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIxOCwgMTgzLCAxMjUsIDEyMywgCisgICAgMiwgMjMyLCAyMzYsIDIwMCwgODAsIDEyNSwgMTIzLCAyLCAyMDAsIDE3NiwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDUsIAorICAgIDgsIDIxMiwgMjQ2LCAxMjUsIDEyMywgMTcsIDE5OSwgODEsIDEyNSwgMTIzLCAxNywgMTAyLCAxMjUsIDEyMywgMTcsIDEwNSwgCisgICAgMTI1LCAxMjMsIDE3LCAxNDcsIDEyNSwgMTIzLCAxNywgMTQ5LCAxMjUsIDEyMywgMTcsIDE2NCwgMTI1LCAxMjMsIDE3LCAKKyAgICAxODcsIDEyNSwgMTIzLCAxNywgMjEwLCAxMzUsIDEyNSwgMTIzLCAxNywgMTkyLCAxMjUsIDEyMywgMTcsIDIxOSwgMTEzLCAKKyAgICAxMjUsIDEyMywgNDEsIDIwNiwgMTYxLCAxMjUsIDEyMywgNDEsIDIzMywgODAsIDEyNSwgMTIzLCA0MSwgMjA2LCAxNjcsIAorICAgIDIwNiwgNDgsIDEyNSwgMTIzLCA0MSwgMjIxLCAxNjcsIDEyNSwgMTIzLCA0MSwgMjMzLCA4MywgMjIxLCAxNjcsIDEyNSwgCisgICAgMTIzLCA0MSwgMjA2LCAxNjcsIDI0OCwgMTcwLCAxMjUsIDEyMywgNDEsIDIwNSwgODUsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjI0LCAzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTMyLCAxMjUsIDEyMywgMiwgMjM0LCAzMSwgMTI1LCAxMjMsIDIsIAorICAgIDIwNiwgNzMsIDIzNCwgMzEsIDEyNSwgMTIzLCAyLCAxOTgsIDI0NCwgMjA2LCAxMTYsIDEyNSwgMTIzLCAyLCAyMzMsIDIxMiwgCisgICAgMTI1LCAxMjMsIDIsIDIxOCwgMTk3LCAxMjUsIDEyMywgMiwgMjAwLCAxNjgsIDEyNSwgMTIzLCAyLCAyMTgsIDEzNywgMTI1LCAKKyAgICAxMjMsIDIsIDI1MCwgMTIzLCAxMjUsIDEyMywgMiwgMjA0LCAxMzYsIDI0NywgNjYsIDEyNSwgMTIzLCAyLCAyMjIsIDYyLCAKKyAgICAyMDUsIDI0LCAxMjUsIDEyMywgMiwgMjA2LCAyMjEsIDEyNSwgMTIzLCAyLCAyMjQsIDY3LCAxMjUsIDEyMywgMiwgMjIwLCAKKyAgICAyNTIsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjM0LCAyMTksIDIyNCwgMTUsIDIxOCwgMTQyLCAyMTgsIDE0MSwgMTI1LCAKKyAgICAxMjMsIDIsIDI0NiwgMTYxLCAyNDIsIDIxMywgMjA1LCAxNSwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDQsIDEzNCwgCisgICAgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDQsIDEzNSwgMjQ2LCAxODAsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjE0LCAKKyAgICAyMTksIDI0MSwgMjM1LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIxOCwgMTkwLCAyMDUsIDE0NSwgMTI1LCAxMjMsIDI0NiwgCisgICAgMTMzLCAyLCAyMDUsIDE5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgNDcsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgCisgICAgMjI0LCAxNTUsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI1LCA1NiwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIAorICAgIDEzMSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjYsIDY4LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNCwgMTQ3LCAKKyAgICAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyMSwgMzcsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjA2LCA1OSwgMTI1LCAxMjMsIAorICAgIDI0NiwgMTMzLCAyLCAyMDUsIDI5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIxNSwgMjQyLCAxMjUsIDEyMywgMjQ2LCAKKyAgICAxMzMsIDIsIDIyNiwgMjA1LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNCwgMjA5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIAorICAgIDIwMywgODQsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM3LCAxNzMsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCA4NywgCisgICAgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDUsIDIsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI1LCAyMjAsIDEyNSwgMTIzLCAKKyAgICAyNDYsIDEzMywgMiwgMjAxLCAxNTYsIDExNCwgMSwgMTcyLCAxMTQsIDEsIDI0OSwgMTM2LCAxMTQsIDEsIDExLCAxNzIsIAorICAgIDExNCwgMSwgMjE1LCAxMzUsIDExNCwgMSwgMTc4LCAxMTQsIDEsIDIyMSwgMjE0LCAxMTQsIDEsIDI1MCwgMjM0LCAxNzgsIAorICAgIDExNCwgMSwgMjM3LCAxOTUsIDExNCwgMSwgMjAzLCA5MCwgMTE0LCAxLCAyMDIsIDIzNSwgMTE0LCAxLCAyMDcsIDM2LCAKKyAgICAxMTQsIDEsIDI0MiwgNTgsIDExNCwgMSwgMTEsIDIwNCwgMjUzLCAxMTQsIDEsIDExLCAyMDcsIDM2LCAxMTQsIDEsIDIwNCwgCisgICAgMjUzLCAxMTQsIDEsIDI0MSwgMjIwLCAxMTQsIDEsIDE4OCwgMTE0LCAxLCAyMTksIDE1NCwgMTE0LCAxLCAxMSwgMjE5LCAKKyAgICAyMSwgMTE0LCAxLCAyNTAsIDIzNCwgMTg4LCAxMTQsIDEsIDIxOSwgMjEsIDExNCwgMSwgMjE5LCA3LCAxMTQsIDEsIDE5NCwgCisgICAgMTE0LCAxLCAyMjQsIDEsIDExNCwgMSwgMjI0LCAyMjMsIDExNCwgMSwgMjI0LCAyMTIsIDExNCwgMSwgMjA1LCAyMDAsIAorICAgIDExNCwgMSwgMjQwLCAyMTksIDExNCwgMSwgMjA1LCAxOTIsIDExNCwgMSwgMjQwLCAyMTgsIDExNCwgMSwgMTYxLCAxMTQsIAorICAgIDEsIDIzNiwgODksIDExNCwgMSwgMTEsIDE2MSwgMTE0LCAxLCAyMTQsIDE1OSwgMTE0LCAxLCAyMTQsIDEzNiwgMTE0LCAxLCAKKyAgICAyMTksIDI1MywgMTE0LCAxLCAyMTksIDIwMiwgMTE0LCAxLCAyNTAsIDIzNCwgMjE5LCAyNTMsIDExNCwgMSwgMTQ0LCAxMTQsIAorICAgIDEsIDIwMCwgMTgxLCAxMTQsIDEsIDIzNSwgMTk5LCAxMTQsIDEsIDIzNSwgMTc0LCAxMTQsIDEsIDIwNSwgNywgMTE0LCAxLCAKKyAgICAyMzksIDc3LCAxMTQsIDEsIDIxOCwgNjAsIDExNCwgMSwgMjE4LCA0MywgMTE0LCAxLCAyMDUsIDIyLCAxMTQsIDEsIDIzOSwgCisgICAgODcsIDExNCwgMSwgMTEsIDIwNSwgMjIsIDExNCwgMSwgMTEsIDIzOSwgODcsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMjIsIAorICAgIDExNCwgMSwgMjEwLCAxMTQsIDExNCwgMSwgMjA4LCAxNzksIDExNCwgMSwgMTk5LCA3NywgMTE0LCAxLCAxOTksIDUsIDExNCwgCisgICAgMSwgMjA1LCAzMiwgMTE0LCAxLCAyMzksIDkzLCAxMTQsIDEsIDExLCAyMDUsIDMyLCAxMTQsIDEsIDIxMiwgNjQsIDExNCwgCisgICAgMSwgMTk5LCAxMTQsIDExNCwgMSwgMTk5LCA2LCAxMTQsIDEsIDE5OCwgMjMyLCAxMTQsIDEsIDE5OCwgMjEyLCAxMTQsIDEsIAorICAgIDI1MCwgMjM0LCAxOTgsIDIzMiwgMTE0LCAxLCAxOTgsIDIwNCwgMTE0LCAxLCAxOTgsIDIxMSwgMTE0LCAxLCAyMDEsIDExNCwgCisgICAgMTE0LCAxLCAyNTEsIDE4NSwgMTE0LCAxLCAyMzQsIDg0LCAxMTQsIDEsIDIyMCwgMTIxLCAxMTQsIDIsIDI1MCwgMTcxLCAKKyAgICAxMTQsIDIsIDIxMywgMTY1LCAyMDIsIDE4NywgMTE0LCAyLCAyMTMsIDE2NSwgMjUwLCAxNzEsIDExNCwgMjIsIDIsIDYyLCAKKyAgICAxMTQsIDIyLCAyLCAyNTIsIDEzOCwgMTE0LCAyMiwgMiwgMjUxLCAxODEsIDExNCwgMjIsIDIsIDI1MSwgODUsIDExNCwgMjIsIAorICAgIDIsIDI1MSwgNzYsIDExNCwgMjIsIDIsIDc0LCAxMTQsIDIyLCAyLCAyMTcsIDYzLCAxMTQsIDIyLCAyLCAyMDEsIDAsIDExNCwgCisgICAgMjIsIDIsIDIwMSwgMTQ3LCAxMTQsIDIyLCAyLCA3MiwgMTE0LCAyMiwgMiwgMjM4LCAxNzksIDExNCwgMjIsIDIsIDIzOCwgCisgICAgMTY1LCAxMTQsIDIyLCAyLCAyMTcsIDExOCwgMTE0LCAyMiwgMiwgNzAsIDExNCwgMjIsIDIsIDIzMiwgMjQwLCAxMTQsIDIyLCAKKyAgICAyLCAyMzIsIDIzOSwgMTE0LCAyMiwgMiwgMjMyLCAyMzgsIDExNCwgMjIsIDIsIDIyOCwgNDUsIDExNCwgMjIsIDIsIDIyOCwgCisgICAgMTc4LCAxMTQsIDIyLCAyLCAyMjgsIDE1MSwgMTE0LCAyMiwgMiwgMjI4LCA4LCAxMTQsIDIyLCAyLCAyMjgsIDkxLCAxMTQsIAorICAgIDIyLCAyLCA2NiwgMTE0LCAyMiwgMiwgMjA0LCA0NiwgMTE0LCAyMiwgMiwgMjA0LCA0NSwgMTE0LCAyMiwgMiwgMjA0LCA0NCwgCisgICAgMTE0LCAyMiwgMiwgMjAzLCAxODIsIDExNCwgMjIsIDIsIDIwNCwgMjgsIDExNCwgMjIsIDIsIDIwMywgMjQ2LCAxMTQsIDIyLCAKKyAgICAyLCAyMDAsIDEyMywgMTE0LCAyMiwgMiwgMjAwLCA5LCAxMTQsIDIyLCAyLCAyNTEsIDIyMSwgMTE0LCAyMiwgMiwgMjUxLCAKKyAgICAyMTcsIDExNCwgMjIsIDIsIDIzOCwgMTA4LCAxMTQsIDIyLCAyLCAyMTIsIDIxOSwgMjM4LCAxMDgsIDExNCwgMjIsIDIsIAorICAgIDIzOCwgMTE1LCAxMTQsIDIyLCAyLCAyMTIsIDIxOSwgMjM4LCAxMTUsIDExNCwgMjIsIDIsIDI1MSwgMTc2LCAxMTQsIDIyLCAKKyAgICAyLCAyMzgsIDIzNCwgMTE0LCAyMiwgMiwgMjUwLCAxMzksIDExNCwgMjIsIDIsIDIxNywgMywgMTE0LCAyMiwgMiwgMjIwLCAKKyAgICAyMTQsIDExNCwgMjIsIDIsIDIxOSwgMjU1LCAxMTQsIDE1MCwgMjEzLCA0NiwgMTE0LCAxNTAsIDIwNSwgMTU4LCAyMTMsIAorICAgIDQ2LCAxMTQsIDE1MCwgNTYsIDExNCwgMTUwLCA1NywgMTE0LCAxLCAyMDUsIDE3MiwgMTE0LCAxLCAyMDUsIDE3MSwgMTE0LCAKKyAgICAxLCAyMDUsIDE3MCwgMTE0LCAxLCAyMDUsIDE2OSwgMTE0LCAxLCAyMDUsIDE2OCwgMTE0LCAxLCAyMDUsIDE2NywgMTE0LCAKKyAgICAxLCAyMDUsIDE2NiwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNzMsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTcyLCAxMTQsIAorICAgIDEsIDIxMywgMTY1LCAyMDUsIDE3MCwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNjksIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgCisgICAgMTY4LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE2NiwgMTgsIDIyOCwgMTAsIDgxLCAxOCwgMjQ2LCA2MSwgMTgsIDI0NiwgCisgICAgNjAsIDE4LCAyNDYsIDU5LCAxOCwgMjQ2LCA1OCwgMTgsIDI0NiwgNTcsIDE4LCAyNDYsIDU2LCAxOCwgMjQ2LCA1NSwgMTgsIAorICAgIDI0NiwgNTQsIDE4LCAyNDYsIDUzLCAxOCwgMjQ2LCA1MiwgMTgsIDI0NiwgNTEsIDE4LCAyNDYsIDUwLCAxOCwgMjQ2LCA0OSwgCisgICAgMTgsIDI0NiwgNDgsIDE4LCAyNDYsIDQ3LCAxOCwgMjQ2LCA0NiwgMTgsIDI0NiwgNDUsIDE4LCAyNDYsIDQ0LCAxOCwgMjQ2LCAKKyAgICA0MywgMTgsIDI0NiwgNDIsIDE4LCAyNDYsIDQxLCAxOCwgMjQ2LCA0MCwgMTgsIDI0NiwgMzksIDE4LCAyNDYsIDM4LCAxOCwgCisgICAgMjQ2LCAzNywgMTgsIDI0NiwgMzYsIDE4LCAyNDYsIDM1LCAxOCwgMjQ2LCAzNCwgMTgsIDI0NiwgMzMsIDE4LCAyNDYsIDMyLCAKKyAgICAxOCwgMjQ2LCAzMSwgMTgsIDI0NiwgMzAsIDE4LCAyNDYsIDI5LCAxOCwgMjQ2LCAyOCwgMTgsIDI0NiwgMjcsIDE4LCAyNDYsIAorICAgIDI2LCAxOCwgMjQ2LCAyNSwgMTgsIDI0NiwgMjQsIDE4LCAyNDYsIDIzLCAxOCwgMjQ2LCAyMiwgMTgsIDI0NiwgMjEsIDE4LCAKKyAgICAyNDYsIDIwLCAxOCwgMjQ2LCAxOSwgMTgsIDI0NiwgMTgsIDE4LCAyNDYsIDE3LCAxOCwgMjQ2LCAxNiwgMTgsIDI0NiwgMTUsIAorICAgIDE4LCAyNDYsIDE0LCAxOCwgMjQ2LCAxMywgMTgsIDI0NiwgMTIsIDE4LCAyNDYsIDExLCAxOCwgMjQ2LCAxMCwgMTgsIDI0NiwgCisgICAgOSwgMTgsIDI0NiwgOCwgMTgsIDI0NiwgNywgMTgsIDI0NiwgNiwgMTgsIDI0NiwgNSwgMTgsIDI0NiwgNCwgMTgsIDI0NiwgCisgICAgMywgMTgsIDI0NiwgMiwgMTgsIDI0NiwgMSwgMTgsIDI0NiwgMCwgMTgsIDI0NSwgMjU1LCAxOCwgMjQ1LCAyNTQsIDE4LCAKKyAgICAyNDUsIDI1MywgMTgsIDI0NSwgMjUyLCAxOCwgMjQ1LCAyNTEsIDE4LCAyNDUsIDI1MCwgMTgsIDI0NSwgMjQ5LCAxOCwgCisgICAgMjQ1LCAyNDgsIDE4LCAyNDUsIDI0NywgMTgsIDI0NSwgMjQ2LCAxOCwgMjQ1LCAyNDUsIDE4LCAyNDUsIDI0NCwgMTgsIAorICAgIDI0NSwgMjQzLCAxOCwgMjQ1LCAyNDIsIDE4LCAyNDUsIDI0MSwgMTgsIDI0NSwgMjQwLCAxOCwgMjQ1LCAyMzksIDE4LCAKKyAgICAyNDUsIDIzOCwgMTgsIDI0NSwgMjM3LCAxOCwgMjQ1LCAyMzYsIDE4LCAyNDUsIDIzNSwgMTgsIDI0NSwgMjM0LCAxOCwgCisgICAgMjQ1LCAyMzMsIDE4LCAyNDUsIDIzMiwgMTgsIDI0NSwgMjMxLCAxOCwgMjQ1LCAyMzAsIDE4LCAyNDUsIDIyOSwgMTgsIAorICAgIDI0NSwgMjI4LCAxOCwgMjQ1LCAyMjcsIDE4LCAyNDUsIDIyNiwgMTgsIDI0NSwgMjI1LCAxOCwgMjQ1LCAyMjQsIDE4LCAKKyAgICAyNDUsIDIyMywgMTgsIDI0NSwgMjIyLCAxOCwgMjQ1LCAyMjEsIDE4LCAyNDUsIDIyMCwgMTgsIDI0NSwgMjE5LCAxOCwgCisgICAgMjQ1LCAyMTgsIDE4LCAyNDUsIDIxNywgMTgsIDI0NSwgMjE2LCAxOCwgMjQ1LCAyMTUsIDE4LCAyNDUsIDIxNCwgMTgsIAorICAgIDI0NSwgMjEzLCAxOCwgMjQ1LCAyMTIsIDE4LCAyNDUsIDIxMSwgMTgsIDI0NSwgMjEwLCAxOCwgMjQ1LCAyMDksIDE4LCAKKyAgICAyNDUsIDIwOCwgMTgsIDI0NSwgMjA3LCAxOCwgMjQ1LCAyMDYsIDE4LCAyNDUsIDIwNSwgMTgsIDI0NSwgMjA0LCAxOCwgCisgICAgMjQ1LCAyMDMsIDE4LCAyNDUsIDIwMiwgMTgsIDI0NSwgMjAxLCAxOCwgMjQ1LCAyMDAsIDE4LCAyNDUsIDE5OSwgMTgsIAorICAgIDI0NSwgMTk4LCAxOCwgMjQ1LCAxOTcsIDE4LCAyNDUsIDE5NiwgMTgsIDI0NSwgMTk1LCAxOCwgMjQ1LCAxOTQsIDE4LCAKKyAgICAyNDUsIDE5MywgMTgsIDI0NSwgMTkyLCAxOCwgMjQ1LCAxOTEsIDE4LCAyNDUsIDE5MCwgMTgsIDI0NSwgMTg5LCAxOCwgCisgICAgMjQ1LCAxODgsIDE4LCAyNDUsIDE4NywgMTgsIDI0NSwgMTg2LCAxOCwgMjQ1LCAxODUsIDE4LCAyNDUsIDE4NCwgMTgsIAorICAgIDI0NSwgMTgzLCAxOCwgMjQ1LCAxODIsIDE4LCAyNDUsIDE4MSwgMTgsIDI0NSwgMTgwLCAxOCwgMjQ1LCAxNzksIDE4LCAKKyAgICAyNDUsIDE3OCwgMTgsIDI0NSwgMTc3LCAxOCwgMjQ1LCAxNzYsIDE4LCAyNDUsIDE3NSwgMTgsIDI0NSwgMTc0LCAxOCwgCisgICAgMjQ1LCAxNzMsIDE4LCAyNDUsIDE3MiwgMTgsIDI0NSwgMTcxLCAxOCwgMjQ1LCAxNzAsIDE4LCAyNDUsIDE2OSwgMTgsIAorICAgIDI0NSwgMTY4LCAxOCwgMjQ1LCAxNjcsIDE4LCAyNDUsIDE2NiwgMTgsIDI0NSwgMTY1LCAxOCwgMjQ1LCAxNjQsIDE4LCAKKyAgICAyNDUsIDE2MywgMTgsIDI0NSwgMTYyLCAxOCwgMjQ1LCAxNjEsIDE4LCAyNDUsIDE2MCwgMTgsIDI0NSwgMTU5LCAxOCwgCisgICAgMjQ1LCAxNTgsIDE4LCAyNDUsIDE1NywgMTgsIDI0NSwgMTU2LCAxOCwgMjQ1LCAxNTUsIDE4LCAyNDUsIDE1NCwgMTgsIAorICAgIDI0NSwgMTUzLCAxOCwgMjQ1LCAxNTIsIDE4LCAyNDUsIDE1MSwgMTgsIDI0NSwgMTUwLCAxOCwgMjQ1LCAxNDksIDE4LCAKKyAgICAyNDUsIDE0OCwgMTgsIDI0NSwgMTQ3LCAxOCwgMjQ1LCAxNDYsIDE4LCAyNDUsIDE0NSwgMTgsIDI0NSwgMTQ0LCAxOCwgCisgICAgMjQ1LCAxNDMsIDE4LCAyNDUsIDE0MiwgMTgsIDI0NSwgMTQxLCAxOCwgMjQ1LCAxNDAsIDE4LCAyNDUsIDEzOSwgMTgsIAorICAgIDI0NSwgMTM4LCAxOCwgMjQ1LCAxMzcsIDE4LCAyNDUsIDEzNiwgMTgsIDI0NSwgMTM1LCAxOCwgMjQ1LCAxMzQsIDE4LCAKKyAgICAyNDUsIDEzMywgMTgsIDI0NSwgMTMyLCAxOCwgMjQ1LCAxMzEsIDE4LCAyNDUsIDEzMCwgMTgsIDI0NSwgMTI5LCAxOCwgCisgICAgMjQ1LCAxMjgsIDE4LCAyNDUsIDEyNywgMTgsIDI0NSwgMTI2LCAxOCwgMjQ1LCAxMjUsIDE4LCAyNDUsIDEyNCwgMTgsIAorICAgIDI0NSwgMTIzLCAxOCwgMjQ1LCAxMjIsIDE4LCAyNDUsIDEyMSwgMTgsIDI0NSwgMTIwLCAxOCwgMjQ1LCAxMTksIDE4LCAKKyAgICAyNDUsIDExOCwgMTgsIDI0NSwgMTE3LCAxOCwgMjQ1LCAxMTYsIDE4LCAyNDUsIDExNSwgMTgsIDI0NSwgMTE0LCAxOCwgCisgICAgMjQ1LCAxMTMsIDE4LCAyNDUsIDExMiwgMTgsIDI0NSwgMTExLCAxOCwgMjQ1LCAxMTAsIDE4LCAyNDUsIDEwOSwgMTgsIAorICAgIDI0NSwgMTA4LCAxOCwgMjQ1LCAxMDcsIDE4LCAyNDUsIDEwNiwgMTgsIDI0NSwgMTA1LCAxOCwgMjQ1LCAxMDQsIDE4LCAKKyAgICAyNDUsIDEwMywgMTgsIDI0NSwgMTAyLCAxOCwgMjQ1LCAxMDEsIDE4LCAyNDUsIDEwMCwgMTgsIDI0NSwgOTksIDE4LCAyNDUsIAorICAgIDk4LCAxOCwgMjQ1LCA5NywgMTgsIDI0NSwgOTYsIDE4LCAyNDUsIDk1LCAxOCwgMjQ1LCA5NCwgMTgsIDI0NSwgOTMsIDE4LCAKKyAgICAyNDUsIDkyLCAxOCwgMjQ1LCA5MSwgMTgsIDI0NSwgOTAsIDE4LCAyNDUsIDg5LCAxOCwgMjQ1LCA4OCwgMTgsIDI0NSwgODcsIAorICAgIDE4LCAyNDUsIDg2LCAxOCwgMjQ1LCA4NSwgMTgsIDI0NSwgODQsIDE4LCAyNDUsIDgzLCAxOCwgMjQ1LCA4MiwgMTgsIDI0NSwgCisgICAgODEsIDE4LCAyNDUsIDgwLCAxOCwgMjQ1LCA3OSwgMTgsIDI0NSwgNzgsIDE4LCAyNDUsIDc3LCAxOCwgMjQ1LCA3NiwgMTgsIAorICAgIDI0NSwgNzUsIDE4LCAyNDUsIDc0LCAxOCwgMjQ1LCA3MywgMTgsIDI0NSwgNzIsIDE4LCAyNDUsIDcxLCAxOCwgMjQ1LCA3MCwgCisgICAgMTgsIDI0NSwgNjksIDE4LCAyNDUsIDY4LCAxOCwgMjQ1LCA2NywgMTgsIDI0NSwgNjYsIDE4LCAyNDUsIDY1LCAxOCwgMjQ1LCAKKyAgICA2NCwgMTgsIDI0NSwgNjMsIDE4LCAyNDUsIDYyLCAxOCwgMjQ1LCA2MSwgMTgsIDI0NSwgNjAsIDE4LCAyNDUsIDU5LCAxOCwgCisgICAgMjQ1LCA1OCwgMTgsIDI0NSwgNTcsIDE4LCAyNDUsIDU2LCAxOCwgMjQ1LCA1NSwgMTgsIDI0NSwgNTQsIDE4LCAyNDUsIDUzLCAKKyAgICAxOCwgMjQ1LCA1MiwgMTgsIDI0NSwgNTEsIDE4LCAyNDUsIDUwLCAxOCwgMjQ1LCA0OSwgMTgsIDI0NSwgNDgsIDE4LCAyNDUsIAorICAgIDQ3LCAxOCwgMjQ1LCA0NiwgMTgsIDI0NSwgNDUsIDE4LCAyNDUsIDQ0LCAxOCwgMjQ1LCA0MywgMTgsIDI0NSwgNDIsIDE4LCAKKyAgICAyNDUsIDQxLCAxOCwgMjQ1LCA0MCwgMTgsIDI0NSwgMzksIDE4LCAyNDUsIDM4LCAxOCwgMjQ1LCAzNywgMTgsIDI0NSwgMzYsIAorICAgIDE4LCAyNDUsIDM1LCAxOCwgMjQ1LCAzNCwgMTgsIDI0NSwgMzMsIDE4LCAyNDUsIDMyLCAxOCwgMjQ1LCAzMSwgMTgsIDI0NSwgCisgICAgMzAsIDE4LCAyNDUsIDI5LCAxOCwgMjQ1LCAyOCwgMTgsIDI0NSwgMjcsIDE4LCAyNDUsIDI2LCAxOCwgMjQ1LCAyNSwgMTgsIAorICAgIDI0NSwgMjQsIDE4LCAyNDUsIDIzLCAxOCwgMjQ1LCAyMiwgMTgsIDI0NSwgMjEsIDE4LCAyNDUsIDIwLCAxOCwgMjQ1LCAxOSwgCisgICAgMTgsIDI0NSwgMTgsIDE4LCAyNDUsIDE3LCAxOCwgMjQ1LCAxNiwgMTgsIDI0NSwgMTUsIDE4LCAyNDUsIDE0LCAxOCwgMjQ1LCAKKyAgICAxMywgMTgsIDI0NSwgMTIsIDE4LCAyNDUsIDExLCAxOCwgMjQ1LCAxMCwgMTgsIDI0NSwgOSwgMTgsIDI0NSwgOCwgMTgsIAorICAgIDI0NSwgNywgMTgsIDI0NSwgNiwgMTgsIDI0NSwgNSwgMTgsIDI0NSwgNCwgMTgsIDI0NSwgMywgMTgsIDI0NSwgMiwgMTgsIAorICAgIDI0NSwgMSwgMTgsIDI0NSwgMCwgMTgsIDI0NCwgMjU1LCAxOCwgMjQ0LCAyNTQsIDE4LCAyNDQsIDI1MywgMTgsIDI0NCwgCisgICAgMjUyLCAxOCwgMjQ0LCAyNTEsIDE4LCAyNDQsIDI1MCwgMTgsIDI0NCwgMjQ5LCAxOCwgMjQ0LCAyNDgsIDE4LCAyNDQsIAorICAgIDI0NywgMTgsIDI0NCwgMjQ2LCAxOCwgMjQ0LCAyNDUsIDE4LCAyNDQsIDI0NCwgMTgsIDI0NCwgMjQzLCAxOCwgMjQ0LCAKKyAgICAyNDIsIDE4LCAyNDQsIDI0MSwgMTgsIDI0NCwgMjQwLCAxOCwgMjQ0LCAyMzksIDE4LCAyNDQsIDIzOCwgMTgsIDI0NCwgCisgICAgMjM3LCAxOCwgMjQ0LCAyMzYsIDE4LCAyNDQsIDIzNSwgMTgsIDI0NCwgMjM0LCAxOCwgMjQ0LCAyMzMsIDE4LCAyNDQsIAorICAgIDIzMiwgMTgsIDI0NCwgMjMxLCAxOCwgMjQ0LCAyMzAsIDE4LCAyNDQsIDIyOSwgMTgsIDI0NCwgMjI4LCAxOCwgMjQ0LCAKKyAgICAyMjcsIDE4LCAyNDQsIDIyNiwgMTgsIDI0NCwgMjI1LCAxOCwgMjQ0LCAyMjQsIDE4LCAyNDQsIDIyMywgMTgsIDI0NCwgCisgICAgMjIyLCAxOCwgMjQ0LCAyMjEsIDE4LCAyNDQsIDIyMCwgMTgsIDI0NCwgMjE5LCAxOCwgMjQ0LCAyMTgsIDE4LCAyNDQsIAorICAgIDIxNywgMTgsIDI0NCwgMjE2LCAxOCwgMjQ0LCAyMTUsIDE4LCAyNDQsIDIxNCwgMTgsIDI0NCwgMjEzLCAxOCwgMjQ0LCAKKyAgICAyMTIsIDE4LCAyNDQsIDIxMSwgMTgsIDI0NCwgMjEwLCAxOCwgMjQ0LCAyMDksIDE4LCAyNDQsIDIwOCwgMTgsIDI0NCwgCisgICAgMjA3LCAxOCwgMjQ0LCAyMDYsIDE4LCAyNDQsIDIwNSwgMTgsIDI0NCwgMjA0LCAxOCwgMjQ0LCAyMDMsIDE4LCAyNDQsIAorICAgIDIwMiwgMTgsIDI0NCwgMjAxLCAxOCwgMjQ0LCAyMDAsIDE4LCAyNDQsIDE5OSwgMTgsIDI0NCwgMTk4LCAxOCwgMjQ0LCAKKyAgICAxOTcsIDE4LCAyNDQsIDE5NiwgMTgsIDI0NCwgMTk1LCAxOCwgMjQ0LCAxOTQsIDE4LCAyNDQsIDE5MywgMTgsIDI0NCwgCisgICAgMTkyLCAxOCwgMjQ0LCAxOTEsIDE4LCAyNDQsIDE5MCwgMTgsIDI0NCwgMTg5LCAxOCwgMjQ0LCAxODgsIDE4LCAyNDQsIAorICAgIDE4NywgMTgsIDI0NCwgMTg2LCAxOCwgMjQ0LCAxODUsIDE4LCAyNDQsIDE4NCwgMTgsIDI0NCwgMTgzLCAxOCwgMjQ0LCAKKyAgICAxODIsIDE4LCAyNDQsIDE4MSwgMTgsIDI0NCwgMTgwLCAxOCwgMjQ0LCAxNzksIDE4LCAyNDQsIDE3OCwgMTgsIDI0NCwgCisgICAgMTc3LCAxOCwgMjQ0LCAxNzYsIDE4LCAyNDQsIDE3NSwgMTgsIDI0NCwgMTc0LCAxOCwgMjQ0LCAxNzMsIDE4LCAyNDQsIAorICAgIDE3MiwgMTgsIDI0NCwgMTcxLCAxOCwgMjQ0LCAxNzAsIDE4LCAyNDQsIDE2OSwgMTgsIDI0NCwgMTY4LCAxOCwgMjQ0LCAKKyAgICAxNjcsIDE4LCAyNDQsIDE2NiwgMTgsIDI0NCwgMTY1LCAxOCwgMjQ0LCAxNjQsIDE4LCAyNDQsIDE2MywgMTgsIDI0NCwgCisgICAgMTYyLCAxOCwgMjQ0LCAxNjEsIDE4LCAyNDQsIDE2MCwgMTgsIDI0NCwgMTU5LCAxOCwgMjQ0LCAxNTgsIDE4LCAyNDQsIAorICAgIDE1NywgMTgsIDI0NCwgMTU2LCAxOCwgMjQ0LCAxNTUsIDE4LCAyNDQsIDE1NCwgMTgsIDI0NCwgMTUzLCAxOCwgMjQ0LCAKKyAgICAxNTIsIDE4LCAyNDQsIDE1MSwgMTgsIDI0NCwgMTUwLCAxOCwgMjQ0LCAxNDksIDE4LCAyNDQsIDE0OCwgMTgsIDI0NCwgCisgICAgMTQ3LCAxOCwgMjQ0LCAxNDYsIDE4LCAyNDQsIDE0NSwgMTgsIDI0NCwgMTQ0LCAxOCwgMjQ0LCAxNDMsIDE4LCAyNDQsIAorICAgIDE0MiwgMTgsIDI0NCwgMTQxLCAxOCwgMjQ0LCAxNDAsIDE4LCAyNDQsIDEzOSwgMTgsIDI0NCwgMTM4LCAxOCwgMjQ0LCAKKyAgICAxMzcsIDE4LCAyNDQsIDEzNiwgMTgsIDI0NCwgMTM1LCAxOCwgMjQ0LCAxMzQsIDE4LCAyNDQsIDEzMywgMTgsIDI0NCwgCisgICAgMTMyLCAxOCwgMjQ0LCAxMzEsIDE4LCAyNDQsIDEzMCwgMTgsIDI0NCwgMTI5LCAxOCwgMjQ0LCAxMjgsIDE4LCAyNDQsIAorICAgIDEyNywgMTgsIDI0NCwgMTI2LCAxOCwgMjQ0LCAxMjUsIDE4LCAyNDQsIDEyNCwgMTgsIDI0NCwgMTIzLCAxOCwgMjQ0LCAKKyAgICAxMjIsIDE4LCAyNDQsIDEyMSwgMTgsIDI0NCwgMTIwLCAxOCwgMjQ0LCAxMTksIDE4LCAyNDQsIDExOCwgMTgsIDI0NCwgCisgICAgMTE3LCAxOCwgMjQ0LCAxMTYsIDE4LCAyNDQsIDExNSwgMTgsIDI0NCwgMTE0LCAxOCwgMjQ0LCAxMTMsIDE4LCAyNDQsIAorICAgIDExMiwgMTgsIDI0NCwgMTExLCAxOCwgMjQ0LCAxMTAsIDE4LCAyNDQsIDEwOSwgMTgsIDI0NCwgMTA4LCAxOCwgMjQ0LCAKKyAgICAxMDcsIDE4LCAyNDQsIDEwNiwgMTgsIDI0NCwgMTA1LCAxOCwgMjQ0LCAxMDQsIDE4LCAyNDQsIDEwMywgMTgsIDI0NCwgCisgICAgMTAyLCAxOCwgMjQ0LCAxMDEsIDE4LCAyNDQsIDEwMCwgMTgsIDI0NCwgOTksIDE4LCAyNDQsIDk4LCAxOCwgMjQ0LCA5NywgCisgICAgMTgsIDI0NCwgOTYsIDE4LCAyNDQsIDk1LCAxOCwgMjQ0LCA5NCwgMTgsIDI0NCwgOTMsIDE4LCAyNDQsIDkyLCAxOCwgMjQ0LCAKKyAgICA5MSwgMTgsIDI0NCwgOTAsIDE4LCAyNDQsIDg5LCAxOCwgMjQ0LCA4OCwgMTgsIDI0NCwgODcsIDE4LCAyNDQsIDg2LCAxOCwgCisgICAgMjQ0LCA4NSwgMTgsIDI0NCwgODQsIDE4LCAyNDQsIDgzLCAxOCwgMjQ0LCA4MiwgMTgsIDI0NCwgODEsIDE4LCAyNDQsIDgwLCAKKyAgICAxOCwgMjQ0LCA3OSwgMTgsIDI0NCwgNzgsIDE4LCAyNDQsIDc3LCAxOCwgMjQ0LCA3NiwgMTgsIDI0NCwgNzUsIDE4LCAyNDQsIAorICAgIDc0LCAxOCwgMjQ0LCA3MywgMTgsIDI0NCwgNzIsIDE4LCAyNDQsIDcxLCAxOCwgMjQ0LCA3MCwgMTgsIDI0NCwgNjksIDE4LCAKKyAgICAyNDQsIDY4LCAxOCwgMjQ0LCA2NywgMTgsIDI0NCwgNjYsIDE4LCAyNDQsIDY1LCAxOCwgMjQ0LCA2NCwgMTgsIDI0NCwgNjMsIAorICAgIDE4LCAyNDQsIDYyLCAxOCwgMjQ0LCA2MSwgMTgsIDI0NCwgNjAsIDE4LCAyNDQsIDU5LCAxOCwgMjQ0LCA1OCwgMTgsIDI0NCwgCisgICAgNTcsIDE4LCAyNDQsIDU2LCAxOCwgMjQ0LCA1NSwgMTgsIDI0NCwgNTQsIDE4LCAyNDQsIDUzLCAxOCwgMjQ0LCA1MiwgMTgsIAorICAgIDI0NCwgNTEsIDE4LCAyNDQsIDUwLCAxOCwgMjQ0LCA0OSwgMTgsIDI0NCwgNDgsIDE4LCAyNDQsIDQ3LCAxOCwgMjQ0LCA0NiwgCisgICAgMTgsIDI0NCwgNDUsIDE4LCAyNDQsIDQ0LCAxOCwgMjQ0LCA0MywgMTgsIDI0NCwgNDIsIDE4LCAyNDQsIDQxLCAxOCwgMjQ0LCAKKyAgICA0MCwgMTgsIDI0NCwgMzksIDE4LCAyNDQsIDM4LCAxOCwgMjQ0LCAzNywgMTgsIDI0NCwgMzYsIDE4LCAyNDQsIDM1LCAxOCwgCisgICAgMjQ0LCAzNCwgMTgsIDI0NCwgMzMsIDE4LCAyNDQsIDMyLCAxOCwgMjQ0LCAzMSwgMTgsIDI0NCwgMzAsIDE4LCAyNDQsIDI5LCAKKyAgICAxOCwgMjQ0LCAyOCwgMTgsIDI0NCwgMjcsIDE4LCAyNDQsIDI2LCAxOCwgMjQ0LCAyNSwgMTgsIDI0NCwgMjQsIDE4LCAyNDQsIAorICAgIDIzLCAxOCwgMjQ0LCAyMiwgMTgsIDI0NCwgMjEsIDE4LCAyNDQsIDIwLCAxOCwgMjQ0LCAxOSwgMTgsIDI0NCwgMTgsIDE4LCAKKyAgICAyNDQsIDE3LCAxOCwgMjQ0LCAxNiwgMTgsIDI0NCwgMTUsIDE4LCAyNDQsIDE0LCAxOCwgMjQ0LCAxMywgMTgsIDI0NCwgMTIsIAorICAgIDE4LCAyNDQsIDExLCAxOCwgMjQ0LCAxMCwgMTgsIDI0NCwgOSwgMTgsIDI0NCwgOCwgMTgsIDI0NCwgNywgMTgsIDI0NCwgNiwgCisgICAgMTgsIDI0NCwgNSwgMTgsIDI0NCwgNCwgMTgsIDI0NCwgMywgMTgsIDI0NCwgMiwgMTgsIDI0NCwgMSwgMTgsIDI0NCwgMCwgCisgICAgMTgsIDI0MywgMjU1LCAxOCwgMjQzLCAyNTQsIDE4LCAyNDMsIDI1MywgMTgsIDI0MywgMjUyLCAxOCwgMjQzLCAyNTEsIDE4LCAKKyAgICAyNDMsIDI1MCwgMTgsIDI0MywgMjQ5LCAxOCwgMjQzLCAyNDgsIDE4LCAyNDMsIDI0NywgMTgsIDI0MywgMjQ2LCAxOCwgCisgICAgMjQzLCAyNDUsIDE4LCAyNDMsIDI0NCwgMTgsIDI0MywgMjQzLCAxOCwgMjQzLCAyNDIsIDE4LCAyNDMsIDI0MSwgMTgsIAorICAgIDI0MywgMjQwLCAxOCwgMjQzLCAyMzksIDE4LCAyNDMsIDIzOCwgMTgsIDI0MywgMjM3LCAxOCwgMjQzLCAyMzYsIDE4LCAKKyAgICAyNDMsIDIzNSwgMTgsIDI0MywgMjM0LCAxOCwgMjQzLCAyMzMsIDE4LCAyNDMsIDIzMiwgMTgsIDI0MywgMjMxLCAxOCwgCisgICAgMjQzLCAyMzAsIDE4LCAyNDMsIDIyOSwgMTgsIDI0MywgMjI4LCAxOCwgMjQzLCAyMjcsIDE4LCAyNDMsIDIyNiwgMTgsIAorICAgIDI0MywgMjI1LCAxOCwgMjQzLCAyMjQsIDE4LCAyNDMsIDIyMywgMTgsIDI0MywgMjIyLCAxOCwgMjQzLCAyMjEsIDE4LCAKKyAgICAyNDMsIDIyMCwgMTgsIDI0MywgMjE5LCAxOCwgMjQzLCAyMTgsIDE4LCAyNDMsIDIxNywgMTgsIDI0MywgMjE2LCAxOCwgCisgICAgMjQzLCAyMTUsIDE4LCAyNDMsIDIxNCwgMTgsIDI0MywgMjEzLCAxOCwgMjQzLCAyMTIsIDE4LCAyNDMsIDIxMSwgMTgsIAorICAgIDI0MywgMjEwLCAxOCwgMjQzLCAyMDksIDE4LCAyNDMsIDIwOCwgMTgsIDI0MywgMjA3LCAxOCwgMjQzLCAyMDYsIDE4LCAKKyAgICAyNDMsIDIwNSwgMTgsIDI0MywgMjA0LCAxOCwgMjQzLCAyMDMsIDE4LCAyNDMsIDIwMiwgMTgsIDI0MywgMjAxLCAxOCwgCisgICAgMjQzLCAyMDAsIDE4LCAyNDMsIDE5OSwgMTgsIDI0MywgMTk4LCAxOCwgMjQzLCAxOTcsIDE4LCAyNDMsIDE5NiwgMTgsIAorICAgIDI0MywgMTk1LCAxOCwgMjQzLCAxOTQsIDE4LCAyNDMsIDE5MywgMTgsIDI0MywgMTkyLCAxOCwgMjQzLCAxOTEsIDE4LCAKKyAgICAyNDMsIDE5MCwgMTgsIDI0MywgMTg5LCAxOCwgMjQzLCAxODgsIDE4LCAyNDMsIDE4NywgMTgsIDI0MywgMTg2LCAxOCwgCisgICAgMjQzLCAxODUsIDE4LCAyNDMsIDE4NCwgMTgsIDI0MywgMTgzLCAxOCwgMjQzLCAxODIsIDE4LCAyNDMsIDE4MSwgMTgsIAorICAgIDI0MywgMTgwLCAxOCwgMjQzLCAxNzksIDE4LCAyNDMsIDE3OCwgMTgsIDI0MywgMTc3LCAxOCwgMjQzLCAxNzYsIDE4LCAKKyAgICAyNDMsIDE3NSwgMTgsIDI0MywgMTc0LCAxOCwgMjQzLCAxNzMsIDE4LCAyNDMsIDE3MiwgMTgsIDI0MywgMTcxLCAxOCwgCisgICAgMjQzLCAxNzAsIDE4LCAyNDMsIDE2OSwgMTgsIDI0MywgMTY4LCAxOCwgMjQzLCAxNjcsIDE4LCAyNDMsIDE2NiwgMTgsIAorICAgIDI0MywgMTY1LCAxOCwgMjQzLCAxNjQsIDE4LCAyNDMsIDE2MywgMTgsIDI0MywgMTYyLCAxOCwgMjQzLCAxNjEsIDE4LCAKKyAgICAyNDMsIDE2MCwgMTgsIDI0MywgMTU5LCAxOCwgMjQzLCAxNTgsIDE4LCAyNDMsIDE1NywgMTgsIDI0MywgMTU2LCAxOCwgCisgICAgMjQzLCAxNTUsIDE4LCAyNDMsIDE1NCwgMTgsIDI0MywgMTUzLCAxOCwgMjQzLCAxNTIsIDE4LCAyNDMsIDE1MSwgMTgsIAorICAgIDI0MywgMTUwLCAxOCwgMjQzLCAxNDksIDE4LCAyNDMsIDE0OCwgMTgsIDI0MywgMTQ3LCAxOCwgMjQzLCAxNDYsIDE4LCAKKyAgICAyNDMsIDE0NSwgMTgsIDI0MywgMTQ0LCAxOCwgMjQzLCAxNDMsIDE4LCAyNDMsIDE0MiwgMTgsIDI0MywgMTQxLCAxOCwgCisgICAgMjQzLCAxNDAsIDE4LCAyNDMsIDEzOSwgMTgsIDI0MywgMTM4LCAxOCwgMjQzLCAxMzcsIDE4LCAyNDMsIDEzNiwgMTgsIAorICAgIDI0MywgMTM1LCAxOCwgMjQzLCAxMzQsIDE4LCAyNDMsIDEzMywgMTgsIDI0MywgMTMyLCAxOCwgMjQzLCAxMzEsIDE4LCAKKyAgICAyNDMsIDEzMCwgMTgsIDI0MywgMTI5LCAxOCwgMjQzLCAxMjgsIDE4LCAyNDMsIDEyNywgMTgsIDI0MywgMTI2LCAxOCwgCisgICAgMjQzLCAxMjUsIDE4LCAyNDMsIDEyNCwgMTgsIDI0MywgMTIzLCAxOCwgMjQzLCAxMjIsIDE4LCAyNDMsIDEyMSwgMTgsIAorICAgIDI0MywgMTIwLCAxOCwgMjQzLCAxMTksIDE4LCAyNDMsIDExOCwgMTgsIDI0MywgMTE3LCAxOCwgMjQzLCAxMTYsIDE4LCAKKyAgICAyNDMsIDExNSwgMTgsIDI0MywgMTE0LCAxOCwgMjQzLCAxMTMsIDE4LCAyNDMsIDExMiwgMTgsIDI0MywgMTExLCAxOCwgCisgICAgMjQzLCAxMTAsIDE4LCAyNDMsIDEwOSwgMTgsIDI0MywgMTA4LCAxOCwgMjQzLCAxMDcsIDE4LCAyNDMsIDEwNiwgMTgsIAorICAgIDI0MywgMTA1LCAxOCwgMjQzLCAxMDQsIDE4LCAyNDMsIDEwMywgMTgsIDI0MywgMTAyLCAxOCwgMjQzLCAxMDEsIDE4LCAKKyAgICAyNDMsIDEwMCwgMTgsIDI0MywgOTksIDE4LCAyNDMsIDk4LCAxOCwgMjQzLCA5NywgMTgsIDI0MywgOTYsIDE4LCAyNDMsIAorICAgIDk1LCAxOCwgMjQzLCA5NCwgMTgsIDI0MywgOTMsIDE4LCAyNDMsIDkyLCAxOCwgMjQzLCA5MSwgMTgsIDI0MywgOTAsIDE4LCAKKyAgICAyNDMsIDg5LCAxOCwgMjQzLCA4OCwgMTgsIDI0MywgODcsIDE4LCAyNDMsIDg2LCAxOCwgMjQzLCA4NSwgMTgsIDI0MywgODQsIAorICAgIDE4LCAyNDMsIDgzLCAxOCwgMjQzLCA4MiwgMTgsIDI0MywgODEsIDE4LCAyNDMsIDgwLCAxOCwgMjQzLCA3OSwgMTgsIDI0MywgCisgICAgNzgsIDE4LCAyNDMsIDc3LCAxOCwgMjQzLCA3NiwgMTgsIDI0MywgNzUsIDY5LCAxLCAyNTAsIDIzNCwgNzIsIDE3NywgMSwgCisgICAgMjUwLCAyMzQsIDIwMCwgNTEsIDEwNCwgMSwgMjM0LCAyNDcsIDEwNCwgMSwgMjAwLCAxOTUsIDEwNCwgMSwgMjE2LCAyMjYsIAorICAgIDEwNCwgMSwgMjA3LCA4MywgMTA0LCAxLCAyMzgsIDUsIDEwNCwgMSwgMjI3LCAxMTgsIDEwNCwgMSwgMTU2LCAxMDQsIDEsIAorICAgIDI1MCwgMTAzLCAxMDQsIDEsIDI0MiwgMTUzLCAxMDQsIDEsIDIwMywgMTY4LCAxMDQsIDEsIDIzNiwgMTU2LCAxMDQsIDEsIAorICAgIDE0NiwgMTA0LCAxLCAyMTYsIDIyNywgMjIwLCAyMTQsIDEwNCwgMSwgMjQyLCAxNTQsIDIxMiwgMTIyLCAxMDQsIDEsIDIzOCwgCisgICAgNiwgMjIwLCAyMTQsIDEwNCwgMSwgMjI3LCAxMTksIDIyMywgMjQzLCAxMDQsIDEsIDIxNCwgMzMsIDIxMiwgMTIyLCAxMDQsIAorICAgIDEsIDIwNiwgMTI0LCAxMDQsIDEsIDIwOSwgNjIsIDI0MSwgMTAxLCAxMDQsIDEsIDI0MSwgMTAxLCAxMDQsIDEsIDIyNiwgCisgICAgMTEwLCAxMDQsIDEsIDIwOSwgNjIsIDIyNywgMjUxLCAxMDQsIDEsIDIzNCwgNDAsIDEwNCwgMSwgMjI0LCAyMjQsIDEwNCwgCisgICAgMSwgMjEzLCA5NCwgMTA0LCAxLCAyMjMsIDI0MywgMTA0LCAxLCAyMjAsIDIxNCwgMTA0LCAxLCAyMjcsIDI1MSwgMTA0LCAxLCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMjMsIDI0NCwgMjIwLCAyMTQsIDEwNCwgMSwgMjIwLCAyMTUsIDIyMywgMjQzLCAxMDQsIDEsIAorICAgIDIyNywgMjUyLCAyMjMsIDI0MywgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAyNTEsIDEwNCwgMSwgMjIzLCAyNDQsIDMsIDI0MCwgCisgICAgMTgyLCAxMDQsIDEsIDIyMCwgMjE1LCAzLCAyNDAsIDE4MiwgMTA0LCAxLCAyMjcsIDI1MiwgMywgMjQwLCAxODIsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDMsIDE5MCwgMjI4LCA3NCwgMjYsIDU2LCAxMDQsIDEsIDIxMiwgMTIzLCAzLCAyNDAsIDE4MiwgMTA0LCAKKyAgICAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCAxMDQsIDEsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMjAsIDIxNSwgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjI3LCAyNTIsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMTA0LCAxLCAKKyAgICAyMjMsIDI0NCwgMjIwLCAyMTUsIDIxMiwgMTIyLCAxMDQsIDEsIDIyMCwgMjE1LCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAyNTIsIDIxMiwgMTIyLCAKKyAgICAxMDQsIDEsIDIyNywgMjUyLCAyMTIsIDEyMywgMywgMjQwLCAxODIsIDEwNCwgMSwgMjI3LCAyNTIsIDIyMCwgMjE0LCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAyMjAsIDIxNSwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIwNywgODMsIDEwNCwgMSwgMjEyLCAKKyAgICAxMjMsIDIwNywgODQsIDE0NiwgMTA0LCAxLCAyMTIsIDEyMywgMjE2LCAyMjYsIDEwNCwgMSwgMjEyLCAxMjMsIDIxNiwgCisgICAgMjI3LCAxNDYsIDEwNCwgMSwgMjA3LCA4NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjA3LCA4NCwgMjE0LCAzMywgMjEyLCAxMjIsIAorICAgIDEwNCwgMSwgMjAxLCAxNDcsIDEwNCwgMSwgMjAxLCA0MSwgMTA0LCAxLCAyMDEsIDE0OCwgMTQ2LCAxMDQsIDEsIDIxMiwgCisgICAgMTIzLCAyMjAsIDIxNCwgMTA0LCAxLCAyMTIsIDEyMywgMjIzLCAyNDMsIDEwNCwgMSwgMjI3LCAxMTksIDIxNCwgMzMsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIzNiwgMTU3LCAyMTQsIDMzLCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAKKyAgICAxMTgsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMTE5LCAxNDYsIDEwNCwgMSwgNjIsIDEwNCwgMSwgMjA5LCA2MiwgMjE2LCAKKyAgICAyMzgsIDEwNCwgMSwgMjE3LCAxNDYsIDEwNCwgMSwgNzQsIDEwNCwgMSwgMjUxLCAyOSwgMTA0LCAxLCA3MCwgMTA0LCAxLCAKKyAgICA3MiwgMTA0LCAxLCAyMjgsIDE3OCwgMTA0LCAxLCAyMDksIDI1MCwgNzAsIDEwNCwgMSwgMjA0LCAyMywgMTA0LCAxLCAyMzgsIAorICAgIDI1NSwgMTA0LCAxLCAyMDksIDYyLCAyMzgsIDI0MSwgMTA0LCAxLCAyMTIsIDIzOSwgNzAsIDEwNCwgMSwgMjA5LCA2MiwgCisgICAgMjM4LCAyNTUsIDEwNCwgMSwgMTY4LCA3MCwgMTA0LCAxLCAyMDAsIDUxLCAxMDQsIDEsIDY2LCAxMDQsIDEsIDIzOCwgNjksIAorICAgIDEwNCwgMSwgMjAwLCAxNDYsIDEwNCwgMSwgMTA4LCAyMjAsIDIxNCwgMTA0LCAxLCAxNjgsIDY2LCAxMDQsIDEsIDIxMiwgCisgICAgMjM5LCA2NiwgMTA0LCAxLCAyMDQsIDI1LCAxMDQsIDEsIDIwOSwgNjIsIDY2LCAxMDQsIDEsIDIxNywgNjAsIDEwNCwgMSwgCisgICAgMjE2LCAyMzgsIDEwNCwgMSwgMjE3LCAzLCAxMDQsIDEsIDIwMSwgMTE0LCAxMDQsIDEsIDIwMSwgMCwgMTA0LCAxLCAyMDEsIAorICAgIDMxLCAxMDQsIDEsIDIwMSwgNTUsIDEwNCwgMSwgMjAwLCAyMzAsIDEwNCwgMSwgMjIwLCAxMjMsIDY2LCAxMDQsIDEsIDIyMCwgCisgICAgMTIzLCA3NCwgMTA0LCAxLCAyMjAsIDEyMywgNzAsIDEwNCwgMSwgMjIwLCAxMjMsIDYyLCAxMDQsIDEsIDIxNiwgMTYsIAorICAgIDI1MSwgODUsIDEwNCwgMSwgMjE2LCAxNiwgMjUxLCAxMDEsIDEwNCwgMSwgMjA5LCA2MiwgMjM4LCAxNzksIDEwNCwgMSwgCisgICAgMjA5LCA2MiwgMjUxLCA4NSwgMTA0LCAxLCAyMDksIDYyLCAyMTcsIDc4LCAxMDQsIDEsIDEwOSwgMjIzLCAyNDMsIDEwNCwgCisgICAgMjUxLCAyMDAsIDQ5LCAyMzMsIDE3NywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDIyMSwgMjA2LCAyMzMsIDE3NywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDUxLCAyMzMsIDE3NywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDEyOCwgODMsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCAyMjEsIDIwNiwgODMsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDgzLCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjI1LCAxOSwgCisgICAgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMDYsIDI0MCwgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIAorICAgIDIwNywgNiwgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDE5NywgMTE3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjMzLCAKKyAgICAxOSwgMTE3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjA2LCAyNDEsIDExNywgMTA0LCAyNTEsIDIwMCwgMTIyLCAxNjksIAorICAgIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjA2LCAxLCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjM1LCA3MywgMTA0LCAyNTEsIAorICAgIDIwMCwgMTIyLCAxNjgsIDIzNSwgNzMsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjQwLCAxODIsIDEwNCwgMjUxLCAyMDAsIDEyMiwgCisgICAgMjQ2LCAxNTUsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjI0LCAxNzYsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjAxLCA3NywgMTA0LCAKKyAgICAyNTEsIDIwMCwgMTIyLCAyMDMsIDQyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDYsIAorICAgIDEsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMzUsIDczLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDE2OCwgMjM1LCA3MywgCisgICAgMTA0LCAyNTEsIDIwMCwgMTI4LCAyNDAsIDE4MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyNDYsIDE1NSwgMTA0LCAyNTEsIAorICAgIDIwMCwgMTI4LCAyMjQsIDE3NiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDEsIDc3LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwMywgCisgICAgNDIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgNDgsIDEwNCwgMiwgMTYzLCAzLCAyNDIsIDIzNCwgMTA0LCAyMDYsIDgyLCAxLCAKKyAgICAyMTEsIDE3NSwgMTA0LCA1MywgODEsIDEwNCwgMjE0LCAyMTIsIDI0NiwgMjIwLCAyMzYsIDE4MywgMjA4LCA3NiwgMjA5LCAKKyAgICAyMzcsIDIzNiwgMjQxLCAxLCAyMTYsIDI0NCwgMjA5LCAyMzcsIDIzNiwgMjQxLCAyNDMsIDQwLCAyMTYsIDI0NCwgMjA5LCAKKyAgICAyMzcsIDIzNiwgMjQxLCAxMjcsIDIwOCwgOTAsIDIwOSwgMjM3LCAyMzYsIDI0MSwgMTE1LCAyMDgsIDkwLCA2MSwgMzIsIAorICAgIDE2LCAyMTQsIDIyOCwgNjEsIDMyLCAxNiwgMjQxLCAyNDYsIDYxLCAzMiwgMTYsIDIxNiwgMjAsIDYxLCAzMiwgMTYsIDIxNiwgCisgICAgMjM0LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgMjE2LCAyMzQsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwMywgNzcsIDIzOCwgCisgICAgMjEzLCA2MSwgMzIsIDE2LCAyMDMsIDc3LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMjcsIDI4LCA2MSwgMzIsIDE2LCAyMDcsIAorICAgIDEwMCwgNjEsIDMyLCAxNiwgMjE2LCAxMjIsIDYxLCAzMiwgMTYsIDE5OSwgMjE3LCA2MSwgMzIsIDE2LCAxOTksIDIxOCwgCisgICAgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjI2LCAzMiwgNjEsIDMyLCAxNiwgMjUxLCAyNCwgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIAorICAgIDIzOCwgMzcsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAyMDYsIDE3NywgNjEsIDMyLCAxNiwgMjI2LCAyMzksIDYxLCAzMiwgCisgICAgMTYsIDI1MSwgMTQsIDYxLCAzMiwgMTYsIDI1MSwgMTUsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwNywgMTA3LCA2MSwgMzIsIAorICAgIDE2LCAyMDYsIDY0LCA2MSwgMzIsIDE2LCAyMTcsIDg5LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjM1LCAxMDAsIDI1MCwgCisgICAgMjMyLCA2MSwgMzIsIDE2LCAyMTQsIDIyNywgNjEsIDMyLCAxNiwgMjQ3LCAyOCwgNjEsIDMyLCAxNiwgMjAzLCA2NiwgNjEsIAorICAgIDMyLCAxNiwgMjI4LCAxNywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgMjQxLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAyNDAsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTEsIDIzNiwgNjEsIDMyLCAxNiwgMjE2LCAxMTIsIDYxLCAzMiwgCisgICAgMTYsIDIwOCwgOTksIDI1MSwgMTcsIDYxLCAzMiwgMTYsIDIxNiwgMjMzLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjAzLCAKKyAgICA3NiwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDI1MSwgMTgsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyNTEsIDEyLCA2MSwgMzIsIAorICAgIDE2LCAyMjYsIDEwMCwgNjEsIDMyLCAxNiwgMjEzLCAxMDEsIDYxLCAzMiwgMTYsIDIxNSwgMjAyLCAyNTAsIDIzMiwgNjEsIAorICAgIDMyLCAxNiwgMjA1LCAyMzAsIDYxLCAzMiwgMTYsIDI1MSwgODIsIDYxLCAzMiwgMTYsIDIxMSwgMTc4LCA2MSwgMzIsIDE2LCAKKyAgICAyMDcsIDExMSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwNywgMTExLCAyMjIsIDIxLCAyMDgsIDk3LCA2MSwgMzIsIDE2LCAKKyAgICAyMTYsIDIyOCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwNiwgMTAwLCA2MSwgMzIsIDE2LCAyMjUsIDYsIDYxLCAzMiwgMTYsIAorICAgIDIzOSwgOTYsIDYxLCAzMiwgMTYsIDIwNSwgMTAwLCA2MSwgMzIsIDE2LCAyMDYsIDE0OCwgNjEsIDMyLCAxNiwgMjI2LCAzNSwgCisgICAgNjEsIDMyLCAxNiwgMjUxLCAyNCwgMjM4LCAzNywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI1MCwgMjMyLCAKKyAgICA2MSwgMzIsIDE2LCAyMjgsIDEzMCwgNjEsIDMyLCAxNiwgMjA1LCA2OSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNywgMzEsIAorICAgIDIwNSwgNjgsIDYxLCAzMiwgMTYsIDIxNiwgNDksIDYxLCAzMiwgMTYsIDIxNCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDY5LCAKKyAgICA2MSwgMzIsIDE2LCAyNDYsIDIwNCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxMywgMjA5LCA2MSwgMzIsIDE2LCAyMTYsIAorICAgIDEyNSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxNiwgMTIzLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjMyLCAyMjksIDYxLCAKKyAgICAzMiwgMTYsIDIyMCwgMTMzLCA2MSwgMzIsIDE2LCAyMTUsIDI1NCwgNjEsIDMyLCAxNiwgMjI2LCA3MCwgMjUxLCAxMTksIAorICAgIDYxLCAzMiwgMTYsIDIwNSwgNjksIDI1MSwgMTE5LCA2MSwgMzIsIDE2LCAyMDgsIDcwLCA2MSwgMzIsIDE2LCAyMzUsIDYwLCAKKyAgICA2MSwgMzIsIDE2LCAyMjgsIDE3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTcsIDg5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMTYsIDIzNCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE1LCAyNTMsIDYxLCAzMiwgMTYsIDIyNiwgNTQsIDYxLCAzMiwgMTYsIAorICAgIDIxNSwgMjUyLCA2MSwgMzIsIDE2LCAyMjYsIDM0LCA2MSwgMzIsIDE2LCAyMTYsIDUwLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDI0MCwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjI2LCAyNDEsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAKKyAgICAzMiwgMTYsIDE5OSwgMjE1LCA2MSwgMzIsIDE2LCAyNTEsIDE1LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDE2LCAyMDcsIAorICAgIDEwOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMTk5LCAyMTYsIDYxLCAzMiwgMTYsIDIyNiwgMzMsIDYxLCAzMiwgMTYsIDIzOCwgCisgICAgMjA4LCA2MSwgMzIsIDE2LCAyNDcsIDI5LCA2MSwgMzIsIDE2LCAyMjEsIDE3NywgMjI4LCAxNiwgNjEsIDMyLCAxNiwgMjAzLCAKKyAgICA3NywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE1LCAyMDIsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNCwgMjMzLCAyMjAsIAorICAgIDIwLCA2MSwgMzIsIDE2LCAyMTcsIDg1LCA2MSwgMzIsIDE2LCAyNTEsIDQyLCA2MSwgMzIsIDE2LCAyMjMsIDI1NCwgNjEsIAorICAgIDMyLCAxNiwgMjE2LCAxMjMsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNiwgMTI1LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMzgsIDc1LCAyMTYsIDEyNCwgNjEsIDMyLCAxNiwgMjI1LCAxOTcsIDYxLCAzMiwgMTYsIDI1MSwgNDMsIDYxLCAzMiwgMTYsIAorICAgIDIwNSwgNjksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzOCwgMjExLCA2MSwgMzIsIDE2LCAyMDcsIDExMSwgMjIwLCAyMCwgCisgICAgNjEsIDMyLCAxNiwgMjA3LCAxMDEsIDYxLCAzMiwgMTYsIDI0NiwgMjA0LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzgsIAorICAgIDEzMCwgNjEsIDMyLCAxNiwgMjExLCAxNzksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIwMCwgMTYyLCAyMjYsIDEwMCwgNjEsIAorICAgIDMyLCAxNiwgMjA1LCA2NiwgNjEsIDMyLCAxNiwgMjE0LCAyMzQsIDYxLCAzMiwgMTYsIDIwNSwgNzAsIDYxLCAzMiwgMTYsIAorICAgIDIwNSwgNjcsIDYxLCAzMiwgMTYsIDIxNCwgMjMxLCA2MSwgMzIsIDE2LCAyMDUsIDY1LCA2MSwgMzIsIDE2LCAyMTQsIDIzMCwgCisgICAgNjEsIDMyLCAxNiwgMjM1LCA5OSwgNjEsIDMyLCAxNiwgMjUwLCAyMjQsIDYxLCAzMiwgMTYsIDIzOCwgNzUsIDI1MCwgMjI0LCAKKyAgICA2MSwgMzIsIDE2LCAyMTYsIDIyOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjA2LCA5OSwgMjM4LCA4OCwgNjEsIDMyLCAxNiwgCisgICAgMjA2LCA5OSwgMjM4LCAzNiwgNjEsIDMyLCAxNiwgMjA2LCAxMDEsIDI1MSwgMTksIDYxLCAzMiwgMTYsIDIwNiwgOTMsIAorICAgIDIyNywgODMsIDI1MSwgMTEsIDYxLCAzMiwgMTYsIDIyNywgMzAsIDYxLCAzMiwgMTYsIDIzOCwgMTY3LCA2MSwgMzIsIDE2LCAKKyAgICAyMDAsIDEzLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyMDAsIDEzLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMDgsIDk4LCA2MSwgCisgICAgMzIsIDE2LCAyMjYsIDEwMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjQxLCAxNSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMzYsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDM2LCAyNTEsIDExOSwgNjEsIDMyLCAxNiwgMjI2LCAzNiwgCisgICAgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAxOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjA1LCA4MSwgNjEsIDMyLCAxNiwgMjA2LCAxMzksIDYxLCAzMiwgMTYsIDIyNiwgNTgsIAorICAgIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIzOCwgMTYwLCAyNDYsIDE5NCwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjM5LCA5NywgCisgICAgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIwNSwgODQsIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAKKyAgICAyMDYsIDE1MCwgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIyOCwgMTI1LCAyNDYsIDE5NCwgNjEsIDMyLCAxNiwgCisgICAgMjM1LCAxMDAsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIzNSwgMTAwLCAyMTYsIDExMywgMjUwLCAyMjAsIDYxLCAKKyAgICAzMiwgMTYsIDIzNSwgMTAwLCAyMTYsIDExMywgMjQxLCAxMDUsIDYxLCAzMiwgMTYsIDI0MSwgMzksIDYxLCAzMiwgMTYsIAorICAgIDI0MSwgNDAsIDIxNiwgMTEzLCAyNTAsIDIyMSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjQxLCA0MCwgMjE2LCAxMTMsIDI1MCwgCisgICAgMjIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDQwLCAyMTYsIDExMywgMjQxLCAxMDUsIDYxLCAzMiwgMTYsIDIwNSwgCisgICAgODksIDYxLCAzMiwgMTYsIDI1MCwgMjI1LCA2MSwgMzIsIDE2LCAyMjgsIDEzMiwgNjEsIDMyLCAxNiwgMjQxLCA2MiwgNjEsIAorICAgIDMyLCAxNiwgMjUxLCAxODcsIDIxNSwgODksIDI1MCwgMjI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjUwLCAyMjMsIDYxLCAKKyAgICAzMiwgMTYsIDI1MSwgMTg3LCAyNTAsIDIyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIyMiwgMTUsIDYxLCAzMiwgMTYsIAorICAgIDI1MSwgMTg3LCAyMjIsIDI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjM1LCAxMDEsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAKKyAgICAyMzUsIDk4LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjE1LCA4OSwgMjM1LCAxMDEsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAKKyAgICAyMTQsIDI0MCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNTEsIDEyMSwgMjE0LCAyNDAsIDIzMiwgMjI3LCAKKyAgICA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjQxLCAxMDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjUxLCAxMjEsIAorICAgIDI0MSwgMTA0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwNSwgNzYsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMjIsIDE0MCwgMjA1LCA5MCwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwNiwgMTQ0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgCisgICAgMjIyLCAxNDAsIDIwNiwgMTQ0LCAyMjUsIDE1LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIyNSwgMTUsIAorICAgIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjE1LCAxMzIsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjgsIDI0LCAKKyAgICAyMDYsIDE3MCwgMjMyLCAyMjgsIDYxLCAzMiwgMTYsIDI1MSwgMTYsIDIwNiwgMTcwLCAyMzIsIDIyOCwgNjEsIDMyLCAxNiwgCisgICAgMjM3LCAxNjcsIDIwNiwgMTQxLCA2MSwgMzIsIDE2LCAyMzcsIDE2NywgMjIxLCA5OCwgNjEsIDMyLCAxNiwgMjM3LCAxNjcsIAorICAgIDI0MSwgNDUsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDMsIDcwLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIAorICAgIDIxNCwgMjM5LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIxNSwgMTMyLCAyMDYsIDE0NCwgMjMyLCAyMjcsIAorICAgIDYxLCAzMiwgMTYsIDIzNSwgOTUsIDIyMCwgMjE1LCAyNTEsIDE5LCA2MSwgMzIsIDE2LCAyMzUsIDk1LCAyMjAsIDIxNSwgCisgICAgMjQxLCAxMywgNjEsIDMyLCAxNiwgMjM4LCAxNzcsIDIyNywgODMsIDIzNiwgMTkxLCAyMDIsIDE3NCwgNjEsIDMyLCAxNiwgCisgICAgMjI4LCAxMzEsIDYxLCAzMiwgMTYsIDIyOCwgMTI5LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjUwLCAyMzMsIDI0MSwgMTAzLCAKKyAgICAyMzIsIDIyNiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDE3MiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgCisgICAgNjAsIDIyMCwgMTMzLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIwLCAxMjgsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMzYsIAorICAgIDE5MSwgMjQxLCA2MCwgMjQxLCA3NiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgODIsIDI0MSwgNTksIDI0MSwgNzYsIAorICAgIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAyMjcsIDgsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAKKyAgICAxOTksIDE0LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMjE5LCAxNTEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIAorICAgIDIzNiwgMTkxLCAyNDEsIDYwLCAyMTksIDE1MSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMiwgMTg2LCAKKyAgICAyNDYsIDE5NiwgMjQxLCA0NSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMiwgMTg2LCAyNDYsIDE5NiwgMjIxLCA5OCwgNjEsIAorICAgIDMyLCAxNiwgMjM3LCAxMTMsIDIwOSwgODIsIDI0NiwgMTk2LCAyMDMsIDY5LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCAKKyAgICA4MiwgMjQ2LCAxOTYsIDIwNywgMTEyLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIwLCAyMywgNjEsIDMyLCAxNiwgMjQ2LCAKKyAgICAxOTcsIDE5OCwgMjM4LCA2MSwgMzIsIDE2LCAyNDYsIDE5NywgMjI2LCA5OSwgNjEsIDMyLCAxNiwgMjQ2LCAxOTcsIDIwOCwgCisgICAgMjM1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjMzLCAxOSwgMjAwLCAxMiwgMjA2LCAxNDUsIDYxLCAzMiwgMTYsIDIzNiwgCisgICAgMTkxLCAyMzgsIDE3OCwgMjUxLCA0NCwgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjA1LCA3NywgNjEsIDMyLCAxNiwgMjQxLCAKKyAgICA1MywgMjA1LCA3NywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjA2LCAxNDUsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDI1MSwgMjEsIAorICAgIDIzOSwgOTcsIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMjEsIDk2LCAyMDYsIDE0OSwgMjQwLCAyMDMsIDYxLCAKKyAgICAzMiwgMTYsIDI0MSwgNTMsIDI0MSwgMzYsIDIzOCwgNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMDUsIAorICAgIDg3LCAyMTcsIDk1LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjUxLCAyMSwgMjM5LCA5NywgMjQwLCAyMDMsIAorICAgIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIyMSwgOTYsIDIwNiwgMTQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgCisgICAgMjQxLCAzNiwgMjM4LCA0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIwNSwgODcsIDIxNywgOTUsIDI0MCwgCisgICAgMjAzLCA2MSwgMzIsIDE2LCAyMzUsIDI1NSwgMjQxLCA1MiwgNjEsIDMyLCAxNiwgMjM1LCAyNTUsIDIwMCwgMTEsIDYxLCAKKyAgICAzMiwgMTYsIDI0MSwgNjEsIDI1MSwgMjEsIDIyMSwgMTc4LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyNTEsIDIxLCAyMjIsIAorICAgIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyMDYsIDkxLCA2MSwgMzIsIAorICAgIDE2LCAyMDksIDE0OSwgMjA2LCA5MSwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDI0MCwgMjU0LCA2MSwgMzIsIAorICAgIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjA1LCA3OCwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDIwNiwgMTM3LCAKKyAgICA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTYsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgMjQwLCAyNTQsIAorICAgIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgMjA1LCA3OCwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAKKyAgICAyMDYsIDEzNywgNjEsIDMyLCAxNiwgMjQxLCAzNywgMjM1LCAyMzYsIDYxLCAzMiwgMTYsIDI0MSwgNDQsIDIxNywgMywgNjEsIAorICAgIDMyLCAxNiwgMjA4LCA4NiwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDE3MiwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDIwMiwgCisgICAgMTc0LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjM2LCA4OSwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDI0MSwgNzYsIDYxLCAKKyAgICAzMiwgMTYsIDI1MCwgMjE3LCAyMjcsIDgsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAxOTksIDE0LCA2MSwgMzIsIDE2LCAyNTAsIAorICAgIDIxNywgMjE5LCAxNTAsIDYxLCAzMiwgMTYsIDIyNiwgMjQwLCAyMjAsIDIxLCAyMjIsIDI1LCA2MSwgMzIsIDE2LCAyMjYsIAorICAgIDI0MSwgMjIwLCAyMSwgMjIyLCAyNSwgNjEsIDMyLCAxNiwgMjI2LCAyNDAsIDIyMCwgMjEsIDIyNywgMjcsIDYxLCAzMiwgCisgICAgMTYsIDIyNiwgMjQxLCAyMjAsIDIxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyMjYsIDEwMSwgMjI3LCAyNywgNjEsIDMyLCAKKyAgICAxNiwgMjM1LCAxMDAsIDIyMCwgMjEsIDIyNywgMjcsIDMyLCAxNiwgMjA5LCAxMzksIDI0OSwgNzIsIDMyLCAxNiwgNTMsIAorICAgIDI0OSwgNzIsIDMyLCAxNiwgNDcsIDI0OSwgNzIsIDMyLCAxNiwgMjEzLCAxMDYsIDQ3LCAyNDksIDcyLCAzMiwgMTYsIDI0MSwgCisgICAgMjQzLCAyNDksIDcyLCAzMiwgMTYsIDIwOSwgMjUwLCAyNDksIDcyLCAzMiwgMTYsIDQ5LCAyMTMsIDEzMywgNTQsIDMyLCAKKyAgICAxNiwgNTEsIDIxMywgMTMzLCA1NCwgMzIsIDE2LCAyMTMsIDEzMywgMjQwLCAxODAsIDMyLCAxNiwgMjQyLCAzMCwgMjExLCAKKyAgICAxODIsIDMyLCAxNiwgMjQyLCA1OSwgMjQ3LCAxNDEsIDMyLCAxNiwgMjExLCAxODIsIDMyLCAxNiwgMjQ2LCA4NywgMzIsIAorICAgIDE2LCAyMTMsIDEzMSwgMjM3LCAxMDEsIDMyLCAxNiwgMjEzLCAxMzEsIDIzNywgMTAwLCAzMiwgMTYsIDIxMywgMTMxLCAKKyAgICAyMzcsIDk5LCAzMiwgMTYsIDIzNywgMTIyLCAzMiwgMTYsIDIzNywgMTIzLCA1NywgMzIsIDE2LCAyNDgsIDU5LCA4MSwgMzIsIAorICAgIDE2LCAyNDcsIDE4MCwgMzIsIDE2LCAyNDgsIDcxLCAzMiwgMTYsIDE1OSwgMzIsIDE2LCAyMTcsIDczLCAyMDgsIDExNywgCisgICAgMzIsIDE2LCAyMDQsIDE0MCwgMjA4LCAxMTcsIDMyLCAxNiwgMjA2LCA0MiwgMjA4LCAxMTcsIDMyLCAxNiwgMjM2LCAyMjgsIAorICAgIDIwOCwgMTE3LCAzMiwgMTYsIDIzNywgNjAsIDIwOCwgMTE3LCAzMiwgMTYsIDIwOSwgMTA1LCAyMDgsIDExNywgMzIsIDE2LCAKKyAgICAyMDksIDEwMywgMjM2LCAyMDgsIDMyLCAxNiwgMjM2LCAyMjYsIDIzNiwgMjA4LCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIAorICAgIDEyNCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAxMjUsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgCisgICAgMTI1LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjQ3LCAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAKKyAgICAxMjQsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIDEyNSwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgCisgICAgMTI1LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjM5LCAxNDMsIDI0NiwgMTIzLCAzMiwgMTYsIDIzOSwgMTQzLCAyNDYsIAorICAgIDEyMiwgMzIsIDE2LCAyMjEsIDIxLCAyMjIsIDc1LCAyMTMsIDExNywgMzIsIDE2LCA1MywgMjEwLCA3OCwgMzIsIDE2LCA1MywgCisgICAgMjM3LCA0NCwgMzIsIDE2LCAyMzcsIDQ1LCAyMDMsIDIyOCwgMzIsIDE2LCAyMzcsIDQ1LCAyMzksIDE2NywgMzIsIDE2LCAKKyAgICAyMjAsIDExNywgMjAzLCAyMjgsIDMyLCAxNiwgMjIwLCAxMTcsIDIzOSwgMTY3LCAzMiwgMTYsIDIxMCwgNzksIDIwMywgCisgICAgMjI4LCAzMiwgMTYsIDIxMCwgNzksIDIzOSwgMTY3LCAzMiwgMTYsIDIxNCwgODgsIDE1MCwgMjEwLCA3OCwgMzIsIDE2LCAKKyAgICAyMTQsIDg4LCAxNTAsIDIzNywgNDQsIDMyLCAxNiwgMjQ2LCA2NywgMjA1LCAyMzQsIDMyLCAxNiwgMjQyLCAxODAsIDIwNSwgCisgICAgMjM0LCAzMiwgMTYsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDIxNCwgNjksIAorICAgIDI1MSwgMTEwLCAzMiwgMTYsIDIxNCwgNjksIDI0OSwgNTcsIDMyLCAxNiwgMjIxLCAyNCwgMjEzLCAxMTcsIDMyLCAxNiwgCisgICAgMjAxLCAzMiwgMjEzLCAxMTcsIDMyLCAxNiwgMTY3LCAyMTMsIDExNywgMzIsIDE2LCAyMTQsIDg4LCAyMTMsIDExNywgMzIsIAorICAgIDE2LCAyMzgsIDIyOCwgMjEzLCAxMTcsIDMyLCAxNiwgMjA5LCA5OSwgMjEzLCAxMTcsIDMyLCAxNiwgMjA2LCA2NSwgMjEzLCAKKyAgICAxMTcsIDMyLCAxNiwgMjA5LCA5MSwgMjEzLCAxMTcsIDMyLCAxNiwgMTEyLCAyMzMsIDgzLCAyMDQsIDE1NywgMjEzLCAxMTcsIAorICAgIDMyLCAxNiwgMjAwLCAxOTYsIDIxOCwgMjA1LCAzMiwgMTYsIDkzLCAyMTgsIDIwNSwgMzIsIDE2LCAyNDYsIDE1NiwgMjAwLCAKKyAgICAxOTYsIDIxOCwgMjA1LCAzMiwgMTYsIDUyLCAyMTgsIDIwNiwgMjAxLCAzNCwgMzIsIDE2LCA1MiwgMjE4LCAyMDYsIDI0OCwgCisgICAgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIAorICAgIDExNSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDQ5LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIAorICAgIDIxOCwgMjA2LCA0OSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDUxLCAyMDEsIDM0LCAzMiwgMTYsIAorICAgIDIwNSwgOTksIDIxOCwgMjA2LCA1MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDEyNywgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTI3LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCAKKyAgICA1MSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCA1MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjIxLCAKKyAgICA4MiwgMjE4LCAyMDYsIDIwMSwgMzQsIDMyLCAxNiwgMjIxLCA4MiwgMjE4LCAyMDYsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgCisgICAgOTYsIDIxOCwgMjA2LCAxMjcsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5NiwgMjE4LCAyMDYsIDEyNywgMjQ4LCAxNDQsIDMyLCAKKyAgICAxNiwgMjE2LCAxMTYsIDIxOCwgMjA1LCAzMiwgMTYsIDIwMiwgMTg2LCAyMTgsIDIwNSwgMzIsIDE2LCAyMTgsIDIwNiwgCisgICAgMjQ4LCAxNDQsIDMyLCAxNiwgMjE4LCA5OCwgMjE4LCAyMDUsIDMyLCAxNiwgMjQ2LCA5NCwgMjE4LCAyMDYsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjQ2LCA5NCwgMjE4LCAyMDYsIDI0OCwgMTQ0LCAzMiwgMTYsIDI0OCwgNTcsIDMyLCAxNiwgMjAxLCAzMiwgCisgICAgMjE4LCAyMDksIDMyLCAxNiwgMTY3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMTQsIDg4LCAyMTgsIDIwOSwgMzIsIDE2LCAyMzgsIAorICAgIDIyOCwgMjE4LCAyMDksIDMyLCAxNiwgMjA5LCA5OSwgMjE4LCAyMDksIDMyLCAxNiwgMjA2LCA2NSwgMjE4LCAyMDksIDMyLCAKKyAgICAxNiwgMjA5LCA5MSwgMjE4LCAyMDksIDMyLCAxNiwgMTEyLCAyMzMsIDgzLCAyMDQsIDE1NywgMjE4LCAyMDksIDMyLCAxNiwgCisgICAgMzgsIDIwOCwgOTIsIDMyLCAxNiwgMzgsIDIwOCwgMjAwLCAyMDgsIDkyLCAzMiwgMTYsIDM4LCAyMDUsIDEwNywgMzIsIDE2LCAKKyAgICAzOCwgMjA1LCAxMDYsIDMyLCAxNiwgMzgsIDIwNSwgMTA1LCAzMiwgMTYsIDIzNywgODQsIDIwNSwgMTA3LCAzMiwgMTYsIAorICAgIDIzNywgODQsIDIwNSwgMTA2LCAzMiwgMTYsIDIzNywgODQsIDIwNSwgMTA1LCAzMiwgMTYsIDM4LCAyNTAsIDEzNiwgMjQwLCAKKyAgICAxODIsIDMyLCAxNiwgMzgsIDIzNywgNTIsIDMyLCAxNiwgMzgsIDIzNywgNTEsIDMyLCAxNiwgMzgsIDIzNywgNTAsIDMyLCAKKyAgICAxNiwgMzgsIDIzNywgNDksIDMyLCAxNiwgMzgsIDIzNywgNDgsIDMyLCAxNiwgMjQ4LCAyNDQsIDI0OSwgNSwgMzIsIDE2LCAKKyAgICAyMzgsIDE3MSwgMjQ5LCA1LCAzMiwgMTYsIDI0OCwgMjQ0LCAyMDYsIDcsIDMyLCAxNiwgMjM4LCAxNzEsIDIwNiwgNywgMzIsIAorICAgIDE2LCAyNDgsIDI0NCwgMjA5LCA1NCwgMzIsIDE2LCAyMzgsIDE3MSwgMjA5LCA1NCwgMzIsIDE2LCAyNDgsIDI0NCwgMjE1LCAKKyAgICAyMTEsIDMyLCAxNiwgMjM4LCAxNzEsIDIxNSwgMjExLCAzMiwgMTYsIDM4LCAyNTEsIDI1MSwgMzIsIDE2LCAzOCwgMjA4LCAKKyAgICAxMjAsIDMyLCAxNiwgMzgsIDIwNiwgMTU0LCAzMiwgMTYsIDM4LCAyMDgsIDEyMSwgMzIsIDE2LCAzOCwgMjIyLCAxNTQsIAorICAgIDMyLCAxNiwgMzgsIDIyMiwgMTUzLCAzMiwgMTYsIDM4LCAyNTEsIDI1MCwgMzIsIDE2LCAzOCwgMjI0LCA2MSwgMzIsIDE2LCAKKyAgICAyNTAsIDIwOCwgMjAzLCAyMjgsIDMyLCAxNiwgMjUwLCAyMDgsIDIzOSwgMTY3LCAzMiwgMTYsIDM4LCAyNDAsIDE5NywgMzIsIAorICAgIDE2LCAzOCwgMjEzLCAyMywgMzIsIDE2LCAzOCwgMjM3LCAzMywgMzIsIDE2LCAzOCwgMjA5LCA1MCwgMzIsIDE2LCAzOCwgCisgICAgMjQ4LCAyMjIsIDMyLCAxNiwgMzgsIDUzLCAyMDUsIDE2MywgMzIsIDE2LCAzOCwgMjA1LCA4MywgMjA1LCAxNjMsIDMyLCAKKyAgICAxNiwgMjEzLCAyOCwgMzIsIDE2LCAyMDgsIDE0LCAzMiwgMTYsIDE5OSwgMTU3LCAzMiwgMTYsIDIxNSwgMjAzLCAzMiwgMTYsIAorICAgIDIyMiwgNiwgMzIsIDE2LCAyMzYsIDIzOCwgMzIsIDE2LCAyNDIsIDI0NSwgMzIsIDE2LCAyNDEsIDE2MiwgMzIsIDE2LCAKKyAgICAyMzUsIDkwLCAyMTgsIDIxMCwgMjA5LCA3NSwgMzIsIDE2LCAyMzUsIDkwLCAyMTgsIDIxMCwgMjE4LCAyNDIsIDIwOSwgNzUsIAorICAgIDMyLCAxNiwgMjA1LCAxMzMsIDMyLCAxNiwgMjA0LCAxODYsIDMyLCAxNiwgMjI4LCA1MCwgMjA0LCAxODYsIDMyLCAxNiwgCisgICAgMjA0LCAxODcsIDIwOSwgNzUsIDMyLCAxNiwgMjA0LCAxODcsIDIwMywgMjI4LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDYsIAorICAgIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MywgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQyLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgCisgICAgNDEsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM5LCAzMiwgMTYsIDIxNywgMjIsIAorICAgIDIwOCwgMzgsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzNywgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM2LCAzMiwgMTYsIDIxNywgCisgICAgMjIsIDIwOCwgNDUsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0NCwgMzIsIDE2LCAyMzQsIDE0OSwgMzIsIDE2LCAyMjAsIDMyLCAKKyAgICAzMiwgMTYsIDIzOCwgMTcxLCA3NiwgMjA4LCA4MiwgMzIsIDE2LCAyNDEsIDE1NSwgMjA5LCA3NSwgMzIsIDE2LCAzOCwgCisgICAgMTI3LCAyNDgsIDg1LCAzMiwgMTYsIDM4LCAxMTUsIDI0OCwgODUsIDMyLCAxNiwgMzgsIDIzNCwgMTYyLCAzMiwgMTYsIDM4LCAKKyAgICAyMDksIDQwLCAyMTUsIDEzNiwgMzIsIDE2LCAyMTYsIDY2LCA4MSwgMzIsIDE2LCAyMTYsIDY2LCAxMTUsIDgxLCAzMiwgMTYsIAorICAgIDE2NywgMjE2LCA2NiwgODEsIDMyLCAxNiwgMjM1LCAxMjUsIDIwMywgMjI4LCAzMiwgMTYsIDIzNSwgMTI1LCAyMzksIDE2NywgCisgICAgMzIsIDE2LCAzLCAyMzcsIDgzLCAzMiwgMTYsIDI0MiwgMTMsIDMyLCAxNiwgMjQyLCAxNCwgMjUxLCAxMjQsIDMyLCAxNiwgCisgICAgMjIyLCAxMjEsIDMyLCAxNiwgMjI0LCA4MCwgMzIsIDE2LCAyNDgsIDU0LCAzMiwgMTYsIDIxMCwgMTcxLCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDIxMCwgMTcxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMjEsIDE2MCwgMzIsIDE2LCAyMjEsIDE2MSwgMjQ4LCAxNDQsIAorICAgIDMyLCAxNiwgMjEwLCAxNjUsIDIwMSwgMzQsIDMyLCAxNiwgMjEwLCAxNjUsIDI0OCwgMTQ0LCAzMiwgMTYsIDIzNiwgMTc0LCAKKyAgICAyMDEsIDM0LCAzMiwgMTYsIDIzNiwgMTc0LCAyNDgsIDE0NCwgMzIsIDE2LCAyMjQsIDgxLCAyMTYsIDI1LCAyMTMsIDExNywgCisgICAgMzIsIDE2LCAyMjQsIDgxLCAyMjgsIDEyMiwgMjEzLCAxMTcsIDMyLCAxNiwgMjQ4LCA1NSwgMjEzLCAxMTcsIDMyLCAxNiwgCisgICAgMjEwLCAxNzEsIDIxMywgMTE3LCAzMiwgMTYsIDIyMSwgMTYxLCAyMTMsIDExNywgMzIsIDE2LCAyMTAsIDE2NSwgMjEzLCAKKyAgICAxMTcsIDMyLCAxNiwgMjA2LCAxNjgsIDIxNiwgMjMsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNCwgMzIsIDE2LCAyMDYsIAorICAgIDE2OCwgMjE2LCAyMywgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMSwgMzIsIDE2LCAyMDYsIDE2OCwgMjE2LCAyMywgCisgICAgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI1LCAyNDEsIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAKKyAgICAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAKKyAgICAyMjgsIDEyMSwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgCisgICAgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIDIzLCAKKyAgICAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAyMiwgMzIsIAorICAgIDE2LCAyNDIsIDIzNywgMzIsIDE2LCAyMzUsIDYzLCAyNDcsIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjM1LCA2MywgMjM4LCAKKyAgICA2LCAyNDYsIDEyNCwgMzIsIDE2LCA1MiwgMjUwLCAxMDMsIDMyLCAxNiwgMjAyLCAyMDcsIDMyLCAxNiwgMjE1LCAxMDMsIAorICAgIDMyLCAxNiwgMjQ2LCAxMTUsIDMyLCAxNiwgMjExLCAyMjYsIDMyLCAxNiwgMjQ2LCAxMTksIDMyLCAxNiwgMjA1LCAxNTEsIAorICAgIDMyLCAxNiwgMjE1LCA3MiwgMzIsIDE2LCAyMTUsIDczLCAyMzcsIDM2LCAzMiwgMTYsIDIxMSwgMjI3LCAyMzcsIDM2LCAzMiwgCisgICAgMTYsIDIwNSwgMTUyLCAyMTMsIDExNCwgMzIsIDE2LCAyMTYsIDYsIDIwOCwgNSwgMzIsIDE2LCAyMjYsIDE1MywgMjQ3LCAKKyAgICAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDE3MSwgNzYsIDIxNSwgMTk2LCAzMiwgMTYsIDIyNiwgCisgICAgMTUzLCA0NywgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDIxMywgMTgyLCA4MSwgMzIsIDE2LCAyMjYsIDE1MywgMjAxLCAKKyAgICAzMiwgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDE2NywgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDIxNCwgODgsIAorICAgIDIxOCwgMjEwLCAyMDgsIDkzLCAyMzksIDE2NywgMzIsIDE2LCAyMjYsIDE1MywgMjE0LCA4OCwgMjE4LCAyMTAsIDIwOCwgCisgICAgOTMsIDIwMywgMjI4LCAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDIyOCwgMjE4LCAyMTAsIDIwOCwgOTMsIDIzOSwgMTY3LCAKKyAgICAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDIyOCwgMjE4LCAyMTAsIDIwOCwgOTMsIDIwMywgMjI4LCAzMiwgMTYsIDIyNiwgCisgICAgMTUzLCAyMzcsIDQ1LCA1NCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjIsIDMxLCAyMDIsIDE5MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTUxLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0MSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMzQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEyMCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTksIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE4LCAKKyAgICAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExNywgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjEsIDMxLCAKKyAgICAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1OSwgMzEsIDIwMiwgCisgICAgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTgsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU3LCAzMSwgMjAyLCAxOTIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE1NiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTUsIDMxLCAyMDIsIDE5MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTU0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1MywgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxNTIsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTUwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDE0OSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDgsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ3LCAKKyAgICAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0NiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjUsIDMxLCAKKyAgICAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMywgMzEsIDIwMiwgCisgICAgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjIsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIxLCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTYyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUxLCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTM0LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI2LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTE5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTE4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTYwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU4LCAKKyAgICAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU0LCAzMSwgCisgICAgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUyLCAzMSwgMjI4LCAKKyAgICA3MiwgMjE4LCAyMTMsIDIwNywgMTQ3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQ2LCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTQ1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQ0LCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTQzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTQwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTM4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM2LCAKKyAgICAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMzLCAzMSwgCisgICAgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMxLCAzMSwgMjI4LCAKKyAgICA3MiwgMjE4LCAyMTMsIDIwNywgMTMwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI5LCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTI4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI3LCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTI1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI0LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTIzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTIyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTIxLCAzOCwgMzEsIDMyLCAyMDUsIDc5LCAzOCwgMzEsIDMyLCAyMDYsIDEzOCwgMzgsIDMxLCAzMiwgMjE2LCAzNSwgMzEsIAorICAgIDMyLCAyMjUsIDEwLCAyMjEsIDk3LCAzNiwgMjM5LCAxNywgMjQxLCAzOCwgMzYsIDIzNCwgMTIyLCAyMzksIDE3LCAyNDEsIAorICAgIDM4LCAzNiwgMjMzLCA4NywgMjM5LCAxNywgMjQxLCAzOCwgMzYsIDIzOSwgMTYsIDIzNCwgMTIzLCAyNDEsIDM4LCAzNiwgCisgICAgMjM5LCAxNiwgMjMzLCA4NiwgMjQxLCAzOCwgMzYsIDIzOSwgMTcsIDIwNiwgMTQwLCAzNiwgMjQ3LCA1NSwgMjA2LCAxNDAsIAorICAgIDM2LCAyMzYsIDE4MywgMjQ2LCAxNTUsIDIwNiwgMTQwLCAzNiwgMjIxLCAxNTIsIDIwNiwgMTQwLCAzNiwgMjQ5LCA2NywgCisgICAgMjA2LCAxNDAsIDM2LCAyMjcsIDIsIDIwOSwgNTMsIDIwNiwgMTQwLCAzNiwgMjQzLCAzNSwgMjA2LCAxNDAsIDM2LCAyNTAsIAorICAgIDE4MywgMjA2LCAxNDAsIDM2LCAyMTcsIDM5LCAyMDYsIDE0MCwgMzYsIDI0OCwgNjQsIDIxNiwgMjU0LCAyMDYsIDE0MCwgCisgICAgMzYsIDI0MSwgMTU3LCAyMTcsIDM0LCAyNDAsIDI0NiwgMjA2LCAxNDAsIDM2LCAyNDAsIDI0MywgMjA2LCAxNDAsIDM2LCAKKyAgICAxOTksIDIyMywgMjA2LCAxNDAsIDM2LCAyMjgsIDEwOCwgMjA2LCAxNDAsIDM2LCAyMTYsIDQ1LCAyMDYsIDE0MCwgMzYsIAorICAgIDIxMywgMTg5LCAyMDYsIDE0MCwgMzYsIDI0MywgNDcsIDIwNiwgMTQwLCAzNiwgMjMzLCAxOTgsIDI0OSwgMTI5LCAyMDYsIAorICAgIDE0MCwgMzYsIDIwMSwgMTA2LCAyMDYsIDE0MCwgMzYsIDIzNywgOCwgMjA2LCAxNDAsIDM2LCAyNTEsIDIyNCwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTMsIDE0NiwgMjA2LCAxNDAsIDM2LCAyMTMsIDEyMSwgMjA2LCAxNDAsIDM2LCAyMzksIDE1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIyNywgMTUwLCAyMDYsIDE0MCwgMzYsIDI0MywgNDIsIDIwNiwgMTQwLCAzNiwgMjM4LCAxNzAsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM5LCAxMDksIDIwNiwgMTQwLCAzNiwgMjQ3LCAyNCwgMjA2LCAxNDAsIDM2LCAyNDEsIDE2NywgMjA2LCAKKyAgICAxNDAsIDM2LCAyNywgMjEzLCAxMjAsIDIwNiwgMTQwLCAzNiwgMjE2LCAyMDIsIDIwNiwgMTQwLCAzNiwgMjI1LCAxNCwgCisgICAgMjA2LCAxNDAsIDM2LCAyNDYsIDEwOCwgMjA2LCAxNDAsIDM2LCAyMjYsIDE0MywgMjA2LCAxNDAsIDM2LCAyMzYsIDM5LCAKKyAgICAyMDYsIDE0MCwgMzYsIDIwOCwgNTgsIDIwNiwgMTQwLCAzNiwgMjE0LCAyMDEsIDIwNiwgMTQwLCAzNiwgMjM2LCAxODIsIAorICAgIDIwNiwgMTQwLCAzNiwgMjEzLCAxMjIsIDIwNiwgMTQwLCAzNiwgMjI1LCA1MywgMjE3LCAzNCwgMjIxLCAxMzIsIDIwNiwgCisgICAgMTQwLCAzNiwgMjEzLCAxMTgsIDIwNiwgMTQwLCAzNiwgMjM1LCAxMTAsIDIwNSwgMTg2LCAyMjIsIDU5LCAyMDYsIDE0MCwgCisgICAgMzYsIDIzOCwgMTcyLCAyMDYsIDE0MCwgMzYsIDIwOCwgNzEsIDIwNiwgMTQwLCAzNiwgMjM1LCA2NSwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzgsIDE2MywgMjA2LCAxNDAsIDM2LCAyMTYsIDg5LCAyMDYsIDE0MCwgMzYsIDIxMywgMTYsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM3LCAzNCwgMjA2LCAxNDAsIDM2LCAyMDMsIDY4LCAyMTcsIDM0LCAyMDEsIDg2LCAyMDYsIDE0MCwgMzYsIDI0MywgNTIsIAorICAgIDIwNiwgMTQwLCAzNiwgMjIyLCA3NCwgMjA2LCAxNDAsIDM2LCAyMzgsIDc2LCAyMDYsIDE0MCwgMzYsIDIwMywgMjM4LCAKKyAgICAyMDYsIDE0MCwgMzYsIDI0MSwgMjUsIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMTAsIDIyMSwgNTgsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM1LCA0MiwgMjA2LCAxNDAsIDM2LCAyMzYsIDQwLCAyMjgsIDExNywgMjA2LCAxNDAsIDM2LCAyMjIsIDEyOSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyNTEsIDI0NiwgMjA2LCAxNDAsIDM2LCAyMzgsIDE4OCwgMjA2LCAxNDAsIDM2LCAyMzksIDE3MSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMDEsIDg0LCAyMDYsIDE0MCwgMzYsIDIwOSwgMTM0LCAyMDYsIDE0MCwgMzYsIDIyOCwgODEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjQxLCAxMjQsIDIwNiwgMTQwLCAzNiwgMjQxLCAyNDgsIDIwNiwgMTQwLCAzNiwgMjQxLCAyMSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzgsIDQwLCAyMDYsIDE0MCwgMzYsIDIxMCwgMTI4LCAyMDYsIDE0MCwgMzYsIDIwOCwgNzUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM0LCAxNjQsIDIwNiwgMTQwLCAzNiwgMjQ2LCA2MywgMjA2LCAxNDAsIDM2LCAyNDYsIDEwNSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzcsIDE3NCwgMjA2LCAxNDAsIDM2LCAyNTEsIDE4OCwgMjA2LCAxNDAsIDM2LCAyNDYsIDYyLCAyMDYsIAorICAgIDE0MCwgMzYsIDIxNywgNzksIDIwNiwgMTA3LCAyMDMsIDQ1LCAyMDYsIDE0MCwgMzYsIDI0MSwgNDcsIDIwNiwgMTQwLCAzNiwgCisgICAgMjI1LCAxNjQsIDIwNiwgMTQwLCAzNiwgMjM2LCAyMzIsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTAyLCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDEwNSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNDcsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTQ5LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE2NCwgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxODcsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMjEwLCAKKyAgICAxMzUsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTkyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIAorICAgIDIxOSwgMTEzLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDEwMiwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxMDUsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTQ3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDE0OSwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxNjQsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTg3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDIxMCwgMTM1LCAyNDMsIDMsIDIxMiwgMjQ3LCAKKyAgICAyMDYsIDE2MiwgMTcsIDE5MiwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAyMTksIDExMywgMTMsIDI3LCA2LCAKKyAgICA2MiwgMTMsIDI3LCA2LCAyNTAsIDEwMywgMTMsIDI3LCA2LCAyNDcsIDIyMywgMTMsIDI3LCA2LCAyNDIsIDE1MywgMTMsIAorICAgIDI3LCA2LCA3MiwgMTMsIDI3LCA2LCAyMzgsIDUsIDEzLCAyNywgNiwgMjM2LCAxNTYsIDEzLCAyNywgNiwgMjM0LCAyNDcsIAorICAgIDEzLCAyNywgNiwgNzAsIDEzLCAyNywgNiwgMjI3LCAyNTEsIDEzLCAyNywgNiwgMjI3LCAxMTgsIDEzLCAyNywgNiwgMTU2LCAKKyAgICAxMywgMjcsIDYsIDIyMywgMjQzLCAxMywgMjcsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDYsIDc0LCAxMywgMjcsIDYsIDIxNiwgCisgICAgMjI2LCAxMywgMjcsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDYsIDE0NiwgMTMsIDI3LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCA2LCAKKyAgICAyMDcsIDgzLCAxMywgMjcsIDYsIDY2LCAxMywgMjcsIDYsIDIwMywgMTY4LCAxMywgMjcsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIAorICAgIDYsIDIwMCwgMTk1LCAxMywgMjcsIDYsIDIwMCwgMTIzLCAxMywgMjcsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDQsIDYyLCAxMywgCisgICAgMjcsIDQsIDI1MCwgMTAzLCAxMywgMjcsIDQsIDI0NywgMjIzLCAxMywgMjcsIDQsIDI0MiwgMTUzLCAxMywgMjcsIDQsIDcyLCAKKyAgICAxMywgMjcsIDQsIDIzOCwgNSwgMTMsIDI3LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCA0LCAyMzQsIDI0NywgMTMsIDI3LCA0LCAKKyAgICA3MCwgMTMsIDI3LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCA0LCAyMjcsIDExOCwgMTMsIDI3LCA0LCAxNTYsIDEzLCAyNywgNCwgCisgICAgMjIzLCAyNDMsIDEzLCAyNywgNCwgMjIwLCAyMTQsIDEzLCAyNywgNCwgNzQsIDEzLCAyNywgNCwgMjE2LCAyMjYsIDEzLCAKKyAgICAyNywgNCwgMjE0LCAxNjcsIDEzLCAyNywgNCwgMTQ2LCAxMywgMjcsIDQsIDIxMiwgMTIyLCAxMywgMjcsIDQsIDIwNywgODMsIAorICAgIDEzLCAyNywgNCwgNjYsIDEzLCAyNywgNCwgMjAzLCAxNjgsIDEzLCAyNywgNCwgMjAxLCAxNDcsIDEzLCAyNywgNCwgMjAwLCAKKyAgICAxOTUsIDEzLCAyNywgNCwgMjAwLCAxMjMsIDEzLCAyNywgNCwgMTk5LCAxNTcsIDEzLCAzOSwgNiwgNjIsIDEzLCAzOSwgNiwgCisgICAgMjUwLCAxMDMsIDEzLCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCAzOSwgNiwgMjQyLCAxNTMsIDEzLCAzOSwgNiwgNzIsIDEzLCAKKyAgICAzOSwgNiwgMjM4LCA1LCAxMywgMzksIDYsIDIzNiwgMTU2LCAxMywgMzksIDYsIDIzNCwgMjQ3LCAxMywgMzksIDYsIDcwLCAKKyAgICAxMywgMzksIDYsIDIyNywgMjUxLCAxMywgMzksIDYsIDIyNywgMTE4LCAxMywgMzksIDYsIDE1NiwgMTMsIDM5LCA2LCAyMjMsIAorICAgIDI0MywgMTMsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDM5LCA2LCA3NCwgMTMsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDM5LCA2LCAKKyAgICAyMTQsIDE2NywgMTMsIDM5LCA2LCAxNDYsIDEzLCAzOSwgNiwgMjEyLCAxMjIsIDEzLCAzOSwgNiwgMjA3LCA4MywgMTMsIAorICAgIDM5LCA2LCA2NiwgMTMsIDM5LCA2LCAyMDMsIDE2OCwgMTMsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDM5LCA2LCAyMDAsIDE5NSwgCisgICAgMTMsIDM5LCA2LCAyMDAsIDEyMywgMTMsIDM5LCA2LCAxOTksIDE1NywgMTMsIDM5LCA0LCA2MiwgMTMsIDM5LCA0LCAyNTAsIAorICAgIDEwMywgMTMsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDM5LCA0LCA3MiwgMTMsIDM5LCA0LCAKKyAgICAyMzgsIDUsIDEzLCAzOSwgNCwgMjM2LCAxNTYsIDEzLCAzOSwgNCwgNzAsIDEzLCAzOSwgNCwgMjI3LCAyNTEsIDEzLCAzOSwgCisgICAgNCwgMjI3LCAxMTgsIDEzLCAzOSwgNCwgMTU2LCAxMywgMzksIDQsIDIyMywgMjQzLCAxMywgMzksIDQsIDIyMCwgMjE0LCAKKyAgICAxMywgMzksIDQsIDc0LCAxMywgMzksIDQsIDIxNiwgMjI2LCAxMywgMzksIDQsIDIxNCwgMTY3LCAxMywgMzksIDQsIDE0NiwgCisgICAgMTMsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDM5LCA0LCAyMDcsIDgzLCAxMywgMzksIDQsIDY2LCAxMywgMzksIDQsIDIwMywgCisgICAgMTY4LCAxMywgMzksIDQsIDIwMSwgMTQ3LCAxMywgMzksIDQsIDIwMCwgMTk1LCAxMywgMzksIDQsIDIwMCwgMTIzLCAxMywgCisgICAgMzksIDQsIDE5OSwgMTU3LCAxMywgMjcsIDM5LCA2LCA2MiwgMTMsIDI3LCAzOSwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMzksIAorICAgIDYsIDI0NywgMjIzLCAxMywgMjcsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDI3LCAzOSwgNiwgNzIsIDEzLCAyNywgMzksIDYsIAorICAgIDIzOCwgNSwgMTMsIDI3LCAzOSwgNiwgMjM2LCAxNTYsIDEzLCAyNywgMzksIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDM5LCA2LCAKKyAgICA3MCwgMTMsIDI3LCAzOSwgNiwgMjI3LCAyNTEsIDEzLCAyNywgMzksIDYsIDIyNywgMTE4LCAxMywgMjcsIDM5LCA2LCAxNTYsIAorICAgIDEzLCAyNywgMzksIDYsIDIyMywgMjQzLCAxMywgMjcsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAzOSwgNiwgNzQsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxNiwgMjI2LCAxMywgMjcsIDM5LCA2LCAyMTQsIDE2NywgMTMsIDI3LCAzOSwgNiwgMTQ2LCAxMywgMjcsIAorICAgIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAzOSwgNiwgMjA3LCA4MywgMTMsIDI3LCAzOSwgNiwgNjYsIDEzLCAyNywgMzksIAorICAgIDYsIDIwMywgMTY4LCAxMywgMjcsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAzOSwgNiwgMjAwLCAxOTUsIDEzLCAyNywgCisgICAgMzksIDYsIDIwMCwgMTIzLCAxMywgMjcsIDM5LCA2LCAxOTksIDE1NywgMTMsIDI3LCAzOSwgNCwgNjIsIDEzLCAyNywgMzksIAorICAgIDQsIDI1MCwgMTAzLCAxMywgMjcsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDI3LCAzOSwgNCwgMjQyLCAxNTMsIDEzLCAyNywgCisgICAgMzksIDQsIDcyLCAxMywgMjcsIDM5LCA0LCAyMzgsIDUsIDEzLCAyNywgMzksIDQsIDIzNiwgMTU2LCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMzQsIDI0NywgMTMsIDI3LCAzOSwgNCwgNzAsIDEzLCAyNywgMzksIDQsIDIyNywgMjUxLCAxMywgMjcsIDM5LCA0LCAyMjcsIAorICAgIDExOCwgMTMsIDI3LCAzOSwgNCwgMTU2LCAxMywgMjcsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDI3LCAzOSwgNCwgMjIwLCAKKyAgICAyMTQsIDEzLCAyNywgMzksIDQsIDc0LCAxMywgMjcsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDI3LCAzOSwgNCwgMjE0LCAxNjcsIAorICAgIDEzLCAyNywgMzksIDQsIDE0NiwgMTMsIDI3LCAzOSwgNCwgMjEyLCAxMjIsIDEzLCAyNywgMzksIDQsIDIwNywgODMsIDEzLCAKKyAgICAyNywgMzksIDQsIDY2LCAxMywgMjcsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCAzOSwgNCwgMjAxLCAxNDcsIDEzLCAyNywgCisgICAgMzksIDQsIDIwMCwgMTk1LCAxMywgMjcsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDI3LCAzOSwgNCwgMTk5LCAxNTcsIDEzLCAKKyAgICAxMzUsIDYsIDYyLCAxMywgMTM1LCA2LCAyNDcsIDIyMywgMTMsIDEzNSwgNiwgMjQyLCAxNTMsIDEzLCAxMzUsIDYsIDIzNiwgCisgICAgMTU2LCAxMywgMTM1LCA2LCAyMjcsIDI1MSwgMTMsIDEzNSwgNiwgMjI3LCAxMTgsIDEzLCAxMzUsIDYsIDIyMCwgMjE0LCAKKyAgICAxMywgMTM1LCA2LCA3NCwgMTMsIDEzNSwgNiwgMjE2LCAyMjYsIDEzLCAxMzUsIDYsIDIxNCwgMTY3LCAxMywgMTM1LCA2LCAKKyAgICAyMTIsIDEyMiwgMTMsIDEzNSwgNiwgMjA3LCA4MywgMTMsIDEzNSwgNiwgNjYsIDEzLCAxMzUsIDYsIDIwMywgMTY4LCAxMywgCisgICAgMTM1LCA2LCAyMDEsIDE0NywgMTMsIDEzNSwgNiwgMjAwLCAxOTUsIDEzLCAxMzUsIDYsIDIwMCwgMTIzLCAxMywgMTM1LCA2LCAKKyAgICAxOTksIDE1NywgMTMsIDEzNSwgNCwgNjIsIDEzLCAxMzUsIDQsIDI1MCwgMTAzLCAxMywgMTM1LCA0LCAyNDcsIDIyMywgMTMsIAorICAgIDEzNSwgNCwgMjQyLCAxNTMsIDEzLCAxMzUsIDQsIDIzOCwgNSwgMTMsIDEzNSwgNCwgMjM0LCAyNDcsIDEzLCAxMzUsIDQsIAorICAgIDcwLCAxMywgMTM1LCA0LCAyMjcsIDI1MSwgMTMsIDEzNSwgNCwgMjI3LCAxMTgsIDEzLCAxMzUsIDQsIDE1NiwgMTMsIDEzNSwgCisgICAgNCwgMjIzLCAyNDMsIDEzLCAxMzUsIDQsIDIyMCwgMjE0LCAxMywgMTM1LCA0LCAyMTYsIDIyNiwgMTMsIDEzNSwgNCwgMjE0LCAKKyAgICAxNjcsIDEzLCAxMzUsIDQsIDE0NiwgMTMsIDEzNSwgNCwgMjEyLCAxMjIsIDEzLCAxMzUsIDQsIDIwNywgODMsIDEzLCAxMzUsIAorICAgIDQsIDY2LCAxMywgMTM1LCA0LCAyMDMsIDE2OCwgMTMsIDEzNSwgNCwgMjAxLCAxNDcsIDEzLCAxMzUsIDQsIDIwMCwgMTk1LCAKKyAgICAxMywgMTM1LCA0LCAyMDAsIDEyMywgMTMsIDEzNSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgMTM1LCA2LCA2MiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDEzNSwgNiwgMjQ3LCAyMjMsIDEzLCAyNywgMTM1LCA2LCAyNDIsIDE1MywgMTMsIAorICAgIDI3LCAxMzUsIDYsIDcyLCAxMywgMjcsIDEzNSwgNiwgMjM4LCA1LCAxMywgMjcsIDEzNSwgNiwgMjM2LCAxNTYsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMzQsIDI0NywgMTMsIDI3LCAxMzUsIDYsIDcwLCAxMywgMjcsIDEzNSwgNiwgMjI3LCAyNTEsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMjcsIDExOCwgMTMsIDI3LCAxMzUsIDYsIDE1NiwgMTMsIDI3LCAxMzUsIDYsIDIyMywgMjQzLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMTM1LCA2LCA3NCwgMTMsIDI3LCAxMzUsIDYsIDIxNiwgMjI2LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMTM1LCA2LCAxNDYsIDEzLCAyNywgMTM1LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIwNywgODMsIDEzLCAyNywgMTM1LCA2LCA2NiwgMTMsIDI3LCAxMzUsIDYsIDIwMywgMTY4LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMTM1LCA2LCAyMDAsIDE5NSwgMTMsIDI3LCAxMzUsIDYsIDIwMCwgMTIzLCAxMywgCisgICAgMjcsIDEzNSwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMTM1LCA0LCA2MiwgMTMsIDI3LCAxMzUsIDQsIDI1MCwgMTAzLCAxMywgCisgICAgMjcsIDEzNSwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMTM1LCA0LCAyNDIsIDE1MywgMTMsIDI3LCAxMzUsIDQsIDcyLCAxMywgCisgICAgMjcsIDEzNSwgNCwgMjM4LCA1LCAxMywgMjcsIDEzNSwgNCwgMjM2LCAxNTYsIDEzLCAyNywgMTM1LCA0LCAyMzQsIDI0NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDcwLCAxMywgMjcsIDEzNSwgNCwgMjI3LCAyNTEsIDEzLCAyNywgMTM1LCA0LCAyMjcsIDExOCwgCisgICAgMTMsIDI3LCAxMzUsIDQsIDE1NiwgMTMsIDI3LCAxMzUsIDQsIDIyMywgMjQzLCAxMywgMjcsIDEzNSwgNCwgMjIwLCAyMTQsIAorICAgIDEzLCAyNywgMTM1LCA0LCA3NCwgMTMsIDI3LCAxMzUsIDQsIDIxNiwgMjI2LCAxMywgMjcsIDEzNSwgNCwgMjE0LCAxNjcsIAorICAgIDEzLCAyNywgMTM1LCA0LCAxNDYsIDEzLCAyNywgMTM1LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCAxMzUsIDQsIDIwNywgODMsIAorICAgIDEzLCAyNywgMTM1LCA0LCA2NiwgMTMsIDI3LCAxMzUsIDQsIDIwMywgMTY4LCAxMywgMjcsIDEzNSwgNCwgMjAxLCAxNDcsIAorICAgIDEzLCAyNywgMTM1LCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAxMzUsIDQsIDIwMCwgMTIzLCAxMywgMjcsIDEzNSwgNCwgMTk5LCAKKyAgICAxNTcsIDEzLCAxNzAsIDYsIDYyLCAxMywgMTcwLCA2LCAyNTAsIDEwMywgMTMsIDE3MCwgNiwgMjQyLCAxNTMsIDEzLCAxNzAsIAorICAgIDYsIDcyLCAxMywgMTcwLCA2LCAyMzgsIDUsIDEzLCAxNzAsIDYsIDIzNiwgMTU2LCAxMywgMTcwLCA2LCAyMjcsIDI1MSwgCisgICAgMTMsIDE3MCwgNiwgMjI3LCAxMTgsIDEzLCAxNzAsIDYsIDE1NiwgMTMsIDE3MCwgNiwgMjIzLCAyNDMsIDEzLCAxNzAsIDYsIAorICAgIDIyMCwgMjE0LCAxMywgMTcwLCA2LCA3NCwgMTMsIDE3MCwgNiwgMjE2LCAyMjYsIDEzLCAxNzAsIDYsIDIxNCwgMTY3LCAxMywgCisgICAgMTcwLCA2LCAyMTIsIDEyMiwgMTMsIDE3MCwgNiwgMjA3LCA4MywgMTMsIDE3MCwgNiwgNjYsIDEzLCAxNzAsIDYsIDIwMywgCisgICAgMTY4LCAxMywgMTcwLCA2LCAyMDEsIDE0NywgMTMsIDE3MCwgNiwgMjAwLCAxOTUsIDEzLCAxNzAsIDYsIDIwMCwgMTIzLCAKKyAgICAxMywgMTcwLCA0LCA2MiwgMTMsIDE3MCwgNCwgMjUwLCAxMDMsIDEzLCAxNzAsIDQsIDI0NywgMjIzLCAxMywgMTcwLCA0LCAKKyAgICAyNDIsIDE1MywgMTMsIDE3MCwgNCwgNzIsIDEzLCAxNzAsIDQsIDIzOCwgNSwgMTMsIDE3MCwgNCwgMjM2LCAxNTYsIDEzLCAKKyAgICAxNzAsIDQsIDIzNCwgMjQ3LCAxMywgMTcwLCA0LCA3MCwgMTMsIDE3MCwgNCwgMjI3LCAyNTEsIDEzLCAxNzAsIDQsIDIyNywgCisgICAgMTE4LCAxMywgMTcwLCA0LCAxNTYsIDEzLCAxNzAsIDQsIDIyMywgMjQzLCAxMywgMTcwLCA0LCAyMjAsIDIxNCwgMTMsIAorICAgIDE3MCwgNCwgNzQsIDEzLCAxNzAsIDQsIDIxNiwgMjI2LCAxMywgMTcwLCA0LCAyMTQsIDE2NywgMTMsIDE3MCwgNCwgMTQ2LCAKKyAgICAxMywgMTcwLCA0LCAyMTIsIDEyMiwgMTMsIDE3MCwgNCwgMjA3LCA4MywgMTMsIDE3MCwgNCwgNjYsIDEzLCAxNzAsIDQsIAorICAgIDIwMywgMTY4LCAxMywgMTcwLCA0LCAyMDEsIDE0NywgMTMsIDE3MCwgNCwgMjAwLCAxOTUsIDEzLCAxNzAsIDQsIDIwMCwgCisgICAgMTIzLCAxMywgMTcwLCA0LCAxOTksIDE1NywgMTMsIDE3NSwgNiwgNjIsIDEzLCAxNzUsIDYsIDI1MCwgMTAzLCAxMywgMTc1LCAKKyAgICA2LCAyNDIsIDE1MywgMTMsIDE3NSwgNiwgNzIsIDEzLCAxNzUsIDYsIDIzOCwgNSwgMTMsIDE3NSwgNiwgMjM2LCAxNTYsIAorICAgIDEzLCAxNzUsIDYsIDcwLCAxMywgMTc1LCA2LCAyMjcsIDI1MSwgMTMsIDE3NSwgNiwgMjI3LCAxMTgsIDEzLCAxNzUsIDYsIAorICAgIDE1NiwgMTMsIDE3NSwgNiwgMjIzLCAyNDMsIDEzLCAxNzUsIDYsIDc0LCAxMywgMTc1LCA2LCAyMTIsIDEyMiwgMTMsIDE3NSwgCisgICAgNiwgMjA3LCA4MywgMTMsIDE3NSwgNiwgNjYsIDEzLCAxNzUsIDYsIDIwMywgMTY4LCAxMywgMTc1LCA2LCAyMDEsIDE0NywgCisgICAgMTMsIDE3NSwgNiwgMjAwLCAxOTUsIDEzLCAxNzUsIDYsIDIwMCwgMTIzLCAxMywgMTc1LCA0LCA2MiwgMTMsIDE3NSwgNCwgCisgICAgMjUwLCAxMDMsIDEzLCAxNzUsIDQsIDI0NywgMjIzLCAxMywgMTc1LCA0LCAyNDIsIDE1MywgMTMsIDE3NSwgNCwgNzIsIDEzLCAKKyAgICAxNzUsIDQsIDIzOCwgNSwgMTMsIDE3NSwgNCwgMjM2LCAxNTYsIDEzLCAxNzUsIDQsIDIzNCwgMjQ3LCAxMywgMTc1LCA0LCAKKyAgICA3MCwgMTMsIDE3NSwgNCwgMjI3LCAyNTEsIDEzLCAxNzUsIDQsIDIyNywgMTE4LCAxMywgMTc1LCA0LCAxNTYsIDEzLCAxNzUsIAorICAgIDQsIDIyMywgMjQzLCAxMywgMTc1LCA0LCAyMjAsIDIxNCwgMTMsIDE3NSwgNCwgNzQsIDEzLCAxNzUsIDQsIDIxNiwgMjI2LCAKKyAgICAxMywgMTc1LCA0LCAyMTQsIDE2NywgMTMsIDE3NSwgNCwgMTQ2LCAxMywgMTc1LCA0LCAyMTIsIDEyMiwgMTMsIDE3NSwgNCwgCisgICAgMjA3LCA4MywgMTMsIDE3NSwgNCwgNjYsIDEzLCAxNzUsIDQsIDIwMywgMTY4LCAxMywgMTc1LCA0LCAyMDEsIDE0NywgMTMsIAorICAgIDE3NSwgNCwgMjAwLCAxOTUsIDEzLCAxNzUsIDQsIDIwMCwgMTIzLCAxMywgMTc1LCA0LCAxOTksIDE1NywgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDYyLCAxMywgMjcsIDE3MCwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMTcwLCA2LCAyNDcsIDIyMywgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDI0MiwgMTUzLCAxMywgMjcsIDE3MCwgNiwgNzIsIDEzLCAyNywgMTcwLCA2LCAyMzgsIDUsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAxNzAsIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDE3MCwgNiwgNzAsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAxNzAsIDYsIDIyNywgMTE4LCAxMywgMjcsIDE3MCwgNiwgMTU2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjIzLCAyNDMsIDEzLCAyNywgMTcwLCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAxNzAsIDYsIDc0LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjE2LCAyMjYsIDEzLCAyNywgMTcwLCA2LCAyMTQsIDE2NywgMTMsIDI3LCAxNzAsIDYsIDE0NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIxMiwgMTIyLCAxMywgMjcsIDE3MCwgNiwgMjA3LCA4MywgMTMsIDI3LCAxNzAsIDYsIDY2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjAzLCAxNjgsIDEzLCAyNywgMTcwLCA2LCAyMDEsIDE0NywgMTMsIDI3LCAxNzAsIDYsIDIwMCwgMTk1LCAxMywgCisgICAgMjcsIDE3MCwgNiwgMjAwLCAxMjMsIDEzLCAyNywgMTcwLCA2LCAxOTksIDE1NywgMTMsIDI3LCAxNzAsIDQsIDYyLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjUwLCAxMDMsIDEzLCAyNywgMTcwLCA0LCAyNDcsIDIyMywgMTMsIDI3LCAxNzAsIDQsIDI0MiwgMTUzLCAKKyAgICAxMywgMjcsIDE3MCwgNCwgNzIsIDEzLCAyNywgMTcwLCA0LCAyMzgsIDUsIDEzLCAyNywgMTcwLCA0LCAyMzYsIDE1NiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIzNCwgMjQ3LCAxMywgMjcsIDE3MCwgNCwgNzAsIDEzLCAyNywgMTcwLCA0LCAyMjcsIDI1MSwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIyNywgMTE4LCAxMywgMjcsIDE3MCwgNCwgMTU2LCAxMywgMjcsIDE3MCwgNCwgMjIzLCAyNDMsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMjAsIDIxNCwgMTMsIDI3LCAxNzAsIDQsIDc0LCAxMywgMjcsIDE3MCwgNCwgMjE2LCAyMjYsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMTQsIDE2NywgMTMsIDI3LCAxNzAsIDQsIDE0NiwgMTMsIDI3LCAxNzAsIDQsIDIxMiwgMTIyLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjA3LCA4MywgMTMsIDI3LCAxNzAsIDQsIDY2LCAxMywgMjcsIDE3MCwgNCwgMjAzLCAxNjgsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMDEsIDE0NywgMTMsIDI3LCAxNzAsIDQsIDIwMCwgMTk1LCAxMywgMjcsIDE3MCwgNCwgMjAwLCAxMjMsIAorICAgIDEzLCAyNywgMTcwLCA0LCAxOTksIDE1NywgMTMsIDQzLCA2LCA2MiwgMTMsIDQzLCA2LCAyNTAsIDEwMywgMTMsIDQzLCA2LCAKKyAgICAyNDcsIDIyMywgMTMsIDQzLCA2LCAyNDIsIDE1MywgMTMsIDQzLCA2LCA3MiwgMTMsIDQzLCA2LCAyMzgsIDUsIDEzLCA0MywgCisgICAgNiwgMjM2LCAxNTYsIDEzLCA0MywgNiwgMjM0LCAyNDcsIDEzLCA0MywgNiwgNzAsIDEzLCA0MywgNiwgMjI3LCAyNTEsIDEzLCAKKyAgICA0MywgNiwgMjI3LCAxMTgsIDEzLCA0MywgNiwgMTU2LCAxMywgNDMsIDYsIDIyMywgMjQzLCAxMywgNDMsIDYsIDIyMCwgCisgICAgMjE0LCAxMywgNDMsIDYsIDc0LCAxMywgNDMsIDYsIDIxNiwgMjI2LCAxMywgNDMsIDYsIDIxNCwgMTY3LCAxMywgNDMsIDYsIAorICAgIDE0NiwgMTMsIDQzLCA2LCAyMTIsIDEyMiwgMTMsIDQzLCA2LCAyMDcsIDgzLCAxMywgNDMsIDYsIDY2LCAxMywgNDMsIDYsIAorICAgIDIwMywgMTY4LCAxMywgNDMsIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDYsIDIwMCwgMTk1LCAxMywgNDMsIDYsIDIwMCwgMTIzLCAKKyAgICAxMywgNDMsIDYsIDE5OSwgMTU3LCAxMywgNDMsIDQsIDYyLCAxMywgNDMsIDQsIDI1MCwgMTAzLCAxMywgNDMsIDQsIDI0NywgCisgICAgMjIzLCAxMywgNDMsIDQsIDI0MiwgMTUzLCAxMywgNDMsIDQsIDcyLCAxMywgNDMsIDQsIDIzOCwgNSwgMTMsIDQzLCA0LCAKKyAgICAyMzYsIDE1NiwgMTMsIDQzLCA0LCAyMzQsIDI0NywgMTMsIDQzLCA0LCA3MCwgMTMsIDQzLCA0LCAyMjcsIDI1MSwgMTMsIAorICAgIDQzLCA0LCAyMjcsIDExOCwgMTMsIDQzLCA0LCAxNTYsIDEzLCA0MywgNCwgMjIzLCAyNDMsIDEzLCA0MywgNCwgMjIwLCAKKyAgICAyMTQsIDEzLCA0MywgNCwgNzQsIDEzLCA0MywgNCwgMjE2LCAyMjYsIDEzLCA0MywgNCwgMjE0LCAxNjcsIDEzLCA0MywgNCwgCisgICAgMTQ2LCAxMywgNDMsIDQsIDIxMiwgMTIyLCAxMywgNDMsIDQsIDIwNywgODMsIDEzLCA0MywgNCwgNjYsIDEzLCA0MywgNCwgCisgICAgMjAzLCAxNjgsIDEzLCA0MywgNCwgMjAxLCAxNDcsIDEzLCA0MywgNCwgMjAwLCAxOTUsIDEzLCA0MywgNCwgMjAwLCAxMjMsIAorICAgIDEzLCA0MywgNCwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDYsIDYyLCAxMywgNDMsIDI3LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAKKyAgICAyNywgNiwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDYsIDI0MiwgMTUzLCAxMywgNDMsIDI3LCA2LCA3MiwgMTMsIDQzLCAyNywgCisgICAgNiwgMjM4LCA1LCAxMywgNDMsIDI3LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAyNywgNiwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIAorICAgIDYsIDcwLCAxMywgNDMsIDI3LCA2LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgNiwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDYsIAorICAgIDE1NiwgMTMsIDQzLCAyNywgNiwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDYsIDIyMCwgMjE0LCAxMywgNDMsIDI3LCA2LCA3NCwgCisgICAgMTMsIDQzLCAyNywgNiwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDYsIDIxNCwgMTY3LCAxMywgNDMsIDI3LCA2LCAxNDYsIDEzLCAKKyAgICA0MywgMjcsIDYsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCA2LCAyMDcsIDgzLCAxMywgNDMsIDI3LCA2LCA2NiwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDI3LCA2LCAyMDAsIDE5NSwgMTMsIAorICAgIDQzLCAyNywgNiwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDYsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCA0LCA2MiwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDQsIDI0NywgMjIzLCAxMywgNDMsIDI3LCA0LCAyNDIsIDE1MywgMTMsIAorICAgIDQzLCAyNywgNCwgNzIsIDEzLCA0MywgMjcsIDQsIDIzOCwgNSwgMTMsIDQzLCAyNywgNCwgMjM2LCAxNTYsIDEzLCA0MywgCisgICAgMjcsIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCA0LCA3MCwgMTMsIDQzLCAyNywgNCwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIAorICAgIDQsIDIyNywgMTE4LCAxMywgNDMsIDI3LCA0LCAxNTYsIDEzLCA0MywgMjcsIDQsIDIyMywgMjQzLCAxMywgNDMsIDI3LCA0LCAKKyAgICAyMjAsIDIxNCwgMTMsIDQzLCAyNywgNCwgNzQsIDEzLCA0MywgMjcsIDQsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCA0LCAyMTQsIAorICAgIDE2NywgMTMsIDQzLCAyNywgNCwgMTQ2LCAxMywgNDMsIDI3LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgNCwgMjA3LCA4MywgCisgICAgMTMsIDQzLCAyNywgNCwgNjYsIDEzLCA0MywgMjcsIDQsIDIwMywgMTY4LCAxMywgNDMsIDI3LCA0LCAyMDEsIDE0NywgMTMsIAorICAgIDQzLCAyNywgNCwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDQsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCA0LCAxOTksIDE1NywgCisgICAgMTMsIDQzLCAzOSwgNiwgNjIsIDEzLCA0MywgMzksIDYsIDI1MCwgMTAzLCAxMywgNDMsIDM5LCA2LCAyNDcsIDIyMywgMTMsIAorICAgIDQzLCAzOSwgNiwgMjQyLCAxNTMsIDEzLCA0MywgMzksIDYsIDcyLCAxMywgNDMsIDM5LCA2LCAyMzgsIDUsIDEzLCA0MywgCisgICAgMzksIDYsIDIzNiwgMTU2LCAxMywgNDMsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAzOSwgNiwgNzAsIDEzLCA0MywgMzksIAorICAgIDYsIDIyNywgMjUxLCAxMywgNDMsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAzOSwgNiwgMTU2LCAxMywgNDMsIDM5LCA2LCAKKyAgICAyMjMsIDI0MywgMTMsIDQzLCAzOSwgNiwgMjIwLCAyMTQsIDEzLCA0MywgMzksIDYsIDc0LCAxMywgNDMsIDM5LCA2LCAyMTYsIAorICAgIDIyNiwgMTMsIDQzLCAzOSwgNiwgMjE0LCAxNjcsIDEzLCA0MywgMzksIDYsIDE0NiwgMTMsIDQzLCAzOSwgNiwgMjEyLCAKKyAgICAxMjIsIDEzLCA0MywgMzksIDYsIDIwNywgODMsIDEzLCA0MywgMzksIDYsIDY2LCAxMywgNDMsIDM5LCA2LCAyMDMsIDE2OCwgCisgICAgMTMsIDQzLCAzOSwgNiwgMjAxLCAxNDcsIDEzLCA0MywgMzksIDYsIDIwMCwgMTk1LCAxMywgNDMsIDM5LCA2LCAyMDAsIAorICAgIDEyMywgMTMsIDQzLCAzOSwgNiwgMTk5LCAxNTcsIDEzLCA0MywgMzksIDQsIDYyLCAxMywgNDMsIDM5LCA0LCAyNTAsIDEwMywgCisgICAgMTMsIDQzLCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMzksIDQsIDI0MiwgMTUzLCAxMywgNDMsIDM5LCA0LCA3MiwgMTMsIAorICAgIDQzLCAzOSwgNCwgMjM4LCA1LCAxMywgNDMsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDQzLCAzOSwgNCwgMjM0LCAyNDcsIDEzLCAKKyAgICA0MywgMzksIDQsIDcwLCAxMywgNDMsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDQzLCAzOSwgNCwgMjI3LCAxMTgsIDEzLCA0MywgCisgICAgMzksIDQsIDE1NiwgMTMsIDQzLCAzOSwgNCwgMjIzLCAyNDMsIDEzLCA0MywgMzksIDQsIDIyMCwgMjE0LCAxMywgNDMsIDM5LCAKKyAgICA0LCA3NCwgMTMsIDQzLCAzOSwgNCwgMjE2LCAyMjYsIDEzLCA0MywgMzksIDQsIDIxNCwgMTY3LCAxMywgNDMsIDM5LCA0LCAKKyAgICAxNDYsIDEzLCA0MywgMzksIDQsIDIxMiwgMTIyLCAxMywgNDMsIDM5LCA0LCAyMDcsIDgzLCAxMywgNDMsIDM5LCA0LCA2NiwgCisgICAgMTMsIDQzLCAzOSwgNCwgMjAzLCAxNjgsIDEzLCA0MywgMzksIDQsIDIwMSwgMTQ3LCAxMywgNDMsIDM5LCA0LCAyMDAsIAorICAgIDE5NSwgMTMsIDQzLCAzOSwgNCwgMjAwLCAxMjMsIDEzLCA0MywgMzksIDQsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgNjIsIDEzLCA0MywgMjcsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgMzksIDYsIDI0NywgMjIzLCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjQyLCAxNTMsIDEzLCA0MywgMjcsIDM5LCA2LCA3MiwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgNSwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDIzNiwgMTU2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICA3MCwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAxNTYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgMzksIDYsIDIyMCwgMjE0LCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgNzQsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgMzksIDYsIDIxNCwgCisgICAgMTY3LCAxMywgNDMsIDI3LCAzOSwgNiwgMTQ2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA2LCAyMDcsIDgzLCAxMywgNDMsIDI3LCAzOSwgNiwgNjYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDMsIDE2OCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDAsIAorICAgIDEyMywgMTMsIDQzLCAyNywgMzksIDYsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCAzOSwgNCwgNjIsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgMzksIDQsIDI0NywgMjIzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQyLCAxNTMsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCA3MiwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgNSwgMTMsIDQzLCAyNywgMzksIDQsIDIzNiwgCisgICAgMTU2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDM5LCA0LCA3MCwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAzOSwgNCwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDM5LCA0LCAxNTYsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgMzksIDQsIDIyMCwgMjE0LCAxMywgNDMsIDI3LCAzOSwgNCwgNzQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgMzksIDQsIDIxNCwgMTY3LCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMTQ2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDcsIDgzLCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgNjYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgMzksIDQsIDIwMSwgMTQ3LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDE5OSwgMTU3LCAxMywgMjIxLCA5MywgNiwgNjIsIDEzLCAyMjEsIDkzLCA2LCAyNTAsIDEwMywgMTMsIDIyMSwgOTMsIAorICAgIDYsIDI0NywgMjIzLCAxMywgMjIxLCA5MywgNiwgMjQyLCAxNTMsIDEzLCAyMjEsIDkzLCA2LCA3MiwgMTMsIDIyMSwgOTMsIAorICAgIDYsIDIzOCwgNSwgMTMsIDIyMSwgOTMsIDYsIDIzNiwgMTU2LCAxMywgMjIxLCA5MywgNiwgMjM0LCAyNDcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA3MCwgMTMsIDIyMSwgOTMsIDYsIDIyNywgMjUxLCAxMywgMjIxLCA5MywgNiwgMjI3LCAxMTgsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAxNTYsIDEzLCAyMjEsIDkzLCA2LCAyMjMsIDI0MywgMTMsIDIyMSwgOTMsIDYsIDIyMCwgMjE0LCAxMywgMjIxLCAKKyAgICA5MywgNiwgNzQsIDEzLCAyMjEsIDkzLCA2LCAyMTYsIDIyNiwgMTMsIDIyMSwgOTMsIDYsIDIxNCwgMTY3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMTQ2LCAxMywgMjIxLCA5MywgNiwgMjEyLCAxMjIsIDEzLCAyMjEsIDkzLCA2LCAyMDcsIDgzLCAxMywgMjIxLCAKKyAgICA5MywgNiwgNjYsIDEzLCAyMjEsIDkzLCA2LCAyMDMsIDE2OCwgMTMsIDIyMSwgOTMsIDYsIDIwMSwgMTQ3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMjAwLCAxOTUsIDEzLCAyMjEsIDkzLCA2LCAyMDAsIDEyMywgMTMsIDIyMSwgOTMsIDYsIDE5OSwgMTU3LCAxMywgCisgICAgMjIxLCA5MywgNCwgNjIsIDEzLCAyMjEsIDkzLCA0LCAyNTAsIDEwMywgMTMsIDIyMSwgOTMsIDQsIDI0NywgMjIzLCAxMywgCisgICAgMjIxLCA5MywgNCwgMjQyLCAxNTMsIDEzLCAyMjEsIDkzLCA0LCA3MiwgMTMsIDIyMSwgOTMsIDQsIDIzOCwgNSwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIzNiwgMTU2LCAxMywgMjIxLCA5MywgNCwgMjM0LCAyNDcsIDEzLCAyMjEsIDkzLCA0LCA3MCwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIyNywgMjUxLCAxMywgMjIxLCA5MywgNCwgMjI3LCAxMTgsIDEzLCAyMjEsIDkzLCA0LCAxNTYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMjMsIDI0MywgMTMsIDIyMSwgOTMsIDQsIDIyMCwgMjE0LCAxMywgMjIxLCA5MywgNCwgNzQsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMTYsIDIyNiwgMTMsIDIyMSwgOTMsIDQsIDIxNCwgMTY3LCAxMywgMjIxLCA5MywgNCwgMTQ2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjEyLCAxMjIsIDEzLCAyMjEsIDkzLCA0LCAyMDcsIDgzLCAxMywgMjIxLCA5MywgNCwgNjYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMDMsIDE2OCwgMTMsIDIyMSwgOTMsIDQsIDIwMSwgMTQ3LCAxMywgMjIxLCA5MywgNCwgMjAwLCAxOTUsIAorICAgIDEzLCAyMjEsIDkzLCA0LCAyMDAsIDEyMywgMTMsIDIyMSwgOTMsIDQsIDE5OSwgMTU3LCAxMywgMzksIDQsIDI0MCwgMTgxLCAKKyAgICA3MCwgMTMsIDM5LCA0LCAyNDAsIDE4MSwgMjI3LCAyNTEsIDEzLCAyNywgNiwgMjUxLCAxMTIsIDEzLCAyNywgNiwgMjQ4LCAKKyAgICAyMDgsIDEzLCAyNywgNiwgMjM2LCA2MCwgMTMsIDI3LCA2LCAyNDEsIDEzNiwgMTMsIDI3LCA2LCAyMzgsIDEyNCwgMTMsIAorICAgIDI3LCA2LCAxOTksIDgwLCAxMywgMjcsIDYsIDIzOCwgNzksIDEzLCAyNywgNiwgMjA2LCA4OCwgMTMsIDI3LCA2LCAyMjgsIAorICAgIDQxLCAxMywgMjcsIDYsIDIyNywgNTQsIDEzLCAyNywgNiwgMjI1LCA4NywgMTMsIDI3LCA2LCAyMjEsIDQxLCAxMywgMjcsIAorICAgIDYsIDIxOCwgMTMzLCAxMywgMjcsIDYsIDIwMCwgMTY5LCAxMywgMjcsIDYsIDIxNywgODEsIDEzLCAyNywgNiwgMjE1LCAKKyAgICAyMDQsIDEzLCAyNywgNiwgMjEzLCA5MCwgMTMsIDI3LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDI3LCA2LCAyMDksIDE2MywgMTMsIAorICAgIDI3LCA2LCAyMDYsIDIyMSwgMTMsIDI3LCA2LCAyMDMsIDIyMCwgMTMsIDI3LCA2LCAyMTUsIDIyOSwgMTMsIDI3LCA2LCAKKyAgICAyNDYsIDIzNiwgMTMsIDI3LCA2LCAyMTQsIDIzNSwgMTMsIDI3LCA2LCAyMTcsIDgzLCAxMywgMjcsIDIyMCwgMTUyLCAxMywgCisgICAgMjcsIDQsIDI1MSwgMTEyLCAxMywgMjcsIDQsIDI0OCwgMjA4LCAxMywgMjcsIDQsIDIzNiwgNjAsIDEzLCAyNywgNCwgMjQxLCAKKyAgICAxMzYsIDEzLCAyNywgNCwgMjM4LCAxMjQsIDEzLCAyNywgNCwgMTk5LCA4MCwgMTMsIDI3LCA0LCAyMzgsIDc5LCAxMywgMjcsIAorICAgIDQsIDIwNiwgODgsIDEzLCAyNywgNCwgMjI4LCA0MSwgMTMsIDI3LCA0LCAyMjcsIDU0LCAxMywgMjcsIDQsIDIyNSwgODcsIAorICAgIDEzLCAyNywgNCwgMjIxLCA0MSwgMTMsIDI3LCA0LCAyMTgsIDEzMywgMTMsIDI3LCA0LCAyMDAsIDE2OSwgMTMsIDI3LCA0LCAKKyAgICAyMTcsIDgxLCAxMywgMjcsIDQsIDIxNSwgMjA0LCAxMywgMjcsIDQsIDIxMywgOTAsIDEzLCAyNywgNCwgNDcsIDIwOSwgCisgICAgMTYzLCAxMywgMjcsIDQsIDIwOSwgMTYzLCAxMywgMjcsIDQsIDIwNiwgMjIxLCAxMywgMjcsIDQsIDIwMywgMjIwLCAxMywgCisgICAgMjcsIDQsIDIxNSwgMjI5LCAxMywgMjcsIDQsIDI0NiwgMjM2LCAxMywgMjcsIDQsIDIxNCwgMjM1LCAxMywgMjcsIDQsIAorICAgIDIxNywgODMsIDEzLCAyNywgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCAyNywgMjM4LCAxMjUsIDk5LCAxMywgMjcsIDIwNiwgCisgICAgODksIDk5LCAxMywgMjcsIDIyNywgNTUsIDk5LCAxMywgMjcsIDIxNSwgMjMwLCA5OSwgMTMsIDI3LCAyMTMsIDkxLCA5OSwgCisgICAgMTMsIDI3LCAyMTUsIDIwNSwgOTksIDEzLCAzOSwgNiwgMjUxLCAxMTIsIDEzLCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCAzOSwgCisgICAgNiwgMjM2LCA2MCwgMTMsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDM5LCA2LCAxOTksIDgwLCAKKyAgICAxMywgMzksIDYsIDIzOCwgNzksIDEzLCAzOSwgNiwgMjA2LCA4OCwgMTMsIDM5LCA2LCAyMjgsIDQxLCAxMywgMzksIDYsIAorICAgIDIyNywgNTQsIDEzLCAzOSwgNiwgMjI1LCA4NywgMTMsIDM5LCA2LCAyMjEsIDQxLCAxMywgMzksIDYsIDIxOCwgMTMzLCAxMywgCisgICAgMzksIDYsIDIwMCwgMTY5LCAxMywgMzksIDYsIDIxNywgODEsIDEzLCAzOSwgNiwgMjE1LCAyMDQsIDEzLCAzOSwgNiwgMjEzLCAKKyAgICA5MCwgMTMsIDM5LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDM5LCA2LCAyMDksIDE2MywgMTMsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIAorICAgIDM5LCA2LCAyMDMsIDIyMCwgMTMsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDM5LCA2LCAKKyAgICAyMTQsIDIzNSwgMTMsIDM5LCA2LCAyMTcsIDgzLCAxMywgMzksIDIyMCwgMTUyLCAxMywgMzksIDQsIDI1MSwgMTEyLCAxMywgCisgICAgMzksIDQsIDI0OCwgMjA4LCAxMywgMzksIDQsIDIzNiwgNjAsIDEzLCAzOSwgNCwgMjQxLCAxMzYsIDEzLCAzOSwgNCwgMjM4LCAKKyAgICAxMjQsIDEzLCAzOSwgNCwgMTk5LCA4MCwgMTMsIDM5LCA0LCAyMzgsIDc5LCAxMywgMzksIDQsIDIwNiwgODgsIDEzLCAzOSwgCisgICAgNCwgMjI4LCA0MSwgMTMsIDM5LCA0LCAyMjcsIDU0LCAxMywgMzksIDQsIDIyNSwgODcsIDEzLCAzOSwgNCwgMjIxLCA0MSwgCisgICAgMTMsIDM5LCA0LCAyMTgsIDEzMywgMTMsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDM5LCA0LCAyMTcsIDgxLCAxMywgMzksIDQsIAorICAgIDIxNSwgMjA0LCAxMywgMzksIDQsIDIxMywgOTAsIDEzLCAzOSwgNCwgNDcsIDIwOSwgMTYzLCAxMywgMzksIDQsIDIwOSwgCisgICAgMTYzLCAxMywgMzksIDQsIDIwNiwgMjIxLCAxMywgMzksIDQsIDIwMywgMjIwLCAxMywgMzksIDQsIDIxNSwgMjI5LCAxMywgCisgICAgMzksIDQsIDI0NiwgMjM2LCAxMywgMzksIDQsIDIxNCwgMjM1LCAxMywgMzksIDQsIDIxNywgODMsIDEzLCAzOSwgMjE2LCAKKyAgICAxMDgsIDI0MSwgNDgsIDEzLCAzOSwgMjM4LCAxMjUsIDk5LCAxMywgMzksIDIwNiwgODksIDk5LCAxMywgMzksIDIyNywgNTUsIAorICAgIDk5LCAxMywgMzksIDIxNSwgMjMwLCA5OSwgMTMsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCAKKyAgICAyNywgMzksIDYsIDI1MSwgMTEyLCAxMywgMjcsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDI3LCAzOSwgNiwgMjM2LCA2MCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjQxLCAxMzYsIDEzLCAyNywgMzksIDYsIDIzOCwgMTI0LCAxMywgMjcsIDM5LCA2LCAxOTksIDgwLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMzgsIDc5LCAxMywgMjcsIDM5LCA2LCAyMDYsIDg4LCAxMywgMjcsIDM5LCA2LCAyMjgsIDQxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMjcsIDU0LCAxMywgMjcsIDM5LCA2LCAyMjUsIDg3LCAxMywgMjcsIDM5LCA2LCAyMjEsIDQxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTgsIDEzMywgMTMsIDI3LCAzOSwgNiwgMjAwLCAxNjksIDEzLCAyNywgMzksIDYsIDIxNywgODEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxNSwgMjA0LCAxMywgMjcsIDM5LCA2LCAyMTMsIDkwLCAxMywgMjcsIDM5LCA2LCAyMDYsIDg5LCA5OSwgCisgICAgMTMsIDI3LCAzOSwgNiwgMjA5LCAxNjMsIDEzLCAyNywgMzksIDYsIDIwNiwgMjIxLCAxMywgMjcsIDM5LCA2LCAyMDMsIAorICAgIDIyMCwgMTMsIDI3LCAzOSwgNiwgMjE1LCAyMjksIDEzLCAyNywgMzksIDYsIDI0NiwgMjM2LCAxMywgMjcsIDM5LCA2LCAKKyAgICAyMTQsIDIzNSwgMTMsIDI3LCAzOSwgNiwgMjE3LCA4MywgMTMsIDI3LCAzOSwgMjIwLCAxNTIsIDEzLCAyNywgMzksIDQsIAorICAgIDI1MSwgMTEyLCAxMywgMjcsIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDI3LCAzOSwgNCwgMjM2LCA2MCwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjQxLCAxMzYsIDEzLCAyNywgMzksIDQsIDIzOCwgMTI0LCAxMywgMjcsIDM5LCA0LCAxOTksIDgwLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMzgsIDc5LCAxMywgMjcsIDM5LCA0LCAyMDYsIDg4LCAxMywgMjcsIDM5LCA0LCAyMjgsIDQxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMjcsIDU0LCAxMywgMjcsIDM5LCA0LCAyMjUsIDg3LCAxMywgMjcsIDM5LCA0LCAyMjEsIDQxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMTgsIDEzMywgMTMsIDI3LCAzOSwgNCwgMjAwLCAxNjksIDEzLCAyNywgMzksIDQsIDIxNywgODEsIDEzLCAyNywgMzksIDQsIAorICAgIDIxNSwgMjA0LCAxMywgMjcsIDM5LCA0LCAyMTMsIDkwLCAxMywgMjcsIDM5LCA0LCA0NywgMjA5LCAxNjMsIDEzLCAyNywgCisgICAgMzksIDQsIDIwOSwgMTYzLCAxMywgMjcsIDM5LCA0LCAyMDYsIDIyMSwgMTMsIDI3LCAzOSwgNCwgMjAzLCAyMjAsIDEzLCAKKyAgICAyNywgMzksIDQsIDIxNSwgMjI5LCAxMywgMjcsIDM5LCA0LCAyNDYsIDIzNiwgMTMsIDI3LCAzOSwgNCwgMjE0LCAyMzUsIAorICAgIDEzLCAyNywgMzksIDQsIDIxNywgODMsIDEzLCAyNywgMzksIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgMjcsIDM5LCAyMzgsIAorICAgIDEyNSwgOTksIDEzLCAyNywgMzksIDIwNiwgODksIDk5LCAxMywgMjcsIDM5LCAyMjcsIDU1LCA5OSwgMTMsIDI3LCAzOSwgCisgICAgMjE1LCAyMzAsIDk5LCAxMywgMjcsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDI3LCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgNDMsIAorICAgIDI3LCA2LCAyNTEsIDExMiwgMTMsIDQzLCAyNywgNiwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDYsIDIzNiwgNjAsIDEzLCA0MywgCisgICAgMjcsIDYsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCA2LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgNiwgMTk5LCA4MCwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjM4LCA3OSwgMTMsIDQzLCAyNywgNiwgMjA2LCA4OCwgMTMsIDQzLCAyNywgNiwgMjI4LCA0MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjI3LCA1NCwgMTMsIDQzLCAyNywgNiwgMjI1LCA4NywgMTMsIDQzLCAyNywgNiwgMjIxLCA0MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIDYsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCA2LCAyMTcsIDgxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMTUsIDIwNCwgMTMsIDQzLCAyNywgNiwgMjEzLCA5MCwgMTMsIDQzLCAyNywgNiwgMjA2LCA4OSwgOTksIDEzLCAKKyAgICA0MywgMjcsIDYsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA2LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgNiwgMjAzLCAyMjAsIAorICAgIDEzLCA0MywgMjcsIDYsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCA2LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgNiwgMjE0LCAKKyAgICAyMzUsIDEzLCA0MywgMjcsIDYsIDIxNywgODMsIDEzLCA0MywgMjcsIDIyMCwgMTUyLCAxMywgNDMsIDI3LCA0LCAyNTEsIAorICAgIDExMiwgMTMsIDQzLCAyNywgNCwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDQsIDIzNiwgNjAsIDEzLCA0MywgMjcsIDQsIDI0MSwgCisgICAgMTM2LCAxMywgNDMsIDI3LCA0LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgNCwgMTk5LCA4MCwgMTMsIDQzLCAyNywgNCwgMjM4LCAKKyAgICA3OSwgMTMsIDQzLCAyNywgNCwgMjA2LCA4OCwgMTMsIDQzLCAyNywgNCwgMjI4LCA0MSwgMTMsIDQzLCAyNywgNCwgMjI3LCAKKyAgICA1NCwgMTMsIDQzLCAyNywgNCwgMjI1LCA4NywgMTMsIDQzLCAyNywgNCwgMjIxLCA0MSwgMTMsIDQzLCAyNywgNCwgMjE4LCAKKyAgICAxMzMsIDEzLCA0MywgMjcsIDQsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCA0LCAyMTcsIDgxLCAxMywgNDMsIDI3LCA0LCAyMTUsIAorICAgIDIwNCwgMTMsIDQzLCAyNywgNCwgMjEzLCA5MCwgMTMsIDQzLCAyNywgNCwgNDcsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA0LCAKKyAgICAyMDksIDE2MywgMTMsIDQzLCAyNywgNCwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDQsIDIwMywgMjIwLCAxMywgNDMsIDI3LCAKKyAgICA0LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgNCwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDQsIDIxNCwgMjM1LCAxMywgNDMsIAorICAgIDI3LCA0LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDQzLCAyNywgMjM4LCAxMjUsIDk5LCAKKyAgICAxMywgNDMsIDI3LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgMjI3LCA1NSwgOTksIDEzLCA0MywgMjcsIDIxNSwgMjMwLCAKKyAgICA5OSwgMTMsIDQzLCAyNywgMjEzLCA5MSwgOTksIDEzLCA0MywgMjcsIDIxNSwgMjA1LCA5OSwgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDI1MSwgMTEyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzYsIDYwLCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDE5OSwgODAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDc5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCA4OCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDU0LCAxMywgNDMsIDI3LCAzOSwgNiwgMjI1LCAKKyAgICA4NywgMTMsIDQzLCAyNywgMzksIDYsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE3LCA4MSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNSwgMjA0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNiwgMjEzLCA5MCwgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgMzksIDYsIDIwMywgCisgICAgMjIwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIxNCwgMjM1LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE3LCA4MywgMTMsIDQzLCAyNywgMzksIDIyMCwgCisgICAgMTUyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDIzNiwgNjAsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgCisgICAgMTI0LCAxMywgNDMsIDI3LCAzOSwgNCwgMTk5LCA4MCwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgNzksIDEzLCA0MywgMjcsIAorICAgIDM5LCA0LCAyMDYsIDg4LCAxMywgNDMsIDI3LCAzOSwgNCwgMjI4LCA0MSwgMTMsIDQzLCAyNywgMzksIDQsIDIyNywgNTQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMjUsIDg3LCAxMywgNDMsIDI3LCAzOSwgNCwgMjIxLCA0MSwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDM5LCA0LCAyMTcsIDgxLCAxMywgCisgICAgNDMsIDI3LCAzOSwgNCwgMjE1LCAyMDQsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTMsIDkwLCAxMywgNDMsIDI3LCAzOSwgNCwgCisgICAgNDcsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDYsIDIyMSwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIwMywgMjIwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgMzksIDQsIDIxNCwgMjM1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE3LCA4MywgMTMsIAorICAgIDQzLCAyNywgMzksIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgNDMsIDI3LCAzOSwgMjM4LCAxMjUsIDk5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMjcsIDU1LCA5OSwgMTMsIDQzLCAyNywgMzksIDIxNSwgMjMwLCAKKyAgICA5OSwgMTMsIDQzLCAyNywgMzksIDIxMywgOTEsIDk5LCAxMywgNDMsIDI3LCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgMjcsIDYsIAorICAgIDI0MSwgNDIsIDEzLCAyNywgNCwgMjQxLCA0MiwgMTMsIDI3LCAxNywgMTk5LCA4MSwgMTMsIDI3LCAxNywgMTAyLCAxMywgCisgICAgMjcsIDE3LCAxMDUsIDEzLCAyNywgMTcsIDE0NywgMTMsIDI3LCAxNywgMTQ5LCAxMywgMjcsIDE3LCAxNjQsIDEzLCAyNywgCisgICAgMTcsIDE4NywgMTMsIDI3LCAxNywgMjEwLCAxMzUsIDEzLCAyNywgMTcsIDE5MiwgMTMsIDI3LCAxNywgMjE5LCAxMTMsIDEzLCAKKyAgICAxNzUsIDE3LCAxOTksIDgxLCAxMywgMTc1LCAxNywgMTAyLCAxMywgMTc1LCAxNywgMTA1LCAxMywgMTc1LCAxNywgMTQ3LCAKKyAgICAxMywgMTc1LCAxNywgMTQ5LCAxMywgMTc1LCAxNywgMTY0LCAxMywgMTc1LCAxNywgMTg3LCAxMywgMTc1LCAxNywgMjEwLCAKKyAgICAxMzUsIDEzLCAxNzUsIDE3LCAxOTIsIDEzLCAxNzUsIDE3LCAyMTksIDExMywgMTMsIDQzLCAxNywgMTk5LCA4MSwgMTMsIAorICAgIDQzLCAxNywgMTAyLCAxMywgNDMsIDE3LCAxMDUsIDEzLCA0MywgMTcsIDE0NywgMTMsIDQzLCAxNywgMTQ5LCAxMywgNDMsIAorICAgIDE3LCAxNjQsIDEzLCA0MywgMTcsIDE4NywgMTMsIDQzLCAxNywgMjEwLCAxMzUsIDEzLCA0MywgMTcsIDE5MiwgMTMsIDQzLCAKKyAgICAxNywgMjE5LCAxMTMsIDEzLCA0MywgMjcsIDE3LCAxOTksIDgxLCAxMywgNDMsIDI3LCAxNywgMTAyLCAxMywgNDMsIDI3LCAKKyAgICAxNywgMTA1LCAxMywgNDMsIDI3LCAxNywgMTQ3LCAxMywgNDMsIDI3LCAxNywgMTQ5LCAxMywgNDMsIDI3LCAxNywgMTY0LCAKKyAgICAxMywgNDMsIDI3LCAxNywgMTg3LCAxMywgNDMsIDI3LCAxNywgMjEwLCAxMzUsIDEzLCA0MywgMjcsIDE3LCAxOTIsIDEzLCAKKyAgICA0MywgMjcsIDE3LCAyMTksIDExMywgMTMsIDIyMSwgOTMsIDE3LCAxOTksIDgxLCAxMywgMjIxLCA5MywgMTcsIDEwMiwgMTMsIAorICAgIDIyMSwgOTMsIDE3LCAxMDUsIDEzLCAyMjEsIDkzLCAxNywgMTQ3LCAxMywgMjIxLCA5MywgMTcsIDE0OSwgMTMsIDIyMSwgCisgICAgOTMsIDE3LCAxNjQsIDEzLCAyMjEsIDkzLCAxNywgMTg3LCAxMywgMjIxLCA5MywgMTcsIDIxMCwgMTM1LCAxMywgMjIxLCAKKyAgICA5MywgMTcsIDE5MiwgMTMsIDIyMSwgOTMsIDE3LCAyMTksIDExMywgMjMsIDEzMSwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5NiwgCisgICAgMjI4LCAxMDMsIDIzLCAyMzQsIDE5MiwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4MSwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4NSwgCisgICAgMjI4LCAxMDMsIDIzLCAyMzQsIDE5OCwgMjI4LCAxMDMsIDIzLCAxMzEsIDEyNCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE5NiwgCisgICAgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAyMTMsIAorICAgIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMTI0LCAyNDIsIDIwMCwgMjMsIDEzMSwgMTI0LCAyMzQsIDUwLCAyMywgMTMxLCAKKyAgICAxMjQsIDIzNCwgNTEsIDIyNCwgNTksIDIzLCAyMzQsIDE5NiwgMTI0LCAyMzQsIDUyLCAyMywgMTMxLCAxMjQsIDIyMSwgCisgICAgMjA0LCAyMywgMjM0LCAxOTYsIDEyNCwgMjIxLCAyMDQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxMDEsIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgMTMxLCAxMjQsIDEwMSwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMTUsIDEwMSwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAyMzQsIDUxLCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1NywgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU4LCAxMDEsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjQyLCAyMDAsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDEwMSwgMjQyLCAyMzEsIDIzLCAyMzQsIAorICAgIDE5NiwgMTI0LCAxMDEsIDI0MiwgMjMxLCAyMywgMTMxLCAxMDEsIDI0OCwgMjIwLCAxMTksIDIyOCwgMTAzLCAyMywgMTMxLCAKKyAgICAxMjQsIDI0OCwgMjIwLCAxMTksIDIyMSwgMjA0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjA2LCAzNCwgMjMsIDIzNCwgMTk2LCAKKyAgICAxMjQsIDEwMSwgMjA2LCAzNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIwOCwgNjgsIDE1MywgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTAxLCAyNDgsIDIyMCwgMTUzLCAyMDgsIDY3LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDgsIDIxOSwgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDIzNCwgNTEsIDIwOCwgMjAyLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDExNSwgMTAxLCAKKyAgICAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDExNSwgMTAxLCAyMzQsIDUxLCAxNTMsIDI0MywgNTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMjM0LCA1MSwgMTAxLCAxMTUsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxMTUsIAorICAgIDIwOCwgMjAyLCAxNTMsIDIzNiwgMjMzLCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDIsIDIwMCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDE1MywgMjQ2LCAxNTQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDIzMywgMTg1LCAyMywgMTMxLCAxMjQsIDEwMSwgCisgICAgMTUzLCAyMzQsIDUwLCAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMjQsIDEwMSwgMjA4LCA2NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc1LCAKKyAgICAyNDMsIDU3LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEwMSwgMTUzLCAyMzMsIDE4NiwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDIzMywgMTg2LCAxMDEsIDIwMywgCisgICAgMjI4LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MiwgMjMyLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMzYsIDIzMywgCisgICAgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDI0MiwgMjAxLCAxNTMsIDIzNiwgMjMzLCAyMywgMTMxLCAxMDEsIDE1MywgCisgICAgMjQyLCAyMDEsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDIwMSwgMTAxLCAyMDMsIDIyOCwgMjMsIAorICAgIDEzMSwgMTAxLCAxNTMsIDQ0LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDE1MywgNDQsIDEyNCwgMjM0LCA1MCwgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDI1MSwgNjksIDIxNiwgMjU1LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgCisgICAgMjUxLCA2OSwgMjI4LCAxMTgsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCA0NCwgMTAxLCAyMDMsIDIyOCwgCisgICAgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQzLCA1OCwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjUxLCAKKyAgICA2OSwgMjE2LCAyNTQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI1MSwgNjgsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIAorICAgIDY5LCAyMTYsIDI1NSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgNjksIDIxNiwgMjU1LCAxMjQsIAorICAgIDI0MiwgMjMxLCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCA2OSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIAorICAgIDIzMywgMTg2LCAxMDEsIDIzNCwgNTAsIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODEsIDIzLCAyMzQsIDE4NywgCisgICAgMjM2LCAyMjksIDIzNywgODIsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgyLCAyMzQsIDUwLCAKKyAgICAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU3LCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIAorICAgIDgyLCAyNDMsIDU4LCAyMDgsIDIwOSwgMjMsIDIzNCwgMTk0LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1NywgMjMsIDEzMSwgCisgICAgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTgsIDI0OCwgMjE5LCAyMywgMjM0LCAxODUsIDIzNiwgMjI5LCAyMzcsIDgyLCAKKyAgICAyNDMsIDU3LCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNCwgCisgICAgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIAorICAgIDIwMiwgMjM2LCAyMjksIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIAorICAgIDIwMiwgMjM2LCAyMjksIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyNDgsIAorICAgIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDI0OCwgMjE5LCAyMywgCisgICAgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxOTIsIDIzNywgCisgICAgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxOTIsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMTcsIDUzLCAKKyAgICAyMywgMjM0LCAxODUsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMTcsIDUzLCAyMywgMjM0LCAxODEsIDIzNywgNjEsIAorICAgIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUwLCAyMywgCisgICAgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAKKyAgICAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUxLCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgCisgICAgMTg2LCAyMywgMjM0LCAxODcsIDI0OCwgMjA2LCAyMTYsIDE3NywgMjM3LCAxODEsIDIzLCAyMzQsIDE4NywgMjM0LCAxMTcsIAorICAgIDIzLCAyMzQsIDE4NywgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMTUzLCAyMDksIDE3NCwgMjMsIAorICAgIDIzNCwgMTg3LCAxNTMsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE4NywgMjA4LCAKKyAgICAyMTAsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjQ3LCA1NSwgMjMsIDIzNCwgMTg3LCAKKyAgICAyMDgsIDIxMCwgMjQ3LCA1NiwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjQ3LCA1NiwgMTUzLCAKKyAgICAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTMsIDIzLCAKKyAgICAyMzQsIDE5NCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTk0LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTk0LCAKKyAgICAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxODMsIDI0MiwgMTk3LCAyMywgMjM0LCAxODIsIDIzLCAyMzQsIDE5MiwgMjE3LCAKKyAgICA1MywgMjMsIDIzNCwgMTkxLCAyMywgMjM0LCAxOTIsIDE3NiwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTkyLCAxNTMsIAorICAgIDIwOSwgMTc0LCAyMywgMjM0LCAxOTIsIDE3NiwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE5MiwgMjE4LCAyNDIsIAorICAgIDIwNiwgMzQsIDIzLCAyMzQsIDE5MiwgMTc2LCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxOTIsIDE1MywgMjM2LCAyMzMsIAorICAgIDIzLCAyMzQsIDE5MCwgMjE3LCA1MywgMjMsIDIzNCwgMTg5LCAyMywgMjM0LCAxOTUsIDIzLCAyMzQsIDE4MCwgMjMsIDIzNCwgCisgICAgMTgxLCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODEsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxODEsIDE1MywgCisgICAgMjM2LCAyMzMsIDIzLCAyMzQsIDE4NSwgMjE3LCA1MywgMjMsIDIzNCwgMTg1LCAxNzYsIDE1MywgMjM2LCAyMzMsIDIzLCAKKyAgICAyMzQsIDE4NCwgMjMsIDIzNCwgMTg1LCAyMDksIDUzLCAyMywgMjM0LCAxODUsIDE3NiwgMTUzLCAyMDksIDE3NCwgMjMsIAorICAgIDIzNCwgMTg1LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODUsIDE3NiwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIAorICAgIDE4NSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE4NSwgMTUzLCAyMDksIDE3NSwgMjA1LCAxNDAsIDIyOCwgMTAzLCAKKyAgICAyMywgMjM0LCAxODUsIDE1MywgMjQ4LCAyMDYsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgCisgICAgMjEzLCAyNiwgMjMsIDIzNCwgMTk4LCAxMjQsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTg1LCAyMjQsIDE0NywgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDEwMSwgMjEzLCAyNywgMjQzLCA1NywgCisgICAgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgMjEzLCAyNywgMjQzLCA1NywgMjMsIDEzMSwgMjI0LCAxNDgsIDIzOSwgMTY3LCAKKyAgICAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTMsIDIyLCAyMDgsIDY3LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTMsIAorICAgIDIyLCAyNDIsIDE4NywgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjE3LCA3LCAyNDYsIDE1NCwgMjMsIDEzMSwgMjI0LCAKKyAgICAxNDgsIDIwMywgMjI4LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE5NiwgCisgICAgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxODEsIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTk4LCAyMjQsIAorICAgIDE0OCwgMjAzLCAyMjgsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMjI0LCAxNDgsIAorICAgIDI0OCwgMjE5LCAyMywgMTMxLCAyMjQsIDE0OCwgMjA1LCAxNDEsIDIwNiwgMzQsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMDYsIAorICAgIDM0LCAyMywgMjM0LCAxODUsIDIyNCwgMTQ4LCAyMDYsIDM0LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI0LCAyMDYsIDM0LCAyMywgCisgICAgMjM0LCAxODUsIDIyNCwgMTQ4LCAxMjQsIDIwNiwgMzQsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDEyNCwgMTUzLCAxMjQsIAorICAgIDE1MywgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDEyNCwgMTUzLCAxMjQsIDIwNiwgMzQsIDIzLCAxMzEsIAorICAgIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTk2LCAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4NSwgMjI0LCAKKyAgICAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDEzMSwgMTI0LCAxMDEsIDIyNCwgCisgICAgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgMjI0LCAxNDcsIAorICAgIDIzLCAyMzQsIDE4NSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk4LCAxMjQsIDEwMSwgMjI0LCAxNDcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDIsIDIzNSwgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDI0MiwgMjM1LCAyMjQsIDE0NywgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMjM5LCAxNjcsIDIzLCAyMzQsIDE4NSwgMjEzLCAyNywgMTI3LCAxMjQsIDE1MywgMjMzLCAxODcsIAorICAgIDIyMSwgMjA0LCAyMywgMjM0LCAxOTgsIDIxMywgMjcsIDEyNywgMTAxLCAxNTMsIDEyNCwgMjQyLCAyMzQsIDIzLCAxMzEsIAorICAgIDIxMywgMjcsIDIwMywgMjI4LCAyMywgMTMxLCAyMTMsIDI3LCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4MSwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDcsIDIzLCAyMzQsIDE5OCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAxMzEsIDIxMywgMjcsIDIyMSwgMjA0LCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAxMDEsIDI0MywgNTcsIDIzLCAxMzEsIDIxMywgMjcsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDIyOCwgMTAzLCAyMywgMTMxLCAyMTMsIDI3LCAyMDYsIDM0LCAyMywgMjM0LCAxODMsIDIxMywgMjcsIAorICAgIDIwNiwgMzQsIDIzLCAxMzEsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTkwLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTcsIDc4LCAyMywgMjM0LCAxODMsIAorICAgIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgMjM0LCAxODMsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIAorICAgIDIyOCwgMTE3LCAyMywgMjM0LCAxODMsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIwMywgMjUyLCAyMywgMjM0LCAxOTIsIAorICAgIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgCisgICAgMTk4LCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAxMjQsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ3LCAyMywgMTMxLCAxMDEsIDIzOSwgMTY3LCAyMywgMjM0LCAxODUsIDIyMSwgMjA0LCAyMywgMTMxLCAxMDEsIDIwMywgCisgICAgMjI4LCAyMywgMjM0LCAxOTYsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAKKyAgICAxMzEsIDEwMSwgMTE1LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODMsIDEwMSwgMjA2LCAzNCwgMjMsIDEzMSwgMTAxLCAKKyAgICAxNTMsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMDEsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAKKyAgICAyMywgMjM0LCAxOTYsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MCwgMTAxLCAyMTMsIDI3LCAyMjQsIAorICAgIDE0OCwgMjE3LCA3OCwgMjMsIDIzNCwgMTkyLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEwMSwgCisgICAgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAKKyAgICAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjI4LCAxMTcsIDIzLCAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTk0LCAKKyAgICAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU3LCAyMywgMjM0LCAxOTQsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIAorICAgIDI0MywgNTgsIDIwOSwgMTc0LCAyMywgMjM0LCAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTgsIDIxNiwgCisgICAgMjU0LCAyMywgMjM0LCAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTgsIDIyOCwgMTE3LCAyMywgMjM0LCAKKyAgICAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTcsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMzQsIDUwLCAyMywgCisgICAgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NSwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIAorICAgIDE1MywgMjA5LCAxNzUsIDE1MywgMjQxLCA3MCwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0MywgNTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAKKyAgICAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDI0OCwgOTYsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDE1MywgMjA5LCAxNzUsIDEyNCwgMjM0LCA1MiwgMjMsIDEzMSwgMTI0LCAxNTMsIDIzNiwgMjM0LCAxMjQsIDIwOCwgCisgICAgNjcsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzYsIDIzNCwgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDExNywgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMTk3LCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAxOTAsIDE1MywgMjI4LCA3MywgCisgICAgMjMsIDIzNCwgMTk0LCAxMjQsIDE1MywgMjQyLCAxOTAsIDE1MywgMjI4LCA3MywgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgCisgICAgMTkwLCAxNTMsIDIwMywgMjUyLCAyMywgMTMxLCAxMjQsIDE1MywgMjQ2LCAxNTUsIDIzLCAyMzQsIDE5MiwgMTI0LCAyMDYsIAorICAgIDM0LCAyMywgMjM0LCAxOTIsIDEyNCwgMTUzLCAyMTcsIDUzLCAyMywgMjM0LCAxODUsIDEyNCwgMTUzLCAyMTcsIDUzLCAyMywgCisgICAgMjM0LCAxODUsIDEyNCwgMTUzLCAyMjUsIDcwLCAyMywgMjM0LCAxODUsIDEyNCwgMjA2LCAzNCwgMjMsIDIzNCwgMTg1LCAKKyAgICAxMjQsIDE1MywgMjA5LCA1MywgMjMsIDIzNCwgMTk4LCAxMjQsIDE1MywgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMTI0LCAKKyAgICAxNTMsIDIyOCwgMTE3LCAyMywgMjM0LCAxOTgsIDEyNCwgMjA2LCAzNCwgMjMsIDEzMSwgMjA2LCAzNCwgMjMsIDEzMSwgCisgICAgMTUzLCAyMzQsIDExNywgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgMjQxLCA3MCwgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgCisgICAgMjQzLCA1NywgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAxMzEsIDE1MywgMjM2LCAyMzMsIDIzLCAKKyAgICAxMzEsIDE1MywgMjQ4LCAyMDYsIDEyNCwgMjIxLCAyMDQsIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDEwMSwgMjEzLCAyNiwgCisgICAgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyMCwgCisgICAgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAxMTksIDEyMCwgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTI2LCAKKyAgICAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAyMzYsIDIyOSwgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAxMTksIAorICAgIDIzNiwgMjI5LCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIDIzNCwgMTg4LCAyMywgMTMxLCAyMzQsIDExNywgMjMsIDIwNSwgCisgICAgMTQyLCAyMDksIDEzOCwgMjMsIDIwNSwgMTQyLCAyMjEsIDIwLCAyMywgMjA1LCAxNDIsIDI0OCwgMjA1LCAyMywgMjM1LCAKKyAgICA3OCwgMjA5LCAxMzgsIDIzLCAyMzUsIDc4LCAyMjEsIDIwLCAyMywgMjM1LCA3OCwgMjQ4LCAyMDUsIDIzLCAyMDgsIDUyLCAKKyAgICAyMDksIDEzOCwgMjMsIDIwOCwgNTIsIDIyMSwgMjAsIDIzLCAyMDgsIDUyLCAyNDgsIDIwNSwgMjMsIDI0OCwgNDQsIDIwOSwgCisgICAgMTM4LCAyMywgMjQ4LCA0NCwgMjIxLCAyMCwgMjMsIDI0OCwgNDQsIDI0OCwgMjA1LCAyMywgMjEyLCAxNzMsIDIwOSwgMTM4LCAKKyAgICAyMywgMjEyLCAxNzMsIDIyMSwgMjAsIDIzLCAyMTIsIDE3MywgMjQ4LCAyMDUsIDIzLCAyMDcsIDIwMywgMjA3LCAxMTYsIAorICAgIDIzLCAyMDcsIDIwMywgMjQ4LCAyMDUsIDIzLCAyMDgsIDE4OSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMDgsIDE4OSwgNCwgCisgICAgMjA5LCAxMzgsIDIzLCAyMDgsIDE4OSwgMjI1LCA3MSwgMjIxLCAyMCwgMjMsIDIwOCwgMTg5LCA0LCAyMjEsIDIwLCAyMywgCisgICAgMjA4LCAxODksIDIxMCwgMTUwLCAyMywgMjM3LCAzNSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMzcsIDM1LCA0LCAyMDksIAorICAgIDEzOCwgMjMsIDIzNywgMzUsIDIyNSwgNzEsIDIyMSwgMjAsIDIzLCAyMzcsIDM1LCA0LCAyMjEsIDIwLCAyMywgMjM3LCAzNSwgCisgICAgMjEwLCAxNTAsIDIzLCAyMDgsIDE4OSwgMjM3LCAzNSwgMjUxLCAxMDYsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjI1LCAKKyAgICA3MCwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyMDksIDUzLCAyMywgMjIxLCA1MSwgMTE1LCAyMTAsIDE1MCwgMjMsIDIyMSwgCisgICAgNTEsIDEyNywgMjEwLCAxNTAsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjUxLCAxMDcsIDIyNSwgNzAsIDIzLCAyMjEsIDUxLCAKKyAgICAxMTUsIDEyNywgMjUxLCAxMDcsIDIwOSwgNTMsIDIzLCAyMjEsIDUxLCAyMDksIDE3NSwgMjA1LCAxODYsIDIwOSwgMTc1LCAKKyAgICAyMTEsIDIxNiwgMjMsIDIyMSwgNTAsIDIzNywgODcsIDI0MywgNDcsIDIzLCAyMjEsIDUyLCAyMzcsIDg3LCAyNDMsIDQ3LCAKKyAgICAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIAorICAgIDIwOCwgNjgsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAKKyAgICA1MywgMjA4LCA2NywgMjMsIDIyMSwgNTAsIDUzLCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDUzLCAyNTEsIAorICAgIDEwNiwgMjMsIDIyMSwgNTAsIDUzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyNDIsIDIzNCwgCisgICAgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDIwOCwgNjgsIDIyMSwgNTQsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyMDAsIDIyMCwgCisgICAgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDI1MSwgMTA2LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjUxLCAxMDcsIAorICAgIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjA5LCA1MywgCisgICAgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMjUsIDcwLCAyMywgMjIxLCAKKyAgICA1MCwgMjQzLCAxNiwgMjEyLCAyMjYsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAxMDAsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUwLCAxMDAsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAxMDAsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAKKyAgICAyMDksIDUzLCAyMywgMjIxLCA1MCwgMTk5LCAyNywgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIDIyNSwgNzAsIAorICAgIDIzLCAyMjEsIDUwLCAyMTYsIDY5LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjE2LCA2OSwgMjIyLCA2NSwgMjMsIDIyMSwgCisgICAgNTAsIDIxNiwgNjksIDIyNSwgNzAsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTIsIAorICAgIDIxMiwgMjI0LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNCwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMiwgMjEyLCAKKyAgICAyMjUsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI1LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNSwgCisgICAgMjUxLCAxMDYsIDIzLCAyMDUsIDExMiwgMjEwLCA5NSwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgMjA4LCAyMTgsIDIwOSwgCisgICAgMTM4LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAyMDgsIDIxOCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIAorICAgIDIwOCwgMjE4LCAyMDUsIDgyLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIyNSwgNjgsIAorICAgIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMjIsIDY1LCAyMywgMjIxLCAKKyAgICA1MywgMjA1LCAxMzYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjI1LCA2OCwgMjMsIDIyMSwgNTMsIDI0OCwgCisgICAgMjA2LCAyNTAsIDExNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgCisgICAgMjI1LCA2OCwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAKKyAgICAyMDUsIDEzNiwgMjIyLCA2NSwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIAorICAgIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjI1LCA2OCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCAKKyAgICA3MCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIDY4LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwMCwgCisgICAgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgNTMsIDIwOCwgNjcsIDIzLCAyMjEsIDUyLCA1MywgMjAwLCAyMjAsIDIzNywgCisgICAgMzgsIDIzLCAyMjEsIDUyLCA1MywgMjUxLCAxMDYsIDIzLCAyMjEsIDUyLCA1MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIAorICAgIDM4LCAyMywgMjIxLCA1MiwgMjQyLCAyMzQsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyMDgsIDY4LCAyMjEsIDU0LCAyMywgCisgICAgMjIxLCA1MiwgMjA1LCA4MywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyNTEsIDEwNywgMjIxLCAKKyAgICA1NCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDI0OCwgCisgICAgMjIyLCAyMywgMjIxLCA1MiwgMjQzLCAxNiwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MywgMTYsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUyLCAyNDMsIDE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQ3LCA2LCAyMywgMjIxLCA1MiwgMTAwLCAyMDksIAorICAgIDUzLCAyMywgMjIxLCA1MiwgMTAwLCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMTAwLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgCisgICAgMTk5LCAyNywgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDE5OSwgMjcsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAxOTksIDI3LCAKKyAgICAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMjUsIDcwLCAyMywgMjA1LCAxMTMsIDIxMiwgMjI1LCAyMDksIDEzOCwgMjMsIDIwNSwgCisgICAgMTEzLCAyMTIsIDIyNSwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMywgMjEyLCAyMjUsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTMsIAorICAgIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMywgMjEyLCAKKyAgICAyMjQsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTMsIDIxMCwgOTUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgCisgICAgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIAorICAgIDIxNCwgODgsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIAorICAgIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDIxMiwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMDYsIDQwLCAyNDYsIDE1NiwgMjA5LCA1MywgMjMsIDIyMSwgCisgICAgNTAsIDI0MiwgMTkwLCAyMDYsIDQwLCAyNDYsIDE1NiwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIwOSwgNTMsIAorICAgIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjI1LCA3MCwgMjMsIDIyMSwgCisgICAgNTAsIDIyNCwgNzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjI0LCAKKyAgICA3NSwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgCisgICAgMjQyLCAxOTAsIDUzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDUzLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDUzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIAorICAgIDIwNSwgODMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgMjA1LCA4MywgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAyMDUsIDgzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIwNiwgCisgICAgOTgsIDIwOCwgNjcsIDIzLCAyMjEsIDUwLCAyNDIsIDE4OCwgMjQyLCAyMzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIAorICAgIDE4OCwgMjQyLCAyMzUsIDIyMiwgNjUsIDIzLCAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMTIsIDIyNCwgMjM5LCAxNzUsIAorICAgIDIzLCAyMTIsIDIyNCwgMjUxLCAxMDgsIDIzLCAyMjEsIDUwLCAyMTAsIDk1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIAorICAgIDEwMiwgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDIwMSwgCisgICAgNzgsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgMjI0LCAyMDksIDEzOSwgMjM0LCA0NCwgMjM2LCAKKyAgICAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAyMjQsIDUzLCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxMDcsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjI0LCAKKyAgICA3NSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIxMiwgCisgICAgMjI0LCAyMDksIDEzOSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMTIsIDIyNCwgNTMsIDIzNCwgNDQsIDI0NiwgMjQzLCAKKyAgICAyMywgMjEyLCAyMjQsIDI1MSwgMTA3LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIAorICAgIDIxNiwgOTEsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAyMTYsIDkxLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgMjE2LCA5MSwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyNDcsIDY1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzAsIAorICAgIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgCisgICAgODUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgCisgICAgMjQ3LCA2NSwgNCwgMjA1LCA4MiwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIAorICAgIDIwNSwgODIsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgCisgICAgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgCisgICAgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCAKKyAgICAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NywgNjUsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM5LCAyMzQsIAorICAgIDQ0LCAyNDcsIDY0LCAyMywgMjEyLCAyMjUsIDUzLCAyMzQsIDQ0LCAyNDcsIDY0LCAyMywgMjEyLCAyMjUsIDI1MSwgMTA3LCAKKyAgICAyMzQsIDQ0LCAyNDcsIDY0LCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDIzNywgMzIsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgCisgICAgNDQsIDIzNywgMzIsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCAKKyAgICA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDUsIDgzLCA0LCAyMDUsIAorICAgIDgyLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjA1LCA4MywgMjI1LCA3MSwgMjA1LCA4MiwgCisgICAgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCAKKyAgICA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAKKyAgICAyMzcsIDMyLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzEsIAorICAgIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjM3LCAzMiwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIAorICAgIDIwMSwgNzgsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzksIDIzNCwgNDQsIDIzNywgCisgICAgMzEsIDIzLCAyMTIsIDIyNSwgNTMsIDIzNCwgNDQsIDIzNywgMzEsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDcsIDIzNCwgNDQsIAorICAgIDIzNywgMzEsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjI1LCA2OCwgMjMsIDIyMSwgCisgICAgNTIsIDI0MiwgMTkwLCAyNDYsIDc0LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIyNCwgCisgICAgNzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMDksIDQxLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjA5LCAKKyAgICA1MywgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzgsIDIzLCAyMTIsIDIyNSwgCisgICAgMjM5LCAxNzUsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDYsIDIzLCAyMjEsIDUyLCAyMTAsIDk2LCAyMTYsIDEyMCwgMjMsIAorICAgIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIyMiwgNjYsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCA0LCAyMzksIDE3NSwgMjMsIAorICAgIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgMjIyLCA2NiwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgCisgICAgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIyMiwgNjYsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIDE1NiwgCisgICAgMjM0LCA0NCwgMjAxLCAxMDMsIDIyMiwgNjYsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgMTU2LCAKKyAgICAyMzQsIDQ0LCAyMDEsIDEwMywgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIAorICAgIDIzNiwgMjAwLCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM2LCAyMDAsIDIzOSwgMTc1LCAKKyAgICAyMywgMjIxLCA1MiwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjA5LCAxMzgsIDIzLCAyMjEsIAorICAgIDUyLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIzNywgCisgICAgODcsIDI0NiwgMTUzLCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDIzNywgODcsIDI0NiwgMTUzLCAyMzksIDE3NSwgMjMsIAorICAgIDIyMSwgNTIsIDIzNywgODcsIDI0NiwgMTUzLCAyMzQsIDQ0LCAyMDEsIDEwMywgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAKKyAgICAyMzcsIDg3LCAyNDYsIDE1MywgMjM0LCA0NCwgMjAxLCAxMDMsIDIzOSwgMTc1LCAyMywgMjM5LCA5OCwgMjUwLCAyMDMsIAorICAgIDIwOSwgNTMsIDIzLCAyMzksIDk4LCAyNTAsIDIwMywgMjI1LCA3MCwgMjMsIDIzOSwgOTgsIDIzNywgMTYxLCAyMywgMjM5LCAKKyAgICA5OCwgMjA5LCA1NiwgMjMsIDIzOSwgOTgsIDIwNiwgMTU5LCAyMywgMjM5LCA5OCwgMjEzLCAxNDcsIDIzLCAyMzksIDk4LCAKKyAgICAyMDksIDE0NCwgMjMsIDIzOSwgOTgsIDIwOSwgMTQ1LCAyNTEsIDEwNiwgMjMsIDIzOSwgOTgsIDIzOCwgNTIsIDIxNywgOCwgCisgICAgMjA1LCAyMzQsIDIzLCAyMzksIDk4LCAyMzUsIDg4LCAyMywgMjM0LCAxMzYsIDIzLCAyMzQsIDEzNywgMjEzLCAzMSwgMjMsIAorICAgIDIzNCwgMTM3LCAyMjEsIDUwLCAyMDgsIDY3LCAyMywgMjM0LCAxMzcsIDIyMSwgNTAsIDIwNSwgMjM3LCAyMywgMjM0LCAKKyAgICAxMzcsIDIyMSwgNTIsIDIwOCwgNjcsIDIzLCAyMzQsIDEzNywgMjIxLCA1MCwgMjQyLCAxODksIDIzLCAyMzQsIDEzNywgCisgICAgMjIxLCA1MiwgMjQyLCAxODksIDIzLCAyMzQsIDEzNywgMjIxLCA1NSwgMjQ2LCAxNTUsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAKKyAgICAyMTUsIDcwLCAyMTgsIDIxNywgMjM2LCAyMzQsIDIwNSwgMjM1LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgMjE1LCA3MCwgCisgICAgMjE4LCAyMTcsIDExNSwgMjE3LCAzNCwgMjM5LCAxNjcsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAyMTUsIDcwLCAyMTgsIAorICAgIDIxNywgMTE1LCAyMTcsIDM0LCAxMjcsIDIwNSwgMjM1LCAyMywgMjM4LCAyMSwgMjA4LCA2OCwgMjAzLCAyMjgsIDIzLCAKKyAgICAyMzgsIDIxLCAyMDgsIDY4LCAyMjAsIDksIDIzLCAyMzgsIDIxLCAyMDgsIDY4LCAyMzksIDE2NywgMjMsIDIzOSwgMTU0LCAKKyAgICAyMzgsIDIxLCAyMjAsIDEwLCAyMzksIDE2NywgMjMsIDIzOSwgMTU0LCAyMzgsIDIxLCAxMjcsIDIyMCwgOSwgMjMsIDIzOSwgCisgICAgMTU0LCAyMzgsIDIxLCAxMTUsIDIyMCwgOSwgMjMsIDIzOSwgMTU0LCAyMzgsIDIxLCAyMjAsIDEwLCAyMDMsIDIyOCwgMjMsIAorICAgIDIzNiwgMjQ3LCAyMjAsIDksIDIzLCAyMzYsIDI0NywgMjQzLCA0NywgMjMsIDIzNiwgMjQ3LCAyMDAsIDIyMywgMjMsIDIzOCwgCisgICAgMTYsIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAyMDgsIDE4OCwgMjMsIDIzOCwgMTYsIDI0NiwgMTA5LCAyMywgMjM4LCAyMywgCisgICAgMjQ4LCAxMzUsIDIwOSwgMTM4LCAyMywgMjM4LCAyMywgMjQ4LCAxMzUsIDIyMSwgMjAsIDIzLCAyMzgsIDE2LCAxNjcsIAorICAgIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAyMDEsIDI4LCAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMTY3LCAyNDYsIDEwOSwgMjMsIAorICAgIDIzOCwgMTYsIDIwMSwgMjYsIDIyMSwgNTQsIDIzLCAyMzgsIDIzLCAyMDEsIDksIDIzLCAyMzgsIDE3LCAyMDMsIDIyOCwgCisgICAgMjMsIDIzOCwgMTcsIDIzOSwgMTY3LCAyMywgMjM4LCAxNywgMjM3LCAxOCwgMjMsIDIzOCwgMTksIDIwOCwgNjcsIDIzLCAKKyAgICAyMzgsIDE5LCAyMDgsIDY4LCAyMzksIDE3NSwgMjMsIDIzOCwgMTksIDIwOCwgNjgsIDI1MSwgMTA2LCAyMywgMjM4LCAyMCwgCisgICAgMjA4LCA2NywgMjMsIDIzOCwgMjAsIDIwOCwgNjgsIDIzOSwgMTc1LCAyMywgMjM4LCAyMCwgMjA4LCA2OCwgMjUxLCAxMDYsIAorICAgIDIzLCAyMzgsIDE5LCAyNDIsIDE4NywgMjMsIDIzOCwgMjAsIDI0MiwgMTg3LCAyMywgMjM4LCAxOSwgMjQ2LCAxNTAsIDIzLCAKKyAgICAyNDcsIDIsIDIxNCwgMjE1LCAyMywgMjQ3LCAyLCAyMjAsIDksIDIzLCAyNDcsIDIsIDIwNywgMjQ4LCAyMywgMjA2LCAxNjAsIAorICAgIDI0NywgMiwgMjM0LCA1OSwgMjMsIDIwNiwgMTYwLCAyNDcsIDIsIDIyMSwgMjA0LCAyMywgMjA2LCAxNjAsIDI0NywgMiwgCisgICAgMjI0LCA1OSwgMjMsIDIzOSwgMTksIDIzLCAyMTgsIDIxNywgMjIwLCA5LCAyMywgMjE4LCAyMTcsIDI0MywgNDcsIDIzLCAKKyAgICAyMTgsIDIxNywgMjAwLCAyMjEsIDIzLCAyMTgsIDIxNywgMjAxLCAyMywgMjMsIDI1MSwgMTY3LCAyNDgsIDEyOCwgMjE2LCAKKyAgICAyNTQsIDIzLCAyNTEsIDE2NywgMjA3LCAyNDcsIDIyOCwgMTE3LCAyMywgMjUxLCAxNjcsIDI0OCwgMTMwLCA0LCAyMTIsIAorICAgIDIyMywgMjMsIDI1MSwgMTY3LCAyMDcsIDI0OSwgNCwgMjEyLCAyMjMsIDIzLCAyNDgsIDU5LCAyMjgsIDg5LCAyMywgMjQ4LCAKKyAgICA1OSwgMjM4LCA0MSwgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyMjAsIDksIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjM2LCAKKyAgICAyMzMsIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjQzLCA0NywgMjMsIDIyMSwgNTksIDIwOSwgNDgsIDIzLCAyMjEsIDU5LCAKKyAgICAyMDksIDQ5LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIwOSwgNDksIDIxNywgNTMsIDIzLCAyMjEsIDU5LCAyMzYsIDE5NiwgCisgICAgMjMsIDIyMSwgNTksIDIzNiwgMTk3LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIzNiwgMTk3LCAyMTcsIDUzLCAyMywgMjIxLCAKKyAgICA1OSwgMTc2LCAyNDYsIDE1NSwgMjMsIDIyMSwgNTksIDE3NiwgMjM2LCAyMzMsIDIzLCAyMjEsIDU5LCAxNzYsIDIwMCwgCisgICAgMjIzLCAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0NywgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDgsIDIwMCwgMjIzLCAKKyAgICAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0OCwgMjAwLCA1OCwgMjMsIDIyMSwgNTksIDE3NiwgMjEzLCAxNzUsIDIzLCAyMjEsIAorICAgIDU5LCAxNzYsIDIxMywgMTc2LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDE3NiwgMjEzLCAxNzYsIDIwMCwgNTgsIDIzLCAKKyAgICAyMjEsIDU5LCAyMjYsIDEyOSwgMjMsIDIyMSwgNTksIDIyNiwgMTMwLCAyMzYsIDIzMywgMjMsIDIyMSwgNTksIDIyNiwgCisgICAgMTMwLCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIwNiwgMTU5LCAyMywgMjIxLCA1OSwgMjA2LCAxNjAsIDIzNiwgMjMzLCAKKyAgICAyMywgMjIxLCA1OSwgMjA2LCAxNjAsIDIwNywgMjQ4LCAyMywgMjI0LCAxNjEsIDIxNSwgMTcsIDIwNSwgMTgyLCAyMywgCisgICAgMjI0LCAxNjMsIDIyNCwgNTQsIDExOSwgMjAzLCAyMjQsIDIzLCAyMjQsIDE2MywgMjAzLCAyMjUsIDExOSwgMjI0LCA1MywgCisgICAgMjMsIDIyMSwgNTksIDI0MywgMTQsIDIzLCAyMjEsIDU5LCAyMDAsIDIyMiwgMjA5LCAxMzgsIDIzLCAyMjEsIDU5LCAyMDAsIAorICAgIDIyMiwgMjM5LCAxNzUsIDIzLCAyMDUsIDE2NCwgMjA4LCA4NywgMjE2LCAyNTUsIDIzNywgMTYzLCAyMywgMjA1LCAxNjQsIAorICAgIDIyNCwgMjA2LCAyMjQsIDE2MCwgMjMsIDIwNSwgMTY0LCAyMDUsIDIyNCwgMjQ4LCAyMDYsIDIyNCwgMTYwLCAyMywgMjA1LCAKKyAgICAxNjQsIDIwNSwgMjI0LCAyMDUsIDE0MCwgMjI4LCA3NCwgMjIxLCA1OCwgMjMsIDIwNSwgMTY0LCAyMjgsIDc0LCAyMjEsIAorICAgIDU5LCAyMTMsIDE0NywgMjMsIDIwNSwgMTY0LCAyMjEsIDQ5LCAyNTEsIDE5MSwgMjQ3LCAzLCAyMywgMjA1LCAxNjQsIDI0NywgCisgICAgNTYsIDIwOCwgODcsIDIxNiwgMjU0LCAyMywgMjA1LCAxNjQsIDI0NywgNTYsIDIyOCwgNzQsIDIyMSwgNTgsIDIzLCAyMDYsIAorICAgIDE4NiwgMjMsIDIwNiwgMTg3LCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDIxNywgNzksIDIwNSwgMTYzLCAyMywgMjA2LCAKKyAgICAxODcsIDIxNywgNzksIDIwNSwgMTY0LCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDIxNywgNzksIDIyNCwgMTYwLCAyMywgCisgICAgMjA2LCAxODcsIDIxNywgNzksIDIyNCwgMTYxLCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDI0OCwgMTUxLCAyMjQsIDE2MCwgCisgICAgMjMsIDIyMSwgNTAsIDIyNywgMjMxLCAyMywgMjIxLCA1MiwgMjI3LCAyMzEsIDIzLCAyMjAsIDMxLCAyMywgMjM0LCAyMjEsIAorICAgIDIzLCAyMzgsIDQ0LCAyMywgMjA5LCAyMzMsIDIzNCwgNDksIDIwOCwgMjE5LCAyMywgMjA5LCAyMzMsIDIzNCwgNDksIDIxNSwgCisgICAgNjksIDIzLCAyMDEsIDEwMSwgMjA5LCAyMzMsIDIzNCwgNDksIDIyMSwgNTcsIDIzLCAyMzcsIDMwLCAyMDksIDIzMywgMjM0LCAKKyAgICA0OSwgMjIxLCA1NywgMjMsIDIwOSwgMjMzLCAyMDUsIDIzNiwgMjM2LCAyMDEsIDIwMSwgMTA3LCAyMywgMjA1LCAxNDcsIAorICAgIDIwOCwgNjgsIDIwOCwgNTYsIDIzLCAyMDUsIDE0NywgMjQyLCAxODgsIDI0OCwgMjIyLCAyMywgMjA1LCAxNDgsIDIwNCwgCisgICAgMTQ0LCAyMywgMjAzLCAyMjUsIDI0OCwgMTE5LCAyMDUsIDIzNiwgMjM2LCAyMDEsIDIzNCwgNDksIDIyNywgMTYwLCAyMywgCisgICAgMjI0LCAxODgsIDI0NiwgNzUsIDIzLCAyMjQsIDE4OCwgMjI1LCAxLCAyMywgMjI0LCAxODgsIDIyNSwgMCwgMjMsIDIyNCwgCisgICAgMTg4LCAyMjQsIDI1NSwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1NCwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1MywgMjMsIDIyNCwgCisgICAgMTg4LCAyMjQsIDI1MiwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1MSwgMjMsIDIzNywgODYsIDIzLCAyMjQsIDEwNiwgMjA4LCAKKyAgICAyNDQsIDIzLCAyMjQsIDEwNywgMjA4LCAyNDQsIDIzLCAyMjQsIDEwOCwgMjM0LCAxMTMsIDIzLCAyMjQsIDEwOCwgMjAxLCAKKyAgICAyNCwgMjMsIDIyNCwgMTA4LCAyNDEsIDEyMywgMjMsIDIyNCwgMTA4LCAyMzQsIDEzNywgMjIwLCAzMSwgMjMsIDIyNCwgCisgICAgMTA4LCAyMDUsIDE0OSwgMjMsIDIyNCwgMTA4LCAyMjQsIDE4NywgMjQxLCA0MSwgMjMsIDI0NiwgNzAsIDIzLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMjMsIDIxMCwgMTY3LCAyMywgMjQ2LCA3OSwgMjMsIDIxNiwgMTE1LCAyMywgMjM3LCA5NiwgMjIxLCAKKyAgICAxMTgsIDIzLCAyMzcsIDk2LCAyMjEsIDExNywgMjMsIDIzNywgOTYsIDIyMSwgMTE2LCAyMywgMjM3LCA5NiwgMjIxLCAxMTUsIAorICAgIDIzLCAyMzcsIDk2LCAyMjEsIDExNCwgMjMsIDIxMiwgMjI3LCAyMjEsIDExOCwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNywgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExNiwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNSwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNCwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExMywgMjMsIDIxMiwgMjI3LCAyMjEsIDExMiwgMjMsIDIxMiwgMjI3LCAyMjEsIDExMSwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDEyNSwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyNCwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMywgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMiwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMSwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMCwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExOSwgMzgsIDExNiwgMSwgMjUwLCAxMDQsIDM4LCAxMTYsIDEsIDI0OCwgMjQsIDM4LCAKKyAgICAxMTYsIDEsIDIwMywgNTcsIDM4LCAxMTYsIDEsIDIzNSwgMTMwLCAzOCwgMTE2LCAxLCAyNDAsIDIwNiwgMzgsIDExNiwgMSwgCisgICAgMjAwLCAyMywgMzgsIDExNiwgMSwgMTk5LCA2MSwgMzgsIDExNiwgMSwgMTk5LCA4NiwgMzgsIDExNiwgMSwgMjI3LCAyNTUsIAorICAgIDM4LCAxMTYsIDEsIDgyLCAyMjcsIDI1NSwgMzgsIDExNiwgMSwgNzAsIDM4LCAxMTYsIDEsIDI0MCwgMjI2LCAzOCwgMTE2LCAKKyAgICAxLCAyMjcsIDc0LCAzOCwgMTE2LCAxLCAyMjQsIDE0MCwgMzgsIDExNiwgMSwgMjIwLCAyMTgsIDM4LCAxMTYsIDEsIDIyMCwgCisgICAgMTIwLCAzOCwgMTE2LCAxLCAyMTcsIDY1LCAzOCwgMTE2LCAxLCAyMTUsIDkzLCAzOCwgMTE2LCAxLCAyMTMsIDE4LCAzOCwgCisgICAgMTE2LCAxLCAyMDksIDU4LCAzOCwgMTE2LCAxLCAyMDQsIDE3MSwgMzgsIDExNiwgMSwgMjA0LCAxNiwgMzgsIDExNiwgMSwgCisgICAgMjM2LCAyMDQsIDM4LCAxMTYsIDEsIDIzNCwgOTUsIDM4LCAxMTYsIDEsIDIwOSwgMjIzLCAzOCwgMTE2LCAxLCAyMDUsIDExLCAKKyAgICAzOCwgMTE2LCAxLCAyNDYsIDE5OCwgMzgsIDExNiwgMSwgMjEwLCAxMTQsIDM4LCAxMTYsIDEsIDIwMCwgMjksIDM4LCAxMTYsIAorICAgIDEsIDIwMCwgMzEsIDM4LCAxMTYsIDEsIDIwMCwgNjMsIDM4LCAxMTYsIDEsIDE5OSwgMjExLCAzOCwgMTE2LCAxLCA0LCAKKyAgICAxOTksIDE4MSwgMzgsIDExNiwgMSwgMTk5LCAyNDUsIDM4LCAxMTYsIDEsIDIyOCwgNDAsIDQsIDE5OSwgMTgxLCAzOCwgCisgICAgMTE2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAxMTYsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIAorICAgIDExNiwgMSwgMjM3LCA2MywgNzgsIDc3LCA1LCAyMjMsIDI0MiwgMjI2LCAxNjMsIDc4LCA3NywgNSwgMjIzLCAyMzgsIDE2MSwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDIzNiwgMjI2LCAxNSwgNzgsIDc3LCA1LCAyMjMsIDExMiwgMjI3LCA1LCA3OCwgNzcsIDUsIAorICAgIDIyMywgODIsIDIyNywgOCwgNzgsIDc3LCA1LCAyMjMsIDEwMSwgMjI2LCA2OCwgNzgsIDc3LCA1LCAyMjMsIDEyOSwgMjI2LCAKKyAgICA4OCwgNzgsIDc3LCA1LCAyMjIsIDI1NCwgMjI2LCA5LCA3OCwgNzcsIDUsIDIyMywgMjMzLCAyMDEsIDMxLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMjMxLCAyMDEsIDExNCwgNzgsIDc3LCA1LCAyMjMsIDIyOSwgMjAwLCAyMTYsIDc4LCA3NywgNSwgMjIzLCA1MSwgCisgICAgMjAxLCA1NywgNzgsIDc3LCA1LCAyMjMsIDU5LCAyMDEsIDY0LCA3OCwgNzcsIDUsIDIyMywgNjMsIDIwMCwgMjQ0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTMyLCAyMDEsIDAsIDc4LCA3NywgNSwgMjIyLCAyMzksIDIwMCwgMjEyLCA3OCwgNzcsIDUsIDIyMywgCisgICAgMzQsIDIwMSwgNTUsIDc4LCA3NywgNSwgMjIzLCAxMTYsIDIwMCwgMjAwLCA3OCwgNzcsIDUsIDIyMywgMTI4LCAyMDAsIAorICAgIDIwMiwgNzgsIDc3LCA1LCAyMjMsIDM4LCAyMDAsIDIwMSwgNzgsIDc3LCA1LCAyMjMsIDIyNywgMjIxLCAxNjQsIDc4LCA3NywgCisgICAgNSwgMjIzLCAyMjUsIDIyMiwgMTgwLCA3OCwgNzcsIDUsIDIyMywgMjIzLCAyMjEsIDE0LCA3OCwgNzcsIDUsIDIyMywgMTE4LCAKKyAgICAyMjIsIDQwLCA3OCwgNzcsIDUsIDIyMywgODMsIDIyMSwgMTA2LCA3OCwgNzcsIDUsIDIyMywgMjMsIDIyMSwgMzgsIDc4LCAKKyAgICA3NywgNSwgMjIyLCAyNDQsIDIyMSwgMzIsIDc4LCA3NywgNSwgMjIzLCAyMjEsIDI0OCwgMTg4LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMjE4LCAyNDksIDEzNiwgNzgsIDc3LCA1LCAyMjMsIDIxNiwgMjQ4LCAzNiwgNzgsIDc3LCA1LCAyMjMsIDI3LCAyNDgsIAorICAgIDI1MiwgNzgsIDc3LCA1LCAyMjMsIDgwLCAyNDksIDgsIDc4LCA3NywgNSwgMjIzLCA3NCwgMjQ4LCAxMTEsIDc4LCA3NywgNSwgCisgICAgMjIzLCAzOSwgMjQ4LCAxMjQsIDc4LCA3NywgNSwgMjIzLCAyMDYsIDcwLCA3OCwgNzcsIDUsIDIyMywgMjA0LCA2MiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDIwMiwgNjYsIDc4LCA3NywgNSwgMjIzLCAxNCwgMjM4LCAyNTUsIDc4LCA3NywgNSwgMjIzLCA3NywgCisgICAgNzIsIDc4LCA3NywgNSwgMjIzLCAxMiwgMjE3LCA2MywgNzgsIDc3LCA1LCAyMjMsIDMwLCA3NCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDQwLCAyMzgsIDIzNCwgNzgsIDc3LCA1LCAyMjMsIDQ2LCAyMjgsIDExNywgNzgsIDc3LCA1LCAyMjMsIDQyLCAyMjgsIDExNywgCisgICAgNzgsIDc3LCA1LCAyMjIsIDIzOCwgMjUxLCA4NSwgNzgsIDc3LCA1LCAyMjIsIDI1NSwgMjM4LCAxNzksIDc4LCA3NywgNSwgCisgICAgMjIzLCAxOTEsIDIwOSwgMTgyLCA3OCwgNzcsIDUsIDIyMywgMTg5LCAyMTIsIDY0LCA3OCwgNzcsIDUsIDIyMywgMTg3LCAKKyAgICAyMDgsIDI0LCA3OCwgNzcsIDUsIDIyMywgMTUsIDIxMSwgMTkwLCA3OCwgNzcsIDUsIDIyMywgNjEsIDIxMSwgMjAyLCA3OCwgCisgICAgNzcsIDUsIDIyMywgNDEsIDIwOSwgMTAsIDc4LCA3NywgNSwgMjIzLCA5OCwgMjA5LCAyOSwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDIzNywgMjA5LCAxODEsIDc4LCA3NywgNSwgMjIzLCAxNzcsIDIyNCwgMjEwLCA3OCwgNzcsIDUsIDIyMywgMTc1LCAxOTQsIAorICAgIDc4LCA3NywgNSwgMjIzLCAxNzMsIDIyNCwgNDIsIDc4LCA3NywgNSwgMjIzLCA5MywgMjI1LCAzMiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDEwNCwgMjI1LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDEyMywgMjI0LCA3OCwgNzgsIDc3LCA1LCAyMjMsIDI0LCAyMjQsIAorICAgIDExMCwgNzgsIDc3LCA1LCAyMjMsIDY3LCAxNjgsIDIyNSwgNDAsIDc4LCA3NywgNSwgMjIzLCAxOTksIDI0MSwgNzYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxOTYsIDI0MiwgNTgsIDc4LCA3NywgNSwgMjIzLCAxOTMsIDIzOSwgMTM3LCA3OCwgNzcsIDUsIDIyMywgCisgICAgODgsIDI0MSwgMTYxLCA3OCwgNzcsIDUsIDIyMiwgMjUzLCAyNDAsIDE4NywgNzgsIDc3LCA1LCAyMjIsIDI1MiwgMjQwLCAKKyAgICAyMTEsIDc4LCA3NywgNSwgMjIzLCAxODUsIDIwNiwgMTUsIDc4LCA3NywgNSwgMjIzLCAxODIsIDIwNywgMzYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxODAsIDIwNCwgMjE1LCA3OCwgNzcsIDUsIDIyMywgODYsIDIwNiwgMTkwLCA3OCwgNzcsIDUsIDIyMywgMTIyLCAKKyAgICAyMDYsIDIwMSwgNzgsIDc3LCA1LCAyMjMsIDczLCAyMDUsIDE2MSwgNzgsIDc3LCA1LCAyMjMsIDEwOCwgMTM4LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTcxLCAyMjcsIDIwNywgNzgsIDc3LCA1LCAyMjMsIDE2OCwgMjI3LCAyNDgsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNjYsIDIyNywgMTQ3LCA3OCwgNzcsIDUsIDIyMywgMjAsIDIyNywgMjI1LCA3OCwgNzcsIDUsIDIyMywgNjQsIDIyNywgCisgICAgMjI3LCA3OCwgNzcsIDUsIDIyMywgMTcsIDIyNywgMTU2LCA3OCwgNzcsIDUsIDIyMywgMTE0LCAyMjcsIDE2NiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDIsIDE2OCwgMjI3LCAxNjYsIDc4LCA3NywgNSwgMjIzLCAxNjQsIDIwMCwgOSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE2MSwgMTgzLCA3OCwgNzcsIDUsIDIyMywgMTU5LCAxOTksIDIxMSwgNzgsIDc3LCA1LCAyMjMsIDY4LCAyMDAsIDQ4LCA3OCwgCisgICAgNzcsIDUsIDIyMywgOTcsIDIwMCwgNTEsIDc4LCA3NywgNSwgMjIzLCAzNiwgMTk5LCAyMzAsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA1NiwgMTk5LCAyNDUsIDc4LCA3NywgNSwgMjIzLCAxNTUsIDIzNywgMTEyLCA3OCwgNzcsIDUsIDIyMywgMTUzLCAyMzcsIAorICAgIDE5NSwgNzgsIDc3LCA1LCAyMjMsIDE1MSwgMjM2LCAxODksIDc4LCA3NywgNSwgMjIzLCA5OSwgMjM3LCAxNDAsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxMDIsIDIzNywgMTQ3LCA3OCwgNzcsIDUsIDIyMywgNDQsIDIzNywgMiwgNzgsIDc3LCA1LCAyMjMsIDg5LCAKKyAgICAyMzcsIDEzLCA3OCwgNzcsIDUsIDIyMiwgMjM2LCAyMzYsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIDc2LCAyMzcsIDE2OCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDE0OSwgMjE5LCAxMTgsIDc4LCA3NywgNSwgMjIzLCAxNDcsIDIyMCwgMTM0LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTQ1LCAyMTgsIDg5LCA3OCwgNzcsIDUsIDIyMywgNjAsIDIyMCwgMjQsIDc4LCA3NywgNSwgMjIzLCA4LCAyMTgsIDIzNCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDEsIDIzNCwgNzUsIDc4LCA3NywgNSwgMjIzLCAxNDAsIDE0NCwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI0NywgMjMzLCA5NywgNzgsIDc3LCA1LCAyMjMsIDE0MywgMjM0LCAxMjAsIDc4LCA3NywgNSwgMjIzLCA4MSwgMjM0LCAKKyAgICAxMzksIDc4LCA3NywgNSwgMjIzLCAxMzgsIDIzMywgMTg4LCA3OCwgNzcsIDUsIDIyMywgMzcsIDIzMywgMjA3LCA3OCwgNzcsIAorICAgIDUsIDIyMywgOTQsIDIzNCwgMTE5LCA3OCwgNzcsIDUsIDIyMywgNDksIDIzMywgMTgxLCA3OCwgNzcsIDUsIDIyMywgMTI0LCAKKyAgICAyMzQsIDUzLCA3OCwgNzcsIDUsIDIyMywgNDcsIDIzNCwgMjAyLCA3OCwgNzcsIDUsIDIyMywgOTAsIDIzMywgODQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMjUsIDIzNCwgMTA1LCA3OCwgNzcsIDUsIDIyMiwgMjQwLCAyMzMsIDE5MSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDEzMSwgMjMzLCA5NiwgNzgsIDc3LCA1LCAyMjMsIDg3LCAyMTksIDIxOCwgNzgsIDc3LCA1LCAyMjMsIDEzNiwgMjE5LCAKKyAgICAyMzIsIDc4LCA3NywgNSwgMjIzLCA5NSwgMjE5LCAyMTUsIDc4LCA3NywgNSwgMjIzLCA2MiwgMjE5LCAyMjYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAzMSwgMjE5LCAyMjcsIDc4LCA3NywgNSwgMjIzLCAyMSwgMjE5LCAyMTYsIDc4LCA3NywgNSwgMjIzLCA1NywgCisgICAgMjE5LCAyMTcsIDc4LCA3NywgNSwgMjIzLCAxOCwgMjE5LCAyMzEsIDc4LCA3NywgNSwgMjIzLCA1MCwgMjE5LCAyMTQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA5MSwgMTY4LCAyMTksIDIyNywgNzgsIDc3LCA1LCAyMjMsIDcxLCAxNjgsIDIxOSwgMjE2LCA3OCwgNzcsIAorICAgIDUsIDIyMiwgMjUwLCAxNjgsIDIxOSwgMjE3LCA3OCwgNzcsIDUsIDIyMywgMjIsIDIzNSwgMTYxLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNjYsIDIzNiwgODksIDc4LCA3NywgNSwgMjIzLCA5LCAyMzUsIDUwLCA3OCwgNzcsIDUsIDIyMiwgMjQzLCAyMzYsIDcsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMSwgMjM1LCAzNiwgNzgsIDc3LCA1LCAyMjMsIDEwLCAyMzUsIDQ2LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjQ5LCAyMTksIDIzNywgNzgsIDc3LCA1LCAyMjMsIDEyMCwgMjE5LCAxNzQsIDc4LCA3NywgNSwgMjIzLCAwLCAyMTksIAorICAgIDE2MywgNzgsIDc3LCA1LCAyMjMsIDEwOSwgMjE1LCAyMDQsIDc4LCA3NywgNSwgMjIzLCA3OCwgMTcyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTI3LCAyMTQsIDIyNCwgNzgsIDc3LCA1LCAyMjMsIDk2LCAyMTYsIDYxLCA3OCwgNzcsIDUsIDIyMywgMTI2LCAKKyAgICAyMTYsIDczLCA3OCwgNzcsIDUsIDIyMywgNzUsIDIxNSwgODEsIDc4LCA3NywgNSwgMjIzLCAxMTEsIDIxNSwgMTA2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMzIsIDIyMiwgOTUsIDc4LCA3NywgNSwgMjIzLCAxMTUsIDIyMiwgMTEwLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNTUsIDIyMiwgODksIDc4LCA3NywgNSwgMjIzLCAxMzAsIDIyMiwgMTAyLCA3OCwgNzcsIDUsIDIyMiwgMjQ1LCAyMjIsIAorICAgIDEwMiwgNzgsIDc3LCA1LCAyMjMsIDEwNSwgMjIyLCAxMDMsIDc4LCA3NywgNSwgMjIzLCA1LCAyMjIsIDkwLCA3OCwgNzcsIAorICAgIDUsIDIyMywgMywgMjIyLCA5MSwgNzgsIDc3LCA1LCAyMjIsIDI0NiwgMjIyLCA4MywgNzgsIDc3LCA1LCAyMjMsIDE2LCAKKyAgICAxNjgsIDIyMiwgMTAzLCA3OCwgNzcsIDUsIDIyMywgNzIsIDE2OCwgMjIyLCA5MCwgNzgsIDc3LCA1LCAyMjMsIDM1LCAxNjgsIAorICAgIDIyMiwgOTEsIDc4LCA3NywgNSwgMjIzLCA0NSwgMjI2LCA0MiwgNzgsIDc3LCA1LCAyMjMsIDg1LCAyMjYsIDUwLCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTAzLCAyMjYsIDM4LCA3OCwgNzcsIDUsIDIyMywgMTM0LCAyMjYsIDQ1LCA3OCwgNzcsIDUsIDIyMywgCisgICAgNjksIDIyNiwgNDYsIDc4LCA3NywgNSwgMjIzLCA2NSwgMjI2LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDE5LCAyMjYsIDQxLCAKKyAgICA3OCwgNzcsIDUsIDIyMywgNTMsIDIzNiwgMjQsIDc4LCA3NywgNSwgMjIzLCAxMjEsIDIzNiwgMzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAyOSwgMjM2LCAxOSwgNzgsIDc3LCA1LCAyMjMsIDg0LCAyMzYsIDI4LCA3OCwgNzcsIDUsIDIyMywgNzAsIDIzNiwgCisgICAgMjksIDc4LCA3NywgNSwgMjIzLCAxMDYsIDIzNiwgMjAsIDc4LCA3NywgNSwgMjIzLCAxMDcsIDIzNiwgMjIsIDc4LCA3NywgCisgICAgNSwgMjIzLCA2LCAyMTMsIDI1MiwgNzgsIDc3LCA1LCAyMjMsIDU0LCAyMjAsIDYwLCA3OCwgNzcsIDUsIDIyMywgNDgsIAorICAgIDIyMCwgNzUsIDc4LCA3NywgNSwgMjIzLCA1MiwgMjIwLCA0MiwgNzgsIDc3LCA1LCAyMjIsIDI0MiwgMjIwLCA2NiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDU4LCAyMjAsIDY3LCA3OCwgNzcsIDUsIDIyMywgMTEwLCAyMjAsIDQ3LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTEzLCAyMjAsIDUxLCA3OCwgNzcsIDUsIDIyMywgMjUsIDIxOSwgOTgsIDc4LCA3NywgNSwgMjIyLCAyNDEsIDIxOSwgNjgsIAorICAgIDc4LCA3NywgNSwgMjIzLCAyOCwgMjE5LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDQzLCAyMTksIDcyLCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjUxLCAyMDIsIDIzNCwgNzgsIDc3LCA1LCAyMjIsIDI0OCwgMjAzLCA5MCwgNzgsIDc3LCA1LCAyMjMsIDI2LCAyMDEsIAorICAgIDE2NiwgNzgsIDc3LCA1LCAyMjMsIDQsIDIwMywgNTQsIDc4LCA3NywgNSwgMjIzLCA5MiwgMjAzLCA1OSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDMzLCAyMDIsIDE3OSwgNzgsIDc3LCA1LCAyMjMsIDEwMCwgMjAyLCAxOTMsIDc4LCA3NywgNSwgMjIzLCAxMywgCisgICAgMjE4LCAzNSwgNzgsIDc3LCA1LCAyMjMsIDExOSwgMjE4LCA1NCwgNzgsIDc3LCA1LCAyMjMsIDcsIDIxOCwgMTcsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA3OSwgMjE4LCA0NiwgNzgsIDc3LCA1LCAyMjMsIDExNywgMjE4LCAyNCwgNzgsIDc3LCAxNywgMTAyLCAKKyAgICA3OCwgNzcsIDE3LCAxMDUsIDc4LCA3NywgMTcsIDE0NywgNzgsIDc3LCAxNywgMTQ5LCA3OCwgNzcsIDE3LCAxNjQsIDc4LCAKKyAgICA3NywgMTcsIDE4NywgNzgsIDc3LCAxNywgMjEwLCAxMzUsIDc4LCA3NywgMTcsIDE5MiwgNzgsIDc3LCAxNywgMjE5LCAxMTMsIAorICAgIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE4OCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTYxLCA3OCwgNzcsIDM4LCA0MSwgMjMzLCAKKyAgICA4MCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgNDgsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE2NywgMjA2LCA0OCwgNzgsIDc3LCAKKyAgICAzOCwgNDEsIDIzMywgODMsIDIwNiwgNDgsIDc4LCA3NywgMzgsIDQxLCAyMjEsIDE2NywgMjUxLCAyMjcsIDYsIDEsIDI1MSwgCisgICAgMTMwLCAyNTEsIDIyNywgNiwgMSwgMjQyLCA1NSwgMjUxLCAyMjcsIDYsIDEsIDIyNSwgMTczLCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjIxLCAxODAsIDI1MSwgMjI3LCA2LCAxLCAyNDksIDEzNiwgMjUxLCAyMjcsIDYsIDEsIDIwOSwgMTMzLCAyNTEsIDIyNywgCisgICAgNiwgMSwgMjE2LCA3MywgMjUxLCAyMjcsIDYsIDEsIDI0OCwgMTk2LCAyNTEsIDIyNywgNiwgMSwgMjEzLCAyNTIsIDI1MSwgCisgICAgMjI3LCA2LCAxLCA3MiwgMjUxLCAyMjcsIDYsIDEsIDIzNywgMTk1LCAyNTEsIDIyNywgNiwgMSwgNzAsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCA3NCwgMjUxLCAyMjcsIDYsIDEsIDI0MSwgMTAwLCAyNTEsIDIyNywgNiwgMSwgMjAwLCAxMCwgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIwMSwgNzIsIDI1MSwgMjI3LCA2LCAxLCAyMTgsIDg5LCAyNTEsIDIyNywgNiwgMSwgMjI3LCA4NiwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDE4MywgMjUxLCAyMjcsIDYsIDEsIDY2LCAyNTEsIDIyNywgNiwgMSwgMjI3LCAxOTksIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyNDYsIDIzNiwgMjUxLCAyMjcsIDYsIDEsIDE0NCwgMjUxLCAyMjcsIDYsIDEsIDIxNCwgMTU3LCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjM2LCA4OSwgMjUxLCAyMjcsIDYsIDEsIDIxOCwgNjAsIDI1MSwgMjI3LCA2LCAxLCAyMDQsIDIxNSwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDIxOSwgMTU0LCAyNTEsIDIyNywgNiwgMSwgMjAzLCA5MCwgMjUxLCAyMjcsIDYsIDEsIDIyNiwgMjA3LCAyNTEsIDIyNywgCisgICAgNiwgMSwgMjM2LCAyOSwgMjUxLCAyMjcsIDYsIDEsIDE5OSwgMTAzLCAyNTEsIDIyNywgNiwgMSwgMjI2LCA0MSwgMjUxLCAKKyAgICAyMjcsIDYsIDEsIDIxMCwgMTE0LCAyNTEsIDIyNywgNCwgMSwgMjUxLCAxMzAsIDI1MSwgMjI3LCA0LCAxLCAyNDIsIDU1LCAKKyAgICAyNTEsIDIyNywgNCwgMSwgMjI1LCAxNzMsIDI1MSwgMjI3LCA0LCAxLCAyMjEsIDE4MCwgMjUxLCAyMjcsIDQsIDEsIDI0OSwgCisgICAgMTM2LCAyNTEsIDIyNywgNCwgMSwgMjA5LCAxMzMsIDI1MSwgMjI3LCA0LCAxLCAyMTYsIDczLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjQ4LCAxOTYsIDI1MSwgMjI3LCA0LCAxLCAyMTMsIDI1MiwgMjUxLCAyMjcsIDQsIDEsIDcyLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjM3LCAxOTUsIDI1MSwgMjI3LCA0LCAxLCA3MCwgMjUxLCAyMjcsIDQsIDEsIDc0LCAyNTEsIDIyNywgNCwgMSwgMjQxLCAKKyAgICAxMDAsIDI1MSwgMjI3LCA0LCAxLCAyMDAsIDEwLCAyNTEsIDIyNywgNCwgMSwgMjAxLCA3MiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIxOCwgODksIDI1MSwgMjI3LCA0LCAxLCAyMjcsIDg2LCAyNTEsIDIyNywgNCwgMSwgMTgzLCAyNTEsIDIyNywgNCwgMSwgCisgICAgNjYsIDI1MSwgMjI3LCA0LCAxLCAyMjcsIDE5OSwgMjUxLCAyMjcsIDQsIDEsIDI0NiwgMjM2LCAyNTEsIDIyNywgNCwgMSwgCisgICAgMTQ0LCAyNTEsIDIyNywgNCwgMSwgMjE0LCAxNTcsIDI1MSwgMjI3LCA0LCAxLCAyMzYsIDg5LCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjE4LCA2MCwgMjUxLCAyMjcsIDQsIDEsIDIwNCwgMjE1LCAyNTEsIDIyNywgNCwgMSwgMjE5LCAxNTQsIDI1MSwgMjI3LCA0LCAKKyAgICAxLCAyMDMsIDkwLCAyNTEsIDIyNywgNCwgMSwgMjI2LCAyMDcsIDI1MSwgMjI3LCA0LCAxLCAyMzYsIDI5LCAyNTEsIDIyNywgCisgICAgNCwgMSwgMTk5LCAxMDMsIDI1MSwgMjI3LCA0LCAxLCAyMjYsIDQxLCAyNTEsIDIyNywgNCwgMSwgMjEwLCAxMTQsIDI1MSwgCisgICAgMjI3LCAyNTEsIDEzMSwgMjI0LCAyNTAsIDI1MSwgMjI3LCAyMiwgMjI0LCAyNTAsIDI1MSwgMjI3LCAyMzYsIDMsIDgxLCAKKyAgICAyNTEsIDIyNywgMjM0LCAyMDMsIDI1MSwgMjI3LCAxMTEsIDIyMSwgMTI2LCAyNTEsIDIyNywgMjM2LCA0LCAxMTEsIDIyMSwgCisgICAgMTI2LCAyNTEsIDIyNywgMjE4LCAxMDAsIDI1MSwgMjI3LCAxNywgMTk5LCA4MSwgMjUxLCAyMjcsIDE3LCAxMDIsIDI1MSwgCisgICAgMjI3LCAxNywgMTA1LCAyNTEsIDIyNywgMTcsIDE0NywgMjUxLCAyMjcsIDE3LCAxNDksIDI1MSwgMjI3LCAxNywgMTY0LCAKKyAgICAyNTEsIDIyNywgMTcsIDE4NywgMjUxLCAyMjcsIDE3LCAyMTAsIDEzNSwgMjUxLCAyMjcsIDE3LCAxOTIsIDI1MSwgMjI3LCAKKyAgICAxNywgMjE5LCAxMTMsIDI1MSwgMjI3LCA4MiwgMjM4LCA0MywgODEsIDI1MSwgMjI3LCA4MiwgMjE0LCA3OSwgODEsIDksIAorICAgIDEzLCAyNTEsIDE0MiwgOSwgMTMsIDI0OCwgMjQwLCA5LCAxMywgMjI3LCAyMjQsIDksIDEzLCAyNDIsIDI5LCA5LCAxMywgCisgICAgMjAxLCA3MiwgOSwgMTMsIDE5OSwgMTA1LCA5LCAxMywgMjM0LCAyMjQsIDksIDEzLCAyMDcsIDksIDksIDEzLCAyMDAsIDQ2LCAKKyAgICA5LCAxMywgMjI3LCA4NiwgOSwgMTMsIDIyNSwgOTEsIDksIDEzLCAyMjIsIDYxLCA5LCAxMywgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyMTEsIDE4NiwgOSwgMTMsIDI1MSwgMTcxLCA5LCAxMywgMjM3LCAxMzQsIDksIDEzLCAyMTIsIDU2LCA5LCAxMywgMjE0LCAKKyAgICAxNTIsIDksIDEzLCAyMTMsIDE1NCwgOSwgMTMsIDIxMCwgNjEsIDksIDEzLCAyMDYsIDE4MywgOSwgMTMsIDIwNiwgMTAyLCAKKyAgICA5LCAxMywgMjI2LCAyMDMsIDksIDEzLCAyMDYsIDExNCwgOSwgMTMsIDI0MiwgNTIsIDksIDEzLCAxOTksIDEwOCwgOSwgMTMsIAorICAgIDIzNSwgMTk0LCA5LCAxMywgMjQwLCAxODEsIDI0OCwgMjQwLCA5LCAxMywgMjQwLCAxODEsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxMywgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxMywgODIsIDI0OCwgMjQwLCA5LCAKKyAgICAxMywgODIsIDIyNywgMjI0LCA5LCAxMywgODIsIDIzNCwgMTE1LCA5LCAxMywgODIsIDIzNCwgMjI0LCA5LCAxMywgODIsIAorICAgIDIwMCwgNDYsIDksIDEzLCA4MiwgMjI3LCA4NiwgOSwgMTMsIDgyLCAyMjUsIDkxLCA5LCAxMywgODIsIDIyMiwgNjEsIDksIAorICAgIDEzLCA4MiwgMjE4LCAyMjcsIDksIDEzLCA4MiwgMjExLCAxODYsIDksIDEzLCA4MiwgMjUxLCAxNzEsIDksIDEzLCA4MiwgCisgICAgMjM3LCAxMzQsIDksIDEzLCA4MiwgMjEyLCA1NiwgOSwgMTMsIDgyLCAyMTQsIDE1MiwgOSwgMTMsIDgyLCAyMTAsIDYxLCA5LCAKKyAgICAxMywgODIsIDIwNiwgMTgzLCA5LCAxMywgODIsIDIwNiwgMTAyLCA5LCAxMywgODIsIDIyNiwgMjAzLCA5LCAxMywgODIsIAorICAgIDI0MiwgNTIsIDksIDEzLCA4MiwgMjM1LCAxOTQsIDksIDEzLCAyMDcsIDUsIDIyNywgMjI0LCA5LCAxMywgMjA3LCA1LCAKKyAgICAyMzQsIDIyNCwgOSwgMTMsIDIwNywgNSwgMjAwLCA0NiwgOSwgMTMsIDIwNywgNSwgMjI1LCA5MSwgOSwgMTMsIDIwNywgNSwgCisgICAgMjE4LCAyMjcsIDksIDEzLCAyMDcsIDUsIDIxMSwgMTg2LCA5LCAxMywgMjA3LCA1LCAyNTEsIDE3MSwgOSwgMTMsIDIwNywgCisgICAgNSwgMjEyLCA1NiwgOSwgMTMsIDIwNywgNSwgMjE0LCAxNTIsIDksIDEzLCAyMDcsIDUsIDIxMCwgNjEsIDksIDEzLCAyMDcsIAorICAgIDUsIDIyNiwgMjAzLCA5LCAxMywgMjA3LCA1LCAyNDIsIDUyLCA5LCAxMywgMjA3LCA1LCAyMzUsIDE5NCwgOSwgMTMsIDIwNywgCisgICAgNSwgMjQwLCAxODEsIDIxOCwgMjI3LCA5LCAxMywgMjA3LCA1LCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyNDgsIDI0MCwgOSwgMTMsIDIwOCwgNTUsIDIyNywgMjI0LCA5LCAxMywgMjA4LCA1NSwgMjM0LCAxMTUsIDksIDEzLCAyMDgsIAorICAgIDU1LCAyMzQsIDIyNCwgOSwgMTMsIDIwOCwgNTUsIDIwNywgOSwgOSwgMTMsIDIwOCwgNTUsIDIwMCwgNDYsIDksIDEzLCAKKyAgICAyMDgsIDU1LCAyMjcsIDg2LCA5LCAxMywgMjA4LCA1NSwgMjIyLCA2MSwgOSwgMTMsIDIwOCwgNTUsIDIxOCwgMjI3LCA5LCAKKyAgICAxMywgMjA4LCA1NSwgMjExLCAxODYsIDksIDEzLCAyMDgsIDU1LCAyNTEsIDE3MSwgOSwgMTMsIDIwOCwgNTUsIDIzNywgCisgICAgMTM0LCA5LCAxMywgMjA4LCA1NSwgMjEyLCA1NiwgOSwgMTMsIDIwOCwgNTUsIDIxNCwgMTUyLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjEwLCA2MSwgOSwgMTMsIDIwOCwgNTUsIDIwNiwgMTgzLCA5LCAxMywgMjA4LCA1NSwgMjA2LCAxMDIsIDksIDEzLCAyMDgsIAorICAgIDU1LCAyMjYsIDIwMywgOSwgMTMsIDIwOCwgNTUsIDI0MiwgNTIsIDksIDEzLCAyMDgsIDU1LCAxOTksIDEwOCwgOSwgMTMsIAorICAgIDIwOCwgNTUsIDIzNSwgMTk0LCA5LCAxMywgMjA4LCA1NSwgMjQwLCAxODEsIDI0OCwgMjQwLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxMywgMjI0LCA3MywgMjUxLCAxNDIsIDksIDEzLCAyMjQsIDczLCAyNDgsIDI0MCwgCisgICAgOSwgMTMsIDIyNCwgNzMsIDIyNywgMjI0LCA5LCAxMywgMjI0LCA3MywgMjQyLCAyOSwgOSwgMTMsIDIyNCwgNzMsIDIzNCwgCisgICAgMTE1LCA5LCAxMywgMjI0LCA3MywgMjAxLCA3MiwgOSwgMTMsIDIyNCwgNzMsIDE5OSwgMTA1LCA5LCAxMywgMjI0LCA3MywgCisgICAgMjM0LCAyMjQsIDksIDEzLCAyMjQsIDczLCAyMDcsIDksIDksIDEzLCAyMjQsIDczLCAyMDAsIDQ2LCA5LCAxMywgMjI0LCAKKyAgICA3MywgMjI1LCA5MSwgOSwgMTMsIDIyNCwgNzMsIDIyMiwgNjEsIDksIDEzLCAyMjQsIDczLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDIyNCwgNzMsIDIxMSwgMTg2LCA5LCAxMywgMjI0LCA3MywgMjUxLCAxNzEsIDksIDEzLCAyMjQsIDczLCAyMzcsIDEzNCwgOSwgCisgICAgMTMsIDIyNCwgNzMsIDIxMiwgNTYsIDksIDEzLCAyMjQsIDczLCAyMTQsIDE1MiwgOSwgMTMsIDIyNCwgNzMsIDIxMywgMTU0LCAKKyAgICA5LCAxMywgMjI0LCA3MywgMjEwLCA2MSwgOSwgMTMsIDIyNCwgNzMsIDIwNiwgMTgzLCA5LCAxMywgMjI0LCA3MywgMjA2LCAKKyAgICAxMDIsIDksIDEzLCAyMjQsIDczLCAyMjYsIDIwMywgOSwgMTMsIDIyNCwgNzMsIDIwNiwgMTE0LCA5LCAxMywgMjI0LCA3MywgCisgICAgMjQyLCA1MiwgOSwgMTMsIDIyNCwgNzMsIDE5OSwgMTA4LCA5LCAxMywgMjI0LCA3MywgMjM1LCAxOTQsIDksIDEzLCAxNzUsIAorICAgIDI0OCwgMjQwLCA5LCAxMywgMTc1LCAyMjcsIDIyNCwgOSwgMTMsIDE3NSwgMjQyLCAyOSwgOSwgMTMsIDE3NSwgMjAxLCA3MiwgCisgICAgOSwgMTMsIDE3NSwgMTk5LCAxMDUsIDksIDEzLCAxNzUsIDIzNCwgMjI0LCA5LCAxMywgMTc1LCAyMDcsIDksIDksIDEzLCAKKyAgICAxNzUsIDIwMCwgNDYsIDksIDEzLCAxNzUsIDIyNSwgOTEsIDksIDEzLCAxNzUsIDIyMiwgNjEsIDksIDEzLCAxNzUsIDIxOCwgCisgICAgMjI3LCA5LCAxMywgMTc1LCAyMTEsIDE4NiwgOSwgMTMsIDE3NSwgMjUxLCAxNzEsIDksIDEzLCAxNzUsIDIzNywgMTM0LCA5LCAKKyAgICAxMywgMTc1LCAyMTIsIDU2LCA5LCAxMywgMTc1LCAyMTQsIDE1MiwgOSwgMTMsIDE3NSwgMjEzLCAxNTQsIDksIDEzLCAxNzUsIAorICAgIDIxMCwgNjEsIDksIDEzLCAxNzUsIDIwNiwgMTgzLCA5LCAxMywgMTc1LCAyMDYsIDEwMiwgOSwgMTMsIDE3NSwgMjI2LCAKKyAgICAyMDMsIDksIDEzLCAxNzUsIDIwNiwgMTE0LCA5LCAxMywgMTc1LCAyNDIsIDUyLCA5LCAxMywgMTc1LCAxOTksIDEwOCwgOSwgCisgICAgMTMsIDE3NSwgMjM1LCAxOTQsIDksIDEzLCAyMTcsIDQ0LCA4NCwgMywgMTU1LCAzLCAyMDYsIDIyMywgOSwgMTMsIDIxNywgCisgICAgNDQsIDE1NSwgMywgMjQyLCAyOSwgMjIyLCAyMDAsIDEwMywgMjM5LCAxNCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMjA4LCAKKyAgICAyNTQsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDIwMSwgNDgsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDE1NywgMjAxLCAKKyAgICAxNiwgMjIyLCAyMDAsIDEwMywgMjEzLCAxNzAsIDIzOSwgMTU4LCAyMjIsIDIwMCwgMTAzLCAyMzUsIDY0LCAyMzksIDE1OCwgCisgICAgMjIyLCAyMDAsIDEwMywgNjQsIDIzOSwgMTU4LCAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAxMjAsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAKKyAgICAyMzYsIDIyOSwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMDksIDEwNiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgMjQ3LCAxOSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgNzYsIDI0NywgMTksIAorICAgIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDEyMCwgNzYsIDI0OSwgODksIDIyMiwgCisgICAgMjAwLCAxMDMsIDEyNiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIzNiwgMjI5LCA3NiwgMjQ5LCA4OSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ5LCA4OSwgCisgICAgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0OSwgCisgICAgODksIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ2LCAKKyAgICAxNTIsIDIyMiwgMjAwLCAxMDMsIDEyMCwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDYsIDE1MiwgCisgICAgMjIyLCAyMDAsIDEwMywgMjM2LCAyMjksIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0NiwgCisgICAgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMDksIDEwNiwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIAorICAgIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgCisgICAgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTUsIDExNiwgMjIyLCAyMDAsIDEwMywgMjE3LCAzMSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjQ5LCA5MCwgMjIyLCAyMDAsIDEwMywgMjQ2LCAxOTMsIDIyMiwgMjAwLCAxMDMsIDIwOCwgMTk5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMDcsIDIzMCwgMjIyLCAyMDAsIDEwMywgMjUwLCAxMjYsIDIyMiwgMjAwLCAxMDMsIDIwMSwgNywgMjIyLCAyMDAsIAorICAgIDEwMywgMjI3LCAxNTksIDIyMiwgMjAwLCAxMDMsIDI0OSwgMTI5LCAxNjYsIDEwMywgMjMzLCAxNzcsIDI0OSwgMTI5LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNzUsIDE2NiwgMTAzLCAyMzMsIDE3NCwgMTY2LCAxMDMsIDIzMywgMTczLCAxNjYsIDEwMywgCisgICAgMjMzLCAxNzIsIDE2NiwgMTAzLCAyMzMsIDE3MSwgMTY2LCAxMDMsIDIzMywgMTcwLCAxNjYsIDEwMywgMjMzLCAxNjksIAorICAgIDE2NiwgMTAzLCAyMzMsIDE2OCwgMTY2LCAxMDMsIDIzMywgMTY3LCAxNjYsIDEwMywgMjMzLCAxNjYsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE2NSwgMTY2LCAxMDMsIDIzMywgMTY0LCAxNjYsIDEwMywgMjMzLCAxNjMsIDE2NiwgMTAzLCAyMzMsIDE2MiwgCisgICAgMTY2LCAxMDMsIDIzMywgMTYxLCAxNjYsIDEwMywgMjMzLCAxNjAsIDE2NiwgMTAzLCAyMzMsIDE1OSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTU4LCAxNjYsIDEwMywgMjMzLCAxNTcsIDE2NiwgMTAzLCAyMzMsIDE1NiwgMTY2LCAxMDMsIDIzMywgMTU1LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNTQsIDE2NiwgMTAzLCAyMzMsIDE1MywgMTY2LCAxMDMsIDIzMywgMTUyLCAxNjYsIDEwMywgCisgICAgMjMzLCAxNTEsIDE2NiwgMTAzLCAyMzMsIDE1MCwgMTY2LCAxMDMsIDIzMywgMTQ5LCAxNjYsIDEwMywgMjMzLCAxNDgsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE0NywgMTY2LCAxMDMsIDIzMywgMTQ2LCAxNjYsIDEwMywgMjMzLCAxNDUsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE0NCwgMTY2LCAxMDMsIDIzMywgMTQzLCAxNjYsIDEwMywgMjMzLCAxNDIsIDE2NiwgMTAzLCAyMzMsIDE0MSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTQwLCAxNjYsIDEwMywgMjMzLCAxMzksIDE2NiwgMTAzLCAyMzMsIDEzOCwgMTY2LCAxMDMsIAorICAgIDIzMywgMTM3LCAxNjYsIDEwMywgMjMzLCAxMzYsIDE2NiwgMTAzLCAyMzMsIDEzNSwgMTY2LCAxMDMsIDIzMywgMTM0LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxMzMsIDE2NiwgMTAzLCAyMzMsIDEzMiwgMTY2LCAxMDMsIDIzMywgMTMxLCAxNjYsIDEwMywgCisgICAgMjMzLCAxMzAsIDE2NiwgMTAzLCAyMzMsIDEyOSwgMTY2LCAxMDMsIDIzMywgMTI4LCAxNjYsIDEwMywgMjMzLCAxMjcsIAorICAgIDE2NiwgMTAzLCA4MywgMjQ5LCAxMjksIDE2NiwgMTAzLCAyMDMsIDQxLCAxNjYsIDEwMywgMjAzLCA0MCwgMTY2LCAxMDMsIAorICAgIDIwMywgMzksIDE2NiwgMTAzLCAyMDMsIDM4LCAxNjYsIDEwMywgMjAzLCAzNywgMTY2LCAxMDMsIDIwMywgMzYsIDE2NiwgCisgICAgMTAzLCAyMDMsIDM1LCAxNjYsIDEwMywgMjAzLCAzNCwgMTY2LCAxMDMsIDIwMywgMzMsIDE2NiwgMTAzLCAyMDMsIDMyLCAKKyAgICAxNjYsIDEwMywgMjAzLCAzMSwgMTY2LCAxMDMsIDIwMywgMzAsIDE2NiwgMTAzLCAyMDMsIDI5LCAxNjYsIDEwMywgMjAzLCAKKyAgICAyOCwgMTY2LCAxMDMsIDIwMywgMjcsIDE2NiwgMTAzLCAyMDMsIDI2LCAxNjYsIDEwMywgMjAzLCAyNSwgMTY2LCAxMDMsIAorICAgIDIwMywgMjQsIDE2NiwgMTAzLCAyMDMsIDIzLCAxNjYsIDEwMywgMjAzLCAyMiwgMTY2LCAxMDMsIDIwMywgMjEsIDE2NiwgCisgICAgMTAzLCAyMDMsIDIwLCAxNjYsIDEwMywgMjAzLCAxOSwgMTY2LCAxMDMsIDIwMywgMTgsIDE2NiwgMTAzLCAyMDMsIDE3LCAKKyAgICAxNjYsIDEwMywgMjAzLCAxNiwgMTY2LCAxMDMsIDIwMywgMTUsIDE2NiwgMTAzLCAyMDMsIDE0LCAxNjYsIDEwMywgMjAzLCAKKyAgICAxMywgMTY2LCAxMDMsIDIwMywgMTIsIDE2NiwgMTAzLCAyMDMsIDExLCAxNjYsIDEwMywgMjAzLCAxMCwgMTY2LCAxMDMsIAorICAgIDIwMywgOSwgMTY2LCAxMDMsIDIwMywgOCwgMTY2LCAxMDMsIDIwMywgNywgMTY2LCAxMDMsIDIwMywgNiwgMTY2LCAxMDMsIAorICAgIDIwMywgNSwgMTY2LCAxMDMsIDIwMywgNCwgMTY2LCAxMDMsIDIwMywgMywgMTY2LCAxMDMsIDIwMywgMiwgMTY2LCAxMDMsIAorICAgIDIwMywgMSwgMTY2LCAxMDMsIDIwMywgMCwgMTY2LCAxMDMsIDIwMiwgMjU1LCAxNjYsIDEwMywgMjAyLCAyNTQsIDE2NiwgCisgICAgMTAzLCAyMDIsIDI1MywgMTY2LCAxMDMsIDIwMiwgMjUyLCAxNjYsIDEwMywgMjAyLCAyNTEsIDE2NiwgMTAzLCAyMDIsIAorICAgIDI1MCwgMTY2LCAxMDMsIDIwMiwgMjQ5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI0OSwgMTI5LCAyMTUsIDEyNSwgMjQ3LCAKKyAgICAxMzQsIDI1MSwgMjQ1LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjA4LCAyNDEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA5LCAKKyAgICAxMDYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNywgCisgICAgMjQ2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI1MSwgMjQ1LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCAKKyAgICA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjM2LCAyMjksIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjM0LCAxMjUsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA5LCAxMDYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIAorICAgIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjE5LCAxMTQsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDIzNCwgMTI1LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIyNywgMjQ2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIAorICAgIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMjYsIDE0NSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMywgMTcwLCAyMjcsIDE1OSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyNTEsIDI0NSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjQxLCA2MywgCisgICAgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDksIDEwNiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyNDEsIDYzLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIyNywgMjQ2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjQxLCA2MywgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgNjMsIDIyNywgMTU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI1MSwgMjQ1LCAKKyAgICA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDEyNiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwOSwgMTA2LCA3NiwgMjQ2LCAKKyAgICA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM4LCAKKyAgICAyMzIsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI3LCAyNDYsIDc2LCAyNDYsIAorICAgIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxNCwgCisgICAgODEsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCA2NCwgMjI3LCAxNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCAwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNjAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ2LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDQzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDIsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDQwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA1OCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU3LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTYsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU0LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNTMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MiwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDUxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0OCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDQ3LCAxNywgMTk5LCA4MiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxOTksIDgyLCAyNDYsIDcwLCAxNywgMTEyLCAKKyAgICAyNDYsIDcwLCAxNywgMTIwLCAyNDYsIDcwLCAxNywgMTI2LCAyNDYsIDcwLCAxNywgMjM2LCAyMjksIDI0NiwgNzAsIDE3LCAKKyAgICAyMzcsIDYxLCAyNDYsIDcwLCAxNywgMjA5LCAxMDYsIDI0NiwgNzAsIDE3LCAyMTAsIDEzNiwgMjQ2LCA3MCwgMTcsIDIzOCwgCisgICAgMjMyLCAyNDYsIDcwLCAxNywgMjE5LCAxMTQsIDI0NiwgNzAsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE5OSwgODEsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTk5LCA4MSwgMTA2LCA4LCA2LCAxLCA2MiwgMTA2LCA4LCA2LCAxLCAyNTAsIDEwMywgCisgICAgMTA2LCA4LCA2LCAxLCAyNDcsIDIyMywgMTA2LCA4LCA2LCAxLCAyNDIsIDE1MywgMTA2LCA4LCA2LCAxLCA3MiwgMTA2LCA4LCAKKyAgICA2LCAxLCAyMzgsIDUsIDEwNiwgOCwgNiwgMSwgMjM2LCAxNTYsIDEwNiwgOCwgNiwgMSwgMjM0LCAyNDcsIDEwNiwgOCwgNiwgCisgICAgMSwgNzAsIDEwNiwgOCwgNiwgMSwgMjI3LCAyNTEsIDEwNiwgOCwgNiwgMSwgMjI3LCAxMTgsIDEwNiwgOCwgNiwgMSwgMTU2LCAKKyAgICAxMDYsIDgsIDYsIDEsIDIyMywgMjQzLCAxMDYsIDgsIDYsIDEsIDIyMCwgMjE0LCAxMDYsIDgsIDYsIDEsIDc0LCAxMDYsIDgsIAorICAgIDYsIDEsIDIxNiwgMjI2LCAxMDYsIDgsIDYsIDEsIDIxNCwgMTY3LCAxMDYsIDgsIDYsIDEsIDE0NiwgMTA2LCA4LCA2LCAxLCAKKyAgICAyMTIsIDEyMiwgMTA2LCA4LCA2LCAxLCAyMDcsIDgzLCAxMDYsIDgsIDYsIDEsIDY2LCAxMDYsIDgsIDYsIDEsIDIwMywgCisgICAgMTY4LCAxMDYsIDgsIDYsIDEsIDIwMSwgMTQ3LCAxMDYsIDgsIDYsIDEsIDIwMCwgMTk1LCAxMDYsIDgsIDYsIDEsIDIwMCwgCisgICAgMTIzLCAxMDYsIDgsIDYsIDEsIDE5OSwgMTU3LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjIsIDQ0LCAzOSwgOCwgNiwgMSwgMjQ3LCAyMjMsIDQ0LCAzOSwgOCwgNiwgMSwgMTQ2LCA0NCwgMjQ3LCA3NywgNDQsIAorICAgIDIwMCwgMTk3LCA5NSwgOCwgNiwgMSwgNjIsIDk1LCA4LCA2LCAxLCAyNTAsIDEwMywgOTUsIDgsIDYsIDEsIDI0NywgMjIzLCAKKyAgICA5NSwgOCwgNiwgMSwgMjQyLCAxNTMsIDk1LCA4LCA2LCAxLCA3MiwgOTUsIDgsIDYsIDEsIDIzOCwgNSwgOTUsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU2LCA5NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDk1LCA4LCA2LCAxLCA3MCwgOTUsIDgsIDYsIDEsIDIyNywgMjUxLCAKKyAgICA5NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDk1LCA4LCA2LCAxLCAxNTYsIDk1LCA4LCA2LCAxLCAyMjMsIDI0MywgOTUsIDgsIDYsIAorICAgIDEsIDIyMCwgMjE0LCA5NSwgOCwgNiwgMSwgNzQsIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgOTUsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCA5NSwgOCwgNiwgMSwgMTQ2LCA5NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDk1LCA4LCA2LCAxLCAyMDcsIDgzLCA5NSwgCisgICAgOCwgNiwgMSwgNjYsIDk1LCA4LCA2LCAxLCAyMDMsIDE2OCwgOTUsIDgsIDYsIDEsIDIwMSwgMTQ3LCA5NSwgOCwgNiwgMSwgCisgICAgMjAwLCAxOTUsIDk1LCA4LCA2LCAxLCAyMDAsIDEyMywgOTUsIDgsIDYsIDEsIDE5OSwgMTU3LCA5NSwgMjMzLCA2OSwgOTUsIAorICAgIDIyMCwgMjM4LCA5NSwgMjExLCAyMDQsIDk1LCAyMDgsIDE4MiwgOTUsIDIxNSwgNDUsIDk1LCAyMDEsIDY1LCAxODksIDQ0LCAKKyAgICA4LCA2LCAxLCA2MiwgMTg5LCA0NCwgOCwgNiwgMSwgMjUwLCAxMDMsIDE4OSwgNDQsIDgsIDYsIDEsIDI0NywgMjIzLCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCAyNDIsIDE1MywgMTg5LCA0NCwgOCwgNiwgMSwgNzIsIDE4OSwgNDQsIDgsIDYsIDEsIDIzOCwgNSwgCisgICAgMTg5LCA0NCwgOCwgNiwgMSwgMjM2LCAxNTYsIDE4OSwgNDQsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxODksIDQ0LCA4LCA2LCAxLCAKKyAgICA3MCwgMTg5LCA0NCwgOCwgNiwgMSwgMjI3LCAyNTEsIDE4OSwgNDQsIDgsIDYsIDEsIDIyNywgMTE4LCAxODksIDQ0LCA4LCAKKyAgICA2LCAxLCAxNTYsIDE4OSwgNDQsIDgsIDYsIDEsIDIyMywgMjQzLCAxODksIDQ0LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgNzQsIDE4OSwgNDQsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDQ0LCA4LCA2LCAxLCAyMTQsIDE2NywgCisgICAgMTg5LCA0NCwgOCwgNiwgMSwgMTQ2LCAxODksIDQ0LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTg5LCA0NCwgOCwgNiwgMSwgMjA3LCAKKyAgICA4MywgMTg5LCA0NCwgOCwgNiwgMSwgNjYsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMywgMTY4LCAxODksIDQ0LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE0NywgMTg5LCA0NCwgOCwgNiwgMSwgMjAwLCAxOTUsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMCwgMTIzLCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCAxOTksIDE1NywgMjEzLCAyMjAsIDIyMiwgODIsIDU0LCAyMTMsIDIyMCwgMjIyLCA3OSwgNTQsIDE4OSwgCisgICAgOTUsIDgsIDYsIDEsIDYyLCAxODksIDk1LCA4LCA2LCAxLCAyNTAsIDEwMywgMTg5LCA5NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIAorICAgIDE4OSwgOTUsIDgsIDYsIDEsIDI0MiwgMTUzLCAxODksIDk1LCA4LCA2LCAxLCA3MiwgMTg5LCA5NSwgOCwgNiwgMSwgMjM4LCAKKyAgICA1LCAxODksIDk1LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDE4OSwgOTUsIDgsIDYsIAorICAgIDEsIDcwLCAxODksIDk1LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTg5LCA5NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDE4OSwgOTUsIAorICAgIDgsIDYsIDEsIDE1NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjIzLCAyNDMsIDE4OSwgOTUsIDgsIDYsIDEsIDIyMCwgMjE0LCAKKyAgICAxODksIDk1LCA4LCA2LCAxLCA3NCwgMTg5LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCAxODksIDk1LCA4LCA2LCAxLCAxNDYsIDE4OSwgOTUsIDgsIDYsIDEsIDIxMiwgMTIyLCAxODksIDk1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDgzLCAxODksIDk1LCA4LCA2LCAxLCA2NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDE4OSwgOTUsIDgsIDYsIAorICAgIDEsIDIwMSwgMTQ3LCAxODksIDk1LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTg5LCA5NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDE4OSwgCisgICAgOTUsIDgsIDYsIDEsIDE5OSwgMTU3LCAyNDIsIDIzMiwgMTg5LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgOTUsIAorICAgIDIzMiwgMjMzLCAxODksIDk1LCAxNzIsIDE4OSwgOTUsIDIxMiwgNjQsIDE4OSwgOTUsIDI1MiwgODksIDE4OSwgOTUsIDIwMSwgCisgICAgNjUsIDUyLCAyNDAsIDIzMCwgOTUsIDI0NiwgMTM2LCA5NSwgMjQzLCAyNiwgOTUsIDIzNiwgMjEwLCA5NSwgMjMyLCAyMjQsIAorICAgIDk1LCAyMjAsIDcsIDk1LCAyMTksIDI1NSwgOTUsIDIxNywgOTgsIDk1LCAyMDksIDUsIDk1LCAxMTUsIDMsIDIzOCwgNDMsIAorICAgIDgxLCA5NSwgMjAyLCAxNjksIDk1LCAxMjYsIDI0MiwgMTUzLCA5NSwgMjExLCAxOTYsIDIxMSwgMjA5LCA5NSwgMTIwLCAKKyAgICAyMjcsIDExOCwgOTUsIDIzNiwgMjI5LCAyMjcsIDExOCwgOTUsIDIzOCwgMjMyLCAyMjcsIDExOCwgOTUsIDIzNywgNjEsIAorICAgIDIxNSwgMTAwLCAxMDIsIDk1LCAyMTAsIDEzNiwgMjE1LCAxMDAsIDEwMiwgOTUsIDIwNCwgMTQ5LCAyMTUsIDEwMCwgMTA1LCAKKyAgICA5NSwgMjA5LCA5MywgMjE2LCAyMjYsIDk1LCAxMTIsIDIzMywgODMsIDIwNCwgMTYwLCAyMTYsIDIyNiwgOTUsIDgsIDQsIDEsIAorICAgIDI0MiwgMTUzLCA5NSwgMjM0LCAxNDIsIDk1LCAyMzQsIDE0MSwgOTUsIDIzNCwgNzQsIDk1LCAyMjQsIDY2LCA5NSwgMjA5LCAKKyAgICAyMDEsIDk1LCAyMDQsIDI0LCA5NSwgMjAyLCAxOTAsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDYyLCAyMTMsIDE2MiwgCisgICAgMjI4LCAxMDAsIDE2LCAxLCAyNTAsIDEwMywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjQ3LCAyMjMsIDIxMywgMTYyLCAKKyAgICAyMjgsIDEwMCwgMTYsIDEsIDI0MiwgMTUzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3MiwgMjEzLCAxNjIsIDIyOCwgCisgICAgMTAwLCAxNiwgMSwgMjM4LCA1LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMzYsIDE1NiwgMjEzLCAxNjIsIDIyOCwgCisgICAgMTAwLCAxNiwgMSwgMjM0LCAyNDcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDcwLCAyMTMsIDE2MiwgMjI4LCAxMDAsIAorICAgIDE2LCAxLCAyMjcsIDI1MSwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjI3LCAxMTgsIDIxMywgMTYyLCAyMjgsIDEwMCwgCisgICAgMTYsIDEsIDE1NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjIzLCAyNDMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIAorICAgIDEsIDIyMCwgMjE0LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3NCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgCisgICAgMjE2LCAyMjYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIxNCwgMTY3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAKKyAgICAxNDYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIxMiwgMTIyLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDcsIAorICAgIDgzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA2NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAzLCAxNjgsIAorICAgIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMSwgMTQ3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDAsIDE5NSwgCisgICAgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAwLCAxMjMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDE5OSwgMTU3LCAKKyAgICA1MiwgMTc3LCAyMzMsIDIwMSwgOTUsIDY5LCAyMjYsIDc2LCA5NSwgNjksIDIxMiwgNjQsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTY5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODEsIDk1LCA2OSwgCisgICAgMjQxLCAxNzUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NSwgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE4NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjEsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU0LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE2MywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjIsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTg1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTMsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxNzgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2NywgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNjUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkxLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcxLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE4OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODAsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY2LCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTUwLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzksIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTU3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUyLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MywgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNzcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQzLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE1OCwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTAsIAorICAgIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg4LCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MiwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNTUsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY4LCAyMDUsIAorICAgIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgCisgICAgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxODIsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTY0LCA0NCwgMTk4LCAxOTgsIDI1MSwgMjIzLCA0NCwgMTk4LCAxOTgsIDI1MSwgMjQ5LCAyNDIsIDE2NCwgMjM3LCAKKyAgICAxMSwgMjQ2LCAxMTAsIDIwNCwgOSwgMjE5LCAxMzAsIDMsIDIwOCwgMTA2LCAyMDcsIDIyMywgMTE5LCAyMjEsIDYyLCAyMDcsIAorICAgIDIyMiwgMjQ2LCAxNDAsIDI1MCwgMTU2LCAyMzksIDExMSwgMjA3LCAyMjEsIDExOSwgMjQ4LCAyNSwgMjEzLCAyMjEsIDI0OCwgCisgICAgNTEsIDI1MCwgMTU2LCAyMTksIDEyOSwgMjAxLCA4MywgMjAxLCA3NywgMjAyLCAxODQsIDIyMSwgMTcyLCAyMDEsIDY3LCAKKyAgICAyMzksIDE4LCAyMzUsIDEyNCwgMjM4LCA1OSwgMjM5LCAxOCwgMjM1LCAxMjQsIDI1MSwgOTIsIDIzOSwgMTgsIDIzNSwgCisgICAgMTI0LCAyNTAsIDE3NCwgMjM1LCAxMjQsIDMsIDIyMiwgMzEsIDIyMCwgOCwgMjIxLCA4MiwgOTksIDIwMSwgNjksIDI0MiwgCisgICAgMjQ0LCAyMjEsIDgyLCA5OSwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCA4MiwgOTksIDIwMSwgNjksIDIzNSwgMTU3LCAyMjEsIAorICAgIDgyLCA5OSwgMjM2LCAxODMsIDIyMSwgODIsIDk5LCAyMDEsIDk3LCAyMzUsIDE1NywgMjIxLCA4MiwgOTksIDIyNSwgNjQsIAorICAgIDIxNCwgODgsIDIyMSwgODIsIDk5LCAyMDEsIDk3LCAyNDIsIDI0NCwgMjIxLCA4MiwgOTksIDI0MiwgMjQ0LCAyMjEsIDgxLCAKKyAgICAyMjAsIDgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgCisgICAgMjI1LCA2NCwgMjE0LCA4OCwgMjIxLCA4MiwgMywgMjM3LCAxODksIDIzNiwgMTgzLCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgCisgICAgMjA3LCAyMjksIDMsIDIzNywgMTg5LCAyMzUsIDEyMSwgMjA4LCAxMDksIDIwOSwgMjU1LCAyMDgsIDEwOSwgMjA2LCA5NCwgCisgICAgNjMsIDIzOSwgMTQ1LCA2NCwgMjA3LCAyMjgsIDY0LCAyMDcsIDIyOSwgMywgNCwgMjQ2LCAxMDEsIDY0LCAyMDcsIDIyOSwgCisgICAgMjQ4LCAyMzcsIDI0NiwgMTAxLCA2NCwgMjA3LCAyMjksIDI0OCwgMjM3LCAyNDYsIDEwMiwgMywgMjEzLCAyMjIsIDI0NiwgCisgICAgMTAyLCAzLCAyMTMsIDIyMiwgMjQ2LCAxMDIsIDMsIDIwOSwgMzUsIDI0NiwgMTAyLCAzLCAyMjQsIDE5MywgMjQ2LCAxMDIsIAorICAgIDMsIDIwNSwgMTUwLCAyMzcsIDEyLCAyMDEsIDE3LCAyNDgsIDEyOCwgMjM3LCAxODksIDIzMywgMTE4LCAyNDAsIDIwMCwgCisgICAgMjA3LCAxNiwgMjQ4LCAxLCAyNDYsIDI0MiwgMjExLCAxODgsIDIzOCwgNTMsIDIwNSwgMTA4LCAyNDEsIDE2OSwgMjA1LCAKKyAgICAxMDgsIDIxNiwgMTc3LCAyMDUsIDEwOCwgMjQ3LCAxODMsIDIzMywgMTE4LCAyMTYsIDI5LCAyMDQsIDIwNSwgMjQ2LCAyNDYsIAorICAgIDI0OCwgMTMxLCAyMTIsIDIzMiwgMjM0LCA3MywgMjA3LCAyMjYsIDI0OCwgMTMxLCAyMzksIDIyLCA3NiwgMjIyLCAxODksIAorICAgIDIzOSwgMjIsIDc2LCAyMTMsIDgzLCAyMzQsIDEwMCwgMjM2LCAyMjksIDIyNSwgMzYsIDI0NiwgMTAwLCAyMjIsIDE2MiwgCisgICAgMjI1LCAzNSwgMjM3LCAxNzIsIDIyNSwgMzUsIDIyNSwgMzYsIDIzNywgMTksIDIyOCwgMTE4LCAyMDEsIDE2LCAyMjAsIAorICAgIDI0NywgMjA1LCAxNzgsIDI1MCwgMTM4LCAyMzUsIDgxLCAyMjIsIDQ5LCAyMDEsIDgxLCAyMDYsIDIzOSwgMjI1LCA1LCAKKyAgICAyNDksIDg1LCAyMTUsIDE1NywgMjEzLCAxNzAsIDI1MSwgMTAsIDIzNSwgNjQsIDI1MSwgMTAsIDIxNiwgNjcsIDIxNiwgNzAsIAorICAgIDI0NiwgMjQ3LCAyMDgsIDYwLCAyMzQsIDIwOCwgMjA5LCA2OCwgNzYsIDIxNSwgMTM3LCAyMjIsIDcyLCAyMTcsIDc5LCAKKyAgICAyNDgsIDExMiwgMjE1LCA1NywgMjI1LCAxNiwgMjEzLCA4NCwgMjQyLCAyNTAsIDIxMywgODQsIDI0OSwgOTcsIDI0MywgMjksIAorICAgIDIxMywgODMsIDI0MiwgMTkyLCAyNiwgMjEzLCA4MywgMjA4LCA5NCwgMjQ4LCA4MiwgMjA4LCAyNDAsIDI0OCwgNjIsIDIzNiwgCisgICAgMjA5LCAyMzYsIDIwNSwgMjEyLCAyNTMsIDIwNywgMTc5LCAyMTUsIDU5LCAyNDIsIDcsIDIxNywgMTIzLCAyMDcsIDE5NywgCisgICAgMjM2LCAyMDYsIDIwOSwgMjI2LCAyMzcsIDcyLCAyNDcsIDE3NywgMywgMjA3LCAxNzIsIDI0MSwgMTEyLCAyMDksIDIzLCAKKyAgICAyMzIsIDIzMiwgMjQyLCAyNDgsIDIxMCwgNzMsIDIzMiwgMjMxLCAyMzIsIDIzMiwgMjQyLCAyNDgsIDIzOSwgMTcwLCAyNDMsIAorICAgIDI4LCAyNDYsIDIwOCwgMTQ4LCAyNDcsIDE0OCwgMjI0LCA5MywgMjQyLCAxODMsIDIzMywgMTkwLCAyMTUsIDYxLCAyMDksIAorICAgIDIzOSwgMjQ4LCAyMTgsIDI0OCwgNzgsIDIxNSwgNjIsIDc2LCAyMzcsIDEsIDI0MywgMjcsIDIzNiwgMjQ2LCAyNiwgMjI2LCAKKyAgICA5NSwgMjA2LCAxOTgsIDIwMSwgMywgMjM0LCAxNzcsIDIxMiwgNDEsIDI0OCwgOTUsIDI2LCAyNDIsIDIwMiwgMjAxLCAxMywgCisgICAgMjM1LCAxMjgsIDI0NiwgODgsIDIzNSwgMTI4LCAyMDUsIDYzLCAyMzksIDE1MSwgMjQ4LCAyNDgsIDIyMSwgMzAsIDI0NiwgCisgICAgMTE3LCAyNDgsIDI0OCwgMjIxLCAyOSwgMjQ5LCAxMzIsIDI0OCwgOTQsIDIzNiwgMjQ2LCAyNiwgMjI2LCA5NiwgMywgMjE1LCAKKyAgICAxMjYsIDI0OCwgOTUsIDMsIDIxNSwgNzQsIDI0MywgMTcsIDIxNSwgNzYsIDIxMywgODUsIDIwMCwgMjI3LCAyMTUsIDIwLCAKKyAgICAyNDgsIDE1OSwgMjQ3LCAxNzYsIDIyNywgMjQ1LCAyNDYsIDIwMCwgMjA1LCAxMDgsIDIzNywgMTU1LCAyNDYsIDE5OSwgCisgICAgMjM3LCA3NSwgMjM3LCA3NiwgMjA4LCAyMzgsIDI0OSwgOTYsIDIxNiwgMTA1LCAyMTUsIDc1LCAyNDMsIDY1LCAyNDksIDk3LCAKKyAgICAyMDYsIDI0MywgMjA1LCAxMDgsIDI0MiwgMjMyLCAyMzcsIDQ3LCAyMTUsIDE1OCwgMjQxLCAxNjYsIDIyNywgMjM2LCAyNDAsIAorICAgIDE5MywgMjQ3LCAxMjMsIDIwOCwgNTksIDIwMSwgMTcsIDI0NiwgMjI0LCAyMjEsIDgyLCAyMDIsIDIyMSwgMjQ3LCA0MiwgCisgICAgMjExLCAyMjIsIDIxMSwgMjQ5LCAyMzUsIDg3LCAyNDcsIDE0NCwgMjM0LCAxMjgsIDMsIDIwNSwgMjI0LCAyMTcsIDc5LCAKKyAgICAyMDYsIDEwNywgMjI1LCAyOCwgMjQ4LCA4OCwgNzYsIDIzNywgMjMsIDIyMSwgMTc0LCAyMjIsIDY5LCAyMTMsIDE0MiwgCisgICAgMjEzLCA4NSwgMzIsIDIyNiwgMjEzLCAzLCAyMjcsIDI0NCwgMjA4LCAzMCwgMjIxLCAyMDgsIDIyNCwgMjI5LCAyMDksIDY2LCAKKyAgICAyNDMsIDM0LCAyMjYsIDkyLCAyNDksIDQsIDI1MCwgMTg0LCAzMiwgMjE4LCAyMDQsIDI0OSwgNCwgMjQxLCAxMTgsIDMyLCAKKyAgICAyMTgsIDIwNCwgMjM3LCA5MCwgMjM2LCAyMTQsIDI1MSwgMjI2LCAyMDYsIDksIDI0NywgMTI0LCAyMzMsIDEyMCwgMjM3LCAKKyAgICAxMjEsIDIwMSwgMzcsIDIxMiwgMjQzLCAyNDYsIDg5LCAyMzcsIDY3LCAyMTUsIDkxLCAyNiwgMjM3LCA3MSwgMjIxLCAyMDgsIAorICAgIDIyMSwgNDgsIDI0NywgMTYyLCAyNDYsIDE1OSwgMjM0LCAxMzIsIDI1MCwgMTkzLCAyMTYsIDE4MCwgMjA1LCAxNTgsIDIzNCwgCisgICAgMTU3LCAyNDYsIDE0NSwgMjA2LCAxNTgsIDIwNiwgMTAsIDI0NiwgMTMxLCAyNDgsIDEyMSwgMjE2LCAyMiwgMjUwLCAxOTEsIAorICAgIDIwMiwgMjMwLCAyMzYsIDYzLCAyNDEsIDEwLCAyMzQsIDQ1LCAyMDksIDU5LCAyMjIsIDIzMCwgMjQ4LCAxNzEsIDIzNiwgCisgICAgNjQsIDI0MSwgNTYsIDI0OCwgODEsIDIzNywgMjUsIDIxNSwgMTI1LCAyNDcsIDEzMiwgMzIsIDIxOCwgMjA5LCAyMjEsIDIxLCAKKyAgICAzMiwgMjE4LCAyMDQsIDIxMSwgMjM1LCAyMzUsIDM0LCAzMiwgMjI2LCAyMTIsIDIwNSwgMzksIDIwMiwgMjEwLCAzMiwgCisgICAgMjExLCAyMTQsIDIxMiwgMTU1LCAyMTAsIDEyLCAzLCAyMTEsIDI1MiwgMjA2LCAxNjMsIDIxMywgMjQxLCAyNiwgMjQ5LCAKKyAgICA5NywgMjA5LCA4NSwgMjYsIDIwOSwgODUsIDI0OCwgMTA1LCAyNDksIDU5LCAyNiwgMjMzLCAxODMsIDI0NiwgMjQ4LCAyMzcsIAorICAgIDUzLCAyMDksIDM0LCAyMTIsIDE1NiwgMjA3LCAyMDIsIDIwOCwgMjA1LCAyMjIsIDY5LCAyMDUsIDY0LCAyMzMsIDEyMSwgCisgICAgMjEzLCAyNDIsIDI1MSwgOTMsIDIzNiwgMjU0LCAyMTIsIDE2OSwgMjM2LCAyNTQsIDIwNywgMTc0LCAyMDEsIDUzLCAyMjQsIAorICAgIDE5OCwgMjM1LCAxMDcsIDIxMywgMjQzLCAyMjEsIDY5LCAyMTMsIDI0MywgMjQ3LCAxMzUsIDI0MiwgMjQxLCAyNDksIDU2LCAKKyAgICAyNiwgMjQ5LCA5NywgMjAyLCAxODMsIDIzNywgMTExLCAyMzMsIDIwNCwgMjA4LCA4OCwgMjYsIDI0OSwgOTcsIDIzMiwgCisgICAgMjMyLCAyMzMsIDIwNCwgMjA4LCA4OCwgMjYsIDIxNCwgMjE3LCAyMDcsIDIzLCAyMDYsIDE2MywgMjE2LCAxOTgsIDI2LCAKKyAgICAyNDksIDk3LCAyMDksIDM2LCAyNDcsIDE0MCwgMjIxLCA2MywgMjQ3LCAxNjAsIDI0OSwgNywgMywgMjA0LCA5LCAyNDgsIAorICAgIDI3LCAyNDMsIDQ4LCAyMzMsIDExMCwgMjQ4LCAyNSwgMjQ2LCAxMzksIDI0MSwgMTIyLCAyMzMsIDExMCwgMjQ4LCAyNiwgCisgICAgMjQ2LCAxMjksIDI0OCwgMjYsIDI0MSwgMTE0LCAyNDEsIDExNSwgMjI4LCAxOSwgMjIwLCAxMTgsIDIxNiwgMTExLCAyMDgsIAorICAgIDExOSwgMjMzLCAxMTAsIDI0OCwgMjYsIDIzMywgMTEwLCAzLCAyMzYsIDQ3LCAyMTcsIDExNSwgMjQ4LCAyNiwgMjI3LCAKKyAgICAyMzYsIDIxNSwgNjcsIDIxNywgMTE0LCAyMzgsIDU4LCAyMTUsIDY3LCAyMTcsIDExNCwgMjMzLCAxMTksIDI0OSwgODEsIAorICAgIDI1MCwgMTI4LCAyMDYsIDE3MSwgMjIyLCAyMzAsIDIzMywgMTE1LCAyMjQsIDYwLCAyMzMsIDExNSwgMjQzLCAzMiwgMjA4LCAKKyAgICA3MiwgMjExLCAyMjEsIDI0MSwgMTI1LCAyMDgsIDcyLCAyMzcsIDE3OCwgMjI4LCAwLCAyMjUsIDc2LCAyMjcsIDIzNiwgCisgICAgMjQ3LCAxMTMsIDIzOCwgNTgsIDI0NywgMTEzLCA2NCwgMjE2LCA0MSwgNjMsIDIxNiwgNDEsIDIwMSwgNzUsIDY0LCAyMzcsIAorICAgIDUzLCAyMDEsIDc1LCA2MywgMjM3LCA1MywgMjEyLCAyMzEsIDYzLCAyMTIsIDIzMSwgMjI1LCAxNjgsIDI0OSwgMTE1LCAKKyAgICAyMTMsIDI0MSwgMjYsIDIwOSwgMjA0LCAyNDgsIDg2LCAyNiwgNDgsIDI1MSwgODgsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgCisgICAgMjA0LCAxMjYsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMjMsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAKKyAgICAxMjEsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMTksIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMTcsIAorICAgIDIxMywgMjA0LCAyMjEsIDYwLCAyMTYsIDIzNSwgMjAxLCA4MywgMjQ4LCAzMSwgMjQyLCAyNTUsIDIwNiwgMiwgMjI0LCAKKyAgICAyNDUsIDIxMywgMjQ0LCAyNDcsIDExMSwgMjM5LCAxNTgsIDI0MiwgMjQwLCAyMDEsIDQwLCAyMDksIDQzLCAyMDksIDQxLCAKKyAgICAyMzMsIDEyMCwgMjEzLCAyMTYsIDIzNSwgMTEyLCAyMTAsIDU5LCAyMjEsIDEwMCwgMjEyLCAyMzUsIDI0NiwgMjM0LCAyNDAsIAorICAgIDIwMCwgMjE1LCAxNjgsIDI0OCwgMTIyLCAyMzgsIDIwMSwgMjE3LCAxMjYsIDIwOCwgMjE4LCAyMTAsIDU0LCAyNDgsIDMwLCAKKyAgICAyNTEsIDUxLCAyMzMsIDE4OSwgMjI1LCAxNjEsIDI0OCwgMjQ2LCAyMzcsIDcxLCAyMDUsIDYzLCAyMzcsIDcxLCAyNDgsIAorICAgIDEyOSwgMjA0LCAxODIsIDIzNCwgMTU1LCAyNDYsIDIzNSwgMjQ5LCAxMzIsIDI0NiwgMjM1LCAyMzYsIDE5OSwgMjQ5LCAKKyAgICAxMzIsIDI0NiwgMjM1LCAyNDgsIDE2MiwgMjE2LCA0MywgMjI2LCA4NiwgMjE1LCA4MCwgMjM5LCAxNDgsIDI0NywgMTY0LCAKKyAgICAyNDksIDEyMCwgMjQ3LCAxNjQsIDI0MCwgMTkyLCAyMjEsIDYxLCAyMzcsIDE4OSwgMjQzLCAwLCAyMzcsIDE4OSwgMjA2LCAKKyAgICAzLCAyMzcsIDE4OSwgMjEzLCAyNDUsIDIzNywgMTg5LCAyNDcsIDExMiwgMjM3LCAxODksIDIzOSwgMTU5LCAyMzcsIDE4OSwgCisgICAgMjA4LCAyMDMsIDIwMSwgNDAsIDIzMywgMTIxLCAyMzcsIDE4OSwgMjIxLCAxMDEsIDIzNywgMTg5LCAyNDAsIDIwMSwgMjM3LCAKKyAgICAxODksIDIxNSwgMTY5LCAyMzcsIDE4OSwgMjM2LCAyMDMsIDIzNywgMTg5LCAyMzQsIDIwNSwgMjM3LCAxODksIDIwMCwgCisgICAgMjUzLCAyMzcsIDE4OSwgMjQ5LCAyLCAyMzcsIDE4OSwgMjE2LCAxNTksIDIzNywgMTg5LCAyMTUsIDE2OSwgMjE4LCAyMTYsIAorICAgIDIxNiwgODUsIDIxNSwgNywgMjQ2LCAyMTksIDIzOCwgMTUsIDIzOCwgMjIsIDIzOSwgMjEsIDIxOCwgMjE2LCAyMjEsIDU4LCAKKyAgICAyMDUsIDE2MywgNjQsIDExNSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2NCwgMTI3LCAyMTUsIDk2LCAyNDksIAorICAgIDEyNywgMjI4LCAxMDMsIDY0LCA0OSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2NCwgNTEsIDIxNSwgOTYsIDI0OSwgCisgICAgMTI3LCAyMjgsIDEwMywgMjM3LCA2NSwgMjM0LCAyMDAsIDU0LCAyMDEsIDc1LCAyMzQsIDIwMCwgNTQsIDIxNywgOTksIAorICAgIDIzNCwgMjAwLCA1NCwgMjA2LCAzMywgMTE1LCA1NCwgMjA2LCAzMywgMTI3LCA1NCwgMjQ2LCAxMzAsIDIzNCwgMTc1LCA1NCwgCisgICAgMTc2LCAyMzQsIDE3NSwgNTQsIDI0MiwgMjI2LCAyMDAsIDI0OSwgMjM0LCAxNTcsIDIzOCwgMTgsIDIyMCwgMzAsIDIwNywgCisgICAgODIsIDIyNywgMjI2LCAyMzksIDE1MywgMjI2LCAxNDgsIDI0OCwgMTczLCAyMDAsIDI0OSwgMjQ2LCAxMDMsIDIxNCwgMTk4LCAKKyAgICAyMzQsIDE3OSwgMjE1LCA1OCwgMjIyLCAxNzAsIDIxMCwgNSwgMjUwLCAxNTEsIDIxMCwgNSwgMjM0LCA1OCwgMjEwLCA1LCAKKyAgICAyMDAsIDI0OSwgMjEyLCAxMCwgMjAwLCAyNDksIDI0OCwgMTA0LCAyMzYsIDI1MiwgMjQ3LCAyNDksIDIyOCwgMTE4LCAyMDksIAorICAgIDE1NSwgMjQ3LCAyNDgsIDIyOCwgMTE4LCAyMDksIDE1NSwgMjQ4LCA3NiwgMjM1LCAxNDAsIDIyMiwgMTgwLCAyMDAsIDI1MCwgCisgICAgMjM3LCAxNjksIDIyMiwgMTgxLCAyNiwgMjAwLCAyNTEsIDIzMywgMTk4LCAyMzQsIDE3NCwgMTIwLCAyMjIsIDQxLCAyMzMsIAorICAgIDE5OCwgMjM0LCAxNzQsIDEyMCwgMjAwLCAyNDgsIDIzMywgMTk4LCAyMzQsIDE3NCwgMjE1LCA4OCwgMjE3LCAxMTMsIDIwMCwgCisgICAgMjUxLCAzLCAyNDgsIDExLCAyMzksIDE5LCAyNDgsIDUyLCAzLCAyMDMsIDUwLCAyMTYsIDExLCAzLCAyNDgsIDEzMywgMjM0LCAKKyAgICAyMjEsIDIyMiwgMTgxLCAzLCAyMzUsIDQ3LCAyMTUsIDIwNSwgMjIyLCAxNjYsIDIyMiwgMTgxLCAzLCAyMDQsIDE5MSwgCisgICAgMjE3LCA5MSwgMjIyLCAxODAsIDIxNywgOTEsIDIwMCwgMjUwLCAyNDksIDEzMSwgMjQzLCA0OSwgMjAwLCAyMzQsIDIxNSwgCisgICAgMTIsIDIyNywgMjM2LCAyMTcsIDEwOSwgMjI3LCAyMzYsIDIzNSwgMTExLCAyMzUsIDE2OSwgMjQ5LCAxMzIsIDI1MSwgNzQsIAorICAgIDIzOCwgMjcsIDI1MSwgMTMyLCAyNTEsIDEzMywgMjIxLCA5MSwgMjI4LCAxMjMsIDIwOSwgODAsIDIyOCwgOTIsIDI0MSwgCisgICAgMTExLCAyMTYsIDEwLCAyMzUsIDQxLCAyNDIsIDEyLCAyMjQsIDE1OSwgMjIwLCAxNDIsIDIxNSwgODcsIDIzNywgMTkwLCAKKyAgICAyMjIsIDEzMCwgMjM0LCAyMjAsIDI0OSwgNzUsIDIxNSwgOTAsIDIwNywgMTAyLCAyMTUsIDE2MSwgMjI2LCAxMzAsIDgxLCAKKyAgICAyMjQsIDYwLCAyMjQsIDIzNiwgMjEzLCAyNiwgMjM2LCA1LCAyMDgsIDc4LCAyMjYsIDEyOSwgMjQ4LCA4NywgMjQzLCAyLCAKKyAgICAzLCAyMzQsIDEyNywgMjAxLCA2MCwgMjQ5LCAwLCAyMzQsIDEyNywgMjQ4LCA0NiwgMjM0LCAxMjcsIDEyMCwgMjM0LCAxMjUsIAorICAgIDIwOCwgMjM2LCAyMzQsIDEyNywgMjM1LCA1NywgMjM0LCAxMjcsIDIzNCwgMTI4LCAzLCA0OCwgMjQ4LCAxMjcsIDIzNCwgCisgICAgMTI3LCAyMzUsIDY0LCAyMzQsIDEyNywgMjAwLCA0NCwgMjM0LCAxMjcsIDIxNCwgMTk5LCAyMzQsIDEyNywgMjM0LCAxMjgsIAorICAgIDMsIDIxMywgODUsIDIxMywgOTksIDIzNCwgMTI1LCAyMzQsIDEyOCwgMjQxLCAxNjYsIDI0MSwgNjUsIDIxMCwgODYsIDMsIAorICAgIDM1LCA3MywgMjI4LCA3MywgMjM4LCAyMDQsIDE2MiwgMjQ4LCAyMywgMjUxLCA3MywgOTksIDI0OCwgMTEzLCAyMDksIDcxLCAKKyAgICA5OSwgMjQ2LCA4MSwgOTksIDIwOCwgMjEyLCAyMDcsIDE4MSwgOTksIDIzOSwgMTQ1LCAyNDEsIDI0NSwgOTksIDIxNSwgCisgICAgMTYyLCA3NiwgMjE1LCA4MSwgMjM3LCAzNywgMjQ4LCAxODUsIDI0MCwgMjMxLCA5OSwgMjA4LCAyMjgsIDI0OSwgOTYsIAorICAgIDIwNiwgNTIsIDI0OSwgOTYsIDY0LCAyMzcsIDI0LCAyMzMsIDgzLCAyMTUsIDk0LCA5OSwgMjIxLCAxMDUsIDI0OSwgMTEzLCAKKyAgICAyNDIsIDE5NSwgMjM4LCA0NSwgODAsIDI0MCwgMTk0LCA1NCwgMjQyLCAyNDYsIDI0NywgMTMzLCAyNDksIDgwLCAzLCAyMDAsIAorICAgIDQyLCA1NCwgMjQ5LCA4MCwgMywgMjQwLCAxOTQsIDU0LCAyNDksIDgwLCAzLCAyMzgsIDYxLCA1NCwgMjQ5LCA4MCwgMywgCisgICAgMjE1LCA1NiwgNTQsIDIyMSwgMTA1LCAzLCAyMDEsIDExLCAyNDcsIDE2LCAzLCAxODIsIDIwNSwgMTA0LCAyNiwgMjAwLCAKKyAgICA0MiwgNTQsIDIxMSwgMTk5LCAyMTYsIDksIDI0MywgNzAsIDI0OCwgNTAsIDIyMSwgMTYyLCAyMzcsIDI5LCAyNDAsIDI1MywgCisgICAgMjE3LCAzNywgMjQxLCAyLCAyMzksIDEwNiwgMjM3LCA5NywgMjM3LCA5LCAxNzYsIDIzNywgOTcsIDIzNywgOSwgMjE2LCAKKyAgICAxOTYsIDMsIDI0MiwgMTk4LCAyMTYsIDE5NiwgMjM3LCAxODIsIDIwMywgMjI4LCAyNDcsIDE3MCwgMjA2LCAxOTcsIDI0NywgCisgICAgMTcwLCAyNDcsIDEzNCwgMjI4LCAxMDMsIDI0NywgMTYsIDMsIDE4MiwgMjA1LCAxMDMsIDI0NywgMTYsIDMsIDE5MSwgMjA1LCAKKyAgICAxMDMsIDI0OSwgNzcsIDI0NywgMTUsIDI0NiwgMTE2LCAyMTQsIDE5NCwgMjEyLCAyMjEsIDIxNCwgMTk0LCAyMTYsIDEzMywgCisgICAgMjA4LCA2OCwgMjEyLCAxNjMsIDIwNSwgOTUsIDIxMiwgMTYzLCAyNDgsIDEwOSwgMjA3LCAyMSwgMjI1LCAzMywgMjE4LCAKKyAgICAyMDcsIDIxOCwgMjA4LCAzLCAyNDEsIDE2NSwgMjQzLCAxLCAyNDYsIDExMCwgMjQ4LCAxMTAsIDE3NiwgMjQ4LCAxMTAsIAorICAgIDIzNSwgNjQsIDI0OCwgMTEwLCAyNDgsIDEyNywgMjQ4LCAxMTAsIDIxNywgMzIsIDI0OCwgMTEwLCAyNDgsIDEwNywgMjIwLCAKKyAgICAxMzYsIDI0OSwgMTE3LCAyMTEsIDIwNywgMjIyLCA0MiwgMjA2LCAxNzYsIDIxMywgMTg0LCAyMTYsIDE5NCwgMjM3LCAxNTIsIAorICAgIDIyMiwgMjMwLCAyMTEsIDI0OCwgMjUxLCA0OCwgMjE0LCAyMTgsIDI1MSwgMjMyLCAyMjQsIDYyLCAyNDcsIDAsIDIyMiwgCisgICAgNTQsIDIxNiwgMjUzLCAyMDUsIDExMSwgMjI4LCAxMTQsIDIwNSwgMTExLCAyMTYsIDIwMywgMjM5LCA3NCwgOTksIDIyOCwgCisgICAgMTExLCAyMzgsIDE0NCwgMjM4LCAxNDUsIDMsIDE5MSwgNTUsIDU2LCAyNDYsIDExMCwgMjIyLCAxOTUsIDMsIDIyNCwgNTIsIAorICAgIDIzNywgNTMsIDI0NiwgMTEwLCAyMjIsIDE5NSwgMywgMjEzLCAyMjAsIDIzNywgNTMsIDE3NiwgMjIyLCAxOTUsIDMsIDIxMywgCisgICAgMjIwLCAyMzcsIDUzLCAxNzYsIDIyMiwgMTk1LCAzLCAyMjQsIDUyLCAyMzcsIDUzLCAyMTUsIDY0LCAyMTUsIDY1LCAyMzMsIAorICAgIDEyNCwgMjIwLCA0LCAyMjEsIDEzNCwgMjE1LCAyMTMsIDIyMSwgMTM0LCAyMTUsIDIxNCwgMywgODcsIDU1LCAyNTAsIDE1NiwgCisgICAgMjI1LCAyOCwgMjAyLCAyMzMsIDIyMSwgMTMzLCAyMjEsIDEzNCwgMjE1LCAyMTQsIDIxNywgMTE2LCAyMTgsIDI0MiwgMjIxLCAKKyAgICAxMzQsIDIxNSwgMjEyLCAyNTEsIDQ5LCAzLCAyNDksIDY2LCAyNDcsIDE2MiwgMjQ3LCAxNjMsIDMsIDIzNywgNDYsIDIwMiwgCisgICAgMjMwLCAyNDcsIDE2MiwgMjA2LCAxNzMsIDIxMywgMjM2LCAyMDIsIDIyOSwgMjM3LCA5MCwgMjE0LCAyNTAsIDIxNSwgNzEsIAorICAgIDIwOCwgODksIDIxNSwgMzMsIDI0OSwgNiwgMjA0LCAxNDUsIDg3LCAyNTAsIDE5OSwgMjQ2LCAxMTIsIDg3LCAyNiwgOTgsIAorICAgIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAyNDYsIDExMiwgODcsIDI2LCA5OCwgMTc2LCAyNDYsIDE1NiwgMjUwLCAyMDAsIAorICAgIDMsIDQ0LCAxMTIsIDIxNiwgMjQyLCAyNDYsIDExMiwgMTkxLCAyNiwgMTgyLCAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgCisgICAgMjUxLCA0NywgMTkxLCAyNiwgMTgyLCAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgMTI4LCAyNDgsIDQ5LCA5OSwgMTIyLCAKKyAgICAyNDgsIDQ5LCA5OSwgMjA4LCAyMzMsIDMsIDI0NywgMTU1LCA5NywgMjA4LCAyMzIsIDIwOCwgMjMzLCAzLCAxMTIsIDIwOSwgCisgICAgMSwgMjAxLCA3NywgMjA4LCAyMzMsIDMsIDEyNiwgMjA5LCAxLCAyMDEsIDc2LCAyNDksIDQ5LCAyMzgsIDIwNCwgMjE1LCAKKyAgICAxMTgsIDIyNSwgMjMsIDIyMiwgMjA3LCAyMzUsIDEyOCwgMjEzLCA0MSwgMjIyLCAyMDcsIDIzNSwgMTI4LCAyMjQsIDEwNCwgCisgICAgMywgMjI4LCA4NCwgMjE2LCA0NywgMjQ2LCAxMTAsIDIyNCwgMTA0LCAzLCAyMjYsIDIxNCwgMjI2LCAyMTQsIDIyNCwgMTAzLCAKKyAgICAxNzYsIDIyNCwgMTAzLCAyNDgsIDIzMCwgMjQ4LCAyMzEsIDMsIDI0NywgMTU1LCA5NywgMjQ4LCAxMDgsIDIyNCwgMTY3LCAKKyAgICA5OSwgMjEzLCAyMzcsIDI0NywgMjQzLCAyNDksIDEzMCwgMywgOTgsIDU1LCA1NiwgMjM4LCAxNzEsIDMsIDk4LCA1NSwgNTYsIAorICAgIDIxNywgNzksIDMsIDIzOCwgNDMsIDEzNCwgMywgNDksIDUxLCA1NSwgNTYsIDIwOSwgOSwgMywgODcsIDU1LCA1NiwgMjA1LCAKKyAgICAxNTgsIDMsIDE4MiwgNTUsIDU2LCAyMTgsIDI0MiwgMTEyLCAyMDMsIDI1MywgMjM4LCAyMzAsIDk5LCAyMjYsIDIxMSwgCisgICAgMjA2LCAxNjYsIDIyOCwgNzgsIDE2LCAzNiwgOCwgNiwgMjI0LCAyMzUsIDIyOCwgNzgsIDE2LCAzNiwgOCwgNCwgMjI0LCAKKyAgICAyMzUsIDIyOCwgNzgsIDE2LCAzNiwgMjE4LCA5NCwgMjI4LCA3OCwgMTYsIDM2LCAyMDcsIDExNiwgMjI4LCA3OCwgMTYsIAorICAgIDM2LCA4LCAyMjQsIDIzNSwgMjM3LCA3NywgMjM4LCAyMDQsIDIwNSwgMTUzLCAyMDAsIDIyNSwgMjM0LCAyMDYsIDIxOCwgCisgICAgNzcsIDI2LCAyNDgsIDExNSwgMjMzLCAyMDUsIDIxNSwgMTQzLCAyMjEsIDIwNywgMjA2LCAxNzQsIDI0MiwgMjE2LCAyNDksIAorICAgIDk3LCAyMDksIDEwNiwgMjE1LCA5OCwgMjA4LCAxMTAsIDMsIDEwMSwgMjQwLCAxODIsIDIyNywgMjM2LCAxNiwgMzYsIDI0OCwgCisgICAgMjQzLCAyMDUsIDkzLCAyMzgsIDE4NywgNjMsIDUyLCAyNDcsIDI0MywgNjQsIDUyLCAyNDcsIDI0MywgMjI1LCA3MSwgMjEzLCAKKyAgICAxNzAsIDI0NiwgMTU1LCAyMjUsIDcxLCAyNDgsIDEyNywgMjQ2LCAxNTUsIDIyNSwgNzEsIDIxNywgMzIsIDI0MSwgNjQsIAorICAgIDIyNSwgNzEsIDI0OCwgMTI3LCAyNDEsIDY0LCA0LCAyMTcsIDMyLCAyNDEsIDY0LCA0LCAyNDgsIDEyNywgMjQxLCA2NCwgCisgICAgMjAzLCAyMjcsIDIxMywgMTcwLCAyMDUsIDk4LCAyMzksIDE2NiwgMjEzLCAxNzAsIDIwNSwgOTgsIDIwMywgMjI3LCA0LCAKKyAgICAyMTMsIDE3MCwgMjA1LCA5OCwgMjM5LCAxNjYsIDQsIDIxMywgMTcwLCAyMDUsIDk4LCAyMjQsIDU0LCA1MSwgMjEwLCAxMDEsIAorICAgIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDUxLCAyMTAsIDEwMSwgNjQsIDI0NiwgMTU1LCA0NCwgMjQyLCAyMzUsIDIxNSwgCisgICAgODQsIDI0MiwgMjM1LCAyMTUsIDg1LCAzLCAyMzQsIDIxMiwgNTcsIDI0MiwgMjM1LCAyMTUsIDg0LCAyMTgsIDIxMSwgNDksIAorICAgIDIxMCwgMTcwLCAzLCAxMjYsIDI0MCwgMTgwLCAyMTgsIDIxMSwgNTEsIDIxMCwgMTcwLCAzLCAxMjYsIDI0MCwgMTgwLCAxNiwgCisgICAgMzYsIDIyMiwgMTQ0LCAyNDcsIDIyLCA2NCwgOCwgMjQyLCAyMzQsIDgwLCA4LCAyNDIsIDIzNCwgMjQ3LCA2MCwgMjQyLCAKKyAgICAyMzQsIDIxNywgODcsIDk5LCAyMzksIDE2OSwgNzYsIDIxNiwgNzEsIDIyNywgMTAzLCAyMjEsIDc0LCAyMDcsIDExMCwgCisgICAgMjIyLCAzNywgMywgMjE5LCAxMTQsIDI0OCwgNjUsIDI0OCwgODMsIDc2LCAyMzMsIDM1LCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDExMiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMTIwLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAxMjYsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzNiwgMjI5LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgCisgICAgMTkwLCAyMzcsIDYxLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDksIDEwNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAKKyAgICAyMzcsIDE5MCwgMjEwLCAxMzYsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjMyLCAyMTcsIDEzMiwgCisgICAgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTksIDExNCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA2LCAxNjcsIAorICAgIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjAwLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAyMDQsIDE2NSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE3LCA3MiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDQsIAorICAgIDEzOSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDYsIDM5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzNiwgMjI1LCAyNDYsIDExNCwgCisgICAgMjM3LCAxOTAsIDIzNywgNTksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA5LCAxMDIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjEwLCAKKyAgICAxMzQsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMzEsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE5LCAxMTIsIDI0NiwgCisgICAgMTE0LCAyMzcsIDE5MCwgMjA2LCAxNjUsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAxOTgsIDI0NiwgMTE0LCAyMzcsIAorICAgIDE5MCwgMjA0LCAxNjMsIDUxLCAyMDgsIDIzMiwgNTEsIDIwOCwgMjMzLCAzLCAxMTIsIDIwOSwgMSwgMjAxLCA3NywgNTEsIAorICAgIDIwOCwgMjMzLCAzLCAxMjYsIDIwOSwgMSwgMjAxLCA3NiwgMjQ4LCAxOCwgMjQ4LCAxOSwgMywgMjA5LCAxLCAyMDEsIDc2LCAKKyAgICAyMTMsIDI1LCAyNDgsIDIzMCwgMjQ4LCAxMTAsIDI0NywgMTUzLCAyMjIsIDE2NywgMjQ2LCAxMTMsIDYzLCAyMDksIDgxLCAKKyAgICAyNiwgMjQyLCAyMzMsIDIxOCwgMjQyLCAyMTUsIDE0OSwgMjMzLCAxOTcsIDIyMiwgMTgxLCAyMjgsIDExOCwgMjQ3LCAyNTEsIAorICAgIDIwNywgMjQyLCAyMjQsIDIyOCwgMjA5LCA2OSwgMjE3LCAzNCwgMjA4LCAxOTQsIDI0MSwgMjUwLCAyMDcsIDIyNCwgMjA4LCAKKyAgICAyMjEsIDIwOCwgMjIyLCAyMDEsIDYxLCAyMjcsIDE0OCwgMjIyLCAxODEsIDI0MiwgMTEsIDQ5LCAyMzQsIDIwMCwgMjA2LCAKKyAgICAxNzYsIDIxMywgMTg0LCAyMDYsIDE3NiwgMjEzLCAxODUsIDMsIDIxNiwgMTk1LCA1MSwgMjM0LCAyMDAsIDIwNiwgMTc2LCAKKyAgICAyMTMsIDE4NCwgNjQsIDIwNSwgMTM5LCAyMDYsIDE3NSwgNjMsIDIwNSwgMTM5LCAyMDYsIDE3NSwgMjA2LCAxNzYsIDIxNywgCisgICAgNzksIDIwNSwgMTU4LCA3NiwgMjIxLCAxMzAsIDI0NiwgMTM0LCAyMjEsIDEzNCwgMjE1LCAyMTMsIDI0OSwgMTMwLCA3NiwgCisgICAgMjM4LCAxNDQsIDIwOCwgMTE1LCAyMzgsIDE0NCwgMjM4LCAxNDUsIDMsIDIyNCwgMTkzLCAyMzcsIDE2LCAyMzgsIDE0NCwgCisgICAgMjE2LCA0OCwgMTE5LCAyMDgsIDExNSwgMjM4LCAxNDQsIDIyNCwgMTY2LCAyMTYsIDEzMiwgNjMsIDIxNCwgMTk0LCAyMjQsIAorICAgIDU0LCA0OSwgMjE2LCA0NiwgMjI0LCA1NCwgNDksIDI0OSwgOTIsIDIxNiwgNDcsIDIyNCwgNTQsIDQ5LCAyMzYsIDIzMSwgCisgICAgMjE2LCA0NywgMjI0LCA1NCwgNDksIDIxNiwgMTg5LCAyMjQsIDU0LCA0OSwgMjQyLCAyNDksIDQ5LCAyMDAsIDIxOSwgMjM0LCAKKyAgICAxOTksIDIwNCwgMTg1LCAyMTcsIDk5LCAyMzQsIDIwMCwgNTQsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgMjM3LCA4MiwgCisgICAgMjA4LCAyMTEsIDIxMywgMTA1LCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIDIzNywgODIsIDIwOCwgMjExLCAyMTMsIDEwNSwgCisgICAgMjA2LCAzMywgMTE1LCA1NCwgMjEzLCAxMDUsIDIwNiwgMzMsIDEyNywgNTQsIDIxMywgMTA1LCAyMDIsIDIzMiwgMjM0LCAKKyAgICAxOTksIDIxMywgMTA1LCAyMzQsIDIwMCwgMywgMTAxLCAyMzcsIDg3LCAyMzgsIDMyLCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIAorICAgIDIxNiwgMTEwLCAyNDgsIDIwNiwgMTAxLCAyNiwgMjEzLCAyNywgMjM3LCA4MSwgNjQsIDEyNywgMjE1LCA5NiwgNDksIDIzNCwgCisgICAgMjAwLCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgNTEsIAorICAgIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCA1MSwgCisgICAgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCA0OSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgNTEsIDIxNSwgOTYsIAorICAgIDI0OSwgMTI3LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIAorICAgIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIAorICAgIDYzLCAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgMTE1LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCAKKyAgICAxMjcsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIDIzNCwgMTI3LCAyNDEsIDExMCwgMjQzLCA3MCwgMjI2LCAKKyAgICAyMTMsIDI2LCAyMjEsIDYwLCAxMjYsIDIyMCwgMTIsIDI0MywgNjksIDIxNSwgOCwgMjE1LCAxMDQsIDI0NywgMTcyLCA2MywgCisgICAgMjM0LCAxNjUsIDIxMCwgNTUsIDIzNywgMjksIDI0MCwgMjUzLCA2NCwgMjM0LCAxNjUsIDIxMCwgNTUsIDIzNywgMjksIAorICAgIDI0MCwgMjUzLCAyMDksIDIzLCAyMTAsIDU1LCAyMzcsIDI5LCAyNDAsIDI1MywgMjA2LCAyMzUsIDI0NywgMTE3LCAyMDEsIAorICAgIDYsIDIyNiwgMjEyLCAxMTIsIDI0NywgMjQ0LCAyMjEsIDYwLCAxMjAsIDI0NywgMjQ0LCAyMjEsIDYwLCAxMjYsIDI0NywgCisgICAgMjQ0LCAyMjEsIDYwLCAyMDUsIDEzMCwgNDAsIDIxNiwgOSwgMjQzLCA3MCwgMjM0LCAxNjUsIDI0MCwgMjUzLCAyMTEsIAorICAgIDIwOSwgMjE1LCA5LCAyMzIsIDIyNSwgMjM3LCAxNTIsIDIzMiwgMjI1LCAyMTcsIDM3LCAyNDEsIDMsIDIzMiwgMjI1LCAKKyAgICAyNDAsIDIwNSwgMywgMjA2LCAxMjYsIDI0MCwgMjA1LCAzLCAyMDYsIDEyNywgMjYsIDIxNSwgMTk4LCAyNDAsIDIwNSwgMywgCisgICAgMjE1LCAxOTgsIDIzNiwgMjE2LCAzLCAyMTUsIDE5OCwgMjM2LCAyMTYsIDMsIDIwNSwgMjM4LCAyMzYsIDIxNiwgMywgMjUxLCAKKyAgICA4NiwgMjAwLCAxOTUsIDYzLCAyMzcsIDksIDIzNywgOSwgMTc2LCAyMzcsIDksIDI0NywgMTM0LCAxMjQsIDI0MCwgMjM4LCAKKyAgICAyNDcsIDEzNCwgMjM3LCA5NywgMjQ4LCA3OCwgMjM3LCA5NywgMjQ3LCAxODUsIDIzOCwgMTgxLCAyMTgsIDIwOSwgMjM4LCAKKyAgICAxODEsIDIxOCwgMjEwLCAyMTYsIDE5NSwgMjM4LCAxODEsIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjE4LCAyMDksIDIxOCwgCisgICAgMjEwLCAyMTYsIDE5NSwgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMzgsIDE4MSwgMjQwLCAyMDQsIDIzOCwgMTgxLCAyMTYsIAorICAgIDE5NSwgMjM4LCAxODEsIDIxNiwgMTkzLCAyNDAsIDIwNCwgMjE2LCAxOTUsIDIxNiwgMTkzLCAyMDEsIDg3LCAyMDgsIDIxOCwgCisgICAgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMDgsIDIxOCwgMjQ3LCAxNzEsIDIxNiwgMjAxLCAyNDEsIDExMCwgMjAxLCAxNSwgMjIxLCAKKyAgICAxNTksIDIyMiwgMTIwLCAyMTYsIDI0NCwgMjQ2LCAxMTIsIDUxLCAyNiwgNDksIDIxMCwgMTcwLCAyNTAsIDE5OSwgMjQ3LCAKKyAgICAxNTUsIDIwMCwgMTk1LCAyMjgsIDEwOSwgMjM3LCAzLCAyMDksIDkwLCA5OSwgMjQxLCAxNjQsIDIzNywgMywgMjA5LCA5MCwgCisgICAgOTksIDI0MywgNzEsIDQwLCAyMjYsIDIxNCwgMjEyLCAyNDQsIDIyMCwgNCwgMjE2LCAxOTYsIDMsIDQ0LCAyMDYsIDEyNiwgCisgICAgMjA4LCA4MCwgMjQ3LCAxNSwgMjQyLCA0MSwgMjI2LCA5NSwgMjI0LCAxNjAsIDIwOCwgMjMxLCAyMzQsIDEzNywgMjI4LCAKKyAgICAxMTgsIDIwOSwgMTU1LCAxMjYsIDIxMywgMTk1LCA1NiwgMTI2LCAyMTMsIDE5NSwgNTcsIDEyNiwgMjEzLCAxOTUsIDIyNSwgCisgICAgMjgsIDEyNiwgMjEzLCAxOTUsIDIxMywgNDYsIDQ5LCAyMDgsIDIyOCwgMjQ4LCAzNSwgNTEsIDIwOCwgMjI4LCAyNDgsIDM1LCAKKyAgICAxMjAsIDIwOCwgMjI4LCAyNDgsIDM0LCAxMjYsIDIwOCwgMjI4LCAyNDgsIDM0LCA0OSwgMjA2LCA1MiwgMjQ4LCAzNSwgNTEsIAorICAgIDIwNiwgNTIsIDI0OCwgMzUsIDQ5LCAyNTEsIDczLCAyNDgsIDM1LCA1MSwgMjUxLCA3MywgMjQ4LCAzNSwgMjIxLCA4NiwgCisgICAgMjQ4LCAzNSwgMjI0LCAxOTQsIDIyMSwgODYsIDI0OCwgMzUsIDIyNCwgMTk0LCAyMjEsIDg1LCAyNDksIDk0LCAxMDAsIDMsIAorICAgIDI0OSwgOTMsIDI0OSwgOTQsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIDEwMCwgMywgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgCisgICAgMjcsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIDEwMCwgMywgMjcsIDEzNSwgMjAwLCAxOTUsIDE2MiwgMjQ3LCA3LCA4MSwgCisgICAgMjQ5LCA5NCwgMTAwLCAzLCAyNywgMjQ3LCA2LCAyMDAsIDIzMywgMjIyLCAxNjQsIDIyMSwgNjUsIDIzNiwgMTg0LCAyMDUsIAorICAgIDE4MCwgMjA1LCAxMzUsIDIwOCwgMTAxLCA3NiwgMjI0LCAyMDgsIDIwOSwgMTU2LCA3NiwgMjI3LCAyMzcsIDIyMSwgNDYsIAorICAgIDIzNSwgNjEsIDIzNywgMTg5LCAyMzUsIDYxLCAyMzcsIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjM3LCAxOTAsIDMsIAorICAgIDIwNiwgMTkzLCA3NiwgMjI3LCAxNTAsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIwOSwgNDcsIDIzNywgCisgICAgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAyMDksIDQ3LCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAKKyAgICAyMjEsIDU5LCAyNiwgMjQ2LCA4MywgMjA3LCAxODAsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAKKyAgICAyMDYsIDAsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMzQsIDIxMSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIAorICAgIDIzMywgMTIzLCAyMDEsIDgsIDIzNywgMTg5LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjM3LCAKKyAgICAxOTAsIDIxMSwgMjQwLCAyNDEsIDE0NCwgMjM3LCAxLCAyMTMsIDE0NSwgMjM3LCAxODksIDIwOSwgNDcsIDIzNywgMTkwLCAKKyAgICAzLCAyMzQsIDEyNiwgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIwNywgMjI0LCAyMDksIDQ2LCAyMzcsIDE4OSwgCisgICAgMjIwLCAxMCwgMjM3LCAxODksIDIzOCwgMzQsIDIzNywgMTg5LCAyMDQsIDMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjQ2LCAKKyAgICA4MywgMjA3LCAxODAsIDIxNiwgMzksIDIzNywgMTg5LCAyNDMsIDYyLCAyMzcsIDE4OSwgMjQzLCA2MywgMjM3LCAxODksIAorICAgIDIyNiwgMTI4LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDIwNiwgMzYsIDM1LCAyMjYsIDEyOSwgMjI2LCAxMjgsIDIzNywgMTkwLCAKKyAgICAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMjYsIDEyOCwgMjM3LCAxOTAsIDMsIDI0NiwgMTEwLCAyMzgsIDE1LCAyMzcsIDE5MCwgCisgICAgMywgMjA4LCAzMSwgMjA1LCAxNjMsIDIzNywgMTkwLCAzLCAyMDgsIDMxLCAyMDUsIDE2NCwgMjYsIDIwMSwgOCwgMjM4LCAKKyAgICAyMiwgMjM3LCAxOTAsIDMsIDIwOCwgMzEsIDIwNSwgMTY0LCAyNiwgMjA2LCAwLCAyMzgsIDE1LCAyNDEsIDQsIDIzNywgCisgICAgMTg5LCAyMDAsIDIzMiwgMjM3LCAxODksIDI1MSwgNjcsIDIzNywgMTg5LCAyMTUsIDU1LCAyMzcsIDE4OSwgMjQyLCAyMTgsIAorICAgIDIzNywgMTg5LCAyMTYsIDEzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIyNCwgNzcsIDc2LCAyMDUsIDc1LCAyNDEsIDQsIAorICAgIDI0NywgMjQ3LCAyMTMsIDE0NSwgMjM3LCAxODksIDIzNiwgMTk1LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyNTEsIAorICAgIDY1LCAyMzcsIDE4OSwgMjM3LCAxNDUsIDIzNywgMTg5LCAyMDEsIDYyLCAyMzcsIDE4OSwgMjA5LCA3MCwgMjM3LCAxODksIAorICAgIDIwNSwgMjE4LCAyMzcsIDE4OSwgMjM1LCA2MiwgMjM3LCAxODksIDIyNCwgNjMsIDI0MiwgMjE4LCAyMzcsIDE4OSwgMjM3LCAKKyAgICAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjMzLCA3MiwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAKKyAgICAyNDYsIDgzLCAyMDcsIDE4MCwgMjM3LCAxOTAsIDIxMSwgMjExLCAyMjgsIDExOCwgMjM3LCAxNDYsIDI1MCwgMTYyLCAyMzcsIAorICAgIDE4OSwgMjM3LCAyMSwgMjM3LCAxODksIDIwOSwgNzEsIDIzNywgMTg5LCAyNDAsIDIzMSwgMjM3LCAxODksIDIzNywgMTkwLCAKKyAgICAyMDEsIDMsIDIyMSwgNTgsIDIzNywgMTkwLCAzLCAyMjIsIDY4LCAyMjIsIDEzMiwgMjM1LCA2MSwgMjQ3LCAxMTIsIDIzNywgCisgICAgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDIwNiwgMTkzLCA3NiwgMjI3LCAxNTAsIAorICAgIDIwOSwgNDcsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMDksIDQ3LCAyNDcsIDExMiwgMjM3LCAKKyAgICAxOTAsIDMsIDIzNCwgMTI2LCAyMzgsIDE1LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDIwMCwgMjE3LCAyMDksIDQ4LCAyMjYsIAorICAgIDEyOCwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyNDYsIDExMCwgMjM4LCAxNSwgMjE1LCA1NSwgMjQ3LCAxMTIsIDIzNywgCisgICAgMTg5LCAyNDIsIDIxOCwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMDEsIDYyLCAyNDcsIDExMiwgMjM3LCAxODksIDIwOSwgNjQsIAorICAgIDIzNiwgMTk1LCAyMzcsIDE4OSwgMjA5LCA2NCwgMjA5LCA0NywgMjM3LCAxODksIDIwMywgMjIyLCAyMzcsIDE4OSwgMjM3LCAKKyAgICAxOTAsIDMsIDIxMiwgMjQyLCAyMzgsIDE1LCAyMzcsIDE5MCwgMywgMjE4LCAyNDIsIDIzNSwgMTA0LCAyMzUsIDI0MCwgCisgICAgMjM3LCAxOTAsIDMsIDIxNywgOTksIDIzNSwgMjQwLCAyMTYsIDExLCAyNDgsIDg0LCAyNDEsIDE1OSwgMjExLCAxODksIAorICAgIDIyMSwgMTAwLCAyMzQsIDEyOSwgMjIxLCAxMDAsIDIwOCwgMjM0LCAyMjEsIDEwMCwgMjM0LCAxNjcsIDIxNiwgMTEsIDIxMywgCisgICAgMjE5LCAxMTIsIDIzNCwgMTk5LCAyMTYsIDExLCAyMTMsIDIxOSwgMjQ4LCA5NiwgMjM0LCAxNzUsIDIyOCwgMTE4LCAyNDcsIAorICAgIDYyLCAyMTYsIDExLCAyMzYsIDE5NCwgMjE2LCAxMSwgMywgMjE1LCA1NSwgMjM3LCAxODksIDIxNiwgMTEsIDMsIDIzNywgCisgICAgMTAsIDIzNCwgMTc0LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAKKyAgICAyMjUsIDM1LCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIAorICAgIDM1LCAyMDQsIDE4NSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgMjA4LCAyNTQsIDIwMSwgCisgICAgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgCisgICAgMjI1LCAzNSwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAxNTcsIDIzOSwgMTQsIAorICAgIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgCisgICAgMzUsIDgwLCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCA4MCwgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCA4MCwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgCisgICAgODAsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAKKyAgICAyNDgsIDMyLCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAzMiwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIAorICAgIDMyLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAzMiwgODAsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAKKyAgICAzMiwgODAsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIDMyLCA4MCwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAKKyAgICAyNDgsIDMyLCA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgMzIsIDIzMywgMTk2LCAyMTQsIDcyLCA1MiwgCisgICAgMjE3LCAyMSwgMjMzLCAxOTYsIDIxNCwgNzIsIDUyLCAyMTcsIDIyLCAyMjgsIDExOCwgNjMsIDIwOCwgMTkzLCAyMDksIDE4LCAKKyAgICAyMTQsIDcyLCA1MiwgMjE3LCAyMSwgMjA5LCAxOCwgMjE0LCA3MiwgNTIsIDIxNywgMjIsIDIyOCwgMTE4LCA2MywgMjA4LCAKKyAgICAxOTMsIDk4LCAyMTIsIDI0OCwgMTgyLCAyMTIsIDI0OCwgODcsIDIxMiwgMjQ4LCAxOTEsIDIxMiwgMjQ4LCAxMzUsIDMzLCAKKyAgICAyMzgsIDgyLCAyMTcsIDIxLCA4MCwgMTM1LCAzMywgMjM4LCA4MiwgMjE3LCAyMSwgMzMsIDE3NiwgMjM4LCA4MiwgMjE3LCAKKyAgICAyMSwgODAsIDMzLCAxNzYsIDIzOCwgODIsIDIxNywgMjEsIDgwLCAyNTEsIDkwLCAyMTcsIDIxLCAyMDcsIDE4MywgMjUxLCAKKyAgICA5MCwgMjE3LCAyMSwgNDMsIDgwLCA1MywgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgNDMsIAorICAgIDgwLCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA0MywgODAsIDEyOCwgNTMsIDI0NiwgNzEsIDIxNCwgCisgICAgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIyOCwgNTksIDIxNywgMjEsIDQzLCAyMjgsIDU5LCAyMTcsIDIxLCA4MCwgNDMsIAorICAgIDIyOCwgNTksIDIxNywgMjEsIDIwMiwgMjQ2LCA4MCwgMjA5LCAxNiwgMjAyLCAyNDYsIDgwLCAyMTMsIDEwNiwgMjA5LCAxNiwgCisgICAgMjQ3LCA1LCAyNDgsIDEyMSwgMjEzLCAxMDYsIDI0NywgNSwgMjQ4LCAxMjEsIDIxMiwgMjQ4LCAyMzQsIDExMCwgMjA4LCAKKyAgICA5NiwgMjI0LCAxMDEsIDIxMywgMjI1LCAyNDcsIDEzNSwgMjM0LCA1NSwgMjA1LCAxMjMsIDIzNCwgNTUsIDIwNSwgMTI0LCAKKyAgICAzLCAyNDgsIDIxLCAyMTgsIDIxNiwgMjA1LCAxMjMsIDIyMiwgMTMsIDE2MiwgMjEzLCAyMjYsIDIwOCwgMTAyLCAyMDUsIAorICAgIDEyMSwgMjA1LCAxMjIsIDI0NywgMTM1LCAyNDcsIDI1MiwgMjE3LCA3NSwgMjQ3LCAyNTIsIDIwNSwgNzEsIDI0NywgMjUzLCAKKyAgICAyMDgsIDc2LCAyMjEsIDE2MywgMjUxLCA5NCwgMjM3LCA3OCwgMjM4LCAxNjQsIDIxNSwgODgsIDI0NywgMTM1LCAyMTcsIAorICAgIDc1LCAyMTUsIDg4LCAyNDcsIDEzNSwgMjA2LCAyMTEsIDIxNywgNzUsIDIwNiwgMjExLCAyNTAsIDEyNywgMjE3LCA3NSwgCisgICAgMjUwLCAxMjcsIDIxMywgMTc3LCAyMDMsIDUxLCAyNDEsIDE0MCwgMjA1LCA2MiwgMjUwLCAxOTQsIDIyNCwgNjgsIDIwNSwgCisgICAgMTI5LCAyMjEsIDk0LCAyMjEsIDY0LCAyMTMsIDIyNCwgMjA3LCAxOTYsIDIxMywgMjI0LCAyMjEsIDY0LCAyNDcsIDE4NCwgCisgICAgMjUxLCAyMDcsIDIwNSwgMTIwLCAyMTAsIDE3LCAyMTIsIDIxOCwgMjA4LCAyMjYsIDIzMywgMTc3LCAyMDUsIDEyNywgMjI0LCAKKyAgICAxOTYsIDgzLCAyMDUsIDEyNywgMjI0LCAxOTYsIDI0MywgNDksIDU0LCAyMTUsIDg4LCAyNDcsIDExOSwgMjEzLCA5OSwgCisgICAgMjI0LCAxOTYsIDIwNSwgOTUsIDIzNywgNTQsIDIxNywgNzksIDIxNSwgNjYsIDI0MCwgMTg1LCAyMTgsIDI0MiwgMjM4LCAKKyAgICAxNTAsIDU0LCAyMDksIDQ1LCA5OSwgMjE4LCAyNDIsIDIwOSwgNDUsIDk5LCAyMTQsIDE5MywgMjI0LCAxNDksIDIyOCwgCisgICAgMTE4LCAyMjgsIDksIDIxNSwgMTM0LCA5OSwgMjQwLCAyMTIsIDIxOCwgMjE1LCAyMjQsIDE0OSwgOTksIDIxNSwgNjAsIAorICAgIDIwMSwgODMsIDk5LCAyMTgsIDIzMSwgMjAxLCA4MywgOTksIDI0OCwgMTg0LCAyMTgsIDI0MiwgMjQ4LCAxODMsIDI0OCwgCisgICAgMTgyLCAyMjEsIDY0LCAyNDgsIDE4MiwgMjE2LCA2MywgMjE4LCAyNDIsIDIxNiwgNjIsIDI0NiwgMjI2LCAyNDIsIDIyNywgCisgICAgMjIyLCAzNiwgOTksIDIwMCwgMjQ3LCA5OSwgMjEzLCAxMTUsIDI0OSwgMTMyLCA5OSwgMjA1LCAxODEsIDIwMSwgODMsIAorICAgIDI0NiwgMTA3LCAyMDksIDIzMSwgMjQ5LCA1MiwgMjQ5LCA1MCwgMjE2LCA5NiwgMjQzLCAzMywgMjQyLCAxODEsIDI0OSwgCisgICAgMTEwLCAyNDYsIDEzNSwgNDksIDIyNCwgMzIsIDIwNSwgOTksIDMsIDIxMiwgMjE5LCAyNDMsIDE0LCAyMTQsIDI1MywgNTQsIAorICAgIDQ0LCAyMjgsIDkyLCAyMDgsIDI1NSwgMjQ4LCA3NSwgOTksIDIzNSwgMTM5LCA5OSwgMjQzLCA3LCAyNiwgMjI1LCA4MSwgCisgICAgMjA5LCA3MSwgMjUxLCAyNDgsIDIwOSwgMjUzLCAyNDksIDEwOSwgMjQ4LCAyMjksIDI0OCwgMjMwLCAyNDgsIDI1MywgMjE1LCAKKyAgICAxMzQsIDc2LCAyMDAsIDIzMSwgMjE3LCAxMjksIDU0LCAyMDksIDI1MywgMjA1LCA3MiwgMjM0LCAyMDcsIDI2LCAyMDAsIAorICAgIDIyNSwgMjEwLCAzMCwgMjE3LCAxMDQsIDIzOSwgMTQyLCAyMjEsIDY4LCAyMTMsIDIyNSwgMjA1LCAxMzEsIDIyMSwgNzAsIAorICAgIDI0OCwgMTIwLCAyMDMsIDIyNywgMjIxLCAxNzQsIDI1MSwgMTY0LCAyMDMsIDIyNywgMjUxLCAxNjQsIDIwMywgMjI3LCA0LCAKKyAgICAyNTEsIDE2NCwgNCwgMjUxLCAxNjQsIDIxOCwgMjIwLCAyNTEsIDE2NCwgMjUxLCAxNjUsIDI0MSwgMTI0LCAyNTEsIDE2NSwgCisgICAgMjUwLCAyMDUsIDIxMSwgMjQ3LCAyMTcsIDc1LCAyMzcsIDc4LCAyMzgsIDE2NCwgMjQxLCA1NCwgMjI0LCAxMDEsIDIxNiwgCisgICAgOTksIDIxMCwgMTcsIDIxMSwgMjE1LCAyMjEsIDcwLCAyMTEsIDIxNSwgMjQ3LCAxNDYsIDEzOSwgMTYsIDM2LCAyMTQsIDY4LCAKKyAgICAxMzksIDE2LCAzNiwgMjUxLCAxNjYsIDEzOSwgMTYsIDM2LCAyMzcsIDc3LCAxMzksIDE2LCAzNiwgMjM5LCAxNywgMTM5LCAKKyAgICAxNiwgMzYsIDIwMSwgODIsIDEzOSwgMTYsIDM2LCAyNTAsIDI1NSwgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjEzLCAxNjQsIAorICAgIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIxMywgMTYzLCAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMDIsIDE5OSwgMTM5LCAxNiwgCisgICAgMzYsIDI1MSwgMCwgMjAyLCAxOTgsIDEzOSwgMTYsIDM2LCAyMDIsIDIxMywgMTM5LCAxNiwgMzYsIDIwMiwgMjEyLCAxMzksIAorICAgIDE2LCAzNiwgMjAyLCAyMTEsIDEzOSwgMTYsIDM2LCAyMDcsIDIzNSwgMTM5LCAxNiwgMzYsIDIxNSwgMjIxLCAyMDcsIDIzNSwgCisgICAgMTM5LCAxNiwgMzYsIDYzLCAyMDcsIDIzNSwgMTM5LCAxNiwgMzYsIDIyMiwgMzUsIDIwOCwgMTAsIDEzOSwgMTYsIDM2LCAKKyAgICAyMjIsIDM1LCAyMDgsIDksIDEzOSwgMTYsIDM2LCAyMjIsIDM1LCAyMDgsIDgsIDEzOSwgMTYsIDM2LCAyNDYsIDE1OCwgCisgICAgMTM5LCAxNiwgMzYsIDIxMiwgMjcsIDEzOSwgMTYsIDM2LCAyMTksIDEwMSwgMTM5LCAxNiwgMzYsIDIwMiwgMTk3LCAxMzksIAorICAgIDE2LCAzNiwgMjAyLCAxOTYsIDEzOSwgMTYsIDM2LCAyMTIsIDI0OSwgMjEyLCAyNywgMTM5LCAxNiwgMzYsIDIxMiwgMjQ5LCAKKyAgICAyMTIsIDI2LCAxMzksIDE2LCAzNiwgMjM1LCAxMDgsIDEzOSwgMTYsIDM2LCAyMDksIDE1MiwgMTM5LCAxNiwgMzYsIDIyOCwgCisgICAgMzIsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMjgsIDMyLCAyMTcsIDI3LCAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAKKyAgICAyMjgsIDMxLCAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyMjgsIDMxLCAxMzksIDE2LCAzNiwgMjQzLCAyNCwgMjE3LCAKKyAgICAyOCwgMTM5LCAxNiwgMzYsIDIyOCwgMzAsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjQzLCAyMywgCisgICAgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgMjQzLCAyMywgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgMjQzLCAyMiwgCisgICAgMTM5LCAxNiwgMzYsIDI0MywgMjQsIDI1MSwgNDEsIDEzOSwgMTYsIDM2LCAyMTIsIDI4LCA3NiwgMjQzLCAyNCwgMjUxLCAKKyAgICA0MSwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyMTIsIDI4LCA3NiwgMjQzLCAyMywgMTM5LCAxNiwgMzYsIDIwMywgNDYsIAorICAgIDEzOSwgMTYsIDM2LCAyMDUsIDIzMSwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIyNSwgMzksIDIxNywgMjgsIDEzOSwgMTYsIAorICAgIDM2LCAyNTEsIDQwLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAKKyAgICAyMTIsIDI4LCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyMTIsIDI4LCA3NiwgMjUxLCAzOSwgCisgICAgMTM5LCAxNiwgMzYsIDIwMiwgMjE0LCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjUxLCAzOSwgCisgICAgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjUxLCAzOCwgMTM5LCAxNiwgMzYsIDIxMywgMTU5LCAxMzksIDE2LCAzNiwgCisgICAgMjEzLCAxNTgsIDEzOSwgMTYsIDM2LCAyMTMsIDE1NywgMTM5LCAxNiwgMzYsIDIxMywgMTU2LCAxMzksIDE2LCAzNiwgMjUxLCAKKyAgICAxMjcsIDEzOSwgMTYsIDM2LCAyNTEsIDEyNiwgMTM5LCAxNiwgMzYsIDIyMiwgMTU1LCAxMzksIDE2LCAzNiwgMjEyLCAzNCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MCwgMTk4LCAxMzksIDE2LCAzNiwgMjEzLCAxODcsIDEzOSwgMTYsIDM2LCAyMTMsIDE4NiwgMTM5LCAKKyAgICAxNiwgMzYsIDI1MCwgMTMwLCAxMzksIDE2LCAzNiwgMjQ4LCAxNTMsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDYsIDIzMCwgCisgICAgMTM5LCAxNiwgMzYsIDIwNiwgMjI5LCAxMzksIDE2LCAzNiwgMjE0LCA3NCwgMjI0LCAxODUsIDEzOSwgMTYsIDM2LCAyNDgsIAorICAgIDEwMSwgMTM5LCAxNiwgMzYsIDI0OCwgMTAwLCAxMzksIDE2LCAzNiwgMjQ4LCA5OSwgMTM5LCAxNiwgMzYsIDI1MSwgMTAzLCAKKyAgICAxMzksIDE2LCAzNiwgMjE3LCAxMDMsIDEzOSwgMTYsIDM2LCAyMDgsIDIxNCwgMTM5LCAxNiwgMzYsIDIwNSwgMjI5LCAxMzksIAorICAgIDE2LCAzNiwgMjM1LCAzMCwgMTM5LCAxNiwgMzYsIDIwMSwgNzAsIDEzOSwgMTYsIDM2LCAyMTUsIDU0LCAxMzksIDE2LCAzNiwgCisgICAgMjQ3LCAxNjcsIDEzOSwgMTYsIDM2LCAyMDQsIDE3NywgMTM5LCAxNiwgMzYsIDI0NywgMTM3LCAyMjEsIDc1LCAxMzksIDE2LCAKKyAgICAzNiwgMjExLCAyMjUsIDc2LCAyMjcsIDE1MiwgMTM5LCAxNiwgMzYsIDI0NywgMTgxLCAxMzksIDE2LCAzNiwgMjA1LCA5MiwgCisgICAgMTM5LCAxNiwgMzYsIDIwOCwgMTA3LCAyMDUsIDkyLCAxMzksIDE2LCAzNiwgMjI0LCAxMDAsIDEzOSwgMTYsIDM2LCAyMDksIAorICAgIDI3LCAxMzksIDE2LCAzNiwgMjAzLCAyMDYsIDEzOSwgMTYsIDM2LCAyMzMsIDEyMSwgMjM5LCAxMjEsIDEzOSwgMTYsIDM2LCAKKyAgICAyNTAsIDE3NiwgMTM5LCAxNiwgMzYsIDIxNSwgNjIsIDI1MCwgMTc2LCAxMzksIDE2LCAzNiwgMjQ4LCA1MywgMTM5LCAxNiwgCisgICAgMzYsIDIxNSwgNTMsIDI0OCwgNTMsIDEzOSwgMTYsIDM2LCAyNTEsIDEwMCwgMTM5LCAxNiwgMzYsIDIwOCwgNjMsIDIwNywgCisgICAgMjE2LCAyMDgsIDYyLCAxMzksIDE2LCAzNiwgMjA4LCA2MywgMjA3LCAyMTYsIDIwOCwgNjEsIDEzOSwgMTYsIDM2LCAyMDgsIAorICAgIDcsIDEzOSwgMTYsIDM2LCAyMTUsIDI2LCAxMzksIDE2LCAzNiwgMjQwLCAyNDgsIDEzOSwgMTYsIDM2LCAyNDAsIDI1MCwgCisgICAgMTM5LCAxNiwgMzYsIDI0MCwgMjQ5LCAxMzksIDE2LCAzNiwgMjE0LCAyMDIsIDEzOSwgMTYsIDM2LCAyMTQsIDE5MSwgMTM5LCAKKyAgICAxNiwgMzYsIDI0MiwgMjI1LCAxMzksIDE2LCAzNiwgMjQyLCAyMjQsIDEzOSwgMTYsIDM2LCAyNDIsIDIyMywgMTM5LCAxNiwgCisgICAgMzYsIDI0MiwgMjIyLCAxMzksIDE2LCAzNiwgMjQyLCAyMjEsIDEzOSwgMTYsIDM2LCAyNTEsIDE0MSwgMTM5LCAxNiwgMzYsIAorICAgIDI0OSwgNTMsIDc2LCAyMjIsIDEzNywgMTM5LCAxNiwgMzYsIDI0OSwgNTMsIDc2LCAyMDMsIDc4LCAxMzksIDE2LCAzNiwgCisgICAgMjEzLCAxMTMsIDEzOSwgMTYsIDM2LCAyMzMsIDExMywgMTM5LCAxNiwgMzYsIDIxOSwgMTI5LCAxMzksIDE2LCAzNiwgMjQxLCAKKyAgICAyMzIsIDEzOSwgMTYsIDM2LCAyMjEsIDg5LCAxMzksIDE2LCAzNiwgMTY3LCAyMzksIDE1NiwgMTM5LCAxNiwgMzYsIDE2NywgCisgICAgMjE3LCAxLCA2MywgMjI1LCAyMywgMjI4LCAxNSwgNTEsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgMjI4LCAxNSwgNTEsIAorICAgIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMjgsIDE1LCA1MSwgMjA1LCA5OCwgNjMsIDIzOSwgMTY2LCAyMjgsIDE1LCA1MSwgCisgICAgMjA1LCA5OCwgNjMsIDIwOSwgNjQsIDQsIDI0NiwgMTU1LCAyMjIsIDY2LCAyNywgNjQsIDI0NiwgMTU1LCAyNywgNjQsIAorICAgIDI0NiwgMTU1LCA4MCwgNjQsIDI0NiwgMTU1LCAyMDIsIDI0NiwgODAsIDY0LCAyNDYsIDE1NSwgMjM4LCAyNiwgODAsIDY0LCAKKyAgICAyNDYsIDE1NSwgNjQsIDI0NiwgMTU2LCAyNDMsIDQ1LCA2MywgNCwgMjQ2LCAxNTUsIDIxMiwgMjIxLCAyMDYsIDIzMSwgNjMsIAorICAgIDIwNSwgMjI2LCAyMDgsIDE5MywgNjMsIDIwOSwgNjQsIDQsIDIwOCwgMTkzLCAxNjIsIDY0LCAyMDgsIDE5MywgMjIyLCA2NiwgCisgICAgNjQsIDIwOCwgMTkzLCAyNywgNjQsIDIwOCwgMTkzLCA4MCwgNjQsIDIwOCwgMTkzLCAyMDIsIDI0NiwgODAsIDY0LCAyMDgsIAorICAgIDE5MywgMjM4LCAyNiwgODAsIDY0LCAyMDgsIDE5MywgNjQsIDUyLCAyNDMsIDQ1LCA2MywgMjAyLCAyNDYsIDQsIDIwOCwgCisgICAgMTkzLCA2NCwgNTIsIDI0MywgNDUsIDYzLCAyMjIsIDY2LCAyMDgsIDE5MywgNTIsIDIwNiwgMjMxLCA2MywgMjA1LCAyMjYsIAorICAgIDI0MSwgNjQsIDYzLCAyMDIsIDI0NiwgNCwgMjQxLCA2NCwgNjMsIDIyMiwgNjYsIDQsIDI0MSwgNjQsIDY0LCAyNDEsIDY1LCAKKyAgICAyNDMsIDQ1LCA2MywgMjAyLCAyNDYsIDQsIDI0MSwgNjQsIDY0LCAyNDEsIDY1LCAyNDMsIDQ1LCA2MywgMjIyLCA2NiwgCisgICAgMjQxLCA2NCwgMjQxLCA2NSwgMjA2LCAyMzEsIDYzLCAyMDUsIDIyNiwgMjI0LCA0OSwgNjMsIDIwMiwgMjQ2LCA0LCAyMjQsIAorICAgIDQ5LCA2MywgMjIyLCA2NiwgNCwgMjI0LCA0OSwgNjQsIDIyNCwgNTAsIDI0MywgNDUsIDYzLCA0LCAyMjQsIDQ5LCAyMDYsIAorICAgIDc3LCAzMSwgMjQyLCAyMzQsIDE2MiwgMzEsIDI0MiwgMjM0LCAyMjIsIDY2LCAzMSwgMjQyLCAyMzQsIDI3LCAzMSwgMjQyLCAKKyAgICAyMzQsIDIwMiwgMjQ2LCAyNywgMzEsIDI0MiwgMjM0LCAyMDIsIDI0NiwgODAsIDMxLCAyNDIsIDIzNCwgMjM4LCAyNiwgODAsIAorICAgIDMxLCAyNDIsIDIzNCwgMjA2LCA3NywgMjEyLCAyNCwgMTYyLCAyMTIsIDI0LCAyMjIsIDY2LCAyMTIsIDI0LCAyNywgMjEyLCAKKyAgICAyNCwgODAsIDIxMiwgMjQsIDIwMiwgMjQ2LCA4MCwgMjEyLCAyNCwgMjM4LCAyNiwgODAsIDIxMiwgMjQsIDE2MiwgMjM3LCAKKyAgICA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDI3LCAyMzcsIAorICAgIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIwMiwgMjQ2LCA4MCwgCisgICAgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDI2LCA4MCwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAKKyAgICAxNjIsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIAorICAgIDI3LCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjAyLCAKKyAgICAyNDYsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDI2LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAKKyAgICAyNTAsIDE2NSwgMTYyLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMzgsIDIzMiwgMjA4LCAyMDcsIAorICAgIDI1MCwgMTY1LCAyNywgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAKKyAgICAxNjUsIDIwMiwgMjQ2LCA4MCwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMTYyLCAxMjYsIDIxNSwgOTgsIDYzLCAKKyAgICAyMDgsIDEwOSwgMjIyLCA2NiwgMTI2LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDEyNiwgMjE1LCA5OCwgNjMsIDIwOCwgCisgICAgMTA5LCAyMjIsIDY2LCAxMjYsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzYsIDIyOSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMzYsIDIyOSwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMTMsIAorICAgIDEwNiwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIzNywgNjEsIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgODAsIDIzNywgNjEsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjA5LCAxMDYsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIwOSwgMTA2LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIwOSwgMTA2LCAyMTUsIDk4LCAKKyAgICAyMTUsIDE1NSwgMjA4LCAxMDksIDIyMiwgNjYsIDIzOCwgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMzgsIAorICAgIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMDIsIDI0NiwgODAsIDIzOCwgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAKKyAgICAxMDksIDgwLCAyMzgsIDIzMiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIwNCwgMTY1LCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDgwLCAyMDQsIDE2NSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjA0LCAxNjUsIDIxNSwgOTgsIAorICAgIDIxNSwgMTU1LCAyMDgsIDEwOSwgOTgsIDU1LCAzLCA0LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgNCwgMjA1LCAKKyAgICA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgNCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIDQsIDIwNSwgOTksIAorICAgIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDU1LCAzLCAyMjIsIDY2LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgCisgICAgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgCisgICAgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCAKKyAgICAxOTEsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIAorICAgIDE4MiwgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODcsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgCisgICAgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIAorICAgIDIzOCwgMTE4LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDk4LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTgyLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgODcsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxOTEsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA5OCwgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE4MiwgNTUsIDMsIAorICAgIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDg3LCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCAKKyAgICA4MCwgMTkxLCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA5OCwgMjA1LCA5NywgNTUsIDMsIDIyMCwgCisgICAgMTI0LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIDEyNCwgMjEwLCA5OSwgODcsIDIwNSwgOTcsIDU1LCAzLCAKKyAgICAyMjAsIDEyNCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjIwLCAxMjQsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCAKKyAgICA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCA5OCwgCisgICAgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCAKKyAgICA1NSwgMywgODAsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDgwLCAyMTAsIDk5LCA4NywgMjA1LCA5NywgNTUsIDMsIAorICAgIDgwLCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCA4MCwgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIAorICAgIDI0NiwgODAsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCAKKyAgICA5OSwgOTgsIDIzNywgODUsIDQ4LCAxODIsIDIzNywgODUsIDQ4LCA4NywgMjM3LCA4NSwgNDgsIDE5MSwgMjM3LCA4NSwgNDgsIAorICAgIDk4LCA5NSwgNDgsIDE4MiwgOTUsIDQ4LCA4NywgOTUsIDQ4LCAxOTEsIDk1LCA0OCwgOTgsIDI0MywgNzIsIDQ4LCAxODIsIAorICAgIDI0MywgNzIsIDQ4LCA4NywgMjQzLCA3MiwgNDgsIDE5MSwgMjQzLCA3MiwgNDgsIDk4LCA4MCwgMjQzLCA3MiwgNDgsIDE4MiwgCisgICAgODAsIDI0MywgNzIsIDQ4LCA4NywgODAsIDI0MywgNzIsIDQ4LCAxOTEsIDgwLCAyNDMsIDcyLCA0OCwgOTgsIDgwLCA0OCwgCisgICAgMTgyLCA4MCwgNDgsIDg3LCA4MCwgNDgsIDE5MSwgODAsIDQ4LCA5OCwgNDMsIDQ4LCAxODIsIDQzLCA0OCwgODcsIDQzLCAKKyAgICA0OCwgMTkxLCA0MywgNDgsIDE1NywgMjAxLCA0OCwgNDMsIDQ4LCAxNTcsIDIzOSwgMTQsIDQzLCA0OCwgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDQzLCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDQzLCA0OCwgNDksIDUxLCA0MywgNDgsIDExNSwgMTI3LCA0MywgCisgICAgNDgsIDIwMSwgMjcsIDk4LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgCisgICAgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAxNjIsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjM5LCAxNCwgCisgICAgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCA5OCwgMTU0LCAKKyAgICA0OCwgMjAxLCAyNywgMTgyLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICA5OCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMjIyLCAKKyAgICA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDIyMiwgCisgICAgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMjIsIDY2LCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCA5OCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCA4MCwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgMTU3LCAyMzksIDE0LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIzOSwgMTQsIDgwLCAxNTQsIAorICAgIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDk4LCAyMDIsIDI0NiwgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMjAyLCAyNDYsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAyMDIsIAorICAgIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCA5OCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAKKyAgICAyNTAsIDIwMiwgMTgyLCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA2NCwgNTUsIDIwMSwgNSwgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIAorICAgIDIxOCwgMjExLCAyMDcsIDYsIDE4MiwgNTUsIDMsIDIxOCwgMjExLCAyMDcsIDYsIDg3LCA1NSwgMywgMjE4LCAyMTEsIDIwNywgCisgICAgNiwgMTkxLCA1NSwgMywgMjE4LCAyMTEsIDIwNywgNiwgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTAyLCA4MCwgNTUsIAorICAgIDIxMCwgMTAwLCAyMDEsIDI1LCAxMjAsIDIwNiwgNzEsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDExMiwgMjM0LCAKKyAgICAyMTMsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDExMiwgMjA2LCA3NCwgOTgsIDI0OCwgOTAsIDY0LCA0OCwgODcsIAorICAgIDI0OCwgOTMsIDIxMCwgMTAyLCA2NCwgNDgsIDk4LCAyMDUsIDE1OCwgMjEwLCAxMDIsIDY0LCA0OCwgODcsIDIwNSwgMTU4LCAKKyAgICAyMTAsIDEwMiwgNjQsIDQ4LCA5OCwgMjI1LCAyMiwgNjQsIDQ4LCA4NywgMjEzLCA0MCwgNjQsIDQ4LCA5OCwgMjEzLCA0MCwgCisgICAgNjQsIDQ4LCA4NywgMjI1LCAyMiwgNjQsIDQ4LCA5OCwgMjQ5LCAxMjgsIDIxMCwgMTAxLCA2NCwgNDgsIDg3LCAyNDksIAorICAgIDEyOCwgMjEwLCAxMDEsIDY0LCA0OCwgOTgsIDIzNiwgMTk4LCAyMTAsIDEwMSwgNjQsIDQ4LCA4NywgMjM2LCAxOTgsIDIxMCwgCisgICAgMTAxLCA2NCwgNDgsIDY0LCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDEwMiwgNjQsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgCisgICAgMTIwLCAyMDYsIDcxLCAxOTksIDIzLCAyMzcsIDE4OSwgMjIxLCAxMDQsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjA2LCAKKyAgICA5NCwgMjIwLCAxNiwgMjM3LCAxODksIDIwNiwgNzYsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjM0LCAxMzUsIDIxMiwgCisgICAgMjUxLCAyMzcsIDE4OSwgMjMzLCA5MSwgMjM3LCAxODksIDIsIDc2LCAyMDYsIDEwNywgMjMzLCAxMjMsIDI0NywgMTY5LCAKKyAgICAyMjIsIDc3LCAyMzQsIDE5OSwgMjEzLCAyMjAsIDI0OSwgMTMwLCA3NiwgMjM0LCAxOTksIDIyNSwgMjcsIDIzNywgNjYsIAorICAgIDIxMywgNDUsIDIzNywgNjYsIDIzNCwgMTczLCAyMzQsIDIwMCwgMywgMTI0LCAyNiwgMTAxLCAyMzcsIDgyLCAyNDIsIDIzMSwgCisgICAgMjM3LCAxOTAsIDMsIDI0MiwgMjU0LCAyMzQsIDE1NywgMjQ2LCA5OSwgMjM3LCAxODksIDIyMCwgMTEzLCAyMzcsIDE4OSwgCisgICAgMjEyLCAyNDIsIDIxNywgNzksIDIwNiwgMTA3LCAyMzcsIDMyLCAyMjUsIDU3LCAyMzksIDE0NywgMjM3LCAxODksIDIyMywgCisgICAgMjUzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDIxNiwgMTc2LCAyMDksIDM5LCAyMzcsIDE4OSwgMjE1LCAyNCwgMjAwLCAyNTAsIAorICAgIDIxMCwgMTczLCAyMTUsIDEzLCAyMjIsIDE4MSwgMjI4LCAxMTgsIDIwNCwgMTczLCAyMjEsIDcyLCAyNDYsIDE5OSwgMjA5LCAKKyAgICAyMjQsIDIxNiwgMTEsIDI0MCwgMTk4LCAyNDcsIDExNiwgMjI3LCAxNDIsIDIzNywgMTI2LCAyMjEsIDEyOSwgMjE2LCAzNCwgCisgICAgMjAwLCAyMjQsIDIwMSwgODMsIDIxNSwgODYsIDIzNCwgMTc4LCAyMDEsIDE5LCAyMzcsIDI0LCAyMzksIDE0MywgMywgMjM5LCAKKyAgICAxNDEsIDI0NiwgMTE3LCAyMzUsIDEyNywgMjA0LCAyMDEsIDIzNSwgMTI4LCAyMDgsIDIwNiwgMjM1LCAxMTQsIDIyMCwgMTMsIAorICAgIDIxMywgNDcsIDIzNywgNzMsIDIxNSwgMTM0LCAyMjIsIDY5LCAyMTEsIDE5NiwgMjE1LCAxMzQsIDIyMiwgNjksIDIwNiwgCisgICAgNzUsIDIxNSwgMTM0LCAyMjIsIDY5LCAyNDgsIDc3LCAyMzUsIDEyMiwgMjIyLCAxNDEsIDI1MCwgMTkyLCAyMDMsIDI0MywgCisgICAgMjQyLCAyMzgsIDI1MCwgMTE4LCAyNDIsIDIwOCwgMjQ5LCAxMjEsIDIxNSwgNTksIDI0NywgMTIwLCAyNDksIDEwOCwgMjQ4LCAKKyAgICA2MiwgMjM1LCA2NCwgMjEyLCAzMiwgMjEwLCA5MywgMjE2LCAxNjMsIDc2LCAyMzcsIDEsIDIwOCwgMjgsIDIzNywgNDMsIAorICAgIDIzOCwgMjQ2LCAyMzUsIDEyOSwgNzYsIDIyMSwgMTczLCAyMTYsIDY4LCAyMjYsIDEyNCwgMjE2LCAxNjAsIDI0MiwgMjUxLCAKKyAgICAyMjQsIDE2NCwgMjM3LCAxODksIDIxMSwgMjEzLCAyMDQsIDE5MCwgMjAzLCAyNDUsIDIzNywgMTg5LCAyMzksIDI0LCAyMzksIAorICAgIDEzMywgMjQ5LCA1NSwgMjEwLCA4MCwgMjE2LCAyMzcsIDIzNiwgMjIxLCAyMzcsIDE4OSwgMjQ3LCAyNDUsIDI0MSwgMTU4LCAKKyAgICAyMzUsIDk3LCAyMjQsIDE0MywgMjEzLCA5MiwgMjA5LCAyMjYsIDIwOCwgMTg3LCAyNDYsIDI1NSwgMjAxLCA1OSwgMTIsIAorICAgIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIDE1LCAyMzIsIDIxOCwgMTIsIAorICAgIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIDE1LCAyMzIsIDIxNCwgMTIsIAorICAgIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIDE1LCAyMzIsIDIxMCwgMTIsIAorICAgIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIDE1LCAyMzIsIDIwNiwgMTIsIAorICAgIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIDE1LCAyMzIsIDIwMiwgMTIsIAorICAgIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIDE1LCAyMzIsIDE5OCwgMTIsIAorICAgIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIDE1LCAyMzIsIDE5NCwgMTIsIAorICAgIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIDE1LCAyMzIsIDE5MCwgMTIsIAorICAgIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIDE1LCAyMzIsIDE4NiwgMTIsIAorICAgIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIDE1LCAyMzIsIDE4MiwgMTIsIAorICAgIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIDE1LCAyMzIsIDE3OCwgMTIsIAorICAgIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIDE1LCAyMzIsIDE3NCwgMTIsIAorICAgIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIDE1LCAyMzIsIDE3MCwgMTIsIAorICAgIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIDE1LCAyMzIsIDE2NiwgMTIsIAorICAgIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIDE1LCAyMzIsIDE2MiwgMTIsIAorICAgIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIDE1LCAyMzIsIDE1OCwgMTIsIAorICAgIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIDE1LCAyMzIsIDE1NCwgMTIsIAorICAgIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIDE1LCAyMzIsIDE1MCwgMTIsIAorICAgIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIDE1LCAyMzIsIDE0NiwgMTIsIAorICAgIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIDE1LCAyMzIsIDE0MiwgMTIsIAorICAgIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIDE1LCAyMzIsIDEzOCwgMTIsIAorICAgIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIDE1LCAyMzIsIDEzNCwgMTIsIAorICAgIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIDE1LCAyMzIsIDEzMCwgMTIsIAorICAgIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIDE1LCAyMzIsIDEyNiwgMTIsIAorICAgIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIDE1LCAyMzIsIDEyMiwgMTIsIAorICAgIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIDE1LCAyMzIsIDExOCwgMTIsIAorICAgIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIDE1LCAyMzIsIDExNCwgMTIsIAorICAgIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIDE1LCAyMzIsIDExMCwgMTIsIAorICAgIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIDE1LCAyMzIsIDEwNiwgMTIsIAorICAgIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIDE1LCAyMzIsIDEwMiwgMTIsIAorICAgIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgMTUsIDIzMiwgOTgsIDEyLCAxNSwgCisgICAgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIAorICAgIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIDkwLCAxMiwgMTUsIDIzMiwgODksIAorICAgIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIDEyLCAxNSwgMjMyLCA4NSwgMTIsIAorICAgIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIDE1LCAyMzIsIDgxLCAxMiwgMTUsIAorICAgIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCAKKyAgICA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCA3MywgMTIsIDE1LCAyMzIsIDcyLCAKKyAgICAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAxMiwgMTUsIDIzMiwgNjgsIDEyLCAKKyAgICAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAxNSwgMjMyLCA2NCwgMTIsIDE1LCAKKyAgICAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgCisgICAgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgNTYsIDEyLCAxNSwgMjMyLCA1NSwgCisgICAgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgMTIsIDE1LCAyMzIsIDUxLCAxMiwgCisgICAgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgMTUsIDIzMiwgNDcsIDEyLCAxNSwgCisgICAgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgMjMyLCA0MywgMTIsIDE1LCAyMzIsIAorICAgIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIDM5LCAxMiwgMTUsIDIzMiwgMzgsIAorICAgIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIDEyLCAxNSwgMjMyLCAzNCwgMTIsIAorICAgIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIDE1LCAyMzIsIDMwLCAxMiwgMTUsIAorICAgIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAKKyAgICAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAyMiwgMTIsIDE1LCAyMzIsIDIxLCAKKyAgICAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAxMiwgMTUsIDIzMiwgMTcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAxNSwgMjMyLCAxMywgMTIsIDE1LCAKKyAgICAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAyMzIsIDksIDEyLCAxNSwgMjMyLCAKKyAgICA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAxMiwgMTUsIDIzMiwgNCwgMTIsIAorICAgIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAyMzIsIDAsIDEyLCAxNSwgMjMxLCAKKyAgICAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAKKyAgICAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAKKyAgICAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAKKyAgICAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAKKyAgICAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAKKyAgICAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAKKyAgICAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAKKyAgICAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAKKyAgICAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAKKyAgICAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAKKyAgICAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAKKyAgICAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAKKyAgICAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAKKyAgICAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAKKyAgICAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAKKyAgICAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTUsIDEyLCAxNSwgMjMxLCAxMTQsIDEyLCAxNSwgMjMxLCAxMTMsIDEyLCAxNSwgMjMxLCAxMTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTEsIDEyLCAxNSwgMjMxLCAxMTAsIDEyLCAxNSwgMjMxLCAxMDksIDEyLCAxNSwgMjMxLCAxMDgsIDEyLCAxNSwgMjMxLCAKKyAgICAxMDcsIDEyLCAxNSwgMjMxLCAxMDYsIDEyLCAxNSwgMjMxLCAxMDUsIDEyLCAxNSwgMjMxLCAxMDQsIDEyLCAxNSwgMjMxLCAKKyAgICAxMDMsIDEyLCAxNSwgMjMxLCAxMDIsIDEyLCAxNSwgMjMxLCAxMDEsIDEyLCAxNSwgMjMxLCAxMDAsIDEyLCAxNSwgMjMxLCAKKyAgICA5OSwgMTIsIDE1LCAyMzEsIDk4LCAxMiwgMTUsIDIzMSwgOTcsIDEyLCAxNSwgMjMxLCA5NiwgMTIsIDE1LCAyMzEsIDk1LCAKKyAgICAxMiwgMTUsIDIzMSwgOTQsIDEyLCAxNSwgMjMxLCA5MywgMTIsIDE1LCAyMzEsIDkyLCAxMiwgMTUsIDIzMSwgOTEsIDEyLCAKKyAgICAxNSwgMjMxLCA5MCwgMTIsIDE1LCAyMzEsIDg5LCAxMiwgMTUsIDIzMSwgODgsIDEyLCAxNSwgMjMxLCA4NywgMTIsIDE1LCAKKyAgICAyMzEsIDg2LCAxMiwgMTUsIDIzMSwgODUsIDEyLCAxNSwgMjMxLCA4NCwgMTIsIDE1LCAyMzEsIDgzLCAxMiwgMTUsIDIzMSwgCisgICAgODIsIDEyLCAxNSwgMjMxLCA4MSwgMTIsIDE1LCAyMzEsIDgwLCAxMiwgMTUsIDIzMSwgNzksIDEyLCAxNSwgMjMxLCA3OCwgCisgICAgMTIsIDE1LCAyMzEsIDc3LCAxMiwgMTUsIDIzMSwgNzYsIDEyLCAxNSwgMjMxLCA3NSwgMTIsIDE1LCAyMzEsIDc0LCAxMiwgCisgICAgMTUsIDIzMSwgNzMsIDEyLCAxNSwgMjMxLCA3MiwgMTIsIDE1LCAyMzEsIDcxLCAxMiwgMTUsIDIzMSwgNzAsIDEyLCAxNSwgCisgICAgMjMxLCA2OSwgMTIsIDE1LCAyMzEsIDY4LCAxMiwgMTUsIDIzMSwgNjcsIDEyLCAxNSwgMjMxLCA2NiwgMTIsIDE1LCAyMzEsIAorICAgIDY1LCAxMiwgMTUsIDIzMSwgNjQsIDEyLCAxNSwgMjMxLCA2MywgMTIsIDE1LCAyMzEsIDYyLCAxMiwgMTUsIDIzMSwgNjEsIAorICAgIDEyLCAxNSwgMjMxLCA2MCwgMTIsIDE1LCAyMzEsIDU5LCAxMiwgMTUsIDIzMSwgNTgsIDEyLCAxNSwgMjMxLCA1NywgMTIsIAorICAgIDE1LCAyMzEsIDU2LCAxMiwgMTUsIDIzMSwgNTUsIDEyLCAxNSwgMjMxLCA1NCwgMTIsIDE1LCAyMzEsIDUzLCAxMiwgMTUsIAorICAgIDIzMSwgNTIsIDEyLCAxNSwgMjMxLCA1MSwgMTIsIDE1LCAyMzEsIDUwLCAxMiwgMTUsIDIzMSwgNDksIDEyLCAxNSwgMjMxLCAKKyAgICA0OCwgMTIsIDE1LCAyMzEsIDQ3LCAxMiwgMTUsIDIzMSwgNDYsIDEyLCAxNSwgMjMxLCA0NSwgMTIsIDE1LCAyMzEsIDQ0LCAKKyAgICAxMiwgMTUsIDIzMSwgNDMsIDEyLCAxNSwgMjMxLCA0MiwgMTIsIDE1LCAyMzEsIDQxLCAxMiwgMTUsIDIzMSwgNDAsIDEyLCAKKyAgICAxNSwgMjMxLCAzOSwgMTIsIDE1LCAyMzEsIDM4LCAxMiwgMTUsIDIzMSwgMzcsIDEyLCAxNSwgMjMxLCAzNiwgMTIsIDE1LCAKKyAgICAyMzEsIDM1LCAxMiwgMTUsIDIzMSwgMzQsIDEyLCAxNSwgMjMxLCAzMywgMTIsIDE1LCAyMzEsIDMyLCAxMiwgMTUsIDIzMSwgCisgICAgMzEsIDEyLCAxNSwgMjMxLCAzMCwgMTIsIDE1LCAyMzEsIDI5LCAxMiwgMTUsIDIzMSwgMjgsIDEyLCAxNSwgMjMxLCAyNywgCisgICAgMTIsIDE1LCAyMzEsIDI2LCAxMiwgMTUsIDIzMSwgMjUsIDEyLCAxNSwgMjMxLCAyNCwgMTIsIDE1LCAyMzEsIDIzLCAxMiwgCisgICAgMTUsIDIzMSwgMjIsIDEyLCAxNSwgMjMxLCAyMSwgMTIsIDE1LCAyMzEsIDIwLCAxMiwgMTUsIDIzMSwgMTksIDEyLCAxNSwgCisgICAgMjMxLCAxOCwgMTIsIDE1LCAyMzEsIDE3LCAxMiwgMTUsIDIzMSwgMTYsIDEyLCAxNSwgMjMxLCAxNSwgMTIsIDE1LCAyMzEsIAorICAgIDE0LCAxMiwgMTUsIDIzMSwgMTMsIDEyLCAxNSwgMjMxLCAxMiwgMTIsIDE1LCAyMzEsIDExLCAxMiwgMTUsIDIzMSwgMTAsIAorICAgIDEyLCAxNSwgMjMxLCA5LCAxMiwgMTUsIDIzMSwgOCwgMTIsIDE1LCAyMzEsIDcsIDEyLCAxNSwgMjMxLCA2LCAxMiwgMTUsIAorICAgIDIzMSwgNSwgMTIsIDE1LCAyMzEsIDQsIDEyLCAxNSwgMjMxLCAzLCAxMiwgMTUsIDIzMSwgMiwgMTIsIDE1LCAyMzEsIDEsIAorICAgIDEyLCAxNSwgMjMxLCAwLCAxMiwgMTUsIDIzMCwgMjU1LCAxMiwgMTUsIDIzMCwgMjU0LCAxMiwgMTUsIDIzMCwgMjUzLCAxMiwgCisgICAgMTUsIDIzMCwgMjUyLCAxMiwgMTUsIDIzMCwgMjUxLCAxMiwgMTUsIDIzMCwgMjUwLCAxMiwgMTUsIDIzMCwgMjQ5LCAxMiwgCisgICAgMTUsIDIzMCwgMjQ4LCAxMiwgMTUsIDIzMCwgMjQ3LCAxMiwgMTUsIDIzMCwgMjQ2LCAxMiwgMTUsIDIzMCwgMjQ1LCAxMiwgCisgICAgMTUsIDIzMCwgMjQ0LCAxMiwgMTUsIDIzMCwgMjQzLCAxMiwgMTUsIDIzMCwgMjQyLCAxMiwgMTUsIDIzMCwgMjQxLCAxMiwgCisgICAgMTUsIDIzMCwgMjQwLCAxMiwgMTUsIDIzMCwgMjM5LCAxMiwgMTUsIDIzMCwgMjM4LCAxMiwgMTUsIDIzMCwgMjM3LCAxMiwgCisgICAgMTUsIDIzMCwgMjM2LCAxMiwgMTUsIDIzMCwgMjM1LCAxMiwgMTUsIDIzMCwgMjM0LCAxMiwgMTUsIDIzMCwgMjMzLCAxMiwgCisgICAgMTUsIDIzMCwgMjMyLCAxMiwgMTUsIDIzMCwgMjMxLCAxMiwgMTUsIDIzMCwgMjMwLCAxMiwgMTUsIDIzMCwgMjI5LCAxMiwgCisgICAgMTUsIDIzMCwgMjI4LCAxMiwgMTUsIDIzMCwgMjI3LCAxMiwgMTUsIDIzMCwgMjI2LCAxMiwgMTUsIDIzMCwgMjI1LCAxMiwgCisgICAgMTUsIDIzMCwgMjI0LCAxMiwgMTUsIDIzMCwgMjIzLCAxMiwgMTUsIDIzMCwgMjIyLCAxMiwgMTUsIDIzMCwgMjIxLCAxMiwgCisgICAgMTUsIDIzMCwgMjIwLCAxMiwgMTUsIDIzMCwgMjE5LCAxMiwgMTUsIDIzMCwgMjE4LCAxMiwgMTUsIDIzMCwgMjE3LCAxMiwgCisgICAgMTUsIDIzMCwgMjE2LCAxMiwgMTUsIDIzMCwgMjE1LCAxMiwgMTUsIDIzMCwgMjE0LCAxMiwgMTUsIDIzMCwgMjEzLCAxMiwgCisgICAgMTUsIDIzMCwgMjEyLCAxMiwgMTUsIDIzMCwgMjExLCAxMiwgMTUsIDIzMCwgMjEwLCAxMiwgMTUsIDIzMCwgMjA5LCAxMiwgCisgICAgMTUsIDIzMCwgMjA4LCAxMiwgMTUsIDIzMCwgMjA3LCAxMiwgMTUsIDIzMCwgMjA2LCAxMiwgMTUsIDIzMCwgMjA1LCAxMiwgCisgICAgMTUsIDIzMCwgMjA0LCAxMiwgMTUsIDIzMCwgMjAzLCAxMiwgMTUsIDIzMCwgMjAyLCAxMiwgMTUsIDIzMCwgMjAxLCAxMiwgCisgICAgMTUsIDIzMCwgMjAwLCAxMiwgMTUsIDIzMCwgMTk5LCAxMiwgMTUsIDIzMCwgMTk4LCAxMiwgMTUsIDIzMCwgMTk3LCAxMiwgCisgICAgMTUsIDIzMCwgMTk2LCAxMiwgMTUsIDIzMCwgMTk1LCAxMiwgMTUsIDIzMCwgMTk0LCAxMiwgMTUsIDIzMCwgMTkzLCAxMiwgCisgICAgMTUsIDIzMCwgMTkyLCAyMjUsIDc3LCAyMDcsIDEzLCAxNjUsIDIwOCwgMjQ0LCAxNjUsIDIzOCwgNDMsIDgxLCAxNjUsIAorICAgIDIxNCwgNjMsIDgxLCAxNjUsIDQxLCA1NCwgMTY1LCAyNDAsIDE5NCwgNTQsIDE2NSwgMjE2LCAyNywgNTQsIDE2NSwgMjUxLCAKKyAgICA4OSwgMTY1LCAyNTEsIDEzLCAxNjUsIDQ5LCAyMTYsIDExNSwgMTY1LCA1MSwgMjE2LCAxMTUsIDE2NSwgMjUwLCAxNjUsIAorICAgIDE2NSwgOTMsIDU0LCAxNjUsIDI0NiwgNzAsIDE2NSwgMjMzLCAzMiwgMTY1LCAyMzYsIDE4MywgMjA4LCA3NiwgMTY1LCAKKyAgICAyMDksIDE2LCAxNjUsIDE3LCAxOTksIDgxLCAxNjUsIDE3LCAxMDIsIDE2NSwgMTcsIDEwNSwgMTY1LCAxNywgMTQ3LCAxNjUsIAorICAgIDE3LCAxNDksIDE2NSwgMTcsIDE2NCwgMTY1LCAxNywgMTg3LCAxNjUsIDE3LCAyMTAsIDEzNSwgMTY1LCAxNywgMTkyLCAKKyAgICAxNjUsIDE3LCAyMTksIDExMywgMTY1LCAyNDYsIDc5LCAxNjUsIDIxMCwgMTY3LCAxNjUsIDIyNCwgMjQxLCA1NCwgMTY1LCAKKyAgICAyMzgsIDEyMiwgNTQsIDE2NSwgMjM1LCA2NywgNTQsIDE2NSwgMjE0LCA3OSwgODEsIDE2NSwgMjQ2LCA2OCwgMjUwLCAxNTUsIAorICAgIDE2NSwgOCwgNiwgMSwgNjIsIDE2NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDE2NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE2NSwgOCwgCisgICAgNiwgMSwgMjQyLCAxNTMsIDE2NSwgOCwgNiwgMSwgNzIsIDE2NSwgOCwgNiwgMSwgMjM4LCA1LCAxNjUsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU2LCAxNjUsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxNjUsIDgsIDYsIDEsIDcwLCAxNjUsIDgsIDYsIDEsIDIyNywgCisgICAgMjUxLCAxNjUsIDgsIDYsIDEsIDIyNywgMTE4LCAxNjUsIDgsIDYsIDEsIDE1NiwgMTY1LCA4LCA2LCAxLCAyMjMsIDI0MywgCisgICAgMTY1LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTY1LCA4LCA2LCAxLCA3NCwgMTY1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTY1LCA4LCAKKyAgICA2LCAxLCAyMTQsIDE2NywgMTY1LCA4LCA2LCAxLCAxNDYsIDE2NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDE2NSwgOCwgNiwgMSwgCisgICAgMjA3LCA4MywgMTY1LCA4LCA2LCAxLCA2NiwgMTY1LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTY1LCA4LCA2LCAxLCAyMDEsIAorICAgIDE0NywgMTY1LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTY1LCA4LCA2LCAxLCAyMDAsIDEyMywgMTY1LCA4LCA2LCAxLCAxOTksIAorICAgIDE1NywgMTY1LCA0OSwgNTIsIDE1OSwgMTY1LCAyMTMsIDEwNiwgMjA5LCAxNiwgMTY1LCA1MSwgNTIsIDE1OSwgMTY1LCAKKyAgICAyNDYsIDE0NywgMjUxLCAyNTEsIDE2NSwgMTI4LCAyMjQsIDE3NiwgMTY1LCAyMzUsIDc0LCAyNTEsIDI1MSwgMTY1LCA4LCAKKyAgICA0LCAxLCA2MiwgMTY1LCA4LCA0LCAxLCAyNTAsIDEwMywgMTY1LCA4LCA0LCAxLCAyNDcsIDIyMywgMTY1LCA4LCA0LCAxLCAKKyAgICAyNDIsIDE1MywgMTY1LCA4LCA0LCAxLCA3MiwgMTY1LCA4LCA0LCAxLCAyMzgsIDUsIDE2NSwgOCwgNCwgMSwgMjM2LCAxNTYsIAorICAgIDE2NSwgOCwgNCwgMSwgMjM0LCAyNDcsIDE2NSwgOCwgNCwgMSwgNzAsIDE2NSwgOCwgNCwgMSwgMjI3LCAyNTEsIDE2NSwgOCwgCisgICAgNCwgMSwgMjI3LCAxMTgsIDE2NSwgOCwgNCwgMSwgMTU2LCAxNjUsIDgsIDQsIDEsIDIyMywgMjQzLCAxNjUsIDgsIDQsIDEsIAorICAgIDIyMCwgMjE0LCAxNjUsIDgsIDQsIDEsIDc0LCAxNjUsIDgsIDQsIDEsIDIxNiwgMjI2LCAxNjUsIDgsIDQsIDEsIDIxNCwgCisgICAgMTY3LCAxNjUsIDgsIDQsIDEsIDE0NiwgMTY1LCA4LCA0LCAxLCAyMTIsIDEyMiwgMTY1LCA4LCA0LCAxLCAyMDcsIDgzLCAKKyAgICAxNjUsIDgsIDQsIDEsIDY2LCAxNjUsIDgsIDQsIDEsIDIwMywgMTY4LCAxNjUsIDgsIDQsIDEsIDIwMSwgMTQ3LCAxNjUsIDgsIAorICAgIDQsIDEsIDIwMCwgMTk1LCAxNjUsIDgsIDQsIDEsIDIwMCwgMTIzLCAxNjUsIDgsIDQsIDEsIDE5OSwgMTU3LCAxNjUsIDQ5LCAKKyAgICAyNDIsIDE5NiwgMTU5LCAxNjUsIDgzLCAyMjQsIDE3NiwgMTY1LCA1MSwgMjQyLCAxOTYsIDE1OSwgMTY1LCAyMDUsIDI0MCwgCisgICAgMjQ3LCAxNTcsIDIwNywgMTMsIDU4LCAyMTEsIDk2LCA1OCwgMjExLCA4NSwgNTgsIDIxMSwgNzQsIDU4LCAyMTEsIDYyLCAKKyAgICA1OCwgMjExLCA1MSwgNTgsIDIxMSwgNDAsIDU4LCAyMTEsIDI5LCA1OCwgMjExLCAxOCwgNTgsIDIxMSwgNywgNTgsIDIxMCwgCisgICAgMjU1LCA1OCwgMjEwLCAyNTQsIDU4LCAyMTAsIDI1MywgNTgsIDIxMCwgMjUyLCA1OCwgMjEwLCAyNTAsIDU4LCAyMTAsIAorICAgIDI0OSwgNTgsIDIxMCwgMjQ4LCA1OCwgMjEwLCAyNDcsIDU4LCAyMTAsIDI0NiwgNTgsIDIxMCwgMjQ1LCA1OCwgMjEwLCAKKyAgICAyNDQsIDU4LCAyMTAsIDI0MywgNTgsIDIxMCwgMjQyLCA1OCwgMjEwLCAyNDEsIDU4LCAyMTAsIDIzOSwgNTgsIDIxMCwgCisgICAgMjM4LCA1OCwgMjEwLCAyMzcsIDU4LCAyMTAsIDIzNiwgNTgsIDIxMCwgMjM1LCA1OCwgMjEwLCAyMzQsIDU4LCAyMTAsIAorICAgIDIzMywgNTgsIDIxMCwgMjMyLCA1OCwgMjEwLCAyMzEsIDU4LCAyMTAsIDIzMCwgNTgsIDIxMCwgMjI4LCA1OCwgMjEwLCAKKyAgICAyMjcsIDU4LCAyMTAsIDIyNiwgNTgsIDIxMCwgMjI1LCA1OCwgMjEwLCAyMjQsIDU4LCAyMTAsIDIyMywgNTgsIDIxMCwgCisgICAgMjIyLCA1OCwgMjEwLCAyMjEsIDU4LCAyMTAsIDIyMCwgNTgsIDIxMCwgMjE5LCA1OCwgMjEwLCAyMTcsIDU4LCAyMTAsIAorICAgIDIxNiwgNTgsIDIxMCwgMjE1LCA1OCwgMjEwLCAyMTQsIDU4LCAyMTAsIDIxMywgNTgsIDIxMCwgMjEyLCA1OCwgMjEwLCAKKyAgICAyMTEsIDU4LCAyMTAsIDIxMCwgNTgsIDIxMCwgMjA5LCA1OCwgMjEwLCAyMDgsIDU4LCAyMTAsIDIwNiwgNTgsIDIxMCwgCisgICAgMjA1LCA1OCwgMjEwLCAyMDQsIDU4LCAyMTAsIDIwMywgNTgsIDIxMCwgMjAyLCA1OCwgMjEwLCAyMDEsIDU4LCAyMTAsIAorICAgIDIwMCwgNTgsIDIxMCwgMTk5LCA1OCwgMjEwLCAxOTgsIDU4LCAyMTAsIDE5NywgNTgsIDIxMCwgMTk1LCA1OCwgMjEwLCAKKyAgICAxOTQsIDU4LCAyMTAsIDE5MywgNTgsIDIxMCwgMTkyLCA1OCwgMjEwLCAxOTEsIDU4LCAyMTAsIDE5MCwgNTgsIDIxMCwgCisgICAgMTg5LCA1OCwgMjEwLCAxODgsIDU4LCAyMTAsIDE4NywgNTgsIDIxMCwgMTg2LCA1OCwgMjEwLCAxODQsIDU4LCAyMTAsIAorICAgIDE4MywgNTgsIDIxMCwgMTgyLCA1OCwgMjEwLCAxODEsIDU4LCAyMTAsIDE4MCwgNTgsIDIxMCwgMTc5LCA1OCwgMjEwLCAKKyAgICAxNzgsIDU4LCAyMTAsIDE3NywgNTgsIDIxMCwgMTc2LCA1OCwgMjEwLCAxNzUsIDU4LCAyMTEsIDE3MiwgNTgsIDIxMSwgCisgICAgMTcxLCA1OCwgMjExLCAxNzAsIDU4LCAyMTEsIDE2OSwgNTgsIDIxMSwgMTY4LCA1OCwgMjExLCAxNjcsIDU4LCAyMTEsIAorICAgIDE2NiwgNTgsIDIxMSwgMTY1LCA1OCwgMjExLCAxNjQsIDU4LCAyMTEsIDE2MywgNTgsIDIxMSwgMTYxLCA1OCwgMjExLCAKKyAgICAxNjAsIDU4LCAyMTEsIDE1OSwgNTgsIDIxMSwgMTU4LCA1OCwgMjExLCAxNTcsIDU4LCAyMTEsIDE1NiwgNTgsIDIxMSwgCisgICAgMTU1LCA1OCwgMjExLCAxNTQsIDU4LCAyMTEsIDE1MywgNTgsIDIxMSwgMTUyLCA1OCwgMjExLCAxNTAsIDU4LCAyMTEsIAorICAgIDE0OSwgNTgsIDIxMSwgMTQ4LCA1OCwgMjExLCAxNDcsIDU4LCAyMTEsIDE0NiwgNTgsIDIxMSwgMTQ1LCA1OCwgMjExLCAKKyAgICAxNDQsIDU4LCAyMTEsIDE0MywgNTgsIDIxMSwgMTQyLCA1OCwgMjExLCAxNDEsIDU4LCAyMTEsIDEzOSwgNTgsIDIxMSwgCisgICAgMTM4LCA1OCwgMjExLCAxMzcsIDU4LCAyMTEsIDEzNiwgNTgsIDIxMSwgMTM1LCA1OCwgMjExLCAxMzQsIDU4LCAyMTEsIAorICAgIDEzMywgNTgsIDIxMSwgMTMyLCA1OCwgMjExLCAxMzEsIDU4LCAyMTEsIDEzMCwgNTgsIDIxMSwgMTI4LCA1OCwgMjExLCAKKyAgICAxMjcsIDU4LCAyMTEsIDEyNiwgNTgsIDIxMSwgMTI1LCA1OCwgMjExLCAxMjQsIDU4LCAyMTEsIDEyMywgNTgsIDIxMSwgCisgICAgMTIyLCA1OCwgMjExLCAxMjEsIDU4LCAyMTEsIDEyMCwgNTgsIDIxMSwgMTE5LCA1OCwgMjExLCAxMTcsIDU4LCAyMTEsIAorICAgIDExNiwgNTgsIDIxMSwgMTE1LCA1OCwgMjExLCAxMTQsIDU4LCAyMTEsIDExMywgNTgsIDIxMSwgMTEyLCA1OCwgMjExLCAKKyAgICAxMTEsIDU4LCAyMTEsIDExMCwgNTgsIDIxMSwgMTA5LCA1OCwgMjExLCAxMDgsIDU4LCAyMTEsIDEwNiwgNTgsIDIxMSwgCisgICAgMTA1LCA1OCwgMjExLCAxMDQsIDU4LCAyMTEsIDEwMywgNTgsIDIxMSwgMTAyLCA1OCwgMjExLCAxMDEsIDU4LCAyMTEsIAorICAgIDEwMCwgNTgsIDIxMSwgOTksIDU4LCAyMTEsIDk4LCA1OCwgMjExLCA5NywgNTgsIDIxMSwgOTUsIDU4LCAyMTEsIDk0LCA1OCwgCisgICAgMjExLCA5MywgNTgsIDIxMSwgOTIsIDU4LCAyMTEsIDkxLCA1OCwgMjExLCA5MCwgNTgsIDIxMSwgODksIDU4LCAyMTEsIDg4LCAKKyAgICA1OCwgMjExLCA4NywgNTgsIDIxMSwgODYsIDU4LCAyMTEsIDg0LCA1OCwgMjExLCA4MywgNTgsIDIxMSwgODIsIDU4LCAyMTEsIAorICAgIDgxLCA1OCwgMjExLCA4MCwgNTgsIDIxMSwgNzksIDU4LCAyMTEsIDc4LCA1OCwgMjExLCA3NywgNTgsIDIxMSwgNzYsIDU4LCAKKyAgICAyMTEsIDc1LCA1OCwgMjExLCA3MywgNTgsIDIxMSwgNzIsIDU4LCAyMTEsIDcxLCA1OCwgMjExLCA3MCwgNTgsIDIxMSwgNjksIAorICAgIDU4LCAyMTEsIDY4LCA1OCwgMjExLCA2NywgNTgsIDIxMSwgNjYsIDU4LCAyMTEsIDY1LCA1OCwgMjExLCA2NCwgNTgsIDIxMSwgCisgICAgNjEsIDU4LCAyMTEsIDYwLCA1OCwgMjExLCA1OSwgNTgsIDIxMSwgNTgsIDU4LCAyMTEsIDU3LCA1OCwgMjExLCA1NiwgNTgsIAorICAgIDIxMSwgNTUsIDU4LCAyMTEsIDU0LCA1OCwgMjExLCA1MywgNTgsIDIxMSwgNTIsIDU4LCAyMTEsIDUwLCA1OCwgMjExLCA0OSwgCisgICAgNTgsIDIxMSwgNDgsIDU4LCAyMTEsIDQ3LCA1OCwgMjExLCA0NiwgNTgsIDIxMSwgNDUsIDU4LCAyMTEsIDQ0LCA1OCwgMjExLCAKKyAgICA0MywgNTgsIDIxMSwgNDIsIDU4LCAyMTEsIDQxLCA1OCwgMjExLCAzOSwgNTgsIDIxMSwgMzgsIDU4LCAyMTEsIDM3LCA1OCwgCisgICAgMjExLCAzNiwgNTgsIDIxMSwgMzUsIDU4LCAyMTEsIDM0LCA1OCwgMjExLCAzMywgNTgsIDIxMSwgMzIsIDU4LCAyMTEsIDMxLCAKKyAgICA1OCwgMjExLCAzMCwgNTgsIDIxMSwgMjgsIDU4LCAyMTEsIDI3LCA1OCwgMjExLCAyNiwgNTgsIDIxMSwgMjUsIDU4LCAyMTEsIAorICAgIDI0LCA1OCwgMjExLCAyMywgNTgsIDIxMSwgMjIsIDU4LCAyMTEsIDIxLCA1OCwgMjExLCAyMCwgNTgsIDIxMSwgMTksIDU4LCAKKyAgICAyMTEsIDE3LCA1OCwgMjExLCAxNiwgNTgsIDIxMSwgMTUsIDU4LCAyMTEsIDE0LCA1OCwgMjExLCAxMywgNTgsIDIxMSwgMTIsIAorICAgIDU4LCAyMTEsIDExLCA1OCwgMjExLCAxMCwgNTgsIDIxMSwgOSwgNTgsIDIxMSwgOCwgNTgsIDIxMSwgNiwgNTgsIDIxMSwgNSwgCisgICAgNTgsIDIxMSwgNCwgNTgsIDIxMSwgMywgNTgsIDIxMSwgMiwgNTgsIDIxMSwgMSwgNTgsIDIxMSwgMCwgMjE4LCA5NywgMjE4LCAKKyAgICA5OSwgMjA4LCAxMDUsIDc2LCAyMzQsIDEzMywgMjA5LCAxOSwgMjA4LCAxMDUsIDc2LCAyMDYsIDEyNiwgMjA4LCAyNiwgCisgICAgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNiwgMjM4LCA3MSwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOCwgMjM4LCAxMzQsIDIzOCwgCisgICAgMTU4LCAyMzgsIDE1OSwgMjUxLCAyNDMsIDI1MSwgMjQ0LCAyNTEsIDEzOSwgMjQ4LCAyMzMsIDI0OSwgMTIzLCAyNDgsIDQyLCAKKyAgICAxNzEsIDIwNywgMTksIDIzMywgMTc3LCAyMDcsIDE5LCAyMzMsIDEwMiwgMjA3LCAyNCwgMjI0LCAxNzcsIDIzNywgMTM4LCAKKyAgICAyMjAsIDgsIDIyNCwgMTc2LCAyMzgsIDE3MSwgNzYsIDIyNCwgMTc2LCAyMjQsIDIyNSwgMjE5LCA0NywgMjM4LCAxMzcsIAorICAgIDIyNCwgMTc3LCAyMDcsIDE5LCA4MywgMjA3LCAxOSwgMjAxLCAxNjgsIDIzNiwgMjQyLCAyMzcsIDEzOCwgMjM3LCAxMTYsIAorICAgIDI0NywgMTIxLCAyMTMsIDEwOSwgMjQyLCAyNTIsIDIxMCwgMjksIDIxNiwgMjU0LCAyMjQsIDEwMiwgMTAyLCAyMDksIDI5LCAKKyAgICAyMTAsIDI5LCAyMjgsIDExNywgMjI0LCAxMDIsIDE5OSwgODEsIDIwOSwgMTgyLCAyNDEsIDIzOSwgMjI0LCAxNjcsIDIzOCwgCisgICAgOTYsIDI0MCwgMjIxLCAyNDEsIDEwNywgMjQzLCAzNCwgMTAyLCAyNDEsIDIyOCwgMjQxLCAxMDcsIDI0MywgMzQsIDEwNSwgCisgICAgMjQxLCAyMjcsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDcsIDI0MSwgMjI2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ5LCAyNDEsIAorICAgIDIyNSwgMTg5LCAyNTEsIDI0MywgMjIwLCAxNDAsIDIwNywgMTA5LCAyMjgsIDE4MCwgMjA3LCAxMTMsIDIzOCwgMTcxLCA3NiwgCisgICAgMjA1LCAxMTksIDI0OCwgMTM0LCAyMzgsIDc4LCAyNDcsIDE1NiwgMjQ3LCAxNTgsIDIzOCwgMTcxLCA3NiwgMjIyLCA2NSwgCisgICAgMjM4LCAxMzUsIDIwOCwgMCwgMjA4LCAxNywgMjM4LCA5NiwgMjM4LCA5NywgMjI4LCA5MiwgMjEwLCAxNTUsIDE0OSwgMjM3LCAKKyAgICA5NywgMjEwLCAxNTQsIDIzNiwgMTkzLCAyMjgsIDkyLCAyMTAsIDE1NSwgMTQ3LCAyMzUsIDU4LCAyMTAsIDE1NCwgMjM1LCAKKyAgICA1NSwgMjI4LCA5MiwgMjEwLCAxNTUsIDEwNSwgMjEzLCAxODEsIDIxMCwgMTU0LCAyMTIsIDE4MCwgMjI4LCA5MiwgMjEwLCAKKyAgICAxNTUsIDEwMiwgMjAzLCAyNDAsIDIxMCwgMTU0LCAyMDMsIDE5NywgMjA4LCAyNDcsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgCisgICAgMjE2LCAxOTksIDI0NywgMjAsIDIxNiwgMjAxLCAxMjIsIDIxNywgMTI4LCAyMTUsIDE4LCAyMzMsIDE4MCwgMjQ4LCA2MSwgCisgICAgMjE2LCAxNywgMjM0LCA5OSwgMjQ4LCA3NCwgMjE4LCAyNDIsIDI0OCwgNjEsIDIzNCwgOTksIDIyMCwgMTAzLCAyMjgsIAorICAgIDEwMywgMjI4LCAxMDUsIDIyMCwgMiwgMjI0LCAxNzYsIDIyMCwgMjUsIDIwOCwgMTA1LCA3NiwgMjExLCAxNzcsIDI1MCwgCisgICAgMjI4LCAyMDgsIDE3OSwgMjM4LCAxNzEsIDc2LCAyMTEsIDE3NywgMjUwLCAyMjgsIDIzOCwgOTksIDE3MSwgMjA3LCAyMCwgCisgICAgMjEwLCAxNDEsIDIzMywgMTc3LCAyMDcsIDIwLCAyMTAsIDE0MSwgMjMzLCA5OSwgMTcxLCAyMDcsIDIwLCAzLCAyMjcsIAorICAgIDEzMCwgMjMzLCAxNzcsIDIwNywgMjAsIDMsIDIyNywgMTMwLCAyMzMsIDEwMCwgMjI0LCAxNzcsIDIwNywgMjAsIDIxMCwgCisgICAgMTQxLCA4MywgMjA3LCAyMCwgMjEwLCAxNDEsIDIwMSwgMTY3LCAyMTYsIDEwOCwgMjI0LCAxNzcsIDIzNiwgMjMzLCAyMTYsIAorICAgIDEwOCwgMjI0LCAxNzcsIDIzOSwgMTY3LCAyMTUsIDEyNCwgMjE2LCAxMDgsIDIyNCwgMTc3LCAyNDksIDEyMiwgMjE2LCAKKyAgICAxMDgsIDIyNCwgMTc3LCAyMDMsIDIyOCwgMjE1LCAxMTksIDIxMywgMTA2LCAyMjQsIDE3NywgMjM3LCAxMzgsIDIxMywgCisgICAgMTA2LCAyMjgsIDEwMywgMjEzLCA4OCwgMjA5LCAxMzksIDIxMCwgMjksIDEwNSwgMjA5LCAxMzYsIDIwOCwgMTgxLCAyMDksIAorICAgIDEzOSwgMjEwLCAyOSwgMTQ3LCAyMDksIDEzNSwgMjA4LCAxODAsIDI0MSwgMTA3LCAyNDMsIDM0LCAyMDgsIDQ5LCAyNDEsIAorICAgIDIyMywgMjE1LCA0LCAyMDMsIDE5NiwgMTAyLCAyMTUsIDQsIDIwMywgMTk0LCAyMTQsIDIyMywgMjE1LCA0LCAyMDMsIDE5NiwgCisgICAgMTA1LCAyMTUsIDQsIDIwMywgMTkzLCAyMTQsIDIyMiwgMjEwLCAxNDIsIDIwNSwgMTE3LCAyMDgsIDEwNCwgMjA4LCAzMiwgCisgICAgMjQ3LCAxNTcsIDI0NywgMjAsIDI0NywgOTUsIDIyMiwgMjQsIDIwMSwgMTA2LCAyMjAsIDIzMiwgMjA4LCAxMDUsIDc2LCAKKyAgICAyMzUsIDQzLCAyNTAsIDIyOCwgMjA4LCAxMDUsIDc2LCAyMTQsIDI0MSwgMjUwLCAyMjgsIDIwOCwgMjQ2LCAyMzgsIDE3MSwgCisgICAgNzYsIDIzNSwgNDMsIDI1MCwgMjI4LCAyMzgsIDE3MSwgNzYsIDIxNCwgMjQxLCAyNTAsIDIyOCwgMjM4LCAxMzIsIDIwOCwgCisgICAgMTA1LCA3NiwgMjA4LCA0OSwgMjA5LCA1LCAyMDksIDEzOSwgMjM1LCA3OSwgMTcxLCAyMjgsIDUyLCAyMTAsIDExOSwgMjA5LCAKKyAgICAxMzksIDE3MSwgMjI4LCA1MiwgMjExLCAyMTcsIDI0MywgMzQsIDIxMCwgMTUxLCAyMjgsIDUyLCAyNDIsIDIxNSwgMjA4LCAKKyAgICA1MCwgMjA2LCAxNTIsIDIwOCwgMTIzLCAyMTcsIDQ1LCAyMDcsIDk4LCAyNDYsIDY5LCAyMTcsIDEzLCAyMTUsIDUsIDIyMiwgCisgICAgMjMsIDIxNSwgMTA5LCAyNTEsIDksIDIxNCwgMjU1LCAyNDYsIDY5LCAyNTEsIDI1LCAyMjAsIDkxLCAyMDksIDE5MSwgOCwgCisgICAgNiwgMSwgMjM1LCAxOTksIDgsIDQsIDEsIDIzNSwgMTk5LCAyNDcsIDM5LCAyNTEsIDExOCwgMjA3LCAxMDMsIDIwOCwgNiwgCisgICAgMjQ2LCA4MCwgMjA5LCA4NiwgMjI1LCAyOCwgMjI3LCA2MywgMSwgMjI0LCAxMjksIDIyNSwgNzUsIDEsIDIzNywgMTQsIAorICAgIDIzNywgNSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjM3LCAxNTAsIDIyNSwgNzUsIDEsIDIxMywgMSwgMjI1LCA3NSwgMSwgCisgICAgMjI0LCAxMTAsIDc5LCAxMzQsIDI0OCwgMTQ2LCAyMTAsIDQsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgMjM2LCAKKyAgICAxNzAsIDIzNiwgMTY5LCAyMzYsIDE2OCwgMjIwLCAyMzQsIDE5OCwgMjQwLCAxOTgsIDI0MSwgMTk4LCAyNDMsIDIyNCwgNDYsIAorICAgIDIxMywgOSwgMjI0LCA0OCwgMjEzLCAxMSwgMjE2LCA3NiwgMjI0LCA0NSwgMjEzLCA4LCAyMTksIDE3LCAyMjEsIDE0MCwgCisgICAgMjAxLCAyLCAyMjQsIDQ3LCAyMTMsIDEwLCAyMzYsIDE5MiwgMjE2LCA3NSwgMjAxLCA1NCwgMjM4LCAxOTQsIDIzNiwgMTgwLCAKKyAgICAyMjEsIDIxMCwgMjE3LCA3OSwgMjAzLCAxOTgsIDk5LCAyMjEsIDIxMCwgMjQxLCAyNDUsIDk5LCA5OCwgMjA1LCA5NywgNTUsIAorICAgIDMsIDUzLCA4MywgOTcsIDg3LCAyMDUsIDk3LCA1NSwgMywgNTMsIDgzLCA5NywgMTEsIDUsIDIyOCwgMTAsIDgxLCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDIyNCwgMjQ3LCAxNTksIDIwMiwgMTY4LCAyMDIsIDU3LCAyMDEsIDI0NSwgCisgICAgMjAxLCAyMzQsIDIwMSwgMjIzLCAyMDEsIDIxMiwgMjAxLCAyMDEsIDIwMSwgMTkwLCAyMDEsIDE3OSwgMjAyLCAxNjcsIAorICAgIDIwMiwgMTU2LCAyMDIsIDE0NSwgMjAyLCAxMzQsIDIwMiwgMTIzLCAyMDIsIDExMiwgMjAyLCAxMDEsIDI0NywgMjI4LCAKKyAgICAyMTcsIDMwLCA4MSwgMjQ4LCAxMTQsIDE5OCwgMjQyLCAxMCwgMiwgMjE4LCAxMDYsIDIwNiwgMTU1LCAxMCwgMiwgMjE4LCAKKyAgICAxMDYsIDExOSwgMjE4LCAxMDYsIDI0OCwgNCwgMTE5LCAyNDgsIDMsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIDgyLCAKKyAgICAyNDYsIDE5NiwgMjAzLCA2OSwgMjAyLCA5MCwgMjAyLCA3OSwgMjAyLCA2OCwgMjAyLCA1NiwgMjAyLCA0NSwgMjAyLCAzNCwgCisgICAgMjAyLCAyMywgMjAyLCAxMiwgMjAyLCAxLCAyMDEsIDI0OSwgMjAxLCAyNDgsIDIwMSwgMjQ3LCAyMDEsIDI0NiwgMjAxLCAKKyAgICAyNDQsIDIwMSwgMjQzLCAyMDEsIDI0MiwgMjAxLCAyNDEsIDIwMSwgMjQwLCAyMDEsIDIzOSwgMjAxLCAyMzgsIDIwMSwgCisgICAgMjM3LCAyMDEsIDIzNiwgMjAxLCAyMzUsIDIwMSwgMjMzLCAyMDEsIDIzMiwgMjAxLCAyMzEsIDIwMSwgMjMwLCAyMDEsIAorICAgIDIyOSwgMjAxLCAyMjgsIDIwMSwgMjI3LCAyMDEsIDIyNiwgMjAxLCAyMjUsIDIwMSwgMjI0LCAyMDEsIDIyMiwgMjAxLCAKKyAgICAyMjEsIDIwMSwgMjIwLCAyMDEsIDIxOSwgMjAxLCAyMTgsIDIwMSwgMjE3LCAyMDEsIDIxNiwgMjAxLCAyMTUsIDIwMSwgCisgICAgMjE0LCAyMDEsIDIxMywgMjAxLCAyMTEsIDIwMSwgMjEwLCAyMDEsIDIwOSwgMjAxLCAyMDgsIDIwMSwgMjA3LCAyMDEsIAorICAgIDIwNiwgMjAxLCAyMDUsIDIwMSwgMjA0LCAyMDEsIDIwMywgMjAxLCAyMDIsIDIwMSwgMjAwLCAyMDEsIDE5OSwgMjAxLCAKKyAgICAxOTgsIDIwMSwgMTk3LCAyMDEsIDE5NiwgMjAxLCAxOTUsIDIwMSwgMTk0LCAyMDEsIDE5MywgMjAxLCAxOTIsIDIwMSwgCisgICAgMTkxLCAyMDEsIDE4OSwgMjAxLCAxODgsIDIwMSwgMTg3LCAyMDEsIDE4NiwgMjAxLCAxODUsIDIwMSwgMTg0LCAyMDEsIAorICAgIDE4MywgMjAxLCAxODIsIDIwMSwgMTgxLCAyMDEsIDE4MCwgMjAxLCAxNzgsIDIwMSwgMTc3LCAyMDEsIDE3NiwgMjAxLCAKKyAgICAxNzUsIDIwMSwgMTc0LCAyMDEsIDE3MywgMjAxLCAxNzIsIDIwMSwgMTcxLCAyMDEsIDE3MCwgMjAxLCAxNjksIDIwMiwgCisgICAgMTY2LCAyMDIsIDE2NSwgMjAyLCAxNjQsIDIwMiwgMTYzLCAyMDIsIDE2MiwgMjAyLCAxNjEsIDIwMiwgMTYwLCAyMDIsIAorICAgIDE1OSwgMjAyLCAxNTgsIDIwMiwgMTU3LCAyMDIsIDE1NSwgMjAyLCAxNTQsIDIwMiwgMTUzLCAyMDIsIDE1MiwgMjAyLCAKKyAgICAxNTEsIDIwMiwgMTUwLCAyMDIsIDE0OSwgMjAyLCAxNDgsIDIwMiwgMTQ3LCAyMDIsIDE0NiwgMjAyLCAxNDQsIDIwMiwgCisgICAgMTQzLCAyMDIsIDE0MiwgMjAyLCAxNDEsIDIwMiwgMTQwLCAyMDIsIDEzOSwgMjAyLCAxMzgsIDIwMiwgMTM3LCAyMDIsIAorICAgIDEzNiwgMjAyLCAxMzUsIDIwMiwgMTMzLCAyMDIsIDEzMiwgMjAyLCAxMzEsIDIwMiwgMTMwLCAyMDIsIDEyOSwgMjAyLCAKKyAgICAxMjgsIDIwMiwgMTI3LCAyMDIsIDEyNiwgMjAyLCAxMjUsIDIwMiwgMTI0LCAyMDIsIDEyMiwgMjAyLCAxMjEsIDIwMiwgCisgICAgMTIwLCAyMDIsIDExOSwgMjAyLCAxMTgsIDIwMiwgMTE3LCAyMDIsIDExNiwgMjAyLCAxMTUsIDIwMiwgMTE0LCAyMDIsIAorICAgIDExMywgMjAyLCAxMTEsIDIwMiwgMTEwLCAyMDIsIDEwOSwgMjAyLCAxMDgsIDIwMiwgMTA3LCAyMDIsIDEwNiwgMjAyLCAKKyAgICAxMDUsIDIwMiwgMTA0LCAyMDIsIDEwMywgMjAyLCAxMDIsIDIwMiwgMTAwLCAyMDIsIDk5LCAyMDIsIDk4LCAyMDIsIDk3LCAKKyAgICAyMDIsIDk2LCAyMDIsIDk1LCAyMDIsIDk0LCAyMDIsIDkzLCAyMDIsIDkyLCAyMDIsIDkxLCAyMDIsIDg5LCAyMDIsIDg4LCAKKyAgICAyMDIsIDg3LCAyMDIsIDg2LCAyMDIsIDg1LCAyMDIsIDg0LCAyMDIsIDgzLCAyMDIsIDgyLCAyMDIsIDgxLCAyMDIsIDgwLCAKKyAgICAyMDIsIDc4LCAyMDIsIDc3LCAyMDIsIDc2LCAyMDIsIDc1LCAyMDIsIDc0LCAyMDIsIDczLCAyMDIsIDcyLCAyMDIsIDcxLCAKKyAgICAyMDIsIDcwLCAyMDIsIDY5LCAyMDIsIDY3LCAyMDIsIDY2LCAyMDIsIDY1LCAyMDIsIDY0LCAyMDIsIDYzLCAyMDIsIDYyLCAKKyAgICAyMDIsIDYxLCAyMDIsIDYwLCAyMDIsIDU5LCAyMDIsIDU4LCAyMDIsIDU1LCAyMDIsIDU0LCAyMDIsIDUzLCAyMDIsIDUyLCAKKyAgICAyMDIsIDUxLCAyMDIsIDUwLCAyMDIsIDQ5LCAyMDIsIDQ4LCAyMDIsIDQ3LCAyMDIsIDQ2LCAyMDIsIDQ0LCAyMDIsIDQzLCAKKyAgICAyMDIsIDQyLCAyMDIsIDQxLCAyMDIsIDQwLCAyMDIsIDM5LCAyMDIsIDM4LCAyMDIsIDM3LCAyMDIsIDM2LCAyMDIsIDM1LCAKKyAgICAyMDIsIDMzLCAyMDIsIDMyLCAyMDIsIDMxLCAyMDIsIDMwLCAyMDIsIDI5LCAyMDIsIDI4LCAyMDIsIDI3LCAyMDIsIDI2LCAKKyAgICAyMDIsIDI1LCAyMDIsIDI0LCAyMDIsIDIyLCAyMDIsIDIxLCAyMDIsIDIwLCAyMDIsIDE5LCAyMDIsIDE4LCAyMDIsIDE3LCAKKyAgICAyMDIsIDE2LCAyMDIsIDE1LCAyMDIsIDE0LCAyMDIsIDEzLCAyMDIsIDExLCAyMDIsIDEwLCAyMDIsIDksIDIwMiwgOCwgCisgICAgMjAyLCA3LCAyMDIsIDYsIDIwMiwgNSwgMjAyLCA0LCAyMDIsIDMsIDIwMiwgMiwgMjAyLCAwLCAyMDEsIDI1NSwgMjAxLCAKKyAgICAyNTQsIDIwMSwgMjUzLCAyMDEsIDI1MiwgMjAxLCAyNTEsIDIwMSwgMjUwLCA4LCA2LCAxLCAzNSwgMywgMjIyLCAyMjksIAorICAgIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAKKyAgICAyMjIsIDIyOCwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgCisgICAgMTQ3LCAyNiwgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyNDcsIDEyNSwgOCwgNiwgMSwgMjMzLCAKKyAgICAxOSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDIzMywgMTksIDMsIDczLCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMjIwLCAwLCAzLCAyMDUsIDI0MSwgNTYsIAorICAgIDgsIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA2LCAKKyAgICAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCAKKyAgICA2LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAKKyAgICAyNDAsIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAKKyAgICAxNjksIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDczLCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCA3MywgODgsIAorICAgIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgNzMsIDg4LCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDczLCA4OCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIAorICAgIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCA3MywgODgsIDI2LCAxNjksIDgsIDYsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIAorICAgIDYsIDEsIDIyNywgMjUyLCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgCisgICAgMjIzLCAyNDQsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAKKyAgICAyNTEsIDIyMiwgMywgMjM1LCA3MywgOCwgNCwgMSwgMTc2LCAxNjMsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE3NiwgMTYzLCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgCisgICAgMTY5LCAzLCAxNjksIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyMzMsIDE4NiwgMjExLCAyMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTg2LCAyMTEsIDIxOSwgMywgCisgICAgMTY5LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjUxLCAxNDIsIDksIDIxMCwgMTUxLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDcyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4NywgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIxNywgMTIxLCA5LCAyMTAsIDE1MSwgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgNjYsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIDIxMSwgOSwgCisgICAgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDcyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgCisgICAgMywgMjUxLCAyMjEsIDksIDIxMCwgMTUxLCAyMTgsIDIyOCwgMywgMjI2LCAyNTIsIDE4NSwgMSwgMjI2LCAxODIsIDQ1LCAKKyAgICAxMTEsIDIyNywgMTE4LCA0NSwgMTExLCAyMTksIDI1NSwgNDUsIDExMSwgMjQ3LCAyMjMsIDQ1LCAxMTEsIDIxOCwgNjIsIAorICAgIDQ1LCAxMTEsIDIwNSwgMCwgNDUsIDExMSwgMjE5LCAyMiwgNDUsIDExMSwgMjA3LCA4MywgNDUsIDExMSwgMjIwLCAyMTQsIAorICAgIDQ1LCAxMTEsIDIxNiwgMjI2LCA0NSwgMTExLCAyMjMsIDI0MywgNDUsIDExMSwgMjAwLCAxMjMsIDQ1LCAxMTEsIDE0NiwgCisgICAgNDUsIDExMSwgMTU2LCA0NSwgMTExLCAyMDMsIDE2OCwgNDUsIDExMSwgMjI0LCAxMzAsIDQ1LCAxMTEsIDIyNCwgMTM5LCAKKyAgICA0NSwgMTExLCAyMTIsIDIxNiwgNDUsIDExMSwgMjE5LCA0LCA0NSwgMTExLCAyMjcsIDI1MSwgNDUsIDExMSwgMjEwLCAxMTYsIAorICAgIDQ1LCAxMTEsIDIwOCwgMTgyLCA0NSwgMTExLCAyMTIsIDEyMiwgNDUsIDExMSwgMjM0LCAyNDcsIDQ1LCAxMTEsIDIyNiwgCisgICAgMzAsIDQ1LCA1LCAyMjcsIDEwNSwgNDUsIDUsIDIyNiwgMTYzLCA0NSwgNSwgMjI2LCAxNTAsIDQ1LCA1LCAyMjYsIDE1LCAKKyAgICA0NSwgNSwgMjI1LCAyMzYsIDQ1LCA1LCAyMjcsIDgsIDQ1LCA1LCAyMjcsIDUsIDQ1LCA1LCAyMjcsIDgyLCA0NSwgNSwgCisgICAgMjI2LCA4OCwgNDUsIDUsIDIyNiwgNjgsIDQ1LCA1LCAyMjcsIDI2LCA0NSwgNSwgMjE5LCAyNTIsIDQ1LCA1LCAyMTksIAorICAgIDIwMSwgNDUsIDUsIDIxOSwgMTk3LCA0NSwgNSwgMjE5LCAxNjYsIDQ1LCA1LCAyMTksIDE1OCwgNDUsIDUsIDIxOSwgMjQwLCAKKyAgICA0NSwgNSwgMjE5LCAyMzgsIDQ1LCA1LCAyMTksIDI0OSwgNDUsIDUsIDIxOSwgMTc4LCA0NSwgNSwgMjE5LCAxNzMsIDQ1LCAKKyAgICA1LCAyMTksIDI0MiwgNDUsIDUsIDI0NywgMTg5LCA0NSwgNSwgMjQ2LCAxNzMsIDQ1LCA1LCAyNDYsIDE2MywgNDUsIDUsIAorICAgIDI0MiwgMjE0LCA0NSwgNSwgMjQyLCAxNzgsIDQ1LCA1LCAyNDcsIDc2LCA0NSwgNSwgMjQ3LCA2OCwgNDUsIDUsIDI0NywgCisgICAgMTc4LCA0NSwgNSwgMjQ2LCA5MSwgNDUsIDUsIDI0MywgMzAsIDQ1LCA1LCAyNDcsIDEwOSwgNDUsIDUsIDIxOCwgNTksIDQ1LCAKKyAgICA1LCAyMTgsIDQxLCA0NSwgNSwgMjE4LCAzNiwgNDUsIDUsIDIxOCwgMTksIDQ1LCA1LCAyMTgsIDExLCA0NSwgNSwgMjE4LCAKKyAgICA1MCwgNDUsIDUsIDIxOCwgNDksIDQ1LCA1LCAyMTgsIDU2LCA0NSwgNSwgMjE4LCAyNiwgNDUsIDUsIDIxOCwgMjMsIDQ1LCAKKyAgICA1LCAyMTgsIDUzLCA0NSwgNSwgMjA0LCAyNTIsIDQ1LCA1LCAyMDQsIDIzMiwgNDUsIDUsIDIwNCwgMjMxLCA0NSwgNSwgCisgICAgMjA0LCAyMjAsIDQ1LCA1LCAyMDQsIDIxNywgNDUsIDUsIDIwNCwgMjQ4LCA0NSwgNSwgMjA0LCAyNDcsIDQ1LCA1LCAyMDQsIAorICAgIDI1MSwgNDUsIDUsIDIwNCwgMjMwLCA0NSwgNSwgMjA0LCAyMjksIDQ1LCA1LCAyMDQsIDI1MCwgNDUsIDUsIDIxOSwgMjAsIAorICAgIDQ1LCA1LCAyMTksIDYsIDQ1LCA1LCAyMTksIDUsIDQ1LCA1LCAyMTgsIDI0NSwgNDUsIDUsIDIxOCwgMjQ0LCA0NSwgNSwgCisgICAgMjE5LCAxNiwgNDUsIDUsIDIxOSwgMTUsIDQ1LCA1LCAyMTksIDE5LCA0NSwgNSwgMjE4LCAyNDcsIDQ1LCA1LCAyMTgsIAorICAgIDI0NiwgNDUsIDUsIDIxOSwgMTgsIDQ1LCA1LCAyMDcsIDMyLCA0NSwgNSwgMjA2LCAxNSwgNDUsIDUsIDIwNSwgMjU1LCA0NSwgCisgICAgNSwgMjA0LCAyMTUsIDQ1LCA1LCAyMDQsIDE3NiwgNDUsIDUsIDIwNiwgMjAxLCA0NSwgNSwgMjA2LCAxOTAsIDQ1LCA1LCAKKyAgICAyMDcsIDgsIDQ1LCA1LCAxMzgsIDQ1LCA1LCAyMDUsIDE2MSwgNDUsIDUsIDIwNiwgMjIxLCA0NSwgNSwgMjIwLCAxNTcsIAorICAgIDQ1LCA1LCAyMTksIDE1MCwgNDUsIDUsIDIxOSwgMTI1LCA0NSwgNSwgMjE4LCAxMzMsIDQ1LCA1LCAyMTgsIDc0LCA0NSwgNSwgCisgICAgMjIwLCAzNCwgNDUsIDUsIDIyMCwgMjksIDQ1LCA1LCAyMjAsIDE0MywgNDUsIDUsIDIxOCwgMjQxLCA0NSwgNSwgMjE4LCAKKyAgICAyMjksIDQ1LCA1LCAyMjAsIDExNiwgNDUsIDUsIDIxNiwgMjEwLCA0NSwgNSwgMjE1LCAyMDQsIDQ1LCA1LCAyMTUsIDE2NiwgCisgICAgNDUsIDUsIDIxNCwgMjI0LCA0NSwgNSwgMjE0LCAxOTAsIDQ1LCA1LCAyMTYsIDczLCA0NSwgNSwgMjE2LCA2MSwgNDUsIDUsIAorICAgIDIxNiwgMTkwLCA0NSwgNSwgMjE1LCAxMDYsIDQ1LCA1LCAyMTUsIDgxLCA0NSwgNSwgMjE2LCA4NywgNDUsIDUsIDIyMiwgCisgICAgMjMzLCA0NSwgNSwgMjIxLCAyMTEsIDQ1LCA1LCAyMjEsIDE4MSwgNDUsIDUsIDIyMSwgNDEsIDQ1LCA1LCAyMjAsIDI0MywgCisgICAgNDUsIDUsIDIyMiwgNzYsIDQ1LCA1LCAyMjIsIDY0LCA0NSwgNSwgMjIyLCAxOTgsIDQ1LCA1LCAyMjEsIDEzNiwgNDUsIDUsIAorICAgIDIyMSwgODcsIDQ1LCA1LCAyMjIsIDEyMywgNDUsIDUsIDIwMCwgMTA5LCA0NSwgNSwgMjAwLCA5LCA0NSwgNSwgMjAwLCAwLCAKKyAgICA0NSwgNSwgMTk5LCAyMTEsIDQ1LCA1LCAxOTksIDE3OSwgNDUsIDUsIDIwMCwgNTEsIDQ1LCA1LCAyMDAsIDQ4LCA0NSwgNSwgCisgICAgMjAwLCA4OCwgNDUsIDUsIDE5OSwgMjQ1LCA0NSwgNSwgMTk5LCAyMzAsIDQ1LCA1LCAyMDAsIDYxLCA0NSwgNSwgMjEzLCAKKyAgICAyNDgsIDQ1LCA1LCAyMTMsIDg4LCA0NSwgNSwgMjEzLCAzMywgNDUsIDUsIDIxMiwgMTc1LCA0NSwgNSwgMjEyLCAxNDMsIAorICAgIDQ1LCA1LCAyMTMsIDE5MCwgNDUsIDUsIDIxMywgMTY3LCA0NSwgNSwgMjEzLCAyMjksIDQ1LCA1LCAyMTMsIDEsIDQ1LCA1LCAKKyAgICAyMTIsIDIzOCwgNDUsIDUsIDIxMywgMTk5LCA0NSwgNSwgMjI1LCAxNzUsIDQ1LCA1LCAyMjQsIDIxMCwgNDUsIDUsIDIyNCwgCisgICAgMTkyLCA0NSwgNSwgMjI0LCA0MiwgNDUsIDUsIDIyNCwgMTMsIDQ1LCA1LCAyMjUsIDQwLCA0NSwgNSwgMjI1LCAzMiwgNDUsIAorICAgIDUsIDIyNSwgMTQ5LCA0NSwgNSwgMjI0LCAxMTAsIDQ1LCA1LCAyMjQsIDc4LCA0NSwgNSwgMjI1LCA1OCwgNDUsIDUsIDIwMywgCisgICAgODksIDQ1LCA1LCAyMDIsIDIzNCwgNDUsIDUsIDIwMiwgMjE5LCA0NSwgNSwgMjAxLCAxNjYsIDQ1LCA1LCAyMDEsIDE1OSwgCisgICAgNDUsIDUsIDIwMywgNTksIDQ1LCA1LCAyMDMsIDU0LCA0NSwgNSwgMjAzLCA4NSwgNDUsIDUsIDIwMiwgMTkzLCA0NSwgNSwgCisgICAgMjAyLCAxNzksIDQ1LCA1LCAyMDMsIDY1LCA0NSwgNSwgMjI0LCAxMjgsIDQ1LCA1LCAyMjQsIDEyMywgNDUsIDUsIDIyNCwgCisgICAgMTIyLCA0NSwgNSwgMjI0LCAxMTksIDQ1LCA1LCAyMjQsIDExOCwgNDUsIDUsIDIyNCwgMTI1LCA0NSwgNSwgMjI0LCAxMjQsIAorICAgIDQ1LCA1LCAyMjQsIDEyNywgNDUsIDUsIDIyNCwgMTIxLCA0NSwgNSwgMjI0LCAxMjAsIDQ1LCA1LCAyMjQsIDEyNiwgNDUsIAorICAgIDUsIDIyNCwgMTM3LCA0NSwgNSwgMjI0LCAxMzIsIDQ1LCA1LCAyMjQsIDEzMSwgNDUsIDUsIDIyNCwgMTE1LCA0NSwgNSwgCisgICAgMjI0LCAxMTQsIDQ1LCA1LCAyMjQsIDEzNCwgNDUsIDUsIDIyNCwgMTMzLCA0NSwgNSwgMjI0LCAxMzYsIDQ1LCA1LCAyMjQsIAorICAgIDExNywgNDUsIDUsIDIyNCwgMTE2LCA0NSwgNSwgMjI0LCAxMzUsIDQ1LCA1LCAyMTIsIDIxNCwgNDUsIDUsIDIxMiwgMjAzLCAKKyAgICA0NSwgNSwgMjEyLCAyMDIsIDQ1LCA1LCAyMTIsIDE5NSwgNDUsIDUsIDIxMiwgMTg4LCA0NSwgNSwgMjEyLCAyMTAsIDQ1LCAKKyAgICA1LCAyMTIsIDIwOSwgNDUsIDUsIDIxMiwgMjEzLCA0NSwgNSwgMjEyLCAyMDEsIDQ1LCA1LCAyMTIsIDIwMCwgNDUsIDUsIAorICAgIDIxMiwgMjEyLCA0NSwgNSwgMjE5LCAyLCA0NSwgNSwgMjE4LCAyNTMsIDQ1LCA1LCAyMTgsIDI1MiwgNDUsIDUsIDIxOCwgCisgICAgMjQ5LCA0NSwgNSwgMjE4LCAyNDgsIDQ1LCA1LCAyMTgsIDI1NSwgNDUsIDUsIDIxOCwgMjU0LCA0NSwgNSwgMjE5LCAxLCAKKyAgICA0NSwgNSwgMjE4LCAyNTEsIDQ1LCA1LCAyMTgsIDI1MCwgNDUsIDUsIDIxOSwgMCwgNDUsIDUsIDIyNywgMjQ3LCA0NSwgNSwgCisgICAgMjI3LCAyMDcsIDQ1LCA1LCAyMjcsIDIwMCwgNDUsIDUsIDIyNywgMTQ3LCA0NSwgNSwgMjI3LCAxMjgsIDQ1LCA1LCAyMjcsIAorICAgIDIyNywgNDUsIDUsIDIyNywgMjI1LCA0NSwgNSwgMjI3LCAyNDEsIDQ1LCA1LCAyMjcsIDE2NiwgNDUsIDUsIDIyNywgMTU2LCAKKyAgICA0NSwgNSwgMjI3LCAyMzQsIDQ1LCA1LCAyMTAsIDEwOSwgNDUsIDUsIDIxMCwgMzMsIDQ1LCA1LCAyMTAsIDI4LCA0NSwgNSwgCisgICAgMjA5LCAyMjAsIDQ1LCA1LCAyMDksIDIwMywgNDUsIDUsIDIxMCwgNjUsIDQ1LCA1LCAyMTAsIDYzLCA0NSwgNSwgMjEwLCAKKyAgICA5OCwgNDUsIDUsIDIxMCwgOCwgNDUsIDUsIDIxMCwgMiwgNDUsIDUsIDIxMCwgNzQsIDQ1LCA1LCAyMDgsIDE3OCwgNDUsIDUsIAorICAgIDIwOCwgMTQ3LCA0NSwgNSwgMjA4LCAxNDMsIDQ1LCA1LCAyMDgsIDEzNCwgNDUsIDUsIDIwOCwgMTMxLCA0NSwgNSwgMjA4LCAKKyAgICAxNTMsIDQ1LCA1LCAyMDgsIDE1MiwgNDUsIDUsIDIwOCwgMTc3LCA0NSwgNSwgMjA4LCAxMzksIDQ1LCA1LCAyMDgsIDEzOCwgCisgICAgNDUsIDUsIDIwOCwgMTU1LCA0NSwgNSwgMjEyLCA2MSwgNDUsIDUsIDIwOSwgMTgyLCA0NSwgNSwgMjA5LCAxNjEsIDQ1LCA1LCAKKyAgICAyMDgsIDI0LCA0NSwgNSwgMjA3LCAxOTMsIDQ1LCA1LCAyMTEsIDIwMiwgNDUsIDUsIDIxMSwgMTkwLCA0NSwgNSwgMjEyLCAKKyAgICA0NiwgNDUsIDUsIDIwOSwgMjksIDQ1LCA1LCAyMDksIDEwLCA0NSwgNSwgMjExLCAyNDMsIDQ1LCA1LCAyMzQsIDIzMywgNDUsIAorICAgIDUsIDIzNCwgNzUsIDQ1LCA1LCAyMzQsIDU0LCA0NSwgNSwgMjMzLCA5NywgNDUsIDUsIDIzMywgNzEsIDQ1LCA1LCAyMzQsIAorICAgIDEzOSwgNDUsIDUsIDIzNCwgMTIwLCA0NSwgNSwgMjM0LCAyMjMsIDQ1LCA1LCAyMzMsIDIwNywgNDUsIDUsIDIzMywgMTg4LCAKKyAgICA0NSwgNSwgMjM0LCAxNTAsIDQ1LCA1LCAyMjYsIDI5LCA0NSwgNSwgMjI2LCAyOCwgNDUsIDUsIDIyNiwgMjMsIDQ1LCA1LCAKKyAgICAyMjYsIDIyLCA0NSwgNSwgMjI2LCAxOSwgNDUsIDUsIDIyNiwgMTgsIDQ1LCA1LCAyMjYsIDI1LCA0NSwgNSwgMjI2LCAyNCwgCisgICAgNDUsIDUsIDIyNiwgMjcsIDQ1LCA1LCAyMjYsIDIxLCA0NSwgNSwgMjI2LCAyMCwgNDUsIDUsIDIyNiwgMjYsIDQ1LCA1LCAKKyAgICAyMDksIDIyNywgMTQzLCAxMTEsIDIsIDIwMCwgNzQsIDE0MywgMTExLCAyLCAyMTMsIDIxOCwgMTQzLCAxMTEsIDIsIDIxMywgCisgICAgMTM0LCAxMTgsIDEsIDIwNCwgMTAyLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxNjEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIyNiwgMjA3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjYsIDg4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjYsIDE3OCwgCisgICAgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE5LCAxNzgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NywgMTkwLCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyNDcsIDM3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDYsIDkxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDYsIAorICAgIDIxMCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE4LCAyNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQyLCA1OCwgODYsIDExMSwgCisgICAgMiwgMjQ2LCA4NiwgMjA0LCAyNDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0MCwgMjExLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMDQsIDIzNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTg4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMDcsIDM2LCA4NiwgCisgICAgMTExLCAyLCAyNDYsIDg2LCAyMDYsIDEyMiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTM4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMDYsIDYxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTgsIDI0MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ5LCAxMzYsIAorICAgIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxNSwgMjQ1LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTUsIDEwNiwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjE1LCAyMTcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyMSwgMTM2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAxOTksIDI0NSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEzLCAxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjQsIDExMCwgODYsIAorICAgIDExMSwgMiwgMjQ2LCA4NiwgMjAyLCAxOTMsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMCwgMTE0LCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyMDgsIDE3OSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEyLCA2NCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMTQ0LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxOTQsIDg2LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCAxNTksIDg2LCAyMjgsIAorICAgIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxNCwgOTcsIDg2LCAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxMiwgMTMxLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTIsIDEyNCwgODYsIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCAKKyAgICAxMzksIDg2LCAyMiwgMiwgMjE3LCA4NiwgODYsIDIyLCAyLCAyNTIsIDk5LCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDI1MywgCisgICAgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAyMDEsIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMTY2LCAxNzcsIDEsIDI0OCwgMTgxLCAKKyAgICAyMTksIDI0MCwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAxNzgsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAyNTMsIDY5LCAxLCAKKyAgICAyNDgsIDE4MSwgMjE5LCAyMDEsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAxNjYsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAyNDAsIAorICAgIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAxNzgsIDY5LCAxLCAyNTEsIDE2OSwgMjQ3LCA3NiwgNjksIDEsIDI1MSwgMTY5LCAKKyAgICAyMDQsIDIxNSwgNjksIDEsIDI1MSwgMTY5LCAxMzgsIDY5LCAxLCAyNTEsIDE2OSwgMjE2LCAyMjYsIDY3LCAxLCAyMzgsIAorICAgIDI5LCAyMzgsIDI4LCAyNDMsIDM4LCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOCwgMjksIDI0MywgMzgsIDE1MCwgCisgICAgMTQ4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewpAQCAtMTY1MzMsMjAgKzE3NjQ5LDIwIEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgCiAgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA1MiwgODcsIDUyLCA4OCwgCi0gICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA1MiwgOTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgOTgsIDk5LCAxMDAsIAotICAgIDEwMSwgMTAyLCAxMDMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMDQsIDEwNSwgMTA2LCAKLSAgICAxMDcsIDEwOCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgMTA5LCAxMTAsIDExMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDk4LCA1MiwgNTIsIDUyLCA5OSwgMTAwLCAxMDEsIAorICAgIDEwMiwgMTAzLCAxMDQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMDUsIDEwNiwgMTA3LCAKKyAgICAxMDgsIDEwOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgMTEwLCAxMTEsIDExMiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgMTEyLCAxMTMsIDExNCwgMTE1LCA1MiwgNTIsIDUyLCAxMTYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDExMywgMTE0LCAxMTUsIDExNiwgNTIsIDUyLCA1MiwgMTE3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDExOSwgCisgICAgMTIwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgMTE3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOSwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMSwgNTIsIDEzMiwgMTMzLCAxMzQsIAotICAgIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCAxMjEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTIyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTIzLCAxMjQsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM0LCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM1LCAxMzYsIDUyLCA1MiwgNTIsIDUyLCAxMzcsIDUyLCAxMzgsIDEzOSwgMTQwLCAKKyAgICAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY1NjAsNyArMTc2NzYsNyBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQyLCAxNDMsIDE0NCwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDgsIDE0OSwgMTUwLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzE3LDcgKzE3ODMzLDcgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ1LCAxNDYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNTEsIDE1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjczMSw4ICsxNzg0Nyw4IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDcsIDE0OCwgMTQ5LCAKLSAgICAxNTAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNTMsIDE1NCwgMTU1LCAKKyAgICAxNTYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjc2OCwxMjE0ICsxNzg4NCwxMjE3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMywgNiwgOSwgMTEsIDE0LCAxNywgMTksIDIxLCAyNCwgMjcsIDI5LCAzMSwgCiAgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OSwgNjEsIDY0LCA2NiwgNjgsIDcxLCA3NCwgCiAgICAgNzcsIDgwLCA4NCwgODgsIDkzLCA5OCwgMTAzLCAxMDcsIDExMiwgMTE3LCAxMjIsIDEyNiwgMTMxLCAxMzYsIDE0MCwgMTQ1LCAKLSAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTcyLCAxNzcsIDE4MSwgMTg2LCAxOTEsIDE5NiwgMjAxLCAyMDYsIDIwOSwgCi0gICAgMjEzLCAyMTYsIDIyMCwgMjIzLCAyMjcsIDIzMSwgMjM2LCAyNDEsIDI0NiwgMjUwLCAyNTUsIDI2MCwgMjY1LCAyNjksIAotICAgIDI3NCwgMjc5LCAyODMsIDI4OCwgMjkzLCAyOTcsIDMwMiwgMzA3LCAzMTEsIDMxNSwgMzIwLCAzMjQsIDMyOSwgMzM0LCAKLSAgICAzMzksIDM0NCwgMzQ5LCAzNTMsIDM1NiwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjIsIDM2NiwgMzcxLCAKLSAgICAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg5LCAzOTEsIDM5NCwgNDAwLCA0MDgsIDQxMSwgNDE1LCA0MTgsIDQyMCwgCi0gICAgNDIzLCA0MjYsIDQyOSwgNDMyLCA0MzYsIDQzOSwgNDQyLCA0NDUsIDQ0NywgNDUwLCA0NTYsIDQ2NCwgNDcxLCA0NzgsIAotICAgIDQ4NSwgNDkwLCA0OTcsIDUwMywgNTEwLCA1MTcsIDUyNCwgNTMyLCA1MzcsIDU0NSwgNTUyLCA1NTgsIDU2NSwgNTcyLCAKLSAgICA1ODAsIDU4NywgNTk1LCA2MDMsIDYwOCwgNjE2LCA2MjMsIDYyOSwgNjM2LCA2NDMsIDY1MCwgNjUzLCA2NTksIDY2NiwgCi0gICAgNjcyLCA2NzksIDY4NiwgNjkzLCA2OTgsIDcwNCwgNzExLCA3MTcsIDcyNCwgNzMxLCA3MzgsIDc0NiwgNzUxLCA3NTksIAotICAgIDc2NiwgNzcyLCA3NzksIDc4NiwgNzk0LCA4MDEsIDgwOSwgODE3LCA4MjIsIDgzMCwgODM3LCA4NDMsIDg1MCwgODU3LCAKLSAgICA4NjQsIDg2NywgODczLCA4ODAsIDg4NiwgODkzLCA5MDAsIDkwNywgOTEyLCA5MjAsIDkyNywgOTM0LCA5NDEsIDk0OCwgCi0gICAgOTU1LCA5NjIsIDk2OSwgOTc2LCA5ODQsIDk5MiwgMTAwMCwgMTAwOCwgMTAxNiwgMTAyNCwgMTAzMiwgMTA0MCwgMTA0NywgCi0gICAgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNCwgMTEzMiwgCi0gICAgMTE0MCwgMTE0OCwgMTE1NiwgMTE2NCwgMTE3MiwgMTE4MCwgMTE4OCwgMTE5NiwgMTIwNCwgMTIxMSwgMTIxOCwgMTIyNiwgCi0gICAgMTIzNCwgMTI0MiwgMTI1MCwgMTI1OCwgMTI2NiwgMTI3NCwgMTI4MiwgMTI5MCwgMTI5NiwgMTMwMSwgMTMwNiwgMTMxNCwgCi0gICAgMTMyMiwgMTMzMCwgMTMzOCwgMTM0MywgMTM1MCwgMTM1NywgMTM2NSwgMTM3MywgMTM4MSwgMTM4OSwgMTM5OCwgMTQwNywgCi0gICAgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNSwgMTQ0MywgMTQ1MSwgMTQ1OSwgMTQ2NywgMTQ3OCwgMTQ4MywgMTQ4OCwgMTQ5NSwgCi0gICAgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NywgMTU1NCwgMTU2MiwgMTU3MCwgMTU3OCwgCi0gICAgMTU4NiwgMTU5MywgMTYwMCwgMTYwOCwgMTYxNiwgMTYyNCwgMTYzMiwgMTY0MCwgMTY0OCwgMTY1NiwgMTY2NCwgMTY3MiwgCi0gICAgMTY4MCwgMTY4NywgMTY5NCwgMTcwMSwgMTcwOCwgMTcxNSwgMTcyMiwgMTcyOSwgMTczNiwgMTc0NCwgMTc1MiwgMTc1OSwgCi0gICAgMTc2NiwgMTc3MywgMTc4MCwgMTc4OCwgMTc5NiwgMTgwNCwgMTgxMiwgMTgyMCwgMTgyNywgMTgzNCwgMTg0MiwgMTg1MCwgCi0gICAgMTg1OCwgMTg2NiwgMTg3MSwgMTg3NywgMTg4MywgMTg5MCwgMTg5NywgMTkwMiwgMTkwNywgMTkxMiwgMTkxOSwgMTkyNiwgCi0gICAgMTkzMywgMTk0MCwgMTk0OCwgMTk1NiwgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NiwgMTk5MywgMjAwMCwgMjAwNSwgCi0gICAgMjAxMCwgMjAxNSwgMjAyMiwgMjAyOSwgMjAzNiwgMjA0MywgMjA1MCwgMjA1NywgMjA2NSwgMjA3NSwgMjA4MywgMjA5MCwgCi0gICAgMjA5NywgMjEwMiwgMjEwNywgMjExNCwgMjEyMSwgMjEyNSwgMjEzMCwgMjEzNSwgMjE0MCwgMjE0OCwgMjE1NywgMjE2NCwgCi0gICAgMjE3MSwgMjE4MCwgMjE4NywgMjE5NCwgMjE5OSwgMjIwNiwgMjIxMywgMjIyMCwgMjIyNywgMjIzNCwgMjIzOSwgMjI0NiwgCi0gICAgMjI1MywgMjI2MSwgMjI2NiwgMjI3MSwgMjI3NiwgMjI4NiwgMjI5MCwgMjI5NiwgMjMwMiwgMjMwOCwgMjMxNCwgMjMyMiwgCi0gICAgMjMzNSwgMjM0MywgMjM0OCwgMjM1OCwgMjM2MywgMjM2OCwgMjM3OCwgMjM4MywgMjM5MCwgMjM5NywgMjQwNSwgMjQxMywgCi0gICAgMjQyMCwgMjQyNywgMjQzNCwgMjQ0MSwgMjQ1MSwgMjQ2MSwgMjQ3MCwgMjQ3OSwgMjQ4OSwgMjQ5OSwgMjUwOSwgMjUxOSwgCi0gICAgMjUyNSwgMjUzNSwgMjU0NSwgMjU1NSwgMjU2NSwgMjU3MywgMjU4MSwgMjU4OCwgMjU5NSwgMjYwMywgMjYxMSwgMjYxOSwgCi0gICAgMjYyNywgMjYzNCwgMjY0MSwgMjY1MSwgMjY2MSwgMjY2OSwgMjY3NywgMjY4NSwgMjY5MCwgMjcwMCwgMjcwNSwgMjcxMiwgCi0gICAgMjcxOSwgMjcyNCwgMjcyOSwgMjczNywgMjc0NSwgMjc1NSwgMjc2NSwgMjc3MiwgMjc3OSwgMjc4OCwgMjc5NywgMjgwNSwgCi0gICAgMjgxMywgMjgyMiwgMjgzMSwgMjgzOSwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4MywgMjg5MywgMjkwMywgMjkxMSwgCi0gICAgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NSwgMjk2NSwgMjk3NSwgMjk4MywgMjk5MSwgMzAwMCwgMzAwOSwgMzAxOCwgCi0gICAgMzAyNywgMzAzNiwgMzA0NSwgMzA1MCwgMzA1NSwgMzA2MywgMzA3MSwgMzA4MSwgMzA4OSwgMzA5NCwgMzA5OSwgMzEwNiwgCi0gICAgMzExMywgMzEyMCwgMzEyNywgMzEzNCwgMzE0MSwgMzE1MSwgMzE2MSwgMzE3MSwgMzE4MSwgMzE4OCwgMzE5NSwgMzIwNSwgCi0gICAgMzIxNSwgMzIyMywgMzIzMSwgMzIzOSwgMzI0NywgMzI1NSwgMzI2MiwgMzI2OSwgMzI3NiwgMzI4MiwgMzI4OSwgMzI5NiwgCi0gICAgMzMwMywgMzMxMiwgMzMyMiwgMzMzMiwgMzMzOSwgMzM0NiwgMzM1MiwgMzM1NywgMzM2NCwgMzM3MCwgMzM3NiwgMzM4MywgCi0gICAgMzM5MCwgMzQwMSwgMzQxMSwgMzQxOCwgMzQyNSwgMzQzMiwgMzQzOSwgMzQ0NSwgMzQ1MCwgMzQ1NywgMzQ2MywgMzQ2OCwgCi0gICAgMzQ3NiwgMzQ4NCwgMzQ5MSwgMzQ5NywgMzUwMiwgMzUwOSwgMzUxNCwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0OCwgMzU1NSwgCi0gICAgMzU2MSwgMzU2NywgMzU3MiwgMzU3OSwgMzU4NiwgMzU5MywgMzYwMCwgMzYwNywgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCi0gICAgMzY0MywgMzY0OCwgMzY1NSwgMzY2NiwgMzY3MywgMzY4MSwgMzY5MCwgMzY5NiwgMzcwMiwgMzcwOCwgMzcxNSwgMzcyMCwgCi0gICAgMzcyNiwgMzczNywgMzc0NiwgMzc1NSwgMzc2MywgMzc3MSwgMzc4MSwgMzc4NiwgMzc5MywgMzgwMCwgMzgwNSwgMzgxNywgCi0gICAgMzgyNiwgMzgzNCwgMzg0MSwgMzg1MCwgMzg1NSwgMzg2MCwgMzg2NywgMzg3NCwgMzg4MSwgMzg4OCwgMzg5NCwgMzkwMywgCi0gICAgMzkxMSwgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgMzk0NiwgMzk1MiwgMzk1OCwgMzk2NCwgMzk3MSwgMzk3OSwgMzk4NSwgCi0gICAgMzk5MywgNDAwMCwgNDAwNSwgNDAxMiwgNDAyMCwgNDAzMCwgNDAzNywgNDA0NCwgNDA1NCwgNDA2MSwgNDA2OCwgNDA3OCwgCi0gICAgNDA4NSwgNDA5MiwgNDA5OSwgNDEwNSwgNDExMSwgNDEyMSwgNDEzNCwgNDEzOSwgNDE0NiwgNDE1MSwgNDE1NSwgNDE2MSwgCi0gICAgNDE3MCwgNDE3NywgNDE4MiwgNDE4NywgNDE5MSwgNDE5NiwgNDIwMiwgNDIwNiwgNDIxMiwgNDIxOCwgNDIyNCwgNDIzMCwgCi0gICAgNDIzOCwgNDI0MywgNDI0OCwgNDI1MywgNDI1OCwgNDI2NCwgNDI2NiwgNDI3MSwgNDI3NSwgNDI4MSwgNDI4NywgNDI5MywgCi0gICAgNDI5OCwgNDMwNSwgNDMxMiwgNDMxOCwgNDMyNSwgNDMzMywgNDM0MSwgNDM0NiwgNDM1MSwgNDM1NSwgNDM2MCwgNDM2MiwgCi0gICAgNDM2NCwgNDM2NywgNDM2OSwgNDM3MiwgNDM3NywgNDM4MiwgNDM4OCwgNDM5MywgNDM5NywgNDQwMSwgNDQwNiwgNDQxNSwgCi0gICAgNDQyMSwgNDQyNiwgNDQzMiwgNDQzNywgNDQ0MywgNDQ1MSwgNDQ1OSwgNDQ2MywgNDQ2NywgNDQ3MiwgNDQ3OCwgNDQ4NCwgCi0gICAgNDQ5MCwgNDQ5NiwgNDUwMSwgNDUwOCwgNDUxNiwgNDUyNCwgNDUyOSwgNDUzNSwgNDU0MiwgNDU0OSwgNDU1NiwgNDU2MywgCi0gICAgNDU2NywgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgNDYwNCwgNDYwNywgNDYxMCwgCi0gICAgNDYxNCwgNDYxOCwgNDYyNCwgNDYyNywgNDYzMiwgNDYzOCwgNDY0NCwgNDY0NywgNDY1MiwgNDY1OCwgNDY2MiwgNDY2OCwgCi0gICAgNDY3NCwgNDY4MCwgNDY4NiwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNCwgNDcxMCwgNDcxNSwgNDcyMCwgNDcyNCwgNDcyOSwgCi0gICAgNDczNSwgNDc0MSwgNDc0NCwgNDc0OCwgNDc1MiwgNDc1NiwgNDc1OSwgNDc2MiwgNDc2NywgNDc3MSwgNDc3OCwgNDc4MiwgCi0gICAgNDc4OCwgNDc5MiwgNDc5OCwgNDgwMiwgNDgwNiwgNDgxMCwgNDgxNSwgNDgyMCwgNDgyNywgNDgzMywgNDg0MCwgNDg0NiwgCi0gICAgNDg1MiwgNDg1OCwgNDg2MSwgNDg2NSwgNDg2OSwgNDg3MywgNDg3NywgNDg4MiwgNDg4NywgNDg5MSwgNDg5NSwgNDkwMSwgCi0gICAgNDkwNSwgNDkwOSwgNDkxNCwgNDkyMCwgNDkyNSwgNDkzMSwgNDkzNSwgNDk0MiwgNDk0NywgNDk1MSwgNDk1NiwgNDk2MSwgCi0gICAgNDk2NywgNDk3MCwgNDk3NCwgNDk3OSwgNDk4NCwgNDk5MywgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgNTAxNywgNTAyMiwgCi0gICAgNTAyNiwgNTAzMCwgNTAzNSwgNTAzOSwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MSwgCi0gICAgNTA4NywgNTA5MywgNTA5OSwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyNywgNTEzMiwgNTEzOSwgNTE0NiwgNTE1MCwgCi0gICAgNTE1NiwgNTE2MywgMCwgMCwgNTE3MCwgNTE3MywgNTE4MiwgNTE5MSwgNTIwMiwgNTIwNiwgMCwgMCwgMCwgMCwgNTIxMSwgCi0gICAgNTIxNCwgNTIxOSwgNTIyNywgNTIzMiwgNTI0MCwgNTI0OCwgMCwgNTI1NiwgMCwgNTI2NCwgNTI3MiwgNTI4MCwgNTI5MSwgCi0gICAgNTI5NiwgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgCi0gICAgNTM1NiwgNTM2MSwgNTM2NiwgNTM3MSwgMCwgNTM3NiwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgCi0gICAgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1MSwgNTQ1OSwgNTQ3MCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgCi0gICAgNTQ5NSwgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgCi0gICAgNTU1NSwgNTU2MSwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwNCwgNTYxMiwgNTYyMCwgCi0gICAgNTYyOCwgNTYzNiwgNTY0MSwgNTY0NSwgNTY0OSwgNTY1NiwgNTY2NiwgNTY3NiwgNTY4MCwgNTY4NCwgNTY4OCwgNTY5NCwgCi0gICAgNTcwMSwgNTcwNSwgNTcxMCwgNTcxNCwgNTcxOSwgNTcyMywgNTcyOCwgNTczMiwgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgCi0gICAgNTc1NywgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMSwgCi0gICAgNTgxNSwgNTgyMSwgNTgyNSwgNTgzMCwgNTgzNiwgNTg0NCwgNTg0OSwgNTg1NCwgNTg2MSwgNTg2NiwgNTg3MSwgNTg3OCwgCi0gICAgNTg4NywgNTg5NiwgNTkwNywgNTkxNSwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNywgNTk0MiwgNTk0OCwgNTk1MywgNTk1OCwgCi0gICAgNTk2MywgNTk2OCwgNTk3MywgNTk3OCwgNTk4NiwgNTk5MiwgNTk5NywgNjAwMSwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgCi0gICAgNjAyNiwgNjAzMSwgNjAzNiwgNjA0MCwgNjA0NiwgNjA1MCwgNjA1NSwgNjA2MCwgNjA2NSwgNjA2OSwgNjA3NCwgNjA3OSwgCi0gICAgNjA4NCwgNjA4OSwgNjA5MywgNjA5OCwgNjEwMiwgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyOCwgNjEzMywgNjEzOSwgCi0gICAgNjE0MywgNjE0OCwgNjE1MiwgNjE1NiwgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NSwgCi0gICAgNjIwMSwgNjIwNSwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNCwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OCwgNjI1MywgCi0gICAgNjI1NywgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MywgNjI4OCwgNjI5NCwgNjI5OCwgNjMwMywgNjMwNywgNjMxNSwgCi0gICAgNjMyMCwgNjMyNSwgNjMzMCwgNjMzNywgNjM0MiwgNjM0OCwgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgCi0gICAgNjM4NiwgNjM5MiwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMywgNjQyOSwgNjQzNiwgNjQ0MywgNjQ1MiwgCi0gICAgNjQ2MSwgNjQ2OCwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgCi0gICAgNjUzMywgNjU0NCwgNjU1NSwgNjU2MCwgNjU2NSwgNjU3MiwgNjU3OSwgNjU4NywgNjU5NSwgNjYwMCwgNjYwNSwgNjYxMCwgCi0gICAgNjYxNSwgNjYxOSwgNjYyMywgNjYyNywgNjYzMywgNjYzOSwgNjY0MywgNjY1MCwgNjY1NSwgNjY2NSwgNjY3NSwgNjY4MSwgCi0gICAgNjY4NywgNjY5NSwgNjcwMywgNjcxMSwgNjcxOSwgNjcyNiwgNjczMywgNjc0MSwgNjc0OSwgNjc1NywgNjc2NSwgNjc3MywgCi0gICAgNjc4MSwgNjc4OSwgNjc5NywgNjgwNSwgNjgxMywgNjgyMCwgNjgyNywgNjgzMywgNjgzOSwgNjg0NywgNjg1NSwgNjg2MiwgCi0gICAgNjg2OSwgNjg3NywgNjg4NSwgNjg5MSwgNjg5NywgNjkwNSwgNjkxMywgNjkyMSwgNjkyOSwgNjkzNSwgNjk0MSwgNjk0OSwgCi0gICAgNjk1NywgNjk2NSwgNjk3MywgNjk4MCwgNjk4NywgNjk5NSwgNzAwMywgNzAxMSwgNzAxOSwgNzAyNCwgNzAyOSwgNzAzNiwgCi0gICAgNzA0MywgNzA1MywgNzA2MywgNzA2NywgNzA3NSwgNzA4MywgNzA5MCwgNzA5NywgNzEwNSwgNzExMywgNzEyMCwgNzEyNywgCi0gICAgNzEzNSwgNzE0MywgNzE1MCwgNzE1NywgNzE2NSwgNzE3MywgNzE3OCwgNzE4NSwgNzE5MiwgNzE5OSwgNzIwNiwgNzIxMiwgCi0gICAgNzIxOCwgNzIyNiwgNzIzNCwgNzIzOSwgNzI0NCwgNzI1MiwgNzI2MCwgNzI2OCwgNzI3NiwgNzI4NCwgNzI5MiwgNzI5OSwgCi0gICAgNzMwNiwgNzMxNCwgNzMyMiwgNzMzMCwgNzMzOCwgNzM0NSwgNzM1MiwgNzM1OCwgNzM2NCwgNzM3MywgNzM4MiwgNzM4OSwgCi0gICAgNzM5NiwgNzQwMywgNzQxMCwgNzQxNywgNzQyNCwgNzQzMSwgNzQzOCwgNzQ0NiwgNzQ1NCwgNzQ2MiwgNzQ3MCwgNzQ3OCwgCi0gICAgNzQ4NiwgNzQ5NiwgNzUwNiwgNzUxMywgNzUyMCwgNzUyNywgNzUzNCwgNzU0MSwgNzU0OCwgNzU1NSwgNzU2MiwgNzU2OSwgCi0gICAgNzU3NiwgNzU4MywgNzU5MCwgNzU5NywgNzYwNCwgNzYxMSwgNzYxOCwgNzYyNSwgNzYzMiwgNzYzOSwgNzY0NiwgNzY1MywgCi0gICAgNzY2MCwgNzY2NywgNzY3NCwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgCi0gICAgNzcyNCwgNzczMCwgNzczNiwgNzc0NCwgNzc1MiwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgNzc5MiwgNzgwMCwgNzgwOCwgCi0gICAgNzgxNiwgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0NCwgMCwgNzg1MiwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgCi0gICAgNzg3NywgNzg4MiwgNzg4NywgNzg5MiwgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgCi0gICAgNzkzNiwgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgCi0gICAgNzk5NiwgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgMCwgMCwgODA0MSwgODA0OCwgCi0gICAgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2NiwgMCwgODA3MCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgCi0gICAgODEwMCwgODEwNSwgODExMCwgODExNCwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgCi0gICAgODE1OSwgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgCi0gICAgODIxOSwgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgMCwgODI2NiwgODI3MSwgMCwgCi0gICAgMCwgODI3NCwgODI4MCwgODI4NiwgMCwgODI5MCwgODI5NSwgODMwMCwgODMwNSwgODMxMiwgODMxOSwgODMyNCwgODMyOSwgCi0gICAgODMzNCwgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM2MSwgODM2NiwgODM3MywgODM4MCwgODM4NSwgODM5MiwgODM5NywgCi0gICAgODQwMiwgODQwNywgODQxNCwgODQxOSwgODQyNCwgODQzMSwgODQ0MCwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NiwgCi0gICAgODQ3MSwgODQ3OCwgODQ4NSwgODQ5MiwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUzMiwgODUzNywgCi0gICAgODU0NiwgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MywgODU4MCwgODU4NywgODU5MywgODU5OSwgODYwNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxMywgODYxNywgODYyMSwgODYyNSwgODYyOSwgODYzMywgODYzNywgODY0MSwgODY0NSwgCi0gICAgODY0OSwgODY1MywgODY1OCwgODY2MiwgODY2NiwgODY3MSwgODY3NSwgODY4MCwgODY4NCwgODY4OCwgODY5MiwgODY5NywgCi0gICAgODcwMSwgODcwNiwgODcxMCwgODcxNCwgODcxOCwgODcyMiwgMCwgMCwgMCwgMCwgMCwgODcyNiwgODczMywgODc0MSwgCi0gICAgODc0OCwgODc1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc1OCwgODc2MSwgODc2NSwgODc3MCwgCi0gICAgODc3NCwgODc3OCwgODc4MiwgODc4OCwgODc5NCwgODc5NywgODgwNCwgODgxMywgODgxNiwgODgxOSwgODgyNCwgODgzMCwgCi0gICAgODgzNCwgODg0MiwgODg0OCwgODg1NCwgODg2MiwgODg2NiwgODg3MSwgODg4MiwgODg4NywgODg5MSwgODg5NSwgODg5OSwgCi0gICAgODkwMiwgMCwgODkwNSwgODkxMiwgODkxNiwgODkyMiwgODkyNiwgODkzMywgODk0MCwgODk0OCwgODk1NSwgODk2MiwgCi0gICAgODk2NiwgODk3MCwgODk3NiwgODk4MCwgODk4NCwgODk4OCwgODk5MiwgODk5NiwgOTAwMCwgOTAwNCwgOTAwOCwgOTAxMiwgCi0gICAgOTAxNiwgOTAyMCwgOTAyNCwgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NCwgOTA1MiwgOTA2MCwgOTA3MCwgOTA3OSwgCi0gICAgOTA4OCwgOTA5MSwgOTA5NSwgOTA5OSwgOTEwMywgOTEwNywgOTExMSwgOTExNSwgOTExOSwgOTEyMywgOTEyOCwgOTEzMiwgCi0gICAgOTEzNSwgOTEzOCwgOTE0MSwgOTE0NCwgOTE0NywgOTE1MCwgOTE1MywgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MywgCi0gICAgOTE3OCwgOTE4NCwgOTE4NywgOTE5NCwgOTIwMywgOTIwOCwgOTIxMywgOTIyMCwgOTIyNiwgOTIzMSwgOTIzNSwgOTIzOSwgCi0gICAgOTI0MywgOTI0NywgOTI1MSwgOTI1NSwgOTI2MCwgOTI2NCwgOTI2OSwgOTI3MywgOTI3OCwgOTI4MywgOTI5MCwgOTI5NiwgCi0gICAgOTMwMiwgOTMwOCwgOTMxMywgOTMyMiwgOTMzMSwgOTMzNiwgOTM0MywgOTM1MCwgOTM1NywgOTM2NCwgOTM2OCwgOTM3MiwgCi0gICAgOTM3NiwgOTM4MywgOTM5MywgOTM5NywgOTQwMSwgOTQwNSwgOTQxMiwgOTQyMCwgOTQyNCwgOTQyOCwgOTQzNSwgOTQzOSwgCi0gICAgOTQ0MywgOTQ0NywgOTQ1NCwgOTQ2MSwgOTQ3MywgOTQ3NywgOTQ4MSwgOTQ4NSwgOTQ5NSwgOTUwNCwgOTUwOCwgOTUxNiwgCi0gICAgOTUyMywgOTUzMCwgOTUzOSwgOTU1MCwgOTU1OCwgOTU2MiwgOTU3MSwgOTU4MiwgOTU5MCwgOTYwMywgOTYxMSwgOTYxOSwgCi0gICAgOTYyNywgOTYzNSwgOTY0MSwgOTY1MCwgOTY1NywgOTY2MSwgOTY2OSwgOTY3MywgOTY4MCwgOTY4OCwgOTY5MiwgOTY5OCwgCi0gICAgOTcwNSwgOTcxMiwgOTcxNiwgOTcyNCwgOTcyOCwgOTczNSwgOTczOSwgOTc0NywgOTc1MSwgOTc1OSwgOTc2NywgOTc3NCwgCi0gICAgOTc4MiwgOTc5MCwgOTc5NywgOTgwMywgOTgwNywgOTgxNCwgOTgyMiwgOTgyOCwgOTgzNSwgOTg0MiwgOTg0OCwgOTg1OCwgCi0gICAgOTg2NiwgOTg3MywgOTg3OSwgOTg4MywgOTg4NiwgOTg5MCwgOTg5NiwgOTkwNCwgOTkwOCwgOTkxNCwgOTkyMCwgOTkyNywgCi0gICAgOTkzNCwgOTkzNywgOTk0NCwgOTk0OSwgOTk1OCwgOTk2MywgOTk2NywgOTk4MCwgOTk5MywgOTk5OSwgMTAwMDYsIDEwMDExLCAKLSAgICAxMDAxNywgMTAwMjIsIDEwMDI4LCAxMDAzOCwgMTAwNDUsIDEwMDU0LCAxMDA2NCwgMTAwNzAsIDEwMDc1LCAxMDA4MCwgCi0gICAgMTAwODQsIDEwMDg4LCAxMDA5MywgMTAwOTgsIDEwMTA0LCAxMDExMiwgMTAxMjAsIDEwMTMxLCAxMDEzNiwgMTAxNDUsIAotICAgIDEwMTU0LCAxMDE2MSwgMTAxNjcsIDEwMTczLCAxMDE3OSwgMTAxODUsIDEwMTkxLCAxMDE5NywgMTAyMDQsIDEwMjEwLCAKLSAgICAxMDIxNywgMTAyMjQsIDEwMjMxLCAxMDIzOCwgMTAyNDQsIDEwMjUyLCAxMDI2MSwgMTAyNjgsIDEwMjc2LCAxMDI4NCwgCi0gICAgMTAyOTAsIDEwMjk2LCAxMDMwMiwgMTAzMTAsIDEwMzE4LCAxMDMyOCwgMTAzMzgsIDEwMzQyLCAxMDM0OCwgMTAzNTQsIDAsIAotICAgIDEwMzYwLCAxMDM2NSwgMTAzNzAsIDEwMzc3LCAxMDM4MiwgMTAzODcsIDEwMzk0LCAxMDM5OSwgMTA0MDgsIDEwNDEzLCAKLSAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0NDAsIDEwNDQ1LCAxMDQ1MiwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCi0gICAgMTA0NzIsIDEwNDc3LCAxMDQ4MywgMTA0ODcsIDEwNDkyLCAxMDQ5OSwgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAotICAgIDEwNTI0LCAxMDUzMSwgMTA1MzgsIDEwNTQ1LCAxMDU1MCwgMTA1NTUsIDEwNTYxLCAxMDU2NiwgMTA1NzEsIDEwNTc3LCAKLSAgICAxMDU4MiwgMTA1ODcsIDEwNTk1LCAxMDYwMywgMTA2MDgsIDEwNjEzLCAxMDYxOSwgMTA2MjQsIDEwNjI5LCAxMDYzMywgCi0gICAgMTA2MzksIDEwNjQzLCAxMDY0NywgMTA2NTMsIDEwNjU5LCAxMDY2NCwgMTA2NjksIDEwNjc2LCAxMDY4MywgMTA2ODcsIDAsIAotICAgIDAsIDEwNjkxLCAxMDY5OCwgMTA3MDUsIDEwNzEyLCAxMDcyMiwgMTA3MzQsIDEwNzQ1LCAxMDc2MSwgMTA3NzMsIDEwNzg0LCAKLSAgICAxMDc5MiwgMTA3OTksIDEwODA5LCAxMDgyNCwgMTA4MzUsIDEwODQxLCAxMDg1MCwgMTA4NTgsIDEwODY5LCAxMDg3OSwgCi0gICAgMTA4ODcsIDEwODk4LCAxMDkwNSwgMTA5MTMsIDEwOTI0LCAxMDkzMCwgMTA5MzYsIDEwOTQ0LCAxMDk1MiwgMTA5NjAsIAotICAgIDEwOTY2LCAxMDk3NiwgMTA5ODQsIDEwOTk0LCAxMTAwNCwgMTEwMTcsIDExMDMxLCAxMTA0NSwgMTEwNTUsIDExMDY2LCAKLSAgICAxMTA3NywgMTEwOTAsIDExMTAzLCAxMTExNywgMTExMjksIDExMTQxLCAxMTE1NCwgMTExNjcsIDExMTc5LCAxMTE5MiwgCi0gICAgMTEyMDEsIDExMjA5LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgMTEyNDksIAotICAgIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIDExMjk5LCAKLSAgICAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAxMTM0OSwgCi0gICAgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzczLCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgMTEzOTgsIAotICAgIDExNDAyLCAxMTQwNiwgMTE0MTAsIDExNDE0LCAxMTQxOCwgMTE0MjIsIDExNDI2LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAKLSAgICAxMTQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NDcsIDExNDUyLCAxMTQ1NiwgCi0gICAgMTE0NjAsIDExNDY0LCAxMTQ2OCwgMTE0NzIsIDExNDc2LCAxMTQ4MSwgMTE0ODUsIDExNDkwLCAxMTQ5NCwgMTE0OTksIAotICAgIDExNTAzLCAxMTUwNywgMTE1MTEsIDExNTE2LCAxMTUyMCwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1MzksIDExNTQ0LCAKLSAgICAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg4LCAxMTU5MywgCi0gICAgMTE2MDAsIDExNjA0LCAxMTYwOSwgMTE2MTQsIDExNjE4LCAxMTYyMywgMTE2MjcsIDExNjM0LCAxMTY0MSwgMTE2NDgsIAotICAgIDExNjU1LCAxMTY2MywgMTE2NzEsIDExNjgwLCAxMTY4OCwgMTE2OTUsIDExNzAyLCAxMTcxMCwgMTE3MTYsIDExNzIyLCAKLSAgICAxMTcyOCwgMTE3MzQsIDExNzQxLCAxMTc0NiwgMTE3NTAsIDExNzU1LCAwLCAwLCAwLCAwLCAwLCAxMTc1OSwgMTE3NjQsIAotICAgIDExNzY5LCAxMTc3NCwgMTE3NzksIDExNzg0LCAxMTc4OSwgMTE3OTQsIDExNzk5LCAxMTgwNCwgMTE4MDksIDExODE0LCAKLSAgICAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNCwgMTE4MzksIDExODQ0LCAxMTg0OSwgMTE4NTQsIDExODU5LCAxMTg2NCwgCi0gICAgMTE4NjksIDExODc0LCAxMTg3OSwgMTE4ODQsIDExODg5LCAxMTg5NywgMTE5MDQsIDExOTEwLCAxMTkxNSwgMTE5MjMsIAotICAgIDExOTMwLCAxMTkzNiwgMTE5NDMsIDExOTQ5LCAxMTk1NCwgMTE5NjEsIDExOTY4LCAxMTk3NCwgMTE5NzksIDExOTg0LCAKLSAgICAxMTk5MCwgMTE5OTUsIDEyMDAwLCAxMjAwNiwgMCwgMCwgMTIwMTEsIDEyMDE3LCAxMjAyMywgMTIwMjksIDEyMDM1LCAKLSAgICAxMjA0MSwgMTIwNDcsIDEyMDUyLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3OCwgMTIwODQsIDEyMDkwLCAxMjA5OCwgMCwgCi0gICAgMTIxMDQsIDEyMTA5LCAxMjExNCwgMTIxMTksIDEyMTI0LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0NCwgMTIxNDksIAotICAgIDEyMTU0LCAxMjE1OSwgMTIxNjQsIDEyMTY5LCAxMjE3NCwgMTIxNzksIDEyMTg0LCAxMjE4OSwgMTIxOTQsIDEyMTk5LCAKLSAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjQsIDEyMjI5LCAxMjIzNCwgMTIyMzksIDAsIDAsIDEyMjQ0LCAwLCAKKyAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTczLCAxNzgsIDE4MiwgMTg3LCAxOTIsIDE5NywgMjAyLCAyMDcsIDIxMCwgCisgICAgMjE0LCAyMTcsIDIyMSwgMjI0LCAyMjgsIDIzMiwgMjM3LCAyNDIsIDI0NywgMjUxLCAyNTYsIDI2MSwgMjY2LCAyNzAsIAorICAgIDI3NSwgMjgwLCAyODQsIDI4OSwgMjk0LCAyOTgsIDMwMywgMzA4LCAzMTIsIDMxNywgMzIyLCAzMjYsIDMzMSwgMzM2LCAKKyAgICAzNDEsIDM0NiwgMzUxLCAzNTUsIDM1OCwgMzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjQsIDM2OCwgMzczLCAKKyAgICAzNzYsIDM3OSwgMzgyLCAzODUsIDM4OCwgMzkxLCAzOTMsIDM5NiwgNDAyLCA0MTAsIDQxMywgNDE3LCA0MjAsIDQyMiwgCisgICAgNDI1LCA0MjgsIDQzMSwgNDM0LCA0MzgsIDQ0MSwgNDQ0LCA0NDcsIDQ0OSwgNDUyLCA0NTgsIDQ2NiwgNDczLCA0ODAsIAorICAgIDQ4NywgNDkyLCA0OTksIDUwNSwgNTEyLCA1MTksIDUyNiwgNTM0LCA1MzksIDU0NywgNTU0LCA1NjAsIDU2NywgNTc0LCAKKyAgICA1ODIsIDU4OSwgNTk3LCA2MDUsIDYxMCwgNjE4LCA2MjUsIDYzMSwgNjM4LCA2NDUsIDY1MiwgNjU1LCA2NjEsIDY2OCwgCisgICAgNjc0LCA2ODEsIDY4OCwgNjk1LCA3MDAsIDcwNywgNzE0LCA3MjAsIDcyNywgNzM0LCA3NDEsIDc0OSwgNzU0LCA3NjIsIAorICAgIDc2OSwgNzc1LCA3ODIsIDc4OSwgNzk3LCA4MDQsIDgxMiwgODIwLCA4MjUsIDgzMywgODQwLCA4NDYsIDg1MywgODYwLCAKKyAgICA4NjcsIDg3MCwgODc2LCA4ODMsIDg4OSwgODk2LCA5MDMsIDkxMCwgOTE1LCA5MjMsIDkzMCwgOTM3LCA5NDQsIDk1MSwgCisgICAgOTU4LCA5NjUsIDk3MiwgOTc5LCA5ODcsIDk5NSwgMTAwMywgMTAxMSwgMTAxOSwgMTAyNywgMTAzNSwgMTA0MywgMTA1MCwgCisgICAgMTA1NywgMTA2NCwgMTA3MSwgMTA3OCwgMTA4NSwgMTA5MiwgMTA5OSwgMTEwNiwgMTExMywgMTEyMCwgMTEyNywgMTEzNSwgCisgICAgMTE0MywgMTE1MSwgMTE1OSwgMTE2NywgMTE3NSwgMTE4MywgMTE5MSwgMTE5OSwgMTIwNywgMTIxNCwgMTIyMSwgMTIyOSwgCisgICAgMTIzNywgMTI0NSwgMTI1MywgMTI2MSwgMTI2OSwgMTI3NywgMTI4NSwgMTI5MywgMTI5OSwgMTMwNCwgMTMwOSwgMTMxNywgCisgICAgMTMyNSwgMTMzMywgMTM0MSwgMTM0NiwgMTM1MywgMTM2MCwgMTM2OCwgMTM3NiwgMTM4NCwgMTM5MiwgMTQwMSwgMTQxMCwgCisgICAgMTQxNywgMTQyNCwgMTQzMSwgMTQzOCwgMTQ0NiwgMTQ1NCwgMTQ2MiwgMTQ3MCwgMTQ4MSwgMTQ4NiwgMTQ5MSwgMTQ5OCwgCisgICAgMTUwNSwgMTUxMiwgMTUxOSwgMTUyNiwgMTUzMywgMTUzOCwgMTU0MywgMTU1MCwgMTU1NywgMTU2NSwgMTU3MywgMTU4MSwgCisgICAgMTU4OSwgMTU5NiwgMTYwMywgMTYxMSwgMTYxOSwgMTYyNywgMTYzNSwgMTY0MywgMTY1MSwgMTY1OSwgMTY2NywgMTY3NSwgCisgICAgMTY4MywgMTY5MCwgMTY5NywgMTcwNCwgMTcxMSwgMTcxOCwgMTcyNSwgMTczMiwgMTczOSwgMTc0NywgMTc1NSwgMTc2MiwgCisgICAgMTc2OSwgMTc3NiwgMTc4MywgMTc5MSwgMTc5OSwgMTgwNywgMTgxNSwgMTgyMywgMTgzMCwgMTgzNywgMTg0NSwgMTg1MywgCisgICAgMTg2MSwgMTg2OSwgMTg3NSwgMTg4MSwgMTg4NywgMTg5NCwgMTkwMSwgMTkwNiwgMTkxMSwgMTkxNiwgMTkyMywgMTkzMCwgCisgICAgMTkzNywgMTk0NCwgMTk1MiwgMTk2MCwgMTk2NywgMTk3MywgMTk3OCwgMTk4MywgMTk5MCwgMTk5NywgMjAwNCwgMjAwOSwgCisgICAgMjAxNCwgMjAxOSwgMjAyNiwgMjAzMywgMjA0MCwgMjA0NywgMjA1NCwgMjA2MSwgMjA2OSwgMjA3OSwgMjA4NywgMjA5NCwgCisgICAgMjEwMSwgMjEwNiwgMjExMSwgMjExOCwgMjEyNSwgMjEyOSwgMjEzNCwgMjEzOSwgMjE0NCwgMjE1MiwgMjE2MSwgMjE2OCwgCisgICAgMjE3NSwgMjE4NCwgMjE5MSwgMjE5OCwgMjIwMywgMjIxMCwgMjIxNywgMjIyNCwgMjIzMSwgMjIzOCwgMjI0MywgMjI1MCwgCisgICAgMjI1NywgMjI2NSwgMjI3MCwgMjI3NSwgMjI4MCwgMjI5MCwgMjI5NCwgMjMwMCwgMjMwNiwgMjMxMiwgMjMxOCwgMjMyNiwgCisgICAgMjMzOSwgMjM0NywgMjM1MiwgMjM2MiwgMjM2NywgMjM3MiwgMjM4MiwgMjM4NywgMjM5NCwgMjQwMSwgMjQwOSwgMjQxNywgCisgICAgMjQyNCwgMjQzMSwgMjQzOCwgMjQ0NSwgMjQ1NSwgMjQ2NSwgMjQ3NCwgMjQ4MywgMjQ5MywgMjUwMywgMjUxMywgMjUyMywgCisgICAgMjUyOSwgMjUzOSwgMjU0OSwgMjU1OSwgMjU2OSwgMjU3NywgMjU4NSwgMjU5MiwgMjU5OSwgMjYwNywgMjYxNSwgMjYyMywgCisgICAgMjYzMSwgMjYzOCwgMjY0NSwgMjY1NSwgMjY2NSwgMjY3MywgMjY4MSwgMjY4OSwgMjY5NCwgMjcwNCwgMjcwOSwgMjcxNiwgCisgICAgMjcyMywgMjcyOCwgMjczMywgMjc0MSwgMjc0OSwgMjc1OSwgMjc2OSwgMjc3NiwgMjc4MywgMjc5MiwgMjgwMSwgMjgwOSwgCisgICAgMjgxNywgMjgyNiwgMjgzNSwgMjg0MywgMjg1MSwgMjg2MCwgMjg2OSwgMjg3OCwgMjg4NywgMjg5NywgMjkwNywgMjkxNSwgCisgICAgMjkyMywgMjkzMiwgMjk0MSwgMjk1MCwgMjk1OSwgMjk2OSwgMjk3OSwgMjk4NywgMjk5NSwgMzAwNCwgMzAxMywgMzAyMiwgCisgICAgMzAzMSwgMzA0MCwgMzA0OSwgMzA1NCwgMzA1OSwgMzA2NywgMzA3NSwgMzA4NSwgMzA5MywgMzA5OCwgMzEwMywgMzExMCwgCisgICAgMzExNywgMzEyNCwgMzEzMSwgMzEzOCwgMzE0NSwgMzE1NSwgMzE2NSwgMzE3NSwgMzE4NSwgMzE5MiwgMzE5OSwgMzIwOSwgCisgICAgMzIxOSwgMzIyNywgMzIzNSwgMzI0MywgMzI1MSwgMzI1OSwgMzI2NiwgMzI3MywgMzI4MCwgMzI4NiwgMzI5MywgMzMwMCwgCisgICAgMzMwNywgMzMxNiwgMzMyNiwgMzMzNiwgMzM0MywgMzM1MCwgMzM1NiwgMzM2MSwgMzM2OCwgMzM3NCwgMzM4MCwgMzM4NywgCisgICAgMzM5NCwgMzQwNSwgMzQxNSwgMzQyMiwgMzQyOSwgMzQzNiwgMzQ0MywgMzQ0OSwgMzQ1NCwgMzQ2MSwgMzQ2NywgMzQ3MiwgCisgICAgMzQ4MCwgMzQ4OCwgMzQ5NSwgMzUwMSwgMzUwNiwgMzUxMywgMzUxOCwgMzUyNSwgMzUzNCwgMzU0MywgMzU1MiwgMzU1OSwgCisgICAgMzU2NSwgMzU3MSwgMzU3NiwgMzU4MywgMzU5MCwgMzU5NywgMzYwNCwgMzYxMSwgMzYxNiwgMzYyMSwgMzYzMCwgMzYzOCwgCisgICAgMzY0NywgMzY1MiwgMzY1OSwgMzY3MCwgMzY3NywgMzY4NSwgMzY5NCwgMzcwMCwgMzcwNiwgMzcxMiwgMzcxOSwgMzcyNCwgCisgICAgMzczMCwgMzc0MSwgMzc1MCwgMzc1OSwgMzc2NywgMzc3NSwgMzc4NSwgMzc5MCwgMzc5NywgMzgwNCwgMzgwOSwgMzgyMSwgCisgICAgMzgzMCwgMzgzOCwgMzg0NSwgMzg1NCwgMzg1OSwgMzg2NCwgMzg3MSwgMzg3OCwgMzg4NSwgMzg5MiwgMzg5OCwgMzkwNywgCisgICAgMzkxNSwgMzkyMCwgMzkyOCwgMzkzNCwgMzk0MiwgMzk1MCwgMzk1NiwgMzk2MiwgMzk2OCwgMzk3NSwgMzk4MywgMzk4OSwgCisgICAgMzk5NywgNDAwNCwgNDAwOSwgNDAxNiwgNDAyNCwgNDAzNCwgNDA0MSwgNDA0OCwgNDA1OCwgNDA2NSwgNDA3MiwgNDA4MiwgCisgICAgNDA4OSwgNDA5NiwgNDEwMywgNDEwOSwgNDExNSwgNDEyNSwgNDEzOCwgNDE0MywgNDE1MCwgNDE1NSwgNDE1OSwgNDE2NSwgCisgICAgNDE3NCwgNDE4MSwgNDE4NiwgNDE5MSwgNDE5NSwgNDIwMCwgNDIwNiwgNDIxMCwgNDIxNiwgNDIyMiwgNDIyOCwgNDIzNCwgCisgICAgNDI0MiwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2OCwgNDI3MCwgNDI3NSwgNDI3OSwgNDI4NSwgNDI5MSwgNDI5NywgCisgICAgNDMwMiwgNDMwOSwgNDMxNiwgNDMyMiwgNDMyOSwgNDMzNywgNDM0NSwgNDM1MCwgNDM1NSwgNDM1OSwgNDM2NCwgNDM2NiwgCisgICAgNDM2OCwgNDM3MSwgNDM3MywgNDM3NiwgNDM4MSwgNDM4NiwgNDM5MiwgNDM5NywgNDQwMSwgNDQwNiwgNDQxMSwgNDQyMCwgCisgICAgNDQyNiwgNDQzMSwgNDQzNywgNDQ0MiwgNDQ0OCwgNDQ1NiwgNDQ2NCwgNDQ2OCwgNDQ3MiwgNDQ3NywgNDQ4MywgNDQ4OSwgCisgICAgNDQ5NSwgNDUwMSwgNDUwNiwgNDUxMywgNDUyMSwgNDUyOSwgNDUzNCwgNDU0MCwgNDU0NywgNDU1NCwgNDU2MSwgNDU2OCwgCisgICAgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NywgNDYwMCwgNDYwMywgNDYwNiwgNDYwOSwgNDYxMiwgNDYxNSwgCisgICAgNDYxOSwgNDYyMywgNDYyOSwgNDYzMiwgNDYzNywgNDY0MywgNDY0OSwgNDY1MiwgNDY1NywgNDY2MywgNDY2NywgNDY3MywgCisgICAgNDY3OSwgNDY4NSwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNiwgNDcwOSwgNDcxNSwgNDcyMCwgNDcyNSwgNDcyOSwgNDczNCwgCisgICAgNDc0MCwgNDc0NiwgNDc0OSwgNDc1MywgNDc1NywgNDc2MSwgNDc2NCwgNDc2NywgNDc3MiwgNDc3NiwgNDc4MywgNDc4NywgCisgICAgNDc5MywgNDc5NywgNDgwMywgNDgwNywgNDgxMSwgNDgxNSwgNDgyMCwgNDgyNSwgNDgzMiwgNDgzOCwgNDg0NSwgNDg1MSwgCisgICAgNDg1NywgNDg2MywgNDg2NiwgNDg3MCwgNDg3NCwgNDg3OCwgNDg4MiwgNDg4NywgNDg5MiwgNDg5NiwgNDkwMCwgNDkwNiwgCisgICAgNDkxMCwgNDkxNCwgNDkxOSwgNDkyNSwgNDkzMCwgNDkzNiwgNDk0MCwgNDk0NywgNDk1MiwgNDk1NiwgNDk2MSwgNDk2NiwgCisgICAgNDk3MiwgNDk3NSwgNDk3OSwgNDk4NCwgNDk4OSwgNDk5OCwgNTAwNCwgNTAwOSwgNTAxMywgNTAxOCwgNTAyMiwgNTAyNywgCisgICAgNTAzMSwgNTAzNSwgNTA0MCwgNTA0NCwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MCwgNTA4NiwgCisgICAgNTA5MiwgNTA5OCwgNTEwNCwgNTEwOSwgNTExNSwgNTEyMSwgNTEyNywgNTEzMiwgNTEzNywgNTE0NCwgNTE1MSwgNTE1NSwgCisgICAgNTE2MSwgNTE2OCwgMCwgMCwgNTE3NSwgNTE3OCwgNTE4NywgNTE5NiwgNTIwNywgNTIxMSwgMCwgMCwgMCwgMCwgNTIxNiwgCisgICAgNTIxOSwgNTIyNCwgNTIzMiwgNTIzNywgNTI0NSwgNTI1MywgMCwgNTI2MSwgMCwgNTI2OSwgNTI3NywgNTI4NSwgNTI5NiwgCisgICAgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgNTM1NiwgCisgICAgNTM2MSwgNTM2NiwgNTM3MSwgNTM3NiwgMCwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgNTQxMSwgCisgICAgNTQxNiwgNTQyNCwgNTQzMiwgNTQ0MCwgNTQ0OCwgNTQ1NiwgNTQ2NCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgNTQ5NSwgCisgICAgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgNTU1NSwgCisgICAgNTU2MCwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwMSwgNTYwOSwgNTYxNywgNTYyNSwgCisgICAgNTYzMywgNTY0MSwgNTY0NiwgNTY1MCwgNTY1NCwgNTY2MSwgNTY3MSwgNTY4MSwgNTY4NSwgNTY4OSwgNTY5MywgNTY5OSwgCisgICAgNTcwNiwgNTcxMCwgNTcxNSwgNTcxOSwgNTcyNCwgNTcyOCwgNTczMywgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgNTc1NywgCisgICAgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMiwgNTgxNiwgCisgICAgNTgyMCwgNTgyNiwgNTgzMCwgNTgzNSwgNTg0MSwgNTg0OSwgNTg1NCwgNTg1OSwgNTg2NiwgNTg3MSwgNTg3NiwgNTg4MywgCisgICAgNTg5MiwgNTkwMSwgNTkxMiwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNSwgNTk0MiwgNTk0NywgNTk1MywgNTk1OCwgNTk2MywgCisgICAgNTk2OCwgNTk3MywgNTk3OCwgNTk4MywgNTk5MSwgNTk5NywgNjAwMiwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgNjAyNiwgCisgICAgNjAzMSwgNjAzNiwgNjA0MSwgNjA0NSwgNjA1MSwgNjA1NSwgNjA2MCwgNjA2NSwgNjA3MCwgNjA3NCwgNjA3OSwgNjA4NCwgCisgICAgNjA4OSwgNjA5NCwgNjA5OCwgNjEwMywgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyNywgNjEzMywgNjEzOCwgNjE0NCwgCisgICAgNjE0OCwgNjE1MywgNjE1NywgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NiwgNjIwMCwgCisgICAgNjIwNiwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNSwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OSwgNjI1MywgNjI1OCwgCisgICAgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MiwgNjI4OCwgNjI5MywgNjI5OSwgNjMwMywgNjMwOCwgNjMxMiwgNjMyMCwgCisgICAgNjMyNSwgNjMzMCwgNjMzNSwgNjM0MiwgNjM0NywgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgNjM4MywgCisgICAgNjM5MSwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMiwgNjQyOCwgNjQzNCwgNjQ0MSwgNjQ0OCwgNjQ1NywgCisgICAgNjQ2NiwgNjQ3MywgNjQ4MCwgNjQ4OSwgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgNjUzMywgCisgICAgNjUzOCwgNjU0OSwgNjU2MCwgNjU2NSwgNjU3MCwgNjU3NywgNjU4NCwgNjU5MiwgNjYwMCwgNjYwNSwgNjYxMCwgNjYxNSwgCisgICAgNjYyMCwgNjYyNCwgNjYyOCwgNjYzMiwgNjYzOCwgNjY0NCwgNjY0OCwgNjY1NSwgNjY2MCwgNjY3MCwgNjY4MCwgNjY4NiwgCisgICAgNjY5MiwgNjcwMCwgNjcwOCwgNjcxNiwgNjcyNCwgNjczMSwgNjczOCwgNjc0NiwgNjc1NCwgNjc2MiwgNjc3MCwgNjc3OCwgCisgICAgNjc4NiwgNjc5NCwgNjgwMiwgNjgxMCwgNjgxOCwgNjgyNSwgNjgzMiwgNjgzOCwgNjg0NCwgNjg1MiwgNjg2MCwgNjg2NywgCisgICAgNjg3NCwgNjg4MiwgNjg5MCwgNjg5NiwgNjkwMiwgNjkxMCwgNjkxOCwgNjkyNiwgNjkzNCwgNjk0MCwgNjk0NiwgNjk1NCwgCisgICAgNjk2MiwgNjk3MCwgNjk3OCwgNjk4NSwgNjk5MiwgNzAwMCwgNzAwOCwgNzAxNiwgNzAyNCwgNzAyOSwgNzAzNCwgNzA0MSwgCisgICAgNzA0OCwgNzA1OCwgNzA2OCwgNzA3MiwgNzA4MCwgNzA4OCwgNzA5NSwgNzEwMiwgNzExMCwgNzExOCwgNzEyNSwgNzEzMiwgCisgICAgNzE0MCwgNzE0OCwgNzE1NSwgNzE2MiwgNzE3MCwgNzE3OCwgNzE4MywgNzE5MCwgNzE5NywgNzIwNCwgNzIxMSwgNzIxNywgCisgICAgNzIyMywgNzIzMSwgNzIzOSwgNzI0NCwgNzI0OSwgNzI1NywgNzI2NSwgNzI3MywgNzI4MSwgNzI4OSwgNzI5NywgNzMwNCwgCisgICAgNzMxMSwgNzMxOSwgNzMyNywgNzMzNSwgNzM0MywgNzM1MCwgNzM1NywgNzM2MywgNzM2OSwgNzM3OCwgNzM4NywgNzM5NCwgCisgICAgNzQwMSwgNzQwOCwgNzQxNSwgNzQyMiwgNzQyOSwgNzQzNiwgNzQ0MywgNzQ1MSwgNzQ1OSwgNzQ2NywgNzQ3NSwgNzQ4MywgCisgICAgNzQ5MSwgNzUwMSwgNzUxMSwgNzUxOCwgNzUyNSwgNzUzMiwgNzUzOSwgNzU0NiwgNzU1MywgNzU2MCwgNzU2NywgNzU3NCwgCisgICAgNzU4MSwgNzU4OCwgNzU5NSwgNzYwMiwgNzYwOSwgNzYxNiwgNzYyMywgNzYzMCwgNzYzNywgNzY0NCwgNzY1MSwgNzY1OCwgCisgICAgNzY2NSwgNzY3MiwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgNzcyNCwgCisgICAgNzcyOSwgNzczNSwgNzc0MSwgNzc0OSwgNzc1NywgNzc2NSwgNzc3MywgNzc4MSwgNzc4OSwgNzc5NywgNzgwNSwgNzgxMywgCisgICAgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0MSwgNzg0OSwgMCwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgNzg3NywgCisgICAgNzg4MiwgNzg4NywgNzg5MiwgNzg5NywgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgNzkzNiwgCisgICAgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgNzk5NiwgCisgICAgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgODA0MSwgMCwgMCwgODA0NiwgODA1MywgCisgICAgODA1NiwgODA2MCwgODA2NCwgODA2NywgODA3MSwgMCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgODEwMCwgCisgICAgODEwNSwgODExMCwgODExNSwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgODE1OSwgCisgICAgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgODIxOSwgCisgICAgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgODI2NCwgMCwgODI3MSwgODI3NiwgMCwgCisgICAgMCwgODI3OSwgODI4NSwgODI5MSwgMCwgODI5NSwgODMwMCwgODMwNSwgODMxMCwgODMxNywgODMyNCwgODMyOSwgODMzNCwgCisgICAgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM1OSwgODM2NiwgODM3MSwgODM3OCwgODM4NSwgODM5MCwgODM5NywgODQwMiwgCisgICAgODQwNywgODQxMiwgODQxOSwgODQyNCwgODQyOSwgODQzNiwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NSwgODQ3MSwgCisgICAgODQ3NiwgODQ4MywgODQ5MCwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUyNywgODUzNywgODU0MiwgCisgICAgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MSwgODU3OCwgODU4NSwgODU5MiwgODU5OCwgODYwNCwgODYxMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxOCwgODYyMiwgODYyNiwgODYzMCwgODYzNCwgODYzOCwgODY0MiwgODY0NiwgODY1MCwgCisgICAgODY1NCwgODY1OCwgODY2MywgODY2NywgODY3MSwgODY3NiwgODY4MCwgODY4NSwgODY4OSwgODY5MywgODY5NywgODcwMiwgCisgICAgODcwNiwgODcxMSwgODcxNSwgODcxOSwgODcyMywgODcyNywgMCwgMCwgMCwgMCwgMCwgODczMSwgODczOCwgODc0NiwgCisgICAgODc1MywgODc1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc2MywgODc2NiwgODc3MCwgODc3NSwgCisgICAgODc3OSwgODc4MywgODc4NywgODc5MywgODc5OSwgODgwMiwgODgwOSwgODgxOCwgODgyMSwgODgyNCwgODgyOSwgODgzNSwgCisgICAgODgzOSwgODg0NywgODg1MywgODg1OSwgODg2NywgODg3MSwgODg3NiwgODg4NywgODg5MiwgODg5NiwgODkwMCwgODkwNCwgCisgICAgODkwNywgMCwgODkxMCwgODkxNywgODkyMSwgODkyNywgODkzMSwgODkzOCwgODk0NSwgODk1MywgODk2MCwgODk2NywgCisgICAgODk3MSwgODk3NSwgODk4MSwgODk4NSwgODk4OSwgODk5MywgODk5NywgOTAwMSwgOTAwNSwgOTAwOSwgOTAxMywgOTAxNywgCisgICAgOTAyMSwgOTAyNSwgOTAyOSwgOTAzMywgOTAzNywgOTA0MSwgOTA0NSwgOTA0OSwgOTA1NywgOTA2NSwgOTA3NSwgOTA4NCwgCisgICAgOTA5MywgOTA5NiwgOTEwMCwgOTEwNCwgOTEwOCwgOTExMiwgOTExNiwgOTEyMCwgOTEyNCwgOTEyOCwgOTEzMywgOTEzNywgCisgICAgOTE0MCwgOTE0MywgOTE0NiwgOTE0OSwgOTE1MiwgOTE1NSwgOTE1OCwgOTE2MSwgOTE2NSwgOTE2OSwgOTE3MywgOTE3OCwgCisgICAgOTE4MywgOTE4OSwgOTE5MiwgOTE5OSwgOTIwOCwgOTIxMywgOTIxOCwgOTIyNSwgOTIzMSwgOTIzNiwgOTI0MCwgOTI0NCwgCisgICAgOTI0OCwgOTI1MiwgOTI1NiwgOTI2MCwgOTI2NSwgOTI2OSwgOTI3NCwgOTI3OCwgOTI4MywgOTI4OCwgOTI5NSwgOTMwMSwgCisgICAgOTMwNywgOTMxMywgOTMxOCwgOTMyNywgOTMzNiwgOTM0MSwgOTM0OCwgOTM1NSwgOTM2MiwgOTM2OSwgOTM3MywgOTM3NywgCisgICAgOTM4MSwgOTM4OCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgOTQxNywgOTQyNSwgOTQyOSwgOTQzMywgOTQ0MCwgOTQ0NCwgCisgICAgOTQ0OCwgOTQ1MiwgOTQ1OSwgOTQ2NiwgOTQ3OCwgOTQ4MiwgOTQ4NiwgOTQ5MCwgOTUwMCwgOTUwOSwgOTUxMywgOTUyMSwgCisgICAgOTUyOCwgOTUzNSwgOTU0NCwgOTU1NSwgOTU2MywgOTU2NywgOTU3NiwgOTU4NywgOTU5NSwgOTYwOCwgOTYxNiwgOTYyNCwgCisgICAgOTYzMiwgOTY0MCwgOTY0NiwgOTY1NSwgOTY2MiwgOTY2NiwgOTY3NCwgOTY3OCwgOTY4NSwgOTY5MywgOTY5NywgOTcwMywgCisgICAgOTcxMCwgOTcxNywgOTcyMSwgOTcyOSwgOTczMywgOTc0MCwgOTc0NCwgOTc1MiwgOTc1NiwgOTc2NCwgOTc3MiwgOTc3OSwgCisgICAgOTc4NywgOTc5NSwgOTgwMiwgOTgwOCwgOTgxMiwgOTgxOSwgOTgyNywgOTgzMywgOTg0MCwgOTg0NywgOTg1MywgOTg2MywgCisgICAgOTg3MSwgOTg3OCwgOTg4NCwgOTg4OCwgOTg5MSwgOTg5NSwgOTkwMSwgOTkwOSwgOTkxMywgOTkxOSwgOTkyNSwgOTkzMiwgCisgICAgOTkzOSwgOTk0MiwgOTk0OSwgOTk1NCwgOTk2MywgOTk2OCwgOTk3MiwgOTk4NSwgOTk5OCwgMTAwMDQsIDEwMDExLCAKKyAgICAxMDAxNiwgMTAwMjIsIDEwMDI3LCAxMDAzMywgMTAwNDMsIDEwMDUwLCAxMDA1OSwgMTAwNjksIDEwMDc1LCAxMDA4MCwgCisgICAgMTAwODUsIDEwMDg5LCAxMDA5MywgMTAwOTgsIDEwMTAzLCAxMDEwOSwgMTAxMTcsIDEwMTI1LCAxMDEzNiwgMTAxNDEsIAorICAgIDEwMTUwLCAxMDE1OSwgMTAxNjYsIDEwMTcyLCAxMDE3OCwgMTAxODQsIDEwMTkwLCAxMDE5NiwgMTAyMDIsIDEwMjA5LCAKKyAgICAxMDIxNSwgMTAyMjIsIDEwMjI5LCAxMDIzNiwgMTAyNDMsIDEwMjQ5LCAxMDI1NywgMTAyNjYsIDEwMjczLCAxMDI4MSwgCisgICAgMTAyODksIDEwMjk1LCAxMDMwMSwgMTAzMDcsIDEwMzE1LCAxMDMyMywgMTAzMzMsIDEwMzQzLCAxMDM0NywgMTAzNTMsIAorICAgIDEwMzU5LCAwLCAxMDM2NSwgMTAzNzAsIDEwMzc1LCAxMDM4MiwgMTAzODcsIDEwMzkyLCAxMDM5OSwgMTA0MDQsIDEwNDEzLCAKKyAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0MzgsIDEwNDQ1LCAxMDQ1MCwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCisgICAgMTA0NzIsIDEwNDc3LCAxMDQ4MiwgMTA0ODgsIDEwNDkyLCAxMDQ5NywgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAorICAgIDEwNTI0LCAxMDUyOSwgMTA1MzYsIDEwNTQzLCAxMDU1MCwgMTA1NTUsIDEwNTYwLCAxMDU2NiwgMTA1NzEsIDEwNTc2LCAKKyAgICAxMDU4MiwgMTA1ODcsIDEwNTkyLCAxMDYwMCwgMTA2MDgsIDEwNjEzLCAxMDYxOCwgMTA2MjQsIDEwNjI5LCAxMDYzNCwgCisgICAgMTA2MzgsIDEwNjQ0LCAxMDY0OCwgMTA2NTIsIDEwNjU4LCAxMDY2NCwgMTA2NjksIDEwNjc0LCAxMDY4MSwgMTA2ODgsIAorICAgIDEwNjkyLCAwLCAwLCAxMDY5NiwgMTA3MDMsIDEwNzEwLCAxMDcxNywgMTA3MjcsIDEwNzM5LCAxMDc1MCwgMTA3NjYsIAorICAgIDEwNzc4LCAxMDc4OSwgMTA3OTcsIDEwODA0LCAxMDgxNCwgMTA4MjksIDEwODQwLCAxMDg0NiwgMTA4NTUsIDEwODYzLCAKKyAgICAxMDg3NCwgMTA4ODQsIDEwODkyLCAxMDkwMywgMTA5MTAsIDEwOTE4LCAxMDkyOSwgMTA5MzUsIDEwOTQxLCAxMDk0OSwgCisgICAgMTA5NTcsIDEwOTY1LCAxMDk3MSwgMTA5ODEsIDEwOTg5LCAxMDk5OSwgMTEwMDksIDExMDIyLCAxMTAzNiwgMTEwNTAsIAorICAgIDExMDYwLCAxMTA3MSwgMTEwODIsIDExMDk1LCAxMTEwOCwgMTExMjIsIDExMTM0LCAxMTE0NiwgMTExNTksIDExMTcyLCAKKyAgICAxMTE4NCwgMTExOTcsIDExMjA2LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgCisgICAgMTEyNDksIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIAorICAgIDExMjk5LCAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAKKyAgICAxMTM0OSwgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzc0LCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgCisgICAgMTEzOTgsIDExNDAzLCAxMTQwNywgMTE0MTEsIDExNDE1LCAxMTQxOSwgMTE0MjMsIDExNDI3LCAxMTQzMSwgMTE0MzUsIAorICAgIDExNDM5LCAxMTQ0MywgMTE0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDUyLCAKKyAgICAxMTQ1NywgMTE0NjEsIDExNDY1LCAxMTQ2OSwgMTE0NzMsIDExNDc3LCAxMTQ4MSwgMTE0ODYsIDExNDkwLCAxMTQ5NSwgCisgICAgMTE0OTksIDExNTA0LCAxMTUwOCwgMTE1MTIsIDExNTE2LCAxMTUyMSwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1NDAsIAorICAgIDExNTQ0LCAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg5LCAKKyAgICAxMTU5MywgMTE1OTcsIDExNjA0LCAxMTYwOCwgMTE2MTMsIDExNjE3LCAxMTYyMSwgMTE2MjYsIDExNjMwLCAxMTYzNywgCisgICAgMTE2NDQsIDExNjUxLCAxMTY1OCwgMTE2NjYsIDExNjc0LCAxMTY4MywgMTE2OTEsIDExNjk4LCAxMTcwNSwgMTE3MTMsIAorICAgIDExNzE5LCAxMTcyNSwgMTE3MzEsIDExNzM3LCAxMTc0NCwgMTE3NDksIDExNzUzLCAxMTc1OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE3NjIsIDExNzY3LCAxMTc3MiwgMTE3NzcsIDExNzgyLCAxMTc4NywgMTE3OTIsIDExNzk3LCAxMTgwMiwgMTE4MDcsIAorICAgIDExODEyLCAxMTgxNywgMTE4MjIsIDExODI3LCAxMTgzMiwgMTE4MzcsIDExODQyLCAxMTg0NywgMTE4NTIsIDExODU3LCAKKyAgICAxMTg2MiwgMTE4NjcsIDExODcyLCAxMTg3NywgMTE4ODIsIDExODg3LCAxMTg5MiwgMTE5MDAsIDExOTA3LCAxMTkxMywgCisgICAgMTE5MTgsIDExOTI2LCAxMTkzMywgMTE5MzksIDExOTQ2LCAxMTk1MiwgMTE5NTcsIDExOTY0LCAxMTk3MSwgMTE5NzcsIAorICAgIDExOTgyLCAxMTk4NywgMTE5OTMsIDExOTk4LCAxMjAwMywgMTIwMDksIDAsIDAsIDEyMDE0LCAxMjAyMCwgMTIwMjYsIAorICAgIDEyMDMyLCAxMjAzOCwgMTIwNDQsIDEyMDUwLCAxMjA1NSwgMTIwNjMsIDEyMDY5LCAxMjA3NSwgMTIwODEsIDEyMDg3LCAKKyAgICAxMjA5MywgMTIxMDEsIDAsIDEyMTA3LCAxMjExMiwgMTIxMTcsIDEyMTIyLCAxMjEyNywgMTIxMzIsIDEyMTM3LCAxMjE0MiwgCisgICAgMTIxNDcsIDEyMTUyLCAxMjE1NywgMTIxNjIsIDEyMTY3LCAxMjE3MiwgMTIxNzcsIDEyMTgyLCAxMjE4NywgMTIxOTIsIAorICAgIDEyMTk3LCAxMjIwMiwgMTIyMDcsIDEyMjEyLCAxMjIxNywgMTIyMjIsIDEyMjI3LCAxMjIzMiwgMTIyMzcsIDEyMjQyLCAwLCAKKyAgICAwLCAxMjI0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNTEsIDEyMjYwLCAKKyAgICAxMjI2OCwgMTIyNzUsIDEyMjgzLCAxMjI5NSwgMTIzMDIsIDEyMzA5LCAxMjMxNiwgMTIzMjgsIDEyMzM5LCAxMjM0NiwgCisgICAgMTIzNTQsIDEyMzYwLCAxMjM2NSwgMTIzNzMsIDEyMzgxLCAxMjM4OSwgMTIzOTUsIDEyNDA1LCAxMjQxMywgMCwgMTI0MjAsIAorICAgIDEyNDI4LCAxMjQzNiwgMTI0NDUsIDEyNDU0LCAxMjQ2NywgMTI0NzMsIDEyNDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4NSwgMTI0OTIsIDEyNDk3LCAxMjUwMiwgCisgICAgMTI1MDcsIDEyNTE1LCAxMjUyMywgMTI1MzAsIDEyNTM3LCAxMjU0NCwgMTI1NTEsIDEyNTU4LCAxMjU2NSwgMTI1NzIsIAorICAgIDEyNTc4LCAxMjU4NiwgMTI1OTIsIDEyNTk3LCAxMjYwMiwgMTI2MDcsIDEyNjEyLCAxMjYxNywgMTI2MjIsIDEyNjI3LCAKKyAgICAxMjYzMiwgMTI2MzcsIDEyNjQyLCAxMjY0NywgMTI2NTIsIDEyNjU2LCAxMjY2MCwgMTI2NjQsIDEyNjY5LCAxMjY3NSwgCisgICAgMTI2ODEsIDEyNjg3LCAxMjY5MiwgMTI2OTcsIDEyNzAyLCAxMjcwNywgMTI3MTMsIDEyNzIyLCAxMjczMCwgMTI3MzYsIAorICAgIDEyNzQ0LCAxMjc1MCwgMTI3NTQsIDEyNzU4LCAxMjc2MiwgMTI3NjcsIDEyNzcwLCAxMjc3NCwgMTI3NzcsIDEyNzgxLCAKKyAgICAxMjc4NCwgMTI3ODgsIDEyNzkyLCAxMjc5NiwgMTI4MDEsIDEyODA2LCAxMjgwOSwgMTI4MTMsIDEyODE4LCAxMjgyMywgCisgICAgMTI4MjYsIDEyODMwLCAxMjgzMywgMTI4MzcsIDEyODQxLCAxMjg0NSwgMTI4NDksIDEyODUzLCAxMjg1NywgMTI4NjEsIAorICAgIDEyODY1LCAxMjg2OSwgMTI4NzMsIDEyODc3LCAxMjg4MSwgMTI4ODUsIDEyODg5LCAxMjg5MywgMTI4OTcsIDEyOTAxLCAKKyAgICAxMjkwNSwgMTI5MDgsIDEyOTEyLCAxMjkxNSwgMTI5MTksIDEyOTIzLCAxMjkyNywgMTI5MzAsIDEyOTMzLCAxMjkzNywgCisgICAgMTI5NDEsIDEyOTQ0LCAxMjk0OCwgMTI5NTIsIDEyOTU2LCAxMjk2MCwgMTI5NjQsIDEyOTY4LCAxMjk3MSwgMTI5NzYsIAorICAgIDEyOTgxLCAxMjk4NSwgMTI5ODksIDEyOTk0LCAxMjk5OCwgMTMwMDMsIDEzMDA3LCAxMzAxMiwgMTMwMTcsIDEzMDIzLCAKKyAgICAxMzAyOSwgMTMwMzUsIDEzMDM5LCAxMzA0NCwgMTMwNTAsIDEzMDU2LCAxMzA2MCwgMTMwNjUsIDEzMDY5LCAxMzA3NSwgCisgICAgMTMwODAsIDEzMDgzLCAxMzA4OSwgMTMwOTUsIDEzMTAwLCAxMzEwNSwgMTMxMTIsIDEzMTE3LCAxMzEyMiwgMTMxMjYsIAorICAgIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAxMzE1OSwgMTMxNjQsIDEzMTY5LCAKKyAgICAxMzE3NSwgMTMxNzgsIDEzMTgyLCAxMzE4NiwgMTMxODksIDEzMTkyLCAxMzE5NSwgMTMxOTgsIDEzMjAxLCAxMzIwNCwgCisgICAgMTMyMDgsIDEzMjExLCAxMzIxNSwgMTMyMTksIDEzMjI2LCAxMzIzMSwgMTMyMzUsIDEzMjM5LCAxMzI0MywgMTMyNDcsIAorICAgIDEzMjUxLCAxMzI1NywgMTMyNjEsIDEzMjY1LCAxMzI2OSwgMTMyNzMsIDEzMjc5LCAxMzI4MywgMTMyODcsIDEzMjkwLCAKKyAgICAxMzI5NCwgMTMyOTgsIDAsIDEzMzAyLCAxMzMwNSwgMTMzMDksIDEzMzEyLCAxMzMxNiwgMTMzMTksIDEzMzIzLCAxMzMyNywgCisgICAgMCwgMCwgMTMzMzEsIDEzMzM0LCAwLCAwLCAxMzMzOCwgMTMzNDEsIDEzMzQ1LCAxMzM0OCwgMTMzNTIsIDEzMzU2LCAKKyAgICAxMzM2MCwgMTMzNjQsIDEzMzY4LCAxMzM3MiwgMTMzNzYsIDEzMzgwLCAxMzM4NCwgMTMzODgsIDEzMzkyLCAxMzM5NiwgCisgICAgMTM0MDAsIDEzNDA0LCAxMzQwOCwgMTM0MTIsIDEzNDE2LCAxMzQyMCwgMCwgMTM0MjMsIDEzNDI2LCAxMzQzMCwgMTM0MzQsIAorICAgIDEzNDM4LCAxMzQ0MSwgMTM0NDQsIDAsIDEzNDQ4LCAwLCAwLCAwLCAxMzQ1MSwgMTM0NTUsIDEzNDU5LCAxMzQ2MywgMCwgMCwgCisgICAgMTM0NjYsIDEzNDcwLCAxMzQ3NCwgMTM0NzksIDEzNDgzLCAxMzQ4OCwgMTM0OTIsIDEzNDk3LCAxMzUwMiwgMCwgMCwgCisgICAgMTM1MDgsIDEzNTEyLCAwLCAwLCAxMzUxNywgMTM1MjEsIDEzNTI2LCAxMzUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1MzYsIDAsIDAsIDAsIDAsIDEzNTQyLCAxMzU0NiwgMCwgMTM1NTAsIDEzNTU0LCAxMzU1OSwgMTM1NjQsIDEzNTY5LCAwLCAKKyAgICAwLCAxMzU3NSwgMTM1NzksIDEzNTgyLCAxMzU4NSwgMTM1ODgsIDEzNTkxLCAxMzU5NCwgMTM1OTcsIDEzNjAxLCAxMzYwNCwgCisgICAgMTM2MDgsIDEzNjE2LCAxMzYyNSwgMTM2MjksIDEzNjMzLCAxMzYzOSwgMTM2NDUsIDEzNjUxLCAxMzY1NywgMTM2NzEsIAorICAgIDEzNjc4LCAxMzY4MSwgMCwgMCwgMCwgMCwgMCwgMTM2ODUsIDEzNjkyLCAxMzY5NywgMCwgMTM3MDIsIDEzNzA2LCAxMzcxMSwgCisgICAgMTM3MTUsIDEzNzIwLCAxMzcyNCwgMCwgMCwgMCwgMCwgMTM3MjksIDEzNzM0LCAwLCAwLCAxMzczOSwgMTM3NDQsIDEzNzQ5LCAKKyAgICAxMzc1MywgMTM3NTgsIDEzNzYzLCAxMzc2OCwgMTM3NzMsIDEzNzc4LCAxMzc4MywgMTM3ODgsIDEzNzkzLCAxMzc5OCwgCisgICAgMTM4MDMsIDEzODA4LCAxMzgxMywgMTM4MTgsIDEzODIzLCAxMzgyOCwgMTM4MzMsIDEzODM4LCAxMzg0MywgMCwgMTM4NDcsIAorICAgIDEzODUxLCAxMzg1NiwgMTM4NjEsIDEzODY2LCAxMzg3MCwgMTM4NzQsIDAsIDEzODc5LCAxMzg4MywgMCwgMTM4ODgsIAorICAgIDEzODkzLCAwLCAxMzg5OCwgMTM5MDMsIDAsIDAsIDEzOTA3LCAwLCAxMzkxMiwgMTM5MTgsIDEzOTIzLCAxMzkyOSwgCisgICAgMTM5MzQsIDAsIDAsIDAsIDAsIDEzOTQwLCAxMzk0NiwgMCwgMCwgMTM5NTIsIDEzOTU4LCAxMzk2NCwgMCwgMCwgMCwgCisgICAgMTM5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOTc0LCAxMzk3OSwgMTM5ODQsIDEzOTg5LCAwLCAxMzk5NCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM5OTksIDE0MDA0LCAxNDAwOCwgMTQwMTIsIDE0MDE2LCAxNDAyMCwgMTQwMjQsIDE0MDI4LCAKKyAgICAxNDAzMywgMTQwMzcsIDE0MDQyLCAxNDA0NiwgMTQwNTAsIDE0MDU0LCAxNDA1OCwgMTQwNjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0MDY5LCAxNDA3NCwgMTQwNzksIDAsIDE0MDg0LCAxNDA4OCwgMTQwOTMsIDE0MDk3LCAxNDEwMiwgCisgICAgMTQxMDYsIDE0MTExLCAxNDExNiwgMTQxMjEsIDAsIDE0MTI3LCAxNDEzMSwgMTQxMzYsIDAsIDE0MTQyLCAxNDE0NiwgCisgICAgMTQxNTEsIDE0MTU1LCAxNDE2MCwgMTQxNjUsIDE0MTcwLCAxNDE3NSwgMTQxODAsIDE0MTg1LCAxNDE5MCwgMTQxOTUsIAorICAgIDE0MjAwLCAxNDIwNSwgMTQyMTAsIDE0MjE1LCAxNDIyMCwgMTQyMjUsIDE0MjMwLCAxNDIzNSwgMTQyNDAsIDE0MjQ1LCAwLCAKKyAgICAxNDI0OSwgMTQyNTMsIDE0MjU4LCAxNDI2MywgMTQyNjgsIDE0MjcyLCAxNDI3NiwgMCwgMTQyODEsIDE0Mjg1LCAwLCAKKyAgICAxNDI5MCwgMTQyOTUsIDE0MzAwLCAxNDMwNSwgMTQzMTAsIDAsIDAsIDE0MzE0LCAxNDMxOSwgMTQzMjQsIDE0MzMwLCAKKyAgICAxNDMzNSwgMTQzNDEsIDE0MzQ2LCAxNDM1MiwgMTQzNTgsIDE0MzY1LCAwLCAxNDM3MiwgMTQzNzcsIDE0MzgzLCAwLCAKKyAgICAxNDM5MCwgMTQzOTUsIDE0NDAxLCAwLCAwLCAxNDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTQ0MTAsIDE0NDE2LCAxNDQyMiwgMTQ0MjgsIDAsIDAsIDE0NDM1LCAxNDQ0MCwgMTQ0NDQsIDE0NDQ4LCAKKyAgICAxNDQ1MiwgMTQ0NTYsIDE0NDYwLCAxNDQ2NCwgMTQ0NjksIDE0NDczLCAxNDQ3OCwgMTQ0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE0NDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQ5MywgMTQ0OTgsIDE0NTAzLCAwLCAxNDUwOCwgMTQ1MTIsIAorICAgIDE0NTE3LCAxNDUyMSwgMTQ1MjYsIDE0NTMwLCAxNDUzNSwgMTQ1NDAsIDAsIDAsIDE0NTQ1LCAxNDU0OSwgMCwgMCwgCisgICAgMTQ1NTQsIDE0NTU4LCAxNDU2MywgMTQ1NjcsIDE0NTcyLCAxNDU3NywgMTQ1ODIsIDE0NTg3LCAxNDU5MiwgMTQ1OTcsIAorICAgIDE0NjAyLCAxNDYwNywgMTQ2MTIsIDE0NjE3LCAxNDYyMiwgMTQ2MjcsIDE0NjMyLCAxNDYzNywgMTQ2NDIsIDE0NjQ3LCAKKyAgICAxNDY1MiwgMTQ2NTcsIDAsIDE0NjYxLCAxNDY2NSwgMTQ2NzAsIDE0Njc1LCAxNDY4MCwgMTQ2ODQsIDE0Njg4LCAwLCAKKyAgICAxNDY5MywgMTQ2OTcsIDAsIDE0NzAyLCAxNDcwNywgMTQ3MTIsIDE0NzE3LCAxNDcyMiwgMCwgMCwgMTQ3MjYsIDE0NzMxLCAKKyAgICAxNDczNiwgMTQ3NDIsIDE0NzQ3LCAxNDc1MywgMTQ3NTgsIDE0NzY0LCAxNDc3MCwgMCwgMCwgMTQ3NzcsIDE0NzgyLCAwLCAKKyAgICAwLCAxNDc4OCwgMTQ3OTMsIDE0Nzk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgwNCwgMTQ4MTEsIDAsIDAsIDAsIDAsIAorICAgIDE0ODE4LCAxNDgyMywgMCwgMTQ4MjgsIDE0ODMzLCAxNDgzOSwgMTQ4NDUsIDE0ODUxLCAwLCAwLCAxNDg1OCwgMTQ4NjMsIAorICAgIDE0ODY3LCAxNDg3MSwgMTQ4NzUsIDE0ODc5LCAxNDg4MywgMTQ4ODcsIDE0ODkyLCAxNDg5NiwgMTQ5MDEsIDE0OTA1LCAKKyAgICAxNDkxMCwgMTQ5MTcsIDE0OTI0LCAxNDkzMSwgMTQ5MzgsIDE0OTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDk1MiwgMTQ5NTYsIDAsIDE0OTYwLCAxNDk2MywgMTQ5NjcsIDE0OTcwLCAxNDk3NCwgMTQ5NzcsIDAsIDAsIDAsIAorICAgIDE0OTgxLCAxNDk4NCwgMTQ5ODgsIDAsIDE0OTkyLCAxNDk5NSwgMTQ5OTksIDE1MDAzLCAwLCAwLCAwLCAxNTAwNiwgCisgICAgMTUwMTAsIDAsIDE1MDE0LCAwLCAxNTAxOCwgMTUwMjIsIDAsIDAsIDAsIDE1MDI2LCAxNTAzMCwgMCwgMCwgMCwgMTUwMzQsIAorICAgIDE1MDM3LCAxNTA0MSwgMCwgMCwgMCwgMTUwNDQsIDE1MDQ3LCAxNTA1MCwgMTUwNTQsIDE1MDU4LCAxNTA2MSwgMTUwNjUsIAorICAgIDE1MDY5LCAxNTA3MywgMTUwNzcsIDE1MDgxLCAxNTA4NSwgMCwgMCwgMCwgMCwgMTUwODgsIDE1MDkzLCAxNTA5NywgCisgICAgMTUxMDIsIDE1MTA2LCAwLCAwLCAwLCAxNTExMSwgMTUxMTUsIDE1MTIwLCAwLCAxNTEyNSwgMTUxMjksIDE1MTM0LCAKKyAgICAxNTEzOSwgMCwgMCwgMTUxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNTE1MiwgMTUxNTYsIDE1MTU5LCAxNTE2MiwgMTUxNjUsIDE1MTY4LCAxNTE3MSwgMTUxNzQsIAorICAgIDE1MTc4LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAxNTE5NCwgMTUxOTksIDE1MjAzLCAxNTIwNywgMTUyMTEsIDE1MjE1LCAKKyAgICAxNTIxOSwgMTUyMjQsIDE1MjI4LCAwLCAwLCAwLCAwLCAwLCAxNTIzMSwgMTUyMzcsIDE1MjQxLCAxNTI0NSwgMCwgMTUyNDksIAorICAgIDE1MjUyLCAxNTI1NiwgMTUyNTksIDE1MjYzLCAxNTI2NiwgMTUyNzAsIDE1Mjc0LCAwLCAxNTI3OCwgMTUyODEsIDE1Mjg1LCAKKyAgICAwLCAxNTI4OSwgMTUyOTIsIDE1Mjk2LCAxNTMwMCwgMTUzMDMsIDE1MzA3LCAxNTMxMSwgMTUzMTUsIDE1MzE5LCAxNTMyMywgCisgICAgMTUzMjcsIDE1MzMxLCAxNTMzNSwgMTUzMzksIDE1MzQzLCAxNTM0NywgMTUzNTEsIDE1MzU1LCAxNTM1OSwgMTUzNjMsIAorICAgIDE1MzY3LCAxNTM3MSwgMTUzNzUsIDAsIDE1Mzc4LCAxNTM4MSwgMTUzODUsIDE1Mzg5LCAxNTM5MywgMTUzOTYsIDE1Mzk5LCAKKyAgICAxNTQwMywgMTU0MDcsIDE1NDEwLCAxNTQxNCwgMTU0MTgsIDE1NDIyLCAxNTQyNiwgMTU0MzAsIDE1NDM0LCAwLCAwLCAwLCAKKyAgICAxNTQzNywgMTU0NDEsIDE1NDQ2LCAxNTQ1MCwgMTU0NTUsIDE1NDU5LCAxNTQ2NCwgMTU0NjksIDAsIDE1NDc1LCAxNTQ3OSwgCisgICAgMTU0ODQsIDAsIDE1NDg5LCAxNTQ5MywgMTU0OTgsIDE1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUwNywgMTU1MTEsIAorICAgIDAsIDE1NTE3LCAxNTUyMSwgMTU1MjUsIDAsIDAsIDAsIDAsIDAsIDE1NTI5LCAxNTUzNCwgMTU1MzksIDE1NTQ0LCAwLCAwLCAKKyAgICAxNTU1MCwgMTU1NTQsIDE1NTU3LCAxNTU2MCwgMTU1NjMsIDE1NTY2LCAxNTU2OSwgMTU1NzIsIDE1NTc2LCAxNTU3OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1ODMsIDE1NTk2LCAxNTYwOCwgMTU2MjAsIDE1NjMyLCAxNTY0NCwgMTU2NTYsIAorICAgIDE1NjY4LCAxNTY3MiwgMTU2NzksIDE1Njg0LCAxNTY4OSwgMCwgMTU2OTQsIDE1Njk4LCAxNTcwMywgMTU3MDcsIDE1NzEyLCAKKyAgICAxNTcxNiwgMTU3MjEsIDE1NzI2LCAwLCAxNTczMSwgMTU3MzUsIDE1NzQwLCAwLCAxNTc0NSwgMTU3NDksIDE1NzU0LCAKKyAgICAxNTc1OSwgMTU3NjMsIDE1NzY4LCAxNTc3MywgMTU3NzgsIDE1NzgzLCAxNTc4OCwgMTU3OTMsIDE1Nzk4LCAxNTgwMywgCisgICAgMTU4MDgsIDE1ODEzLCAxNTgxOCwgMTU4MjMsIDE1ODI4LCAxNTgzMywgMTU4MzgsIDE1ODQzLCAxNTg0OCwgMTU4NTMsIDAsIAorICAgIDE1ODU3LCAxNTg2MSwgMTU4NjYsIDE1ODcxLCAxNTg3NiwgMTU4ODAsIDE1ODg0LCAxNTg4OSwgMTU4OTQsIDE1ODk4LCAwLCAKKyAgICAxNTkwMywgMTU5MDgsIDE1OTEzLCAxNTkxOCwgMTU5MjMsIDAsIDAsIDE1OTI3LCAxNTkzMiwgMTU5MzcsIDE1OTQzLCAKKyAgICAxNTk0OCwgMTU5NTQsIDE1OTU5LCAxNTk2NSwgMTU5NzEsIDAsIDE1OTc4LCAxNTk4MywgMTU5ODksIDAsIDE1OTk1LCAKKyAgICAxNjAwMCwgMTYwMDYsIDE2MDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAxNywgMTYwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE2MDI5LCAwLCAxNjAzNCwgMTYwNDAsIDE2MDQ2LCAxNjA1MiwgMCwgMCwgMTYwNTksIDE2MDY0LCAxNjA2OCwgCisgICAgMTYwNzIsIDE2MDc2LCAxNjA4MCwgMTYwODQsIDE2MDg4LCAxNjA5MywgMTYwOTcsIDAsIDE2MTAyLCAxNjEwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMTIsIDE2MTE2LCAxNjEyMCwgMCwgMTYxMjQsIDE2MTI3LCAKKyAgICAxNjEzMSwgMTYxMzQsIDE2MTM4LCAxNjE0MSwgMTYxNDUsIDE2MTQ5LCAwLCAxNjE1MywgMTYxNTYsIDE2MTYwLCAwLCAKKyAgICAxNjE2NCwgMTYxNjcsIDE2MTcxLCAxNjE3NSwgMTYxNzgsIDE2MTgyLCAxNjE4NiwgMTYxOTAsIDE2MTk0LCAxNjE5OCwgCisgICAgMTYyMDIsIDE2MjA2LCAxNjIxMCwgMTYyMTQsIDE2MjE4LCAxNjIyMiwgMTYyMjYsIDE2MjMwLCAxNjIzNCwgMTYyMzgsIAorICAgIDE2MjQyLCAxNjI0NiwgMTYyNTAsIDE2MjUzLCAxNjI1NywgMTYyNjAsIDE2MjY0LCAxNjI2OCwgMTYyNzIsIDE2Mjc1LCAKKyAgICAxNjI3OCwgMTYyODIsIDE2Mjg2LCAxNjI4OSwgMTYyOTMsIDE2Mjk3LCAxNjMwMSwgMTYzMDUsIDE2MzA5LCAxNjMxMywgCisgICAgMTYzMTYsIDAsIDAsIDE2MzIwLCAxNjMyNCwgMTYzMjksIDE2MzMzLCAxNjMzOCwgMTYzNDIsIDE2MzQ3LCAxNjM1MiwgMCwgCisgICAgMTYzNTgsIDE2MzYyLCAxNjM2NywgMCwgMTYzNzIsIDE2Mzc2LCAxNjM4MSwgMTYzODYsIDE2MzkwLCAxNjM5NSwgMCwgMCwgCisgICAgMCwgMCwgMTYzOTksIDE2NDA1LCAxNjQxMSwgMTY0MTcsIDE2NDIzLCAxNjQyOSwgMTY0MzUsIDE2NDQxLCAxNjQ0NywgCisgICAgMTY0NTMsIDE2NDU5LCAxNjQ2NSwgMTY0NzEsIDE2NDc2LCAxNjQ4MSwgMTY0ODYsIDAsIDAsIDE2NDkyLCAxNjQ5NiwgCisgICAgMTY0OTksIDE2NTAyLCAxNjUwNSwgMTY1MDgsIDE2NTExLCAxNjUxNCwgMTY1MTgsIDE2NTIxLCAxNjUyNSwgMTY1MjksIAorICAgIDE2NTM0LCAxNjUzOSwgMTY1NDUsIDE2NTUxLCAxNjU1NywgMTY1NjMsIDE2NTY5LCAxNjU3NSwgMTY1NzksIDE2NTg1LCAKKyAgICAxNjU5MSwgMTY1OTcsIDE2NjAyLCAxNjYwOCwgMCwgMCwgMTY2MTQsIDE2NjE4LCAwLCAxNjYyMiwgMTY2MjYsIDE2NjMwLCAKKyAgICAxNjYzNCwgMTY2MzgsIDE2NjQyLCAxNjY0NiwgMTY2NTAsIDE2NjU0LCAxNjY1OCwgMTY2NjIsIDE2NjY2LCAxNjY3MCwgCisgICAgMTY2NzQsIDE2Njc4LCAxNjY4MiwgMTY2ODYsIDE2NjkwLCAwLCAwLCAwLCAxNjY5NCwgMTY3MDAsIDE2NzA2LCAxNjcxMiwgCisgICAgMTY3MTgsIDE2NzI0LCAxNjczMCwgMTY3MzYsIDE2NzQyLCAxNjc0OCwgMTY3NTQsIDE2NzYwLCAxNjc2OCwgMTY3NzQsIAorICAgIDE2NzgwLCAxNjc4NiwgMTY3OTIsIDE2Nzk4LCAxNjgwNCwgMTY4MTAsIDE2ODE2LCAxNjgyMiwgMTY4MjgsIDE2ODM0LCAwLCAKKyAgICAxNjg0MCwgMTY4NDYsIDE2ODUyLCAxNjg1OCwgMTY4NjQsIDE2ODcwLCAxNjg3NCwgMTY4ODAsIDE2ODg0LCAwLCAxNjg4OCwgCisgICAgMCwgMCwgMTY4OTQsIDE2ODk4LCAxNjkwNCwgMTY5MTAsIDE2OTE2LCAxNjkyMCwgMTY5MjYsIDAsIDAsIDAsIDE2OTMwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjkzNCwgMTY5MzksIDE2OTQ2LCAxNjk1MywgMTY5NjAsIDE2OTY3LCAwLCAxNjk3NCwgMCwgMTY5ODEsIAorICAgIDE2OTg2LCAxNjk5MSwgMTY5OTgsIDE3MDA1LCAxNzAxNCwgMTcwMjUsIDE3MDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAzOSwgCisgICAgMTcwNDUsIDE3MDUwLCAxNzA1NSwgMTcwNjAsIDE3MDY1LCAxNzA3MCwgMTcwNzUsIDE3MDgxLCAxNzA4NiwgMCwgMCwgCisgICAgMTcwOTIsIDE3MDk5LCAxNzEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcxMTEsIDE3MTE4LCAKKyAgICAxNzEyNSwgMTcxMzIsIDE3MTM5LCAxNzE0NiwgMTcxNTMsIDE3MTYwLCAxNzE2NywgMTcxNzQsIDE3MTgxLCAxNzE4OCwgCisgICAgMTcxOTUsIDE3MjAyLCAxNzIwOSwgMTcyMTYsIDE3MjIzLCAxNzIzMCwgMTcyMzcsIDE3MjQ0LCAxNzI1MSwgMTcyNTgsIAorICAgIDE3MjY1LCAxNzI3MiwgMTcyNzksIDE3Mjg2LCAxNzI5MywgMTczMDAsIDE3MzA3LCAxNzMxNCwgMTczMjEsIDE3MzI4LCAKKyAgICAxNzMzNSwgMTczNDEsIDE3MzQ4LCAxNzM1NSwgMTczNjAsIDE3MzY3LCAxNzM3MiwgMTczNzksIDE3Mzg2LCAxNzM5MywgCisgICAgMTc0MDAsIDE3NDA3LCAxNzQxNCwgMTc0MjAsIDE3NDI3LCAxNzQzMiwgMTc0MzgsIDE3NDQ1LCAxNzQ1MiwgMTc0NTksIAorICAgIDE3NDY1LCAxNzQ3MiwgMTc0NzksIDE3NDg2LCAxNzQ5MiwgMTc0OTksIDAsIDAsIDAsIDAsIDE3NTA0LCAxNzUxMSwgCisgICAgMTc1MTcsIDE3NTI0LCAxNzUzMCwgMTc1MzksIDE3NTQ4LCAxNzU1MywgMTc1NTgsIDE3NTYzLCAxNzU3MCwgMTc1NzcsIAorICAgIDE3NTg0LCAxNzU5MSwgMTc1OTYsIDE3NjAxLCAxNzYwNiwgMTc2MTEsIDE3NjE2LCAxNzYyMCwgMTc2MjQsIDE3NjI4LCAKKyAgICAxNzYzMiwgMTc2MzYsIDE3NjQwLCAxNzY0NSwgMTc2NDksIDE3NjU0LCAxNzY1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTc2NjQsIDE3NjY5LCAwLCAxNzY3NiwgMCwgMCwgMTc2ODMsIDE3Njg4LCAwLCAxNzY5MywgMCwgCisgICAgMCwgMTc3MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NzA1LCAxNzcxMCwgMTc3MTQsIDE3NzIxLCAwLCAxNzcyOCwgMTc3MzMsIAorICAgIDE3NzM4LCAxNzc0MywgMTc3NTAsIDE3NzU3LCAxNzc2NCwgMCwgMTc3NzEsIDE3Nzc2LCAxNzc4MSwgMCwgMTc3ODgsIDAsIAorICAgIDE3Nzk1LCAwLCAwLCAxNzgwMCwgMTc4MDcsIDAsIDE3ODE0LCAxNzgxOCwgMTc4MjUsIDE3ODI5LCAxNzgzNCwgMTc4NDIsIAorICAgIDE3ODQ4LCAxNzg1NCwgMTc4NTksIDE3ODY1LCAxNzg3MSwgMTc4NzcsIDE3ODgyLCAwLCAxNzg4OCwgMTc4OTYsIDE3OTAzLCAKKyAgICAwLCAwLCAxNzkxMCwgMTc5MTUsIDE3OTIxLCAxNzkyNiwgMTc5MzIsIDAsIDE3OTM4LCAwLCAxNzk0MywgMTc5NTAsIAorICAgIDE3OTU3LCAxNzk2NCwgMTc5NzEsIDE3OTc2LCAwLCAwLCAxNzk4MCwgMTc5ODUsIDE3OTg5LCAxNzk5MywgMTc5OTcsIAorICAgIDE4MDAxLCAxODAwNSwgMTgwMDksIDE4MDE0LCAxODAxOCwgMCwgMCwgMTgwMjMsIDE4MDI5LCAxODAzNSwgMTgwNDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MDQ5LCAxODA1MywgMTgwNjQsIDE4MDc5LCAxODA5NCwgMTgxMDQsIDE4MTE1LCAKKyAgICAxODEyOCwgMTgxMzksIDE4MTQ1LCAxODE1MywgMTgxNjMsIDE4MTY5LCAxODE3NywgMTgxODEsIDE4MTg3LCAxODE5MywgCisgICAgMTgyMDEsIDE4MjExLCAxODIxOSwgMTgyMzIsIDE4MjM4LCAxODI0NiwgMTgyNTQsIDE4MjY2LCAxODI3MywgMTgyODEsIAorICAgIDE4Mjg5LCAxODI5NywgMTgzMDUsIDE4MzEzLCAxODMyMSwgMTgzMzEsIDE4MzM1LCAxODMzOCwgMTgzNDEsIDE4MzQ0LCAKKyAgICAxODM0NywgMTgzNTAsIDE4MzUzLCAxODM1NywgMTgzNjAsIDE4MzY0LCAxODM2OCwgMTgzNzIsIDE4Mzc2LCAxODM4MCwgCisgICAgMTgzODQsIDE4Mzg4LCAxODM5MywgMTgzOTcsIDE4NDAyLCAxODQwNywgMTg0MTMsIDE4NDIzLCAxODQzNywgMTg0NDcsIAorICAgIDE4NDUzLCAxODQ1OSwgMTg0NjcsIDE4NDc1LCAxODQ4MywgMTg0OTEsIDE4NDk3LCAxODUwMywgMTg1MDYsIDE4NTEwLCAKKyAgICAxODUxNCwgMTg1MTgsIDE4NTIyLCAxODUyNiwgMTg1MzAsIDAsIDE4NTM0LCAxODUzOCwgMTg1NDIsIDE4NTQ2LCAxODU1MCwgCisgICAgMTg1NTQsIDE4NTU4LCAxODU2MiwgMTg1NjYsIDE4NTcwLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAxODU4NCwgMTg1ODgsIAorICAgIDE4NTkyLCAxODU5NSwgMTg1OTksIDE4NjAzLCAxODYwNywgMTg2MTEsIDE4NjE1LCAxODYxOSwgMTg2MjMsIDE4NjI3LCAKKyAgICAxODYzMCwgMTg2MzQsIDE4NjM3LCAxODY0MSwgMTg2NDUsIDE4NjQ5LCAxODY1MiwgMTg2NTUsIDE4NjU5LCAxODY2NSwgCisgICAgMTg2NjksIDAsIDAsIDAsIDAsIDE4NjczLCAxODY3OCwgMTg2ODIsIDE4Njg3LCAxODY5MSwgMTg2OTYsIDE4NzAxLCAKKyAgICAxODcwNywgMTg3MTIsIDE4NzE4LCAxODcyMiwgMTg3MjcsIDE4NzMxLCAxODczNiwgMTg3NDYsIDE4NzUyLCAxODc1OCwgCisgICAgMTg3NjUsIDE4Nzc1LCAxODc4MSwgMTg3ODUsIDE4Nzg5LCAxODc5NSwgMTg4MDEsIDE4ODA5LCAxODgxNSwgMTg4MjMsIAorICAgIDE4ODMxLCAxODgzOSwgMTg4NDksIDE4ODU3LCAxODg2NywgMTg4NzIsIDE4ODc4LCAxODg4NCwgMTg4OTAsIDE4ODk2LCAKKyAgICAxODkwMiwgMTg5MDgsIDAsIDE4OTE0LCAxODkyMCwgMTg5MjYsIDE4OTMyLCAxODkzOCwgMTg5NDQsIDE4OTUwLCAxODk1NiwgCisgICAgMTg5NjIsIDE4OTY4LCAxODk3NCwgMTg5NzksIDE4OTg0LCAxODk5MCwgMTg5OTYsIDE5MDAyLCAxOTAwNywgMTkwMTMsIAorICAgIDE5MDE5LCAxOTAyNSwgMTkwMzEsIDE5MDM3LCAxOTA0MywgMTkwNDksIDE5MDU1LCAxOTA2MCwgMTkwNjYsIDE5MDcxLCAKKyAgICAxOTA3NywgMTkwODMsIDE5MDg5LCAxOTA5NCwgMTkwOTksIDE5MTA1LCAxOTExMywgMTkxMjAsIDAsIDE5MTI4LCAxOTEzNSwgCisgICAgMTkxNDgsIDE5MTU1LCAxOTE2MiwgMTkxNzAsIDE5MTc4LCAxOTE4NCwgMTkxOTAsIDE5MTk2LCAxOTIwNiwgMTkyMTEsIAorICAgIDE5MjE3LCAxOTIyNywgMTkyMzcsIDAsIDE5MjQ3LCAxOTI1NywgMTkyNjUsIDE5Mjc3LCAxOTI4OSwgMTkyOTUsIDE5MzA5LCAKKyAgICAxOTMyNCwgMTkzMjksIDE5MzM0LCAxOTM0MiwgMTkzNTAsIDE5MzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxOTM2NiwgMTkzNjksIDE5MzczLCAxOTM3NywgMTkzODEsIDE5Mzg1LCAxOTM4OSwgMTkzOTMsIDE5Mzk3LCAKKyAgICAxOTQwMSwgMTk0MDUsIDE5NDA5LCAxOTQxMywgMTk0MTcsIDE5NDIxLCAxOTQyNSwgMTk0MjksIDE5NDMzLCAxOTQzNywgCisgICAgMTk0NDEsIDE5NDQ1LCAxOTQ0OCwgMTk0NTEsIDE5NDU1LCAxOTQ1OSwgMTk0NjMsIDE5NDY2LCAxOTQ2OSwgMTk0NzMsIAorICAgIDE5NDc2LCAxOTQ4MCwgMTk0ODQsIDE5NDg3LCAxOTQ5MSwgMTk0OTQsIDE5NDk5LCAxOTUwMiwgMTk1MDYsIDE5NTA5LCAKKyAgICAxOTUxMywgMTk1MTYsIDE5NTIxLCAxOTUyNCwgMTk1MjgsIDE5NTM1LCAxOTU0MCwgMTk1NDQsIDE5NTQ5LCAxOTU1MywgCisgICAgMTk1NTgsIDE5NTYyLCAxOTU2NywgMTk1NzQsIDE5NTgwLCAxOTU4NSwgMTk1ODksIDE5NTkzLCAxOTU5NywgMTk2MDEsIAorICAgIDE5NjA1LCAxOTYxMCwgMTk2MTYsIDE5NjIyLCAxOTYyNywgMTk2MzMsIDE5NjM3LCAxOTY0MCwgMTk2NDMsIDE5NjQ2LCAKKyAgICAxOTY0OSwgMTk2NTIsIDE5NjU1LCAxOTY1OSwgMTk2NjIsIDE5NjY2LCAxOTY3MiwgMTk2NzYsIDE5NjgwLCAxOTY4NCwgCisgICAgMTk2ODgsIDE5NjkyLCAxOTY5NiwgMTk3MDAsIDE5NzA0LCAxOTcwOSwgMTk3MTMsIDE5NzE4LCAxOTcyMywgMTk3MjksIAorICAgIDE5NzM0LCAxOTc0MCwgMTk3NDYsIDE5NzUyLCAxOTc1OCwgMTk3NjQsIDE5NzcxLCAxOTc3OCwgMTk3ODUsIDE5NzkzLCAKKyAgICAxOTgwMiwgMTk4MTEsIDE5ODIyLCAxOTgzMiwgMTk4NDIsIDE5ODUzLCAxOTg2NCwgMTk4NzQsIDE5ODg0LCAxOTg5NCwgCisgICAgMTk5MDQsIDE5OTE0LCAxOTkyNCwgMTk5MzQsIDE5OTQ0LCAxOTk1MiwgMTk5NTksIDE5OTY1LCAxOTk3MiwgMTk5NzcsIAorICAgIDE5OTgzLCAxOTk4OSwgMTk5OTUsIDIwMDAxLCAyMDAwNywgMjAwMTMsIDIwMDE4LCAyMDAyNCwgMjAwMzAsIDIwMDM2LCAKKyAgICAyMDA0MiwgMjAwNDcsIDIwMDU1LCAyMDA2MiwgMjAwNjgsIDIwMDc1LCAyMDA4MywgMjAwODksIDIwMDk1LCAyMDEwMSwgCisgICAgMjAxMDcsIDIwMTE1LCAyMDEyMywgMjAxMzMsIDIwMTQxLCAyMDE0OSwgMjAxNTUsIDIwMTYwLCAyMDE2NSwgMjAxNzAsIAorICAgIDIwMTc1LCAyMDE4MCwgMjAxODUsIDIwMTkxLCAyMDE5NiwgMjAyMDIsIDIwMjA4LCAyMDIxNCwgMjAyMjAsIDIwMjI3LCAKKyAgICAyMDIzMiwgMjAyMzgsIDIwMjQzLCAyMDI0OCwgMjAyNTMsIDIwMjU4LCAyMDI2MywgMjAyNjgsIDIwMjczLCAyMDI3OCwgCisgICAgMjAyODMsIDIwMjg4LCAyMDI5MywgMjAyOTgsIDIwMzAzLCAyMDMwOCwgMjAzMTMsIDIwMzE4LCAyMDMyMywgMjAzMjgsIAorICAgIDIwMzMzLCAyMDMzOCwgMjAzNDMsIDIwMzQ4LCAyMDM1MywgMjAzNTgsIDIwMzYzLCAyMDM2OCwgMjAzNzMsIDIwMzc4LCAKKyAgICAyMDM4MywgMjAzODgsIDIwMzkzLCAyMDM5OCwgMjA0MDMsIDIwNDA4LCAyMDQxMywgMjA0MTgsIDIwNDIzLCAwLCAyMDQyOCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjA0MzMsIDAsIDAsIDIwNDM4LCAyMDQ0MiwgMjA0NDYsIDIwNDUwLCAyMDQ1NCwgMjA0NTgsIAorICAgIDIwNDYyLCAyMDQ2NiwgMjA0NzAsIDIwNDc0LCAyMDQ3OCwgMjA0ODIsIDIwNDg2LCAyMDQ5MCwgMjA0OTQsIDIwNDk4LCAKKyAgICAyMDUwMiwgMjA1MDYsIDIwNTEwLCAyMDUxNCwgMjA1MTgsIDIwNTIyLCAyMDUyNiwgMjA1MzAsIDIwNTM0LCAyMDUzOCwgCisgICAgMjA1NDIsIDIwNTQ2LCAyMDU1MCwgMjA1NTQsIDIwNTU4LCAyMDU2MiwgMjA1NjYsIDIwNTcwLCAyMDU3NCwgMjA1NzgsIAorICAgIDIwNTgyLCAyMDU4NiwgMjA1OTAsIDIwNTk0LCAyMDU5OCwgMjA2MDIsIDIwNjA4LCAyMDYxMiwgMjA2MTcsIDIwNjIyLCAKKyAgICAyMDYyNiwgMjA2MzEsIDIwNjM2LCAyMDY0MCwgMjA2NDQsIDIwNjQ4LCAyMDY1MiwgMjA2NTYsIDIwNjYwLCAyMDY2NCwgCisgICAgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIAorICAgIDIwNzA4LCAyMDcxMiwgMjA3MTYsIDIwNzIwLCAyMDcyNCwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAKKyAgICAyMDc0OCwgMjA3NTIsIDIwNzU2LCAyMDc2MCwgMjA3NjQsIDIwNzY4LCAyMDc3MiwgMjA3NzYsIDIwNzgwLCAyMDc4NCwgCisgICAgMjA3ODgsIDIwNzkyLCAyMDc5NiwgMjA4MDAsIDIwODA0LCAyMDgwOCwgMjA4MTIsIDIwODE2LCAyMDgyMCwgMjA4MjQsIAorICAgIDIwODI4LCAyMDgzMiwgMjA4MzYsIDIwODQwLCAyMDg0NCwgMjA4NDgsIDIwODUyLCAyMDg1NiwgMjA4NjAsIDIwODY0LCAKKyAgICAyMDg2OCwgMjA4NzIsIDIwODc2LCAyMDg4MCwgMjA4ODQsIDIwODg4LCAyMDg5MiwgMjA4OTYsIDIwOTAwLCAyMDkwNCwgCisgICAgMjA5MDgsIDIwOTEyLCAyMDkxNiwgMjA5MjAsIDIwOTI0LCAyMDkyOCwgMjA5MzIsIDIwOTM2LCAyMDk0MCwgMjA5NDQsIAorICAgIDIwOTQ4LCAyMDk1MiwgMjA5NTYsIDIwOTYwLCAyMDk2NCwgMjA5NjgsIDIwOTcyLCAyMDk3NiwgMjA5ODAsIDIwOTg0LCAKKyAgICAyMDk4OCwgMjA5OTIsIDIwOTk2LCAyMTAwMCwgMjEwMDQsIDIxMDA4LCAyMTAxMiwgMjEwMTYsIDIxMDIwLCAyMTAyNCwgCisgICAgMjEwMjcsIDIxMDMxLCAyMTAzNCwgMjEwMzgsIDIxMDQyLCAyMTA0NSwgMjEwNDksIDIxMDUzLCAyMTA1NiwgMjEwNjAsIAorICAgIDIxMDY0LCAyMTA2OCwgMjEwNzIsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgMjEwOTUsIDIxMDk5LCAKKyAgICAyMTEwMiwgMjExMDYsIDIxMTEwLCAyMTExNCwgMjExMTgsIDIxMTIyLCAyMTEyNiwgMjExMzAsIDIxMTM0LCAyMTEzOCwgCisgICAgMjExNDIsIDIxMTQ2LCAyMTE1MCwgMjExNTQsIDIxMTU4LCAyMTE2MiwgMjExNjYsIDIxMTcwLCAyMTE3NCwgMjExNzgsIAorICAgIDIxMTgyLCAyMTE4NiwgMjExOTAsIDIxMTk0LCAyMTE5OCwgMjEyMDIsIDIxMjA2LCAyMTIxMCwgMjEyMTQsIDIxMjE4LCAKKyAgICAyMTIyMiwgMjEyMjYsIDIxMjMwLCAyMTIzNCwgMjEyMzgsIDIxMjQyLCAyMTI0NiwgMjEyNTAsIDIxMjU0LCAyMTI1OCwgCisgICAgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAyMTI5NCwgMjEyOTgsIAorICAgIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgMjEzMzQsIDIxMzM4LCAKKyAgICAyMTM0MiwgMjEzNDYsIDIxMzUwLCAyMTM1NCwgMjEzNTgsIDIxMzYyLCAyMTM2NiwgMjEzNzAsIDIxMzc0LCAyMTM3OCwgCisgICAgMjEzODIsIDIxMzg2LCAyMTM5MCwgMjEzOTQsIDIxMzk4LCAyMTQwMiwgMjE0MDYsIDIxNDEwLCAyMTQxNCwgMjE0MTgsIAorICAgIDIxNDIyLCAyMTQyNiwgMjE0MzAsIDIxNDM0LCAyMTQzOCwgMjE0NDIsIDIxNDQ2LCAyMTQ1MCwgMjE0NTQsIDIxNDU4LCAKKyAgICAyMTQ2MiwgMjE0NjYsIDIxNDcwLCAyMTQ3NCwgMjE0NzgsIDIxNDgyLCAyMTQ4NiwgMjE0OTAsIDIxNDk0LCAyMTQ5OCwgCisgICAgMjE1MDIsIDIxNTA2LCAyMTUxMCwgMjE1MTQsIDIxNTE4LCAyMTUyMiwgMjE1MjYsIDIxNTMwLCAyMTUzNCwgMjE1MzgsIAorICAgIDIxNTQyLCAyMTU0NiwgMjE1NTAsIDIxNTU0LCAyMTU1OCwgMjE1NjIsIDIxNTY2LCAyMTU3MCwgMjE1NzQsIDIxNTc4LCAKKyAgICAyMTU4MiwgMjE1ODYsIDIxNTkwLCAyMTU5NCwgMjE1OTgsIDIxNjAyLCAyMTYwNiwgMjE2MTAsIDIxNjE0LCAyMTYxOCwgCisgICAgMjE2MjIsIDIxNjI2LCAyMTYzMCwgMjE2MzQsIDIxNjM4LCAyMTY0MiwgMjE2NDYsIDIxNjUwLCAyMTY1NCwgMjE2NTcsIAorICAgIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgMjE2ODEsIDIxNjg1LCAyMTY4OCwgMjE2OTIsIDIxNjk2LCAKKyAgICAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgCisgICAgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTEsIDIxNzU1LCAyMTc1OSwgMjE3NjMsIDIxNzY3LCAyMTc3MSwgMjE3NzUsIAorICAgIDIxNzc5LCAyMTc4MywgMjE3ODcsIDIxNzkxLCAyMTc5NSwgMjE3OTksIDIxODAzLCAyMTgwNywgMjE4MTEsIDIxODE1LCAKKyAgICAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMSwgMjE4MzUsIDIxODM5LCAyMTg0MywgMjE4NDcsIDIxODUxLCAyMTg1NSwgCisgICAgMjE4NTksIDIxODYzLCAyMTg2NywgMjE4NzEsIDIxODc1LCAyMTg3OSwgMjE4ODMsIDIxODg3LCAyMTg5MSwgMjE4OTUsIAorICAgIDIxODk5LCAyMTkwMywgMjE5MDcsIDIxOTExLCAyMTkxNSwgMjE5MTksIDIxOTIzLCAyMTkyNywgMjE5MzEsIDIxOTM1LCAKKyAgICAyMTkzOSwgMCwgMjE5NDMsIDIxOTQ3LCAyMTk1MSwgMjE5NTUsIDAsIDAsIDIxOTU5LCAyMTk2MywgMjE5NjcsIDIxOTcxLCAKKyAgICAyMTk3NSwgMjE5NzksIDIxOTgzLCAwLCAyMTk4NywgMCwgMjE5OTEsIDIxOTk1LCAyMTk5OSwgMjIwMDMsIDAsIDAsIAorICAgIDIyMDA3LCAyMjAxMSwgMjIwMTUsIDIyMDE5LCAyMjAyMywgMjIwMjcsIDIyMDMxLCAyMjAzNSwgMjIwMzksIDIyMDQzLCAKKyAgICAyMjA0NywgMjIwNTEsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAyMjA4MywgCisgICAgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTgsIDIyMTAyLCAyMjEwNiwgMjIxMTAsIDIyMTE0LCAyMjExOCwgMjIxMjIsIAorICAgIDIyMTI2LCAyMjEzMCwgMjIxMzQsIDIyMTM4LCAyMjE0MiwgMjIxNDYsIDIyMTUwLCAyMjE1NCwgMjIxNTgsIDIyMTYyLCAKKyAgICAyMjE2NiwgMCwgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIDAsIDAsIDIyMTg2LCAyMjE4OSwgMjIxOTMsIDIyMTk3LCAKKyAgICAyMjIwMSwgMjIyMDUsIDIyMjA5LCAyMjIxMywgMjIyMTcsIDIyMjIxLCAyMjIyNSwgMjIyMjksIDIyMjMzLCAyMjIzNywgCisgICAgMjIyNDEsIDIyMjQ1LCAyMjI0OSwgMjIyNTQsIDIyMjU5LCAyMjI2NCwgMjIyNzAsIDIyMjc2LCAyMjI4MSwgMjIyODYsIAorICAgIDIyMjkyLCAyMjI5NSwgMjIyOTksIDIyMzAzLCAyMjMwNywgMjIzMTEsIDIyMzE1LCAyMjMxOSwgMjIzMjMsIDAsIDIyMzI3LCAKKyAgICAyMjMzMSwgMjIzMzUsIDIyMzM5LCAwLCAwLCAyMjM0MywgMjIzNDcsIDIyMzUxLCAyMjM1NSwgMjIzNTksIDIyMzYzLCAKKyAgICAyMjM2NywgMCwgMjIzNzEsIDAsIDIyMzc1LCAyMjM3OSwgMjIzODMsIDIyMzg3LCAwLCAwLCAyMjM5MSwgMjIzOTUsIAorICAgIDIyMzk5LCAyMjQwMywgMjI0MDcsIDIyNDExLCAyMjQxNSwgMjI0MTksIDIyNDIzLCAyMjQyOCwgMjI0MzMsIDIyNDM4LCAKKyAgICAyMjQ0NCwgMjI0NTAsIDIyNDU1LCAwLCAyMjQ2MCwgMjI0NjQsIDIyNDY4LCAyMjQ3MiwgMjI0NzYsIDIyNDgwLCAyMjQ4NCwgCisgICAgMjI0ODgsIDIyNDkyLCAyMjQ5NiwgMjI1MDAsIDIyNTA0LCAyMjUwOCwgMjI1MTIsIDIyNTE2LCAyMjUyMCwgMjI1MjQsIAorICAgIDIyNTI3LCAyMjUzMSwgMjI1MzUsIDIyNTM5LCAyMjU0MywgMjI1NDcsIDIyNTUxLCAyMjU1NSwgMjI1NTksIDIyNTYzLCAKKyAgICAyMjU2NywgMjI1NzEsIDIyNTc1LCAyMjU3OSwgMjI1ODMsIDIyNTg3LCAyMjU5MSwgMjI1OTUsIDIyNTk5LCAyMjYwMywgCisgICAgMjI2MDcsIDIyNjExLCAyMjYxNSwgMjI2MTksIDIyNjIzLCAyMjYyNywgMjI2MzEsIDIyNjM1LCAyMjYzOSwgMjI2NDMsIAorICAgIDIyNjQ3LCAyMjY1MSwgMjI2NTUsIDIyNjU5LCAyMjY2MywgMjI2NjcsIDIyNjcxLCAyMjY3NSwgMjI2NzksIDIyNjgzLCAwLCAKKyAgICAyMjY4NywgMjI2OTEsIDIyNjk1LCAyMjY5OSwgMCwgMCwgMjI3MDMsIDIyNzA3LCAyMjcxMSwgMjI3MTUsIDIyNzE5LCAKKyAgICAyMjcyMywgMjI3MjcsIDIyNzMxLCAyMjczNSwgMjI3MzksIDIyNzQzLCAyMjc0NywgMjI3NTEsIDIyNzU1LCAyMjc1OSwgCisgICAgMjI3NjMsIDIyNzY3LCAyMjc3MSwgMjI3NzUsIDIyNzc5LCAyMjc4MywgMjI3ODcsIDIyNzkxLCAyMjc5NSwgMjI3OTksIAorICAgIDIyODAzLCAyMjgwNywgMjI4MTEsIDIyODE1LCAyMjgxOSwgMjI4MjMsIDIyODI3LCAyMjgzMSwgMjI4MzUsIDIyODM5LCAKKyAgICAyMjg0MywgMjI4NDcsIDIyODUxLCAyMjg1NSwgMjI4NTksIDIyODYzLCAyMjg2NywgMjI4NzEsIDIyODc1LCAyMjg3OSwgCisgICAgMjI4ODMsIDIyODg3LCAyMjg5MSwgMjI4OTUsIDIyODk5LCAyMjkwMywgMjI5MDcsIDIyOTExLCAyMjkxNSwgMjI5MTksIAorICAgIDIyOTIzLCAyMjkyNywgMjI5MzAsIDIyOTM0LCAyMjkzOCwgMjI5NDIsIDIyOTQ2LCAyMjk1MCwgMjI5NTQsIDIyOTU4LCAKKyAgICAyMjk2MiwgMjI5NjYsIDAsIDAsIDIyOTcwLCAyMjk3OSwgMjI5ODUsIDIyOTkwLCAyMjk5NCwgMjI5OTcsIDIzMDAyLCAKKyAgICAyMzAwNSwgMjMwMDgsIDIzMDExLCAyMzAxNiwgMjMwMjAsIDIzMDI1LCAyMzAyOCwgMjMwMzEsIDIzMDM0LCAyMzAzNywgCisgICAgMjMwNDAsIDIzMDQzLCAyMzA0NywgMjMwNTAsIDIzMDU0LCAyMzA1OCwgMjMwNjIsIDIzMDY2LCAyMzA3MCwgMjMwNzQsIAorICAgIDIzMDc4LCAyMzA4MiwgMjMwODYsIDIzMDkwLCAyMzA5NCwgMCwgMCwgMCwgMjMxMDAsIDIzMTA2LCAyMzExMCwgMjMxMTQsIAorICAgIDIzMTE4LCAyMzEyNCwgMjMxMjgsIDIzMTMyLCAyMzEzNiwgMjMxNDIsIDIzMTQ2LCAyMzE1MCwgMjMxNTQsIDIzMTYwLCAKKyAgICAyMzE2NCwgMjMxNjgsIDIzMTcyLCAyMzE3OCwgMjMxODQsIDIzMTkwLCAyMzE5OCwgMjMyMDQsIDIzMjEwLCAyMzIxNiwgCisgICAgMjMyMjIsIDIzMjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAyMzIzNCwgMjMyMzcsIDIzMjQwLCAyMzI0MywgMjMyNDYsIDIzMjQ5LCAKKyAgICAyMzI1MywgMjMyNTcsIDIzMjYwLCAyMzI2NCwgMjMyNjgsIDIzMjcyLCAyMzI3NiwgMjMyODAsIDIzMjgzLCAyMzI4NywgCisgICAgMjMyOTEsIDIzMjk1LCAyMzI5OSwgMjMzMDMsIDIzMzA2LCAyMzMxMCwgMjMzMTQsIDIzMzE4LCAyMzMyMiwgMjMzMjYsIAorICAgIDIzMzI5LCAyMzMzMywgMjMzMzcsIDIzMzQxLCAyMzM0NSwgMjMzNDgsIDIzMzUyLCAyMzM1NiwgMjMzNjAsIDIzMzY0LCAKKyAgICAyMzM2OCwgMjMzNzIsIDIzMzc2LCAyMzM4MCwgMjMzODQsIDIzMzg4LCAyMzM5MiwgMjMzOTYsIDIzNDAwLCAyMzQwNCwgCisgICAgMjM0MDgsIDIzNDEyLCAyMzQxNiwgMjM0MjAsIDIzNDI0LCAyMzQyOCwgMjM0MzIsIDIzNDM2LCAyMzQ0MCwgMjM0NDQsIAorICAgIDIzNDQ4LCAyMzQ1MiwgMjM0NTYsIDIzNDYwLCAyMzQ2NCwgMjM0NjgsIDIzNDcyLCAyMzQ3NiwgMjM0ODAsIDIzNDg0LCAKKyAgICAyMzQ4OCwgMjM0OTIsIDIzNDk2LCAyMzUwMCwgMjM1MDQsIDIzNTA4LCAyMzUxMiwgMjM1MTYsIDIzNTIwLCAyMzUyNCwgCisgICAgMjM1MjgsIDIzNTMyLCAyMzUzNiwgMjM1NDAsIDIzNTQzLCAyMzU0NywgMjM1NTEsIDIzNTU1LCAyMzU1OSwgMjM1NjMsIDAsIAorICAgIDAsIDIzNTY3LCAyMzU3MiwgMjM1NzcsIDIzNTgyLCAyMzU4NywgMjM1OTIsIDAsIDAsIDIzNTk3LCAyMzYwMSwgMjM2MDQsIAorICAgIDIzNjA4LCAyMzYxMSwgMjM2MTUsIDIzNjE4LCAyMzYyMiwgMjM2MjgsIDIzNjMzLCAyMzYzNywgMjM2NDAsIDIzNjQ0LCAKKyAgICAyMzY0OCwgMjM2NTQsIDIzNjU4LCAyMzY2NCwgMjM2NjgsIDIzNjc0LCAyMzY3OCwgMjM2ODQsIDIzNjg4LCAyMzY5NCwgCisgICAgMjM3MDAsIDIzNzA0LCAyMzcxMCwgMjM3MTQsIDIzNzIwLCAyMzcyNiwgMjM3MzAsIDIzNzM2LCAyMzc0MiwgMjM3NDYsIAorICAgIDIzNzUxLCAyMzc1OSwgMjM3NjcsIDIzNzc0LCAyMzc3OSwgMjM3ODQsIDIzNzkzLCAyMzc5OSwgMjM4MDcsIDIzODEyLCAKKyAgICAyMzgxOCwgMjM4MjIsIDIzODI2LCAyMzgzMCwgMjM4MzQsIDIzODM4LCAyMzg0MiwgMjM4NDYsIDIzODUwLCAyMzg1NCwgCisgICAgMjM4NTgsIDIzODY0LCAyMzg2OSwgMjM4NzQsIDIzODc3LCAyMzg4MSwgMjM4ODUsIDIzODkxLCAyMzg5NSwgMjM5MDEsIAorICAgIDIzOTA1LCAyMzkxMSwgMjM5MTUsIDIzOTIxLCAyMzkyNSwgMjM5MzEsIDIzOTM1LCAyMzk0MSwgMjM5NDUsIDIzOTUxLCAKKyAgICAyMzk1NywgMjM5NjEsIDIzOTY3LCAyMzk3MiwgMjM5NzYsIDIzOTgwLCAyMzk4NCwgMjM5ODgsIDIzOTkxLCAyMzk5NSwgCisgICAgMjQwMDEsIDI0MDA2LCAyNDAxMSwgMjQwMTUsIDI0MDE5LCAyNDAyMywgMjQwMjksIDI0MDMzLCAyNDAzOSwgMjQwNDMsIAorICAgIDI0MDQ5LCAyNDA1MiwgMjQwNTcsIDI0MDYxLCAyNDA2NywgMjQwNzEsIDI0MDc3LCAyNDA4MSwgMjQwODcsIDI0MDkzLCAKKyAgICAyNDA5NywgMjQxMDEsIDI0MTA1LCAyNDEwOSwgMjQxMTMsIDI0MTE3LCAyNDEyMSwgMjQxMjUsIDI0MTI5LCAyNDEzMywgCisgICAgMjQxMzcsIDI0MTQzLCAyNDE0NiwgMjQxNTAsIDI0MTU0LCAyNDE2MCwgMjQxNjQsIDI0MTcwLCAyNDE3NCwgMjQxODAsIAorICAgIDI0MTg0LCAyNDE5MCwgMjQxOTQsIDI0MjAwLCAyNDIwNCwgMjQyMTAsIDI0MjE0LCAyNDIyMCwgMjQyMjYsIDI0MjMwLCAKKyAgICAyNDIzNCwgMjQyNDAsIDI0MjQ2LCAyNDI1MiwgMjQyNTgsIDI0MjYyLCAyNDI2NiwgMjQyNzAsIDI0Mjc0LCAyNDI3OCwgCisgICAgMjQyODIsIDI0Mjg4LCAyNDI5MiwgMjQyOTYsIDI0MzAwLCAyNDMwNiwgMjQzMTAsIDI0MzE2LCAyNDMyMCwgMjQzMjYsIAorICAgIDI0MzMwLCAyNDMzNiwgMjQzNDAsIDI0MzQ2LCAyNDM1MCwgMjQzNTYsIDI0MzYwLCAyNDM2NiwgMjQzNzIsIDI0Mzc2LCAKKyAgICAyNDM4MiwgMjQzODYsIDI0MzkwLCAyNDM5NCwgMjQzOTgsIDI0NDAyLCAyNDQwNiwgMjQ0MTIsIDI0NDE1LCAyNDQxOSwgCisgICAgMjQ0MjMsIDI0NDI5LCAyNDQzMywgMjQ0MzksIDI0NDQzLCAyNDQ0OSwgMjQ0NTMsIDI0NDU5LCAyNDQ2MywgMjQ0NjksIAorICAgIDI0NDczLCAyNDQ3OSwgMjQ0ODMsIDI0NDg5LCAyNDQ5NSwgMjQ0OTksIDI0NTA1LCAyNDUwOSwgMjQ1MTUsIDI0NTIxLCAKKyAgICAyNDUyNSwgMjQ1MjksIDI0NTMzLCAyNDUzNywgMjQ1NDEsIDI0NTQ1LCAyNDU1MSwgMjQ1NTQsIDI0NTU4LCAyNDU2MiwgCisgICAgMjQ1NjgsIDI0NTcyLCAyNDU3OCwgMjQ1ODIsIDI0NTg4LCAyNDU5NCwgMjQ1OTgsIDI0NjAzLCAyNDYwNywgMjQ2MTEsIAorICAgIDI0NjE1LCAyNDYxOSwgMjQ2MjMsIDI0NjI3LCAyNDYzMSwgMjQ2MzcsIDI0NjQwLCAyNDY0NCwgMjQ2NDgsIDI0NjU0LCAKKyAgICAyNDY1OCwgMjQ2NjQsIDI0NjY4LCAyNDY3NCwgMjQ2NzgsIDI0Njg0LCAyNDY4OCwgMjQ2OTQsIDI0Njk4LCAyNDcwNCwgCisgICAgMjQ3MDgsIDI0NzE0LCAyNDcxNywgMjQ3MjIsIDI0NzI2LCAyNDczMCwgMjQ3MzQsIDI0NzM4LCAyNDc0MiwgMjQ3NDYsIAorICAgIDI0NzUwLCAyNDc1NiwgMjQ3NjAsIDI0NzY0LCAyNDc2OCwgMjQ3NzQsIDI0Nzc4LCAyNDc4NCwgMjQ3ODgsIDI0Nzk0LCAKKyAgICAyNDc5OCwgMjQ4MDQsIDI0ODA4LCAyNDgxNCwgMjQ4MTgsIDI0ODI0LCAyNDgyOCwgMjQ4MzQsIDI0ODQwLCAyNDg0NCwgCisgICAgMjQ4NTAsIDI0ODU0LCAyNDg2MCwgMjQ4NjYsIDI0ODcyLCAyNDg3OCwgMjQ4ODQsIDI0ODkwLCAyNDg5NiwgMjQ5MDIsIAorICAgIDI0OTA2LCAyNDkxMCwgMjQ5MTQsIDI0OTE4LCAyNDkyMiwgMjQ5MjYsIDI0OTMwLCAyNDkzNCwgMjQ5NDAsIDI0OTQ0LCAKKyAgICAyNDk1MCwgMjQ5NTQsIDI0OTYwLCAyNDk2NCwgMjQ5NzAsIDI0OTc0LCAyNDk4MCwgMjQ5ODQsIDI0OTkwLCAyNDk5NCwgCisgICAgMjUwMDAsIDI1MDA0LCAyNTAwOCwgMjUwMTIsIDI1MDE2LCAyNTAyMCwgMjUwMjQsIDI1MDI4LCAyNTAzNCwgMjUwMzcsIAorICAgIDI1MDQxLCAyNTA0NSwgMjUwNTEsIDI1MDU1LCAyNTA2MSwgMjUwNjUsIDI1MDcxLCAyNTA3NSwgMjUwODEsIDI1MDg1LCAKKyAgICAyNTA5MSwgMjUwOTUsIDI1MTAxLCAyNTEwNSwgMjUxMTEsIDI1MTE3LCAyNTEyMSwgMjUxMjcsIDI1MTMzLCAyNTEzOSwgCisgICAgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNTksIDI1MTYzLCAyNTE2NywgMjUxNzEsIDI1MTc1LCAyNTE4MSwgMjUxODUsIAorICAgIDI1MTg5LCAyNTE5NCwgMjUxOTgsIDI1MjA0LCAyNTIwNywgMjUyMTIsIDI1MjE2LCAyNTIyMCwgMjUyMjQsIDI1MjI4LCAKKyAgICAyNTIzMiwgMjUyMzYsIDI1MjQwLCAyNTI0NCwgMjUyNDgsIDI1MjUyLCAyNTI1OCwgMjUyNjIsIDI1MjY2LCAyNTI3MiwgCisgICAgMjUyNzYsIDI1MjgyLCAyNTI4NiwgMjUyOTIsIDI1Mjk2LCAyNTMwMCwgMjUzMDQsIDI1MzA4LCAyNTMxMiwgMjUzMTgsIAorICAgIDI1MzIyLCAyNTMyNiwgMjUzMzAsIDI1MzM0LCAyNTMzOCwgMjUzNDIsIDI1MzQ2LCAyNTM1MCwgMjUzNTQsIDI1MzU4LCAKKyAgICAyNTM2NCwgMjUzNzAsIDI1Mzc2LCAyNTM4MiwgMjUzODgsIDI1MzkzLCAyNTM5OSwgMjU0MDUsIDI1NDExLCAyNTQxNSwgCisgICAgMjU0MTksIDI1NDIzLCAyNTQyNywgMjU0MzEsIDI1NDM1LCAyNTQzOSwgMjU0NDMsIDI1NDQ3LCAyNTQ1MSwgMjU0NTUsIAorICAgIDI1NDU5LCAyNTQ2MywgMjU0NjksIDI1NDc1LCAyNTQ4MSwgMjU0ODcsIDI1NDkxLCAyNTQ5NSwgMjU0OTksIDI1NTAzLCAKKyAgICAyNTUwNywgMjU1MTEsIDI1NTE1LCAyNTUxOSwgMjU1MjMsIDI1NTI5LCAyNTUzNSwgMjU1NDEsIDI1NTQ3LCAyNTU1MywgCisgICAgMjU1NTksIDI1NTY1LCAyNTU3MSwgMjU1NzcsIDI1NTgxLCAyNTU4NSwgMjU1ODksIDI1NTkzLCAyNTU5NywgMjU2MDEsIAorICAgIDI1NjA1LCAyNTYxMSwgMjU2MTcsIDI1NjIzLCAyNTYyOSwgMjU2MzUsIDI1NjQxLCAyNTY0NywgMjU2NTMsIDI1NjU5LCAKKyAgICAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OSwgMjU2ODUsIDI1NjkxLCAyNTY5NywgMjU3MDMsIDI1NzA5LCAyNTcxNSwgCisgICAgMjU3MjEsIDI1NzI2LCAyNTczMiwgMjU3MzgsIDI1NzQ0LCAyNTc0OSwgMjU3NTUsIDI1NzYxLCAyNTc2NywgMjU3NzIsIAorICAgIDI1Nzc3LCAyNTc4MiwgMjU3ODcsIDI1NzkyLCAyNTc5NywgMjU4MDIsIDI1ODA3LCAyNTgxMiwgMjU4MTcsIDI1ODIyLCAKKyAgICAyNTgyNywgMjU4MzIsIDI1ODM3LCAyNTg0MiwgMjU4NDcsIDI1ODUyLCAyNTg1NywgMjU4NjIsIDI1ODY3LCAyNTg3MiwgCisgICAgMjU4NzcsIDI1ODgyLCAyNTg4NywgMjU4OTIsIDI1ODk3LCAyNTkwMiwgMjU5MDcsIDI1OTEyLCAyNTkxNywgMjU5MjIsIAorICAgIDI1OTI3LCAyNTkzMiwgMjU5MzcsIDI1OTQyLCAyNTk0NywgMjU5NTIsIDI1OTU3LCAyNTk2MiwgMjU5NjcsIDI1OTcyLCAKKyAgICAyNTk3NywgMjU5ODEsIDI1OTg2LCAyNTk5MSwgMjU5OTYsIDI2MDAxLCAyNjAwNiwgMjYwMTEsIDI2MDE2LCAyNjAyMSwgCisgICAgMjYwMjYsIDI2MDMxLCAyNjAzNiwgMjYwNDEsIDI2MDQ2LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzEsIAorICAgIDI2MDc2LCAyNjA4MSwgMjYwODYsIDI2MDkxLCAyNjA5NiwgMjYxMDEsIDI2MTA2LCAyNjExMCwgMjYxMTUsIDI2MTIwLCAKKyAgICAyNjEyNSwgMjYxMzAsIDI2MTM1LCAyNjEzOSwgMjYxNDQsIDI2MTQ5LCAyNjE1NCwgMjYxNTksIDI2MTY0LCAyNjE2OCwgCisgICAgMjYxNzMsIDI2MTc5LCAyNjE4NCwgMjYxODksIDI2MTk0LCAyNjE5OSwgMjYyMDUsIDI2MjEwLCAyNjIxNSwgMjYyMjAsIAorICAgIDI2MjI1LCAyNjIzMCwgMjYyMzUsIDI2MjQwLCAyNjI0NSwgMjYyNTAsIDI2MjU1LCAyNjI2MCwgMjYyNjUsIDI2MjY5LCAKKyAgICAyNjI3NCwgMjYyNzksIDI2Mjg0LCAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzE0LCAyNjMxOSwgCisgICAgMjYzMjQsIDI2MzI5LCAyNjMzNCwgMjYzMzksIDI2MzQ0LCAyNjM0OSwgMjYzNTQsIDI2MzU5LCAyNjM2NCwgMjYzNjksIAorICAgIDI2Mzc0LCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAyNjM5NCwgMjYzOTksIDI2NDA0LCAyNjQwOSwgMjY0MTQsIDI2NDE5LCAKKyAgICAyNjQyNCwgMjY0MzAsIDI2NDM1LCAyNjQ0MCwgMjY0NDUsIDI2NDUwLCAyNjQ1NSwgMjY0NjAsIDI2NDY1LCAyNjQ3MCwgCisgICAgMjY0NzUsIDI2NDgwLCAyNjQ4NSwgMjY0OTAsIDI2NDk1LCAyNjUwMCwgMjY1MDUsIDI2NTEwLCAyNjUxNSwgMjY1MjAsIAorICAgIDI2NTI1LCAyNjUzMCwgMjY1MzUsIDI2NTQwLCAyNjU0NSwgMjY1NTAsIDI2NTU1LCAyNjU2MCwgMjY1NjUsIDI2NTcwLCAKKyAgICAyNjU3NSwgMjY1ODAsIDI2NTg1LCAyNjU5MCwgMjY1OTUsIDI2NjAwLCAyNjYwNSwgMjY2MTAsIDI2NjE1LCAyNjYyMCwgCisgICAgMjY2MjYsIDI2NjMwLCAyNjYzNCwgMjY2MzgsIDI2NjQyLCAyNjY0NiwgMjY2NTAsIDI2NjU0LCAyNjY1OCwgMjY2NjQsIAorICAgIDI2NjcwLCAyNjY3NiwgMjY2ODIsIDI2Njg4LCAyNjY5NCwgMjY3MDAsIDI2NzA3LCAyNjcxMywgMjY3MTgsIDI2NzIzLCAKKyAgICAyNjcyOCwgMjY3MzMsIDI2NzM4LCAyNjc0MywgMjY3NDgsIDI2NzUzLCAyNjc1OCwgMjY3NjMsIDI2NzY4LCAyNjc3MywgCisgICAgMjY3NzgsIDI2NzgzLCAyNjc4OCwgMjY3OTMsIDI2Nzk4LCAyNjgwMywgMjY4MDgsIDI2ODEzLCAyNjgxOCwgMjY4MjMsIAorICAgIDI2ODI4LCAyNjgzMywgMjY4MzgsIDI2ODQzLCAyNjg0OCwgMjY4NTMsIDAsIDAsIDAsIDI2ODYwLCAyNjg3MSwgMjY4NzYsIAorICAgIDI2ODg0LCAyNjg4OSwgMjY4OTQsIDI2ODk5LCAyNjkwOCwgMjY5MTMsIDI2OTE5LCAyNjkyNSwgMjY5MzEsIDI2OTM2LCAKKyAgICAyNjk0MiwgMjY5NDgsIDI2OTUyLCAyNjk1NywgMjY5NjIsIDI2OTcyLCAyNjk3NywgMjY5ODIsIDI2OTg5LCAyNjk5NCwgCisgICAgMjY5OTksIDI3MDA4LCAyNzAxMywgMjcwMjIsIDI3MDI5LCAyNzAzNiwgMjcwNDMsIDI3MDUwLCAyNzA2MSwgMjcwNjgsIAorICAgIDI3MDczLCAyNzA4MywgMjcwODcsIDI3MDk0LCAyNzA5OSwgMjcxMDYsIDI3MTEyLCAyNzExOSwgMjcxMjgsIDI3MTM1LCAKKyAgICAyNzE0MiwgMjcxNTEsIDI3MTU4LCAyNzE2MywgMjcxNjgsIDI3MTc5LCAyNzE4NiwgMjcxOTEsIDI3MjAyLCAyNzIwOSwgCisgICAgMjcyMTQsIDI3MjE5LCAyNzIyNywgMjcyMzYsIDI3MjQzLCAyNzI1MCwgMjcyNjAsIDI3MjY1LCAyNzI3MCwgMjcyNzUsIAorICAgIDI3Mjg0LCAyNzI5MiwgMjcyOTcsIDI3MzAyLCAyNzMwNywgMjczMTIsIDI3MzE3LCAyNzMyMiwgMjczMjcsIDI3MzMyLCAKKyAgICAyNzMzNywgMjczNDIsIDI3MzQ3LCAyNzM1MywgMjczNTksIDI3MzY1LCAyNzM3MCwgMjczNzUsIDI3MzgwLCAyNzM4NSwgCisgICAgMjczOTAsIDI3Mzk1LCAyNzQwNCwgMjc0MTMsIDI3NDIyLCAyNzQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0NDAsIAorICAgIDI3NDQ0LCAyNzQ0OCwgMjc0NTIsIDI3NDU2LCAyNzQ2MSwgMjc0NjYsIDI3NDcxLCAyNzQ3NiwgMjc0ODAsIDI3NDg0LCAKKyAgICAyNzQ4OSwgMjc0OTMsIDAsIDI3NDk3LCAyNzUwMSwgMjc1MDYsIDI3NTExLCAyNzUxNSwgMjc1MjAsIDI3NTI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUzMCwgMjc1MzQsIDI3NTM4LCAyNzU0MiwgMjc1NDYsIDI3NTUxLCAKKyAgICAyNzU1NiwgMjc1NjEsIDI3NTY2LCAyNzU3MCwgMjc1NzQsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkyLCAyNzU5NiwgCisgICAgMjc2MDEsIDI3NjA2LCAyNzYxMCwgMjc2MTUsIDI3NjIwLCAyNzYyNSwgMjc2MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3NjM2LCAyNzY0MCwgMjc2NDQsIDI3NjQ4LCAyNzY1MiwgMjc2NTcsIDI3NjYyLCAyNzY2NywgMjc2NzIsIDI3Njc2LCAKKyAgICAyNzY4MCwgMjc2ODUsIDI3Njg5LCAyNzY5MywgMjc2OTgsIDI3NzAyLCAyNzcwNywgMjc3MTIsIDI3NzE2LCAyNzcyMSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3MjYsIDI3NzMwLCAyNzczNCwgMjc3MzgsIDI3NzQyLCAKKyAgICAyNzc0NywgMjc3NTIsIDI3NzU3LCAyNzc2MiwgMjc3NjYsIDI3NzcwLCAyNzc3NSwgMjc3NzksIDAsIDI3NzgzLCAyNzc4NywgCisgICAgMjc3OTIsIDAsIDI3Nzk3LCAyNzgwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4MDcsIDI3ODEwLCAKKyAgICAyNzgxNCwgMjc4MTgsIDI3ODIyLCAyNzgyNiwgMjc4MzAsIDI3ODM0LCAyNzgzOCwgMjc4NDIsIDI3ODQ2LCAyNzg1MCwgCisgICAgMjc4NTQsIDI3ODU4LCAyNzg2MiwgMjc4NjYsIDI3ODcwLCAyNzg3NCwgMjc4NzcsIDI3ODgxLCAyNzg4NSwgMjc4ODksIAorICAgIDI3ODkzLCAyNzg5NywgMjc5MDEsIDI3OTA1LCAyNzkwOSwgMjc5MTMsIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAKKyAgICAyNzkzMywgMjc5MzYsIDI3OTM5LCAyNzk0MywgMjc5NDksIDI3OTU1LCAyNzk2MSwgMjc5NjcsIDI3OTczLCAyNzk3OSwgCisgICAgMjc5ODUsIDI3OTkxLCAyNzk5NywgMjgwMDMsIDI4MDA5LCAyODAxNSwgMjgwMjEsIDI4MDI3LCAyODAzNiwgMjgwNDUsIAorICAgIDI4MDUxLCAyODA1NywgMjgwNjMsIDI4MDY4LCAyODA3MiwgMjgwNzcsIDI4MDgyLCAyODA4NywgMjgwOTEsIDI4MDk2LCAKKyAgICAyODEwMSwgMjgxMDYsIDI4MTEwLCAyODExNSwgMjgxMTksIDI4MTI0LCAyODEyOSwgMjgxMzQsIDI4MTM5LCAyODE0MywgCisgICAgMjgxNDcsIDI4MTUxLCAyODE1NSwgMjgxNTksIDI4MTYzLCAyODE2NywgMjgxNzEsIDI4MTc1LCAyODE3OSwgMjgxODUsIAorICAgIDI4MTg5LCAyODE5MywgMjgxOTcsIDI4MjAxLCAyODIwNSwgMjgyMTMsIDI4MjE5LCAyODIyMywgMjgyMjksIDI4MjMzLCAKKyAgICAyODIzOSwgMjgyNDMsIDAsIDAsIDI4MjQ3LCAyODI1MSwgMjgyNTQsIDI4MjU3LCAyODI2MCwgMjgyNjMsIDI4MjY2LCAKKyAgICAyODI2OSwgMjgyNzMsIDI4Mjc2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODI4MCwgMjgyODgsIDI4Mjk2LCAyODMwNCwgMjgzMTIsIAorICAgIDI4MzIwLCAyODMyOCwgMjgzMzYsIDI4MzQ0LCAyODM1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMjgzNjAsIDI4MzYzLCAyODM2NiwgCisgICAgMjgzNjksIDI4Mzc0LCAyODM3NywgMjgzODIsIDI4Mzg5LCAyODM5NywgMjg0MDIsIDI4NDA5LCAyODQxMiwgMjg0MTksIAorICAgIDI4NDI2LCAyODQzMywgMCwgMjg0MzcsIDI4NDQxLCAyODQ0NCwgMjg0NDcsIDI4NDUwLCAyODQ1MywgMjg0NTYsIDI4NDU5LCAKKyAgICAyODQ2MywgMjg0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NDcwLCAyODQ3MywgMjg0NzYsIDI4NDc5LCAyODQ4MiwgMjg0ODUsIAorICAgIDI4NDg5LCAyODQ5MywgMjg0OTcsIDI4NTAwLCAyODUwNCwgMjg1MDgsIDI4NTExLCAyODUxNSwgMjg1MTksIDI4NTIyLCAKKyAgICAyODUyNSwgMjg1MjksIDI4NTMzLCAyODUzNywgMjg1NDEsIDI4NTQ1LCAyODU0OSwgMjg1NTIsIDI4NTU2LCAyODU2MCwgCisgICAgMjg1NjQsIDI4NTY3LCAyODU3MSwgMjg1NzUsIDI4NTc5LCAyODU4MywgMjg1ODcsIDI4NTkxLCAyODU5NSwgMjg1OTksIAorICAgIDI4NjA2LCAyODYxMSwgMjg2MTYsIDI4NjIxLCAyODYyNiwgMjg2MzIsIDI4NjM4LCAyODY0NCwgMjg2NTAsIDI4NjU1LCAKKyAgICAyODY2MSwgMjg2NjcsIDI4NjcyLCAyODY3OCwgMjg2ODQsIDI4NjkwLCAyODY5NiwgMjg3MDIsIDI4NzA3LCAyODcxMywgCisgICAgMjg3MTgsIDI4NzI0LCAyODczMCwgMjg3MzYsIDI4NzQyLCAyODc0OCwgMjg3NTMsIDI4NzU4LCAyODc2NCwgMjg3NzAsIAorICAgIDI4Nzc1LCAyODc4MSwgMjg3ODYsIDI4NzkyLCAyODc5NywgMjg4MDIsIDI4ODA4LCAyODgxNCwgMjg4MjAsIDI4ODI2LCAKKyAgICAyODgzMiwgMjg4MzgsIDI4ODQ0LCAyODg1MCwgMjg4NTYsIDI4ODYyLCAyODg2OCwgMjg4NzQsIDI4ODc5LCAyODg4NCwgCisgICAgMjg4OTAsIDI4ODk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODkwMiwgMjg5MTEsIDI4OTIwLCAyODkyOCwgMjg5MzYsIAorICAgIDI4OTQ2LCAyODk1NCwgMjg5NjMsIDI4OTcwLCAyODk3NywgMjg5ODQsIDI4OTkyLCAyOTAwMCwgMjkwMDgsIDI5MDE2LCAKKyAgICAyOTAyNCwgMjkwMzIsIDI5MDQwLCAyOTA0OCwgMjkwNTUsIDI5MDYzLCAyOTA3MSwgMjkwNzksIDI5MDg3LCAyOTA5NSwgCisgICAgMjkxMDUsIDI5MTE1LCAyOTEyNSwgMjkxMzUsIDI5MTQ1LCAyOTE1NSwgMjkxNjUsIDI5MTc1LCAyOTE4NSwgMjkxOTUsIAorICAgIDI5MjA1LCAyOTIxNSwgMjkyMjUsIDI5MjM1LCAyOTI0MywgMjkyNTEsIDI5MjYxLCAyOTI2OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjkyNzksIDI5MjgzLCAyOTI4NywgMjkyOTEsIDI5Mjk1LCAyOTI5OSwgMjkzMDMsIDI5MzA3LCAyOTMxMSwgMjkzMTUsIAorICAgIDI5MzE5LCAyOTMyMywgMjkzMjcsIDI5MzMxLCAyOTMzNSwgMjkzMzksIDI5MzQzLCAyOTM0NywgMjkzNTEsIDI5MzU1LCAKKyAgICAyOTM1OSwgMjkzNjMsIDI5MzY3LCAyOTM3MSwgMjkzNzcsIDI5MzgxLCAyOTM4NywgMjkzOTEsIDI5Mzk3LCAyOTQwMSwgCisgICAgMjk0MDcsIDI5NDExLCAyOTQxNSwgMjk0MTksIDI5NDIzLCAyOTQyNywgMjk0MzEsIDI5NDM3LCAyOTQ0MywgMjk0NDksIAorICAgIDI5NDU1LCAyOTQ2MSwgMjk0NjcsIDI5NDczLCAyOTQ3OSwgMjk0ODUsIDI5NDkxLCAyOTQ5NywgMjk1MDQsIDI5NTEwLCAKKyAgICAyOTUxNiwgMjk1MjIsIDI5NTI2LCAyOTUzMCwgMjk1MzQsIDI5NTM4LCAyOTU0MiwgMjk1NDYsIDI5NTUwLCAyOTU1NiwgCisgICAgMjk1NjIsIDI5NTY4LCAyOTU3MywgMjk1ODAsIDI5NTg1LCAyOTU5MCwgMjk1OTYsIDI5NjAxLCAyOTYwOCwgMjk2MTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NjIyLCAyOTYyOCwgMjk2MzIsIDI5NjM3LCAyOTY0MiwgMjk2NDcsIAorICAgIDI5NjUyLCAyOTY1NywgMjk2NjIsIDI5NjY3LCAyOTY3MiwgMjk2NzcsIDI5NjgyLCAyOTY4NywgMjk2OTIsIDI5Njk3LCAKKyAgICAyOTcwMSwgMjk3MDUsIDI5NzEwLCAyOTcxNSwgMjk3MjAsIDI5NzI0LCAyOTcyOCwgMjk3MzMsIDI5NzM3LCAyOTc0MiwgCisgICAgMjk3NDcsIDI5NzUyLCAyOTc1NywgMjk3NjEsIDI5NzY2LCAwLCAyOTc3MSwgMjk3NzYsIDI5NzgxLCAyOTc4NiwgMjk3OTIsIAorICAgIDI5Nzk4LCAyOTgwNCwgMjk4MTAsIDI5ODE1LCAyOTgyMCwgMjk4MjYsIDI5ODMzLCAwLCAwLCAwLCAwLCAyOTg0MCwgCisgICAgMjk4NDUsIDI5ODUxLCAyOTg1NywgMjk4NjMsIDI5ODY4LCAyOTg3MywgMjk4NzgsIDI5ODg0LCAyOTg4OSwgMjk4OTQsIAorICAgIDI5ODk5LCAwLCAwLCAwLCAwLCAyOTkwNCwgMCwgMCwgMCwgMjk5MDksIDI5OTE0LCAyOTkxOSwgMjk5MjQsIDI5OTI4LCAKKyAgICAyOTkzMiwgMjk5MzYsIDI5OTQwLCAyOTk0NCwgMjk5NDgsIDI5OTUzLCAyOTk1NywgMjk5NjIsIDI5OTY3LCAyOTk3MywgCisgICAgMjk5NzksIDI5OTg1LCAyOTk5MSwgMjk5OTYsIDMwMDAyLCAzMDAwOCwgMzAwMTMsIDMwMDE4LCAzMDAyNCwgMzAwMjksIAorICAgIDMwMDM1LCAzMDA0MSwgMzAwNDYsIDMwMDUyLCAzMDA1OCwgMzAwNjQsIDMwMDY5LCAzMDA3NCwgMzAwNzksIDMwMDg1LCAKKyAgICAzMDA5MSwgMzAwOTYsIDMwMTAyLCAzMDEwNywgMzAxMTMsIDMwMTE4LCAzMDEyNCwgMCwgMCwgMzAxMzAsIDMwMTM2LCAKKyAgICAzMDE0MiwgMzAxNDgsIDMwMTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDE2MCwgMzAxNjksIAorICAgIDMwMTc4LCAzMDE4NiwgMzAxOTUsIDMwMjA0LCAzMDIxMiwgMzAyMjEsIDMwMjMwLCAzMDIzOSwgMzAyNDgsIDMwMjU2LCAKKyAgICAzMDI2NSwgMzAyNzQsIDMwMjgyLCAzMDI5MSwgMzAzMDAsIDMwMzA4LCAzMDMxNywgMzAzMjYsIDMwMzM0LCAzMDM0MiwgCisgICAgMzAzNTEsIDMwMzU5LCAzMDM2NywgMzAzNzYsIDMwMzg0LCAzMDM5MywgMzA0MDIsIDMwNDEwLCAzMDQxOSwgMzA0MjgsIAorICAgIDMwNDM2LCAzMDQ0NCwgMzA0NTMsIDMwNDYyLCAzMDQ3MCwgMzA0NzksIDMwNDg4LCAzMDQ5NywgMzA1MDYsIDMwNTE1LCAKKyAgICAzMDUyNCwgMzA1MzMsIDAsIDAsIDAsIDAsIDMwNTQyLCAzMDU1MiwgMzA1NjEsIDMwNTcwLCAzMDU3OCwgMzA1ODcsIAorICAgIDMwNTk1LCAzMDYwNCwgMzA2MTIsIDMwNjIxLCAzMDYzMCwgMzA2MzksIDMwNjQ4LCAzMDY1NywgMzA2NjYsIDMwNjc1LCAKKyAgICAzMDY4NCwgMzA2OTMsIDMwNzAyLCAzMDcxMSwgMzA3MjAsIDMwNzI5LCAzMDczOCwgMzA3NDcsIDMwNzU2LCAzMDc2NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzA3NzIsIDMwNzgwLCAzMDc4NywgMzA3OTQsIDMwODAxLCAzMDgwOCwgMzA4MTUsIDMwODIyLCAKKyAgICAzMDgzMCwgMzA4MzcsIDMwODQ1LCAwLCAwLCAwLCAzMDg1MywgMzA4NjEsIDMwODY5LCAzMDg3MywgMzA4NzksIDMwODg1LCAKKyAgICAzMDg5MSwgMzA4OTcsIDMwOTAzLCAzMDkwOSwgMzA5MTUsIDMwOTIxLCAzMDkyNywgMzA5MzMsIDMwOTM5LCAzMDk0NSwgCisgICAgMzA5NTEsIDMwOTU3LCAzMDk2MywgMzA5NjcsIDMwOTczLCAzMDk3OSwgMzA5ODUsIDMwOTkxLCAzMDk5NywgMzEwMDMsIAorICAgIDMxMDA5LCAzMTAxNSwgMzEwMjEsIDMxMDI3LCAzMTAzMywgMzEwMzksIDMxMDQ1LCAzMTA1MSwgMzEwNTcsIDMxMDYxLCAKKyAgICAzMTA2NiwgMzEwNzEsIDMxMDc2LCAzMTA4MCwgMzEwODUsIDMxMDg5LCAzMTA5NCwgMzEwOTksIDMxMTA0LCAzMTEwOCwgCisgICAgMzExMTMsIDMxMTE4LCAzMTEyMywgMzExMjgsIDMxMTMzLCAzMTEzNywgMzExNDIsIDMxMTQ2LCAzMTE1MSwgMzExNTYsIAorICAgIDMxMTYwLCAzMTE2NCwgMzExNjksIDMxMTc0LCAzMTE3OSwgMzExODQsIDAsIDAsIDMxMTkwLCAzMTE5NCwgMzEyMDEsIAorICAgIDMxMjA2LCAzMTIxMiwgMzEyMTgsIDMxMjIzLCAzMTIyOSwgMzEyMzUsIDMxMjQwLCAzMTI0NiwgMzEyNTIsIDMxMjU4LCAKKyAgICAzMTI2NCwgMzEyNzAsIDMxMjc1LCAzMTI4MCwgMzEyODYsIDMxMjkxLCAzMTI5NywgMzEzMDIsIDMxMzA4LCAzMTMxNCwgCisgICAgMzEzMjAsIDMxMzI2LCAzMTMzMCwgMzEzMzUsIDMxMzQwLCAzMTM0NiwgMzEzNTIsIDMxMzU3LCAzMTM2MywgMzEzNjksIAorICAgIDMxMzczLCAzMTM3OCwgMzEzODMsIDMxMzg4LCAzMTM5MywgMzEzOTcsIDMxNDAyLCAzMTQwNywgMzE0MTMsIDMxNDE5LCAKKyAgICAzMTQyNSwgMzE0MzAsIDMxNDM1LCAzMTQzOSwgMzE0NDQsIDMxNDQ4LCAzMTQ1MywgMzE0NTcsIDMxNDYyLCAzMTQ2NywgCisgICAgMzE0NzIsIDMxNDc3LCAzMTQ4NCwgMzE0OTEsIDMxNDk3LCAzMTUwNywgMzE1MTYsIDMxNTIzLCAzMTUyOSwgMzE1NDAsIAorICAgIDMxNTQ1LCAzMTU1MSwgMCwgMzE1NTcsIDMxNTYyLCAzMTU2NywgMzE1NzUsIDMxNTgxLCAzMTU4OSwgMzE1OTQsIDMxNjAwLCAKKyAgICAzMTYwNiwgMzE2MTIsIDMxNjE3LCAzMTYyMywgMzE2MjgsIDMxNjM1LCAzMTY0MSwgMzE2NDYsIDMxNjUyLCAzMTY1OCwgCisgICAgMzE2NjQsIDMxNjcxLCAzMTY3OCwgMzE2ODUsIDMxNjkwLCAzMTY5NSwgMzE3MDIsIDMxNzA5LCAzMTcxNiwgMzE3MjMsIAorICAgIDMxNzMwLCAwLCAwLCAzMTczNywgMzE3NDQsIDMxNzUxLCAzMTc1NywgMzE3NjMsIDMxNzY5LCAzMTc3NSwgMzE3ODEsIAorICAgIDMxNzg3LCAzMTc5NCwgMzE4MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxODA3LCAzMTgxMywgMzE4MTgsIDMxODIzLCAzMTgyOCwgCisgICAgMzE4MzMsIDMxODM4LCAzMTg0MywgMzE4NDksIDMxODU0LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTg2MCwgMzE4NjUsIDMxODcwLCAKKyAgICAzMTg3NSwgMzE4ODAsIDMxODg1LCAzMTg5MCwgMzE4OTksIDMxOTA2LCAzMTkxMSwgMzE5MTYsIDMxOTIxLCAzMTkyNiwgCisgICAgMzE5MzEsIDAsIDAsIDMxOTM2LCAzMTk0MywgMzE5NDYsIDMxOTQ5LCAzMTk1MiwgMzE5NTcsIDMxOTYxLCAzMTk2NywgCisgICAgMzE5NzEsIDMxOTc2LCAzMTk4MywgMzE5OTEsIDMxOTk1LCAzMjAwMCwgMzIwMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ4LCAxMjI1NywgMTIyNjUsIAotICAgIDEyMjcyLCAxMjI4MCwgMTIyOTIsIDEyMjk5LCAxMjMwNiwgMTIzMTMsIDEyMzI1LCAxMjMzNiwgMTIzNDMsIDEyMzUxLCAKLSAgICAxMjM1NywgMTIzNjIsIDEyMzcwLCAxMjM3OCwgMTIzODYsIDEyMzkyLCAxMjQwMiwgMTI0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMDA5LCAzMjAxNSwgMzIwMjEsIDMyMDI1LCAzMjAyOSwgMzIwMzMsIAorICAgIDMyMDM3LCAzMjA0MywgMzIwNDcsIDMyMDUzLCAzMjA1NywgMzIwNjMsIDMyMDY5LCAzMjA3NywgMzIwODMsIDMyMDkxLCAKKyAgICAzMjA5NSwgMzIwOTksIDMyMTAzLCAzMjEwOSwgMzIxMTIsIDMyMTE4LCAzMjEyMiwgMzIxMjgsIDMyMTMyLCAzMjEzNiwgCisgICAgMzIxNDIsIDMyMTQ2LCAzMjE1MiwgMzIxNTYsIDMyMTYyLCAzMjE3MCwgMzIxNzgsIDMyMTg2LCAzMjE5MiwgMzIxOTYsIAorICAgIDMyMjAyLCAzMjIwNiwgMzIyMTIsIDMyMjE1LCAzMjIxOCwgMzIyMjQsIDMyMjI4LCAzMjIzNCwgMzIyMzcsIDMyMjQwLCAKKyAgICAzMjI0NCwgMzIyNDcsIDMyMjUxLCAzMjI1NywgMzIyNjMsIDMyMjY3LCAzMjI3MCwgMzIyNzQsIDMyMjc5LCAzMjI4NCwgCisgICAgMzIyOTEsIDMyMjk2LCAzMjMwMywgMzIzMTAsIDMyMzE5LCAzMjMyNiwgMzIzMzUsIDMyMzQwLCAzMjM0NywgMzIzNTQsIAorICAgIDMyMzYzLCAzMjM2OCwgMzIzNzUsIDMyMzgwLCAzMjM4NiwgMzIzOTIsIDMyMzk4LCAzMjQwNCwgMzI0MTAsIDMyNDE2LCAwLCAKKyAgICAwLCAwLCAwLCAzMjQyMiwgMzI0MjYsIDMyNDI5LCAzMjQzMiwgMzI0MzUsIDMyNDM4LCAzMjQ0MSwgMzI0NDQsIDMyNDQ4LCAKKyAgICAzMjQ1MSwgMzI0NTUsIDMyNDU4LCAzMjQ2MSwgMzI0NjQsIDMyNDY5LCAzMjQ3NCwgMzI0NzksIDMyNDgyLCAzMjQ4NywgCisgICAgMzI0OTIsIDMyNDk3LCAzMjUwMiwgMzI1MDksIDMyNTE0LCAzMjUxOSwgMzI1MjQsIDMyNTI5LCAzMjUzNiwgMzI1NDIsIAorICAgIDMyNTQ4LCAzMjU1NCwgMzI1NjAsIDMyNTY2LCAzMjU3NSwgMzI1ODQsIDMyNTkwLCAzMjU5NiwgMzI2MDQsIDMyNjEyLCAKKyAgICAzMjYyMSwgMzI2MzAsIDMyNjM4LCAzMjY0NiwgMzI2NTUsIDMyNjY0LCAwLCAwLCAwLCAzMjY3MiwgMzI2NzcsIDMyNjgyLCAKKyAgICAzMjY4NywgMzI2OTEsIDMyNjk1LCAzMjY5OSwgMzI3MDQsIDMyNzA4LCAzMjcxMiwgMzI3MTcsIDMyNzIxLCAzMjcyNiwgCisgICAgMzI3MzEsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUxLCAzMjc1NiwgMzI3NjEsIDMyNzY2LCAzMjc3MCwgMzI3NzQsIAorICAgIDMyNzc5LCAzMjc4NCwgMzI3ODksIDMyNzkzLCAzMjc5NywgMzI4MDIsIDMyODA2LCAzMjgxMSwgMzI4MTYsIDMyODIxLCAKKyAgICAzMjgyNSwgMzI4MzEsIDMyODM3LCAzMjg0MywgMzI4NDksIDMyODU1LCAzMjg2MSwgMzI4NjcsIDMyODczLCAzMjg3OSwgCisgICAgMzI4ODQsIDMyODg5LCAzMjg5NiwgMzI5MDQsIDMyOTA5LCAzMjkxNCwgMzI5MTksIDMyOTIzLCAzMjkyNywgMzI5MzEsIAorICAgIDMyOTM1LCAzMjkzOSwgMzI5NDMsIDMyOTQ4LCAzMjk1MiwgMzI5NTcsIDMyOTYxLCAzMjk2NiwgMzI5NzEsIDMyOTc2LCAKKyAgICAzMjk4MiwgMzI5ODgsIDMyOTkyLCAzMjk5OCwgMzMwMDIsIDMzMDA4LCAzMzAxNCwgMzMwMTksIDMzMDI2LCAzMzAzMCwgCisgICAgMzMwMzYsIDMzMDQwLCAzMzA0NiwgMzMwNTEsIDMzMDU4LCAzMzA2NSwgMzMwNzAsIDMzMDc3LCAzMzA4MiwgMzMwODcsIAorICAgIDMzMDkyLCAzMzA5OSwgMzMxMDMsIDMzMTA5LCAzMzExNiwgMzMxMjMsIDMzMTI4LCAzMzEzNSwgMzMxNDIsIDMzMTQ2LCAKKyAgICAzMzE1MiwgMzMxNTcsIDMzMTYxLCAzMzE2NywgMzMxNzIsIDMzMTc3LCAzMzE4MiwgMzMxODcsIDMzMTkxLCAzMzE5NSwgCisgICAgMzMyMDAsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjIzLCAzMzIzMCwgMzMyMzUsIDMzMjQyLCAzMzI0NywgMzMyNTcsIAorICAgIDMzMjYzLCAzMzI2OSwgMzMyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMjc3LCAzMzI4NiwgMzMyOTMsIDMzMzAwLCAKKyAgICAzMzMwNywgMzMzMTEsIDMzMzE2LCAzMzMyMSwgMzMzMjYsIDMzMzMxLCAzMzMzNiwgMzMzNDEsIDMzMzQ2LCAzMzM1MSwgCisgICAgMzMzNTYsIDMzMzYxLCAzMzM2NiwgMzMzNzEsIDMzMzc1LCAzMzM3OSwgMzMzODQsIDMzMzg5LCAzMzM5NCwgMzMzOTksIAorICAgIDMzNDA0LCAzMzQwOSwgMzM0MTMsIDMzNDE4LCAzMzQyMywgMzM0MjgsIDMzNDMzLCAzMzQzNywgMzM0NDIsIDMzNDQ2LCAKKyAgICAzMzQ1MCwgMzM0NTUsIDMzNDYwLCAzMzQ2NSwgMzM0NzAsIDMzNDc1LCAzMzQ3OSwgMzM0ODUsIDMzNDkyLCAzMzQ5OCwgCisgICAgMzM1MDMsIDMzNTA4LCAzMzUxNCwgMzM1MTksIDMzNTI1LCAzMzUzMCwgMzM1MzYsIDMzNTQyLCAzMzU0NywgMzM1NTMsIAorICAgIDMzNTU5LCAzMzU2NCwgMzM1NzAsIDMzNTc2LCAzMzU4MiwgMzM1ODcsIDAsIDAsIDAsIDMzNTkyLCAzMzU5OCwgMzM2MDgsIAorICAgIDMzNjE0LCAzMzYyMiwgMzM2MjgsIDMzNjMzLCAzMzYzNywgMzM2NDEsIDMzNjQ1LCAzMzY0OSwgMzM2NTMsIDMzNjU3LCAKKyAgICAzMzY2MiwgMzM2NjYsIDAsIDAsIDAsIDMzNjcxLCAzMzY3NiwgMzM2ODEsIDMzNjg2LCAzMzY5MywgMzM2OTksIDMzNzA1LCAKKyAgICAzMzcxMSwgMzM3MTcsIDMzNzIzLCAzMzcyOSwgMzM3MzYsIDMzNzQyLCAzMzc0OSwgMzM3NTUsIDMzNzYyLCAzMzc2OSwgCisgICAgMzM3NzYsIDMzNzgzLCAzMzc5MCwgMzM3OTcsIDMzODA0LCAzMzgxMSwgMzM4MTgsIDMzODI1LCAzMzgzMiwgMzM4MzksIAorICAgIDMzODQ2LCAzMzg1MywgMzM4NjAsIDMzODY3LCAzMzg3NCwgMzM4ODEsIDMzODg4LCAzMzg5NSwgMzM5MDIsIDMzOTA5LCAKKyAgICAzMzkxNiwgMzM5MjMsIDMzOTMwLCAzMzkzNywgMzM5NDQsIDMzOTUxLCAzMzk1OCwgMzM5NjYsIDMzOTc0LCAzMzk4MiwgCisgICAgMzM5ODgsIDMzOTk0LCAzNDAwMCwgMzQwMDgsIDM0MDE3LCAzNDAyNCwgMzQwMzEsIDM0MDM3LCAzNDA0NCwgMzQwNTEsIAorICAgIDM0MDU4LCAzNDA2NiwgMzQwNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDE3LCAxMjQyMywgMTI0MjgsIAotICAgIDEyNDMzLCAxMjQzOCwgMTI0NDMsIDEyNDQ4LCAxMjQ1MywgMTI0NTgsIDEyNDYzLCAxMjQ2OCwgMTI0NzMsIDEyNDc4LCAKLSAgICAxMjQ4MywgMTI0ODcsIDEyNDkxLCAxMjQ5NSwgMTI1MDAsIDEyNTA2LCAxMjUxMiwgMTI1MTgsIDEyNTIzLCAxMjUyOCwgCi0gICAgMTI1MzMsIDEyNTM4LCAxMjU0NCwgMTI1NTMsIDEyNTYxLCAxMjU2NywgMTI1NzUsIDEyNTgxLCAxMjU4NSwgMTI1ODksIAotICAgIDEyNTkzLCAxMjU5OCwgMTI2MDEsIDEyNjA1LCAxMjYwOCwgMTI2MTIsIDEyNjE1LCAxMjYxOSwgMTI2MjMsIDEyNjI3LCAKLSAgICAxMjYzMiwgMTI2MzcsIDEyNjQwLCAxMjY0NCwgMTI2NDksIDEyNjU0LCAxMjY1NywgMTI2NjEsIDEyNjY0LCAxMjY2OCwgCi0gICAgMTI2NzIsIDEyNjc2LCAxMjY4MCwgMTI2ODQsIDEyNjg4LCAxMjY5MiwgMTI2OTYsIDEyNzAwLCAxMjcwNCwgMTI3MDgsIAotICAgIDEyNzEyLCAxMjcxNiwgMTI3MjAsIDEyNzI0LCAxMjcyOCwgMTI3MzIsIDEyNzM2LCAxMjc0MCwgMTI3NDQsIDEyNzQ3LCAKLSAgICAxMjc1MSwgMTI3NTUsIDEyNzU5LCAxMjc2MiwgMTI3NjUsIDEyNzY5LCAxMjc3MywgMTI3NzcsIDEyNzgxLCAxMjc4NSwgCi0gICAgMTI3ODksIDEyNzkzLCAxMjc5NywgMTI4MDEsIDEyODA0LCAxMjgwOSwgMTI4MTQsIDEyODE4LCAxMjgyMiwgMTI4MjcsIAotICAgIDEyODMxLCAxMjgzNiwgMTI4NDAsIDEyODQ1LCAxMjg1MCwgMTI4NTYsIDEyODYyLCAxMjg2OCwgMTI4NzIsIDEyODc3LCAKLSAgICAxMjg4MywgMTI4ODksIDEyODkzLCAxMjg5OCwgMTI5MDIsIDEyOTA4LCAxMjkxMywgMTI5MTYsIDEyOTIyLCAxMjkyOCwgCi0gICAgMTI5MzMsIDEyOTM4LCAxMjk0NSwgMTI5NTAsIDEyOTU1LCAxMjk1OSwgMTI5NjMsIDEyOTY3LCAxMjk3MSwgMTI5NzUsIAotICAgIDEyOTc5LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMjk5NywgMTMwMDIsIDEzMDA4LCAxMzAxMSwgMTMwMTUsIDEzMDE5LCAKLSAgICAxMzAyMiwgMTMwMjUsIDEzMDI4LCAxMzAzMSwgMTMwMzQsIDEzMDM3LCAxMzA0MSwgMTMwNDQsIDEzMDQ4LCAxMzA1MiwgCi0gICAgMTMwNTksIDEzMDY0LCAxMzA2OCwgMTMwNzIsIDEzMDc2LCAxMzA4MCwgMTMwODQsIDEzMDkwLCAxMzA5NCwgMTMwOTgsIAotICAgIDEzMTAyLCAxMzEwNiwgMTMxMTIsIDEzMTE2LCAxMzEyMCwgMTMxMjMsIDEzMTI3LCAxMzEzMSwgMCwgMTMxMzUsIDEzMTM4LCAKLSAgICAxMzE0MiwgMTMxNDUsIDEzMTQ5LCAxMzE1MiwgMTMxNTYsIDEzMTYwLCAwLCAwLCAxMzE2NCwgMTMxNjcsIDAsIDAsIAotICAgIDEzMTcxLCAxMzE3NCwgMTMxNzgsIDEzMTgxLCAxMzE4NSwgMTMxODksIDEzMTkzLCAxMzE5NywgMTMyMDEsIDEzMjA1LCAKLSAgICAxMzIwOSwgMTMyMTMsIDEzMjE3LCAxMzIyMSwgMTMyMjUsIDEzMjI5LCAxMzIzMywgMTMyMzcsIDEzMjQxLCAxMzI0NSwgCi0gICAgMTMyNDksIDEzMjUzLCAwLCAxMzI1NywgMTMyNjAsIDEzMjY0LCAxMzI2OCwgMTMyNzIsIDEzMjc1LCAxMzI3OCwgMCwgCi0gICAgMTMyODIsIDAsIDAsIDAsIDEzMjg2LCAxMzI5MCwgMTMyOTQsIDEzMjk4LCAwLCAwLCAxMzMwMSwgMTMzMDUsIDEzMzA5LCAKLSAgICAxMzMxNCwgMTMzMTgsIDEzMzIzLCAxMzMyNywgMTMzMzIsIDEzMzM3LCAwLCAwLCAxMzM0MywgMTMzNDcsIDAsIDAsIAotICAgIDEzMzUyLCAxMzM1NiwgMTMzNjEsIDEzMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM3MSwgMCwgMCwgMCwgMCwgCi0gICAgMTMzNzcsIDEzMzgxLCAwLCAxMzM4NSwgMTMzODksIDEzMzk0LCAxMzM5OSwgMTM0MDQsIDAsIDAsIDEzNDEwLCAxMzQxNCwgCi0gICAgMTM0MTcsIDEzNDIwLCAxMzQyMywgMTM0MjYsIDEzNDI5LCAxMzQzMiwgMTM0MzYsIDEzNDM5LCAxMzQ0MywgMTM0NTEsIAotICAgIDEzNDYwLCAxMzQ2NCwgMTM0NjgsIDEzNDc0LCAxMzQ4MCwgMTM0ODYsIDEzNDkyLCAxMzUwNiwgMTM1MTMsIDEzNTE2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUyMCwgMTM1MjcsIDEzNTMyLCAwLCAxMzUzNywgMTM1NDEsIDEzNTQ2LCAxMzU1MCwgMTM1NTUsIAotICAgIDEzNTU5LCAwLCAwLCAwLCAwLCAxMzU2NCwgMTM1NjksIDAsIDAsIDEzNTc0LCAxMzU3OSwgMTM1ODQsIDEzNTg4LCAxMzU5MywgCi0gICAgMTM1OTgsIDEzNjAzLCAxMzYwOCwgMTM2MTMsIDEzNjE4LCAxMzYyMywgMTM2MjgsIDEzNjMzLCAxMzYzOCwgMTM2NDMsIAotICAgIDEzNjQ4LCAxMzY1MywgMTM2NTgsIDEzNjYzLCAxMzY2OCwgMTM2NzMsIDEzNjc4LCAwLCAxMzY4MywgMTM2ODcsIDEzNjkyLCAKLSAgICAxMzY5NywgMTM3MDIsIDEzNzA2LCAxMzcxMCwgMCwgMTM3MTUsIDEzNzIwLCAwLCAxMzcyNSwgMTM3MzAsIDAsIDEzNzM1LCAKLSAgICAxMzc0MCwgMCwgMCwgMTM3NDQsIDAsIDEzNzQ5LCAxMzc1NSwgMTM3NjAsIDEzNzY2LCAxMzc3MSwgMCwgMCwgMCwgMCwgCi0gICAgMTM3NzcsIDEzNzgzLCAwLCAwLCAxMzc4OSwgMTM3OTUsIDEzODAxLCAwLCAwLCAwLCAxMzgwNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM4MTEsIDEzODE2LCAxMzgyMSwgMTM4MjYsIDAsIDEzODMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgzNiwgCi0gICAgMTM4NDEsIDEzODQ1LCAxMzg0OSwgMTM4NTMsIDEzODU3LCAxMzg2MSwgMTM4NjUsIDEzODcwLCAxMzg3NCwgMTM4NzksIAotICAgIDEzODgzLCAxMzg4NywgMTM4OTEsIDEzODk1LCAxMzkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM5MDYsIDEzOTExLCAxMzkxNiwgMCwgMTM5MjEsIDEzOTI1LCAxMzkzMCwgMTM5MzQsIDEzOTM5LCAxMzk0MywgMTM5NDgsIAotICAgIDEzOTUzLCAxMzk1OCwgMCwgMTM5NjQsIDEzOTY4LCAxMzk3MywgMCwgMTM5NzksIDEzOTgzLCAxMzk4OCwgMTM5OTIsIAotICAgIDEzOTk3LCAxNDAwMiwgMTQwMDcsIDE0MDEyLCAxNDAxNywgMTQwMjIsIDE0MDI3LCAxNDAzMiwgMTQwMzcsIDE0MDQyLCAKLSAgICAxNDA0NywgMTQwNTIsIDE0MDU3LCAxNDA2MiwgMTQwNjcsIDE0MDcyLCAxNDA3NywgMTQwODIsIDAsIDE0MDg3LCAxNDA5MSwgCi0gICAgMTQwOTYsIDE0MTAxLCAxNDEwNiwgMTQxMTAsIDE0MTE0LCAwLCAxNDExOSwgMTQxMjQsIDAsIDE0MTI5LCAxNDEzNCwgCi0gICAgMTQxMzksIDE0MTQ0LCAxNDE0OSwgMCwgMCwgMTQxNTMsIDE0MTU4LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODUsIDE0MTkxLCAxNDE5NywgMTQyMDQsIDAsIDE0MjExLCAxNDIxNiwgMTQyMjIsIDAsIDE0MjI5LCAxNDIzNCwgCi0gICAgMTQyNDAsIDAsIDAsIDE0MjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDI0OSwgCi0gICAgMTQyNTUsIDE0MjYxLCAxNDI2NywgMCwgMCwgMTQyNzQsIDE0Mjc5LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NSwgCi0gICAgMTQyOTksIDE0MzAzLCAxNDMwOCwgMTQzMTIsIDE0MzE3LCAxNDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMjcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzMyLCAxNDMzNiwgMTQzNDAsIDAsIDE0MzQ0LCAxNDM0NywgMTQzNTEsIDE0MzU0LCAKLSAgICAxNDM1OCwgMTQzNjEsIDE0MzY1LCAxNDM2OSwgMCwgMCwgMTQzNzMsIDE0Mzc2LCAwLCAwLCAxNDM4MCwgMTQzODMsIAotICAgIDE0Mzg3LCAxNDM5MCwgMTQzOTQsIDE0Mzk4LCAxNDQwMiwgMTQ0MDYsIDE0NDEwLCAxNDQxNCwgMTQ0MTgsIDE0NDIyLCAKLSAgICAxNDQyNiwgMTQ0MzAsIDE0NDM0LCAxNDQzOCwgMTQ0NDIsIDE0NDQ2LCAxNDQ1MCwgMTQ0NTQsIDE0NDU4LCAxNDQ2MiwgMCwgCi0gICAgMTQ0NjYsIDE0NDY5LCAxNDQ3MywgMTQ0NzcsIDE0NDgxLCAxNDQ4NCwgMTQ0ODcsIDAsIDE0NDkxLCAxNDQ5NSwgMCwgCi0gICAgMTQ0OTksIDE0NTAzLCAxNDUwNywgMTQ1MTEsIDE0NTE1LCAwLCAwLCAxNDUxOCwgMTQ1MjIsIDE0NTI2LCAxNDUzMSwgCi0gICAgMTQ1MzUsIDE0NTQwLCAxNDU0NCwgMTQ1NDksIDE0NTU0LCAwLCAwLCAxNDU2MCwgMTQ1NjQsIDAsIDAsIDE0NTY5LCAKLSAgICAxNDU3MywgMTQ1NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTgyLCAxNDU4OCwgMCwgMCwgMCwgMCwgMTQ1OTQsIAotICAgIDE0NTk4LCAwLCAxNDYwMiwgMTQ2MDYsIDE0NjExLCAxNDYxNiwgMTQ2MjEsIDAsIDAsIDE0NjI3LCAxNDYzMSwgMTQ2MzQsIAotICAgIDE0NjM3LCAxNDY0MCwgMTQ2NDMsIDE0NjQ2LCAxNDY0OSwgMTQ2NTMsIDE0NjU2LCAxNDY2MCwgMTQ2NjMsIDE0NjY3LCAKLSAgICAxNDY3MywgMTQ2NzksIDE0Njg1LCAxNDY5MSwgMTQ2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzAzLCAKLSAgICAxNDcwNywgMCwgMTQ3MTEsIDE0NzE0LCAxNDcxOCwgMTQ3MjEsIDE0NzI1LCAxNDcyOCwgMCwgMCwgMCwgMTQ3MzIsIAotICAgIDE0NzM1LCAxNDczOSwgMCwgMTQ3NDMsIDE0NzQ2LCAxNDc1MCwgMTQ3NTQsIDAsIDAsIDAsIDE0NzU3LCAxNDc2MSwgMCwgCi0gICAgMTQ3NjUsIDAsIDE0NzY5LCAxNDc3MywgMCwgMCwgMCwgMTQ3NzcsIDE0NzgxLCAwLCAwLCAwLCAxNDc4NSwgMTQ3ODksIAotICAgIDE0NzkzLCAwLCAwLCAwLCAxNDc5NiwgMTQ3OTksIDE0ODAyLCAxNDgwNiwgMTQ4MTAsIDE0ODE0LCAxNDgxOCwgMTQ4MjIsIAotICAgIDE0ODI2LCAxNDgzMCwgMTQ4MzQsIDE0ODM4LCAwLCAwLCAwLCAwLCAxNDg0MSwgMTQ4NDYsIDE0ODUwLCAxNDg1NSwgCi0gICAgMTQ4NTksIDAsIDAsIDAsIDE0ODY0LCAxNDg2OCwgMTQ4NzMsIDAsIDE0ODc4LCAxNDg4MiwgMTQ4ODcsIDE0ODkyLCAwLCAwLCAKLSAgICAxNDg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0OTA1LCAxNDkwOSwgMTQ5MTIsIDE0OTE1LCAxNDkxOCwgMTQ5MjEsIDE0OTI0LCAxNDkyNywgMTQ5MzEsIDE0OTM0LCAKLSAgICAxNDkzOCwgMTQ5NDIsIDE0OTQ3LCAxNDk1MiwgMTQ5NTYsIDE0OTYwLCAxNDk2NCwgMTQ5NjgsIDE0OTcyLCAxNDk3NywgCi0gICAgMTQ5ODEsIDAsIDAsIDAsIDAsIDAsIDE0OTg0LCAxNDk5MCwgMTQ5OTQsIDE0OTk4LCAwLCAxNTAwMiwgMTUwMDUsIDE1MDA5LCAKLSAgICAxNTAxMiwgMTUwMTYsIDE1MDE5LCAxNTAyMywgMTUwMjcsIDAsIDE1MDMxLCAxNTAzNCwgMTUwMzgsIDAsIDE1MDQyLCAKLSAgICAxNTA0NSwgMTUwNDksIDE1MDUzLCAxNTA1NiwgMTUwNjAsIDE1MDY0LCAxNTA2OCwgMTUwNzIsIDE1MDc2LCAxNTA4MCwgCi0gICAgMTUwODQsIDE1MDg4LCAxNTA5MiwgMTUwOTYsIDE1MTAwLCAxNTEwNCwgMTUxMDgsIDE1MTEyLCAxNTExNiwgMTUxMjAsIAotICAgIDE1MTI0LCAxNTEyOCwgMCwgMTUxMzIsIDE1MTM1LCAxNTEzOSwgMTUxNDMsIDE1MTQ3LCAxNTE1MCwgMTUxNTMsIDE1MTU3LCAKLSAgICAxNTE2MSwgMTUxNjUsIDE1MTY5LCAxNTE3MywgMTUxNzcsIDE1MTgxLCAxNTE4NSwgMTUxODksIDAsIDAsIDAsIDE1MTkyLCAKLSAgICAxNTE5NiwgMTUyMDEsIDE1MjA1LCAxNTIxMCwgMTUyMTQsIDE1MjE5LCAxNTIyNCwgMCwgMTUyMzAsIDE1MjM0LCAxNTIzOSwgCi0gICAgMCwgMTUyNDQsIDE1MjQ4LCAxNTI1MywgMTUyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjYyLCAxNTI2NiwgMCwgCi0gICAgMTUyNzIsIDE1Mjc2LCAxNTI4MCwgMCwgMCwgMCwgMCwgMCwgMTUyODQsIDE1Mjg5LCAxNTI5NCwgMTUyOTksIDAsIDAsIAotICAgIDE1MzA1LCAxNTMwOSwgMTUzMTIsIDE1MzE1LCAxNTMxOCwgMTUzMjEsIDE1MzI0LCAxNTMyNywgMTUzMzEsIDE1MzM0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzOCwgMTUzNTEsIDE1MzYzLCAxNTM3NSwgMTUzODcsIDE1Mzk5LCAxNTQxMSwgCi0gICAgMTU0MjMsIDAsIDE1NDI3LCAxNTQzMSwgMTU0MzUsIDAsIDE1NDM5LCAxNTQ0MiwgMTU0NDYsIDE1NDQ5LCAxNTQ1MywgCi0gICAgMTU0NTYsIDE1NDYwLCAxNTQ2NCwgMCwgMTU0NjgsIDE1NDcxLCAxNTQ3NSwgMCwgMTU0NzksIDE1NDgyLCAxNTQ4NiwgCi0gICAgMTU0OTAsIDE1NDkzLCAxNTQ5NywgMTU1MDEsIDE1NTA1LCAxNTUwOSwgMTU1MTMsIDE1NTE3LCAxNTUyMSwgMTU1MjUsIAotICAgIDE1NTI5LCAxNTUzMywgMTU1MzcsIDE1NTQxLCAxNTU0NSwgMTU1NDksIDE1NTUzLCAxNTU1NywgMTU1NjEsIDE1NTY1LCAwLCAKLSAgICAxNTU2OSwgMTU1NzIsIDE1NTc2LCAxNTU4MCwgMTU1ODQsIDE1NTg3LCAxNTU5MCwgMTU1OTQsIDE1NTk4LCAxNTYwMiwgMCwgCi0gICAgMTU2MDYsIDE1NjEwLCAxNTYxNCwgMTU2MTgsIDE1NjIyLCAwLCAwLCAxNTYyNSwgMTU2MjksIDE1NjMzLCAxNTYzOCwgCi0gICAgMTU2NDIsIDE1NjQ3LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAwLCAxNTY2NywgMTU2NzEsIDE1Njc2LCAwLCAxNTY4MSwgCi0gICAgMTU2ODUsIDE1NjkwLCAxNTY5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2OTksIDE1NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTcwOSwgMCwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDAsIDAsIDE1NzM0LCAxNTczOCwgMTU3NDEsIAotICAgIDE1NzQ0LCAxNTc0NywgMTU3NTAsIDE1NzUzLCAxNTc1NiwgMTU3NjAsIDE1NzYzLCAwLCAxNTc2NywgMTU3NzEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Nzc1LCAxNTc3OSwgMTU3ODMsIDAsIDE1Nzg3LCAxNTc5MCwgCi0gICAgMTU3OTQsIDE1Nzk3LCAxNTgwMSwgMTU4MDQsIDE1ODA4LCAxNTgxMiwgMCwgMTU4MTYsIDE1ODE5LCAxNTgyMywgMCwgCi0gICAgMTU4MjcsIDE1ODMwLCAxNTgzNCwgMTU4MzgsIDE1ODQxLCAxNTg0NSwgMTU4NDksIDE1ODUzLCAxNTg1NywgMTU4NjEsIAotICAgIDE1ODY1LCAxNTg2OSwgMTU4NzMsIDE1ODc3LCAxNTg4MSwgMTU4ODUsIDE1ODg5LCAxNTg5MywgMTU4OTcsIDE1OTAxLCAKLSAgICAxNTkwNSwgMTU5MDksIDE1OTEzLCAxNTkxNywgMTU5MjEsIDE1OTI0LCAxNTkyOCwgMTU5MzIsIDE1OTM2LCAxNTkzOSwgCi0gICAgMTU5NDIsIDE1OTQ2LCAxNTk1MCwgMTU5NTQsIDE1OTU4LCAxNTk2MiwgMTU5NjYsIDE1OTcwLCAxNTk3NCwgMTU5NzgsIAotICAgIDE1OTgxLCAwLCAwLCAxNTk4NSwgMTU5ODksIDE1OTk0LCAxNTk5OCwgMTYwMDMsIDE2MDA3LCAxNjAxMiwgMTYwMTcsIDAsIAotICAgIDE2MDIzLCAxNjAyNywgMTYwMzIsIDAsIDE2MDM3LCAxNjA0MSwgMTYwNDYsIDE2MDUxLCAxNjA1NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTYwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDY2LCAxNjA3MiwgMTYwNzcsIDE2MDgyLCAxNjA4NywgCi0gICAgMCwgMCwgMTYwOTMsIDE2MDk3LCAxNjEwMCwgMTYxMDMsIDE2MTA2LCAxNjEwOSwgMTYxMTIsIDE2MTE1LCAxNjExOSwgCi0gICAgMTYxMjIsIDE2MTI2LCAxNjEzMCwgMTYxMzUsIDE2MTQwLCAxNjE0NiwgMTYxNTIsIDAsIDAsIDAsIDE2MTU4LCAxNjE2MiwgCi0gICAgMTYxNjgsIDE2MTc0LCAxNjE4MCwgMTYxODUsIDE2MTkxLCAwLCAwLCAxNjE5NywgMTYyMDEsIDAsIDE2MjA1LCAxNjIwOSwgCi0gICAgMTYyMTMsIDE2MjE3LCAxNjIyMSwgMTYyMjUsIDE2MjI5LCAxNjIzMywgMTYyMzcsIDE2MjQxLCAxNjI0NSwgMTYyNDksIAotICAgIDE2MjUzLCAxNjI1NywgMTYyNjEsIDE2MjY1LCAxNjI2OSwgMTYyNzMsIDAsIDAsIDAsIDE2Mjc3LCAxNjI4MywgMTYyODksIAotICAgIDE2Mjk1LCAxNjMwMSwgMTYzMDcsIDE2MzEzLCAxNjMxOSwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDMsIDE2MzUxLCAKLSAgICAxNjM1NywgMTYzNjMsIDE2MzY5LCAxNjM3NSwgMTYzODEsIDE2Mzg3LCAxNjM5MywgMTYzOTksIDE2NDA1LCAxNjQxMSwgCi0gICAgMTY0MTcsIDAsIDE2NDIzLCAxNjQyOSwgMTY0MzUsIDE2NDQxLCAxNjQ0NywgMTY0NTMsIDE2NDU3LCAxNjQ2MywgMTY0NjcsIAotICAgIDAsIDE2NDcxLCAwLCAwLCAxNjQ3NywgMTY0ODEsIDE2NDg3LCAxNjQ5MywgMTY0OTksIDE2NTAzLCAxNjUwOSwgMCwgMCwgMCwgCi0gICAgMTY1MTMsIDAsIDAsIDAsIDAsIDE2NTE3LCAxNjUyMiwgMTY1MjksIDE2NTM2LCAxNjU0MywgMTY1NTAsIDAsIDE2NTU3LCAwLCAKLSAgICAxNjU2NCwgMTY1NjksIDE2NTc0LCAxNjU4MSwgMTY1ODgsIDE2NTk3LCAxNjYwOCwgMTY2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE2NjIyLCAxNjYyOCwgMTY2MzMsIDE2NjM4LCAxNjY0MywgMTY2NDgsIDE2NjUzLCAxNjY1OCwgMTY2NjQsIDE2NjY5LCAwLCAKLSAgICAwLCAxNjY3NSwgMTY2ODIsIDE2Njg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjY5NCwgMTY3MDEsIAotICAgIDE2NzA4LCAxNjcxNSwgMTY3MjIsIDE2NzI5LCAxNjczNiwgMTY3NDMsIDE2NzUwLCAxNjc1NywgMTY3NjQsIDE2NzcxLCAKLSAgICAxNjc3OCwgMTY3ODUsIDE2NzkyLCAxNjc5OSwgMTY4MDYsIDE2ODEzLCAxNjgyMCwgMTY4MjcsIDE2ODM0LCAxNjg0MSwgCi0gICAgMTY4NDgsIDE2ODU1LCAxNjg2MiwgMTY4NjksIDE2ODc2LCAxNjg4MywgMTY4OTAsIDE2ODk3LCAxNjkwNCwgMTY5MTEsIAotICAgIDE2OTE4LCAxNjkyNCwgMTY5MzEsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MiwgMTY5NjksIDE2OTc2LCAKLSAgICAxNjk4MywgMTY5OTAsIDE2OTk3LCAxNzAwMywgMTcwMTAsIDE3MDE1LCAxNzAyMSwgMTcwMjgsIDE3MDM1LCAxNzA0MiwgCi0gICAgMTcwNDgsIDE3MDU1LCAxNzA2MiwgMTcwNjksIDE3MDc1LCAxNzA4MiwgMCwgMCwgMCwgMCwgMTcwODcsIDE3MDk0LCAKLSAgICAxNzEwMCwgMTcxMDcsIDE3MTEzLCAxNzEyMiwgMTcxMzEsIDE3MTM2LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgCi0gICAgMTcxNjcsIDE3MTc0LCAxNzE3OSwgMTcxODQsIDE3MTg5LCAxNzE5NCwgMTcxOTksIDE3MjAzLCAxNzIwNywgMTcyMTEsIAotICAgIDE3MjE1LCAxNzIxOSwgMTcyMjMsIDE3MjI4LCAxNzIzMiwgMTcyMzcsIDE3MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNzI0NywgMTcyNTIsIDAsIDE3MjU5LCAwLCAwLCAxNzI2NiwgMTcyNzEsIDAsIDE3Mjc2LCAwLCAKLSAgICAwLCAxNzI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMTcyODgsIDE3MjkzLCAxNzI5NywgMTczMDQsIDAsIDE3MzExLCAxNzMxNiwgCi0gICAgMTczMjEsIDE3MzI2LCAxNzMzMywgMTczNDAsIDE3MzQ3LCAwLCAxNzM1NCwgMTczNTksIDE3MzY0LCAwLCAxNzM3MSwgMCwgCi0gICAgMTczNzgsIDAsIDAsIDE3MzgzLCAxNzM5MCwgMCwgMTczOTcsIDE3NDAxLCAxNzQwOCwgMTc0MTIsIDE3NDE3LCAxNzQyNSwgCi0gICAgMTc0MzEsIDE3NDM3LCAxNzQ0MiwgMTc0NDgsIDE3NDU0LCAxNzQ2MCwgMTc0NjUsIDAsIDE3NDcxLCAxNzQ3OSwgMTc0ODYsIAotICAgIDAsIDAsIDE3NDkzLCAxNzQ5OCwgMTc1MDQsIDE3NTA5LCAxNzUxNSwgMCwgMTc1MjEsIDAsIDE3NTI3LCAxNzUzNCwgCi0gICAgMTc1NDEsIDE3NTQ4LCAxNzU1NSwgMTc1NjAsIDAsIDAsIDE3NTY0LCAxNzU2OSwgMTc1NzMsIDE3NTc3LCAxNzU4MSwgCi0gICAgMTc1ODUsIDE3NTg5LCAxNzU5MywgMTc1OTgsIDE3NjAyLCAwLCAwLCAxNzYwNywgMTc2MTMsIDE3NjE5LCAxNzYyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc2MzMsIDE3NjM3LCAxNzY0OCwgMTc2NjMsIDE3Njc4LCAxNzY4OCwgMTc2OTksIAotICAgIDE3NzEyLCAxNzcyMywgMTc3MjksIDE3NzM3LCAxNzc0NywgMTc3NTMsIDE3NzYxLCAxNzc2NSwgMTc3NzEsIDE3Nzc3LCAKLSAgICAxNzc4NSwgMTc3OTUsIDE3ODAzLCAxNzgxNiwgMTc4MjIsIDE3ODMwLCAxNzgzOCwgMTc4NTAsIDE3ODU3LCAxNzg2NSwgCi0gICAgMTc4NzMsIDE3ODgxLCAxNzg4OSwgMTc4OTcsIDE3OTA1LCAxNzkxNSwgMTc5MTksIDE3OTIyLCAxNzkyNSwgMTc5MjgsIAotICAgIDE3OTMxLCAxNzkzNCwgMTc5MzcsIDE3OTQxLCAxNzk0NCwgMTc5NDgsIDE3OTUyLCAxNzk1NiwgMTc5NjAsIDE3OTY0LCAKLSAgICAxNzk2OCwgMTc5NzIsIDE3OTc3LCAxNzk4MSwgMTc5ODYsIDE3OTkxLCAxNzk5NywgMTgwMDcsIDE4MDIxLCAxODAzMSwgCi0gICAgMTgwMzcsIDE4MDQzLCAxODA1MSwgMTgwNTksIDE4MDY3LCAxODA3NSwgMTgwODEsIDE4MDg3LCAxODA5MCwgMTgwOTQsIAotICAgIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMCwgMTgxMTgsIDE4MTIyLCAxODEyNiwgMTgxMzAsIDE4MTM0LCAKLSAgICAxODEzOCwgMTgxNDIsIDE4MTQ2LCAxODE1MCwgMTgxNTQsIDE4MTU4LCAxODE2MiwgMTgxNjUsIDE4MTY5LCAxODE3MywgCi0gICAgMTgxNzcsIDE4MTgwLCAxODE4NCwgMTgxODgsIDE4MTkyLCAxODE5NiwgMTgyMDAsIDE4MjA0LCAxODIwOCwgMTgyMTIsIAotICAgIDE4MjE1LCAxODIxOSwgMTgyMjMsIDE4MjI3LCAxODIzMSwgMTgyMzUsIDE4MjM4LCAxODI0MSwgMTgyNDUsIDE4MjUxLCAKLSAgICAxODI1NSwgMCwgMCwgMCwgMCwgMTgyNTksIDE4MjY0LCAxODI2OCwgMTgyNzMsIDE4Mjc3LCAxODI4MiwgMTgyODcsIAotICAgIDE4MjkzLCAxODI5OCwgMTgzMDQsIDE4MzA4LCAxODMxMywgMTgzMTcsIDE4MzIyLCAxODMzMiwgMTgzMzgsIDE4MzQ0LCAKLSAgICAxODM1MSwgMTgzNjEsIDE4MzY3LCAxODM3MSwgMTgzNzUsIDE4MzgxLCAxODM4NywgMTgzOTUsIDE4NDAxLCAxODQwOSwgCi0gICAgMTg0MTcsIDE4NDI1LCAxODQzNSwgMTg0NDMsIDE4NDUzLCAxODQ1OCwgMTg0NjQsIDE4NDcwLCAxODQ3NiwgMTg0ODIsIAotICAgIDE4NDg4LCAxODQ5NCwgMCwgMTg1MDAsIDE4NTA2LCAxODUxMiwgMTg1MTgsIDE4NTI0LCAxODUzMCwgMTg1MzYsIDE4NTQyLCAKLSAgICAxODU0OCwgMTg1NTQsIDE4NTYwLCAxODU2NiwgMTg1NzEsIDE4NTc3LCAxODU4MywgMTg1ODksIDE4NTk0LCAxODYwMCwgCi0gICAgMTg2MDYsIDE4NjEyLCAxODYxOCwgMTg2MjQsIDE4NjMwLCAxODYzNiwgMTg2NDIsIDE4NjQ3LCAxODY1MywgMTg2NTksIAotICAgIDE4NjY1LCAxODY3MSwgMTg2NzcsIDE4NjgyLCAxODY4NywgMTg2OTMsIDE4NzAxLCAxODcwOCwgMCwgMTg3MTYsIDE4NzIzLCAKLSAgICAxODczNiwgMTg3NDMsIDE4NzUwLCAxODc1OCwgMTg3NjYsIDE4NzcyLCAxODc3OCwgMTg3ODQsIDE4Nzk0LCAxODc5OSwgCi0gICAgMTg4MDUsIDE4ODE1LCAxODgyNSwgMCwgMTg4MzUsIDE4ODQ1LCAxODg1MywgMTg4NjUsIDE4ODc3LCAxODg4MywgMTg4OTcsIAotICAgIDE4OTEyLCAxODkxNywgMTg5MjIsIDE4OTMwLCAxODkzOCwgMTg5NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE4OTU0LCAxODk1NywgMTg5NjEsIDE4OTY1LCAxODk2OSwgMTg5NzMsIDE4OTc3LCAxODk4MSwgMTg5ODUsIAotICAgIDE4OTg5LCAxODk5MywgMTg5OTcsIDE5MDAxLCAxOTAwNSwgMTkwMDksIDE5MDEzLCAxOTAxNywgMTkwMjEsIDE5MDI1LCAKLSAgICAxOTAyOSwgMTkwMzMsIDE5MDM3LCAxOTA0MCwgMTkwNDQsIDE5MDQ4LCAxOTA1MiwgMTkwNTUsIDE5MDU4LCAxOTA2MiwgCi0gICAgMTkwNjYsIDE5MDcwLCAxOTA3NCwgMTkwNzcsIDE5MDgxLCAxOTA4NCwgMTkwODksIDE5MDkyLCAxOTA5NiwgMTkwOTksIAotICAgIDE5MTAzLCAxOTEwNiwgMTkxMTEsIDE5MTE0LCAxOTExOCwgMTkxMjUsIDE5MTMwLCAxOTEzNCwgMTkxMzksIDE5MTQzLCAKLSAgICAxOTE0OCwgMTkxNTIsIDE5MTU3LCAxOTE2NCwgMTkxNzAsIDE5MTc1LCAxOTE3OSwgMTkxODMsIDE5MTg3LCAxOTE5MSwgCi0gICAgMTkxOTUsIDE5MjAwLCAxOTIwNiwgMTkyMTIsIDE5MjE3LCAxOTIyMywgMTkyMjcsIDE5MjMwLCAxOTIzMywgMTkyMzYsIAotICAgIDE5MjM5LCAxOTI0MiwgMTkyNDUsIDE5MjQ5LCAxOTI1MiwgMTkyNTYsIDE5MjYyLCAxOTI2NiwgMTkyNzAsIDE5Mjc0LCAKLSAgICAxOTI3OCwgMTkyODIsIDE5Mjg2LCAxOTI5MCwgMTkyOTQsIDE5Mjk5LCAxOTMwMywgMTkzMDgsIDE5MzEzLCAxOTMxOSwgCi0gICAgMTkzMjQsIDE5MzMwLCAxOTMzNiwgMTkzNDIsIDE5MzQ4LCAxOTM1NCwgMTkzNjIsIDE5MzY5LCAxOTM3NywgMTkzODUsIAotICAgIDE5Mzk0LCAxOTQwMywgMTk0MTQsIDE5NDI0LCAxOTQzNCwgMTk0NDUsIDE5NDU2LCAxOTQ2NiwgMTk0NzYsIDE5NDg2LCAKLSAgICAxOTQ5NiwgMTk1MDYsIDE5NTE2LCAxOTUyNiwgMTk1MzYsIDE5NTQ0LCAxOTU1MSwgMTk1NTcsIDE5NTY0LCAxOTU2OSwgCi0gICAgMTk1NzUsIDE5NTgxLCAxOTU4NywgMTk1OTMsIDE5NTk5LCAxOTYwNSwgMTk2MTEsIDE5NjE3LCAxOTYyMywgMTk2MjksIAotICAgIDE5NjM1LCAxOTY0MCwgMTk2NDgsIDE5NjU1LCAxOTY2MSwgMTk2NjgsIDE5Njc2LCAxOTY4MiwgMTk2ODgsIDE5Njk0LCAKLSAgICAxOTcwMCwgMTk3MDgsIDE5NzE2LCAxOTcyNiwgMTk3MzQsIDE5NzQyLCAxOTc0OCwgMTk3NTMsIDE5NzU4LCAxOTc2MywgCi0gICAgMTk3NjgsIDE5NzczLCAxOTc3OCwgMTk3ODQsIDE5Nzg5LCAxOTc5NSwgMTk4MDEsIDE5ODA3LCAxOTgxMywgMTk4MjAsIAotICAgIDE5ODI1LCAxOTgzMSwgMTk4MzYsIDE5ODQxLCAxOTg0NiwgMTk4NTEsIDE5ODU2LCAxOTg2MSwgMTk4NjYsIDE5ODcxLCAKLSAgICAxOTg3NiwgMTk4ODEsIDE5ODg2LCAxOTg5MSwgMTk4OTYsIDE5OTAxLCAxOTkwNiwgMTk5MTEsIDE5OTE2LCAxOTkyMSwgCi0gICAgMTk5MjYsIDE5OTMxLCAxOTkzNiwgMTk5NDEsIDE5OTQ2LCAxOTk1MSwgMTk5NTYsIDE5OTYxLCAxOTk2NiwgMTk5NzEsIAotICAgIDE5OTc2LCAxOTk4MSwgMTk5ODYsIDE5OTkxLCAxOTk5NiwgMjAwMDEsIDIwMDA2LCAyMDAxMSwgMjAwMTYsIDAsIDIwMDIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMDAyNiwgMCwgMCwgMjAwMzEsIDIwMDM1LCAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgCi0gICAgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIAotICAgIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAKLSAgICAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgCi0gICAgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgMjAyMDEsIDIwMjA1LCAyMDIxMCwgMjAyMTUsIAotICAgIDIwMjE5LCAyMDIyNCwgMjAyMjksIDIwMjMzLCAyMDIzNywgMjAyNDEsIDIwMjQ1LCAyMDI0OSwgMjAyNTMsIDIwMjU3LCAKLSAgICAyMDI2MSwgMjAyNjUsIDIwMjY5LCAyMDI3MywgMjAyNzcsIDIwMjgxLCAyMDI4NSwgMjAyODksIDIwMjkzLCAyMDI5NywgCi0gICAgMjAzMDEsIDIwMzA1LCAyMDMwOSwgMjAzMTMsIDIwMzE3LCAyMDMyMSwgMjAzMjUsIDIwMzI5LCAyMDMzMywgMjAzMzcsIAotICAgIDIwMzQxLCAyMDM0NSwgMjAzNDksIDIwMzUzLCAyMDM1NywgMjAzNjEsIDIwMzY1LCAyMDM2OSwgMjAzNzMsIDIwMzc3LCAKLSAgICAyMDM4MSwgMjAzODUsIDIwMzg5LCAyMDM5MywgMjAzOTcsIDIwNDAxLCAyMDQwNSwgMjA0MDksIDIwNDEzLCAyMDQxNywgCi0gICAgMjA0MjEsIDIwNDI1LCAyMDQyOSwgMjA0MzMsIDIwNDM3LCAyMDQ0MSwgMjA0NDUsIDIwNDQ5LCAyMDQ1MywgMjA0NTcsIAotICAgIDIwNDYxLCAyMDQ2NSwgMjA0NjksIDIwNDczLCAyMDQ3NywgMjA0ODEsIDIwNDg1LCAyMDQ4OSwgMjA0OTMsIDIwNDk3LCAKLSAgICAyMDUwMSwgMjA1MDUsIDIwNTA5LCAyMDUxMywgMjA1MTcsIDIwNTIxLCAyMDUyNSwgMjA1MjksIDIwNTMzLCAyMDUzNywgCi0gICAgMjA1NDEsIDIwNTQ1LCAyMDU0OSwgMjA1NTMsIDIwNTU3LCAyMDU2MSwgMjA1NjUsIDIwNTY5LCAyMDU3MywgMjA1NzcsIAotICAgIDIwNTgxLCAyMDU4NSwgMjA1ODksIDIwNTkzLCAyMDU5NywgMjA2MDEsIDIwNjA1LCAyMDYwOSwgMjA2MTMsIDIwNjE3LCAKLSAgICAyMDYyMCwgMjA2MjQsIDIwNjI3LCAyMDYzMSwgMjA2MzUsIDIwNjM4LCAyMDY0MiwgMjA2NDYsIDIwNjQ5LCAyMDY1MywgCi0gICAgMjA2NTcsIDIwNjYxLCAyMDY2NSwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIAotICAgIDIwNjk1LCAyMDY5OSwgMjA3MDMsIDIwNzA3LCAyMDcxMSwgMjA3MTUsIDIwNzE5LCAyMDcyMywgMjA3MjcsIDIwNzMxLCAKLSAgICAyMDczNSwgMjA3MzksIDIwNzQzLCAyMDc0NywgMjA3NTEsIDIwNzU1LCAyMDc1OSwgMjA3NjMsIDIwNzY3LCAyMDc3MSwgCi0gICAgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIDIwODAzLCAyMDgwNywgMjA4MTEsIAotICAgIDIwODE1LCAyMDgxOSwgMjA4MjMsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAyMDg0MywgMjA4NDcsIDIwODUxLCAKLSAgICAyMDg1NSwgMjA4NTksIDIwODYzLCAyMDg2NywgMjA4NzEsIDIwODc1LCAyMDg3OSwgMjA4ODMsIDIwODg3LCAyMDg5MSwgCi0gICAgMjA4OTUsIDIwODk5LCAyMDkwMywgMjA5MDcsIDIwOTExLCAyMDkxNSwgMjA5MTksIDIwOTIzLCAyMDkyNywgMjA5MzEsIAotICAgIDIwOTM1LCAyMDkzOSwgMjA5NDMsIDIwOTQ3LCAyMDk1MSwgMjA5NTUsIDIwOTU5LCAyMDk2MywgMjA5NjcsIDIwOTcxLCAKLSAgICAyMDk3NSwgMjA5NzksIDIwOTgzLCAyMDk4NywgMjA5OTEsIDIwOTk1LCAyMDk5OSwgMjEwMDMsIDIxMDA3LCAyMTAxMSwgCi0gICAgMjEwMTUsIDIxMDE5LCAyMTAyMywgMjEwMjcsIDIxMDMxLCAyMTAzNSwgMjEwMzksIDIxMDQzLCAyMTA0NywgMjEwNTEsIAotICAgIDIxMDU1LCAyMTA1OSwgMjEwNjMsIDIxMDY3LCAyMTA3MSwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAKLSAgICAyMTA5NSwgMjEwOTksIDIxMTAzLCAyMTEwNywgMjExMTEsIDIxMTE1LCAyMTExOSwgMjExMjMsIDIxMTI3LCAyMTEzMSwgCi0gICAgMjExMzUsIDIxMTM5LCAyMTE0MywgMjExNDcsIDIxMTUxLCAyMTE1NSwgMjExNTksIDIxMTYzLCAyMTE2NywgMjExNzEsIAotICAgIDIxMTc1LCAyMTE3OSwgMjExODMsIDIxMTg3LCAyMTE5MSwgMjExOTUsIDIxMTk5LCAyMTIwMywgMjEyMDcsIDIxMjExLCAKLSAgICAyMTIxNSwgMjEyMTksIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCAyMTIzOSwgMjEyNDMsIDIxMjQ3LCAyMTI1MCwgCi0gICAgMjEyNTQsIDIxMjU4LCAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIAotICAgIDIxMjk0LCAyMTI5OCwgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAKLSAgICAyMTMzNCwgMjEzMzgsIDIxMzQyLCAyMTM0NSwgMjEzNDksIDIxMzUzLCAyMTM1NywgMjEzNjEsIDIxMzY1LCAyMTM2OSwgCi0gICAgMjEzNzMsIDIxMzc3LCAyMTM4MSwgMjEzODUsIDIxMzg5LCAyMTM5MywgMjEzOTcsIDIxNDAxLCAyMTQwNSwgMjE0MDksIAotICAgIDIxNDEzLCAyMTQxNywgMjE0MjEsIDIxNDI1LCAyMTQyOSwgMjE0MzMsIDIxNDM3LCAyMTQ0MSwgMjE0NDUsIDIxNDQ5LCAKLSAgICAyMTQ1MywgMjE0NTcsIDIxNDYxLCAyMTQ2NSwgMjE0NjksIDIxNDczLCAyMTQ3NywgMjE0ODEsIDIxNDg1LCAyMTQ4OSwgCi0gICAgMjE0OTMsIDIxNDk3LCAyMTUwMSwgMjE1MDUsIDIxNTA5LCAyMTUxMywgMjE1MTcsIDIxNTIxLCAyMTUyNSwgMjE1MjksIAotICAgIDIxNTMzLCAwLCAyMTUzNywgMjE1NDEsIDIxNTQ1LCAyMTU0OSwgMCwgMCwgMjE1NTMsIDIxNTU3LCAyMTU2MSwgMjE1NjUsIAotICAgIDIxNTY5LCAyMTU3MywgMjE1NzcsIDAsIDIxNTgxLCAwLCAyMTU4NSwgMjE1ODksIDIxNTkzLCAyMTU5NywgMCwgMCwgCi0gICAgMjE2MDEsIDIxNjA1LCAyMTYwOSwgMjE2MTMsIDIxNjE3LCAyMTYyMSwgMjE2MjUsIDIxNjI5LCAyMTYzMywgMjE2MzcsIAotICAgIDIxNjQxLCAyMTY0NSwgMjE2NDksIDIxNjUzLCAyMTY1NywgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAKLSAgICAyMTY4MSwgMjE2ODUsIDIxNjg5LCAyMTY5MiwgMjE2OTYsIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgCi0gICAgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MiwgMjE3NTYsIAotICAgIDIxNzYwLCAwLCAyMTc2NCwgMjE3NjgsIDIxNzcyLCAyMTc3NiwgMCwgMCwgMjE3ODAsIDIxNzg0LCAyMTc4OCwgMjE3OTIsIAotICAgIDIxNzk2LCAyMTgwMCwgMjE4MDQsIDIxODA4LCAyMTgxMiwgMjE4MTYsIDIxODIwLCAyMTgyNCwgMjE4MjgsIDIxODMyLCAKLSAgICAyMTgzNiwgMjE4NDAsIDIxODQ0LCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc2LCAyMTg4MSwgCi0gICAgMjE4ODcsIDIxODkwLCAyMTg5NCwgMjE4OTgsIDIxOTAyLCAyMTkwNiwgMjE5MTAsIDIxOTE0LCAyMTkxOCwgMCwgMjE5MjIsIAotICAgIDIxOTI2LCAyMTkzMCwgMjE5MzQsIDAsIDAsIDIxOTM4LCAyMTk0MiwgMjE5NDYsIDIxOTUwLCAyMTk1NCwgMjE5NTgsIAotICAgIDIxOTYyLCAwLCAyMTk2NiwgMCwgMjE5NzAsIDIxOTc0LCAyMTk3OCwgMjE5ODIsIDAsIDAsIDIxOTg2LCAyMTk5MCwgCi0gICAgMjE5OTQsIDIxOTk4LCAyMjAwMiwgMjIwMDYsIDIyMDEwLCAyMjAxNCwgMjIwMTgsIDIyMDIzLCAyMjAyOCwgMjIwMzMsIAotICAgIDIyMDM5LCAyMjA0NSwgMjIwNTAsIDAsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAKLSAgICAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIDIyMTE1LCAyMjExOSwgCi0gICAgMjIxMjIsIDIyMTI2LCAyMjEzMCwgMjIxMzQsIDIyMTM4LCAyMjE0MiwgMjIxNDYsIDIyMTUwLCAyMjE1NCwgMjIxNTgsIAotICAgIDIyMTYyLCAyMjE2NiwgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIDIyMTg2LCAyMjE5MCwgMjIxOTQsIDIyMTk4LCAKLSAgICAyMjIwMiwgMjIyMDYsIDIyMjEwLCAyMjIxNCwgMjIyMTgsIDIyMjIyLCAyMjIyNiwgMjIyMzAsIDIyMjM0LCAyMjIzOCwgCi0gICAgMjIyNDIsIDIyMjQ2LCAyMjI1MCwgMjIyNTQsIDIyMjU4LCAyMjI2MiwgMjIyNjYsIDIyMjcwLCAyMjI3NCwgMjIyNzgsIDAsIAotICAgIDIyMjgyLCAyMjI4NiwgMjIyOTAsIDIyMjk0LCAwLCAwLCAyMjI5OCwgMjIzMDIsIDIyMzA2LCAyMjMxMCwgMjIzMTQsIAotICAgIDIyMzE4LCAyMjMyMiwgMjIzMjYsIDIyMzMwLCAyMjMzNCwgMjIzMzgsIDIyMzQyLCAyMjM0NiwgMjIzNTAsIDIyMzU0LCAKLSAgICAyMjM1OCwgMjIzNjIsIDIyMzY2LCAyMjM3MCwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NCwgCi0gICAgMjIzOTgsIDIyNDAyLCAyMjQwNiwgMjI0MTAsIDIyNDE0LCAyMjQxOCwgMjI0MjIsIDIyNDI2LCAyMjQzMCwgMjI0MzQsIAotICAgIDIyNDM4LCAyMjQ0MiwgMjI0NDYsIDIyNDUwLCAyMjQ1NCwgMjI0NTgsIDIyNDYyLCAyMjQ2NiwgMjI0NzAsIDIyNDc0LCAKLSAgICAyMjQ3OCwgMjI0ODIsIDIyNDg2LCAyMjQ5MCwgMjI0OTQsIDIyNDk4LCAyMjUwMiwgMjI1MDYsIDIyNTEwLCAyMjUxNCwgCi0gICAgMjI1MTgsIDIyNTIyLCAyMjUyNSwgMjI1MjksIDIyNTMzLCAyMjUzNywgMjI1NDEsIDIyNTQ1LCAyMjU0OSwgMjI1NTMsIAotICAgIDIyNTU3LCAyMjU2MSwgMCwgMCwgMjI1NjUsIDIyNTc0LCAyMjU4MCwgMjI1ODUsIDIyNTg5LCAyMjU5MiwgMjI1OTcsIAotICAgIDIyNjAwLCAyMjYwMywgMjI2MDYsIDIyNjExLCAyMjYxNSwgMjI2MjAsIDIyNjIzLCAyMjYyNiwgMjI2MjksIDIyNjMyLCAKLSAgICAyMjYzNSwgMjI2MzgsIDIyNjQyLCAyMjY0NSwgMjI2NDksIDIyNjUzLCAyMjY1NywgMjI2NjEsIDIyNjY1LCAyMjY2OSwgCi0gICAgMjI2NzMsIDIyNjc3LCAyMjY4MSwgMjI2ODUsIDIyNjg5LCAwLCAwLCAwLCAyMjY5NSwgMjI3MDEsIDIyNzA1LCAyMjcwOSwgCi0gICAgMjI3MTMsIDIyNzE5LCAyMjcyMywgMjI3MjcsIDIyNzMxLCAyMjczNywgMjI3NDEsIDIyNzQ1LCAyMjc0OSwgMjI3NTUsIAotICAgIDIyNzU5LCAyMjc2MywgMjI3NjcsIDIyNzczLCAyMjc3OSwgMjI3ODUsIDIyNzkzLCAyMjc5OSwgMjI4MDUsIDIyODExLCAKLSAgICAyMjgxNywgMjI4MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDIyODI5LCAyMjgzMiwgMjI4MzUsIDIyODM4LCAyMjg0MSwgMjI4NDQsIAotICAgIDIyODQ4LCAyMjg1MiwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzgsIDIyODgyLCAKLSAgICAyMjg4NiwgMjI4OTAsIDIyODk0LCAyMjg5OCwgMjI5MDIsIDIyOTA2LCAyMjkxMCwgMjI5MTQsIDIyOTE4LCAyMjkyMiwgCi0gICAgMjI5MjUsIDIyOTI5LCAyMjkzMywgMjI5MzcsIDIyOTQxLCAyMjk0NSwgMjI5NDksIDIyOTUzLCAyMjk1NywgMjI5NjEsIAotICAgIDIyOTY1LCAyMjk2OSwgMjI5NzMsIDIyOTc3LCAyMjk4MSwgMjI5ODUsIDIyOTg5LCAyMjk5MywgMjI5OTcsIDIzMDAxLCAKLSAgICAyMzAwNCwgMjMwMDgsIDIzMDEyLCAyMzAxNiwgMjMwMjAsIDIzMDI0LCAyMzAyOCwgMjMwMzIsIDIzMDM2LCAyMzA0MCwgCi0gICAgMjMwNDQsIDIzMDQ4LCAyMzA1MiwgMjMwNTYsIDIzMDYwLCAyMzA2NCwgMjMwNjgsIDIzMDcyLCAyMzA3NiwgMjMwODAsIAotICAgIDIzMDg0LCAyMzA4OCwgMjMwOTIsIDIzMDk2LCAyMzEwMCwgMjMxMDQsIDIzMTA4LCAyMzExMiwgMjMxMTYsIDIzMTIwLCAKLSAgICAyMzEyNCwgMjMxMjgsIDIzMTMyLCAyMzEzNiwgMjMxMzksIDIzMTQzLCAyMzE0NywgMjMxNTEsIDIzMTU1LCAyMzE1OSwgMCwgCi0gICAgMCwgMjMxNjMsIDIzMTY4LCAyMzE3MywgMjMxNzgsIDIzMTgzLCAyMzE4OCwgMCwgMCwgMjMxOTMsIDIzMTk3LCAyMzIwMCwgCi0gICAgMjMyMDQsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjE4LCAyMzIyNCwgMjMyMjksIDIzMjMzLCAyMzIzNiwgMjMyNDAsIAotICAgIDIzMjQ0LCAyMzI0OSwgMjMyNTMsIDIzMjU4LCAyMzI2MiwgMjMyNjcsIDIzMjcxLCAyMzI3NiwgMjMyODAsIDIzMjg1LCAKLSAgICAyMzI5MSwgMjMyOTUsIDIzMzAwLCAyMzMwNCwgMjMzMDksIDIzMzE1LCAyMzMxOSwgMjMzMjUsIDIzMzMxLCAyMzMzNSwgCi0gICAgMjMzNDAsIDIzMzQ4LCAyMzM1NiwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzODIsIDIzMzg4LCAyMzM5NiwgMjM0MDEsIAotICAgIDIzNDA3LCAyMzQxMSwgMjM0MTUsIDIzNDE5LCAyMzQyMywgMjM0MjcsIDIzNDMxLCAyMzQzNSwgMjM0MzksIDIzNDQzLCAKLSAgICAyMzQ0NywgMjM0NTMsIDIzNDU4LCAyMzQ2MywgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzksIDIzNDgzLCAyMzQ4OCwgCi0gICAgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIDIzNTI0LCAyMzUyOCwgMjM1MzMsIAotICAgIDIzNTM5LCAyMzU0MywgMjM1NDgsIDIzNTUzLCAyMzU1NywgMjM1NjEsIDIzNTY1LCAyMzU2OSwgMjM1NzIsIDIzNTc2LCAKLSAgICAyMzU4MiwgMjM1ODcsIDIzNTkyLCAyMzU5NiwgMjM2MDAsIDIzNjA0LCAyMzYwOSwgMjM2MTMsIDIzNjE4LCAyMzYyMiwgCi0gICAgMjM2MjcsIDIzNjMwLCAyMzYzNCwgMjM2MzgsIDIzNjQzLCAyMzY0NywgMjM2NTIsIDIzNjU2LCAyMzY2MSwgMjM2NjcsIAotICAgIDIzNjcxLCAyMzY3NSwgMjM2NzksIDIzNjgzLCAyMzY4NywgMjM2OTEsIDIzNjk1LCAyMzY5OSwgMjM3MDMsIDIzNzA3LCAKLSAgICAyMzcxMSwgMjM3MTcsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMzLCAyMzczNywgMjM3NDIsIDIzNzQ2LCAyMzc1MSwgCi0gICAgMjM3NTUsIDIzNzYwLCAyMzc2NCwgMjM3NjksIDIzNzczLCAyMzc3OCwgMjM3ODIsIDIzNzg3LCAyMzc5MywgMjM3OTcsIAotICAgIDIzODAxLCAyMzgwNywgMjM4MTMsIDIzODE5LCAyMzgyNSwgMjM4MjksIDIzODMzLCAyMzgzNywgMjM4NDEsIDIzODQ1LCAKLSAgICAyMzg0OSwgMjM4NTUsIDIzODU5LCAyMzg2MywgMjM4NjcsIDIzODcyLCAyMzg3NiwgMjM4ODEsIDIzODg1LCAyMzg5MCwgCi0gICAgMjM4OTQsIDIzODk5LCAyMzkwMywgMjM5MDgsIDIzOTEyLCAyMzkxNywgMjM5MjEsIDIzOTI2LCAyMzkzMiwgMjM5MzYsIAotICAgIDIzOTQyLCAyMzk0NiwgMjM5NTAsIDIzOTU0LCAyMzk1OCwgMjM5NjIsIDIzOTY2LCAyMzk3MiwgMjM5NzUsIDIzOTc5LCAKLSAgICAyMzk4MywgMjM5ODgsIDIzOTkyLCAyMzk5NywgMjQwMDEsIDI0MDA2LCAyNDAxMCwgMjQwMTUsIDI0MDE5LCAyNDAyNCwgCi0gICAgMjQwMjgsIDI0MDMzLCAyNDAzNywgMjQwNDIsIDI0MDQ4LCAyNDA1MiwgMjQwNTcsIDI0MDYxLCAyNDA2NywgMjQwNzMsIAotICAgIDI0MDc3LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAzLCAyNDEwNywgMjQxMTEsIDI0MTE1LCAKLSAgICAyNDEyMCwgMjQxMjQsIDI0MTI5LCAyNDEzMywgMjQxMzgsIDI0MTQ0LCAyNDE0OCwgMjQxNTMsIDI0MTU3LCAyNDE2MSwgCi0gICAgMjQxNjUsIDI0MTY5LCAyNDE3MywgMjQxNzcsIDI0MTgxLCAyNDE4NywgMjQxOTEsIDI0MTk1LCAyNDE5OSwgMjQyMDQsIAotICAgIDI0MjA4LCAyNDIxMywgMjQyMTcsIDI0MjIyLCAyNDIyNiwgMjQyMzEsIDI0MjM1LCAyNDI0MCwgMjQyNDQsIDI0MjQ5LCAKLSAgICAyNDI1MywgMjQyNTgsIDI0MjYxLCAyNDI2NSwgMjQyNjksIDI0MjczLCAyNDI3NywgMjQyODEsIDI0Mjg1LCAyNDI4OSwgCi0gICAgMjQyOTMsIDI0Mjk5LCAyNDMwMywgMjQzMDcsIDI0MzExLCAyNDMxNiwgMjQzMjAsIDI0MzI1LCAyNDMyOSwgMjQzMzQsIAotICAgIDI0MzM4LCAyNDM0MywgMjQzNDcsIDI0MzUyLCAyNDM1NiwgMjQzNjEsIDI0MzY1LCAyNDM3MCwgMjQzNzYsIDI0Mzc5LCAKLSAgICAyNDM4NCwgMjQzODgsIDI0MzkzLCAyNDM5OSwgMjQ0MDUsIDI0NDExLCAyNDQxNywgMjQ0MjMsIDI0NDI5LCAyNDQzNSwgCi0gICAgMjQ0MzksIDI0NDQzLCAyNDQ0NywgMjQ0NTEsIDI0NDU1LCAyNDQ1OSwgMjQ0NjMsIDI0NDY3LCAyNDQ3MiwgMjQ0NzYsIAotICAgIDI0NDgxLCAyNDQ4NSwgMjQ0OTAsIDI0NDk0LCAyNDQ5OSwgMjQ1MDMsIDI0NTA4LCAyNDUxMiwgMjQ1MTcsIDI0NTIxLCAKLSAgICAyNDUyNiwgMjQ1MzAsIDI0NTM0LCAyNDUzOCwgMjQ1NDIsIDI0NTQ2LCAyNDU1MCwgMjQ1NTQsIDI0NTYwLCAyNDU2MywgCi0gICAgMjQ1NjcsIDI0NTcxLCAyNDU3NiwgMjQ1ODAsIDI0NTg1LCAyNDU4OSwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIAotICAgIDI0NjEyLCAyNDYxNiwgMjQ2MjEsIDI0NjI1LCAyNDYzMCwgMjQ2MzYsIDI0NjQwLCAyNDY0NiwgMjQ2NTEsIDI0NjU3LCAKLSAgICAyNDY2MSwgMjQ2NjcsIDI0NjcyLCAyNDY3NiwgMjQ2ODAsIDI0Njg0LCAyNDY4OCwgMjQ2OTIsIDI0Njk3LCAyNDcwMSwgCi0gICAgMjQ3MDUsIDI0NzEwLCAyNDcxNCwgMjQ3MTksIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIAotICAgIDI0NzQ2LCAyNDc1MCwgMjQ3NTQsIDI0NzU4LCAyNDc2MiwgMjQ3NjYsIDI0NzcxLCAyNDc3NSwgMjQ3NzksIDI0Nzg1LCAKLSAgICAyNDc4OSwgMjQ3OTUsIDI0Nzk5LCAyNDgwNSwgMjQ4MDksIDI0ODEzLCAyNDgxNywgMjQ4MjEsIDI0ODI1LCAyNDgzMCwgCi0gICAgMjQ4MzQsIDI0ODM4LCAyNDg0MiwgMjQ4NDYsIDI0ODUwLCAyNDg1NCwgMjQ4NTgsIDI0ODYyLCAyNDg2NiwgMjQ4NzAsIAotICAgIDI0ODc2LCAyNDg4MiwgMjQ4ODgsIDI0ODk0LCAyNDkwMCwgMjQ5MDUsIDI0OTExLCAyNDkxNywgMjQ5MjMsIDI0OTI3LCAKLSAgICAyNDkzMSwgMjQ5MzUsIDI0OTM5LCAyNDk0MywgMjQ5NDcsIDI0OTUxLCAyNDk1NSwgMjQ5NTksIDI0OTYzLCAyNDk2NywgCi0gICAgMjQ5NzEsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIDI0OTkwLCAyNDk5NSwgMjQ5OTksIDI1MDAzLCAyNTAwNywgMjUwMTEsIAotICAgIDI1MDE1LCAyNTAxOSwgMjUwMjMsIDI1MDI3LCAyNTAzMSwgMjUwMzcsIDI1MDQzLCAyNTA0OSwgMjUwNTUsIDI1MDYxLCAKLSAgICAyNTA2NywgMjUwNzMsIDI1MDc5LCAyNTA4NSwgMjUwODksIDI1MDkzLCAyNTA5NywgMjUxMDEsIDI1MTA1LCAyNTEwOSwgCi0gICAgMjUxMTMsIDI1MTE5LCAyNTEyNSwgMjUxMzEsIDI1MTM3LCAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE2MSwgMjUxNjcsIAotICAgIDI1MTcyLCAyNTE3NywgMjUxODIsIDI1MTg3LCAyNTE5MywgMjUxOTksIDI1MjA1LCAyNTIxMSwgMjUyMTcsIDI1MjIzLCAKLSAgICAyNTIyOSwgMjUyMzUsIDI1MjQxLCAyNTI0NywgMjUyNTMsIDI1MjU4LCAyNTI2NCwgMjUyNzAsIDI1Mjc2LCAyNTI4MSwgCi0gICAgMjUyODYsIDI1MjkxLCAyNTI5NiwgMjUzMDEsIDI1MzA2LCAyNTMxMSwgMjUzMTYsIDI1MzIxLCAyNTMyNiwgMjUzMzEsIAotICAgIDI1MzM2LCAyNTM0MSwgMjUzNDYsIDI1MzUxLCAyNTM1NiwgMjUzNjEsIDI1MzY2LCAyNTM3MSwgMjUzNzYsIDI1MzgxLCAKLSAgICAyNTM4NiwgMjUzOTEsIDI1Mzk2LCAyNTQwMSwgMjU0MDYsIDI1NDExLCAyNTQxNiwgMjU0MjEsIDI1NDI2LCAyNTQzMSwgCi0gICAgMjU0MzYsIDI1NDQxLCAyNTQ0NiwgMjU0NTEsIDI1NDU2LCAyNTQ2MSwgMjU0NjYsIDI1NDcxLCAyNTQ3NiwgMjU0ODEsIAotICAgIDI1NDg2LCAyNTQ5MCwgMjU0OTUsIDI1NTAwLCAyNTUwNSwgMjU1MTAsIDI1NTE1LCAyNTUyMCwgMjU1MjUsIDI1NTMwLCAKLSAgICAyNTUzNSwgMjU1NDAsIDI1NTQ1LCAyNTU1MCwgMjU1NTUsIDI1NTYwLCAyNTU2NSwgMjU1NzAsIDI1NTc1LCAyNTU4MCwgCi0gICAgMjU1ODUsIDI1NTkwLCAyNTU5NSwgMjU2MDAsIDI1NjA1LCAyNTYxMCwgMjU2MTUsIDI1NjIwLCAyNTYyNSwgMjU2MzAsIAotICAgIDI1NjM1LCAyNTY0MCwgMjU2NDUsIDI1NjQ5LCAyNTY1NCwgMjU2NTksIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc4LCAKLSAgICAyNTY4MywgMjU2ODksIDI1Njk0LCAyNTY5OSwgMjU3MDQsIDI1NzA5LCAyNTcxNSwgMjU3MjAsIDI1NzI1LCAyNTczMCwgCi0gICAgMjU3MzUsIDI1NzQwLCAyNTc0NSwgMjU3NTAsIDI1NzU1LCAyNTc2MCwgMjU3NjUsIDI1NzcwLCAyNTc3NSwgMjU3ODAsIAotICAgIDI1Nzg1LCAyNTc5MCwgMjU3OTUsIDI1ODAwLCAyNTgwNSwgMjU4MTAsIDI1ODE1LCAyNTgyMCwgMjU4MjUsIDI1ODMwLCAKLSAgICAyNTgzNSwgMjU4NDAsIDI1ODQ1LCAyNTg1MCwgMjU4NTUsIDI1ODYwLCAyNTg2NSwgMjU4NzAsIDI1ODc1LCAyNTg4MCwgCi0gICAgMjU4ODUsIDI1ODkwLCAyNTg5NSwgMjU5MDAsIDI1OTA1LCAyNTkxMCwgMjU5MTUsIDI1OTIwLCAyNTkyNSwgMjU5MzAsIAotICAgIDI1OTM1LCAyNTk0MSwgMjU5NDYsIDI1OTUxLCAyNTk1NiwgMjU5NjEsIDI1OTY2LCAyNTk3MSwgMjU5NzYsIDI1OTgxLCAKLSAgICAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIDI2MDI2LCAyNjAzMSwgCi0gICAgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAyNjA3NiwgMjYwODEsIAotICAgIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTEsIDI2MTE2LCAyNjEyMSwgMjYxMjYsIDI2MTMxLCAKLSAgICAyNjEzNywgMjYxNDEsIDI2MTQ1LCAyNjE0OSwgMjYxNTMsIDI2MTU3LCAyNjE2MSwgMjYxNjUsIDI2MTY5LCAyNjE3NSwgCi0gICAgMjYxODEsIDI2MTg3LCAyNjE5MywgMjYxOTksIDI2MjA1LCAyNjIxMSwgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIAotICAgIDI2MjM5LCAyNjI0NCwgMjYyNDksIDI2MjU0LCAyNjI1OSwgMjYyNjQsIDI2MjY5LCAyNjI3NCwgMjYyNzksIDI2Mjg0LCAKLSAgICAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzE0LCAyNjMxOSwgMjYzMjQsIDI2MzI5LCAyNjMzNCwgCi0gICAgMjYzMzksIDI2MzQ0LCAyNjM0OSwgMjYzNTQsIDI2MzU5LCAyNjM2NCwgMCwgMCwgMCwgMjYzNzEsIDI2MzgxLCAyNjM4NSwgCi0gICAgMjYzOTIsIDI2Mzk2LCAyNjQwMCwgMjY0MDQsIDI2NDEyLCAyNjQxNiwgMjY0MjEsIDI2NDI2LCAyNjQzMSwgMjY0MzUsIAotICAgIDI2NDQwLCAyNjQ0NSwgMjY0NDgsIDI2NDUyLCAyNjQ1NiwgMjY0NjUsIDI2NDY5LCAyNjQ3MywgMjY0NzksIDI2NDgzLCAKLSAgICAyNjQ4NywgMjY0OTUsIDI2NDk5LCAyNjUwNywgMjY1MTMsIDI2NTE5LCAyNjUyNSwgMjY1MzEsIDI2NTQxLCAyNjU0NywgCi0gICAgMjY1NTEsIDI2NTYwLCAyNjU2MywgMjY1NjksIDI2NTczLCAyNjU3OSwgMjY1ODQsIDI2NTkwLCAyNjU5OCwgMjY2MDQsIAotICAgIDI2NjA5LCAyNjYxNiwgMjY2MjEsIDI2NjI1LCAyNjYyOSwgMjY2MzksIDI2NjQ1LCAyNjY0OSwgMjY2NTksIDI2NjY1LCAKLSAgICAyNjY2OSwgMjY2NzMsIDI2NjgwLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwOSwgMjY3MTMsIDI2NzE3LCAyNjcyMSwgCi0gICAgMjY3MjksIDI2NzM2LCAyNjc0MCwgMjY3NDQsIDI2NzQ4LCAyNjc1MiwgMjY3NTYsIDI2NzYwLCAyNjc2NCwgMjY3NjgsIAotICAgIDI2NzcyLCAyNjc3NiwgMjY3ODAsIDI2Nzg1LCAyNjc5MCwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAKLSAgICAyNjgxNSwgMjY4MTksIDI2ODI3LCAyNjgzNSwgMjY4NDMsIDI2ODUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjg1OSwgCi0gICAgMjY4NjMsIDI2ODY3LCAyNjg3MSwgMjY4NzUsIDI2ODgwLCAyNjg4NSwgMjY4OTAsIDI2ODk1LCAyNjkwMCwgMjY5MDQsIAotICAgIDI2OTA5LCAyNjkxMywgMCwgMjY5MTcsIDI2OTIyLCAyNjkyNywgMjY5MzIsIDI2OTM2LCAyNjk0MSwgMjY5NDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTUxLCAyNjk1NSwgMjY5NTksIDI2OTYzLCAyNjk2NywgMjY5NzIsIAotICAgIDI2OTc3LCAyNjk4MiwgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDEsIDI3MDA1LCAyNzAwOSwgMjcwMTQsIDI3MDE5LCAKLSAgICAyNzAyNCwgMjcwMjksIDI3MDMzLCAyNzAzOCwgMjcwNDMsIDI3MDQ4LCAyNzA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjcwNTksIDI3MDYzLCAyNzA2NywgMjcwNzEsIDI3MDc1LCAyNzA4MCwgMjcwODUsIDI3MDkwLCAyNzA5NSwgMjcxMDAsIAotICAgIDI3MTA0LCAyNzEwOSwgMjcxMTMsIDI3MTE3LCAyNzEyMiwgMjcxMjcsIDI3MTMyLCAyNzEzNywgMjcxNDEsIDI3MTQ2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzE1MSwgMjcxNTUsIDI3MTU5LCAyNzE2MywgMjcxNjcsIAotICAgIDI3MTcyLCAyNzE3NywgMjcxODIsIDI3MTg3LCAyNzE5MiwgMjcxOTYsIDI3MjAxLCAyNzIwNSwgMCwgMjcyMDksIDI3MjE0LCAKLSAgICAyNzIxOSwgMCwgMjcyMjQsIDI3MjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIzNCwgMjcyMzcsIAotICAgIDI3MjQxLCAyNzI0NSwgMjcyNDksIDI3MjUzLCAyNzI1NywgMjcyNjEsIDI3MjY1LCAyNzI2OSwgMjcyNzMsIDI3Mjc3LCAKLSAgICAyNzI4MSwgMjcyODUsIDI3Mjg5LCAyNzI5MywgMjcyOTcsIDI3MzAxLCAyNzMwNCwgMjczMDgsIDI3MzEyLCAyNzMxNiwgCi0gICAgMjczMjAsIDI3MzI0LCAyNzMyOCwgMjczMzIsIDI3MzM2LCAyNzM0MCwgMjczNDQsIDI3MzQ4LCAyNzM1MiwgMjczNTYsIAotICAgIDI3MzYwLCAyNzM2MywgMjczNjcsIDI3MzcxLCAyNzM3NywgMjczODMsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA3LCAKLSAgICAyNzQxMywgMjc0MTksIDI3NDI1LCAyNzQzMSwgMjc0MzcsIDI3NDQzLCAyNzQ0OSwgMjc0NTUsIDI3NDY0LCAyNzQ3MywgCi0gICAgMjc0NzksIDI3NDg1LCAyNzQ5MSwgMjc0OTYsIDI3NTAwLCAyNzUwNSwgMjc1MTAsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIAotICAgIDI3NTI5LCAyNzUzNCwgMjc1MzgsIDI3NTQzLCAyNzU0NywgMjc1NTIsIDI3NTU3LCAyNzU2MiwgMjc1NjcsIDI3NTcxLCAKLSAgICAyNzU3NSwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTEsIDI3NTk1LCAyNzU5OSwgMjc2MDMsIDI3NjA3LCAyNzYxMywgCi0gICAgMjc2MTcsIDI3NjIxLCAyNzYyNSwgMjc2MjksIDI3NjMzLCAyNzY0MSwgMjc2NDcsIDI3NjUxLCAyNzY1NywgMjc2NjEsIAotICAgIDI3NjY3LCAyNzY3MSwgMCwgMCwgMjc2NzUsIDI3Njc5LCAyNzY4MiwgMjc2ODUsIDI3Njg4LCAyNzY5MSwgMjc2OTQsIAotICAgIDI3Njk3LCAyNzcwMSwgMjc3MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzA4LCAyNzcxNiwgMjc3MjQsIDI3NzMyLCAyNzc0MCwgCi0gICAgMjc3NDgsIDI3NzU2LCAyNzc2NCwgMjc3NzIsIDI3NzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzc4OCwgMjc3OTEsIDI3Nzk0LCAKLSAgICAyNzc5NywgMjc4MDIsIDI3ODA1LCAyNzgxMCwgMjc4MTcsIDI3ODI1LCAyNzgzMCwgMjc4MzcsIDI3ODQwLCAyNzg0NywgCi0gICAgMjc4NTQsIDI3ODYxLCAwLCAyNzg2NSwgMjc4NjksIDI3ODcyLCAyNzg3NSwgMjc4NzgsIDI3ODgxLCAyNzg4NCwgMjc4ODcsIAotICAgIDI3ODkxLCAyNzg5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4OTgsIDI3OTAxLCAyNzkwNCwgMjc5MDcsIDI3OTEwLCAyNzkxMywgCi0gICAgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIDI3OTMzLCAyNzkzNywgMjc5NDAsIDI3OTQ0LCAyNzk0OCwgMjc5NTEsIAotICAgIDI3OTU1LCAyNzk1OSwgMjc5NjMsIDI3OTY3LCAyNzk3MSwgMjc5NzUsIDI3OTc5LCAyNzk4MiwgMjc5ODYsIDI3OTkwLCAKLSAgICAyNzk5NCwgMjc5OTcsIDI4MDAxLCAyODAwNSwgMjgwMDksIDI4MDEzLCAyODAxNywgMjgwMjEsIDI4MDI1LCAyODAyOSwgCi0gICAgMjgwMzYsIDI4MDQxLCAyODA0NiwgMjgwNTEsIDI4MDU2LCAyODA2MiwgMjgwNjgsIDI4MDc0LCAyODA4MCwgMjgwODUsIAotICAgIDI4MDkxLCAyODA5NywgMjgxMDIsIDI4MTA4LCAyODExNCwgMjgxMjAsIDI4MTI2LCAyODEzMiwgMjgxMzcsIDI4MTQzLCAKLSAgICAyODE0OCwgMjgxNTQsIDI4MTYwLCAyODE2NiwgMjgxNzIsIDI4MTc4LCAyODE4MywgMjgxODgsIDI4MTk0LCAyODIwMCwgCi0gICAgMjgyMDUsIDI4MjExLCAyODIxNiwgMjgyMjIsIDI4MjI3LCAyODIzMiwgMjgyMzgsIDI4MjQ0LCAyODI1MCwgMjgyNTYsIAotICAgIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NiwgMjgyOTIsIDI4Mjk4LCAyODMwNCwgMjgzMDksIDI4MzE0LCAKLSAgICAyODMyMCwgMjgzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzMyLCAyODM0MSwgMjgzNTAsIDI4MzU4LCAyODM2NiwgCi0gICAgMjgzNzYsIDI4Mzg0LCAyODM5MywgMjg0MDAsIDI4NDA3LCAyODQxNCwgMjg0MjIsIDI4NDMwLCAyODQzOCwgMjg0NDYsIAotICAgIDI4NDU0LCAyODQ2MiwgMjg0NzAsIDI4NDc4LCAyODQ4NSwgMjg0OTMsIDI4NTAxLCAyODUwOSwgMjg1MTcsIDI4NTI1LCAKLSAgICAyODUzNSwgMjg1NDUsIDI4NTU1LCAyODU2NSwgMjg1NzUsIDI4NTg1LCAyODU5NSwgMjg2MDUsIDI4NjE1LCAyODYyNSwgCi0gICAgMjg2MzUsIDI4NjQ1LCAyODY1NSwgMjg2NjUsIDI4NjczLCAyODY4MSwgMjg2OTEsIDI4Njk5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyODcwOSwgMjg3MTMsIDI4NzE3LCAyODcyMSwgMjg3MjUsIDI4NzI5LCAyODczMywgMjg3MzcsIDI4NzQxLCAyODc0NSwgCi0gICAgMjg3NDksIDI4NzUzLCAyODc1NywgMjg3NjEsIDI4NzY1LCAyODc2OSwgMjg3NzMsIDI4Nzc3LCAyODc4MSwgMjg3ODUsIAotICAgIDI4Nzg5LCAyODc5MywgMjg3OTcsIDI4ODAxLCAyODgwNywgMjg4MTEsIDI4ODE3LCAyODgyMSwgMjg4MjcsIDI4ODMxLCAKLSAgICAyODgzNywgMjg4NDEsIDI4ODQ1LCAyODg0OSwgMjg4NTMsIDI4ODU3LCAyODg2MSwgMjg4NjcsIDI4ODczLCAyODg3OSwgCi0gICAgMjg4ODUsIDI4ODkxLCAyODg5NywgMjg5MDIsIDI4OTA4LCAyODkxNCwgMjg5MjAsIDI4OTI2LCAyODkzMywgMjg5MzksIAotICAgIDI4OTQ0LCAyODk0OSwgMjg5NTMsIDI4OTU3LCAyODk2MSwgMjg5NjUsIDI4OTY5LCAyODk3MywgMjg5NzcsIDI4OTgzLCAKLSAgICAyODk4OSwgMjg5OTUsIDI5MDAwLCAyOTAwNywgMjkwMTIsIDI5MDE3LCAyOTAyMywgMjkwMjgsIDI5MDM1LCAyOTA0MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwNDgsIDI5MDU0LCAyOTA1OCwgMjkwNjMsIDI5MDY4LCAyOTA3MywgCi0gICAgMjkwNzgsIDI5MDgzLCAyOTA4OCwgMjkwOTMsIDI5MDk4LCAyOTEwMywgMjkxMDgsIDI5MTEzLCAyOTExOCwgMjkxMjMsIAotICAgIDI5MTI4LCAyOTEzMiwgMjkxMzcsIDI5MTQyLCAyOTE0NywgMjkxNTEsIDI5MTU1LCAyOTE2MCwgMjkxNjUsIDI5MTcwLCAKLSAgICAyOTE3NSwgMjkxODAsIDI5MTg1LCAyOTE4OSwgMjkxOTQsIDAsIDI5MTk5LCAyOTIwNCwgMjkyMDksIDI5MjE0LCAyOTIyMCwgCi0gICAgMjkyMjYsIDI5MjMyLCAyOTIzOCwgMjkyNDMsIDI5MjQ4LCAyOTI1NCwgMjkyNjEsIDAsIDAsIDAsIDAsIDI5MjY4LCAKLSAgICAyOTI3MywgMjkyNzksIDI5Mjg1LCAyOTI5MSwgMjkyOTcsIDI5MzAyLCAyOTMwNywgMjkzMTMsIDI5MzE5LCAyOTMyNCwgCi0gICAgMjkzMjksIDAsIDAsIDAsIDAsIDI5MzM0LCAwLCAwLCAwLCAyOTMzOSwgMjkzNDQsIDI5MzQ5LCAyOTM1NCwgMjkzNTgsIAotICAgIDI5MzYyLCAyOTM2NiwgMjkzNzAsIDI5Mzc0LCAyOTM3OCwgMjkzODMsIDI5Mzg3LCAyOTM5MiwgMjkzOTcsIDI5NDAzLCAKLSAgICAyOTQwOSwgMjk0MTUsIDI5NDIxLCAyOTQyNiwgMjk0MzIsIDI5NDM4LCAyOTQ0NCwgMjk0NDksIDI5NDU1LCAyOTQ2MCwgCi0gICAgMjk0NjYsIDI5NDcyLCAyOTQ3NywgMjk0ODMsIDI5NDg5LCAyOTQ5NSwgMjk1MDEsIDI5NTA2LCAyOTUxMSwgMjk1MTcsIAotICAgIDI5NTIzLCAyOTUyOCwgMjk1MzQsIDI5NTM5LCAyOTU0NSwgMjk1NTAsIDI5NTU2LCAwLCAwLCAyOTU2MiwgMjk1NjgsIAotICAgIDI5NTc0LCAyOTU4MCwgMjk1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NTkyLCAyOTYwMSwgCi0gICAgMjk2MTAsIDI5NjE4LCAyOTYyNywgMjk2MzYsIDI5NjQ0LCAyOTY1MywgMjk2NjIsIDI5NjcxLCAyOTY4MCwgMjk2ODgsIAotICAgIDI5Njk3LCAyOTcwNiwgMjk3MTQsIDI5NzIzLCAyOTczMiwgMjk3NDEsIDI5NzUwLCAyOTc1OSwgMjk3NjgsIDI5Nzc2LCAKLSAgICAyOTc4NSwgMjk3OTMsIDI5ODAxLCAyOTgxMCwgMjk4MTgsIDI5ODI3LCAyOTgzNiwgMjk4NDUsIDI5ODU0LCAyOTg2MywgCi0gICAgMjk4NzIsIDI5ODgwLCAyOTg4OSwgMjk4OTgsIDI5OTA2LCAyOTkxNSwgMjk5MjQsIDI5OTMzLCAyOTk0MiwgMjk5NTEsIAotICAgIDI5OTYwLCAyOTk2OSwgMCwgMCwgMCwgMCwgMjk5NzgsIDI5OTg4LCAyOTk5NywgMzAwMDYsIDMwMDE0LCAzMDAyMywgCi0gICAgMzAwMzEsIDMwMDQwLCAzMDA0OCwgMzAwNTcsIDMwMDY2LCAzMDA3NSwgMzAwODQsIDMwMDkzLCAzMDEwMiwgMzAxMTEsIAotICAgIDMwMTIwLCAzMDEyOSwgMzAxMzgsIDMwMTQ3LCAzMDE1NiwgMzAxNjUsIDMwMTc0LCAzMDE4MywgMzAxOTIsIDMwMjAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMDIwOCwgMzAyMTYsIDMwMjIzLCAzMDIzMCwgMzAyMzcsIDMwMjQ0LCAzMDI1MSwgMzAyNTgsIAotICAgIDMwMjY2LCAzMDI3MywgMzAyODEsIDAsIDAsIDAsIDMwMjg5LCAzMDI5NywgMzAzMDUsIDMwMzA5LCAzMDMxNSwgMzAzMjEsIAotICAgIDMwMzI3LCAzMDMzMywgMzAzMzksIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzUsIDMwMzgxLCAKLSAgICAzMDM4NywgMzAzOTMsIDMwMzk5LCAzMDQwMywgMzA0MDksIDMwNDE1LCAzMDQyMSwgMzA0MjcsIDMwNDMzLCAzMDQzOSwgCi0gICAgMzA0NDUsIDMwNDUxLCAzMDQ1NywgMzA0NjMsIDMwNDY5LCAzMDQ3NSwgMzA0ODEsIDMwNDg3LCAzMDQ5MywgMzA0OTcsIAotICAgIDMwNTAyLCAzMDUwNywgMzA1MTIsIDMwNTE2LCAzMDUyMSwgMzA1MjUsIDMwNTMwLCAzMDUzNSwgMzA1NDAsIDMwNTQ1LCAKLSAgICAzMDU1MCwgMzA1NTUsIDMwNTYwLCAzMDU2NSwgMzA1NzAsIDMwNTc0LCAzMDU3OSwgMzA1ODQsIDMwNTg5LCAzMDU5NCwgCi0gICAgMzA1OTgsIDMwNjAyLCAzMDYwNywgMzA2MTIsIDMwNjE3LCAzMDYyMiwgMCwgMCwgMzA2MjgsIDMwNjMyLCAzMDYzOSwgCi0gICAgMzA2NDQsIDMwNjUwLCAzMDY1NiwgMzA2NjEsIDMwNjY3LCAzMDY3MywgMzA2NzgsIDMwNjg0LCAzMDY5MCwgMzA2OTYsIAotICAgIDMwNzAyLCAzMDcwOCwgMzA3MTMsIDMwNzE4LCAzMDcyNCwgMzA3MjksIDMwNzM1LCAzMDc0MCwgMzA3NDYsIDMwNzUyLCAKLSAgICAzMDc1OCwgMzA3NjQsIDMwNzY5LCAzMDc3NCwgMzA3NzksIDMwNzg1LCAzMDc5MSwgMzA3OTYsIDMwODAyLCAzMDgwOCwgCi0gICAgMzA4MTIsIDMwODE3LCAzMDgyMiwgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDIsIDMwODQ3LCAzMDg1MywgMzA4NTksIAotICAgIDMwODY1LCAzMDg3MCwgMzA4NzUsIDMwODc5LCAzMDg4NCwgMzA4ODgsIDMwODkzLCAzMDg5NywgMzA5MDIsIDMwOTA3LCAKLSAgICAzMDkxMiwgMzA5MTcsIDMwOTI0LCAzMDkzMSwgMzA5MzgsIDMwOTQ4LCAzMDk1NywgMzA5NjQsIDMwOTcwLCAzMDk4MSwgCi0gICAgMzA5ODYsIDMwOTkyLCAwLCAzMDk5OCwgMzEwMDMsIDMxMDA4LCAzMTAxNiwgMzEwMjIsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIAotICAgIDMxMDQ3LCAzMTA1MywgMzEwNTgsIDMxMDY0LCAzMTA2OSwgMzEwNzYsIDMxMDgyLCAzMTA4NywgMzEwOTMsIDMxMDk5LCAKLSAgICAzMTEwNSwgMzExMTIsIDMxMTE5LCAzMTEyNiwgMzExMzEsIDMxMTM2LCAzMTE0MywgMzExNTAsIDMxMTU3LCAzMTE2NCwgCi0gICAgMzExNzEsIDAsIDAsIDMxMTc4LCAzMTE4NSwgMzExOTIsIDMxMTk4LCAzMTIwNCwgMzEyMTAsIDMxMjE2LCAzMTIyMiwgCi0gICAgMzEyMjgsIDMxMjM1LCAzMTI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyNDgsIDMxMjU0LCAzMTI1OSwgMzEyNjQsIDMxMjY5LCAKLSAgICAzMTI3NCwgMzEyNzksIDMxMjg0LCAzMTI5MCwgMzEyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMzAxLCAzMTMwNiwgMzEzMTEsIAotICAgIDMxMzE2LCAzMTMyMSwgMzEzMjYsIDMxMzMxLCAzMTM0MCwgMzEzNDcsIDMxMzUyLCAzMTM1NywgMzEzNjIsIDMxMzY3LCAKLSAgICAzMTM3MiwgMCwgMCwgMzEzNzcsIDMxMzg0LCAzMTM4NywgMzEzOTAsIDMxMzkzLCAzMTM5OCwgMzE0MDIsIDMxNDA4LCAKLSAgICAzMTQxMiwgMzE0MTcsIDMxNDI0LCAzMTQzMiwgMzE0MzYsIDMxNDQxLCAzMTQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQwODAsIDM0MDg4LCAzNDA5NiwgMzQxMDQsIAorICAgIDM0MTEyLCAzNDEyMiwgMzQxMzIsIDM0MTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDE1MiwgMzQxNTcsIDM0MTYyLCAKKyAgICAzNDE2NywgMzQxNzIsIDM0MTgxLCAzNDE5MiwgMzQyMDEsIDM0MjEyLCAzNDIxOCwgMzQyMzEsIDM0MjM3LCAzNDI0NCwgCisgICAgMzQyNTEsIDM0MjU2LCAzNDI2MiwgMzQyNjgsIDM0Mjc5LCAzNDI4OCwgMzQyOTUsIDM0MzAyLCAzNDMxMSwgMzQzMTgsIAorICAgIDM0MzI3LCAzNDMzNywgMzQzNDcsIDM0MzU0LCAzNDM2MSwgMzQzNjgsIDM0Mzc4LCAzNDM4MywgMzQzOTEsIDM0Mzk3LCAKKyAgICAzNDQwNSwgMzQ0MTQsIDM0NDE5LCAzNDQyNiwgMzQ0MzIsIDM0NDM3LCAwLCAzNDQ0MiwgMzQ0NDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM0NDU1LCAzNDQ2MCwgMzQ0NjYsIDM0NDczLCAzNDQ4MSwgMzQ0ODcsIDM0NDkzLCAzNDQ5OSwgMzQ1MDQsIDM0NTExLCAKKyAgICAzNDUxNywgMzQ1MjMsIDM0NTI5LCAzNDUzNywgMzQ1NDMsIDM0NTUxLCAzNDU1NiwgMzQ1NjIsIDM0NTY4LCAzNDU3NSwgCisgICAgMzQ1ODMsIDM0NTkwLCAzNDU5NiwgMzQ2MDMsIDM0NjEwLCAzNDYxNiwgMzQ2MjMsIDM0NjMwLCAzNDYzNiwgMzQ2NDEsIAorICAgIDM0NjQ3LCAzNDY1NSwgMzQ2NjQsIDM0NjcwLCAzNDY3NiwgMzQ2ODIsIDM0Njg4LCAzNDY5NiwgMzQ3MDAsIDM0NzA2LCAKKyAgICAzNDcxMiwgMzQ3MTgsIDM0NzI0LCAzNDczMCwgMzQ3MzYsIDM0NzQwLCAzNDc0NSwgMzQ3NTAsIDM0NzU3LCAzNDc2MiwgCisgICAgMzQ3NjYsIDM0NzcyLCAzNDc3NywgMzQ3ODIsIDM0Nzg2LCAzNDc5MSwgMzQ3OTYsIDM0ODAwLCAzNDgwNSwgMzQ4MTAsIAorICAgIDM0ODE3LCAzNDgyMSwgMzQ4MjYsIDM0ODMxLCAzNDgzNSwgMzQ4NDAsIDM0ODQ0LCAzNDg0OSwgMzQ4NTMsIDM0ODU5LCAKKyAgICAzNDg2NCwgMzQ4NzEsIDM0ODc2LCAzNDg4MSwgMzQ4ODUsIDM0ODkwLCAzNDg5NSwgMzQ5MDIsIDM0OTA3LCAzNDkxMywgCisgICAgMzQ5MTgsIDM0OTIzLCAzNDkyOCwgMzQ5MzIsIDM0OTM3LCAzNDk0NCwgMzQ5NTEsIDM0OTU2LCAzNDk2MSwgMzQ5NjUsIAorICAgIDM0OTcxLCAzNDk3OCwgMzQ5ODMsIDM0OTg4LCAzNDk5MywgMzQ5OTksIDM1MDA0LCAzNTAxMCwgMzUwMTUsIDM1MDIxLCAKKyAgICAzNTAyNywgMzUwMzMsIDM1MDQwLCAzNTA0NywgMzUwNTQsIDM1MDYxLCAzNTA2OCwgMzUwNzUsIDM1MDgwLCAzNTA4OCwgCisgICAgMzUwOTcsIDM1MTA2LCAzNTExNSwgMzUxMjQsIDM1MTMzLCAzNTE0MiwgMzUxNTQsIDM1MTYzLCAzNTE3MiwgMzUxODEsIAorICAgIDM1MTg4LCAzNTE5MywgMzUyMDAsIDM1MjA4LCAzNTIxNiwgMzUyMjMsIDM1MjMwLCAzNTIzNywgMzUyNDQsIDM1MjUyLCAKKyAgICAzNTI2MSwgMzUyNzAsIDM1Mjc5LCAzNTI4OCwgMzUyOTcsIDM1MzA2LCAzNTMxNSwgMzUzMjQsIDM1MzMzLCAzNTM0MiwgCisgICAgMzUzNTEsIDM1MzYwLCAzNTM2OSwgMzUzNzgsIDM1Mzg2LCAzNTM5NSwgMzU0MDYsIDM1NDE0LCAzNTQyMywgMzU0MzQsIAorICAgIDM1NDQzLCAzNTQ1MiwgMzU0NjEsIDM1NDcwLCAzNTQ3OCwgMzU0ODcsIDM1NDk0LCAzNTQ5OSwgMzU1MDcsIDM1NTEyLCAKKyAgICAzNTUxOSwgMzU1MjQsIDM1NTMzLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU1OCwgMzU1NjMsIDM1NTcxLCAzNTU3OSwgCisgICAgMzU1ODgsIDM1NTk3LCAzNTYwMiwgMzU2MDksIDM1NjIwLCAzNTYyOCwgMzU2MzcsIDM1NjQzLCAzNTY0OSwgMzU2NTQsIAorICAgIDM1NjYxLCAzNTY2NiwgMzU2NzUsIDM1NjgwLCAzNTY4NSwgMzU2OTAsIDM1Njk3LCAzNTcwNCwgMzU3MDksIDM1NzE4LCAKKyAgICAzNTcyNiwgMzU3MzEsIDM1NzM2LCAzNTc0MywgMzU3NTAsIDM1NzU0LCAzNTc1OCwgMzU3NjEsIDM1NzY0LCAzNTc2NywgCisgICAgMzU3NzAsIDM1NzczLCAzNTc3NiwgMzU3ODMsIDM1Nzg2LCAzNTc4OSwgMzU3OTQsIDM1Nzk4LCAzNTgwMiwgMzU4MDYsIAorICAgIDM1ODEwLCAzNTgxNCwgMzU4MjMsIDM1ODI5LCAzNTgzNSwgMzU4NDEsIDM1ODQ5LCAzNTg1NywgMzU4NjMsIDM1ODY5LCAKKyAgICAzNTg3NiwgMzU4ODIsIDM1ODg3LCAzNTg5MywgMzU5MDAsIDM1OTA2LCAzNTkxMywgMzU5MTksIDM1OTI3LCAzNTkzMywgCisgICAgMzU5NDAsIDM1OTQ2LCAzNTk1MiwgMzU5NTgsIDM1OTY0LCAzNTk3MCwgMzU5NzYsIDM1OTg3LCAzNTk5NywgMzYwMDMsIAorICAgIDM2MDA5LCAzNjAxOSwgMzYwMjUsIDM2MDMzLCAzNjA0MSwgMzYwNDksIDAsIDAsIDAsIDAsIDAsIDM2MDU0LCAzNjA1OCwgCisgICAgMzYwNjUsIDM2MDcyLCAzNjA3NywgMzYwODYsIDM2MDk0LCAzNjEwMiwgMzYxMDksIDM2MTE2LCAzNjEyMywgMzYxMzAsIAorICAgIDM2MTM4LCAzNjE0NiwgMzYxNTYsIDM2MTY2LCAzNjE3NCwgMzYxODIsIDM2MTkwLCAzNjE5OCwgMzYyMDcsIDM2MjE2LCAKKyAgICAzNjIyNCwgMzYyMzIsIDM2MjQxLCAzNjI1MCwgMzYyNjAsIDM2MjcwLCAzNjI3OSwgMzYyODgsIDM2Mjk2LCAzNjMwNCwgCisgICAgMzYzMTIsIDM2MzIwLCAzNjMzMCwgMzYzNDAsIDM2MzQ4LCAzNjM1NiwgMzYzNjQsIDM2MzcyLCAzNjM4MCwgMzYzODgsIAorICAgIDM2Mzk2LCAzNjQwNCwgMzY0MTIsIDM2NDIwLCAzNjQyOCwgMzY0MzYsIDM2NDQ1LCAzNjQ1NCwgMzY0NjMsIDM2NDcyLCAKKyAgICAzNjQ4MiwgMzY0OTIsIDM2NDk5LCAzNjUwNiwgMzY1MTQsIDM2NTIyLCAzNjUzMSwgMzY1NDAsIDM2NTQ4LCAzNjU1NiwgCisgICAgMzY1NjgsIDM2NTgwLCAzNjU4OSwgMzY1OTgsIDM2NjA3LCAzNjYxNiwgMzY2MjMsIDM2NjMwLCAzNjYzOCwgMzY2NDYsIAorICAgIDM2NjU0LCAzNjY2MiwgMzY2NzAsIDM2Njc4LCAzNjY4NiwgMzY2OTQsIDM2NzAzLCAzNjcxMiwgMzY3MjEsIDM2NzMwLCAKKyAgICAzNjczOSwgMzY3NDgsIDM2NzU4LCAzNjc2OCwgMzY3NzgsIDM2Nzg4LCAzNjc5NywgMzY4MDYsIDM2ODEzLCAzNjgyMCwgCisgICAgMzY4MjgsIDM2ODM2LCAzNjg0NCwgMzY4NTIsIDM2ODYwLCAzNjg2OCwgMzY4ODAsIDM2ODkyLCAzNjkwMSwgMzY5MTAsIAorICAgIDM2OTE4LCAzNjkyNiwgMzY5MzQsIDM2OTQyLCAzNjk1MywgMzY5NjQsIDM2OTc1LCAzNjk4NiwgMzY5OTgsIDM3MDEwLCAKKyAgICAzNzAxOCwgMzcwMjYsIDM3MDM0LCAzNzA0MiwgMzcwNTEsIDM3MDYwLCAzNzA2OSwgMzcwNzgsIDM3MDg2LCAzNzA5NCwgCisgICAgMzcxMDIsIDM3MTEwLCAzNzExOCwgMzcxMjYsIDM3MTM1LCAzNzE0NCwgMzcxNTQsIDM3MTY0LCAzNzE3MiwgMzcxODAsIAorICAgIDM3MTg4LCAzNzE5NiwgMzcyMDQsIDM3MjEyLCAzNzIxOSwgMzcyMjYsIDM3MjM0LCAzNzI0MiwgMzcyNTAsIDM3MjU4LCAKKyAgICAzNzI2NiwgMzcyNzQsIDM3MjgyLCAzNzI5MCwgMzcyOTgsIDM3MzA2LCAzNzMxNCwgMzczMjIsIDM3MzMwLCAzNzMzOCwgCisgICAgMzczNDYsIDM3MzU0LCAzNzM2MywgMzczNzIsIDM3MzgxLCAzNzM4OSwgMzczOTgsIDM3NDA3LCAzNzQxNiwgMzc0MjUsIAorICAgIDM3NDM1LCAzNzQ0NCwgMzc0NTEsIDM3NDU2LCAzNzQ2MywgMzc0NzAsIDM3NDc4LCAzNzQ4NiwgMzc0OTUsIDM3NTA0LCAKKyAgICAzNzUxNCwgMzc1MjQsIDM3NTM1LCAzNzU0NiwgMzc1NTYsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk1LCAzNzYwNCwgCisgICAgMzc2MTQsIDM3NjI0LCAzNzYzNSwgMzc2NDYsIDM3NjU2LCAzNzY2NiwgMzc2NzYsIDM3Njg2LCAzNzY5MywgMzc3MDAsIAorICAgIDM3NzA4LCAzNzcxNiwgMzc3MjMsIDM3NzMwLCAzNzczOSwgMzc3NDgsIDM3NzU4LCAzNzc2OCwgMzc3NzksIDM3NzkwLCAKKyAgICAzNzgwMCwgMzc4MTAsIDM3ODIwLCAzNzgzMCwgMzc4MzksIDM3ODQ4LCAzNzg1NiwgMzc4NjQsIDM3ODcxLCAzNzg3OCwgCisgICAgMzc4ODYsIDM3ODk0LCAzNzkwMywgMzc5MTIsIDM3OTIyLCAzNzkzMiwgMzc5NDMsIDM3OTU0LCAzNzk2NCwgMzc5NzQsIAorICAgIDM3OTg0LCAzNzk5NCwgMzgwMDMsIDM4MDEyLCAzODAyMiwgMzgwMzIsIDM4MDQzLCAzODA1NCwgMzgwNjQsIDM4MDc0LCAKKyAgICAzODA4NCwgMzgwOTQsIDM4MTAxLCAzODEwOCwgMzgxMTYsIDM4MTI0LCAzODEzMywgMzgxNDIsIDM4MTUyLCAzODE2MiwgCisgICAgMzgxNzMsIDM4MTg0LCAzODE5NCwgMzgyMDQsIDM4MjE0LCAzODIyNCwgMzgyMzIsIDM4MjQwLCAzODI0OCwgMzgyNTYsIAorICAgIDM4MjY1LCAzODI3NCwgMzgyODIsIDM4MjkwLCAzODI5NywgMzgzMDQsIDM4MzExLCAzODMxOCwgMzgzMjYsIDM4MzM0LCAKKyAgICAzODM0MiwgMzgzNTAsIDM4MzYxLCAzODM3MiwgMzgzODMsIDM4Mzk0LCAzODQwNSwgMzg0MTYsIDM4NDI0LCAzODQzMiwgCisgICAgMzg0NDMsIDM4NDU0LCAzODQ2NSwgMzg0NzYsIDM4NDg3LCAzODQ5OCwgMzg1MDYsIDM4NTE0LCAzODUyNSwgMzg1MzYsIAorICAgIDM4NTQ3LCAwLCAwLCAzODU1OCwgMzg1NjYsIDM4NTc0LCAzODU4NSwgMzg1OTYsIDM4NjA3LCAwLCAwLCAzODYxOCwgCisgICAgMzg2MjYsIDM4NjM0LCAzODY0NSwgMzg2NTYsIDM4NjY3LCAzODY3OCwgMzg2ODksIDM4NzAwLCAzODcwOCwgMzg3MTYsIAorICAgIDM4NzI3LCAzODczOCwgMzg3NDksIDM4NzYwLCAzODc3MSwgMzg3ODIsIDM4NzkwLCAzODc5OCwgMzg4MDksIDM4ODIwLCAKKyAgICAzODgzMSwgMzg4NDIsIDM4ODUzLCAzODg2NCwgMzg4NzIsIDM4ODgwLCAzODg5MSwgMzg5MDIsIDM4OTEzLCAzODkyNCwgCisgICAgMzg5MzUsIDM4OTQ2LCAzODk1NCwgMzg5NjIsIDM4OTczLCAzODk4NCwgMzg5OTUsIDAsIDAsIDM5MDA2LCAzOTAxNCwgCisgICAgMzkwMjIsIDM5MDMzLCAzOTA0NCwgMzkwNTUsIDAsIDAsIDM5MDY2LCAzOTA3NCwgMzkwODIsIDM5MDkzLCAzOTEwNCwgCisgICAgMzkxMTUsIDM5MTI2LCAzOTEzNywgMCwgMzkxNDgsIDAsIDM5MTU2LCAwLCAzOTE2NywgMCwgMzkxNzgsIDM5MTg5LCAKKyAgICAzOTE5NywgMzkyMDUsIDM5MjE2LCAzOTIyNywgMzkyMzgsIDM5MjQ5LCAzOTI2MCwgMzkyNzEsIDM5Mjc5LCAzOTI4NywgCisgICAgMzkyOTgsIDM5MzA5LCAzOTMyMCwgMzkzMzEsIDM5MzQyLCAzOTM1MywgMzkzNjEsIDM5MzY5LCAzOTM3NywgMzkzODUsIAorICAgIDM5MzkzLCAzOTQwMSwgMzk0MDksIDM5NDE3LCAzOTQyNSwgMzk0MzMsIDM5NDQxLCAzOTQ0OSwgMzk0NTcsIDAsIDAsIAorICAgIDM5NDY1LCAzOTQ3NiwgMzk0ODcsIDM5NTAxLCAzOTUxNSwgMzk1MjksIDM5NTQzLCAzOTU1NywgMzk1NzEsIDM5NTgyLCAKKyAgICAzOTU5MywgMzk2MDcsIDM5NjIxLCAzOTYzNSwgMzk2NDksIDM5NjYzLCAzOTY3NywgMzk2ODgsIDM5Njk5LCAzOTcxMywgCisgICAgMzk3MjcsIDM5NzQxLCAzOTc1NSwgMzk3NjksIDM5NzgzLCAzOTc5NCwgMzk4MDUsIDM5ODE5LCAzOTgzMywgMzk4NDcsIAorICAgIDM5ODYxLCAzOTg3NSwgMzk4ODksIDM5OTAwLCAzOTkxMSwgMzk5MjUsIDM5OTM5LCAzOTk1MywgMzk5NjcsIDM5OTgxLCAKKyAgICAzOTk5NSwgNDAwMDYsIDQwMDE3LCA0MDAzMSwgNDAwNDUsIDQwMDU5LCA0MDA3MywgNDAwODcsIDQwMTAxLCA0MDEwOSwgCisgICAgNDAxMTcsIDQwMTI4LCA0MDEzNiwgMCwgNDAxNDcsIDQwMTU1LCA0MDE2NiwgNDAxNzQsIDQwMTgyLCA0MDE5MCwgNDAxOTgsIAorICAgIDQwMjA2LCA0MDIwOSwgNDAyMTIsIDQwMjE1LCA0MDIxOCwgNDAyMjQsIDQwMjM1LCA0MDI0MywgMCwgNDAyNTQsIDQwMjYyLCAKKyAgICA0MDI3MywgNDAyODEsIDQwMjg5LCA0MDI5NywgNDAzMDUsIDQwMzEzLCA0MDMxOSwgNDAzMjUsIDQwMzMxLCA0MDMzOSwgCisgICAgNDAzNDcsIDQwMzU4LCAwLCAwLCA0MDM2OSwgNDAzNzcsIDQwMzg4LCA0MDM5NiwgNDA0MDQsIDQwNDEyLCAwLCA0MDQyMCwgCisgICAgNDA0MjYsIDQwNDMyLCA0MDQzOCwgNDA0NDYsIDQwNDU0LCA0MDQ2NSwgNDA0NzYsIDQwNDg0LCA0MDQ5MiwgNDA1MDAsIAorICAgIDQwNTExLCA0MDUxOSwgNDA1MjcsIDQwNTM1LCA0MDU0MywgNDA1NTEsIDQwNTU3LCA0MDU2MywgMCwgMCwgNDA1NjYsIAorICAgIDQwNTc3LCA0MDU4NSwgMCwgNDA1OTYsIDQwNjA0LCA0MDYxNSwgNDA2MjMsIDQwNjMxLCA0MDYzOSwgNDA2NDcsIDQwNjU1LCAKKyAgICA0MDY1OCwgMCwgNDA2NjEsIDQwNjY1LCA0MDY2OSwgNDA2NzMsIDQwNjc3LCA0MDY4MSwgNDA2ODUsIDQwNjg5LCA0MDY5MywgCisgICAgNDA2OTcsIDQwNzAxLCA0MDcwNSwgNDA3MTEsIDQwNzE3LCA0MDcyMywgNDA3MjYsIDQwNzI5LCA0MDczMSwgNDA3MzUsIAorICAgIDQwNzM5LCA0MDc0MywgNDA3NDcsIDQwNzUwLCA0MDc1NCwgNDA3NTgsIDQwNzY0LCA0MDc3MCwgNDA3NzcsIDQwNzg0LCAKKyAgICA0MDc4OSwgNDA3OTQsIDQwODAwLCA0MDgwNiwgNDA4MDgsIDQwODExLCA0MDgxMywgNDA4MTcsIDQwODIxLCA0MDgyNSwgCisgICAgNDA4MjksIDQwODMzLCA0MDgzNywgNDA4NDEsIDQwODQ1LCA0MDg0OSwgNDA4NTUsIDQwODU5LCA0MDg2MywgNDA4NjksIAorICAgIDQwODc0LCA0MDg4MSwgNDA4ODMsIDQwODg2LCA0MDg5MCwgNDA4OTQsIDQwODk5LCA0MDkwNSwgNDA5MDcsIDQwOTE2LCAKKyAgICA0MDkyNSwgNDA5MjgsIDQwOTMyLCA0MDkzNCwgNDA5MzYsIDQwOTM4LCA0MDk0MSwgNDA5NDcsIDQwOTQ5LCA0MDk1MywgCisgICAgNDA5NTcsIDQwOTY0LCA0MDk3MSwgNDA5NzUsIDQwOTgwLCA0MDk4NSwgNDA5OTAsIDQwOTk1LCA0MDk5OSwgNDEwMDMsIAorICAgIDQxMDA2LCA0MTAxMCwgNDEwMTQsIDQxMDIxLCA0MTAyNiwgNDEwMzAsIDQxMDM0LCA0MTAzOSwgNDEwNDMsIDQxMDQ3LCAKKyAgICA0MTA1MiwgNDEwNTcsIDQxMDYxLCA0MTA2NSwgNDEwNjksIDQxMDcxLCA0MTA3NiwgNDEwODEsIDQxMDg1LCA0MTA4OSwgCisgICAgNDEwOTMsIDQxMDk3LCAwLCA0MTEwMSwgNDExMDUsIDQxMTA5LCA0MTExNSwgNDExMjEsIDQxMTI3LCA0MTEzMywgNDExNDAsIAorICAgIDQxMTQ3LCA0MTE1MiwgNDExNTcsIDQxMTYxLCAwLCAwLCA0MTE2NywgNDExNzAsIDQxMTczLCA0MTE3NiwgNDExODAsIAorICAgIDQxMTgzLCA0MTE4NywgNDExOTEsIDQxMTk1LCA0MTIwMCwgNDEyMDUsIDQxMjEwLCA0MTIxNywgNDEyMjEsIDQxMjI0LCAKKyAgICA0MTIyNywgNDEyMzAsIDQxMjMzLCA0MTIzNiwgNDEyMzksIDQxMjQzLCA0MTI0NiwgNDEyNTAsIDQxMjU0LCA0MTI1OCwgCisgICAgNDEyNjMsIDQxMjY4LCAwLCA0MTI3MywgNDEyNzksIDQxMjg1LCA0MTI5MSwgNDEyOTgsIDQxMzA1LCA0MTMxMiwgNDEzMTksIAorICAgIDQxMzI1LCA0MTMzMiwgNDEzMzksIDQxMzQ2LCA0MTM1MywgMCwgMCwgMCwgNDEzNjAsIDQxMzYzLCA0MTM2NiwgNDEzNjksIAorICAgIDQxMzc0LCA0MTM3NywgNDEzODAsIDQxMzgzLCA0MTM4NiwgNDEzODksIDQxMzkyLCA0MTM5NywgNDE0MDAsIDQxNDAzLCAKKyAgICA0MTQwNiwgNDE0MDksIDQxNDEyLCA0MTQxNywgNDE0MjAsIDQxNDIzLCA0MTQyNiwgNDE0MjksIDQxNDMyLCA0MTQzNywgCisgICAgNDE0NDAsIDQxNDQzLCA0MTQ0OCwgNDE0NTMsIDQxNDU3LCA0MTQ2MCwgNDE0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNDY2LCA0MTQ3MSwgNDE0NzYsIDQxNDgzLCA0MTQ5MSwgNDE0OTYsIAorICAgIDQxNTAxLCA0MTUwNSwgNDE1MDksIDQxNTE0LCA0MTUyMSwgNDE1MjgsIDQxNTMyLCA0MTUzNywgNDE1NDIsIDQxNTQ3LCAKKyAgICA0MTU1MiwgNDE1NTksIDQxNTY0LCA0MTU2OSwgNDE1NzQsIDQxNTgzLCA0MTU5MCwgNDE1OTcsIDQxNjAxLCA0MTYwNiwgCisgICAgNDE2MTIsIDQxNjE3LCA0MTYyNCwgNDE2MzIsIDQxNjQwLCA0MTY0NCwgNDE2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNjUyLCA0MTY1NiwgNDE2NjQsIDQxNjY4LCA0MTY3MiwgNDE2NzcsIDQxNjgxLCAKKyAgICA0MTY4NSwgNDE2ODksIDQxNjkxLCA0MTY5NSwgNDE2OTksIDQxNzAzLCA0MTcwOCwgNDE3MTIsIDQxNzE2LCA0MTcyNCwgCisgICAgNDE3MjcsIDQxNzMxLCA0MTczNCwgNDE3MzcsIDQxNzQzLCA0MTc0NywgNDE3NTAsIDQxNzU2LCA0MTc2MCwgNDE3NjQsIAorICAgIDQxNzY4LCA0MTc3MSwgNDE3NzUsIDQxNzc4LCA0MTc4MiwgNDE3ODQsIDQxNzg3LCA0MTc5MCwgNDE3OTQsIDQxNzk2LCAKKyAgICA0MTgwMCwgNDE4MDMsIDQxODA2LCA0MTgxMSwgNDE4MTYsIDQxODIzLCA0MTgyNiwgNDE4MjksIDQxODMzLCA0MTgzOCwgCisgICAgNDE4NDEsIDQxODQ0LCA0MTg0NywgNDE4NTEsIDQxODU2LCA0MTg2MCwgNDE4NjMsIDQxODY1LCA0MTg2OCwgNDE4NzEsIAorICAgIDQxODc0LCA0MTg3OCwgNDE4ODMsIDQxODg2LCA0MTg5MCwgNDE4OTQsIDQxODk4LCA0MTkwMiwgNDE5MDcsIDQxOTEzLCAKKyAgICA0MTkxOCwgNDE5MjMsIDQxOTI5LCA0MTkzNCwgNDE5MzksIDQxOTQzLCA0MTk0NywgNDE5NTIsIDQxOTU2LCA0MTk2MCwgCisgICAgNDE5NjMsIDQxOTY1LCA0MTk3MCwgNDE5NzYsIDQxOTgzLCA0MTk5MCwgNDE5OTcsIDQyMDA0LCA0MjAxMSwgNDIwMTgsIAorICAgIDQyMDI1LCA0MjAzMiwgNDIwNDAsIDQyMDQ3LCA0MjA1NSwgNDIwNjIsIDQyMDY5LCA0MjA3NywgNDIwODUsIDQyMDkwLCAKKyAgICA0MjA5NSwgNDIxMDAsIDQyMTA1LCA0MjExMCwgNDIxMTUsIDQyMTIwLCA0MjEyNiwgNDIxMzEsIDQyMTM3LCA0MjE0MywgCisgICAgNDIxNDksIDQyMTU1LCA0MjE2MSwgNDIxNjgsIDQyMTc2LCA0MjE4MywgNDIxODksIDQyMTk1LCA0MjIwMSwgNDIyMDcsIAorICAgIDQyMjEzLCA0MjIxOSwgNDIyMjYsIDQyMjMyLCA0MjIzOSwgNDIyNDYsIDQyMjUzLCA0MjI2MCwgNDIyNjcsIDQyMjc1LCAKKyAgICA0MjI4NCwgNDIyOTIsIDQyMzAzLCA0MjMxMSwgNDIzMTksIDQyMzI4LCA0MjMzNSwgNDIzNDQsIDQyMzUzLCA0MjM2MSwgCisgICAgNDIzNzAsIDQyMzc4LCA0MjM4MiwgMCwgMCwgMCwgMCwgNDIzODYsIDQyMzg4LCA0MjM5MCwgNDIzOTIsIDQyMzk0LCAKKyAgICA0MjM5NywgNDI0MDAsIDQyNDA0LCA0MjQwOCwgNDI0MTMsIDQyNDE4LCA0MjQyMiwgNDI0MjYsIDQyNDMwLCA0MjQzNCwgCisgICAgNDI0MzksIDQyNDQ0LCA0MjQ0OSwgNDI0NTQsIDQyNDU5LCA0MjQ2NCwgNDI0NjksIDQyNDc0LCA0MjQ3OSwgNDI0ODQsIAorICAgIDQyNDkwLCA0MjQ5NCwgNDI0OTgsIDQyNTAzLCA0MjUwOCwgNDI1MTMsIDQyNTE4LCA0MjUyMiwgNDI1MjksIDQyNTM2LCAKKyAgICA0MjU0MywgNDI1NTAsIDQyNTU3LCA0MjU2NCwgNDI1NzEsIDQyNTc4LCA0MjU4NiwgNDI1OTgsIDQyNjA0LCA0MjYxMCwgCisgICAgNDI2MTcsIDQyNjI0LCA0MjYzMSwgNDI2MzgsIDQyNjQ1LCA0MjY1MiwgNDI2NTksIDQyNjY2LCA0MjY3MSwgNDI2NzcsIAorICAgIDQyNjgyLCA0MjY4NywgNDI2OTIsIDQyNjk3LCA0MjcwMiwgNDI3MDksIDQyNzE2LCA0MjcyMSwgNDI3MjcsIDQyNzMyLCAKKyAgICA0MjczNSwgNDI3MzgsIDQyNzQxLCA0Mjc0NCwgNDI3NDgsIDQyNzUyLCA0Mjc1NywgNDI3NjIsIDQyNzY4LCA0Mjc3NCwgCisgICAgNDI3NzgsIDQyNzgyLCA0Mjc4NiwgNDI3OTAsIDQyNzk1LCA0MjgwMCwgNDI4MDQsIDQyODA4LCA0MjgxMiwgNDI4MTYsIAorICAgIDQyODIxLCA0MjgyNiwgNDI4MjksIDQyODMyLCA0MjgzNSwgNDI4MzgsIDQyODQ0LCA0Mjg1MSwgNDI4NjIsIDQyODcyLCAKKyAgICA0Mjg3NiwgNDI4ODQsIDQyODkxLCA0Mjg5OSwgNDI5MDgsIDQyOTEyLCA0MjkxOCwgNDI5MjQsIDQyOTI4LCA0MjkzMywgCisgICAgNDI5MzgsIDQyOTQ0LCA0Mjk1MCwgNDI5NTYsIDQyOTYzLCA0Mjk2NywgNDI5NzEsIDQyOTc2LCA0Mjk3OSwgNDI5ODEsIAorICAgIDQyOTg1LCA0Mjk4OSwgNDI5OTcsIDQzMDAxLCA0MzAwMywgNDMwMDUsIDQzMDA5LCA0MzAxNywgNDMwMjIsIDQzMDI4LCAKKyAgICA0MzAzOCwgNDMwNDUsIDQzMDUwLCA0MzA1NCwgNDMwNTgsIDQzMDYyLCA0MzA2NSwgNDMwNjgsIDQzMDcxLCA0MzA3NSwgCisgICAgNDMwNzksIDQzMDgzLCA0MzA4NywgNDMwOTEsIDQzMDk0LCA0MzA5OCwgNDMxMDIsIDQzMTA1LCA0MzEwNywgNDMxMTAsIAorICAgIDQzMTEyLCA0MzExNiwgNDMxMjAsIDQzMTIyLCA0MzEyOCwgNDMxMzEsIDQzMTM2LCA0MzE0MCwgNDMxNDQsIDQzMTQ2LCAKKyAgICA0MzE0OCwgNDMxNTAsIDQzMTUzLCA0MzE1NywgNDMxNjEsIDQzMTY1LCA0MzE2OSwgNDMxNzMsIDQzMTc5LCA0MzE4NSwgCisgICAgNDMxODcsIDQzMTg5LCA0MzE5MSwgNDMxOTMsIDQzMTk2LCA0MzE5OCwgNDMyMDIsIDQzMjA0LCA0MzIwOCwgNDMyMTIsIAorICAgIDQzMjE4LCA0MzIyMiwgNDMyMjYsIDQzMjMwLCA0MzIzNCwgNDMyMzgsIDQzMjQ0LCA0MzI0OCwgNDMyNTgsIDQzMjY4LCAKKyAgICA0MzI3MiwgNDMyNzgsIDQzMjg1LCA0MzI4OSwgNDMyOTMsIDQzMjk2LCA0MzMwMSwgNDMzMDUsIDQzMzExLCA0MzMxNSwgCisgICAgNDMzMjgsIDQzMzM3LCA0MzM0MSwgNDMzNDUsIDQzMzUxLCA0MzM1NSwgNDMzNTgsIDQzMzYwLCA0MzM2MywgNDMzNjcsIAorICAgIDQzMzcxLCA0MzM3OCwgNDMzODIsIDQzMzg2LCA0MzM5MCwgNDMzOTMsIDQzMzk4LCA0MzQwMywgNDM0MDksIDQzNDE1LCAKKyAgICA0MzQyMCwgNDM0MjUsIDQzNDMzLCA0MzQ0MSwgNDM0NDUsIDQzNDQ5LCA0MzQ1MSwgNDM0NTYsIDQzNDYwLCA0MzQ2NCwgCisgICAgNDM0NzIsIDQzNDgwLCA0MzQ4NywgNDM0OTQsIDQzNTAzLCA0MzUxMiwgNDM1MTgsIDQzNTI0LCA0MzUzMiwgNDM1NDAsIAorICAgIDQzNTQyLCA0MzU0NCwgNDM1NTAsIDQzNTU2LCA0MzU2MywgNDM1NzAsIDQzNTc2LCA0MzU4MiwgNDM1ODYsIDQzNTkwLCAKKyAgICA0MzU5NywgNDM2MDQsIDQzNjExLCA0MzYxOCwgNDM2MjgsIDQzNjM4LCA0MzY0NiwgNDM2NTQsIDQzNjU2LCA0MzY2MCwgCisgICAgNDM2NjQsIDQzNjY5LCA0MzY3NCwgNDM2ODIsIDQzNjkwLCA0MzY5MywgNDM2OTYsIDQzNjk5LCA0MzcwMiwgNDM3MDUsIAorICAgIDQzNzEwLCA0MzcxNCwgNDM3MTksIDQzNzI0LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNiwgNDM3MzksIDQzNzQzLCAKKyAgICA0Mzc0NiwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTcsIDQzNzU5LCA0Mzc2MSwgNDM3NjMsIDQzNzcxLCA0Mzc3OSwgCisgICAgNDM3ODUsIDQzNzg5LCA0Mzc5NSwgNDM4MDUsIDQzODExLCA0MzgxNywgNDM4MjMsIDQzODMxLCA0Mzg0MCwgNDM4NTIsIAorICAgIDQzODU2LCA0Mzg2MCwgNDM4NjIsIDQzODY4LCA0Mzg3MCwgNDM4NzIsIDQzODc0LCA0Mzg3NiwgNDM4ODIsIDQzODg1LCAKKyAgICA0Mzg5MSwgNDM4OTcsIDQzOTAxLCA0MzkwNSwgNDM5MDksIDQzOTEyLCA0MzkxNiwgNDM5MjAsIDQzOTIyLCA0MzkzMSwgCisgICAgNDM5NDAsIDQzOTQ1LCA0Mzk1MCwgNDM5NTYsIDQzOTYyLCA0Mzk2OCwgNDM5NzEsIDQzOTc0LCA0Mzk3NywgNDM5ODAsIAorICAgIDQzOTgyLCA0Mzk4NywgNDM5OTIsIDQzOTk3LCA0NDAwMywgNDQwMDksIDQ0MDE4LCA0NDAyNywgNDQwMzQsIDQ0MDQxLCAKKyAgICA0NDA0OCwgNDQwNTUsIDQ0MDY1LCA0NDA3NSwgNDQwODUsIDQ0MDk1LCA0NDEwNSwgNDQxMTUsIDQ0MTI0LCA0NDEzMywgCisgICAgNDQxNDIsIDQ0MTUxLCA0NDE1OSwgNDQxNzEsIDQ0MTgyLCA0NDE5OCwgNDQyMDEsIDQ0MjA3LCA0NDIxMywgNDQyMTksIAorICAgIDQ0MjI3LCA0NDI0MiwgNDQyNTgsIDQ0MjY0LCA0NDI3MCwgNDQyNzcsIDQ0MjgzLCA0NDI5MiwgNDQyOTksIDQ0MzEzLCAKKyAgICA0NDMyOCwgNDQzMzMsIDQ0MzM5LCA0NDM0NywgNDQzNTAsIDQ0MzUzLCA0NDM1NSwgNDQzNTgsIDQ0MzYxLCA0NDM2MywgCisgICAgNDQzNjUsIDQ0MzY5LCA0NDM3MiwgNDQzNzUsIDQ0Mzc4LCA0NDM4MSwgNDQzODYsIDQ0MzkxLCA0NDM5NiwgNDQ0MDEsIAorICAgIDQ0NDA2LCA0NDQwOSwgNDQ0MTEsIDQ0NDEzLCA0NDQxNSwgNDQ0MTksIDQ0NDIzLCA0NDQyNywgNDQ0MzMsIDQ0NDM4LCAKKyAgICA0NDQ0MCwgNDQ0NDIsIDQ0NDQ3LCA0NDQ1MiwgNDQ0NTcsIDQ0NDYyLCA0NDQ2NywgNDQ0NzIsIDQ0NDc0LCA0NDQ3NiwgCisgICAgNDQ0ODYsIDQ0NDkwLCA0NDQ5OCwgNDQ1MDcsIDQ0NTA5LCA0NDUxNCwgNDQ1MTksIDQ0NTI3LCA0NDUzMSwgNDQ1MzMsIAorICAgIDQ0NTM3LCA0NDUzOSwgNDQ1NDMsIDQ0NTQ3LCA0NDU1MSwgNDQ1NTMsIDQ0NTU1LCA0NDU1NywgNDQ1NjQsIDQ0NTczLCAKKyAgICA0NDU4MiwgNDQ1OTEsIDQ0NjAwLCA0NDYwOSwgNDQ2MTgsIDQ0NjI3LCA0NDYzNiwgNDQ2NDQsIDQ0NjUyLCA0NDY2MSwgCisgICAgNDQ2NzAsIDQ0Njc5LCA0NDY4OCwgNDQ2OTYsIDQ0NzA0LCA0NDcxMywgNDQ3MjIsIDQ0NzMxLCA0NDc0MSwgNDQ3NTAsIAorICAgIDQ0NzYwLCA0NDc2OSwgNDQ3NzksIDQ0Nzg3LCA0NDc5NiwgNDQ4MDYsIDQ0ODE1LCA0NDgyNSwgNDQ4MzQsIDQ0ODQ0LCAKKyAgICA0NDg1MiwgNDQ4NjEsIDQ0ODcwLCA0NDg3OSwgNDQ4ODgsIDQ0ODk3LCA0NDkwNiwgNDQ5MTYsIDQ0OTI1LCA0NDkzNCwgCisgICAgNDQ5NDMsIDQ0OTUzLCA0NDk2MiwgNDQ5NzEsIDQ0OTgwLCA0NDk4OSwgNDQ5OTksIDQ1MDA5LCA0NTAxOCwgNDUwMjcsIAorICAgIDQ1MDM1LCA0NTA0NCwgNDUwNTEsIDQ1MDYwLCA0NTA2OSwgNDUwODAsIDQ1MDg5LCA0NTA5OSwgNDUxMDksIDQ1MTE2LCAKKyAgICA0NTEyMywgNDUxMzAsIDQ1MTM5LCA0NTE0OCwgNDUxNTcsIDQ1MTY2LCA0NTE3MywgNDUxNzgsIDQ1MTg2LCA0NTE5MSwgCisgICAgNDUxOTQsIDQ1MjAxLCA0NTIwNCwgNDUyMDksIDQ1MjE0LCA0NTIxNywgNDUyMjAsIDQ1MjI4LCA0NTIzMSwgNDUyMzYsIAorICAgIDQ1MjM5LCA0NTI0NywgNDUyNTIsIDQ1MjYwLCA0NTI2MywgNDUyNjYsIDQ1MjY5LCA0NTI3NCwgNDUyNzksIDQ1MjgyLCAKKyAgICA0NTI4NSwgNDUyOTMsIDQ1Mjk2LCA0NTMwMywgNDUzMTAsIDQ1MzE0LCA0NTMxOCwgNDUzMjMsIDQ1MzI4LCA0NTMzNCwgCisgICAgNDUzMzksIDQ1MzQ1LCA0NTM1MSwgNDUzNTYsIDQ1MzYyLCA0NTM3MCwgNDUzNzYsIDQ1Mzg0LCA0NTM5MiwgNDUzOTgsIAorICAgIDQ1NDA2LCA0NTQxNCwgNDU0MjIsIDQ1NDMwLCA0NTQzNiwgNDU0NDQsIDQ1NDUyLCA0NTQ2MCwgNDU0NjQsIDQ1NDcwLCAKKyAgICA0NTQ4NCwgNDU0OTgsIDQ1NTAyLCA0NTUwNiwgNDU1MTAsIDQ1NTE0LCA0NTUyNCwgNDU1MjgsIDQ1NTMzLCA0NTUzOCwgCisgICAgNDU1NDQsIDQ1NTUwLCA0NTU1NiwgNDU1NjIsIDQ1NTcyLCA0NTU4MiwgNDU1OTAsIDQ1NjAxLCA0NTYxMiwgNDU2MjAsIAorICAgIDQ1NjMxLCA0NTY0MiwgNDU2NTAsIDQ1NjYxLCA0NTY3MiwgNDU2ODAsIDQ1Njg4LCA0NTY5OCwgNDU3MDgsIDQ1NzExLCAKKyAgICA0NTcxNCwgNDU3MTcsIDQ1NzIyLCA0NTcyNiwgNDU3MzIsIDQ1NzM5LCA0NTc0NiwgNDU3NTQsIDQ1NzYxLCA0NTc2NSwgCisgICAgNDU3NjksIDQ1NzczLCA0NTc3NywgNDU3NzksIDQ1NzgzLCA0NTc4NywgNDU3OTIsIDQ1Nzk3LCA0NTgwNCwgNDU4MTEsIAorICAgIDQ1ODE0LCA0NTgyMSwgNDU4MjMsIDQ1ODI1LCA0NTgyOSwgNDU4MzMsIDQ1ODM4LCA0NTg0NCwgNDU4NTAsIDQ1ODU2LCAKKyAgICA0NTg2MiwgNDU4NzEsIDQ1ODgwLCA0NTg4OSwgNDU4OTMsIDQ1ODk1LCA0NTg5OSwgNDU5MDYsIDQ1OTEzLCA0NTkyMCwgCisgICAgNDU5MjcsIDQ1OTM0LCA0NTkzNywgNDU5NDIsIDQ1OTQ4LCA0NTk1MSwgNDU5NTYsIDQ1OTYxLCAwLCA0NTk2NiwgNDU5NzAsIAorICAgIDQ1OTc3LCA0NTk4NCwgNDU5OTEsIDQ1OTk4LCA0NjAwMiwgNDYwMDYsIDQ2MDEwLCA0NjAxNCwgNDYwMjAsIDQ2MDI2LCAKKyAgICA0NjAzMSwgNDYwMzcsIDQ2MDQzLCA0NjA0OSwgNDYwNTUsIDQ2MDYzLCA0NjA3MCwgNDYwNzcsIDQ2MDg0LCA0NjA5MSwgCisgICAgNDYwOTYsIDQ2MTAyLCA0NjExMSwgNDYxMTUsIDQ2MTIyLCA0NjEyNiwgNDYxMzAsIDQ2MTM2LCA0NjE0MiwgNDYxNDgsIAorICAgIDQ2MTU0LCA0NjE1OCwgNDYxNjIsIDQ2MTY1LCA0NjE2OCwgNDYxNzIsIDQ2MTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjE4NiwgNDYxODksIDQ2MTkzLCAKKyAgICA0NjE5NywgNDYyMDMsIDQ2MjA5LCA0NjIxNSwgNDYyMjMsIDQ2MjMwLCA0NjIzNCwgNDYyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MjQ3LCA0NjI1MCwgNDYyNTMsIDQ2MjU2LCAKKyAgICA0NjI1OSwgNDYyNjIsIDQ2MjY1LCA0NjI2OSwgNDYyNzIsIDQ2Mjc2LCA0NjI4MCwgNDYyODQsIDQ2Mjg4LCA0NjI5MiwgCisgICAgNDYyOTYsIDQ2MzAwLCA0NjMwNCwgNDYzMDgsIDQ2MzEyLCA0NjMxNiwgNDYzMjAsIDQ2MzIzLCA0NjMyNiwgNDYzMjksIAorICAgIDQ2MzMyLCA0NjMzNSwgNDYzMzgsIDQ2MzQyLCA0NjM0NSwgNDYzNDksIDQ2MzUzLCA0NjM1NywgNDYzNjEsIDQ2MzY1LCAKKyAgICA0NjM2OSwgNDYzNzMsIDQ2Mzc3LCA0NjM4MSwgNDYzODUsIDQ2Mzg5LCA0NjM5MywgNDYzOTksIDQ2NDA1LCA0NjQxMSwgCisgICAgNDY0MTgsIDQ2NDI1LCA0NjQzMiwgNDY0MzksIDQ2NDQ2LCA0NjQ1MywgNDY0NjAsIDQ2NDY3LCA0NjQ3NCwgNDY0ODEsIAorICAgIDQ2NDg4LCA0NjQ5NSwgNDY1MDIsIDQ2NTA5LCA0NjUxNiwgNDY1MjMsIDQ2NTMwLCA0NjUzNSwgNDY1NDEsIDQ2NTQ3LCAKKyAgICA0NjU1MywgNDY1NTgsIDQ2NTY0LCA0NjU3MCwgNDY1NzYsIDQ2NTgxLCA0NjU4NywgNDY1OTMsIDQ2NTk4LCA0NjYwNCwgCisgICAgNDY2MTAsIDQ2NjE1LCA0NjYyMSwgNDY2MjcsIDQ2NjMyLCA0NjYzOCwgNDY2NDQsIDQ2NjQ5LCA0NjY1NSwgNDY2NjEsIAorICAgIDQ2NjY3LCA0NjY3MywgNDY2NzksIDQ2Njg0LCA0NjY5MCwgNDY2OTYsIDQ2NzAyLCA0NjcwNywgNDY3MTMsIDQ2NzE5LCAKKyAgICA0NjcyNSwgNDY3MzAsIDQ2NzM2LCA0Njc0MiwgNDY3NDcsIDQ2NzUzLCA0Njc1OSwgNDY3NjQsIDQ2NzcwLCA0Njc3NiwgCisgICAgNDY3ODEsIDQ2Nzg3LCA0Njc5MywgNDY3OTgsIDQ2ODA0LCA0NjgxMCwgNDY4MTYsIDQ2ODIyLCA0NjgyOCwgNDY4MzMsIAorICAgIDQ2ODM5LCA0Njg0NSwgNDY4NTEsIDQ2ODU2LCA0Njg2MiwgNDY4NjgsIDQ2ODc0LCA0Njg3OSwgNDY4ODUsIDQ2ODkxLCAKKyAgICA0Njg5NiwgNDY5MDIsIDQ2OTA4LCA0NjkxMywgNDY5MTksIDQ2OTI1LCA0NjkzMCwgNDY5MzYsIDQ2OTQyLCA0Njk0NywgCisgICAgNDY5NTMsIDQ2OTU5LCA0Njk2NSwgNDY5NzEsIDQ2OTc3LCA0Njk4MSwgNDY5ODYsIDQ2OTkxLCA0Njk5NiwgNDcwMDEsIAorICAgIDQ3MDA2LCA0NzAxMSwgNDcwMTYsIDQ3MDIxLCA0NzAyNiwgNDcwMzEsIDQ3MDM1LCA0NzAzOSwgNDcwNDMsIDQ3MDQ3LCAKKyAgICA0NzA1MSwgNDcwNTUsIDQ3MDYwLCA0NzA2NCwgNDcwNjksIDQ3MDc0LCA0NzA3OSwgNDcwODQsIDQ3MDg5LCA0NzA5NCwgCisgICAgNDcwOTksIDQ3MTA4LCA0NzExNywgNDcxMjYsIDQ3MTM1LCA0NzE0NCwgNDcxNTMsIDQ3MTYyLCA0NzE3MSwgNDcxNzgsIAorICAgIDQ3MTg2LCA0NzE5NCwgNDcyMDEsIDQ3MjA4LCA0NzIxNiwgNDcyMjQsIDQ3MjMxLCA0NzIzOCwgNDcyNDYsIDQ3MjU0LCAKKyAgICA0NzI2MSwgNDcyNjgsIDQ3Mjc2LCA0NzI4NCwgNDcyOTEsIDQ3Mjk4LCA0NzMwNiwgNDczMTUsIDQ3MzI0LCA0NzMzMiwgCisgICAgNDczNDEsIDQ3MzUwLCA0NzM1NywgNDczNjQsIDQ3MzcyLCA0NzM4MSwgNDczOTAsIDQ3Mzk4LCA0NzQwNywgNDc0MTYsIAorICAgIDQ3NDIzLCA0NzQzMCwgNDc0MzksIDQ3NDQ4LCA0NzQ1NywgNDc0NjYsIDQ3NDc1LCA0NzQ4NCwgNDc0OTEsIDQ3NDk4LCAKKyAgICA0NzUwNywgNDc1MTYsIDQ3NTI1LCA0NzUzNCwgNDc1NDMsIDQ3NTUyLCA0NzU1OSwgNDc1NjYsIDQ3NTc1LCA0NzU4NCwgCisgICAgNDc1OTMsIDQ3NjAzLCA0NzYxMywgNDc2MjIsIDQ3NjMyLCA0NzY0MiwgNDc2NTIsIDQ3NjYyLCA0NzY3MiwgNDc2ODIsIAorICAgIDQ3NjkxLCA0NzcwMCwgNDc3MDcsIDQ3NzE1LCA0NzcyMywgNDc3MzEsIDQ3NzM5LCA0Nzc0NCwgNDc3NDksIDQ3NzU4LCAKKyAgICA0Nzc2NiwgNDc3NzMsIDQ3NzgyLCA0Nzc5MCwgNDc3OTcsIDQ3ODA2LCA0NzgxNCwgNDc4MjEsIDQ3ODMwLCA0NzgzOCwgCisgICAgNDc4NDUsIDQ3ODU0LCA0Nzg2MiwgNDc4NjksIDQ3ODc4LCA0Nzg4NiwgNDc4OTMsIDQ3OTAzLCA0NzkxMiwgNDc5MTksIAorICAgIDQ3OTI5LCA0NzkzOCwgNDc5NDUsIDQ3OTU1LCA0Nzk2NCwgNDc5NzEsIDQ3OTgwLCA0Nzk4OSwgNDc5OTgsIDQ4MDA3LCAKKyAgICA0ODAyMSwgNDgwMzUsIDQ4MDQyLCA0ODA0NywgNDgwNTIsIDQ4MDU3LCA0ODA2MiwgNDgwNjcsIDQ4MDcyLCA0ODA3NywgCisgICAgNDgwODIsIDQ4MDkwLCA0ODA5OCwgNDgxMDYsIDQ4MTE0LCA0ODExOSwgNDgxMjYsIDQ4MTMzLCA0ODE0MCwgNDgxNDUsIAorICAgIDQ4MTUzLCA0ODE2MCwgNDgxNjgsIDQ4MTcyLCA0ODE3OSwgNDgxODUsIDQ4MTkyLCA0ODE5NiwgNDgyMDIsIDQ4MjA4LCAKKyAgICA0ODIxNCwgNDgyMTgsIDQ4MjIxLCA0ODIyNSwgNDgyMjksIDQ4MjM2LCA0ODI0MiwgNDgyNDgsIDQ4MjU0LCA0ODI2MCwgCisgICAgNDgyNzQsIDQ4Mjg0LCA0ODI5OCwgNDgzMTIsIDQ4MzE4LCA0ODMyOCwgNDgzNDIsIDQ4MzQ1LCA0ODM0OCwgNDgzNTUsIAorICAgIDQ4MzYzLCA0ODM2OSwgNDgzNzQsIDQ4MzgyLCA0ODM5NCwgNDg0MDYsIDQ4NDE0LCA0ODQxOCwgNDg0MjIsIDQ4NDI1LCAKKyAgICA0ODQyOCwgNDg0MzIsIDQ4NDM2LCA0ODQzOSwgNDg0NDIsIDQ4NDQ3LCA0ODQ1MiwgNDg0NTgsIDQ4NDY0LCA0ODQ2OSwgCisgICAgNDg0NzQsIDQ4NDgwLCA0ODQ4NiwgNDg0OTEsIDQ4NDk2LCA0ODUwMSwgNDg1MDYsIDQ4NTEyLCA0ODUxOCwgNDg1MjMsIAorICAgIDQ4NTI4LCA0ODUzNCwgNDg1NDAsIDQ4NTQ1LCA0ODU1MCwgNDg1NTMsIDQ4NTU2LCA0ODU2NSwgNDg1NjcsIDQ4NTY5LCAKKyAgICA0ODU3MiwgNDg1NzYsIDQ4NTgyLCA0ODU4NCwgNDg1ODcsIDQ4NTk0LCA0ODYwMSwgNDg2MDksIDQ4NjE3LCA0ODYyNywgCisgICAgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTUsIDQ4NjYwLCA0ODY2OCwgNDg2NzYsIDQ4Njg1LCA0ODY5NCwgNDg3MDMsIAorICAgIDQ4NzEyLCA0ODcxNywgNDg3MjIsIDQ4NzI4LCA0ODczNCwgNDg3NDAsIDQ4NzQ2LCA0ODc0OSwgNDg3NTUsIDQ4NzYxLCAKKyAgICA0ODc3MSwgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDYsIDQ4ODE1LCA0ODgxOSwgNDg4MjcsIDQ4ODM1LCA0ODg0MywgCisgICAgNDg4NTEsIDQ4ODYwLCA0ODg2OSwgNDg4NzgsIDQ4ODg3LCA0ODg5MiwgNDg4OTcsIDQ4OTAyLCA0ODkwNywgNDg5MTIsIAorICAgIDQ4OTE4LCA0ODkyNCwgNDg5MjksIDQ4OTM1LCA0ODkzNywgNDg5MzksIDQ4OTQxLCA0ODk0MywgNDg5NDYsIDQ4OTQ5LCAKKyAgICA0ODk1MSwgNDg5NTMsIDQ4OTU1LCA0ODk1OSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzAsIDQ4OTczLCA0ODk3NywgCisgICAgNDg5ODMsIDQ4OTg5LCA0ODk5MSwgNDg5OTgsIDQ5MDAyLCA0OTAwNywgNDkwMTIsIDQ5MDE0LCA0OTAyNCwgNDkwMzAsIAorICAgIDQ5MDM2LCA0OTA0MiwgNDkwNDgsIDQ5MDU0LCA0OTA2MCwgNDkwNjUsIDQ5MDY4LCA0OTA3MSwgNDkwNzQsIDQ5MDc2LCAKKyAgICA0OTA3OCwgNDkwODIsIDQ5MDg2LCA0OTA5MSwgNDkwOTYsIDQ5MTAxLCA0OTEwNCwgNDkxMDgsIDQ5MTEzLCA0OTExNiwgCisgICAgNDkxMjAsIDQ5MTI1LCA0OTEzMCwgNDkxMzUsIDQ5MTQwLCA0OTE0NSwgNDkxNTAsIDQ5MTU1LCA0OTE2MCwgNDkxNjUsIAorICAgIDQ5MTcwLCA0OTE3NSwgNDkxODAsIDQ5MTg2LCA0OTE5MiwgNDkxOTgsIDQ5MjAwLCA0OTIwMywgNDkyMDUsIDQ5MjA4LCAKKyAgICA0OTIxMCwgNDkyMTIsIDQ5MjE0LCA0OTIxNiwgNDkyMTgsIDQ5MjIwLCA0OTIyMiwgNDkyMjQsIDQ5MjI2LCA0OTIyOCwgCisgICAgNDkyMzAsIDQ5MjMyLCA0OTIzNCwgNDkyMzYsIDQ5MjM4LCA0OTI0MCwgNDkyNDIsIDQ5MjQ3LCA0OTI1MiwgNDkyNTcsIAorICAgIDQ5MjYyLCA0OTI2NywgNDkyNzIsIDQ5Mjc3LCA0OTI4MiwgNDkyODcsIDQ5MjkyLCA0OTI5NywgNDkzMDIsIDQ5MzA3LCAKKyAgICA0OTMxMiwgNDkzMTcsIDQ5MzIyLCA0OTMyNywgNDkzMzIsIDQ5MzM3LCA0OTM0MiwgNDkzNDYsIDQ5MzUwLCA0OTM1NCwgCisgICAgNDkzNjAsIDQ5MzY2LCA0OTM3MSwgNDkzNzYsIDQ5MzgxLCA0OTM4NywgNDkzOTMsIDQ5Mzk4LCA0OTQwNiwgNDk0MTQsIAorICAgIDQ5NDIyLCA0OTQzMCwgNDk0MzgsIDQ5NDQ2LCA0OTQ1NCwgNDk0NjIsIDQ5NDY4LCA0OTQ3MywgNDk0NzgsIDQ5NDgzLCAKKyAgICA0OTQ4NiwgNDk0OTAsIDQ5NDk0LCA0OTQ5OCwgNDk1MDIsIDQ5NTA2LCA0OTUxMCwgNDk1MTcsIDQ5NTI0LCA0OTUzMiwgCisgICAgNDk1NDAsIDQ5NTQ1LCA0OTU1MCwgNDk1NTcsIDQ5NTY0LCA0OTU3MSwgNDk1NzgsIDQ5NTgxLCA0OTU4NCwgNDk1ODksIAorICAgIDQ5NTkxLCA0OTU5NSwgNDk2MDAsIDQ5NjAyLCA0OTYwNCwgNDk2MDYsIDQ5NjA4LCA0OTYxMywgNDk2MTYsIDQ5NjE4LCAKKyAgICA0OTYyMywgNDk2MzAsIDQ5NjM3LCA0OTY0MCwgNDk2NDQsIDQ5NjQ5LCA0OTY1NCwgNDk2NjIsIDQ5NjY4LCA0OTY3NCwgCisgICAgNDk2ODYsIDQ5NjkzLCA0OTcwMSwgNDk3MDYsIDQ5NzExLCA0OTcxNywgNDk3MjAsIDQ5NzIzLCA0OTcyOCwgNDk3MzAsIAorICAgIDQ5NzM0LCA0OTczNiwgNDk3MzgsIDQ5NzQwLCA0OTc0MiwgNDk3NDQsIDQ5NzQ2LCA0OTc1MSwgNDk3NTMsIDQ5NzU1LCAKKyAgICA0OTc1NywgNDk3NTksIDQ5NzYzLCA0OTc2NSwgNDk3NjgsIDQ5NzczLCA0OTc3OCwgNDk3ODMsIDQ5Nzg4LCA0OTc5NCwgCisgICAgNDk4MDAsIDQ5ODAyLCA0OTgwNSwgNDk4MTIsIDQ5ODE5LCA0OTgyNiwgNDk4MzMsIDQ5ODM3LCA0OTg0MSwgNDk4NDMsIAorICAgIDQ5ODQ1LCA0OTg0OSwgNDk4NTUsIDQ5ODYwLCA0OTg2MiwgNDk4NjYsIDQ5ODc1LCA0OTg4MywgNDk4OTEsIDQ5ODk3LCAKKyAgICA0OTkwMywgNDk5MDgsIDQ5OTE0LCA0OTkxOSwgNDk5MjIsIDQ5OTM2LCA0OTkzOSwgNDk5NDQsIDQ5OTQ5LCA0OTk1NSwgCisgICAgNDk5NjUsIDQ5OTY3LCA0OTk3MywgNDk5NzksIDQ5OTgzLCA0OTk5MCwgNDk5OTQsIDQ5OTk2LCA0OTk5OCwgNTAwMDIsIAorICAgIDUwMDA4LCA1MDAxMywgNTAwMTksIDUwMDIxLCA1MDAyNywgNTAwMjksIDUwMDM1LCA1MDAzNywgNTAwMzksIDUwMDQ0LCAKKyAgICA1MDA0NiwgNTAwNTAsIDUwMDU1LCA1MDA1NywgNTAwNjIsIDUwMDY3LCA1MDA3MSwgNTAwNzgsIDUwMDg4LCA1MDA5MywgCisgICAgNTAwOTksIDUwMTAyLCA1MDEwOCwgNTAxMTEsIDUwMTE2LCA1MDEyMSwgNTAxMjUsIDUwMTI3LCA1MDEyOSwgNTAxMzMsIAorICAgIDUwMTM3LCA1MDE0MSwgNTAxNDUsIDUwMTUwLCA1MDE1MiwgNTAxNTcsIDUwMTYwLCA1MDE2MywgNTAxNjYsIDUwMTcwLCAKKyAgICA1MDE3NCwgNTAxNzksIDUwMTgzLCA1MDE4OCwgNTAxOTMsIDUwMTk3LCA1MDIwMiwgNTAyMDgsIDUwMjExLCA1MDIxNywgCisgICAgNTAyMjIsIDUwMjI2LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCA1MDI1MCwgNTAyNTYsIDUwMjYzLCA1MDI3MCwgNTAyNzIsIAorICAgIDUwMjc5LCA1MDI4MywgNTAyODksIDUwMjk1LCA1MDMwMCwgNTAzMDYsIDUwMzEwLCA1MDMxNSwgNTAzMTgsIDUwMzIzLCAKKyAgICA1MDMyOSwgNTAzMzYsIDUwMzQ0LCA1MDM1MSwgNTAzNjAsIDUwMzcwLCA1MDM3NywgNTAzODMsIDUwMzg3LCA1MDM5NCwgCisgICAgNTAzOTksIDUwNDA4LCA1MDQxMSwgNTA0MTQsIDUwNDIzLCA1MDQzMywgNTA0NDAsIDUwNDQyLCA1MDQ0OCwgNTA0NTMsIAorICAgIDUwNDU1LCA1MDQ1OCwgNTA0NjIsIDUwNDcwLCA1MDQ3OSwgNTA0ODIsIDUwNDg3LCA1MDQ5MiwgNTA1MDAsIDUwNTA4LCAKKyAgICA1MDUxNiwgNTA1MjQsIDUwNTMwLCA1MDUzNiwgNTA1NDIsIDUwNTUwLCA1MDU1NSwgNTA1NTgsIDUwNTYyLCA1MDU2NSwgCisgICAgNTA1NzcsIDUwNTg3LCA1MDU5OCwgNTA2MDcsIDUwNjE4LCA1MDYyOCwgNTA2MzcsIDUwNjQzLCA1MDY1MSwgNTA2NTUsIAorICAgIDUwNjYzLCA1MDY2NywgNTA2NzUsIDUwNjgyLCA1MDY4OSwgNTA2OTgsIDUwNzA3LCA1MDcxNywgNTA3MjcsIDUwNzM3LCAKKyAgICA1MDc0NywgNTA3NTYsIDUwNzY1LCA1MDc3NSwgNTA3ODUsIDUwNzk0LCA1MDgwMywgNTA4MDksIDUwODE1LCA1MDgyMSwgCisgICAgNTA4MjcsIDUwODMzLCA1MDgzOSwgNTA4NDYsIDUwODUyLCA1MDg1OSwgNTA4NjYsIDUwODcyLCA1MDg3OCwgNTA4ODQsIAorICAgIDUwODkwLCA1MDg5NiwgNTA5MDIsIDUwOTA5LCA1MDkxNSwgNTA5MjIsIDUwOTI5LCA1MDkzNiwgNTA5NDMsIDUwOTUwLCAKKyAgICA1MDk1NywgNTA5NjQsIDUwOTcxLCA1MDk3OSwgNTA5ODYsIDUwOTk0LCA1MTAwMiwgNTEwMDcsIDUxMDEwLCA1MTAxNCwgCisgICAgNTEwMTgsIDUxMDI0LCA1MTAyNywgNTEwMzIsIDUxMDM4LCA1MTA0MywgNTEwNDcsIDUxMDUyLCA1MTA1OCwgNTEwNjUsIAorICAgIDUxMDY4LCA1MTA3NSwgNTEwODIsIDUxMDg2LCA1MTA5NCwgNTExMDIsIDUxMTA3LCA1MTExMywgNTExMTgsIDUxMTIzLCAKKyAgICA1MTEzMCwgNTExMzcsIDUxMTQ1LCA1MTE1MywgNTExNjIsIDUxMTY2LCA1MTE3NSwgNTExODAsIDUxMTg0LCA1MTE5MSwgCisgICAgNTExOTUsIDUxMjAxLCA1MTIwOSwgNTEyMTQsIDUxMjIxLCA1MTIyNSwgNTEyMzAsIDUxMjM0LCA1MTIzOSwgNTEyNDMsIAorICAgIDUxMjQ4LCA1MTI1MywgNTEyNjIsIDUxMjY0LCA1MTI2NywgNTEyNzAsIDUxMjc3LCA1MTI4NCwgNTEyOTAsIDUxMjk4LCAKKyAgICA1MTMwNCwgNTEzMTEsIDUxMzE2LCA1MTMxOSwgNTEzMjQsIDUxMzI5LCA1MTMzNCwgNTEzNDIsIDUxMzQ2LCA1MTM1MywgCisgICAgNTEzNjEsIDUxMzY5LCA1MTM3NCwgNTEzNzksIDUxMzg1LCA1MTM5MCwgNTEzOTUsIDUxNDAxLCA1MTQwNiwgNTE0MDksIAorICAgIDUxNDEzLCA1MTQxNywgNTE0MjQsIDUxNDM0LCA1MTQzOSwgNTE0NDgsIDUxNDU3LCA1MTQ2MywgNTE0NjksIDUxNDc0LCAKKyAgICA1MTQ3OSwgNTE0ODQsIDUxNDg5LCA1MTQ5NSwgNTE1MDEsIDUxNTA5LCA1MTUxNywgNTE1MjMsIDUxNTI5LCA1MTUzMywgCisgICAgNTE1MzcsIDUxNTQ0LCA1MTU1MSwgNTE1NTcsIDUxNTYwLCA1MTU2MywgNTE1NjcsIDUxNTcxLCA1MTU3NSwgNTE1ODAsIAorICAgIDUxNTg2LCA1MTU5MiwgNTE1OTksIDUxNjA2LCA1MTYxMSwgNTE2MTUsIDUxNjE5LCA1MTYyMywgNTE2MjcsIDUxNjMxLCAKKyAgICA1MTYzNSwgNTE2MzksIDUxNjQzLCA1MTY0NywgNTE2NTEsIDUxNjU1LCA1MTY1OSwgNTE2NjMsIDUxNjY3LCA1MTY3MSwgCisgICAgNTE2NzUsIDUxNjc5LCA1MTY4MywgNTE2ODcsIDUxNjkxLCA1MTY5NSwgNTE2OTksIDUxNzAzLCA1MTcwNywgNTE3MTEsIAorICAgIDUxNzE1LCA1MTcxOSwgNTE3MjMsIDUxNzI3LCA1MTczMSwgNTE3MzUsIDUxNzM5LCA1MTc0MywgNTE3NDcsIDUxNzUxLCAKKyAgICA1MTc1NSwgNTE3NTksIDUxNzYzLCA1MTc2NywgNTE3NzEsIDUxNzc1LCA1MTc3OSwgNTE3ODMsIDUxNzg3LCA1MTc5MSwgCisgICAgNTE3OTUsIDUxNzk5LCA1MTgwMywgNTE4MDcsIDUxODExLCA1MTgxNSwgNTE4MTksIDUxODIzLCA1MTgyNywgNTE4MzEsIAorICAgIDUxODM1LCA1MTgzOSwgNTE4NDMsIDUxODQ3LCA1MTg1MSwgNTE4NTUsIDUxODU5LCA1MTg2MywgNTE4NjcsIDUxODcxLCAKKyAgICA1MTg3NSwgNTE4NzksIDUxODgzLCA1MTg4NywgNTE4OTEsIDUxODk1LCA1MTg5OSwgNTE5MDMsIDUxOTA3LCA1MTkxMSwgCisgICAgNTE5MTUsIDUxOTE5LCA1MTkyMywgNTE5MjcsIDUxOTMxLCA1MTkzNSwgNTE5MzksIDUxOTQzLCA1MTk0NywgNTE5NTEsIAorICAgIDUxOTU1LCA1MTk1OSwgNTE5NjMsIDUxOTY3LCA1MTk3MSwgNTE5NzUsIDUxOTc5LCA1MTk4MywgNTE5ODcsIDUxOTkxLCAKKyAgICA1MTk5NSwgNTE5OTksIDUyMDAzLCA1MjAwNywgNTIwMTEsIDUyMDE1LCA1MjAxOSwgNTIwMjMsIDUyMDI3LCA1MjAzMSwgCisgICAgNTIwMzUsIDUyMDM5LCA1MjA0MywgNTIwNDcsIDUyMDUxLCA1MjA1NSwgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzEsIAorICAgIDUyMDc1LCA1MjA3OSwgNTIwODMsIDUyMDg3LCA1MjA5MSwgNTIwOTUsIDUyMDk5LCA1MjEwMywgNTIxMDcsIDUyMTExLCAKKyAgICA1MjExNSwgNTIxMTksIDUyMTIzLCA1MjEyNywgNTIxMzEsIDUyMTM1LCA1MjEzOSwgNTIxNDMsIDUyMTQ3LCA1MjE1MSwgCisgICAgNTIxNTUsIDUyMTU5LCA1MjE2MywgNTIxNjcsIDUyMTcxLCA1MjE3NSwgNTIxNzksIDUyMTgzLCA1MjE4NywgNTIxOTEsIAorICAgIDUyMTk1LCA1MjE5OSwgNTIyMDMsIDUyMjA3LCA1MjIxMSwgNTIyMTUsIDUyMjE5LCA1MjIyMywgNTIyMjcsIDUyMjMxLCAKKyAgICA1MjIzNSwgNTIyMzksIDUyMjQzLCA1MjI0NywgNTIyNTEsIDUyMjU1LCA1MjI1OSwgNTIyNjMsIDUyMjY3LCA1MjI3MSwgCisgICAgNTIyNzUsIDUyMjc5LCA1MjI4MywgNTIyODcsIDUyMjkxLCA1MjI5NSwgNTIyOTksIDUyMzAzLCA1MjMwNywgNTIzMTEsIAorICAgIDUyMzE1LCA1MjMxOSwgNTIzMjMsIDUyMzI3LCA1MjMzMSwgNTIzMzUsIDUyMzM5LCA1MjM0MywgNTIzNDcsIDUyMzUxLCAKKyAgICA1MjM1NSwgNTIzNTksIDUyMzYzLCA1MjM2NywgNTIzNzEsIDUyMzc1LCA1MjM3OSwgNTIzODMsIDUyMzg3LCA1MjM5MSwgCisgICAgNTIzOTUsIDUyMzk5LCA1MjQwMywgNTI0MDcsIDUyNDExLCA1MjQxNSwgNTI0MTksIDUyNDIzLCA1MjQyNywgNTI0MzEsIAorICAgIDUyNDM1LCA1MjQzOSwgNTI0NDMsIDUyNDQ3LCA1MjQ1MSwgNTI0NTUsIDUyNDU5LCA1MjQ2MywgNTI0NjcsIDUyNDcxLCAKKyAgICA1MjQ3NSwgNTI0NzksIDUyNDgzLCA1MjQ4NywgNTI0OTEsIDUyNDk1LCA1MjQ5OSwgNTI1MDMsIDUyNTA3LCA1MjUxMSwgCisgICAgNTI1MTUsIDUyNTE5LCA1MjUyMywgNTI1MjcsIDUyNTMxLCA1MjUzNSwgNTI1MzksIDUyNTQzLCA1MjU0NywgNTI1NTEsIAorICAgIDUyNTU1LCA1MjU1OSwgNTI1NjMsIDUyNTY3LCA1MjU3MSwgNTI1NzUsIDUyNTc5LCA1MjU4MywgNTI1ODcsIDUyNTkxLCAKKyAgICA1MjU5NSwgNTI1OTksIDUyNjAzLCA1MjYwNywgNTI2MTEsIDUyNjE1LCA1MjYxOSwgNTI2MjMsIDUyNjI3LCA1MjYzMSwgCisgICAgNTI2MzUsIDUyNjQyLCA1MjY1MCwgNTI2NTYsIDUyNjYyLCA1MjY2OSwgNTI2NzYsIDUyNjgyLCA1MjY4OCwgNTI2OTQsIAorICAgIDUyNzAwLCA1MjcwNCwgNTI3MDgsIDUyNzEzLCA1MjcxOCwgNTI3MjQsIDUyNzMwLCA1MjczOCwgNTI3NDUsIDUyNzUwLCAKKyAgICA1Mjc1NSwgNTI3NjMsIDUyNzcyLCA1Mjc3OSwgNTI3ODksIDUyODAwLCA1MjgwMywgNTI4MDYsIDUyODEwLCA1MjgxNCwgCisgICAgNTI4MjEsIDUyODI4LCA1MjgzOSwgNTI4NTAsIDUyODU5LCA1Mjg2OCwgNTI4NzQsIDUyODgwLCA1Mjg4NywgNTI4OTQsIAorICAgIDUyOTAzLCA1MjkxMywgNTI5MjQsIDUyOTM0LCA1Mjk0NCwgNTI5NTQsIDUyOTY1LCA1Mjk3NiwgNTI5ODYsIDUyOTk3LCAKKyAgICA1MzAwNywgNTMwMTcsIDUzMDI2LCA1MzAzNiwgNTMwNDYsIDUzMDU2LCA1MzA2NiwgNTMwNzMsIDUzMDgwLCA1MzA4NywgCisgICAgNTMwOTQsIDUzMTA0LCA1MzExNCwgNTMxMjIsIDUzMTMwLCA1MzEzNywgNTMxNDQsIDUzMTUxLCA1MzE1OCwgNTMxNjUsIAorICAgIDUzMTcwLCA1MzE3NSwgNTMxODEsIDUzMTg5LCA1MzE5OCwgNTMyMDYsIDUzMjE0LCA1MzIyMiwgNTMyMzAsIDUzMjM4LCAKKyAgICA1MzI0NiwgNTMyNTQsIDUzMjYyLCA1MzI3MSwgNTMyODAsIDUzMjg5LCA1MzI5OCwgNTMzMDcsIDUzMzE2LCA1MzMyNSwgCisgICAgNTMzMzQsIDUzMzQzLCA1MzM1MiwgNTMzNjEsIDUzMzcwLCA1MzM3OSwgNTMzODgsIDUzMzk3LCA1MzQwNiwgNTM0MjAsIAorICAgIDUzNDM1LCA1MzQ0OSwgNTM0NjQsIDUzNDc4LCA1MzQ5MiwgNTM1MDYsIDUzNTIwLCA1MzUzMCwgNTM1NDEsIDUzNTUxLCAKKyAgICA1MzU2MiwgNTM1NzcsIDUzNTkyLCA1MzYwMCwgNTM2MDYsIDUzNjEzLCA1MzYyMCwgNTM2MjcsIDUzNjM0LCA1MzYzOSwgCisgICAgNTM2NDUsIDUzNjUwLCA1MzY1NSwgNTM2NjEsIDUzNjY2LCA1MzY3MSwgNTM2NzYsIDUzNjgxLCA1MzY4NiwgNTM2OTMsIAorICAgIDUzNjk5LCA1MzcwNywgNTM3MTIsIDUzNzE3LCA1MzcyMSwgNTM3MjUsIDUzNzMzLCA1Mzc0MSwgNTM3NDksIDUzNzU3LCAKKyAgICA1Mzc2NCwgNTM3NzEsIDUzNzg0LCA1Mzc5NywgNTM4MTAsIDUzODIzLCA1MzgzMSwgNTM4MzksIDUzODQ1LCA1Mzg1MSwgCisgICAgNTM4NTgsIDUzODY1LCA1Mzg3MiwgNTM4NzksIDUzODgzLCA1Mzg4OCwgNTM4OTYsIDUzOTA0LCA1MzkxMiwgNTM5MTksIAorICAgIDUzOTIzLCA1MzkzMSwgNTM5MzksIDUzOTQzLCA1Mzk0NywgNTM5NTIsIDUzOTU5LCA1Mzk2NywgNTM5NzUsIDUzOTk0LCAKKyAgICA1NDAxMywgNTQwMzIsIDU0MDUxLCA1NDA3MCwgNTQwODksIDU0MTA4LCA1NDEyNywgNTQxMzMsIDU0MTQwLCA1NDE0OSwgCisgICAgNTQxNTcsIDU0MTY1LCA1NDE3MSwgNTQxNzQsIDU0MTc3LCA1NDE4MiwgNTQxODUsIDU0MjA1LCA1NDIxMiwgNTQyMTgsIAorICAgIDU0MjI0LCA1NDIyOCwgNTQyMzEsIDU0MjM0LCA1NDIzNywgNTQyNDksIDU0MjYzLCA1NDI3MCwgNTQyNzcsIDU0MjgwLCAKKyAgICA1NDI4NCwgNTQyODcsIDU0MjkyLCA1NDI5NywgNTQzMDIsIDU0MzA4LCA1NDMxNywgNTQzMjQsIDU0MzMxLCA1NDMzOSwgCisgICAgNTQzNDYsIDU0MzUzLCA1NDM1NiwgNTQzNjIsIDU0MzY4LCA1NDM3MSwgNTQzNzQsIDU0Mzc5LCA1NDM4NCwgNTQzOTAsIAorICAgIDU0Mzk2LCA1NDQwMCwgNTQ0MDUsIDU0NDEyLCA1NDQxNiwgNTQ0MjIsIDU0NDI2LCA1NDQzMCwgNTQ0MzgsIDU0NDUwLCAKKyAgICA1NDQ1OSwgNTQ0NjMsIDU0NDY1LCA1NDQ3NCwgNTQ0ODMsIDU0NDg5LCA1NDQ5MiwgNTQ0OTgsIDU0NTA0LCA1NDUwOSwgCisgICAgNTQ1MTQsIDU0NTE5LCA1NDUyNCwgNTQ1MjksIDU0NTM0LCA1NDUzNiwgNTQ1NDIsIDU0NTQ3LCA1NDU1NSwgNTQ1NTksIAorICAgIDU0NTY1LCA1NDU2OCwgNTQ1NzIsIDU0NTc5LCA1NDU4NiwgNTQ1ODgsIDU0NTkwLCA1NDU5NiwgNTQ2MDIsIDU0NjA4LCAKKyAgICA1NDYxNywgNTQ2MjYsIDU0NjMzLCA1NDY0MCwgNTQ2NDYsIDU0NjUzLCA1NDY1OCwgNTQ2NjMsIDU0NjY4LCA1NDY3NCwgCisgICAgNTQ2ODAsIDU0Njg1LCA1NDY5MiwgNTQ2OTYsIDU0NzAwLCA1NDcxMywgNTQ3MjYsIDU0NzM4LCA1NDc0NywgNTQ3NTMsIAorICAgIDU0NzYwLCA1NDc2NSwgNTQ3NzAsIDU0Nzc1LCA1NDc4MCwgNTQ3ODUsIDU0Nzg3LCA1NDc5NCwgNTQ4MDIsIDU0ODEwLCAKKyAgICA1NDgxOCwgNTQ4MjUsIDU0ODMzLCA1NDgzOSwgNTQ4NDQsIDU0ODUwLCA1NDg1NiwgNTQ4NjIsIDU0ODY5LCA1NDg3NSwgCisgICAgNTQ4ODMsIDU0ODkxLCA1NDg5OSwgNTQ5MDcsIDU0OTE1LCA1NDkyMSwgNTQ5MjcsIDU0OTM2LCA1NDk0MCwgNTQ5NDksIAorICAgIDU0OTU4LCA1NDk2NywgNTQ5NzUsIDU0OTc5LCA1NDk4NSwgNTQ5OTIsIDU0OTk5LCA1NTAwMywgNTUwMDksIDU1MDE3LCAKKyAgICA1NTAyMywgNTUwMjgsIDU1MDM0LCA1NTAzOSwgNTUwNDQsIDU1MDUxLCA1NTA1OCwgNTUwNjMsIDU1MDY4LCA1NTA3NiwgCisgICAgNTUwODQsIDU1MDk0LCA1NTEwNCwgNTUxMTEsIDU1MTE4LCA1NTEyMiwgNTUxMjYsIDU1MTM4LCA1NTE0NCwgNTUxNTEsIAorICAgIDU1MTU2LCA1NTE2MSwgNTUxNjgsIDU1MTc1LCA1NTE4MSwgNTUxODcsIDU1MTk3LCA1NTIwNCwgNTUyMTIsIDU1MjIwLCAKKyAgICA1NTIyOSwgNTUyMzYsIDU1MjQyLCA1NTI0OSwgNTUyNTUsIDU1MjYzLCA1NTI3MSwgNTUyNzksIDU1Mjg3LCA1NTI5MywgCisgICAgNTUyOTgsIDU1MzA4LCA1NTMxOSwgNTUzMjYsIDU1MzM1LCA1NTM0MSwgNTUzNDYsIDU1MzUxLCA1NTM2MSwgNTUzNjgsIAorICAgIDU1Mzc0LCA1NTM4MCwgNTUzODgsIDU1MzkzLCA1NTQwMCwgNTU0MDcsIDU1NDE4LCA1NTQyNSwgNTU0MzIsIDU1NDM5LCAKKyAgICA1NTQ0NiwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgNTU0ODIsIDU1NDk1LCA1NTUwNywgNTU1MTksIDU1NTMzLCA1NTU0NywgCisgICAgNTU1NTMsIDU1NTU5LCA1NTU2OCwgNTU1NzcsIDU1NTg0LCA1NTU5MSwgNTU2MDAsIDU1NjA5LCA1NTYxOCwgNTU2MjcsIAorICAgIDU1NjM1LCA1NTY0MywgNTU2NTMsIDU1NjYzLCA1NTY3NywgNTU2OTEsIDU1NzAwLCA1NTcwOSwgNTU3MjIsIDU1NzM1LCAKKyAgICA1NTc0NCwgNTU3NTMsIDU1NzY0LCA1NTc3NSwgNTU3ODEsIDU1Nzg3LCA1NTc5NiwgNTU4MDUsIDU1ODEwLCA1NTgxNSwgCisgICAgNTU4MjMsIDU1ODI5LCA1NTgzNSwgNTU4NDMsIDU1ODUxLCA1NTg2NCwgNTU4NzcsIDU1ODgxLCA1NTg4NSwgNTU4OTMsIAorICAgIDU1OTAxLCA1NTkwOCwgNTU5MTYsIDU1OTI0LCA1NTkzMywgNTU5NDIsIDU1OTQ4LCA1NTk1NCwgNTU5NjEsIDU1OTY4LCAKKyAgICA1NTk3NSwgNTU5ODIsIDU1OTkxLCA1NjAwMCwgNTYwMDMsIDU2MDA2LCA1NjAxMSwgNTYwMTYsIDU2MDIyLCA1NjAyOCwgCisgICAgNTYwMzUsIDU2MDQyLCA1NjA1MywgNTYwNjQsIDU2MDcxLCA1NjA3OCwgNTYwODYsIDU2MDk0LCA1NjEwMiwgNTYxMTAsIAorICAgIDU2MTE4LCA1NjEyNiwgNTYxMzIsIDU2MTM4LCA1NjE0MiwgNTYxNDYsIDU2MTU0LCA1NjE2MiwgNTYxNjcsIDU2MTcyLCAKKyAgICA1NjE3NywgNTYxODIsIDU2MTg4LCA1NjIwMiwgNTYyMDksIDU2MjE2LCA1NjIyMCwgNTYyMjIsIDU2MjI0LCA1NjIyOSwgCisgICAgNTYyMzQsIDU2MjM5LCA1NjI0NCwgNTYyNTIsIDU2MjU5LCA1NjI2NiwgNTYyNzQsIDU2Mjg2LCA1NjI5NCwgNTYzMDIsIAorICAgIDU2MzEzLCA1NjMxNywgNTYzMjEsIDU2MzI3LCA1NjMzNSwgNTYzNDgsIDU2MzU1LCA1NjM2MiwgNTYzNjksIDU2Mzc1LCAKKyAgICA1NjM4MiwgNTYzOTEsIDU2NDAwLCA1NjQwNiwgNTY0MTIsIDU2NDE4LCA1NjQyOCwgNTY0MzgsIDU2NDQ2LCA1NjQ1NSwgCisgICAgNTY0NjAsIDU2NDYzLCA1NjQ2OCwgNTY0NzMsIDU2NDc4LCA1NjQ4NCwgNTY0OTAsIDU2NDk0LCA1NjQ5NywgNTY1MDAsIAorICAgIDU2NTAzLCA1NjUwOCwgNTY1MTMsIDU2NTE5LCA1NjUyNSwgNTY1MjksIDU2NTMzLCA1NjU0MCwgNTY1NDcsIDU2NTU0LCAKKyAgICA1NjU2MSwgNTY1NjgsIDU2NTc1LCA1NjU4NSwgNTY1OTUsIDU2NjAyLCA1NjYwOSwgNTY2MTcsIDU2NjI1LCA1NjYyOSwgCisgICAgNTY2MzQsIDU2NjM5LCA1NjY0NSwgNTY2NTEsIDU2NjU0LCA1NjY1NywgNTY2NjAsIDU2NjYzLCA1NjY2OCwgNTY2NzMsIAorICAgIDU2Njc4LCA1NjY4MywgNTY2ODgsIDU2NjkzLCA1NjY5NywgNTY3MDEsIDU2NzA1LCA1NjcxMCwgNTY3MTUsIDU2NzE5LCAKKyAgICA1NjcyMywgNTY3MjksIDU2NzMzLCA1NjczOSwgNTY3NDQsIDU2NzUxLCA1Njc1OSwgNTY3NjYsIDU2Nzc0LCA1Njc4MSwgCisgICAgNTY3ODksIDU2Nzk4LCA1NjgwNSwgNTY4MTUsIDU2ODI2LCA1NjgzMiwgNTY4NDEsIDU2ODQ3LCA1Njg1NiwgNTY4NjUsIAorICAgIDU2ODcxLCA1Njg3NywgNTY4ODEsIDU2ODg1LCA1Njg5NCwgNTY5MDMsIDU2OTEwLCA1NjkxNywgNTY5MjYsIDU2OTM1LCAKKyAgICA1Njk0MSwgNTY5NDcsIDU2OTU0LCA1Njk1OSwgNTY5NjMsIDU2OTY3LCA1Njk3MiwgNTY5NzcsIDU2OTgyLCA1Njk5MCwgCisgICAgNTY5OTgsIDU3MDAxLCA1NzAwNSwgNTcwMTQsIDU3MDI0LCA1NzAzMywgNTcwNDMsIDU3MDU0LCA1NzA2NywgNTcwNzEsIAorICAgIDU3MDc1LCA1NzA3OSwgNTcwODMsIDU3MDg4LCA1NzA5MywgNTcwOTksIDU3MTA1LCA1NzExMiwgNTcxMTksIDU3MTI1LCAKKyAgICA1NzEzMSwgNTcxMzcsIDU3MTQzLCA1NzE1MSwgNTcxNTksIDU3MTY2LCA1NzE3MywgNTcxODAsIDAsIDAsIDU3MTg3LCAKKyAgICA1NzE5NiwgNTcyMDUsIDU3MjE1LCA1NzIyNSwgNTcyMzQsIDU3MjQzLCA1NzI1MiwgNTcyNjEsIDU3MjY3LCA1NzI3MiwgCisgICAgNTcyODEsIDU3MjkxLCA1NzMwMCwgNTczMTAsIDU3MzE3LCA1NzMyNCwgNTczMzEsIDU3MzM4LCA1NzM0MywgNTczNDgsIAorICAgIDU3MzUzLCA1NzM1OCwgNTczNjYsIDU3Mzc1LCA1NzM4MywgNTczOTIsIDU3Mzk2LCA1NzQwMCwgNTc0MDQsIDU3NDA4LCAKKyAgICA1NzQxOCwgMCwgMCwgNTc0MjEsIDU3NDMwLCA1NzQzOSwgNTc0NDgsIDU3NDU3LCA1NzQ2MywgNTc0NjksIDU3NDc1LCAKKyAgICA1NzQ4MSwgNTc0OTEsIDU3NTAxLCA1NzUxMSwgNTc1MjEsIDU3NTMxLCA1NzU0MSwgNTc1NTEsIDU3NTYxLCA1NzU2OCwgCisgICAgNTc1NzUsIDU3NTgyLCA1NzU4OSwgNTc1OTYsIDU3NjAzLCA1NzYxMCwgNTc2MTcsIDU3NjIzLCA1NzYyOSwgNTc2MzUsIAorICAgIDU3NjQxLCA1NzY0NywgNTc2NTMsIDU3NjU5LCA1NzY2NSwgNTc2NzYsIDAsIDAsIDAsIDU3Njg2LCA1NzY5MywgNTc2OTYsIAorICAgIDU3NzAwLCA1NzcwNCwgNTc3MDksIDU3NzE0LCA1NzcxOSwgNTc3MjIsIDU3NzMxLCA1Nzc0MCwgNTc3NDksIDAsIDU3NzU4LCAKKyAgICA1Nzc2NCwgNTc3NzAsIDU3Nzc4LCA1Nzc4OCwgNTc3OTUsIDU3ODA0LCA1NzgwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4MTIsIDU3ODIxLCAKKyAgICA1NzgzMCwgNTc4MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3ODQ4LCAKKyAgICA1Nzg1MywgNTc4NTgsIDU3ODYzLCA1Nzg2OCwgNTc4NzMsIDU3ODc4LCA1Nzg4MywgNTc4ODgsIDU3ODkzLCA1Nzg5OCwgCisgICAgNTc5MDQsIDU3OTA4LCA1NzkxMywgNTc5MTgsIDU3OTIzLCA1NzkyOCwgNTc5MzMsIDU3OTM4LCA1Nzk0MywgNTc5NDgsIAorICAgIDU3OTUzLCA1Nzk1OCwgNTc5NjMsIDU3OTY4LCA1Nzk3MywgNTc5NzgsIDU3OTgzLCA1Nzk4OCwgNTc5OTMsIDU3OTk4LCAKKyAgICA1ODAwMywgNTgwMDgsIDU4MDEzLCA1ODAxOCwgNTgwMjQsIDU4MDI5LCA1ODAzNSwgNTgwNDQsIDU4MDQ5LCA1ODA1NywgCisgICAgNTgwNjQsIDU4MDczLCA1ODA3OCwgNTgwODMsIDU4MDg4LCA1ODA5NCwgMCwgNTgxMDEsIDU4MTA2LCA1ODExMSwgNTgxMTYsIAorICAgIDU4MTIxLCA1ODEyNiwgNTgxMzEsIDU4MTM2LCA1ODE0MSwgNTgxNDYsIDU4MTUxLCA1ODE1NywgNTgxNjEsIDU4MTY2LCAKKyAgICA1ODE3MSwgNTgxNzYsIDU4MTgxLCA1ODE4NiwgNTgxOTEsIDU4MTk2LCA1ODIwMSwgNTgyMDYsIDU4MjExLCA1ODIxNiwgCisgICAgNTgyMjEsIDU4MjI2LCA1ODIzMSwgNTgyMzYsIDU4MjQxLCA1ODI0NiwgNTgyNTEsIDU4MjU2LCA1ODI2MSwgNTgyNjYsIAorICAgIDU4MjcxLCA1ODI3NywgNTgyODIsIDU4Mjg4LCA1ODI5NywgNTgzMDIsIDU4MzEwLCA1ODMxNywgNTgzMjYsIDU4MzMxLCAKKyAgICA1ODMzNiwgNTgzNDEsIDU4MzQ3LCAwLCA1ODM1NCwgNTgzNjIsIDU4MzcwLCA1ODM3OSwgNTgzODYsIDU4Mzk0LCA1ODQwMCwgCisgICAgNTg0MDksIDU4NDE3LCA1ODQyNSwgNTg0MzMsIDU4NDQxLCA1ODQ0OSwgNTg0NTcsIDU4NDYyLCA1ODQ2OSwgNTg0NzUsIAorICAgIDU4NDgyLCA1ODQ5MCwgNTg0OTcsIDU4NTA0LCA1ODUxMiwgNTg1MTgsIDU4NTI0LCA1ODUzMSwgNTg1MzgsIDU4NTQ4LCAKKyAgICA1ODU1OCwgNTg1NjUsIDU4NTcyLCA1ODU3NywgNTg1ODcsIDU4NTk3LCA1ODYwMiwgNTg2MDcsIDU4NjEyLCA1ODYxNywgCisgICAgNTg2MjIsIDU4NjI3LCA1ODYzMiwgNTg2MzcsIDU4NjQyLCA1ODY0NywgNTg2NTIsIDU4NjU3LCA1ODY2MiwgNTg2NjcsIAorICAgIDU4NjcyLCA1ODY3NywgNTg2ODIsIDU4Njg3LCA1ODY5MiwgNTg2OTcsIDU4NzAyLCA1ODcwNywgNTg3MTIsIDU4NzE3LCAKKyAgICA1ODcyMiwgNTg3MjcsIDU4NzMyLCA1ODczNywgNTg3NDIsIDU4NzQ3LCA1ODc1MSwgNTg3NTUsIDU4NzYwLCA1ODc2NSwgCisgICAgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkwLCA1ODc5NSwgNTg4MDAsIDU4ODA1LCA1ODgxMCwgNTg4MTUsIAorICAgIDU4ODIwLCA1ODgyNSwgNTg4MzAsIDU4ODM1LCA1ODg0MCwgNTg4NDUsIDU4ODUyLCA1ODg1OSwgNTg4NjYsIDU4ODczLCAKKyAgICA1ODg4MCwgNTg4ODcsIDU4ODk0LCA1ODkwMSwgNTg5MDgsIDU4OTE1LCA1ODkyMiwgNTg5MjksIDU4OTM2LCA1ODk0MywgCisgICAgNTg5NDgsIDU4OTUzLCA1ODk2MCwgNTg5NjcsIDU4OTc0LCA1ODk4MSwgNTg5ODgsIDU4OTk1LCA1OTAwMiwgNTkwMDksIAorICAgIDU5MDE2LCA1OTAyMywgNTkwMzAsIDU5MDM3LCA1OTA0MywgNTkwNDksIDU5MDU1LCA1OTA2MSwgNTkwNjgsIDU5MDc1LCAKKyAgICA1OTA4MiwgNTkwODksIDU5MDk2LCA1OTEwMywgNTkxMTAsIDU5MTE3LCA1OTEyNCwgNTkxMzEsIDU5MTM5LCA1OTE0NywgCisgICAgNTkxNTUsIDU5MTYzLCA1OTE3MSwgNTkxNzksIDU5MTg3LCA1OTE5NSwgNTkxOTksIDU5MjA1LCA1OTIxMSwgNTkyMTUsIAorICAgIDU5MjIxLCA1OTIyNywgNTkyMzMsIDU5MjQwLCA1OTI0NywgNTkyNTQsIDU5MjYxLCA1OTI2NiwgNTkyNzIsIDU5Mjc4LCAKKyAgICA1OTI4NSwgMCwgMCwgMCwgMCwgMCwgNTkyOTIsIDU5MzAwLCA1OTMwOSwgNTkzMTgsIDU5MzI2LCA1OTMzMiwgNTkzMzcsIAorICAgIDU5MzQyLCA1OTM0NywgNTkzNTIsIDU5MzU3LCA1OTM2MiwgNTkzNjcsIDU5MzcyLCA1OTM3NywgNTkzODIsIDU5Mzg3LCAKKyAgICA1OTM5MiwgNTkzOTcsIDU5NDAyLCA1OTQwNywgNTk0MTIsIDU5NDE3LCA1OTQyMiwgNTk0MjcsIDU5NDMyLCA1OTQzNywgCisgICAgNTk0NDIsIDU5NDQ3LCA1OTQ1MiwgNTk0NTcsIDU5NDYyLCA1OTQ2NywgNTk0NzIsIDU5NDc3LCA1OTQ4MiwgNTk0ODcsIAorICAgIDU5NDkyLCA1OTQ5NywgNTk1MDIsIDU5NTA3LCA1OTUxMiwgNTk1MTcsIDU5NTIyLCA1OTUyNywgMCwgNTk1MzIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU5NTM3LCAwLCAwLCA1OTU0MiwgNTk1NDYsIDU5NTUxLCA1OTU1NiwgNTk1NjEsIDU5NTY2LCA1OTU3NSwgCisgICAgNTk1ODAsIDU5NTg1LCA1OTU5MCwgNTk1OTUsIDU5NjAwLCA1OTYwNSwgNTk2MTAsIDU5NjE1LCA1OTYyMiwgNTk2MjcsIAorICAgIDU5NjMyLCA1OTY0MSwgNTk2NDgsIDU5NjUzLCA1OTY1OCwgNTk2NjMsIDU5NjcwLCA1OTY3NSwgNTk2ODIsIDU5Njg3LCAKKyAgICA1OTY5MiwgNTk2OTksIDU5NzA2LCA1OTcxMSwgNTk3MTYsIDU5NzIxLCA1OTcyOCwgNTk3MzUsIDU5NzQwLCA1OTc0NSwgCisgICAgNTk3NTAsIDU5NzU1LCA1OTc2MCwgNTk3NjcsIDU5Nzc0LCA1OTc3OSwgNTk3ODQsIDU5Nzg5LCA1OTc5NCwgNTk3OTksIAorICAgIDU5ODA0LCA1OTgwOSwgNTk4MTQsIDU5ODE5LCA1OTgyNCwgNTk4MjksIDU5ODM2LCA1OTg0MSwgNTk4NDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU5ODUxLCA1OTg1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk4NjMsIDU5ODY4LCA1OTg3MiwgNTk4NzYsIDU5ODgwLCA1OTg4NCwgNTk4ODgsIDU5ODkyLCA1OTg5NiwgNTk5MDAsIAorICAgIDU5OTA0LCA1OTkwOCwgNTk5MTQsIDU5OTE4LCA1OTkyMiwgNTk5MjYsIDU5OTMwLCA1OTkzNCwgNTk5MzgsIDU5OTQyLCAKKyAgICA1OTk0NiwgNTk5NTAsIDU5OTU0LCA1OTk1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5NjIsIDU5OTY2LCAKKyAgICA1OTk3MCwgNTk5NzQsIDU5OTc4LCA1OTk4MiwgNTk5ODYsIDAsIDU5OTkwLCA1OTk5NCwgNTk5OTgsIDYwMDAyLCA2MDAwNiwgCisgICAgNjAwMTAsIDYwMDE0LCAwLCA2MDAxOCwgNjAwMjIsIDYwMDI2LCA2MDAzMCwgNjAwMzQsIDYwMDM4LCA2MDA0MiwgMCwgCisgICAgNjAwNDYsIDYwMDUwLCA2MDA1NCwgNjAwNTgsIDYwMDYyLCA2MDA2NiwgNjAwNzAsIDAsIDYwMDc0LCA2MDA3OCwgNjAwODIsIAorICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCAwLCA2MDEwMiwgNjAxMDYsIDYwMTEwLCA2MDExNCwgNjAxMTgsIDYwMTIyLCAKKyAgICA2MDEyNiwgMCwgNjAxMzAsIDYwMTM0LCA2MDEzOCwgNjAxNDIsIDYwMTQ2LCA2MDE1MCwgNjAxNTQsIDAsIDYwMTU4LCAKKyAgICA2MDE2MiwgNjAxNjYsIDYwMTcwLCA2MDE3NCwgNjAxNzgsIDYwMTgyLCAwLCA2MDE4NiwgNjAxOTEsIDYwMTk2LCA2MDIwMSwgCisgICAgNjAyMDYsIDYwMjExLCA2MDIxNiwgNjAyMjAsIDYwMjI1LCA2MDIzMCwgNjAyMzUsIDYwMjM5LCA2MDI0NCwgNjAyNDksIAorICAgIDYwMjU0LCA2MDI1OSwgNjAyNjMsIDYwMjY4LCA2MDI3MywgNjAyNzgsIDYwMjgzLCA2MDI4OCwgNjAyOTMsIDYwMjk3LCAKKyAgICA2MDMwMiwgNjAzMDcsIDYwMzE0LCA2MDMxOSwgNjAzMjQsIDYwMzMwLCA2MDMzNywgNjAzNDQsIDYwMzUzLCA2MDM2MCwgCisgICAgNjAzNjksIDYwMzczLCA2MDM3NywgNjAzODMsIDYwMzg5LCA2MDM5NSwgNjA0MDMsIDYwNDA5LCA2MDQxMywgNjA0MTcsIAorICAgIDYwNDIxLCA2MDQyNywgNjA0MzMsIDYwNDM3LCA2MDQzOSwgNjA0NDMsIDYwNDQ5LCA2MDQ1MSwgNjA0NTUsIDYwNDU4LCAKKyAgICA2MDQ2MSwgNjA0NjcsIDYwNDcyLCA2MDQ3NiwgNjA0ODAsIDYwNDg1LCA2MDQ5MSwgNjA0OTYsIDYwNTAxLCA2MDUwNiwgCisgICAgNjA1MTEsIDYwNTE4LCA2MDUyNSwgNjA1MzAsIDYwNTM1LCA2MDU0MCwgNjA1NDUsIDYwNTUwLCA2MDU1NSwgNjA1NTksIAorICAgIDYwNTYzLCA2MDU3MCwgNjA1NzcsIDYwNTgzLCA2MDU4NywgNjA1OTIsIDYwNTk1LCA2MDU5OSwgNjA2MDYsIDYwNjEwLCAKKyAgICA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyOCwgNjA2MzQsIDYwNjM4LCA2MDY0NCwgNjA2NDgsIDYwNjUyLCA2MDY1OCwgCisgICAgNjA2NjMsIDYwNjY4LCA2MDY3MCwgNjA2NzMsIDYwNjc3LCA2MDY4MywgNjA2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNDUwLCAzMTQ1NiwgMzE0NjIsIDMxNDY2LCAzMTQ3MCwgMzE0NzQsIAotICAgIDMxNDc4LCAzMTQ4NCwgMzE0ODgsIDMxNDk0LCAzMTQ5OCwgMzE1MDQsIDMxNTEwLCAzMTUxOCwgMzE1MjQsIDMxNTMyLCAKLSAgICAzMTUzNiwgMzE1NDAsIDMxNTQ0LCAzMTU1MCwgMzE1NTMsIDMxNTU5LCAzMTU2MywgMzE1NjksIDMxNTczLCAzMTU3NywgCi0gICAgMzE1ODMsIDMxNTg3LCAzMTU5MywgMzE1OTcsIDMxNjAzLCAzMTYxMSwgMzE2MTksIDMxNjI3LCAzMTYzMywgMzE2MzcsIAotICAgIDMxNjQzLCAzMTY0NywgMzE2NTMsIDMxNjU3LCAzMTY2MCwgMzE2NjYsIDMxNjcwLCAzMTY3NiwgMzE2NzksIDMxNjgyLCAKLSAgICAzMTY4NiwgMzE2OTAsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEwLCAzMTcxMywgMzE3MTcsIDMxNzIyLCAzMTcyNywgCi0gICAgMzE3MzQsIDMxNzM5LCAzMTc0NiwgMzE3NTMsIDMxNzYyLCAzMTc2OSwgMzE3NzgsIDMxNzgzLCAzMTc5MCwgMzE3OTcsIAotICAgIDMxODA2LCAzMTgxMSwgMzE4MTgsIDMxODIzLCAzMTgyOSwgMzE4MzUsIDMxODQxLCAzMTg0NywgMzE4NTMsIDMxODU5LCAwLCAKLSAgICAwLCAwLCAwLCAzMTg2NSwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAzMTg4NCwgMzE4ODcsIDMxODkxLCAKLSAgICAzMTg5NCwgMzE4OTgsIDMxOTAxLCAzMTkwNCwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI1LCAzMTkzMCwgCi0gICAgMzE5MzUsIDMxOTQwLCAzMTk0NSwgMzE5NTIsIDMxOTU3LCAzMTk2MiwgMzE5NjcsIDMxOTcyLCAzMTk3OSwgMzE5ODUsIAotICAgIDMxOTkxLCAzMTk5NywgMzIwMDMsIDMyMDA5LCAzMjAxOCwgMzIwMjcsIDMyMDMzLCAzMjAzOSwgMzIwNDcsIDMyMDU1LCAKLSAgICAzMjA2NCwgMzIwNzMsIDMyMDgxLCAzMjA4OSwgMzIwOTgsIDMyMTA3LCAwLCAwLCAwLCAzMjExNSwgMzIxMjAsIDMyMTI1LCAKLSAgICAzMjEzMCwgMzIxMzQsIDMyMTM4LCAzMjE0MiwgMzIxNDcsIDMyMTUxLCAzMjE1NSwgMzIxNjAsIDMyMTY0LCAzMjE2OSwgCi0gICAgMzIxNzQsIDMyMTc5LCAzMjE4NCwgMzIxODksIDMyMTk0LCAzMjE5OSwgMzIyMDQsIDMyMjA5LCAzMjIxNCwgMzIyMTgsIAotICAgIDMyMjIzLCAzMjIyOCwgMzIyMzMsIDMyMjM3LCAzMjI0MSwgMzIyNDYsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAKLSAgICAzMjI3MCwgMzIyNzYsIDMyMjgyLCAzMjI4OCwgMzIyOTQsIDMyMzAwLCAzMjMwNiwgMzIzMTIsIDMyMzE4LCAzMjMyNCwgCi0gICAgMzIzMjksIDMyMzM0LCAzMjM0MSwgMzIzNDksIDMyMzU0LCAzMjM1OSwgMzIzNjQsIDMyMzY4LCAzMjM3MiwgMzIzNzYsIAotICAgIDMyMzgwLCAzMjM4NCwgMzIzODgsIDMyMzkzLCAzMjM5NywgMzI0MDIsIDMyNDA2LCAzMjQxMSwgMzI0MTYsIDMyNDIxLCAKLSAgICAzMjQyNywgMzI0MzMsIDMyNDM3LCAzMjQ0MywgMzI0NDcsIDMyNDUzLCAzMjQ1OSwgMzI0NjQsIDMyNDcxLCAzMjQ3NSwgCi0gICAgMzI0ODEsIDMyNDg2LCAzMjQ5MywgMzI0OTgsIDMyNTA1LCAzMjUxMiwgMzI1MTcsIDMyNTI0LCAzMjUyOSwgMzI1MzQsIAotICAgIDMyNTM5LCAzMjU0NiwgMzI1NTAsIDMyNTU2LCAzMjU2MywgMzI1NzAsIDMyNTc1LCAzMjU4MiwgMzI1ODksIDMyNTkzLCAKLSAgICAzMjU5OSwgMzI2MDQsIDMyNjA5LCAzMjYxNiwgMzI2MjEsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgCi0gICAgMzI2NDksIDMyNjU0LCAzMjY2MSwgMzI2NjcsIDMyNjcyLCAzMjY3OSwgMzI2ODQsIDMyNjkxLCAzMjY5NiwgMzI3MDYsIAotICAgIDMyNzEyLCAzMjcxOCwgMzI3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzI2LCAzMjczNSwgMzI3NDIsIDMyNzQ5LCAKLSAgICAzMjc1NiwgMzI3NjAsIDMyNzY1LCAzMjc3MCwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjgwMCwgCi0gICAgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI1LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NCwgMzI4NDksIAotICAgIDMyODU0LCAzMjg1OSwgMzI4NjMsIDMyODY4LCAzMjg3MywgMzI4NzgsIDMyODgzLCAzMjg4NywgMzI4OTIsIDMyODk3LCAKLSAgICAzMjkwMSwgMzI5MDYsIDMyOTExLCAzMjkxNiwgMzI5MjEsIDMyOTI2LCAzMjkzMCwgMzI5MzYsIDMyOTQzLCAzMjk0OSwgCi0gICAgMzI5NTQsIDMyOTU5LCAzMjk2NSwgMzI5NzAsIDMyOTc2LCAzMjk4MSwgMzI5ODcsIDMyOTkzLCAzMjk5OCwgMzMwMDQsIAotICAgIDMzMDEwLCAzMzAxNSwgMzMwMjEsIDMzMDI3LCAzMzAzMywgMzMwMzgsIDAsIDAsIDAsIDMzMDQzLCAzMzA0OSwgMzMwNTksIAotICAgIDMzMDY1LCAzMzA3MywgMzMwNzksIDMzMDg0LCAzMzA4OCwgMzMwOTIsIDMzMDk2LCAzMzEwMCwgMzMxMDQsIDMzMTA4LCAKLSAgICAzMzExMywgMzMxMTcsIDAsIDAsIDAsIDMzMTIyLCAzMzEyNywgMzMxMzIsIDMzMTM3LCAzMzE0NCwgMzMxNTAsIDMzMTU2LCAKLSAgICAzMzE2MiwgMzMxNjgsIDMzMTc0LCAzMzE4MCwgMzMxODcsIDMzMTkzLCAzMzIwMCwgMzMyMDcsIDMzMjE0LCAzMzIyMSwgCi0gICAgMzMyMjgsIDMzMjM1LCAzMzI0MiwgMzMyNDksIDMzMjU2LCAzMzI2MywgMzMyNzAsIDMzMjc3LCAzMzI4NCwgMzMyOTEsIAotICAgIDMzMjk4LCAzMzMwNSwgMzMzMTIsIDMzMzE5LCAzMzMyNiwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAKLSAgICAzMzM2OCwgMzMzNzUsIDMzMzgyLCAzMzM4OSwgMzMzOTYsIDMzNDAzLCAzMzQxMCwgMzM0MTgsIDMzNDI2LCAzMzQzNCwgCi0gICAgMzM0NDAsIDMzNDQ2LCAzMzQ1MiwgMzM0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDMzNDY5LCAzMzQ3NywgMzM0ODUsIDMzNDkzLCAzMzUwMSwgMzM1MTEsIDMzNTIxLCAzMzUzMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzM1NDEsIDMzNTQ2LCAzMzU1MSwgMzM1NTYsIDMzNTYxLCAzMzU3MCwgMzM1ODEsIDMzNTkwLCAzMzYwMSwgCi0gICAgMzM2MDcsIDMzNjIwLCAzMzYyNiwgMzM2MzMsIDMzNjQwLCAzMzY0NSwgMzM2NTEsIDMzNjU3LCAzMzY2OCwgMzM2NzcsIAotICAgIDMzNjg0LCAzMzY5MSwgMzM3MDAsIDMzNzA3LCAzMzcxNiwgMzM3MjYsIDMzNzM2LCAzMzc0MywgMzM3NTAsIDMzNzU3LCAKLSAgICAzMzc2NywgMzM3NzIsIDMzNzgwLCAzMzc4NiwgMzM3OTQsIDMzODAzLCAzMzgwOCwgMzM4MTUsIDMzODIxLCAzMzgyNiwgMCwgCi0gICAgMzM4MzEsIDMzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMzg0NCwgMzM4NDksIDMzODU1LCAzMzg2MiwgMzM4NzAsIDMzODc2LCAKLSAgICAzMzg4MiwgMzM4ODgsIDMzODkzLCAzMzkwMCwgMzM5MDYsIDMzOTEyLCAzMzkxOCwgMzM5MjYsIDMzOTMyLCAzMzk0MCwgCi0gICAgMzM5NDUsIDMzOTUxLCAzMzk1NywgMzM5NjQsIDMzOTcyLCAzMzk3OSwgMzM5ODUsIDMzOTkyLCAzMzk5OSwgMzQwMDUsIAotICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNiwgMzQwNDQsIDM0MDUzLCAzNDA1OSwgMzQwNjUsIDM0MDcxLCAKLSAgICAzNDA3NywgMzQwODUsIDM0MDg5LCAzNDA5NSwgMzQxMDEsIDM0MTA3LCAzNDExMywgMzQxMTksIDM0MTI1LCAzNDEyOSwgCi0gICAgMzQxMzQsIDM0MTM5LCAzNDE0NiwgMzQxNTEsIDM0MTU1LCAzNDE2MSwgMzQxNjYsIDM0MTcxLCAzNDE3NSwgMzQxODAsIAotICAgIDM0MTg1LCAzNDE4OSwgMzQxOTQsIDM0MTk5LCAzNDIwNiwgMzQyMTAsIDM0MjE1LCAzNDIyMCwgMzQyMjQsIDM0MjI5LCAKLSAgICAzNDIzMywgMzQyMzgsIDM0MjQyLCAzNDI0OCwgMzQyNTMsIDM0MjYwLCAzNDI2NSwgMzQyNzAsIDM0Mjc0LCAzNDI3OSwgCi0gICAgMzQyODQsIDM0MjkxLCAzNDI5NiwgMzQzMDIsIDM0MzA3LCAzNDMxMiwgMzQzMTcsIDM0MzIxLCAzNDMyNiwgMzQzMzMsIAotICAgIDM0MzQwLCAzNDM0NSwgMzQzNTAsIDM0MzU0LCAzNDM2MCwgMzQzNjcsIDM0MzcyLCAzNDM3NywgMzQzODIsIDM0Mzg4LCAKLSAgICAzNDM5MywgMzQzOTksIDM0NDA0LCAzNDQxMCwgMzQ0MTYsIDM0NDIyLCAzNDQyOSwgMzQ0MzYsIDM0NDQzLCAzNDQ1MCwgCi0gICAgMzQ0NTcsIDM0NDY0LCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDQsIDM0NTEzLCAzNDUyMiwgMzQ1MzEsIAotICAgIDM0NTQzLCAzNDU1MiwgMzQ1NjEsIDM0NTcwLCAzNDU3NywgMzQ1ODIsIDM0NTg5LCAzNDU5NywgMzQ2MDUsIDM0NjEyLCAKLSAgICAzNDYxOSwgMzQ2MjYsIDM0NjMzLCAzNDY0MSwgMzQ2NTAsIDM0NjU5LCAzNDY2OCwgMzQ2NzcsIDM0Njg2LCAzNDY5NSwgCi0gICAgMzQ3MDQsIDM0NzEzLCAzNDcyMiwgMzQ3MzEsIDM0NzQwLCAzNDc0OSwgMzQ3NTgsIDM0NzY3LCAzNDc3NSwgMzQ3ODQsIAotICAgIDM0Nzk1LCAzNDgwMywgMzQ4MTIsIDM0ODIzLCAzNDgzMiwgMzQ4NDEsIDM0ODUwLCAzNDg1OSwgMzQ4NjcsIDM0ODc2LCAKLSAgICAzNDg4MywgMzQ4ODgsIDM0ODk2LCAzNDkwMSwgMzQ5MDgsIDM0OTEzLCAzNDkyMiwgMzQ5MjgsIDM0OTM1LCAzNDk0MiwgCi0gICAgMzQ5NDcsIDM0OTUyLCAzNDk2MCwgMzQ5NjgsIDM0OTc3LCAzNDk4NiwgMzQ5OTEsIDM0OTk4LCAzNTAwOSwgMzUwMTcsIAotICAgIDM1MDI2LCAzNTAzMiwgMzUwMzgsIDM1MDQzLCAzNTA1MCwgMzUwNTUsIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAKLSAgICAzNTA4NiwgMzUwOTMsIDM1MDk4LCAzNTEwNywgMzUxMTUsIDM1MTIwLCAzNTEyNSwgMzUxMzIsIDM1MTM5LCAzNTE0MywgCi0gICAgMzUxNDcsIDM1MTUwLCAzNTE1MywgMzUxNTYsIDM1MTU5LCAzNTE2MiwgMzUxNjUsIDM1MTcyLCAzNTE3NSwgMzUxNzgsIAotICAgIDM1MTgzLCAzNTE4NywgMzUxOTEsIDM1MTk1LCAzNTE5OSwgMzUyMDMsIDM1MjEyLCAzNTIxOCwgMzUyMjQsIDM1MjMwLCAKLSAgICAzNTIzOCwgMzUyNDYsIDM1MjUyLCAzNTI1OCwgMzUyNjUsIDM1MjcxLCAzNTI3NiwgMzUyODIsIDM1Mjg5LCAzNTI5NSwgCi0gICAgMzUzMDIsIDM1MzA4LCAzNTMxNiwgMzUzMjEsIDM1MzI3LCAzNTMzMywgMzUzMzksIDM1MzQ1LCAzNTM1MSwgMzUzNTcsIAotICAgIDM1MzYzLCAzNTM3NCwgMzUzODQsIDM1MzkwLCAzNTM5NiwgMzU0MDYsIDM1NDEyLCAzNTQyMCwgMzU0MjgsIDM1NDM2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNTQ0MSwgMzU0NDgsIDM1NDU1LCAzNTQ2MCwgMzU0NjksIDM1NDc3LCAzNTQ4NSwgMzU0OTIsIAotICAgIDM1NDk5LCAzNTUwNiwgMzU1MTMsIDM1NTIxLCAzNTUyOSwgMzU1MzksIDM1NTQ5LCAzNTU1NywgMzU1NjUsIDM1NTczLCAKLSAgICAzNTU4MSwgMzU1OTAsIDM1NTk5LCAzNTYwNywgMzU2MTUsIDM1NjI0LCAzNTYzMywgMzU2NDMsIDM1NjUzLCAzNTY2MiwgCi0gICAgMzU2NzEsIDM1Njc5LCAzNTY4NywgMzU2OTUsIDM1NzAzLCAzNTcxMywgMzU3MjMsIDM1NzMxLCAzNTczOSwgMzU3NDcsIAotICAgIDM1NzU1LCAzNTc2MywgMzU3NzEsIDM1Nzc5LCAzNTc4NywgMzU3OTUsIDM1ODAzLCAzNTgxMSwgMzU4MTksIDM1ODI4LCAKLSAgICAzNTgzNywgMzU4NDYsIDM1ODU1LCAzNTg2NSwgMzU4NzUsIDM1ODgyLCAzNTg4OSwgMzU4OTcsIDM1OTA1LCAzNTkxNCwgCi0gICAgMzU5MjMsIDM1OTMxLCAzNTkzOSwgMzU5NTEsIDM1OTYzLCAzNTk3MiwgMzU5ODEsIDM1OTkwLCAzNTk5OSwgMzYwMDYsIAotICAgIDM2MDEzLCAzNjAyMSwgMzYwMjksIDM2MDM3LCAzNjA0NSwgMzYwNTMsIDM2MDYxLCAzNjA2OSwgMzYwNzcsIDM2MDg2LCAKLSAgICAzNjA5NSwgMzYxMDQsIDM2MTEzLCAzNjEyMiwgMzYxMzEsIDM2MTQxLCAzNjE1MSwgMzYxNjEsIDM2MTcxLCAzNjE4MCwgCi0gICAgMzYxODksIDM2MTk2LCAzNjIwMywgMzYyMTEsIDM2MjE5LCAzNjIyNywgMzYyMzUsIDM2MjQzLCAzNjI1MSwgMzYyNjMsIAotICAgIDM2Mjc1LCAzNjI4NCwgMzYyOTMsIDM2MzAxLCAzNjMwOSwgMzYzMTcsIDM2MzI1LCAzNjMzNiwgMzYzNDcsIDM2MzU4LCAKLSAgICAzNjM2OSwgMzYzODEsIDM2MzkzLCAzNjQwMSwgMzY0MDksIDM2NDE3LCAzNjQyNSwgMzY0MzQsIDM2NDQzLCAzNjQ1MiwgCi0gICAgMzY0NjEsIDM2NDY5LCAzNjQ3NywgMzY0ODUsIDM2NDkzLCAzNjUwMSwgMzY1MDksIDM2NTE4LCAzNjUyNywgMzY1MzcsIAotICAgIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTcxLCAzNjU3OSwgMzY1ODcsIDM2NTk1LCAzNjYwMiwgMzY2MDksIDM2NjE3LCAKLSAgICAzNjYyNSwgMzY2MzMsIDM2NjQxLCAzNjY0OSwgMzY2NTcsIDM2NjY1LCAzNjY3MywgMzY2ODEsIDM2Njg5LCAzNjY5NywgCi0gICAgMzY3MDUsIDM2NzEzLCAzNjcyMSwgMzY3MjksIDM2NzM3LCAzNjc0NiwgMzY3NTUsIDM2NzY0LCAzNjc3MiwgMzY3ODEsIAotICAgIDM2NzkwLCAzNjc5OSwgMzY4MDgsIDM2ODE4LCAzNjgyNywgMzY4MzMsIDM2ODM4LCAzNjg0NSwgMzY4NTIsIDM2ODYwLCAKLSAgICAzNjg2OCwgMzY4NzcsIDM2ODg2LCAzNjg5NiwgMzY5MDYsIDM2OTE3LCAzNjkyOCwgMzY5MzgsIDM2OTQ4LCAzNjk1OCwgCi0gICAgMzY5NjgsIDM2OTc3LCAzNjk4NiwgMzY5OTYsIDM3MDA2LCAzNzAxNywgMzcwMjgsIDM3MDM4LCAzNzA0OCwgMzcwNTgsIAotICAgIDM3MDY4LCAzNzA3NSwgMzcwODIsIDM3MDkwLCAzNzA5OCwgMzcxMDUsIDM3MTEyLCAzNzEyMSwgMzcxMzAsIDM3MTQwLCAKLSAgICAzNzE1MCwgMzcxNjEsIDM3MTcyLCAzNzE4MiwgMzcxOTIsIDM3MjAyLCAzNzIxMiwgMzcyMjEsIDM3MjMwLCAzNzIzOCwgCi0gICAgMzcyNDYsIDM3MjUzLCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NSwgMzcyOTQsIDM3MzA0LCAzNzMxNCwgMzczMjUsIAotICAgIDM3MzM2LCAzNzM0NiwgMzczNTYsIDM3MzY2LCAzNzM3NiwgMzczODUsIDM3Mzk0LCAzNzQwNCwgMzc0MTQsIDM3NDI1LCAKLSAgICAzNzQzNiwgMzc0NDYsIDM3NDU2LCAzNzQ2NiwgMzc0NzYsIDM3NDgzLCAzNzQ5MCwgMzc0OTgsIDM3NTA2LCAzNzUxNSwgCi0gICAgMzc1MjQsIDM3NTM0LCAzNzU0NCwgMzc1NTUsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk2LCAzNzYwNiwgMzc2MTQsIAotICAgIDM3NjIyLCAzNzYzMCwgMzc2MzgsIDM3NjQ3LCAzNzY1NiwgMzc2NjQsIDM3NjcyLCAzNzY3OSwgMzc2ODYsIDM3NjkzLCAKLSAgICAzNzcwMCwgMzc3MDgsIDM3NzE2LCAzNzcyNCwgMzc3MzIsIDM3NzQzLCAzNzc1NCwgMzc3NjUsIDM3Nzc2LCAzNzc4NywgCi0gICAgMzc3OTgsIDM3ODA2LCAzNzgxNCwgMzc4MjUsIDM3ODM2LCAzNzg0NywgMzc4NTgsIDM3ODY5LCAzNzg4MCwgMzc4ODgsIAotICAgIDM3ODk2LCAzNzkwNywgMzc5MTgsIDM3OTI5LCAwLCAwLCAzNzk0MCwgMzc5NDgsIDM3OTU2LCAzNzk2NywgMzc5NzgsIAotICAgIDM3OTg5LCAwLCAwLCAzODAwMCwgMzgwMDgsIDM4MDE2LCAzODAyNywgMzgwMzgsIDM4MDQ5LCAzODA2MCwgMzgwNzEsIAotICAgIDM4MDgyLCAzODA5MCwgMzgwOTgsIDM4MTA5LCAzODEyMCwgMzgxMzEsIDM4MTQyLCAzODE1MywgMzgxNjQsIDM4MTcyLCAKLSAgICAzODE4MCwgMzgxOTEsIDM4MjAyLCAzODIxMywgMzgyMjQsIDM4MjM1LCAzODI0NiwgMzgyNTQsIDM4MjYyLCAzODI3MywgCi0gICAgMzgyODQsIDM4Mjk1LCAzODMwNiwgMzgzMTcsIDM4MzI4LCAzODMzNiwgMzgzNDQsIDM4MzU1LCAzODM2NiwgMzgzNzcsIDAsIAotICAgIDAsIDM4Mzg4LCAzODM5NiwgMzg0MDQsIDM4NDE1LCAzODQyNiwgMzg0MzcsIDAsIDAsIDM4NDQ4LCAzODQ1NiwgMzg0NjQsIAotICAgIDM4NDc1LCAzODQ4NiwgMzg0OTcsIDM4NTA4LCAzODUxOSwgMCwgMzg1MzAsIDAsIDM4NTM4LCAwLCAzODU0OSwgMCwgCi0gICAgMzg1NjAsIDM4NTcxLCAzODU3OSwgMzg1ODcsIDM4NTk4LCAzODYwOSwgMzg2MjAsIDM4NjMxLCAzODY0MiwgMzg2NTMsIAotICAgIDM4NjYxLCAzODY2OSwgMzg2ODAsIDM4NjkxLCAzODcwMiwgMzg3MTMsIDM4NzI0LCAzODczNSwgMzg3NDMsIDM4NzUxLCAKLSAgICAzODc1OSwgMzg3NjcsIDM4Nzc1LCAzODc4MywgMzg3OTEsIDM4Nzk5LCAzODgwNywgMzg4MTUsIDM4ODIzLCAzODgzMSwgCi0gICAgMzg4MzksIDAsIDAsIDM4ODQ3LCAzODg1OCwgMzg4NjksIDM4ODgzLCAzODg5NywgMzg5MTEsIDM4OTI1LCAzODkzOSwgCi0gICAgMzg5NTMsIDM4OTY0LCAzODk3NSwgMzg5ODksIDM5MDAzLCAzOTAxNywgMzkwMzEsIDM5MDQ1LCAzOTA1OSwgMzkwNzAsIAotICAgIDM5MDgxLCAzOTA5NSwgMzkxMDksIDM5MTIzLCAzOTEzNywgMzkxNTEsIDM5MTY1LCAzOTE3NiwgMzkxODcsIDM5MjAxLCAKLSAgICAzOTIxNSwgMzkyMjksIDM5MjQzLCAzOTI1NywgMzkyNzEsIDM5MjgyLCAzOTI5MywgMzkzMDcsIDM5MzIxLCAzOTMzNSwgCi0gICAgMzkzNDksIDM5MzYzLCAzOTM3NywgMzkzODgsIDM5Mzk5LCAzOTQxMywgMzk0MjcsIDM5NDQxLCAzOTQ1NSwgMzk0NjksIAotICAgIDM5NDgzLCAzOTQ5MSwgMzk0OTksIDM5NTEwLCAzOTUxOCwgMCwgMzk1MjksIDM5NTM3LCAzOTU0OCwgMzk1NTYsIDM5NTY0LCAKLSAgICAzOTU3MiwgMzk1ODAsIDM5NTg4LCAzOTU5MSwgMzk1OTQsIDM5NTk3LCAzOTYwMCwgMzk2MDYsIDM5NjE3LCAzOTYyNSwgMCwgCi0gICAgMzk2MzYsIDM5NjQ0LCAzOTY1NSwgMzk2NjMsIDM5NjcxLCAzOTY3OSwgMzk2ODcsIDM5Njk1LCAzOTcwMSwgMzk3MDcsIAotICAgIDM5NzEzLCAzOTcyMSwgMzk3MjksIDM5NzQwLCAwLCAwLCAzOTc1MSwgMzk3NTksIDM5NzcwLCAzOTc3OCwgMzk3ODYsIAotICAgIDM5Nzk0LCAwLCAzOTgwMiwgMzk4MDgsIDM5ODE0LCAzOTgyMCwgMzk4MjgsIDM5ODM2LCAzOTg0NywgMzk4NTgsIDM5ODY2LCAKLSAgICAzOTg3NCwgMzk4ODIsIDM5ODkzLCAzOTkwMSwgMzk5MDksIDM5OTE3LCAzOTkyNSwgMzk5MzMsIDM5OTM5LCAzOTk0NSwgMCwgCi0gICAgMCwgMzk5NDgsIDM5OTU5LCAzOTk2NywgMCwgMzk5NzgsIDM5OTg2LCAzOTk5NywgNDAwMDUsIDQwMDEzLCA0MDAyMSwgCi0gICAgNDAwMjksIDQwMDM3LCA0MDA0MCwgMCwgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIAotICAgIDQwMDcxLCA0MDA3NSwgNDAwNzksIDQwMDgzLCA0MDA4NywgNDAwOTMsIDQwMDk5LCA0MDEwNSwgNDAxMDgsIDQwMTExLCAKLSAgICA0MDExMywgNDAxMTcsIDQwMTIxLCA0MDEyNSwgNDAxMjksIDQwMTMyLCA0MDEzNiwgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgCi0gICAgNDAxNTksIDQwMTY2LCA0MDE3MSwgNDAxNzYsIDQwMTgyLCA0MDE4OCwgNDAxOTAsIDQwMTkzLCA0MDE5NSwgNDAxOTksIAotICAgIDQwMjAzLCA0MDIwNywgNDAyMTEsIDQwMjE1LCA0MDIxOSwgNDAyMjMsIDQwMjI3LCA0MDIzMSwgNDAyMzcsIDQwMjQxLCAKLSAgICA0MDI0NSwgNDAyNTEsIDQwMjU2LCA0MDI2MywgNDAyNjUsIDQwMjY4LCA0MDI3MiwgNDAyNzYsIDQwMjgxLCA0MDI4NywgCi0gICAgNDAyODksIDQwMjk4LCA0MDMwNywgNDAzMTAsIDQwMzE0LCA0MDMxNiwgNDAzMTgsIDQwMzIwLCA0MDMyMywgNDAzMjksIAotICAgIDQwMzMxLCA0MDMzNSwgNDAzMzksIDQwMzQ2LCA0MDM1MywgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzIsIDQwMzc3LCAKLSAgICA0MDM4MSwgNDAzODUsIDQwMzg4LCA0MDM5MiwgNDAzOTYsIDQwNDAzLCA0MDQwOCwgNDA0MTIsIDQwNDE2LCA0MDQyMSwgCi0gICAgNDA0MjUsIDQwNDI5LCA0MDQzNCwgNDA0MzksIDQwNDQzLCA0MDQ0NywgNDA0NTEsIDQwNDUzLCA0MDQ1OCwgNDA0NjMsIAotICAgIDQwNDY3LCA0MDQ3MSwgNDA0NzUsIDQwNDc5LCAwLCA0MDQ4MywgNDA0ODcsIDQwNDkxLCA0MDQ5NywgNDA1MDMsIDQwNTA5LCAKLSAgICA0MDUxNSwgNDA1MjIsIDQwNTI5LCA0MDUzNCwgNDA1MzksIDQwNTQzLCAwLCAwLCA0MDU0OSwgNDA1NTIsIDQwNTU1LCAKLSAgICA0MDU1OCwgNDA1NjIsIDQwNTY1LCA0MDU2OSwgNDA1NzMsIDQwNTc3LCA0MDU4MiwgNDA1ODcsIDQwNTkyLCA0MDU5OSwgCi0gICAgNDA2MDMsIDQwNjA2LCA0MDYwOSwgNDA2MTIsIDQwNjE1LCA0MDYxOCwgNDA2MjEsIDQwNjI1LCA0MDYyOCwgNDA2MzIsIAotICAgIDQwNjM2LCA0MDY0MCwgNDA2NDUsIDQwNjUwLCAwLCA0MDY1NSwgNDA2NjEsIDQwNjY3LCA0MDY3MywgNDA2ODAsIDQwNjg3LCAKLSAgICA0MDY5NCwgNDA3MDEsIDQwNzA3LCA0MDcxNCwgNDA3MjEsIDQwNzI4LCA0MDczNCwgMCwgMCwgMCwgNDA3NDEsIDQwNzQ0LCAKLSAgICA0MDc0NywgNDA3NTAsIDQwNzU1LCA0MDc1OCwgNDA3NjEsIDQwNzY0LCA0MDc2NywgNDA3NzAsIDQwNzczLCA0MDc3OCwgCi0gICAgNDA3ODEsIDQwNzg0LCA0MDc4NywgNDA3OTAsIDQwNzkzLCA0MDc5OCwgNDA4MDEsIDQwODA0LCA0MDgwNywgNDA4MTAsIAotICAgIDQwODEzLCA0MDgxOCwgNDA4MjEsIDQwODI0LCA0MDgyOSwgNDA4MzQsIDQwODM4LCA0MDg0MSwgNDA4NDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwODQ3LCA0MDg1MiwgNDA4NTcsIDQwODY0LCAKLSAgICA0MDg3MiwgNDA4NzcsIDQwODgyLCA0MDg4NiwgNDA4OTAsIDQwODk1LCA0MDkwMiwgNDA5MDksIDQwOTEzLCA0MDkxOCwgCi0gICAgNDA5MjMsIDQwOTI4LCA0MDkzMywgNDA5NDAsIDQwOTQ1LCA0MDk1MCwgNDA5NTUsIDQwOTY0LCA0MDk3MSwgNDA5NzgsIAotICAgIDQwOTgyLCA0MDk4NywgNDA5OTMsIDQwOTk4LCA0MTAwNSwgNDEwMTMsIDQxMDIxLCA0MTAyNSwgNDEwMjksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDMzLCA0MTAzNywgNDEwNDUsIDQxMDQ5LCA0MTA1MywgCi0gICAgNDEwNTgsIDQxMDYyLCA0MTA2NiwgNDEwNzAsIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDg0LCA0MTA4OSwgNDEwOTMsIAotICAgIDQxMDk3LCA0MTEwNSwgNDExMDgsIDQxMTEyLCA0MTExNSwgNDExMTgsIDQxMTI0LCA0MTEyOCwgNDExMzEsIDQxMTM3LCAKLSAgICA0MTE0MSwgNDExNDUsIDQxMTQ5LCA0MTE1MiwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjUsIDQxMTY4LCA0MTE3MSwgCi0gICAgNDExNzUsIDQxMTc3LCA0MTE4MSwgNDExODQsIDQxMTg3LCA0MTE5MiwgNDExOTcsIDQxMjA0LCA0MTIwNywgNDEyMTAsIAotICAgIDQxMjE0LCA0MTIxOSwgNDEyMjIsIDQxMjI1LCA0MTIyOCwgNDEyMzIsIDQxMjM3LCA0MTI0MSwgNDEyNDQsIDQxMjQ2LCAKLSAgICA0MTI0OSwgNDEyNTIsIDQxMjU1LCA0MTI1OSwgNDEyNjQsIDQxMjY3LCA0MTI3MSwgNDEyNzUsIDQxMjc5LCA0MTI4MywgCi0gICAgNDEyODgsIDQxMjk0LCA0MTI5OSwgNDEzMDQsIDQxMzEwLCA0MTMxNSwgNDEzMjAsIDQxMzI0LCA0MTMyOCwgNDEzMzMsIAotICAgIDQxMzM3LCA0MTM0MSwgNDEzNDQsIDQxMzQ2LCA0MTM1MSwgNDEzNTcsIDQxMzY0LCA0MTM3MSwgNDEzNzgsIDQxMzg1LCAKLSAgICA0MTM5MiwgNDEzOTksIDQxNDA2LCA0MTQxMywgNDE0MjEsIDQxNDI4LCA0MTQzNiwgNDE0NDMsIDQxNDUwLCA0MTQ1OCwgCi0gICAgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODEsIDQxNDg2LCA0MTQ5MSwgNDE0OTYsIDQxNTAxLCA0MTUwNywgNDE1MTIsIAotICAgIDQxNTE4LCA0MTUyNCwgNDE1MzAsIDQxNTM2LCA0MTU0MiwgNDE1NDksIDQxNTU3LCA0MTU2NCwgNDE1NzAsIDQxNTc2LCAKLSAgICA0MTU4MiwgNDE1ODgsIDQxNTk0LCA0MTYwMCwgNDE2MDcsIDQxNjEzLCA0MTYyMCwgNDE2MjcsIDQxNjM0LCA0MTY0MSwgCi0gICAgNDE2NDgsIDQxNjU2LCA0MTY2NSwgNDE2NzMsIDQxNjg0LCA0MTY5MiwgNDE3MDAsIDQxNzA5LCA0MTcxNiwgNDE3MjUsIAotICAgIDQxNzM0LCA0MTc0MiwgNDE3NTEsIDQxNzU5LCA0MTc2MywgMCwgMCwgMCwgMCwgNDE3NjcsIDQxNzY5LCA0MTc3MSwgCi0gICAgNDE3NzMsIDQxNzc1LCA0MTc3OCwgNDE3ODEsIDQxNzg1LCA0MTc4OSwgNDE3OTQsIDQxNzk5LCA0MTgwMywgNDE4MDcsIAotICAgIDQxODExLCA0MTgxNSwgNDE4MjAsIDQxODI1LCA0MTgzMCwgNDE4MzUsIDQxODQwLCA0MTg0NSwgNDE4NTAsIDQxODU1LCAKLSAgICA0MTg2MCwgNDE4NjUsIDQxODcxLCA0MTg3NSwgNDE4NzksIDQxODg0LCA0MTg4OSwgNDE4OTQsIDQxODk5LCA0MTkwMywgCi0gICAgNDE5MTAsIDQxOTE3LCA0MTkyNCwgNDE5MzEsIDQxOTM4LCA0MTk0NSwgNDE5NTIsIDQxOTU5LCA0MTk2NywgNDE5NzksIAotICAgIDQxOTg1LCA0MTk5MSwgNDE5OTgsIDQyMDA1LCA0MjAxMiwgNDIwMTksIDQyMDI2LCA0MjAzMywgNDIwNDAsIDQyMDQ3LCAKLSAgICA0MjA1MiwgNDIwNTgsIDQyMDYzLCA0MjA2OCwgNDIwNzMsIDQyMDc4LCA0MjA4MywgNDIwOTAsIDQyMDk3LCA0MjEwMiwgCi0gICAgNDIxMDgsIDQyMTEzLCA0MjExNiwgNDIxMTksIDQyMTIyLCA0MjEyNSwgNDIxMjksIDQyMTMzLCA0MjEzOCwgNDIxNDMsIAotICAgIDQyMTQ5LCA0MjE1NSwgNDIxNTksIDQyMTYzLCA0MjE2NywgNDIxNzEsIDQyMTc2LCA0MjE4MSwgNDIxODUsIDQyMTg5LCAKLSAgICA0MjE5MywgNDIxOTcsIDQyMjAyLCA0MjIwNywgNDIyMTAsIDQyMjEzLCA0MjIxNiwgNDIyMTksIDQyMjI1LCA0MjIzMiwgCi0gICAgNDIyNDMsIDQyMjUzLCA0MjI1NywgNDIyNjUsIDQyMjcyLCA0MjI4MCwgNDIyODksIDQyMjkzLCA0MjI5OSwgNDIzMDUsIAotICAgIDQyMzA5LCA0MjMxNCwgNDIzMTksIDQyMzI1LCA0MjMzMSwgNDIzMzcsIDQyMzQ0LCA0MjM0OCwgNDIzNTIsIDQyMzU3LCAKLSAgICA0MjM2MCwgNDIzNjIsIDQyMzY2LCA0MjM3MCwgNDIzNzgsIDQyMzgyLCA0MjM4NCwgNDIzODYsIDQyMzkwLCA0MjM5OCwgCi0gICAgNDI0MDMsIDQyNDA5LCA0MjQxOSwgNDI0MjYsIDQyNDMxLCA0MjQzNSwgNDI0MzksIDQyNDQzLCA0MjQ0NiwgNDI0NDksIAotICAgIDQyNDUyLCA0MjQ1NiwgNDI0NjAsIDQyNDY0LCA0MjQ2OCwgNDI0NzIsIDQyNDc1LCA0MjQ3OSwgNDI0ODMsIDQyNDg2LCAKLSAgICA0MjQ4OCwgNDI0OTEsIDQyNDkzLCA0MjQ5NywgNDI1MDEsIDQyNTAzLCA0MjUwOSwgNDI1MTIsIDQyNTE3LCA0MjUyMSwgCi0gICAgNDI1MjUsIDQyNTI3LCA0MjUyOSwgNDI1MzEsIDQyNTM0LCA0MjUzOCwgNDI1NDIsIDQyNTQ2LCA0MjU1MCwgNDI1NTQsIAotICAgIDQyNTYwLCA0MjU2NiwgNDI1NjgsIDQyNTcwLCA0MjU3MiwgNDI1NzQsIDQyNTc3LCA0MjU3OSwgNDI1ODMsIDQyNTg1LCAKLSAgICA0MjU4OSwgNDI1OTMsIDQyNTk4LCA0MjYwMiwgNDI2MDYsIDQyNjEwLCA0MjYxNCwgNDI2MTgsIDQyNjI0LCA0MjYyOCwgCi0gICAgNDI2MzgsIDQyNjQ4LCA0MjY1MiwgNDI2NTgsIDQyNjY1LCA0MjY2OSwgNDI2NzMsIDQyNjc2LCA0MjY4MSwgNDI2ODUsIAotICAgIDQyNjkxLCA0MjY5NSwgNDI3MDgsIDQyNzE3LCA0MjcyMSwgNDI3MjUsIDQyNzMxLCA0MjczNSwgNDI3MzgsIDQyNzQwLCAKLSAgICA0Mjc0MywgNDI3NDcsIDQyNzUxLCA0Mjc1OCwgNDI3NjIsIDQyNzY2LCA0Mjc3MCwgNDI3NzMsIDQyNzc4LCA0Mjc4MywgCi0gICAgNDI3ODksIDQyNzk1LCA0MjgwMCwgNDI4MDUsIDQyODEzLCA0MjgyMSwgNDI4MjUsIDQyODI5LCA0MjgzMSwgNDI4MzYsIAotICAgIDQyODQwLCA0Mjg0NCwgNDI4NTIsIDQyODYwLCA0Mjg2NywgNDI4NzQsIDQyODgzLCA0Mjg5MiwgNDI4OTgsIDQyOTA0LCAKLSAgICA0MjkxMiwgNDI5MjAsIDQyOTIyLCA0MjkyNCwgNDI5MzAsIDQyOTM2LCA0Mjk0MywgNDI5NTAsIDQyOTU2LCA0Mjk2MiwgCi0gICAgNDI5NjYsIDQyOTcwLCA0Mjk3NywgNDI5ODQsIDQyOTkxLCA0Mjk5OCwgNDMwMDgsIDQzMDE4LCA0MzAyNiwgNDMwMzQsIAotICAgIDQzMDM2LCA0MzA0MCwgNDMwNDQsIDQzMDQ5LCA0MzA1NCwgNDMwNjIsIDQzMDcwLCA0MzA3MywgNDMwNzYsIDQzMDc5LCAKLSAgICA0MzA4MiwgNDMwODUsIDQzMDkwLCA0MzA5NCwgNDMwOTksIDQzMTA0LCA0MzEwNywgNDMxMTAsIDQzMTEzLCA0MzExNiwgCi0gICAgNDMxMTksIDQzMTIzLCA0MzEyNiwgNDMxMjksIDQzMTMyLCA0MzEzNSwgNDMxMzcsIDQzMTM5LCA0MzE0MSwgNDMxNDMsIAotICAgIDQzMTUxLCA0MzE1OSwgNDMxNjUsIDQzMTY5LCA0MzE3NSwgNDMxODUsIDQzMTkxLCA0MzE5NywgNDMyMDMsIDQzMjExLCAKLSAgICA0MzIyMCwgNDMyMzIsIDQzMjM2LCA0MzI0MCwgNDMyNDIsIDQzMjQ4LCA0MzI1MCwgNDMyNTIsIDQzMjU0LCA0MzI1NiwgCi0gICAgNDMyNjIsIDQzMjY1LCA0MzI3MSwgNDMyNzcsIDQzMjgxLCA0MzI4NSwgNDMyODksIDQzMjkyLCA0MzI5NiwgNDMzMDAsIAotICAgIDQzMzAyLCA0MzMxMSwgNDMzMjAsIDQzMzI1LCA0MzMzMCwgNDMzMzYsIDQzMzQyLCA0MzM0OCwgNDMzNTEsIDQzMzU0LCAKLSAgICA0MzM1NywgNDMzNjAsIDQzMzYyLCA0MzM2NywgNDMzNzIsIDQzMzc3LCA0MzM4MywgNDMzODksIDQzMzk4LCA0MzQwNywgCi0gICAgNDM0MTQsIDQzNDIxLCA0MzQyOCwgNDM0MzUsIDQzNDQ1LCA0MzQ1NSwgNDM0NjUsIDQzNDc1LCA0MzQ4NSwgNDM0OTUsIAotICAgIDQzNTA0LCA0MzUxMywgNDM1MjIsIDQzNTMxLCA0MzUzOSwgNDM1NTEsIDQzNTYyLCA0MzU3OCwgNDM1ODEsIDQzNTg3LCAKLSAgICA0MzU5MywgNDM1OTksIDQzNjA3LCA0MzYyMiwgNDM2MzgsIDQzNjQ0LCA0MzY1MCwgNDM2NTcsIDQzNjYzLCA0MzY3MiwgCi0gICAgNDM2NzksIDQzNjkzLCA0MzcwOCwgNDM3MTMsIDQzNzE5LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNSwgNDM3MzgsIAotICAgIDQzNzQxLCA0Mzc0MywgNDM3NDUsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU4LCA0Mzc2MSwgNDM3NjYsIDQzNzcxLCAKLSAgICA0Mzc3NiwgNDM3ODEsIDQzNzg2LCA0Mzc4OSwgNDM3OTEsIDQzNzkzLCA0Mzc5NSwgNDM3OTksIDQzODAzLCA0MzgwNywgCi0gICAgNDM4MTMsIDQzODE4LCA0MzgyMCwgNDM4MjIsIDQzODI3LCA0MzgzMiwgNDM4MzcsIDQzODQyLCA0Mzg0NywgNDM4NTIsIAotICAgIDQzODU0LCA0Mzg1NiwgNDM4NjYsIDQzODcwLCA0Mzg3OCwgNDM4ODcsIDQzODg5LCA0Mzg5NCwgNDM4OTksIDQzOTA3LCAKLSAgICA0MzkxMSwgNDM5MTMsIDQzOTE3LCA0MzkxOSwgNDM5MjMsIDQzOTI3LCA0MzkzMSwgNDM5MzMsIDQzOTM1LCA0MzkzNywgCi0gICAgNDM5NDQsIDQzOTUzLCA0Mzk2MiwgNDM5NzEsIDQzOTgwLCA0Mzk4OSwgNDM5OTgsIDQ0MDA3LCA0NDAxNiwgNDQwMjQsIAotICAgIDQ0MDMyLCA0NDA0MSwgNDQwNTAsIDQ0MDU5LCA0NDA2OCwgNDQwNzYsIDQ0MDg0LCA0NDA5MywgNDQxMDIsIDQ0MTExLCAKLSAgICA0NDEyMSwgNDQxMzAsIDQ0MTQwLCA0NDE0OSwgNDQxNTksIDQ0MTY3LCA0NDE3NiwgNDQxODYsIDQ0MTk1LCA0NDIwNSwgCi0gICAgNDQyMTQsIDQ0MjI0LCA0NDIzMiwgNDQyNDEsIDQ0MjUwLCA0NDI1OSwgNDQyNjgsIDQ0Mjc3LCA0NDI4NiwgNDQyOTYsIAotICAgIDQ0MzA1LCA0NDMxNCwgNDQzMjMsIDQ0MzMzLCA0NDM0MiwgNDQzNTEsIDQ0MzYwLCA0NDM2OSwgNDQzNzksIDQ0Mzg5LCAKLSAgICA0NDM5OCwgNDQ0MDcsIDQ0NDE1LCA0NDQyNCwgNDQ0MzEsIDQ0NDQwLCA0NDQ0OSwgNDQ0NjAsIDQ0NDY5LCA0NDQ3OSwgCi0gICAgNDQ0ODksIDQ0NDk2LCA0NDUwMywgNDQ1MTAsIDQ0NTE5LCA0NDUyOCwgNDQ1MzcsIDQ0NTQ2LCA0NDU1MywgNDQ1NTgsIAotICAgIDQ0NTY2LCA0NDU3MSwgNDQ1NzQsIDQ0NTgxLCA0NDU4NCwgNDQ1ODksIDQ0NTk0LCA0NDU5NywgNDQ2MDAsIDQ0NjA4LCAKLSAgICA0NDYxMSwgNDQ2MTYsIDQ0NjE5LCA0NDYyNywgNDQ2MzIsIDQ0NjQwLCA0NDY0MywgNDQ2NDYsIDQ0NjQ5LCA0NDY1NCwgCi0gICAgNDQ2NTksIDQ0NjYyLCA0NDY2NSwgNDQ2NzMsIDQ0Njc2LCA0NDY4MywgNDQ2OTAsIDQ0Njk0LCA0NDY5OCwgNDQ3MDMsIAotICAgIDQ0NzA4LCA0NDcxNCwgNDQ3MTksIDQ0NzI1LCA0NDczMSwgNDQ3MzYsIDQ0NzQyLCA0NDc1MCwgNDQ3NTYsIDQ0NzY0LCAKLSAgICA0NDc3MiwgNDQ3NzgsIDQ0Nzg2LCA0NDc5NCwgNDQ4MDIsIDQ0ODEwLCA0NDgxNiwgNDQ4MjQsIDQ0ODMyLCA0NDg0MCwgCi0gICAgNDQ4NDQsIDQ0ODUwLCA0NDg2NCwgNDQ4NzgsIDQ0ODgyLCA0NDg4NiwgNDQ4OTAsIDQ0ODk0LCA0NDkwNCwgNDQ5MDgsIAotICAgIDQ0OTEzLCA0NDkxOCwgNDQ5MjQsIDQ0OTMwLCA0NDkzNiwgNDQ5NDIsIDQ0OTUyLCA0NDk2MiwgNDQ5NzAsIDQ0OTgxLCAKLSAgICA0NDk5MiwgNDUwMDAsIDQ1MDExLCA0NTAyMiwgNDUwMzAsIDQ1MDQxLCA0NTA1MiwgNDUwNjAsIDQ1MDY4LCA0NTA3OCwgCi0gICAgNDUwODgsIDQ1MDkxLCA0NTA5NCwgNDUwOTcsIDQ1MTAyLCA0NTEwNiwgNDUxMTIsIDQ1MTE5LCA0NTEyNiwgNDUxMzQsIAotICAgIDQ1MTQxLCA0NTE0NSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgNDUxNTksIDQ1MTYzLCA0NTE2NywgNDUxNzIsIDQ1MTc3LCAKLSAgICA0NTE4NCwgNDUxOTEsIDQ1MTk0LCA0NTIwMSwgNDUyMDMsIDQ1MjA1LCA0NTIwOSwgNDUyMTMsIDQ1MjE4LCA0NTIyNCwgCi0gICAgNDUyMzAsIDQ1MjM2LCA0NTI0MiwgNDUyNTEsIDQ1MjYwLCA0NTI2OSwgNDUyNzMsIDQ1Mjc1LCA0NTI3OSwgNDUyODYsIAotICAgIDQ1MjkzLCA0NTMwMCwgNDUzMDcsIDQ1MzE0LCA0NTMxNywgNDUzMjIsIDAsIDAsIDAsIDAsIDAsIDQ1MzI4LCA0NTMzMiwgCi0gICAgNDUzMzksIDQ1MzQ2LCA0NTM1MywgNDUzNjAsIDQ1MzY0LCA0NTM2OCwgNDUzNzIsIDQ1Mzc2LCA0NTM4MiwgNDUzODgsIAotICAgIDQ1MzkzLCA0NTM5OSwgNDU0MDUsIDQ1NDExLCA0NTQxNywgNDU0MjUsIDQ1NDMyLCA0NTQzOSwgNDU0NDYsIDQ1NDUzLCAKLSAgICA0NTQ1OCwgNDU0NjQsIDQ1NDczLCA0NTQ3NywgNDU0ODQsIDQ1NDg4LCA0NTQ5MiwgNDU0OTgsIDQ1NTA0LCA0NTUxMCwgCi0gICAgNDU1MTYsIDQ1NTIwLCA0NTUyNCwgNDU1MjcsIDQ1NTMwLCA0NTUzNCwgNDU1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NTQ4LCA0NTU1MSwgNDU1NTUsIAotICAgIDQ1NTU5LCA0NTU2NSwgNDU1NzEsIDQ1NTc3LCA0NTU4NSwgNDU1OTIsIDQ1NTk2LCA0NTYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU2MDksIDQ1NjEyLCA0NTYxNSwgNDU2MTgsIAotICAgIDQ1NjIxLCA0NTYyNCwgNDU2MjcsIDQ1NjMxLCA0NTYzNCwgNDU2MzgsIDQ1NjQyLCA0NTY0NiwgNDU2NTAsIDQ1NjU0LCAKLSAgICA0NTY1OCwgNDU2NjIsIDQ1NjY2LCA0NTY3MCwgNDU2NzQsIDQ1Njc4LCA0NTY4MiwgNDU2ODUsIDQ1Njg4LCA0NTY5MSwgCi0gICAgNDU2OTQsIDQ1Njk3LCA0NTcwMCwgNDU3MDQsIDQ1NzA3LCA0NTcxMSwgNDU3MTUsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAotICAgIDQ1NzMxLCA0NTczNSwgNDU3MzksIDQ1NzQzLCA0NTc0NywgNDU3NTEsIDQ1NzU1LCA0NTc2MSwgNDU3NjcsIDQ1NzczLCAKLSAgICA0NTc4MCwgNDU3ODcsIDQ1Nzk0LCA0NTgwMSwgNDU4MDgsIDQ1ODE1LCA0NTgyMiwgNDU4MjksIDQ1ODM2LCA0NTg0MywgCi0gICAgNDU4NTAsIDQ1ODU3LCA0NTg2NCwgNDU4NzEsIDQ1ODc4LCA0NTg4NSwgNDU4OTIsIDQ1ODk3LCA0NTkwMywgNDU5MDksIAotICAgIDQ1OTE1LCA0NTkyMCwgNDU5MjYsIDQ1OTMyLCA0NTkzOCwgNDU5NDMsIDQ1OTQ5LCA0NTk1NSwgNDU5NjAsIDQ1OTY2LCAKLSAgICA0NTk3MiwgNDU5NzcsIDQ1OTgzLCA0NTk4OSwgNDU5OTQsIDQ1OTk5LCA0NjAwNSwgNDYwMTAsIDQ2MDE2LCA0NjAyMiwgCi0gICAgNDYwMjgsIDQ2MDM0LCA0NjA0MCwgNDYwNDUsIDQ2MDUxLCA0NjA1NywgNDYwNjMsIDQ2MDY4LCA0NjA3NCwgNDYwODAsIAotICAgIDQ2MDg2LCA0NjA5MSwgNDYwOTcsIDQ2MTAzLCA0NjEwOCwgNDYxMTQsIDQ2MTIwLCA0NjEyNSwgNDYxMzEsIDQ2MTM3LCAKLSAgICA0NjE0MiwgNDYxNDcsIDQ2MTUzLCA0NjE1OCwgNDYxNjQsIDQ2MTcwLCA0NjE3NiwgNDYxODIsIDQ2MTg4LCA0NjE5MywgCi0gICAgNDYxOTksIDQ2MjA1LCA0NjIxMSwgNDYyMTYsIDQ2MjIyLCA0NjIyOCwgNDYyMzQsIDQ2MjM5LCA0NjI0NSwgNDYyNTEsIAotICAgIDQ2MjU2LCA0NjI2MiwgNDYyNjgsIDQ2MjczLCA0NjI3OSwgNDYyODUsIDQ2MjkwLCA0NjI5NSwgNDYzMDEsIDQ2MzA2LCAKLSAgICA0NjMxMiwgNDYzMTgsIDQ2MzI0LCA0NjMzMCwgNDYzMzYsIDQ2MzQwLCA0NjM0NSwgNDYzNTAsIDQ2MzU1LCA0NjM2MCwgCi0gICAgNDYzNjUsIDQ2MzcwLCA0NjM3NSwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgNDYzOTQsIDQ2Mzk4LCA0NjQwMiwgNDY0MDYsIAotICAgIDQ2NDEwLCA0NjQxNCwgNDY0MTksIDQ2NDIzLCA0NjQyOCwgNDY0MzMsIDQ2NDM4LCA0NjQ0MywgNDY0NDgsIDQ2NDUzLCAKLSAgICA0NjQ1OCwgNDY0NjcsIDQ2NDc2LCA0NjQ4NSwgNDY0OTQsIDQ2NTAzLCA0NjUxMiwgNDY1MjEsIDQ2NTMwLCA0NjUzNywgCi0gICAgNDY1NDUsIDQ2NTUzLCA0NjU2MCwgNDY1NjcsIDQ2NTc1LCA0NjU4MywgNDY1OTAsIDQ2NTk3LCA0NjYwNSwgNDY2MTMsIAotICAgIDQ2NjIwLCA0NjYyNywgNDY2MzUsIDQ2NjQzLCA0NjY1MCwgNDY2NTcsIDQ2NjY1LCA0NjY3NCwgNDY2ODMsIDQ2NjkxLCAKLSAgICA0NjcwMCwgNDY3MDksIDQ2NzE2LCA0NjcyMywgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTcsIDQ2NzY2LCA0Njc3NSwgCi0gICAgNDY3ODIsIDQ2Nzg5LCA0Njc5OCwgNDY4MDcsIDQ2ODE2LCA0NjgyNSwgNDY4MzQsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIAotICAgIDQ2ODY2LCA0Njg3NSwgNDY4ODQsIDQ2ODkzLCA0NjkwMiwgNDY5MTEsIDQ2OTE4LCA0NjkyNSwgNDY5MzQsIDQ2OTQzLCAKLSAgICA0Njk1MiwgNDY5NjIsIDQ2OTcyLCA0Njk4MSwgNDY5OTEsIDQ3MDAxLCA0NzAxMSwgNDcwMjEsIDQ3MDMxLCA0NzA0MSwgCi0gICAgNDcwNTAsIDQ3MDU5LCA0NzA2NiwgNDcwNzQsIDQ3MDgyLCA0NzA5MCwgNDcwOTgsIDQ3MTAzLCA0NzEwOCwgNDcxMTcsIAotICAgIDQ3MTI1LCA0NzEzMiwgNDcxNDEsIDQ3MTQ5LCA0NzE1NiwgNDcxNjUsIDQ3MTczLCA0NzE4MCwgNDcxODksIDQ3MTk3LCAKLSAgICA0NzIwNCwgNDcyMTMsIDQ3MjIxLCA0NzIyOCwgNDcyMzcsIDQ3MjQ1LCA0NzI1MiwgNDcyNjIsIDQ3MjcxLCA0NzI3OCwgCi0gICAgNDcyODgsIDQ3Mjk3LCA0NzMwNCwgNDczMTQsIDQ3MzIzLCA0NzMzMCwgNDczMzksIDQ3MzQ4LCA0NzM1NywgNDczNjYsIAotICAgIDQ3MzgwLCA0NzM5NCwgNDc0MDEsIDQ3NDA2LCA0NzQxMSwgNDc0MTYsIDQ3NDIxLCA0NzQyNiwgNDc0MzEsIDQ3NDM2LCAKLSAgICA0NzQ0MSwgNDc0NDksIDQ3NDU3LCA0NzQ2NSwgNDc0NzMsIDQ3NDc4LCA0NzQ4NSwgNDc0OTIsIDQ3NDk5LCA0NzUwNCwgCi0gICAgNDc1MTIsIDQ3NTE5LCA0NzUyNywgNDc1MzEsIDQ3NTM4LCA0NzU0NCwgNDc1NTEsIDQ3NTU1LCA0NzU2MSwgNDc1NjcsIAotICAgIDQ3NTczLCA0NzU3NywgNDc1ODAsIDQ3NTg0LCA0NzU4OCwgNDc1OTUsIDQ3NjAxLCA0NzYwNywgNDc2MTMsIDQ3NjE5LCAKLSAgICA0NzYzMywgNDc2NDMsIDQ3NjU3LCA0NzY3MSwgNDc2NzcsIDQ3Njg3LCA0NzcwMSwgNDc3MDQsIDQ3NzA3LCA0NzcxNCwgCi0gICAgNDc3MjIsIDQ3NzI4LCA0NzczMywgNDc3NDEsIDQ3NzUzLCA0Nzc2NSwgNDc3NzMsIDQ3Nzc3LCA0Nzc4MSwgNDc3ODQsIAotICAgIDQ3Nzg3LCA0Nzc5MSwgNDc3OTUsIDQ3Nzk4LCA0NzgwMSwgNDc4MDYsIDQ3ODExLCA0NzgxNywgNDc4MjMsIDQ3ODI4LCAKLSAgICA0NzgzMywgNDc4MzksIDQ3ODQ1LCA0Nzg1MCwgNDc4NTUsIDQ3ODYwLCA0Nzg2NSwgNDc4NzEsIDQ3ODc3LCA0Nzg4MiwgCi0gICAgNDc4ODcsIDQ3ODkzLCA0Nzg5OSwgNDc5MDQsIDQ3OTA5LCA0NzkxMiwgNDc5MTUsIDQ3OTI0LCA0NzkyNiwgNDc5MjgsIAotICAgIDQ3OTMxLCA0NzkzNSwgNDc5NDEsIDQ3OTQzLCA0Nzk0NiwgNDc5NTMsIDQ3OTYwLCA0Nzk2OCwgNDc5NzYsIDQ3OTg2LCAKLSAgICA0ODAwMCwgNDgwMDUsIDQ4MDEwLCA0ODAxNCwgNDgwMTksIDQ4MDI3LCA0ODAzNSwgNDgwNDQsIDQ4MDUzLCA0ODA2MiwgCi0gICAgNDgwNzEsIDQ4MDc2LCA0ODA4MSwgNDgwODcsIDQ4MDkzLCA0ODA5OSwgNDgxMDUsIDQ4MTA4LCA0ODExNCwgNDgxMjAsIAotICAgIDQ4MTMwLCA0ODE0MCwgNDgxNDgsIDQ4MTU2LCA0ODE2NSwgNDgxNzQsIDQ4MTc4LCA0ODE4NiwgNDgxOTQsIDQ4MjAyLCAKLSAgICA0ODIxMCwgNDgyMTksIDQ4MjI4LCA0ODIzNywgNDgyNDYsIDQ4MjUxLCA0ODI1NiwgNDgyNjEsIDQ4MjY2LCA0ODI3MSwgCi0gICAgNDgyNzcsIDQ4MjgzLCA0ODI4OCwgNDgyOTQsIDQ4Mjk2LCA0ODI5OCwgNDgzMDAsIDQ4MzAyLCA0ODMwNSwgNDgzMDgsIAotICAgIDQ4MzEwLCA0ODMxMiwgNDgzMTQsIDQ4MzE4LCA0ODMyMiwgNDgzMjQsIDQ4MzI2LCA0ODMyOSwgNDgzMzIsIDQ4MzM2LCAKLSAgICA0ODM0MiwgNDgzNDgsIDQ4MzUwLCA0ODM1NywgNDgzNjEsIDQ4MzY2LCA0ODM3MSwgNDgzNzMsIDQ4MzgzLCA0ODM4OSwgCi0gICAgNDgzOTUsIDQ4NDAxLCA0ODQwNywgNDg0MTMsIDQ4NDE5LCA0ODQyNCwgNDg0MjcsIDQ4NDMwLCA0ODQzMywgNDg0MzUsIAotICAgIDQ4NDM3LCA0ODQ0MSwgNDg0NDUsIDQ4NDUwLCA0ODQ1NSwgNDg0NjAsIDQ4NDYzLCA0ODQ2NywgNDg0NzIsIDQ4NDc1LCAKLSAgICA0ODQ3OSwgNDg0ODQsIDQ4NDg5LCA0ODQ5NCwgNDg0OTksIDQ4NTA0LCA0ODUwOSwgNDg1MTQsIDQ4NTE5LCA0ODUyNCwgCi0gICAgNDg1MjksIDQ4NTM0LCA0ODUzOSwgNDg1NDUsIDQ4NTUxLCA0ODU1NywgNDg1NTksIDQ4NTYyLCA0ODU2NCwgNDg1NjcsIAotICAgIDQ4NTY5LCA0ODU3MSwgNDg1NzMsIDQ4NTc1LCA0ODU3NywgNDg1NzksIDQ4NTgxLCA0ODU4MywgNDg1ODUsIDQ4NTg3LCAKLSAgICA0ODU4OSwgNDg1OTEsIDQ4NTkzLCA0ODU5NSwgNDg1OTcsIDQ4NTk5LCA0ODYwMSwgNDg2MDYsIDQ4NjExLCA0ODYxNiwgCi0gICAgNDg2MjEsIDQ4NjI2LCA0ODYzMSwgNDg2MzYsIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjYsIAotICAgIDQ4NjcxLCA0ODY3NiwgNDg2ODEsIDQ4Njg2LCA0ODY5MSwgNDg2OTYsIDQ4NzAxLCA0ODcwNSwgNDg3MDksIDQ4NzEzLCAKLSAgICA0ODcxOSwgNDg3MjUsIDQ4NzMwLCA0ODczNSwgNDg3NDAsIDQ4NzQ2LCA0ODc1MiwgNDg3NTcsIDQ4NzY1LCA0ODc3MywgCi0gICAgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDUsIDQ4ODEzLCA0ODgyMSwgNDg4MjcsIDQ4ODMyLCA0ODgzNywgNDg4NDIsIAotICAgIDQ4ODQ1LCA0ODg0OSwgNDg4NTMsIDQ4ODU3LCA0ODg2MSwgNDg4NjUsIDQ4ODY5LCA0ODg3NiwgNDg4ODMsIDQ4ODkxLCAKLSAgICA0ODg5OSwgNDg5MDQsIDQ4OTA5LCA0ODkxNiwgNDg5MjMsIDQ4OTMwLCA0ODkzNywgNDg5NDAsIDQ4OTQzLCA0ODk0OCwgCi0gICAgNDg5NTAsIDQ4OTU0LCA0ODk1OSwgNDg5NjEsIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcyLCA0ODk3NSwgNDg5NzcsIAotICAgIDQ4OTgyLCA0ODk4OSwgNDg5OTYsIDQ4OTk5LCA0OTAwMywgNDkwMDgsIDQ5MDEzLCA0OTAyMSwgNDkwMjcsIDQ5MDMzLCAKLSAgICA0OTA0NSwgNDkwNTIsIDQ5MDYwLCA0OTA2NSwgNDkwNzAsIDQ5MDc2LCA0OTA3OSwgNDkwODIsIDQ5MDg3LCA0OTA4OSwgCi0gICAgNDkwOTMsIDQ5MDk1LCA0OTA5NywgNDkwOTksIDQ5MTAxLCA0OTEwMywgNDkxMDUsIDQ5MTEwLCA0OTExMiwgNDkxMTQsIAotICAgIDQ5MTE2LCA0OTExOCwgNDkxMjIsIDQ5MTI0LCA0OTEyNywgNDkxMzIsIDQ5MTM3LCA0OTE0MiwgNDkxNDcsIDQ5MTUzLCAKLSAgICA0OTE1OSwgNDkxNjEsIDQ5MTY0LCA0OTE3MSwgNDkxNzgsIDQ5MTg1LCA0OTE5MiwgNDkxOTYsIDQ5MjAwLCA0OTIwMiwgCi0gICAgNDkyMDQsIDQ5MjA4LCA0OTIxNCwgNDkyMTksIDQ5MjIxLCA0OTIyNSwgNDkyMzQsIDQ5MjQyLCA0OTI1MCwgNDkyNTYsIAotICAgIDQ5MjYyLCA0OTI2NywgNDkyNzMsIDQ5Mjc4LCA0OTI4MSwgNDkyOTUsIDQ5Mjk4LCA0OTMwMywgNDkzMDgsIDQ5MzE0LCAKLSAgICA0OTMyNCwgNDkzMjYsIDQ5MzMyLCA0OTMzOCwgNDkzNDIsIDQ5MzQ5LCA0OTM1MywgNDkzNTUsIDQ5MzU3LCA0OTM2MSwgCi0gICAgNDkzNjcsIDQ5MzcyLCA0OTM3OCwgNDkzODAsIDQ5Mzg2LCA0OTM4OCwgNDkzOTQsIDQ5Mzk2LCA0OTM5OCwgNDk0MDMsIAotICAgIDQ5NDA1LCA0OTQwOSwgNDk0MTQsIDQ5NDE2LCA0OTQyMSwgNDk0MjYsIDQ5NDMwLCA0OTQzNywgNDk0NDcsIDQ5NDUyLCAKLSAgICA0OTQ1OCwgNDk0NjEsIDQ5NDY3LCA0OTQ3MCwgNDk0NzUsIDQ5NDgwLCA0OTQ4NCwgNDk0ODYsIDQ5NDg4LCA0OTQ5MiwgCi0gICAgNDk0OTYsIDQ5NTAwLCA0OTUwNCwgNDk1MDksIDQ5NTExLCA0OTUxNiwgNDk1MTksIDQ5NTIyLCA0OTUyNSwgNDk1MjksIAotICAgIDQ5NTMzLCA0OTUzOCwgNDk1NDIsIDQ5NTQ3LCA0OTU1MiwgNDk1NTYsIDQ5NTYxLCA0OTU2NywgNDk1NzAsIDQ5NTc2LCAKLSAgICA0OTU4MSwgNDk1ODUsIDQ5NTkwLCA0OTU5NiwgNDk2MDIsIDQ5NjA5LCA0OTYxNSwgNDk2MjIsIDQ5NjI5LCA0OTYzMSwgCi0gICAgNDk2MzgsIDQ5NjQyLCA0OTY0OCwgNDk2NTQsIDQ5NjU5LCA0OTY2NSwgNDk2NjksIDQ5Njc0LCA0OTY3NywgNDk2ODIsIAotICAgIDQ5Njg4LCA0OTY5NSwgNDk3MDMsIDQ5NzEwLCA0OTcxOSwgNDk3MjksIDQ5NzM2LCA0OTc0MiwgNDk3NDYsIDQ5NzUzLCAKLSAgICA0OTc1OCwgNDk3NjcsIDQ5NzcwLCA0OTc3MywgNDk3ODIsIDQ5NzkyLCA0OTc5OSwgNDk4MDEsIDQ5ODA3LCA0OTgxMiwgCi0gICAgNDk4MTQsIDQ5ODE3LCA0OTgyMSwgNDk4MjksIDQ5ODM4LCA0OTg0MSwgNDk4NDYsIDQ5ODUxLCA0OTg1OSwgNDk4NjcsIAotICAgIDQ5ODc1LCA0OTg4MywgNDk4ODksIDQ5ODk1LCA0OTkwMSwgNDk5MDksIDQ5OTE0LCA0OTkxNywgNDk5MjEsIDQ5OTI0LCAKLSAgICA0OTkzNiwgNDk5NDYsIDQ5OTU3LCA0OTk2NiwgNDk5NzcsIDQ5OTg3LCA0OTk5NiwgNTAwMDIsIDUwMDEwLCA1MDAxNCwgCi0gICAgNTAwMjIsIDUwMDI2LCA1MDAzNCwgNTAwNDEsIDUwMDQ4LCA1MDA1NywgNTAwNjYsIDUwMDc2LCA1MDA4NiwgNTAwOTYsIAotICAgIDUwMTA2LCA1MDExNSwgNTAxMjQsIDUwMTM0LCA1MDE0NCwgNTAxNTMsIDUwMTYyLCA1MDE2OCwgNTAxNzQsIDUwMTgwLCAKLSAgICA1MDE4NiwgNTAxOTIsIDUwMTk4LCA1MDIwNSwgNTAyMTEsIDUwMjE4LCA1MDIyNSwgNTAyMzEsIDUwMjM3LCA1MDI0MywgCi0gICAgNTAyNDksIDUwMjU1LCA1MDI2MSwgNTAyNjgsIDUwMjc0LCA1MDI4MSwgNTAyODgsIDUwMjk1LCA1MDMwMiwgNTAzMDksIAotICAgIDUwMzE2LCA1MDMyMywgNTAzMzAsIDUwMzM4LCA1MDM0NSwgNTAzNTMsIDUwMzYxLCA1MDM2NiwgNTAzNjksIDUwMzczLCAKLSAgICA1MDM3NywgNTAzODMsIDUwMzg2LCA1MDM5MSwgNTAzOTcsIDUwNDAyLCA1MDQwNiwgNTA0MTEsIDUwNDE3LCA1MDQyNCwgCi0gICAgNTA0MjcsIDUwNDM0LCA1MDQ0MSwgNTA0NDUsIDUwNDUzLCA1MDQ2MSwgNTA0NjYsIDUwNDcyLCA1MDQ3NywgNTA0ODIsIAotICAgIDUwNDg5LCA1MDQ5NiwgNTA1MDQsIDUwNTEyLCA1MDUyMSwgNTA1MjUsIDUwNTM0LCA1MDUzOSwgNTA1NDMsIDUwNTUwLCAKLSAgICA1MDU1NCwgNTA1NjAsIDUwNTY4LCA1MDU3MywgNTA1ODAsIDUwNTg0LCA1MDU4OSwgNTA1OTMsIDUwNTk4LCA1MDYwMiwgCi0gICAgNTA2MDcsIDUwNjEyLCA1MDYyMSwgNTA2MjMsIDUwNjI2LCA1MDYyOSwgNTA2MzYsIDUwNjQzLCA1MDY0OSwgNTA2NTcsIAotICAgIDUwNjYzLCA1MDY3MCwgNTA2NzUsIDUwNjc4LCA1MDY4MywgNTA2ODgsIDUwNjkzLCA1MDcwMSwgNTA3MDUsIDUwNzEyLCAKLSAgICA1MDcyMCwgNTA3MjgsIDUwNzMzLCA1MDczOCwgNTA3NDQsIDUwNzQ5LCA1MDc1NCwgNTA3NjAsIDUwNzY1LCA1MDc2OCwgCi0gICAgNTA3NzIsIDUwNzc2LCA1MDc4MywgNTA3OTMsIDUwNzk4LCA1MDgwNywgNTA4MTYsIDUwODIyLCA1MDgyOCwgNTA4MzMsIAotICAgIDUwODM4LCA1MDg0MywgNTA4NDgsIDUwODU0LCA1MDg2MCwgNTA4NjgsIDUwODc2LCA1MDg4MiwgNTA4ODgsIDUwODkyLCAKLSAgICA1MDg5NiwgNTA5MDMsIDUwOTEwLCA1MDkxNiwgNTA5MTksIDUwOTIyLCA1MDkyNiwgNTA5MzAsIDUwOTM0LCA1MDkzOSwgCi0gICAgNTA5NDUsIDUwOTUxLCA1MDk1OCwgNTA5NjUsIDUwOTcwLCA1MDk3NCwgNTA5NzgsIDUwOTgyLCA1MDk4NiwgNTA5OTAsIAotICAgIDUwOTk0LCA1MDk5OCwgNTEwMDIsIDUxMDA2LCA1MTAxMCwgNTEwMTQsIDUxMDE4LCA1MTAyMiwgNTEwMjYsIDUxMDMwLCAKLSAgICA1MTAzNCwgNTEwMzgsIDUxMDQyLCA1MTA0NiwgNTEwNTAsIDUxMDU0LCA1MTA1OCwgNTEwNjIsIDUxMDY2LCA1MTA3MCwgCi0gICAgNTEwNzQsIDUxMDc4LCA1MTA4MiwgNTEwODYsIDUxMDkwLCA1MTA5NCwgNTEwOTgsIDUxMTAyLCA1MTEwNiwgNTExMTAsIAotICAgIDUxMTE0LCA1MTExOCwgNTExMjIsIDUxMTI2LCA1MTEzMCwgNTExMzQsIDUxMTM4LCA1MTE0MiwgNTExNDYsIDUxMTUwLCAKLSAgICA1MTE1NCwgNTExNTgsIDUxMTYyLCA1MTE2NiwgNTExNzAsIDUxMTc0LCA1MTE3OCwgNTExODIsIDUxMTg2LCA1MTE5MCwgCi0gICAgNTExOTQsIDUxMTk4LCA1MTIwMiwgNTEyMDYsIDUxMjEwLCA1MTIxNCwgNTEyMTgsIDUxMjIyLCA1MTIyNiwgNTEyMzAsIAotICAgIDUxMjM0LCA1MTIzOCwgNTEyNDIsIDUxMjQ2LCA1MTI1MCwgNTEyNTQsIDUxMjU4LCA1MTI2MiwgNTEyNjYsIDUxMjcwLCAKLSAgICA1MTI3NCwgNTEyNzgsIDUxMjgyLCA1MTI4NiwgNTEyOTAsIDUxMjk0LCA1MTI5OCwgNTEzMDIsIDUxMzA2LCA1MTMxMCwgCi0gICAgNTEzMTQsIDUxMzE4LCA1MTMyMiwgNTEzMjYsIDUxMzMwLCA1MTMzNCwgNTEzMzgsIDUxMzQyLCA1MTM0NiwgNTEzNTAsIAotICAgIDUxMzU0LCA1MTM1OCwgNTEzNjIsIDUxMzY2LCA1MTM3MCwgNTEzNzQsIDUxMzc4LCA1MTM4MiwgNTEzODYsIDUxMzkwLCAKLSAgICA1MTM5NCwgNTEzOTgsIDUxNDAyLCA1MTQwNiwgNTE0MTAsIDUxNDE0LCA1MTQxOCwgNTE0MjIsIDUxNDI2LCA1MTQzMCwgCi0gICAgNTE0MzQsIDUxNDM4LCA1MTQ0MiwgNTE0NDYsIDUxNDUwLCA1MTQ1NCwgNTE0NTgsIDUxNDYyLCA1MTQ2NiwgNTE0NzAsIAotICAgIDUxNDc0LCA1MTQ3OCwgNTE0ODIsIDUxNDg2LCA1MTQ5MCwgNTE0OTQsIDUxNDk4LCA1MTUwMiwgNTE1MDYsIDUxNTEwLCAKLSAgICA1MTUxNCwgNTE1MTgsIDUxNTIyLCA1MTUyNiwgNTE1MzAsIDUxNTM0LCA1MTUzOCwgNTE1NDIsIDUxNTQ2LCA1MTU1MCwgCi0gICAgNTE1NTQsIDUxNTU4LCA1MTU2MiwgNTE1NjYsIDUxNTcwLCA1MTU3NCwgNTE1NzgsIDUxNTgyLCA1MTU4NiwgNTE1OTAsIAotICAgIDUxNTk0LCA1MTU5OCwgNTE2MDIsIDUxNjA2LCA1MTYxMCwgNTE2MTQsIDUxNjE4LCA1MTYyMiwgNTE2MjYsIDUxNjMwLCAKLSAgICA1MTYzNCwgNTE2MzgsIDUxNjQyLCA1MTY0NiwgNTE2NTAsIDUxNjU0LCA1MTY1OCwgNTE2NjIsIDUxNjY2LCA1MTY3MCwgCi0gICAgNTE2NzQsIDUxNjc4LCA1MTY4MiwgNTE2ODYsIDUxNjkwLCA1MTY5NCwgNTE2OTgsIDUxNzAyLCA1MTcwNiwgNTE3MTAsIAotICAgIDUxNzE0LCA1MTcxOCwgNTE3MjIsIDUxNzI2LCA1MTczMCwgNTE3MzQsIDUxNzM4LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCAKLSAgICA1MTc1NCwgNTE3NTgsIDUxNzYyLCA1MTc2NiwgNTE3NzAsIDUxNzc0LCA1MTc3OCwgNTE3ODIsIDUxNzg2LCA1MTc5MCwgCi0gICAgNTE3OTQsIDUxNzk4LCA1MTgwMiwgNTE4MDYsIDUxODEwLCA1MTgxNCwgNTE4MTgsIDUxODIyLCA1MTgyNiwgNTE4MzAsIAotICAgIDUxODM0LCA1MTgzOCwgNTE4NDIsIDUxODQ2LCA1MTg1MCwgNTE4NTQsIDUxODU4LCA1MTg2MiwgNTE4NjYsIDUxODcwLCAKLSAgICA1MTg3NCwgNTE4NzgsIDUxODgyLCA1MTg4NiwgNTE4OTAsIDUxODk0LCA1MTg5OCwgNTE5MDIsIDUxOTA2LCA1MTkxMCwgCi0gICAgNTE5MTQsIDUxOTE4LCA1MTkyMiwgNTE5MjYsIDUxOTMwLCA1MTkzNCwgNTE5MzgsIDUxOTQyLCA1MTk0NiwgNTE5NTAsIAotICAgIDUxOTU0LCA1MTk1OCwgNTE5NjIsIDUxOTY2LCA1MTk3MCwgNTE5NzQsIDUxOTc4LCA1MTk4MiwgNTE5ODYsIDUxOTkwLCAKLSAgICA1MTk5NCwgNTIwMDEsIDUyMDA5LCA1MjAxNSwgNTIwMjEsIDUyMDI4LCA1MjAzNSwgNTIwNDEsIDUyMDQ3LCA1MjA1MywgCi0gICAgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzIsIDUyMDc3LCA1MjA4MywgNTIwODksIDUyMDk3LCA1MjEwNCwgNTIxMDksIAotICAgIDUyMTE0LCA1MjEyMiwgNTIxMzEsIDUyMTM4LCA1MjE0OCwgNTIxNTksIDUyMTYyLCA1MjE2NSwgNTIxNjksIDUyMTczLCAKLSAgICA1MjE4MCwgNTIxODcsIDUyMTk4LCA1MjIwOSwgNTIyMTgsIDUyMjI3LCA1MjIzMywgNTIyMzksIDUyMjQ2LCA1MjI1MywgCi0gICAgNTIyNjIsIDUyMjcyLCA1MjI4MywgNTIyOTMsIDUyMzAzLCA1MjMxMywgNTIzMjQsIDUyMzM1LCA1MjM0NSwgNTIzNTYsIAotICAgIDUyMzY2LCA1MjM3NiwgNTIzODUsIDUyMzk1LCA1MjQwNSwgNTI0MTUsIDUyNDI1LCA1MjQzMiwgNTI0MzksIDUyNDQ2LCAKLSAgICA1MjQ1MywgNTI0NjMsIDUyNDczLCA1MjQ4MSwgNTI0ODksIDUyNDk2LCA1MjUwMywgNTI1MTAsIDUyNTE3LCA1MjUyNCwgCi0gICAgNTI1MjksIDUyNTM0LCA1MjU0MCwgNTI1NDgsIDUyNTU3LCA1MjU2NSwgNTI1NzMsIDUyNTgxLCA1MjU4OSwgNTI1OTcsIAotICAgIDUyNjA1LCA1MjYxMywgNTI2MjEsIDUyNjMwLCA1MjYzOSwgNTI2NDgsIDUyNjU3LCA1MjY2NiwgNTI2NzUsIDUyNjg0LCAKLSAgICA1MjY5MywgNTI3MDIsIDUyNzExLCA1MjcyMCwgNTI3MjksIDUyNzM4LCA1Mjc0NywgNTI3NTYsIDUyNzY1LCA1Mjc3OSwgCi0gICAgNTI3OTQsIDUyODA4LCA1MjgyMywgNTI4MzcsIDUyODUxLCA1Mjg2NSwgNTI4NzksIDUyODg5LCA1MjkwMCwgNTI5MTAsIAotICAgIDUyOTIxLCA1MjkzNiwgNTI5NTEsIDUyOTU5LCA1Mjk2NSwgNTI5NzIsIDUyOTc5LCA1Mjk4NiwgNTI5OTMsIDUyOTk4LCAKLSAgICA1MzAwNCwgNTMwMDksIDUzMDE0LCA1MzAyMCwgNTMwMjUsIDUzMDMwLCA1MzAzNSwgNTMwNDAsIDUzMDQ1LCA1MzA1MiwgCi0gICAgNTMwNTgsIDUzMDY2LCA1MzA3MSwgNTMwNzYsIDUzMDgwLCA1MzA4NCwgNTMwOTIsIDUzMTAwLCA1MzEwOCwgNTMxMTYsIAotICAgIDUzMTIzLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2OSwgNTMxODIsIDUzMTkwLCA1MzE5OCwgNTMyMDQsIDUzMjEwLCAKLSAgICA1MzIxNywgNTMyMjQsIDUzMjMxLCA1MzIzOCwgNTMyNDIsIDUzMjQ3LCA1MzI1NSwgNTMyNjMsIDUzMjcxLCA1MzI3OCwgCi0gICAgNTMyODIsIDUzMjkwLCA1MzI5OCwgNTMzMDIsIDUzMzA2LCA1MzMxMSwgNTMzMTgsIDUzMzI2LCA1MzMzNCwgNTMzNTMsIAotICAgIDUzMzcyLCA1MzM5MSwgNTM0MTAsIDUzNDI5LCA1MzQ0OCwgNTM0NjcsIDUzNDg2LCA1MzQ5MiwgNTM0OTksIDUzNTA4LCAKLSAgICA1MzUxNiwgNTM1MjQsIDUzNTMwLCA1MzUzMywgNTM1MzYsIDUzNTQxLCA1MzU0NCwgNTM1NjQsIDUzNTcxLCA1MzU3NywgCi0gICAgNTM1ODMsIDUzNTg3LCA1MzU5MCwgNTM1OTMsIDUzNTk2LCA1MzYwOCwgNTM2MjIsIDUzNjI5LCA1MzYzNiwgNTM2MzksIAotICAgIDUzNjQzLCA1MzY0NiwgNTM2NTEsIDUzNjU2LCA1MzY2MSwgNTM2NjcsIDUzNjc2LCA1MzY4MywgNTM2OTAsIDUzNjk4LCAKLSAgICA1MzcwNSwgNTM3MTIsIDUzNzE1LCA1MzcyMSwgNTM3MjcsIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQzLCA1Mzc0OSwgCi0gICAgNTM3NTUsIDUzNzU5LCA1Mzc2NCwgNTM3NzEsIDUzNzc1LCA1Mzc4MSwgNTM3ODUsIDUzNzg5LCA1Mzc5NywgNTM4MDksIAotICAgIDUzODE4LCA1MzgyMiwgNTM4MjQsIDUzODMzLCA1Mzg0MiwgNTM4NDgsIDUzODUxLCA1Mzg1NywgNTM4NjMsIDUzODY4LCAKLSAgICA1Mzg3MywgNTM4NzgsIDUzODgzLCA1Mzg4OCwgNTM4OTMsIDUzODk1LCA1MzkwMSwgNTM5MDYsIDUzOTE0LCA1MzkxOCwgCi0gICAgNTM5MjQsIDUzOTI3LCA1MzkzMSwgNTM5MzgsIDUzOTQ1LCA1Mzk0NywgNTM5NDksIDUzOTU1LCA1Mzk2MSwgNTM5NjcsIAotICAgIDUzOTc2LCA1Mzk4NSwgNTM5OTIsIDUzOTk5LCA1NDAwNSwgNTQwMTIsIDU0MDE3LCA1NDAyMiwgNTQwMjcsIDU0MDMzLCAKLSAgICA1NDAzOSwgNTQwNDQsIDU0MDUxLCA1NDA1NSwgNTQwNTksIDU0MDcyLCA1NDA4NSwgNTQwOTcsIDU0MTA2LCA1NDExMiwgCi0gICAgNTQxMTksIDU0MTI0LCA1NDEyOSwgNTQxMzQsIDU0MTM5LCA1NDE0NCwgNTQxNDYsIDU0MTUzLCA1NDE2MSwgNTQxNjksIAotICAgIDU0MTc3LCA1NDE4NCwgNTQxOTIsIDU0MTk4LCA1NDIwMywgNTQyMDksIDU0MjE1LCA1NDIyMSwgNTQyMjgsIDU0MjM0LCAKLSAgICA1NDI0MiwgNTQyNTAsIDU0MjU4LCA1NDI2NiwgNTQyNzQsIDU0MjgwLCA1NDI4NiwgNTQyOTUsIDU0Mjk5LCA1NDMwOCwgCi0gICAgNTQzMTcsIDU0MzI2LCA1NDMzNCwgNTQzMzgsIDU0MzQ0LCA1NDM1MSwgNTQzNTgsIDU0MzYyLCA1NDM2OCwgNTQzNzYsIAotICAgIDU0MzgyLCA1NDM4NywgNTQzOTMsIDU0Mzk4LCA1NDQwMywgNTQ0MTAsIDU0NDE3LCA1NDQyMiwgNTQ0MjcsIDU0NDM1LCAKLSAgICA1NDQ0MywgNTQ0NTMsIDU0NDYzLCA1NDQ3MCwgNTQ0NzcsIDU0NDgxLCA1NDQ4NSwgNTQ0OTcsIDU0NTAzLCA1NDUxMCwgCi0gICAgNTQ1MTUsIDU0NTIwLCA1NDUyNywgNTQ1MzQsIDU0NTQwLCA1NDU0NiwgNTQ1NTYsIDU0NTYzLCA1NDU3MSwgNTQ1NzksIAotICAgIDU0NTg4LCA1NDU5NSwgNTQ2MDEsIDU0NjA4LCA1NDYxNCwgNTQ2MjIsIDU0NjMwLCA1NDYzOCwgNTQ2NDYsIDU0NjUyLCAKLSAgICA1NDY1NywgNTQ2NjcsIDU0Njc4LCA1NDY4NSwgNTQ2OTQsIDU0NzAwLCA1NDcwNSwgNTQ3MTAsIDU0NzIwLCA1NDcyNywgCi0gICAgNTQ3MzMsIDU0NzM5LCA1NDc0NywgNTQ3NTIsIDU0NzU5LCA1NDc2NiwgNTQ3NzcsIDU0Nzg0LCA1NDc5MSwgNTQ3OTgsIAotICAgIDU0ODA1LCA1NDgxMiwgNTQ4MjAsIDU0ODI4LCA1NDg0MSwgNTQ4NTQsIDU0ODY2LCA1NDg3OCwgNTQ4OTIsIDU0OTA2LCAKLSAgICA1NDkxMiwgNTQ5MTgsIDU0OTI3LCA1NDkzNiwgNTQ5NDMsIDU0OTUwLCA1NDk1OSwgNTQ5NjgsIDU0OTc3LCA1NDk4NiwgCi0gICAgNTQ5OTQsIDU1MDAyLCA1NTAxMiwgNTUwMjIsIDU1MDM2LCA1NTA1MCwgNTUwNTksIDU1MDY4LCA1NTA4MSwgNTUwOTQsIAotICAgIDU1MTAzLCA1NTExMiwgNTUxMjMsIDU1MTM0LCA1NTE0MCwgNTUxNDYsIDU1MTU1LCA1NTE2NCwgNTUxNjksIDU1MTc0LCAKLSAgICA1NTE4MiwgNTUxODgsIDU1MTk0LCA1NTIwMiwgNTUyMTAsIDU1MjIzLCA1NTIzNiwgNTUyNDAsIDU1MjQ0LCA1NTI1MiwgCi0gICAgNTUyNjAsIDU1MjY3LCA1NTI3NSwgNTUyODMsIDU1MjkyLCA1NTMwMSwgNTUzMDcsIDU1MzEzLCA1NTMyMCwgNTUzMjcsIAotICAgIDU1MzM0LCA1NTM0MSwgNTUzNTAsIDU1MzU5LCA1NTM2MiwgNTUzNjUsIDU1MzcwLCA1NTM3NSwgNTUzODEsIDU1Mzg3LCAKLSAgICA1NTM5NCwgNTU0MDEsIDU1NDEyLCA1NTQyMywgNTU0MzAsIDU1NDM3LCA1NTQ0NSwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgCi0gICAgNTU0NzcsIDU1NDg1LCA1NTQ5MSwgNTU0OTcsIDU1NTAxLCA1NTUwNSwgNTU1MTMsIDU1NTIxLCA1NTUyNiwgNTU1MzEsIAotICAgIDU1NTM2LCA1NTU0MSwgNTU1NDcsIDU1NTYxLCA1NTU2OCwgNTU1NzUsIDU1NTc5LCA1NTU4MSwgNTU1ODMsIDU1NTg4LCAKLSAgICA1NTU5MywgNTU1OTgsIDU1NjAyLCA1NTYxMCwgNTU2MTcsIDU1NjI0LCA1NTYzMiwgNTU2NDQsIDU1NjUyLCA1NTY2MCwgCi0gICAgNTU2NzEsIDU1Njc1LCA1NTY3OSwgNTU2ODUsIDU1NjkzLCA1NTcwNiwgNTU3MTMsIDU1NzIwLCA1NTcyNywgNTU3MzMsIAotICAgIDU1NzQwLCA1NTc0OSwgNTU3NTgsIDU1NzY0LCA1NTc3MCwgNTU3NzYsIDU1Nzg2LCA1NTc5NiwgNTU4MDQsIDU1ODEzLCAKLSAgICA1NTgxOCwgNTU4MjEsIDU1ODI2LCA1NTgzMSwgNTU4MzYsIDU1ODQyLCA1NTg0OCwgNTU4NTIsIDU1ODU1LCA1NTg1OCwgCi0gICAgNTU4NjEsIDU1ODY2LCA1NTg3MSwgNTU4NzcsIDU1ODgzLCA1NTg4NywgNTU4OTEsIDU1ODk4LCA1NTkwNSwgNTU5MTIsIAotICAgIDU1OTE5LCA1NTkyNiwgNTU5MzMsIDU1OTQzLCA1NTk1MywgNTU5NjAsIDU1OTY3LCA1NTk3NSwgNTU5ODMsIDU1OTg3LCAKLSAgICA1NTk5MiwgNTU5OTcsIDU2MDAzLCA1NjAwOSwgNTYwMTIsIDU2MDE1LCA1NjAxOCwgNTYwMjEsIDU2MDI2LCA1NjAzMSwgCi0gICAgNTYwMzYsIDU2MDQxLCA1NjA0NiwgNTYwNTEsIDU2MDU1LCA1NjA1OSwgNTYwNjMsIDU2MDY4LCA1NjA3MywgNTYwNzcsIAotICAgIDU2MDgxLCA1NjA4NywgNTYwOTEsIDU2MDk3LCA1NjEwMiwgNTYxMDksIDU2MTE3LCA1NjEyNCwgNTYxMzIsIDU2MTM5LCAKLSAgICA1NjE0NywgNTYxNTYsIDU2MTYzLCA1NjE3MywgNTYxODQsIDU2MTkwLCA1NjE5OSwgNTYyMDUsIDU2MjE0LCA1NjIyMywgCi0gICAgNTYyMjksIDU2MjM1LCA1NjIzOSwgNTYyNDMsIDU2MjUyLCA1NjI2MSwgNTYyNjgsIDU2Mjc1LCA1NjI4NCwgNTYyOTMsIAotICAgIDU2Mjk5LCA1NjMwNSwgNTYzMTIsIDU2MzE3LCA1NjMyMSwgNTYzMjUsIDU2MzMwLCA1NjMzNSwgNTYzNDAsIDU2MzQ4LCAKLSAgICA1NjM1NiwgNTYzNTksIDU2MzYzLCA1NjM3MiwgNTYzODIsIDU2MzkxLCA1NjQwMSwgNTY0MTIsIDU2NDI1LCA1NjQyOSwgCi0gICAgNTY0MzMsIDU2NDM3LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NywgNTY0NjMsIDU2NDcwLCA1NjQ3NywgNTY0ODMsIAotICAgIDU2NDg5LCA1NjQ5NSwgNTY1MDEsIDU2NTA5LCA1NjUxNywgNTY1MjQsIDU2NTMxLCA1NjUzOCwgMCwgMCwgNTY1NDUsIAotICAgIDU2NTU0LCA1NjU2MywgNTY1NzMsIDU2NTgzLCA1NjU5MiwgNTY2MDEsIDU2NjEwLCA1NjYxOSwgNTY2MjUsIDU2NjMwLCAKLSAgICA1NjYzOSwgNTY2NDksIDU2NjU4LCA1NjY2OCwgNTY2NzUsIDU2NjgyLCA1NjY4OSwgNTY2OTYsIDU2NzAxLCA1NjcwNiwgCi0gICAgNTY3MTEsIDU2NzE2LCA1NjcyNCwgNTY3MzMsIDU2NzQxLCA1Njc1MCwgNTY3NTQsIDU2NzU4LCA1Njc2MiwgNTY3NjYsIAotICAgIDU2Nzc2LCAwLCAwLCA1Njc3OSwgNTY3ODgsIDU2Nzk3LCA1NjgwNiwgNTY4MTUsIDU2ODIxLCA1NjgyNywgNTY4MzMsIAotICAgIDU2ODM5LCA1Njg0OSwgNTY4NTksIDU2ODY5LCA1Njg3OSwgNTY4ODksIDU2ODk5LCA1NjkwOSwgNTY5MTksIDU2OTI2LCAKLSAgICA1NjkzMywgNTY5NDAsIDU2OTQ3LCA1Njk1NCwgNTY5NjEsIDU2OTY4LCA1Njk3NSwgNTY5ODEsIDU2OTg3LCA1Njk5MywgCi0gICAgNTY5OTksIDU3MDA1LCA1NzAxMSwgNTcwMTcsIDU3MDIzLCA1NzAzNCwgMCwgMCwgMCwgNTcwNDQsIDU3MDUxLCA1NzA1NCwgCi0gICAgNTcwNTgsIDU3MDYyLCA1NzA2NywgNTcwNzIsIDU3MDc3LCA1NzA4MCwgNTcwODksIDU3MDk4LCA1NzEwNywgMCwgNTcxMTYsIAotICAgIDU3MTIyLCA1NzEyOCwgNTcxMzYsIDU3MTQ2LCA1NzE1MywgNTcxNjIsIDU3MTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzE3MCwgNTcxNzksIAotICAgIDU3MTg4LCA1NzE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcyMDYsIAotICAgIDU3MjExLCA1NzIxNiwgNTcyMjEsIDU3MjI2LCA1NzIzMSwgNTcyMzYsIDU3MjQxLCA1NzI0NiwgNTcyNTEsIDU3MjU2LCAKLSAgICA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCA1NzI5MSwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgCi0gICAgNTczMTEsIDU3MzE2LCA1NzMyMSwgNTczMjYsIDU3MzMxLCA1NzMzNiwgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTYsIAotICAgIDU3MzYxLCA1NzM2NiwgNTczNzEsIDU3Mzc2LCA1NzM4MiwgNTczODcsIDU3MzkzLCA1NzQwMiwgNTc0MDcsIDU3NDE1LCAKLSAgICA1NzQyMiwgNTc0MzEsIDU3NDM2LCA1NzQ0MSwgNTc0NDYsIDU3NDUyLCAwLCA1NzQ1OSwgNTc0NjQsIDU3NDY5LCA1NzQ3NCwgCi0gICAgNTc0NzksIDU3NDg0LCA1NzQ4OSwgNTc0OTQsIDU3NDk5LCA1NzUwNCwgNTc1MDksIDU3NTE1LCA1NzUxOSwgNTc1MjQsIAotICAgIDU3NTI5LCA1NzUzNCwgNTc1MzksIDU3NTQ0LCA1NzU0OSwgNTc1NTQsIDU3NTU5LCA1NzU2NCwgNTc1NjksIDU3NTc0LCAKLSAgICA1NzU3OSwgNTc1ODQsIDU3NTg5LCA1NzU5NCwgNTc1OTksIDU3NjA0LCA1NzYwOSwgNTc2MTQsIDU3NjE5LCA1NzYyNCwgCi0gICAgNTc2MjksIDU3NjM1LCA1NzY0MCwgNTc2NDYsIDU3NjU1LCA1NzY2MCwgNTc2NjgsIDU3Njc1LCA1NzY4NCwgNTc2ODksIAotICAgIDU3Njk0LCA1NzY5OSwgNTc3MDUsIDAsIDU3NzEyLCA1NzcyMCwgNTc3MjgsIDU3NzM3LCA1Nzc0NCwgNTc3NTIsIDU3NzU4LCAKLSAgICA1Nzc2NywgNTc3NzUsIDU3NzgzLCA1Nzc5MSwgNTc3OTksIDU3ODA3LCA1NzgxNSwgNTc4MjAsIDU3ODI3LCA1NzgzMywgCi0gICAgNTc4NDAsIDU3ODQ4LCA1Nzg1NSwgNTc4NjIsIDU3ODcwLCA1Nzg3NiwgNTc4ODIsIDU3ODg5LCA1Nzg5NiwgNTc5MDYsIAotICAgIDU3OTE2LCA1NzkyMywgNTc5MzAsIDU3OTM1LCA1Nzk0NSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzAsIDU3OTc1LCAKLSAgICA1Nzk4MCwgNTc5ODUsIDU3OTkwLCA1Nzk5NSwgNTgwMDAsIDU4MDA1LCA1ODAxMCwgNTgwMTUsIDU4MDIwLCA1ODAyNSwgCi0gICAgNTgwMzAsIDU4MDM1LCA1ODA0MCwgNTgwNDUsIDU4MDUwLCA1ODA1NSwgNTgwNjAsIDU4MDY1LCA1ODA3MCwgNTgwNzUsIAotICAgIDU4MDgwLCA1ODA4NSwgNTgwOTAsIDU4MDk1LCA1ODEwMCwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTgsIDU4MTIzLCAKLSAgICA1ODEyOCwgNTgxMzMsIDU4MTM4LCA1ODE0MywgNTgxNDgsIDU4MTUzLCA1ODE1OCwgNTgxNjMsIDU4MTY4LCA1ODE3MywgCi0gICAgNTgxNzgsIDU4MTgzLCA1ODE4OCwgNTgxOTMsIDU4MTk4LCA1ODIwMywgNTgyMTAsIDU4MjE3LCA1ODIyNCwgNTgyMzEsIAotICAgIDU4MjM4LCA1ODI0NSwgNTgyNTIsIDU4MjU5LCA1ODI2NiwgNTgyNzMsIDU4MjgwLCA1ODI4NywgNTgyOTQsIDU4MzAxLCAKLSAgICA1ODMwNiwgNTgzMTEsIDU4MzE4LCA1ODMyNSwgNTgzMzIsIDU4MzM5LCA1ODM0NiwgNTgzNTMsIDU4MzYwLCA1ODM2NywgCi0gICAgNTgzNzQsIDU4MzgxLCA1ODM4OCwgNTgzOTUsIDU4NDAxLCA1ODQwNywgNTg0MTMsIDU4NDE5LCA1ODQyNiwgNTg0MzMsIAotICAgIDU4NDQwLCA1ODQ0NywgNTg0NTQsIDU4NDYxLCA1ODQ2OCwgNTg0NzUsIDU4NDgyLCA1ODQ4OSwgNTg0OTcsIDU4NTA1LCAKLSAgICA1ODUxMywgNTg1MjEsIDU4NTI5LCA1ODUzNywgNTg1NDUsIDU4NTUzLCA1ODU1NywgNTg1NjMsIDU4NTY5LCA1ODU3MywgCi0gICAgNTg1NzksIDU4NTg1LCA1ODU5MSwgNTg1OTgsIDU4NjA1LCA1ODYxMiwgNTg2MTksIDU4NjI0LCA1ODYzMCwgNTg2MzYsIAotICAgIDU4NjQzLCAwLCAwLCAwLCAwLCAwLCA1ODY1MCwgNTg2NTgsIDU4NjY3LCA1ODY3NiwgNTg2ODQsIDU4NjkwLCA1ODY5NSwgCi0gICAgNTg3MDAsIDU4NzA1LCA1ODcxMCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIAotICAgIDU4NzUwLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCAKLSAgICA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgCi0gICAgNTg4NTAsIDU4ODU1LCA1ODg2MCwgNTg4NjUsIDU4ODcwLCA1ODg3NSwgNTg4ODAsIDU4ODg1LCAwLCA1ODg5MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTg4OTUsIDAsIDAsIDU4OTAwLCA1ODkwNCwgNTg5MDksIDU4OTE0LCA1ODkxOSwgNTg5MjQsIDU4OTMzLCAKLSAgICA1ODkzOCwgNTg5NDMsIDU4OTQ4LCA1ODk1MywgNTg5NTgsIDU4OTYzLCA1ODk2OCwgNTg5NzMsIDU4OTgwLCA1ODk4NSwgCi0gICAgNTg5OTAsIDU4OTk5LCA1OTAwNiwgNTkwMTEsIDU5MDE2LCA1OTAyMSwgNTkwMjgsIDU5MDMzLCA1OTA0MCwgNTkwNDUsIAotICAgIDU5MDUwLCA1OTA1NywgNTkwNjQsIDU5MDY5LCA1OTA3NCwgNTkwNzksIDU5MDg2LCA1OTA5MywgNTkwOTgsIDU5MTAzLCAKLSAgICA1OTEwOCwgNTkxMTMsIDU5MTE4LCA1OTEyNSwgNTkxMzIsIDU5MTM3LCA1OTE0MiwgNTkxNDcsIDU5MTUyLCA1OTE1NywgCi0gICAgNTkxNjIsIDU5MTY3LCA1OTE3MiwgNTkxNzcsIDU5MTgyLCA1OTE4NywgNTkxOTQsIDU5MTk5LCA1OTIwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTkyMDksIDU5MjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTIyMSwgNTkyMjYsIDU5MjMwLCA1OTIzNCwgNTkyMzgsIDU5MjQyLCA1OTI0NiwgNTkyNTAsIDU5MjU0LCA1OTI1OCwgCi0gICAgNTkyNjIsIDU5MjY2LCA1OTI3MiwgNTkyNzYsIDU5MjgwLCA1OTI4NCwgNTkyODgsIDU5MjkyLCA1OTI5NiwgNTkzMDAsIAotICAgIDU5MzA0LCA1OTMwOCwgNTkzMTIsIDU5MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTMyMCwgNTkzMjQsIAotICAgIDU5MzI4LCA1OTMzMiwgNTkzMzYsIDU5MzQwLCA1OTM0NCwgMCwgNTkzNDgsIDU5MzUyLCA1OTM1NiwgNTkzNjAsIDU5MzY0LCAKLSAgICA1OTM2OCwgNTkzNzIsIDAsIDU5Mzc2LCA1OTM4MCwgNTkzODQsIDU5Mzg4LCA1OTM5MiwgNTkzOTYsIDU5NDAwLCAwLCAKLSAgICA1OTQwNCwgNTk0MDgsIDU5NDEyLCA1OTQxNiwgNTk0MjAsIDU5NDI0LCA1OTQyOCwgMCwgNTk0MzIsIDU5NDM2LCA1OTQ0MCwgCi0gICAgNTk0NDQsIDU5NDQ4LCA1OTQ1MiwgNTk0NTYsIDAsIDU5NDYwLCA1OTQ2NCwgNTk0NjgsIDU5NDcyLCA1OTQ3NiwgNTk0ODAsIAotICAgIDU5NDg0LCAwLCA1OTQ4OCwgNTk0OTIsIDU5NDk2LCA1OTUwMCwgNTk1MDQsIDU5NTA4LCA1OTUxMiwgMCwgNTk1MTYsIAotICAgIDU5NTIwLCA1OTUyNCwgNTk1MjgsIDU5NTMyLCA1OTUzNiwgNTk1NDAsIDAsIDU5NTQ0LCA1OTU0OSwgNTk1NTQsIDU5NTU5LCAKLSAgICA1OTU2NCwgNTk1NjksIDU5NTc0LCA1OTU3OCwgNTk1ODMsIDU5NTg4LCA1OTU5MywgNTk1OTcsIDU5NjAyLCA1OTYwNywgCi0gICAgNTk2MTIsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMxLCA1OTYzNiwgNTk2NDEsIDU5NjQ2LCA1OTY1MSwgNTk2NTUsIAotICAgIDU5NjYwLCA1OTY2NSwgNTk2NzIsIDU5Njc3LCA1OTY4MiwgNTk2ODgsIDU5Njk1LCA1OTcwMiwgNTk3MTEsIDU5NzE4LCAKLSAgICA1OTcyNywgNTk3MzEsIDU5NzM1LCA1OTc0MSwgNTk3NDcsIDU5NzUzLCA1OTc2MSwgNTk3NjcsIDU5NzcxLCA1OTc3NSwgCi0gICAgNTk3NzksIDU5Nzg1LCA1OTc5MSwgNTk3OTUsIDU5Nzk3LCA1OTgwMSwgNTk4MDcsIDU5ODA5LCA1OTgxMywgNTk4MTYsIAotICAgIDU5ODE5LCA1OTgyNSwgNTk4MzAsIDU5ODM0LCA1OTgzOCwgNTk4NDMsIDU5ODQ5LCA1OTg1NCwgNTk4NTksIDU5ODY0LCAKLSAgICA1OTg2OSwgNTk4NzYsIDU5ODgzLCA1OTg4OCwgNTk4OTMsIDU5ODk4LCA1OTkwMywgNTk5MDgsIDU5OTEzLCA1OTkxNywgCi0gICAgNTk5MjEsIDU5OTI4LCA1OTkzNSwgNTk5NDEsIDU5OTQ1LCA1OTk1MCwgNTk5NTMsIDU5OTU3LCA1OTk2NCwgNTk5NjgsIAotICAgIDU5OTcyLCA1OTk3NiwgNTk5ODAsIDU5OTg2LCA1OTk5MiwgNTk5OTYsIDYwMDAyLCA2MDAwNiwgNjAwMTAsIDYwMDE2LCAKLSAgICA2MDAyMSwgNjAwMjYsIDYwMDI4LCA2MDAzMSwgNjAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDU0LCA2MDA1OSwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgxLCAKLSAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgNjAxMDIsIDYwMTA3LCA2MDExMiwgNjAxMTcsIDYwMTIyLCA2MDEyNiwgCi0gICAgNjAxMzAsIDYwMTM1LCA2MDE0MCwgNjAxNDUsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgNjAxNzAsIAotICAgIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg3LCA2MDE5MiwgNjAxOTYsIDYwMjAxLCA2MDIwNiwgNjAyMTUsIDYwMjE5LCAKLSAgICA2MDIyMywgNjAyMjcsIDYwMjM0LCA2MDIzOCwgNjAyNDMsIDYwMjQ4LCA2MDI1MiwgNjAyNTYsIDYwMjYyLCA2MDI2NywgCi0gICAgNjAyNzIsIDYwMjc3LCA2MDI4MiwgNjAyODYsIDYwMjkwLCA2MDI5NCwgNjAyOTgsIDYwMzAyLCA2MDMwNywgNjAzMTIsIAotICAgIDYwMzE2LCA2MDMyMCwgNjAzMjUsIDYwMzMwLCA2MDMzNSwgNjAzMzksIDYwMzQzLCA2MDM0OCwgNjAzNTMsIDYwMzU5LCAKLSAgICA2MDM2NSwgNjAzNjksIDYwMzc1LCA2MDM4MSwgNjAzODUsIDYwMzkxLCA2MDM5NywgNjA0MDIsIDYwNDA3LCA2MDQxMSwgCi0gICAgNjA0MTcsIDYwNDIxLCA2MDQyNSwgNjA0MzEsIDYwNDM3LCA2MDQ0MiwgNjA0NDcsIDYwNDUxLCA2MDQ1NSwgNjA0NjMsIAotICAgIDYwNDY5LCA2MDQ3NSwgNjA0ODEsIDYwNDg2LCA2MDQ5MSwgNjA0OTYsIDYwNTAyLCA2MDUwNiwgNjA1MTIsIDYwNTE2LCAKLSAgICA2MDUyMCwgNjA1MjYsIDYwNTMyLCA2MDUzOCwgNjA1NDQsIDYwNTUwLCA2MDU1NiwgNjA1NjIsIDYwNTY4LCA2MDU3NCwgCi0gICAgNjA1ODAsIDYwNTg2LCA2MDU5MiwgNjA1OTYsIDYwNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDYwOCwgNjA2MTEsIDYwNjE1LCA2MDYxOSwgNjA2MjMsIDYwNjI3LCA2MDYzMCwgNjA2MzMsIDYwNjM3LCA2MDY0MSwgCi0gICAgNjA2NDUsIDYwNjQ5LCA2MDY1MiwgNjA2NTcsIDYwNjYxLCA2MDY2NSwgNjA2NjksIDYwNjc0LCA2MDY3OCwgNjA2ODIsIAotICAgIDYwNjg2LCA2MDY5MCwgNjA2OTYsIDYwNzAyLCA2MDcwNiwgNjA3MTAsIDYwNzE0LCA2MDcxOCwgNjA3MjIsIDYwNzI2LCAKLSAgICA2MDczMCwgNjA3MzQsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUyLCA2MDc1NiwgNjA3NjAsIDYwNzY0LCA2MDc2OCwgCi0gICAgNjA3NzIsIDYwNzc2LCA2MDc4MCwgNjA3ODQsIDYwNzg4LCA2MDc5MiwgNjA3OTYsIDYwODAwLCA2MDgwNCwgNjA4MDgsIAotICAgIDYwODEyLCA2MDgxNiwgNjA4MjIsIDYwODI4LCA2MDgzMywgNjA4MzgsIDYwODQyLCA2MDg0NiwgNjA4NTAsIDYwODU0LCAKLSAgICA2MDg1OCwgNjA4NjIsIDYwODY2LCA2MDg3MCwgNjA4NzQsIDYwODc4LCA2MDg4MiwgNjA4ODYsIDYwODkwLCA2MDg5NCwgCi0gICAgNjA4OTgsIDYwOTAyLCA2MDkwNiwgNjA5MTAsIDYwOTE0LCA2MDkxOCwgNjA5MjIsIDYwOTI2LCA2MDkzMCwgNjA5MzQsIAotICAgIDYwOTQwLCA2MDk0NCwgNjA5NDgsIDYwOTUyLCA2MDk1NiwgNjA5NjAsIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCAKLSAgICA2MDk4NCwgNjA5ODgsIDYwOTkyLCA2MDk5NiwgNjEwMDAsIDYxMDA0LCA2MTAwOCwgNjEwMTIsIDYxMDE2LCA2MTAyMCwgCi0gICAgNjEwMjQsIDYxMDI4LCA2MTAzMiwgNjEwMzksIDYxMDQzLCA2MTA0OSwgNjEwNTMsIDYxMDU3LCA2MTA2MSwgNjEwNjUsIAotICAgIDYxMDY5LCA2MTA3MiwgNjEwNzYsIDYxMDgwLCA2MTA4NCwgNjEwODgsIDYxMDkyLCA2MTA5NiwgNjExMDAsIDYxMTA0LCAKLSAgICA2MTEwOCwgNjExMTIsIDYxMTE2LCA2MTEyMCwgNjExMjQsIDYxMTI4LCA2MTEzMiwgNjExMzYsIDYxMTQwLCA2MTE0NCwgCi0gICAgNjExNDgsIDYxMTUyLCA2MTE1NiwgNjExNjAsIDYxMTY0LCA2MTE2OCwgNjExNzIsIDYxMTc2LCA2MTE4MCwgNjExODQsIAotICAgIDYxMTg4LCA2MTE5MiwgNjExOTYsIDYxMjAwLCA2MTIwNiwgNjEyMTAsIDYxMjE0LCA2MTIxOCwgNjEyMjIsIDYxMjI2LCAKLSAgICA2MTIzMCwgNjEyMzQsIDYxMjM4LCA2MTI0MiwgNjEyNDYsIDYxMjUwLCA2MTI1NCwgNjEyNTgsIDYxMjYyLCA2MTI2NiwgCi0gICAgNjEyNzAsIDYxMjc0LCA2MTI3OCwgNjEyODIsIDYxMjg2LCA2MTI5MCwgNjEyOTQsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIAotICAgIDYxMzEwLCA2MTMxNCwgNjEzMjIsIDYxMzI2LCA2MTMzMCwgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzUyLCAKLSAgICA2MTM1NiwgNjEzNjAsIDYxMzY0LCA2MTM2OCwgNjEzNzIsIDYxMzc2LCA2MTM4MCwgNjEzODQsIDYxMzg4LCA2MTM5MiwgCi0gICAgNjEzOTYsIDYxNDAwLCA2MTQwNiwgNjE0MTAsIDYxNDE0LCA2MTQxOCwgNjE0MjIsIDYxNDI2LCA2MTQzMCwgNjE0MzQsIAotICAgIDYxNDM4LCA2MTQ0MiwgNjE0NDYsIDYxNDUwLCA2MTQ1NCwgNjE0NTgsIDYxNDYyLCA2MTQ2NiwgNjE0NzAsIDYxNDc0LCAKLSAgICA2MTQ3OCwgNjE0ODIsIDYxNDg2LCA2MTQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0OTQsIDYxNTAzLCA2MTUxMSwgNjE1MjIsIDYxNTMyLCAKLSAgICA2MTU0MCwgNjE1NDksIDYxNTU4LCA2MTU2OCwgNjE1ODAsIDYxNTkyLCA2MTYwNCwgMCwgMCwgMCwgMCwgNjE2MTAsIAotICAgIDYxNjEzLCA2MTYxNiwgNjE2MjEsIDYxNjI0LCA2MTYzMSwgNjE2MzUsIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCAKLSAgICA2MTY1NiwgNjE2NjEsIDYxNjY1LCA2MTY2OSwgNjE2NzQsIDYxNjc5LCA2MTY4NCwgNjE2ODksIDYxNjkyLCA2MTY5NSwgCi0gICAgNjE3MDEsIDYxNzA3LCA2MTcxMiwgNjE3MTcsIDYxNzI0LCA2MTczMSwgNjE3MzUsIDYxNzM5LCA2MTc0MywgNjE3NTEsIAotICAgIDYxNzU3LCA2MTc2NCwgNjE3NjksIDYxNzc0LCA2MTc3OSwgNjE3ODQsIDYxNzg5LCA2MTc5NCwgNjE3OTksIDYxODA1LCAKLSAgICA2MTgxMCwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM2LCA2MTg0MiwgNjE4NDcsIDYxODUxLCA2MTg1NywgCi0gICAgNjE4NjgsIDYxODc4LCA2MTg5MywgNjE5MDMsIDYxOTA3LCA2MTkxNywgNjE5MjMsIDYxOTI5LCA2MTkzNSwgNjE5NDAsIAotICAgIDYxOTQzLCA2MTk0OCwgNjE5NTIsIDAsIDYxOTU4LCA2MTk2MiwgNjE5NjUsIDYxOTY5LCA2MTk3MiwgNjE5NzYsIDYxOTc5LCAKLSAgICA2MTk4MywgNjE5ODYsIDYxOTkwLCA2MTk5MywgNjE5OTYsIDYyMDAwLCA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgCi0gICAgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTYsIAotICAgIDYyMDYwLCA2MjA2NCwgNjIwNjgsIDYyMDcyLCA2MjA3NiwgNjIwODAsIDYyMDg0LCA2MjA4OCwgNjIwOTMsIDYyMDk3LCAKLSAgICA2MjEwMSwgNjIxMDUsIDYyMTA5LCA2MjExMiwgNjIxMTYsIDYyMTIwLCA2MjEyNCwgNjIxMjgsIDYyMTMyLCA2MjEzNiwgCi0gICAgNjIxMzksIDYyMTQzLCA2MjE0NiwgNjIxNTAsIDYyMTU0LCA2MjE1OCwgNjIxNjIsIDYyMTY2LCA2MjE3MCwgNjIxNzQsIAotICAgIDYyMTc4LCA2MjE4MiwgNjIxODYsIDYyMTkwLCA2MjE5NCwgNjIxOTcsIDYyMjAxLCA2MjIwNSwgNjIyMDksIDYyMjEzLCAKLSAgICA2MjIxNywgNjIyMjAsIDYyMjI1LCA2MjIyOSwgNjIyMzQsIDYyMjM4LCA2MjI0MiwgNjIyNDYsIDYyMjUwLCA2MjI1NCwgCi0gICAgNjIyNTgsIDYyMjYzLCA2MjI2NywgNjIyNzEsIDYyMjc1LCA2MjI3OSwgNjIyODMsIDYyMjg3LCA2MjI5MSwgMCwgMCwgCi0gICAgNjIyOTYsIDYyMzA0LCA2MjMxMiwgNjIzMTksIDYyMzI2LCA2MjMzMCwgNjIzMzYsIDYyMzQxLCA2MjM0NiwgNjIzNTAsIAotICAgIDYyMzUzLCA2MjM1NywgNjIzNjAsIDYyMzY0LCA2MjM2NywgNjIzNzEsIDYyMzc0LCA2MjM3OCwgNjIzODEsIDYyMzg0LCAKLSAgICA2MjM4OCwgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDQsIDYyNDA4LCA2MjQxMiwgNjI0MTYsIDYyNDIwLCA2MjQyNCwgCi0gICAgNjI0MjgsIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTIsIDYyNDU2LCA2MjQ2MCwgNjI0NjQsIAotICAgIDYyNDY4LCA2MjQ3MiwgNjI0NzYsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCA2MjQ5NywgNjI1MDAsIDYyNTA0LCAKLSAgICA2MjUwOCwgNjI1MTIsIDYyNTE2LCA2MjUyMCwgNjI1MjQsIDYyNTI3LCA2MjUzMSwgNjI1MzQsIDYyNTM4LCA2MjU0MiwgCi0gICAgNjI1NDYsIDYyNTUwLCA2MjU1NCwgNjI1NTgsIDYyNTYyLCA2MjU2NiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1ODIsIAotICAgIDYyNTg1LCA2MjU4OSwgNjI1OTMsIDYyNTk3LCA2MjYwMSwgNjI2MDUsIDYyNjA4LCA2MjYxMywgNjI2MTcsIDYyNjIyLCAKLSAgICA2MjYyNiwgNjI2MzAsIDYyNjM0LCA2MjYzOCwgNjI2NDIsIDYyNjQ2LCA2MjY1MSwgNjI2NTUsIDYyNjU5LCA2MjY2MywgCi0gICAgNjI2NjcsIDYyNjcxLCA2MjY3NSwgNjI2NzksIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIAotICAgIDYyNzExLCA2MjcxNSwgNjI3MjEsIDAsIDAsIDAsIDAsIDAsIDYyNzI2LCA2MjczMSwgNjI3MzYsIDYyNzQxLCA2Mjc0NiwgCi0gICAgNjI3NTEsIDYyNzU2LCA2Mjc2MSwgNjI3NjUsIDYyNzcwLCA2Mjc3NSwgNjI3ODAsIDYyNzg1LCA2Mjc5MCwgNjI3OTUsIAotICAgIDYyODAwLCA2MjgwNSwgNjI4MTAsIDYyODE0LCA2MjgxOSwgNjI4MjQsIDYyODI4LCA2MjgzMiwgNjI4MzYsIDYyODQwLCAKLSAgICA2Mjg0NSwgNjI4NTAsIDYyODU1LCA2Mjg2MCwgNjI4NjUsIDYyODcwLCA2Mjg3NSwgNjI4ODAsIDYyODg1LCA2Mjg5MCwgCi0gICAgNjI4OTQsIDYyODk4LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgMCwgMCwgMCwgNjI5MjMsIDYyOTI3LCA2MjkzMSwgCi0gICAgNjI5MzUsIDYyOTM5LCA2Mjk0MywgNjI5NDcsIDYyOTUxLCA2Mjk1NSwgNjI5NTksIDYyOTYzLCA2Mjk2NywgNjI5NzEsIAotICAgIDYyOTc1LCA2Mjk3OSwgNjI5ODMsIDYyOTg3LCA2Mjk5MSwgNjI5OTUsIDYyOTk5LCA2MzAwMywgNjMwMDcsIDYzMDExLCAKLSAgICA2MzAxNSwgNjMwMTksIDYzMDIzLCA2MzAyNywgNjMwMzEsIDYzMDM1LCA2MzAzOSwgNjMwNDMsIDYzMDQ2LCA2MzA1MCwgCi0gICAgNjMwNTMsIDYzMDU3LCA2MzA2MSwgNjMwNjQsIDYzMDY4LCA2MzA3MiwgNjMwNzUsIDYzMDc5LCA2MzA4MywgNjMwODcsIAotICAgIDYzMDkxLCA2MzA5NCwgNjMwOTgsIDYzMTAyLCA2MzEwNiwgNjMxMTAsIDYzMTE0LCA2MzExOCwgNjMxMjEsIDYzMTI0LCAKLSAgICA2MzEyOCwgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MiwgNjMxNTYsIDYzMTYwLCA2MzE2NCwgCi0gICAgNjMxNjgsIDYzMTcyLCA2MzE3NiwgNjMxODAsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIDYzMTk2LCA2MzIwMCwgNjMyMDQsIAotICAgIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCA2MzIzNiwgNjMyNDAsIDYzMjQ0LCAKLSAgICA2MzI0OCwgNjMyNTIsIDYzMjU2LCA2MzI2MCwgNjMyNjQsIDYzMjY4LCA2MzI3MiwgNjMyNzYsIDYzMjgwLCA2MzI4NCwgCi0gICAgNjMyODgsIDAsIDYzMjkyLCA2MzI5OCwgNjMzMDQsIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI1LCA2MzMzMSwgNjMzMzYsIAotICAgIDYzMzQyLCA2MzM0OCwgNjMzNTQsIDYzMzYwLCA2MzM2NiwgNjMzNzIsIDYzMzc4LCA2MzM4NCwgNjMzODksIDYzMzk0LCAKLSAgICA2MzM5OSwgNjM0MDQsIDYzNDA5LCA2MzQxNCwgNjM0MTksIDYzNDI0LCA2MzQyOSwgNjM0MzQsIDYzNDM5LCA2MzQ0NCwgCi0gICAgNjM0NDksIDYzNDU0LCA2MzQ1OSwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDg0LCA2MzQ5MCwgNjM0OTYsIAotICAgIDYzNTAyLCA2MzUwOCwgNjM1MTMsIDYzNTE4LCAwLCAwLCAwLCAwLCAwLCA2MzUyMywgNjM1MjgsIDYzNTMzLCA2MzUzOCwgCi0gICAgNjM1NDMsIDYzNTQ4LCA2MzU1MywgNjM1NTgsIDYzNTYzLCA2MzU2OCwgNjM1NzMsIDYzNTc4LCA2MzU4MywgNjM1ODgsIAotICAgIDYzNTkzLCA2MzU5OCwgNjM2MDMsIDYzNjA4LCA2MzYxMiwgNjM2MTcsIDYzNjIyLCA2MzYyNywgNjM2MzIsIDYzNjM3LCAKLSAgICA2MzY0MiwgNjM2NDcsIDYzNjUyLCA2MzY1NywgNjM2NjIsIDYzNjY3LCA2MzY3MiwgNjM2NzcsIDYzNjgyLCA2MzY4NywgCi0gICAgNjM2OTIsIDYzNjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcwMiwgNjM3MDcsIDYzNzEyLCAKLSAgICA2MzcxNywgNjM3MjEsIDYzNzI2LCA2MzczMCwgNjM3MzUsIDYzNzQwLCA2Mzc0NSwgNjM3NTAsIDYzNzU1LCA2Mzc2MCwgCi0gICAgNjM3NjUsIDYzNzcwLCA2Mzc3NSwgNjM3ODAsIDYzNzg0LCA2Mzc4OCwgNjM3OTIsIDYzNzk2LCA2MzgwMCwgNjM4MDQsIAotICAgIDYzODA4LCA2MzgxMiwgNjM4MTYsIDYzODIwLCA2MzgyNCwgNjM4MjgsIDYzODMyLCA2MzgzNiwgNjM4NDEsIDYzODQ2LCAKLSAgICA2Mzg1MSwgNjM4NTYsIDYzODYxLCA2Mzg2NiwgNjM4NzEsIDYzODc2LCA2Mzg4MSwgNjM4ODYsIDYzODkxLCA2Mzg5NiwgCi0gICAgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTcsIDAsIDYzOTI0LCA2MzkyNywgNjM5MzAsIDYzOTMzLCA2MzkzNiwgNjM5MzksIAotICAgIDYzOTQyLCA2Mzk0NiwgNjM5NDksIDYzOTUzLCA2Mzk1NywgNjM5NjEsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc3LCAKLSAgICA2Mzk4MSwgNjM5ODUsIDYzOTg5LCA2Mzk5MywgNjM5OTcsIDY0MDAxLCA2NDAwNSwgNjQwMDksIDY0MDEzLCA2NDAxNywgCi0gICAgNjQwMjEsIDY0MDI1LCA2NDAyOSwgNjQwMzMsIDY0MDM3LCA2NDA0MSwgNjQwNDUsIDY0MDQ5LCA2NDA1MywgNjQwNTcsIAotICAgIDY0MDYxLCA2NDA2NSwgNjQwNjksIDY0MDczLCA2NDA3NywgNjQwODYsIDY0MDk1LCA2NDEwNCwgNjQxMTMsIDY0MTIyLCAKLSAgICA2NDEzMSwgNjQxNDAsIDY0MTQ5LCA2NDE1MiwgNjQxNTcsIDY0MTYyLCA2NDE2NywgNjQxNzIsIDY0MTc3LCA2NDE4MiwgCi0gICAgNjQxODgsIDY0MTkzLCA2NDE5OSwgNjQyMDMsIDY0MjA4LCA2NDIxMywgNjQyMTgsIDY0MjIzLCA2NDIyOCwgNjQyMzIsIAotICAgIDY0MjM2LCA2NDI0MCwgNjQyNDQsIDY0MjQ4LCA2NDI1MiwgNjQyNTYsIDY0MjYwLCA2NDI2NCwgNjQyNjgsIDY0MjcyLCAKLSAgICA2NDI3NiwgNjQyODAsIDY0Mjg0LCA2NDI4OSwgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgCi0gICAgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIDY0MzQ0LCA2NDM0OSwgNjQzNTQsIDY0MzYwLCA2NDM2NiwgNjQzNzEsIAotICAgIDY0Mzc2LCA2NDM3OSwgNjQzODIsIDY0Mzg1LCA2NDM4OCwgNjQzOTEsIDY0Mzk0LCA2NDM5OCwgNjQ0MDEsIDY0NDA1LCAKLSAgICA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgCi0gICAgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODUsIAotICAgIDY0NDg5LCA2NDQ5MywgNjQ0OTcsIDY0NTAxLCA2NDUwNSwgNjQ1MDksIDY0NTEzLCA2NDUxNywgNjQ1MjEsIDY0NTI1LCAKLSAgICA2NDUyOSwgNjQ1MzMsIDY0NTM3LCA2NDU0MSwgNjQ1NDUsIDY0NTQ5LCA2NDU1MywgNjQ1NTcsIDY0NTYxLCA2NDU2NSwgCi0gICAgNjQ1NzAsIDY0NTc2LCA2NDU4MSwgNjQ1ODcsIDY0NTkxLCA2NDU5NiwgNjQ2MDEsIDY0NjA2LCA2NDYxMSwgNjQ2MTYsIAotICAgIDY0NjIxLCA2NDYyNywgNjQ2MzIsIDY0NjM4LCA2NDY0MiwgNjQ2NDksIDY0NjU2LCA2NDY2MywgNjQ2NzAsIDY0Njc3LCAKLSAgICA2NDY4NCwgNjQ2OTEsIDY0Njk4LCA2NDcwNSwgNjQ3MTIsIDY0NzE5LCA2NDcyNiwgNjQ3MjksIDY0NzMyLCA2NDczNSwgCi0gICAgNjQ3NDAsIDY0NzQzLCA2NDc0NiwgNjQ3NDksIDY0NzUyLCA2NDc1NSwgNjQ3NTgsIDY0NzYyLCA2NDc2NiwgNjQ3NzAsIAotICAgIDY0Nzc0LCA2NDc3OCwgNjQ3ODIsIDY0Nzg2LCA2NDc5MCwgNjQ3OTQsIDY0Nzk4LCA2NDgwMiwgNjQ4MDYsIDY0ODEwLCAKLSAgICA2NDgxMywgNjQ4MTcsIDY0ODIxLCA2NDgyNSwgNjQ4MjksIDY0ODMzLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgCi0gICAgNjQ4NTIsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzQsIDY0ODc4LCA2NDg4MiwgNjQ4ODYsIAotICAgIDY0ODkwLCA2NDg5NCwgNjQ4OTgsIDY0OTAyLCA2NDkwNiwgNjQ5MTAsIDY0OTE0LCAwLCA2NDkxOCwgNjQ5MjEsIDY0OTI0LCAKLSAgICA2NDkyNywgNjQ5MzAsIDY0OTMzLCA2NDkzNiwgNjQ5MzksIDY0OTQyLCA2NDk0NSwgNjQ5NDgsIDY0OTUxLCA2NDk1NCwgCi0gICAgNjQ5NTcsIDY0OTYwLCA2NDk2MywgNjQ5NjYsIDY0OTY5LCA2NDk3MiwgNjQ5NzUsIDY0OTc4LCA2NDk4MSwgNjQ5ODQsIAotICAgIDY0OTg3LCA2NDk5MCwgNjQ5OTMsIDY0OTk2LCA2NDk5OSwgNjUwMDIsIDY1MDA1LCA2NTAwOCwgNjUwMTEsIDY1MDE0LCAKLSAgICA2NTAxNywgNjUwMjAsIDY1MDIzLCA2NTAyNiwgNjUwMjksIDY1MDMyLCA2NTAzNSwgNjUwMzgsIDY1MDQxLCA2NTA0NCwgCi0gICAgNjUwNDcsIDY1MDUwLCA2NTA1MywgNjUwNTYsIDY1MDU5LCA2NTA2MiwgNjUwNjUsIDY1MDY4LCA2NTA3MSwgNjUwNzQsIAotICAgIDY1MDc3LCA2NTA4MCwgNjUwODMsIDY1MDg2LCA2NTA4OSwgNjUwOTIsIDY1MDk1LCA2NTA5OCwgNjUxMDEsIDY1MTA0LCAKLSAgICA2NTEwNywgNjUxMTAsIDY1MTEzLCA2NTExNiwgNjUxMTksIDY1MTIyLCA2NTEyNSwgNjUxMjgsIDY1MTMxLCA2NTEzNCwgCi0gICAgNjUxMzcsIDY1MTQwLCA2NTE0MywgNjUxNDYsIDY1MTQ5LCA2NTE1MiwgNjUxNTUsIDY1MTU4LCA2NTE2MSwgNjUxNjQsIAotICAgIDY1MTY3LCA2NTE3MCwgNjUxNzMsIDY1MTc2LCA2NTE3OSwgNjUxODIsIDY1MTkxLCA2NTE5OSwgNjUyMDcsIDY1MjE1LCAKLSAgICA2NTIyMywgNjUyMzEsIDY1MjM5LCA2NTI0OCwgNjUyNTYsIDY1MjY1LCA2NTI3NCwgNjUyODMsIDY1MjkyLCA2NTMwMSwgCi0gICAgNjUzMTAsIDY1MzE5LCA2NTMyOCwgNjUzMzcsIDY1MzQ2LCA2NTM1NSwgNjUzNjQsIDY1MzczLCA2NTM4MiwgNjUzOTEsIAotICAgIDY1NDAwLCA2NTQwMywgNjU0MDYsIDY1NDA5LCA2NTQxMSwgNjU0MTQsIDY1NDE3LCA2NTQyMCwgNjU0MjUsIDY1NDMwLCAKLSAgICA2NTQzMywgNjU0NDAsIDY1NDQ3LCA2NTQ1NCwgNjU0NjEsIDY1NDY0LCA2NTQ2OSwgNjU0NzIsIDY1NDc2LCA2NTQ3OCwgCi0gICAgNjU0ODAsIDY1NDgzLCA2NTQ4NiwgNjU0ODksIDY1NDkyLCA2NTQ5NSwgNjU0OTgsIDY1NTAxLCA2NTUwNiwgNjU1MTEsIAotICAgIDY1NTE0LCA2NTUxNywgNjU1MjAsIDY1NTIzLCA2NTUyNiwgNjU1MjksIDY1NTMyLCA2NTUzNiwgNjU1MzksIDY1NTQyLCAKLSAgICA2NTU0NSwgNjU1NDgsIDY1NTUxLCA2NTU1NiwgNjU1NTksIDY1NTYyLCA2NTU2NSwgNjU1NzAsIDY1NTc1LCA2NTU4MCwgCi0gICAgNjU1ODUsIDY1NTkwLCA2NTU5NSwgNjU2MDAsIDY1NjA1LCA2NTYxMCwgNjU2MTgsIDY1NjIwLCA2NTYyMywgNjU2MjYsIAotICAgIDY1NjI5LCA2NTYzMiwgNjU2MzcsIDY1NjQ1LCA2NTY0OCwgNjU2NTEsIDY1NjU1LCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKLSAgICA2NTY2OSwgNjU2NzIsIDY1Njc1LCA2NTY4MCwgNjU2ODMsIDY1Njg2LCA2NTY5MSwgNjU2OTQsIDY1Njk3LCA2NTcwMiwgCi0gICAgNjU3MDcsIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIAotICAgIDY1NzQxLCA2NTc0NCwgNjU3NDcsIDY1NzUwLCA2NTc1NSwgNjU3NTgsIDY1NzYxLCA2NTc2NCwgNjU3NjcsIDY1NzcwLCAKLSAgICA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgCi0gICAgNjU4MDgsIDY1ODEzLCA2NTgyMSwgNjU4MjksIDY1ODM3LCA2NTg0NSwgNjU4NTMsIDY1ODYxLCA2NTg3MCwgNjU4NzgsIAotICAgIDY1ODg3LCA2NTg5NiwgNjU5MDUsIDY1OTE0LCA2NTkyMywgNjU5MzIsIDY1OTQxLCA2NTk1MCwgNjU5NTksIDY1OTY4LCAKLSAgICA2NTk3NywgNjU5ODYsIDY1OTk1LCA2NjAwNCwgNjYwMTMsIDY2MDIyLCA2NjAzMSwgNjYwNDAsIDY2MDQ5LCA2NjA1OCwgCi0gICAgNjYwNjcsIDY2MDc2LCA2NjA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjA2OTMsIDYwNjk3LCA2MDcwMSwgNjA3MDYsIDYwNzExLCA2MDcxNiwgNjA3MjAsIDYwNzI0LCA2MDcyOCwgCisgICAgNjA3MzMsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUwLCA2MDc1NCwgNjA3NTksIDYwNzY0LCA2MDc2OSwgNjA3NzQsIAorICAgIDYwNzc4LCA2MDc4MiwgNjA3ODcsIDYwNzkyLCA2MDc5NywgNjA4MDIsIDYwODA2LCAwLCA2MDgxMCwgNjA4MTQsIDYwODE4LCAKKyAgICA2MDgyMiwgNjA4MjYsIDYwODMwLCA2MDgzNCwgNjA4MzksIDYwODQ0LCA2MDg0OCwgNjA4NTMsIDYwODU4LCA2MDg2NywgCisgICAgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODYsIDYwODkwLCA2MDg5NSwgNjA5MDAsIDYwOTA0LCA2MDkwOCwgNjA5MTQsIAorICAgIDYwOTE5LCA2MDkyNCwgNjA5MjksIDYwOTM0LCA2MDkzOCwgNjA5NDIsIDYwOTQ2LCA2MDk1MCwgNjA5NTQsIDYwOTU5LCAKKyAgICA2MDk2NCwgNjA5NjgsIDYwOTcyLCA2MDk3NywgNjA5ODIsIDYwOTg3LCA2MDk5MSwgNjA5OTUsIDYxMDAwLCA2MTAwNSwgCisgICAgNjEwMTEsIDYxMDE3LCA2MTAyMSwgNjEwMjcsIDYxMDMzLCA2MTAzNywgNjEwNDMsIDYxMDQ5LCA2MTA1NCwgNjEwNTksIAorICAgIDYxMDYzLCA2MTA2OSwgNjEwNzMsIDYxMDc3LCA2MTA4MywgNjEwODksIDYxMDk0LCA2MTA5OSwgNjExMDMsIDYxMTA3LCAKKyAgICA2MTExNSwgNjExMjEsIDYxMTI3LCA2MTEzMywgNjExMzgsIDYxMTQzLCA2MTE0OCwgNjExNTQsIDYxMTU4LCA2MTE2NCwgCisgICAgNjExNjgsIDYxMTcyLCA2MTE3OCwgNjExODQsIDYxMTkwLCA2MTE5NiwgNjEyMDIsIDYxMjA4LCA2MTIxNCwgNjEyMjAsIAorICAgIDYxMjI2LCA2MTIzMiwgNjEyMzgsIDYxMjQ0LCA2MTI0OCwgNjEyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDYxMjYwLCA2MTI2MywgNjEyNjcsIDYxMjcxLCA2MTI3NSwgNjEyNzksIDYxMjgyLCA2MTI4NSwgNjEyODksIAorICAgIDYxMjkzLCA2MTI5NywgNjEzMDEsIDYxMzA0LCA2MTMwOSwgNjEzMTMsIDYxMzE3LCA2MTMyMSwgNjEzMjYsIDYxMzMwLCAKKyAgICA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTQsIDYxMzU4LCA2MTM2MiwgNjEzNjYsIDYxMzcwLCA2MTM3NCwgCisgICAgNjEzNzgsIDYxMzgyLCA2MTM4NiwgNjEzOTAsIDYxMzk0LCA2MTM5OCwgNjE0MDQsIDYxNDA4LCA2MTQxMiwgNjE0MTYsIAorICAgIDYxNDIwLCA2MTQyNCwgNjE0MjgsIDYxNDMyLCA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OCwgNjE0NTIsIDYxNDU2LCAKKyAgICA2MTQ2MCwgNjE0NjQsIDYxNDY4LCA2MTQ3NCwgNjE0ODAsIDYxNDg1LCA2MTQ5MCwgNjE0OTQsIDYxNDk4LCA2MTUwMiwgCisgICAgNjE1MDYsIDYxNTEwLCA2MTUxNCwgNjE1MTgsIDYxNTIyLCA2MTUyNiwgNjE1MzAsIDYxNTM0LCA2MTUzOCwgNjE1NDIsIAorICAgIDYxNTQ2LCA2MTU1MCwgNjE1NTQsIDYxNTU4LCA2MTU2MiwgNjE1NjYsIDYxNTcwLCA2MTU3NCwgNjE1NzgsIDYxNTgyLCAKKyAgICA2MTU4NiwgNjE1OTIsIDYxNTk2LCA2MTYwMCwgNjE2MDQsIDYxNjA4LCA2MTYxMiwgNjE2MTYsIDYxNjIwLCA2MTYyNCwgCisgICAgNjE2MjksIDYxNjM2LCA2MTY0MCwgNjE2NDQsIDYxNjQ4LCA2MTY1MiwgNjE2NTYsIDYxNjYwLCA2MTY2NCwgNjE2NjgsIAorICAgIDYxNjcyLCA2MTY3NiwgNjE2ODAsIDYxNjg0LCA2MTY5MSwgNjE2OTUsIDYxNzAxLCA2MTcwNSwgNjE3MDksIDYxNzEzLCAKKyAgICA2MTcxNywgNjE3MjEsIDYxNzI0LCA2MTcyOCwgNjE3MzIsIDYxNzM2LCA2MTc0MCwgNjE3NDQsIDYxNzQ4LCA2MTc1MiwgCisgICAgNjE3NTYsIDYxNzYwLCA2MTc2NCwgNjE3NjgsIDYxNzcyLCA2MTc3NiwgNjE3ODAsIDYxNzg0LCA2MTc4OCwgNjE3OTIsIAorICAgIDYxNzk2LCA2MTgwMCwgNjE4MDQsIDYxODA4LCA2MTgxMiwgNjE4MTYsIDYxODIwLCA2MTgyNCwgNjE4MjgsIDYxODMyLCAKKyAgICA2MTgzNiwgNjE4NDAsIDYxODQ0LCA2MTg0OCwgNjE4NTIsIDYxODU4LCA2MTg2MiwgNjE4NjYsIDYxODcwLCA2MTg3NCwgCisgICAgNjE4NzgsIDYxODgyLCA2MTg4NiwgNjE4OTAsIDYxODk0LCA2MTg5OCwgNjE5MDIsIDYxOTA2LCA2MTkxMCwgNjE5MTQsIAorICAgIDYxOTE4LCA2MTkyMiwgNjE5MjYsIDYxOTMwLCA2MTkzNCwgNjE5MzgsIDYxOTQyLCA2MTk0NiwgNjE5NTAsIDYxOTU0LCAKKyAgICA2MTk1OCwgNjE5NjIsIDYxOTY2LCA2MTk3NCwgNjE5NzgsIDYxOTgyLCA2MTk4NiwgNjE5OTAsIDYxOTk0LCA2MjAwMCwgCisgICAgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIDYyMDIwLCA2MjAyNCwgNjIwMjgsIDYyMDMyLCA2MjAzNiwgNjIwNDAsIAorICAgIDYyMDQ0LCA2MjA0OCwgNjIwNTIsIDYyMDU4LCA2MjA2MiwgNjIwNjYsIDYyMDcwLCA2MjA3NCwgNjIwNzgsIDYyMDgyLCAKKyAgICA2MjA4NiwgNjIwOTAsIDYyMDk0LCA2MjA5OCwgNjIxMDIsIDYyMTA2LCA2MjExMCwgNjIxMTQsIDYyMTE4LCA2MjEyMiwgCisgICAgNjIxMjYsIDYyMTMwLCA2MjEzNCwgNjIxMzgsIDYyMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjE0NiwgNjIxNTUsIDYyMTYzLCA2MjE3NCwgNjIxODQsIAorICAgIDYyMTkyLCA2MjIwMSwgNjIyMTAsIDYyMjIwLCA2MjIzMiwgNjIyNDQsIDYyMjU2LCAwLCAwLCAwLCAwLCA2MjI2MiwgCisgICAgNjIyNjUsIDYyMjY4LCA2MjI3MywgNjIyNzYsIDYyMjgzLCA2MjI4NywgNjIyOTEsIDYyMjk1LCA2MjI5OSwgNjIzMDMsIAorICAgIDYyMzA4LCA2MjMxMywgNjIzMTcsIDYyMzIxLCA2MjMyNiwgNjIzMzEsIDYyMzM2LCA2MjM0MSwgNjIzNDQsIDYyMzQ3LCAKKyAgICA2MjM1MywgNjIzNTksIDYyMzY0LCA2MjM2OSwgNjIzNzYsIDYyMzgzLCA2MjM4NywgNjIzOTEsIDYyMzk1LCA2MjQwMywgCisgICAgNjI0MDksIDYyNDE2LCA2MjQyMSwgNjI0MjYsIDYyNDMxLCA2MjQzNiwgNjI0NDEsIDYyNDQ2LCA2MjQ1MSwgNjI0NTcsIAorICAgIDYyNDYyLCA2MjQ2OCwgNjI0NzMsIDYyNDc4LCA2MjQ4MywgNjI0ODgsIDYyNDk0LCA2MjQ5OSwgNjI1MDMsIDYyNTA5LCAKKyAgICA2MjUyMCwgNjI1MzAsIDYyNTQ1LCA2MjU1NSwgNjI1NTksIDYyNTY5LCA2MjU3NSwgNjI1ODEsIDYyNTg3LCA2MjU5MiwgCisgICAgNjI1OTUsIDYyNjAwLCA2MjYwNCwgMCwgNjI2MTAsIDYyNjE0LCA2MjYxNywgNjI2MjEsIDYyNjI0LCA2MjYyOCwgNjI2MzEsIAorICAgIDYyNjM1LCA2MjYzOCwgNjI2NDIsIDYyNjQ1LCA2MjY0OCwgNjI2NTIsIDYyNjU2LCA2MjY2MCwgNjI2NjQsIDYyNjY4LCAKKyAgICA2MjY3MiwgNjI2NzYsIDYyNjgwLCA2MjY4NCwgNjI2ODgsIDYyNjkyLCA2MjY5NiwgNjI3MDAsIDYyNzA0LCA2MjcwOCwgCisgICAgNjI3MTIsIDYyNzE2LCA2MjcyMCwgNjI3MjQsIDYyNzI4LCA2MjczMiwgNjI3MzYsIDYyNzQwLCA2Mjc0NSwgNjI3NDksIAorICAgIDYyNzUzLCA2Mjc1NywgNjI3NjEsIDYyNzY0LCA2Mjc2OCwgNjI3NzEsIDYyNzc1LCA2Mjc3OSwgNjI3ODMsIDYyNzg3LCAKKyAgICA2Mjc5MCwgNjI3OTQsIDYyNzk3LCA2MjgwMSwgNjI4MDUsIDYyODA5LCA2MjgxMywgNjI4MTcsIDYyODIxLCA2MjgyNSwgCisgICAgNjI4MjksIDYyODMzLCA2MjgzNywgNjI4NDEsIDYyODQ1LCA2Mjg0OCwgNjI4NTIsIDYyODU2LCA2Mjg2MCwgNjI4NjQsIAorICAgIDYyODY4LCA2Mjg3MSwgNjI4NzYsIDYyODgwLCA2Mjg4NSwgNjI4ODksIDYyODkzLCA2Mjg5NywgNjI5MDEsIDYyOTA1LCAKKyAgICA2MjkwOSwgNjI5MTQsIDYyOTE4LCA2MjkyMiwgNjI5MjYsIDYyOTMwLCA2MjkzNCwgNjI5MzgsIDYyOTQyLCAwLCAwLCAKKyAgICA2Mjk0NywgNjI5NTUsIDYyOTYzLCA2Mjk3MCwgNjI5NzcsIDYyOTgxLCA2Mjk4NywgNjI5OTIsIDYyOTk3LCA2MzAwMSwgCisgICAgNjMwMDQsIDYzMDA4LCA2MzAxMSwgNjMwMTUsIDYzMDE4LCA2MzAyMiwgNjMwMjUsIDYzMDI5LCA2MzAzMiwgNjMwMzUsIAorICAgIDYzMDM5LCA2MzA0MywgNjMwNDcsIDYzMDUxLCA2MzA1NSwgNjMwNTksIDYzMDYzLCA2MzA2NywgNjMwNzEsIDYzMDc1LCAKKyAgICA2MzA3OSwgNjMwODMsIDYzMDg3LCA2MzA5MSwgNjMwOTUsIDYzMDk5LCA2MzEwMywgNjMxMDcsIDYzMTExLCA2MzExNSwgCisgICAgNjMxMTksIDYzMTIzLCA2MzEyNywgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MSwgNjMxNTUsIAorICAgIDYzMTU4LCA2MzE2MiwgNjMxNjYsIDYzMTcwLCA2MzE3NCwgNjMxNzcsIDYzMTgxLCA2MzE4NCwgNjMxODgsIDYzMTkyLCAKKyAgICA2MzE5NiwgNjMyMDAsIDYzMjA0LCA2MzIwOCwgNjMyMTIsIDYzMjE2LCA2MzIyMCwgNjMyMjQsIDYzMjI4LCA2MzIzMiwgCisgICAgNjMyMzUsIDYzMjM5LCA2MzI0MywgNjMyNDcsIDYzMjUxLCA2MzI1NSwgNjMyNTgsIDYzMjYzLCA2MzI2NywgNjMyNzIsIAorICAgIDYzMjc2LCA2MzI4MCwgNjMyODQsIDYzMjg4LCA2MzI5MiwgNjMyOTYsIDYzMzAxLCA2MzMwNSwgNjMzMDksIDYzMzEzLCAKKyAgICA2MzMxNywgNjMzMjEsIDYzMzI1LCA2MzMyOSwgNjMzMzQsIDYzMzM4LCA2MzM0MiwgNjMzNDYsIDYzMzUwLCA2MzM1NCwgCisgICAgNjMzNjEsIDYzMzY1LCA2MzM3MSwgMCwgMCwgMCwgMCwgMCwgNjMzNzYsIDYzMzgxLCA2MzM4NiwgNjMzOTEsIDYzMzk2LCAKKyAgICA2MzQwMSwgNjM0MDYsIDYzNDExLCA2MzQxNSwgNjM0MjAsIDYzNDI1LCA2MzQzMCwgNjM0MzUsIDYzNDQwLCA2MzQ0NSwgCisgICAgNjM0NTAsIDYzNDU1LCA2MzQ2MCwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDgzLCA2MzQ4NywgNjM0OTEsIAorICAgIDYzNDk2LCA2MzUwMSwgNjM1MDYsIDYzNTExLCA2MzUxNiwgNjM1MjEsIDYzNTI2LCA2MzUzMSwgNjM1MzYsIDYzNTQxLCAKKyAgICA2MzU0NSwgNjM1NDksIDYzNTU0LCA2MzU1OSwgNjM1NjQsIDYzNTY5LCAwLCAwLCAwLCA2MzU3NCwgNjM1NzgsIDYzNTgyLCAKKyAgICA2MzU4NiwgNjM1OTAsIDYzNTk0LCA2MzU5OCwgNjM2MDIsIDYzNjA2LCA2MzYxMCwgNjM2MTQsIDYzNjE4LCA2MzYyMiwgCisgICAgNjM2MjYsIDYzNjMwLCA2MzYzNCwgNjM2MzgsIDYzNjQyLCA2MzY0NiwgNjM2NTAsIDYzNjU0LCA2MzY1OCwgNjM2NjIsIAorICAgIDYzNjY2LCA2MzY3MCwgNjM2NzQsIDYzNjc4LCA2MzY4MiwgNjM2ODYsIDYzNjkwLCA2MzY5NCwgNjM2OTcsIDYzNzAxLCAKKyAgICA2MzcwNCwgNjM3MDgsIDYzNzEyLCA2MzcxNSwgNjM3MTksIDYzNzIzLCA2MzcyNiwgNjM3MzAsIDYzNzM0LCA2MzczOCwgCisgICAgNjM3NDIsIDYzNzQ1LCA2Mzc0OSwgNjM3NTMsIDYzNzU3LCA2Mzc2MSwgNjM3NjUsIDYzNzY5LCA2Mzc3MiwgNjM3NzUsIAorICAgIDYzNzc5LCA2Mzc4MywgNjM3ODcsIDYzNzkxLCA2Mzc5NSwgNjM3OTksIDYzODAzLCA2MzgwNywgNjM4MTEsIDYzODE1LCAKKyAgICA2MzgxOSwgNjM4MjMsIDYzODI3LCA2MzgzMSwgNjM4MzUsIDYzODM5LCA2Mzg0MywgNjM4NDcsIDYzODUxLCA2Mzg1NSwgCisgICAgNjM4NTksIDYzODYzLCA2Mzg2NywgNjM4NzEsIDYzODc1LCA2Mzg3OSwgNjM4ODMsIDYzODg3LCA2Mzg5MSwgNjM4OTUsIAorICAgIDYzODk5LCA2MzkwMywgNjM5MDcsIDYzOTExLCA2MzkxNSwgNjM5MTksIDYzOTIzLCA2MzkyNywgNjM5MzEsIDYzOTM1LCAKKyAgICA2MzkzOSwgMCwgNjM5NDMsIDYzOTQ5LCA2Mzk1NSwgNjM5NjAsIDYzOTY1LCA2Mzk3MCwgNjM5NzYsIDYzOTgyLCA2Mzk4NywgCisgICAgNjM5OTMsIDYzOTk5LCA2NDAwNSwgNjQwMTEsIDY0MDE3LCA2NDAyMywgNjQwMjksIDY0MDM1LCA2NDA0MCwgNjQwNDUsIAorICAgIDY0MDUwLCA2NDA1NSwgNjQwNjAsIDY0MDY1LCA2NDA3MCwgNjQwNzUsIDY0MDgwLCA2NDA4NSwgNjQwOTAsIDY0MDk1LCAKKyAgICA2NDEwMCwgNjQxMDUsIDY0MTEwLCA2NDExNSwgNjQxMjAsIDY0MTI1LCA2NDEzMCwgNjQxMzUsIDY0MTQxLCA2NDE0NywgCisgICAgNjQxNTMsIDY0MTU5LCA2NDE2NCwgNjQxNjksIDAsIDAsIDAsIDAsIDAsIDY0MTc0LCA2NDE3OSwgNjQxODQsIDY0MTg5LCAKKyAgICA2NDE5NCwgNjQxOTksIDY0MjA0LCA2NDIwOSwgNjQyMTQsIDY0MjE5LCA2NDIyNCwgNjQyMjksIDY0MjM0LCA2NDIzOSwgCisgICAgNjQyNDQsIDY0MjQ5LCA2NDI1NCwgNjQyNTksIDY0MjY0LCA2NDI2OSwgNjQyNzQsIDY0Mjc5LCA2NDI4NCwgNjQyODksIAorICAgIDY0Mjk0LCA2NDI5OSwgNjQzMDQsIDY0MzA5LCA2NDMxNCwgNjQzMTksIDY0MzI0LCA2NDMyOSwgNjQzMzQsIDY0MzM5LCAKKyAgICA2NDM0NCwgNjQzNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MzU0LCA2NDM1OSwgNjQzNjQsIAorICAgIDY0MzY5LCA2NDM3MywgNjQzNzgsIDY0MzgyLCA2NDM4NywgNjQzOTIsIDY0Mzk3LCA2NDQwMiwgNjQ0MDcsIDY0NDEyLCAKKyAgICA2NDQxNywgNjQ0MjIsIDY0NDI3LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIDY0NDUyLCA2NDQ1NiwgCisgICAgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCA2NDQ5MywgNjQ0OTgsIAorICAgIDY0NTAzLCA2NDUwOCwgNjQ1MTMsIDY0NTE4LCA2NDUyMywgNjQ1MjgsIDY0NTMzLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCAKKyAgICA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OSwgMCwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgCisgICAgNjQ2MDAsIDY0NjA1LCA2NDYwOSwgNjQ2MTQsIDY0NjE5LCA2NDYyNCwgNjQ2MjksIDY0NjM0LCA2NDYzOSwgNjQ2NDQsIAorICAgIDY0NjQ5LCA2NDY1NCwgNjQ2NTksIDY0NjY0LCA2NDY2OSwgNjQ2NzQsIDY0Njc5LCA2NDY4NCwgNjQ2ODksIDY0Njk0LCAKKyAgICA2NDY5OSwgNjQ3MDQsIDY0NzA5LCA2NDcxNCwgNjQ3MTksIDY0NzI0LCA2NDcyOSwgNjQ3MzQsIDY0NzM5LCA2NDc0NCwgCisgICAgNjQ3NDksIDY0NzU0LCA2NDc1OSwgNjQ3NjQsIDY0NzY5LCA2NDc3OCwgNjQ3ODcsIDY0Nzk2LCA2NDgwNSwgNjQ4MTQsIAorICAgIDY0ODIzLCA2NDgzMiwgNjQ4NDEsIDY0ODQ0LCA2NDg0OSwgNjQ4NTQsIDY0ODU5LCA2NDg2NCwgNjQ4NjksIDY0ODc0LCAKKyAgICA2NDg4MCwgNjQ4ODUsIDY0ODkxLCA2NDg5NSwgNjQ5MDAsIDY0OTA1LCA2NDkxMCwgNjQ5MTUsIDY0OTIwLCA2NDkyNCwgCisgICAgNjQ5MjgsIDY0OTMyLCA2NDkzNiwgNjQ5NDAsIDY0OTQ0LCA2NDk0OCwgNjQ5NTIsIDY0OTU2LCA2NDk2MCwgNjQ5NjQsIAorICAgIDY0OTY4LCA2NDk3MiwgNjQ5NzYsIDY0OTgxLCA2NDk4NiwgNjQ5OTEsIDY0OTk2LCA2NTAwMSwgNjUwMDYsIDY1MDExLCAKKyAgICA2NTAxNiwgNjUwMjEsIDY1MDI2LCA2NTAzMSwgNjUwMzYsIDY1MDQxLCA2NTA0NiwgNjUwNTIsIDY1MDU4LCA2NTA2MywgCisgICAgNjUwNjgsIDY1MDcyLCA2NTA3NiwgNjUwODAsIDY1MDg0LCA2NTA4OCwgNjUwOTIsIDY1MDk3LCA2NTEwMSwgNjUxMDYsIAorICAgIDY1MTExLCA2NTExNiwgNjUxMjEsIDY1MTI2LCA2NTEzMSwgNjUxMzYsIDY1MTQxLCA2NTE0NiwgNjUxNTEsIDY1MTU2LCAKKyAgICA2NTE2MSwgNjUxNjYsIDY1MTcxLCA2NTE3NiwgNjUxODEsIDY1MTg2LCA2NTE5MSwgNjUxOTYsIDY1MjAxLCA2NTIwNiwgCisgICAgNjUyMTEsIDY1MjE2LCA2NTIyMSwgNjUyMjYsIDY1MjMxLCA2NTIzNiwgNjUyNDEsIDY1MjQ2LCA2NTI1MSwgNjUyNTYsIAorICAgIDY1MjYxLCA2NTI2NiwgNjUyNzEsIDY1Mjc2LCA2NTI4MSwgNjUyODYsIDY1MjkxLCA2NTI5NiwgNjUzMDEsIDY1MzA2LCAKKyAgICA2NTMxMSwgNjUzMTcsIDY1MzIyLCA2NTMyOCwgNjUzMzIsIDY1MzM3LCA2NTM0MiwgNjUzNDcsIDY1MzUyLCA2NTM1NywgCisgICAgNjUzNjIsIDY1MzY4LCA2NTM3MywgNjUzNzksIDY1MzgzLCA2NTM5MCwgNjUzOTcsIDY1NDA0LCA2NTQxMSwgNjU0MTgsIAorICAgIDY1NDI1LCA2NTQzMiwgNjU0MzksIDY1NDQ2LCA2NTQ1MywgNjU0NjAsIDY1NDY3LCA2NTQ3MCwgNjU0NzMsIDY1NDc2LCAKKyAgICA2NTQ4MSwgNjU0ODQsIDY1NDg3LCA2NTQ5MCwgNjU0OTMsIDY1NDk2LCA2NTQ5OSwgNjU1MDMsIDY1NTA3LCA2NTUxMSwgCisgICAgNjU1MTUsIDY1NTE5LCA2NTUyMywgNjU1MjcsIDY1NTMxLCA2NTUzNSwgNjU1MzksIDY1NTQzLCA2NTU0NywgNjU1NTEsIAorICAgIDY1NTU0LCA2NTU1NywgNjU1NjEsIDY1NTY1LCA2NTU2OSwgNjU1NzMsIDY1NTc2LCA2NTU4MCwgNjU1ODQsIDY1NTg4LCAKKyAgICA2NTU5MiwgNjU1OTUsIDY1NTk5LCA2NTYwMywgNjU2MDcsIDY1NjExLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCA2NTYyNiwgCisgICAgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIDAsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAorICAgIDY1NjY3LCA2NTY3MCwgNjU2NzMsIDY1Njc2LCA2NTY3OSwgNjU2ODIsIDY1Njg1LCA2NTY4OCwgNjU2OTEsIDY1Njk0LCAKKyAgICA2NTY5NywgNjU3MDAsIDY1NzAzLCA2NTcwNiwgNjU3MDksIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgCisgICAgNjU3MjcsIDY1NzMwLCA2NTczMywgNjU3MzYsIDY1NzM5LCA2NTc0MiwgNjU3NDUsIDY1NzQ4LCA2NTc1MSwgNjU3NTQsIAorICAgIDY1NzU3LCA2NTc2MCwgNjU3NjMsIDY1NzY2LCA2NTc2OSwgNjU3NzIsIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCAKKyAgICA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCA2NTgwNSwgNjU4MDgsIDY1ODExLCA2NTgxNCwgCisgICAgNjU4MTcsIDY1ODIwLCA2NTgyMywgNjU4MjYsIDY1ODI5LCA2NTgzMiwgNjU4MzUsIDY1ODM4LCA2NTg0MSwgNjU4NDQsIAorICAgIDY1ODQ3LCA2NTg1MCwgNjU4NTMsIDY1ODU2LCA2NTg1OSwgNjU4NjIsIDY1ODY1LCA2NTg2OCwgNjU4NzEsIDY1ODc0LCAKKyAgICA2NTg3NywgNjU4ODAsIDY1ODgzLCA2NTg4NiwgNjU4ODksIDY1ODkyLCA2NTg5NSwgNjU4OTgsIDY1OTAxLCA2NTkwNCwgCisgICAgNjU5MDcsIDY1OTEwLCA2NTkxMywgNjU5MTYsIDY1OTE5LCA2NTkyMiwgNjU5MzEsIDY1OTM5LCA2NTk0NywgNjU5NTUsIAorICAgIDY1OTYzLCA2NTk3MSwgNjU5NzksIDY1OTg4LCA2NTk5NiwgNjYwMDUsIDY2MDE0LCA2NjAyMywgNjYwMzIsIDY2MDQxLCAKKyAgICA2NjA1MCwgNjYwNTksIDY2MDY4LCA2NjA3NywgNjYwODYsIDY2MDk1LCA2NjEwNCwgNjYxMTMsIDY2MTIyLCA2NjEzMSwgCisgICAgNjYxNDAsIDY2MTQzLCA2NjE0NiwgNjYxNDksIDY2MTUxLCA2NjE1NCwgNjYxNTcsIDY2MTYwLCA2NjE2NSwgNjYxNzAsIAorICAgIDY2MTczLCA2NjE4MCwgNjYxODcsIDY2MTk0LCA2NjIwMSwgNjYyMDQsIDY2MjA5LCA2NjIxMSwgNjYyMTUsIDY2MjE3LCAKKyAgICA2NjIxOSwgNjYyMjIsIDY2MjI1LCA2NjIyOCwgNjYyMzEsIDY2MjM0LCA2NjIzNywgNjYyNDAsIDY2MjQ1LCA2NjI1MCwgCisgICAgNjYyNTMsIDY2MjU2LCA2NjI1OSwgNjYyNjIsIDY2MjY1LCA2NjI2OCwgNjYyNzEsIDY2Mjc1LCA2NjI3OCwgNjYyODEsIAorICAgIDY2Mjg0LCA2NjI4NywgNjYyOTAsIDY2Mjk1LCA2NjI5OCwgNjYzMDEsIDY2MzA0LCA2NjMwOSwgNjYzMTQsIDY2MzE5LCAKKyAgICA2NjMyNCwgNjYzMjksIDY2MzM0LCA2NjMzOSwgNjYzNDQsIDY2MzUwLCA2NjM1OCwgNjYzNjAsIDY2MzYzLCA2NjM2NiwgCisgICAgNjYzNjksIDY2MzcyLCA2NjM3OCwgNjYzODYsIDY2Mzg5LCA2NjM5MiwgNjYzOTcsIDY2NDAwLCA2NjQwMywgNjY0MDYsIAorICAgIDY2NDExLCA2NjQxNCwgNjY0MTcsIDY2NDIyLCA2NjQyNSwgNjY0MjgsIDY2NDMzLCA2NjQzNiwgNjY0MzksIDY2NDQ0LCAKKyAgICA2NjQ0OSwgNjY0NTQsIDY2NDU3LCA2NjQ2MCwgNjY0NjMsIDY2NDY2LCA2NjQ3MiwgNjY0NzUsIDY2NDc4LCA2NjQ4MSwgCisgICAgNjY0ODMsIDY2NDg2LCA2NjQ4OSwgNjY0OTIsIDY2NDk3LCA2NjUwMCwgNjY1MDMsIDY2NTA2LCA2NjUwOSwgNjY1MTIsIAorICAgIDY2NTE3LCA2NjUyMCwgNjY1MjMsIDY2NTI2LCA2NjUyOSwgNjY1MzIsIDY2NTM1LCA2NjUzOCwgNjY1NDEsIDY2NTQ0LCAKKyAgICA2NjU1MCwgNjY1NTUsIDY2NTYzLCA2NjU3MSwgNjY1NzksIDY2NTg3LCA2NjU5NSwgNjY2MDMsIDY2NjEyLCA2NjYyMCwgCisgICAgNjY2MjksIDY2NjM4LCA2NjY0NywgNjY2NTYsIDY2NjY1LCA2NjY3NCwgNjY2ODMsIDY2NjkyLCA2NjcwMSwgNjY3MTAsIAorICAgIDY2NzE5LCA2NjcyOCwgNjY3MzcsIDY2NzQ2LCA2Njc1NSwgNjY3NjQsIDY2NzczLCA2Njc4MiwgNjY3OTEsIDY2ODAwLCAKKyAgICA2NjgwOSwgNjY4MTgsIDY2ODI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE3OTk0LDMwNSArMTkxMTMsMzA1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjYwODgsIDY2MDk3LCA2NjEwNiwgNjYxMTcsIDY2MTI0LCA2NjEyOSwgNjYxMzQsIDY2MTQxLCA2NjE0OCwgNjYxNTQsIAotICAgIDY2MTU5LCA2NjE2NCwgNjYxNjksIDY2MTc0LCA2NjE4MSwgNjYxODYsIDY2MTkxLCA2NjE5NiwgNjYyMDcsIDY2MjEyLCAKLSAgICA2NjIxNywgNjYyMjQsIDY2MjI5LCA2NjIzNiwgNjYyNDEsIDY2MjQ2LCA2NjI1MywgNjYyNjAsIDY2MjY3LCA2NjI3NiwgCi0gICAgNjYyODUsIDY2MjkwLCA2NjI5NSwgNjYzMDAsIDY2MzA3LCA2NjMxMiwgNjYzMjIsIDY2MzI5LCA2NjMzNCwgNjYzMzksIAotICAgIDY2MzQ0LCA2NjM0OSwgNjYzNTQsIDY2MzU5LCA2NjM2OCwgNjYzNzUsIDY2MzgyLCA2NjM4NywgNjYzOTQsIDY2Mzk5LCAKLSAgICA2NjQwNiwgNjY0MTUsIDY2NDI2LCA2NjQzMSwgNjY0NDAsIDY2NDQ1LCA2NjQ1MiwgNjY0NjEsIDY2NDcwLCA2NjQ3NSwgCi0gICAgNjY0ODAsIDY2NDg3LCA2NjQ5MywgNjY1MDAsIDY2NTA3LCA2NjUxMSwgNjY1MTUsIDY2NTE4LCA2NjUyMiwgNjY1MjYsIAotICAgIDY2NTMwLCA2NjUzNCwgNjY1MzgsIDY2NTQyLCA2NjU0NiwgNjY1NDksIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY1LCAKLSAgICA2NjU2OSwgNjY1NzMsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg3LCA2NjU5MSwgNjY1OTUsIDY2NTk5LCA2NjYwMywgCi0gICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAotICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKLSAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCi0gICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAotICAgIDY2NzY2LCA2Njc3MCwgNjY3NzQsIDY2Nzc4LCA2Njc4MiwgNjY3ODYsIDY2NzkwLCA2Njc5NCwgNjY3OTgsIDY2ODAyLCAKLSAgICA2NjgwNiwgNjY4MTAsIDY2ODE0LCA2NjgxOCwgNjY4MjIsIDY2ODI2LCA2NjgzMCwgNjY4MzQsIDY2ODM4LCA2Njg0MiwgCi0gICAgNjY4NDYsIDY2ODUwLCA2Njg1NCwgNjY4NTgsIDY2ODYyLCA2Njg2NiwgNjY4NzAsIDY2ODc0LCA2Njg3OCwgNjY4ODIsIAotICAgIDY2ODg2LCA2Njg5MCwgNjY4OTQsIDY2ODk4LCA2NjkwMiwgNjY5MDYsIDY2OTEwLCA2NjkxNCwgNjY5MTgsIDY2OTIyLCAKLSAgICA2NjkyNiwgNjY5MzAsIDY2OTM0LCA2NjkzOCwgNjY5NDIsIDY2OTQ2LCA2Njk1MCwgNjY5NTQsIDY2OTU4LCA2Njk2MiwgCi0gICAgNjY5NjYsIDY2OTcwLCA2Njk3NCwgNjY5NzgsIDY2OTgyLCA2Njk4NiwgNjY5OTAsIDY2OTk0LCA2Njk5OCwgNjcwMDIsIAotICAgIDY3MDA2LCA2NzAxMCwgNjcwMTQsIDY3MDE4LCA2NzAyMiwgNjcwMjYsIDY3MDMwLCA2NzAzNCwgNjcwMzgsIDY3MDQyLCAKLSAgICA2NzA0NiwgNjcwNTAsIDY3MDU0LCA2NzA1OCwgNjcwNjIsIDY3MDY2LCA2NzA3MCwgNjcwNzQsIDY3MDc4LCA2NzA4MiwgCi0gICAgNjcwODYsIDY3MDkwLCA2NzA5NCwgNjcwOTgsIDY3MTAyLCA2NzEwNiwgNjcxMTAsIDY3MTE0LCA2NzExOCwgNjcxMjIsIAotICAgIDY3MTI2LCA2NzEzMCwgNjcxMzQsIDY3MTM4LCA2NzE0MiwgNjcxNDYsIDY3MTUwLCA2NzE1NCwgNjcxNTgsIDY3MTYyLCAKLSAgICA2NzE2NiwgNjcxNzAsIDY3MTc0LCA2NzE3OCwgNjcxODIsIDY3MTg2LCA2NzE5MCwgNjcxOTQsIDY3MTk4LCA2NzIwMiwgCi0gICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjM0LCA2NzIzNywgNjcyNDEsIAotICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKLSAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCi0gICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAotICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKLSAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCi0gICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAotICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKLSAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCi0gICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAotICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKLSAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCi0gICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAwLCA2NzcwNCwgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIAotICAgIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCAKLSAgICA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgCi0gICAgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIAotICAgIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCAKLSAgICA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgCi0gICAgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIAotICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKLSAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCi0gICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAotICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKLSAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCi0gICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAotICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKLSAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCi0gICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAotICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKLSAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCi0gICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAotICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKLSAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCi0gICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NSwgNjg1NTksIAotICAgIDY4NTYzLCA2ODU2NywgNjg1NzEsIDY4NTc1LCA2ODU3OSwgNjg1ODMsIDY4NTg3LCA2ODU5MSwgNjg1OTUsIDY4NTk5LCAKLSAgICA2ODYwMywgNjg2MDcsIDY4NjExLCA2ODYxNSwgNjg2MTksIDY4NjIzLCA2ODYyNywgNjg2MzEsIDY4NjM1LCA2ODYzOSwgCi0gICAgNjg2NDMsIDY4NjQ3LCA2ODY1MSwgNjg2NTUsIDY4NjU5LCA2ODY2MywgNjg2NjcsIDY4NjcxLCA2ODY3NSwgNjg2NzksIAotICAgIDY4NjgzLCA2ODY4NywgNjg2OTEsIDY4Njk1LCA2ODY5OSwgNjg3MDMsIDY4NzA3LCA2ODcxMSwgNjg3MTUsIDY4NzE5LCAKLSAgICA2ODcyMywgNjg3MjcsIDY4NzMxLCA2ODczNSwgNjg3MzksIDY4NzQzLCA2ODc0NywgNjg3NTEsIDY4NzU1LCA2ODc1OSwgCi0gICAgNjg3NjMsIDY4NzY3LCA2ODc3MSwgNjg3NzUsIDY4Nzc5LCA2ODc4MywgNjg3ODcsIDY4NzkxLCA2ODc5NSwgNjg3OTksIAotICAgIDY4ODAzLCA2ODgwNywgNjg4MTEsIDY4ODE1LCA2ODgxOSwgNjg4MjMsIDY4ODI3LCA2ODgzMSwgNjg4MzUsIDY4ODM5LCAKLSAgICA2ODg0MywgNjg4NDcsIDY4ODUxLCA2ODg1NSwgNjg4NTksIDY4ODYzLCA2ODg2NywgNjg4NzEsIDY4ODc1LCA2ODg3OSwgCi0gICAgNjg4ODMsIDY4ODg3LCA2ODg5MSwgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDcsIDY4OTExLCA2ODkxNSwgNjg5MTksIAotICAgIDY4OTIzLCA2ODkyNywgNjg5MzEsIDY4OTM1LCA2ODkzOSwgNjg5NDMsIDY4OTQ3LCA2ODk1MSwgNjg5NTUsIDY4OTU5LCAKLSAgICA2ODk2MywgNjg5NjcsIDY4OTcxLCA2ODk3NSwgNjg5NzksIDY4OTgzLCA2ODk4NywgNjg5OTEsIDY4OTk1LCA2ODk5OSwgCi0gICAgNjkwMDMsIDY5MDA3LCA2OTAxMCwgNjkwMTQsIDY5MDE4LCA2OTAyMiwgNjkwMjYsIDY5MDMwLCA2OTAzNCwgNjkwMzgsIAotICAgIDY5MDQyLCA2OTA0NiwgNjkwNTAsIDY5MDU0LCA2OTA1OCwgNjkwNjIsIDY5MDY2LCA2OTA3MCwgNjkwNzQsIDY5MDc4LCAKLSAgICA2OTA4MiwgNjkwODYsIDY5MDkwLCA2OTA5NCwgNjkwOTgsIDY5MTAyLCA2OTEwNiwgNjkxMTAsIDY5MTE0LCA2OTExOCwgCi0gICAgNjkxMjIsIDY5MTI2LCA2OTEzMCwgNjkxMzQsIDY5MTM4LCA2OTE0MiwgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIAotICAgIDY5MTYyLCA2OTE2NiwgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCAKLSAgICA2OTIwMiwgNjkyMDYsIDY5MjEwLCA2OTIxNCwgNjkyMTgsIDY5MjIyLCA2OTIyNiwgNjkyMzAsIDY5MjM0LCA2OTIzOCwgCi0gICAgNjkyNDIsIDY5MjQ2LCA2OTI1MCwgNjkyNTQsIDY5MjU4LCA2OTI2MiwgNjkyNjYsIDY5MjcwLCA2OTI3NCwgNjkyNzgsIAotICAgIDY5MjgyLCA2OTI4NiwgNjkyOTAsIDY5Mjk0LCA2OTI5OCwgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzE4LCAKLSAgICA2OTMyMiwgNjkzMjYsIDY5MzMwLCA2OTMzNCwgNjkzMzgsIDY5MzQyLCA2OTM0NiwgNjkzNTAsIDY5MzU0LCA2OTM1OCwgCi0gICAgNjkzNjIsIDY5MzY2LCA2OTM3MCwgNjkzNzQsIDY5Mzc4LCA2OTM4MiwgNjkzODYsIDY5MzkwLCA2OTM5NCwgNjkzOTgsIAotICAgIDY5NDAyLCA2OTQwNiwgNjk0MTAsIDY5NDE0LCA2OTQxOCwgNjk0MjIsIDY5NDI2LCA2OTQzMCwgNjk0MzQsIDY5NDM4LCAKLSAgICA2OTQ0MiwgNjk0NDYsIDY5NDUwLCA2OTQ1NCwgNjk0NTgsIDY5NDYyLCA2OTQ2NiwgNjk0NzAsIDY5NDc0LCA2OTQ3OCwgCi0gICAgNjk0ODIsIDY5NDg2LCA2OTQ5MCwgNjk0OTQsIDY5NDk4LCA2OTUwMiwgNjk1MDYsIDY5NTEwLCA2OTUxNCwgNjk1MTgsIAotICAgIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTM0LCA2OTUzOCwgNjk1NDIsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCAKLSAgICA2OTU2MiwgNjk1NjYsIDY5NTcwLCA2OTU3NCwgNjk1NzgsIDY5NTgyLCA2OTU4NiwgNjk1OTAsIDY5NTk0LCA2OTU5OCwgCi0gICAgNjk2MDIsIDY5NjA2LCA2OTYxMCwgNjk2MTMsIDY5NjE3LCA2OTYyMSwgNjk2MjUsIDY5NjI5LCA2OTYzMywgNjk2MzcsIAotICAgIDY5NjQxLCA2OTY0NSwgNjk2NDksIDY5NjUzLCA2OTY1NywgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc3LCAKLSAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5MywgNjk2OTcsIDY5NzAxLCA2OTcwNSwgNjk3MDksIDY5NzEzLCA2OTcxNywgCi0gICAgNjk3MjEsIDY5NzI1LCA2OTcyOSwgNjk3MzMsIDY5NzM3LCA2OTc0MSwgNjk3NDUsIDY5NzQ5LCA2OTc1MywgNjk3NTcsIAotICAgIDY5NzYxLCA2OTc2NSwgNjk3NjksIDY5NzczLCA2OTc3NywgNjk3ODEsIDY5Nzg1LCA2OTc4OSwgNjk3OTMsIDY5Nzk3LCAKLSAgICA2OTgwMSwgNjk4MDUsIDY5ODA5LCA2OTgxMywgNjk4MTcsIDY5ODIxLCA2OTgyNSwgNjk4MjksIDY5ODMzLCA2OTgzNywgCi0gICAgNjk4NDEsIDY5ODQ1LCA2OTg0OSwgNjk4NTMsIDY5ODU3LCA2OTg2MSwgNjk4NjUsIDY5ODY5LCA2OTg3MywgNjk4NzcsIAotICAgIDY5ODgxLCA2OTg4NSwgNjk4ODksIDY5ODkzLCA2OTg5NywgNjk5MDEsIDY5OTA1LCA2OTkwOSwgNjk5MTMsIDY5OTE3LCAKLSAgICA2OTkyMSwgNjk5MjUsIDY5OTI5LCA2OTkzMywgNjk5MzcsIDY5OTQxLCA2OTk0NSwgNjk5NDksIDY5OTUzLCA2OTk1NywgCi0gICAgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIDY5OTg5LCA2OTk5MywgNjk5OTcsIAotICAgIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNywgNzAwMjEsIDcwMDI1LCA3MDAyOSwgNzAwMzMsIDcwMDM3LCAKLSAgICA3MDA0MSwgNzAwNDUsIDcwMDQ5LCA3MDA1MywgNzAwNTcsIDcwMDYxLCA3MDA2NSwgNzAwNjksIDcwMDczLCA3MDA3NywgCi0gICAgNzAwODEsIDcwMDg1LCA3MDA4OSwgNzAwOTMsIDcwMDk3LCA3MDEwMSwgNzAxMDUsIDcwMTA5LCA3MDExMywgNzAxMTcsIAotICAgIDcwMTIxLCA3MDEyNSwgNzAxMjksIDcwMTMzLCA3MDEzNywgNzAxNDEsIDcwMTQ1LCA3MDE0OSwgNzAxNTMsIDcwMTU3LCAKLSAgICA3MDE2MSwgNzAxNjUsIDcwMTY5LCA3MDE3MywgNzAxNzcsIDcwMTgxLCA3MDE4NSwgNzAxODksIDcwMTkzLCA3MDE5NywgCi0gICAgNzAyMDEsIDcwMjA1LCA3MDIwOSwgNzAyMTMsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCA3MDIzMywgNzAyMzcsIAotICAgIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgNzAyNzMsIDcwMjc3LCAKLSAgICA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIDcwMzEzLCA3MDMxNywgCi0gICAgNzAzMjEsIDcwMzI1LCA3MDMyOSwgNzAzMzMsIDcwMzM3LCA3MDM0MSwgNzAzNDUsIDcwMzQ5LCA3MDM1MywgNzAzNTcsIAotICAgIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCAKLSAgICA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgCi0gICAgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIAotICAgIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCAKLSAgICA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgCi0gICAgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIAotICAgIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCAKLSAgICA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgCi0gICAgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIAotICAgIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCAKLSAgICA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgCi0gICAgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIAotICAgIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCAKLSAgICA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgCi0gICAgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAotICAgIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCAKLSAgICA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgCi0gICAgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIAotICAgIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCAKLSAgICA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCAwLCAwLCAwLCAKLSAgICA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgCi0gICAgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIAotICAgIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCAKLSAgICA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgCi0gICAgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIAotICAgIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEzNzcsIAotICAgIDcxMzgyLCA3MTM4NiwgNzEzOTEsIDcxMzk2LCA3MTQwMSwgNzE0MDYsIDcxNDExLCA3MTQxNSwgNzE0MjAsIDcxNDI1LCAKLSAgICA3MTQzMCwgNzE0MzUsIDcxNDQwLCA3MTQ0NSwgNzE0NTAsIDcxNDU0LCA3MTQ1OSwgNzE0NjQsIDcxNDY5LCA3MTQ3NCwgCi0gICAgNzE0NzksIDcxNDg0LCA3MTQ4OCwgNzE0OTMsIDcxNDk4LCA3MTUwMywgNzE1MDgsIDcxNTEzLCA3MTUxNywgNzE1MjIsIAotICAgIDcxNTI2LCA3MTUzMSwgNzE1MzUsIDcxNTQwLCA3MTU0NCwgNzE1NDgsIDcxNTUyLCA3MTU1NywgNzE1NjIsIDcxNTY3LCAKLSAgICA3MTU3NSwgNzE1ODMsIDcxNTkxLCA3MTU5OSwgNzE2MDcsIDcxNjE1LCA3MTYyMSwgNzE2MjksIDcxNjMzLCA3MTYzNywgCi0gICAgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIAotICAgIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCAKLSAgICA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgCi0gICAgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc2LCA3MTc4MCwgNzE3ODQsIDcxNzg4LCA3MTc5MiwgNzE3OTYsIAotICAgIDcxODAwLCA3MTgwNCwgNzE4MDgsIDcxODEyLCA3MTgxNiwgNzE4MjAsIDcxODI0LCA3MTgyOCwgNzE4MzIsIDcxODM2LCAKLSAgICA3MTg0MCwgNzE4NDQsIDcxODQ4LCA3MTg1MiwgNzE4NTYsIDcxODYwLCA3MTg2NCwgNzE4NjgsIDcxODcyLCA3MTg3NiwgCi0gICAgNzE4ODAsIDcxODg0LCA3MTg4OCwgNzE4OTIsIDcxODk2LCA3MTkwMCwgNzE5MDQsIDcxOTA4LCA3MTkxMiwgNzE5MTYsIAotICAgIDcxOTIwLCA3MTkyMywgNzE5MjcsIDcxOTMxLCA3MTkzNCwgNzE5MzgsIDcxOTQyLCA3MTk0NiwgNzE5NDksIDcxOTUzLCAKLSAgICA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgCi0gICAgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIAotICAgIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ4LCA3MjA1MSwgNzIwNTUsIDcyMDU5LCA3MjA2MywgNzIwNjYsIDcyMDcwLCAKLSAgICA3MjA3NCwgNzIwNzgsIDcyMDgyLCA3MjA4NiwgNzIwOTAsIDcyMDk0LCA3MjA5OCwgNzIxMDIsIDcyMTA2LCA3MjExMCwgCi0gICAgNzIxMTQsIDcyMTE4LCA3MjEyMiwgNzIxMjYsIDcyMTMwLCA3MjEzNCwgNzIxMzgsIDcyMTQyLCA3MjE0NiwgNzIxNTAsIAotICAgIDcyMTU0LCA3MjE1OCwgNzIxNjIsIDcyMTY2LCA3MjE3MCwgNzIxNzQsIDcyMTc4LCA3MjE4MiwgNzIxODYsIDcyMTkwLCAKLSAgICA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNiwgNzIyMTAsIDcyMjE0LCA3MjIxOCwgNzIyMjEsIDcyMjI1LCA3MjIyOSwgCi0gICAgNzIyMzMsIDcyMjM3LCA3MjI0MSwgNzIyNDUsIDcyMjQ5LCA3MjI1MywgNzIyNTcsIDcyMjYxLCA3MjI2NSwgNzIyNjksIAotICAgIDcyMjczLCA3MjI3NywgNzIyODEsIDcyMjg1LCA3MjI4OSwgNzIyOTMsIDcyMjk3LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCAKLSAgICA3MjMxMywgNzIzMTcsIDcyMzIxLCA3MjMyNSwgNzIzMjksIDcyMzMzLCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OSwgCi0gICAgNzIzNTMsIDcyMzU3LCA3MjM2MSwgNzIzNjUsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIAotICAgIDcyMzkyLCA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjQsIDcyNDI4LCAKLSAgICA3MjQzMiwgNzI0MzUsIDcyNDM5LCA3MjQ0MywgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCi0gICAgNzI0NzEsIDcyNDc1LCA3MjQ3OSwgNzI0ODMsIDcyNDg3LCA3MjQ5MSwgNzI0OTUsIDcyNDk5LCA3MjUwMywgNzI1MDcsIAotICAgIDcyNTExLCA3MjUxNSwgNzI1MTksIDcyNTIyLCA3MjUyNiwgNzI1MzAsIDcyNTM0LCA3MjUzOCwgNzI1NDIsIDcyNTQ2LCAKLSAgICA3MjU1MCwgNzI1NTQsIDcyNTU4LCA3MjU2MiwgNzI1NjYsIDcyNTcwLCA3MjU3NCwgNzI1NzgsIDcyNTgyLCA3MjU4NiwgCi0gICAgNzI1OTAsIDcyNTk0LCA3MjU5OCwgNzI2MDIsIDcyNjA2LCA3MjYxMCwgNzI2MTQsIDcyNjE4LCA3MjYyMiwgNzI2MjYsIAotICAgIDcyNjMwLCA3MjYzNCwgNzI2MzgsIDcyNjQyLCA3MjY0NiwgNzI2NTAsIDcyNjU0LCA3MjY1OCwgNzI2NjIsIDcyNjY2LCAKLSAgICA3MjY3MCwgNzI2NzQsIDcyNjc4LCA3MjY4MiwgNzI2ODYsIDcyNjkwLCA3MjY5NCwgNzI2OTcsIDcyNzAyLCA3MjcwNiwgCi0gICAgNzI3MTIsIDcyNzE3LCA3MjcyMywgNzI3MjcsIDcyNzMxLCA3MjczNSwgNzI3MzksIDcyNzQzLCA3Mjc0NywgNzI3NTEsIAotICAgIDcyNzU1LCA3Mjc1OSwgNzI3NjMsIDcyNzY3LCA3Mjc3MSwgNzI3NzUsIDcyNzc5LCA3Mjc4MiwgNzI3ODUsIDcyNzg4LCAKLSAgICA3Mjc5MSwgNzI3OTQsIDcyNzk3LCA3MjgwMSwgNzI4MDQsIDcyODA4LCA3MjgxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4MTksIDcyODI0LCA3MjgyOSwgNzI4MzQsIDcyODM5LCAKLSAgICA3Mjg0NiwgNzI4NTMsIDcyODU4LCA3Mjg2MywgNzI4NjgsIDcyODczLCA3Mjg4MCwgNzI4ODcsIDcyODk0LCA3MjkwMSwgCi0gICAgNzI5MDgsIDcyOTE1LCA3MjkyNSwgNzI5MzUsIDcyOTQyLCA3Mjk0OSwgNzI5NTYsIDcyOTYzLCA3Mjk2OSwgNzI5NzUsIAotICAgIDcyOTg0LCA3Mjk5MywgNzMwMDAsIDczMDA3LCA3MzAxOCwgNzMwMjksIDczMDM0LCA3MzAzOSwgNzMwNDYsIDczMDUzLCAKLSAgICA3MzA2MCwgNzMwNjcsIDczMDc0LCA3MzA4MSwgNzMwODgsIDczMDk1LCA3MzEwMSwgNzMxMDcsIDczMTEzLCA3MzExOSwgCi0gICAgNzMxMjYsIDczMTMzLCA3MzEzOCwgNzMxNDIsIDczMTQ5LCA3MzE1NiwgNzMxNjMsIDczMTY3LCA3MzE3NCwgNzMxNzgsIAotICAgIDczMTgzLCA3MzE4NywgNzMxOTMsIDczMTk4LCA3MzIwNCwgNzMyMDksIDczMjEzLCA3MzIxNywgNzMyMjAsIDczMjIzLCAKLSAgICA3MzIyOCwgNzMyMzMsIDczMjM4LCA3MzI0MywgNzMyNDgsIDczMjUzLCA3MzI1OCwgNzMyNjMsIDczMjY4LCA3MzI3MywgCi0gICAgNzMyODEsIDczMjg5LCA3MzI5NCwgNzMyOTksIDczMzA0LCA3MzMwOSwgNzMzMTQsIDczMzE5LCA3MzMyNCwgNzMzMjksIAotICAgIDczMzM0LCA3MzMzOSwgNzMzNDQsIDczMzQ5LCA3MzM1NCwgNzMzNTksIDczMzY1LCA3MzM3MSwgNzMzNzcsIDczMzgzLCAKLSAgICA3MzM4OCwgNzMzOTQsIDczMzk3LCA3MzQwMCwgNzM0MDMsIDczNDA3LCA3MzQxMSwgNzM0MTUsIDczNDE5LCA3MzQyMiwgCi0gICAgNzM0MjYsIDczNDI5LCA3MzQzMywgNzM0MzYsIDczNDQwLCA3MzQ0NCwgNzM0NDgsIDczNDUyLCA3MzQ1NiwgNzM0NjAsIAotICAgIDczNDY0LCA3MzQ2OCwgNzM0NzIsIDczNDc2LCA3MzQ4MCwgNzM0ODQsIDczNDg4LCA3MzQ5MiwgNzM0OTYsIDczNTAwLCAKLSAgICA3MzUwNCwgNzM1MDgsIDczNTEyLCA3MzUxNiwgNzM1MjAsIDczNTI0LCA3MzUyNywgNzM1MzEsIDczNTM1LCA3MzUzOSwgCi0gICAgNzM1NDMsIDczNTQ3LCA3MzU1MSwgNzM1NTUsIDczNTU5LCA3MzU2MywgNzM1NjcsIDczNTcxLCA3MzU3NSwgNzM1NzksIAotICAgIDczNTgzLCA3MzU4NywgNzM1OTEsIDczNTk1LCA3MzU5OSwgNzM2MDMsIDczNjA3LCA3MzYxMSwgNzM2MTUsIDczNjE5LCAKLSAgICA3MzYyMywgNzM2MjcsIDczNjMxLCA3MzYzNSwgNzM2MzksIDczNjQzLCA3MzY0NywgNzM2NTEsIDczNjU1LCA3MzY1OCwgCi0gICAgNzM2NjIsIDczNjY2LCA3MzY3MCwgNzM2NzQsIDczNjc4LCA3MzY4MiwgNzM2ODYsIDczNjkwLCA3MzY5NCwgNzM2OTgsIAotICAgIDczNzAyLCA3MzcwNiwgNzM3MTEsIDczNzE2LCA3MzcxOSwgNzM3MjQsIDczNzI3LCA3MzczMCwgNzM3MzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDczNzM3LCA3Mzc0NiwgNzM3NTUsIDczNzY0LCA3Mzc3MywgNzM3ODIsIDczNzkxLCA3MzgwMCwgCi0gICAgNzM4MDksIDczODE3LCA3MzgyNCwgNzM4MzIsIDczODM5LCA3Mzg0NywgNzM4NTcsIDczODY2LCA3Mzg3NiwgNzM4ODUsIAotICAgIDczODk1LCA3MzkwMywgNzM5MTAsIDczOTE4LCA3MzkyNSwgNzM5MzMsIDczOTM4LCA3Mzk0MywgNzM5NDksIDczOTU4LCAKLSAgICA3Mzk2NCwgNzM5NzAsIDczOTc3LCA3Mzk4NiwgNzM5OTQsIDc0MDAyLCA3NDAxMCwgNzQwMTcsIDc0MDI0LCA3NDAzMSwgCi0gICAgNzQwMzgsIDc0MDQzLCA3NDA0OCwgNzQwNTMsIDc0MDU4LCA3NDA2MywgNzQwNjgsIDc0MDczLCA3NDA3OCwgNzQwODYsIAotICAgIDc0MDk0LCA3NDEwMCwgNzQxMDUsIDc0MTEwLCA3NDExNSwgNzQxMjAsIDc0MTI1LCA3NDEzMCwgNzQxMzUsIDc0MTQwLCAKLSAgICA3NDE0NSwgNzQxNTQsIDc0MTYzLCA3NDE2OCwgNzQxNzMsIDc0MTgzLCA3NDE5MywgNzQyMDAsIDc0MjA3LCA3NDIxNiwgCi0gICAgNzQyMjUsIDc0MjM3LCA3NDI0OSwgNzQyNTUsIDc0MjYxLCA3NDI2OSwgNzQyNzcsIDc0Mjg3LCA3NDI5NywgNzQzMDQsIAotICAgIDc0MzExLCA3NDMxNiwgNzQzMjEsIDc0MzMzLCA3NDM0NSwgNzQzNTMsIDc0MzYxLCA3NDM3MSwgNzQzODEsIDc0MzkzLCAKLSAgICA3NDQwNSwgNzQ0MTQsIDc0NDIzLCA3NDQzMCwgNzQ0MzcsIDc0NDQ0LCA3NDQ1MSwgNzQ0NjAsIDc0NDY5LCA3NDQ3NCwgCi0gICAgNzQ0NzksIDc0NDg2LCA3NDQ5MywgNzQ1MDAsIDc0NTA3LCA3NDUxOSwgNzQ1MzEsIDc0NTM2LCA3NDU0MSwgNzQ1NDYsIAotICAgIDc0NTUxLCA3NDU1NiwgNzQ1NjEsIDc0NTY2LCA3NDU3MSwgNzQ1NzUsIDc0NTgwLCA3NDU4NSwgNzQ1OTAsIDc0NTk1LCAKLSAgICA3NDYwMCwgNzQ2MDYsIDc0NjExLCA3NDYxNiwgNzQ2MjMsIDc0NjMwLCA3NDYzNywgNzQ2NDQsIDc0NjUxLCA3NDY2MCwgCi0gICAgNzQ2NjksIDc0Njc1LCA3NDY4MSwgNzQ2ODcsIDc0NjkzLCA3NDY5OSwgNzQ3MDUsIDc0NzEyLCA3NDcxOSwgNzQ3MjYsIAotICAgIDc0NzMwLCA3NDczNywgNzQ3NDIsIDc0NzQ3LCA3NDc1NCwgNzQ3NjcsIDc0NzczLCA3NDc4MSwgNzQ3ODksIDc0Nzk2LCAKLSAgICA3NDgwMywgNzQ4MTIsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTYsIDc0ODYzLCA3NDg3MCwgCi0gICAgNzQ4NzcsIDc0ODg0LCA3NDg5MSwgNzQ5MDAsIDc0OTA5LCA3NDkxOCwgNzQ5MjcsIDc0OTM2LCA3NDk0NSwgNzQ5NTQsIAotICAgIDc0OTYzLCA3NDk3MiwgNzQ5ODEsIDc0OTg4LCA3NDk5NSwgNzUwMDEsIDAsIDAsIDc1MDA5LCA3NTAxNiwgNzUwMjMsIAotICAgIDc1MDMxLCA3NTAzNiwgNzUwNDEsIDc1MDQ2LCA3NTA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjY4MzAsIDY2ODM5LCA2Njg0OCwgNjY4NTksIDY2ODY2LCA2Njg3MSwgNjY4NzYsIDY2ODgzLCA2Njg5MCwgNjY4OTYsIAorICAgIDY2OTAxLCA2NjkwNiwgNjY5MTEsIDY2OTE2LCA2NjkyMywgNjY5MjgsIDY2OTMzLCA2NjkzOCwgNjY5NDksIDY2OTU0LCAKKyAgICA2Njk1OSwgNjY5NjYsIDY2OTcxLCA2Njk3OCwgNjY5ODMsIDY2OTg4LCA2Njk5NSwgNjcwMDIsIDY3MDA5LCA2NzAxOCwgCisgICAgNjcwMjcsIDY3MDMyLCA2NzAzNywgNjcwNDIsIDY3MDQ5LCA2NzA1NCwgNjcwNjQsIDY3MDcxLCA2NzA3NiwgNjcwODEsIAorICAgIDY3MDg2LCA2NzA5MSwgNjcwOTYsIDY3MTAxLCA2NzExMCwgNjcxMTcsIDY3MTI0LCA2NzEyOSwgNjcxMzYsIDY3MTQxLCAKKyAgICA2NzE0OCwgNjcxNTcsIDY3MTY4LCA2NzE3MywgNjcxODIsIDY3MTg3LCA2NzE5NCwgNjcyMDMsIDY3MjEyLCA2NzIxNywgCisgICAgNjcyMjIsIDY3MjI5LCA2NzIzNSwgNjcyNDIsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYwLCA2NzI2NCwgNjcyNjgsIAorICAgIDY3MjcyLCA2NzI3NiwgNjcyODAsIDY3Mjg0LCA2NzI4OCwgNjcyOTEsIDY3Mjk1LCA2NzI5OSwgNjczMDMsIDY3MzA3LCAKKyAgICA2NzMxMSwgNjczMTUsIDY3MzE4LCA2NzMyMiwgNjczMjYsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgCisgICAgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIAorICAgIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCAKKyAgICA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgCisgICAgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIAorICAgIDY3NTA4LCA2NzUxMiwgNjc1MTYsIDY3NTIwLCA2NzUyNCwgNjc1MjgsIDY3NTMyLCA2NzUzNiwgNjc1NDAsIDY3NTQ0LCAKKyAgICA2NzU0OCwgNjc1NTIsIDY3NTU2LCA2NzU2MCwgNjc1NjQsIDY3NTY4LCA2NzU3MiwgNjc1NzYsIDY3NTgwLCA2NzU4NCwgCisgICAgNjc1ODgsIDY3NTkyLCA2NzU5NiwgNjc2MDAsIDY3NjA0LCA2NzYwOCwgNjc2MTIsIDY3NjE2LCA2NzYyMCwgNjc2MjQsIAorICAgIDY3NjI4LCA2NzYzMiwgNjc2MzYsIDY3NjQwLCA2NzY0NCwgNjc2NDgsIDY3NjUyLCA2NzY1NiwgNjc2NjAsIDY3NjY0LCAKKyAgICA2NzY2OCwgNjc2NzIsIDY3Njc2LCA2NzY4MCwgNjc2ODQsIDY3Njg4LCA2NzY5MiwgNjc2OTYsIDY3NzAwLCA2NzcwNCwgCisgICAgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIAorICAgIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCAKKyAgICA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgCisgICAgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIAorICAgIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCAKKyAgICA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgCisgICAgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk3OSwgNjc5ODMsIAorICAgIDY3OTg3LCA2Nzk5MSwgNjc5OTUsIDY3OTk5LCA2ODAwMywgNjgwMDcsIDY4MDExLCA2ODAxNSwgNjgwMTksIDY4MDIzLCAKKyAgICA2ODAyNywgNjgwMzEsIDY4MDM1LCA2ODAzOSwgNjgwNDMsIDY4MDQ3LCA2ODA1MSwgNjgwNTUsIDY4MDU5LCA2ODA2MywgCisgICAgNjgwNjcsIDY4MDcxLCA2ODA3NSwgNjgwNzksIDY4MDgzLCA2ODA4NywgNjgwOTEsIDY4MDk1LCA2ODA5OSwgNjgxMDMsIAorICAgIDY4MTA3LCA2ODExMSwgNjgxMTUsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMxLCA2ODEzNSwgNjgxMzksIDY4MTQzLCAKKyAgICA2ODE0NywgNjgxNTEsIDY4MTU1LCA2ODE1OSwgNjgxNjMsIDY4MTY3LCA2ODE3MSwgNjgxNzUsIDY4MTc5LCA2ODE4MywgCisgICAgNjgxODcsIDY4MTkxLCA2ODE5NSwgNjgxOTksIDY4MjAzLCA2ODIwNywgNjgyMTEsIDY4MjE1LCA2ODIxOSwgNjgyMjMsIAorICAgIDY4MjI3LCA2ODIzMSwgNjgyMzUsIDY4MjM5LCA2ODI0MywgNjgyNDcsIDY4MjUxLCA2ODI1NSwgNjgyNTksIDY4MjYzLCAKKyAgICA2ODI2NywgNjgyNzEsIDY4Mjc1LCA2ODI3OSwgNjgyODMsIDY4Mjg3LCA2ODI5MSwgNjgyOTUsIDY4Mjk5LCA2ODMwMywgCisgICAgNjgzMDcsIDY4MzExLCA2ODMxNSwgNjgzMTksIDY4MzIzLCA2ODMyNywgNjgzMzEsIDY4MzM1LCA2ODMzOSwgNjgzNDMsIAorICAgIDY4MzQ3LCA2ODM1MSwgNjgzNTUsIDY4MzU5LCA2ODM2MywgNjgzNjcsIDY4MzcxLCA2ODM3NSwgNjgzNzksIDY4MzgzLCAKKyAgICA2ODM4NywgNjgzOTEsIDY4Mzk1LCA2ODM5OSwgNjg0MDMsIDY4NDA3LCA2ODQxMSwgNjg0MTUsIDY4NDE5LCA2ODQyMywgCisgICAgNjg0MjcsIDY4NDMxLCA2ODQzNSwgNjg0MzksIDY4NDQyLCA2ODQ0NiwgNjg0NTAsIDY4NDU0LCA2ODQ1OCwgNjg0NjIsIAorICAgIDY4NDY2LCA2ODQ3MCwgNjg0NzQsIDY4NDc4LCA2ODQ4MiwgNjg0ODYsIDY4NDkwLCA2ODQ5NCwgNjg0OTgsIDY4NTAyLCAKKyAgICA2ODUwNiwgNjg1MTAsIDY4NTE0LCA2ODUxOCwgNjg1MjIsIDY4NTI2LCA2ODUzMCwgNjg1MzQsIDY4NTM4LCA2ODU0MiwgCisgICAgNjg1NDYsIDY4NTUwLCA2ODU1NCwgNjg1NTgsIDY4NTYyLCA2ODU2NiwgNjg1NzAsIDY4NTc0LCA2ODU3OCwgNjg1ODIsIAorICAgIDY4NTg2LCA2ODU5MCwgNjg1OTQsIDY4NTk4LCA2ODYwMiwgNjg2MDYsIDY4NjEwLCA2ODYxNCwgNjg2MTgsIDY4NjIyLCAKKyAgICA2ODYyNiwgNjg2MzAsIDY4NjM0LCA2ODYzOCwgNjg2NDIsIDY4NjQ2LCA2ODY1MCwgNjg2NTQsIDY4NjU4LCA2ODY2MiwgCisgICAgNjg2NjYsIDY4NjcwLCA2ODY3NCwgNjg2NzgsIDY4NjgyLCA2ODY4NiwgNjg2OTAsIDY4Njk0LCA2ODY5OCwgNjg3MDIsIAorICAgIDY4NzA2LCA2ODcxMCwgNjg3MTQsIDY4NzE4LCA2ODcyMiwgNjg3MjYsIDY4NzMwLCA2ODczNCwgNjg3MzgsIDY4NzQyLCAKKyAgICA2ODc0NiwgNjg3NTAsIDY4NzU0LCA2ODc1OCwgNjg3NjIsIDY4NzY2LCA2ODc3MCwgNjg3NzQsIDY4Nzc4LCA2ODc4MiwgCisgICAgNjg3ODYsIDY4NzkwLCA2ODc5NCwgNjg3OTgsIDY4ODAxLCA2ODgwNSwgNjg4MDksIDY4ODEzLCA2ODgxNywgNjg4MjEsIAorICAgIDY4ODI1LCA2ODgyOSwgNjg4MzMsIDY4ODM3LCA2ODg0MSwgNjg4NDUsIDY4ODQ5LCA2ODg1MywgNjg4NTcsIDY4ODYxLCAKKyAgICA2ODg2NSwgNjg4NjksIDY4ODczLCA2ODg3NywgNjg4ODEsIDY4ODg1LCA2ODg4OSwgNjg4OTMsIDY4ODk3LCA2ODkwMSwgCisgICAgNjg5MDUsIDY4OTA5LCA2ODkxMywgNjg5MTcsIDY4OTIxLCA2ODkyNSwgNjg5MjksIDY4OTMzLCA2ODkzNywgNjg5NDEsIAorICAgIDY4OTQ1LCA2ODk0OSwgNjg5NTMsIDY4OTU3LCA2ODk2MSwgNjg5NjUsIDY4OTY5LCA2ODk3MywgNjg5NzcsIDY4OTgxLCAKKyAgICA2ODk4NSwgNjg5ODksIDY4OTkzLCA2ODk5NywgNjkwMDEsIDY5MDA1LCA2OTAwOSwgNjkwMTMsIDY5MDE3LCA2OTAyMSwgCisgICAgNjkwMjUsIDY5MDI5LCA2OTAzMywgNjkwMzcsIDY5MDQwLCA2OTA0NCwgNjkwNDgsIDY5MDUyLCA2OTA1NiwgNjkwNjAsIAorICAgIDY5MDY0LCA2OTA2OCwgNjkwNzIsIDY5MDc2LCA2OTA4MCwgNjkwODQsIDY5MDg4LCA2OTA5MiwgNjkwOTYsIDY5MTAwLCAKKyAgICA2OTEwNCwgNjkxMDgsIDY5MTEyLCA2OTExNiwgNjkxMjAsIDY5MTI0LCA2OTEyOCwgNjkxMzIsIDY5MTM2LCA2OTE0MCwgCisgICAgNjkxNDQsIDY5MTQ4LCA2OTE1MiwgNjkxNTYsIDY5MTYwLCA2OTE2NCwgNjkxNjgsIDY5MTcyLCA2OTE3NiwgNjkxODAsIAorICAgIDY5MTg0LCA2OTE4OCwgNjkxOTIsIDY5MTk2LCA2OTIwMCwgNjkyMDQsIDY5MjA4LCA2OTIxMiwgNjkyMTYsIDY5MjIwLCAKKyAgICA2OTIyNCwgNjkyMjgsIDY5MjMyLCA2OTIzNiwgNjkyNDAsIDY5MjQ0LCA2OTI0OCwgNjkyNTIsIDY5MjU2LCA2OTI2MCwgCisgICAgNjkyNjQsIDY5MjY4LCA2OTI3MiwgNjkyNzYsIDY5MjgwLCA2OTI4NCwgNjkyODgsIDY5MjkyLCA2OTI5NSwgNjkyOTksIAorICAgIDY5MzAzLCA2OTMwNywgNjkzMTEsIDY5MzE1LCA2OTMxOSwgNjkzMjMsIDY5MzI3LCA2OTMzMSwgNjkzMzUsIDY5MzM5LCAKKyAgICA2OTM0MywgNjkzNDcsIDY5MzUxLCA2OTM1NSwgNjkzNTksIDY5MzYzLCA2OTM2NywgNjkzNzEsIDY5Mzc1LCA2OTM3OSwgCisgICAgNjkzODMsIDY5Mzg3LCA2OTM5MSwgNjkzOTUsIDY5Mzk5LCA2OTQwMywgNjk0MDcsIDY5NDExLCA2OTQxNSwgNjk0MTksIAorICAgIDY5NDIzLCA2OTQyNywgNjk0MzEsIDY5NDM1LCA2OTQzOSwgNjk0NDMsIDY5NDQ3LCA2OTQ1MSwgNjk0NTUsIDY5NDU5LCAKKyAgICA2OTQ2MywgNjk0NjcsIDY5NDcxLCA2OTQ3NSwgNjk0NzksIDY5NDgzLCA2OTQ4NywgNjk0OTEsIDY5NDk1LCA2OTQ5OSwgCisgICAgNjk1MDMsIDY5NTA3LCA2OTUxMSwgNjk1MTUsIDY5NTE5LCA2OTUyMywgNjk1MjcsIDY5NTMxLCA2OTUzNSwgNjk1MzksIAorICAgIDY5NTQzLCA2OTU0NywgNjk1NTEsIDY5NTU1LCA2OTU1OSwgNjk1NjMsIDY5NTY3LCA2OTU3MSwgNjk1NzUsIDY5NTc5LCAKKyAgICA2OTU4MywgNjk1ODcsIDY5NTkxLCA2OTU5NSwgNjk1OTksIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE1LCA2OTYxOSwgCisgICAgNjk2MjMsIDY5NjI3LCA2OTYzMSwgNjk2MzUsIDY5NjM5LCA2OTY0MywgNjk2NDcsIDY5NjUxLCA2OTY1NSwgNjk2NTksIAorICAgIDY5NjYzLCA2OTY2NywgNjk2NzEsIDY5Njc1LCA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCAKKyAgICA2OTcwMywgNjk3MDcsIDY5NzExLCA2OTcxNSwgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgCisgICAgNjk3NDMsIDY5NzQ3LCA2OTc1MCwgNjk3NTQsIDY5NzU4LCA2OTc2MiwgNjk3NjYsIDY5NzcwLCA2OTc3NCwgNjk3NzgsIAorICAgIDY5NzgyLCA2OTc4NiwgNjk3OTAsIDY5Nzk0LCA2OTc5OCwgNjk4MDIsIDY5ODA2LCA2OTgxMCwgNjk4MTQsIDY5ODE4LCAKKyAgICA2OTgyMiwgNjk4MjYsIDY5ODMwLCA2OTgzNCwgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgCisgICAgNjk4NjIsIDY5ODY2LCA2OTg3MCwgNjk4NzQsIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIAorICAgIDY5OTAyLCA2OTkwNiwgNjk5MTAsIDY5OTE0LCA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCAKKyAgICA2OTk0MiwgNjk5NDYsIDY5OTUwLCA2OTk1NCwgNjk5NTgsIDY5OTYyLCA2OTk2NiwgNjk5NzAsIDY5OTc0LCA2OTk3OCwgCisgICAgNjk5ODIsIDY5OTg2LCA2OTk5MCwgNjk5OTQsIDY5OTk4LCA3MDAwMiwgNzAwMDYsIDcwMDEwLCA3MDAxNCwgNzAwMTgsIAorICAgIDcwMDIyLCA3MDAyNiwgNzAwMzAsIDcwMDM0LCA3MDAzOCwgNzAwNDIsIDcwMDQ2LCA3MDA1MCwgNzAwNTQsIDcwMDU4LCAKKyAgICA3MDA2MiwgNzAwNjYsIDcwMDcwLCA3MDA3NCwgNzAwNzgsIDcwMDgyLCA3MDA4NiwgNzAwOTAsIDcwMDk0LCA3MDA5OCwgCisgICAgNzAxMDIsIDcwMTA2LCA3MDExMCwgNzAxMTQsIDcwMTE4LCA3MDEyMiwgNzAxMjYsIDcwMTMwLCA3MDEzNCwgNzAxMzgsIAorICAgIDcwMTQyLCA3MDE0NiwgNzAxNTAsIDcwMTU0LCA3MDE1OCwgNzAxNjIsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTc4LCAKKyAgICA3MDE4MiwgNzAxODYsIDcwMTkwLCA3MDE5NCwgNzAxOTgsIDcwMjAyLCA3MDIwNiwgNzAyMTAsIDcwMjE0LCA3MDIxOCwgCisgICAgNzAyMjIsIDcwMjI2LCA3MDIzMCwgNzAyMzQsIDcwMjM4LCA3MDI0MiwgNzAyNDYsIDcwMjUwLCA3MDI1NCwgNzAyNTgsIAorICAgIDcwMjYyLCA3MDI2NiwgNzAyNzAsIDcwMjc0LCA3MDI3OCwgNzAyODIsIDcwMjg2LCA3MDI5MCwgNzAyOTQsIDcwMjk4LCAKKyAgICA3MDMwMiwgNzAzMDYsIDcwMzEwLCA3MDMxNCwgNzAzMTgsIDcwMzIyLCA3MDMyNiwgNzAzMzAsIDcwMzM0LCA3MDMzOCwgCisgICAgNzAzNDIsIDcwMzQ2LCA3MDM1MCwgNzAzNTMsIDcwMzU3LCA3MDM2MSwgNzAzNjUsIDcwMzY5LCA3MDM3MywgNzAzNzcsIAorICAgIDcwMzgxLCA3MDM4NSwgNzAzODksIDcwMzkzLCA3MDM5NywgNzA0MDEsIDcwNDA1LCA3MDQwOSwgNzA0MTMsIDcwNDE3LCAKKyAgICA3MDQyMSwgNzA0MjUsIDcwNDI5LCA3MDQzMywgNzA0MzcsIDcwNDQxLCA3MDQ0NSwgNzA0NDksIDcwNDUzLCA3MDQ1NywgCisgICAgNzA0NjEsIDcwNDY1LCA3MDQ2OSwgNzA0NzMsIDcwNDc3LCA3MDQ4MSwgNzA0ODUsIDcwNDg5LCA3MDQ5MywgNzA0OTcsIAorICAgIDcwNTAxLCA3MDUwNSwgNzA1MDksIDcwNTEzLCA3MDUxNywgNzA1MjEsIDcwNTI1LCA3MDUyOSwgNzA1MzMsIDcwNTM3LCAKKyAgICA3MDU0MSwgNzA1NDUsIDcwNTQ5LCA3MDU1MywgNzA1NTcsIDcwNTYxLCA3MDU2NSwgNzA1NjksIDcwNTczLCA3MDU3NywgCisgICAgNzA1ODEsIDcwNTg1LCA3MDU4OSwgNzA1OTMsIDcwNTk3LCA3MDYwMSwgNzA2MDUsIDcwNjA5LCA3MDYxMywgNzA2MTcsIAorICAgIDcwNjIxLCA3MDYyNSwgNzA2MjksIDcwNjMzLCA3MDYzNywgNzA2NDEsIDcwNjQ1LCA3MDY0OSwgNzA2NTMsIDcwNjU3LCAKKyAgICA3MDY2MSwgNzA2NjUsIDcwNjY5LCA3MDY3MywgNzA2NzcsIDcwNjgxLCA3MDY4NSwgNzA2ODksIDcwNjkzLCA3MDY5NywgCisgICAgNzA3MDEsIDcwNzA1LCA3MDcwOSwgNzA3MTMsIDcwNzE3LCA3MDcyMSwgNzA3MjUsIDcwNzI5LCA3MDczMywgNzA3MzcsIAorICAgIDcwNzQxLCA3MDc0NSwgNzA3NDksIDcwNzUzLCA3MDc1NywgNzA3NjEsIDcwNzY1LCA3MDc2OSwgNzA3NzMsIDcwNzc3LCAKKyAgICA3MDc4MSwgNzA3ODUsIDcwNzg5LCA3MDc5MywgNzA3OTcsIDcwODAxLCA3MDgwNSwgNzA4MDksIDcwODEzLCA3MDgxNywgCisgICAgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIDcwODM3LCA3MDg0MSwgNzA4NDUsIDcwODQ5LCA3MDg1MywgNzA4NTcsIAorICAgIDcwODYxLCA3MDg2NSwgNzA4NjksIDcwODczLCA3MDg3NywgNzA4ODEsIDcwODg1LCA3MDg4OSwgNzA4OTMsIDcwODk3LCAKKyAgICA3MDkwMSwgNzA5MDUsIDcwOTA5LCA3MDkxMywgNzA5MTcsIDcwOTIxLCA3MDkyNSwgNzA5MjksIDcwOTMzLCA3MDkzNywgCisgICAgNzA5NDEsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCA3MDk2MSwgNzA5NjUsIDcwOTY5LCA3MDk3MywgNzA5NzcsIAorICAgIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkzLCA3MDk5NywgNzEwMDEsIDcxMDA1LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCAKKyAgICA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgNzEwMzcsIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgCisgICAgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIAorICAgIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCAKKyAgICA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgNzExNTcsIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTczLCA3MTE3NywgCisgICAgNzExODEsIDcxMTg1LCA3MTE4OSwgNzExOTMsIDcxMTk3LCA3MTIwMSwgNzEyMDUsIDcxMjA5LCA3MTIxMywgNzEyMTcsIAorICAgIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMzLCA3MTIzNywgNzEyNDEsIDcxMjQ1LCA3MTI0OSwgNzEyNTMsIDcxMjU3LCAKKyAgICA3MTI2MSwgNzEyNjUsIDcxMjY5LCA3MTI3MywgNzEyNzcsIDcxMjgxLCA3MTI4NSwgNzEyODksIDcxMjkzLCA3MTI5NywgCisgICAgNzEzMDEsIDcxMzA1LCA3MTMwOSwgNzEzMTMsIDcxMzE3LCA3MTMyMSwgNzEzMjUsIDcxMzI5LCA3MTMzMywgNzEzMzcsIAorICAgIDcxMzQxLCA3MTM0NSwgNzEzNDksIDcxMzUzLCA3MTM1NywgNzEzNjEsIDcxMzY1LCA3MTM2OSwgNzEzNzMsIDcxMzc3LCAKKyAgICA3MTM4MSwgNzEzODUsIDcxMzg5LCA3MTM5MywgNzEzOTcsIDcxNDAxLCA3MTQwNSwgNzE0MDksIDcxNDEzLCA3MTQxNywgCisgICAgNzE0MjEsIDcxNDI1LCA3MTQyOSwgNzE0MzMsIDcxNDM3LCA3MTQ0MSwgNzE0NDUsIDcxNDQ5LCA3MTQ1MywgNzE0NTcsIAorICAgIDcxNDYxLCA3MTQ2NSwgNzE0NjksIDcxNDczLCA3MTQ3NywgNzE0ODEsIDcxNDg1LCA3MTQ4OSwgNzE0OTMsIDcxNDk3LCAKKyAgICA3MTUwMSwgNzE1MDUsIDcxNTA5LCA3MTUxMywgNzE1MTcsIDcxNTIxLCA3MTUyNSwgNzE1MjksIDcxNTMzLCA3MTUzNywgCisgICAgNzE1NDEsIDcxNTQ1LCA3MTU0OSwgNzE1NTMsIDcxNTU3LCA3MTU2MSwgNzE1NjUsIDcxNTY5LCA3MTU3MywgNzE1NzcsIAorICAgIDcxNTgxLCA3MTU4NSwgNzE1ODksIDcxNTkzLCA3MTU5NywgNzE2MDEsIDcxNjA1LCA3MTYwOSwgNzE2MTMsIDcxNjE3LCAKKyAgICA3MTYyMSwgNzE2MjUsIDcxNjI5LCA3MTYzMywgNzE2MzcsIDcxNjQxLCA3MTY0NSwgNzE2NDksIDcxNjUzLCA3MTY1NywgCisgICAgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCA3MTY4MSwgNzE2ODUsIDcxNjg5LCA3MTY5MywgNzE2OTcsIAorICAgIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI1LCA3MTcyOSwgNzE3MzMsIDcxNzM3LCAKKyAgICA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIDcxNzYxLCA3MTc2NSwgNzE3NjksIDcxNzczLCA3MTc3NywgCisgICAgNzE3ODEsIDcxNzg1LCA3MTc4OSwgNzE3OTMsIDcxNzk3LCA3MTgwMSwgNzE4MDUsIDcxODA5LCA3MTgxMywgNzE4MTcsIAorICAgIDcxODIxLCA3MTgyNSwgNzE4MjksIDcxODMzLCA3MTgzNywgNzE4NDEsIDcxODQ1LCA3MTg0OSwgNzE4NTMsIDcxODU3LCAKKyAgICA3MTg2MSwgNzE4NjUsIDcxODY5LCA3MTg3MywgNzE4NzcsIDcxODgxLCA3MTg4NSwgNzE4ODksIDcxODkzLCAwLCAwLCAwLCAKKyAgICA3MTg5NywgNzE5MDEsIDcxOTA1LCA3MTkwOSwgNzE5MTMsIDcxOTE3LCA3MTkyMSwgNzE5MjUsIDcxOTI5LCA3MTkzMywgCisgICAgNzE5MzcsIDcxOTQxLCA3MTk0NSwgNzE5NDksIDcxOTUzLCA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIAorICAgIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCAKKyAgICA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ5LCA3MjA1MywgCisgICAgNzIwNTcsIDcyMDYxLCA3MjA2NSwgNzIwNjksIDcyMDczLCA3MjA3NywgNzIwODEsIDcyMDg1LCA3MjA4OSwgNzIwOTMsIAorICAgIDcyMDk3LCA3MjEwMSwgNzIxMDUsIDcyMTA5LCA3MjExMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIxMTcsIAorICAgIDcyMTIyLCA3MjEyNiwgNzIxMzEsIDcyMTM2LCA3MjE0MSwgNzIxNDYsIDcyMTUxLCA3MjE1NSwgNzIxNjAsIDcyMTY1LCAKKyAgICA3MjE3MCwgNzIxNzUsIDcyMTgwLCA3MjE4NSwgNzIxOTAsIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA3LCA3MjIxMiwgCisgICAgNzIyMTcsIDcyMjIyLCA3MjIyNiwgNzIyMzEsIDcyMjM2LCA3MjI0MSwgNzIyNDYsIDcyMjUxLCA3MjI1NSwgNzIyNjAsIAorICAgIDcyMjY0LCA3MjI2OSwgNzIyNzMsIDcyMjc4LCA3MjI4MiwgNzIyODYsIDcyMjkwLCA3MjI5NSwgNzIzMDAsIDcyMzA1LCAKKyAgICA3MjMxMywgNzIzMjEsIDcyMzI5LCA3MjMzNywgNzIzNDQsIDcyMzUyLCA3MjM1OCwgNzIzNjYsIDcyMzcwLCA3MjM3NCwgCisgICAgNzIzNzgsIDcyMzgyLCA3MjM4NiwgNzIzOTAsIDcyMzk0LCA3MjM5OCwgNzI0MDIsIDcyNDA2LCA3MjQxMCwgNzI0MTQsIAorICAgIDcyNDE4LCA3MjQyMiwgNzI0MjYsIDcyNDMwLCA3MjQzNCwgNzI0MzgsIDcyNDQyLCA3MjQ0NiwgNzI0NTAsIDcyNDU0LCAKKyAgICA3MjQ1OCwgNzI0NjIsIDcyNDY2LCA3MjQ3MCwgNzI0NzQsIDcyNDc4LCA3MjQ4MiwgNzI0ODYsIDcyNDkwLCA3MjQ5NCwgCisgICAgNzI0OTgsIDcyNTAyLCA3MjUwNiwgNzI1MTAsIDcyNTEzLCA3MjUxNywgNzI1MjEsIDcyNTI1LCA3MjUyOSwgNzI1MzMsIAorICAgIDcyNTM3LCA3MjU0MSwgNzI1NDUsIDcyNTQ5LCA3MjU1MywgNzI1NTcsIDcyNTYxLCA3MjU2NSwgNzI1NjksIDcyNTczLCAKKyAgICA3MjU3NywgNzI1ODEsIDcyNTg1LCA3MjU4OSwgNzI1OTMsIDcyNTk3LCA3MjYwMSwgNzI2MDUsIDcyNjA5LCA3MjYxMywgCisgICAgNzI2MTcsIDcyNjIxLCA3MjYyNSwgNzI2MjksIDcyNjMzLCA3MjYzNywgNzI2NDEsIDcyNjQ1LCA3MjY0OSwgNzI2NTMsIAorICAgIDcyNjU3LCA3MjY2MCwgNzI2NjQsIDcyNjY4LCA3MjY3MSwgNzI2NzUsIDcyNjc5LCA3MjY4MywgNzI2ODYsIDcyNjkwLCAKKyAgICA3MjY5NCwgNzI2OTgsIDcyNzAyLCA3MjcwNiwgNzI3MTAsIDcyNzE0LCA3MjcxOCwgNzI3MjIsIDcyNzI2LCA3MjczMCwgCisgICAgNzI3MzQsIDcyNzM4LCA3Mjc0MSwgNzI3NDUsIDcyNzQ5LCA3Mjc1MywgNzI3NTcsIDcyNzYxLCA3Mjc2NSwgNzI3NjksIAorICAgIDcyNzczLCA3Mjc3NywgNzI3ODEsIDcyNzg0LCA3Mjc4NywgNzI3OTEsIDcyNzk1LCA3Mjc5OSwgNzI4MDIsIDcyODA1LCAKKyAgICA3MjgwOSwgNzI4MTMsIDcyODE3LCA3MjgyMSwgNzI4MjUsIDcyODI5LCA3MjgzMywgNzI4MzcsIDcyODQxLCA3Mjg0NSwgCisgICAgNzI4NDksIDcyODUzLCA3Mjg1NywgNzI4NjEsIDcyODY1LCA3Mjg2OSwgNzI4NzMsIDcyODc3LCA3Mjg4MSwgNzI4ODUsIAorICAgIDcyODg5LCA3Mjg5MywgNzI4OTcsIDcyOTAxLCA3MjkwNSwgNzI5MDksIDcyOTEzLCA3MjkxNywgNzI5MjEsIDcyOTI1LCAKKyAgICA3MjkyOSwgNzI5MzMsIDcyOTM3LCA3Mjk0MSwgNzI5NDUsIDcyOTQ5LCA3Mjk1MywgNzI5NTYsIDcyOTYwLCA3Mjk2NCwgCisgICAgNzI5NjgsIDcyOTcyLCA3Mjk3NiwgNzI5ODAsIDcyOTg0LCA3Mjk4OCwgNzI5OTIsIDcyOTk2LCA3MzAwMCwgNzMwMDQsIAorICAgIDczMDA4LCA3MzAxMiwgNzMwMTYsIDczMDIwLCA3MzAyNCwgNzMwMjgsIDczMDMyLCA3MzAzNiwgNzMwNDAsIDczMDQ0LCAKKyAgICA3MzA0OCwgNzMwNTIsIDczMDU2LCA3MzA2MCwgNzMwNjQsIDczMDY4LCA3MzA3MiwgNzMwNzYsIDczMDgwLCA3MzA4NCwgCisgICAgNzMwODgsIDczMDkyLCA3MzA5NiwgNzMxMDAsIDczMTAzLCA3MzEwNywgNzMxMTEsIDczMTE1LCA3MzExOSwgNzMxMjMsIAorICAgIDczMTI3LCA3MzEzMSwgNzMxMzUsIDczMTM5LCA3MzE0MywgNzMxNDcsIDczMTUxLCA3MzE1NSwgNzMxNTksIDczMTYzLCAKKyAgICA3MzE2NywgNzMxNzAsIDczMTc0LCA3MzE3OCwgNzMxODIsIDczMTg2LCA3MzE5MCwgNzMxOTQsIDczMTk4LCA3MzIwMiwgCisgICAgNzMyMDYsIDczMjEwLCA3MzIxNCwgNzMyMTgsIDczMjIyLCA3MzIyNiwgNzMyMzAsIDczMjM0LCA3MzIzOCwgNzMyNDIsIAorICAgIDczMjQ2LCA3MzI1MCwgNzMyNTQsIDczMjU3LCA3MzI2MSwgNzMyNjUsIDczMjY5LCA3MzI3MywgNzMyNzcsIDczMjgxLCAKKyAgICA3MzI4NSwgNzMyODksIDczMjkzLCA3MzI5NywgNzMzMDEsIDczMzA1LCA3MzMwOSwgNzMzMTMsIDczMzE3LCA3MzMyMSwgCisgICAgNzMzMjUsIDczMzI5LCA3MzMzMywgNzMzMzcsIDczMzQxLCA3MzM0NSwgNzMzNDksIDczMzUzLCA3MzM1NywgNzMzNjEsIAorICAgIDczMzY1LCA3MzM2OSwgNzMzNzMsIDczMzc3LCA3MzM4MSwgNzMzODUsIDczMzg5LCA3MzM5MywgNzMzOTcsIDczNDAxLCAKKyAgICA3MzQwNSwgNzM0MDksIDczNDEzLCA3MzQxNywgNzM0MjEsIDczNDI1LCA3MzQyOSwgNzM0MzIsIDczNDM3LCA3MzQ0MSwgCisgICAgNzM0NDcsIDczNDUyLCA3MzQ1OCwgNzM0NjIsIDczNDY2LCA3MzQ3MCwgNzM0NzQsIDczNDc4LCA3MzQ4MiwgNzM0ODYsIAorICAgIDczNDkwLCA3MzQ5NCwgNzM0OTgsIDczNTAyLCA3MzUwNiwgNzM1MTAsIDczNTE0LCA3MzUxNywgNzM1MjAsIDczNTIzLCAKKyAgICA3MzUyNiwgNzM1MjksIDczNTMyLCA3MzUzNiwgNzM1MzksIDczNTQzLCA3MzU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM1NTQsIDczNTU5LCA3MzU2NCwgNzM1NjksIDczNTc0LCAKKyAgICA3MzU4MSwgNzM1ODgsIDczNTkzLCA3MzU5OCwgNzM2MDMsIDczNjA4LCA3MzYxNSwgNzM2MjIsIDczNjI5LCA3MzYzNiwgCisgICAgNzM2NDMsIDczNjUwLCA3MzY2MCwgNzM2NzAsIDczNjc3LCA3MzY4NCwgNzM2OTEsIDczNjk4LCA3MzcwNCwgNzM3MTAsIAorICAgIDczNzE5LCA3MzcyOCwgNzM3MzUsIDczNzQyLCA3Mzc1MywgNzM3NjQsIDczNzY5LCA3Mzc3NCwgNzM3ODEsIDczNzg4LCAKKyAgICA3Mzc5NSwgNzM4MDIsIDczODA5LCA3MzgxNiwgNzM4MjMsIDczODMwLCA3MzgzNiwgNzM4NDIsIDczODQ4LCA3Mzg1NCwgCisgICAgNzM4NjEsIDczODY4LCA3Mzg3MywgNzM4NzcsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTAyLCA3MzkwOSwgNzM5MTMsIAorICAgIDczOTE4LCA3MzkyMiwgNzM5MjgsIDczOTMzLCA3MzkzOSwgNzM5NDQsIDczOTQ4LCA3Mzk1MiwgNzM5NTUsIDczOTU4LCAKKyAgICA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3OCwgNzM5ODMsIDczOTg4LCA3Mzk5MywgNzM5OTgsIDc0MDAzLCA3NDAwOCwgCisgICAgNzQwMTYsIDc0MDI0LCA3NDAyOSwgNzQwMzQsIDc0MDM5LCA3NDA0NCwgNzQwNDksIDc0MDU0LCA3NDA1OSwgNzQwNjQsIAorICAgIDc0MDY5LCA3NDA3NCwgNzQwNzksIDc0MDg0LCA3NDA4OSwgNzQwOTQsIDc0MTAwLCA3NDEwNiwgNzQxMTIsIDc0MTE4LCAKKyAgICA3NDEyMywgNzQxMjksIDc0MTMyLCA3NDEzNSwgNzQxMzgsIDc0MTQyLCA3NDE0NiwgNzQxNTAsIDc0MTU0LCA3NDE1NywgCisgICAgNzQxNjEsIDc0MTY0LCA3NDE2NywgNzQxNzAsIDc0MTc0LCA3NDE3OCwgNzQxODIsIDc0MTg2LCA3NDE5MCwgNzQxOTQsIAorICAgIDc0MTk4LCA3NDIwMiwgNzQyMDYsIDc0MjEwLCA3NDIxNCwgNzQyMTgsIDc0MjIyLCA3NDIyNiwgNzQyMzAsIDc0MjM0LCAKKyAgICA3NDIzOCwgNzQyNDIsIDc0MjQ2LCA3NDI1MCwgNzQyNTQsIDc0MjU4LCA3NDI2MSwgNzQyNjUsIDc0MjY5LCA3NDI3MywgCisgICAgNzQyNzcsIDc0MjgxLCA3NDI4NSwgNzQyODksIDc0MjkzLCA3NDI5NywgNzQzMDEsIDc0MzA1LCA3NDMwOSwgNzQzMTMsIAorICAgIDc0MzE3LCA3NDMyMSwgNzQzMjUsIDc0MzI5LCA3NDMzMywgNzQzMzcsIDc0MzQxLCA3NDM0NSwgNzQzNDksIDc0MzUzLCAKKyAgICA3NDM1NywgNzQzNjAsIDc0MzY0LCA3NDM2OCwgNzQzNzIsIDc0Mzc2LCA3NDM4MCwgNzQzODQsIDc0Mzg4LCA3NDM5MSwgCisgICAgNzQzOTUsIDc0Mzk5LCA3NDQwMywgNzQ0MDcsIDc0NDExLCA3NDQxNSwgNzQ0MTksIDc0NDIzLCA3NDQyNywgNzQ0MzEsIAorICAgIDc0NDM1LCA3NDQzOSwgNzQ0NDQsIDc0NDQ5LCA3NDQ1MiwgNzQ0NTcsIDc0NDYwLCA3NDQ2MywgNzQ0NjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc0NDcwLCA3NDQ3OSwgNzQ0ODgsIDc0NDk3LCA3NDUwNiwgNzQ1MTUsIDc0NTI0LCA3NDUzMywgCisgICAgNzQ1NDIsIDc0NTUwLCA3NDU1NywgNzQ1NjUsIDc0NTcyLCA3NDU4MCwgNzQ1OTAsIDc0NTk5LCA3NDYwOSwgNzQ2MTgsIAorICAgIDc0NjI4LCA3NDYzNiwgNzQ2NDMsIDc0NjUxLCA3NDY1OCwgNzQ2NjYsIDc0NjcxLCA3NDY3NiwgNzQ2ODIsIDc0NjkxLCAKKyAgICA3NDY5NywgNzQ3MDMsIDc0NzEwLCA3NDcxOSwgNzQ3MjcsIDc0NzM1LCA3NDc0MywgNzQ3NTAsIDc0NzU3LCA3NDc2NCwgCisgICAgNzQ3NzEsIDc0Nzc2LCA3NDc4MSwgNzQ3ODYsIDc0NzkxLCA3NDc5NiwgNzQ4MDEsIDc0ODA2LCA3NDgxMSwgNzQ4MTksIAorICAgIDc0ODI3LCA3NDgzMywgNzQ4MzksIDc0ODQ0LCA3NDg0OSwgNzQ4NTQsIDc0ODU5LCA3NDg2NCwgNzQ4NjksIDc0ODc0LCAKKyAgICA3NDg3OSwgNzQ4ODgsIDc0ODk3LCA3NDkwMiwgNzQ5MDcsIDc0OTE3LCA3NDkyNywgNzQ5MzQsIDc0OTQxLCA3NDk1MCwgCisgICAgNzQ5NTksIDc0OTcxLCA3NDk4MywgNzQ5ODksIDc0OTk1LCA3NTAwMywgNzUwMTEsIDc1MDIxLCA3NTAzMSwgNzUwMzgsIAorICAgIDc1MDQ1LCA3NTA1MCwgNzUwNTUsIDc1MDY3LCA3NTA3OSwgNzUwODcsIDc1MDk1LCA3NTEwNSwgNzUxMTUsIDc1MTI3LCAKKyAgICA3NTEzOSwgNzUxNDgsIDc1MTU3LCA3NTE2NCwgNzUxNzEsIDc1MTc4LCA3NTE4NSwgNzUxOTQsIDc1MjAzLCA3NTIwOCwgCisgICAgNzUyMTMsIDc1MjIwLCA3NTIyNywgNzUyMzQsIDc1MjQxLCA3NTI1MywgNzUyNjUsIDc1MjcwLCA3NTI3NSwgNzUyODAsIAorICAgIDc1Mjg1LCA3NTI5MCwgNzUyOTUsIDc1MzAwLCA3NTMwNSwgNzUzMDksIDc1MzE0LCA3NTMxOSwgNzUzMjQsIDc1MzI5LCAKKyAgICA3NTMzNCwgNzUzNDAsIDc1MzQ1LCA3NTM1MCwgNzUzNTcsIDc1MzY0LCA3NTM3MSwgNzUzNzgsIDc1Mzg1LCA3NTM5NCwgCisgICAgNzU0MDMsIDc1NDA5LCA3NTQxNSwgNzU0MjEsIDc1NDI3LCA3NTQzNCwgNzU0NDEsIDc1NDQ4LCA3NTQ1NSwgNzU0NjIsIAorICAgIDc1NDY2LCA3NTQ3MywgNzU0NzgsIDc1NDgzLCA3NTQ5MCwgNzU1MDMsIDc1NTA5LCA3NTUxNywgNzU1MjUsIDc1NTMyLCAKKyAgICA3NTUzOSwgNzU1NDgsIDc1NTU3LCA3NTU2NCwgNzU1NzEsIDc1NTc4LCA3NTU4NSwgNzU1OTIsIDc1NTk5LCA3NTYwNiwgCisgICAgNzU2MTMsIDc1NjIwLCA3NTYyNywgNzU2MzYsIDc1NjQ1LCA3NTY1NCwgNzU2NjMsIDc1NjcyLCA3NTY4MSwgNzU2OTAsIAorICAgIDc1Njk5LCA3NTcwOCwgNzU3MTcsIDc1NzI0LCA3NTczMSwgNzU3MzcsIDc1NzQ1LCAwLCA3NTc1MSwgNzU3NTgsIDc1NzY1LCAKKyAgICA3NTc3MywgNzU3NzgsIDc1NzgzLCA3NTc4OCwgNzU3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc1MDU2LCA3NTA2MywgNzUwNzAsIDc1MDc2LCA3NTA4NCwgNzUwOTIsIDc1MTAwLCA3NTEwOCwgNzUxMTYsIAotICAgIDc1MTI0LCA3NTEzMCwgNzUxMzYsIDc1MTQzLCA3NTE0OSwgNzUxNTUsIDc1MTYxLCA3NTE2OCwgNzUxNzUsIDc1MTgyLCAKLSAgICA3NTE4OSwgNzUxOTYsIDc1MjAzLCA3NTIxMCwgNzUyMTcsIDc1MjI0LCA3NTIzMSwgNzUyMzgsIDc1MjQ1LCA3NTI1MiwgCi0gICAgNzUyNTksIDc1MjY1LCA3NTI3MiwgNzUyNzksIDc1Mjg2LCA3NTI5MywgNzUzMDAsIDc1MzA3LCA3NTMxNCwgNzUzMjEsIAotICAgIDc1MzI4LCA3NTMzNSwgNzUzNDIsIDc1MzQ5LCA3NTM1NiwgNzUzNjMsIDc1MzcwLCA3NTM3NywgNzUzODQsIDc1MzkxLCAKLSAgICA3NTM5OSwgNzU0MDcsIDc1NDE1LCA3NTQyMywgMCwgMCwgMCwgMCwgNzU0MzEsIDc1NDM5LCA3NTQ0NywgNzU0NTUsIAotICAgIDc1NDYzLCA3NTQ3MSwgNzU0NzksIDc1NDg1LCA3NTQ5MSwgNzU0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTAzLCA3NTUwNywgCi0gICAgNzU1MTIsIDc1NTE3LCA3NTUyMiwgNzU1MjcsIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1MiwgNzU1NTcsIAotICAgIDc1NTYyLCA3NTU2NiwgNzU1NzEsIDc1NTc2LCA3NTU4MCwgNzU1ODUsIDc1NTkwLCA3NTU5NSwgNzU2MDAsIDc1NjA1LCAKLSAgICA3NTYxMCwgNzU2MTUsIDc1NjE5LCA3NTYyNCwgNzU2MjksIDc1NjM0LCA3NTYzOSwgNzU2NDMsIDc1NjQ3LCA3NTY1MSwgCi0gICAgNzU2NTUsIDc1NjU5LCA3NTY2MywgNzU2NjgsIDc1NjczLCA3NTY3OCwgNzU2ODMsIDc1Njg4LCA3NTY5NSwgNzU3MDEsIAotICAgIDc1NzA2LCA3NTcxMSwgNzU3MTYsIDc1NzIxLCA3NTcyNywgNzU3MzQsIDc1NzQwLCA3NTc0NywgNzU3NTQsIDc1NzYxLCAKLSAgICA3NTc2NiwgNzU3NzMsIDc1Nzc5LCA3NTc4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU3OTAsIDc1Nzk1LCA3NTgwMCwgCi0gICAgNzU4MDQsIDc1ODA5LCA3NTgxMywgNzU4MTgsIDc1ODIyLCA3NTgyNywgNzU4MzIsIDc1ODM4LCA3NTg0MywgNzU4NDksIAotICAgIDc1ODUzLCA3NTg1OCwgNzU4NjMsIDc1ODY3LCA3NTg3MiwgNzU4NzcsIDc1ODgxLCA3NTg4NiwgNzU4OTEsIDc1ODk2LCAKLSAgICA3NTkwMSwgNzU5MDYsIDc1OTExLCA3NTkxNiwgNzU5MjEsIDc1OTI2LCA3NTkzMSwgNzU5MzYsIDc1OTQxLCA3NTk0NiwgCi0gICAgNzU5NTEsIDc1OTU2LCA3NTk2MSwgNzU5NjYsIDc1OTcxLCA3NTk3NiwgNzU5ODAsIDc1OTg1LCA3NTk5MCwgNzU5OTUsIAotICAgIDc1OTk5LCA3NjAwMywgNzYwMDgsIDc2MDEzLCA3NjAxOCwgNzYwMjMsIDc2MDI4LCA3NjAzMywgNzYwMzcsIDc2MDQyLCAKLSAgICA3NjA0OCwgNzYwNTQsIDc2MDU5LCA3NjA2NSwgNzYwNzAsIDc2MDc2LCA3NjA4MiwgNzYwODksIDc2MDk1LCA3NjEwMiwgCi0gICAgNzYxMDcsIDc2MTEzLCA3NjExOSwgNzYxMjQsIDc2MTMwLCA3NjEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzYxNDEsIDc2MTQ1LCA3NjE1MCwgNzYxNTUsIDc2MTU5LCA3NjE2MywgNzYxNjcsIDc2MTcxLCA3NjE3NSwgNzYxNzksIAotICAgIDc2MTg0LCA3NjE4OCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxOTMsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCi0gICAgNzYyMTgsIDc2MjIyLCA3NjIyNywgNzYyMzEsIDc2MjM2LCA3NjI0MCwgNzYyNDQsIDc2MjQ4LCA3NjI1MywgNzYyNTcsIAotICAgIDc2MjYyLCA3NjI2NywgNzYyNzIsIDc2Mjc4LCA3NjI4NCwgNzYyOTEsIDc2Mjk2LCA3NjMwMSwgNzYzMDcsIDc2MzExLCAKLSAgICA3NjMxNiwgNzYzMTksIDc2MzIyLCA3NjMyNiwgMCwgMCwgNzYzMzEsIDc2MzM4LCA3NjM0NCwgNzYzNTAsIDc2MzU2LCAKLSAgICA3NjM2MiwgNzYzNjgsIDc2Mzc0LCA3NjM4MSwgNzYzODcsIDc2Mzk0LCA3NjQwMCwgNzY0MDcsIDc2NDE0LCA3NjQyMSwgCi0gICAgNzY0MjgsIDc2NDM1LCA3NjQ0MiwgNzY0NDksIDc2NDU2LCA3NjQ2MywgNzY0NzAsIDc2NDc2LCA3NjQ4MywgNzY0ODksIAotICAgIDc2NDk2LCA3NjUwMywgNzY1MTAsIDc2NTE2LCA3NjUyMywgNzY1MzAsIDc2NTM3LCA3NjU0MywgNzY1NTAsIDc2NTU3LCAKLSAgICA3NjU2MywgNzY1NzAsIDc2NTc2LCA3NjU4MywgNzY1OTAsIDc2NTk2LCA3NjYwMiwgNzY2MDksIDc2NjE1LCA3NjYyMiwgCi0gICAgNzY2MjksIDc2NjM4LCA3NjY0NSwgNzY2NTIsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIAotICAgIDc2Njg1LCA3NjY5MCwgNzY2OTQsIDc2Njk5LCA3NjcwNCwgNzY3MDksIDc2NzE0LCA3NjcxOSwgNzY3MjQsIDc2NzI4LCAKLSAgICA3NjczMywgNzY3MzcsIDc2NzQyLCA3Njc0NywgNzY3NTIsIDc2NzU3LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NiwgCi0gICAgNzY3ODIsIDc2Nzg3LCA3Njc5MywgNzY3OTksIDc2ODA1LCA3NjgxMSwgNzY4MTcsIDc2ODIyLCA3NjgyOCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY4MzIsIDc2ODM3LCA3Njg0MSwgNzY4NDUsIDc2ODQ5LCA3Njg1MywgNzY4NTcsIAotICAgIDc2ODYxLCA3Njg2NSwgNzY4NjksIDc2ODczLCA3Njg3NywgNzY4ODEsIDc2ODg1LCA3Njg4OSwgNzY4OTMsIDc2ODk3LCAKLSAgICA3NjkwMSwgNzY5MDUsIDc2OTA5LCA3NjkxMywgNzY5MTcsIDc2OTIxLCA3NjkyNSwgNzY5MjksIDc2OTMzLCA3NjkzNywgCi0gICAgNzY5NDEsIDc2OTQ1LCA3Njk0OSwgMCwgMCwgMCwgNzY5NTMsIDc2OTU3LCA3Njk2MSwgNzY5NjUsIDc2OTY5LCA3Njk3MiwgCi0gICAgNzY5NzgsIDc2OTgxLCA3Njk4NSwgNzY5ODgsIDc2OTk0LCA3NzAwMCwgNzcwMDgsIDc3MDExLCA3NzAxNSwgNzcwMTgsIAotICAgIDc3MDIxLCA3NzAyNywgNzcwMzMsIDc3MDM3LCA3NzA0MywgNzcwNDcsIDc3MDUxLCA3NzA1NywgNzcwNjEsIDc3MDY3LCAKLSAgICA3NzA3MywgNzcwNzcsIDc3MDgxLCA3NzA4NywgNzcwOTEsIDc3MDk3LCA3NzEwMywgNzcxMDcsIDc3MTEzLCA3NzExNywgCi0gICAgNzcxMjMsIDc3MTI3LCA3NzEzMCwgNzcxMzYsIDc3MTQwLCA3NzE0NiwgNzcxNDksIDc3MTUyLCA3NzE1NiwgNzcxNjIsIAotICAgIDc3MTY2LCA3NzE3MCwgNzcxNzYsIDc3MTgyLCA3NzE4NiwgNzcxODksIDc3MTk1LCA3NzIwMCwgNzcyMDUsIDc3MjEwLCAKLSAgICA3NzIxNywgNzcyMjIsIDc3MjI5LCA3NzIzNCwgNzcyNDEsIDc3MjQ2LCA3NzI1MSwgNzcyNTYsIDc3MjYxLCA3NzI2NCwgCi0gICAgNzcyNjgsIDc3MjcyLCA3NzI3NywgNzcyODIsIDc3Mjg3LCA3NzI5MiwgNzcyOTcsIDc3MzAyLCA3NzMwNywgNzczMTIsIAotICAgIDc3MzE5LCA3NzMyNCwgMCwgNzczMzEsIDc3MzM0LCA3NzMzOCwgNzczNDEsIDc3MzQ0LCA3NzM0NywgNzczNTAsIDc3MzUzLCAKLSAgICA3NzM1NiwgNzczNjAsIDc3MzYzLCAwLCAwLCAwLCAwLCA3NzM2NywgNzczNzQsIDc3Mzc5LCA3NzM4NSwgNzczOTEsIAotICAgIDc3Mzk3LCA3NzQwMywgNzc0MDksIDc3NDE1LCA3NzQyMiwgNzc0MjksIDc3NDM2LCA3NzQ0MywgNzc0NTAsIDc3NDU3LCAKLSAgICA3NzQ2NCwgNzc0NzEsIDc3NDc4LCA3NzQ4NSwgNzc0OTIsIDc3NDk4LCA3NzUwNCwgNzc1MTAsIDc3NTE2LCA3NzUyMiwgCi0gICAgNzc1MjgsIDc3NTM1LCA3NzU0MSwgNzc1NDgsIDc3NTU1LCA3NzU2MiwgNzc1NjksIDc3NTc2LCAwLCA3NzU4MywgNzc1ODcsIAotICAgIDc3NTkxLCA3NzU5NSwgNzc1OTksIDc3NjA0LCA3NzYwOCwgNzc2MTIsIDc3NjE3LCA3NzYyMiwgNzc2MjcsIDc3NjMyLCAKLSAgICA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIDc3Njc3LCA3NzY4MiwgCi0gICAgNzc2ODcsIDc3NjkyLCA3NzY5NywgNzc3MDIsIDc3NzA3LCA3NzcxMSwgNzc3MTYsIDc3NzIxLCA3NzcyNiwgNzc3MzEsIAotICAgIDc3NzM2LCA3Nzc0MCwgNzc3NDUsIDc3NzQ5LCA3Nzc1NCwgNzc3NTksIDc3NzY0LCA3Nzc2OSwgNzc3NzQsIDc3Nzc4LCAKLSAgICA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3NzgwMSwgNzc4MDYsIDc3ODEyLCA3NzgxNywgNzc4MjMsIDc3ODI5LCA3NzgzNSwgCi0gICAgNzc4NDAsIDc3ODQ2LCA3Nzg1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc4NTgsIDc3ODY0LCA3Nzg3MCwgCi0gICAgNzc4NzYsIDc3ODgzLCA3Nzg4OSwgNzc4OTUsIDc3OTAxLCA3NzkwNywgNzc5MTMsIDc3OTE4LCA3NzkyMywgNzc5MjksIAotICAgIDc3OTM2LCAwLCAwLCA3Nzk0MywgNzc5NDgsIDc3OTUyLCA3Nzk1NiwgNzc5NjAsIDc3OTY0LCA3Nzk2OCwgNzc5NzIsIAotICAgIDc3OTc3LCA3Nzk4MSwgMCwgMCwgNzc5ODYsIDc3OTkyLCA3Nzk5OCwgNzgwMDUsIDc4MDEzLCA3ODAxOSwgNzgwMjUsIAotICAgIDc4MDMxLCA3ODAzNywgNzgwNDMsIDc4MDQ5LCA3ODA1NSwgNzgwNjEsIDc4MDY3LCA3ODA3MywgNzgwNzksIDc4MDg1LCAKLSAgICA3ODA5MSwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTUsIDc4MTIxLCA3ODEyNywgNzgxMzMsIDc4MTQwLCA3ODE0NywgCi0gICAgNzgxNTQsIDc4MTYwLCA3ODE2NSwgNzgxNzAsIDc4MTc2LCA3ODE4NCwgNzgxOTEsIDc4MTk4LCA3ODIwNiwgNzgyMTQsIAotICAgIDc4MjIxLCA3ODIyOCwgNzgyMzUsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKLSAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI2LCA3ODMzMywgNzgzNDAsIDc4MzQ3LCA3ODM1NCwgCi0gICAgNzgzNjAsIDc4MzY2LCA3ODM3MywgNzgzODAsIDc4Mzg3LCA3ODM5NCwgNzg0MDEsIDc4NDA4LCA3ODQxNSwgNzg0MjIsIAotICAgIDc4NDI5LCA3ODQzNiwgNzg0NDMsIDc4NDUwLCA3ODQ1NywgNzg0NjQsIDc4NDcxLCA3ODQ3OCwgNzg0ODUsIDc4NDkyLCAKLSAgICA3ODQ5OSwgNzg1MDYsIDc4NTEzLCA3ODUyMCwgNzg1MjcsIDc4NTM0LCA3ODU0MCwgNzg1NDYsIDc4NTUzLCA3ODU1OSwgCi0gICAgNzg1NjQsIDc4NTcwLCA3ODU3NSwgNzg1ODAsIDc4NTg1LCA3ODU5MiwgNzg1OTgsIDc4NjA0LCA3ODYxMCwgNzg2MTYsIAotICAgIDc4NjIyLCA3ODYyOCwgNzg2MzQsIDc4NjQyLCA3ODY1MCwgNzg2NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjY2LCA3ODY3MiwgNzg2NzgsIDc4Njg0LCAKLSAgICA3ODY5MiwgNzg3MDAsIDc4NzA2LCA3ODcxMiwgNzg3MTksIDc4NzI2LCA3ODczMywgNzg3NDAsIDc4NzQ3LCA3ODc1NCwgCi0gICAgNzg3NjEsIDc4NzY4LCA3ODc3NSwgNzg3ODMsIDc4NzkxLCA3ODc5OSwgNzg4MDcsIDc4ODE1LCA3ODgyMSwgNzg4MjksIAotICAgIDc4ODM1LCA3ODg0MywgNzg4NTIsIDc4ODYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODg2NiwgNzg4NzAsIAotICAgIDc4ODc0LCA3ODg3OCwgNzg4ODIsIDc4ODg2LCAwLCAwLCA3ODg5MCwgNzg4OTQsIDc4ODk4LCA3ODkwMiwgNzg5MDYsIAotICAgIDc4OTEwLCAwLCAwLCA3ODkxNCwgNzg5MTgsIDc4OTIyLCA3ODkyNiwgNzg5MzAsIDc4OTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3ODkzOCwgNzg5NDIsIDc4OTQ2LCA3ODk1MCwgNzg5NTQsIDc4OTU4LCA3ODk2MiwgMCwgNzg5NjYsIAotICAgIDc4OTcwLCA3ODk3NCwgNzg5NzgsIDc4OTgyLCA3ODk4NiwgNzg5OTAsIDAsIDc4OTk0LCA3OTAwMSwgNzkwMDcsIDc5MDEzLCAKLSAgICA3OTAxOSwgNzkwMjYsIDc5MDMzLCA3OTA0MiwgNzkwNTMsIDc5MDYzLCA3OTA3MiwgNzkwODAsIDc5MDg4LCA3OTA5NiwgCi0gICAgNzkxMDIsIDc5MTEwLCA3OTExNywgNzkxMjQsIDc5MTMzLCA3OTE0NCwgNzkxNTIsIDc5MTYyLCA3OTE2OCwgNzkxNzgsIAotICAgIDc5MTg3LCA3OTE5MiwgNzkyMDAsIDc5MjA5LCA3OTIxNCwgNzkyMjMsIDc5MjMwLCA3OTI0MCwgNzkyNTIsIDc5MjU3LCAKLSAgICA3OTI2NCwgNzkyNzEsIDc5Mjc2LCA3OTI4NiwgNzkyOTYsIDc5MzA2LCA3OTMxNiwgNzkzMzEsIDc5MzQ0LCA3OTM1NSwgCi0gICAgNzkzNjMsIDc5MzY4LCA3OTM3OSwgNzkzODgsIDc5Mzk1LCA3OTQwMiwgNzk0MDgsIDc5NDE0LCA3OTQxOSwgNzk0MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDMyLCA3OTQzNiwgNzk0NDAsIDc5NDQ0LCA3OTQ0OCwgNzk0NTIsIAotICAgIDc5NDU3LCA3OTQ2MiwgNzk0NjYsIDc5NDcxLCA3OTQ3NiwgNzk0ODEsIDc5NDg2LCA3OTQ5MSwgNzk0OTUsIDc5NTAwLCAKLSAgICA3OTUwNSwgNzk1MTAsIDc5NTE1LCA3OTUyMCwgNzk1MjUsIDc5NTMwLCA3OTUzNSwgNzk1NDAsIDc5NTQ1LCA3OTU1MCwgCi0gICAgNzk1NTQsIDc5NTU5LCA3OTU2NCwgNzk1NjksIDc5NTc0LCA3OTU3OSwgNzk1ODQsIDc5NTg5LCA3OTU5NCwgNzk1OTksIAotICAgIDc5NjA0LCA3OTYwOSwgNzk2MTQsIDc5NjE5LCA3OTYyNCwgNzk2MjksIDc5NjM0LCA3OTYzOSwgNzk2NDQsIDc5NjQ5LCAKLSAgICA3OTY1MywgNzk2NTgsIDc5NjYzLCA3OTY2OCwgNzk2NzMsIDc5Njc4LCA3OTY4MywgNzk2ODgsIDc5NjkzLCA3OTY5OCwgCi0gICAgNzk3MDMsIDc5NzA4LCA3OTcxMywgNzk3MTgsIDc5NzIzLCA3OTcyOCwgNzk3MzMsIDc5NzM4LCA3OTc0MywgNzk3NDgsIAotICAgIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3MywgNzk3NzgsIDc5NzgzLCA3OTc4OCwgNzk3OTMsIDc5Nzk4LCAKLSAgICA3OTgwMywgNzk4MDgsIDc5ODEzLCA3OTgxOCwgNzk4MjIsIDc5ODI5LCA3OTgzNiwgNzk4NDMsIDc5ODUwLCA3OTg1NiwgCi0gICAgNzk4NjMsIDc5ODcwLCA3OTg3NywgNzk4ODQsIDc5ODkxLCA3OTg5OCwgNzk5MDUsIDc5OTEyLCA3OTkxOSwgNzk5MjYsIAotICAgIDc5OTMyLCA3OTkzOSwgNzk5NDYsIDc5OTUzLCA3OTk2MCwgNzk5NjcsIDc5OTc0LCA3OTk4MSwgNzk5ODgsIDc5OTk1LCAKLSAgICA4MDAwMiwgODAwMDksIDgwMDE4LCA4MDAyNywgODAwMzYsIDgwMDQ1LCA4MDA1NCwgODAwNjMsIDgwMDcyLCA4MDA4MSwgCi0gICAgODAwODksIDgwMDk3LCA4MDEwNSwgODAxMTMsIDgwMTIxLCA4MDEyOSwgODAxMzcsIDgwMTQ1LCA4MDE1MSwgODAxNTksIDAsIAotICAgIDAsIDgwMTY3LCA4MDE3NCwgODAxODAsIDgwMTg2LCA4MDE5MiwgODAxOTgsIDgwMjA0LCA4MDIxMCwgODAyMTcsIDgwMjIzLCAKKyAgICAwLCAwLCA3NTc5OCwgNzU4MDUsIDc1ODEyLCA3NTgxOCwgNzU4MjYsIDc1ODM0LCA3NTg0MiwgNzU4NTAsIDc1ODU4LCAKKyAgICA3NTg2NiwgNzU4NzIsIDc1ODc4LCA3NTg4NSwgNzU4OTEsIDc1ODk3LCA3NTkwMywgNzU5MTAsIDc1OTE3LCA3NTkyNCwgCisgICAgNzU5MzEsIDc1OTM4LCA3NTk0NSwgNzU5NTIsIDc1OTU5LCA3NTk2NiwgNzU5NzMsIDc1OTgwLCA3NTk4NywgNzU5OTQsIAorICAgIDc2MDAxLCA3NjAwNywgNzYwMTQsIDc2MDIxLCA3NjAyOCwgNzYwMzUsIDc2MDQyLCA3NjA0OSwgNzYwNTYsIDc2MDYzLCAKKyAgICA3NjA3MCwgNzYwNzcsIDc2MDg0LCA3NjA5MSwgNzYwOTgsIDc2MTA1LCA3NjExMiwgNzYxMTksIDc2MTI2LCA3NjEzMywgCisgICAgNzYxNDEsIDc2MTQ5LCA3NjE1NywgNzYxNjUsIDAsIDAsIDAsIDAsIDc2MTczLCA3NjE4MSwgNzYxODksIDc2MTk3LCAKKyAgICA3NjIwNSwgNzYyMTMsIDc2MjIxLCA3NjIyNywgNzYyMzMsIDc2MjM5LCAwLCAwLCAwLCAwLCAwLCAwLCA3NjI0NSwgNzYyNDksIAorICAgIDc2MjU0LCA3NjI1OSwgNzYyNjQsIDc2MjY5LCA3NjI3NCwgNzYyNzksIDc2Mjg0LCA3NjI4OSwgNzYyOTQsIDc2Mjk5LCAKKyAgICA3NjMwMywgNzYzMDcsIDc2MzEyLCA3NjMxNywgNzYzMjEsIDc2MzI2LCA3NjMzMSwgNzYzMzYsIDc2MzQxLCA3NjM0NiwgCisgICAgNzYzNTEsIDc2MzU2LCA3NjM2MCwgNzYzNjUsIDc2MzY5LCA3NjM3NCwgNzYzNzksIDc2MzgzLCA3NjM4NywgNzYzOTEsIAorICAgIDc2Mzk1LCA3NjM5OSwgNzY0MDMsIDc2NDA4LCA3NjQxMywgNzY0MTgsIDc2NDIzLCA3NjQyOCwgNzY0MzUsIDc2NDQxLCAKKyAgICA3NjQ0NiwgNzY0NTEsIDc2NDU2LCA3NjQ2MSwgNzY0NjcsIDc2NDc0LCA3NjQ4MCwgNzY0ODcsIDc2NDk0LCA3NjUwMSwgCisgICAgNzY1MDYsIDc2NTEzLCA3NjUxOSwgNzY1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2NTMwLCA3NjUzNSwgNzY1NDAsIAorICAgIDc2NTQ0LCA3NjU0OSwgNzY1NTMsIDc2NTU4LCA3NjU2MiwgNzY1NjcsIDc2NTcyLCA3NjU3OCwgNzY1ODMsIDc2NTg5LCAKKyAgICA3NjU5MywgNzY1OTgsIDc2NjAzLCA3NjYwNywgNzY2MTIsIDc2NjE3LCA3NjYyMSwgNzY2MjYsIDc2NjMxLCA3NjYzNiwgCisgICAgNzY2NDEsIDc2NjQ2LCA3NjY1MSwgNzY2NTYsIDc2NjYxLCA3NjY2NiwgNzY2NzEsIDc2Njc2LCA3NjY4MSwgNzY2ODYsIAorICAgIDc2NjkxLCA3NjY5NiwgNzY3MDEsIDc2NzA2LCA3NjcxMSwgNzY3MTUsIDc2NzE5LCA3NjcyNCwgNzY3MjksIDc2NzM0LCAKKyAgICA3NjczOCwgNzY3NDIsIDc2NzQ3LCA3Njc1MSwgNzY3NTYsIDc2NzYxLCA3Njc2NiwgNzY3NzEsIDc2Nzc1LCA3Njc4MCwgCisgICAgNzY3ODYsIDc2NzkyLCA3Njc5NywgNzY4MDMsIDc2ODA4LCA3NjgxNCwgNzY4MjAsIDc2ODI3LCA3NjgzMywgNzY4NDAsIAorICAgIDc2ODQ1LCA3Njg1MSwgNzY4NTcsIDc2ODYyLCA3Njg2OCwgNzY4NzQsIDc2ODc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3Njg4NCwgNzY4ODgsIDc2ODkzLCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgCisgICAgNzY5MjcsIDc2OTMxLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjkzNiwgNzY5NDEsIDc2OTQ1LCA3Njk0OSwgNzY5NTMsIDc2OTU3LCAKKyAgICA3Njk2MSwgNzY5NjUsIDc2OTcwLCA3Njk3NCwgNzY5NzksIDc2OTgzLCA3Njk4NywgNzY5OTEsIDc2OTk1LCA3Njk5OSwgCisgICAgNzcwMDQsIDc3MDA5LCA3NzAxNCwgNzcwMjAsIDc3MDI2LCA3NzAzMywgNzcwMzgsIDc3MDQzLCA3NzA0OSwgNzcwNTMsIAorICAgIDc3MDU4LCA3NzA2MSwgNzcwNjQsIDc3MDY4LCAwLCAwLCA3NzA3MywgNzcwODAsIDc3MDg2LCA3NzA5MiwgNzcwOTgsIAorICAgIDc3MTA0LCA3NzExMCwgNzcxMTYsIDc3MTIzLCA3NzEyOSwgNzcxMzYsIDc3MTQyLCA3NzE0OSwgNzcxNTYsIDc3MTYzLCAKKyAgICA3NzE3MCwgNzcxNzcsIDc3MTg0LCA3NzE5MSwgNzcxOTgsIDc3MjA1LCA3NzIxMSwgNzcyMTcsIDc3MjI0LCA3NzIzMCwgCisgICAgNzcyMzcsIDc3MjQ0LCA3NzI1MSwgNzcyNTcsIDc3MjYzLCA3NzI3MCwgNzcyNzcsIDc3MjgzLCA3NzI5MCwgNzcyOTcsIAorICAgIDc3MzAzLCA3NzMxMCwgNzczMTYsIDc3MzIzLCA3NzMzMCwgNzczMzYsIDc3MzQyLCA3NzM0OSwgNzczNTUsIDc3MzYyLCAKKyAgICA3NzM2OSwgNzczNzgsIDc3Mzg1LCA3NzM5MiwgNzczOTYsIDc3NDAxLCA3NzQwNiwgNzc0MTEsIDc3NDE2LCA3NzQyMCwgCisgICAgNzc0MjQsIDc3NDI5LCA3NzQzMywgNzc0MzgsIDc3NDQzLCA3NzQ0OCwgNzc0NTMsIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIAorICAgIDc3NDcxLCA3NzQ3NSwgNzc0ODAsIDc3NDg1LCA3NzQ5MCwgNzc0OTUsIDc3NDk5LCA3NzUwNCwgNzc1MDksIDc3NTE0LCAKKyAgICA3NzUyMCwgNzc1MjUsIDc3NTMxLCA3NzUzNywgNzc1NDMsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzU3MCwgNzc1NzUsIDc3NTc5LCA3NzU4MywgNzc1ODcsIDc3NTkxLCA3NzU5NSwgCisgICAgNzc1OTksIDc3NjAzLCA3NzYwNywgNzc2MTEsIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzUsIAorICAgIDc3NjM5LCA3NzY0MywgNzc2NDcsIDc3NjUxLCA3NzY1NSwgNzc2NTksIDc3NjYzLCA3NzY2NywgNzc2NzEsIDc3Njc1LCAKKyAgICA3NzY3OSwgNzc2ODMsIDc3Njg3LCAwLCAwLCAwLCA3NzY5MSwgNzc2OTYsIDc3NzAxLCA3NzcwNiwgNzc3MTEsIDc3NzE1LCAKKyAgICA3NzcyMiwgNzc3MjYsIDc3NzMxLCA3NzczNSwgNzc3NDIsIDc3NzQ5LCA3Nzc1OCwgNzc3NjIsIDc3NzY3LCA3Nzc3MSwgCisgICAgNzc3NzUsIDc3NzgyLCA3Nzc4OSwgNzc3OTQsIDc3ODAxLCA3NzgwNiwgNzc4MTEsIDc3ODE4LCA3NzgyMywgNzc4MzAsIAorICAgIDc3ODM3LCA3Nzg0MiwgNzc4NDcsIDc3ODU0LCA3Nzg1OSwgNzc4NjYsIDc3ODczLCA3Nzg3OCwgNzc4ODUsIDc3ODkwLCAKKyAgICA3Nzg5NywgNzc5MDEsIDc3OTA1LCA3NzkxMiwgNzc5MTcsIDc3OTI0LCA3NzkyOCwgNzc5MzIsIDc3OTM3LCA3Nzk0NCwgCisgICAgNzc5NDgsIDc3OTUzLCA3Nzk2MCwgNzc5NjcsIDc3OTcyLCA3Nzk3NiwgNzc5ODMsIDc3OTg5LCA3Nzk5NSwgNzgwMDEsIAorICAgIDc4MDA5LCA3ODAxNSwgNzgwMjMsIDc4MDI5LCA3ODAzNywgNzgwNDMsIDc4MDQ5LCA3ODA1NSwgNzgwNjEsIDc4MDY1LCAKKyAgICA3ODA3MCwgNzgwNzUsIDc4MDgxLCA3ODA4NywgNzgwOTMsIDc4MDk5LCA3ODEwNSwgNzgxMTEsIDc4MTE3LCA3ODEyMywgCisgICAgNzgxMzEsIDc4MTM3LCAwLCA3ODE0NSwgNzgxNDksIDc4MTU0LCA3ODE1OCwgNzgxNjIsIDc4MTY2LCA3ODE3MCwgNzgxNzQsIAorICAgIDc4MTc4LCA3ODE4MywgNzgxODcsIDAsIDAsIDAsIDAsIDc4MTkyLCA3ODIwMCwgNzgyMDYsIDc4MjEyLCA3ODIxOCwgCisgICAgNzgyMjQsIDc4MjMwLCA3ODIzNiwgNzgyNDIsIDc4MjQ5LCA3ODI1NiwgNzgyNjMsIDc4MjcwLCA3ODI3NywgNzgyODQsIAorICAgIDc4MjkxLCA3ODI5OCwgNzgzMDUsIDc4MzEyLCA3ODMxOSwgNzgzMjUsIDc4MzMxLCA3ODMzNywgNzgzNDMsIDc4MzQ5LCAKKyAgICA3ODM1NSwgNzgzNjIsIDc4MzY4LCA3ODM3NSwgNzgzODIsIDc4Mzg5LCA3ODM5NiwgNzg0MDMsIDAsIDc4NDEwLCA3ODQxNCwgCisgICAgNzg0MTgsIDc4NDIyLCA3ODQyNiwgNzg0MzEsIDc4NDM1LCA3ODQzOSwgNzg0NDQsIDc4NDQ5LCA3ODQ1NCwgNzg0NTksIAorICAgIDc4NDY0LCA3ODQ2OSwgNzg0NzQsIDc4NDc5LCA3ODQ4NCwgNzg0ODksIDc4NDk0LCA3ODQ5OSwgNzg1MDQsIDc4NTA5LCAKKyAgICA3ODUxNCwgNzg1MTksIDc4NTI0LCA3ODUyOCwgNzg1MzMsIDc4NTM3LCA3ODU0MiwgNzg1NDcsIDc4NTUyLCA3ODU1NywgCisgICAgNzg1NjIsIDc4NTY2LCA3ODU3MSwgNzg1NzUsIDc4NTgwLCA3ODU4NCwgNzg1ODksIDc4NTk0LCA3ODU5OSwgNzg2MDMsIAorICAgIDc4NjA5LCA3ODYxNCwgNzg2MjAsIDc4NjI2LCA3ODYzMSwgNzg2MzcsIDc4NjQyLCA3ODY0OCwgNzg2NTQsIDc4NjYwLCAKKyAgICA3ODY2NSwgNzg2NzEsIDc4Njc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY4MiwgNzg2ODgsIDc4Njk0LCAKKyAgICA3ODcwMCwgNzg3MDcsIDc4NzEzLCA3ODcxOSwgNzg3MjUsIDc4NzMxLCA3ODczNywgNzg3NDIsIDc4NzQ3LCA3ODc1MywgCisgICAgNzg3NjAsIDAsIDAsIDc4NzY3LCA3ODc3MiwgNzg3NzYsIDc4NzgwLCA3ODc4NCwgNzg3ODgsIDc4NzkyLCA3ODc5NiwgCisgICAgNzg4MDEsIDc4ODA1LCAwLCAwLCA3ODgxMCwgNzg4MTYsIDc4ODIyLCA3ODgyOSwgNzg4MzcsIDc4ODQzLCA3ODg0OSwgCisgICAgNzg4NTUsIDc4ODYxLCA3ODg2NywgNzg4NzMsIDc4ODc5LCA3ODg4NSwgNzg4OTEsIDc4ODk3LCA3ODkwMywgNzg5MDgsIAorICAgIDc4OTE0LCA3ODkxOSwgNzg5MjUsIDc4OTMxLCA3ODkzOCwgNzg5NDQsIDc4OTUwLCA3ODk1NiwgNzg5NjMsIDc4OTcwLCAKKyAgICA3ODk3NywgNzg5ODMsIDc4OTg4LCA3ODk5MywgNzg5OTksIDc5MDA3LCA3OTAxNCwgNzkwMjEsIDc5MDI5LCA3OTAzNywgCisgICAgNzkwNDQsIDc5MDUxLCA3OTA1OCwgNzkwNjUsIDc5MDcyLCA3OTA3OSwgNzkwODYsIDc5MDkzLCA3OTEwMCwgNzkxMDcsIAorICAgIDc5MTE0LCA3OTEyMSwgNzkxMjgsIDc5MTM1LCA3OTE0MiwgNzkxNDksIDc5MTU2LCA3OTE2MywgNzkxNzAsIDc5MTc3LCAKKyAgICA3OTE4MywgNzkxODksIDc5MTk2LCA3OTIwMywgNzkyMTAsIDc5MjE3LCA3OTIyNCwgNzkyMzEsIDc5MjM4LCA3OTI0NSwgCisgICAgNzkyNTIsIDc5MjU5LCA3OTI2NiwgNzkyNzMsIDc5MjgwLCA3OTI4NywgNzkyOTQsIDc5MzAxLCA3OTMwOCwgNzkzMTUsIAorICAgIDc5MzIyLCA3OTMyOSwgNzkzMzYsIDc5MzQzLCA3OTM1MCwgNzkzNTcsIDc5MzYzLCA3OTM2OSwgNzkzNzYsIDc5MzgyLCAKKyAgICA3OTM4NywgNzkzOTMsIDc5Mzk4LCA3OTQwMywgNzk0MDgsIDc5NDE1LCA3OTQyMSwgNzk0MjcsIDc5NDMzLCA3OTQzOSwgCisgICAgNzk0NDUsIDc5NDUxLCA3OTQ1NywgNzk0NjUsIDc5NDczLCA3OTQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk0ODksIDc5NDk1LCA3OTUwMSwgNzk1MDcsIAorICAgIDc5NTE1LCA3OTUyMywgNzk1MjksIDc5NTM1LCA3OTU0MiwgNzk1NDksIDc5NTU2LCA3OTU2MywgNzk1NzAsIDc5NTc3LCAKKyAgICA3OTU4NCwgNzk1OTEsIDc5NTk4LCA3OTYwNiwgNzk2MTQsIDc5NjIyLCA3OTYzMCwgNzk2MzgsIDc5NjQ0LCA3OTY1MiwgCisgICAgNzk2NTgsIDc5NjY2LCA3OTY3NSwgNzk2ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5Njg5LCA3OTY5MywgCisgICAgNzk2OTcsIDc5NzAxLCA3OTcwNSwgNzk3MDksIDAsIDAsIDc5NzEzLCA3OTcxNywgNzk3MjEsIDc5NzI1LCA3OTcyOSwgCisgICAgNzk3MzMsIDAsIDAsIDc5NzM3LCA3OTc0MSwgNzk3NDUsIDc5NzQ5LCA3OTc1MywgNzk3NTcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDc5NzYxLCA3OTc2NSwgNzk3NjksIDc5NzczLCA3OTc3NywgNzk3ODEsIDc5Nzg1LCAwLCA3OTc4OSwgCisgICAgNzk3OTMsIDc5Nzk3LCA3OTgwMSwgNzk4MDUsIDc5ODA5LCA3OTgxMywgMCwgNzk4MTcsIDc5ODI0LCA3OTgzMCwgNzk4MzYsIAorICAgIDc5ODQyLCA3OTg0OSwgNzk4NTYsIDc5ODY1LCA3OTg3NywgNzk4ODcsIDc5ODk2LCA3OTkwNCwgNzk5MTIsIDc5OTIwLCAKKyAgICA3OTkyNiwgNzk5MzQsIDc5OTQxLCA3OTk0OCwgNzk5NTcsIDc5OTY4LCA3OTk3NiwgNzk5ODYsIDc5OTkyLCA4MDAwMiwgCisgICAgODAwMTEsIDgwMDE2LCA4MDAyNCwgODAwMzMsIDgwMDM4LCA4MDA0NywgODAwNTQsIDgwMDY0LCA4MDA3NiwgODAwODEsIAorICAgIDgwMDg4LCA4MDA5NSwgODAxMDAsIDgwMTEwLCA4MDEyMCwgODAxMzAsIDgwMTQwLCA4MDE1NSwgODAxNjgsIDgwMTc5LCAKKyAgICA4MDE4NywgODAxOTIsIDgwMjA0LCA4MDIxMywgODAyMjAsIDgwMjI3LCA4MDIzMywgODAyMzksIDgwMjQ0LCA4MDI1MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyNTcsIDgwMjYxLCA4MDI2NSwgODAyNjksIDgwMjczLCA4MDI3NywgCisgICAgODAyODIsIDgwMjg3LCA4MDI5MSwgODAyOTYsIDgwMzAxLCA4MDMwNiwgODAzMTEsIDgwMzE2LCA4MDMyMCwgODAzMjUsIAorICAgIDgwMzMwLCA4MDMzNSwgODAzNDAsIDgwMzQ1LCA4MDM0OSwgODAzNTQsIDgwMzU5LCA4MDM2NCwgODAzNjksIDgwMzc0LCAKKyAgICA4MDM3OCwgODAzODMsIDgwMzg4LCA4MDM5MywgODAzOTgsIDgwNDAyLCA4MDQwNywgODA0MTIsIDgwNDE3LCA4MDQyMiwgCisgICAgODA0MjcsIDgwNDMyLCA4MDQzNywgODA0NDIsIDgwNDQ3LCA4MDQ1MiwgODA0NTcsIDgwNDYyLCA4MDQ2NywgODA0NzIsIAorICAgIDgwNDc3LCA4MDQ4MiwgODA0ODcsIDgwNDkyLCA4MDQ5NywgODA1MDIsIDgwNTA3LCA4MDUxMiwgODA1MTcsIDgwNTIyLCAKKyAgICA4MDUyNywgODA1MzIsIDgwNTM3LCA4MDU0MiwgODA1NDcsIDgwNTUyLCA4MDU1NywgODA1NjIsIDgwNTY3LCA4MDU3MiwgCisgICAgODA1NzcsIDgwNTgyLCA4MDU4NywgODA1OTIsIDgwNTk3LCA4MDYwMiwgODA2MDcsIDgwNjEyLCA4MDYxNywgODA2MjIsIAorICAgIDgwNjI3LCA4MDYzMiwgODA2MzcsIDgwNjQyLCA4MDY0NiwgODA2NTMsIDgwNjYwLCA4MDY2NywgODA2NzQsIDgwNjgwLCAKKyAgICA4MDY4NiwgODA2OTMsIDgwNzAwLCA4MDcwNywgODA3MTQsIDgwNzIxLCA4MDcyOCwgODA3MzUsIDgwNzQyLCA4MDc0OSwgCisgICAgODA3NTUsIDgwNzYyLCA4MDc2OSwgODA3NzYsIDgwNzgzLCA4MDc5MCwgODA3OTcsIDgwODA0LCA4MDgxMSwgODA4MTgsIAorICAgIDgwODI1LCA4MDgzMiwgODA4NDEsIDgwODUwLCA4MDg1OSwgODA4NjgsIDgwODc3LCA4MDg4NiwgODA4OTUsIDgwOTA0LCAKKyAgICA4MDkxMiwgODA5MjAsIDgwOTI4LCA4MDkzNiwgODA5NDQsIDgwOTUyLCA4MDk2MCwgODA5NjgsIDgwOTc0LCA4MDk4MiwgMCwgCisgICAgMCwgODA5OTAsIDgwOTk3LCA4MTAwMywgODEwMDksIDgxMDE1LCA4MTAyMSwgODEwMjcsIDgxMDMzLCA4MTA0MCwgODEwNDYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTgzMDAsNjE4ICsxOTQxOSw2MzQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDIzMCwgODAyMzQsIDgwMjM4LCA4MDI0MiwgCi0gICAgODAyNDYsIDgwMjUwLCA4MDI1NCwgODAyNTgsIDgwMjYyLCA4MDI2NiwgODAyNzAsIDgwMjc0LCA4MDI3OCwgODAyODIsIAotICAgIDgwMjg2LCA4MDI5MCwgODAyOTQsIDgwMjk4LCA4MDMwMiwgODAzMDYsIDgwMzEwLCA4MDMxNCwgODAzMTgsIDAsIDAsIDAsIAotICAgIDAsIDgwMzIyLCA4MDMyNiwgODAzMzAsIDgwMzM0LCA4MDMzOCwgODAzNDIsIDgwMzQ2LCA4MDM1MCwgODAzNTQsIDgwMzU4LCAKLSAgICA4MDM2MiwgODAzNjYsIDgwMzcwLCA4MDM3NCwgODAzNzgsIDgwMzgyLCA4MDM4NiwgODAzOTAsIDgwMzk0LCA4MDM5OCwgCi0gICAgODA0MDIsIDgwNDA2LCA4MDQxMCwgODA0MTQsIDgwNDE4LCA4MDQyMiwgODA0MjYsIDgwNDMwLCA4MDQzNCwgODA0MzgsIAotICAgIDgwNDQyLCA4MDQ0NiwgODA0NTAsIDgwNDU0LCA4MDQ1OCwgODA0NjIsIDgwNDY2LCA4MDQ3MCwgODA0NzQsIDgwNDc4LCAKLSAgICA4MDQ4MiwgODA0ODYsIDgwNDkwLCA4MDQ5NCwgODA0OTgsIDgwNTAyLCA4MDUwNiwgODA1MTAsIDgwNTE0LCAwLCAwLCAwLCAKLSAgICAwLCA4MDUxOCwgODA1MjIsIDgwNTI2LCA4MDUzMCwgODA1MzQsIDgwNTM4LCA4MDU0MiwgODA1NDYsIDgwNTUwLCA4MDU1NCwgCi0gICAgODA1NTgsIDgwNTYyLCA4MDU2NiwgODA1NzAsIDgwNTc0LCA4MDU3OCwgODA1ODIsIDgwNTg2LCA4MDU5MCwgODA1OTQsIAotICAgIDgwNTk4LCA4MDYwMiwgODA2MDYsIDgwNjEwLCA4MDYxNCwgODA2MTgsIDgwNjIyLCA4MDYyNiwgODA2MzAsIDgwNjM0LCAKLSAgICA4MDYzOCwgODA2NDIsIDgwNjQ2LCA4MDY1MCwgODA2NTQsIDgwNjU4LCA4MDY2MiwgODA2NjYsIDgwNjcwLCA4MDY3NCwgCi0gICAgODA2NzgsIDgwNjgyLCA4MDY4NiwgODA2OTAsIDgwNjk0LCA4MDY5OCwgODA3MDIsIDgwNzA2LCA4MDcxMCwgODA3MTQsIAotICAgIDgwNzE4LCA4MDcyMiwgODA3MjYsIDgwNzMwLCA4MDczNCwgODA3MzgsIDgwNzQyLCA4MDc0NiwgODA3NTAsIDgwNzU0LCAKLSAgICA4MDc1OCwgODA3NjIsIDgwNzY2LCA4MDc3MCwgODA3NzQsIDgwNzc4LCA4MDc4MiwgODA3ODYsIDgwNzkwLCA4MDc5NCwgCi0gICAgODA3OTgsIDgwODAyLCA4MDgwNiwgODA4MTAsIDgwODE0LCA4MDgxOCwgODA4MjIsIDgwODI2LCA4MDgzMCwgODA4MzQsIAotICAgIDgwODM4LCA4MDg0MiwgODA4NDYsIDgwODUwLCA4MDg1NCwgODA4NTgsIDgwODYyLCA4MDg2NiwgODA4NzAsIDgwODc0LCAKLSAgICA4MDg3OCwgODA4ODIsIDgwODg2LCA4MDg5MCwgODA4OTQsIDgwODk4LCA4MDkwMiwgODA5MDYsIDgwOTEwLCA4MDkxNCwgCi0gICAgODA5MTgsIDgwOTIyLCA4MDkyNiwgODA5MzAsIDgwOTM0LCA4MDkzOCwgODA5NDIsIDgwOTQ2LCA4MDk1MCwgODA5NTQsIAotICAgIDgwOTU4LCA4MDk2MiwgODA5NjYsIDgwOTcwLCA4MDk3NCwgODA5NzgsIDgwOTgyLCA4MDk4NiwgODA5OTAsIDgwOTk0LCAKLSAgICA4MDk5OCwgODEwMDIsIDgxMDA2LCA4MTAxMCwgODEwMTQsIDgxMDE4LCA4MTAyMiwgODEwMjYsIDgxMDMwLCA4MTAzNCwgCi0gICAgODEwMzgsIDgxMDQyLCA4MTA0NiwgODEwNTAsIDgxMDU0LCA4MTA1OCwgODEwNjIsIDgxMDY2LCA4MTA3MCwgODEwNzQsIAotICAgIDgxMDc4LCA4MTA4MiwgODEwODYsIDgxMDkwLCA4MTA5NCwgODEwOTgsIDgxMTAyLCA4MTEwNiwgODExMTAsIDgxMTE0LCAKLSAgICA4MTExOCwgODExMjIsIDgxMTI2LCA4MTEzMCwgODExMzQsIDgxMTM4LCA4MTE0MiwgODExNDYsIDgxMTUwLCA4MTE1NCwgCi0gICAgODExNTgsIDgxMTYyLCA4MTE2NiwgODExNzAsIDgxMTc0LCA4MTE3OCwgODExODIsIDgxMTg2LCA4MTE5MCwgODExOTQsIAotICAgIDgxMTk4LCA4MTIwMiwgODEyMDYsIDgxMjEwLCA4MTIxNCwgODEyMTgsIDgxMjIyLCA4MTIyNiwgODEyMzAsIDgxMjM0LCAKLSAgICA4MTIzOCwgODEyNDIsIDgxMjQ2LCA4MTI1MCwgODEyNTQsIDgxMjU4LCA4MTI2MiwgODEyNjYsIDgxMjcwLCA4MTI3NCwgCi0gICAgODEyNzgsIDgxMjgyLCA4MTI4NiwgODEyOTAsIDgxMjk0LCA4MTI5OCwgODEzMDIsIDgxMzA2LCA4MTMxMCwgODEzMTQsIAotICAgIDgxMzE4LCA4MTMyMiwgODEzMjYsIDgxMzMwLCA4MTMzNCwgODEzMzgsIDgxMzQyLCA4MTM0NiwgODEzNTAsIDgxMzU0LCAKLSAgICA4MTM1OCwgODEzNjIsIDgxMzY2LCA4MTM3MCwgODEzNzQsIDgxMzc4LCA4MTM4MiwgODEzODYsIDgxMzkwLCA4MTM5NCwgCi0gICAgODEzOTgsIDgxNDAyLCA4MTQwNiwgODE0MTAsIDgxNDE0LCA4MTQxOCwgODE0MjIsIDgxNDI2LCA4MTQzMCwgODE0MzQsIAotICAgIDgxNDM4LCA4MTQ0MiwgODE0NDYsIDgxNDUwLCA4MTQ1NCwgODE0NTgsIDgxNDYyLCA4MTQ2NiwgODE0NzAsIDgxNDc0LCAKLSAgICA4MTQ3OCwgODE0ODIsIDgxNDg2LCA4MTQ5MCwgODE0OTQsIDgxNDk4LCA4MTUwMiwgODE1MDYsIDgxNTEwLCA4MTUxNCwgCi0gICAgODE1MTgsIDgxNTIyLCA4MTUyNiwgODE1MzAsIDgxNTM0LCA4MTUzOCwgODE1NDIsIDgxNTQ2LCA4MTU1MCwgODE1NTQsIAotICAgIDgxNTU4LCA4MTU2MiwgODE1NjYsIDgxNTcwLCA4MTU3NCwgODE1NzgsIDgxNTgyLCA4MTU4NiwgODE1OTAsIDgxNTk0LCAKLSAgICA4MTU5OCwgODE2MDIsIDgxNjA2LCA4MTYxMCwgODE2MTQsIDgxNjE4LCA4MTYyMiwgODE2MjYsIDgxNjMwLCA4MTYzNCwgCi0gICAgODE2MzgsIDgxNjQyLCA4MTY0NiwgODE2NTAsIDgxNjU0LCA4MTY1OCwgODE2NjIsIDgxNjY2LCA4MTY3MCwgODE2NzQsIAotICAgIDgxNjc4LCA4MTY4MiwgODE2ODYsIDgxNjkwLCA4MTY5NCwgODE2OTgsIDgxNzAyLCA4MTcwNiwgODE3MTAsIDgxNzE0LCAKLSAgICA4MTcxOCwgODE3MjIsIDgxNzI2LCA4MTczMCwgODE3MzQsIDgxNzM4LCA4MTc0MiwgODE3NDYsIDgxNzUwLCA4MTc1NCwgCi0gICAgODE3NTgsIDgxNzYyLCA4MTc2NiwgODE3NzAsIDgxNzc0LCA4MTc3OCwgODE3ODIsIDgxNzg2LCA4MTc5MCwgODE3OTQsIAotICAgIDgxNzk4LCA4MTgwMiwgODE4MDYsIDgxODEwLCA4MTgxNCwgODE4MTgsIDgxODIyLCA4MTgyNiwgODE4MzAsIDgxODM0LCAKLSAgICA4MTgzOCwgODE4NDIsIDgxODQ2LCA4MTg1MCwgODE4NTQsIDgxODU4LCA4MTg2MiwgODE4NjYsIDgxODcwLCA4MTg3NCwgCi0gICAgODE4NzgsIDgxODgyLCA4MTg4NiwgODE4OTAsIDgxODk0LCA4MTg5OCwgODE5MDIsIDgxOTA2LCA4MTkxMCwgODE5MTQsIAotICAgIDgxOTE4LCA4MTkyMiwgODE5MjYsIDgxOTMwLCA4MTkzNCwgODE5MzgsIDgxOTQyLCA4MTk0NiwgODE5NTAsIDgxOTU0LCAKLSAgICA4MTk1OCwgODE5NjIsIDgxOTY2LCA4MTk3MCwgODE5NzQsIDgxOTc4LCAwLCAwLCA4MTk4MiwgODE5ODYsIDgxOTkwLCAKLSAgICA4MTk5NCwgODE5OTgsIDgyMDAyLCA4MjAwNiwgODIwMTAsIDgyMDE0LCA4MjAxOCwgODIwMjIsIDgyMDI2LCA4MjAzMCwgCi0gICAgODIwMzQsIDgyMDM4LCA4MjA0MiwgODIwNDYsIDgyMDUwLCA4MjA1NCwgODIwNTgsIDgyMDYyLCA4MjA2NiwgODIwNzAsIAotICAgIDgyMDc0LCA4MjA3OCwgODIwODIsIDgyMDg2LCA4MjA5MCwgODIwOTQsIDgyMDk4LCA4MjEwMiwgODIxMDYsIDgyMTEwLCAKLSAgICA4MjExNCwgODIxMTgsIDgyMTIyLCA4MjEyNiwgODIxMzAsIDgyMTM0LCA4MjEzOCwgODIxNDIsIDgyMTQ2LCA4MjE1MCwgCi0gICAgODIxNTQsIDgyMTU4LCA4MjE2MiwgODIxNjYsIDgyMTcwLCA4MjE3NCwgODIxNzgsIDgyMTgyLCA4MjE4NiwgODIxOTAsIAotICAgIDgyMTk0LCA4MjE5OCwgODIyMDIsIDgyMjA2LCA4MjIxMCwgODIyMTQsIDgyMjE4LCA4MjIyMiwgODIyMjYsIDgyMjMwLCAKLSAgICA4MjIzNCwgODIyMzgsIDgyMjQyLCA4MjI0NiwgODIyNTAsIDgyMjU0LCA4MjI1OCwgODIyNjIsIDgyMjY2LCA4MjI3MCwgCi0gICAgODIyNzQsIDgyMjc4LCA4MjI4MiwgODIyODYsIDgyMjkwLCA4MjI5NCwgODIyOTgsIDgyMzAyLCA4MjMwNiwgODIzMTAsIAotICAgIDgyMzE0LCA4MjMxOCwgODIzMjIsIDgyMzI2LCA4MjMzMCwgODIzMzQsIDgyMzM4LCA4MjM0MiwgODIzNDYsIDgyMzUwLCAKLSAgICA4MjM1NCwgODIzNTgsIDgyMzYyLCA4MjM2NiwgODIzNzAsIDgyMzc0LCA4MjM3OCwgODIzODIsIDgyMzg2LCA4MjM5MCwgCi0gICAgODIzOTQsIDgyMzk4LCA4MjQwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI0MDYsIAotICAgIDgyNDExLCA4MjQxNiwgODI0MjEsIDgyNDI2LCA4MjQzMSwgODI0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgyNDQ0LCA4MjQ1MSwgODI0NTgsIDgyNDY1LCA4MjQ3MiwgMCwgMCwgMCwgMCwgMCwgODI0NzksIDgyNDg2LCAKLSAgICA4MjQ5MywgODI1MDMsIDgyNTA5LCA4MjUxNSwgODI1MjEsIDgyNTI3LCA4MjUzMywgODI1MzksIDgyNTQ2LCA4MjU1MiwgCi0gICAgODI1NTgsIDgyNTY0LCA4MjU3MywgODI1ODIsIDgyNTk0LCA4MjYwNiwgODI2MTIsIDgyNjE4LCA4MjYyNCwgODI2MzEsIAotICAgIDgyNjM4LCA4MjY0NSwgODI2NTIsIDgyNjU5LCAwLCA4MjY2NiwgODI2NzMsIDgyNjgwLCA4MjY4OCwgODI2OTUsIDAsIAotICAgIDgyNzAyLCAwLCA4MjcwOSwgODI3MTYsIDAsIDgyNzIzLCA4MjczMSwgMCwgODI3MzgsIDgyNzQ1LCA4Mjc1MiwgODI3NTksIAotICAgIDgyNzY2LCA4Mjc3MywgODI3ODAsIDgyNzg3LCA4Mjc5NCwgODI4MDEsIDgyODA2LCA4MjgxMywgODI4MjAsIDgyODI2LCAKLSAgICA4MjgzMiwgODI4MzgsIDgyODQ0LCA4Mjg1MCwgODI4NTYsIDgyODYyLCA4Mjg2OCwgODI4NzQsIDgyODgwLCA4Mjg4NiwgCi0gICAgODI4OTIsIDgyODk4LCA4MjkwNCwgODI5MTAsIDgyOTE2LCA4MjkyMiwgODI5MjgsIDgyOTM0LCA4Mjk0MCwgODI5NDYsIAotICAgIDgyOTUyLCA4Mjk1OCwgODI5NjQsIDgyOTcwLCA4Mjk3NiwgODI5ODIsIDgyOTg4LCA4Mjk5NCwgODMwMDAsIDgzMDA2LCAKLSAgICA4MzAxMiwgODMwMTgsIDgzMDI0LCA4MzAzMCwgODMwMzYsIDgzMDQyLCA4MzA0OCwgODMwNTQsIDgzMDYwLCA4MzA2NiwgCi0gICAgODMwNzIsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMiwgODMxMDgsIDgzMTE0LCA4MzEyMCwgODMxMjYsIAotICAgIDgzMTMyLCA4MzEzOCwgODMxNDQsIDgzMTUwLCA4MzE1NiwgODMxNjIsIDgzMTY4LCA4MzE3NCwgODMxODAsIDgzMTg2LCAKLSAgICA4MzE5MiwgODMxOTgsIDgzMjA0LCA4MzIxMCwgODMyMTYsIDgzMjIyLCA4MzIyOCwgODMyMzQsIDgzMjQwLCA4MzI0NiwgCi0gICAgODMyNTIsIDgzMjU4LCA4MzI2NCwgODMyNzAsIDgzMjc2LCA4MzI4NCwgODMyOTIsIDgzMjk4LCA4MzMwNCwgODMzMTAsIAotICAgIDgzMzE2LCA4MzMyNSwgODMzMzQsIDgzMzQyLCA4MzM1MCwgODMzNTgsIDgzMzY2LCA4MzM3NCwgODMzODIsIDgzMzkwLCAKLSAgICA4MzM5OCwgODM0MDUsIDgzNDEyLCA4MzQyMywgODM0MzQsIDgzNDM4LCA4MzQ0MiwgODM0NDcsIDgzNDUyLCA4MzQ1NywgCi0gICAgODM0NjIsIDgzNDcwLCA4MzQ3OCwgODM0ODQsIDgzNDkwLCA4MzQ5NywgODM1MDQsIDgzNTExLCA4MzUxNSwgODM1MjEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNTI3LCA4MzUzMywgODM1MzksIAotICAgIDgzNTQ1LCA4MzU1MSwgODM1NTYsIDgzNTYxLCA4MzU2NywgODM1NzMsIDgzNTc5LCA4MzU4NSwgODM1OTQsIDgzNjAwLCAKLSAgICA4MzYwNiwgODM2MTQsIDgzNjIyLCA4MzYzMCwgODM2MzgsIDgzNjQzLCA4MzY0OCwgODM2NTMsIDgzNjU4LCA4MzY3MSwgCi0gICAgODM2ODQsIDgzNjk1LCA4MzcwNiwgODM3MTgsIDgzNzMwLCA4Mzc0MiwgODM3NTQsIDgzNzY1LCA4Mzc3NiwgODM3ODgsIAotICAgIDgzODAwLCA4MzgxMiwgODM4MjQsIDgzODM1LCA4Mzg0NiwgODM4NTcsIDgzODc0LCA4Mzg5MSwgODM5MDgsIDgzOTE1LCAKLSAgICA4MzkyMiwgODM5MjksIDgzOTM2LCA4Mzk0NywgODM5NTgsIDgzOTY5LCA4Mzk4MiwgODM5OTMsIDg0MDAxLCA4NDAwOSwgCi0gICAgODQwMTgsIDg0MDI2LCA4NDAzNiwgODQwNDQsIDg0MDUyLCA4NDA2MCwgODQwNjksIDg0MDc3LCA4NDA4NywgODQwOTUsIAotICAgIDg0MTAzLCA4NDExMSwgODQxMjEsIDg0MTI5LCA4NDEzNiwgODQxNDMsIDg0MTUwLCA4NDE1NywgODQxNjUsIDg0MTczLCAKLSAgICA4NDE4MSwgODQxODksIDg0MTk3LCA4NDIwNiwgODQyMTQsIDg0MjIyLCA4NDIzMCwgODQyMzgsIDg0MjQ2LCA4NDI1NSwgCi0gICAgODQyNjMsIDg0MjcxLCA4NDI3OSwgODQyODcsIDg0Mjk1LCA4NDMwMywgODQzMTEsIDg0MzE5LCA4NDMyNywgODQzMzUsIAotICAgIDg0MzQ0LCA4NDM1MiwgODQzNjIsIDg0MzcwLCA4NDM3OCwgODQzODYsIDg0Mzk2LCA4NDQwNCwgODQ0MTIsIDg0NDIwLCAKLSAgICA4NDQyOCwgODQ0MzcsIDg0NDQ2LCA4NDQ1NCwgODQ0NjQsIDg0NDcyLCA4NDQ4MCwgODQ0ODgsIDg0NDk3LCA4NDUwNSwgCi0gICAgODQ1MTUsIDg0NTIzLCA4NDUzMCwgODQ1MzcsIDg0NTQ1LCA4NDU1MiwgODQ1NjEsIDg0NTY4LCA4NDU3NiwgODQ1ODQsIAotICAgIDg0NTkzLCA4NDYwMSwgODQ2MTEsIDg0NjE5LCA4NDYyNywgODQ2MzUsIDg0NjQ1LCA4NDY1MywgODQ2NjAsIDg0NjY3LCAKLSAgICA4NDY3NSwgODQ2ODIsIDg0NjkxLCA4NDY5OCwgODQ3MDgsIDg0NzE4LCA4NDcyOSwgODQ3MzgsIDg0NzQ3LCA4NDc1NiwgCi0gICAgODQ3NjUsIDg0Nzc0LCA4NDc4NCwgODQ3OTYsIDg0ODA4LCA4NDgxOSwgODQ4MzEsIDg0ODQ0LCA4NDg1NSwgODQ4NjQsIAotICAgIDg0ODczLCA4NDg4MSwgODQ4OTAsIDg0OTAwLCA4NDkwOCwgODQ5MTcsIDg0OTI2LCA4NDkzNCwgODQ5NDMsIDg0OTUzLCAKLSAgICA4NDk2MSwgODQ5NzAsIDg0OTc5LCA4NDk4NywgODQ5OTYsIDg1MDA2LCA4NTAxNCwgODUwMjQsIDg1MDMyLCA4NTA0MiwgCi0gICAgODUwNTAsIDg1MDU4LCA4NTA2NywgODUwNzUsIDg1MDg1LCA4NTA5MywgODUxMDEsIDg1MTExLCA4NTExOSwgODUxMjYsIAotICAgIDg1MTMzLCA4NTE0MiwgODUxNTEsIDg1MTU5LCA4NTE2OCwgODUxNzgsIDg1MTg2LCA4NTE5NywgODUyMDUsIDg1MjEzLCAKLSAgICA4NTIyMCwgODUyMjgsIDg1MjM3LCA4NTI0NCwgODUyNTUsIDg1MjY2LCA4NTI3OCwgODUyODksIDg1MzAxLCA4NTMwOSwgCi0gICAgODUzMTcsIDg1MzI2LCA4NTMzNCwgODUzNDMsIDg1MzUxLCA4NTM1OSwgODUzNjgsIDg1Mzc2LCA4NTM4NSwgODUzOTMsIAotICAgIDg1NDAwLCA4NTQwNywgODU0MTQsIDg1NDIxLCA4NTQyOSwgODU0MzcsIDg1NDQ1LCA4NTQ1MywgODU0NjIsIDg1NDcwLCAKLSAgICA4NTQ3OCwgODU0ODcsIDg1NDk1LCA4NTUwMywgODU1MTEsIDg1NTIwLCA4NTUyOCwgODU1MzYsIDg1NTQ0LCA4NTU1MiwgCi0gICAgODU1NjAsIDg1NTY4LCA4NTU3NiwgODU1ODQsIDg1NTkyLCA4NTYwMSwgODU2MDksIDg1NjE3LCA4NTYyNSwgODU2MzMsIAotICAgIDg1NjQxLCA4NTY1MCwgODU2NTksIDg1NjY3LCA4NTY3NSwgODU2ODMsIDg1NjkyLCA4NTcwMCwgODU3MDksIDg1NzE2LCAKLSAgICA4NTcyMywgODU3MzEsIDg1NzM4LCA4NTc0NiwgODU3NTQsIDg1NzYzLCA4NTc3MSwgODU3ODAsIDg1Nzg4LCA4NTc5NiwgCi0gICAgODU4MDYsIDg1ODEzLCA4NTgyMCwgODU4MjgsIDg1ODM1LCA4NTg0MywgODU4NTQsIDg1ODY2LCA4NTg3NCwgODU4ODMsIAotICAgIDg1ODkxLCA4NTkwMCwgODU5MDgsIDg1OTE3LCA4NTkyNSwgODU5MzQsIDg1OTQyLCA4NTk1MSwgODU5NjAsIDg1OTY4LCAKLSAgICA4NTk3NiwgODU5ODQsIDg1OTkzLCA4NjAwMCwgODYwMDgsIDg2MDE3LCA4NjAyNiwgODYwMzUsIDg2MDQ1LCA4NjA1MywgCi0gICAgODYwNjMsIDg2MDcxLCA4NjA4MSwgODYwODksIDg2MDk5LCA4NjEwNywgODYxMTcsIDg2MTI1LCA4NjEzNCwgODYxNDEsIAotICAgIDg2MTUwLCA4NjE1NywgODYxNjcsIDg2MTc1LCA4NjE4NSwgODYxOTMsIDg2MjAzLCA4NjIxMSwgODYyMTksIDg2MjI3LCAKLSAgICA4NjIzNiwgODYyNDQsIDg2MjUzLCA4NjI2MiwgODYyNzEsIDg2MjgwLCA4NjI5MCwgODYyOTgsIDg2MzA4LCA4NjMxNiwgCi0gICAgODYzMjYsIDg2MzM0LCA4NjM0NCwgODYzNTIsIDg2MzYyLCA4NjM3MCwgODYzNzksIDg2Mzg2LCA4NjM5NSwgODY0MDIsIAotICAgIDg2NDEyLCA4NjQyMCwgODY0MzAsIDg2NDM4LCA4NjQ0OCwgODY0NTYsIDg2NDY0LCA4NjQ3MiwgODY0ODEsIDg2NDg5LCAKLSAgICA4NjQ5OCwgODY1MDcsIDg2NTE2LCA4NjUyNSwgODY1MzMsIDg2NTQxLCA4NjU1MCwgODY1NTgsIDg2NTY3LCA4NjU3NiwgCi0gICAgODY1ODQsIDg2NTkyLCA4NjYwMCwgODY2MDksIDg2NjE3LCA4NjYyNSwgODY2MzQsIDg2NjQyLCA4NjY1MCwgODY2NTgsIAotICAgIDg2NjY2LCA4NjY3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY2NzYsIAotICAgIDg2Njg2LCA4NjY5NiwgODY3MDYsIDg2NzE2LCA4NjcyNywgODY3MzcsIDg2NzQ3LCA4Njc1OCwgODY3NjcsIDg2Nzc2LCAKLSAgICA4Njc4NSwgODY3OTYsIDg2ODA2LCA4NjgxNiwgODY4MjgsIDg2ODM4LCA4Njg0OCwgODY4NTgsIDg2ODY4LCA4Njg3OCwgCi0gICAgODY4ODgsIDg2ODk4LCA4NjkwOCwgODY5MTgsIDg2OTI4LCA4NjkzOCwgODY5NDksIDg2OTYwLCA4Njk3MCwgODY5ODAsIAotICAgIDg2OTkyLCA4NzAwMywgODcwMTQsIDg3MDI0LCA4NzAzNCwgODcwNDQsIDg3MDU0LCA4NzA2NCwgODcwNzQsIDg3MDg0LCAKLSAgICA4NzA5NiwgODcxMDYsIDg3MTE2LCA4NzEyOCwgODcxMzksIDg3MTUwLCA4NzE2MCwgODcxNzAsIDg3MTgwLCA4NzE5MCwgCi0gICAgODcyMDIsIDg3MjEyLCA4NzIyMiwgODcyMzMsIDg3MjQ0LCA4NzI1NCwgODcyNjQsIDg3MjczLCA4NzI4MiwgODcyOTEsIAotICAgIDg3MzAwLCA4NzMwOSwgODczMTksIDAsIDAsIDg3MzI5LCA4NzMzOSwgODczNDksIDg3MzU5LCA4NzM2OSwgODczODEsIAotICAgIDg3MzkxLCA4NzQwMSwgODc0MTMsIDg3NDIzLCA4NzQzNSwgODc0NDQsIDg3NDUzLCA4NzQ2NCwgODc0NzQsIDg3NDg2LCAKLSAgICA4NzQ5NywgODc1MTAsIDg3NTIwLCA4NzUzMiwgODc1NDEsIDg3NTUyLCA4NzU2MywgODc1NzYsIDg3NTg2LCA4NzU5NiwgCi0gICAgODc2MDYsIDg3NjE2LCA4NzYyNiwgODc2MzUsIDg3NjQ0LCA4NzY1MywgODc2NjIsIDg3NjcyLCA4NzY4MiwgODc2OTIsIAotICAgIDg3NzAyLCA4NzcxMiwgODc3MjIsIDg3NzMyLCA4Nzc0MiwgODc3NTIsIDg3NzYyLCA4Nzc3MiwgODc3ODIsIDg3NzkxLCAKLSAgICA4NzgwMCwgODc4MDksIDg3ODE5LCA4NzgyOSwgODc4MzksIDg3ODQ5LCA4Nzg1OSwgODc4NzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMDUzLCA4MTA1NywgODEwNjEsIDgxMDY1LCAKKyAgICA4MTA2OSwgODEwNzMsIDgxMDc3LCA4MTA4MSwgODEwODUsIDgxMDg5LCA4MTA5MywgODEwOTcsIDgxMTAxLCA4MTEwNSwgCisgICAgODExMDksIDgxMTEzLCA4MTExNywgODExMjEsIDgxMTI1LCA4MTEyOSwgODExMzMsIDgxMTM3LCA4MTE0MSwgMCwgMCwgMCwgCisgICAgMCwgODExNDUsIDgxMTQ5LCA4MTE1MywgODExNTcsIDgxMTYxLCA4MTE2NSwgODExNjksIDgxMTczLCA4MTE3NywgODExODEsIAorICAgIDgxMTg1LCA4MTE4OSwgODExOTMsIDgxMTk3LCA4MTIwMSwgODEyMDUsIDgxMjA5LCA4MTIxMywgODEyMTcsIDgxMjIxLCAKKyAgICA4MTIyNSwgODEyMjksIDgxMjMzLCA4MTIzNywgODEyNDEsIDgxMjQ1LCA4MTI0OSwgODEyNTMsIDgxMjU3LCA4MTI2MSwgCisgICAgODEyNjUsIDgxMjY5LCA4MTI3MywgODEyNzcsIDgxMjgxLCA4MTI4NSwgODEyODksIDgxMjkzLCA4MTI5NywgODEzMDEsIAorICAgIDgxMzA1LCA4MTMwOSwgODEzMTMsIDgxMzE3LCA4MTMyMSwgODEzMjUsIDgxMzI5LCA4MTMzMywgODEzMzcsIDAsIDAsIDAsIAorICAgIDAsIDgxMzQxLCA4MTM0NSwgODEzNDksIDgxMzUzLCA4MTM1NywgODEzNjEsIDgxMzY1LCA4MTM2OSwgODEzNzMsIDgxMzc3LCAKKyAgICA4MTM4MSwgODEzODUsIDgxMzg5LCA4MTM5MywgODEzOTcsIDgxNDAxLCA4MTQwNSwgODE0MDksIDgxNDEzLCA4MTQxNywgCisgICAgODE0MjEsIDgxNDI1LCA4MTQyOSwgODE0MzMsIDgxNDM3LCA4MTQ0MSwgODE0NDUsIDgxNDQ5LCA4MTQ1MywgODE0NTcsIAorICAgIDgxNDYxLCA4MTQ2NSwgODE0NjksIDgxNDczLCA4MTQ3NywgODE0ODEsIDgxNDg1LCA4MTQ4OSwgODE0OTMsIDgxNDk3LCAKKyAgICA4MTUwMSwgODE1MDUsIDgxNTA5LCA4MTUxMywgODE1MTcsIDgxNTIxLCA4MTUyNSwgODE1MjksIDgxNTMzLCA4MTUzNywgCisgICAgODE1NDEsIDgxNTQ1LCA4MTU0OSwgODE1NTMsIDgxNTU3LCA4MTU2MSwgODE1NjUsIDgxNTY5LCA4MTU3MywgODE1NzcsIAorICAgIDgxNTgxLCA4MTU4NSwgODE1ODksIDgxNTkzLCA4MTU5NywgODE2MDEsIDgxNjA1LCA4MTYwOSwgODE2MTMsIDgxNjE3LCAKKyAgICA4MTYyMSwgODE2MjUsIDgxNjI5LCA4MTYzMywgODE2MzcsIDgxNjQxLCA4MTY0NSwgODE2NDksIDgxNjUzLCA4MTY1NywgCisgICAgODE2NjEsIDgxNjY1LCA4MTY2OSwgODE2NzMsIDgxNjc3LCA4MTY4MSwgODE2ODUsIDgxNjg5LCA4MTY5MywgODE2OTcsIAorICAgIDgxNzAxLCA4MTcwNSwgODE3MDksIDgxNzEzLCA4MTcxNywgODE3MjEsIDgxNzI1LCA4MTcyOSwgODE3MzMsIDgxNzM3LCAKKyAgICA4MTc0MSwgODE3NDUsIDgxNzQ5LCA4MTc1MywgODE3NTcsIDgxNzYxLCA4MTc2NSwgODE3NjksIDgxNzczLCA4MTc3NywgCisgICAgODE3ODEsIDgxNzg1LCA4MTc4OSwgODE3OTMsIDgxNzk3LCA4MTgwMSwgODE4MDUsIDgxODA5LCA4MTgxMywgODE4MTcsIAorICAgIDgxODIxLCA4MTgyNSwgODE4MjksIDgxODMzLCA4MTgzNywgODE4NDEsIDgxODQ1LCA4MTg0OSwgODE4NTMsIDgxODU3LCAKKyAgICA4MTg2MSwgODE4NjUsIDgxODY5LCA4MTg3MywgODE4NzcsIDgxODgxLCA4MTg4NSwgODE4ODksIDgxODkzLCA4MTg5NywgCisgICAgODE5MDEsIDgxOTA1LCA4MTkwOSwgODE5MTMsIDgxOTE3LCA4MTkyMSwgODE5MjUsIDgxOTI5LCA4MTkzMywgODE5MzcsIAorICAgIDgxOTQxLCA4MTk0NSwgODE5NDksIDgxOTUzLCA4MTk1NywgODE5NjEsIDgxOTY1LCA4MTk2OSwgODE5NzMsIDgxOTc3LCAKKyAgICA4MTk4MSwgODE5ODUsIDgxOTg5LCA4MTk5MywgODE5OTcsIDgyMDAxLCA4MjAwNSwgODIwMDksIDgyMDEzLCA4MjAxNywgCisgICAgODIwMjEsIDgyMDI1LCA4MjAyOSwgODIwMzMsIDgyMDM3LCA4MjA0MSwgODIwNDUsIDgyMDQ5LCA4MjA1MywgODIwNTcsIAorICAgIDgyMDYxLCA4MjA2NSwgODIwNjksIDgyMDczLCA4MjA3NywgODIwODEsIDgyMDg1LCA4MjA4OSwgODIwOTMsIDgyMDk3LCAKKyAgICA4MjEwMSwgODIxMDUsIDgyMTA5LCA4MjExMywgODIxMTcsIDgyMTIxLCA4MjEyNSwgODIxMjksIDgyMTMzLCA4MjEzNywgCisgICAgODIxNDEsIDgyMTQ1LCA4MjE0OSwgODIxNTMsIDgyMTU3LCA4MjE2MSwgODIxNjUsIDgyMTY5LCA4MjE3MywgODIxNzcsIAorICAgIDgyMTgxLCA4MjE4NSwgODIxODksIDgyMTkzLCA4MjE5NywgODIyMDEsIDgyMjA1LCA4MjIwOSwgODIyMTMsIDgyMjE3LCAKKyAgICA4MjIyMSwgODIyMjUsIDgyMjI5LCA4MjIzMywgODIyMzcsIDgyMjQxLCA4MjI0NSwgODIyNDksIDgyMjUzLCA4MjI1NywgCisgICAgODIyNjEsIDgyMjY1LCA4MjI2OSwgODIyNzMsIDgyMjc3LCA4MjI4MSwgODIyODUsIDgyMjg5LCA4MjI5MywgODIyOTcsIAorICAgIDgyMzAxLCA4MjMwNSwgODIzMDksIDgyMzEzLCA4MjMxNywgODIzMjEsIDgyMzI1LCA4MjMyOSwgODIzMzMsIDgyMzM3LCAKKyAgICA4MjM0MSwgODIzNDUsIDgyMzQ5LCA4MjM1MywgODIzNTcsIDgyMzYxLCA4MjM2NSwgODIzNjksIDgyMzczLCA4MjM3NywgCisgICAgODIzODEsIDgyMzg1LCA4MjM4OSwgODIzOTMsIDgyMzk3LCA4MjQwMSwgODI0MDUsIDgyNDA5LCA4MjQxMywgODI0MTcsIAorICAgIDgyNDIxLCA4MjQyNSwgODI0MjksIDgyNDMzLCA4MjQzNywgODI0NDEsIDgyNDQ1LCA4MjQ0OSwgODI0NTMsIDgyNDU3LCAKKyAgICA4MjQ2MSwgODI0NjUsIDgyNDY5LCA4MjQ3MywgODI0NzcsIDgyNDgxLCA4MjQ4NSwgODI0ODksIDgyNDkzLCA4MjQ5NywgCisgICAgODI1MDEsIDgyNTA1LCA4MjUwOSwgODI1MTMsIDgyNTE3LCA4MjUyMSwgODI1MjUsIDgyNTI5LCA4MjUzMywgODI1MzcsIAorICAgIDgyNTQxLCA4MjU0NSwgODI1NDksIDgyNTUzLCA4MjU1NywgODI1NjEsIDgyNTY1LCA4MjU2OSwgODI1NzMsIDgyNTc3LCAKKyAgICA4MjU4MSwgODI1ODUsIDgyNTg5LCA4MjU5MywgODI1OTcsIDgyNjAxLCA4MjYwNSwgODI2MDksIDgyNjEzLCA4MjYxNywgCisgICAgODI2MjEsIDgyNjI1LCA4MjYyOSwgODI2MzMsIDgyNjM3LCA4MjY0MSwgODI2NDUsIDgyNjQ5LCA4MjY1MywgODI2NTcsIAorICAgIDgyNjYxLCA4MjY2NSwgODI2NjksIDgyNjczLCA4MjY3NywgODI2ODEsIDgyNjg1LCA4MjY4OSwgODI2OTMsIDgyNjk3LCAKKyAgICA4MjcwMSwgODI3MDUsIDgyNzA5LCA4MjcxMywgODI3MTcsIDgyNzIxLCA4MjcyNSwgODI3MjksIDgyNzMzLCA4MjczNywgCisgICAgODI3NDEsIDgyNzQ1LCA4Mjc0OSwgODI3NTMsIDgyNzU3LCA4Mjc2MSwgODI3NjUsIDgyNzY5LCA4Mjc3MywgODI3NzcsIAorICAgIDgyNzgxLCA4Mjc4NSwgODI3ODksIDgyNzkzLCA4Mjc5NywgODI4MDEsIDAsIDAsIDgyODA1LCA4MjgwOSwgODI4MTMsIAorICAgIDgyODE3LCA4MjgyMSwgODI4MjUsIDgyODI5LCA4MjgzMywgODI4MzcsIDgyODQxLCA4Mjg0NSwgODI4NDksIDgyODUzLCAKKyAgICA4Mjg1NywgODI4NjEsIDgyODY1LCA4Mjg2OSwgODI4NzMsIDgyODc3LCA4Mjg4MSwgODI4ODUsIDgyODg5LCA4Mjg5MywgCisgICAgODI4OTcsIDgyOTAxLCA4MjkwNSwgODI5MDksIDgyOTEzLCA4MjkxNywgODI5MjEsIDgyOTI1LCA4MjkyOSwgODI5MzMsIAorICAgIDgyOTM3LCA4Mjk0MSwgODI5NDUsIDgyOTQ5LCA4Mjk1MywgODI5NTcsIDgyOTYxLCA4Mjk2NSwgODI5NjksIDgyOTczLCAKKyAgICA4Mjk3NywgODI5ODEsIDgyOTg1LCA4Mjk4OSwgODI5OTMsIDgyOTk3LCA4MzAwMSwgODMwMDUsIDgzMDA5LCA4MzAxMywgCisgICAgODMwMTcsIDgzMDIxLCA4MzAyNSwgODMwMjksIDgzMDMzLCA4MzAzNywgODMwNDEsIDgzMDQ1LCA4MzA0OSwgODMwNTMsIAorICAgIDgzMDU3LCA4MzA2MSwgODMwNjUsIDgzMDY5LCA4MzA3MywgODMwNzcsIDgzMDgxLCA4MzA4NSwgODMwODksIDgzMDkzLCAKKyAgICA4MzA5NywgODMxMDEsIDgzMTA1LCA4MzEwOSwgODMxMTMsIDgzMTE3LCA4MzEyMSwgODMxMjUsIDgzMTI5LCA4MzEzMywgCisgICAgODMxMzcsIDgzMTQxLCA4MzE0NSwgODMxNDksIDgzMTUzLCA4MzE1NywgODMxNjEsIDgzMTY1LCA4MzE2OSwgODMxNzMsIAorICAgIDgzMTc3LCA4MzE4MSwgODMxODUsIDgzMTg5LCA4MzE5MywgODMxOTcsIDgzMjAxLCA4MzIwNSwgODMyMDksIDgzMjEzLCAKKyAgICA4MzIxNywgODMyMjEsIDgzMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzIyOSwgCisgICAgODMyMzQsIDgzMjM5LCA4MzI0NCwgODMyNDksIDgzMjU0LCA4MzI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgODMyNjcsIDgzMjc0LCA4MzI4MSwgODMyODgsIDgzMjk1LCAwLCAwLCAwLCAwLCAwLCA4MzMwMiwgODMzMDksIAorICAgIDgzMzE2LCA4MzMyNiwgODMzMzIsIDgzMzM4LCA4MzM0NCwgODMzNTAsIDgzMzU2LCA4MzM2MiwgODMzNjksIDgzMzc1LCAKKyAgICA4MzM4MSwgODMzODcsIDgzMzk2LCA4MzQwNSwgODM0MTcsIDgzNDI5LCA4MzQzNSwgODM0NDEsIDgzNDQ3LCA4MzQ1NCwgCisgICAgODM0NjEsIDgzNDY4LCA4MzQ3NSwgODM0ODIsIDAsIDgzNDg5LCA4MzQ5NiwgODM1MDMsIDgzNTExLCA4MzUxOCwgMCwgCisgICAgODM1MjUsIDAsIDgzNTMyLCA4MzUzOSwgMCwgODM1NDYsIDgzNTU0LCAwLCA4MzU2MSwgODM1NjgsIDgzNTc1LCA4MzU4MiwgCisgICAgODM1ODksIDgzNTk2LCA4MzYwMywgODM2MTAsIDgzNjE3LCA4MzYyNCwgODM2MjksIDgzNjM2LCA4MzY0MywgODM2NDksIAorICAgIDgzNjU1LCA4MzY2MSwgODM2NjcsIDgzNjczLCA4MzY3OSwgODM2ODUsIDgzNjkxLCA4MzY5NywgODM3MDMsIDgzNzA5LCAKKyAgICA4MzcxNSwgODM3MjEsIDgzNzI3LCA4MzczMywgODM3MzksIDgzNzQ1LCA4Mzc1MSwgODM3NTcsIDgzNzYzLCA4Mzc2OSwgCisgICAgODM3NzUsIDgzNzgxLCA4Mzc4NywgODM3OTMsIDgzNzk5LCA4MzgwNSwgODM4MTEsIDgzODE3LCA4MzgyMywgODM4MjksIAorICAgIDgzODM1LCA4Mzg0MSwgODM4NDcsIDgzODUzLCA4Mzg1OSwgODM4NjUsIDgzODcxLCA4Mzg3NywgODM4ODMsIDgzODg5LCAKKyAgICA4Mzg5NSwgODM5MDEsIDgzOTA3LCA4MzkxMywgODM5MTksIDgzOTI1LCA4MzkzMSwgODM5MzcsIDgzOTQzLCA4Mzk0OSwgCisgICAgODM5NTUsIDgzOTYxLCA4Mzk2NywgODM5NzMsIDgzOTc5LCA4Mzk4NSwgODM5OTEsIDgzOTk3LCA4NDAwMywgODQwMDksIAorICAgIDg0MDE1LCA4NDAyMSwgODQwMjcsIDg0MDMzLCA4NDAzOSwgODQwNDUsIDg0MDUxLCA4NDA1NywgODQwNjMsIDg0MDY5LCAKKyAgICA4NDA3NSwgODQwODEsIDg0MDg3LCA4NDA5MywgODQwOTksIDg0MTA3LCA4NDExNSwgODQxMjEsIDg0MTI3LCA4NDEzMywgCisgICAgODQxMzksIDg0MTQ4LCA4NDE1NywgODQxNjUsIDg0MTczLCA4NDE4MSwgODQxODksIDg0MTk3LCA4NDIwNSwgODQyMTMsIAorICAgIDg0MjIxLCA4NDIyOCwgODQyMzUsIDg0MjQ2LCA4NDI1NywgODQyNjEsIDg0MjY1LCA4NDI3MCwgODQyNzUsIDg0MjgwLCAKKyAgICA4NDI4NSwgODQyOTMsIDg0MzAxLCA4NDMwNywgODQzMTMsIDg0MzIwLCA4NDMyNywgODQzMzQsIDg0MzM4LCA4NDM0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQzNTAsIDg0MzU2LCA4NDM2MiwgCisgICAgODQzNjgsIDg0Mzc0LCA4NDM3OSwgODQzODQsIDg0MzkwLCA4NDM5NiwgODQ0MDIsIDg0NDA4LCA4NDQxNywgODQ0MjMsIAorICAgIDg0NDI5LCA4NDQzNywgODQ0NDUsIDg0NDUzLCA4NDQ2MSwgODQ0NjYsIDg0NDcxLCA4NDQ3NiwgODQ0ODEsIDg0NDk0LCAKKyAgICA4NDUwNywgODQ1MTgsIDg0NTI5LCA4NDU0MSwgODQ1NTMsIDg0NTY1LCA4NDU3NywgODQ1ODgsIDg0NTk5LCA4NDYxMSwgCisgICAgODQ2MjMsIDg0NjM1LCA4NDY0NywgODQ2NTgsIDg0NjY5LCA4NDY4MCwgODQ2OTcsIDg0NzE0LCA4NDczMSwgODQ3MzgsIAorICAgIDg0NzQ1LCA4NDc1MiwgODQ3NTksIDg0NzcwLCA4NDc4MSwgODQ3OTIsIDg0ODA1LCA4NDgxNiwgODQ4MjQsIDg0ODMyLCAKKyAgICA4NDg0MSwgODQ4NDksIDg0ODU5LCA4NDg2NywgODQ4NzUsIDg0ODgzLCA4NDg5MiwgODQ5MDAsIDg0OTEwLCA4NDkxOCwgCisgICAgODQ5MjYsIDg0OTM0LCA4NDk0NCwgODQ5NTIsIDg0OTU5LCA4NDk2NiwgODQ5NzMsIDg0OTgwLCA4NDk4OCwgODQ5OTYsIAorICAgIDg1MDA0LCA4NTAxMiwgODUwMjAsIDg1MDI5LCA4NTAzNywgODUwNDUsIDg1MDUzLCA4NTA2MSwgODUwNjksIDg1MDc4LCAKKyAgICA4NTA4NiwgODUwOTQsIDg1MTAyLCA4NTExMCwgODUxMTgsIDg1MTI2LCA4NTEzNCwgODUxNDIsIDg1MTUwLCA4NTE1OCwgCisgICAgODUxNjcsIDg1MTc1LCA4NTE4NSwgODUxOTMsIDg1MjAxLCA4NTIwOSwgODUyMTksIDg1MjI3LCA4NTIzNSwgODUyNDMsIAorICAgIDg1MjUxLCA4NTI2MCwgODUyNjksIDg1Mjc3LCA4NTI4NywgODUyOTUsIDg1MzAzLCA4NTMxMSwgODUzMjAsIDg1MzI4LCAKKyAgICA4NTMzOCwgODUzNDYsIDg1MzUzLCA4NTM2MCwgODUzNjgsIDg1Mzc1LCA4NTM4NCwgODUzOTEsIDg1Mzk5LCA4NTQwNywgCisgICAgODU0MTYsIDg1NDI0LCA4NTQzNCwgODU0NDIsIDg1NDUwLCA4NTQ1OCwgODU0NjgsIDg1NDc2LCA4NTQ4MywgODU0OTAsIAorICAgIDg1NDk4LCA4NTUwNSwgODU1MTQsIDg1NTIxLCA4NTUzMSwgODU1NDEsIDg1NTUyLCA4NTU2MSwgODU1NzAsIDg1NTc5LCAKKyAgICA4NTU4OCwgODU1OTcsIDg1NjA3LCA4NTYxOSwgODU2MzEsIDg1NjQyLCA4NTY1NCwgODU2NjcsIDg1Njc4LCA4NTY4NywgCisgICAgODU2OTYsIDg1NzA0LCA4NTcxMywgODU3MjMsIDg1NzMxLCA4NTc0MCwgODU3NDksIDg1NzU3LCA4NTc2NiwgODU3NzYsIAorICAgIDg1Nzg0LCA4NTc5MywgODU4MDIsIDg1ODEwLCA4NTgxOSwgODU4MjksIDg1ODM3LCA4NTg0NywgODU4NTUsIDg1ODY1LCAKKyAgICA4NTg3MywgODU4ODEsIDg1ODkwLCA4NTg5OCwgODU5MDgsIDg1OTE2LCA4NTkyNCwgODU5MzQsIDg1OTQyLCA4NTk0OSwgCisgICAgODU5NTYsIDg1OTY1LCA4NTk3NCwgODU5ODIsIDg1OTkxLCA4NjAwMSwgODYwMDksIDg2MDIwLCA4NjAyOCwgODYwMzYsIAorICAgIDg2MDQzLCA4NjA1MSwgODYwNjAsIDg2MDY3LCA4NjA3OCwgODYwODksIDg2MTAxLCA4NjExMiwgODYxMjQsIDg2MTMyLCAKKyAgICA4NjE0MCwgODYxNDksIDg2MTU3LCA4NjE2NiwgODYxNzQsIDg2MTgyLCA4NjE5MSwgODYxOTksIDg2MjA4LCA4NjIxNiwgCisgICAgODYyMjMsIDg2MjMwLCA4NjIzNywgODYyNDQsIDg2MjUyLCA4NjI2MCwgODYyNjgsIDg2Mjc2LCA4NjI4NSwgODYyOTMsIAorICAgIDg2MzAxLCA4NjMxMCwgODYzMTgsIDg2MzI2LCA4NjMzNCwgODYzNDMsIDg2MzUxLCA4NjM1OSwgODYzNjcsIDg2Mzc1LCAKKyAgICA4NjM4MywgODYzOTEsIDg2Mzk5LCA4NjQwNywgODY0MTUsIDg2NDI0LCA4NjQzMiwgODY0NDAsIDg2NDQ4LCA4NjQ1NiwgCisgICAgODY0NjQsIDg2NDczLCA4NjQ4MiwgODY0OTAsIDg2NDk4LCA4NjUwNiwgODY1MTUsIDg2NTIzLCA4NjUzMiwgODY1MzksIAorICAgIDg2NTQ2LCA4NjU1NCwgODY1NjEsIDg2NTY5LCA4NjU3NywgODY1ODYsIDg2NTk0LCA4NjYwMywgODY2MTEsIDg2NjE5LCAKKyAgICA4NjYyOSwgODY2MzYsIDg2NjQzLCA4NjY1MSwgODY2NTgsIDg2NjY2LCA4NjY3NywgODY2ODksIDg2Njk3LCA4NjcwNiwgCisgICAgODY3MTQsIDg2NzIzLCA4NjczMSwgODY3NDAsIDg2NzQ4LCA4Njc1NywgODY3NjUsIDg2Nzc0LCA4Njc4MywgODY3OTEsIAorICAgIDg2Nzk5LCA4NjgwNywgODY4MTYsIDg2ODIzLCA4NjgzMSwgODY4NDAsIDg2ODQ5LCA4Njg1OCwgODY4NjgsIDg2ODc2LCAKKyAgICA4Njg4NiwgODY4OTQsIDg2OTA0LCA4NjkxMiwgODY5MjIsIDg2OTMwLCA4Njk0MCwgODY5NDgsIDg2OTU3LCA4Njk2NCwgCisgICAgODY5NzMsIDg2OTgwLCA4Njk5MCwgODY5OTgsIDg3MDA4LCA4NzAxNiwgODcwMjYsIDg3MDM0LCA4NzA0MiwgODcwNTAsIAorICAgIDg3MDU5LCA4NzA2NywgODcwNzYsIDg3MDg1LCA4NzA5NCwgODcxMDMsIDg3MTEzLCA4NzEyMSwgODcxMzEsIDg3MTM5LCAKKyAgICA4NzE0OSwgODcxNTcsIDg3MTY3LCA4NzE3NSwgODcxODUsIDg3MTkzLCA4NzIwMiwgODcyMDksIDg3MjE4LCA4NzIyNSwgCisgICAgODcyMzUsIDg3MjQzLCA4NzI1MywgODcyNjEsIDg3MjcxLCA4NzI3OSwgODcyODcsIDg3Mjk1LCA4NzMwNCwgODczMTIsIAorICAgIDg3MzIxLCA4NzMzMCwgODczMzksIDg3MzQ4LCA4NzM1NiwgODczNjQsIDg3MzczLCA4NzM4MSwgODczOTAsIDg3Mzk5LCAKKyAgICA4NzQwNywgODc0MTUsIDg3NDIzLCA4NzQzMiwgODc0NDAsIDg3NDQ4LCA4NzQ1NywgODc0NjUsIDg3NDczLCA4NzQ4MSwgCisgICAgODc0ODksIDg3NDk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzQ5OSwgCisgICAgODc1MDksIDg3NTE5LCA4NzUyOSwgODc1MzksIDg3NTUwLCA4NzU2MCwgODc1NzAsIDg3NTgxLCA4NzU5MCwgODc1OTksIAorICAgIDg3NjA4LCA4NzYxOSwgODc2MjksIDg3NjM5LCA4NzY1MSwgODc2NjEsIDg3NjcxLCA4NzY4MSwgODc2OTEsIDg3NzAxLCAKKyAgICA4NzcxMSwgODc3MjEsIDg3NzMxLCA4Nzc0MSwgODc3NTEsIDg3NzYxLCA4Nzc3MiwgODc3ODMsIDg3NzkzLCA4NzgwMywgCisgICAgODc4MTUsIDg3ODI2LCA4NzgzNywgODc4NDcsIDg3ODU3LCA4Nzg2NywgODc4NzcsIDg3ODg3LCA4Nzg5NywgODc5MDcsIAorICAgIDg3OTE5LCA4NzkyOSwgODc5MzksIDg3OTUxLCA4Nzk2MiwgODc5NzMsIDg3OTgzLCA4Nzk5MywgODgwMDMsIDg4MDEzLCAKKyAgICA4ODAyNSwgODgwMzUsIDg4MDQ1LCA4ODA1NiwgODgwNjcsIDg4MDc3LCA4ODA4NywgODgwOTYsIDg4MTA1LCA4ODExNCwgCisgICAgODgxMjMsIDg4MTMyLCA4ODE0MiwgMCwgMCwgODgxNTIsIDg4MTYyLCA4ODE3MiwgODgxODIsIDg4MTkyLCA4ODIwNCwgCisgICAgODgyMTQsIDg4MjI0LCA4ODIzNiwgODgyNDYsIDg4MjU4LCA4ODI2NywgODgyNzYsIDg4Mjg3LCA4ODI5NywgODgzMDksIAorICAgIDg4MzIwLCA4ODMzMywgODgzNDMsIDg4MzU1LCA4ODM2NCwgODgzNzUsIDg4Mzg2LCA4ODM5OSwgODg0MDksIDg4NDE5LCAKKyAgICA4ODQyOSwgODg0MzksIDg4NDQ5LCA4ODQ1OCwgODg0NjcsIDg4NDc2LCA4ODQ4NSwgODg0OTUsIDg4NTA1LCA4ODUxNSwgCisgICAgODg1MjUsIDg4NTM1LCA4ODU0NSwgODg1NTUsIDg4NTY1LCA4ODU3NSwgODg1ODUsIDg4NTk1LCA4ODYwNSwgODg2MTQsIAorICAgIDg4NjIzLCA4ODYzMiwgODg2NDIsIDg4NjUyLCA4ODY2MiwgODg2NzIsIDg4NjgyLCA4ODY5MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc4ODAsIDg3ODk1LCA4NzkxMCwgODc5MTYsIDg3OTIyLCA4NzkyOCwgCi0gICAgODc5MzQsIDg3OTQwLCA4Nzk0NiwgODc5NTIsIDg3OTU4LCA4Nzk2NiwgODc5NzAsIDg3OTczLCAwLCAwLCA4Nzk4MSwgCi0gICAgODc5ODQsIDg3OTg3LCA4Nzk5MCwgODc5OTMsIDg3OTk2LCA4Nzk5OSwgODgwMDIsIDg4MDA1LCA4ODAwOCwgODgwMTEsIAotICAgIDg4MDE0LCA4ODAxNywgODgwMjAsIDg4MDIzLCA4ODAyNiwgODgwMjksIDg4MDM3LCA4ODA0NiwgODgwNTcsIDg4MDY1LCAKLSAgICA4ODA3MywgODgwODIsIDg4MDkxLCA4ODEwMiwgODgxMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTI0LCA4ODEyOSwgODgxMzQsIAotICAgIDg4MTQxLCA4ODE0OCwgODgxNTQsIDg4MTYwLCA4ODE2NSwgODgxNzAsIDg4MTc1LCA4ODE4MSwgODgxODcsIDg4MTkzLCAKLSAgICA4ODE5OSwgODgyMDUsIDg4MjEyLCA4ODIxOSwgODgyMjksIDg4MjM5LCA4ODI0OSwgODgyNTgsIDg4MjY5LCA4ODI3OCwgCi0gICAgODgyODcsIDg4Mjk3LCA4ODMwNywgODgzMTksIDg4MzMxLCA4ODM0MiwgODgzNTMsIDg4MzY0LCA4ODM3NSwgODgzODUsIAotICAgIDg4Mzk1LCA4ODQwNSwgODg0MTUsIDg4NDI2LCA4ODQzNywgODg0NDEsIDg4NDQ2LCA4ODQ1NSwgODg0NjQsIDg4NDY4LCAKLSAgICA4ODQ3MiwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODQ5OSwgODg1MDMsIDAsIDg4NTA4LCA4ODUxMSwgCi0gICAgODg1MTQsIDg4NTE4LCA4ODUyMiwgODg1MjcsIDg4NTMxLCA4ODUzNSwgODg1NDAsIDg4NTQ1LCA4ODU1MiwgODg1NTksIAotICAgIDg4NTYyLCA4ODU2NSwgODg1NjgsIDg4NTcxLCA4ODU3NCwgODg1NzgsIDg4NTgyLCAwLCA4ODU4NiwgODg1OTEsIDg4NTk1LCAKLSAgICA4ODU5OSwgMCwgMCwgMCwgMCwgODg2MDQsIDg4NjA5LCA4ODYxNiwgODg2MjEsIDg4NjI2LCAwLCA4ODYzMSwgODg2MzYsIAotICAgIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg3LCAKLSAgICA4ODY5NiwgODg3MDUsIDg4NzE0LCA4ODcyMywgODg3MzMsIDg4NzQzLCA4ODc1MywgODg3NjMsIDg4NzcyLCA4ODc4MSwgCi0gICAgODg3OTAsIDg4Nzk5LCA4ODgwNCwgODg4MDksIDg4ODE1LCA4ODgyMSwgODg4MjcsIDg4ODMzLCA4ODg0MSwgODg4NDksIAotICAgIDg4ODU1LCA4ODg2MSwgODg4NjcsIDg4ODczLCA4ODg3OSwgODg4ODUsIDg4ODkxLCA4ODg5NywgODg5MDIsIDg4OTA3LCAKLSAgICA4ODkxMiwgODg5MTcsIDg4OTIyLCA4ODkyNywgODg5MzIsIDg4OTM3LCA4ODk0MywgODg5NDksIDg4OTU1LCA4ODk2MSwgCi0gICAgODg5NjcsIDg4OTczLCA4ODk3OSwgODg5ODUsIDg4OTkxLCA4ODk5NywgODkwMDMsIDg5MDA5LCA4OTAxNSwgODkwMjEsIAotICAgIDg5MDI3LCA4OTAzMywgODkwMzksIDg5MDQ1LCA4OTA1MSwgODkwNTcsIDg5MDYzLCA4OTA2OSwgODkwNzUsIDg5MDgxLCAKLSAgICA4OTA4NywgODkwOTMsIDg5MDk5LCA4OTEwNSwgODkxMTEsIDg5MTE3LCA4OTEyMywgODkxMjksIDg5MTM1LCA4OTE0MSwgCi0gICAgODkxNDcsIDg5MTUzLCA4OTE1OSwgODkxNjUsIDg5MTcxLCA4OTE3NywgODkxODMsIDg5MTg5LCA4OTE5NSwgODkyMDEsIAotICAgIDg5MjA3LCA4OTIxMywgODkyMTksIDg5MjI1LCA4OTIzMSwgODkyMzcsIDg5MjQzLCA4OTI0OSwgODkyNTUsIDg5MjYxLCAKLSAgICA4OTI2NywgODkyNzMsIDg5Mjc5LCA4OTI4NSwgODkyOTEsIDg5Mjk3LCA4OTMwMiwgODkzMDcsIDg5MzEyLCA4OTMxNywgCi0gICAgODkzMjMsIDg5MzI5LCA4OTMzNSwgODkzNDEsIDg5MzQ3LCA4OTM1MywgODkzNTksIDg5MzY1LCA4OTM3MSwgODkzNzcsIAotICAgIDg5Mzg0LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDIzLCA4OTQzNSwgODk0NDcsIDg5NDU5LCAKLSAgICA4OTQ3MiwgODk0ODUsIDg5NDkzLCAwLCAwLCA4OTUwMSwgMCwgODk1MDksIDg5NTEzLCA4OTUxNywgODk1MjAsIDg5NTI0LCAKLSAgICA4OTUyOCwgODk1MzEsIDg5NTM0LCA4OTUzOCwgODk1NDIsIDg5NTQ1LCA4OTU0OCwgODk1NTEsIDg5NTU0LCA4OTU1OSwgCi0gICAgODk1NjIsIDg5NTY2LCA4OTU2OSwgODk1NzIsIDg5NTc1LCA4OTU3OCwgODk1ODEsIDg5NTg0LCA4OTU4OCwgODk1OTEsIAotICAgIDg5NTk1LCA4OTU5OCwgODk2MDEsIDg5NjA1LCA4OTYwOSwgODk2MTMsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMzLCAKLSAgICA4OTYzOSwgODk2NDUsIDg5NjUwLCA4OTY1NiwgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzksIDg5Njg1LCA4OTY5MCwgCi0gICAgODk2OTYsIDg5NzAyLCA4OTcwNywgODk3MTMsIDg5NzE5LCA4OTcyNCwgODk3MjksIDg5NzM1LCA4OTc0MCwgODk3NDYsIAotICAgIDg5NzUyLCA4OTc1OCwgODk3NjQsIDg5NzcwLCA4OTc3NCwgODk3NzksIDg5NzgzLCA4OTc4OCwgODk3OTIsIDg5Nzk3LCAKLSAgICA4OTgwMiwgODk4MDgsIDg5ODE0LCA4OTgyMCwgODk4MjUsIDg5ODMxLCA4OTgzNywgODk4NDMsIDg5ODQ4LCA4OTg1NCwgCi0gICAgODk4NjAsIDg5ODY1LCA4OTg3MSwgODk4NzcsIDg5ODgyLCA4OTg4OCwgODk4OTQsIDg5ODk5LCA4OTkwNCwgODk5MTAsIAotICAgIDg5OTE1LCA4OTkyMSwgODk5MjcsIDg5OTMzLCA4OTkzOSwgODk5NDUsIDg5OTUwLCA4OTk1NCwgODk5NTksIDg5OTYyLCAKLSAgICA4OTk2NywgODk5NzIsIDg5OTc4LCA4OTk4MywgODk5ODgsIDg5OTkyLCA4OTk5NywgOTAwMDIsIDkwMDA3LCA5MDAxMiwgCi0gICAgOTAwMTcsIDkwMDIyLCA5MDAyNywgOTAwMzIsIDkwMDM4LCA5MDA0NCwgOTAwNTAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIAotICAgIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDkwMDgyLCA5MDA4NywgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCAKLSAgICA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgOTAxMzcsIDkwMTQyLCA5MDE0NywgOTAxNTEsIDkwMTU2LCA5MDE2MSwgCi0gICAgOTAxNjYsIDkwMTcxLCA5MDE3NiwgOTAxODAsIDkwMTg1LCA5MDE5MCwgOTAxOTUsIDkwMjAwLCA5MDIwNCwgOTAyMDksIAotICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI4LCA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCAKLSAgICA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI4MCwgOTAyODcsIDkwMjkxLCA5MDI5NiwgOTAzMDEsIDkwMzA2LCA5MDMxMSwgCi0gICAgOTAzMTYsIDkwMzIxLCA5MDMyNiwgOTAzMzEsIDkwMzM2LCA5MDM0MSwgOTAzNDYsIDkwMzUxLCA5MDM1NiwgOTAzNjEsIAotICAgIDkwMzY2LCA5MDM3MSwgOTAzNzYsIDkwMzgxLCA5MDM4NiwgOTAzOTEsIDkwMzk2LCA5MDQwMSwgOTA0MDYsIDkwNDExLCAKLSAgICA5MDQxNiwgOTA0MjEsIDkwNDI2LCA5MDQzMSwgOTA0MzYsIDAsIDAsIDAsIDkwNDQxLCA5MDQ0NSwgOTA0NTAsIDkwNDU0LCAKLSAgICA5MDQ1OSwgOTA0NjQsIDAsIDAsIDkwNDY4LCA5MDQ3MywgOTA0NzgsIDkwNDgyLCA5MDQ4NywgOTA0OTIsIDAsIDAsIAotICAgIDkwNDk3LCA5MDUwMiwgOTA1MDYsIDkwNTExLCA5MDUxNiwgOTA1MjEsIDAsIDAsIDkwNTI2LCA5MDUzMSwgOTA1MzYsIDAsIAotICAgIDAsIDAsIDkwNTQwLCA5MDU0NCwgOTA1NDgsIDkwNTUyLCA5MDU1NSwgOTA1NTksIDkwNTYzLCAwLCA5MDU2NywgOTA1NzMsIAotICAgIDkwNTc2LCA5MDU3OSwgOTA1ODIsIDkwNTg1LCA5MDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1OTMsIAotICAgIDkwNTk5LCA5MDYwNSwgOTA2MTEsIDkwNjE3LCAwLCAwLCA5MDYyMSwgOTA2MjcsIDkwNjMzLCA5MDYzOSwgOTA2NDUsIAotICAgIDkwNjUxLCA5MDY1OCwgOTA2NjUsIDkwNjcyLCA5MDY3OSwgOTA2ODYsIDkwNjkzLCAwLCA5MDcwMCwgOTA3MDcsIDkwNzE0LCAKLSAgICA5MDcyMCwgOTA3MjcsIDkwNzM0LCA5MDc0MSwgOTA3NDgsIDkwNzU0LCA5MDc2MSwgOTA3NjgsIDkwNzc1LCA5MDc4MiwgCi0gICAgOTA3ODksIDkwNzk2LCA5MDgwMywgOTA4MTAsIDkwODE3LCA5MDgyMywgOTA4MzAsIDkwODM3LCA5MDg0NCwgOTA4NTEsIAotICAgIDkwODU4LCA5MDg2NSwgOTA4NzIsIDAsIDkwODc5LCA5MDg4NiwgOTA4OTMsIDkwOTAwLCA5MDkwNywgOTA5MTQsIDkwOTIxLCAKLSAgICA5MDkyOCwgOTA5MzUsIDkwOTQyLCA5MDk0OSwgOTA5NTYsIDkwOTYzLCA5MDk3MCwgOTA5NzYsIDkwOTgzLCA5MDk5MCwgCi0gICAgOTA5OTcsIDkxMDA0LCAwLCA5MTAxMSwgOTEwMTgsIDAsIDkxMDI1LCA5MTAzMiwgOTEwMzksIDkxMDQ2LCA5MTA1MywgCi0gICAgOTEwNjAsIDkxMDY3LCA5MTA3NCwgOTEwODEsIDkxMDg4LCA5MTA5NSwgOTExMDIsIDkxMTA5LCA5MTExNiwgOTExMjMsIDAsIAotICAgIDAsIDkxMTI5LCA5MTEzNCwgOTExMzksIDkxMTQ0LCA5MTE0OSwgOTExNTQsIDkxMTU5LCA5MTE2NCwgOTExNjksIDkxMTc0LCAKLSAgICA5MTE3OSwgOTExODQsIDkxMTg5LCA5MTE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTExOTksIDkxMjA2LCAKLSAgICA5MTIxMywgOTEyMjAsIDkxMjI3LCA5MTIzNCwgOTEyNDEsIDkxMjQ4LCA5MTI1NSwgOTEyNjIsIDkxMjY5LCA5MTI3NiwgCi0gICAgOTEyODMsIDkxMjkwLCA5MTI5NywgOTEzMDQsIDkxMzExLCA5MTMxOCwgOTEzMjUsIDkxMzMyLCA5MTM0MCwgOTEzNDgsIAotICAgIDkxMzU1LCA5MTM2MiwgOTEzNjcsIDkxMzc1LCA5MTM4MywgOTEzOTAsIDkxMzk3LCA5MTQwMiwgOTE0MDksIDkxNDE0LCAKLSAgICA5MTQxOSwgOTE0MjYsIDkxNDMxLCA5MTQzNiwgOTE0NDEsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY2LCA5MTQ3MSwgCi0gICAgOTE0NzYsIDkxNDgzLCA5MTQ5MCwgOTE0OTUsIDkxNTAwLCA5MTUwNSwgOTE1MTAsIDkxNTE1LCA5MTUyMCwgOTE1MjUsIAotICAgIDkxNTMwLCA5MTUzNSwgOTE1NDIsIDkxNTQ3LCA5MTU1NCwgOTE1NTksIDkxNTY0LCA5MTU2OSwgOTE1NzQsIDkxNTc5LCAKLSAgICA5MTU4NCwgOTE1ODksIDkxNTk0LCA5MTU5OSwgOTE2MDQsIDkxNjA5LCA5MTYxNiwgOTE2MjMsIDkxNjMwLCA5MTYzNywgCi0gICAgOTE2NDMsIDkxNjQ4LCA5MTY1NSwgOTE2NjAsIDkxNjY1LCA5MTY3NCwgOTE2ODEsIDkxNjkwLCA5MTY5NywgOTE3MDIsIAotICAgIDkxNzA3LCA5MTcxNSwgOTE3MjAsIDkxNzI1LCA5MTczMCwgOTE3MzUsIDkxNzQwLCA5MTc0NywgOTE3NTIsIDkxNzU3LCAKLSAgICA5MTc2MiwgOTE3NjcsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTgwMCwgOTE4MDcsIDkxODE0LCA5MTgyMSwgCi0gICAgOTE4MjgsIDkxODM1LCA5MTg0MiwgOTE4NDksIDkxODU2LCA5MTg2MywgOTE4NzAsIDkxODc3LCA5MTg4NCwgOTE4OTEsIAotICAgIDkxODk4LCA5MTkwNSwgOTE5MTIsIDkxOTE5LCA5MTkyNiwgOTE5MzMsIDkxOTQwLCA5MTk0NywgOTE5NTQsIDkxOTYxLCAKLSAgICA5MTk2OCwgMCwgMCwgMCwgMCwgMCwgOTE5NzUsIDkxOTgzLCA5MTk5MSwgMCwgMCwgMCwgMCwgOTE5OTYsIDkyMDAwLCAKLSAgICA5MjAwNCwgOTIwMDgsIDkyMDEyLCA5MjAxNiwgOTIwMjAsIDkyMDI1LCA5MjAyOSwgOTIwMzQsIDkyMDM5LCA5MjA0NCwgCi0gICAgOTIwNDksIDkyMDU0LCA5MjA1OSwgOTIwNjQsIDkyMDY5LCA5MjA3NCwgOTIwNzksIDkyMDg1LCA5MjA5MSwgOTIwOTcsIAotICAgIDkyMTA0LCA5MjExMSwgOTIxMTgsIDkyMTI1LCA5MjEzMiwgOTIxMzksIDkyMTQ1LCA5MjE1MSwgOTIxNTcsIDkyMTY0LCAKLSAgICA5MjE3MSwgOTIxNzgsIDkyMTg1LCA5MjE5MiwgOTIxOTksIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI3LCA5MjIzNCwgCi0gICAgOTIyNDEsIDkyMjQ4LCA5MjI1NSwgMCwgMCwgMCwgOTIyNjIsIDkyMjcwLCA5MjI3OCwgOTIyODYsIDkyMjk0LCA5MjMwMiwgCi0gICAgOTIzMTIsIDkyMzIyLCA5MjMzMCwgOTIzMzgsIDkyMzQ2LCA5MjM1NCwgOTIzNjIsIDkyMzY4LCA5MjM3NSwgOTIzODQsIAotICAgIDkyMzkzLCA5MjQwMiwgOTI0MTEsIDkyNDIwLCA5MjQyOSwgOTI0MzksIDkyNDUwLCA5MjQ2MCwgOTI0NzEsIDkyNDgwLCAKLSAgICA5MjQ4OSwgOTI0OTgsIDkyNTA4LCA5MjUxOSwgOTI1MjksIDkyNTQwLCA5MjU1MSwgOTI1NjAsIDkyNTY4LCA5MjU3NCwgCi0gICAgOTI1ODAsIDkyNTg2LCA5MjU5MiwgOTI2MDAsIDkyNjA4LCA5MjYxNCwgOTI2MjEsIDkyNjMxLCA5MjYzOCwgOTI2NDUsIAotICAgIDkyNjUyLCA5MjY1OSwgOTI2NjYsIDkyNjc2LCA5MjY4MywgOTI2OTAsIDkyNjk4LCA5MjcwNiwgOTI3MTUsIDkyNzI0LCAKLSAgICA5MjczMywgOTI3NDIsIDkyNzUxLCA5Mjc1OSwgOTI3NjgsIDkyNzc3LCA5Mjc4NiwgOTI3OTAsIDkyNzk3LCA5MjgwMiwgCi0gICAgOTI4MDcsIDkyODExLCA5MjgxNSwgOTI4MTksIDkyODIzLCA5MjgyOCwgOTI4MzMsIDkyODM5LCA5Mjg0NSwgOTI4NDksIAotICAgIDkyODU1LCA5Mjg1OSwgOTI4NjMsIDkyODY3LCA5Mjg3MSwgOTI4NzUsIDkyODc5LCA5Mjg4NSwgOTI4ODksIDkyODk0LCAwLCAKLSAgICAwLCAwLCA5Mjg5OCwgOTI5MDMsIDkyOTA4LCA5MjkxMywgOTI5MTgsIDkyOTI1LCA5MjkzMCwgOTI5MzUsIDkyOTQwLCAKLSAgICA5Mjk0NSwgOTI5NTAsIDkyOTU1LCAwLCAwLCAwLCAwLCA5Mjk2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3MDMsIDg4NzE4LCA4ODczMywgODg3MzksIDg4NzQ1LCA4ODc1MSwgCisgICAgODg3NTcsIDg4NzYzLCA4ODc2OSwgODg3NzUsIDg4NzgxLCA4ODc4OSwgODg3OTMsIDg4Nzk2LCAwLCAwLCA4ODgwNCwgCisgICAgODg4MDcsIDg4ODEwLCA4ODgxMywgODg4MTYsIDg4ODE5LCA4ODgyMiwgODg4MjUsIDg4ODI4LCA4ODgzMSwgODg4MzQsIAorICAgIDg4ODM3LCA4ODg0MCwgODg4NDMsIDg4ODQ2LCA4ODg0OSwgODg4NTIsIDg4ODYwLCA4ODg2OSwgODg4ODAsIDg4ODg4LCAKKyAgICA4ODg5NiwgODg5MDUsIDg4OTE0LCA4ODkyNSwgODg5MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDg4OTQ3LCA4ODk1MiwgODg5NTcsIAorICAgIDg4OTY0LCA4ODk3MSwgODg5NzcsIDg4OTgzLCA4ODk4OCwgODg5OTMsIDg4OTk4LCA4OTAwNCwgODkwMTAsIDg5MDE2LCAKKyAgICA4OTAyMiwgODkwMjgsIDg5MDM1LCA4OTA0MiwgODkwNTIsIDg5MDYyLCA4OTA3MiwgODkwODEsIDg5MDkyLCA4OTEwMSwgCisgICAgODkxMTAsIDg5MTIwLCA4OTEzMCwgODkxNDIsIDg5MTU0LCA4OTE2NSwgODkxNzYsIDg5MTg3LCA4OTE5OCwgODkyMDgsIAorICAgIDg5MjE4LCA4OTIyOCwgODkyMzgsIDg5MjQ5LCA4OTI2MCwgODkyNjQsIDg5MjY5LCA4OTI3OCwgODkyODcsIDg5MjkxLCAKKyAgICA4OTI5NSwgODkyOTksIDg5MzA0LCA4OTMwOSwgODkzMTQsIDg5MzE5LCA4OTMyMiwgODkzMjYsIDAsIDg5MzMxLCA4OTMzNCwgCisgICAgODkzMzcsIDg5MzQxLCA4OTM0NSwgODkzNTAsIDg5MzU0LCA4OTM1OCwgODkzNjMsIDg5MzY4LCA4OTM3NSwgODkzODIsIAorICAgIDg5Mzg1LCA4OTM4OCwgODkzOTEsIDg5Mzk0LCA4OTM5NywgODk0MDEsIDg5NDA1LCAwLCA4OTQwOSwgODk0MTQsIDg5NDE4LCAKKyAgICA4OTQyMiwgMCwgMCwgMCwgMCwgODk0MjcsIDg5NDMyLCA4OTQzOSwgODk0NDQsIDg5NDQ5LCAwLCA4OTQ1NCwgODk0NTksIAorICAgIDg5NDY0LCA4OTQ2OSwgODk0NzQsIDg5NDc5LCA4OTQ4NCwgODk0ODksIDg5NDk0LCA4OTQ5OSwgODk1MDQsIDg5NTEwLCAKKyAgICA4OTUxOSwgODk1MjgsIDg5NTM3LCA4OTU0NiwgODk1NTYsIDg5NTY2LCA4OTU3NiwgODk1ODYsIDg5NTk1LCA4OTYwNCwgCisgICAgODk2MTMsIDg5NjIyLCA4OTYyNywgODk2MzIsIDg5NjM4LCA4OTY0NCwgODk2NTAsIDg5NjU2LCA4OTY2NCwgODk2NzIsIAorICAgIDg5Njc4LCA4OTY4NCwgODk2OTAsIDg5Njk2LCA4OTcwMiwgODk3MDgsIDg5NzE0LCA4OTcyMCwgODk3MjUsIDg5NzMwLCAKKyAgICA4OTczNSwgODk3NDAsIDg5NzQ1LCA4OTc1MCwgODk3NTUsIDg5NzYwLCA4OTc2NiwgODk3NzIsIDg5Nzc4LCA4OTc4NCwgCisgICAgODk3OTAsIDg5Nzk2LCA4OTgwMiwgODk4MDgsIDg5ODE0LCA4OTgyMCwgODk4MjYsIDg5ODMyLCA4OTgzOCwgODk4NDQsIAorICAgIDg5ODUwLCA4OTg1NiwgODk4NjIsIDg5ODY4LCA4OTg3NCwgODk4ODAsIDg5ODg2LCA4OTg5MiwgODk4OTgsIDg5OTA0LCAKKyAgICA4OTkxMCwgODk5MTYsIDg5OTIyLCA4OTkyOCwgODk5MzQsIDg5OTQwLCA4OTk0NiwgODk5NTIsIDg5OTU4LCA4OTk2NCwgCisgICAgODk5NzAsIDg5OTc2LCA4OTk4MiwgODk5ODgsIDg5OTk0LCA5MDAwMCwgOTAwMDYsIDkwMDEyLCA5MDAxOCwgOTAwMjQsIAorICAgIDkwMDMwLCA5MDAzNiwgOTAwNDIsIDkwMDQ4LCA5MDA1NCwgOTAwNjAsIDkwMDY2LCA5MDA3MiwgOTAwNzgsIDkwMDg0LCAKKyAgICA5MDA5MCwgOTAwOTYsIDkwMTAyLCA5MDEwOCwgOTAxMTQsIDkwMTIwLCA5MDEyNSwgOTAxMzAsIDkwMTM1LCA5MDE0MCwgCisgICAgOTAxNDYsIDkwMTUyLCA5MDE1OCwgOTAxNjQsIDkwMTcwLCA5MDE3NiwgOTAxODIsIDkwMTg4LCA5MDE5NCwgOTAyMDAsIAorICAgIDkwMjA3LCA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOSwgOTAyMzQsIDkwMjQ2LCA5MDI1OCwgOTAyNzAsIDkwMjgyLCAKKyAgICA5MDI5NSwgOTAzMDgsIDkwMzE2LCAwLCAwLCA5MDMyNCwgMCwgOTAzMzIsIDkwMzM2LCA5MDM0MCwgOTAzNDMsIDkwMzQ3LCAKKyAgICA5MDM1MSwgOTAzNTQsIDkwMzU3LCA5MDM2MSwgOTAzNjUsIDkwMzY4LCA5MDM3MSwgOTAzNzQsIDkwMzc3LCA5MDM4MiwgCisgICAgOTAzODUsIDkwMzg5LCA5MDM5MiwgOTAzOTUsIDkwMzk4LCA5MDQwMSwgOTA0MDQsIDkwNDA3LCA5MDQxMSwgOTA0MTQsIAorICAgIDkwNDE4LCA5MDQyMSwgOTA0MjQsIDkwNDI4LCA5MDQzMiwgOTA0MzYsIDkwNDQwLCA5MDQ0NSwgOTA0NTAsIDkwNDU2LCAKKyAgICA5MDQ2MiwgOTA0NjgsIDkwNDczLCA5MDQ3OSwgOTA0ODUsIDkwNDkxLCA5MDQ5NiwgOTA1MDIsIDkwNTA4LCA5MDUxMywgCisgICAgOTA1MTksIDkwNTI1LCA5MDUzMCwgOTA1MzYsIDkwNTQyLCA5MDU0NywgOTA1NTMsIDkwNTU5LCA5MDU2NCwgOTA1NzAsIAorICAgIDkwNTc2LCA5MDU4MiwgOTA1ODgsIDkwNTk0LCA5MDU5OCwgOTA2MDMsIDkwNjA3LCA5MDYxMiwgOTA2MTYsIDkwNjIxLCAKKyAgICA5MDYyNiwgOTA2MzIsIDkwNjM4LCA5MDY0NCwgOTA2NDksIDkwNjU1LCA5MDY2MSwgOTA2NjcsIDkwNjcyLCA5MDY3OCwgCisgICAgOTA2ODQsIDkwNjg5LCA5MDY5NSwgOTA3MDEsIDkwNzA2LCA5MDcxMiwgOTA3MTgsIDkwNzIzLCA5MDcyOSwgOTA3MzUsIAorICAgIDkwNzQwLCA5MDc0NiwgOTA3NTIsIDkwNzU4LCA5MDc2NCwgOTA3NzAsIDkwNzc1LCA5MDc3OSwgOTA3ODQsIDkwNzg3LCAKKyAgICA5MDc5MiwgOTA3OTcsIDkwODAzLCA5MDgwOCwgOTA4MTMsIDkwODE3LCA5MDgyMiwgOTA4MjcsIDkwODMyLCA5MDgzNywgCisgICAgOTA4NDIsIDkwODQ3LCA5MDg1MiwgOTA4NTcsIDkwODYzLCA5MDg2OSwgOTA4NzUsIDkwODgzLCA5MDg4NywgOTA4OTEsIAorICAgIDkwODk1LCA5MDg5OSwgOTA5MDMsIDkwOTA3LCA5MDkxMiwgOTA5MTcsIDkwOTIyLCA5MDkyNywgOTA5MzIsIDkwOTM3LCAKKyAgICA5MDk0MiwgOTA5NDcsIDkwOTUyLCA5MDk1NywgOTA5NjIsIDkwOTY3LCA5MDk3MiwgOTA5NzYsIDkwOTgwLCA5MDk4NSwgCisgICAgOTA5OTAsIDkwOTk1LCA5MTAwMCwgOTEwMDQsIDkxMDA5LCA5MTAxNCwgOTEwMTksIDkxMDI0LCA5MTAyOCwgOTEwMzMsIAorICAgIDkxMDM4LCA5MTA0MywgOTEwNDgsIDkxMDUyLCA5MTA1NywgOTEwNjIsIDkxMDY3LCA5MTA3MiwgOTEwNzcsIDkxMDgyLCAKKyAgICA5MTA4NywgOTEwOTIsIDkxMDk3LCA5MTEwNCwgOTExMTEsIDkxMTE1LCA5MTEyMCwgOTExMjUsIDkxMTMwLCA5MTEzNSwgCisgICAgOTExNDAsIDkxMTQ1LCA5MTE1MCwgOTExNTUsIDkxMTYwLCA5MTE2NSwgOTExNzAsIDkxMTc1LCA5MTE4MCwgOTExODUsIAorICAgIDkxMTkwLCA5MTE5NSwgOTEyMDAsIDkxMjA1LCA5MTIxMCwgOTEyMTUsIDkxMjIwLCA5MTIyNSwgOTEyMzAsIDkxMjM1LCAKKyAgICA5MTI0MCwgOTEyNDUsIDkxMjUwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCA5MTI2OSwgOTEyNzQsIDkxMjc4LCAKKyAgICA5MTI4MywgOTEyODgsIDAsIDAsIDkxMjkyLCA5MTI5NywgOTEzMDIsIDkxMzA2LCA5MTMxMSwgOTEzMTYsIDAsIDAsIAorICAgIDkxMzIxLCA5MTMyNiwgOTEzMzAsIDkxMzM1LCA5MTM0MCwgOTEzNDUsIDAsIDAsIDkxMzUwLCA5MTM1NSwgOTEzNjAsIDAsIAorICAgIDAsIDAsIDkxMzY0LCA5MTM2OCwgOTEzNzIsIDkxMzc2LCA5MTM3OSwgOTEzODMsIDkxMzg3LCAwLCA5MTM5MSwgOTEzOTcsIAorICAgIDkxNDAwLCA5MTQwMywgOTE0MDYsIDkxNDA5LCA5MTQxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE0MTcsIAorICAgIDkxNDIzLCA5MTQyOSwgOTE0MzUsIDkxNDQxLCAwLCAwLCA5MTQ0NSwgOTE0NTEsIDkxNDU3LCA5MTQ2MywgOTE0NjksIAorICAgIDkxNDc1LCA5MTQ4MiwgOTE0ODksIDkxNDk2LCA5MTUwMywgOTE1MTAsIDkxNTE3LCAwLCA5MTUyNCwgOTE1MzEsIDkxNTM4LCAKKyAgICA5MTU0NCwgOTE1NTEsIDkxNTU4LCA5MTU2NSwgOTE1NzIsIDkxNTc4LCA5MTU4NSwgOTE1OTIsIDkxNTk5LCA5MTYwNiwgCisgICAgOTE2MTIsIDkxNjE5LCA5MTYyNiwgOTE2MzMsIDkxNjQwLCA5MTY0NiwgOTE2NTMsIDkxNjYwLCA5MTY2NywgOTE2NzQsIAorICAgIDkxNjgxLCA5MTY4OCwgOTE2OTUsIDAsIDkxNzAyLCA5MTcwOSwgOTE3MTYsIDkxNzIzLCA5MTczMCwgOTE3MzcsIDkxNzQ0LCAKKyAgICA5MTc1MSwgOTE3NTgsIDkxNzY1LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE3OTksIDkxODA2LCA5MTgxMywgCisgICAgOTE4MjAsIDkxODI3LCAwLCA5MTgzNCwgOTE4NDEsIDAsIDkxODQ4LCA5MTg1NSwgOTE4NjIsIDkxODY5LCA5MTg3NiwgCisgICAgOTE4ODMsIDkxODkwLCA5MTg5NywgOTE5MDQsIDkxOTExLCA5MTkxOCwgOTE5MjUsIDkxOTMyLCA5MTkzOSwgOTE5NDYsIDAsIAorICAgIDAsIDkxOTUyLCA5MTk1NywgOTE5NjIsIDkxOTY3LCA5MTk3MiwgOTE5NzcsIDkxOTgyLCA5MTk4NywgOTE5OTIsIDkxOTk3LCAKKyAgICA5MjAwMiwgOTIwMDcsIDkyMDEyLCA5MjAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIwMjIsIDkyMDI5LCAKKyAgICA5MjAzNiwgOTIwNDMsIDkyMDUwLCA5MjA1NywgOTIwNjQsIDkyMDcxLCA5MjA3OCwgOTIwODUsIDkyMDkyLCA5MjA5OSwgCisgICAgOTIxMDYsIDkyMTEzLCA5MjEyMCwgOTIxMjcsIDkyMTM0LCA5MjE0MSwgOTIxNDgsIDkyMTU1LCA5MjE2MywgOTIxNzEsIAorICAgIDkyMTc4LCA5MjE4NSwgOTIxOTAsIDkyMTk4LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNSwgOTIyMzIsIDkyMjM3LCAKKyAgICA5MjI0MiwgOTIyNDksIDkyMjU0LCA5MjI1OSwgOTIyNjQsIDkyMjcyLCA5MjI3NywgOTIyODIsIDkyMjg5LCA5MjI5NCwgCisgICAgOTIyOTksIDkyMzA2LCA5MjMxMywgOTIzMTgsIDkyMzIzLCA5MjMyOCwgOTIzMzMsIDkyMzM4LCA5MjM0MywgOTIzNDgsIAorICAgIDkyMzUzLCA5MjM1OCwgOTIzNjUsIDkyMzcwLCA5MjM3NywgOTIzODIsIDkyMzg3LCA5MjM5MiwgOTIzOTcsIDkyNDAyLCAKKyAgICA5MjQwNywgOTI0MTIsIDkyNDE3LCA5MjQyMiwgOTI0MjcsIDkyNDMyLCA5MjQzOSwgOTI0NDYsIDkyNDUzLCA5MjQ2MCwgCisgICAgOTI0NjYsIDkyNDcxLCA5MjQ3OCwgOTI0ODMsIDkyNDg4LCA5MjQ5NywgOTI1MDQsIDkyNTEzLCA5MjUyMCwgOTI1MjUsIAorICAgIDkyNTMwLCA5MjUzOCwgOTI1NDMsIDkyNTQ4LCA5MjU1MywgOTI1NTgsIDkyNTYzLCA5MjU3MCwgOTI1NzUsIDkyNTgwLCAKKyAgICA5MjU4NSwgOTI1OTAsIDkyNTk1LCA5MjYwMiwgOTI2MDksIDkyNjE2LCA5MjYyMywgOTI2MzAsIDkyNjM3LCA5MjY0NCwgCisgICAgOTI2NTEsIDkyNjU4LCA5MjY2NSwgOTI2NzIsIDkyNjc5LCA5MjY4NiwgOTI2OTMsIDkyNzAwLCA5MjcwNywgOTI3MTQsIAorICAgIDkyNzIxLCA5MjcyOCwgOTI3MzUsIDkyNzQyLCA5Mjc0OSwgOTI3NTYsIDkyNzYzLCA5Mjc3MCwgOTI3NzcsIDkyNzg0LCAKKyAgICA5Mjc5MSwgMCwgMCwgMCwgMCwgMCwgOTI3OTgsIDkyODA2LCA5MjgxNCwgMCwgMCwgMCwgMCwgOTI4MTksIDkyODIzLCAKKyAgICA5MjgyNywgOTI4MzEsIDkyODM1LCA5MjgzOSwgOTI4NDMsIDkyODQ4LCA5Mjg1MiwgOTI4NTcsIDkyODYyLCA5Mjg2NywgCisgICAgOTI4NzIsIDkyODc3LCA5Mjg4MiwgOTI4ODcsIDkyODkyLCA5Mjg5NywgOTI5MDIsIDkyOTA4LCA5MjkxNCwgOTI5MjAsIAorICAgIDkyOTI3LCA5MjkzNCwgOTI5NDEsIDkyOTQ4LCA5Mjk1NSwgOTI5NjIsIDkyOTY4LCA5Mjk3NCwgOTI5ODAsIDkyOTg3LCAKKyAgICA5Mjk5NCwgOTMwMDEsIDkzMDA4LCA5MzAxNSwgOTMwMjIsIDkzMDI5LCA5MzAzNiwgOTMwNDMsIDkzMDUwLCA5MzA1NywgCisgICAgOTMwNjQsIDkzMDcxLCA5MzA3OCwgMCwgMCwgMCwgOTMwODUsIDkzMDkzLCA5MzEwMSwgOTMxMDksIDkzMTE3LCA5MzEyNSwgCisgICAgOTMxMzUsIDkzMTQ1LCA5MzE1MywgOTMxNjEsIDkzMTY5LCA5MzE3NywgOTMxODUsIDkzMTkxLCA5MzE5OCwgOTMyMDcsIAorICAgIDkzMjE2LCA5MzIyNSwgOTMyMzQsIDkzMjQzLCA5MzI1MiwgOTMyNjIsIDkzMjczLCA5MzI4MywgOTMyOTQsIDkzMzAzLCAKKyAgICA5MzMxMiwgOTMzMjEsIDkzMzMxLCA5MzM0MiwgOTMzNTIsIDkzMzYzLCA5MzM3NCwgOTMzODMsIDkzMzkxLCA5MzM5NywgCisgICAgOTM0MDMsIDkzNDA5LCA5MzQxNSwgOTM0MjMsIDkzNDMxLCA5MzQzNywgOTM0NDQsIDkzNDU0LCA5MzQ2MSwgOTM0NjgsIAorICAgIDkzNDc1LCA5MzQ4MiwgOTM0ODksIDkzNDk5LCA5MzUwNiwgOTM1MTMsIDkzNTIxLCA5MzUyOSwgOTM1MzgsIDkzNTQ3LCAKKyAgICA5MzU1NiwgOTM1NjUsIDkzNTc0LCA5MzU4MiwgOTM1OTEsIDkzNjAwLCA5MzYwOSwgOTM2MTMsIDkzNjIwLCA5MzYyNSwgCisgICAgOTM2MzAsIDkzNjM0LCA5MzYzOCwgOTM2NDIsIDkzNjQ2LCA5MzY1MSwgOTM2NTYsIDkzNjYyLCA5MzY2OCwgOTM2NzIsIAorICAgIDkzNjc4LCA5MzY4MiwgOTM2ODYsIDkzNjkwLCA5MzY5NCwgOTM2OTgsIDkzNzAyLCA5MzcwOCwgOTM3MTIsIDkzNzE3LCAKKyAgICA5MzcyMSwgOTM3MjUsIDAsIDkzNzI4LCA5MzczMywgOTM3MzgsIDkzNzQzLCA5Mzc0OCwgOTM3NTUsIDkzNzYwLCA5Mzc2NSwgCisgICAgOTM3NzAsIDkzNzc1LCA5Mzc4MCwgOTM3ODUsIDAsIDAsIDAsIDAsIDkzNzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Mjk2NiwgOTI5NzMsIDkyOTgyLCA5Mjk5MSwgOTI5OTgsIAotICAgIDkzMDA1LCA5MzAxMiwgOTMwMTksIDkzMDI2LCA5MzAzMywgOTMwMzksIDkzMDQ2LCA5MzA1MywgOTMwNjAsIDkzMDY3LCAKLSAgICA5MzA3NCwgOTMwODEsIDkzMDg4LCA5MzA5NSwgOTMxMDQsIDkzMTExLCA5MzExOCwgOTMxMjUsIDkzMTMyLCA5MzEzOSwgCi0gICAgOTMxNDYsIDkzMTUzLCA5MzE2MCwgOTMxNjksIDkzMTc2LCA5MzE4MywgOTMxOTAsIDkzMTk3LCA5MzIwNCwgOTMyMTEsIAotICAgIDkzMjIwLCA5MzIyNywgOTMyMzQsIDkzMjQxLCA5MzI0OCwgOTMyNTcsIDkzMjY0LCA5MzI3MSwgOTMyNzgsIDkzMjg2LCAKLSAgICA5MzI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM3OTYsIDkzODAzLCA5MzgxMiwgOTM4MjEsIAorICAgIDkzODI4LCA5MzgzNSwgOTM4NDIsIDkzODQ5LCA5Mzg1NiwgOTM4NjMsIDkzODY5LCA5Mzg3NiwgOTM4ODMsIDkzODkwLCAKKyAgICA5Mzg5NywgOTM5MDQsIDkzOTExLCA5MzkxOCwgOTM5MjUsIDkzOTM0LCA5Mzk0MSwgOTM5NDgsIDkzOTU1LCA5Mzk2MiwgCisgICAgOTM5NjksIDkzOTc2LCA5Mzk4MywgOTM5OTAsIDkzOTk5LCA5NDAwNiwgOTQwMTMsIDk0MDIwLCA5NDAyNywgOTQwMzQsIAorICAgIDk0MDQxLCA5NDA1MCwgOTQwNTcsIDk0MDY0LCA5NDA3MSwgOTQwNzgsIDk0MDg3LCA5NDA5NCwgOTQxMDEsIDk0MTA4LCAKKyAgICA5NDExNiwgOTQxMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzMzA0LCA5MzMwOCwgOTMzMTIsIDkzMzE3LCA5MzMyMiwgCi0gICAgOTMzMjcsIDkzMzMyLCA5MzMzNiwgOTMzNDEsIDkzMzQ2LCA5MzM1MSwgOTMzNTYsIDkzMzYxLCA5MzM2NiwgOTMzNzAsIAotICAgIDkzMzc1LCA5MzM4MCwgOTMzODUsIDkzMzkwLCA5MzM5NCwgOTMzOTksIDkzNDA0LCA5MzQwOCwgOTM0MTIsIDkzNDE3LCAKLSAgICA5MzQyMiwgOTM0MjcsIDkzNDMyLCA5MzQzNywgMCwgMCwgMCwgOTM0NDIsIDkzNDQ2LCA5MzQ1MSwgOTM0NTYsIDkzNDYwLCAKLSAgICA5MzQ2NSwgOTM0NjksIDkzNDc0LCA5MzQ3OSwgOTM0ODQsIDkzNDg5LCA5MzQ5NCwgOTM0OTgsIDkzNTAzLCA5MzUwOCwgCi0gICAgOTM1MTMsIDkzNTE4LCA5MzUyMiwgOTM1MjcsIDkzNTMxLCA5MzUzNiwgOTM1NDEsIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIAotICAgIDkzNTYxLCA5MzU2NSwgOTM1NjksIDkzNTc0LCA5MzU3OSwgOTM1ODQsIDkzNTg5LCA5MzU5NCwgOTM1OTksIDkzNjA0LCAKLSAgICA5MzYwOSwgOTM2MTQsIDkzNjE5LCA5MzYyNCwgOTM2MjksIDkzNjM0LCA5MzYzOSwgOTM2NDQsIDkzNjQ5LCA5MzY1NCwgCi0gICAgOTM2NTksIDkzNjY0LCA5MzY2OSwgOTM2NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDkzNjc5LCA5MzY4NSwgOTM2OTAsIDkzNjk1LCA5MzcwMCwgOTM3MDUsIDkzNzEwLCA5MzcxNSwgOTM3MjEsIDkzNzI2LCAKLSAgICA5MzczMiwgOTM3MzgsIDkzNzQ0LCA5Mzc1MCwgOTM3NTYsIDkzNzYyLCA5Mzc2OCwgOTM3NzQsIDkzNzgwLCA5Mzc4NiwgCi0gICAgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTUsIDkzODIzLCA5MzgzMSwgOTM4MzksIDkzODQ3LCAwLCAwLCAwLCAwLCAKLSAgICA5Mzg1NSwgOTM4NTksIDkzODY0LCA5Mzg2OSwgOTM4NzQsIDkzODc4LCA5Mzg4MywgOTM4ODgsIDkzODkzLCA5Mzg5OCwgCi0gICAgOTM5MDIsIDkzOTA2LCA5MzkxMSwgOTM5MTYsIDkzOTIxLCA5MzkyNiwgOTM5MzAsIDkzOTM1LCA5Mzk0MCwgOTM5NDUsIAotICAgIDkzOTUwLCA5Mzk1NSwgOTM5NjAsIDkzOTY0LCA5Mzk2OSwgOTM5NzQsIDkzOTc5LCA5Mzk4NCwgOTM5ODksIDkzOTk0LCAKLSAgICA5Mzk5OSwgOTQwMDQsIDk0MDA5LCA5NDAxNCwgOTQwMTksIDk0MDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5NDAzMSwgOTQwMzYsIDk0MDQxLCA5NDA0NiwgOTQwNTEsIDk0MDU2LCA5NDA2MSwgOTQwNjYsIDk0MDcxLCAKLSAgICA5NDA3NiwgOTQwODEsIDk0MDg2LCA5NDA5MSwgOTQwOTYsIDk0MTAxLCA5NDEwNiwgOTQxMTEsIDk0MTE2LCA5NDEyMSwgCi0gICAgOTQxMjYsIDk0MTMxLCA5NDEzNiwgOTQxNDEsIDk0MTQ2LCA5NDE1MSwgOTQxNTYsIDk0MTYxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NDE2OCwgOTQxNzQsIDk0MTgwLCA5NDE4NiwgOTQxOTIsIDk0MTk3LCA5NDIwMywgOTQyMDksIDk0MjE1LCA5NDIyMSwgCi0gICAgOTQyMjYsIDk0MjMyLCA5NDIzOCwgOTQyNDQsIDk0MjUwLCA5NDI1NiwgOTQyNjIsIDk0MjY4LCA5NDI3NCwgOTQyODAsIAotICAgIDk0Mjg1LCA5NDI5MSwgOTQyOTcsIDk0MzAzLCA5NDMwOSwgOTQzMTUsIDk0MzIwLCA5NDMyNiwgOTQzMzIsIDk0MzM3LCAKLSAgICA5NDM0MywgOTQzNDksIDk0MzU1LCA5NDM2MSwgOTQzNjcsIDk0MzczLCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NywgCi0gICAgOTQ0MDQsIDk0NDExLCA5NDQxOCwgMCwgMCwgMCwgMCwgMCwgOTQ0MjUsIDk0NDMwLCA5NDQzNSwgOTQ0NDAsIDk0NDQ1LCAKLSAgICA5NDQ1MCwgOTQ0NTUsIDk0NDYwLCA5NDQ2NSwgOTQ0NzAsIDk0NDc1LCA5NDQ4MCwgOTQ0ODUsIDk0NDkwLCA5NDQ5NSwgCi0gICAgOTQ1MDAsIDk0NTA1LCA5NDUxMCwgOTQ1MTUsIDk0NTIwLCA5NDUyNSwgOTQ1MzAsIDk0NTM1LCA5NDU0MCwgOTQ1NDUsIAotICAgIDk0NTUwLCA5NDU1NSwgOTQ1NTksIDk0NTYzLCA5NDU2NywgMCwgOTQ1NzIsIDk0NTc4LCA5NDU4MywgOTQ1ODgsIDk0NTkzLCAKLSAgICA5NDU5OCwgOTQ2MDQsIDk0NjEwLCA5NDYxNiwgOTQ2MjIsIDk0NjI4LCA5NDYzNCwgOTQ2NDAsIDk0NjQ2LCA5NDY1MiwgCi0gICAgOTQ2NTgsIDk0NjY0LCA5NDY3MCwgOTQ2NzYsIDk0NjgxLCA5NDY4NywgOTQ2OTMsIDk0Njk5LCA5NDcwNSwgOTQ3MTAsIAotICAgIDk0NzE2LCA5NDcyMiwgOTQ3MjcsIDk0NzMzLCA5NDczOSwgOTQ3NDUsIDk0NzUxLCA5NDc1NywgOTQ3NjMsIDk0NzY5LCAKLSAgICA5NDc3NSwgOTQ3ODEsIDAsIDAsIDAsIDAsIDk0Nzg2LCA5NDc5MiwgOTQ3OTgsIDk0ODA0LCA5NDgxMCwgOTQ4MTYsIAotICAgIDk0ODIyLCA5NDgyOCwgOTQ4MzQsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCA5NDg2MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQxMzQsIDk0MTM4LCA5NDE0MiwgOTQxNDcsIAorICAgIDk0MTUyLCA5NDE1NywgOTQxNjIsIDk0MTY2LCA5NDE3MSwgOTQxNzYsIDk0MTgxLCA5NDE4NiwgOTQxOTEsIDk0MTk2LCAKKyAgICA5NDIwMCwgOTQyMDUsIDk0MjEwLCA5NDIxNSwgOTQyMjAsIDk0MjI0LCA5NDIyOSwgOTQyMzQsIDk0MjM4LCA5NDI0MywgCisgICAgOTQyNDgsIDk0MjUzLCA5NDI1OCwgOTQyNjMsIDk0MjY4LCAwLCAwLCAwLCA5NDI3MywgOTQyNzcsIDk0MjgyLCA5NDI4NywgCisgICAgOTQyOTEsIDk0Mjk2LCA5NDMwMCwgOTQzMDUsIDk0MzEwLCA5NDMxNSwgOTQzMjAsIDk0MzI1LCA5NDMyOSwgOTQzMzQsIAorICAgIDk0MzM5LCA5NDM0NCwgOTQzNDksIDk0MzU0LCA5NDM1OSwgOTQzNjMsIDk0MzY4LCA5NDM3MywgOTQzNzgsIDk0MzgzLCAKKyAgICA5NDM4OCwgOTQzOTMsIDk0Mzk3LCA5NDQwMSwgOTQ0MDYsIDk0NDExLCA5NDQxNiwgOTQ0MjEsIDk0NDI2LCA5NDQzMSwgCisgICAgOTQ0MzYsIDk0NDQxLCA5NDQ0NiwgOTQ0NTEsIDk0NDU2LCA5NDQ2MSwgOTQ0NjYsIDk0NDcxLCA5NDQ3NiwgOTQ0ODEsIAorICAgIDk0NDg2LCA5NDQ5MSwgOTQ0OTYsIDk0NTAxLCA5NDUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQ1MTEsIDk0NTE3LCA5NDUyMiwgOTQ1MjcsIDk0NTMyLCA5NDUzNywgOTQ1NDIsIDk0NTQ3LCA5NDU1MywgCisgICAgOTQ1NTgsIDk0NTY0LCA5NDU3MCwgOTQ1NzYsIDk0NTgyLCA5NDU4OCwgOTQ1OTQsIDk0NjAwLCA5NDYwNiwgOTQ2MTIsIAorICAgIDk0NjE4LCA5NDYyNSwgOTQ2MzIsIDk0NjM5LCA5NDY0NywgOTQ2NTUsIDk0NjYzLCA5NDY3MSwgOTQ2NzksIDAsIDAsIDAsIAorICAgIDAsIDk0Njg3LCA5NDY5MSwgOTQ2OTYsIDk0NzAxLCA5NDcwNiwgOTQ3MTAsIDk0NzE1LCA5NDcyMCwgOTQ3MjUsIDk0NzMwLCAKKyAgICA5NDczNCwgOTQ3MzgsIDk0NzQzLCA5NDc0OCwgOTQ3NTMsIDk0NzU4LCA5NDc2MiwgOTQ3NjcsIDk0NzcyLCA5NDc3NywgCisgICAgOTQ3ODIsIDk0Nzg3LCA5NDc5MiwgOTQ3OTYsIDk0ODAxLCA5NDgwNiwgOTQ4MTEsIDk0ODE2LCA5NDgyMSwgOTQ4MjYsIAorICAgIDk0ODMxLCA5NDgzNiwgOTQ4NDEsIDk0ODQ2LCA5NDg1MSwgOTQ4NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk0ODYzLCA5NDg2OCwgOTQ4NzMsIDk0ODc4LCA5NDg4MywgOTQ4ODgsIDk0ODkzLCA5NDg5OCwgOTQ5MDMsIAorICAgIDk0OTA4LCA5NDkxMywgOTQ5MTgsIDk0OTIzLCA5NDkyOCwgOTQ5MzMsIDk0OTM4LCA5NDk0MywgOTQ5NDgsIDk0OTUzLCAKKyAgICA5NDk1OCwgOTQ5NjMsIDk0OTY4LCA5NDk3MywgOTQ5NzgsIDk0OTgzLCA5NDk4OCwgOTQ5OTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1MDAwLCA5NTAwNiwgOTUwMTIsIDk1MDE4LCA5NTAyNCwgOTUwMjksIDk1MDM1LCA5NTA0MSwgOTUwNDcsIDk1MDUzLCAKKyAgICA5NTA1OCwgOTUwNjQsIDk1MDcwLCA5NTA3NiwgOTUwODIsIDk1MDg4LCA5NTA5NCwgOTUxMDAsIDk1MTA2LCA5NTExMiwgCisgICAgOTUxMTcsIDk1MTIzLCA5NTEyOSwgOTUxMzUsIDk1MTQxLCA5NTE0NywgOTUxNTIsIDk1MTU4LCA5NTE2NCwgOTUxNjksIAorICAgIDk1MTc1LCA5NTE4MSwgOTUxODcsIDk1MTkzLCA5NTE5OSwgOTUyMDUsIDk1MjExLCA5NTIxNiwgOTUyMjIsIDk1MjI5LCAKKyAgICA5NTIzNiwgOTUyNDMsIDk1MjUwLCAwLCAwLCAwLCAwLCAwLCA5NTI1NywgOTUyNjIsIDk1MjY3LCA5NTI3MiwgOTUyNzcsIAorICAgIDk1MjgyLCA5NTI4NywgOTUyOTIsIDk1Mjk3LCA5NTMwMiwgOTUzMDcsIDk1MzEyLCA5NTMxNywgOTUzMjIsIDk1MzI3LCAKKyAgICA5NTMzMiwgOTUzMzcsIDk1MzQyLCA5NTM0NywgOTUzNTIsIDk1MzU3LCA5NTM2MiwgOTUzNjcsIDk1MzcyLCA5NTM3NywgCisgICAgOTUzODIsIDk1Mzg3LCA5NTM5MSwgOTUzOTUsIDk1Mzk5LCAwLCA5NTQwNCwgOTU0MTAsIDk1NDE1LCA5NTQyMCwgOTU0MjUsIAorICAgIDk1NDMwLCA5NTQzNiwgOTU0NDIsIDk1NDQ4LCA5NTQ1NCwgOTU0NjAsIDk1NDY2LCA5NTQ3MiwgOTU0NzgsIDk1NDg0LCAKKyAgICA5NTQ5MCwgOTU0OTYsIDk1NTAyLCA5NTUwOCwgOTU1MTMsIDk1NTE5LCA5NTUyNSwgOTU1MzAsIDk1NTM2LCA5NTU0MSwgCisgICAgOTU1NDcsIDk1NTUzLCA5NTU1OCwgOTU1NjQsIDk1NTcwLCA5NTU3NiwgOTU1ODIsIDk1NTg3LCA5NTU5MywgOTU1OTksIAorICAgIDk1NjA1LCA5NTYxMSwgMCwgMCwgMCwgMCwgOTU2MTYsIDk1NjIyLCA5NTYyOCwgOTU2MzQsIDk1NjQwLCA5NTY0NiwgCisgICAgOTU2NTIsIDk1NjU4LCA5NTY2NCwgOTU2NzEsIDk1Njc2LCA5NTY4MSwgOTU2ODcsIDk1NjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDg2OSwgOTQ4NzUsIDk0ODgxLCA5NDg4NywgOTQ4OTQsIAotICAgIDk0OTAwLCA5NDkwNywgOTQ5MTQsIDk0OTIxLCA5NDkyOCwgOTQ5MzYsIDk0OTQzLCA5NDk1MSwgOTQ5NTcsIDk0OTYzLCAKLSAgICA5NDk2OSwgOTQ5NzUsIDk0OTgxLCA5NDk4NywgOTQ5OTMsIDk0OTk5LCA5NTAwNSwgOTUwMTEsIDk1MDE3LCA5NTAyMywgCi0gICAgOTUwMjksIDk1MDM1LCA5NTA0MSwgOTUwNDcsIDk1MDUzLCA5NTA1OSwgOTUwNjUsIDk1MDcxLCA5NTA3NywgOTUwODMsIAotICAgIDk1MDg5LCA5NTA5NSwgOTUxMDEsIDk1MTA3LCA5NTExMywgOTUxMTksIDk1MTI1LCA5NTEzMSwgOTUxMzcsIDk1MTQ0LCAKLSAgICA5NTE1MCwgOTUxNTcsIDk1MTY0LCA5NTE3MSwgOTUxNzgsIDk1MTg2LCA5NTE5MywgOTUyMDEsIDk1MjA3LCA5NTIxMywgCi0gICAgOTUyMTksIDk1MjI1LCA5NTIzMSwgOTUyMzcsIDk1MjQzLCA5NTI0OSwgOTUyNTUsIDk1MjYxLCA5NTI2NywgOTUyNzMsIAotICAgIDk1Mjc5LCA5NTI4NSwgOTUyOTEsIDk1Mjk3LCA5NTMwMywgOTUzMDksIDk1MzE1LCA5NTMyMSwgOTUzMjcsIDk1MzMzLCAKLSAgICA5NTMzOSwgOTUzNDUsIDk1MzUxLCA5NTM1NywgOTUzNjMsIDk1MzY5LCA5NTM3NCwgOTUzNzksIDk1Mzg0LCA5NTM4OSwgCi0gICAgOTUzOTQsIDk1Mzk5LCA5NTQwNCwgOTU0MDksIDk1NDE0LCA5NTQxOSwgOTU0MjQsIDk1NDI5LCA5NTQzNCwgOTU0MzksIAotICAgIDk1NDQ0LCA5NTQ0OSwgOTU0NTQsIDk1NDU5LCA5NTQ2NCwgOTU0NjksIDk1NDc0LCA5NTQ3OSwgOTU0ODQsIDk1NDg5LCAKLSAgICA5NTQ5NCwgOTU0OTksIDk1NTA0LCA5NTUwOSwgOTU1MTQsIDk1NTE5LCA5NTUyNCwgOTU1MjksIDk1NTM0LCA5NTUzOSwgCi0gICAgOTU1NDQsIDk1NTQ5LCA5NTU1NCwgOTU1NTksIDk1NTY0LCA5NTU2OSwgOTU1NzQsIDk1NTc5LCA5NTU4NCwgOTU1ODksIAotICAgIDk1NTk0LCA5NTU5OSwgOTU2MDQsIDk1NjA5LCA5NTYxNCwgOTU2MTksIDk1NjI0LCA5NTYyOSwgOTU2MzQsIDk1NjM5LCAKLSAgICA5NTY0NCwgOTU2NDksIDk1NjU0LCA5NTY1OSwgOTU2NjQsIDk1NjY5LCA5NTY3NCwgOTU2NzksIDk1Njg0LCA5NTY4OSwgCi0gICAgOTU2OTQsIDk1Njk5LCA5NTcwNCwgOTU3MDksIDk1NzEzLCA5NTcxNywgOTU3MjEsIDk1NzI1LCA5NTcyOSwgOTU3MzMsIAotICAgIDk1NzM3LCA5NTc0MiwgOTU3NDcsIDAsIDAsIDk1NzUyLCA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIAotICAgIDk1Nzc3LCA5NTc4MSwgOTU3ODYsIDk1NzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTY5OSwgOTU3MDUsIDk1NzExLCA5NTcxNywgOTU3MjQsIAorICAgIDk1NzMwLCA5NTczNywgOTU3NDQsIDk1NzUxLCA5NTc1OCwgOTU3NjYsIDk1NzczLCA5NTc4MSwgOTU3ODcsIDk1NzkzLCAKKyAgICA5NTc5OSwgOTU4MDUsIDk1ODExLCA5NTgxNywgOTU4MjMsIDk1ODI5LCA5NTgzNSwgOTU4NDEsIDk1ODQ3LCA5NTg1MywgCisgICAgOTU4NTksIDk1ODY1LCA5NTg3MSwgOTU4NzcsIDk1ODgzLCA5NTg4OSwgOTU4OTUsIDk1OTAxLCA5NTkwNywgOTU5MTMsIAorICAgIDk1OTE5LCA5NTkyNSwgOTU5MzEsIDk1OTM3LCA5NTk0MywgOTU5NDksIDk1OTU1LCA5NTk2MSwgOTU5NjcsIDk1OTc0LCAKKyAgICA5NTk4MCwgOTU5ODcsIDk1OTk0LCA5NjAwMSwgOTYwMDgsIDk2MDE2LCA5NjAyMywgOTYwMzEsIDk2MDM3LCA5NjA0MywgCisgICAgOTYwNDksIDk2MDU1LCA5NjA2MSwgOTYwNjcsIDk2MDczLCA5NjA3OSwgOTYwODUsIDk2MDkxLCA5NjA5NywgOTYxMDMsIAorICAgIDk2MTA5LCA5NjExNSwgOTYxMjEsIDk2MTI3LCA5NjEzMywgOTYxMzksIDk2MTQ1LCA5NjE1MSwgOTYxNTcsIDk2MTYzLCAKKyAgICA5NjE2OSwgOTYxNzUsIDk2MTgxLCA5NjE4NywgOTYxOTMsIDk2MTk5LCA5NjIwNCwgOTYyMDksIDk2MjE0LCA5NjIxOSwgCisgICAgOTYyMjQsIDk2MjI5LCA5NjIzNCwgOTYyMzksIDk2MjQ0LCA5NjI0OSwgOTYyNTQsIDk2MjU5LCA5NjI2NCwgOTYyNjksIAorICAgIDk2Mjc0LCA5NjI3OSwgOTYyODQsIDk2Mjg5LCA5NjI5NCwgOTYyOTksIDk2MzA0LCA5NjMwOSwgOTYzMTQsIDk2MzE5LCAKKyAgICA5NjMyNCwgOTYzMjksIDk2MzM0LCA5NjMzOSwgOTYzNDQsIDk2MzQ5LCA5NjM1NCwgOTYzNTksIDk2MzY0LCA5NjM2OSwgCisgICAgOTYzNzQsIDk2Mzc5LCA5NjM4NCwgOTYzODksIDk2Mzk0LCA5NjM5OSwgOTY0MDQsIDk2NDA5LCA5NjQxNCwgOTY0MTksIAorICAgIDk2NDI0LCA5NjQyOSwgOTY0MzQsIDk2NDM5LCA5NjQ0NCwgOTY0NDksIDk2NDU0LCA5NjQ1OSwgOTY0NjQsIDk2NDY5LCAKKyAgICA5NjQ3NCwgOTY0NzksIDk2NDg0LCA5NjQ4OSwgOTY0OTQsIDk2NDk5LCA5NjUwNCwgOTY1MDksIDk2NTE0LCA5NjUxOSwgCisgICAgOTY1MjQsIDk2NTI5LCA5NjUzNCwgOTY1MzksIDk2NTQzLCA5NjU0NywgOTY1NTEsIDk2NTU1LCA5NjU1OSwgOTY1NjMsIAorICAgIDk2NTY3LCA5NjU3MiwgOTY1NzcsIDAsIDAsIDk2NTgyLCA5NjU4NywgOTY1OTEsIDk2NTk1LCA5NjU5OSwgOTY2MDMsIAorICAgIDk2NjA3LCA5NjYxMSwgOTY2MTYsIDk2NjIwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjYyNSwgOTY2MzAsIDk2NjM2LCA5NjY0MiwgCisgICAgOTY2NDgsIDk2NjU0LCA5NjY2MCwgOTY2NjYsIDk2NjcxLCA5NjY3NywgOTY2ODIsIDk2Njg4LCA5NjY5MywgOTY2OTgsIAorICAgIDk2NzA0LCA5NjcxMCwgOTY3MTUsIDk2NzIwLCA5NjcyNSwgOTY3MzAsIDk2NzM2LCA5Njc0MSwgOTY3NDcsIDk2NzUzLCAKKyAgICA5Njc1OSwgOTY3NjUsIDk2NzcxLCA5Njc3NywgOTY3ODMsIDk2Nzg5LCA5Njc5NSwgOTY4MDAsIDk2ODA2LCA5NjgxMiwgCisgICAgOTY4MTgsIDk2ODI0LCAwLCAwLCAwLCAwLCA5NjgzMCwgOTY4MzUsIDk2ODQxLCA5Njg0NywgOTY4NTMsIDk2ODU5LCAKKyAgICA5Njg2NSwgOTY4NzEsIDk2ODc2LCA5Njg4MiwgOTY4ODcsIDk2ODkzLCA5Njg5OCwgOTY5MDMsIDk2OTA5LCA5NjkxNSwgCisgICAgOTY5MjAsIDk2OTI1LCA5NjkzMCwgOTY5MzUsIDk2OTQxLCA5Njk0NiwgOTY5NTIsIDk2OTU4LCA5Njk2NCwgOTY5NzAsIAorICAgIDk2OTc2LCA5Njk4MiwgOTY5ODgsIDk2OTk0LCA5NzAwMCwgOTcwMDUsIDk3MDExLCA5NzAxNywgOTcwMjMsIDk3MDI5LCAwLCAKKyAgICAwLCAwLCAwLCA5NzAzNSwgOTcwMzksIDk3MDQ0LCA5NzA0OSwgOTcwNTQsIDk3MDU5LCA5NzA2NCwgOTcwNjksIDk3MDc0LCAKKyAgICA5NzA3OCwgOTcwODMsIDk3MDg4LCA5NzA5MywgOTcwOTgsIDk3MTAyLCA5NzEwNywgOTcxMTIsIDk3MTE3LCA5NzEyMiwgCisgICAgOTcxMjcsIDk3MTMyLCA5NzEzNiwgOTcxNDEsIDk3MTQ1LCA5NzE1MCwgOTcxNTUsIDk3MTYwLCA5NzE2NSwgOTcxNzAsIAorICAgIDk3MTc1LCA5NzE4MCwgOTcxODUsIDk3MTg5LCA5NzE5NCwgOTcxOTksIDk3MjA0LCA5NzIwOSwgOTcyMTQsIDk3MjE5LCAKKyAgICA5NzIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTcyMjksIDk3MjM2LCA5NzI0MywgOTcyNTAsIDk3MjU3LCA5NzI2NCwgCisgICAgOTcyNzEsIDk3Mjc4LCA5NzI4NSwgOTcyOTIsIDk3Mjk5LCA5NzMwNiwgOTczMTMsIDk3MzIwLCA5NzMyNywgOTczMzQsIAorICAgIDk3MzQxLCA5NzM0OCwgOTczNTUsIDk3MzYyLCA5NzM2OSwgOTczNzYsIDk3MzgzLCA5NzM5MCwgOTczOTcsIDk3NDA0LCAKKyAgICA5NzQxMSwgOTc0MTgsIDk3NDI1LCA5NzQzMiwgOTc0MzksIDk3NDQ2LCA5NzQ1MywgOTc0NjAsIDk3NDY3LCA5NzQ3NCwgCisgICAgOTc0ODEsIDk3NDg4LCA5NzQ5NSwgOTc1MDIsIDk3NTA5LCA5NzUxNiwgOTc1MjMsIDk3NTMwLCA5NzUzNywgOTc1NDQsIAorICAgIDk3NTUxLCA5NzU1OCwgOTc1NjUsIDk3NTcyLCA5NzU3OSwgOTc1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDk3NTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NTc5NSwgOTU3OTksIDk1ODA0LCA5NTgwOSwgOTU4MTQsIDk1ODE5LCA5NTgyNCwgOTU4MjksIDk1ODM0LCA5NTgzOCwgCi0gICAgOTU4NDMsIDk1ODQ4LCA5NTg1MywgOTU4NTgsIDk1ODYyLCA5NTg2NywgOTU4NzIsIDk1ODc3LCA5NTg4MiwgOTU4ODcsIAotICAgIDk1ODkyLCA5NTg5NywgOTU5MDIsIDk1OTA2LCA5NTkxMSwgOTU5MTYsIDk1OTIxLCA5NTkyNiwgOTU5MzEsIDk1OTM2LCAKLSAgICA5NTk0MSwgOTU5NDYsIDk1OTUwLCA5NTk1NSwgOTU5NjAsIDk1OTY1LCA5NTk3MCwgOTU5NzUsIDk1OTgwLCA5NTk4NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU5OTAsIDk1OTk3LCA5NjAwNCwgOTYwMTEsIDk2MDE4LCA5NjAyNSwgOTYwMzIsIAotICAgIDk2MDM5LCA5NjA0NiwgOTYwNTMsIDk2MDYwLCA5NjA2NywgOTYwNzQsIDk2MDgxLCA5NjA4OCwgOTYwOTUsIDk2MTAyLCAKLSAgICA5NjEwOSwgOTYxMTYsIDk2MTIzLCA5NjEzMCwgOTYxMzcsIDk2MTQ0LCA5NjE1MSwgOTYxNTgsIDk2MTY1LCA5NjE3MiwgCi0gICAgOTYxNzksIDk2MTg2LCA5NjE5MywgOTYyMDAsIDk2MjA3LCA5NjIxNCwgOTYyMjEsIDk2MjI4LCA5NjIzNSwgOTYyNDIsIAotICAgIDk2MjQ5LCA5NjI1NiwgOTYyNjMsIDk2MjcwLCA5NjI3NywgOTYyODQsIDk2MjkxLCA5NjI5OCwgOTYzMDUsIDk2MzEyLCAKLSAgICA5NjMxOSwgOTYzMjYsIDk2MzMzLCA5NjM0MCwgOTYzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk2MzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5NzYwMCwgOTc2MDUsIDk3NjEwLCA5NzYxNSwgOTc2MjAsIDk3NjI1LCA5NzYzMCwgOTc2MzUsIDk3NjQwLCAKKyAgICA5NzY0NSwgOTc2NTAsIDk3NjU1LCA5NzY2MCwgOTc2NjUsIDk3NjcwLCA5NzY3NSwgOTc2ODAsIDk3Njg1LCA5NzY5MCwgCisgICAgOTc2OTUsIDk3NzAwLCA5NzcwNSwgOTc3MTAsIDk3NzE1LCA5NzcyMCwgOTc3MjUsIDk3NzMwLCA5NzczNSwgOTc3NDAsIAorICAgIDk3NzQ1LCA5Nzc1MCwgOTc3NTUsIDk3NzYwLCA5Nzc2NSwgOTc3NzAsIDk3Nzc1LCA5Nzc4MCwgOTc3ODUsIDk3NzkwLCAKKyAgICA5Nzc5NSwgOTc4MDAsIDk3ODA1LCA5NzgxMCwgOTc4MTUsIDk3ODIwLCA5NzgyNSwgOTc4MzAsIDk3ODM1LCA5Nzg0MCwgCisgICAgOTc4NDUsIDk3ODUwLCA5Nzg1NSwgOTc4NjAsIDk3ODY1LCA5Nzg3MCwgOTc4NzUsIDk3ODgwLCA5Nzg4NSwgOTc4OTAsIAorICAgIDk3ODk1LCA5NzkwMCwgOTc5MDUsIDk3OTEwLCA5NzkxNSwgOTc5MjAsIDk3OTI1LCA5NzkzMCwgOTc5MzUsIDk3OTQwLCAKKyAgICA5Nzk0NSwgOTc5NTAsIDk3OTU1LCA5Nzk2MCwgOTc5NjUsIDk3OTcwLCA5Nzk3NSwgOTc5ODAsIDk3OTg1LCA5Nzk5MCwgCisgICAgOTc5OTUsIDk4MDAwLCA5ODAwNSwgOTgwMTAsIDk4MDE1LCA5ODAyMCwgOTgwMjUsIDk4MDMwLCA5ODAzNSwgOTgwNDAsIAorICAgIDk4MDQ1LCA5ODA1MCwgOTgwNTUsIDk4MDYwLCA5ODA2NSwgOTgwNzAsIDk4MDc1LCA5ODA4MCwgOTgwODUsIDk4MDkwLCAKKyAgICA5ODA5NSwgOTgxMDAsIDk4MTA1LCA5ODExMCwgOTgxMTUsIDk4MTIwLCA5ODEyNSwgOTgxMzAsIDk4MTM1LCA5ODE0MCwgCisgICAgOTgxNDUsIDk4MTUwLCA5ODE1NSwgOTgxNjAsIDk4MTY1LCA5ODE3MCwgOTgxNzUsIDk4MTgwLCA5ODE4NSwgOTgxOTAsIAorICAgIDk4MTk1LCA5ODIwMCwgOTgyMDUsIDk4MjEwLCA5ODIxNSwgOTgyMjAsIDk4MjI1LCA5ODIzMCwgOTgyMzUsIDk4MjQwLCAKKyAgICA5ODI0NSwgOTgyNTAsIDk4MjU1LCA5ODI2MCwgOTgyNjUsIDk4MjcwLCA5ODI3NSwgOTgyODAsIDk4Mjg1LCA5ODI5MCwgCisgICAgOTgyOTUsIDk4MzAwLCA5ODMwNSwgOTgzMTAsIDk4MzE1LCA5ODMyMCwgOTgzMjUsIDk4MzMwLCA5ODMzNSwgOTgzNDAsIAorICAgIDk4MzQ1LCA5ODM1MCwgOTgzNTUsIDk4MzYwLCA5ODM2NSwgOTgzNzAsIDk4Mzc1LCA5ODM4MCwgOTgzODUsIDk4MzkwLCAKKyAgICA5ODM5NSwgOTg0MDAsIDk4NDA1LCA5ODQxMCwgOTg0MTUsIDk4NDIwLCA5ODQyNSwgOTg0MzAsIDk4NDM1LCA5ODQ0MCwgCisgICAgOTg0NDUsIDk4NDUwLCA5ODQ1NSwgOTg0NjAsIDk4NDY1LCA5ODQ3MCwgOTg0NzUsIDk4NDgwLCA5ODQ4NSwgOTg0OTAsIAorICAgIDk4NDk1LCA5ODUwMCwgOTg1MDUsIDk4NTEwLCA5ODUxNSwgOTg1MjAsIDk4NTI1LCA5ODUzMCwgOTg1MzUsIDk4NTQwLCAKKyAgICA5ODU0NSwgOTg1NTAsIDk4NTU1LCA5ODU2MCwgOTg1NjUsIDk4NTcwLCA5ODU3NSwgOTg1ODAsIDk4NTg1LCA5ODU5MCwgCisgICAgOTg1OTUsIDk4NjAwLCA5ODYwNSwgOTg2MTAsIDk4NjE1LCA5ODYyMCwgOTg2MjUsIDk4NjMwLCA5ODYzNSwgOTg2NDAsIAorICAgIDk4NjQ1LCA5ODY1MCwgOTg2NTUsIDk4NjYwLCA5ODY2NSwgOTg2NzAsIDk4Njc1LCA5ODY4MCwgOTg2ODUsIDk4NjkwLCAKKyAgICA5ODY5NSwgOTg3MDAsIDk4NzA1LCA5ODcxMCwgOTg3MTUsIDk4NzIwLCA5ODcyNSwgOTg3MzAsIDk4NzM1LCA5ODc0MCwgCisgICAgOTg3NDUsIDk4NzUwLCA5ODc1NSwgOTg3NjAsIDk4NzY1LCA5ODc3MCwgOTg3NzUsIDk4NzgwLCA5ODc4NSwgOTg3OTAsIAorICAgIDk4Nzk1LCA5ODgwMCwgOTg4MDUsIDk4ODEwLCA5ODgxNSwgOTg4MjAsIDk4ODI1LCA5ODgzMCwgOTg4MzUsIDk4ODQwLCAKKyAgICA5ODg0NSwgOTg4NTAsIDk4ODU1LCA5ODg2MCwgOTg4NjUsIDk4ODcwLCA5ODg3NSwgOTg4ODAsIDk4ODg1LCA5ODg5MCwgCisgICAgOTg4OTUsIDk4OTAwLCA5ODkwNSwgOTg5MTAsIDk4OTE1LCA5ODkyMCwgOTg5MjUsIDk4OTMwLCA5ODkzNSwgOTg5NDAsIAorICAgIDk4OTQ1LCA5ODk1MCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCAKKyAgICA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgCisgICAgOTkwNDUsIDk5MDUwLCA5OTA1NSwgOTkwNjAsIDk5MDY1LCA5OTA3MCwgOTkwNzUsIDk5MDgwLCA5OTA4NSwgOTkwOTAsIAorICAgIDk5MDk1LCA5OTEwMCwgOTkxMDUsIDk5MTEwLCA5OTExNSwgOTkxMjAsIDk5MTI1LCA5OTEzMCwgOTkxMzUsIDk5MTQwLCAKKyAgICA5OTE0NSwgOTkxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MTU1LCA5OTE2MSwgOTkxNjgsIDk5MTc1LCAKKyAgICA5OTE4MSwgOTkxODgsIDk5MTk1LCA5OTIwMiwgOTkyMDksIDk5MjE1LCA5OTIyMiwgOTkyMjksIDk5MjM2LCA5OTI0MywgCisgICAgOTkyNTAsIDk5MjU3LCA5OTI2NCwgOTkyNzEsIDk5Mjc4LCA5OTI4NSwgOTkyOTIsIDk5Mjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5OTMwNiwgOTkzMTEsIDk5MzE2LCA5OTMyMSwgOTkzMjYsIDk5MzMxLCA5OTMzNiwgOTkzNDEsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk2MzYxLCA5NjM2NiwgOTYzNzEsIDk2Mzc2LCA5NjM4MSwgOTYzODYsIDk2MzkxLCA5NjM5NiwgOTY0MDEsIAotICAgIDk2NDA2LCA5NjQxMSwgOTY0MTYsIDk2NDIxLCA5NjQyNiwgOTY0MzEsIDk2NDM2LCA5NjQ0MSwgOTY0NDYsIDk2NDUxLCAKLSAgICA5NjQ1NiwgOTY0NjEsIDk2NDY2LCA5NjQ3MSwgOTY0NzYsIDk2NDgxLCA5NjQ4NiwgOTY0OTEsIDk2NDk2LCA5NjUwMSwgCi0gICAgOTY1MDYsIDk2NTExLCA5NjUxNiwgOTY1MjEsIDk2NTI2LCA5NjUzMSwgOTY1MzYsIDk2NTQxLCA5NjU0NiwgOTY1NTEsIAotICAgIDk2NTU2LCA5NjU2MSwgOTY1NjYsIDk2NTcxLCA5NjU3NiwgOTY1ODEsIDk2NTg2LCA5NjU5MSwgOTY1OTYsIDk2NjAxLCAKLSAgICA5NjYwNiwgOTY2MTEsIDk2NjE2LCA5NjYyMSwgOTY2MjYsIDk2NjMxLCA5NjYzNiwgOTY2NDEsIDk2NjQ2LCA5NjY1MSwgCi0gICAgOTY2NTYsIDk2NjYxLCA5NjY2NiwgOTY2NzEsIDk2Njc2LCA5NjY4MSwgOTY2ODYsIDk2NjkxLCA5NjY5NiwgOTY3MDEsIAotICAgIDk2NzA2LCA5NjcxMSwgOTY3MTYsIDk2NzIxLCA5NjcyNiwgOTY3MzEsIDk2NzM2LCA5Njc0MSwgOTY3NDYsIDk2NzUxLCAKLSAgICA5Njc1NiwgOTY3NjEsIDk2NzY2LCA5Njc3MSwgOTY3NzYsIDk2NzgxLCA5Njc4NiwgOTY3OTEsIDk2Nzk2LCA5NjgwMSwgCi0gICAgOTY4MDYsIDk2ODExLCA5NjgxNiwgOTY4MjEsIDk2ODI2LCA5NjgzMSwgOTY4MzYsIDk2ODQxLCA5Njg0NiwgOTY4NTEsIAotICAgIDk2ODU2LCA5Njg2MSwgOTY4NjYsIDk2ODcxLCA5Njg3NiwgOTY4ODEsIDk2ODg2LCA5Njg5MSwgOTY4OTYsIDk2OTAxLCAKLSAgICA5NjkwNiwgOTY5MTEsIDk2OTE2LCA5NjkyMSwgOTY5MjYsIDk2OTMxLCA5NjkzNiwgOTY5NDEsIDk2OTQ2LCA5Njk1MSwgCi0gICAgOTY5NTYsIDk2OTYxLCA5Njk2NiwgOTY5NzEsIDk2OTc2LCA5Njk4MSwgOTY5ODYsIDk2OTkxLCA5Njk5NiwgOTcwMDEsIAotICAgIDk3MDA2LCA5NzAxMSwgOTcwMTYsIDk3MDIxLCA5NzAyNiwgOTcwMzEsIDk3MDM2LCA5NzA0MSwgOTcwNDYsIDk3MDUxLCAKLSAgICA5NzA1NiwgOTcwNjEsIDk3MDY2LCA5NzA3MSwgOTcwNzYsIDk3MDgxLCA5NzA4NiwgOTcwOTEsIDk3MDk2LCA5NzEwMSwgCi0gICAgOTcxMDYsIDk3MTExLCA5NzExNiwgOTcxMjEsIDk3MTI2LCA5NzEzMSwgOTcxMzYsIDk3MTQxLCA5NzE0NiwgOTcxNTEsIAotICAgIDk3MTU2LCA5NzE2MSwgOTcxNjYsIDk3MTcxLCA5NzE3NiwgOTcxODEsIDk3MTg2LCA5NzE5MSwgOTcxOTYsIDk3MjAxLCAKLSAgICA5NzIwNiwgOTcyMTEsIDk3MjE2LCA5NzIyMSwgOTcyMjYsIDk3MjMxLCA5NzIzNiwgOTcyNDEsIDk3MjQ2LCA5NzI1MSwgCi0gICAgOTcyNTYsIDk3MjYxLCA5NzI2NiwgOTcyNzEsIDk3Mjc2LCA5NzI4MSwgOTcyODYsIDk3MjkxLCA5NzI5NiwgOTczMDEsIAotICAgIDk3MzA2LCA5NzMxMSwgOTczMTYsIDk3MzIxLCA5NzMyNiwgOTczMzEsIDk3MzM2LCA5NzM0MSwgOTczNDYsIDk3MzUxLCAKLSAgICA5NzM1NiwgOTczNjEsIDk3MzY2LCA5NzM3MSwgOTczNzYsIDk3MzgxLCA5NzM4NiwgOTczOTEsIDk3Mzk2LCA5NzQwMSwgCi0gICAgOTc0MDYsIDk3NDExLCA5NzQxNiwgOTc0MjEsIDk3NDI2LCA5NzQzMSwgOTc0MzYsIDk3NDQxLCA5NzQ0NiwgOTc0NTEsIAotICAgIDk3NDU2LCA5NzQ2MSwgOTc0NjYsIDk3NDcxLCA5NzQ3NiwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTAxLCAKLSAgICA5NzUwNiwgOTc1MTEsIDk3NTE2LCA5NzUyMSwgOTc1MjYsIDk3NTMxLCA5NzUzNiwgOTc1NDEsIDk3NTQ2LCA5NzU1MSwgCi0gICAgOTc1NTYsIDk3NTYxLCA5NzU2NiwgOTc1NzEsIDk3NTc2LCA5NzU4MSwgOTc1ODYsIDk3NTkxLCA5NzU5NiwgOTc2MDEsIAotICAgIDk3NjA2LCA5NzYxMSwgOTc2MTYsIDk3NjIxLCA5NzYyNiwgOTc2MzEsIDk3NjM2LCA5NzY0MSwgOTc2NDYsIDk3NjUxLCAKLSAgICA5NzY1NiwgOTc2NjEsIDk3NjY2LCA5NzY3MSwgOTc2NzYsIDk3NjgxLCA5NzY4NiwgOTc2OTEsIDk3Njk2LCA5NzcwMSwgCi0gICAgOTc3MDYsIDk3NzExLCA5NzcxNiwgOTc3MjEsIDk3NzI2LCA5NzczMSwgOTc3MzYsIDk3NzQxLCA5Nzc0NiwgOTc3NTEsIAotICAgIDk3NzU2LCA5Nzc2MSwgOTc3NjYsIDk3NzcxLCA5Nzc3NiwgOTc3ODEsIDk3Nzg2LCA5Nzc5MSwgOTc3OTYsIDk3ODAxLCAKLSAgICA5NzgwNiwgOTc4MTEsIDk3ODE2LCA5NzgyMSwgOTc4MjYsIDk3ODMxLCA5NzgzNiwgOTc4NDEsIDk3ODQ2LCA5Nzg1MSwgCi0gICAgOTc4NTYsIDk3ODYxLCA5Nzg2NiwgOTc4NzEsIDk3ODc2LCA5Nzg4MSwgOTc4ODYsIDk3ODkxLCA5Nzg5NiwgOTc5MDEsIAotICAgIDk3OTA2LCA5NzkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTc5MTYsIDk3OTIyLCA5NzkyOSwgOTc5MzYsIAotICAgIDk3OTQyLCA5Nzk0OSwgOTc5NTYsIDk3OTYzLCA5Nzk3MCwgOTc5NzYsIDk3OTgzLCA5Nzk5MCwgOTc5OTcsIDk4MDA0LCAKLSAgICA5ODAxMSwgOTgwMTgsIDk4MDI1LCA5ODAzMiwgOTgwMzksIDk4MDQ2LCA5ODA1MywgOTgwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk4MDY3LCA5ODA3MiwgOTgwNzcsIDk4MDgyLCA5ODA4NywgOTgwOTIsIDk4MDk3LCA5ODEwMiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTkzNDYsIDk5MzUwLCA5OTM1NCwgOTkzNTgsIDk5MzYyLCA5OTM2NiwgMCwgMCwgOTkzNzEsIAorICAgIDAsIDk5Mzc2LCA5OTM4MCwgOTkzODUsIDk5MzkwLCA5OTM5NSwgOTk0MDAsIDk5NDA0LCA5OTQwOSwgOTk0MTQsIDk5NDE5LCAKKyAgICA5OTQyNCwgOTk0MjgsIDk5NDMzLCA5OTQzOCwgOTk0NDMsIDk5NDQ4LCA5OTQ1MiwgOTk0NTcsIDk5NDYyLCA5OTQ2NywgCisgICAgOTk0NzIsIDk5NDc2LCA5OTQ4MSwgOTk0ODYsIDk5NDkxLCA5OTQ5NiwgOTk1MDEsIDk5NTA2LCA5OTUxMSwgOTk1MTYsIAorICAgIDk5NTIxLCA5OTUyNiwgOTk1MzEsIDk5NTM2LCA5OTU0MSwgOTk1NDYsIDk5NTUxLCA5OTU1NiwgOTk1NjEsIDk5NTY1LCAKKyAgICA5OTU3MCwgOTk1NzUsIDk5NTgwLCA5OTU4NSwgMCwgOTk1OTAsIDk5NTk1LCAwLCAwLCAwLCA5OTYwMCwgMCwgMCwgOTk2MDUsIAorICAgIDk5NjEwLCA5OTYxNywgOTk2MjQsIDk5NjMxLCA5OTYzOCwgOTk2NDUsIDk5NjUyLCA5OTY1OSwgOTk2NjYsIDk5NjczLCAKKyAgICA5OTY4MCwgOTk2ODcsIDk5Njk0LCA5OTcwMSwgOTk3MDgsIDk5NzE1LCA5OTcyMiwgOTk3MjksIDk5NzM2LCA5OTc0MywgCisgICAgOTk3NTAsIDk5NzU3LCAwLCA5OTc2NCwgOTk3NzEsIDk5Nzc3LCA5OTc4MywgOTk3ODksIDk5Nzk2LCA5OTgwMywgOTk4MTEsIAorICAgIDk5ODE5LCA5OTgyOCwgOTk4MzMsIDk5ODM4LCA5OTg0MywgOTk4NDgsIDk5ODUzLCA5OTg1OCwgOTk4NjMsIDk5ODY4LCAKKyAgICA5OTg3MywgOTk4NzgsIDk5ODgzLCA5OTg4OCwgOTk4OTMsIDk5ODk5LCA5OTkwNCwgOTk5MDksIDk5OTE0LCA5OTkxOSwgCisgICAgOTk5MjQsIDk5OTI5LCA5OTkzNCwgOTk5MzksIDk5OTQ0LCA5OTk1MCwgOTk5NTYsIDk5OTYwLCA5OTk2NCwgOTk5NjgsIAorICAgIDk5OTcyLCA5OTk3NiwgOTk5ODEsIDk5OTg2LCA5OTk5MiwgOTk5OTcsIDEwMDAwMywgMTAwMDA4LCAxMDAwMTMsIDEwMDAxOCwgCisgICAgMTAwMDI0LCAxMDAwMjksIDEwMDAzNCwgMTAwMDM5LCAxMDAwNDQsIDEwMDA0OSwgMTAwMDU1LCAxMDAwNjAsIDEwMDA2NiwgCisgICAgMTAwMDcxLCAxMDAwNzcsIDEwMDA4MiwgMTAwMDg4LCAxMDAwOTMsIDEwMDA5OSwgMTAwMTA0LCAxMDAxMDksIDEwMDExNCwgCisgICAgMTAwMTE5LCAxMDAxMjQsIDEwMDEyOSwgMTAwMTM0LCAxMDAxNDAsIDEwMDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAwMTUwLCAxMDAxNTQsIDEwMDE1OCwgMTAwMTYyLCAxMDAxNjYsIDEwMDE3MiwgMTAwMTc2LCAxMDAxODEsIDEwMDE4NiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOTgxMDcsIDk4MTExLCA5ODExNSwgOTgxMTksIDk4MTIzLCA5ODEyNywgMCwgMCwgOTgxMzIsIAotICAgIDAsIDk4MTM3LCA5ODE0MSwgOTgxNDYsIDk4MTUxLCA5ODE1NiwgOTgxNjEsIDk4MTY2LCA5ODE3MSwgOTgxNzYsIDk4MTgxLCAKLSAgICA5ODE4NiwgOTgxOTAsIDk4MTk1LCA5ODIwMCwgOTgyMDUsIDk4MjEwLCA5ODIxNSwgOTgyMjAsIDk4MjI1LCA5ODIzMCwgCi0gICAgOTgyMzUsIDk4MjM5LCA5ODI0NCwgOTgyNDksIDk4MjU0LCA5ODI1OSwgOTgyNjQsIDk4MjY5LCA5ODI3NCwgOTgyNzksIAotICAgIDk4Mjg0LCA5ODI4OSwgOTgyOTQsIDk4Mjk5LCA5ODMwNCwgOTgzMDksIDk4MzE0LCA5ODMxOSwgOTgzMjQsIDk4MzI4LCAKLSAgICA5ODMzMywgOTgzMzgsIDk4MzQzLCA5ODM0OCwgMCwgOTgzNTMsIDk4MzU4LCAwLCAwLCAwLCA5ODM2MywgMCwgMCwgOTgzNjgsIAotICAgIDk4MzczLCA5ODM4MCwgOTgzODcsIDk4Mzk0LCA5ODQwMSwgOTg0MDgsIDk4NDE1LCA5ODQyMiwgOTg0MjksIDk4NDM2LCAKLSAgICA5ODQ0MywgOTg0NTAsIDk4NDU3LCA5ODQ2NCwgOTg0NzEsIDk4NDc4LCA5ODQ4NSwgOTg0OTIsIDk4NDk5LCA5ODUwNiwgCi0gICAgOTg1MTMsIDk4NTIwLCAwLCA5ODUyNywgOTg1MzQsIDk4NTQwLCA5ODU0NiwgOTg1NTIsIDk4NTU5LCA5ODU2NiwgOTg1NzQsIAotICAgIDk4NTgyLCA5ODU5MSwgOTg1OTYsIDk4NjAxLCA5ODYwNiwgOTg2MTEsIDk4NjE2LCA5ODYyMSwgOTg2MjYsIDk4NjMxLCAKLSAgICA5ODYzNiwgOTg2NDEsIDk4NjQ2LCA5ODY1MSwgOTg2NTYsIDk4NjYyLCA5ODY2NywgOTg2NzIsIDk4Njc3LCA5ODY4MiwgCi0gICAgOTg2ODcsIDk4NjkyLCA5ODY5NywgOTg3MDIsIDk4NzA3LCA5ODcxMywgOTg3MTksIDk4NzIzLCA5ODcyNywgOTg3MzEsIAotICAgIDk4NzM1LCA5ODczOSwgOTg3NDQsIDk4NzQ5LCA5ODc1NSwgOTg3NjAsIDk4NzY2LCA5ODc3MSwgOTg3NzYsIDk4NzgxLCAKLSAgICA5ODc4NywgOTg3OTIsIDk4Nzk3LCA5ODgwMiwgOTg4MDcsIDk4ODEyLCA5ODgxOCwgOTg4MjMsIDk4ODI5LCA5ODgzNCwgCi0gICAgOTg4NDAsIDk4ODQ1LCA5ODg1MSwgOTg4NTYsIDk4ODYyLCA5ODg2NywgOTg4NzIsIDk4ODc3LCA5ODg4MiwgOTg4ODcsIAotICAgIDk4ODkyLCA5ODg5NywgOTg5MDMsIDk4OTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5ODkxMywgOTg5MTcsIDk4OTIxLCAKLSAgICA5ODkyNSwgOTg5MjksIDk4OTM1LCA5ODkzOSwgOTg5NDQsIDk4OTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5ODk1NSwgOTg5NjAsIDk4OTY1LCA5ODk3MCwgCi0gICAgOTg5NzUsIDk4OTgwLCA5ODk4NSwgOTg5OTAsIDk4OTk1LCA5OTAwMCwgOTkwMDUsIDk5MDEwLCA5OTAxNSwgOTkwMjAsIAotICAgIDk5MDI1LCA5OTAzMCwgOTkwMzUsIDk5MDQwLCA5OTA0NSwgMCwgOTkwNTAsIDk5MDU1LCAwLCAwLCAwLCAwLCAwLCA5OTA2MCwgCi0gICAgOTkwNjQsIDk5MDY4LCA5OTA3MywgOTkwNzgsIDk5MDg0LCA5OTA4OSwgOTkwOTQsIDk5MDk5LCA5OTEwNCwgOTkxMDksIAotICAgIDk5MTE0LCA5OTExOSwgOTkxMjQsIDk5MTI5LCA5OTEzNCwgOTkxMzksIDk5MTQ0LCA5OTE0OSwgOTkxNTQsIDk5MTU5LCAKLSAgICA5OTE2NCwgOTkxNjksIDk5MTc0LCA5OTE3OSwgOTkxODQsIDk5MTg5LCA5OTE5NCwgOTkxOTgsIDk5MjAzLCA5OTIwOCwgCi0gICAgOTkyMTQsIDk5MjE4LCAwLCAwLCAwLCA5OTIyMiwgOTkyMjgsIDk5MjMyLCA5OTIzNywgOTkyNDIsIDk5MjQ3LCA5OTI1MSwgCi0gICAgOTkyNTYsIDk5MjYwLCA5OTI2NSwgOTkyNzAsIDk5Mjc0LCA5OTI3OSwgOTkyODQsIDk5Mjg4LCA5OTI5MiwgOTkyOTcsIAotICAgIDk5MzAyLCA5OTMwNiwgOTkzMTEsIDk5MzE2LCA5OTMyMCwgOTkzMjUsIDk5MzMwLCA5OTMzNSwgOTkzNDAsIDk5MzQ1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5OTM1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkzNTUsIAotICAgIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgOTkzODYsIDk5MzkyLCA5OTM5OCwgOTk0MDMsIDk5NDA4LCAKLSAgICA5OTQxNCwgOTk0MjAsIDk5NDI2LCA5OTQzMiwgOTk0MzgsIDk5NDQ0LCA5OTQ1MCwgOTk0NTYsIDk5NDYyLCA5OTQ2OCwgCi0gICAgOTk0NzQsIDk5NDgwLCA5OTQ4NSwgOTk0OTEsIDk5NDk3LCA5OTUwMywgOTk1MDksIDk5NTE1LCA5OTUyMCwgOTk1MjYsIAotICAgIDk5NTMyLCA5OTUzOCwgOTk1NDIsIDk5NTQ2LCA5OTU1MCwgOTk1NTQsIDk5NTU4LCA5OTU2MywgOTk1NjgsIDk5NTcyLCAKLSAgICA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE4LCA5OTYyMywgCi0gICAgOTk2MjcsIDk5NjMyLCA5OTYzNywgOTk2NDIsIDk5NjQ2LCAwLCAwLCAwLCAwLCA5OTY1MSwgOTk2NTksIDk5NjY2LCAKLSAgICA5OTY3MiwgOTk2NzgsIDk5NjgyLCA5OTY4NiwgOTk2OTAsIDk5Njk0LCA5OTY5OCwgOTk3MDIsIDk5NzA3LCA5OTcxMSwgCi0gICAgOTk3MTYsIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDAsIDAsIDk5NzUxLCA5OTc1NywgCi0gICAgOTk3NjMsIDk5NzY5LCA5OTc3NiwgOTk3ODMsIDk5NzkwLCA5OTc5NywgOTk4MDQsIDk5ODExLCA5OTgxNywgOTk4MjMsIAotICAgIDk5ODI5LCA5OTgzNiwgOTk4NDMsIDk5ODUwLCA5OTg1NywgOTk4NjQsIDk5ODcxLCA5OTg3OCwgOTk4ODUsIDk5ODkyLCAKLSAgICA5OTg5OSwgOTk5MDYsIDk5OTEzLCA5OTkyMCwgOTk5MjcsIDk5OTM0LCA5OTk0MiwgOTk5NTAsIDk5OTU4LCA5OTk2NywgCi0gICAgOTk5NzYsIDk5OTg1LCA5OTk5NCwgMTAwMDAzLCAxMDAwMTIsIDEwMDAxOSwgMTAwMDI2LCAxMDAwMzMsIDEwMDA0MSwgCi0gICAgMTAwMDQ5LCAxMDAwNTcsIDEwMDA2NSwgMTAwMDczLCAxMDAwODEsIDEwMDA4OSwgMTAwMDkzLCAxMDAwOTgsIDEwMDEwMywgCi0gICAgMCwgMTAwMTA5LCAxMDAxMTQsIDAsIDAsIDAsIDAsIDAsIDEwMDExOSwgMTAwMTI1LCAxMDAxMzIsIDEwMDEzNywgMTAwMTQyLCAKLSAgICAxMDAxNDYsIDEwMDE1MSwgMTAwMTU2LCAwLCAxMDAxNjEsIDEwMDE2NiwgMTAwMTcxLCAwLCAxMDAxNzYsIDEwMDE4MSwgCi0gICAgMTAwMTg2LCAxMDAxOTEsIDEwMDE5NiwgMTAwMjAxLCAxMDAyMDYsIDEwMDIxMSwgMTAwMjE2LCAxMDAyMjEsIDEwMDIyNiwgCi0gICAgMTAwMjMxLCAxMDAyMzUsIDEwMDI0MCwgMTAwMjQ1LCAxMDAyNTAsIDEwMDI1NCwgMTAwMjU4LCAxMDAyNjMsIDEwMDI2OCwgCi0gICAgMTAwMjczLCAxMDAyNzgsIDEwMDI4MywgMTAwMjg4LCAxMDAyOTMsIDEwMDI5NywgMTAwMzAyLCAwLCAwLCAwLCAwLCAKLSAgICAxMDAzMDcsIDEwMDMxMywgMTAwMzE4LCAwLCAwLCAwLCAwLCAxMDAzMjMsIDEwMDMyNywgMTAwMzMxLCAxMDAzMzUsIAotICAgIDEwMDMzOSwgMTAwMzQzLCAxMDAzNDgsIDEwMDM1MywgMTAwMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAzNjUsIAotICAgIDEwMDM3MSwgMTAwMzc4LCAxMDAzODQsIDEwMDM5MSwgMTAwMzk3LCAxMDA0MDMsIDEwMDQwOSwgMTAwNDE2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDA0MjIsIDEwMDQzMCwgMTAwNDM4LCAxMDA0NDYsIDEwMDQ1NCwgMTAwNDYyLCAxMDA0NzAsIAotICAgIDEwMDQ3OCwgMTAwNDg2LCAxMDA0OTQsIDEwMDUwMiwgMTAwNTEwLCAxMDA1MTgsIDEwMDUyNiwgMTAwNTM0LCAxMDA1NDIsIAotICAgIDEwMDU1MCwgMTAwNTU4LCAxMDA1NjYsIDEwMDU3NCwgMTAwNTgyLCAxMDA1OTAsIDEwMDU5OCwgMTAwNjA2LCAxMDA2MTQsIAotICAgIDEwMDYyMiwgMTAwNjMwLCAxMDA2MzgsIDEwMDY0NiwgMTAwNjU0LCAxMDA2NjEsIDEwMDY2OSwgMTAwNjc3LCAxMDA2ODQsIAotICAgIDEwMDY5MSwgMTAwNjk4LCAxMDA3MDUsIDEwMDcxMiwgMTAwNzE5LCAxMDA3MjYsIDEwMDczMywgMTAwNzQwLCAxMDA3NDcsIAotICAgIDEwMDc1NCwgMTAwNzYxLCAxMDA3NjgsIDEwMDc3NSwgMTAwNzgyLCAxMDA3ODksIDEwMDc5NiwgMTAwODAzLCAxMDA4MTAsIAotICAgIDEwMDgxNywgMTAwODI0LCAxMDA4MzEsIDEwMDgzOCwgMTAwODQ1LCAxMDA4NTIsIDEwMDg1OSwgMTAwODY2LCAxMDA4NzMsIAotICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDkwMCwgMTAwOTA1LCAxMDA5MTAsIAotICAgIDEwMDkxNSwgMTAwOTIwLCAxMDA5MjUsIDEwMDkzMCwgMTAwOTM1LCAxMDA5NDAsIDEwMDk0NSwgMTAwOTUwLCAxMDA5NTUsIAotICAgIDEwMDk2MCwgMTAwOTY1LCAxMDA5NzAsIDEwMDk3NSwgMTAwOTgwLCAxMDA5ODUsIDEwMDk5MCwgMTAwOTk1LCAxMDEwMDAsIAotICAgIDEwMTAwNSwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzAsIDEwMTAzNSwgMTAxMDQwLCAxMDEwNDUsIAotICAgIDEwMTA1MCwgMTAxMDU1LCAxMDEwNjAsIDEwMTA2NSwgMTAxMDcwLCAxMDEwNzUsIDEwMTA4MCwgMTAxMDg1LCAxMDEwOTEsIAotICAgIDAsIDAsIDAsIDAsIDEwMTA5NywgMTAxMTAxLCAxMDExMDUsIDEwMTExMCwgMTAxMTE1LCAxMDExMjEsIDEwMTEyNywgCi0gICAgMTAxMTMzLCAxMDExNDMsIDEwMTE1MiwgMTAxMTU4LCAxMDExNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMTE3MywgMTAxMTc3LCAxMDExODIsIDEwMTE4NywgMTAxMTkyLCAxMDExOTcsIDEwMTIwMiwgMTAxMjA3LCAxMDEyMTIsIAotICAgIDEwMTIxNiwgMTAxMjIxLCAxMDEyMjUsIDEwMTIzMCwgMTAxMjM0LCAxMDEyMzksIDEwMTI0MywgMTAxMjQ4LCAxMDEyNTMsIAotICAgIDEwMTI1OCwgMTAxMjYzLCAxMDEyNjgsIDEwMTI3MywgMTAxMjc4LCAxMDEyODMsIDEwMTI4OCwgMTAxMjkzLCAxMDEyOTgsIAotICAgIDEwMTMwMywgMTAxMzA4LCAxMDEzMTMsIDEwMTMxOCwgMTAxMzIzLCAxMDEzMjgsIDEwMTMzMywgMTAxMzM4LCAxMDEzNDMsIAotICAgIDEwMTM0OCwgMTAxMzUzLCAxMDEzNTgsIDEwMTM2MywgMTAxMzY4LCAxMDEzNzMsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIAotICAgIDEwMTM5MywgMTAxMzk4LCAxMDE0MDMsIDEwMTQwOCwgMTAxNDEzLCAxMDE0MTgsIDEwMTQyMywgMTAxNDI4LCAxMDE0MzMsIAotICAgIDAsIDAsIDAsIDEwMTQzOCwgMTAxNDQzLCAxMDE0NTIsIDEwMTQ2MCwgMTAxNDY5LCAxMDE0NzgsIDEwMTQ4OSwgMTAxNTAwLCAKLSAgICAxMDE1MDcsIDEwMTUxNCwgMTAxNTIxLCAxMDE1MjgsIDEwMTUzNSwgMTAxNTQyLCAxMDE1NDksIDEwMTU1NiwgMTAxNTYzLCAKLSAgICAxMDE1NzAsIDEwMTU3NywgMTAxNTg0LCAxMDE1OTEsIDEwMTU5OCwgMTAxNjA1LCAxMDE2MTIsIDEwMTYxOSwgMTAxNjI2LCAKLSAgICAxMDE2MzMsIDEwMTY0MCwgMTAxNjQ3LCAwLCAwLCAxMDE2NTQsIDEwMTY2MCwgMTAxNjY2LCAxMDE2NzIsIDEwMTY3OCwgCi0gICAgMTAxNjg1LCAxMDE2OTIsIDEwMTcwMCwgMTAxNzA4LCAxMDE3MTUsIDEwMTcyMiwgMTAxNzI5LCAxMDE3MzYsIDEwMTc0MywgCi0gICAgMTAxNzUwLCAxMDE3NTcsIDEwMTc2NCwgMTAxNzcxLCAxMDE3NzgsIDEwMTc4NSwgMTAxNzkyLCAxMDE3OTksIDEwMTgwNiwgCi0gICAgMTAxODEzLCAxMDE4MjAsIDEwMTgyNywgMTAxODM0LCAwLCAwLCAwLCAwLCAwLCAxMDE4NDEsIDEwMTg0NywgMTAxODUzLCAKLSAgICAxMDE4NTksIDEwMTg2NSwgMTAxODcyLCAxMDE4NzksIDEwMTg4NywgMTAxODk1LCAxMDE5MDIsIDEwMTkwOSwgMTAxOTE2LCAKLSAgICAxMDE5MjMsIDEwMTkzMCwgMTAxOTM3LCAxMDE5NDQsIDEwMTk1MSwgMTAxOTU4LCAxMDE5NjUsIDEwMTk3MiwgMTAxOTc5LCAKLSAgICAxMDE5ODYsIDEwMTk5MywgMTAyMDAwLCAxMDIwMDcsIDEwMjAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDIxLCAKLSAgICAxMDIwMjgsIDEwMjAzNywgMTAyMDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwNTcsIAotICAgIDEwMjA2MywgMTAyMDY5LCAxMDIwNzUsIDEwMjA4MSwgMTAyMDg4LCAxMDIwOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMjEwMywgMTAyMTEwLCAxMDIxMTcsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjEsIAotICAgIDEwMjE2OSwgMTAyMTc3LCAxMDIxODUsIDEwMjE5MywgMTAyMjAxLCAxMDIyMDksIDEwMjIxNywgMTAyMjI1LCAxMDIyMzMsIAotICAgIDEwMjI0MSwgMTAyMjQ5LCAxMDIyNTcsIDEwMjI2NSwgMTAyMjczLCAxMDIyODEsIDEwMjI4OSwgMTAyMjk3LCAxMDIzMDUsIAotICAgIDEwMjMxMywgMTAyMzIxLCAxMDIzMjksIDEwMjMzNywgMTAyMzQ1LCAxMDIzNTMsIDEwMjM2MSwgMTAyMzY5LCAxMDIzNzcsIAotICAgIDEwMjM4NSwgMTAyMzkzLCAxMDI0MDEsIDEwMjQwOSwgMTAyNDE3LCAxMDI0MjUsIDEwMjQzMywgMTAyNDQxLCAxMDI0NDksIAotICAgIDEwMjQ1NywgMTAyNDY1LCAxMDI0NzMsIDEwMjQ4MSwgMTAyNDg5LCAxMDI0OTcsIDEwMjUwNSwgMTAyNTEzLCAxMDI1MjEsIAotICAgIDEwMjUyOSwgMTAyNTM3LCAxMDI1NDUsIDEwMjU1MywgMTAyNTYxLCAxMDI1NjksIDEwMjU3NywgMTAyNTg1LCAxMDI1OTMsIAotICAgIDEwMjYwMSwgMTAyNjA5LCAxMDI2MTcsIDEwMjYyNSwgMTAyNjMzLCAxMDI2NDEsIDEwMjY0OSwgMTAyNjU3LCAxMDI2NjUsIAotICAgIDEwMjY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNjgxLCAxMDI2ODYsIDEwMjY5MiwgMTAyNjk4LCAxMDI3MDQsIAotICAgIDEwMjcxMCwgMTAyNzE2LCAxMDI3MjIsIDEwMjcyOCwgMTAyNzM0LCAxMDI3MzksIDEwMjc0NiwgMTAyNzUyLCAxMDI3NTgsIAotICAgIDEwMjc2NCwgMTAyNzcwLCAxMDI3NzYsIDEwMjc4MSwgMTAyNzg3LCAxMDI3OTMsIDEwMjc5OSwgMTAyODA1LCAxMDI4MTEsIAotICAgIDEwMjgxNywgMTAyODIzLCAxMDI4MjksIDEwMjgzNSwgMTAyODQxLCAxMDI4NDYsIDEwMjg1MiwgMTAyODYwLCAxMDI4NjgsIAotICAgIDEwMjg3NCwgMTAyODgwLCAxMDI4ODYsIDEwMjg5MiwgMTAyOTAwLCAxMDI5MDYsIDEwMjkxMiwgMTAyOTE4LCAxMDI5MjQsIAotICAgIDEwMjkzMCwgMTAyOTM2LCAxMDI5NDEsIDEwMjk0NywgMTAyOTU1LCAxMDI5NjMsIDEwMjk2OSwgMTAyOTc1LCAxMDI5ODEsIAotICAgIDEwMjk4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyOTk0LCAxMDI5OTksIDEwMzAwNSwgCi0gICAgMTAzMDExLCAxMDMwMTcsIDEwMzAyMywgMTAzMDI5LCAxMDMwMzUsIDEwMzA0MSwgMTAzMDQ3LCAxMDMwNTIsIDEwMzA1OSwgCi0gICAgMTAzMDY1LCAxMDMwNzEsIDEwMzA3NywgMTAzMDgzLCAxMDMwODksIDEwMzA5NCwgMTAzMTAwLCAxMDMxMDYsIDEwMzExMiwgCi0gICAgMTAzMTE4LCAxMDMxMjQsIDEwMzEzMCwgMTAzMTM2LCAxMDMxNDIsIDEwMzE0OCwgMTAzMTU0LCAxMDMxNTksIDEwMzE2NSwgCi0gICAgMTAzMTczLCAxMDMxODEsIDEwMzE4NywgMTAzMTkzLCAxMDMxOTksIDEwMzIwNSwgMTAzMjEzLCAxMDMyMTksIDEwMzIyNSwgCi0gICAgMTAzMjMxLCAxMDMyMzcsIDEwMzI0MywgMTAzMjQ5LCAxMDMyNTQsIDEwMzI2MCwgMTAzMjY4LCAxMDMyNzYsIDEwMzI4MiwgCi0gICAgMTAzMjg4LCAxMDMyOTQsIDEwMzMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzA3LCAxMDMzMTEsIDEwMzMxNSwgCi0gICAgMTAzMzIwLCAxMDMzMjUsIDEwMzMzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAwMTkyLCAxMDAxOTcsIDEwMDIwMiwgMTAwMjA3LCAxMDAyMTIsIDEwMDIxNywgMTAwMjIyLCAxMDAyMjcsIDEwMDIzMiwgCisgICAgMTAwMjM3LCAxMDAyNDIsIDEwMDI0NywgMTAwMjUyLCAxMDAyNTcsIDEwMDI2MiwgMTAwMjY3LCAxMDAyNzIsIDEwMDI3NywgCisgICAgMTAwMjgyLCAwLCAxMDAyODcsIDEwMDI5MiwgMCwgMCwgMCwgMCwgMCwgMTAwMjk3LCAxMDAzMDEsIDEwMDMwNSwgMTAwMzEwLCAKKyAgICAxMDAzMTUsIDEwMDMyMSwgMTAwMzI2LCAxMDAzMzEsIDEwMDMzNiwgMTAwMzQxLCAxMDAzNDYsIDEwMDM1MSwgMTAwMzU2LCAKKyAgICAxMDAzNjEsIDEwMDM2NiwgMTAwMzcxLCAxMDAzNzYsIDEwMDM4MSwgMTAwMzg2LCAxMDAzOTEsIDEwMDM5NiwgMTAwNDAxLCAKKyAgICAxMDA0MDYsIDEwMDQxMSwgMTAwNDE2LCAxMDA0MjEsIDEwMDQyNiwgMTAwNDMxLCAxMDA0MzUsIDEwMDQ0MCwgMTAwNDQ1LCAKKyAgICAxMDA0NTEsIDEwMDQ1NSwgMCwgMCwgMCwgMTAwNDU5LCAxMDA0NjUsIDEwMDQ2OSwgMTAwNDc0LCAxMDA0NzksIDEwMDQ4NCwgCisgICAgMTAwNDg4LCAxMDA0OTMsIDEwMDQ5NywgMTAwNTAyLCAxMDA1MDcsIDEwMDUxMSwgMTAwNTE2LCAxMDA1MjEsIDEwMDUyNSwgCisgICAgMTAwNTI5LCAxMDA1MzQsIDEwMDUzOSwgMTAwNTQzLCAxMDA1NDgsIDEwMDU1MywgMTAwNTU4LCAxMDA1NjMsIDEwMDU2OCwgCisgICAgMTAwNTczLCAxMDA1NzgsIDEwMDU4MywgMCwgMCwgMCwgMCwgMCwgMTAwNTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA1OTMsIDEwMDU5OCwgMTAwNjAzLCAxMDA2MDgsIDEwMDYxMywgMTAwNjE4LCAKKyAgICAxMDA2MjQsIDEwMDYzMCwgMTAwNjM2LCAxMDA2NDEsIDEwMDY0NiwgMTAwNjUxLCAxMDA2NTcsIDEwMDY2MywgMTAwNjY5LCAKKyAgICAxMDA2NzUsIDEwMDY4MSwgMTAwNjg2LCAxMDA2OTIsIDEwMDY5OCwgMTAwNzA0LCAxMDA3MTAsIDEwMDcxNiwgMTAwNzIxLCAKKyAgICAxMDA3MjcsIDEwMDczMywgMTAwNzM5LCAxMDA3NDUsIDEwMDc1MSwgMTAwNzU2LCAxMDA3NjIsIDEwMDc2OCwgMTAwNzc0LCAKKyAgICAxMDA3NzksIDEwMDc4NCwgMTAwNzg5LCAxMDA3OTQsIDEwMDc5OSwgMTAwODA1LCAxMDA4MTEsIDEwMDgxNiwgMTAwODIxLCAKKyAgICAxMDA4MjYsIDEwMDgzMiwgMTAwODM4LCAxMDA4NDMsIDEwMDg0OSwgMTAwODU1LCAxMDA4NjEsIDEwMDg2OSwgMTAwODc1LCAKKyAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkyLCAxMDA4OTgsIDEwMDkwMywgMCwgMCwgMCwgMCwgMTAwOTA5LCAxMDA5MTgsIAorICAgIDEwMDkyNiwgMTAwOTMzLCAxMDA5NDAsIDEwMDk0NSwgMTAwOTUwLCAxMDA5NTUsIDEwMDk2MCwgMTAwOTY1LCAxMDA5NzAsIAorICAgIDEwMDk3NiwgMTAwOTgxLCAxMDA5ODcsIDEwMDk5MywgMTAwOTk5LCAxMDEwMDUsIDEwMTAxMSwgMTAxMDE3LCAxMDEwMjMsIAorICAgIDAsIDAsIDEwMTAyOSwgMTAxMDM2LCAxMDEwNDMsIDEwMTA1MCwgMTAxMDU4LCAxMDEwNjYsIDEwMTA3NCwgMTAxMDgyLCAKKyAgICAxMDEwOTAsIDEwMTA5OCwgMTAxMTA1LCAxMDExMTIsIDEwMTExOSwgMTAxMTI3LCAxMDExMzUsIDEwMTE0MywgMTAxMTUxLCAKKyAgICAxMDExNTksIDEwMTE2NywgMTAxMTc1LCAxMDExODMsIDEwMTE5MSwgMTAxMTk5LCAxMDEyMDcsIDEwMTIxNSwgMTAxMjIzLCAKKyAgICAxMDEyMzEsIDEwMTIzOSwgMTAxMjQ4LCAxMDEyNTcsIDEwMTI2NiwgMTAxMjc2LCAxMDEyODYsIDEwMTI5NiwgMTAxMzA2LCAKKyAgICAxMDEzMTYsIDEwMTMyNiwgMTAxMzM0LCAxMDEzNDIsIDEwMTM1MCwgMTAxMzU5LCAxMDEzNjgsIDEwMTM3NywgMTAxMzg2LCAKKyAgICAxMDEzOTUsIDEwMTQwNCwgMTAxNDEzLCAxMDE0MTcsIDEwMTQyMiwgMTAxNDI3LCAwLCAxMDE0MzMsIDEwMTQzOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTAxNDQzLCAxMDE0NDksIDEwMTQ1NiwgMTAxNDYxLCAxMDE0NjYsIDEwMTQ3MCwgMTAxNDc1LCAxMDE0ODAsIAorICAgIDAsIDEwMTQ4NSwgMTAxNDkwLCAxMDE0OTUsIDAsIDEwMTUwMCwgMTAxNTA1LCAxMDE1MTAsIDEwMTUxNSwgMTAxNTIwLCAKKyAgICAxMDE1MjUsIDEwMTUzMCwgMTAxNTM1LCAxMDE1NDAsIDEwMTU0NSwgMTAxNTUwLCAxMDE1NTQsIDEwMTU1OCwgMTAxNTYzLCAKKyAgICAxMDE1NjgsIDEwMTU3MywgMTAxNTc3LCAxMDE1ODEsIDEwMTU4NiwgMTAxNTkwLCAxMDE1OTUsIDEwMTYwMCwgMTAxNjA1LCAKKyAgICAxMDE2MTAsIDEwMTYxNSwgMTAxNjE5LCAxMDE2MjQsIDAsIDAsIDAsIDAsIDEwMTYyOSwgMTAxNjM1LCAxMDE2NDAsIDAsIDAsIAorICAgIDAsIDAsIDEwMTY0NSwgMTAxNjQ5LCAxMDE2NTMsIDEwMTY1NywgMTAxNjYxLCAxMDE2NjUsIDEwMTY3MCwgMTAxNjc1LCAKKyAgICAxMDE2ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTY4NywgMTAxNjkzLCAxMDE3MDAsIDEwMTcwNiwgMTAxNzEzLCAKKyAgICAxMDE3MTksIDEwMTcyNSwgMTAxNzMxLCAxMDE3MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTc0NCwgMTAxNzUyLCAKKyAgICAxMDE3NjAsIDEwMTc2OCwgMTAxNzc2LCAxMDE3ODQsIDEwMTc5MiwgMTAxODAwLCAxMDE4MDgsIDEwMTgxNiwgMTAxODI0LCAKKyAgICAxMDE4MzIsIDEwMTg0MCwgMTAxODQ4LCAxMDE4NTYsIDEwMTg2NCwgMTAxODcyLCAxMDE4ODAsIDEwMTg4OCwgMTAxODk2LCAKKyAgICAxMDE5MDQsIDEwMTkxMiwgMTAxOTIwLCAxMDE5MjgsIDEwMTkzNiwgMTAxOTQ0LCAxMDE5NTIsIDEwMTk2MCwgMTAxOTY4LCAKKyAgICAxMDE5NzYsIDEwMTk4MywgMTAxOTkxLCAxMDE5OTksIDEwMjAwNiwgMTAyMDEzLCAxMDIwMjAsIDEwMjAyNywgMTAyMDM0LCAKKyAgICAxMDIwNDEsIDEwMjA0OCwgMTAyMDU1LCAxMDIwNjIsIDEwMjA2OSwgMTAyMDc2LCAxMDIwODMsIDEwMjA5MCwgMTAyMDk3LCAKKyAgICAxMDIxMDQsIDEwMjExMSwgMTAyMTE4LCAxMDIxMjUsIDEwMjEzMiwgMTAyMTM5LCAxMDIxNDYsIDEwMjE1MywgMTAyMTYwLCAKKyAgICAxMDIxNjcsIDEwMjE3NCwgMTAyMTgxLCAxMDIxODgsIDEwMjE5NSwgMTAyMjAyLCAxMDIyMDgsIDEwMjIxNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzM3LCAxMDMzNDEsIDEwMzM0NSwgMTAzMzQ5LCAxMDMzNTMsIDEwMzM1NywgCi0gICAgMTAzMzYxLCAxMDMzNjYsIDEwMzM3MCwgMTAzMzc1LCAxMDMzODAsIDEwMzM4NSwgMTAzMzkwLCAxMDMzOTUsIDEwMzQwMCwgCi0gICAgMTAzNDA1LCAxMDM0MTAsIDEwMzQxNSwgMTAzNDIwLCAxMDM0MjYsIDEwMzQzMiwgMTAzNDM4LCAxMDM0NDUsIDEwMzQ1MiwgCi0gICAgMTAzNDU5LCAxMDM0NjYsIDEwMzQ3MywgMTAzNDgwLCAxMDM0ODcsIDEwMzQ5NCwgMTAzNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDIyMjIsIDEwMjIyNywgMTAyMjMyLCAxMDIyMzcsIDEwMjI0MiwgMTAyMjQ3LCAxMDIyNTIsIAorICAgIDEwMjI1NywgMTAyMjYyLCAxMDIyNjcsIDEwMjI3MiwgMTAyMjc3LCAxMDIyODIsIDEwMjI4NywgMTAyMjkyLCAxMDIyOTcsIAorICAgIDEwMjMwMiwgMTAyMzA3LCAxMDIzMTIsIDEwMjMxNywgMTAyMzIyLCAxMDIzMjcsIDEwMjMzMiwgMTAyMzM3LCAxMDIzNDIsIAorICAgIDEwMjM0NywgMTAyMzUyLCAxMDIzNTcsIDEwMjM2MiwgMTAyMzY3LCAxMDIzNzIsIDEwMjM3NywgMTAyMzgyLCAxMDIzODcsIAorICAgIDEwMjM5MiwgMTAyMzk3LCAxMDI0MDIsIDEwMjQwNywgMTAyNDEzLCAwLCAwLCAwLCAwLCAxMDI0MTksIDEwMjQyMywgCisgICAgMTAyNDI3LCAxMDI0MzIsIDEwMjQzNywgMTAyNDQzLCAxMDI0NDksIDEwMjQ1NSwgMTAyNDY1LCAxMDI0NzQsIDEwMjQ4MCwgCisgICAgMTAyNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI0OTUsIDEwMjQ5OSwgMTAyNTA0LCAxMDI1MDksIAorICAgIDEwMjUxNCwgMTAyNTE5LCAxMDI1MjQsIDEwMjUyOSwgMTAyNTM0LCAxMDI1MzgsIDEwMjU0MywgMTAyNTQ3LCAxMDI1NTIsIAorICAgIDEwMjU1NiwgMTAyNTYxLCAxMDI1NjUsIDEwMjU3MCwgMTAyNTc1LCAxMDI1ODAsIDEwMjU4NSwgMTAyNTkwLCAxMDI1OTUsIAorICAgIDEwMjYwMCwgMTAyNjA1LCAxMDI2MTAsIDEwMjYxNSwgMTAyNjIwLCAxMDI2MjUsIDEwMjYzMCwgMTAyNjM1LCAxMDI2NDAsIAorICAgIDEwMjY0NSwgMTAyNjUwLCAxMDI2NTUsIDEwMjY2MCwgMTAyNjY1LCAxMDI2NzAsIDEwMjY3NSwgMTAyNjgwLCAxMDI2ODUsIAorICAgIDEwMjY5MCwgMTAyNjk1LCAxMDI3MDAsIDEwMjcwNSwgMTAyNzEwLCAxMDI3MTUsIDEwMjcyMCwgMTAyNzI1LCAxMDI3MzAsIAorICAgIDEwMjczNSwgMTAyNzQwLCAxMDI3NDUsIDEwMjc1MCwgMTAyNzU1LCAwLCAwLCAwLCAxMDI3NjAsIDEwMjc2NSwgMTAyNzc0LCAKKyAgICAxMDI3ODIsIDEwMjc5MSwgMTAyODAwLCAxMDI4MTEsIDEwMjgyMiwgMTAyODI5LCAxMDI4MzYsIDEwMjg0MywgMTAyODUwLCAKKyAgICAxMDI4NTcsIDEwMjg2NCwgMTAyODcxLCAxMDI4NzgsIDEwMjg4NSwgMTAyODkyLCAxMDI4OTksIDEwMjkwNiwgMTAyOTEzLCAKKyAgICAxMDI5MjAsIDEwMjkyNywgMTAyOTM0LCAxMDI5NDEsIDEwMjk0OCwgMTAyOTU1LCAxMDI5NjIsIDEwMjk2OSwgMCwgMCwgCisgICAgMTAyOTc2LCAxMDI5ODIsIDEwMjk4OCwgMTAyOTk0LCAxMDMwMDAsIDEwMzAwNywgMTAzMDE0LCAxMDMwMjIsIDEwMzAzMCwgCisgICAgMTAzMDM3LCAxMDMwNDQsIDEwMzA1MSwgMTAzMDU4LCAxMDMwNjUsIDEwMzA3MiwgMTAzMDc5LCAxMDMwODYsIDEwMzA5MywgCisgICAgMTAzMTAwLCAxMDMxMDcsIDEwMzExNCwgMTAzMTIxLCAxMDMxMjgsIDEwMzEzNSwgMTAzMTQyLCAxMDMxNDksIDEwMzE1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAzMTYzLCAxMDMxNjksIDEwMzE3NSwgMTAzMTgxLCAxMDMxODcsIDEwMzE5NCwgMTAzMjAxLCAKKyAgICAxMDMyMDksIDEwMzIxNywgMTAzMjI0LCAxMDMyMzEsIDEwMzIzOCwgMTAzMjQ1LCAxMDMyNTIsIDEwMzI1OSwgMTAzMjY2LCAKKyAgICAxMDMyNzMsIDEwMzI4MCwgMTAzMjg3LCAxMDMyOTQsIDEwMzMwMSwgMTAzMzA4LCAxMDMzMTUsIDEwMzMyMiwgMTAzMzI5LCAKKyAgICAxMDMzMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM0MywgMTAzMzUwLCAxMDMzNTksIDEwMzM2OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzc5LCAxMDMzODUsIDEwMzM5MSwgMTAzMzk3LCAxMDM0MDMsIDEwMzQxMCwgCisgICAgMTAzNDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDM0MjUsIDEwMzQzMiwgMTAzNDM5LCAxMDM0NDcsIDEwMzQ1NCwgCisgICAgMTAzNDYxLCAxMDM0NjgsIDEwMzQ3NSwgMTAzNDgzLCAxMDM0OTEsIDEwMzQ5OSwgMTAzNTA3LCAxMDM1MTUsIDEwMzUyMywgCisgICAgMTAzNTMxLCAxMDM1MzksIDEwMzU0NywgMTAzNTU1LCAxMDM1NjMsIDEwMzU3MSwgMTAzNTc5LCAxMDM1ODcsIDEwMzU5NSwgCisgICAgMTAzNjAzLCAxMDM2MTEsIDEwMzYxOSwgMTAzNjI3LCAxMDM2MzUsIDEwMzY0MywgMTAzNjUxLCAxMDM2NTksIDEwMzY2NywgCisgICAgMTAzNjc1LCAxMDM2ODMsIDEwMzY5MSwgMTAzNjk5LCAxMDM3MDcsIDEwMzcxNSwgMTAzNzIzLCAxMDM3MzEsIDEwMzczOSwgCisgICAgMTAzNzQ3LCAxMDM3NTUsIDEwMzc2MywgMTAzNzcxLCAxMDM3NzksIDEwMzc4NywgMTAzNzk1LCAxMDM4MDMsIDEwMzgxMSwgCisgICAgMTAzODE5LCAxMDM4MjcsIDEwMzgzNSwgMTAzODQzLCAxMDM4NTEsIDEwMzg1OSwgMTAzODY3LCAxMDM4NzUsIDEwMzg4MywgCisgICAgMTAzODkxLCAxMDM4OTksIDEwMzkwNywgMTAzOTE1LCAxMDM5MjMsIDEwMzkzMSwgMTAzOTM5LCAxMDM5NDcsIDEwMzk1NSwgCisgICAgMTAzOTYzLCAxMDM5NzEsIDEwMzk3OSwgMTAzOTg3LCAxMDM5OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDAwMywgCisgICAgMTA0MDA4LCAxMDQwMTQsIDEwNDAyMCwgMTA0MDI2LCAxMDQwMzIsIDEwNDAzOCwgMTA0MDQ0LCAxMDQwNTAsIDEwNDA1NiwgCisgICAgMTA0MDYxLCAxMDQwNjgsIDEwNDA3NCwgMTA0MDgwLCAxMDQwODYsIDEwNDA5MiwgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOSwgCisgICAgMTA0MTE1LCAxMDQxMjEsIDEwNDEyNywgMTA0MTMzLCAxMDQxMzksIDEwNDE0NSwgMTA0MTUxLCAxMDQxNTcsIDEwNDE2MywgCisgICAgMTA0MTY4LCAxMDQxNzQsIDEwNDE4MiwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMiwgMTA0MjA4LCAxMDQyMTQsIDEwNDIyMiwgCisgICAgMTA0MjI4LCAxMDQyMzQsIDEwNDI0MCwgMTA0MjQ2LCAxMDQyNTIsIDEwNDI1OCwgMTA0MjYzLCAxMDQyNjksIDEwNDI3NywgCisgICAgMTA0Mjg1LCAxMDQyOTEsIDEwNDI5NywgMTA0MzAzLCAxMDQzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNDMxNiwgMTA0MzIxLCAxMDQzMjcsIDEwNDMzMywgMTA0MzM5LCAxMDQzNDUsIDEwNDM1MSwgMTA0MzU3LCAKKyAgICAxMDQzNjMsIDEwNDM2OSwgMTA0Mzc0LCAxMDQzODEsIDEwNDM4NywgMTA0MzkzLCAxMDQzOTksIDEwNDQwNSwgMTA0NDExLCAKKyAgICAxMDQ0MTYsIDEwNDQyMiwgMTA0NDI4LCAxMDQ0MzQsIDEwNDQ0MCwgMTA0NDQ2LCAxMDQ0NTIsIDEwNDQ1OCwgMTA0NDY0LCAKKyAgICAxMDQ0NzAsIDEwNDQ3NiwgMTA0NDgxLCAxMDQ0ODcsIDEwNDQ5NSwgMTA0NTAzLCAxMDQ1MDksIDEwNDUxNSwgMTA0NTIxLCAKKyAgICAxMDQ1MjcsIDEwNDUzNSwgMTA0NTQxLCAxMDQ1NDcsIDEwNDU1MywgMTA0NTU5LCAxMDQ1NjUsIDEwNDU3MSwgMTA0NTc2LCAKKyAgICAxMDQ1ODIsIDEwNDU5MCwgMTA0NTk4LCAxMDQ2MDQsIDEwNDYxMCwgMTA0NjE2LCAxMDQ2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNDYyOSwgMTA0NjMzLCAxMDQ2MzcsIDEwNDY0MiwgMTA0NjQ3LCAxMDQ2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwMzUwOCwgMTAzNTEyLCAxMDM1MTYsIDEwMzUyMCwgMTAzNTI0LCAxMDM1MjgsIDEwMzUzMSwgMTAzNTM1LCAKLSAgICAxMDM1MzgsIDEwMzU0MiwgMTAzNTQ1LCAxMDM1NDksIDEwMzU1MywgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NywgMTAzNTcwLCAKLSAgICAxMDM1NzQsIDEwMzU3NywgMTAzNTgxLCAxMDM1ODQsIDEwMzU4OCwgMTAzNTkyLCAxMDM1OTYsIDEwMzYwMCwgMTAzNjA0LCAKLSAgICAxMDM2MDgsIDEwMzYxMiwgMTAzNjE2LCAxMDM2MjAsIDEwMzYyNCwgMTAzNjI4LCAxMDM2MzIsIDEwMzYzNiwgMTAzNjQwLCAKLSAgICAxMDM2NDQsIDEwMzY0OCwgMTAzNjUyLCAxMDM2NTYsIDEwMzY2MCwgMTAzNjYzLCAxMDM2NjcsIDEwMzY3MSwgMTAzNjc1LCAKLSAgICAxMDM2NzgsIDEwMzY4MSwgMTAzNjg1LCAxMDM2ODksIDEwMzY5MywgMTAzNjk3LCAxMDM3MDEsIDEwMzcwNSwgMTAzNzA4LCAKLSAgICAxMDM3MTIsIDEwMzcxOCwgMTAzNzI0LCAxMDM3MzAsIDEwMzczNSwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MSwgMTAzNzU1LCAKLSAgICAxMDM3NjAsIDEwMzc2NSwgMTAzNzcxLCAxMDM3NzYsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTEsIDEwMzc5NSwgMTAzODAwLCAKLSAgICAxMDM4MDMsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTUsIDEwMzgyMSwgMTAzODI2LCAxMDM4MzIsIDAsIDAsIDAsIDAsIAotICAgIDEwMzgzNywgMTAzODQwLCAxMDM4NDMsIDEwMzg0NiwgMTAzODQ5LCAxMDM4NTIsIDEwMzg1NSwgMTAzODU5LCAxMDM4NjIsIAotICAgIDEwMzg2NiwgMTAzODcwLCAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIAotICAgIDEwMzkwMiwgMTAzOTA3LCAxMDM5MTIsIDEwMzkxNiwgMTAzOTE5LCAxMDM5MjIsIDEwMzkyNSwgMTAzOTI4LCAxMDM5MzEsIAotICAgIDEwMzkzNCwgMTAzOTM4LCAxMDM5NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMzk0NSwgMTAzOTQ5LCAxMDM5NTQsIDEwMzk1OSwgMTAzOTY0LCAxMDM5NjgsIDEwMzk3MywgMTAzOTc3LCAxMDM5ODIsIAotICAgIDEwMzk4NiwgMTAzOTkxLCAxMDM5OTUsIDEwNDAwMCwgMTA0MDA0LCAxMDQwMDksIDEwNDAxMywgMTA0MDE4LCAxMDQwMjMsIAotICAgIDEwNDAyOCwgMTA0MDMzLCAxMDQwMzgsIDEwNDA0MywgMTA0MDQ4LCAxMDQwNTMsIDEwNDA1OCwgMTA0MDYzLCAxMDQwNjgsIAotICAgIDEwNDA3MywgMTA0MDc4LCAxMDQwODMsIDEwNDA4OCwgMTA0MDkzLCAxMDQwOTgsIDEwNDEwMywgMTA0MTA4LCAxMDQxMTMsIAotICAgIDEwNDExOCwgMTA0MTIyLCAxMDQxMjcsIDEwNDEzMiwgMTA0MTM3LCAxMDQxNDEsIDEwNDE0NSwgMTA0MTUwLCAxMDQxNTUsIAotICAgIDEwNDE2MCwgMTA0MTY1LCAxMDQxNzAsIDEwNDE3NSwgMTA0MTc5LCAxMDQxODUsIDEwNDE5MCwgMTA0MTk2LCAxMDQyMDEsIAotICAgIDEwNDIwNywgMTA0MjEyLCAxMDQyMTgsIDEwNDIyMywgMTA0MjI5LCAxMDQyMzQsIDEwNDIzOSwgMTA0MjQ0LCAxMDQyNDksIAotICAgIDEwNDI1MywgMTA0MjU4LCAxMDQyNjQsIDEwNDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0MjczLCAxMDQyODAsIDEwNDI4NywgMTA0Mjk0LCAxMDQzMDEsIDEwNDMwOCwgMTA0MzE1LCAxMDQzMjIsIDEwNDMyOSwgCi0gICAgMTA0MzM2LCAxMDQzNDMsIDEwNDM1MCwgMTA0MzU3LCAxMDQzNjQsIDEwNDM3MSwgMTA0Mzc4LCAxMDQzODUsIDEwNDM5MiwgCi0gICAgMTA0Mzk5LCAxMDQ0MDYsIDEwNDQxMywgMTA0NDIwLCAxMDQ0MjcsIDEwNDQzNCwgMTA0NDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDQ0NDgsIDEwNDQ1NSwgMTA0NDYxLCAxMDQ0NjcsIDEwNDQ3MywgMTA0NDc5LCAxMDQ0ODUsIDEwNDQ5MSwgCi0gICAgMTA0NDk4LCAxMDQ1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxMSwgMTA0NTE2LCAxMDQ1MjEsIDEwNDUyNiwgMTA0NTMxLCAKLSAgICAxMDQ1MzUsIDEwNDUzOSwgMTA0NTQzLCAxMDQ1NDgsIDEwNDU1MywgMTA0NTU4LCAxMDQ1NjMsIDEwNDU2OCwgMTA0NTczLCAKLSAgICAxMDQ1NzgsIDEwNDU4MywgMTA0NTg4LCAxMDQ1OTMsIDEwNDU5OCwgMTA0NjAzLCAxMDQ2MDgsIDEwNDYxMywgMTA0NjE4LCAKLSAgICAxMDQ2MjMsIDEwNDYyOCwgMTA0NjMzLCAxMDQ2MzgsIDEwNDY0MywgMTA0NjQ4LCAxMDQ2NTMsIDEwNDY1OCwgMTA0NjYzLCAKLSAgICAxMDQ2NjgsIDEwNDY3MywgMTA0Njc4LCAxMDQ2ODMsIDEwNDY4OCwgMTA0NjkzLCAxMDQ2OTgsIDEwNDcwMywgMTA0NzA4LCAKLSAgICAxMDQ3MTMsIDEwNDcxOSwgMTA0NzI0LCAxMDQ3MzAsIDEwNDczNSwgMTA0NzQxLCAxMDQ3NDYsIDEwNDc1MiwgMTA0NzU4LCAKLSAgICAxMDQ3NjIsIDEwNDc2NywgMTA0NzcxLCAwLCAxMDQ3NzUsIDEwNDc4MCwgMTA0Nzg0LCAxMDQ3ODgsIDEwNDc5MiwgCi0gICAgMTA0Nzk2LCAxMDQ4MDAsIDEwNDgwNCwgMTA0ODA5LCAxMDQ4MTMsIDEwNDgxOCwgMTA0ODIzLCAxMDQ4MjcsIDEwNDgzMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODM3LCAxMDQ4NDEsIDEwNDg0NSwgMTA0ODQ5LCAKLSAgICAxMDQ4NTMsIDEwNDg1NywgMTA0ODYxLCAxMDQ4NjYsIDEwNDg3MSwgMTA0ODc2LCAxMDQ4ODEsIDEwNDg4NiwgMTA0ODkxLCAKLSAgICAxMDQ4OTYsIDEwNDkwMSwgMTA0OTA2LCAxMDQ5MTEsIDEwNDkxNiwgMTA0OTIxLCAxMDQ5MjYsIDEwNDkzMSwgMTA0OTM2LCAKLSAgICAxMDQ5NDEsIDEwNDk0NiwgMTA0OTUxLCAxMDQ5NTUsIDEwNDk2MCwgMTA0OTY1LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc5LCAKLSAgICAxMDQ5ODQsIDEwNDk4OSwgMTA0OTk0LCAxMDQ5OTgsIDEwNTAwMywgMTA1MDA4LCAxMDUwMTMsIDEwNTAxOCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MDIzLCAxMDUwMjcsIDEwNTAzMSwgMTA1MDM1LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ1LCAKLSAgICAxMDUwNDksIDEwNTA1MiwgMTA1MDU2LCAxMDUwNjAsIDEwNTA2NSwgMTA1MDY5LCAxMDUwNzQsIDEwNTA3NywgMTA1MDgxLCAKLSAgICAxMDUwODQsIDEwNTA4OCwgMTA1MDkxLCAxMDUwOTUsIDEwNTA5OSwgMTA1MTAzLCAxMDUxMDcsIDEwNTExMSwgMTA1MTE1LCAKLSAgICAxMDUxMTksIDEwNTEyMywgMTA1MTI3LCAxMDUxMzEsIDEwNTEzNSwgMTA1MTM5LCAxMDUxNDMsIDEwNTE0NywgMTA1MTUxLCAKLSAgICAxMDUxNTUsIDEwNTE1OSwgMTA1MTYzLCAxMDUxNjcsIDEwNTE3MCwgMTA1MTc0LCAxMDUxNzgsIDEwNTE4MiwgMTA1MTg1LCAKLSAgICAxMDUxODgsIDEwNTE5MiwgMTA1MTk2LCAxMDUyMDAsIDEwNTIwNCwgMTA1MjA4LCAxMDUyMTIsIDEwNTIxNiwgMTA1MjE5LCAKLSAgICAxMDUyMjQsIDEwNTIyOCwgMTA1MjMzLCAxMDUyMzcsIDEwNTI0MiwgMTA1MjQ3LCAxMDUyNTMsIDEwNTI1OCwgMTA1MjY0LCAKLSAgICAxMDUyNjgsIDEwNTI3MywgMTA1Mjc3LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAxLCAKLSAgICAxMDUzMDQsIDEwNTMwOCwgMTA1MzEyLCAxMDUzMTUsIDEwNTMxOSwgMTA1MzIzLCAxMDUzMjcsIDEwNTMzNCwgMCwgMCwgCi0gICAgMTA1MzM4LCAxMDUzNDIsIDEwNTM0NSwgMTA1MzQ4LCAxMDUzNTEsIDEwNTM1NCwgMTA1MzU3LCAxMDUzNjAsIDEwNTM2NCwgCi0gICAgMTA1MzY3LCAxMDUzNzEsIDEwNTM3NCwgMTA1Mzc4LCAxMDUzODEsIDEwNTM4NSwgMTA1MzkwLCAwLCAxMDUzOTUsIAotICAgIDEwNTQwMCwgMTA1NDA1LCAxMDU0MTAsIDEwNTQxNSwgMTA1NDIwLCAxMDU0MjUsIDEwNTQzMSwgMTA1NDM2LCAxMDU0NDIsIAotICAgIDEwNTQ0OCwgMTA1NDU0LCAxMDU0NjAsIDEwNTQ2NiwgMTA1NDcyLCAxMDU0NzgsIDEwNTQ4NCwgMTA1NDkwLCAxMDU0OTYsIAotICAgIDEwNTUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NTEwLCAxMDU1MTQsIDEwNTUxOSwgMTA1NTIzLCAKLSAgICAxMDU1MjcsIDEwNTUzMSwgMTA1NTM2LCAxMDU1NDAsIDEwNTU0NSwgMTA1NTQ5LCAxMDU1NTQsIDEwNTU1OSwgMTA1NTY0LCAKLSAgICAxMDU1NjksIDEwNTU3NCwgMTA1NTc5LCAxMDU1ODQsIDEwNTU4OSwgMCwgMTA1NTk0LCAxMDU1OTksIDEwNTYwNCwgCi0gICAgMTA1NjA5LCAxMDU2MTQsIDEwNTYxOSwgMTA1NjI0LCAxMDU2MjksIDEwNTYzNCwgMTA1NjM5LCAxMDU2NDQsIDEwNTY0OSwgCi0gICAgMTA1NjU0LCAxMDU2NTgsIDEwNTY2MywgMTA1NjY4LCAxMDU2NzMsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MSwgCi0gICAgMTA1Njk2LCAxMDU3MDEsIDEwNTcwNiwgMTA1NzEwLCAxMDU3MTUsIDEwNTcyMSwgMTA1NzI2LCAxMDU3MzIsIDEwNTczNywgCi0gICAgMTA1NzQyLCAxMDU3NDgsIDEwNTc1MywgMTA1NzU5LCAxMDU3NjQsIDEwNTc2OSwgMTA1Nzc0LCAxMDU3NzksIDEwNTc4MywgCi0gICAgMTA1Nzg4LCAxMDU3OTQsIDEwNTc5OSwgMTA1ODA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ2NTksIDEwNDY2MywgCisgICAgMTA0NjY3LCAxMDQ2NzEsIDEwNDY3NSwgMTA0Njc5LCAxMDQ2ODMsIDEwNDY4OCwgMTA0NjkyLCAxMDQ2OTcsIDEwNDcwMiwgCisgICAgMTA0NzA3LCAxMDQ3MTIsIDEwNDcxNywgMTA0NzIyLCAxMDQ3MjcsIDEwNDczMiwgMTA0NzM3LCAxMDQ3NDIsIDEwNDc0OCwgCisgICAgMTA0NzU0LCAxMDQ3NjAsIDEwNDc2NywgMTA0Nzc0LCAxMDQ3ODEsIDEwNDc4OCwgMTA0Nzk1LCAxMDQ4MDIsIDEwNDgwOSwgCisgICAgMTA0ODE2LCAxMDQ4MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNTgxMCwgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNSwgMCwgCi0gICAgMTA1ODQwLCAwLCAxMDU4NDUsIDEwNTg1MCwgMTA1ODU1LCAxMDU4NjAsIDAsIDEwNTg2NSwgMTA1ODcwLCAxMDU4NzUsIAotICAgIDEwNTg4MCwgMTA1ODg1LCAxMDU4OTAsIDEwNTg5NSwgMTA1OTAwLCAxMDU5MDUsIDEwNTkxMCwgMTA1OTE1LCAxMDU5MjAsIAotICAgIDEwNTkyNSwgMTA1OTI5LCAxMDU5MzQsIDAsIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDgsIDEwNTk1MiwgMTA1OTU3LCAKLSAgICAxMDU5NjIsIDEwNTk2NywgMTA1OTcyLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU5OTEsIAotICAgIDEwNTk5NSwgMTA2MDAwLCAxMDYwMDQsIDEwNjAwOSwgMTA2MDEzLCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI3LCAxMDYwMzEsIAotICAgIDEwNjAzNiwgMTA2MDQwLCAxMDYwNDUsIDEwNjA1MCwgMTA2MDU1LCAxMDYwNjAsIDEwNjA2NSwgMTA2MDcwLCAxMDYwNzUsIAotICAgIDEwNjA4MCwgMTA2MDg1LCAxMDYwOTAsIDEwNjA5NSwgMTA2MTAwLCAxMDYxMDUsIDEwNjExMCwgMTA2MTE1LCAxMDYxMjAsIAotICAgIDEwNjEyNSwgMTA2MTMwLCAxMDYxMzUsIDEwNjE0MCwgMTA2MTQ1LCAxMDYxNTAsIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjQsIAotICAgIDEwNjE2OSwgMTA2MTc0LCAxMDYxNzksIDEwNjE4MywgMTA2MTg3LCAxMDYxOTIsIDEwNjE5NywgMTA2MjAyLCAxMDYyMDcsIAotICAgIDEwNjIxMiwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNywgMTA2MjMyLCAxMDYyMzgsIDEwNjI0MywgMTA2MjQ5LCAxMDYyNTQsIAotICAgIDEwNjI2MCwgMTA2MjY1LCAxMDYyNzEsIDEwNjI3NiwgMCwgMCwgMCwgMCwgMCwgMTA2MjgxLCAxMDYyODYsIDEwNjI5MCwgCi0gICAgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNSwgMTA2MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDYzMjQsIDEwNjMzMSwgMTA2MzM2LCAxMDYzNDEsIDAsIDEwNjM0NiwgMTA2MzUwLCAxMDYzNTUsIDEwNjM1OSwgCi0gICAgMTA2MzY0LCAxMDYzNjgsIDEwNjM3MywgMTA2Mzc4LCAwLCAwLCAxMDYzODMsIDEwNjM4OCwgMCwgMCwgMTA2MzkzLCAKLSAgICAxMDYzOTgsIDEwNjQwMywgMTA2NDA3LCAxMDY0MTIsIDEwNjQxNywgMTA2NDIyLCAxMDY0MjcsIDEwNjQzMiwgMTA2NDM3LCAKLSAgICAxMDY0NDIsIDEwNjQ0NywgMTA2NDUyLCAxMDY0NTcsIDEwNjQ2MiwgMTA2NDY3LCAxMDY0NzIsIDEwNjQ3NywgMTA2NDgyLCAKLSAgICAxMDY0ODcsIDEwNjQ5MiwgMTA2NDk3LCAwLCAxMDY1MDIsIDEwNjUwNiwgMTA2NTExLCAxMDY1MTYsIDEwNjUyMSwgCi0gICAgMTA2NTI1LCAxMDY1MjksIDAsIDEwNjUzNCwgMTA2NTM5LCAwLCAxMDY1NDQsIDEwNjU0OSwgMTA2NTU0LCAxMDY1NTksIAotICAgIDEwNjU2NCwgMCwgMCwgMTA2NTY4LCAxMDY1NzMsIDEwNjU3OCwgMTA2NTg0LCAxMDY1ODksIDEwNjU5NSwgMTA2NjAwLCAKLSAgICAxMDY2MDYsIDEwNjYxMiwgMCwgMCwgMTA2NjE5LCAxMDY2MjUsIDAsIDAsIDEwNjYzMSwgMTA2NjM3LCAxMDY2NDMsIDAsIDAsIAotICAgIDEwNjY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NjUyLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTksIDEwNjY2NCwgMTA2NjcxLCAKLSAgICAxMDY2NzksIDEwNjY4NSwgMTA2NjkxLCAxMDY2OTcsIDAsIDAsIDEwNjcwNCwgMTA2NzEwLCAxMDY3MTUsIDEwNjcyMCwgCi0gICAgMTA2NzI1LCAxMDY3MzAsIDEwNjczNSwgMCwgMCwgMCwgMTA2NzQwLCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIDEwNDg0MiwgCisgICAgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjAsIDEwNDg2NCwgMTA0ODY3LCAxMDQ4NzEsIDEwNDg3NSwgCisgICAgMTA0ODgwLCAxMDQ4ODQsIDEwNDg4OSwgMTA0ODkyLCAxMDQ4OTYsIDEwNDg5OSwgMTA0OTAzLCAxMDQ5MDYsIDEwNDkxMCwgCisgICAgMTA0OTE0LCAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgCisgICAgMTA0OTUwLCAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MSwgCisgICAgMTA0OTg0LCAxMDQ5ODgsIDEwNDk5MiwgMTA0OTk2LCAxMDQ5OTksIDEwNTAwMiwgMTA1MDA2LCAxMDUwMDksIDEwNTAxMywgCisgICAgMTA1MDE3LCAxMDUwMjEsIDEwNTAyNSwgMTA1MDI4LCAxMDUwMzIsIDEwNTAzOCwgMTA1MDQ0LCAxMDUwNTAsIDEwNTA1NSwgCisgICAgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MSwgMTA1MDc1LCAxMDUwODAsIDEwNTA4NSwgMTA1MDkxLCAxMDUwOTYsIDEwNTEwMiwgCisgICAgMTA1MTA2LCAxMDUxMTEsIDEwNTExNSwgMTA1MTIwLCAxMDUxMjMsIDEwNTEyNiwgMTA1MTMwLCAxMDUxMzUsIDEwNTE0MSwgCisgICAgMTA1MTQ2LCAxMDUxNTIsIDAsIDAsIDAsIDAsIDEwNTE1NywgMTA1MTYwLCAxMDUxNjMsIDEwNTE2NiwgMTA1MTY5LCAKKyAgICAxMDUxNzIsIDEwNTE3NSwgMTA1MTc5LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgMTA1MjAyLCAKKyAgICAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI3LCAxMDUyMzIsIDEwNTIzNiwgMTA1MjM5LCAKKyAgICAxMDUyNDIsIDEwNTI0NSwgMTA1MjQ4LCAxMDUyNTEsIDEwNTI1NCwgMTA1MjU4LCAxMDUyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTI2NSwgMTA1MjY5LCAxMDUyNzQsIDEwNTI3OSwgMTA1Mjg0LCAKKyAgICAxMDUyODgsIDEwNTI5MywgMTA1Mjk3LCAxMDUzMDIsIDEwNTMwNiwgMTA1MzExLCAxMDUzMTUsIDEwNTMyMCwgMTA1MzI0LCAKKyAgICAxMDUzMjksIDEwNTMzMywgMTA1MzM4LCAxMDUzNDMsIDEwNTM0OCwgMTA1MzUzLCAxMDUzNTgsIDEwNTM2MywgMTA1MzY4LCAKKyAgICAxMDUzNzMsIDEwNTM3OCwgMTA1MzgzLCAxMDUzODgsIDEwNTM5MywgMTA1Mzk4LCAxMDU0MDMsIDEwNTQwOCwgMTA1NDEzLCAKKyAgICAxMDU0MTgsIDEwNTQyMywgMTA1NDI4LCAxMDU0MzMsIDEwNTQzNywgMTA1NDQxLCAxMDU0NDYsIDEwNTQ1MSwgMTA1NDU2LCAKKyAgICAxMDU0NjAsIDEwNTQ2NCwgMTA1NDY5LCAxMDU0NzMsIDEwNTQ3OCwgMTA1NDgzLCAxMDU0ODgsIDEwNTQ5MywgMTA1NDk3LCAKKyAgICAxMDU1MDMsIDEwNTUwOCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyNSwgMTA1NTMwLCAxMDU1MzYsIDEwNTU0MSwgMTA1NTQ3LCAKKyAgICAxMDU1NTIsIDEwNTU1NywgMTA1NTYyLCAxMDU1NjcsIDEwNTU3MSwgMTA1NTc2LCAxMDU1ODIsIDEwNTU4NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NTkxLCAxMDU1OTgsIDEwNTYwNSwgMTA1NjEyLCAxMDU2MTksIAorICAgIDEwNTYyNiwgMTA1NjMzLCAxMDU2NDAsIDEwNTY0NywgMTA1NjU0LCAxMDU2NjEsIDEwNTY2OCwgMTA1Njc1LCAxMDU2ODIsIAorICAgIDEwNTY4OSwgMTA1Njk2LCAxMDU3MDMsIDEwNTcxMCwgMTA1NzE3LCAxMDU3MjQsIDEwNTczMSwgMTA1NzM4LCAxMDU3NDUsIAorICAgIDEwNTc1MiwgMTA1NzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU3NjYsIDEwNTc3MywgMTA1Nzc5LCAxMDU3ODUsIAorICAgIDEwNTc5MSwgMTA1Nzk3LCAxMDU4MDMsIDEwNTgwOSwgMTA1ODE2LCAxMDU4MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTgyOSwgCisgICAgMTA1ODM0LCAxMDU4MzksIDEwNTg0NCwgMTA1ODQ5LCAxMDU4NTMsIDEwNTg1NywgMTA1ODYxLCAxMDU4NjYsIDEwNTg3MSwgCisgICAgMTA1ODc2LCAxMDU4ODEsIDEwNTg4NiwgMTA1ODkxLCAxMDU4OTYsIDEwNTkwMSwgMTA1OTA2LCAxMDU5MTEsIDEwNTkxNiwgCisgICAgMTA1OTIxLCAxMDU5MjYsIDEwNTkzMSwgMTA1OTM2LCAxMDU5NDEsIDEwNTk0NiwgMTA1OTUxLCAxMDU5NTYsIDEwNTk2MSwgCisgICAgMTA1OTY2LCAxMDU5NzEsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDEwNTk5MSwgMTA1OTk2LCAxMDYwMDEsIDEwNjAwNiwgCisgICAgMTA2MDExLCAxMDYwMTYsIDEwNjAyMSwgMTA2MDI2LCAxMDYwMzEsIDEwNjAzNywgMTA2MDQyLCAxMDYwNDgsIDEwNjA1MywgCisgICAgMTA2MDU5LCAxMDYwNjQsIDEwNjA3MCwgMTA2MDc2LCAxMDYwODAsIDEwNjA4NSwgMTA2MDg5LCAwLCAxMDYwOTMsIAorICAgIDEwNjA5OCwgMTA2MTAyLCAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI3LCAxMDYxMzEsIAorICAgIDEwNjEzNiwgMTA2MTQxLCAxMDYxNDUsIDEwNjE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA2MTU1LCAxMDYxNTksIDEwNjE2MywgMTA2MTY3LCAxMDYxNzEsIDEwNjE3NSwgMTA2MTc5LCAxMDYxODQsIDEwNjE4OSwgCisgICAgMTA2MTk0LCAxMDYxOTksIDEwNjIwNCwgMTA2MjA5LCAxMDYyMTQsIDEwNjIxOSwgMTA2MjI0LCAxMDYyMjksIDEwNjIzNCwgCisgICAgMTA2MjM5LCAxMDYyNDQsIDEwNjI0OSwgMTA2MjU0LCAxMDYyNTksIDEwNjI2NCwgMTA2MjY4LCAxMDYyNzIsIDEwNjI3NywgCisgICAgMTA2MjgyLCAxMDYyODcsIDEwNjI5MSwgMTA2Mjk2LCAxMDYzMDAsIDEwNjMwNSwgMTA2MzEwLCAxMDYzMTQsIDEwNjMxOSwgCisgICAgMTA2MzI0LCAxMDYzMjksIDEwNjMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2MzM5LCAxMDYzNDMsIAorICAgIDEwNjM0NywgMTA2MzUxLCAxMDYzNTQsIDEwNjM1OCwgMTA2MzYxLCAxMDYzNjUsIDEwNjM2OCwgMTA2MzcyLCAxMDYzNzYsIAorICAgIDEwNjM4MSwgMTA2Mzg1LCAxMDYzOTAsIDEwNjM5MywgMTA2Mzk3LCAxMDY0MDAsIDEwNjQwNCwgMTA2NDA3LCAxMDY0MTEsIAorICAgIDEwNjQxNSwgMTA2NDE5LCAxMDY0MjMsIDEwNjQyNywgMTA2NDMxLCAxMDY0MzUsIDEwNjQzOSwgMTA2NDQzLCAxMDY0NDcsIAorICAgIDEwNjQ1MSwgMTA2NDU1LCAxMDY0NTksIDEwNjQ2MywgMTA2NDY3LCAxMDY0NzEsIDEwNjQ3NSwgMTA2NDc5LCAxMDY0ODIsIAorICAgIDEwNjQ4NSwgMTA2NDg5LCAxMDY0OTMsIDEwNjQ5NywgMTA2NTAwLCAxMDY1MDMsIDEwNjUwNywgMTA2NTEwLCAxMDY1MTQsIAorICAgIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgMTA2NTMzLCAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ3LCAxMDY1NTEsIAorICAgIDEwNjU1NiwgMTA2NTYxLCAxMDY1NjcsIDEwNjU3MiwgMTA2NTc4LCAxMDY1ODIsIDEwNjU4NywgMTA2NTkxLCAxMDY1OTYsIAorICAgIDEwNjYwMCwgMTA2NjA0LCAxMDY2MDgsIDEwNjYxMiwgMTA2NjE1LCAxMDY2MTgsIDEwNjYyMiwgMTA2NjI2LCAxMDY2MjksIAorICAgIDEwNjYzMywgMTA2NjM3LCAxMDY2NDEsIDEwNjY0OCwgMCwgMCwgMTA2NjUyLCAxMDY2NTYsIDEwNjY1OSwgMTA2NjYyLCAKKyAgICAxMDY2NjUsIDEwNjY2OCwgMTA2NjcxLCAxMDY2NzQsIDEwNjY3OCwgMTA2NjgxLCAxMDY2ODUsIDEwNjY4OCwgMTA2NjkyLCAKKyAgICAxMDY2OTUsIDEwNjY5OSwgMTA2NzA0LCAwLCAxMDY3MDksIDEwNjcxNCwgMTA2NzE5LCAxMDY3MjQsIDEwNjcyOSwgCisgICAgMTA2NzM0LCAxMDY3MzksIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgMTA2NzY4LCAxMDY3NzQsIDEwNjc4MCwgCisgICAgMTA2Nzg2LCAxMDY3OTIsIDEwNjc5OCwgMTA2ODA0LCAxMDY4MTAsIDEwNjgxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA2ODI0LCAxMDY4MjgsIDEwNjgzMywgMTA2ODM3LCAxMDY4NDEsIDEwNjg0NSwgMTA2ODUwLCAxMDY4NTQsIAorICAgIDEwNjg1OSwgMTA2ODYzLCAxMDY4NjgsIDEwNjg3MywgMTA2ODc4LCAxMDY4ODMsIDEwNjg4OCwgMTA2ODkzLCAxMDY4OTgsIAorICAgIDEwNjkwMywgMCwgMTA2OTA4LCAxMDY5MTMsIDEwNjkxOCwgMTA2OTIzLCAxMDY5MjgsIDEwNjkzMywgMTA2OTM4LCAKKyAgICAxMDY5NDMsIDEwNjk0OCwgMTA2OTUzLCAxMDY5NTgsIDEwNjk2MywgMTA2OTY3LCAxMDY5NzEsIDEwNjk3NiwgMTA2OTgxLCAKKyAgICAxMDY5ODYsIDEwNjk5MSwgMTA2OTk1LCAxMDY5OTksIDEwNzAwNCwgMTA3MDA4LCAxMDcwMTMsIDEwNzAxOCwgMTA3MDIyLCAKKyAgICAxMDcwMjcsIDEwNzAzMywgMTA3MDM4LCAxMDcwNDQsIDEwNzA0OSwgMTA3MDU0LCAxMDcwNjAsIDEwNzA2NSwgMTA3MDcxLCAKKyAgICAxMDcwNzYsIDEwNzA4MSwgMTA3MDg2LCAxMDcwOTEsIDEwNzA5NSwgMTA3MTAwLCAxMDcxMDYsIDEwNzExMSwgMTA3MTE3LCAKKyAgICAxMDcxMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEyNywgMTA3MTMxLCAKKyAgICAxMDcxMzUsIDEwNzEzOSwgMTA3MTQzLCAxMDcxNDcsIDEwNzE1MiwgMCwgMTA3MTU3LCAwLCAxMDcxNjIsIDEwNzE2NywgCisgICAgMTA3MTcyLCAxMDcxNzcsIDAsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5NywgMTA3MjAyLCAxMDcyMDcsIAorICAgIDEwNzIxMiwgMTA3MjE3LCAxMDcyMjIsIDEwNzIyNywgMTA3MjMyLCAxMDcyMzcsIDEwNzI0MSwgMTA3MjQ1LCAxMDcyNTAsIAorICAgIDAsIDEwNzI1NSwgMTA3MjYwLCAxMDcyNjQsIDEwNzI2OCwgMTA3MjczLCAxMDcyNzcsIDEwNzI4MiwgMTA3Mjg3LCAKKyAgICAxMDcyOTEsIDEwNzI5NiwgMTA3MzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDczMDYsIDEwNzMxMCwgMTA3MzE1LCAxMDczMTksIAorICAgIDEwNzMyNCwgMTA3MzI4LCAxMDczMzMsIDEwNzMzNywgMTA3MzQyLCAxMDczNDYsIDEwNzM1MSwgMTA3MzU1LCAxMDczNjAsIAorICAgIDEwNzM2NSwgMTA3MzcwLCAxMDczNzUsIDEwNzM4MCwgMTA3Mzg1LCAxMDczOTAsIDEwNzM5NSwgMTA3NDAwLCAxMDc0MDUsIAorICAgIDEwNzQxMCwgMTA3NDE1LCAxMDc0MjAsIDEwNzQyNSwgMTA3NDMwLCAxMDc0MzUsIDEwNzQ0MCwgMTA3NDQ1LCAxMDc0NTAsIAorICAgIDEwNzQ1NSwgMTA3NDYwLCAxMDc0NjUsIDEwNzQ2OSwgMTA3NDczLCAxMDc0NzgsIDEwNzQ4MywgMTA3NDg4LCAxMDc0OTMsIAorICAgIDEwNzQ5NywgMTA3NTAxLCAxMDc1MDYsIDEwNzUxMCwgMTA3NTE1LCAxMDc1MjAsIDEwNzUyNSwgMTA3NTI5LCAxMDc1MzQsIAorICAgIDEwNzU0MCwgMTA3NTQ1LCAxMDc1NTEsIDEwNzU1NiwgMTA3NTYyLCAxMDc1NjcsIDEwNzU3MywgMTA3NTc4LCAxMDc1ODQsIAorICAgIDEwNzU4OSwgMCwgMCwgMCwgMCwgMCwgMTA3NTk0LCAxMDc1OTksIDEwNzYwMywgMTA3NjA3LCAxMDc2MTEsIDEwNzYxNSwgCisgICAgMTA3NjE5LCAxMDc2MjMsIDEwNzYyOCwgMTA3NjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc2MzcsIDEwNzY0NCwgMTA3NjQ5LCAKKyAgICAxMDc2NTQsIDAsIDEwNzY1OSwgMTA3NjYzLCAxMDc2NjgsIDEwNzY3MiwgMTA3Njc3LCAxMDc2ODEsIDEwNzY4NiwgCisgICAgMTA3NjkxLCAwLCAwLCAxMDc2OTYsIDEwNzcwMSwgMCwgMCwgMTA3NzA2LCAxMDc3MTEsIDEwNzcxNiwgMTA3NzIwLCAKKyAgICAxMDc3MjUsIDEwNzczMCwgMTA3NzM1LCAxMDc3NDAsIDEwNzc0NSwgMTA3NzUwLCAxMDc3NTUsIDEwNzc2MCwgMTA3NzY1LCAKKyAgICAxMDc3NzAsIDEwNzc3NSwgMTA3NzgwLCAxMDc3ODUsIDEwNzc5MCwgMTA3Nzk1LCAxMDc4MDAsIDEwNzgwNSwgMTA3ODEwLCAKKyAgICAwLCAxMDc4MTQsIDEwNzgxOCwgMTA3ODIzLCAxMDc4MjgsIDEwNzgzMywgMTA3ODM3LCAxMDc4NDEsIDAsIDEwNzg0NiwgCisgICAgMTA3ODUwLCAwLCAxMDc4NTUsIDEwNzg2MCwgMTA3ODY1LCAxMDc4NzAsIDEwNzg3NSwgMCwgMCwgMTA3ODc5LCAxMDc4ODQsIAorICAgIDEwNzg4OSwgMTA3ODk1LCAxMDc5MDAsIDEwNzkwNiwgMTA3OTExLCAxMDc5MTcsIDEwNzkyMywgMCwgMCwgMTA3OTMwLCAKKyAgICAxMDc5MzYsIDAsIDAsIDEwNzk0MiwgMTA3OTQ4LCAxMDc5NTQsIDAsIDAsIDEwNzk1OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3OTYzLCAwLCAwLCAwLCAwLCAwLCAxMDc5NzAsIDEwNzk3NSwgMTA3OTgyLCAxMDc5OTAsIDEwNzk5NiwgMTA4MDAyLCAKKyAgICAxMDgwMDgsIDAsIDAsIDEwODAxNSwgMTA4MDIxLCAxMDgwMjYsIDEwODAzMSwgMTA4MDM2LCAxMDgwNDEsIDEwODA0NiwgMCwgCisgICAgMCwgMCwgMTA4MDUxLCAxMDgwNTYsIDEwODA2MSwgMTA4MDY2LCAxMDgwNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODA3NywgMTA4MDgwLCAxMDgwODQsIDEwODA4NywgMTA4MDkxLCAKKyAgICAxMDgwOTQsIDEwODA5OCwgMTA4MTAyLCAxMDgxMDcsIDEwODExMSwgMTA4MTE2LCAxMDgxMTksIDEwODEyMywgMTA4MTI2LCAKKyAgICAxMDgxMzAsIDEwODEzMywgMTA4MTM3LCAxMDgxNDEsIDEwODE0NSwgMTA4MTQ5LCAxMDgxNTMsIDEwODE1NywgMTA4MTYxLCAKKyAgICAxMDgxNjUsIDEwODE2OSwgMTA4MTczLCAxMDgxNzcsIDEwODE4MSwgMTA4MTg1LCAxMDgxODksIDEwODE5MywgMTA4MTk3LCAKKyAgICAxMDgyMDEsIDEwODIwNSwgMTA4MjA5LCAxMDgyMTMsIDEwODIxNiwgMTA4MjIwLCAxMDgyMjMsIDEwODIyNywgMTA4MjMxLCAKKyAgICAxMDgyMzUsIDEwODIzOCwgMTA4MjQyLCAxMDgyNDUsIDEwODI0OSwgMTA4MjUzLCAxMDgyNTYsIDEwODI2MCwgMTA4MjY0LCAKKyAgICAxMDgyNjgsIDEwODI3MiwgMTA4Mjc2LCAxMDgyNzksIDEwODI4NCwgMTA4Mjg4LCAxMDgyOTMsIDEwODI5NywgMTA4MzAyLCAKKyAgICAxMDgzMDcsIDEwODMxMywgMTA4MzE4LCAxMDgzMjQsIDEwODMyOCwgMTA4MzMzLCAxMDgzMzcsIDEwODM0MiwgMTA4MzQ2LCAKKyAgICAxMDgzNTAsIDEwODM1NCwgMTA4MzU4LCAxMDgzNjIsIDEwODM2NiwgMTA4MzcxLCAxMDgzNzQsIDEwODM3NywgMTA4MzgwLCAKKyAgICAxMDgzODQsIDEwODM4NywgMTA4MzkyLCAxMDgzOTYsIDEwODQwMCwgMTA4NDAzLCAxMDg0MDYsIDEwODQwOSwgMTA4NDEyLCAKKyAgICAxMDg0MTUsIDEwODQxOCwgMTA4NDIyLCAxMDg0MjUsIDAsIDEwODQyOSwgMCwgMTA4NDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDg0MzcsIDEwODQ0MSwgMTA4NDQ1LCAxMDg0NTAsIDEwODQ1NCwgMTA4NDU5LCAxMDg0NjMsIAorICAgIDEwODQ2OCwgMTA4NDczLCAxMDg0NzksIDEwODQ4NCwgMTA4NDkwLCAxMDg0OTQsIDEwODQ5OSwgMTA4NTAzLCAxMDg1MDgsIAorICAgIDEwODUxMiwgMTA4NTE3LCAxMDg1MjIsIDEwODUyNywgMTA4NTMyLCAxMDg1MzcsIDEwODU0MiwgMTA4NTQ3LCAxMDg1NTIsIAorICAgIDEwODU1NywgMTA4NTYyLCAxMDg1NjcsIDEwODU3MiwgMTA4NTc3LCAxMDg1ODIsIDEwODU4NywgMTA4NTkyLCAxMDg1OTcsIAorICAgIDEwODYwMiwgMTA4NjA2LCAxMDg2MTAsIDEwODYxNSwgMTA4NjIwLCAxMDg2MjUsIDEwODYyOSwgMTA4NjMzLCAxMDg2MzgsIAorICAgIDEwODY0MiwgMTA4NjQ3LCAxMDg2NTIsIDEwODY1NywgMTA4NjYyLCAxMDg2NjYsIDEwODY3MiwgMTA4Njc3LCAxMDg2ODMsIAorICAgIDEwODY4OCwgMTA4Njk0LCAxMDg3MDAsIDEwODcwNywgMTA4NzEzLCAxMDg3MjAsIDEwODcyNSwgMTA4NzMyLCAxMDg3MzgsIAorICAgIDEwODc0MywgMTA4NzUwLCAxMDg3NTYsIDEwODc2MSwgMTA4NzY2LCAxMDg3NzEsIDEwODc3NiwgMTA4NzgxLCAxMDg3ODYsIAorICAgIDEwODc5MCwgMTA4Nzk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDg3OTksIDEwODgwNCwgMTA4ODA4LCAxMDg4MTIsIAorICAgIDEwODgxNiwgMTA4ODIwLCAxMDg4MjQsIDEwODgyOCwgMTA4ODMzLCAxMDg4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwNjc2NywgMTA2NzcxLCAxMDY3NzUsIDEwNjc4MCwgMTA2Nzg0LCAxMDY3ODksIDEwNjc5MywgMTA2Nzk4LCAKLSAgICAxMDY4MDMsIDEwNjgwOSwgMTA2ODE0LCAxMDY4MjAsIDEwNjgyNCwgMTA2ODI5LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQyLCAKLSAgICAxMDY4NDcsIDEwNjg1MiwgMTA2ODU3LCAxMDY4NjIsIDEwNjg2NywgMTA2ODcyLCAxMDY4NzcsIDEwNjg4MiwgMTA2ODg3LCAKLSAgICAxMDY4OTIsIDEwNjg5NywgMTA2OTAyLCAxMDY5MDcsIDEwNjkxMiwgMTA2OTE3LCAxMDY5MjIsIDEwNjkyNywgMTA2OTMyLCAKLSAgICAxMDY5MzcsIDEwNjk0MSwgMTA2OTQ2LCAxMDY5NTEsIDEwNjk1NiwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTc0LCAKLSAgICAxMDY5NzksIDEwNjk4NCwgMTA2OTg5LCAxMDY5OTQsIDEwNjk5OCwgMTA3MDA0LCAxMDcwMDksIDEwNzAxNSwgMTA3MDIwLCAKLSAgICAxMDcwMjYsIDEwNzAzMiwgMTA3MDM5LCAxMDcwNDUsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjQsIDEwNzA3MCwgMTA3MDc1LCAKLSAgICAxMDcwODIsIDEwNzA4OCwgMTA3MDkzLCAxMDcwOTgsIDEwNzEwMywgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIyLCAKLSAgICAxMDcxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDAsIDEwNzE0NCwgMTA3MTQ4LCAKLSAgICAxMDcxNTIsIDEwNzE1NiwgMTA3MTYwLCAxMDcxNjUsIDEwNzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4ODQyLCAxMDg4NDUsIDEwODg0OSwgMTA4ODUyLCAKKyAgICAxMDg4NTYsIDEwODg1OSwgMTA4ODYzLCAxMDg4NjcsIDEwODg3MiwgMTA4ODc2LCAxMDg4ODEsIDEwODg4NCwgMTA4ODg4LCAKKyAgICAxMDg4OTEsIDEwODg5NSwgMTA4ODk4LCAxMDg5MDIsIDEwODkwNiwgMTA4OTEwLCAxMDg5MTQsIDEwODkxOCwgMTA4OTIyLCAKKyAgICAxMDg5MjYsIDEwODkzMCwgMTA4OTM0LCAxMDg5MzgsIDEwODk0MiwgMTA4OTQ2LCAxMDg5NTAsIDEwODk1NCwgMTA4OTU4LCAKKyAgICAxMDg5NjIsIDEwODk2NiwgMTA4OTcwLCAxMDg5NzMsIDEwODk3NiwgMTA4OTgwLCAxMDg5ODQsIDEwODk4OCwgMTA4OTkxLCAKKyAgICAxMDg5OTQsIDEwODk5OCwgMTA5MDAxLCAxMDkwMDUsIDEwOTAwOSwgMTA5MDEzLCAxMDkwMTcsIDEwOTAyMCwgMTA5MDI1LCAKKyAgICAxMDkwMjksIDEwOTAzNCwgMTA5MDM4LCAxMDkwNDMsIDEwOTA0OCwgMCwgMCwgMTA5MDU0LCAxMDkwNTgsIDEwOTA2MywgCisgICAgMTA5MDY3LCAxMDkwNzIsIDEwOTA3NiwgMTA5MDgwLCAxMDkwODQsIDEwOTA4OCwgMTA5MDkyLCAxMDkwOTYsIDEwOTA5OSwgCisgICAgMTA5MTAzLCAxMDkxMDgsIDEwOTExMiwgMTA5MTE3LCAxMDkxMjIsIDEwOTEyNywgMTA5MTM0LCAxMDkxNDYsIDEwOTE1OCwgCisgICAgMTA5MTcwLCAxMDkxODMsIDEwOTE5NywgMTA5MjA0LCAxMDkyMTQsIDEwOTIyMiwgMTA5MjMxLCAxMDkyNDAsIDEwOTI0OSwgCisgICAgMTA5MjU5LCAxMDkyNzAsIDEwOTI4MiwgMTA5Mjg5LCAxMDkyOTYsIDEwOTMwNCwgMTA5MzA5LCAxMDkzMTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzE3NCwgMTA3MTc3LCAxMDcxODEsIDEwNzE4NCwgMTA3MTg4LCAKLSAgICAxMDcxOTEsIDEwNzE5NSwgMTA3MTk5LCAxMDcyMDQsIDEwNzIwOCwgMTA3MjEzLCAxMDcyMTYsIDEwNzIyMCwgMTA3MjIzLCAKLSAgICAxMDcyMjcsIDEwNzIzMCwgMTA3MjM0LCAxMDcyMzgsIDEwNzI0MiwgMTA3MjQ2LCAxMDcyNTAsIDEwNzI1NCwgMTA3MjU4LCAKLSAgICAxMDcyNjIsIDEwNzI2NiwgMTA3MjcwLCAxMDcyNzQsIDEwNzI3OCwgMTA3MjgyLCAxMDcyODYsIDEwNzI5MCwgMTA3Mjk0LCAKLSAgICAxMDcyOTgsIDEwNzMwMiwgMTA3MzA2LCAxMDczMDksIDEwNzMxMywgMTA3MzE3LCAxMDczMjEsIDEwNzMyNCwgMTA3MzI3LCAKLSAgICAxMDczMzEsIDEwNzMzNSwgMTA3MzM5LCAxMDczNDMsIDEwNzM0NywgMTA3MzUxLCAxMDczNTQsIDEwNzM1OSwgMTA3MzYzLCAKLSAgICAxMDczNjgsIDEwNzM3MiwgMTA3Mzc3LCAxMDczODIsIDAsIDAsIDEwNzM4OCwgMTA3MzkyLCAxMDczOTcsIDEwNzQwMSwgCi0gICAgMTA3NDA2LCAxMDc0MTAsIDEwNzQxNCwgMTA3NDE4LCAxMDc0MjIsIDEwNzQyNiwgMTA3NDMwLCAxMDc0MzMsIDEwNzQzNywgCi0gICAgMTA3NDQyLCAxMDc0NDYsIDEwNzQ1MSwgMTA3NDU2LCAxMDc0NjEsIDEwNzQ2OCwgMTA3NDgwLCAxMDc0OTIsIDEwNzUwNCwgCi0gICAgMTA3NTE3LCAxMDc1MzEsIDEwNzUzOCwgMTA3NTQ4LCAxMDc1NTYsIDEwNzU2NSwgMTA3NTc0LCAxMDc1ODMsIDEwNzU5MywgCi0gICAgMTA3NjA0LCAxMDc2MTYsIDEwNzYyMywgMTA3NjMwLCAxMDc2MzgsIDEwNzY0MywgMTA3NjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDkzMjIsIDEwOTMyNiwgMTA5MzMxLCAxMDkzMzUsIDEwOTM0MCwgMTA5MzQ0LCAKKyAgICAxMDkzNDksIDEwOTM1NCwgMTA5MzYwLCAxMDkzNjUsIDEwOTM3MSwgMTA5Mzc1LCAxMDkzODAsIDEwOTM4NCwgMTA5Mzg5LCAKKyAgICAxMDkzOTMsIDEwOTM5OCwgMTA5NDAzLCAxMDk0MDgsIDEwOTQxMywgMTA5NDE4LCAxMDk0MjMsIDEwOTQyOCwgMTA5NDMzLCAKKyAgICAxMDk0MzgsIDEwOTQ0MywgMTA5NDQ4LCAxMDk0NTMsIDEwOTQ1OCwgMTA5NDYzLCAxMDk0NjgsIDEwOTQ3MywgMTA5NDc4LCAKKyAgICAxMDk0ODMsIDEwOTQ4NywgMTA5NDkxLCAxMDk0OTYsIDEwOTUwMSwgMTA5NTA2LCAxMDk1MTAsIDEwOTUxNCwgMTA5NTE5LCAKKyAgICAxMDk1MjMsIDEwOTUyOCwgMTA5NTMzLCAxMDk1MzgsIDEwOTU0MywgMTA5NTQ3LCAxMDk1NTIsIDEwOTU1OCwgMTA5NTYzLCAKKyAgICAxMDk1NjksIDEwOTU3NCwgMTA5NTgwLCAxMDk1ODYsIDEwOTU5MywgMTA5NTk5LCAxMDk2MDYsIDEwOTYxMSwgMTA5NjE3LCAKKyAgICAxMDk2MjIsIDEwOTYyOCwgMTA5NjMzLCAxMDk2MzgsIDEwOTY0MywgMTA5NjQ4LCAxMDk2NTIsIDEwOTY1NywgMTA5NjYyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk2NjcsIDEwOTY3MiwgMTA5Njc2LCAxMDk2ODAsIDEwOTY4NCwgCisgICAgMTA5Njg4LCAxMDk2OTIsIDEwOTY5NiwgMTA5NzAxLCAxMDk3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTcxMCwgMTA5NzE2LCAKKyAgICAxMDk3MjEsIDEwOTcyOCwgMTA5NzM2LCAxMDk3NDMsIDEwOTc1MSwgMTA5NzYwLCAxMDk3NjUsIDEwOTc3NCwgMTA5Nzc5LCAKKyAgICAxMDk3ODcsIDEwOTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA5ODA3LCAxMDk4MTEsIDEwOTgxNiwgMTA5ODIwLCAxMDk4MjUsIDEwOTgyOSwgMTA5ODM0LCAxMDk4MzgsIDEwOTg0MywgCisgICAgMTA5ODQ3LCAxMDk4NTIsIDEwOTg1NiwgMTA5ODYxLCAxMDk4NjYsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODEsIDEwOTg4NiwgCisgICAgMTA5ODkxLCAxMDk4OTYsIDEwOTkwMSwgMTA5OTA2LCAxMDk5MTEsIDEwOTkxNiwgMTA5OTIxLCAxMDk5MjYsIDEwOTkzMSwgCisgICAgMTA5OTM2LCAxMDk5NDEsIDEwOTk0NiwgMTA5OTUwLCAxMDk5NTQsIDEwOTk1OSwgMTA5OTY0LCAxMDk5NjksIDEwOTk3MywgCisgICAgMTA5OTc3LCAxMDk5ODIsIDEwOTk4NiwgMTA5OTkxLCAxMDk5OTYsIDExMDAwMSwgMTEwMDA1LCAxMTAwMTAsIDExMDAxNSwgCisgICAgMTEwMDIwLCAxMTAwMjYsIDExMDAzMSwgMTEwMDM3LCAxMTAwNDIsIDExMDA0OCwgMTEwMDUzLCAxMTAwNTksIDExMDA2NCwgCisgICAgMTEwMDcwLCAxMTAwNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDA4MCwgMTEwMDg1LCAxMTAwODksIDExMDA5MywgCisgICAgMTEwMDk3LCAxMTAxMDEsIDExMDEwNSwgMTEwMTA5LCAxMTAxMTQsIDExMDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA3NjU2LCAxMDc2NjAsIDEwNzY2NSwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OCwgMTA3NjgzLCAKLSAgICAxMDc2ODgsIDEwNzY5NCwgMTA3Njk5LCAxMDc3MDUsIDEwNzcwOSwgMTA3NzE0LCAxMDc3MTgsIDEwNzcyMywgMTA3NzI3LCAKLSAgICAxMDc3MzIsIDEwNzczNywgMTA3NzQyLCAxMDc3NDcsIDEwNzc1MiwgMTA3NzU3LCAxMDc3NjIsIDEwNzc2NywgMTA3NzcyLCAKLSAgICAxMDc3NzcsIDEwNzc4MiwgMTA3Nzg3LCAxMDc3OTIsIDEwNzc5NywgMTA3ODAyLCAxMDc4MDcsIDEwNzgxMiwgMTA3ODE3LCAKLSAgICAxMDc4MjIsIDEwNzgyNiwgMTA3ODMxLCAxMDc4MzYsIDEwNzg0MSwgMTA3ODQ1LCAxMDc4NDksIDEwNzg1NCwgMTA3ODU5LCAKLSAgICAxMDc4NjQsIDEwNzg2OSwgMTA3ODc0LCAxMDc4NzksIDEwNzg4MywgMTA3ODg4LCAxMDc4OTQsIDEwNzg5OSwgMTA3OTA1LCAKLSAgICAxMDc5MTAsIDEwNzkxNiwgMTA3OTIyLCAxMDc5MjksIDEwNzkzNSwgMTA3OTQyLCAxMDc5NDcsIDEwNzk1MywgMTA3OTU4LCAKLSAgICAxMDc5NjQsIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTg4LCAxMDc5OTMsIDEwNzk5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDAzLCAxMDgwMDgsIDEwODAxMiwgMTA4MDE2LCAxMDgwMjAsIDEwODAyNCwgCi0gICAgMTA4MDI4LCAxMDgwMzIsIDEwODAzNywgMTA4MDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAxMjMsIAorICAgIDExMDEyNywgMTEwMTMyLCAxMTAxMzcsIDExMDE0MSwgMTEwMTQ2LCAxMTAxNTMsIDExMDE1NywgMTEwMTYyLCAxMTAxNjcsIAorICAgIDExMDE3MSwgMTEwMTc2LCAxMTAxODEsIDExMDE4NiwgMTEwMTkxLCAxMTAxOTUsIDExMDIwMCwgMTEwMjA1LCAxMTAyMDksIAorICAgIDExMDIxMywgMTEwMjE4LCAxMTAyMjMsIDExMDIyOCwgMTEwMjM1LCAxMTAyNDAsIDExMDI0NSwgMCwgMCwgMCwgMTEwMjUwLCAKKyAgICAxMTAyNTYsIDExMDI2MywgMTEwMjcyLCAxMTAyNzcsIDExMDI4MywgMTEwMjg4LCAxMTAyOTQsIDExMDI5OSwgMTEwMzA1LCAKKyAgICAxMTAzMTAsIDExMDMxNiwgMTEwMzIxLCAxMTAzMjcsIDExMDMzMywgMCwgMCwgMCwgMCwgMTEwMzM4LCAxMTAzNDMsIAorICAgIDExMDM0NywgMTEwMzUxLCAxMTAzNTUsIDExMDM1OSwgMTEwMzYzLCAxMTAzNjcsIDExMDM3MiwgMTEwMzc2LCAxMTAzODEsIAorICAgIDExMDM4NiwgMTEwMzkxLCAxMTAzOTcsIDExMDQwMiwgMTEwNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDgwNDYsIDEwODA1MCwgMTA4MDU1LCAxMDgwNTksIDEwODA2NCwgMTA4MDY4LCAxMDgwNzMsIDEwODA3NywgMTA4MDgyLCAKLSAgICAxMDgwODYsIDEwODA5MSwgMTA4MDk1LCAxMDgxMDAsIDEwODEwNSwgMTA4MTEwLCAxMDgxMTUsIDEwODEyMCwgMTA4MTI1LCAKLSAgICAxMDgxMzAsIDEwODEzNSwgMTA4MTQwLCAxMDgxNDUsIDEwODE1MCwgMTA4MTU1LCAxMDgxNjAsIDEwODE2NSwgMTA4MTcwLCAKLSAgICAxMDgxNzUsIDEwODE4MCwgMTA4MTg1LCAxMDgxOTAsIDEwODE5NCwgMTA4MTk5LCAxMDgyMDQsIDEwODIwOSwgMTA4MjEzLCAKLSAgICAxMDgyMTcsIDEwODIyMiwgMTA4MjI3LCAxMDgyMzIsIDEwODIzNywgMTA4MjQyLCAxMDgyNDYsIDEwODI1MSwgMTA4MjU2LCAKLSAgICAxMDgyNjEsIDEwODI2NywgMTA4MjcyLCAxMDgyNzgsIDEwODI4MywgMTA4Mjg5LCAxMDgyOTQsIDEwODMwMCwgMTA4MzA1LCAKLSAgICAxMDgzMTEsIDEwODMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzIxLCAxMDgzMjYsIDEwODMzMCwgMTA4MzM0LCAKLSAgICAxMDgzMzgsIDEwODM0MiwgMTA4MzQ2LCAxMDgzNTAsIDEwODM1NSwgMTA4MzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzNjQsIAotICAgIDEwODM2OCwgMTA4MzczLCAxMDgzNzgsIDEwODM4MywgMTA4Mzg4LCAxMDgzOTUsIDEwODM5OSwgMTA4NDA0LCAxMDg0MDksIAotICAgIDEwODQxMywgMTA4NDE4LCAxMDg0MjMsIDEwODQyOCwgMTA4NDMzLCAxMDg0MzgsIDEwODQ0MywgMTA4NDQ4LCAxMDg0NTIsIAotICAgIDEwODQ1NiwgMTA4NDYxLCAxMDg0NjYsIDEwODQ3MSwgMTA4NDc4LCAxMDg0ODMsIDEwODQ4OCwgMCwgMCwgMCwgMTA4NDkzLCAKLSAgICAxMDg1MDAsIDEwODUwNywgMTA4NTE2LCAxMDg1MjEsIDEwODUyNywgMTA4NTMyLCAxMDg1MzgsIDEwODU0MywgMTA4NTQ5LCAKLSAgICAxMDg1NTQsIDEwODU2MCwgMTA4NTY1LCAxMDg1NzEsIDEwODU3NywgMCwgMCwgMCwgMCwgMTA4NTgyLCAxMDg1ODcsIAotICAgIDEwODU5MSwgMTA4NTk1LCAxMDg1OTksIDEwODYwMywgMTA4NjA3LCAxMDg2MTEsIDEwODYxNiwgMTA4NjIwLCAxMDg2MjUsIAotICAgIDEwODYzMCwgMTA4NjM1LCAxMDg2NDEsIDEwODY0NiwgMTA4NjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE4OTI0LDE3NSArMjAwNTksMTk1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTEwNDEyLCAxMTA0MjAsIDExMDQyNywgMTEwNDM1LCAxMTA0NDMsIDExMDQ1MCwgMTEwNDU4LCAKKyAgICAxMTA0NjYsIDExMDQ3NCwgMTEwNDgxLCAxMTA0ODgsIDExMDQ5NiwgMTEwNTA0LCAxMTA1MTIsIDExMDUyMCwgMTEwNTI4LCAKKyAgICAxMTA1MzYsIDExMDU0NCwgMTEwNTUyLCAxMTA1NjAsIDExMDU2OCwgMTEwNTc2LCAxMTA1ODQsIDExMDU5MiwgMTEwNjAwLCAKKyAgICAxMTA2MDgsIDExMDYxNiwgMTEwNjI0LCAxMTA2MzIsIDExMDY0MCwgMTEwNjQ4LCAxMTA2NTYsIDExMDY2NCwgMTEwNjcyLCAKKyAgICAxMTA2NzksIDExMDY4NywgMTEwNjk1LCAxMTA3MDIsIDExMDcxMCwgMTEwNzE4LCAxMTA3MjYsIDExMDczMywgMTEwNzQwLCAKKyAgICAxMTA3NDgsIDExMDc1NiwgMTEwNzY0LCAxMTA3NzIsIDExMDc4MCwgMTEwNzg4LCAxMTA3OTYsIDExMDgwNCwgMTEwODEyLCAKKyAgICAxMTA4MjAsIDExMDgyOCwgMTEwODM2LCAxMTA4NDQsIDExMDg1MiwgMTEwODYwLCAxMTA4NjgsIDExMDg3NiwgMTEwODg0LCAKKyAgICAxMTA4OTIsIDExMDkwMCwgMTEwOTA4LCAxMTA5MTYsIDExMDkyMywgMTEwOTI5LCAxMTA5MzUsIDExMDk0MSwgMTEwOTQ3LCAKKyAgICAxMTA5NTMsIDExMDk1OSwgMTEwOTY2LCAxMTA5NzIsIDExMDk3OSwgMTEwOTg2LCAxMTA5OTMsIDExMTAwMCwgMTExMDA3LCAKKyAgICAxMTEwMTQsIDExMTAyMSwgMTExMDI4LCAxMTEwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMTA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA4NjU2LCAxMDg2NjQsIDEwODY3MSwgMTA4Njc5LCAxMDg2ODcsIDEwODY5NCwgMTA4NzAyLCAKLSAgICAxMDg3MTAsIDEwODcxOCwgMTA4NzI1LCAxMDg3MzIsIDEwODc0MCwgMTA4NzQ4LCAxMDg3NTYsIDEwODc2NCwgMTA4NzcyLCAKLSAgICAxMDg3ODAsIDEwODc4OCwgMTA4Nzk2LCAxMDg4MDQsIDEwODgxMiwgMTA4ODIwLCAxMDg4MjgsIDEwODgzNiwgMTA4ODQ0LCAKLSAgICAxMDg4NTIsIDEwODg2MCwgMTA4ODY4LCAxMDg4NzYsIDEwODg4NCwgMTA4ODkyLCAxMDg5MDAsIDEwODkwOCwgMTA4OTE2LCAKLSAgICAxMDg5MjMsIDEwODkzMSwgMTA4OTM5LCAxMDg5NDYsIDEwODk1NCwgMTA4OTYyLCAxMDg5NzAsIDEwODk3NywgMTA4OTg0LCAKLSAgICAxMDg5OTIsIDEwOTAwMCwgMTA5MDA4LCAxMDkwMTYsIDEwOTAyNCwgMTA5MDMyLCAxMDkwNDAsIDEwOTA0OCwgMTA5MDU2LCAKLSAgICAxMDkwNjQsIDEwOTA3MiwgMTA5MDgwLCAxMDkwODgsIDEwOTA5NiwgMTA5MTA0LCAxMDkxMTIsIDEwOTEyMCwgMTA5MTI4LCAKLSAgICAxMDkxMzYsIDEwOTE0NCwgMTA5MTUyLCAxMDkxNjAsIDEwOTE2NywgMTA5MTczLCAxMDkxNzksIDEwOTE4NSwgMTA5MTkxLCAKLSAgICAxMDkxOTcsIDEwOTIwMywgMTA5MjEwLCAxMDkyMTYsIDEwOTIyMywgMTA5MjMwLCAxMDkyMzcsIDEwOTI0NCwgMTA5MjUxLCAKLSAgICAxMDkyNTgsIDEwOTI2NSwgMTA5MjcyLCAxMDkyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwOTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTExMDQ4LCAxMTEwNTYsIDExMTA2NCwgMTExMDcyLCAxMTEwODAsIDExMTA4OSwgMTExMDk4LCAxMTExMDcsIAorICAgIDExMTExNiwgMTExMTI0LCAxMTExMzMsIDExMTE0MiwgMTExMTUxLCAxMTExNjAsIDExMTE2OSwgMTExMTc4LCAxMTExODcsIAorICAgIDExMTE5NSwgMTExMjA0LCAxMTEyMTMsIDExMTIyMiwgMTExMjMxLCAxMTEyMzksIDExMTI0NywgMTExMjU1LCAxMTEyNjMsIAorICAgIDExMTI3MSwgMTExMjgwLCAxMTEyODksIDExMTI5OSwgMTExMzA5LCAxMTEzMTksIDExMTMyOSwgMTExMzM5LCAxMTEzNDgsIAorICAgIDExMTM1OCwgMTExMzY4LCAxMTEzNzgsIDExMTM4OSwgMTExMzk5LCAxMTE0MTEsIDExMTQyMywgMTExNDM0LCAxMTE0NDgsIAorICAgIDExMTQ1OSwgMTExNDY5LCAxMTE0ODEsIDExMTQ5MiwgMTExNTAyLCAxMTE1MTQsIDExMTUyNiwgMTExNTM3LCAxMTE1NDgsIAorICAgIDExMTU1OCwgMTExNTY4LCAxMTE1ODAsIDExMTU5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNjAzLCAxMTE2MDYsIAorICAgIDExMTYxMCwgMTExNjEzLCAxMTE2MTcsIDExMTYyMCwgMTExNjI0LCAxMTE2MjgsIDExMTYzMywgMCwgMTExNjM3LCAKKyAgICAxMTE2NDAsIDExMTY0NCwgMTExNjQ3LCAxMTE2NTEsIDExMTY1NCwgMTExNjU4LCAxMTE2NjIsIDExMTY2NiwgMTExNjcwLCAKKyAgICAxMTE2NzQsIDExMTY3OCwgMTExNjgyLCAxMTE2ODYsIDExMTY5MCwgMTExNjk0LCAxMTE2OTgsIDExMTcwMiwgMTExNzA2LCAKKyAgICAxMTE3MTAsIDExMTcxNCwgMTExNzE4LCAxMTE3MjIsIDExMTcyNiwgMTExNzI5LCAxMTE3MzIsIDExMTczNiwgMTExNzQwLCAKKyAgICAxMTE3NDQsIDExMTc0NywgMTExNzUwLCAxMTE3NTQsIDExMTc1NywgMTExNzYxLCAxMTE3NjUsIDExMTc2OSwgMTExNzczLCAKKyAgICAxMTE3NzYsIDExMTc4MSwgMTExNzg1LCAxMTE3OTAsIDExMTc5NCwgMTExNzk5LCAxMTE4MDQsIDExMTgxMCwgMCwgCisgICAgMTExODE1LCAxMTE4MTksIDExMTgyNCwgMTExODI4LCAxMTE4MzMsIDExMTgzNywgMTExODQxLCAxMTE4NDUsIDExMTg0OSwgCisgICAgMTExODUzLCAxMTE4NTYsIDExMTg2MCwgMTExODY1LCAxMTE4NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMTg3NSwgMTExODc5LCAxMTE4ODIsIDExMTg4NSwgMTExODg4LCAxMTE4OTEsIDExMTg5NCwgMTExODk3LCAxMTE5MDEsIAorICAgIDExMTkwNCwgMTExOTA4LCAxMTE5MTEsIDExMTkxNCwgMTExOTE3LCAxMTE5MjAsIDExMTkyMywgMTExOTI2LCAxMTE5MzAsIAorICAgIDExMTkzMywgMTExOTM3LCAxMTE5NDEsIDExMTk0NSwgMTExOTQ5LCAxMTE5NTMsIDExMTk1NywgMTExOTYxLCAxMTE5NjUsIAorICAgIDExMTk2OSwgMTExOTczLCAwLCAwLCAwLCAxMTE5NzksIDExMTk4NCwgMTExOTg5LCAxMTE5OTMsIDExMTk5OCwgMTEyMDAzLCAKKyAgICAxMTIwMDgsIDExMjAxMywgMTEyMDE4LCAxMTIwMjMsIDExMjAyOCwgMTEyMDMzLCAxMTIwMzgsIDExMjA0MywgMTEyMDQ3LCAKKyAgICAxMTIwNTEsIDExMjA1NiwgMTEyMDYxLCAxMTIwNjUsIDExMjA3MCwgMTEyMDc1LCAxMTIwODAsIDExMjA4NSwgMTEyMDkwLCAKKyAgICAxMTIwOTUsIDExMjEwMCwgMTEyMTA0LCAxMTIxMDksIDExMjExMywgMTEyMTE4LCAxMTIxMjMsIDExMjEyNywgMCwgMCwgCisgICAgMTEyMTMxLCAxMTIxMzcsIDExMjE0NCwgMTEyMTUxLCAxMTIxNTgsIDExMjE2NSwgMTEyMTcyLCAxMTIxNzksIDExMjE4NiwgCisgICAgMTEyMTkzLCAxMTIyMDAsIDExMjIwNywgMTEyMjEzLCAxMTIyMTksIDExMjIyNiwgMTEyMjMzLCAxMTIyMzksIDExMjI0NiwgCisgICAgMTEyMjUzLCAxMTIyNjAsIDExMjI2NywgMTEyMjc0LCAwLCAxMTIyODEsIDExMjI4NywgMTEyMjk0LCAxMTIzMDAsIAorICAgIDExMjMwNywgMTEyMzE0LCAxMTIzMjAsIDExMjMyNiwgMTEyMzMyLCAxMTIzMzcsIDExMjM0MiwgMTEyMzQ3LCAxMTIzNTIsIAorICAgIDExMjM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTA5MjkyLCAxMDkzMDAsIDEwOTMwOCwgMTA5MzE3LCAxMDkzMjUsIDEwOTMzNCwgMTA5MzQzLCAxMDkzNTIsIAotICAgIDEwOTM2MSwgMTA5MzY5LCAxMDkzNzgsIDEwOTM4NywgMTA5Mzk2LCAxMDk0MDUsIDEwOTQxNCwgMTA5NDIzLCAxMDk0MzIsIAotICAgIDEwOTQ0MSwgMTA5NDUwLCAxMDk0NTksIDEwOTQ2OCwgMTA5NDc3LCAxMDk0ODUsIDEwOTQ5MywgMTA5NTAxLCAxMDk1MDksIAotICAgIDEwOTUxNywgMTA5NTI2LCAxMDk1MzUsIDEwOTU0NSwgMTA5NTU1LCAxMDk1NjUsIDEwOTU3NSwgMTA5NTg1LCAxMDk1OTQsIAotICAgIDEwOTYwNCwgMTA5NjE0LCAxMDk2MjQsIDEwOTYzNSwgMTA5NjQ1LCAxMDk2NTcsIDEwOTY2OSwgMTA5NjgwLCAxMDk2OTQsIAotICAgIDEwOTcwNSwgMTA5NzE1LCAxMDk3MjcsIDEwOTczOCwgMTA5NzQ4LCAxMDk3NjAsIDEwOTc3MiwgMTA5NzgzLCAxMDk3OTQsIAotICAgIDEwOTgwNCwgMTA5ODE0LCAxMDk4MjYsIDEwOTgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5ODQ5LCAxMDk4NTIsIAotICAgIDEwOTg1NywgMTA5ODYzLCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgyLCAxMDk4OTAsIDEwOTg5NiwgMTA5OTAyLCAxMDk5MDYsIAotICAgIDEwOTkxMCwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMywgMTA5OTQyLCAxMDk5NDgsIDEwOTk1NywgMTA5OTY0LCAxMDk5NzEsIAotICAgIDEwOTk3OCwgMTA5OTg4LCAxMDk5OTQsIDEwOTk5OCwgMTEwMDA1LCAxMTAwMTQsIDExMDAyNCwgMTEwMDMxLCAxMTAwMzgsIAotICAgIDExMDA0MiwgMTEwMDQ2LCAxMTAwNTMsIDExMDA2MywgMTEwMDY3LCAxMTAwNzQsIDExMDA4MSwgMTEwMDg4LCAxMTAwOTQsIAotICAgIDExMDEwMSwgMTEwMTA4LCAxMTAxMTUsIDExMDEyMiwgMTEwMTI2LCAxMTAxMzAsIDExMDEzNCwgMTEwMTQxLCAxMTAxNDUsIAotICAgIDExMDE1MiwgMTEwMTU5LCAxMTAxNzMsIDExMDE4MiwgMTEwMTg2LCAxMTAxOTAsIDExMDE5NCwgMTEwMjAxLCAxMTAyMDUsIAotICAgIDExMDIwOSwgMTEwMjEzLCAxMTAyMjEsIDExMDIyOSwgMTEwMjQ4LCAxMTAyNTgsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIAotICAgIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgMTEwMzA2LCAxMTAzMTMsIDExMDMxNywgMTEwMzIwLCAxMTAzMjQsIAotICAgIDExMDMyOCwgMTEwMzM0LCAxMTAzNDEsIDExMDM1MCwgMTEwMzU0LCAxMTAzNjMsIDExMDM3MiwgMTEwMzgwLCAxMTAzODQsIAotICAgIDExMDM5MSwgMTEwMzk1LCAxMTAzOTksIDExMDQwMywgMTEwNDA3LCAxMTA0MTgsIDExMDQyNywgMTEwNDM2LCAxMTA0NDUsIAotICAgIDExMDQ1NCwgMTEwNDY2LCAxMTA0NzUsIDExMDQ4NCwgMTEwNDkzLCAxMTA1MDEsIDExMDUxMCwgMTEwNTIyLCAxMTA1MzEsIAotICAgIDExMDU0MCwgMTEwNTQ5LCAxMTA1NjEsIDExMDU3MCwgMTEwNTc5LCAxMTA1OTEsIDExMDYwMCwgMTEwNjA5LCAxMTA2MjEsIAotICAgIDExMDYzMCwgMTEwNjM0LCAxMTA2MzgsIDExMDY0MiwgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjUsIAotICAgIDExMDY2OSwgMTEwNjczLCAxMTA2ODQsIDExMDY4OCwgMTEwNjkyLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTUsIAotICAgIDExMDcyMiwgMTEwNzI2LCAxMTA3MzAsIDExMDczNCwgMTEwNzM4LCAxMTA3NDIsIDExMDc0NiwgMTEwNzUyLCAxMTA3NjAsIAotICAgIDExMDc2NCwgMTEwNzY4LCAxMTA3NzEsIDExMDc3NywgMTEwNzg3LCAxMTA3OTEsIDExMDgwMywgMTEwODEwLCAxMTA4MTcsIAotICAgIDExMDgyNCwgMTEwODMxLCAxMTA4MzcsIDExMDg0MSwgMTEwODQ1LCAxMTA4NDksIDExMDg1MywgMTEwODYwLCAxMTA4NjksIAotICAgIDExMDg3NiwgMTEwODg0LCAxMTA4OTIsIDExMDg5OCwgMTEwOTAyLCAxMTA5MDYsIDExMDkxMCwgMTEwOTE0LCAxMTA5MjAsIAotICAgIDExMDkyOSwgMTEwOTQxLCAxMTA5NDgsIDExMDk1NSwgMTEwOTY0LCAxMTA5NzUsIDExMDk4MSwgMTEwOTkwLCAxMTA5OTksIAotICAgIDExMTAwNiwgMTExMDE1LCAxMTEwMjIsIDExMTAyOSwgMTExMDM5LCAxMTEwNDYsIDExMTA1MywgMTExMDYwLCAxMTEwNjcsIAotICAgIDExMTA3MSwgMTExMDc3LCAxMTEwODEsIDExMTA5MiwgMTExMTAwLCAxMTExMDksIDExMTEyMSwgMTExMTI4LCAxMTExMzUsIAotICAgIDExMTE0NSwgMTExMTUyLCAxMTExNjIsIDExMTE2OSwgMTExMTc5LCAxMTExODYsIDExMTE5MywgMTExMjAzLCAxMTEyMTAsIAotICAgIDExMTIxNywgMTExMjI3LCAxMTEyMzQsIDExMTI0NiwgMTExMjU1LCAxMTEyNjIsIDExMTI2OSwgMTExMjc2LCAxMTEyODUsIAotICAgIDExMTI5NSwgMTExMzA4LCAxMTEzMTUsIDExMTMyNSwgMTExMzM1LCAxMTEzNDIsIDExMTM1MSwgMTExMzY0LCAxMTEzNzEsIAotICAgIDExMTM3OCwgMTExMzg1LCAxMTEzOTUsIDExMTQwNSwgMTExNDEyLCAxMTE0MjIsIDExMTQyOSwgMTExNDM2LCAxMTE0NDYsIAotICAgIDExMTQ1MiwgMTExNDU5LCAxMTE0NjYsIDExMTQ3MywgMTExNDgzLCAxMTE0OTAsIDExMTQ5NywgMTExNTA0LCAxMTE1MTAsIAotICAgIDExMTUxNywgMTExNTI3LCAxMTE1MzQsIDExMTUzOCwgMTExNTQ2LCAxMTE1NTAsIDExMTU2MiwgMTExNTY2LCAxMTE1ODAsIAotICAgIDExMTU4NCwgMTExNTg4LCAxMTE1OTIsIDExMTU5NiwgMTExNjAyLCAxMTE2MDksIDExMTYxNywgMTExNjIxLCAxMTE2MjUsIAotICAgIDExMTYyOSwgMTExNjMzLCAxMTE2NDAsIDExMTY0NCwgMTExNjUwLCAxMTE2NTYsIDExMTY2NCwgMTExNjY4LCAxMTE2NzUsIAotICAgIDExMTY4MywgMTExNjg3LCAxMTE2OTEsIDExMTY5NywgMTExNzAxLCAxMTE3MTAsIDExMTcxOSwgMTExNzI2LCAxMTE3MzYsIAotICAgIDExMTc0MiwgMTExNzQ2LCAxMTE3NTAsIDExMTc1OCwgMTExNzY1LCAxMTE3NzIsIDExMTc3OCwgMTExNzgyLCAxMTE3OTAsIAotICAgIDExMTc5NCwgMTExODAxLCAxMTE4MTMsIDExMTgyMCwgMTExODMwLCAxMTE4MzYsIDExMTg0MCwgMTExODQ5LCAxMTE4NTYsIAotICAgIDExMTg2NSwgMTExODY5LCAxMTE4NzMsIDExMTg4MCwgMTExODg0LCAxMTE4ODgsIDExMTg5MiwgMTExODk2LCAxMTE4OTksIAotICAgIDExMTkwNSwgMTExOTExLCAxMTE5MTUsIDExMTkxOSwgMTExOTI2LCAxMTE5MzMsIDExMTk0MCwgMTExOTQ3LCAxMTE5NTQsIAotICAgIDExMTk2MSwgMTExOTY4LCAxMTE5NzUsIDExMTk4MSwgMTExOTg1LCAxMTE5ODksIDExMTk5NiwgMTEyMDAzLCAxMTIwMTAsIAotICAgIDExMjAxNywgMTEyMDI0LCAxMTIwMjgsIDExMjAzMSwgMTEyMDM2LCAxMTIwNDAsIDExMjA0NCwgMTEyMDUzLCAxMTIwNjIsIAotICAgIDExMjA2NiwgMTEyMDcwLCAxMTIwNzYsIDExMjA4MiwgMTEyMDk5LCAxMTIxMDUsIDExMjEwOSwgMTEyMTE4LCAxMTIxMjIsIAotICAgIDExMjEyNiwgMTEyMTMzLCAxMTIxNDEsIDExMjE0OSwgMTEyMTU1LCAxMTIxNTksIDExMjE2MywgMTEyMTY3LCAxMTIxNzEsIAotICAgIDExMjE3NCwgMTEyMTgwLCAxMTIxODcsIDExMjE5NywgMTEyMjA0LCAxMTIyMTEsIDExMjIxOCwgMTEyMjI0LCAxMTIyMzEsIAotICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI1OSwgMTEyMjY4LCAxMTIyNzUsIDExMjI4NywgMTEyMjk0LCAxMTIzMDEsIAotICAgIDExMjMxMSwgMTEyMzIyLCAxMTIzMjksIDExMjMzNiwgMTEyMzQzLCAxMTIzNTAsIDExMjM1NywgMTEyMzY0LCAxMTIzNzEsIAotICAgIDExMjM3OCwgMTEyMzg1LCAxMTIzOTIsIDExMjQwMiwgMTEyNDEyLCAxMTI0MjIsIDExMjQyOSwgMTEyNDM5LCAxMTI0NDYsIAotICAgIDExMjQ1MywgMTEyNDYwLCAxMTI0NjcsIDExMjQ3NCwgMTEyNDgxLCAxMTI0ODgsIDExMjQ5NSwgMTEyNTAyLCAxMTI1MDksIAotICAgIDExMjUxNiwgMTEyNTIzLCAxMTI1MzAsIDExMjUzNiwgMTEyNTQzLCAxMTI1NTAsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzMsIAotICAgIDExMjU3NywgMTEyNTg1LCAxMTI1ODksIDExMjU5MywgMTEyNTk3LCAxMTI2MDEsIDExMjYwNSwgMTEyNjEyLCAxMTI2MTYsIAotICAgIDExMjYyNSwgMTEyNjI5LCAxMTI2MzYsIDExMjY0NCwgMTEyNjQ4LCAxMTI2NTIsIDExMjY1NiwgMTEyNjY5LCAxMTI2ODUsIAotICAgIDExMjY4OSwgMTEyNjkzLCAxMTI3MDAsIDExMjcwNiwgMTEyNzEzLCAxMTI3MTcsIDExMjcyMSwgMTEyNzI1LCAxMTI3MjksIAotICAgIDExMjczMywgMTEyNzQwLCAxMTI3NDQsIDExMjc2MiwgMTEyNzY2LCAxMTI3NzAsIDExMjc3NywgMTEyNzgxLCAxMTI3ODUsIAotICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODIzLCAxMTI4MjksIAotICAgIDExMjg0MCwgMTEyODQ5LCAxMTI4NTgsIDExMjg2NSwgMTEyODcyLCAxMTI4ODMsIDExMjg5MCwgMTEyODk3LCAxMTI5MDQsIAotICAgIDExMjkxMSwgMTEyOTE4LCAxMTI5MjUsIDExMjkzMiwgMTEyOTQyLCAxMTI5NDgsIDExMjk1NSwgMTEyOTY1LCAxMTI5NzQsIAotICAgIDExMjk4MSwgMTEyOTkwLCAxMTMwMDAsIDExMzAwNywgMTEzMDE0LCAxMTMwMjEsIDExMzAyOCwgMTEzMDQwLCAxMTMwNDcsIAotICAgIDExMzA1NCwgMTEzMDYxLCAxMTMwNjgsIDExMzA3NSwgMTEzMDg1LCAxMTMwOTIsIDExMzA5OSwgMTEzMTA5LCAxMTMxMjIsIAotICAgIDExMzEzNCwgMTEzMTQxLCAxMTMxNTEsIDExMzE1OCwgMTEzMTY1LCAxMTMxNzIsIDExMzE4NywgMTEzMTkzLCAxMTMyMDEsIAotICAgIDExMzIxMSwgMTEzMjIxLCAxMTMyMjgsIDExMzIzNSwgMTEzMjQxLCAxMTMyNDUsIDExMzI1MiwgMTEzMjYyLCAxMTMyNjgsIAotICAgIDExMzI4MSwgMTEzMjg1LCAxMTMyODksIDExMzI5NiwgMTEzMzAwLCAxMTMzMDcsIDExMzMxNywgMTEzMzIxLCAxMTMzMjUsIAotICAgIDExMzMyOSwgMTEzMzMzLCAxMTMzMzcsIDExMzM0NCwgMTEzMzQ4LCAxMTMzNTUsIDExMzM2MiwgMTEzMzY5LCAxMTMzNzgsIAotICAgIDExMzM4NywgMTEzMzk3LCAxMTM0MDQsIDExMzQxMSwgMTEzNDE4LCAxMTM0MjgsIDExMzQzNSwgMTEzNDQ1LCAxMTM0NTIsIAotICAgIDExMzQ2MiwgMTEzNDY5LCAxMTM0NzYsIDExMzQ4NiwgMTEzNDk2LCAxMTM1MDMsIDExMzUwOSwgMTEzNTE3LCAxMTM1MjUsIAotICAgIDExMzUzMSwgMTEzNTM3LCAxMTM1NDEsIDExMzU0NSwgMTEzNTUyLCAxMTM1NjAsIDExMzU2NiwgMTEzNTcwLCAxMTM1NzQsIAotICAgIDExMzU3OCwgMTEzNTg1LCAxMTM1OTcsIDExMzYwMCwgMTEzNjA3LCAxMTM2MTMsIDExMzYxNywgMTEzNjIxLCAxMTM2MjUsIAotICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MSwgMTEzNjQ1LCAxMTM2NDksIDExMzY1MywgMTEzNjYwLCAxMTM2NjQsIAotICAgIDExMzY3MCwgMTEzNjc0LCAxMTM2NzgsIDExMzY4MiwgMTEzNjg4LCAxMTM2OTUsIDExMzcwMiwgMTEzNzA5LCAxMTM3MjEsIAotICAgIDExMzcyOSwgMTEzNzMzLCAxMTM3MzksIDExMzc0OCwgMTEzNzU1LCAxMTM3NjEsIDExMzc2NSwgMTEzNzY5LCAxMTM3NzMsIAotICAgIDExMzc3OSwgMTEzNzg4LCAxMTM3OTYsIDExMzgwMCwgMTEzODA2LCAxMTM4MTAsIDExMzgxNCwgMTEzODE4LCAxMTM4MjQsIAotICAgIDExMzgzMSwgMTEzODM3LCAxMTM4NDEsIDExMzg0NywgMTEzODUxLCAxMTM4NTUsIDExMzg2NCwgMTEzODc2LCAxMTM4ODAsIAotICAgIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxMSwgMTEzOTIzLCAxMTM5MzAsIDExMzkzNywgMTEzOTQ0LCAxMTM5NTUsIAotICAgIDExMzk2NSwgMTEzOTc4LCAxMTM5ODgsIDExMzk5NSwgMTEzOTk5LCAxMTQwMDMsIDExNDAwNywgMTE0MDExLCAxMTQwMjAsIAotICAgIDExNDAyOSwgMTE0MDM4LCAxMTQwNTUsIDExNDA2NCwgMTE0MDcwLCAxMTQwNzcsIDExNDA4NSwgMTE0MDk4LCAxMTQxMDIsIAotICAgIDExNDExMSwgMTE0MTIwLCAxMTQxMjksIDExNDEzOCwgMTE0MTQ5LCAxMTQxNTgsIDExNDE2NywgMTE0MTc2LCAxMTQxODUsIAotICAgIDExNDE5NCwgMTE0MjAzLCAxMTQyMTMsIDExNDIxNiwgMTE0MjIwLCAxMTQyMjQsIDExNDIyOCwgMTE0MjMyLCAxMTQyMzYsIAotICAgIDExNDI0MiwgMTE0MjQ5LCAxMTQyNTYsIDExNDI2MywgMTE0MjY5LCAxMTQyNzUsIDExNDI4MiwgMTE0Mjg4LCAxMTQyOTUsIAotICAgIDExNDMwMywgMTE0MzA3LCAxMTQzMTQsIDExNDMyMSwgMTE0MzI4LCAxMTQzMzYsIDExNDM0MCwgMTE0MzQ0LCAxMTQzNDgsIAotICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjIsIDExNDM2NiwgMTE0MzcyLCAxMTQzNzksIDExNDM4NiwgMTE0MzkyLCAxMTQzOTksIAotICAgIDExNDQwNiwgMTE0NDEzLCAxMTQ0MjAsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIAotICAgIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ5MCwgMTE0NDk2LCAxMTQ1MDAsIDExNDUwOSwgMTE0NTEzLCAxMTQ1MTcsIAotICAgIDExNDUyMSwgMTE0NTI1LCAxMTQ1MzEsIDExNDUzOCwgMTE0NTQ1LCAxMTQ1NTIsIDExNDU1OSwgMTE0NTY2LCAxMTQ1NzIsIAotICAgIDExNDU4MCwgMTE0NTg0LCAxMTQ1ODgsIDExNDU5MiwgMTE0NTk2LCAxMTQ2MDIsIDExNDYxOSwgMTE0NjM2LCAxMTQ2NDAsIAotICAgIDExNDY0NCwgMTE0NjQ4LCAxMTQ2NTIsIDExNDY1NiwgMTE0NjYwLCAxMTQ2NjYsIDExNDY3MywgMTE0Njc3LCAxMTQ2ODMsIAotICAgIDExNDY5MCwgMTE0Njk3LCAxMTQ3MDQsIDExNDcxMSwgMTE0NzE4LCAxMTQ3MjcsIDExNDczNCwgMTE0NzQxLCAxMTQ3NDgsIAotICAgIDExNDc1NSwgMTE0NzU5LCAxMTQ3NjMsIDExNDc2OSwgMTE0NzgxLCAxMTQ3ODUsIDExNDc4OSwgMTE0Nzk4LCAxMTQ4MDIsIAotICAgIDExNDgwNiwgMTE0ODEwLCAxMTQ4MTYsIDExNDgyMCwgMTE0ODI0LCAxMTQ4MzMsIDExNDgzNywgMTE0ODQxLCAxMTQ4NDUsIAotICAgIDExNDg1MiwgMTE0ODU2LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY4LCAxMTQ4NzIsIDExNDg3NiwgMTE0ODgwLCAxMTQ4ODQsIAotICAgIDExNDg5MCwgMTE0ODk3LCAxMTQ5MDQsIDExNDkxMCwgMTE0OTE0LCAxMTQ5MzEsIDExNDkzNywgMTE0OTQxLCAxMTQ5NDcsIAotICAgIDExNDk1MywgMTE0OTU5LCAxMTQ5NjUsIDExNDk3MSwgMTE0OTc3LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTg5LCAxMTQ5OTUsIAotICAgIDExNDk5OSwgMTE1MDA1LCAxMTUwMDksIDExNTAxMywgMTE1MDIwLCAxMTUwMjcsIDExNTA0NCwgMTE1MDQ4LCAxMTUwNTIsIAotICAgIDExNTA1NiwgMTE1MDYwLCAxMTUwNjQsIDExNTA3NiwgMTE1MDc5LCAxMTUwODQsIDExNTA4OSwgMTE1MTA0LCAxMTUxMTQsIAotICAgIDExNTEyNiwgMTE1MTMwLCAxMTUxMzQsIDExNTEzOCwgMTE1MTQ0LCAxMTUxNTEsIDExNTE1OCwgMTE1MTY4LCAxMTUxODAsIAotICAgIDExNTE4NiwgMTE1MTkyLCAxMTUyMDEsIDExNTIwNSwgMTE1MjA5LCAxMTUyMTYsIDExNTIyNiwgMTE1MjMzLCAxMTUyMzksIAotICAgIDExNTI0MywgMTE1MjQ3LCAxMTUyNTQsIDExNTI2MCwgMTE1MjY0LCAxMTUyNzAsIDExNTI3NCwgMTE1MjgyLCAxMTUyODgsIAotICAgIDExNTI5MiwgMTE1MzAwLCAxMTUzMDksIDExNTMxNiwgMTE1MzIyLCAxMTUzMjksIDExNTMzNiwgMTE1MzQ2LCAxMTUzNTYsIAotICAgIDExNTM2MCwgMTE1MzY0LCAxMTUzNjgsIDExNTM3MiwgMTE1Mzc4LCAxMTUzODUsIDExNTM5MSwgMTE1Mzk4LCAxMTU0MDUsIAotICAgIDExNTQxMiwgMTE1NDIxLCAxMTU0MjgsIDExNTQzNSwgMTE1NDQxLCAxMTU0NDgsIDExNTQ1NSwgMTE1NDYyLCAxMTU0NjksIAotICAgIDExNTQ3NiwgMTE1NDgzLCAxMTU0ODksIDExNTQ5NiwgMTE1NTAzLCAxMTU1MTAsIDExNTUxOSwgMTE1NTI2LCAxMTU1MzMsIAotICAgIDExNTUzNywgMTE1NTQzLCAxMTU1NDcsIDExNTU1MywgMTE1NTYwLCAxMTU1NjcsIDExNTU3NCwgMTE1NTc4LCAxMTU1ODIsIAotICAgIDExNTU4NiwgMTE1NTkwLCAxMTU1OTQsIDExNTYwMSwgMTE1NjA1LCAxMTU2MDksIDExNTYxNSwgMTE1NjIzLCAxMTU2MjcsIAotICAgIDExNTYzMSwgMTE1NjM1LCAxMTU2MzksIDExNTY0NiwgMTE1NjUwLCAxMTU2NTQsIDExNTY2MiwgMTE1NjY2LCAxMTU2NzAsIAotICAgIDExNTY3NCwgMTE1Njc4LCAxMTU2ODQsIDExNTY4OCwgMTE1NjkyLCAxMTU2OTgsIDExNTcwNSwgMTE1NzExLCAxMTU3MTgsIAotICAgIDExNTczMCwgMTE1NzM0LCAxMTU3NDEsIDExNTc0OCwgMTE1NzU1LCAxMTU3NjIsIDExNTc3NCwgMTE1NzgxLCAxMTU3ODUsIAotICAgIDExNTc4OSwgMTE1NzkzLCAxMTU4MDAsIDExNTgwNywgMTE1ODE0LCAxMTU4MjEsIDExNTgzMSwgMTE1ODM4LCAxMTU4NDQsIAotICAgIDExNTg1MSwgMTE1ODU4LCAxMTU4NjUsIDExNTg3MiwgMTE1ODgxLCAxMTU4OTEsIDExNTg5OCwgMTE1OTAyLCAxMTU5MDksIAotICAgIDExNTkxMywgMTE1OTE3LCAxMTU5MjEsIDExNTkyOCwgMTE1OTM1LCAxMTU5NDUsIDExNTk1MSwgMTE1OTU1LCAxMTU5NjQsIAotICAgIDExNTk2OCwgMTE1OTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMTIzNjIsIDExMjM2NSwgMTEyMzcwLCAxMTIzNzYsIDExMjM4NCwgMTEyMzg5LCAxMTIzOTUsIDExMjQwMywgCisgICAgMTEyNDA5LCAxMTI0MTUsIDExMjQxOSwgMTEyNDIzLCAxMTI0MzAsIDExMjQzOSwgMTEyNDQ2LCAxMTI0NTUsIDExMjQ2MSwgCisgICAgMTEyNDcwLCAxMTI0NzcsIDExMjQ4NCwgMTEyNDkxLCAxMTI1MDEsIDExMjUwNywgMTEyNTExLCAxMTI1MTgsIDExMjUyNywgCisgICAgMTEyNTM3LCAxMTI1NDQsIDExMjU1MSwgMTEyNTU1LCAxMTI1NTksIDExMjU2NiwgMTEyNTc2LCAxMTI1ODAsIDExMjU4NywgCisgICAgMTEyNTk0LCAxMTI2MDEsIDExMjYwNywgMTEyNjE0LCAxMTI2MjEsIDExMjYyOCwgMTEyNjM1LCAxMTI2MzksIDExMjY0MywgCisgICAgMTEyNjQ3LCAxMTI2NTQsIDExMjY1OCwgMTEyNjY1LCAxMTI2NzIsIDExMjY4NiwgMTEyNjk1LCAxMTI2OTksIDExMjcwMywgCisgICAgMTEyNzA3LCAxMTI3MTQsIDExMjcxOCwgMTEyNzIyLCAxMTI3MjYsIDExMjczNCwgMTEyNzQyLCAxMTI3NjEsIDExMjc3MSwgCisgICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODAzLCAxMTI4MDcsIDExMjgxMSwgMTEyODE1LCAxMTI4MTksIDExMjgyNiwgCisgICAgMTEyODMwLCAxMTI4MzMsIDExMjgzNywgMTEyODQxLCAxMTI4NDcsIDExMjg1NCwgMTEyODYzLCAxMTI4NjcsIDExMjg3NiwgCisgICAgMTEyODg1LCAxMTI4OTMsIDExMjg5NywgMTEyOTA0LCAxMTI5MDgsIDExMjkxMiwgMTEyOTE2LCAxMTI5MjAsIDExMjkzMSwgCisgICAgMTEyOTQwLCAxMTI5NDksIDExMjk1OCwgMTEyOTY3LCAxMTI5NzksIDExMjk4OCwgMTEyOTk3LCAxMTMwMDYsIDExMzAxNCwgCisgICAgMTEzMDIzLCAxMTMwMzUsIDExMzA0NCwgMTEzMDUyLCAxMTMwNjEsIDExMzA3MywgMTEzMDgyLCAxMTMwOTEsIDExMzEwMywgCisgICAgMTEzMTEyLCAxMTMxMjEsIDExMzEzMywgMTEzMTQyLCAxMTMxNDYsIDExMzE1MCwgMTEzMTU0LCAxMTMxNTgsIDExMzE2MiwgCisgICAgMTEzMTY2LCAxMTMxNzAsIDExMzE3NywgMTEzMTgxLCAxMTMxODUsIDExMzE5NiwgMTEzMjAwLCAxMTMyMDQsIDExMzIxMSwgCisgICAgMTEzMjE3LCAxMTMyMjMsIDExMzIyNywgMTEzMjM0LCAxMTMyMzgsIDExMzI0MiwgMTEzMjQ2LCAxMTMyNTAsIDExMzI1NCwgCisgICAgMTEzMjU4LCAxMTMyNjQsIDExMzI3MiwgMTEzMjc2LCAxMTMyODAsIDExMzI4MywgMTEzMjg5LCAxMTMyOTksIDExMzMwMywgCisgICAgMTEzMzE1LCAxMTMzMjIsIDExMzMyOSwgMTEzMzM2LCAxMTMzNDMsIDExMzM0OSwgMTEzMzUzLCAxMTMzNTcsIDExMzM2MSwgCisgICAgMTEzMzY1LCAxMTMzNzIsIDExMzM4MSwgMTEzMzg4LCAxMTMzOTYsIDExMzQwNCwgMTEzNDEwLCAxMTM0MTQsIDExMzQxOCwgCisgICAgMTEzNDIyLCAxMTM0MjYsIDExMzQzMiwgMTEzNDQxLCAxMTM0NTMsIDExMzQ2MCwgMTEzNDY3LCAxMTM0NzYsIDExMzQ4NywgCisgICAgMTEzNDkzLCAxMTM1MDIsIDExMzUxMSwgMTEzNTE4LCAxMTM1MjcsIDExMzUzNCwgMTEzNTQwLCAxMTM1NTAsIDExMzU1NywgCisgICAgMTEzNTY0LCAxMTM1NzEsIDExMzU3OCwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNjAzLCAxMTM2MTEsIDExMzYyMCwgCisgICAgMTEzNjMyLCAxMTM2MzksIDExMzY0NiwgMTEzNjU2LCAxMTM2NjMsIDExMzY3MywgMTEzNjgwLCAxMTM2OTAsIDExMzY5NywgCisgICAgMTEzNzA0LCAxMTM3MTQsIDExMzcyMSwgMTEzNzI4LCAxMTM3MzcsIDExMzc0NCwgMTEzNzU2LCAxMTM3NjUsIDExMzc3MiwgCisgICAgMTEzNzc5LCAxMTM3ODYsIDExMzc5NSwgMTEzODA1LCAxMTM4MTgsIDExMzgyNSwgMTEzODM0LCAxMTM4NDQsIDExMzg1MSwgCisgICAgMTEzODYwLCAxMTM4NzMsIDExMzg4MCwgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTE0LCAxMTM5MjAsIDExMzkzMCwgCisgICAgMTEzOTM3LCAxMTM5NDQsIDExMzk1NCwgMTEzOTYwLCAxMTM5NjcsIDExMzk3NCwgMTEzOTgxLCAxMTM5OTEsIDExMzk5OCwgCisgICAgMTE0MDA1LCAxMTQwMTIsIDExNDAxOCwgMTE0MDI1LCAxMTQwMzUsIDExNDA0MiwgMTE0MDQ2LCAxMTQwNTQsIDExNDA1OCwgCisgICAgMTE0MDcwLCAxMTQwNzQsIDExNDA4OCwgMTE0MDkyLCAxMTQwOTYsIDExNDEwMCwgMTE0MTA0LCAxMTQxMTAsIDExNDExNywgCisgICAgMTE0MTI1LCAxMTQxMjksIDExNDEzMywgMTE0MTM3LCAxMTQxNDEsIDExNDE0OCwgMTE0MTUyLCAxMTQxNTgsIDExNDE2NCwgCisgICAgMTE0MTcyLCAxMTQxNzYsIDExNDE4MywgMTE0MTkxLCAxMTQxOTUsIDExNDE5OSwgMTE0MjA1LCAxMTQyMDksIDExNDIxOCwgCisgICAgMTE0MjI3LCAxMTQyMzQsIDExNDI0NCwgMTE0MjUwLCAxMTQyNTQsIDExNDI1OCwgMTE0MjY2LCAxMTQyNzMsIDExNDI4MCwgCisgICAgMTE0Mjg2LCAxMTQyOTAsIDExNDI5OCwgMTE0MzAyLCAxMTQzMDksIDExNDMyMSwgMTE0MzI4LCAxMTQzMzgsIDExNDM0NCwgCisgICAgMTE0MzQ4LCAxMTQzNTcsIDExNDM2NCwgMTE0MzczLCAxMTQzNzcsIDExNDM4MSwgMTE0Mzg4LCAxMTQzOTIsIDExNDM5NiwgCisgICAgMTE0NDAwLCAxMTQ0MDQsIDExNDQwNywgMTE0NDEzLCAxMTQ0MTksIDExNDQyMywgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgCisgICAgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDg5LCAxMTQ0OTMsIDExNDQ5NywgCisgICAgMTE0NTA0LCAxMTQ1MTEsIDExNDUxOCwgMTE0NTI1LCAxMTQ1MzIsIDExNDUzNiwgMTE0NTM5LCAxMTQ1NDQsIDExNDU0OCwgCisgICAgMTE0NTUyLCAxMTQ1NjEsIDExNDU3MCwgMTE0NTc0LCAxMTQ1NzgsIDExNDU4NCwgMTE0NTkwLCAxMTQ2MDcsIDExNDYxMywgCisgICAgMTE0NjE3LCAxMTQ2MjYsIDExNDYzMCwgMTE0NjM0LCAxMTQ2NDEsIDExNDY0OSwgMTE0NjU3LCAxMTQ2NjMsIDExNDY2NywgCisgICAgMTE0NjcxLCAxMTQ2NzUsIDExNDY3OSwgMTE0NjgyLCAxMTQ2ODgsIDExNDY5NSwgMTE0NzA1LCAxMTQ3MTIsIDExNDcxOSwgCisgICAgMTE0NzI2LCAxMTQ3MzIsIDExNDczOSwgMTE0NzQ2LCAxMTQ3NTMsIDExNDc2MCwgMTE0NzY3LCAxMTQ3NzYsIDExNDc4MywgCisgICAgMTE0Nzk1LCAxMTQ4MDIsIDExNDgwOSwgMTE0ODE5LCAxMTQ4MzAsIDExNDgzNywgMTE0ODQ0LCAxMTQ4NTEsIDExNDg1OCwgCisgICAgMTE0ODY1LCAxMTQ4NzIsIDExNDg3OSwgMTE0ODg2LCAxMTQ4OTMsIDExNDkwMCwgMTE0OTEwLCAxMTQ5MjAsIDExNDkzMCwgCisgICAgMTE0OTM3LCAxMTQ5NDcsIDExNDk1NCwgMTE0OTYxLCAxMTQ5NjgsIDExNDk3NSwgMTE0OTgyLCAxMTQ5ODksIDExNDk5NiwgCisgICAgMTE1MDAzLCAxMTUwMTAsIDExNTAxNywgMTE1MDI0LCAxMTUwMzEsIDExNTAzOCwgMTE1MDQ0LCAxMTUwNTEsIDExNTA1OCwgCisgICAgMTE1MDY3LCAxMTUwNzQsIDExNTA4MSwgMTE1MDg1LCAxMTUwOTMsIDExNTA5NywgMTE1MTAxLCAxMTUxMDUsIDExNTEwOSwgCisgICAgMTE1MTEzLCAxMTUxMjAsIDExNTEyNCwgMTE1MTMzLCAxMTUxMzcsIDExNTE0NCwgMTE1MTUyLCAxMTUxNTYsIDExNTE2MCwgCisgICAgMTE1MTY0LCAxMTUxNzcsIDExNTE5MywgMTE1MTk3LCAxMTUyMDEsIDExNTIwOCwgMTE1MjE0LCAxMTUyMjEsIDExNTIyNSwgCisgICAgMTE1MjI5LCAxMTUyMzMsIDExNTIzNywgMTE1MjQxLCAxMTUyNDgsIDExNTI1MiwgMTE1MjcwLCAxMTUyNzQsIDExNTI3OCwgCisgICAgMTE1Mjg1LCAxMTUyODksIDExNTI5MywgMTE1Mjk5LCAxMTUzMDMsIDExNTMwNywgMTE1MzE1LCAxMTUzMTksIDExNTMyMywgCisgICAgMTE1MzI2LCAxMTUzMzAsIDExNTMzNiwgMTE1MzQ3LCAxMTUzNTYsIDExNTM2NSwgMTE1MzcyLCAxMTUzNzksIDExNTM5MCwgCisgICAgMTE1Mzk3LCAxMTU0MDQsIDExNTQxMSwgMTE1NDE4LCAxMTU0MjUsIDExNTQzMiwgMTE1NDM5LCAxMTU0NDksIDExNTQ1NSwgCisgICAgMTE1NDYyLCAxMTU0NzIsIDExNTQ4MSwgMTE1NDg4LCAxMTU0OTcsIDExNTUwNywgMTE1NTE0LCAxMTU1MjEsIDExNTUyOCwgCisgICAgMTE1NTM1LCAxMTU1NDcsIDExNTU1NCwgMTE1NTYxLCAxMTU1NjgsIDExNTU3NSwgMTE1NTgyLCAxMTU1OTIsIDExNTU5OSwgCisgICAgMTE1NjA2LCAxMTU2MTYsIDExNTYyOSwgMTE1NjQxLCAxMTU2NDgsIDExNTY1OCwgMTE1NjY1LCAxMTU2NzIsIDExNTY3OSwgCisgICAgMTE1NjkzLCAxMTU2OTksIDExNTcwNywgMTE1NzE3LCAxMTU3MjcsIDExNTczNCwgMTE1NzQxLCAxMTU3NDcsIDExNTc1MSwgCisgICAgMTE1NzU4LCAxMTU3NjgsIDExNTc3NCwgMTE1Nzg3LCAxMTU3OTEsIDExNTc5NSwgMTE1ODAyLCAxMTU4MDYsIDExNTgxMywgCisgICAgMTE1ODIzLCAxMTU4MjcsIDExNTgzMSwgMTE1ODM1LCAxMTU4MzksIDExNTg0MywgMTE1ODUwLCAxMTU4NTQsIDExNTg2MSwgCisgICAgMTE1ODY4LCAxMTU4NzUsIDExNTg4NCwgMTE1ODkzLCAxMTU5MDMsIDExNTkxMCwgMTE1OTE3LCAxMTU5MjQsIDExNTkzNCwgCisgICAgMTE1OTQxLCAxMTU5NTEsIDExNTk1OCwgMTE1OTY4LCAxMTU5NzUsIDExNTk4MiwgMTE1OTkyLCAxMTYwMDIsIDExNjAwOSwgCisgICAgMTE2MDE1LCAxMTYwMjMsIDExNjAzMSwgMTE2MDM3LCAxMTYwNDMsIDExNjA0NywgMTE2MDUxLCAxMTYwNTgsIDExNjA2NiwgCisgICAgMTE2MDcyLCAxMTYwNzYsIDExNjA4MCwgMTE2MDg0LCAxMTYwOTEsIDExNjEwMywgMTE2MTA2LCAxMTYxMTMsIDExNjExOSwgCisgICAgMTE2MTIzLCAxMTYxMjcsIDExNjEzMSwgMTE2MTM1LCAxMTYxMzksIDExNjE0MywgMTE2MTQ3LCAxMTYxNTEsIDExNjE1NSwgCisgICAgMTE2MTU5LCAxMTYxNjYsIDExNjE3MCwgMTE2MTc2LCAxMTYxODAsIDExNjE4NCwgMTE2MTg4LCAxMTYxOTQsIDExNjIwMSwgCisgICAgMTE2MjA4LCAxMTYyMTUsIDExNjIyNiwgMTE2MjM0LCAxMTYyMzgsIDExNjI0NCwgMTE2MjUzLCAxMTYyNjAsIDExNjI2NiwgCisgICAgMTE2MjY5LCAxMTYyNzMsIDExNjI3NywgMTE2MjgzLCAxMTYyOTIsIDExNjMwMCwgMTE2MzA0LCAxMTYzMTAsIDExNjMxNCwgCisgICAgMTE2MzE4LCAxMTYzMjIsIDExNjMyOCwgMTE2MzM1LCAxMTYzNDEsIDExNjM0NSwgMTE2MzUxLCAxMTYzNTUsIDExNjM1OSwgCisgICAgMTE2MzY4LCAxMTYzODAsIDExNjM4NCwgMTE2MzkxLCAxMTYzOTgsIDExNjQwOCwgMTE2NDE1LCAxMTY0MjcsIDExNjQzNCwgCisgICAgMTE2NDQxLCAxMTY0NDgsIDExNjQ1OSwgMTE2NDY5LCAxMTY0ODIsIDExNjQ5MiwgMTE2NDk5LCAxMTY1MDMsIDExNjUwNywgCisgICAgMTE2NTExLCAxMTY1MTUsIDExNjUyNCwgMTE2NTMzLCAxMTY1NDIsIDExNjU1OSwgMTE2NTY4LCAxMTY1NzQsIDExNjU4MSwgCisgICAgMTE2NTg5LCAxMTY2MDIsIDExNjYwNiwgMTE2NjE1LCAxMTY2MjQsIDExNjYzMywgMTE2NjQyLCAxMTY2NTMsIDExNjY2MiwgCisgICAgMTE2NjcwLCAxMTY2NzksIDExNjY4OCwgMTE2Njk3LCAxMTY3MDYsIDExNjcxNiwgMTE2NzE5LCAxMTY3MjMsIDExNjcyNywgCisgICAgMTE2NzMxLCAxMTY3MzUsIDExNjczOSwgMTE2NzQ1LCAxMTY3NTIsIDExNjc1OSwgMTE2NzY2LCAxMTY3NzIsIDExNjc3OCwgCisgICAgMTE2Nzg1LCAxMTY3OTEsIDExNjc5OCwgMTE2ODA2LCAxMTY4MTAsIDExNjgxNywgMTE2ODI0LCAxMTY4MzEsIDExNjgzOSwgCisgICAgMTE2ODQzLCAxMTY4NDcsIDExNjg1MSwgMTE2ODU1LCAxMTY4NTksIDExNjg2NSwgMTE2ODY5LCAxMTY4NzUsIDExNjg4MiwgCisgICAgMTE2ODg5LCAxMTY4OTUsIDExNjkwMiwgMTE2OTA5LCAxMTY5MTYsIDExNjkyMywgMTE2OTMwLCAxMTY5MzcsIDExNjk0NCwgCisgICAgMTE2OTUxLCAxMTY5NTgsIDExNjk2NSwgMTE2OTcyLCAxMTY5NzksIDExNjk4NiwgMTE2OTkzLCAxMTY5OTksIDExNzAwMywgCisgICAgMTE3MDEyLCAxMTcwMTYsIDExNzAyMCwgMTE3MDI0LCAxMTcwMjgsIDExNzAzNCwgMTE3MDQxLCAxMTcwNDgsIDExNzA1NSwgCisgICAgMTE3MDYyLCAxMTcwNjksIDExNzA3NSwgMTE3MDgzLCAxMTcwODcsIDExNzA5MSwgMTE3MDk1LCAxMTcwOTksIDExNzEwNSwgCisgICAgMTE3MTIyLCAxMTcxMzksIDExNzE0MywgMTE3MTQ3LCAxMTcxNTEsIDExNzE1NSwgMTE3MTU5LCAxMTcxNjMsIDExNzE2OSwgCisgICAgMTE3MTc2LCAxMTcxODAsIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwNywgMTE3MjE0LCAxMTcyMjEsIDExNzIzMCwgCisgICAgMTE3MjM3LCAxMTcyNDQsIDExNzI1MSwgMTE3MjU4LCAxMTcyNjIsIDExNzI2NiwgMTE3MjcyLCAxMTcyODQsIDExNzI4OCwgCisgICAgMTE3MjkyLCAxMTczMDEsIDExNzMwNSwgMTE3MzA5LCAxMTczMTMsIDExNzMxOSwgMTE3MzIzLCAxMTczMjcsIDExNzMzNiwgCisgICAgMTE3MzQwLCAxMTczNDQsIDExNzM0OCwgMTE3MzU1LCAxMTczNTksIDExNzM2MywgMTE3MzY3LCAxMTczNzEsIDExNzM3NSwgCisgICAgMTE3Mzc5LCAxMTczODMsIDExNzM4NywgMTE3MzkzLCAxMTc0MDAsIDExNzQwNywgMTE3NDEzLCAxMTc0MTcsIDExNzQzNCwgCisgICAgMTE3NDQwLCAxMTc0NDQsIDExNzQ1MCwgMTE3NDU2LCAxMTc0NjIsIDExNzQ2OCwgMTE3NDc0LCAxMTc0ODAsIDExNzQ4NCwgCisgICAgMTE3NDg4LCAxMTc0OTIsIDExNzQ5OCwgMTE3NTAyLCAxMTc1MDgsIDExNzUxMiwgMTE3NTE2LCAxMTc1MjMsIDExNzUzMCwgCisgICAgMTE3NTQ3LCAxMTc1NTEsIDExNzU1NSwgMTE3NTU5LCAxMTc1NjMsIDExNzU2NywgMTE3NTc5LCAxMTc1ODIsIDExNzU4NywgCisgICAgMTE3NTkyLCAxMTc2MDcsIDExNzYxNywgMTE3NjI5LCAxMTc2MzMsIDExNzYzNywgMTE3NjQxLCAxMTc2NDcsIDExNzY1NCwgCisgICAgMTE3NjYxLCAxMTc2NzEsIDExNzY4MywgMTE3Njg5LCAxMTc2OTUsIDExNzcwNCwgMTE3NzA4LCAxMTc3MTIsIDExNzcxOSwgCisgICAgMTE3NzI5LCAxMTc3MzYsIDExNzc0MiwgMTE3NzQ2LCAxMTc3NTAsIDExNzc1NywgMTE3NzYzLCAxMTc3NjcsIDExNzc3MywgCisgICAgMTE3Nzc3LCAxMTc3ODUsIDExNzc5MSwgMTE3Nzk1LCAxMTc4MDMsIDExNzgxMSwgMTE3ODE4LCAxMTc4MjQsIDExNzgzMSwgCisgICAgMTE3ODM4LCAxMTc4NDgsIDExNzg1OCwgMTE3ODYyLCAxMTc4NjYsIDExNzg3MCwgMTE3ODc0LCAxMTc4ODAsIDExNzg4NywgCisgICAgMTE3ODkzLCAxMTc5MDAsIDExNzkwNywgMTE3OTE0LCAxMTc5MjMsIDExNzkzMCwgMTE3OTM3LCAxMTc5NDMsIDExNzk1MCwgCisgICAgMTE3OTU3LCAxMTc5NjQsIDExNzk3MSwgMTE3OTc4LCAxMTc5ODUsIDExNzk5MSwgMTE3OTk4LCAxMTgwMDUsIDExODAxMiwgCisgICAgMTE4MDIxLCAxMTgwMjgsIDExODAzNSwgMTE4MDM5LCAxMTgwNDUsIDExODA0OSwgMTE4MDU1LCAxMTgwNjIsIDExODA2OSwgCisgICAgMTE4MDc2LCAxMTgwODAsIDExODA4NCwgMTE4MDg4LCAxMTgwOTIsIDExODA5NiwgMTE4MTAzLCAxMTgxMDcsIDExODExMSwgCisgICAgMTE4MTE3LCAxMTgxMjUsIDExODEyOSwgMTE4MTMzLCAxMTgxMzcsIDExODE0MSwgMTE4MTQ4LCAxMTgxNTIsIDExODE1NiwgCisgICAgMTE4MTY0LCAxMTgxNjgsIDExODE3MiwgMTE4MTc2LCAxMTgxODAsIDExODE4NiwgMTE4MTkwLCAxMTgxOTQsIDExODIwMCwgCisgICAgMTE4MjA3LCAxMTgyMTMsIDExODIyMCwgMTE4MjMyLCAxMTgyMzYsIDExODI0MywgMTE4MjUwLCAxMTgyNTcsIDExODI2NCwgCisgICAgMTE4Mjc2LCAxMTgyODMsIDExODI4NywgMTE4MjkxLCAxMTgyOTUsIDExODMwMiwgMTE4MzA5LCAxMTgzMTYsIDExODMyMywgCisgICAgMTE4MzMzLCAxMTgzNDAsIDExODM0NiwgMTE4MzUzLCAxMTgzNjAsIDExODM2NywgMTE4Mzc0LCAxMTgzODMsIDExODM5MywgCisgICAgMTE4NDAwLCAxMTg0MDQsIDExODQxMSwgMTE4NDE1LCAxMTg0MTksIDExODQyMywgMTE4NDMwLCAxMTg0MzcsIDExODQ0NywgCisgICAgMTE4NDUzLCAxMTg0NTcsIDExODQ2NiwgMTE4NDcwLCAxMTg0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNTk3OSwgMTE1OTg1LCAxMTU5OTEsIDExNTk5OCwgMTE2MDA1LCAKLSAgICAxMTYwMTIsIDExNjAxOSwgMTE2MDI2LCAxMTYwMzMsIDExNjAzOSwgMTE2MDQ2LCAxMTYwNTMsIDExNjA2MCwgMTE2MDY3LCAKLSAgICAxMTYwNzQsIDExNjA4MSwgMTE2MDg3LCAxMTYwOTMsIDExNjA5OSwgMTE2MTA1LCAxMTYxMTEsIDExNjExNywgMTE2MTIzLCAKLSAgICAxMTYxMjksIDExNjEzNSwgMTE2MTQyLCAxMTYxNDksIDExNjE1NiwgMTE2MTYzLCAxMTYxNzAsIDExNjE3NywgMTE2MTgzLCAKLSAgICAxMTYxODksIDExNjE5NSwgMTE2MjAyLCAxMTYyMDksIDExNjIxNSwgMTE2MjIxLCAxMTYyMzAsIDExNjIzNywgMTE2MjQ0LCAKLSAgICAxMTYyNTEsIDExNjI1OCwgMTE2MjY1LCAxMTYyNzIsIDExNjI3OCwgMTE2Mjg0LCAxMTYyOTAsIDExNjI5OSwgMTE2MzA2LCAKLSAgICAxMTYzMTMsIDExNjMyNCwgMTE2MzM1LCAxMTYzNDEsIDExNjM0NywgMTE2MzUzLCAxMTYzNjIsIDExNjM2OSwgMTE2Mzc2LCAKLSAgICAxMTYzODYsIDExNjM5NiwgMTE2NDA3LCAxMTY0MTgsIDExNjQzMCwgMTE2NDQzLCAxMTY0NTQsIDExNjQ2NSwgMTE2NDc3LCAKLSAgICAxMTY0OTAsIDExNjUwMSwgMTE2NTEyLCAxMTY1MjMsIDExNjUzNCwgMTE2NTQ1LCAxMTY1NTcsIDExNjU2NSwgMTE2NTczLCAKLSAgICAxMTY1ODIsIDExNjU5MSwgMTE2NjAwLCAxMTY2MDYsIDExNjYxMiwgMTE2NjE4LCAxMTY2MjUsIDExNjYzNSwgMTE2NjQyLCAKLSAgICAxMTY2NTIsIDExNjY1NywgMTE2NjYyLCAxMTY2NjgsIDExNjY3NCwgMTE2NjgyLCAxMTY2OTAsIDExNjY5OSwgMTE2NzEwLCAKLSAgICAxMTY3MjEsIDExNjcyOSwgMTE2NzM3LCAxMTY3NDYsIDExNjc1NSwgMTE2NzYzLCAxMTY3NzAsIDExNjc3OCwgMTE2Nzg2LCAKLSAgICAxMTY3OTMsIDExNjgwMCwgMTE2ODA5LCAxMTY4MTgsIDExNjgyNywgMTE2ODM2LCAxMTY4NDUsIDAsIDExNjg1NCwgCi0gICAgMTE2ODY1LCAxMTY4NzIsIDExNjg4MCwgMTE2ODg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY4OTYsIAotICAgIDExNjkwNSwgMTE2OTEyLCAxMTY5MTksIDExNjkyOCwgMTE2OTM1LCAxMTY5NDIsIDExNjk0OSwgMTE2OTU5LCAxMTY5NjYsIAotICAgIDExNjk3MywgMTE2OTgwLCAxMTY5ODgsIDExNjk5NSwgMTE3MDAyLCAxMTcwMDksIDExNzAyMCwgMTE3MDI3LCAxMTcwMzQsIAotICAgIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIDExNzA2NCwgMTE3MDcxLCAxMTcwNzcsIDExNzA4NCwgMTE3MDkzLCAxMTcxMDAsIAotICAgIDExNzEwNywgMTE3MTE0LCAxMTcxMjQsIDExNzEzMSwgMTE3MTM4LCAxMTcxNDgsIDExNzE1OCwgMTE3MTY1LCAxMTcxNzIsIAotICAgIDExNzE3OSwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA5LCAxMTcyMTYsIDExNzIyMywgMTE3MjI5LCAxMTcyMzcsIAotICAgIDExNzI0NiwgMTE3MjU1LCAxMTcyNjYsIDExNzI3NSwgMTE3Mjg0LCAxMTcyOTMsIDExNzMwMiwgMTE3MzExLCAxMTczMTgsIAotICAgIDExNzMyNSwgMTE3MzM0LCAxMTczNDYsIDExNzM1NiwgMTE3MzYzLCAxMTczNzAsIDExNzM4MCwgMTE3MzkwLCAxMTczOTksIAotICAgIDExNzQwOSwgMTE3NDE2LCAxMTc0MjYsIDExNzQzMywgMTE3NDQwLCAxMTc0NDcsIDExNzQ1NywgMTE3NDY3LCAxMTc0NzQsIAotICAgIDExNzQ4MSwgMTE3NDkxLCAxMTc0OTcsIDExNzUwOCwgMTE3NTE3LCAxMTc1MjcsIDExNzUzNSwgMTE3NTQ4LCAxMTc1NTUsIAotICAgIDExNzU2MSwgMTE3NTY5LCAxMTc1NzYsIDExNzU4NiwgMTE3NTkwLCAxMTc1OTQsIDExNzU5OCwgMTE3NjAyLCAxMTc2MDYsIAotICAgIDExNzYxMCwgMTE3NjE0LCAxMTc2MjMsIDExNzYyNywgMTE3NjM0LCAxMTc2MzgsIDExNzY0MiwgMTE3NjQ2LCAxMTc2NTAsIAotICAgIDExNzY1NCwgMTE3NjU4LCAxMTc2NjIsIDExNzY2NiwgMTE3NjcwLCAxMTc2NzQsIDExNzY3OCwgMTE3NjgyLCAxMTc2ODYsIAotICAgIDExNzY5MCwgMTE3Njk0LCAxMTc2OTgsIDExNzcwMiwgMTE3NzA2LCAxMTc3MTAsIDExNzcxNywgMTE3NzI0LCAxMTc3MzQsIAotICAgIDExNzc0NywgMTE3NzU3LCAxMTc3NjEsIDExNzc2NSwgMTE3NzY5LCAxMTc3NzMsIDExNzc3NywgMTE3NzgxLCAxMTc3ODUsIAotICAgIDExNzc4OSwgMTE3NzkzLCAxMTc3OTcsIDExNzgwMSwgMTE3ODA4LCAxMTc4MTUsIDExNzgyNiwgMTE3ODMzLCAxMTc4NDAsIAotICAgIDExNzg0NywgMTE3ODU0LCAxMTc4NjEsIDExNzg2OCwgMTE3ODc1LCAxMTc4NzksIDExNzg4MywgMTE3ODkwLCAxMTc4OTcsIAotICAgIDExNzkwNCwgMTE3OTEzLCAxMTc5MjAsIDExNzkzMywgMTE3OTQzLCAxMTc5NTAsIDExNzk1NywgMTE3OTYxLCAxMTc5NjUsIAotICAgIDExNzk3NCwgMTE3OTgxLCAxMTc5ODgsIDExNzk5NSwgMTE4MDA4LCAxMTgwMTUsIDExODAyMiwgMTE4MDMyLCAxMTgwNDIsIAotICAgIDExODA1MSwgMTE4MDU4LCAxMTgwNjUsIDExODA3MiwgMTE4MDc5LCAxMTgwODYsIDExODA5MywgMTE4MTAzLCAxMTgxMDksIAotICAgIDExODExNywgMTE4MTI0LCAxMTgxMzIsIDExODEzOSwgMTE4MTUwLCAxMTgxNTcsIDExODE2MywgMTE4MTcwLCAxMTgxNzcsIAotICAgIDExODE4NCwgMTE4MTkxLCAxMTgyMDEsIDExODIxMSwgMTE4MjE4LCAxMTgyMjUsIDExODIzNCwgMTE4MjQyLCAxMTgyNDgsIAotICAgIDExODI1NSwgMTE4MjYyLCAxMTgyNjksIDExODI3NiwgMTE4MjgwLCAxMTgyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODQ4MSwgMTE4NDg3LCAKKyAgICAxMTg0OTMsIDExODUwMCwgMTE4NTA3LCAxMTg1MTQsIDExODUyMSwgMTE4NTI4LCAxMTg1MzUsIDExODU0MSwgMTE4NTQ4LCAKKyAgICAxMTg1NTUsIDExODU2MiwgMTE4NTY5LCAxMTg1NzYsIDExODU4MywgMTE4NTg5LCAxMTg1OTUsIDExODYwMSwgMTE4NjA3LCAKKyAgICAxMTg2MTMsIDExODYxOSwgMTE4NjI1LCAxMTg2MzEsIDExODYzNywgMTE4NjQ0LCAxMTg2NTEsIDExODY1OCwgMTE4NjY1LCAKKyAgICAxMTg2NzIsIDExODY3OSwgMTE4Njg1LCAxMTg2OTEsIDExODY5NywgMTE4NzA0LCAxMTg3MTEsIDExODcxNywgMTE4NzIzLCAKKyAgICAxMTg3MzIsIDExODczOSwgMTE4NzQ2LCAxMTg3NTMsIDExODc2MCwgMTE4NzY3LCAxMTg3NzQsIDExODc4MCwgMTE4Nzg2LCAKKyAgICAxMTg3OTIsIDExODgwMSwgMTE4ODA4LCAxMTg4MTUsIDExODgyNiwgMTE4ODM3LCAxMTg4NDMsIDExODg0OSwgMTE4ODU1LCAKKyAgICAxMTg4NjQsIDExODg3MSwgMTE4ODc4LCAxMTg4ODgsIDExODg5OCwgMTE4OTA5LCAxMTg5MjAsIDExODkzMiwgMTE4OTQ1LCAKKyAgICAxMTg5NTYsIDExODk2NywgMTE4OTc5LCAxMTg5OTIsIDExOTAwMywgMTE5MDE0LCAxMTkwMjUsIDExOTAzNiwgMTE5MDQ3LCAKKyAgICAxMTkwNTksIDExOTA2NywgMTE5MDc1LCAxMTkwODQsIDExOTA5MywgMTE5MTAyLCAxMTkxMDgsIDExOTExNCwgMTE5MTIwLCAKKyAgICAxMTkxMjcsIDExOTEzNywgMTE5MTQ0LCAxMTkxNTQsIDExOTE1OSwgMTE5MTY0LCAxMTkxNzAsIDExOTE3NiwgMTE5MTg0LCAKKyAgICAxMTkxOTIsIDExOTIwMSwgMTE5MjEyLCAxMTkyMjMsIDExOTIzMSwgMTE5MjM5LCAxMTkyNDgsIDExOTI1NywgMTE5MjY1LCAKKyAgICAxMTkyNzIsIDExOTI4MCwgMTE5Mjg4LCAxMTkyOTUsIDExOTMwMiwgMTE5MzExLCAxMTkzMjAsIDExOTMyOSwgMTE5MzM4LCAKKyAgICAxMTkzNDcsIDAsIDExOTM1NiwgMTE5MzY3LCAxMTkzNzQsIDExOTM4MiwgMTE5MzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTkzOTgsIDExOTQwNywgMTE5NDE0LCAxMTk0MjEsIDExOTQzMCwgMTE5NDM3LCAxMTk0NDQsIAorICAgIDExOTQ1MSwgMTE5NDYxLCAxMTk0NjgsIDExOTQ3NSwgMTE5NDgyLCAxMTk0OTAsIDExOTQ5NywgMTE5NTA0LCAxMTk1MTEsIAorICAgIDExOTUyMiwgMTE5NTI5LCAxMTk1MzYsIDExOTU0MywgMTE5NTUwLCAxMTk1NTcsIDExOTU2NiwgMTE5NTczLCAxMTk1NzksIAorICAgIDExOTU4NiwgMTE5NTk1LCAxMTk2MDIsIDExOTYwOSwgMTE5NjE2LCAxMTk2MjYsIDExOTYzMywgMTE5NjQwLCAxMTk2NTAsIAorICAgIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgMTE5Njg4LCAxMTk2OTUsIDExOTcwMiwgMTE5NzExLCAxMTk3MTgsIAorICAgIDExOTcyNSwgMTE5NzMxLCAxMTk3MzksIDExOTc0OCwgMTE5NzU3LCAxMTk3NjgsIDExOTc3NiwgMTE5Nzg1LCAxMTk3OTQsIAorICAgIDExOTgwMywgMTE5ODEyLCAxMTk4MTksIDExOTgyNiwgMTE5ODM1LCAxMTk4NDcsIDExOTg1NywgMTE5ODY0LCAxMTk4NzEsIAorICAgIDExOTg4MSwgMTE5ODkxLCAxMTk5MDAsIDExOTkxMCwgMTE5OTE3LCAxMTk5MjcsIDExOTkzNCwgMTE5OTQxLCAxMTk5NDgsIAorICAgIDExOTk1OCwgMTE5OTY4LCAxMTk5NzUsIDExOTk4MiwgMTE5OTkyLCAxMTk5OTgsIDEyMDAwOSwgMTIwMDE4LCAxMjAwMjgsIAorICAgIDEyMDAzNiwgMTIwMDQ5LCAxMjAwNTYsIDEyMDA2MiwgMTIwMDcwLCAxMjAwNzcsIDEyMDA4NywgMTIwMDkxLCAxMjAwOTUsIAorICAgIDEyMDA5OSwgMTIwMTAzLCAxMjAxMDcsIDEyMDExMSwgMTIwMTE1LCAxMjAxMjQsIDEyMDEyOCwgMTIwMTM1LCAxMjAxMzksIAorICAgIDEyMDE0MywgMTIwMTQ3LCAxMjAxNTEsIDEyMDE1NSwgMTIwMTU5LCAxMjAxNjMsIDEyMDE2NywgMTIwMTcxLCAxMjAxNzUsIAorICAgIDEyMDE3OSwgMTIwMTgzLCAxMjAxODcsIDEyMDE5MSwgMTIwMTk1LCAxMjAxOTksIDEyMDIwMywgMTIwMjA3LCAxMjAyMTEsIAorICAgIDEyMDIxOCwgMTIwMjI1LCAxMjAyMzUsIDEyMDI0OCwgMTIwMjU4LCAxMjAyNjIsIDEyMDI2NiwgMTIwMjcwLCAxMjAyNzQsIAorICAgIDEyMDI3OCwgMTIwMjgyLCAxMjAyODYsIDEyMDI5MCwgMTIwMjk0LCAxMjAyOTgsIDEyMDMwMiwgMTIwMzA5LCAxMjAzMTYsIAorICAgIDEyMDMyNywgMTIwMzM0LCAxMjAzNDAsIDEyMDM0NywgMTIwMzU0LCAxMjAzNjEsIDEyMDM2OCwgMTIwMzc1LCAxMjAzNzksIAorICAgIDEyMDM4MywgMTIwMzkwLCAxMjAzOTcsIDEyMDQwNCwgMTIwNDEzLCAxMjA0MjAsIDEyMDQzMywgMTIwNDQzLCAxMjA0NTAsIAorICAgIDEyMDQ1NywgMTIwNDYxLCAxMjA0NjUsIDEyMDQ3NCwgMTIwNDgxLCAxMjA0ODgsIDEyMDQ5NSwgMTIwNTA4LCAxMjA1MTUsIAorICAgIDEyMDUyMiwgMTIwNTMyLCAxMjA1NDIsIDEyMDU1MSwgMTIwNTU4LCAxMjA1NjUsIDEyMDU3MiwgMTIwNTc5LCAxMjA1ODYsIAorICAgIDEyMDU5MywgMTIwNjAzLCAxMjA2MDksIDEyMDYxNywgMTIwNjI0LCAxMjA2MzIsIDEyMDYzOSwgMTIwNjUwLCAxMjA2NTcsIAorICAgIDEyMDY2MywgMTIwNjcwLCAxMjA2NzcsIDEyMDY4NCwgMTIwNjkxLCAxMjA3MDEsIDEyMDcxMSwgMTIwNzE4LCAxMjA3MjUsIAorICAgIDEyMDczNCwgMTIwNzQyLCAxMjA3NDgsIDEyMDc1NSwgMTIwNzYyLCAxMjA3NjksIDEyMDc3NiwgMTIwNzgwLCAxMjA3OTAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkxMDAsMTI2ICsyMDI1NSwxMjYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgzMDAsIDExODMwNCwgMTE4MzA4LCAxMTgzMTIsIAotICAgIDExODMxNiwgMTE4MzIwLCAxMTgzMjQsIDExODMyOCwgMTE4MzMyLCAxMTgzMzYsIDExODM0MCwgMTE4MzQ0LCAxMTgzNDgsIAotICAgIDExODM1MiwgMTE4MzU2LCAxMTgzNjAsIDExODM2NCwgMTE4MzY4LCAxMTgzNzIsIDExODM3NiwgMTE4MzgwLCAxMTgzODQsIAotICAgIDExODM4OCwgMTE4MzkyLCAxMTgzOTYsIDExODQwMCwgMTE4NDA0LCAxMTg0MDgsIDExODQxMiwgMTE4NDE2LCAxMTg0MjAsIAotICAgIDExODQyNCwgMTE4NDI4LCAxMTg0MzIsIDExODQzNiwgMTE4NDQwLCAxMTg0NDQsIDExODQ0OCwgMTE4NDUyLCAxMTg0NTYsIAotICAgIDExODQ2MCwgMTE4NDY0LCAxMTg0NjgsIDExODQ3MiwgMTE4NDc2LCAxMTg0ODAsIDExODQ4NCwgMTE4NDg4LCAxMTg0OTIsIAotICAgIDExODQ5NiwgMTE4NTAwLCAxMTg1MDQsIDExODUwOCwgMTE4NTEyLCAxMTg1MTYsIDExODUyMCwgMTE4NTI0LCAxMTg1MjgsIAotICAgIDExODUzMiwgMTE4NTM2LCAxMTg1NDAsIDExODU0NCwgMTE4NTQ4LCAxMTg1NTIsIDExODU1NiwgMTE4NTYwLCAxMTg1NjQsIAotICAgIDExODU2OCwgMTE4NTcyLCAxMTg1NzYsIDExODU4MCwgMTE4NTg0LCAxMTg1ODgsIDExODU5MiwgMTE4NTk2LCAxMTg2MDAsIAotICAgIDExODYwNCwgMTE4NjA4LCAxMTg2MTIsIDExODYxNiwgMTE4NjIwLCAxMTg2MjQsIDExODYyOCwgMTE4NjMyLCAxMTg2MzYsIAotICAgIDExODY0MCwgMTE4NjQ0LCAxMTg2NDgsIDExODY1MiwgMTE4NjU2LCAxMTg2NjAsIDExODY2NCwgMTE4NjY4LCAxMTg2NzIsIAotICAgIDExODY3NiwgMTE4NjgwLCAxMTg2ODQsIDExODY4OCwgMTE4NjkyLCAxMTg2OTYsIDExODcwMCwgMTE4NzA0LCAxMTg3MDgsIAotICAgIDExODcxMiwgMTE4NzE2LCAxMTg3MjAsIDExODcyNCwgMTE4NzI4LCAxMTg3MzIsIDExODczNiwgMTE4NzQwLCAxMTg3NDQsIAotICAgIDExODc0OCwgMTE4NzUyLCAxMTg3NTYsIDExODc2MCwgMTE4NzY0LCAxMTg3NjgsIDExODc3MiwgMTE4Nzc2LCAxMTg3ODAsIAotICAgIDExODc4NCwgMTE4Nzg4LCAxMTg3OTIsIDExODc5NiwgMTE4ODAwLCAxMTg4MDQsIDExODgwOCwgMTE4ODEyLCAxMTg4MTYsIAotICAgIDExODgyMCwgMTE4ODI0LCAxMTg4MjgsIDExODgzMiwgMTE4ODM2LCAxMTg4NDAsIDExODg0NCwgMTE4ODQ4LCAxMTg4NTIsIAotICAgIDExODg1NiwgMTE4ODYwLCAxMTg4NjQsIDExODg2OCwgMTE4ODcyLCAxMTg4NzYsIDExODg4MCwgMTE4ODg0LCAxMTg4ODgsIAotICAgIDExODg5MiwgMTE4ODk2LCAxMTg5MDAsIDExODkwNCwgMTE4OTA4LCAxMTg5MTIsIDExODkxNiwgMTE4OTIwLCAxMTg5MjQsIAotICAgIDExODkyOCwgMTE4OTMyLCAxMTg5MzYsIDExODk0MCwgMTE4OTQ0LCAxMTg5NDgsIDExODk1MiwgMTE4OTU2LCAxMTg5NjAsIAotICAgIDExODk2NCwgMTE4OTY4LCAxMTg5NzIsIDExODk3NiwgMTE4OTgwLCAxMTg5ODQsIDExODk4OCwgMTE4OTkyLCAxMTg5OTYsIAotICAgIDExOTAwMCwgMTE5MDA0LCAxMTkwMDgsIDExOTAxMiwgMTE5MDE2LCAxMTkwMjAsIDExOTAyNCwgMTE5MDI4LCAxMTkwMzIsIAotICAgIDExOTAzNiwgMTE5MDQwLCAxMTkwNDQsIDExOTA0OCwgMTE5MDUyLCAxMTkwNTYsIDExOTA2MCwgMTE5MDY0LCAxMTkwNjgsIAotICAgIDExOTA3MiwgMTE5MDc2LCAxMTkwODAsIDExOTA4NCwgMTE5MDg4LCAxMTkwOTIsIDExOTA5NiwgMTE5MTAwLCAxMTkxMDQsIAotICAgIDExOTEwOCwgMTE5MTEyLCAxMTkxMTYsIDExOTEyMCwgMTE5MTI0LCAxMTkxMjgsIDExOTEzMiwgMTE5MTM2LCAxMTkxNDAsIAotICAgIDExOTE0NCwgMTE5MTQ4LCAxMTkxNTIsIDExOTE1NiwgMTE5MTYwLCAxMTkxNjQsIDExOTE2OCwgMTE5MTcyLCAxMTkxNzYsIAotICAgIDExOTE4MCwgMTE5MTg0LCAxMTkxODgsIDExOTE5MiwgMTE5MTk2LCAxMTkyMDAsIDExOTIwNCwgMTE5MjA4LCAxMTkyMTIsIAotICAgIDExOTIxNiwgMTE5MjIwLCAxMTkyMjQsIDExOTIyOCwgMTE5MjMyLCAxMTkyMzYsIDExOTI0MCwgMTE5MjQ0LCAxMTkyNDgsIAotICAgIDExOTI1MiwgMTE5MjU2LCAxMTkyNjAsIDExOTI2NCwgMTE5MjY4LCAxMTkyNzIsIDExOTI3NiwgMTE5MjgwLCAxMTkyODQsIAotICAgIDExOTI4OCwgMTE5MjkyLCAxMTkyOTYsIDExOTMwMCwgMTE5MzA0LCAxMTkzMDgsIDExOTMxMiwgMTE5MzE2LCAxMTkzMjAsIAotICAgIDExOTMyNCwgMTE5MzI4LCAxMTkzMzIsIDExOTMzNiwgMTE5MzQwLCAxMTkzNDQsIDExOTM0OCwgMTE5MzUyLCAxMTkzNTYsIAotICAgIDExOTM2MCwgMTE5MzY0LCAxMTkzNjgsIDExOTM3MiwgMTE5Mzc2LCAxMTkzODAsIDExOTM4NCwgMTE5Mzg4LCAxMTkzOTIsIAotICAgIDExOTM5NiwgMTE5NDAwLCAxMTk0MDQsIDExOTQwOCwgMTE5NDEyLCAxMTk0MTYsIDExOTQyMCwgMTE5NDI0LCAxMTk0MjgsIAotICAgIDExOTQzMiwgMTE5NDM2LCAxMTk0NDAsIDExOTQ0NCwgMTE5NDQ4LCAxMTk0NTIsIDExOTQ1NiwgMTE5NDYwLCAxMTk0NjQsIAotICAgIDExOTQ2OCwgMTE5NDcyLCAxMTk0NzYsIDExOTQ4MCwgMTE5NDg0LCAxMTk0ODgsIDExOTQ5MiwgMTE5NDk2LCAxMTk1MDAsIAotICAgIDExOTUwNCwgMTE5NTA4LCAxMTk1MTIsIDExOTUxNiwgMTE5NTIwLCAxMTk1MjQsIDExOTUyOCwgMTE5NTMyLCAxMTk1MzYsIAotICAgIDExOTU0MCwgMTE5NTQ0LCAxMTk1NDgsIDExOTU1MiwgMTE5NTU2LCAxMTk1NjAsIDExOTU2NCwgMTE5NTY4LCAxMTk1NzIsIAotICAgIDExOTU3NiwgMTE5NTgwLCAxMTk1ODQsIDExOTU4OCwgMTE5NTkyLCAxMTk1OTYsIDExOTYwMCwgMTE5NjA0LCAxMTk2MDgsIAotICAgIDExOTYxMiwgMTE5NjE2LCAxMTk2MjAsIDExOTYyNCwgMTE5NjI4LCAxMTk2MzIsIDExOTYzNiwgMTE5NjQwLCAxMTk2NDQsIAotICAgIDExOTY0OCwgMTE5NjUyLCAxMTk2NTYsIDExOTY2MCwgMTE5NjY0LCAxMTk2NjgsIDExOTY3MiwgMTE5Njc2LCAxMTk2ODAsIAotICAgIDExOTY4NCwgMTE5Njg4LCAxMTk2OTIsIDExOTY5NiwgMTE5NzAwLCAxMTk3MDQsIDExOTcwOCwgMTE5NzEyLCAxMTk3MTYsIAotICAgIDExOTcyMCwgMTE5NzI0LCAxMTk3MjgsIDExOTczMiwgMTE5NzM2LCAxMTk3NDAsIDExOTc0NCwgMTE5NzQ4LCAxMTk3NTIsIAotICAgIDExOTc1NiwgMTE5NzYwLCAxMTk3NjQsIDExOTc2OCwgMTE5NzcyLCAxMTk3NzYsIDExOTc4MCwgMTE5Nzg0LCAxMTk3ODgsIAotICAgIDExOTc5MiwgMTE5Nzk2LCAxMTk4MDAsIDExOTgwNCwgMTE5ODA4LCAxMTk4MTIsIDExOTgxNiwgMTE5ODIwLCAxMTk4MjQsIAotICAgIDExOTgyOCwgMTE5ODMyLCAxMTk4MzYsIDExOTg0MCwgMTE5ODQ0LCAxMTk4NDgsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIAotICAgIDExOTg2NCwgMTE5ODY4LCAxMTk4NzIsIDExOTg3NiwgMTE5ODgwLCAxMTk4ODQsIDExOTg4OCwgMTE5ODkyLCAxMTk4OTYsIAotICAgIDExOTkwMCwgMTE5OTA0LCAxMTk5MDgsIDExOTkxMiwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI4LCAxMTk5MzIsIAotICAgIDExOTkzNiwgMTE5OTQwLCAxMTk5NDQsIDExOTk0OCwgMTE5OTUyLCAxMTk5NTYsIDExOTk2MCwgMTE5OTY0LCAxMTk5NjgsIAotICAgIDExOTk3MiwgMTE5OTc2LCAxMTk5ODAsIDExOTk4NCwgMTE5OTg4LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAxMjAwMDQsIAotICAgIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMiwgMTIwMDM2LCAxMjAwNDAsIAotICAgIDEyMDA0NCwgMTIwMDQ4LCAxMjAwNTIsIDEyMDA1NiwgMTIwMDYwLCAxMjAwNjQsIDEyMDA2OCwgMTIwMDcyLCAxMjAwNzYsIAotICAgIDEyMDA4MCwgMTIwMDg0LCAxMjAwODgsIDEyMDA5MiwgMTIwMDk2LCAxMjAxMDAsIDEyMDEwNCwgMTIwMTA4LCAxMjAxMTIsIAotICAgIDEyMDExNiwgMTIwMTIwLCAxMjAxMjQsIDEyMDEyOCwgMTIwMTMyLCAxMjAxMzYsIDEyMDE0MCwgMTIwMTQ0LCAxMjAxNDgsIAotICAgIDEyMDE1MiwgMTIwMTU2LCAxMjAxNjAsIDEyMDE2NCwgMTIwMTY4LCAxMjAxNzIsIDEyMDE3NiwgMTIwMTgwLCAxMjAxODQsIAotICAgIDEyMDE4OCwgMTIwMTkyLCAxMjAxOTYsIDEyMDIwMCwgMTIwMjA0LCAxMjAyMDgsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIAotICAgIDEyMDIyNCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIAotICAgIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIAotICAgIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI0LCAxMjAzMjgsIAotICAgIDEyMDMzMiwgMTIwMzM2LCAxMjAzNDAsIDEyMDM0NCwgMTIwMzQ4LCAxMjAzNTIsIDEyMDM1NiwgMTIwMzYwLCAxMjAzNjQsIAotICAgIDEyMDM2OCwgMTIwMzcyLCAxMjAzNzYsIDEyMDM4MCwgMTIwMzg0LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjA0MDAsIAotICAgIDEyMDQwNCwgMTIwNDA4LCAxMjA0MTIsIDEyMDQxNiwgMTIwNDIwLCAxMjA0MjQsIDEyMDQyOCwgMTIwNDMyLCAxMjA0MzYsIAotICAgIDEyMDQ0MCwgMTIwNDQ0LCAxMjA0NDgsIDEyMDQ1MiwgMTIwNDU2LCAxMjA0NjAsIDEyMDQ2NCwgMTIwNDY4LCAxMjA0NzIsIAotICAgIDEyMDQ3NiwgMTIwNDgwLCAxMjA0ODQsIDEyMDQ4OCwgMTIwNDkyLCAxMjA0OTYsIDEyMDUwMCwgMTIwNTA0LCAxMjA1MDgsIAotICAgIDEyMDUxMiwgMTIwNTE2LCAxMjA1MjAsIDEyMDUyNCwgMTIwNTI4LCAxMjA1MzIsIDEyMDUzNiwgMTIwNTQwLCAxMjA1NDQsIAotICAgIDEyMDU0OCwgMTIwNTUyLCAxMjA1NTYsIDEyMDU2MCwgMTIwNTY0LCAxMjA1NjgsIDEyMDU3MiwgMTIwNTc2LCAxMjA1ODAsIAotICAgIDEyMDU4NCwgMTIwNTg4LCAxMjA1OTIsIDEyMDU5NiwgMTIwNjAwLCAxMjA2MDQsIDEyMDYwOCwgMTIwNjEyLCAxMjA2MTYsIAotICAgIDEyMDYyMCwgMTIwNjI0LCAxMjA2MjgsIDEyMDYzMiwgMTIwNjM2LCAxMjA2NDAsIDEyMDY0NCwgMTIwNjQ4LCAxMjA2NTIsIAotICAgIDEyMDY1NiwgMTIwNjYwLCAxMjA2NjQsIDEyMDY2OCwgMTIwNjcyLCAxMjA2NzYsIDEyMDY4MCwgMTIwNjg0LCAxMjA2ODgsIAotICAgIDEyMDY5MiwgMTIwNjk2LCAxMjA3MDAsIDEyMDcwNCwgMTIwNzA4LCAxMjA3MTIsIDEyMDcxNiwgMTIwNzIwLCAxMjA3MjQsIAotICAgIDEyMDcyOCwgMTIwNzMyLCAxMjA3MzYsIDEyMDc0MCwgMTIwNzQ0LCAxMjA3NDgsIDEyMDc1MiwgMTIwNzU2LCAxMjA3NjAsIAotICAgIDEyMDc2NCwgMTIwNzY4LCAxMjA3NzIsIDEyMDc3NiwgMTIwNzgwLCAxMjA3ODQsIDEyMDc4OCwgMTIwNzkyLCAxMjA3OTYsIAotICAgIDEyMDgwMCwgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIAotICAgIDEyMDgzNiwgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIAotICAgIDEyMDg3MiwgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIAotICAgIDEyMDkwOCwgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIAotICAgIDEyMDk0NCwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIAotICAgIDEyMDk4MCwgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIAotICAgIDEyMTAxNiwgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIAotICAgIDEyMTA1MiwgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIAotICAgIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIAotICAgIDEyMTEyNCwgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIAotICAgIDEyMTE2MCwgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIAotICAgIDEyMTE5NiwgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIAotICAgIDEyMTIzMiwgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIAotICAgIDEyMTI2OCwgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIAotICAgIDEyMTMwNCwgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIAotICAgIDEyMTM0MCwgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIAotICAgIDEyMTM3NiwgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIAotICAgIDEyMTQxMiwgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIAotICAgIDEyMTQ0OCwgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIAotICAgIDEyMTQ4NCwgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIAotICAgIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIAotICAgIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIAotICAgIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIAotICAgIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIAotICAgIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIAotICAgIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIAotICAgIDEyMTczNiwgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIAotICAgIDEyMTc3MiwgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIAotICAgIDEyMTgwOCwgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIAotICAgIDEyMTg0NCwgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIAotICAgIDEyMTg4MCwgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIAotICAgIDEyMTkxNiwgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIAotICAgIDEyMTk1MiwgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIAotICAgIDEyMTk4OCwgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIAotICAgIDEyMjAyNCwgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIAotICAgIDEyMjA2MCwgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIAotICAgIDEyMjA5NiwgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIAotICAgIDEyMjEzMiwgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIAotICAgIDEyMjE2OCwgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIAotICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIAotICAgIDEyMjI0MCwgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIAotICAgIDEyMjI3NiwgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIAotICAgIDEyMjMxMiwgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIAotICAgIDEyMjM0OCwgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIAotICAgIDEyMjM4NCwgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIAotICAgIDEyMjQyMCwgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIAotICAgIDEyMjQ1NiwgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIAotICAgIDEyMjQ5MiwgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIAotICAgIDEyMjUyOCwgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIAotICAgIDEyMjU2NCwgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA4MDAsIAorICAgIDEyMDgwNCwgMTIwODA4LCAxMjA4MTIsIDEyMDgxNiwgMTIwODIwLCAxMjA4MjQsIDEyMDgyOCwgMTIwODMyLCAxMjA4MzYsIAorICAgIDEyMDg0MCwgMTIwODQ0LCAxMjA4NDgsIDEyMDg1MiwgMTIwODU2LCAxMjA4NjAsIDEyMDg2NCwgMTIwODY4LCAxMjA4NzIsIAorICAgIDEyMDg3NiwgMTIwODgwLCAxMjA4ODQsIDEyMDg4OCwgMTIwODkyLCAxMjA4OTYsIDEyMDkwMCwgMTIwOTA0LCAxMjA5MDgsIAorICAgIDEyMDkxMiwgMTIwOTE2LCAxMjA5MjAsIDEyMDkyNCwgMTIwOTI4LCAxMjA5MzIsIDEyMDkzNiwgMTIwOTQwLCAxMjA5NDQsIAorICAgIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAxMjA5NjgsIDEyMDk3MiwgMTIwOTc2LCAxMjA5ODAsIAorICAgIDEyMDk4NCwgMTIwOTg4LCAxMjA5OTIsIDEyMDk5NiwgMTIxMDAwLCAxMjEwMDQsIDEyMTAwOCwgMTIxMDEyLCAxMjEwMTYsIAorICAgIDEyMTAyMCwgMTIxMDI0LCAxMjEwMjgsIDEyMTAzMiwgMTIxMDM2LCAxMjEwNDAsIDEyMTA0NCwgMTIxMDQ4LCAxMjEwNTIsIAorICAgIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcyLCAxMjEwNzYsIDEyMTA4MCwgMTIxMDg0LCAxMjEwODgsIAorICAgIDEyMTA5MiwgMTIxMDk2LCAxMjExMDAsIDEyMTEwNCwgMTIxMTA4LCAxMjExMTIsIDEyMTExNiwgMTIxMTIwLCAxMjExMjQsIAorICAgIDEyMTEyOCwgMTIxMTMyLCAxMjExMzYsIDEyMTE0MCwgMTIxMTQ0LCAxMjExNDgsIDEyMTE1MiwgMTIxMTU2LCAxMjExNjAsIAorICAgIDEyMTE2NCwgMTIxMTY4LCAxMjExNzIsIDEyMTE3NiwgMTIxMTgwLCAxMjExODQsIDEyMTE4OCwgMTIxMTkyLCAxMjExOTYsIAorICAgIDEyMTIwMCwgMTIxMjA0LCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE2LCAxMjEyMjAsIDEyMTIyNCwgMTIxMjI4LCAxMjEyMzIsIAorICAgIDEyMTIzNiwgMTIxMjQwLCAxMjEyNDQsIDEyMTI0OCwgMTIxMjUyLCAxMjEyNTYsIDEyMTI2MCwgMTIxMjY0LCAxMjEyNjgsIAorICAgIDEyMTI3MiwgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjg4LCAxMjEyOTIsIDEyMTI5NiwgMTIxMzAwLCAxMjEzMDQsIAorICAgIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAxMjEzNDAsIAorICAgIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAxMjEzNzYsIAorICAgIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAxMjE0MTIsIAorICAgIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAxMjE0NDgsIAorICAgIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAxMjE0ODQsIAorICAgIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIAorICAgIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIAorICAgIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIAorICAgIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIAorICAgIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIAorICAgIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAxMjE3MDAsIAorICAgIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIDEyMTcxNiwgMTIxNzIwLCAxMjE3MjQsIDEyMTcyOCwgMTIxNzMyLCAxMjE3MzYsIAorICAgIDEyMTc0MCwgMTIxNzQ0LCAxMjE3NDgsIDEyMTc1MiwgMTIxNzU2LCAxMjE3NjAsIDEyMTc2NCwgMTIxNzY4LCAxMjE3NzIsIAorICAgIDEyMTc3NiwgMTIxNzgwLCAxMjE3ODQsIDEyMTc4OCwgMTIxNzkyLCAxMjE3OTYsIDEyMTgwMCwgMTIxODA0LCAxMjE4MDgsIAorICAgIDEyMTgxMiwgMTIxODE2LCAxMjE4MjAsIDEyMTgyNCwgMTIxODI4LCAxMjE4MzIsIDEyMTgzNiwgMTIxODQwLCAxMjE4NDQsIAorICAgIDEyMTg0OCwgMTIxODUyLCAxMjE4NTYsIDEyMTg2MCwgMTIxODY0LCAxMjE4NjgsIDEyMTg3MiwgMTIxODc2LCAxMjE4ODAsIAorICAgIDEyMTg4NCwgMTIxODg4LCAxMjE4OTIsIDEyMTg5NiwgMTIxOTAwLCAxMjE5MDQsIDEyMTkwOCwgMTIxOTEyLCAxMjE5MTYsIAorICAgIDEyMTkyMCwgMTIxOTI0LCAxMjE5MjgsIDEyMTkzMiwgMTIxOTM2LCAxMjE5NDAsIDEyMTk0NCwgMTIxOTQ4LCAxMjE5NTIsIAorICAgIDEyMTk1NiwgMTIxOTYwLCAxMjE5NjQsIDEyMTk2OCwgMTIxOTcyLCAxMjE5NzYsIDEyMTk4MCwgMTIxOTg0LCAxMjE5ODgsIAorICAgIDEyMTk5MiwgMTIxOTk2LCAxMjIwMDAsIDEyMjAwNCwgMTIyMDA4LCAxMjIwMTIsIDEyMjAxNiwgMTIyMDIwLCAxMjIwMjQsIAorICAgIDEyMjAyOCwgMTIyMDMyLCAxMjIwMzYsIDEyMjA0MCwgMTIyMDQ0LCAxMjIwNDgsIDEyMjA1MiwgMTIyMDU2LCAxMjIwNjAsIAorICAgIDEyMjA2NCwgMTIyMDY4LCAxMjIwNzIsIDEyMjA3NiwgMTIyMDgwLCAxMjIwODQsIDEyMjA4OCwgMTIyMDkyLCAxMjIwOTYsIAorICAgIDEyMjEwMCwgMTIyMTA0LCAxMjIxMDgsIDEyMjExMiwgMTIyMTE2LCAxMjIxMjAsIDEyMjEyNCwgMTIyMTI4LCAxMjIxMzIsIAorICAgIDEyMjEzNiwgMTIyMTQwLCAxMjIxNDQsIDEyMjE0OCwgMTIyMTUyLCAxMjIxNTYsIDEyMjE2MCwgMTIyMTY0LCAxMjIxNjgsIAorICAgIDEyMjE3MiwgMTIyMTc2LCAxMjIxODAsIDEyMjE4NCwgMTIyMTg4LCAxMjIxOTIsIDEyMjE5NiwgMTIyMjAwLCAxMjIyMDQsIAorICAgIDEyMjIwOCwgMTIyMjEyLCAxMjIyMTYsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM2LCAxMjIyNDAsIAorICAgIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAxMjIyNjQsIDEyMjI2OCwgMTIyMjcyLCAxMjIyNzYsIAorICAgIDEyMjI4MCwgMTIyMjg0LCAxMjIyODgsIDEyMjI5MiwgMTIyMjk2LCAxMjIzMDAsIDEyMjMwNCwgMTIyMzA4LCAxMjIzMTIsIAorICAgIDEyMjMxNiwgMTIyMzIwLCAxMjIzMjQsIDEyMjMyOCwgMTIyMzMyLCAxMjIzMzYsIDEyMjM0MCwgMTIyMzQ0LCAxMjIzNDgsIAorICAgIDEyMjM1MiwgMTIyMzU2LCAxMjIzNjAsIDEyMjM2NCwgMTIyMzY4LCAxMjIzNzIsIDEyMjM3NiwgMTIyMzgwLCAxMjIzODQsIAorICAgIDEyMjM4OCwgMTIyMzkyLCAxMjIzOTYsIDEyMjQwMCwgMTIyNDA0LCAxMjI0MDgsIDEyMjQxMiwgMTIyNDE2LCAxMjI0MjAsIAorICAgIDEyMjQyNCwgMTIyNDI4LCAxMjI0MzIsIDEyMjQzNiwgMTIyNDQwLCAxMjI0NDQsIDEyMjQ0OCwgMTIyNDUyLCAxMjI0NTYsIAorICAgIDEyMjQ2MCwgMTIyNDY0LCAxMjI0NjgsIDEyMjQ3MiwgMTIyNDc2LCAxMjI0ODAsIDEyMjQ4NCwgMTIyNDg4LCAxMjI0OTIsIAorICAgIDEyMjQ5NiwgMTIyNTAwLCAxMjI1MDQsIDEyMjUwOCwgMTIyNTEyLCAxMjI1MTYsIDEyMjUyMCwgMTIyNTI0LCAxMjI1MjgsIAorICAgIDEyMjUzMiwgMTIyNTM2LCAxMjI1NDAsIDEyMjU0NCwgMTIyNTQ4LCAxMjI1NTIsIDEyMjU1NiwgMTIyNTYwLCAxMjI1NjQsIAorICAgIDEyMjU2OCwgMTIyNTcyLCAxMjI1NzYsIDEyMjU4MCwgMTIyNTg0LCAxMjI1ODgsIDEyMjU5MiwgMTIyNTk2LCAxMjI2MDAsIAorICAgIDEyMjYwNCwgMTIyNjA4LCAxMjI2MTIsIDEyMjYxNiwgMTIyNjIwLCAxMjI2MjQsIDEyMjYyOCwgMTIyNjMyLCAxMjI2MzYsIAorICAgIDEyMjY0MCwgMTIyNjQ0LCAxMjI2NDgsIDEyMjY1MiwgMTIyNjU2LCAxMjI2NjAsIDEyMjY2NCwgMTIyNjY4LCAxMjI2NzIsIAorICAgIDEyMjY3NiwgMTIyNjgwLCAxMjI2ODQsIDEyMjY4OCwgMTIyNjkyLCAxMjI2OTYsIDEyMjcwMCwgMTIyNzA0LCAxMjI3MDgsIAorICAgIDEyMjcxMiwgMTIyNzE2LCAxMjI3MjAsIDEyMjcyNCwgMTIyNzI4LCAxMjI3MzIsIDEyMjczNiwgMTIyNzQwLCAxMjI3NDQsIAorICAgIDEyMjc0OCwgMTIyNzUyLCAxMjI3NTYsIDEyMjc2MCwgMTIyNzY0LCAxMjI3NjgsIDEyMjc3MiwgMTIyNzc2LCAxMjI3ODAsIAorICAgIDEyMjc4NCwgMTIyNzg4LCAxMjI3OTIsIDEyMjc5NiwgMTIyODAwLCAxMjI4MDQsIDEyMjgwOCwgMTIyODEyLCAxMjI4MTYsIAorICAgIDEyMjgyMCwgMTIyODI0LCAxMjI4MjgsIDEyMjgzMiwgMTIyODM2LCAxMjI4NDAsIDEyMjg0NCwgMTIyODQ4LCAxMjI4NTIsIAorICAgIDEyMjg1NiwgMTIyODYwLCAxMjI4NjQsIDEyMjg2OCwgMTIyODcyLCAxMjI4NzYsIDEyMjg4MCwgMTIyODg0LCAxMjI4ODgsIAorICAgIDEyMjg5MiwgMTIyODk2LCAxMjI5MDAsIDEyMjkwNCwgMTIyOTA4LCAxMjI5MTIsIDEyMjkxNiwgMTIyOTIwLCAxMjI5MjQsIAorICAgIDEyMjkyOCwgMTIyOTMyLCAxMjI5MzYsIDEyMjk0MCwgMTIyOTQ0LCAxMjI5NDgsIDEyMjk1MiwgMTIyOTU2LCAxMjI5NjAsIAorICAgIDEyMjk2NCwgMTIyOTY4LCAxMjI5NzIsIDEyMjk3NiwgMTIyOTgwLCAxMjI5ODQsIDEyMjk4OCwgMTIyOTkyLCAxMjI5OTYsIAorICAgIDEyMzAwMCwgMTIzMDA0LCAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyNCwgMTIzMDI4LCAxMjMwMzIsIAorICAgIDEyMzAzNiwgMTIzMDQwLCAxMjMwNDQsIDEyMzA0OCwgMTIzMDUyLCAxMjMwNTYsIDEyMzA2MCwgMTIzMDY0LCAxMjMwNjgsIAorICAgIDEyMzA3MiwgMTIzMDc2LCAxMjMwODAsIDEyMzA4NCwgMTIzMDg4LCAxMjMwOTIsIDEyMzA5NiwgMTIzMTAwLCAxMjMxMDQsIAorICAgIDEyMzEwOCwgMTIzMTEyLCAxMjMxMTYsIDEyMzEyMCwgMTIzMTI0LCAxMjMxMjgsIDEyMzEzMiwgMTIzMTM2LCAxMjMxNDAsIAorICAgIDEyMzE0NCwgMTIzMTQ4LCAxMjMxNTIsIDEyMzE1NiwgMTIzMTYwLCAxMjMxNjQsIDEyMzE2OCwgMTIzMTcyLCAxMjMxNzYsIAorICAgIDEyMzE4MCwgMTIzMTg0LCAxMjMxODgsIDEyMzE5MiwgMTIzMTk2LCAxMjMyMDAsIDEyMzIwNCwgMTIzMjA4LCAxMjMyMTIsIAorICAgIDEyMzIxNiwgMTIzMjIwLCAxMjMyMjQsIDEyMzIyOCwgMTIzMjMyLCAxMjMyMzYsIDEyMzI0MCwgMTIzMjQ0LCAxMjMyNDgsIAorICAgIDEyMzI1MiwgMTIzMjU2LCAxMjMyNjAsIDEyMzI2NCwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NiwgMTIzMjgwLCAxMjMyODQsIAorICAgIDEyMzI4OCwgMTIzMjkyLCAxMjMyOTYsIDEyMzMwMCwgMTIzMzA0LCAxMjMzMDgsIDEyMzMxMiwgMTIzMzE2LCAxMjMzMjAsIAorICAgIDEyMzMyNCwgMTIzMzI4LCAxMjMzMzIsIDEyMzMzNiwgMTIzMzQwLCAxMjMzNDQsIDEyMzM0OCwgMTIzMzUyLCAxMjMzNTYsIAorICAgIDEyMzM2MCwgMTIzMzY0LCAxMjMzNjgsIDEyMzM3MiwgMTIzMzc2LCAxMjMzODAsIDEyMzM4NCwgMTIzMzg4LCAxMjMzOTIsIAorICAgIDEyMzM5NiwgMTIzNDAwLCAxMjM0MDQsIDEyMzQwOCwgMTIzNDEyLCAxMjM0MTYsIDEyMzQyMCwgMTIzNDI0LCAxMjM0MjgsIAorICAgIDEyMzQzMiwgMTIzNDM2LCAxMjM0NDAsIDEyMzQ0NCwgMTIzNDQ4LCAxMjM0NTIsIDEyMzQ1NiwgMTIzNDYwLCAxMjM0NjQsIAorICAgIDEyMzQ2OCwgMTIzNDcyLCAxMjM0NzYsIDEyMzQ4MCwgMTIzNDg0LCAxMjM0ODgsIDEyMzQ5MiwgMTIzNDk2LCAxMjM1MDAsIAorICAgIDEyMzUwNCwgMTIzNTA4LCAxMjM1MTIsIDEyMzUxNiwgMTIzNTIwLCAxMjM1MjQsIDEyMzUyOCwgMTIzNTMyLCAxMjM1MzYsIAorICAgIDEyMzU0MCwgMTIzNTQ0LCAxMjM1NDgsIDEyMzU1MiwgMTIzNTU2LCAxMjM1NjAsIDEyMzU2NCwgMTIzNTY4LCAxMjM1NzIsIAorICAgIDEyMzU3NiwgMTIzNTgwLCAxMjM1ODQsIDEyMzU4OCwgMTIzNTkyLCAxMjM1OTYsIDEyMzYwMCwgMTIzNjA0LCAxMjM2MDgsIAorICAgIDEyMzYxMiwgMTIzNjE2LCAxMjM2MjAsIDEyMzYyNCwgMTIzNjI4LCAxMjM2MzIsIDEyMzYzNiwgMTIzNjQwLCAxMjM2NDQsIAorICAgIDEyMzY0OCwgMTIzNjUyLCAxMjM2NTYsIDEyMzY2MCwgMTIzNjY0LCAxMjM2NjgsIDEyMzY3MiwgMTIzNjc2LCAxMjM2ODAsIAorICAgIDEyMzY4NCwgMTIzNjg4LCAxMjM2OTIsIDEyMzY5NiwgMTIzNzAwLCAxMjM3MDQsIDEyMzcwOCwgMTIzNzEyLCAxMjM3MTYsIAorICAgIDEyMzcyMCwgMTIzNzI0LCAxMjM3MjgsIDEyMzczMiwgMTIzNzM2LCAxMjM3NDAsIDEyMzc0NCwgMTIzNzQ4LCAxMjM3NTIsIAorICAgIDEyMzc1NiwgMTIzNzYwLCAxMjM3NjQsIDEyMzc2OCwgMTIzNzcyLCAxMjM3NzYsIDEyMzc4MCwgMTIzNzg0LCAxMjM3ODgsIAorICAgIDEyMzc5MiwgMTIzNzk2LCAxMjM4MDAsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMTIzODIwLCAxMjM4MjQsIAorICAgIDEyMzgyOCwgMTIzODMyLCAxMjM4MzYsIDEyMzg0MCwgMTIzODQ0LCAxMjM4NDgsIDEyMzg1MiwgMTIzODU2LCAxMjM4NjAsIAorICAgIDEyMzg2NCwgMTIzODY4LCAxMjM4NzIsIDEyMzg3NiwgMTIzODgwLCAxMjM4ODQsIDEyMzg4OCwgMTIzODkyLCAxMjM4OTYsIAorICAgIDEyMzkwMCwgMTIzOTA0LCAxMjM5MDgsIDEyMzkxMiwgMTIzOTE2LCAxMjM5MjAsIDEyMzkyNCwgMTIzOTI4LCAxMjM5MzIsIAorICAgIDEyMzkzNiwgMTIzOTQwLCAxMjM5NDQsIDEyMzk0OCwgMTIzOTUyLCAxMjM5NTYsIDEyMzk2MCwgMTIzOTY0LCAxMjM5NjgsIAorICAgIDEyMzk3MiwgMTIzOTc2LCAxMjM5ODAsIDEyMzk4NCwgMTIzOTg4LCAxMjM5OTIsIDEyMzk5NiwgMTI0MDAwLCAxMjQwMDQsIAorICAgIDEyNDAwOCwgMTI0MDEyLCAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIDEyNDAzMiwgMTI0MDM2LCAxMjQwNDAsIAorICAgIDEyNDA0NCwgMTI0MDQ4LCAxMjQwNTIsIDEyNDA1NiwgMTI0MDYwLCAxMjQwNjQsIDEyNDA2OCwgMTI0MDcyLCAxMjQwNzYsIAorICAgIDEyNDA4MCwgMTI0MDg0LCAxMjQwODgsIDEyNDA5MiwgMTI0MDk2LCAxMjQxMDAsIDEyNDEwNCwgMTI0MTA4LCAxMjQxMTIsIAorICAgIDEyNDExNiwgMTI0MTIwLCAxMjQxMjQsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzYsIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIAorICAgIDEyNDE1MiwgMTI0MTU2LCAxMjQxNjAsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTgwLCAxMjQxODQsIAorICAgIDEyNDE4OCwgMTI0MTkyLCAxMjQxOTYsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDgsIDEyNDIxMiwgMTI0MjE2LCAxMjQyMjAsIAorICAgIDEyNDIyNCwgMTI0MjI4LCAxMjQyMzIsIDEyNDIzNiwgMTI0MjQwLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIAorICAgIDEyNDI2MCwgMTI0MjY0LCAxMjQyNjgsIDEyNDI3MiwgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMTI0Mjg4LCAxMjQyOTIsIAorICAgIDEyNDI5NiwgMTI0MzAwLCAxMjQzMDQsIDEyNDMwOCwgMTI0MzEyLCAxMjQzMTYsIDEyNDMyMCwgMTI0MzI0LCAxMjQzMjgsIAorICAgIDEyNDMzMiwgMTI0MzM2LCAxMjQzNDAsIDEyNDM0NCwgMTI0MzQ4LCAxMjQzNTIsIDEyNDM1NiwgMTI0MzYwLCAxMjQzNjQsIAorICAgIDEyNDM2OCwgMTI0MzcyLCAxMjQzNzYsIDEyNDM4MCwgMTI0Mzg0LCAxMjQzODgsIDEyNDM5MiwgMTI0Mzk2LCAxMjQ0MDAsIAorICAgIDEyNDQwNCwgMTI0NDA4LCAxMjQ0MTIsIDEyNDQxNiwgMTI0NDIwLCAxMjQ0MjQsIDEyNDQyOCwgMTI0NDMyLCAxMjQ0MzYsIAorICAgIDEyNDQ0MCwgMTI0NDQ0LCAxMjQ0NDgsIDEyNDQ1MiwgMTI0NDU2LCAxMjQ0NjAsIDEyNDQ2NCwgMTI0NDY4LCAxMjQ0NzIsIAorICAgIDEyNDQ3NiwgMTI0NDgwLCAxMjQ0ODQsIDEyNDQ4OCwgMTI0NDkyLCAxMjQ0OTYsIDEyNDUwMCwgMTI0NTA0LCAxMjQ1MDgsIAorICAgIDEyNDUxMiwgMTI0NTE2LCAxMjQ1MjAsIDEyNDUyNCwgMTI0NTI4LCAxMjQ1MzIsIDEyNDUzNiwgMTI0NTQwLCAxMjQ1NDQsIAorICAgIDEyNDU0OCwgMTI0NTUyLCAxMjQ1NTYsIDEyNDU2MCwgMTI0NTY0LCAxMjQ1NjgsIDEyNDU3MiwgMTI0NTc2LCAxMjQ1ODAsIAorICAgIDEyNDU4NCwgMTI0NTg4LCAxMjQ1OTIsIDEyNDU5NiwgMTI0NjAwLCAxMjQ2MDQsIDEyNDYwOCwgMTI0NjEyLCAxMjQ2MTYsIAorICAgIDEyNDYyMCwgMTI0NjI0LCAxMjQ2MjgsIDEyNDYzMiwgMTI0NjM2LCAxMjQ2NDAsIDEyNDY0NCwgMTI0NjQ4LCAxMjQ2NTIsIAorICAgIDEyNDY1NiwgMTI0NjYwLCAxMjQ2NjQsIDEyNDY2OCwgMTI0NjcyLCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg0LCAxMjQ2ODgsIAorICAgIDEyNDY5MiwgMTI0Njk2LCAxMjQ3MDAsIDEyNDcwNCwgMTI0NzA4LCAxMjQ3MTIsIDEyNDcxNiwgMTI0NzIwLCAxMjQ3MjQsIAorICAgIDEyNDcyOCwgMTI0NzMyLCAxMjQ3MzYsIDEyNDc0MCwgMTI0NzQ0LCAxMjQ3NDgsIDEyNDc1MiwgMTI0NzU2LCAxMjQ3NjAsIAorICAgIDEyNDc2NCwgMTI0NzY4LCAxMjQ3NzIsIDEyNDc3NiwgMTI0NzgwLCAxMjQ3ODQsIDEyNDc4OCwgMTI0NzkyLCAxMjQ3OTYsIAorICAgIDEyNDgwMCwgMTI0ODA0LCAxMjQ4MDgsIDEyNDgxMiwgMTI0ODE2LCAxMjQ4MjAsIDEyNDgyNCwgMTI0ODI4LCAxMjQ4MzIsIAorICAgIDEyNDgzNiwgMTI0ODQwLCAxMjQ4NDQsIDEyNDg0OCwgMTI0ODUyLCAxMjQ4NTYsIDEyNDg2MCwgMTI0ODY0LCAxMjQ4NjgsIAorICAgIDEyNDg3MiwgMTI0ODc2LCAxMjQ4ODAsIDEyNDg4NCwgMTI0ODg4LCAxMjQ4OTIsIDEyNDg5NiwgMTI0OTAwLCAxMjQ5MDQsIAorICAgIDEyNDkwOCwgMTI0OTEyLCAxMjQ5MTYsIDEyNDkyMCwgMTI0OTI0LCAxMjQ5MjgsIDEyNDkzMiwgMTI0OTM2LCAxMjQ5NDAsIAorICAgIDEyNDk0NCwgMTI0OTQ4LCAxMjQ5NTIsIDEyNDk1NiwgMTI0OTYwLCAxMjQ5NjQsIDEyNDk2OCwgMTI0OTcyLCAxMjQ5NzYsIAorICAgIDEyNDk4MCwgMTI0OTg0LCAxMjQ5ODgsIDEyNDk5MiwgMTI0OTk2LCAxMjUwMDAsIDEyNTAwNCwgMTI1MDA4LCAxMjUwMTIsIAorICAgIDEyNTAxNiwgMTI1MDIwLCAxMjUwMjQsIDEyNTAyOCwgMTI1MDMyLCAxMjUwMzYsIDEyNTA0MCwgMTI1MDQ0LCAxMjUwNDgsIAorICAgIDEyNTA1MiwgMTI1MDU2LCAxMjUwNjAsIDEyNTA2NCwgMTI1MDY4LCAxMjUwNzIsIDEyNTA3NiwgMTI1MDgwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MjI4LDcxICsyMDM4Myw3MiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAxMjI2MDQsIDEyMjYwOCwgCi0gICAgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAxMjI2NDAsIDEyMjY0NCwgCi0gICAgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAxMjI2NzYsIDEyMjY4MCwgCi0gICAgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAxMjI3MTIsIDEyMjcxNiwgCi0gICAgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAxMjI3NDgsIDEyMjc1MiwgCi0gICAgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAxMjI3ODQsIDEyMjc4OCwgCi0gICAgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAxMjI4MjAsIDEyMjgyNCwgCi0gICAgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAxMjI4NTYsIDEyMjg2MCwgCi0gICAgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAxMjI4OTIsIDEyMjg5NiwgCi0gICAgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAxMjI5MjgsIDEyMjkzMiwgCi0gICAgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAxMjI5NjQsIDEyMjk2OCwgCi0gICAgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAxMjMwMDAsIDEyMzAwNCwgCi0gICAgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAxMjMwMzYsIDEyMzA0MCwgCi0gICAgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAxMjMwNzIsIDEyMzA3NiwgCi0gICAgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAxMjMxMDgsIDEyMzExMiwgCi0gICAgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAxMjMxNDQsIDEyMzE0OCwgCi0gICAgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAxMjMxODAsIDEyMzE4NCwgCi0gICAgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAxMjMyMTYsIDEyMzIyMCwgCi0gICAgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAxMjMyNTIsIDEyMzI1NiwgCi0gICAgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAxMjMyODgsIDEyMzI5MiwgCi0gICAgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAxMjMzMjQsIDEyMzMyOCwgCi0gICAgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAxMjMzNjAsIDEyMzM2NCwgCi0gICAgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAxMjMzOTYsIDEyMzQwMCwgCi0gICAgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAxMjM0MzIsIDEyMzQzNiwgCi0gICAgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAxMjM0NjgsIDEyMzQ3MiwgCi0gICAgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAxMjM1MDQsIDEyMzUwOCwgCi0gICAgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAxMjM1NDAsIDEyMzU0NCwgCi0gICAgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAxMjM1NzYsIDEyMzU4MCwgCi0gICAgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAxMjM2MTIsIDEyMzYxNiwgCi0gICAgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAxMjM2NDgsIDEyMzY1MiwgCi0gICAgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAxMjM2ODQsIDEyMzY4OCwgCi0gICAgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAxMjM3MjAsIDEyMzcyNCwgCi0gICAgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAxMjM3NTYsIDEyMzc2MCwgCi0gICAgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAxMjM3OTIsIDEyMzc5NiwgCi0gICAgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAxMjM4MjgsIDEyMzgzMiwgCi0gICAgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAxMjM4NjQsIDEyMzg2OCwgCi0gICAgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAxMjM5MDAsIDEyMzkwNCwgCi0gICAgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAxMjM5MzYsIDEyMzk0MCwgCi0gICAgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAxMjM5NzIsIDEyMzk3NiwgCi0gICAgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAxMjQwMDgsIDEyNDAxMiwgCi0gICAgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAxMjQwNDQsIDEyNDA0OCwgCi0gICAgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAxMjQwODAsIDEyNDA4NCwgCi0gICAgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAxMjQxMTYsIDEyNDEyMCwgCi0gICAgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAxMjQxNTIsIDEyNDE1NiwgCi0gICAgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAxMjQxODgsIDEyNDE5MiwgCi0gICAgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAxMjQyMjQsIDEyNDIyOCwgCi0gICAgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAxMjQyNjAsIDEyNDI2NCwgCi0gICAgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAxMjQyOTYsIDEyNDMwMCwgCi0gICAgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjYsIDEyNDMzMCwgMTI0MzM0LCAxMjQzMzgsIDEyNDM0MiwgCi0gICAgMTI0MzQ2LCAxMjQzNTAsIDEyNDM1NCwgMTI0MzU4LCAxMjQzNjIsIDEyNDM2NiwgMTI0MzcwLCAxMjQzNzUsIDEyNDM3OSwgCi0gICAgMTI0MzgzLCAxMjQzODcsIDEyNDM5MSwgMTI0Mzk1LCAxMjQzOTksIDEyNDQwMywgMTI0NDA3LCAxMjQ0MTEsIDEyNDQxNSwgCi0gICAgMTI0NDE5LCAxMjQ0MjMsIDEyNDQyNywgMTI0NDMxLCAxMjQ0MzUsIDEyNDQzOSwgMTI0NDQ4LCAxMjQ0NTcsIDEyNDQ2MSwgCi0gICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCi0gICAgMTI0NTAxLCAxMjQ1MDUsIDEyNDUwOSwgMTI0NTEzLCAxMjQ1MTcsIDEyNDUyMSwgMTI0NTI1LCAxMjQ1MjksIDEyNDUzMywgCi0gICAgMTI0NTM3LCAxMjQ1NDEsIDEyNDU0NSwgMTI0NTQ5LCAxMjQ1NTMsIDEyNDU1NywgMTI0NTYxLCAxMjQ1NjUsIDEyNDU2OSwgCi0gICAgMTI0NTczLCAxMjQ1NzcsIDEyNDU4MSwgMTI0NTg1LCAxMjQ1ODksIDEyNDU5MywgMTI0NTk3LCAxMjQ2MDEsIDEyNDYwNSwgCi0gICAgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIDEyNDYyOSwgMTI0NjMzLCAxMjQ2MzcsIDEyNDY0MSwgCi0gICAgMTI0NjQ1LCAxMjQ2NDksIDEyNDY1MywgMTI0NjU3LCAxMjQ2NjEsIDEyNDY2NSwgMTI0NjY5LCAxMjQ2NzMsIDEyNDY3NywgCi0gICAgMTI0NjgxLCAxMjQ2ODUsIDEyNDY4OSwgMTI0NjkzLCAxMjQ2OTcsIDEyNDcwMSwgMTI0NzA1LCAxMjQ3MDksIDEyNDcxMywgCi0gICAgMTI0NzE3LCAxMjQ3MjEsIDEyNDcyNSwgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzQxLCAxMjQ3NDUsIDEyNDc0OSwgCi0gICAgMTI0NzUzLCAxMjQ3NTcsIDEyNDc2MSwgMTI0NzY1LCAxMjQ3NjksIDEyNDc3MywgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4NSwgCi0gICAgMTI0Nzg5LCAxMjQ3OTMsIDEyNDc5NywgMTI0ODAxLCAxMjQ4MDUsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMSwgCi0gICAgMTI0ODI1LCAxMjQ4MjksIDEyNDgzMywgMTI0ODM3LCAxMjQ4NDEsIDEyNDg0NSwgMTI0ODQ5LCAxMjQ4NTMsIDEyNDg1NywgCi0gICAgMTI0ODYxLCAxMjQ4NjUsIDEyNDg2OSwgMTI0ODczLCAxMjQ4NzcsIDEyNDg4MSwgMTI0ODg1LCAxMjQ4ODksIDEyNDg5MywgCi0gICAgMTI0ODk3LCAxMjQ5MDEsIDEyNDkwNSwgMTI0OTA5LCAxMjQ5MTMsIDEyNDkxNywgMTI0OTIxLCAxMjQ5MjUsIDEyNDkyOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MDg0LCAxMjUwODgsIDEyNTA5MiwgMTI1MDk2LCAKKyAgICAxMjUxMDAsIDEyNTEwNCwgMTI1MTA4LCAxMjUxMTIsIDEyNTExNiwgMTI1MTIwLCAxMjUxMjQsIDEyNTEyOCwgMTI1MTMyLCAKKyAgICAxMjUxMzYsIDEyNTE0MCwgMTI1MTQ0LCAxMjUxNDgsIDEyNTE1MiwgMTI1MTU2LCAxMjUxNjAsIDEyNTE2NCwgMTI1MTY4LCAKKyAgICAxMjUxNzIsIDEyNTE3NiwgMTI1MTgwLCAxMjUxODQsIDEyNTE4OCwgMTI1MTkyLCAxMjUxOTYsIDEyNTIwMCwgMTI1MjA0LCAKKyAgICAxMjUyMDgsIDEyNTIxMiwgMTI1MjE2LCAxMjUyMjAsIDEyNTIyNCwgMTI1MjI4LCAxMjUyMzIsIDEyNTIzNiwgMTI1MjQwLCAKKyAgICAxMjUyNDQsIDEyNTI0OCwgMTI1MjUyLCAxMjUyNTYsIDEyNTI2MCwgMTI1MjY0LCAxMjUyNjgsIDEyNTI3MiwgMTI1Mjc2LCAKKyAgICAxMjUyODAsIDEyNTI4NCwgMTI1Mjg4LCAxMjUyOTIsIDEyNTI5NiwgMTI1MzAwLCAxMjUzMDQsIDEyNTMwOCwgMTI1MzEyLCAKKyAgICAxMjUzMTYsIDEyNTMyMCwgMTI1MzI0LCAxMjUzMjgsIDEyNTMzMiwgMTI1MzM2LCAxMjUzNDAsIDEyNTM0NCwgMTI1MzQ4LCAKKyAgICAxMjUzNTIsIDEyNTM1NiwgMTI1MzYwLCAxMjUzNjQsIDEyNTM2OCwgMTI1MzcyLCAxMjUzNzYsIDEyNTM4MCwgMTI1Mzg0LCAKKyAgICAxMjUzODgsIDEyNTM5MiwgMTI1Mzk2LCAxMjU0MDAsIDEyNTQwNCwgMTI1NDA4LCAxMjU0MTIsIDEyNTQxNiwgMTI1NDIwLCAKKyAgICAxMjU0MjQsIDEyNTQyOCwgMTI1NDMyLCAxMjU0MzYsIDEyNTQ0MCwgMTI1NDQ0LCAxMjU0NDgsIDEyNTQ1MiwgMTI1NDU2LCAKKyAgICAxMjU0NjAsIDEyNTQ2NCwgMTI1NDY4LCAxMjU0NzIsIDEyNTQ3NiwgMTI1NDgwLCAxMjU0ODQsIDEyNTQ4OCwgMTI1NDkyLCAKKyAgICAxMjU0OTYsIDEyNTUwMCwgMTI1NTA0LCAxMjU1MDgsIDEyNTUxMiwgMTI1NTE2LCAxMjU1MjAsIDEyNTUyNCwgMTI1NTI4LCAKKyAgICAxMjU1MzIsIDEyNTUzNiwgMTI1NTQwLCAxMjU1NDQsIDEyNTU0OCwgMTI1NTUyLCAxMjU1NTYsIDEyNTU2MCwgMTI1NTY0LCAKKyAgICAxMjU1NjgsIDEyNTU3MiwgMTI1NTc2LCAxMjU1ODAsIDEyNTU4NCwgMTI1NTg4LCAxMjU1OTIsIDEyNTU5NiwgMTI1NjAwLCAKKyAgICAxMjU2MDQsIDEyNTYwOCwgMTI1NjEyLCAxMjU2MTYsIDEyNTYyMCwgMTI1NjI0LCAxMjU2MjgsIDEyNTYzMiwgMTI1NjM2LCAKKyAgICAxMjU2NDAsIDEyNTY0NCwgMTI1NjQ4LCAxMjU2NTIsIDEyNTY1NiwgMTI1NjYwLCAxMjU2NjQsIDEyNTY2OCwgMTI1NjcyLCAKKyAgICAxMjU2NzYsIDEyNTY4MCwgMTI1Njg0LCAxMjU2ODgsIDEyNTY5MiwgMTI1Njk2LCAxMjU3MDAsIDEyNTcwNCwgMTI1NzA4LCAKKyAgICAxMjU3MTIsIDEyNTcxNiwgMTI1NzIwLCAxMjU3MjQsIDEyNTcyOCwgMTI1NzMyLCAxMjU3MzYsIDEyNTc0MCwgMTI1NzQ0LCAKKyAgICAxMjU3NDgsIDEyNTc1MiwgMTI1NzU2LCAxMjU3NjAsIDEyNTc2NCwgMTI1NzY4LCAxMjU3NzIsIDEyNTc3NiwgMTI1NzgwLCAKKyAgICAxMjU3ODQsIDEyNTc4OCwgMTI1NzkyLCAxMjU3OTYsIDEyNTgwMCwgMTI1ODA0LCAxMjU4MDgsIDEyNTgxMiwgMTI1ODE2LCAKKyAgICAxMjU4MjAsIDEyNTgyNCwgMTI1ODI4LCAxMjU4MzIsIDEyNTgzNiwgMTI1ODQwLCAxMjU4NDQsIDEyNTg0OCwgMTI1ODUyLCAKKyAgICAxMjU4NTYsIDEyNTg2MCwgMTI1ODY0LCAxMjU4NjgsIDEyNTg3MiwgMTI1ODc2LCAxMjU4ODAsIDEyNTg4NCwgMTI1ODg4LCAKKyAgICAxMjU4OTIsIDEyNTg5NiwgMTI1OTAwLCAxMjU5MDQsIDEyNTkwOCwgMTI1OTEyLCAxMjU5MTYsIDEyNTkyMCwgMTI1OTI0LCAKKyAgICAxMjU5MjgsIDEyNTkzMiwgMTI1OTM2LCAxMjU5NDAsIDEyNTk0NCwgMTI1OTQ4LCAxMjU5NTIsIDEyNTk1NiwgMTI1OTYwLCAKKyAgICAxMjU5NjQsIDEyNTk2OCwgMTI1OTcyLCAxMjU5NzYsIDEyNTk4MCwgMTI1OTg0LCAxMjU5ODgsIDEyNTk5MiwgMTI1OTk2LCAKKyAgICAxMjYwMDAsIDEyNjAwNCwgMTI2MDA4LCAxMjYwMTIsIDEyNjAxNiwgMTI2MDIwLCAxMjYwMjQsIDEyNjAyOCwgMTI2MDMyLCAKKyAgICAxMjYwMzYsIDEyNjA0MCwgMTI2MDQ0LCAxMjYwNDgsIDEyNjA1MiwgMTI2MDU2LCAxMjYwNjAsIDEyNjA2NCwgMTI2MDY4LCAKKyAgICAxMjYwNzIsIDEyNjA3NiwgMTI2MDgwLCAxMjYwODQsIDEyNjA4OCwgMTI2MDkyLCAxMjYwOTYsIDEyNjEwMCwgMTI2MTA0LCAKKyAgICAxMjYxMDgsIDEyNjExMiwgMTI2MTE2LCAxMjYxMjAsIDEyNjEyNCwgMTI2MTI4LCAxMjYxMzIsIDEyNjEzNiwgMTI2MTQwLCAKKyAgICAxMjYxNDQsIDEyNjE0OCwgMTI2MTUyLCAxMjYxNTYsIDEyNjE2MCwgMTI2MTY0LCAxMjYxNjgsIDEyNjE3MiwgMTI2MTc2LCAKKyAgICAxMjYxODAsIDEyNjE4NCwgMTI2MTg4LCAxMjYxOTIsIDEyNjE5NiwgMTI2MjAwLCAxMjYyMDQsIDEyNjIwOCwgMTI2MjEyLCAKKyAgICAxMjYyMTYsIDEyNjIyMCwgMTI2MjI0LCAxMjYyMjgsIDEyNjIzMiwgMTI2MjM2LCAxMjYyNDAsIDEyNjI0NCwgMTI2MjQ4LCAKKyAgICAxMjYyNTIsIDEyNjI1NiwgMTI2MjYwLCAxMjYyNjQsIDEyNjI2OCwgMTI2MjcyLCAxMjYyNzYsIDEyNjI4MCwgMTI2Mjg0LCAKKyAgICAxMjYyODgsIDEyNjI5MiwgMTI2Mjk2LCAxMjYzMDAsIDEyNjMwNCwgMTI2MzA4LCAxMjYzMTIsIDEyNjMxNiwgMTI2MzIwLCAKKyAgICAxMjYzMjQsIDEyNjMyOCwgMTI2MzMyLCAxMjYzMzYsIDEyNjM0MCwgMTI2MzQ0LCAxMjYzNDgsIDEyNjM1MiwgMTI2MzU2LCAKKyAgICAxMjYzNjAsIDEyNjM2NCwgMTI2MzY4LCAxMjYzNzIsIDEyNjM3NiwgMTI2MzgwLCAxMjYzODQsIDEyNjM4OCwgMTI2MzkyLCAKKyAgICAxMjYzOTYsIDEyNjQwMCwgMTI2NDA0LCAxMjY0MDgsIDEyNjQxMiwgMTI2NDE2LCAxMjY0MjAsIDEyNjQyNCwgMTI2NDI4LCAKKyAgICAxMjY0MzIsIDEyNjQzNiwgMTI2NDQwLCAxMjY0NDQsIDEyNjQ0OCwgMTI2NDUyLCAxMjY0NTYsIDEyNjQ2MCwgMTI2NDY0LCAKKyAgICAxMjY0NjgsIDEyNjQ3MiwgMTI2NDc2LCAxMjY0ODAsIDEyNjQ4NCwgMTI2NDg4LCAxMjY0OTIsIDEyNjQ5NiwgMTI2NTAwLCAKKyAgICAxMjY1MDQsIDEyNjUwOCwgMTI2NTEyLCAxMjY1MTYsIDEyNjUyMCwgMTI2NTI0LCAxMjY1MjgsIDEyNjUzMiwgMTI2NTM2LCAKKyAgICAxMjY1NDAsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTIsIDEyNjU1NiwgMTI2NTYwLCAxMjY1NjQsIDEyNjU2OCwgMTI2NTcyLCAKKyAgICAxMjY1NzYsIDEyNjU4MCwgMTI2NTg0LCAxMjY1ODgsIDEyNjU5MiwgMTI2NTk2LCAxMjY2MDAsIDEyNjYwNCwgMTI2NjA4LCAKKyAgICAxMjY2MTIsIDEyNjYxNiwgMTI2NjIwLCAxMjY2MjQsIDEyNjYyOCwgMTI2NjMyLCAxMjY2MzYsIDEyNjY0MCwgMTI2NjQ0LCAKKyAgICAxMjY2NDgsIDEyNjY1MiwgMTI2NjU2LCAxMjY2NjAsIDEyNjY2NCwgMTI2NjY4LCAxMjY2NzIsIDEyNjY3NiwgMTI2NjgwLCAKKyAgICAxMjY2ODQsIDEyNjY4OCwgMTI2NjkyLCAxMjY2OTYsIDEyNjcwMCwgMTI2NzA0LCAxMjY3MDgsIDEyNjcxMiwgMTI2NzE2LCAKKyAgICAxMjY3MjAsIDEyNjcyNCwgMTI2NzI4LCAxMjY3MzIsIDEyNjczNiwgMTI2NzQwLCAxMjY3NDQsIDEyNjc0OCwgMTI2NzUyLCAKKyAgICAxMjY3NTYsIDEyNjc2MCwgMTI2NzY0LCAxMjY3NjgsIDEyNjc3MiwgMTI2Nzc2LCAxMjY3ODAsIDEyNjc4NCwgMTI2Nzg4LCAKKyAgICAxMjY3OTIsIDEyNjc5NiwgMTI2ODAwLCAxMjY4MDQsIDEyNjgwOCwgMTI2ODEyLCAxMjY4MTYsIDEyNjgyNiwgMTI2ODMwLCAKKyAgICAxMjY4MzQsIDEyNjgzOCwgMTI2ODQyLCAxMjY4NDYsIDEyNjg1MCwgMTI2ODU0LCAxMjY4NTgsIDEyNjg2MiwgMTI2ODY2LCAKKyAgICAxMjY4NzAsIDEyNjg3NSwgMTI2ODc5LCAxMjY4ODMsIDEyNjg4NywgMTI2ODkxLCAxMjY4OTUsIDEyNjg5OSwgMTI2OTAzLCAKKyAgICAxMjY5MDcsIDEyNjkxMSwgMTI2OTE1LCAxMjY5MTksIDEyNjkyMywgMTI2OTI3LCAxMjY5MzEsIDEyNjkzNSwgMTI2OTM5LCAKKyAgICAxMjY5NDgsIDEyNjk1NywgMTI2OTYxLCAxMjY5NjUsIDEyNjk2OSwgMTI2OTczLCAxMjY5NzcsIDEyNjk4MSwgMTI2OTg1LCAKKyAgICAxMjY5ODksIDEyNjk5MywgMTI2OTk3LCAxMjcwMDEsIDEyNzAwNSwgMTI3MDA5LCAxMjcwMTMsIDEyNzAxNywgMTI3MDIxLCAKKyAgICAxMjcwMjUsIDEyNzAyOSwgMTI3MDMzLCAxMjcwMzcsIDEyNzA0MSwgMTI3MDQ1LCAxMjcwNDksIDEyNzA1MywgMTI3MDU3LCAKKyAgICAxMjcwNjEsIDEyNzA2NSwgMTI3MDY5LCAxMjcwNzMsIDEyNzA3NywgMTI3MDgxLCAxMjcwODUsIDEyNzA4OSwgMTI3MDkzLCAKKyAgICAxMjcwOTcsIDEyNzEwMSwgMTI3MTA1LCAxMjcxMDksIDEyNzExMywgMTI3MTE3LCAxMjcxMjEsIDEyNzEyNSwgMTI3MTI5LCAKKyAgICAxMjcxMzMsIDEyNzEzNywgMTI3MTQxLCAxMjcxNDUsIDEyNzE0OSwgMTI3MTUzLCAxMjcxNTcsIDEyNzE2MSwgMTI3MTY1LCAKKyAgICAxMjcxNjksIDEyNzE3MywgMTI3MTc3LCAxMjcxODEsIDEyNzE4NSwgMTI3MTg5LCAxMjcxOTMsIDEyNzE5NywgMTI3MjAxLCAKKyAgICAxMjcyMDUsIDEyNzIwOSwgMTI3MjEzLCAxMjcyMTcsIDEyNzIyMSwgMTI3MjI1LCAxMjcyMjksIDEyNzIzMywgMTI3MjM3LCAKKyAgICAxMjcyNDEsIDEyNzI0NSwgMTI3MjQ5LCAxMjcyNTMsIDEyNzI1NywgMTI3MjYxLCAxMjcyNjUsIDEyNzI2OSwgMTI3MjczLCAKKyAgICAxMjcyNzcsIDEyNzI4MSwgMTI3Mjg1LCAxMjcyODksIDEyNzI5MywgMTI3Mjk3LCAxMjczMDEsIDEyNzMwNSwgMTI3MzA5LCAKKyAgICAxMjczMTMsIDEyNzMxNywgMTI3MzIxLCAxMjczMjUsIDEyNzMyOSwgMTI3MzMzLCAxMjczMzcsIDEyNzM0MSwgMTI3MzQ1LCAKKyAgICAxMjczNDksIDEyNzM1MywgMTI3MzU3LCAxMjczNjEsIDEyNzM2NSwgMTI3MzY5LCAxMjczNzMsIDEyNzM3NywgMTI3MzgxLCAKKyAgICAxMjczODUsIDEyNzM4OSwgMTI3MzkzLCAxMjczOTcsIDEyNzQwMSwgMTI3NDA1LCAxMjc0MDksIDEyNzQxMywgMTI3NDE3LCAKKyAgICAxMjc0MjEsIDEyNzQyNSwgMTI3NDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MzAwLDEyNCArMjA0NTYsMjEwIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTMzLCAxMjQ5NDEsIAotICAgIDEyNDk0OSwgMTI0OTU5LCAxMjQ5NjksIDEyNDk3NywgMTI0OTgzLCAxMjQ5OTEsIDEyNDk5OSwgMTI1MDA5LCAxMjUwMjEsIAotICAgIDEyNTAzMywgMTI1MDM5LCAxMjUwNDcsIDEyNTA1MywgMTI1MDU5LCAxMjUwNjUsIDEyNTA3MSwgMTI1MDc3LCAxMjUwODMsIAotICAgIDEyNTA4OSwgMTI1MDk1LCAxMjUxMDEsIDEyNTEwNywgMTI1MTEzLCAxMjUxMjEsIDEyNTEyOSwgMTI1MTM1LCAxMjUxNDEsIAotICAgIDEyNTE0NywgMTI1MTUzLCAxMjUxNjEsIDEyNTE2OSwgMTI1MTc4LCAxMjUxODQsIDEyNTE5MiwgMTI1MTk4LCAxMjUyMDQsIAotICAgIDEyNTIxMCwgMTI1MjE2LCAxMjUyMjIsIDEyNTIzMCwgMTI1MjM4LCAxMjUyNDQsIDEyNTI1MCwgMTI1MjU2LCAxMjUyNjIsIAotICAgIDEyNTI2OCwgMTI1Mjc0LCAxMjUyODAsIDEyNTI4NiwgMTI1MjkyLCAxMjUyOTgsIDEyNTMwNCwgMTI1MzEwLCAxMjUzMTYsIAotICAgIDEyNTMyMiwgMTI1MzI4LCAxMjUzMzQsIDEyNTM0MCwgMTI1MzQ2LCAxMjUzNTIsIDEyNTM2MCwgMTI1MzY2LCAxMjUzNzIsIAotICAgIDEyNTM4MiwgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDA4LCAxMjU0MTQsIDEyNTQyMCwgMTI1NDI2LCAxMjU0MzIsIAotICAgIDEyNTQzOCwgMTI1NDQ0LCAxMjU0NTAsIDEyNTQ1NiwgMTI1NDYyLCAxMjU0NjgsIDEyNTQ3NCwgMTI1NDgwLCAxMjU0ODYsIAotICAgIDEyNTQ5MiwgMTI1NDk4LCAxMjU1MDQsIDEyNTUxMCwgMTI1NTE2LCAxMjU1MjIsIDEyNTUzMCwgMTI1NTM2LCAxMjU1NDQsIAotICAgIDEyNTU1MiwgMTI1NTYwLCAxMjU1NjYsIDEyNTU3MiwgMTI1NTc4LCAxMjU1ODQsIDEyNTU5MCwgMTI1NTk4LCAxMjU2MDgsIAotICAgIDEyNTYxNiwgMTI1NjI0LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY1OCwgMTI1NjY2LCAxMjU2NzQsIAotICAgIDEyNTY4MiwgMTI1Njg4LCAxMjU2OTQsIDEyNTcwMCwgMTI1NzA2LCAxMjU3MTIsIDEyNTcxOCwgMTI1NzI2LCAxMjU3MzQsIAotICAgIDEyNTc0MCwgMTI1NzQ2LCAxMjU3NTIsIDEyNTc1OCwgMTI1NzY0LCAxMjU3NzIsIDEyNTc3OCwgMTI1Nzg0LCAxMjU3OTAsIAotICAgIDEyNTc5NiwgMTI1ODAyLCAxMjU4MDgsIDEyNTgxNiwgMTI1ODIyLCAxMjU4MjgsIDEyNTgzNCwgMTI1ODQwLCAxMjU4NDgsIAotICAgIDEyNTg1NiwgMTI1ODYyLCAxMjU4NjgsIDEyNTg3NCwgMTI1ODc5LCAxMjU4ODUsIDEyNTg5MSwgMTI1ODk4LCAxMjU5MDMsIAotICAgIDEyNTkwOCwgMTI1OTEzLCAxMjU5MTgsIDEyNTkyMywgMTI1OTI4LCAxMjU5MzMsIDEyNTkzOCwgMTI1OTQzLCAxMjU5NTIsIAotICAgIDEyNTk1OSwgMTI1OTY0LCAxMjU5NjksIDEyNTk3NCwgMTI1OTgxLCAxMjU5ODYsIDEyNTk5MSwgMTI1OTk2LCAxMjYwMDMsIAotICAgIDEyNjAwOCwgMTI2MDEzLCAxMjYwMTgsIDEyNjAyMywgMTI2MDI4LCAxMjYwMzMsIDEyNjAzOCwgMTI2MDQzLCAxMjYwNDgsIAotICAgIDEyNjA1MywgMTI2MDU4LCAxMjYwNjUsIDEyNjA3MCwgMTI2MDc3LCAxMjYwODIsIDEyNjA4NywgMTI2MDk0LCAxMjYwOTksIAotICAgIDEyNjEwNCwgMTI2MTA5LCAxMjYxMTQsIDEyNjExOSwgMTI2MTI0LCAxMjYxMjksIDEyNjEzNCwgMTI2MTM5LCAxMjYxNDQsIAotICAgIDEyNjE0OSwgMTI2MTU0LCAxMjYxNTksIDEyNjE2NCwgMTI2MTY5LCAxMjYxNzQsIDEyNjE3OSwgMTI2MTg0LCAxMjYxODksIAotICAgIDEyNjE5NiwgMTI2MjAxLCAxMjYyMDYsIDEyNjIxMSwgMTI2MjE2LCAxMjYyMjEsIDEyNjIyNiwgMTI2MjMxLCAxMjYyMzYsIAotICAgIDEyNjI0MSwgMTI2MjQ2LCAxMjYyNTEsIDEyNjI1NiwgMTI2MjYxLCAxMjYyNjgsIDEyNjI3MywgMTI2Mjc4LCAxMjYyODUsIAotICAgIDEyNjI5MCwgMTI2Mjk1LCAxMjYzMDAsIDEyNjMwNSwgMTI2MzEwLCAxMjYzMTUsIDEyNjMyMCwgMTI2MzI1LCAxMjYzMzAsIAotICAgIDEyNjMzNSwgMTI2MzQyLCAxMjYzNDcsIDEyNjM1MiwgMTI2MzU3LCAxMjYzNjIsIDEyNjM2NywgMTI2Mzc0LCAxMjYzODEsIAotICAgIDEyNjM4NiwgMTI2MzkxLCAxMjYzOTYsIDEyNjQwMSwgMTI2NDA2LCAxMjY0MTEsIDEyNjQxNiwgMTI2NDIxLCAxMjY0MjYsIAotICAgIDEyNjQzMSwgMTI2NDM2LCAxMjY0NDEsIDEyNjQ0NiwgMTI2NDUxLCAxMjY0NTYsIDEyNjQ2MSwgMTI2NDY2LCAxMjY0NzEsIAotICAgIDEyNjQ3NiwgMTI2NDgxLCAxMjY0ODYsIDEyNjQ5MSwgMTI2NDk2LCAxMjY1MDEsIDEyNjUwNiwgMTI2NTExLCAxMjY1MTYsIAotICAgIDEyNjUyMSwgMTI2NTI2LCAxMjY1MzEsIDEyNjUzNiwgMTI2NTQxLCAxMjY1NDYsIDEyNjU1MSwgMTI2NTU2LCAxMjY1NjEsIAotICAgIDEyNjU2OCwgMTI2NTczLCAxMjY1NzgsIDEyNjU4MywgMTI2NTg4LCAxMjY1OTMsIDEyNjU5OCwgMTI2NjAzLCAxMjY2MDgsIAotICAgIDEyNjYxMywgMTI2NjE4LCAxMjY2MjMsIDEyNjYyOCwgMTI2NjMzLCAxMjY2MzgsIDEyNjY0MywgMTI2NjQ4LCAxMjY2NTMsIAotICAgIDEyNjY1OCwgMTI2NjYzLCAxMjY2NjgsIDEyNjY3MywgMTI2Njc4LCAxMjY2ODMsIDEyNjY4OCwgMTI2NjkzLCAxMjY2OTgsIAotICAgIDEyNjcwMywgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzIzLCAxMjY3MjgsIDEyNjczMywgMTI2NzM4LCAxMjY3NDMsIAotICAgIDEyNjc0OCwgMTI2NzUzLCAxMjY3NTgsIDEyNjc2MywgMTI2NzY4LCAxMjY3NzMsIDEyNjc3OCwgMTI2NzgzLCAxMjY3ODgsIAotICAgIDEyNjc5MywgMTI2Nzk4LCAxMjY4MDMsIDEyNjgwOCwgMTI2ODEzLCAxMjY4MTgsIDEyNjgyMywgMTI2ODI4LCAxMjY4MzMsIAotICAgIDEyNjgzOCwgMTI2ODQzLCAxMjY4NDgsIDEyNjg1MywgMTI2ODU4LCAxMjY4NjUsIDEyNjg3MCwgMTI2ODc1LCAxMjY4ODAsIAotICAgIDEyNjg4NSwgMTI2ODkwLCAxMjY4OTUsIDEyNjkwMCwgMTI2OTA1LCAxMjY5MTAsIDEyNjkxNSwgMTI2OTIwLCAxMjY5MjUsIAotICAgIDEyNjkzMCwgMTI2OTM1LCAxMjY5NDAsIDEyNjk0NSwgMTI2OTUwLCAxMjY5NTUsIDEyNjk2MCwgMTI2OTY1LCAxMjY5NzAsIAotICAgIDEyNjk3NywgMTI2OTgyLCAxMjY5ODcsIDEyNjk5NCwgMTI2OTk5LCAxMjcwMDQsIDEyNzAwOSwgMTI3MDE0LCAxMjcwMTksIAotICAgIDEyNzAyNCwgMTI3MDI5LCAxMjcwMzQsIDEyNzAzOSwgMTI3MDQ0LCAxMjcwNDksIDEyNzA1NCwgMTI3MDU5LCAxMjcwNjQsIAotICAgIDEyNzA2OSwgMTI3MDc0LCAxMjcwNzksIDEyNzA4NCwgMTI3MDg5LCAxMjcwOTQsIDEyNzA5OSwgMTI3MTA0LCAxMjcxMDksIAotICAgIDEyNzExNCwgMTI3MTE5LCAxMjcxMjQsIDEyNzEyOSwgMTI3MTM0LCAxMjcxMzksIDEyNzE0NCwgMTI3MTQ5LCAxMjcxNTQsIAotICAgIDEyNzE1OSwgMTI3MTY0LCAxMjcxNjksIDEyNzE3NCwgMTI3MTc5LCAxMjcxODQsIDEyNzE4OSwgMTI3MTk0LCAxMjcxOTksIAotICAgIDEyNzIwNCwgMTI3MjA5LCAxMjcyMTYsIDEyNzIyMSwgMTI3MjI2LCAxMjcyMzMsIDEyNzI0MCwgMTI3MjQ1LCAxMjcyNTAsIAotICAgIDEyNzI1NSwgMTI3MjYwLCAxMjcyNjUsIDEyNzI3MCwgMTI3Mjc1LCAxMjcyODAsIDEyNzI4NSwgMTI3MjkwLCAxMjcyOTUsIAotICAgIDEyNzMwMCwgMTI3MzA1LCAxMjczMTAsIDEyNzMxNSwgMTI3MzIwLCAxMjczMjUsIDEyNzMzMCwgMTI3MzM1LCAxMjczNDAsIAotICAgIDEyNzM0NSwgMTI3MzUwLCAxMjczNTUsIDEyNzM2MCwgMTI3MzY1LCAxMjczNzIsIDEyNzM3NywgMTI3MzgyLCAxMjczODcsIAotICAgIDEyNzM5MiwgMTI3Mzk3LCAxMjc0MDIsIDEyNzQwNywgMTI3NDEyLCAxMjc0MTcsIDEyNzQyMiwgMTI3NDI3LCAxMjc0MzIsIAotICAgIDEyNzQzNywgMTI3NDQyLCAxMjc0NDcsIDEyNzQ1MiwgMTI3NDU3LCAxMjc0NjIsIDEyNzQ2OSwgMTI3NDc0LCAxMjc0NzksIAotICAgIDEyNzQ4NCwgMTI3NDg5LCAxMjc0OTQsIDEyNzQ5OSwgMTI3NTA0LCAxMjc1MTAsIDEyNzUxNSwgMTI3NTIwLCAxMjc1MjUsIAotICAgIDEyNzUzMCwgMTI3NTM1LCAxMjc1NDAsIDEyNzU0NSwgMTI3NTUwLCAxMjc1NTcsIDEyNzU2NCwgMTI3NTY5LCAxMjc1NzQsIAotICAgIDEyNzU3OCwgMTI3NTgzLCAxMjc1ODcsIDEyNzU5MSwgMTI3NTk2LCAxMjc2MDMsIDEyNzYwOCwgMTI3NjEzLCAxMjc2MjIsIAotICAgIDEyNzYyNywgMTI3NjMyLCAxMjc2MzcsIDEyNzY0MiwgMTI3NjQ5LCAxMjc2NTYsIDEyNzY2MSwgMTI3NjY2LCAxMjc2NzEsIAotICAgIDEyNzY3NiwgMTI3NjgzLCAxMjc2ODgsIDEyNzY5MywgMTI3Njk4LCAxMjc3MDMsIDEyNzcwOCwgMTI3NzEzLCAxMjc3MTgsIAotICAgIDEyNzcyMywgMTI3NzI4LCAxMjc3MzMsIDEyNzczOCwgMTI3NzQzLCAxMjc3NTAsIDEyNzc1NSwgMTI3NzYwLCAxMjc3NjUsIAotICAgIDEyNzc3MCwgMTI3Nzc1LCAxMjc3NzksIDEyNzc4NCwgMTI3Nzg5LCAxMjc3OTQsIDEyNzc5OSwgMTI3ODA0LCAxMjc4MDksIAotICAgIDEyNzgxNCwgMTI3ODE5LCAxMjc4MjQsIDEyNzgzMCwgMTI3ODM2LCAxMjc4NDIsIDEyNzg0OCwgMTI3ODU0LCAxMjc4NjAsIAotICAgIDEyNzg2NiwgMTI3ODcyLCAxMjc4NzgsIDEyNzg4NCwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAorICAgIDAsIDEyNzQzMywgMTI3NDQxLCAxMjc0NDksIDEyNzQ1OSwgMTI3NDY5LCAxMjc0NzcsIDEyNzQ4MywgMTI3NDkxLCAKKyAgICAxMjc0OTksIDEyNzUwOSwgMTI3NTIxLCAxMjc1MzMsIDEyNzUzOSwgMTI3NTQ3LCAxMjc1NTMsIDEyNzU1OSwgMTI3NTY1LCAKKyAgICAxMjc1NzEsIDEyNzU3NywgMTI3NTgzLCAxMjc1ODksIDEyNzU5NSwgMTI3NjAxLCAxMjc2MDcsIDEyNzYxMywgMTI3NjIxLCAKKyAgICAxMjc2MjksIDEyNzYzNSwgMTI3NjQxLCAxMjc2NDcsIDEyNzY1MywgMTI3NjYxLCAxMjc2NjksIDEyNzY3OCwgMTI3Njg0LCAKKyAgICAxMjc2OTIsIDEyNzY5OCwgMTI3NzA0LCAxMjc3MTAsIDEyNzcxNiwgMTI3NzIyLCAxMjc3MzAsIDEyNzczOCwgMTI3NzQ0LCAKKyAgICAxMjc3NTAsIDEyNzc1NiwgMTI3NzYyLCAxMjc3NjgsIDEyNzc3NCwgMTI3NzgwLCAxMjc3ODYsIDEyNzc5MiwgMTI3Nzk4LCAKKyAgICAxMjc4MDQsIDEyNzgxMCwgMTI3ODE2LCAxMjc4MjIsIDEyNzgyOCwgMTI3ODM0LCAxMjc4NDAsIDEyNzg0NiwgMTI3ODUyLCAKKyAgICAxMjc4NjAsIDEyNzg2NiwgMTI3ODcyLCAxMjc4ODIsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKICAgICAxMjc5MjAsIDEyNzkyNiwgMTI3OTMyLCAxMjc5MzgsIDEyNzk0NCwgMTI3OTUwLCAxMjc5NTYsIDEyNzk2MiwgMTI3OTY4LCAKLSAgICAxMjc5NzMsIDEyNzk3OSwgMTI3OTg1LCAxMjc5OTEsIDEyNzk5NywgMTI4MDAzLCAxMjgwMDksIDEyODAxNSwgMTI4MDIxLCAKLSAgICAxMjgwMjcsIDEyODAzMywgMTI4MDM5LCAxMjgwNDUsIDEyODA1MSwgMTI4MDU3LCAxMjgwNjMsIDEyODA2OSwgMTI4MDc1LCAKLSAgICAxMjgwODEsIDEyODA4NywgMTI4MDkzLCAxMjgwOTgsIDEyODEwNCwgMTI4MTEwLCAxMjgxMTYsIDEyODEyMiwgMTI4MTI4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzQsIDEyODEzOSwgMTI4MTQ0LCAxMjgxNDksIDEyODE1NCwgMTI4MTU5LCAKLSAgICAxMjgxNjQsIDEyODE2OCwgMTI4MTczLCAxMjgxNzgsIDEyODE4MywgMTI4MTg4LCAxMjgxOTMsIDEyODE5OCwgMTI4MjAzLCAKLSAgICAxMjgyMDgsIDEyODIxMywgMTI4MjE3LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMxLCAxMjgyMzYsIDEyODI0MSwgMTI4MjQ2LCAKLSAgICAxMjgyNTEsIDEyODI1NSwgMTI4MjYwLCAxMjgyNjUsIDEyODI3MCwgMTI4Mjc1LCAxMjgyODAsIDAsIDEyODI4NSwgCi0gICAgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTksIDEyODMyMywgCi0gICAgMCwgMCwgMCwgMCwgMTI4MzI4LCAxMjgzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNzk3NCwgMTI3OTgwLCAxMjc5ODYsIDEyNzk5MiwgMTI3OTk4LCAxMjgwMDQsIDEyODAxMCwgMTI4MDE2LCAxMjgwMjIsIAorICAgIDEyODAzMCwgMTI4MDM2LCAxMjgwNDQsIDEyODA1MiwgMTI4MDYwLCAxMjgwNjYsIDEyODA3MiwgMTI4MDc4LCAxMjgwODQsIAorICAgIDEyODA5MCwgMTI4MDk4LCAxMjgxMDgsIDEyODExNiwgMTI4MTI0LCAxMjgxMzAsIDEyODEzNiwgMTI4MTQ0LCAxMjgxNTIsIAorICAgIDEyODE1OCwgMTI4MTY2LCAxMjgxNzQsIDEyODE4MiwgMTI4MTg4LCAxMjgxOTQsIDEyODIwMCwgMTI4MjA2LCAxMjgyMTIsIAorICAgIDEyODIxOCwgMTI4MjI2LCAxMjgyMzQsIDEyODI0MCwgMTI4MjQ2LCAxMjgyNTIsIDEyODI1OCwgMTI4MjY0LCAxMjgyNzIsIAorICAgIDEyODI3OCwgMTI4Mjg0LCAxMjgyOTAsIDEyODI5NiwgMTI4MzAyLCAxMjgzMDgsIDEyODMxNiwgMTI4MzIyLCAxMjgzMjgsIAorICAgIDEyODMzNCwgMTI4MzQwLCAxMjgzNDgsIDEyODM1NiwgMTI4MzYyLCAxMjgzNjgsIDEyODM3NCwgMTI4Mzc5LCAxMjgzODUsIAorICAgIDEyODM5MSwgMTI4Mzk4LCAxMjg0MDMsIDEyODQwOCwgMTI4NDEzLCAxMjg0MTgsIDEyODQyMywgMTI4NDI4LCAxMjg0MzMsIAorICAgIDEyODQzOCwgMTI4NDQzLCAxMjg0NTIsIDEyODQ1OSwgMTI4NDY0LCAxMjg0NjksIDEyODQ3NCwgMTI4NDgxLCAxMjg0ODYsIAorICAgIDEyODQ5MSwgMTI4NDk2LCAxMjg1MDMsIDEyODUwOCwgMTI4NTEzLCAxMjg1MTgsIDEyODUyMywgMTI4NTI4LCAxMjg1MzMsIAorICAgIDEyODUzOCwgMTI4NTQzLCAxMjg1NDgsIDEyODU1MywgMTI4NTU4LCAxMjg1NjUsIDEyODU3MCwgMTI4NTc3LCAxMjg1ODIsIAorICAgIDEyODU4NywgMTI4NTk0LCAxMjg1OTksIDEyODYwNCwgMTI4NjA5LCAxMjg2MTQsIDEyODYxOSwgMTI4NjI0LCAxMjg2MjksIAorICAgIDEyODYzNCwgMTI4NjM5LCAxMjg2NDQsIDEyODY0OSwgMTI4NjU0LCAxMjg2NTksIDEyODY2NCwgMTI4NjY5LCAxMjg2NzQsIAorICAgIDEyODY3OSwgMTI4Njg0LCAxMjg2ODksIDEyODY5NiwgMTI4NzAxLCAxMjg3MDYsIDEyODcxMSwgMTI4NzE2LCAxMjg3MjEsIAorICAgIDEyODcyNiwgMTI4NzMxLCAxMjg3MzYsIDEyODc0MSwgMTI4NzQ2LCAxMjg3NTEsIDEyODc1NiwgMTI4NzYxLCAxMjg3NjgsIAorICAgIDEyODc3MywgMTI4Nzc4LCAxMjg3ODUsIDEyODc5MCwgMTI4Nzk1LCAxMjg4MDAsIDEyODgwNSwgMTI4ODEwLCAxMjg4MTUsIAorICAgIDEyODgyMCwgMTI4ODI1LCAxMjg4MzAsIDEyODgzNSwgMTI4ODQyLCAxMjg4NDcsIDEyODg1MiwgMTI4ODU3LCAxMjg4NjIsIAorICAgIDEyODg2NywgMTI4ODc0LCAxMjg4ODEsIDEyODg4NiwgMTI4ODkxLCAxMjg4OTYsIDEyODkwMSwgMTI4OTA2LCAxMjg5MTEsIAorICAgIDEyODkxNiwgMTI4OTIxLCAxMjg5MjYsIDEyODkzMSwgMTI4OTM2LCAxMjg5NDEsIDEyODk0NiwgMTI4OTUxLCAxMjg5NTYsIAorICAgIDEyODk2MSwgMTI4OTY2LCAxMjg5NzEsIDEyODk3NiwgMTI4OTgxLCAxMjg5ODYsIDEyODk5MSwgMTI4OTk2LCAxMjkwMDEsIAorICAgIDEyOTAwNiwgMTI5MDExLCAxMjkwMTYsIDEyOTAyMSwgMTI5MDI2LCAxMjkwMzEsIDEyOTAzNiwgMTI5MDQxLCAxMjkwNDYsIAorICAgIDEyOTA1MSwgMTI5MDU2LCAxMjkwNjEsIDEyOTA2OCwgMTI5MDczLCAxMjkwNzgsIDEyOTA4MywgMTI5MDg4LCAxMjkwOTMsIAorICAgIDEyOTA5OCwgMTI5MTAzLCAxMjkxMDgsIDEyOTExMywgMTI5MTE4LCAxMjkxMjMsIDEyOTEyOCwgMTI5MTMzLCAxMjkxMzgsIAorICAgIDEyOTE0MywgMTI5MTQ4LCAxMjkxNTMsIDEyOTE1OCwgMTI5MTYzLCAxMjkxNjgsIDEyOTE3MywgMTI5MTc4LCAxMjkxODMsIAorICAgIDEyOTE4OCwgMTI5MTkzLCAxMjkxOTgsIDEyOTIwMywgMTI5MjA4LCAxMjkyMTMsIDEyOTIxOCwgMTI5MjIzLCAxMjkyMjgsIAorICAgIDEyOTIzMywgMTI5MjM4LCAxMjkyNDMsIDEyOTI0OCwgMTI5MjUzLCAxMjkyNTgsIDEyOTI2MywgMTI5MjY4LCAxMjkyNzMsIAorICAgIDEyOTI3OCwgMTI5MjgzLCAxMjkyODgsIDEyOTI5MywgMTI5Mjk4LCAxMjkzMDMsIDEyOTMwOCwgMTI5MzEzLCAxMjkzMTgsIAorICAgIDEyOTMyMywgMTI5MzI4LCAxMjkzMzMsIDEyOTMzOCwgMTI5MzQzLCAxMjkzNDgsIDEyOTM1MywgMTI5MzU4LCAxMjkzNjUsIAorICAgIDEyOTM3MCwgMTI5Mzc1LCAxMjkzODAsIDEyOTM4NSwgMTI5MzkwLCAxMjkzOTUsIDEyOTQwMCwgMTI5NDA1LCAxMjk0MTAsIAorICAgIDEyOTQxNSwgMTI5NDIwLCAxMjk0MjUsIDEyOTQzMCwgMTI5NDM1LCAxMjk0NDAsIDEyOTQ0NSwgMTI5NDUwLCAxMjk0NTUsIAorICAgIDEyOTQ2MCwgMTI5NDY1LCAxMjk0NzAsIDEyOTQ3NywgMTI5NDgyLCAxMjk0ODcsIDEyOTQ5NCwgMTI5NDk5LCAxMjk1MDQsIAorICAgIDEyOTUwOSwgMTI5NTE0LCAxMjk1MTksIDEyOTUyNCwgMTI5NTI5LCAxMjk1MzQsIDEyOTUzOSwgMTI5NTQ0LCAxMjk1NDksIAorICAgIDEyOTU1NCwgMTI5NTU5LCAxMjk1NjQsIDEyOTU2OSwgMTI5NTc0LCAxMjk1NzksIDEyOTU4NCwgMTI5NTg5LCAxMjk1OTQsIAorICAgIDEyOTU5OSwgMTI5NjA0LCAxMjk2MDksIDEyOTYxNCwgMTI5NjE5LCAxMjk2MjQsIDEyOTYyOSwgMTI5NjM0LCAxMjk2MzksIAorICAgIDEyOTY0NCwgMTI5NjQ5LCAxMjk2NTQsIDEyOTY1OSwgMTI5NjY0LCAxMjk2NjksIDEyOTY3NCwgMTI5Njc5LCAxMjk2ODQsIAorICAgIDEyOTY4OSwgMTI5Njk0LCAxMjk2OTksIDEyOTcwNCwgMTI5NzA5LCAxMjk3MTYsIDEyOTcyMSwgMTI5NzI2LCAxMjk3MzMsIAorICAgIDEyOTc0MCwgMTI5NzQ1LCAxMjk3NTAsIDEyOTc1NSwgMTI5NzYwLCAxMjk3NjUsIDEyOTc3MCwgMTI5Nzc1LCAxMjk3ODAsIAorICAgIDEyOTc4NSwgMTI5NzkwLCAxMjk3OTUsIDEyOTgwMCwgMTI5ODA1LCAxMjk4MTAsIDEyOTgxNSwgMTI5ODIwLCAxMjk4MjUsIAorICAgIDEyOTgzMCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgMTI5ODY1LCAxMjk4NzIsIAorICAgIDEyOTg3NywgMTI5ODgyLCAxMjk4ODcsIDEyOTg5MiwgMTI5ODk3LCAxMjk5MDIsIDEyOTkwNywgMTI5OTEyLCAxMjk5MTcsIAorICAgIDEyOTkyMiwgMTI5OTI3LCAxMjk5MzIsIDEyOTkzNywgMTI5OTQyLCAxMjk5NDcsIDEyOTk1MiwgMTI5OTU3LCAxMjk5NjIsIAorICAgIDEyOTk2OSwgMTI5OTc0LCAxMjk5NzksIDEyOTk4NCwgMTI5OTg5LCAxMjk5OTQsIDEyOTk5OSwgMTMwMDA0LCAxMzAwMTAsIAorICAgIDEzMDAxNSwgMTMwMDIwLCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM1LCAxMzAwNDAsIDEzMDA0NSwgMTMwMDUwLCAxMzAwNTcsIAorICAgIDEzMDA2NCwgMTMwMDY5LCAxMzAwNzQsIDEzMDA3OCwgMTMwMDgzLCAxMzAwODcsIDEzMDA5MSwgMTMwMDk2LCAxMzAxMDMsIAorICAgIDEzMDEwOCwgMTMwMTEzLCAxMzAxMjIsIDEzMDEyNywgMTMwMTMyLCAxMzAxMzcsIDEzMDE0MiwgMTMwMTQ5LCAxMzAxNTYsIAorICAgIDEzMDE2MSwgMTMwMTY2LCAxMzAxNzEsIDEzMDE3NiwgMTMwMTgzLCAxMzAxODgsIDEzMDE5MywgMTMwMTk4LCAxMzAyMDMsIAorICAgIDEzMDIwOCwgMTMwMjEzLCAxMzAyMTgsIDEzMDIyMywgMTMwMjI4LCAxMzAyMzMsIDEzMDIzOCwgMTMwMjQzLCAxMzAyNTAsIAorICAgIDEzMDI1NCwgMTMwMjU5LCAxMzAyNjQsIDEzMDI2OSwgMTMwMjc0LCAxMzAyNzgsIDEzMDI4MywgMTMwMjg4LCAxMzAyOTMsIAorICAgIDEzMDI5OCwgMTMwMzAzLCAxMzAzMDgsIDEzMDMxMywgMTMwMzE4LCAxMzAzMjMsIDEzMDMyOSwgMTMwMzM1LCAxMzAzNDEsIAorICAgIDEzMDM0NywgMTMwMzUzLCAxMzAzNTgsIDEzMDM2NCwgMTMwMzcwLCAxMzAzNzYsIDEzMDM4MiwgMTMwMzg4LCAxMzAzOTQsIAorICAgIDEzMDQwMCwgMTMwNDA2LCAxMzA0MTIsIDEzMDQxOCwgMTMwNDI0LCAxMzA0MzAsIDEzMDQzNiwgMTMwNDQyLCAxMzA0NDgsIAorICAgIDEzMDQ1NCwgMTMwNDYwLCAxMzA0NjYsIDEzMDQ3MSwgMTMwNDc3LCAxMzA0ODMsIDEzMDQ4OSwgMTMwNDk1LCAxMzA1MDEsIAorICAgIDEzMDUwNywgMTMwNTEzLCAxMzA1MTksIDEzMDUyNSwgMTMwNTMxLCAxMzA1MzcsIDEzMDU0MywgMTMwNTQ5LCAxMzA1NTUsIAorICAgIDEzMDU2MSwgMTMwNTY3LCAxMzA1NzMsIDEzMDU3OSwgMTMwNTg1LCAxMzA1OTEsIDEzMDU5NiwgMTMwNjAyLCAxMzA2MDgsIAorICAgIDEzMDYxNCwgMTMwNjIwLCAxMzA2MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDYzMiwgMTMwNjM3LCAxMzA2NDIsIAorICAgIDEzMDY0NywgMTMwNjUyLCAxMzA2NTcsIDEzMDY2MiwgMTMwNjY2LCAxMzA2NzEsIDEzMDY3NiwgMTMwNjgxLCAxMzA2ODYsIAorICAgIDEzMDY5MSwgMTMwNjk2LCAxMzA3MDEsIDEzMDcwNiwgMTMwNzExLCAxMzA3MTUsIDEzMDcyMCwgMTMwNzI0LCAxMzA3MjksIAorICAgIDEzMDczNCwgMTMwNzM5LCAxMzA3NDQsIDEzMDc0OSwgMTMwNzUzLCAxMzA3NTgsIDEzMDc2MywgMTMwNzY3LCAxMzA3NzIsIAorICAgIDEzMDc3NywgMCwgMTMwNzgyLCAxMzA3ODcsIDEzMDc5MSwgMTMwNzk1LCAxMzA3OTksIDEzMDgwMywgMTMwODA3LCAKKyAgICAxMzA4MTEsIDEzMDgxNiwgMTMwODIwLCAwLCAwLCAwLCAwLCAxMzA4MjUsIDEzMDgyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MzM3LCAxMjgzNDQsIDEyODM1MCwgMTI4MzU3LCAxMjgzNjQsIAotICAgIDEyODM3MSwgMTI4Mzc4LCAxMjgzODUsIDEyODM5MiwgMTI4Mzk5LCAxMjg0MDYsIDEyODQxMywgMTI4NDIwLCAxMjg0MjcsIAotICAgIDEyODQzNCwgMTI4NDQxLCAxMjg0NDgsIDEyODQ1NSwgMTI4NDYxLCAxMjg0NjgsIDEyODQ3NSwgMTI4NDgyLCAxMjg0ODgsIAotICAgIDEyODQ5NSwgMTI4NTAxLCAxMjg1MDcsIDEyODUxNCwgMTI4NTIwLCAxMjg1MjcsIDEyODUzMywgMCwgMCwgMTI4NTM5LCAKLSAgICAxMjg1NDcsIDEyODU1NSwgMTI4NTY0LCAxMjg1NzMsIDEyODU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NTkwLCAxMjg1OTUsIDEyODYwMCwgMTI4NjA1LCAxMjg2MTAsIDEyODYxNSwgMTI4NjIwLCAxMjg2MjUsIDEyODYzMCwgCi0gICAgMTI4NjM1LCAxMjg2NDAsIDEyODY0NSwgMTI4NjUwLCAxMjg2NTUsIDEyODY2MCwgMTI4NjY1LCAxMjg2NzAsIDEyODY3NSwgCi0gICAgMTI4NjgwLCAxMjg2ODUsIDEyODY5MCwgMTI4Njk1LCAxMjg3MDAsIDEyODcwNSwgMTI4NzEwLCAxMjg3MTUsIDEyODcyMCwgCi0gICAgMTI4NzI1LCAxMjg3MzAsIDEyODczNSwgMTI4NzQwLCAxMjg3NDUsIDEyODc1MCwgMTI4NzU1LCAxMjg3NjAsIDEyODc2NSwgCi0gICAgMTI4NzcwLCAxMjg3NzUsIDEyODc4MCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgCi0gICAgMTI4ODE1LCAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzcsIDEyODg0NCwgMTI4ODUxLCAxMjg4NTgsIDEyODg2NSwgCi0gICAgMTI4ODcyLCAxMjg4NzksIDEyODg4NiwgMTI4ODk1LCAxMjg5MDIsIDEyODkwOSwgMTI4OTE2LCAxMjg5MjMsIDEyODkzMCwgCi0gICAgMTI4OTM3LCAxMjg5NDQsIDEyODk1MSwgMTI4OTU4LCAxMjg5NjUsIDEyODk3MiwgMTI4OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMjg5ODYsIDEyODk5MSwgMTI4OTk1LCAxMjg5OTksIDEyOTAwMywgMTI5MDA3LCAxMjkwMTEsIAotICAgIDEyOTAxNSwgMTI5MDIwLCAxMjkwMjQsIDAsIDEyOTAyOSwgMTI5MDM0LCAxMjkwMzksIDEyOTA0NiwgMTI5MDUxLCAKLSAgICAxMjkwNTgsIDEyOTA2NSwgMCwgMTI5MDcwLCAxMjkwNzcsIDEyOTA4MiwgMTI5MDg3LCAxMjkwOTQsIDEyOTEwMSwgCi0gICAgMTI5MTA2LCAxMjkxMTEsIDEyOTExNiwgMTI5MTIxLCAxMjkxMjYsIDEyOTEzMywgMTI5MTQwLCAxMjkxNDUsIDEyOTE1MCwgCi0gICAgMTI5MTU1LCAxMjkxNjgsIDEyOTE3NywgMTI5MTg0LCAxMjkxOTMsIDEyOTIwMiwgMCwgMCwgMCwgMCwgMCwgMTI5MjExLCAKLSAgICAxMjkyMTgsIDEyOTIyNSwgMTI5MjMyLCAxMjkyMzksIDEyOTI0NiwgMTI5MjUzLCAxMjkyNjAsIDEyOTI2NywgMTI5Mjc0LCAKLSAgICAxMjkyODEsIDEyOTI4OCwgMTI5Mjk1LCAxMjkzMDIsIDEyOTMwOSwgMTI5MzE2LCAxMjkzMjMsIDEyOTMzMCwgMTI5MzM3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA4MzQsIDEzMDg0MSwgCisgICAgMTMwODQ3LCAxMzA4NTQsIDEzMDg2MSwgMTMwODY4LCAxMzA4NzUsIDEzMDg4MiwgMTMwODg5LCAxMzA4OTYsIDEzMDkwMywgCisgICAgMTMwOTEwLCAxMzA5MTcsIDEzMDkyNCwgMTMwOTMxLCAxMzA5MzgsIDEzMDk0NSwgMTMwOTUyLCAxMzA5NTgsIDEzMDk2NSwgCisgICAgMTMwOTcyLCAxMzA5NzksIDEzMDk4NSwgMTMwOTkyLCAxMzA5OTgsIDEzMTAwNCwgMTMxMDExLCAxMzEwMTcsIDEzMTAyNCwgCisgICAgMTMxMDMwLCAwLCAwLCAxMzEwMzYsIDEzMTA0NCwgMTMxMDUyLCAxMzEwNjEsIDEzMTA3MCwgMTMxMDc5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzEwODcsIDEzMTA5MiwgMTMxMDk3LCAxMzExMDIsIDEzMTEwNywgMTMxMTEyLCAxMzExMTcsIAorICAgIDEzMTEyMiwgMTMxMTI3LCAxMzExMzIsIDEzMTEzNywgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjIsIAorICAgIDEzMTE2NywgMTMxMTcyLCAxMzExNzcsIDEzMTE4MiwgMTMxMTg3LCAxMzExOTIsIDEzMTE5NywgMTMxMjAyLCAxMzEyMDcsIAorICAgIDEzMTIxMiwgMTMxMjE3LCAxMzEyMjIsIDEzMTIyNywgMTMxMjMyLCAxMzEyMzcsIDEzMTI0MiwgMTMxMjQ3LCAxMzEyNTIsIAorICAgIDEzMTI1NywgMTMxMjYyLCAxMzEyNjcsIDEzMTI3MiwgMTMxMjc3LCAxMzEyODIsIDEzMTI4NywgMTMxMjkyLCAxMzEyOTcsIAorICAgIDEzMTMwMiwgMTMxMzA3LCAxMzEzMTIsIDEzMTMxNywgMTMxMzIyLCAxMzEzMjcsIDEzMTMzNCwgMTMxMzQxLCAxMzEzNDgsIAorICAgIDEzMTM1NSwgMTMxMzYyLCAxMzEzNjksIDEzMTM3NiwgMTMxMzgzLCAxMzEzOTIsIDEzMTM5OSwgMTMxNDA2LCAxMzE0MTMsIAorICAgIDEzMTQyMCwgMTMxNDI3LCAxMzE0MzQsIDEzMTQ0MSwgMTMxNDQ4LCAxMzE0NTUsIDEzMTQ2MiwgMTMxNDY5LCAxMzE0NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTQ4MywgMTMxNDg4LCAxMzE0OTIsIDEzMTQ5NiwgMTMxNTAwLCAKKyAgICAxMzE1MDQsIDEzMTUwOCwgMTMxNTEyLCAxMzE1MTcsIDEzMTUyMSwgMCwgMTMxNTI2LCAxMzE1MzEsIDEzMTUzNiwgCisgICAgMTMxNTQzLCAxMzE1NDgsIDEzMTU1NSwgMTMxNTYyLCAwLCAxMzE1NjcsIDEzMTU3NCwgMTMxNTc5LCAxMzE1ODQsIAorICAgIDEzMTU5MSwgMTMxNTk4LCAxMzE2MDMsIDEzMTYwOCwgMTMxNjEzLCAxMzE2MTgsIDEzMTYyMywgMTMxNjMwLCAxMzE2MzcsIAorICAgIDEzMTY0MiwgMTMxNjQ3LCAxMzE2NTIsIDEzMTY2NSwgMTMxNjc0LCAxMzE2ODEsIDEzMTY5MCwgMTMxNjk5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzE3MDgsIDEzMTcxNSwgMTMxNzIyLCAxMzE3MjksIDEzMTczNiwgMTMxNzQzLCAxMzE3NTAsIDEzMTc1NywgCisgICAgMTMxNzY0LCAxMzE3NzEsIDEzMTc3OCwgMTMxNzg1LCAxMzE3OTIsIDEzMTc5OSwgMTMxODA2LCAxMzE4MTMsIDEzMTgyMCwgCisgICAgMTMxODI3LCAxMzE4MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTg0MSwgCisgICAgMTMxODQ0LCAxMzE4NDgsIDEzMTg1MiwgMTMxODU2LCAxMzE4NTksIDEzMTg2MywgMTMxODY4LCAxMzE4NzIsIDEzMTg3NiwgCisgICAgMTMxODgwLCAxMzE4ODQsIDEzMTg4OCwgMTMxODkzLCAxMzE4OTgsIDEzMTkwMiwgMTMxOTA2LCAxMzE5MDksIDEzMTkxMywgCisgICAgMTMxOTE4LCAxMzE5MjMsIDEzMTkyNywgMTMxOTMxLCAxMzE5MzQsIDEzMTkzOCwgMTMxOTQyLCAxMzE5NDYsIDEzMTk1MCwgCisgICAgMTMxOTU0LCAxMzE5NTgsIDEzMTk2MiwgMTMxOTY1LCAxMzE5NjksIDEzMTk3MywgMTMxOTc3LCAxMzE5ODEsIDEzMTk4NSwgCisgICAgMTMxOTg5LCAxMzE5OTUsIDEzMTk5OCwgMTMyMDAyLCAxMzIwMDYsIDEzMjAxMCwgMTMyMDE0LCAxMzIwMTgsIDEzMjAyMiwgCisgICAgMTMyMDI2LCAxMzIwMzAsIDEzMjAzNCwgMTMyMDM5LCAxMzIwNDQsIDEzMjA1MCwgMTMyMDU0LCAxMzIwNTgsIDEzMjA2MiwgCisgICAgMTMyMDY2LCAxMzIwNzAsIDEzMjA3NCwgMTMyMDc5LCAxMzIwODMsIDEzMjA4NywgMTMyMDkxLCAxMzIwOTUsIDEzMjA5OSwgCisgICAgMTMyMTA1LCAxMzIxMDksIDEzMjExMywgMTMyMTE3LCAxMzIxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMjEyNSwgMTMyMTI5LCAxMzIxMzMsIDEzMjEzOSwgMTMyMTQ1LCAxMzIxNDksIDEzMjE1NCwgMTMyMTU5LCAxMzIxNjQsIAorICAgIDEzMjE2OSwgMTMyMTczLCAxMzIxNzgsIDEzMjE4MywgMTMyMTg4LCAxMzIxOTIsIDEzMjE5NywgMTMyMjAyLCAxMzIyMDcsIAorICAgIDEzMjIxMSwgMTMyMjE2LCAxMzIyMjEsIDEzMjIyNiwgMTMyMjMxLCAxMzIyMzYsIDEzMjI0MSwgMTMyMjQ2LCAxMzIyNTEsIAorICAgIDEzMjI1NSwgMTMyMjYwLCAxMzIyNjUsIDEzMjI3MCwgMTMyMjc1LCAxMzIyODAsIDEzMjI4NSwgMTMyMjkwLCAxMzIyOTUsIAorICAgIDEzMjMwMCwgMTMyMzA1LCAxMzIzMTAsIDEzMjMxNywgMTMyMzIyLCAxMzIzMjksIDEzMjMzNCwgMTMyMzM5LCAxMzIzNDQsIAorICAgIDEzMjM0OSwgMTMyMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIzNTksIAorICAgIDEzMjM2MywgMTMyMzY5LCAxMzIzNzIsIDEzMjM3NSwgMTMyMzc5LCAxMzIzODMsIDEzMjM4NywgMTMyMzkxLCAxMzIzOTUsIAorICAgIDEzMjM5OSwgMTMyNDAzLCAxMzI0MDksIDEzMjQxNSwgMTMyNDIxLCAxMzI0MjcsIDEzMjQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5MzQ0LCAxMjkzNDcsIDEyOTM1MSwgCi0gICAgMTI5MzU1LCAxMjkzNTksIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzEsIDEyOTM3NSwgMTI5Mzc5LCAxMjkzODMsIDEyOTM4NywgCi0gICAgMTI5MzkxLCAxMjkzOTYsIDEyOTQwMSwgMTI5NDA1LCAxMjk0MDksIDEyOTQxMywgMTI5NDE3LCAxMjk0MjIsIDEyOTQyOCwgCi0gICAgMTI5NDMyLCAxMjk0MzYsIDEyOTQ0MCwgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MiwgMTI5NDU2LCAxMjk0NjAsIDEyOTQ2NCwgCi0gICAgMTI5NDY4LCAxMjk0NzEsIDEyOTQ3NSwgMTI5NDc5LCAxMjk0ODMsIDEyOTQ4NywgMTI5NDkxLCAxMjk0OTUsIDEyOTUwMSwgCi0gICAgMTI5NTA0LCAxMjk1MDgsIDEyOTUxMiwgMTI5NTE2LCAxMjk1MjAsIDEyOTUyNCwgMTI5NTI4LCAxMjk1MzIsIDEyOTUzNiwgCi0gICAgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MCwgMTI5NTU2LCAxMjk1NjAsIDEyOTU2NCwgMTI5NTY4LCAxMjk1NzIsIDEyOTU3NiwgCi0gICAgMTI5NTgwLCAxMjk1ODUsIDEyOTU4OSwgMTI5NTkzLCAxMjk1OTcsIDEyOTYwMSwgMTI5NjA1LCAxMjk2MTEsIDEyOTYxNSwgCi0gICAgMTI5NjE5LCAxMjk2MjMsIDEyOTYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NjMxLCAxMjk2MzUsIAotICAgIDEyOTYzOSwgMTI5NjQ1LCAxMjk2NTEsIDEyOTY1NSwgMTI5NjYwLCAxMjk2NjUsIDEyOTY3MCwgMTI5Njc1LCAxMjk2NzksIAotICAgIDEyOTY4NCwgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OCwgMTI5NzAzLCAxMjk3MDgsIDEyOTcxMywgMTI5NzE3LCAxMjk3MjIsIAotICAgIDEyOTcyNywgMTI5NzMyLCAxMjk3MzcsIDEyOTc0MiwgMTI5NzQ3LCAxMjk3NTIsIDEyOTc1NywgMTI5NzYxLCAxMjk3NjYsIAotICAgIDEyOTc3MSwgMTI5Nzc2LCAxMjk3ODEsIDEyOTc4NiwgMTI5NzkxLCAxMjk3OTYsIDEyOTgwMSwgMTI5ODA2LCAxMjk4MTEsIAotICAgIDEyOTgxNiwgMTI5ODIzLCAxMjk4MjgsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2NSwgMTI5ODY5LCAxMjk4NzUsIAotICAgIDEyOTg3OCwgMTI5ODgxLCAxMjk4ODUsIDEyOTg4OSwgMTI5ODkzLCAxMjk4OTcsIDEyOTkwMSwgMTI5OTA1LCAxMjk5MDksIAotICAgIDEyOTkxNSwgMTI5OTIxLCAxMjk5MjcsIDEyOTkzMywgMTI5OTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjQ0MywgMTMyNDQ2LCAKKyAgICAxMzI0NDksIDEzMjQ1MiwgMTMyNDU1LCAxMzI0NTgsIDEzMjQ2MSwgMTMyNDY0LCAxMzI0NjcsIDEzMjQ3MCwgMTMyNDczLCAKKyAgICAxMzI0NzYsIDEzMjQ3OSwgMTMyNDgyLCAxMzI0ODUsIDEzMjQ4OCwgMTMyNDkxLCAxMzI0OTQsIDEzMjQ5NywgMTMyNTAwLCAKKyAgICAxMzI1MDMsIDEzMjUwNiwgMTMyNTA5LCAxMzI1MTIsIDEzMjUxNSwgMTMyNTE4LCAxMzI1MjEsIDEzMjUyNCwgMTMyNTI3LCAKKyAgICAxMzI1MzAsIDEzMjUzMywgMTMyNTM2LCAxMzI1MzksIDEzMjU0MiwgMTMyNTQ1LCAxMzI1NDgsIDEzMjU1MSwgMTMyNTU0LCAKKyAgICAxMzI1NTcsIDEzMjU2MCwgMTMyNTYzLCAxMzI1NjYsIDEzMjU2OSwgMTMyNTcyLCAxMzI1NzUsIDEzMjU3OCwgMTMyNTgxLCAKKyAgICAxMzI1ODQsIDEzMjU4NywgMTMyNTkwLCAxMzI1OTMsIDEzMjU5NiwgMTMyNTk5LCAxMzI2MDIsIDEzMjYwNSwgMTMyNjA4LCAKKyAgICAxMzI2MTEsIDEzMjYxNCwgMTMyNjE3LCAxMzI2MjAsIDEzMjYyMywgMTMyNjI2LCAxMzI2MjksIDEzMjYzMiwgMTMyNjM1LCAKKyAgICAxMzI2MzgsIDEzMjY0MSwgMTMyNjQ0LCAxMzI2NDcsIDEzMjY1MCwgMTMyNjUzLCAxMzI2NTYsIDEzMjY1OSwgMTMyNjYyLCAKKyAgICAxMzI2NjUsIDEzMjY2OCwgMTMyNjcxLCAxMzI2NzQsIDEzMjY3NywgMTMyNjgwLCAxMzI2ODMsIDEzMjY4NiwgMTMyNjg5LCAKKyAgICAxMzI2OTIsIDEzMjY5NSwgMTMyNjk4LCAxMzI3MDEsIDEzMjcwNCwgMTMyNzA3LCAxMzI3MTAsIDEzMjcxMywgMTMyNzE2LCAKKyAgICAxMzI3MTksIDEzMjcyMiwgMTMyNzI1LCAxMzI3MjgsIDEzMjczMSwgMTMyNzM0LCAxMzI3MzcsIDEzMjc0MCwgMTMyNzQzLCAKKyAgICAxMzI3NDYsIDEzMjc0OSwgMTMyNzUyLCAxMzI3NTUsIDEzMjc1OCwgMTMyNzYxLCAxMzI3NjQsIDEzMjc2NywgMTMyNzcwLCAKKyAgICAxMzI3NzMsIDEzMjc3NiwgMTMyNzc5LCAxMzI3ODIsIDEzMjc4NSwgMTMyNzg4LCAxMzI3OTEsIDEzMjc5NCwgMTMyNzk3LCAKKyAgICAxMzI4MDAsIDEzMjgwMywgMTMyODA2LCAxMzI4MDksIDEzMjgxMiwgMTMyODE1LCAxMzI4MTgsIDEzMjgyMSwgMTMyODI0LCAKKyAgICAxMzI4MjcsIDEzMjgzMCwgMTMyODMzLCAxMzI4MzYsIDEzMjgzOSwgMTMyODQyLCAxMzI4NDUsIDEzMjg0OCwgMTMyODUxLCAKKyAgICAxMzI4NTQsIDEzMjg1NywgMTMyODYwLCAxMzI4NjMsIDEzMjg2NiwgMTMyODY5LCAxMzI4NzIsIDEzMjg3NSwgMTMyODc4LCAKKyAgICAxMzI4ODEsIDEzMjg4NCwgMTMyODg3LCAxMzI4OTAsIDEzMjg5MywgMTMyODk2LCAxMzI4OTksIDEzMjkwMiwgMTMyOTA1LCAKKyAgICAxMzI5MDgsIDEzMjkxMSwgMTMyOTE0LCAxMzI5MTcsIDEzMjkyMCwgMTMyOTIzLCAxMzI5MjYsIDEzMjkyOSwgMTMyOTMyLCAKKyAgICAxMzI5MzUsIDEzMjkzOCwgMTMyOTQxLCAxMzI5NDQsIDEzMjk0NywgMTMyOTUwLCAxMzI5NTMsIDEzMjk1NiwgMTMyOTU5LCAKKyAgICAxMzI5NjIsIDEzMjk2NSwgMTMyOTY4LCAxMzI5NzEsIDEzMjk3NCwgMTMyOTc3LCAxMzI5ODAsIDEzMjk4MywgMTMyOTg2LCAKKyAgICAxMzI5ODksIDEzMjk5MiwgMTMyOTk1LCAxMzI5OTgsIDEzMzAwMSwgMTMzMDA0LCAxMzMwMDcsIDEzMzAxMCwgMTMzMDEzLCAKKyAgICAxMzMwMTYsIDEzMzAxOSwgMTMzMDIyLCAxMzMwMjUsIDEzMzAyOCwgMTMzMDMxLCAxMzMwMzQsIDEzMzAzNywgMTMzMDQwLCAKKyAgICAxMzMwNDMsIDEzMzA0NiwgMTMzMDQ5LCAxMzMwNTIsIDEzMzA1NSwgMTMzMDU4LCAxMzMwNjEsIDEzMzA2NCwgMTMzMDY3LCAKKyAgICAxMzMwNzAsIDEzMzA3MywgMTMzMDc2LCAxMzMwNzksIDEzMzA4MiwgMTMzMDg1LCAxMzMwODgsIDEzMzA5MSwgMTMzMDk0LCAKKyAgICAxMzMwOTcsIDEzMzEwMCwgMTMzMTAzLCAxMzMxMDYsIDEzMzEwOSwgMTMzMTEyLCAxMzMxMTUsIDEzMzExOCwgMTMzMTIxLCAKKyAgICAxMzMxMjQsIDEzMzEyNywgMTMzMTMwLCAxMzMxMzMsIDEzMzEzNiwgMTMzMTM5LCAxMzMxNDIsIDEzMzE0NSwgMTMzMTQ4LCAKKyAgICAxMzMxNTEsIDEzMzE1NCwgMTMzMTU3LCAxMzMxNjAsIDEzMzE2MywgMTMzMTY2LCAxMzMxNjksIDEzMzE3MiwgMTMzMTc1LCAKKyAgICAxMzMxNzgsIDEzMzE4MSwgMTMzMTg0LCAxMzMxODcsIDEzMzE5MCwgMTMzMTkzLCAxMzMxOTYsIDEzMzE5OSwgMTMzMjAyLCAKKyAgICAxMzMyMDUsIDEzMzIwOCwgMTMzMjExLCAxMzMyMTQsIDEzMzIxNywgMTMzMjIwLCAxMzMyMjMsIDEzMzIyNiwgMTMzMjI5LCAKKyAgICAxMzMyMzIsIDEzMzIzNSwgMTMzMjM4LCAxMzMyNDEsIDEzMzI0NCwgMTMzMjQ3LCAxMzMyNTAsIDEzMzI1MywgMTMzMjU2LCAKKyAgICAxMzMyNTksIDEzMzI2MiwgMTMzMjY1LCAxMzMyNjgsIDEzMzI3MSwgMTMzMjc0LCAxMzMyNzcsIDEzMzI4MCwgMTMzMjgzLCAKKyAgICAxMzMyODYsIDEzMzI4OSwgMTMzMjkyLCAxMzMyOTUsIDEzMzI5OCwgMTMzMzAxLCAxMzMzMDQsIDEzMzMwNywgMTMzMzEwLCAKKyAgICAxMzMzMTMsIDEzMzMxNiwgMTMzMzE5LCAxMzMzMjIsIDEzMzMyNSwgMTMzMzI4LCAxMzMzMzEsIDEzMzMzNCwgMTMzMzM3LCAKKyAgICAxMzMzNDAsIDEzMzM0MywgMTMzMzQ2LCAxMzMzNDksIDEzMzM1MiwgMTMzMzU1LCAxMzMzNTgsIDEzMzM2MSwgMTMzMzY0LCAKKyAgICAxMzMzNjcsIDEzMzM3MCwgMTMzMzczLCAxMzMzNzYsIDEzMzM3OSwgMTMzMzgyLCAxMzMzODUsIDEzMzM4OCwgMTMzMzkxLCAKKyAgICAxMzMzOTQsIDEzMzM5NywgMTMzNDAwLCAxMzM0MDMsIDEzMzQwNiwgMTMzNDA5LCAxMzM0MTIsIDEzMzQxNSwgMTMzNDE4LCAKKyAgICAxMzM0MjEsIDEzMzQyNCwgMTMzNDI3LCAxMzM0MzAsIDEzMzQzMywgMTMzNDM2LCAxMzM0MzksIDEzMzQ0MiwgMTMzNDQ1LCAKKyAgICAxMzM0NDgsIDEzMzQ1MSwgMTMzNDU0LCAxMzM0NTcsIDEzMzQ2MCwgMTMzNDYzLCAxMzM0NjYsIDEzMzQ2OSwgMTMzNDcyLCAKKyAgICAxMzM0NzUsIDEzMzQ3OCwgMTMzNDgxLCAxMzM0ODQsIDEzMzQ4NywgMTMzNDkwLCAxMzM0OTMsIDEzMzQ5NiwgMTMzNDk5LCAKKyAgICAxMzM1MDIsIDEzMzUwNSwgMTMzNTA4LCAxMzM1MTEsIDEzMzUxNCwgMTMzNTE3LCAxMzM1MjAsIDEzMzUyMywgMTMzNTI2LCAKKyAgICAxMzM1MjksIDEzMzUzMiwgMTMzNTM1LCAxMzM1MzgsIDEzMzU0MSwgMTMzNTQ0LCAxMzM1NDcsIDEzMzU1MCwgMTMzNTUzLCAKKyAgICAxMzM1NTYsIDEzMzU1OSwgMTMzNTYyLCAxMzM1NjUsIDEzMzU2OCwgMTMzNTcxLCAxMzM1NzQsIDEzMzU3NywgMTMzNTgwLCAKKyAgICAxMzM1ODMsIDEzMzU4NiwgMTMzNTg5LCAxMzM1OTIsIDEzMzU5NSwgMTMzNTk4LCAxMzM2MDEsIDEzMzYwNCwgMTMzNjA3LCAKKyAgICAxMzM2MTAsIDEzMzYxMywgMTMzNjE2LCAxMzM2MTksIDEzMzYyMiwgMTMzNjI1LCAxMzM2MjgsIDEzMzYzMSwgMTMzNjM0LCAKKyAgICAxMzM2MzcsIDEzMzY0MCwgMTMzNjQzLCAxMzM2NDYsIDEzMzY0OSwgMTMzNjUyLCAxMzM2NTUsIDEzMzY1OCwgMTMzNjYxLCAKKyAgICAxMzM2NjQsIDEzMzY2NywgMTMzNjcwLCAxMzM2NzMsIDEzMzY3NiwgMTMzNjc5LCAxMzM2ODIsIDEzMzY4NSwgMTMzNjg4LCAKKyAgICAxMzM2OTEsIDEzMzY5NCwgMTMzNjk3LCAxMzM3MDAsIDEzMzcwMywgMTMzNzA2LCAxMzM3MDksIDEzMzcxMiwgMTMzNzE1LCAKKyAgICAxMzM3MTgsIDEzMzcyMSwgMTMzNzI0LCAxMzM3MjcsIDEzMzczMCwgMTMzNzMzLCAxMzM3MzYsIDEzMzczOSwgMTMzNzQyLCAKKyAgICAxMzM3NDUsIDEzMzc0OCwgMTMzNzUxLCAxMzM3NTQsIDEzMzc1NywgMTMzNzYwLCAxMzM3NjMsIDEzMzc2NiwgMTMzNzY5LCAKKyAgICAxMzM3NzIsIDEzMzc3NSwgMTMzNzc4LCAxMzM3ODEsIDEzMzc4NCwgMTMzNzg3LCAxMzM3OTAsIDEzMzc5MywgMTMzNzk2LCAKKyAgICAxMzM3OTksIDEzMzgwMiwgMTMzODA1LCAxMzM4MDgsIDEzMzgxMSwgMTMzODE0LCAxMzM4MTcsIDEzMzgyMCwgMTMzODIzLCAKKyAgICAxMzM4MjYsIDEzMzgyOSwgMTMzODMyLCAxMzM4MzUsIDEzMzgzOCwgMTMzODQxLCAxMzM4NDQsIDEzMzg0NywgMTMzODUwLCAKKyAgICAxMzM4NTMsIDEzMzg1NiwgMTMzODU5LCAxMzM4NjIsIDEzMzg2NSwgMTMzODY4LCAxMzM4NzEsIDEzMzg3NCwgMTMzODc3LCAKKyAgICAxMzM4ODAsIDEzMzg4MywgMTMzODg2LCAxMzM4ODksIDEzMzg5MiwgMTMzODk1LCAxMzM4OTgsIDEzMzkwMSwgMTMzOTA0LCAKKyAgICAxMzM5MDcsIDEzMzkxMCwgMTMzOTEzLCAxMzM5MTYsIDEzMzkxOSwgMTMzOTIyLCAxMzM5MjUsIDEzMzkyOCwgMTMzOTMxLCAKKyAgICAxMzM5MzQsIDEzMzkzNywgMTMzOTQwLCAxMzM5NDMsIDEzMzk0NiwgMTMzOTQ5LCAxMzM5NTIsIDEzMzk1NSwgMTMzOTU4LCAKKyAgICAxMzM5NjEsIDEzMzk2NCwgMTMzOTY3LCAxMzM5NzAsIDEzMzk3MywgMTMzOTc2LCAxMzM5NzksIDEzMzk4MiwgMTMzOTg1LCAKKyAgICAxMzM5ODgsIDEzMzk5MSwgMTMzOTk0LCAxMzM5OTcsIDEzNDAwMCwgMTM0MDAzLCAxMzQwMDYsIDEzNDAwOSwgMTM0MDEyLCAKKyAgICAxMzQwMTUsIDEzNDAxOCwgMTM0MDIxLCAxMzQwMjQsIDEzNDAyNywgMTM0MDMwLCAxMzQwMzMsIDEzNDAzNiwgMTM0MDM5LCAKKyAgICAxMzQwNDIsIDEzNDA0NSwgMTM0MDQ4LCAxMzQwNTEsIDEzNDA1NCwgMTM0MDU3LCAxMzQwNjAsIDEzNDA2MywgMTM0MDY2LCAKKyAgICAxMzQwNjksIDEzNDA3MiwgMTM0MDc1LCAxMzQwNzgsIDEzNDA4MSwgMTM0MDg0LCAxMzQwODcsIDEzNDA5MCwgMTM0MDkzLCAKKyAgICAxMzQwOTYsIDEzNDA5OSwgMTM0MTAyLCAxMzQxMDUsIDEzNDEwOCwgMTM0MTExLCAxMzQxMTQsIDEzNDExNywgMTM0MTIwLCAKKyAgICAxMzQxMjMsIDEzNDEyNiwgMTM0MTI5LCAxMzQxMzIsIDEzNDEzNSwgMTM0MTM4LCAxMzQxNDEsIDEzNDE0NCwgMTM0MTQ3LCAKKyAgICAxMzQxNTAsIDEzNDE1MywgMTM0MTU2LCAxMzQxNTksIDEzNDE2MiwgMTM0MTY1LCAxMzQxNjgsIDEzNDE3MSwgMTM0MTc0LCAKKyAgICAxMzQxNzcsIDEzNDE4MCwgMTM0MTgzLCAxMzQxODYsIDEzNDE4OSwgMTM0MTkyLCAxMzQxOTUsIDEzNDE5OCwgMTM0MjAxLCAKKyAgICAxMzQyMDQsIDEzNDIwNywgMTM0MjEwLCAxMzQyMTMsIDEzNDIxNiwgMTM0MjE5LCAxMzQyMjIsIDEzNDIyNSwgMTM0MjI4LCAKKyAgICAxMzQyMzEsIDEzNDIzNCwgMTM0MjM3LCAxMzQyNDAsIDEzNDI0MywgMTM0MjQ2LCAxMzQyNDksIDEzNDI1MiwgMTM0MjU1LCAKKyAgICAxMzQyNTgsIDEzNDI2MSwgMTM0MjY0LCAxMzQyNjcsIDEzNDI3MCwgMTM0MjczLCAxMzQyNzYsIDEzNDI3OSwgMTM0MjgyLCAKKyAgICAxMzQyODUsIDEzNDI4OCwgMTM0MjkxLCAxMzQyOTQsIDEzNDI5NywgMTM0MzAwLCAxMzQzMDMsIDEzNDMwNiwgMTM0MzA5LCAKKyAgICAxMzQzMTIsIDEzNDMxNSwgMTM0MzE4LCAxMzQzMjEsIDEzNDMyNCwgMTM0MzI3LCAxMzQzMzAsIDEzNDMzMywgMTM0MzM2LCAKKyAgICAxMzQzMzksIDEzNDM0MiwgMTM0MzQ1LCAxMzQzNDgsIDEzNDM1MSwgMTM0MzU0LCAxMzQzNTcsIDEzNDM2MCwgMTM0MzYzLCAKKyAgICAxMzQzNjYsIDEzNDM2OSwgMTM0MzcyLCAxMzQzNzUsIDEzNDM3OCwgMTM0MzgxLCAxMzQzODQsIDEzNDM4NywgMTM0MzkwLCAKKyAgICAxMzQzOTMsIDEzNDM5NiwgMTM0Mzk5LCAxMzQ0MDIsIDEzNDQwNSwgMTM0NDA4LCAxMzQ0MTEsIDEzNDQxNCwgMTM0NDE3LCAKKyAgICAxMzQ0MjAsIDEzNDQyMywgMTM0NDI2LCAxMzQ0MjksIDEzNDQzMiwgMTM0NDM1LCAxMzQ0MzgsIDEzNDQ0MSwgMTM0NDQ0LCAKKyAgICAxMzQ0NDcsIDEzNDQ1MCwgMTM0NDUzLCAxMzQ0NTYsIDEzNDQ1OSwgMTM0NDYyLCAxMzQ0NjUsIDEzNDQ2OCwgMTM0NDcxLCAKKyAgICAxMzQ0NzQsIDEzNDQ3NywgMTM0NDgwLCAxMzQ0ODMsIDEzNDQ4NiwgMTM0NDg5LCAxMzQ0OTIsIDEzNDQ5NSwgMTM0NDk4LCAKKyAgICAxMzQ1MDEsIDEzNDUwNCwgMTM0NTA3LCAxMzQ1MTAsIDEzNDUxMywgMTM0NTE2LCAxMzQ1MTksIDEzNDUyMiwgMTM0NTI1LCAKKyAgICAxMzQ1MjgsIDEzNDUzMSwgMTM0NTM0LCAxMzQ1MzcsIDEzNDU0MCwgMTM0NTQzLCAxMzQ1NDYsIDEzNDU0OSwgMTM0NTUyLCAKKyAgICAxMzQ1NTUsIDEzNDU1OCwgMTM0NTYxLCAxMzQ1NjQsIDEzNDU2NywgMTM0NTcwLCAxMzQ1NzMsIDEzNDU3NiwgMTM0NTc5LCAKKyAgICAxMzQ1ODIsIDEzNDU4NSwgMTM0NTg4LCAxMzQ1OTEsIDEzNDU5NCwgMTM0NTk3LCAxMzQ2MDAsIDEzNDYwMywgMTM0NjA2LCAKKyAgICAxMzQ2MDksIDEzNDYxMiwgMTM0NjE1LCAxMzQ2MTgsIDEzNDYyMSwgMTM0NjI0LCAxMzQ2MjcsIDEzNDYzMCwgMTM0NjMzLCAKKyAgICAxMzQ2MzYsIDEzNDYzOSwgMTM0NjQyLCAxMzQ2NDUsIDEzNDY0OCwgMTM0NjUxLCAxMzQ2NTQsIDEzNDY1NywgMTM0NjYwLCAKKyAgICAxMzQ2NjMsIDEzNDY2NiwgMTM0NjY5LCAxMzQ2NzIsIDEzNDY3NSwgMTM0Njc4LCAxMzQ2ODEsIDEzNDY4NCwgMTM0Njg3LCAKKyAgICAxMzQ2OTAsIDEzNDY5MywgMTM0Njk2LCAxMzQ2OTksIDEzNDcwMiwgMTM0NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzQ3MDgsIDEzNDcxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTQ1LCAxMjk5NTAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTk0MjYsNjUwICsyMDY2OCw2ODMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzQ3MTksIDEzNDcyMywgMTM0NzI3LCAxMzQ3MzEsIDEzNDczNSwgMTM0NzM5LCAxMzQ3NDMsIDEzNDc0NiwgMTM0NzUwLCAKKyAgICAxMzQ3NTQsIDEzNDc1OCwgMTM0NzYyLCAxMzQ3NjUsIDEzNDc3MSwgMTM0Nzc3LCAxMzQ3ODMsIDEzNDc4OSwgMTM0Nzk1LCAKKyAgICAxMzQ3OTksIDEzNDgwNSwgMTM0ODA5LCAxMzQ4MTMsIDEzNDgxOSwgMTM0ODIzLCAxMzQ4MjcsIDEzNDgzMSwgMTM0ODM1LCAKKyAgICAxMzQ4MzksIDEzNDg0MywgMTM0ODQ3LCAxMzQ4NTMsIDEzNDg1OSwgMTM0ODY1LCAxMzQ4NzEsIDEzNDg3OCwgMTM0ODg1LCAKKyAgICAxMzQ4OTIsIDEzNDkwMiwgMTM0OTA5LCAxMzQ5MTYsIDEzNDkyMiwgMTM0OTI4LCAxMzQ5MzQsIDEzNDk0MCwgMTM0OTQ4LCAKKyAgICAxMzQ5NTYsIDEzNDk2NCwgMTM0OTcyLCAxMzQ5ODEsIDEzNDk4NywgMTM0OTk1LCAxMzUwMDEsIDEzNTAwOCwgMTM1MDE0LCAKKyAgICAxMzUwMjEsIDEzNTAyNywgMTM1MDM1LCAxMzUwMzksIDEzNTA0MywgMTM1MDQ4LCAxMzUwNTQsIDEzNTA2MCwgMTM1MDY4LCAKKyAgICAxMzUwNzYsIDEzNTA4MiwgMTM1MDg5LCAxMzUwOTIsIDEzNTA5OCwgMTM1MTAyLCAxMzUxMDUsIDEzNTEwOSwgMTM1MTEyLCAKKyAgICAxMzUxMTUsIDEzNTExOSwgMTM1MTI0LCAxMzUxMjgsIDEzNTEzMiwgMTM1MTM4LCAxMzUxNDMsIDEzNTE0OSwgMTM1MTUzLCAKKyAgICAxMzUxNTcsIDEzNTE2MCwgMTM1MTY0LCAxMzUxNjgsIDEzNTE3MywgMTM1MTc3LCAxMzUxODIsIDEzNTE4NiwgMTM1MTkxLCAKKyAgICAxMzUxOTUsIDEzNTE5OSwgMTM1MjAzLCAxMzUyMDcsIDEzNTIxMSwgMTM1MjE1LCAxMzUyMTksIDEzNTIyMywgMTM1MjI4LCAKKyAgICAxMzUyMzMsIDEzNTIzOCwgMTM1MjQzLCAxMzUyNDksIDEzNTI1NSwgMTM1MjYxLCAxMzUyNjcsIDEzNTI3MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM1Mjc4LCAxMzUyODYsIDEzNTI5NSwgMTM1MzAzLCAxMzUzMTAsIDEzNTMxOCwgMTM1MzI1LCAxMzUzMzIsIAorICAgIDEzNTM0MSwgMTM1MzQ4LCAxMzUzNTUsIDEzNTM2MiwgMTM1MzcwLCAwLCAwLCAwLCAxMzUzNzgsIDEzNTM4MywgMTM1MzkwLCAKKyAgICAxMzUzOTYsIDEzNTQwMywgMTM1NDA5LCAxMzU0MTUsIDEzNTQyMSwgMTM1NDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzU0MzMsIDEzNTQzOCwgMTM1NDQ1LCAxMzU0NTEsIDEzNTQ1OCwgMTM1NDY0LCAxMzU0NzAsIDEzNTQ3NiwgMTM1NDgyLCAKKyAgICAxMzU0ODgsIDAsIDAsIDEzNTQ5MywgMTM1NDk5LCAxMzU1MDUsIDEzNTUwOCwgMTM1NTE3LCAxMzU1MjQsIDEzNTUzMiwgCisgICAgMTM1NTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NTYsIDEyOTk2MCwgMTI5OTY0LCAxMjk5NjgsIDEyOTk3MiwgMTI5OTc2LCAKLSAgICAxMjk5ODAsIDEyOTk4MywgMTI5OTg3LCAxMjk5OTEsIDEyOTk5NSwgMTI5OTk5LCAxMzAwMDIsIDEzMDAwOCwgMTMwMDEzLCAKLSAgICAxMzAwMTksIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzQsIDEzMDA0MCwgMTMwMDQ0LCAxMzAwNDgsIDEzMDA1NCwgMTMwMDU4LCAKLSAgICAxMzAwNjIsIDEzMDA2NiwgMTMwMDcwLCAxMzAwNzQsIDEzMDA3OCwgMTMwMDgxLCAxMzAwODcsIDEzMDA5MywgMTMwMDk5LCAKLSAgICAxMzAxMDUsIDEzMDExMiwgMTMwMTE5LCAxMzAxMjYsIDEzMDEzNiwgMTMwMTQzLCAxMzAxNTAsIDEzMDE1NSwgMTMwMTYwLCAKLSAgICAxMzAxNjUsIDEzMDE3MCwgMTMwMTc3LCAxMzAxODQsIDEzMDE5MSwgMTMwMTk4LCAxMzAyMDcsIDEzMDIxMywgMTMwMjIwLCAKLSAgICAxMzAyMjYsIDEzMDIzMywgMTMwMjM5LCAxMzAyNDYsIDEzMDI1MSwgMTMwMjU4LCAxMzAyNjIsIDEzMDI2NiwgMTMwMjcxLCAKLSAgICAxMzAyNzcsIDEzMDI4MywgMTMwMjkwLCAxMzAyOTcsIDEzMDMwMywgMTMwMzEwLCAxMzAzMTMsIDEzMDMxOSwgMTMwMzIzLCAKLSAgICAxMzAzMjYsIDEzMDMzMCwgMTMwMzMzLCAxMzAzMzYsIDEzMDM0MCwgMTMwMzQ1LCAxMzAzNDksIDEzMDM1MywgMTMwMzU5LCAKLSAgICAxMzAzNjQsIDEzMDM3MCwgMTMwMzc0LCAxMzAzNzgsIDEzMDM4MSwgMTMwMzg1LCAxMzAzODksIDEzMDM5NCwgMTMwMzk4LCAKLSAgICAxMzA0MDMsIDEzMDQwNywgMTMwNDEyLCAxMzA0MTYsIDEzMDQyMCwgMTMwNDI0LCAxMzA0MjgsIDEzMDQzMiwgMTMwNDM2LCAKLSAgICAxMzA0NDAsIDEzMDQ0NCwgMTMwNDQ5LCAxMzA0NTQsIDEzMDQ1OSwgMTMwNDY0LCAxMzA0NzAsIDEzMDQ3NiwgMTMwNDgyLCAKLSAgICAxMzA0ODgsIDEzMDQ5NCwgMCwgMCwgMCwgMCwgMCwgMTMwNDk5LCAxMzA1MDcsIDEzMDUxNiwgMTMwNTI0LCAxMzA1MzEsIAotICAgIDEzMDUzOSwgMTMwNTQ2LCAxMzA1NTMsIDEzMDU2MiwgMTMwNTY5LCAxMzA1NzYsIDEzMDU4MywgMTMwNTkxLCAwLCAwLCAwLCAKLSAgICAxMzA1OTksIDEzMDYwNCwgMTMwNjExLCAxMzA2MTcsIDEzMDYyNCwgMTMwNjMwLCAxMzA2MzYsIDEzMDY0MiwgMTMwNjQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2NTQsIDEzMDY1OSwgMTMwNjY2LCAxMzA2NzIsIDEzMDY3OSwgMTMwNjg1LCAKLSAgICAxMzA2OTEsIDEzMDY5NywgMTMwNzAzLCAxMzA3MDksIDAsIDAsIDEzMDcxNCwgMTMwNzIwLCAxMzA3MjYsIDEzMDcyOSwgCi0gICAgMTMwNzM4LCAxMzA3NDUsIDEzMDc1MywgMTMwNzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU1NDYsIAorICAgIDEzNTU1MSwgMTM1NTU2LCAxMzU1NjEsIDEzNTU2OCwgMTM1NTc1LCAxMzU1ODIsIDEzNTU4OSwgMTM1NTk0LCAxMzU1OTksIAorICAgIDEzNTYwNCwgMTM1NjA5LCAxMzU2MTYsIDEzNTYyMSwgMTM1NjI4LCAxMzU2MzUsIDEzNTY0MCwgMTM1NjQ1LCAxMzU2NTAsIAorICAgIDEzNTY1NywgMTM1NjYyLCAxMzU2NjcsIDEzNTY3NCwgMTM1NjgxLCAxMzU2ODYsIDEzNTY5MSwgMTM1Njk2LCAxMzU3MDMsIAorICAgIDEzNTcxMCwgMTM1NzE3LCAxMzU3MjIsIDEzNTcyNywgMTM1NzM0LCAxMzU3NDEsIDEzNTc0OCwgMTM1NzU1LCAxMzU3NjAsIAorICAgIDEzNTc2NSwgMTM1NzcwLCAxMzU3NzcsIDEzNTc4MiwgMTM1Nzg3LCAxMzU3OTIsIDEzNTc5OSwgMTM1ODA4LCAxMzU4MTUsIAorICAgIDEzNTgyMCwgMTM1ODI1LCAxMzU4MzAsIDEzNTgzNSwgMTM1ODQwLCAxMzU4NDUsIDEzNTg1NCwgMTM1ODYxLCAxMzU4NjYsIAorICAgIDEzNTg3MywgMTM1ODgwLCAxMzU4ODUsIDEzNTg5MCwgMTM1ODk1LCAxMzU5MDIsIDEzNTkwNywgMTM1OTE0LCAxMzU5MjEsIAorICAgIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzYsIDEzNTk0MywgMTM1OTUwLCAxMzU5NTUsIDEzNTk2MCwgMTM1OTY3LCAxMzU5NzQsIAorICAgIDEzNTk4MSwgMTM1OTg2LCAxMzU5OTEsIDEzNTk5NiwgMTM2MDAxLCAxMzYwMDgsIDEzNjAxNywgMTM2MDI2LCAxMzYwMzEsIAorICAgIDEzNjAzOCwgMTM2MDQ3LCAxMzYwNTIsIDEzNjA1NywgMTM2MDYyLCAxMzYwNjcsIDEzNjA3NCwgMTM2MDgxLCAxMzYwODgsIAorICAgIDEzNjA5NSwgMTM2MTAwLCAxMzYxMDUsIDEzNjExMCwgMTM2MTE3LCAxMzYxMjQsIDEzNjEzMSwgMTM2MTM2LCAxMzYxNDEsIAorICAgIDEzNjE0OCwgMTM2MTUzLCAxMzYxNjAsIDEzNjE2NSwgMTM2MTcyLCAxMzYxNzcsIDEzNjE4NCwgMTM2MTkxLCAxMzYxOTYsIAorICAgIDEzNjIwMSwgMTM2MjA2LCAxMzYyMTEsIDEzNjIxNiwgMTM2MjIxLCAxMzYyMjYsIDEzNjIzMSwgMTM2MjM2LCAxMzYyNDMsIAorICAgIDEzNjI1MCwgMTM2MjU3LCAxMzYyNjQsIDEzNjI3MSwgMTM2MjgwLCAxMzYyODUsIDEzNjI5MCwgMTM2Mjk3LCAxMzYzMDQsIAorICAgIDEzNjMwOSwgMTM2MzE2LCAxMzYzMjMsIDEzNjMzMCwgMTM2MzM3LCAxMzYzNDQsIDEzNjM1MSwgMTM2MzU2LCAxMzYzNjEsIAorICAgIDEzNjM2NiwgMTM2MzcxLCAxMzYzNzYsIDEzNjM4NSwgMTM2Mzk0LCAxMzY0MDMsIDEzNjQxMiwgMTM2NDIxLCAxMzY0MzAsIAorICAgIDEzNjQzOSwgMTM2NDQ4LCAxMzY0NTMsIDEzNjQ2NCwgMTM2NDc1LCAxMzY0ODQsIDEzNjQ4OSwgMTM2NDk0LCAxMzY0OTksIAorICAgIDEzNjUwNCwgMTM2NTEzLCAxMzY1MjAsIDEzNjUyNywgMTM2NTM0LCAxMzY1NDEsIDEzNjU0OCwgMTM2NTU1LCAxMzY1NjQsIAorICAgIDEzNjU3MywgMTM2NTg0LCAxMzY1OTMsIDEzNjYwNCwgMTM2NjEzLCAxMzY2MjAsIDEzNjYyOSwgMTM2NjQwLCAxMzY2NDksIAorICAgIDEzNjY1OCwgMTM2NjY3LCAxMzY2NzYsIDEzNjY4MywgMTM2NjkwLCAxMzY2OTcsIDEzNjcwNiwgMTM2NzE1LCAxMzY3MjYsIAorICAgIDEzNjczNSwgMTM2NzQ0LCAxMzY3NTUsIDEzNjc2MCwgMTM2NzY1LCAxMzY3NzYsIDEzNjc4NCwgMTM2NzkzLCAxMzY4MDIsIAorICAgIDEzNjgxMSwgMTM2ODIyLCAxMzY4MzEsIDEzNjg0MCwgMTM2ODUxLCAxMzY4NjIsIDEzNjg3MywgMTM2ODg0LCAxMzY4OTUsIAorICAgIDEzNjkwNiwgMTM2OTEzLCAxMzY5MjAsIDEzNjkyNywgMTM2OTM0LCAxMzY5NDUsIDEzNjk1NCwgMTM2OTYxLCAxMzY5NjgsIAorICAgIDEzNjk3NSwgMTM2OTg2LCAxMzY5OTcsIDEzNzAwOCwgMTM3MDE5LCAxMzcwMzAsIDEzNzA0MSwgMTM3MDUyLCAxMzcwNjMsIAorICAgIDEzNzA3MCwgMTM3MDc3LCAxMzcwODYsIDEzNzA5NSwgMTM3MTAyLCAxMzcxMDksIDEzNzExNiwgMTM3MTI1LCAxMzcxMzQsIAorICAgIDEzNzE0MywgMTM3MTUwLCAxMzcxNTksIDEzNzE2OCwgMTM3MTc3LCAxMzcxODQsIDEzNzE5MSwgMTM3MTk2LCAxMzcyMDIsIAorICAgIDEzNzIwOSwgMTM3MjE2LCAxMzcyMjMsIDEzNzIzMCwgMTM3MjM3LCAxMzcyNDQsIDEzNzI1MywgMTM3MjYyLCAxMzcyNzEsIAorICAgIDEzNzI4MCwgMTM3Mjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzcyOTYsIDEzNzMwMiwgMTM3MzA3LCAKKyAgICAxMzczMTIsIDEzNzMxOSwgMTM3MzI1LCAxMzczMzEsIDEzNzMzNywgMTM3MzQzLCAxMzczNDksIDEzNzM1NSwgMTM3MzYxLCAKKyAgICAxMzczNjUsIDEzNzM2OSwgMTM3Mzc1LCAxMzczODEsIDEzNzM4NywgMTM3MzkxLCAxMzczOTYsIDEzNzQwMSwgMTM3NDA1LCAKKyAgICAxMzc0MDksIDEzNzQxMiwgMTM3NDE4LCAxMzc0MjQsIDEzNzQzMCwgMTM3NDM2LCAxMzc0NDIsIDEzNzQ0OCwgMTM3NDU0LCAKKyAgICAxMzc0NjAsIDEzNzQ2NiwgMTM3NDc2LCAxMzc0ODYsIDEzNzQ5MiwgMTM3NDk4LCAxMzc1MDgsIDEzNzUxOCwgMTM3NTI0LCAKKyAgICAwLCAwLCAxMzc1MzAsIDEzNzUzOCwgMTM3NTQzLCAxMzc1NDgsIDEzNzU1NCwgMTM3NTYwLCAxMzc1NjYsIDEzNzU3MiwgCisgICAgMTM3NTc4LCAxMzc1ODQsIDEzNzU5MSwgMTM3NTk4LCAxMzc2MDQsIDEzNzYxMCwgMTM3NjE2LCAxMzc2MjIsIDEzNzYyOCwgCisgICAgMTM3NjM0LCAxMzc2NDAsIDEzNzY0NiwgMTM3NjUxLCAxMzc2NTcsIDEzNzY2MywgMTM3NjY5LCAxMzc2NzUsIDEzNzY4MSwgCisgICAgMTM3NjkwLCAxMzc2OTYsIDEzNzcwMSwgMTM3NzA5LCAxMzc3MTYsIDEzNzcyMywgMTM3NzMyLCAxMzc3NDEsIDEzNzc1MCwgCisgICAgMTM3NzU5LCAxMzc3NjgsIDEzNzc3NywgMTM3Nzg2LCAxMzc3OTUsIDEzNzgwNSwgMTM3ODE1LCAxMzc4MjMsIDEzNzgzMSwgCisgICAgMTM3ODQwLCAxMzc4NDksIDEzNzg1NSwgMTM3ODYxLCAxMzc4NjcsIDEzNzg3MywgMTM3ODgxLCAxMzc4ODksIDEzNzg5MywgCisgICAgMTM3ODk5LCAxMzc5MDQsIDEzNzkxMCwgMTM3OTE2LCAxMzc5MjIsIDEzNzkyOCwgMTM3OTM0LCAxMzc5NDMsIDEzNzk0OCwgCisgICAgMTM3OTU1LCAxMzc5NjAsIDEzNzk2NSwgMTM3OTcwLCAxMzc5NzYsIDEzNzk4MiwgMTM3OTg4LCAxMzc5OTUsIDEzODAwMCwgCisgICAgMTM4MDA1LCAxMzgwMTAsIDEzODAxNSwgMTM4MDIwLCAxMzgwMjYsIDEzODAzMiwgMTM4MDM4LCAxMzgwNDQsIDEzODA1MCwgCisgICAgMTM4MDU2LCAxMzgwNjIsIDEzODA2OCwgMTM4MDczLCAxMzgwNzgsIDEzODA4MywgMTM4MDg4LCAxMzgwOTMsIDEzODA5OCwgCisgICAgMTM4MTAzLCAxMzgxMDgsIDEzODExNCwgMTM4MTIwLCAxMzgxMjUsIDEzODEzMCwgMTM4MTM1LCAxMzgxNDAsIDEzODE0NSwgCisgICAgMTM4MTUxLCAxMzgxNTgsIDEzODE2MiwgMTM4MTY2LCAxMzgxNzAsIDEzODE3NCwgMTM4MTc4LCAxMzgxODIsIDEzODE4NiwgCisgICAgMTM4MTkwLCAxMzgxOTgsIDEzODIwOCwgMTM4MjEyLCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAxMzgyMzQsIDEzODI0MCwgCisgICAgMTM4MjQ2LCAxMzgyNTIsIDEzODI1OCwgMTM4MjY0LCAxMzgyNzAsIDEzODI3NiwgMTM4MjgyLCAxMzgyODgsIDEzODI5NCwgCisgICAgMTM4MzAwLCAxMzgzMDQsIDEzODMwOCwgMTM4MzE1LCAxMzgzMjEsIDEzODMyNywgMTM4MzMzLCAxMzgzMzgsIDEzODM0NSwgCisgICAgMTM4MzUwLCAxMzgzNTYsIDEzODM2MiwgMTM4MzY4LCAxMzgzNzQsIDEzODM3OSwgMTM4MzgzLCAxMzgzODksIDEzODM5MywgCisgICAgMTM4Mzk3LCAxMzg0MDEsIDEzODQwNywgMTM4NDEzLCAxMzg0MTcsIDEzODQyMywgMTM4NDI5LCAxMzg0MzUsIDEzODQ0MSwgCisgICAgMTM4NDQ3LCAxMzg0NTUsIDEzODQ2MywgMTM4NDY5LCAxMzg0NzUsIDEzODQ4MSwgMTM4NDg3LCAxMzg0OTksIDEzODUxMSwgCisgICAgMTM4NTI1LCAxMzg1MzcsIDEzODU0OSwgMTM4NTYzLCAxMzg1NzcsIDEzODU5MSwgMTM4NTk1LCAxMzg2MDMsIDEzODYxMSwgCisgICAgMTM4NjE2LCAxMzg2MjAsIDEzODYyNCwgMTM4NjI4LCAxMzg2MzIsIDEzODYzNiwgMTM4NjQwLCAxMzg2NDQsIDEzODY1MCwgCisgICAgMTM4NjU2LCAxMzg2NjIsIDEzODY2OCwgMTM4Njc2LCAxMzg2ODUsIDEzODY5MiwgMTM4Njk5LCAxMzg3MDcsIDEzODcxNCwgCisgICAgMTM4NzI2LCAxMzg3MzgsIDEzODc1MCwgMTM4NzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg3NjksIDEzODc3NiwgMTM4NzgzLCAxMzg3OTAsIDEzODc5NywgCisgICAgMTM4ODA0LCAxMzg4MTEsIDEzODgxOCwgMTM4ODI1LCAxMzg4MzIsIDEzODgzOSwgMTM4ODQ2LCAxMzg4NTMsIDEzODg2MCwgCisgICAgMTM4ODY3LCAxMzg4NzQsIDEzODg4MSwgMTM4ODg4LCAxMzg4OTUsIDEzODkwMiwgMTM4OTA5LCAxMzg5MTYsIDEzODkyMywgCisgICAgMTM4OTMwLCAxMzg5MzcsIDEzODk0NCwgMTM4OTUxLCAxMzg5NTgsIDEzODk2NSwgMTM4OTcyLCAxMzg5NzksIDEzODk4NiwgCisgICAgMTM4OTkzLCAxMzkwMDAsIDEzOTAwNywgMTM5MDE0LCAxMzkwMjEsIDEzOTAyOCwgMTM5MDM1LCAxMzkwNDIsIDEzOTA0OSwgCisgICAgMTM5MDU2LCAxMzkwNjMsIDEzOTA3MCwgMTM5MDc3LCAxMzkwODQsIDEzOTA5MSwgMTM5MDk4LCAxMzkxMDUsIDEzOTExMiwgCisgICAgMTM5MTE5LCAxMzkxMjYsIDEzOTEzMywgMTM5MTQwLCAxMzkxNDcsIDEzOTE1NCwgMTM5MTYxLCAxMzkxNjgsIDEzOTE3NSwgCisgICAgMTM5MTgyLCAxMzkxODksIDEzOTE5NiwgMTM5MjAzLCAxMzkyMTAsIDEzOTIxNywgMTM5MjI0LCAxMzkyMzEsIDEzOTIzNiwgCisgICAgMTM5MjQxLCAxMzkyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDc2NywgMTMwNzcyLCAxMzA3NzcsIDEzMDc4MiwgMTMwNzg5LCAxMzA3OTYsIDEzMDgwMywgCi0gICAgMTMwODEwLCAxMzA4MTUsIDEzMDgyMCwgMTMwODI1LCAxMzA4MzAsIDEzMDgzNywgMTMwODQyLCAxMzA4NDksIDEzMDg1NiwgCi0gICAgMTMwODYxLCAxMzA4NjYsIDEzMDg3MSwgMTMwODc4LCAxMzA4ODMsIDEzMDg4OCwgMTMwODk1LCAxMzA5MDIsIDEzMDkwNywgCi0gICAgMTMwOTEyLCAxMzA5MTcsIDEzMDkyNCwgMTMwOTMxLCAxMzA5MzgsIDEzMDk0MywgMTMwOTQ4LCAxMzA5NTUsIDEzMDk2MiwgCi0gICAgMTMwOTY5LCAxMzA5NzYsIDEzMDk4MSwgMTMwOTg2LCAxMzA5OTEsIDEzMDk5OCwgMTMxMDAzLCAxMzEwMDgsIDEzMTAxMywgCi0gICAgMTMxMDIwLCAxMzEwMjksIDEzMTAzNiwgMTMxMDQxLCAxMzEwNDYsIDEzMTA1MSwgMTMxMDU2LCAxMzEwNjEsIDEzMTA2NiwgCi0gICAgMTMxMDc1LCAxMzEwODIsIDEzMTA4NywgMTMxMDk0LCAxMzExMDEsIDEzMTEwNiwgMTMxMTExLCAxMzExMTYsIDEzMTEyMywgCi0gICAgMTMxMTI4LCAxMzExMzUsIDEzMTE0MiwgMTMxMTQ3LCAxMzExNTIsIDEzMTE1NywgMTMxMTY0LCAxMzExNzEsIDEzMTE3NiwgCi0gICAgMTMxMTgxLCAxMzExODgsIDEzMTE5NSwgMTMxMjAyLCAxMzEyMDcsIDEzMTIxMiwgMTMxMjE3LCAxMzEyMjIsIDEzMTIyOSwgCi0gICAgMTMxMjM4LCAxMzEyNDcsIDEzMTI1MiwgMTMxMjU5LCAxMzEyNjgsIDEzMTI3MywgMTMxMjc4LCAxMzEyODMsIDEzMTI4OCwgCi0gICAgMTMxMjk1LCAxMzEzMDIsIDEzMTMwOSwgMTMxMzE2LCAxMzEzMjEsIDEzMTMyNiwgMTMxMzMxLCAxMzEzMzgsIDEzMTM0NSwgCi0gICAgMTMxMzUyLCAxMzEzNTcsIDEzMTM2MiwgMTMxMzY5LCAxMzEzNzQsIDEzMTM4MSwgMTMxMzg2LCAxMzEzOTMsIDEzMTM5OCwgCi0gICAgMTMxNDA1LCAxMzE0MTIsIDEzMTQxNywgMTMxNDIyLCAxMzE0MjcsIDEzMTQzMiwgMTMxNDM3LCAxMzE0NDIsIDEzMTQ0NywgCi0gICAgMTMxNDUyLCAxMzE0NTcsIDEzMTQ2NCwgMTMxNDcxLCAxMzE0NzgsIDEzMTQ4NSwgMTMxNDkyLCAxMzE1MDEsIDEzMTUwNiwgCi0gICAgMTMxNTExLCAxMzE1MTgsIDEzMTUyNSwgMTMxNTMwLCAxMzE1MzcsIDEzMTU0NCwgMTMxNTUxLCAxMzE1NTgsIDEzMTU2NSwgCi0gICAgMTMxNTcyLCAxMzE1NzcsIDEzMTU4MiwgMTMxNTg3LCAxMzE1OTIsIDEzMTU5NywgMTMxNjA2LCAxMzE2MTUsIDEzMTYyNCwgCi0gICAgMTMxNjMzLCAxMzE2NDIsIDEzMTY1MSwgMTMxNjYwLCAxMzE2NjksIDEzMTY3NCwgMTMxNjg1LCAxMzE2OTYsIDEzMTcwNSwgCi0gICAgMTMxNzEwLCAxMzE3MTUsIDEzMTcyMCwgMTMxNzI1LCAxMzE3MzQsIDEzMTc0MSwgMTMxNzQ4LCAxMzE3NTUsIDEzMTc2MiwgCi0gICAgMTMxNzY5LCAxMzE3NzYsIDEzMTc4NSwgMTMxNzk0LCAxMzE4MDUsIDEzMTgxNCwgMTMxODI1LCAxMzE4MzQsIDEzMTg0MSwgCi0gICAgMTMxODUwLCAxMzE4NjEsIDEzMTg3MCwgMTMxODc5LCAxMzE4ODgsIDEzMTg5NywgMTMxOTA0LCAxMzE5MTEsIDEzMTkxOCwgCi0gICAgMTMxOTI3LCAxMzE5MzYsIDEzMTk0NywgMTMxOTU2LCAxMzE5NjUsIDEzMTk3NiwgMTMxOTgxLCAxMzE5ODYsIDEzMTk5NywgCi0gICAgMTMyMDA1LCAxMzIwMTQsIDEzMjAyMywgMTMyMDMyLCAxMzIwNDMsIDEzMjA1MiwgMTMyMDYxLCAxMzIwNzIsIDEzMjA4MywgCi0gICAgMTMyMDk0LCAxMzIxMDUsIDEzMjExNiwgMTMyMTI3LCAxMzIxMzQsIDEzMjE0MSwgMTMyMTQ4LCAxMzIxNTUsIDEzMjE2NiwgCi0gICAgMTMyMTc1LCAxMzIxODIsIDEzMjE4OSwgMTMyMTk2LCAxMzIyMDcsIDEzMjIxOCwgMTMyMjI5LCAxMzIyNDAsIDEzMjI1MSwgCi0gICAgMTMyMjYyLCAxMzIyNzMsIDEzMjI4NCwgMTMyMjkxLCAxMzIyOTgsIDEzMjMwNywgMTMyMzE2LCAxMzIzMjMsIDEzMjMzMCwgCi0gICAgMTMyMzM3LCAxMzIzNDYsIDEzMjM1NSwgMTMyMzY0LCAxMzIzNzEsIDEzMjM4MCwgMTMyMzg5LCAxMzIzOTgsIDEzMjQwNSwgCi0gICAgMTMyNDEyLCAxMzI0MTcsIDEzMjQyMywgMTMyNDMwLCAxMzI0MzcsIDEzMjQ0NCwgMTMyNDUxLCAxMzI0NTgsIDEzMjQ2NSwgCi0gICAgMTMyNDc0LCAxMzI0ODMsIDEzMjQ5MiwgMTMyNTAxLCAxMzI1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzMjUxNywgMTMyNTIzLCAxMzI1MjgsIDEzMjUzMywgMTMyNTQwLCAxMzI1NDYsIDEzMjU1MiwgMTMyNTU4LCAxMzI1NjQsIAotICAgIDEzMjU3MCwgMTMyNTc2LCAxMzI1ODIsIDEzMjU4NiwgMTMyNTkwLCAxMzI1OTYsIDEzMjYwMiwgMTMyNjA4LCAxMzI2MTIsIAotICAgIDEzMjYxNywgMTMyNjIyLCAxMzI2MjYsIDEzMjYzMCwgMTMyNjMzLCAxMzI2MzksIDEzMjY0NSwgMTMyNjUxLCAxMzI2NTcsIAotICAgIDEzMjY2MywgMTMyNjY5LCAxMzI2NzUsIDEzMjY4MSwgMTMyNjg3LCAxMzI2OTcsIDEzMjcwNywgMTMyNzEzLCAxMzI3MTksIAotICAgIDEzMjcyOSwgMTMyNzM5LCAxMzI3NDUsIDAsIDAsIDEzMjc1MSwgMTMyNzU5LCAxMzI3NjQsIDEzMjc2OSwgMTMyNzc1LCAKLSAgICAxMzI3ODEsIDEzMjc4NywgMTMyNzkzLCAxMzI3OTksIDEzMjgwNSwgMTMyODEyLCAxMzI4MTksIDEzMjgyNSwgMTMyODMxLCAKLSAgICAxMzI4MzcsIDEzMjg0MywgMTMyODQ5LCAxMzI4NTUsIDEzMjg2MSwgMTMyODY3LCAxMzI4NzIsIDEzMjg3OCwgMTMyODg0LCAKLSAgICAxMzI4OTAsIDEzMjg5NiwgMTMyOTAyLCAxMzI5MTEsIDEzMjkxNywgMTMyOTIyLCAxMzI5MzAsIDEzMjkzNywgMTMyOTQ0LCAKLSAgICAxMzI5NTMsIDEzMjk2MiwgMTMyOTcxLCAxMzI5ODAsIDEzMjk4OSwgMTMyOTk4LCAxMzMwMDcsIDEzMzAxNiwgMTMzMDI2LCAKLSAgICAxMzMwMzYsIDEzMzA0NCwgMTMzMDUyLCAxMzMwNjEsIDEzMzA3MCwgMTMzMDc2LCAxMzMwODIsIDEzMzA4OCwgMTMzMDk0LCAKLSAgICAxMzMxMDIsIDEzMzExMCwgMTMzMTE0LCAxMzMxMjAsIDEzMzEyNSwgMTMzMTMxLCAxMzMxMzcsIDEzMzE0MywgMTMzMTQ5LCAKLSAgICAxMzMxNTUsIDEzMzE2NCwgMTMzMTY5LCAxMzMxNzYsIDEzMzE4MSwgMTMzMTg2LCAxMzMxOTEsIDEzMzE5NywgMTMzMjAzLCAKLSAgICAxMzMyMDksIDEzMzIxNiwgMTMzMjIxLCAxMzMyMjYsIDEzMzIzMSwgMTMzMjM2LCAxMzMyNDEsIDEzMzI0NywgMTMzMjUzLCAKLSAgICAxMzMyNTksIDEzMzI2NSwgMTMzMjcxLCAxMzMyNzcsIDEzMzI4MywgMTMzMjg5LCAxMzMyOTQsIDEzMzI5OSwgMTMzMzA0LCAKLSAgICAxMzMzMDksIDEzMzMxNCwgMTMzMzE5LCAxMzMzMjQsIDEzMzMyOSwgMTMzMzM1LCAxMzMzNDEsIDEzMzM0NiwgMTMzMzUxLCAKLSAgICAxMzMzNTYsIDEzMzM2MSwgMTMzMzY2LCAxMzMzNzIsIDEzMzM3OSwgMTMzMzgzLCAxMzMzODcsIDEzMzM5MSwgMTMzMzk1LCAKLSAgICAxMzMzOTksIDEzMzQwMywgMTMzNDA3LCAxMzM0MTEsIDEzMzQxOSwgMTMzNDI5LCAxMzM0MzMsIDEzMzQzNywgMTMzNDQzLCAKLSAgICAxMzM0NDksIDEzMzQ1NSwgMTMzNDYxLCAxMzM0NjcsIDEzMzQ3MywgMTMzNDc5LCAxMzM0ODUsIDEzMzQ5MSwgMTMzNDk3LCAKLSAgICAxMzM1MDMsIDEzMzUwOSwgMTMzNTE1LCAxMzM1MjEsIDEzMzUyNSwgMTMzNTI5LCAxMzM1MzYsIDEzMzU0MiwgMTMzNTQ4LCAKLSAgICAxMzM1NTQsIDEzMzU1OSwgMTMzNTY2LCAxMzM1NzEsIDEzMzU3NywgMTMzNTgzLCAxMzM1ODksIDEzMzU5NSwgMTMzNjAwLCAKLSAgICAxMzM2MDQsIDEzMzYxMCwgMTMzNjE0LCAxMzM2MTgsIDEzMzYyMiwgMTMzNjI4LCAxMzM2MzQsIDEzMzYzOCwgMTMzNjQ0LCAKLSAgICAxMzM2NTAsIDEzMzY1NiwgMTMzNjYyLCAxMzM2NjgsIDEzMzY3NiwgMTMzNjg0LCAxMzM2OTAsIDEzMzY5NiwgMTMzNzAyLCAKLSAgICAxMzM3MDgsIDEzMzcyMCwgMTMzNzMyLCAxMzM3NDYsIDEzMzc1OCwgMTMzNzcwLCAxMzM3ODQsIDEzMzc5OCwgMTMzODEyLCAKLSAgICAxMzM4MTYsIDEzMzgyNCwgMTMzODMyLCAxMzM4MzcsIDEzMzg0MSwgMTMzODQ1LCAxMzM4NDksIDEzMzg1MywgMTMzODU3LCAKLSAgICAxMzM4NjEsIDEzMzg2NSwgMTMzODcxLCAxMzM4NzcsIDEzMzg4MywgMTMzODg5LCAxMzM4OTcsIDEzMzkwNiwgMTMzOTEzLCAKLSAgICAxMzM5MjAsIDEzMzkyOCwgMTMzOTM1LCAxMzM5NDcsIDEzMzk1OSwgMTMzOTcxLCAxMzM5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzk5MCwgMTMzOTk3LCAKLSAgICAxMzQwMDQsIDEzNDAxMSwgMTM0MDE4LCAxMzQwMjUsIDEzNDAzMiwgMTM0MDM5LCAxMzQwNDYsIDEzNDA1MywgMTM0MDYwLCAKLSAgICAxMzQwNjcsIDEzNDA3NCwgMTM0MDgxLCAxMzQwODgsIDEzNDA5NSwgMTM0MTAyLCAxMzQxMDksIDEzNDExNiwgMTM0MTIzLCAKLSAgICAxMzQxMzAsIDEzNDEzNywgMTM0MTQ0LCAxMzQxNTEsIDEzNDE1OCwgMTM0MTY1LCAxMzQxNzIsIDEzNDE3OSwgMTM0MTg2LCAKLSAgICAxMzQxOTMsIDEzNDIwMCwgMTM0MjA3LCAxMzQyMTQsIDEzNDIyMSwgMTM0MjI4LCAxMzQyMzUsIDEzNDI0MiwgMTM0MjQ5LCAKLSAgICAxMzQyNTYsIDEzNDI2MywgMTM0MjcwLCAxMzQyNzcsIDEzNDI4NCwgMTM0MjkxLCAxMzQyOTgsIDEzNDMwNSwgMTM0MzEyLCAKLSAgICAxMzQzMTksIDEzNDMyNiwgMTM0MzMzLCAxMzQzNDAsIDEzNDM0NywgMTM0MzU0LCAxMzQzNjEsIDEzNDM2OCwgMTM0Mzc1LCAKLSAgICAxMzQzODIsIDEzNDM4OSwgMTM0Mzk2LCAxMzQ0MDMsIDEzNDQxMCwgMTM0NDE3LCAxMzQ0MjQsIDEzNDQzMSwgMTM0NDM4LCAKLSAgICAxMzQ0NDUsIDEzNDQ1MiwgMTM0NDU3LCAxMzQ0NjIsIDEzNDQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5MjUwLCAxMzkyNTUsIDEzOTI2MiwgMTM5MjY5LCAxMzkyNzYsIDEzOTI4MywgMTM5Mjg4LCAxMzkyOTMsIDEzOTMwMCwgCisgICAgMTM5MzA1LCAxMzkzMTAsIDEzOTMxNywgMTM5MzIyLCAxMzkzMjcsIDEzOTMzMiwgMTM5MzM5LCAxMzkzNDgsIDEzOTM1MywgCisgICAgMTM5MzU4LCAxMzkzNjMsIDEzOTM2OCwgMTM5MzczLCAxMzkzNzgsIDEzOTM4NSwgMTM5MzkwLCAxMzkzOTUsIDEzOTQwMCwgCisgICAgMTM5NDA1LCAxMzk0MTAsIDEzOTQxNSwgMTM5NDIwLCAxMzk0MjUsIDEzOTQzMCwgMTM5NDM1LCAxMzk0NDAsIDEzOTQ0NSwgCisgICAgMTM5NDUxLCAxMzk0NTYsIDEzOTQ2MSwgMTM5NDY2LCAxMzk0NzEsIDEzOTQ3NiwgMTM5NDgxLCAxMzk0ODYsIDEzOTQ5MSwgCisgICAgMTM5NDk2LCAxMzk1MDUsIDEzOTUxMCwgMTM5NTE5LCAxMzk1MjQsIDEzOTUyOSwgMTM5NTM0LCAxMzk1MzksIDEzOTU0NCwgCisgICAgMTM5NTQ5LCAxMzk1NTQsIDEzOTU2MywgMTM5NTY4LCAxMzk1NzMsIDEzOTU3OCwgMTM5NTgzLCAxMzk1ODgsIDEzOTU5NSwgCisgICAgMTM5NjAwLCAxMzk2MDcsIDEzOTYxMiwgMTM5NjE3LCAxMzk2MjIsIDEzOTYyNywgMTM5NjMyLCAxMzk2MzcsIDEzOTY0MiwgCisgICAgMTM5NjQ3LCAxMzk2NTIsIDEzOTY1NywgMTM5NjYyLCAxMzk2NjcsIDEzOTY3MiwgMTM5Njc3LCAxMzk2ODIsIDEzOTY4NywgCisgICAgMTM5NjkyLCAxMzk2OTcsIDEzOTcwMiwgMTM5NzExLCAxMzk3MTYsIDEzOTcyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTM5NzI2LCAxMzk3MzQsIDEzOTc0MiwgMTM5NzUwLCAxMzk3NTgsIDEzOTc2NiwgMTM5Nzc0LCAxMzk3ODMsIAorICAgIDEzOTc5MSwgMTM5ODAwLCAxMzk4MDgsIDEzOTgxNiwgMTM5ODI0LCAxMzk4MzIsIDEzOTg0MCwgMTM5ODQ4LCAxMzk4NTcsIAorICAgIDEzOTg2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NDcxLCAxMzQ0NzYsIDEzNDQ4MywgMTM0NDkwLCAxMzQ0OTcsIDEzNDUwNCwgCi0gICAgMTM0NTA5LCAxMzQ1MTQsIDEzNDUyMSwgMTM0NTI2LCAxMzQ1MzEsIDEzNDUzOCwgMTM0NTQzLCAxMzQ1NDgsIDEzNDU1MywgCi0gICAgMTM0NTYwLCAxMzQ1NjksIDEzNDU3NCwgMTM0NTc5LCAxMzQ1ODQsIDEzNDU4OSwgMTM0NTk0LCAxMzQ1OTksIDEzNDYwNiwgCi0gICAgMTM0NjExLCAxMzQ2MTYsIDEzNDYyMSwgMTM0NjI2LCAxMzQ2MzEsIDEzNDYzNiwgMTM0NjQxLCAxMzQ2NDYsIDEzNDY1MSwgCi0gICAgMTM0NjU2LCAxMzQ2NjEsIDEzNDY2NiwgMTM0NjcyLCAxMzQ2NzcsIDEzNDY4MiwgMTM0Njg3LCAxMzQ2OTIsIDEzNDY5NywgCi0gICAgMTM0NzAyLCAxMzQ3MDcsIDEzNDcxMiwgMTM0NzE3LCAxMzQ3MjYsIDEzNDczMSwgMTM0NzQwLCAxMzQ3NDUsIDEzNDc1MCwgCi0gICAgMTM0NzU1LCAxMzQ3NjAsIDEzNDc2NSwgMTM0NzcwLCAxMzQ3NzUsIDEzNDc4NCwgMTM0Nzg5LCAxMzQ3OTQsIDEzNDc5OSwgCi0gICAgMTM0ODA0LCAxMzQ4MDksIDEzNDgxNiwgMTM0ODIxLCAxMzQ4MjgsIDEzNDgzMywgMTM0ODM4LCAxMzQ4NDMsIDEzNDg0OCwgCi0gICAgMTM0ODUzLCAxMzQ4NTgsIDEzNDg2MywgMTM0ODY4LCAxMzQ4NzMsIDEzNDg3OCwgMTM0ODgzLCAxMzQ4ODgsIDEzNDg5MywgCi0gICAgMTM0ODk4LCAxMzQ5MDMsIDEzNDkwOCwgMTM0OTEzLCAxMzQ5MTgsIDEzNDkyMywgMTM0OTMyLCAxMzQ5MzcsIDEzNDk0MiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0OTQ3LCAxMzQ5NTUsIDEzNDk2MywgMTM0OTcxLCAxMzQ5NzksIAotICAgIDEzNDk4NywgMTM0OTk1LCAxMzUwMDQsIDEzNTAxMiwgMTM1MDIxLCAxMzUwMjksIDEzNTAzNywgMTM1MDQ1LCAxMzUwNTMsIAotICAgIDEzNTA2MSwgMTM1MDY5LCAxMzUwNzgsIDEzNTA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5ODc0LCAxMzk4NzgsIDEzOTg4MywgMTM5ODg4LCAxMzk4OTMsIDEzOTg5NywgMTM5OTAyLCAxMzk5MDcsIDEzOTkxMiwgCisgICAgMTM5OTE2LCAxMzk5MjEsIDEzOTkyNiwgMTM5OTMwLCAxMzk5MzUsIDEzOTk0MCwgMTM5OTQ0LCAxMzk5NDksIDEzOTk1NCwgCisgICAgMTM5OTU4LCAxMzk5NjMsIDEzOTk2OCwgMTM5OTcyLCAxMzk5NzcsIDEzOTk4MiwgMTM5OTg3LCAxMzk5OTIsIDEzOTk5NywgCisgICAgMTQwMDAxLCAxNDAwMDYsIDE0MDAxMSwgMTQwMDE2LCAxNDAwMjAsIDE0MDAyNSwgMTQwMDMwLCAxNDAwMzUsIDE0MDAzOSwgCisgICAgMTQwMDQ0LCAxNDAwNDksIDE0MDA1MywgMTQwMDU4LCAxNDAwNjMsIDE0MDA2NywgMTQwMDcyLCAxNDAwNzcsIDE0MDA4MSwgCisgICAgMTQwMDg2LCAxNDAwOTEsIDE0MDA5NSwgMTQwMTAwLCAxNDAxMDUsIDE0MDExMCwgMTQwMTE1LCAxNDAxMjAsIDE0MDEyNCwgCisgICAgMTQwMTI5LCAxNDAxMzQsIDE0MDEzOSwgMTQwMTQzLCAxNDAxNDgsIDE0MDE1MywgMTQwMTU4LCAxNDAxNjIsIDE0MDE2NywgCisgICAgMTQwMTcyLCAxNDAxNzYsIDE0MDE4MSwgMTQwMTg2LCAxNDAxOTAsIDE0MDE5NSwgMTQwMjAwLCAxNDAyMDQsIDE0MDIwOSwgCisgICAgMTQwMjE0LCAxNDAyMTgsIDE0MDIyMywgMTQwMjI4LCAxNDAyMzMsIDE0MDIzOCwgMTQwMjQzLCAxNDAyNDcsIDE0MDI1MiwgCisgICAgMTQwMjU3LCAxNDAyNjIsIDE0MDI2NiwgMTQwMjcxLCAwLCAxNDAyNzYsIDE0MDI4MCwgMTQwMjg1LCAxNDAyOTAsIAorICAgIDE0MDI5NCwgMTQwMjk5LCAxNDAzMDQsIDE0MDMwOCwgMTQwMzEzLCAxNDAzMTgsIDE0MDMyMiwgMTQwMzI3LCAxNDAzMzIsIAorICAgIDE0MDMzNiwgMTQwMzQxLCAxNDAzNDYsIDE0MDM1MSwgMTQwMzU2LCAxNDAzNjEsIDE0MDM2NiwgMTQwMzcyLCAxNDAzNzgsIAorICAgIDE0MDM4NCwgMTQwMzg5LCAxNDAzOTUsIDE0MDQwMSwgMTQwNDA3LCAxNDA0MTIsIDE0MDQxOCwgMTQwNDI0LCAxNDA0MjksIAorICAgIDE0MDQzNSwgMTQwNDQxLCAxNDA0NDYsIDE0MDQ1MiwgMTQwNDU4LCAxNDA0NjMsIDE0MDQ2OSwgMTQwNDc1LCAxNDA0ODAsIAorICAgIDE0MDQ4NiwgMTQwNDkyLCAxNDA0OTgsIDE0MDUwNCwgMTQwNTEwLCAxNDA1MTUsIDE0MDUyMSwgMTQwNTI3LCAxNDA1MzMsIAorICAgIDE0MDUzOCwgMTQwNTQ0LCAxNDA1NTAsIDE0MDU1NiwgMTQwNTYxLCAxNDA1NjcsIDE0MDU3MywgMTQwNTc4LCAxNDA1ODQsIAorICAgIDE0MDU5MCwgMTQwNTk1LCAxNDA2MDEsIDE0MDYwNywgMTQwNjEyLCAxNDA2MTgsIDE0MDYyNCwgMTQwNjI5LCAxNDA2MzUsIAorICAgIDE0MDY0MSwgMTQwNjQ3LCAxNDA2NTMsIDE0MDY1OSwgMCwgMTQwNjYzLCAxNDA2NjgsIDAsIDAsIDE0MDY3MywgMCwgMCwgCisgICAgMTQwNjc4LCAxNDA2ODMsIDAsIDAsIDE0MDY4OCwgMTQwNjkzLCAxNDA2OTcsIDE0MDcwMiwgMCwgMTQwNzA3LCAxNDA3MTIsIAorICAgIDE0MDcxNywgMTQwNzIxLCAxNDA3MjYsIDE0MDczMSwgMTQwNzM2LCAxNDA3NDEsIDE0MDc0NiwgMTQwNzUwLCAxNDA3NTUsIAorICAgIDE0MDc2MCwgMCwgMTQwNzY1LCAwLCAxNDA3NzAsIDE0MDc3NSwgMTQwNzc5LCAxNDA3ODQsIDE0MDc4OSwgMTQwNzkzLCAKKyAgICAxNDA3OTgsIDAsIDE0MDgwMywgMTQwODA4LCAxNDA4MTMsIDE0MDgxNywgMTQwODIyLCAxNDA4MjcsIDE0MDgzMSwgCisgICAgMTQwODM2LCAxNDA4NDEsIDE0MDg0NiwgMTQwODUxLCAxNDA4NTYsIDE0MDg2MSwgMTQwODY3LCAxNDA4NzMsIDE0MDg3OSwgCisgICAgMTQwODg0LCAxNDA4OTAsIDE0MDg5NiwgMTQwOTAyLCAxNDA5MDcsIDE0MDkxMywgMTQwOTE5LCAxNDA5MjQsIDE0MDkzMCwgCisgICAgMTQwOTM2LCAxNDA5NDEsIDE0MDk0NywgMTQwOTUzLCAxNDA5NTgsIDE0MDk2NCwgMTQwOTcwLCAxNDA5NzUsIDE0MDk4MSwgCisgICAgMTQwOTg3LCAxNDA5OTMsIDE0MDk5OSwgMTQxMDA1LCAxNDEwMTAsIDE0MTAxNiwgMTQxMDIyLCAxNDEwMjgsIDE0MTAzMywgCisgICAgMTQxMDM5LCAxNDEwNDUsIDE0MTA1MSwgMTQxMDU2LCAxNDEwNjIsIDE0MTA2OCwgMTQxMDczLCAxNDEwNzksIDE0MTA4NSwgCisgICAgMTQxMDkwLCAxNDEwOTYsIDE0MTEwMiwgMTQxMTA3LCAxNDExMTMsIDE0MTExOSwgMTQxMTI0LCAxNDExMzAsIDE0MTEzNiwgCisgICAgMTQxMTQyLCAxNDExNDgsIDE0MTE1NCwgMTQxMTU4LCAwLCAxNDExNjMsIDE0MTE2OCwgMTQxMTcyLCAxNDExNzcsIDAsIDAsIAorICAgIDE0MTE4MiwgMTQxMTg3LCAxNDExOTIsIDE0MTE5NiwgMTQxMjAxLCAxNDEyMDYsIDE0MTIxMCwgMTQxMjE1LCAwLCAKKyAgICAxNDEyMjAsIDE0MTIyNSwgMTQxMjMwLCAxNDEyMzQsIDE0MTIzOSwgMTQxMjQ0LCAxNDEyNDksIDAsIDE0MTI1NCwgCisgICAgMTQxMjU4LCAxNDEyNjMsIDE0MTI2OCwgMTQxMjczLCAxNDEyNzcsIDE0MTI4MiwgMTQxMjg3LCAxNDEyOTIsIDE0MTI5NiwgCisgICAgMTQxMzAxLCAxNDEzMDYsIDE0MTMxMCwgMTQxMzE1LCAxNDEzMjAsIDE0MTMyNCwgMTQxMzI5LCAxNDEzMzQsIDE0MTMzOCwgCisgICAgMTQxMzQzLCAxNDEzNDgsIDE0MTM1MiwgMTQxMzU3LCAxNDEzNjIsIDE0MTM2NywgMTQxMzcyLCAxNDEzNzcsIDE0MTM4MSwgCisgICAgMCwgMTQxMzg2LCAxNDEzOTEsIDE0MTM5NSwgMTQxNDAwLCAwLCAxNDE0MDUsIDE0MTQwOSwgMTQxNDE0LCAxNDE0MTksIAorICAgIDE0MTQyMywgMCwgMTQxNDI4LCAwLCAwLCAwLCAxNDE0MzIsIDE0MTQzNywgMTQxNDQyLCAxNDE0NDYsIDE0MTQ1MSwgCisgICAgMTQxNDU2LCAxNDE0NjEsIDAsIDE0MTQ2NiwgMTQxNDcwLCAxNDE0NzUsIDE0MTQ4MCwgMTQxNDg1LCAxNDE0ODksIAorICAgIDE0MTQ5NCwgMTQxNDk5LCAxNDE1MDQsIDE0MTUwOCwgMTQxNTEzLCAxNDE1MTgsIDE0MTUyMiwgMTQxNTI3LCAxNDE1MzIsIAorICAgIDE0MTUzNiwgMTQxNTQxLCAxNDE1NDYsIDE0MTU1MCwgMTQxNTU1LCAxNDE1NjAsIDE0MTU2NCwgMTQxNTY5LCAxNDE1NzQsIAorICAgIDE0MTU3OSwgMTQxNTg0LCAxNDE1ODksIDE0MTU5NCwgMTQxNjAwLCAxNDE2MDYsIDE0MTYxMiwgMTQxNjE3LCAxNDE2MjMsIAorICAgIDE0MTYyOSwgMTQxNjM1LCAxNDE2NDAsIDE0MTY0NiwgMTQxNjUyLCAxNDE2NTcsIDE0MTY2MywgMTQxNjY5LCAxNDE2NzQsIAorICAgIDE0MTY4MCwgMTQxNjg2LCAxNDE2OTEsIDE0MTY5NywgMTQxNzAzLCAxNDE3MDgsIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjYsIAorICAgIDE0MTczMiwgMTQxNzM4LCAxNDE3NDMsIDE0MTc0OSwgMTQxNzU1LCAxNDE3NjEsIDE0MTc2NiwgMTQxNzcyLCAxNDE3NzgsIAorICAgIDE0MTc4NCwgMTQxNzg5LCAxNDE3OTUsIDE0MTgwMSwgMTQxODA2LCAxNDE4MTIsIDE0MTgxOCwgMTQxODIzLCAxNDE4MjksIAorICAgIDE0MTgzNSwgMTQxODQwLCAxNDE4NDYsIDE0MTg1MiwgMTQxODU3LCAxNDE4NjMsIDE0MTg2OSwgMTQxODc1LCAxNDE4ODEsIAorICAgIDE0MTg4NywgMTQxODkxLCAxNDE4OTYsIDE0MTkwMSwgMTQxOTA2LCAxNDE5MTAsIDE0MTkxNSwgMTQxOTIwLCAxNDE5MjUsIAorICAgIDE0MTkyOSwgMTQxOTM0LCAxNDE5MzksIDE0MTk0MywgMTQxOTQ4LCAxNDE5NTMsIDE0MTk1NywgMTQxOTYyLCAxNDE5NjcsIAorICAgIDE0MTk3MSwgMTQxOTc2LCAxNDE5ODEsIDE0MTk4NSwgMTQxOTkwLCAxNDE5OTUsIDE0MjAwMCwgMTQyMDA1LCAxNDIwMTAsIAorICAgIDE0MjAxNCwgMTQyMDE5LCAxNDIwMjQsIDE0MjAyOSwgMTQyMDMzLCAxNDIwMzgsIDE0MjA0MywgMTQyMDQ4LCAxNDIwNTIsIAorICAgIDE0MjA1NywgMTQyMDYyLCAxNDIwNjYsIDE0MjA3MSwgMTQyMDc2LCAxNDIwODAsIDE0MjA4NSwgMTQyMDkwLCAxNDIwOTQsIAorICAgIDE0MjA5OSwgMTQyMTA0LCAxNDIxMDgsIDE0MjExMywgMTQyMTE4LCAxNDIxMjMsIDE0MjEyOCwgMTQyMTMzLCAxNDIxMzgsIAorICAgIDE0MjE0NCwgMTQyMTUwLCAxNDIxNTYsIDE0MjE2MSwgMTQyMTY3LCAxNDIxNzMsIDE0MjE3OSwgMTQyMTg0LCAxNDIxOTAsIAorICAgIDE0MjE5NiwgMTQyMjAxLCAxNDIyMDcsIDE0MjIxMywgMTQyMjE4LCAxNDIyMjQsIDE0MjIzMCwgMTQyMjM1LCAxNDIyNDEsIAorICAgIDE0MjI0NywgMTQyMjUyLCAxNDIyNTgsIDE0MjI2NCwgMTQyMjcwLCAxNDIyNzYsIDE0MjI4MiwgMTQyMjg3LCAxNDIyOTMsIAorICAgIDE0MjI5OSwgMTQyMzA1LCAxNDIzMTAsIDE0MjMxNiwgMTQyMzIyLCAxNDIzMjgsIDE0MjMzMywgMTQyMzM5LCAxNDIzNDUsIAorICAgIDE0MjM1MCwgMTQyMzU2LCAxNDIzNjIsIDE0MjM2NywgMTQyMzczLCAxNDIzNzksIDE0MjM4NCwgMTQyMzkwLCAxNDIzOTYsIAorICAgIDE0MjQwMSwgMTQyNDA3LCAxNDI0MTMsIDE0MjQxOSwgMTQyNDI1LCAxNDI0MzEsIDE0MjQzNiwgMTQyNDQyLCAxNDI0NDgsIAorICAgIDE0MjQ1NCwgMTQyNDU5LCAxNDI0NjUsIDE0MjQ3MSwgMTQyNDc3LCAxNDI0ODIsIDE0MjQ4OCwgMTQyNDk0LCAxNDI0OTksIAorICAgIDE0MjUwNSwgMTQyNTExLCAxNDI1MTYsIDE0MjUyMiwgMTQyNTI4LCAxNDI1MzMsIDE0MjUzOSwgMTQyNTQ1LCAxNDI1NTAsIAorICAgIDE0MjU1NiwgMTQyNTYyLCAxNDI1NjgsIDE0MjU3NCwgMTQyNTgwLCAxNDI1ODUsIDE0MjU5MSwgMTQyNTk3LCAxNDI2MDMsIAorICAgIDE0MjYwOCwgMTQyNjE0LCAxNDI2MjAsIDE0MjYyNiwgMTQyNjMxLCAxNDI2MzcsIDE0MjY0MywgMTQyNjQ4LCAxNDI2NTQsIAorICAgIDE0MjY2MCwgMTQyNjY1LCAxNDI2NzEsIDE0MjY3NywgMTQyNjgyLCAxNDI2ODgsIDE0MjY5NCwgMTQyNjk5LCAxNDI3MDUsIAorICAgIDE0MjcxMSwgMTQyNzE3LCAxNDI3MjMsIDE0MjcyOSwgMTQyNzM1LCAxNDI3NDIsIDE0Mjc0OSwgMTQyNzU2LCAxNDI3NjIsIAorICAgIDE0Mjc2OSwgMTQyNzc2LCAxNDI3ODMsIDE0Mjc4OSwgMTQyNzk2LCAxNDI4MDMsIDE0MjgwOSwgMTQyODE2LCAxNDI4MjMsIAorICAgIDE0MjgyOSwgMTQyODM2LCAxNDI4NDMsIDE0Mjg0OSwgMTQyODU2LCAxNDI4NjMsIDE0Mjg2OSwgMTQyODc2LCAxNDI4ODMsIAorICAgIDE0Mjg5MCwgMTQyODk3LCAxNDI5MDQsIDE0MjkxMCwgMTQyOTE3LCAxNDI5MjQsIDE0MjkzMSwgMTQyOTM3LCAxNDI5NDQsIAorICAgIDE0Mjk1MSwgMTQyOTU4LCAxNDI5NjQsIDE0Mjk3MSwgMTQyOTc4LCAxNDI5ODQsIDE0Mjk5MSwgMTQyOTk4LCAxNDMwMDQsIAorICAgIDE0MzAxMSwgMTQzMDE4LCAxNDMwMjQsIDE0MzAzMSwgMTQzMDM4LCAxNDMwNDQsIDE0MzA1MSwgMTQzMDU4LCAxNDMwNjUsIAorICAgIDE0MzA3MiwgMTQzMDc5LCAxNDMwODQsIDE0MzA5MCwgMTQzMDk2LCAxNDMxMDIsIDE0MzEwNywgMTQzMTEzLCAxNDMxMTksIAorICAgIDE0MzEyNSwgMTQzMTMwLCAxNDMxMzYsIDE0MzE0MiwgMTQzMTQ3LCAxNDMxNTMsIDE0MzE1OSwgMTQzMTY0LCAxNDMxNzAsIAorICAgIDE0MzE3NiwgMTQzMTgxLCAxNDMxODcsIDE0MzE5MywgMTQzMTk4LCAxNDMyMDQsIDE0MzIxMCwgMTQzMjE2LCAxNDMyMjIsIAorICAgIDE0MzIyOCwgMTQzMjMzLCAxNDMyMzksIDE0MzI0NSwgMTQzMjUxLCAxNDMyNTYsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzQsIAorICAgIDE0MzI3OSwgMTQzMjg1LCAxNDMyOTEsIDE0MzI5NiwgMTQzMzAyLCAxNDMzMDgsIDE0MzMxMywgMTQzMzE5LCAxNDMzMjUsIAorICAgIDE0MzMzMCwgMTQzMzM2LCAxNDMzNDIsIDE0MzM0NywgMTQzMzUzLCAxNDMzNTksIDE0MzM2NSwgMTQzMzcxLCAxNDMzNzcsIAorICAgIDE0MzM4MywgMCwgMCwgMTQzMzkwLCAxNDMzOTUsIDE0MzQwMCwgMTQzNDA1LCAxNDM0MTAsIDE0MzQxNSwgMTQzNDIwLCAKKyAgICAxNDM0MjUsIDE0MzQzMCwgMTQzNDM1LCAxNDM0NDAsIDE0MzQ0NSwgMTQzNDUwLCAxNDM0NTUsIDE0MzQ2MCwgMTQzNDY1LCAKKyAgICAxNDM0NzAsIDE0MzQ3NSwgMTQzNDgxLCAxNDM0ODYsIDE0MzQ5MSwgMTQzNDk2LCAxNDM1MDEsIDE0MzUwNiwgMTQzNTExLCAKKyAgICAxNDM1MTYsIDE0MzUyMCwgMTQzNTI1LCAxNDM1MzAsIDE0MzUzNSwgMTQzNTQwLCAxNDM1NDUsIDE0MzU1MCwgMTQzNTU1LCAKKyAgICAxNDM1NjAsIDE0MzU2NSwgMTQzNTcwLCAxNDM1NzUsIDE0MzU4MCwgMTQzNTg1LCAxNDM1OTAsIDE0MzU5NSwgMTQzNjAwLCAKKyAgICAxNDM2MDUsIDE0MzYxMSwgMTQzNjE2LCAxNDM2MjEsIDE0MzYyNiwgMTQzNjMxLCAxNDM2MzYsIDE0MzY0MSwgMTQzNjQ2LCAKKyAgICAxNDM2NTIsIDE0MzY1NywgMTQzNjYyLCAxNDM2NjcsIDE0MzY3MiwgMTQzNjc3LCAxNDM2ODIsIDE0MzY4NywgMTQzNjkyLCAKKyAgICAxNDM2OTcsIDE0MzcwMiwgMTQzNzA3LCAxNDM3MTIsIDE0MzcxNywgMTQzNzIyLCAxNDM3MjcsIDE0MzczMiwgMTQzNzM3LCAKKyAgICAxNDM3NDIsIDE0Mzc0NywgMTQzNzUyLCAxNDM3NTcsIDE0Mzc2MiwgMTQzNzY3LCAxNDM3NzMsIDE0Mzc3OCwgMTQzNzgzLCAKKyAgICAxNDM3ODgsIDE0Mzc5MywgMTQzNzk4LCAxNDM4MDMsIDE0MzgwOCwgMTQzODEyLCAxNDM4MTcsIDE0MzgyMiwgMTQzODI3LCAKKyAgICAxNDM4MzIsIDE0MzgzNywgMTQzODQyLCAxNDM4NDcsIDE0Mzg1MiwgMTQzODU3LCAxNDM4NjIsIDE0Mzg2NywgMTQzODcyLCAKKyAgICAxNDM4NzcsIDE0Mzg4MiwgMTQzODg3LCAxNDM4OTIsIDE0Mzg5NywgMTQzOTAzLCAxNDM5MDgsIDE0MzkxMywgMTQzOTE4LCAKKyAgICAxNDM5MjMsIDE0MzkyOCwgMTQzOTMzLCAxNDM5MzgsIDE0Mzk0NCwgMTQzOTQ5LCAxNDM5NTQsIDE0Mzk1OSwgMTQzOTY0LCAKKyAgICAxNDM5NjksIDE0Mzk3NCwgMTQzOTgwLCAxNDM5ODYsIDE0Mzk5MiwgMTQzOTk4LCAxNDQwMDQsIDE0NDAxMCwgMTQ0MDE2LCAKKyAgICAxNDQwMjIsIDE0NDAyOCwgMTQ0MDM0LCAxNDQwNDAsIDE0NDA0NiwgMTQ0MDUyLCAxNDQwNTgsIDE0NDA2NCwgMTQ0MDcwLCAKKyAgICAxNDQwNzYsIDE0NDA4MywgMTQ0MDg5LCAxNDQwOTUsIDE0NDEwMSwgMTQ0MTA3LCAxNDQxMTMsIDE0NDExOSwgMTQ0MTI1LCAKKyAgICAxNDQxMzAsIDE0NDEzNiwgMTQ0MTQyLCAxNDQxNDgsIDE0NDE1NCwgMTQ0MTYwLCAxNDQxNjYsIDE0NDE3MiwgMTQ0MTc4LCAKKyAgICAxNDQxODQsIDE0NDE5MCwgMTQ0MTk2LCAxNDQyMDIsIDE0NDIwOCwgMTQ0MjE0LCAxNDQyMjAsIDE0NDIyNiwgMTQ0MjMyLCAKKyAgICAxNDQyMzksIDE0NDI0NSwgMTQ0MjUxLCAxNDQyNTcsIDE0NDI2MywgMTQ0MjY5LCAxNDQyNzUsIDE0NDI4MSwgMTQ0Mjg4LCAKKyAgICAxNDQyOTQsIDE0NDMwMCwgMTQ0MzA2LCAxNDQzMTIsIDE0NDMxOCwgMTQ0MzI0LCAxNDQzMzAsIDE0NDMzNiwgMTQ0MzQyLCAKKyAgICAxNDQzNDgsIDE0NDM1NCwgMTQ0MzYwLCAxNDQzNjYsIDE0NDM3MiwgMTQ0Mzc4LCAxNDQzODQsIDE0NDM5MCwgMTQ0Mzk2LCAKKyAgICAxNDQ0MDIsIDE0NDQwOCwgMTQ0NDE0LCAxNDQ0MjAsIDE0NDQyNiwgMTQ0NDMzLCAxNDQ0MzksIDE0NDQ0NSwgMTQ0NDUxLCAKKyAgICAxNDQ0NTcsIDE0NDQ2MywgMTQ0NDY5LCAxNDQ0NzUsIDE0NDQ4MCwgMTQ0NDg2LCAxNDQ0OTIsIDE0NDQ5OCwgMTQ0NTA0LCAKKyAgICAxNDQ1MTAsIDE0NDUxNiwgMTQ0NTIyLCAxNDQ1MjgsIDE0NDUzNCwgMTQ0NTQwLCAxNDQ1NDYsIDE0NDU1MiwgMTQ0NTU4LCAKKyAgICAxNDQ1NjQsIDE0NDU3MCwgMTQ0NTc2LCAxNDQ1ODIsIDE0NDU4OSwgMTQ0NTk1LCAxNDQ2MDEsIDE0NDYwNywgMTQ0NjEzLCAKKyAgICAxNDQ2MTksIDE0NDYyNSwgMTQ0NjMxLCAxNDQ2MzgsIDE0NDY0NCwgMTQ0NjUwLCAxNDQ2NTYsIDE0NDY2MiwgMTQ0NjY4LCAKKyAgICAxNDQ2NzQsIDE0NDY4MSwgMTQ0Njg4LCAxNDQ2OTUsIDE0NDcwMiwgMTQ0NzA5LCAxNDQ3MTYsIDE0NDcyMywgMTQ0NzMwLCAKKyAgICAxNDQ3MzcsIDE0NDc0NCwgMTQ0NzUxLCAxNDQ3NTgsIDE0NDc2NSwgMTQ0NzcyLCAxNDQ3NzksIDE0NDc4NiwgMTQ0NzkzLCAKKyAgICAxNDQ4MDEsIDE0NDgwOCwgMTQ0ODE1LCAxNDQ4MjIsIDE0NDgyOSwgMTQ0ODM2LCAxNDQ4NDMsIDE0NDg1MCwgMTQ0ODU2LCAKKyAgICAxNDQ4NjMsIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODQsIDE0NDg5MSwgMTQ0ODk4LCAxNDQ5MDUsIDE0NDkxMiwgMTQ0OTE5LCAKKyAgICAxNDQ5MjYsIDE0NDkzMywgMTQ0OTQwLCAxNDQ5NDcsIDE0NDk1NCwgMTQ0OTYxLCAxNDQ5NjgsIDE0NDk3NSwgMTQ0OTgzLCAKKyAgICAxNDQ5OTAsIDE0NDk5NywgMTQ1MDA0LCAxNDUwMTEsIDE0NTAxOCwgMTQ1MDI1LCAxNDUwMzIsIDE0NTA0MCwgMTQ1MDQ3LCAKKyAgICAxNDUwNTQsIDE0NTA2MSwgMTQ1MDY4LCAxNDUwNzUsIDE0NTA4MiwgMTQ1MDg3LCAwLCAwLCAxNDUwOTIsIDE0NTA5NywgCisgICAgMTQ1MTAxLCAxNDUxMDUsIDE0NTEwOSwgMTQ1MTEzLCAxNDUxMTcsIDE0NTEyMSwgMTQ1MTI2LCAxNDUxMzAsIDE0NTEzNSwgCisgICAgMTQ1MTQwLCAxNDUxNDQsIDE0NTE0OCwgMTQ1MTUyLCAxNDUxNTYsIDE0NTE2MCwgMTQ1MTY0LCAxNDUxNjksIDE0NTE3MywgCisgICAgMTQ1MTc4LCAxNDUxODMsIDE0NTE4NywgMTQ1MTkxLCAxNDUxOTUsIDE0NTE5OSwgMTQ1MjAzLCAxNDUyMDcsIDE0NTIxMiwgCisgICAgMTQ1MjE2LCAxNDUyMjEsIDE0NTIyNywgMTQ1MjMyLCAxNDUyMzcsIDE0NTI0MiwgMTQ1MjQ3LCAxNDUyNTIsIDE0NTI1NywgCisgICAgMTQ1MjYzLCAxNDUyNjgsIDE0NTI3NCwgMTQ1MjgwLCAxNDUyODUsIDE0NTI5MCwgMTQ1Mjk1LCAxNDUzMDAsIDE0NTMwNSwgCisgICAgMTQ1MzEwLCAxNDUzMTYsIDE0NTMyMSwgMTQ1MzI3LCAxNDUzMzEsIDE0NTMzNiwgMTQ1MzQxLCAxNDUzNDYsIDE0NTM1MSwgCisgICAgMTQ1MzU2LCAxNDUzNjEsIDE0NTM2NywgMTQ1Mzc1LCAxNDUzODIsIDE0NTM4NywgMTQ1MzkyLCAxNDUzOTksIDE0NTQwNSwgCisgICAgMTQ1NDEwLCAxNDU0MTYsIDE0NTQyMiwgMTQ1NDMwLCAxNDU0MzYsIDE0NTQ0MywgMTQ1NDUxLCAxNDU0NTcsIDE0NTQ2NiwgCisgICAgMTQ1NDc1LCAxNDU0ODMsIDE0NTQ5MSwgMTQ1NDk3LCAxNDU1MDQsIDE0NTUxMiwgMTQ1NTIwLCAxNDU1MjYsIDE0NTUzMywgCisgICAgMTQ1NTQyLCAxNDU1NTEsIDE0NTU1OCwgMTQ1NTY5LCAxNDU1NzksIDE0NTU4OSwgMTQ1NTk5LCAxNDU2MDksIDE0NTYxNiwgCisgICAgMTQ1NjIzLCAxNDU2MzAsIDE0NTYzNywgMTQ1NjQ2LCAxNDU2NTUsIDE0NTY2NiwgMTQ1Njc3LCAxNDU2ODYsIDE0NTY5NSwgCisgICAgMTQ1NzA2LCAxNDU3MTUsIDE0NTcyNCwgMTQ1NzM1LCAxNDU3NDQsIDE0NTc1MywgMTQ1NzYxLCAxNDU3NjksIDE0NTc4MCwgCisgICAgMTQ1NzkxLCAxNDU3OTksIDE0NTgwOCwgMTQ1ODE3LCAxNDU4MjQsIDE0NTgzNSwgMTQ1ODQ2LCAxNDU4NTUsIDE0NTg2NCwgCisgICAgMTQ1ODcxLCAxNDU4ODAsIDE0NTg4OSwgMTQ1ODk4LCAxNDU5MDksIDE0NTkxOCwgMTQ1OTI4LCAxNDU5MzcsIDE0NTk0NiwgCisgICAgMTQ1OTU3LCAxNDU5NzAsIDE0NTk4NSwgMTQ1OTk2LCAxNDYwMDksIDE0NjAyMSwgMTQ2MDMwLCAxNDYwNDEsIDE0NjA1MiwgCisgICAgMTQ2MDYxLCAxNDYwNzIsIDE0NjA4NiwgMTQ2MTAxLCAxNDYxMDQsIDE0NjExMywgMTQ2MTE4LCAxNDYxMjQsIDE0NjEzMiwgCisgICAgMTQ2MTM4LCAxNDYxNDQsIDE0NjE1MywgMTQ2MTYwLCAxNDYxNzAsIDE0NjE4MiwgMTQ2MTg5LCAxNDYxOTIsIDE0NjE5OCwgCisgICAgMTQ2MjA1LCAxNDYyMTEsIDE0NjIxNiwgMTQ2MjE5LCAxNDYyMjQsIDE0NjIyNywgMTQ2MjM0LCAxNDYyNDAsIDE0NjI0OCwgCisgICAgMTQ2MjU1LCAxNDYyNjIsIDE0NjI2OCwgMTQ2MjczLCAxNDYyNzYsIDE0NjI3OSwgMTQ2MjgyLCAxNDYyODgsIDE0NjI5NSwgCisgICAgMTQ2MzAxLCAxNDYzMDYsIDE0NjMxMywgMTQ2MzE2LCAxNDYzMjEsIDE0NjMyOCwgMTQ2MzM0LCAxNDYzNDIsIDE0NjM0OSwgCisgICAgMTQ2MzU5LCAxNDYzNjgsIDE0NjM3MSwgMTQ2Mzc3LCAxNDYzODQsIDE0NjM5MSwgMTQ2Mzk4LCAxNDY0MDMsIDE0NjQxMSwgCisgICAgMTQ2NDE5LCAxNDY0MjgsIDE0NjQzNCwgMTQ2NDQzLCAxNDY0NTIsIDE0NjQ2MSwgMTQ2NDY3LCAxNDY0NzYsIDE0NjQ4MywgCisgICAgMTQ2NDkwLCAxNDY0OTcsIDE0NjUwNSwgMTQ2NTExLCAxNDY1MTksIDE0NjUyNSwgMTQ2NTMyLCAxNDY1MzksIDE0NjU0NywgCisgICAgMTQ2NTU4LCAxNDY1NjgsIDE0NjU3NCwgMTQ2NTgxLCAxNDY1ODgsIDE0NjU5NSwgMTQ2NjAxLCAxNDY2MDgsIDE0NjYxNSwgCisgICAgMTQ2NjIwLCAxNDY2MjcsIDE0NjYzNSwgMTQ2NjQ0LCAxNDY2NTAsIDE0NjY2MiwgMTQ2NjczLCAxNDY2NzksIDE0NjY4NywgCisgICAgMTQ2NjkzLCAxNDY3MDAsIDE0NjcwNywgMTQ2NzE0LCAxNDY3MjAsIDE0NjcyNywgMTQ2NzM2LCAxNDY3NDIsIDE0Njc0OCwgCisgICAgMTQ2NzU1LCAxNDY3NjIsIDE0Njc3MCwgMTQ2NzgwLCAxNDY3OTAsIDE0NjgwMCwgMTQ2ODEwLCAxNDY4MTgsIDE0NjgyNiwgCisgICAgMTQ2ODM2LCAxNDY4NDQsIDE0Njg0OSwgMTQ2ODU0LCAxNDY4NTksIDE0Njg2NSwgMTQ2ODcyLCAxNDY4NzksIDE0Njg4NSwgCisgICAgMTQ2ODkxLCAxNDY4OTYsIDE0NjkwMywgMTQ2OTExLCAxNDY5MjEsIDE0NjkyOSwgMTQ2OTM3LCAxNDY5NDcsIDE0Njk1NywgCisgICAgMTQ2OTY1LCAxNDY5NzUsIDE0Njk4NSwgMTQ2OTk3LCAxNDcwMDksIDE0NzAyMSwgMTQ3MDMxLCAxNDcwMzcsIDE0NzA0MywgCisgICAgMTQ3MDUwLCAxNDcwNTksIDE0NzA2OCwgMTQ3MDc3LCAxNDcwODYsIDE0NzA5NiwgMTQ3MTA1LCAxNDcxMTQsIDE0NzEyMywgCisgICAgMTQ3MTI4LCAxNDcxMzQsIDE0NzE0MywgMTQ3MTUzLCAxNDcxNjIsIDE0NzE2OCwgMTQ3MTc0LCAxNDcxODEsIDE0NzE4OCwgCisgICAgMTQ3MTk1LCAxNDcyMDEsIDE0NzIwOCwgMTQ3MjE1LCAxNDcyMjIsIDE0NzIyOCwgMTQ3MjMyLCAxNDcyMzcsIDE0NzI0NCwgCisgICAgMTQ3MjUxLCAxNDcyNTgsIDE0NzI2MywgMTQ3MjcxLCAxNDcyNzksIDE0NzI4OCwgMTQ3Mjk2LCAxNDczMDMsIDE0NzMxMSwgCisgICAgMTQ3MzIwLCAxNDczMzAsIDE0NzMzMywgMTQ3MzM3LCAxNDczNDIsIDE0NzM0NywgMTQ3MzUyLCAxNDczNTcsIDE0NzM2MiwgCisgICAgMTQ3MzY3LCAxNDczNzIsIDE0NzM3NywgMTQ3MzgyLCAxNDczODcsIDE0NzM5MiwgMTQ3Mzk3LCAxNDc0MDIsIDE0NzQwNywgCisgICAgMTQ3NDEyLCAxNDc0MTcsIDE0NzQyMiwgMTQ3NDI5LCAxNDc0MzUsIDE0NzQ0MiwgMTQ3NDQ4LCAxNDc0NTMsIDE0NzQ2MCwgCisgICAgMTQ3NDY2LCAxNDc0NzMsIDE0NzQ3OSwgMTQ3NDg0LCAxNDc0OTEsIDE0NzQ5OCwgMTQ3NTA1LCAxNDc1MTEsIDE0NzUxNywgCisgICAgMTQ3NTI2LCAxNDc1MzUsIDE0NzU0NiwgMTQ3NTUzLCAxNDc1NjAsIDE0NzU2OSwgMTQ3NTc4LCAxNDc1ODcsIDE0NzU5NiwgCisgICAgMTQ3NjA1LCAxNDc2MTEsIDE0NzYxOSwgMTQ3NjI1LCAxNDc2MzUsIDE0NzY0MCwgMTQ3NjQ5LCAxNDc2NTgsIDE0NzY2NSwgCisgICAgMTQ3Njc2LCAxNDc2ODMsIDE0NzY5MCwgMTQ3Njk3LCAxNDc3MDQsIDE0NzcxMSwgMTQ3NzE4LCAxNDc3MjUsIDE0NzczMiwgCisgICAgMTQ3NzM5LCAxNDc3NDYsIDE0Nzc1MiwgMTQ3NzU4LCAxNDc3NjQsIDE0Nzc3MSwgMTQ3Nzc4LCAxNDc3ODUsIDE0Nzc5MiwgCisgICAgMTQ3Nzk5LCAxNDc4MDYsIDE0NzgxMywgMTQ3ODIwLCAxNDc4MjcsIDE0NzgzNCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1MywgCisgICAgMTQ3ODYyLCAxNDc4NzEsIDE0Nzg4MCwgMTQ3ODg3LCAxNDc4OTQsIDE0NzkwMSwgMTQ3OTA4LCAxNDc5MTUsIDE0NzkyMiwgCisgICAgMTQ3OTI5LCAxNDc5MzYsIDE0Nzk0NSwgMTQ3OTU0LCAxNDc5NjMsIDE0Nzk3MiwgMTQ3OTgxLCAxNDc5OTAsIDE0Nzk5OSwgCisgICAgMTQ4MDA4LCAxNDgwMTcsIDE0ODAyNiwgMTQ4MDM1LCAxNDgwNDQsIDE0ODA1MywgMTQ4MDU5LCAxNDgwNjcsIDE0ODA3MywgCisgICAgMTQ4MDgzLCAxNDgwODgsIDE0ODA5NywgMTQ4MTA2LCAxNDgxMTUsIDE0ODEyNiwgMTQ4MTMxLCAxNDgxMzgsIDE0ODE0NSwgCisgICAgMTQ4MTUyLCAxNDgxNTcsIDE0ODE2MywgMTQ4MTY5LCAxNDgxNzUsIDE0ODE4MiwgMTQ4MTg5LCAxNDgxOTYsIDE0ODIwMywgCisgICAgMTQ4MjEwLCAxNDgyMTcsIDE0ODIyNCwgMTQ4MjMxLCAxNDgyMzgsIDE0ODI0NSwgMTQ4MjUyLCAxNDgyNTksIDE0ODI2NCwgCisgICAgMTQ4MjczLCAxNDgyODIsIDE0ODI5MSwgMTQ4MzAwLCAxNDgzMDksIDE0ODMxOCwgMTQ4MzI3LCAxNDgzMzYsIDE0ODM0NywgCisgICAgMTQ4MzU4LCAxNDgzNjUsIDE0ODM3MiwgMTQ4Mzc5LCAxNDgzODYsIDE0ODM5MywgMTQ4NDAwLCAxNDg0MDgsIDE0ODQxOCwgCisgICAgMTQ4NDI4LCAxNDg0MzgsIDE0ODQ0OSwgMTQ4NDYwLCAxNDg0NzEsIDE0ODQ4MCwgMTQ4NDg5LCAxNDg0OTgsIDE0ODUwMywgCisgICAgMTQ4NTA4LCAxNDg1MTMsIDE0ODUxOCwgMTQ4NTI5LCAxNDg1NDAsIDE0ODU1MSwgMTQ4NTYyLCAxNDg1NzMsIDE0ODU4MywgCisgICAgMTQ4NTk0LCAxNDg2MDMsIDE0ODYxMiwgMTQ4NjIxLCAxNDg2MzAsIDE0ODYzOSwgMTQ4NjQ3LCAxNDg2NTYsIDE0ODY2NywgCisgICAgMTQ4Njc4LCAxNDg2ODksIDE0ODcwMCwgMTQ4NzExLCAxNDg3MjMsIDE0ODczNiwgMTQ4NzQ4LCAxNDg3NjEsIDE0ODc3MywgCisgICAgMTQ4Nzg2LCAxNDg3OTgsIDE0ODgxMSwgMTQ4ODIyLCAxNDg4MzMsIDE0ODg0MiwgMTQ4ODUwLCAxNDg4NTksIDE0ODg3MCwgCisgICAgMTQ4ODgxLCAxNDg4OTMsIDE0ODkwNiwgMTQ4OTIwLCAxNDg5MzUsIDE0ODk0NywgMTQ4OTYwLCAxNDg5NzIsIDE0ODk4NSwgCisgICAgMTQ4OTk2LCAxNDkwMDcsIDE0OTAxNiwgMTQ5MDI0LCAxNDkwMzMsIDE0OTA0MCwgMTQ5MDQ3LCAxNDkwNTQsIDE0OTA2MSwgCisgICAgMTQ5MDY4LCAxNDkwNzUsIDE0OTA4MiwgMTQ5MDg5LCAxNDkwOTYsIDE0OTEwMywgMTQ5MTA4LCAxNDkxMTMsIDE0OTExOCwgCisgICAgMTQ5MTI1LCAxNDkxMzUsIDE0OTE0NiwgMTQ5MTU2LCAxNDkxNjcsIDE0OTE4MSwgMTQ5MTk2LCAxNDkyMTEsIDE0OTIyNSwgCisgICAgMTQ5MjQwLCAxNDkyNTUsIDE0OTI2NiwgMTQ5Mjc3LCAxNDkyOTAsIDE0OTMwMywgMTQ5MzEyLCAxNDkzMjEsIDE0OTMzNCwgCisgICAgMTQ5MzQ3LCAxNDkzNTQsIDE0OTM2MSwgMTQ5MzY2LCAxNDkzNzEsIDE0OTM3NiwgMTQ5MzgxLCAxNDkzODYsIDE0OTM5MywgCisgICAgMTQ5NDAyLCAxNDk0MDcsIDE0OTQxMCwgMTQ5NDE1LCAxNDk0MjIsIDE0OTQyOSwgMTQ5NDM2LCAxNDk0NDMsIDE0OTQ1MCwgCisgICAgMTQ5NDU3LCAxNDk0NzAsIDE0OTQ4NCwgMTQ5NDk5LCAxNDk1MDYsIDE0OTUxMywgMTQ5NTIwLCAxNDk1MjksIDE0OTUzNywgCisgICAgMTQ5NTQ1LCAxNDk1NTQsIDE0OTU1OSwgMTQ5NTY0LCAxNDk1NjksIDE0OTU3NCwgMTQ5NTc5LCAxNDk1ODQsIDE0OTU5MSwgCisgICAgMTQ5NTk4LCAxNDk2MDQsIDE0OTYxMSwgMTQ5NjE3LCAxNDk2MjQsIDE0OTYyOSwgMTQ5NjM0LCAxNDk2MzksIDE0OTY0NCwgCisgICAgMTQ5NjQ5LCAxNDk2NTYsIDE0OTY2MywgMTQ5NjY4LCAxNDk2NzUsIDE0OTY4MiwgMTQ5Njg3LCAxNDk2OTIsIDE0OTY5NywgCisgICAgMTQ5NzAyLCAxNDk3MDcsIDE0OTcxMiwgMTQ5NzE5LCAxNDk3MjYsIDE0OTczMywgMTQ5NzM2LCAxNDk3NDEsIDE0OTc0NiwgCisgICAgMTQ5NzUxLCAxNDk3NTYsIDE0OTc2MywgMTQ5NzcwLCAxNDk3NzgsIDE0OTc4NiwgMTQ5NzkxLCAxNDk3OTYsIDE0OTgwMywgCisgICAgMTQ5ODEwLCAxNDk4MTcsIDE0OTgyMiwgMTQ5ODI5LCAxNDk4MzYsIDE0OTg0MSwgMTQ5ODQ4LCAxNDk4NTUsIDE0OTg2MSwgCisgICAgMTQ5ODY3LCAxNDk4NzMsIDE0OTg3OSwgMTQ5ODg3LCAxNDk4OTUsIDE0OTkwMSwgMTQ5OTA5LCAxNDk5MTcsIDE0OTkyMiwgCisgICAgMTQ5OTI5LCAxNDk5MzYsIDE0OTk0MSwgMTQ5OTQ4LCAxNDk5NTUsIDE0OTk2MiwgMTQ5OTcwLCAxNDk5NzgsIDE0OTk4MywgCisgICAgMTQ5OTkwLCAxNDk5OTcsIDE1MDAwNiwgMTUwMDEzLCAxNTAwMjIsIDE1MDAzMywgMTUwMDQyLCAxNTAwNTEsIDE1MDA2MCwgCisgICAgMTUwMDY5LCAxNTAwNzIsIDE1MDA3NywgMTUwMDg0LCAxNTAwOTMsIDE1MDEwMCwgMTUwMTA5LCAxNTAxMTYsIDE1MDEyMSwgCisgICAgMTUwMTI2LCAxNTAxMjksIDE1MDEzMiwgMTUwMTM1LCAxNTAxNDIsIDE1MDE0OSwgMTUwMTU4LCAxNTAxNjcsIDE1MDE3NiwgCisgICAgMTUwMTgzLCAxNTAxOTAsIDE1MDE5NSwgMTUwMjA4LCAxNTAyMTMsIDE1MDIxOCwgMTUwMjIzLCAxNTAyMjgsIDE1MDIzMywgCisgICAgMTUwMjM4LCAxNTAyNDMsIDE1MDI0OCwgMTUwMjUxLCAxNTAyNTYsIDE1MDI2MSwgMTUwMjY2LCAxNTAyNzEsIDE1MDI3NiwgCisgICAgMTUwMjgzLCAxNTAyODgsIDE1MDI5NSwgMTUwMjk4LCAxNTAzMDMsIDE1MDMwNiwgMTUwMzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAzMTIsIDE1MDMxNywgMTUwMzIyLCAxNTAzMjcsIDE1MDMzMiwgMCwgCisgICAgMTUwMzM3LCAxNTAzNDIsIDE1MDM0NywgMTUwMzUyLCAxNTAzNTcsIDE1MDM2MiwgMTUwMzY3LCAxNTAzNzIsIDE1MDM3NywgCisgICAgMTUwMzgyLCAxNTAzODcsIDE1MDM5MiwgMTUwMzk3LCAxNTA0MDIsIDE1MDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUwNDEyLCAxNTA0MTcsIDE1MDQyMiwgMTUwNDI3LCAxNTA0MzIsIDE1MDQzNywgMTUwNDQyLCAwLCAxNTA0NDcsIAorICAgIDE1MDQ1MiwgMTUwNDU3LCAxNTA0NjMsIDE1MDQ2NywgMTUwNDcyLCAxNTA0NzcsIDE1MDQ4MiwgMTUwNDg3LCAxNTA0OTIsIAorICAgIDE1MDQ5NywgMTUwNTAyLCAxNTA1MDcsIDE1MDUxMiwgMTUwNTE3LCAxNTA1MjIsIDE1MDUyNywgMCwgMCwgMTUwNTMyLCAKKyAgICAxNTA1MzcsIDE1MDU0MiwgMTUwNTQ3LCAxNTA1NTIsIDE1MDU1NywgMTUwNTYyLCAwLCAxNTA1NjcsIDE1MDU3MiwgMCwgCisgICAgMTUwNTc4LCAxNTA1ODMsIDE1MDU5MSwgMTUwNTk4LCAxNTA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTA5NSwgMTM1MDk5LCAxMzUxMDQsIDEzNTEwOSwgMTM1MTE0LCAxMzUxMTgsIAotICAgIDEzNTEyMywgMTM1MTI4LCAxMzUxMzMsIDEzNTEzNywgMTM1MTQyLCAxMzUxNDcsIDEzNTE1MSwgMTM1MTU2LCAxMzUxNjEsIAotICAgIDEzNTE2NSwgMTM1MTcwLCAxMzUxNzUsIDEzNTE3OSwgMTM1MTgzLCAxMzUxODgsIDEzNTE5MiwgMTM1MTk3LCAxMzUyMDIsIAotICAgIDEzNTIwNywgMTM1MjEyLCAxMzUyMTcsIDEzNTIyMSwgMTM1MjI2LCAxMzUyMzEsIDEzNTIzNiwgMTM1MjQwLCAxMzUyNDUsIAotICAgIDEzNTI1MCwgMTM1MjU1LCAxMzUyNTksIDEzNTI2NCwgMTM1MjY5LCAxMzUyNzMsIDEzNTI3OCwgMTM1MjgzLCAxMzUyODcsIAotICAgIDEzNTI5MiwgMTM1Mjk3LCAxMzUzMDEsIDEzNTMwNSwgMTM1MzEwLCAxMzUzMTQsIDEzNTMxOSwgMTM1MzI0LCAxMzUzMjksIAotICAgIDEzNTMzNCwgMTM1MzM5LCAxMzUzNDMsIDEzNTM0OCwgMTM1MzUzLCAxMzUzNTgsIDEzNTM2MiwgMTM1MzY3LCAxMzUzNzIsIAotICAgIDEzNTM3NywgMTM1MzgxLCAxMzUzODYsIDEzNTM5MSwgMTM1Mzk1LCAxMzU0MDAsIDEzNTQwNSwgMTM1NDA5LCAxMzU0MTQsIAotICAgIDEzNTQxOSwgMTM1NDIzLCAxMzU0MjcsIDEzNTQzMiwgMTM1NDM2LCAxMzU0NDEsIDEzNTQ0NiwgMTM1NDUxLCAxMzU0NTYsIAotICAgIDEzNTQ2MSwgMTM1NDY1LCAxMzU0NzAsIDEzNTQ3NSwgMTM1NDgwLCAxMzU0ODQsIDEzNTQ4OSwgMCwgMTM1NDk0LCAKLSAgICAxMzU0OTgsIDEzNTUwMywgMTM1NTA4LCAxMzU1MTIsIDEzNTUxNywgMTM1NTIyLCAxMzU1MjYsIDEzNTUzMSwgMTM1NTM2LCAKLSAgICAxMzU1NDAsIDEzNTU0NCwgMTM1NTQ5LCAxMzU1NTMsIDEzNTU1OCwgMTM1NTYzLCAxMzU1NjgsIDEzNTU3MywgMTM1NTc4LCAKLSAgICAxMzU1ODMsIDEzNTU4OSwgMTM1NTk1LCAxMzU2MDEsIDEzNTYwNiwgMTM1NjEyLCAxMzU2MTgsIDEzNTYyNCwgMTM1NjI5LCAKLSAgICAxMzU2MzUsIDEzNTY0MSwgMTM1NjQ2LCAxMzU2NTIsIDEzNTY1OCwgMTM1NjYzLCAxMzU2NjksIDEzNTY3NSwgMTM1NjgwLCAKLSAgICAxMzU2ODUsIDEzNTY5MSwgMTM1Njk2LCAxMzU3MDIsIDEzNTcwOCwgMTM1NzE0LCAxMzU3MjAsIDEzNTcyNiwgMTM1NzMxLCAKLSAgICAxMzU3MzcsIDEzNTc0MywgMTM1NzQ5LCAxMzU3NTQsIDEzNTc2MCwgMTM1NzY2LCAxMzU3NzIsIDEzNTc3NywgMTM1NzgzLCAKLSAgICAxMzU3ODksIDEzNTc5NCwgMTM1ODAwLCAxMzU4MDYsIDEzNTgxMSwgMTM1ODE3LCAxMzU4MjMsIDEzNTgyOCwgMTM1ODMzLCAKLSAgICAxMzU4MzksIDEzNTg0NCwgMTM1ODUwLCAxMzU4NTYsIDEzNTg2MiwgMTM1ODY4LCAxMzU4NzQsIDAsIDEzNTg3OCwgCi0gICAgMTM1ODgzLCAwLCAwLCAxMzU4ODgsIDAsIDAsIDEzNTg5MywgMTM1ODk4LCAwLCAwLCAxMzU5MDMsIDEzNTkwOCwgMTM1OTEyLCAKLSAgICAxMzU5MTcsIDAsIDEzNTkyMiwgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNSwgMTM1OTQwLCAxMzU5NDUsIDEzNTk1MCwgCi0gICAgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NCwgMTM1OTY5LCAxMzU5NzQsIDAsIDEzNTk3OSwgMCwgMTM1OTg0LCAxMzU5ODksIAotICAgIDEzNTk5MywgMTM1OTk4LCAxMzYwMDMsIDEzNjAwNywgMTM2MDEyLCAwLCAxMzYwMTcsIDEzNjAyMiwgMTM2MDI3LCAKLSAgICAxMzYwMzEsIDEzNjAzNSwgMTM2MDQwLCAxMzYwNDQsIDEzNjA0OSwgMTM2MDU0LCAxMzYwNTksIDEzNjA2NCwgMTM2MDY5LCAKLSAgICAxMzYwNzQsIDEzNjA4MCwgMTM2MDg2LCAxMzYwOTIsIDEzNjA5NywgMTM2MTAzLCAxMzYxMDksIDEzNjExNSwgMTM2MTIwLCAKLSAgICAxMzYxMjYsIDEzNjEzMiwgMTM2MTM3LCAxMzYxNDMsIDEzNjE0OSwgMTM2MTU0LCAxMzYxNjAsIDEzNjE2NiwgMTM2MTcxLCAKLSAgICAxMzYxNzYsIDEzNjE4MiwgMTM2MTg3LCAxMzYxOTMsIDEzNjE5OSwgMTM2MjA1LCAxMzYyMTEsIDEzNjIxNywgMTM2MjIyLCAKLSAgICAxMzYyMjgsIDEzNjIzNCwgMTM2MjQwLCAxMzYyNDUsIDEzNjI1MSwgMTM2MjU3LCAxMzYyNjMsIDEzNjI2OCwgMTM2Mjc0LCAKLSAgICAxMzYyODAsIDEzNjI4NSwgMTM2MjkxLCAxMzYyOTcsIDEzNjMwMiwgMTM2MzA4LCAxMzYzMTQsIDEzNjMxOSwgMTM2MzI0LCAKLSAgICAxMzYzMzAsIDEzNjMzNSwgMTM2MzQxLCAxMzYzNDcsIDEzNjM1MywgMTM2MzU5LCAxMzYzNjUsIDEzNjM2OSwgMCwgCi0gICAgMTM2Mzc0LCAxMzYzNzksIDEzNjM4MywgMTM2Mzg4LCAwLCAwLCAxMzYzOTMsIDEzNjM5OCwgMTM2NDAzLCAxMzY0MDcsIAotICAgIDEzNjQxMiwgMTM2NDE3LCAxMzY0MjEsIDEzNjQyNiwgMCwgMTM2NDMxLCAxMzY0MzUsIDEzNjQ0MCwgMTM2NDQ0LCAKLSAgICAxMzY0NDksIDEzNjQ1NCwgMTM2NDU5LCAwLCAxMzY0NjQsIDEzNjQ2OCwgMTM2NDczLCAxMzY0NzgsIDEzNjQ4MywgCi0gICAgMTM2NDg3LCAxMzY0OTIsIDEzNjQ5NywgMTM2NTAyLCAxMzY1MDYsIDEzNjUxMSwgMTM2NTE2LCAxMzY1MjAsIDEzNjUyNSwgCi0gICAgMTM2NTMwLCAxMzY1MzQsIDEzNjUzOSwgMTM2NTQ0LCAxMzY1NDgsIDEzNjU1MiwgMTM2NTU3LCAxMzY1NjEsIDEzNjU2NiwgCi0gICAgMTM2NTcxLCAxMzY1NzYsIDEzNjU4MSwgMTM2NTg2LCAxMzY1OTAsIDAsIDEzNjU5NSwgMTM2NjAwLCAxMzY2MDQsIAotICAgIDEzNjYwOSwgMCwgMTM2NjE0LCAxMzY2MTgsIDEzNjYyMywgMTM2NjI4LCAxMzY2MzIsIDAsIDEzNjYzNywgMCwgMCwgMCwgCi0gICAgMTM2NjQxLCAxMzY2NDUsIDEzNjY1MCwgMTM2NjU0LCAxMzY2NTksIDEzNjY2NCwgMTM2NjY5LCAwLCAxMzY2NzQsIAotICAgIDEzNjY3OCwgMTM2NjgzLCAxMzY2ODgsIDEzNjY5MywgMTM2Njk3LCAxMzY3MDIsIDEzNjcwNywgMTM2NzEyLCAxMzY3MTYsIAotICAgIDEzNjcyMSwgMTM2NzI2LCAxMzY3MzAsIDEzNjczNSwgMTM2NzQwLCAxMzY3NDQsIDEzNjc0OSwgMTM2NzU0LCAxMzY3NTgsIAotICAgIDEzNjc2MiwgMTM2NzY3LCAxMzY3NzEsIDEzNjc3NiwgMTM2NzgxLCAxMzY3ODYsIDEzNjc5MSwgMTM2Nzk2LCAxMzY4MDEsIAotICAgIDEzNjgwNywgMTM2ODEzLCAxMzY4MTksIDEzNjgyNCwgMTM2ODMwLCAxMzY4MzYsIDEzNjg0MiwgMTM2ODQ3LCAxMzY4NTMsIAotICAgIDEzNjg1OSwgMTM2ODY0LCAxMzY4NzAsIDEzNjg3NiwgMTM2ODgxLCAxMzY4ODcsIDEzNjg5MywgMTM2ODk4LCAxMzY5MDMsIAotICAgIDEzNjkwOSwgMTM2OTE0LCAxMzY5MjAsIDEzNjkyNiwgMTM2OTMyLCAxMzY5MzgsIDEzNjk0NCwgMTM2OTQ5LCAxMzY5NTUsIAotICAgIDEzNjk2MSwgMTM2OTY3LCAxMzY5NzIsIDEzNjk3OCwgMTM2OTg0LCAxMzY5OTAsIDEzNjk5NSwgMTM3MDAxLCAxMzcwMDcsIAotICAgIDEzNzAxMiwgMTM3MDE4LCAxMzcwMjQsIDEzNzAyOSwgMTM3MDM1LCAxMzcwNDEsIDEzNzA0NiwgMTM3MDUxLCAxMzcwNTcsIAotICAgIDEzNzA2MiwgMTM3MDY4LCAxMzcwNzQsIDEzNzA4MCwgMTM3MDg2LCAxMzcwOTIsIDEzNzA5NiwgMTM3MTAxLCAxMzcxMDYsIAotICAgIDEzNzExMSwgMTM3MTE1LCAxMzcxMjAsIDEzNzEyNSwgMTM3MTMwLCAxMzcxMzQsIDEzNzEzOSwgMTM3MTQ0LCAxMzcxNDgsIAotICAgIDEzNzE1MywgMTM3MTU4LCAxMzcxNjIsIDEzNzE2NywgMTM3MTcyLCAxMzcxNzYsIDEzNzE4MCwgMTM3MTg1LCAxMzcxODksIAotICAgIDEzNzE5NCwgMTM3MTk5LCAxMzcyMDQsIDEzNzIwOSwgMTM3MjE0LCAxMzcyMTgsIDEzNzIyMywgMTM3MjI4LCAxMzcyMzMsIAotICAgIDEzNzIzNywgMTM3MjQyLCAxMzcyNDcsIDEzNzI1MiwgMTM3MjU2LCAxMzcyNjEsIDEzNzI2NiwgMTM3MjcwLCAxMzcyNzUsIAotICAgIDEzNzI4MCwgMTM3Mjg0LCAxMzcyODksIDEzNzI5NCwgMTM3Mjk4LCAxMzczMDIsIDEzNzMwNywgMTM3MzExLCAxMzczMTYsIAotICAgIDEzNzMyMSwgMTM3MzI2LCAxMzczMzEsIDEzNzMzNiwgMTM3MzQxLCAxMzczNDcsIDEzNzM1MywgMTM3MzU5LCAxMzczNjQsIAotICAgIDEzNzM3MCwgMTM3Mzc2LCAxMzczODIsIDEzNzM4NywgMTM3MzkzLCAxMzczOTksIDEzNzQwNCwgMTM3NDEwLCAxMzc0MTYsIAotICAgIDEzNzQyMSwgMTM3NDI3LCAxMzc0MzMsIDEzNzQzOCwgMTM3NDQzLCAxMzc0NDksIDEzNzQ1NCwgMTM3NDYwLCAxMzc0NjYsIAotICAgIDEzNzQ3MiwgMTM3NDc4LCAxMzc0ODQsIDEzNzQ4OSwgMTM3NDk1LCAxMzc1MDEsIDEzNzUwNywgMTM3NTEyLCAxMzc1MTgsIAotICAgIDEzNzUyNCwgMTM3NTMwLCAxMzc1MzUsIDEzNzU0MSwgMTM3NTQ3LCAxMzc1NTIsIDEzNzU1OCwgMTM3NTY0LCAxMzc1NjksIAotICAgIDEzNzU3NSwgMTM3NTgxLCAxMzc1ODYsIDEzNzU5MSwgMTM3NTk3LCAxMzc2MDIsIDEzNzYwOCwgMTM3NjE0LCAxMzc2MjAsIAotICAgIDEzNzYyNiwgMTM3NjMyLCAxMzc2MzcsIDEzNzY0MywgMTM3NjQ5LCAxMzc2NTUsIDEzNzY2MCwgMTM3NjY2LCAxMzc2NzIsIAotICAgIDEzNzY3OCwgMTM3NjgzLCAxMzc2ODksIDEzNzY5NSwgMTM3NzAwLCAxMzc3MDYsIDEzNzcxMiwgMTM3NzE3LCAxMzc3MjMsIAotICAgIDEzNzcyOSwgMTM3NzM0LCAxMzc3MzksIDEzNzc0NSwgMTM3NzUwLCAxMzc3NTYsIDEzNzc2MiwgMTM3NzY4LCAxMzc3NzQsIAotICAgIDEzNzc4MCwgMTM3Nzg1LCAxMzc3OTEsIDEzNzc5NywgMTM3ODAzLCAxMzc4MDgsIDEzNzgxNCwgMTM3ODIwLCAxMzc4MjYsIAotICAgIDEzNzgzMSwgMTM3ODM3LCAxMzc4NDMsIDEzNzg0OCwgMTM3ODU0LCAxMzc4NjAsIDEzNzg2NSwgMTM3ODcxLCAxMzc4NzcsIAotICAgIDEzNzg4MiwgMTM3ODg3LCAxMzc4OTMsIDEzNzg5OCwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIAotICAgIDEzNzkzNCwgMTM3OTQxLCAxMzc5NDgsIDEzNzk1NSwgMTM3OTYxLCAxMzc5NjgsIDEzNzk3NSwgMTM3OTgyLCAxMzc5ODgsIAotICAgIDEzNzk5NSwgMTM4MDAyLCAxMzgwMDgsIDEzODAxNSwgMTM4MDIyLCAxMzgwMjgsIDEzODAzNSwgMTM4MDQyLCAxMzgwNDgsIAotICAgIDEzODA1NCwgMTM4MDYxLCAxMzgwNjcsIDEzODA3NCwgMTM4MDgxLCAxMzgwODgsIDEzODA5NSwgMTM4MTAyLCAxMzgxMDgsIAotICAgIDEzODExNSwgMTM4MTIyLCAxMzgxMjksIDEzODEzNSwgMTM4MTQyLCAxMzgxNDksIDEzODE1NiwgMTM4MTYyLCAxMzgxNjksIAotICAgIDEzODE3NiwgMTM4MTgyLCAxMzgxODksIDEzODE5NiwgMTM4MjAyLCAxMzgyMDksIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIAotICAgIDEzODIzNSwgMTM4MjQxLCAxMzgyNDgsIDEzODI1NSwgMTM4MjYyLCAxMzgyNjksIDEzODI3NiwgMTM4MjgxLCAxMzgyODcsIAotICAgIDEzODI5MywgMTM4Mjk5LCAxMzgzMDQsIDEzODMxMCwgMTM4MzE2LCAxMzgzMjIsIDEzODMyNywgMTM4MzMzLCAxMzgzMzksIAotICAgIDEzODM0NCwgMTM4MzUwLCAxMzgzNTYsIDEzODM2MSwgMTM4MzY3LCAxMzgzNzMsIDEzODM3OCwgMTM4MzgzLCAxMzgzODksIAotICAgIDEzODM5NCwgMTM4NDAwLCAxMzg0MDYsIDEzODQxMiwgMTM4NDE4LCAxMzg0MjQsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAotICAgIDEzODQ0NywgMTM4NDUyLCAxMzg0NTgsIDEzODQ2NCwgMTM4NDcwLCAxMzg0NzUsIDEzODQ4MSwgMTM4NDg3LCAxMzg0OTIsIAotICAgIDEzODQ5OCwgMTM4NTA0LCAxMzg1MDksIDEzODUxNSwgMTM4NTIxLCAxMzg1MjYsIDEzODUzMSwgMTM4NTM3LCAxMzg1NDIsIAotICAgIDEzODU0OCwgMTM4NTU0LCAxMzg1NjAsIDEzODU2NiwgMTM4NTcyLCAxMzg1NzgsIDAsIDAsIDEzODU4NSwgMTM4NTkwLCAKLSAgICAxMzg1OTUsIDEzODYwMCwgMTM4NjA1LCAxMzg2MTAsIDEzODYxNSwgMTM4NjIwLCAxMzg2MjUsIDEzODYzMCwgMTM4NjM1LCAKLSAgICAxMzg2NDAsIDEzODY0NSwgMTM4NjUwLCAxMzg2NTUsIDEzODY2MCwgMTM4NjY1LCAxMzg2NzAsIDEzODY3NiwgMTM4NjgxLCAKLSAgICAxMzg2ODYsIDEzODY5MSwgMTM4Njk2LCAxMzg3MDEsIDEzODcwNiwgMTM4NzExLCAxMzg3MTUsIDEzODcyMCwgMTM4NzI1LCAKLSAgICAxMzg3MzAsIDEzODczNSwgMTM4NzQwLCAxMzg3NDUsIDEzODc1MCwgMTM4NzU1LCAxMzg3NjAsIDEzODc2NSwgMTM4NzcwLCAKLSAgICAxMzg3NzUsIDEzODc4MCwgMTM4Nzg1LCAxMzg3OTAsIDEzODc5NSwgMTM4ODAwLCAxMzg4MDYsIDEzODgxMSwgMTM4ODE2LCAKLSAgICAxMzg4MjEsIDEzODgyNiwgMTM4ODMxLCAxMzg4MzYsIDEzODg0MSwgMTM4ODQ3LCAxMzg4NTIsIDEzODg1NywgMTM4ODYyLCAKLSAgICAxMzg4NjcsIDEzODg3MiwgMTM4ODc3LCAxMzg4ODIsIDEzODg4NywgMTM4ODkyLCAxMzg4OTcsIDEzODkwMiwgMTM4OTA3LCAKLSAgICAxMzg5MTIsIDEzODkxNywgMTM4OTIyLCAxMzg5MjcsIDEzODkzMiwgMTM4OTM3LCAxMzg5NDIsIDEzODk0NywgMTM4OTUyLCAKLSAgICAxMzg5NTcsIDEzODk2MiwgMTM4OTY4LCAxMzg5NzMsIDEzODk3OCwgMTM4OTgzLCAxMzg5ODgsIDEzODk5MywgMTM4OTk4LCAKLSAgICAxMzkwMDMsIDEzOTAwNywgMTM5MDEyLCAxMzkwMTcsIDEzOTAyMiwgMTM5MDI3LCAxMzkwMzIsIDEzOTAzNywgMTM5MDQyLCAKLSAgICAxMzkwNDcsIDEzOTA1MiwgMTM5MDU3LCAxMzkwNjIsIDEzOTA2NywgMTM5MDcyLCAxMzkwNzcsIDEzOTA4MiwgMTM5MDg3LCAKLSAgICAxMzkwOTIsIDEzOTA5OCwgMTM5MTAzLCAxMzkxMDgsIDEzOTExMywgMTM5MTE4LCAxMzkxMjMsIDEzOTEyOCwgMTM5MTMzLCAKLSAgICAxMzkxMzksIDEzOTE0NCwgMTM5MTQ5LCAxMzkxNTQsIDEzOTE1OSwgMTM5MTY0LCAxMzkxNjksIDEzOTE3NSwgMTM5MTgxLCAKLSAgICAxMzkxODcsIDEzOTE5MywgMTM5MTk5LCAxMzkyMDUsIDEzOTIxMSwgMTM5MjE3LCAxMzkyMjMsIDEzOTIyOSwgMTM5MjM1LCAKLSAgICAxMzkyNDEsIDEzOTI0NywgMTM5MjUzLCAxMzkyNTksIDEzOTI2NSwgMTM5MjcxLCAxMzkyNzgsIDEzOTI4NCwgMTM5MjkwLCAKLSAgICAxMzkyOTYsIDEzOTMwMiwgMTM5MzA4LCAxMzkzMTQsIDEzOTMyMCwgMTM5MzI1LCAxMzkzMzEsIDEzOTMzNywgMTM5MzQzLCAKLSAgICAxMzkzNDksIDEzOTM1NSwgMTM5MzYxLCAxMzkzNjcsIDEzOTM3MywgMTM5Mzc5LCAxMzkzODUsIDEzOTM5MSwgMTM5Mzk3LCAKLSAgICAxMzk0MDMsIDEzOTQwOSwgMTM5NDE1LCAxMzk0MjEsIDEzOTQyNywgMTM5NDM0LCAxMzk0NDAsIDEzOTQ0NiwgMTM5NDUyLCAKLSAgICAxMzk0NTgsIDEzOTQ2NCwgMTM5NDcwLCAxMzk0NzYsIDEzOTQ4MywgMTM5NDg5LCAxMzk0OTUsIDEzOTUwMSwgMTM5NTA3LCAKLSAgICAxMzk1MTMsIDEzOTUxOSwgMTM5NTI1LCAxMzk1MzEsIDEzOTUzNywgMTM5NTQzLCAxMzk1NDksIDEzOTU1NSwgMTM5NTYxLCAKLSAgICAxMzk1NjcsIDEzOTU3MywgMTM5NTc5LCAxMzk1ODUsIDEzOTU5MSwgMTM5NTk3LCAxMzk2MDMsIDEzOTYwOSwgMTM5NjE1LCAKLSAgICAxMzk2MjEsIDEzOTYyOCwgMTM5NjM0LCAxMzk2NDAsIDEzOTY0NiwgMTM5NjUyLCAxMzk2NTgsIDEzOTY2NCwgMTM5NjcwLCAKLSAgICAxMzk2NzUsIDEzOTY4MSwgMTM5Njg3LCAxMzk2OTMsIDEzOTY5OSwgMTM5NzA1LCAxMzk3MTEsIDEzOTcxNywgMTM5NzIzLCAKLSAgICAxMzk3MjksIDEzOTczNSwgMTM5NzQxLCAxMzk3NDcsIDEzOTc1MywgMTM5NzU5LCAxMzk3NjUsIDEzOTc3MSwgMTM5Nzc3LCAKLSAgICAxMzk3ODQsIDEzOTc5MCwgMTM5Nzk2LCAxMzk4MDIsIDEzOTgwOCwgMTM5ODE0LCAxMzk4MjAsIDEzOTgyNiwgMTM5ODMzLCAKLSAgICAxMzk4MzksIDEzOTg0NSwgMTM5ODUxLCAxMzk4NTcsIDEzOTg2MywgMTM5ODY5LCAxMzk4NzYsIDEzOTg4MywgMTM5ODkwLCAKLSAgICAxMzk4OTcsIDEzOTkwNCwgMTM5OTExLCAxMzk5MTgsIDEzOTkyNSwgMTM5OTMyLCAxMzk5MzksIDEzOTk0NiwgMTM5OTUzLCAKLSAgICAxMzk5NjAsIDEzOTk2NywgMTM5OTc0LCAxMzk5ODEsIDEzOTk4OCwgMTM5OTk2LCAxNDAwMDMsIDE0MDAxMCwgMTQwMDE3LCAKLSAgICAxNDAwMjQsIDE0MDAzMSwgMTQwMDM4LCAxNDAwNDUsIDE0MDA1MSwgMTQwMDU4LCAxNDAwNjUsIDE0MDA3MiwgMTQwMDc5LCAKLSAgICAxNDAwODYsIDE0MDA5MywgMTQwMTAwLCAxNDAxMDcsIDE0MDExNCwgMTQwMTIxLCAxNDAxMjgsIDE0MDEzNSwgMTQwMTQyLCAKLSAgICAxNDAxNDksIDE0MDE1NiwgMTQwMTYzLCAxNDAxNzAsIDE0MDE3OCwgMTQwMTg1LCAxNDAxOTIsIDE0MDE5OSwgMTQwMjA2LCAKLSAgICAxNDAyMTMsIDE0MDIyMCwgMTQwMjI3LCAxNDAyMzUsIDE0MDI0MiwgMTQwMjQ5LCAxNDAyNTYsIDE0MDI2MywgMTQwMjcwLCAKLSAgICAxNDAyNzcsIDE0MDI4MiwgMCwgMCwgMTQwMjg3LCAxNDAyOTIsIDE0MDI5NiwgMTQwMzAwLCAxNDAzMDQsIDE0MDMwOCwgCi0gICAgMTQwMzEyLCAxNDAzMTYsIDE0MDMyMSwgMTQwMzI1LCAxNDAzMzAsIDE0MDMzNSwgMTQwMzM5LCAxNDAzNDMsIDE0MDM0NywgCi0gICAgMTQwMzUxLCAxNDAzNTUsIDE0MDM1OSwgMTQwMzY0LCAxNDAzNjgsIDE0MDM3MywgMTQwMzc4LCAxNDAzODIsIDE0MDM4NiwgCi0gICAgMTQwMzkwLCAxNDAzOTQsIDE0MDM5OCwgMTQwNDAyLCAxNDA0MDcsIDE0MDQxMSwgMTQwNDE2LCAxNDA0MjIsIDE0MDQyNywgCi0gICAgMTQwNDMyLCAxNDA0MzcsIDE0MDQ0MiwgMTQwNDQ3LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgCi0gICAgMTQwNDgwLCAxNDA0ODUsIDE0MDQ5MCwgMTQwNDk1LCAxNDA1MDAsIDE0MDUwNSwgMTQwNTExLCAxNDA1MTYsIDE0MDUyMiwgCi0gICAgMTQwNTI2LCAxNDA1MzEsIDE0MDUzNiwgMTQwNTQxLCAxNDA1NDYsIDE0MDU1MSwgMTQwNTU2LCAxNDA1NjIsIDE0MDU3MCwgCi0gICAgMTQwNTc3LCAxNDA1ODIsIDE0MDU4NywgMTQwNTk0LCAxNDA2MDAsIDE0MDYwNSwgMTQwNjExLCAxNDA2MTcsIDE0MDYyNSwgCi0gICAgMTQwNjMxLCAxNDA2MzgsIDE0MDY0NiwgMTQwNjUyLCAxNDA2NjEsIDE0MDY3MCwgMTQwNjc4LCAxNDA2ODYsIDE0MDY5MiwgCi0gICAgMTQwNjk5LCAxNDA3MDcsIDE0MDcxNSwgMTQwNzIxLCAxNDA3MjgsIDE0MDczNywgMTQwNzQ2LCAxNDA3NTMsIDE0MDc2NCwgCi0gICAgMTQwNzc0LCAxNDA3ODQsIDE0MDc5NCwgMTQwODA0LCAxNDA4MTEsIDE0MDgxOCwgMTQwODI1LCAxNDA4MzIsIDE0MDg0MSwgCi0gICAgMTQwODUwLCAxNDA4NjEsIDE0MDg3MiwgMTQwODgxLCAxNDA4OTAsIDE0MDkwMSwgMTQwOTEwLCAxNDA5MTksIDE0MDkzMCwgCi0gICAgMTQwOTM5LCAxNDA5NDgsIDE0MDk1NiwgMTQwOTY0LCAxNDA5NzUsIDE0MDk4NiwgMTQwOTk0LCAxNDEwMDMsIDE0MTAxMiwgCi0gICAgMTQxMDE5LCAxNDEwMzAsIDE0MTA0MSwgMTQxMDUwLCAxNDEwNTksIDE0MTA2NiwgMTQxMDc1LCAxNDEwODQsIDE0MTA5MywgCi0gICAgMTQxMTA0LCAxNDExMTMsIDE0MTEyMywgMTQxMTMyLCAxNDExNDEsIDE0MTE1MiwgMTQxMTY1LCAxNDExODAsIDE0MTE5MSwgCi0gICAgMTQxMjA0LCAxNDEyMTYsIDE0MTIyNSwgMTQxMjM2LCAxNDEyNDcsIDE0MTI1NiwgMTQxMjY3LCAxNDEyODEsIDE0MTI5NiwgCi0gICAgMTQxMjk5LCAxNDEzMDgsIDE0MTMxMywgMTQxMzE5LCAxNDEzMjcsIDE0MTMzMywgMTQxMzM5LCAxNDEzNDgsIDE0MTM1NSwgCi0gICAgMTQxMzY1LCAxNDEzNzcsIDE0MTM4NCwgMTQxMzg3LCAxNDEzOTMsIDE0MTQwMCwgMTQxNDA2LCAxNDE0MTEsIDE0MTQxNCwgCi0gICAgMTQxNDE5LCAxNDE0MjIsIDE0MTQyOSwgMTQxNDM1LCAxNDE0NDMsIDE0MTQ1MCwgMTQxNDU3LCAxNDE0NjMsIDE0MTQ2OCwgCi0gICAgMTQxNDcxLCAxNDE0NzQsIDE0MTQ3NywgMTQxNDgzLCAxNDE0OTAsIDE0MTQ5NiwgMTQxNTAxLCAxNDE1MDgsIDE0MTUxMSwgCi0gICAgMTQxNTE2LCAxNDE1MjMsIDE0MTUyOSwgMTQxNTM3LCAxNDE1NDQsIDE0MTU1NCwgMTQxNTYzLCAxNDE1NjYsIDE0MTU3MiwgCi0gICAgMTQxNTc5LCAxNDE1ODYsIDE0MTU5MywgMTQxNTk4LCAxNDE2MDYsIDE0MTYxNCwgMTQxNjIzLCAxNDE2MjksIDE0MTYzOCwgCi0gICAgMTQxNjQ3LCAxNDE2NTYsIDE0MTY2MiwgMTQxNjcxLCAxNDE2NzgsIDE0MTY4NSwgMTQxNjkyLCAxNDE3MDAsIDE0MTcwNiwgCi0gICAgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNywgMTQxNzM0LCAxNDE3NDIsIDE0MTc1MywgMTQxNzYzLCAxNDE3NjksIDE0MTc3NiwgCi0gICAgMTQxNzgzLCAxNDE3OTAsIDE0MTc5NiwgMTQxODAzLCAxNDE4MTAsIDE0MTgxNSwgMTQxODIyLCAxNDE4MzAsIDE0MTgzOSwgCi0gICAgMTQxODQ1LCAxNDE4NTcsIDE0MTg2OCwgMTQxODc0LCAxNDE4ODIsIDE0MTg4OCwgMTQxODk1LCAxNDE5MDIsIDE0MTkwOSwgCi0gICAgMTQxOTE1LCAxNDE5MjIsIDE0MTkzMSwgMTQxOTM3LCAxNDE5NDMsIDE0MTk1MCwgMTQxOTU3LCAxNDE5NjUsIDE0MTk3NSwgCi0gICAgMTQxOTg1LCAxNDE5OTUsIDE0MjAwNSwgMTQyMDEzLCAxNDIwMjEsIDE0MjAzMSwgMTQyMDM5LCAxNDIwNDQsIDE0MjA0OSwgCi0gICAgMTQyMDU0LCAxNDIwNjAsIDE0MjA2NywgMTQyMDc0LCAxNDIwODAsIDE0MjA4NiwgMTQyMDkxLCAxNDIwOTgsIDE0MjEwNiwgCi0gICAgMTQyMTE2LCAxNDIxMjQsIDE0MjEzMiwgMTQyMTQyLCAxNDIxNTIsIDE0MjE2MCwgMTQyMTcwLCAxNDIxODAsIDE0MjE5MiwgCi0gICAgMTQyMjA0LCAxNDIyMTYsIDE0MjIyNiwgMTQyMjMyLCAxNDIyMzgsIDE0MjI0NSwgMTQyMjU0LCAxNDIyNjMsIDE0MjI3MiwgCi0gICAgMTQyMjgxLCAxNDIyOTEsIDE0MjMwMCwgMTQyMzA5LCAxNDIzMTgsIDE0MjMyMywgMTQyMzI5LCAxNDIzMzgsIDE0MjM0OCwgCi0gICAgMTQyMzU3LCAxNDIzNjMsIDE0MjM2OSwgMTQyMzc2LCAxNDIzODMsIDE0MjM5MCwgMTQyMzk2LCAxNDI0MDMsIDE0MjQxMCwgCi0gICAgMTQyNDE3LCAxNDI0MjMsIDE0MjQyNywgMTQyNDMyLCAxNDI0MzksIDE0MjQ0NiwgMTQyNDUzLCAxNDI0NTgsIDE0MjQ2NiwgCi0gICAgMTQyNDc0LCAxNDI0ODMsIDE0MjQ5MSwgMTQyNDk4LCAxNDI1MDYsIDE0MjUxNSwgMTQyNTI1LCAxNDI1MjgsIDE0MjUzMiwgCi0gICAgMTQyNTM3LCAxNDI1NDIsIDE0MjU0NywgMTQyNTUyLCAxNDI1NTcsIDE0MjU2MiwgMTQyNTY3LCAxNDI1NzIsIDE0MjU3NywgCi0gICAgMTQyNTgyLCAxNDI1ODcsIDE0MjU5MiwgMTQyNTk3LCAxNDI2MDIsIDE0MjYwNywgMTQyNjEyLCAxNDI2MTcsIDE0MjYyNCwgCi0gICAgMTQyNjMwLCAxNDI2MzcsIDE0MjY0MywgMTQyNjQ4LCAxNDI2NTUsIDE0MjY2MSwgMTQyNjY4LCAxNDI2NzQsIDE0MjY3OSwgCi0gICAgMTQyNjg2LCAxNDI2OTMsIDE0MjcwMCwgMTQyNzA2LCAxNDI3MTIsIDE0MjcyMSwgMTQyNzMwLCAxNDI3NDEsIDE0Mjc0OCwgCi0gICAgMTQyNzU1LCAxNDI3NjQsIDE0Mjc3MywgMTQyNzgyLCAxNDI3OTEsIDE0MjgwMCwgMTQyODA2LCAxNDI4MTQsIDE0MjgyMCwgCi0gICAgMTQyODMwLCAxNDI4MzUsIDE0Mjg0NCwgMTQyODUzLCAxNDI4NjAsIDE0Mjg3MSwgMTQyODc4LCAxNDI4ODUsIDE0Mjg5MiwgCi0gICAgMTQyODk5LCAxNDI5MDYsIDE0MjkxMywgMTQyOTIwLCAxNDI5MjcsIDE0MjkzNCwgMTQyOTQxLCAxNDI5NDcsIDE0Mjk1MywgCi0gICAgMTQyOTU5LCAxNDI5NjYsIDE0Mjk3MywgMTQyOTgwLCAxNDI5ODcsIDE0Mjk5NCwgMTQzMDAxLCAxNDMwMDgsIDE0MzAxNSwgCi0gICAgMTQzMDIyLCAxNDMwMjksIDE0MzAzNiwgMTQzMDQzLCAxNDMwNDgsIDE0MzA1NywgMTQzMDY2LCAxNDMwNzUsIDE0MzA4MiwgCi0gICAgMTQzMDg5LCAxNDMwOTYsIDE0MzEwMywgMTQzMTEwLCAxNDMxMTcsIDE0MzEyNCwgMTQzMTMxLCAxNDMxNDAsIDE0MzE0OSwgCi0gICAgMTQzMTU4LCAxNDMxNjcsIDE0MzE3NiwgMTQzMTg1LCAxNDMxOTQsIDE0MzIwMywgMTQzMjEyLCAxNDMyMjEsIDE0MzIzMCwgCi0gICAgMTQzMjM5LCAxNDMyNDgsIDE0MzI1NCwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3OCwgMTQzMjgzLCAxNDMyOTIsIDE0MzMwMSwgCi0gICAgMTQzMzEwLCAxNDMzMjEsIDE0MzMyNiwgMTQzMzMzLCAxNDMzNDAsIDE0MzM0NywgMTQzMzUyLCAxNDMzNTgsIDE0MzM2NCwgCi0gICAgMTQzMzcwLCAxNDMzNzcsIDE0MzM4NCwgMTQzMzkxLCAxNDMzOTgsIDE0MzQwNSwgMTQzNDEyLCAxNDM0MTksIDE0MzQyNiwgCi0gICAgMTQzNDMzLCAxNDM0NDAsIDE0MzQ0NywgMTQzNDU0LCAxNDM0NTksIDE0MzQ2OCwgMTQzNDc3LCAxNDM0ODYsIDE0MzQ5NSwgCi0gICAgMTQzNTA0LCAxNDM1MTMsIDE0MzUyMiwgMTQzNTMxLCAxNDM1NDIsIDE0MzU1MywgMTQzNTYwLCAxNDM1NjcsIDE0MzU3NCwgCi0gICAgMTQzNTgxLCAxNDM1ODgsIDE0MzU5NSwgMTQzNjAzLCAxNDM2MTMsIDE0MzYyMywgMTQzNjMzLCAxNDM2NDQsIDE0MzY1NSwgCi0gICAgMTQzNjY2LCAxNDM2NzUsIDE0MzY4NCwgMTQzNjkzLCAxNDM2OTgsIDE0MzcwMywgMTQzNzA4LCAxNDM3MTMsIDE0MzcyNCwgCi0gICAgMTQzNzM1LCAxNDM3NDYsIDE0Mzc1NywgMTQzNzY4LCAxNDM3NzgsIDE0Mzc4OSwgMTQzNzk4LCAxNDM4MDcsIDE0MzgxNiwgCi0gICAgMTQzODI1LCAxNDM4MzQsIDE0Mzg0MiwgMTQzODUxLCAxNDM4NjIsIDE0Mzg3MywgMTQzODg0LCAxNDM4OTUsIDE0MzkwNiwgCi0gICAgMTQzOTE4LCAxNDM5MzEsIDE0Mzk0MywgMTQzOTU2LCAxNDM5NjgsIDE0Mzk4MSwgMTQzOTkzLCAxNDQwMDYsIDE0NDAxNywgCi0gICAgMTQ0MDI4LCAxNDQwMzcsIDE0NDA0NSwgMTQ0MDU0LCAxNDQwNjUsIDE0NDA3NiwgMTQ0MDg4LCAxNDQxMDEsIDE0NDExNSwgCi0gICAgMTQ0MTMwLCAxNDQxNDIsIDE0NDE1NSwgMTQ0MTY3LCAxNDQxODAsIDE0NDE5MSwgMTQ0MjAyLCAxNDQyMTEsIDE0NDIxOSwgCi0gICAgMTQ0MjI4LCAxNDQyMzUsIDE0NDI0MiwgMTQ0MjQ5LCAxNDQyNTYsIDE0NDI2MywgMTQ0MjcwLCAxNDQyNzcsIDE0NDI4NCwgCi0gICAgMTQ0MjkxLCAxNDQyOTgsIDE0NDMwMywgMTQ0MzA4LCAxNDQzMTMsIDE0NDMyMCwgMTQ0MzMwLCAxNDQzNDEsIDE0NDM1MSwgCi0gICAgMTQ0MzYyLCAxNDQzNzYsIDE0NDM5MSwgMTQ0NDA2LCAxNDQ0MjAsIDE0NDQzNSwgMTQ0NDUwLCAxNDQ0NjEsIDE0NDQ3MiwgCi0gICAgMTQ0NDg1LCAxNDQ0OTgsIDE0NDUwNywgMTQ0NTE2LCAxNDQ1MjksIDE0NDU0MiwgMTQ0NTQ5LCAxNDQ1NTYsIDE0NDU2MSwgCi0gICAgMTQ0NTY2LCAxNDQ1NzEsIDE0NDU3NiwgMTQ0NTgxLCAxNDQ1ODgsIDE0NDU5NywgMTQ0NjAyLCAxNDQ2MDUsIDE0NDYxMCwgCi0gICAgMTQ0NjE3LCAxNDQ2MjQsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDUsIDE0NDY1MiwgMTQ0NjY1LCAxNDQ2NzksIDE0NDY5NCwgCi0gICAgMTQ0NzAxLCAxNDQ3MDgsIDE0NDcxNSwgMTQ0NzI0LCAxNDQ3MzIsIDE0NDc0MCwgMTQ0NzQ5LCAxNDQ3NTQsIDE0NDc1OSwgCi0gICAgMTQ0NzY0LCAxNDQ3NjksIDE0NDc3NCwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgMTQ0Nzk5LCAxNDQ4MDYsIDE0NDgxMiwgCi0gICAgMTQ0ODE5LCAxNDQ4MjQsIDE0NDgyOSwgMTQ0ODM0LCAxNDQ4MzksIDE0NDg0NCwgMTQ0ODUxLCAxNDQ4NTgsIDE0NDg2MywgCi0gICAgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4MiwgMTQ0ODg3LCAxNDQ4OTIsIDE0NDg5NywgMTQ0OTAyLCAxNDQ5MDcsIDE0NDkxNCwgCi0gICAgMTQ0OTIxLCAxNDQ5MjgsIDE0NDkzMSwgMTQ0OTM2LCAxNDQ5NDEsIDE0NDk0NiwgMTQ0OTUxLCAxNDQ5NTgsIDE0NDk2NSwgCi0gICAgMTQ0OTczLCAxNDQ5ODEsIDE0NDk4NiwgMTQ0OTkxLCAxNDQ5OTgsIDE0NTAwNSwgMTQ1MDEyLCAxNDUwMTcsIDE0NTAyNCwgCi0gICAgMTQ1MDMxLCAxNDUwMzYsIDE0NTA0MywgMTQ1MDUwLCAxNDUwNTYsIDE0NTA2MiwgMTQ1MDY4LCAxNDUwNzQsIDE0NTA4MiwgCi0gICAgMTQ1MDkwLCAxNDUwOTYsIDE0NTEwNCwgMTQ1MTEyLCAxNDUxMTcsIDE0NTEyNCwgMTQ1MTMxLCAxNDUxMzYsIDE0NTE0MywgCi0gICAgMTQ1MTUwLCAxNDUxNTcsIDE0NTE2NSwgMTQ1MTczLCAxNDUxNzgsIDE0NTE4NSwgMTQ1MTkyLCAxNDUyMDEsIDE0NTIwOCwgCi0gICAgMTQ1MjE3LCAxNDUyMjgsIDE0NTIzNywgMTQ1MjQ2LCAxNDUyNTUsIDE0NTI2NCwgMTQ1MjY3LCAxNDUyNzIsIDE0NTI3OSwgCi0gICAgMTQ1Mjg4LCAxNDUyOTUsIDE0NTMwNCwgMTQ1MzExLCAxNDUzMTYsIDE0NTMyMSwgMTQ1MzI0LCAxNDUzMjcsIDE0NTMzMCwgCi0gICAgMTQ1MzM3LCAxNDUzNDQsIDE0NTM1MywgMTQ1MzYyLCAxNDUzNzEsIDE0NTM3OCwgMTQ1Mzg1LCAxNDUzOTAsIDE0NTQwMywgCi0gICAgMTQ1NDA4LCAxNDU0MTMsIDE0NTQxOCwgMTQ1NDIzLCAxNDU0MjgsIDE0NTQzMywgMTQ1NDM4LCAxNDU0NDMsIDE0NTQ0NiwgCi0gICAgMTQ1NDUxLCAxNDU0NTYsIDE0NTQ2MSwgMTQ1NDY2LCAxNDU0NzEsIDE0NTQ3OCwgMTQ1NDgzLCAxNDU0OTAsIDE0NTQ5MywgCi0gICAgMTQ1NDk4LCAxNDU1MDEsIDE0NTUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ1NTA3LCAxNDU1MTIsIDE0NTUxNywgMTQ1NTIyLCAxNDU1MjcsIDAsIDE0NTUzMiwgMTQ1NTM3LCAxNDU1NDIsIAotICAgIDE0NTU0NywgMTQ1NTUyLCAxNDU1NTcsIDE0NTU2MiwgMTQ1NTY3LCAxNDU1NzIsIDE0NTU3NywgMTQ1NTgyLCAxNDU1ODcsIAotICAgIDE0NTU5MiwgMTQ1NTk3LCAxNDU2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTYwNywgMTQ1NjE0LCAxNDU2MjAsIAotICAgIDE0NTYyNywgMTQ1NjM0LCAxNDU2NDEsIDE0NTY0OCwgMTQ1NjU1LCAxNDU2NjIsIDE0NTY2OSwgMTQ1Njc2LCAxNDU2ODMsIAotICAgIDE0NTY5MCwgMTQ1Njk3LCAxNDU3MDQsIDE0NTcxMSwgMTQ1NzE4LCAxNDU3MjUsIDE0NTczMiwgMTQ1NzM5LCAxNDU3NDYsIAotICAgIDE0NTc1MywgMTQ1NzYwLCAxNDU3NjcsIDE0NTc3NCwgMTQ1NzgxLCAxNDU3ODgsIDE0NTc5NSwgMTQ1ODAyLCAxNDU4MDksIAotICAgIDE0NTgxNiwgMTQ1ODIzLCAxNDU4MzAsIDE0NTgzNywgMTQ1ODQ0LCAxNDU4NTAsIDE0NTg1NiwgMTQ1ODYyLCAxNDU4NjksIAotICAgIDE0NTg3NSwgMTQ1ODgyLCAxNDU4ODgsIDE0NTg5NSwgMTQ1OTAyLCAxNDU5MDksIDE0NTkxNiwgMTQ1OTIzLCAxNDU5MzAsIAotICAgIDE0NTkzNywgMTQ1OTQ0LCAxNDU5NTEsIDE0NTk1OCwgMTQ1OTY1LCAxNDU5NzIsIDE0NTk3OSwgMTQ1OTg2LCAxNDU5OTMsIAotICAgIDE0NjAwMCwgMTQ2MDA3LCAxNDYwMTQsIDE0NjAyMSwgMTQ2MDI4LCAxNDYwMzYsIDE0NjA0MywgMTQ2MDUwLCAxNDYwNTcsIAotICAgIDE0NjA2NCwgMTQ2MDcxLCAxNDYwNzgsIDE0NjA4NSwgMTQ2MDkyLCAxNDYwOTksIDE0NjEwNiwgMTQ2MTEzLCAxNDYxMjAsIAotICAgIDE0NjEyNiwgMTQ2MTMzLCAxNDYxNDAsIDE0NjE0NywgMTQ2MTU0LCAxNDYxNjEsIDE0NjE2OCwgMTQ2MTc1LCAxNDYxODMsIAotICAgIDE0NjE5MCwgMTQ2MTk2LCAxNDYyMDMsIDE0NjIxMCwgMTQ2MjE3LCAxNDYyMjQsIDE0NjIzMSwgMTQ2MjM4LCAxNDYyNDUsIAotICAgIDE0NjI1MiwgMTQ2MjU5LCAxNDYyNjYsIDE0NjI3MywgMTQ2MjgwLCAxNDYyODcsIDE0NjI5NCwgMTQ2MzAxLCAxNDYzMDgsIAotICAgIDE0NjMxNSwgMTQ2MzIyLCAxNDYzMjksIDE0NjMzNiwgMTQ2MzQyLCAxNDYzNDksIDE0NjM1NiwgMTQ2MzYzLCAxNDYzNzAsIAotICAgIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDA1LCAxNDY0MTIsIDE0NjQxOSwgMTQ2NDI2LCAxNDY0MzMsIAotICAgIDE0NjQ0MCwgMTQ2NDQ3LCAxNDY0NTQsIDE0NjQ2MSwgMTQ2NDY4LCAxNDY0NzUsIDE0NjQ4MiwgMTQ2NDg5LCAxNDY0OTYsIAotICAgIDE0NjUwNCwgMTQ2NTEyLCAxNDY1MjAsIDE0NjUyNywgMTQ2NTM0LCAxNDY1NDEsIDE0NjU0OCwgMTQ2NTU1LCAxNDY1NjIsIAotICAgIDE0NjU2OSwgMTQ2NTc2LCAxNDY1ODMsIDE0NjU5MCwgMTQ2NTk2LCAxNDY2MDMsIDE0NjYxMCwgMTQ2NjE3LCAxNDY2MjQsIAotICAgIDE0NjYzMSwgMTQ2NjM4LCAxNDY2NDUsIDE0NjY1MiwgMTQ2NjU5LCAxNDY2NjYsIDE0NjY3MywgMTQ2NjgwLCAxNDY2ODcsIAotICAgIDE0NjY5NCwgMTQ2NzAyLCAxNDY3MTAsIDE0NjcxOCwgMTQ2NzI1LCAxNDY3MzIsIDE0NjczOSwgMTQ2NzQ2LCAxNDY3NTMsIAotICAgIDE0Njc2MCwgMTQ2NzY3LCAxNDY3NzQsIDE0Njc4MSwgMTQ2Nzg4LCAxNDY3OTUsIDE0NjgwMiwgMTQ2ODA5LCAxNDY4MTYsIAotICAgIDE0NjgyMywgMTQ2ODMwLCAxNDY4MzcsIDE0Njg0NCwgMTQ2ODUxLCAxNDY4NTgsIDE0Njg2NSwgMTQ2ODcyLCAxNDY4NzksIAotICAgIDE0Njg4NiwgMTQ2ODkzLCAxNDY5MDAsIDE0NjkwNywgMTQ2OTE0LCAxNDY5MjEsIDE0NjkyOCwgMTQ2OTM1LCAxNDY5NDIsIAotICAgIDE0Njk0OSwgMTQ2OTU2LCAxNDY5NjMsIDE0Njk3MCwgMTQ2OTc3LCAwLCAwLCAxNDY5ODQsIDE0Njk4OCwgMTQ2OTkyLCAKLSAgICAxNDY5OTYsIDE0NzAwMCwgMTQ3MDA0LCAxNDcwMDgsIDE0NzAxMywgMTQ3MDE3LCAxNDcwMjIsIDE0NzAyOCwgMTQ3MDM0LCAKLSAgICAxNDcwNDAsIDE0NzA0NiwgMTQ3MDU0LCAxNDcwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0NzA2OCwgMTQ3MDcyLCAxNDcwNzYsIDE0NzA4MCwgMCwgMTQ3MDg0LCAxNDcwODgsIDE0NzA5MiwgCi0gICAgMTQ3MDk2LCAxNDcxMDAsIDE0NzEwNCwgMTQ3MTA4LCAxNDcxMTIsIDE0NzExNiwgMTQ3MTIwLCAxNDcxMjQsIDE0NzEyOCwgCi0gICAgMTQ3MTMyLCAxNDcxMzYsIDE0NzE0MCwgMTQ3MTQ0LCAxNDcxNDgsIDE0NzE1MiwgMTQ3MTU2LCAxNDcxNjAsIDE0NzE2NCwgCi0gICAgMTQ3MTY4LCAxNDcxNzIsIDE0NzE3NiwgMTQ3MTgyLCAxNDcxODgsIDE0NzE5NCwgMCwgMTQ3MjAwLCAxNDcyMDUsIDAsIAotICAgIDE0NzIxMCwgMCwgMCwgMTQ3MjE1LCAwLCAxNDcyMjAsIDE0NzIyNSwgMTQ3MjMwLCAxNDcyMzUsIDE0NzI0MCwgMTQ3MjQ1LCAKLSAgICAxNDcyNTAsIDE0NzI1NSwgMTQ3MjYwLCAxNDcyNjUsIDAsIDE0NzI3MCwgMTQ3Mjc1LCAxNDcyODAsIDE0NzI4NSwgMCwgCi0gICAgMTQ3MjkwLCAwLCAxNDcyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzMwMCwgMCwgMCwgMCwgMCwgMTQ3MzA2LCAwLCAKLSAgICAxNDczMTIsIDAsIDE0NzMxOCwgMCwgMTQ3MzI0LCAxNDczMzAsIDE0NzMzNiwgMCwgMTQ3MzQyLCAxNDczNDgsIDAsIAotICAgIDE0NzM1NCwgMCwgMCwgMTQ3MzYwLCAwLCAxNDczNjYsIDAsIDE0NzM3MiwgMCwgMTQ3Mzc4LCAwLCAxNDczODYsIDAsIAotICAgIDE0NzM5NCwgMTQ3NDAwLCAwLCAxNDc0MDYsIDAsIDAsIDE0NzQxMiwgMTQ3NDE4LCAxNDc0MjQsIDE0NzQzMCwgMCwgCi0gICAgMTQ3NDM2LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDU0LCAxNDc0NjAsIDE0NzQ2NiwgMTQ3NDcyLCAwLCAxNDc0NzgsIAotICAgIDE0NzQ4NCwgMTQ3NDkwLCAxNDc0OTYsIDAsIDE0NzUwMiwgMTQ3NTA4LCAxNDc1MTQsIDE0NzUyMCwgMCwgMTQ3NTI4LCAwLCAKLSAgICAxNDc1MzYsIDE0NzU0MiwgMTQ3NTQ4LCAxNDc1NTQsIDE0NzU2MCwgMTQ3NTY2LCAxNDc1NzIsIDE0NzU3OCwgMTQ3NTg0LCAKLSAgICAxNDc1OTAsIDAsIDE0NzU5NiwgMTQ3NjAyLCAxNDc2MDgsIDE0NzYxNCwgMTQ3NjIwLCAxNDc2MjYsIDE0NzYzMiwgCi0gICAgMTQ3NjM4LCAxNDc2NDQsIDE0NzY1MCwgMTQ3NjU2LCAxNDc2NjIsIDE0NzY2OCwgMTQ3Njc0LCAxNDc2ODAsIDE0NzY4NiwgCi0gICAgMTQ3NjkyLCAwLCAwLCAwLCAwLCAwLCAxNDc2OTgsIDE0NzcwMywgMTQ3NzA4LCAwLCAxNDc3MTMsIDE0NzcxOCwgMTQ3NzIzLCAKLSAgICAxNDc3MjgsIDE0NzczMywgMCwgMTQ3NzM4LCAxNDc3NDMsIDE0Nzc0OCwgMTQ3NzUzLCAxNDc3NTgsIDE0Nzc2MywgCi0gICAgMTQ3NzY4LCAxNDc3NzMsIDE0Nzc3OCwgMTQ3NzgzLCAxNDc3ODgsIDE0Nzc5MywgMTQ3Nzk4LCAxNDc4MDMsIDE0NzgwOCwgCi0gICAgMTQ3ODEzLCAxNDc4MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYxMiwgMTUwNjE5LCAxNTA2MjUsIDE1MDYzMiwgMTUwNjM5LCAKKyAgICAxNTA2NDYsIDE1MDY1MywgMTUwNjYwLCAxNTA2NjcsIDE1MDY3NCwgMTUwNjgxLCAxNTA2ODgsIDE1MDY5NSwgMTUwNzAyLCAKKyAgICAxNTA3MDksIDE1MDcxNiwgMTUwNzIzLCAxNTA3MzAsIDE1MDczNywgMTUwNzQ0LCAxNTA3NTEsIDE1MDc1OCwgMTUwNzY1LCAKKyAgICAxNTA3NzIsIDE1MDc3OSwgMTUwNzg2LCAxNTA3OTMsIDE1MDgwMCwgMTUwODA3LCAxNTA4MTQsIDE1MDgyMSwgMTUwODI4LCAKKyAgICAxNTA4MzUsIDE1MDg0MiwgMTUwODQ5LCAxNTA4NTUsIDE1MDg2MSwgMTUwODY3LCAxNTA4NzQsIDE1MDg4MCwgMTUwODg3LCAKKyAgICAxNTA4OTMsIDE1MDkwMCwgMTUwOTA3LCAxNTA5MTQsIDE1MDkyMSwgMTUwOTI4LCAxNTA5MzUsIDE1MDk0MiwgMTUwOTQ5LCAKKyAgICAxNTA5NTYsIDE1MDk2MywgMTUwOTcwLCAxNTA5NzcsIDE1MDk4NCwgMTUwOTkxLCAxNTA5OTcsIDE1MTAwNCwgMTUxMDExLCAKKyAgICAxNTEwMTgsIDE1MTAyNSwgMTUxMDMyLCAxNTEwNDAsIDE1MTA0NywgMTUxMDU0LCAxNTEwNjEsIDE1MTA2OCwgMTUxMDc1LCAKKyAgICAxNTEwODIsIDE1MTA4OSwgMTUxMDk2LCAxNTExMDMsIDE1MTExMCwgMTUxMTE3LCAxNTExMjQsIDE1MTEzMCwgMTUxMTM3LCAKKyAgICAxNTExNDQsIDE1MTE1MSwgMTUxMTU4LCAxNTExNjUsIDE1MTE3MiwgMTUxMTc5LCAxNTExODcsIDE1MTE5NCwgMTUxMjAwLCAKKyAgICAxNTEyMDcsIDE1MTIxNCwgMTUxMjIxLCAxNTEyMjgsIDE1MTIzNSwgMTUxMjQyLCAxNTEyNDksIDE1MTI1NiwgMTUxMjYzLCAKKyAgICAxNTEyNzAsIDE1MTI3NywgMTUxMjg0LCAxNTEyOTEsIDE1MTI5OCwgMTUxMzA1LCAxNTEzMTIsIDE1MTMxOSwgMTUxMzI2LCAKKyAgICAxNTEzMzMsIDE1MTM0MCwgMTUxMzQ2LCAxNTEzNTMsIDE1MTM2MCwgMTUxMzY3LCAxNTEzNzQsIDE1MTM4MSwgMTUxMzg4LCAKKyAgICAxNTEzOTUsIDE1MTQwMiwgMTUxNDA5LCAxNTE0MTYsIDE1MTQyMywgMTUxNDMwLCAxNTE0MzcsIDE1MTQ0NCwgMTUxNDUxLCAKKyAgICAxNTE0NTgsIDE1MTQ2NSwgMTUxNDcyLCAxNTE0NzksIDE1MTQ4NiwgMTUxNDkzLCAxNTE1MDAsIDE1MTUwOCwgMTUxNTE2LCAKKyAgICAxNTE1MjQsIDE1MTUzMSwgMTUxNTM4LCAxNTE1NDUsIDE1MTU1MiwgMTUxNTU5LCAxNTE1NjYsIDE1MTU3MywgMTUxNTgwLCAKKyAgICAxNTE1ODcsIDE1MTU5NCwgMTUxNjAwLCAxNTE2MDcsIDE1MTYxNCwgMTUxNjIxLCAxNTE2MjgsIDE1MTYzNSwgMTUxNjQyLCAKKyAgICAxNTE2NDksIDE1MTY1NiwgMTUxNjYzLCAxNTE2NzAsIDE1MTY3NywgMTUxNjg0LCAxNTE2OTEsIDE1MTY5OCwgMTUxNzA2LCAKKyAgICAxNTE3MTQsIDE1MTcyMiwgMTUxNzI5LCAxNTE3MzYsIDE1MTc0MywgMTUxNzUwLCAxNTE3NTcsIDE1MTc2NCwgMTUxNzcxLCAKKyAgICAxNTE3NzgsIDE1MTc4NSwgMTUxNzkyLCAxNTE3OTksIDE1MTgwNiwgMTUxODEzLCAxNTE4MjAsIDE1MTgyNywgMTUxODM0LCAKKyAgICAxNTE4NDEsIDE1MTg0OCwgMTUxODU1LCAxNTE4NjIsIDE1MTg2OSwgMTUxODc2LCAxNTE4ODMsIDE1MTg5MCwgMTUxODk3LCAKKyAgICAxNTE5MDQsIDE1MTkxMSwgMTUxOTE4LCAxNTE5MjUsIDE1MTkzMiwgMTUxOTM5LCAxNTE5NDYsIDE1MTk1MywgMTUxOTYwLCAKKyAgICAxNTE5NjcsIDE1MTk3NCwgMTUxOTgxLCAwLCAwLCAxNTE5ODgsIDE1MTk5MiwgMTUxOTk2LCAxNTIwMDAsIDE1MjAwNCwgCisgICAgMTUyMDA4LCAxNTIwMTIsIDE1MjAxNywgMTUyMDIxLCAxNTIwMjYsIDE1MjAzMiwgMTUyMDM4LCAxNTIwNDQsIDE1MjA1MCwgCisgICAgMTUyMDU4LCAxNTIwNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjA3MiwgCisgICAgMTUyMDc4LCAxNTIwODQsIDE1MjA5MCwgMTUyMDk2LCAxNTIxMDIsIDE1MjEwOCwgMTUyMTE0LCAxNTIxMjAsIDE1MjEyNiwgCisgICAgMTUyMTMxLCAxNTIxMzcsIDE1MjE0MiwgMTUyMTQ3LCAxNTIxNTMsIDE1MjE1OSwgMTUyMTY1LCAxNTIxNzEsIDE1MjE3NywgCisgICAgMTUyMTgyLCAxNTIxODcsIDE1MjE5MywgMTUyMTk5LCAxNTIyMDQsIDE1MjIxMCwgMTUyMjE2LCAxNTIyMjIsIDE1MjIyOCwgCisgICAgMTUyMjM0LCAxNTIyNDAsIDE1MjI0NiwgMTUyMjUyLCAxNTIyNTgsIDE1MjI2NCwgMTUyMjcwLCAxNTIyNzYsIDE1MjI4MiwgCisgICAgMTUyMjg4LCAxNTIyOTQsIDE1MjMwMCwgMTUyMzA2LCAxNTIzMTIsIDE1MjMxOCwgMTUyMzI0LCAxNTIzMjksIDE1MjMzNSwgCisgICAgMTUyMzQwLCAxNTIzNDUsIDE1MjM1MSwgMTUyMzU3LCAxNTIzNjMsIDE1MjM2OSwgMTUyMzc1LCAxNTIzODAsIDE1MjM4NSwgCisgICAgMTUyMzkxLCAxNTIzOTcsIDE1MjQwMiwgMTUyNDA4LCAxNTI0MTQsIDE1MjQyMCwgMTUyNDI2LCAxNTI0MzIsIDE1MjQzOCwgCisgICAgMTUyNDQ0LCAxNTI0NTAsIDE1MjQ1NiwgMTUyNDYyLCAxNTI0NjgsIDE1MjQ3NCwgMTUyNDc5LCAxNTI0ODQsIDE1MjQ4OCwgCisgICAgMTUyNDkzLCAxNTI1MDAsIDAsIDAsIDAsIDAsIDAsIDE1MjUwNCwgMTUyNTA5LCAxNTI1MTMsIDE1MjUxNywgMTUyNTIxLCAKKyAgICAxNTI1MjUsIDE1MjUyOSwgMTUyNTMzLCAxNTI1MzgsIDE1MjU0MiwgMCwgMCwgMCwgMCwgMTUyNTQ3LCAxNTI1NTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzgyMywgMTQ3ODMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODU1LCAxNDc4NjIsIDE0Nzg2OCwgMTQ3ODc1LCAxNDc4ODIsIAotICAgIDE0Nzg4OCwgMTQ3ODk1LCAxNDc5MDIsIDE0NzkwOSwgMTQ3OTE3LCAxNDc5MjUsIDE0NzkzMywgMTQ3OTQxLCAxNDc5NDksIAotICAgIDE0Nzk1NywgMTQ3OTY0LCAxNDc5NzEsIDE0Nzk3OCwgMTQ3OTg2LCAxNDc5OTQsIDE0ODAwMiwgMTQ4MDEwLCAxNDgwMTgsIAotICAgIDE0ODAyNiwgMTQ4MDMzLCAxNDgwNDAsIDE0ODA0NywgMTQ4MDU1LCAxNDgwNjMsIDE0ODA3MSwgMTQ4MDc5LCAxNDgwODcsIAotICAgIDE0ODA5NSwgMTQ4MTAwLCAxNDgxMDUsIDE0ODExMCwgMTQ4MTE1LCAxNDgxMjAsIDE0ODEyNSwgMTQ4MTMwLCAxNDgxMzUsIAotICAgIDE0ODE0MCwgMCwgMCwgMCwgMCwgMTQ4MTQ1LCAxNDgxNTEsIDE0ODE1NSwgMTQ4MTU5LCAxNDgxNjMsIDE0ODE2NywgCi0gICAgMTQ4MTcxLCAxNDgxNzUsIDE0ODE3OSwgMTQ4MTgzLCAxNDgxODcsIDE0ODE5MSwgMTQ4MTk1LCAxNDgxOTksIDE0ODIwMywgCi0gICAgMTQ4MjA3LCAxNDgyMTEsIDE0ODIxNSwgMTQ4MjE5LCAxNDgyMjMsIDE0ODIyNywgMTQ4MjMxLCAxNDgyMzUsIDE0ODIzOSwgCi0gICAgMTQ4MjQzLCAxNDgyNDcsIDE0ODI1MSwgMTQ4MjU1LCAxNDgyNTksIDE0ODI2MywgMTQ4MjY3LCAxNDgyNzEsIDE0ODI3NSwgCi0gICAgMTQ4Mjc5LCAxNDgyODMsIDE0ODI4NywgMTQ4MjkxLCAxNDgyOTUsIDE0ODI5OSwgMTQ4MzAzLCAxNDgzMDcsIDE0ODMxMSwgCi0gICAgMTQ4MzE1LCAxNDgzMTksIDE0ODMyMywgMTQ4MzI3LCAxNDgzMzEsIDE0ODMzNSwgMTQ4MzM5LCAxNDgzNDMsIDE0ODM0NywgCi0gICAgMTQ4MzUyLCAxNDgzNTYsIDE0ODM2MCwgMTQ4MzY0LCAxNDgzNjgsIDE0ODM3MiwgMTQ4Mzc2LCAxNDgzODAsIDE0ODM4NCwgCi0gICAgMTQ4Mzg4LCAxNDgzOTIsIDE0ODM5NiwgMTQ4NDAwLCAxNDg0MDQsIDE0ODQwOCwgMTQ4NDEyLCAxNDg0MTYsIDE0ODQyMCwgCi0gICAgMTQ4NDI0LCAxNDg0MjgsIDE0ODQzMiwgMTQ4NDM2LCAxNDg0NDAsIDE0ODQ0NCwgMTQ4NDQ4LCAxNDg0NTIsIDE0ODQ1NiwgCi0gICAgMTQ4NDYwLCAxNDg0NjQsIDE0ODQ2OCwgMTQ4NDcyLCAxNDg0NzYsIDE0ODQ4MCwgMTQ4NDg0LCAxNDg0ODgsIDE0ODQ5MiwgCi0gICAgMTQ4NDk2LCAxNDg1MDAsIDE0ODUwNCwgMTQ4NTA4LCAxNDg1MTIsIDE0ODUxNiwgMTQ4NTIwLCAxNDg1MjQsIDE0ODUyOCwgCi0gICAgMTQ4NTMyLCAxNDg1MzYsIDE0ODU0MCwgMTQ4NTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDg1NDgsIDE0ODU1NCwgMTQ4NTYzLCAxNDg1NzEsIDE0ODU3OSwgMTQ4NTg4LCAxNDg1OTcsIDE0ODYwNiwgMTQ4NjE1LCAKLSAgICAxNDg2MjQsIDE0ODYzMywgMTQ4NjQyLCAxNDg2NTEsIDE0ODY2MCwgMTQ4NjY5LCAwLCAwLCAxNDg2NzgsIDE0ODY4NywgCi0gICAgMTQ4Njk1LCAxNDg3MDMsIDE0ODcxMiwgMTQ4NzIxLCAxNDg3MzAsIDE0ODczOSwgMTQ4NzQ4LCAxNDg3NTcsIDE0ODc2NiwgCi0gICAgMTQ4Nzc1LCAxNDg3ODQsIDE0ODc5MywgMTQ4ODAyLCAwLCAxNDg4MTAsIDE0ODgxOSwgMTQ4ODI3LCAxNDg4MzUsIAotICAgIDE0ODg0NCwgMTQ4ODUzLCAxNDg4NjIsIDE0ODg3MSwgMTQ4ODgwLCAxNDg4ODksIDE0ODg5OCwgMTQ4OTA3LCAxNDg5MTYsIAotICAgIDE0ODkyNSwgMTQ4OTM0LCAwLCAxNDg5NDEsIDE0ODk1MCwgMTQ4OTU4LCAxNDg5NjYsIDE0ODk3NSwgMTQ4OTg0LCAKLSAgICAxNDg5OTMsIDE0OTAwMiwgMTQ5MDExLCAxNDkwMjAsIDE0OTAyOSwgMTQ5MDM4LCAxNDkwNDcsIDE0OTA1NiwgMTQ5MDY1LCAKLSAgICAxNDkwNzIsIDE0OTA3OCwgMTQ5MDg0LCAxNDkwOTAsIDE0OTA5NiwgMTQ5MTAyLCAxNDkxMDgsIDE0OTExNCwgMTQ5MTIwLCAKLSAgICAxNDkxMjYsIDE0OTEzMiwgMTQ5MTM4LCAxNDkxNDQsIDE0OTE1MCwgMTQ5MTU2LCAxNDkxNjIsIDE0OTE2OCwgMTQ5MTc0LCAKLSAgICAxNDkxODAsIDE0OTE4NiwgMTQ5MTkyLCAxNDkxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTIwNCwgCi0gICAgMTQ5MjExLCAxNDkyMTYsIDE0OTIyMCwgMTQ5MjI0LCAxNDkyMjgsIDE0OTIzMywgMTQ5MjM4LCAxNDkyNDMsIDE0OTI0OCwgCi0gICAgMTQ5MjUzLCAxNDkyNTgsIDE0OTI2NSwgMCwgMCwgMCwgMTQ5MjczLCAxNDkyNzgsIDE0OTI4NCwgMTQ5MjkwLCAxNDkyOTYsIAotICAgIDE0OTMwMSwgMTQ5MzA3LCAxNDkzMTMsIDE0OTMxOSwgMTQ5MzI0LCAxNDkzMzAsIDE0OTMzNiwgMTQ5MzQxLCAxNDkzNDcsIAotICAgIDE0OTM1MywgMTQ5MzU4LCAxNDkzNjQsIDE0OTM3MCwgMTQ5Mzc1LCAxNDkzODAsIDE0OTM4NiwgMTQ5MzkxLCAxNDkzOTcsIAotICAgIDE0OTQwMywgMTQ5NDA5LCAxNDk0MTUsIDE0OTQyMSwgMTQ5NDMxLCAxNDk0MzgsIDE0OTQ0NCwgMTQ5NDQ3LCAwLCAKLSAgICAxNDk0NTAsIDE0OTQ1NSwgMTQ5NDYxLCAxNDk0NjcsIDE0OTQ3MywgMTQ5NDc4LCAxNDk0ODQsIDE0OTQ5MCwgMTQ5NDk2LCAKLSAgICAxNDk1MDEsIDE0OTUwNywgMTQ5NTEzLCAxNDk1MTgsIDE0OTUyNCwgMTQ5NTMwLCAxNDk1MzUsIDE0OTU0MSwgMTQ5NTQ3LCAKLSAgICAxNDk1NTIsIDE0OTU1NywgMTQ5NTYzLCAxNDk1NjgsIDE0OTU3NCwgMTQ5NTgwLCAxNDk1ODYsIDE0OTU5MiwgMTQ5NTk4LCAKLSAgICAxNDk2MDEsIDE0OTYwNCwgMTQ5NjA3LCAxNDk2MTAsIDE0OTYxMywgMTQ5NjE2LCAxNDk2MjIsIDE0OTYyOSwgMTQ5NjM2LCAKLSAgICAxNDk2NDMsIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY3MCwgMTQ5Njc2LCAxNDk2ODMsIDE0OTY5MCwgMTQ5Njk2LCAKLSAgICAxNDk3MDMsIDE0OTcxMCwgMTQ5NzE2LCAxNDk3MjMsIDE0OTczMCwgMTQ5NzM2LCAxNDk3NDIsIDE0OTc0OSwgMTQ5NzU1LCAKLSAgICAxNDk3NjIsIDE0OTc2OSwgMTQ5Nzc2LCAxNDk3ODMsIDE0OTc5MCwgMTQ5Nzk1LCAwLCAwLCAwLCAwLCAxNDk4MDAsIAotICAgIDE0OTgwNiwgMTQ5ODEzLCAxNDk4MjAsIDE0OTgyNywgMTQ5ODMzLCAxNDk4NDAsIDE0OTg0NywgMTQ5ODU0LCAxNDk4NjAsIAotICAgIDE0OTg2NywgMTQ5ODc0LCAxNDk4ODAsIDE0OTg4NywgMTQ5ODk0LCAxNDk5MDAsIDE0OTkwNywgMTQ5OTE0LCAxNDk5MjAsIAotICAgIDE0OTkyNiwgMTQ5OTMzLCAxNDk5MzksIDE0OTk0NiwgMTQ5OTUzLCAxNDk5NjAsIDE0OTk2NywgMTQ5OTc0LCAxNDk5ODMsIAotICAgIDE0OTk4NywgMTQ5OTkwLCAxNDk5OTQsIDE0OTk5OCwgMTUwMDAyLCAxNTAwMDUsIDE1MDAwOCwgMTUwMDExLCAxNTAwMTQsIAotICAgIDE1MDAxNywgMTUwMDIwLCAxNTAwMjMsIDE1MDAyNiwgMTUwMDI5LCAxNTAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDAzOCwgMTUwMDQ1LCAKLSAgICAxNTAwNTMsIDE1MDA2MSwgMTUwMDY5LCAxNTAwNzYsIDE1MDA4NCwgMTUwMDkyLCAxNTAxMDAsIDE1MDEwNywgMTUwMTE1LCAKLSAgICAxNTAxMjMsIDE1MDEzMCwgMTUwMTM4LCAxNTAxNDYsIDE1MDE1MywgMTUwMTYxLCAxNTAxNjksIDE1MDE3NiwgMTUwMTgzLCAKLSAgICAxNTAxOTEsIDE1MDE5OCwgMTUwMjA2LCAxNTAyMTQsIDE1MDIyMiwgMTUwMjMwLCAxNTAyMzgsIDE1MDI0MiwgMTUwMjQ2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAyNTAsIDE1MDI1NiwgMTUwMjYyLCAxNTAyNjgsIAotICAgIDE1MDI3MiwgMTUwMjc4LCAxNTAyODQsIDE1MDI5MCwgMTUwMjk2LCAxNTAzMDIsIDE1MDMwOCwgMTUwMzE0LCAxNTAzMjAsIAotICAgIDE1MDMyNiwgMTUwMzMyLCAxNTAzMzgsIDE1MDM0NCwgMTUwMzUwLCAxNTAzNTYsIDE1MDM2MiwgMTUwMzY4LCAxNTAzNzQsIAotICAgIDE1MDM4MCwgMTUwMzg2LCAxNTAzOTIsIDE1MDM5OCwgMTUwNDA0LCAxNTA0MTAsIDE1MDQxNiwgMTUwNDIyLCAxNTA0MjgsIAotICAgIDE1MDQzNCwgMTUwNDQwLCAxNTA0NDYsIDE1MDQ1MiwgMTUwNDU4LCAxNTA0NjQsIDE1MDQ3MCwgMTUwNDc2LCAxNTA0ODIsIAotICAgIDE1MDQ4OCwgMTUwNDk0LCAxNTA1MDAsIDAsIDAsIDAsIDAsIDAsIDE1MDUwNiwgMTUwNTE3LCAxNTA1MjgsIDE1MDUzOSwgCi0gICAgMTUwNTUwLCAxNTA1NjEsIDE1MDU3MiwgMTUwNTgzLCAxNTA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYwNSwgCi0gICAgMTUwNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI1NTksIDE1MjU2MywgMTUyNTY3LCAxNTI1NzEsIAorICAgIDAsIDE1MjU3NSwgMTUyNTc5LCAxNTI1ODMsIDE1MjU4NywgMTUyNTkxLCAxNTI1OTUsIDE1MjU5OSwgMTUyNjAzLCAKKyAgICAxNTI2MDcsIDE1MjYxMSwgMTUyNjE1LCAxNTI2MTksIDE1MjYyMywgMTUyNjI3LCAxNTI2MzEsIDE1MjYzNSwgMTUyNjM5LCAKKyAgICAxNTI2NDMsIDE1MjY0NywgMTUyNjUxLCAxNTI2NTUsIDE1MjY1OSwgMTUyNjYzLCAxNTI2NjcsIDE1MjY3MywgMTUyNjc5LCAKKyAgICAxNTI2ODUsIDAsIDE1MjY5MSwgMTUyNjk2LCAwLCAxNTI3MDEsIDAsIDAsIDE1MjcwNiwgMCwgMTUyNzExLCAxNTI3MTYsIAorICAgIDE1MjcyMSwgMTUyNzI2LCAxNTI3MzEsIDE1MjczNiwgMTUyNzQxLCAxNTI3NDYsIDE1Mjc1MSwgMTUyNzU2LCAwLCAKKyAgICAxNTI3NjEsIDE1Mjc2NiwgMTUyNzcxLCAxNTI3NzYsIDAsIDE1Mjc4MSwgMCwgMTUyNzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTI3OTEsIDAsIDAsIDAsIDAsIDE1Mjc5NywgMCwgMTUyODAzLCAwLCAxNTI4MDksIDAsIDE1MjgxNSwgMTUyODIxLCAKKyAgICAxNTI4MjcsIDAsIDE1MjgzMywgMTUyODM5LCAwLCAxNTI4NDUsIDAsIDAsIDE1Mjg1MSwgMCwgMTUyODU3LCAwLCAxNTI4NjMsIAorICAgIDAsIDE1Mjg2OSwgMCwgMTUyODc3LCAwLCAxNTI4ODUsIDE1Mjg5MSwgMCwgMTUyODk3LCAwLCAwLCAxNTI5MDMsIDE1MjkwOSwgCisgICAgMTUyOTE1LCAxNTI5MjEsIDAsIDE1MjkyNywgMTUyOTMzLCAxNTI5MzksIDE1Mjk0NSwgMTUyOTUxLCAxNTI5NTcsIAorICAgIDE1Mjk2MywgMCwgMTUyOTY5LCAxNTI5NzUsIDE1Mjk4MSwgMTUyOTg3LCAwLCAxNTI5OTMsIDE1Mjk5OSwgMTUzMDA1LCAKKyAgICAxNTMwMTEsIDAsIDE1MzAxOSwgMCwgMTUzMDI3LCAxNTMwMzMsIDE1MzAzOSwgMTUzMDQ1LCAxNTMwNTEsIDE1MzA1NywgCisgICAgMTUzMDYzLCAxNTMwNjksIDE1MzA3NSwgMTUzMDgxLCAwLCAxNTMwODcsIDE1MzA5MywgMTUzMDk5LCAxNTMxMDUsIAorICAgIDE1MzExMSwgMTUzMTE3LCAxNTMxMjMsIDE1MzEyOSwgMTUzMTM1LCAxNTMxNDEsIDE1MzE0NywgMTUzMTUzLCAxNTMxNTksIAorICAgIDE1MzE2NSwgMTUzMTcxLCAxNTMxNzcsIDE1MzE4MywgMCwgMCwgMCwgMCwgMCwgMTUzMTg5LCAxNTMxOTQsIDE1MzE5OSwgMCwgCisgICAgMTUzMjA0LCAxNTMyMDksIDE1MzIxNCwgMTUzMjE5LCAxNTMyMjQsIDAsIDE1MzIyOSwgMTUzMjM0LCAxNTMyMzksIAorICAgIDE1MzI0NCwgMTUzMjQ5LCAxNTMyNTQsIDE1MzI1OSwgMTUzMjY0LCAxNTMyNjksIDE1MzI3NCwgMTUzMjc5LCAxNTMyODQsIAorICAgIDE1MzI4OSwgMTUzMjk0LCAxNTMyOTksIDE1MzMwNCwgMTUzMzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMTQsIDE1MzMyNCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzMyLCAxNTMzMzksIDE1MzM0NiwgMTUzMzUzLCAKKyAgICAxNTMzNTksIDE1MzM2NiwgMTUzMzczLCAxNTMzNzksIDE1MzM4NiwgMTUzMzkzLCAxNTM0MDAsIDE1MzQwOCwgMTUzNDE2LCAKKyAgICAxNTM0MjQsIDE1MzQzMiwgMTUzNDQwLCAxNTM0NDgsIDE1MzQ1NSwgMTUzNDYyLCAxNTM0NjksIDE1MzQ3NywgMTUzNDg1LCAKKyAgICAxNTM0OTMsIDE1MzUwMSwgMTUzNTA5LCAxNTM1MTcsIDE1MzUyNCwgMTUzNTMxLCAxNTM1MzgsIDE1MzU0NiwgMTUzNTU0LCAKKyAgICAxNTM1NjIsIDE1MzU3MCwgMTUzNTc4LCAxNTM1ODYsIDE1MzU5MSwgMTUzNTk2LCAxNTM2MDEsIDE1MzYwNiwgMTUzNjExLCAKKyAgICAxNTM2MTYsIDE1MzYyMSwgMTUzNjI2LCAxNTM2MzEsIDAsIDAsIDAsIDAsIDE1MzYzNiwgMTUzNjQyLCAxNTM2NDYsIAorICAgIDE1MzY1MCwgMTUzNjU0LCAxNTM2NTgsIDE1MzY2MiwgMTUzNjY2LCAxNTM2NzAsIDE1MzY3NCwgMTUzNjc4LCAxNTM2ODIsIAorICAgIDE1MzY4NiwgMTUzNjkwLCAxNTM2OTQsIDE1MzY5OCwgMTUzNzAyLCAxNTM3MDYsIDE1MzcxMCwgMTUzNzE0LCAxNTM3MTgsIAorICAgIDE1MzcyMiwgMTUzNzI2LCAxNTM3MzAsIDE1MzczNCwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAxNTM3NTQsIAorICAgIDE1Mzc1OCwgMTUzNzYyLCAxNTM3NjYsIDE1Mzc3MCwgMTUzNzc0LCAxNTM3NzgsIDE1Mzc4MiwgMTUzNzg2LCAxNTM3OTAsIAorICAgIDE1Mzc5NCwgMTUzNzk4LCAxNTM4MDIsIDE1MzgwNiwgMTUzODEwLCAxNTM4MTQsIDE1MzgxOCwgMTUzODIyLCAxNTM4MjYsIAorICAgIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MywgMTUzODQ3LCAxNTM4NTEsIDE1Mzg1NSwgMTUzODU5LCAxNTM4NjMsIAorICAgIDE1Mzg2NywgMTUzODcxLCAxNTM4NzUsIDE1Mzg3OSwgMTUzODgzLCAxNTM4ODcsIDE1Mzg5MSwgMTUzODk1LCAxNTM4OTksIAorICAgIDE1MzkwMywgMTUzOTA3LCAxNTM5MTEsIDE1MzkxNSwgMTUzOTE5LCAxNTM5MjMsIDE1MzkyNywgMTUzOTMxLCAxNTM5MzUsIAorICAgIDE1MzkzOSwgMTUzOTQzLCAxNTM5NDcsIDE1Mzk1MSwgMTUzOTU1LCAxNTM5NTksIDE1Mzk2MywgMTUzOTY3LCAxNTM5NzEsIAorICAgIDE1Mzk3NSwgMTUzOTc5LCAxNTM5ODMsIDE1Mzk4NywgMTUzOTkxLCAxNTM5OTUsIDE1Mzk5OSwgMTU0MDAzLCAxNTQwMDcsIAorICAgIDE1NDAxMSwgMTU0MDE1LCAxNTQwMTksIDE1NDAyMywgMTU0MDI3LCAxNTQwMzEsIDE1NDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU0MDM5LCAxNTQwNDUsIDE1NDA1NCwgMTU0MDYyLCAxNTQwNzAsIDE1NDA3OSwgMTU0MDg4LCAKKyAgICAxNTQwOTcsIDE1NDEwNiwgMTU0MTE1LCAxNTQxMjQsIDE1NDEzMywgMTU0MTQyLCAxNTQxNTEsIDE1NDE2MCwgMCwgMCwgCisgICAgMTU0MTY5LCAxNTQxNzgsIDE1NDE4NiwgMTU0MTk0LCAxNTQyMDMsIDE1NDIxMiwgMTU0MjIxLCAxNTQyMzAsIDE1NDIzOSwgCisgICAgMTU0MjQ4LCAxNTQyNTcsIDE1NDI2NiwgMTU0Mjc1LCAxNTQyODQsIDE1NDI5MywgMCwgMTU0MzAxLCAxNTQzMTAsIAorICAgIDE1NDMxOCwgMTU0MzI2LCAxNTQzMzUsIDE1NDM0NCwgMTU0MzUzLCAxNTQzNjIsIDE1NDM3MSwgMTU0MzgwLCAxNTQzODksIAorICAgIDE1NDM5OCwgMTU0NDA3LCAxNTQ0MTYsIDE1NDQyNSwgMCwgMTU0NDMyLCAxNTQ0NDEsIDE1NDQ0OSwgMTU0NDU3LCAKKyAgICAxNTQ0NjYsIDE1NDQ3NSwgMTU0NDg0LCAxNTQ0OTMsIDE1NDUwMiwgMTU0NTExLCAxNTQ1MjAsIDE1NDUyOSwgMTU0NTM4LCAKKyAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTYzLCAxNTQ1NjksIDE1NDU3NSwgMTU0NTgxLCAxNTQ1ODcsIDE1NDU5MywgMTU0NTk5LCAKKyAgICAxNTQ2MDUsIDE1NDYxMSwgMTU0NjE3LCAxNTQ2MjMsIDE1NDYyOSwgMTU0NjM1LCAxNTQ2NDEsIDE1NDY0NywgMTU0NjUzLCAKKyAgICAxNTQ2NTksIDE1NDY2NSwgMTU0NjcxLCAxNTQ2NzcsIDE1NDY4MywgMTU0Njg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNTQ2OTUsIDE1NDcwMiwgMTU0NzA3LCAxNTQ3MTEsIDE1NDcxNSwgMTU0NzE5LCAxNTQ3MjQsIDE1NDcyOSwgCisgICAgMTU0NzM0LCAxNTQ3MzksIDE1NDc0NCwgMTU0NzQ5LCAxNTQ3NTYsIDAsIDAsIDAsIDE1NDc2NCwgMTU0NzY5LCAxNTQ3NzUsIAorICAgIDE1NDc4MSwgMTU0Nzg3LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA0LCAxNTQ4MTAsIDE1NDgxNSwgMTU0ODIxLCAxNTQ4MjcsIAorICAgIDE1NDgzMiwgMTU0ODM4LCAxNTQ4NDQsIDE1NDg0OSwgMTU0ODU1LCAxNTQ4NjEsIDE1NDg2NiwgMTU0ODcyLCAxNTQ4NzgsIAorICAgIDE1NDg4MywgMTU0ODg5LCAxNTQ4OTUsIDE1NDkwMSwgMTU0OTA3LCAxNTQ5MTMsIDE1NDkyNCwgMTU0OTMxLCAxNTQ5MzcsIAorICAgIDE1NDk0MCwgMCwgMTU0OTQzLCAxNTQ5NDgsIDE1NDk1NCwgMTU0OTYwLCAxNTQ5NjYsIDE1NDk3MSwgMTU0OTc3LCAKKyAgICAxNTQ5ODMsIDE1NDk4OSwgMTU0OTk0LCAxNTUwMDAsIDE1NTAwNiwgMTU1MDExLCAxNTUwMTcsIDE1NTAyMywgMTU1MDI4LCAKKyAgICAxNTUwMzQsIDE1NTA0MCwgMTU1MDQ1LCAxNTUwNTEsIDE1NTA1NywgMTU1MDYyLCAxNTUwNjgsIDE1NTA3NCwgMTU1MDgwLCAKKyAgICAxNTUwODYsIDE1NTA5MiwgMTU1MDk1LCAxNTUwOTgsIDE1NTEwMSwgMTU1MTA0LCAxNTUxMDcsIDE1NTExMCwgMTU1MTE2LCAKKyAgICAxNTUxMjMsIDE1NTEzMCwgMTU1MTM3LCAxNTUxNDMsIDE1NTE1MCwgMTU1MTU3LCAxNTUxNjQsIDE1NTE3MCwgMTU1MTc3LCAKKyAgICAxNTUxODQsIDE1NTE5MCwgMTU1MTk3LCAxNTUyMDQsIDE1NTIxMCwgMTU1MjE3LCAxNTUyMjQsIDE1NTIzMCwgMTU1MjM3LCAKKyAgICAxNTUyNDQsIDE1NTI1MCwgMTU1MjU3LCAxNTUyNjQsIDE1NTI3MSwgMTU1Mjc4LCAxNTUyODUsIDE1NTI5MCwgMCwgMCwgMCwgCisgICAgMCwgMTU1Mjk1LCAxNTUzMDEsIDE1NTMwOCwgMTU1MzE1LCAxNTUzMjIsIDE1NTMyOCwgMTU1MzM1LCAxNTUzNDIsIAorICAgIDE1NTM0OSwgMTU1MzU1LCAxNTUzNjIsIDE1NTM2OSwgMTU1Mzc1LCAxNTUzODIsIDE1NTM4OSwgMTU1Mzk1LCAxNTU0MDIsIAorICAgIDE1NTQwOSwgMTU1NDE1LCAxNTU0MjIsIDE1NTQyOSwgMTU1NDM1LCAxNTU0NDIsIDE1NTQ0OSwgMTU1NDU2LCAxNTU0NjMsIAorICAgIDE1NTQ3MCwgMTU1NDc5LCAxNTU0ODMsIDE1NTQ4NiwgMTU1NDkwLCAxNTU0OTQsIDE1NTQ5OCwgMTU1NTAxLCAxNTU1MDQsIAorICAgIDE1NTUwNywgMTU1NTEwLCAxNTU1MTMsIDE1NTUxNiwgMTU1NTE5LCAxNTU1MjIsIDE1NTUyNSwgMTU1NTMxLCAxNTU1MzQsIAorICAgIDE1NTUzOCwgMTU1NTQzLCAxNTU1NDcsIDE1NTU1MiwgMTU1NTU3LCAxNTU1NjMsIDE1NTU2OSwgMTU1NTc1LCAxNTU1ODAsIAorICAgIDE1NTU4OCwgMTU1NTk0LCAxNTU1OTcsIDE1NTYwMCwgMTU1NjAzLCAxNTU2MDYsIDE1NTYwOSwgMTU1NjEyLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTU2MTUsIDE1NTYyMiwgMTU1NjMwLCAxNTU2MzgsIDE1NTY0NiwgMTU1NjUzLCAxNTU2NjEsIAorICAgIDE1NTY2OSwgMTU1Njc3LCAxNTU2ODQsIDE1NTY5MiwgMTU1NzAwLCAxNTU3MDcsIDE1NTcxNSwgMTU1NzIzLCAxNTU3MzAsIAorICAgIDE1NTczOCwgMTU1NzQ2LCAxNTU3NTMsIDE1NTc2MSwgMTU1NzY5LCAxNTU3NzYsIDE1NTc4NCwgMTU1NzkyLCAxNTU4MDAsIAorICAgIDE1NTgwOCwgMTU1ODE2LCAxNTU4MjAsIDE1NTgyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTU1ODI4LCAxNTU4MzQsIDE1NTg0MCwgMTU1ODQ2LCAxNTU4NTAsIDE1NTg1NiwgMTU1ODYyLCAxNTU4NjgsIDE1NTg3NCwgCisgICAgMTU1ODgwLCAxNTU4ODYsIDE1NTg5MiwgMTU1ODk4LCAxNTU5MDQsIDE1NTkxMCwgMTU1OTE2LCAxNTU5MjIsIDE1NTkyOCwgCisgICAgMTU1OTM0LCAxNTU5NDAsIDE1NTk0NiwgMTU1OTUyLCAxNTU5NTgsIDE1NTk2NCwgMTU1OTcwLCAxNTU5NzYsIDE1NTk4MiwgCisgICAgMTU1OTg4LCAxNTU5OTQsIDE1NjAwMCwgMTU2MDA2LCAxNTYwMTIsIDE1NjAxOCwgMTU2MDI0LCAxNTYwMzAsIDE1NjAzNiwgCisgICAgMTU2MDQyLCAxNTYwNDgsIDE1NjA1NCwgMTU2MDYwLCAxNTYwNjYsIDE1NjA3MiwgMTU2MDc4LCAxNTYwODQsIDAsIDAsIDAsIAorICAgIDAsIDE1NjA5MCwgMTU2MTAxLCAxNTYxMTIsIDE1NjEyMywgMTU2MTM0LCAxNTYxNDUsIDE1NjE1NiwgMTU2MTY3LCAKKyAgICAxNTYxNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjE4OSwgMTU2MTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTMsIDE1MDYxNSwgMTUwNjE3LCAxNTA2MjEsIDE1MDYyNiwgMTUwNjMxLCAKLSAgICAxNTA2MzMsIDE1MDYzOSwgMTUwNjQ0LCAxNTA2NDYsIDE1MDY1MiwgMTUwNjU2LCAxNTA2NTgsIDE1MDY2MiwgMTUwNjY4LCAKLSAgICAxNTA2NzQsIDE1MDY4MCwgMTUwNjg1LCAxNTA2OTAsIDE1MDY5NywgMTUwNzA0LCAxNTA3MTEsIDE1MDcxNiwgMTUwNzIzLCAKLSAgICAxNTA3MzAsIDE1MDczNywgMTUwNzQxLCAxNTA3NDgsIDE1MDc1NywgMTUwNzY2LCAxNTA3NzMsIDE1MDc3OCwgMTUwNzgyLCAKLSAgICAxNTA3ODYsIDE1MDc4OCwgMTUwNzkxLCAxNTA3OTQsIDE1MDgwMSwgMTUwODA4LCAxNTA4MTgsIDE1MDgyMywgMTUwODI4LCAKLSAgICAxNTA4MzMsIDE1MDgzOCwgMTUwODQwLCAxNTA4NDYsIDE1MDg1MCwgMTUwODUyLCAxNTA4NTQsIDE1MDg1NiwgMTUwODU4LCAKLSAgICAxNTA4NjIsIDE1MDg2NiwgMTUwODcwLCAxNTA4NzIsIDE1MDg3NiwgMTUwODc4LCAxNTA4ODIsIDE1MDg4NCwgMTUwODg2LCAKLSAgICAxNTA4ODgsIDE1MDg5MCwgMTUwODk1LCAxNTA5MDAsIDE1MDkwMiwgMTUwOTA4LCAxNTA5MTIsIDE1MDkxNiwgMTUwOTI0LCAKLSAgICAxNTA5MjYsIDE1MDkyOCwgMTUwOTMwLCAxNTA5MzIsIDE1MDkzNCwgMTUwOTM2LCAxNTA5MzgsIDE1MDk0MCwgMTUwOTQyLCAKLSAgICAxNTA5NDQsIDE1MDk0OCwgMTUwOTUyLCAxNTA5NTQsIDE1MDk1NiwgMTUwOTU4LCAxNTA5NjAsIDE1MDk2MiwgMTUwOTY3LCAKLSAgICAxNTA5NzMsIDE1MDk3NywgMTUwOTgxLCAxNTA5ODUsIDE1MDk4OSwgMTUwOTk0LCAxNTA5OTgsIDE1MTAwMCwgMTUxMDAyLCAKLSAgICAxNTEwMDYsIDE1MTAxMiwgMTUxMDE0LCAxNTEwMTYsIDE1MTAxOCwgMTUxMDIyLCAxNTEwMzEsIDE1MTAzNywgMTUxMDQxLCAKLSAgICAxNTEwNDUsIDE1MTA0NywgMTUxMDQ5LCAxNTEwNTIsIDE1MTA1NCwgMTUxMDU2LCAxNTEwNTgsIDE1MTA2MiwgMTUxMDY0LCAKLSAgICAxNTEwNjgsIDE1MTA3MywgMTUxMDc1LCAxNTEwODAsIDE1MTA4NiwgMTUxMDkzLCAxNTEwOTcsIDE1MTEwMSwgMTUxMTA1LCAKLSAgICAxNTExMDksIDE1MTExNSwgMTUxMTE5LCAxNTExMjcsIDE1MTEzNCwgMTUxMTM2LCAxNTExMzgsIDE1MTE0MiwgMTUxMTQ2LCAKLSAgICAxNTExNDgsIDE1MTE1MiwgMTUxMTU2LCAxNTExNTgsIDE1MTE2MiwgMTUxMTY0LCAxNTExNjgsIDE1MTE3MiwgMTUxMTc2LCAKLSAgICAxNTExODAsIDE1MTE4NCwgMTUxMTg4LCAxNTExOTIsIDE1MTE5NiwgMTUxMjAyLCAxNTEyMDYsIDE1MTIxMCwgMTUxMjIxLCAKLSAgICAxNTEyMjYsIDE1MTIzMCwgMTUxMjM0LCAxNTEyNDAsIDE1MTI0NCwgMTUxMjQ4LCAxNTEyNTIsIDE1MTI1OSwgMTUxMjY2LCAKLSAgICAxNTEyNzAsIDE1MTI3NCwgMTUxMjc4LCAxNTEyODIsIDE1MTI4NiwgMTUxMjkzLCAxNTEyOTUsIDE1MTI5OSwgMTUxMzAxLCAKLSAgICAxNTEzMDMsIDE1MTMwNywgMTUxMzExLCAxNTEzMTUsIDE1MTMxNywgMTUxMzIxLCAxNTEzMjUsIDE1MTMyOSwgMTUxMzMzLCAKLSAgICAxNTEzMzcsIDE1MTMzOSwgMTUxMzQzLCAxNTEzNDUsIDE1MTM1MSwgMTUxMzU0LCAxNTEzNTksIDE1MTM2MSwgMTUxMzYzLCAKLSAgICAxNTEzNjYsIDE1MTM2OCwgMTUxMzcwLCAxNTEzNzMsIDE1MTM4MCwgMTUxMzg3LCAxNTEzOTQsIDE1MTM5OSwgMTUxNDAzLCAKLSAgICAxNTE0MDUsIDE1MTQwNywgMTUxNDA5LCAxNTE0MTMsIDE1MTQxNSwgMTUxNDE5LCAxNTE0MjMsIDE1MTQyNywgMTUxNDI5LCAKLSAgICAxNTE0MzMsIDE1MTQzNSwgMTUxNDM5LCAxNTE0NDMsIDE1MTQ1MCwgMTUxNDUyLCAxNTE0NjEsIDE1MTQ3MCwgMTUxNDc5LCAKLSAgICAxNTE0ODUsIDE1MTQ4NywgMTUxNDkyLCAxNTE0OTYsIDE1MTUwMCwgMTUxNTAyLCAxNTE1MDgsIDE1MTUxMiwgMTUxNTE0LCAKLSAgICAxNTE1MTgsIDE1MTUyMiwgMTUxNTI0LCAxNTE1MjgsIDE1MTUzMywgMTUxNTM3LCAxNTE1NDMsIDE1MTU0OSwgMTUxNTUxLCAKLSAgICAxNTE1NTMsIDE1MTU1OSwgMTUxNTYxLCAxNTE1NjUsIDE1MTU2OSwgMTUxNTcxLCAxNTE1NzUsIDE1MTU3NywgMTUxNTgxLCAKLSAgICAxNTE1ODUsIDE1MTU4OSwgMTUxNTkyLCAxNTE1OTUsIDE1MTYwMCwgMTUxNjA1LCAxNTE2MDcsIDE1MTYxMCwgMTUxNjEyLCAKLSAgICAxNTE2MTksIDE1MTYyMywgMTUxNjI1LCAxNTE2MzIsIDE1MTYzOSwgMTUxNjQ2LCAxNTE2NTMsIDE1MTY2MCwgMTUxNjYyLCAKLSAgICAxNTE2NjQsIDE1MTY2NiwgMTUxNjcwLCAxNTE2NzIsIDE1MTY3NCwgMTUxNjc2LCAxNTE2NzgsIDE1MTY4MCwgMTUxNjgyLCAKLSAgICAxNTE2ODQsIDE1MTY4NiwgMTUxNjg4LCAxNTE2OTAsIDE1MTY5MiwgMTUxNjk0LCAxNTE2OTYsIDE1MTY5OCwgMTUxNzAwLCAKLSAgICAxNTE3MDIsIDE1MTcwNCwgMTUxNzA2LCAxNTE3MDgsIDE1MTcxMCwgMTUxNzEyLCAxNTE3MTQsIDE1MTcxOCwgMTUxNzIwLCAKLSAgICAxNTE3MjIsIDE1MTcyNCwgMTUxNzI4LCAxNTE3MzAsIDE1MTczNCwgMTUxNzM2LCAxNTE3MzgsIDE1MTc0MiwgMTUxNzQ2LCAKLSAgICAxNTE3NTIsIDE1MTc1NCwgMTUxNzU2LCAxNTE3NTgsIDE1MTc2MCwgMTUxNzY0LCAxNTE3NjgsIDE1MTc3MCwgMTUxNzc0LCAKLSAgICAxNTE3NzgsIDE1MTc4MiwgMTUxNzg2LCAxNTE3OTAsIDE1MTc5NCwgMTUxNzk4LCAxNTE4MDIsIDE1MTgwNiwgMTUxODEwLCAKLSAgICAxNTE4MTQsIDE1MTgxOCwgMTUxODIyLCAxNTE4MjYsIDE1MTgzMCwgMTUxODM0LCAxNTE4MzgsIDE1MTg0MiwgMTUxODQ0LCAKLSAgICAxNTE4NDYsIDE1MTg0OCwgMTUxODUwLCAxNTE4NTIsIDE1MTg1NCwgMTUxODU2LCAxNTE4NjQsIDE1MTg3MiwgMTUxODgwLCAKLSAgICAxNTE4ODgsIDE1MTg5MywgMTUxODk4LCAxNTE5MDMsIDE1MTkwNywgMTUxOTExLCAxNTE5MTYsIDE1MTkyMCwgMTUxOTIyLCAKLSAgICAxNTE5MjYsIDE1MTkyOCwgMTUxOTMwLCAxNTE5MzIsIDE1MTkzNCwgMTUxOTM2LCAxNTE5MzgsIDE1MTk0MCwgMTUxOTQ0LCAKLSAgICAxNTE5NDYsIDE1MTk0OCwgMTUxOTUwLCAxNTE5NTQsIDE1MTk1OCwgMTUxOTYyLCAxNTE5NjYsIDE1MTk3MCwgMTUxOTcyLCAKLSAgICAxNTE5NzgsIDE1MTk4NCwgMTUxOTg2LCAxNTE5ODgsIDE1MTk5MCwgMTUxOTkyLCAxNTE5OTQsIDE1MjAwMywgMTUyMDEwLCAKLSAgICAxNTIwMTcsIDE1MjAyMSwgMTUyMDI4LCAxNTIwMzMsIDE1MjA0MCwgMTUyMDQ5LCAxNTIwNTQsIDE1MjA1OCwgMTUyMDYyLCAKLSAgICAxNTIwNjQsIDE1MjA2OCwgMTUyMDcwLCAxNTIwNzQsIDE1MjA3OCwgMTUyMDgwLCAxNTIwODQsIDE1MjA4OCwgMTUyMDkyLCAKLSAgICAxNTIwOTQsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDQsIDE1MjEwNiwgMTUyMTA4LCAxNTIxMTIsIDE1MjExNiwgMTUyMTE4LCAKLSAgICAxNTIxMjIsIDE1MjEyNCwgMTUyMTI2LCAxNTIxMjksIDE1MjEzMywgMTUyMTM1LCAxNTIxMzksIDE1MjE0MSwgMTUyMTQzLCAKLSAgICAxNTIxNDgsIDE1MjE1MCwgMTUyMTU0LCAxNTIxNTgsIDE1MjE2MSwgMTUyMTY1LCAxNTIxNjksIDE1MjE3MywgMTUyMTc3LCAKLSAgICAxNTIxODEsIDE1MjE4NSwgMTUyMTg5LCAxNTIxOTQsIDE1MjE5OCwgMTUyMjAyLCAxNTIyMTEsIDE1MjIxNiwgMTUyMjE5LCAKLSAgICAxNTIyMjEsIDE1MjIyNCwgMTUyMjI3LCAxNTIyMzIsIDE1MjIzNCwgMTUyMjM3LCAxNTIyNDIsIDE1MjI0NiwgMTUyMjQ5LCAKLSAgICAxNTIyNTMsIDE1MjI1NywgMTUyMjYwLCAxNTIyNjUsIDE1MjI2OSwgMTUyMjczLCAxNTIyNzcsIDE1MjI4MSwgMTUyMjg3LCAKLSAgICAxNTIyOTMsIDE1MjI5OSwgMTUyMzA1LCAxNTIzMTAsIDE1MjMyMCwgMTUyMzIyLCAxNTIzMjYsIDE1MjMyOCwgMTUyMzMwLCAKLSAgICAxNTIzMzQsIDE1MjMzOCwgMTUyMzQwLCAxNTIzNDQsIDE1MjM0OSwgMTUyMzU0LCAxNTIzNjAsIDE1MjM2MiwgMTUyMzY2LCAKLSAgICAxNTIzNzAsIDE1MjM3NiwgMTUyMzgyLCAxNTIzODYsIDE1MjM4OCwgMTUyMzkwLCAxNTIzOTQsIDE1MjM5NiwgMTUyNDAwLCAKLSAgICAxNTI0MDQsIDE1MjQwOCwgMTUyNDEwLCAxNTI0MTIsIDE1MjQxOSwgMTUyNDIzLCAxNTI0MjYsIDE1MjQzMCwgMTUyNDM0LCAKLSAgICAxNTI0MzgsIDE1MjQ0MCwgMTUyNDQ0LCAxNTI0NDYsIDE1MjQ0OCwgMTUyNDUyLCAxNTI0NTQsIDE1MjQ1OCwgMTUyNDYyLCAKLSAgICAxNTI0NjgsIDE1MjQ3MiwgMTUyNDc2LCAxNTI0ODAsIDE1MjQ4MiwgMTUyNDg1LCAxNTI0ODksIDE1MjQ5NSwgMTUyNTA0LCAKLSAgICAxNTI1MTMsIDE1MjUyMSwgMTUyNTI5LCAxNTI1MzEsIDE1MjUzNSwgMTUyNTM3LCAxNTI1NDEsIDE1MjU1MiwgMTUyNTU2LCAKLSAgICAxNTI1NjIsIDE1MjU2OCwgMTUyNTczLCAxNTI1NzUsIDE1MjU4MCwgMTUyNTg0LCAxNTI1ODYsIDE1MjU4OCwgMTUyNTkwLCAKLSAgICAxNTI1OTQsIDE1MjU5OCwgMTUyNjAyLCAxNTI2MDcsIDE1MjYxNywgMTUyNjMyLCAxNTI2NDIsIDE1MjY1MiwgMTUyNjU2LCAKLSAgICAxNTI2NjAsIDE1MjY2NiwgMTUyNjY4LCAxNTI2NzYsIDE1MjY4NCwgMTUyNjg2LCAxNTI2OTAsIDE1MjY5NiwgMTUyNzAyLCAKLSAgICAxNTI3MDksIDE1MjcxNiwgMTUyNzE4LCAxNTI3MjAsIDE1MjcyMywgMTUyNzI1LCAxNTI3MzEsIDE1MjczMywgMTUyNzM2LCAKLSAgICAxNTI3NDAsIDE1Mjc0NiwgMTUyNzUyLCAxNTI3NjMsIDE1Mjc2OSwgMTUyNzc1LCAxNTI3ODMsIDE1Mjc4NywgMTUyNzk1LCAKLSAgICAxNTI4MDMsIDE1MjgwOSwgMTUyODE1LCAxNTI4MjIsIDE1MjgyNCwgMTUyODI4LCAxNTI4MzAsIDE1MjgzMiwgMTUyODM3LCAKLSAgICAxNTI4MzksIDE1Mjg0MSwgMTUyODQzLCAxNTI4NDUsIDE1Mjg0OSwgMTUyODU5LCAxNTI4NjUsIDE1Mjg2OSwgMTUyODczLCAKLSAgICAxNTI4NzcsIDE1Mjg4MywgMTUyODg5LCAxNTI4OTUsIDE1MjkwMSwgMTUyOTA2LCAxNTI5MTEsIDE1MjkxNywgMTUyOTIzLCAKLSAgICAxNTI5MzAsIDE1MjkzNywgMTUyOTQ1LCAxNTI5NTMsIDE1Mjk1OCwgMTUyOTY2LCAxNTI5NzAsIDE1Mjk3OSwgMTUyOTg4LCAKLSAgICAxNTI5OTQsIDE1Mjk5OCwgMTUzMDAyLCAxNTMwMDYsIDE1MzAwOSwgMTUzMDE0LCAxNTMwMTYsIDE1MzAxOCwgMTUzMDIwLCAKLSAgICAxNTMwMjcsIDE1MzAzMiwgMTUzMDM5LCAxNTMwNDYsIDE1MzA1MywgMTUzMDYxLCAxNTMwNjksIDE1MzA3NywgMTUzMDg1LCAKLSAgICAxNTMwOTMsIDE1MzEwMSwgMTUzMTA5LCAxNTMxMTcsIDE1MzEyNSwgMTUzMTMxLCAxNTMxMzcsIDE1MzE0MywgMTUzMTQ5LCAKLSAgICAxNTMxNTUsIDE1MzE2MSwgMTUzMTY3LCAxNTMxNzMsIDE1MzE3OSwgMTUzMTg1LCAxNTMxOTEsIDE1MzE5NywgMTUzMjAwLCAKLSAgICAxNTMyMDksIDE1MzIxOCwgMTUzMjIwLCAxNTMyMjcsIDE1MzIzMSwgMTUzMjMzLCAxNTMyMzUsIDE1MzIzOSwgMTUzMjQ1LCAKLSAgICAxNTMyNDksIDE1MzI1MSwgMTUzMjYxLCAxNTMyNjcsIDE1MzI3MSwgMTUzMjczLCAxNTMyNzcsIDAsIDE1MzI3OSwgCi0gICAgMTUzMjg2LCAxNTMyOTMsIDE1MzMwMCwgMTUzMzA1LCAxNTMzMTAsIDE1MzMxOSwgMTUzMzI1LCAxNTMzMzAsIDE1MzMzNCwgCi0gICAgMTUzMzM5LCAxNTMzNDMsIDE1MzM1MCwgMTUzMzU0LCAxNTMzNTcsIDE1MzM2MiwgMTUzMzY5LCAxNTMzNzYsIDE1MzM4MSwgCi0gICAgMTUzMzg2LCAxNTMzOTEsIDE1MzM5OCwgMTUzNDA3LCAxNTM0MTgsIDE1MzQyNCwgMTUzNDMwLCAxNTM0MzYsIDE1MzQ0NiwgCi0gICAgMTUzNDYxLCAxNTM0NzAsIDE1MzQ3OCwgMTUzNDg2LCAxNTM0OTQsIDE1MzUwMiwgMTUzNTEwLCAxNTM1MTgsIDE1MzUyNiwgCi0gICAgMTUzNTM0LCAxNTM1NDIsIDE1MzU1MCwgMTUzNTU4LCAwLCAxNTM1NjYsIDE1MzU3MCwgMTUzNTc1LCAxNTM1ODAsIAotICAgIDE1MzU4MiwgMTUzNTg2LCAxNTM1OTUsIDE1MzYwNCwgMTUzNjEyLCAxNTM2MTYsIDE1MzYyMCwgMTUzNjI1LCAxNTM2MzAsIAotICAgIDE1MzYzNSwgMTUzNjM3LCAxNTM2NDIsIDE1MzY0NiwgMTUzNjQ4LCAxNTM2NTIsIDE1MzY1NiwgMTUzNjYyLCAxNTM2NjcsIAotICAgIDE1MzY3NSwgMTUzNjgwLCAxNTM2ODUsIDE1MzY5MCwgMTUzNjk3LCAxNTM3MDAsIDE1MzcwMiwgMTUzNzA1LCAxNTM3MTAsIAotICAgIDE1MzcxNiwgMTUzNzIwLCAxNTM3MjQsIDE1MzczMCwgMTUzNzM2LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIAotICAgIDE1Mzc1NCwgMTUzNzU4LCAxNTM3NjAsIDE1Mzc2MiwgMTUzNzY0LCAxNTM3NjYsIDE1Mzc3MiwgMTUzNzc4LCAxNTM3ODIsIAotICAgIDE1Mzc4NCwgMTUzNzg2LCAxNTM3ODgsIDE1Mzc5NywgMTUzODAxLCAxNTM4MDgsIDE1MzgxNSwgMTUzODE3LCAxNTM4MjAsIAotICAgIDE1MzgyNCwgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQwLCAxNTM4NDgsIDE1Mzg1MiwgMTUzODU2LCAxNTM4NjEsIAotICAgIDE1Mzg2NiwgMTUzODcxLCAxNTM4NzYsIDE1Mzg4MSwgMTUzODg2LCAxNTM4OTEsIDE1Mzg5NiwgMTUzOTAxLCAxNTM5MDYsIAotICAgIDE1MzkxMCwgMTUzOTE2LCAxNTM5MjAsIDE1MzkyNiwgMTUzOTMxLCAxNTM5MzgsIDE1Mzk0NCwgMTUzOTUyLCAxNTM5NTYsIAotICAgIDE1Mzk2MywgMTUzOTY3LCAxNTM5NzEsIDE1Mzk3NSwgMTUzOTgwLCAxNTM5ODUsIDE1Mzk4NywgMTUzOTkxLCAxNTQwMDAsIAotICAgIDE1NDAwOCwgMTU0MDE2LCAxNTQwMjksIDE1NDA0MiwgMTU0MDU1LCAxNTQwNjIsIDE1NDA2OSwgMTU0MDczLCAxNTQwODIsIAotICAgIDE1NDA5MCwgMTU0MDk0LCAxNTQxMDMsIDE1NDExMCwgMTU0MTE0LCAxNTQxMTgsIDE1NDEyMiwgMTU0MTI2LCAxNTQxMzMsIAotICAgIDE1NDEzNywgMTU0MTQxLCAxNTQxNDUsIDE1NDE0OSwgMTU0MTU2LCAxNTQxNjUsIDE1NDE3NCwgMTU0MTgxLCAxNTQxOTMsIAotICAgIDE1NDIwNSwgMTU0MjA5LCAxNTQyMTMsIDE1NDIxNywgMTU0MjIxLCAxNTQyMjUsIDE1NDIyOSwgMTU0MjM3LCAxNTQyNDUsIAotICAgIDE1NDI1MywgMTU0MjU3LCAxNTQyNjEsIDE1NDI2NSwgMTU0MjY5LCAxNTQyNzMsIDE1NDI3NywgMTU0MjgzLCAxNTQyODksIAotICAgIDE1NDI5MywgMTU0MzA0LCAxNTQzMTIsIDE1NDMxNiwgMTU0MzIwLCAxNTQzMjQsIDE1NDMyOCwgMTU0MzM0LCAxNTQzNDEsIAotICAgIDE1NDM1MiwgMTU0MzYyLCAxNTQzNzIsIDE1NDM4MywgMTU0MzkyLCAxNTQ0MDMsIDE1NDQwOSwgMTU0NDE1LCAxNTQ0MjEsIAotICAgIDE1NDQyNywgMTU0NDMzLCAxNTQ0MzcsIDE1NDQ0NCwgMTU0NDUzLCAxNTQ0NjAsIDE1NDQ2NiwgMTU0NDcwLCAxNTQ0NzQsIAotICAgIDE1NDQ3OCwgMTU0NDg3LCAxNTQ0OTksIDE1NDUwMywgMTU0NTEwLCAxNTQ1MTcsIDE1NDUyNCwgMTU0NTMyLCAxNTQ1MzksIAotICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjYsIDE1NDU3NSwgMTU0NTg1LCAxNTQ1OTQsIDE1NDYwNCwgMTU0NjEzLCAxNTQ2MjMsIAotICAgIDE1NDYzMywgMTU0NjQ0LCAxNTQ2NTQsIDE1NDY2NSwgMTU0NjcyLCAxNTQ2ODAsIDE1NDY4NywgMTU0Njk1LCAxNTQ3MDMsIAotICAgIDE1NDcxMiwgMTU0NzIwLCAxNTQ3MjksIDE1NDczNiwgMTU0NzQ4LCAxNTQ3NTUsIDE1NDc2NywgMTU0NzcwLCAxNTQ3NzMsIAotICAgIDE1NDc3NiwgMTU0Nzc5LCAxNTQ3ODUsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDUsIDE1NDgxMCwgMTU0ODE2LCAxNTQ4MjgsIAotICAgIDE1NDgzOCwgMTU0ODQ5LCAxNTQ4NTQsIDE1NDg1OSwgMTU0ODY1LCAxNTQ4NzAsIDE1NDg3NywgMTU0ODgxLCAxNTQ4ODcsIAotICAgIDE1NDg4OSwgMTU0ODkxLCAxNTQ4OTUsIDE1NDg5OSwgMTU0OTAzLCAxNTQ5MTIsIDE1NDkxNCwgMTU0OTE2LCAxNTQ5MTksIAotICAgIDE1NDkyMSwgMTU0OTIzLCAxNTQ5MjcsIDE1NDkyOSwgMTU0OTMzLCAxNTQ5MzUsIDE1NDkzOSwgMTU0OTQxLCAxNTQ5NDMsIAotICAgIDE1NDk0NywgMTU0OTUxLCAxNTQ5NTcsIDE1NDk1OSwgMTU0OTYzLCAxNTQ5NjUsIDE1NDk2OSwgMTU0OTczLCAxNTQ5NzcsIAotICAgIDE1NDk4MSwgMTU0OTgzLCAxNTQ5ODUsIDE1NDk4OSwgMTU0OTkzLCAxNTQ5OTcsIDE1NTAwMSwgMTU1MDAzLCAxNTUwMDUsIAotICAgIDE1NTAwNywgMTU1MDEzLCAxNTUwMTgsIDE1NTAyMSwgMTU1MDI5LCAxNTUwMzcsIDE1NTAzOSwgMTU1MDQ0LCAxNTUwNDcsIAotICAgIDE1NTA1MiwgMTU1MDYzLCAxNTUwNzAsIDE1NTA3NSwgMTU1MDgwLCAxNTUwODIsIDE1NTA4NiwgMTU1MDg4LCAxNTUwOTIsIAotICAgIDE1NTA5NCwgMTU1MDk4LCAxNTUxMDIsIDE1NTEwNSwgMTU1MTA4LCAxNTUxMTAsIDE1NTExMywgMTU1MTE1LCAxNTUxMTksIAotICAgIDE1NTEyMSwgMTU1MTIzLCAxNTUxMjUsIDE1NTEyOSwgMTU1MTMxLCAxNTUxMzUsIDE1NTEzOCwgMTU1MTQ1LCAxNTUxNDgsIAotICAgIDE1NTE1MywgMTU1MTU2LCAxNTUxNTksIDE1NTE2NCwgMTU1MTY4LCAxNTUxNzIsIDE1NTE3NiwgMTU1MTc4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUxODMsIDE1NTE4OCwgMTU1MTkwLCAxNTUxOTQsIAotICAgIDE1NTE5NiwgMTU1MjAwLCAxNTUyMDQsIDE1NTIxMCwgMTU1MjE0LCAxNTUyMTksIDE1NTIyMiwgMTU1MjI2LCAxNTUyMzAsIAotICAgIDAsIDAsIDAsIDE1NTIzNCwgMTU1MjM2LCAxNTUyNDIsIDE1NTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU1MjUwLCAxNTUyNTUsIDE1NTI2MCwgMTU1MjY1LCAxNTUyNzAsIDE1NTI3NSwgMTU1MjgwLCAxNTUyODcsIAotICAgIDE1NTI5NCwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxMywgMTU1MzE4LCAxNTUzMjMsIDE1NTMyOCwgMTU1MzM1LCAxNTUzNDEsIAotICAgIDE1NTM0OCwgMTU1MzU1LCAxNTUzNjIsIDE1NTM2NywgMTU1MzcyLCAxNTUzNzcsIDE1NTM4MiwgMTU1Mzg3LCAxNTUzOTQsIAotICAgIDE1NTQwMSwgMTU1NDA2LCAxNTU0MTEsIDE1NTQxOCwgMTU1NDI1LCAxNTU0MzMsIDE1NTQ0MSwgMTU1NDQ4LCAxNTU0NTUsIAotICAgIDE1NTQ2MywgMTU1NDcxLCAxNTU0NzksIDE1NTQ4NiwgMTU1NDk2LCAxNTU1MDcsIDE1NTUxMiwgMTU1NTE5LCAxNTU1MjYsIAotICAgIDE1NTUzMywgMTU1NTQxLCAxNTU1NDksIDE1NTU2MCwgMTU1NTY4LCAxNTU1NzYsIDE1NTU4NCwgMTU1NTg5LCAxNTU1OTQsIAotICAgIDE1NTU5OSwgMTU1NjA0LCAxNTU2MDksIDE1NTYxNCwgMTU1NjE5LCAxNTU2MjQsIDE1NTYyOSwgMTU1NjM0LCAxNTU2MzksIAotICAgIDE1NTY0NCwgMTU1NjUxLCAxNTU2NTYsIDE1NTY2MSwgMTU1NjY4LCAxNTU2NzMsIDE1NTY3OCwgMTU1NjgzLCAxNTU2ODgsIAotICAgIDE1NTY5MywgMTU1Njk4LCAxNTU3MDMsIDE1NTcwOCwgMTU1NzEzLCAxNTU3MTgsIDE1NTcyMywgMTU1NzI4LCAxNTU3MzUsIAotICAgIDE1NTc0MywgMTU1NzQ4LCAxNTU3NTMsIDE1NTc2MCwgMTU1NzY1LCAxNTU3NzAsIDE1NTc3NSwgMTU1NzgyLCAxNTU3ODcsIAotICAgIDE1NTc5NCwgMTU1Nzk5LCAxNTU4MDYsIDE1NTgxMSwgMTU1ODIwLCAxNTU4MjksIDE1NTgzNCwgMTU1ODM5LCAxNTU4NDQsIAotICAgIDE1NTg0OSwgMTU1ODU0LCAxNTU4NTksIDE1NTg2NCwgMTU1ODY5LCAxNTU4NzQsIDE1NTg3OSwgMTU1ODg0LCAxNTU4ODksIAotICAgIDE1NTg5NCwgMTU1OTAyLCAxNTU5MTAsIDE1NTkxNSwgMTU1OTIwLCAxNTU5MjUsIDE1NTkzMCwgMTU1OTM1LCAxNTU5NDEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTk0NywgMTU1OTU1LCAxNTU5NjMsIDE1NTk3MSwgCi0gICAgMTU1OTc5LCAxNTU5ODUsIDE1NTk5MSwgMTU1OTk1LCAxNTU5OTksIDE1NjAwNSwgMTU2MDExLCAxNTYwMjAsIDE1NjAyNCwgCi0gICAgMTU2MDI5LCAxNTYwMzUsIDE1NjAzOSwgMTU2MDQ0LCAxNTYwNDgsIDE1NjA1MiwgMTU2MDU4LCAxNTYwNjQsIDE1NjA3NCwgCi0gICAgMTU2MDgzLCAxNTYwODYsIDE1NjA5MSwgMTU2MDk3LCAxNTYxMDMsIDE1NjExNCwgMTU2MTI0LCAxNTYxMjgsIDE1NjEzMywgCi0gICAgMTU2MTM5LCAxNTYxNDUsIDE1NjE1NCwgMTU2MTU5LCAxNTYxNjMsIDE1NjE2OCwgMTU2MTcyLCAxNTYxNzgsIDE1NjE4NCwgCi0gICAgMTU2MTkwLCAxNTYxOTQsIDE1NjE5NywgMTU2MjAxLCAxNTYyMDQsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIyNCwgCi0gICAgMTU2MjMyLCAxNTYyMzksIDE1NjI0NiwgMTU2MjU1LCAxNTYyNjQsIDE1NjI3MSwgMTU2Mjc5LCAxNTYyODYsIDE1NjI5MywgCi0gICAgMTU2MzAyLCAxNTYzMTEsIDE1NjMxOCwgMTU2MzI2LCAxNTYzMzMsIDE1NjM0MCwgMTU2MzQ5LCAxNTYzNTYsIDE1NjM2NCwgCi0gICAgMTU2MzcwLCAxNTYzNzksIDE1NjM4NywgMTU2Mzk2LCAxNTY0MDMsIDE1NjQxMywgMTU2NDI0LCAxNTY0MzIsIDE1NjQ0MCwgCi0gICAgMTU2NDQ5LCAxNTY0NTcsIDE1NjQ2NSwgMTU2NDc0LCAxNTY0ODIsIDE1NjQ5MiwgMTU2NTAxLCAxNTY1MDksIDE1NjUxNywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2NTI2LCAxNTY1MzQsIAotICAgIDE1NjU0MiwgMTU2NTUwLCAxNTY1NTgsIDE1NjU2NywgMTU2NTc2LCAxNTY1ODUsIDE1NjU5NCwgMTU2NjAzLCAxNTY2MTIsIAotICAgIDE1NjYyMSwgMCwgMCwgMCwgMCwgMTU2NjMwLCAxNTY2MzgsIDE1NjY0NiwgMTU2NjU0LCAxNTY2NjIsIDE1NjY2OSwgCi0gICAgMTU2Njc2LCAxNTY2ODMsIDE1NjY5MCwgMTU2Njk4LCAxNTY3MDYsIDE1NjcxNCwgMTU2NzIyLCAxNTY3MzIsIDE1Njc0MiwgCi0gICAgMTU2NzUyLCAxNTY3NjIsIDE1Njc3MSwgMTU2NzgwLCAxNTY3ODksIDE1Njc5OCwgMTU2ODA3LCAxNTY4MTYsIDE1NjgyNSwgCi0gICAgMTU2ODM0LCAxNTY4NDIsIDE1Njg1MCwgMTU2ODU4LCAxNTY4NjYsIDE1Njg3NCwgMTU2ODgyLCAxNTY4OTAsIDE1Njg5OCwgCi0gICAgMTU2OTA4LCAxNTY5MTgsIDE1NjkyOCwgMTU2OTM4LCAxNTY5NDIsIDE1Njk0NiwgMTU2OTUwLCAxNTY5NTQsIDE1Njk1NywgCi0gICAgMTU2OTYwLCAxNTY5NjMsIDE1Njk2NiwgMTU2OTcwLCAxNTY5NzQsIDE1Njk3OCwgMTU2OTgyLCAxNTY5ODcsIDE1Njk5MiwgCi0gICAgMTU2OTk3LCAxNTcwMDIsIDE1NzAwNSwgMTU3MDA4LCAxNTcwMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzAxNCwgCi0gICAgMTU3MDE3LCAxNTcwMjAsIDE1NzAyMywgMTU3MDI2LCAxNTcwMzEsIDE1NzAzNiwgMTU3MDQyLCAxNTcwNDgsIDE1NzA1MiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDU2LCAxNTcwNjIsIDE1NzA2OCwgMTU3MDc0LCAxNTcwODAsIDE1NzA4OCwgMTU3MDk2LCAKLSAgICAxNTcxMDUsIDE1NzExNCwgMTU3MTE5LCAxNTcxMjQsIDE1NzEyOSwgMTU3MTM0LCAxNTcxNDEsIDE1NzE0OCwgMTU3MTU2LCAKLSAgICAxNTcxNjQsIDE1NzE3MSwgMTU3MTc4LCAxNTcxODUsIDE1NzE5MiwgMTU3MjAxLCAxNTcyMTAsIDE1NzIyMCwgMTU3MjMwLCAKLSAgICAxNTcyMzYsIDE1NzI0MiwgMTU3MjQ4LCAxNTcyNTQsIDE1NzI2MiwgMTU3MjcwLCAxNTcyNzksIDE1NzI4OCwgMTU3Mjk2LCAKLSAgICAxNTczMDQsIDE1NzMxMiwgMTU3MzIwLCAxNTczMzAsIDE1NzM0MCwgMTU3MzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTczNjIsIDE1NzM2NywgMTU3MzcyLCAxNTczNzcsIDE1NzM4MiwgMTU3MzkxLCAxNTc0MDAsIDE1NzQwOSwgMTU3NDE4LCAKLSAgICAxNTc0MjUsIDE1NzQzMiwgMTU3NDM5LCAxNTc0NDYsIDE1NzQ1MywgMTU3NDYyLCAxNTc0NzEsIDE1NzQ4MCwgMTU3NDg1LCAKLSAgICAxNTc0OTIsIDE1NzQ5OSwgMTU3NTA2LCAxNTc1MTEsIDE1NzUxNiwgMTU3NTIxLCAxNTc1MjYsIDE1NzUzMywgMTU3NTQwLCAKLSAgICAxNTc1NDcsIDE1NzU1NCwgMTU3NTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc1NzAsIDE1NzU3NCwgMTU3NTc4LCAxNTc1ODMsIDE1NzU4NywgCi0gICAgMTU3NTkxLCAxNTc1OTYsIDE1NzYwMCwgMTU3NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYxOTksIAorICAgIDE1NjIwMSwgMTU2MjAzLCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMTksIDE1NjIyNSwgMTU2MjMwLCAxNTYyMzIsIAorICAgIDE1NjIzOCwgMTU2MjQyLCAxNTYyNDQsIDE1NjI0OCwgMTU2MjU0LCAxNTYyNjAsIDE1NjI2NiwgMTU2MjcxLCAxNTYyNzYsIAorICAgIDE1NjI4MywgMTU2MjkwLCAxNTYyOTcsIDE1NjMwMiwgMTU2MzA5LCAxNTYzMTYsIDE1NjMyMywgMTU2MzI3LCAxNTYzMzQsIAorICAgIDE1NjM0MywgMTU2MzUyLCAxNTYzNTksIDE1NjM2NCwgMTU2MzY4LCAxNTYzNzIsIDE1NjM3NCwgMTU2Mzc3LCAxNTYzODAsIAorICAgIDE1NjM4NywgMTU2Mzk0LCAxNTY0MDQsIDE1NjQwOSwgMTU2NDE0LCAxNTY0MTksIDE1NjQyNCwgMTU2NDI2LCAxNTY0MzIsIAorICAgIDE1NjQzNiwgMTU2NDM4LCAxNTY0NDAsIDE1NjQ0MiwgMTU2NDQ0LCAxNTY0NDgsIDE1NjQ1MiwgMTU2NDU2LCAxNTY0NTgsIAorICAgIDE1NjQ2MiwgMTU2NDY0LCAxNTY0NjgsIDE1NjQ3MCwgMTU2NDcyLCAxNTY0NzQsIDE1NjQ3NiwgMTU2NDgxLCAxNTY0ODYsIAorICAgIDE1NjQ4OCwgMTU2NDk0LCAxNTY0OTgsIDE1NjUwMiwgMTU2NTEwLCAxNTY1MTIsIDE1NjUxNCwgMTU2NTE2LCAxNTY1MTgsIAorICAgIDE1NjUyMCwgMTU2NTIyLCAxNTY1MjQsIDE1NjUyNiwgMTU2NTI4LCAxNTY1MzAsIDE1NjUzNCwgMTU2NTM4LCAxNTY1NDAsIAorICAgIDE1NjU0MiwgMTU2NTQ0LCAxNTY1NDYsIDE1NjU0OCwgMTU2NTUzLCAxNTY1NTksIDE1NjU2MywgMTU2NTY3LCAxNTY1NzEsIAorICAgIDE1NjU3NSwgMTU2NTgwLCAxNTY1ODQsIDE1NjU4NiwgMTU2NTg4LCAxNTY1OTIsIDE1NjU5OCwgMTU2NjAwLCAxNTY2MDIsIAorICAgIDE1NjYwNCwgMTU2NjA4LCAxNTY2MTcsIDE1NjYyMywgMTU2NjI3LCAxNTY2MzEsIDE1NjYzMywgMTU2NjM1LCAxNTY2MzgsIAorICAgIDE1NjY0MCwgMTU2NjQyLCAxNTY2NDQsIDE1NjY0OCwgMTU2NjUwLCAxNTY2NTQsIDE1NjY1OSwgMTU2NjYxLCAxNTY2NjYsIAorICAgIDE1NjY3MiwgMTU2Njc5LCAxNTY2ODMsIDE1NjY4NywgMTU2NjkxLCAxNTY2OTUsIDE1NjcwMSwgMTU2NzA1LCAxNTY3MTMsIAorICAgIDE1NjcyMCwgMTU2NzIyLCAxNTY3MjQsIDE1NjcyOCwgMTU2NzMyLCAxNTY3MzQsIDE1NjczOCwgMTU2NzQyLCAxNTY3NDQsIAorICAgIDE1Njc0OCwgMTU2NzUwLCAxNTY3NTQsIDE1Njc1OCwgMTU2NzYyLCAxNTY3NjYsIDE1Njc3MCwgMTU2Nzc0LCAxNTY3NzgsIAorICAgIDE1Njc4MiwgMTU2Nzg4LCAxNTY3OTIsIDE1Njc5NiwgMTU2ODA3LCAxNTY4MTIsIDE1NjgxNiwgMTU2ODIwLCAxNTY4MjYsIAorICAgIDE1NjgzMCwgMTU2ODM0LCAxNTY4MzgsIDE1Njg0NSwgMTU2ODUyLCAxNTY4NTYsIDE1Njg2MCwgMTU2ODY0LCAxNTY4NjgsIAorICAgIDE1Njg3MiwgMTU2ODc5LCAxNTY4ODEsIDE1Njg4NSwgMTU2ODg3LCAxNTY4ODksIDE1Njg5MywgMTU2ODk3LCAxNTY5MDEsIAorICAgIDE1NjkwMywgMTU2OTA3LCAxNTY5MTEsIDE1NjkxNSwgMTU2OTE5LCAxNTY5MjMsIDE1NjkyNSwgMTU2OTI5LCAxNTY5MzEsIAorICAgIDE1NjkzNywgMTU2OTQwLCAxNTY5NDUsIDE1Njk0NywgMTU2OTQ5LCAxNTY5NTIsIDE1Njk1NCwgMTU2OTU2LCAxNTY5NTksIAorICAgIDE1Njk2NiwgMTU2OTczLCAxNTY5ODAsIDE1Njk4NSwgMTU2OTg5LCAxNTY5OTEsIDE1Njk5MywgMTU2OTk1LCAxNTY5OTksIAorICAgIDE1NzAwMSwgMTU3MDA1LCAxNTcwMDksIDE1NzAxMywgMTU3MDE1LCAxNTcwMTksIDE1NzAyMSwgMTU3MDI1LCAxNTcwMjksIAorICAgIDE1NzAzNiwgMTU3MDM4LCAxNTcwNDcsIDE1NzA1NiwgMTU3MDY1LCAxNTcwNzEsIDE1NzA3MywgMTU3MDc4LCAxNTcwODIsIAorICAgIDE1NzA4NiwgMTU3MDg4LCAxNTcwOTQsIDE1NzA5OCwgMTU3MTAwLCAxNTcxMDQsIDE1NzEwOCwgMTU3MTEwLCAxNTcxMTQsIAorICAgIDE1NzExOSwgMTU3MTIzLCAxNTcxMjksIDE1NzEzNSwgMTU3MTM3LCAxNTcxMzksIDE1NzE0NSwgMTU3MTQ3LCAxNTcxNTEsIAorICAgIDE1NzE1NSwgMTU3MTU3LCAxNTcxNjEsIDE1NzE2MywgMTU3MTY3LCAxNTcxNzEsIDE1NzE3NSwgMTU3MTc4LCAxNTcxODEsIAorICAgIDE1NzE4NiwgMTU3MTkxLCAxNTcxOTMsIDE1NzE5NiwgMTU3MTk4LCAxNTcyMDUsIDE1NzIwOSwgMTU3MjExLCAxNTcyMTgsIAorICAgIDE1NzIyNSwgMTU3MjMyLCAxNTcyMzksIDE1NzI0NiwgMTU3MjQ4LCAxNTcyNTAsIDE1NzI1MiwgMTU3MjU2LCAxNTcyNTgsIAorICAgIDE1NzI2MCwgMTU3MjYyLCAxNTcyNjQsIDE1NzI2NiwgMTU3MjY4LCAxNTcyNzAsIDE1NzI3MiwgMTU3Mjc0LCAxNTcyNzYsIAorICAgIDE1NzI3OCwgMTU3MjgwLCAxNTcyODIsIDE1NzI4NCwgMTU3Mjg2LCAxNTcyODgsIDE1NzI5MCwgMTU3MjkyLCAxNTcyOTQsIAorICAgIDE1NzI5NiwgMTU3Mjk4LCAxNTczMDAsIDE1NzMwNCwgMTU3MzA2LCAxNTczMDgsIDE1NzMxMCwgMTU3MzE0LCAxNTczMTYsIAorICAgIDE1NzMyMCwgMTU3MzIyLCAxNTczMjQsIDE1NzMyOCwgMTU3MzMyLCAxNTczMzgsIDE1NzM0MCwgMTU3MzQyLCAxNTczNDQsIAorICAgIDE1NzM0NiwgMTU3MzUwLCAxNTczNTQsIDE1NzM1NiwgMTU3MzYwLCAxNTczNjQsIDE1NzM2OCwgMTU3MzcyLCAxNTczNzYsIAorICAgIDE1NzM4MCwgMTU3Mzg0LCAxNTczODgsIDE1NzM5MiwgMTU3Mzk2LCAxNTc0MDAsIDE1NzQwNCwgMTU3NDA4LCAxNTc0MTIsIAorICAgIDE1NzQxNiwgMTU3NDIwLCAxNTc0MjQsIDE1NzQyOCwgMTU3NDMwLCAxNTc0MzIsIDE1NzQzNCwgMTU3NDM2LCAxNTc0MzgsIAorICAgIDE1NzQ0MCwgMTU3NDQyLCAxNTc0NTAsIDE1NzQ1OCwgMTU3NDY2LCAxNTc0NzQsIDE1NzQ3OSwgMTU3NDg0LCAxNTc0ODksIAorICAgIDE1NzQ5MywgMTU3NDk3LCAxNTc1MDIsIDE1NzUwNiwgMTU3NTA4LCAxNTc1MTIsIDE1NzUxNCwgMTU3NTE2LCAxNTc1MTgsIAorICAgIDE1NzUyMCwgMTU3NTIyLCAxNTc1MjQsIDE1NzUyNiwgMTU3NTMwLCAxNTc1MzIsIDE1NzUzNCwgMTU3NTM2LCAxNTc1NDAsIAorICAgIDE1NzU0NCwgMTU3NTQ4LCAxNTc1NTIsIDE1NzU1NiwgMTU3NTU4LCAxNTc1NjQsIDE1NzU3MCwgMTU3NTcyLCAxNTc1NzQsIAorICAgIDE1NzU3NiwgMTU3NTc4LCAxNTc1ODAsIDE1NzU4OSwgMTU3NTk2LCAxNTc2MDMsIDE1NzYwNywgMTU3NjE0LCAxNTc2MTksIAorICAgIDE1NzYyNiwgMTU3NjM1LCAxNTc2NDAsIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTAsIDE1NzY1NCwgMTU3NjU2LCAxNTc2NjAsIAorICAgIDE1NzY2NCwgMTU3NjY2LCAxNTc2NzAsIDE1NzY3NCwgMTU3Njc4LCAxNTc2ODAsIDE1NzY4MiwgMTU3Njg4LCAxNTc2OTAsIAorICAgIDE1NzY5MiwgMTU3Njk0LCAxNTc2OTgsIDE1NzcwMiwgMTU3NzA0LCAxNTc3MDgsIDE1NzcxMCwgMTU3NzEyLCAxNTc3MTUsIAorICAgIDE1NzcxOSwgMTU3NzIxLCAxNTc3MjUsIDE1NzcyNywgMTU3NzI5LCAxNTc3MzQsIDE1NzczNiwgMTU3NzQwLCAxNTc3NDQsIAorICAgIDE1Nzc0NywgMTU3NzUxLCAxNTc3NTUsIDE1Nzc1OSwgMTU3NzYzLCAxNTc3NjcsIDE1Nzc3MSwgMTU3Nzc1LCAxNTc3ODAsIAorICAgIDE1Nzc4NCwgMTU3Nzg4LCAxNTc3OTcsIDE1NzgwMiwgMTU3ODA1LCAxNTc4MDcsIDE1NzgxMCwgMTU3ODEzLCAxNTc4MTgsIAorICAgIDE1NzgyMCwgMTU3ODIzLCAxNTc4MjgsIDE1NzgzMiwgMTU3ODM1LCAxNTc4MzksIDE1Nzg0MywgMTU3ODQ2LCAxNTc4NTEsIAorICAgIDE1Nzg1NSwgMTU3ODU5LCAxNTc4NjMsIDE1Nzg2NywgMTU3ODczLCAxNTc4NzksIDE1Nzg4NSwgMTU3ODkxLCAxNTc4OTYsIAorICAgIDE1NzkwNiwgMTU3OTA4LCAxNTc5MTIsIDE1NzkxNCwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI2LCAxNTc5MzAsIAorICAgIDE1NzkzNSwgMTU3OTQwLCAxNTc5NDYsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MiwgMTU3OTY4LCAxNTc5NzIsIAorICAgIDE1Nzk3NCwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4MiwgMTU3OTg2LCAxNTc5OTAsIDE1Nzk5NCwgMTU3OTk2LCAxNTc5OTgsIAorICAgIDE1ODAwNSwgMTU4MDA5LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyNiwgMTU4MDMwLCAxNTgwMzIsIAorICAgIDE1ODAzNCwgMTU4MDM4LCAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTQsIDE1ODA1OCwgMTU4MDYyLCAxNTgwNjYsIAorICAgIDE1ODA2OCwgMTU4MDcxLCAxNTgwNzUsIDE1ODA4MSwgMTU4MDkwLCAxNTgwOTksIDE1ODEwNywgMTU4MTE1LCAxNTgxMTcsIAorICAgIDE1ODEyMSwgMTU4MTIzLCAxNTgxMjcsIDE1ODEzOCwgMTU4MTQyLCAxNTgxNDgsIDE1ODE1NCwgMTU4MTU5LCAxNTgxNjEsIAorICAgIDE1ODE2NiwgMTU4MTcwLCAxNTgxNzIsIDE1ODE3NCwgMTU4MTc2LCAxNTgxODAsIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTMsIAorICAgIDE1ODIwMywgMTU4MjE4LCAxNTgyMjgsIDE1ODIzOCwgMTU4MjQyLCAxNTgyNDYsIDE1ODI1MiwgMTU4MjU0LCAxNTgyNjIsIAorICAgIDE1ODI3MCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MiwgMTU4Mjg4LCAxNTgyOTUsIDE1ODMwMiwgMTU4MzA0LCAxNTgzMDYsIAorICAgIDE1ODMwOSwgMTU4MzExLCAxNTgzMTcsIDE1ODMxOSwgMTU4MzIyLCAxNTgzMjYsIDE1ODMzMiwgMTU4MzM4LCAxNTgzNDksIAorICAgIDE1ODM1NSwgMTU4MzYxLCAxNTgzNjksIDE1ODM3MywgMTU4MzgxLCAxNTgzODksIDE1ODM5NSwgMTU4NDAxLCAxNTg0MDgsIAorICAgIDE1ODQxMCwgMTU4NDE0LCAxNTg0MTYsIDE1ODQxOCwgMTU4NDIzLCAxNTg0MjUsIDE1ODQyNywgMTU4NDI5LCAxNTg0MzEsIAorICAgIDE1ODQzNSwgMTU4NDQ1LCAxNTg0NTEsIDE1ODQ1NSwgMTU4NDU5LCAxNTg0NjMsIDE1ODQ2OSwgMTU4NDc1LCAxNTg0ODEsIAorICAgIDE1ODQ4NywgMTU4NDkyLCAxNTg0OTcsIDE1ODUwMywgMTU4NTA5LCAxNTg1MTYsIDE1ODUyMywgMTU4NTMxLCAxNTg1MzksIAorICAgIDE1ODU0NCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2NSwgMTU4NTc0LCAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIAorICAgIDE1ODU5NSwgMTU4NjAwLCAxNTg2MDIsIDE1ODYwNCwgMTU4NjA2LCAxNTg2MTMsIDE1ODYxOCwgMTU4NjI1LCAxNTg2MzIsIAorICAgIDE1ODYzOSwgMTU4NjQ3LCAxNTg2NTUsIDE1ODY2MywgMTU4NjcxLCAxNTg2NzksIDE1ODY4NywgMTU4Njk1LCAxNTg3MDMsIAorICAgIDE1ODcxMSwgMTU4NzE3LCAxNTg3MjMsIDE1ODcyOSwgMTU4NzM1LCAxNTg3NDEsIDE1ODc0NywgMTU4NzUzLCAxNTg3NTksIAorICAgIDE1ODc2NSwgMTU4NzcxLCAxNTg3NzcsIDE1ODc4MywgMTU4Nzg2LCAxNTg3OTUsIDE1ODgwNCwgMTU4ODA2LCAxNTg4MTMsIAorICAgIDE1ODgxNywgMTU4ODE5LCAxNTg4MjEsIDE1ODgyNSwgMTU4ODMxLCAxNTg4MzUsIDE1ODgzNywgMTU4ODQ3LCAxNTg4NTMsIAorICAgIDE1ODg1NywgMTU4ODU5LCAxNTg4NjMsIDE1ODg2NSwgMTU4ODY5LCAxNTg4NzYsIDE1ODg4MywgMTU4ODkwLCAxNTg4OTUsIAorICAgIDE1ODkwMCwgMTU4OTA5LCAxNTg5MTUsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjksIDE1ODkzMywgMTU4OTQwLCAxNTg5NDQsIAorICAgIDE1ODk0NywgMTU4OTUyLCAxNTg5NTksIDE1ODk2NiwgMTU4OTcxLCAxNTg5NzYsIDE1ODk4MSwgMTU4OTg4LCAxNTg5OTcsIAorICAgIDE1OTAwOCwgMTU5MDE0LCAxNTkwMjAsIDE1OTAyNiwgMTU5MDM2LCAxNTkwNTEsIDE1OTA2MCwgMTU5MDY4LCAxNTkwNzYsIAorICAgIDE1OTA4NCwgMTU5MDkyLCAxNTkxMDAsIDE1OTEwOCwgMTU5MTE2LCAxNTkxMjQsIDE1OTEzMiwgMTU5MTQwLCAxNTkxNDgsIAorICAgIDE1OTE1NiwgMTU5MTU5LCAxNTkxNjMsIDE1OTE2OCwgMTU5MTczLCAxNTkxNzUsIDE1OTE3OSwgMTU5MTg4LCAxNTkxOTcsIAorICAgIDE1OTIwNSwgMTU5MjA5LCAxNTkyMTMsIDE1OTIxOCwgMTU5MjIzLCAxNTkyMjgsIDE1OTIzMCwgMTU5MjM1LCAxNTkyMzksIAorICAgIDE1OTI0MSwgMTU5MjQ1LCAxNTkyNDksIDE1OTI1NSwgMTU5MjYwLCAxNTkyNjgsIDE1OTI3MywgMTU5Mjc4LCAxNTkyODMsIAorICAgIDE1OTI5MCwgMTU5MjkzLCAxNTkyOTUsIDE1OTI5OCwgMTU5MzAzLCAxNTkzMDksIDE1OTMxMywgMTU5MzE3LCAxNTkzMjMsIAorICAgIDE1OTMyOSwgMTU5MzMxLCAxNTkzMzUsIDE1OTMzOSwgMTU5MzQzLCAxNTkzNDcsIDE1OTM1MSwgMTU5MzUzLCAxNTkzNTUsIAorICAgIDE1OTM1NywgMTU5MzU5LCAxNTkzNjUsIDE1OTM3MSwgMTU5Mzc1LCAxNTkzNzcsIDE1OTM3OSwgMTU5MzgxLCAxNTkzOTAsIAorICAgIDE1OTM5NCwgMTU5NDAxLCAxNTk0MDgsIDE1OTQxMCwgMTU5NDEzLCAxNTk0MTcsIDE1OTQyMywgMTU5NDI3LCAxNTk0MzEsIAorICAgIDE1OTQzMywgMTU5NDQxLCAxNTk0NDUsIDE1OTQ0OSwgMTU5NDU0LCAxNTk0NTksIDE1OTQ2NCwgMTU5NDY5LCAxNTk0NzQsIAorICAgIDE1OTQ3OSwgMTU5NDg0LCAxNTk0ODksIDE1OTQ5NCwgMTU5NDk5LCAxNTk1MDMsIDE1OTUwOSwgMTU5NTEzLCAxNTk1MTksIAorICAgIDE1OTUyNCwgMTU5NTMxLCAxNTk1MzcsIDE1OTU0NSwgMTU5NTQ5LCAxNTk1NTYsIDE1OTU2MCwgMTU5NTY0LCAxNTk1NjgsIAorICAgIDE1OTU3MywgMTU5NTc4LCAxNTk1ODAsIDE1OTU4NCwgMTU5NTkzLCAxNTk2MDEsIDE1OTYwOSwgMTU5NjIyLCAxNTk2MzUsIAorICAgIDE1OTY0OCwgMTU5NjU1LCAxNTk2NjIsIDE1OTY2NiwgMTU5Njc1LCAxNTk2ODMsIDE1OTY4NywgMTU5Njk2LCAxNTk3MDMsIAorICAgIDE1OTcwNywgMTU5NzExLCAxNTk3MTUsIDE1OTcxOSwgMTU5NzI2LCAxNTk3MzAsIDE1OTczNCwgMTU5NzM4LCAxNTk3NDIsIAorICAgIDE1OTc0OSwgMTU5NzU4LCAxNTk3NjcsIDE1OTc3NCwgMTU5Nzg2LCAxNTk3OTgsIDE1OTgwMiwgMTU5ODA2LCAxNTk4MTAsIAorICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgzMCwgMTU5ODM4LCAxNTk4NDYsIDE1OTg1MCwgMTU5ODU0LCAxNTk4NTgsIAorICAgIDE1OTg2MiwgMTU5ODY2LCAxNTk4NzAsIDE1OTg3NiwgMTU5ODgyLCAxNTk4ODYsIDE1OTg5NywgMTU5OTA1LCAxNTk5MDksIAorICAgIDE1OTkxMywgMTU5OTE3LCAxNTk5MjEsIDE1OTkyNywgMTU5OTM0LCAxNTk5NDUsIDE1OTk1NSwgMTU5OTY1LCAxNTk5NzYsIAorICAgIDE1OTk4NSwgMTU5OTk2LCAxNjAwMDIsIDE2MDAwOCwgMTYwMDE0LCAxNjAwMjAsIDE2MDAyNiwgMTYwMDMwLCAxNjAwMzcsIAorICAgIDE2MDA0NiwgMTYwMDUzLCAxNjAwNTksIDE2MDA2MywgMTYwMDY3LCAxNjAwNzEsIDE2MDA4MCwgMTYwMDkyLCAxNjAwOTYsIAorICAgIDE2MDEwMywgMTYwMTEwLCAxNjAxMTcsIDE2MDEyNSwgMTYwMTMyLCAxNjAxNDAsIDE2MDE0OSwgMTYwMTU5LCAxNjAxNjgsIAorICAgIDE2MDE3OCwgMTYwMTg3LCAxNjAxOTcsIDE2MDIwNiwgMTYwMjE2LCAxNjAyMjYsIDE2MDIzNywgMTYwMjQ3LCAxNjAyNTgsIAorICAgIDE2MDI2NSwgMTYwMjczLCAxNjAyODAsIDE2MDI4OCwgMTYwMjk2LCAxNjAzMDUsIDE2MDMxMywgMTYwMzIyLCAxNjAzMjksIAorICAgIDE2MDM0MSwgMTYwMzQ4LCAxNjAzNjAsIDE2MDM2MywgMTYwMzY2LCAxNjAzNjksIDE2MDM3MiwgMTYwMzc4LCAxNjAzODUsIAorICAgIDE2MDM5MSwgMTYwMzk4LCAxNjA0MDMsIDE2MDQwOSwgMTYwNDIxLCAxNjA0MzEsIDE2MDQ0MiwgMTYwNDQ3LCAxNjA0NTIsIAorICAgIDE2MDQ1OCwgMTYwNDYzLCAxNjA0NzAsIDE2MDQ3NCwgMTYwNDgwLCAxNjA0ODIsIDE2MDQ4NCwgMTYwNDg4LCAxNjA0OTIsIAorICAgIDE2MDQ5NiwgMTYwNTA1LCAxNjA1MDcsIDE2MDUwOSwgMTYwNTEyLCAxNjA1MTQsIDE2MDUxNiwgMTYwNTIwLCAxNjA1MjIsIAorICAgIDE2MDUyNiwgMTYwNTI4LCAxNjA1MzIsIDE2MDUzNCwgMTYwNTM2LCAxNjA1NDAsIDE2MDU0NCwgMTYwNTUwLCAxNjA1NTIsIAorICAgIDE2MDU1NiwgMTYwNTU4LCAxNjA1NjIsIDE2MDU2NiwgMTYwNTcwLCAxNjA1NzQsIDE2MDU3NiwgMTYwNTc4LCAxNjA1ODIsIAorICAgIDE2MDU4NiwgMTYwNTkwLCAxNjA1OTQsIDE2MDU5NiwgMTYwNTk4LCAxNjA2MDAsIDE2MDYwNiwgMTYwNjExLCAxNjA2MTQsIAorICAgIDE2MDYyMiwgMTYwNjMwLCAxNjA2MzIsIDE2MDYzNywgMTYwNjQwLCAxNjA2NDUsIDE2MDY1NiwgMTYwNjYzLCAxNjA2NjgsIAorICAgIDE2MDY3MywgMTYwNjc1LCAxNjA2NzksIDE2MDY4MSwgMTYwNjg1LCAxNjA2ODcsIDE2MDY5MSwgMTYwNjk1LCAxNjA2OTgsIAorICAgIDE2MDcwMSwgMTYwNzAzLCAxNjA3MDYsIDE2MDcwOCwgMTYwNzEyLCAxNjA3MTQsIDE2MDcxNiwgMTYwNzE4LCAxNjA3MjIsIAorICAgIDE2MDcyNCwgMTYwNzI4LCAxNjA3MzEsIDE2MDczOCwgMTYwNzQxLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTcsIAorICAgIDE2MDc2MSwgMTYwNzY1LCAxNjA3NjksIDE2MDc3MSwgMTYwNzc2LCAxNjA3NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE2MDc4MywgMTYwNzg4LCAxNjA3OTAsIDE2MDc5NCwgMTYwNzk2LCAxNjA4MDAsIDE2MDgwNCwgCisgICAgMTYwODEwLCAxNjA4MTQsIDE2MDgxOSwgMTYwODIyLCAxNjA4MjYsIDE2MDgzMCwgMCwgMCwgMCwgMTYwODM0LCAxNjA4MzYsIAorICAgIDE2MDg0MiwgMTYwODQ2LCAxNjA4NTAsIDE2MDg1MiwgMTYwODU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNjA4NTgsIDE2MDg2MywgMTYwODY4LCAxNjA4NzMsIDE2MDg3OCwgMTYwODgzLCAxNjA4ODgsIDE2MDg5NSwgMTYwOTAyLCAKKyAgICAxNjA5MDksIDE2MDkxNiwgMTYwOTIxLCAxNjA5MjYsIDE2MDkzMSwgMTYwOTM2LCAxNjA5NDMsIDE2MDk0OSwgMTYwOTU2LCAKKyAgICAxNjA5NjMsIDE2MDk3MCwgMTYwOTc1LCAxNjA5ODAsIDE2MDk4NSwgMTYwOTkwLCAxNjA5OTUsIDE2MTAwMiwgMTYxMDA5LCAKKyAgICAxNjEwMTQsIDE2MTAxOSwgMTYxMDI2LCAxNjEwMzMsIDE2MTA0MSwgMTYxMDQ5LCAxNjEwNTYsIDE2MTA2MywgMTYxMDcxLCAKKyAgICAxNjEwNzksIDE2MTA4NywgMTYxMDk0LCAxNjExMDQsIDE2MTExNSwgMTYxMTIwLCAxNjExMjcsIDE2MTEzNCwgMTYxMTQxLCAKKyAgICAxNjExNDksIDE2MTE1NywgMTYxMTY4LCAxNjExNzYsIDE2MTE4NCwgMTYxMTkyLCAxNjExOTcsIDE2MTIwMiwgMTYxMjA3LCAKKyAgICAxNjEyMTIsIDE2MTIxNywgMTYxMjIyLCAxNjEyMjcsIDE2MTIzMiwgMTYxMjM3LCAxNjEyNDIsIDE2MTI0NywgMTYxMjUyLCAKKyAgICAxNjEyNTksIDE2MTI2NCwgMTYxMjY5LCAxNjEyNzYsIDE2MTI4MSwgMTYxMjg2LCAxNjEyOTEsIDE2MTI5NiwgMTYxMzAxLCAKKyAgICAxNjEzMDYsIDE2MTMxMSwgMTYxMzE2LCAxNjEzMjEsIDE2MTMyNiwgMTYxMzMxLCAxNjEzMzYsIDE2MTM0MywgMTYxMzUxLCAKKyAgICAxNjEzNTYsIDE2MTM2MSwgMTYxMzY4LCAxNjEzNzMsIDE2MTM3OCwgMTYxMzgzLCAxNjEzOTAsIDE2MTM5NSwgMTYxNDAyLCAKKyAgICAxNjE0MDcsIDE2MTQxNCwgMTYxNDE5LCAxNjE0MjgsIDE2MTQzNywgMTYxNDQyLCAxNjE0NDcsIDE2MTQ1MiwgMTYxNDU3LCAKKyAgICAxNjE0NjIsIDE2MTQ2NywgMTYxNDcyLCAxNjE0NzcsIDE2MTQ4MiwgMTYxNDg3LCAxNjE0OTIsIDE2MTQ5NywgMTYxNTAyLCAKKyAgICAxNjE1MTAsIDE2MTUxOCwgMTYxNTIzLCAxNjE1MjgsIDE2MTUzMywgMTYxNTM4LCAxNjE1NDMsIDE2MTU0OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxNTU1LCAxNjE1NjMsIDE2MTU3MSwgMTYxNTc5LCAxNjE1ODcsIAorICAgIDE2MTU5MywgMTYxNTk5LCAxNjE2MDMsIDE2MTYwNywgMTYxNjEzLCAxNjE2MTksIDE2MTYyOCwgMTYxNjMyLCAxNjE2MzcsIAorICAgIDE2MTY0MywgMTYxNjQ3LCAxNjE2NTIsIDE2MTY1NiwgMTYxNjYwLCAxNjE2NjYsIDE2MTY3MiwgMTYxNjgyLCAxNjE2OTEsIAorICAgIDE2MTY5NCwgMTYxNjk5LCAxNjE3MDUsIDE2MTcxMSwgMTYxNzIyLCAxNjE3MzIsIDE2MTczNiwgMTYxNzQxLCAxNjE3NDcsIAorICAgIDE2MTc1MywgMTYxNzYyLCAxNjE3NjcsIDE2MTc3MSwgMTYxNzc2LCAxNjE3ODAsIDE2MTc4NiwgMTYxNzkyLCAxNjE3OTgsIAorICAgIDE2MTgwMiwgMTYxODA1LCAxNjE4MDksIDE2MTgxMiwgMTYxODE1LCAxNjE4MjAsIDE2MTgyNSwgMTYxODMyLCAxNjE4NDAsIAorICAgIDE2MTg0NywgMTYxODU0LCAxNjE4NjMsIDE2MTg3MiwgMTYxODc5LCAxNjE4ODcsIDE2MTg5NCwgMTYxOTAxLCAxNjE5MTAsIAorICAgIDE2MTkxOSwgMTYxOTI2LCAxNjE5MzQsIDE2MTk0MSwgMTYxOTQ4LCAxNjE5NTcsIDE2MTk2NCwgMTYxOTcyLCAxNjE5NzgsIAorICAgIDE2MTk4NywgMTYxOTk1LCAxNjIwMDQsIDE2MjAxMSwgMTYyMDIxLCAxNjIwMzIsIDE2MjA0MCwgMTYyMDQ4LCAxNjIwNTcsIAorICAgIDE2MjA2NSwgMTYyMDczLCAxNjIwODIsIDE2MjA5MCwgMTYyMTAwLCAxNjIxMDksIDE2MjExNywgMTYyMTI1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIxMzQsIDE2MjE0MiwgMTYyMTUwLCAKKyAgICAxNjIxNTgsIDE2MjE2NiwgMTYyMTc1LCAxNjIxODQsIDE2MjE5MywgMTYyMjAyLCAxNjIyMTEsIDE2MjIyMCwgMTYyMjI5LCAKKyAgICAwLCAwLCAwLCAwLCAxNjIyMzgsIDE2MjI0NiwgMTYyMjU0LCAxNjIyNjIsIDE2MjI3MCwgMTYyMjc3LCAxNjIyODQsIAorICAgIDE2MjI5MSwgMTYyMjk4LCAxNjIzMDYsIDE2MjMxNCwgMTYyMzIyLCAxNjIzMzAsIDE2MjM0MCwgMTYyMzUwLCAxNjIzNjAsIAorICAgIDE2MjM3MCwgMTYyMzc5LCAxNjIzODgsIDE2MjM5NywgMTYyNDA2LCAxNjI0MTUsIDE2MjQyNCwgMTYyNDMzLCAxNjI0NDIsIAorICAgIDE2MjQ1MCwgMTYyNDU4LCAxNjI0NjYsIDE2MjQ3NCwgMTYyNDgyLCAxNjI0OTAsIDE2MjQ5OCwgMTYyNTA2LCAxNjI1MTYsIAorICAgIDE2MjUyNiwgMTYyNTM2LCAxNjI1NDYsIDE2MjU1MCwgMTYyNTU0LCAxNjI1NTgsIDE2MjU2MiwgMTYyNTY1LCAxNjI1NjgsIAorICAgIDE2MjU3MSwgMTYyNTc0LCAxNjI1NzgsIDE2MjU4MiwgMTYyNTg2LCAxNjI1OTAsIDE2MjU5NSwgMTYyNjAwLCAxNjI2MDUsIAorICAgIDE2MjYxMCwgMTYyNjEzLCAxNjI2MTYsIDE2MjYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyNjIyLCAxNjI2MjUsIAorICAgIDE2MjYyOCwgMTYyNjMxLCAxNjI2MzQsIDE2MjYzOSwgMTYyNjQ0LCAxNjI2NTAsIDE2MjY1NiwgMTYyNjYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjI2NjQsIDE2MjY3MCwgMTYyNjc2LCAxNjI2ODIsIDE2MjY4OCwgMTYyNjk2LCAxNjI3MDQsIDE2MjcxMywgCisgICAgMTYyNzIyLCAxNjI3MjcsIDE2MjczMiwgMTYyNzM3LCAxNjI3NDIsIDE2Mjc0OSwgMTYyNzU2LCAxNjI3NjQsIDE2Mjc3MiwgCisgICAgMTYyNzc5LCAxNjI3ODYsIDE2Mjc5MywgMTYyODAwLCAxNjI4MDksIDE2MjgxOCwgMTYyODI4LCAxNjI4MzgsIDE2Mjg0NCwgCisgICAgMTYyODUwLCAxNjI4NTYsIDE2Mjg2MiwgMTYyODcwLCAxNjI4NzgsIDE2Mjg4NywgMTYyODk2LCAxNjI5MDQsIDE2MjkxMiwgCisgICAgMTYyOTIwLCAxNjI5MjgsIDE2MjkzOCwgMTYyOTQ4LCAxNjI5NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2Mjk3MCwgCisgICAgMTYyOTc1LCAxNjI5ODAsIDE2Mjk4NSwgMTYyOTkwLCAxNjI5OTksIDE2MzAwOCwgMTYzMDE3LCAxNjMwMjYsIDE2MzAzMywgCisgICAgMTYzMDQwLCAxNjMwNDcsIDE2MzA1NCwgMTYzMDYxLCAxNjMwNzAsIDE2MzA3OSwgMTYzMDg4LCAxNjMwOTMsIDE2MzEwMCwgCisgICAgMTYzMTA3LCAxNjMxMTQsIDE2MzExOSwgMTYzMTI0LCAxNjMxMjksIDE2MzEzNCwgMTYzMTQxLCAxNjMxNDgsIDE2MzE1NSwgCisgICAgMTYzMTYyLCAxNjMxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYxMCwgMTU3NjEyLCAKLSAgICAxNTc2MTYsIDE1NzYxOCwgMTU3NjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIDE2MzE5MSwgMTYzMTk1LCAxNjMxOTksIAorICAgIDE2MzIwNCwgMTYzMjA4LCAxNjMyMTIsIDE2MzIxOCwgMTYzMjI0LCAxNjMyMzEsIDE2MzIzNSwgMTYzMjM5LCAxNjMyNDEsIAorICAgIDAsIDE2MzI1MSwgMTYzMjU4LCAxNjMyNjIsIDE2MzI2NiwgMTYzMjc2LCAxNjMyODAsIDE2MzI4NCwgMTYzMjg4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjMyOTIsIDAsIDAsIDE2MzI5NiwgMTYzMjk4LCAxNjMzMDAsIDE2MzMwNiwgMTYzMzEwLCAKKyAgICAxNjMzMTIsIDE2MzMxOCwgMTYzMzIwLCAxNjMzMjIsIDE2MzMyNiwgMTYzMzI4LCAxNjMzMzIsIDAsIDE2MzMzNCwgCisgICAgMTYzMzM4LCAxNjMzNDMsIDE2MzM0NywgMTYzMzUxLCAxNjMzNTMsIDE2MzM1NywgMTYzMzU5LCAxNjMzNjUsIDE2MzM3MSwgCisgICAgMTYzMzc3LCAxNjMzODEsIDAsIDAsIDAsIDAsIDE2MzM4NywgMTYzMzg5LCAxNjMzOTEsIDE2MzM5MywgMTYzMzk1LCAKKyAgICAxNjMzOTcsIDE2MzM5OSwgMTYzNDAzLCAxNjM0MDcsIDE2MzQxNCwgMTYzNDE4LCAxNjM0MjAsIDE2MzQyNSwgMTYzNDI3LCAKKyAgICAxNjM0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzQzMSwgMTYzNDMzLCAxNjM0MzcsIDE2MzQzOSwgMTYzNDQxLCAKKyAgICAxNjM0NDUsIDE2MzQ0NywgMTYzNDQ5LCAxNjM0NTEsIDE2MzQ1MywgMTYzNDU1LCAxNjM0NTksIDE2MzQ2MSwgMTYzNDYzLCAKKyAgICAxNjM0NjUsIDE2MzQ2NywgMTYzNDY5LCAxNjM0NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzQ3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI4LCAxNTc2MzIsIDE1NzYzNiwgMTU3NjQwLCAKLSAgICAxNTc2NDQsIDE1NzY0OCwgMTU3NjUyLCAxNTc2NTYsIDE1NzY2MCwgMTU3NjY0LCAxNTc2NjgsIDE1NzY3MiwgMTU3Njc2LCAKLSAgICAxNTc2ODAsIDE1NzY4NCwgMTU3Njg4LCAxNTc2OTIsIDE1NzY5NiwgMTU3NzAwLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEyLCAKLSAgICAxNTc3MTYsIDE1NzcyMCwgMTU3NzI0LCAxNTc3MjgsIDE1NzczMiwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgMTU3NzQ4LCAKLSAgICAxNTc3NTIsIDE1Nzc1NiwgMTU3NzYwLCAxNTc3NjQsIDE1Nzc2OCwgMTU3NzcyLCAxNTc3NzYsIDE1Nzc4MCwgMTU3Nzg0LCAKLSAgICAxNTc3ODgsIDE1Nzc5MiwgMTU3Nzk2LCAxNTc4MDAsIDE1NzgwNCwgMTU3ODA4LCAxNTc4MTIsIDE1NzgxNiwgMTU3ODIwLCAKLSAgICAxNTc4MjQsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzYsIDE1Nzg0MCwgMTU3ODQ0LCAxNTc4NDgsIDE1Nzg1MiwgMTU3ODU2LCAKLSAgICAxNTc4NjAsIDE1Nzg2NCwgMTU3ODY4LCAxNTc4NzIsIDE1Nzg3NiwgMTU3ODgwLCAxNTc4ODQsIDE1Nzg4OCwgMTU3ODkyLCAKLSAgICAxNTc4OTYsIDE1NzkwMCwgMTU3OTA0LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI4LCAKLSAgICAxNTc5MzIsIDE1NzkzNiwgMTU3OTQwLCAxNTc5NDQsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MCwgMTU3OTY0LCAKLSAgICAxNTc5NjgsIDE1Nzk3MiwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4NCwgMTU3OTg4LCAxNTc5OTIsIDE1Nzk5NiwgMTU4MDAwLCAKLSAgICAxNTgwMDQsIDE1ODAwOCwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjgsIDE1ODAzMiwgMTU4MDM2LCAKLSAgICAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTIsIDE1ODA1NiwgMTU4MDYwLCAxNTgwNjQsIDE1ODA2OCwgMTU4MDcyLCAKLSAgICAxNTgwNzYsIDE1ODA4MCwgMTU4MDg0LCAxNTgwODgsIDE1ODA5MiwgMTU4MDk2LCAxNTgxMDAsIDE1ODEwNCwgMTU4MTA4LCAKLSAgICAxNTgxMTIsIDE1ODExNiwgMTU4MTIwLCAxNTgxMjQsIDE1ODEyOCwgMTU4MTMyLCAxNTgxMzYsIDE1ODE0MCwgMTU4MTQ0LCAKLSAgICAxNTgxNDgsIDE1ODE1MiwgMTU4MTU2LCAxNTgxNjAsIDE1ODE2NCwgMTU4MTY4LCAxNTgxNzIsIDE1ODE3NiwgMTU4MTgwLCAKLSAgICAxNTgxODQsIDE1ODE4OCwgMTU4MTkyLCAxNTgxOTYsIDE1ODIwMCwgMTU4MjA0LCAxNTgyMDgsIDE1ODIxMiwgMTU4MjE2LCAKLSAgICAxNTgyMjAsIDE1ODIyNCwgMTU4MjI4LCAxNTgyMzIsIDE1ODIzNiwgMTU4MjQwLCAxNTgyNDQsIDE1ODI0OCwgMTU4MjUyLCAKLSAgICAxNTgyNTYsIDE1ODI2MCwgMTU4MjY0LCAxNTgyNjgsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODAsIDE1ODI4NCwgMTU4Mjg4LCAKLSAgICAxNTgyOTIsIDE1ODI5NiwgMTU4MzAwLCAxNTgzMDQsIDE1ODMwOCwgMTU4MzEyLCAxNTgzMTYsIDE1ODMyMCwgMTU4MzI0LCAKLSAgICAxNTgzMjgsIDE1ODMzMiwgMTU4MzM2LCAxNTgzNDAsIDE1ODM0NCwgMTU4MzQ4LCAxNTgzNTIsIDE1ODM1NiwgMTU4MzYwLCAKLSAgICAxNTgzNjQsIDE1ODM2OCwgMTU4MzcyLCAxNTgzNzYsIDE1ODM4MCwgMTU4Mzg0LCAxNTgzODgsIDE1ODM5MiwgMTU4Mzk2LCAKLSAgICAxNTg0MDAsIDE1ODQwNCwgMTU4NDA4LCAxNTg0MTIsIDE1ODQxNiwgMTU4NDIwLCAxNTg0MjQsIDE1ODQyOCwgMTU4NDMyLCAKLSAgICAxNTg0MzYsIDE1ODQ0MCwgMTU4NDQ0LCAxNTg0NDgsIDE1ODQ1MiwgMTU4NDU2LCAxNTg0NjAsIDE1ODQ2NCwgMTU4NDY4LCAKLSAgICAxNTg0NzIsIDE1ODQ3NiwgMTU4NDgwLCAxNTg0ODQsIDE1ODQ4OCwgMTU4NDkyLCAxNTg0OTYsIDE1ODUwMCwgMTU4NTA0LCAKLSAgICAxNTg1MDgsIDE1ODUxMiwgMTU4NTE2LCAxNTg1MjAsIDE1ODUyNCwgMTU4NTI4LCAxNTg1MzIsIDE1ODUzNiwgMTU4NTQwLCAKLSAgICAxNTg1NDQsIDE1ODU0OCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2MCwgMTU4NTY0LCAxNTg1NjgsIDE1ODU3MiwgMTU4NTc2LCAKLSAgICAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIDE1ODU5NiwgMTU4NjAwLCAxNTg2MDQsIDE1ODYwOCwgMTU4NjEyLCAKLSAgICAxNTg2MTYsIDE1ODYyMCwgMTU4NjI0LCAxNTg2MjgsIDE1ODYzMiwgMTU4NjM2LCAxNTg2NDAsIDE1ODY0NCwgMTU4NjQ4LCAKLSAgICAxNTg2NTIsIDE1ODY1NiwgMTU4NjYwLCAxNTg2NjQsIDE1ODY2OCwgMTU4NjcyLCAxNTg2NzYsIDE1ODY4MCwgMTU4Njg0LCAKLSAgICAxNTg2ODgsIDE1ODY5MiwgMTU4Njk2LCAxNTg3MDAsIDE1ODcwNCwgMTU4NzA4LCAxNTg3MTIsIDE1ODcxNiwgMTU4NzIwLCAKLSAgICAxNTg3MjQsIDE1ODcyOCwgMTU4NzMyLCAxNTg3MzYsIDE1ODc0MCwgMTU4NzQ0LCAxNTg3NDgsIDE1ODc1MiwgMTU4NzU2LCAKLSAgICAxNTg3NjAsIDE1ODc2NCwgMTU4NzY4LCAxNTg3NzIsIDE1ODc3NiwgMTU4NzgwLCAxNTg3ODQsIDE1ODc4OCwgMTU4NzkyLCAKLSAgICAxNTg3OTYsIDE1ODgwMCwgMTU4ODA0LCAxNTg4MDgsIDE1ODgxMiwgMTU4ODE2LCAxNTg4MjAsIDE1ODgyNCwgMTU4ODI4LCAKLSAgICAxNTg4MzIsIDE1ODgzNiwgMTU4ODQwLCAxNTg4NDQsIDE1ODg0OCwgMTU4ODUyLCAxNTg4NTYsIDE1ODg2MCwgMTU4ODY0LCAKLSAgICAxNTg4NjgsIDE1ODg3MiwgMTU4ODc2LCAxNTg4ODAsIDE1ODg4NCwgMTU4ODg4LCAxNTg4OTIsIDE1ODg5NiwgMTU4OTAwLCAKLSAgICAxNTg5MDQsIDE1ODkwOCwgMTU4OTEyLCAxNTg5MTYsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjgsIDE1ODkzMiwgMTU4OTM2LCAKLSAgICAxNTg5NDAsIDE1ODk0NCwgMTU4OTQ4LCAxNTg5NTIsIDE1ODk1NiwgMTU4OTYwLCAxNTg5NjQsIDE1ODk2OCwgMTU4OTcyLCAKLSAgICAxNTg5NzYsIDE1ODk4MCwgMTU4OTg0LCAxNTg5ODgsIDE1ODk5MiwgMTU4OTk2LCAxNTkwMDAsIDE1OTAwNCwgMTU5MDA4LCAKLSAgICAxNTkwMTIsIDE1OTAxNiwgMTU5MDIwLCAxNTkwMjQsIDE1OTAyOCwgMTU5MDMyLCAxNTkwMzYsIDE1OTA0MCwgMTU5MDQ0LCAKLSAgICAxNTkwNDgsIDE1OTA1MiwgMTU5MDU2LCAxNTkwNjAsIDE1OTA2NCwgMTU5MDY4LCAxNTkwNzIsIDE1OTA3NiwgMTU5MDgwLCAKLSAgICAxNTkwODQsIDE1OTA4OCwgMTU5MDkyLCAxNTkwOTYsIDE1OTEwMCwgMTU5MTA0LCAxNTkxMDgsIDE1OTExMiwgMTU5MTE2LCAKLSAgICAxNTkxMjAsIDE1OTEyNCwgMTU5MTI4LCAxNTkxMzIsIDE1OTEzNiwgMTU5MTQwLCAxNTkxNDQsIDE1OTE0OCwgMTU5MTUyLCAKLSAgICAxNTkxNTYsIDE1OTE2MCwgMTU5MTY0LCAxNTkxNjgsIDE1OTE3MiwgMTU5MTc2LCAxNTkxODAsIDE1OTE4NCwgMTU5MTg4LCAKLSAgICAxNTkxOTIsIDE1OTE5NiwgMTU5MjAwLCAxNTkyMDQsIDE1OTIwOCwgMTU5MjEyLCAxNTkyMTYsIDE1OTIyMCwgMTU5MjI0LCAKLSAgICAxNTkyMjgsIDE1OTIzMiwgMTU5MjM2LCAxNTkyNDAsIDE1OTI0NCwgMTU5MjQ4LCAxNTkyNTIsIDE1OTI1NiwgMTU5MjYwLCAKLSAgICAxNTkyNjQsIDE1OTI2OCwgMTU5MjcyLCAxNTkyNzYsIDE1OTI4MCwgMTU5Mjg0LCAxNTkyODgsIDE1OTI5MiwgMTU5Mjk2LCAKLSAgICAxNTkzMDAsIDE1OTMwNCwgMTU5MzA4LCAxNTkzMTIsIDE1OTMxNiwgMTU5MzIwLCAxNTkzMjQsIDE1OTMyOCwgMTU5MzMyLCAKLSAgICAxNTkzMzYsIDE1OTM0MCwgMTU5MzQ0LCAxNTkzNDgsIDE1OTM1MiwgMTU5MzU2LCAxNTkzNjAsIDE1OTM2NCwgMTU5MzY4LCAKLSAgICAxNTkzNzIsIDE1OTM3NiwgMTU5MzgwLCAxNTkzODQsIDE1OTM4OCwgMTU5MzkyLCAxNTkzOTYsIDE1OTQwMCwgMTU5NDA0LCAKLSAgICAxNTk0MDgsIDE1OTQxMiwgMTU5NDE2LCAxNTk0MjAsIDE1OTQyNCwgMTU5NDI4LCAxNTk0MzIsIDE1OTQzNiwgMTU5NDQwLCAKLSAgICAxNTk0NDQsIDE1OTQ0OCwgMTU5NDUyLCAxNTk0NTYsIDE1OTQ2MCwgMTU5NDY0LCAxNTk0NjgsIDE1OTQ3MiwgMTU5NDc2LCAKLSAgICAxNTk0ODAsIDE1OTQ4NCwgMTU5NDg4LCAxNTk0OTIsIDE1OTQ5NiwgMTU5NTAwLCAxNTk1MDQsIDE1OTUwOCwgMTU5NTEyLCAKLSAgICAxNTk1MTYsIDE1OTUyMCwgMTU5NTI0LCAxNTk1MjgsIDE1OTUzMiwgMTU5NTM2LCAxNTk1NDAsIDE1OTU0NCwgMTU5NTQ4LCAKLSAgICAxNTk1NTIsIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgMTU5NTcyLCAxNTk1NzYsIDE1OTU4MCwgMTU5NTg0LCAKLSAgICAxNTk1ODgsIDE1OTU5MiwgMTU5NTk2LCAxNTk2MDAsIDE1OTYwNCwgMTU5NjA4LCAxNTk2MTIsIDE1OTYxNiwgMTU5NjIwLCAKLSAgICAxNTk2MjQsIDE1OTYyOCwgMTU5NjMyLCAxNTk2MzYsIDE1OTY0MCwgMTU5NjQ0LCAxNTk2NDgsIDE1OTY1MiwgMTU5NjU2LCAKLSAgICAxNTk2NjAsIDE1OTY2NCwgMTU5NjY4LCAxNTk2NzIsIDE1OTY3NiwgMTU5NjgwLCAxNTk2ODQsIDE1OTY4OCwgMTU5NjkyLCAKLSAgICAxNTk2OTYsIDE1OTcwMCwgMTU5NzA0LCAxNTk3MDgsIDE1OTcxMiwgMTU5NzE2LCAxNTk3MjAsIDE1OTcyNCwgMTU5NzI4LCAKLSAgICAxNTk3MzIsIDE1OTczNiwgMTU5NzQwLCAxNTk3NDQsIDE1OTc0OCwgMTU5NzUyLCAxNTk3NTYsIDE1OTc2MCwgMTU5NzY0LCAKLSAgICAxNTk3NjgsIDE1OTc3MiwgMTU5Nzc2LCAxNTk3ODAsIDE1OTc4NCwgMTU5Nzg4LCAxNTk3OTIsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAKKyAgICAxNjM1MDksIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAKKyAgICAxNjM1NDUsIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAKKyAgICAxNjM1ODEsIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAKKyAgICAxNjM2MTcsIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAKKyAgICAxNjM2NTMsIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAKKyAgICAxNjM2ODksIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAKKyAgICAxNjM3MjUsIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAKKyAgICAxNjM3NjEsIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAKKyAgICAxNjM3OTcsIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAKKyAgICAxNjM4MzMsIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAKKyAgICAxNjM4NjksIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAKKyAgICAxNjM5MDUsIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAKKyAgICAxNjM5NDEsIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAKKyAgICAxNjM5NzcsIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAKKyAgICAxNjQwMTMsIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAKKyAgICAxNjQwNDksIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAKKyAgICAxNjQwODUsIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAKKyAgICAxNjQxMjEsIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAKKyAgICAxNjQxNTcsIDE2NDE2MSwgMTY0MTY1LCAxNjQxNjksIDE2NDE3MywgMTY0MTc3LCAxNjQxODEsIDE2NDE4NSwgMTY0MTg5LCAKKyAgICAxNjQxOTMsIDE2NDE5NywgMTY0MjAxLCAxNjQyMDUsIDE2NDIwOSwgMTY0MjEzLCAxNjQyMTcsIDE2NDIyMSwgMTY0MjI1LCAKKyAgICAxNjQyMjksIDE2NDIzMywgMTY0MjM3LCAxNjQyNDEsIDE2NDI0NSwgMTY0MjQ5LCAxNjQyNTMsIDE2NDI1NywgMTY0MjYxLCAKKyAgICAxNjQyNjUsIDE2NDI2OSwgMTY0MjczLCAxNjQyNzcsIDE2NDI4MSwgMTY0Mjg1LCAxNjQyODksIDE2NDI5MywgMTY0Mjk3LCAKKyAgICAxNjQzMDEsIDE2NDMwNSwgMTY0MzA5LCAxNjQzMTMsIDE2NDMxNywgMTY0MzIxLCAxNjQzMjUsIDE2NDMyOSwgMTY0MzMzLCAKKyAgICAxNjQzMzcsIDE2NDM0MSwgMTY0MzQ1LCAxNjQzNDksIDE2NDM1MywgMTY0MzU3LCAxNjQzNjEsIDE2NDM2NSwgMTY0MzY5LCAKKyAgICAxNjQzNzMsIDE2NDM3NywgMTY0MzgxLCAxNjQzODUsIDE2NDM4OSwgMTY0MzkzLCAxNjQzOTcsIDE2NDQwMSwgMTY0NDA1LCAKKyAgICAxNjQ0MDksIDE2NDQxMywgMTY0NDE3LCAxNjQ0MjEsIDE2NDQyNSwgMTY0NDI5LCAxNjQ0MzMsIDE2NDQzNywgMTY0NDQxLCAKKyAgICAxNjQ0NDUsIDE2NDQ0OSwgMTY0NDUzLCAxNjQ0NTcsIDE2NDQ2MSwgMTY0NDY1LCAxNjQ0NjksIDE2NDQ3MywgMTY0NDc3LCAKKyAgICAxNjQ0ODEsIDE2NDQ4NSwgMTY0NDg5LCAxNjQ0OTMsIDE2NDQ5NywgMTY0NTAxLCAxNjQ1MDUsIDE2NDUwOSwgMTY0NTEzLCAKKyAgICAxNjQ1MTcsIDE2NDUyMSwgMTY0NTI1LCAxNjQ1MjksIDE2NDUzMywgMTY0NTM3LCAxNjQ1NDEsIDE2NDU0NSwgMTY0NTQ5LCAKKyAgICAxNjQ1NTMsIDE2NDU1NywgMTY0NTYxLCAxNjQ1NjUsIDE2NDU2OSwgMTY0NTczLCAxNjQ1NzcsIDE2NDU4MSwgMTY0NTg1LCAKKyAgICAxNjQ1ODksIDE2NDU5MywgMTY0NTk3LCAxNjQ2MDEsIDE2NDYwNSwgMTY0NjA5LCAxNjQ2MTMsIDE2NDYxNywgMTY0NjIxLCAKKyAgICAxNjQ2MjUsIDE2NDYyOSwgMTY0NjMzLCAxNjQ2MzcsIDE2NDY0MSwgMTY0NjQ1LCAxNjQ2NDksIDE2NDY1MywgMTY0NjU3LCAKKyAgICAxNjQ2NjEsIDE2NDY2NSwgMTY0NjY5LCAxNjQ2NzMsIDE2NDY3NywgMTY0NjgxLCAxNjQ2ODUsIDE2NDY4OSwgMTY0NjkzLCAKKyAgICAxNjQ2OTcsIDE2NDcwMSwgMTY0NzA1LCAxNjQ3MDksIDE2NDcxMywgMTY0NzE3LCAxNjQ3MjEsIDE2NDcyNSwgMTY0NzI5LCAKKyAgICAxNjQ3MzMsIDE2NDczNywgMTY0NzQxLCAxNjQ3NDUsIDE2NDc0OSwgMTY0NzUzLCAxNjQ3NTcsIDE2NDc2MSwgMTY0NzY1LCAKKyAgICAxNjQ3NjksIDE2NDc3MywgMTY0Nzc3LCAxNjQ3ODEsIDE2NDc4NSwgMTY0Nzg5LCAxNjQ3OTMsIDE2NDc5NywgMTY0ODAxLCAKKyAgICAxNjQ4MDUsIDE2NDgwOSwgMTY0ODEzLCAxNjQ4MTcsIDE2NDgyMSwgMTY0ODI1LCAxNjQ4MjksIDE2NDgzMywgMTY0ODM3LCAKKyAgICAxNjQ4NDEsIDE2NDg0NSwgMTY0ODQ5LCAxNjQ4NTMsIDE2NDg1NywgMTY0ODYxLCAxNjQ4NjUsIDE2NDg2OSwgMTY0ODczLCAKKyAgICAxNjQ4NzcsIDE2NDg4MSwgMTY0ODg1LCAxNjQ4ODksIDE2NDg5MywgMTY0ODk3LCAxNjQ5MDEsIDE2NDkwNSwgMTY0OTA5LCAKKyAgICAxNjQ5MTMsIDE2NDkxNywgMTY0OTIxLCAxNjQ5MjUsIDE2NDkyOSwgMTY0OTMzLCAxNjQ5MzcsIDE2NDk0MSwgMTY0OTQ1LCAKKyAgICAxNjQ5NDksIDE2NDk1MywgMTY0OTU3LCAxNjQ5NjEsIDE2NDk2NSwgMTY0OTY5LCAxNjQ5NzMsIDE2NDk3NywgMTY0OTgxLCAKKyAgICAxNjQ5ODUsIDE2NDk4OSwgMTY0OTkzLCAxNjQ5OTcsIDE2NTAwMSwgMTY1MDA1LCAxNjUwMDksIDE2NTAxMywgMTY1MDE3LCAKKyAgICAxNjUwMjEsIDE2NTAyNSwgMTY1MDI5LCAxNjUwMzMsIDE2NTAzNywgMTY1MDQxLCAxNjUwNDUsIDE2NTA0OSwgMTY1MDUzLCAKKyAgICAxNjUwNTcsIDE2NTA2MSwgMTY1MDY1LCAxNjUwNjksIDE2NTA3MywgMTY1MDc3LCAxNjUwODEsIDE2NTA4NSwgMTY1MDg5LCAKKyAgICAxNjUwOTMsIDE2NTA5NywgMTY1MTAxLCAxNjUxMDUsIDE2NTEwOSwgMTY1MTEzLCAxNjUxMTcsIDE2NTEyMSwgMTY1MTI1LCAKKyAgICAxNjUxMjksIDE2NTEzMywgMTY1MTM3LCAxNjUxNDEsIDE2NTE0NSwgMTY1MTQ5LCAxNjUxNTMsIDE2NTE1NywgMTY1MTYxLCAKKyAgICAxNjUxNjUsIDE2NTE2OSwgMTY1MTczLCAxNjUxNzcsIDE2NTE4MSwgMTY1MTg1LCAxNjUxODksIDE2NTE5MywgMTY1MTk3LCAKKyAgICAxNjUyMDEsIDE2NTIwNSwgMTY1MjA5LCAxNjUyMTMsIDE2NTIxNywgMTY1MjIxLCAxNjUyMjUsIDE2NTIyOSwgMTY1MjMzLCAKKyAgICAxNjUyMzcsIDE2NTI0MSwgMTY1MjQ1LCAxNjUyNDksIDE2NTI1MywgMTY1MjU3LCAxNjUyNjEsIDE2NTI2NSwgMTY1MjY5LCAKKyAgICAxNjUyNzMsIDE2NTI3NywgMTY1MjgxLCAxNjUyODUsIDE2NTI4OSwgMTY1MjkzLCAxNjUyOTcsIDE2NTMwMSwgMTY1MzA1LCAKKyAgICAxNjUzMDksIDE2NTMxMywgMTY1MzE3LCAxNjUzMjEsIDE2NTMyNSwgMTY1MzI5LCAxNjUzMzMsIDE2NTMzNywgMTY1MzQxLCAKKyAgICAxNjUzNDUsIDE2NTM0OSwgMTY1MzUzLCAxNjUzNTcsIDE2NTM2MSwgMTY1MzY1LCAxNjUzNjksIDE2NTM3MywgMTY1Mzc3LCAKKyAgICAxNjUzODEsIDE2NTM4NSwgMTY1Mzg5LCAxNjUzOTMsIDE2NTM5NywgMTY1NDAxLCAxNjU0MDUsIDE2NTQwOSwgMTY1NDEzLCAKKyAgICAxNjU0MTcsIDE2NTQyMSwgMTY1NDI1LCAxNjU0MjksIDE2NTQzMywgMTY1NDM3LCAxNjU0NDEsIDE2NTQ0NSwgMTY1NDQ5LCAKKyAgICAxNjU0NTMsIDE2NTQ1NywgMTY1NDYxLCAxNjU0NjUsIDE2NTQ2OSwgMTY1NDczLCAxNjU0NzcsIDE2NTQ4MSwgMTY1NDg1LCAKKyAgICAxNjU0ODksIDE2NTQ5MywgMTY1NDk3LCAxNjU1MDEsIDE2NTUwNSwgMTY1NTA5LCAxNjU1MTMsIDE2NTUxNywgMTY1NTIxLCAKKyAgICAxNjU1MjUsIDE2NTUyOSwgMTY1NTMzLCAxNjU1MzcsIDE2NTU0MSwgMTY1NTQ1LCAxNjU1NDksIDE2NTU1MywgMTY1NTU3LCAKKyAgICAxNjU1NjEsIDE2NTU2NSwgMTY1NTY5LCAxNjU1NzMsIDE2NTU3NywgMTY1NTgxLCAxNjU1ODUsIDE2NTU4OSwgMTY1NTkzLCAKKyAgICAxNjU1OTcsIDE2NTYwMSwgMTY1NjA1LCAxNjU2MDksIDE2NTYxMywgMTY1NjE3LCAxNjU2MjEsIDE2NTYyNSwgMTY1NjI5LCAKKyAgICAxNjU2MzMsIDE2NTYzNywgMTY1NjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTIwMDc4LDMxODYgKzIxMzUzLDMyNzkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNTk3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OTgwMCwgMTU5ODAzLCAxNTk4MDcsIDE1OTgxMSwgCi0gICAgMTU5ODE0LCAxNTk4MTgsIDE1OTgyMiwgMTU5ODI1LCAxNTk4MjgsIDE1OTgzMiwgMTU5ODM2LCAxNTk4MzksIDE1OTg0MiwgCi0gICAgMTU5ODQ1LCAxNTk4NDgsIDE1OTg1MywgMTU5ODU2LCAxNTk4NjAsIDE1OTg2MywgMTU5ODY2LCAxNTk4NjksIDE1OTg3MiwgCi0gICAgMTU5ODc1LCAxNTk4NzgsIDE1OTg4MiwgMTU5ODg1LCAxNTk4ODksIDE1OTg5MiwgMTU5ODk1LCAxNTk4OTksIDE1OTkwMywgCi0gICAgMTU5OTA3LCAxNTk5MTEsIDE1OTkxNiwgMTU5OTIxLCAxNTk5MjcsIDE1OTkzMywgMTU5OTM5LCAxNTk5NDQsIDE1OTk1MCwgCi0gICAgMTU5OTU2LCAxNTk5NjIsIDE1OTk2NywgMTU5OTczLCAxNTk5NzksIDE1OTk4NCwgMTU5OTkwLCAxNTk5OTYsIDE2MDAwMSwgCi0gICAgMTYwMDA3LCAxNjAwMTMsIDE2MDAxOCwgMTYwMDIzLCAxNjAwMjksIDE2MDAzNCwgMTYwMDQwLCAxNjAwNDYsIDE2MDA1MiwgCi0gICAgMTYwMDU4LCAxNjAwNjQsIDE2MDA2OCwgMTYwMDczLCAxNjAwNzcsIDE2MDA4MiwgMTYwMDg2LCAxNjAwOTEsIDE2MDA5NiwgCi0gICAgMTYwMTAyLCAxNjAxMDgsIDE2MDExNCwgMTYwMTE5LCAxNjAxMjUsIDE2MDEzMSwgMTYwMTM3LCAxNjAxNDIsIDE2MDE0OCwgCi0gICAgMTYwMTU0LCAxNjAxNTksIDE2MDE2NSwgMTYwMTcxLCAxNjAxNzYsIDE2MDE4MiwgMTYwMTg4LCAxNjAxOTMsIDE2MDE5OCwgCi0gICAgMTYwMjA0LCAxNjAyMDksIDE2MDIxNSwgMTYwMjIxLCAxNjAyMjcsIDE2MDIzMywgMTYwMjM5LCAxNjAyNDQsIDE2MDI0OCwgCi0gICAgMTYwMjUzLCAxNjAyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NTY0NSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTY1NjQ5LCAxNjU2NTIsIDE2NTY1NiwgMTY1NjYwLCAxNjU2NjMsIDE2NTY2NywgMTY1NjcxLCAxNjU2NzQsIAorICAgIDE2NTY3NywgMTY1NjgxLCAxNjU2ODUsIDE2NTY4OCwgMTY1NjkxLCAxNjU2OTQsIDE2NTY5NywgMTY1NzAyLCAxNjU3MDUsIAorICAgIDE2NTcwOSwgMTY1NzEyLCAxNjU3MTUsIDE2NTcxOCwgMTY1NzIxLCAxNjU3MjQsIDE2NTcyNywgMTY1NzMxLCAxNjU3MzQsIAorICAgIDE2NTczOCwgMTY1NzQxLCAxNjU3NDQsIDE2NTc0OCwgMTY1NzUyLCAxNjU3NTYsIDE2NTc2MCwgMTY1NzY1LCAxNjU3NzAsIAorICAgIDE2NTc3NiwgMTY1NzgyLCAxNjU3ODgsIDE2NTc5MywgMTY1Nzk5LCAxNjU4MDUsIDE2NTgxMSwgMTY1ODE2LCAxNjU4MjIsIAorICAgIDE2NTgyOCwgMTY1ODMzLCAxNjU4MzksIDE2NTg0NSwgMTY1ODUwLCAxNjU4NTYsIDE2NTg2MiwgMTY1ODY3LCAxNjU4NzMsIAorICAgIDE2NTg3OSwgMTY1ODg0LCAxNjU4OTAsIDE2NTg5NiwgMTY1OTAyLCAxNjU5MDgsIDE2NTkxNCwgMTY1OTE4LCAxNjU5MjMsIAorICAgIDE2NTkyNywgMTY1OTMyLCAxNjU5MzYsIDE2NTk0MSwgMTY1OTQ2LCAxNjU5NTIsIDE2NTk1OCwgMTY1OTY0LCAxNjU5NjksIAorICAgIDE2NTk3NSwgMTY1OTgxLCAxNjU5ODcsIDE2NTk5MiwgMTY1OTk4LCAxNjYwMDQsIDE2NjAwOSwgMTY2MDE1LCAxNjYwMjEsIAorICAgIDE2NjAyNiwgMTY2MDMyLCAxNjYwMzgsIDE2NjA0MywgMTY2MDQ5LCAxNjYwNTUsIDE2NjA2MCwgMTY2MDY2LCAxNjYwNzIsIAorICAgIDE2NjA3OCwgMTY2MDg0LCAxNjYwOTAsIDE2NjA5NSwgMTY2MDk5LCAxNjYxMDQsIDE2NjEwNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMjYwLCAxNjAyNjMsIDE2MDI2NiwgMTYwMjY5LCAKLSAgICAxNjAyNzIsIDE2MDI3NSwgMTYwMjc4LCAxNjAyODEsIDE2MDI4NCwgMTYwMjg3LCAxNjAyOTAsIDE2MDI5MywgMTYwMjk2LCAKLSAgICAxNjAyOTksIDE2MDMwMiwgMTYwMzA1LCAxNjAzMDgsIDE2MDMxMSwgMTYwMzE0LCAxNjAzMTcsIDE2MDMyMCwgMTYwMzIzLCAKLSAgICAxNjAzMjYsIDE2MDMyOSwgMTYwMzMyLCAxNjAzMzUsIDE2MDMzOCwgMTYwMzQxLCAxNjAzNDQsIDE2MDM0NywgMTYwMzUwLCAKLSAgICAxNjAzNTMsIDE2MDM1NiwgMTYwMzU5LCAxNjAzNjIsIDE2MDM2NSwgMTYwMzY4LCAxNjAzNzEsIDE2MDM3NCwgMTYwMzc3LCAKLSAgICAxNjAzODAsIDE2MDM4MywgMTYwMzg2LCAxNjAzODksIDE2MDM5MiwgMTYwMzk1LCAxNjAzOTgsIDE2MDQwMSwgMTYwNDA0LCAKLSAgICAxNjA0MDcsIDE2MDQxMCwgMTYwNDEzLCAxNjA0MTYsIDE2MDQxOSwgMTYwNDIyLCAxNjA0MjUsIDE2MDQyOCwgMTYwNDMxLCAKLSAgICAxNjA0MzQsIDE2MDQzNywgMTYwNDQwLCAxNjA0NDMsIDE2MDQ0NiwgMTYwNDQ5LCAxNjA0NTIsIDE2MDQ1NSwgMTYwNDU4LCAKLSAgICAxNjA0NjEsIDE2MDQ2NCwgMTYwNDY3LCAxNjA0NzAsIDE2MDQ3MywgMTYwNDc2LCAxNjA0NzksIDE2MDQ4MiwgMTYwNDg1LCAKLSAgICAxNjA0ODgsIDE2MDQ5MSwgMTYwNDk0LCAxNjA0OTcsIDE2MDUwMCwgMTYwNTAzLCAxNjA1MDYsIDE2MDUwOSwgMTYwNTEyLCAKLSAgICAxNjA1MTUsIDE2MDUxOCwgMTYwNTIxLCAxNjA1MjQsIDE2MDUyNywgMTYwNTMwLCAxNjA1MzMsIDE2MDUzNiwgMTYwNTM5LCAKLSAgICAxNjA1NDIsIDE2MDU0NSwgMTYwNTQ4LCAxNjA1NTEsIDE2MDU1NCwgMTYwNTU3LCAxNjA1NjAsIDE2MDU2MywgMTYwNTY2LCAKLSAgICAxNjA1NjksIDE2MDU3MiwgMTYwNTc1LCAxNjA1NzgsIDE2MDU4MSwgMTYwNTg0LCAxNjA1ODcsIDE2MDU5MCwgMTYwNTkzLCAKLSAgICAxNjA1OTYsIDE2MDU5OSwgMTYwNjAyLCAxNjA2MDUsIDE2MDYwOCwgMTYwNjExLCAxNjA2MTQsIDE2MDYxNywgMTYwNjIwLCAKLSAgICAxNjA2MjMsIDE2MDYyNiwgMTYwNjI5LCAxNjA2MzIsIDE2MDYzNSwgMTYwNjM4LCAxNjA2NDEsIDE2MDY0NCwgMTYwNjQ3LCAKLSAgICAxNjA2NTAsIDE2MDY1MywgMTYwNjU2LCAxNjA2NTksIDE2MDY2MiwgMTYwNjY1LCAxNjA2NjgsIDE2MDY3MSwgMTYwNjc0LCAKLSAgICAxNjA2NzcsIDE2MDY4MCwgMTYwNjgzLCAxNjA2ODYsIDE2MDY4OSwgMTYwNjkyLCAxNjA2OTUsIDE2MDY5OCwgMTYwNzAxLCAKLSAgICAxNjA3MDQsIDE2MDcwNywgMTYwNzEwLCAxNjA3MTMsIDE2MDcxNiwgMTYwNzE5LCAxNjA3MjIsIDE2MDcyNSwgMTYwNzI4LCAKLSAgICAxNjA3MzEsIDE2MDczNCwgMTYwNzM3LCAxNjA3NDAsIDE2MDc0MywgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU1LCAKLSAgICAxNjA3NTgsIDE2MDc2MSwgMTYwNzY0LCAxNjA3NjcsIDE2MDc3MCwgMTYwNzczLCAxNjA3NzYsIDE2MDc3OSwgMTYwNzgyLCAKLSAgICAxNjA3ODUsIDE2MDc4OCwgMTYwNzkxLCAxNjA3OTQsIDE2MDc5NywgMTYwODAwLCAxNjA4MDMsIDE2MDgwNiwgMTYwODA5LCAKLSAgICAxNjA4MTIsIDE2MDgxNSwgMTYwODE4LCAxNjA4MjEsIDE2MDgyNCwgMTYwODI3LCAxNjA4MzAsIDE2MDgzMywgMTYwODM2LCAKLSAgICAxNjA4MzksIDE2MDg0MiwgMTYwODQ1LCAxNjA4NDgsIDE2MDg1MSwgMTYwODU0LCAxNjA4NTcsIDE2MDg2MCwgMTYwODYzLCAKLSAgICAxNjA4NjYsIDE2MDg2OSwgMTYwODcyLCAxNjA4NzUsIDE2MDg3OCwgMTYwODgxLCAxNjA4ODQsIDE2MDg4NywgMTYwODkwLCAKLSAgICAxNjA4OTMsIDE2MDg5NiwgMTYwODk5LCAxNjA5MDIsIDE2MDkwNSwgMTYwOTA4LCAxNjA5MTEsIDE2MDkxNCwgMTYwOTE3LCAKLSAgICAxNjA5MjAsIDE2MDkyMywgMTYwOTI2LCAxNjA5MjksIDE2MDkzMiwgMTYwOTM1LCAxNjA5MzgsIDE2MDk0MSwgMTYwOTQ0LCAKLSAgICAxNjA5NDcsIDE2MDk1MCwgMTYwOTUzLCAxNjA5NTYsIDE2MDk1OSwgMTYwOTYyLCAxNjA5NjUsIDE2MDk2OCwgMTYwOTcxLCAKLSAgICAxNjA5NzQsIDE2MDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwOTgwLCAKLSAgICAxNjA5ODIsIDE2MDk4NCwgMTYwOTg5LCAxNjA5OTEsIDE2MDk5NiwgMTYwOTk4LCAxNjEwMDMsIDE2MTAwNSwgMTYxMDEwLCAKLSAgICAxNjEwMTIsIDE2MTAxNCwgMTYxMDE2LCAxNjEwMTgsIDE2MTAyMCwgMTYxMDIyLCAxNjEwMjQsIDE2MTAyNiwgMTYxMDI4LCAKLSAgICAxNjEwMzEsIDE2MTAzNSwgMTYxMDM3LCAxNjEwMzksIDE2MTA0MywgMTYxMDQ3LCAxNjEwNTIsIDE2MTA1NCwgMTYxMDU2LCAKLSAgICAxNjEwNTgsIDE2MTA2MiwgMTYxMDY1LCAxNjEwNjcsIDE2MTA3MSwgMTYxMDczLCAxNjEwNzcsIDE2MTA3OSwgMTYxMDgzLCAKLSAgICAxNjEwODYsIDE2MTA4OCwgMTYxMDkyLCAxNjEwOTYsIDE2MTA5OCwgMTYxMTA0LCAxNjExMDYsIDE2MTExMSwgMTYxMTEzLCAKLSAgICAxNjExMTgsIDE2MTEyMCwgMTYxMTI1LCAxNjExMjcsIDE2MTEzMiwgMTYxMTM0LCAxNjExMzcsIDE2MTEzOSwgMTYxMTQzLCAKLSAgICAxNjExNDUsIDE2MTE1MiwgMTYxMTU0LCAxNjExNTYsIDE2MTE1OCwgMTYxMTYzLCAxNjExNjUsIDE2MTE2NywgMTYxMTY5LCAKLSAgICAxNjExNzEsIDE2MTE3MywgMTYxMTc4LCAxNjExODIsIDE2MTE4NCwgMTYxMTg5LCAxNjExOTMsIDE2MTE5NSwgMTYxMjAwLCAKLSAgICAxNjEyMDQsIDE2MTIwNiwgMTYxMjExLCAxNjEyMTUsIDE2MTIxNywgMTYxMjE5LCAxNjEyMjEsIDE2MTIyMywgMTYxMjI3LCAKLSAgICAxNjEyMjksIDE2MTIzNCwgMTYxMjM2LCAxNjEyNDIsIDE2MTI0NCwgMTYxMjUwLCAxNjEyNTIsIDE2MTI1NCwgMTYxMjU2LCAKLSAgICAxNjEyNjAsIDE2MTI2MiwgMTYxMjY5LCAxNjEyNzEsIDE2MTI3OCwgMTYxMjgwLCAxNjEyODUsIDE2MTI5MSwgMTYxMjkzLCAKLSAgICAxNjEyOTksIDE2MTMwNiwgMTYxMzA4LCAxNjEzMTQsIDE2MTMxOSwgMTYxMzIxLCAxNjEzMjcsIDE2MTMzMywgMTYxMzM1LCAKLSAgICAxNjEzNDEsIDE2MTM0NywgMTYxMzQ5LCAxNjEzNTUsIDE2MTM1OSwgMTYxMzYxLCAxNjEzNjYsIDE2MTM2OCwgMTYxMzcwLCAKLSAgICAxNjEzNzUsIDE2MTM3NywgMTYxMzc5LCAxNjEzODUsIDE2MTM4NywgMTYxMzkyLCAxNjEzOTYsIDE2MTM5OCwgMTYxNDAzLCAKLSAgICAxNjE0MDcsIDE2MTQwOSwgMTYxNDE1LCAxNjE0MTcsIDE2MTQyMSwgMTYxNDIzLCAxNjE0MjcsIDE2MTQyOSwgMTYxNDM2LCAKLSAgICAxNjE0NDMsIDE2MTQ0NSwgMTYxNDUyLCAxNjE0NTksIDE2MTQ2MSwgMTYxNDY2LCAxNjE0NjgsIDE2MTQ3NSwgMTYxNDc3LCAKLSAgICAxNjE0ODIsIDE2MTQ4NCwgMTYxNDkwLCAxNjE0OTIsIDE2MTQ5NiwgMTYxNDk4LCAxNjE1MDQsIDE2MTUwNiwgMTYxNTEwLCAKLSAgICAxNjE1MTIsIDE2MTUxOCwgMTYxNTIwLCAxNjE1MjIsIDE2MTUyNCwgMTYxNTI5LCAxNjE1MzQsIDE2MTUzNiwgMTYxNTM4LCAKLSAgICAxNjE1NDgsIDE2MTU1MiwgMTYxNTU5LCAxNjE1NjYsIDE2MTU3MSwgMTYxNTc2LCAxNjE1ODgsIDE2MTU5MCwgMTYxNTkyLCAKLSAgICAxNjE1OTQsIDE2MTU5NiwgMTYxNTk4LCAxNjE2MDAsIDE2MTYwMiwgMTYxNjA0LCAxNjE2MDYsIDE2MTYwOCwgMTYxNjEwLCAKLSAgICAxNjE2MTIsIDE2MTYxNCwgMTYxNjE2LCAxNjE2MTgsIDE2MTYyMCwgMTYxNjIyLCAxNjE2MjQsIDE2MTYyNiwgMTYxNjI4LCAKLSAgICAxNjE2MzAsIDE2MTYzNiwgMTYxNjQzLCAxNjE2NDgsIDE2MTY1NiwgMTYxNjY0LCAxNjE2NjksIDE2MTY4MCwgMTYxNjgyLCAKLSAgICAxNjE2ODQsIDE2MTY4NiwgMTYxNjg4LCAxNjE2OTAsIDE2MTY5MiwgMTYxNjk0LCAxNjE2OTYsIDE2MTY5OCwgMTYxNzAwLCAKLSAgICAxNjE3MDIsIDE2MTcwNCwgMTYxNzA2LCAxNjE3MDgsIDE2MTcxMCwgMTYxNzEyLCAxNjE3MTcsIDE2MTcxOSwgMTYxNzIxLCAKLSAgICAxNjE3MjcsIDE2MTczOSwgMTYxNzUwLCAxNjE3NTIsIDE2MTc1NCwgMTYxNzU2LCAxNjE3NTgsIDE2MTc2MCwgMTYxNzYyLCAKLSAgICAxNjE3NjQsIDE2MTc2NiwgMTYxNzY4LCAxNjE3NzAsIDE2MTc3MiwgMTYxNzc0LCAxNjE3NzYsIDE2MTc3OCwgMTYxNzgwLCAKLSAgICAxNjE3ODIsIDE2MTc4NCwgMTYxNzg2LCAxNjE3ODgsIDE2MTc5MCwgMTYxNzkyLCAxNjE3OTQsIDE2MTc5NiwgMTYxNzk4LCAKLSAgICAxNjE4MDAsIDE2MTgwMiwgMTYxODA0LCAxNjE4MDYsIDE2MTgwOCwgMTYxODEwLCAxNjE4MTIsIDE2MTgxNCwgMTYxODE2LCAKLSAgICAxNjE4MTgsIDE2MTgyMCwgMTYxODIyLCAxNjE4MjQsIDE2MTgyNiwgMTYxODI4LCAxNjE4MzAsIDE2MTgzMiwgMTYxODM0LCAKLSAgICAxNjE4MzYsIDE2MTgzOCwgMTYxODQwLCAxNjE4NDIsIDE2MTg0NCwgMTYxODQ2LCAxNjE4NDgsIDE2MTg1MCwgMTYxODUyLCAKLSAgICAxNjE4NTQsIDE2MTg1NiwgMTYxODU4LCAxNjE4NjAsIDE2MTg2MiwgMTYxODY0LCAxNjE4NjYsIDE2MTg2OCwgMTYxODcwLCAKLSAgICAxNjE4NzIsIDE2MTg3NCwgMTYxODc2LCAxNjE4NzgsIDE2MTg4MCwgMTYxODgyLCAxNjE4ODQsIDE2MTg4NiwgMTYxODg4LCAKLSAgICAxNjE4OTAsIDE2MTg5MiwgMTYxODk0LCAxNjE4OTYsIDE2MTg5OCwgMTYxOTAwLCAxNjE5MDIsIDE2MTkwNCwgMTYxOTA2LCAKLSAgICAxNjE5MDgsIDE2MTkxMCwgMTYxOTEyLCAxNjE5MTQsIDE2MTkxNiwgMTYxOTE4LCAxNjE5MjAsIDE2MTkyMiwgMTYxOTI0LCAKLSAgICAxNjE5MjYsIDE2MTkyOCwgMTYxOTMwLCAxNjE5MzIsIDE2MTkzNCwgMTYxOTM2LCAxNjE5MzgsIDE2MTk0MCwgMTYxOTQyLCAKLSAgICAxNjE5NDQsIDE2MTk0NiwgMTYxOTQ4LCAxNjE5NTAsIDE2MTk1MiwgMTYxOTU0LCAxNjE5NTYsIDE2MTk1OCwgMTYxOTYwLCAKLSAgICAxNjE5NjIsIDE2MTk2NCwgMTYxOTY2LCAxNjE5NjgsIDE2MTk3MCwgMTYxOTcyLCAxNjE5NzQsIDE2MTk3NiwgMTYxOTc4LCAKLSAgICAxNjE5ODAsIDE2MTk4MiwgMTYxOTg0LCAxNjE5ODYsIDE2MTk4OCwgMTYxOTkwLCAxNjE5OTIsIDE2MTk5NCwgMTYxOTk2LCAKLSAgICAxNjE5OTgsIDE2MjAwMCwgMTYyMDAyLCAxNjIwMDQsIDE2MjAwNiwgMTYyMDA4LCAxNjIwMTAsIDE2MjAxMiwgMTYyMDE0LCAKLSAgICAxNjIwMTYsIDE2MjAxOCwgMTYyMDIwLCAxNjIwMjIsIDE2MjAyNCwgMTYyMDI2LCAxNjIwMjgsIDE2MjAzMCwgMTYyMDMyLCAKLSAgICAxNjIwMzQsIDE2MjAzNiwgMTYyMDM4LCAxNjIwNDAsIDE2MjA0MiwgMTYyMDQ0LCAxNjIwNDYsIDE2MjA0OCwgMTYyMDUwLCAKLSAgICAxNjIwNTIsIDE2MjA1NCwgMTYyMDU2LCAxNjIwNTgsIDE2MjA2MCwgMTYyMDYyLCAxNjIwNjQsIDE2MjA2NiwgMTYyMDY4LCAKLSAgICAxNjIwNzAsIDE2MjA3MiwgMTYyMDc0LCAxNjIwNzYsIDE2MjA3OCwgMTYyMDgwLCAxNjIwODIsIDE2MjA4NCwgMTYyMDg2LCAKLSAgICAxNjIwODgsIDE2MjA5MCwgMTYyMDkyLCAxNjIwOTQsIDE2MjA5NiwgMTYyMDk4LCAxNjIxMDAsIDE2MjEwMiwgMTYyMTA0LCAKLSAgICAxNjIxMDYsIDE2MjEwOCwgMTYyMTEwLCAxNjIxMTIsIDE2MjExNCwgMTYyMTE2LCAxNjIxMTgsIDE2MjEyMCwgMTYyMTIyLCAKLSAgICAxNjIxMjQsIDE2MjEyNiwgMTYyMTI4LCAxNjIxMzAsIDE2MjEzMiwgMTYyMTM0LCAxNjIxMzYsIDE2MjEzOCwgMTYyMTQwLCAKLSAgICAxNjIxNDIsIDE2MjE0NCwgMTYyMTQ2LCAxNjIxNDgsIDE2MjE1MCwgMTYyMTUyLCAxNjIxNTQsIDE2MjE1NiwgMTYyMTU4LCAKLSAgICAxNjIxNjAsIDE2MjE2MiwgMTYyMTY0LCAxNjIxNjYsIDE2MjE2OCwgMTYyMTcwLCAxNjIxNzIsIDE2MjE3NCwgMTYyMTc2LCAKLSAgICAxNjIxNzgsIDE2MjE4MCwgMTYyMTgyLCAxNjIxODQsIDE2MjE4NiwgMTYyMTg4LCAxNjIxOTAsIDE2MjE5MiwgMTYyMTk0LCAKLSAgICAxNjIxOTYsIDE2MjE5OCwgMTYyMjAwLCAxNjIyMDIsIDE2MjIwNCwgMTYyMjA2LCAxNjIyMDgsIDE2MjIxMCwgMTYyMjEyLCAKLSAgICAxNjIyMTQsIDE2MjIxNiwgMTYyMjE4LCAxNjIyMjAsIDE2MjIyMiwgMTYyMjI0LCAxNjIyMjYsIDE2MjIyOCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTYyMjMwLCAxNjIyNDAsIDE2MjI1MCwgMTYyMjU5LCAxNjIyNjgsIDE2MjI4MSwgMTYyMjk0LCAxNjIzMDYsIAotICAgIDE2MjMxOCwgMTYyMzI4LCAxNjIzMzgsIDE2MjM0OCwgMTYyMzU4LCAxNjIzNjksIDE2MjM4MCwgMTYyMzkwLCAxNjIzOTksIAotICAgIDE2MjQwOCwgMTYyNDE3LCAxNjI0MzAsIDE2MjQ0MywgMTYyNDU1LCAxNjI0NjcsIDE2MjQ3NywgMTYyNDg3LCAxNjI0OTcsIAotICAgIDE2MjUwNywgMTYyNTE2LCAxNjI1MjUsIDE2MjUzNSwgMTYyNTQ1LCAxNjI1NTQsIDE2MjU2MywgMTYyNTczLCAxNjI1ODMsIAotICAgIDE2MjU5MiwgMTYyNjAxLCAxNjI2MTEsIDE2MjYyMSwgMTYyNjMyLCAxNjI2NDMsIDE2MjY1MywgMTYyNjY2LCAxNjI2NzcsIAotICAgIDE2MjY5MSwgMTYyNjk5LCAxNjI3MTAsIDE2MjcxOCwgMTYyNzI2LCAxNjI3MzQsIDE2Mjc0MiwgMTYyNzUwLCAxNjI3NTgsIAotICAgIDE2Mjc2NywgMTYyNzc2LCAxNjI3ODYsIDE2Mjc5NiwgMTYyODA1LCAxNjI4MTQsIDE2MjgyNCwgMTYyODM0LCAxNjI4NDIsIAotICAgIDE2Mjg1MCwgMTYyODU3LCAxNjI4NjcsIDE2Mjg3NiwgMTYyODg0LCAxNjI4OTEsIDE2MjkwMSwgMTYyOTEwLCAxNjI5MjEsIAotICAgIDE2MjkzMiwgMTYyOTQ0LCAxNjI5NTUsIDE2Mjk2NSwgMTYyOTc2LCAxNjI5ODYsIDE2Mjk5NywgMTYzMDA1LCAxNjMwMDksIAotICAgIDE2MzAxMywgMTYzMDE3LCAxNjMwMjEsIDE2MzAyNSwgMTYzMDI5LCAxNjMwMzMsIDE2MzAzNywgMTYzMDQxLCAxNjMwNDUsIAotICAgIDE2MzA0OSwgMTYzMDUzLCAxNjMwNTYsIDE2MzA1OSwgMTYzMDYzLCAxNjMwNjcsIDE2MzA3MSwgMTYzMDc1LCAxNjMwNzksIAotICAgIDE2MzA4MywgMTYzMDg3LCAxNjMwOTEsIDE2MzA5NCwgMTYzMDk4LCAxNjMxMDIsIDE2MzEwNiwgMTYzMTEwLCAxNjMxMTQsIAotICAgIDE2MzExOCwgMTYzMTIyLCAxNjMxMjYsIDE2MzEzMCwgMTYzMTM0LCAxNjMxMzgsIDE2MzE0MiwgMTYzMTQ2LCAxNjMxNTAsIAotICAgIDE2MzE1NCwgMTYzMTU4LCAxNjMxNjIsIDE2MzE2NiwgMTYzMTcwLCAxNjMxNzQsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIAotICAgIDE2MzE5MCwgMTYzMTk0LCAxNjMxOTgsIDE2MzIwMiwgMTYzMjA2LCAxNjMyMTAsIDE2MzIxNCwgMTYzMjE4LCAxNjMyMjIsIAotICAgIDE2MzIyNiwgMTYzMjMwLCAxNjMyMzQsIDE2MzIzOCwgMTYzMjQyLCAxNjMyNDYsIDE2MzI1MCwgMTYzMjU0LCAxNjMyNTgsIAotICAgIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzAsIDE2MzI3NCwgMTYzMjc4LCAxNjMyODIsIDE2MzI4NiwgMTYzMjkwLCAxNjMyOTQsIAotICAgIDE2MzI5OCwgMTYzMzAyLCAxNjMzMDYsIDE2MzMxMCwgMTYzMzE0LCAxNjMzMTgsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMzAsIAotICAgIDE2MzMzNCwgMTYzMzM4LCAxNjMzNDIsIDE2MzM0NiwgMTYzMzUwLCAxNjMzNTQsIDE2MzM1OCwgMTYzMzYyLCAxNjMzNjYsIAotICAgIDE2MzM3MCwgMTYzMzc0LCAxNjMzNzgsIDE2MzM4MiwgMTYzMzg2LCAxNjMzOTAsIDE2MzM5NCwgMTYzMzk4LCAxNjM0MDEsIAotICAgIDE2MzQwNSwgMTYzNDA5LCAxNjM0MTMsIDE2MzQxNywgMTYzNDIxLCAxNjM0MjUsIDE2MzQyOSwgMTYzNDMzLCAxNjM0MzcsIAotICAgIDE2MzQ0MSwgMTYzNDQ1LCAxNjM0NDksIDE2MzQ1MywgMTYzNDU3LCAxNjM0NjEsIDE2MzQ2NSwgMTYzNDY5LCAxNjM0NzMsIAotICAgIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAxNjM1MDksIAotICAgIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAxNjM1NDUsIAotICAgIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAxNjM1ODEsIAotICAgIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAxNjM2MTcsIAotICAgIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAxNjM2NTMsIAotICAgIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAxNjM2ODksIAotICAgIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAxNjM3MjUsIAotICAgIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAxNjM3NjEsIAotICAgIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAxNjM3OTcsIAotICAgIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAxNjM4MzMsIAotICAgIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAxNjM4NjksIAotICAgIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAxNjM5MDUsIAotICAgIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAxNjM5NDEsIAotICAgIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAxNjM5NzcsIAotICAgIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAxNjQwMTMsIAotICAgIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAxNjQwNDksIAotICAgIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAxNjQwODUsIAotICAgIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAxNjQxMjEsIAotICAgIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAxNjQxNTcsIAotICAgIDE2NDE2MSwgMTY0MTY1LCAxNjQxNzAsIDE2NDE3NSwgMTY0MTgwLCAxNjQxODQsIDE2NDE5MCwgMTY0MTk3LCAxNjQyMDQsIAotICAgIDE2NDIxMSwgMTY0MjE4LCAxNjQyMjUsIDE2NDIzMiwgMTY0MjM5LCAxNjQyNDYsIDE2NDI1MywgMTY0MjYwLCAxNjQyNjcsIAotICAgIDE2NDI3NCwgMTY0MjgxLCAxNjQyODgsIDE2NDI5NSwgMTY0MzAyLCAxNjQzMDgsIDE2NDMxNSwgMTY0MzIyLCAxNjQzMjksIAotICAgIDE2NDMzNiwgMTY0MzQzLCAxNjQzNTAsIDE2NDM1NywgMTY0MzY0LCAxNjQzNzEsIDE2NDM3OCwgMTY0Mzg1LCAxNjQzOTIsIAotICAgIDE2NDM5OSwgMTY0NDA2LCAxNjQ0MTIsIDE2NDQxOSwgMTY0NDI2LCAxNjQ0MzUsIDE2NDQ0NCwgMTY0NDUzLCAxNjQ0NjIsIAotICAgIDE2NDQ2NywgMTY0NDcyLCAxNjQ0NzgsIDE2NDQ4NCwgMTY0NDkwLCAxNjQ0OTYsIDE2NDUwMiwgMTY0NTA4LCAxNjQ1MTQsIAotICAgIDE2NDUyMCwgMTY0NTI2LCAxNjQ1MzIsIDE2NDUzOCwgMTY0NTQ0LCAxNjQ1NDksIDE2NDU1NSwgMTY0NTY1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNjYxMTEsIDE2NjExNCwgMTY2MTE3LCAxNjYxMjAsIDE2NjEyMywgMTY2MTI2LCAxNjYxMjksIDE2NjEzMiwgCisgICAgMTY2MTM1LCAxNjYxMzgsIDE2NjE0MSwgMTY2MTQ0LCAxNjYxNDcsIDE2NjE1MCwgMTY2MTUzLCAxNjYxNTYsIDE2NjE1OSwgCisgICAgMTY2MTYyLCAxNjYxNjUsIDE2NjE2OCwgMTY2MTcxLCAxNjYxNzQsIDE2NjE3NywgMTY2MTgwLCAxNjYxODMsIDE2NjE4NiwgCisgICAgMTY2MTg5LCAxNjYxOTIsIDE2NjE5NSwgMTY2MTk4LCAxNjYyMDEsIDE2NjIwNCwgMTY2MjA3LCAxNjYyMTAsIDE2NjIxMywgCisgICAgMTY2MjE2LCAxNjYyMTksIDE2NjIyMiwgMTY2MjI1LCAxNjYyMjgsIDE2NjIzMSwgMTY2MjM0LCAxNjYyMzcsIDE2NjI0MCwgCisgICAgMTY2MjQzLCAxNjYyNDYsIDE2NjI0OSwgMTY2MjUyLCAxNjYyNTUsIDE2NjI1OCwgMTY2MjYxLCAxNjYyNjQsIDE2NjI2NywgCisgICAgMTY2MjcwLCAxNjYyNzMsIDE2NjI3NiwgMTY2Mjc5LCAxNjYyODIsIDE2NjI4NSwgMTY2Mjg4LCAxNjYyOTEsIDE2NjI5NCwgCisgICAgMTY2Mjk3LCAxNjYzMDAsIDE2NjMwMywgMTY2MzA2LCAxNjYzMDksIDE2NjMxMiwgMTY2MzE1LCAxNjYzMTgsIDE2NjMyMSwgCisgICAgMTY2MzI0LCAxNjYzMjcsIDE2NjMzMCwgMTY2MzMzLCAxNjYzMzYsIDE2NjMzOSwgMTY2MzQyLCAxNjYzNDUsIDE2NjM0OCwgCisgICAgMTY2MzUxLCAxNjYzNTQsIDE2NjM1NywgMTY2MzYwLCAxNjYzNjMsIDE2NjM2NiwgMTY2MzY5LCAxNjYzNzIsIDE2NjM3NSwgCisgICAgMTY2Mzc4LCAxNjYzODEsIDE2NjM4NCwgMTY2Mzg3LCAxNjYzOTAsIDE2NjM5MywgMTY2Mzk2LCAxNjYzOTksIDE2NjQwMiwgCisgICAgMTY2NDA1LCAxNjY0MDgsIDE2NjQxMSwgMTY2NDE0LCAxNjY0MTcsIDE2NjQyMCwgMTY2NDIzLCAxNjY0MjYsIDE2NjQyOSwgCisgICAgMTY2NDMyLCAxNjY0MzUsIDE2NjQzOCwgMTY2NDQxLCAxNjY0NDQsIDE2NjQ0NywgMTY2NDUwLCAxNjY0NTMsIDE2NjQ1NiwgCisgICAgMTY2NDU5LCAxNjY0NjIsIDE2NjQ2NSwgMTY2NDY4LCAxNjY0NzEsIDE2NjQ3NCwgMTY2NDc3LCAxNjY0ODAsIDE2NjQ4MywgCisgICAgMTY2NDg2LCAxNjY0ODksIDE2NjQ5MiwgMTY2NDk1LCAxNjY0OTgsIDE2NjUwMSwgMTY2NTA0LCAxNjY1MDcsIDE2NjUxMCwgCisgICAgMTY2NTEzLCAxNjY1MTYsIDE2NjUxOSwgMTY2NTIyLCAxNjY1MjUsIDE2NjUyOCwgMTY2NTMxLCAxNjY1MzQsIDE2NjUzNywgCisgICAgMTY2NTQwLCAxNjY1NDMsIDE2NjU0NiwgMTY2NTQ5LCAxNjY1NTIsIDE2NjU1NSwgMTY2NTU4LCAxNjY1NjEsIDE2NjU2NCwgCisgICAgMTY2NTY3LCAxNjY1NzAsIDE2NjU3MywgMTY2NTc2LCAxNjY1NzksIDE2NjU4MiwgMTY2NTg1LCAxNjY1ODgsIDE2NjU5MSwgCisgICAgMTY2NTk0LCAxNjY1OTcsIDE2NjYwMCwgMTY2NjAzLCAxNjY2MDYsIDE2NjYwOSwgMTY2NjEyLCAxNjY2MTUsIDE2NjYxOCwgCisgICAgMTY2NjIxLCAxNjY2MjQsIDE2NjYyNywgMTY2NjMwLCAxNjY2MzMsIDE2NjYzNiwgMTY2NjM5LCAxNjY2NDIsIDE2NjY0NSwgCisgICAgMTY2NjQ4LCAxNjY2NTEsIDE2NjY1NCwgMTY2NjU3LCAxNjY2NjAsIDE2NjY2MywgMTY2NjY2LCAxNjY2NjksIDE2NjY3MiwgCisgICAgMTY2Njc1LCAxNjY2NzgsIDE2NjY4MSwgMTY2Njg0LCAxNjY2ODcsIDE2NjY5MCwgMTY2NjkzLCAxNjY2OTYsIDE2NjY5OSwgCisgICAgMTY2NzAyLCAxNjY3MDUsIDE2NjcwOCwgMTY2NzExLCAxNjY3MTQsIDE2NjcxNywgMTY2NzIwLCAxNjY3MjMsIDE2NjcyNiwgCisgICAgMTY2NzI5LCAxNjY3MzIsIDE2NjczNSwgMTY2NzM4LCAxNjY3NDEsIDE2Njc0NCwgMTY2NzQ3LCAxNjY3NTAsIDE2Njc1MywgCisgICAgMTY2NzU2LCAxNjY3NTksIDE2Njc2MiwgMTY2NzY1LCAxNjY3NjgsIDE2Njc3MSwgMTY2Nzc0LCAxNjY3NzcsIDE2Njc4MCwgCisgICAgMTY2NzgzLCAxNjY3ODYsIDE2Njc4OSwgMTY2NzkyLCAxNjY3OTUsIDE2Njc5OCwgMTY2ODAxLCAxNjY4MDQsIDE2NjgwNywgCisgICAgMTY2ODEwLCAxNjY4MTMsIDE2NjgxNiwgMTY2ODE5LCAxNjY4MjIsIDE2NjgyNSwgMTY2ODI4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjY4MzEsIDE2NjgzMywgMTY2ODM1LCAxNjY4NDAsIDE2Njg0MiwgCisgICAgMTY2ODQ3LCAxNjY4NDksIDE2Njg1NCwgMTY2ODU2LCAxNjY4NjEsIDE2Njg2MywgMTY2ODY1LCAxNjY4NjcsIDE2Njg2OSwgCisgICAgMTY2ODcxLCAxNjY4NzMsIDE2Njg3NSwgMTY2ODc3LCAxNjY4NzksIDE2Njg4MiwgMTY2ODg2LCAxNjY4ODgsIDE2Njg5MCwgCisgICAgMTY2ODk0LCAxNjY4OTgsIDE2NjkwMywgMTY2OTA1LCAxNjY5MDcsIDE2NjkwOSwgMTY2OTEzLCAxNjY5MTYsIDE2NjkxOCwgCisgICAgMTY2OTIyLCAxNjY5MjQsIDE2NjkyOCwgMTY2OTMwLCAxNjY5MzQsIDE2NjkzNywgMTY2OTM5LCAxNjY5NDMsIDE2Njk0NywgCisgICAgMTY2OTQ5LCAxNjY5NTUsIDE2Njk1NywgMTY2OTYyLCAxNjY5NjQsIDE2Njk2OSwgMTY2OTcxLCAxNjY5NzYsIDE2Njk3OCwgCisgICAgMTY2OTgzLCAxNjY5ODUsIDE2Njk4OCwgMTY2OTkwLCAxNjY5OTQsIDE2Njk5NiwgMTY3MDAzLCAxNjcwMDUsIDE2NzAwNywgCisgICAgMTY3MDA5LCAxNjcwMTQsIDE2NzAxNiwgMTY3MDE4LCAxNjcwMjAsIDE2NzAyMiwgMTY3MDI0LCAxNjcwMjksIDE2NzAzMywgCisgICAgMTY3MDM1LCAxNjcwNDAsIDE2NzA0NCwgMTY3MDQ2LCAxNjcwNTEsIDE2NzA1NSwgMTY3MDU3LCAxNjcwNjIsIDE2NzA2NiwgCisgICAgMTY3MDY4LCAxNjcwNzAsIDE2NzA3MiwgMTY3MDc0LCAxNjcwNzgsIDE2NzA4MCwgMTY3MDg1LCAxNjcwODcsIDE2NzA5MywgCisgICAgMTY3MDk1LCAxNjcxMDEsIDE2NzEwMywgMTY3MTA1LCAxNjcxMDcsIDE2NzExMSwgMTY3MTEzLCAxNjcxMjAsIDE2NzEyMiwgCisgICAgMTY3MTI5LCAxNjcxMzEsIDE2NzEzNiwgMTY3MTQyLCAxNjcxNDQsIDE2NzE1MCwgMTY3MTU3LCAxNjcxNTksIDE2NzE2NSwgCisgICAgMTY3MTcwLCAxNjcxNzIsIDE2NzE3OCwgMTY3MTg0LCAxNjcxODYsIDE2NzE5MiwgMTY3MTk4LCAxNjcyMDAsIDE2NzIwNiwgCisgICAgMTY3MjEwLCAxNjcyMTIsIDE2NzIxNywgMTY3MjE5LCAxNjcyMjEsIDE2NzIyNiwgMTY3MjI4LCAxNjcyMzAsIDE2NzIzNiwgCisgICAgMTY3MjM4LCAxNjcyNDMsIDE2NzI0NywgMTY3MjQ5LCAxNjcyNTQsIDE2NzI1OCwgMTY3MjYwLCAxNjcyNjYsIDE2NzI2OCwgCisgICAgMTY3MjcyLCAxNjcyNzQsIDE2NzI3OCwgMTY3MjgwLCAxNjcyODcsIDE2NzI5NCwgMTY3Mjk2LCAxNjczMDMsIDE2NzMxMCwgCisgICAgMTY3MzEyLCAxNjczMTcsIDE2NzMxOSwgMTY3MzI2LCAxNjczMjgsIDE2NzMzMywgMTY3MzM1LCAxNjczNDEsIDE2NzM0MywgCisgICAgMTY3MzQ3LCAxNjczNDksIDE2NzM1NSwgMTY3MzU3LCAxNjczNjEsIDE2NzM2MywgMTY3MzY5LCAxNjczNzEsIDE2NzM3MywgCisgICAgMTY3Mzc1LCAxNjczODAsIDE2NzM4NSwgMTY3Mzg3LCAxNjczODksIDE2NzM5OSwgMTY3NDA0LCAxNjc0MTEsIDE2NzQxOCwgCisgICAgMTY3NDIzLCAxNjc0MjgsIDE2NzQ0MCwgMTY3NDQyLCAxNjc0NDQsIDE2NzQ0NiwgMTY3NDQ4LCAxNjc0NTAsIDE2NzQ1MiwgCisgICAgMTY3NDU0LCAxNjc0NTYsIDE2NzQ1OCwgMTY3NDYwLCAxNjc0NjIsIDE2NzQ2NCwgMTY3NDY2LCAxNjc0NjgsIDE2NzQ3MCwgCisgICAgMTY3NDcyLCAxNjc0NzQsIDE2NzQ3NiwgMTY3NDc4LCAxNjc0ODAsIDE2NzQ4MiwgMTY3NDg4LCAxNjc0OTUsIDE2NzUwMCwgCisgICAgMTY3NTA4LCAxNjc1MTYsIDE2NzUyMSwgMTY3NTMyLCAxNjc1MzQsIDE2NzUzNiwgMTY3NTM4LCAxNjc1NDAsIDE2NzU0MiwgCisgICAgMTY3NTQ0LCAxNjc1NDYsIDE2NzU0OCwgMTY3NTUwLCAxNjc1NTIsIDE2NzU1NCwgMTY3NTU2LCAxNjc1NTgsIDE2NzU2MCwgCisgICAgMTY3NTYyLCAxNjc1NjQsIDE2NzU2OSwgMTY3NTcxLCAxNjc1NzMsIDE2NzU3OSwgMTY3NTkxLCAxNjc2MDIsIDE2NzYwNCwgCisgICAgMTY3NjA2LCAxNjc2MDgsIDE2NzYxMCwgMTY3NjEyLCAxNjc2MTQsIDE2NzYxNiwgMTY3NjE4LCAxNjc2MjAsIDE2NzYyMiwgCisgICAgMTY3NjI0LCAxNjc2MjYsIDE2NzYyOCwgMTY3NjMwLCAxNjc2MzIsIDE2NzYzNCwgMTY3NjM2LCAxNjc2MzgsIDE2NzY0MCwgCisgICAgMTY3NjQyLCAxNjc2NDQsIDE2NzY0NiwgMTY3NjQ4LCAxNjc2NTAsIDE2NzY1MiwgMTY3NjU0LCAxNjc2NTYsIDE2NzY1OCwgCisgICAgMTY3NjYwLCAxNjc2NjIsIDE2NzY2NCwgMTY3NjY2LCAxNjc2NjgsIDE2NzY3MCwgMTY3NjcyLCAxNjc2NzQsIDE2NzY3NiwgCisgICAgMTY3Njc4LCAxNjc2ODAsIDE2NzY4MiwgMTY3Njg0LCAxNjc2ODYsIDE2NzY4OCwgMTY3NjkwLCAxNjc2OTIsIDE2NzY5NCwgCisgICAgMTY3Njk2LCAxNjc2OTgsIDE2NzcwMCwgMTY3NzAyLCAxNjc3MDQsIDE2NzcwNiwgMTY3NzA4LCAxNjc3MTAsIDE2NzcxMiwgCisgICAgMTY3NzE0LCAxNjc3MTYsIDE2NzcxOCwgMTY3NzIwLCAxNjc3MjIsIDE2NzcyNCwgMTY3NzI2LCAxNjc3MjgsIDE2NzczMCwgCisgICAgMTY3NzMyLCAxNjc3MzQsIDE2NzczNiwgMTY3NzM4LCAxNjc3NDAsIDE2Nzc0MiwgMTY3NzQ0LCAxNjc3NDYsIDE2Nzc0OCwgCisgICAgMTY3NzUwLCAxNjc3NTIsIDE2Nzc1NCwgMTY3NzU2LCAxNjc3NTgsIDE2Nzc2MCwgMTY3NzYyLCAxNjc3NjQsIDE2Nzc2NiwgCisgICAgMTY3NzY4LCAxNjc3NzAsIDE2Nzc3MiwgMTY3Nzc0LCAxNjc3NzYsIDE2Nzc3OCwgMTY3NzgwLCAxNjc3ODIsIDE2Nzc4NCwgCisgICAgMTY3Nzg2LCAxNjc3ODgsIDE2Nzc5MCwgMTY3NzkyLCAxNjc3OTQsIDE2Nzc5NiwgMTY3Nzk4LCAxNjc4MDAsIDE2NzgwMiwgCisgICAgMTY3ODA0LCAxNjc4MDYsIDE2NzgwOCwgMTY3ODEwLCAxNjc4MTIsIDE2NzgxNCwgMTY3ODE2LCAxNjc4MTgsIDE2NzgyMCwgCisgICAgMTY3ODIyLCAxNjc4MjQsIDE2NzgyNiwgMTY3ODI4LCAxNjc4MzAsIDE2NzgzMiwgMTY3ODM0LCAxNjc4MzYsIDE2NzgzOCwgCisgICAgMTY3ODQwLCAxNjc4NDIsIDE2Nzg0NCwgMTY3ODQ2LCAxNjc4NDgsIDE2Nzg1MCwgMTY3ODUyLCAxNjc4NTQsIDE2Nzg1NiwgCisgICAgMTY3ODU4LCAxNjc4NjAsIDE2Nzg2MiwgMTY3ODY0LCAxNjc4NjYsIDE2Nzg2OCwgMTY3ODcwLCAxNjc4NzIsIDE2Nzg3NCwgCisgICAgMTY3ODc2LCAxNjc4NzgsIDE2Nzg4MCwgMTY3ODgyLCAxNjc4ODQsIDE2Nzg4NiwgMTY3ODg4LCAxNjc4OTAsIDE2Nzg5MiwgCisgICAgMTY3ODk0LCAxNjc4OTYsIDE2Nzg5OCwgMTY3OTAwLCAxNjc5MDIsIDE2NzkwNCwgMTY3OTA2LCAxNjc5MDgsIDE2NzkxMCwgCisgICAgMTY3OTEyLCAxNjc5MTQsIDE2NzkxNiwgMTY3OTE4LCAxNjc5MjAsIDE2NzkyMiwgMTY3OTI0LCAxNjc5MjYsIDE2NzkyOCwgCisgICAgMTY3OTMwLCAxNjc5MzIsIDE2NzkzNCwgMTY3OTM2LCAxNjc5MzgsIDE2Nzk0MCwgMTY3OTQyLCAxNjc5NDQsIDE2Nzk0NiwgCisgICAgMTY3OTQ4LCAxNjc5NTAsIDE2Nzk1MiwgMTY3OTU0LCAxNjc5NTYsIDE2Nzk1OCwgMTY3OTYwLCAxNjc5NjIsIDE2Nzk2NCwgCisgICAgMTY3OTY2LCAxNjc5NjgsIDE2Nzk3MCwgMTY3OTcyLCAxNjc5NzQsIDE2Nzk3NiwgMTY3OTc4LCAxNjc5ODAsIDE2Nzk4MiwgCisgICAgMTY3OTg0LCAxNjc5ODYsIDE2Nzk4OCwgMTY3OTkwLCAxNjc5OTIsIDE2Nzk5NCwgMTY3OTk2LCAxNjc5OTgsIDE2ODAwMCwgCisgICAgMTY4MDAyLCAxNjgwMDQsIDE2ODAwNiwgMTY4MDA4LCAxNjgwMTAsIDE2ODAxMiwgMTY4MDE0LCAxNjgwMTYsIDE2ODAxOCwgCisgICAgMTY4MDIwLCAxNjgwMjIsIDE2ODAyNCwgMTY4MDI2LCAxNjgwMjgsIDE2ODAzMCwgMTY4MDMyLCAxNjgwMzQsIDE2ODAzNiwgCisgICAgMTY4MDM4LCAxNjgwNDAsIDE2ODA0MiwgMTY4MDQ0LCAxNjgwNDYsIDE2ODA0OCwgMTY4MDUwLCAxNjgwNTIsIDE2ODA1NCwgCisgICAgMTY4MDU2LCAxNjgwNTgsIDE2ODA2MCwgMTY4MDYyLCAxNjgwNjQsIDE2ODA2NiwgMTY4MDY4LCAxNjgwNzAsIDE2ODA3MiwgCisgICAgMTY4MDc0LCAxNjgwNzYsIDE2ODA3OCwgMTY4MDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgwODIsIDE2ODA5MiwgMTY4MTAyLCAKKyAgICAxNjgxMTEsIDE2ODEyMCwgMTY4MTMzLCAxNjgxNDYsIDE2ODE1OCwgMTY4MTcwLCAxNjgxODAsIDE2ODE5MCwgMTY4MjAwLCAKKyAgICAxNjgyMTAsIDE2ODIyMSwgMTY4MjMyLCAxNjgyNDIsIDE2ODI1MSwgMTY4MjYwLCAxNjgyNjksIDE2ODI4MiwgMTY4Mjk1LCAKKyAgICAxNjgzMDcsIDE2ODMxOSwgMTY4MzI5LCAxNjgzMzksIDE2ODM0OSwgMTY4MzU5LCAxNjgzNjgsIDE2ODM3NywgMTY4Mzg3LCAKKyAgICAxNjgzOTcsIDE2ODQwNiwgMTY4NDE1LCAxNjg0MjUsIDE2ODQzNSwgMTY4NDQ0LCAxNjg0NTMsIDE2ODQ2MywgMTY4NDczLCAKKyAgICAxNjg0ODQsIDE2ODQ5NSwgMTY4NTA1LCAxNjg1MTgsIDE2ODUyOSwgMTY4NTQzLCAxNjg1NTEsIDE2ODU2MiwgMTY4NTcwLCAKKyAgICAxNjg1NzgsIDE2ODU4NiwgMTY4NTk0LCAxNjg2MDIsIDE2ODYxMCwgMTY4NjE5LCAxNjg2MjgsIDE2ODYzOCwgMTY4NjQ4LCAKKyAgICAxNjg2NTcsIDE2ODY2NiwgMTY4Njc2LCAxNjg2ODYsIDE2ODY5NCwgMTY4NzAyLCAxNjg3MDksIDE2ODcxOSwgMTY4NzI4LCAKKyAgICAxNjg3MzYsIDE2ODc0MywgMTY4NzUzLCAxNjg3NjIsIDE2ODc3MywgMTY4Nzg0LCAxNjg3OTYsIDE2ODgwNywgMTY4ODE3LCAKKyAgICAxNjg4MjgsIDE2ODgzOCwgMTY4ODQ5LCAxNjg4NTcsIDE2ODg2MSwgMTY4ODY1LCAxNjg4NjksIDE2ODg3MywgMTY4ODc3LCAKKyAgICAxNjg4ODEsIDE2ODg4NSwgMTY4ODg5LCAxNjg4OTMsIDE2ODg5NywgMTY4OTAxLCAxNjg5MDUsIDE2ODkwOCwgMTY4OTExLCAKKyAgICAxNjg5MTUsIDE2ODkxOSwgMTY4OTIzLCAxNjg5MjcsIDE2ODkzMSwgMTY4OTM1LCAxNjg5MzksIDE2ODk0MywgMTY4OTQ3LCAKKyAgICAxNjg5NTEsIDE2ODk1NSwgMTY4OTU5LCAxNjg5NjMsIDE2ODk2NywgMTY4OTcxLCAxNjg5NzUsIDE2ODk3OSwgMTY4OTgzLCAKKyAgICAxNjg5ODcsIDE2ODk5MSwgMTY4OTk1LCAxNjg5OTksIDE2OTAwMywgMTY5MDA3LCAxNjkwMTEsIDE2OTAxNSwgMTY5MDE5LCAKKyAgICAxNjkwMjMsIDE2OTAyNywgMTY5MDMxLCAxNjkwMzUsIDE2OTAzOSwgMTY5MDQzLCAxNjkwNDcsIDE2OTA1MSwgMTY5MDU1LCAKKyAgICAxNjkwNTksIDE2OTA2MywgMTY5MDY3LCAxNjkwNzEsIDE2OTA3NSwgMTY5MDc5LCAxNjkwODMsIDE2OTA4NywgMTY5MDkxLCAKKyAgICAxNjkwOTUsIDE2OTA5OSwgMTY5MTAzLCAxNjkxMDcsIDE2OTExMSwgMTY5MTE1LCAxNjkxMTksIDE2OTEyMywgMTY5MTI3LCAKKyAgICAxNjkxMzEsIDE2OTEzNSwgMTY5MTM5LCAxNjkxNDMsIDE2OTE0NywgMTY5MTUxLCAxNjkxNTUsIDE2OTE1OSwgMTY5MTYzLCAKKyAgICAxNjkxNjcsIDE2OTE3MSwgMTY5MTc1LCAxNjkxNzksIDE2OTE4MywgMTY5MTg3LCAxNjkxOTEsIDE2OTE5NSwgMTY5MTk5LCAKKyAgICAxNjkyMDMsIDE2OTIwNywgMTY5MjExLCAxNjkyMTUsIDE2OTIxOSwgMTY5MjIzLCAxNjkyMjcsIDE2OTIzMSwgMTY5MjM1LCAKKyAgICAxNjkyMzksIDE2OTI0MywgMTY5MjQ3LCAxNjkyNTEsIDE2OTI1NCwgMTY5MjU4LCAxNjkyNjIsIDE2OTI2NiwgMTY5MjcwLCAKKyAgICAxNjkyNzQsIDE2OTI3OCwgMTY5MjgyLCAxNjkyODYsIDE2OTI5MCwgMTY5Mjk0LCAxNjkyOTgsIDE2OTMwMiwgMTY5MzA2LCAKKyAgICAxNjkzMTAsIDE2OTMxNCwgMTY5MzE4LCAxNjkzMjIsIDE2OTMyNiwgMTY5MzMwLCAxNjkzMzQsIDE2OTMzOCwgMTY5MzQyLCAKKyAgICAxNjkzNDYsIDE2OTM1MCwgMTY5MzU0LCAxNjkzNTgsIDE2OTM2MiwgMTY5MzY2LCAxNjkzNzAsIDE2OTM3NCwgMTY5Mzc4LCAKKyAgICAxNjkzODIsIDE2OTM4NiwgMTY5MzkwLCAxNjkzOTQsIDE2OTM5OCwgMTY5NDAyLCAxNjk0MDYsIDE2OTQxMCwgMTY5NDE0LCAKKyAgICAxNjk0MTgsIDE2OTQyMiwgMTY5NDI2LCAxNjk0MzAsIDE2OTQzNCwgMTY5NDM4LCAxNjk0NDIsIDE2OTQ0NiwgMTY5NDUwLCAKKyAgICAxNjk0NTQsIDE2OTQ1OCwgMTY5NDYyLCAxNjk0NjYsIDE2OTQ3MCwgMTY5NDc0LCAxNjk0NzgsIDE2OTQ4MiwgMTY5NDg2LCAKKyAgICAxNjk0OTAsIDE2OTQ5NCwgMTY5NDk4LCAxNjk1MDIsIDE2OTUwNiwgMTY5NTEwLCAxNjk1MTQsIDE2OTUxOCwgMTY5NTIyLCAKKyAgICAxNjk1MjYsIDE2OTUzMCwgMTY5NTM0LCAxNjk1MzgsIDE2OTU0MiwgMTY5NTQ2LCAxNjk1NTAsIDE2OTU1NCwgMTY5NTU4LCAKKyAgICAxNjk1NjIsIDE2OTU2NiwgMTY5NTcwLCAxNjk1NzQsIDE2OTU3OCwgMTY5NTgyLCAxNjk1ODYsIDE2OTU5MCwgMTY5NTk0LCAKKyAgICAxNjk1OTgsIDE2OTYwMiwgMTY5NjA2LCAxNjk2MTAsIDE2OTYxNCwgMTY5NjE4LCAxNjk2MjIsIDE2OTYyNiwgMTY5NjMwLCAKKyAgICAxNjk2MzQsIDE2OTYzOCwgMTY5NjQyLCAxNjk2NDYsIDE2OTY1MCwgMTY5NjU0LCAxNjk2NTgsIDE2OTY2MiwgMTY5NjY2LCAKKyAgICAxNjk2NzAsIDE2OTY3NCwgMTY5Njc4LCAxNjk2ODIsIDE2OTY4NiwgMTY5NjkwLCAxNjk2OTQsIDE2OTY5OCwgMTY5NzAyLCAKKyAgICAxNjk3MDYsIDE2OTcxMCwgMTY5NzE0LCAxNjk3MTgsIDE2OTcyMiwgMTY5NzI2LCAxNjk3MzAsIDE2OTczNCwgMTY5NzM4LCAKKyAgICAxNjk3NDIsIDE2OTc0NiwgMTY5NzUwLCAxNjk3NTQsIDE2OTc1OCwgMTY5NzYyLCAxNjk3NjYsIDE2OTc3MCwgMTY5Nzc0LCAKKyAgICAxNjk3NzgsIDE2OTc4MiwgMTY5Nzg2LCAxNjk3OTAsIDE2OTc5NCwgMTY5Nzk4LCAxNjk4MDIsIDE2OTgwNiwgMTY5ODEwLCAKKyAgICAxNjk4MTQsIDE2OTgxOCwgMTY5ODIyLCAxNjk4MjYsIDE2OTgzMCwgMTY5ODM0LCAxNjk4MzgsIDE2OTg0MiwgMTY5ODQ2LCAKKyAgICAxNjk4NTAsIDE2OTg1NCwgMTY5ODU4LCAxNjk4NjIsIDE2OTg2NiwgMTY5ODcwLCAxNjk4NzQsIDE2OTg3OCwgMTY5ODgyLCAKKyAgICAxNjk4ODYsIDE2OTg5MCwgMTY5ODk0LCAxNjk4OTgsIDE2OTkwMiwgMTY5OTA2LCAxNjk5MTAsIDE2OTkxNCwgMTY5OTE4LCAKKyAgICAxNjk5MjIsIDE2OTkyNiwgMTY5OTMwLCAxNjk5MzQsIDE2OTkzOCwgMTY5OTQyLCAxNjk5NDYsIDE2OTk1MCwgMTY5OTU0LCAKKyAgICAxNjk5NTgsIDE2OTk2MiwgMTY5OTY2LCAxNjk5NzAsIDE2OTk3NCwgMTY5OTc4LCAxNjk5ODIsIDE2OTk4NiwgMTY5OTkwLCAKKyAgICAxNjk5OTQsIDE2OTk5OCwgMTcwMDAyLCAxNzAwMDYsIDE3MDAxMCwgMTcwMDE0LCAxNzAwMTgsIDE3MDAyMywgMTcwMDI4LCAKKyAgICAxNzAwMzMsIDE3MDAzNywgMTcwMDQzLCAxNzAwNTAsIDE3MDA1NywgMTcwMDY0LCAxNzAwNzEsIDE3MDA3OCwgMTcwMDg1LCAKKyAgICAxNzAwOTIsIDE3MDA5OSwgMTcwMTA2LCAxNzAxMTMsIDE3MDEyMCwgMTcwMTI3LCAxNzAxMzQsIDE3MDE0MCwgMTcwMTQ3LCAKKyAgICAxNzAxNTQsIDE3MDE2MCwgMTcwMTY3LCAxNzAxNzQsIDE3MDE4MSwgMTcwMTg4LCAxNzAxOTUsIDE3MDIwMiwgMTcwMjA5LCAKKyAgICAxNzAyMTYsIDE3MDIyMywgMTcwMjMwLCAxNzAyMzcsIDE3MDI0NCwgMTcwMjUxLCAxNzAyNTgsIDE3MDI2NCwgMTcwMjcwLCAKKyAgICAxNzAyNzcsIDE3MDI4NiwgMTcwMjk1LCAxNzAzMDQsIDE3MDMxMywgMTcwMzE4LCAxNzAzMjMsIDE3MDMyOSwgMTcwMzM1LCAKKyAgICAxNzAzNDEsIDE3MDM0NywgMTcwMzUzLCAxNzAzNTksIDE3MDM2NSwgMTcwMzcxLCAxNzAzNzcsIDE3MDM4MywgMTcwMzg5LCAKKyAgICAxNzAzOTUsIDE3MDQwMCwgMTcwNDA2LCAxNzA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewotICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDY2OTEwLCAxOTQ2ODIsIDEyNzc2NiwgCisgICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgODk5OSwgMTk0NjgyLCAxMjc3NjYsIAogICAgIDc4NTAwLCA2NjQ4MCwgNjQwMzgsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDcyMzg1LCA1OTYsIDk4MzgyMSwgNjk4NTAsIAotICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDEyNjU0MiwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDExOTg1NiwgMTEzNzUyLCAKKyAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCA2Njc4OSwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDcwNzQwLCAxMTM3NTIsIAogICAgIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCA0MjMzLCA0MjM0LCA0MjMyLCAxMjA4ODksIDc0NDE1LCAKLSAgICAxMjAyMTAsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgODI5NTQsIDQxNjAxLCA4ODc0LCAKLSAgICA3MjM5MiwgNzc0OCwgMTI1MDgzLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAwLCAKLSAgICAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIAotICAgIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIDExOTIwNSwgNjY1NzcsIAotICAgIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCA2OTk3MCwgMTI4Mzg3LCA2NTkwOCwgOTgzNCwgMzA1NSwgCi0gICAgOTg1MiwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCAKLSAgICA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCA5MTc4MjQsIDMzNTAsIDEyMDgxNywgNjQzMTgsIDE5NDY5OCwgNzgxMjEsIDMzOTAsIAotICAgIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgCi0gICAgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIAotICAgIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCAKLSAgICA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIAotICAgIDY2MDIxLCA3NDUwOSwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgCi0gICAgOTgzMzQyLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDExMzcyNCwgMTI4ODcyLCAwLCAwLCA3MjM5MywgCi0gICAgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDgzMzAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIAotICAgIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgCi0gICAgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMjg3NzksIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgNDIyNDQsIAotICAgIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDkxNzkwNywgODI5NzEsIAotICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIAotICAgIDI3NjAsIDgzMjg0LCA4MzI4NSwgNzg3MDgsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIAotICAgIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAKLSAgICAwLCAxODc0LCAxMTkwMTYsIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgCi0gICAgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIDc4ODQ3LCA2NDEyMiwgNjYzODksIDY2NjA5LCAxMjEzNDcsIDY0MTE3LCAKLSAgICA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIAotICAgIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCi0gICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIAotICAgIDEyODU0NSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIAotICAgIDkwNTYsIDY0MzEzLCA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCAKLSAgICA2MywgNzIzMywgOTIyMTIsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIAotICAgIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgCi0gICAgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAxMjEyNzEsIDk4MzY0OSwgNzcxNCwgNjYyMjIsIDY5OTAyLCAKKyAgICAxMDA0MTMsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgODI5NTQsIDQxNjAxLCA4ODc0LCAKKyAgICA3MjM5MiwgNzc0OCwgMTI1MDgzLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAKKyAgICA5ODM5ODEsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAxMjg2MzUsIDYzODEsIDEwMDg3MiwgNjY3OTcsIDY1MjQwLCAKKyAgICAxMTk1MSwgMCwgMzQwNCwgOTgzMDc5LCA3MDQ4NywgNzI0MTEsIDE3NTksIDEyMDg1MywgNDEwNzYsIDY4MzgzLCA2OTk3MiwgCisgICAgMTE5MjA1LCA2NjU3NywgOTQwMTQsIDEyNzc2NCwgNjU4NTksIDEyNTI1MywgNzQwNCwgMTI1MjQ4LCAxMjgzMDgsIDY5OTcwLCAKKyAgICAxMjA2NDgsIDY1OTA4LCA5ODM0LCAzMDU1LCAyMjM0LCAxMjgzNjAsIDY1Mjg4LCAxMjEyOTEsIDExMzk4LCAwLCA5MjQxNywgCisgICAgOTMwMTYsIDEyODM4MCwgMTI3MzM3LCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgNzE4NjUsIDEyOTM2NiwgMzM1MCwgMTIwODE3LCAKKyAgICA2NDMxOCwgMTIwNjk5LCA3ODEyMSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCA5MjM5OSwgOTE3ODMwLCA3ODU3MywgMTE4ODAzLCAKKyAgICAxOTE5LCAzNDAwLCAxMjA2NTEsIDgzMjk2LCAxMTY0NywgODMyOTgsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgNjQxMzgsIAorICAgIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgNjQxMjgsIDY2Mjg2LCAKKyAgICA5MzA0MiwgMTI4ODMwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgMTIxMjU1LCA0MzM3NCwgOTc3OSwgMjc2NCwgCisgICAgNjYwMDIsIDEwMTY3LCA5NDcxLCA4MzQ1OCwgNjYwMjEsIDc0NTA5LCA5ODMzMDgsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCAKKyAgICA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIDEwMDUzMCwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAKKyAgICAxMDA1MjksIDEyODg3MiwgMCwgOTgzOTA3LCA3MjM5MywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIAorICAgIDgzMzAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIDAsIDEyODE0NiwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIAorICAgIDY0MTQ0LCA3NjIsIDEzMTcyLCA3NTAwOCwgNzc5MjgsIDQzOTI5LCAxMDkwNiwgMTM1MywgNjk2MCwgODMwMzIsIDEwMDQyMywgCisgICAgNTgyOCwgODcyNCwgMTIyOTE2LCA4OTMzLCAxNjAxLCA0MjI0NCwgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIAorICAgIDcwNDU1LCA3MjM4OCwgNzQ2MDYsIDU4NywgMTk0NjQ5LCA4Mjk3MSwgOTgzODA4LCAxMjkzNDUsIDE5NDc5NSwgNzgyMTQsIAorICAgIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgNzg3MDcsIDEyMjEzLCA4MzI5MCwgMjc2MCwgODMyODQsIDgzMjg1LCAKKyAgICA3NzkzNCwgODMyODcsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDgzMjgzLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAxMDA1MywgCisgICAgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIDEyNTA5MSwgMTg3NCwgMTE5MDE2LCAKKyAgICAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDEyMDE4OCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgCisgICAgNjU0NDMsIDkwMzYsIDc4ODQ3LCA2NDEyMiwgNjYzODksIDY2NjA5LCAxMjEzNDcsIDY0MTE3LCA2NDExNiwgNjI4NywgCisgICAgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgCisgICAgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCA5ODM0ODIsIDEwNDUzLCA2NDEwNCwgCisgICAgNzE4OCwgNzk5NywgMTI4NjAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg1NDUsIAorICAgIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCA5MDU2LCA2NDMxMywgCisgICAgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIAorICAgIDc0OTUzLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAxMTg5NTksIAorICAgIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIDQzMzMsIAorICAgIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgOTgzNDA1LCAxMjEyNzEsIDkxNzkwNywgNzcxNCwgNjYyMjIsIDY5OTAyLCAKICAgICA3NzY4LCA3MjQwMywgNDE5OSwgNjQ3MDgsIDY1MDY0LCA3MDExNywgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKLSAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEyNjU3MCwgMTIxMjU2LCAKLSAgICA2NDYxNSwgNDE5MTUsIDAsIDEyMDc1LCA0MjA0MSwgMTk0ODI1LCA1MTc0LCA5ODMyMTcsIDAsIDEyNzU1NywgMzEyMywgCi0gICAgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDAsIDkyMjMsIDAsIDQxNjE2LCA2Nzk5OSwgCi0gICAgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIDAsIDc1MDMxLCAKLSAgICA5MTc2MjIsIDEyODE2OCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgODMzMzgsIDgzMzMxLCA2NDA5NSwgNjQwOTQsIAotICAgIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCA2NzI0OSwgNjYzOTgsIDExNDM0LCA2NDA4MywgCi0gICAgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgODMwMzMsIDk5MjcsIDQxMzM1LCA0MTE4LCAKLSAgICAxNzk3LCA4MzMxMiwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgODMzMDksIDI5OCwgODMzMDMsIDgzMzA0LCA4MzMwNSwgNDI2MjcsIAotICAgIDEyNTAxMSwgMzIsIDYxODcsIDgzMDM3LCAxMTQ5NSwgMTE0NTksIDM2NjUsIDgzMDM2LCA0Mjg3MSwgMCwgMTk5MjMsIAotICAgIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDgzMzE0LCA3MTQ0NCwgOTgzNDY4LCAKLSAgICA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAotICAgIDY1MDE0LCA5ODM0MjIsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgODMwMzksIDExODkwNCwgCi0gICAgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCAKLSAgICAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCA5MjM0LCA5MTc4OTUsIDYxODIsIAotICAgIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzNDgwLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIAotICAgIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIDE2MjIsIDc3NjcsIDE5MDAsIAotICAgIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCAwLCA2NTgxLCA1NTc2LCAxMjg2MTgsIDQzODU1LCA0MTMzNywgMCwgNDE2MzEsIAotICAgIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDk4Mzg0OCwgNzIzOTYsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCA5MTc4NzIsIAotICAgIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAxMjA1MDQsIDE5NDgyOCwgMTI4OTYxLCA1MDU4LCAKLSAgICA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA5MTc5NDEsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIAotICAgIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAKLSAgICAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgCi0gICAgNTc3MywgOTc4LCAxMjgxMzQsIDk4MzY5OSwgNDE2MTksIDEwMjM5LCA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIAotICAgIDc0MTM1LCA5NzQ4LCA5ODM5NTYsIDEyNzUyNCwgMCwgOTgzMzE2LCAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCAwLCAKLSAgICA5ODMzMTMsIDk4MzMwMiwgMCwgMTI3ODY1LCAwLCA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCA5MTc5MDIsIAotICAgIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAKLSAgICAxMjc5NjYsIDExOTIzNSwgNzE4NjgsIDczOTM2LCA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgCi0gICAgMTI3ODI3LCA5ODM4NTcsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgCi0gICAgNjAxOSwgMTI4OTc1LCAwLCA2OTYxLCAwLCA3MDQzNSwgNjcxNzEsIDg4MDAsIDEyNzMzMiwgNDI4NjIsIDQ0NjMsIDY1NTgxLCAKLSAgICA2MTkyLCAxMTk2MTAsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAKLSAgICAwLCA2NzE0OSwgNzQ4OTksIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCAKLSAgICA1MDczLCAxMjExNjQsIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcxMjMxLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDAsIAotICAgIDE5NiwgOTgzMTU0LCAwLCA5ODM5MzYsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAwLCAxMjc5ODcsIDEyMTQ1NSwgNDI4NDcsIAotICAgIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgOTgzOTgxLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDcwMTgxLCA0MjU4NCwgMCwgCi0gICAgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCA5ODMwNDIsIDY0NjY3LCAxMjgxOSwgOTgzODcwLCA1MDcxLCAKLSAgICAxMjc5MTUsIDM2NDIsIDY3MzM0LCA1MDcwLCAxMDA0MiwgMTEzODEzLCAzOTg3LCA1MDY4LCA5ODM0NjAsIDg5MDksIAotICAgIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgCi0gICAgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDEyMTM1OSwgMTI4MDI4LCAwLCA2NDcwOSwgODMyNjksIAotICAgIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDEyNzIxOCwgMCwgOTUyNiwgNDkyMCwgCi0gICAgMTI4NjE3LCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMTI3ODU3LCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMTM3NzksIAotICAgIDEyMTA0OSwgMTE4OTg1LCA0OTI4LCA5ODMxNDksIDgzNTE0LCA3NDc3MCwgMTIwMTk0LCAxMjY1NDgsIDcyMiwgMTk0OTM0LCAKLSAgICAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgODI5OTksIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIAotICAgIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAKLSAgICAxMjY1NzcsIDY4MzM2LCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgOTI3NjEsIDEyNzQ2MiwgNzAwNSwgCi0gICAgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAxMjc5MDAsIAotICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKLSAgICAwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMjkxODIsIAotICAgIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgMTk0NjExLCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCAKLSAgICA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY1NiwgMCwgODA3NCwgCi0gICAgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIDQ0MzIsIDEyMTMxMywgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIAotICAgIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgOTI5NTcsIDY3NTg4LCA2ODA2MSwgMTI0OTgzLCAKLSAgICA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgMTIwMjUyLCAxMjgxMDAsIDExOTAwNywgMCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgCi0gICAgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCAKLSAgICA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIAotICAgIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgOTgzMjcwLCAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDAsIDAsIAotICAgIDY5OTA2LCAxMjA3ODksIDk4MzA0MSwgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCAKLSAgICA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIAotICAgIDQzNTY3LCA3NDA1NiwgMTIwMjY2LCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCAKLSAgICA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk4MzQsIDExOTkyOCwgNzIxMywgNjg0NzYsIDcyMTQsIDcyMTUsIDU4NzksIAotICAgIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgNjczNTksIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIAotICAgIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgODE3OSwgNzAxNjMsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIAotICAgIDgxNTAsIDEzNTksIDY3NjUyLCA3MDQ2NCwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAKLSAgICAxMjczMjQsIDEyNzMyMSwgNzQ0MTAsIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyMTI4NCwgMTI3MzE1LCAxMjI4MywgCi0gICAgMTYxNiwgMzc5NSwgNjc3MzIsIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDEyODI4MCwgCi0gICAgNjc3MjQsIDMyMzksIDY2ODkzLCAxMjg4MTgsIDAsIDg0MzEsIDAsIDQyMTY0LCA3MTIyOSwgMTE3NzgsIDEyNjIwLCA2ODI2LCAKLSAgICA3Mzc3MywgNzAxNjksIDUwNDAsIDEyNzk2OSwgMCwgNjcwOTQsIDc4NDIwLCAwLCA1MDM5LCA5ODMyNDEsIDc4NDE4LCAwLCAKLSAgICA1MDM4LCAwLCA5ODM4NjIsIDEzMTg0LCA0Mzk2MCwgMTIwOTMxLCA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDkxNzYyMywgCi0gICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgNzAxODIsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgCi0gICAgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIDEyODgwNCwgNzM4MTMsIDcxMSwgCi0gICAgNDM4OSwgNzEzMywgMTIwNjQzLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgCi0gICAgNjcyMjQsIDE1NTAsIDgyMDEsIDcwNDUzLCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA0Mzk1NywgCi0gICAgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNjcyMjIsIDI0NDAsIDQzOTU1LCA3MDc4NywgODQ0OSwgMCwgNTAwOCwgCi0gICAgOTgzNTcyLCAyMTE4LCAxMjY1MDgsIDEyMTIxLCA4MjU1LCA1NTEyLCA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgCi0gICAgMjEzMywgMTExOSwgMTIxMjUwLCAyMTE0LCAyMTE2LCAyNDU1LCAxMTM3OTgsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIAotICAgIDEyNzQ4NiwgODcxNCwgOTgzODIwLCAyMTEzLCAxOTUwNDksIDIxMTUsIDEyODE3NywgMTI3OTA3LCA0MzcxMywgNTA1MiwgCi0gICAgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIAotICAgIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgCi0gICAgNTUxMywgNTEwOSwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIAotICAgIDcxMjUxLCA5MjIzNywgNzQ4MDcsIDk4MzA2MiwgNTA0OCwgNTA0NywgMTk0ODM3LCA5ODMzODAsIDc0MjAxLCA5MjMxMywgCi0gICAgMTk0ODAyLCA3NDQ5NywgODI5ODIsIDgwODksIDY5MjksIDYzOSwgODI5ODEsIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDgyOTg0LCAKLSAgICA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgCi0gICAgNjk1MSwgOTQwMTcsIDEyOTE5NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAxMjA5OTEsIDY2NTYsIDQyNjE4LCA3MDE3NSwgCi0gICAgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCAKLSAgICA5MDA2LCAxMzEyOCwgNTA0MywgMTIxMzM1LCA3ODUzLCA2NzgwOCwgNzQwMDQsIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgCi0gICAgMTI4ODgzLCAxMTkwNzAsIDcwMTc0LCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAxMjc5NzEsIDExOTYwNiwgCi0gICAgNjc5ODMsIDEzMjk2LCA1MTcsIDAsIDEyODQ2NywgMTk0OTQ2LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMCwgMTIxMzI2LCAKLSAgICA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAxOTQ4NTcsIAotICAgIDE5NDU5MSwgMCwgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDcxMTEyLCA0ODksIDcxMTEwLCA0MjUwLCA5MjI2NiwgCi0gICAgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCA5MjczOCwgNjYyMDAsIDAsIDAsIDEyNTAyNiwgNzQyOTgsIDEyODg3OSwgOTgzNDc2LCAKLSAgICA4NzExLCA2MTgzLCA4MzQ0OCwgOTgzOTUyLCA3MjQwMiwgMTIwNDQ4LCA3NjIzLCAxMTg5MjUsIDY2Mzc2LCA5MjM1LCAKLSAgICAxMjc2MCwgNzQxNzYsIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAKLSAgICAwLCAxMjY1OTcsIDEyMDQzNCwgMTk0ODUwLCA3NzI2LCAxOTUwOTUsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAKLSAgICAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgCi0gICAgOTA1MCwgMzM5OCwgMTI4NDI0LCA5ODMzNTAsIDAsIDMzOTEsIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAKLSAgICAxMjkxMDYsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgNzAxNTIsIDEzMDE0LCAxMzAxMywgMTIxMTk4LCAKLSAgICA2NjczLCAwLCAwLCAxMjEzMjQsIDEyNDM4LCAwLCA5ODMzNDQsIDgzMTA2LCA3MTEyOCwgMTIwMDYyLCA5MDUzLCAxMzAxNSwgCi0gICAgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDc0OTQ5LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA3NDg2MSwgNDIyMTIsIAotICAgIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NzM0MywgMTIxNDM3LCAxMjkwODYsIDQzODc2LCA5Mjk0MSwgCi0gICAgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxMjg1OTUsIDQzOTQ5LCAxMjAwNDgsIDc4MDk5LCAxMjcwODUsIDAsIAotICAgIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgOTgzNjA2LCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDQzOTUyLCA0MjUzMywgCi0gICAgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDQzOTUwLCA3ODEwNSwgNDkwMSwgMTgyMSwgNDM5NTEsIDU3OCwgMzY1MywgCi0gICAgMTI4OTQ2LCA3OTEsIDkxNjIsIDY5NzcsIDc0MTk2LCA3ODg4OSwgNzAxNjAsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgCi0gICAgMTE5MzAzLCA5ODM0NTEsIDc1NTcsIDExOTEwOCwgNjczNzgsIDgyMzQsIDcyNDEsIDEyODYwOCwgMTEzNzM1LCAxMTkxNjcsIAotICAgIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIAotICAgIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAKLSAgICAyNDUyLCA3ODA4MywgNjcyMTcsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCAxMjY1NjQsIDcxMzAyLCA0NDA4LCA0MTIyLCAKLSAgICA2NzcyLCAxMTAzOSwgODcyMywgNjU4OTYsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA3MTkwNCwgMjQzOCwgNjQ4NTUsIAotICAgIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgCi0gICAgMTI4NjM5LCAwLCAwLCA0MTk1MiwgOTMwMjMsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIAotICAgIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIDEyOTYzLCA3MDMyMCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDEyMDM0MCwgCi0gICAgMTE4ODczLCAxMjcxLCA5ODM2NDAsIDEyOTExMiwgNjYwMjQsIDQxNDgyLCAzODY0LCA5MjA0LCAwLCAzODc5LCAwLCAKLSAgICAxMjk3OCwgNDE2NiwgNDU3NCwgMTI4MTExLCA3NTY3LCA3NDU5LCA3ODEyOCwgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgCi0gICAgNzAxNTQsIDU3NTksIDE5NDg2OSwgMTIxNDEzLCA0MTM4OCwgNjQ0NDYsIDQxMzkyLCA2NDI4OCwgNDEzODcsIDY3MjAxLCAKLSAgICA4NzA2LCA1NTUyLCA2ODgzNywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIAotICAgIDc0MDY2LCA2NzI1MSwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDExMTE1LCAxMjEwMzUsIAotICAgIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCAKLSAgICA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgNjUwMzcsIDQ1NzcsIAotICAgIDY0NjI0LCAwLCAwLCA3MTkxMiwgMTk0OTA4LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgCi0gICAgOTIyNzMsIDY2NTgwLCA3Nzk5MiwgNjY2ODMsIDEwNTU0LCAxMTkwMDgsIDExOTEyMSwgNjgzMiwgNTA5OCwgOTE3NzY4LCAKLSAgICAxOTQ2NjgsIDcwNDAzLCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgNjcyOTYsIDkyODk2LCAzNjUxLCAwLCA2NzI5NCwgCi0gICAgNzA4NDgsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIAotICAgIDEyNDcsIDEwMDM0LCAxMjEzNDAsIDUwOTksIDc4MzczLCAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAxMTk5NTMsIDc4MzgsIAotICAgIDAsIDEyODY1NSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIDcwODI5LCA3ODQyNywgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgCi0gICAgMTk0OTIzLCA5MTU0LCA5MTE4LCAxMjY1NDMsIDExOTU4NiwgMjY3NiwgMjI3NywgMTI4NDIyLCA2ODIzNywgNjE5MCwgCi0gICAgODU5OSwgMTI1MTE4LCA2OTkxOCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgNzE5MDMsIDEyMTI5LCAKLSAgICAxMjY2NTEsIDg0ODEsIDgzMDY4LCA2MjAyLCA2NzcxMSwgMTA5MjAsIDExMzcyNiwgNTIwMywgMTk1MDM5LCAxOTUwMzgsIAotICAgIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgOTc2MiwgMTEyMDUsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgCi0gICAgMjA3LCAxMjEyMDYsIDQyNzUsIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgNjY4MTYsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIAotICAgIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMTk0NjEyLCA0MzAzNCwgMTE0MzgsIAotICAgIDY0Njc0LCAwLCA3MDE1OCwgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCAKLSAgICA1MTA1LCA2NTI2NiwgNjk3MjAsIDY0NzYsIDUxMDQsIDk4Mzc0OSwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgCi0gICAgMTEzNjgzLCA2NTY3LCAyMzgsIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIAotICAgIDQxMDQ0LCA2NzY0MCwgNjczMDIsIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIAotICAgIDkzMDM5LCA4ODAzLCAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMTI3OTE3LCAKLSAgICAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDEyNjUzNSwgNjUxNjUsIDkyNzI1LCAwLCAKLSAgICA2NjQ2NiwgMTI0OTg2LCAxMjc3ODQsIDAsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIAorICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTAwMzc3LCAxMjEyNTYsIAorICAgIDY0NjE1LCA0MTkxNSwgMTAwMzc1LCAxMjA3NSwgNDIwNDEsIDEyNTA4NCwgNTE3NCwgOTgzMjE3LCAxMDAzNzIsIDc0MTg2LCAKKyAgICAzMTIzLCAxMjUxMDAsIDEyNjg1LCAxMTkyMTYsIDg0MDgsIDY0NzA0LCA4MzMyOCwgMTIyODkxLCA5MjIzLCAwLCA0MTYxNiwgCisgICAgNjc5OTksIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAKKyAgICA5ODM4NzEsIDc1MDMxLCA5MTc2MjIsIDEyODE2OCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgODMzMzgsIDgzMzMxLCAKKyAgICA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCA2NzI0OSwgNjYzOTgsIAorICAgIDExNDM0LCA2NDA4MywgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgODMwMzMsIAorICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCA4MzMxMiwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgNzg1OTEsIDI5OCwgODMzMDMsIAorICAgIDgzMzA0LCA4MzMwNSwgNDI2MjcsIDEyNTAxMSwgMzIsIDYxODcsIDgzMDM3LCAxMTQ5NSwgMTE0NTksIDM2NjUsIDgzMDM2LCAKKyAgICA0Mjg3MSwgMTE4OTAyLCAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgCisgICAgODMzMTQsIDcxNDQ0LCAxMTkzMjEsIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgODM0NjEsIDY4MDUzLCA4MzQwNywgCisgICAgMTIwMTk4LCA2OTgwOSwgNjE4MSwgNjUwMTQsIDEwMDc1MCwgMTI4NDg0LCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMTE4ODUxLCAKKyAgICA4MzAzOSwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCA4MzAzOCwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIAorICAgIDkyNTY1LCAxMjAyMDUsIDkxNzc3MywgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgCisgICAgOTIzNCwgOTE3ODk1LCA2MTgyLCA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzIxMSwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgCisgICAgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAKKyAgICAxNjIyLCA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDExOTA2MSwgOTgzMTgzLCA2NTgxLCA1NTc2LCAxMjg2MTgsIAorICAgIDQzODU1LCA0MTMzNywgOTgzNzcyLCA0MTYzMSwgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgOTE3Nzg3LCA3MjM5NiwgCisgICAgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDEyNzg5MCwgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgNzAwMDUsIAorICAgIDEyMDUwNCwgMTk0ODI4LCA2NjgwMiwgNTA1OCwgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgNjk4OTIsIDAsIDc0NTM4LCAKKyAgICA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDcxMzY1LCA3NDg2LCAKKyAgICA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIDEyODMyMiwgMTI4NTI5LCAxMjExMywgNDIzNiwgNDcyNywgMTI4NDg3LCAwLCAKKyAgICA3NjkzLCAxMDc0OSwgMTIwMzMyLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMTI4NjkzLCA0MTYxOSwgMTAyMzksIAorICAgIDY4NjExLCA3MTg2NCwgNjYyMDksIDEyNzIzMywgNzQxMzUsIDk3NDgsIDEwMDM4MywgMTI3NTI0LCAxMjUyMTgsIDk4MzMxNiwgCisgICAgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgNzA2ODEsIDEwMDM4NSwgNzI4MTEsIDgzMzU0LCAxMjc4NjUsIDEyMDk5OSwgCisgICAgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgMTAwMzg2LCA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgCisgICAgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgMTI3OTY2LCAxMDA1NDMsIDcxODY4LCA3MzkzNiwgCisgICAgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIDEyNzgyNywgMTI4Mjc1LCAyNjQsIDIzNzUsIDgwNjAsIAorICAgIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIDYwMTksIDEyODk3NSwgOTgzNTU3LCA2OTYxLCAwLCA3MDQzNSwgCisgICAgNjcxNzEsIDg4MDAsIDEyNzMzMiwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxMDA3NDQsIDQyNzcxLCAxMjc5ODMsIAorICAgIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCA3NDk0MiwgMTI4OTIsIDEyNTIxMiwgNjcxNDksIDc0ODk5LCAKKyAgICA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgNTA3MywgMTIxMTY0LCAKKyAgICA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MDcyMywgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAxMjUyNTEsIDE5NiwgCisgICAgOTgzMTU0LCAxMjg4MDUsIDEyODI2MywgNDkyOSwgMTIwMzQyLCAxMjkxNDUsIDEwMDc5NCwgMTAwNzQ3LCAxMjE0NTUsIAorICAgIDQyODQ3LCA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDEyODMzOCwgNDEzMjMsIDk3NTgsIDEyODIxMSwgOTIyODksIDcwMTgxLCAKKyAgICA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCA5MTc5NTIsIDY0NjY3LCAxMjgxOSwgCisgICAgOTgzNTk3LCA1MDcxLCAxMjc5MTUsIDM2NDIsIDY3MzM0LCA1MDcwLCAxMDA0MiwgMTEzODEzLCAzOTg3LCA1MDY4LCAKKyAgICA5ODM0NjAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAKKyAgICAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDEyMTM1OSwgMTIxMjY3LCAKKyAgICAxMjc5NzIsIDY0NzA5LCA4MzI2OSwgMTI4ODU0LCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgCisgICAgMTI3MjE4LCA5ODMwNTksIDk1MjYsIDQ5MjAsIDEyODYxNywgOTQ4LCAwLCA3MDcwNiwgNDkzMCwgMTI3ODU3LCA5MjE3NSwgCisgICAgMTE5ODg2LCA0OTMzLCAxMTM3NzksIDEyMTA0OSwgMTE4OTg1LCA0OTI4LCA5ODMxNDksIDgzNTE0LCA3NDc3MCwgMTIwMTk0LCAKKyAgICAxMjY1NDgsIDcyMiwgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgODI5OTksIDg3NTMsIDE1MDksIDEyNTI2NCwgCisgICAgNTQ2OCwgOTUxMSwgNDM0OTMsIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCAKKyAgICA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgNjgzMzYsIDQxNjA3LCA5MjYyNywgMTY3OSwgMTIwMTE2LCAKKyAgICAxMjAxODAsIDc4ODM3LCAxMjc0NjIsIDcwMDUsIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIAorICAgIDU3NjEsIDM0MiwgODU1MywgOTIyNTYsIDgxNDMsIDEyMDk3OSwgMTE5ODMsIDc0MjA4LCA2MjQsIDc0NTA4LCA0MDU3LCAKKyAgICA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAxMjAyNTAsIDUwNzYsIDEyODcwMiwgODI5OTEsIDAsIDgyOTUsIDY4NSwgCisgICAgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEwMDkwNywgOTI1MjMsIDcxNDM1LCA3MTM4LCAxMjA1NTIsIDQzNTA0LCAKKyAgICAxMjUxOTcsIDY2OTE0LCA2NTc5NCwgMTI1MjAsIDgwNTgsIDk3MzIsIDkyNDgwLCA1MDgwLCA2NDc3NSwgNTAzNiwgNTAzNSwgCisgICAgMTAwNDI5LCA0MjYwNCwgMTAwNDI4LCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3NDM3MCwgNDQzMiwgMTIxMzEzLCAKKyAgICA1MDMzLCAxMjAzNDEsIDEyMDgxOCwgNDgzNiwgMzg4OCwgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCA0MzcwNCwgCisgICAgMTI3MjY0LCA5Mjk1NywgMjI3NCwgNjgwNjEsIDEwMDQyMiwgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDc4MDY5LCAKKyAgICAxMjgxMDAsIDExOTAwNywgMTAwNDI0LCA2NjMyMSwgOTQwNTIsIDEyODE0LCAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCAKKyAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMTI4NzkyLCA5MjQ4NywgNDI0MDYsIDE2NzYsIDY3MzYyLCA3NDg2MiwgNjczNjUsIDUwMzAsIAorICAgIDY3MzY0LCAxMTg4MTAsIDE5NTAwOCwgNzM4NjksIDk2MjIsIDExMzc2MywgNjk5NDQsIDY3ODcsIDY3MzYxLCAxOTQ5MzAsIAorICAgIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDcxNDg0LCA3MjM5NywgOTgzNjQxLCAwLCA2OTkwNiwgMTAwODU3LCA5ODMwNDEsIAorICAgIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgOTI1NjIsIDExOTkzNiwgNDc5NSwgCisgICAgMTAwNDMxLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAxMjAxODksIDQzNTY3LCA3NDA1NiwgMTIwMjY2LCAKKyAgICAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCA0Mzk1LCA0MzUzOCwgMTAwNDMzLCAKKyAgICAxMDA4NjAsIDExOTkyOCwgNzIxMywgNjg0NzYsIDcyMTQsIDcyMTUsIDU4NzksIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgCisgICAgMTIwMTczLCA2NTU0MCwgNjczNTksIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgCisgICAgODE3OSwgNzAxNjMsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIDY3NjUyLCA3MDQ2NCwgCisgICAgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAxMjczMjQsIDEyNzMyMSwgNzQ0MTAsIDEyNzMxOSwgCisgICAgMTI3MzIwLCAxMjczMTcsIDEyMTI4NCwgMTI3MzE1LCAxMjI4MywgMTYxNiwgMzc5NSwgNjc3MzIsIDg3OTUsIDY2MjQ1LCAKKyAgICAxMjA4MzgsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgCisgICAgMTk0NjI0LCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDcwMTY5LCA1MDQwLCAKKyAgICAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMTI3MDM2LCA1MDM5LCA5ODMyNDEsIDc4NDE4LCA5ODM5MzYsIDUwMzgsIAorICAgIDkxNzk5MCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDcwNjk1LCA2NDY0OCwgMTI2NjQxLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKKyAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAxMDA2MDQsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAKKyAgICAxMjc4MjIsIDQzMDksIDcxMjcsIDExODg0MSwgMTI5MDc0LCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIDEyODgwNCwgCisgICAgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMTIwNjQzLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxMjg0MzYsIDQxMzMxLCAKKyAgICAxMDA2LCA3NDI0MCwgNjcyMjQsIDE1NTAsIDgyMDEsIDcwNDUzLCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIAorICAgIDY1Nzg0LCA0Mzk1NywgNjUyNjcsIDM3NTgsIDk4Mzg0NCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIAorICAgIDcwNzg3LCA4NDQ5LCA5ODM2ODQsIDUwMDgsIDk4MzU3MiwgMjExOCwgMTIyODk2LCAxMjEyMSwgODI1NSwgNTUxMiwgCisgICAgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgCisgICAgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAKKyAgICAxMjgxNzcsIDEyNzc0OCwgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIAorICAgIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAKKyAgICAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgCisgICAgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIAorICAgIDE5NDgzNywgMTIxMjc1LCA3NDIwMSwgNzg3NDMsIDE5NDgwMiwgNzQ0OTcsIDY1OTMzLCA4MDg5LCA2OTI5LCA2MzksIAorICAgIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgCisgICAgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDc0MzA2LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgCisgICAgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMTAwNTE2LCA1MDQ1LCAKKyAgICA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMTIxMzM1LCA3ODUzLCA2NzgwOCwgCisgICAgNzQwMDQsIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMTI4ODgzLCAxMTkwNzAsIDcwMTc0LCA0MTc1MCwgMzU4NiwgCisgICAgNjQ1MDgsIDQzMTQ4LCAwLCAxMjc5NzEsIDExOTYwNiwgNjc5ODMsIDEzMjk2LCA1MTcsIDk4Mzg3OCwgMTI1MDE3LCAKKyAgICAxMDA1NjUsIDQxNTI4LCAxMjMsIDY1NDU0LCAxMjcyMTUsIDEyMTMyNiwgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgCisgICAgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTAwODAzLCAxOTQ1OTEsIDk4MzM3OSwgMzkyNSwgNDI1MSwgCisgICAgODA2OSwgMTA1MTcsIDcxMTEyLCA0ODksIDcxMTEwLCA0MjUwLCA5MjI2NiwgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCAKKyAgICA5MjczOCwgNjYyMDAsIDk4MzYyNiwgMTI3OTA1LCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDEyNjYyNSwgODcxMSwgNjE4MywgCisgICAgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTAwODA5LCA2NjM3NiwgOTIzNSwgMTI3NjAsIDc0MTc2LCAKKyAgICA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgOTgzNzk5LCAxMjY1OTcsIAorICAgIDEyMDQzNCwgMTE5MDUyLCA3NzI2LCAxOTUwOTUsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAxMjI5MTksIAorICAgIDY5MjMzLCAyNDU4LCAxMDA0MzUsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKKyAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDEyNzA4MywgMTk0ODk0LCAzMzkxLCA0MTA3NSwgMjQ3NiwgMTI5MTI5LCA3NDk5MCwgMCwgCisgICAgMTA2MjUsIDcwNzE1LCAxMjc2NywgMTMwMTcsIDc4NzQxLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIAorICAgIDEyMTE5OCwgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgCisgICAgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIAorICAgIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjY4MDksIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgCisgICAgOTI5NDEsIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTE5OTI2LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAKKyAgICAxMjc5NjQsIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgOTgzNjA2LCA3ODQ1OCwgNjY3MjgsIDE4MTYsIAorICAgIDQzOTUyLCA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDQzOTUwLCA3ODEwNSwgNDkwMSwgMTgyMSwgNDM5NTEsIAorICAgIDU3OCwgMzY1MywgMTAwNDc2LCA3OTEsIDkxNjIsIDY5NzcsIDc0MTk2LCA3ODg4OSwgNzAxNjAsIDAsIDczNzMxLCA4MzU0LCAKKyAgICA0MzU5MCwgMTE5MzAzLCA5ODM0NTEsIDc1NTcsIDExOTEwOCwgNjczNzgsIDgyMzQsIDcyNDEsIDEyODYwOCwgMTEzNzM1LCAKKyAgICAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAzOTQ2LCA3ODA3OCwgMTA5OTgsIDY2ODA3LCA2NzMsIDE5NDg2NywgCisgICAgNjQzOTcsIDExOTIzNSwgNzQ1OTksIDc4NDQ5LCA4ODkwLCAxOTQ5NzcsIDExOTMyMiwgMjQ0OCwgNzgwODUsIDEwMjY3LCAKKyAgICA4NDI0LCAyNDUyLCA3ODA4MywgNjcyMTcsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCAxMjUxMTcsIDcxMzAyLCA0NDA4LCAKKyAgICA0MTIyLCA2NzcyLCAxMTAzOSwgODcyMywgNjU4OTYsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA3MTkwNCwgMjQzOCwgCisgICAgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAxMjkxMzYsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIAorICAgIDExNTIxLCA3NzIzLCAxMjg2MzksIDEyNTI0MiwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCAKKyAgICA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIAorICAgIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNTU2LCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMjQzNCwgCisgICAgOTIwNCwgOTE3NTU4LCAzODc5LCAxOTQ4NjgsIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCAKKyAgICA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgCisgICAgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIAorICAgIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCAKKyAgICA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIAorICAgIDc4MDg4LCA2NjgxMCwgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTQ5ODYsIAorICAgIDY1NiwgMTI4NTc0LCA2NTAzNywgNDU3NywgNjQ2MjQsIDEyOTM1NCwgMTIwMjY0LCA3MTkxMiwgMTk0OTA4LCA0MjY5LCAKKyAgICA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMTk1MDg1LCA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgCisgICAgMTA1NTQsIDM0MTcsIDEwMTA1NywgNjgzMiwgNTA5OCwgOTE3NzY4LCAxOTQ2NjgsIDcwNDAzLCA1MDk3LCA0OTM1LCA5ODQ4LCAKKyAgICAxMDM4MSwgMCwgNjcyOTYsIDcyNzk4LCAzNjUxLCAwLCA2NzI5NCwgNzA4NDgsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgCisgICAgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIDEyNDcsIDEwMDM0LCAxMjEzNDAsIDUwOTksIDc4MzczLCAKKyAgICAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAxMTk5NTMsIDc4MzgsIDk4MzY2OSwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgCisgICAgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAxOTQ5MjMsIDkxNTQsIDkxMTgsIAorICAgIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCA4NTk5LCAxMjUxMTgsIDY5OTE4LCAKKyAgICAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIAorICAgIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDEyOTMyOCwgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCAKKyAgICA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIAorICAgIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCAKKyAgICA2OTgxMSwgMTAwOTExLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCA2NDY3NCwgMCwgNzAxNTgsIAorICAgIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgNjUyNjYsIDY5NzIwLCAKKyAgICA2NDc2LCA1MTA0LCAxOTQ3MzQsIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIDExMzY4MywgNjU2NywgMjM4LCAKKyAgICA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDY3MzAyLCAKKyAgICA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCA5MzAzOSwgODgwMywgMzA5LCAKKyAgICA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgMTI1NTMsIDEwODE0LCAKKyAgICA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgOTgzODIyLCA2NjQ2NiwgCisgICAgMTI0OTg2LCAxMjc3ODQsIDEyODUzNCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCiAgICAgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ2MDAsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDEyMTA1NiwgMzIyMiwgCi0gICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCA5ODMwNDcsIDkzMDY3LCAxMDgzNCwgOTgzMTI3LCAwLCA2NTczMiwgOTQwOTUsIAotICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMjA3MzQsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAorICAgIDEyMTQzOSwgMTIxMTM3LCAwLCA2NjY2MywgMTI3OTI4LCA5MzA2NywgMTA4MzQsIDEyNzU0NywgMCwgNjU3MzIsIDk0MDk1LCAKKyAgICA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTAxMDIxLCA2NzMwOSwgNzc4MSwgNDEzODMsIDY0NTY4LCA2NzMxMSwgMTIwNzM4LCAKICAgICAxMjA3NywgNzQ0MzMsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgNjcyNjAsIDI0NzksIDY3MzA2LCAKICAgICAzNjMyLCAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCA2NzI2MywgNzQ4NDQsIDY3NjM5LCAzNjM2LCA2Nzg5NCwgMzY1MCwgCi0gICAgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA2ODgyNiwgMzY0MCwgMTI3MTkwLCAKLSAgICA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgMTk0OTUwLCAxOTQ5NDksIDc0MTE1LCAxOTQ5NTEsIDEyNjY0OSwgCi0gICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgOTgzNzg0LCA2NjAxMCwgNDIwODMsIDc0OTUyLCA2ODM5OCwgMTk0OTU3LCAKLSAgICA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCA0Mjk1LCA2NTI2NCwgNjgwMDYsIAotICAgIDAsIDY3ODM1LCAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCA5MjUsIAotICAgIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxMjA5ODgsIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCA5MjIxOCwgCi0gICAgOTE4NiwgMjA2NywgNDAxNiwgOTgzODAzLCAwLCAzODEsIDEyOTM2LCAwLCA0MjA3NywgOTI5ODUsIDY5ODgwLCA1MTg0LCAKLSAgICA0MjA3OCwgMTk0NjA3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgNjc2MzMsIDEyMTMzNCwgMTI3MTA0LCAKLSAgICA4MTIsIDM2MTUsIDcyNDAxLCA1MTc4LCA0NDAwMCwgOTI0MzYsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIAotICAgIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMTI3NzkzLCA2NzYzMSwgNDI2MTYsIDEyMDY3MCwgMjQ0MiwgCi0gICAgMTA3MDMsIDY3MzE3LCA2NzYzMiwgNjczMTYsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDY2NzA4LCA3MzkzMywgNjc2MjYsIAotICAgIDQyNDAxLCAxOTQ4NjUsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgNzQ5MDYsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIAotICAgIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgNjQzODgsIDQyNDc5LCA3MTIyMCwgNDExMTcsIDAsIDkyNTgwLCAKLSAgICAxMjg2MjQsIDc0OTM5LCA2NzYyNCwgMTI3OTc2LCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIAotICAgIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDc4MDA0LCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgOTgzODU4LCAxMjc1NiwgCi0gICAgNjUyNTksIDAsIDk4Mzc4MSwgMTI3NTIsIDU4MzMsIDE0MzIsIDExMjQ2LCA0MTg4MywgNzM5MTIsIDk3OTksIDkxNzg5MywgCi0gICAgNDE4ODYsIDI0ODAsIDEyNzkwNiwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDEyNDk2OSwgCi0gICAgMTIxMSwgMCwgMTIwOTcxLCA2NzI2OSwgMTE4ODMyLCAxMjMxOCwgMTI5MDI0LCAxMTM3OTYsIDY4MDA1LCAxMDYyMiwgCi0gICAgOTgzNzc5LCAwLCA2ODgyMSwgNjU2NiwgNzExOTUsIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMCwgCi0gICAgODI4NCwgMTMwODEsIDExOTIwNiwgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDgzMDAzLCA0MjY1LCA2NjQyLCAzOTc3LCAKLSAgICA3NDE4NiwgNDE3NzgsIDgzNiwgOTI5NDcsIDI0ODgsIDEyNTA5NiwgNDU4MiwgMCwgNzE0MjYsIDQxNzc3LCAxMjkyNiwgCi0gICAgOTgzMzc5LCA3NTI4LCAxMDU1MCwgMTEzNzYxLCA5MjcwNiwgOTgzOTU1LCAxMDk2MSwgOTM5NzcsIDEzNzQsIDY0ODc4LCAKLSAgICAxMTkwMTQsIDY3NzIwLCA0MjM4OSwgNDEzNzQsIDIyODYsIDkxNzYwNCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDE5NTA0NywgCi0gICAgNDAwLCAxMjU5NywgMTIwNTg2LCAxMjgwOTcsIDEyOTA3MSwgNjY2MSwgOTE3OTYxLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCi0gICAgMCwgNzEzMDEsIDEyNzI5MiwgMzQ3MywgNzcxOCwgMTEzNzU1LCA2ODgxNCwgMCwgNTUyODUsIDczNzg0LCA2NjM5NCwgMCwgCi0gICAgMTE5NjksIDEyMDQ2MSwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCA5MjU1MSwgODA4MCwgNzAwNiwgMCwgMTE4OTAyLCAKLSAgICA2NzU3LCA2NDM1MSwgMTU0NCwgNjcxNTYsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDY3MDg4LCA2MTQ2LCA3NDAzMSwgNzcxLCAKLSAgICAxMjA2ODIsIDAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIDEyMjAwLCA2NjQyMywgNzkwNCwgMCwgOTUzLCAxMjkxNywgCi0gICAgMTE5NTYwLCAxMjMwMCwgNjcwODksIDExNDkxLCA5NzI0LCAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgCi0gICAgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMTk0NjI0LCA0NzEsIDc0ODQsIDc0ODIsIDY3NTMsIDc0ODAsIDU3NjQsIDc0NzgsIAotICAgIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIDI0NzQsIDc0NzAsIDc0NjgsIDEwMjMyLCAxMDYxNSwgCi0gICAgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCAxMTgzNCwgMzU0NCwgOTgzNzg1LCA2MDE3LCA2NTMxMSwgNzQ5MzUsIAotICAgIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMTk0ODgyLCAxMjA1NDQsIDAsIDEyNzk1MCwgCi0gICAgOTI2NjAsIDk4MzM1NiwgNzc4ODksIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDEyMTEzMywgMjEzOSwgNDI1NiwgCi0gICAgMTIwNzc2LCA3NDM4MCwgNDM4MzYsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDY2NjYsIDcwNTA4LCA2NTEzOCwgMTE5MzU1LCAKLSAgICA2Nzg2MiwgMCwgNjU2NzEsIDcwODMsIDEyMDAwOCwgODA2NiwgNzY3OCwgNzQ4NjUsIDEyNTEzNCwgMTIwMzIxLCAxMjcyODMsIAotICAgIDk4MzM5NiwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgNjY4NDksIDEyNTE0MSwgMCwgODMzMCwgMCwgMCwgCi0gICAgNDI3OTcsIDExMzczNiwgMTIwMjE1LCA4MzAwMSwgMzkwMiwgMCwgMTc3MCwgNDM5NTksIDEyNTA2NywgMTU2MCwgNDM5NTgsIAotICAgIDkyMTY3LCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCA2NzA5MiwgMTExOCwgNzEzMzQsIDc0ODg4LCAwLCAxMDgxLCAKLSAgICA3NDM2LCAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIDUxNjIsIDExOTE4OSwgCi0gICAgMTMzMCwgMTI4NjEzLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCAKLSAgICA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgOTgzNzQxLCAxMjcxNSwgNjgwMDIsIDE5NDU3NiwgODMyNTYsIAotICAgIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDc4NDkwLCAwLCAxMjY5ODQsIDY4MDAxLCA5MzM0LCAKLSAgICA5MjcwNSwgNzA4MDAsIDcwMTAxLCA3OTc1LCAwLCA3Nzk1NywgMCwgNDM0OTQsIDQ4ODQsIDY2NTk3LCA2OTczMiwgMCwgCi0gICAgMTIxMDEwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDEyNzg5MCwgNjgxNzgsIAotICAgIDMxMTcsIDU0NjAsIDEyMTQyMywgMTI4NzE3LCA5ODMzODksIDAsIDQyMjc5LCAxMjcxNDIsIDEyNjUwMywgNzg0MTUsIAotICAgIDk4MzIyOCwgNjg1MjQsIDk4MzM4NiwgMTMyNDgsIDEyNTAyNywgOTgzODQzLCA0Mzk1NiwgMTI4NDE1LCA5ODMxNTMsIAotICAgIDEyMTAwOSwgNTY2MywgNzExMjAsIDEyODQ3MiwgMTI4OTU4LCAwLCAyNDgyLCAxNDcxLCAxOTQ1ODMsIDExMzc0NywgCi0gICAgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDcxNDI3LCAxMjM3NCwgMTIxMzU3LCAxMjcwNjcsIDAsIDExODgyOCwgCi0gICAgMjQ2MCwgNzE4ODIsIDExOTQ0LCAxMjM3NiwgOTIzNDIsIDY0Njc5LCA5Mjg5MywgMTIzODAsIDEwNTU3LCA2NDQ3MywgCi0gICAgNTg3MCwgMTExMjIsIDIwMjQsIDEyNzE4MCwgOTgzMzkxLCA3MTg3OSwgNTM5LCAwLCAxMjAzMDIsIDcwMTIwLCAzODUzLCAKLSAgICA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA2NzI0MSwgOTUwMywgCi0gICAgMTk0OTY5LCAyNDc4LCAxMjAyNDgsIDQxNjIsIDAsIDQyNjAsIDEyOTUzLCA2OTYzMywgODI5NjYsIDEyNDcwLCA5MjY0MCwgCi0gICAgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgMTEzNjg3LCA5ODM1NzksIDEyODE5MCwgCi0gICAgNjk2NzIsIDgyMTMsIDQzODI0LCA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgMTk0OTY3LCA3ODg4NSwgMTE5MjQzLCAKLSAgICA2ODIzNSwgMTIwNTgyLCA3ODU0NywgMTEzNzA5LCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAxMTkwNDQsIDAsIDczNzkxLCAwLCAKLSAgICA4MzAzMCwgMCwgMTIxNDgyLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgCi0gICAgNzQ5MDMsIDEyMDkyNywgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgMTE4ODQxLCAKLSAgICAxMjgwODYsIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIAotICAgIDQxOTczLCAzNTkxLCA0MTk2OSwgODMwMDgsIDI0NTMsIDExODg5OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgMTAzNDksIAotICAgIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIDY4NywgCi0gICAgOTMwNTUsIDEyOTA3NCwgMCwgMTg0MCwgMTI3ODA5LCA2ODY3MSwgMTExMjEsIDQ4ODMsIDI4NSwgNDcyMywgMTExNzUsIAotICAgIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDc0NjQwLCAKLSAgICA5NzQzLCAxMjAyMzIsIDEzMTM0LCA5MzA2NSwgMTI4OTU2LCA2NTkzMSwgOTI1NzksIDEyODMyOSwgNDI2MzQsIDk4MzM0NSwgCi0gICAgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDE5NTAxMywgMTA0NDUsIDEyMTMyMiwgOTI5NjksIDY2NzE3LCAyNjE0LCAKLSAgICA5MTI1LCA3MTEyNSwgMTcyOSwgMTI5MDM0LCA3MjQyMCwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDEyNDkyOSwgCi0gICAgNjUxOTQsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCAKLSAgICA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDczNzY0LCA0MDM5LCA2NDMsIDMwODYsIDkyNTMzLCA0MjQ0OCwgNDIyOTksIAotICAgIDU4LCAxMjAwODQsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgMCwgMCwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgNzEyNiwgCi0gICAgMTk0NTc1LCAyNzIxLCAxMjAwNzMsIDExOTA5NiwgMTk5MjksIDExODk0MSwgMTI4Nzk3LCA5Mjk3NSwgNDI0MiwgNDI2NCwgCi0gICAgMTIwMDc3LCAxMjA1MzAsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDk4MzE5OSwgCi0gICAgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyNDAsIDU1MjgwLCA0MjE3NCwgMTI3OTU0LCA0MjQzMCwgCi0gICAgMCwgOTgzNDUyLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDY4MzE0LCA2NjY2NywgMTE5MzUxLCAKLSAgICAxOTQ5ODIsIDEyMTE3MiwgNDIyMDAsIDQyNTY2LCA3MDAwMCwgMTI4OTI4LCA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAxMjUwNDAsIAotICAgIDAsIDEyMzg1LCAwLCA3NDkyNiwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIDY1MDM4LCAxMjM5MiwgCi0gICAgNjUwMzYsIDgwNjQsIDEyNzU1OCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCA3Nzk5OSwgMTE2NjMsIDE2NjYsIAotICAgIDQyMDkxLCAxMTk2NTcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAxMjc4OTcsIDYzODk2LCAxMjA2MSwgCi0gICAgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMTE5OTM0LCA5ODM4MzQsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCAKLSAgICA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgNzQ2MjksIDEyMzc5LCAxMjcxMDcsIDkyOTMwLCAKLSAgICA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgNzAwODksIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNjY0MTMsIAotICAgIDQxMjIwLCAxMzAzMiwgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCAKLSAgICA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCA2MzkwMSwgMCwgCi0gICAgMzY1NywgMTE5NjExLCA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTIxMDU4LCAxMTk5MzUsIDQxNzQwLCAxMjQyOCwgCi0gICAgNDEyODMsIDQxOTE2LCAxMTkyMTAsIDEyODMxOCwgMCwgMTI0MjksIDY3MjcsIDk4Mzk0OCwgNzU2MiwgMTI1MTI5LCA1MTcwLCAKLSAgICA5ODM5MTUsIDQxNzU1LCA2NzYsIDAsIDY2NzA0LCA2NjY2NCwgOTk3OCwgNjY0OTEsIDM1MzYsIDAsIDk3NTIsIDkyMzk3LCAKLSAgICA2MTYyLCA3ODMyMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCAzMDcyLCAKLSAgICA5MTc4MjgsIDQyMjA3LCA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMTI1MDIxLCA3MDE1MSwgODMwOCwgOTE3Nzk3LCAKLSAgICA3MDgwNywgMTE5MjU4LCA2Nzg2NCwgMTEzNjk2LCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2NzIzMSwgMzQxLCAyNzI3LCAKLSAgICA0MTI5LCAzNTM5LCAwLCA2Mzg2MSwgMCwgNzkxMywgMCwgNjM4NTksIDQxMzEsIDYzODY4LCAxMjkwODUsIDYzODY3LCAKKyAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCA5MjQxMSwgCisgICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDc4MywgMTAwODk3LCA3NDExNSwgMTk0OTUxLCAxMjUxOTksIAorICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDk4MzkwOSwgOTgzNDcxLCA2NjAxMCwgNDIwODMsIDc0OTUyLCA2ODM5OCwgMTk0OTU3LCAKKyAgICA2NzYxOSwgNjYzNjcsIDEwMDg5OSwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCA0Mjk1LCA2NTI2NCwgNjgwMDYsIAorICAgIDAsIDY3ODM1LCAxMDA5MDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIAorICAgIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIAorICAgIDkyMjE4LCA5MTg2LCAyMDY3LCA0MDE2LCAxMjg4NDgsIDEyOTE4MiwgMzgxLCAxMjkzNiwgOTgzNzM2LCA0MjA3NywgCisgICAgOTI5ODUsIDY5ODgwLCA1MTg0LCA0MjA3OCwgMTk0NjA3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgCisgICAgNjc2MzMsIDEyMTMzNCwgMTI3MTA0LCA4MTIsIDM2MTUsIDcyNDAxLCA1MTc4LCA0NDAwMCwgOTI0MzYsIDc4ODA3LCA1MTg4LCAKKyAgICA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMTI3NzkzLCA2NzYzMSwgNDI2MTYsIAorICAgIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDY3MzE3LCA2NzYzMiwgNjczMTYsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDY2NzA4LCAKKyAgICA3MzkzMywgNjc2MjYsIDQyNDAxLCAxOTQ4NjUsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgNzQ5MDYsIDg1NDIsIAorICAgIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgNjQzODgsIDQyNDc5LCA3MTIyMCwgCisgICAgNDExMTcsIDEwMDg5MywgOTI1ODAsIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDEwMDU5MSwgNjU1ODUsIAorICAgIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIAorICAgIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgCisgICAgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCAKKyAgICA3ODY1NiwgOTgzMjc1LCA3MDY2MSwgMTI0OTY5LCAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAKKyAgICAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIAorICAgIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAxMjkwNTIsIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCAKKyAgICA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgNzI3NDMsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIAorICAgIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIDcyNzA4LCA3NTI4LCAxMDU1MCwgMTEzNzYxLCA5MjcwNiwgOTgzOTU1LCAKKyAgICAxMDk2MSwgOTM5NzcsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDY3NzIwLCA0MjM4OSwgMjI3MywgMjI4NiwgOTE3NjA0LCAKKyAgICA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCA0MDAsIDEyNTk3LCAxMDA0ODIsIDEyODA5NywgMTI5MDcxLCA2NjYxLCAKKyAgICA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAxMTk2MTcsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgCisgICAgNjY3NDIsIDEyNTEzOSwgNTUyODUsIDczNzg0LCA2NjM5NCwgMCwgMTE5NjksIDEyMDQ2MSwgMTI3ODQxLCA2MzY1LCAxODg3LCAKKyAgICA2NzYzLCA5MjU1MSwgODA4MCwgNzAwNiwgMCwgOTI3NjMsIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIAorICAgIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIDEyMDY4MiwgMTk0NjUwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAKKyAgICAxMjIwMCwgNjY0MjMsIDc5MDQsIDEyODcxNSwgOTUzLCAxMjkxNywgNzI3MDQsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIAorICAgIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAxMjg3NzUsIDc0ODcsIDcyNzE2LCA0NzEsIAorICAgIDc0ODQsIDc0ODIsIDY3NTMsIDc0ODAsIDU3NjQsIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIAorICAgIDI0NzQsIDc0NzAsIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCAxMTgzNCwgMzU0NCwgCisgICAgOTgzMzkwLCA2MDE3LCA2NTMxMSwgNzQ5MzUsIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgCisgICAgMTAwOTM2LCAxMjA1NDQsIDAsIDEyNzk1MCwgOTI2NjAsIDk4MzM1NiwgNzc4ODksIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgCisgICAgOTIzNDEsIDEyMTEzMywgMjEzOSwgNDI1NiwgMTIwNzc2LCA3NDM4MCwgNDM4MzYsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIAorICAgIDY2NjYsIDcwNTA4LCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgNjU2NzEsIDcwODMsIDEyMDAwOCwgODA2NiwgNzY3OCwgCisgICAgNzQ4NjUsIDEyNTEzNCwgMTIwMzIxLCAxMjcyODMsIDEyNzg3MiwgNzE4NiwgNzI3NTEsIDEyMDU1NSwgNzI3NjMsIDQ0NSwgCisgICAgMTE5MDI4LCA2Njg0OSwgMTI1MDMxLCA5MTc4NDAsIDgzMzAsIDAsIDEyNTAxOCwgNDI3OTcsIDExMzczNiwgMTIwMjE1LCAKKyAgICA4MzAwMSwgMzkwMiwgMCwgMTc3MCwgNDM5NTksIDEwMTAzOSwgMTU2MCwgNDM5NTgsIDkyMTY3LCA0NTg0LCA3Mzg0MywgCisgICAgMTIyOTExLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDk4MzQ3NiwgMTA4MSwgNzQzNiwgCisgICAgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIDEzMzAsIAorICAgIDEyNjYwMCwgNzEzOSwgMCwgMTIwNDcsIDc2NzUsIDk4Mzg0NywgMTI4Nzk3LCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCisgICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDExMzc5NSwgNzI4MDcsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCAKKyAgICA4MzI1NiwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDEyOTE0MCwgMTI2OTg0LCAKKyAgICA2ODAwMSwgOTMzNCwgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMTAwOTEwLCA3Nzk1NywgOTIxNCwgNDM0OTQsIDQ4ODQsIAorICAgIDY2NTk3LCA2OTczMiwgMCwgOTI5NTgsIDYzMTMsIDY1NTEzLCA2OTg1NywgMTAwOTA4LCAxMjc3OTksIDEyODc1NywgMjM0NSwgCisgICAgNDM2OTcsIDQ2MywgMCwgMTIxMjgxLCA2ODE3OCwgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjc5NTUsIDk4MzM4OSwgMCwgCisgICAgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgOTgzMjI4LCA4MjIxLCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIAorICAgIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgMTI5MDkzLCAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgCisgICAgMTI3ODU0LCAyNDgyLCAxNDcxLCAxOTQ1ODMsIDExMzc0NywgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDcxNDI3LCAKKyAgICAxMjM3NCwgMTIxMzU3LCAxMjcwNjcsIDAsIDExODgyOCwgMjQ2MCwgNzE4ODIsIDExOTQ0LCAxMjM3NiwgOTIzNDIsIAorICAgIDY0Njc5LCA5Mjg5MywgMTIzODAsIDEwNTU3LCA2NDQ3MywgNTg3MCwgMTExMjIsIDIwMjQsIDEyNzE4MCwgOTgzMzkxLCAKKyAgICA3MTg3OSwgNTM5LCAxMDA5MzMsIDEwMDkzMiwgNzAxMjAsIDM4NTMsIDY1MTgwLCA3MjczMCwgMTAwOTM5LCAxMDA5MzgsIAorICAgIDkyMzI0LCA5ODM3NDIsIDg2NTksIDAsIDEyNDc0LCA2NzI0MSwgOTUwMywgMTAwOTQxLCAyNDc4LCAxMDA5NDMsIDQxNjIsIAorICAgIDEwMDk0NSwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIAorICAgIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCA2OTY3MiwgODIxMywgNDM4MjQsIAorICAgIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCA5MjI0OSwgNzg4ODUsIDExOTI0MywgNjgyMzUsIDgzMzg4LCA3ODU0NywgCisgICAgMTAwOTIxLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAxMDA5MjUsIDEwMDkyOCwgNzM3OTEsIDEyMDIzOCwgODMwMzAsIDAsIAorICAgIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIDc0OTAzLCAKKyAgICAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDEwMDkxOSwgMTI4MDg2LCAKKyAgICAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgCisgICAgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAxMDQxMywgCisgICAgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIDkzMDU1LCAKKyAgICAxMDA3MDUsIDAsIDE4NDAsIDEyMTIyNCwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCA5MjY5MiwgCisgICAgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDkxNzc3MCwgNDIzMjMsIDc0NjQwLCA5NzQzLCAKKyAgICAxMjAyMzIsIDEzMTM0LCA5MzA2NSwgMTI4OTU2LCA2NTkzMSwgOTI1NzksIDEyODMyOSwgNDI2MzQsIDk4MzM0NSwgNDM0MzcsIAorICAgIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDE5NDU2NywgMTA0NDUsIDEyMTMyMiwgOTI5NjksIDY2NzE3LCAyNjE0LCA5MTI1LCAKKyAgICA3MTEyNSwgMTcyOSwgMTI5MDM0LCA3MjQyMCwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDEwMDkxNSwgNjUxOTQsIAorICAgIDY2MjAxLCAxMDA5MTYsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCAKKyAgICA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgNTgsIAorICAgIDEyMDA4NCwgMTAwMzU1LCAxMDEwMjYsIDYzODczLCA4NDkxLCAxOTQ2NDMsIDEwMDg5MSwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgCisgICAgNzEyNiwgMTAwODk0LCAyNzIxLCAxMjAwNzMsIDExOTA5NiwgMTk5MjksIDExODk0MSwgMTI3MzI2LCA5Mjk3NSwgNDI0MiwgCisgICAgNDI2NCwgMTIwMDc3LCAxMDA5MDIsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIAorICAgIDEyMDIyNSwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCAxMTkxODYsIDU1MjgwLCA0MjE3NCwgMTI3OTU0LCAKKyAgICA0MjQzMCwgMTI3ODM1LCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIAorICAgIDY2NjY3LCAxMTkzNTEsIDEwMDY3NywgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMDA4ODEsIDUwODgsIDY5NDgsIAorICAgIDAsIDg1MjQsIDcyNzM2LCAwLCAxMjM4NSwgOTE3ODU1LCA3NDkyNiwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgCisgICAgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDEyNzU1OCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCAKKyAgICA3Nzk5OSwgMTE2NjMsIDE2NjYsIDQyMDkxLCA3NDA2NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIAorICAgIDEwMDg4NSwgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDEyODU4NiwgNjg0NDksIAorICAgIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDEyODc3OCwgODExMiwgMCwgNjU4NTIsIAorICAgIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCAKKyAgICA2NTg2NiwgNDMyNywgNjM4NDgsIDYzODQwLCA2NjQxMywgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIAorICAgIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAxMDA4NzcsIDE5MzAsIDEwMDg3OSwgCisgICAgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAxMDA1NzEsIDYzOTAxLCAxMDA1ODcsIDM2NTcsIDExOTYxMSwgCisgICAgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgNzQwMTMsIDQxNzQwLCAxMjQyOCwgNDEyODMsIDQxOTE2LCAKKyAgICAxMTkyMTAsIDEyODMxOCwgMCwgMTI0MjksIDY3MjcsIDEwMDg3MywgNzU2MiwgMTAwODUzLCA1MTcwLCA3ODI0OSwgNDE3NTUsIAorICAgIDY3NiwgMTAwODU2LCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCA4MzA0NywgOTc1MiwgOTIzOTcsIDYxNjIsIAorICAgIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIDkxNzgyOCwgCisgICAgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCAxMDA2OTQsIDcwODA3LCAKKyAgICAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIDQxMjksIDM1MzksIAorICAgIDEwMDg2MSwgNjM4NjEsIDcwNjgzLCA3OTEzLCAxMDA3NjYsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTAwMzY2LCA2Mzg2NywgCiAgICAgNDEzMywgMTEzNzEsIDIxMCwgNDYwMCwgOTgzODk3LCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgNzg1MDQsIAogICAgIDY3MDQsIDQ1OTEsIDEyODAyOSwgNDM4NzMsIDEyMDc1MywgOTY4MCwgMTI5MzcsIDEyMDYyMywgNTYxLCAxMjE1OSwgMTk1LCAKICAgICA2ODMyMSwgNDE1MDEsIDE5NDU4MSwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAxMjgzMDYsIDQxNDk5LCAKLSAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAorICAgIDkzMDY4LCA3MTA0NywgNDIyNDIsIDQxNDk4LCAxMjgxNzgsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgCiAgICAgMjkyNCwgNjcxODMsIDEyMDUxMCwgMCwgOTgzOTcyLCA5Mjc2NiwgNzM5NDEsIDY3MTg2LCA0MjMzMCwgNjcxODcsIDM5NjksIAotICAgIDEyMTQwNSwgMCwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIDEyMTM0OSwgMCwgCi0gICAgMTI4ODAxLCA2NzE4MCwgMTI3NTY5LCAzMjcsIDEyMTI3NywgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgCi0gICAgOTE3NzgxLCAxMjAyMjIsIDgzMTI5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCAxMTM4MTIsIDU5OTksIDc1MDEzLCAKLSAgICA3NzEyLCAxMjQzMiwgMTI4MjQzLCA0MzY1MywgMTcyNiwgMTAxNSwgNzQwNzksIDgyMTIsIDEyODA2NSwgMTEzNzU0LCAKLSAgICA0MjQyMywgMTE5MDY2LCAxOTQ2MTMsIDcyMzk4LCA2NjcwOSwgMTIxMDYxLCA4ODExLCA5MjcsIDkyNTMyLCAwLCAxMjQzNiwgCi0gICAgMTIwMDg3LCA0MjAyMSwgMCwgNjc2NDQsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMTI3OTcyLCAKLSAgICA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgMTI4NzQwLCAyMjk2LCAKLSAgICAxMjg5MzIsIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCAxMTE3OCwgCi0gICAgOTE3NTg0LCA0MTUwMywgMTI3NDc4LCAxMTI2NSwgNjgyOTUsIDEyMDc1NiwgMTk0OTIyLCA2NzI4NSwgNTY2NCwgMzk3MiwgCi0gICAgMTIwODkxLCAxMjg1ODMsIDEyOTQwOCwgNjcyODQsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgCi0gICAgMTEyMTAsIDEyNDE4LCA4NTg2LCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDY4MDgxLCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAKLSAgICAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgCi0gICAgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgOTE3NTk0LCAxMTg4ODQsIDkwMjEsIDEyMDc4MywgMTE5OTMxLCAKLSAgICAxMTcyNCwgMTI3Nzg3LCAwLCA3MTEyMiwgMTI2NjE5LCAwLCA5ODM2NjEsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgCi0gICAgMTE0MDAsIDQzOTQzLCAxOTQ3OTksIDY2ODMzLCAxMjgyMzksIDk4MzcwNywgOTI1NTcsIDkzOTc2LCAxMjc1MjMsIAotICAgIDEyMDE5MCwgMTMyNCwgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDk4Mzg3MywgNzcxNSwgMzg4MSwgNDE0ODcsIDEyMTE4LCAKLSAgICA0MjUxNCwgNjg2NTEsIDEyODIxMCwgMTI4NTk0LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAKLSAgICAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgNzgyNTUsIDg1MTksIDEyMTIyNiwgMzAxNCwgCi0gICAgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMTk0OTkyLCA2ODAxNCwgNjk5NTEsIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgCi0gICAgNjU1MzIsIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIDEwODA1LCA4NTE4LCAxMDc3OSwgCi0gICAgMTIwMTg4LCA3MTMwMywgMTIxMjQwLCAxMjM2NywgNDIxNzAsIDAsIDY3MjkwLCA2MjksIDE5MjQsIDEyNzA5OCwgMTIwMzcsIAotICAgIDY3MTU4LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgCi0gICAgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCAxMjExMDksIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCAKLSAgICA3MDg1MSwgNjY2NTksIDkyNjA3LCA5MTc5MzMsIDY2Njg0LCAxMjgwNjMsIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCAKLSAgICA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAKLSAgICAxOTQ5MjYsIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDEyNzg5MywgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgCi0gICAgMCwgNTUyMzYsIDkyNjU5LCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAxMjA4MDUsIDQxMzI3LCA5ODM3MzIsIAotICAgIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCA3NDkzMCwgNzIxLCAxMDE4MiwgOTEwOCwgCi0gICAgNzEzMTEsIDAsIDExOTE4NSwgNDIyMjksIDc0OTYzLCAxMjEwMTQsIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIAotICAgIDk0MTA0LCA3ODU3MSwgNzQ4ODksIDcxMzI4LCAxMjg5NTUsIDQxNTc2LCA0MjIxNSwgNzg1NzAsIDc0MDM3LCAwLCA4NTc4LCAKLSAgICA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIAotICAgIDExNzIzLCAwLCA3NDEyMCwgMTI2NjQyLCA2NTA3NiwgOTM4LCA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCAwLCA2NzE3OSwgCi0gICAgNjcxNjgsIDExNzQyLCAyNDE5LCA2NzE3NywgMTE0OTMsIDEyMzM0LCA5MjQ5NCwgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAKLSAgICAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCAKLSAgICA0MjAwMiwgMTI0MDQsIDY4MDkyLCA3NDkyOCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIAotICAgIDg2MSwgNjc2OTksIDc0ODgwLCA2ODI5NywgOTgzODA3LCA0Mzc1NywgNDMzNzAsIDEyOTI5OCwgMCwgMTE5NTYsIDEyNDk2NywgCi0gICAgMTIxMjYzLCA3MDgxNSwgOTYxNiwgNjYzMSwgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgCi0gICAgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCA5MzAxNywgMTI4Mjg5LCA4NTMsIAorICAgIDEwMTA3MiwgOTgzOTYxLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgCisgICAgMTIxMzQ5LCAwLCAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCAxMjA4NDMsIDkxNzc3NiwgCisgICAgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyMDIyMiwgNzQyMDYsIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgCisgICAgNTk5OSwgNzUwMTMsIDc3MTIsIDEyNDMyLCAxMjA4ODUsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAKKyAgICAxMTM3NTQsIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIAorICAgIDk4MzYzNywgMTI0MzYsIDEwMTA1NiwgNDIwMjEsIDE5NDYxMCwgNjc2NDQsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIAorICAgIDEwMTA1OCwgMTk1MDE2LCAxMDA1NjYsIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDEwMDg3MCwgMCwgMTk5MTQsIAorICAgIDEyMTc5LCAxMDA1NjksIDIyOTYsIDEwMDU5NiwgNjM4MzYsIDYzODMyLCA3Mjc5MywgMTA5NjcsIDYzODE2LCAyNTk0LCAKKyAgICAzNDQ0LCA2MzgxNywgMTExNzgsIDkxNzU4NCwgNDE1MDMsIDEyMDA4NywgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDEwMDYwMCwgCisgICAgNjcyODUsIDU2NjQsIDM5NzIsIDEwMDk4NSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIAorICAgIDEwODE2LCAxMjcyODksIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgCisgICAgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIAorICAgIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCAKKyAgICA5MDIxLCAxMjA3ODMsIDExOTkzMSwgMTE3MjQsIDEyNzc4NywgMTIwMTkxLCA3MTEyMiwgMTI2NjE5LCAwLCA5ODM2NjEsIAorICAgIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIDQzOTQzLCAxMDA2NzQsIDY2ODMzLCAxMDA4MDUsIDEyNzc3OSwgCisgICAgOTI1NTcsIDkzOTc2LCAxMTk4NDQsIDEyMDE5MCwgMTMyNCwgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDEwMTA2MiwgNzcxNSwgCisgICAgMjI3MSwgNDE0ODcsIDEyMTE4LCA0MjUxNCwgNjg2NTEsIDEyODIxMCwgMTI4NTk0LCAzMDA5LCA0MTQ3NiwgNDE0ODksIAorICAgIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDcsIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgNzgyNTUsIAorICAgIDg1MTksIDcyNzExLCAzMDE0LCA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgCisgICAgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgCisgICAgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMDA4MDEsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMTI4MjE1LCA2NzI5MCwgCisgICAgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgCisgICAgMTAwODg4LCAxMjM2OSwgMTA2NDksIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAKKyAgICAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgNzA4NTEsIDY2NjU5LCA5MjYwNywgMTAwNjA3LCA2NjY4NCwgMTI4MDYzLCAKKyAgICAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIAorICAgIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTIwNTg5LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIAorICAgIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgCisgICAgODcyMiwgMTIwODA1LCA0MTMyNywgMTI5MzMyLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgCisgICAgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIDcxMzExLCAwLCAzNDE5LCA0MjIyOSwgNzQ5NjMsIDEwMDYyNywgNTk5OCwgMCwgCisgICAgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEwMDYyOSwgNDE1NzYsIDQyMjE1LCAKKyAgICA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgCisgICAgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgMTE3MjMsIDk4MzQzOSwgNzQxMjAsIDExOTAwMCwgNjUwNzYsIDkzOCwgCisgICAgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgOTgzMjYyLCA2NzE3OSwgNjcxNjgsIDExNzQyLCAyNDE5LCA2NzE3NywgCisgICAgMTE0OTMsIDEyMzM0LCA5MjQ5NCwgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIAorICAgIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAxMjI5MjIsIDQyMDAyLCAxMjQwNCwgNjgwOTIsIAorICAgIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgODYxLCA2NzY5OSwgNzQ4ODAsIAorICAgIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAxMjgzMDcsIDExOTU2LCAxMjQ5NjcsIDEyMTI2MywgCisgICAgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCAKKyAgICA2NjE4NSwgOTgzMjY5LCA1OTkyLCA3NjE2LCAxOTUwNDQsIDk4MzM5MiwgMTI1NzcsIDkzMDE3LCAxMDA4ODAsIDg1MywgCiAgICAgNDI2OTMsIDE5NDY0NywgMTE5MDI3LCA5ODMyODQsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCi0gICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCisgICAgMTAwODc1LCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKICAgICAxMjc4OTYsIDc0NjE5LCAxMTkyNjUsIDk4MzU4NywgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgCi0gICAgMTE5ODQzLCA5ODMyNjAsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCisgICAgMTE5ODQzLCAxMTg4OTEsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjUyNDUsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCiAgICAgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNjY4NTIsIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgCi0gICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMTk0OTU0LCAKLSAgICAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCA3ODU4MywgCi0gICAgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgCi0gICAgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCA5ODM1ODAsIAotICAgIDQyOTIzLCA2MzkxMCwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAKLSAgICA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMjA3MjcsIDk4MzkwOSwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgCi0gICAgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDc0OTMyLCAKLSAgICA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIDQxOTk2LCAKLSAgICAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCAKLSAgICA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDAsIDEyNzc3OCwgNDE2ODYsIDYzOTA1LCAxMTk2MDEsIAotICAgIDcwMjg1LCA2NzM5OCwgMTI4ODIwLCAxMjY0OSwgMTIwMDIyLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIAotICAgIDQzNjQzLCAxMjE0NDUsIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDc3ODQwLCAxMTk4MTUsIAotICAgIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIDk4MzIzNywgOTE3NjI4LCAKLSAgICA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKLSAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAotICAgIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgMCwgCi0gICAgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAorICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDY2MTgyLCAwLCAKKyAgICAxOTQ5MzcsIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIAorICAgIDc4NTgzLCA5MjQzMSwgMTIxMDM3LCAxMjY2NDQsIDE5NDkxNSwgNzI2NywgMTI3NDc5LCA3NDgzMywgMTI4MTgxLCA1OTkzLCAKKyAgICAyODE5LCAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDk4MzY3MywgMTM2MywgCisgICAgOTgzNTgwLCA0MjkyMywgMTMxMDksIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIAorICAgIDEwMTAzMSwgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTE5NjA3LCA5MTc4MTcsIDQxNDgxLCA0MzMzNSwgNzgzMiwgCisgICAgNDIzNDMsIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAKKyAgICA3NDkzMiwgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCAKKyAgICA0MTk5NiwgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAKKyAgICAxMTY1MywgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAxMjAxODQsIDEyNzc3OCwgNDE2ODYsIAorICAgIDYzOTA1LCAxMTk2MDEsIDcwMjg1LCA2NzM5OCwgMTAwODg0LCAxMjY0OSwgMTIwMDIyLCAwLCA4MjQ3LCA1MDcsIDkxLCAKKyAgICAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxMjE0NDUsIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDcwNjgwLCA3NzQsIDExOTgyOSwgCisgICAgNzc4NDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgCisgICAgOTE3ODIzLCA5MTc2MjgsIDc3MTksIDYwMjYsIDI0ODYsIDEwMTAxOSwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgCisgICAgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDExOTA4OSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgCisgICAgMCwgNzUzNCwgMTIyMTksIDIyMjYsIDcwNDk5LCA0MjgxMCwgMTA0OTIsIDEyMTUxMCwgMTIxMTQ4LCAxMjE1MDksIDQzMTE5LCAKKyAgICAwLCA3ODUzNywgMTI0MDMsIDI1MDAsIDcwMTQ1LCA4MzI0NiwgNDg5OSwgMTI3MjksIDk4MzM5OSwgMTk0NjE5LCA3NDExMywgCiAgICAgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDEyOTA0NiwgNzQ4MzQsIDEyODU5LCA3MDA4NywgCiAgICAgMTIwMTQ4LCA2NjM2OSwgNTg2MSwgMTI3NzU4LCAxMTk5OSwgMTI0MDAsIDQzNjQxLCAxMjgxODMsIDEyNjQ1LCA1MTQ2LCAKICAgICAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAxOTQ3ODYsIDY0MTg0LCAxMjk3NCwgNjQxODMsIDY3NjEzLCAxMjA2NDUsIAotICAgIDUxNDcsIDEyNTAxOSwgMCwgNzQ1MjQsIDEyODM1NiwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCAKLSAgICA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCA3ODY2MiwgMTI5MDI5LCAxMjgyOTgsIDY3Mjc3LCAKLSAgICAxMDEzOCwgNjcyMzgsIDEyODc4NSwgODg5NywgMTIwMjM0LCAxNDIyLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIAotICAgIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMTIwOTMwLCAxMTIzLCA5NjMsIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgCi0gICAgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgMTI5MTI2LCA0NDAyLCA5OTcwLCAxMjQwMiwgCi0gICAgOTMwNjIsIDQyMzkyLCAxMzA1LCAxMjQwOCwgOTIzODQsIDQ0MDA3LCAxMjg1NjMsIDEyNzIxNiwgNDE0NjQsIDEyNDExLCAKLSAgICAxMjk2OSwgNjcyNjgsIDQxNDY1LCAxMjEwOTIsIDg1MjgsIDE1NzUsIDAsIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAKLSAgICAxMTkxNjMsIDcwMTE5LCA5MDkzLCAxMjg1MzUsIDY4MzMsIDkyNTc0LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIAotICAgIDgyOTYsIDY3NTAsIDY2ODU1LCAxMjg0MTAsIDk1OTQsIDEyMDMwOCwgMTIwOTM4LCA0MzUyNywgMTIxMTkyLCA3MjcsIAotICAgIDc0MTkyLCA5MzA2MCwgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgCi0gICAgOTgzMjM0LCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDcxMjA5LCA5MjM0MywgOTgzODcyLCAxMjM2NiwgMTA5NjMsIDYwNjYsIAotICAgIDEzMjksIDAsIDMwNTIsIDkyMjAsIDEyMTA0NSwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIAotICAgIDkyNDczLCA5ODMyNDcsIDEyMDcxMiwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIDYzOTY1LCAKLSAgICAxMjAzMDUsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIDg3ODgsIAotICAgIDEzNTcsIDY0ODUxLCA2NTc0MywgOTI4OTQsIDg3NzQsIDcwMzM3LCAxMjcwODYsIDk5NDEsIDEyMDE3MiwgOTI3NDgsIAotICAgIDE5MzMsIDY5NjU1LCA5NTY0LCAxMjAwMTYsIDkyNDM1LCA3Mzg2NiwgMCwgMTIxMjQxLCAyNDg3LCA2NzYxNCwgMzEyMSwgCi0gICAgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCA5Mjc2OSwgMTIwMDIwLCAxOTQ1OTQsIAotICAgIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgCi0gICAgNTEwLCA2NDY2MywgMCwgMTIxNTAwLCA0NTYxLCAyMTAxLCAxMzk4LCA5MTc5NzIsIDkyNTU0LCA3NDAzNCwgNDE1NjksIAotICAgIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDEyMDUwNSwgODQwLCA5ODMyODMsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAKLSAgICAxOTQ4OTgsIDk3OTYsIDEyNzAwMCwgMzMzLCA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgMTIxMTU1LCAxMjQwNiwgCi0gICAgOTE3OTcwLCAxOTkzMSwgNjYzODgsIDY2NzgsIDc3NjksIDk4MzEyNCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIAotICAgIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDk4MzU3NiwgNDIyMDIsIDEyNzU0LCAxOTUwMjEsIDk4MzE5MSwgCi0gICAgMCwgOTQwOTcsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMTE4NCwgCi0gICAgNDUzMywgMTI3MjEyLCA3NDAwMywgNjQ5MCwgMCwgMTIwMzgsIDAsIDAsIDY4MjI1LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIAotICAgIDEyODkxMiwgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAxMjUxMDcsIDk4MzM1NCwgNzAyOTYsIDY0NDksIDk0OTQsIAotICAgIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgOTgzMzQxLCAwLCAzNDM2LCAKLSAgICAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNDI2MTUsIDY2NDA3LCA2OTk5MSwgNjc1OTgsIDAsIDAsIDAsIAotICAgIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDE5NDk5MywgMTIxNDU4LCAxMjc4NTksIDg1MDAsIDQyMjIyLCAxMjAxNDIsIAotICAgIDczNzQzLCAxMjA0MDAsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDEyNzgzMywgNjc2MDYsIDExOTA4MywgCi0gICAgMTIxMDgzLCA0MjIxNywgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCA2Njg4MCwgNzc5MTIsIDYzODQxLCA5NjEzLCAKLSAgICA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgNjQ5NTcsIAotICAgIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgOTA0LCAKLSAgICAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCA4MzQ4NSwgNjcyMjMsIDY2NTc2LCAxMjc5MTYsIDEyNzgzMSwgCi0gICAgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgMTI4NDYsIDEyNzI5MSwgNjgwNDAsIDExOTE5LCA2NDk2MiwgCi0gICAgMTI3MDgxLCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgCi0gICAgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAKLSAgICA3MDMzNCwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIDk4MjEsIDY0MzA0LCAxMjczNjksIDUxNTIsIDExMDQ4LCAKLSAgICA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCA3MDI3NiwgOTI2NjksIDcxMzMyLCAxMjAxNTgsIDQyNTg3LCAKLSAgICA0MjIxNCwgNDEzOTQsIDExMTg4LCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAKLSAgICAxMjAxMzEsIDY4NDIzLCAxMTkyMTgsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIDEyODQ2MCwgNDEzOTgsIDczODIsIAotICAgIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDEzMTU5LCAxMjE0MCwgOTU3MiwgOTgzMTMyLCAKLSAgICA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAxMjUwNjksIDEyNTAyMCwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCAKLSAgICA5OTc3LCAwLCAxMjEyODMsIDY1NzU5LCAxMDc2NSwgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgCi0gICAgOTUyMSwgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAxMjY2MDQsIDEwNDY0LCAwLCA5Mjk2OCwgMTk0NjEwLCA2NDUxNCwgCi0gICAgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIDY3OSwgNjQwMTMsIDk4MzU1NSwgNTg1MCwgNzU4LCA3NTM2LCAxMjA1MzgsIDkyMjM0LCAKLSAgICA0MTQ0MSwgMTA2OTMsIDY0MDA2LCA3NTA0NCwgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMTI4MTc2LCAKLSAgICAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMTI4Njg1LCAKLSAgICAxMDc3NCwgNjcxMDQsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAxMjcwMDYsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgCi0gICAgNjQwMzQsIDY0MDM5LCA2ODA2NSwgMCwgOTgzNjkwLCA5MjkxMywgOTIzMjIsIDc2NDUsIDEyODU0LCA3NDMzOCwgMzQ5NiwgCi0gICAgMCwgMTIxMzIzLCAxMTM3MTAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAKLSAgICAxMzMwOSwgMTE1NzAsIDEyNzgxMSwgMTk5NjAsIDExNjk2LCAwLCAxMDE4LCAxMTg5NzAsIDEyOTA3NSwgMTk0ODk3LCAKLSAgICAxNjgyLCA0Mzg2MywgMTk0ODk2LCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCA2NzcxNywgNzQzNTgsIDczODE0LCAxMTQxMiwgCi0gICAgNjc2OCwgMTA3MjgsIDExOTk4MiwgNzEzMTYsIDcxMDk5LCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAxMjc4MzIsIDQzMDQwLCAKLSAgICAxODMzLCAxMTU3NiwgNzAwNTQsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDExOTMzNCwgNzUzNSwgCi0gICAgODA4NSwgNDI1MjUsIDExOTk0NCwgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTIwOTk3LCAKLSAgICA2NDQ4MywgNjU2OTMsIDk4MzcxMSwgOTgzNDk1LCAxMjg2MTUsIDY5Njk1LCA0MjI0MCwgMTI4NTg3LCAxMjEzNTIsIAotICAgIDQyODY0LCAxMjY0OTgsIDQzMTY4LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjUxLCAKLSAgICAwLCA2NjE5NywgOTgzNDc0LCAxMDk4NiwgNjQ2ODMsIDEyODU0OSwgMTI4NDU0LCAzNDU1LCAxMjY1MzAsIDAsIDk4NzksIDAsIAotICAgIDAsIDQxNTgsIDcwMzA3LCA2ODE2NiwgMCwgMTI4MDkxLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDgzMzY4LCA1MTQyLCAKLSAgICAyNDA3LCA2OTY0MywgNDIxOTksIDAsIDkyNDA0LCA3NDM3MywgODMzNzIsIDU1MjE3LCA3MTQ1NywgNjM4NzAsIDQzMTYzLCAKLSAgICAwLCAwLCAxMjk4NSwgNDI4NjcsIDE4MzQsIDEyMDM4NywgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCAKLSAgICA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDgzMzU5LCAKLSAgICA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCA3NDQ3NCwgMTIwMDE5LCA2ODA3OCwgODUzMSwgMTI0OTksIAotICAgIDYyODAsIDEyMzI0LCA3MjQzNCwgNjUyMzgsIDY4Mzc0LCA0ODMyLCA2NTU3MywgNDM4NTEsIDYyNzksIDEyNTA4LCAxMjkwNCwgCi0gICAgMTI1MDIsIDkxNjEsIDEyODU1NSwgMTYyMCwgMTEyNDcsIDM2MDEsIDEyMTMwMSwgODMzNTMsIDY3MjQ2LCA2MDksIDExNTU1LCAKLSAgICA4MzQ1NiwgMTI0OTYsIDExOTgwLCA3NDE4MSwgNDM0MywgMTI1MDUsIDgyOTYwLCAxMjc4NjMsIDAsIDExMzc3LCAyMzksIAotICAgIDEyODExNCwgNjM3LCAwLCAxMjg2NzgsIDQyNjcxLCAwLCA5MzAzMiwgODMwOTUsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCAKLSAgICAxMjY5NiwgMTI4MjU2LCA5MTc2MDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIDQyODE4LCAKLSAgICAxMjY2MzIsIDcwMzA2LCAxMjA0OTAsIDcwMzMzLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAxMTk5MTMsIDkyNDkxLCA2ODA3NiwgCi0gICAgMTI2NTEsIDEyMDkxNywgNjQ2MjgsIDc0NTE3LCAxMjA1OCwgNzQwODQsIDE5NDYzMywgNzQ5NCwgMCwgNDkyNCwgNjU1OTIsIAotICAgIDExODg0NCwgMTk0ODIzLCAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDEyMTA3NywgOTgzMjk3LCAKLSAgICAxMjAzMywgNDIxNzgsIDE5NDc1NCwgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMTE0MzAsIDAsIDcwMjk5LCAxMjE1MDgsIAotICAgIDEyNDk1MSwgNjgzMjQsIDMxNzgsIDEyNjQ4OCwgMTI4NjMzLCA5MjcwNCwgOTE3NTY2LCA5MDgwLCAxMjA5NDMsIDY3Njk3LCAKLSAgICAxOTUxMDEsIDY4MjA5LCA3MjQxOCwgMTEwODIsIDcxNDg1LCA1Njk5LCA4MzM3MywgNjYwMDAsIDk0ODgsIDY1MTY2LCAKLSAgICAxMTkxMTIsIDcwNDc3LCAxMTE3MCwgNjg2NjIsIDEyODEyMCwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCA4MzM4NCwgMTE0ODcsIAotICAgIDY3ODU4LCAxMjQ2NCwgOTgzMzY1LCA0MzA0NSwgOTgzODMxLCA3MDM0NSwgNDMzNDUsIDk4MzI3NiwgMTA3NzAsIDExODk5NCwgCi0gICAgNjgwNywgNDY1LCA5ODI5LCA2OTk5NywgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAKLSAgICAxMDkzMCwgMTA4MzEsIDEyMTMyMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDkzMDU2LCA4MzA0NywgOTgzOTMzLCAxMjQ2OCwgCi0gICAgODYwNywgMTAwOCwgMTE4OTQ4LCAxMDA5MiwgMTI1MTIyLCAxMjg4NTEsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIAotICAgIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMTEyMDIsIDEyMDI0MywgMTI4MzQ1LCAxMzIyMywgNzQ5MzQsIDY0NTk1LCAKKyAgICA1MTQ3LCAxMjUwMTksIDkxNzYyNCwgNzQ1MjQsIDEyODM1NiwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCAKKyAgICA0OTc2LCA2NDE3NiwgNzQ5NjYsIDY3NjEwLCA4MjQxLCA5ODM5MDAsIDc3ODY4LCA0MjA2LCAxMjczNTIsIDc4NjYyLCAKKyAgICAxMjkwMjksIDEyODI5OCwgNjcyNzcsIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIAorICAgIDQxMjQsIDc3ODYyLCA2NTgzNiwgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAxMDA5MTIsIDEyMDkzMCwgMTEyMywgOTYzLCAKKyAgICA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIAorICAgIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgCisgICAgMTI4NDY1LCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCAKKyAgICA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgMTE5MTYzLCA3MDExOSwgOTA5MywgMTAwNjIwLCA2ODMzLCA5MjU3NCwgNjM5NTgsIAorICAgIDEyMDkzMSwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIDY3NTAsIDY2ODU1LCAxMjg0MTAsIDk1OTQsIDEyMDMwOCwgCisgICAgMTIwOTM4LCA0MzUyNywgMTAwNjExLCA3MjcsIDc0MTkyLCA5MzA2MCwgNTgwNSwgMCwgNjcyNiwgMTI3Mzg3LCA0MjE3NiwgCisgICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIAorICAgIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgCisgICAgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDEwMDg3NiwgMTE4OTIzLCA3NDgzNywgMTIwMTU1LCAKKyAgICAxNDk5LCAxMjEyOTksIDgwNTUsIDQyNzQwLCA2Mzk2NSwgNzQzMzgsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIAorICAgIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIDg3ODgsIDEzNTcsIDY0ODUxLCA2NTc0MywgOTI4OTQsIDg3NzQsIDcwMzM3LCAKKyAgICAxMjcwODYsIDk5NDEsIDEyMDE3MiwgOTI3NDgsIDE5MzMsIDY5NjU1LCA5NTY0LCAxMjAwMTYsIDkyNDM1LCA3Mzg2NiwgCisgICAgOTgzOTMyLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAKKyAgICAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgNjgyMDAsIDY2NzUsIDEyODE0NCwgOTgzMjgyLCA2NzU5MiwgCisgICAgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgOTgzNzA5LCA2NDYxOSwgNTEwLCA2NDY2MywgOTQwMzMsIDEyMTUwMCwgCisgICAgNDU2MSwgMjEwMSwgMTM5OCwgMTk1MDUxLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAKKyAgICAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgCisgICAgNjk4OTEsIDEyNzE0NSwgODE0NCwgMjExNywgMCwgNzA3MTIsIDEyNDA2LCA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgCisgICAgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDc0MTU3LCA0MDk4NiwgCisgICAgNDEyNywgNjY0ODcsIDk4MzU3NiwgNDIyMDIsIDEyNzU0LCAxOTUwMjEsIDk4MzE5MSwgMTAwNjI4LCA5NDA5NywgNjc1OTQsIAorICAgIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCA0NTMzLCAxMjcyMTIsIAorICAgIDc0MDAzLCA2NDkwLCA5ODM4NTcsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAxMjg5MTIsIAorICAgIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAxMjAzMTMsIAorICAgIDcwNzM4LCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCAxMjg4NzEsIDkxNzYyMSwgMzQzNiwgCisgICAgNjY3ODAsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNDI2MTUsIDY2NDA3LCA2OTk5MSwgNjc1OTgsIDk4MzMzNiwgCisgICAgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTIxMTg5LCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIAorICAgIDEwMTA0NywgNzM3NDMsIDEyMDE0MywgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMTAwNjk3LCAxMjc4MzMsIDY3NjA2LCAKKyAgICAxMTkwODMsIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAxMjg3MzYsIDY2MDAzLCA2NjcyLCAwLCAwLCA2Njg4MCwgNzc5MTIsIAorICAgIDYzODQxLCA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAKKyAgICAxMDIyOCwgNjQ5NTcsIDExMjgxLCAxMjgzMTIsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIAorICAgIDQyMzcyLCA3Mjc4NiwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCA4MzQ4NSwgCisgICAgNjcyMjMsIDY2NTc2LCAxMjc5MTYsIDEyNzU2OCwgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNTIzNSwgMTI4NDYsIAorICAgIDEyNzI5MSwgNjgwNDAsIDExOTE5LCA2NDk2MiwgMTAwNjk1LCA0MzczOSwgMTAxMDQxLCA4NTExLCA5NDYwLCA4MjMsIAorICAgIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgCisgICAgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCA3MDMzNCwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIAorICAgIDk4MjEsIDY0MzA0LCAxMjczNjksIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAxMjc4NTIsIAorICAgIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIAorICAgIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIAorICAgIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgCisgICAgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCAxMjkwODUsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIAorICAgIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCAKKyAgICA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMTI1MjAwLCAKKyAgICA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMTk0OTgwLCA5Mjk2OCwgNzI4NDcsIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgCisgICAgNjc5LCA2NDAxMywgMTI5MzE0LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIDQxNDQxLCAxMDY5MywgNjQwMDYsIAorICAgIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIDExOTA1MCwgMCwgMTk1MDIzLCAKKyAgICAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIDEwNzc0LCA2NzEwNCwgNDIyMDEsIAorICAgIDEyNDIxLCAxMTkxMDksIDEyNTI3MCwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDY4MDY1LCAKKyAgICAxMjcwNzUsIDk4MzY5MCwgNzI3NzMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzI3NzIsIDM0OTYsIDAsIDEyMTMyMywgCisgICAgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIDExNTcwLCAKKyAgICAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgOTI5MTMsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIDE2ODIsIDQzODYzLCAKKyAgICAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCA2NzY4LCAxMDcyOCwgCisgICAgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIDE4MzMsIDExNTc2LCAKKyAgICA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCA4MDg1LCA0MjUyNSwgCisgICAgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIDY0NDgzLCAKKyAgICA2NTY5MywgOTgzNzExLCAxMjcxMjAsIDc0Mjg4LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCA0Mjg2NCwgCisgICAgMTAxMDM3LCA0MzE2OCwgNDE4NjgsIDExODQsIDEyMTI4NSwgODE1LCAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjUxLCAKKyAgICAxMjkzNDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgCisgICAgMTE5NjY0LCA5ODc5LCAwLCA5ODMyMTUsIDQxNTgsIDcwMzA3LCA2ODE2NiwgMCwgMTI4MDkxLCAxOTQ5ODIsIDAsIDY2Nzk5LCAKKyAgICAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIDI0MDcsIDY5NjQzLCA0MjE5OSwgOTIzODYsIDkyNDA0LCA3NDM3MywgODMzNzIsIAorICAgIDU1MjE3LCA3MTQ1NywgNjM4NzAsIDQzMTYzLCAwLCA5MTc3NjMsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgCisgICAgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgCisgICAgMTk1MDkzLCA2NzY3NCwgOTE3OTQyLCA4MzM1OSwgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIAorICAgIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgCisgICAgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAKKyAgICAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIAorICAgIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAxMjUyNTgsIDExMzc3LCAyMzksIDEyODExNCwgNjM3LCAwLCAxMjg2NzgsIDQyNjcxLCAKKyAgICAwLCA5MzAzMiwgODMwOTUsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCA3Mjk4LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIAorICAgIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIAorICAgIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIAorICAgIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAxMjg3ODAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAKKyAgICAzNTUsIDk3MTksIDY2NzYyLCAxMzA2NiwgNjQ3OTYsIDc4NjYzLCA5ODMyOTcsIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCAKKyAgICA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgMTI0OTUxLCA2ODMyNCwgMzE3OCwgCisgICAgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAKKyAgICAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgNzA0NzcsIDExMTcwLCAKKyAgICA2ODY2MiwgMTAwNTA1LCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIAorICAgIDQzMDQ1LCA5ODMyMDEsIDcwMzQ1LCA0MzM0NSwgMTIwNjU3LCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIAorICAgIDY5OTk3LCA3NDM0OCwgMTIxNDAzLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgMTA5MzAsIAorICAgIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgMTAxMTIsIDk4MzkzMywgMTI0NjgsIDg2MDcsIAorICAgIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyMDUzOSwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgCisgICAgMTE5OTYsIDE4MjAsIDQ1NDcsIDEwMDcwOSwgMTEyMDIsIDEyMDI0MywgMTI4MzQ1LCAxMzIyMywgNzQ5MzQsIDY0NTk1LCAKICAgICAxMjcyOTQsIDgzMzc0LCA2ODQ4OSwgNDM0NSwgMTI2MTYsIDkxNzc4NCwgMTI4OTQ3LCA5ODMxNTUsIDc0NDY3LCAwLCAKLSAgICA5ODM4MTksIDEyODI5MSwgNTM4MiwgMTI3Nzc5LCAwLCA2NzIzMywgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIAotICAgIDY5ODk3LCA2NjUxMCwgMzU5MCwgMTk0ODM1LCAxMTMwLCA5MTc3NjYsIDEyMDk3NywgNDIwMTYsIDExODIzLCA0MzAyMywgCi0gICAgMTIxMDAyLCAxMTg4OTYsIDc3NDIsIDEyNzM3NCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNDM1MDksIAotICAgIDc4NTg0LCA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCA2NDc1NywgODU2OCwgMTk0Njg0LCAxMjA0OTYsIAotICAgIDczODE2LCA4MzA2MCwgMTI4NDE4LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDgzMzkzLCA0MzA2MywgCisgICAgNzM5NTUsIDEyODI5MSwgNTM4MiwgMTIxMzkwLCAwLCA2NzIzMywgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIDY5ODk3LCAKKyAgICA2NjUxMCwgMzU5MCwgMTk0ODM1LCAxMTMwLCAxMjg2ODksIDEyMDk3NywgNDIwMTYsIDExODIzLCA0MzAyMywgMTIxMDAyLCAKKyAgICAxMTg4OTYsIDc3NDIsIDEyNzM3NCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNDM1MDksIDc4NTg0LCAKKyAgICA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCA2NDc1NywgODU2OCwgMTk0Njg0LCAxMjA0OTYsIDczODE2LCAKKyAgICA4MzA2MCwgMTI4NDE4LCA0MjY3MCwgMTI3NTM5LCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKICAgICA0MzIzOSwgNjU2NzgsIDE5NDg0MCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIAogICAgIDU0MDAsIDExNTk0LCAxMjA0MDUsIDY4MzMzLCA4MzM5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMTI4MDEyLCA1NTg3LCAKICAgICA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIAotICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA4MzM4OCwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKLSAgICAxMjg2ODksIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAKLSAgICAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAKLSAgICAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKLSAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKLSAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCAKLSAgICA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgMTIwNzQ0LCA5ODM4MDksIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIAotICAgIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDExOTYwNywgMzE5NSwgNTU1MCwgCi0gICAgMTI5MTIxLCA3ODk3LCAxMjcwODksIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIAotICAgIDI4NzcsIDEyMTUxOCwgNzA0OTYsIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAKLSAgICAxOTQ3NzcsIDEyMTE2MiwgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgOTgzOTE2LCAKLSAgICAxMTk1NjEsIDk4MzA3OCwgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMTI4OTQ4LCAKLSAgICA4MzQ0MCwgMjcwLCAwLCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgCi0gICAgNzQwMzgsIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxOTQ4MzksIDEyODQwOSwgCi0gICAgOTI4MiwgMTExNjMsIDIyNCwgMTI4NTg4LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDE5NDU4NiwgNjg2NDQsIAotICAgIDk4MzEzMSwgMzg0MSwgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgCi0gICAgNjg2MTksIDQ0MDA4LCA2ODYyNywgMTIwNjk5LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIAotICAgIDEyMTM5NywgMTI1MDcsIDExOTYsIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgCi0gICAgMTIxOTgsIDkxNzg4NywgNjQ4MjQsIDExOTM0MywgMTI3MjQzLCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAKLSAgICAyNzA1LCAxMjg2ODAsIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgCi0gICAgMjcwMSwgMCwgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIAotICAgIDEyMTIzMywgNjM3NDUsIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgCi0gICAgNzg2MDksIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAKLSAgICAxMjc3ODEsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCAKLSAgICA5MjUzNSwgMCwgMCwgNjgyNDksIDc0NTc1LCAxMjcwMTAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAorICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA3MDcwMSwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKKyAgICAxMTk5NjMsIDk0MDA5LCAxMjkyOTksIDAsIDEyODgxMCwgNzM5OCwgNDE1MTUsIDk4Mzg4MCwgMTE4MDIsIDgwNDEsIDE0NjEsIAorICAgIDkxMCwgMTE5MTMzLCA5ODMzMjcsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDEyNzM2MywgNzYxNywgMTk0ODQxLCAKKyAgICAxMjg4OCwgMTAwNTAxLCA2NzY2OCwgMTMxNDMsIDEyNzk3NSwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIAorICAgIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCA5ODM1OTMsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgCisgICAgNjEzLCA3NTQzLCAxMDA3ODcsIDQ3NywgNDEwODMsIDkyNTIxLCAxOTQ1OTMsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAKKyAgICAxMjg2MjgsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgCisgICAgMTIwNzQ0LCA3Mjc4OCwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgCisgICAgNzQxOTksIDEyNDgyLCA5ODM3NzAsIDEyNDg5LCAxMDA5MTcsIDMxOTUsIDU1NTAsIDEyODE3MiwgNzg5NywgMTI3MDg5LCAKKyAgICAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAyODc3LCAxMjE1MTgsIDcwNDk2LCAKKyAgICAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgMTk0Nzc3LCAxMjExNjIsIAorICAgIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDkyMjMzLCA5MTc4MzUsIDEyNTE5MywgMTE5NTYxLCA5ODMwNzgsIAorICAgIDE5NDkxNCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDEyMTUxMSwgMTI1MTk1LCA3Nzg2MCwgMTI4OTQ4LCA4MzQ0MCwgMjcwLCAKKyAgICA5ODMzMDksIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCA3NDAzOCwgCisgICAgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDExOTY0OSwgMTAwNDAwLCA5MjgyLCAKKyAgICAxMTE2MywgMjI0LCA3Mjc5OSwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCA3MDY3NCwgNjg2NDQsIDEyNzIxNCwgMzg0MSwgCisgICAgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCAKKyAgICA2ODYyNywgMTAxMDIzLCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIDEyMTM5NywgMTI1MDcsIDExOTYsIAorICAgIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMTAxMDI0LCAxMjE5OCwgOTE3ODg3LCAKKyAgICA2NDgyNCwgMTE5MzQzLCAxMjY2MDgsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIDI3MDUsIDEyODY4MCwgCisgICAgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAyNzAxLCA5ODMzMzMsIAorICAgIDEyMDI0MCwgNTc2NywgMCwgMTk1MDE4LCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAxMjEyMzMsIDYzNzQ1LCAKKyAgICAxNzQ4LCA2Mzc3MCwgMTIxNDE5LCAxMjEwNzgsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDc4NjA5LCA2Mzc2NCwgCisgICAgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDk4Mzc3NiwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAxMjc3ODEsIAorICAgIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMTI3MTQwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIDkyNTM1LCAKKyAgICAxMjI4ODQsIDAsIDY4MjQ5LCA3NDU3NSwgMTAwOTk3LCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMTIxNDUyLCAKICAgICAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIDEwOTk2LCAxMTE3MSwgMTkyMiwgMTI3Mjc1LCAxMjQ5OCwgMTA5ODcsIAotICAgIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCAxMjgxMTIsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIAotICAgIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgCi0gICAgOTIxNzAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgODM1MTksIDY0OTExLCA4MzUyMSwgCi0gICAgMjA5NiwgNjUxMjAsIDgzNTE2LCA3ODIxOSwgODMyNzAsIDgzNzgsIDExNjMyLCA2ODgzOCwgNjYyMTMsIDYzODY0LCAKLSAgICA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCAKLSAgICA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCA2NjIzNCwgMTE2MDUsIDYzNzU5LCAKLSAgICAxMjczMDgsIDY2MjA4LCA2NzMzOSwgMTMwMDIsIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgMTI0OTQsIDczNzYxLCAKLSAgICAxMjQ5MiwgMTI2NjksIDk0MDcwLCAwLCA3NDE1MywgMTIwMzEwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgMTMwNDAsIAotICAgIDk4MzM2MiwgODYxMiwgNDg4NSwgNzQwNTMsIDEyNzgzMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIAotICAgIDEyOTA2NiwgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgCi0gICAgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCA2OTIzMiwgMCwgMTI1MTEsIAotICAgIDc0NDUzLCAxMjUxNCwgMCwgNzExMzAsIDcyMzksIDcwMDEsIDg2MjMsIDk0MDExLCAxMjUxMzcsIDEyODA0OCwgNzM3OCwgCi0gICAgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAxMjA5MDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDgzNTExLCA2NzM1OCwgODMxMSwgCi0gICAgMTI1MTAsIDc2NjksIDEzMDM5LCA4MzUwOSwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgMTIxMzg1LCA3MDE5MywgCi0gICAgMTI4MzU0LCAyMzIzLCAwLCAyMzE5LCA3NzkxNywgMTI0NzcsIDc3OTE2LCAyMzExLCA3NjY2LCA0NDE1LCAyMzcsIDYyODEsIAotICAgIDEyNzI4MCwgOTgzMzExLCA4MzAyMCwgMjMwOSwgMTMxMiwgODE3MywgODMwMTMsIDEyNDY5LCA4MzAxNSwgNzg1MDUsIAotICAgIDY0MzM1LCAxMDYwOSwgODMwMTEsIDc4MDA2LCA5Mzk3LCAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgCi0gICAgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMTI3OTkwLCAKLSAgICA2NTQ1MSwgODE4NSwgMTI4OTMxLCAxOTQ4NDMsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgNzk0OCwgCi0gICAgOTIzNiwgNzc5NDIsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDgzMDA2LCA4MzAwNywgMTE5OTgsIDEyMDgyLCAKLSAgICAxMDkyNCwgMzE0NywgODMwMDQsIDY2NDA2LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgCi0gICAgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgNzQyNTYsIDAsIAotICAgIDEzMDE2LCA4MjEwLCAxMjEwNjIsIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAKLSAgICAxMjA2MzAsIDQxNTUsIDEyMTA5MCwgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIAotICAgIDEyNzIxNywgOTgzMjAyLCA5OTIyLCA0MzMwOSwgMTEyMTEsIDEyNTI1LCA5ODM0NzMsIDEyMDE2LCA2NTc3MCwgOTU0OCwgCi0gICAgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAxOTQ2ODksIDEyNzE5MSwgMTEwMzAsIDQzOTE2LCA5MjU2NywgNjU2OTEsIAotICAgIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxMjkxNDMsIDEyMTA3MiwgMTI1MDYsIDk4MzgzOCwgCi0gICAgMTExNDYsIDcxNDc3LCAxMjUwMCwgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCAKLSAgICAxMTIwOCwgMTIwMjM2LCA3ODM5NSwgNzgzOTQsIDc0MDY5LCA3MTQ0NiwgNzgzOTEsIDM2MDgsIDgyODEsIDExMzczMiwgCi0gICAgMTEwNywgMTEzNzQ1LCA5MDc2LCA4ODYyLCA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCAKLSAgICA3NDE2NSwgNzQ3ODIsIDQzNDk5LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAxMTM2NjQsIDQ5OCwgCi0gICAgNjQ0NzEsIDc3OTg3LCA5Mjk3NCwgMTI1MjksIDgwNDIsIDQzODk5LCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgNzQ1MDYsIAotICAgIDY5NzE5LCAzMjMxLCA5MTc4MzYsIDY0MjIsIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgCi0gICAgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIDQxNDMzLCA0NzE5LCA0NjksIDkxNzgxMCwgNDM2MywgMzMxMywgCi0gICAgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCA3ODIyNCwgNzgyMjUsIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCAKLSAgICA3NDIzNywgOTkyMCwgMTIyMTUsIDgyOTc4LCA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCA3MDM2OCwgOTY2MywgCi0gICAgNjY4MzgsIDExOTYzNCwgNjUwMywgNDExMTAsIDk4MzQ2NywgMTQ5MSwgNjY4NDcsIDEyOTE2OSwgMTI3MzA0LCA0MTA2MSwgCi0gICAgNzA0NTQsIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDcxMTgxLCA2NjQ3NiwgCi0gICAgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAxMjcwMDIsIDQxNjg3LCAwLCAKLSAgICAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTI3Mjk5LCA3NjkyLCA5ODM4MzMsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIAotICAgIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIAotICAgIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAKLSAgICAxMjUzNywgMCwgNDM1MDYsIDY0MTM2LCAxMjUzNiwgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjA5MTQsIDQzODk3LCAxMzAzMCwgCi0gICAgNjcwMiwgNDUyNywgNzEyNTAsIDEyNTM4LCAxMjg4MTAsIDk4MzY0NSwgNjU1OTksIDY1NzE3LCA5OTY2LCA5MzA0NiwgCi0gICAgNDk0OCwgMTI0ODQsIDQwMzIsIDEyMTE3NywgMTI2MjMsIDAsIDYyMDcsIDk4MzIyNSwgNjExNywgNjU5MzAsIDg0MTIsIAotICAgIDEyNzE4MywgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDEyMTAyMCwgMTAxNDksIDc0MTE4LCAwLCAxMjAyMzMsIDEyNDgxLCAKLSAgICAxMjEyODAsIDEyNDg4LCA2NjcxMywgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCA3Mzc2NiwgCi0gICAgMTE5MjQ0LCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDEyMDIwOSwgMTE5MjcsIDY2NTg0LCAKLSAgICA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3MTQ1OSwgODMwMzQsIDY3NjAzLCA4NDgsIDk4NjgsIDY3MjIwLCA2NDI0LCA3ODU2OCwgCi0gICAgNjcyMjYsIDY5OTIyLCA3MDE5MCwgNzg1NjMsIDc4NTY0LCAyMzUyLCA2NzIxOSwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIAotICAgIDY3OTczLCA5ODMxOTMsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzAxOTIsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgCi0gICAgODA5OSwgMTI3OTg0LCAwLCAxMzQzLCA5MTc5OTksIDEyMDc4NCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDcyNDM2LCAKLSAgICAxMTM3MTMsIDExNzQxLCA5MTc5ODYsIDc1MDQzLCA5MjE2LCA4MjYzLCAxMTI3OSwgODMwMjMsIDgzMDI0LCA4MzAyNSwgCi0gICAgMTMwMjEsIDY0NDk0LCAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDAsIDQzOTU0LCAKLSAgICA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIAotICAgIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzgwLCAzMzM1LCAxMTkzNDEsIDkyMDksIDk3NzYsIDEyMDUyNiwgCi0gICAgMTk0NzQ4LCA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCAKLSAgICA3ODU4MSwgNDE1NiwgMCwgMTI3MzI5LCA2NDIxLCA3ODAzOSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIAotICAgIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIAotICAgIDQzOTI1LCAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMCwgCi0gICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAKKyAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTIwNzkzLCA0OTMsIDExODkyNSwgNDMxOTcsIAorICAgIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCAKKyAgICA2NDMxNSwgOTIxNzAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgODM1MTksIDY0OTExLCAKKyAgICA4MzUyMSwgMjA5NiwgNjUxMjAsIDgzNTE2LCA3ODIxOSwgODMyNzAsIDgzNzgsIDExNjMyLCA2ODgzOCwgNjYyMTMsIAorICAgIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCA2NjIzNiwgNjYyMTEsIAorICAgIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCA2NjIzNCwgMTE2MDUsIAorICAgIDYzNzU5LCAxMjczMDgsIDY2MjA4LCA2NzMzOSwgMTMwMDIsIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgMTI0OTQsIAorICAgIDczNzYxLCAxMjQ5MiwgMTI2NjksIDk0MDcwLCAwLCA3NDE1MywgMTIwMzEwLCAxMjY1MTMsIDEyMDQ3MiwgNDg4MiwgCisgICAgMTMwNDAsIDk4MzM2MiwgODYxMiwgNDg4NSwgNzQwNTMsIDEyNzgzMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAKKyAgICAyNDgsIDEwMTAxOCwgNjM3OTMsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMTAxMDE3LCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAKKyAgICA5MTc1OTgsIDE4NzAsIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIAorICAgIDAsIDEyNTExLCA3NDQ1MywgMTI1MTQsIDk4Mzk0NywgNzA2NTYsIDcyMzksIDcwMDEsIDg2MjMsIDk0MDExLCAxMjUxMzcsIAorICAgIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAxMDEwMTEsIDEyMDkwMCwgNjU5LCA2MDk4LCAxMDA5NDgsIAorICAgIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgCisgICAgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIDEwMDk0NiwgMjMyMywgMTI4MTQ3LCAyMzE5LCA3NzkxNywgMTI0NzcsIAorICAgIDc3OTE2LCAyMzExLCA3NjY2LCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMTAwOTQwLCA4MzAyMCwgMjMwOSwgMTMxMiwgCisgICAgODE3MywgODMwMTMsIDEyNDY5LCA4MzAxNSwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgODMwMTEsIDc4MDA2LCA5Mzk3LCAKKyAgICAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgCisgICAgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMTI3OTkwLCA2NTQ1MSwgODE4NSwgMTI4OTMxLCAxOTQ4NDMsIDQzMDI0LCAKKyAgICA0MzMzNiwgNjc2NTksIDIzMTMsIDc0NDQ2LCA3OTQ4LCA5MjM2LCA3Nzk0MiwgMTI4ODk5LCAwLCAxMDU3MCwgNDM0NzMsIAorICAgIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgCisgICAgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIAorICAgIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAxMzAxNiwgODIxMCwgMTIxMDYyLCAKKyAgICA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIAorICAgIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgCisgICAgNDMzMDksIDExMjExLCAxMjUyNSwgMTk1MDM1LCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAKKyAgICAxMTAyMSwgMTk0Njg5LCAxMjUyNTAsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIAorICAgIDE5NDY1NywgMTE5OTIwLCAwLCAxMjkxNDMsIDEyMTA3MiwgMTI1MDYsIDE5NDYwNSwgMTExNDYsIDcxNDc3LCAxMjUwMCwgCisgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCAxMTIwOCwgMTIwMjM2LCA3ODM5NSwgCisgICAgNzgzOTQsIDc0MDY5LCA3MTQ0NiwgNzgzOTEsIDM2MDgsIDgyODEsIDExMzczMiwgMTEwNywgMTEzNzQ1LCA5MDc2LCA4ODYyLCAKKyAgICA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIDQzNDk5LCAKKyAgICA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAxMTM2NjQsIDQ5OCwgNjQ0NzEsIDc3OTg3LCA5Mjk3NCwgCisgICAgMTI1MjksIDgwNDIsIDQzODk5LCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgNzQ1MDYsIDY5NzE5LCAzMjMxLCAxOTQ1NjksIAorICAgIDY0MjIsIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgCisgICAgNzg3MzgsIDQxNDMzLCA0NzE5LCA0NjksIDkxNzgxMCwgNDM2MywgMzMxMywgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCAKKyAgICA3ODIyNCwgNzgyMjUsIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCA3NDIzNywgOTkyMCwgMTIyMTUsIDgyOTc4LCAKKyAgICA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCA3MDM2OCwgOTY2MywgNjY4MzgsIDExOTYzNCwgNjUwMywgNDExMTAsIAorICAgIDEyNTIzMiwgMTQ5MSwgNjY4NDcsIDEyOTE2OSwgMTI3MzA0LCA0MTA2MSwgNzA0NTQsIDE5NDgzOCwgMTIxMDE0LCA2NTAyNiwgCisgICAgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDcxMTgxLCA2NjQ3NiwgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAKKyAgICAxMjUzNSwgNDE5OTIsIDQxNTA2LCAxMjcwMDIsIDQxNjg3LCAxMjczOTgsIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMDA0MTksIAorICAgIDc2OTIsIDEyMDY4MCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIAorICAgIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgCisgICAgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIDEyNTM3LCAxMDA0MTcsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIAorICAgIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgCisgICAgMTAwNDE2LCAxMjkzNTIsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIAorICAgIDEyNjIzLCAxMjAyMDcsIDYyMDcsIDE5NDcyNiwgNjExNywgNjU5MzAsIDg0MTIsIDEyNzE4MywgNzQzOCwgMTI5NiwgMjMyNSwgCisgICAgNDE1MTEsIDEyMTAyMCwgMTAxNDksIDc0MTE4LCAwLCAxMTk2MjUsIDEyNDgxLCAxMjEyODAsIDEyNDg4LCA2NjcxMywgMCwgCisgICAgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCA3Mzc2NiwgNzI3NTcsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIAorICAgIDk4MzQ2NSwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIAorICAgIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCAKKyAgICA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgCisgICAgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDEyNzk4NCwgMTI5MzY3LCAxMzQzLCAKKyAgICAxMjg0MzgsIDEyMDc4NCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDEyMDIxMCwgNzI0MzYsIDExMzcxMywgMTE3NDEsIAorICAgIDEyOTE5NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAxMzAyMSwgNjQ0OTQsIAorICAgIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMTAwNzQ2LCA0Mzk1NCwgNzQ1NTIsIAorICAgIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgCisgICAgNDMwMDEsIDgwMjksIDAsIDk4MzYzOSwgOTgzNzgwLCAzMzM1LCAxMTkzNDEsIDkyMDksIDk3NzYsIDEyMDUyNiwgMTI4NDA0LCAKKyAgICA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCA3ODU4MSwgCisgICAgNDE1NiwgMCwgMTI3MzI5LCA2NDIxLCA3ODAzOSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAKKyAgICAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDk4Mzc4OSwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgNDM5MjUsIAorICAgIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDkyNzQ1LCAxMjUwNDAsIAorICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDEyODM3OCwgNjUwNywgCiAgICAgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIAogICAgIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxMjEwMzYsIDM5OTcsIDEyODA2LCAKICAgICA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDEyODAwMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgCi0gICAgNjgzMDcsIDkxNzg0MiwgMCwgMCwgOTgzNzkxLCA5MjIxMCwgOTI0MTEsIDEyOTMwMywgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIAotICAgIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIDQzMTgzLCA2NDAxLCAKLSAgICA1ODMxLCAwLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgCi0gICAgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgODI5NzIsIDgyOTczLCAzNjAzLCAKLSAgICA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCA5OTE4LCAxMjc4MjMsIDgyOTQsIAotICAgIDQyOTEyLCAwLCAxMjcyODcsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgCi0gICAgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCAKLSAgICA0MTU1OSwgMTg5NiwgNjUyMTUsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDc4NTk0LCAxMTkwNzEsIDcwMjUsIDYzOTc0LCAwLCAKLSAgICA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIDE1NjQsIDczOTI0LCAxMTIxLCAKLSAgICA3ODMxOSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCA5ODM1NzgsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgCi0gICAgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCAKLSAgICA0OTEwLCAxMjkxOTMsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCAKLSAgICA2NDIzLCA0Mjc3NCwgMCwgMCwgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIAotICAgIDEyMDcyMSwgOTE3ODA5LCA4MzQ2LCAxMjg0MzgsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDc3OTgyLCA4MjIsIDcwNDEyLCAKLSAgICA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCA4Mjk1NiwgNzg2NTUsIDY2ODgyLCA4Mjk1OSwgNzg0ODQsIDQxMjY1LCAKLSAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDQzOTYyLCAxMTI3OCwgNzg2MzIsIDc0MTExLCAxMjgwOTUsIAotICAgIDEyOTQ2LCAxMjEwNzYsIDcxOTIxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDExMzcwNiwgMTI3OTY3LCA2NTAxOSwgNzQwNzgsIAotICAgIDczOTkwLCA2NTExMSwgOTgzOTYwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAKLSAgICAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCA3NDA3NiwgODI5NDksIDIzNDIsIDgyOTUxLCAKLSAgICA4Mjk0NCwgNjUyMDYsIDQ4OTQsIDgyOTQ3LCA0ODkwLCAxMjEwNTksIDY0NDMzLCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCAKLSAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA2NDY1MSwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCi0gICAgNjk3MDIsIDk4MzkzNywgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCAKLSAgICA0MzU4NywgMTIxMDk4LCAwLCAwLCA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCAKLSAgICA2NTg1NCwgNDg3NSwgNjU4MTEsIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAKLSAgICAxMzEwNCwgNjc4MjgsIDExOTk3LCAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMjE0MTIsIAotICAgIDY2MjE3LCAxMjExOTAsIDgzMzQsIDkyNzU1LCA4MzIwNywgMzQ0OSwgMTIxMjY0LCAxMzEwMCwgNzg0MTQsIDc4NDEzLCAKLSAgICA4MzIxNiwgNjY0MDUsIDcwNDMwLCA4MzA4OSwgODMyMDMsIDEyNzI1MCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgCi0gICAgMTI3MDE0LCA4MzE5OCwgNjc4MjUsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAKLSAgICA4MzUxMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgODMxMDAsIDIzNjEsIAotICAgIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCA5ODM1NzUsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCAKLSAgICA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgNzExMzEsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIAotICAgIDEyNTgyLCA3ODI4MiwgOTgzMDQ4LCA2OTg1NiwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCAKLSAgICA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIDcwNDAxLCA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIAotICAgIDcxMzMzLCA0MjMyNiwgMTIxMTE5LCAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAKLSAgICAxMjA4MjksIDgzMDgxLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgODMwODUsIDY2MzEyLCA2OTgsIDgzMDc2LCA4MzA4NywgCi0gICAgMTAzNTYsIDcwMDE3LCAxMjg1NzAsIDY1MSwgMTI2NDEsIDgzMTM4LCAxMjUwOTgsIDEyMDcxMCwgMTI5MDY0LCA0MTU1MiwgCi0gICAgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc0OTA1LCAxMjc1MTYsIDc4NDYxLCA5Mjk2MCwgNjY5MjcsIDY0OTQ1LCAKLSAgICA0NzE2LCA0MzI3NywgMTIwOTMyLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMTIwOTI4LCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgCi0gICAgMTIwNjc2LCA4NzAzLCA1NDYyLCA4MzE5NSwgODMxODUsIDEwMTAxLCAwLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIAotICAgIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIAotICAgIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAxMjI3OCwgNzUwMTEsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIAotICAgIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgMTI5MzA0LCA3Mzg0NSwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIAotICAgIDExOTMxNCwgMCwgNjY0ODksIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgCi0gICAgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDcwODM4LCA2NzQzMSwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNjc0MjgsIDQzNTk2LCAKLSAgICA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDc4MzIxLCA0MDk2NywgCi0gICAgNDA5NjQsIDkxNzgyNSwgMTI3MDQsIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCAKLSAgICA2ODIxNiwgMTk0ODcxLCAxMjEzOTAsIDUyNDQsIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAKLSAgICA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgCi0gICAgOTI3NDksIDkyNzUzLCA3NDQ5MCwgMTI3MDk5LCAxMTgzOCwgNzUwMDEsIDAsIDAsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDAsIAotICAgIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMCwgMTIwMzgyLCAxMTg4NTAsIAorICAgIDY4MzA3LCA5MTc4NDIsIDEyNzg5NywgMCwgOTgzNzkxLCA5MjIxMCwgNzI3MzUsIDEyOTMwMywgNDE0OTYsIDE5NDU3NCwgCisgICAgOTE2NSwgMTU3MiwgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgOTgzNDE2LCA5NjQ2LCAzNzczLCAKKyAgICA0MzE4MywgNjQwMSwgNTgzMSwgMTk0NzIzLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgCisgICAgMTI3MzgyLCA0MTUxNCwgMTIxMTI0LCAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCAKKyAgICA4Mjk3MiwgODI5NzMsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIAorICAgIDk5MTgsIDcyNzIzLCA4Mjk0LCA0MjkxMiwgMTk0NzQ1LCAxMjUxODUsIDEyNjQ4MywgNDg3NiwgNjU4MDQsIDAsIDEwMDU4MywgCisgICAgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIAorICAgIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDExOTkzMCwgNTY2NSwgCisgICAgNzg1OTQsIDgzMTI5LCA3MDI1LCA2Mzk3NCwgMTAwNDY0LCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAKKyAgICAxMjMxMCwgNTY2MiwgNDIzODIsIDE1NjQsIDczOTI0LCAxMTIxLCA3ODMxOSwgNjM5NTksIDk4MzE4NCwgOTk0MiwgMTMyMzEsIAorICAgIDk4MzI1MCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDc4MTQyLCA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCAKKyAgICA2NDc3MiwgNDIwMjQsIDY0MjAsIDQyMDI4LCA5MjI5NCwgMTA1MDksIDI3OTUsIDQ5MTAsIDEyOTE5MywgNjkyMzEsIAorICAgIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAxMDA0NTUsIDAsIAorICAgIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAxMjA3MjEsIDExMzcwMywgODM0NiwgCisgICAgNzg4MDIsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDc3OTgyLCA4MjIsIDcwNDEyLCA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCAKKyAgICA4Mjk1NiwgNzg2NTUsIDY2ODgyLCA4Mjk1OSwgNzg0ODQsIDQxMjY1LCA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIAorICAgIDQzOTYyLCAxMTI3OCwgNzg2MzIsIDc0MTExLCAxMjgwOTUsIDEyOTQ2LCAxMjEwNzYsIDcxOTIxLCAxMjAzNDksIDYyOTQsIAorICAgIDMxNDQsIDExMzcwNiwgMTI3OTY3LCA2NTAxOSwgNzQwNzgsIDczOTkwLCA2NTExMSwgOTE3OTU0LCA3NDgsIDQxMDY3LCAKKyAgICAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTI5MzEzLCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIAorICAgIDY3ODYzLCAzNTkzLCA3NDA3NiwgNzI3NTAsIDIzNDIsIDgyOTUxLCA4Mjk0NCwgNjUyMDYsIDQ4OTQsIDgyOTQ3LCA0ODkwLCAKKyAgICAxMjEwNTksIDY0NDMzLCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDcwNzM1LCAKKyAgICA2NDY1MSwgNzgwNDcsIDkxNzgwNiwgMTAxMTksIDY0MTUsIDQyODkzLCA5ODMwNjgsIDY5NzAyLCA5ODM5MzcsIDAsIAorICAgIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgNDM1ODcsIDEyMTA5OCwgMCwgMCwgCisgICAgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAKKyAgICA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgMTMxMDQsIDY3ODI4LCAxMTk5NywgCisgICAgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTAwNjMxLCA2NjIxNywgMTIxMTkwLCA4MzM0LCAKKyAgICA5Mjc1NSwgODMyMDcsIDM0NDksIDgzMjE0LCAxMzEwMCwgNzg0MTQsIDc4NDEzLCA4MzIxNiwgNjY0MDUsIDcwNDMwLCAKKyAgICA4MzA4OSwgODMyMDMsIDEyNzI1MCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgMTI3MDE0LCA3MDcwOSwgNjc4MjUsIAorICAgIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCA4MzUxMCwgNzgwNTQsIDQ5MTcsIDcwNjg2LCAKKyAgICA3MjgxNiwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgODMxMDAsIDIzNjEsIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIAorICAgIDc4MDcxLCAxOTQ2OTMsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAKKyAgICAxMjU3MywgNzExMzEsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIDEyNTgyLCA3ODI4MiwgOTgzMDQ4LCA2OTg1NiwgCisgICAgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIDcwNDAxLCAKKyAgICA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIDcxMzMzLCA0MjMyNiwgMTIxMTE5LCAxMjcyOCwgOTI2ODUsIAorICAgIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAxMDA0ODMsIDgzMDgxLCAxMjU4OCwgODgyMSwgNjE1MywgCisgICAgMjg2NywgODMwODUsIDY2MzEyLCA2OTgsIDgzMDc2LCA4MzA4NywgMTAzNTYsIDcwMDE3LCAxMjg1NzAsIDY1MSwgMTI2NDEsIAorICAgIDcyODA5LCAxMjUwOTgsIDEwMDYzOSwgMTI5MDY0LCA0MTU1MiwgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc0OTA1LCAKKyAgICAxMjc1MTYsIDc4NDYxLCA5Mjk2MCwgNjY5MjcsIDY0OTQ1LCA0NzE2LCA0MzI3NywgNzI3NDUsIDc4NDc0LCAxMjM0MCwgCisgICAgMTIwNTY4LCA3MDcyMSwgNzA3MTksIDU1MjY0LCA0MTIxMSwgMTIwNjc2LCA4NzAzLCA1NDYyLCA4MzE5NSwgODMxODUsIAorICAgIDEwMTAxLCAxMjA0NDEsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgODMxODksIDAsIDY2MjU0LCAxMjA4MjEsIDY4NDk3LCAKKyAgICAwLCAxMjg2NTQsIDExMzc5OSwgODMxNTksIDc0MDUwLCA0MjY1MSwgMTI3MzcxLCAwLCAwLCA4MzIyNSwgODMyMTgsIAorICAgIDEyMjc4LCA3MDcxNiwgMTI4NDA1LCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDgzMTU1LCAwLCAyNjk5LCAKKyAgICAxMjkzMDQsIDcyNzE4LCAyOTg1LCA4MzE0OSwgNjg2NDgsIDgzMTQ2LCAxMjE5MiwgMTE5MzE0LCAxMjkwNjIsIDY2NDg5LCAKKyAgICA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIDQxMjEwLCAxMTkzMDUsIDEyNTIwNywgCisgICAgMzUsIDcwODM4LCA2NzQzMSwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNjc0MjgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgCisgICAgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDc4MzIxLCA0MDk2NywgNDA5NjQsIDEyNDk4MywgMTI3MDQsIAorICAgIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCA2ODIxNiwgMTk0ODcxLCA3MjczNywgNTI0NCwgCisgICAgNDE4OSwgOTI2OTcsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCA5ODM2ODUsIAorICAgIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDEyMTEwMywgOTI3NDksIDkyNzUzLCA3NDQ5MCwgCisgICAgMTI3MDk5LCAxMTgzOCwgNjY3ODcsIDAsIDEyMDY2NCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgOTgzNjk4LCA0MTIyNywgCisgICAgNzI3NjUsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCA2OTk1MCwgOTE3OTUwLCA3MjUxLCAxMTM3OTIsIDEyMDM4MiwgMTE4ODUwLCAKICAgICAxMTkxNDEsIDEyODQ2MSwgNjYwMTUsIDY3MzMyLCA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIAotICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMTI4ODQyLCAwLCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAxMDk3NiwgCi0gICAgMCwgNzEzMjUsIDEyODM2NCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCA5MTc4MjMsIDkwMTIsIDE5OTU4LCA3NDQyMCwgCi0gICAgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAwLCA4MzE5MSwgCi0gICAgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgMTI3ODk1LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIDgyOTY3LCA0ODc5LCAKLSAgICA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgMCwgMTI5MTg5LCAKLSAgICAxMjY2MTgsIDEyMDM5MCwgNzQ5NTMsIDY1NTY3LCAxMjA2MTQsIDE5MjksIDEyMDk4NCwgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIAotICAgIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIAotICAgIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgNjc3NTgsIDE3NjAsIDI0MjEsIAotICAgIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIAotICAgIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEyMTIyNCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgCi0gICAgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgCi0gICAgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgCi0gICAgNDM5MTIsIDEyODM4NSwgNDc0OCwgOTIyMjgsIDEyOTE4NSwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIAotICAgIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAKLSAgICA5MTc3ODUsIDg0MTAsIDQ0NTQsIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgCi0gICAgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDAsIAotICAgIDc4ODI3LCAxMjYzNCwgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIAotICAgIDk4Mzc2MywgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCAKLSAgICA3NTM3LCAxMjQ5OTEsIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMCwgCi0gICAgMTI3OTI5LCA5NzgwLCAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAKLSAgICAxMTQxNCwgNjg3ODEsIDI1MzEsIDEzMDM0LCAxMjkxNTksIDAsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgCi0gICAgODMxMjIsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIAotICAgIDEyMTI1MywgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIAotICAgIDQ1MzUsIDEyMTI2NywgNDI3MSwgNzg0MTcsIDEyNzA1OSwgNjc2OSwgNDE0MTAsIDEyNzI1NywgNjQyNjIsIDY3NjcsIAotICAgIDQxNDA3LCA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEyMDg4NiwgMTI2NjA4LCA3MDgzMCwgMCwgCi0gICAgODMyMzIsIDAsIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMjEyNTQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgCi0gICAgMCwgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKLSAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDAsIDEwNzc1LCA5NzkzLCAKLSAgICA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAotICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIDQzNzgyLCAKLSAgICA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCA1ODMyLCAKLSAgICA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTIwMTI5LCA0MzI4NiwgMCwgCi0gICAgMTI4MjExLCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIDcwMzEsIAotICAgIDg1OSwgMTI4NDg4LCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgMTI4NjM4LCAKLSAgICA2NTE5NiwgMTI1MDg0LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDc2NjcsIAotICAgIDE5NDc5MiwgMTE4MjIsIDEyODU5MSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCi0gICAgOTgzNDYxLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIAotICAgIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgCi0gICAgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgOTgzNjA5LCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCi0gICAgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAKLSAgICAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMTIwNDc4LCAKLSAgICA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAwLCA5NzI1LCA5ODM0OTEsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIAotICAgIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgCi0gICAgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMjg4NzUsIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIAotICAgIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCA3NzgzLCA5MTc5OTEsIDEyMzk4LCAKLSAgICA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCAKLSAgICA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIAotICAgIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgCi0gICAgNjcyMzQsIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIAotICAgIDY0NDE4LCAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgCi0gICAgMTI1MTI0LCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCAKLSAgICA3MDgyNCwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgCi0gICAgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgCi0gICAgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIAotICAgIDcxMjU1LCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMCwgMCwgNzg3NzEsIDY0NTgyLCAwLCAKLSAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEyMDk4OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKLSAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgCisgICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCA3NDEwMiwgMjI2NiwgMTExMzIsIDMxMCwgMTIwOTI0LCA0MTI4MSwgCisgICAgMTA5NzYsIDEwMTA2OSwgNzEzMjUsIDEyNTI3OSwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAxMDEwODcsIDkwMTIsIAorICAgIDE5OTU4LCA3NDQyMCwgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAKKyAgICAwLCA4MzE5MSwgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgNzA2NjYsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgCisgICAgODI5NjcsIDQ4NzksIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAKKyAgICAxMDA0NzIsIDEyOTE4OSwgMTAwNDcxLCAxMjAzOTAsIDcwNzI3LCA2NTU2NywgMTAwOTY0LCAxOTI5LCAxMjA5ODQsIAorICAgIDEyMTQyLCAxOTQ2OTYsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCA3NTAwMywgNTM3OCwgNzUwMDQsIAorICAgIDEyMDk1NywgNDE0MjEsIDc1MDA1LCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAxMjUwMzAsIDI0OTgsIDU4MDAsIAorICAgIDEwMDgzNCwgNjc3NTgsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgCisgICAgMTI4Mjc0LCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTAwODQ5LCAKKyAgICAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgCisgICAgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDEyMDQ4MSwgNzI3NywgNjU2MjIsIAorICAgIDY1MDY5LCA3NTY2LCA2NDY4OCwgNjcxNDMsIDE5NDU5MiwgNzQ5NTcsIDQzOTEyLCAxMDA4MjUsIDQ3NDgsIDkyMjI4LCAKKyAgICAxMDA4MjYsIDEwMDgyOSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgMTIxMjc4LCA3NDU3NiwgNDQwMTksIDE5NDcyMCwgCisgICAgMTI4MTg5LCAzOTY3LCA3MTA5OCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgOTE3Nzg1LCA4NDEwLCA0NDU0LCAKKyAgICA3MjMsIDgzMDg0LCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgNzUwMjIsIDc4MTksIDIzMjAsIDEyOTMxMiwgMzM5LCAKKyAgICA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDgzMDU3LCA4MDQ3LCAxOTUwNTAsIDc4ODI3LCAxMjYzNCwgCisgICAgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIDEyMDQ4MiwgMTU4NCwgCisgICAgNjY2NDUsIDYwNDUsIDY3MjksIDc4NDE3LCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIDc1MzcsIDEyNDk5MSwgCisgICAgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAxMDA4MDgsIDEyNzkyOSwgOTc4MCwgCisgICAgMCwgMTExMTcsIDc0OTkzLCA3Nzk1MCwgNjcwOTEsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDEwMDQ5NSwgMTE0MTQsIDY4NzgxLCAKKyAgICAyNTMxLCAxMzAzNCwgMTAwODE5LCAxMjg1MjMsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgODMxMjIsIAorICAgIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIDEwMDQ5NiwgCisgICAgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIDQ1MzUsIAorICAgIDEwMDQ5MSwgNDI3MSwgNzI4ODEsIDEwMDc5OCwgNjc2OSwgNDE0MTAsIDEwMDc5OSwgNjQyNjIsIDY3NjcsIDQxNDA3LCAKKyAgICA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEwMTA4NiwgNzI4MDMsIDcwODMwLCAwLCA4MzIzMiwgMCwgCisgICAgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEwMDUzNCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAxMDA3OTEsIAorICAgIDEyMzM4LCA0NjUxLCA2NzM1NSwgMTEyNzAsIDAsIDc0NjMwLCAxMTkzMywgNzAxMDcsIDAsIDQxOTAzLCA0MzQ0NywgCisgICAgMTEwMDEsIDczODI3LCA0MjI1NSwgODMyNDMsIDgzMjM4LCA2OTgyMSwgNDE5MDUsIDY3MzUwLCAxMDA4MDYsIDEwNzc1LCAKKyAgICA5NzkzLCA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgCisgICAgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIAorICAgIDQzNzgyLCA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTAwNzgxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCAKKyAgICA1ODMyLCA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTAwNTQxLCA0MzI4NiwgCisgICAgMTI2NDk0LCAxMjA3ODksIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgCisgICAgNzAzMSwgODU5LCA5MjMxMywgODMyNjIsIDgzMjM3LCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAxOTQ4MTcsIDg1MzUsIAorICAgIDEyODYzOCwgNjUxOTYsIDEyMjkxMCwgNjYwMzIsIDExNDg4LCA3MjgzOCwgMTAwNzg4LCA0MjIzMywgNjQxNDAsIDk5NDYsIAorICAgIDc2NjcsIDEwMDU0OSwgMTE4MjIsIDEyODM0OSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTAwNTA3LCA3MTI5OCwgCisgICAgMCwgOTE3NTM3LCA5ODM4MzksIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCAKKyAgICA3MDA4NiwgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMTAwNzY3LCAxMjYyNSwgNjgxOTgsIDgzMTg0LCA3MDA4MiwgCisgICAgMzk0MCwgNDE1OTcsIDcyOTYsIDMzOTYsIDEyNjQyLCA4NjY1LCA5ODM2MTAsIDEyMDIwOCwgMTI2MzAsIDE2NTMsIAorICAgIDEwMDU2NywgMTAxNTMsIDEwMDc3NywgNjE2NiwgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIAorICAgIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIAorICAgIDQyMjkzLCA2NDM3NywgMTIwNDc4LCA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAxMDA3NzEsIDk3MjUsIDEwMDc3MywgCisgICAgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCAKKyAgICA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEwMDUyNywgCisgICAgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDEwMDc1MiwgNDM3MDAsIAorICAgIDEyODIwMiwgNzMwNCwgNzc4MywgOTE3OTkxLCAxMjM5OCwgODIzNywgMTk0ODkzLCAwLCAxMjM5NSwgMTIwMjc5LCAKKyAgICAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIAorICAgIDk4Mzg0OCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMTI2NTQxLCA0MTkzNywgNDM1OCwgNDMyNzIsIAorICAgIDYzNTMsIDAsIDAsIDEyMDQyMiwgOTMwNDUsIDE3MTAsIDEyMDE0MCwgMCwgNjU2MDcsIDY3MjM0LCA0OSwgNjYyNywgCisgICAgOTgzMTIwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIDY0NDE4LCAxNjQzLCAKKyAgICA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgMTI1MTI0LCAKKyAgICAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCA3MDgyNCwgOTg4NiwgCisgICAgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIAorICAgIDEwMTA5MywgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgCisgICAgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgNzEyNTUsIDEwNDk0LCAKKyAgICA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAxMjg3ODksIDAsIDc4NzcxLCA2NDU4MiwgMTAxMDk4LCAKKyAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEwMTA5OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKKyAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTAxMDk0LCA3MjA4LCA2NjQ0MiwgCiAgICAgNTU2OSwgMTk1MDA3LCA0MjMzOSwgOTI5OTcsIDYwNjMsIDY3ODg4LCA2OTk4MSwgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgCi0gICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMCwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIDM4NzAsIAotICAgIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIAotICAgIDc0OTYxLCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCAKLSAgICA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTEzNzAwLCA1ODksIDcwNTAsIAotICAgIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIAotICAgIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgCi0gICAgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIDY2ODU0LCA4MTIwLCA3MDMxMSwgCi0gICAgMTk0NTg1LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgCi0gICAgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAKLSAgICAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIDc0MDk0LCA5MTc4ODgsIDEyNTA2MCwgNzc5NzAsIAotICAgIDkyMTcxLCAxMjcyMTksIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgCi0gICAgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIAotICAgIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAKLSAgICAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAKLSAgICAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIAotICAgIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIDcwODA5LCA2ODMzNCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCi0gICAgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIAotICAgIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIAotICAgIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgOTgzOTMyLCA5ODczLCAKLSAgICAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgCi0gICAgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgNjc4NDEsIDc0MzcwLCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIAotICAgIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIAotICAgIDc4ODM3LCAxMTQ3MywgNTQ0OSwgMTI1MiwgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgCi0gICAgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAKLSAgICAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKLSAgICA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIAotICAgIDQ5ODYsIDEyMTg5LCAxMjc1MTIsIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIAotICAgIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgCi0gICAgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMCwgCi0gICAgOTYzNSwgMTI2MDAsIDg4NzEsIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIAotICAgIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgCi0gICAgMTI5MTU1LCAxMjgyNzksIDY3Mzc3LCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgCi0gICAgNjczNjksIDY1NTUsIDEyOTE0OCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCAKLSAgICA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIAotICAgIDc0MTE0LCA2NTgyMCwgNjIzMiwgNjgyMzMsIDEyNjYyNSwgMCwgNDM2MDgsIDExOTA5MSwgNzgxMTgsIDY1MzgsIDQzMzUsIAorICAgIDkyMjAxLCA2NDcyNywgOTE2MCwgNzAzMDEsIDE5NTA3MSwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIAorICAgIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCAKKyAgICA5ODMxMTYsIDEyMTA4NCwgNzQ5NjEsIDc4MzMzLCAxMTkxMzIsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIAorICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKKyAgICAxMTM3MDAsIDU4OSwgNzA1MCwgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAKKyAgICAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIAorICAgIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgCisgICAgNjY4NTQsIDgxMjAsIDcwMzExLCAxMjkxNTQsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgCisgICAgMTI4Mjc4LCA0NTUxLCAxMjI5MTIsIDMzNjksIDc0OTcxLCAxMjEwOTQsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIAorICAgIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDY4NDk2LCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDc0OTM3LCAKKyAgICA3NDA5NCwgMTI0OTQ4LCAxMDA0NzgsIDc3OTcwLCA5MjE3MSwgMTI3MjE5LCAxMjUyNTQsIDEyMTExLCAzOTI3LCAxMTk4ODAsIAorICAgIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgOTIyODEsIDEwNDQxLCA2Njc5OCwgOTgzODMxLCA0Mzk5MCwgNTQ5MywgCisgICAgOTgzNjE4LCA3MTEzMCwgOTE3NzY2LCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIAorICAgIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDEyNTI3MSwgCisgICAgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAxOTUwOTcsIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIAorICAgIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgCisgICAgNzA4MDksIDY4MzM0LCA5ODM0NDQsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIDEyMTI1LCAxMjc2NiwgMTIwNDA5LCAxMTY0LCAKKyAgICAxMTM3MjksIDcwMjgzLCA0MTkxOCwgNzc4NDksIDY3MTUwLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIDkyNTQwLCAKKyAgICA3NDY5LCA3Mjc5NSwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgCisgICAgNDExMjYsIDk5OTEsIDQxMTI4LCA3MDcwMywgMTI3MDMxLCAxMjY1MDgsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgCisgICAgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCAKKyAgICA2Nzg0MSwgNzEzMTQsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgCisgICAgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgNzA3MzIsIDExNDczLCA1NDQ5LCAxMjUyLCAKKyAgICAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIAorICAgIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIAorICAgIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCAKKyAgICA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgNDk4NiwgMTIxODksIDExOTU5OSwgNjc2NDgsIAorICAgIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIAorICAgIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCAKKyAgICA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAxMjcxODcsIDk2MzUsIDEyNjAwLCA4ODcxLCAKKyAgICA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAxMTg5MDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAKKyAgICAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIDY3Mzc0LCA2NzM3MywgNDI5MTYsIDEyOTE1NSwgMTI3NDg5LCA2NzM3NywgCisgICAgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCA2NzM3MiwgNjczNzEsIDM0OTQsIDY3MzY5LCAzNDE2LCAxMjkxNDgsIDc3OTc2LCAKKyAgICAxOTUwMTAsIDk4MzE5MiwgNzg1NjYsIDAsIDEyNzA0NywgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIDU0NDcsIDEwMDg5NSwgCisgICAgMTI4OTUsIDY0MzgyLCA0MDEwLCA4MzE1NCwgNDExMDYsIDc0MzU3LCA2NDQ0OCwgOTM5OTQsIDQxMTA1LCA3MDY3NywgCisgICAgNjU4MjAsIDYyMzIsIDY4MjMzLCAxMDExMDQsIDEwMTEwMywgNDM2MDgsIDEwMTEwNSwgNzgxMTgsIDY1MzgsIDQzMzUsIAogICAgIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY3NCwgCi0gICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyODY2NywgMCwgNzA3ODksIDY3MzMzLCAKLSAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgNjczMzYsIDk4Mzg3OSwgOTIzMDcsIDAsIDAsIDUxMzMsIAotICAgIDY3MzgyLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIAotICAgIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIAotICAgIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIAotICAgIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCAKLSAgICA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgCi0gICAgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCAKLSAgICA2NDI4NywgMTI4NDA2LCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCA2ODA4OCwgCi0gICAgNzcwMywgODg0MCwgODAzNSwgMTIwNzExLCAwLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjg0MzcsIDc4NTg2LCAxMjgyNjgsIAotICAgIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMTEyMDYsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCAKLSAgICA3MTMwOCwgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIAotICAgIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAwLCAxMjgxNzksIDAsIDk1MDEsIDEyMDgzMiwgCi0gICAgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCA2ODc1OSwgCi0gICAgNzAzMTIsIDE5NTA4NSwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAxMjEzNzMsIDAsIDk4MzM1NSwgMTk5MzUsIAotICAgIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMjc5NTUsIDgzMTMzLCA5MzA1NywgNTI3NSwgMTIwMTk1LCAxMjg2MzIsIDg2MzcsIAotICAgIDQzNjgyLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIAotICAgIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTExLCA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCAKLSAgICA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAotICAgIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDAsIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgCi0gICAgMCwgOTgzODE0LCA5NDA1NiwgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCAKLSAgICA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIAotICAgIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDExOTI0NSwgMTI4NDk0LCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCA5ODMwODIsIAotICAgIDQwMTIsIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIAotICAgIDc2MTEsIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIAotICAgIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgCi0gICAgMTIwMTY2LCAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgCi0gICAgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAKLSAgICAxMTkyNjMsIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCAKLSAgICA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCAKLSAgICA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgMCwgMjMzNywgCisgICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyNjk3OCwgMCwgNzA3ODksIDY3MzMzLCAKKyAgICAxMTkyMzAsIDQ1ODYsIDE5NDkyMiwgMzUwLCAxMDk1MSwgMTAxMDgxLCA1MDksIDY3MzM2LCAxMDA5MDQsIDkyMzA3LCAKKyAgICAxMDA5MDMsIDAsIDUxMzMsIDY3MzgyLCAxMjg4MjcsIDk1MDAsIDEwMDkwNiwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIAorICAgIDk4MzA4MCwgNjczODEsIDY3MzgwLCAyNDk2LCAxMTUxNiwgOTQ0LCA2NzgxNywgMzg5MCwgMTIxNjgsIDE0MzgsIDY3ODEzLCAKKyAgICA2ODMzNSwgNzAwMDMsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIDc0OTQ2LCA3MDg1NCwgNzQwNTgsIDE1NzEsIDQyNjMwLCAKKyAgICA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDEyODI5NSwgNzA3OTcsIDg4NzcsIAorICAgIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIAorICAgIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDgyOTQ4LCAwLCAxOTA2LCAxMjExNjksIDExNTMyLCA3NDA3MywgCisgICAgMTAxMDY4LCAxMDEwNjcsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCA2NDI4NywgMTI4NDA2LCA3MDcxNywgMTE0MjgsIAorICAgIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAxMDEwNzYsIDY4MDg4LCA3NzAzLCA4ODQwLCA4MDM1LCAKKyAgICAxMjA3MTEsIDE5NDYwMiwgOTIyMzAsIDk4MzM1NywgNjEyOSwgMTI3MDY1LCA3ODU4NiwgMTI4MjY4LCAxOTQ5NjUsIDc4NzQsIAorICAgIDg2ODEsIDcyODAwLCAxMTIwNiwgMTMxMzYsIDAsIDEyOTMwNSwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgNzEzMDgsIAorICAgIDEzMjIwLCA2NzM0OCwgNjczNTQsIDU1MTQsIDc0OTYwLCA5MjI4LCA2NzM0OSwgNjczNTYsIDY3MzQ2LCA1MjQwLCA5ODExLCAKKyAgICAxMDAxMiwgMzA5NiwgOTE3ODA5LCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAxOTQ2MDgsIDEyODE3OSwgMTAwOTE4LCAKKyAgICA5NTAxLCAxMjAyNzUsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDEwMDkyMCwgMTQ2NywgMTAxNTgsIAorICAgIDEwMDQwLCA3NDA5NiwgOTUxOSwgNjg3NTksIDcwMzEyLCAxMDEwNTIsIDY4ODIwLCAxMjE5MywgNzA0MDAsIDEyNzI0MCwgCisgICAgMTIxMzczLCA3MjgxNywgOTgzMzU1LCAxOTkzNSwgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEwMDY4MiwgODMxMzMsIDkzMDU3LCAKKyAgICA1Mjc1LCAxMDEwNjMsIDEyODYzMiwgODYzNywgNDM2ODIsIDEyODU3NiwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgCisgICAgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDY4Nzg0LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDEyMTE4NywgOTUzNywgCisgICAgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCA0MTY0NiwgCisgICAgMTE2NjcsIDQyNjg2LCA3NDk5MSwgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAxMjgyNzEsIAorICAgIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgMTI3NTA5LCA5NDA1NiwgCisgICAgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCA0MTk0NSwgNzEzMiwgNDE5NDEsIAorICAgIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIDEwNzYyLCA0Mzc4MCwgCisgICAgMTI5OTksIDExOTI0NSwgNzA2ODksIDgxMDYsIDQxMjgsIDk4Mzc1MSwgNjI3NCwgNDQ5NCwgOTgzMDgyLCA0MDEyLCAKKyAgICAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDc4MjYwLCAxMjA5NzMsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAKKyAgICAxMjEwNzMsIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCAKKyAgICA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCAxMjczNTMsIDEyMDE2NiwgCisgICAgMTI4Njg4LCAzOTg1LCA2NjQyNSwgNjU4NjAsIDQxODUxLCA3MDUxLCA2OTc3NywgNDY4MiwgNzE4NzMsIDEyODA5LCA2NDA2LCAKKyAgICA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAxMjUyMTcsIDM4NTEsIDgxMzIsIDc0MzI1LCAxMTkyNjMsIAorICAgIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCA3NjQzLCAKKyAgICA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCAKKyAgICA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgOTgzODAzLCAyMzM3LCAKICAgICAxNzM1LCA3NDMyNCwgMTExMzQsIDIzNjMsIDEyMTAwOCwgOTI0NDMsIDQzNTYxLCA2NzcwNiwgMTI4MDMyLCA3NDE0NiwgCiAgICAgMTg2MCwgNzQ5NSwgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDc4NzUzLCAxMjAzNDcsIDc3MjcsIAotICAgIDAsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgCi0gICAgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCA2Nzk3NCwgCi0gICAgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIDg4NTAsIAotICAgIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDAsIDk0MDY5LCAKLSAgICAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgOTgzNDQ5LCA3NDYzOSwgMTI3OTAsIAotICAgIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgCi0gICAgNDEzMTAsIDEyMDczMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMTI3NzYzLCAwLCA0MzY3MiwgMTI3ODQwLCAKLSAgICA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDk4MzgwOCwgMjc4LCAxMjEyMDQsIDQxNDA1LCA0Mzg3MSwgMCwgMTAwNzcsIAotICAgIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDY3MzM1LCA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgCi0gICAgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCAKLSAgICA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIAotICAgIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzODE2LCA2ODI5MCwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgCi0gICAgNjY2MTQsIDAsIDAsIDAsIDEwMjk3LCAwLCAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgCi0gICAgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIAotICAgIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEyODAxOCwgCi0gICAgNDY2OCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCA2NzM0MCwgNjczNDcsIDY1MjU2LCA2NzM0NSwgCi0gICAgNjczNDQsIDk4MzM1MiwgOTgzMjY2LCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTI4MjM2LCA2NzM1MiwgCi0gICAgNjczNTEsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA2NzM1MywgNTQ0LCAxMjA0NSwgNjI3OCwgNzQ2MzIsIAotICAgIDU1MTUsIDEyOTE4NiwgMTIwODg0LCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgNzAxMTYsIDc0MjI1LCAKLSAgICA3NDg0MSwgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAKLSAgICAxMTg4ODMsIDY3ODc5LCAxMjcxODgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIAotICAgIDQxNzY5LCA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIAotICAgIDQyNjc3LCA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEyODk0OSwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIAotICAgIDEyODg4MCwgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgCi0gICAgNzgxNzcsIDY2OTA2LCAwLCA0MjcxNSwgNzE0MzIsIDcwMjgyLCA5ODMzNzMsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCi0gICAgNjUzMCwgMTIxNDE0LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIAotICAgIDk4MzcyOSwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCAKLSAgICA3ODE2NSwgNjYwMzYsIDcwMTY2LCAxMjA5MzcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzU5NiwgNDMwNTksIDQyNjY2LCAKLSAgICA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDc0OTkwLCA0MTAxNCwgMTE3OTMsIDE5NDkyMCwgCi0gICAgMTIxMTk1LCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgOTgzODU0LCAxMTk2MzIsIDcwNDI3LCA2NTYwLCA3MDE2LCAKLSAgICA3NDI3NCwgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAKLSAgICAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAorICAgIDk4MzY1OCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCAKKyAgICA3NjkwLCAwLCAxMjUzMywgOTgzNzk2LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMTI4NDQ0LCA3NDgwMCwgNzEwNTEsIAorICAgIDY3OTc0LCAxMDg1OSwgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgOTgzNTgzLCA3NDU5MiwgCisgICAgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA2ODA2MywgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMTI4OTc2LCAKKyAgICA5NDA2OSwgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDEwMDg3OCwgNzQ2MzksIAorICAgIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgCisgICAgMTIzMTcsIDQxMzEwLCAxMDA4NjUsIDQxMzk5LCAxMDA4MjIsIDEyNjY0OSwgNTUyNTgsIDAsIDEyNjkwLCAxMjAwODMsIDAsIAorICAgIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMTE5NjU4LCAyNzgsIDEyMTIwNCwgNDE0MDUsIAorICAgIDQzODcxLCAxMDA4NjcsIDEwMDc3LCA2Mzg1MywgNzA2NjcsIDQyNTg2LCA5MTc4ODYsIDc0MTE0LCA2MDAyLCA2NzMzNSwgCisgICAgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCAKKyAgICA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgCisgICAgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzM1MCwgNjgyOTAsIAorICAgIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAxMjI5MjEsIDEyNzkxMiwgMTAyOTcsIDE5NTA1NywgCisgICAgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAKKyAgICA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIAorICAgIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMDEwOTcsIDQ2NjgsIDkwODMsIDk4MzI0NCwgMCwgCisgICAgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCA2NzM0MCwgNjczNDcsIDY1MjU2LCA2NzM0NSwgNjczNDQsIDk4MzM1MiwgCisgICAgOTgzMjY2LCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTIwMjU4LCA2NzM1MiwgNjczNTEsIDU1MTYsIAorICAgIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA2NzM1MywgNTQ0LCAxMjA0NSwgNjI3OCwgNzQ2MzIsIDU1MTUsIDEyOTE4NiwgCisgICAgMTIwODg0LCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMTIwNTQxLCA1NTE3LCA3MDExNiwgNzQyMjUsIDc0ODQxLCAKKyAgICA2Nzg4NCwgMTI4NDE0LCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAxMjAxOTksIDExODg4MywgCisgICAgNjc4NzksIDEyMTQ0OCwgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCA3NDM5NCwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgCisgICAgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgCisgICAgNjc4ODksIDkzMDQwLCAxMzExLCAxMDA4ODIsIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMDA2NDMsIAorICAgIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCA2NjkwNiwgCisgICAgMTAwNjQ0LCA0MjcxNSwgNzE0MzIsIDcwMjgyLCAxMDA2NDcsIDYzODcxLCAxMjgyOTYsIDQxNzk2LCAxMjY5LCA2NTMwLCAKKyAgICAxMDEwNDksIDY1MDU3LCA3MDQ5MywgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgMTAxMDQ1LCAKKyAgICAxMjg2NzUsIDQxODM0LCA1Mjc5LCAxMjEzNjIsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgOTI5NTksIDAsIDc4MTY1LCAKKyAgICA2NjAzNiwgNzAxNjYsIDEwMDM4NywgNjQyOCwgNDIyNzAsIDk4MzcyNiwgOTgzMTYzLCA0MzA1OSwgNDI2NjYsIDUyNTYsIAorICAgIDEwNjcsIDI1NSwgMTIxMzEsIDEyODc0MiwgOTQ5MywgNzM4OTQsIDQxMDE0LCAxMTc5MywgMTI2NDY3LCA3ODc0MCwgCisgICAgNzA3MjgsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDEyNTIxNiwgMTAwNjU4LCA3MDQyNywgNjU2MCwgNzAxNiwgNzQyNzQsIAorICAgIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgMTI3OTYsIAorICAgIDExOTUzLCAxMjczODAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAogICAgIDQzODQ1LCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDkxNzkzMSwgNDM1NjMsIDkyMjMyLCAxMjg5MTQsIAotICAgIDY2NDEwLCA3MzkyLCA4MjMwLCA5MzY1LCA3MTE5NCwgMTI3MTA5LCA5ODM2MDcsIDY2OTE1LCAxMjg0MDIsIDQwNDEsIDAsIAorICAgIDY2NDEwLCA3MzkyLCA4MjMwLCA5MzY1LCA3MTE5NCwgMTI3MTA5LCAxOTQ4NzgsIDY2OTE1LCAxMjg0MDIsIDQwNDEsIDAsIAogICAgIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCA0MzgzNCwgMTE5ODg0LCA0NDAwNCwgNzE0MiwgMTE5ODgxLCAxMjM1MCwgCiAgICAgNjU1NTQsIDExOTg4MiwgNzEzMDUsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAKICAgICAxMjY4NiwgNDM4MzEsIDQyMzc1LCA2NTc4MCwgMTI0OTQ0LCA2NjM1MiwgMTA0NzAsIDcxMTE5LCAxMTA1OSwgMTA3OTEsIAotICAgIDkxNzk0NCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAorICAgIDcyNzI0LCA0NTAsIDExOTMyOCwgMTI3MjU0LCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCiAgICAgNzgyODQsIDY2MzM4LCA2NjM5NSwgOTE3ODMyLCAxODM5LCAxMTg3OTksIDk4MzIxOSwgMTA5MjcsIDE3MDEsIDk4MzY2NCwgCiAgICAgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAxMTk4NjUsIDg5NSwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKLSAgICA5MjQ5MywgNzg2NzcsIDk4MzEzNywgOTI0MjksIDY5OTgzLCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAKLSAgICAxMjgwMTMsIDY1ODEyLCAxMjA2NzUsIDcwMDAxLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgOTI2MDAsIDEyNzA1MywgNDI3MDAsIAotICAgIDE5NDgwNSwgMTI3OTgwLCAxOTQ4MDcsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAxMjc4NDQsIDAsIDQ0OTMsIDQzMzYsIAotICAgIDEyOTE3MSwgMjMxNCwgNDM2MDIsIDc4ODI2LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIAorICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCAxOTQ4NDksIAorICAgIDEyNTE4OSwgNjU4MTIsIDEwMDYzMywgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCisgICAgMTk0ODA1LCAxMjc0MDMsIDEyODA0MCwgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCisgICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNDE4MDgsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCiAgICAgNDQ4OSwgNjg3NTAsIDEyNTExNiwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAxOTQ3NjEsIDg4NjcsIAogICAgIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzEwNjQsIDE0MTAsIDc4NzYzLCA5ODMyNTIsIDExODg3OCwgOTgzNTY3LCAKLSAgICAxMjg3MTUsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCisgICAgMTAwOTg4LCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTIxMjc0LCA3NDY0MSwgNDg5MiwgNzQwMTYsIAogICAgIDEyMTUwMiwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMTI3MTY3LCA3NTksIDY1NzQ5LCAyMDc5LCA2NTI0OCwgCi0gICAgMTI3ODgsIDY0NDg3LCA2NDU1MiwgOTMwNjMsIDEwMjIzLCA0MjA2MiwgMTIxMjc5LCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIAorICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEwMDY0MCwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKICAgICA0MzU2MCwgMTIyMjYsIDY3OTkxLCA2NTE0OSwgMjM0MCwgNDE5NTksIDcxNDYzLCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIAotICAgIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIDAsIAotICAgIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKLSAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAorICAgIDY1NzQ3LCAxMDkzNywgMjk2MiwgMTIxMTcxLCAyMzIxLCAzNTg3LCA2NTc0NSwgNjcyMzYsIDg5MjEsIDk5NTIsIDEyODk0MSwgCisgICAgMCwgNDI3MTQsIDk5NTEsIDQzNDA5LCAxMDA2NjgsIDI5NDksIDY2MDEyLCAxOTQ1ODIsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAorICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjAwNjEsIDk5NzYsIDEwMDk3NSwgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgCiAgICAgNDI4MDksIDQyODA3LCA3MDc5OCwgNjYyOTAsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCAKLSAgICA0MTg5OCwgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzA3OTYsIDkyMTYzLCA5MzAzMywgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAKLSAgICAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIAorICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgMTAwNjYzLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCA5ODM2NDgsIDI0MTgsIDk4MzA5OCwgCisgICAgMjQxMSwgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDE5NDYwNCwgNDE3NzIsIDQyODEzLCAyMzE3LCAKICAgICAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgNzg2ODYsIDEyNzE3NywgMTAzODQsIDE5NDc5NCwgMTIxMTQ3LCAxMjkxMTEsIDc3NTMsIAotICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCA2ODA2NywgCisgICAgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCA3MDE5OSwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDEyNzAxNSwgNjgwNjcsIAogICAgIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgCiAgICAgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDkxNzc3OSwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCAKLSAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCAKKyAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAxMDEwMjUsIDQ4NjIsIDk3MzUsIAogICAgIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA2ODgyMywgOTA2NSwgMTI5NjEsIDAsIDEyMDQ1NiwgOTIyNTMsIAotICAgIDEyODIwNCwgMjg5LCAxMjg3MTQsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAotICAgIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDM1NjUsIAotICAgIDEyMDE2MywgNjUyOCwgNzgzODcsIDQzMDM1LCA2OTg5OCwgMjE4LCA5ODM4NTAsIDE1MjAsIDAsIDQ3ODYsIDk4MzE2OCwgCi0gICAgNDMyMjUsIDQ2MDIsIDkyNDAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDEyMTE1NywgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCi0gICAgODg4OCwgOTI3MjQsIDc0ODEyLCA2OTcwOSwgOTgzOTY3LCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAxMjE0MzYsIDAsIAotICAgIDk5NzUsIDExMzcwNCwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgNzg4MTAsIDAsIDAsIAotICAgIDY3OTg3LCAwLCAxMjg4MjgsIDAsIDY3OTg5LCAxMTkwMjksIDEwMDY1LCA4MjA3LCA3MTkwMCwgOTI2MTMsIDEyODAxMSwgCi0gICAgMTIxMDI4LCA2NjIsIDEyODcyMCwgOTI0NCwgMTk0ODYzLCA4MzE4MywgMTE5MjYxLCA5ODM0MzAsIDAsIDEyMDkwMSwgCi0gICAgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAKLSAgICAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIAotICAgIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgCi0gICAgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI1MDE0LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgCi0gICAgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgCi0gICAgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA4MzQ0NCwgCi0gICAgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDcxOTA3LCAxMjA0MTAsIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIAotICAgIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAxMjExNzAsIDYzOTQwLCAxMjEzNjMsIAotICAgIDY0NTMzLCA3MTg4MywgMTIwNDQ2LCA2Nzg0MiwgMTE5OTAsIDkyNDA1LCA2MzkzOSwgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCAKLSAgICA3ODY3MSwgNjQ4MjksIDkzMDIwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIDk4MzM2MywgNzQyOTQsIDk4MzkxNCwgCi0gICAgNjkyMzksIDAsIDY3ODcxLCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgCi0gICAgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgCi0gICAgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTk0ODA2LCAwLCA2NzgyOSwgNzg5OSwgMCwgODQxNywgCi0gICAgNDM3OTgsIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIAotICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIDAsIAotICAgIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMTI4MTk4LCAKLSAgICAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMCwgMTIwNDMzLCAwLCAKLSAgICA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgOTgzMDkyLCAxOTQ5NDgsIDkxNzg2NiwgCi0gICAgOTE3Nzg4LCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCA3MDc4OCwgMTMyMCwgCi0gICAgMTIxNDYxLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCAKLSAgICA5ODIwLCAxMTk4OTIsIDEyMTg3LCA5ODM4NDEsIDcxMDQxLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDk4MzIyNywgCi0gICAgMCwgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgCi0gICAgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCA5MjQ4MywgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIAotICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgCi0gICAgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgCi0gICAgOTM5OTEsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgCi0gICAgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIDkxNzYyOSwgMjg2NiwgMTI5MDQ1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgCi0gICAgNjcwMCwgMTIwNDg0LCAwLCAxMjA1ODMsIDE5NDgyNCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIAotICAgIDYzOTk3LCA5NjA0LCA3ODcwMCwgNzQ0MSwgNjM4MjYsIDY3OTcwLCA4MzQzNSwgNjQzOTIsIDkyNjI2LCA5ODM2ODcsIAotICAgIDI4NDQsIDc0NjEwLCA0MTk3NCwgNjczOTcsIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDk4Mzg5OSwgMzEwNCwgCi0gICAgMTk0NzM0LCAwLCAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCAKLSAgICAxOTUwODgsIDkyOTYzLCA3Nzk4NCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIAotICAgIDE4MTQsIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCAKLSAgICA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMCwgNzc5MzIsIDAsIAotICAgIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDc1MDM3LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgCisgICAgMTI4MjA0LCAyODksIDEwMTAyOSwgNDY5NCwgMTE0MjAsIDQ2OTAsIDEyMjg5OSwgMTAwNzg5LCA5MTc5NzgsIDQ2OTMsIAorICAgIDczODkzLCA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCA5ODM4MTMsIDY3OTk0LCA4MjM4LCAzMTEwLCAKKyAgICAxMjAxNjIsIDM1NjUsIDEyMDE2MywgNjUyOCwgNzgzODcsIDQzMDM1LCA2OTg5OCwgMjE4LCA5ODM4NTAsIDE1MjAsIDAsIAorICAgIDQ3ODYsIDk4MzE2OCwgNDMyMjUsIDQ2MDIsIDkyNDAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDEyMTE1NywgMTIwMTU2LCAKKyAgICA0Mzk3OCwgODk4OCwgODg4OCwgNjU3MjcsIDc0ODEyLCA2OTcwOSwgOTgzOTY3LCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAKKyAgICAxMjE0MzYsIDAsIDk5NzUsIDExMzcwNCwgMTE5OTAyLCA0Njg5LCA4OTMyLCAxMjUyMzgsIDY1NTYwLCAxMTkyMDksIAorICAgIDc0NDQxLCA3ODgxMCwgMTIyODgxLCAxMjg3MDcsIDY3OTg3LCAwLCAxMjEwMjEsIDAsIDY3OTg5LCAxMTkwMjksIDEwMDY1LCAKKyAgICA4MjA3LCA3MTkwMCwgOTI2MTMsIDEyODAxMSwgMTAxMDkwLCA2NjIsIDEyNTIyMSwgOTI0NCwgMTk0ODYzLCA4MzE4MywgCisgICAgMTE5MjYxLCA5ODM0MzAsIDkxNzg4OSwgMTIwOTAxLCA5MTc4MzgsIDQxOTI5LCAwLCA3MTA4NCwgNjY2NzQsIDQxOTI2LCAKKyAgICA2OTk5NCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMTk1MDA0LCAKKyAgICA4MzQ3OSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMTI4NDg2LCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDEyODQyNSwgCisgICAgOTE3OTQ1LCA3NDAxNSwgMTE1ODIsIDkyNzY4LCAxMjI4MSwgMTI3MDQzLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAKKyAgICAxMjUwMTQsIDEyODgwOCwgMTE3NjUsIDY1MjU4LCAxMDM2OSwgOTgzNDk4LCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAKKyAgICAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIAorICAgIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgNzI4NzEsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCAKKyAgICA3MTkwNywgMTIwNDEwLCAxMDA2NzEsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgCisgICAgNzQxMzEsIDEyNDIsIDY1NTE0LCAxMjExNzAsIDYzOTQwLCAxMjEzNjMsIDY0NTMzLCA3MTg4MywgMTIwNDQ2LCA2Nzg0MiwgCisgICAgMTE5OTAsIDkyNDA1LCA2MzkzOSwgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDkzMDIwLCA2OTQzLCAKKyAgICA5MTc5MzQsIDU4NTksIDk4Mzk4MCwgMjg1OCwgOTgzMzYzLCA2Njc4MSwgOTgzOTE0LCA2OTIzOSwgOTgzMzgwLCA2Nzg3MSwgCisgICAgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgCisgICAgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIAorICAgIDY5OTA4LCA3MTA1MywgNjU4NTgsIDEwMDg2MywgMTI5MDMzLCA2NzgyOSwgNzg5OSwgOTgzNTc1LCA4NDE3LCA0Mzc5OCwgCisgICAgNzA3MiwgNzQxOTUsIDAsIDQwMzMsIDEyMTI4OSwgNDM5OTIsIDEyMTA4MSwgOTgzMzE1LCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAxMDA5NzksIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIAorICAgIDk4Mzc1NiwgMTE4Nzk4LCAxMjkxLCA3NDgyOCwgMCwgMTIwNDM1LCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAKKyAgICAxMjEyNTMsIDEyMTIxNiwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAxMjg4NzQsIDkzMDY2LCAxMDA2ODAsIAorICAgIDEyMDQzMywgMTk0NTcwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAxMjE0MzEsIDY0NDI2LCAKKyAgICA5ODMwOTIsIDE5NDk0OCwgMjIzMCwgOTE3Nzg4LCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTAwODY5LCAxMjA4NTgsIAorICAgIDkyNzE1LCA3MDc4OCwgMTMyMCwgMTIxNDYxLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIAorICAgIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCA5ODIwLCAxMTk4OTIsIDEyMTg3LCA5ODM4NDEsIDcxMDQxLCA1OTg0LCAwLCA0MzMwOCwgCisgICAgNDM5MywgNjc2NTAsIDExMzc4NywgMTI3MDEzLCA3NDgyMiwgMCwgNzQ4MjYsIDY0NzMzLCA5ODMyMTQsIDEyNzg5OCwgCisgICAgMzQ5MSwgNjcxNDYsIDEyMTE0MiwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgNzI0MjgsIDc0OTIsIDEyODg2MCwgNzQ2MDUsIAorICAgIDcyNzY4LCA3NTE0LCA5ODMzNjksIDEyNjU4NSwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDEyMTE3OCwgCisgICAgNjM5MjUsIDEyMDE2MSwgNzYxMCwgMjE5LCAxMjgxNTgsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCAKKyAgICA5Njg4LCA3MTQ3LCA5NTM1LCAxOTQ5ODksIDkzOTkxLCA5ODM5NDUsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDkxNzkxOCwgCisgICAgNzE0OSwgNzQ1MywgMTE5NTYwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCAKKyAgICAxOTQ2NTEsIDI4NjYsIDExODgwNSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMTI5MzA4LCAxMjA1ODMsIAorICAgIDE5NDgyNCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIDYzOTk3LCA5NjA0LCA3ODcwMCwgNzQ0MSwgCisgICAgNjM4MjYsIDY3OTcwLCA4MzQzNSwgNjQzOTIsIDkyNjI2LCA5ODM2ODcsIDI4NDQsIDc0NjEwLCA0MTk3NCwgNjczOTcsIAorICAgIDEyMTM5LCA2Nzk3MSwgMTI3MTY2LCA5ODM4MzQsIDMzNTgsIDY1Mjk1LCA5ODMyOTIsIDMxMDQsIDEwMDc3OSwgMCwgCisgICAgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgOTI0ODMsIDkyOTYzLCAKKyAgICA3Nzk4NCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDEwMTAwOCwgOTE3OTcxLCAxODE0LCAKKyAgICA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgNzYwNiwgCisgICAgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDE5NDgyNSwgNzc5MzIsIDAsIAorICAgIDkxMTIsIDcyNzIxLCA4NjMsIDk0OTAsIDc1MDM3LCAxMjgwMzcsIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgCiAgICAgNjgwNTQsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDEyMTEzNiwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCA5MjQxNSwgCiAgICAgNjY1ODcsIDEyNDk4NywgMCwgOTI0MDEsIDQzOTI3LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDEyMDk4MCwgMTA2MjksIAotICAgIDEyNzg2OSwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjcyNjcsIDkyMzkxLCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCAKLSAgICA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCAxMjA5NzUsIDk4MzM1MSwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCAKLSAgICA1ODExLCAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCA5MjkzOSwgMCwgMCwgMTI4MDQxLCAKLSAgICA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAxMTk5MDYsIAotICAgIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgMCwgOTI5NDMsIAotICAgIDE1MDIsIDkxNzU2OCwgMTI3OTg4LCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCA4NDMwLCAwLCA3MTIyMywgCi0gICAgMTIwNzU4LCAwLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIAotICAgIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIDExNzIxLCA3MDgwNCwgCi0gICAgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCAKLSAgICA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMTE5NTc0LCAyNTYyLCAKLSAgICA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgMTE5MjQxLCA2NDY5OSwgCi0gICAgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCA3MDg3MywgMCwgCi0gICAgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDAsIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAKLSAgICAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgCi0gICAgNzEyOTksIDY2ODE3LCA0Mjg4MSwgMCwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgCi0gICAgMTI4ODA5LCAwLCAxMTkxNjAsIDcwODIxLCA5MDc0LCA0MzQ4LCAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIAotICAgIDE3ODYsIDY2MSwgMTI4MTE2LCAwLCA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIAotICAgIDEyODI2OSwgNjU0NjgsIDE5NDk2NiwgNjU3MzEsIDAsIDcyNDA1LCAzNjIxLCA5MjkzMiwgNjY2NjYsIDY0MjExLCAwLCAKLSAgICA2NTYyLCAxMjkyOCwgMTk0OTA0LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAKLSAgICAxMjA3NTEsIDAsIDEyMTExMywgOTgzOTc2LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAKLSAgICAxMjA2OTQsIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMTM4MDksIDEyNjUxMCwgMCwgNDIwMDgsIDk3MDgsIAotICAgIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIAotICAgIDk2ODksIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCAwLCAxMjg2MjIsIDY1NTg4LCA5MjM1MCwgOTgzMjgxLCAwLCAKLSAgICA4NDAxLCA5ODM5MjQsIDQyMDE0LCAxMjczMDcsIDcwMzAsIDEyMDk2OSwgMTA0NzksIDY0OTU5LCAyODUyLCAwLCAxMjEyMjUsIAotICAgIDAsIDcwODE5LCAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgCi0gICAgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAxMjEyODEsIDAsIDAsIDc4NzU3LCAwLCAxMTM4MTUsIDEyMTMwMiwgMCwgOTk5NCwgCi0gICAgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIAotICAgIDAsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIAotICAgIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg1LCA5ODM3NDIsIDcwMzEzLCAxMjkxNDAsIAotICAgIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAKLSAgICAxMjY1NzUsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIAotICAgIDcxMzAwLCA3MDMyLCA1OTU0LCA2NDkzMSwgNDMxNCwgMTI4NjAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIAotICAgIDc3OTkzLCA3MDgxOCwgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgCi0gICAgMTEwMDgsIDY5MzgsIDcwMDI2LCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAKLSAgICAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgCi0gICAgMTI3ODE4LCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIAotICAgIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAxMjEzOTksIDEwNjc3LCA2MDQsIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA5MjYwMywgCi0gICAgMzQyNSwgMTI3NDg4LCAxMjY1MjMsIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgMTEzNzE4LCA0MzIwMiwgMCwgMCwgNjUxOTksIAotICAgIDE3MzgsIDEyODMxMSwgNjc3MDcsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgMCwgNjYzNzQsIDkxNzk1NiwgMTE5NTUyLCAKLSAgICAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzA4MSwgNzM3NTIsIDcwMzA1LCA2NDg3MiwgOTIzNDAsIDEzMzEsIDAsIDAsIAotICAgIDEyMTM3NywgMTI3MDgsIDkxNzk1NCwgNTA5MCwgNTA4OSwgMTI3OTc3LCA5MTc5NTMsIDExOTEwOSwgMCwgNzA4MjYsIDMxOSwgCi0gICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCA5ODM1OTcsIDkyMzc5LCAwLCAKLSAgICA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDExOTYxNywgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMTE5MDQyLCAKLSAgICAwLCA1MDExLCAwLCA5ODMzMjksIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIAotICAgIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAwLCAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIAotICAgIDcxMzQzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCA2NzEzOCwgNjU1NzQsIDE5NDk0NywgOTIyNCwgNjcxNDAsIDM2NzEsIAotICAgIDg5NzYsIDY3MTM5LCAwLCA0MTI3NSwgNjM3MiwgODI5OTcsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCAKLSAgICA0MTI3MywgMTIxNDQ4LCA3NDUzMSwgNjcyOCwgMCwgOTcxNSwgMTI5Mjk3LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIAotICAgIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgNjgyNDMsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIAotICAgIDExOTU4LCAxMTE2NSwgOTE3ODIyLCAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgCi0gICAgNjcxMzIsIDY3MTMxLCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgMTMxMDksIDAsIDk0NjcsIAotICAgIDU1NTgsIDg4NzgsIDQzODQ0LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCAKLSAgICA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAKLSAgICAxMjUwOTIsIDM4MDUsIDAsIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAKLSAgICAxMjQ5ODksIDQzNDY5LCAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAKLSAgICAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAKLSAgICAwLCAwLCAwLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAorICAgIDEwMTAwNCwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjcyNjcsIDkyMzkxLCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCAKKyAgICA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCA3Mjg1OCwgMTk0NzkwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIAorICAgIDEyMzQ1LCA3MDQ5LCAxMTg4MTEsIDUxOTUsIDE5NTA4MSwgMTk0OTU4LCA2NjYzOSwgOTI5MzksIDgzMTkzLCAxMjEwMTAsIAorICAgIDEyODA0MSwgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgCisgICAgMTE5OTA2LCA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIAorICAgIDkxNzg2NiwgOTI5NDMsIDE1MDIsIDkxNzU2OCwgMTI3OTg4LCA5MTA3LCAxMjI5MDQsIDU3MDIsIDM2NTUsIDY3NjYxLCAKKyAgICA4NDMwLCAwLCA3MTIyMywgMTIwNzU4LCAxMTg5NjMsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgCisgICAgNzQzODgsIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCAKKyAgICA5MjQ5NiwgMTE3MjEsIDcwODA0LCA0Nzk4LCAxMjE0NjgsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgCisgICAgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIDY4ODI0LCA2ODYyNiwgODk0LCAzMDAsIDEyMDg3NSwgMTIzMDYsIDY2MjM1LCA4MDA0LCAKKyAgICAxMjcxODksIDExOTU3NCwgMjU2MiwgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIAorICAgIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgCisgICAgNzA4NzMsIDAsIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAxOTQ4MzksIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIAorICAgIDExMzI3LCAwLCA1MDkxLCAxNzYsIDExMzgxMCwgOTE1MywgNDEwNCwgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgCisgICAgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgNjY4MTcsIDQyODgxLCA5ODM3ODUsIDg5ODAsIDExODk4OCwgNjc4NjEsIAorICAgIDg4NDQsIDcyMDksIDk4Mzc0MSwgMCwgNDI3OCwgMTI4ODA5LCAwLCAxMTkxNjAsIDcwODIxLCA5MDc0LCA0MzQ4LCAKKyAgICA5MTc4NzIsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAxMjgxMTYsIDkxNzg1NywgCisgICAgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAxMjUyMzQsIAorICAgIDY1NzMxLCA5ODM4OTksIDcyNDA1LCAzNjIxLCA5MjkzMiwgNjY2NjYsIDY0MjExLCAxMjkzNTEsIDY1NjIsIDEyOTI4LCAKKyAgICAxMjEzMDYsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMTI3OTUzLCA3MDM0MywgMTcxNCwgNzQ0MDYsIDEyMDc1MSwgMCwgCisgICAgMTIxMTEzLCAxMjczODksIDY2MjI1LCA3MDExMCwgNzA4NjcsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCisgICAgMTIxMDI1LCAxMDI5MSwgMTAzMjMsIDI4MjYsIDEwMDUyNiwgMTI2NTEwLCAxMjc1NTcsIDQyMDA4LCA5NzA4LCA0MjcxMCwgCisgICAgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCA5Njg5LCAKKyAgICA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgOTgzMzAxLCAxMjg2MjIsIDY1NTg4LCA5MjM1MCwgOTgzMjgxLCAwLCAKKyAgICA4NDAxLCA5ODM5MjQsIDQyMDE0LCAxMjUyMzAsIDcwMzAsIDEyMDk2OSwgMTA0NzksIDY0OTU5LCAyODUyLCA3MjcyOCwgCisgICAgMTIxMjI1LCAwLCA3MDgxOSwgMTE5ODg3LCAxMjUyMjcsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgCisgICAgMTAxNDcsIDEyOTM1LCAxMjc0MDEsIDExOTE4NSwgNzI4MTIsIDcxMjY1LCAxMjg3NzksIDc4NzU3LCAwLCAxMTM4MTUsIAorICAgIDEyMTMwMiwgMTIyODkyLCA5OTk0LCAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIAorICAgIDcwODQsIDI3NjUsIDc4NDY2LCA0MzM4MiwgOTgzODE1LCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgCisgICAgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCAKKyAgICA3ODM4NSwgMTAwNjkzLCA3MDMxMywgMTI3NDc2LCA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgCisgICAgMTE5ODk1LCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIDQyMDE5LCAxOTUwNTYsIAorICAgIDQxMjkwLCA5ODM3MTYsIDc1MCwgMTIxMDg4LCA3MTMwNCwgMTAxNjMsIDYzOTEzLCA3MTMwMCwgNzAzMiwgNTk1NCwgCisgICAgNjQ5MzEsIDQzMTQsIDEwMDYzNiwgMTk4LCA2ODQ1MywgNzMwLCAxMDA2MzUsIDYzOTA3LCA3Nzk5MywgNzA4MTgsIDEzMTY1LCAKKyAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCisgICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgMzg5MiwgNjg2MzIsIDY5NjQyLCAKKyAgICA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIDEyNzgxOCwgNDk3LCAxMjEwMCwgCisgICAgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDEyODI0MywgMTAyOTMsIDU5NTIsIDEyODEsIDQzNzQ3LCAKKyAgICAwLCAxMjEzOTksIDEwNjc3LCA2MDQsIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA3Mjg1NiwgMzQyNSwgMTI3NDg4LCA3MjcyNSwgCisgICAgMjgzNiwgOTgzNzM4LCAwLCA5NzA3LCA3MDc0MiwgNDMyMDIsIDAsIDAsIDY1MTk5LCAxNzM4LCAxMTk4OTEsIDY3NzA3LCAKKyAgICAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDk4Mzc5NSwgNjYzNzQsIDEwMDcwNCwgMTE5NTUyLCAyODIyLCA2ODEyMiwgCisgICAgNDQzNiwgOTI1MTksIDk4MzA4MSwgNzM3NTIsIDcwMzA1LCA2NDg3MiwgOTIzNDAsIDEzMzEsIDkxNzk1NSwgOTgzNzA2LCAKKyAgICAxMjEzNzcsIDEyNzA4LCAxMjkzMzMsIDUwOTAsIDUwODksIDEyNzk3NywgMzIwMCwgMTAwOTg0LCAwLCA3MDgyNiwgMzE5LCAKKyAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAxOTQ4ODEsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgMTI3NzYzLCAKKyAgICA5MjM3OSwgMCwgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMDA3MTAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIAorICAgIDExOTA0MiwgMTE5OTA5LCA1MDExLCAxOTQ4ODIsIDE5NDc0MiwgMTI2NTg3LCAwLCAxMjA2OTgsIDExODg3NCwgNjY3NywgCisgICAgNzYwMSwgMTk0NzI1LCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMTI1MTExLCAKKyAgICAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIDcxMzQzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCA2NzEzOCwgNjU1NzQsIAorICAgIDE5NDk0NywgOTIyNCwgNjcxNDAsIDM2NzEsIDg5NzYsIDY3MTM5LCAwLCA0MTI3NSwgNjM3MiwgODI5OTcsIDU1MjYxLCAKKyAgICA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCA0MTI3MywgMTIwMzIyLCA3NDUzMSwgNjcyOCwgOTgzNjA5LCA5NzE1LCAKKyAgICAxMjA5NzUsIDgyNTgsIDExNzUzLCA3NDgyMCwgOTgzOTY1LCA5NjAyLCAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIAorICAgIDY4MjQzLCAwLCA3NDU4LCA3Mzk3MiwgOTgzOTYwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAxMTk1OCwgMTExNjUsIDE5NDY5OCwgCisgICAgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIDY3MTMyLCAxMjY5NiwgNDI4NTgsIAorICAgIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDczMDAsIDAsIDk0NjcsIDU1NTgsIDg4NzgsIDQzODQ0LCAKKyAgICAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAxMDA3NjIsIDkwODYsIDY0NTY2LCA5ODMxODUsIDY0NTg0LCA3NDM3LCAKKyAgICA3NDU0LCAxMjU5NCwgNzM3NDksIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDEyNTA5MiwgMzgwNSwgMCwgCisgICAgNjcxMjgsIDQ0MDAxLCA0MTAwOCwgMTI4MDUyLCA2MzA3LCAxOTk0OSwgNjcxMjksIDc1NDQsIDEyNDk4OSwgNDM0NjksIAorICAgIDEyMTA5NSwgOTgzNzM1LCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAKKyAgICAxMjA3NzIsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgCisgICAgNjY4MDEsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgCiAgICAgOTk2MSwgODg0NSwgNjY2OTgsIDY4MzI1LCAxMDc5MiwgODg4OSwgMTIxNDAyLCAyMDk4LCAwLCA2NDc1MSwgNzAzMDksIAotICAgIDY2NjIyLCAxMjY2MjYsIDAsIDc0MzY0LCA2ODgxNiwgMTI5MTUyLCA5ODM4MDUsIDQyOTA5LCA3NTUyLCA3MDA5MiwgCi0gICAgMTk0NTY3LCA2NTM4NCwgNzIyMywgNDU1OSwgOTMwMTUsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNDM0OTAsIDEyMTAsIAotICAgIDE5NTA3NywgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDk4MzIzMywgMTI1MDQ1LCAzOCwgODUzMywgNjY2NjksIAotICAgIDExOTEyNCwgOTgzMjk1LCA5ODM3OTIsIDAsIDQzNTcsIDAsIDcwMjg5LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgCi0gICAgNDI4NjAsIDExOTgzOCwgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCA4MzI3OSwgMTEzODA4LCAwLCAxMTAxNCwgMTIwMTI2LCAKLSAgICA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA2NzM2MywgNDI3NzIsIDQyNjUwLCAxMTY1MCwgCi0gICAgNTAxMywgOTI2NjMsIDY4ODEwLCA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgMTExOTMsIDk4Mzc3MCwgMCwgCi0gICAgNjQ3MTQsIDcxNDc5LCA3MDgwMiwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIDY2MjI4LCAKLSAgICAxMDU2MywgOTI5NTQsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDkyOTU1LCAxODM3LCAxMjUwODYsIDYzOTcyLCA2OTU3LCAwLCAKLSAgICAxMTM4MjAsIDQ5NTIsIDY1NzE4LCA2NDQwNSwgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDEyODAyNiwgCi0gICAgNzUwMTYsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAxMjcyMTMsIDgxMDcsIDY3MTU0LCAxMTI3LCA0NTUsIDAsIAotICAgIDYzOTY4LCAxMjc4MzUsIDM0ODMsIDExOTU5MywgMTk4OSwgOTgzMTc2LCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIAotICAgIDY4MzAwLCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAxMjE0MzQsIDc0MDY0LCAKKyAgICA2NjYyMiwgMTI2NjI2LCAwLCA3MDcyNCwgNjg4MTYsIDEyOTE1MiwgMTI0OTUzLCA0MjkwOSwgNzU1MiwgNzAwOTIsIAorICAgIDEyNzQ5MCwgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKKyAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCA5MTc5MDIsIDEyODU1OCwgMTI1MDQ1LCAzOCwgODUzMywgCisgICAgNjY2NjksIDExOTEyNCwgOTgzMjk1LCA5ODM3OTIsIDAsIDQzNTcsIDAsIDcwMjg5LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCAKKyAgICA3ODg4NCwgNDI4NjAsIDExOTMyMywgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCA4MzI3OSwgMTEzODA4LCAwLCAxMTAxNCwgCisgICAgMTIwMTI2LCA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA2NzM2MywgNDI3NzIsIDQyNjUwLCAKKyAgICAxMTY1MCwgNTAxMywgOTI2NjMsIDY4ODEwLCA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgMTExOTMsIDE5NDY3NywgCisgICAgNzI3NTQsIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCAKKyAgICA2NjIyOCwgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgCisgICAgNjk1NywgMCwgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAKKyAgICA3Mjg3NywgNzUwMTYsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAxMjcyMTMsIDgxMDcsIDY3MTU0LCAxMTI3LCA0NTUsIAorICAgIDAsIDYzOTY4LCA3Mjg2MCwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCisgICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3MjgxMCwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAogICAgIDEyODYwMSwgMTA1MjEsIDcwNzg2LCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCiAgICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyNTA1MywgMTM0NywgOTYzMSwgCi0gICAgNzQ0NDQsIDk4Mzc1MywgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgOTgzNDc5LCAKLSAgICA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAxMjEwNTMsIAotICAgIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCA4MzQ2NSwgMzc2LCA2OTg3LCA5MjIxLCAKLSAgICAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAxMjgwNjcsIDEwMTU0LCA5ODMwNDMsIAotICAgIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCA4Mjk1MCwgNjk3OTEsIAotICAgIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgCi0gICAgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAKLSAgICAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDc1MDczLCA0MTI3NywgCi0gICAgNjQ2NTgsIDk4MzQ1NiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCA3MTE5MywgNjUzNzEsIDcwNzgsIAotICAgIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCA5ODMzNzAsIDQxNDM0LCA2MDYyLCAwLCAKLSAgICAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgNzEyMDAsIDk4MzU5MiwgMTIxMjIzLCAKLSAgICAxMjY1NjcsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCA5Mjg5MCwgNDE2MjIsIDAsIDAsIAotICAgIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCA5MDAsIDAsIDYzOTU3LCAxMTk2MzgsIDAsIAotICAgIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAKLSAgICAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIAotICAgIDEyMTAwNSwgMTk0OTM5LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgCi0gICAgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIAotICAgIDM2MDIsIDgzMjgsIDExNzY0LCA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCAKLSAgICA0MzUyNSwgMTI3OTk2LCAyODU0LCA4MzIxNCwgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCAKLSAgICA2NzExNywgNzgyNDksIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIAotICAgIDY3MTE2LCA4NjQ4LCAxMjgzNzcsIDY3NDEsIDQzMDQ3LCAxMTk5MDAsIDEzMTgwLCA3ODA3NywgNDE4LCAxMjA2NTMsIAotICAgIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIAotICAgIDgzMTg2LCAxMDkxMSwgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIAotICAgIDQ1NTQsIDY2ODkyLCA5MDIzLCAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgCi0gICAgNjcxMTMsIDY3MTEyLCA2Mzk2NywgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTIxMjc1LCAKLSAgICA4MTU5LCA5MjYxOSwgMTE2ODYsIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCAKLSAgICA2NDUyMywgMTAzNDMsIDEwNDA3LCA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgMTIwNTAsIAotICAgIDY4MjAxLCAyODYwLCAwLCAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCAKLSAgICA0Mzg3NSwgNjcxMDMsIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDExODkxNywgNjc0MDQsIAotICAgIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTI3OTc1LCAxNTgyLCA5ODM3MTUsIDU1MDgsIDAsIDEyMDkwNCwgCi0gICAgNzQ1ODgsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCAKLSAgICA3ODYwLCAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIAotICAgIDg0MDYsIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIAotICAgIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAKLSAgICAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAKLSAgICA2ODMzOCwgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgCi0gICAgOTE3ODY5LCAwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCi0gICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKKyAgICA3NDQ0NCwgMTk0OTQ2LCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMTAwOTc2LCAyNTgsIDE2NTQsIDAsIDAsIAorICAgIDk4MzQ3OSwgNDMzMTQsIDEyNzk4NywgNzA2OTksIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCAKKyAgICA4NTQ5LCAxMDg2MSwgMTIxMDUzLCA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgCisgICAgNjc1ODgsIDM3NiwgNjk4NywgOTIyMSwgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgCisgICAgMTI4MDY3LCAxMDE1NCwgOTE3OTIxLCA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIAorICAgIDcyODMxLCA4Mjk1MCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgCisgICAgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCAKKyAgICA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgCisgICAgMTIxNTQsIDc1MDczLCA0MTI3NywgNjQ2NTgsIDEyODExMiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCAKKyAgICA3MTE5MywgNjUzNzEsIDcwNzgsIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCAKKyAgICAxOTQ5MzUsIDQxNDM0LCA2MDYyLCAwLCAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgCisgICAgNzEyMDAsIDEyODY0NSwgMTIxMjIzLCAxMjEyNDUsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCAKKyAgICA5Mjg5MCwgNDE2MjIsIDcwNzA0LCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgNTk5MCwgCisgICAgOTAwLCAxMDA3NTcsIDYzOTU3LCAxMTk2MzgsIDk4Mzk3NywgMzYxMiwgNzA2ODcsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgCisgICAgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgCisgICAgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDY1Njg2LCAxMjg1NjEsIDExOTEyNywgCisgICAgOTAwMiwgOTgzNDIyLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCAKKyAgICA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgNDMwNzcsIDYzOTUyLCA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgCisgICAgODMxOTksIDgzMjAwLCA2NTA2NSwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIDY4NCwgNDM1MjUsIDEwMDUzMSwgCisgICAgMjg1NCwgNjY3NDcsIDQ1OTIsIDY1NzU1LCA4MzIxNywgNjcxMjAsIDExOTYzLCA0MzYyMCwgNjcxMTcsIDY2NzM2LCAKKyAgICA2NzEyMywgNjcxMjIsIDY3MTIxLCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDY5Njc3LCA2NzExNiwgODY0OCwgCisgICAgMTAwOTk1LCA2NzQxLCA0MzA0NywgMTAwNDYwLCAxMzE4MCwgNzgwNzcsIDQxOCwgNjY3NTQsIDY0NDk1LCAxMDI5NSwgCisgICAgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIDgzMTg2LCAxMDkxMSwgCisgICAgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCAxMDEwMzIsIDQ1NTQsIDY2ODkyLCA5MDIzLCAKKyAgICAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgNjcxMTMsIDY3MTEyLCA2Mzk2NywgCisgICAgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTAwODQwLCA4MTU5LCA5MjYxOSwgMTE2ODYsIAorICAgIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCA2NDUyMywgMTAzNDMsIDEwNDA3LCAKKyAgICA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMDA4MzcsIDQyODkwLCA3Mjg0NCwgMjI2MSwgNjgyMDEsIDI4NjAsIDAsIAorICAgIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIDQzODc1LCA2NzEwMywgCisgICAgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTAwNTIyLCA2NzQwNCwgOTYyLCA5MTc4MTQsIAorICAgIDEyODU1LCA0MTE5NiwgNDI1NjQsIDEwMTAwOSwgMTU4MiwgMTAwODQyLCA1NTA4LCAxMDA0OTIsIDEyMDkwNCwgNzQ1ODgsIAorICAgIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAKKyAgICAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIAorICAgIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIDQxNjExLCAKKyAgICA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAxMDEwMjgsIAorICAgIDEwMDQ2OCwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCA2ODMzOCwgCisgICAgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgMTAwNTA0LCAKKyAgICAxMDA4NTAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKKyAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAxMjg3NTYsIDY5NDYsIDE5NDc1NSwgOTI5NjcsIDEyODQ1NSwgCiAgICAgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIAotICAgIDEyNzg4MCwgNjgwMzUsIDQzOTk4LCAxMTM2MCwgODMyMzMsIDc0MTgyLCA4MzIzNSwgODMyMjgsIDQyMTQ5LCA4MzIzMCwgCisgICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDcwNjkxLCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKICAgICA2ODUwOCwgOTE3OTkzLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCA3NDg4NSwgNTUyNDcsIDQxMTAsIDY2MDA1LCAKICAgICA2OTU5LCAxMDkyOSwgNDI5MDcsIDEyODA4MCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIAotICAgIDEyMTA2OCwgMTk0ODU0LCAxMjUxMzksIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgOTgzMTY5LCAKLSAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKLSAgICAxMjgzMzksIDQ5NjMsIDAsIDY4NzY1LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgOTgzODQ5LCA0MTk0OCwgMTI1MDAzLCAwLCAKLSAgICA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyMDYxNiwgCi0gICAgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgCi0gICAgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCA0MTUwNywgCi0gICAgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAwLCAxMDUwNSwgCi0gICAgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgNzExMDksIDEyODYwNCwgCi0gICAgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgCi0gICAgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIDY1NTUzLCA3OTMzLCA1NTYyLCAKLSAgICA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAxMjcyNDIsIDAsIDM5NzksIAotICAgIDcxMjQ4LCAxOTQ4OTksIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCA3NDYzMywgNDEyNjYsIDY4ODM2LCAKLSAgICA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgCi0gICAgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIAotICAgIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCAKLSAgICA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgCi0gICAgMTU5NSwgNDE2MTUsIDEyMTAwMSwgMCwgNzQyNjAsIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAKLSAgICAxMTM4MTAsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgCi0gICAgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCAKLSAgICA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAKLSAgICAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIDExOTAyMiwgMCwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIAotICAgIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjcwMTcsIDU3OTIsIDEyNjY0MywgMTI4MzE5LCAKLSAgICA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDk4MzcwMiwgNTY4MywgOTE3ODk2LCAxMjA4OTUsIDc4MTE5LCAxNTQ5LCAwLCAKLSAgICA5ODMyMjMsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIAotICAgIDY5NzY4LCAxNDQ5LCAxMDI0MSwgNzgyOTAsIDExOTU4NywgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgCi0gICAgODU4NCwgNjgwMzAsIDU1NjcsIDI3MTcsIDgzMTc5LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgCi0gICAgOTE3NjExLCAxMjA4ODEsIDAsIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCAKLSAgICA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAKLSAgICA2ODA1MiwgNjY1OTgsIDExMDU5MiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCAKLSAgICA2NTcwMSwgMTkzNCwgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIAotICAgIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgCi0gICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMjc4OTksIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAorICAgIDEyMTA2OCwgMTI4OTc5LCAxMjEzOTgsIDkxNzk3OSwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA3MDczMywgCisgICAgOTIyOTcsIDQxNjM2LCAxOTQ4ODksIDczNzM4LCA5MjcyNCwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKKyAgICAxMjgzMzksIDQ5NjMsIDEyNzk5NiwgNjg3NjUsIDEyODE5OCwgODk2NCwgNjU2NzYsIDc3NzUsIDE5NDc2MywgNDE5NDgsIAorICAgIDEyNTAwMywgMCwgODMyMzYsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAKKyAgICAxMjA2MTYsIDQxNzY2LCA3NDk0OCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgCisgICAgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgNzg4OCwgODM0MDUsIDM5ODAsIDcwMzczLCA0MjY1NiwgCisgICAgNDE1MDcsIDg4MDYsIDcwMjMsIDcyNzM0LCA3NDI3OSwgOTQ0NywgNzA3MDIsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIAorICAgIDk4MzYwOCwgMTA1MDUsIDEyNjYzOCwgMTI4NTEsIDgzNDg5LCAzNDgsIDU0NzQsIDEyMTM4MiwgMzEwMywgMCwgNDE3NTMsIAorICAgIDcxMTA5LCAxMjg2MDQsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCA0MzM0NywgCisgICAgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMDA5NjcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIDI2OTEsIDY4NzUyLCAKKyAgICA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEwMDgyMywgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgCisgICAgMTI3MjQyLCAwLCAzOTc5LCA3MTI0OCwgMTI5NDE1LCA2ODMzMSwgOTE3OTEyLCA2ODg0NywgOTgzNjk3LCA4MzM4MiwgCisgICAgNzQ2MzMsIDQxMjY2LCA2ODgzNiwgNjY1NjYsIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgMjI3NSwgMjY2NiwgCisgICAgMTIxMjMyLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAxMDcxNiwgODM0MDAsIDQyODIyLCAwLCA2NDM0LCA3NDg1NywgCisgICAgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIAorICAgIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAxMjY1MzcsIDQ0OTcsIDM3NTQsIDgzMDcyLCA4MzEwNSwgCisgICAgOTAzOSwgNzA2NzgsIDQxNzc2LCAxMjczOTEsIDg3MTYsIDE1OTUsIDQxNjE1LCA3NDQzMSwgMTI4OTAyLCA3NDI2MCwgCisgICAgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIDExMzcyNCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgCisgICAgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgCisgICAgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIAorICAgIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgCisgICAgMTE5MDIyLCA5ODM4MjksIDEyMTUxNSwgMTIxNTE0LCA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIAorICAgIDY1NzExLCA0MTkxMiwgMTIxNiwgMTI1MDg4LCAxMDA0MTEsIDU3OTIsIDEyMTM2NCwgMTAwMzkzLCA3ODUwMSwgMCwgMjkzMywgCisgICAgMTIyNDQsIDk4MzcwMiwgNTY4MywgMTAwMzkyLCAxMDAzOTcsIDc4MTE5LCAxNTQ5LCA3MDY3MCwgMTAwNDE1LCAxMjAzOTgsIAorICAgIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDY3MjM3LCA2OTc2OCwgMTQ0OSwgMTAyNDEsIAorICAgIDc4MjkwLCA3MDcwOCwgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgODU4NCwgNjgwMzAsIDU1NjcsIAorICAgIDI3MTcsIDY4ODE0LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTE3NjExLCAxMjA4ODEsIDAsIAorICAgIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIAorICAgIDU5NDIsIDg0NjgsIDEwMDcyOSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCA2ODA1MiwgNjY1OTgsIAorICAgIDEwMDY4NiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgCisgICAgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCAKKyAgICA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAxMjg1NTIsIDExOTYxLCAKKyAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDExOTg5OCwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCiAgICAgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMTI1MDYxLCA3MjU2LCAwLCA2ODA5NCwgMTY2NywgNDIxNjEsIAotICAgIDEyMDk4MSwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAorICAgIDEwMDk1OCwgNDI0MjgsIDAsIDY5MzQsIDEwMDcwMiwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgCiAgICAgNjg0MjAsIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIDEwODc1LCAKLSAgICAxMjUwNTIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA2ODI5OCwgMCwgMzg3NCwgMCwgCi0gICAgMCwgOTgzNjE5LCAxMjAzMzEsIDEyODc3MywgMTEzNjY1LCA2NTYwMywgODMyNzIsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIAotICAgIDkyMDcsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCA4MzA1OCwgMTQ1NSwgNzg3NDksIAotICAgIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgNzUwMjEsIDQzNTIwLCAKLSAgICA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzAxNjgsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgCi0gICAgMTkwLCAxMTk4OTksIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgMTIxMzAzLCA5MjI2MSwgNjM3MCwgMTI1MTI4LCAKLSAgICA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCA3ODg2OCwgNzQzODIsIAotICAgIDExODQxLCA3OTE4LCA3Mzk4OCwgMCwgMTEzNjY4LCA5MTc4ODQsIDE3MjgsIDk4MzcwNSwgNDM3NjQsIDE3OCwgMTI5NzIsIAotICAgIDc0NjIwLCAxMTM2NzEsIDcxMTAzLCAxMTE2OCwgOTgzMzgzLCAxMTM2NzIsIDc4MzI3LCA3NTA0MiwgNjU2OTAsIDgzODIsIAotICAgIDcxMTA3LCAxMTkwNTQsIDE5NDk2OCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgMTIxMzI3LCA3NDA3MCwgCi0gICAgMTMwNjUsIDk5MjMsIDEwODA2LCAxOTQ1OTYsIDExNzYzLCA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgCi0gICAgNzEwNDQsIDEyMTMxMiwgODMzMywgMTIxMzI5LCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzE3LCAKLSAgICA2OTkxMSwgMTE5MTAsIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDk4MzExMywgNjUzNDQsIDEyMDUxNywgCi0gICAgNDE3NDcsIDAsIDEyODExMCwgODY3NywgMCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAKLSAgICAxMjc0NywgODMwMCwgMTk0NTYyLCAxMjQ5ODQsIDc0OTEsIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIAotICAgIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgODMzMDgsIDY1MzYsIAotICAgIDEyMDIzOCwgNzE4OTEsIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAxMDAwNywgMTIwMjQ2LCA5NTg4LCAKLSAgICA2ODQ5NCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgNjU4MDEsIDEyODgwOCwgNjgzOCwgMzU2MSwgMTE5ODY3LCAwLCAxMDYxMywgCi0gICAgNjY5NywgMTI4MDUsIDQxOTI4LCA0MDk4MSwgMTA4MDQsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMCwgOTkzMSwgMCwgODgyNSwgCisgICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgOTgzMjc2LCAxMTkwOTIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA2ODI5OCwgMTIxMTk1LCAKKyAgICAzODc0LCAwLCAxMjUyMDQsIDEwMDk5NCwgMTIwMzMxLCAxMDA5OTMsIDEwMDY3MywgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgCisgICAgNDEwMzgsIDc0MDA5LCA5MjA3LCA0MjIzOSwgODUzNiwgNzA2NzEsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIAorICAgIDE0NTUsIDc4NzQ5LCA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODMyMywgNDM2MTQsIDY5ODAxLCA5MzksIAorICAgIDc1MDIxLCA0MzUyMCwgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDE5NDY1OCwgNzAxNjgsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIAorICAgIDYwODgsIDc4NzU5LCA3ODc1NSwgMTkwLCAxMTk4OTksIDEyNTkzLCAxMDA3MzUsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAKKyAgICAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMDA0MzYsIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIAorICAgIDEwMDQzMCwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgMTE4NDEsIDc5MTgsIDcyNzQyLCAxMDEwMDYsIDExMzY2OCwgOTE3ODg0LCAKKyAgICAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgCisgICAgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCA3MTEwNywgMTE5MDU0LCAxMDAzODEsIDkyNTIsIDEwMDM3OSwgCisgICAgNDY1MiwgNjgzNzEsIDEwMDM4MiwgMTIxMzI3LCA3NDA3MCwgMTMwNjUsIDk5MjMsIDEwODA2LCAxOTQ1OTYsIDExNzYzLCAKKyAgICA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMTAwMzg4LCA2OTkzLCA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIAorICAgIDExMzkwLCA5ODMxMzYsIDc0NDY0LCAxMjc5MTAsIDkyMzIwLCA3NDA4MCwgMTAwNDQyLCA2OTkxMSwgMTE5MTAsIDkyNTU5LCAKKyAgICA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDk4MzExMywgNjUzNDQsIDEyMDUxNywgNDE3NDcsIDEyODM0MiwgMTI4MTEwLCAKKyAgICA4Njc3LCAxMjA1NjQsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIAorICAgIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMTI3OTEzLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAKKyAgICA2Njc3OSwgNjY3NzcsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAxMDA5NjIsIAorICAgIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMjIzNywgMTIwMjQ2LCA5NTg4LCA2ODQ5NCwgCisgICAgMTU5NiwgMTIwMzgzLCA0MTk5NCwgNjU4MDEsIDEwMDg3NCwgNjgzOCwgMzU2MSwgNzI3NTMsIDAsIDEwNjEzLCA2Njk3LCAKKyAgICAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAxMDA5NjYsIDk5MzEsIDAsIDg4MjUsIAogICAgIDc0NTU1LCA2NTk0MCwgNDMyNTksIDEyNjU4NiwgNjEwNywgODM0NTUsIDExOTE3NywgNzc5NDEsIDc4NDAxLCAxMTkyNzAsIAogICAgIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgODcyMSwgMTE5NTcwLCAxMTkyMjcsIDYwOTIsIAotICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAwLCAwLCAxMDM4MCwgODczMywgCi0gICAgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCAwLCA2ODQ4MiwgNjUzOTksIAotICAgIDkxNzgyMCwgNjQ1OTEsIDQyNDA1LCA4MzQ2NiwgMTIwODIwLCA4NDMsIDExNTQxLCAxMjgzMjYsIDcwMzIxLCAyMDY1LCAKLSAgICA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgOTU3OSwgCi0gICAgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIDEwNzAwLCA4ODA1LCAKLSAgICAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAwLCA5ODMxOTcsIDEyNzI1MiwgMCwgNzM4ODIsIDQ5OSwgCi0gICAgOTgzMDQ5LCA0MzQ2NywgMCwgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwMywgMCwgCi0gICAgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIDEyODAwOSwgOTQ1OCwgOTI5MzUsIDY0NzAsIAotICAgIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEyODMwNywgMCwgNDI3ODIsIDAsIDEyNDk5OSwgOTgzMTM1LCAxMjgzMDksIDczODQ5LCAKLSAgICAxMjA2NjksIDk0MTQsIDc0NjQ3LCA3Mzc4MiwgNzM5NjksIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIAotICAgIDE5NDg3MCwgODI1NCwgMCwgMTA5NzUsIDQzNTE4LCAxMjA2MjUsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgCi0gICAgMTI3MTUzLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCA5ODMxMTgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIAotICAgIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIAotICAgIDQwNDksIDc0MTYzLCAxMjcwNjUsIDcwOTAsIDgzMjc0LCA3ODkyLCAxMjcwNjQsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCAKLSAgICA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTI3MDYyLCA3MTE5MSwgCi0gICAgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIAotICAgIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgCi0gICAgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIAotICAgIDQxMjEyLCA2NzcxMywgMTUzNiwgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAKLSAgICAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAxMjc4MTMsIDEyNzExMSwgNzg4NDIsIDczOTI2LCA2NjI5MSwgMTA2NDUsIAotICAgIDEyMTIsIDY1NDMsIDk4MzMwOSwgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgCi0gICAgNzE4OTIsIDEyMDk5NiwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDgyNywgCi0gICAgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAKLSAgICAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDExMzc4NywgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgCi0gICAgMTI4Nzc1LCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAxMjA4NjEsIDAsIDAsIDQxMTcyLCA3ODU1LCAwLCAKLSAgICA3MTQ3MiwgMTA0ODAsIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEyNjYxNiwgCi0gICAgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCAKLSAgICA3Mzk4MiwgMTIwNTE4LCA4MzQ3MywgMTk1MDg2LCA0MzM2OSwgOTgzMTc3LCAxMjgxNDAsIDY4NDE1LCA3Nzg2MSwgNDUzOCwgCi0gICAgOTM5NzgsIDQzMTQxLCA5ODM3NjksIDgyOTc2LCA3NDIxNCwgNzM4ODYsIDY3NzA5LCA5MTc1OTksIDcxOTE4LCA0MzAwNSwgCi0gICAgNzExMTQsIDk1NTIsIDAsIDcwMTI5LCAxMjkxNzMsIDEyOTk3LCA4MzQ3NywgMCwgMTI4ODk3LCAxOTUwMzAsIDIzODEsIAotICAgIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCA3NDYxOCwgMCwgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgCi0gICAgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgODI5NzcsIDcwNDM3LCAxMjEyNTEsIDY0ODk2LCAxMTkxNjIsIDE5NTIsIAotICAgIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDEyODQ1MCwgMTE5NTY2LCAxMjgwOTMsIDEyODA4LCAxMjE4MywgNjE0NSwgCi0gICAgNzUwMjAsIDY0OTI5LCA3NDk4NSwgNzE5MTYsIDc0OTg0LCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIDkxODcsIDgzMjc3LCAKLSAgICA4MzI3OCwgMTAxOTEsIDgzMjcxLCAxMTc1MiwgMzM1MywgOTM1OCwgOTgzNDYyLCA3MTM2NiwgNjY2ODAsIDEyMDA5MCwgCi0gICAgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDEyMDA0NywgOTgzMDU2LCA4MzQ3MCwgMTIwMDgxLCAxMTkwNTIsIAotICAgIDQxMDI3LCAxMjAwODYsIDcxNDQ5LCAxMjAwODgsIDczNjYsIDcwMTksIDcwMzc4LCAwLCAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgCi0gICAgNjQ2NTcsIDg2NTcsIDgzNDcyLCA4NTk0LCAxMjAwNjgsIDAsIDk4Mzc4OSwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgCi0gICAgMTEzNzExLCA0MzE1NCwgNDEwMjksIDExOTk1NiwgMTEzMzIsIDY1MzgwLCA3NzI4LCA5NDA3NywgMTEyOTQsIDAsIDY2NjY1LCAKLSAgICA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAxMjc5NDksIDQyNTI0LCA2ODQxOSwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIAotICAgIDczODQyLCA5ODM4NjQsIDE5NDkyOSwgODA4OCwgMTI4OTM3LCA3NDAxMiwgNjY1NjIsIDAsIDQ0MzksIDY5MjYsIDcyNDIzLCAKLSAgICAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAKLSAgICAxMjc0NzYsIDExMjk2LCA5ODMyODUsIDk4MzQwOSwgMCwgNjU4MjUsIDk1NzcsIDY4MTk5LCA5ODMzOTMsIDY0NjcwLCAKLSAgICA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgNzA0MDksIDc4MDUzLCA3Mzg3MiwgNzgwNTUsIDExOTk5MywgMTA5MDIsIDAsIAotICAgIDAsIDc4MDcwLCAxMTIwMCwgMTA0NzIsIDI5OTUsIDEyMTQzOCwgMTIwMTM4LCA2NDY4MiwgMjM3MSwgNzgwNjksIDExODg5MywgCi0gICAgMjU5LCAxMDA5LCA3MDQwNSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAxMTM3NTcsIDY1MTI1LCA0MTI0NCwgNzA0MDcsIAotICAgIDEzMjcxLCA5MTAzLCAyMjc4LCA5ODMxNDYsIDE5NDcyOCwgMTI5MTIwLCAwLCAxMDIxOSwgNzQ5NjgsIDE5NDc0MCwgMCwgCi0gICAgNjc3MTgsIDQzMTc4LCAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgODM0MzksIAotICAgIDQxNDkyLCAxMjAwNSwgNjk5MjcsIDEyNzA2OCwgMTg5MCwgMTIwMDU2LCAwLCA4MzQ0MywgMCwgNzI5MywgNzk5MSwgCi0gICAgNzQwNTIsIDEwNTc4LCAxMjExNDEsIDc4MDc2LCAxMjg2MjAsIDY3MzY4LCA2OTkyOCwgNzE4NTAsIDc4ODAwLCA5MjY1MywgCi0gICAgNjQ0NDUsIDQyNjY4LCA2NjM1LCAxMjgzMDgsIDYxNjQsIDY1MTcwLCA3NDkzNiwgMTIxMTgyLCA3Njc2LCAxMTY2NCwgMCwgCi0gICAgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCAwLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIDkwODgsIAotICAgIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDEyMDY2NCwgNzU0NiwgMzg0NywgNzEwODgsIDkzMDM3LCA0OTg1LCAxMzI4OCwgNjcyLCAKLSAgICA4MDk4LCA0MzE5NiwgMTk0NzQ2LCAxMjA3MjMsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgMTE3NzIsIAotICAgIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAxOTQ3MTEsIDEyODM3MSwgMTI2MjIsIAotICAgIDEyNzIzNCwgMTI0OTQ4LCAwLCAxMjEyMTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDc0OTY5LCAKLSAgICA0MjczMSwgNjc5NzIsIDc0OTcwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgOTI3NDYsIAotICAgIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwNCwgMCwgNDEwNjYsIDY0NjczLCAKLSAgICA5MTc5NjMsIDkyMzgxLCAxMjg2MzYsIDM1MDUsIDg3MDcsIDc0OTI1LCA2NzI1LCAxMjA4MDIsIDEyMTI5NiwgNzUwNDEsIAotICAgIDM0NzEsIDY2MzkxLCA1NDc5LCA4ODIsIDY2ODYsIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDc0NjA4LCAKLSAgICAxMjUwMjksIDgzNDMzLCAxMjEyMzcsIDEyMDg0NSwgMCwgODM0MzEsIDMyMjUsIDkxNzk5NiwgNDQzMywgNDExNTYsIAotICAgIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgOTgzNjQyLCAxMDkyNiwgMTE3NTYsIDExNzU3LCA2NDg3OSwgMTIxMTA2LCAKLSAgICA0MjY1NCwgMTI3ODQ4LCAxMzIyNywgMTIwMzIwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTI2NDQsIDQxNDE4LCAxMjg5MzMsIAotICAgIDY1OTE0LCA2NzIxLCAyMTcsIDkxNzk1NSwgOTE3OTYwLCAxMjEwODIsIDEwNDQzLCAxMDc4OSwgNDExNTgsIDExOTI1NywgCi0gICAgNDI3NCwgMTExNDMsIDQxNDgzLCAwLCA0MTI1MCwgMTI4OTA0LCA0MjE3OSwgMTI4Mzc1LCA1OTMxLCAxMTc0NCwgMTEyMTUsIAotICAgIDc0NDQ2LCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDk4MzQ1OCwgCi0gICAgMTIwODEzLCA0Mzk3LCAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjA4OTMsIDAsIDQxNDg1LCAzNTExLCAKLSAgICA0MTI4MiwgNTkyMywgMTA0MDAsIDAsIDEyMDQ5MywgNzYwLCAwLCAxMjA4OCwgNTc4NiwgNjgyNTIsIDQyMjU2LCAxMTk4NjksIAotICAgIDY3MTQ1LCA0MTcsIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCA3NDk2NSwgNTkzNCwgNzQ1NzIsIDY2NTgzLCA3NDkwNCwgCi0gICAgNjQ4NzcsIDIyODQsIDY0NDgxLCA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgNjcyNDAsIDE5NDY1NiwgMCwgMCwgCi0gICAgNDIyNzMsIDU4MTksIDAsIDEyODA1NiwgMCwgMTE5MTI5LCA5ODMxMDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIAotICAgIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgMTE5NTc2LCAxMjgyODcsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIAotICAgIDMzMjksIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAxMTkyNDIsIAotICAgIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDE5NTA1MSwgMTE5ODgwLCAxMDc2OSwgOTY3NiwgMTE5MDQxLCAwLCA5NzUzLCAKLSAgICA5Mjc2MiwgODk0NCwgOTgzMTY0LCAwLCAxMDQ3MywgOTgzODIzLCAxMjA0NzIsIDYwNzIsIDQzMDI1LCAxMDI5OSwgCi0gICAgMTI4NDM2LCA2ODg0NSwgMTIwNjA4LCA2NjMyNiwgNjc0MTIsIDkyOTUyLCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKKyAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMTAwOTcwLCA3MDcxMywgMTAzODAsIAorICAgIDg3MzMsIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgOTgzODMwLCA2ODQ4MiwgCisgICAgNjUzOTksIDkxNzgyMCwgNjQ1OTEsIDQyNDA1LCA4MzQ2NiwgMTIwODIwLCA4NDMsIDExNTQxLCAxMDA4MTAsIDcwMzIxLCAKKyAgICAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAxMjUwNjAsIDk4MzMwNiwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAKKyAgICAxOTUzLCA5NTc5LCA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgODM0NjQsIDQxMjU3LCA0MTkwMCwgODY3NSwgCisgICAgMTA3MDAsIDg4MDUsIDE3NDIsIDExMzcyMiwgOTMzMywgODIwMiwgNzIzOTksIDEyMTAyNywgOTgzMTk3LCAxMTM4MDksIAorICAgIDEwMDk4OSwgNzM4ODIsIDQ5OSwgOTgzMDQ5LCA0MzQ2NywgMTk0OTI3LCA0MzgxOCwgODM0ODIsIDE3MTIsIDU5MzIsIAorICAgIDc3ODQ1LCA0MTc2MiwgMTI5MzcyLCAwLCAxMTk2NywgMTc3NSwgMTI1MDA2LCA3NTAwOSwgMTExMTgsIDEyMTM5MSwgCisgICAgMTAwOTgyLCA5NDU4LCA5MjkzNSwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMTAwNDE0LCAxMDA5ODYsIDQyNzgyLCAKKyAgICAxMDA0NDAsIDEwMTAzNiwgMTAxMDM1LCAxMDA1ODEsIDczODQ5LCAxMDEwNDAsIDk0MTQsIDc0NjQ3LCA3Mzc4MiwgNzM5NjksIAorICAgIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDEwMTA0NCwgODI1NCwgMTAxMDQ2LCAxMDk3NSwgNDM1MTgsIAorICAgIDEwMDk1NCwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIDc0MjQ3LCAxMDA5NTEsIDEwMDk5MSwgOTIyNjMsIDkxNzk4MCwgCisgICAgNzUwNywgMTAwNjM4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgCisgICAgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCA0MDQ5LCA3NDE2MywgMTAwOTU1LCA3MDkwLCAKKyAgICA4MzI3NCwgNzg5MiwgMTAxMDMwLCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCAKKyAgICA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEwMDk2MCwgNzExOTEsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCAKKyAgICA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAKKyAgICAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAKKyAgICAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNjc3MTMsIDE1MzYsIAorICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKKyAgICAxMzI2NiwgMTI3ODEzLCAxMDEwNzMsIDc4ODQyLCA3MDUwMywgNjYyOTEsIDEwNjQ1LCAxMjEyLCA2NTQzLCAxMjUyMjAsIAorICAgIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIDcxODkyLCAxMjA5OTYsIDg5MjMsIAorICAgIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ3MzMsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgCisgICAgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgCisgICAgMTE0NTQsIDczOTExLCAxMDEwMjAsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIDgzNDY1LCA0MTE3MCwgMTQ1NCwgCisgICAgMTEzNjksIDY0NzcsIDEyMTU3LCAxMjA4NjEsIDAsIDAsIDQxMTcyLCA3ODU1LCAxMDA5NjEsIDcxNDcyLCAxMDQ4MCwgCisgICAgNDMyNTgsIDEyNjU5NiwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMTAsIDY0NSwgMTAwOTkyLCA3NjA5LCA0MDk3MywgCisgICAgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDEwMDgzNiwgNzcyOSwgNzM5ODIsIAorICAgIDEwMTAwMSwgODM0NzMsIDEwMTAwMywgNDMzNjksIDEwMTAwNSwgMTAwOTczLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIDkzOTc4LCAKKyAgICA0MzE0MSwgMTAwOTcyLCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIDcxMTE0LCAKKyAgICA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDE5NDk0MywgMTI4ODk3LCAxMDA3MzcsIDIzODEsIAorICAgIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAxMDA5ODEsIDc0NjE4LCAxMDA5ODMsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIAorICAgIDk2MTQsIDI0MjgsIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgCisgICAgMTAwOTU2LCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMDA5NTcsIDExOTU2NiwgMTAwODE3LCAxMjgwOCwgCisgICAgMTIxODMsIDYxNDUsIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCAKKyAgICA5MTg3LCA4MzI3NywgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDEyODk4MCwgNzEzNjYsIAorICAgIDY2NjgwLCAxMDA4MTMsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMDA4MTIsIDEwMDk3NywgODM0NzAsIAorICAgIDEyMDA4MSwgMTAwOTcxLCA0MTAyNywgMTAwODExLCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgCisgICAgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTAwOTY5LCAxMDA5NjgsIDEwMDk3OCwgCisgICAgMTAwODIwLCAxMDA5MTQsIDEyMDA3MSwgMCwgMTEzNzExLCA0MzE1NCwgNDEwMjksIDExOTk1NiwgMTEzMzIsIDY1MzgwLCAKKyAgICA3NzI4LCA5NDA3NywgMTEyOTQsIDEwMDk4MCwgNjY2NjUsIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyMTA5NywgNDI1MjQsIAorICAgIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCA3MDY5OCwgCisgICAgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgMTI5MjQsIDEwMDk3NCwgNDIzNjksIDQzNTAsIDY1NDkxLCAKKyAgICA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMTAwOTU5LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIAorICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgODI5ODIsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgNzA0MDksIAorICAgIDc4MDUzLCA3Mzg3MiwgNzgwNTUsIDEwMDgxNSwgMTA5MDIsIDAsIDAsIDc4MDcwLCAxMTIwMCwgMTA0NzIsIDI5OTUsIAorICAgIDEwMDk1MywgMTIwMTM4LCA2NDY4MiwgMjM3MSwgNzI3MjAsIDExODg5MywgMjU5LCAxMDA5LCA3MDQwNSwgMjQwMiwgMjMzMywgCisgICAgNjQ0MCwgMTI1MjQ3LCAxMDA5NjMsIDY1MTI1LCA0MTI0NCwgNzA0MDcsIDEzMjcxLCA5MTAzLCAyMjc4LCA5ODMxNDYsIAorICAgIDE5NDcyOCwgNzMwMSwgOTgzNjkzLCAxMDIxOSwgNzQ5NjgsIDE5NDc0MCwgMCwgNjc3MTgsIDQzMTc4LCAxMjcwNzAsIAorICAgIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAxOTQ4OTUsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgNDE0OTIsIDEyMDA1LCAKKyAgICA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDk4MzMwMiwgODM0NDMsIDk4MzA0NCwgNzI5MywgNzk5MSwgNzQwNTIsIAorICAgIDEwNTc4LCAxMjExNDEsIDc4MDc2LCAxMjg2MjAsIDY3MzY4LCA2OTkyOCwgNzE4NTAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIAorICAgIDQyNjY4LCA2NjM1LCAxMDA3OTIsIDYxNjQsIDY1MTcwLCA3NDkzNiwgMTIxMTgyLCA3Njc2LCAxMTY2NCwgMTI4Njg0LCAKKyAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDk4MzIzMywgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCAKKyAgICA5MDg4LCAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjAyMjAsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIAorICAgIDY3MiwgODA5OCwgNDMxOTYsIDEwMDc5NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAorICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIAorICAgIDEyNjIyLCAxMjcyMzQsIDEyMDU2NiwgMTk0Nzk4LCAxMjEyMTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIAorICAgIDk4MzM1MSwgNzQ5NjksIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIAorICAgIDkyNDc4LCA5Mjc0NiwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAKKyAgICAxOTQ3NDgsIDQxMDY2LCA2NDY3MywgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgCisgICAgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAKKyAgICAxMDExMDYsIDQyNzU0LCA3NDYwOCwgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCAKKyAgICA5MTc5OTYsIDQ0MzMsIDQxMTU2LCA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDEyNzk0OSwgOTgzNjQyLCAxMDkyNiwgCisgICAgMTE3NTYsIDExNzU3LCA2NDg3OSwgMTIxMTA2LCA0MjY1NCwgMTI3ODQ4LCAxMzIyNywgMTIwMzIwLCAxMDAyMSwgNTE2MCwgCisgICAgMTM4NywgOTgzNzMwLCA5MjY0NCwgNDE0MTgsIDY2NzQ5LCA2NTkxNCwgNjcyMSwgMjE3LCA3MjgyOSwgOTE3OTYwLCAKKyAgICAxMDA5NjUsIDEwNDQzLCAxMDc4OSwgNDExNTgsIDExOTI1NywgNDI3NCwgMTExNDMsIDQxNDgzLCAwLCA0MTI1MCwgCisgICAgMTI4NTYzLCA0MjE3OSwgMTI4Mzc1LCA1OTMxLCAxMTc0NCwgMTEyMTUsIDcwNjc2LCA0MTI1MiwgNjY2ODIsIDk4MzY4MCwgCisgICAgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgNzQzMTksIDEyMDgxMywgNDM5NywgMTAwNDQ1LCAKKyAgICAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgNDEyODIsIDU5MjMsIDEwNDAwLCAKKyAgICAwLCAxMjA0OTMsIDc2MCwgMTI3MTg4LCAxMjA4OCwgNTc4NiwgNjgyNTIsIDQyMjU2LCAxMDA0NDYsIDY3MTQ1LCA0MTcsIAorICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCA3NDk2NSwgNTkzNCwgNzQ1NzIsIDY2NTgzLCA3NDkwNCwgNjQ4NzcsIDIyODQsIAorICAgIDY0NDgxLCA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgNjcyNDAsIDE5NDY1NiwgMCwgMTI3MTUzLCA0MjI3MywgNTgxOSwgCisgICAgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgNjU3ODUsIDEyMzcsIAorICAgIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgMzMyOSwgMCwgCisgICAgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgMTI4MTA0LCAKKyAgICA0MzE4NSwgMCwgNDM5NiwgMTAwNTMyLCAxMDA1MzUsIDEwNzY5LCA5Njc2LCAxMDA1MzYsIDEwMDUzOSwgOTc1MywgOTI3NjIsIAorICAgIDg5NDQsIDk4MzE2NCwgMTIxNDUwLCAxMDQ3MywgOTgzODIzLCAxMDA1NDIsIDYwNzIsIDQzMDI1LCAxMDI5OSwgMTAwNTQ2LCAKKyAgICA2ODg0NSwgMTAwNTQ4LCA2NjMyNiwgNjc0MTIsIDkyOTUyLCA3MjgwOCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCiAgICAgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgMTI3OTAyLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgCiAgICAgNzQ5MzgsIDQzMzI0LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzQ5NjcsIDc0MTQsIDc3OTI5LCAKLSAgICA0Mzk4MiwgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDk4MzczMSwgODUyLCAwLCAxMjE2MCwgCi0gICAgODM0OTEsIDEwMjEyLCA2NTQzNSwgMTI5MDkyLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgCisgICAgNDM5ODIsIDcwNzQxLCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA3MTI2NywgODUyLCAwLCAxMjE2MCwgCisgICAgODM0OTEsIDEwMjEyLCA2NTQzNSwgMTI2NjAzLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgCiAgICAgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgMTAzNzUsIDQzODUzLCAxMjg1OTksIAogICAgIDQzMTUsIDEyNjQ0LCA4MzQ5MCwgNzc5MzcsIDQzNjM5LCA0MzM0MywgNjc0MDgsIDEyODk0NSwgMTE1MDEsIDQxMTc3LCAKLSAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCA5ODMzNTgsIDQzMzEzLCAKLSAgICAxMjAyMzAsIDQxMTc2LCAxMjg3ODAsIDk5NCwgOTgzMDQ1LCA4NDUyLCA3Nzk3MywgNzM5NjYsIDY2ODkwLCA3MDgxMiwgCi0gICAgNTkyMSwgMCwgMjU5NywgOTI0MjMsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIDEyNzEwNSwgCi0gICAgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgNDIyNjgsIAotICAgIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgNDMxNjksIAotICAgIDEwMTc2LCAwLCA3NDIsIDc0ODgxLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCA2NzU2LCAKLSAgICAxMjUxMDQsIDEyMTEyNiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCA0MjQwNywgCi0gICAgNzQxNywgNzE4LCA3NTcyLCA5NzMsIDExOTU5OSwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgNDIzMzMsIAotICAgIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDEyMDg0OSwgMTIwMiwgMCwgOTgzOTEwLCAKLSAgICA2NTg2MywgMCwgNjg0ODQsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgCi0gICAgNzgwNDIsIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgOTI0MjIsIDAsIDU1MjM3LCAxNDMxLCAxMTkxOTQsIDY2NTY1LCAKLSAgICAxMDgyMSwgMCwgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgCi0gICAgNzEyMjgsIDkxNzk4MiwgMTI5MTg4LCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAKLSAgICAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgNzQ5MjIsIDYzNzYxLCA4Nzg1LCA0NDc2LCA2NTA3MSwgNjM3NjMsIAotICAgIDEyNjU1LCA4OTA3LCA5MTQ3LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAxMjA4OTgsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCAKLSAgICA0MTU3MiwgMTI3OTc5LCAxMjcxNjAsIDk4MzU1NCwgNDE1NzMsIDgzMTYwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCA4MzE1NiwgCi0gICAgODMxNTcsIDgzMTU4LCA3ODQ2MCwgMTE5ODIsIDAsIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCAKLSAgICA0MTE2NywgMCwgNDE3MzUsIDk0MDE5LCA3MTcsIDEwNzU0LCA4MzE2OCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIAotICAgIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCA3MTQ3NCwgMCwgMTI3ODcxLCAKLSAgICAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIAotICAgIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MjA4LCA1NzUsIDI2OCwgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIAotICAgIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgODMxNTEsIAotICAgIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgCi0gICAgNzgxMjYsIDc4MTI3LCA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCAKLSAgICA5ODM1NTksIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCA5MTc5NDcsIAotICAgIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgNzQ5NzUsIDEyMzgxLCAzNDg4LCA1OTMzLCAxMDAzMywgCi0gICAgNzExMDEsIDY2MjQxLCA2NTU3MCwgMTE5MTU0LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgNDI1MzgsIDAsIAotICAgIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAwLCAxMjg0NjUsIDQzOTIwLCA0MjczNiwgMTIxMDE3LCA1NzU2LCAKLSAgICAxMjgzMjQsIDc2MzgsIDQxNjQyLCA0Mjc2NCwgOTgzNzE3LCA0MzEwOSwgNzYzNywgNTc1MiwgMTEyMTMsIDgzNDgxLCAKLSAgICA3MzgzMiwgMTI4ODI3LCA4MzQ4NiwgMTI4MjMxLCA3ODMzNCwgOTE3OTU3LCA3NjM2LCA2NTE3MSwgOTEyNCwgOTgzMjEwLCAKLSAgICA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDk4MzIyMSwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDcwODY5LCAKLSAgICA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCAwLCAxMjgzNTEsIDEyNzQ4OSwgCi0gICAgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgMTk0NjQ4LCA0MTI3NCwgNTc3OCwgNjMwMiwgCi0gICAgMTIxNDMyLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA2NzI0MiwgOTMwNDEsIDk0NTIsIDEyODE1MywgNzQzOTMsIDExNTUyLCAKLSAgICAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDEyODYxNCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIDc4NjU4LCAKLSAgICA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAxMjA0MTIsIAotICAgIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIDEyNzk4MiwgCi0gICAgOTgzMTcyLCA0Mzk0OCwgMTk1MTAwLCA2ODg0MCwgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIDEyNzg5MiwgCi0gICAgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgMTE5MTQzLCAwLCAKLSAgICA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgNjc3MDUsIAotICAgIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAxMjg2MTEsIDgzNDc0LCAxMDIyOSwgCi0gICAgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgMTI3MDAzLCAxOTUwODQsIDcxNDU1LCA2NDgzLCA5MjIxMSwgMTgwOCwgCi0gICAgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCAKLSAgICA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgOTI5OTIsIAotICAgIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCA2NDMyMCwgMTAyNjUsIAotICAgIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgMTk1MDcyLCAxNzkyLCAKLSAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAzODUsIDQxNTIsIDI1ODUsIAotICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAxMTE2MCwgMTE5MTE2LCAKLSAgICAxMjc4NzMsIDEzMTU3LCAwLCAxMjgwMjQsIDM1NzAsIDEyOTE4NywgNzQ0MywgMTE4ODA0LCA0NDAwNiwgNjk5NywgNjgwMDQsIAotICAgIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDkxNzk3MSwgNjUyMTYsIDcwMTk2LCA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgCi0gICAgMTI4NTQzLCA3ODM5LCA5MjYxMiwgNzg4MDYsIDc1MDY0LCA5NjkxLCA0NDExLCA3ODgwMiwgMTIxMjE5LCAxMjA4NTQsIAotICAgIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODksIDcyNDE5LCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIAotICAgIDE5OTMyLCA2NDgzMSwgMCwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCAKLSAgICA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCA5ODM4MTEsIDQxMTY2LCAwLCAxMjQ1NiwgCi0gICAgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgCi0gICAgNzQxNjIsIDExOTMyMCwgMTIwNDgzLCA5OTY5LCAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgCi0gICAgNzg0MjQsIDMyMzAsIDY4NzczLCA5ODM0OTcsIDc1MDI1LCA1MjA5LCAyOTcsIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgCi0gICAgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgCi0gICAgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgCi0gICAgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCAKLSAgICA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgMCwgMTE5MDAwLCA4ODkyLCA3ODg3MiwgOTIzMzksIAotICAgIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI3MzQ4LCA5MTc4NzEsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDEyODUzMywgCi0gICAgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgCi0gICAgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgCi0gICAgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCAKLSAgICA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIAotICAgIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgCi0gICAgNTYwMywgMCwgNDQ3MywgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIAotICAgIDExOTIxMywgNTM0NywgNjk4MDIsIDkxNzk3MywgNzM4NjgsIDcwODUyLCAxMDU4OCwgMCwgMCwgNjM3NTUsIDEyODI3MSwgCi0gICAgNTM0MywgNzg0MjIsIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCAKLSAgICA2NTI0NCwgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDEyODk3OSwgCi0gICAgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIAotICAgIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCAKLSAgICA2NTM1NSwgNTM0NSwgMTExMDMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCi0gICAgMTI2NjM1LCAyNDIzLCA3NDUxOCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAxMjg2NzAsIDk4Mzc4NywgCi0gICAgMCwgNjQ2MDUsIDAsIDY4MDc0LCA5ODM5NzcsIDQ5MTYsIDEyODU2OCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCAKLSAgICA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgODM0NTAsIDEwNjg0LCAwLCAKLSAgICAxMjUwNjMsIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAxMjgyMDcsIDAsIDk4MzY1NCwgCi0gICAgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCA4MzI5LCAKLSAgICA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCA1NjA3LCAKLSAgICA0MTA4OSwgMTI4NjI2LCAwLCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgMTIwNDU5LCAKLSAgICA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAxMTg4LCA3MjU0LCAKLSAgICAxMTAwLCAwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAzNTcyLCAxMDAyMywgCi0gICAgNDk1OSwgMTMwNzksIDAsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAKLSAgICAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIAotICAgIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgCi0gICAgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDAsIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCAKLSAgICA4MzM4NSwgMTEwMTksIDAsIDEyODQxNiwgMTIxMjA1LCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAyNjEsIDU5MjcsIDc3OTEsIAotICAgIDEyODY4MSwgNzM2MiwgMCwgMTA2OTYsIDcwMTI0LCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIDkzOTk1LCAyODIsIAotICAgIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgOTgwMSwgNjYzOTksIDc0MTc3LCAwLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAKLSAgICAwLCA2NzI4NiwgNjA4MSwgODM0NjksIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDAsIAotICAgIDkzMDEzLCA4NzUxLCAxMTQ5OSwgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgCi0gICAgNjgwMTcsIDk2NDIsIDEwOTEyLCA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgCi0gICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAKLSAgICAwLCA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgCi0gICAgNjczMTIsIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIAotICAgIDQyNjYxLCA4MzQzOCwgMTIwMjU1LCAxMjAyNTYsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAKLSAgICA2NjYwMiwgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgODM0MzcsIDg2MDgsIAotICAgIDQyNzg5LCAxMjA2MTMsIDgzNDM2LCAwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKLSAgICA2NzMwNCwgMTY0MSwgMCwgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCA2NzMxMCwgCi0gICAgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgCi0gICAgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCA5ODM4MTUsIAotICAgIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCA1NjIyLCAKLSAgICAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCA2NzMyNCwgCi0gICAgMjQzNSwgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgMTIwNDQ3LCAKLSAgICAzNzY4LCA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgNDU2NCwgCi0gICAgMTE5MDQ5LCA3NDYyMywgNzQyNzEsIDczNzUzLCA4Mzc0LCAxMjcyMDEsIDAsIDY4MjksIDUyMjUsIDY2OTAxLCAxMjczODUsIAotICAgIDAsIDAsIDExOTYxNSwgNjczMTksIDY3MzE4LCAzMTYyLCA0MzUwNywgMTE3NzEsIDY3MzIyLCA2NzMyMSwgNjczMjAsIAotICAgIDQyNjE0LCA1MzUzLCA1NjI1LCA3NDE3OSwgNjczMTUsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAKLSAgICA2OTk0MiwgNjk1MiwgNjczMjksIDY3MzI4LCA2NzMyNywgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAKLSAgICAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAKLSAgICAyNDAwLCA1NjI3LCAxMjAwMTcsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKLSAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMTM3MDMsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAwLCA1NTQsIDExOTY0OSwgCi0gICAgMTEzNTgsIDcxMTcyLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjUxMTQsIDczODkxLCA4MzQyMywgODMwMTksIDU2OTQsIAotICAgIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAxMjA5NjIsIDkzMDI5LCA2OTc2NCwgMCwgMCwgCi0gICAgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjkxMjksIDY4MTE4LCA2ODA5MywgCi0gICAgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDc1MDU4LCA2NTI1NSwgOTM5OTIsIAotICAgIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQxMzYsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAKLSAgICAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIDExNjgsIAotICAgIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCi0gICAgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMCwgMTI5MTc2LCAKLSAgICA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIAotICAgIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM5NzAsIDExOTU4OSwgMTk2OSwgMjM4NCwgCi0gICAgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzgwMjksIDg3NjYsIDQzODY0LCA3ODA3OSwgNTg1NCwgMTI1MDAwLCAKLSAgICAxMDU4MywgMCwgMTE5OTg5LCAxMjc1NTYsIDEwNDE2LCA2ODA3MCwgMzg3MiwgODM0MjQsIDk4MzgzOSwgODQyOSwgCi0gICAgMTIxMjMwLCAxMTg4MDYsIDI4MzgsIDY0MjksIDAsIDgzNDI2LCAwLCAxMjg0NzgsIDAsIDE5NDYyMCwgOTQwMDUsIDExMDk2LCAKLSAgICA4MzQyMiwgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCA2NzgxOSwgNzM3NDIsIDY2LCAKLSAgICA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCA4MiwgODEsIDg0LCAKLSAgICA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgODU1NiwgCi0gICAgOTE3OTc1LCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCA3ODE4NSwgMTI4OTU5LCAKLSAgICAwLCA3MTQzNywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCAKLSAgICA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgCi0gICAgMTI2NTQ1LCA2NjU4OSwgMCwgNjMzNCwgMTI4MzY5LCAwLCAxOTkzNywgOTE3NzkzLCAxMzIyLCA5MjM1OSwgNTY3NSwgMjU0LCAKLSAgICAwLCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCA0MjMxMiwgMCwgMTk0NjkyLCA2OTcyLCA0MjgyNiwgCi0gICAgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4ODA1LCA2NzY4NywgCi0gICAgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgCi0gICAgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgNzE0MjgsIDEyMDc0OCwgMzE0MCwgCi0gICAgMTI3Mjc2LCA3OTYwLCA0MzI3MSwgMTIxMDk5LCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDY3MjU0LCAKLSAgICA2NzI1MywgNzY5OSwgMTIzOTMsIDY3MjU3LCAwLCA2NzI1NiwgNjcyNTUsIDgyMjMsIDAsIDQyNjEsIDEyMTQ2MCwgCi0gICAgMTIwOTEwLCA3NDMwOCwgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCA5ODM1NzEsIDEyODA0NiwgNDM0MTksIDk4MzQ3MSwgCi0gICAgNjQ1NTQsIDEwNTc0LCAzODc4LCA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAxMjgxNzEsIDQyNTA2LCAxMjg1NDEsIAotICAgIDEwMTk5LCA5MTc4NjUsIDEyNTE0MiwgNjgwMjEsIDY1OTE5LCAwLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgCi0gICAgOTgzNzM2LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIAotICAgIDY0MDQxLCA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIAotICAgIDc4ODYxLCAxMTkxMzQsIDAsIDY3MTUyLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAxMjA5MjMsIDM5OTUsIDY4MzYwLCAKLSAgICA2NTYwOCwgMzcxNCwgOTIxOTAsIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgCi0gICAgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIDExOTY0LCAxMjEyNjgsIDEyODAxNCwgOTIxNzMsIDAsIAotICAgIDY4NDU1LCA0Mjg2MywgNzM4MzksIDEyNzUyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIAotICAgIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDEyODYyNSwgMTIyODAsIDcwMzY3LCA1NDAsIAotICAgIDc0NTY0LCAxMTkwMTcsIDY2NDIyLCA4NDMyLCA3ODg3MywgMTEwNzMsIDAsIDY0MzE2LCAwLCAxMjEwNzAsIDgyMCwgCisgICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCA5ODMzOTgsIDQxMTc5LCA5ODMzNTgsIDQzMzEzLCAKKyAgICAxMjAyMzAsIDQxMTc2LCAxMDEwMDcsIDk5NCwgMTAwNDQ4LCA4NDUyLCA3Nzk3MywgNzM5NjYsIDY2ODkwLCA3MDgxMiwgCisgICAgNTkyMSwgMTAwODA0LCAyNTk3LCA2Njc3NiwgNTkyMiwgMTE4OTAzLCA2Njg3MywgNDE4NiwgOTI1MzEsIDczNzQxLCAKKyAgICAxMjcxMDUsIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIAorICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAorICAgIDQzMTY5LCAxMDE3NiwgOTgzNjQwLCA3NDIsIDc0ODgxLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIAorICAgIDExNjgyLCA2NzU2LCAxMjUxMDQsIDEyMTEyNiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTAwNTE3LCAKKyAgICAxMTQxLCA0MjQwNywgNzQxNywgNzE4LCA3NTcyLCA5NzMsIDEwMDUwMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgCisgICAgMTI1MDk5LCA4MDE4LCA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgCisgICAgMTAwODY4LCAxMjAyLCAxMDA1NTcsIDEyODM2NCwgNjU4NjMsIDExOTI1MCwgNjg0ODQsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIAorICAgIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgNzgwNDIsIDY3MzgsIDEyMjg4MiwgNDM2ODEsIDY5NzI4LCAyMDU5LCAKKyAgICA5MjQyMiwgMTAwNTAyLCA1NTIzNywgMTQzMSwgMTAwNTAzLCA2NjU2NSwgMTA4MjEsIDEwMDUwOCwgMTI4MDQsIDEwMDUxMCwgCisgICAgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgNzEyMjgsIDE5NDYyNiwgMTI5MTg4LCAxNzQwLCAKKyAgICA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgNzQ5MjIsIAorICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA2NTA3MSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA5MTQ3LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAKKyAgICAxMjA4OTgsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMTI3OTc5LCAxMjcxNjAsIDk4MzEyNywgNDE1NzMsIAorICAgIDgzMTYwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCA4MzE1NiwgODMxNTcsIDgzMTU4LCA3ODQ2MCwgMTE5ODIsIDk4MzQ4MywgCisgICAgODMwNjcsIDEyODM4MSwgOTI3MTIsIDY0NDg0LCAxMTkyNjYsIDQxMTY3LCA5ODMzNjYsIDQxNzM1LCA5NDAxOSwgNzE3LCAKKyAgICAxMDc1NCwgNzI3NDAsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIAorICAgIDgxOSwgMTA2MTEsIDk2OTQsIDEyNTIyOCwgNzE0NzQsIDAsIDEyNzg3MSwgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCAKKyAgICA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIAorICAgIDcyNzA1LCA1NzUsIDI2OCwgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCAKKyAgICA3MjkwLCA3ODExNywgODMzNywgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgODMxNTEsIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIAorICAgIDY5NTMsIDEyNTI0MCwgODMzNzUsIDc0OTczLCA3ODEzMiwgNTkyNiwgNjgyNTAsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIAorICAgIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDk4MzU1OSwgCisgICAgNjU3NDIsIDEyODc0LCAxMDA0NzMsIDExNTkwLCAxMDA0NzUsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgMTAwNDU2LCAKKyAgICA0MzcwMywgMTMwOTcsIDEyNzE5NywgNjQ2NDMsIDEzMjgzLCAxMjY5NywgNzQ5NzUsIDEyMzgxLCAzNDg4LCA1OTMzLCAKKyAgICAxMDAzMywgNzExMDEsIDY2MjQxLCA2NTU3MCwgNzgzMzYsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCAKKyAgICA0MjUzOCwgMCwgMTI0OTMyLCA3NDExLCA5NDYyLCAxMjgxNTAsIDEwMDQ1MywgMTAwNDUyLCA0MzkyMCwgNDI3MzYsIAorICAgIDcwNzQ3LCA1NzU2LCAxMjgzMjQsIDc2MzgsIDQxNjQyLCA0Mjc2NCwgMTIwNDQ0LCA0MzEwOSwgNzYzNywgNTc1MiwgCisgICAgMTEyMTMsIDgzNDgxLCA3MzgzMiwgMTAwNDYzLCA4MzQ4NiwgMTAwNDY1LCA3ODMzNCwgMTIxMDM0LCA3NjM2LCA2NTE3MSwgCisgICAgOTEyNCwgOTE3OTU3LCA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDgzNDg4LCAyMDI3LCA2NjIzMCwgMTAwODAsIDc4MTM2LCAKKyAgICAxMDQwMywgNzA4NjksIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCAxMTE4MywgMTIwNDMxLCAxMjA0MzAsIDk4MzIyMywgCisgICAgMTI4MzUxLCA3Mjg0NSwgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgMTk0NjQ4LCAKKyAgICA0MTI3NCwgNTc3OCwgNjMwMiwgMTAwMzY3LCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA2NzI0MiwgOTMwNDEsIDk0NTIsIAorICAgIDEyODE1MywgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyMTM4MCwgNjUzOTEsIDEyODYxNCwgMTAxNzIsIDY1NDUzLCAKKyAgICA2Mzc4OSwgNDEyNjQsIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIAorICAgIDQxMjY5LCAxMjA0MTIsIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgCisgICAgNzgyNzAsIDEyNzk4MiwgOTgzMTcyLCA0Mzk0OCwgMTk1MTAwLCA2ODg0MCwgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIAorICAgIDE2NzEsIDEyNzg5MiwgNjA2OSwgOTIxOSwgMTAwNDYxLCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCisgICAgMTE5MTQzLCA5ODMzNTksIDcxNDYyLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgCisgICAgMTE5NTY3LCA2NzcwNSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIAorICAgIDEyNzc3MCwgODM0NzQsIDEwMjI5LCAxMDYzNSwgODI2LCA4MzQ3NSwgMTk1MDgyLCA5MjYwMywgMTIxMTQ5LCA3MTQ1NSwgCisgICAgNjQ4MywgOTIyMTEsIDE4MDgsIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCAKKyAgICA5NjY3LCA3ODY2NSwgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgCisgICAgMTA5MjEsIDkyOTkyLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgCisgICAgNjQzMjAsIDEwMjY1LCA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIAorICAgIDE5NDg2NiwgMTc5MiwgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgCisgICAgMzg1LCA0MTUyLCAyNTg1LCAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgCisgICAgMTExNjAsIDExOTExNiwgMTI3ODczLCAxMzE1NywgOTgzNjQ1LCAxMjgwMjQsIDM1NzAsIDEyOTE4NywgNzQ0MywgMTE4ODA0LCAKKyAgICA0NDAwNiwgNjk5NywgNjgwMDQsIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDE5NTA0NiwgNjUyMTYsIDcwMTk2LCAKKyAgICA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgMTI4NTQzLCA3ODM5LCA5MjYxMiwgNzg4MDYsIDc1MDY0LCA5NjkxLCA0NDExLCAKKyAgICA3MTI3NiwgNzI4MzcsIDEyMDg1NCwgNDM0NDIsIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDEyMjg5NywgNzI0MTksIDEyMTQxMSwgCisgICAgMTIwODg2LCAxMzA2MSwgODAxNiwgNzg2ODcsIDE5OTMyLCA2NDgzMSwgMTk0OTc1LCAxMTM2ODQsIDEyMzkwLCAxMTkxNzEsIAorICAgIDE2MzQsIDY4MTE1LCA2NTA3MCwgMTEwNTYsIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAxMTMyOCwgMTI0NTAsIAorICAgIDk4MzgxMSwgNDExNjYsIDkzOTcxLCAxMjQ1NiwgMTE5MTk0LCAxNzEsIDU5NDEsIDEyNDUyLCAxOTQ3MDksIDEyNDU4LCAKKyAgICAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDExOTMyMCwgMTIwNDgzLCA5OTY5LCAxMjA3NjcsIDEyNDU0LCAKKyAgICA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDY4NzczLCAxMjg1OTUsIDc1MDI1LCA1MjA5LCAyOTcsIAorICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAorICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzI4NjYsIDc4ODc1LCA3ODA0OSwgCisgICAgNzI4NDEsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzQ5MTEsIDU4NDQsIDY4MDMxLCAxMTg4MzgsIAorICAgIDEyNzk0NywgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDkyOTcyLCAKKyAgICAxMjA0MjQsIDcxMjcyLCA4ODkyLCA3ODg3MiwgOTIzMzksIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI3MzQ4LCAKKyAgICA5MTc4NzEsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDE5NDk2NywgMTI1MjIzLCA2NDgxNCwgNjM3OTYsIDQzODYxLCAwLCAKKyAgICA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMTI4NDc5LCAxMjExNDQsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgCisgICAgNzQ5NDQsIDY5NjczLCAxMjEwMjksIDExMTI5LCA5MjkyOSwgMzI5LCA3Nzk2OCwgOTI3MDcsIDgzNDk2LCA3Mzk5LCAwLCAKKyAgICA0MTE4OCwgMTMyNDQsIDY3NjkyLCA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIAorICAgIDExMzY1LCA0MzEyNiwgNzc5NzIsIDEyMDg2MiwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIAorICAgIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIAorICAgIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCA2Njc0MSwgNTM0NywgNjk4MDIsIAorICAgIDkxNzk3MywgNzM4NjgsIDcwODUyLCAxMDU4OCwgMCwgMTI4NDIwLCA2Mzc1NSwgMTI2NjQzLCA1MzQzLCA3ODQyMiwgCisgICAgMTIwNjYxLCA0NTU1LCA1MzQxLCA4MzQ1OSwgNzAwNzEsIDc0OTE2LCA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCAKKyAgICAxMjEzNjUsIDY0NTQxLCA0MjUxOSwgNjgxMzQsIDEyODkxNiwgMTI2OTg2LCA3NDc2NSwgNjY3ODUsIDEyNzUxMCwgNjYzOCwgCisgICAgMTI5MzYzLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIDQyMTcyLCAKKyAgICA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCA2NTM1NSwgCisgICAgNTM0NSwgMTExMDMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgMTI2NjM1LCAyNDIzLCAKKyAgICA3NDUxOCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAxMjg2NzAsIDk4Mzc4NywgMCwgNjQ2MDUsIDAsIAorICAgIDY4MDc0LCAxMjczMDcsIDQ5MTYsIDEyODU2OCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgCisgICAgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgNjY3MzcsIDEwNjg0LCAxMjI5MTMsIDEyNTA2MywgCisgICAgOTI5MDYsIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDEyOTQyMiwgMTI4MjA3LCA5ODM2NDQsIDEyODYxMywgCisgICAgOTAwNSwgMTIyNSwgNjYzMCwgMCwgOTgzNDkxLCAxMTg4NTQsIDY4MDExLCA4ODQ3LCA5MjM3MSwgNjU4NzYsIDU1MzUsIAorICAgIDgzMjksIDc0NTkwLCAxMjUwMzYsIDkyNjA5LCAwLCA2Njg3NCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAxMjEyMTEsIAorICAgIDU2MDcsIDQxMDg5LCAxMjg2MjYsIDk4MzM5NiwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIAorICAgIDg3NjQsIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgCisgICAgMTE4OCwgNzI1NCwgMTEwMCwgMTI5MTgwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAKKyAgICAzNTcyLCAxMDAyMywgNDk1OSwgMTMwNzksIDEyNDk3OCwgNjcyNzUsIDk3MjksIDEyNTExMCwgMTIxMDQyLCA2NzI3OCwgCisgICAgNDMzNjEsIDEyNzM1NSwgNjcyNzYsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIDgzMzkyLCA4MzM2OSwgCisgICAgNDE0NTEsIDgzMzcwLCAxMTA5NSwgODI3MywgNzQzMjIsIDM0NTEsIDcwMjkxLCA5NzIsIDQxNDUzLCA2ODE2NCwgMTE5MzI3LCAKKyAgICA3Mzg4MywgNjgwMjIsIDczOTQ1LCA4MzM2MywgMjI4OCwgMTk5NTUsIDk1MzgsIDgzMzY2LCA2OTgwNywgMTI1MjQ2LCAKKyAgICAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgODMzODUsIDExMDE5LCAxMjEyMTgsIDEyODQxNiwgMTIxMjA1LCA2ODAyMCwgCisgICAgNDEwNzgsIDY2NzU4LCAyNjEsIDU5MjcsIDc3OTEsIDEyODY4MSwgNzM2MiwgMTI1MjU2LCAxMDY5NiwgNzAxMjQsIDYwNzMsIAorICAgIDk4MzgsIDExODkyMCwgOTE3ODc4LCA2MDc1LCA5Mzk5NSwgMjgyLCAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIAorICAgIDk4MDEsIDY2Mzk5LCA3NDE3NywgNjY3OTEsIDkxNzk1OSwgMzQ3NCwgNjcyODcsIDAsIDY3Mjg2LCA2MDgxLCA4MzQ2OSwgCisgICAgNzg4NzQsIDY3Mjg5LCA2NzI4MywgODM0NzEsIDcwMDAyLCA0MjkzMCwgMTI5NDEzLCA5MzAxMywgODc1MSwgMTE0OTksIAorICAgIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIDY4MDE3LCA5NjQyLCAxMDkxMiwgCisgICAgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIDQ2NjksIDAsIDY4MDk5LCAKKyAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgNzQxNzMsIDkxNzg3NSwgCisgICAgODY2NCwgOTY5NywgMzYwNiwgODM0NDYsIDk4Mzk3OCwgOTE3ODc0LCA2NDgxNSwgMTA2MywgMTE5MDg4LCA2NzMxMiwgCisgICAgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTAwODMzLCAxMjAyNTcsIDExOTIwMiwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIAorICAgIDgzNDM4LCAxMjAyNTUsIDEwMTEwMSwgMTIzMDEsIDY3ODM2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDY2NjAyLCAKKyAgICA2Njc4OCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDY2NzkzLCA4NjA4LCA0Mjc4OSwgCisgICAgNzA4NjgsIDgzNDM2LCA5ODM0ODAsIDcxOTA2LCAxMTMwNywgNjY3MDcsIDY3MzAxLCA2NzMwMCwgMTE3NDUsIDc5MTksIAorICAgIDY3MzA0LCAxNjQxLCAxMjY1MjMsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgCisgICAgNjczMTAsIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgCisgICAgMTAwNjgsIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgCisgICAgOTE3OTc0LCA5NDM2LCAyNTk5LCA5ODM3NDcsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCAKKyAgICA1NjIyLCAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCAKKyAgICA2NzMyNCwgMjQzNSwgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgCisgICAgMTIwNDQ3LCAzNzY4LCA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgCisgICAgNDU2NCwgMTAwNDcwLCA3NDYyMywgNzQyNzEsIDczNzUzLCA4Mzc0LCAxMjcyMDEsIDAsIDY4MjksIDUyMjUsIDY2OTAxLCAKKyAgICAxMjczODUsIDAsIDAsIDExOTYxNSwgNjczMTksIDY3MzE4LCAzMTYyLCA0MzUwNywgMTE3NzEsIDY3MzIyLCA2NzMyMSwgCisgICAgNjczMjAsIDQyNjE0LCA1MzUzLCA1NjI1LCA3NDE3OSwgNjczMTUsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIAorICAgIDY0Mjc3LCA2OTk0MiwgNjk1MiwgNjczMjksIDY3MzI4LCA2NzMyNywgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCAKKyAgICA1NjMyLCAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCAKKyAgICA0NzcyLCAyNDAwLCA1NjI3LCA3NDM2NCwgNjczMzAsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMTEzNjkzLCAyMDMsIAorICAgIDc0MzY1LCAwLCAwLCA2OTk4NSwgNzgzNTAsIDEwMTA2NSwgNjQzNzgsIDQyMDU0LCAxMjg1NzUsIDE5NDk5MywgNTU0LCAKKyAgICA4MzQyMiwgMTEzNTgsIDcxMTcyLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjUxMTQsIDczODkxLCA4MzQyMywgODMwMTksIAorICAgIDU2OTQsIDc2ODksIDY2Nzg0LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAxMjA5NjIsIDkzMDI5LCA2OTc2NCwgMCwgCisgICAgMTIwNjI1LCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgOTE3NTYxLCA2Nzc1MywgNDM2NTEsIDEyNzgwMSwgNjgxMTgsIAorICAgIDY4MDkzLCAxMTI5LCA3Mjg0NiwgMTAwNzA3LCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDc1MDU4LCA2NTI1NSwgCisgICAgOTM5OTIsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQxMzYsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAKKyAgICA5ODM2MTIsIDc3NTYsIDEyMzQyLCAxMjA2OTcsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgCisgICAgODE0NSwgMTE2OCwgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIAorICAgIDY4MTIxLCA5MTc4NTAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAxMjcxOTUsIDc4ODAzLCAxMDA0MzksIAorICAgIDEyOTE3NiwgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIAorICAgIDY0MDUxLCA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzNDgxLCAxMTk1ODksIDE5NjksIAorICAgIDIzODQsIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDcyODIwLCA4NzY2LCA0Mzg2NCwgNzI4MjQsIDU4NTQsIDEyNTAwMCwgCisgICAgMTA1ODMsIDAsIDExOTk4OSwgNzI4MTksIDEwNDE2LCA2ODA3MCwgMzg3MiwgODM0MjQsIDEyNzM5OSwgODQyOSwgMTIxMjMwLCAKKyAgICAxMTg4MDYsIDI4MzgsIDY0MjksIDEyMTA3NywgODM0MjYsIDcyODM1LCAxMDA0MjAsIDAsIDE5NDYyMCwgOTQwMDUsIAorICAgIDExMDk2LCA4MzQyMCwgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCA2NzgxOSwgCisgICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKKyAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCisgICAgODU1NiwgOTE3OTc1LCA5NjU5LCAwLCAxMDA3MzYsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAxMjUwMTUsIAorICAgIDY4Mjg4LCAxMjg5NTksIDkxNzk3NiwgNzE0MzcsIDc4ODg2LCA5ODMyODgsIDk4MzQ5NiwgNzQyMjksIDY2NTkzLCA2NDM4LCAKKyAgICA4MzM2NCwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAxMTg5MTUsIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAKKyAgICAxMTk5MTEsIDEyODY5NCwgMTI4MDQyLCAxMjY1NDUsIDY2NTg5LCA5ODM4NzUsIDYzMzQsIDEyODM2OSwgOTE3OTE5LCAKKyAgICAxOTkzNywgOTE3NzkzLCAxMzIyLCA5MjM1OSwgNTY3NSwgMjU0LCAxMjQ5NjQsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgCisgICAgNjQwMDMsIDU3MTYsIDQyMzEyLCAxMjAwOTAsIDEwMDU1MiwgNjk3MiwgNDI4MjYsIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCAKKyAgICA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODQzNywgNjc2ODcsIDY1NDI5LCA5NTE1LCA0NDM1LCAKKyAgICA5ODMzNjcsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgCisgICAgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgNzE0MjgsIDEyMDc0OCwgMzE0MCwgMTI3Mjc2LCA3OTYwLCAKKyAgICA0MzI3MSwgMTIxMDk5LCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDY3MjU0LCA2NzI1MywgNzY5OSwgCisgICAgMTIzOTMsIDY3MjU3LCAwLCA2NzI1NiwgNjcyNTUsIDgyMjMsIDAsIDQyNjEsIDc4Nzg0LCAxMjA5MTAsIDc0MzA4LCAKKyAgICA5ODM4MjcsIDExMzcxMiwgNjcxNTMsIDEyNTI1MiwgNzI3NDQsIDQzNDE5LCA3Mjc0OCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAKKyAgICA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAxMjgxNzEsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCA5MTc4NjUsIDEyNTE0MiwgCisgICAgNjgwMjEsIDY1OTE5LCAxMjcxMDIsIDY2OTUsIDcyMCwgMzI0LCAwLCAxMjkwMzUsIDQzNDA2LCAxMjUyNjksIDE0NjQsIAorICAgIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgNjgwODIsIDY0NDg4LCAxMjg5NzcsIDEyMDk1MSwgMzQyMCwgNzQ3ODcsIDAsIAorICAgIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCA3ODg2MSwgMTE5MTM0LCAKKyAgICAxMjAyNzQsIDY3MTUyLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAxMjA5MjMsIDM5OTUsIDY4MzYwLCA2NTYwOCwgCisgICAgMzcxNCwgOTIxOTAsIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgNDMzMDEsIDAsIAorICAgIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIDExOTY0LCAxMjEyNjgsIDEyODAxNCwgOTIxNzMsIDEyMDcxMCwgNjg0NTUsIAorICAgIDQyODYzLCA3MzgzOSwgMTE5OTI5LCAwLCA2NzcwMCwgOTE3ODEyLCAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgMCwgCisgICAgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMTI4MjA4LCAxNjc0LCA5MTc1ODEsIDU4MjMsIDEyODYyNSwgMTIyODAsIDcwMzY3LCAKKyAgICA1NDAsIDc0NTY0LCAxMTkwMTcsIDY2NDIyLCA4NDMyLCA3ODg3MywgMTEwNzMsIDAsIDY0MzE2LCAwLCAxMjEwMDEsIDgyMCwgCiAgICAgNDE3NDEsIDk4MzQ3NywgMTIwNjY3LCAxMjQ5ODEsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgCiAgICAgNjIyNiwgMzUzLCAxMjM5NiwgMTIxMTc2LCAxMTk2MTIsIDY0NzQyLCAxMjg2ODIsIDc4ODc5LCA5ODM0NzgsIDEyNzkzOCwgCi0gICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCA5ODMxNDIsIAotICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgCi0gICAgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgMTI4NjA2LCAwLCAKLSAgICAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIDEyMDI3NCwgMTMwNzUsIAotICAgIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgCi0gICAgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCAKLSAgICA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgCi0gICAgOTIzNjQsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIAotICAgIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDEyMDg3MCwgNjA3LCAwLCA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgCi0gICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDEyOTE0OSwgNzg2MzksIDQwOTc1LCAKLSAgICA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCAxMjEzODYsIDkyOTQ1LCAxMjgwMjAsIDExOTgwOSwgMCwgNjY0NDQsIAotICAgIDEwNTM4LCAxMjA4MTAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMTI5MTMwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgCi0gICAgMCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIAotICAgIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgCi0gICAgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIAotICAgIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIAotICAgIDk4NTgsIDYwMzcsIDk4MzQ2NSwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIAotICAgIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMCwgNDMzMjEsIDY1NjA2LCAxMjcwNzEsIDQxMDMyLCA0MjM4OCwgMCwgCi0gICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAKLSAgICAyMjIzLCA2NDk1MiwgMTA0MDIsIDEyODM1OCwgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDAsIAotICAgIDY3MTQsIDEwMDgzLCAxMjcwNjksIDEyMTAxOSwgNzgzNjcsIDY5OTc2LCAwLCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAKLSAgICAxMDcwNCwgNjUwMzAsIDQ3ODcsIDEyOTAzMSwgNzQ4MjksIDAsIDY1NDIzLCAxMjEzMDYsIDEyODExOCwgOTU3MCwgNTUyNjAsIAotICAgIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgOTE3NjI0LCA0Mzc0MCwgMTIxMTYzLCA0MDk2NiwgMTIwMDA5LCAKLSAgICAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDcxNDMzLCA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgCi0gICAgNDE5NTQsIDkxNzYxNSwgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCAKLSAgICA0MzMyMCwgMTE5MTU5LCA3Mzk1NSwgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCAKLSAgICA2NjI1NSwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgCi0gICAgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIAotICAgIDg2MTYsIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDk4MzY5MSwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgCi0gICAgMjM1OCwgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIAotICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIAotICAgIDk4MzQ1NCwgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCA3MTQ2NywgNDEwNTAsIDQxNDczLCAKKyAgICAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDE5NTA1OCwgCisgICAgMTE5NSwgNjQ4OTgsIDc5MjQsIDExOTg3MCwgNDExNTEsIDIwMTAsIDcxNDMwLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAKKyAgICAxMjA3MTIsIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIAorICAgIDEyODYwNiwgMCwgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAKKyAgICAxMTk4NjksIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDcyNzYyLCAxMTg5MDEsIAorICAgIDY4NjM3LCA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgCisgICAgNjU2MDQsIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAKKyAgICAxMjcwOSwgNjk4NiwgNjY3NjEsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCAKKyAgICA3MzgwNiwgMTAyNTQsIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDEyMDg3MCwgNjA3LCA5ODM2MjEsIAorICAgIDY4MTgyLCAxMjg4NDYsIDEyOTIzLCAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgCisgICAgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIDU4NDAsIDQyODM4LCA3NDk4NywgNDA5NzgsIDc4MTc0LCA5Mjk0NSwgMTI4MDIwLCAKKyAgICAxMTk4MDksIDEyMDg5MSwgNjY0NDQsIDEwNTM4LCAxMjA4MTAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMTI5MDkxLCA5MTc4MTUsIAorICAgIDM1MjUsIDY4MjQsIDExODg4NiwgOTgzNTgyLCAxMTk4MzgsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgCisgICAgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCAKKyAgICA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCA3Mjc2MCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAKKyAgICAxMTM1MCwgNTYxNywgNzI5OSwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgNDEzNDQsIDEzMzgsIDEyMDU4MSwgCisgICAgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCA5ODU4LCA2MDM3LCAxMDAzNzYsIDM5NzQsIDc4MjEzLCAKKyAgICAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDEwMDM3NCwgCisgICAgNDMzMjEsIDY1NjA2LCAxMjcwNzEsIDQxMDMyLCA0MjM4OCwgMTAwNjE5LCA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAKKyAgICAxMTkxMDUsIDkxNzk2OSwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMTkyMTMsIAorICAgIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAxMjg1MDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAorICAgIDEyMTAxOSwgNzgzNjcsIDY5OTc2LCA5ODM2NTUsIDQzODcyLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgCisgICAgNDc4NywgMTIxMjc5LCA3NDgyOSwgMCwgNjU0MjMsIDc0OTg4LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCA5NTI1LCAyNjg5LCAKKyAgICA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDY2NzQwLCA0Mzc0MCwgMTIxMTYzLCA0MDk2NiwgMTIwMDA5LCAxMzI4NiwgMzk5OCwgCisgICAgNDI1OTgsIDQyNTk2LCA1MDMsIDcxNDMzLCA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgNDE5NTQsIAorICAgIDkxNzYxNSwgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCA0MzMyMCwgCisgICAgNzI3NTYsIDY2NzU3LCA5MjMxNSwgNjQ2OCwgNDE5NzYsIDk3MjAsIDc0OTY0LCAxMTE3OSwgNDE5NzAsIDY2MjU1LCA1ODM2LCAKKyAgICAxMjM1OCwgMTI5NDIxLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIDQxNDg4LCAKKyAgICAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCA4NjE2LCAKKyAgICA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCAxMjA3MzQsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIDIzNTgsIAorICAgIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAxOTQ5MDMsIAorICAgIDYzNjgsIDcyODM0LCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCA5ODM0NTQsIAorICAgIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMTI5MzYyLCA3MTQ2NywgNDEwNTAsIDg4NzIsIAogICAgIDEwNDY2LCAxMzA5OSwgNzE0NDUsIDcwMzcxLCAxMjA4OTcsIDY0MzUsIDc0MzMxLCAxMTM2MiwgMTI4OTczLCA4MzA4OCwgCiAgICAgNjUzODIsIDkyNzcwLCA0MTQyMCwgODMwODMsIDM2MjUsIDc0OTE1LCA0MTQwOSwgNzE0NDEsIDY5NjM5LCAyMDQxLCA5MTc4LCAKLSAgICA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCA3NDkyNCwgMCwgMTI4NTU3LCA0MTQyNCwgOTE3NTk4LCAxMjA1NDYsIDAsIAotICAgIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDAsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAwLCAxMjc1MzgsIDAsIDc4MjUxLCAKLSAgICAxMjQ5NDMsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDY4ODUwLCA3NDkwMSwgMCwgMTI3OTUxLCA5MjM4OCwgNjk2NDksIAotICAgIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCAKLSAgICA2NDUwNCwgMTk5MjgsIDAsIDEyODQxMSwgMzkxNywgOTgzMTE5LCAxMTczMiwgMCwgOTgzMTgwLCA0MTQ0OCwgNDE0NjEsIAotICAgIDEyODgyMywgMCwgMTEzNzIxLCAxMTM3NTgsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAotICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDgzMjkzLCAxMjEwMDcsIDkwOTQsIDk4MzkyNiwgMTE3NTgsIDY4NDI1LCA3MTg4NiwgCi0gICAgMTA2NCwgNDI0NjcsIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMTEzNjgyLCA3ODYyLCA2NDU1MSwgMTMyMjQsIAotICAgIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA3MTQzNCwgMjkxMSwgODMwNzQsIAotICAgIDQxMTc4LCA1NDI3LCA2NDgyMywgODMwNjIsIDgzMDY2LCAzNzg3LCA0MTE3NCwgODMwNTUsIDQxNDU4LCA2NzE0NywgCi0gICAgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgNjk5MjMsIDYwNzQsIDk2MTgsIDY4MDU2LCAKLSAgICAxMjE0ODAsIDQzNDQwLCA3NDUzOSwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgCi0gICAgMTU5OSwgMTEzMzMsIDgzMTM5LCA2NzAzLCA4NTEzLCA4MzEzNCwgMTYxMywgODMxMzYsIDY4NDU2LCAxMjU5OCwgODMxMzEsIAotICAgIDgzMTMyLCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA2NzE0NCwgOTkwNSwgCi0gICAgODMxNDUsIDY1NzMwLCA4MzE0NywgMTIwMzc0LCA4NDI3LCA4MzE0MiwgNTUyNDYsIDEyMDM3NiwgNDI4OTUsIDExNDk3LCAKLSAgICA2NDY4NywgNzQwMDgsIDQyNTkyLCAzODcxLCA5ODM1ODQsIDEyODMwNSwgOTExMSwgNTc0MSwgODMzMjUsIDEyMDk4NywgCi0gICAgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAwLCAxMjAzNjgsIDEyODg1NSwgMTE2NDgsIDgzMTI2LCA4MzEyNywgODMxMjgsIAotICAgIDQxNTg3LCA3MDM5MSwgODMxMjMsIDcxMTA4LCA0MjExMywgOTgzNTg4LCAxMjcxNTUsIDEyMTcyLCA4MzEyMSwgNzE0NDMsIAotICAgIDY1Mjk4LCA2NTcyMywgNjgyODksIDczODcxLCA2NTcyNCwgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgCi0gICAgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCA5ODMxMTAsIDc4NzUsIDk4MzY2OSwgNDE1OTgsIDM5OTMsIAotICAgIDEyMTI2OSwgMTU0NSwgNDA5NzEsIDUzNiwgMTI3MDc1LCA0MzAyOSwgMCwgMTIxMDAwLCA2NTE3MywgNjUyODYsIDAsIAotICAgIDcwMzMxLCAxOTUwMTIsIDAsIDk0MDY1LCAwLCA0MTM3NSwgNTQwMiwgODMwMzUsIDEyODE5MiwgMTY4NywgMTIwNTAzLCAKLSAgICA5MTc4MTcsIDAsIDc4MTk0LCA2NDMyNiwgNDA5NjksIDEwNTI2LCA3Mzc0NywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCAKLSAgICA3ODc1NiwgMTI3MTA4LCA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCA5MTc4NjcsIDAsIDgyNjYsIAotICAgIDQxMDA2LCA2NTcyMiwgODMwNDEsIDEwNzEwLCA3NDA0NSwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgODMzMTMsIAotICAgIDEyODc3OCwgNzE4ODksIDY3ODU3LCAxMjA2ODcsIDAsIDkyOTU4LCAxMTc1NSwgNjYzMDUsIDY4MzMyLCAwLCAxMDkxNywgCi0gICAgOTM5NzksIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDgzMTE5LCAKLSAgICA4MzEyMCwgMTE0MTMsIDEyNjU4MywgODMxMTUsIDUyODMsIDE1ODYsIDQ5NzgsIDY4MDUwLCAxOTg0LCAxMTgzMCwgNDM4MTksIAotICAgIDkyMjkzLCA0MDk4NCwgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCA5ODMwOTMsIDAsIAotICAgIDY4MzEzLCA5MjM3LCA5Mzg1LCA0MTY0OCwgMCwgMTI4OTUzLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIAotICAgIDQxMjg3LCA5MjYxMCwgMCwgNzE5MTcsIDQyMjE5LCA2ODA4NiwgMTIwMzI3LCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgCi0gICAgMTIwODIzLCAxMjY1NTMsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIAotICAgIDExNDUxLCA4Mjk5NSwgNzg4NTUsIDQyNjMxLCAyMzU5LCA3MTg5MCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgCi0gICAgMTMxMzMsIDY0MzY4LCAxMjcyNzAsIDEyMDkyNSwgNjYyNzIsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAKLSAgICAxMjgyMzgsIDE2MTQsIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDEyMDg3MSwgNDI4LCA5NjIwLCAxNDY2LCAKLSAgICA3ODExMiwgMTA5ODIsIDExMzc4NSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAxMjc5OTMsIDAsIDAsIAotICAgIDU4MDQsIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgNzAxNjcsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMTI1MDk3LCAxMjEyOTAsIAotICAgIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzA0NDMsIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDEyODYxNiwgMTI4NTEyLCAKLSAgICAxMjg2MjksIDQ0MDcsIDc0NjQ4LCA2NTgwOSwgMTE4MzcsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDEyMDMzNCwgCi0gICAgMTI2NzUsIDEyNjU5LCA3NDYzNCwgNDIzNjMsIDEyMDYyNCwgNjgwNzcsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIAotICAgIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMDI5NiwgMTE5MTU4LCA3MTQwLCAxMDk3NywgMTI3Mzc4LCAKLSAgICA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAxMjY0NzcsIDEyMDYzNywgNDI0MTksIAotICAgIDY0Nzk5LCA0MjA0NywgMCwgMTk0ODIwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgOTgzNzYwLCA3NDMwMCwgMCwgCi0gICAgNjgwODcsIDc0ODQwLCAxMjY0NzQsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCA5NjgzLCA0MzQ4NiwgCi0gICAgNzQzNDQsIDAsIDI1MzYsIDk4Mzk0MSwgNjYzMzAsIDEyMTIzOCwgMCwgMCwgMCwgMCwgMCwgMTk0ODMwLCA2NjMxNywgCi0gICAgNjk5NDUsIDY2MzE1LCAyMTA2LCA2NzgwOSwgMTEyNzMsIDEyMDk4NiwgNDMwMDQsIDc1NDEsIDgyOTg4LCAwLCA5NjEsIAotICAgIDY0MzA3LCA2NjMyNCwgNjQ5MDYsIDEyNTA4MCwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCA5ODMxMzAsIDg5MSwgCi0gICAgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMTIwODc4LCAwLCAwLCAKLSAgICAxOTQ4MjYsIDkyNjg4LCAzNTY2LCAyMzIyLCAxMjAzNzEsIDcwODMxLCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIAotICAgIDM1NDcsIDAsIDAsIDExMzc0NiwgOTgzNDAwLCA0MzIxNiwgNjA4OSwgNzg2ODIsIDY4NDkwLCAxMjA1NzgsIDQxNzAsIAotICAgIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCA3NDQsIDkyODgzLCAxMTM3MzksIDAsIDY1ODIzLCAKLSAgICAxMjc4MjYsIDExMTgyLCAzNTUxLCA5MjkzOCwgOTgzODkxLCA0NjIzLCA1NTI2OCwgMTI4NzM4LCA0NTk4LCA5ODMxNjIsIAotICAgIDY1MTM2LCAxMjcxMzYsIDAsIDEyODE2OSwgMTA4NTEsIDEyMDg3NiwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAKLSAgICA3NDU3OSwgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgCi0gICAgMTIwNTgwLCA5ODM2OTYsIDEyNTEzNSwgNjE3NywgOTAyMCwgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgCi0gICAgMTI4MDI3LCA2NzY3MywgMjIxNCwgODc1NCwgMTI3MDUxLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDExOTExNCwgCi0gICAgOTEzNiwgNjY4ODksIDQ0MDEsIDQxMjgwLCA3MDgwMSwgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTI4MzI3LCAyMzE4LCAKLSAgICA5ODMxODMsIDY2MzYxLCA4MTk4LCA2NTYyNiwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNDM5MzEsIDEyMDgyNywgNDM5MzAsIAotICAgIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMTI4NDgyLCAKLSAgICAxMjg0MDMsIDExODk0OSwgMTA4NzQsIDY1NTA1LCAxMjAwMDIsIDEyOTE1MSwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgCi0gICAgNDIwNTIsIDAsIDY3MjY2LCA2NzY1MSwgMTIxMTA0LCA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgOTE3NjE3LCAwLCAwLCAKLSAgICA3MDA4OCwgNzQxNDgsIDAsIDcwNDE5LCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDY2NDA0LCAKLSAgICA5NDA5NiwgNzQ0MjIsIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMTM2ODYsIDc1MDMzLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgCi0gICAgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMTIxNDU2LCAzNTEyLCAxMTk2MzMsIDkyOTY1LCA4MTAzLCA3ODE0MCwgMTIwODQ3LCAKLSAgICA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMTI5MDU1LCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCA3MTMxNCwgMCwgNzgxMDksIAotICAgIDEyOTE3NywgMTk5NDIsIDk4MzI0NCwgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMCwgCi0gICAgOTQwNjQsIDk4MzA3MSwgMTI4NjUyLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAzNTk5LCAKLSAgICAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIAotICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgNzQ5MjcsIDQyMDQ2LCA3NDE1NywgNDAzNiwgMTI2NDgxLCAwLCAKLSAgICAxMjgyMTMsIDE5NDg2MSwgODMzNTUsIDExOTU0LCA3MDM0OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCA5MjcyMiwgCi0gICAgMCwgMCwgMTI1MTE3LCAwLCA5MTc1NDIsIDczODEyLCA4MzA1MywgNjUzOSwgOTI5NDgsIDEyNjYwNywgMTIwNzAyLCAKLSAgICA5MjM5MCwgMCwgMTIwNDkyLCA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgNDI5LCA5MTc5NzksIAotICAgIDc4ODkxLCAwLCAxOTQ4NDgsIDY1NzkyLCAxMjg0MDgsIDgzMjgyLCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxMjg5NzAsIAotICAgIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgCi0gICAgNjUxMjYsIDY4MjUzLCAxMjcwMDQsIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgODA1MCwgMCwgNTAxNSwgMCwgCi0gICAgMTE5MTc0LCA0MjU5MCwgNzAzNTQsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCAKLSAgICA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDEyMTIwOCwgMCwgNjgyMjQsIDEyMDg3MiwgNDE3NjQsIDc5NTcsIAotICAgIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDM1NTksIDk4MzkxOCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgCi0gICAgNzA4NTMsIDExOTAyOCwgMCwgMTI4MTIyLCAxMjg0NDIsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIDE5NDg4NCwgNjgzMjIsIAotICAgIDcwMDc5LCA4NDYxLCA2NzcyMSwgMTIxNTMsIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCAKLSAgICA0Mzg0NywgMCwgNjgxLCA5ODMyNTQsIDcwMywgMTI3NTE4LCAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCAKLSAgICA5MjI4OCwgNzA1MTQsIDk4MzkwMCwgODMxNzUsIDcxNDM2LCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAxMjg5NjgsIDkxNzk4OSwgCi0gICAgNjU5MjgsIDAsIDEyMTM2NywgNjUwMjEsIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgCi0gICAgNDI3MTEsIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgOTg5NSwgMTY1NSwgNzAxMzEsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIAotICAgIDY2ODg4LCAwLCAwLCA3MDUxMywgMTAwMzksIDEyMDQyNiwgNTYyNiwgNTYyMywgNTcxNywgNTc3NiwgNDM0ODgsIDgzNDk3LCAKLSAgICA2Njg4NSwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIDAsIDEyMDExMSwgNjc4NDgsIDEyODEyOCwgOTgzNTk1LCAKLSAgICA5ODM0NzIsIDg4ODcsIDEyNzUyMSwgNzI5NSwgMTEwMzEsIDk4MzMzNiwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAxMDQxMiwgCi0gICAgODc1NSwgMTE5MTUyLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCAKLSAgICA2ODYsIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCi0gICAgNjUxMTgsIDY4MDI5LCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMTI4OTAyLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjQ4LCAKLSAgICA2ODA0NCwgNjU0NTUsIDAsIDc0MzI4LCAwLCA3NDU2MSwgMTIwNzYzLCAxMjg4NiwgMTIwOTUyLCA2NjYyNCwgMTI2NTc4LCAKLSAgICA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzEyMTAsIDc4NjAyLCAxMTg5NDUsIDk5ODQsIDczODUxLCAzMDEwLCAKLSAgICA2NDQxLCA3MDM0OSwgMTQ1OCwgNDE0NzUsIDcyNDI5LCA5Mzk3NSwgMTI3OTEwLCAxMTQ3OSwgMTIxMzU1LCAxMjAzNTYsIAotICAgIDYzNTAsIDEyODY0LCA2OTY3NCwgNzE0NzMsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyNDk0NiwgNDA1MiwgCi0gICAgMTEzNjczLCA3NjI2LCAwLCAxMjA5MDcsIDEwNDUsIDAsIDU2MzEsIDQxMTEzLCAxMjc1NDQsIDAsIDQzNzA3LCA3NDEyNywgCi0gICAgMCwgOTgzNzE4LCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAKLSAgICAxMjcyNzcsIDQyNjI1LCA3MDMyNSwgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIDAsIDE3NzQsIDE1MjMsIDEyMTMzMCwgCi0gICAgNjgwNTksIDQxNDQ1LCA3ODIzNiwgMTEyMDcsIDg1NjcsIDQxNDQyLCAzOTg4LCA3NDg0MywgNzgyMzcsIDExODkxMCwgMCwgCi0gICAgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAxMjEyNzIsIDAsIDQzNDQ2LCAwLCA2NjUxMywgNjI1NiwgCi0gICAgOTE3ODA3LCA1NzksIDU1MjE4LCAxMDIwNiwgNzgxOTUsIDYzNzUsIDI2NzMsIDk4Mzg4NiwgMTE4MTQsIDAsIDQ0ODgsIAotICAgIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAKLSAgICAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMTI0OTk4LCA2MTQsIDcwMzYxLCAKLSAgICAxMjcyMTUsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI3MjcxLCAxMjczMjMsIDAsIDQzMTIxLCAxMjcyMTEsIDEyODM2NiwgCi0gICAgOTI1MTMsIDEwNTAsIDc1NDksIDEyMTI2MCwgODI5OTQsIDkzMTQsIDcwMzY1LCA5Mjg5OCwgNjgwMzksIDEyNzA2MSwgCi0gICAgMTAwNTcsIDcwNDM0LCAxMjczMTMsIDEyODU3NywgNjY1MDQsIDEyMDk2MywgODI5OTIsIDIzMDcsIDEyODQ1NiwgNjQzMzMsIAotICAgIDEyNzMxMiwgMTI4MjMwLCA3Mzg3MywgOTgzNzEwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDcwNDQ2LCAxMDM2MCwgCi0gICAgNjc0NiwgMTIwNDczLCA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDEyNzc4NSwgOTk1NywgMTI4Mjg1LCAKLSAgICA2NjQ0NywgODA0NiwgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMTIwNDI0LCAxNTIxLCAKLSAgICA5ODk2LCA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAxMjUyNywgNjg3MzcsIDc5NzAsIDEyNTA3MywgMTI4NjYwLCAwLCA2NTc2OSwgCi0gICAgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIDEyMTQyOSwgMCwgNTIzNywgNjk3MTQsIDY4NzU2LCAxMDEwMywgNTI0NywgCi0gICAgNDc2OSwgMTI5MzAyLCAxMTg5NzcsIDEyODczLCAyMjgzLCA5MjkzMSwgMCwgMzAwOCwgNDg5NiwgMTI4MTAyLCAxMjA4NywgCi0gICAgMCwgNTUyMzEsIDQxMTAzLCA5MjI1NiwgNjQ1NjUsIDQ3NzMsIDEyMDg0NiwgNzg1NDksIDcwMDc0LCA0NzcwLCA2Njg5MSwgCi0gICAgOTE3NTY3LCA4NzMxLCA2NTM3OCwgNjY5MTEsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAxMjY2MDAsIDQ3NzQsIDMwMTksIAotICAgIDk5OTcsIDEyODM0LCAwLCA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCA3ODU1NiwgMCwgMTIxMzMyLCA3NDc3NiwgNDI4MSwgCi0gICAgNDc2OCwgMTIwNTcyLCA0MTUzNSwgNDA5OSwgOTAxNywgNjk5OTMsIDk4MzY5MiwgNzgwOTUsIDIyMjUsIDc4MDk2LCAKLSAgICAxMTg5NDYsIDEyMTA5NywgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDExMzc2NCwgNjY4NzAsIDIxMzQsIDAsIAotICAgIDEwMTE2LCA5ODc3LCA5MjMyOSwgMTI4OTYwLCAwLCA3MDk1LCA4Mzc5LCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIAotICAgIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIDE5NTAwMywgOTk2MiwgODI5OTAsIDEyMjIzLCAxMjg0ODUsIDkyNDMwLCAKLSAgICAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgODMzODksIDc0NDE5LCAwLCAxOTQ2ODYsIAotICAgIDU1MjgzLCAwLCA3MDM2MywgNzQ0MzcsIDExNTYsIDg3NDAsIDgzMjk1LCAzNzgyLCA2NDMzMSwgMCwgNDEzNzAsIDEwMTQsIAotICAgIDgyNjEsIDEyMDk1NiwgOTE3NTk2LCAxMDgzNSwgOTE3OTY2LCA2NTUzNiwgODMyOTQsIDEyMDQ2MywgMTI1MDUxLCA3NzAyLCAKLSAgICAxMTg4MjQsIDEyODk3NiwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIAotICAgIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDc1MDE4LCAxMjg1NzYsIDc0OTIzLCA0MjI1NywgNTY5NiwgOTI2NzcsIAotICAgIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgNzAxODMsIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgCi0gICAgMTI4NzE5LCAxNDI2LCA2ODIxNywgOTgzNjE0LCA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCA2NzQwMywgNzgwNjcsIAotICAgIDQzODU5LCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgCi0gICAgNjQ3MTIsIDEwNzQ0LCA3ODg4NywgOTkwLCA1NjQ3LCAwLCA3Mzg3LCA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAKLSAgICAxMjg3OSwgMTEwMTgsIDEyODM2MiwgMzk0NSwgOTI1ODksIDk4MzQ2NiwgMTk0OTg5LCA3ODg4MywgMCwgNzgyMTIsIAotICAgIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIDY0NzQ4LCAxMjA5MjAsIDc4NzMzLCAxMDIwNSwgCi0gICAgMzU0NSwgOTgzNTg1LCA2OTg0LCAxMjgwMDgsIDc0MDUxLCAxMjg5MDEsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDEyODE3MywgCi0gICAgMTI1MDM3LCAwLCA5OTExLCAwLCA2NTAyMCwgMTAwOTcsIDExOTE2NiwgMTI3MTQ1LCA5ODM2NjIsIDExODgzNiwgOTgzNzQ4LCAKLSAgICA3ODIwOCwgMTE0MCwgNzg0MjYsIDAsIDEwMTU5LCAwLCAwLCA4MTI4LCAxMjg2NDQsIDY4MzI2LCAxOTQ5MTEsIDE4MTUsIAotICAgIDE5OTEwLCA4OTAsIDEyNDkzNSwgMzI2NywgOTIyOTEsIDAsIDEwMTIzLCAxMjEzOTgsIDQ0MTAsIDEwNDEsIDEwNTc2LCAKLSAgICA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgOTgzNzQ2LCAxMjgzNDcsIDAsIDAsIDEyODA5OCwgMTk5MzgsIDY1OTA2LCAKLSAgICAxMjc4MTksIDkxNzgxMSwgMCwgMzI5OCwgNTM3NSwgMTAxNDIsIDAsIDgyMTUsIDkyNjMzLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIAotICAgIDk4MzE0NywgNjk4OTksIDE5NDkzOCwgMCwgMTIxNDI2LCA0MTM4MiwgOTE3OTI3LCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKLSAgICA1MjcsIDEyMTE3NCwgMTEzNzgyLCA3ODQ2OSwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDAsIDAsIDEwMDcyLCAwLCA0MjY5NSwgCi0gICAgMjMyOSwgNDIyNTAsIDAsIDExMTg3LCA2OTY2NywgMTIyNDUsIDE1NjgsIDk0MDMzLCA4MzQ2MCwgMCwgMTEzNzA1LCAKLSAgICA5MTc5MTAsIDExMjAxLCA5MjcwOCwgNzQ3NjksIDEyNjQ3MCwgNjc2ODAsIDkwNjksIDYxNDQsIDAsIDExOTg0MCwgNzM4MjIsIAotICAgIDAsIDEyODAxMCwgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgNjM2NCwgOTU2LCAKLSAgICAxMTM3OTIsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIDczNzM0LCAwLCAwLCA5ODM3MzksIDY2NDQ5LCAxMzI2MywgNzQyODEsIAotICAgIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAxMjA1NjQsIDAsIDYzODg1LCAxMjcyNTEsIDEwNDQsIDQxMjc2LCAxMjgzNjMsIDAsIAotICAgIDAsIDQyMDY4LCAxMTc5NSwgMTI0OTg1LCAwLCAxMjcyMDIsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgMTE4MjksIAotICAgIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDEyMDc2MSwgNzA5OCwgCi0gICAgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAxMjcyMzksIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCAKLSAgICA2NjU3MSwgNzg0NzIsIDcxMjA3LCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzMzMCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgCi0gICAgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAKLSAgICAwLCA2NDQ3NywgOTE3ODUzLCA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDkyOTc3LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIAotICAgIDc0MzQ5LCA2NjQ3OSwgNjc2ODksIDY2ODcxLCA5MTc4NDUsIDcwMzI3LCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgCi0gICAgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDQzNTE0LCAxMjEzMCwgOTgzMzA4LCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgCi0gICAgMTI3ODUwLCA5ODMxNDQsIDEyNzgyOCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgODMzNDUsIDc1MDY1LCAwLCA2MzU4LCAKLSAgICA2MzYxLCAxOTI2LCA2MzU2LCA5MjYyNywgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAxMjc3NzMsIAotICAgIDQzNjg1LCA3NDMwNywgMCwgNDI5MTAsIDgzMzAxLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAxMjg2MjEsIDEyMDQxMywgCi0gICAgOTIxOTIsIDEyMTQ1NCwgNjU4OTQsIDE5NDY5NCwgMCwgNjQyOTYsIDk4MzY4MSwgOTgzNjQ0LCAxOTQ5NTksIDExOTE4NywgCi0gICAgMjEzNSwgMTE4MzYsIDAsIDAsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDcwMzg0LCAxMjkxMTMsIDQzODU0LCAKLSAgICA3MTkxMywgNTU3OCwgMTE4NDAsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCA3ODYyMCwgMTIxMTcxLCAKLSAgICA2ODgzMywgOTIyNTQsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgCi0gICAgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIDY1NTEyLCA2ODc3NCwgNjU3MDIsIDY4NzcwLCAxMjA4MDEsIDY1MjUxLCAKLSAgICA2ODIyOCwgNjU3MTAsIDEyODM5OSwgMTI4NDI5LCA2NzY3MiwgNjg3ODMsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAKLSAgICAxMDk2NiwgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgCi0gICAgMTA4NDQsIDEyMTAxNiwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMTE5OTk4LCAxMjEwNzUsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIAotICAgIDExOTk5OSwgMCwgNzM5NSwgMTI3NzgzLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDE5NDY0MCwgMzAxNSwgCisgICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDkxNzc3NywgMTI4NTU3LCA0MTQyNCwgMTE5NTYzLCAxMjA1NDYsIAorICAgIDk4Mzg4OCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMTI4MjYxLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMTI4OTMyLCAKKyAgICAxMjc1MzgsIDExMzc2NywgNzgyNTEsIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAKKyAgICAxMjEwMDUsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIAorICAgIDkwMywgMTk1MDkxLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDEyODQxMSwgMzkxNywgCisgICAgNzgxODUsIDExNzMyLCAxMjg1MTIsIDcyNzk3LCA0MTQ0OCwgNDE0NjEsIDEyODgyMywgMCwgMTEzNzIxLCAxMTM3NTgsIAorICAgIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDgzMjkzLCAKKyAgICAxMjEwMDcsIDkwOTQsIDkxNzc5NCwgMTE3NTgsIDY4NDI1LCA3MTg4NiwgMTA2NCwgNDI0NjcsIDEyODA0NCwgMTAxMTUsIAorICAgIDE5OTI0LCA5MjcxMSwgMTEzNjgyLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgCisgICAgNzg2MTgsIDY5NzkzLCAxODc4LCAxMjg2NDEsIDcxNDM0LCAyOTExLCA3Mjc1OCwgNDExNzgsIDU0MjcsIDY0ODIzLCAKKyAgICA3ODYxNSwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCA0MTQ2MywgNDI0MTMsIDExMjkyLCAKKyAgICAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAKKyAgICAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAxNTk5LCAxMTMzMywgODMxMzksIAorICAgIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgODMxMzIsIDc4NzQ1LCA3NDUwMCwgCisgICAgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAKKyAgICAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIDY0Njg3LCA3NDAwOCwgNDI1OTIsIAorICAgIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAxMjAzNjYsIDExOTExMSwgMTExNTAsIAorICAgIDE5NDg3NiwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCA0MTU4NywgNzAzOTEsIDgzMTIzLCAKKyAgICA3MTEwOCwgNDIxMTMsIDkxNzk1NiwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCA2NTI5OCwgNjU3MjMsIDY4Mjg5LCAKKyAgICA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIDY0NjcxLCA0MjExOCwgNzM4MzAsIAorICAgIDY2MDQyLCAxMDM1NSwgMTIxNTAxLCA3ODc1LCAxMDAzOTAsIDQxNTk4LCAzOTkzLCAxMjEyNjksIDE1NDUsIDQwOTcxLCAKKyAgICA1MzYsIDcyODc0LCA0MzAyOSwgMCwgMTIxMDAwLCA2NTE3MywgNjUyODYsIDEyMTI1NCwgNzAzMzEsIDE5NTAxMiwgMCwgCisgICAgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIDEyODU1OSwgMCwgNzgxOTQsIAorICAgIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAxMjcxMDgsIAorICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAKKyAgICA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgNzA3MjksIDcxODg5LCAKKyAgICA2Nzg1NywgMTAwNTgyLCAwLCA5MjQxOCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgCisgICAgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgODMxMjAsIDExNDEzLCAKKyAgICAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCA5MjI5MywgNDA5ODQsIAorICAgIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgMTI3ODk1LCA5ODMwNDUsIDY4MzEzLCA5MjM3LCAKKyAgICA5Mzg1LCA0MTY0OCwgMCwgMTI4OTUzLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIDQxMjg3LCA5MjYxMCwgCisgICAgOTgzMjk5LCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgMTI1MjE5LCA3Mjg0MCwgMTI2NTUzLCAKKyAgICA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgODI5OTUsIAorICAgIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCA2NDM2OCwgCisgICAgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCAKKyAgICA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKKyAgICAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCA5ODMxNTEsIDU4MDQsIAorICAgIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgNzAxNjcsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMTI1MDk3LCAxMjEyOTAsIDc4MTM3LCAKKyAgICAxODgzLCAxMDk1MiwgODA0OCwgNzA0NDMsIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDEyODYxNiwgMTI4MzE5LCAxMjg2MjksIAorICAgIDQ0MDcsIDc0NjQ4LCA2NTgwOSwgMTE4MzcsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDEyMDMzNCwgMTI2NzUsIAorICAgIDEyNjU5LCA3NDYzNCwgNDIzNjMsIDEyMDYyNCwgNjgwNzcsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCAKKyAgICA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMDI5NiwgMTE5MTU4LCA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCAKKyAgICA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAxMjY0NzcsIDEyMDYzNywgNDI0MTksIAorICAgIDY0Nzk5LCA0MjA0NywgMTI5NDE0LCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCAxMjY2MTYsIDc0MzAwLCAKKyAgICAwLCA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgOTE3NTM5LCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgCisgICAgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDcyODY5LCAxMjA1NjIsIDExOTU1OCwgMCwgCisgICAgMCwgMTI3ODMxLCA2NjMxNywgNjk5NDUsIDY2MzE1LCAyMTA2LCA2NzgwOSwgMTEyNzMsIDEyMDk4NiwgNDMwMDQsIDc1NDEsIAorICAgIDgyOTg4LCAxOTQ3MzgsIDk2MSwgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIAorICAgIDE2OTYsIDk4MzEzMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIAorICAgIDEwOTM2LCAxMTkyNTUsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAKKyAgICAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgOTgzNzE3LCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIAorICAgIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEwMDM4NCwgMTE5MjI0LCA0MjM3NCwgOTgzNTcxLCAKKyAgICA3NDQsIDkyODgzLCAxMTM3MzksIDE5NDkyNCwgNjU4MjMsIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIAorICAgIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgCisgICAgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgCisgICAgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCAKKyAgICA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjI4OTQsIAorICAgIDEwMDY4OSwgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCAKKyAgICA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMDEwNTAsIDIzMTgsIDEyMDY5MywgNjYzNjEsIDgxOTgsIDY1NjI2LCAKKyAgICA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAKKyAgICAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIDEyODQwMywgNzI4NjEsIDEwODc0LCA2NTUwNSwgCisgICAgMTIwMDAyLCA3Mjc4NSwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgNDIwNTIsIDAsIDY3MjY2LCA2NzY1MSwgMTIxMTA0LCAKKyAgICA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgOTE3NjE3LCAwLCAxMjg5MzcsIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIAorICAgIDcyODY4LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgCisgICAgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgCisgICAgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIAorICAgIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNjY4MDMsIDAsIDc4MTA5LCAxMjkxNzcsIDE5OTQyLCAxMjY2MTgsIAorICAgIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDEyMDgyNCwgOTQwNjQsIDk4MzA3MSwgCisgICAgMTI4NjUyLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAxMjA4NTksIDEwOTUsIDAsIDM1OTksIDEyNzc3NCwgMCwgCisgICAgMTI4ODYxLCA4NTE0LCAwLCA5MTc1NzksIDAsIDc0MzQ2LCA2NjY5NywgMTI4Mzg1LCAxMTY4NCwgOTgzMTQ4LCA5MjQ4NiwgCisgICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDcyODYyLCA0MDM2LCAxMjY0ODEsIAorICAgIDEyOTM3MywgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgCisgICAgOTI3MjIsIDAsIDEyNzA2MiwgNzI4NjUsIDEwMDgxOCwgOTE3NTQyLCA3MzgxMiwgNzI4NzUsIDY1MzksIDczODM2LCAKKyAgICAxMjY2MDcsIDEyMDcwMiwgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIAorICAgIDQyOSwgMTIyOTAzLCA3ODg5MSwgMTI3ODc0LCAxOTQ4NDgsIDY1NzkyLCAxMjg0MDgsIDgzMjgyLCA2NDE3LCAxMTg5MTgsIAorICAgIDc4MTc4LCAwLCAxMjg5NzAsIDY2Nzg2LCAwLCA0OTE5LCAxMDU5MCwgMTI4MDkzLCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIAorICAgIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCA2ODI1MywgMTIwNjg5LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIAorICAgIDgwNTAsIDE5NTAzMSwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgNzAzNTQsIDE3NTYsIDc4MTgxLCA5ODM5MTAsIDY1NzY4LCAKKyAgICA2MzUyLCA0MTg5MiwgMTI1MTg2LCA3NTU1LCAxMzEwMywgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIAorICAgIDAsIDQyOTI2LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCAKKyAgICAxMTkxNjIsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIDcwODUzLCAxMTM3MjAsIDAsIDEyODEyMiwgNzI3NjEsIDIzNDEsIAorICAgIDg0NTAsIDg0ODQsIDg0NzQsIDcyODg1LCA2ODMyMiwgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIAorICAgIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIAorICAgIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIDkyMjg4LCA3MDUxNCwgMTI3MDU5LCA4MzE3NSwgNzE0MzYsIAorICAgIDExMzM4LCA3Mjc5MCwgMzI3NiwgMTI4OTY4LCAxMjAyMzMsIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgCisgICAgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCA5ODM0OTAsIDY4NDc4LCAxNjMsIDU3NiwgCisgICAgOTg5NSwgMTY1NSwgNzAxMzEsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDY2ODg4LCAwLCAwLCA3MDUxMywgMTAwMzksIAorICAgIDEyMDQyNiwgNTYyNiwgNTYyMywgNTcxNywgNTc3NiwgNDM0ODgsIDgzNDk3LCA2Njg4NSwgNDE1OTEsIDExMDM2LCA2NTI1MiwgCisgICAgOTIzODIsIDAsIDAsIDEyMDExMSwgNjc4NDgsIDEyNzMwOSwgOTgzNTk1LCA5ODM0NzIsIDg4ODcsIDEyNzUyMSwgNzI5NSwgCisgICAgMTEwMzEsIDEyNTI1NSwgNDMxNTcsIDEwMDQ1MSwgODk0NiwgMTAzNDgsIDEwNDEyLCA4NzU1LCAxMTkxNTIsIDY3MzQzLCAKKyAgICA1NzE4LCAxMzIyMSwgOTgzMzQxLCA5ODMyNzgsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgNjg2LCAKKyAgICAxOTQ3NzYsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMTI3NTIzLCAxMjA0MCwgNjU2ODksIAorICAgIDEwMTI4LCA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjgxMzgsIDI0MDEsIDY4MTQ0LCA4NzkyLCAKKyAgICA5ODMxNzksIDY4MDQ0LCA2NTQ1NSwgMTI5MzE1LCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgCisgICAgNjY2MjQsIDEyNjU3OCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgNzg3NzQsIDk5ODQsIAorICAgIDczODUxLCAzMDEwLCA2NDQxLCA3MDM0OSwgMTQ1OCwgNDE0NzUsIDcyNDI5LCA5Mzk3NSwgMTAwODE0LCAxMTQ3OSwgCisgICAgMTIxMzU1LCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzE0NzMsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgCisgICAgNTUyMzAsIDEwMDQ1NCwgNDA1MiwgMTEzNjczLCA3NjI2LCA5ODM4OTAsIDEyMDkwNywgMTA0NSwgMTk1MDg2LCA1NjMxLCAKKyAgICA0MTExMywgMTIwNDk0LCAwLCA0MzcwNywgNzQxMjcsIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIAorICAgIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMTI5MTMwLCAKKyAgICAxMjgyMDYsIDAsIDE3NzQsIDE1MjMsIDEyMTMzMCwgNjgwNTksIDQxNDQ1LCA3ODIzNiwgMTEyMDcsIDg1NjcsIDQxNDQyLCAKKyAgICAzOTg4LCA3NDg0MywgNzgyMzcsIDExODkxMCwgOTgzMDY3LCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIAorICAgIDEyMTI3MiwgMCwgNDM0NDYsIDk4MzM0NiwgNjY1MTMsIDYyNTYsIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCAKKyAgICA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIAorICAgIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgCisgICAgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgMTI2NjMzLCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgCisgICAgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjcwMDMsIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCAKKyAgICA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIAorICAgIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAxMjczMTIsIDExOTkwMCwgNzM4NzMsIDk4MzEyNiwgOTQwMzUsIDk4MzA4MywgCisgICAgMTI3OTczLCAxMjg3MDgsIDcwNDQ2LCAxMDM2MCwgNjc0NiwgMTIwNDczLCA5MjI0NSwgNDQwLCAxMjg4MjYsIDEzMDg1LCAKKyAgICA5MjMzLCA3NDIxNiwgOTgzNTY2LCAxMDEwODksIDk5NTcsIDEyNTIxMywgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgCisgICAgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEwMDQ2NiwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgCisgICAgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgNzMwMywgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKKyAgICAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgCisgICAgMjI4MywgOTI5MzEsIDEwMDUyNSwgMzAwOCwgNDg5NiwgMTI4MTAyLCAxMjA4NywgOTgzMjQwLCA1NTIzMSwgNDExMDMsIAorICAgIDc1MDExLCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCA5MTc1NjcsIDg3MzEsIAorICAgIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDExOTA3MSwgNDc3NCwgMzAxOSwgOTk5NywgMTI4MzQsIDAsIAorICAgIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDEyMDQxMywgNzg1NTYsIDEyNjk5MCwgMTIxMzMyLCA3NDc3NiwgNDI4MSwgNDc2OCwgCisgICAgMTIwNTcyLCA0MTUzNSwgNDA5OSwgOTAxNywgNjk5OTMsIDk4MzY5MiwgNzgwOTUsIDIyMjUsIDc4MDk2LCAxMTg5NDYsIAorICAgIDEyMDI1MiwgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDEyODkyNiwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMTI3Mzg4LCAKKyAgICAxMDExNiwgOTg3NywgNzA2NzksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDEyMTE1NSwgNzgwOTAsIAorICAgIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgOTgzODc5LCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIAorICAgIDEyODQ4NSwgOTI0MzAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIAorICAgIDEyODUzMCwgMTk0Njg2LCA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIAorICAgIDAsIDQxMzcwLCAxMDE0LCA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDEyNTIzOSwgNjU1MzYsIDgzMjk0LCAKKyAgICAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgMTE4ODI0LCA3MzAyLCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgCisgICAgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyMDQ3MSwgNzQ5MjMsIAorICAgIDQyMjU3LCA1Njk2LCA5MjY3NywgMTIwNDY1LCAzODYyLCA5NjQzLCA5MTc5NTEsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgCisgICAgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIDEyODcxOSwgMTQyNiwgNjgyMTcsIDEyODY2OCwgNjg0NDcsIDQyMjA0LCAKKyAgICA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAKKyAgICAwLCAxMDI4MSwgOTE3Nzk4LCA1NjUwLCA0MzE5NCwgNjQ3MTIsIDEwNzQ0LCA3ODg4NywgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKKyAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDEyODM2MiwgMzk0NSwgOTI1ODksIDk4MzQ2NiwgCisgICAgNzA2NjQsIDc4ODgzLCAxMjgxMjgsIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCAKKyAgICA2NDc0OCwgMTIwOTIwLCA0MjIzNiwgMTAyMDUsIDM1NDUsIDEyOTEyMSwgNjk4NCwgMTI3NzcxLCA3NDA1MSwgMTI4OTAxLCAKKyAgICA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIDEyNTAzNywgMTk0NzQ2LCA5OTExLCAxMjA1OTAsIDY1MDIwLCAxMDA5NywgCisgICAgMTE5MTY2LCA3ODY5NiwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgNzgyMDgsIDExNDAsIDc4NDI2LCAxMjgyMDUsIDEwMTU5LCAKKyAgICAwLCAwLCA4MTI4LCA3Mjg1NywgNjgzMjYsIDE5NDkxMSwgMTgxNSwgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgCisgICAgOTE3NjI5LCAxMDEyMywgNzI4ODIsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgOTgzNzQ2LCAKKyAgICAxMjgzNDcsIDcyODg0LCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgMTI3ODE5LCA3Mjg4MywgMTI4ODU4LCAzMjk4LCAKKyAgICA1Mzc1LCAxMDE0MiwgMTAwNDIxLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCA5ODMxNDcsIDY5ODk5LCAKKyAgICAxOTQ5MzgsIDk4MzYwMiwgMTIxNDI2LCA0MTM4MiwgOTE3OTI2LCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCA1MjcsIDEyMTE3NCwgCisgICAgMTEzNzgyLCA3ODQ2OSwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDEyMTM4NiwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKKyAgICA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgNjY4MDYsIDgzNDYwLCA5ODMxODksIDExMzcwNSwgCisgICAgMTI4NTMyLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAxMjEyNDYsIDExOTg0MCwgCisgICAgNzA3MDAsIDEyMTQzOCwgNjY3ODMsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIAorICAgIDYzNjQsIDk1NiwgNjY3OTQsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIDczNzM0LCAxMjkxMDksIDAsIDk4MzczOSwgNjY0NDksIAorICAgIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDcwNzE0LCAxMDA5NDIsIDYzODg1LCAxMjcyNTEsIDEwNDQsIAorICAgIDQxMjc2LCAxMjgzNjMsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMTI0OTg1LCAwLCAxMjcyMDIsIDAsIDQyNDUwLCAzOTA3LCAKKyAgICAxMjQ5OTUsIDY0NTI2LCAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCAKKyAgICA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIAorICAgIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAKKyAgICAxMjAxMDcsIDEyOTM1MCwgNjQ2NTksIDkxNzkxNywgMTI3NzQ5LCA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIAorICAgIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAKKyAgICAxMDA0MzIsIDc4MjY5LCAxMDA0MzQsIDkyOTc3LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgNjc2ODksIAorICAgIDY2ODcxLCA5MTc4NDUsIDcwMzI3LCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIAorICAgIDEwMDQ0OSwgNDM1MTQsIDEyMTMwLCAxMDA0NTAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDk4MzE0NCwgCisgICAgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDkxNzk1MywgNjM1OCwgNjM2MSwgCisgICAgMTkyNiwgNjM1NiwgNzI4NTUsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTAwNDI1LCA0MzY4NSwgCisgICAgNzQzMDcsIDEwMDQyNiwgNDI5MTAsIDgzMzAxLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAxMjg2MjEsIDExOTU4NywgOTIxOTIsIAorICAgIDEyMTQ1NCwgNjU4OTQsIDE5NDY5NCwgMCwgNjQyOTYsIDk4MzY4MSwgOTgzMzk0LCAxOTQ5NTksIDExOTE4NywgMjEzNSwgCisgICAgMTE4MzYsIDAsIDEyOTM2MSwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIDcxOTEzLCAKKyAgICA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMDEwMzgsIDY4ODMzLCAKKyAgICA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgCisgICAgNDEzMzAsIDE5NDk0NSwgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIDY4MjI4LCAKKyAgICA2NTcxMCwgMTI4Mzk5LCA5NDE3NiwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgMTA5NjYsIAorICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIDEwODQ0LCAKKyAgICAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDkyNjM2LCAxMDA0MzgsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgCisgICAgMTAwNDM3LCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTI4OTI4LCAzMDE1LCAKICAgICA2ODc0MywgNjg3NDAsIDUyMTEsIDY4ODA1LCA2NDAwLCA2ODc0OSwgNjg3NDgsIDY4NzYwLCA4MTg5LCAxMTI3NiwgNjg3NTQsIAogICAgIDcwMjg0LCAzNzIsIDEyODgyOSwgNjg3NjEsIDExMzc4MywgNDIxMDIsIDQxNTg1LCAxMjc3NTEsIDAsIDQyMTAxLCAyNzYsIAogICAgIDc4NDAyLCA2NzQyNywgMzMsIDY3NDI1LCA2NzQyNCwgOTAwNywgNjc0MzAsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgCi0gICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCA5ODM5NDMsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMCwgOTgzOTgwLCAyMzI4LCAKLSAgICA2NjgzNywgMTA3MSwgNDI4OTksIDEyNTA4OCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxOTQ5ODEsIDEwNDcsIDAsIAotICAgIDE5NDk0MywgNDI5MDgsIDEyODQ4MCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMCwgMTI1MTEzLCA3MjQzMywgNjY4MjksIAotICAgIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIDY3OTAsIDY1MTY4LCAKLSAgICAxMzIxNiwgOTgzMTUwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgNzE5MTUsIAotICAgIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgCi0gICAgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgCi0gICAgMTI1MDcwLCAwLCAxMjgzMzgsIDEyMDMzNSwgMTE4OTExLCAwLCA5NDA0MywgMTI5MTk0LCAwLCAwLCAxMjAwMTAsIDczNzk1LCAKLSAgICA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgCi0gICAgMTI5Mjk2LCAwLCA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIAotICAgIDQyOTAyLCA3MzgwOCwgMCwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAKLSAgICA3MDM2NiwgMTIwMDA1LCAxMTk1ODUsIDEyMTIxMiwgNTA4NCwgMTIxMTg5LCAxMjExMzQsIDc1MDYyLCAwLCA3MzMsIAotICAgIDc0NjQ2LCA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCi0gICAgOTgzMTI1LCAwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCA5ODM3NDQsIDAsIAotICAgIDkxNzc2NywgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCA2Nzk4MCwgCi0gICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMTI3OTYwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgCi0gICAgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAKLSAgICAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAKLSAgICAxMTkyMTEsIDk4MzI5OCwgMCwgNzgwMTEsIDM1MSwgNjg3NjQsIDAsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA3ODAwOCwgCi0gICAgMTI4MDk0LCAwLCA0MjM3NywgMCwgMCwgMCwgMTEzNzY3LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIAotICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCAKLSAgICA2NDIxNSwgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTI2NjAxLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCAKLSAgICA4Mjk4MywgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDEyMTEyMCwgMTk0ODMzLCA0MzQ1MiwgNjcyNDUsIAorICAgIDExODgxOSwgNzA4NzIsIDEyNzg4NCwgMTAwOTkwLCAxMDMxLCA2MjU3LCA5MjQ4OSwgNDIxMDQsIDEwMDM5NiwgMTAwMzk1LCAKKyAgICAyMzI4LCA2NjgzNywgMTA3MSwgNDI4OTksIDc0NDE4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDEwMDQwMSwgMTA0NywgCisgICAgMTAwNDAzLCAxMDA0MDIsIDQyOTA4LCAxMDA0MDQsIDY5NzIzLCAxMDY1MSwgNzAzNTYsIDEwMDQwOCwgMTI1MTEzLCAKKyAgICA3MjQzMywgNjY4MjksIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIAorICAgIDY3OTAsIDY1MTY4LCAxMzIxNiwgMTAwOTM1LCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCAKKyAgICA2OTY1NCwgNzE5MTUsIDk4MzcyMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAxMDAzODksIDg2NDMsIAorICAgIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIDY0NzksIDEyNTE5NiwgCisgICAgMTI5MTc4LCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAxMjUwNzAsIDAsIDEyNTE4NCwgMTIwMzM1LCAxMTg5MTEsIAorICAgIDQxNjQ1LCA5NDA0MywgMTI5MTk0LCAxMjcwODcsIDEyODQ4MCwgMTEzNzcwLCA3Mzc5NSwgODcwMSwgNjgxMzAsIDExOTYxNiwgCisgICAgMTIwNTIyLCA0Mzc1NCwgNDI0NzcsIDEwMDQ1OSwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAxMjkyOTYsIDc0NTU3LCAKKyAgICA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIDQyOTAyLCA3MzgwOCwgCisgICAgOTgzMzM1LCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDcwMzY2LCAKKyAgICAxMjAwMDUsIDEwMDM2OSwgMTAwMzY4LCA1MDg0LCAxMDAzNzAsIDEyMTEzNCwgNzUwNjIsIDk4MzQ2MiwgNzMzLCA3NDY0NiwgCisgICAgNzgwMTQsIDY4NzY3LCA3ODQzNSwgMTEyMDQsIDAsIDkyMTgsIDE3MzEsIDEwMDM4MCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCisgICAgOTgzMTI1LCA5ODMzNzAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDEyODUxNSwgCisgICAgMTI5MzE2LCAxOTQ5ODEsIDY0NDI0LCA3MTIzNiwgMzg0MCwgNjQzMTQsIDQxNDMyLCAxMjEzMTYsIDc4MzE1LCA2ODQzMCwgCisgICAgNjc5ODAsIDQzMjUzLCA2NTk0MywgMTAwMzczLCAzMzcxLCAxMDk4OCwgMTAwMzc4LCA4NzcxLCAxNDc5LCAxMDAzNTcsIAorICAgIDEwMDM2MCwgMTEwOSwgMTE1ODAsIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCAKKyAgICA2Nzk3OCwgNzQ4NDIsIDk4MzI4NiwgMTIxMzM2LCAxMjE0OSwgMTMwODgsIDU1MSwgMTk0OTcyLCAxMDE1NiwgMTIxMTksIAorICAgIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAxMTkyMTEsIDEwMDM1NCwgMTAwMzUzLCA3ODAxMSwgMzUxLCA2ODc2NCwgCisgICAgOTE3OTgxLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgNjY3OTAsIDEyNzMyNywgMTAwMzYxLCA0MjM3NywgMTAwMzYzLCAKKyAgICAxMDAzNjIsIDEwMDM2NSwgMTAwMzY0LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIDM0NDcsIAorICAgIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCA2NDIxNSwgCisgICAgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTAwNzIzLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCA4Mjk4MywgCisgICAgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgNzQ1MjIsIDExMzU2LCAxMjExMjAsIDEyODE3NSwgNDM0NTIsIDY3MjQ1LCAKICAgICA5Mjk5MywgNDI1NzMsIDY2ODc5LCA4MzMyOSwgNjc4MTAsIDY5NzY3LCA3ODc1MiwgNzQzOTIsIDgxMzUsIDY0NTAsIAotICAgIDEwMDU1LCA3Nzk5NiwgMTE5OTQ4LCA5ODMxNzMsIDExOTIyNSwgNTY1NywgMCwgOTYyNiwgMTIxNDUzLCA3Nzk5NCwgCi0gICAgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCA3MTg2MCwgMCwgNTY1MiwgMTA5NDUsIDE5NDU5OSwgNjY0ODYsIAotICAgIDAsIDM2NjEsIDc4NjMsIDAsIDY4MDY5LCA5ODM2NzUsIDcwMzMyLCAxMjcxOTQsIDU2NTksIDE5NDYwNiwgNzg2OTIsIAotICAgIDY2NzI5LCA1NjU1LCA5ODM2MjYsIDQyMTY4LCAxMjExMzEsIDEwNTUsIDcxMTcxLCA3MTg4OCwgNjYzMTAsIDc0MDMwLCAKLSAgICA3MDUxNiwgMTIxNDYsIDcwMzYyLCA3Mzk1NiwgMTE2MTgsIDAsIDQyNzIwLCA5Mjk0OSwgMTAyNzIsIDEwMzA0LCAxMDM2OCwgCi0gICAgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA3NDk3OCwgNjQ4NzAsIDc0MTkxLCAzNDY3LCA3MTA3MywgNzg4MSwgCi0gICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgNzAwMzYsIAotICAgIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDkxNzk5NSwgMCwgOTI0MDksIDcwMDU2LCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIAotICAgIDExOTU5NiwgOTA5MSwgMTA3OTgsIDc4NjY0LCA3ODUwOCwgMTAxODYsIDk4MzI2NSwgNzczMiwgOTgzNzI0LCA2NDU1NiwgMCwgCi0gICAgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgNzQ5ODIsIDc0NjQ1LCA1NjcwLCAxMTM3OTUsIDEyNzI5NywgMTE4MjAsIDI5OTIsIAotICAgIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDc0OTgxLCAxMjc0OSwgNzQ1NTEsIDY3NzU3LCAwLCA2NjQ5NiwgNDM2MSwgCi0gICAgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgMCwgMzU3MSwgMTMyNDcsIDU4NzQsIAotICAgIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIDc4MjY1LCA1NTMsIDExMzc2OCwgCi0gICAgMTI3MDEyLCA5MzA1MywgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAxOTQ5MTksIDEyNzQ2LCAxMjg2NzEsIDcwMzM4LCAKLSAgICAxMTk5MjQsIDU2MzMsIDExOTkyNywgNzQyNTksIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIDk0MTA1LCA5NTEyLCA5NDEwMywgCi0gICAgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMTI4ODYzLCA0MTU2NCwgMTIxNTE3LCA1NTIxOSwgMTI4ODMyLCAKLSAgICA5ODM4NTEsIDE5NDg3NywgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIAotICAgIDEyODkwMywgMTI0OTM2LCAxMjgzOTAsIDgzMjE1LCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIAotICAgIDMyOCwgMTIxMDMxLCA2ODczNiwgNjk4MTUsIDU2MzYsIDExOTkxNywgNTMyOSwgMTIxMjkzLCA1NjM4LCA4MzE2NiwgNzk0MCwgCi0gICAgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA2ODc2MywgNjIwMywgCi0gICAgNDI0NywgNzExNjksIDExOTIwLCA4Mjc0LCA2ODI0MCwgOTgzNjU4LCAxNjU3LCA0MTU2MSwgNjg3NzgsIDc4Mjk1LCA1NjM5LCAKLSAgICAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgOTgzNjg1LCA3MTE3OSwgNDIyMjcsIDY4MzAxLCA4MzMyMiwgNDE2MzcsIAotICAgIDY3ODcyLCAxMjExMDUsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCA1NjQyLCAwLCA1NDg2LCAKLSAgICAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAxMjY5OTQsIDEwNTgsIDAsIDY3NjMwLCAKLSAgICAwLCAxMjg5MjcsIDExNDQsIDc4NzUwLCAxMjcyOTMsIDQyMjI4LCA5ODM3MTQsIDczODkwLCAxMTg5NzIsIDEyNzM1MiwgCi0gICAgMjgwMCwgODMyMDksIDU2NDUsIDY0OTY0LCA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDEyMTM1NiwgNTYwOCwgNjU4OTAsIAotICAgIDQzODA4LCAxOTQ5NzIsIDY3NjIxLCA2NDkzMiwgOTAwMCwgNzEyMDQsIDY3MjM1LCA5MjY3MywgMTg2NSwgMTI4NzA2LCAKLSAgICA1NjEzLCA2NjQwMSwgMTIxMTQ1LCAwLCA1NjEwLCA5ODMyMjYsIDcxMTk5LCA2NTgyNiwgMjA2OSwgMCwgMTA3ODcsIAotICAgIDQzOTk5LCAyOTk3LCAxMTk5MzIsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA1ODc1LCAyNDEyLCA4MzIwNiwgCi0gICAgODE4NiwgOTgwNywgNzQyNjksIDY2Mjk0LCAxMzEzMCwgNjU4NzQsIDcxODU1LCA1ODA3LCAxMTM2NzgsIDEwMDMwLCA1MzA2LCAKLSAgICAxMjM2NCwgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDgzMjAyLCA5MjU4MywgMTAyMTEsIDAsIDEyMDU3OSwgMCwgMTIxMDYzLCAKLSAgICAxMTcwNiwgOTcxMCwgMTI1MDIyLCA4Mjk4NSwgMTIwNjU1LCA0MTMsIDY1NjIzLCA3MTE4LCA4MzE2NywgOTEzMywgNzQyNjIsIAotICAgIDkxNzk2NCwgMTA0MiwgMTI1MDY4LCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDEyMTI2NiwgCisgICAgMTAwNTUsIDc3OTk2LCAxMDEwMzMsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAxMDA0NDMsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAorICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDkxNzkzOSwgNTY1MiwgMTA5NDUsIDE5NDU5OSwgCisgICAgNjY0ODYsIDk4MzM2MCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDEwMTA4NCwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCAKKyAgICA3ODY5MiwgNjY3MjksIDU2NTUsIDEyMTAxMiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgCisgICAgNzQwMzAsIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgNzI3MDksIDQyNzIwLCA5Mjk0OSwgMTAyNzIsIAorICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA3NDk3OCwgNjQ4NzAsIDc0MTkxLCAzNDY3LCAKKyAgICA3MTA3MywgNzg4MSwgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgCisgICAgMTk0OTc4LCA3MDAzNiwgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCAKKyAgICA1MzE4LCA2Mzk5NCwgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCAKKyAgICA5ODM3MjQsIDY0NTU2LCAwLCA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDEwMDgzMCwgCisgICAgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgCisgICAgNjc3NTcsIDIyNjMsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAKKyAgICAwLCAzNTcxLCAxMzI0NywgNTg3NCwgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgCisgICAgNzgyNjUsIDU1MywgMTEzNzY4LCAxMjcwMTIsIDkzMDUzLCA1ODI5LCA5ODMyNDcsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgCisgICAgMTk0OTE5LCAxMjc0NiwgNzI4MDYsIDcwMzM4LCAxMTk5MjQsIDU2MzMsIDExOTkyNywgNzQyNTksIDk0MTAyLCA5NDA5OSwgCisgICAgNjQ5MDUsIDk0MTA1LCA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMTI4ODYzLCA0MTU2NCwgCisgICAgMTIxNTE3LCA1NTIxOSwgMTI4ODMyLCA5ODM4NTEsIDEyODAyNiwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMTE5OTE0LCAKKyAgICAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIAorICAgIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAKKyAgICAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgCisgICAgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCAxOTQ3NDEsIDE2NTcsIAorICAgIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCAxMjE0MjAsIDcxMTc5LCA0MjIyNywgCisgICAgNjgzMDEsIDgzMTY4LCA0MTYzNywgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEwMDczMSwgCisgICAgMTE3MDUsIDU2NDIsIDEwMDczMiwgNTQ4NiwgMTAwNzM0LCA0MzU2LCAxMTcxMCwgMTAwNzM5LCAxMjA1MSwgNjk5MzgsIAorICAgIDEwMDc0MCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgMTAxMDE2LCAxMjg5MjcsIDExNDQsIDc4NzUwLCAKKyAgICAxMjcyOTMsIDQyMjI4LCA5ODM3MTQsIDczODkwLCAxMTg5NzIsIDEwMDU1MCwgMjgwMCwgODMyMDksIDU2NDUsIDY0OTY0LCAKKyAgICA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDEyMTM1NiwgNTYwOCwgNjU4OTAsIDQzODA4LCAxMjgzMzUsIDY3NjIxLCAKKyAgICA2NDkzMiwgOTAwMCwgNzEyMDQsIDY3MjM1LCA5MjY3MywgMTg2NSwgMTI4NzA2LCA1NjEzLCA2NjQwMSwgMTAwNzIxLCAKKyAgICAxMDA3MjQsIDU2MTAsIDEwMDcyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAxMDA3MzAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgCisgICAgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIDgxODYsIDk4MDcsIAorICAgIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgMTIzNjQsIAorICAgIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgMTE3MDYsIAorICAgIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKKyAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCA4MzE5OCwgCiAgICAgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCA4MzM5OSwgMTMwOCwgMTIxMjU4LCAyNTM0LCA4MTAsIDEyNTA4OSwgCi0gICAgMTIwOTMzLCAxMjgwMTYsIDcxODQ5LCA3MTg2OSwgMTkxNywgMzAwMCwgMTI1MTQwLCAxMjAxODQsIDEyMDczOSwgMjM2NCwgCisgICAgMTIwOTMzLCAxMjgwMTYsIDcxODQ5LCA3MTg2OSwgMTkxNywgMzAwMCwgMTI1MTQwLCA3MDY5NCwgMTIwNzM5LCAyMzY0LCAKICAgICA2NjM4NywgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgNjY0MTEsIDEwMDI3LCA3MTg0MSwgMTI4MTU0LCAxMjMzNywgNzQyODMsIAogICAgIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODA2OCwgNjM2MywgMjc0OCwgMTIxMDIyLCAKLSAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgOTI5ODgsIAotICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEyNzA1MiwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCisgICAgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgODczMCwgMTk0OTk3LCAxMDA3MTEsIDc4MzEyLCA3Mjc0LCAxMDA3MTIsIDkyOTg4LCAKKyAgICA3Mjc1LCA3ODMwNCwgOTM1LCAxMDA3MTksIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTAwNDg5LCA2NTI1MywgNjQzMDEsIAogICAgIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgNzgzMDAsIAotICAgIDE5NDk5OCwgMTk0OTEyLCAxMDY3MywgNjg3NzksIDcyNDgsIDY4Nzg2LCA0MzUxNSwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIAotICAgIDE2NDksIDY3ODc2LCA5NjQsIDEyMTAzNCwgNjY0MDMsIDc4MjI2LCA2NjM5MywgOTI4OTcsIDcwMzU1LCA2NjQwOSwgMCwgCi0gICAgODMzOTgsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgNDM1NDcsIAotICAgIDgzMDI4LCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIDY5NzU5LCAxMTM0MSwgNDI0OTQsIAotICAgIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgNzA4MTAsIDY0NzgsIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgCi0gICAgNzEwNiwgNDg3NywgMTI5MTA4LCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCA0NDA5LCAwLCAwLCA2NDc5OCwgNzA4MDUsIAotICAgIDUzNDYsIDEyODI0MCwgOTQwNDcsIDYyMzcsIDQ4NzQsIDY2ODUxLCA5MTc2LCA5Mjg4MiwgMTIxMTUzLCA2NTIzMSwgCi0gICAgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAxMTIwMywgCi0gICAgOTgzMTU5LCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgNTM0MiwgODMxNywgMTIxNDQ2LCA2ODE2MywgNTM0MCwgCi0gICAgMTIwNTU5LCAxMjc4MjAsIDQzNjM1LCA3MzkyOCwgMTI1MDAxLCA3MTA2OSwgODMzMTgsIDAsIDgzMzE3LCA2NTQ4MiwgCi0gICAgMTIxMzk0LCA5MTQyLCAwLCA2ODUwNiwgMCwgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMTI2NjQ4LCAKLSAgICA3MjQzOCwgNTI5LCA4NTgwLCAxMjc0OTAsIDAsIDEwNTg2LCAxMDc5MCwgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIAotICAgIDY4NzQ0LCA5ODM4MjUsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCA2NzgyMSwgMTIxMjAwLCAxMTM3NiwgNzQzNzksIDEwNzIxLCAKLSAgICA2NzY2NCwgMzQzOCwgNDIwOTcsIDY4ODYyLCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgNDE4NzMsIAotICAgIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODgzOSwgNDE4NzEsIDQxMzM4LCAzNzM0LCA3NzM0LCAKLSAgICA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEyNzkzNywgOTgzMjE2LCA1MTYxLCAxMDU3MiwgCi0gICAgOTE3NTU4LCA0MjkwNiwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjA0MDYsIDk4MzY0MywgMTI2NjA1LCAxMTE2NywgCi0gICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAKLSAgICAxMTM3NjYsIDk4NzAsIDY3NzI2LCA4NjIwLCA2NTgyNCwgOTE3ODU1LCAxMTkzOCwgMTIxMzA4LCA3Mjg1LCA5ODM1NTcsIAotICAgIDExOTU3NywgNDI2NzgsIDY2ODQyLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMTI5MTY4LCAxMjgyNjcsIAotICAgIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgNjg2MjQsIDcwMjgwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIAotICAgIDc4NDcxLCA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCAKLSAgICA2NDc3MywgOTIyMTQsIDc0MDAyLCAxMjc3OTAsIDEyMDU0OCwgMTI4NjQ1LCA2MzQ4LCAyNDMsIDEzMjAwLCAxMjAxNjAsIAotICAgIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgMCwgOTE3ODQ0LCA0Mjg1LCAKLSAgICA2NjE5NSwgMTIxMzcwLCA0MjMwLCA5Mjg4NiwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgOTgzMjcxLCAKLSAgICA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDEyODU3OCwgMCwgNzQ4NTYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMTI4Mzg2LCAKLSAgICA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMCwgNzAxNTUsIDc4NjIyLCA3MDA0NywgMTI3MjczLCA2MDIyLCAxOTUwMjMsIAotICAgIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgCi0gICAgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgNzgyODMsIDAsIDEyNDUzLCA3MDg0NywgCi0gICAgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDY2Mjc4LCAwLCA3ODI3OSwgMCwgMCwgCi0gICAgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIDEyNDQ5LCAxMjg1NTIsIDcxMjI0LCA0Mzg2OCwgCi0gICAgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDExMzc2NSwgMTE5MjQ5LCAxMTM3MTUsIDExNTk1LCA2NDg5MywgMTE4OTA1LCAKLSAgICA0MzQzNSwgMTI0OTY0LCAxMjUwMzAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDEyMDY1MCwgNTQ5NCwgCi0gICAgNDYzOSwgMTI3NTU5LCAxOTkwLCAxMTEwNywgNDQ5OCwgNzQxNjksIDY3NzM2LCA4MzI3MywgMTI3MjcyLCA2OTczNCwgCi0gICAgMjk2MCwgNzM3NzksIDAsIDg5NjksIDEyODExNywgNDM0MjQsIDczOTU5LCAxMjY0NjQsIDI5NTAsIDExOTU3OSwgNjIxMCwgCi0gICAgNjU3NTMsIDM3MCwgMTIxMzYwLCAwLCAwLCA0OTUzLCAxOTUwMDksIDEyMTA1NCwgMTEzNzA4LCAwLCA2OTIzMCwgMCwgCi0gICAgMTk1MDEwLCA2NTY4OCwgNzQ5NTEsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAKLSAgICAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCAxMjA1NzEsIAotICAgIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgMCwgOTE3Nzc0LCA3NDkxNCwgMzc2MSwgMCwgCi0gICAgMCwgNzAwNjgsIDEyMDQwOCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCA5ODMyNTYsIDEyODM4OSwgMCwgMCwgOTA4LCAKLSAgICAwLCA4NjExLCAxMjEzODQsIDAsIDc0NjQyLCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgCi0gICAgMTA1MjcsIDcwNDI2LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCA3NDkxNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgNzQ4ODMsIAotICAgIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI1OSwgMTI3MTYzLCA2ODE5MywgMzQ3LCAwLCAKLSAgICA5MTc1NDQsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA2ODA0NiwgMTIxNDMsIAotICAgIDY5NjU3LCA3ODUxMiwgMTI4NDkzLCAxMTE1MywgNDE4MDQsIDc4NTIzLCAwLCA3ODUyNSwgMCwgMTI4ODU5LCA0MTU4NCwgCi0gICAgMTA2ODEsIDAsIDEyMDk3OSwgNzM5MzgsIDczNzgxLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIAotICAgIDY2Mzg0LCA5NTE4LCA2NjA5LCAxMDQzNCwgNzA4NDUsIDExMzE5LCAxMDk3LCAxMjg5NjQsIDkxNzU2NCwgNDE3MzAsIAotICAgIDEyOTE4MSwgMTIxNTAxLCA3Mzg0NywgNzQ4NDUsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIDE5NDc4MCwgMTk0NzY5LCAKLSAgICAxMjE0OTksIDQxMjAzLCAxMjcwNTYsIDEzMTEwLCA0MTcyNiwgMTk0ODU2LCA2NzA3NywgMTAwMCwgNjk2NTEsIDEyNzUwOSwgCi0gICAgNDExNDAsIDEyMDksIDczOTc4LCAxMjUwNTksIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIDk4Mzk2OCwgCi0gICAgNjgyMTMsIDc4MDAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDExOTkwNCwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCi0gICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAKLSAgICA5MTc2MDEsIDEyODgzMywgNjQzOTgsIDcxMTI0LCAxMTk5NzAsIDEyMzExLCAxMTkxODEsIDc4Nzk2LCA2ODc2OCwgNzg3OTQsIAotICAgIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAxMTM3OTcsIDEyODU3OSwgMTIyOTAsIDEyMDE2OSwgMTI5MDkzLCAKLSAgICAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgNzg1MzUsIAotICAgIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIAotICAgIDExOTk5NSwgOTgzNDkzLCAxMTM3MDIsIDY2ODM2LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIAotICAgIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgCi0gICAgMTIwMDE1LCA2MDQxLCAxMjA1MjAsIDQxODk5LCA5ODMyODgsIDgwMDIsIDEyODM2NywgNDM2NCwgNzM3MzIsIDk4MzU3MCwgCi0gICAgNjQzMzIsIDEyMDk3NiwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNjgyNDYsIDcyNzksIAotICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDEyMTE1MiwgMTIxMzgxLCA5NjYwLCA5MTc5MjksIDEzMDEyLCA0NTcxLCAKLSAgICA5MTc1ODgsIDAsIDExODk0MCwgMTIwNzgsIDI5NzAsIDEyOTEyMiwgMTA5MzMsIDAsIDc3ODcwLCAxMjEyNDMsIDc3ODQxLCAKLSAgICAwLCA0MTU5OSwgNzAxNTksIDEyMTM0MiwgMTIwODg1LCAxMjk1MCwgOTIxNjAsIDM0ODYsIDk4Mzk3MywgNzgzMTEsIDQyMzksIAotICAgIDEyODA3MywgMTI3Nzk5LCA2NjUxMSwgNjgwNjYsIDI2MzcsIDY0NjI5LCA4NDYwLCA2NjgzNCwgODQ3NiwgOTgzOTc1LCAwLCAKLSAgICA2ODMxMiwgNzg0ODksIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCAKLSAgICA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgOTI3NzcsIDczODY0LCA5ODMyMDMsIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgCi0gICAgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIAotICAgIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCA2Njg1MywgNzM5NjMsIDQxODU1LCA0MTg2NywgCi0gICAgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCAKLSAgICA2Mzg3NiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMTk0NzE5LCA5MjcxNCwgMCwgMTI3NzgyLCAKLSAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCAxMjQ5NzIsIDc4NTExLCAzMTYxLCAyOTUsIDcxMjU3LCAwLCA5MjIyMywgCi0gICAgMTIxMzI4LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM1MDEsIDY4MjEwLCAzOTcxLCA5ODM5NTksIAotICAgIDcwMDYzLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA2ODA5NSwgNjY3LCAxMjMzMiwgCi0gICAgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCA5ODMyODAsIDQxNTksIDk4MzU2MiwgMCwgOTgxNSwgNjM4ODQsIAotICAgIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgCi0gICAgNjM4NzIsIDEyMDk0MSwgNDI0MjEsIDE5NTAzNSwgNDE3MjMsIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIAotICAgIDQxOTEzLCA2Mzg1MiwgNjY4NjksIDEyODk3MSwgNDIzNDgsIDczODkyLCA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDEsIAotICAgIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDEyODYzNywgNjM4NDYsIDI5NzIsIDEyOTMyLCA3MjYyLCA2OTk2OCwgNjM4NDksIAotICAgIDYzODQ4LCA2Mzg0NywgMTEzNzQ5LCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgMTA3NDYsIDcyNTAsIDEzMjE0LCAKLSAgICAxMDA0MSwgODEwNSwgNjM4OTIsIDEyNzc4MCwgNjk5NjksIDExMDUsIDQxODAsIDEyNzc4NiwgMTIwOTQsIDk0OTcsIDAsIAotICAgIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCA5OTg3LCAwLCA5MjczOSwgMTY3OCwgMTMyNzQsIDU1MiwgCi0gICAgMTE4ODM0LCA0NDAxMCwgMTA3ODUsIDAsIDExMTkyLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCA2Mzg2MCwgCi0gICAgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCA5NTc0LCAxMzg4LCAKLSAgICA3MTkwMiwgMCwgMTA3NywgMTk1MDAwLCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDkxNzc4OSwgMCwgNDI3NzMsIAotICAgIDEyMTMzMSwgMCwgMCwgMTE5MjIwLCAxMjA5MTIsIDM2NjMsIDEyNzAyNywgMTExMiwgNzAzMzUsIDg2ODYsIDEyNjYxMSwgCi0gICAgNTMzNCwgNjUwODEsIDQzMjQ5LCA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMTI1MDE3LCA2NTA5LCAwLCA1MzI3LCA3ODc3NiwgCi0gICAgMTk5MDcsIDYzODY5LCAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIAotICAgIDYzODY2LCA3ODYyNiwgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgCi0gICAgNjkyMzgsIDY0NDM4LCAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIAotICAgIDYzODM1LCA2MzgzNCwgOTgzOTQ3LCA3ODI0MCwgMTIyMjUsIDYzODM4LCA2MzgzNywgOTgzODUzLCA3MDE3MywgNjM4MzMsIAotICAgIDYwNDIsIDY2MzYwLCA4MDgzLCAxMjgxNjYsIDk4MzczMywgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzkwNCwgCi0gICAgNTIyNywgOTA0NywgNjM4MjIsIDc0Nzk3LCA2MDkxLCAwLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCAKLSAgICA2MzgxMSwgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCAxMjAxNDMsIDc4MCwgCi0gICAgMjA2LCA3MDEyNiwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgCi0gICAgNjM5MzIsIDc1MDUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIAotICAgIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAwLCA0NjE4LCA0MjIwOSwgMTExMzcsIDEzMTY5LCA1MjkwLCAKLSAgICAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgCi0gICAgNzI4MywgMCwgNjM5NzAsIDEyMTE2NSwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIAotICAgIDEyODkyMCwgNzQwOCwgMTE4MDksIDgzMjIwLCAxMjExODEsIDAsIDI5NjUsIDcyNTgsIDg4MDgsIDY2NTcyLCAxMDg5LCAKLSAgICA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAxMTEwNiwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIDc0NDk0LCAKLSAgICAxMjQ2MywgMjk5NCwgMTI1MTM2LCAxMTg4MjcsIDY4NTIyLCA5NjY0LCA3MDgzNCwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgCi0gICAgNzQzNDMsIDY3MzcwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAxMjU4MCwgNzg1MDcsIAotICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCA5ODMzOTQsIDc0MTUxLCA4MzIyNywgNjUwMiwgOTgzODU1LCAxMTA4NSwgMTIxMjYxLCAKLSAgICA2Mzk1MSwgMTI0NjUsIDkxNzg2MiwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIAotICAgIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgCi0gICAgOTQwNzYsIDEyMTA4NiwgOTI0NjQsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgCi0gICAgNjM5MTcsIDEzMjc3LCA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCAKLSAgICA2MzkxNCwgNjk3MzcsIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDEyMDEwMiwgNDM5ODAsIDU0ODUsIDAsIAotICAgIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgNjgwNTcsIDI1MywgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgCi0gICAgNzQyMzEsIDAsIDExNTMwLCA2ODYzNCwgNjg2NjgsIDEyMTI0MiwgMTExMjcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIAotICAgIDQyMzU0LCAxMjgwOTksIDk4MzY5OCwgNzAwNDQsIDE5NTA2NSwgMCwgODQxMywgNjY4NDEsIDAsIDU2OTMsIDcyNzIsIDAsIAotICAgIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAxOTUwNjMsIDAsIDAsIDAsIDEyNjYzOSwgMTIwMDk3LCAwLCA5NDA3OCwgCi0gICAgNjY4NDAsIDEyNzE2NSwgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgNzgzNDcsIDcyNzAsIDAsIDY2NjA2LCAKLSAgICA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgCi0gICAgNjM5MDYsIDE1OTgsIDYzOTA0LCA3MTE4NywgNzAzOTMsIDQxNzI5LCA0NDIzLCAxMzA3LCAxMTM2OTIsIDEwNTE1LCAKLSAgICA0MTU4OSwgMTI4Njk4LCAxMjg5MTgsIDYyMTgsIDkyOTE3LCAxNDMwLCAwLCAxMjY1MTMsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAotICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjMzLCA0NTE4LCAKLSAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDY3MDkzLCAyNzEwLCA5ODM1OTMsIDY2Mjc3LCA0MTcyNCwgNjc3MTYsIAotICAgIDQzMDczLCA0MTY5MCwgMTI0NzksIDk4MzYzNSwgODM4MCwgMTIxMDcxLCA3MTg1MiwgNzAwNDYsIDE2MjgsIDEyMTIyOSwgCi0gICAgMTI4ODE3LCAxMjkwNjcsIDY1MjYyLCA2MzMzLCAxMDc4MywgMTExNzIsIDEyMTQ3MywgNjM4NTUsIDcwODQwLCAxMTM2NzksIAotICAgIDAsIDUzMzksIDc0MzIzLCAxMjA5NDYsIDEzMDA0LCA2Njg0MywgNDQ1NywgMCwgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgCi0gICAgNTY4NCwgODY3OCwgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCAKLSAgICA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDExOTA3NiwgNzQyNTEsIDAsIDEyMDY0NywgMTI4OTMwLCAKLSAgICA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgNzQ0MDMsIDk4MzgxOCwgNzQyODQsIDY2NDY4LCA2NjkwNSwgMTMyNTksIAotICAgIDQ0NDgsIDExOTE1MCwgMTIxNDA2LCA4MzM0OSwgNzAwNDMsIDEzMjEsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMTIxMTg2LCAKLSAgICA5MTc2MDcsIDEyNDk1OCwgMTI3MDc5LCA3MTEwNiwgMTI3ODUyLCAwLCAwLCA5ODMwNzUsIDEyNTAxLCA2NDYwNCwgCi0gICAgMTI4NjU3LCAxMTUyNywgMTE4ODcwLCA4ODEyLCA5ODM3MDYsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAKLSAgICAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDEyNzEzNywgMTI3ODU2LCA2OTk5NSwgNDYzNiwgNTUyNjIsIAotICAgIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDk4MzY5NSwgMTEzNzgwLCAwLCAxMTg5NjgsIDEyMjc3LCAxMjEyMzksIAotICAgIDExOTk1LCA5MjU1MywgMTIxMDA2LCAxMjE1OCwgNzAxNzAsIDg3NDEsIDEwMTk3LCA2ODc4MCwgOTI0MjYsIDEyMTI4NSwgCi0gICAgNjUzMSwgODMwNTEsIDEyNzg0NiwgNDczLCA0MzQxNSwgOTI5MzYsIDk4MzY1MCwgMTg3MywgMTA4NywgMTI0OTY2LCAwLCAKLSAgICA3NDI4MCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3MTExMywgMTI2NTU5LCAKLSAgICAxMjg3NDgsIDEyMDg4NywgOTQ4OSwgMCwgNzA4NDMsIDQzODQsIDc0MjIwLCA2Mzg0NSwgMjA1OCwgNjk3NDEsIDEzMjk1LCAKLSAgICA0MzE5MSwgMTI4MDMwLCAxMjg1NzEsIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDYwNTUsIDEyOTU4LCAxMjA3MDYsIAotICAgIDc0MTY4LCAxMjgzODgsIDcwODQ2LCA0NDIxLCAxMDU5MiwgMCwgNDk1LCA2NjQwMCwgNDE3MTIsIDc5ODMsIDcwODMzLCAKLSAgICA5Mzk5NywgOTgzMzMyLCA2MzQ3LCA3ODcxNSwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAKLSAgICA3MDgzMiwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgNjQzMDYsIDEyMTMwOSwgMCwgNDk5OSwgMTk0NjQyLCAKLSAgICA2NzQwMSwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDEyMDYwMiwgMjczOSwgMCwgODA0NCwgNzQzMTMsIDE5NDY0MywgNDE3ODksIAotICAgIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgCi0gICAgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDk4MzgwNCwgOTIxODYsIDEzMjI5LCA3MTg0NSwgMTA1NzUsIDQzMzk5LCAxOTQ1NzcsIAotICAgIDAsIDQxNzkxLCAxMTA0LCAwLCA5ODM3MjUsIDEwNjU1LCA5ODMzMzQsIDk4MzU2MSwgMTIwMTY0LCAwLCAxMDgyLCAKLSAgICAxMjEwMjQsIDg0MjgsIDY1NjksIDAsIDAsIDc4NTM0LCA2OTg0OSwgNjc4MywgMTk0NjcxLCAxMjk5MywgODA0OSwgNDE1NDgsIAotICAgIDQ0MDIxLCA2NDU4LCA2NDcyOCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAKLSAgICAxMjA2NzcsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMTI2NDY1LCAKLSAgICA5MjQ0OSwgMCwgMTEyMTYsIDEyMTMwNywgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCA4NTAzLCA1MTIyLCA0MTUyNywgCi0gICAgNzE5MTAsIDY2MzIwLCA3MDE2MSwgNzQ5MDcsIDAsIDAsIDQxNTM3LCA2NjQ1MywgODMwMywgODI4MiwgMTE4MTcsIDczODU3LCAKLSAgICAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3MDExNSwgMTE0NjcsIDM2NjQsIDY1OTIxLCA2NDI5OSwgCi0gICAgMTI0OTM5LCAxMjg0NjIsIDEyODAwMSwgNDMyNCwgMTI2LCA0MjI0NiwgNzUwMzAsIDY5OTg0LCA2NzcyNSwgNjU5MjYsIAotICAgIDc3NDQsIDY4ODU5LCA3NDI3NywgNjYyODMsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAKLSAgICAxNjMzLCAwLCAxMjY2MTQsIDQ3NjIsIDExMDMsIDcwODI3LCA3MDE1NywgNDc2NSwgOTgzNDk0LCAxMzA3OCwgMCwgNDc2MCwgCi0gICAgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMTk0NjUyLCA0MjIzNiwgMTI4ODY3LCAxMjcwNzIsIDExNTQ2LCAKLSAgICA3NDc5NCwgMzM3LCAxMjExOTYsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgMCwgNzUwNDcsIDQ3MDcsIDY4MjA2LCAKLSAgICAxMDE0MywgNzg4MywgMTIxNDQ0LCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAxMzAxMCwgNjk3OTYsIDgzMDQsIDkyOTgyLCAKLSAgICAxOTQ2ODgsIDExOTU3NSwgMjI5MywgNzAxOTUsIDY2NjU0LCAxMjkwNzcsIDkyNjc2LCAwLCAxMzAwOCwgMTIxMTk0LCAKLSAgICA0Mzg1LCAxMjg3MzYsIDEzMDExLCAxMjUwMDQsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDcwMzg4LCAKLSAgICA5ODMyODIsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCAKLSAgICA0MzgyMSwgNTcwOSwgMTI4Mjk2LCA3MTA3NiwgNDM4MTYsIDk4MzA4NywgOTgzODk2LCAxMDc5LCAzODY3LCA1NzA4LCAwLCAKLSAgICAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIDEyMTA5MSwgMTAyMzcsIDEwOTkxLCAxMjg4MTYsIAotICAgIDQzNDU5LCA5MTczLCA5MTc1ODEsIDkxNzU4MCwgMTMxNzAsIDEyNTQwLCAxMjkxNzgsIDQyNjA1LCAxMjA3NjUsIDEyNjYxNywgCi0gICAgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDY4MDU4LCA3NDg2NywgNjc3MzAsIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIAotICAgIDkxNzU5MSwgOTE3NTQwLCA5MTc1OTMsIDMzNDAsIDc0MDE3LCA5MTc1ODYsIDEyMDk5NCwgMTI5MTQxLCAxMjA1NDEsIAotICAgIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIDg2NCwgOTgzMTcxLCAxMTg5MjYsIAotICAgIDg5NzIsIDExOTkxOCwgNzg0OSwgMTIwMDkyLCA4MzEzMCwgMTMyNDAsIDE5NTA2OCwgNTE5MiwgNDMzOCwgNjc5ODIsIAotICAgIDEwOTQ4LCA2NjgyNSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAxMzE4OCwgOTM5OTMsIAotICAgIDcxODQ3LCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIDYzNzgyLCA2Mzc4MSwgCi0gICAgNjM3ODAsIDYzNzc5LCAxNTgzLCAxMTk5MjMsIDEzMjYwLCA0NTUwLCAxMjA1OTgsIDY0MjA1LCAxMjkxMDcsIDcxMDcxLCAKLSAgICA0MTUyMiwgNDE1MjMsIDY4NTIzLCA5ODM3NzIsIDExODkyMywgMTEzNTQsIDk0MDcxLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAKLSAgICAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgNDQ3OSwgMTE3OCwgNjU1ODYsIAotICAgIDY4MzExLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAxMjc4ODUsIDk4Mzc2NSwgNjY4MjgsIDEyODk3MiwgMTI3ODM5LCAKLSAgICA3NDU4MCwgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgCi0gICAgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDY0NzEwLCAxMDc0NywgMTI1LCAKLSAgICAxMjA4MDMsIDY0ODkwLCA5ODMwNjQsIDEyNzM3NiwgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAxMzI1OCwgOTUzNiwgCi0gICAgNzEwNTYsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIDEzNDksIDYzNzUwLCAKLSAgICA2Mzc0OSwgMTI5MDI1LCAwLCAxMjc5MjgsIDYzNzUzLCA2MzgwMiwgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCAKLSAgICA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCA2MjYwLCAwLCAxMjgzOTEsIDk0MDc0LCAKLSAgICA2Mzc5MywgMTE5ODgsIDM4OTgsIDkyMjQ2LCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAKLSAgICAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMzMSwgNDIyMDMsIDc5NTAsIDMxMjQsIAotICAgIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIDI3OTMsIDEyNDc1LCAxMjkxODAsIDc1MDU2LCA2Mzc2OSwgOTUzMCwgCi0gICAgMTIxMjQ4LCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAxMTM2NzQsIDY0ODAzLCAKLSAgICAwLCA4NzQyLCAxOTUwMjksIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDEyODk0MiwgNzU4OCwgNjM3NDgsIDE2OTMsIAotICAgIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIDQyMDYzLCAxMDkwLCA2ODgwMywgMTIwNzc4LCAxMTY2NSwgNzQxMzMsIAotICAgIDQ1NTgsIDY1Njg1LCA5NTIzLCA5ODM0NTMsIDYzODU3LCA3MTIxNiwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgCi0gICAgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgNjgwNzEsIDMxNzAsIDEyNDg1LCA0Mzg5MSwgMTA4NzIsIDQzODkyLCAKLSAgICAxMzAwNiwgNDM5MzMsIDEyMDA3NCwgMCwgOTQxLCAwLCAxMjkwNzksIDEyMDk2NywgNjU1NDEsIDExMDYzLCAwLCA4MjI4LCAKLSAgICAwLCA0MjA2NSwgMTI4MzY4LCA0Mzg4OSwgOTQwMzksIDEyOTI5OSwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCA3MDI5NSwgCi0gICAgMTE5ODYzLCA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDgzNDA5LCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDY2ODIwLCAKLSAgICA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDk4MzYyMCwgMTI3ODI5LCA2NTM5MywgCi0gICAgMTIwNTkyLCA3NDEzOCwgODM1MDUsIDkyNzUxLCA3NTAxOSwgNzQxMzksIDc4Nzc3LCA2NTM5NCwgMTE1NDgsIDUyNzAsIAotICAgIDk4MzIzOCwgNjUzOTYsIDc0OTk4LCA2NTgxMywgMTMyNTYsIDEyODIsIDEyMDc3MSwgNzUwMTIsIDAsIDEwODg4LCAKLSAgICAxMjA5MzQsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA2ODM0MCwgMCwgMCwgNzEyMDIsIDMzMDQsIDQyNzUzLCA5MjU4OCwgCi0gICAgNzAyOTgsIDc0NjQzLCAxNjI3LCAwLCAxMjc3NjUsIDE5NDczNSwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgCi0gICAgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDY4MzE3LCA5MDM1LCAxMTE0MSwgOTE3OTc3LCAxMjgwMDUsIDAsIDkyMjA3LCAKLSAgICA2ODEyNSwgNzQ4OTgsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgCi0gICAgMTMyNDUsIDAsIDY4ODA4LCA2NjgxOCwgMCwgNzAwMzEsIDExMDk5LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIAotICAgIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIDY1NTA5LCAxMjkxOTIsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgCi0gICAgMTI1MTAyLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgNzEwOTAsIDAsIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCAKLSAgICA5ODMzMjEsIDc4MTQ2LCA5MjYxMSwgMCwgNzAyMDQsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDIzMDMsIDExMDU3LCAKLSAgICA5MTc5NzYsIDEzMjc2LCAxMjUxMzMsIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDEyNjQ3OSwgMTI3OTA0LCAxMjEyMDMsIAotICAgIDEyMjI5LCAxMTY4MCwgOTI5NTYsIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDE5NTA4OSwgMCwgMTA0NzYsIDM4NTgsIAotICAgIDY0MTc1LCAzOTMyLCA2NDk1OCwgMTIwNDMyLCA5ODM2NzgsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgNzQ5MDgsIAotICAgIDQxNzg0LCAxMTkxNzUsIDY0MTYzLCA3Nzk5NywgMCwgOTI2NDUsIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgCi0gICAgMTI4NjMxLCA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgOTI2MDgsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIAotICAgIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDE5NDkxMywgNzQ2LCAKLSAgICAxMTg4MjYsIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNzU0NSwgMTk0OTI1LCA2ODgzNSwgOTgzNDg4LCA0NDIyLCAKLSAgICA0NzA4LCAzNzk5LCA3NDI5MiwgMTE5MzU3LCAxMjExNDYsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMTIwMzc3LCAxMjExNTEsIAotICAgIDEzNjQsIDAsIDgwMzgsIDEyMDg4MywgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDcwNDI1LCA2NzM1LCA3Mzk3OSwgMTMxNzQsIAorICAgIDE5NDk5OCwgMTAwOTI5LCAxMDY3MywgNjg3NzksIDcyNDgsIDY4Nzg2LCA0MzUxNSwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIAorICAgIDE2NDksIDY3ODc2LCA5NjQsIDEwMDY5NiwgNjY0MDMsIDc4MjI2LCA2NjM5MywgOTI4OTcsIDcwMzU1LCA2NjQwOSwgCisgICAgOTgzNDg0LCA4MzM5OCwgNDM2ODksIDEwMDcwMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCAKKyAgICA0MzU0NywgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMTI3NTQ1LCA2OTc1OSwgCisgICAgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCAKKyAgICA0MTAzOSwgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDEwMDY4MSwgNjIzOCwgMTAwNjgzLCAxMDU0OCwgMTAwNjg1LCAKKyAgICA0NDA5LCAxMDA2ODcsIDEwMDY5MCwgNjQ3OTgsIDcwODA1LCA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAKKyAgICA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIAorICAgIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIAorICAgIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIDEyMDU1OSwgMTI1MjA2LCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgCisgICAgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIDEyMTM5NCwgOTE0MiwgOTgzMTc3LCA2ODUwNiwgMTk1MDg0LCAKKyAgICAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIDcyNDM4LCA1MjksIDg1ODAsIDY2NzY5LCAKKyAgICAxMjUwNTgsIDEwNTg2LCAxMDc5MCwgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDY4NzQ0LCAxMjA2MjAsIDQxNTk0LCAKKyAgICAyMjUsIDQyODI4LCA5ODM2MzIsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3MjcyOSwgMTA3MjEsIDY3NjY0LCAzNDM4LCAKKyAgICA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgNzEyNzEsIAorICAgIDExMzI0LCAxMjA1MzEsIDk4Mzk3NiwgODQyMCwgNjQ5MTgsIDEyODgzOSwgNDE4NzEsIDQxMzM4LCAzNzM0LCA3NzM0LCAKKyAgICA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEwMDY3MiwgMTAwNjc1LCA1MTYxLCAxMDU3MiwgCisgICAgMTAwNjc2LCA0MjkwNiwgMTAwNjc4LCA2NDM0OSwgNzI4NywgNDIxNjIsIDEwMDY2MCwgOTgzNjEzLCAxMjY2MDUsIDExMTY3LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAxOTQ2OTUsIDY4NjM1LCAKKyAgICAxMDAzMSwgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDEwMDY1MSwgMTE5MzgsIDEwMDY1MywgNzI4NSwgCisgICAgMTAwNjU1LCAxMDA2NTQsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDcwNjkzLCAKKyAgICAxMjgxMzEsIDEyODI2NywgNzgxNjksIDY2MTk5LCAxMDA2NjQsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMDA2NjcsIAorICAgIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgCisgICAgNDEzOTUsIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODQ3OCwgNjM0OCwgCisgICAgMjQzLCAxMzIwMCwgMTIwMTYwLCA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIAorICAgIDEyMDg4MCwgOTE3ODQ0LCA0Mjg1LCA2NjE5NSwgMTIxMzcwLCA0MjMwLCA5Mjg4NiwgNzM2NywgNDMyNTYsIDkyMzUzLCAKKyAgICA3NTYzLCA0MjM3NiwgOTgzMjcxLCA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDEyODU3OCwgMCwgNzQ4NTYsIDY1ODkzLCAKKyAgICAxMjIwOCwgOTk3MywgMTI4Mzg2LCA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMTI1MjA1LCA3MDE1NSwgNzg2MjIsIAorICAgIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDEwMDQ4NSwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCAKKyAgICA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCAKKyAgICA3ODI4MywgMTI4NzM3LCAxMjQ1MywgNzA4NDcsIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAKKyAgICAwLCA2NjI3OCwgOTgzNjMzLCA3ODI3OSwgMCwgMTI3OTMyLCA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCAKKyAgICA3ODI3NywgMTI0NDksIDEyMjkwOCwgNzEyMjQsIDQzODY4LCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAKKyAgICAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIDQzNDM1LCA4MzMwOSwgMTIxNDE0LCA0OTkzLCAxMjkzNjAsIAorICAgIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDEyMDY1MCwgNTQ5NCwgNDYzOSwgNzA2NjgsIDE5OTAsIDExMTA3LCA0NDk4LCAKKyAgICA3NDE2OSwgNjc3MzYsIDcwNjU4LCAxMjcyNzIsIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMTk1MDc2LCA4OTY5LCAxMjgxMTcsIAorICAgIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIDY1NzUzLCAzNzAsIDEyMTM2MCwgOTgzNjU0LCAKKyAgICAxMjA5MjgsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDEyMjg4OCwgNjkyMzAsIDAsIDEyMjkwMCwgNjU2ODgsIAorICAgIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgCisgICAgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgNjY3NDQsIDQzNjY5LCA5MDMyLCA3ODI2MywgCisgICAgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgOTgzODczLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAwLCA3MDA2OCwgCisgICAgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDEyNzI4MiwgMTI4Mzg5LCAwLCA5ODMzNDIsIDkwOCwgMCwgCisgICAgODYxMSwgMTAxMDc0LCA5ODM2OTksIDc0NjQyLCA0MzY5MSwgNDExOTcsIDEyODgxMiwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAorICAgIDQxNTg2LCAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKKyAgICA3NDg4MywgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAxMjgzOTUsIDAsIDc4NzY3LCAxMTk2MjYsIDEwMDkyMiwgNjgxOTMsIAorICAgIDM0NywgMCwgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3Mjc5MiwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIAorICAgIDEyMTQzLCA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMTE5MTY4LCA3ODUyNSwgMCwgCisgICAgMTI4ODU5LCA0MTU4NCwgMTA2ODEsIDAsIDEyMDA5NCwgNzM5MzgsIDczNzgxLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAKKyAgICAxMjUwMzgsIDY2MzA2LCA2NDcxNSwgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIAorICAgIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgMTI5MTgxLCA5MjUxMiwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAKKyAgICAxOTQ3ODAsIDE5NDc2OSwgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDEyOTA3MiwgNjcwNzcsIDEwMDAsIAorICAgIDY5NjUxLCA4MzUyMCwgNDExNDAsIDEyMDksIDczOTc4LCAxMjUwNTksIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgCisgICAgNDExMzgsIDk4Mzk2OCwgNjgyMTMsIDc4MDAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDExOTkwNCwgNjc2NzEsIAorICAgIDU1MjQ4LCAxMjIzNywgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCAKKyAgICA3OTI2LCAwLCA5MTc2MDEsIDEyODgzMywgNjQzOTgsIDcxMTI0LCA3MTI3NCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIAorICAgIDY4NzY4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAKKyAgICAxMjgyMzMsIDExOTg3MywgMzkzNywgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIAorICAgIDc4NTM1LCA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIAorICAgIDExMzA4LCAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCAKKyAgICA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAKKyAgICAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg3LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCAKKyAgICA5ODM1NzAsIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIAorICAgIDY4MjQ2LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMDEwODAsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAKKyAgICAxMzAxMiwgNDU3MSwgMTI4MzMxLCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgCisgICAgMTIxMjQzLCA3Nzg0MSwgMTAwMzU4LCA0MTU5OSwgNzAxNTksIDEyMTM0MiwgMTAwNzA2LCAxMjk1MCwgOTIxNjAsIDM0ODYsIAorICAgIDk4Mzk3MywgNjY3ODIsIDQyMzksIDEyODA3MywgMTI2NTkyLCA2NjUxMSwgNjgwNjYsIDI2MzcsIDY0NjI5LCA4NDYwLCAKKyAgICA2NjgzNCwgODQ3NiwgOTgzOTc1LCA5MTc5ODksIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAKKyAgICAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgCisgICAgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIAorICAgIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIAorICAgIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCAKKyAgICA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIDYzODc2LCA0MTUzNiwgOTE3NTg3LCA2NjczOCwgOTI1ODcsIDM0NTksIDg5OTcsIAorICAgIDE5NDcxOSwgOTI3MTQsIDEyNzIzOCwgMTMwNjAsIDc4MzAxLCAwLCA2NjM3NywgNjk3ODEsIDEyMDE1OSwgMTI0OTcyLCAKKyAgICA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgCisgICAgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgCisgICAgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgCisgICAgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgCisgICAgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxMjkzMzUsIDQxNzIzLCAKKyAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCAKKyAgICA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAKKyAgICAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCA0MTM4NCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgCisgICAgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCAKKyAgICA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAxMjgzOTYsIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCAKKyAgICA5OTg3LCAwLCA5MjczOSwgMTY3OCwgMTMyNzQsIDU1MiwgMTE4ODM0LCA0NDAxMCwgMTA3ODUsIDAsIDExMTkyLCA0NTU3LCAKKyAgICA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgCisgICAgNzQxNTQsIDEyODM4NywgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIDcxOTAyLCA5ODM5MTUsIDEwNzcsIDE5NTAwMCwgCisgICAgNjUwOTksIDExNTMxLCA1ODM0LCAwLCA5MTc1NDksIDkxNzc4OSwgMCwgNDI3NzMsIDEyMTMzMSwgMCwgMCwgMTE5MjIwLCAKKyAgICAxMjA5MTIsIDM2NjMsIDEyNzAyNywgMTExMiwgNzAzMzUsIDg2ODYsIDEyNjYxMSwgNTMzNCwgNjUwODEsIDQzMjQ5LCAKKyAgICA3NDc3OCwgMTI3OTY4LCAxMTA3NywgOTI1MTUsIDY1MDksIDEyMDExNywgNTMyNywgNzg3NzYsIDE5OTA3LCA2Mzg2OSwgCisgICAgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIAorICAgIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgCisgICAgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIAorICAgIDk4MzU5MiwgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDEwMDQ1OCwgNzAxNzMsIDYzODMzLCA2MDQyLCA2NjM2MCwgCisgICAgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODMzMzIsIDUyMjcsIDkwNDcsIAorICAgIDYzODIyLCA3NDc5NywgNjA5MSwgOTgzMzIyLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCA2MzgxMSwgCisgICAgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCA3ODg3NiwgNzgwLCAyMDYsIAorICAgIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgCisgICAgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA2NjgxMSwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgCisgICAgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDcyNzkxLCA0NjE4LCA0MjIwOSwgMTExMzcsIDEzMTY5LCA1MjkwLCAyMDg5LCAKKyAgICAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgCisgICAgMTIwMTA5LCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCisgICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMTk0NzE2LCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgCisgICAgMTA4OSwgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCA5ODM4NDksIAorICAgIDc0NDk0LCAxMjQ2MywgMjk5NCwgMTI1MTM2LCAxMTg4MjcsIDY4NTIyLCA5NjY0LCA3MDgzNCwgNzc5NDAsIDY3ODkyLCAKKyAgICA3NzkzOCwgNzQzNDMsIDY3MzcwLCA3MjcxNCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgCisgICAgMTI1ODAsIDc4NTA3LCA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzE5LCA3MjcwNiwgODMyMjcsIDY1MDIsIDk4Mzc2MiwgCisgICAgMTEwODUsIDEyMTI2MSwgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAKKyAgICAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCAKKyAgICA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAxMjEwODYsIDkyNDY0LCA2Njc5MiwgNjk3MzAsIDgwMSwgNDMxNjUsIAorICAgIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgCisgICAgNjY4MDAsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIAorICAgIDEyMDEwMiwgNDM5ODAsIDU0ODUsIDE5NDg3MywgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAKKyAgICAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCA3NDIzMSwgMTAwNzA4LCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIAorICAgIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMTI4MDk5LCAxMjAxMDYsIDcwMDQ0LCAxMjcxMTAsIAorICAgIDY2ODA4LCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMTI5MzA3LCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgCisgICAgMTk1MDYzLCAwLCAwLCAwLCAxMTM2NjUsIDEyMDA5NywgMTI3OTYwLCA5NDA3OCwgNjY4NDAsIDEyNzE2NSwgNjY2MDgsIAorICAgIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgNzgzNDcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCAKKyAgICA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAKKyAgICA3MTE4NywgNzAzOTMsIDQxNzI5LCA0NDIzLCAxMzA3LCAxMTM2OTIsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAxMjg5MTgsIAorICAgIDYyMTgsIDkyOTE3LCAxNDMwLCAwLCAxMDA3MDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIDc2MTksIDMyNTUsIDM0OTMsIAorICAgIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgMTAwNzQzLCA0NTE4LCAxMDk5MCwgNjUwNzMsIAorICAgIDUxNjcsIDQ0ODEsIDM3NzEsIDY3MDkzLCAyNzEwLCA5MTc4NDcsIDY2Mjc3LCA0MTcyNCwgNjc3MTYsIDQzMDczLCA0MTY5MCwgCisgICAgMTI0NzksIDk4MzYzNSwgODM4MCwgMTIxMDcxLCA3MTg1MiwgNzAwNDYsIDE2MjgsIDEyMTIyOSwgMTI4ODE3LCAxMjkwNjcsIAorICAgIDY1MjYyLCA2MzMzLCAxMDc4MywgMTExNzIsIDEyMTQ3MywgNjM4NTUsIDcwODQwLCAxMTM2NzksIDAsIDUzMzksIDc0MzIzLCAKKyAgICAxMjA5NDYsIDEzMDA0LCA2Njg0MywgNDQ1NywgMTAwOTAxLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCA1Njg0LCA4Njc4LCAKKyAgICAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIDY1MTgzLCAKKyAgICA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMTI4OTA4LCAxMjA2NDcsIDEyODkzMCwgNTAsIAorICAgIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKKyAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAxMDA5ODcsIDEwNjQwLCAxMTUzOSwgMTE1MSwgCisgICAgMTIxMTg2LCA5MTc2MDcsIDEyNDk1OCwgMTI3MDc5LCA3MTEwNiwgMTE4OTQ5LCAwLCA5ODM5MjAsIDk4MzA3NSwgMTI1MDEsIAorICAgIDY0NjA0LCAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDEyNTE0MSwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgCisgICAgNjY0NjcsIDIxMDUsIDgwODcsIDcyNzEyLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCAKKyAgICA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDk4MzQ1NiwgMTE4OTY4LCAKKyAgICAxMjI3NywgMTIxMjM5LCAxMTk5NSwgOTI1NTMsIDEyMDY3NSwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIAorICAgIDkyNDI2LCAxMTk2MTAsIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCAxMjQ5NDksIDE4NzMsIAorICAgIDEwODcsIDEyNDk2NiwgNzEyNzUsIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDEyNzc5MiwgNzIzNywgCisgICAgMTI1MDQsIDcxMTEzLCAxMjY1NTksIDEyODc0OCwgMTIwODg3LCA5NDg5LCAxMjAwNjksIDcwODQzLCA0Mzg0LCA3NDIyMCwgCisgICAgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAKKyAgICAxMjg5NTUsIDAsIDYwNTUsIDEyOTU4LCAxMjA3MDYsIDc0MTY4LCAxMjgzODgsIDcwODQ2LCA0NDIxLCAxMDU5MiwgMCwgCisgICAgNDk1LCA2NjQwMCwgNDE3MTIsIDc5ODMsIDcwODMzLCA5Mzk5NywgNzA2OTYsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgCisgICAgNDE5NiwgMTk0NzA0LCA0MzcsIDQxNzA5LCA3Mzc3MiwgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIAorICAgIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMDA0NjksIAorICAgIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxMjgyMzAsIDQxNzg5LCAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMTI4NzQwLCAwLCAKKyAgICAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDk4MzgwNCwgCisgICAgOTIxODYsIDEzMjI5LCA3MTg0NSwgMTA1NzUsIDQzMzk5LCAxMDA0NjcsIDAsIDQxNzkxLCAxMTA0LCAxMjc5MjIsIAorICAgIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDYzOTYwLCAxMDgyLCAxMjEwMjQsIDg0MjgsIDY1NjksIAorICAgIDEyODQyOSwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIAorICAgIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDEyMDY3NywgMTE4ODc2LCAKKyAgICAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIDkyNDQ5LCAxMjUyMDksIAorICAgIDExMjE2LCAxMjEzMDcsIDE5NDg1MSwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCA5ODMyMjUsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMTk0ODU2LCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCAKKyAgICA3Mzg1NywgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMTIyOTIwLCA3MDExNSwgMTE0NjcsIDM2NjQsIAorICAgIDY1OTIxLCA2NDI5OSwgMTI0OTM5LCAxMjg0NjIsIDEyODAwMSwgNDMyNCwgMTI2LCA0MjI0NiwgNzUwMzAsIDY5OTg0LCAKKyAgICA2NzcyNSwgNjU5MjYsIDc3NDQsIDY4ODU5LCA3NDI3NywgNjYyODMsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIAorICAgIDAsIDY1NjAwLCAxNjMzLCAxMjgzMDEsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIAorICAgIDEzMDc4LCA5ODMyNzAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNjU1NSwgCisgICAgMTI4ODY3LCAxMjcwNzIsIDExNTQ2LCA3NDc5NCwgMzM3LCAxMjExOTYsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgCisgICAgOTgzODU2LCA3NTA0NywgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIAorICAgIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgCisgICAgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIDQzODUsIDEwMDQ2MiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgCisgICAgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIDEyNzc4NSwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCAKKyAgICA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAxMjUyMjIsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCAKKyAgICAxOTUwMDUsIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgCisgICAgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDEyMTE1MiwgMTIxMjE5LCAxMzE3MCwgMTI1NDAsIAorICAgIDEyNTIzMywgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgCisgICAgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1NDAsIDEyODMxMSwgMzM0MCwgNzQwMTcsIDkxNzU4NiwgCisgICAgMTIwOTk0LCAxMjkxNDEsIDkyOTc5LCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCAKKyAgICA4NjQsIDkxNzU4MiwgMTE4OTI2LCA4OTcyLCAxMDA0NDQsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIAorICAgIDUxOTIsIDQzMzgsIDY3OTgyLCAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgCisgICAgMTMxODgsIDkzOTkzLCA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCAKKyAgICA2Mzc4MiwgNjM3ODEsIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgCisgICAgMTI5MTA3LCA3MTA3MSwgNDE1MjIsIDQxNTIzLCA2ODUyMywgMTI5MTA4LCA2Njc1OSwgMTEzNTQsIDk0MDcxLCAwLCAKKyAgICA0Mjc5NSwgMTI4MDYxLCAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCAKKyAgICA0NDc5LCAxMTc4LCA2NTU4NiwgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgMTk1MDM4LCA2NjgyOCwgCisgICAgMTI4OTcyLCAxMjc4MzksIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgCisgICAgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMTI1MTIyLCAKKyAgICA2NDcxMCwgMTA3NDcsIDEyNSwgMTIwODAzLCA2NDg5MCwgNjY4MDUsIDEyNzM3NiwgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAKKyAgICAxMDc0LCAxMzI1OCwgOTUzNiwgNzEwNTYsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgCisgICAgNDE1MzIsIDEzNDksIDYzNzUwLCA2Mzc0OSwgMTI5MDI1LCAxMjg3NzMsIDEwMTAxNCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgCisgICAgNzI3ODQsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgCisgICAgNjI2MCwgNzg4MjYsIDEyODM5MSwgNjY3NjUsIDExNDM5LCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgCisgICAgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgCisgICAgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIAorICAgIDEyNTI0MSwgNzUwNTYsIDYzNzY5LCA5NTMwLCAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIAorICAgIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIDEwMDUxMiwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCAKKyAgICA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKKyAgICA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCA0NTU4LCA2NTY4NSwgOTUyMywgMTk1MDUzLCAKKyAgICA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIAorICAgIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIAorICAgIDEwMDY1MCwgOTQxLCAwLCAxMjkwNzksIDEyMDk2NywgNjU1NDEsIDExMDYzLCA5ODMxOTgsIDgyMjgsIDczOTg4LCA0MjA2NSwgCisgICAgMTIyODkzLCA0Mzg4OSwgOTQwMzksIDEyNzA0MSwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCA3MDI5NSwgMTE5ODYzLCAKKyAgICA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDgzNDA5LCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDY2ODIwLCA2NTMwMCwgCisgICAgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDk4MzYyMCwgMTI3ODI5LCA2NTM5MywgMTIwNTkyLCAKKyAgICA3NDEzOCwgODM1MDUsIDkyNzUxLCA3NTAxOSwgNzQxMzksIDc4Nzc3LCA2NTM5NCwgMTE1NDgsIDUyNzAsIDEyODE0OSwgCisgICAgNjUzOTYsIDc0OTk4LCA2NTgxMywgMTMyNTYsIDEyODIsIDEyMDc3MSwgNzUwMTIsIDEyMDE1NywgMTA4ODgsIDEyMDkzNCwgCisgICAgNjUyNDIsIDAsIDMzMzAsIDEyOTQxNywgMCwgNjgzNDAsIDEyNDkzMSwgOTgzNjA1LCA3MTIwMiwgMzMwNCwgNDI3NTMsIAorICAgIDkyNTg4LCA3MDI5OCwgNzQ2NDMsIDE2MjcsIDEyOTEyMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCA5ODM3NzcsIAorICAgIDE4MjYsIDExODc5NCwgOTgzNDk3LCA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCAKKyAgICA5MTc5NzcsIDEyODAwNSwgMCwgNzI3MzMsIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAKKyAgICAxMDA2MzQsIDQzMTE2LCA2NzcxOSwgNzAwMTksIDEzMjQ1LCAxMDA2MzcsIDY4ODA4LCA2NjgxOCwgMTI4MDA5LCA3MDAzMSwgCisgICAgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgOTgzNDczLCAKKyAgICA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgCisgICAgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIAorICAgIDcwMjA0LCAxMjUxMjksIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDIzMDMsIDExMDU3LCAxMjQ5OTQsIDEzMjc2LCAxMjUxMzMsIAorICAgIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDEyNjQ3OSwgMTI3OTA0LCAxMTkwOTEsIDEyMjI5LCAxMTY4MCwgOTI5NTYsIAorICAgIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDE5NTA4OSwgOTgzNDk1LCAxMDQ3NiwgMzg1OCwgNjQxNzUsIDM5MzIsIDY0OTU4LCAKKyAgICAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgNDE3ODQsIDExOTE3NSwgNjQxNjMsIAorICAgIDc3OTk3LCA3MjcwNywgOTI2NDUsIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgMTI4NjMxLCA0MTc4MSwgCisgICAgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgOTI2MDgsIDk4Mzg3MCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgCisgICAgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIDExODgyNiwgCisgICAgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI0OTQ2LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIDQ3MDgsIDM3OTksIAorICAgIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgMTM2NCwgCisgICAgOTgzMzE3LCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKICAgICA3Mzk2OCwgMTMyMjUsIDE5NDkwMiwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCA3MTQ3NiwgNDI4NTUsIDExODg1NiwgCi0gICAgNDI4NjYsIDAsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIAotICAgIDk4MzkyMCwgOTgzNTY4LCAxMjg4NzEsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAKLSAgICAxMDM0MCwgMTE5MzUyLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDk4MzI0NSwgCi0gICAgMTIxMTQ5LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgCi0gICAgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAxMDk2LCA0Mzg1MiwgCi0gICAgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDkyOTAyLCA4MDMyLCAKLSAgICAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIDExOTM0NSwgODU5NywgCi0gICAgNzExMDAsIDEyOTA2MiwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAKLSAgICAwLCAxMDQ1OSwgMTE5ODc4LCAxMjQ5NDksIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIAotICAgIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgNDM2MzgsIDc4NTM2LCAxMjExODcsIDYyNjEsIAotICAgIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgCi0gICAgOTE3Nzk1LCAyOTI1LCA3MzgwOSwgMTMwNTYsIDkyOTE0LCAxMzIxMiwgNDMyMzgsIDEyMTM5NiwgMTMxOTAsIDEzMTg3LCAKLSAgICA5MjU0MSwgMTMxOTgsIDExODc5MywgMTIxMDg5LCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCA3MTM2OSwgCi0gICAgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCA5ODM3MjgsIDQzNTQ0LCAxMjY0NjYsIDAsIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIAotICAgIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTIwMzIyLCAxMjMxNCwgNjU2MTYsIDUyMzgsIAotICAgIDQzODI1LCA3MTA4NSwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgOTgzMTQwLCA3MTg3NCwgODI4NiwgMTI4NTM3LCAzOTM2LCAKLSAgICAxMTkzMzEsIDExNjk5LCA0MTM0NywgNjk3MzksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgMTMyMzksIDEyNjkyLCAKLSAgICA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgOTI5MDcsIDY2MjI0LCA3MzQsIDI5NzksIAotICAgIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCA3MTE5MiwgCi0gICAgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgCi0gICAgMTExMzYsIDcxODc2LCAxMTUwNiwgMTI4Mzk1LCA0Mjg0MSwgMTMyNjcsIDEyODQyMSwgMCwgNDE3NzUsIDAsIDcxMzAsIAotICAgIDQxNzczLCAwLCAxMDY2MywgNzAxMzAsIDAsIDk4Mzk3NCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIAotICAgIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAxMjc5NjQsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgNjc4MTQsIAotICAgIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgNzAwMDQsIDQzMzg2LCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIAotICAgIDE5NDkzMCwgNjgzNTgsIDcxNDgzLCA2OTc4OSwgNDI2NTMsIDgzMTgxLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzEwNDUsIAotICAgIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCA2NjQxOCwgNjY2MjEsIDc0MjE5LCA2NjQxMiwgCi0gICAgMTI4ODIyLCAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCA2NjQyMSwgMTIzNjEsIDU2NzcsIDU1ODgsIDkyMzQ4LCAKLSAgICA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgODMxMTMsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAKLSAgICAxMjk0LCAwLCA3ODA1OSwgOTgzOTYyLCA0MjUxMSwgMTcyNywgMTIwNzI1LCA0MjQzNiwgMTIxNDAwLCAxMjExODMsIDAsIAotICAgIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCA1ODczLCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIAotICAgIDEyOTAzMiwgOTI4ODksIDU4NDEsIDU4MzcsIDU1MjM0LCAxOTQ4NjQsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAKLSAgICAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCA5MzAwOSwgNzk1NiwgNTk4LCAwLCA2NDY0OSwgCi0gICAgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIDEyMDA0MSwgOTgzMjU3LCA4MzQ3OCwgOTgzOTI5LCA4MzE4NCwgMCwgODQ3LCAKLSAgICAxMjgyNDIsIDk1MjksIDgzMDE4LCA2NjY1NywgNjk4MCwgNzg0ODMsIDQzNTEwLCA3ODEyMiwgOTIyMTksIDAsIDY3NDExLCAKLSAgICA3ODQ4NiwgODMwMTcsIDEyNzI2MCwgMTIwMDM5LCA0MjY4MywgNzE4NDgsIDk4MzA1NSwgNzExNCwgMTI2NTIxLCAwLCAKLSAgICA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDc1MDU5LCAKLSAgICAxOTk2MywgNTY5OCwgMTk0NzY4LCA5ODMyNzIsIDkyOTMzLCA3MTg4NywgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgCi0gICAgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCA3MDMwNCwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKLSAgICAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCA5MTc4NDMsIDQxMDE1LCA3NDQ3MywgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIAotICAgIDQxODAyLCA5ODM2NTIsIDQyNjA4LCA3ODQ2OCwgOTg4NCwgNDc1OSwgNzM3NjgsIDEyMDI5NiwgMTAyNjYsIDQxMzU5LCAKLSAgICAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDkyNzczLCA2MzkzNiwgODMyNDcsIDExNjYxLCA4MTIyLCAKLSAgICA1ODE4LCA4MzI0NSwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDk4Mzk2NiwgMCwgCi0gICAgODA3LCA0MzA3OSwgNzgwOTIsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAxMjA4NjMsIDQyMTU1LCA5ODMzMTksIDQxMzU2LCAKLSAgICA3NDExMCwgMTE4ODAxLCA3MTA0MywgMTIwMDgwLCA4Njc2LCA5ODMyOTMsIDk0MDAyLCA1NTgyLCA0NTEsIDYzOTQxLCAKKyAgICA0Mjg2NiwgMTAxMDc3LCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgCisgICAgMTE5MzU0LCAxOTQ5NDAsIDk4MzU2OCwgMTI3MjUzLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAKKyAgICAxMDQwNCwgMTAzNDAsIDQxNDczLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIAorICAgIDk4MzI0NSwgNzA2ODQsIDQxMzczLCA2ODQ4NiwgMTIzMDMsIDEyODQ3NiwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAorICAgIDQxMzcxLCAxMTY1NiwgOTgzNjkxLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgCisgICAgMTA5NiwgNDM4NTIsIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAKKyAgICA5MjkwMiwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAKKyAgICAxMTkzNDUsIDg1OTcsIDcxMTAwLCAxMjc1NTksIDk4NjQsIDk4Mzk0MywgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgCisgICAgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCA3MjgzMCwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCAKKyAgICA0MTUzMywgNjYzMzcsIDEyODY2MywgOTIxODQsIDk4Mzg2MCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIAorICAgIDQzNjM4LCA3ODUzNiwgNzI3MTksIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAKKyAgICAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgOTE3Nzk1LCAyOTI1LCA3MzgwOSwgMTMwNTYsIDkyOTE0LCAxMzIxMiwgNDMyMzgsIAorICAgIDEyMTM5NiwgMTMxOTAsIDEzMTg3LCA5MjU0MSwgMTMxOTgsIDExODc5MywgMTIxMDg5LCA1MjQyLCAxMTkxNzksIDY0NDc2LCAKKyAgICAxNjk0LCA4MjE2LCA3MTM2OSwgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCAxOTQ2MjksIDQzNTQ0LCAxMDA0NDEsIDAsIAorICAgIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTAwOTI0LCAKKyAgICAxMjMxNCwgNjU2MTYsIDUyMzgsIDQzODI1LCA3MTA4NSwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgOTgzMTQwLCA3MTg3NCwgCisgICAgODI4NiwgMTIxMjkyLCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgNjk3MzksIDEzMjM1LCA4ODQyLCA0MTI0OCwgCisgICAgMTAwNDkwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCAKKyAgICA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIAorICAgIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIAorICAgIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAxMTEzNiwgNzE4NzYsIDExNTA2LCA2NTkzNCwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIAorICAgIDEyNDk4OCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCA5MTc4ODgsIDEwNjYzLCA3MDEzMCwgMTI1MjI1LCA5ODM5NzQsIAorICAgIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgCisgICAgMTAwNDkzLCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCAKKyAgICA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCA3MDcyMCwgNjgzNTgsIDcxNDgzLCA2OTc4OSwgNDI2NTMsIAorICAgIDgzMTgxLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzEwNDUsIDExOTY1MSwgMTI4NTE0LCA5MTc5MTUsIDQxOTIxLCAxMTg4NTgsIAorICAgIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAxMjg4MjIsIDcwNzE4LCA4MDEyLCA1Njc0LCAxMjM1MywgCisgICAgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCAKKyAgICA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgMTI5NCwgMTIwODc4LCA3ODA1OSwgOTgzOTYyLCA0MjUxMSwgMTcyNywgCisgICAgMTIwNzI1LCA0MjQzNiwgMTAwNDk3LCAxMjExODMsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAKKyAgICA1ODczLCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDEyMDA4NiwgOTI4ODksIDU4NDEsIDU4MzcsIDU1MjM0LCAxOTQ4NjQsIAorICAgIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCA5ODM4NDAsIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIAorICAgIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDk4MzI2MCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAKKyAgICAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgNzEyNjYsIDkxNzYxOCwgODQ3LCAxMjUwNjUsIDk1MjksIDgzMDE4LCAKKyAgICA2NjY1NywgNjk4MCwgNzg0ODMsIDQzNTEwLCA3ODEyMiwgOTIyMTksIDAsIDY3NDExLCA3ODQ4NiwgODMwMTcsIDEyNzI2MCwgCisgICAgMTIwMDM5LCA0MjY4MywgNzE4NDgsIDEwMTA5NSwgNzExNCwgMTI2NTIxLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDcwNjU3LCAKKyAgICA0MjYxMSwgNDI1NjMsIDEwMTA3MSwgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDc1MDU5LCAxOTk2MywgNTY5OCwgCisgICAgMTk0NzY4LCAxMjA3MzAsIDkyOTMzLCA3MTg4NywgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgNjgxNDEsIDgzNzIsIAorICAgIDEwMDgwMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIDEwNTY4LCAKKyAgICA5MTc1NjUsIDEyNzQwMCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgCisgICAgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgMTE3MCwgCisgICAgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgNTgxOCwgCisgICAgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDEyMTAyOCwgODA3LCAKKyAgICA0MzA3OSwgNzgwOTIsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAxMjA4NjMsIDQyMTU1LCAxMjg5NTEsIDQxMzU2LCAKKyAgICA3NDExMCwgMTE4ODAxLCA3MTA0MywgMTIwMDgwLCA4Njc2LCAxMDA1MTksIDk0MDAyLCA1NTgyLCA0NTEsIDYzOTQxLCAKICAgICA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAxMjg1MjEsIDc4NjgxLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAKLSAgICAxMjg4NTMsIDc0OTMzLCA3MDM0MiwgMTEwMDUsIDE5NDY5OSwgNjY2NTYsIDY2MDQ0LCAxOTQ2MzYsIDEyMDA3OSwgCi0gICAgMTI4NzkzLCAwLCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgOTMsIAotICAgIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAxMTg4ODgsIDExOTA5NywgODI5OTYsIDkxNzU0MywgMzgzLCAKLSAgICA3MTU0LCA0MTY1NiwgNDM0OTUsIDk0MDQwLCA2NzE2MiwgNTE4NywgNzEyOTYsIDcxMDg2LCAxMTI4NiwgNjg2MjAsIAotICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMTI3Mzc3LCA0MTAwNSwgOTgzODEwLCAwLCAxMjg0NzEsIDgyOTIsIDEyNTEwOCwgCi0gICAgNDk4MCwgODg2MCwgNzEwNTQsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgNzQ5MTIsIDEyNzk3NCwgCi0gICAgMTA2MzEsIDExMjQ0LCA3OTcyLCA2ODA0MiwgNzg3ODUsIDAsIDc5MDAsIDEyODU5MCwgMTEzMDksIDM4MDYsIDQxOTgsIAotICAgIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgOTI1NTIsIDAsIDEyOTMxLCAxMjExMTAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgCi0gICAgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAxMjc5MjAsIDE5NDcxMywgMTI4MzYsIDAsIAotICAgIDExMzgwMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMTIxMzMzLCAxMjg4NDMsIDc0NjQsIDAsIDY1ODY1LCAKLSAgICAwLCAxOTQ2NTAsIDEyNzE0NCwgOTIzOTUsIDkzNDIsIDEyMDQ2NCwgNzAzNzYsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIAotICAgIDQxMDA3LCA3NDM3NSwgOTgzNzAxLCA0MDk5NSwgMTIyMDksIDQxMDEyLCA4MzUwMSwgMCwgODMyNTcsIDY5NzI0LCA0MDk5MiwgCi0gICAgOTIyNjQsIDExOTEzNiwgNjg2NTMsIDQzNTU4LCA1NTIyLCA3NTAyNiwgNjEsIDEyMDk1OSwgNzQxMDUsIDM2MzMsIAotICAgIDEyMDA4MiwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDgzMjgxLCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAKLSAgICAyNzg0LCA0Mjc0MywgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIAotICAgIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgCi0gICAgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIAotICAgIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMTIwOTkyLCAxMjExNzUsIDc3NDMsIDgzNTAyLCAxMjQ5OTYsIDc3OTA0LCAKLSAgICA3NzkxMywgNzc5MDUsIDkwMzQsIDYwMzksIDEyOTEzOSwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAKLSAgICAwLCAwLCAxOTQ2MzcsIDQyODE1LCA5Mjk4NCwgNDE5NjYsIDAsIDEyNzQ3MSwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgCi0gICAgOTExLCA3NTM5LCAwLCA0MDk2MywgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDk4MzE2MCwgNTUyMCwgMTE2NjIsIAotICAgIDEyNzQ3MywgNjUzMzAsIDQyODEyLCA5ODMyMTUsIDAsIDEyMzI2LCA3MTA4MSwgMTk0NjM4LCA0MjgwOCwgMTI4MzM3LCAKLSAgICA5MzQ4LCA2NDkwMSwgOTgzODYxLCA5ODM4OTIsIDEyMTA1MCwgNjY4MzksIDAsIDAsIDEyMTAwNCwgNDM3MDIsIDk4MzE0OCwgCi0gICAgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDgzNTAzLCA4NjQ0LCAxMjEyMjcsIDgzMzMyLCAxMTE4NiwgNzQyOTYsIAotICAgIDQxOTA5LCAwLCA2NjkwMCwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCA2NjM5NywgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIAotICAgIDg3NjEsIDEyOTQyLCA1NzQ4LCA5MjcxMywgMTA3NzMsIDcwODY4LCA4MzE3NCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIAotICAgIDg1MjAsIDEzMTQ2LCAxMjcwOTYsIDYzOTMxLCA4MzI3NSwgNjU5MDIsIDI4ODIsIDgzMzM0LCAwLCAxMjg0MywgNDUyMCwgCi0gICAgMTIwMzQ1LCA5MjQ1OSwgMCwgOTgzNjYwLCAwLCA3Mzg2MCwgODMzMzUsIDAsIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIAotICAgIDcwODcxLCAwLCA5MTc4NjQsIDQzNjc5LCAxMjEwMjYsIDY1MTE3LCA5MjI3MCwgMCwgMTA0MjcsIDEyMTUwNiwgMzg0NCwgCi0gICAgNjg0MiwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDkzMDMwLCAxMjg3ODksIDk4MzYzOCwgOTI5MjgsIDc4MywgMTk0OTM1LCAKKyAgICAxMjg4NTMsIDc0OTMzLCA3MDM0MiwgMTEwMDUsIDE5NDY5OSwgNjY2NTYsIDY2MDQ0LCAxOTQ1ODYsIDEyMDA3OSwgCisgICAgMTI3MjQ5LCAxMjA3OTcsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCAKKyAgICA5MywgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAKKyAgICAzODMsIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCisgICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDQzMjA1LCAxMjA4MjksIDgyOTIsIAorICAgIDEyNTEwOCwgNDk4MCwgODg2MCwgNzEwNTQsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgNzQ5MTIsIAorICAgIDEyNzk3NCwgMTA2MzEsIDExMjQ0LCA3OTcyLCA2ODA0MiwgNzg3ODUsIDAsIDc5MDAsIDEyODU5MCwgMTEzMDksIDM4MDYsIAorICAgIDQxOTgsIDQyNzI1LCA5ODMzMTEsIDY3NjU2LCA5OTk1LCAxMjAwNzIsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgCisgICAgNzQyODUsIDIwODgsIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIAorICAgIDEyODM2LCAxMjUyMTQsIDExMzgwMCwgNzQzNDIsIDg1OTMsIDEyMDY0MCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIAorICAgIDEyODg0MywgNzQ2NCwgMTAxMDY2LCA2NTg2NSwgMCwgMTI4NTM1LCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIAorICAgIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgCisgICAgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIAorICAgIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgCisgICAgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMTk0NjYyLCA0NDEsIAorICAgIDQyNjIxLCA3MDY2MCwgMCwgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgCisgICAgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCAKKyAgICA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCAKKyAgICA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAKKyAgICA5ODM3NjUsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAwLCAwLCAxOTQ2MzcsIDQyODE1LCA5Mjk4NCwgNDE5NjYsIDAsIAorICAgIDEyNzQ3MSwgMTI1MTg4LCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDk4MzQ4NywgNDA5NjMsIDEwMDQ0NywgCisgICAgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgMTE5OTEyLCAKKyAgICAxMjY2NDcsIDEyMzI2LCA3MTA4MSwgMTk0NjM4LCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODYxLCA5ODM4OTIsIAorICAgIDEyMTA1MCwgNjY4MzksIDAsIDAsIDEyMTAwNCwgNDM3MDIsIDEwMDgwNywgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIAorICAgIDgzNTAzLCA4NjQ0LCAxMjEyMjcsIDgzMzMyLCAxMTE4NiwgNzQyOTYsIDQxOTA5LCAwLCA2NjkwMCwgMjc5MSwgNjk2NjMsIAorICAgIDE4OTEsIDY5ODI0LCA2NjM5NywgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCA1NzQ4LCA5MjcxMywgCisgICAgMTA3NzMsIDcwMjA2LCA4MzE3NCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCA3MjgwNSwgNjM5MzEsIAorICAgIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDEyODI4NSwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDEyOTA5MiwgCisgICAgOTgzNjYwLCAxMjAwNjgsIDczODYwLCA4MzMzNSwgMTI4Mjg5LCA2NDM0NSwgOTgzNTU0LCA5MjAxLCAxMjgzMTQsIDcwODcxLCAKKyAgICA5ODM4MDksIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCA5ODM2MzYsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAorICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTAxMDUxLCA5ODM2MzgsIDkyOTI4LCA3ODMsIDExOTU3NywgCiAgICAgOTIxODUsIDEyNzIyMSwgNzM4NTUsIDY4MDMyLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCA2NzgzOSwgCiAgICAgNjg0ODAsIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDY3ODIzLCAwLCAxMjc1MjcsIAotICAgIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzYzNiwgNjM5OTksIDIwMTYsIAorICAgIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzIzOSwgNjM5OTksIDIwMTYsIAogICAgIDQxOTE3LCA5Nzg4LCA2MzkyOCwgNjc2OTYsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCAKICAgICA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMTIwODM0LCAKICAgICA2NDU5MiwgNzQyNzYsIDY3Njg4LCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDcxMjE4LCAxMTM4MjEsIDY2MzY2LCAxMjE0NywgCiAgICAgOTAyNCwgNjYzNzgsIDY2NDcyLCAxMjQ5NzYsIDY0Mjg5LCA2NTI4OSwgNzgxNTEsIDY2NjU4LCA3MTkzNSwgNjQ1MDksIAogICAgIDc4MTUyLCAxMTM2OTcsIDEyNjUwNSwgMTEwNTEsIDE5NDkyOCwgMCwgMTEzNTUsIDY1ODg1LCAxMjEzMTksIDEyNzk0MSwgCi0gICAgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAKLSAgICAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMTI5NDcyLCAKLSAgICA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTI2OTkwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDY1NjA1LCAKLSAgICA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIAotICAgIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAxMTUxOCwgODMyOTIsIAotICAgIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgNjM5NjAsIDk1OTEsIDQ1MTYsIAotICAgIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgMCwgNjgwNzksIAotICAgIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCA0Mzc4LCA5MTc1MzksIAotICAgIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgOTgzMDQwLCAxOTQ5MTAsIAotICAgIDEyMTM5MiwgODE2MSwgMzkzLCAxMjAxMywgMCwgOTgzMTk4LCAxMTkxMDMsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgCi0gICAgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIDQ0NzIsIDk4MzI5OSwgMCwgNzgxNTksIAotICAgIDY5Njk5LCAxMjczMDEsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIAotICAgIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgCi0gICAgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTI5MTk2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgMCwgMCwgCi0gICAgNjM5ODAsIDExODAxLCAzNjIyLCAxOTUwOTIsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgCi0gICAgMTk2NiwgNDM2MjgsIDk4MzkwOCwgOTgzMjk0LCA4MzI2NywgMTIxMDUyLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIAotICAgIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIAotICAgIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCA4MzMyMywgMTk0NjcwLCAKLSAgICAxMjA4MzYsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIAotICAgIDE5NDczMywgNzA0MTEsIDc4NzE4LCAxMjExNDAsIDc0MzAxLCA2ODgyNSwgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAKLSAgICAxMjgzOTIsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMjQ5ODgsIDc0MDIsIAotICAgIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAwLCA2NjYxNiwgNjY4MzIsIDkyOTY2LCAxMjA4NTIsIDU0MDUsIAotICAgIDEyNzg3NSwgNjQ4NjYsIDEyMDk2NSwgMTE5NTgzLCAxMTkxMjIsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgCi0gICAgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDEyOTEyNywgNjUwNzcsIAotICAgIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCAwLCAKLSAgICA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCA5ODM3NjIsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIAotICAgIDEyODQwNCwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgCi0gICAgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgMCwgMTI4NTAwLCAxMjcwNDYsIDAsIDAsIDExMzgyMiwgCi0gICAgMTA2NTYsIDEyNTA0MiwgNjUyMTQsIDkyOTg3LCA0MjU2NywgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIAotICAgIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCAxOTQ1NzQsIDExNDQzLCA5ODM2MDMsIAotICAgIDY2MzE5LCA2ODQxLCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMTE5MTE3LCA3NDQ4NSwgCi0gICAgNDI0NDIsIDY1NDcwLCA5ODM5MDcsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgNjk5ODIsIDcwNTA1LCA5ODI4LCAKLSAgICAwLCA0MzUwNSwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgCi0gICAgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDY4MzE1LCAwLCAwLCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgCi0gICAgNDIxOTYsIDAsIDAsIDAsIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgCi0gICAgMTA2NDMsIDU1MjcxLCAxMjg5NTEsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIAotICAgIDE5NDgyMiwgMTk0NzU2LCA3NDMxMCwgNjU1NCwgOTQwNTksIDExOTE0LCA1NDUyLCAwLCAwLCA5Mjc3MiwgMCwgOTE3ODgwLCAKLSAgICAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAxMTk1NjQsIDk2NTAsIDQzMzMwLCAxMjEwMzMsIDEyODUwNSwgMTQwNiwgMTI1MDA3LCAKLSAgICA0MjkyNSwgNzQ2MzgsIDE5NDU5MywgNjYyNTYsIDQxNDMsIDEyODEzNiwgMTk0NzYyLCA2NTc0OCwgNDE0MSwgOTY4MiwgCi0gICAgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCA0MTQ1LCAKLSAgICA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDQyOTMyLCA0MzQwMywgMCwgMCwgCi0gICAgMTk0NzgzLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjA1LCAxMjk1NSwgMTA1OTYsIDI4ODgsIDgzMTkwLCAwLCAKLSAgICAxMjEzNTQsIDk2NTcsIDkwMTksIDEyMTE1NCwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCA2NzMyNSwgNjg2NzksIAotICAgIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgCi0gICAgNjgzODEsIDAsIDAsIDg5ODYsIDQzODM4LCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAxOTQ5NzAsIDEyNjY0NywgCi0gICAgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAKLSAgICAxMjg5ODAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCAKLSAgICA0MTkyNywgMTA1ODIsIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIAotICAgIDEzMTU4LCA5MjE2NiwgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyODc2OCwgCi0gICAgMTM0MiwgNjg0NDAsIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ5NiwgMCwgOTI1MjcsIDAsIDcwNDM4LCA0NDgyLCAKLSAgICA0MTYwNiwgMTI4OTM0LCAxMjUwMzMsIDEyMTQ3NSwgMCwgNjQzODEsIDk4Mzk0MCwgMTk0OTc0LCAxOTUwOTAsIDQyMjQ1LCAKLSAgICAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDk4MzQzOSwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAKLSAgICAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgNzAxNzcsIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMCwgCi0gICAgOTgzMjU4LCA0MDk5MCwgNDM3NjUsIDEyMTI2MiwgMzQ5MiwgOTE3OTA2LCAxMTg3ODQsIDEyOTAyNiwgMCwgOTgzNTY2LCAKLSAgICAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDk4MzI2MSwgMTE5MDU5LCAKLSAgICAxMjAzNiwgNDEzMDksIDEyODE2MSwgMCwgODE1MiwgMCwgNDE1NTAsIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIAotICAgIDc1MDE1LCAxMjA5NjQsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgCi0gICAgNjgxNTQsIDEyNzg3NiwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDcwMDUyLCAKLSAgICA2NDQzOSwgMTI4ODY0LCA2ODA2MiwgOTI2ODYsIDk4Mzg3NSwgMCwgNDM4NjYsIDEyODg4MSwgMCwgMzM5NSwgOTM2MiwgCi0gICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDAsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIAotICAgIDEyMTEwMCwgNzEzNDQsIDQ3MzUsIDExMTExLCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDk4MzgyNCwgNzQ4MTgsIDE0MjMsIAotICAgIDEyODkyMywgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAwLCA5NDcyLCA2NzczNCwgCi0gICAgMTE5MjksIDEyNjU1NywgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDcxNDc1LCAwLCA5MjUwMSwgCi0gICAgMTI1MDgxLCA3ODA0NiwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM2LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKLSAgICA2ODQxNCwgNzQ2MTQsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAxMTc3NiwgNzU1OCwgNzAxMDksIAotICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIAotICAgIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIAotICAgIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAotICAgIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCA2NTQ2OSwgNzAxMjUsIDAsIDAsIDI0MTAsIDk5MywgCi0gICAgODMxMTcsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAKLSAgICAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIAotICAgIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMTE5MTUzLCAxMjA0NDEsIDI3MiwgCi0gICAgNDI2MywgODc5MywgOTgzODU2LCAwLCA0MTUwMiwgMTI4MTMzLCA5ODMsIDEyNTQ5LCAxMjQ5NDAsIDAsIDExOTAsIDQxMDksIAotICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgNTEyMCwgCi0gICAgMjQwOSwgNzc5OSwgMCwgNzQ0MjQsIDAsIDEyMTA0MSwgNDczMSwgOTIyNzksIDY2NjI5LCAxMjgxMjcsIDkyNTI1LCAxMjU1LCAKLSAgICA0MTQ5LCA5MjQ3LCA3NDk3NywgOTkxMywgOTgzODI4LCAxMjExMDEsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAxMTM3MTQsIAotICAgIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIDQzMDk3LCAKLSAgICAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDkxNzkwMCwgODE4MCwgMTI1MDU1LCAwLCA5OTcyLCA3Mzg2NSwgCi0gICAgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIDk4MzMyNCwgMTI2NTgxLCAxMDY5NSwgMCwgCi0gICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgOTE3ODk3LCAxMjkxMzQsIDEzMzExLCA2ODQwMywgNDE4NTcsIAotICAgIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIAotICAgIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCAwLCA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIAotICAgIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDgyOTYyLCAxMjg5MDgsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAKLSAgICAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMTI4NjY0LCA4MzI0NCwgMTQ4OSwgMCwgMCwgMCwgCi0gICAgMzg5OSwgMTAwNywgNDIxMjQsIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgMTM0NSwgNzg2MDAsIAotICAgIDExOTgzMiwgOTE3NTYzLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgCi0gICAgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIAotICAgIDEyMTI3MCwgMCwgNzUwMjcsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgMjI5NywgMCwgCi0gICAgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgODMxNTIsIDk5MzMsIDc0MDExLCAKLSAgICA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIDAsIAotICAgIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDk0MDE4LCAKLSAgICAxMTg4MjMsIDY1MzUzLCAwLCA0NjMxLCAxMTg5OTYsIDAsIDY0MDcsIDExMzczNywgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIAotICAgIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzkyLCA5Mzk4MywgMTk1MDQzLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIAotICAgIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCAKLSAgICA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIAotICAgIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIAotICAgIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgOTE3NTc5LCAwLCA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCAKLSAgICA3NDc5OCwgOTE4MSwgNjUzNTksIDEyNTA2NSwgODAxNywgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgCi0gICAgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMjA2OTYsIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgCi0gICAgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIAotICAgIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgCi0gICAgOTgzODg3LCAxMjA2OTUsIDEyNzYzLCAxMjY2MDMsIDM2MjksIDEyMDg0NCwgMTMwMDUsIDExMTgxLCAzNjI4LCAwLCAwLCAKLSAgICA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIAotICAgIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIAotICAgIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgCi0gICAgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCAKLSAgICA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDAsIDExOTgyOCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgCi0gICAgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCAKLSAgICA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgCi0gICAgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIAotICAgIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIAotICAgIDE2MjksIDAsIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgCi0gICAgNjEyMCwgNDc4LCA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgCi0gICAgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgCi0gICAgNjgzODQsIDkyNzU0LCA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCAKLSAgICA3ODUyMiwgNzg0LCA0MjM5NywgMzM0LCAxMjEwODQsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgCi0gICAgMTAzNjQsIDQzOTM1LCA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIAotICAgIDI5MTUsIDExNTAyLCA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDAsIDU0MTUsIAotICAgIDEyMTc2LCA5ODM3MDksIDc0MTkzLCAzNDYyLCA0Mzk0MCwgNDI2MjksIDc4NjkxLCA3MTE3NSwgNDM5NDIsIDEyNzI1NiwgCi0gICAgOTc1OSwgMTI3MjU1LCA3MDA1NywgMTIxNDQyLCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgCi0gICAgNDI0OTUsIDExODk1NiwgNzAxODksIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgCi0gICAgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY0NDM2LCAxODc1LCAxMDgwOCwgCi0gICAgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgCi0gICAgNTU3NSwgOTY3NSwgNzExMjksIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc5LCA5Mjk3OSwgNDMyMzYsIDMzODIsIAotICAgIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDExMzgxNCwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgNDMxMDAsIAotICAgIDY5ODg4LCA2NTUwOCwgOTgzMTQzLCAwLCAxMjE0NTEsIDg5MzUsIDc4MjM0LCAwLCA5ODM3NTcsIDAsIDYxNiwgNzQ3NTMsIAotICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCA3NDYzMSwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCisgICAgNDEyMTQsIDEyOTMzMSwgMTIyOTksIDEwMTA3NSwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIAorICAgIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMTEzNzM0LCAxMjc4OTksIAorICAgIDM2MjQsIDQzMDM2LCAxMjk0NzIsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMTA1OTIsIDYzOTkzLCAKKyAgICAxMDQ0MCwgOTYxMSwgNjU2MDUsIDY4MDMsIDEyMDk2OCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIAorICAgIDc4MTY0LCA0MzgxNCwgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIAorICAgIDExNTE4LCA4MzI5MiwgNzg3OTAsIDk4MzM4MSwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAxMjUwMywgCisgICAgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDkyMzI1LCAKKyAgICAxMjUwNjcsIDY4MDc5LCAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgCisgICAgNDM3OCwgMTI4NzQzLCA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIAorICAgIDgzMzIyLCAxMjY2MTIsIDEyMTM5MiwgODE2MSwgMzkzLCAxMjAxMywgOTgzMjIxLCAxMDA1MDksIDExOTEwMywgNDE1LCAKKyAgICA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDcxMDU4LCA2Mzk2MSwgCisgICAgNDQ3MiwgMTAxMDU0LCAwLCA3ODE1OSwgNjk2OTksIDEwMTA1NSwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIAorICAgIDc2OTEsIDEwMzMxLCA2MzgzMCwgODM0NTAsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCAKKyAgICA5NTY1LCAxMDUzOSwgNjk3MDEsIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEwMDUwNiwgODQ1NywgNDIzMDEsIDExMzcyLCAKKyAgICA2NDg3MywgMTE5OTIsIDE5NDg3NCwgMTI5MzA2LCA2Mzk4MCwgMTE4MDEsIDM2MjIsIDEyODkwNCwgNjQzMzYsIDEyMDE3LCAKKyAgICAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCA0MzYyOCwgNzI3OTQsIDEwMTA2MCwgODMyNjcsIDEyMTA1MiwgCisgICAgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCAKKyAgICA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCAKKyAgICA0MzM5NSwgOTgzMzczLCA4MzMyMywgMTI4MzU4LCAxMjA4MzYsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAKKyAgICAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIDEyNzA0OSwgNzA0MTEsIDc4NzE4LCAxMDA5MzAsIDc0MzAxLCA2ODgyNSwgCisgICAgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAxMjgzOTIsIDE5NDk4OCwgNzI3NTIsIDUxNDUsIDEyNDg2LCA2NTAxOCwgCisgICAgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTE5MDU3LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMTAxMDUzLCAKKyAgICA2NjYxNiwgNjY4MzIsIDkyOTY2LCAxMjA4NTIsIDU0MDUsIDEyNzg3NSwgNjQ4NjYsIDEyMDk2NSwgMTE5NTgzLCAxMTkxMjIsIAorICAgIDIyMzUsIDc0MjQ4LCAxMTMzMCwgMTI5MTIzLCA2NDY5MCwgMzI1NCwgOTgzMTY2LCAxMjg5NDQsIDkyNjk2LCA0MjM5MCwgCisgICAgNDM2NzgsIDEwMTAwMCwgMTI5MTI3LCA2NTA3NywgMTI5MDU5LCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAKKyAgICAxMTUyMCwgNTYxMSwgODMwMjEsIDMzNzcsIDAsIDk4Mzg0NSwgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgCisgICAgMTI4MzY4LCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAxMjExNjYsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCAKKyAgICA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIAorICAgIDExOTkzNSwgMTE5ODI2LCAxMjcwNDYsIDAsIDAsIDExMzgyMiwgMTA2NTYsIDEyNTA0MiwgNjUyMTQsIDkyOTg3LCA0MjU2NywgCisgICAgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDk4MzYwNywgOTgzOTI2LCAwLCA2NTAzNCwgCisgICAgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgNzQ2MzEsIDExNDQzLCA5ODM2MDMsIDY2MzE5LCA2ODQxLCA2MDgsIDYwMCwgCisgICAgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMTE5MTE3LCA3NDQ4NSwgNDI0NDIsIDY1NDcwLCAxMDA1MzgsIAorICAgIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgNjk5ODIsIDcwNTA1LCA5ODI4LCA3ODMxMSwgNDM1MDUsIDQyMjgwLCAKKyAgICAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAKKyAgICAxMjg5MTMsIDY4MzE1LCA5ODM4MzgsIDEyMTE1OSwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIDQyMTk2LCAKKyAgICAwLCAwLCAxMjg5NDksIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgMTA2NDMsIAorICAgIDU1MjcxLCA3MjcyNywgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCA4MzMxNiwgMTk0ODIyLCAKKyAgICAxMDA3MzMsIDc0MzEwLCA2NTU0LCA4MzA1MywgMTE5MTQsIDU0NTIsIDk4MzY0OSwgMCwgOTI3NzIsIDEyNzU0NCwgCisgICAgOTE3ODgwLCAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAxMTk1NjQsIDk2NTAsIDQzMzMwLCAxMjEwMzMsIDEyODUwNSwgMTQwNiwgCisgICAgMTI1MDA3LCA0MjkyNSwgNzQ2MzgsIDEyNTE5MCwgNjYyNTYsIDQxNDMsIDEyODEzNiwgMTk0NzYyLCA2NTc0OCwgNDE0MSwgCisgICAgOTY4MiwgNjUyODcsIDE1MDgsIDEwMDUzMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCAKKyAgICA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDQyOTMyLCA0MzQwMywgCisgICAgMTAwNjIzLCAxMDA2MjIsIDEwMDYyNSwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDcyNzMxLCAxMjk1NSwgMTA1OTYsIAorICAgIDI4ODgsIDgzMTkwLCAwLCAxMjEzNTQsIDk2NTcsIDkwMTksIDEyMTE1NCwgMCwgMjg3OCwgNTM5MCwgMTAwNjk4LCAKKyAgICAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIDEwMzY1LCA5ODM2MzEsIAorICAgIDEyODIxNiwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgNjgzODEsIDAsIDEwMDU3NSwgODk4NiwgNDM4MzgsIDEwNjMyLCAKKyAgICAxMTkzNCwgMTE0NTIsIDEzMzIsIDEyMDcwOSwgMTk0OTcwLCAxMjA2MDIsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgCisgICAgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAxMjk0MTgsIDEyODQ3NCwgNjY2NDYsIDEyODMyNywgMTE5MDAyLCAKKyAgICAxMzE1MSwgNzQ1MTIsIDcyODksIDcyNzM5LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIDQxOTI3LCAxMDU4MiwgCisgICAgMTIwNDU3LCAxNzg0LCAxMzYxLCAxMjA5MjEsIDEyMTUxNiwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIDkyMTY2LCAKKyAgICA3MjExLCA3MTg4NCwgOTM3MSwgNzM5NzMsIDEyODQ0MSwgNjgyOCwgMTYyNSwgNzY2NCwgMTI3ODA5LCAxMzQyLCA2ODQ0MCwgCisgICAgNjQxNzEsIDkyNjQyLCAxMDkwMywgOTgzNDQ5LCA5MTc4MTgsIDkyNTI3LCAxMjkzNzQsIDcwNDM4LCA0NDgyLCA0MTYwNiwgCisgICAgMTI4OTM0LCAxMjUwMzMsIDEyMTQ3NSwgOTgzODU0LCA2NDM4MSwgMTAwNTQwLCAxOTQ5NzQsIDEwMDYxMiwgNDIyNDUsIAorICAgIDEwMDYxNCwgNDE5NzIsIDEwMDYxNiwgNDQ0LCAxMDA2MTgsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgCisgICAgMTI2NjA2LCAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMTI5MTMyLCA3MDE3NywgMTIwODMwLCA5ODM0NTAsIDExOTcsIAorICAgIDEyODI4MiwgMTE0OSwgNjgzMTYsIDEyODAxMCwgOTgzMjU4LCA0MDk5MCwgNDM3NjUsIDEyMTI2MiwgMzQ5MiwgOTE3OTA2LCAKKyAgICAxMTg3ODQsIDEyOTAyNiwgMTI5MzQ2LCAxMDA1OTIsIDEyODM4LCA2NzIwOCwgMTk5NDgsIDQxNjc3LCAzMDk5LCAxMDA1OTgsIAorICAgIDEwMDU5NywgNDEwODcsIDEwMDU5OSwgMCwgOTgzMjYxLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMTI1MjEwLCAxMDA2MDMsIAorICAgIDgxNTIsIDEwMDYwNSwgNDE1NTAsIDEyMjI3LCAxMDA1NDUsIDEwMDYwOSwgMTI4MjgsIDEyNzUxMSwgNzUwMTUsIDEyMDk2NCwgCisgICAgMTIwNzA4LCAwLCAxOTQ2MTEsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIDY4MTU0LCAKKyAgICAxMjc4NzYsIDE3NDMsIDE5NDg2MCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDcwMDUyLCA2NDQzOSwgCisgICAgMTI4ODY0LCA2ODA2MiwgOTI2ODYsIDEwMDU4NSwgMTAwNTg0LCA0Mzg2NiwgMTAwNTg2LCAxMDA1ODksIDMzOTUsIDkzNjIsIAorICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAxMDA4NjYsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIAorICAgIDEyMTEwMCwgNzEzNDQsIDQ3MzUsIDExMTExLCA2MTE5LCAxMjgyMiwgNDI2OTksIDEyMDc0NSwgOTgzODI0LCA3NDgxOCwgCisgICAgMTQyMywgMTI4OTIzLCA0MjYzNywgNDEwODAsIDk4MzIxMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMTk0OTEwLCAKKyAgICA5NDcyLCA2NzczNCwgMTE5MjksIDEyNjU1NywgNzE3MCwgOTU5NiwgNjEzMCwgMTI1MjY4LCA0MzYyOSwgMTE1NzksIAorICAgIDcxNDc1LCAwLCA5MjUwMSwgMTI1MDgxLCA3ODA0NiwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM2LCA0MzIzNCwgCisgICAgNjYwMDgsIDEyNjI3LCAwLCA2ODQxNCwgNzQ2MTQsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAKKyAgICAxMTc3NiwgNzU1OCwgNzAxMDksIDY1NjI3LCA3Mjg3NiwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCA3NDk0NywgCisgICAgOTgzMDk0LCAwLCAxMTkwMjMsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIDc4MDE5LCAxMTkyNzIsIDgzMTE4LCA0MTcwOCwgCisgICAgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgCisgICAgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyNzc4OSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIAorICAgIDY1NDY5LCA3MDEyNSwgMTAwNTc0LCAxMDA1NzMsIDI0MTAsIDk5MywgODMxMTcsIDEwMDU3NywgMTAwNTgwLCA3ODY5MywgCisgICAgMTAwNTYwLCAxMDA1NTksIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCAKKyAgICA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAwLCA5MTc1ODksIDk4Mzc5NCwgCisgICAgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAxMDA1NTMsIDEwMDU1NiwgMTAwNTU1LCAxMDA1NTgsIDI3MiwgCisgICAgNDI2MywgODc5MywgOTgzMzg1LCAwLCA0MTUwMiwgMTI4MTMzLCA5ODMsIDEyNTQ5LCAxMDA1NjMsIDEwMDU2MiwgMTE5MCwgCisgICAgNDEwOSwgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxMjA5MjYsIDcwMDI3LCAyMDk5LCAKKyAgICA1MTIwLCAyNDA5LCA3Nzk5LCA5ODM5NTQsIDc0NDI0LCA5ODM4OTYsIDEyMTA0MSwgNDczMSwgOTIyNzksIDY2NjI5LCAKKyAgICAxMjgxMjcsIDkyNTI1LCAxMjU1LCA0MTQ5LCA5MjQ3LCA3NDk3NywgOTkxMywgOTgzODI4LCAxMDEwMjcsIDY0OTE0LCAKKyAgICAxMjUwMDIsIDY1MTAxLCAxMTM3MTQsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzA5NiwgNjY2MjUsIDEwODQyLCAKKyAgICA0MTM1NCwgNDIxMjMsIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDkxNzkwMCwgODE4MCwgCisgICAgMTI1MDU1LCA5ODM5MTIsIDk5NzIsIDczODY1LCA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDkyNDY1LCAwLCA5Mzk2MCwgCisgICAgOTgzMzI0LCA3NDA1NSwgMTA2OTUsIDEyOTA1OCwgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgOTE3OTQ5LCAKKyAgICA5MTc4OTcsIDEyODMyNiwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIDgzNTksIDgzMjg2LCAxMjY4OSwgOTgzMzEyLCAKKyAgICAxMTI0NSwgMTI4MTA1LCA5ODMzMTQsIDcxODU5LCA2ODE4MywgOTgzNDE1LCAxOTQ4MjksIDEyODcsIDU0MzYsIDk4MzA2NSwgCisgICAgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCAKKyAgICA4Mjk2MiwgMTI3Mzk3LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIAorICAgIDI3OSwgNzM3NDUsIDEyNzgyMywgMTI4NjY0LCA4MzI0NCwgMTQ4OSwgMTIwNjIyLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgCisgICAgNDM4MjgsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDEyNTE4NywgMTE5ODUsIDEzNDUsIDc4NjAwLCAxMTk4MzIsIDkxNzU2MywgCisgICAgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgCisgICAgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAxMjEyNzAsIDAsIDc1MDI3LCAKKyAgICA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3Mjg2MywgNzg2MTYsIDIyOTcsIDEyOTM0MSwgNzM4MzcsIAorICAgIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgODMxNTIsIDk5MzMsIDc0MDExLCA2NjUxNSwgCisgICAgNzY3LCA1NTI0LCA3MDI4LCAxOTUwNjUsIDkyMTY4LCAxMTk4MjcsIDExOTgxNywgOTI5NTAsIDc4NjMzLCAxMDg5NiwgCisgICAgNjM5MTAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDcwNzMxLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjI2MiwgCisgICAgOTQwMTgsIDExODgyMywgNjUzNTMsIDEwMDQ3OSwgNDYzMSwgMTE4OTk2LCAxOTUwMjcsIDY0MDcsIDExMzczNywgNjMzOCwgCisgICAgNDMyMTQsIDEyNzE2MywgNzU3MCwgMTIxMDE3LCAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM4OCwgOTM5ODMsIDE5NTA0MywgCisgICAgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgCisgICAgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCAKKyAgICA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIAorICAgIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDcyNzcwLCAwLCAKKyAgICA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDcyNzIyLCA4MDE3LCAKKyAgICAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgNjgyMjMsIDQzNDc1LCA5MTc1NDgsIDQ5MDksIDEyMTI2LCAxMjc1NDAsIDEwMTAxNSwgCisgICAgNDkwNCwgOTI5NjEsIDQzNTAzLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDEyNzc3MiwgMCwgMCwgODMxNzMsIAorICAgIDY2ODQ1LCA2NDQxNSwgMTIwNTAwLCA4MzE3MiwgNTM5OCwgMTI1MDM1LCAxMjczODYsIDkzOTUzLCAxMjczNjIsIDk4Mzc4MiwgCisgICAgMTE5MDE1LCA4MzE3MSwgMTI3MDA3LCA5NDc2LCA5ODMwNjYsIDEyMDY5NSwgMTI3NjMsIDEwMDUyMywgMzYyOSwgMTIwODQ0LCAKKyAgICAxMzAwNSwgMTExODEsIDM2MjgsIDExOTgzNCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgCisgICAgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCAKKyAgICA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgCisgICAgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgCisgICAgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAxMTk4MTMsIAorICAgIDExOTgyOCwgMTA0NjcsIDk4MzgxNCwgMjQ0MywgMTA5MTgsIDc4MjE3LCA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgMCwgCisgICAgMTI0OTQyLCA3Mzk4NywgMTI3ODgyLCA3MTg5NSwgOTMwMTIsIDc5OTIsIDc3OTQzLCA0MzkzOSwgMTI4NjcsIDEyODY0OSwgCisgICAgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCA2NTg1NywgMTI4MzYxLCAxMjg2NzQsIDEzMjA0LCAKKyAgICA0Mzg3LCA4NTcsIDEyMTI1MiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgMTE4NDIsIDAsIDcxMDcyLCAxMjE0NjIsIDAsIAorICAgIDUxMzYsIDE5NjgsIDEyODkwNiwgMTI2NjI3LCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMTI4NDQyLCAKKyAgICA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIDYxMjAsIDQ3OCwgNjUxNTEsIAorICAgIDY4MTI4LCAxMTkwNDQsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIDEyMDYsIDM2MTksIDQxNjM4LCAKKyAgICA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDgzMTc5LCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgOTI3NTQsIAorICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDY4MjQ1LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAorICAgIDQyMzk3LCAzMzQsIDcyNzMyLCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIDEwMzY0LCA0MzkzNSwgCisgICAgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAyOTE1LCAxMTUwMiwgCisgICAgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAxMjg3OTMsIDU0MTUsIDEyMTc2LCAKKyAgICAxMjA2NTMsIDc0MTkzLCAzNDYyLCA0Mzk0MCwgNDI2MjksIDc4NjkxLCA3MTE3NSwgNDM5NDIsIDEyNzI1NiwgOTc1OSwgCisgICAgMTI3MjU1LCA3MDA1NywgMTIxNDQyLCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc0ODIzLCA3ODY5NSwgODcxMCwgNDI0OTUsIAorICAgIDExODk1NiwgNzAxODksIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAKKyAgICAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY0NDM2LCAxODc1LCAxMDgwOCwgNDIxMDksIAorICAgIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgNTU3NSwgCisgICAgOTY3NSwgNzExMjksIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc5LCA2NTU5MywgNDMyMzYsIDMzODIsIDQyNDQ5LCAKKyAgICA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDEwMDQwOSwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgNDMxMDAsIDY5ODg4LCAKKyAgICA2NTUwOCwgMTI5NDExLCAwLCAxMjE0NTEsIDg5MzUsIDc4MjM0LCAxMjkzMzcsIDEyMDQ1MSwgMCwgNjE2LCA3NDc1MywgCisgICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDIyMzYsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAogICAgIDczOTY1LCAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCA3NTA1MSwgOTY4MSwgNDQ3NSwgNjc0MjksIDQxMTQyLCAyMTAwLCAKLSAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDk4MzI5NiwgOTE3OTg3LCAKKyAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDE5NDk0MSwgOTE3OTg3LCAKICAgICAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgNjg0ODgsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgNzExODIsIAotICAgIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgMTI5MDk0LCAxMDM0NCwgMCwgNTExNSwgCi0gICAgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgMTk0NjY5LCAwLCAwLCAKLSAgICA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCA3ODU0NSwgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIAotICAgIDk4MzY3NiwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA0Mzk2NCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgCi0gICAgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCAxMjA3OTMsIDY3ODExLCA5MjI3NywgCi0gICAgOTgzNjIxLCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAKLSAgICAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMCwgNjUzNDEsIDY3NzAzLCA2NTgyOSwgNzkyNSwgCi0gICAgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIAotICAgIDEyNzEwMiwgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIDc4NTU0LCA5MzM2LCA0Mzc1MCwgCi0gICAgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgCi0gICAgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCAKLSAgICA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIAotICAgIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgODIyNCwgMTI4NDE3LCA4OTM4LCAKLSAgICA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCAxOTQ3OTgsIDEyMDI1MSwgMjU4OSwgNzQzMzIsIAotICAgIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCA5ODM2MTUsIDAsIDEyODUxNiwgMTI4MTYzLCAKLSAgICA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDk4MzgyMiwgMTUwMywgNzgzMzYsIDEyNzE3MywgCi0gICAgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIAotICAgIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCAKLSAgICA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAKLSAgICAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCA0MzE1NSwgMCwgNzExOTcsIDMxNDYsIDEwOTU5LCAKLSAgICA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgOTE3ODQwLCAxMDYyMywgNDA4LCAxMTkwNTgsIAotICAgIDEyNzUwNywgMTMyOTgsIDEyNzI1MywgNzQyNiwgNDE2NDEsIDEyNzE3LCA5ODM3OTUsIDc2MDcsIDEwNjM5LCA0MzM5NiwgCi0gICAgMTI5MzAwLCAxMTkwODksIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjI5MywgCi0gICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgCi0gICAgMTIxMDY5LCAwLCAxMTg4NTksIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAKLSAgICAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDAsIDEyMTExMiwgCi0gICAgMTA5ODMsIDAsIDEyODc4NywgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTIyLCAwLCA4Mjg1LCAKLSAgICAxMjY1MTYsIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCAKLSAgICAwLCA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCAKKyAgICA5ODAwLCA4OTc5LCAxMTkxNTYsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgNzA3MzAsIDEwMzQ0LCAKKyAgICAxMjUwMzIsIDUxMTUsIDUzOTQsIDQzMjQ2LCA3ODI0MywgNTExMywgNjY1MDUsIDQxMjAwLCAxMjg1ODIsIDQ0MjUsIAorICAgIDE5NDY2OSwgMTAwNDA1LCAwLCA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCAzNDQ2LCAKKyAgICAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgMTI4OTY5LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDYyODIsIDE1ODcsIAorICAgIDAsIDEwMDU1NCwgNjQ0NzUsIDExOTIxNywgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCA0Mzk2MywgNDU2MCwgNjY5MTAsIAorICAgIDY3ODExLCA5MjI3NywgMTIwNjE0LCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIAorICAgIDgxOTQsIDY1NDYyLCAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMTk0ODU3LCA2NTM0MSwgCisgICAgNjc3MDMsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIAorICAgIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgMTAwNDA3LCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgCisgICAgNzg1NTQsIDkzMzYsIDQzNzUwLCAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCAKKyAgICA0MzAxOCwgMTAwNDEwLCAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAKKyAgICAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCAKKyAgICA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCAKKyAgICA4MjI0LCAxMjg0MTcsIDg5MzgsIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDY1NTMsIAorICAgIDEyMDI1MSwgMjU4OSwgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCAKKyAgICA5ODM2MTUsIDAsIDEyODUxNiwgMTI3MDE3LCA3NDUxMywgNjA0OSwgMTI4MjM5LCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgCisgICAgMTI4MTIwLCAxNTAzLCA3Mjc2OSwgMTI3MTczLCA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgCisgICAgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgCisgICAgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIAorICAgIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIAorICAgIDQzMTU1LCA5ODM4MTYsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgOTQ4MywgODMyMTksIDc3ODkzLCAxMDk4MSwgMTY2LCAKKyAgICA5MTc4NDEsIDg2MzUsIDEyODcxNCwgMTA2MjMsIDQwOCwgMTAwNDgwLCAxMjc1MDcsIDEzMjk4LCAxMjY1MTgsIDc0MjYsIAorICAgIDQxNjQxLCAxMjcxNywgMTIwNjU4LCA3NjA3LCAxMDYzOSwgNDMzOTYsIDEyOTMwMCwgMTE5MDUzLCA0MTY0MywgNzQxMzQsIAorICAgIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCA5ODUyLCA2NjI5MywgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCAKKyAgICA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgMTIxMDY5LCAxMjkxNjgsIDExODg1OSwgMTI1MjAzLCAKKyAgICA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMTI4OTQzLCA0MjEzNiwgMTIxNDQwLCAwLCAwLCAwLCAzMjQ3LCAKKyAgICA5MjQwMiwgNjUwMTcsIDEyODc5NCwgNjg0MjgsIDY2NjY4LCAxOTQ4ODQsIDEyMTExMiwgMTA5ODMsIDkxNzc2NywgCisgICAgMTI4NzAwLCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MDcsIDAsIDgyODUsIDEyNjUxNiwgCisgICAgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIDkxNzgyNSwgCisgICAgNDI4NDgsIDIzOTYsIDEyODA4MywgMTk0ODkyLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgOTgzMjU5LCAKICAgICA0MjQ1NywgOTI4ODgsIDgzMjk5LCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgOTI0MTAsIDY5NjUwLCAxMTcwNywgODIyMiwgCi0gICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgMTI3ODAxLCAxMjE0MDgsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKLSAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIAotICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCi0gICAgMTIwODQwLCA5MTc5MDUsIDEyMDk1NCwgMTI3ODcyLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIDEyODkyMiwgCi0gICAgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDEyODEzMSwgMTE5NTkxLCAKLSAgICAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCA4MzQ2MiwgCi0gICAgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgMCwgOTIxOTgsIDAsIAotICAgIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgMCwgMjMwNSwgNzgzNDgsIDY4MDk2LCA5MTc3NzIsIDYwNTYsIAotICAgIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAKLSAgICA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCAKLSAgICA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDk4MzI1MCwgCi0gICAgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCAxMjk5MCwgMCwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAKLSAgICAxMjExMDgsIDEyMDU4NywgOTg2OSwgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDAsIDQyMDgsIDc4MzQxLCAKLSAgICA3ODU2NywgNzgzNDIsIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAwLCA3MDA5NiwgNjgzNSwgNjgwMTAsIAotICAgIDY2NDc1LCAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIAotICAgIDkyNzc0LCA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIAotICAgIDQxOTAxLCA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIAotICAgIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAKLSAgICAxNzE2LCA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCAwLCA3MTExNiwgCi0gICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNjk4OTIsIDk4MzIwOSwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKKyAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCA3Mjc0NywgNjcxMzEsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKKyAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMTg0NCwgMTU0MCwgMTk0ODI3LCAxMDA1MiwgNDA5ODIsIAorICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDE5NDkyMCwgMTU2MywgMTI4MDM0LCAKKyAgICA5NjE5LCAxMjA4NDAsIDEyOTQxNiwgMTIwOTU0LCAxMjE0NjAsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgCisgICAgMTI4OTIyLCAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgNzg2NTEsIAorICAgIDExOTU5MSwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCA2Njc2NCwgMjAzMiwgNzgzNTQsIAorICAgIDgzNDYyLCAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAKKyAgICA5MTc5NDEsIDkyMTk4LCAwLCAxMjg4MzEsIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDcwMTQ0LCAyMzA1LCA3ODM0OCwgCisgICAgNjgwOTYsIDkxNzc3MiwgNjA1NiwgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIAorICAgIDEyODIyNywgNDE2MzksIDYzOTEyLCAxMTk0MSwgOTgzNzgzLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAKKyAgICAzMjQ5LCAxNzY4LCA5Mzk4MiwgMTIzMjgsIDUwMSwgOTM5ODUsIDEwNjAxLCA5ODMyOTQsIDU4MywgMTE5MzUyLCA0MTk3NywgCisgICAgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTE3ODMzLCAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgCisgICAgNjUwNDksIDEyODAyOCwgMTI5OTAsIDk4MzkwMSwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAxMjExMDgsIDEyMDU4NywgOTg2OSwgCisgICAgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDEyNTI3MywgNDIwOCwgNzgzNDEsIDc4NTY3LCA3ODM0MiwgCisgICAgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDEyOTMxNywgNzAwOTYsIDY4MzUsIDY4MDEwLCA2NjQ3NSwgCisgICAgMTIwMjYwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCA5Mjc3NCwgCisgICAgNzM3MzksIDUwMjYsIDk4MzI1NSwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgCisgICAgNzQ3OTAsIDc4MTM4LCAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgCisgICAgNDEwNzAsIDc3OTAzLCA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgCisgICAgOTgzNjc5LCAxMDYwMCwgNzg1NTgsIDYyMCwgNDEwMDEsIDYwMjgsIDcwNDQ1LCA0Mjg5MiwgOTgzMzEzLCA3MTExNiwgCisgICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNzI5NywgOTE3ODI0LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAogICAgIDY1NTU3LCAwLCA3NDU0MSwgMTI4OTI0LCAxMTU5OSwgMTI4MjA5LCAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAxMTU5NywgCiAgICAgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3MDI3MywgMTE1NjksIDY1Mjc1LCA4OTA2LCA0Mzk0NSwgNTc1NSwgMjYzNiwgCiAgICAgNzEyMDMsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIAotICAgIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAKLSAgICA2NDEzMSwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIAotICAgIDQzNjA2LCA3MTE4NSwgNjgzOTcsIDY2MzcwLCA3NDI4MiwgNDIzMzUsIDY5Nzg2LCA3MjQyMSwgODI5OTgsIDc1MzgsIAotICAgIDUzMTUsIDgzMzY3LCA0MjQ5MSwgOTI5MDEsIDQyMDYxLCAxMjgwMDIsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgCi0gICAgMzU2MywgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCAxMjAyNDQsIDYzOTg5LCAKLSAgICAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCAKLSAgICA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgMTk0OTI0LCA0MzMwMCwgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIAotICAgIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAKLSAgICAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIAotICAgIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgCi0gICAgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCAKLSAgICA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCAKLSAgICA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMTI4MzIxLCA4NTg3LCAKLSAgICAxMjEzMTgsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIAotICAgIDgzMTUzLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAKLSAgICAyNzE4LCA0MTY4LCA0MzkwNCwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgNDM5MDIsIDc3OTQ4LCAzNjMsIAotICAgIDExMDE1LCA0MzkwMywgNzc5NDQsIDQzODU3LCA4MzA0OSwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCAKLSAgICA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIAotICAgIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIAotICAgIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyNDk0NSwgMzEzLCAxMjE0ODMsIDQxODgxLCAxOTQ2NTgsIDQyMzExLCA3NDQ1LCAKLSAgICA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIAotICAgIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAKLSAgICAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAKLSAgICAxMTYwMCwgNzc5NjEsIDI3OTcsIDQzOTI0LCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAKLSAgICAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgCi0gICAgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIAotICAgIDM2MiwgOTI0MzksIDQzODkwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDEyNjUzOSwgNDM4OTMsIDUxODUsIDcxNjUsIDU1MjEsIAotICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyNTEzMSwgMTAxMDQsIDEwMjcsIDUxODEsIDEyODQzNSwgNTExNywgCi0gICAgMTA1MjMsIDE0NDYsIDQyMzIwLCA2ODQ1LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCAKLSAgICA0Mjg5OCwgMzQwNSwgMCwgMTk0NjQ0LCA1NTIzLCA0MzkxNSwgNDI2MjAsIDkyNDQ3LCA3NDk0MywgOTU0OSwgMCwgMTA1NDksIAotICAgIDQzOTIzLCA5NjYxLCA0MjkzMywgNzQ4ODQsIDc3OTEwLCA3ODA2OCwgNDM5MjEsIDAsIDcxMTg0LCA5ODMwNzAsIDQxOTkxLCAKLSAgICA5ODM4OTMsIDAsIDc2MzAsIDk4NDYsIDc2ODQsIDEwMzUwLCAxMjg0NTMsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIAotICAgIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDQzOTA5LCA3NDQzOCwgMTIzMzAsIDEyODI3MiwgMCwgCi0gICAgNDI0MTcsIDQyMzgzLCA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIAotICAgIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgCi0gICAgMTczNiwgOTgzNjg0LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIAotICAgIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIAotICAgIDY0MTU0LCAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgCi0gICAgMTI4MjQsIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCAKLSAgICA2NDU2MCwgMzc1NywgMCwgMCwgNzQzMDIsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgNzQ5NzYsIDIzMjYsIDY1NzQwLCAyNTY1LCAKLSAgICA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODY4LCA3Mzg2MiwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDkyNjIyLCAKLSAgICA0MDQ0LCA5MjY0NiwgNDM5NTMsIDEyMjMzLCA5ODM4NzEsIDEwMjMsIDQ3NCwgMTk0OTQwLCAxMTk4MTgsIDAsIDAsIAorICAgIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDEyNjQ2NiwgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAKKyAgICA2NDEzMSwgNjYxNiwgMTIwNzk2LCAxMTg4NzUsIDEwOTUzLCAzOTEsIDk4MzEwMywgNjk3ODUsIDQ4MiwgNDIyOTYsIAorICAgIDExNTg4LCAxMjg1OTEsIDQzNjA2LCA3MTE4NSwgNjgzOTcsIDY2MzcwLCA3NDI4MiwgNDIzMzUsIDY5Nzg2LCAxMjA1MCwgCisgICAgODI5OTgsIDc1MzgsIDUzMTUsIDgzMzY3LCA0MjQ5MSwgOTI5MDEsIDQyMDYxLCAxMjgwMDIsIDQ1NzYsIDAsIDY4NDE3LCAKKyAgICA0MzgwOSwgNDI3NywgMCwgMzU2MywgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIAorICAgIDc4MjA5LCAxMjAyNDQsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMTI3MzM4LCA5OTIxLCA0MjQ1MSwgNDI1MywgCisgICAgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAxMjE0ODEsIDM2MTgsIDc4MzM4LCA5Mzk1NiwgNDMzMDAsIAorICAgIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDY3ODQ3LCA4NjkxLCA2NjQzNSwgCisgICAgMjIxNSwgNDE2NjIsIDk0MDEwLCAxMTkyNjIsIDAsIDEyODgyNCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCAKKyAgICA0MjU3OCwgNzEwNDksIDQxNjYxLCA3ODM1MSwgNDMyNjcsIDkzNTYsIDAsIDE5NDg4MCwgOTgzNDAxLCAxMjg2LCAxMDE2NiwgCisgICAgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDEyOTA4MywgCisgICAgNzQ5NDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCA3MjgyNywgNjY0MSwgNTI1LCA0MTYyNywgOTE3OTIzLCA4NzYzLCAKKyAgICAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgCisgICAgNDM3NywgODU1OSwgMTI4MzIxLCA4NTg3LCAxMjEzMTgsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAxNTc2LCAKKyAgICA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDgzMTUzLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIAorICAgIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA0MzkwNCwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgCisgICAgNDM5MDIsIDc3OTQ4LCAzNjMsIDExMDE1LCA0MzkwMywgNzc5NDQsIDQzODU3LCA4MzA0OSwgNjY2OTIsIDEyMDgyNiwgMCwgCisgICAgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMTEzNzk0LCAxMDAxMywgNjQ0MzQsIDc1MDEwLCAKKyAgICAxMjcwOTUsIDk0OTIsIDExNzgyLCA5MjEyLCAxMjgzMywgNzc4MzAsIDcwNjkyLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjA5NjAsIAorICAgIDk4MzkyMywgMTIwNzc0LCA3MDE2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMTI1MjQ5LCAxMjQ5NDUsIDMxMywgCisgICAgMTIxNDgzLCA0MTg4MSwgMTk0NTc1LCA0MjMxMSwgNzQ0NSwgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgCisgICAgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIAorICAgIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgMTE5MDAzLCAxMDEwNjEsIDYzMSwgNzc5NTIsIDY5NzAzLCAKKyAgICAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAxMTYwMCwgNzc5NjEsIDI3OTcsIDQzOTI0LCAKKyAgICA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAKKyAgICAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAKKyAgICAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIDM2MiwgOTI0MzksIDQzODkwLCAKKyAgICA4MDM3LCA0Mzc3NywgMTE1MzUsIDEyNjUzOSwgNDM4OTMsIDUxODUsIDcxNjUsIDU1MjEsIDEwMzM0LCAyMDkzLCA3MTMyOSwgCisgICAgMTAzMDIsIDEyNTEzMSwgMTAxMDQsIDEwMjcsIDUxODEsIDEyODQzNSwgNTExNywgMTA1MjMsIDE0NDYsIDQyMzIwLCA2ODQ1LCAKKyAgICA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA0Mjg5OCwgMzQwNSwgMCwgMTk0NjQ0LCAKKyAgICA1NTIzLCA0MzkxNSwgNDI2MjAsIDkyNDQ3LCA3NDk0MywgOTU0OSwgMCwgMTA1NDksIDQzOTIzLCA5NjYxLCA0MjkzMywgCisgICAgNzQ4ODQsIDc3OTEwLCA3ODA2OCwgNDM5MjEsIDAsIDcxMTg0LCA5ODMwNzAsIDQxOTkxLCAxMjkzNjksIDAsIDc2MzAsIAorICAgIDk4NDYsIDc2ODQsIDEwMzUwLCAxMjg0NTMsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgCisgICAgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDQzOTA5LCA3NDQzOCwgMTIzMzAsIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAKKyAgICA2NjYzMCwgMzQwNywgNjI5MywgMCwgNjYyNTIsIDQzOTA4LCA3NDQ0MywgMTI3ODk0LCAxMDIwOSwgODMxMywgNDE5NSwgCisgICAgNzQ0MzUsIDEzMTYsIDY2NjkwLCA3NTA3MiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDY3MjUwLCAxNzM2LCAKKyAgICAxMjEwMDYsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgMzE0LCAKKyAgICA2NDE0OSwgNDI0MjAsIDExOTQ5LCAxMjcyMDAsIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgNjQxNTQsIAorICAgIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCA4MzMwNywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgCisgICAgNDM5MTEsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAKKyAgICAzNzU3LCAwLCA5NDA1OSwgNzQzMDIsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgNzQ5NzYsIDIzMjYsIDY1NzQwLCAyNTY1LCAKKyAgICA0MjQ1OSwgNzU5NiwgNzkyMSwgMTI2NTY3LCA3Mzg2MiwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDkyNjIyLCAKKyAgICA0MDQ0LCA5MjY0NiwgNDM5NTMsIDEyMjMzLCAxMTM4MTQsIDEwMjMsIDQ3NCwgMTI1MjcyLCAxMTk4MTgsIDk4Mzc0NCwgMCwgCiAgICAgNDI0ODcsIDY1NTU2LCAxMjExNjgsIDEyNzg2NiwgNDIyOTUsIDEyODIwMywgMTIxNDc0LCA3MTMyMiwgOTI1MTgsIDIyMjIsIAotICAgIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgOTgzNDU1LCAwLCA1NTI1MSwgMTAxMTgsIAotICAgIDMxMzMsIDEyNzc3MSwgNzE4NTcsIDEyMTIwMSwgOTYxMCwgODA2OCwgODE5NywgOTE3NTQ1LCA2OTksIDAsIDQxNjY1LCAKLSAgICA1ODY4LCAxMjg3MTAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCAKLSAgICA2NTU4MywgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDc4MTI5LCA2ODc1MSwgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgCi0gICAgMTkzNywgOTgzNzUxLCA2ODQ4MSwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgNzc5NjUsIDExOTgzNywgMTEwMTcsIAotICAgIDEyMDYwMSwgMCwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgCi0gICAgNzEzNTAsIDY1NDEzLCA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDEyODk2NywgMTcxMywgNzc5NjksIAotICAgIDEyMTI5MiwgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIDEyMDU2NSwgNDI0ODEsIAotICAgIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgNzE0ODEsIDYxNjUsIAotICAgIDY0MTAwLCA5MTc4MTksIDY2MzIsIDczODYxLCA0MjQwMiwgNzQzMjcsIDc4MDYsIDExMzc2MiwgODkxNCwgNjY5MDgsIAotICAgIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNjY0MDgsIAotICAgIDAsIDY0NDE2LCA0MjQyMiwgODM1MDYsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgMTIxMzY5LCA4MzUyNCwgCi0gICAgNDIzMjgsIDEwNzY3LCAxMjg4NjIsIDgxMTUsIDgzNDU0LCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCAKLSAgICA5ODMyMzAsIDY1ODQ4LCA5Mjg4NCwgODM1MTcsIDY5ODYzLCAxMjgzMjgsIDEyNjk4NywgNDQ4NiwgMTI4MDgyLCA5MTc3OTYsIAotICAgIDAsIDEwOTI1LCAwLCA4MzUxNSwgODM1MDcsIDEyNDk1MiwgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDc2NjgsIAotICAgIDEwMzA1LCA0MjQ2MSwgNzQ4ODIsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIAotICAgIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMTE5MjE0LCA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgCi0gICAgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgMTk0OTczLCAxMjg3NDcsIDY0OTMzLCAKLSAgICAxOTQ2MjcsIDQxOTYwLCA2Njk5LCA0MjkwMywgMTI4NzU1LCAxMjUwMTMsIDY4MjMsIDQyMzkxLCAxNTg4LCA0MzUwMiwgCi0gICAgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgMTI4MzM1LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCAKLSAgICA0MjQ4MCwgOTE3OTQ5LCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgNzI0MjcsIDAsIDExMzgxNiwgNjQ0LCA2NTUwMCwgCi0gICAgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA2NjI5NiwgCi0gICAgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDEyODQzMiwgNDE1NTcsIDAsIDEyODkzOCwgMTEwNzAsIDExOTIyMSwgNTE1NywgCi0gICAgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDczODg4LCAKLSAgICA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIDEyODQ5MiwgMTE4OTMwLCA2NDUyNywgMTIxMzk1LCA3ODc3LCAxMjcyMywgCi0gICAgOTgzNzk4LCA2ODc3NiwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAKLSAgICAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgOTUwMiwgNjU0MjcsIDEyNTA0OCwgNjU0MjQsIDEyNjA3LCAxMjA5NjYsIAotICAgIDk3MzQsIDY1NDI1LCAwLCAxMjE0MzEsIDEyNzM1NywgNzQ4OTAsIDc4ODM2LCAxMDExMiwgMTA4MjcsIDE5NDYzNSwgOTg2NiwgCi0gICAgNzQ1MjcsIDY2Njc1LCAxMTg4NjcsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDY3NzM4LCA4NjM2LCA5ODM5MjcsIAotICAgIDgzMTUsIDY1NDQ0LCA5ODM3OTMsIDE5NTAxMSwgNzQ1OTUsIDYxNTIsIDc4ODIwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAKLSAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIAotICAgIDExNDkwLCA0MjczMCwgNDQ4NSwgNzExMjYsIDEyODE5NCwgNjQ5MjYsIDAsIDk4MzEzMywgNDM4MzAsIDU4NjksIDEyNDM3LCAKLSAgICA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgMTI4MjUsIDEyMTE1OCwgMCwgMTI3MjUsIDc0MDkyLCAxMjcxMDYsIDc4NjM0LCAKKyAgICA2NjQ5OSwgMTI5MzM2LCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgOTgzMjI2LCAxODU4LCA5ODM0NTUsIDAsIAorICAgIDU1MjUxLCAxMDExOCwgMzEzMywgMTI2NDk4LCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgCisgICAgMCwgNDE2NjUsIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIAorICAgIDAsIDE5MjMsIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCA5MTc4MzYsIDY0NjQsIAorICAgIDcwMzYsIDI5OTYsIDE5MzcsIDEyNzA1MCwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAKKyAgICAxMTk4MzcsIDExMDE3LCAxMjA2MDEsIDk4MzE2OSwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIAorICAgIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIAorICAgIDEyODk2NywgMTcxMywgNzc5NjksIDk0MDE3LCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCAKKyAgICA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCAKKyAgICA5MzUyLCA3MTQ4MSwgNjE2NSwgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzI4MjgsIDQyNDAyLCA3NDMyNywgNzgwNiwgCisgICAgMTEzNzYyLCA4OTE0LCA2NjkwOCwgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIAorICAgIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgMTI3NDAyLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAKKyAgICAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIAorICAgIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAKKyAgICAxMjY5ODcsIDQ0ODYsIDExOTk3MywgOTE3Nzk2LCAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAKKyAgICAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIAorICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgCisgICAgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDEyODE3MCwgCisgICAgNjU0MDIsIDExOTU4MSwgMTk0OTczLCAxMjg3NDcsIDY0OTMzLCAxOTQ2MjcsIDQxOTYwLCA2Njk5LCA0MjkwMywgMTI4NzU1LCAKKyAgICAxMjUwMTMsIDY4MjMsIDQyMzkxLCAxNTg4LCA0MzUwMiwgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgCisgICAgMTIxMTQ1LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCA0MjQ4MCwgMTI5MDMxLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCAKKyAgICA0Mzk3NSwgNzI0MjcsIDAsIDExMzgxNiwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIAorICAgIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA2NjI5NiwgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDEyODQzMiwgNDE1NTcsIAorICAgIDk4Mzg4MiwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCAKKyAgICA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDEyNzM0NiwgCisgICAgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDczOTU0LCAKKyAgICA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDcxMjcwLCAKKyAgICA3ODYzMSwgOTUwMiwgNjU0MjcsIDEyNTA0OCwgNjU0MjQsIDEyNjA3LCAxMjA5NjYsIDk3MzQsIDY1NDI1LCA5MjIwNywgCisgICAgNzg4MzQsIDEyNzM1NywgNzQ4OTAsIDcyODIyLCAzNDQ4LCAxMDgyNywgMTk0NjM1LCA5ODY2LCA3NDUyNywgNjY2NzUsIAorICAgIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgODMxNSwgNjU0NDQsIAorICAgIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIDEyMDE3MSwgMCwgCisgICAgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgMTE0OTAsIDQyNzMwLCAKKyAgICA0NDg1LCA3MTEyNiwgMTI2NTg4LCA2NDkyNiwgMTIwMTY4LCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgNDI3MjgsIDAsIAorICAgIDcwNDAsIDM1ODgsIDYzNzk3LCAxMjgyNSwgMTIxMTU4LCA3Mjg2NCwgMTI3MjUsIDc0MDkyLCAxMjcxMDYsIDc4NjM0LCAKICAgICAyMjMsIDc4NjM1LCA2OTY3NSwgMTIwMTE5LCA0MjQ0NCwgMTI4NDQ5LCA2NDQ5OSwgNjUyNDUsIDEyOTEwNCwgMTE3MSwgCiAgICAgMTI4ODAyLCA2OTcxNywgMTIwMTEzLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIDc4NjE5LCA3NDk1NCwgCiAgICAgMjMzOCwgMTIwMDMyLCAxMTg4NTMsIDAsIDQyNjc2LCAwLCA2NDgwMCwgMTMwOTIsIDExMTg1LCA2ODEyNiwgMTIxMywgCiAgICAgMTI4NDE5LCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgODMwMDUsIDY0Mzg3LCA0MTE1LCA3MTMzMSwgNTAwNSwgCiAgICAgNjQwNzAsIDY0MDczLCAxMDY3OSwgODMwMDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCA4MzM1OCwgODMwMTAsIDgyNTEsIAotICAgIDEwMTM2LCA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3MDc5NSwgMTA3MDEsIDE3NjQsIDMxMDEsIAotICAgIDEyNzgxNSwgMTI4NTgsIDEyMDE1OSwgMTIwMTAxLCAxMTM3MywgNjM3OCwgNzEwOTMsIDEyMDEwMywgODY2MywgOTMxMiwgCi0gICAgNDE2NDQsIDQ1MzksIDIxMjksIDcwNzg1LCA5MjIyLCAxMjE0NzksIDExODkwNywgNDI1OSwgOTA5MiwgNzQ1NjcsIDQxOTYxLCAKLSAgICAxMjg1MTUsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NjcsIAotICAgIDcxODU4LCA3MjQ0MCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgNzExMTcsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgCi0gICAgMTA4NDAsIDAsIDEwNjY4LCAxMTM3MjMsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIAotICAgIDY0OTAzLCA4NjM4LCAxMjcyNjUsIDkxNzg4NiwgMTI3OTA1LCAwLCA2OTg0OCwgODIzNSwgMTIwMzE2LCA0NDA1LCAxMDA4NiwgCi0gICAgMTIwMjQ3LCAxMTEyOCwgNjkyMTYsIDEyMTA2NSwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgMTIwMzE0LCAKLSAgICA2NDI5MSwgMTIwMzE1LCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAxOTQ1NzIsIDE5OTEsIDc4ODIsIAotICAgIDQyMjU0LCAxMjg5NTQsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCAKLSAgICA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDc0MDMzLCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgCi0gICAgNjYzNzMsIDk4MzI0OSwgMTI4NzQ2LCA2NDkwOCwgOTI2OTEsIDYzMTEsIDkzMDE5LCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgCi0gICAgNDMxMDgsIDEyMDMyNiwgNzEwODMsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMTIxMjk4LCA2NTk5LCA2NjgyMiwgOTMwMzEsIAotICAgIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAxMjEwNTUsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgCi0gICAgNjk5MDQsIDEyODQ5NSwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCA5MzA1OSwgODMxMTQsIDIzMzYsIAotICAgIDk4MzkwMywgMCwgNjcxNjksIDEyMDQ0MiwgMTI3MDkyLCAxOTIxLCAxMDk0NywgMTk5MjcsIDcwMzkwLCA2NTQwNiwgCi0gICAgOTgzNDY0LCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgCi0gICAgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMTI0OTU3LCA1Nzc0LCA4MzI1LCA2OTg2NCwgNjU0MDMsIDk4MzA4OSwgCi0gICAgMTg1NCwgMTA3OTQsIDkzMDU0LCA2NzY2MCwgNjk4NDYsIDE5NDc2NSwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKLSAgICA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIAotICAgIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgCi0gICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIxNDAzLCAxMjEyOTQsIDg0MjEsIDEyNzQ3MiwgCi0gICAgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgCi0gICAgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgNzAzNzIsIDEyNzg3NywgCi0gICAgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCA5ODM4NDAsIDEyNDk2MCwgMTIwODM5LCAKLSAgICA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCAKLSAgICA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgCi0gICAgOTg3NCwgNzgwMDcsIDk4MzExNSwgMTMxOSwgMzA1MCwgNjU0MTAsIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCAKLSAgICA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMCwgCi0gICAgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIAotICAgIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIAotICAgIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgCi0gICAgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIAotICAgIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDkxNzc5MiwgMCwgNzgwMjEsIAotICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIAotICAgIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIAotICAgIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgCi0gICAgMjEwNCwgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgCi0gICAgNjg0OTUsIDQ1NjksIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIAotICAgIDY1NjI5LCAwLCAxOTQ4NTgsIDc0ODU0LCAwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIAotICAgIDQxNjY5LCA3MDk0LCAxMjEwNTEsIDAsIDEyMDk5OSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCi0gICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgMCwgODM1MjUsIDExODk5OCwgNzIwNiwgCi0gICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgODM1MTgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCi0gICAgODA0LCA4MzUyMCwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKKyAgICAxMDEzNiwgNjU0MzYsIDEwMDg2MiwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3MDc5NSwgMTA3MDEsIDE3NjQsIAorICAgIDMxMDEsIDEyNTE5MiwgMTI4NTgsIDc0NzY3LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCAKKyAgICA5MzEyLCA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgCisgICAgNDE5NjEsIDEyMTM2MSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDcyODY3LCAxMjA1ODIsIDEyOTMsIDc5NDcsIAorICAgIDIxMzIsIDk4Mzc2NywgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIAorICAgIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDcyODI2LCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAKKyAgICAwLCAxMTU3LCA2NDkwMywgODYzOCwgMTI3MjY1LCAxMjkxMDYsIDEyMDY2OSwgMTAwMzk5LCA2OTg0OCwgODIzNSwgCisgICAgMTIwMzE2LCA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAxMTEyOCwgNjkyMTYsIDEyMTA2NSwgNjU0MzAsIDcxMzIxLCA2MDc5LCAKKyAgICA2ODE3LCAxMDc2NCwgMTIwMzE0LCA2NDI5MSwgMTIwMzE1LCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAKKyAgICAxNTU4LCAxOTQ1NzIsIDE5OTEsIDc4ODIsIDQyMjU0LCAxMjg5NTQsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIAorICAgIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDc0MDMzLCA3ODk2LCAKKyAgICA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgNjYzNzMsIDEyOTA2NiwgMTI4NzQ2LCA2NDkwOCwgOTI2OTEsIDYzMTEsIAorICAgIDkzMDE5LCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgNzEwODMsIDQxNzA1LCA5MjE4OCwgNjU5OCwgCisgICAgMTIxMjk4LCA2NTk5LCA2NjgyMiwgOTMwMzEsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAxMjEwNTUsIDY1OTcsIDk0MTIsIAorICAgIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDEyODQ5NSwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICA5MzA1OSwgODMxMTQsIDIzMzYsIDk4MzkwMywgMCwgNjcxNjksIDEyMDQ0MiwgMTI3MDkyLCAxOTIxLCAxMDk0NywgMTk5MjcsIAorICAgIDcwMzkwLCA2NTQwNiwgOTgzNDY0LCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIAorICAgIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMTI0OTU3LCA1Nzc0LCA4MzI1LCA2OTg2NCwgCisgICAgNjU0MDMsIDk4MzA4OSwgMTg1NCwgMTA3OTQsIDkzMDU0LCA2NzY2MCwgNjk4NDYsIDE5NDc2NSwgNzgzNTksIDUyODAsIDAsIAorICAgIDQzNDQsIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgCisgICAgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDk4MzQzNCwgNjA3MSwgNjU0MzQsIDExOTAwOCwgNDgwNCwgNDA1MywgCisgICAgMTIwMjM3LCAxMjc0NjksIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDEyMDA0MywgMTIxMjk0LCAKKyAgICA4NDIxLCAxMjc0NzIsIDY5NjgyLCA0MzcwNSwgNTAyLCA3NTAyOSwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAKKyAgICAxMzAzLCAzMTYsIDczNjQsIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIAorICAgIDcwMzcyLCAxMjc4NzcsIDQyNDg4LCA3MDMzOSwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMTI4MTk0LCAKKyAgICAxMjQ5NjAsIDEyMDgzOSwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3NTAzNCwgNjM3NTEsIDEyMTM3LCAKKyAgICA1NTQ4LCA3Nzk4NSwgOTgzNTU1LCAxMDAwNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAxMDAzOTEsIAorICAgIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCA5ODc0LCA3ODAwNywgMTk0NzMyLCAxMzE5LCAzMDUwLCA2NTQxMCwgCisgICAgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgCisgICAgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAxMjI4ODksIDY1NDExLCA5MTc1NDEsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIAorICAgIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgCisgICAgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgCisgICAgMTE5ODY3LCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDY5ODU0LCAKKyAgICA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIAorICAgIDQwMjEsIDIwMTIsIDc5ODUsIDc4MDkzLCAxMTk2NjMsIDkxNzc5MiwgOTgzOTUxLCA3ODAyMSwgNzgwMjIsIDQxMCwgCisgICAgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIDEwMTI2LCAKKyAgICAxMjExNiwgNDE2NzMsIDY4NTI0LCAxMTQyMiwgNzE4NDYsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgNDEzNDUsIAorICAgIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIDY0ODU4LCAKKyAgICAzNjEsIDEyMDM1NywgODQ1LCA5MjE3NCwgNDE1NjAsIDExOTcwLCA0NTYyLCAxMjg0NzMsIDI5MjYsIDY4NDk1LCA0NTY5LCAKKyAgICA3NDEzMCwgMTI4NjU5LCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTAwOTA5LCA2NTYyOSwgMCwgCisgICAgMTk0ODU4LCA3NDg1NCwgNjY3NTAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgNDE2NjksIAorICAgIDcwOTQsIDEyMTA1MSwgMTIxNDA4LCAxMTkwNDEsIDc0MDU0LCAxMjc3NTQsIDEyODkxNywgMCwgODM5LCAxMjEzMTUsIAorICAgIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgNjQ0NjcsIDk4MzQ2MSwgODM1MjUsIDExODk5OCwgNzIwNiwgCisgICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgNzI3MzgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCisgICAgODA0LCA2Njc0NiwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKICAgICA2NzIwNiwgNjcyMDUsIDY3MjA0LCA2NzIwMywgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDcxODUxLCAxMjc5LCAKLSAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIAotICAgIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyNzUyNSwgNDI3MDIsIAotICAgIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCA3MDE5MSwgCi0gICAgMTIwODE5LCA2ODM4NywgMTIwMTY4LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAKLSAgICA3NzgzNiwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgNjc3NDEsIAotICAgIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgNzg4LCA3NDAyNywgMTk0NjY3LCA3MTg4MSwgMCwgMTY2MywgMTA0MTksIDQyOTAxLCAKLSAgICA0MjYzNiwgNjcyMTEsIDY3MjEwLCAxMjkxNDcsIDEyMDY1NiwgNjcyMTUsIDY3MjE0LCA2NzIxMywgNjcyMTIsIDAsIAotICAgIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAxOTQ3MzIsIDAsIDEwODU1LCAKLSAgICA1NDQ1LCA5MzU1LCA2NzIyMSwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDk4Mzg3NCwgMTE5MjM4LCA4MDEwLCAKLSAgICA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgNzQ2MTIsIDcwODIwLCA2NDQ2OSwgOTI1OTIsIDEwNTU1LCA2NzIyNywgNDMzMzMsIAotICAgIDY3MjI1LCAxMjg0ODMsIDEyMDQyNywgMTA0NTEsIDY3MjI5LCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAKLSAgICAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCA3Nzg0MiwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCA4MzM0MywgCi0gICAgOTgzNTgxLCAxMTAxMCwgMTExNjQsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgNDM4NDYsIDc2ODIsIDc0MDQ5LCAxNDYyLCAKLSAgICAxMDIzNSwgMCwgMCwgOTgzMzI1LCA0MzQ0MSwgMTI3OTI0LCAxMjc3NzcsIDQyNTk1LCAxMjY2NDEsIDc0NDAyLCAxMTg4NjAsIAotICAgIDc4NjYxLCAxMjA0MTksIDkyNDk3LCA2NjI4NywgMTIwNDIwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAKLSAgICAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgODMyMTAsIDEyMDY2MiwgNjk5MjAsIDE5NDcwMiwgNjIxNiwgNjcyMzAsIAotICAgIDEwNzU1LCA5NDU1LCAxMTE1NSwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjExMjUsIDAsIDY5NjgwLCAyODI4LCAwLCAKLSAgICA1MzEsIDQyNjM4LCAxOTQ4MDQsIDkxNzg1NiwgMTIwOTYxLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgCi0gICAgMTIwMzY1LCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDEyMDg1MCwgNDI1OTksIAotICAgIDQyNTk3LCA0MjcwOSwgNjg4MjksIDEyNTAxMiwgMCwgODUzNywgMTI3MzA2LCAwLCA5MzU0LCAxMjEyNDQsIDEyMTM0OCwgCi0gICAgNDExOTksIDEwMTIxLCAyMDI4LCA3NDk1MCwgMTIwMjUzLCA2OTcxNSwgMTI4NTI1LCAzMDYyLCAwLCA3NDQ0NywgMTI2MDgsIAotICAgIDk4MzY1NywgNjY0NDAsIDc1NDUsIDk3MDAsIDExOTQ4LCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgCi0gICAgNzQwNzEsIDAsIDk4MzQ1OSwgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIDc4NzcyLCAxMTM3NzAsIDE3MzQsIDAsIDc4MTQxLCAKLSAgICAxMjcwNDAsIDY0NTk0LCAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgNTQyLCA5MTc5ODEsIDExODc4NiwgOTgzODU5LCAKLSAgICAxOTQ3OTcsIDEyMzAsIDEyNTAxOCwgMTIxMzQzLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAKLSAgICA2NzczNywgODM1MiwgNzg0MzYsIDU2ODcsIDEyNzAxOCwgNjQ1MTUsIDEyMTM3OCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIAotICAgIDc4NDM0LCA5NzA0LCAwLCAxOTQ1NzMsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDc4LCAwLCAxMjg1NjksIDc4NzczLCAKLSAgICA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDE5NDg1MSwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAKLSAgICA5ODMxMDEsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIDQ0ODAsIDExMjY2LCAxMjExMTQsIDEyMjYsIDY5MzAsIAotICAgIDY3OTc5LCAxOTUwMTksIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCA2ODMwMiwgNzQ3ODUsIDY5ODc1LCAwLCAxMjE0NzgsIAorICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgOTgzNzEwLCAKKyAgICA1MDMyLCA2NzIwOSwgMTE5NDAsIDY3MjA3LCA2NjQsIDEyMDQzNywgNTAzNCwgOTI0OTUsIDcwMjAwLCAxMjI5MDEsIAorICAgIDQyNzAyLCA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCA5MTE1LCA3NDMwLCA3NzgzNywgCisgICAgNzAxOTEsIDEyMDgxOSwgNjgzODcsIDEwMDY0NSwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCAKKyAgICA0MTE2MiwgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIAorICAgIDY3NzQxLCAxMjg4MDAsIDUyNCwgMTI4NjY3LCA3NDAyOSwgNzg4LCA3NDAyNywgMTk0NjY3LCA3MTg4MSwgMTIwMzcwLCAKKyAgICAxNjYzLCAxMDQxOSwgNDI5MDEsIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIAorICAgIDY3MjEzLCA2NzIxMiwgMTI4ODI4LCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAxOTQ5MDQsIDExOTEwNywgNDM2MTIsIAorICAgIDY0MzQ0LCAxMjkzNzAsIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCA2NzIyMSwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgCisgICAgNDM2NzMsIDk4Mzg3NCwgMTE5MjM4LCA4MDEwLCA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgNzQ2MTIsIDcwODIwLCAKKyAgICA2NDQ2OSwgOTI1OTIsIDEwNTU1LCA2NzIyNywgNDMzMzMsIDY3MjI1LCAxMjg0ODMsIDEyMDQyNywgMTA0NTEsIDY3MjI5LCAKKyAgICA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCA3Nzg0MiwgCisgICAgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCA4MzM0MywgOTgzNTgxLCAxMTAxMCwgMTExNjQsIDc0MDU5LCA3NDA2MiwgCisgICAgNjIxNywgNTg5NiwgNDM4NDYsIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgOTgzOTE4LCAwLCA5ODMzMjUsIDQzNDQxLCAKKyAgICAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDcyODA0LCA3NDQwMiwgMTE4ODYwLCA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIAorICAgIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAKKyAgICAxMjA2NjIsIDY5OTIwLCAxMjUyNzgsIDYyMTYsIDY3MjMwLCAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgCisgICAgOTQ3MCwgNjk0NCwgMTIxMTI1LCA5MTc5ODIsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAxOTQ4MDQsIDkxNzg1NiwgCisgICAgMTIwOTYxLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMTIwMzY1LCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgCisgICAgNzg1NjIsIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDEyMDg1MCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgNjg4MjksIDEyNTAxMiwgCisgICAgMCwgODUzNywgMTI3MzA2LCA5ODM3MjksIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAKKyAgICAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDk4MzY2MywgNzQ0NDcsIDEyNjA4LCA5ODM2NTcsIDY2NDQwLCA3NTQ1LCAKKyAgICA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIDc0MDcxLCAxMjg3MjIsIDkyMzcyLCAKKyAgICAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzcwOSwgMTczNCwgMCwgNzgxNDEsIDEyNzA0MCwgNjQ1OTQsIAorICAgIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDEyMDU4NiwgMTAwODUxLCA5ODM4NTksIDE5NDc5NywgMTIzMCwgCisgICAgNzM4NDUsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgNjc3MzcsIDgzNTIsIDc4NDM2LCAKKyAgICA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgOTgzNTg1LCAKKyAgICAxOTQ1NzMsIDcwMDgwLCA3MTMzOCwgMTIwNTc1LCA4NjYwLCAxMjY0NzgsIDEyNzAxMCwgMTI4NDY3LCA3ODc3MywgNzQ0ODIsIAorICAgIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxMjgxNjcsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgOTgzMTAxLCAKKyAgICAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAxMTg3ODYsIDQ0ODAsIDExMjY2LCAxMjExMTQsIDEyMjYsIDY5MzAsIDY3OTc5LCAKKyAgICAxOTUwMTksIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCA2ODMwMiwgNzQ3ODUsIDY5ODc1LCAxMjA4NDksIDEyMTQ3OCwgCiAgICAgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNjc2ODIsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCAKLSAgICA3NDI3MiwgMCwgMTk0NjcyLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAotICAgIDAsIDc0ODU1LCA1MDM3LCAxMTk5MTIsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCi0gICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgODMwMDIsIDEyODc3MiwgCi0gICAgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCAKLSAgICA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCA5ODM5NDksIDY1NDE5LCAwLCAKLSAgICAxMjg0OTYsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCAKLSAgICA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCAKLSAgICA2NTQxOCwgMTI5MDUwLCA5ODM4NzgsIDc0MDM1LCAxOTQ5MTgsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAKLSAgICAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgCi0gICAgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgCi0gICAgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgCi0gICAgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIAotICAgIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzUwNTIsIDc4MzM5LCA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgCi0gICAgNzc4MzEsIDk4Mzk2MSwgMTk0NjQ5LCAxMjQ1MSwgNzQzNzYsIDg2ODQsIDEyODMwMSwgNjEwMiwgMCwgNTI5OCwgOTE3ODQ3LCAKLSAgICA1Mjk0LCAwLCA4MzAxNiwgNjgwNDMsIDE5NTA2MiwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAKLSAgICAxMjg2NDYsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgCi0gICAgOTgzODgzLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzcsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCAKLSAgICA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgCi0gICAgNzQzODMsIDAsIDc0MTk3LCAxMjkwODksIDU1MDAsIDg4MTMsIDAsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIAotICAgIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIAotICAgIDQzMTYyLCA0MTgxNSwgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCAKLSAgICA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCAKLSAgICA2NzE3NSwgNjcxNzQsIDAsIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIAotICAgIDEyODQ5NywgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKLSAgICAxMjkxMzIsIDcyNDA5LCA3ODI1NiwgNzI0MDgsIDc4MzUyLCAwLCA3NTA2MywgMCwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCAKLSAgICA5Mjk5NiwgNzI0MDcsIDMwNjYsIDkyMjIwLCA2Nzg0NywgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCAKLSAgICA2NzE4OSwgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCAxMjEwMTIsIDAsIAotICAgIDc4MzY2LCA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIAotICAgIDcxMDUwLCA4MTE5LCA2NDg3NCwgNzEwNTIsIDc4MTc0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAKKyAgICA3NDI3MiwgMTI4MDc2LCAxOTQ2NzIsIDEyMTIwMiwgMTAwNjUyLCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgCisgICAgOTkxNywgMTI1MjQ0LCA3NDg1NSwgNTAzNywgMTAwOTk4LCAxNzc2LCA4NDIyLCAxMjg5MzUsIDExODgxNCwgNDE1MDgsIAorICAgIDQxMjAxLCAzMjMsIDQzMzI4LCA5MTc4NDksIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgCisgICAgODMwMDIsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgCisgICAgNjU0MjAsIDkyNDc5LCAxMjcxOTEsIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIAorICAgIDEyOTMxOCwgNjU0MTksIDAsIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMTIyODgwLCA2NjcwMiwgOTgzNzIxLCAxMjY3MCwgMTAxMywgCisgICAgNzA3MDcsIDY0OTE5LCA3MDUsIDcyODI1LCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCAKKyAgICA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMTI5MDUwLCAxMjgwOTAsIDc0MDM1LCA3ODgzNiwgMTE5MTMsIAorICAgIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgCisgICAgNjYyMjcsIDk4MzI3MiwgNDE4NCwgMTE5ODI1LCAxMjg1OTgsIDEwMTc3LCA3Mzc3NywgMTg1NywgMTI3NzczLCA0NjI2LCAKKyAgICA4NDY0LCA4NDcyLCA2ODg0NCwgNDYyOSwgODQ5OSwgNzQ2MjcsIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTg4NjEsIDEyODEwOCwgCisgICAgMCwgNzgwNSwgMTI4NzU0LCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgwNzksIDQzMzI3LCA0Mzk4OSwgCisgICAgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCA4MzQ5OSwgNzQ1ODIsIDcwNjkwLCA3ODMzOSwgCisgICAgOTU0MywgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIDc3ODMxLCAxMjg2MTUsIDEwMDQxMiwgMTI0NTEsIDc0Mzc2LCAKKyAgICA4Njg0LCAxMDA1MTUsIDYxMDIsIDEyODA0NiwgNTI5OCwgMTI4NzIxLCA1Mjk0LCA4MzIzNSwgODMwMTYsIDY4MDQzLCAKKyAgICAxOTQ4OTksIDk5NDksIDgzMDE0LCA0MzYxNywgMTE5MjE1LCAxMjcwMzAsIDEyMDczLCAxMjA3MzYsIDEyODAxNywgNzc4NjMsIAorICAgIDEzMTA4LCA3MTIzMSwgMjI2MCwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgOTgzODgzLCAxOTM5LCA1MzAyLCAKKyAgICAzOTcwLCAxMjkzNDgsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCA5MjQ3NywgNjUyNjMsIDAsIAorICAgIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgNzQzODMsIDAsIDc0MTk3LCAKKyAgICAxMjkwODksIDU1MDAsIDg4MTMsIDk4MzQxNCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCA3ODM0MCwgNDM2MzEsIAorICAgIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIDMzNjAsIDc4MzQ0LCAKKyAgICAyMjMxLCA3MjcyNiwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgNzgzNjAsIAorICAgIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIDQxODE1LCAKKyAgICA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIAorICAgIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIDY3MTc1LCA2NzE3NCwgMCwgCisgICAgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgMTIwOTgxLCA5NjY2LCA4MjY5LCAKKyAgICA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIDEyODU1NiwgNzI0MDksIDc4MjU2LCAKKyAgICA3MjQwOCwgNzgzNTIsIDkyMjEyLCA3NTA2MywgNzI4MzksIDAsIDEzNzgsIDk1MDksIDE5NDYzNCwgOTI5OTYsIDcyNDA3LCAKKyAgICAzMDY2LCA5MjIyMCwgMjI3MCwgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCA2NzE4OSwgNzI4MTgsIAorICAgIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDcyODMzLCAxMjUyMjYsIDc4MzY2LCAKKyAgICA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDcxMDUwLCAKKyAgICA4MTE5LCA2NDg3NCwgNzEwNTIsIDQzOTY0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDcyODQzLCAxMDA3ODMsIDEyOTMwLCAKICAgICAxMzk0LCA3NDUxNCwgMTI4NDEzLCA3NDUxNSwgOTgzNzI3LCA2NzE4NCwgMjk5OCwgOTUyNywgNjcxODEsIDY1MTkwLCAKICAgICAxMjk3NywgNDIwOTAsIDY3MTg1LCA5ODM2NDcsIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCAKICAgICA1ODQ4LCA2NzE5MywgNjcxOTIsIDM2NzAsIDY3MTkwLCA2NzE5NywgNjcxOTYsIDY3MTk1LCA3ODkwLCAxMjgwNzAsIAotICAgIDExMjk4LCA0MzMxNSwgOTgzMzE1LCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCisgICAgMTEyOTgsIDQzMzE1LCA3Nzg3MSwgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIDQ2MzUsIDY1MDgwLCAxMjcxNTgsIAogICAgIDEyMTk0LCA0MTIwLCA2NTMzNywgNjUzMzYsIDEyODQwNywgMTE4MDgsIDY3MTk5LCA2NzE5OCwgOTM2NiwgNDI3OTAsIAogICAgIDQyMDA2LCAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCAKICAgICA0Mzk0NywgNjUzMzQsIDQzOTQ2LCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCAKLSAgICA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MzAsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCi0gICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTIwODYyLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCAKLSAgICA0MzUzMywgNzg0NTksIDcxODksIDAsIDAsIDQzOTQxLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCA2NjI5MiwgCi0gICAgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAxMjEzNTEsIDU2MiwgMTIxNjksIAotICAgIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAxMjEwOTYsIDEyODI4MSwgMTAzNywgMTI4Njc3LCAKLSAgICAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgNDM4MzksIDI4MzUsIDgzMDUyLCAKLSAgICAxMDYyNCwgNDM2MjMsIDExMDcyLCA4MzA0NSwgMTI4NTIzLCA4MzA0NiwgMTI2MDYsIDc4NDMzLCAyODI1LCA4MzA0OCwgCi0gICAgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgODMwNDMsIDEyMDU5MywgMTMwNzEsIDEyMTI4OCwgNDUyLCAKLSAgICA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgOTE3OTE3LCA2NDcwMywgCi0gICAgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCA0MTA0NywgMTY2OCwgMTE5ODQ5LCAxMjExNTAsIAotICAgIDEyODI3NSwgMTE4NywgOTgzMzg3LCA0MjYyOCwgNzg1NzUsIDgyOTUzLCA3MTg2MywgODI5NTUsIDMyNDAsIDEyODUxOCwgCi0gICAgMTIxNTEsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgMCwgMTE4OTMyLCAwLCA2NjgyNywgMTYyMywgNjUyOTcsIAotICAgIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIDE1NDEsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCA2NjQwMiwgCi0gICAgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgNzA0NzYsIDkyMjk2LCA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDY4MDgzLCAKLSAgICAzNTY3LCA3MDEsIDY1OTM2LCAzNDg5LCAxMjA4OTksIDcwNDYyLCA3MDE3MiwgMTE0MDMsIDAsIDAsIDgyOTg2LCAzNzk2LCAKLSAgICA2ODAwLCA3MDQ3MiwgMzk5NCwgMTE0MjEsIDc0NjExLCAxOTUwNzYsIDE5NTA3OCwgNjgwMzYsIDAsIDAsIDY0ODU3LCAKLSAgICA4MzUwOCwgMjg1NSwgNzQ0MTgsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIDgzNTEzLCAxMjc4MTcsIDEwNjU0LCA4Mjk0NSwgCi0gICAgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgNjYyNzYsIDc0MjcwLCAKLSAgICA4MzA2OSwgMTI1MDkwLCAxMjExMTUsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgODMwMzEsIDg0NjYsIAotICAgIDgzMDc1LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgCi0gICAgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgOTMwMDgsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgCi0gICAgMTE2MDksIDY2MzEzLCA5MjU2OCwgMCwgNTI4NiwgMTE5Mjk3LCA4MzA1OSwgOTgzMjUzLCA2NDkyNSwgMTIwMjgzLCAKLSAgICAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgMTI3MjAzLCAzMzA5LCA4Mjk3OSwgOTIwNiwgCi0gICAgODI5ODAsIDExMzgyNCwgNjgwMiwgNzAzNTMsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIAotICAgIDQyNTY1LCA0MTY1MSwgMCwgOTE3NjI3LCA4MzA0MiwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgNzQ0NzIsIDEyOTE0LCA0MTQ5MSwgCi0gICAgNDM5MDEsIDk0MTA2LCA2MDc4LCA5OTU0LCA3ODgyMiwgMTQ3NSwgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCAKLSAgICA0MTA2MiwgMCwgMTEzNjgwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIDQzMjUyLCA3ODgyMywgNjgwODksIDg3MjcsIDEyMDkyMiwgCi0gICAgNjU4NzUsIDAsIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMTIwOTA2LCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgCi0gICAgOTAxNSwgNzEzNTEsIDAsIDM2MzUsIDY0MzM3LCA5Mjc1OSwgMTI1MDU0LCAwLCA3MTk1LCA4MzM0NiwgMjAwNywgNjQ0MzEsIAotICAgIDE5NTA3NSwgMCwgOTIxOTcsIDEyNzA5MCwgNjM1LCAwLCAxMjkwODIsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAKLSAgICAxMjg1MTAsIDEyMTQ1NywgNDM5MDUsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIDQxNzYsIDcwMDUwLCAyMDM0LCAKLSAgICA3ODQyMywgMTExNTQsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4NTQ0LCA3ODU5NiwgMTk0NjAyLCAzNjQ5LCAKLSAgICAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCA3NTA0NSwgCi0gICAgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAKLSAgICAxMTgxMiwgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDcxMTgzLCA2OTcyOSwgMCwgMTIwNzk3LCA3MTc4LCAxMjA4NTEsIAotICAgIDk4MzgzNiwgNDE2ODAsIDEyODQ2OSwgODMwOTgsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIAotICAgIDEyODQ5MCwgNjc4NzcsIDE5NDU2MSwgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAKLSAgICAxMDgxOCwgODMwOTEsIDk5NTMsIDE5NDg5NSwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgCi0gICAgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCA5MTc5MjQsIDY3ODc1LCAKLSAgICAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxMjUwNzksIDgzMzU0LCA2ODM2NCwgMTIwNzc5LCA0ODkxLCAwLCAxMDY0MSwgMCwgCi0gICAgNzM3NDYsIDEyMDk0NSwgNjgzNTIsIDAsIDczNzg3LCAxMjg4NTgsIDEyNzA5NCwgNzE5OSwgMTExMzEsIDAsIDAsIDAsIAotICAgIDk4Mzg1MiwgMTI2OTc5LCA0MjY4NSwgNDI2NzksIDE5MywgNzg3ODksIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA2ODMyMywgCi0gICAgOTI1MTcsIDgzMzU2LCAxMzYyLCAxMzI5NywgMCwgNzE4ODAsIDAsIDk4MzMzMywgNzM3ODksIDAsIDY2NTgsIDQ0MjYsIDAsIAotICAgIDY2ODMwLCA5ODM4NDIsIDgzMTAzLCA3Mjc2LCA0MjE2MywgNTIyMCwgMCwgNzg2MjEsIDY3ODIyLCAyNDE2LCAzMzEwLCAKLSAgICA0MjcwMywgODMxMDcsIDM3OSwgMCwgNDM3NTUsIDcwNTA0LCA0MzY0NywgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgCi0gICAgNDU0OSwgMTk0NzM4LCAwLCA3MTI1MywgNzA3ODQsIDEwODA3LCA5NTU4LCA5MzAyNywgMCwgODUxNSwgODY4OCwgMTI4NjYsIAotICAgIDY1MzA4LCAzMjk0LCA4MzE0MywgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDgzMTQ4LCA5MjQ1OCwgCi0gICAgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMTI4NDM5LCAyMDMxLCA5ODM4OTAsIDcyMDIsIDEyODIzMiwgMTI2NzYsIDQyNzI5LCAKLSAgICA3NDc3NywgMzIxNSwgMTIwOTgyLCA3NzEwLCAxNjEwLCA3MzgwMSwgMTI4ODA3LCAwLCA2NTY4MiwgMCwgNDM5MTcsIAotICAgIDY1OTI0LCA5OTc0LCAyMjgsIDQzOTIyLCAxNTAxLCAxMjc5OTQsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAxMTg5MjcsIAotICAgIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCAKLSAgICA3NDgzLCA0Mzg5OCwgMCwgODEwNCwgNzAxMjgsIDc0NzQsIDQzOTE0LCA4MzA4MCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIAotICAgIDgxNDEsIDk4MzIzOSwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDQyOTM0LCAKLSAgICAxMjcxNjYsIDAsIDc0MTkwLCAxMjg0NzcsIDcwNDEwLCA5ODM3ODYsIDQyNzYyLCAxOTQ3MDgsIDQyOTE0LCAxNjUwLCAyNjIsIAotICAgIDE2MzcsIDEyODUwMiwgNzkwMSwgMzIzOCwgODMwMjYsIDQxODYxLCAwLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgNzQ5NTksIAotICAgIDQzNjU4LCA3NTI3LCA4MzA4NiwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgOTM5ODksIDEyNzc1MywgMTE5ODEwLCAKLSAgICA3MTk0LCA1MjkxLCAwLCA0MzY2NiwgMTMxMjksIDEyODY4NCwgOTA4NCwgMTIxMDM5LCA4NzM3LCA5ODMxNjUsIDEyODgxLCAKLSAgICA3NTA2NiwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDk4Mzg4MiwgMzU2NCwgMCwgNjk5NzgsIDE3OSwgNDM2NDQsIAotICAgIDc1MDQ5LCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCA4MDg0LCAKLSAgICA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDgzNTIyLCA0MjA3MiwgOTI3MzYsIAotICAgIDExOTg0MiwgMTAzOTgsIDgzMzg2LCA4MzUyMywgODM3NywgMTE5MzEyLCA4MjQ1LCA2ODQwMSwgMzE1OCwgOTIzOTYsIAotICAgIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgOTI0NzAsIDI5MiwgMTExMTksIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgNjc3MjksIDExOTg1MCwgNzI1MywgNzA0NTYsIDY4MzkxLCA3NTAwMiwgMTA3ODIsIDM2MzcsIAotICAgIDEyOTk2LCA0MzU0MiwgMTEzNjc2LCA2NDU3OCwgODM0NDksIDMyMjgsIDY5NjM2LCA4NzgzLCA5ODM2MzIsIDExOTYxNCwgCisgICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzMTM1LCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAorICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEwMDM1OSwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCisgICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAxMDA0MTgsIDk4MzIyNywgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIAorICAgIDkxMzEsIDY2MjkyLCA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDk4Mzg4NywgCisgICAgMTIxMzUxLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAKKyAgICAxMjgyODEsIDEwMzcsIDEyODY3NywgMjAyNSwgMTE5MTU5LCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIAorICAgIDQzODM5LCAyODM1LCA4MzA1MiwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyMDU2MSwgODMwNDYsIDEyNjA2LCAKKyAgICA3ODQzMywgMjgyNSwgODMwNDgsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIAorICAgIDEzMDcxLCAxMjEyODgsIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIAorICAgIDExODk0NSwgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDEyODI3NiwgNDEzMzIsIDAsIDEyMzMzLCA0MTA0NywgMTY2OCwgCisgICAgMTE5ODQ5LCAxMjExNTAsIDEyNzI5NSwgMTE4NywgMTI4ODc1LCA0MjYyOCwgNzg1NzUsIDgyOTUzLCA3MTg2MywgODI5NTUsIAorICAgIDMyNDAsIDEyODUxOCwgOTIxMywgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCA3MDczOSwgMTE4OTMyLCAxMjcxMTEsIAorICAgIDY2ODI3LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzA4MSwgMTU0MSwgNjUwNDgsIAorICAgIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIAorICAgIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAKKyAgICAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDEyNzkxMSwgCisgICAgMTk1MDc4LCA2ODAzNiwgNzA2NTksIDAsIDY0ODU3LCA4MzUwOCwgMjg1NSwgNzA2OTcsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIAorICAgIDgzNTEzLCAxMjc4MTcsIDEwNjU0LCA4Mjk0NSwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCAKKyAgICA3MTgyLCAwLCAxMzAyNCwgNjYyNzYsIDc0MjcwLCA4MzA2OSwgMTI1MDkwLCAxMjExMTUsIDAsIDE0OTYsIDc0NywgCisgICAgOTE3OTk5LCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgODMwNzQsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIAorICAgIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCAKKyAgICA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIAorICAgIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAKKyAgICAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIAorICAgIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCA5ODM4NjksIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgCisgICAgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIAorICAgIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCAKKyAgICA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIDY1ODc1LCA5MTc5MTYsIDEyOTM0OSwgMTI3NzYyLCAxMDU2MiwgCisgICAgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMTEzNzE4LCAzNjM1LCAKKyAgICA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAxOTUwNzUsIDE5NDY3MCwgOTIxOTcsIAorICAgIDEyNzA5MCwgNjM1LCA5ODMxMTgsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDEyNzk4MCwgMTIxNDU3LCAKKyAgICA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyMTA0NywgNDE3NiwgNzAwNTAsIDIwMzQsIDc4NDIzLCAxMTE1NCwgNjU4OTEsIAorICAgIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxMjkwOTQsIDM2NDksIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIAorICAgIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAxMTQwMiwgNDIxNDYsIDk0MDMyLCAKKyAgICA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIDExODEyLCA2NTM3OSwgNjgzODYsIAorICAgIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCA2Njc2OCwgNzE3OCwgMTIwODUxLCA5ODM4MzYsIDQxNjgwLCAKKyAgICAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAxMjg0OTAsIDY3ODc3LCAKKyAgICAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDgzMDkxLCAKKyAgICA5OTUzLCAxMjgwMDgsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAKKyAgICAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCAKKyAgICA2NjY0OCwgMTI1MDc5LCA3ODcwOCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgOTE3OTMzLCAxMDY0MSwgMTI1MjY1LCA3Mzc0NiwgCisgICAgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyMDE5NSwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMTIwNjE3LCAxOTQ3MDAsIDAsIAorICAgIDk4Mzg1MiwgMTI2OTc5LCA0MjY4NSwgNDI2NzksIDE5MywgNzg3ODksIDAsIDAsIDQyNjY3LCA5ODM4NjgsIDUyNzEsIAorICAgIDY4MzIzLCA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAxMTg4NjIsIDcxODgwLCAxOTUwOTAsIDE5NDk2OSwgNzM3ODksIAorICAgIDEyMDk4OSwgNjY1OCwgNDQyNiwgMTI3MDkzLCA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIAorICAgIDEwMDY3MCwgNzg2MjEsIDY3ODIyLCAyNDE2LCAzMzEwLCA0MjcwMywgODMxMDcsIDM3OSwgMTI5MTU5LCA0Mzc1NSwgCisgICAgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAxMTUyMywgMCwgNzEyNTMsIDcwNzg0LCAKKyAgICAxMDgwNywgOTU1OCwgOTMwMjcsIDEyODAwMywgODUxNSwgODY4OCwgMTI4NjYsIDY1MzA4LCAzMjk0LCA4MzE0MywgODUyOSwgCisgICAgMTI4MTAxLCA0MzM4NSwgNzU2NCwgOTE3OTg2LCA0MzMyOSwgODMxNDgsIDkyNDU4LCA3Mzc1NywgNjY0NTYsIDQyMzU5LCAKKyAgICAxMjg0MzksIDIwMzEsIDEyNzM5NCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIAorICAgIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIAorICAgIDE1MDEsIDEyNzUxMiwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCAKKyAgICA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIDc0ODMsIDQzODk4LCAwLCA4MTA0LCAKKyAgICA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgODE0MSwgMTk0OTQ5LCA0MjUzNywgCisgICAgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIDkyMjAzLCAxMjUyMTEsIDc0MTkwLCAKKyAgICAxMjg0NzcsIDcwNDEwLCA5ODM3ODYsIDQyNzYyLCAxOTQ3MDgsIDQyOTE0LCAxNjUwLCAyNjIsIDE2MzcsIDEyODUwMiwgCisgICAgNzkwMSwgMzIzOCwgODMwMjYsIDQxODYxLCA5ODM3NjMsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgNDM2NTgsIAorICAgIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDEyODA2MCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCisgICAgNzE5NCwgNTI5MSwgMTAwMzk4LCA0MzY2NiwgMTMxMjksIDEyNjYzOSwgOTA4NCwgNzI3MTcsIDg3MzcsIDk4MzE2NSwgCisgICAgMTI4ODEsIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgMTk0ODMwLCAzNTY0LCAxMjczOTMsIDY5OTc4LCAxNzksIAorICAgIDQzNjQ0LCA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgCisgICAgODA4NCwgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIAorICAgIDkyNzM2LCAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIAorICAgIDkyMzk2LCAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDcyNzE1LCAzMjIxLCAKKyAgICAxNzYzLCA5MjQ2MywgNDYxMiwgNjc3MjksIDExOTg1MCwgNzI1MywgNzA0NTYsIDY4MzkxLCA3NTAwMiwgMTA3ODIsIDM2MzcsIAorICAgIDEyOTk2LCA0MzU0MiwgMTEzNjc2LCA2NDU3OCwgODM0NDksIDMyMjgsIDY5NjM2LCA4NzgzLCA5ODMwOTMsIDExOTYxNCwgCiAgICAgMjczMSwgMCwgMTIwODMzLCA3ODU4NSwgNDEwMiwgNzY5NiwgNzM4NzgsIDEyMTQxNywgMTI4MTMyLCA3MDgxMywgNDMzMTYsIAogICAgIDQxNzcsIDExMjgzLCA5MDg5LCAxMjA5MTgsIDczOTk2LCAxMjExMTEsIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIAotICAgIDAsIDAsIDYzNzksIDkxNzgwNCwgMTExNDIsIDEyNzE3NiwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkzMSwgCi0gICAgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMTI0OTYyLCA5ODM2ODMsIDIwMzMsIDc4NTc3LCA3ODU3NiwgODI5NjUsIDU1MjU0LCAKLSAgICA3NzQwLCA4Mjk3NCwgNzA0NDgsIDEyNjU1NSwgNzM5NjQsIDY4NTA1LCA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAxMjgyNDQsIAotICAgIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIDEyODUyMCwgMTI4MDY2LCAKLSAgICAxMjgwMzEsIDg1NjEsIDQ1NzMsIDEyMTM3NSwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgODI1NywgMTIxNDE1LCAKLSAgICA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCA2NTA5MiwgNzM5MDMsIAotICAgIDY0MzU1LCAxMTM0MiwgMTI4NTYxLCAwLCA5ODM0MzQsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCAKLSAgICA5NjcsIDk4MzMzNSwgMTIwOTg1LCAxMTk0NiwgOTgzNjAyLCAzMjU3LCAxMjcyMDksIDEyMzA3LCAxODQ1LCAxMjkwNzIsIAotICAgIDQzNTI2LCAwLCAxMTk1NzMsIDE4ODYsIDQyMzQyLCAxMDA4OSwgODcwLCA3NjQ4LCAzNDk5LCA3NjYyLCA3NjUyLCA4NzYsIAotICAgIDg3MSwgODc3LCA3NjY1LCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCA0NTYzLCAwLCA5MTc4OTIsIDc1OTEsIDY1ODg3LCAKLSAgICA4NjcsIDk1MjAsIDg3MiwgNzY1NiwgODY4LCA4NzMsIDc2NDIsIDc2NTksIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgCi0gICAgNzkwLCAxMjgzMDMsIDExODkzOCwgMTk1MDUzLCA5MzAzOCwgNjYxODIsIDE5NDYyMywgNTQyOSwgMTk1MDU1LCA2NjE4MCwgCi0gICAgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI5MSwgMTI3MjE0LCA0MjA2NywgMCwgNTQzMywgMTA2NTcsIDc5MTEsIAotICAgIDEyNTExOSwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIAotICAgIDEyNTA5NCwgNjc2MzcsIDEyNzI4NiwgOTY3OSwgNzQxMjIsIDkyOTc4LCA5MTc1ODUsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgCi0gICAgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAxMjcyNjMsIDE4NTEsIDEyNDk5NSwgODMzMjAsIDExOTA4LCAwLCA5MzYwLCAKLSAgICAxMTg4OTcsIDEyMDg3NCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgMTExMTIsIDAsIDkyMzIxLCA0MzMxOCwgCi0gICAgOTIzMDIsIDg4MDksIDY5ODgxLCAwLCAxMjY1MTgsIDEyMDYwNCwgOTgzMDUyLCA5ODMyNzcsIDk4MzQzMywgMTI4NDEyLCAwLCAKLSAgICAxMjA1NzcsIDc0MjcsIDk5NTgsIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTI3MTg1LCAyNDMzLCAxMjg2MDIsIDY5OTczLCAKLSAgICAzMzUyLCA3NDM2MywgMTI4NjY4LCAxMjEzNDEsIDc5MywgNzQ0MDQsIDExMTk3LCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgCi0gICAgNjk5NzksIDgyMDgsIDY4MzA4LCA0MTY5NSwgMTY0NywgMTE4ODc3LCA3MDg0MSwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIAotICAgIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCA2ODc0MiwgMTIwNTk0LCA3NDA4NiwgNjg3NzcsIDcwMTc5LCAKLSAgICA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDkxNzYwNSwgMTk0NjU0LCAKLSAgICA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDEyNjYxMiwgNjc3MjMsIDI4NDAsIDk4MzkwNSwgNzg4MjksIDk4MzkzOSwgCi0gICAgNjY4ODcsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMTIxMTYxLCAxMjgwNTEsIDEyOTkxLCAxMjQ5NzEsIDI2NTEsIAotICAgIDY4MDE2LCA5ODMyNjcsIDEyNzMyNiwgMTI1MDM4LCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDkxNzgzMywgCi0gICAgNDMzMjIsIDkyNjYyLCAwLCAwLCA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCAKLSAgICA3NDg5NCwgMTExNTIsIDkyOTAzLCA2NTYxMCwgMjM5MSwgOTI5MDgsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIAotICAgIDYxMCwgNDI4MDAsIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgCi0gICAgMTI4MzQwLCAxMjgyNjYsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMTI4MjkwLCA3NDI0OSwgNDYwNSwgMTI4MTc0LCA5ODMxOTIsIAotICAgIDQzMzcyLCA2NTk0NSwgMTI3MjQ5LCAxMTExMywgMTE5NTkwLCAwLCAwLCA3MDQ5NSwgOTg3LCA2OTI3LCAxMTU3MiwgCi0gICAgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCA5ODM5NTEsIDEyODI5NywgMCwgNzg3NjIsIDEyNzg2NywgMTIxMzY4LCAKLSAgICAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDExOTI2OSwgNTIwOCwgMCwgCi0gICAgNzAwOTAsIDEwMzMyLCAyNDI0LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNzM4OTQsIDEyODg1MiwgCi0gICAgNTQzMiwgNjQ5NjUsIDU1MjcsIDQyMzE1LCAxMDUxNiwgNzc5MCwgNTUyOCwgMTI4ODM4LCA0MjE0MCwgMTIwMjgxLCAwLCAKLSAgICA5ODM3NzcsIDQzNTQ1LCA5ODg3LCAxMjE0NzcsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCAKLSAgICA3ODg0LCAwLCAxMjg1NjYsIDc0OTEwLCAxMjg2NjYsIDIxMSwgMjUwOSwgOTI5MDQsIDcwODIyLCA2ODY3MiwgMzIyMCwgCi0gICAgNDIyMzUsIDc4NDgwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDAsIDcwNDgsIDQ1OTAsIDEyNzI1OCwgCi0gICAgNTg1MiwgMCwgNzg0ODIsIDEyNzI1OSwgMTcwOCwgMCwgNzg0ODEsIDI2MjMsIDExOTQzLCAxMjg3MDAsIDY5MjI2LCAKLSAgICA2OTk3NCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgOTgzODc2LCAxMjAyODUsIDcwNDQ3LCA5NDExMSwgCi0gICAgODI2NywgMCwgMTQyMSwgNjY0MjYsIDc1MTYsIDEyNzU1MiwgMjYyNSwgOTgzNjQxLCA4MDM0LCA3NDMwOSwgMCwgMzYzMSwgCi0gICAgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMCwgOTgzMDY1LCAwLCA0MzM4NCwgMTI2NjAsIDEyODY5MywgMTI4MjcwLCAwLCAKLSAgICA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODksIAotICAgIDM5OTAsIDEyNTA1MCwgOTgzMjY0LCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIAotICAgIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgNzQ5ODgsIDE3NzMsIDc3OTM5LCAxMjAzNTAsIDEyNDk2MSwgNjMzOSwgNzc0NSwgCi0gICAgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIDc0NzY2LCAxMTM3MTksIDg5MDgsIDk4MzIyMiwgMTI4NzA3LCAKLSAgICA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgNjg3NjksIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzNiwgMCwgMTc1NywgCi0gICAgNjk2NCwgNDY5NiwgMCwgMTIwMzMzLCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIAotICAgIDE5NDcwNywgMTIwMzQ0LCA0Mzk4OCwgNzA0MjMsIDg2MTAsIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCAKLSAgICA2OTg5NCwgNDMxNzEsIDE0NTksIDEyODIyNCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMTI5MDc4LCAxNTA0LCA3MDA2NCwgMCwgCi0gICAgMTI5MTMsIDc0MjA2LCA3NTI5LCAxMjg3NDUsIDEyNzg2OCwgNzAyMDMsIDEyMDc4MiwgNDExMywgMTIwOTI5LCAyMzcyLCAKLSAgICAzMzYsIDAsIDc1MDksIDEyMTUyLCAxOTQ4ODUsIDY4MiwgNzY1NSwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgCi0gICAgOTI0NjcsIDc3OTExLCA4MDMzLCA2OTk1MywgMCwgOTgxMCwgMTI3MjY5LCAxMjAwMTMsIDEyOTcwLCAwLCA0MjM1MSwgCi0gICAgMTAxMDksIDc0NTM1LCA3NDA2OCwgNzQ5MjEsIDAsIDkyNjkwLCAwLCA2NTA2OCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAKLSAgICAwLCA3Mzg4NywgMTExMzAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMTExNDUsIDEyMTExNywgNzQyMzksIAotICAgIDQxMzE3LCA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDY5OTEyLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMTExNjEsIAotICAgIDEwNDk4LCAyMDgzLCA3Nzg4OCwgNzExOTYsIDAsIDExOTIzNiwgNjM0LCAxMjQ5NzAsIDkyMjkwLCAxOTQ4ODYsIDY5Nzc5LCAKLSAgICA0MTY1LCA4NzQ2LCAxOTUwNDgsIDk2NTQsIDEyODU2LCA2OTI0LCA3NjYwLCA3MDY2LCAxOTQ2OTMsIDcwNDE1LCAxMjgxMzUsIAotICAgIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDQxMDM5LCAxMjc0ODMsIDEyNDk2NSwgNjgwLCAyMzAyLCAxMjgyMDAsIAotICAgIDExODEsIDcwNTYsIDMxNzQsIDY3MjQ4LCAwLCA5MjY2OCwgNjU2NjUsIDEyNzM3NSwgMTEzNzc2LCA2OTIwLCAwLCA5MjI5NSwgCi0gICAgMTI2NjA2LCAxMTg5NjUsIDY4MzE4LCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgNjgyMzgsIDQxMDI4LCA3NDAyNSwgNjIzMSwgCisgICAgMTAwNTcyLCAxMjc4MTIsIDYzNzksIDkxNzgwNCwgMTExNDIsIDEyNzE3NiwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMTkxMjEsIAorICAgIDk4MzkzMSwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMTI0OTYyLCA5ODMzMjksIDIwMzMsIDc4NTc3LCA3ODU3NiwgCisgICAgODI5NjUsIDU1MjU0LCA3NzQwLCA4Mjk3NCwgNzA0NDgsIDEyNjU1NSwgNzM5NjQsIDY4NTA1LCA5Mzk4OCwgNjc2MTIsIAorICAgIDY1Njc0LCAxMjc1NTIsIDk0MTEwLCA0MTY4OSwgOTgzNDEwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgCisgICAgMTI4NTIwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCAKKyAgICA4MjU3LCAxMjE0MTUsIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIAorICAgIDY1MDkyLCA3MzkwMywgNjQzNTUsIDExMzQyLCAxMDA1NzksIDk4MzczMiwgMTk0OTM5LCAxMjgyMjYsIDEyNzAwMSwgCisgICAgMTI3OTQ0LCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIDEwMDQ4MSwgMTIwOTg1LCAxMTk0NiwgMTI5MDMyLCAzMjU3LCAKKyAgICAxMjcyMDksIDEyMzA3LCAxODQ1LCAxMDA1NzgsIDQzNTI2LCA5ODMwODQsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCAKKyAgICA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIAorICAgIDQ1NjMsIDk4MzI0OSwgOTE3ODkyLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCAKKyAgICA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIDc5MCwgMTIxMDgyLCAxMTg5MzgsIDEwMDQyNywgOTMwMzgsIAorICAgIDY2MTc3LCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCAxOTQ5NjYsIDExOTI0NCwgCisgICAgNDIwNjcsIDExOTk5MywgNTQzMywgMTA2NTcsIDc5MTEsIDEyNTExOSwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIAorICAgIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIDEyNTA5NCwgNjc2MzcsIDEyNzI4NiwgOTY3OSwgNzQxMjIsIAorICAgIDkyOTc4LCA5MTc1ODUsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAxMjcyNjMsIAorICAgIDE4NTEsIDEyMDgyMywgODMzMjAsIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIDEyMDg3NCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgCisgICAgODgyOSwgNzcxMSwgMTExMTIsIDEyODc4NywgOTIzMjEsIDQzMzE4LCA5MjMwMiwgODgwOSwgNjk4ODEsIDEyODU2NCwgCisgICAgMTI1MjI5LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjM4LCA5ODM0MzMsIDEyODQxMiwgMCwgMTIwNTc3LCA3NDI3LCA5OTU4LCAKKyAgICA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgMzM1MiwgNzQzNjMsIDEyNjYwMSwgCisgICAgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDY5OTc5LCA4MjA4LCA2ODMwOCwgCisgICAgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAxMjgzNzcsIDEyNzk4OSwgCisgICAgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgOTE3NjEzLCAxMDk3MywgNjYzNTksIAorICAgIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCAxOTUwMDYsIDE5NDY1NCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIAorICAgIDc4MjIxLCA3Mjc0NiwgNjc3MjMsIDI4NDAsIDEyODg0MiwgNzg4MjksIDk4MzkzOSwgNjY4ODcsIDMyNDUsIDkwNjgsIAorICAgIDY4MTk0LCA2NDcyNSwgMTIxMTYxLCAxMjgwNTEsIDEyOTkxLCAxMjQ5NzEsIDI2NTEsIDY4MDE2LCA5ODMyNjcsIDcyODczLCAKKyAgICAxMDA2MDEsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgMTk0ODU0LCA0MzMyMiwgOTI2NjIsIDAsIDAsIAorICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDc0ODk0LCAxMTE1MiwgCisgICAgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgCisgICAgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAxMjgzNDAsIAorICAgIDEwMDc0MSwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDEwMDc0NSwgNDMzNzIsIAorICAgIDY1OTQ1LCA3MjcxMCwgMTExMTMsIDExOTU5MCwgMCwgMTAwNzQ5LCA3MDQ5NSwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIAorICAgIDExNDY0LCAzMzY1LCA5OTcxLCA3MDY3MywgMTI3OTQyLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCisgICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIAorICAgIDExMzY5MCwgNzAwOTAsIDEwMzMyLCAyNDI0LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNDIxNDIsIAorICAgIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIDQyMzE1LCAxMDUxNiwgNzc5MCwgNTUyOCwgMTI4ODM4LCA0MjE0MCwgCisgICAgMTIwMjgxLCAwLCAxOTUwODgsIDQzNTQ1LCA5ODg3LCAxMjE0NzcsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgCisgICAgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDc0OTEwLCAxMjg2NjYsIDIxMSwgMjUwOSwgOTI5MDQsIDcwODIyLCAKKyAgICA2ODY3MiwgMzIyMCwgNDIyMzUsIDc4NDgwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDk4MzgzMywgNzA0OCwgCisgICAgNDU5MCwgMTI3MjU4LCA1ODUyLCA5ODM4MTksIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgCisgICAgMTIxMTQwLCA2OTIyNiwgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDEwMDU2NCwgMTIwMjg1LCAKKyAgICA3MDQ0NywgOTQxMTEsIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjA0MDYsIDI2MjUsIDEyODI0MiwgODAzNCwgCisgICAgNzQzMDksIDE5NDcxNSwgMzYzMSwgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMTI3MDMyLCAxMjA2MTMsIDk4MzU3OCwgCisgICAgNDMzODQsIDEyNjYwLCAxMjI4ODMsIDEyODI3MCwgMCwgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgCisgICAgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIAorICAgIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDcwNjc1LCAKKyAgICAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCAKKyAgICA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODIzNiwgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAKKyAgICAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDEwMDY2OSwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzMzLCA2NDc4NSwgCisgICAgNzM5NCwgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIDE5NDcwNywgMTIwMzQ0LCA0Mzk4OCwgNzA0MjMsIDg2MTAsIAorICAgIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCA2OTg5NCwgNDMxNzEsIDE0NTksIDEyODIyNCwgNjUyNDMsIAorICAgIDc4NjM4LCAxOTk1MywgMTI5MDc4LCAxNTA0LCA3MDA2NCwgNzI0MjEsIDEyOTEzLCA3MDcyMiwgNzUyOSwgMTIwNjA4LCAKKyAgICAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCAKKyAgICA2ODIsIDc2NTUsIDQxNTA1LCA5ODM3NTMsIDY0NzQzLCAxMDU5MywgMTcwMywgOTI0NjcsIDc3OTExLCA4MDMzLCA2OTk1MywgCisgICAgMCwgOTgxMCwgMTI3MjY5LCAxMjAwMTMsIDEyOTcwLCA5ODMyMDUsIDQyMzUxLCAxMDEwOSwgNzQ1MzUsIDc0MDY4LCAKKyAgICA3NDkyMSwgMCwgOTI2OTAsIDEyMjg4NiwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgMCwgNzM4ODcsIAorICAgIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCA0MTMxNywgCisgICAgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAxMDQ5OCwgCisgICAgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgNDE2NSwgCisgICAgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTI3MDUxLCA3MDQxNSwgMTI4MTM1LCAKKyAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAyMjMzLCAxMjc0ODMsIDEyNDk2NSwgNjgwLCAyMzAyLCAxMjgyMDAsIDExODEsIAorICAgIDcwNTYsIDMxNzQsIDY3MjQ4LCA5ODMxNzEsIDkyNjY4LCA2NTY2NSwgMTAwNTk0LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKKyAgICA3MDY3MiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAogICAgIDI2MTMsIDY1MzAyLCA0MDk4OSwgNjgyMzksIDY4MjMwLCA2ODIzNCwgNDI3NjAsIDAsIDQzODk2LCAwLCA0MDk4NywgNDY2NywgCi0gICAgMCwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDExMDIxLCA0NzQ5LCAKLSAgICA5MjY3NSwgOTE3ODgyLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDEyNzIxMCwgNjQ2NTMsIAotICAgIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgOTI5ODMsIDk4Mzg2NywgNzYwNCwgCi0gICAgOTgzMjkyLCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDU2MiwgMCwgOTgzNzIwLCA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIAotICAgIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCA4MzAwOSwgNzAwMjQsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgCi0gICAgMTI5MDQ3LCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgCi0gICAgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDc4Mjk5LCAKLSAgICAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCAKLSAgICA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIAotICAgIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCAKLSAgICA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCAKLSAgICA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIAotICAgIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIDI1MiwgMCwgNDEzMDIsIDExOTM1MCwgODM1MDQsIDExODgzOSwgCi0gICAgNjk3NjMsIDY4NzYyLCAxMTcyOSwgODcxOSwgOTA2MCwgMTI5MDkxLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAxMjk0MTAsIAotICAgIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIAotICAgIDExNzI4LCA0MzU3MiwgOTgzMTM5LCAwLCA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgMCwgNDM0ODksIDQyODIsIAotICAgIDgyOTgsIDAsIDAsIDcwMzI4LCAxOTQ5ODYsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIAotICAgIDcwNDQyLCA2NTY3MCwgOTgzOTYzLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDk4Mzg2OSwgNzAzMjYsIDAsIAotICAgIDcxNDYwLCAxMjA3NjQsIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIAotICAgIDEyMDIwNywgMjYwMiwgMTI4MzQxLCAxMjExMDMsIDEyNTA0MywgNDExMzUsIDgzNDk4LCAwLCAxMjEzMjUsIDY0NjMxLCAKLSAgICAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIAotICAgIDc1MDU0LCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKKyAgICAxMjEyMTIsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAyMjY5LCAKKyAgICA0NzQ5LCA5MjY3NSwgOTE3ODgyLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDEwMDU5NSwgMTU2NiwgODIxNywgCisgICAgMTI3MjEwLCA2NDY1MywgNzgzODYsIDc0NjE3LCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCAKKyAgICA5Mjk4MywgOTgzODY3LCA3NjA0LCAxMjgyNjYsIDQwMDksIDcwMjc3LCA3MTg0NCwgMTIwMTE1LCAxMjY2NDIsIDk0MDc0LCAKKyAgICA2NDg2MCwgMTAwNTUxLCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCA4MzAwOSwgNzAwMjQsIDE2NDYsIAorICAgIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgMTI5MDQ3LCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIAorICAgIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgCisgICAgMTE4ODQwLCA5ODM3MjgsIDkxNzU2MiwgNzgyOTksIDMzOTksIDk4NTEsIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIAorICAgIDEyNzA1MiwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgCisgICAgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAKKyAgICAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCAKKyAgICA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIAorICAgIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAKKyAgICAyNTIsIDk4MzE0MiwgNDEzMDIsIDEwMDM3MSwgODM1MDQsIDExODgzOSwgNjk3NjMsIDY4NzYyLCAxMTcyOSwgODcxOSwgCisgICAgOTA2MCwgMTI1MDc3LCAxMjAxMzksIDEwNzYxLCAwLCAwLCAxMjk0MTAsIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgCisgICAgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgOTgzMTM5LCAxMjk0MTIsIAorICAgIDc3NjQsIDY4NzQxLCAxMTA5NCwgMTIwODI1LCA5ODM3NTgsIDQzNDg5LCA0MjgyLCA4Mjk4LCAwLCAwLCA3MDMyOCwgCisgICAgMTEzNjkxLCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCA3MDQ0MiwgNjU2NzAsIAorICAgIDk4MzE4MCwgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAxMDExMDIsIDcwMzI2LCAwLCA3MTQ2MCwgMTIwNzY0LCAKKyAgICA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCA4MzQzNywgMjYwMiwgCisgICAgMTI4MzQxLCAxMDA3MTcsIDEyNTA0MywgNDExMzUsIDgzNDk4LCAxMjA4MTUsIDEyMTMyNSwgNjQ2MzEsIDE3MiwgNDk3MSwgCisgICAgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDc3OTI2LCA3NTk3LCAxMDUyOCwgNzUwNTQsIAorICAgIDEyMTQwNSwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCiAgICAgMTIxNDQxLCA5MjUyOCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCA4MzMzMCwgMTEzNzA3LCAxOTQ3MTIsIDEwOTAwLCAKICAgICA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDc0MDc1LCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIAotICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCAKLSAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCAwLCA1ODQ1LCAxMjEzMTAsIDAsIAotICAgIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA5ODM2OTMsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDk4MzIwMSwgCi0gICAgNjM0MCwgMTE4ODU1LCAxMjEwMjcsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIAotICAgIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDgzMTE2LCA5ODMwODYsIDg2NjYsIAotICAgIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgCi0gICAgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIAotICAgIDQyODU3LCA4MjYyLCA5MzAzNiwgMCwgNzQ0NzYsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgCi0gICAgMTI4MTM3LCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAKLSAgICA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAKLSAgICAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIAotICAgIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIAotICAgIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAKLSAgICAwLCAwLCA4MzE3OCwgMTIwNzM3LCAxMjA5NTMsIDE5NDc3MywgOTgzMzIyLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIAotICAgIDk4MzMyNywgNjU2OTUsIDEyMTIyMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAKLSAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgNzE0ODYsIDkyMjI1LCA5ODM5NTMsIDk4MzM0MCwgMCwgNDM4NDAsIDAsIDAsIAotICAgIDUyMzMsIDk4MzMzNywgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEyNjYzMywgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIAotICAgIDE2ODUsIDU5NSwgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgCi0gICAgNjU0MSwgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDEyNTAzMiwgNTM4LCA2NDYyMCwgNTYwMiwgCi0gICAgODQ2NywgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgCi0gICAgMTI3NDgxLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIAotICAgIDEyMDkxMywgNzA2NSwgNzQxNTUsIDQzNDYsIDExMzY5MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgCi0gICAgMTIxNDcxLCAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAKLSAgICAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIAotICAgIDM3NDUsIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEyNzkxMywgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgCi0gICAgMTc4MywgNzQxNiwgNTcyOCwgMCwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKLSAgICA3ODUyMSwgMTIxMTIxLCAwLCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCA0MjUzMiwgCi0gICAgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMCwgNzQ3NjcsIDY1NTksIAotICAgIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDEyODcxMSwgNDMzNzcsIAotICAgIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIDc3MzksIDc0NTQzLCAKLSAgICA5MTc3NjUsIDY3MzkzLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMTI4Mzk2LCA3MDA1OCwgNDExNDQsIDcxODk5LCA5MjQzOCwgCi0gICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDEyODM5NCwgMTk0Nzc2LCA4ODIwLCAzOTQ3LCAwLCA2NTI5OSwgCi0gICAgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMjUwMDIsIDE5NDkzMiwgMTEzNjkxLCA3Njg4LCA5MTc3ODYsIAotICAgIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEyMTQxMSwgOTgzMzg0LCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIAotICAgIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCA5ODM2ODAsIDY0MzU3LCAxMTc5NCwgNDIwODIsIDEyODEyNSwgMTczNywgCi0gICAgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCA2NTUzLCA3MDU1LCA2ODA0MSwgCi0gICAgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgMTE2MCwgNDIwODQsIDkzOTYzLCAKLSAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDk4Mzg2NSwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIAotICAgIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIDY4MzQxLCAxMzA3NiwgMzEzNSwgCi0gICAgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgCi0gICAgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCA2NTIzNiwgOTE3ODc4LCA2MTYzLCAKLSAgICA5ODM1NTgsIDExMzcyOCwgMTI3MzE0LCAxMjgxMzgsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAxMTk4NjYsIDMzMDYsIAotICAgIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAwLCAxMjc0NjYsIDEyMDg2LCA3NDAzLCAKLSAgICAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDExOTkwMywgMCwgMjU3MCwgCi0gICAgNzAyMSwgNzQ5MDIsIDE5NDc0MiwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDkyNzUwLCAwLCA5ODMyMTEsIDUwMDIsIAotICAgIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIDQzNTg1LCAxMTM3MjAsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCAKLSAgICA5ODMyNzQsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAxMjc5NTgsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjgzNTAsIAotICAgIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAwLCAxMjc4ODgsIAotICAgIDk4MzYxMiwgMTI3MjcsIDQzODk1LCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgCi0gICAgNzgzMSwgOTgzODI5LCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAKLSAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIAotICAgIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCA3Mzg3OSwgCi0gICAgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE3OSwgMzc1MSwgOTEyMCwgCi0gICAgOTgzNDg3LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCAKLSAgICA2Nzc1MiwgNzA4NTAsIDExOTA1NywgMjQ1LCAxMjEwNjYsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIAotICAgIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIDEyNzAxNSwgCi0gICAgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgOTgzMTM2LCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMTI4MTg0LCAwLCAwLCAKLSAgICA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAKLSAgICA3MTEyMywgNjQ2NDAsIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIAotICAgIDc0NjIyLCA0MzQ5MiwgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAwLCAxMjcwMDUsIDQzNDAwLCAyNTc2LCAKLSAgICA2NjY5NiwgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgCi0gICAgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxOTUwMjUsIAotICAgIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKLSAgICAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDAsIDkxNzkxNSwgMTI3OTYxLCAKLSAgICAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDAsIDEyMTExNiwgMTMwOTAsIDY2NjQzLCAwLCAKLSAgICAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCA2Njg5OCwgNjQ3NjEsIDAsIAotICAgIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTE5ODk4LCAxMTkzMTcsIDE5NDc4MiwgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCAKLSAgICA5OTE1LCA5ODMwODMsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCAKLSAgICA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAxMjczODMsIDEyNzE3MSwgMCwgMTIwNzQ1LCAKLSAgICA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAxMjkxNTQsIDc0NzkyLCAyNjExLCAxMTkxODYsIAotICAgIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAKLSAgICAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjgxNDksIDM3NDcsIDEwNTIyLCAwLCAxOTQ4NzYsIDE2OTEsIAotICAgIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTIxMjk5LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAKLSAgICA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIAotICAgIDEyMTAzMiwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIAotICAgIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgCi0gICAgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNywgMCwgMCwgCi0gICAgMTMxMjIsIDAsIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIAotICAgIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAwLCAxMDAwMiwgMTIxMzY0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDkxNzkxOSwgNjgzLCAKLSAgICAzOTYsIDQxNTgwLCA2ODE0NiwgOTgzMDY3LCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCAKLSAgICA3ODE1NCwgOTgzMzk3LCA0NzQzLCA2OTk4NywgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIAotICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIxNDI0LCA2ODI4OCwgNjYwNDAsIAorICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDEyODcxNywgODgzMSwgMTI3MzQ5LCAKKyAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCA5ODM5NzAsIDU4NDUsIAorICAgIDEyMTMxMCwgMTI3OTM3LCAxMjExODUsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgNzQ4NTgsIDQzMjgzLCA1NTUxLCAwLCAKKyAgICAxMjA3MzUsIDEyOTQyMywgNjM0MCwgMTE4ODU1LCAxMDA2MDIsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgCisgICAgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTAwODUyLCA3Mzc3NCwgMTA5MTMsIAorICAgIDgzMTE2LCA5ODMwODYsIDg2NjYsIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgCisgICAgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIAorICAgIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5MzAzNiwgOTgzNjc2LCA3NDQ3NiwgMCwgNDIzNDcsIAorICAgIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgMTI4NzY4LCAxMjgxMzcsIDQzNzQ0LCAxMDA2MTAsIDAsIDczODQ2LCAyOTM0LCAKKyAgICAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgOTgzMTEwLCA3NDQ2MSwgMzIxOCwgMTAxMDAyLCA3NDI5MCwgCisgICAgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAxMTIxMiwgMTIwNDY4LCAKKyAgICAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCA3ODcyNywgNjU2NjcsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIAorICAgIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMTI5MDQzLCAKKyAgICAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgOTgzODUzLCA5ODM4OTMsIDgzMTc4LCAxMDA3MjgsIDEyMDk1MywgCisgICAgMTk0NzczLCAxOTQ2MDEsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgMTk0ODc5LCA2NTY5NSwgMTIxMjIwLCAzNywgCisgICAgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTAwNjIxLCAKKyAgICA3MTQ4NiwgOTIyMjUsIDEyODQ5NCwgOTgzMzQwLCAxMDA5MDUsIDQzODQwLCAwLCAxMDEwOTYsIDUyMzMsIDEwMDYyNCwgCisgICAgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEwMDYyNiwgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIDE2ODUsIDU5NSwgCisgICAgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgOTI5NDgsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIAorICAgIDQzODM3LCA3MTQ2NSwgMTIxMDMwLCAzMjQzLCA5MDE0LCA1NjA2LCAxMTk1ODUsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIAorICAgIDc0MzkxLCA2NTQ3LCA3MTQ2NiwgODIwMywgNjY0MjAsIDY4MjQxLCA4NDU4LCA2NTIxMSwgODQ5NSwgOTIzMTEsIDEyNzQ4MSwgCisgICAgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAxMjA5MTMsIAorICAgIDcwNjUsIDc0MTU1LCA0MzQ2LCAxMDA1NzAsIDczNzk4LCA1MDQsIDEyNTExNSwgOTI0MTQsIDg5ODIsIDAsIDEyMTQ3MSwgCisgICAgMTE5MTcwLCA3ODIsIDEyOTAyOCwgMTA4ODMsIDEyODQ0NiwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyMTE4OCwgMTU0OCwgCisgICAgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCA5ODMzNzIsIDExNzg3LCAzNzQ1LCAKKyAgICA5MTc4NjgsIDExOTg4NSwgNDI4ODgsIDY1NzEyLCAxMDA2MDYsIDM4NjksIDExOTM3LCA1NzI1LCAxMDA2MDgsIDE3ODMsIAorICAgIDc0MTYsIDU3MjgsIDEyODU2OSwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKKyAgICA3ODUyMSwgMTIxMTIxLCAxMjg0ODgsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIAorICAgIDQyNTMyLCA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAxOTQ4MTksIAorICAgIDcyODU0LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCA2Njc2MywgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIAorICAgIDEyODcxMSwgNDMzNzcsIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIAorICAgIDc3MzksIDc0NTQzLCA5MTc3NjUsIDY3MzkzLCAxMDA1ODgsIDYxMzIsIDAsIDYzNzY1LCAxMDA1OTAsIDcwMDU4LCA0MTE0NCwgCisgICAgNzE4OTksIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgNzA2ODIsIDEwMDU2MSwgODgyMCwgCisgICAgMzk0NywgMTIyODk4LCA2NTI5OSwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMDA5MzEsIDE5NDkzMiwgCisgICAgNzgzOTMsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTAwOTM0LCA5ODMzODQsIDE1NDMsIAorICAgIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDE5NDU4OSwgNjQzNTcsIDExNzk0LCAKKyAgICA0MjA4MiwgNzA3NDQsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCA4MzI2NCwgOTMzNSwgMTI4NTAsIDExOTE3MywgCisgICAgMjI3MiwgNzA1NSwgNjgwNDEsIDgyNzcsIDAsIDY3NzUxLCA1NDc1LCA3NDc5NSwgNjc4MCwgNjUwNjcsIDAsIDEzMjcsIAorICAgIDExNjAsIDQyMDg0LCA5Mzk2MywgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMTI5MDcwLCAxMDA2MTcsIDY4MTc2LCAKKyAgICA1ODYzLCAzMTM3LCAwLCA0MTQ3LCA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCA3MDE5NywgNjg0NjEsIDY1MjM0LCAKKyAgICA2ODM0MSwgMTMwNzYsIDMxMzUsIDk4MzI4OSwgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgCisgICAgMTE5NTgwLCAxMDE4MywgNzQ2MzUsIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMTIxMjU3LCA4MzI2OCwgCisgICAgNjUyMzYsIDEyMDI1NiwgNjE2MywgMTI5Mjk3LCAxMTM3MjgsIDEyNzMxNCwgNzM4MjIsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAKKyAgICAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAxMDA3MTYsIAorICAgIDEyNzQ2NiwgMTIwODYsIDc0MDMsIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgOTgzMzA3LCAKKyAgICA4ODgyLCAxMTk5MDMsIDc4NTE4LCAyNTcwLCA3MDIxLCA3NDkwMiwgMTI4ODgwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgCisgICAgNjk3NCwgOTI3NTAsIDEyNzM5NiwgMTAwOTIzLCA1MDAyLCA5ODM1NjMsIDQxMjg2LCA2OTk0NiwgNzQ0NjUsIDcxMDc0LCAKKyAgICA0MzU4NSwgMTAwOTI3LCA2NTUxLCA5ODMzNzUsIDEyODIyOSwgOTgzMDQ3LCA0MTI4OSwgMTI1MTMwLCA3MTA4MCwgCisgICAgMTAwNTIxLCA4OTc3LCA2MDIsIDEyMDgxNCwgMTAwNjMwLCAxMjgzNTAsIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAKKyAgICAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAxMDEwMjIsIDEyNzg4OCwgMTk0OTk0LCAxMjcyNywgNDM4OTUsIDAsIAorICAgIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMTI3NTU2LCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDY2NzUxLCAKKyAgICAxOTQ1NzEsIDEyMjg4NSwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDk4Mzg5NSwgCisgICAgMjU5NiwgNDM1ODQsIDEyMDk4MywgMTMxMTMsIDk4MzczMSwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA0MTM2LCAKKyAgICA2ODY3MywgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDE5NDkxMiwgMTI3ODIwLCAwLCA5ODU0LCAKKyAgICAxMDEwODgsIDY0Njk2LCA3Mzg3OSwgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDkxNzc5NywgMCwgMCwgNjUyOSwgCisgICAgNzA2MywgMTE4OTE3LCAzNzUxLCA5MTIwLCAxOTQ2MjgsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCAKKyAgICA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIDY3NzUyLCA3MDg1MCwgMTAwODMyLCAyNDUsIDEwMDgzMSwgMTE0NTYsIAorICAgIDQxMjMzLCA3MDcwLCA3MTI2NCwgOTQwNDYsIDYxMzYsIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgCisgICAgOTgwNCwgMTAwNjQyLCA0MzIsIDM1OTUsIDEwMDc4NCwgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgMTAwNjQ2LCAxMDA2NDEsIAorICAgIDEwMDY0OSwgOTgzOTQ5LCAxMDA2NDgsIDEyODE4NCwgMTAwNzg2LCAxOTQ1ODcsIDc3ODk0LCA4Nzk3LCA5ODM5NTYsIAorICAgIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAxMDA4NDUsIDQyMjg2LCA3MTEyMywgNjQ2NDAsIAorICAgIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDc0NjIyLCA0MzQ5MiwgCisgICAgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAxMjA3NjgsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIDY2Njk2LCAKKyAgICA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCA0MzIxNSwgCisgICAgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDEyODQ5NywgNDEzNDEsIAorICAgIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMTk1MDkyLCA1MjkzLCA3MDAyMCwgMTI3ODcwLCAzNzMzLCAxMTM0NiwgMCwgCisgICAgMTIwNTQsIDEwMDgyNCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDEwMDgyMSwgMTAwODI4LCAKKyAgICAxMjc5NjEsIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgOTgzOTA1LCAxMjExMTYsIAorICAgIDEzMDkwLCA2NjY0MywgMTI4ODIwLCAxMjcwLCAxMTMyLCA0MjM2MCwgMTk0OTY4LCA2Njc1MiwgNjY2NTUsIDQyNTY5LCAKKyAgICAxMjA1NzEsIDY2ODk4LCA2NDc2MSwgMTAwNzc2LCA0MTAyMSwgODUxMCwgNDI0MzIsIDEwMDc3OCwgMTE5MzE3LCAxOTQ3ODIsIAorICAgIDE5NDY0MSwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgOTkxNSwgNjk3OTgsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIAorICAgIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAKKyAgICAxMjczODMsIDEyNzE3MSwgMTIxMjA3LCAxMDA3NjUsIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIAorICAgIDcwNjYyLCA3NDc5MiwgMjYxMSwgMTAwNzY4LCA2Njg4MSwgMTI3MjQxLCA2NTA2MywgNDM2NjQsIDkyMzE5LCA2NjYyNywgCisgICAgOTI5MTIsIDQ0ODQsIDg1MDksIDExODk3NiwgMTEwNjYsIDY1MjMzLCAxMjcxNDYsIDQxMjI0LCA0MTAxNywgMTIwNTE0LCAKKyAgICAzNzQ3LCAxMDUyMiwgOTE3ODExLCAxMTk5NzAsIDE2OTEsIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCAKKyAgICA2NTAxMCwgNzQ2MDIsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgCisgICAgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgMTIxMDMyLCA5ODMxMzIsIDEyNzE5MywgNjU4MTYsIAorICAgIDY4MTExLCAxMTg5NTAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAzNTYyLCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCAKKyAgICA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAKKyAgICAwLCA5ODMxNTAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNiwgOTgzNDAyLCAwLCAxMzEyMiwgMTI3NTQ2LCAxOTEsIDcwMDYwLCAKKyAgICA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCA0MTU3OCwgOTgzMTA0LCA0MTU3NywgCisgICAgOTgzMzcxLCAxMDAwMiwgMTAwNzU0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDEwMDc1NiwgNjgzLCAzOTYsIDQxNTgwLCAKKyAgICA2ODE0NiwgMTI3ODE1LCAxMjkwMSwgNDMwNTgsIDEwMDc2MCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIDc4MTU0LCAKKyAgICAxMjcwODIsIDQ3NDMsIDY5OTg3LCAxMDA3NjEsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTAwNzUxLCAKKyAgICAxMjg2NjUsIDM3MzksIDYyNjMsIDcxMzQ5LCAxMjg4MTEsIDM5NjQsIDY1OTIsIDEyMDcwMSwgNjUxMDgsIDY2MDQwLCAKICAgICA4Mjk0NiwgNDI1NjgsIDY5ODA2LCAxMjgxMTMsIDE3NzgsIDM5NTYsIDEyODQ0MywgNDIwNzAsIDY1NjMsIDQzMDc1LCAKLSAgICA5MDE4LCA5NDAwNiwgOTgzMzk4LCAxMjA2NywgNDEzMTIsIDkyNzYzLCA1NTQ3LCA4OTE2LCAxMjA4NjksIDEyODk1MCwgCisgICAgOTAxOCwgOTQwMDYsIDEyMTQyNCwgMTIwNjcsIDQxMzEyLCA5Mjc2MSwgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAogICAgIDgxNzUsIDk0MDM0LCAyODQsIDgxMDgsIDkzNCwgMTI4MDM5LCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAotICAgIDExODgyMiwgMTc1MCwgMTI4Njg2LCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODg4LCA5MjI5OCwgMCwgNTg4OSwgMTI4Nzk1LCAKLSAgICA3MTgwLCAwLCA2NzEyNywgMCwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAKLSAgICAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDAsIDkxNzYzMCwgMzg1NSwgMTk0ODEwLCAxMTc2NywgCi0gICAgMTI3OTk4LCAwLCA3NDI5NSwgMTk0NjUxLCAwLCA5MjQxNiwgMzk3NSwgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIAotICAgIDM3OTgsIDI3MDMsIDE5NDYwOCwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIAotICAgIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgMTI3MTg5LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgCi0gICAgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAKLSAgICAzMjI0LCAxMTM3MzQsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDAsIDExMzkzLCAKLSAgICAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCA3MjQxNiwgMTIwODExLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIAotICAgIDQyODMsIDY4ODQyLCAxMjA4MjQsIDY4MzYxLCA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA2LCAxMjgyNDEsIDAsIDcyMzk0LCAKLSAgICA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIAotICAgIDc0NDc1LCA5ODM0NDQsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIAotICAgIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgCi0gICAgNDEzNTAsIDkxMjksIDk4MzQ0OCwgMCwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAKLSAgICAwLCAzNDAsIDcxMTA1LCA5Mzk3MiwgNjczNjAsIDAsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTI3NDg3LCAKLSAgICAxMjgzOTMsIDAsIDkyNTA5LCAxMjg5NjIsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgCi0gICAgMCwgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDAsIDEwMDQzLCAxMjEyMTUsIDExODYsIAorICAgIDExODgyMiwgMTc1MCwgMTI4Njg2LCA0Mzk0LCA2ODM2OCwgMTgwNywgNzg1NDUsIDkyMjk4LCAxMDEwODIsIDU4ODksIAorICAgIDEyODc5NSwgNzE4MCwgMTAxMDgzLCA2NzEyNywgMTAxMDkxLCA2NzEyNiwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCAKKyAgICA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgOTgzNDY3LCA5MTc2MzAsIAorICAgIDM4NTUsIDE5NDgxMCwgMTE3NjcsIDEyNzk5OCwgOTgzNTg5LCA3NDI5NSwgMTk0NTc3LCAxMDA3OTcsIDkyNDE2LCAzOTc1LCAKKyAgICA2NzEyNSwgNzQwODcsIDc0OTg5LCAxMjY3MiwgMzc5OCwgMjcwMywgMTAwNzkzLCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAKKyAgICAxOTQ5NjQsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIAorICAgIDEwMDk0NywgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgCisgICAgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMTAwNzU1LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCAKKyAgICA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCA5ODMwNDMsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCAKKyAgICA3MjQxNiwgMTIwODExLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIDQyODMsIDY4ODQyLCA3Mjc4NywgNjgzNjEsIAorICAgIDc4MzE4LCAyNjU0LCA3ODkzLCAxMjkxNTEsIDEyODI0MSwgMTAwODAyLCA3MjM5NCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgCisgICAgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCA3NDQ3NSwgOTgzMTQzLCAwLCAxNzMzLCAKKyAgICA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAxMjg2NDQsIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAKKyAgICAxMDA3OTAsIDcxODUsIDc5NjUsIDExOTE0NCwgMTI4NDQ3LCA5MjM0NywgMTk1MDY2LCA0MTM1MCwgOTEyOSwgOTgzNDQ4LCAKKyAgICA5ODM2MTksIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgMCwgMzQwLCA3MTEwNSwgCisgICAgOTM5NzIsIDY3MzYwLCAxOTQ5NDIsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTIwODA0LCAxMjgzOTMsIDAsIAorICAgIDkyNTA5LCAxMjg5NjIsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgMTAwNjMyLCAKKyAgICAxMTg3OTUsIDgyOTU4LCA5NDEwMSwgMTI3NDg0LCA5MTc2MTksIDExOTE0OSwgNzM5MjYsIDEwMDQzLCAxMjEyMTUsIDExODYsIAogICAgIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyNTEyMywgMzY3NSwgNTIwNywgNjUwNjIsIDUyMTMsIDc0NjE2LCAyNjE3LCAKLSAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDAsIDU1OTYsIDU1NDUsIDcyODgsIAotICAgIDI1ODYsIDY0ODg3LCAxMTk4MjYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDkxNzYxNCwgMTIxMDM4LCA2NDI5MywgNjgwOTgsIAotICAgIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTg4LCA5MjI4NSwgCi0gICAgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAxOTUwNTAsIAotICAgIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEyNDk3OCwgNzg2NCwgNDI1NCwgNjUwOTUsIDk4MzQ5OCwgCi0gICAgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAKLSAgICAxMjkwNTQsIDEyNzEwMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgNzUwNDAsIDk4MzQ4NCwgCi0gICAgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCA5ODM0OTAsIDc2MzEsIAotICAgIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIAotICAgIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCA0MzkwLCA0NTQsIAotICAgIDQxMzk3LCAwLCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAKLSAgICAxMTkxODQsIDM3NDYsIDExMDE2LCA2NTc1MiwgOTI3NTcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAxMTg4ODksIAotICAgIDEyNzc5MSwgMTI3OTk1LCA3ODI5NiwgMCwgODI0OSwgMTI4MTcyLCAxMTEwOSwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCAKLSAgICA1MTMsIDEyNzExOCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIDE5NDU5NywgNzExMTEsIDc4MzgzLCAKLSAgICAxOTQ3OTUsIDEyNzQ3NCwgOTI1MTUsIDY4NDc1LCA5Mzk3MywgMTk0NTg0LCA2Mzc5OSwgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIAotICAgIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgCi0gICAgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAKLSAgICAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIAotICAgIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgOTIyNTUsIDUxMTYsIDAsIDQzMTgxLCAxMzA5NSwgCi0gICAgNzc5MjUsIDQzOTI2LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgNzAxNzYsIDc0OTMxLCAwLCAxMTM3NDMsIDc4Mzc5LCAKLSAgICA0MzkzNCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDcxMDU1LCAxMjA2MjEsIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIAotICAgIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIDEzMDQsIDAsIDgzNTI2LCA1MjI2LCAxMjYwMiwgOTQwNDQsIDU4ODAsIDkzMjksIAotICAgIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgNjkyMjksIDk2NzQsIDU2OTUsIAotICAgIDQxNzExLCA2NDYyNywgMTk5MDksIDcxMDc3LCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgNjgxMzgsIDk4MzQ0MywgCi0gICAgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNjgwMjgsIDgzMDkzLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCAKLSAgICA4MzA5NCwgOTgzNDQ3LCA2ODgyNywgNTI5NiwgOTgzNDQ2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCA3NDg1OCwgCi0gICAgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgNjUxMiwgMCwgNzg1NiwgODY5MCwgOTgzNjg2LCA3MDg3MCwgMTIxMjIsIAotICAgIDExOTYwMiwgNDM5NzYsIDE5NDkzNywgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgNjg4MDksIDUxMzgsIDk4MzYzNywgCi0gICAgNzE5MjIsIDExODg2OSwgMCwgNDU0MCwgNDExODEsIDkxNzkyMCwgNjIwMCwgMCwgNTEzNCwgNjk5ODAsIDMyMiwgNDY0MywgCi0gICAgNTEzMiwgMTIxMTg0LCA2Mzg5LCAxMjA5OTgsIDUxNDMsIDgzMjA1LCA4NzkwLCAxMjA5MTEsIDEyMDEyMSwgMTI4Njk1LCAKLSAgICA3MTE2OCwgODg2OSwgNjk5MTYsIDkzMDY5LCA0MjA2MCwgNzEzMjYsIDk2NDgsIDgzMTA5LCA3MTE3MCwgMTAyNzAsIAotICAgIDEwMjg2LCAxMDMxOCwgMTAzODIsIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAxMjg1MzQsIDc0MTcwLCAwLCAzMjM0LCA0MzgzNSwgCi0gICAgOTE3ODE4LCA3MDExMSwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDY4MjMxLCA3NDQ4OSwgOTY5NSwgCi0gICAgNzI0MzksIDUyMDEsIDc1MDYxLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDAsIAorICAgIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIDEyMTIwOSwgMTk0NzcwLCA1NTk2LCA1NTQ1LCAKKyAgICA3Mjg4LCAyNTg2LCA2NDg4NywgMTAwODk2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCAxMDA4OTgsIDEyMTAzOCwgNjQyOTMsIAorICAgIDY4MDk4LCAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk1MCwgCisgICAgOTIyODUsIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgCisgICAgMTAwODU0LCA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMDA4NTksIDc4NjQsIDQyNTQsIDY1MDk1LCAKKyAgICAxMjAwMTcsIDU2MDAsIDM5MDMsIDEwMDg5MiwgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIAorICAgIDQyNTgyLCA0MzYwMCwgMTI5MDU0LCAxMDA5MTMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIAorICAgIDc1MDQwLCA5MTc5NzIsIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgCisgICAgOTIxNjUsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMTIwMzM5LCA1NDkxLCAxMTg3OTcsIDg5MzcsIDQzMDQ0LCAyNjA0LCAKKyAgICA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMTI3MTIxLCA3MTIyLCA5ODMwOTAsIAorICAgIDQzOTAsIDQ1NCwgNDEzOTcsIDk4MzA1NSwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAKKyAgICAxMjUwNjIsIDY1OTAxLCAyMzk0LCAyNTc1LCAxMTkxODQsIDM3NDYsIDExMDE2LCA2NTc1MiwgOTI3NTcsIDAsIDQzNDIzLCAKKyAgICAxMjg2ODMsIDExOTg5LCAxMTg4ODksIDEyNzc5MSwgMTI3OTk1LCA3ODI5NiwgNjgyMjQsIDgyNDksIDIyMzIsIDExMTA5LCAKKyAgICA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIDUxMywgMTAwNzE0LCA2NTg2LCA4NjU2LCAxMjkzMDEsIDY5NzkyLCA2NTAwOCwgCisgICAgMTk0NTk3LCA3MTExMSwgNzgzODMsIDEyNzI1MiwgMTI3NDc0LCA2Njc1NSwgNjg0NzUsIDkzOTczLCA3Mjg1OSwgNjM3OTksIAorICAgIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCAKKyAgICA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgCisgICAgMTE5MjIyLCAxMjAzMDUsIDE5NDk4NCwgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIAorICAgIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIAorICAgIDkyMjU1LCA1MTE2LCAxMjgwMTMsIDQzMTgxLCAxMzA5NSwgNzc5MjUsIDQzOTI2LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgCisgICAgNzAxNzYsIDc0OTMxLCAwLCAxMTM3NDMsIDc4Mzc5LCA0MzkzNCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDE5NDg3MCwgNzEwNTUsIAorICAgIDEyMDYyMSwgMCwgMTkyMCwgMTI5MzM5LCAxMDE3MywgODI3LCAxMjUyMzYsIDAsIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIAorICAgIDEzMDQsIDAsIDgzNTI2LCA1MjI2LCAxMjYwMiwgOTQwNDQsIDU4ODAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCAKKyAgICA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgNjkyMjksIDk2NzQsIDU2OTUsIDQxNzExLCA2NDYyNywgMTk5MDksIDcxMDc3LCAKKyAgICA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgNjgxMzgsIDk4MzQ0MywgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNjgwMjgsIAorICAgIDgzMDkzLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCA4MzA5NCwgOTgzNDQ3LCA2ODgyNywgNTI5NiwgCisgICAgOTgzNDQ2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCA3Mjg0MiwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgCisgICAgNjUxMiwgMCwgNzg1NiwgODY5MCwgOTgzNjg2LCA3MDg3MCwgMTIxMjIsIDExOTYwMiwgNDM5NzYsIDEyNTE5NCwgMTc4NSwgCisgICAgNjk5MjUsIDY4NjIyLCA2NTE1MywgNjg4MDksIDUxMzgsIDEyOTQyMCwgNzE5MjIsIDExODg2OSwgMTAwODgzLCA0NTQwLCAKKyAgICA0MTE4MSwgOTE3OTIwLCA2MjAwLCA4Mjk0OSwgNTEzNCwgNjk5ODAsIDMyMiwgNDY0MywgNTEzMiwgMTIxMTg0LCA2Mzg5LCAKKyAgICAxMjA5OTgsIDUxNDMsIDgzMjA1LCA4NzkwLCAxMjA5MTEsIDEyMDEyMSwgMTI4Njk1LCA3MTE2OCwgODg2OSwgNjk5MTYsIAorICAgIDkzMDY5LCA0MjA2MCwgNzEzMjYsIDk2NDgsIDgzMTA5LCA3MTE3MCwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIAorICAgIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAxMjUyMzEsIDc0MTcwLCAwLCAzMjM0LCA0MzgzNSwgMTAwODg2LCA3MDExMSwgCisgICAgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDY4MjMxLCA3NDQ4OSwgOTY5NSwgNzI0MzksIDUyMDEsIAorICAgIDc1MDYxLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDEyNzg2OSwgMTk0OTk5LCA2NTI2OCwgNzY2MSwgMTIxMzA4LCAKICAgICAxMjA5MDksIDExMDI3LCAxMjg1OTYsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIAotICAgIDY3MTE1LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCi0gICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgCisgICAgNjY3NjYsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKKyAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTAwOTk2LCA4NDg1LCA0NjcxLCA1NDE4LCAKICAgICAxMjczNTAsIDMzNTEsIDEyMDg5MiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCiAgICAgMTI3MzQ0LCA5NTU0LCA2ODA1MSwgOTQwNDgsIDY2ODk2LCA2NjUzLCA4MzA0NCwgODMxMDIsIDY0NTEwLCA2MjEzLCAKLSAgICAxMjg4NSwgMCwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDczNzQxLCAxMjYwMywgNzEzMSwgMTExMDgsIDQ1NjYsIAotICAgIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCA5Mjk0NiwgCi0gICAgMTIxNDM1LCA5ODM4OTUsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIDU0ODIsIDUxOTgsIDQzNDksIDEwMzkwLCAKLSAgICA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIDQzMzA3LCA3MDI5NywgMTE4OTczLCAKLSAgICA3MDQ2NywgMTIxMzQsIDEyMTE2NywgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKLSAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAxMjUwNzUsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyNzMwOSwgCi0gICAgNTczOCwgMTIwMDg5LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDgzMzc4LCA2ODExMiwgNzg3MiwgODU4MSwgCi0gICAgMCwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAyNjI0LCA1MzY0LCAKLSAgICA5ODM2MDgsIDExNDMxLCAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCA0MjI3MSwgNzgyODksIAotICAgIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgNzgzODQsIDExODMyLCAKLSAgICA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIAotICAgIDc0NTgxLCA3ODA4NywgMCwgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIAotICAgIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCA2OTg2MiwgNjg1MDcsIDExOTIxLCAKLSAgICAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIDQxMzYxLCA5MTc5MDMsIAotICAgIDQxMzY2LCAwLCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5NjE4LCAKLSAgICA2NzcsIDExOTkxNiwgOTE3ODc2LCA3MTQ4MiwgMTI3MTY5LCA2ODc0NywgMCwgNjg3MzgsIDMzNDksIDc0MTI1LCA3MDIyLCAKLSAgICA4OTI3LCA0NzM5LCA5MjU5OSwgNTgwMiwgMTk0ODc0LCA4NjE1LCAwLCAxMjgwNTgsIDQ5MSwgNzQ0MDEsIDEwMTkwLCAKLSAgICA2ODc1NSwgNjU4MzcsIDY4ODAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKLSAgICAxMDg1MiwgMCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIAotICAgIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCA0MTg3OCwgCi0gICAgNzQ4NDksIDc0OTQ3LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCAKLSAgICA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAwLCAxMTM3MzAsIDExMjgsIDY1OTIwLCA5MTc4NzksIAotICAgIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIAotICAgIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIDQxMzg1LCA5ODM5MzgsIDQxMzg5LCAKLSAgICAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIAotICAgIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIDEwNjI3LCA0MTEzMCwgCi0gICAgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMjg5MTMsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAotICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgNjY5MDIsIDU3NCwgCi0gICAgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCA1NDQyLCA0MTkwLCAKLSAgICA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCA3NDc1OSwgMjIyOCwgCi0gICAgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAotICAgIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDc0MTAyLCA5ODM2MjUsIDIwNSwgCi0gICAgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIAotICAgIDc0OTY2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgNTUwNywgMTIwNDQsIAotICAgIDkyNjM2LCAwLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgCi0gICAgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDEyOTA1MiwgMjY3NSwgNTU5NSwgNzg0MTEsIAotICAgIDQzNzYyLCA0MzY3LCAxMjc5MTIsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgNzQxNTAsIDcyOTEsIDU1OTAsIAotICAgIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgCi0gICAgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgCi0gICAgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAKLSAgICAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDczOTcyLCAxNDQyLCAxMjkwODAsIDU4OTQsIDcwMDY5LCAKLSAgICAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIDMzMzQsIDEyODcwNCwgOTI3MDksIAotICAgIDc3ODgxLCA2NjAyMiwgMCwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgMCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCAKLSAgICA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIAotICAgIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgCi0gICAgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCAKLSAgICA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCA3Nzg3OSwgNDk3MywgODc4NCwgCi0gICAgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgNzEyMjUsIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCAKLSAgICA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIAotICAgIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3MDM2NCwgNzEyMSwgNzQxNjYsIDEyNDk3MywgMTIwMzU1LCA5MjUzNywgMTk0ODQ2LCAKLSAgICAxMTk4NzcsIDE5NTAzNCwgNzAzNTcsIDExOTkyMiwgMCwgNjcxMTksIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgCi0gICAgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDk4Mzk2NSwgCi0gICAgOTgzNzU4LCAxMTYwMywgOTgzOTU0LCA3NTA3NCwgNjU4OSwgMTI4NTY0LCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgOTgzNzAwLCAKLSAgICAwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIAotICAgIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIAotICAgIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxOTQ2NzcsIDcxNDYxLCA2NzA5MCwgCi0gICAgNjkyNSwgMCwgMCwgOTI4OTIsIDcxODU2LCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgCi0gICAgMTExMzgsIDAsIDY3NTQsIDYzMTIsIDc3OTU2LCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgCi0gICAgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDEyOTE0NiwgOTgzNjA1LCAKLSAgICA5NTMyLCA2NjM1NSwgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTk1MDMxLCAwLCAKLSAgICAxOTQ4NDcsIDE5NTA1NywgMTE0NDUsIDY4Mjk0LCAyMTEyLCAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgCi0gICAgOTUwNywgMTAyMTAsIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgCi0gICAgMCwgMTIwMjc2LCAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCAKLSAgICA3ODk0LCA0MzkxLCA2ODEzOSwgMTIxMDY0LCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgCi0gICAgOTI0MzMsIDM1NTgsIDEyOTE5MCwgMzkxMywgNzA0MjksIDEyMTM3NiwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIAotICAgIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCA5MTc1ODcsIDgyMjEsIDc4MzA3LCA0MTg2NCwgMCwgMCwgCi0gICAgNjcwNzUsIDcxMjE5LCAxNjcsIDk4MzkwNiwgNzgzMDEsIDk4MzY1MywgNzQyMTEsIDQxODk3LCA2NzA3MiwgMCwgOTE3NTgzLCAKLSAgICAxMjcxNDAsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMTI0NSwgNzgxMDcsIDY0MzU0LCAwLCA4Nzc3LCAxMjc5NDAsIAotICAgIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAxMjExNCwgMCwgCi0gICAgMTI4NTk3LCA2NDkzNiwgMTk0Njk1LCAxMTkyNjcsIDEyMDYyOSwgMTA1NjEsIDEyODk0MCwgODM2NSwgMTIwNTM5LCAKLSAgICA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgNzQxNTksIDAsIAotICAgIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCAwLCA3MDgwMywgNjMyNywgNjcyNCwgCi0gICAgMTI0OTUzLCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgOTYwMCwgCi0gICAgMTEwMjIsIDAsIDAsIDAsIDk4MzU5OSwgMCwgNzM5NTQsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAKLSAgICAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIAotICAgIDkyODkxLCAxOTQ5NDUsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgOTMwNDQsIAotICAgIDEyOTQxMSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCA4MzE4MiwgNDgxOCwgCi0gICAgMTI5MDU4LCA0MTQwMywgMTE5OTc3LCA3MjQyMiwgMTI4NDU4LCA0MTQwNiwgNDMyNzMsIDc0MTYwLCA2OTgwNSwgNzM5MzksIAotICAgIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAKLSAgICAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIDcwMDcwLCAzMzc1LCAxMjg0NDgsIDU5MDAsIAotICAgIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgOTgzNDgxLCAwLCA2NzA3OCwgMTI4NDUxLCAyMjgyLCAxMjE0MjIsIDEyNzgxMCwgCi0gICAgMTE0MDEsIDY3MDc5LCAwLCA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAKLSAgICA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgMTI4NzQ0LCA0MzE2MSwgNzAxNDQsIAotICAgIDkyMzYwLCAwLCA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMTk1MDgzLCAKLSAgICA3MTMzMCwgOTc3LCA0NDU4LCA0MzgyNywgOTI5NzEsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxMjEyMjgsIDEzOTUsIAotICAgIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgCi0gICAgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCA5ODM5MTcsIDY4NDQ0LCAwLCAKLSAgICA5MjQzNywgMTI0OTI4LCA5MjU0OSwgMTAyMDQsIDkyNjU2LCA4MzA3OCwgMTE5MjcxLCAxMjg0MzEsIDEzOTksIDEyMTQ2MywgCi0gICAgNjUyMTcsIDEyMTQ2NSwgODg1MiwgMTIwODA4LCAyNDEsIDEyMTQ2OSwgNDkwNywgMTI4NDI3LCA5ODM2MzksIDc5MzIsIAotICAgIDk3MjcsIDEyODQ2MywgNzQyNTUsIDg3NDgsIDAsIDEyODQyOCwgOTgzNjMxLCAwLCA0Mjc4MCwgNTUyNjMsIDExMzY3NywgCi0gICAgOTgzNTYwLCA0MjE3LCA5MzAzNCwgODY1MCwgMTI3OTkxLCAxMjA2NzMsIDEyODIxNSwgNjk5MDAsIDExODg3MiwgNDMwOTksIAotICAgIDM5NjUsIDExOTExOSwgNjcxOSwgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgCi0gICAgNjYyODksIDEyMDkwMiwgNzM4MTUsIDQ0MjAsIDk4MzEyMCwgNjQxMCwgNzc2MCwgMCwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAKLSAgICAxMjEyNDYsIDcyOTQsIDEyODIxOCwgNDM4NjksIDEyMDg1OSwgOTA2NiwgMTIxMzIxLCAxMTk5MywgNDMxODgsIDI2MjYsIAotICAgIDc3NjIsIDk4Mzg2NiwgMTE4ODMxLCA5Mjg5OSwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgNzAyOTAsIDc4NTE2LCAKLSAgICA2OTE5LCA4NjE5LCAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyMDUzNywgMTU0MiwgOTIzMDMsIAotICAgIDEyODgxOSwgMCwgMTI3MzI3LCAxMjExOTksIDc0MzExLCA3ODQ5NywgMCwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgCi0gICAgNzc3OSwgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMCwgNjU1NzcsIDg5OTMsIAotICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgNzAxMDYsIAotICAgIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgCi0gICAgNDI4MzEsIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAorICAgIDEyODg1LCAxMjczNzUsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3MDczNywgMTI2MDMsIDcxMzEsIDExMTA4LCAKKyAgICA0NTY2LCA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMTI1MjM3LCAKKyAgICA1MjAwLCA5Mjk0NiwgMTIxNDM1LCA5ODM2ODMsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIDU0ODIsIDUxOTgsIAorICAgIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIDQzMzA3LCA3MDI5NywgCisgICAgMTE4OTczLCA3MDQ2NywgMTIxMzQsIDEyMTE2NywgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCAKKyAgICA4MDkzLCA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAxMjUwNzUsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIAorICAgIDEyMDkzMiwgNTczOCwgMTIwMDg5LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDgzMzc4LCA2ODExMiwgNzg3MiwgCisgICAgODU4MSwgOTgzNzcxLCAxMjYwLCAzMTQ5LCA1MzU5LCAxMjAxMzQsIDc0OTU1LCA3OTE0LCA1MzU3LCA3MTE5MCwgNzQzMzksIAorICAgIDI2MjQsIDUzNjQsIDEyODg4MSwgMTE0MzEsIDEwMDY1OSwgOTEwMSwgMTEwNTgsIDc4Mjg4LCA2NzEwNywgNzgyOTMsIAorICAgIDQyMjcxLCA3ODI4OSwgNDI5MTcsIDY3MTExLCAxMjkxNzksIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4MjkxLCAKKyAgICA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIDY5ODYxLCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAKKyAgICAzMjMyLCA3MzgyNCwgNzQ1ODEsIDc4MDg3LCA5ODM4MTcsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgCisgICAgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgCisgICAgNjk4NjIsIDY4NTA3LCAxMTkyMSwgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCAKKyAgICA0MTM2MSwgOTE3OTAzLCA0MTM2NiwgMTk0ODA5LCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCAKKyAgICA4MTk5LCA3ODM4OSwgMTE5NjE4LCA2NzcsIDExOTkxNiwgOTE3ODc2LCA3MTQ4MiwgMTI3MTY5LCA2ODc0NywgMCwgNjg3MzgsIAorICAgIDMzNDksIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCA5MjU5OSwgNTgwMiwgMTIwMDQ3LCA4NjE1LCAwLCAxMjgwNTgsIDQ5MSwgCisgICAgNzQ0MDEsIDEwMTkwLCA2ODc1NSwgNjU4MzcsIDY4ODAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIAorICAgIDc1ODYsIDQyMzA1LCAxMDg1MiwgOTE3NTgwLCA0MjY0OCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgCisgICAgMTA0NiwgNzEyNCwgMTI4NjEwLCA2ODc1MywgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIAorICAgIDQxODc4LCA3NDg0OSwgNzI3ODksIDcyNDI0LCA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAKKyAgICAxMTkwNDksIDUxNzYsIDg5MDUsIDIyNjcsIDQ4NzEsIDc4Mjg3LCAxMjA2NjMsIDk4MzMsIDE5NDg1MCwgMTEzNzMwLCAKKyAgICAxMTI4LCA2NTkyMCwgOTE3ODc5LCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAKKyAgICAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCAKKyAgICA0MTM4NSwgMTk0ODQ0LCA0MTM4OSwgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAKKyAgICAzNTA3LCA5NDA2LCA3NjI5LCA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAKKyAgICAxMDYyNywgNDExMzAsIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTAwODY0LCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIAorICAgIDQzMzIsIDY0ODI1LCA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIAorICAgIDY2OTAyLCA1NzQsIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgCisgICAgNTQ0MiwgNDE5MCwgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgCisgICAgNzQ3NTksIDIyMjgsIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgCisgICAgNzc4NDMsIDc3ODM5LCAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3Mjc0MSwgCisgICAgMTk1MDI1LCAyMDUsIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIAorICAgIDQxMzU1LCA1NTA1LCA3MDczNiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIAorICAgIDU1MDcsIDEyMDQ0LCA5MjM2NCwgMTAwNzQyLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCAKKyAgICA1NDc2LCA4OTkxLCA2NjMyMiwgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDc0NTE2LCAKKyAgICAyNjc1LCA1NTk1LCA3ODQxMSwgNDM3NjIsIDQzNjcsIDgzNTE4LCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIAorICAgIDc0MTUwLCA3MjkxLCA1NTkwLCA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIAorICAgIDY0NjMzLCA3Nzg1NywgNzc4NTQsIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCAKKyAgICA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCAKKyAgICA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3MjgzMiwgMTQ0MiwgCisgICAgMTI5MDgwLCA1ODk0LCA3MDA2OSwgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAKKyAgICAzMzM0LCAxMjg3MDQsIDkyNzA5LCA3Nzg4MSwgNjYwMjIsIDcwNzA1LCA2OTc3MCwgMTY1MSwgMTIwMzY0LCA4ODYxLCAwLCAKKyAgICA5MTc1ODgsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIAorICAgIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAKKyAgICAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIAorICAgIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgCisgICAgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA2Njc0MywgNDI0NDAsIDcxMjI1LCAKKyAgICA0MzExOCwgMTE5ODc1LCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIAorICAgIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAxMjI4OTAsIDYyNDcsIDQzMTE3LCA3MDM2NCwgNzEyMSwgNzQxNjYsIAorICAgIDEyNDk3MywgMTIwMzU1LCA5MjUzNywgMTk0ODQ2LCAxMTk4NzcsIDE5NTAzNCwgNzAzNTcsIDExOTkyMiwgMCwgNjcxMTksIAorICAgIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIAorICAgIDQzMzgwLCA5ODM2MjUsIDk4MzA5MSwgMTI5MzQyLCAxMjg0NTAsIDExNjAzLCAxMjkzNDcsIDc1MDc0LCA2NTg5LCAKKyAgICAxMjczNjAsIDgyOTc1LCAxMjA5OTMsIDY3ODEyLCAxMjcxOTAsIDE5NDY4MCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAKKyAgICAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCAKKyAgICA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAKKyAgICAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTI1MjI0LCA3MTQ2MSwgNjcwOTAsIDY5MjUsIDk4MzI3NCwgMCwgOTI4OTIsIAorICAgIDcxODU2LCAxMTU2OCwgOTgzMTMxLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgMTExMzgsIDAsIDY3NTQsIDYzMTIsIAorICAgIDc3OTU2LCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgCisgICAgMTEwNTAsIDEwOTg0LCA5MjIwOCwgOTgzMjE2LCA5MTc4MjIsIDkyMTgyLCAxMjkxNDYsIDE5NDYzNiwgOTUzMiwgNjYzNTUsIAorICAgIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDEyNzI0MywgMCwgMTk0ODQ3LCA3ODgzOCwgCisgICAgMTE0NDUsIDY4Mjk0LCAyMTEyLCAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIAorICAgIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDcyODUwLCA5NjI0LCAxMTU0NSwgMCwgMTIwMjc2LCAKKyAgICAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCAKKyAgICA0MzkxLCA2ODEzOSwgMTIxMDY0LCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgOTI0MzMsIAorICAgIDM1NTgsIDEyOTE5MCwgMzkxMywgNzA0MjksIDEyMTM3NiwgNzgyMzUsIDcwNDQsIDEyNjUsIDE5NDY2MCwgNjMwOSwgNzA0NSwgCisgICAgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCA5ODMxMjIsIDE5NDU4NCwgMzg4MSwgNzgzMDcsIDQxODY0LCAxMjczOTUsIAorICAgIDEyNTIwOCwgNjcwNzUsIDcxMjE5LCAxNjcsIDEyMTEwMSwgNzI3NTUsIDk4MzY1MywgNzQyMTEsIDQxODk3LCA2NzA3MiwgMCwgCisgICAgOTE3NTgzLCA2Njc0NSwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMTIwNTMwLCA3ODEwNywgNjQzNTQsIDkxNzU5MywgCisgICAgODc3NywgMTI3OTQwLCA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCAKKyAgICA0MjAyNywgMTIxMTQsIDAsIDEyODU5NywgNjQ5MzYsIDEwMDc2MywgMTE5MjY3LCAzNDIxLCAxMDU2MSwgMTI4OTQwLCAKKyAgICA4MzY1LCA3NDI5NCwgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIAorICAgIDc0MTU5LCAwLCA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgOTgzNTg2LCA3MDgwMywgCisgICAgNjMyNywgNjcyNCwgNzEyNjksIDY2MzU0LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDExMDg3LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCAKKyAgICA5NjAwLCAxMTAyMiwgMTI4NDI3LCAxMjkzNDQsIDEyODM1NCwgOTgzNTk5LCA5ODMyMDksIDY2NzcxLCA3NTQ4LCA2NDc5NCwgCisgICAgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIAorICAgIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCA5Mjg5MSwgMTI3MzcyLCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAKKyAgICAxMjc1MjAsIDAsIDkzMDQ0LCAxMjg0MzAsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMTI5MzE5LCA0ODIxLCAKKyAgICA0NDY2LCAwLCA4MzE4MiwgNDgxOCwgMTI1MjU3LCA0MTQwMywgMTE5OTc3LCA3MjQyMiwgMTI4NDU4LCA0MTQwNiwgNDMyNzMsIAorICAgIDc0MTYwLCA2OTgwNSwgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIDExOTk4MCwgNDQ1MSwgCisgICAgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIDcwMDcwLCAzMzc1LCAKKyAgICAxMjg0NDgsIDU5MDAsIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMTI4MzEzLCAwLCA2NzA3OCwgMTI4NDUxLCAyMjgyLCAKKyAgICAxMjE0MjIsIDEyNzgxMCwgMTE0MDEsIDY3MDc5LCAwLCA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgCisgICAgOTgzNzYwLCA3MjgwLCAxMjc4ODcsIDY4MDU1LCA3MDE0NiwgNDg2OCwgODI5NywgMTE5OTY2LCA3MDE0OCwgMTI1MDA4LCAKKyAgICAxMjg3NDQsIDQzMTYxLCA2NjczOSwgOTIzNjAsIDE5NTA3MCwgNTE4MiwgMTk0NjkyLCAxMjA1NDIsIDcyNzY0LCAxMjg1ODgsIAorICAgIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMTk1MDgzLCA3MTMzMCwgOTc3LCA0NDU4LCA0MzgyNywgOTI5NzEsIAorICAgIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAxMjE0NjYsIDEyMTIyOCwgMTM5NSwgNjQyNzksIDAsIDkyMjQwLCAxMjExNzksIDc4NiwgCisgICAgMTI2OTk1LCA0MzE3NCwgNjQzNDAsIDgzMDc3LCAxOTQ3NjcsIDczOTcxLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCAKKyAgICA2NTAyNSwgMCwgOTgzNDY4LCAxMjgzMDMsIDc0MTUxLCA5ODM5MTcsIDY4NDQ0LCAwLCA5MjQzNywgMTI0OTI4LCA5MjU0OSwgCisgICAgMTAyMDQsIDkyNjU2LCA4MzA3OCwgMTE5MjcxLCAxMjg0MzEsIDEzOTksIDEyMTQ2MywgNjUyMTcsIDEyMTQ2NSwgODg1MiwgCisgICAgMTIwODA4LCAyNDEsIDEyMTQ2OSwgNDkwNywgMTI4MTYxLCA5MTc5MjcsIDc5MzIsIDk3MjcsIDEyODQ2MywgNzQyNTUsIAorICAgIDg3NDgsIDAsIDEyODQyOCwgMTI4NjQ2LCAwLCA0Mjc4MCwgNTUyNjMsIDExMzY3NywgMTE5ODU2LCA0MjE3LCA5MzAzNCwgCisgICAgODY1MCwgMTI3OTkxLCAxMjA2NzMsIDcyODc4LCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAKKyAgICAxMjgwMDcsIDEzMzAwLCA3ODQzOSwgNzI4MzYsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCA2NjI4OSwgMTIwOTAyLCA3MzgxNSwgCisgICAgNDQyMCwgMTI4NTMzLCA2NDEwLCA3NzYwLCAxMDA5OTksIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgMTAwNTI4LCA3Mjk0LCAKKyAgICAxMjgyMTgsIDQzODY5LCA2ODIwNCwgOTA2NiwgMTIxMzIxLCAxMTk5MywgNDMxODgsIDI2MjYsIDc3NjIsIDk4Mzg2NiwgCisgICAgMTE4ODMxLCA5Mjg5OSwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgNzAyOTAsIDc4NTE2LCA2OTE5LCA4NjE5LCAKKyAgICAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyMDUzNywgMTU0MiwgOTIzMDMsIDEyODgxOSwgMCwgCisgICAgMTI0OTQwLCAxMjExOTksIDc0MzExLCA3ODQ5NywgMTIxNDEyLCAxMDE4MSwgMTI0OTM3LCA0MzYyNCwgMTI5MDYwLCA3Nzc5LCAKKyAgICA5MTc1NTEsIDEwMTk1LCA5NDc5LCA2MDI5LCAxMjgzNzQsIDkyMjY4LCAyMjI0LCAxMDEwNzksIDY1NTc3LCA4OTkzLCAKKyAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgNjY4MDQsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgNzAxMDYsIDYwMjcsIAorICAgIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAxMjA2MjksIDcwMzg2LCAxMjc5MDMsIDk4MzMzOSwgOTgzMzM4LCAyNzM1LCA0MjgzMSwgCisgICAgNzc5MzUsIDcwNDM5LCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAxMjkzNjQsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKICAgICA2ODE0MCwgOTgzOTI4LCA5NTc2LCA3MDI4OCwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAKICAgICAxMjcwNjMsIDc3MDksIDQxMTEyLCAxMTk4NjgsIDY2NTYwLCA4MzgxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDEyODkyMSwgCi0gICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIAotICAgIDEyODkyOSwgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIAotICAgIDY1MjU3LCA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDkxNzkxOCwgMTIwODYwLCAKLSAgICAxMjcwNjAsIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCA3ODgxNywgMTI4MDIxLCAKLSAgICAxMjA2MDksIDAsIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIAotICAgIDEyMTUwMywgMjI5OCwgMCwgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgCi0gICAgNzg4NjYsIDk4MjQsIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCAKLSAgICA2ODIzMiwgOTgzMTExLCAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIAotICAgIDY4MTYxLCA2NDU1MCwgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCAKLSAgICA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjgxNzgsIDEyMDkxOSwgMTE0ODUsIAotICAgIDYxMDMsIDkyNDY4LCA5ODMzMDcsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEyNzE1NywgCi0gICAgMTIxMTI4LCA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCAKLSAgICA3MDM2OSwgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgCi0gICAgMzM3NiwgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDE5NDYwNCwgCi0gICAgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMzMDEsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCAKLSAgICA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgOTQwNTUsIDk4MTIsIDAsIAotICAgIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIAotICAgIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCA3MzgyMywgCi0gICAgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAotICAgIDk4MzI4NywgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKLSAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCA5ODM4NjAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCi0gICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI4ODcwLCA3NDg5NiwgMCwgMjkwOCwgCi0gICAgMCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAwLCA4Mjk2OCwgCi0gICAgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyNTAzMSwgNDExLCA5ODMyNzUsIDkxOTksIDk4MzI3MywgNDA1NiwgMTE4OTkyLCAKLSAgICA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCi0gICAgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCA5MjYyOCwgCi0gICAgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDAsIDk4Mzc1OSwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAotICAgIDY1ODk1LCAxMjUwNzYsIDEyMTM4MCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDEyNzU0MywgCi0gICAgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIAotICAgIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDEyOTEwOSwgMTI5MDQwLCAwLCAzNDMwLCAwLCA0MjkwNSwgCi0gICAgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDEyNjUwNiwgCi0gICAgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIAotICAgIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgCi0gICAgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIDEyODM1NywgNzc5OTAsIDAsIAotICAgIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIDEyODQ3NSwgOTIxODcsIDM0NjgsIAotICAgIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMCwgNTgwMywgNzE4NjcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIAotICAgIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDkxNzkzOSwgMCwgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIAotICAgIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMTI0OTk0LCAxMzA1NywgMCwgMTI2OTc2LCAKLSAgICAxMjkwODEsIDEwMDA5LCAwLCA0MTcwMywgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCAwLCA5ODg1LCAwLCA4MDc3LCA5MjYyMCwgCi0gICAgMTI3OTA4LCAxMjEwNDQsIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgCi0gICAgNDk4NywgNjQ1MTksIDEyMTI2NSwgMTI1MDc4LCAwLCAxOTQ4MTMsIDEyODU3NCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIAotICAgIDEyNjQ5MCwgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAKLSAgICAxMjg4OTksIDAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCi0gICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgCi0gICAgNzg4NTAsIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAxMjA4NDEsIDAsIDEyNTA2MiwgOTgzNDQxLCAxMjA4NDMsIAotICAgIDYxODQsIDg2MDYsIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCAKLSAgICA0NDc4LCA2NjE3OCwgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIAotICAgIDExOTk2MSwgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgCi0gICAgNjYxODksIDczNzg4LCA3Nzg4LCA0ODQ3LCA5ODM0MjgsIDEyNzc1OSwgMCwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKKyAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCA3Mjg1MywgMTI4MDA0LCA1Nzk5LCAxMjg5MjksIAorICAgIDcwMTAwLCAxMjg2MDcsIDcyNjAsIDk4MzMyNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgCisgICAgNzQ5MDksIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDgzMzYwLCA2NTMyLCAwLCAxOTUwNjIsIDEyMDg2MCwgMTI3MDYwLCAKKyAgICA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY0MiwgNzg4MTcsIDEyODAyMSwgMTIwNjA5LCAwLCAKKyAgICAzMzcwLCA5MTc4ODEsIDExMzYxLCA1NDQzLCA3MTQzMSwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAxMjE1MDMsIDIyOTgsIDAsIAorICAgIDEyNTAzOSwgNjU0OTUsIDY0NzA2LCA5ODMzMjAsIDQzMzQ0LCA5ODMzMTgsIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCAKKyAgICA2NzE0MiwgMTI4OTYzLCA2NzEzMywgNjcxMzAsIDkxNSwgNDM0MjUsIDY3MjkyLCA0Mzg2NSwgNjgyMzIsIDk4MzExMSwgCisgICAgMTIwODg4LCA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAorICAgIDUxODYsIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAxMjA2NDQsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIAorICAgIDQzMTA3LCA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMTIwMzI4LCAxMjA5MTksIDExNDg1LCA2MTAzLCA5MjQ2OCwgCisgICAgMTIxMDc1LCAxMTcxOCwgOTgzMzA1LCAxMjg4OSwgOTI2NTcsIDEyNTAzNCwgMTIwNjM1LCAxMDEwNzAsIDEyMTEyOCwgCisgICAgNTUyNDUsIDEyODcwOSwgMTYzMCwgODMwMjcsIDY1NDgzLCAxMjA2MzQsIDEyNTY1LCAwLCA2NTQ3NiwgNzAzNjksIAorICAgIDk4MzA3MiwgODMwMjksIDkyODMsIDc3MDAsIDEyMTE5MiwgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIAorICAgIDY4MDgwLCAwLCAxMjgyNTMsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAxMDEwNzgsIDU5NTcsIAorICAgIDExMDU5MywgODkyNiwgMTk1MDcyLCA5ODMzMDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgCisgICAgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAxMDA2NzksIDEyNzgyNCwgMTIxNTEsIDEyMDc3MywgOTQwNTUsIAorICAgIDk4MTIsIDAsIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgCisgICAgOTIzNzAsIDQzNDY2LCAwLCA2Njc2MCwgNjQzODksIDI5NTMsIDcwMTIyLCAxODAxLCAxMjgzNSwgNzQ4NDcsIDEyMDg2NywgCisgICAgNzM4MjMsIDgzMTEwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDY2Mjk5LCAKKyAgICAxOTQ3NzUsIDcxNDQ3LCAxMjEwNiwgMTIwOTcyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgCisgICAgMjk1MSwgOTUyMiwgNjc4MTYsIDc4MjY2LCA2NjYwNCwgMTAxMDU5LCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIAorICAgIDc3ODk5LCA3NzkwMCwgODQ1MSwgODMzMjQsIDAsIDAsIDY2NDU4LCAxMjg5NTcsIDEyNzMwMSwgNzQ4OTYsIDAsIDI5MDgsIAorICAgIDk4MzU1OCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAxMjQ5MjksIAorICAgIDgyOTY4LCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTIxMDY2LCA0MTEsIDEyNzUyNSwgOTE5OSwgOTgzMjczLCA0MDU2LCAKKyAgICAxMTg5OTIsIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIAorICAgIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIAorICAgIDkyNjI4LCA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMTAxMDY0LCA5ODM3NTksIDAsIDQ4NCwgCisgICAgMTk0NzM5LCAwLCAwLCA2NTg5NSwgMTI1MDc2LCAxMDA1MjQsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAKKyAgICAxMjc1NDMsIDkzOTYyLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAxMjg3MDUsIAorICAgIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDY2NzY3LCAxMjkwNDAsIDExOTk2NywgMzQzMCwgCisgICAgOTgzMzk3LCA0MjkwNSwgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgCisgICAgMTA5MDgsIDEyNjUwNiwgNzAzNCwgNDE2ODMsIDY0NjE3LCAxMTkxMzgsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAorICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgCisgICAgMTI4MzU3LCA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgCisgICAgMTI4NDc1LCA5MjE4NywgMzQ2OCwgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAxMjAwMTAsIDU4MDMsIDcxODY3LCAKKyAgICA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCA2NzExNSwgNjY3NTMsIAorICAgIDExNzM5LCA3Nzk4NiwgNDE5ODEsIDkyNzQzLCA1OTM4LCAwLCA0Mzc2NiwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgCisgICAgNzM4NTIsIDEwMDY4NCwgMTMwNTcsIDk4MzI3NywgMTI2OTc2LCAxMjkwODEsIDEwMDA5LCA5MTc5MDUsIDQxNzAzLCAKKyAgICAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDk4Mzc1NywgOTg4NSwgMTk0ODE0LCA4MDc3LCA5MjYyMCwgMTI3OTA4LCAxMjEwNDQsIAorICAgIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIAorICAgIDEyMTI2NSwgMTI1MDc4LCAxMjkxODUsIDE5NDgxMywgMTI0OTk5LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgMTI2NDkwLCAKKyAgICAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIDEwMDg4OSwgCisgICAgMTI3MzkwLCAxMjMxMywgMTExNTEsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIDExOTk0MCwgCisgICAgMTE5OTQxLCAxMDA4OTAsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCA5MTc5MDQsIDc4ODUwLCAyNzQxLCAKKyAgICA2NDM5OSwgNjE5NywgMTM3MCwgOTgzOTQ4LCAxMjA4NDEsIDAsIDEwMDg4NywgOTgzNDQxLCA3MTI3MywgNjE4NCwgODYwNiwgCisgICAgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgMzQyMiwgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIAorICAgIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIAorICAgIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCAKKyAgICA3Mzc4OCwgNzc4OCwgNDg0NywgMTI4MzY2LCAxMjc3NTksIDcwNzI1LCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAogICAgIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIDczOTQ0LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCAKICAgICA5ODM0NDAsIDY4NjI1LCA5ODM0MzgsIDcyNjksIDEyODQ5OSwgNTk2NCwgMTI5MDgsIDEyNDk5NywgMCwgNzQ3NjQsIAotICAgIDQzNTEyLCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDMxLCA0NDMsIDk4MzQyOSwgNDk0NCwgNTQ2NywgMTE5NjAzLCAKLSAgICA3MDg2NSwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIDExOTk2MiwgCi0gICAgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCAKLSAgICA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgNDM4NjAsIAotICAgIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgNDY3NywgMTI2ODgsIAotICAgIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgNzgxNjYsIDQ2NzQsIAotICAgIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgMTg1NSwgMTI3NDc1LCAKLSAgICA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgCi0gICAgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAxMDUyNSwgNDY0OSwgCi0gICAgNjUyMDksIDEyMTUxMiwgMTIxNTExLCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCA2NDk1MCwgCi0gICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgODY2OSwgCi0gICAgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDcwNTAzLCAxOTQ5NTIsIAotICAgIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCA5ODM0MjMsIDAsIAotICAgIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgCi0gICAgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCAKLSAgICA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMjg3MzcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCAKLSAgICA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIAotICAgIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNjg4MzEsIAotICAgIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDk4MzM4OCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIAotICAgIDk4MzM4MiwgNTk1OCwgMCwgOTgzNDM1LCA0MjE1LCA5Nzg5LCAxMTk2MTksIDQzMjEsIDQ2MjEsIDE5NTAyOCwgNDEzMTMsIAotICAgIDUyMiwgNTM2OCwgMTExMzksIDY1ODAzLCAxMjg1NDYsIDUzNjYsIDEyMjAxLCA1MzcyLCAxMjEwNjAsIDExOTk0OSwgCi0gICAgMTk0OTc1LCA3NzIwLCA3MzkwLCAyNjk2LCA5ODM0MDIsIDAsIDQ2MzgsIDk4MzQwNywgMTc5MCwgNzgyNDIsIDU5NjUsIAotICAgIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIDEyODA4OSwgNDYzMywgMCwgCi0gICAgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIDQyMDk0LCA1MzMxLCA0NjM0LCAKLSAgICAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgMTI2OCwgNjUwOTcsIAotICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIAotICAgIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKLSAgICA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKLSAgICA0NzU3LCAwLCAxMjY1NzYsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAxMjg5MjYsIAotICAgIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCA4MzEyNCwgNjcxMDEsIDEyNjQ5NSwgODk1NCwgNzQ3NjAsIDY1MTg5LCAKLSAgICAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAxMjg5NjYsIDAsIAotICAgIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgCi0gICAgMCwgNTUyNSwgNTMzMCwgNTMxOSwgNjgyOTIsIDEyNzMxMSwgNjUwNjYsIDQ0MDAzLCA2ODQzNywgOTgzNDgyLCA0Mzg0MywgCi0gICAgMTIwNDk4LCAxMjc4NTEsIDQzOTE4LCA3NDg1MSwgNzQwMjIsIDk4MzQyNCwgNjQ2MDksIDY4NjQzLCA2NzQxMCwgMTI4NTkzLCAKLSAgICA1NzIxLCA3NDg5MiwgNTUxOSwgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDc4Nzc4LCAxNjkyLCAKLSAgICA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIAotICAgIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgCi0gICAgOTgzMzQ4LCA5MjA4LCA0NjA4LCA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDAsIAotICAgIDY3OTk4LCA2NzYyMCwgOTMwNDcsIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCA2NzcyMiwgCi0gICAgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIAotICAgIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDQzOTAwLCA0MTI1NiwgNzQxMzIsIDY3NzQwLCAKLSAgICAwLCA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIAotICAgIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIDQxMDI0LCAKLSAgICA0ODY2LCA5ODM4ODAsIDczOTA0LCAxMjE0MjAsIDQ4NjksIDEyMDU2MywgMTI5MTcyLCA0MjIzLCAxMjgyMDEsIDY2NTAsIAotICAgIDEyNjUwOSwgMCwgMTIwMjEyLCAxMTk4NzIsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgCi0gICAgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgODMxOTMsIDYyNDUsIDY4NjUyLCAKLSAgICAyNzMyLCA0MjczNCwgNzQ1LCA2ODA0NSwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMTI5MTM2LCA2ODYzMSwgNDI3NzUsIAorICAgIDQzNTEyLCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDMxLCA0NDMsIDEyMjkwMiwgNDk0NCwgNTQ2NywgMTE5NjAzLCAKKyAgICA3MDg2NSwgNjUxMzcsIDYwNDQsIDY1MzkyLCA5ODMxMTksIDQyMTMsIDAsIDQxMzAzLCA5MTc1NTYsIDE5NDkzMSwgCisgICAgMTE5OTYyLCA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIAorICAgIDEyODY3NiwgMTIwOTEsIDY3MTE4LCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIAorICAgIDY1MDU5LCA0Mzg2MCwgNjczOSwgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCAKKyAgICA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCAKKyAgICA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAKKyAgICAxODU1LCAxMjc0NzUsIDY4NjY5LCAxMTg5OTAsIDkyNDQ1LCAxMjc1NTQsIDEyNjYzMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAorICAgIDExNzk3LCA5ODM0MTksIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgMTIyOTA5LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCAKKyAgICA0NjQ5LCA2NTIwOSwgMTIxNTEyLCAxMjAyNDUsIDQ2NDgsIDQzMDgwLCA3NTA3MCwgMTIxNTA3LCA5ODM0MDYsIDYyNDYsIAorICAgIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3MDI4NywgNzQ2MjQsIDQzMTg3LCAKKyAgICA4NjY5LCAxMjA2NTksIDY4MjEsIDY1MDkzLCA5ODM1NjUsIDc4ODgxLCAyNzE2LCA5ODM0MTIsIDk4MzA2MCwgNjY3NTYsIAorICAgIDE5NDk1MiwgNjgzNjksIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDY4MzYsIAorICAgIDk4MzQyMywgOTgzNDIxLCA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAKKyAgICAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDcwMiwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgCisgICAgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTE4OTk3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCAKKyAgICA3NDg2NCwgNzU0NywgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgCisgICAgNDYyMiwgMTE5NjU2LCA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgCisgICAgMTk5MjYsIDY4ODMxLCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA3ODAwOCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAKKyAgICAxMDQyMywgMTAzNTksIDk4MzM4MiwgNTk1OCwgMCwgOTgzNDM1LCA0MjE1LCA5Nzg5LCAxMTk2MTksIDQzMjEsIDQ2MjEsIAorICAgIDE5NTAyOCwgNDEzMTMsIDUyMiwgNTM2OCwgMTExMzksIDY1ODAzLCAxMjg1NDYsIDUzNjYsIDEyMjAxLCA1MzcyLCAKKyAgICAxMjEwNjAsIDExOTk0OCwgMTI3MDY0LCA3NzIwLCA3MzkwLCAyNjk2LCAxMTk2NTcsIDk4MzExNSwgNDYzOCwgOTgzNDA3LCAKKyAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgNjg0NzcsIDUzNzYsIDE4MzUsIDUzMzUsIDEyMTUwNSwgCisgICAgMTI4MDg5LCA0NjMzLCA5ODM0MTgsIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCAKKyAgICA0MjA5NCwgNTMzMSwgNDYzNCwgMTE5MjgsIDEwMDk1MiwgNTMzOCwgNDYzNywgMTIxMDcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIAorICAgIDEyNjgsIDY1MDk3LCA0MjM2MSwgMTI4NTEwLCA5MTc2MDUsIDczODUzLCAxNDI3LCAxMjg0NDAsIDAsIDU5NzAsIDM0MzEsIAorICAgIDk4MzQxNywgMTAzNTgsIDEwNDIyLCA0NzU4LCA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIAorICAgIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgCisgICAgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgNDc1NywgMTI1MjE1LCAxMjY1NzYsIDI3MjgsIDQ3NTIsIDY0NTYzLCAKKyAgICA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAxMjc0ODcsIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCA4MzEyNCwgNjcxMDEsIAorICAgIDEyNjQ5NSwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIAorICAgIDY1MTM5LCA1NTc3LCAxMjg5NjYsIDk4MzA4OCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIAorICAgIDkxNzg3NywgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDEyNzAwNiwgNTUyNSwgNTMzMCwgNTMxOSwgNjgyOTIsIAorICAgIDEyNzMxMSwgNjUwNjYsIDQ0MDAzLCA2ODQzNywgMTI3Mjk5LCA0Mzg0MywgMTIwNDk4LCAxMjc4NTEsIDQzOTE4LCA3NDg1MSwgCisgICAgNzQwMjIsIDk4MzQyNCwgNjQ2MDksIDY4NjQzLCA2NzQxMCwgMTI4NTkzLCA1NzIxLCA3NDg5MiwgNTUxOSwgODYzMiwgCisgICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDc4Nzc4LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKKyAgICA3NTA1MiwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgCisgICAgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIDk4MzM0OCwgOTIwOCwgNDYwOCwgCisgICAgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAyMjY1LCA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAKKyAgICAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAxMjg3NTgsIDY3NjI1LCA1OTYwLCA2NzcyMiwgODk5MiwgNDI1OTMsIAorICAgIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCAKKyAgICA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDQzOTAwLCA0MTI1NiwgNzQxMzIsIDY3NzQwLCAxMjkzMDksIAorICAgIDcxMTc4LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgOTE3ODk2LCAKKyAgICA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCAKKyAgICA0MTAyNCwgNDg2NiwgOTgzODU1LCA3MzkwNCwgNzA3MjYsIDQ4NjksIDEyMDU2MywgMTI5MTcyLCA0MjIzLCAxMjgyMDEsIAorICAgIDY2NTAsIDEyNjUwOSwgMCwgMTIwMjEyLCAxMTk4NzIsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgCisgICAgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgNzI4MjEsIDYyNDUsIDY4NjUyLCAKKyAgICAyNzMyLCA0MjczNCwgNzQ1LCA2ODA0NSwgMTI4OTMzLCA5MjE5NSwgNDc3NywgNzgyMSwgMTI4ODcwLCA2ODYzMSwgNDI3NzUsIAogICAgIDE5NDY2MSwgMTI4NDQ1LCAxMjA2NzksIDMwOTcsIDEyMDkwOCwgNTk2NiwgMTIxMTk3LCA0Nzc4LCAxMjY0NjksIDEwODYzLCAKICAgICAxMjc1MDYsIDQ3ODEsIDkyOTg2LCA2NDQwNywgMTI4NTAzLCAxMjgzMjMsIDg1NzcsIDcxMjIxLCA2ODE5NiwgNDMyODUsIAotICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCAKLSAgICA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDEyOTEyOCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgNjcyNDcsIDcxMDkxLCAKKyAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMTI3MTE4LCAKKyAgICAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDEyOTEyOCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgNjcyNDcsIDcxMDkxLCAKICAgICAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgNDMyNzgsIDQyNjM1LCAwLCAxMjcyMDcsIAotICAgIDU5NjMsIDkxNzkyNiwgOTgzNDgzLCAwLCA0ODUwLCA3MzkwMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIAorICAgIDU5NjMsIDEyMDc4NiwgMTI1MjAxLCAwLCA0ODUwLCA3MzkwMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIAogICAgIDEyNzkxOCwgNTE2NCwgNzM4MDcsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCA5MjQ3MSwgCi0gICAgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMTIxMjczLCA0MTI2OCwgNDg0OCwgMjUzMCwgNzQ5NDEsIDIwNjgsIDE5NjQsIDAsIAotICAgIDczNzYyLCAxMDQ1OCwgOTgzNDE3LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgODMyMiwgCi0gICAgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgNzQ2MjUsIAotICAgIDY4MjI5LCA5ODM0MjcsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDc0MDk1LCAKLSAgICA0MzI5MiwgMCwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIDI0NTEsIDI3MTQsIDExOTMyNiwgCi0gICAgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCAKLSAgICA0Mjg3OSwgMTE3MjUsIDkxNzk2OSwgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIAotICAgIDE0MDgsIDUyNjEsIDQ2MDcsIDE5NDcxNSwgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCAKLSAgICA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCAKLSAgICA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIDQxMjMxLCAxODIyLCA0MjUyNiwgCi0gICAgMTI3OTg5LCAxMjc1OCwgMzg2NSwgMTk0NjYwLCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgCi0gICAgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAzMTI1LCA5NTY3LCAwLCAKLSAgICA0ODc4LCA1NDU5LCA0NjA0LCAxMTk2NTAsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAKLSAgICAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgNjg1MjEsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAKLSAgICAxMjkxNTMsIDQxMDMwLCA3NDIyNiwgNzg3MTMsIDc0NjAwLCA3NDk5NCwgOTE3ODM0LCAwLCA3ODgwNSwgNDEwMzEsIAotICAgIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzMjY5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgNzA3OSwgNTg1NiwgCi0gICAgNjc4MzgsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMTE5MDEwLCAxMDU2NCwgNzc2MywgCi0gICAgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCAKLSAgICA3Nzk3OSwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCAKLSAgICA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAKLSAgICAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIAotICAgIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCAKLSAgICA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgCi0gICAgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAKLSAgICAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgOTgzNDE4LCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgCi0gICAgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgCi0gICAgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgCi0gICAgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIAotICAgIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDEyNTAyMywgCi0gICAgNDI2MDksIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgCi0gICAgMTIxMzQ2LCA4MzQ4OCwgMCwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCisgICAgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMTIxMjczLCA0MTI2OCwgNDg0OCwgMjUzMCwgNzQ5NDEsIDIwNjgsIDE5NjQsIAorICAgIDEyODIxNywgNzM3NjIsIDEwNDU4LCAxMjgxMjUsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAxMjExMDIsIDY4MjExLCAKKyAgICA4MzIyLCA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAxMjgxNjMsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIAorICAgIDc0NjI1LCA2ODIyOSwgOTgzNDIwLCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDk4MzgwNSwgMCwgMCwgCisgICAgNzAwNDIsIDc0MDk1LCA0MzI5MiwgOTgzNjU2LCAyNDQxLCAxMDczOSwgNjUwOTAsIDE5NDYyMiwgNzA0MzYsIDExODkyOSwgCisgICAgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAKKyAgICAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMTIwNjg3LCAwLCAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgCisgICAgNjQ5MzcsIDExOTIzMywgOTE0MCwgMTQwOCwgNTI2MSwgNDYwNywgMTI5MzUzLCAxODEsIDk4MzQzMiwgNDk0MiwgOTUzOSwgCisgICAgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCA5ODM2MDEsIDY4NDQsIDQ5NjQsIDUyNjQsIAorICAgIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgCisgICAgNDEyMzEsIDE4MjIsIDQyNTI2LCA5MjM0NCwgMTI3NTgsIDM4NjUsIDEyMjkxOCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCAKKyAgICA3ODAyOCwgNzgwMDMsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgCisgICAgMzEyNSwgOTU2NywgOTgzMjkxLCA0ODc4LCA1NDU5LCA0NjA0LCAxMTk2NTAsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAKKyAgICAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgNjg1MjEsIDc4NzE0LCA2NDE5MSwgCisgICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAxMjkxNTMsIDQxMDMwLCA3NDIyNiwgNzg3MTMsIDc0NjAwLCA3NDk5NCwgOTE3ODM0LCAwLCAKKyAgICA3ODgwNSwgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgMTI2NTgxLCA3ODUzOSwgNzM5MTksIDEwNTczLCAKKyAgICA0MTc0NCwgNzA3OSwgNTg1NiwgNjc4MzgsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgCisgICAgMTE5MDEwLCAxMDU2NCwgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAKKyAgICAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCA3Nzk3OSwgNzI4MDIsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIAorICAgIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCAKKyAgICA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgMTIyMzEsIDQyNjUyLCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIAorICAgIDc4MTg2LCA5OTY1LCA3NDQ5NSwgODM0OTIsIDgzNDkzLCA4MzQ5NCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCAKKyAgICA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAKKyAgICAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgCisgICAgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIDEyODQ2NCwgMTk1MDgwLCA5NTA0LCA3MTg3LCA4Mjk1NywgMTAzNzMsIAorICAgIDk4MzE1MywgMTIwMzc1LCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCAKKyAgICA2OTk4LCA3ODE4MCwgNzE0MjksIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMTI4Mzk0LCA4ODI3LCAKKyAgICAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDE5NDkyNiwgOTQ1MCwgCisgICAgMTgwOSwgOTgzNTg4LCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgCisgICAgOTc4NSwgNjQ3MTYsIDEyODI3OSwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDEyODczOSwgMTAxMTAwLCA0MjYwOSwgCisgICAgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAxMjEzNDYsIAorICAgIDcwNzQzLCA5ODM3MTUsIDkzOTgwLCA5MTc4MDIsIDc2MjAsIDM4MDAsIDY1MTIyLCA4MzQ4NywgODM0ODAsIDgzNTUsIAogICAgIDc4NTQsIDgzNDgzLCA5NTQsIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAxMDcxMSwgCi0gICAgNDU5MywgODI5OTMsIDEyMDU4NCwgOTgzNDEwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCA5ODM0MTQsIDAsIDc4NjQyLCAKLSAgICA2NDc1OSwgMTMyNSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCi0gICAgNzgyMDQsIDQzOTEzLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCA3NDk5NiwgNzc4NzYsIDYzNiwgCi0gICAgMTE2OTgsIDgzNDc2LCA4Mjk2MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIAotICAgIDcwMjAxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCA2ODQ5MiwgNjcxNjQsIDg2MTgsIDk4MzQwNCwgOTkwOCwgNzQ5NzIsIDAsIAotICAgIDAsIDM5MzcsIDEyMzEyLCAwLCA5ODM0MDUsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIDkzOTU0LCA3NDUzMiwgCi0gICAgMTI2NTk0LCA2MjQ0LCA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgMTI4OTY5LCAwLCAxMTk1MCwgNTM5MiwgNDIyNDgsIAotICAgIDY1MTI5LCA2ODY1NiwgNTM5NywgMTI4MzEwLCAxMjA0NiwgMTI1OTksIDY3NDA3LCAxMjgyNjEsIDUzOTUsIDAsIDUzOTMsIAotICAgIDM1NCwgNjg2MTUsIDc3ODUzLCA3NDM2NiwgMTIxNDA0LCAwLCA0MjAzOSwgMTEzODE3LCAwLCA2NDE0MiwgNjI2LCAwLCAKLSAgICA1ODk1LCAwLCA0MzkxMCwgNTc4MCwgMCwgMTAyMjAsIDEyMTMzNywgNDM5MDcsIDcxMTIxLCA0MzI5NywgNzAxODgsIDQzMTEsIAotICAgIDQ2NDQsIDg4MTgsIDc4MTU4LCAxMjgxODYsIDEyODg2OSwgNzE0NSwgMzkxOCwgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCAKLSAgICA5NjU4LCA0MTQwLCAxMTM4NSwgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCAKLSAgICA1MzYwLCAyNDY2LCAwLCA2NzY2OSwgOTQwMjAsIDYyNDksIDQyMTE3LCA2ODgyOCwgOTIyMDYsIDEyODAyMywgMTE5MjU1LCAKLSAgICA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgNzExODAsIDAsIDk4MzQ3MCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCA5ODM4NDcsIAotICAgIDY0OTIwLCA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgNzA4NDksIDExOTgxLCAxMjIwMiwgMTk1MDg3LCAxMTAzMiwgCi0gICAgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY2NDE1LCA2NTg0MywgMTcwLCAwLCA2NzIzOSwgNDE2OSwgMCwgNDE4NTksIAotICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgNzA1MDcsIDEyNTA5MSwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgCi0gICAgNDIxMDYsIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgMTI3MTIwLCA0NzM3LCAxMTc3OSwgNDc0MiwgODM0MjUsIAotICAgIDY4NzU4LCA2ODM0MiwgODM0MjAsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgODM0MTgsIDgzNDE5LCA2NzczMSwgCi0gICAgNTMwMCwgNDc0MSwgNDIxMDgsIDEyNzA1NywgNjQxNTksIDQ3MzYsIDY0MTQ4LCA5MjYzNCwgODQ5LCA5MjE5MSwgNzg0OTEsIAotICAgIDQzMjg4LCAwLCA2NjYyMCwgMTI3NTMzLCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNjgsIAotICAgIDc4NzYsIDY4MTMyLCA2NjI4MCwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDEyMDg5MCwgNDg0MiwgCi0gICAgMTIwNTMsIDEyODEyOSwgNjg3NDYsIDQ4NDEsIDAsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCA4MzQxMSwgCi0gICAgODM0MTIsIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCAKLSAgICA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIDQ4MjUsIDY5MjQwLCAxMjE0NDMsIAotICAgIDY4NjU1LCAwLCA5ODMzOTAsIDAsIDAsIDY4NjI4LCA5ODMzNDksIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIAotICAgIDY2ODcsIDEyNzQsIDE5NTAyMiwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAKLSAgICAxMTk1NTksIDQ4MzAsIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDgzMjk3LCA3ODY2OSwgNjQxMDEsIDAsIDEyODQzNCwgCi0gICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMTI2OTkzLCAxODg4LCAxOTYwLCA3ODYxLCA4MzQxNiwgNzg1MjQsIDQxODM2LCAKLSAgICA0MzAxMiwgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgODMyNjAsIDYyMTEsIDEyMDM4NiwgMzU4LCA0MTk5NywgCi0gICAgNDE4MzMsIDExNDQyLCAxMDc1OCwgNjU3NzQsIDExMzgyMywgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCA5ODM2MTEsIAotICAgIDk4MzcwOCwgMTE5MDUzLCAwLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDEyNjU4MCwgNDAxNywgMTI4MjcsIAotICAgIDUyNDEsIDEyMDM5MiwgMCwgNDExMTgsIDM5MjQsIDk4Mzg5NCwgMTEzNjYsIDEyOTA4NCwgMCwgMCwgODM0MDEsIDQxMTE2LCAKKyAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCAxMjg2NjksIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDEyNzUwNSwgOTgzNTk0LCAKKyAgICA2Njc5NSwgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgCisgICAgNDM3ODcsIDc4MjA0LCA0MzkxMywgMzExOSwgMTI3MjU3LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCAKKyAgICA2MzYsIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCAKKyAgICA4ODYzLCA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIAorICAgIDc0OTcyLCAwLCAxMTkxNDcsIDM0MTQsIDEyMzEyLCAxMjA4MzIsIDEyMDcyNywgMTIxMjY0LCA2NDc4MSwgOTEyLCA2MzQ5LCAKKyAgICA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODMxNiwgMCwgCisgICAgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgCisgICAgMTI2NTQyLCA1Mzk1LCA3Mjg3MCwgNTM5MywgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDEyMTI2NiwgCisgICAgNDIwMzksIDExMzgxNywgMTI4NjcxLCA2NDE0MiwgNjI2LCAxMjgyNDQsIDU4OTUsIDk4MzU3MywgNDM5MTAsIDU3ODAsIDAsIAorICAgIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCA0NjQ0LCA4ODE4LCA3ODE1OCwgCisgICAgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIAorICAgIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgNzA2NjksIAorICAgIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMDEwNDgsIDc0MDQ2LCA0Mzc0NSwgCisgICAgNDkxMSwgOTg4LCA3MTE4MCwgOTgzMzM3LCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgMTAxMDQyLCA2NDkyMCwgCisgICAgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIDY3NjU0LCAKKyAgICA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDExOTkzOCwgNDE4NTksIDYwNTgsIAorICAgIDEyMDQwMSwgMTMyMDMsIDEyMDQwMiwgNzA1MDcsIDEyMDQwMywgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAorICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgMTIwMTQyLCA0NzM3LCAxMTc3OSwgNDc0MiwgODM0MjUsIDY4NzU4LCAKKyAgICA2ODM0MiwgNDEzNzQsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgODM0MTgsIDgzNDE5LCA2NzczMSwgNTMwMCwgCisgICAgNDc0MSwgNDIxMDgsIDEyNzA1NywgNjQxNTksIDQ3MzYsIDY0MTQ4LCA5MjYzNCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAKKyAgICAwLCA2NjYyMCwgMTI3NTMzLCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNjgsIDc4NzYsIAorICAgIDY4MTMyLCA2NjI4MCwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDEyMDg5MCwgNDg0MiwgMTIwNTMsIAorICAgIDEyODEyOSwgNjg3NDYsIDQ4NDEsIDEyOTMzNCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCA4MzQxMiwgCisgICAgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIDQwOTc0LCAKKyAgICA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDcyODUxLCA0ODI1LCA2OTI0MCwgMTIxNDQzLCA2ODY1NSwgMCwgCisgICAgMTI4NTM3LCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAKKyAgICAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCAKKyAgICA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIDQ4MjQsIDEwNjE0LCAKKyAgICAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIDYwNTIsIDYwNjQsIAorICAgIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgMTA3NTgsIAorICAgIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCA5ODM3MDgsIDkyNDA4LCAKKyAgICAxMjgwODIsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMTE5NjMyLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAKKyAgICAxMjAzOTIsIDEyNzkwMCwgNDExMTgsIDM5MjQsIDk4Mzg5NCwgMTEzNjYsIDEyOTA4NCwgMCwgMCwgODM0MDEsIDQxMTE2LCAKICAgICA4MzQwMywgODM0MDQsIDgzMzk3LCAxMTM2MywgMTIwNTcsIDExOTE3LCAxNTY3LCA3NDAwMCwgNDcyMSwgODMzOTYsIAotICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMCwgOTgzMDc0LCAwLCAwLCAxMjc0MCwgMTIxNDcwLCA0NzIyLCA2ODE2LCAKLSAgICAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgODM0NjcsIDgzNDY4LCA5ODM2MjIsIDcwMDI5LCA4MzQ2MywgCi0gICAgNzQ5MTMsIDEyNzU1LCAxMjc2MiwgNDAxNSwgNjc2OTAsIDgwNTIsIDQ3NiwgMCwgNzQ4OTMsIDEyODI5NCwgNjQyMTIsIAotICAgIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDEyNzU1MywgMTI1MTIxLCAKLSAgICA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDk4MzQyMSwgNjQwNjcsIDkyMjg3LCA4NTUyLCA2NDExMywgNDE4NDUsIAotICAgIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgMTE5MDg1LCA4MzMwMiwgCi0gICAgOTE3NjEwLCA3OTM1LCAyNDIwLCAwLCAxMTE0LCA3ODEyMCwgNjc1ODUsIDcwMTA0LCA3MDQzMiwgODM0NDcsIDc0OTIwLCAKLSAgICAzOTM4LCAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCA3MTkyMCwgNjU0MTUsIDY2ODg0LCA2MjkyLCA2NTMwMywgCi0gICAgNzk1NSwgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCAxOTQ3NjYsIDEyOTA3MywgNjUxNTIsIDcxOSwgCi0gICAgMTIwMDQ0LCA3ODYyMywgMTIwMDQyLCA2NzEzLCA0NTMyLCA2NTQxMiwgNjk4MjIsIDEwODY4LCA0NzE3LCAyMzQ5LCA1OTAyLCAKLSAgICA2NjQ1MCwgNDcxMiwgNzUwNTUsIDkxNzg5OSwgNjU0MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAKLSAgICAwLCA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgMCwgMTEzNzU2LCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgCi0gICAgODM0NTcsIDY2NDM3LCA2NjAyNSwgNzg2OTksIDgzNDUyLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCAxMjkxMzcsIAotICAgIDc4Njk0LCAxMjExNzMsIDEyODc3NywgOTE3ODU4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA3ODYxNywgNTM2NSwgNDU0NSwgCi0gICAgODkwMSwgOTI0MjEsIDExOTU1NSwgNDgxMywgMTI4MjYyLCAxOTQ3MjksIDU5MjUsIDQ4MDgsIDY0MzMwLCAxMjg0MDAsIAotICAgIDY1NDc1LCA4MzQzMiwgNjgyNDQsIDQ4MTQsIDgzNDI3LCA0ODEwLCA4MzQyOSwgODM0MzAsIDY0OTI4LCAxMDU0MywgCi0gICAgNzEyNDksIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAwLCA4MzQ0MiwgNjQ1NiwgNzM4MjAsIDgzNDQ1LCA2NjkxLCAKLSAgICA0MjE5MywgNjYyODQsIDgzNDQxLCAwLCA2ODMzNywgMCwgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAKLSAgICAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDAsIDY1MDYxLCA5ODM5NDUsIDkxNzg5NCwgMTI5MTQyLCAxMjIzNSwgCi0gICAgMTI4NTcyLCA5MjcwMSwgMTIxMDg3LCA2NDA5MiwgNjg3MzksIDY0MDgwLCAxMjkwNjMsIDY0MDkwLCA5ODM1ODYsIDY5OTEzLCAKLSAgICAxMDE2MiwgMTAzMTAsIDEyMTIxMCwgODQ1NCwgMTIxMzg3LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIAotICAgIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAwLCAxMjEyOTUsIDE5NTAyNCwgOTIxOTMsIDg4OTYsIDAsIAotICAgIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgNzQ5OTcsIDEyNzMyNSwgOTgzNDM2LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIAotICAgIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDEyODQ1MiwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgCi0gICAgMTE5MTk5LCA2OTY5MiwgMTI5MTI0LCA2OTY5OCwgMTMxNTAsIDY0NDkyLCAxMjg5NzQsIDc4NzYxLCAyMjkxLCAxMjkwMiwgCi0gICAgMCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgOTE3ODU3LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAxMjg2MjgsIDQxOTMsIAotICAgIDY2ODIzLCA0MjQxLCAxMjkxOTUsIDc5OTgsIDgzMjc2LCAwLCAxMjcwMDksIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAKLSAgICA5ODM5MzQsIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAxMjgxNDgsIDUzNzMsIDEyODc5OCwgNzAzNzAsIDM3NjIsIAotICAgIDEwMDE1LCAxMjA2NzIsIDExOTIzMiwgMTI1MTA5LCA0MTU5MCwgMCwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDkxNzg5OCwgCi0gICAgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMTI3MzMzLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgCi0gICAgMzc3OSwgOTgzMTk0LCA0MzYxMywgNzAxMzIsIDAsIDgzMjg4LCA3ODMzNSwgODMyODksIDAsIDI4MCwgNzQ1NTgsIAotICAgIDEyMTM1MywgNjczOTYsIDEzMDcyLCAxODk0LCA4MzI5MSwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIAotICAgIDAsIDExOTE2NSwgMTExNDQsIDkxNzc3OCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc1MiwgMTE5MjM3LCAKLSAgICA3MTg3NywgMTI4NjY5LCA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDk4MzA2NiwgCi0gICAgNTM2NywgODc1NiwgMTI3MTQzLCAxMTkxODMsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA1MjE4LCAKLSAgICA2OTY4NSwgOTgzNzU2LCAwLCAxMTM3OTQsIDQ0MDIwLCA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgCi0gICAgMjI5MCwgNzEwNTcsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIDM5NDMsIDAsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAxMTkzMzMsIAotICAgIDY3MTQ4LCA1MzUyLCAxMTM3NTMsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgCi0gICAgNjk2MzcsIDkyMjQxLCA0MzYwNywgNzEyNTQsIDAsIDU0MjAsIDM4OTcsIDEwMTM0LCAxMjAzODEsIDc0NDE3LCA0MDE4LCAKLSAgICA3MTUwLCA2ODEyNywgNzE0MjUsIDAsIDEyMTQyNywgMTI3ODY0LCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKKyAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDEyNzExNSwgOTgzMDc0LCAwLCAxMjI5MDcsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIAorICAgIDY4MTYsIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIAorICAgIDgzNDYzLCA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCAKKyAgICA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAKKyAgICAxMjUxMjEsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMTk1MDk2LCA2NDA2NywgOTIyODcsIDg1NTIsIAorICAgIDY0MTEzLCA0MTg0NSwgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAKKyAgICAxMTkwODUsIDgzMzAyLCA5MTc2MTAsIDc5MzUsIDI0MjAsIDczODYxLCAxMTE0LCA3ODEyMCwgNjc1ODUsIDcwMTA0LCAKKyAgICA3MDQzMiwgODM0NDcsIDc0OTIwLCAzOTM4LCAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCA3MTkyMCwgNjU0MTUsIAorICAgIDY2ODg0LCA2MjkyLCA2NTMwMywgNzk1NSwgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCAxOTQ3NjYsIAorICAgIDEyOTA3MywgNjUxNTIsIDcxOSwgMTIwMDQ0LCA3ODYyMywgMTIwMDQyLCA2NzEzLCA0NTMyLCA2NTQxMiwgNjk4MjIsIAorICAgIDEwODY4LCA0NzE3LCAyMzQ5LCA1OTAyLCA2NjQ1MCwgNDcxMiwgNzUwNTUsIDkxNzg5OSwgNjU0MDAsIDY1NDE2LCA4MTU1LCAKKyAgICA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCA5ODMyOTMsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAKKyAgICAxMjEyMjYsIDExMzc1NiwgOTgzNDU4LCA2NTQxNCwgNjQ1NCwgMTIyOSwgODM0NTcsIDY2NDM3LCA2NjAyNSwgNzg2OTksIAorICAgIDgzNDUyLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCAxMjkxMzcsIDc4Njk0LCAxMjExNzMsIDEyODc3NywgOTE3ODU4LCAKKyAgICA2NTQwNSwgNjgxNTksIDEyODkzLCA3ODYxNywgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIDExOTU1NSwgNDgxMywgCisgICAgMTI4MjYyLCAxOTQ3MjksIDU5MjUsIDQ4MDgsIDY0MzMwLCAxMjg0MDAsIDY1NDc1LCA4MzQzMiwgNjgyNDQsIDQ4MTQsIAorICAgIDgzNDI3LCA0ODEwLCA4MzQyOSwgODM0MzAsIDY0OTI4LCAxMDU0MywgNzEyNDksIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAKKyAgICA5MjMyOSwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIAorICAgIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCA5ODM1OTYsIAorICAgIDY1MDYxLCA3ODExNSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgCisgICAgNjQwODAsIDEyOTA2MywgNjQwOTAsIDEyNTI2NywgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIAorICAgIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIAorICAgIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgCisgICAgMTI3MzI1LCA5ODM0MzYsIDExMzc1NywgMTE5MjAzLCAxMjUyNiwgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgCisgICAgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAKKyAgICAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAxMjgxNDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIAorICAgIDEyOTQyNSwgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTAwNTc2LCA0MTkzLCA2NjgyMywgNDI0MSwgMTI5MTk1LCAKKyAgICA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgOTgzOTM0LCAxMjc0NzgsIDY0Mjk3LCAKKyAgICA3NDc5OSwgOTI0NDIsIDc0MTQwLCAxMjgxNDgsIDUzNzMsIDEyODc5OCwgNzAzNzAsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAorICAgIDExOTIzMiwgMTI1MTA5LCA0MTU5MCwgOTgzODY1LCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCA0MjAzNywgMCwgCisgICAgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAKKyAgICA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMTI5NDE5LCAyODAsIDc0NTU4LCAxMjEzNTMsIAorICAgIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAxMjEzMTQsIAorICAgIDExOTE2NSwgMTExNDQsIDkxNzc3OCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc1MiwgMTE5MjM3LCA3MTg3NywgCisgICAgNzI4ODYsIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgMTE5OTQ5LCA1MzY3LCA4NzU2LCAKKyAgICAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIDY5Njg1LCAxOTQ5MTgsIDAsIAorICAgIDEwMDc4MCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCA3MTA1NywgCisgICAgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMTI3NTM3LCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCA2NzE0OCwgCisgICAgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCAKKyAgICA5MjI0MSwgNDM2MDcsIDcxMjU0LCA4MzQ0NCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIDcxNTAsIAorICAgIDY4MTI3LCA3MTQyNSwgNzA2ODgsIDEyMTQyNywgMTI3ODY0LCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKICAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMTIwNzUwLCA3ODc1MSwgNzE0NiwgCi0gICAgOTgzNjgyLCA2NTE1MCwgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIAotICAgIDk4MzQzNywgNjk2NDEsIDEwNzUzLCAxMDgzMCwgMTE5MzM5LCA2MTUsIDY0NDkwLCA3NTc0LCA3NDA4MiwgNzc5MjIsIDAsIAotICAgIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgMCwgMTIxMjMxLCA2Nzk5NiwgMjAyMCwgMTI4NzkwLCA0MDIyLCAKLSAgICAxMjg3ODMsIDEyMDcwMSwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDc1MDYwLCA3NDMyOSwgMCwgNjQ2MjIsIDkwNzAsIDAsIAotICAgIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCA5ODM4MTMsIDcwMDAsIDM5MDQsIDk4MzYyOCwgCi0gICAgNzM3MzcsIDEyNTEwNSwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAotICAgIDkxNzg5MSwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMTEzNzI1LCA5NjM2LCAwLCAxMDczOCwgCi0gICAgNjk2MzQsIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDk4MzcyMywgNjQ0MDksIDM1OTYsIAotICAgIDEyOTA0NCwgMTI4MDkwLCA5NzYzLCAxMjAyODAsIDc0NjA5LCAxMjM0NywgMTI0LCAxMjk4MSwgNDExMjcsIDIwOTIsIAotICAgIDkyNjg3LCAwLCAxMjc1NTUsIDE5NDYzMiwgMTA4MjAsIDQzOTg3LCAwLCAxMjg5MDcsIDE3NjksIDQxNzE1LCAyNDYzLCAKLSAgICA3MTIxNCwgODMwNzAsIDEyNzcwLCA3MTIyMiwgMTUzOCwgOTI2MTcsIDQzMTI0LCAxOTQ2MTQsIDE5NTA1OCwgNzc5NSwgCi0gICAgMTIwMzAwLCAxMjkwNTMsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMTIxMTMwLCA5NDk4LCAxMjcwMzIsIAotICAgIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgMTIwMjg3LCAxMjAyODYsIDI2NTAsIAotICAgIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIAotICAgIDk4MzI2MiwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIAotICAgIDQxMDE5LCAxMjc5NDQsIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIAotICAgIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCAKLSAgICA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDE5NDc5MCwgCi0gICAgMTk1MDU2LCA3MDA2MSwgNDAxMywgMTI4NzE4LCAxMDg4MSwgMCwgOTgzMTYzLCAwLCA3NDc4OCwgMjAxNCwgMjQzMiwgCi0gICAgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgCi0gICAgMCwgMTE5MzE1LCAyMDE1LCAxMjEwODgsIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCAKLSAgICA2ODA2MCwgMCwgMCwgMTI2OTgsIDgwOTQsIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCA0MzQ5NywgMTI2NTYsIDY2MzM1LCAKLSAgICAxMTkzNTMsIDY3Mjc5LCAxNjY1LCA3MTg1MywgNDgzMywgOTE3OTg1LCA3MTE4OCwgMTI3MzY3LCAxMjE0NjQsIDE4OSwgCi0gICAgMTI2MTEsIDAsIDk4MzQyMCwgMjg1OSwgNDgzOCwgOTgzOTMwLCA0ODM0LCA2NTA3OCwgMCwgOTI5OTEsIDQ4MzcsIDY3NDEzLCAKLSAgICA3NzAsIDkyNjcxLCA4MTEsIDcwMDYyLCA0MTA0MiwgODMwNzMsIDQxMzE4LCA2NDQyNywgNzM5OTksIDY3NjkzLCA3ODg0OCwgCi0gICAgMzg5NSwgOTI2MTUsIDc0MzQxLCAzOTc2LCAxMjg0NjYsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgNzg0ODgsIDAsIAotICAgIDQzNDk2LCAwLCAxMjEwMTUsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIAotICAgIDk4Mzg0NCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCAKLSAgICA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAKLSAgICAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDAsIAotICAgIDgzMzQyLCAzMDc4LCAxNDAyLCAwLCA4MzM0OCwgMCwgMTI1MDcyLCAxMTkyNDgsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKKyAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAxMjcyODcsIDEwNTA2LCAKKyAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAKKyAgICA5ODMyOTgsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgMTI4MzA5LCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIAorICAgIDQwMjIsIDEyODc4MywgMTAwNzQ4LCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgCisgICAgOTA3MCwgOTgzODc2LCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMTI1MTkxLCA3MDAwLCAzOTA0LCAKKyAgICA5ODM2MjgsIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyMDUxOCwgNzM5NywgCisgICAgMTE4ODA3LCA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMTI4NTA5LCAzNzc3LCA2ODQ1OCwgMTEzNzI1LCAKKyAgICA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIAorICAgIDk4MzcyMywgNjQ0MDksIDM1OTYsIDEyOTA0NCwgMTIwODk1LCA5NzYzLCAxMjAyODAsIDc0NjA5LCAxMjM0NywgMTI0LCAKKyAgICAxMjk4MSwgNDExMjcsIDIwOTIsIDkyNjg3LCAwLCAxMjc1NTUsIDE5NDYzMiwgMTA4MjAsIDQzOTg3LCAwLCAxMjg5MDcsIAorICAgIDE3NjksIDQxNzE1LCAyNDYzLCA3MTIxNCwgODMwNzAsIDEyNzcwLCA3MTIyMiwgMTUzOCwgOTI2MTcsIDQzMTI0LCAKKyAgICAxOTQ2MTQsIDE5NDU4NSwgNzc5NSwgMTIwMzAwLCAxMjkwNTMsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMTAxMDM0LCAKKyAgICAxMjExMzAsIDk0OTgsIDEwMDQ5NCwgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAKKyAgICAxMjAyODcsIDEyMDI4NiwgMjY1MCwgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgCisgICAgNTUyMjgsIDExNzc0LCA0MTAxNiwgOTE3OTQ0LCA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIAorICAgIDY2MzMxLCAzNDU0LCAxOTkzMCwgNzgxNjMsIDQxMDE5LCAxMjY1NDYsIDk4MzY3MSwgNjUyOTIsIDY4MjIsIDEyODYyLCAKKyAgICA5ODM3MDcsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCAKKyAgICA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCAKKyAgICA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxMjc5MjMsIDgzMDc1LCA3MDA2MSwgNDAxMywgMTI4NzE4LCAKKyAgICAxMDg4MSwgMCwgMTI5MDQ1LCAxMjUyNjYsIDc0Nzg4LCAyMDE0LCAyNDMyLCA3MTkwMSwgOTc2NSwgMTk1MDUyLCAwLCAKKyAgICA5MTc4NTQsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAxMTkzMTUsIDIwMTUsIDEwMDg3MSwgCisgICAgOTI3NjUsIDcxODQwLCA2NjMxOCwgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIDY4MDYwLCA5ODM2MTQsIDk4MzkwNCwgMTI2OTgsIAorICAgIDgwOTQsIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCA0MzQ5NywgMTI2NTYsIDY2MzM1LCAxMTkzNTMsIDY3Mjc5LCAxNjY1LCAKKyAgICA3MTg1MywgNDgzMywgOTE3OTg1LCA3MTE4OCwgMTI3MzY3LCAxMjE0NjQsIDE4OSwgMTI2MTEsIDAsIDEyODA5NCwgMjg1OSwgCisgICAgNDgzOCwgOTgzOTMwLCA0ODM0LCA2NTA3OCwgMCwgOTI5OTEsIDQ4MzcsIDY3NDEzLCA3NzAsIDkyNjcxLCA4MTEsIDcwMDYyLCAKKyAgICA0MTA0MiwgODMwNzMsIDQxMzE4LCA2NDQyNywgNzM5OTksIDY3NjkzLCA3ODg0OCwgMzg5NSwgOTI2MTUsIDc0MzQxLCAKKyAgICAzOTc2LCAxMjg0NjYsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgNzg0ODgsIDAsIDQzNDk2LCA5ODMwNjksIDEyMTAxNSwgCisgICAgNDM2ODYsIDc4ODQ2LCA0MTg3NywgOTgzNzQzLCAyODcxLCA2NDYxNCwgNjg4NDMsIDk5OSwgMTI1MTk4LCA2MzQ1LCAKKyAgICA0MTg3NiwgMjY2MywgMjAxNywgMTIxMjM0LCA2NzgyNCwgMTEwNDAsIDEwMTUwLCAxMjA2NzgsIDY0MzA4LCAxNTIyLCA1OTcsIAorICAgIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAKKyAgICA5ODM4MzIsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAxMjY1NzQsIAorICAgIDgzMzQyLCAzMDc4LCAxNDAyLCAwLCA4MzM0OCwgMCwgMTI1MDcyLCA3NDM3MSwgMzk0LCAzMDg4LCA4MzM0NywgOTIxNzIsIAogICAgIDkxNzk2NSwgMzk5MSwgNjQzOTEsIDgzMzQxLCAxMjg1MjQsIDQyNCwgNjYzMjgsIDE5OTksIDY5NjU5LCA3MzkxNCwgMCwgCi0gICAgMTI3NTM0LCA2NjkwMywgMTI4NDY4LCA0MjIzMSwgMjIwOSwgMTI1MTAzLCAwLCAwLCA0MTg0MCwgNjY5MTMsIDIzNzcsIAorICAgIDEyNTEyOCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKICAgICAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCAKLSAgICA3NDgxLCA5NDQ4LCA0OCwgOTgzMDg0LCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAotICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCisgICAgNzQ4MSwgOTQ0OCwgNDgsIDc4MDI5LCA5NDgwLCA0ODEsIDEwMDYxNSwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgCisgICAgOTQ0MywgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKICAgICA5MjkzNCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDEyODA1MCwgCiAgICAgMjAwNCwgOTA5NiwgOTc4MiwgNzA4NDIsIDkxNzIsIDgzMDcxLCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIAotICAgIDc0NzczLCA3ODI3MSwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgCi0gICAgOTgzODE3LCAxMjA4MzgsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAxMjcyMzgsIAotICAgIDEyODczOSwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCAxMjUwODIsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMTE5OTYzLCAKLSAgICAxMjEwNjcsIDEyODQzMCwgMTIwOTM5LCA0MjQxMCwgNzQ0NDgsIDExOTEzMiwgNjA1NCwgMTA2OTcsIDMxNjksIDQyMjk3LCAKLSAgICA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDEyODg0OCwgMTI4MTM5LCA5ODMyNjMsIDY4Njc4LCA3NDk4NiwgOTgzNzkwLCAKLSAgICAxMDQ5LCA0MzUxNywgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCA2NDc2MCwgCi0gICAgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIDM2LCAwLCAKLSAgICA1MTUzLCA0MTgwNSwgMCwgNzM3MzUsIDc2MywgNDE4MDgsIDY0OTEwLCAxMjEzODksIDIwMDksIDAsIDEyNzk4NSwgNzQyNDUsIAotICAgIDk2NDAsIDExOTk1MSwgMCwgNjk4OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIDk4MzA1MCwgNjQzNjEsIDEyOTA4OCwgCi0gICAgMTgyLCA2NjQxNCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAKLSAgICAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIAotICAgIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAxMjQ5NzcsIDQyMjUxLCAwLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAKLSAgICAxMTM4MTEsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDEyNTA1OCwgNjU1MDYsIDk4MzkxMiwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgCi0gICAgOTkzMiwgNDM1MTYsIDgzMDYzLCA4MzA2NSwgODMwNjQsIDk4MTcsIDAsIDcxMjM0LCAwLCAxMjExNywgNjY1ODYsIDQxODMsIAotICAgIDEwNTQwLCA2NjI1MCwgOTA2MywgMTI3MDQ1LCAxMjg1NDcsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgCi0gICAgMTIxNDE4LCA2MDY1LCA0MzE2MCwgMTI4Mzc5LCAxMjA1OTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCAKLSAgICA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCA3ODAwMiwgMTIwMDM1LCA3NTEzLCAxODYzLCA0NzEwLCAKLSAgICAwLCA1OTU2LCA3NjIxLCA3ODAwNSwgOTI2MjQsIDQ3MDUsIDcxNiwgNzQ5MTgsIDAsIDQ3MDQsIDEyMDA0MCwgOTMwMjQsIAotICAgIDQyMjQxLCAxNjEsIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDc0MDc3LCA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAKLSAgICAxMTkwNjUsIDQzMjkzLCA2ODc3MSwgOTgzMTkwLCAxMTkxNjQsIDEyMDMyOCwgODMzMTksIDEwMTg3LCAxNzAwLCAxMTkyMjMsIAotICAgIDgzMzE1LCAwLCA3NDk4MCwgNDAwNCwgOTE3NTk1LCAxMDk2OCwgNDMyOTYsIDEyODMzMSwgODUwNiwgMTEzNzQ0LCAKLSAgICAxOTQ4MTIsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMTIxMzUwLCA3ODIxOCwgOTgzMTA5LCAKLSAgICA3NDYzLCA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDc0ODg3LCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgCi0gICAgMTI4NjIzLCA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIAotICAgIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgCi0gICAgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIDAsIDkyNTI5LCAzNTEwLCAxMzIzNCwgOTgzODMyLCAxMjA0MDcsIDU2MDUsIAorICAgIDc0NzczLCA3ODI3MSwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAxMjkzNjUsIDgzMDYyLCAKKyAgICAxMzkyLCAxMjc3ODIsIDEyMDY5NiwgMTI3MzY0LCAxMDYwNiwgODA2NSwgNzA3MTAsIDEwMzUzLCAxMDQxNywgMTAwNjEzLCAKKyAgICAxMjUwMjMsIDY0NTI0LCA3MDcxMSwgNDAxOSwgMTAwOTUwLCAxMjUwODIsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgCisgICAgMTAwOTQ5LCAxMjEwNjcsIDEwMDk0NCwgMTIwOTM5LCA0MjQxMCwgNzQ0NDgsIDEwMTA4NSwgNjA1NCwgMTA2OTcsIDMxNjksIAorICAgIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDEyODIzMSwgMTI4MTM5LCA5ODMyNjMsIDY4Njc4LCA3NDk4NiwgCisgICAgOTgzNzkwLCAxMDQ5LCA0MzUxNywgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCAKKyAgICA2NDc2MCwgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIAorICAgIDM2LCAwLCA1MTUzLCA0MTgwNSwgMTE5MTUzLCA3MzczNSwgNzYzLCA5MjExLCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAKKyAgICAxMjc5ODUsIDc0MjQ1LCA5NjQwLCAxMTk5NTEsIDEyNzMxNiwgNjk4OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIAorICAgIDk4MzA1MCwgNjQzNjEsIDEyOTA4OCwgMTgyLCA2NjQxNCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAKKyAgICAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIAorICAgIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAxMjQ5NzcsIDQyMjUxLCAKKyAgICA5ODM5NjMsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTAxMDkyLCAKKyAgICA2NTUwNiwgMTE5MjQ4LCA2NTg2MSwgNzQwODMsIDY2ODcyLCA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgCisgICAgOTgxNywgMTAwOTM3LCA3MTIzNCwgNzA3NDksIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCA5MDYzLCAKKyAgICAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAxMjE0MTgsIDYwNjUsIDQzMTYwLCAKKyAgICAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgCisgICAgMTI2MTQsIDIwMDUsIDg1MjMsIDcyODUyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIDEyMDAzMCwgNTk1NiwgNzYyMSwgCisgICAgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCA5ODM0NTMsIDQ3MDQsIDEyMDA0MCwgOTMwMjQsIDQyMjQxLCAxNjEsIAorICAgIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDc0MDc3LCA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIAorICAgIDQzMjkzLCA2ODc3MSwgMTk1MDMwLCAxMTkxNjQsIDEwMDc3MCwgODMzMTksIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDgzMzE1LCAKKyAgICAwLCA3NDk4MCwgNDAwNCwgOTE3NTk1LCAxMDk2OCwgNDMyOTYsIDcyODIzLCA4NTA2LCAxMTM3NDQsIDE5NDgxMiwgCisgICAgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIDc0NjMsIDQ3MjksIAorICAgIDk4MzM5MywgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDEyODYyMywgCisgICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCA0MzQyNywgCisgICAgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIDEyMDQxNiwgCisgICAgMjY3NCwgMTMyMzgsIDExOTIyLCAxMjg0MDksIDkyNTI5LCAzNTEwLCAxMzIzNCwgMTI5MzY4LCAxMjA0MDcsIDU2MDUsIAogICAgIDQyMDk1LCAxMTM2NCwgOTIyODYsIDEzODAsIDY1NjE3LCAxMTE2MiwgMTIwMjYxLCAxMzE5NiwgMTMxOTcsIDEyMDMwOSwgCiAgICAgNjc3MDgsIDk0OTUsIDExOTM0NiwgMTI3MTU0LCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDY2Mjc1LCA0MzM3MSwgNjk0MSwgCiAgICAgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDgyOTUyLCA0Nzc5LCAKICAgICA5ODM5MjIsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIDcxMTg2LCAyMDIxLCAxMTkzMzIsIDQzODc3LCA4MzE0MCwgCiAgICAgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgCi0gICAgNzc4NywgNzExODksIDY1NDk0LCA2ODE1MywgMTI2OTkxLCAxOTQ2OTcsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAKLSAgICAxMjg3NTMsIDk4Mzk1OCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgOTgzNzk0LCA5NzQyLCA1MjEsIDAsIDEwODAwLCAKLSAgICA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDAsIDAsIDExOTAxOCwgMTA1OTksIAotICAgIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgNjcyNjEsIDEwMDc0LCA3ODU0OCwgCi0gICAgOTM5OTksIDM3NjksIDAsIDAsIDEyODcwMywgOTgzMTA3LCA5NTczLCA5MTc5OTgsIDY1MjkwLCA4ODQ5LCAxMTkyNTQsIAotICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgNzEwNDYsIDAsIDY5NjY1LCA4MTY0LCA0MTMwMSwgMzUwMiwgODMxMzUsIDczODgsIAotICAgIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgOTIyMDMsIDkyOTE1LCAxMjY2MSwgNzYwOCwgCi0gICAgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIAotICAgIDEzOTAsIDcwMTg0LCAxOTQ3MDQsIDQyMSwgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgCi0gICAgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTUwOTEsIDAsIDY1ODUxLCA0MjYwNywgMTI0OTU1LCA5MjQwMywgMzE2OCwgNjc3MzMsIAotICAgIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIDEyODA4NCwgMCwgMTIwMTMyLCAxMjc3NDUsIDE4MzYsIDAsIAotICAgIDEyMTIwNywgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgCi0gICAgMTE5MDA2LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCA4MzMxMCwgNzc5NzUsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCAKLSAgICA3OTQzLCAxMjQ5NjgsIDExOTIzNCwgMTA2MTgsIDI1ODQsIDAsIDAsIDEyODIyNSwgOTk5OCwgMTIwNTczLCA4MzMwNiwgMCwgCi0gICAgMTI3NzUwLCA0MzUwOCwgNjIwNCwgMTI3MDQ0LCAxMjEzNzQsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCi0gICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDEyODAxNSwgMTk1MDQ2LCA2NTcwMCwgNjYzODYsIDAsIDY0NjQ1LCAKLSAgICAwLCA5Mjg4NywgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTIwMTAwLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgCi0gICAgOTgzNzk3LCA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDkyODg1LCA2NjE1LCAyMjg1LCAKLSAgICA5MjM0NCwgMzk4NiwgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCA5MjI0NywgOTgzMzYwLCA5NTQxLCA3ODI3NiwgCi0gICAgMTEzNjY5LCAxMTI3NSwgODU0MCwgMTE0OTgsIDEyMDg2OCwgOTgzMzU5LCA0MTA0MCwgMjQ1OSwgMTI3MzAyLCAxMzA2MCwgCi0gICAgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIDAsIDc3OTMxLCA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAKLSAgICAzNzY1LCA5Mjg4MSwgOTE3NjEyLCAxNjA2LCAxMjAzNDgsIDkyMjk5LCAzMDkzLCA2ODQzNiwgMTI4MDQwLCA5ODMwNjEsIAotICAgIDExOTYxMywgMCwgMCwgNDMxMiwgNzQwOTEsIDEyMDMzNywgNzQ5ODMsIDExOTIzLCA0MDIzLCA2ODM5OSwgNTc2MywgCi0gICAgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCAKLSAgICA2NjY2MCwgMjQ5OSwgNjcxNjcsIDY3MTY2LCAxMTg4MzcsIDExOTczLCAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgCi0gICAgNDI3NTgsIDEyMTk2LCA0MjgzNywgNDIyMjYsIDExOTMxOSwgMTI3OTkyLCAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIAotICAgIDMxMjAsIDk3OTcsIDAsIDAsIDExMDg2LCAxMDM4OSwgMTI2NDg1LCAxMjg3ODQsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIAotICAgIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAxMjExNjAsIDk4MzEwNiwgCi0gICAgNzAwNCwgMTEzNjY3LCA2NTg4MCwgMTI2NTE0LCAxMTkwNDgsIDIzODAsIDExMzgwLCA5ODM4NjMsIDkzOTk2LCAyMzc2LCAKLSAgICA3ODg0MSwgODM0MDIsIDAsIDUxOTcsIDcwODM5LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMTk2MDQsIAotICAgIDcwODM3LCAxMjAwNDUsIDAsIDEyODU1NCwgMCwgOTE3ODQ2LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDc4NDU1LCA3NTA0OCwgCi0gICAgMTEzNjc1LCA3NDkwMCwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgOTgzMzY2LCAxODQ3LCAxMjA5NzgsIDEwMzM5LCAKLSAgICA5ODMzNjcsIDQyMzg0LCAxMjEzNzksIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEyMTEyNCwgNDIzNjUsIDAsIAotICAgIDEyNjcxLCAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ3LCA1ODIwLCA5ODMzNDYsIDEyMDA1MiwgCisgICAgNzc4NywgNzExODksIDY1NDk0LCA2ODE1MywgMTI2OTkxLCAxOTQ2OTcsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgNzI4NzksIAorICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA4MzEzOCwgOTc0MiwgNTIxLCA5ODM5MTEsIAorICAgIDEwODAwLCA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDk4MzkwOCwgNjQwNDEsIAorICAgIDExOTAxOCwgMTA1OTksIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgCisgICAgNjcyNjEsIDEwMDc0LCA3ODU0OCwgOTM5OTksIDM3NjksIDEyNzk1OCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIAorICAgIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgOTgzNDI4LCA2OTY2NSwgCisgICAgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIAorICAgIDcyNzQ5LCA5MjkxNSwgMTI2NjEsIDc2MDgsIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDk4MzQyOSwgMTQwOSwgCisgICAgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDcwMTg0LCA3ODUxNSwgNDIxLCA0MzUzNiwgNTg0NiwgCisgICAgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NDc5OSwgMCwgNjU4NTEsIAorICAgIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgCisgICAgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgMTAwNzgyLCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIAorICAgIDY1Mzc0LCAxMDA3ODUsIDIzOTAsIDM5NDQsIDY2NjI4LCAxMTkwMDYsIDk4MzkxNiwgNjEzNSwgMzExOCwgNzQyNjUsIAorICAgIDExOTA5MywgODMzMTAsIDc3OTc1LCA5ODM4ODksIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCAxMjQ5NjgsIDExOTIzNCwgCisgICAgMTA2MTgsIDI1ODQsIDAsIDAsIDEyODIyNSwgOTk5OCwgMTIwNTczLCA4MzMwNiwgMCwgMTI3NzUwLCA0MzUwOCwgNjIwNCwgCisgICAgMTI3MDQ0LCAxMjEzNzQsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgMTIwMTMwLCA0MjY3LCAxNjMxLCAKKyAgICA0MjIwNiwgNzc5ODMsIDEyODAxNSwgMTk0NzUzLCA2NTcwMCwgNjYzODYsIDAsIDY0NjQ1LCAwLCA5Mjg4NywgMTE5MTU0LCAKKyAgICAxMjU4NiwgMCwgOTI0MiwgMTIwMTAwLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCA3NzkzLCA3ODI3NSwgCisgICAgOTMyOCwgMTE5MTA0LCA3MDY4NSwgMTI2MDQsIDkyODg1LCA2NjE1LCAyMjg1LCA2Njc5NiwgMzk4NiwgNDQwMjUsIDAsIAorICAgIDg5MTIsIDY0NTU1LCA3NDA5LCA5MjI0NywgOTgzMTkwLCA5NTQxLCA3ODI3NiwgMTEzNjY5LCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDEyMDg2OCwgMTI4NTQwLCA0MTA0MCwgMjQ1OSwgMTI3MzAyLCAxMjU1OCwgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIAorICAgIDAsIDc3OTMxLCA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5Mjg4MSwgOTE3NjEyLCAKKyAgICAxNjA2LCAxMjAzNDgsIDkyMjk5LCAzMDkzLCA2ODQzNiwgMTAwNzE4LCA5ODMwNjEsIDExOTYxMywgOTgzOTM4LCAxOTQ3NTYsIAorICAgIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgCisgICAgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDY3MTY3LCAKKyAgICA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIAorICAgIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAKKyAgICAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIAorICAgIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEwMDc3NSwgMTIxMTYwLCA5ODMxMDYsIDcwMDQsIDExMzY2NywgNjU4ODAsIAorICAgIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgNzg4NDEsIDgzNDAyLCA5ODMyNTYsIAorICAgIDUxOTcsIDcwODM5LCAxMjAyNDgsIDEyNzA0OCwgMjM2NiwgMTAwNzEzLCAxMTk2MDQsIDcwODM3LCAxMjAwNDUsIDAsIAorICAgIDEyODU1NCwgMCwgOTE3ODQ2LCAxMDA3MTUsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAxMTM2NzUsIAorICAgIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCAxMDA3NzQsIDE4NDcsIDEyMDk3OCwgMTAzMzksIDEwMDc3MiwgCisgICAgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTAwOTI2LCA0MjM2NSwgMTk0ODMzLCAKKyAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgMTI4MDE4LCAxMjAwNTIsIAogICAgIDEyMDA2NSwgMTI4ODI1LCAxMjAwNjQsIDEyMDA1MywgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAxMjAwNjMsIDEyMTI4NiwgCiAgICAgNzM3NywgMTIwMDUxLCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMTIxMTMyLCAKLSAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMzcxLCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIDAsIAotICAgIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKLSAgICAxMjY5OSwgODMzMSwgNzAxMTgsIDMwOTEsIDQxMDM0LCA2NjI5OCwgNzAyOTMsIDgzNjAsIDk4MzQ0NSwgNzgwNDQsIDMyMSwgCi0gICAgNDIyOSwgNjQ1NDMsIDEyODQ3MCwgNjU1NjMsIDE5NDg3MywgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDEyMTQyOCwgCi0gICAgOTE5NSwgOTIzODYsIDE4NjEsIDAsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgCi0gICAgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIDEyNzUxNCwgCi0gICAgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgMTI3MjM2LCAKLSAgICA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDAsIDE5OTE5LCA3MDI3OCwgCi0gICAgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDEyNTA3NywgMzUxMywgNzExMTUsIDcwMzQxLCA0MzM0MiwgMTE5MDY0LCAKLSAgICA2NTUyOSwgNjUzNjQsIDgzMjA4LCA4MzE3MCwgNjQ4NSwgMTM5NywgMTk0NzgxLCA0MTk4NiwgOTI2NzgsIDgzMjA0LCAKLSAgICA4MzIxMiwgNzQwOTcsIDgzMjEzLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDY4NDMsIDQzMjg3LCA5MjMxNywgMCwgNjc0MDYsIAotICAgIDEyMDIzOSwgMTk0Njc4LCA3MTkxNCwgMTA5OSwgMTA0OTAsIDgzMjAxLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAxMjg5NTIsIAotICAgIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIDE5NDYwOSwgNjU2NzksIDY0NTczLCA2NDg5NywgNDIzLCAKLSAgICAxODE4LCA2NTE0NCwgODI5NjMsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjE0NDcsIAotICAgIDQzNTY0LCAwLCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIAotICAgIDcxMjM1LCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDE5NDczMCwgMTI4MzMzLCAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIAotICAgIDQzNTMwLCAyNzUyLCAxMjczNjUsIDEyODQ1OSwgMTI2NDgyLCA1OSwgOTgzNjcxLCAxMjE0MTAsIDExMTQ5LCA3ODA3NCwgCi0gICAgNzc4NzMsIDQxODEwLCA4MzE2MiwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDU4NzcsIDQyMjUyLCA0MjIxMywgCi0gICAgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDQzODQ4LCAxMzEyNywgMTIwMDY3LCA5ODM5NDYsIDc0Mzk3LCAKLSAgICAxMjAyMzUsIDEyODY0MSwgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgNzUwMTcsIDIxMDMsIDEwMzg3LCA0NDUzLCAKLSAgICA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMTI4OTM5LCA2NDgxLCA0MTIxMywgMCwgMCwgMTI5MTMzLCAxMTk5MjksIDQxOTgzLCAKLSAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIAotICAgIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAKLSAgICAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgCi0gICAgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgCi0gICAgMTE5MzIzLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIDI4NTEsIDQzMDE3LCAKLSAgICA5ODM1ODksIDEyMDg5NiwgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIAotICAgIDkxNzU4OSwgOTIzNjUsIDEyODIwMiwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIAotICAgIDc0Mzc0LCAyMzY4LCA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIAotICAgIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMTIwMTA3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgCi0gICAgMjQ5LCAwLCAwLCAwLCAxMjA2NTgsIDExOTMyNCwgMTI4NzEyLCA4ODgzLCAxMTk4NjAsIDcyOCwgMTExNzMsIDk5NSwgMCwgCi0gICAgMTIxMDQ3LCA2NDgyNiwgMTI0OTMxLCA5MTc3OTgsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIAotICAgIDE5NDgxNCwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIDEyMDEwNCwgNjgwMTksIAotICAgIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgMTExMjAsIAotICAgIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIDYyNzcsIDQxNjcyLCA0MTg5MywgCi0gICAgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTIxNDUwLCA4MzUsIDcxMzQwLCA2OTgxNiwgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIAotICAgIDU0MjYsIDQyNTgsIDgzMTg4LCAxMjA4NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAxMjc5NzgsIDU0MzQsIDgzMTk2LCAKLSAgICAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDEyODMzMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyMTEyMiwgMzQ2NCwgCi0gICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAxMjkxMjMsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgCi0gICAgMTI4NTM5LCA0MzEsIDY3ODIwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgCi0gICAgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIAotICAgIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDU4NzgsIDk4Mzc5OSwgCi0gICAgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIAotICAgIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDEyODU4NSwgOTA5NywgMTk1MDI2LCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCAKLSAgICA0MjcwNywgODU3MywgMTIwOTAzLCAxMjY0OTQsIDAsIDcxMTAyLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgCi0gICAgMTI1MTExLCA1ODcyLCA2NDk1LCAxMjkxMjUsIDAsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCAKLSAgICA5MzA3MSwgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAxMTkwODcsIDY4NDczLCAKLSAgICA3NDEwNCwgNTIyOCwgMTE5ODM1LCA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAKLSAgICA5MTc1NTMsIDExNjIsIDc0OTk1LCAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIAotICAgIDczODExLCA5ODM1NzMsIDE5NTAwNSwgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCAKLSAgICA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAKLSAgICAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIDcwMjcyLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIAotICAgIDE5NDk0MSwgNDMyODIsIDg4MzMsIDY5OTk4LCAwLCA2NTA0LCA3ODQwOCwgMTIxMTY2LCAxMDcxOSwgNzAyNzUsIDE4OTgsIAotICAgIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIAotICAgIDkxNjksIDgzOCwgNjg4MTksIDY4ODA3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDY4ODE4LCA5OTkwLCAxMjgzOTgsIAotICAgIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCA4MzIyNCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgCi0gICAgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDEyMTMxNCwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTk0ODkzLCAKLSAgICA3ODQwMywgOTI2ODksIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgCi0gICAgNTczMywgMjkzMCwgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIAotICAgIDEyNTA5OSwgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgMCwgCi0gICAgOTI0ODUsIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDE5NDg5NCwgMTIwNjY4LCAwLCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCisgICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzI5NiwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAKKyAgICAxMjcxMDMsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMDA0OTgsIDExOTYwNSwgNTIwLCAKKyAgICA0MjAwLCAxMjY5OSwgODMzMSwgNzAxMTgsIDMwOTEsIDQxMDM0LCA2NjI5OCwgNzAyOTMsIDgzNjAsIDk4MzQ0NSwgNzgwNDQsIAorICAgIDMyMSwgNDIyOSwgNjQ1NDMsIDEyODQ3MCwgNjU1NjMsIDEwMDc2NCwgMTI5MzEwLCAyODYxLCA0Mzc5MywgMTAwOTUsIAorICAgIDEyMTQyOCwgOTE5NSwgNzI3NjcsIDE4NjEsIDk4MzA1NiwgNzM3MzMsIDkxNzc4MCwgNjg4MzksIDQzMDQxLCAwLCA0Mzc5NCwgCisgICAgMTAwNzY5LCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIDcwNzkzLCA3Mzg2NywgMTI5NzMsIDc1MDE0LCA3NDc1NywgCisgICAgMTI3NTE0LCA0MTY1OCwgMTI4Mzc2LCAxMjEyMzUsIDU3NjAsIDExMzY5OSwgNzQzLCA0NDE0LCAxMjA3NjYsIDAsIDQyNjMyLCAKKyAgICAxMjcyMzYsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAxMDA1OTMsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAxOTQ3OTIsIAorICAgIDE5OTE5LCA3MDI3OCwgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDEyMTQwMCwgMzUxMywgNzExMTUsIDcwMzQxLCAKKyAgICA0MzM0MiwgMTE5MDY0LCA2NTUyOSwgNjUzNjQsIDgzMjA4LCA4MzE3MCwgNjQ4NSwgMTM5NywgMTk0NzgxLCA0MTk4NiwgCisgICAgOTI2NzgsIDgzMjA0LCA4MzIxMiwgNzQwOTcsIDgzMjEzLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDY4NDMsIDQzMjg3LCAKKyAgICA5MjMxNywgMCwgNjc0MDYsIDEyMDIzOSwgMTk0Njc4LCA3MTkxNCwgMTA5OSwgMTA0OTAsIDgzMjAxLCAxMDUwMSwgNjUxODEsIAorICAgIDc0NDYzLCAxMjg5NTIsIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIDE5NDYwOSwgNjU2NzksIAorICAgIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgODI5NjMsIDgyNzIsIDEyMTIwMywgMTk5MTEsIDQyMTgsIDMwODcsIAorICAgIDY0OTYwLCAxMjE0NDcsIDQzNTY0LCA5ODM3NDksIDk4MzE4MiwgOTU4NCwgMTA0NjUsIDk4MzkwMiwgNzQzNTksIDEyNjI2LCAKKyAgICA5MTA2LCA5ODMwNjQsIDQyNjQyLCA3MTIzNSwgNjQ3NTAsIDkzOTAsIDEyMDczNywgNDE3OTcsIDE5NDczMCwgMTI4MzMzLCAKKyAgICAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIDQzNTMwLCAyNzUyLCAxMjczNjUsIDEyODQ1OSwgMTI2NDgyLCA1OSwgCisgICAgOTgzNDI3LCAxMjE0MTAsIDExMTQ5LCA3ODA3NCwgNzc4NzMsIDQxODEwLCA4MzE2MiwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAKKyAgICAxMTkzNjQsIDU4NzcsIDQyMjUyLCA0MjIxMywgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDQzODQ4LCAxMzEyNywgCisgICAgMTIwMDY3LCA5ODM5NDYsIDc0Mzk3LCAxMjAyMzUsIDEwMDgzNSwgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgNzUwMTcsIAorICAgIDIxMDMsIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMTI4OTM5LCA2NDgxLCA0MTIxMywgMCwgMTAwODM5LCAKKyAgICAxMjkxMzMsIDEwMDgzOCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDkyOTk1LCA0NjIsIDY4MTEwLCAKKyAgICAxMDQ5MywgMTIxNDQ5LCA4MTI5LCA5Mjk5NCwgMTI4MzY1LCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCisgICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDEwMDQ1NywgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCAKKyAgICA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIAorICAgIDEwMTcwLCAzOTY2LCA4OTExLCAxMDEwMTMsIDQxODQxLCA0MzMzOCwgMTk0OTU0LCAxMDA4NDgsIDU3MjYsIDY0OTE1LCAKKyAgICA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEwMDg0NCwgMjg1MSwgNDMwMTcsIDEwMDQ4NCwgMTIwODk2LCAKKyAgICA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgMTAxMDEyLCA5MjM2NSwgCisgICAgMTIwOTM3LCA2NDkyMiwgMTAwNDg2LCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCA3NDM3NCwgMjM2OCwgCisgICAgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTAwNDg4LCA4ODkxLCAzMDgwLCAKKyAgICAxMjAyMjgsIDIzNDcsIDU0MzAsIDEwMDQ4NywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIDI0OSwgCisgICAgOTgzMDQwLCA5MTc4NjksIDk4MzgyNSwgNzQ4MTQsIDExOTMyNCwgMTI4NzEyLCA4ODgzLCAxMTk4NjAsIDcyOCwgMTExNzMsIAorICAgIDk5NSwgMCwgMTAwNjU3LCA2NDgyNiwgMTAwNjU2LCAxMjkzNzEsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgCisgICAgMTI5MTM0LCAxMjI3MywgMTI5MTU2LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgCisgICAgMTIwMTA0LCA2ODAxOSwgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDE5NTA2OSwgCisgICAgNzcyNSwgMTE4NDMsIDExMTIwLCA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCAKKyAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjczODEsIDM1NDAsIDEwMDgyNywgODM1LCA3MTM0MCwgNjk4MTYsIAorICAgIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCA1NDI2LCA0MjU4LCA4MzE4OCwgMTAwNzU4LCA1NDI0LCA5MjMwNiwgODI4MywgCisgICAgMTI3OTc4LCA1NDM0LCA4MzE5NiwgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDEyNzM5MiwgMTE5NDcsIDEyODMzMCwgMTQwNCwgCisgICAgMzA5NSwgMTE0MzIsIDEyMTEyMiwgMzQ2NCwgNjQ4NiwgNDgxOSwgMTAwNzU5LCAxMjc0MDQsIDU3MCwgODA5NSwgMzY3MiwgCisgICAgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMTI4NTM5LCA0MzEsIDY3ODIwLCA3ODA4MCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCAKKyAgICA5ODM0NTksIDEzMDk2LCAxMjg2NDMsIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAKKyAgICAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIAorICAgIDExNDE4LCAxMjA2ODEsIDU4NzgsIDkxNzg2MCwgMCwgMCwgMTk0ODc3LCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCAKKyAgICA3ODE1NywgOTI3MjMsIDM1NDksIDE5NTA2NywgOTExMCwgMTE5NjY1LCAyNzQzLCAxMjE0MzIsIDQzMjkwLCAxMjg1ODUsIAorICAgIDkwOTcsIDc0Mzc5LCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMTIwOTAzLCAxMDA2NjYsIDAsIAorICAgIDcxMTAyLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgMTAwNjYyLCA1ODcyLCA2NDk1LCAxMjkxMjUsIAorICAgIDEyNzQ2NywgMCwgOTI1NDMsIDY3MTczLCA2NzE3MiwgMTI4NDksIDM5NTMsIDE4OTcsIDkzMDcxLCA2NTA5NCwgMTE5OTQsIAorICAgIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDEyODk0NiwgMCwgMTE5MDg3LCA2ODQ3MywgNjY3NzgsIDUyMjgsIDExOTgzNSwgCisgICAgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgOTE3NTUzLCAxMTYyLCA3NDk5NSwgCisgICAgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgOTE3OTQ3LCAxMTM3MjMsIAorICAgIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgNDE4OTEsIDEyNzAwNCwgOTgzNzg4LCAKKyAgICA1NTI0OSwgNDgyMCwgNjUyMzksIDEyOTMzOCwgMCwgMTAxMDQzLCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgCisgICAgNDI4MjEsIDkyNTAsIDcwMjcyLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIDEyODYxMSwgNDMyODIsIAorICAgIDg4MzMsIDY5OTk4LCAwLCA2NTA0LCA3ODQwOCwgMTAwNjg4LCAxMDcxOSwgNzAyNzUsIDE4OTgsIDE0MTMsIDQyNDQzLCAKKyAgICA5ODMzODcsIDgwMiwgMTIxNDEsIDEyMTEzOCwgODMwOTcsIDY2NDgsIDEwNjcxLCAyNTI4LCA3Mjg4MCwgNjQ3ODksIDkxNjksIAorICAgIDgzOCwgNjg4MTksIDY4ODA3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDY4ODE4LCA5OTkwLCAxMjgzOTgsIDQyNzM5LCAKKyAgICA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCA4MzIyNCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgNjY1NzMsIDAsIAorICAgIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDcwNjY1LCA4MzIyNiwgNDEwOTQsIDAsIDc3OTU4LCAxMTk5MTgsIDc4NDAzLCA5MjY4OSwgCisgICAgNjE5NiwgNjk0NSwgOTM5NjksIDEyMDk0MiwgNjcwOTUsIDEyMDQ5MSwgMTE4MTYsIDY4ODQ2LCA1NzMzLCAyOTMwLCAKKyAgICA3MDI3NCwgMTI3MTc5LCA0MTA5OCwgOTI3NzEsIDQxMDkzLCA2ODgzNCwgNjY2MjYsIDU4OCwgOTc2MCwgMTAwNTY4LCAKKyAgICAxOTQ3MTcsIDEyMzgsIDIwMCwgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCA5ODM3ODQsIDkyNDg1LCAKKyAgICAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCA3MDczNCwgMTIwNjY4LCAxMDA0NzcsIDY5OTk2LCAxMjczNTgsIDY2MjE5LCAKICAgICA3MjQyNSwgNDMyODQsIDY4MDcyLCA3ODE3LCAxODQxLCAxMTA1NSwgNjY4MzUsIDE5NDk3OSwgNzQ2MDcsIDE2NjksIAotICAgIDEwNzc2LCA3NDUzNCwgNzcwMSwgMTk0OTgwLCA5ODM0NTAsIDc0OTkyLCAxNzMyLCA0MDMwLCA5ODM0NDIsIDM5NjMsIAotICAgIDY1MzM1LCAxMjc1MzAsIDQxNzY4LCA2NDkxLCA2NTMzMywgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDk4Mzg0NSwgCi0gICAgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDcxOTA4LCAxMjAwOSwgMTIzOTksIDEyMTIxNywgCi0gICAgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCA4OTYwLCAwLCA3MDEyMywgCi0gICAgNjUzMTcsIDc3ODgwLCAwLCA1ODc2LCA3MDM3NCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCA3MTg2MiwgCi0gICAgMCwgMTI3OTU3LCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjEyMzYsIDEyNjU2MiwgOTgzMTI5LCAwLCAKLSAgICAxMjEzOTMsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCA5ODMxNzQsIDEyMDA3LCA0MzY5NSwgNjgwMzMsIDExOTc1LCAxOTQ4NzgsIAotICAgIDAsIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQxMTMzLCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgODMxMDgsIAotICAgIDEyMDI0MSwgMTI4MTY0LCAwLCAwLCA5ODM1NTMsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgCi0gICAgNjU1OTYsIDY3ODM3LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCA3ODE5MSwgMTExNTcsIAotICAgIDc0Mzg2LCAxMjcyNzQsIDgyMzMsIDEyODIwLCA5ODM3MzAsIDY2ODMsIDEyNTExMiwgMzQ0MiwgMTIxNDQsIDI4NDEsIAotICAgIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgNjQzMjksIDEyMDg4MCwgNjcyNDMsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIAotICAgIDQxMTAwLCA3MjQxNywgNDExMDQsIDk0MDAzLCAzNDA2LCAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDk4MzM4NSwgNDQzNCwgCi0gICAgMTA2OSwgMTk0Nzg0LCAxMTg4NjIsIDY1NzM3LCAxMjEyMDIsIDEyODcwNSwgMCwgODMyMTEsIDk2OTMsIDQxOTQzLCAKLSAgICA2ODMwNSwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgOTgzMzUzLCAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIAotICAgIDkxNzc3MCwgNjU5MzcsIDc4NTcyLCA0MTc1OCwgMTA2NDYsIDEyMTE1OSwgMTE4ODMzLCA5MjM3MiwgNzA0MjQsIDc0ODMwLCAKLSAgICA3ODU2OSwgMTI3NDMsIDk4MzY4OSwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgNzc4OTUsIAotICAgIDYzMzUsIDQzOTE5LCAxMTMxMiwgNjQ4MDcsIDkyOTYyLCA2OTk4OSwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCA0MzAyMCwgCi0gICAgNzQ5NzQsIDM5NTUsIDc0MjU0LCAxMjA2MzIsIDk4Mzc1NCwgOTE3ODYxLCA3MDE4NywgNjk5NzUsIDk3NzAsIDkyNDYsIAotICAgIDEyMjMwLCAxMjUwNDcsIDEyOTEwNSwgNzg1ODAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIAotICAgIDY0NTcxLCA3ODU3OCwgMTk0OTI3LCA0ODU3LCA5ODM1NzcsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTI4MDYxLCA3ODU3NCwgMCwgCi0gICAgMTExMTYsIDQzODQyLCA1NzQ3LCA3ODgyNSwgNzA0NzEsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCAKLSAgICA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgMTI5NDEyLCAxMjc5OCwgMTEyNzEsIDU3LCA5MjcxNywgODM0OTUsIDkxNzg2MCwgCi0gICAgMTE5MDQzLCA5MTc2MTgsIDk0MDUxLCA0MzEzNywgNjk0LCA5ODM3MTksIDk4NzYsIDAsIDExOTE2OCwgMCwgNzAzOTIsIAotICAgIDY0NTM3LCAxMjc5MTQsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCA5ODMxNDUsIDc0NDY2LCAxMzAyNSwgNjQ4MTEsIAotICAgIDg3NTcsIDc4ODI0LCA3ODE4OCwgMTU3NCwgNzM4MSwgMCwgMjUyNSwgNDg1MiwgNTc0OSwgNjg0NjUsIDEzMDI3LCA0MjgyNCwgCi0gICAgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIDEyOTE1NiwgNjk3MjUsIDkwNTUsIAotICAgIDQxODUzLCA0ODU4LCA3NTAwMCwgOTE3OTkwLCA0MzYsIDQ3NzEsIDkxNzkzNiwgMjc4NiwgOTMwMjgsIDQ4NTYsIDgwNTEsIAotICAgIDkyNTAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCA3MTEzMywgMTI1MDA5LCAxMjg4NzMsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgCi0gICAgNjgwODQsIDk4MzM2MSwgNzM5MDYsIDY3NDA5LCAxMjcxMTQsIDkxNzkxNiwgMTAyMzQsIDU4NDMsIDExOTM5LCA3MDM0NiwgCi0gICAgNDIxNTcsIDAsIDMxNTcsIDE5NDY1OSwgNjgzOTMsIDc1MDM1LCAzNTA0LCA3MDQyMiwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAKLSAgICAxMDIyNiwgNjUxNDIsIDEyODAyNSwgMzU5NCwgNDI0MjQsIDEyNDk5MywgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgCi0gICAgMTIxNDY3LCA4ODM0LCAxMjA5NzQsIDEyODE1LCA0MzU3NCwgMTIxNDMwLCA3MzkwNywgMTI3NzkyLCA3MDExMywgNzIyMCwgCi0gICAgMTE4MzksIDEyMTE0MywgNzQzMTYsIDE5NDc1MiwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTk0NzUzLCAKLSAgICAxMjEyNzYsIDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjExMzksIDEzMzAzLCA3MDQwNiwgOTIzOTIsIAotICAgIDEyODQ3NCwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAxMjc4MDUsIDEyNzExMCwgNzQzODcsIDc4MTc5LCA3ODU5OCwgCi0gICAgNzQ0OTIsIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDE5NDc2MywgNzg1OTIsIDY4NzQ1LCAyNjcyLCAKLSAgICAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMTI4MzcwLCA0Mzc0MiwgCi0gICAgMTI4MzczLCA5NDg3LCAxMTk5NTksIDY4Nzg1LCAzODQyLCA3MTkxMSwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAKLSAgICAxMTkzNDQsIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNjY3MjEsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCi0gICAgNzAwMDYsIDE5NDY5MCwgMTI3NTM3LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAKLSAgICAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMTIxMDIxLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIDU0MzcsIAotICAgIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDk4Mzc3NiwgMTk5LCA2ODA3NSwgNDEwNSwgMTk0ODQ1LCAKLSAgICAxMjc5NDIsIDc1MDA2LCAxOTQ3MTAsIDY3ODE4LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxOTUwNzAsIAotICAgIDY0NzIsIDY1ODE0LCA3MTkxOSwgMTIxMjE4LCA0NzI0LCAxMjg0OTEsIDE5NTA0MSwgOTE5MSwgMTk0NjQ1LCA2NDQzMiwgCi0gICAgMTIwMjcwLCA4Mjk4NywgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCA5ODM0MjUsIAotICAgIDcxODcyLCA2Njc5LCA3NDQxMiwgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCAxMjgyNTQsIDQzODYyLCA3ODU5MSwgCi0gICAgMTEzNzMzLCAxOTQ2NzksIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIAotICAgIDEyODI1MiwgNDM4NzQsIDY1NDQyLCA2ODA0NywgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAwLCAxMTMyMSwgCi0gICAgMTI4ODQ1LCAxMjA4MDksIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDkzMDEwLCA3MzkyNywgCi0gICAgOTI0NDQsIDEyNzMzNiwgNjU3NDYsIDExODc5NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxMjEzMzksIAotICAgIDE2NzcsIDkxNzU5MiwgODI5ODksIDEyNjU5MCwgODM0MTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAKLSAgICAxMDE2MCwgMCwgMTI5MTUwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgODM0MTQsIDQzMDAwLCA3NTA1LCA1NDMsIAotICAgIDY0OTE2LCA2NDczNiwgMTE4ODM1LCAwLCA2NDY1NSwgOTgzMDUzLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAKLSAgICA5ODMyMzEsIDY1MjY1LCAxOTQ2MzksIDEyMTA4MCwgMTI3MTcwLCAxMjcwNDEsIDEyODAwNiwgOTI1NTAsIDk4MzE4NiwgCi0gICAgMTI5OTQsIDkyNzI4LCAxMDgyOCwgNzQzNzgsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgODMyMzEsIDcyMzg5LCAKLSAgICA4MzA3OSwgNTA2LCA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDEyMTQwNywgCi0gICAgODg0MSwgOTgzNzQ3LCA1MTYsIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIAotICAgIDc0MzMzLCAxMjAxODIsIDExODI3LCA2NzE2NSwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCAKLSAgICA2NTg0LCA3NzQ5LCAxMTAzNywgMTI4NzQzLCAxNzU4LCAxMTkwNzQsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgCi0gICAgMTkzNSwgMTE1MTcsIDEyMDE5MywgMTIwMTk2LCA4MzA4MiwgMTkzMSwgMTIwMTg5LCA3NDgzOSwgMTIwMTkxLCAxMjE3LCAKLSAgICA2NDcwMiwgMTI2NDMsIDgyNSwgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNzg4MzQsIDkxMzgsIDc4ODMxLCAKLSAgICA3ODgzMywgMTI2MzEsIDcxODcxLCAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAxMjcxOTksIDExMzEzLCAKLSAgICAxOTQ4MDMsIDM0MDMsIDk4MzY1NSwgMTIwMjcxLCA2NDM2NCwgOTIyNjksIDEyMTI4MiwgNzI0MzEsIDg5OTgsIDEyOTg4LCAKLSAgICAxMTk5ODMsIDkxNTIsIDkyMTYxLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgCi0gICAgMTU5NCwgNDIxOTIsIDY5MTQsIDY2MzkyLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAKLSAgICAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAKLSAgICAyNDc3LCAxMjcyODUsIDEyMTI0OSwgMTE4ODgwLCAwLCA2NzYwNCwgNjc2ODMsIDEyNzIzNSwgNTczLCAxMjcyODIsIAotICAgIDEyMDU0MywgMTE0MTcsIDkyNjYxLCAxMTk4MTQsIDExOTMwOSwgNjc1OTksIDAsIDcyNDEwLCA2NzYwNywgMTE0ODIsIDAsIAotICAgIDM5ODEsIDMzNTcsIDAsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODUwMywgNzg4MzksIDY3NzI4LCA3NzkwNywgMTE1ODksIAorICAgIDEwNzc2LCA3NDUzNCwgNzcwMSwgMTk0OTc2LCAxMDA0NzQsIDc0OTkyLCAxNzMyLCA0MDMwLCA5ODM0NDIsIDM5NjMsIAorICAgIDY1MzM1LCAxMjc1MzAsIDQxNzY4LCA2NDkxLCA2NTMzMywgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDE5NTAxMywgCisgICAgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgOTgzOTUzLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgCisgICAgMTIxMjE3LCA2Nzg1MiwgNjU1MzcsIDc4MDAyLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCA4OTYwLCAwLCAKKyAgICA3MDEyMywgNjUzMTcsIDc3ODgwLCA5ODMxOTksIDU4NzYsIDcwMzc0LCAxMjMwNCwgMTI5MzU1LCAwLCA2NTMxNSwgOTI2NzAsIAorICAgIDEyODUxMSwgNzE4NjIsIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAKKyAgICAxMjY1NjIsIDk4MzEyOSwgMCwgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIAorICAgIDY4MDMzLCAxMTk3NSwgMTAxMDEwLCAxMjg3NDUsIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQxMTMzLCA0MTg3MiwgCisgICAgNDM3MDYsIDQ0OTYsIDEwMDY5MiwgODMxMDgsIDEyMDI0MSwgMTI4MTY0LCAxMDA2OTEsIDAsIDk4MzU1MywgNjQ3MzAsIAorICAgIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgCisgICAgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDEwMDg0NywgCisgICAgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDEwMDY5OSwgMTQ3MywgNDI4MjAsIDY0MzI5LCAKKyAgICAxMDA4MTYsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgCisgICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAxMTM3NjksIDQ0MzQsIDEwNjksIDE5NDc4NCwgMTAwNzAzLCA2NTczNywgCisgICAgMTIwMTI5LCAxMjAzMDIsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIAorICAgIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCA5MTc3NjksIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAKKyAgICAxMDA2NjUsIDExODgzMywgMjI2OCwgNzA0MjQsIDc0ODMwLCA3ODU2OSwgMTI3NDMsIDk4MzY4OSwgNjQ4MCwgOTE3NzYxLCAKKyAgICA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgNzc4OTUsIDYzMzUsIDQzOTE5LCAxMTMxMiwgNjQ4MDcsIDkyOTYyLCAKKyAgICA2OTk4OSwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCA0MzAyMCwgNzQ5NzQsIDM5NTUsIDc0MjU0LCAxMjA2MzIsIDk4Mzc1NCwgCisgICAgOTE3ODYxLCA3MDE4NywgNjk5NzUsIDk3NzAsIDkyNDYsIDEyMjMwLCAxMjUwNDcsIDEyOTEwNSwgNzg1ODAsIDEwNDQ4LCAKKyAgICA0MTc4MywgNDE3ODYsIDcwNjYzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxMjc5OTQsIDQ4NTcsIDk4MzU3NywgCisgICAgNDQyOCwgMTI3OTQsIDczNzU1LCAxMDA3MjIsIDc4NTc0LCAwLCAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgCisgICAgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMTAwNzI1LCA1NjMsIDAsIAorICAgIDEwMDc5NSwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCAxMDA3MjcsIDExOTA0MywgNzEyNjgsIDk0MDUxLCAKKyAgICA0MzEzNywgNjk0LCA5ODM3MTksIDk4NzYsIDEyODcyMCwgODMyNzMsIDAsIDcwMzkyLCA2NDUzNywgMTI3OTE0LCAyNzcsIAorICAgIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCA4NzU3LCA3ODgyNCwgNzgxODgsIAorICAgIDE1NzQsIDczODEsIDE5NDYxNiwgMjUyNSwgNDg1MiwgNTc0OSwgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCAKKyAgICA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIDEwMDY2MSwgNjk3MjUsIDkwNTUsIDQxODUzLCA0ODU4LCAKKyAgICA3NTAwMCwgOTI4OTYsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgOTI1MDAsIDExOTYwOSwgCisgICAgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCA2ODA4NCwgOTgzMzYxLCAKKyAgICA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3NjE0LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCA0MjE1NywgMCwgMzE1NywgCisgICAgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCA5ODMwNDIsIDEwODIyLCA1MTQ5LCA2NjAyOSwgMTAyMjYsIAorICAgIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIDEyMTQ2NywgCisgICAgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEwMDUxMywgNzAxMTMsIDcyMjAsIDExODM5LCAKKyAgICAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDEwMDUxMSwgMTIxMjc2LCAKKyAgICA5ODM5NDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjExMzksIDEzMzAzLCA3MDQwNiwgOTIzOTIsIDEyMTM4NCwgCisgICAgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAxMjc4MDUsIDkyNDIzLCA3NDM4NywgNzgxNzksIDc4NTk4LCA3NDQ5MiwgCisgICAgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTAwNzIwLCA3ODU5MiwgNjg3NDUsIDI2NzIsIDM3MzUsIAorICAgIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAxMjgzNzMsIAorICAgIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDExOTM0NCwgCisgICAgMTAwNTIwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDcwMDA2LCAxOTQ2OTAsIDEwMDUxOCwgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCisgICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDExOTU5NywgMjA3MiwgOTIzMTIsIDY5OTUsIDcyODAxLCA1NDM3LCAKKyAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAxMDA1MTQsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgMzg2NCwgCisgICAgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDEyODQ3MSwgNjQ3MiwgCisgICAgNjU4MTQsIDcxOTE5LCAxMDA4NTUsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAxMjAyNzAsIAorICAgIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAxOTQ2NDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCA3MTg3MiwgCisgICAgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxMTkzNTAsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzUwMDEsIDExMzczMywgCisgICAgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDQzODc0LCAKKyAgICA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMTI3NTM0LCAxMTMyMSwgMTI4ODQ1LCAKKyAgICAxMjA4MDksIDEyMjg5NSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDkzMDEwLCA3MzkyNywgOTI0NDQsIAorICAgIDEyNzMzNiwgNjU3NDYsIDExODc5NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxMjEzMzksIDE2NzcsIAorICAgIDkxNzU5MiwgODI5ODksIDEyNjU5MCwgODM0MTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAxMDE2MCwgMCwgCisgICAgMTI5MTUwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgODM0MTQsIDQzMDAwLCA3NTA1LCA1NDMsIDY0OTE2LCA2NDczNiwgCisgICAgMTE4ODM1LCAxOTQ2NjUsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgOTE3OTY2LCA0MzE1OCwgNzkwMiwgOTgzMjMxLCAKKyAgICA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTIyOTE1LCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIDEyOTk0LCAKKyAgICA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgODMwNzksIDUwNiwgCisgICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIDg4NDEsIDY2NzcwLCAKKyAgICA1MTYsIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAorICAgIDExODI3LCA2NzE2NSwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKKyAgICAxMTAzNywgMTI3MTU3LCAxNzU4LCAxMTkwNzQsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIAorICAgIDEyMDE5MywgMTIwMTk2LCA4MzA4MiwgMTkzMSwgMTAwNDk5LCA3NDgzOSwgNzQxMDQsIDEyMTcsIDY0NzAyLCAxMjY0MywgCisgICAgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA2Njc0OCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgCisgICAgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIDE5NDgwMywgMzQwMywgCisgICAgMTI2NTY0LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIDExOTk4MywgOTE1MiwgCisgICAgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgCisgICAgNjkxNCwgNjYzOTIsIDEyNTIwMiwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgMTI3Mjk2LCAKKyAgICA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgMjQ3NywgCisgICAgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgxLCAxMjA1NDMsIAorICAgIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAxMjg5NjEsIAorICAgIDM5ODEsIDMzNTcsIDEyNzE2NCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCiAgICAgNDIxOTUsIDc0NDc3LCAxMTk5OTcsIDEyNzE3OCwgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMTIxMzY2LCA0Mjc4OCwgNjg0MTYsIAotICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMCwgOTk3LCAwLCAwLCA5MjU3NywgCi0gICAgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIDcyMzkwLCAwLCAKLSAgICAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDk4MzI3OCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgCi0gICAgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIDY5NzA2LCAxMjg1NDAsIDY4MzQsIDc0MzQ3LCAKLSAgICA3NDk1OCwgMTI5MDMzLCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAxOTQ1OTgsIAotICAgIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3NDUyMiwgCi0gICAgNDE5ODksIDEyMTMxNywgMCwgMTEzNzY5LCAzMjYzLCA5MTc5MjIsIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCAKLSAgICA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgMTI4NDk4LCA3NTYsIDE5NDYwNSwgMCwgMCwgMTk0NjIxLCAKLSAgICA3MjYxLCA5MjU0NywgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgCi0gICAgMTI4MDAsIDk4MzkwMSwgNzQyMDMsIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgCi0gICAgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgCi0gICAgNjgzMTAsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgCi0gICAgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAKLSAgICAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgCi0gICAgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIAotICAgIDk1NDYsIDAsIDEyODMzMiwgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKLSAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgCi0gICAgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAKLSAgICAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIAotICAgIDEwMzQsIDMzOTIsIDgzMzM2LCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgCi0gICAgNjQwMzUsIDQyOTEsIDEyOTE1NywgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIAotICAgIDQzMDkwLCA4MzM5MSwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCAKLSAgICA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCAKLSAgICA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2OCwgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIAotICAgIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCAKLSAgICA0MTMzMywgODMyNTksIDg0ODksIDE5NDIsIDkxNzkyMSwgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIAotICAgIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIAotICAgIDc4MjQ0LCA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTIxMzYxLCA3NTgyLCAKLSAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgCi0gICAgNzc5MjAsIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCAKLSAgICA3NDQ1NCwgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCAKLSAgICA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIAotICAgIDgzMzgwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAotICAgIDcwMTUzLCAxMTk4ODYsIDExOTg5MSwgNzIzODcsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAxOTQ2NTUsIAotICAgIDc4MDEsIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCAKLSAgICA4MzM1MiwgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKLSAgICA3ODQ5NiwgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKLSAgICA4MzM2MiwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCi0gICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAwLCAxMjE0NjYsIDE5OTYsIDAsIDM0NTMsIAotICAgIDYyODIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCi0gICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDk4MzI0OCwgMTIwMDAxLCAKLSAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgMCwgCi0gICAgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIDAsIDc4MTYyLCAKLSAgICAxMTk1NTgsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAotICAgIDEyODY1LCAxOTk3LCAxODk1LCAKKyAgICA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDEwMDczOCwgOTk3LCAxMTk5OTgsIAorICAgIDkxNzkxMCwgOTI1NzcsIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgCisgICAgMTI3NzYwLCA3MjM5MCwgMTIwNzEzLCAxMTkyMjgsIDEyMDM1LCA5ODM5MDYsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgCisgICAgMTI5NDI0LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgCisgICAgNjk3MDYsIDEwMDg1OCwgNjgzNCwgNzQzNDcsIDc0OTU4LCA2OTY0NSwgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAKKyAgICAxMjY1NzAsIDc2NiwgMTI1NywgMTk0NTk4LCAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCAKKyAgICA4MzI1NCwgNzE4NjEsIDk4Mzk1MCwgNzI3OTYsIDQxOTg5LCAxMjEzMTcsIDE5NDgwNiwgMzQxOCwgMzI2MywgOTE3OTIyLCAKKyAgICA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgOTE3OTExLCAwLCAwLCA3MTEyNywgOTUwNSwgNjU1MTgsIAorICAgIDEyODQ5OCwgNzU2LCAxMjA0MDAsIDEyNTI0MywgOTgzNzAwLCAxOTQ2MjEsIDcyNjEsIDkyNTQ3LCAxODYsIDk4Mzc2OSwgCisgICAgNzI3NzEsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgMTI4MDAsIDEyNzUyOSwgNzQyMDMsIAorICAgIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgCisgICAgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgNjgzMTAsIDY0NTIxLCA1NjI0LCA3Mjc2NiwgCisgICAgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAKKyAgICAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM1NjAsIAorICAgIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAKKyAgICA5ODM2NDMsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCA5NTQ2LCA5ODMyMzcsIDEyODMzMiwgCisgICAgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAxMTkwNTgsIDc4MjAyLCA2NDA1OCwgCisgICAgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAKKyAgICAxMDAzNTIsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIDEwNzU2LCA2NDA0NywgNDI2MDYsIAorICAgIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDEwMDM1NiwgMTAzNCwgMzM5MiwgODMzMzYsIAorICAgIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTI5MTU3LCAKKyAgICA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgNDMwOTAsIDgzMzkxLCAzNDc2LCAKKyAgICA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgCisgICAgNjQwMDksIDIwNCwgMTAwODQxLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIAorICAgIDcyNDcsIDY0MDU0LCA5ODMyNjgsIDExODkyMSwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIAorICAgIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgCisgICAgODMyNTksIDg0ODksIDE5NDIsIDEwMDg0MywgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIDEwNzYwLCAKKyAgICA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKKyAgICA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTAwNTM3LCA3NTgyLCA3ODI1MiwgCisgICAgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgNzc5MjAsIAorICAgIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzA3NDUsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCA3NDQ1NCwgCisgICAgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgCisgICAgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIDgzMzgwLCAKKyAgICA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxMDA0MDYsIDk4MzY1MCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCisgICAgNzAxNTMsIDEwMDc1MywgNzg3MzMsIDcyMzg3LCAxMTk4ODksIDExNDMzLCAxMDA1NDQsIDExOTg5NiwgMTk0NjU1LCA3ODAxLCAKKyAgICA2NTU3OCwgODMzNjEsIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgODMzNTcsIDExMzUsIDgzMzUwLCA4MzM1MSwgODMzNTIsIAorICAgIDE5OTUsIDY3MjIsIDk4MzkyNSwgMTI4ODE1LCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgNzg0OTYsIAorICAgIDcyMzg2LCA4MzM3MSwgNjY4MiwgODMzNjUsIDc4Njc5LCA0MzgzMywgNDE1NDcsIDk4MzYzMCwgMjAxMywgODMzNjIsIAorICAgIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIDExOTkwOCwgOTEzNywgCisgICAgNzE1NSwgMjI2NCwgOTE3OTAxLCA3ODUzMywgMzQ2NiwgMTk0OTg3LCAxMjEwMzksIDE5OTYsIDk4MzY3NSwgMzQ1MywgCisgICAgMzQxMiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKKyAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMzQxMywgOTgzMjQ4LCAxMjAwMDEsIAorICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAKKyAgICAxMDA1NDcsIDEyMTQ3MiwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAKKyAgICAxMDAzOTQsIDc4MTYyLCAxMDA4NDYsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIAorICAgIDE5OTQsIDkyODEsIDMyOTYsIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy93aW5yZXBhcnNlLmggYi9Nb2R1bGVzL3dpbnJlcGFyc2UuaAppbmRleCA2NmY3Nzc1Li4yODA0OWM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3dpbnJlcGFyc2UuaAorKysgYi9Nb2R1bGVzL3dpbnJlcGFyc2UuaApAQCAtMiw3ICsyLDcgQEAKICNkZWZpbmUgUHlfV0lOUkVQQVJTRV9ICiAKICNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTEwLDkgKzEwLDEwIEBACiAKIC8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHdhcyBjb3BpZWQgZnJvbQogICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2ZmNTUyMDEyLmFzcHggYXMgdGhlIHJlcXVpcmVkCi0gICBpbmNsdWRlIGRvZXNuJ3Qgc2VlbSB0byBiZSBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKLSAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gKi8KLXR5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0RBVEFfQlVGRkVSIHsKKyAgIGluY2x1ZGUga21cbnRpZnMuaCBpc24ndCBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKKyAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gVXNlIHVuaXF1ZSBuYW1lcyB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoCisgICB0aGUgc3RydWN0dXJlIGFzIGRlZmluZWQgYnkgTWluIEdXLiAqLwordHlwZWRlZiBzdHJ1Y3QgewogICAgIFVMT05HIFJlcGFyc2VUYWc7CiAgICAgVVNIT1JUIFJlcGFyc2VEYXRhTGVuZ3RoOwogICAgIFVTSE9SVCBSZXNlcnZlZDsKQEAgLTM4LDExICszOSwxMSBAQAogICAgICAgICAgICAgVUNIQVIgIERhdGFCdWZmZXJbMV07CiAgICAgICAgIH0gR2VuZXJpY1JlcGFyc2VCdWZmZXI7CiAgICAgfTsKLX0gUkVQQVJTRV9EQVRBX0JVRkZFUiwgKlBSRVBBUlNFX0RBVEFfQlVGRkVSOworfSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiwgKl9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUjsKIAotI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKLSNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKKyNkZWZpbmUgX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgXAorICAgIEZJRUxEX09GRlNFVChfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiwgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCisjZGVmaW5lIF9QeV9NQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IDQwYzE3NjAuLmMxYTliZTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtODksNyArODksNyBAQAogfQogCiBzdGF0aWMgaW50Ci1YeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eG1vZHVsZS5jIGIvTW9kdWxlcy94eG1vZHVsZS5jCmluZGV4IDg1MjMwZDkuLjA3NjQ0MDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKQEAgLTc2LDcgKzc2LDcgQEAKIH0KIAogc3RhdGljIGludAotWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK1h4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IDc0NzNhOGYuLjU5MDQ2YWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtOTA3LDEwICs5MDcsOCBAQAogICAgIGZwID0gX1B5X2ZvcGVuX29iaihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7Ci0gICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFppcEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGZjY2I2MTYuLmNmZTdmODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiB9IGNvbXBvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCi16bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY2hhciAqbXNnKQoremxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBjb25zdCBjaGFyICp6bXNnID0gWl9OVUxMOwogICAgIC8qIEluIGNhc2Ugb2YgYSB2ZXJzaW9uIG1pc21hdGNoLCB6c3QubXNnIHdvbid0IGJlIGluaXRpYWxpemVkLgpAQCAtMTk5LDE4ICsxOTksMTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHpsaWIuY29tcHJlc3MKIAotICAgIGJ5dGVzOiBQeV9idWZmZXIKKyAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC4KLSAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KLSAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4KICAgICAvCisgICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCisgICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlNjRjMmMzMDc2MzIxYTAgaW5wdXQ9YmUzYWJlOTkzNGJkYTRiM10qLworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4MDkwNmQ3M2Y2Mjk0YzggaW5wdXQ9NjM4ZDU0YjYzMTVkYmVkM10qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC0yMTgsOCArMjE4LDggQEAKICAgICBpbnQgZXJyLCBmbHVzaDsKICAgICB6X3N0cmVhbSB6c3Q7CiAKLSAgICBpYnVmID0gYnl0ZXMtPmJ1ZjsKLSAgICBpYnVmbGVuID0gYnl0ZXMtPmxlbjsKKyAgICBpYnVmID0gZGF0YS0+YnVmOworICAgIGlidWZsZW4gPSBkYXRhLT5sZW47CiAKICAgICB6c3Qub3BhcXVlID0gTlVMTDsKICAgICB6c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKQEAgLTMxOCwxMSArMzE4LDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQ29tcHJlc3NlZCBkYXRhLgorICAgIC8KICAgICB3Yml0czogaW50KGNfZGVmYXVsdD0iTUFYX1dCSVRTIikgPSBNQVhfV0JJVFMKICAgICAgICAgVGhlIHdpbmRvdyBidWZmZXIgc2l6ZSBhbmQgY29udGFpbmVyIGZvcm1hdC4KICAgICBidWZzaXplOiBzc2l6ZV90KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSBERUZfQlVGX1NJWkUKICAgICAgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLgotICAgIC8KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTMzMCw3ICszMzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9YzEzZGQyYzU2OTZjZDE3Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9MjE5NjA5MzYyMDhlOWE1Yl0qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC03MjEsOSArNzIxLDkgQEAKICAgICAgICAgICAgIG5ld19kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdfc2l6ZSk7CiAgICAgICAgICAgICBpZiAobmV3X2RhdGEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT51bnVzZWRfZGF0YSksIG9sZF9zaXplKTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT56c3QubmV4dF9pbiwgbGVmdF9zaXplKTsKICAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bnVzZWRfZGF0YSwgbmV3X2RhdGEpOwogICAgICAgICAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKQEAgLTc1MCwxMSArNzUwLDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgVGhlIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuCisgICAgLwogICAgIG1heF9sZW5ndGg6IHNzaXplX3QgPSAwCiAgICAgICAgIFRoZSBtYXhpbXVtIGFsbG93YWJsZSBsZW5ndGggb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhLgogICAgICAgICBVbmNvbnN1bWVkIGlucHV0IGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4KICAgICAgICAgdGhlIHVuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUuCi0gICAgLwogCiBSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuCiAKQEAgLTc2Niw3ICs3NjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1kNmRlOWI1M2M0NTY2YjhhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1iODVhMjEyYTAxMmI3NzBhXSovCiB7CiAgICAgaW50IGVyciA9IFpfT0s7CiAgICAgUHlfc3NpemVfdCBpYnVmbGVuLCBvYnVmbGVuID0gREVGX0JVRl9TSVpFLCBoYXJkX2xpbWl0OwpAQCAtMTMzMyw3ICsxMzMzLDcgQEAKICJ6bGliIGxpYnJhcnksIHdoaWNoIGlzIGJhc2VkIG9uIEdOVSB6aXAuXG4iCiAiXG4iCiAiYWRsZXIzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0uXG4iCi0iY29tcHJlc3Moc3RyaW5nWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBzdHJpbmcsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgaW4gMC05LlxuIgorImNvbXByZXNzKGRhdGFbLCBsZXZlbF0pIC0tIENvbXByZXNzIGRhdGEsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgMC05IG9yIC0xLlxuIgogImNvbXByZXNzb2JqKFtsZXZlbFssIC4uLl1dKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uXG4iCiAiZGVjb21wcmVzcyhzdHJpbmcsW3diaXRzXSxbYnVmc2l6ZV0pIC0tIERlY29tcHJlc3NlcyBhIGNvbXByZXNzZWQgc3RyaW5nLlxuIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDg4MjA1YmQuLmQ4Mzg4NTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTMyLDggKzMyLDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICB2ID0gKFB5T2JqZWN0ICopby0+b2JfdHlwZTsKICAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMzcsMTIgKzEzOSwxNiBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKLSAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpCi0gICAgICAgIHJldHVybiBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICAgICAgYXNzZXJ0KChpdGVtICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CiAKICAgICBpZiAoby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2UpIHsKICAgICAgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewpAQCAtNjY5LDEzICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihfX2Zvcm1hdF9fKTsKIAorICAgIGlmIChmb3JtYXRfc3BlYyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2soZm9ybWF0X3NwZWMpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmb3JtYXRfc3BlYyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIGNvbW1vbiB0eXBlcy4gKi8KKyAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBJZiBubyBmb3JtYXRfc3BlYyBpcyBwcm92aWRlZCwgdXNlIGFuIGVtcHR5IHN0cmluZyAqLwogICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMKSB7CiAgICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgZm9ybWF0X3NwZWMgPSBlbXB0eTsKICAgICB9CiAKLSAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kIChhIGJvcnJvd2VkIHJlZmVyZW5jZSkgKi8KKyAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kICovCiAgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCkBAIC0xMTIyLDggKzExNDYsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX25lZ2F0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9uZWdhdGl2ZSkobyk7CkBAIC0xMTM2LDggKzExNjIsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX3Bvc2l0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9wb3NpdGl2ZSkobyk7CkBAIC0xMTUwLDggKzExNzgsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludmVydCkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfaW52ZXJ0KShvKTsKQEAgLTExNjQsOCArMTE5NCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfYWJzb2x1dGUpCiAgICAgICAgIHJldHVybiBtLT5uYl9hYnNvbHV0ZShvKTsKQEAgLTExODEsOCArMTIxMywxMCBAQAogUHlOdW1iZXJfSW5kZXgoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTI2NSw0MiArMTI5OSw1NSBAQAogUHlPYmplY3QgKgogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG8pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIG87CiAgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW50KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBpbnQgKi8KLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHRydW5jX2Z1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuY19mdW5jKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlPYmplY3QgKmludF9pbnN0YW5jZTsKKyAgICAgICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0cnVuY19mdW5jKTsKLSAgICAgICAgaWYgKHRydW5jYXRlZCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVjayh0cnVuY2F0ZWQpKQotICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlZDsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICAvKiBfX3RydW5jX18gaXMgc3BlY2lmaWVkIHRvIHJldHVybiBhbiBJbnRlZ3JhbCB0eXBlLAogICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGFuIGludC4gKi8KLSAgICAgICAgbSA9IHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOworICAgICAgICBtID0gcmVzdWx0LT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIGlmIChtID09IE5VTEwgfHwgbS0+bmJfaW50ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgIl9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGludF9pbnN0YW5jZSA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHRydW5jYXRlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOwotICAgICAgICByZXR1cm4gaW50X2luc3RhbmNlOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChyZXN1bHQpKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMjIsNyArMTM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShvKSwgMTApOwogCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvLCAmdmlldywgUHlCVUZfU0lNUExFKSA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsICpieXRlczsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOwogCiAgICAgICAgIC8qIENvcHkgdG8gTlVMLXRlcm1pbmF0ZWQgYnVmZmVyLiAqLwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKil2aWV3LmJ1Ziwgdmlldy5sZW4pOwpAQCAtMTM0NiwyMyArMTM5Myw0MyBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICByZXR1cm4gbzsKKyAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9mbG9hdCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgZmxvYXQgKi8KICAgICAgICAgUHlPYmplY3QgKnJlcyA9IG0tPm5iX2Zsb2F0KG8pOwotICAgICAgICBpZiAocmVzICYmICFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgZG91YmxlIHZhbDsKKyAgICAgICAgaWYgKCFyZXMgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICJfX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogSXNzdWUgIzI2OTgzOiB3YXJuIGlmICdyZXMnIG5vdCBvZiBleGFjdCB0eXBlIGZsb2F0LiAqLworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHZhbCk7CiAgICAgfQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pKSB7IC8qIEEgZmxvYXQgc3ViY2xhc3Mgd2l0aCBuYl9mbG9hdCA9PSBOVUxMICovCi0gICAgICAgIFB5RmxvYXRPYmplY3QgKnBvID0gKFB5RmxvYXRPYmplY3QgKilvOwotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBvLT5vYl9mdmFsKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeUZsb2F0X0FTX0RPVUJMRShvKSk7CiAgICAgfQogICAgIHJldHVybiBQeUZsb2F0X0Zyb21TdHJpbmcobyk7CiB9CkBAIC0xNDMwLDggKzE0OTcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfY29uY2F0KQpAQCAtMTQ1NCw4ICsxNTIyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9yZXBlYXQpCkBAIC0xNDgzLDggKzE1NTIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9jb25jYXQpCkBAIC0xNTA3LDggKzE1NzcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfcmVwZWF0KQpAQCAtMTUzNiwxNiArMTYwNywxOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2l0ZW0pIHsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBpZiAobS0+c3FfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsID0gKCptLT5zcV9sZW5ndGgpKHMpOwotICAgICAgICAgICAgICAgIGlmIChsIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAobCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaSArPSBsOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTYwLDcgKzE2MzQsOSBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm1wOwogCi0gICAgaWYgKCFzKSByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIGlmICghcykgeworICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG1wID0gcy0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKICAgICBpZiAobXAgJiYgbXAtPm1wX3N1YnNjcmlwdCkgewpAQCAtMTY4Nyw4ICsxNzYzLDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGo7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsLWNhc2UgdGhlIGNvbW1vbiB0dXBsZSBhbmQgbGlzdCBjYXNlcywgZm9yIGVmZmljaWVuY3kuICovCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewpAQCAtMTc2OCw4ICsxODQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OyAgLyogcmVzdWx0IGxpc3QgKi8KICAgICBQeU9iamVjdCAqcnY7ICAgICAgICAgIC8qIHJldHVybiB2YWx1ZSBmcm9tIFB5TGlzdF9FeHRlbmQgKi8KIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTc4OSw4ICsxODY3LDkgQEAKIHsKICAgICBQeU9iamVjdCAqaXQ7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5X0lOQ1JFRih2KTsKQEAgLTE5NzMsOCArMjA1Miw5IEBACiB7CiAgICAgUHlPYmplY3QgKm9rZXksICpyOwogCi0gICAgaWYgKGtleSA9PSBOVUxMKQorICAgIGlmIChrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG9rZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXkpOwogICAgIGlmIChva2V5ID09IE5VTEwpCkBAIC0yMTE4LDIwICsyMTk4LDE4IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoZXJyX29jY3VycmVkKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKIAotICAgICAgICAgICAgaWYgKGZ1bmMpCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKLSAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOworICAgICAgICAgICAgfQogI2lmZGVmIFB5X0RFQlVHCiAgICAgICAgICAgICAvKiBFbnN1cmUgdGhhdCB0aGUgYnVnIGlzIGNhdWdodCBpbiBkZWJ1ZyBtb2RlICovCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJhIGZ1bmN0aW9uIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0Iik7CkBAIC0yMTQzLDcgKzIyMjEsNyBAQAogfQogCiBQeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICB0ZXJuYXJ5ZnVuYyBjYWxsOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0yMTUyLDYgKzIyMzAsOCBAQAogICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCiAgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOwogCiAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CiAgICAgaWYgKGNhbGwgPT0gTlVMTCkgewpAQCAtMjE2MywxMDggKzIyNDMsMzQzIEBACiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiAKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCitQeU9iamVjdCoKK19QeVN0YWNrX0FzVHVwbGUoUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncykKK3sKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcobmFyZ3MpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gc3RhY2tbaV07CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXJnczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICAvKiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgLyogU2xvdy1wYXRoOiBidWlsZCBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICAgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgdHVwbGUsIGt3YXJncyk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKKyAgICB9CisKK2V4aXQ6CisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgb2JqIGZvbGxvd2VkIGJ5IGFyZ3MuICovCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbOF07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IGFyZ2NvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBhcmdjb3VudCA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgaWYgKGFyZ2NvdW50ICsgMSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYygoYXJnY291bnQgKyAxKSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB1c2UgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgIHN0YWNrWzBdID0gb2JqOworICAgIG1lbWNweSgmc3RhY2tbMV0sCisgICAgICAgICAgICAgICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApLAorICAgICAgICAgICAgICBhcmdjb3VudCAqIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgYXJnY291bnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeVN0YWNrX0FzRGljdChQeU9iamVjdCAqKnZhbHVlcywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeU9iamVjdCAqa3dkaWN0OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlcysrOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSk7CisgICAgICAgIGFzc2VydChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgPT0gTlVMTCk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleSwgdmFsdWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrd2RpY3Q7Cit9CisKK1B5T2JqZWN0ICoqCitfUHlTdGFja19VbnBhY2tEaWN0KFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX2t3bmFtZXMsIFB5T2JqZWN0ICpmdW5jKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2ssICoqa3dzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3M7CisgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgIFB5T2JqZWN0ICprd25hbWVzOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKworICAgIG5rd2FyZ3MgPSAoa3dhcmdzICE9IE5VTEwpID8gUHlEaWN0X1NpemUoa3dhcmdzKSA6IDA7CisgICAgaWYgKCFua3dhcmdzKSB7CisgICAgICAgICpwX2t3bmFtZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdCluYXJncyA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHN0YWNrWzBdKSAtIChzaXplX3Qpbmt3YXJncykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGFjayA9IFB5TWVtX01hbGxvYygobmFyZ3MgKyBua3dhcmdzKSAqIHNpemVvZihzdGFja1swXSkpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGt3bmFtZXMgPSBQeVR1cGxlX05ldyhua3dhcmdzKTsKKyAgICBpZiAoa3duYW1lcyA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDb3B5IHBvc2l0aW9uIGFyZ3VtZW50cyAoYm9ycm93ZWQgcmVmZXJlbmNlcykgKi8KKyAgICBtZW1jcHkoc3RhY2ssIGFyZ3MsIG5hcmdzICogc2l6ZW9mKHN0YWNrWzBdKSk7CisKKyAgICBrd3N0YWNrID0gc3RhY2sgKyBuYXJnczsKKyAgICBwb3MgPSBpID0gMDsKKyAgICAvKiBUaGlzIGxvb3AgZG9lc24ndCBzdXBwb3J0IGxvb2t1cCBmdW5jdGlvbiBtdXRhdGluZyB0aGUgZGljdGlvbmFyeQorICAgICAgIHRvIGNoYW5nZSBpdHMgc2l6ZS4gSXQncyBhIGRlbGliZXJhdGUgY2hvaWNlIGZvciBzcGVlZCwgdGhpcyBmdW5jdGlvbiBpcworICAgICAgIGNhbGxlZCBpbiB0aGUgcGVyZm9ybWFuY2UgY3JpdGljYWwgaG90IGNvZGUuICovCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd25hbWVzLCBpLCBrZXkpOworICAgICAgICAvKiBUaGUgc3RhY2sgY29udGFpbnMgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgICAgICBrd3N0YWNrW2ldID0gdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAqcF9rd25hbWVzID0ga3duYW1lczsKKyAgICByZXR1cm4gc3RhY2s7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlOiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgaW4gUHl0aG9uL2NldmFsLmMgYW5kCisgICAgICAgX1B5QXJnX1BhcnNlU3RhY2soKS4gKi8KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxfZnVuY3Rpb25fdGFpbChQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXR2YWw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphOwotCi0gICAgICAgIGEgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgaWYgKGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhLCAwLCBhcmdzKTsKLSAgICAgICAgYXJncyA9IGE7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMShjYWxsYWJsZSwgYXJncyk7CiAgICAgfQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICB9CiAKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgogY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgdHlwZV9lcnJvcigiYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlIiwgZnVuYyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIGlmIChpc19zaXplX3QpCi0gICAgICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgaWYgKGlzX3NpemVfdCkgeworICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gIGV4aXQ6Ci0gICAgLyogYXJncyBnZXRzIGNvbnN1bWVkIGluIGNhbGxfZnVuY3Rpb25fdGFpbCAqLwotICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgpAQCAtMjI3NCw4ICsyNTg5LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMjg0LDYgKzI2MDAsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjI5NSw4ICsyNjEyLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzA1LDYgKzI2MjMsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMxNiw4ICsyNjM1LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMjUsNiArMjY0NSw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzM2LDggKzI2NTcsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC0yMzQ2LDM5ICsyNjY4LDYzIEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotb2JqYXJnc19ta3R1cGxlKHZhX2xpc3QgdmEpCitzdGF0aWMgUHlPYmplY3QgKioKK29iamFyZ3NfbWtzdGFjayhQeU9iamVjdCAqKnNtYWxsX3N0YWNrLCBQeV9zc2l6ZV90IHNtYWxsX3N0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSwgUHlfc3NpemVfdCAqcF9uYXJncykKIHsKLSAgICBpbnQgaSwgbiA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIHZhX2xpc3QgY291bnR2YTsKLSAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKLSAgICAgICAgUHlfVkFfQ09QWShjb3VudHZhLCB2YSk7CisgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICB2YV9jb3B5KGNvdW50dmEsIHZhKTsKIAotICAgIHdoaWxlICgoKFB5T2JqZWN0ICopdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopKSAhPSBOVUxMKQotICAgICAgICArK247Ci0gICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIG4gPiAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIHRtcCA9IChQeU9iamVjdCAqKXZhX2FyZyh2YSwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgdG1wKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgIG4gPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICphcmcgPSB2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKik7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbisrOworICAgIH0KKyAgICAqcF9uYXJncyA9IG47CisKKyAgICAvKiBDb3B5IGFyZ3VtZW50cyAqLworICAgIGlmIChuIDw9IHNtYWxsX3N0YWNrX3NpemUpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG4gKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBzdGFja1tpXSA9IHZhX2FyZyh2YSwgUHlPYmplY3QgKik7CisgICAgfQorICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICByZXR1cm4gc3RhY2s7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgUHlPYmplY3QgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0dldEF0dHIoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjM4NiwyOCArMjczMiwzNiBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjQxNSwzOCArMjc2OSw1MSBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgY2FsbGFibGUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKaW5kZXggM2ZhZDZkOC4uYThkNjk4MCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCkBAIC0yNzgsMzMgKzI3OCw2IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mb3JtYXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpieXRlc19pbiwgKmJ5dGVzX291dCwgKnJlczsKLSAgICBjaGFyICpieXRlc3RyaW5nOwotICAgIFB5X3NzaXplX3QgYnl0ZXNpemU7Ci0KLSAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFQeUJ5dGVBcnJheV9DaGVjayhzZWxmKSB8fCBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBieXRlc3RyaW5nID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGJ5dGVzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgYnl0ZXNfaW4gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ5dGVzdHJpbmcsIGJ5dGVzaXplKTsKLSAgICBpZiAoYnl0ZXNfaW4gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnl0ZXNfb3V0ID0gX1B5Qnl0ZXNfRm9ybWF0KGJ5dGVzX2luLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYnl0ZXNfaW4pOwotICAgIGlmIChieXRlc19vdXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChieXRlc19vdXQpOwotICAgIFB5X0RFQ1JFRihieXRlc19vdXQpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQogLyogRnVuY3Rpb25zIHN0dWZmZWQgaW50byB0aGUgdHlwZSBvYmplY3QgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTgyMiwyMyArNzk1LDI1IEBACiAgICAgfQogCiAgICAgLyogSXMgaXQgYW4gaW50PyAqLwotICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgY291bnQpKQorICAgIGlmIChQeUluZGV4X0NoZWNrKGFyZykpIHsKKyAgICAgICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIG1lbXNldChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIDAsIGNvdW50KTsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIGNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIG1lbXNldChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIDAsIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVXNlIHRoZSBidWZmZXIgQVBJICovCkBAIC0xMTIxLDE2MSArMTA5NiwyNyBAQAogI2luY2x1ZGUgInN0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCIKIAogCi0vKiBUaGUgZm9sbG93aW5nIFB5X0xPQ0FMX0lOTElORSBhbmQgUHlfTE9DQUwgZnVuY3Rpb25zCi13ZXJlIGNvcGllZCBmcm9tIHRoZSBvbGQgY2hhciogc3R5bGUgc3RyaW5nIG9iamVjdC4gKi8KLQotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQotewotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgY2hhciBieXRlOwotICAgIFB5X2J1ZmZlciBzdWJidWY7Ci0gICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwotICAgIFB5X3NzaXplX3QgcmVzOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICBpZiAoc3Vib2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotICAgIGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZmluZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKLSJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic2VjdGlvbiBzdWIgaW5cblwKLWJ5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAotYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY291bnQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47Ci0gICAgY2hhciBieXRlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLQotICAgIFB5X2J1ZmZlciB2c3ViOwotICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzdWJfb2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIHN1YiA9IHZzdWIuYnVmOwotICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuY2xlYXIKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgYnl0ZWFycmF5LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NsZWFyX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lNTI0ZmQzMzBhYmNkYzE4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lZDZlZGFlOWRlNDQ3YWM0XSovCiB7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCAwKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI4NSwyNTMgKzExMjYsNzIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jb3B5CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm4gYSBjb3B5IG9mIEIuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NmQ1ZDI5NzVhYTBmMzNmM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NjU5N2IwYzAxYmNjYWE5ZV0qLwogewogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKLSJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2luZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JmaW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmluZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yaW5kZXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQogc3RhdGljIGludAogYnl0ZWFycmF5X2NvbnRhaW5zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgICAgIFB5X3NzaXplX3QgcG9zOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCi0KLS8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiBzZWxmCi0gKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCi0gKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCi0gKi8KLVB5X0xPQ0FMKGludCkKLV9ieXRlYXJyYXlfdGFpbG1hdGNoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLSAgICBQeV9idWZmZXIgdnN1YnN0cjsKLSAgICBpbnQgcnYgPSAwOwotCi0gICAgc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZ2c3Vic3RyLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCt2c3Vic3RyLmxlbiA+IGxlbikgewotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogZW5kc3dpdGggKi8KLSAgICAgICAgaWYgKGVuZC1zdGFydCA8IHZzdWJzdHIubGVuIHx8IHN0YXJ0ID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZW5kLXZzdWJzdHIubGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHZzdWJzdHIubGVuOwotICAgIH0KLSAgICBpZiAoZW5kLXN0YXJ0ID49IHZzdWJzdHIubGVuKQotICAgICAgICBydiA9ICEgbWVtY21wKHN0citzdGFydCwgdnN1YnN0ci5idWYsIHZzdWJzdHIubGVuKTsKLQotZG9uZToKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3Vic3RyKTsKLSAgICByZXR1cm4gcnY7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKHN0YXJ0c3dpdGhfX2RvY19fLAotIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1wcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3RhcnRzd2l0aChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLVB5RG9jX1NUUlZBUihlbmRzd2l0aF9fZG9jX18sCi0iQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2VuZHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19lbmRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHRhYmxlOiBvYmplY3QKICAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KLSAgICBbCi0gICAgZGVsZXRlY2hhcnM6IG9iamVjdAotICAgIF0KICAgICAvCisgICAgZGVsZXRlIGFzIGRlbGV0ZWNoYXJzOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKIAogUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiAKLUFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC4KIFRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmViYzg2YTlhMWZmMDgzIGlucHV0PWI3NDlhZDg1ZjQ4NjA4MjRdKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZhOGYwMWMyYTc0ZTQ0NiBpbnB1dD1jZmZmOTU2ZDRkMTI3YTliXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CkBAIC0xNTc0LDcgKzEyMzQsNyBAQAogICAgIHJlc3VsdCA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgaW5sZW4pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmICh2ZGVsLmxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKQEAgLTE2MDAsOCArMTI2MCw3IEBACiAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCppbnB1dCsrKTsKICAgICAgICAgaWYgKHRyYW5zX3RhYmxlW2NdICE9IC0xKQotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdKSA9PSBjKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdOwogICAgIH0KICAgICAvKiBGaXggdGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KICAgICBpZiAoaW5sZW4gPiAwKQpAQCAtMTY0NCw0OTMgKzEzMDMsNiBAQAogfQogCiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0KLS8qIEJ5dGVzIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJldHVybl9zZWxmKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotewotICAgIC8qIGFsd2F5cyByZXR1cm4gYSBuZXcgYnl0ZWFycmF5ICovCi0gICAgcmV0dXJuIChQeUJ5dGVBcnJheU9iamVjdCAqKVB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBpOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OwotCi0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotCi0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dC1zZWxmX3MpOwotICAgICpzdGFydCA9IHRvX2M7Ci0gICAgc3RhcnQrKzsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICpuZXh0ID0gdG9fYzsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCtvZmZzZXQ7Ci0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBieXRlcyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIGJ5dGVzIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBieXRlcyAqLwotICAgIGlmIChQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAodG9fbGVuID09IDApIHsKLSAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgYnl0ZXMgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIGJ5dGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgICAgICBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCi0gICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihzZWxmLCBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotfQotCi0KIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXBsYWNlCiAKQEAgLTIxNTIsOSArMTMyNCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqbmV3LCBQeV9zc2l6ZV90IGNvdW50KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzOTg4NGM0ZGM1OTQxMmEgaW5wdXQ9YWEzNzlkOTg4NjM3YzdmYl0qLwogewotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVBcnJheU9iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKKyAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2UoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTIyMDIsNyArMTM3NCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjE4LDcgKzEzODksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTdkN2ZlMzdiMTY5NmQ1MDZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTg2Zjg5MjIzODkyYjcwYjVdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjI0MCw3ICsxNDExLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5ycGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjU2LDcgKzE0MjYsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD05YjhjZDU0MGMxYjc1ODUzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD01ZjQwOTRmMmRlODdjOGYzXSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKQEAgLTIzMTQsMTQgKzE0ODQsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXZlcnNlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NzkzM2E0OTliODU5N2JkMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NTQzMzU2MzE5ZmM3ODU1N10qLwogewogICAgIGNoYXIgc3dhcCwgKmhlYWQsICp0YWlsOwogICAgIFB5X3NzaXplX3QgaSwgaiwgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yMzUwLDcgKzE1MTgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Lmluc2VydAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdAogICAgICAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLgogICAgIGl0ZW06IGJ5dGVzdmFsdWUKQEAgLTIzNjIsNyArMTUyOSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9ODMzNzY2ODM2YmEzMGUxZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9YjJiNWQwN2U5ZGU2YzA3MF0qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmOwpAQCAtMjM5Miw3ICsxNTU5LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5hcHBlbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4KICAgICAvCkBAIC0yNDAyLDcgKzE1NjgsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2FwcGVuZF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgaXRlbSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PWFlNTZlYTg3MzgwNDA3Y2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PTIwZDZiZWMzZDEzNDA1OTNdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogCkBAIC0yNDIyLDcgKzE1ODgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmV4dGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVyYWJsZV9vZl9pbnRzOiBvYmplY3QKICAgICAgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4KICAgICAvCkBAIC0yNDMyLDcgKzE1OTcsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2V4dGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2ludHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jZTgzYTVkNzViNzBkODUwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jNjE3YjNhOTMyNDliYTI4XSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbSwgKmJ5dGVhcnJheV9vYmo7CiAgICAgUHlfc3NpemVfdCBidWZfc2l6ZSA9IDAsIGxlbiA9IDA7CkBAIC0yNTE3LDcgKzE2ODIsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnBvcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdCA9IC0xCiAgICAgICAgIFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIHJlbW92ZSB0aGUgaXRlbS4KICAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZW1vdmUgdGhlIGxhc3QgaXRlbS4KQEAgLTI1MzAsNyArMTY5NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcG9wX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0wNzk3ZTZjMGNhOWQ1YTg1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0zNTkxZGYyZDA2YzBkMjM3XSovCiB7CiAgICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yNTYyLDcgKzE3MjYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlbW92ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICB2YWx1ZTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgdmFsdWUgdG8gcmVtb3ZlLgogICAgIC8KQEAgLTI1NzIsMjAgKzE3MzUsMjAgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZW1vdmVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9NDc1NjBiMTFmZDg1NmMyNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9MTIxODMxMjQwY2Q1MWRkZl0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgUHlfc3NpemVfdCB3aGVyZSwgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGNoYXIgKndoZXJlID0gbWVtY2hyKGJ1ZiwgdmFsdWUsIG4pOwogCi0gICAgaWYgKCF3aGVyZSkgeworICAgIHdoZXJlID0gc3RyaW5nbGliX2ZpbmRfY2hhcihidWYsIG4sIHZhbHVlKTsKKyAgICBpZiAod2hlcmUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFsdWUgbm90IGZvdW5kIGluIGJ5dGVhcnJheSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFfY2FucmVzaXplKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1lbW1vdmUod2hlcmUsIHdoZXJlICsgMSwgYnVmICsgbiAtIHdoZXJlKTsKKyAgICBtZW1tb3ZlKGJ1ZiArIHdoZXJlLCBidWYgKyB3aGVyZSArIDEsIG4gLSB3aGVyZSk7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuIC0gMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjU5NSw4ICsxNzU4LDggQEAKIC8qIFhYWCBUaGVzZSB0d28gaGVscGVycyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYgYXJnc2l6ZSA9PSAxICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1sc3RyaXBfaGVscGVyKGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKLSAgICAgICAgICAgICAgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCitsc3RyaXBfaGVscGVyKGNvbnN0IGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCiB7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICB3aGlsZSAoaSA8IG15c2l6ZSAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjYwNSw4ICsxNzY4LDggQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLXJzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK3JzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSBteXNpemUgLSAxOwogICAgIHdoaWxlIChpID49IDAgJiYgbWVtY2hyKGFyZ3B0ciwgKHVuc2lnbmVkIGNoYXIpIG15cHRyW2ldLCBhcmdzaXplKSkKQEAgLTI4MDcsMjcgKzE5NzAsMTAgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZWFycmF5LmZyb21oZXgKIAotICAgIGNsczogc2VsZih0eXBlPSJQeU9iamVjdCoiKQogICAgIHN0cmluZzogdW5pY29kZQogICAgIC8KIApAQCAtMjgzOCw1MSArMTk4NCwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzZGE2MDEyOWIzNzAwYyBpbnB1dD05MDdiYmQyZDM0ZDkzNjdhXSovCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZjBmMGI2ZDMwZmIzYmEwIGlucHV0PWYwMzNhMTZkMWZiMjFmNDhdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3Ynl0ZXM7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKLSAgICBpbnQgdG9wLCBib3Q7Ci0gICAgdm9pZCAqZGF0YTsKLSAgICB1bnNpZ25lZCBpbnQga2luZDsKLQotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwotCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld2J5dGVzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcobmV3Ynl0ZXMpOwotICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKLSAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCB0eXBlID09ICZQeUJ5dGVBcnJheV9UeXBlKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlQXJyYXlfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CiAgICAgfQotICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUobmV3Ynl0ZXMsIGopIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXR1cm4gbmV3Ynl0ZXM7Ci0KLSAgZXJyb3I6Ci0gICAgUHlfREVDUkVGKG5ld2J5dGVzKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeURvY19TVFJWQVIoaGV4X19kb2NfXywKQEAgLTI5MzcsMTQgKzIwNDcsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9fIGFzIGJ5dGVhcnJheV9yZWR1Y2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD1mYmIwN2RlNGQxMDJhMDNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD00NGI1NzM3YWRhNjJkZDNmXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIDIpOwogfQpAQCAtMjk1Miw3ICsyMDYwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9leF9fIGFzIGJ5dGVhcnJheV9yZWR1Y2VfZXgKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgcHJvdG86IGludCA9IDAKICAgICAvCiAKQEAgLTI5NjEsNyArMjA2OCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PTBlMDkxYTQyY2E2ZGJkOTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PWYxMjliYzFhMWFhMTUxZWVdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgcHJvdG8pOwogfQpAQCAtMjk2OSwxNCArMjA3NiwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fc2l6ZW9mX18gYXMgYnl0ZWFycmF5X3NpemVvZgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnl0ZWFycmF5IG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NpemVvZl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9NmIyM2QzMDUzNjJiNDYyYl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9ZTI3MzIwZmQ5OGE0YmM1YV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0zMDE3LDE5ICsyMTIyLDIyIEBACiAgICAgQllURUFSUkFZX0FQUEVORF9NRVRIT0RERUYKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBfUHlfY2VudGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRgotICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYKLSAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LAorICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9lbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgZXhwYW5kdGFic19fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAogICAgIEJZVEVBUlJBWV9FWFRFTkRfTUVUSE9EREVGCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCi0gICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRgogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCkBAIC0zMDQ2LDcgKzIxNTQsNyBAQAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX01BS0VUUkFOU19NRVRIT0RERUYKQEAgLTMwNTUsMjMgKzIxNjMsMjMgQEAKICAgICBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCi0gICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X3JpbmRleF9fZG9jX199LAorICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9yanVzdF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURUFSUkFZX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCi0gICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKKyAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCBfUHlfemZpbGxfX2RvY19ffSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTMwODAsNyArMjE4OCw3IEBACiB7CiAgICAgaWYgKCFQeUJ5dGVBcnJheV9DaGVjayh2KSkKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBieXRlYXJyYXlfZm9ybWF0KChQeUJ5dGVBcnJheU9iamVjdCAqKXYsIHcpOworICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVBcnJheV9BU19TVFJJTkcodiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpLCB3LCAxKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlYXJyYXlfYXNfbnVtYmVyID0gewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwppbmRleCBhMjk5OTE1Li5kNWM0ZmU2IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYworKysgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwpAQCAtMSwzICsxLDQgQEAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApAQCAtMjc3LDcgKzI3OCw3IEBACiBjaGFyYWN0ZXJzLCBhbGwgcmVtYWluaW5nIGNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlcmNhc2UuIik7CiAKIHZvaWQKLV9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZCA9IDA7CkBAIC0zMDYsNyArMzA3LDcgQEAKIGFuZCB0aGUgcmVzdCBsb3dlci1jYXNlZC4iKTsKIAogdm9pZAotX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0zMzYsNyArMzM3LDcgQEAKIHRvIGxvd2VyY2FzZSBBU0NJSSBhbmQgdmljZSB2ZXJzYS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTM4NywzICszODgsNDI3IEBACiAKICAgICByZXR1cm4gcmVzOwogfQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiBjaGFyCisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAxCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCisKK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKK2FuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagorYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKK3N0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCisqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorcGFyc2VfYXJnc19maW5kc19ieXRlKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7CisgICAgUHlfc3NpemVfdCBpdmFsOworICAgIFB5T2JqZWN0ICplcnI7CisKKyAgICBpZighc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKKyAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgaWYgKGl2YWwgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKKyAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqc3Vib2JqID0gTlVMTDsKKyAgICAqYnl0ZSA9IChjaGFyKWl2YWw7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCisjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCisgICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorZmluZF9pbnRlcm5hbChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKK3sKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9idWZmZXIgc3ViYnVmOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoZnVuY3Rpb25fbmFtZSwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0yOworCisgICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKKyAgICAgICAgcmVzID0gLTE7CisgICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxKSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfY2hhcigKKyAgICAgICAgICAgICAgICBzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgKnN1Yik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgaWYgKHJlcyA+PSAwKQorICAgICAgICAgICAgcmVzICs9IHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICBpZiAoc3Vib2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZmluZF9fZG9jX18sCisiQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJmaW5kIiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfaW5kZXhfX2RvY19fLAorIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK0xpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJpbmRleCIsIGFyZ3MsICsxKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JmaW5kX19kb2NfXywKKyJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKK3N1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAorYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAorXG5cCitSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgInJmaW5kIiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmluZGV4X19kb2NfXywKKyJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmluZGV4IiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY291bnRfX2RvY19fLAorIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAorYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCithcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2NvdW50KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzdWJfb2JqOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKworICAgIFB5X2J1ZmZlciB2c3ViOworICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJfb2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc3ViX29iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisKKyAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCisgICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCisgICAgICAgICk7CisKKyAgICBpZiAoc3ViX29iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisKKyAgICByZXR1cm4gY291bnRfb2JqOworfQorCitpbnQKK19QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIE5VTEwpOworICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfYnVmZmVyIHZhcmc7CisgICAgICAgIFB5X3NzaXplX3QgcG9zOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgICAgICByZXR1cm4gcG9zID49IDA7CisgICAgfQorICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbWVtY2hyKHN0ciwgKGludCkgaXZhbCwgbGVuKSAhPSBOVUxMOworfQorCisKKy8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiB0aGUgYnVmZmVyCisgKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCisgKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCisgKi8KK3N0YXRpYyBpbnQKK3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQoreworICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzbGVuOworCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgeworICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOworICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7CisgICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7CisgICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KKyAgICAgICAgaWYgKHN0YXJ0ICsgc2xlbiA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogZW5kc3dpdGggKi8KKyAgICAgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICAgICAgaWYgKGVuZCAtIHNsZW4gPiBzdGFydCkKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKKyAgICB9CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbikKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICBpZiAobWVtY21wKHN0ciArIHN0YXJ0LCBzdWIsIHNsZW4pICE9IDApCisgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7CisgICAgcmV0dXJuIDE7CisKK25vdGZvdW5kOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeV9ieXRlc190YWlsbWF0Y2goY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CisgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBsZW4sIHN1Ym9iaiwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciBhIHR1cGxlIG9mIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9zdGFydHN3aXRoX19kb2NfXywKKyJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCitXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCitXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAorcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfc3RhcnRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgInN0YXJ0c3dpdGgiLCBhcmdzLCAtMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2VuZHN3aXRoX19kb2NfXywKKyJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKK1xuXAorUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitzdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19lbmRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgImVuZHN3aXRoIiwgYXJncywgKzEpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9leHBhbmR0YWJzX19kb2NfXywKKyJCLmV4cGFuZHRhYnModGFic2l6ZT04KSAtPiBjb3B5IG9mIEJcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLlxuXAorSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2xqdXN0X19kb2NfXywKKyJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JqdXN0X19kb2NfXywKKyJCLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2NlbnRlcl9fZG9jX18sCisiQi5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3pmaWxsX19kb2NfXywKKyJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgorIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc29iamVjdC5jIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCmluZGV4IDY3M2JiMDAuLjVkNDg0NDAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKIC8qW2NsaW5pYyBpbnB1dF0KLWNsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0KiIgIiZQeUJ5dGVzX1R5cGUiCitjbGFzcyBieXRlcyAiUHlCeXRlc09iamVjdCAqIiAiJlB5Qnl0ZXNfVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTFhMWQ5MTAyYWZjMWIwMGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdhMjM4Zjk2NWQ2NDg5MmJdKi8KIAogI2luY2x1ZGUgImNsaW5pYy9ieXRlc29iamVjdC5jLmgiCiAKQEAgLTMwLDYgKzMwLDEwIEBACiAqLwogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAorLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIF9QeUJ5dGVzV3JpdGVyX0dldFNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnN0cik7CisKIC8qCiAgICBGb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCksIHRoZSBwYXJhbWV0ZXIgYHN0cicgcG9pbnRzIHRvIGEgbnVsbC10ZXJtaW5hdGVkCiAgICBzdHJpbmcgY29udGFpbmluZyBleGFjdGx5IGBzaXplJyBieXRlcy4KQEAgLTExNiw3ICsxMjAsNyBAQAogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKIAotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CiAgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLwogICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOwpAQCAtMTU5LDcgKzE2Myw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKICAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKLSAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBudWxsc3RyaW5nID0gb3A7CkBAIC0xNzQsMTkwICsxNzgsMTg0IEBACiBQeU9iamVjdCAqCiBQeUJ5dGVzX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIHsKLSAgICB2YV9saXN0IGNvdW50OwotICAgIFB5X3NzaXplX3QgbiA9IDA7Ci0gICAgY29uc3QgY2hhciogZjsKICAgICBjaGFyICpzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7CisgICAgY29uc3QgY2hhciAqZjsKKyAgICBjb25zdCBjaGFyICpwOworICAgIFB5X3NzaXplX3QgcHJlYzsKKyAgICBpbnQgbG9uZ2ZsYWc7CisgICAgaW50IHNpemVfdGZsYWc7CisgICAgLyogTG9uZ2VzdCA2NC1iaXQgZm9ybWF0dGVkIG51bWJlcnM6CisgICAgICAgLSAiMTg0NDY3NDQwNzM3MDk1NTE2MTVcMCIgKDIxIGJ5dGVzKQorICAgICAgIC0gIi05MjIzMzcyMDM2ODU0Nzc1ODA4XDAiICgyMSBieXRlcykKKyAgICAgICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlIChpdCBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLikKIAotICAgIFB5X1ZBX0NPUFkoY291bnQsIHZhcmdzKTsKLSAgICAvKiBzdGVwIDE6IGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQotICAgICAgICAgICAgICAgIDsKKyAgICAgICBMb25nZXN0IDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgorICAgICAgICIweGZmZmZmZmZmZmZmZmZmZmZcMCIgKDE5IGJ5dGVzKS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsyMV07CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgoKmYgPT0gJ2wnIHx8ICpmID09ICd6JykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKQotICAgICAgICAgICAgICAgICsrZjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdkJzogY2FzZSAndSc6IGNhc2UgJ2knOiBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIDIwIGJ5dGVzIGlzIGVub3VnaCB0byBob2xkIGEgNjQtYml0Ci0gICAgICAgICAgICAgICAgICAgaW50ZWdlci4gIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgVGhpcyBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLiAqLwotICAgICAgICAgICAgICAgIG4gKz0gMjA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzID0gdmFfYXJnKGNvdW50LCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIG1heGltdW0gNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246Ci0gICAgICAgICAgICAgICAgICogMHhmZmZmZmZmZmZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICogc28gMTkgY2hhcmFjdGVycyBpcyBlbm91Z2guCi0gICAgICAgICAgICAgICAgICogWFhYIEkgY291bnQgMTggLS0gd2hhdCdzIHRoZSBleHRyYSBmb3I/Ci0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgbiArPSAxOTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLyogaWYgd2Ugc3R1bWJsZSB1cG9uIGFuIHVua25vd24KLSAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGNvZGUsIGNvcHkgdGhlIHJlc3Qgb2YKLSAgICAgICAgICAgICAgICAgICB0aGUgZm9ybWF0IHN0cmluZyB0byB0aGUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgICAgc3RyaW5nLiAod2UgY2Fubm90IGp1c3Qgc2tpcCB0aGUKLSAgICAgICAgICAgICAgICAgICBjb2RlLCBzaW5jZSB0aGVyZSdzIG5vIHdheSB0byBrbm93Ci0gICAgICAgICAgICAgICAgICAgd2hhdCdzIGluIHRoZSBhcmd1bWVudCBsaXN0KSAqLwotICAgICAgICAgICAgICAgIG4gKz0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGdvdG8gZXhwYW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG4rKzsKLSAgICB9Ci0gZXhwYW5kOgotICAgIC8qIHN0ZXAgMjogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCi0gICAgICAgdXNlIHNwcmludGYgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgc2xvd2VyIFB5T1Nfc25wcmludGYuICovCi0gICAgc3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc3RybGVuKGZvcm1hdCkpOworICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoc3RyaW5nKTsKKyNkZWZpbmUgV1JJVEVfQllURVMoc3RyKSBcCisgICAgZG8geyBcCisgICAgICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHMsIChzdHIpLCBzdHJsZW4oc3RyKSk7IFwKKyAgICAgICAgaWYgKHMgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGYrKzsKKyAgICAgICAgaWYgKCpmICE9ICclJykgeworICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBwID0gZisrOworCisgICAgICAgIC8qIGlnbm9yZSB0aGUgd2lkdGggKGV4OiAxMCBpbiAiJTEwcyIpICovCisgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBwYXJzZSB0aGUgcHJlY2lzaW9uIChleDogMTAgaW4gIiUuMTBzIikgKi8KKyAgICAgICAgcHJlYyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnLicpIHsKKyAgICAgICAgICAgIGYrKzsKKyAgICAgICAgICAgIGZvciAoOyBQeV9JU0RJR0lUKCpmKTsgZisrKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IChwcmVjICogMTApICsgKCpmIC0gJzAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICgqZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIGhhbmRsZSB0aGUgbG9uZyBmbGFnICgnbCcpLCBidXQgb25seSBmb3IgJWxkIGFuZCAlbHUuCisgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCisgICAgICAgIGxvbmdmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICdsJyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnICgneicpLiAqLworICAgICAgICBzaXplX3RmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHN1YnRyYWN0IGJ5dGVzIHByZWFsbG9jYXRlZCBmb3IgdGhlIGZvcm1hdCBzdHJpbmcKKyAgICAgICAgICAgKGV4OiAyIGZvciAiJXMiKSAqLworICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGYgLSBwICsgMSk7CisKKyAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlCeXRlc19Gcm9tRm9ybWF0VigpOiAlYyBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxkIiwgdmFfYXJnKHZhcmdzLCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWx1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIldSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICh3ZSdyZSBvbmx5Ci0gICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBwcmVjaXNpb24gdmFsdWUsIGlmIGFueSkgKi8KLSAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQotICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICBuID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOworCisgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyKik7CisgICAgICAgICAgICBpID0gc3RybGVuKHApOworICAgICAgICAgICAgaWYgKHByZWMgPiAwICYmIGkgPiBwcmVjKQorICAgICAgICAgICAgICAgIGkgPSBwcmVjOworICAgICAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgcCwgaSk7CisgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCisgICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdYJykKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CisgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZShidWZmZXIrMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcsIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KLSAgICAgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICclJzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoKmYgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZpeCBtaW5fc2l6ZSBpZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogYyBoYXMgYmVlbiBjaGVja2VkIGZvciBvdmVyZmxvdyBpbiB0aGUgZmlyc3Qgc3RlcCAqLwotICAgICAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbHUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBpID0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGlmIChuID4gMCAmJiBpID4gbikKLSAgICAgICAgICAgICAgICAgICAgaSA9IG47Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHMsIHAsIGkpOwotICAgICAgICAgICAgICAgIHMgKz0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOwotICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCi0gICAgICAgICAgICAgICAgaWYgKHNbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBzWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gIT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW1vdmUocysyLCBzLCBzdHJsZW4ocykrMSk7Ci0gICAgICAgICAgICAgICAgICAgIHNbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgKnMrKyA9ICclJzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3RyY3B5KHMsIHApOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIC8qIGludmFsaWQgZm9ybWF0IHN0cmluZzogY29weSB1bmZvcm1hdHRlZCBzdHJpbmcgYW5kIGV4aXQgKi8KKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKHApOworICAgICAgICAgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKyAgICAgICAgfQogICAgIH0KIAotIGVuZDoKLSAgICBfUHlCeXRlc19SZXNpemUoJnN0cmluZywgcyAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisjdW5kZWYgV1JJVEVfQllURVMKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisKKyBlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCkBAIC00MDksMTIgKzQwNywxNCBAQAogCiAvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5Qnl0ZXMgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCitzdGF0aWMgY2hhcioKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9yZXN1bHQsIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKIHsKICAgICBjaGFyICpwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CisgICAgc2l6ZV90IGxlbjsKIAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNDMxLDkgKzQzMSwyMiBAQAogCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworCisgICAgbGVuID0gc3RybGVuKHApOworICAgIGlmICh3cml0ZXIgIT0gTlVMTCkgeworICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBsZW4pOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbWVtY3B5KHN0ciwgcCwgbGVuKTsKKyAgICAgICAgUHlNZW1fRnJlZShwKTsKKyAgICAgICAgc3RyICs9IGxlbjsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICpwX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICByZXR1cm4gc3RyOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDczLDExICs0ODYsMTEgQEAKIHN0YXRpYyBpbnQKIGJ5dGVfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIGNoYXIgKnApCiB7Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKSB7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9HRVRfU0laRShhcmcpID09IDEpIHsKICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtNTU3LDM2ICs1NzAsMzYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0KLSAgIEZPUk1BVEJVRkxFTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaW4gd2hpY2ggdGhlIGludHMgJgotICAgY2hhcnMgYXJlIGZvcm1hdHRlZC4gWFhYIFRoaXMgaXMgYSBtYWdpYyBudW1iZXIuIEVhY2ggZm9ybWF0dGluZwotICAgcm91dGluZSBkb2VzIGJvdW5kcyBjaGVja2luZyB0byBlbnN1cmUgbm8gb3ZlcmZsb3csIGJ1dCBhIGJldHRlcgotICAgc29sdXRpb24gbWF5IGJlIHRvIG1hbGxvYyBhIGJ1ZmZlciBvZiBhcHByb3ByaWF0ZSBzaXplIGZvciBlYWNoCi0gICBmb3JtYXQuIEZvciBub3csIHRoZSBjdXJyZW50IHNvbHV0aW9uIGlzIHN1ZmZpY2llbnQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMjAKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKSAqLwogCiBQeU9iamVjdCAqCi1fUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCitfUHlCeXRlc19Gb3JtYXRFeChjb25zdCBjaGFyICpmb3JtYXQsIFB5X3NzaXplX3QgZm9ybWF0X2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBpbnQgdXNlX2J5dGVhcnJheSkKIHsKLSAgICBjaGFyICpmbXQsICpyZXM7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIGNoYXIgKnJlczsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbiwgYXJnaWR4OwotICAgIFB5X3NzaXplX3QgcmVzbGVuLCByZXNjbnQsIGZtdGNudDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudDsKICAgICBpbnQgYXJnc19vd25lZCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8ICFQeUJ5dGVzX0NoZWNrKGZvcm1hdCkgfHwgYXJncyA9PSBOVUxMKSB7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7Ci0gICAgZm10Y250ID0gUHlCeXRlc19HRVRfU0laRShmb3JtYXQpOwotICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgcmVzbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgZm10ID0gZm9ybWF0OworICAgIGZtdGNudCA9IGZvcm1hdF9sZW47CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKKworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGZtdGNudCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgaWYgKCF1c2VfYnl0ZWFycmF5KQorICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKwogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIGFyZ2xlbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgICAgIGFyZ2lkeCA9IDA7CkBAIC02MDAsMTggKzYxMywyMyBAQAogICAgICAgICAhUHlCeXRlQXJyYXlfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIGRpY3QgPSBhcmdzOwogICAgIH0KKwogICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CiAgICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKC0tcmVzY250IDwgMCkgewotICAgICAgICAgICAgICAgIHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgY2hhciAqcG9zOworCisgICAgICAgICAgICBwb3MgPSBzdHJjaHIoZm10ICsgMSwgJyUnKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBsZW4gPSBwb3MgLSBmbXQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0X2xlbiAtIChmbXQgLSBmb3JtYXQpOworICAgICAgICAgICAgYXNzZXJ0KGxlbiAhPSAwKTsKKworICAgICAgICAgICAgbWVtY3B5KHJlcywgZm10LCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKyAgICAgICAgICAgIGZtdCArPSBsZW47CisgICAgICAgICAgICBmbXRjbnQgLT0gKGxlbiAtIDEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLwpAQCAtNjI2LDEwICs2NDQsMTQgQEAKICAgICAgICAgICAgIGludCBzaWduOwogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgICAgICAgICAgY2hhciBvbmVjaGFyOyAvKiBGb3IgYnl0ZV9jb252ZXJ0ZXIoKSAqLworICAgICAgICAgICAgUHlfc3NpemVfdCBhbGxvYzsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgY2hhciAqYmVmb3JlOworI2VuZGlmCiAKICAgICAgICAgICAgIGZtdCsrOwogICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqa2V5c3RhcnQ7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2V5c3RhcnQ7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKQEAgLTY3Myw2ICs2OTUsOCBAQAogICAgICAgICAgICAgICAgIGFyZ2xlbiA9IC0xOwogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBmbGFncy4gRXhhbXBsZTogIiUraSIgPT4gZmxhZ3M9Rl9TSUdOLiAqLwogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKICAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CkBAIC02ODMsNiArNzA3LDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIHdpZHRoLiBFeGFtcGxlOiAiJTEwcyIgPT4gd2lkdGg9MTAgKi8KICAgICAgICAgICAgIGlmIChjID09ICcqJykgewogICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTcxNyw2ICs3NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgcHJlY2lzaW9uLiBFeGFtcGxlOiAiJS4zZiIgPT4gcHJlYz0zICovCiAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKQEAgLTc3MSwxMyArNzk5LDE5IEBACiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKKyAgICAgICAgICAgICAgICAvKiBsYXN0IHdyaXRlcjogZGlzYWJsZSB3cml0ZXIgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICBmaWxsID0gJyAnOwogICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gIiUiOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgKnJlcysrID0gJyUnOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgICAgICAvLyAlciBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYQogICAgICAgICAgICAgY2FzZSAnYSc6CkBAIC03OTAsNiArODI0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgIC8vICVzIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICViCiAgICAgICAgICAgICBjYXNlICdiJzoKQEAgLTc5OSwxMiArODM0LDQ5IEBACiAgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdpJzoKICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgYyAhPSAnWCcpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaW50IGFsdGVybmF0ZSA9IGZsYWdzICYgRl9BTFQ7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXNlOworCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChjKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICIndHlwZScgbm90IGluIFtkaXVveFhdIik7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMjsgLyogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICIlZCIgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcigmd3JpdGVyLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgYmFzZSwgYWx0ZXJuYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGxvbmcodiwgZmxhZ3MsIHByZWMsIGMpOwogICAgICAgICAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTgxNSwxNCArODg3LDI1IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjKTsKLSAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVmIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgTlVMTCwgJndyaXRlciwgcmVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgJnRlbXAsIE5VTEwsIHJlcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRlbXApOwogICAgICAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGVtcCk7CkBAIC04MzAsMjEgKzkxMywyOCBAQAogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgcGJ1ZiA9ICZvbmVjaGFyOwogICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVfY29udmVydGVyKHYsICZvbmVjaGFyKTsKICAgICAgICAgICAgICAgICBpZiAoIWxlbikKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IG9uZWNoYXI7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICclYycgKDB4JXgpICIKICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgYywgYywKLSAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0gZm9ybWF0KSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewogICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKQEAgLTg1OSwyOSArOTQ5LDMxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKKworICAgICAgICAgICAgYWxsb2MgPSB3aWR0aDsKKyAgICAgICAgICAgIGlmIChzaWduICE9IDAgJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGFsbG9jKys7CisgICAgICAgICAgICAvKiAyOiBzaXplIHByZWFsbG9jYXRlZCBmb3IgJXMgKi8KKyAgICAgICAgICAgIGlmIChhbGxvYyA+IDIpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHJlcywgYWxsb2MgLSAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGJlZm9yZSA9IHJlczsKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgc2lnbiBpZiBuZWVkZWQgKi8KICAgICAgICAgICAgIGlmIChzaWduKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwotICAgICAgICAgICAgICAgIHJlc2NudC0tOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIG51bWVyaWMgcHJlZml4IGZvciAieCIsICJYIiBhbmQgIm8iIGZvcm1hdHMKKyAgICAgICAgICAgICAgIGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkLgorICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdyaXRlICIweCIgZm9yIHRoZSAiJSN4IiBmb3JtYXQuICovCiAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICdvJyB8fCBjID09ICd4JyB8fCBjID09ICdYJykpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOwogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwpAQCAtODg5LDE4ICs5ODEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzY250IC09IDI7CiAgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgbGVuIC09IDI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhZCBsZWZ0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgZmlsbCwgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIHdpdGggc3BhY2VzOiB3cml0ZSBzaWduIGlmIG5lZWRlZCBhbmQvb3IgbnVtZXJpYworICAgICAgICAgICAgICAgcHJlZml4IGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkICovCiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBpZiAoc2lnbikKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKQEAgLTkxMSwxMyArMTAwNiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXMsIHBidWYsIGxlbik7CisKKyAgICAgICAgICAgIC8qIENvcHkgYnl0ZXMgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXMsIHBidWYsIGxlbik7CiAgICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgLyogUGFkIHJpZ2h0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgJyAnLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKQEAgLTkyNSwyMiArMTAyNCwzMSBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworCisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgY29tcHV0ZWQgdGhlIGV4YWN0IHNpemUgZm9yIHRoaXMgd3JpdGUgKi8KKyAgICAgICAgICAgIGFzc2VydCgocmVzIC0gYmVmb3JlKSA9PSBhbGxvYyk7CisjZW5kaWYKICAgICAgICAgfSAvKiAnJScgKi8KKworICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IGZtdGNudCA8IDAgfHwgdXNlX2J5dGVhcnJheSk7CiAgICAgfSAvKiB1bnRpbCBlbmQgKi8KKwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHJlcyk7CiAKICBlcnJvcjoKLSAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05NjAsNjEgKzEwNjgsODggQEAKICAgIHRoZSBzdHJpbmcgaXMgVVRGLTggZW5jb2RlZCBhbmQgc2hvdWxkIGJlIHJlLWVuY29kZWQgaW4gdGhlCiAgICBzcGVjaWZpZWQgZW5jb2RpbmcuICAqLwogCi1QeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKK3N0YXRpYyBjaGFyICoKK19QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZShjb25zdCBjaGFyICoqcywgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnApCit7CisgICAgUHlPYmplY3QgKnUsICp3OworICAgIGNvbnN0IGNoYXIqIHQ7CisKKyAgICB0ID0gKnM7CisgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KKyAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkKKyAgICAgICAgdCsrOworICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgqcywgdCAtICpzLCBlcnJvcnMpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLworICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodSk7CisgICAgaWYgICh3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKKworICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLworICAgIHdyaXRlci0+bWluX3NpemUtLTsgICAvKiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMod3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUodykpOworICAgIFB5X0RFQ1JFRih3KTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICpzID0gdDsKKyAgICByZXR1cm4gcDsKK30KKworUHlPYmplY3QgKl9QeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZmlyc3RfaW52YWxpZF9lc2NhcGUpCiB7CiAgICAgaW50IGM7Ci0gICAgY2hhciAqcCwgKmJ1ZjsKKyAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIG5ld2xlbik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKKyAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUgPSBOVUxMOworCiAgICAgZW5kID0gcyArIGxlbjsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewogICAgICAgICAgIG5vbl9lc2M6Ci0gICAgICAgICAgICBpZiAocmVjb2RlX2VuY29kaW5nICYmICgqcyAmIDB4ODApKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnUsICp3OwotICAgICAgICAgICAgICAgIGNoYXIgKnI7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogdDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuOwotICAgICAgICAgICAgICAgIHQgPSBzOwotICAgICAgICAgICAgICAgIC8qIERlY29kZSBub24tQVNDSUkgYnl0ZXMgYXMgVVRGLTguICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKHQgPCBlbmQgJiYgKCp0ICYgMHg4MCkpIHQrKzsKLSAgICAgICAgICAgICAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgdCAtIHMsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgaWYoIXUpIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLwotICAgICAgICAgICAgICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICB1LCByZWNvZGVfZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgICAgIGlmICghdykgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOwotICAgICAgICAgICAgICAgIHIgPSBQeUJ5dGVzX0FTX1NUUklORyh3KTsKLSAgICAgICAgICAgICAgICBybiA9IFB5Qnl0ZXNfR0VUX1NJWkUodyk7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHIsIHJuKTsKLSAgICAgICAgICAgICAgICBwICs9IHJuOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgICAgICBzID0gdDsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIShyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpKSB7CiAgICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCBuZWVkIHRvIHJlY29kZSAqLworICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlciwgcCk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorCiAgICAgICAgIHMrKzsKLSAgICAgICAgaWYgKHM9PWVuZCkgeworICAgICAgICBpZiAocyA9PSBlbmQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFpbGluZyBcXCBpbiBzdHJpbmciKTsKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoICgqcysrKSB7CiAgICAgICAgIC8qIFhYWCBUaGlzIGFzc3VtZXMgQVNDSUkhICovCiAgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7CkBAIC0xMDM5LDI4ICsxMTc0LDE4IEBACiAgICAgICAgICAgICAqcCsrID0gYzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGlmIChzKzEgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkgJiYgUHlfSVNYRElHSVQoc1sxXSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeCA9IDA7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB4ID0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgIHggPSB4IDw8IDQ7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgICpwKysgPSB4OwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCkgeworICAgICAgICAgICAgICAgIGludCBkaWdpdDEsIGRpZ2l0MjsKKyAgICAgICAgICAgICAgICBkaWdpdDEgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1swXSldOworICAgICAgICAgICAgICAgIGRpZ2l0MiA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzFdKV07CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0MSA8IDE2ICYmIGRpZ2l0MiA8IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikoKGRpZ2l0MSA8PCA0KSArIGRpZ2l0Mik7CisgICAgICAgICAgICAgICAgICAgIHMgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdHMgKi8KKwogICAgICAgICAgICAgaWYgKCFlcnJvcnMgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgXFx4IGVzY2FwZSBhdCBwb3NpdGlvbiAlZCIsCkBAIC0xMDgyLDIxICsxMjA3LDQ5IEBACiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSkKICAgICAgICAgICAgICAgICBzKys7IC8qIGFuZCBhIGhleGRpZ2l0ICovCiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlID0gcy0xOyAvKiBCYWNrIHVwIG9uZSBjaGFyLCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBpbmNyZW1lbnRlZCBzLiAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICBzLS07CiAgICAgICAgICAgICBnb3RvIG5vbl9lc2M7IC8qIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5lc2NhcGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5dGVzIG1heSBmb2xsb3cuICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAtYnVmIDwgbmV3bGVuKQotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnYsIHAgLSBidWYpOwotICAgIHJldHVybiB2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKwogICBmYWlsZWQ6Ci0gICAgUHlfREVDUkVGKHYpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICpQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZykKK3sKKyAgICBjb25zdCBjaGFyKiBmaXJzdF9pbnZhbGlkX2VzY2FwZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgZXJyb3JzLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0X2ludmFsaWRfZXNjYXBlKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChmaXJzdF9pbnZhbGlkX2VzY2FwZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisKK30KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBvYmplY3QgYXBpICovCiAKQEAgLTEzNDgsMTIgKzE1MDEsMTIgQEAKICAgICB9CiAgICAgaSA9IDA7CiAgICAgaWYgKGkgPCBzaXplKSB7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CiAgICAgICAgIGkgPSBQeV9TSVpFKGEpOwogICAgIH0KICAgICB3aGlsZSAoaSA8IHNpemUpIHsKICAgICAgICAgaiA9IChpIDw9IHNpemUtaSkgID8gIGkgIDogIHNpemUtaTsKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKKyAgICAgICAgbWVtY3B5KG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKICAgICAgICAgaSArPSBqOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwpAQCAtMTM2MiwyNCArMTUxNSw3IEBACiBzdGF0aWMgaW50CiBieXRlc19jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2YXJnOwotICAgICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM5Miw3ICsxNTI4LDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKCh1bnNpZ25lZCBjaGFyKWEtPm9iX3N2YWxbaV0pOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBieXRlc19jb21wYXJlX2VxKFB5Qnl0ZXNPYmplY3QgKmEsIFB5Qnl0ZXNPYmplY3QgKmIpCiB7CiAgICAgaW50IGNtcDsKQEAgLTE2MjYsOCArMTc2Miw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmRlNDRkYWNiMzZlZjJlIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjEyNmI1ODQ0YzFkOGVmIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTY1MSw3ICsxNzg3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjY3LDcgKzE4MDIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD1iYzg1NWRjNjNjYTk0OWRlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD02MWNjYTk1NTE5NDA2MDk5XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9wYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNjc5LDcgKzE4MTQsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjk1LDcgKzE4MjksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjU4OGZmZjI2MmE5MTcwZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjdmNjg5ZTYzYTYyZDQ3OF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcnBhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKQEAgLTE3MTMsOCArMTg0Nyw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2NTcwYjk3NzkxMWQ4OCBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNjk4ZDllYTAxZTFjOGYgaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLwogewogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CkBAIC0xNzUyLDggKzE4ODYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzRhZmYxNDc2NGZmOTk3IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KK2J5dGVzX2pvaW4oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2J5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwNDZmMzc5ZjYyNmY2ZjggaW5wdXQ9N2ZlMzc3Yjk1YmQ1NDlkMl0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KQEAgLTE3NjYsMTU4ICsxOTAwLDMwIEBACiAgICAgcmV0dXJuIGJ5dGVzX2pvaW4oKFB5Qnl0ZXNPYmplY3QqKXNlcCwgeCk7CiB9CiAKLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZXNfZmluZF9pbnRlcm5hbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKLXsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9idWZmZXIgc3ViYnVmOwotICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgaWYgKHN1Ym9iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2ZpbmQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCi0iQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnN0cmluZyBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydDplbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JpbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmluZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yMDA0LDcgKzIwMTAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMuc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAxNSw3ICsyMDIwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9MzdkYWE1ZmFkMTM5NWQ5NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9OGEzNTQ2NDBlNGUwYjNlZl0qLwogewogICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKIH0KQEAgLTIwMjMsNyArMjAyOCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5sc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAzNCw3ICsyMDM4LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2xzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTg4ODExYjA5ZGZiYzI5ODhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTliYWZmNDM5OGMzZjY4NTddKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDQyLDcgKzIwNDYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwNTMsODEgKzIwNTYsMzcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PThmOTNjOWNkMzYxZjAxNDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PWI3OGFmNDQ1YzcyN2UzMmJdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOwogfQogCiAKLVB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCi0iQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBzdWIgaW5cblwKLXN0cmluZyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKLWFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfY291bnQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0KLSAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqY291bnRfb2JqOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc3ViX29iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICB0YWJsZTogb2JqZWN0CiAgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCi0gICAgWwotICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKLSAgICBdCiAgICAgLworICAgIGRlbGV0ZSBhcyBkZWxldGVjaGFyczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCiAKIFJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogCi1BbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuCiBUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjMzZGY4NTBlYjUwYmY4ZCBpbnB1dD1kOGZhNTUxOWQ3Y2M0YmU3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDNiZTM0MzdmMTk1NjIxMSBpbnB1dD0wZWNkZjE1OWY2NTQyMzNjXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgUHlfYnVmZmVyIHRhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0yMTg4LDcgKzIxNDcsNyBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CkBAIC0yMjY0LDQ5OCArMjIyMyw2IEBACiAgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7CiB9CiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0vKiBTdHJpbmcgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLiAgKi8KLS8qIElmIHRoZSBvYmplY3QgaXMgc3ViY2xhc3Mgb2Ygc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXR1cm5fc2VsZihQeUJ5dGVzT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9Ci0gICAgcmV0dXJuIChQeUJ5dGVzT2JqZWN0ICopUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCi0gICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaTsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKLQotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLQotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQtc2VsZl9zKTsKLSAgICAqc3RhcnQgPSB0b19jOwotICAgIHN0YXJ0Kys7Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqbmV4dCA9IHRvX2M7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpIHsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbik7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQrb2Zmc2V0OwotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlc19HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gMCkgewotICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgc3RyaW5nIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgc3RyaW5nIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgc3RyaW5nICovCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKHRvX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIHN0cmluZyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLwotICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoc2VsZiwgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucmVwbGFjZQpAQCAtMjc3NCwxNTYgKzIyNDEsMjggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDNkYzlkN2E4M2M1YTFkIGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTRmYTU4OGI2YjljMTA0IGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KIHsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlc09iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKiogRW5kIERBTEtFICoqLwogCi0vKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2Ygc2VsZgotICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucwotICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgotICovCi1QeV9MT0NBTChpbnQpCi1fYnl0ZXNfdGFpbG1hdGNoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBzbGVuOwotICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBjb25zdCBjaGFyKiBzdWI7Ci0gICAgY29uc3QgY2hhciogc3RyOwotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOwotICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7Ci0gICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47Ci0gICAgfQotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3NsZW4gPiBsZW4pCi0gICAgICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGVuZHN3aXRoICovCi0gICAgICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgICAgICBpZiAoZW5kLXNsZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKLSAgICB9Ci0gICAgaWYgKGVuZC1zdGFydCA8IHNsZW4pCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0gICAgaWYgKG1lbWNtcChzdHIrc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKLSAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMTsKLQotbm90Zm91bmQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOwotICAgIHJldHVybiAwOwotfQotCi0KLVB5RG9jX1NUUlZBUihzdGFydHN3aXRoX19kb2NfXywKLSJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoZW5kc3dpdGhfX2RvY19fLAotIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKQEAgLTI5NDMsOSArMjI4Miw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQyMDE2ZmY4ZTBiYjE3NiBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY0OWE1M2RkZTI3YjMxNCBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgoUHlPYmplY3QqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQpAQCAtMjk2Myw4ICsyMzAyLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVjMzU5OGY3ODMzY2FkIGlucHV0PTdmNGFhYzY3MTQ0Zjk5NDRdKi8KK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQ4NDE0OWE1ZDg4MGZmYiBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdGxpbmVzKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwKQEAgLTI5NzIsMjIgKzIzMTEsNiBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlcy5mcm9taGV4CkBAIC0zMDA1LDQ3ICsyMzI4LDg4IEBACiBieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NzNhY2M2MzY2MWJiMmUgaW5wdXQ9YmY0ZDFjMzYxNjcwYWNkM10qLwogewotICAgIFB5T2JqZWN0ICpuZXdzdHJpbmc7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCAwKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlc19UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tSGV4KFB5T2JqZWN0ICpzdHJpbmcsIGludCB1c2VfYnl0ZWFycmF5KQorewogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7Ci0gICAgaW50IHRvcCwgYm90OwotICAgIHZvaWQgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBoZXhsZW4sIGludmFsaWRfY2hhcjsKKyAgICB1bnNpZ25lZCBpbnQgdG9wLCBib3Q7CisgICAgUHlfVUNTMSAqc3RyLCAqZW5kOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CiAKLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld3N0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3c3RyaW5nKQorICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHNlYXJjaCBmb3IgdGhlIGZpcnN0IG5vbi1BU0NJSSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGhleGxlbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPj0gMTI4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGludmFsaWRfY2hhciA9IGk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHN0cmluZykgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIHN0ciA9IFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CisKKyAgICAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLworICAgIGJ1ZiA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGhleGxlbiAvIDIpOworICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyaW5nKTsKLSAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CisKKyAgICBlbmQgPSBzdHIgKyBoZXhsZW47CisgICAgd2hpbGUgKHN0ciA8IGVuZCkgewogICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7CisgICAgICAgIGlmICgqc3RyID09ICcgJykgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgfSB3aGlsZSAoKnN0ciA9PSAnICcpOworICAgICAgICAgICAgaWYgKHN0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3AgPSBfUHlMb25nX0RpZ2l0VmFsdWVbKnN0cl07CisgICAgICAgIGlmICh0b3AgPj0gMTYpIHsKKyAgICAgICAgICAgIGludmFsaWRfY2hhciA9IHN0ciAtIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgYm90ID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAoYm90ID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdHIrKzsKKworICAgICAgICAqYnVmKysgPSAodW5zaWduZWQgY2hhcikoKHRvcCA8PCA0KSArIGJvdCk7CiAgICAgfQotICAgIGlmIChqICE9IGJ5dGVzbGVuICYmIF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3c3RyaW5nLCBqKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0dXJuIG5ld3N0cmluZzsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYnVmKTsKIAogICBlcnJvcjoKLSAgICBQeV9YREVDUkVGKG5ld3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaW52YWxpZF9jaGFyKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zMDc1LDE3ICsyNDM5LDIwIEBACiAgICAgeyJfX2dldG5ld2FyZ3NfXyIsICAgICAgICAgIChQeUNGdW5jdGlvbilieXRlc19nZXRuZXdhcmdzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKLSAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY2VudGVyX19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFU19ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBlbmRzd2l0aF9fZG9jX199LAorICAgICBfUHlfZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFU19GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAotICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCiAgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKQEAgLTMxMDEsMzggKzI0NjgsNDAgQEAKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAogICAgIEJZVEVTX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCiAgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAotICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9yaW5kZXhfX2RvY19ffSwKKyAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfcmp1c3RfX2RvY19ffSwKICAgICBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFU19SU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURVNfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAotICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCisgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgX1B5X3pmaWxsX19kb2NfX30sCiAgICAge05VTEwsICAgICBOVUxMfSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCitieXRlc19tb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKQorICAgIGlmICghUHlCeXRlc19DaGVjayhzZWxmKSkgewogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdCh2LCB3KTsKKyAgICB9CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIDApOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKQEAgLTMyMjEsMTI4ICsyNTkwLDExNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KLSAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5ldyA9IF9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDEpOwotICAgICAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIG5ldzsKKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ldyA9IF9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDEpOworICAgICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIG5ldzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCiB7Ci0gICAgUHlPYmplY3QgKm5ldywgKml0OworICAgIFB5T2JqZWN0ICpuZXc7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CisgICAgaWYgKCFuZXcpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCisgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBuZXc7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihuZXcpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIEdFVF9JVEVNKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hhciAqc3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICppdGVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RyID0gKChQeUJ5dGVzT2JqZWN0ICopYnl0ZXMpLT5vYl9zdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGl0ZW0gPSBHRVRfSVRFTSgoeCksIGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21MaXN0KFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5TGlzdF9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21UdXBsZShQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeVR1cGxlX0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeUJ5dGVzX0Zyb21JdGVyYXRvcihQeU9iamVjdCAqaXQsIFB5T2JqZWN0ICp4KQoreworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0KLSAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewotICAgICAgICBQeV9idWZmZXIgdmlldzsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwotICAgICAgICBpZiAoIW5ldykKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gbmV3OwotICAgICAgZmFpbDoKLSAgICAgICAgUHlfWERFQ1JFRihuZXcpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCB1bmljb2RlIG9iamVjdCB0byBieXRlcyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLwogICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KLSAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKLSAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCi0gICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBzaXplID0gMTsKLSAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCi0gICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAKICAgICAvKiBSdW4gdGhlIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24gKi8KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewpAQCAtMzM1OCw3ICsyNzE0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KLSAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMzNzIsMjEgKzI3MjgsNTggQEAKIAogICAgICAgICAvKiBBcHBlbmQgdGhlIGJ5dGUgKi8KICAgICAgICAgaWYgKGkgPj0gc2l6ZSkgewotICAgICAgICAgICAgc2l6ZSA9IDIgKiBzaXplICsgMTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJm5ldywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoJndyaXRlciwgc3RyLCBzaXplKzEpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKKyAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOwogICAgIH0KLSAgICBfUHlCeXRlc19SZXNpemUoJm5ldywgaSk7CiAKLSAgICAvKiBDbGVhbiB1cCBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBuZXc7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKml0LCAqcmVzdWx0OworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tQnVmZmVyKHgpOworCisgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUxpc3QoeCk7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbVR1cGxlKHgpOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOworICAgICAgICBpZiAoaXQgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKGl0LCB4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcyIsCisgICAgICAgICAgICAgICAgIHgtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDA0LDcgKzI3OTcsNyBAQAogICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRtcCk7CiAgICAgcG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgIGlmIChwbmV3ICE9IE5VTEwpIHsKLSAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAorICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOwogICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQogICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CkBAIC0zNzQ2LDMgKzMxMzksMjgyIEBACiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CisKKworLyogX1B5Qnl0ZXNXcml0ZXIgQVBJICovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICAvKiBTZXQgYWxsIGF0dHJpYnV0ZXMgYmVmb3JlIHNtYWxsX2J1ZmZlciB0byAwICovCisgICAgbWVtc2V0KHdyaXRlciwgMCwgb2Zmc2V0b2YoX1B5Qnl0ZXNXcml0ZXIsIHNtYWxsX2J1ZmZlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweENCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorfQorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCitQeV9MT0NBTF9JTkxJTkUoY2hhciopCitfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgICAgICByZXR1cm4gd3JpdGVyLT5zbWFsbF9idWZmZXI7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyAgICBjaGFyICpzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyID49IHN0YXJ0KTsKKyAgICBhc3NlcnQoc3RyIC0gc3RhcnQgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIHJldHVybiBzdHIgLSBzdGFydDsKK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyNpZmRlZiBQeV9ERUJVRworICAgIGNoYXIgKnN0YXJ0LCAqZW5kOworCisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlQXJyYXlfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGFzc2VydChQeV9SRUZDTlQod3JpdGVyLT5idWZmZXIpID09IDEpOworICAgIH0KKworICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgLyogYnl0ZWFycmF5IGhhcyBpdHMgb3duIG92ZXJhbGxvY2F0aW9uIGFsZ29yaXRobSwKKyAgICAgICAgICAgd3JpdGVyIG92ZXJhbGxvY2F0aW9uIG11c3QgYmUgZGlzYWJsZWQgKi8KKyAgICAgICAgYXNzZXJ0KCF3cml0ZXItPm92ZXJhbGxvY2F0ZSk7CisgICAgfQorCisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+bWluX3NpemUgJiYgd3JpdGVyLT5taW5fc2l6ZSA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgLyogdGhlIGxhc3QgYnl0ZSBtdXN0IGFsd2F5cyBiZSBudWxsICovCisgICAgc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdGFydFt3cml0ZXItPmFsbG9jYXRlZF0gPT0gMCk7CisKKyAgICBlbmQgPSBzdGFydCArIHdyaXRlci0+YWxsb2NhdGVkOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IHN0ciAmJiBzdHIgPD0gZW5kKTsKKyNlbmRpZgorfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkLCBwb3M7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQod3JpdGVyLT5hbGxvY2F0ZWQgPCBzaXplKTsKKworICAgIGFsbG9jYXRlZCA9IHNpemU7CisgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlCisgICAgICAgICYmIGFsbG9jYXRlZCA8PSAoUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SKSkgeworICAgICAgICAvKiBvdmVyYWxsb2NhdGUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZWFsbG9jKCkgKi8KKyAgICAgICAgYWxsb2NhdGVkICs9IGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1I7CisgICAgfQorCisgICAgcG9zID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKCF3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSh3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogd3JpdGVyLT5hbGxvY2F0ZWQgY2FuIGJlIHNtYWxsZXIgdGhhbiB3cml0ZXItPmJ1ZmZlci0+b2JfYWxsb2MsCisgICAgICAgICAgICAgICBidXQgd2UgY2Fubm90IHVzZSBvYl9hbGxvYyBiZWNhdXNlIGJ5dGVzIG1heSBuZWVkIHRvIGJlIG1vdmVkCisgICAgICAgICAgICAgICB0byB1c2UgdGhlIHdob2xlIGJ1ZmZlci4gYnl0ZWFycmF5IHVzZXMgYW4gaW50ZXJuYWwgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICB0byBhdm9pZCBtb3Zpbmcgb3IgY29weWluZyBieXRlcyB3aGVuIGJ5dGVzIGFyZSByZW1vdmVkIGF0IHRoZQorICAgICAgICAgICAgICAgYmVnaW5uaW5nIChleDogZGVsIGJ5dGVhcnJheVs6MV0pLiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmd3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogY29udmVydCBmcm9tIHN0YWNrIGJ1ZmZlciB0byBieXRlcyBvYmplY3QgYnVmZmVyICovCisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwb3MgIT0gMCkgeworICAgICAgICAgICAgY2hhciAqZGVzdDsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c21hbGxfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIHBvcyk7CisgICAgICAgIH0KKworICAgICAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhEQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpICsgcG9zOworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIHJldHVybiBzdHI7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBuZXdfbWluX3NpemU7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIGlmICh3cml0ZXItPm1pbl9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19taW5fc2l6ZSA9IHdyaXRlci0+bWluX3NpemUgKyBzaXplOworCisgICAgaWYgKG5ld19taW5fc2l6ZSA+IHdyaXRlci0+YWxsb2NhdGVkKQorICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUod3JpdGVyLCBzdHIsIG5ld19taW5fc2l6ZSk7CisKKyAgICB3cml0ZXItPm1pbl9zaXplID0gbmV3X21pbl9zaXplOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgLyogZW5zdXJlIHRoYXQgX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoKSBpcyBvbmx5IGNhbGxlZCBvbmNlICovCisgICAgYXNzZXJ0KHdyaXRlci0+bWluX3NpemUgPT0gMCAmJiB3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDE7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikgLSAxOworICAgIC8qIEluIGRlYnVnIG1vZGUsIGRvbid0IHVzZSB0aGUgZnVsbCBzbWFsbCBidWZmZXIgYmVjYXVzZSBpdCBpcyBsZXNzCisgICAgICAgZWZmaWNpZW50IHRoYW4gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHRvIGRldGVjdCBidWZmZXIgdW5kZXJmbG93CisgICAgICAgYW5kIGJ1ZmZlciBvdmVyZmxvdy4gVXNlIDEwIGJ5dGVzIG9mIHRoZSBzbWFsbCBidWZmZXIgdG8gdGVzdCBhbHNvCisgICAgICAgY29kZSB1c2luZyB0aGUgc21hbGxlciBidWZmZXIgaW4gZGVidWcgbW9kZS4KKworICAgICAgIERvbid0IG1vZGlmeSB0aGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlICh1c2UgYSBzaG9ydGVyIHNtYWxsIGJ1ZmZlcikKKyAgICAgICBpbiBkZWJ1ZyBtb2RlIHRvIGFsc28gYmUgYWJsZSB0byBkZXRlY3Qgc3RhY2sgb3ZlcmZsb3cgd2hlbiBydW5uaW5nCisgICAgICAgdGVzdHMgaW4gZGVidWcgbW9kZS4gVGhlIF9QeUJ5dGVzV3JpdGVyIGlzIGxhcmdlIChtb3JlIHRoYW4gNTEyIGJ5dGVzKSwKKyAgICAgICBpZiBQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoKSBpcyBub3QgdXNlZCBpbiBkZWVwIEMgY2FsbGJhY2ssIHdlIG1heSBoaXQgYQorICAgICAgIHN0YWNrIG92ZXJmbG93LiAqLworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gUHlfTUlOKHdyaXRlci0+YWxsb2NhdGVkLCAxMCk7CisgICAgLyogX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSgpIHJlcXVpcmVzIHRoZSBsYXN0IGJ5dGUgdG8gYmUgMCwKKyAgICAgICB0byBkZXRlY3QgYnVmZmVyIG92ZXJmbG93ICovCisgICAgd3JpdGVyLT5zbWFsbF9idWZmZXJbd3JpdGVyLT5hbGxvY2F0ZWRdID0gMDsKKyNlbHNlCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpOworI2VuZGlmCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzV3JpdGVyX0ZpbmlzaChfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKworICAgIHNpemUgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoc2l6ZSA9PSAwICYmICF3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworICAgICAgICAvKiBHZXQgdGhlIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKHNpemUgIT0gd3JpdGVyLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpzdHIgPSAoY2hhciAqKXB0cjsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoc3RyLCBieXRlcywgc2l6ZSk7CisgICAgc3RyICs9IHNpemU7CisKKyAgICByZXR1cm4gc3RyOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDVlOGFjNTkuLmIwZWQwMjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTMwMiwzNCArMzAyLDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tZXRob2RfY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorbWV0aG9kX2NhbGwoUHlPYmplY3QgKm1ldGhvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYzsKIAotICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKG1ldGhvZCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlUdXBsZV9TaXplKGFyZyk7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdhcmcgPSBQeVR1cGxlX05ldyhhcmdjb3VudCArIDEpOwotICAgICAgICBpbnQgaTsKLSAgICAgICAgaWYgKG5ld2FyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIDAsIHNlbGYpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7Ci0gICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIGkrMSwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnID0gbmV3YXJnOwotICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKWZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKG1ldGhvZCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCBzZWxmLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKaW5kZXggZTg3YTIyMS4uYzc1YWNiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCkBAIC0zOSw0NSArMzksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMTA4LDE3ICsxMDEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNyArMTQ4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTgyLDIzICsxODEsMjUgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTI1NCwyMyArMjU1LDI1IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMzIwLDggKzMyMyw5IEBACiAgICAgaW50IGl0ZW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAotICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzQ5LDggKzM1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGl0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9hcHBlbmRfaW1wbChzZWxmLCBpdGVtKTsKIAogZXhpdDoKQEAgLTM5NCw4ICszOTksOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmluZGV4KSkKKyAgICAgICAgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00MjMsOCArNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlbW92ZV9pbXBsKHNlbGYsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUxMyw4ICs1MjIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MzcsMjMgKzU0NywyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTgzLDIxICs1OTUsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTYxNywxNyArNjMxLDE4IEBACiAgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZWFycmF5X2Zyb21oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKTsKK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtNjcwLDggKzY4NSw5IEBACiAgICAgaW50IHByb3RvID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCi0gICAgICAgICZwcm90bykpCisgICAgICAgICZwcm90bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOwogCiBleGl0OgpAQCAtNjk1LDQgKzcxMSw0IEBACiB7CiAgICAgcmV0dXJuIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NjZjMTVmZjIyYzVlMjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjUzNDJhNjgwMzkxYjljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAppbmRleCA1YTFhNWU5Li5hMTFlYmQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCkBAIC0xNywyMiArMTcsMjQgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC02NCwxNCArNjYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMDEsMTQgKzEwNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzMCwyMiArMTM2LDI0IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5Nyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI0OSw4ICsyNTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI1OCw0NSArMjY5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTMyNywxNyArMzMxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1OSwxMSArMzY2LDExIEBACiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKQEAgLTM3MSwxNyArMzc4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDIsMjMgKzQxMiwyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00MzUsMjEgKzQ0NywyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpOworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNDc3LDExICs0OTEsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGMzYzkzY2ZkMmRjNDQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKaW5kZXggNTI4OGI5YS4uZDBjZGZjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5LDQgKzQwLDQgQEAKIAogI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNjMyNjEwOWUzZDk4MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAppbmRleCBkNDJhNzAwLi44OTFlOTBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAgICAgUHlPYmplY3QgKnogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTg2ZGQxMDhkOTJkMTA0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggYzMzNDYyNi4uZjdmOTFhOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTEsMyArMSw1IEBACisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtNSw2ICs3LDEyIEBACiAjZGVmaW5lIE5BTUVfQ0hBUlMgXAogICAgICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAKKy8qIEhvbGRlciBmb3IgY29fZXh0cmEgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IGNlX3NpemU7CisgICAgdm9pZCAqKmNlX2V4dHJhczsKK30gX1B5Q29kZU9iamVjdEV4dHJhOworCiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludApAQCAtMTM2LDcgKzE0NCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKwogICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKICAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKLSAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBib29sIHVzZWRfY2VsbDJhcmcgPSBmYWxzZTsKICAgICAgICAgY2VsbDJhcmcgPSBQeU1lbV9NQUxMT0MoYWxsb2Nfc2l6ZSk7CiAgICAgICAgIGlmIChjZWxsMmFyZyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDksNyArMTU3LDcgQEAKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xOTIsNiArMjAwLDcgQEAKICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwogICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CiAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBjby0+Y29fZXh0cmEgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtNDAxLDYgKzQxMCwyMSBAQAogc3RhdGljIHZvaWQKIGNvZGVfZGVhbGxvYyhQeUNvZGVPYmplY3QgKmNvKQogeworICAgIGlmIChjby0+Y29fZXh0cmEgIT0gTlVMTCkgeworICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgICAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gY28tPmNvX2V4dHJhOworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGZyZWVmdW5jIGZyZWVfZXh0cmEgPSB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tpXTsKKworICAgICAgICAgICAgaWYgKGZyZWVfZXh0cmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWVfZXh0cmEoY29fZXh0cmEtPmNlX2V4dHJhc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeU1lbV9GUkVFKGNvLT5jb19leHRyYSk7CisgICAgfQorCiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29kZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29uc3RzKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lcyk7CkBAIC03MzQsNyArNzU4LDggQEAKICAgICAgICAgYWRkciArPSAqcCsrOwogICAgICAgICBpZiAoYWRkciA+IGFkZHJxKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGxpbmUgKz0gKnArKzsKKyAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpKnA7CisgICAgICAgIHArKzsKICAgICB9CiAgICAgcmV0dXJuIGxpbmU7CiB9CkBAIC03NjksMTcgKzc5NCwxOSBAQAogICAgICAgICBpZiAoYWRkciArICpwID4gbGFzdGkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICBpZiAoKnApCisgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICBib3VuZHMtPmFwX2xvd2VyID0gYWRkcjsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgICAgICAtLXNpemU7CiAgICAgfQogCiAgICAgaWYgKHNpemUgPiAwKSB7CiAgICAgICAgIHdoaWxlICgtLXNpemUgPj0gMCkgewogICAgICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICAgICAgaWYgKCpwKyspCisgICAgICAgICAgICBpZiAoKHNpZ25lZCBjaGFyKSpwKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcCsrOwogICAgICAgICB9CiAgICAgICAgIGJvdW5kcy0+YXBfdXBwZXIgPSBhZGRyOwogICAgIH0KQEAgLTc4OSwzICs4MTYsODAgQEAKIAogICAgIHJldHVybiBsaW5lOwogfQorCisKK2ludAorX1B5Q29kZV9HZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqKmV4dHJhKQoreworICAgIGFzc2VydCgqZXh0cmEgPT0gTlVMTCk7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5Q29kZU9iamVjdCAqbyA9IChQeUNvZGVPYmplY3QqKSBjb2RlOworICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhKikgby0+Y29fZXh0cmE7CisKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMIHx8IGNvX2V4dHJhLT5jZV9zaXplIDw9IGluZGV4KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpleHRyYSA9IGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdOworICAgIHJldHVybiAwOworfQorCisKK2ludAorX1B5Q29kZV9TZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqZXh0cmEpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpIHx8IGluZGV4IDwgMCB8fAorICAgICAgICAgICAgaW5kZXggPj0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50KSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICBpZiAoY29fZXh0cmEgPT0gTlVMTCkgeworICAgICAgICBvLT5jb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICBzaXplb2YoX1B5Q29kZU9iamVjdEV4dHJhKSk7CisgICAgICAgIGlmIChvLT5jb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhICopIG8tPmNvX2V4dHJhOworCisgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMgPSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgaWYgKGNvX2V4dHJhLT5jZV9leHRyYXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29fZXh0cmEtPmNlX3NpemUgPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQ7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX1JlYWxsb2MoCisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzLCB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IGNvX2V4dHJhLT5jZV9zaXplOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2luZGV4XSA9IGV4dHJhOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBkODJjNWViLi4zMWUxMjc4IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtNzU5LDI5ICs3NTksMTIgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK2NvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKnR5cGUpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKnN0YXJ0OwotICAgIGNoYXIgKmVuZDsKICAgICBkb3VibGUgeD0wLjAsIHk9MC4wLCB6OwogICAgIGludCBnb3RfYnJhY2tldD0wOwotICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwotICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKnN0YXJ0OworICAgIGNoYXIgKmVuZDsKIAogICAgIC8qIHBvc2l0aW9uIG9uIGZpcnN0IG5vbmJsYW5rICovCiAgICAgc3RhcnQgPSBzOwpAQCAtODIyLDcgKzgwNSw3IEBACiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZW5kICE9IHMpIHsKICAgICAgICAgLyogYWxsIDQgZm9ybXMgc3RhcnRpbmcgd2l0aCA8ZmxvYXQ+IGxhbmQgaGVyZSAqLwpAQCAtODM1LDcgKzgxOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmQgIT0gcykKICAgICAgICAgICAgICAgICAvKiA8ZmxvYXQ+PHNpZ25lZC1mbG9hdD5qICovCkBAIC04OTAsMTggKzg3Myw0NiBAQAogICAgIGlmIChzLXN0YXJ0ICE9IGxlbikKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKIAotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwotICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKHR5cGUsIHgsIHkpOworICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKChQeVR5cGVPYmplY3QgKil0eXBlLCB4LCB5KTsKIAogICBwYXJzZV9lcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImNvbXBsZXgoKSBhcmcgaXMgYSBtYWxmb3JtZWQgc3RyaW5nIik7Ci0gIGVycm9yOgotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29tcGxleF9zdWJ0eXBlX2Zyb21fc3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYpCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CisgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJjb21wbGV4IiwgdiwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIpOworICBleGl0OgorICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbXBsZXhfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyLCAqaSwgKnRtcDsKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCBkYTY4ZTNiLi4wNzZlNzQxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0yMiw3ICsyMiw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjaGFyICpmb3JtYXQpCitkZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjb25zdCBjaGFyICpmb3JtYXQpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIGlmIChkZXNjci0+ZF9uYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRlc2NyLT5kX25hbWUpKQpAQCAtMjEzLDcgKzIxMyw3IEBACiBtZXRob2RkZXNjcl9jYWxsKFB5TWV0aG9kRGVzY3JPYmplY3QgKmRlc2NyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0yNDIsMTMgKzI0Miw4IEBACiAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTgsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI5NSwxNCArMjkwLDkgQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMwMCw3IEBACiB3cmFwcGVyZGVzY3JfY2FsbChQeVdyYXBwZXJEZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTMzOSwxMyArMzI5LDkgQEAKICAgICBmdW5jID0gUHlXcmFwcGVyX05ldygoUHlPYmplY3QgKilkZXNjciwgc2VsZik7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMzMsNyArMTAxOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd3JhcHBlcl9yaWNoY29tcGFyZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQ7CisgICAgaW50cHRyX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5V3JhcHBlckRlc2NyT2JqZWN0ICphX2Rlc2NyLCAqYl9kZXNjcjsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCmluZGV4IDI5MTJlYjkuLmNlOWVkYWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdC1jb21tb24uaAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTgsMTUgKzgsNjkgQEAKICAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KIH0gUHlEaWN0S2V5RW50cnk7CiAKLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisvKiBkaWN0X2xvb2t1cF9mdW5jKCkgcmV0dXJucyBpbmRleCBvZiBlbnRyeSB3aGljaCBjYW4gYmUgdXNlZCBsaWtlIERLX0VOVFJJRVMoZGspW2luZGV4XS4KKyAqIC0xIHdoZW4gbm8gZW50cnkgZm91bmQsIC0zIHdoZW4gY29tcGFyZSByYWlzZXMgZXJyb3IuCisgKi8KK3R5cGVkZWYgUHlfc3NpemVfdCAoKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKKyNkZWZpbmUgREtJWF9FTVBUWSAoLTEpCisjZGVmaW5lIERLSVhfRFVNTVkgKC0yKSAgLyogVXNlZCBpbnRlcm5hbGx5ICovCisjZGVmaW5lIERLSVhfRVJST1IgKC0zKQorCisvKiBTZWUgZGljdG9iamVjdC5jIGZvciBhY3R1YWwgbGF5b3V0IG9mIERpY3RLZXlzT2JqZWN0ICovCiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKICAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKworICAgIC8qIFNpemUgb2YgdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpLiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gKi8KICAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisKKyAgICAvKiBGdW5jdGlvbiB0byBsb29rdXAgaW4gdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpOgorCisgICAgICAgLSBsb29rZGljdCgpOiBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZAorICAgICAgICAgb25seSBpZikgYSBjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGUoKTogc3BlY2lhbGl6ZWQgdG8gVW5pY29kZSBzdHJpbmcga2V5cywgY29tcGFyaXNvbiBvZgorICAgICAgICAgd2hpY2ggY2FuIG5ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuCisgICAgICAgICBES0lYX0VSUk9SLgorCisgICAgICAgLSBsb29rZGljdF91bmljb2RlX25vZHVtbXkoKTogc2ltaWxhciB0byBsb29rZGljdF91bmljb2RlKCkgYnV0IGZ1cnRoZXIKKyAgICAgICAgIHNwZWNpYWxpemVkIGZvciBVbmljb2RlIHN0cmluZyBrZXlzIHRoYXQgY2Fubm90IGJlIHRoZSA8ZHVtbXk+IHZhbHVlLgorCisgICAgICAgLSBsb29rZGljdF9zcGxpdCgpOiBWZXJzaW9uIG9mIGxvb2tkaWN0KCkgZm9yIHNwbGl0IHRhYmxlcy4gKi8KICAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKworICAgIC8qIE51bWJlciBvZiB1c2FibGUgZW50cmllcyBpbiBka19lbnRyaWVzLiAqLwogICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOwotICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07CisKKyAgICAvKiBOdW1iZXIgb2YgdXNlZCBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCisgICAgUHlfc3NpemVfdCBka19uZW50cmllczsKKworICAgIC8qIEFjdHVhbCBoYXNoIHRhYmxlIG9mIGRrX3NpemUgZW50cmllcy4gSXQgaG9sZHMgaW5kaWNlcyBpbiBka19lbnRyaWVzLAorICAgICAgIG9yIERLSVhfRU1QVFkoLTEpIG9yIERLSVhfRFVNTVkoLTIpLgorCisgICAgICAgSW5kaWNlcyBtdXN0IGJlOiAwIDw9IGluZGljZSA8IFVTQUJMRV9GUkFDVElPTihka19zaXplKS4KKworICAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGFuIGluZGljZSBkZXBlbmRzIG9uIGRrX3NpemU6CisKKyAgICAgICAtIDEgYnl0ZSBpZiBka19zaXplIDw9IDB4ZmYgKGNoYXIqKQorICAgICAgIC0gMiBieXRlcyBpZiBka19zaXplIDw9IDB4ZmZmZiAoaW50MTZfdCopCisgICAgICAgLSA0IGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmZmZmZiAoaW50MzJfdCopCisgICAgICAgLSA4IGJ5dGVzIG90aGVyd2lzZSAoaW50NjRfdCopCisKKyAgICAgICBEeW5hbWljYWxseSBzaXplZCwgOCBpcyBtaW5pbXVtLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgaW50OF90IGFzXzFbOF07CisgICAgICAgIGludDE2X3QgYXNfMls0XTsKKyAgICAgICAgaW50MzJfdCBhc180WzJdOworI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgICAgIGludDY0X3QgYXNfOFsxXTsKKyNlbmRpZgorICAgIH0gZGtfaW5kaWNlczsKKworICAgIC8qICJQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzW2RrX3VzYWJsZV07IiBhcnJheSBmb2xsb3dzOgorICAgICAgIHNlZSB0aGUgREtfRU5UUklFUygpIG1hY3JvICovCiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggNzQ3ZDIxOC4uNjQ5NDE5MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTEsNCArMSwzIEBACi0KIC8qIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uIHVzaW5nIGEgaGFzaCB0YWJsZSAqLwogCiAvKiBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgc2VwYXJhdGUgZmlsZSwgT2JqZWN0cy9kaWN0bm90ZXMudHh0LApAQCAtNyw2OCArNiwxMTIgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorLyogUHlEaWN0S2V5c09iamVjdAorCitUaGlzIGltcGxlbWVudHMgdGhlIGRpY3Rpb25hcnkncyBoYXNodGFibGUuCisKK0FzIG9mIFB5dGhvbiAzLjYsIHRoaXMgaXMgY29tcGFjdCBhbmQgb3JkZXJlZC4gQmFzaWMgaWRlYSBpcyBkZXNjcmliZWQgaGVyZS4KK2h0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sCisKK2xheW91dDoKKworKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfcmVmY250ICAgICB8Cit8IGRrX3NpemUgICAgICAgfAorfCBka19sb29rdXAgICAgIHwKK3wgZGtfdXNhYmxlICAgICB8Cit8IGRrX25lbnRyaWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfaW5kaWNlcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfZW50cmllcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKKworZGtfaW5kaWNlcyBpcyBhY3R1YWwgaGFzaHRhYmxlLiAgSXQgaG9sZHMgaW5kZXggaW4gZW50cmllcywgb3IgREtJWF9FTVBUWSgtMSkKK29yIERLSVhfRFVNTVkoLTIpLgorU2l6ZSBvZiBpbmRpY2VzIGlzIGRrX3NpemUuICBUeXBlIG9mIGVhY2ggaW5kZXggaW4gaW5kaWNlcyBpcyB2YXJ5IG9uIGRrX3NpemU6CisKKyogaW50OCAgZm9yICAgICAgICAgIGRrX3NpemUgPD0gMTI4CisqIGludDE2IGZvciAyNTYgICA8PSBka19zaXplIDw9IDIqKjE1CisqIGludDMyIGZvciAyKioxNiA8PSBka19zaXplIDw9IDIqKjMxCisqIGludDY0IGZvciAyKiozMiA8PSBka19zaXplCisKK2RrX2VudHJpZXMgaXMgYXJyYXkgb2YgUHlEaWN0S2V5RW50cnkuICBJdCdzIHNpemUgaXMgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorREtfRU5UUklFUyhkaykgY2FuIGJlIHVzZWQgdG8gZ2V0IHBvaW50ZXIgdG8gZW50cmllcy4KKworTk9URTogU2luY2UgbmVnYXRpdmUgdmFsdWUgaXMgdXNlZCBmb3IgREtJWF9FTVBUWSBhbmQgREtJWF9EVU1NWSwgdHlwZSBvZgorZGtfaW5kaWNlcyBlbnRyeSBpcyBzaWduZWQgaW50ZWdlciBhbmQgaW50MTYgaXMgdXNlZCBmb3IgdGFibGUgd2hpY2gKK2RrX3NpemUgPT0gMjU2LgorKi8KKwogCiAvKgotVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCi0gICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgotICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLTQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCi0gICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCi0KIFRoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorCiBFaXRoZXI6CiAgIEEgY29tYmluZWQgdGFibGU6CiAgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KLSAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCi0gICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KIE9yOgogICBBIHNwbGl0IHRhYmxlOgogICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCi0gICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKyAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZC4KKyAgICBBbGwgZGljdHMgc2hhcmluZyBzYW1lIGtleSBtdXN0IGhhdmUgc2FtZSBpbnNlcnRpb24gb3JkZXIuCiAKLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKLXRvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlIChzbG90IGlzIGluZGV4LCBhbmQKK0RLX0VOVFJJRVMoa2V5cylbaW5kZXhdIGlmIGluZGV4ID49IDApOgorCisxLiBVbnVzZWQuICBpbmRleCA9PSBES0lYX0VNUFRZCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgaW5kZXggPj0gMCwgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX3ZhbHVlICE9IE5VTEwKKyAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgorICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KKyAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgorCiszLiBEdW1teS4gIGluZGV4ID09IERLSVhfRFVNTVkgIChjb21iaW5lZCBvbmx5KQorICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCisgICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCisgICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCisgICBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93CisgICB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIGluZGV4ID49IDAsIGtleSAhPSBOVUxMLCBhbmQgdmFsdWUgPT0gTlVMTCAgKHNwbGl0IG9ubHkpCisgICBOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlLgogKi8KIAotLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCi0gKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCi0gKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCi0gKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KLSAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisvKgorUHJlc2VydmluZyBpbnNlcnRpb24gb3JkZXIKIAotLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorSXQncyBzaW1wbGUgZm9yIGNvbWJpbmVkIHRhYmxlLiAgU2luY2UgZGtfZW50cmllcyBpcyBtb3N0bHkgYXBwZW5kIG9ubHksIHdlIGNhbgorZ2V0IGluc2VydGlvbiBvcmRlciBieSBqdXN0IGl0ZXJhdGluZyBka19lbnRyaWVzLgorCitPbmUgZXhjZXB0aW9uIGlzIC5wb3BpdGVtKCkuICBJdCByZW1vdmVzIGxhc3QgaXRlbSBpbiBka19lbnRyaWVzIGFuZCBkZWNyZW1lbnQKK2RrX25lbnRyaWVzIHRvIGFjaGlldmUgYW1vcnRpemVkIE8oMSkuICBTaW5jZSB0aGVyZSBhcmUgREtJWF9EVU1NWSByZW1haW5zIGluCitka19pbmRpY2VzLCB3ZSBjYW4ndCBpbmNyZW1lbnQgZGtfdXNhYmxlIGV2ZW4gdGhvdWdoIGRrX25lbnRyaWVzIGlzCitkZWNyZW1lbnRlZC4KKworSW4gc3BsaXQgdGFibGUsIGluc2VydGluZyBpbnRvIHBlbmRpbmcgZW50cnkgaXMgYWxsb3dlZCBvbmx5IGZvciBka19lbnRyaWVzW2l4XQord2hlcmUgaXggPT0gbXAtPm1hX3VzZWQuIEluc2VydGluZyBpbnRvIG90aGVyIGluZGV4IGFuZCBkZWxldGluZyBpdGVtIGNhdXNlCitjb252ZXJ0aW5nIHRoZSBkaWN0IHRvIHRoZSBjb21iaW5lZCB0YWJsZS4KKyovCisKKy8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3IGRpY3QuCiAgKiA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUgdGhhbiA1IGFjdGl2ZSBlbnRyaWVzOyBleHBlcmltZW50cyBzdWdnZXN0ZWQKICAqIHRoaXMgc3VmZmljZXMgZm9yIHRoZSBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbAogICogZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KICAqIE1ha2luZyB0aGlzIDgsIHJhdGhlciB0aGFuIDQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMgZm9yIG1vc3QKICAqIGRpY3Rpb25hcmllcywgd2l0aG91dCBhbnkgc2lnbmlmaWNhbnQgZXh0cmEgbWVtb3J5IHVzZS4KICAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CisjZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiICAgIC8qIHRvIGdldCB1bmljb2RlX2VxKCkgKi8KIAogLypbY2xpbmljIGlucHV0XQogY2xhc3MgZGljdCAiUHlEaWN0T2JqZWN0ICoiICImUHlEaWN0X1R5cGUiCkBAIC0xNDEsOCArMTg0LDggQEAKIGludG8gcGxheS4gIFRoaXMgaXMgZG9uZSBieSBpbml0aWFsaXppbmcgYSAodW5zaWduZWQpIHZyYmwgInBlcnR1cmIiIHRvIHRoZQogZnVsbCBoYXNoIGNvZGUsIGFuZCBjaGFuZ2luZyB0aGUgcmVjdXJyZW5jZSB0bzoKIAotICAgIGogPSAoNSpqKSArIDEgKyBwZXJ0dXJiOwogICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgdXNlIGogJSAyKippIGFzIHRoZSBuZXh0IHRhYmxlIGluZGV4OwogCiBOb3cgdGhlIHByb2JlIHNlcXVlbmNlIGRlcGVuZHMgKGV2ZW50dWFsbHkpIG9uIGV2ZXJ5IGJpdCBpbiB0aGUgaGFzaCBjb2RlLApAQCAtMTc3LDQxICsyMjAsMzggQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCi0gKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAotICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCi0qLwotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7Ci0KLSNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQotCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1QeU9iamVjdCAqCi1fUHlEaWN0X0R1bW15KHZvaWQpCi17Ci0gICAgcmV0dXJuIGR1bW15OwotfQotI2VuZGlmCi0KIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKIHN0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCi0vKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLworLypHbG9iYWwgY291bnRlciB1c2VkIHRvIHNldCBtYV92ZXJzaW9uX3RhZyBmaWVsZCBvZiBkaWN0aW9uYXJ5LgorICogSXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgYW5kIGVhY2gKKyAqIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQuICovCitzdGF0aWMgdWludDY0X3QgcHlkaWN0X2dsb2JhbF92ZXJzaW9uID0gMDsKKworI2RlZmluZSBESUNUX05FWFRfVkVSU0lPTigpICgrK3B5ZGljdF9nbG9iYWxfdmVyc2lvbikKKworLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MgYW5kIGZyZWUgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCiAjZGVmaW5lIFB5RGljdF9NQVhGUkVFTElTVCA4MAogI2VuZGlmCiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqa2V5c19mcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgbnVtZnJlZWtleXMgPSAwOwogCiAjaW5jbHVkZSAiY2xpbmljL2RpY3RvYmplY3QuYy5oIgogCkBAIC0yMTksMTIgKzI1OSwxNSBAQAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotICAgIGludCByZXQgPSBudW1mcmVlOworICAgIGludCByZXQgPSBudW1mcmVlICsgbnVtZnJlZWtleXM7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHdoaWxlIChudW1mcmVla2V5cykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDQwICsyODYsMTE2IEBACiAgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZmZmZmYgPyAgICBcCisgICAgICAgICAgICAgICAgNCA6IHNpemVvZihpbnQ2NF90KSkKKyNlbHNlCisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogc2l6ZW9mKGludDMyX3QpKQorI2VuZGlmCisjZGVmaW5lIERLX0VOVFJJRVMoZGspIFwKKyAgICAoKFB5RGljdEtleUVudHJ5KikoJihkayktPmRrX2luZGljZXMuYXNfMVtES19TSVpFKGRrKSAqIERLX0lYU0laRShkayldKSkKKwogI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKIAogI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCiAjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCi0jZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQogI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCiAjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKIAorLyogbG9va3VwIGluZGljZXMuICByZXR1cm5zIERLSVhfRU1QVFksIERLSVhfRFVNTVksIG9yIGl4ID49MCAqLworc3RhdGljIGlubGluZSBQeV9zc2l6ZV90Citka19nZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworICAgIHJldHVybiBpeDsKK30KKworLyogd3JpdGUgdG8gaW5kaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGtfc2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBpeCkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworCisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWl4OworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQxNl90KWl4OworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGluZGljZXNbaV0gPSBpeDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZmZmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDMyX3QpaXg7CisgICAgfQorfQorCisKIC8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCi0gKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKLSAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKLSAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZQorICogY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcKKyAqIGluZGljZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCiAgKgogICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgogICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKICAqCi0gKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgotICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDEvMiB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCiAgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pIDw8IDEpLzMpCiAKLS8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCi0gKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKLSAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKLSAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCi0jZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKy8qIEVTVElNQVRFX1NJWkUgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBVU0FCTEVfRlJBQ1RJT04uCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlc2VydmUgZW5vdWdoIHNpemUgdG8gaW5zZXJ0IG4gZW50cmllcyB3aXRob3V0CisgKiByZXNpemluZy4KKyAqLworI2RlZmluZSBFU1RJTUFURV9TSVpFKG4pICAoKChuKSozKzEpID4+IDEpCiAKLS8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisvKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gMm4vMyB0byBtYWtlCiAgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgogICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KICAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCiAgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQotKi8KKyAqLwogCiAvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4KICAqIEN1cnJlbnRseSBzZXQgdG8gdXNlZCoyICsgY2FwYWNpdHkvMi4KQEAgLTMwMCw2MSArNDE5LDE1NSBAQAogICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KICAqLwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7Ci0gICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3JlZmNudCAqLwogICAgICAgICAxLCAvKiBka19zaXplICovCiAgICAgICAgIGxvb2tkaWN0X3NwbGl0LCAvKiBka19sb29rdXAgKi8KICAgICAgICAgMCwgLyogZGtfdXNhYmxlIChpbW11dGFibGUpICovCi0gICAgICAgIHsKLSAgICAgICAgICAgIHsgMCwgMCwgMCB9IC8qIGRrX2VudHJpZXMgKGVtcHR5KSAqLwotICAgICAgICB9CisgICAgICAgIDAsIC8qIGRrX25lbnRyaWVzICovCisgICAgICAgIC5ka19pbmRpY2VzID0geyAuYXNfMSA9IHtES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWX19LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKIAogI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAogCisvKiBVbmNvbW1lbnQgdG8gY2hlY2sgdGhlIGRpY3QgY29udGVudCBpbiBfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKSAqLworLyogI2RlZmluZSBERUJVR19QWURJQ1QgKi8KKworCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK19QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShQeURpY3RPYmplY3QgKm1wKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBpbnQgc3BsaXR0ZWQgPSBfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApOworICAgIFB5X3NzaXplX3QgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKGtleXMtPmRrX3NpemUpOworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGk7CisjZW5kaWYKKworICAgIGFzc2VydCgwIDw9IG1wLT5tYV91c2VkICYmIG1wLT5tYV91c2VkIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoa2V5cy0+ZGtfc2l6ZSkpOworICAgIGFzc2VydCgwIDw9IGtleXMtPmRrX3VzYWJsZQorICAgICAgICAgICAmJiBrZXlzLT5ka191c2FibGUgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka19uZW50cmllcworICAgICAgICAgICAmJiBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworICAgIGFzc2VydChrZXlzLT5ka191c2FibGUgKyBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworCisgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAvKiBjb21iaW5lZCB0YWJsZSAqLworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgIH0KKworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIGZvciAoaT0wOyBpIDwga2V5cy0+ZGtfc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaXggPSBka19nZXRfaW5kZXgoa2V5cywgaSk7CisgICAgICAgIGFzc2VydChES0lYX0RVTU1ZIDw9IGl4ICYmIGl4IDw9IHVzYWJsZSk7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCB1c2FibGU7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnkgPSAmZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5tZV9rZXk7CisKKyAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgICAgICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoID09IGhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogdGVzdF9kaWN0IGZhaWxzIGlmIFB5T2JqZWN0X0hhc2goKSBpcyBjYWxsZWQgYWdhaW4gKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX2hhc2ggIT0gLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogc3BsaXR0ZWQgdGFibGUgKi8KKyAgICAgICAgZm9yIChpPTA7IGkgPCBtcC0+bWFfdXNlZDsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1tpXSAhPSBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworCiBzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGVzLCB1c2FibGU7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkUpOwogICAgIGFzc2VydChJU19QT1dFUl9PRl8yKHNpemUpKTsKLSAgICBkayA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiAoc2l6ZS0xKSk7Ci0gICAgaWYgKGRrID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgaWYgKHNpemUgPD0gMHhmZikgeworICAgICAgICBlcyA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmKSB7CisgICAgICAgIGVzID0gMjsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgZXMgPSA0OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBlcyA9IHNpemVvZihQeV9zc2l6ZV90KTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSBQeURpY3RfTUlOU0laRSAmJiBudW1mcmVla2V5cyA+IDApIHsKKyAgICAgICAgZGsgPSBrZXlzX2ZyZWVfbGlzdFstLW51bWZyZWVrZXlzXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRrID0gUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXMgKiBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CisgICAgICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOwogICAgIGRrLT5ka19zaXplID0gc2l6ZTsKLSAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOwotICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKLSAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KLSAgICBlcDAtPm1lX2hhc2ggPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7Ci0gICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgfQorICAgIGRrLT5ka191c2FibGUgPSB1c2FibGU7CiAgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICBkay0+ZGtfbmVudHJpZXMgPSAwOworICAgIG1lbXNldCgmZGstPmRrX2luZGljZXMuYXNfMVswXSwgMHhmZiwgZXMgKiBzaXplKTsKKyAgICBtZW1zZXQoREtfRU5UUklFUyhkayksIDAsIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiBkazsKIH0KIAogc3RhdGljIHZvaWQKIGZyZWVfa2V5c19vYmplY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9ICZrZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICBmb3IgKGkgPSAwLCBuID0ga2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CiAgICAgfQotICAgIFB5TWVtX0ZSRUUoa2V5cyk7CisgICAgaWYgKGtleXMtPmRrX3NpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPCBQeURpY3RfTUFYRlJFRUxJU1QpIHsKKyAgICAgICAga2V5c19mcmVlX2xpc3RbbnVtZnJlZWtleXMrK10gPSBrZXlzOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoa2V5cyk7CiB9CiAKICNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKLQogI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQogCiAvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KQEAgLTM4MCw2ICs1OTMsOCBAQAogICAgIG1wLT5tYV9rZXlzID0ga2V5czsKICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXA7CiB9CiAKQEAgLTM5MCw3ICs2MDUsNyBAQAogICAgIFB5T2JqZWN0ICoqdmFsdWVzOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAotICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSk7CiAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKICAgICAgICAgREtfREVDUkVGKGtleXMpOwpAQCAtNDA1LDEyICs2MjAsNDQgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9OZXcodm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgTlVMTCk7CiB9CiAKKy8qIFNlYXJjaCBpbmRleCBvZiBoYXNoIHRhYmxlIGZyb20gb2Zmc2V0IG9mIGVudHJ5IHRhYmxlICovCitzdGF0aWMgUHlfc3NpemVfdAorbG9va2RpY3RfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqaywgUHlfaGFzaF90IGhhc2gsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKGspOworICAgIFB5X3NzaXplX3QgaXg7CisKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICBpZiAoaXggPT0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiBES0lYX0VSUk9SOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC00MjYsOTMgKzY3Myw2NiBAQAogY29udHJpYnV0aW9ucyBieSBSZWltZXIgQmVocmVuZHMsIEp5cmtpIEFsYWt1aWphbGEsIFZsYWRpbWlyIE1hcmFuZ296b3YgYW5kCiBDaHJpc3RpYW4gVGlzbWVyLgogCi1sb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKLWNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgorbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZCBvbmx5IGlmKSBhCitjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gREtJWF9FUlJPUi4KIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQogdGhlIDxkdW1teT4gdmFsdWUuCi1Gb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCi13aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQotc2xvdC4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBES0lYX0VNUFRZIGlzIHJldHVybmVkLiBoYXNocG9zIHJldHVybnMKK3doZXJlIHRoZSBrZXkgaW5kZXggc2hvdWxkIGJlIGluc2VydGVkLgogKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OwotICAgIHNpemVfdCBtYXNrOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIHNpemVfdCBpLCBtYXNrOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OwogICAgIGludCBjbXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAogdG9wOgotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgZGsgPSBtcC0+bWFfa2V5czsKKyAgICBtYXNrID0gREtfTUFTSyhkayk7CisgICAgZXAwID0gREtfRU5UUklFUyhkayk7CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7Ci0gICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOwotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgewotICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKLSAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewotICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLwotICAgICAgICAgICAgICAgIGdvdG8gdG9wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKLSAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCi0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjAsNzIgKzc0MCwxMzEgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgICAgICBmcmVlc2xvdCA9IC0xOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9ICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSkgJiBtYXNrOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSAoZnJlZXNsb3QgPT0gLTEpID8gKFB5X3NzaXplX3QpaSA6IGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGl4OworICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OworICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKIH0KIAogLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgZnJlZXNsb3QgPSBlcDsKKyAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQorICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7OykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg3Miw2MyBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzk0MCw2MiBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC03MDcsMjcgKzEwMzIsMjcgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBudW1lbnRyaWVzOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG51bWVudHJpZXMgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCi0gICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CkBAIC03MzksMzMgKzEwNjQsMzUgQEAKIH0KIAogLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKLSAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgotICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAogZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSAmIG1hc2spOwogICAgIH0KKyAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAqaGFzaHBvcyA9IGkgJiBtYXNrOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgIGVsc2UKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgIHJldHVybiBlcDsKKyAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTc4NCw1OCArMTExMSw4OCBAQAogewogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDA7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKIAogICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgaXggPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKworICAgIC8qIFdoZW4gaW5zZXJ0aW9uIG9yZGVyIGlzIGRpZmZlcmVudCBmcm9tIHNoYXJlZCBrZXksIHdlIGNhbid0IHNoYXJlCisgICAgICogdGhlIGtleSBhbnltb3JlLiAgQ29udmVydCB0aGlzIGluc3RhbmNlIHRvIGNvbWJpbmUgdGFibGUuCisgICAgICovCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkgJiYKKyAgICAgICAgKChpeCA+PSAwICYmICp2YWx1ZV9hZGRyID09IE5VTEwgJiYgbXAtPm1hX3VzZWQgIT0gaXgpIHx8CisgICAgICAgICAoaXggPT0gREtJWF9FTVBUWSAmJiBtcC0+bWFfdXNlZCAhPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpKSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBpeCA9IERLSVhfRU1QVFk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIC8qIEluc2VydCBpbnRvIG5ldyBzbG90LiAqLworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOwotICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICB9CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgYXNzZXJ0IChtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPT0gTlVMTCk7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgYXNzZXJ0KHZhbHVlX2FkZHIgIT0gTlVMTCk7CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworCisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBwZW5kaW5nIHN0YXRlICovCisgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChpeCA9PSBtcC0+bWFfdXNlZCk7CisgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICBtcC0+bWFfdXNlZCsrOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04NTQsMjQgKzEyMTEsMjQgQEAKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgZGtfZ2V0X2luZGV4KGssIGkpICE9IERLSVhfRU1QVFk7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKICAgICB9CisgICAgZXAgPSAmZXAwW2stPmRrX25lbnRyaWVzXTsKICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOworICAgIGRrX3NldF9pbmRleChrLCBpLCBrLT5ka19uZW50cmllcyk7CisgICAgay0+ZGtfbmVudHJpZXMrKzsKICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKQEAgLTg4OCwxNiArMTI0NSwxNiBAQAogYnV0IGNhbiBiZSByZXNwbGl0IGJ5IG1ha2Vfa2V5c19zaGFyZWQoKS4KICovCiBzdGF0aWMgaW50Ci1kaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKK2RpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW5zaXplKQogewotICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKICAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKLSAgICBQeV9zc2l6ZV90IGksIG9sZHNpemU7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKIAotLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7Ci0gICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CisgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CisgICAgICAgICBuZXdzaXplIDwgbWluc2l6ZSAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKICAgICBpZiAobmV3c2l6ZSA8PSAwKSB7CkBAIC05MTIsNTYgKzEyNjksNDUgQEAKICAgICAgICAgbXAtPm1hX2tleXMgPSBvbGRrZXlzOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIC8vIE5ldyB0YWJsZSBtdXN0IGJlIGxhcmdlIGVub3VnaC4KKyAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSBtcC0+bWFfdXNlZCk7CiAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgIG9sZHNpemUgPSBES19TSVpFKG9sZGtleXMpOwogICAgIG1wLT5tYV92YWx1ZXMgPSBOVUxMOwotICAgIC8qIElmIGVtcHR5IHRoZW4gbm90aGluZyB0byBjb3B5IHNvIGp1c3QgcmV0dXJuICovCi0gICAgaWYgKG9sZHNpemUgPT0gMSkgewotICAgICAgICBhc3NlcnQob2xka2V5cyA9PSBQeV9FTVBUWV9LRVlTKTsKLSAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgZXAwID0gREtfRU5UUklFUyhvbGRrZXlzKTsKICAgICAvKiBNYWluIGxvb3AgYmVsb3cgYXNzdW1lcyB3ZSBjYW4gdHJhbnNmZXIgcmVmY291bnQgdG8gbmV3IGtleXMKICAgICAgKiBhbmQgdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gbWVfdmFsdWUuCiAgICAgICogSW5jcmVtZW50IHJlZi1jb3VudHMgYW5kIGNvcHkgdmFsdWVzIGhlcmUgdG8gY29tcGVuc2F0ZQogICAgICAqIFRoaXMgKHJlc2l6aW5nIGEgc3BsaXQgdGFibGUpIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKG9sZHZhbHVlc1tpXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKLSAgICAgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlcDBbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogTWFpbiBsb29wICovCi0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmZXAwW2ldOwogICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IGR1bW15KTsKICAgICAgICAgICAgIGluc2VydGRpY3RfY2xlYW4obXAsIGVwLT5tZV9rZXksIGVwLT5tZV9oYXNoLCBlcC0+bWVfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUgLT0gbXAtPm1hX3VzZWQ7CiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE5VTEwgb3V0IG1lX3ZhbHVlIHNsb3QgaW4gb2xka2V5cywgaW4gY2FzZSBpdCB3YXMgc2hhcmVkICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspCi0gICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gTlVMTDsKLSAgICAgICAgYXNzZXJ0KG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpOwotICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykKKyAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CiAgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgaWYgKG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3Rfc3BsaXQpOwotICAgICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChlcDBbaV0ubWVfa2V5ID09IGR1bW15KQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7Ci0gICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU1lbV9GUkVFKG9sZGtleXMpOworICAgICAgICBES19ERUJVR19ERUNSRUYgUHlPYmplY3RfRlJFRShvbGRrZXlzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05ODUsMTYgKzEzMzEsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZSkgewotICAgICAgICAgICAgLyogUmVtb3ZlIGR1bW15IGtleXMKLSAgICAgICAgICAgICAqIC0xIGlzIHJlcXVpcmVkIHNpbmNlIGRpY3RyZXNpemUoKSB1c2VzIGtleSBzaXplID4gbWludXNlZAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykgLSAxKSkKKyAgICAgICAgICAgIC8qIFJlbW92ZSBkdW1teSBrZXlzICovCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CiAgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KLSAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKICAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCkBAIC0xMDE1LDEyICsxMzU5LDI2IEBACiBQeU9iamVjdCAqCiBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCkKIHsKKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9wcmVzaXplID0gMTI4ICogMTAyNDsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7Ci0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7Ci0gICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7Ci0gICAgICAgICBuZXdzaXplIDw8PSAxKQotICAgICAgICA7CisKKyAgICAvKiBUaGVyZSBhcmUgbm8gc3RyaWN0IGd1YXJhbnRlZSB0aGF0IHJldHVybmVkIGRpY3QgY2FuIGNvbnRhaW4gbWludXNlZAorICAgICAqIGl0ZW1zIHdpdGhvdXQgcmVzaXplLiAgU28gd2UgY3JlYXRlIG1lZGl1bSBzaXplIGRpY3QgaW5zdGVhZCBvZiB2ZXJ5CisgICAgICogbGFyZ2UgZGljdCBvciBNZW1vcnlFcnJvci4KKyAgICAgKi8KKyAgICBpZiAobWludXNlZCA+IFVTQUJMRV9GUkFDVElPTihtYXhfcHJlc2l6ZSkpIHsKKyAgICAgICAgbmV3c2l6ZSA9IG1heF9wcmVzaXplOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfc3NpemVfdCBtaW5zaXplID0gRVNUSU1BVEVfU0laRShtaW51c2VkKTsKKyAgICAgICAgbmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOworICAgICAgICB3aGlsZSAobmV3c2l6ZSA8IG1pbnNpemUpIHsKKyAgICAgICAgICAgIG5ld3NpemUgPDw9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIobmV3c2l6ZSkpOworCiAgICAgbmV3X2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CiAgICAgaWYgKG5ld19rZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA0MSw4ICsxMzk5LDggQEAKIFB5RGljdF9HZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKQEAgLTEwNjgsMTUgKzE0MjYsMTUgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOwogICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIGlmIChpeCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTEwODQsMzkgKzE0NDIsMjUgQEAKICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKKy8qIFNhbWUgYXMgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKSBidXQgd2l0aCBoYXNoIHN1cHBsaWVkIGJ5IGNhbGxlci4KKyAgIFRoaXMgcmV0dXJucyBOVUxMICp3aXRoKiBhbiBleGNlcHRpb24gc2V0IGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZC4KKyAgIEl0IHJldHVybnMgTlVMTCAqd2l0aG91dCogYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUga2V5IHdhc24ndCBwcmVzZW50LgorKi8KIFB5T2JqZWN0ICoKIF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIFdlIGNhbiBhcnJpdmUgaGVyZSB3aXRoIGEgTlVMTCB0c3RhdGUgZHVyaW5nIGluaXRpYWxpemF0aW9uOiB0cnkKLSAgICAgICBydW5uaW5nICJweXRob24gLVdpIiBmb3IgYW4gZXhhbXBsZSByZWxhdGVkIHRvIHN0cmluZyBpbnRlcm5pbmcuCi0gICAgICAgTGV0J3MganVzdCBob3BlIHRoYXQgbm8gZXhjZXB0aW9uIG9jY3VycyB0aGVuLi4uICBUaGlzIG11c3QgYmUKLSAgICAgICBfUHlUaHJlYWRTdGF0ZV9DdXJyZW50IGFuZCBub3QgUHlUaHJlYWRTdGF0ZV9HRVQoKSBiZWNhdXNlIGluIGRlYnVnCi0gICAgICAgbW9kZSwgdGhlIGxhdHRlciBjb21wbGFpbnMgaWYgdHN0YXRlIGlzIE5VTEwuICovCi0gICAgdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7Ci0gICAgaWYgKHRzdGF0ZSAhPSBOVUxMICYmIHRzdGF0ZS0+Y3VyZXhjX3R5cGUgIT0gTlVMTCkgewotICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCi0gICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCi0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KQEAgLTExMjgsOSArMTQ3Miw5IEBACiBQeU9iamVjdCAqCiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewpAQCAtMTE0Niw4ICsxNDkwLDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQpAQCAtMTE2MiwzOSArMTUwNiw0MCBAQAogICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkcCwga3YpOwogfQogCi0vKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cC4KKy8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwIChMT0FEX0dMT0JBTCkuCiAgKiBMb29rdXAgaW4gZ2xvYmFscywgdGhlbiBidWlsdGlucy4KKyAqCisgKiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkIChleDogY29tcHV0aW5nIHRoZQorICoga2V5IGhhc2ggZmFpbGVkLCBrZXkgY29tcGFyaXNvbiBmYWlsZWQsIC4uLikuIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lc24ndAorICogZXhpc3QuIFJldHVybiB0aGUgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMuCiAgKi8KIFB5T2JqZWN0ICoKIF9QeURpY3RfTG9hZEdsb2JhbChQeURpY3RPYmplY3QgKmdsb2JhbHMsIFB5RGljdE9iamVjdCAqYnVpbHRpbnMsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlPYmplY3QgKng7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7Ci0gICAgICAgIGlmIChoYXNoICE9IC0xKSB7Ci0gICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZTsKLSAgICAgICAgICAgIGUgPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgZSA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KKyAgICBQeV9zc2l6ZV90IGl4OworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHggPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilnbG9iYWxzLCBrZXkpOwotICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgIHJldHVybiB4OwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorCisgICAgLyogbmFtZXNwYWNlIDE6IGdsb2JhbHMgKi8KKyAgICBpeCA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWJ1aWx0aW5zLCBrZXkpOworICAgIGlmIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAqdmFsdWVfYWRkcjsKKworICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLworICAgIGl4ID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCiAvKiBDQVVUSU9OOiBQeURpY3RfU2V0SXRlbSgpIG11c3QgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgcmVzaXplIHRoZQpAQCAtMTI0NywzNiArMTU5MiwzMyBAQAogfQogCiBzdGF0aWMgaW50Ci1kZWxpdGVtX2NvbW1vbihQeURpY3RPYmplY3QgKm1wLCBQeURpY3RLZXlFbnRyeSAqZXAsIFB5T2JqZWN0ICoqdmFsdWVfYWRkcikKK2RlbGl0ZW1fY29tbW9uKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgaGFzaHBvcywgUHlfc3NpemVfdCBpeCwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcikKIHsKICAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKICAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBhc3NlcnQob2xkX3ZhbHVlICE9IE5VTEwpOwogICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CisgICAgUHlfREVDUkVGKG9sZF9rZXkpOwogICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworCisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCiBpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7Ci0KLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC0xMjg0LDIyICsxNjI2LDE1IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgewotICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gZGVsaXRlbV9jb21tb24obXAsIGVwLCB2YWx1ZV9hZGRyKTsKKworICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9wLCBrZXksIGhhc2gpOwogfQogCiBpbnQKIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewpAQCAtMTMwOSwyMyArMTY0NCwzNyBAQAogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydChoYXNoICE9IC0xKTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gZGVsaXRlbV9jb21tb24obXAsIGVwLCB2YWx1ZV9hZGRyKTsKKyAgICBhc3NlcnQoZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zKSA9PSBpeCk7CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKyAgICByZXR1cm4gZGVsaXRlbV9jb21tb24obXAsIGhhc2hwb3MsIGl4LCB2YWx1ZV9hZGRyKTsKIH0KIAorLyogVGhpcyBmdW5jdGlvbiBwcm9taXNlcyB0aGF0IHRoZSBwcmVkaWNhdGUgLT4gZGVsZXRpb24gc2VxdWVuY2UgaXMgYXRvbWljCisgKiAoaS5lLiBwcm90ZWN0ZWQgYnkgdGhlIEdJTCksIGFzc3VtaW5nIHRoZSBwcmVkaWNhdGUgaXRzZWxmIGRvZXNuJ3QKKyAqIHJlbGVhc2UgdGhlIEdJTC4KKyAqLwogaW50CiBfUHlEaWN0X0RlbEl0ZW1JZihQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksCiAgICAgICAgICAgICAgICAgICBpbnQgKCpwcmVkaWNhdGUpKFB5T2JqZWN0ICp2YWx1ZSkpCiB7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAgICAgaW50IHJlczsKIApAQCAtMTMzOCwxOCArMTY4NywyOSBAQAogICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcykgPT0gaXgpOworCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICB9CisKICAgICByZXMgPSBwcmVkaWNhdGUoKnZhbHVlX2FkZHIpOwogICAgIGlmIChyZXMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAocmVzID4gMCkKLSAgICAgICAgcmV0dXJuIGRlbGl0ZW1fY29tbW9uKG1wLCBlcCwgdmFsdWVfYWRkcik7CisgICAgICAgIHJldHVybiBkZWxpdGVtX2NvbW1vbihtcCwgaGFzaHBvcywgaXgsIHZhbHVlX2FkZHIpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIDA7CiB9CkBAIC0xMzc1LDkgKzE3MzUsMTAgQEAKICAgICBtcC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKICAgICAvKiAuLi50aGVuIGNsZWFyIHRoZSBrZXlzIGFuZCB2YWx1ZXMgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgbiA9IERLX1NJWkUob2xka2V5cyk7CisgICAgICAgIG4gPSBvbGRrZXlzLT5ka19uZW50cmllczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgIFB5X0NMRUFSKG9sZHZhbHVlc1tpXSk7CiAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CkBAIC0xMzg3LDQyICsxNzQ4LDU5IEBACiAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CiAgICAgfQorICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKIH0KIAotLyogUmV0dXJucyAtMSBpZiBubyBtb3JlIGl0ZW1zIChvciBvcCBpcyBub3QgYSBkaWN0KSwKLSAqIGluZGV4IG9mIGl0ZW0gb3RoZXJ3aXNlLiBTdG9yZXMgdmFsdWUgaW4gcHZhbHVlCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KKyAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgcmV0dXJuIDAgd2hlbiB0aGUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5CisgKiAob3IgaWYgb3AgaXMgbm90IGEgZGljdGlvbmFyeSkKICAqLwotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1kaWN0X25leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICoqcHZhbHVlKQoraW50CitfUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCisgICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCiB7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7Ci0KKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpID0gKnBwb3M7CisgICAgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKKyAgICBpZiAoKHNpemVfdClpID49IChzaXplX3QpbikKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbnRyeV9wdHIgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaV07CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgZW50cnlfcHRyID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9Ci0gICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0gICAgaWYgKGkgPiBtYXNrKQotICAgICAgICByZXR1cm4gLTE7CisgICAgKnBwb3MgPSBpKzE7CisgICAgaWYgKHBrZXkpCisgICAgICAgICpwa2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgaWYgKHBoYXNoKQorICAgICAgICAqcGhhc2ggPSBlbnRyeV9wdHItPm1lX2hhc2g7CiAgICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7Ci0gICAgcmV0dXJuIGk7CisgICAgICAgICpwdmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMTsKIH0KIAogLyoKQEAgLTE0MzIsOSArMTgxMCwxMiBAQAogICogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAqICAgICBpID0gMDsgICAjIGltcG9ydGFudCEgIGkgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgY2hhbmdlZCBieSB5b3UKICAqICAgICB3aGlsZSAoUHlEaWN0X05leHQoeW91cmRpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7Ci0gKiAgICAgICAgICAgICAgUmVmZXIgdG8gYm9ycm93ZWQgcmVmZXJlbmNlcyBpbiBrZXkgYW5kIHZhbHVlLgorICogICAgICAgICBSZWZlciB0byBib3Jyb3dlZCByZWZlcmVuY2VzIGluIGtleSBhbmQgdmFsdWUuCiAgKiAgICAgfQogICoKKyAqIFJldHVybiAxIG9uIHN1Y2Nlc3MsIHJldHVybiAwIHdoZW4gdGhlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeQorICogKG9yIGlmIG9wIGlzIG5vdCBhIGRpY3Rpb25hcnkpCisgKgogICogQ0FVVElPTjogIEluIGdlbmVyYWwsIGl0IGlzbid0IHNhZmUgdG8gdXNlIFB5RGljdF9OZXh0IGluIGEgbG9vcCB0aGF0CiAgKiBtdXRhdGVzIHRoZSBkaWN0LiAgT25lIGV4Y2VwdGlvbjogIGl0IGlzIHNhZmUgaWYgdGhlIGxvb3AgbWVyZWx5IGNoYW5nZXMKICAqIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzIChidXQgZG9lc24ndCBpbnNlcnQgbmV3IGtleXMgb3IKQEAgLTE0NDMsNDQgKzE4MjQsMjIgQEAKIGludAogUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlKQogewotICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgICpwcG9zID0gaSsxOwotICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICByZXR1cm4gMTsKLX0KLQotLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uCi0gKiB0byB0aGUga2V5IGFuZCB2YWx1ZS4KLSAqLwotaW50Ci1fUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCi0gICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCi17Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgKnBwb3MgPSBpKzE7Ci0gICAgKnBoYXNoID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfaGFzaDsKLSAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIF9QeURpY3RfTmV4dChvcCwgcHBvcywgcGtleSwgcHZhbHVlLCBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBkaWN0LnBvcCgpLiAqLwogUHlPYmplY3QgKgotX1B5RGljdF9Qb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQorX1B5RGljdF9Qb3AoUHlPYmplY3QgKmRpY3QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZsdCkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4LCBoYXNocG9zOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKworICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKWRpY3Q7CiAKICAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKQEAgLTE0OTYsMTEgKzE4NTUsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKGRlZmx0KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwogICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwpAQCAtMTUwOCwxNSArMTg2NiwyOSBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgREtJWF9EVU1NWSk7CisgICAgZXAgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaXhdOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIApAQCAtMTU0MSw3ICsxOTEzLDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUoUHlfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE1NjAsNyArMTkzMiw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE2MjAsNyArMTk5Miw3IEBACiAgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihtcCkKICAgICBpZiAodmFsdWVzICE9IE5VTEwpIHsKICAgICAgICAgaWYgKHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CkBAIC0xNzMyLDggKzIxMDQsOCBAQAogZGljdF9zdWJzY3JpcHQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTE3NDIsMTEgKzIxMTQsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QobXApKSB7CiAgICAgICAgICAgICAvKiBMb29rIHVwIF9fbWlzc2luZ19fIG1ldGhvZCBpZiB3ZSdyZSBhIHN1YmNsYXNzLiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1pc3NpbmcsICpyZXM7CkBAIC0xNzY0LDggKzIxMzUsOCBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIHYgPSAqdmFsdWVfYWRkcjsKKyAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTE4MDUsOCArMjE3Niw4IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CkBAIC0xODMzLDYgKzIyMDQsNyBAQAogewogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKQEAgLTE4NDgsMTMgKzIyMjAsMTQgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV92YWx1ZTsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgewpAQCAtMTkwNSw4ICsyMjc4LDggQEAKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9CiAgICAgLyogTm90aGluZyB3ZSBkbyBiZWxvdyBtYWtlcyBhbnkgZnVuY3Rpb24gY2FsbHMuICovCi0gICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllczsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE5NTAsNyArMjMyMyw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBjaGFyICptZXRobmFtZSkKK2RpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhuYW1lKQogewogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwpAQCAtMjA1Miw2ICsyNDI2LDcgQEAKICAgICB9CiAKICAgICBpID0gMDsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilkKSk7CiAgICAgZ290byBSZXR1cm47CiBGYWlsOgogICAgIFB5X1hERUNSRUYoaXRlbSk7CkBAIC0yMDYyLDE4ICsyNDM3LDE0IEBACiAgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QoaSwgUHlfc3NpemVfdCwgaW50KTsKIH0KIAotaW50Ci1QeURpY3RfVXBkYXRlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKLXsKLSAgICByZXR1cm4gUHlEaWN0X01lcmdlKGEsIGIsIDEpOwotfQotCi1pbnQKLVB5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3N0YXRpYyBpbnQKK2RpY3RfbWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCwgKm90aGVyOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5LCAqZXAwOworCisgICAgYXNzZXJ0KDAgPD0gb3ZlcnJpZGUgJiYgb3ZlcnJpZGUgPD0gMik7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMjEwMCwxMyArMjQ3MSwxNiBAQAogICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcgaXRlbXMuICBFeHBlY3QKICAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCisgICAgICAgIGlmIChVU0FCTEVfRlJBQ1RJT04obXAtPm1hX2tleXMtPmRrX3NpemUpIDwgb3RoZXItPm1hX3VzZWQpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShvdGhlci0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG90aGVyLT5tYV9rZXlzKTsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGVudHJ5ID0gJmVwMFtpXTsKICAgICAgICAgICAgIGtleSA9IGVudHJ5LT5tZV9rZXk7CiAgICAgICAgICAgICBoYXNoID0gZW50cnktPm1lX2hhc2g7CiAgICAgICAgICAgICBpZiAob3RoZXItPm1hX3ZhbHVlcykKQEAgLTIxMTgsMTQgKzI0OTIsMjggQEAKICAgICAgICAgICAgICAgICBpbnQgZXJyID0gMDsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSB8fCBQeURpY3RfR2V0SXRlbShhLCBrZXkpID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlID09IDEpCiAgICAgICAgICAgICAgICAgICAgIGVyciA9IGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goYSwga2V5LCBoYXNoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG92ZXJyaWRlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgICAgICBpZiAobiAhPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKSkgeworICAgICAgICAgICAgICAgIGlmIChuICE9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllcykgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3QgbXV0YXRlZCBkdXJpbmcgdXBkYXRlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIxNTQsNyArMjU0MiwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGZvciAoa2V5ID0gUHlJdGVyX05leHQoaXRlcik7IGtleTsga2V5ID0gUHlJdGVyX05leHQoaXRlcikpIHsKLSAgICAgICAgICAgIGlmICghb3ZlcnJpZGUgJiYgUHlEaWN0X0dldEl0ZW0oYSwga2V5KSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIxNzcsOSArMjU3MSwyOSBAQAogICAgICAgICAgICAgLyogSXRlcmF0b3IgY29tcGxldGVkLCB2aWEgZXJyb3IgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopYSkpOwogICAgIHJldHVybiAwOwogfQogCitpbnQKK1B5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIDEpOworfQorCitpbnQKK1B5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3sKKyAgICAvKiBYWFggRGVwcmVjYXRlIG92ZXJyaWRlIG5vdCBpbiAoMCwgMSkuICovCisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUgIT0gMCk7Cit9CisKK2ludAorX1B5RGljdF9NZXJnZUV4KFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIG92ZXJyaWRlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29weShQeURpY3RPYmplY3QgKm1wKQogewpAQCAtMjIwMCw3ICsyNjE0LDkgQEAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvOwogICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqc3BsaXRfY29weTsKLSAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXMgPSBuZXdfdmFsdWVzKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXM7CisgICAgICAgIG5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKQEAgLTIyMTIsNyArMjYyOCw3IEBACiAgICAgICAgIHNwbGl0X2NvcHktPm1hX2tleXMgPSBtcC0+bWFfa2V5czsKICAgICAgICAgc3BsaXRfY29weS0+bWFfdXNlZCA9IG1wLT5tYV91c2VkOwogICAgICAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IHNpemU7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV07CiAgICAgICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlc1tpXSA9IHZhbHVlOwpAQCAtMjI4Myw4ICsyNjk5LDggQEAKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBTYW1lICMgb2YgZW50cmllcyAtLSBjaGVjayBhbGwgb2YgJ2VtLiAgRXhpdCBlYXJseSBvbiBhbnkgZGlmZi4gKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShhLT5tYV9rZXlzKTsgaSsrKSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZhLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBhLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZES19FTlRSSUVTKGEtPm1hX2tleXMpW2ldOwogICAgICAgICBQeU9iamVjdCAqYXZhbDsKICAgICAgICAgaWYgKGEtPm1hX3ZhbHVlcykKICAgICAgICAgICAgIGF2YWwgPSBhLT5tYV92YWx1ZXNbaV07CkBAIC0yMzAxLDcgKzI3MTcsNyBAQAogICAgICAgICAgICAgLyogZGl0dG8gZm9yIGtleSAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICAvKiByZXVzZSB0aGUga25vd24gaGFzaCB2YWx1ZSAqLwotICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkcikgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICgoYi0+bWFfa2V5cy0+ZGtfbG9va3VwKShiLCBrZXksIGVwLT5tZV9oYXNoLCAmdmFkZHIsIE5VTEwpIDwgMCkKICAgICAgICAgICAgICAgICBidmFsID0gTlVMTDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBidmFsID0gKnZhZGRyOwpAQCAtMjM1OSw3ICsyNzc1LDcgQEAKIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wID0gc2VsZjsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTIzNjgsMTAgKzI3ODQsMTIgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzgxLDcgKzI3OTksNyBAQAogICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCkBAIC0yMzkzLDEyICsyODExLDEzIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2YWwgPT0gTlVMTCkKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgIGVsc2UKKyAgICAgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI0MDcsNDMgKzI4MjYsODggQEAKIFB5RGljdF9TZXREZWZhdWx0KFB5T2JqZWN0ICpkLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdG9iaikKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKGQpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorCisgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApICYmCisgICAgICAgICgoaXggPj0gMCAmJiAqdmFsdWVfYWRkciA9PSBOVUxMICYmIG1wLT5tYV91c2VkICE9IGl4KSB8fAorICAgICAgICAgKGl4ID09IERLSVhfRU1QVFkgJiYgbXAtPm1hX3VzZWQgIT0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRvYmopOworICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgaXggPSBES0lYX0VNUFRZOworICAgIH0KKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMDsKKyAgICAgICAgdmFsdWUgPSBkZWZhdWx0b2JqOworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZXAgPSAmZXAwW21wLT5tYV9rZXlzLT5ka19uZW50cmllc107CisgICAgICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKTsKICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIGRlZmF1bHRvYmopOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CiAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSBkZWZhdWx0b2JqOwotICAgICAgICB2YWwgPSBkZWZhdWx0b2JqOwotICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID09IE5VTEwpOworICAgICAgICAgICAgbXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKICAgICB9Ci0gICAgcmV0dXJuIHZhbDsKKyAgICBlbHNlIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlID0gZGVmYXVsdG9iajsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgICAgICBhc3NlcnQoaXggPT0gbXAtPm1hX3VzZWQpOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIG1wLT5tYV91c2VkKys7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIH0KKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDc1LDE3ICsyOTM5LDE2IEBACiAgICAgaWYoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3AiLCAxLCAyLCAma2V5LCAmZGVmbHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfUHlEaWN0X1BvcChtcCwga2V5LCBkZWZsdCk7CisgICAgcmV0dXJuIF9QeURpY3RfUG9wKChQeU9iamVjdCopbXAsIGtleSwgZGVmbHQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLQogICAgIC8qIEFsbG9jYXRlIHRoZSByZXN1bHQgdHVwbGUgYmVmb3JlIGNoZWNraW5nIHRoZSBzaXplLiAgQmVsaWV2ZSBpdAogICAgICAqIG9yIG5vdCwgdGhpcyBhbGxvY2F0aW9uIGNvdWxkIHRyaWdnZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpY2gKICAgICAgKiBjb3VsZCBlbXB0eSB0aGUgZGljdCwgc28gaWYgd2UgY2hlY2tlZCB0aGUgc2l6ZSBmaXJzdCBhbmQgdGhhdApAQCAtMjUwNiw2OCArMjk2OSw2NCBAQAogICAgIH0KICAgICAvKiBDb252ZXJ0IHNwbGl0IHRhYmxlIHRvIGNvbWJpbmVkIHRhYmxlICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3Rfc3BsaXQpIHsKLSAgICAgICAgLyogLTEgaXMgcmVxdWlyZWQgc2luY2UgZGljdHJlc2l6ZSgpIHVzZXMga2V5IHNpemUgPiBtaW51c2VkICovCi0gICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSAtIDEpKSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCi0gICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgICAgICBpID0gZXAtPm1lX2hhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKworICAgIC8qIFBvcCBsYXN0IGl0ZW0gKi8KKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBpID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA+PSAwICYmIGVwMFtpXS5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGktLTsKICAgICB9CisgICAgYXNzZXJ0KGkgPj0gMCk7CisKKyAgICBlcCA9ICZlcDBbaV07CisgICAgaiA9IGxvb2tkaWN0X2luZGV4KG1wLT5tYV9rZXlzLCBlcC0+bWVfaGFzaCwgaSk7CisgICAgYXNzZXJ0KGogPj0gMCk7CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaikgPT0gaSk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBqLCBES0lYX0RVTU1ZKTsKKwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCBlcC0+bWVfa2V5KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgZXAtPm1lX3ZhbHVlKTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIC8qIFdlIGNhbid0IGRrX3VzYWJsZSsrIHNpbmNlIHRoZXJlIGlzIERLSVhfRFVNTVkgaW4gaW5kaWNlcyAqLworICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyA9IGk7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGtleXMtPmRrX25lbnRyaWVzOworCisgICAgaWYgKGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV92YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU4NiwyMyArMzA0NSwzMSBAQAogUHlfc3NpemVfdAogX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHVzYWJsZSwgcmVzOwogCiAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKwogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUobXApKTsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAgICAgcmVzICs9IHVzYWJsZSAqIHNpemVvZihQeU9iamVjdCopOwogICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKICAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKLSAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgcmVzICs9IChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgKyBES19JWFNJWkUobXAtPm1hX2tleXMpICogc2l6ZQorICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlfc3NpemVfdAogX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKQogewotICAgIHJldHVybiBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoREtfU0laRShrZXlzKS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgcmV0dXJuIChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgIC0gUHlfTUVNQkVSX1NJWkUoUHlEaWN0S2V5c09iamVjdCwgZGtfaW5kaWNlcykKKyAgICAgICAgICAgICsgREtfSVhTSVpFKGtleXMpICogREtfU0laRShrZXlzKQorICAgICAgICAgICAgKyBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2ODksOCArMzE1Niw4IEBACiBQeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0yNjk5LDggKzMxNjYsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9Db250YWlucyB1c2VkIHdoZW4gdGhlIGhhc2ggdmFsdWUgaXMgYWxyZWFkeSBrbm93biAqLwpAQCAtMjcwOCwxMSArMzE3NywxMyBAQAogX1B5RGljdF9Db250YWlucyhQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEhhY2sgdG8gaW1wbGVtZW50ICJrZXkgaW4gZGljdCIgKi8KQEAgLTI3NDYsMTEgKzMyMTcsMTMgQEAKICAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7CiAKICAgICBkLT5tYV91c2VkID0gMDsKLSAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBkLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGQtPm1hX2tleXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KGQpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjk3MSwxMyArMzQ0NCwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCoKK2RpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RLZXlzT2JqZWN0ICprOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTkxLDI3ICszNDY0LDMwIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7CiAgICAgayA9IGQtPm1hX2tleXM7CisgICAgbiA9IGstPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IERLX0VOVFJJRVMoaylbaV0ubWVfa2V5OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIG1hc2sgPSBES19TSVpFKGspLTE7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyID0gJkRLX0VOVFJJRVMoaylbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiBlbnRyeV9wdHItPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVudHJ5X3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IGVudHJ5X3B0ci0+bWVfa2V5OwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBrLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICByZXR1cm4ga2V5OwogCkBAIC0zMDU0LDEyICszNTMwLDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzA3MywyNiArMzU0OSwyOSBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIG1hc2sgPSBES19TSVpFKGQtPm1hX2tleXMpLTE7Ci0gICAgaWYgKGkgPCAwIHx8IGkgPiBtYXNrKQotICAgICAgICBnb3RvIGZhaWw7CisgICAgbiA9IGQtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9IGVudHJ5X3B0ci0+bWVfdmFsdWU7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgZGktPmxlbi0tOwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIApAQCAtMzEyMyw3ICszNjAyLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkaWN0aXRlcl90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTMxMzUsMTIgKzM2MTQsMTIgQEAKICAgICAwLAogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMxNTQsMzcgKzM2MzMsNDEgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwotCisgICAgZGktPmxlbi0tOwogICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKSB7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwogICAgICAgICBQeV9ERUNSRUYoUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDApKTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KDIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZGktPmxlbi0tOwotICAgIGtleSA9IGQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwpAQCAtMzgyMyw3ICs0MzA2LDcgQEAKIFB5RGljdEtleXNPYmplY3QgKgogX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTM4NTksNyArNDM0Miw3IEBACiAKIGludAogX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgaW50IHJlczsKQEAgLTM4ODYsMTUgKzQzNjksMjUgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgd2FzX3NoYXJlZCA9IGNhY2hlZCA9PSAoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9rZXlzOwogICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICAvKiBQeURpY3RfU2V0SXRlbSgpIG1heSBjYWxsIGRpY3RyZXNpemUoKSBhbmQgY29udmVydCBzcGxpdCB0YWJsZQotICAgICAgICAgICAgICogaW50byBjb21iaW5lZCB0YWJsZS4gIEluIHN1Y2ggY2FzZSwgY29udmVydCBpdCB0byBzcGxpdAotICAgICAgICAgICAgICogdGFibGUgYWdhaW4gYW5kIHVwZGF0ZSB0eXBlJ3Mgc2hhcmVkIGtleSBvbmx5IHdoZW4gdGhpcyBpcwotICAgICAgICAgICAgICogdGhlIG9ubHkgZGljdCBzaGFyaW5nIGtleSB3aXRoIHRoZSB0eXBlLgotICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAod2FzX3NoYXJlZCAmJiBjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIC8qIFB5RGljdF9TZXRJdGVtKCkgbWF5IGNhbGwgZGljdHJlc2l6ZSBhbmQgY29udmVydCBzcGxpdCB0YWJsZQorICAgICAgICAgICAgICAgICAqIGludG8gY29tYmluZWQgdGFibGUuICBJbiBzdWNoIGNhc2UsIGNvbnZlcnQgaXQgdG8gc3BsaXQKKyAgICAgICAgICAgICAgICAgKiB0YWJsZSBhZ2FpbiBhbmQgdXBkYXRlIHR5cGUncyBzaGFyZWQga2V5IG9ubHkgd2hlbiB0aGlzIGlzCisgICAgICAgICAgICAgICAgICogdGhlIG9ubHkgZGljdCBzaGFyaW5nIGtleSB3aXRoIHRoZSB0eXBlLgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogVGhpcyBpcyB0byBhbGxvdyB1c2luZyBzaGFyZWQga2V5IGluIGNsYXNzIGxpa2UgdGhpczoKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgICBjbGFzcyBDOgorICAgICAgICAgICAgICAgICAqICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICMgb25lIGRpY3QgcmVzaXplIGhhcHBlbnMKKyAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICBzZWxmLmEsIHNlbGYuYiwgc2VsZi5jID0gMSwgMiwgMworICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgIHNlbGYuZCwgc2VsZi5lLCBzZWxmLmYgPSA0LCA1LCA2CisgICAgICAgICAgICAgICAgICogICAgIGEgPSBDKCkKKyAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkLT5ka19yZWZjbnQgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBtYWtlX2tleXNfc2hhcmVkKGRpY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBES19ERUNSRUYoY2FjaGVkKTsKQEAgLTM5MjQsNTAgKzQ0MTcsMyBAQAogewogICAgIERLX0RFQ1JFRihrZXlzKTsKIH0KLQotCi0vKiBBUkdTVVNFRCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWR1bW15X3JlcHIoUHlPYmplY3QgKm9wKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGR1bW15IGtleT4iKTsKLX0KLQotLyogQVJHVVNFRCAqLwotc3RhdGljIHZvaWQKLWR1bW15X2RlYWxsb2MoUHlPYmplY3QqIGlnbm9yZSkKLXsKLSAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkLCBidXQgd2UgYWxzbyBkb24ndCB3YW50IHRvIFNFR1YgaWYKLSAgICAgKiB3ZSBhY2NpZGVudGFsbHkgZGVjcmVmIGR1bW15LWtleSBvdXQgb2YgZXhpc3RlbmNlLgotICAgICAqLwotICAgIFB5X0ZhdGFsRXJyb3IoImRlYWxsb2NhdGluZyA8ZHVtbXkga2V5PiIpOwotfQotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGljdER1bW15X1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAiPGR1bW15IGtleT4gdHlwZSIsCi0gICAgMCwKLSAgICAwLAotICAgIGR1bW15X2RlYWxsb2MsICAgICAgLyp0cF9kZWFsbG9jKi8gLypuZXZlciBjYWxsZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIGR1bW15X3JlcHIsICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0ID0gewotICBfUHlPYmplY3RfRVhUUkFfSU5JVAotICAyLCAmUHlEaWN0RHVtbXlfVHlwZQotfTsKLQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMgYi9PYmplY3RzL2VudW1vYmplY3QuYwppbmRleCBjNDU4Y2ZlLi5kYWUxNjZkIDEwMDY0NAotLS0gYS9PYmplY3RzL2VudW1vYmplY3QuYworKysgYi9PYmplY3RzL2VudW1vYmplY3QuYwpAQCAtMjUwLDYgKzI1MCwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldmVyc2VkX21ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChzZXEsICZQeUlkX19fcmV2ZXJzZWRfXyk7CisgICAgaWYgKHJldmVyc2VkX21ldGggPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCByZXZlcnNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VxKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAocmV2ZXJzZWRfbWV0aCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJldmVyc2VkX21ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CkBAIC0yNTksOCArMjY2LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHRvIHJldmVyc2VkKCkgbXVzdCBiZSBhIHNlcXVlbmNlIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCByZXZlcnNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VxKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9leGNlcHRpb25zLmMgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwppbmRleCA5ODFlYWQyLi5mNjNmMDZhIDEwMDY0NAotLS0gYS9PYmplY3RzL2V4Y2VwdGlvbnMuYworKysgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwpAQCAtNTksMTUgKzU5LDExIEBACiBzdGF0aWMgaW50CiBCYXNlRXhjZXB0aW9uX2luaXQoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwga3dkcykpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHRtcCA9IHNlbGYtPmFyZ3M7Ci0gICAgc2VsZi0+YXJncyA9IGFyZ3M7Ci0gICAgUHlfSU5DUkVGKHNlbGYtPmFyZ3MpOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgUHlfWFNFVFJFRihzZWxmLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMjM0LDcgKzIzMCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBQeV9YSU5DUkVGKHRiKTsKKyAgICBQeV9JTkNSRUYodGIpOwogICAgIFB5X1hTRVRSRUYoc2VsZi0+dHJhY2ViYWNrLCB0Yik7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMjgsMTEgKzMyNCwxMCBAQAogCiAvKiBTdGVhbHMgYSByZWZlcmVuY2UgdG8gY2F1c2UgKi8KIHZvaWQKLVB5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY2F1c2UpIHsKLSAgICBQeU9iamVjdCAqb2xkX2NhdXNlID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2U7Ci0gICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2UgPSBjYXVzZTsKK1B5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY2F1c2UpCit7CiAgICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+c3VwcHJlc3NfY29udGV4dCA9IDE7Ci0gICAgUHlfWERFQ1JFRihvbGRfY2F1c2UpOworICAgIFB5X1hTRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2UsIGNhdXNlKTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMzQ0LDEwICszMzksOSBAQAogCiAvKiBTdGVhbHMgYSByZWZlcmVuY2UgdG8gY29udGV4dCAqLwogdm9pZAotUHlFeGNlcHRpb25fU2V0Q29udGV4dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNvbnRleHQpIHsKLSAgICBQeU9iamVjdCAqb2xkX2NvbnRleHQgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0OwotICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQgPSBjb250ZXh0OwotICAgIFB5X1hERUNSRUYob2xkX2NvbnRleHQpOworUHlFeGNlcHRpb25fU2V0Q29udGV4dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlfWFNFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0LCBjb250ZXh0KTsKIH0KIAogCkBAIC03MTQsNiArNzA4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLiIpOwogCiAvKgorICogICAgTW9kdWxlTm90Rm91bmRFcnJvciBleHRlbmRzIEltcG9ydEVycm9yCisgKi8KKworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0ltcG9ydEVycm9yLCBNb2R1bGVOb3RGb3VuZEVycm9yLCBJbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5vdCBmb3VuZC4iKTsKKworLyoKICAqICAgIE9TRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAqLwogCkBAIC05OTMsNyArOTk0LDcgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xMDczLDggKzEwNzQsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+bXllcnJubyAmJiBzZWxmLT5zdHJlcnJvcikKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJybm8gJVNdICVTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8gPyBzZWxmLT5teWVycm5vOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vLCBzZWxmLT5zdHJlcnJvcik7CiAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIApAQCAtMjQ3OCw2ICsyNDc4LDcgQEAKICAgICBQUkVfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBSRV9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBSRV9JTklUKEltcG9ydEVycm9yKQorICAgIFBSRV9JTklUKE1vZHVsZU5vdEZvdW5kRXJyb3IpCiAgICAgUFJFX0lOSVQoT1NFcnJvcikKICAgICBQUkVfSU5JVChFT0ZFcnJvcikKICAgICBQUkVfSU5JVChSdW50aW1lRXJyb3IpCkBAIC0yNTUwLDYgKzI1NTEsNyBAQAogICAgIFBPU1RfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBPU1RfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQT1NUX0lOSVQoSW1wb3J0RXJyb3IpCisgICAgUE9TVF9JTklUKE1vZHVsZU5vdEZvdW5kRXJyb3IpCiAgICAgUE9TVF9JTklUKE9TRXJyb3IpCiAgICAgSU5JVF9BTElBUyhFbnZpcm9ubWVudEVycm9yLCBPU0Vycm9yKQogICAgIElOSVRfQUxJQVMoSU9FcnJvciwgT1NFcnJvcikKQEAgLTI2MTIsNyArMjYxNCw5IEBACiAgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRVdPVUxEQkxPQ0spOwogICAgIFBPU1RfSU5JVChCcm9rZW5QaXBlRXJyb3IpOwogICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVQSVBFKTsKKyNpZmRlZiBFU0hVVERPV04KICAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFU0hVVERPV04pOworI2VuZGlmCiAgICAgUE9TVF9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKICAgICBBRERfRVJSTk8oQ2hpbGRQcm9jZXNzRXJyb3IsIEVDSElMRCk7CiAgICAgUE9TVF9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9maWxlb2JqZWN0LmMgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwppbmRleCAyMzRkMDdlLi5mNDQyNDE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2ZpbGVvYmplY3QuYworKysgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwpAQCAtMTI3LDcgKzEyNyw3IEBACiBpbnQKIFB5RmlsZV9Xcml0ZU9iamVjdChQeU9iamVjdCAqdiwgUHlPYmplY3QgKmYsIGludCBmbGFncykKIHsKLSAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICphcmdzLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKnJlc3VsdDsKICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoZiA9PSBOVUxMKSB7CkBAIC0xNDYsMTQgKzE0Niw3IEBACiAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKHdyaXRlcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3Qod3JpdGVyLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdmFsdWUpOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgUHlfREVDUkVGKHdyaXRlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IGQ5MmJlYzMuLjgwYmY3MWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTEyNCwxMSArMTI0LDQzIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2Zsb2F0X2Zyb21fc3RyaW5nX2lubmVyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuLCB2b2lkICpvYmopCit7CisgICAgZG91YmxlIHg7CisgICAgY29uc3QgY2hhciAqZW5kOworICAgIGNvbnN0IGNoYXIgKmxhc3QgPSBzICsgbGVuOworICAgIC8qIHN0cmlwIHNwYWNlICovCisgICAgd2hpbGUgKHMgPCBsYXN0ICYmIFB5X0lTU1BBQ0UoKnMpKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisKKyAgICB3aGlsZSAocyA8IGxhc3QgLSAxICYmIFB5X0lTU1BBQ0UobGFzdFstMV0pKSB7CisgICAgICAgIGxhc3QtLTsKKyAgICB9CisKKyAgICAvKiBXZSBkb24ndCBjYXJlIGFib3V0IG92ZXJmbG93IG9yIHVuZGVyZmxvdy4gIElmIHRoZSBwbGF0Zm9ybQorICAgICAqIHN1cHBvcnRzIHRoZW0sIGluZmluaXRpZXMgYW5kIHNpZ25lZCB6ZXJvZXMgKG9uIHVuZGVyZmxvdykgYXJlCisgICAgICogZmluZS4gKi8KKyAgICB4ID0gUHlPU19zdHJpbmdfdG9fZG91YmxlKHMsIChjaGFyICoqKSZlbmQsIE5VTEwpOworICAgIGlmIChlbmQgIT0gbGFzdCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gZmxvYXQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICIlUiIsIG9iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7CisgICAgfQorfQorCiBQeU9iamVjdCAqCiBQeUZsb2F0X0Zyb21TdHJpbmcoUHlPYmplY3QgKnYpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKmxhc3QsICplbmQ7Ci0gICAgZG91YmxlIHg7CisgICAgY29uc3QgY2hhciAqczsKICAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMTY5LDI3ICsyMDEsOCBAQAogICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBsYXN0ID0gcyArIGxlbjsKLSAgICAvKiBzdHJpcCBzcGFjZSAqLwotICAgIHdoaWxlIChzIDwgbGFzdCAmJiBQeV9JU1NQQUNFKCpzKSkKLSAgICAgICAgcysrOwotICAgIHdoaWxlIChzIDwgbGFzdCAtIDEgJiYgUHlfSVNTUEFDRShsYXN0Wy0xXSkpCi0gICAgICAgIGxhc3QtLTsKLSAgICAvKiBXZSBkb24ndCBjYXJlIGFib3V0IG92ZXJmbG93IG9yIHVuZGVyZmxvdy4gIElmIHRoZSBwbGF0Zm9ybQotICAgICAqIHN1cHBvcnRzIHRoZW0sIGluZmluaXRpZXMgYW5kIHNpZ25lZCB6ZXJvZXMgKG9uIHVuZGVyZmxvdykgYXJlCi0gICAgICogZmluZS4gKi8KLSAgICB4ID0gUHlPU19zdHJpbmdfdG9fZG91YmxlKHMsIChjaGFyICoqKSZlbmQsIE5VTEwpOwotICAgIGlmIChlbmQgIT0gbGFzdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gZmxvYXQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICIlUiIsIHYpOwotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIH0KLSAgICBlbHNlIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKLQorICAgIHJlc3VsdCA9IF9QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMocywgbGVuLCAiZmxvYXQiLCB2LCB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRfZnJvbV9zdHJpbmdfaW5uZXIpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMTUsMzUgKzIyOCw0OSBAQAogUHlGbG9hdF9Bc0RvdWJsZShQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICpuYjsKLSAgICBQeUZsb2F0T2JqZWN0ICpmbzsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIGRvdWJsZSB2YWw7CiAKLSAgICBpZiAob3AgJiYgUHlGbG9hdF9DaGVjayhvcCkpCi0gICAgICAgIHJldHVybiBQeUZsb2F0X0FTX0RPVUJMRSgoUHlGbG9hdE9iamVjdCopIG9wKTsKLQogICAgIGlmIChvcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoKG5iID0gUHlfVFlQRShvcCktPnRwX2FzX251bWJlcikgPT0gTlVMTCB8fCBuYi0+bmJfZmxvYXQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpOworICAgIGlmIChQeUZsb2F0X0NoZWNrKG9wKSkgeworICAgICAgICByZXR1cm4gUHlGbG9hdF9BU19ET1VCTEUob3ApOworICAgIH0KKworICAgIG5iID0gUHlfVFlQRShvcCktPnRwX2FzX251bWJlcjsKKyAgICBpZiAobmIgPT0gTlVMTCB8fCBuYi0+bmJfZmxvYXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAibXVzdCBiZSByZWFsIG51bWJlciwgbm90ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGZvID0gKFB5RmxvYXRPYmplY3QqKSAoKm5iLT5uYl9mbG9hdCkgKG9wKTsKLSAgICBpZiAoZm8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICghUHlGbG9hdF9DaGVjayhmbykpIHsKLSAgICAgICAgUHlfREVDUkVGKGZvKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJuYl9mbG9hdCBzaG91bGQgcmV0dXJuIGZsb2F0IG9iamVjdCIpOworICAgIHJlcyA9ICgqbmItPm5iX2Zsb2F0KSAob3ApOworICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmICghUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykuICAiCisgICAgICAgICAgICAgICAgIlRoZSBhYmlsaXR5IHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdCAiCisgICAgICAgICAgICAgICAgImlzIGRlcHJlY2F0ZWQsIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKGZvKTsKLSAgICBQeV9ERUNSRUYoZm8pOwotCisgICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUocmVzKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gdmFsOwogfQogCkBAIC0xMTk1LDcgKzEyMjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZsb2F0X2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2FzX2Zsb2F0LCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CiAgICAgbG9uZyBleHAsIHRvcF9leHAsIGxzYiwga2V5X2RpZ2l0OwogICAgIGNoYXIgKnMsICpjb2VmZl9zdGFydCwgKnNfc3RvcmUsICpjb2VmZl9lbmQsICpleHBfc3RhcnQsICpzX2VuZDsKQEAgLTEyNDcsNyArMTI3NCw3IEBACiAgICAgICogZXhwKzQqbmRpZ2l0cyBhbmQgZXhwLTQqbmRpZ2l0cyBhcmUgd2l0aGluIHRoZSByYW5nZSBvZiBhIGxvbmcuCiAgICAgICovCiAKLSAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoYXJnLCAmbGVuZ3RoKTsKKyAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuZ3RoKTsKICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzX2VuZCA9IHMgKyBsZW5ndGg7CkBAIC0xNDEwLDExICsxNDM3LDEwIEBACiAgICAgICAgIHMrKzsKICAgICBpZiAocyAhPSBzX2VuZCkKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICByZXN1bHRfYXNfZmxvYXQgPSBQeV9CdWlsZFZhbHVlKCIoZCkiLCBuZWdhdGUgPyAteCA6IHgpOwotICAgIGlmIChyZXN1bHRfYXNfZmxvYXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChjbHMsIHJlc3VsdF9hc19mbG9hdCk7Ci0gICAgUHlfREVDUkVGKHJlc3VsdF9hc19mbG9hdCk7CisgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKG5lZ2F0ZSA/IC14IDogeCk7CisgICAgaWYgKGNscyAhPSAoUHlPYmplY3QgKikmUHlGbG9hdF9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY2xzLCByZXN1bHQsIE5VTEwpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBvdmVyZmxvd19lcnJvcjoKQEAgLTE0NTEsMjkgKzE0NzcsMjMgQEAKICAgICBpbnQgZXhwb25lbnQ7CiAgICAgaW50IGk7CiAKLSAgICBQeU9iamVjdCAqcHJldjsKICAgICBQeU9iamVjdCAqcHlfZXhwb25lbnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpudW1lcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkZW5vbWluYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdF9wYWlyID0gTlVMTDsKICAgICBQeU51bWJlck1ldGhvZHMgKmxvbmdfbWV0aG9kcyA9IFB5TG9uZ19UeXBlLnRwX2FzX251bWJlcjsKIAotI2RlZmluZSBJTlBMQUNFX1VQREFURShvYmosIGNhbGwpIFwKLSAgICBwcmV2ID0gb2JqOyBcCi0gICAgb2JqID0gY2FsbDsgXAotICAgIFB5X0RFQ1JFRihwcmV2KTsgXAotCiAgICAgQ09OVkVSVF9UT19ET1VCTEUodiwgc2VsZik7CiAKICAgICBpZiAoUHlfSVNfSU5GSU5JVFkoc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBpbmZpbml0eSB0byBmbG9hdC5hc19pbnRlZ2VyX3JhdGlvLiIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeV9JU19OQU4oc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBOYU4gdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJhc19pbnRlZ2VyX3JhdGlvIiwgZ290byBlcnJvcik7CkBAIC0xNDg5LDI5ICsxNTA5LDMxIEBACiAgICAgICAgdG8gYmUgdHJ1bmNhdGVkIGJ5IFB5TG9uZ19Gcm9tRG91YmxlKCkuICovCiAKICAgICBudW1lcmF0b3IgPSBQeUxvbmdfRnJvbURvdWJsZShmbG9hdF9wYXJ0KTsKLSAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKFB5X0FCUyhleHBvbmVudCkpOworICAgIGlmIChweV9leHBvbmVudCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogZm9sZCBpbiAyKipleHBvbmVudCAqLwotICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOwotICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKGxhYnMoKGxvbmcpZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKLSAgICBJTlBMQUNFX1VQREFURShweV9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChkZW5vbWluYXRvciwgcHlfZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKICAgICBpZiAoZXhwb25lbnQgPiAwKSB7Ci0gICAgICAgIElOUExBQ0VfVVBEQVRFKG51bWVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9tdWx0aXBseShudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgZ290byBlcnJvcjsKKyAgICAgICAgUHlfU0VUUkVGKG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KG51bWVyYXRvciwgcHlfZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkZW5vbWluYXRvcik7Ci0gICAgICAgIGRlbm9taW5hdG9yID0gcHlfZXhwb25lbnQ7Ci0gICAgICAgIHB5X2V4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLAorICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICByZXN1bHRfcGFpciA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKIAotI3VuZGVmIElOUExBQ0VfVVBEQVRFCiBlcnJvcjoKICAgICBQeV9YREVDUkVGKHB5X2V4cG9uZW50KTsKICAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKQEAgLTE2MDYsNyArMTYyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGFyZyk7CisgICAgcyA9IFB5VW5pY29kZV9Bc1VURjgoYXJnKTsKICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc3RyY21wKHMsICJkb3VibGUiKSA9PSAwKSB7CkBAIC0xOTY2LDggKzE5ODgsMTIwIEBACiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317Miw0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBUbyBtYXRjaCB0aGUgTlBZX0hBTEZfUk9VTkRfVElFU19UT19FVkVOIGJlaGF2aW9yIGluOgorICogaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2Jsb2IvbWFzdGVyL251bXB5L2NvcmUvc3JjL25weW1hdGgvaGFsZmZsb2F0LmMKKyAqIFdlIHVzZToKKyAqICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgICAgTm90ZSB0aGUgdHJ1bmNhdGlvbgorICogICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKGYgLSBiaXRzID09IDAuNSAmJiBiaXRzICUgMikpIHsKKyAqICAgICAgICAgICBiaXRzKys7CisgKiAgICAgICB9CiAgKi8KKworaW50CitfUHlGbG9hdF9QYWNrMihkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICBkb3VibGUgZjsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzOworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAwOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfSU5GSU5JVFkoeCkpIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgLyogVGhlcmUgYXJlIDIwNDYgZGlzdGluY3QgaGFsZi1wcmVjaXNpb24gTmFOcyAoMTAyMiBzaWduYWxpbmcgYW5kCisgICAgICAgICAgIDEwMjQgcXVpZXQpLCBidXQgdGhlcmUgYXJlIG9ubHkgdHdvIHF1aWV0IE5hTnMgdGhhdCBkb24ndCBhcmlzZSBieQorICAgICAgICAgICBxdWlldGluZyBhIHNpZ25hbGluZyBOYU47IHdlIGdldCB0aG9zZSBieSBzZXR0aW5nIHRoZSB0b3Btb3N0IGJpdAorICAgICAgICAgICBvZiB0aGUgZnJhY3Rpb24gZmllbGQgYW5kIGNsZWFyaW5nIGFsbCBvdGhlciBmcmFjdGlvbiBiaXRzLiBXZQorICAgICAgICAgICBjaG9vc2UgdGhlIG9uZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzaWduLiAqLworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gNTEyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgIHggPSAteDsKKyAgICAgICAgfQorCisgICAgICAgIGYgPSBmcmV4cCh4LCAmZSk7CisgICAgICAgIGlmIChmIDwgMC41IHx8IGYgPj0gMS4wKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZXhwKCkgcmVzdWx0IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLyogTm9ybWFsaXplIGYgdG8gYmUgaW4gdGhlIHJhbmdlIFsxLjAsIDIuMCkgKi8KKyAgICAgICAgZiAqPSAyLjA7CisgICAgICAgIGUtLTsKKworICAgICAgICBpZiAoZSA+PSAxNikgeworICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTI1KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMjUuIFVuZGVyZmxvdyB0byB6ZXJvLiAqLworICAgICAgICAgICAgZiA9IDAuMDsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMTQpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0xNC4gR3JhZHVhbCB1bmRlcmZsb3cgKi8KKyAgICAgICAgICAgIGYgPSBsZGV4cChmLCAxNCArIGUpOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBpZiAoIShlID09IDAgJiYgZiA9PSAwLjApKSAqLyB7CisgICAgICAgICAgICBlICs9IDE1OworICAgICAgICAgICAgZiAtPSAxLjA7IC8qIEdldCByaWQgb2YgbGVhZGluZyAxICovCisgICAgICAgIH0KKworICAgICAgICBmICo9IDEwMjQuMDsgLyogMioqMTAgKi8KKyAgICAgICAgLyogUm91bmQgdG8gZXZlbiAqLworICAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7IC8qIE5vdGUgdGhlIHRydW5jYXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KGJpdHMgPCAxMDI0KTsKKyAgICAgICAgYXNzZXJ0KGUgPCAzMSk7CisgICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8ICgoZiAtIGJpdHMgPT0gMC41KSAmJiAoYml0cyAlIDIgPT0gMSkpKSB7CisgICAgICAgICAgICArK2JpdHM7CisgICAgICAgICAgICBpZiAoYml0cyA9PSAxMDI0KSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGNhcnJ5IHByb3BhZ2F0ZWQgb3V0IG9mIGEgc3RyaW5nIG9mIDEwIDEgYml0cy4gKi8KKyAgICAgICAgICAgICAgICBiaXRzID0gMDsKKyAgICAgICAgICAgICAgICArK2U7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gMzEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBiaXRzIHw9IChlIDw8IDEwKSB8IChzaWduIDw8IDE1KTsKKworICAgIC8qIFdyaXRlIG91dCByZXN1bHQuICovCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKSgoYml0cyA+PiA4KSAmIDB4RkYpOworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoYml0cyAmIDB4RkYpOworCisgICAgcmV0dXJuIDA7CisKKyAgT3ZlcmZsb3c6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJmbG9hdCB0b28gbGFyZ2UgdG8gcGFjayB3aXRoIGUgZm9ybWF0Iik7CisgICAgcmV0dXJuIC0xOworfQorCiBpbnQKIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CkBAIC0yMjAzLDYgKzIzMzcsNzYgQEAKIH0KIAogZG91YmxlCitfUHlGbG9hdF9VbnBhY2syKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgdW5zaWduZWQgaW50IGY7CisgICAgZG91YmxlIHg7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICBzaWduID0gKCpwID4+IDcpICYgMTsKKyAgICBlID0gKCpwICYgMHg3QykgPj4gMjsKKyAgICBmID0gKCpwICYgMHgwMykgPDwgODsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgIGYgfD0gKnA7CisKKyAgICBpZiAoZSA9PSAweDFmKSB7CisjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfSFVHRV9WQUwgOiBQeV9IVUdFX1ZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworI2lmZGVmIFB5X05BTgorICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfTkFOIDogUHlfTkFOOworI2Vsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW4ndCB1bnBhY2sgSUVFRSA3NTQgTmFOICIKKyAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IE5hTnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyNlbmRpZiAgLyogI2lmZGVmIFB5X05BTiAqLworICAgICAgICB9CisjZWxzZQorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eShzaWduKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oc2lnbik7CisgICAgICAgIH0KKyNlbmRpZiAgLyogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIgKi8KKyAgICB9CisKKyAgICB4ID0gKGRvdWJsZSlmIC8gMTAyNC4wOworCisgICAgaWYgKGUgPT0gMCkgeworICAgICAgICBlID0gLTE0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgeCArPSAxLjA7CisgICAgICAgIGUgLT0gMTU7CisgICAgfQorICAgIHggPSBsZGV4cCh4LCBlKTsKKworICAgIGlmIChzaWduKQorICAgICAgICB4ID0gLXg7CisKKyAgICByZXR1cm4geDsKK30KKworZG91YmxlCiBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKICAgICBpZiAoZmxvYXRfZm9ybWF0ID09IHVua25vd25fZm9ybWF0KSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggOWFhZGQ2MS4uNjJmOWYzNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgIG5ld19sYXN0aSA9IC0xOwogICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGxub3RhYl9sZW47IG9mZnNldCArPSAyKSB7CiAgICAgICAgICAgICBhZGRyICs9IGxub3RhYltvZmZzZXRdOwotICAgICAgICAgICAgbGluZSArPSBsbm90YWJbb2Zmc2V0KzFdOworICAgICAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpbG5vdGFiW29mZnNldCsxXTsKICAgICAgICAgICAgIGlmIChsaW5lID49IG5ld19saW5lbm8pIHsKICAgICAgICAgICAgICAgICBuZXdfbGFzdGkgPSBhZGRyOwogICAgICAgICAgICAgICAgIG5ld19saW5lbm8gPSBsaW5lOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgbWVtc2V0KGJsb2Nrc3RhY2ssICdcMCcsIHNpemVvZihibG9ja3N0YWNrKSk7CiAgICAgbWVtc2V0KGluX2ZpbmFsbHksICdcMCcsIHNpemVvZihpbl9maW5hbGx5KSk7CiAgICAgYmxvY2tzdGFja190b3AgPSAwOwotICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI1MSwxMCArMjUxLDYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVmVyaWZ5IHRoYXQgdGhlIGJsb2Nrc3RhY2sgdHJhY2tpbmcgY29kZSBkaWRuJ3QgZ2V0IGxvc3QuICovCkBAIC0yNzcsNyArMjczLDcgQEAKICAgICAgKiBjYW4gdGVsbCB3aGV0aGVyIHRoZSBqdW1wIGdvZXMgaW50byBhbnkgYmxvY2tzIHdpdGhvdXQgY29taW5nIG91dAogICAgICAqIGFnYWluIC0gaW4gdGhhdCBjYXNlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWxvdy4gKi8KICAgICBkZWx0YV9pYmxvY2sgPSAwOwotICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjk0LDEwICsyOTAsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgbWluX2RlbHRhX2libG9jayA9IFB5X01JTihtaW5fZGVsdGFfaWJsb2NrLCBkZWx0YV9pYmxvY2spOwotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZXJpdmUgdGhlIGFic29sdXRlIGlibG9jayB2YWx1ZXMgZnJvbSB0aGUgZGVsdGFzLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwppbmRleCA0Y2Q2NTkwLi42OWNkOTczIDEwMDY0NAotLS0gYS9PYmplY3RzL2Z1bmNvYmplY3QuYworKysgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwpAQCAtMjQ5LDcgKzI0OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9jb2RlKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKICAgICBQeV9zc2l6ZV90IG5mcmVlLCBuY2xvc3VyZTsKIAogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX2NvZGUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCkBAIC0yNzAsMTAgKzI2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICBuY2xvc3VyZSwgbmZyZWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2NvZGU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19jb2RlID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19jb2RlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI4Nyw4ICsyODQsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0yOTYsMTAgKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzEzLDggKzMwNiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0zMjIsMTAgKzMxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM0Myw4ICszMzIsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19kZWZhdWx0cy4KICAgICAgKiBDYW4gb25seSBzZXQgZnVuY19kZWZhdWx0cyB0byBOVUxMIG9yIGEgdHVwbGUuICovCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCkBAIC0zNTQsMTAgKzM0MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgdHVwbGUgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19kZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzUsOCArMzYwLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2t3ZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2t3ZGVmYXVsdHMuCkBAIC0zODYsMTAgKzM2OSw4IEBACiAgICAgICAgICAgICAiX19rd2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2t3ZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfa3dkZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2t3ZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDA4LDggKzM4OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9hbm5vdGF0aW9ucyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfYW5ub3RhdGlvbnMuCkBAIC00MjAsMTAgKzM5OSw4IEBACiAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19hbm5vdGF0aW9uczsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19hbm5vdGF0aW9ucyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IGQ0MDM1OTguLjI2ODBhYjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw3ICs1LDE1IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAKLXN0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3N0YXRpYyBjaGFyICpOT05fSU5JVF9DT1JPX01TRyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworCitzdGF0aWMgY2hhciAqQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwogCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCkBAIC0yOCw2ICszNiwyNiBAQAogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgUHlBc3luY0dlbk9iamVjdCAqYWdlbiA9IChQeUFzeW5jR2VuT2JqZWN0KilzZWxmOworICAgICAgICBQeU9iamVjdCAqZmluYWxpemVyID0gYWdlbi0+YWdfZmluYWxpemVyOworICAgICAgICBpZiAoZmluYWxpemVyICYmICFhZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmaW5hbGl6ZXIsIHNlbGYsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoc2VsZik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKQEAgLTc0LDYgKzEwMiwxMiBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwogCiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgIC8qIFdlIGhhdmUgdG8gaGFuZGxlIHRoaXMgY2FzZSBmb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKyAgICAgICAgICAgcmlnaHQgaGVyZSwgYmVjYXVzZSB0aGlzIGNvZGUgaGFzIHRvIGJlIGJldHdlZW4gVU5UUkFDSworICAgICAgICAgICBhbmQgR0NfRGVsLiAqLworICAgICAgICBQeV9DTEVBUigoKFB5QXN5bmNHZW5PYmplY3QqKWdlbiktPmFnX2ZpbmFsaXplcik7CisgICAgfQogICAgIGlmIChnZW4tPmdpX2ZyYW1lICE9IE5VTEwpIHsKICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9nZW4gPSBOVUxMOwogICAgICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKQEAgLTkzLDggKzEyNywxMiBAQAogCiAgICAgaWYgKGdlbi0+Z2lfcnVubmluZykgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNiwxMCArMTQ0LDE2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICJjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIGNvcm91dGluZSIpOwotICAgICAgICB9IGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJnICYmICFleGMpIHsKICAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIGV4aGF1c3RlZCBnZW5lcmF0b3I6CiAgICAgICAgICAgICAgICBvbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpLiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTE4LDkgKzE2MiwxMyBAQAogICAgICAgICBpZiAoYXJnICYmIGFyZyAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBjaGFyICptc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIjsKLSAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBOT05fSU5JVF9DT1JPX01TRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICAgICAgbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgYXN5bmMgZ2VuZXJhdG9yIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTUyLDggKzIwMCwxNiBAQAogICAgIGlmIChyZXN1bHQgJiYgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogRGVsYXkgZXhjZXB0aW9uIGluc3RhbnRpYXRpb24gaWYgd2UgY2FuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEFzeW5jIGdlbmVyYXRvcnMgY2Fubm90IHJldHVybiBhbnl0aGluZyBidXQgTm9uZSAqLworICAgICAgICAgICAgYXNzZXJ0KCFQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSk7CiAgICAgICAgICAgICBfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKQEAgLTE2MiwzNCArMjE4LDQzIEBACiAgICAgICAgIC8qIENoZWNrIGZvciBfX2Z1dHVyZV9fIGdlbmVyYXRvcl9zdG9wIGFuZCBjb25kaXRpb25hbGx5IHR1cm4KICAgICAgICAgICogYSBsZWFraW5nIFN0b3BJdGVyYXRpb24gaW50byBSdW50aW1lRXJyb3IgKHdpdGggaXRzIGNhdXNlCiAgICAgICAgICAqIHNldCBhcHByb3ByaWF0ZWx5KS4gKi8KLSAgICAgICAgaWYgKCgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgotICAgICAgICAgICAgICAoQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwgQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkKKworICAgICAgICBjb25zdCBpbnQgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzID0gQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19JVEVSQUJMRV9DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fQVNZTkNfR0VORVJBVE9SOworCisgICAgICAgIGlmIChnZW4tPmdpX2NvZGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgICAgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOwotICAgICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGVpdGhlcjoKKyAgICAgICAgICAgICAgICAgICogYSBnZW5lcmF0b3Igd2l0aCBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZzsKKyAgICAgICAgICAgICAgICAgICogYSBjb3JvdXRpbmU7CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fSVRFUkFCTEVfQ09ST1VUSU5FIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgKGRlY29yYXRlZCB3aXRoIHR5cGVzLmNvcm91dGluZSBkZWNvcmF0b3IpOworICAgICAgICAgICAgICAgICAgKiBhbiBhc3luYyBnZW5lcmF0b3IuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOwotICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pIHsKKyAgICAgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gb3JkaW5hcnkgZ2VuZXJhdG9yIHdpdGhvdXQKKyAgICAgICAgICAgICAgIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCBmbGFnLgorICAgICAgICAgICAgKi8KKwogICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwogCiAgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwogCi0gICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLwpAQCAtMjAyLDYgKzI2NywxNSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pICYmICFyZXN1bHQgJiYKKyAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikpCisgICAgeworICAgICAgICAvKiBjb2RlIGluIGBnZW5gIHJhaXNlZCBhIFN0b3BBc3luY0l0ZXJhdGlvbiBlcnJvcjoKKyAgICAgICAgICAgcmFpc2UgYSBSdW50aW1lRXJyb3IuCisgICAgICAgICovCisgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BBc3luY0l0ZXJhdGlvbiI7CisgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBnZW5lcmF0b3IgY2FuJ3QgYmUgcmVydW4sIHNvIHJlbGVhc2UgdGhlIGZyYW1lICovCkBAIC0yNDgsMTggKzMyMiwyMCBAQAogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKICAgICAgICAgcmV0dmFsID0gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKXlmLCBOVUxMKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKG1ldGgpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTI3OSw3ICszNTUsMTUgQEAKICAgICAgICAgUHlPYmplY3QgKmJ5dGVjb2RlID0gZi0+Zl9jb2RlLT5jb19jb2RlOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhieXRlY29kZSk7CiAKLSAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIDFdICE9IFlJRUxEX0ZST00pCisgICAgICAgIGlmIChmLT5mX2xhc3RpIDwgMCkgeworICAgICAgICAgICAgLyogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSBmcmFtZSBkaWRuJ3Qgc3RhcnQgeWV0LiBZSUVMRF9GUk9NCisgICAgICAgICAgICAgICBhbHdheXMgY29tZSBhZnRlciBMT0FEX0NPTlNUOiBhIGNvZGUgb2JqZWN0IHNob3VsZCBub3Qgc3RhcnQKKyAgICAgICAgICAgICAgIHdpdGggWUlFTERfRlJPTSAqLworICAgICAgICAgICAgYXNzZXJ0KGNvZGVbMF0gIT0gWUlFTERfRlJPTSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyBzaXplb2YoX1B5X0NPREVVTklUKV0gIT0gWUlFTERfRlJPTSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOwogICAgICAgICBQeV9JTkNSRUYoeWYpOwpAQCAtMzA2LDggKzM5MCwxMSBAQAogICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMSk7CiAgICAgaWYgKHJldHZhbCkgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7Ci0gICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOworICAgICAgICB9IGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICBtc2cgPSBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRzsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjcsMjEgKzQxNCwyMiBAQAogcmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQorX2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBpbnQgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgUHlPYmplY3QgKnR5cCwgUHlPYmplY3QgKnZhbCwgUHlPYmplY3QgKnRiKQogewotICAgIFB5T2JqZWN0ICp0eXA7Ci0gICAgUHlPYmplY3QgKnRiID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqeWYgPSBfUHlHZW5feWYoZ2VuKTsKICAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKHlmKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgICAgIGludCBlcnI7Ci0gICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICBpZiAoUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHR5cCwgUHlFeGNfR2VuZXJhdG9yRXhpdCkgJiYKKyAgICAgICAgICAgIGNsb3NlX29uX2dlbmV4aXQKKyAgICAgICAgKSB7CisgICAgICAgICAgICAvKiBBc3luY2hyb25vdXMgZ2VuZXJhdG9ycyAqc2hvdWxkIG5vdCogYmUgY2xvc2VkIHJpZ2h0IGF3YXkuCisgICAgICAgICAgICAgICBXZSBoYXZlIHRvIGFsbG93IHNvbWUgYXdhaXRzIHRvIHdvcmsgaXQgdGhyb3VnaCwgaGVuY2UgdGhlCisgICAgICAgICAgICAgICBgY2xvc2Vfb25fZ2VuZXhpdGAgcGFyYW1ldGVyIGhlcmUuCisgICAgICAgICAgICAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKICAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CkBAIC0zNTAsMTEgKzQzOCwxNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEsIDApOwogICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGEgZ2VuZXJhdG9yIG9yIGEgY29yb3V0aW5lLiAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgYXJncyk7CisgICAgICAgICAgICAvKiBDbG9zZSB0aGUgZ2VuZXJhdG9yIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgd2l0aAorICAgICAgICAgICAgICAgJ3lpZWxkIGZyb20nIG9yIGF3YWl0aW5nIG9uIHdpdGggJ2F3YWl0Jy4gKi8KKyAgICAgICAgICAgIHJldCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGNsb3NlX29uX2dlbmV4aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCwgdmFsLCB0Yik7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogYHlmYCBpcyBhbiBpdGVyYXRvciBvciBhIGNvcm91dGluZS1saWtlIG9iamVjdC4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfdGhyb3cpOwogICAgICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKQEAgLTM2Niw3ICs0NTksNyBAQAogICAgICAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7Ci0gICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ldGgsIGFyZ3MpOworICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhtZXRoLCB0eXAsIHZhbCwgdGIsIE5VTEwpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgfQpAQCAtMzc4LDcgKzQ3MSw4IEBACiAgICAgICAgICAgICBhc3NlcnQocmV0ID09IHlmKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwogICAgICAgICAgICAgLyogVGVybWluYXRpb24gcmVwZXRpdGlvbiBvZiBZSUVMRF9GUk9NICovCi0gICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpKys7CisgICAgICAgICAgICBhc3NlcnQoZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSA+PSAwKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBpZiAoX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpID09IDApIHsKICAgICAgICAgICAgICAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIHZhbCwgMCwgMCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbCk7CkBAIC00NDksNiArNTQzLDIxIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdHlwOworICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9nZW5fdGhyb3coZ2VuLCAxLCB0eXAsIHZhbCwgdGIpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwLCAwKTsKQEAgLTU2Niw4ICs2NzUsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5naV9uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01NzUsMTAgKzY4Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+Z2lfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTkyLDggKzY5Nyw2IEBACiBzdGF0aWMgaW50CiBnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTYwMSwxMCArNzA0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+Z2lfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA0NSwyMSArMTE0NiwyMSBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICphd19haXRlcjsKKyAgICBQeU9iamVjdCAqYWdzX2FpdGVyOwogfSBQeUFJdGVyV3JhcHBlcjsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgogYWl0ZXJfd3JhcHBlcl9pdGVybmV4dChQeUFJdGVyV3JhcHBlciAqYXcpCiB7Ci0gICAgX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZShhdy0+YXdfYWl0ZXIpOworICAgIF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUoYXctPmFnc19haXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKIGFpdGVyX3dyYXBwZXJfdHJhdmVyc2UoUHlBSXRlcldyYXBwZXIgKmF3LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YXdfYWl0ZXIpOworICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDY3LDcgKzExNjgsNyBAQAogYWl0ZXJfd3JhcHBlcl9kZWFsbG9jKFB5QUl0ZXJXcmFwcGVyICphdykKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilhdyk7Ci0gICAgUHlfQ0xFQVIoYXctPmF3X2FpdGVyKTsKKyAgICBQeV9DTEVBUihhdy0+YWdzX2FpdGVyKTsKICAgICBQeU9iamVjdF9HQ19EZWwoYXcpOwogfQogCkBAIC0xMTI5LDcgKzEyMzAsODUxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoYWl0ZXIpOwotICAgIGF3LT5hd19haXRlciA9IGFpdGVyOworICAgIGF3LT5hZ3NfYWl0ZXIgPSBhaXRlcjsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soYXcpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilhdzsKIH0KKworCisvKiA9PT09PT09PT0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMgPT09PT09PT09ICovCisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBBV0FJVEFCTEVfU1RBVEVfSU5JVCwgICAvKiBuZXcgYXdhaXRhYmxlLCBoYXMgbm90IHlldCBiZWVuIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0lURVIsICAgLyogYmVpbmcgaXRlcmF0ZWQgKi8KKyAgICBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VELCAvKiBjbG9zZWQgKi8KK30gQXdhaXRhYmxlU3RhdGU7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ3NfZ2VuOworCisgICAgLyogQ2FuIGJlIE5VTEwsIHdoZW4gaW4gdGhlIF9fYW5leHRfXygpIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXNlbmQoTm9uZSkiKSAqLworICAgIFB5T2JqZWN0ICphZ3Nfc2VuZHZhbDsKKworICAgIEF3YWl0YWJsZVN0YXRlIGFnc19zdGF0ZTsKK30gUHlBc3luY0dlbkFTZW5kOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWd0X2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSAiYWNsb3NlKCkiIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXRocm93KEdlbmVyYXRvckV4aXQpIikgKi8KKyAgICBQeU9iamVjdCAqYWd0X2FyZ3M7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Rfc3RhdGU7Cit9IFB5QXN5bmNHZW5BVGhyb3c7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqYWd3X3ZhbDsKK30gX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWU7CisKKworI2lmbmRlZiBfUHlBc3luY0dlbl9NQVhGUkVFTElTVAorI2RlZmluZSBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCA4MAorI2VuZGlmCisKKy8qIEZyZWVsaXN0cyBib29zdCBwZXJmb3JtYW5jZSA2LTEwJTsgdGhleSBhbHNvIHJlZHVjZSBtZW1vcnkKKyAgIGZyYWdtZW50YXRpb24sIGFzIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlIGFuZCBQeUFzeW5jR2VuQVNlbmQKKyAgIGFyZSBzaG9ydC1saXZpbmcgb2JqZWN0cyB0aGF0IGFyZSBpbnN0YW50aWF0ZWQgZm9yIGV2ZXJ5CisgICBfX2FuZXh0X18gY2FsbC4KKyovCisKK3N0YXRpYyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqYWdfdmFsdWVfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ192YWx1ZV9mcmVlbGlzdF9mcmVlID0gMDsKKworc3RhdGljIFB5QXN5bmNHZW5BU2VuZCAqYWdfYXNlbmRfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlID0gMDsKKworI2RlZmluZSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpCisKKyNkZWZpbmUgUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykgXAorICAgICAgICAgICAgICAgICAgICAoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKQorCisKK3N0YXRpYyBpbnQKK2FzeW5jX2dlbl90cmF2ZXJzZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGdlbi0+YWdfZmluYWxpemVyKTsKKyAgICByZXR1cm4gZ2VuX3RyYXZlcnNlKChQeUdlbk9iamVjdCopZ2VuLCB2aXNpdCwgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3JlcHIoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxhc3luY19nZW5lcmF0b3Igb2JqZWN0ICVTIGF0ICVwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tPmFnX3F1YWxuYW1lLCBvKTsKK30KKworCitzdGF0aWMgaW50Cithc3luY19nZW5faW5pdF9ob29rcyhQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyOworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXI7CisKKyAgICBpZiAoby0+YWdfaG9va3NfaW5pdGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDE7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgZmluYWxpemVyID0gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworICAgIGlmIChmaW5hbGl6ZXIpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZpbmFsaXplcik7CisgICAgICAgIG8tPmFnX2ZpbmFsaXplciA9IGZpbmFsaXplcjsKKyAgICB9CisKKyAgICBmaXJzdGl0ZXIgPSB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgaWYgKGZpcnN0aXRlcikgeworICAgICAgICBQeU9iamVjdCAqcmVzOworCisgICAgICAgIFB5X0lOQ1JFRihmaXJzdGl0ZXIpOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZmlyc3RpdGVyLCAiTyIsIG8pOworICAgICAgICBQeV9ERUNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FuZXh0KFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBOVUxMKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBhcmcpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYWNsb3NlKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2F0aHJvd19uZXcobywgTlVMTCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93KFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIGFyZ3MpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBhc3luY19nZW5fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgKHNldHRlcilnZW5fc2V0X25hbWUsCisgICAgIFB5RG9jX1NUUigibmFtZSBvZiB0aGUgYXN5bmMgZ2VuZXJhdG9yIil9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWdlbl9zZXRfcXVhbG5hbWUsCisgICAgIFB5RG9jX1NUUigicXVhbGlmaWVkIG5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7ImFnX2F3YWl0IiwgKGdldHRlciljb3JvX2dldF9jcl9hd2FpdCwgTlVMTCwKKyAgICAgUHlEb2NfU1RSKCJvYmplY3QgYmVpbmcgYXdhaXRlZCBvbiwgb3IgTm9uZSIpfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBhc3luY19nZW5fbWVtYmVybGlzdFtdID0geworICAgIHsiYWdfZnJhbWUiLCAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19mcmFtZSksICAgUkVBRE9OTFl9LAorICAgIHsiYWdfcnVubmluZyIsIFRfQk9PTCwgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19ydW5uaW5nKSwgUkVBRE9OTFl9LAorICAgIHsiYWdfY29kZSIsICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19jb2RlKSwgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitQeURvY19TVFJWQVIoYXN5bmNfYWNsb3NlX2RvYywKKyJhY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CisKK1B5RG9jX1NUUlZBUihhc3luY19hc2VuZF9kb2MsCisiYXNlbmQodikgLT4gc2VuZCAndicgaW4gZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXRocm93X2RvYywKKyJhdGhyb3codHlwWyx2YWxbLHRiXV0pIC0+IHJhaXNlIGV4Y2VwdGlvbiBpbiBnZW5lcmF0b3IuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fbWV0aG9kc1tdID0geworICAgIHsiYXNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kLCBNRVRIX08sIGFzeW5jX2FzZW5kX2RvY30sCisgICAgeyJhdGhyb3ciLChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93LCBNRVRIX1ZBUkFSR1MsIGFzeW5jX2F0aHJvd19kb2N9LAorICAgIHsiYWNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hY2xvc2UsIE1FVEhfTk9BUkdTLCBhc3luY19hY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXNfYXN5bmMgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAodW5hcnlmdW5jKWFzeW5jX2dlbl9hbmV4dCAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBQeUFzeW5jR2VuX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbk9iamVjdCksICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZ2VuX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAocmVwcmZ1bmMpYXN5bmNfZ2VuX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX3dlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXN5bmNfZ2VuX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgYXN5bmNfZ2VuX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgX1B5R2VuX0ZpbmFsaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworCitQeU9iamVjdCAqCitQeUFzeW5jR2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQoreworICAgIFB5QXN5bmNHZW5PYmplY3QgKm87CisgICAgbyA9IChQeUFzeW5jR2VuT2JqZWN0ICopZ2VuX25ld193aXRoX3F1YWxuYW1lKAorICAgICAgICAmUHlBc3luY0dlbl9UeXBlLCBmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWdfZmluYWxpemVyID0gTlVMTDsKKyAgICBvLT5hZ19jbG9zZWQgPSAwOworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDA7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCitpbnQKK1B5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHModm9pZCkKK3sKKyAgICBpbnQgcmV0ID0gYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSArIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWU7CisKKyAgICB3aGlsZSAoYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0Wy0tYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKG8pOworICAgIH0KKworICAgIHdoaWxlIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIFB5QXN5bmNHZW5BU2VuZCAqbzsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0Wy0tYWdfYXNlbmRfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpOworICAgICAgICBQeU9iamVjdF9HQ19EZWwobyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZAorUHlBc3luY0dlbl9GaW5pKHZvaWQpCit7CisgICAgUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cygpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fdW53cmFwX3ZhbHVlKFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pCisgICAgICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpCisgICAgICAgICkgeworICAgICAgICAgICAgZ2VuLT5hZ19jbG9zZWQgPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAvKiBhc3luYyB5aWVsZCAqLworICAgICAgICBfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKCgoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUqKXJlc3VsdCktPmFnd192YWwpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBBU2VuZCBBd2FpdGFibGUgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl9hc2VuZF9kZWFsbG9jKFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilvKTsKKyAgICBQeV9DTEVBUihvLT5hZ3NfZ2VuKTsKKyAgICBQeV9DTEVBUihvLT5hZ3Nfc2VuZHZhbCk7CisgICAgaWYgKGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ19hc2VuZF9mcmVlbGlzdFthZ19hc2VuZF9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9HQ19EZWwobyk7CisgICAgfQorfQorCitzdGF0aWMgaW50Cithc3luY19nZW5fYXNlbmRfdHJhdmVyc2UoUHlBc3luY0dlbkFTZW5kICpvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvLT5hZ3NfZ2VuKTsKKyAgICBQeV9WSVNJVChvLT5hZ3Nfc2VuZHZhbCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9zZW5kKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBhcmcgPSBvLT5hZ3Nfc2VuZHZhbDsKKyAgICAgICAgfQorICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZywgMCwgMCk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2l0ZXJuZXh0KFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX3NlbmQobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF90aHJvdyhQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWdzX2dlbiwgYXJncyk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hc2VuZF9hc19hc3luYyA9IHsKKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuQVNlbmRfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXNlbmQiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVNlbmQpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXNlbmRfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hc2VuZF9hc19hc3luYywgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX2FzZW5kX3RyYXZlcnNlLCAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hc2VuZF9pdGVybmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnNlbmR2YWwpCit7CisgICAgUHlBc3luY0dlbkFTZW5kICpvOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoUHlBc3luY0dlbkFTZW5kLCAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBvLT5hZ3NfZ2VuID0gZ2VuOworCisgICAgUHlfWElOQ1JFRihzZW5kdmFsKTsKKyAgICBvLT5hZ3Nfc2VuZHZhbCA9IHNlbmR2YWw7CisKKyAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKworICAgIF9QeU9iamVjdF9HQ19UUkFDSygoUHlPYmplY3QqKW8pOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgVmFsdWUgV3JhcHBlciAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX2RlYWxsb2MoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm8pCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopbyk7CisgICAgUHlfQ0xFQVIoby0+YWd3X3ZhbCk7CisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUrK10gPSBvOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvKTsKKyAgICB9Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX3RyYXZlcnNlKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPmFnd192YWwpOworICAgIHJldHVybiAwOworfQorCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl93cmFwcGVkX3ZhbHVlIiwgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylhc3luY19nZW5fd3JhcHBlZF92YWxfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitQeU9iamVjdCAqCitfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhQeU9iamVjdCAqdmFsKQoreworICAgIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvOworICAgIGFzc2VydCh2YWwpOworCisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZS0tOworICAgICAgICBvID0gYWdfdmFsdWVfZnJlZWxpc3RbYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpOworICAgICAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBvLT5hZ3dfdmFsID0gdmFsOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIF9QeU9iamVjdF9HQ19UUkFDSygoUHlPYmplY3QqKW8pOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgQVRocm93IGF3YWl0YWJsZSAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX2F0aHJvd19kZWFsbG9jKFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopbyk7CisgICAgUHlfQ0xFQVIoby0+YWd0X2dlbik7CisgICAgUHlfQ0xFQVIoby0+YWd0X2FyZ3MpOworICAgIFB5T2JqZWN0X0dDX0RlbChvKTsKK30KKworCitzdGF0aWMgaW50Cithc3luY19nZW5fYXRocm93X3RyYXZlcnNlKFB5QXN5bmNHZW5BVGhyb3cgKm8sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPmFndF9nZW4pOworICAgIFB5X1ZJU0lUKG8tPmFndF9hcmdzKTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19zZW5kKFB5QXN5bmNHZW5BVGhyb3cgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlHZW5PYmplY3QgKmdlbiA9IChQeUdlbk9iamVjdCopby0+YWd0X2dlbjsKKyAgICBQeUZyYW1lT2JqZWN0ICpmID0gZ2VuLT5naV9mcmFtZTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwKKyAgICAgICAgICAgIG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKG8tPmFndF9nZW4tPmFnX2Nsb3NlZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JVEVSOworCisgICAgICAgIGlmIChvLT5hZ3RfYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgICAgICBvLT5hZ3RfZ2VuLT5hZ19jbG9zZWQgPSAxOworCisgICAgICAgICAgICByZXR2YWwgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8qIERvIG5vdCBjbG9zZSBnZW5lcmF0b3Igd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCBpcyBwYXNzZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCwgTlVMTCwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9jbG9zZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0eXA7CisgICAgICAgICAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoby0+YWd0X2FyZ3MsICJhdGhyb3ciLCAxLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHZhbCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLyogRG8gbm90IGNsb3NlIGdlbmVyYXRvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0IGlzIHBhc3NlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAsIHZhbCwgdGIpOworICAgICAgICAgICAgcmV0dmFsID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAgIGFzc2VydChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lURVIpOworCisgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0ICopZ2VuLCBhcmcsIDAsIDApOworICAgIGlmIChvLT5hZ3RfYXJncykgeworICAgICAgICByZXR1cm4gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgaWYgKHJldHZhbCkgeworICAgICAgICAgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGdvdG8geWllbGRfY2xvc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworeWllbGRfY2xvc2U6CisgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICByZXR1cm4gTlVMTDsKKworY2hlY2tfZXJyb3I6CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKSkgeworICAgICAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgICAgICBpZiAoby0+YWd0X2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogd2hlbiBhY2xvc2UoKSBpcyBjYWxsZWQgd2UgZG9uJ3Qgd2FudCB0byBwcm9wYWdhdGUKKyAgICAgICAgICAgICAgIFN0b3BBc3luY0l0ZXJhdGlvbjsganVzdCByYWlzZSBTdG9wSXRlcmF0aW9uLCBzaWduYWxsaW5nCisgICAgICAgICAgICAgICB0aGF0ICdhY2xvc2UoKScgaXMgZG9uZS4gKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfR2VuZXJhdG9yRXhpdCkpIHsKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgICAgICAgICAgLyogaWdub3JlIHRoZXNlIGVycm9ycyAqLworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd190aHJvdyhQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR2YWwgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0KilvLT5hZ3RfZ2VuLCBhcmdzKTsKKyAgICBpZiAoby0+YWd0X2FyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X2l0ZXJuZXh0KFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfc2VuZChvLCBQeV9Ob25lKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19jbG9zZShQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fYXRocm93X21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvd19zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMgPSB7CisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbkFUaHJvd19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl9hdGhyb3ciLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5BVGhyb3cpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl9hdGhyb3dfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2F0aHJvd19hc19hc3luYywgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylhc3luY19nZW5fYXRocm93X3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBhc3luY19nZW5fYXRocm93X21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlBc3luY0dlbkFUaHJvdyAqbzsKKyAgICBvID0gUHlPYmplY3RfR0NfTmV3KFB5QXN5bmNHZW5BVGhyb3csICZfUHlBc3luY0dlbkFUaHJvd19UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvLT5hZ3RfZ2VuID0gZ2VuOworICAgIG8tPmFndF9hcmdzID0gYXJnczsKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBQeV9YSU5DUkVGKGFyZ3MpOworICAgIF9QeU9iamVjdF9HQ19UUkFDSygoUHlPYmplY3QqKW8pOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2l0ZXJvYmplY3QuYyBiL09iamVjdHMvaXRlcm9iamVjdC5jCmluZGV4IGFiMjlmZjguLjc1YjJmY2IgMTAwNjQ0Ci0tLSBhL09iamVjdHMvaXRlcm9iamVjdC5jCisrKyBiL09iamVjdHMvaXRlcm9iamVjdC5jCkBAIC0yMDgsMzAgKzIwOCwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNhbGxpdGVyX2l0ZXJuZXh0KGNhbGxpdGVyb2JqZWN0ICppdCkKIHsKLSAgICBpZiAoaXQtPml0X2NhbGxhYmxlICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGl0LT5pdF9jYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgb2s7Ci0gICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKG9rID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLyogQ29tbW9uIGNhc2UsIGZhc3QgcGF0aCAqLwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAob2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOwotICAgICAgICAgICAgfQorICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoaXQtPml0X2NhbGxhYmxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhpdC0+aXRfY2FsbGFibGUpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBpbnQgb2s7CisKKyAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKKyAgICAgICAgaWYgKG9rID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBpZiAob2sgPiAwKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOwogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CisgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IDgxNWExYjkuLmRjZDdiNWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC00OSw3ICs0OSw3IEBACiAgICAgbmV3X2FsbG9jYXRlZCA9IChuZXdzaXplID4+IDMpICsgKG5ld3NpemUgPCA5ID8gMyA6IDYpOwogCiAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFBZX1NJWkVfTUFYIC0gbmV3c2l6ZSkgeworICAgIGlmIChuZXdfYWxsb2NhdGVkID4gU0laRV9NQVggLSBuZXdzaXplKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UgewpAQCAtNTksNyArNTksNyBAQAogICAgIGlmIChuZXdzaXplID09IDApCiAgICAgICAgIG5ld19hbGxvY2F0ZWQgPSAwOwogICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKLSAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQorICAgIGlmIChuZXdfYWxsb2NhdGVkIDw9IChTSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCiAgICAgICAgIFB5TWVtX1JFU0laRShpdGVtcywgUHlPYmplY3QgKiwgbmV3X2FsbG9jYXRlZCk7CiAgICAgZWxzZQogICAgICAgICBpdGVtcyA9IE5VTEw7CkBAIC04Miw2ICs4MiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfYWxsb2Modm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCBhbGxvY2F0aW9uczogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKICAgICAgICAgY291bnRfYWxsb2MpOwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCByZXVzZSB0aHJvdWdoIGZyZWVsaXN0OiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xMzAsNyArMTQwLDYgQEAKIFB5TGlzdF9OZXcoUHlfc3NpemVfdCBzaXplKQogewogICAgIFB5TGlzdE9iamVjdCAqb3A7Ci0gICAgc2l6ZV90IG5ieXRlczsKICNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCiAgICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewpAQCAtMTQzLDExICsxNTIsNiBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyB3aXRob3V0IGFuIGFjdHVhbCBvdmVyZmxvdywKLSAgICAgKiAgd2hpY2ggY2FuIGNhdXNlIGNvbXBpbGVyIHRvIG9wdGltaXNlIG91dCAqLwotICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgbmJ5dGVzID0gc2l6ZSAqIHNpemVvZihQeU9iamVjdCAqKTsKICAgICBpZiAobnVtZnJlZSkgewogICAgICAgICBudW1mcmVlLS07CiAgICAgICAgIG9wID0gZnJlZV9saXN0W251bWZyZWVdOwpAQCAtMTY2LDEyICsxNzAsMTEgQEAKICAgICBpZiAoc2l6ZSA8PSAwKQogICAgICAgICBvcC0+b2JfaXRlbSA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9NQUxMT0MobmJ5dGVzKTsKKyAgICAgICAgb3AtPm9iX2l0ZW0gPSAoUHlPYmplY3QgKiopIFB5TWVtX0NhbGxvYyhzaXplLCBzaXplb2YoUHlPYmplY3QgKikpOwogICAgICAgICBpZiAob3AtPm9iX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9wKTsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9Ci0gICAgICAgIG1lbXNldChvcC0+b2JfaXRlbSwgMCwgbmJ5dGVzKTsKICAgICB9CiAgICAgUHlfU0laRShvcCkgPSBzaXplOwogICAgIG9wLT5hbGxvY2F0ZWQgPSBzaXplOwpAQCAtMjE2LDcgKzIxOSw2IEBACiBQeUxpc3RfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwKICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdpdGVtKQogewotICAgIFB5T2JqZWN0ICpvbGRpdGVtOwogICAgIFB5T2JqZWN0ICoqcDsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTIzMCw5ICsyMzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5TGlzdE9iamVjdCAqKW9wKSAtPiBvYl9pdGVtICsgaTsKLSAgICBvbGRpdGVtID0gKnA7Ci0gICAgKnAgPSBuZXdpdGVtOwotICAgIFB5X1hERUNSRUYob2xkaXRlbSk7CisgICAgUHlfWFNFVFJFRigqcCwgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAod2hlcmUgPCAwKSB7CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgUHlfSU5DUkVGKHYpOwpAQCAtNDgxLDkgKzQ4MSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNkZWZpbmUgYiAoKFB5TGlzdE9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeUxpc3RPYmplY3QgKikgUHlMaXN0X05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcxNCw3ICs3MTQsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcCA9IHNpemU7CkBAIC03MzMsNyArNzMzLDYgQEAKIHN0YXRpYyBpbnQKIGxpc3RfYXNzX2l0ZW0oUHlMaXN0T2JqZWN0ICphLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlfU0laRShhKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGFzc2lnbm1lbnQgaW5kZXggb3V0IG9mIHJhbmdlIik7CkBAIC03NDIsOSArNzQxLDcgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbGlzdF9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKICAgICBQeV9JTkNSRUYodik7Ci0gICAgb2xkX3ZhbHVlID0gYS0+b2JfaXRlbVtpXTsKLSAgICBhLT5vYl9pdGVtW2ldID0gdjsKLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKKyAgICBQeV9TRVRSRUYoYS0+b2JfaXRlbVtpXSwgdik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTgwNyw3ICs4MDQsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgICAgIH0KICAgICAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPT0gLTEpIHsKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG0gKyBuKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC04MzUsMjMgKzgzMiwyNSBAQAogCiAgICAgLyogR3Vlc3MgYSByZXN1bHQgbGlzdCBzaXplLiAqLwogICAgIG4gPSBQeU9iamVjdF9MZW5ndGhIaW50KGIsIDgpOwotICAgIGlmIChuID09IC0xKSB7CisgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBtID0gUHlfU0laRShzZWxmKTsKLSAgICBtbiA9IG0gKyBuOwotICAgIGlmIChtbiA+PSBtKSB7CisgICAgaWYgKG0gPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgLyogbSArIG4gb3ZlcmZsb3dlZDsgb24gdGhlIGNoYW5jZSB0aGF0IG4gbGllZCwgYW5kIHRoZXJlIHJlYWxseQorICAgICAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCisgICAgICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1uID0gbSArIG47CiAgICAgICAgIC8qIE1ha2Ugcm9vbS4gKi8KLSAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA9PSAtMSkKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAvKiBNYWtlIHRoZSBsaXN0IHNhbmUgYWdhaW4uICovCiAgICAgICAgIFB5X1NJWkUoc2VsZikgPSBtOwogICAgIH0KLSAgICAvKiBFbHNlIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKLSAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCi0gICAgICogZXZlbnR1YWxseSBydW4gb3V0IG9mIG1lbW9yeSBkdXJpbmcgdGhlIGxvb3AuCi0gICAgICovCiAKICAgICAvKiBSdW4gaXRlcmF0b3IgdG8gZXhoYXVzdGlvbi4gKi8KICAgICBmb3IgKDs7KSB7CkBAIC0yNTAwLDkgKzI0OTksNiBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW5ndGggPD0KLSAgICAgICAgICAgICAgICAgICBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCopKTsKLQogICAgICAgICAgICAgZ2FyYmFnZSA9IChQeU9iamVjdCoqKQogICAgICAgICAgICAgICAgIFB5TWVtX01BTExPQyhzbGljZWxlbmd0aCpzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgICAgICAgICBpZiAoIWdhcmJhZ2UpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdHNvcnQudHh0IGIvT2JqZWN0cy9saXN0c29ydC50eHQKaW5kZXggMTUyYTI3MC4uMTdkMjc5NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0c29ydC50eHQKKysrIGIvT2JqZWN0cy9saXN0c29ydC50eHQKQEAgLTQ4Niw3ICs0ODYsNyBAQAogSSBmaXJzdCBsZWFybmVkIGFib3V0IHRoZSBnYWxsb3Bpbmcgc3RyYXRlZ3kgaW4gYSByZWxhdGVkIGNvbnRleHQ7IHNlZToKIAogICAgICJBZGFwdGl2ZSBTZXQgSW50ZXJzZWN0aW9ucywgVW5pb25zLCBhbmQgRGlmZmVyZW5jZXMiICgyMDAwKQotICAgIEVyaWsgRC4gRGVtYWluZSwgQWxlamFuZHJvIEzzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KKyAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBMw7NwZXotT3J0aXosIEouIElhbiBNdW5ybwogCiBhbmQgaXRzIGZvbGxvd3VwKHMpLiAgQW4gZWFybGllciBwYXBlciBjYWxsZWQgdGhlIHNhbWUgc3RyYXRlZ3kKICJleHBvbmVudGlhbCBzZWFyY2giOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0IGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CmluZGV4IGQyNDdlZGQuLjUxNTM3NTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAorKysgYi9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKQEAgLTEyLDQyICsxMiw0NyBAQAogICAgICAgICAwCQkgICAgMQogICAgICAgICA2CQkgICAgMgogICAgICAgIDUwCQkgICAgNwotICAgICAgMzUwICAgICAgICAgICAgICAgICAzMDcKLSAgICAgIDM2MSAgICAgICAgICAgICAgICAgMzA4CisgICAgICAzNTAgICAgICAgICAgICAgICAgIDIwNworICAgICAgMzYxICAgICAgICAgICAgICAgICAyMDgKIAogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZXNlIG51bWJlcnMgbGl0ZXJhbGx5LCB3ZSBjb21wcmVzcyB0aGUgbGlzdCBieSBzdG9yaW5nIG9ubHkKLXRoZSBpbmNyZW1lbnRzIGZyb20gb25lIHJvdyB0byB0aGUgbmV4dC4gIENvbmNlcHR1YWxseSwgdGhlIHN0b3JlZCBsaXN0IG1pZ2h0Cit0aGUgZGlmZmVyZW5jZSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAogbG9vayBsaWtlOgogCi0gICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMzAwLCAgMTEsIDEKKyAgICAwLCAxLCAgNiwgMSwgIDQ0LCA1LCAgMzAwLCAyMDAsICAxMSwgMQogCi1UaGUgYWJvdmUgZG9lc24ndCByZWFsbHkgd29yaywgYnV0IGl0J3MgYSBzdGFydC4gTm90ZSB0aGF0IGFuIHVuc2lnbmVkIGJ5dGUKLWNhbid0IGhvbGQgbmVnYXRpdmUgdmFsdWVzLCBvciB2YWx1ZXMgbGFyZ2VyIHRoYW4gMjU1LCBhbmQgdGhlIGFib3ZlIGV4YW1wbGUKLWNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgorVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIEFuIHVuc2lnbmVkIGJ5dGUgKGJ5dGUgY29kZQorb2Zmc2V0KSBjYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYSBzaWduZWQgYnl0ZQorKGxpbmUgbnVtYmVyKSBjYW4ndCBob2xkIHZhbHVlcyBsYXJnZXIgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjgsIGFuZCB0aGUKK2Fib3ZlIGV4YW1wbGUgY29udGFpbnMgdHdvIHN1Y2ggdmFsdWVzLiBTbyB3ZSBtYWtlIHR3byB0d2Vha3M6CiAKLSAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nCi0gbGluZSAjcyBib3RoIGluY3JlYXNlIG1vbm90b25pY2FsbHksIGFuZAotIChiKSBpZiBhdCBsZWFzdCBvbmUgY29sdW1uIGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LAotIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwgdGhlcmUncyBubyB3YXkgdG8ga25vdwotIGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLiAgVGhhdCdzIHRoZSBkZWxpY2F0ZQotIHBhcnQuICBBIHVzZXIgb2YgY29fbG5vdGFiIGRlc2lyaW5nIHRvIGZpbmQgdGhlIHNvdXJjZSBsaW5lIG51bWJlcgotIGNvcnJlc3BvbmRpbmcgdG8gYSBieXRlY29kZSBhZGRyZXNzIEEgc2hvdWxkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMKKyAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGluY3JlYXNlIG1vbm90b25pY2FsbHksCisgYW5kCisgKGIpIGlmIGJ5dGUgY29kZSBvZmZzZXQganVtcHMgYnkgbW9yZSB0aGFuIDI1NSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQsIG9yIGlmCisgc291cmNlIGNvZGUgbGluZSBudW1iZXIganVtcHMgYnkgbW9yZSB0aGFuIDEyNyBvciBsZXNzIHRoYW4gLTEyOCBmcm9tIG9uZSByb3cKKyB0byB0aGUgbmV4dCwgbW9yZSB0aGFuIG9uZSBwYWlyIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlLiBJbiBjYXNlICNiLAorIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgZnJvbSBsb29raW5nIGF0IHRoZSB0YWJsZSBsYXRlciBob3cgbWFueSB3ZXJlIHdyaXR0ZW4uCisgVGhhdCdzIHRoZSBkZWxpY2F0ZSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UKKyBsaW5lIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZQorIHRoaXM6CiAKICAgICBsaW5lbm8gPSBhZGRyID0gMAogICAgIGZvciBhZGRyX2luY3IsIGxpbmVfaW5jciBpbiBjb19sbm90YWI6CiAgICAgICAgIGFkZHIgKz0gYWRkcl9pbmNyCiAgICAgICAgIGlmIGFkZHIgPiBBOgogICAgICAgICAgICAgcmV0dXJuIGxpbmVubworICAgICAgICBpZiBsaW5lX2luY3IgPj0gMHg4MDoKKyAgICAgICAgICAgIGxpbmVfaW5jciAtPSAweDEwMAogICAgICAgICBsaW5lbm8gKz0gbGluZV9pbmNyCiAKIChJbiBDLCB0aGlzIGlzIGltcGxlbWVudGVkIGJ5IFB5Q29kZV9BZGRyMkxpbmUoKS4pICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLAogd2hlbiB0aGUgYWRkciBmaWVsZCBpbmNyZW1lbnRzIGJ5IG1vcmUgdGhhbiAyNTUsIHRoZSBsaW5lICMgaW5jcmVtZW50IGluIGVhY2gKIHBhaXIgZ2VuZXJhdGVkIG11c3QgYmUgMCB1bnRpbCB0aGUgcmVtYWluaW5nIGFkZHIgaW5jcmVtZW50IGlzIDwgMjU2LiAgU28sIGluCiB0aGUgZXhhbXBsZSBhYm92ZSwgYXNzZW1ibGVfbG5vdGFiIGluIGNvbXBpbGUuYyBzaG91bGQgbm90IChhcyB3YXMgYWN0dWFsbHkgZG9uZQotdW50aWwgMi4yKSBleHBhbmQgMzAwLCAzMDAgdG8KK3VudGlsIDIuMikgZXhwYW5kIDMwMCwgMjAwIHRvCiAgICAgMjU1LCAyNTUsIDQ1LCA0NSwKIGJ1dCB0bwotICAgIDI1NSwgMCwgNDUsIDI1NSwgMCwgNDUuCisgICAgMjU1LCAwLCA0NSwgMTI4LCAwLCA3Mi4KIAogVGhlIGFib3ZlIGlzIHN1ZmZpY2llbnQgdG8gcmVjb25zdHJ1Y3QgbGluZSBudW1iZXJzIGZvciB0cmFjZWJhY2tzLCBidXQgbm90IGZvcgogbGluZSB0cmFjaW5nLiAgVHJhY2luZyBpcyBoYW5kbGVkIGJ5IFB5Q29kZV9DaGVja0xpbmVOdW1iZXIoKSBpbiBjb2Rlb2JqZWN0LmMKQEAgLTkwLDE2ICs5NSwxNiBAQAogICAgICAgICAgICAgICA2IFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDE3CiAKICAgMyAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMiBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDEyIFBSSU5UX0lURU0KIAotICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AgICAgICAgICAgCisgIDQgICAgICAgICAgMTMgQlJFQUtfTE9PUAogICAgICAgICAgICAgIDE0IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICAzCi0gICAgICAgID4+ICAgMTcgUE9QX0JMT0NLICAgICAgICAgICAKKyAgICAgICAgPj4gICAxNyBQT1BfQkxPQ0sKIAogICA2ICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgyKQotICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0gICAgICAgICAgCisgICAgICAgICAgICAgMjEgUFJJTlRfSVRFTQogICAgICAgICA+PiAgIDIyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRSAgICAgICAgCisgICAgICAgICAgICAgMjUgUkVUVVJOX1ZBTFVFCiAKIElmICdhJyBpcyBmYWxzZSwgZXhlY3V0aW9uIHdpbGwganVtcCB0byB0aGUgUE9QX0JMT0NLIGluc3RydWN0aW9uIGF0IG9mZnNldCAxNwogYW5kIHRoZSBjb19sbm90YWIgd2lsbCBjbGFpbSB0aGF0IGV4ZWN1dGlvbiBoYXMgbW92ZWQgdG8gbGluZSA0LCB3aGljaCBpcyB3cm9uZy4KZGlmZiAtLWdpdCBhL09iamVjdHMvbG9uZ29iamVjdC5jIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKaW5kZXggODUxMGU5MC4uYWQyMzljZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTcyMiw3ICs3MjIsNyBAQAogICAgIGFzc2VydChuZGlnaXRzID09IDAgfHwgdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdICE9IDApOwogICAgIGlmIChuZGlnaXRzID4gMCkgewogICAgICAgICBkaWdpdCBtc2QgPSB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV07Ci0gICAgICAgIGlmICgoc2l6ZV90KShuZGlnaXRzIC0gMSkgPiBQWV9TSVpFX01BWCAvIChzaXplX3QpUHlMb25nX1NISUZUKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CiAgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CkBAIC05OTAsMTYgKzk5MCwxMyBAQAogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiB7CiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykoUHlfdWludHB0cl90KXApOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykodWludHB0cl90KXApOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBsb25nIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HICovCiAKIH0KQEAgLTEwMTgsMTMgKzEwMTUsMTAgQEAKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh2dik7CiAjZWxzZQogCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayh2dikgJiYgX1B5TG9uZ19TaWduKHZ2KSA8IDApCiAgICAgICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZyh2dik7CkBAIC0xMDM4LDIyICsxMDMyLDIwIEBACiAgICAgcmV0dXJuICh2b2lkICopeDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KLS8qIEluaXRpYWwgUFlfTE9OR19MT05HIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKKy8qIEluaXRpYWwgbG9uZyBsb25nIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKICAqIHJld3JpdHRlbiB0byB1c2UgdGhlIG5ld2VyIFB5TG9uZ197QXMsRnJvbX1CeXRlQXJyYXkgQVBJLgogICovCiAKLSNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01JTikKKyNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgbG9uZyBsb25nKVBZX0xMT05HX01JTikKIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYWJzX2l2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhYnNfaXZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsgIC8qIHVuc2lnbmVkIHNvID4+IGRvZXNuJ3QgcHJvcGFnYXRlIHNpZ24gYml0ICovCiAgICAgaW50IG5kaWdpdHMgPSAwOwogICAgIGludCBuZWdhdGl2ZSA9IDA7CiAKQEAgLTEwNjEsMTEgKzEwNTMsMTEgQEAKICAgICBpZiAoaXZhbCA8IDApIHsKICAgICAgICAgLyogYXZvaWQgc2lnbmVkIG92ZXJmbG93IG9uIG5lZ2F0aW9uOyAgc2VlIGNvbW1lbnRzCiAgICAgICAgICAgIGluIFB5TG9uZ19Gcm9tTG9uZyBhYm92ZS4gKi8KLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKSgtMS1pdmFsKSArIDE7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoLTEtaXZhbCkgKyAxOwogICAgICAgICBuZWdhdGl2ZSA9IDE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgfQogCiAgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBQeXRob24gZGlnaXRzLgpAQCAtMTA5MCwxOSArMTA4MiwxOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil2OwogfQogCi0vKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyB1bnNpZ25lZCBQWV9MT05HX0xPTkcgaW50LiAqLworLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgbG9uZyBsb25nIGludC4gKi8KIAogUHlPYmplY3QgKgotUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsKICAgICBpbnQgbmRpZ2l0cyA9IDA7CiAKICAgICBpZiAoaXZhbCA8IFB5TG9uZ19CQVNFKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4gKi8KLSAgICB0ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylpdmFsOworICAgIHQgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgd2hpbGUgKHQpIHsKICAgICAgICAgKytuZGlnaXRzOwogICAgICAgICB0ID4+PSBQeUxvbmdfU0hJRlQ7CkBAIC0xMTkxLDExICsxMTgzLDExIEBACiAvKiBHZXQgYSBDIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KICAgIF9faW50X18gbWV0aG9kLiAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCiAKQEAgLTEyMzMsMzAgKzEyMjUsMzAgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgIH0KIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuIChsb25nIGxvbmcpLTE7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLS8qIEdldCBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludCBmcm9tIGFuIGludCBvYmplY3QuCisvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgogICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqdnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXM7CiAgICAgaW50IHJlczsKIAogICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogICAgIGlmICghUHlMb25nX0NoZWNrKHZ2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogCiAgICAgdiA9IChQeUxvbmdPYmplY3QqKXZ2OwpAQCAtMTI2OCw5ICsxMjYwLDkgQEAKICAgICByZXMgPSBfUHlMb25nX0FzQnl0ZUFycmF5KChQeUxvbmdPYmplY3QgKil2diwgKHVuc2lnbmVkIGNoYXIgKikmYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfTE9OR19MT05HLCBQWV9MSVRUTEVfRU5ESUFOLCAwKTsKIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylyZXM7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKXJlczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBieXRlczsKIH0KQEAgLTEyNzgsMTEgKzEyNzAsMTEgQEAKIC8qIEdldCBhIEMgdW5zaWduZWQgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LCBpZ25vcmluZyB0aGUgaGlnaCBiaXRzLgogICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgYW4gZXJyb3Igb2NjdXJzLiAqLwogCi1zdGF0aWMgdW5zaWduZWQgUFlfTE9OR19MT05HCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nCiBfUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAKQEAgLTEzMDgsMTEgKzEzMDAsMTEgQEAKICAgICByZXR1cm4geCAqIHNpZ247CiB9CiAKLXVuc2lnbmVkIFBZX0xPTkdfTE9ORwordW5zaWduZWQgbG9uZyBsb25nCiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlMb25nT2JqZWN0ICpsbzsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAKICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTEzMjUsNyArMTMxNyw3IEBACiAKICAgICBsbyA9IF9QeUxvbmdfRnJvbU5iSW50KG9wKTsKICAgICBpZiAobG8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgdmFsID0gX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKChQeU9iamVjdCAqKWxvKTsKICAgICBQeV9ERUNSRUYobG8pOwpAQCAtMTM0MiwxMyArMTMzNCwxMyBAQAogICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCiB7CiAgICAgLyogVGhpcyB2ZXJzaW9uIGJ5IFRpbSBQZXRlcnMgKi8KICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHgsIHByZXY7Ci0gICAgUFlfTE9OR19MT05HIHJlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCwgcHJldjsKKyAgICBsb25nIGxvbmcgcmVzOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbjsKICAgICBpbnQgZG9fZGVjcmVmID0gMDsgLyogaWYgbmJfaW50IHdhcyBjYWxsZWQgKi8KQEAgLTE0MDAsOCArMTM5Miw4IEBACiAgICAgICAgIC8qIEhhdmVuJ3QgbG9zdCBhbnkgYml0cywgYnV0IGNhc3RpbmcgdG8gbG9uZyByZXF1aXJlcyBleHRyYQogICAgICAgICAgKiBjYXJlIChzZWUgY29tbWVudCBhYm92ZSkuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoeCA8PSAodW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01BWCkgewotICAgICAgICAgICAgcmVzID0gKFBZX0xPTkdfTE9ORyl4ICogc2lnbjsKKyAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NQVgpIHsKKyAgICAgICAgICAgIHJlcyA9IChsb25nIGxvbmcpeCAqIHNpZ247CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2lnbiA8IDAgJiYgeCA9PSBQWV9BQlNfTExPTkdfTUlOKSB7CiAgICAgICAgICAgICByZXMgPSBQWV9MTE9OR19NSU47CkBAIC0xNDE4LDggKzE0MTAsNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwotCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSAgICAgICBcCkBAIC0xNTgzLDEzICsxNTczLDE2IEBACiBzdGF0aWMgaW50CiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICphYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICpieXRlc193cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipieXRlc19zdHIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKLSAgICBQeU9iamVjdCAqc3RyOworICAgIFB5T2JqZWN0ICpzdHIgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwogICAgIGludCBuZWdhdGl2ZTsKKyAgICBpbnQgZDsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAKICAgICBhID0gKFB5TG9uZ09iamVjdCAqKWFhOwpAQCAtMTYwNywxNSArMTYwMCwxNyBAQAogCiAgICAgICAgQnV0IGxvZzIoYSkgPCBzaXplX2EgKiBQeUxvbmdfU0hJRlQsIGFuZAogICAgICAgIGxvZzIoX1B5TG9uZ19ERUNJTUFMX0JBU0UpID0gbG9nMigxMCkgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVAorCisgICAgICAgICBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSA9CisgICAgICAgICAgICAgc2l6ZV9hICsgc2l6ZV9hIC8gZCA8IHNpemVfYSArIHNpemVfYSAvIGZsb29yKGQpLAorICAgICAgIHdoZXJlIGQgPSAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICAgICAgICAgIChQeUxvbmdfU0hJRlQgLSAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpCiAgICAgKi8KLSAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiB0aGUgZXhwcmVzc2lvbiBzaXplX2EgKiBQeUxvbmdfU0hJRlQgaXMgbm93IHNhZmUgZnJvbSBvdmVyZmxvdyAqLwotICAgIHNpemUgPSAxICsgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGQgPSAoMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpIC8KKyAgICAgICAgKDEwICogUHlMb25nX1NISUZUIC0gMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGFzc2VydChzaXplX2EgPCBQWV9TU0laRV9UX01BWC8yKTsKKyAgICBzaXplID0gMSArIHNpemVfYSArIHNpemVfYSAvIGQ7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2NjMsNyArMTY1OCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7Ci0gICAgICAgIHN0ciA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN0cmxlbik7CisgICAgICAgIGlmICgqYnl0ZXNfc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CkBAIC0xNjc0LDEzICsxNjc1LDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgfQogCi0jZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKICAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTcwMCw2ICsxNjk2LDE2IEBACiAgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDksMjUgKzE3MTUsMzQgQEAKICAgICB9IHdoaWxlICgwKQogCiAgICAgLyogZmlsbCB0aGUgc3RyaW5nIHJpZ2h0LXRvLWxlZnQgKi8KLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgY2hhciAqcCA9ICpieXRlc19zdHIgKyBzdHJsZW47CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN0cmxlbjsKICAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICgqYnl0ZXNfc3RyKSArPSBzdHJsZW47CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgICAgICAqcF9vdXRwdXQgPSAoUHlPYmplY3QgKilzdHI7CkBAIC0xNzM5LDcgKzE3NTQsNyBAQAogbG9uZ190b19kZWNpbWFsX3N0cmluZyhQeU9iamVjdCAqYWEpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMKSA9PSAtMSkKKyAgICBpZiAobG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChhYSwgJnYsIE5VTEwsIE5VTEwsIE5VTEwpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdjsKIH0KQEAgLTE3NTEsMTAgKzE3NjYsMTEgQEAKIAogc3RhdGljIGludAogbG9uZ19mb3JtYXRfYmluYXJ5KFB5T2JqZWN0ICphYSwgaW50IGJhc2UsIGludCBhbHRlcm5hdGUsCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLCBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqYSA9IChQeUxvbmdPYmplY3QgKilhYTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzejsKICAgICBQeV9zc2l6ZV90IHNpemVfYTsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CkBAIC0xODExLDcgKzE4MjcsMTEgQEAKICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN6LCAneCcpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICB2ID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICpieXRlc19zdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKGJ5dGVzX3dyaXRlciwgKmJ5dGVzX3N0ciwgc3opOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc3osICd4Jyk7CkBAIC0xODIwLDEzICsxODQwLDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHYpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzaXplX2EgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJzAnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYxLDMwICsxODc2LDUwIEBACiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGFzc2VydChwID09IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSk7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3o7CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIGlmICh3cml0ZXIpIHsKICAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3o7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gdjsKQEAgLTE4OTgsOSArMTkzMyw5IEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBpbnQgZXJyOwogICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCk7CisgICAgICAgIGVyciA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIGVyciA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIDEsICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoZXJyID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gc3RyOwpAQCAtMTkxMiw5ICsxOTQ3LDMxIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKIHsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosIE5VTEwsIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CisKK2NoYXIqCitfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgY2hhciAqc3RyMjsKKyAgICBpbnQgcmVzOworICAgIHN0cjIgPSBzdHI7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJlcyA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLCAmc3RyMik7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChzdHIyICE9IE5VTEwpOworICAgIHJldHVybiBzdHIyOwogfQogCiAvKiBUYWJsZSBvZiBkaWdpdCB2YWx1ZXMgZm9yIDgtYml0IHN0cmluZyAtPiBpbnRlZ2VyIGNvbnZlcnNpb24uCkBAIC0xOTQ4LDEyICsyMDA1LDE4IEBACiAgKiBub24tZGlnaXQgKHdoaWNoIG1heSBiZSAqc3RyISkuICBBIG5vcm1hbGl6ZWQgaW50IGlzIHJldHVybmVkLgogICogVGhlIHBvaW50IHRvIHRoaXMgcm91dGluZSBpcyB0aGF0IGl0IHRha2VzIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YKICAqIHN0cmluZyBjaGFyYWN0ZXJzLgorICoKKyAqIFJldHVybiB2YWx1ZXM6CisgKiAgIC0xIG9uIHN5bnRheCBlcnJvciAoZXhjZXB0aW9uIG5lZWRzIHRvIGJlIHNldCwgKnJlcyBpcyB1bnRvdWNoZWQpCisgKiAgIDAgZWxzZSAoZXhjZXB0aW9uIG1heSBiZSBzZXQsIGluIHRoYXQgY2FzZSAqcmVzIGlzIHNldCB0byBOVUxMKQogICovCi1zdGF0aWMgUHlMb25nT2JqZWN0ICoKLWxvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSkKK3N0YXRpYyBpbnQKK2xvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSwgUHlMb25nT2JqZWN0ICoqcmVzKQogewogICAgIGNvbnN0IGNoYXIgKnAgPSAqc3RyOwogICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gcDsKKyAgICBjaGFyIHByZXYgPSAwOworICAgIGludCBkaWdpdHMgPSAwOwogICAgIGludCBiaXRzX3Blcl9jaGFyOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeUxvbmdPYmplY3QgKno7CkBAIC0xOTYzLDIzICsyMDI2LDQzIEBACiAKICAgICBhc3NlcnQoYmFzZSA+PSAyICYmIGJhc2UgPD0gMzIgJiYgKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKTsKICAgICBuID0gYmFzZTsKLSAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKQorICAgIGZvciAoYml0c19wZXJfY2hhciA9IC0xOyBuOyArK2JpdHNfcGVyX2NoYXIpIHsKICAgICAgICAgbiA+Pj0gMTsKLSAgICAvKiBuIDwtIHRvdGFsICMgb2YgYml0cyBuZWVkZWQsIHdoaWxlIHNldHRpbmcgcCB0byBlbmQtb2Ytc3RyaW5nICovCi0gICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSkKKyAgICB9CisgICAgLyogY291bnQgZGlnaXRzIGFuZCBzZXQgcCB0byBlbmQtb2Ytc3RyaW5nICovCisgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSB8fCAqcCA9PSAnXycpIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICB9CisgICAgICAgIHByZXYgPSAqcDsKICAgICAgICAgKytwOworICAgIH0KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgLyogVHJhaWxpbmcgdW5kZXJzY29yZSBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgKnN0ciA9IHA7CiAgICAgLyogbiA8LSAjIG9mIFB5dGhvbiBkaWdpdHMgbmVlZGVkLCA9IGNlaWxpbmcobi9QeUxvbmdfU0hJRlQpLiAqLwotICAgIG4gPSAocCAtIHN0YXJ0KSAqIGJpdHNfcGVyX2NoYXIgKyBQeUxvbmdfU0hJRlQgLSAxOworICAgIG4gPSBkaWdpdHMgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKICAgICBpZiAobiAvIGJpdHNfcGVyX2NoYXIgPCBwIC0gc3RhcnQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHN0cmluZyB0b28gbGFyZ2UgdG8gY29udmVydCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBuID0gbiAvIFB5TG9uZ19TSElGVDsKICAgICB6ID0gX1B5TG9uZ19OZXcobik7Ci0gICAgaWYgKHogPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHogPT0gTlVMTCkgeworICAgICAgICAqcmVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIC8qIFJlYWQgc3RyaW5nIGZyb20gcmlnaHQsIGFuZCBmaWxsIGluIGludCBmcm9tIGxlZnQ7IGkuZS4sCiAgICAgICogZnJvbSBsZWFzdCB0byBtb3N0IHNpZ25pZmljYW50IGluIGJvdGguCiAgICAgICovCkBAIC0xOTg3LDcgKzIwNzAsMTEgQEAKICAgICBiaXRzX2luX2FjY3VtID0gMDsKICAgICBwZGlnaXQgPSB6LT5vYl9kaWdpdDsKICAgICB3aGlsZSAoLS1wID49IHN0YXJ0KSB7Ci0gICAgICAgIGludCBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKKyAgICAgICAgaW50IGs7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGsgPSAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldOwogICAgICAgICBhc3NlcnQoayA+PSAwICYmIGsgPCBiYXNlKTsKICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylrIDw8IGJpdHNfaW5fYWNjdW07CiAgICAgICAgIGJpdHNfaW5fYWNjdW0gKz0gYml0c19wZXJfY2hhcjsKQEAgLTIwMDYsNyArMjA5Myw4IEBACiAgICAgfQogICAgIHdoaWxlIChwZGlnaXQgLSB6LT5vYl9kaWdpdCA8IG4pCiAgICAgICAgICpwZGlnaXQrKyA9IDA7Ci0gICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOworICAgICpyZXMgPSBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICByZXR1cm4gMDsKIH0KIAogLyogUGFyc2VzIGFuIGludCBmcm9tIGEgYnl0ZXN0cmluZy4gTGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSB3aWxsIGJlCkBAIC0yMDMxLDIzICsyMTE5LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50KCkgYXJnIDIgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyID09ICcrJykKKyAgICB9CisgICAgaWYgKCpzdHIgPT0gJysnKSB7CiAgICAgICAgICsrc3RyOworICAgIH0KICAgICBlbHNlIGlmICgqc3RyID09ICctJykgewogICAgICAgICArK3N0cjsKICAgICAgICAgc2lnbiA9IC0xOwogICAgIH0KICAgICBpZiAoYmFzZSA9PSAwKSB7Ci0gICAgICAgIGlmIChzdHJbMF0gIT0gJzAnKQorICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykgewogICAgICAgICAgICAgYmFzZSA9IDEwOwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSB7CiAgICAgICAgICAgICBiYXNlID0gMTY7Ci0gICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpIHsKICAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSB7CiAgICAgICAgICAgICBiYXNlID0gMjsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qICJvbGQiIChDLXN0eWxlKSBvY3RhbCBsaXRlcmFsLCBub3cgaW52YWxpZC4KICAgICAgICAgICAgICAgIGl0IG1pZ2h0IHN0aWxsIGJlIHplcm8gdGhvdWdoICovCkBAIC0yMDU4LDEyICsyMTUyLDI2IEBACiAgICAgaWYgKHN0clswXSA9PSAnMCcgJiYKICAgICAgICAgKChiYXNlID09IDE2ICYmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpKSB8fAogICAgICAgICAgKGJhc2UgPT0gOCAgJiYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykpIHx8Ci0gICAgICAgICAoYmFzZSA9PSAyICAmJiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSkpKQorICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkgewogICAgICAgICBzdHIgKz0gMjsKKyAgICAgICAgLyogT25lIHVuZGVyc2NvcmUgYWxsb3dlZCBoZXJlLiAqLworICAgICAgICBpZiAoKnN0ciA9PSAnXycpIHsKKyAgICAgICAgICAgICsrc3RyOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdHJbMF0gPT0gJ18nKSB7CisJICAgIC8qIE1heSBub3Qgc3RhcnQgd2l0aCB1bmRlcnNjb3Jlcy4gKi8KKwkgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIHN0YXJ0ID0gc3RyOwotICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApCi0gICAgICAgIHogPSBsb25nX2Zyb21fYmluYXJ5X2Jhc2UoJnN0ciwgYmFzZSk7CisgICAgaWYgKChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCkgeworICAgICAgICBpbnQgcmVzID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UsICZ6KTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIC8qIFN5bnRheCBlcnJvci4gKi8KKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBlbHNlIHsKIC8qKioKIEJpbmFyeSBiYXNlcyBjYW4gYmUgY29udmVydGVkIGluIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgZGlnaXRzLCBiZWNhdXNlCkBAIC0yMTUyLDExICsyMjYwLDEzIEBACiAqKiovCiAgICAgICAgIHR3b2RpZ2l0cyBjOyAgICAgICAgICAgLyogY3VycmVudCBpbnB1dCBjaGFyYWN0ZXIgKi8KICAgICAgICAgUHlfc3NpemVfdCBzaXplX3o7CisgICAgICAgIGludCBkaWdpdHMgPSAwOwogICAgICAgICBpbnQgaTsKICAgICAgICAgaW50IGNvbnZ3aWR0aDsKICAgICAgICAgdHdvZGlnaXRzIGNvbnZtdWx0bWF4LCBjb252bXVsdDsKICAgICAgICAgZGlnaXQgKnB6LCAqcHpzdG9wOwotICAgICAgICBjb25zdCBjaGFyKiBzY2FuOworICAgICAgICBjb25zdCBjaGFyICpzY2FuLCAqbGFzdGRpZ2l0OworICAgICAgICBjaGFyIHByZXYgPSAwOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgbG9nX2Jhc2VfQkFTRVszN10gPSB7MC4wZTAsfTsKICAgICAgICAgc3RhdGljIGludCBjb252d2lkdGhfYmFzZVszN10gPSB7MCx9OwpAQCAtMjE3MCw4ICsyMjgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKChkb3VibGUpUHlMb25nX0JBU0UpKTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICB0d29kaWdpdHMgbmV4dCA9IGNvbnZtYXggKiBiYXNlOwotICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpCisgICAgICAgICAgICAgICAgaWYgKG5leHQgPiBQeUxvbmdfQkFTRSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udm1heCA9IG5leHQ7CiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgfQpAQCAtMjE4MiwyMSArMjI5Myw0MyBAQAogCiAgICAgICAgIC8qIEZpbmQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgb2YgbnVtZXJpYyBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBzY2FuID0gc3RyOwotICAgICAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzY2FuKV0gPCBiYXNlKQorICAgICAgICBsYXN0ZGlnaXQgPSBzdHI7CisKKyAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSB8fCAqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmICgqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogT25seSBvbmUgdW5kZXJzY29yZSBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBsYXN0ZGlnaXQgKyAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKytkaWdpdHM7CisgICAgICAgICAgICAgICAgbGFzdGRpZ2l0ID0gc2NhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXYgPSAqc2NhbjsKICAgICAgICAgICAgICsrc2NhbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICAgICAvKiBTZXQgZXJyb3IgcG9pbnRlciB0byBmaXJzdCB1bmRlcnNjb3JlLiAqLworICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIENyZWF0ZSBhbiBpbnQgb2JqZWN0IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGxhcmdlc3QgcG9zc2libGUKICAgICAgICAgICogaW50ZWdlciB3aXRoIHRoaXMgYmFzZSBhbmQgbGVuZ3RoLiAgTm90ZSB0aGF0IHRoZXJlJ3Mgbm8KICAgICAgICAgICogbmVlZCB0byBpbml0aWFsaXplIHotPm9iX2RpZ2l0IC0tIG5vIHNsb3QgaXMgcmVhZCB1cCBiZWZvcmUKICAgICAgICAgICogYmVpbmcgc3RvcmVkIGludG8uCiAgICAgICAgICAqLwotICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoKHNjYW4gLSBzdHIpICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOworICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoZGlnaXRzICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOwogICAgICAgICAvKiBVbmNvbW1lbnQgbmV4dCBsaW5lIHRvIHRlc3QgZXhjZWVkaW5nbHkgcmFyZSBjb3B5IGNvZGUgKi8KICAgICAgICAgLyogc2l6ZV96ID0gMTsgKi8KICAgICAgICAgYXNzZXJ0KHNpemVfeiA+IDApOwogICAgICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV96KTsKLSAgICAgICAgaWYgKHogPT0gTlVMTCkKKyAgICAgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfU0laRSh6KSA9IDA7CiAKICAgICAgICAgLyogYGNvbnZ3aWR0aGAgY29uc2VjdXRpdmUgaW5wdXQgZGlnaXRzIGFyZSB0cmVhdGVkIGFzIGEgc2luZ2xlCkBAIC0yMjA3LDkgKzIzNDAsMTcgQEAKIAogICAgICAgICAvKiBXb3JrIDstKSAqLwogICAgICAgICB3aGlsZSAoc3RyIDwgc2NhbikgeworICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBncmFiIHVwIHRvIGNvbnZ3aWR0aCBkaWdpdHMgZnJvbSB0aGUgaW5wdXQgc3RyaW5nICovCiAgICAgICAgICAgICBjID0gKGRpZ2l0KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKyspXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsrc3RyKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgYyA9ICh0d29kaWdpdHMpKGMgKiAgYmFzZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzdHIpXSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGMgPCBQeUxvbmdfQkFTRSk7CkBAIC0yMjIxLDggKzIzNjIsOSBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoaSAhPSBjb252d2lkdGgpIHsKICAgICAgICAgICAgICAgICBjb252bXVsdCA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpID4gMTsgLS1pKQorICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkgewogICAgICAgICAgICAgICAgICAgICBjb252bXVsdCAqPSBiYXNlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogTXVsdGlwbHkgeiBieSBjb252bXVsdCwgYW5kIGFkZCBjLiAqLwpAQCAtMjI2MCw0MSArMjQwMiw1MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGVycm9yX2lmX25vbnplcm8pIHsKICAgICAgICAgLyogcmVzZXQgdGhlIGJhc2UgdG8gMCwgZWxzZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UKICAgICAgICAgICAgZG9lc24ndCBtYWtlIHRvbyBtdWNoIHNlbnNlICovCiAgICAgICAgIGJhc2UgPSAwOwotICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKQorICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKSB7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KICAgICAgICAgLyogdGhlcmUgbWlnaHQgc3RpbGwgYmUgb3RoZXIgcHJvYmxlbXMsIHRoZXJlZm9yZSBiYXNlCiAgICAgICAgICAgIHJlbWFpbnMgemVybyBoZXJlIGZvciB0aGUgc2FtZSByZWFzb24gKi8KICAgICB9Ci0gICAgaWYgKHN0ciA9PSBzdGFydCkKKyAgICBpZiAoc3RyID09IHN0YXJ0KSB7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2lnbiA8IDApCisgICAgfQorICAgIGlmIChzaWduIDwgMCkgewogICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKLSAgICB3aGlsZSAoKnN0ciAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB9CisgICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpIHsKICAgICAgICAgc3RyKys7Ci0gICAgaWYgKCpzdHIgIT0gJ1wwJykKKyAgICB9CisgICAgaWYgKCpzdHIgIT0gJ1wwJykgewogICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogICAgIGxvbmdfbm9ybWFsaXplKHopOwogICAgIHogPSBtYXliZV9zbWFsbF9sb25nKHopOwotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIH0KKyAgICBpZiAocGVuZCAhPSBOVUxMKSB7CiAgICAgICAgICpwZW5kID0gKGNoYXIgKilzdHI7CisgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKikgejsKIAogICBvbkVycm9yOgotICAgIGlmIChwZW5kICE9IE5VTEwpCisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICBQeV9YREVDUkVGKHopOwogICAgIHNsZW4gPSBzdHJsZW4ob3JpZ19zdHIpIDwgMjAwID8gc3RybGVuKG9yaWdfc3RyKSA6IDIwMDsKICAgICBzdHJvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUob3JpZ19zdHIsIHNsZW4pOwotICAgIGlmIChzdHJvYmogPT0gTlVMTCkKKyAgICBpZiAoc3Ryb2JqID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgJWQ6ICUuMjAwUiIsCiAgICAgICAgICAgICAgICAgIGJhc2UsIHN0cm9iaik7CkBAIC0yMzk1LDggKzI1NDcsMTEgQEAKICAgICAgICAgKnBkaXYgPSAoUHlMb25nT2JqZWN0KilQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgICAgIGlmICgqcGRpdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9JTkNSRUYoYSk7Ci0gICAgICAgICpwcmVtID0gKFB5TG9uZ09iamVjdCAqKSBhOworICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKilsb25nX2xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgICAgIGlmICgqcHJlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUigqcGRpdik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChzaXplX2IgPT0gMSkgewpAQCAtMjcwNiw2ICsyODYxLDEzIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiAtMS4wOwogICAgIH0KKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoOyBzaW5nbGUgZGlnaXQgbG9uZyAoMzEgYml0cykgd2lsbCBjYXN0IHNhZmVseQorICAgICAgICAgICB0byBkb3VibGUuICBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIEZQL2xvbmcgb3BlcmF0aW9ucworICAgICAgICAgICBieSAyMCUuCisgICAgICAgICovCisgICAgICAgIHJldHVybiAoZG91YmxlKU1FRElVTV9WQUxVRSgoUHlMb25nT2JqZWN0ICopdik7CisgICAgfQogICAgIHggPSBfUHlMb25nX0ZyZXhwKChQeUxvbmdPYmplY3QgKil2LCAmZXhwb25lbnQpOwogICAgIGlmICgoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHx8IGV4cG9uZW50ID4gREJMX01BWF9FWFApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0yOTMwLDkgKzMwOTIsNyBAQAogICAgIH0KICAgICBhc3NlcnQoYm9ycm93ID09IDApOwogICAgIGlmIChzaWduIDwgMCkgewotICAgICAgICBfUHlMb25nX05lZ2F0ZSgmeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfU0laRSh6KSA9IC1QeV9TSVpFKHopOwogICAgIH0KICAgICByZXR1cm4gbG9uZ19ub3JtYWxpemUoeik7CiB9CkBAIC0yOTUyLDggKzMxMTIsMTQgQEAKICAgICBpZiAoUHlfU0laRShhKSA8IDApIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7CiAgICAgICAgICAgICB6ID0geF9hZGQoYSwgYik7Ci0gICAgICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiB4X2FkZCByZWNlaXZlZCBhdCBsZWFzdCBvbmUgbXVsdGlwbGUtZGlnaXQgaW50LAorICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIHogbXVzdCBiZSBhIG11bHRpcGxlLWRpZ2l0IGludC4KKyAgICAgICAgICAgICAgICAgICBUaGF0IGFsc28gbWVhbnMgeiBpcyBub3QgYW4gZWxlbWVudCBvZgorICAgICAgICAgICAgICAgICAgIHNtYWxsX2ludHMsIHNvIG5lZ2F0aW5nIGl0IGluLXBsYWNlIGlzIHNhZmUuICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh6KSA9PSAxKTsKICAgICAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB6ID0geF9zdWIoYiwgYSk7CkBAIC0yOTg0LDggKzMxNTAsMTAgQEAKICAgICAgICAgICAgIHogPSB4X3N1YihhLCBiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKHogIT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KFB5X1NJWkUoeikgPT0gMCB8fCBQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKQpAQCAtMzQwOSwxNyArMzU3Nyw3IEBACiAgICAgLyogZmFzdCBwYXRoIGZvciBzaW5nbGUtZGlnaXQgbXVsdGlwbGljYXRpb24gKi8KICAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgc3R3b2RpZ2l0cyB2ID0gKHN0d29kaWdpdHMpKE1FRElVTV9WQUxVRShhKSkgKiBNRURJVU1fVkFMVUUoYik7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2KTsKLSNlbHNlCi0gICAgICAgIC8qIGlmIHdlIGRvbid0IGhhdmUgbG9uZyBsb25nIHRoZW4gd2UncmUgYWxtb3N0IGNlcnRhaW5seQotICAgICAgICAgICB1c2luZyAxNS1iaXQgZGlnaXRzLCBzbyB2IHdpbGwgZml0IGluIGEgbG9uZy4gIEluIHRoZQotICAgICAgICAgICB1bmxpa2VseSBldmVudCB0aGF0IHdlJ3JlIHVzaW5nIDMwLWJpdCBkaWdpdHMgb24gYSBwbGF0Zm9ybQotICAgICAgICAgICB3aXRob3V0IGxvbmcgbG9uZywgYSBsYXJnZSB2IHdpbGwganVzdCBjYXVzZSB1cyB0byBmYWxsCi0gICAgICAgICAgIHRocm91Z2ggdG8gdGhlIGdlbmVyYWwgbXVsdGlwbGljYXRpb24gY29kZSBiZWxvdy4gKi8KLSAgICAgICAgaWYgKHYgPj0gTE9OR19NSU4gJiYgdiA8PSBMT05HX01BWCkKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdik7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl2KTsKICAgICB9CiAKICAgICB6ID0ga19tdWwoYSwgYik7CkBAIC0zNDMyLDYgKzM1OTAsNTIgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopejsKIH0KIAorLyogRmFzdCBtb2R1bG8gZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X21vZChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBtb2Q7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgbW9kID0gbGVmdCAlIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIG1vZCA9IHJpZ2h0IC0gMSAtIChsZWZ0IC0gMSkgJSByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1vZCAqIChzZGlnaXQpUHlfU0laRShiKSk7Cit9CisKKy8qIEZhc3QgZmxvb3IgZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X2Zsb29yX2RpdihQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBkaXY7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgZGl2ID0gbGVmdCAvIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIGRpdiA9IC0xIC0gKGxlZnQgLSAxKSAvIHJpZ2h0OworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZGl2KTsKK30KKwogLyogVGhlIC8gYW5kICUgb3BlcmF0b3JzIGFyZSBub3cgZGVmaW5lZCBpbiB0ZXJtcyBvZiBkaXZtb2QoKS4KICAgIFRoZSBleHByZXNzaW9uIGEgbW9kIGIgaGFzIHRoZSB2YWx1ZSBhIC0gYipmbG9vcihhL2IpLgogICAgVGhlIGxvbmdfZGl2cmVtIGZ1bmN0aW9uIGdpdmVzIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aXNpb24gb2YKQEAgLTM0NTksNiArMzY2MywzMCBAQAogewogICAgIFB5TG9uZ09iamVjdCAqZGl2LCAqbW9kOwogCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA9PSAxICYmIFB5X0FCUyhQeV9TSVpFKHcpKSA9PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IGxvbmdzICovCisgICAgICAgIGRpdiA9IE5VTEw7CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGRpdiA9IChQeUxvbmdPYmplY3QgKilmYXN0X2Zsb29yX2Rpdih2LCB3KTsKKyAgICAgICAgICAgIGlmIChkaXYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocG1vZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBtb2QgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9tb2Qodiwgdyk7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGRpdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnBtb2QgPSBtb2Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBkaXYgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2Ugb25seSB3YW50IHRvIHNldCBgKnBkaXZgIHdoZW4gYCpwbW9kYCBpcworICAgICAgICAgICAgICAgc2V0IHN1Y2Nlc3NmdWxseS4gKi8KKyAgICAgICAgICAgICpwZGl2ID0gZGl2OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobG9uZ19kaXZyZW0odiwgdywgJmRpdiwgJm1vZCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKChQeV9TSVpFKG1vZCkgPCAwICYmIFB5X1NJWkUodykgPiAwKSB8fApAQCAtMzUwMyw2ICszNzMxLDExIEBACiAgICAgUHlMb25nT2JqZWN0ICpkaXY7CiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKKworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9mbG9vcl9kaXYoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsICZkaXYsIE5VTEwpIDwgMCkKICAgICAgICAgZGl2ID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGl2OwpAQCAtMzc0Miw5ICszOTc1LDkgQEAKICAgICAvKiBSb3VuZCBieSBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIGxvdyBkaWdpdCBvZiB4LiAqLwogICAgIG1hc2sgPSAoZGlnaXQpMSA8PCAoZXh0cmFfYml0cyAtIDEpOwogICAgIGxvdyA9IHgtPm9iX2RpZ2l0WzBdIHwgaW5leGFjdDsKLSAgICBpZiAobG93ICYgbWFzayAmJiBsb3cgJiAoMyptYXNrLTEpKQorICAgIGlmICgobG93ICYgbWFzaykgJiYgKGxvdyAmICgzVSptYXNrLTFVKSkpCiAgICAgICAgIGxvdyArPSBtYXNrOwotICAgIHgtPm9iX2RpZ2l0WzBdID0gbG93ICYgfihtYXNrLTFVKTsKKyAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4oMlUqbWFzay0xVSk7CiAKICAgICAvKiBDb252ZXJ0IHggdG8gYSBkb3VibGUgZHg7IHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqLwogICAgIGR4ID0geC0+b2JfZGlnaXRbLS14X3NpemVdOwpAQCAtMzc3OCw2ICs0MDExLDEwIEBACiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9tb2QoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsIE5VTEwsICZtb2QpIDwgMCkKICAgICAgICAgbW9kID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbW9kOwpAQCAtNDAxMiw4ICs0MjQ5LDEwIEBACiAgICAgUHlfREVDUkVGKHcpOwogICAgIGlmICh4ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X1NJWkUoeCkgPSAtKFB5X1NJWkUoeCkpOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltYXliZV9zbWFsbF9sb25nKHgpOworICAgIF9QeUxvbmdfTmVnYXRlKCZ4KTsKKyAgICAvKiBObyBuZWVkIGZvciBtYXliZV9zbWFsbF9sb25nIGhlcmUsIHNpbmNlIGFueSBzbWFsbAorICAgICAgIGxvbmdzIHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBpbiB0aGUgUHlfU0laRSA8PSAxIGZhc3QgcGF0aC4gKi8KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopeDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMTgsNiArNDM1NywxMSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNoaWZ0IGNvdW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisKICAgICAvKiB3b3Jkc2hpZnQsIHJlbXNoaWZ0ID0gZGl2bW9kKHNoaWZ0YnksIFB5TG9uZ19TSElGVCkgKi8KICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwogICAgIHJlbXNoaWZ0ICA9IHNoaWZ0YnkgLSB3b3Jkc2hpZnQgKiBQeUxvbmdfU0hJRlQ7CkBAIC00NTAyLDcgKzQ3NDYsNyBAQAogICAgIC8qIGEgZml0cyBpbnRvIGEgbG9uZywgc28gYiBtdXN0IHRvbyAqLwogICAgIHggPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWEpOwogICAgIHkgPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWIpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYik7CiAjZWxzZQpAQCAtNDUyMSw3ICs0NzY1LDcgQEAKICAgICB9CiAjaWYgTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyNlbGlmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiAjZWxzZQogIyBlcnJvciAiX1B5TG9uZ19HQ0QiCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCBlMjYxZWUwLi5iMTc5OGEyIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTU3LDcgKzU3LDcgQEAKICAgICB9CiAKIAotUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqCiBtYnVmX2FsbG9jKHZvaWQpCiB7CiAgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKQEAgLTI0Myw3ICsyNDMsNyBAQAogI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAogICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGxhc3RfZGltX2lzX2NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDAgJiYgc3JjLT5uZGltID4gMCk7CkBAIC0yNTksNyArMjU5LDcgQEAKICAgIGFzc2lnbm1lbnRzLCB3aGVyZSB0aGUgbHZhbHVlIGlzIGFscmVhZHkga25vd24gdG8gaGF2ZSBhIHNpbmdsZSBjaGFyYWN0ZXIKICAgIGZvcm1hdC4gVGhpcyBpcyBhIHBlcmZvcm1hbmNlIGhhY2sgdGhhdCBjb3VsZCBiZSByZXdyaXR0ZW4gKGlmIHByb3Blcmx5CiAgICBiZW5jaG1hcmtlZCkuICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGVxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OwpAQCAtMjc5LDcgKzI3OSw3IEBACiAvKiBUd28gc2hhcGVzIGFyZSBlcXVpdmFsZW50IGlmIHRoZXkgYXJlIGVpdGhlciBlcXVhbCBvciBpZGVudGljYWwgdXAKICAgIHRvIGEgemVybyBlbGVtZW50IGF0IHRoZSBzYW1lIHBvc2l0aW9uLiBGb3IgZXhhbXBsZSwgaW4gTnVtUHkgYXJyYXlzCiAgICB0aGUgc2hhcGVzIFsxLCAwLCA1XSBhbmQgWzEsIDAsIDddIGFyZSBlcXVpdmFsZW50LiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9zaGFwZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGludCBpOwpAQCAtNDM4LDcgKzQzOCw3IEBACiB9CiAKIC8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBDLWNvbnRpZ3VvdXMgYXJyYXkuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTQ1MSw3ICs0NTEsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgRm9ydHJhbi1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTUxMyw3ICs1MTMsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIEluaXRpYWxpemUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCB3aXRoIHRoZSBtYW5hZ2VkIGJ1ZmZlci4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3NoYXJlZF92YWx1ZXMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBkZXN0LT5vYmogPSBzcmMtPm9iajsKQEAgLTU1Myw3ICs1NTMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3Vib2Zmc2V0cyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTU2Nyw3ICs1NjcsNyBAQAogfQogCiAvKiBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9sZW4oUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaSwgbGVuOwpAQCAtNjE0LDcgKzYxNCw3IEBACiAKIC8qIEFsbG9jYXRlIGEgbmV3IG1lbW9yeXZpZXcgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24uIE5ldyBtZW1vcnl2aWV3cwogICAgYXJlIGV4Y2x1c2l2ZWx5IGNyZWF0ZWQgdGhyb3VnaCB0aGUgbWJ1Zl9hZGQgZnVuY3Rpb25zLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5TWVtb3J5Vmlld09iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU1lbW9yeVZpZXdPYmplY3QgKgogbWVtb3J5X2FsbG9jKGludCBuZGltKQogewogICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CkBAIC0xMDk5LDcgKzEwOTksNyBAQAogCiAjZGVmaW5lIElTX0JZVEVfRk9STUFUKGYpIChmID09ICdiJyB8fCBmID09ICdCJyB8fCBmID09ICdjJykKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKIGdldF9uYXRpdmVfZm10Y2hhcihjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZtdCkKIHsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKQEAgLTExMTEsMTcgKzExMTEsMTEgQEAKICAgICBjYXNlICdoJzogY2FzZSAnSCc6IHNpemUgPSBzaXplb2Yoc2hvcnQpOyBicmVhazsKICAgICBjYXNlICdpJzogY2FzZSAnSSc6IHNpemUgPSBzaXplb2YoaW50KTsgYnJlYWs7CiAgICAgY2FzZSAnbCc6IGNhc2UgJ0wnOiBzaXplID0gc2l6ZW9mKGxvbmcpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogY2FzZSAnUSc6IHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsgYnJlYWs7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7IGJyZWFrOwogICAgIGNhc2UgJ24nOiBjYXNlICdOJzogc2l6ZSA9IHNpemVvZihQeV9zc2l6ZV90KTsgYnJlYWs7CiAgICAgY2FzZSAnZic6IHNpemUgPSBzaXplb2YoZmxvYXQpOyBicmVhazsKICAgICBjYXNlICdkJzogc2l6ZSA9IHNpemVvZihkb3VibGUpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKF9Cb29sKTsgYnJlYWs7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihjaGFyKTsgYnJlYWs7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IHNpemUgPSBzaXplb2Yodm9pZCAqKTsgYnJlYWs7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMjcsNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBnZXRfbmF0aXZlX2ZtdHN0cihjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgaW50IGF0ID0gMDsKQEAgLTExNTgsMTkgKzExNTIsMTMgQEAKICAgICBjYXNlICdJJzogUkVUVVJOKCJJIik7CiAgICAgY2FzZSAnbCc6IFJFVFVSTigibCIpOwogICAgIGNhc2UgJ0wnOiBSRVRVUk4oIkwiKTsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzogUkVUVVJOKCJxIik7CiAgICAgY2FzZSAnUSc6IFJFVFVSTigiUSIpOwotICAgICNlbmRpZgogICAgIGNhc2UgJ24nOiBSRVRVUk4oIm4iKTsKICAgICBjYXNlICdOJzogUkVUVVJOKCJOIik7CiAgICAgY2FzZSAnZic6IFJFVFVSTigiZiIpOwogICAgIGNhc2UgJ2QnOiBSRVRVUk4oImQiKTsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICdQJzogUkVUVVJOKCJQIik7CiAgICAgfQogCkBAIC0xMjIxLDcgKzEyMDksNyBAQAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICB2aWV3LT5mb3JtYXQgPSBnZXRfbmF0aXZlX2ZtdHN0cihQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCkpOworICAgIHZpZXctPmZvcm1hdCA9IChjaGFyICopZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKICAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpIHsKICAgICAgICAgLyogTk9UX1JFQUNIRUQ6IGdldF9uYXRpdmVfZm10Y2hhcigpIGFscmVhZHkgdmFsaWRhdGVzIHRoZSBmb3JtYXQuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNTgxLDEyICsxNTY5LDExIEBACiAgICAgcmV0dXJuIGx1OwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIHB5bG9uZ19hc19sbGQoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCkBAIC0xNTk3LDIxICsxNTg0LDIwIEBACiAgICAgcmV0dXJuIGxsZDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogcHlsb25nX2FzX2xsdShQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqdG1wOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKIAogICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOwogICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgbGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh0bXApOwogICAgIFB5X0RFQ1JFRih0bXApOwogICAgIHJldHVybiBsbHU7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5X3NzaXplX3QKIHB5bG9uZ19hc196ZChQeU9iamVjdCAqaXRlbSkKQEAgLTE2NTYsMTMgKzE2NDIsMTMgQEAKIC8qIFVucGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluIHN0cnVjdAogICAgbW9kdWxlIHN5bnRheC4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNlbnNpdGl2ZSB0byBzbWFsbCBjaGFuZ2VzLiBXaXRoIHRoaXMKICAgIGxheW91dCBnY2MgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBmYXN0IGp1bXAgdGFibGUuICovCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogdW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE2NzksMTEgKzE2NjUsNyBAQAogICAgIGNhc2UgJ2wnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGQ7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBfQm9vbCk7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgY2hhcik7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBzaG9ydCk7IGdvdG8gY29udmVydF9sdTsKQEAgLTE2OTEsMTAgKzE2NzMsOCBAQAogICAgIGNhc2UgJ0wnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcpOyBnb3RvIGNvbnZlcnRfbHU7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbGQ7Ci0gICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbHU7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbGQ7CisgICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbHU7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogVU5QQUNLX1NJTkdMRSh6ZCwgcHRyLCBQeV9zc2l6ZV90KTsgZ290byBjb252ZXJ0X3pkOwpAQCAtMTc1NSwxMCArMTczNSwxMCBAQAogc3RhdGljIGludAogcGFja19zaW5nbGUoY2hhciAqcHRyLCBQeU9iamVjdCAqaXRlbSwgY29uc3QgY2hhciAqZm10KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKICAgICB1bnNpZ25lZCBsb25nIGx1OwogICAgIHNpemVfdCB6dTsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAgICAgbG9uZyBsZDsKICAgICBQeV9zc2l6ZV90IHpkOwogICAgIGRvdWJsZSBkOwpAQCAtMTgwNiwyMCArMTc4NiwxOCBAQAogICAgICAgICBicmVhazsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKICAgICAgICAgbGxkID0gcHlsb25nX2FzX2xsZChpdGVtKTsKICAgICAgICAgaWYgKGxsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7Ci0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBQWV9MT05HX0xPTkcpOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgbG9uZyBsb25nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6CiAgICAgICAgIGxsdSA9IHB5bG9uZ19hc19sbHUoaXRlbSk7Ci0gICAgICAgIGlmIChsbHUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsdSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwotICAgICNlbmRpZgogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6CkBAIC0xODUzLDExICsxODMxLDcgQEAKICAgICAgICAgbGQgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIGlmIChsZCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHByZXNlcnZlIG9yaWdpbmFsIGVycm9yICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgX0Jvb2wpOwotICAgICNlbHNlCi0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGNoYXIpOwotICAgICNlbmRpZgogICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBieXRlcyBvYmplY3QgKi8KQEAgLTIwMjQsNyArMTk5OCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogYWxsb3cgZXhwbGljaXQgZm9ybSBvZiBuYXRpdmUgZm9ybWF0ICovCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgY2hhciAqKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKIGFkanVzdF9mbXQoY29uc3QgUHlfYnVmZmVyICp2aWV3KQogewogICAgIGNvbnN0IGNoYXIgKmZtdDsKQEAgLTIzMDYsNyArMjI4MCw3IEBACiAgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGluaXRfc2xpY2UoUHlfYnVmZmVyICpiYXNlLCBQeU9iamVjdCAqa2V5LCBpbnQgZGltKQogewogICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOwpAQCAtMjYyOCw3ICsyNjAyLDcgQEAKICAgICAgICAgZXF1YWwgPSAoeCA9PSB5KTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogdW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLCBjaGFyIGZtdCwKICAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKIHsKQEAgLTI2NDQsMTEgKzI2MTgsNyBAQAogICAgIGNhc2UgJ2wnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBfQm9vbCk7IHJldHVybiBlcXVhbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIGNoYXIpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2VuZGlmCiAKICAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLwogICAgIGNhc2UgJ0gnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIHNob3J0KTsgcmV0dXJuIGVxdWFsOwpAQCAtMjY1NiwxMCArMjYyNiw4IEBACiAgICAgY2FzZSAnTCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyk7IHJldHVybiBlcXVhbDsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7Ci0gICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcgbG9uZyk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogQ01QX1NJTkdMRShwLCBxLCBQeV9zc2l6ZV90KTsgcmV0dXJuIGVxdWFsOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggOTQ2MzU3Zi4uYzIwMDFmMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC05Nyw2ICs5NywxMSBAQAogICAgIGlmIChmbGFncyA9PSAoTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUykpIHsKICAgICAgICAgcmVzID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkoc2VsZiwgYXJncywga3dkcyk7CiAgICAgfQorICAgIGVsc2UgaWYgKGZsYWdzID09IE1FVEhfRkFTVENBTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKipzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgcmVzID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZHMpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLApAQCAtMTQ1LDYgKzE1MCwxNTMgQEAKICAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzLCBOVUxMKTsKIH0KIAorUHlPYmplY3QgKgorX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuY19vYmosIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNGdW5jdGlvbk9iamVjdCAqZnVuYyA9IChQeUNGdW5jdGlvbk9iamVjdCopZnVuY19vYmo7CisgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKKyAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IGZsYWdzOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgLyogX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBmbGFncyA9IFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSAmIH4oTUVUSF9DTEFTUyB8IE1FVEhfU1RBVElDIHwgTUVUSF9DT0VYSVNUKTsKKworICAgIHN3aXRjaCAoZmxhZ3MpCisgICAgeworICAgIGNhc2UgTUVUSF9OT0FSR1M6CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgTlVMTCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX086CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSwgbmFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKm1ldGgpIChzZWxmLCBhcmdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1FVEhfVkFSQVJHUzoKKyAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6CisgICAgeworICAgICAgICAvKiBTbG93LXBhdGg6IGNyZWF0ZSBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgaWYgKCEoZmxhZ3MgJiBNRVRIX0tFWVdPUkRTKSAmJiBrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgeworICAgICAgICAgICAgcmVzdWx0ID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkgKHNlbGYsIHR1cGxlLCBrd2FyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgdHVwbGUpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTUVUSF9GQVNUQ0FMTDoKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzOworICAgICAgICBfUHlDRnVuY3Rpb25GYXN0IGZhc3RtZXRoID0gKF9QeUNGdW5jdGlvbkZhc3QpbWV0aDsKKworICAgICAgICBzdGFjayA9IF9QeVN0YWNrX1VucGFja0RpY3QoYXJncywgbmFyZ3MsIGt3YXJncywgJmt3bmFtZXMsIGZ1bmNfb2JqKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCpmYXN0bWV0aCkgKHNlbGYsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChzdGFjayAhPSBhcmdzKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGt3bmFtZXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIGNhbGwgZmxhZ3MgaW4gUHlDRnVuY3Rpb25fQ2FsbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIk1FVEhfT0xEQVJHUyBpcyBubyBsb25nZXIgc3VwcG9ydGVkISIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jX29iaiwgcmVzdWx0LCBOVUxMKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qIE1ldGhvZHMgKHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2RzLCB0aGF0IGlzKSAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggYWU3MmRhNi4uNzliZTUxYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC0zODAsNyArMzgwLDcgQEAKICAgICBmb3IgKGN1cl9zbG90ID0gZGVmLT5tX3Nsb3RzOyBjdXJfc2xvdCAmJiBjdXJfc2xvdC0+c2xvdDsgY3VyX3Nsb3QrKykgewogICAgICAgICBzd2l0Y2ggKGN1cl9zbG90LT5zbG90KSB7CiAgICAgICAgICAgICBjYXNlIFB5X21vZF9jcmVhdGU6Ci0gICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9DcmVhdGVGcm9tU2xvdHMgKi8KKyAgICAgICAgICAgICAgICAvKiBoYW5kbGVkIGluIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMiAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQeV9tb2RfZXhlYzoKICAgICAgICAgICAgICAgICByZXQgPSAoKGludCAoKikoUHlPYmplY3QgKikpY3VyX3Nsb3QtPnZhbHVlKShtb2R1bGUpOwpAQCAtNDUwLDggKzQ1MCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBkID0gKChQeU1vZHVsZU9iamVjdCAqKW0pIC0+IG1kX2RpY3Q7Ci0gICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgKChQeU1vZHVsZU9iamVjdCAqKW0pIC0+IG1kX2RpY3QgPSBkID0gUHlEaWN0X05ldygpOworICAgIGFzc2VydChkICE9IE5VTEwpOwogICAgIHJldHVybiBkOwogfQogCkBAIC00ODQsNyArNDgzLDcgQEAKICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYobmFtZSk7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCi0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc1VURjgobmFtZSk7CiB9CiAKIFB5T2JqZWN0KgpAQCAtNTE3LDcgKzUxNiw3IEBACiAgICAgZmlsZW9iaiA9IFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KG0pOwogICAgIGlmIChmaWxlb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHV0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKGZpbGVvYmopOworICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNVVEY4KGZpbGVvYmopOwogICAgIFB5X0RFQ1JFRihmaWxlb2JqKTsgICAvKiBtb2R1bGUgZGljdCBoYXMgc3RpbGwgYSByZWZlcmVuY2UgKi8KICAgICByZXR1cm4gdXRmODsKIH0KQEAgLTU3MCw3ICs1NjksNyBAQAogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAwKSA9PSAnXycgJiYKICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGtleSwgMSkgIT0gJ18nKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gUHlVbmljb2RlX0FzVVRGOChrZXkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocyAhPSBOVUxMKQogICAgICAgICAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgICBjbGVhclsxXSAlc1xuIiwgcyk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTU5MCw3ICs1ODksNyBAQAogICAgICAgICAgICAgICAgICFfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhrZXksICJfX2J1aWx0aW5zX18iKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBQeVVuaWNvZGVfQXNVVEY4KGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAgIGNsZWFyWzJdICVzXG4iLCBzKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKaW5kZXggM2QyN2E5NS4uMGJiMzA2MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYworKysgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCkBAIC0xLDQgKzEsNCBAQAotLyogbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLworLy8gbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCkBAIC0xNiw3ICsxNiw3IEBACiB9OwogCiAKLS8qIE1ldGhvZHMgKi8KKy8vIE1ldGhvZHMKIAogc3RhdGljIFB5T2JqZWN0ICoKIG5hbWVzcGFjZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC00MCw3ICs0MCw3IEBACiBzdGF0aWMgaW50CiBuYW1lc3BhY2VfaW5pdChfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgLyogaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5ICovCisgICAgLy8gaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5CiAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlPYmplY3RfU2l6ZShhcmdzKTsKICAgICAgICAgaWYgKGFyZ2NvdW50IDwgMCkKQEAgLTE5MSw3ICsxOTEsNyBAQAogc3RhdGljIFB5TWV0aG9kRGVmIG5hbWVzcGFjZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKW5hbWVzcGFjZV9yZWR1Y2UsIE1FVEhfTk9BUkdTLAogICAgICBuYW1lc3BhY2VfcmVkdWNlX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgTlVMTH0gIC8qIHNlbnRpbmVsICovCisgICAge05VTEwsICAgICAgICAgTlVMTH0gIC8vIHNlbnRpbmVsCiB9OwogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JqZWN0LmMgYi9PYmplY3RzL29iamVjdC5jCmluZGV4IGQyMWZkOTAuLmQ4OGFlM2IgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vYmplY3QuYwpAQCAtMjIsMTIgKzIyLDYgQEAKIHsKICAgICBQeU9iamVjdCAqbzsKICAgICBQeV9zc2l6ZV90IHRvdGFsID0gX1B5X1JlZlRvdGFsOwotICAgIC8qIGlnbm9yZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgZHVtbXkgb2JqZWN0IG9mIHRoZSBkaWN0cyBhbmQgc2V0cwotICAgICAgIGJlY2F1c2UgdGhleSBhcmUgbm90IHJlbGlhYmxlIGFuZCBub3QgdXNlZnVsIChub3cgdGhhdCB0aGUKLSAgICAgICBoYXNoIHRhYmxlIGNvZGUgaXMgd2VsbC10ZXN0ZWQpICovCi0gICAgbyA9IF9QeURpY3RfRHVtbXkoKTsKLSAgICBpZiAobyAhPSBOVUxMKQotICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgbyA9IF9QeVNldF9EdW1teTsKICAgICBpZiAobyAhPSBOVUxMKQogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CkBAIC0xMDksNiArMTAzLDE1IEBACiBkdW1wX2NvdW50cyhGSUxFKiBmKQogewogICAgIFB5VHlwZU9iamVjdCAqdHA7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHRwID0gdHlwZV9saXN0OyB0cDsgdHAgPSB0cC0+dHBfbmV4dCkKICAgICAgICAgZnByaW50ZihmLCAiJXMgYWxsb2MnZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZCwgIgpAQCAtNjQ0LDcgKzY0Nyw3IEBACiAvKiBNYXAgcmljaCBjb21wYXJpc29uIG9wZXJhdG9ycyB0byB0aGVpciBzd2FwcGVkIHZlcnNpb24sIGUuZy4gTFQgPC0tPiBHVCAqLwogaW50IF9QeV9Td2FwcGVkT3BbXSA9IHtQeV9HVCwgUHlfR0UsIFB5X0VRLCBQeV9ORSwgUHlfTFQsIFB5X0xFfTsKIAotc3RhdGljIGNoYXIgKm9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3BzdHJpbmdzW10gPSB7IjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPiIsICI+PSJ9OwogCiAvKiBQZXJmb3JtIGEgcmljaCBjb21wYXJpc29uLCByYWlzaW5nIFR5cGVFcnJvciB3aGVuIHRoZSByZXF1ZXN0ZWQgY29tcGFyaXNvbgogICAgb3BlcmF0b3IgaXMgbm90IHN1cHBvcnRlZC4gKi8KQEAgLTY4NiwxMSArNjg5LDEwIEBACiAgICAgICAgIHJlcyA9ICh2ICE9IHcpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiBYWFggU3BlY2lhbC1jYXNlIE5vbmUgc28gaXQgZG9lc24ndCBzaG93IGFzIE5vbmVUeXBlKCkgKi8KICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bm9yZGVyYWJsZSB0eXBlczogJS4xMDBzKCkgJXMgJS4xMDBzKCkiLAotICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICInJXMnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJyUuMTAwcycgYW5kICclLjEwMHMnIiwKICAgICAgICAgICAgICAgICAgICAgIG9wc3RyaW5nc1tvcF0sCisgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgdy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTg4OCw3ICs4OTAsNyBAQAogICAgIGlmICh0cC0+dHBfZ2V0YXR0cm8gIT0gTlVMTCkKICAgICAgICAgcmV0dXJuICgqdHAtPnRwX2dldGF0dHJvKSh2LCBuYW1lKTsKICAgICBpZiAodHAtPnRwX2dldGF0dHIgIT0gTlVMTCkgewotICAgICAgICBjaGFyICpuYW1lX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CisgICAgICAgIGNoYXIgKm5hbWVfc3RyID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKICAgICAgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuICgqdHAtPnRwX2dldGF0dHIpKHYsIG5hbWVfc3RyKTsKQEAgLTkzMiw3ICs5MzQsNyBAQAogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICAgICBpZiAodHAtPnRwX3NldGF0dHIgIT0gTlVMTCkgewotICAgICAgICBjaGFyICpuYW1lX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CisgICAgICAgIGNoYXIgKm5hbWVfc3RyID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKICAgICAgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVyciA9ICgqdHAtPnRwX3NldGF0dHIpKHYsIG5hbWVfc3RyLCB2YWx1ZSk7CkBAIC0xMDQxLDggKzEwNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCkBAIC0xMDUwLDEwICsxMDUxLDEwIEBACiAgICAgfQogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKICAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX2dldDsKICAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopb2JqLT5vYl90eXBlKTsKQEAgLTEwNzMsOCArMTA3NCw5IEBACiAgICAgICAgICAgICAgICAgaWYgKHRzaXplIDwgMCkKICAgICAgICAgICAgICAgICAgICAgdHNpemUgPSAtdHNpemU7CiAgICAgICAgICAgICAgICAgc2l6ZSA9IF9QeU9iamVjdF9WQVJfU0laRSh0cCwgdHNpemUpOworICAgICAgICAgICAgICAgIGFzc2VydChzaXplIDw9IFBZX1NTSVpFX1RfTUFYKTsKIAotICAgICAgICAgICAgICAgIGRpY3RvZmZzZXQgKz0gKGxvbmcpc2l6ZTsKKyAgICAgICAgICAgICAgICBkaWN0b2Zmc2V0ICs9IChQeV9zc2l6ZV90KXNpemU7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRpY3RvZmZzZXQgPiAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoZGljdG9mZnNldCAlIFNJWkVPRl9WT0lEX1AgPT0gMCk7CiAgICAgICAgICAgICB9CkBAIC0xMTQyLDEyICsxMTQ0LDExIEBACiAgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKLSAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX3NldDsKLSAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKKyAgICAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCB2YWx1ZSk7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KQEAgLTExNTUsNDAgKzExNTYsMzIgQEAKIAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7Ci0gICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChkZXNjciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0odHAsIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGRpY3QgIT0gTlVMTCkgeworICAgIGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoZGljdCk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIG5hbWUsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKICAgICB9CisgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CiAKLSAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgdmFsdWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAotICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKLSAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgogICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKQEAgLTEyMDQsNyArMTE5Nyw3IEBACiBpbnQKIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOwpAQCAtMTIyMCwxMCArMTIxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgICpkaWN0cHRyID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1hTRVRSRUYoKmRpY3RwdHIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDdjYzg4OWYuLmExMTQyZjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTEsMzEgKzEsNDIgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworCisvKiBEZWZpbmVkIGluIHRyYWNlbWFsbG9jLmMgKi8KK2V4dGVybiB2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKTsKKworCiAvKiBQeXRob24ncyBtYWxsb2Mgd3JhcHBlcnMgKHNlZSBweW1lbS5oKSAqLwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCisjdW5kZWYgIHVpbnQKKyNkZWZpbmUgdWludCAgICB1bnNpZ25lZCBpbnQgICAgLyogYXNzdW1pbmcgPj0gMTYgYml0cyAqLworCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnUmF3RnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOworCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7Ci1zdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogCiBzdGF0aWMgdm9pZCBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaV9pZCwgY29uc3Qgdm9pZCAqcCk7Ci0jZW5kaWYKIAogI2lmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkgIC8qIENsYW5nICovCiAgI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpICAvKiBpcyBBU0FOIGVuYWJsZWQ/ICovCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKSBcCi0gICAgICAgIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCisgICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkKICAjZWxzZQogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogICNlbmRpZgogI2Vsc2UKICAjaWYgZGVmaW5lZChfX1NBTklUSVpFX0FERFJFU1NfXykgIC8qIEdDQyA0LjgueCwgaXMgQVNBTiBlbmFibGVkPyAqLwogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUyBcCi0gICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpCiAgI2Vsc2UKICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKICAjZW5kaWYKQEAgLTE0NSw5ICsxNTYsOCBAQAogI2Vsc2UKICMgIGRlZmluZSBQWU9CSl9GVU5DUyBQWVJBV19GVU5DUwogI2VuZGlmCi0jZGVmaW5lIFBZTUVNX0ZVTkNTIFBZUkFXX0ZVTkNTCisjZGVmaW5lIFBZTUVNX0ZVTkNTIFBZT0JKX0ZVTkNTCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIFdlIHRhZyBlYWNoIGJsb2NrIHdpdGggYW4gQVBJIElEIGluIG9yZGVyIHRvIHRhZyBBUEkgdmlvbGF0aW9ucyAqLwogICAgIGNoYXIgYXBpX2lkOwpAQCAtMTYzLDE5ICsxNzMsMjEgQEAKICAgICB7J28nLCB7TlVMTCwgUFlPQkpfRlVOQ1N9fQogICAgIH07CiAKLSNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKLSNlbmRpZgorI2RlZmluZSBQWVJBV0RCR19GVU5DUyBcCisgICAgX1B5TWVtX0RlYnVnUmF3TWFsbG9jLCBfUHlNZW1fRGVidWdSYXdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUKKyNkZWZpbmUgUFlEQkdfRlVOQ1MgXAorICAgIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbV9SYXcgPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlEQkdfRlVOQ1MKKyNpZmRlZiBQeV9ERUJVRworICAgICZfUHlNZW1fRGVidWcucmF3LCBQWVJBV0RCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWVJBV19GVU5DUwogI2VuZGlmCiAgICAgfTsKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisjaWZkZWYgUHlfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm1lbSwgUFlEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlNRU1fRlVOQ1MKQEAgLTE4MywxNiArMTk1LDc2IEBACiAgICAgfTsKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5T2JqZWN0ID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisjaWZkZWYgUHlfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm9iaiwgUFlEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlPQkpfRlVOQ1MKICNlbmRpZgogICAgIH07CiAKK2ludAorX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhjb25zdCBjaGFyICpvcHQpCit7CisgICAgaWYgKG9wdCA9PSBOVUxMIHx8ICpvcHQgPT0gJ1wwJykgeworICAgICAgICAvKiBQWVRIT05NQUxMT0MgaXMgZW1wdHkgb3IgaXMgbm90IHNldCBvciBpZ25vcmVkICgtRS8tSSBjb21tYW5kIGxpbmUKKyAgICAgICAgICAgb3B0aW9ucyk6IHVzZSBkZWZhdWx0IGFsbG9jYXRvcnMgKi8KKyNpZmRlZiBQeV9ERUJVRworIyAgaWZkZWYgV0lUSF9QWU1BTExPQworICAgICAgICBvcHQgPSAicHltYWxsb2NfZGVidWciOworIyAgZWxzZQorICAgICAgICBvcHQgPSAibWFsbG9jX2RlYnVnIjsKKyMgIGVuZGlmCisjZWxzZQorICAgLyogIVB5X0RFQlVHICovCisjICBpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgICAgIG9wdCA9ICJweW1hbGxvYyI7CisjICBlbHNlCisgICAgICAgIG9wdCA9ICJtYWxsb2MiOworIyAgZW5kaWYKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChzdHJjbXAob3B0LCAiZGVidWciKSA9PSAwKSB7CisgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAob3B0LCAibWFsbG9jIikgPT0gMCB8fCBzdHJjbXAob3B0LCAibWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICB7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2MgPSB7TlVMTCwgUFlSQVdfRlVOQ1N9OworCisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvYyk7CisKKyAgICAgICAgaWYgKHN0cmNtcChvcHQsICJtYWxsb2NfZGVidWciKSA9PSAwKQorICAgICAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBlbHNlIGlmIChzdHJjbXAob3B0LCAicHltYWxsb2MiKSA9PSAwCisgICAgICAgICAgICAgfHwgc3RyY21wKG9wdCwgInB5bWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICB7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggcmF3X2FsbG9jID0ge05VTEwsIFBZUkFXX0ZVTkNTfTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBtZW1fYWxsb2MgPSB7TlVMTCwgUFlNRU1fRlVOQ1N9OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IG9ial9hbGxvYyA9IHtOVUxMLCBQWU9CSl9GVU5DU307CisKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZyYXdfYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJm1lbV9hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmb2JqX2FsbG9jKTsKKworICAgICAgICBpZiAoc3RyY21wKG9wdCwgInB5bWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICAgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICAvKiB1bmtub3duIGFsbG9jYXRvciAqLworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiAjdW5kZWYgUFlSQVdfRlVOQ1MKICN1bmRlZiBQWU1FTV9GVU5DUwogI3VuZGVmIFBZT0JKX0ZVTkNTCisjdW5kZWYgUFlSQVdEQkdfRlVOQ1MKICN1bmRlZiBQWURCR19GVU5DUwogCiBzdGF0aWMgUHlPYmplY3RBcmVuYUFsbG9jYXRvciBfUHlPYmplY3RfQXJlbmEgPSB7TlVMTCwKQEAgLTIwNSwyMyArMjc3LDQ2IEBACiAjZW5kaWYKICAgICB9OwogCisjaWZkZWYgV0lUSF9QWU1BTExPQworc3RhdGljIGludAorX1B5TWVtX0RlYnVnRW5hYmxlZCh2b2lkKQoreworICAgIHJldHVybiAoX1B5T2JqZWN0Lm1hbGxvYyA9PSBfUHlNZW1fRGVidWdNYWxsb2MpOworfQorCitpbnQKK19QeU1lbV9QeW1hbGxvY0VuYWJsZWQodm9pZCkKK3sKKyAgICBpZiAoX1B5TWVtX0RlYnVnRW5hYmxlZCgpKSB7CisgICAgICAgIHJldHVybiAoX1B5TWVtX0RlYnVnLm9iai5hbGxvYy5tYWxsb2MgPT0gX1B5T2JqZWN0X01hbGxvYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gKF9QeU9iamVjdC5tYWxsb2MgPT0gX1B5T2JqZWN0X01hbGxvYyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQKIFB5TWVtX1NldHVwRGVidWdIb29rcyh2b2lkKQogewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKIAorICAgIGFsbG9jLm1hbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYzsKKyAgICBhbGxvYy5jYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdDYWxsb2M7CisgICAgYWxsb2MucmVhbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2M7CisgICAgYWxsb2MuZnJlZSA9IF9QeU1lbV9EZWJ1Z1Jhd0ZyZWU7CisKKyAgICBpZiAoX1B5TWVtX1Jhdy5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnUmF3TWFsbG9jKSB7CisgICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcucmF3OworICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJl9QeU1lbV9EZWJ1Zy5yYXcuYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKKyAgICB9CisKICAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdNYWxsb2M7CiAgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnQ2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdGcmVlOwogCi0gICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgewotICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKLSAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKLSAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7Ci0gICAgfQotCiAgICAgaWYgKF9QeU1lbS5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnTWFsbG9jKSB7CiAgICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcubWVtOwogICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJl9QeU1lbV9EZWJ1Zy5tZW0uYWxsb2MpOwpAQCAtMjMzLDcgKzMyOCw2IEBACiAgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmX1B5TWVtX0RlYnVnLm9iai5hbGxvYyk7CiAgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkCkBAIC0yNjQsNyArMzU4LDYgQEAKICAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IF9QeU9iamVjdCA9ICphbGxvY2F0b3I7IGJyZWFrOwogICAgIC8qIGlnbm9yZSB1bmtub3duIGRvbWFpbiAqLwogICAgIH0KLQogfQogCiB2b2lkCkBAIC02NDIsMjQgKzczNSw4IEBACiAjZGVmaW5lIFNJTVBMRUxPQ0tfTE9DSyhsb2NrKSAgIC8qIGFjcXVpcmUgcmVsZWFzZWQgbG9jayAqLwogI2RlZmluZSBTSU1QTEVMT0NLX1VOTE9DSyhsb2NrKSAvKiByZWxlYXNlIGFjcXVpcmVkIGxvY2sgKi8KIAotLyoKLSAqIEJhc2ljIHR5cGVzCi0gKiBJIGRvbid0IGNhcmUgaWYgdGhlc2UgYXJlIGRlZmluZWQgaW4gPHN5cy90eXBlcy5oPiBvciBlbHNld2hlcmUuIEF4aW9tLgotICovCi0jdW5kZWYgIHVjaGFyCi0jZGVmaW5lIHVjaGFyICAgdW5zaWduZWQgY2hhciAgIC8qIGFzc3VtaW5nID09IDggYml0cyAgKi8KLQotI3VuZGVmICB1aW50Ci0jZGVmaW5lIHVpbnQgICAgdW5zaWduZWQgaW50ICAgIC8qIGFzc3VtaW5nID49IDE2IGJpdHMgKi8KLQotI3VuZGVmICB1bG9uZwotI2RlZmluZSB1bG9uZyAgIHVuc2lnbmVkIGxvbmcgICAvKiBhc3N1bWluZyA+PSAzMiBiaXRzICovCi0KLSN1bmRlZiB1cHRyCi0jZGVmaW5lIHVwdHIgICAgUHlfdWludHB0cl90Ci0KIC8qIFdoZW4geW91IHNheSBtZW1vcnksIG15IG1pbmQgcmVhc29ucyBpbiB0ZXJtcyBvZiAocG9pbnRlcnMgdG8pIGJsb2NrcyAqLwotdHlwZWRlZiB1Y2hhciBibG9jazsKK3R5cGVkZWYgdWludDhfdCBibG9jazsKIAogLyogUG9vbCBmb3Igc21hbGwgYmxvY2tzLiAqLwogc3RydWN0IHBvb2xfaGVhZGVyIHsKQEAgLTY4Myw3ICs3NjAsNyBAQAogICAgICAqIGhlcmUgdG8gbWFyayBhbiBhcmVuYV9vYmplY3QgdGhhdCBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYW4KICAgICAgKiBhbGxvY2F0ZWQgYXJlbmEuCiAgICAgICovCi0gICAgdXB0ciBhZGRyZXNzOworICAgIHVpbnRwdHJfdCBhZGRyZXNzOwogCiAgICAgLyogUG9vbC1hbGlnbmVkIHBvaW50ZXIgdG8gdGhlIG5leHQgcG9vbCB0byBiZSBjYXJ2ZWQgb2ZmLiAqLwogICAgIGJsb2NrKiBwb29sX2FkZHJlc3M7CkBAIC04MzQsNyArOTExLDcgQEAKIHRoZSBwcmV2cG9vbCBtZW1iZXIuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAKLSNkZWZpbmUgUFRBKHgpICAoKHBvb2xwICkoKHVjaGFyICopJih1c2VkcG9vbHNbMiooeCldKSAtIDIqc2l6ZW9mKGJsb2NrICopKSkKKyNkZWZpbmUgUFRBKHgpICAoKHBvb2xwICkoKHVpbnQ4X3QgKikmKHVzZWRwb29sc1syKih4KV0pIC0gMipzaXplb2YoYmxvY2sgKikpKQogI2RlZmluZSBQVCh4KSAgIFBUQSh4KSwgUFRBKHgpCiAKIHN0YXRpYyBwb29scCB1c2VkcG9vbHNbMiAqICgoTkJfU01BTExfU0laRV9DTEFTU0VTICsgNykgLyA4KSAqIDhdID0gewpAQCAtOTQ5LDExICsxMDI2LDE1IEBACiAgICAgc3RydWN0IGFyZW5hX29iamVjdCogYXJlbmFvYmo7CiAgICAgdWludCBleGNlc3M7ICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgYWJvdmUgcG9vbCBhbGlnbm1lbnQgKi8KICAgICB2b2lkICphZGRyZXNzOworICAgIHN0YXRpYyBpbnQgZGVidWdfc3RhdHMgPSAtMTsKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKKyAgICBpZiAoZGVidWdfc3RhdHMgPT0gLTEpIHsKKyAgICAgICAgY2hhciAqb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpOworICAgICAgICBkZWJ1Z19zdGF0cyA9IChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpOworICAgIH0KKyAgICBpZiAoZGVidWdfc3RhdHMpCiAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0jZW5kaWYKKwogICAgIGlmICh1bnVzZWRfYXJlbmFfb2JqZWN0cyA9PSBOVUxMKSB7CiAgICAgICAgIHVpbnQgaTsKICAgICAgICAgdWludCBudW1hcmVuYXM7CkBAIC05NjYsNyArMTA0Nyw3IEBACiAgICAgICAgIGlmIChudW1hcmVuYXMgPD0gbWF4YXJlbmFzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93ICovCiAjaWYgU0laRU9GX1NJWkVfVCA8PSBTSVpFT0ZfSU5UCi0gICAgICAgIGlmIChudW1hcmVuYXMgPiBQWV9TSVpFX01BWCAvIHNpemVvZigqYXJlbmFzKSkKKyAgICAgICAgaWYgKG51bWFyZW5hcyA+IFNJWkVfTUFYIC8gc2l6ZW9mKCphcmVuYXMpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93ICovCiAjZW5kaWYKICAgICAgICAgbmJ5dGVzID0gbnVtYXJlbmFzICogc2l6ZW9mKCphcmVuYXMpOwpAQCAtMTAxMCw3ICsxMDkxLDcgQEAKICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iajsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVwdHIpYWRkcmVzczsKKyAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1aW50cHRyX3QpYWRkcmVzczsKIAogICAgICsrbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwogICAgICsrbnRpbWVzX2FyZW5hX2FsbG9jYXRlZDsKQEAgLTEwMzMsMTMgKzExMTQsMTMgQEAKIH0KIAogLyoKLVB5X0FERFJFU1NfSU5fUkFOR0UoUCwgUE9PTCkKK2FkZHJlc3NfaW5fcmFuZ2UoUCwgUE9PTCkKIAogUmV0dXJuIHRydWUgaWYgYW5kIG9ubHkgaWYgUCBpcyBhbiBhZGRyZXNzIHRoYXQgd2FzIGFsbG9jYXRlZCBieSBweW1hbGxvYy4KIFBPT0wgbXVzdCBiZSB0aGUgcG9vbCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBQLCBpLmUuLCBQT09MID0gUE9PTF9BRERSKFApCiAodGhlIGNhbGxlciBpcyBhc2tlZCB0byBjb21wdXRlIHRoaXMgYmVjYXVzZSB0aGUgbWFjcm8gZXhwYW5kcyBQT09MIG1vcmUgdGhhbgogb25jZSwgYW5kIGZvciBlZmZpY2llbmN5IGl0J3MgYmVzdCBmb3IgdGhlIGNhbGxlciB0byBhc3NpZ24gUE9PTF9BRERSKFApIHRvIGEKLXZhcmlhYmxlIGFuZCBwYXNzIHRoZSBsYXR0ZXIgdG8gdGhlIG1hY3JvOyBiZWNhdXNlIFB5X0FERFJFU1NfSU5fUkFOR0UgaXMKK3ZhcmlhYmxlIGFuZCBwYXNzIHRoZSBsYXR0ZXIgdG8gdGhlIG1hY3JvOyBiZWNhdXNlIGFkZHJlc3NfaW5fcmFuZ2UgaXMKIGNhbGxlZCBvbiBldmVyeSBhbGxvYy9yZWFsbG9jL2ZyZWUsIG1pY3JvLWVmZmljaWVuY3kgaXMgaW1wb3J0YW50IGhlcmUpLgogCiBUcmlja3k6ICBMZXQgQiBiZSB0aGUgYXJlbmEgYmFzZSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbCwgQiA9CkBAIC0xMDY0LDcgKzExNDUsNyBAQAogc3RvcmVzLCBldGMpLCBQT09MIGlzIHRoZSBjb3JyZWN0IGFkZHJlc3Mgb2YgUCdzIHBvb2wsIEFPLmFkZHJlc3MgaXMgdGhlCiBjb3JyZWN0IGJhc2UgYWRkcmVzcyBvZiB0aGUgcG9vbCdzIGFyZW5hLCBhbmQgUCBtdXN0IGJlIHdpdGhpbiBBUkVOQV9TSVpFIG9mCiBBTy5hZGRyZXNzLiAgSW4gYWRkaXRpb24sIEFPLmFkZHJlc3MgaXMgbm90IDAgKG5vIGFyZW5hIGNhbiBzdGFydCBhdCBhZGRyZXNzIDAKLShOVUxMKSkuICBUaGVyZWZvcmUgUHlfQUREUkVTU19JTl9SQU5HRSBjb3JyZWN0bHkgcmVwb3J0cyB0aGF0IG9ibWFsbG9jCisoTlVMTCkpLiAgVGhlcmVmb3JlIGFkZHJlc3NfaW5fcmFuZ2UgY29ycmVjdGx5IHJlcG9ydHMgdGhhdCBvYm1hbGxvYwogY29udHJvbHMgUC4KIAogTm93IHN1cHBvc2Ugb2JtYWxsb2MgZG9lcyBub3QgY29udHJvbCBQIChlLmcuLCBQIHdhcyBvYnRhaW5lZCB2aWEgYSBkaXJlY3QKQEAgLTExMDUsNTEgKzExODYsMjEgQEAKIG9ibWFsbG9jIGluIGEgc21hbGwgY29uc3RhbnQgdGltZSwgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBvZiBhcmVuYXMKIG9ibWFsbG9jIGNvbnRyb2xzLiAgU2luY2UgdGhpcyB0ZXN0IGlzIG5lZWRlZCBhdCBldmVyeSBlbnRyeSBwb2ludCwgaXQncwogZXh0cmVtZWx5IGRlc2lyYWJsZSB0aGF0IGl0IGJlIHRoaXMgZmFzdC4KLQotU2luY2UgUHlfQUREUkVTU19JTl9SQU5HRSBtYXkgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB3aGljaCB3YXMgbm90IGFsbG9jYXRlZAotYnkgUHl0aG9uLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCAoUE9PTCktPmFyZW5haW5kZXggaXMgcmVhZCBvbmx5IG9uY2UsIGFzCi1hbm90aGVyIHRocmVhZCBtYXkgYmUgY29uY3VycmVudGx5IG1vZGlmeWluZyB0aGUgdmFsdWUgd2l0aG91dCBob2xkaW5nIHRoZQotR0lMLiAgVG8gYWNjb21wbGlzaCB0aGlzLCB0aGUgYXJlbmFpbmRleF90ZW1wIHZhcmlhYmxlIGlzIHVzZWQgdG8gc3RvcmUKLShQT09MKS0+YXJlbmFpbmRleCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBQeV9BRERSRVNTX0lOX1JBTkdFIG1hY3JvJ3MKLWV4ZWN1dGlvbi4gIFRoZSBjYWxsZXIgb2YgdGhlIG1hY3JvIGlzIHJlc3BvbnNpYmxlIGZvciBkZWNsYXJpbmcgdGhpcwotdmFyaWFibGUuCiAqLwotI2RlZmluZSBQeV9BRERSRVNTX0lOX1JBTkdFKFAsIFBPT0wpICAgICAgICAgICAgICAgICAgICBcCi0gICAgKChhcmVuYWluZGV4X3RlbXAgPSAoUE9PTCktPmFyZW5haW5kZXgpIDwgbWF4YXJlbmFzICYmICAgICAgICAgICAgICBcCi0gICAgICh1cHRyKShQKSAtIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgPCAodXB0cilBUkVOQV9TSVpFICYmIFwKLSAgICAgYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyAhPSAwKQogCi0KLS8qIFRoaXMgaXMgb25seSB1c2VmdWwgd2hlbiBydW5uaW5nIG1lbW9yeSBkZWJ1Z2dlcnMgc3VjaCBhcwotICogUHVyaWZ5IG9yIFZhbGdyaW5kLiAgVW5jb21tZW50IHRvIHVzZS4KLSAqCi0jZGVmaW5lIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICovCi0KLSNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLQotLyogUHlfQUREUkVTU19JTl9SQU5HRSBtYXkgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ5IGRlc2lnbgotICogVGhpcyBsZWFkcyB0byB0aG91c2FuZHMgb2Ygc3B1cmlvdXMgd2FybmluZ3Mgd2hlbiB1c2luZwotICogUHVyaWZ5IG9yIFZhbGdyaW5kLiAgQnkgbWFraW5nIGEgZnVuY3Rpb24sIHdlIGNhbiBlYXNpbHkKLSAqIHN1cHByZXNzIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbiB0aGlzIG9uZSBmdW5jdGlvbi4KLSAqIFNvIHdlIHdvbid0IGlnbm9yZSByZWFsIGVycm9ycyBlbHNld2hlcmUuCi0gKgotICogRGlzYWJsZSB0aGUgbWFjcm8gYW5kIHVzZSBhIGZ1bmN0aW9uLgotICovCi0KLSN1bmRlZiBQeV9BRERSRVNTX0lOX1JBTkdFCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChfX0dOVUNfXyA+PSA0KSkKLSNkZWZpbmUgUHlfTk9fSU5MSU5FIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCi0jZWxzZQotI2RlZmluZSBQeV9OT19JTkxJTkUKLSNlbmRpZgotCi0vKiBEb24ndCBtYWtlIHN0YXRpYywgdG8gdHJ5IHRvIGVuc3VyZSB0aGlzIGlzbid0IGlubGluZWQuICovCi1pbnQgUHlfQUREUkVTU19JTl9SQU5HRSh2b2lkICpQLCBwb29scCBwb29sKSBQeV9OT19JTkxJTkU7Ci0jdW5kZWYgUHlfTk9fSU5MSU5FCi0jZW5kaWYKK3N0YXRpYyBib29sIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUworYWRkcmVzc19pbl9yYW5nZSh2b2lkICpwLCBwb29scCBwb29sKQoreworICAgIC8vIFNpbmNlIGFkZHJlc3NfaW5fcmFuZ2UgbWF5IGJlIHJlYWRpbmcgZnJvbSBtZW1vcnkgd2hpY2ggd2FzIG5vdCBhbGxvY2F0ZWQKKyAgICAvLyBieSBQeXRob24sIGl0IGlzIGltcG9ydGFudCB0aGF0IHBvb2wtPmFyZW5haW5kZXggaXMgcmVhZCBvbmx5IG9uY2UsIGFzCisgICAgLy8gYW5vdGhlciB0aHJlYWQgbWF5IGJlIGNvbmN1cnJlbnRseSBtb2RpZnlpbmcgdGhlIHZhbHVlIHdpdGhvdXQgaG9sZGluZworICAgIC8vIHRoZSBHSUwuIFRoZSBmb2xsb3dpbmcgZGFuY2UgZm9yY2VzIHRoZSBjb21waWxlciB0byByZWFkIHBvb2wtPmFyZW5haW5kZXgKKyAgICAvLyBvbmx5IG9uY2UuCisgICAgdWludCBhcmVuYWluZGV4ID0gKigodm9sYXRpbGUgdWludCAqKSZwb29sLT5hcmVuYWluZGV4KTsKKyAgICByZXR1cm4gYXJlbmFpbmRleCA8IG1heGFyZW5hcyAmJgorICAgICAgICAodWludHB0cl90KXAgLSBhcmVuYXNbYXJlbmFpbmRleF0uYWRkcmVzcyA8IEFSRU5BX1NJWkUgJiYKKyAgICAgICAgYXJlbmFzW2FyZW5haW5kZXhdLmFkZHJlc3MgIT0gMDsKK30KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAKQEAgLTEzOTQsNyArMTQ0NSw2IEBACiAKIC8qIGZyZWUgKi8KIAotQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiBzdGF0aWMgdm9pZAogX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogewpAQCAtMTQwMiw5ICsxNDUyLDYgQEAKICAgICBibG9jayAqbGFzdGZyZWU7CiAgICAgcG9vbHAgbmV4dCwgcHJldjsKICAgICB1aW50IHNpemU7Ci0jaWZuZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wOwotI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKSAgICAgIC8qIGZyZWUoTlVMTCkgaGFzIG5vIGVmZmVjdCAqLwogICAgICAgICByZXR1cm47CkBAIC0xNDE3LDcgKzE0NjQsNyBAQAogI2VuZGlmCiAKICAgICBwb29sID0gUE9PTF9BRERSKHApOwotICAgIGlmIChQeV9BRERSRVNTX0lOX1JBTkdFKHAsIHBvb2wpKSB7CisgICAgaWYgKGFkZHJlc3NfaW5fcmFuZ2UocCwgcG9vbCkpIHsKICAgICAgICAgLyogV2UgYWxsb2NhdGVkIHRoaXMgYWRkcmVzcy4gKi8KICAgICAgICAgTE9DSygpOwogICAgICAgICAvKiBMaW5rIHAgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwb29sJ3MgZnJlZWJsb2NrIGxpc3QuICBTaW5jZQpAQCAtMTYyMywxNiArMTY3MCwxMiBAQAogICogcmV0dXJuIGEgbm9uLU5VTEwgcmVzdWx0LgogICovCiAKLUFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogc3RhdGljIHZvaWQgKgogX1B5T2JqZWN0X1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQogewogICAgIHZvaWQgKmJwOwogICAgIHBvb2xwIHBvb2w7CiAgICAgc2l6ZV90IHNpemU7Ci0jaWZuZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wOwotI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDAsIGN0eCwgMSwgbmJ5dGVzKTsKQEAgLTE2NDQsNyArMTY4Nyw3IEBACiAjZW5kaWYKIAogICAgIHBvb2wgPSBQT09MX0FERFIocCk7Ci0gICAgaWYgKFB5X0FERFJFU1NfSU5fUkFOR0UocCwgcG9vbCkpIHsKKyAgICBpZiAoYWRkcmVzc19pbl9yYW5nZShwLCBwb29sKSkgewogICAgICAgICAvKiBXZSdyZSBpbiBjaGFyZ2Ugb2YgdGhpcyBibG9jayAqLwogICAgICAgICBzaXplID0gSU5ERVgyU0laRShwb29sLT5zemlkeCk7CiAgICAgICAgIGlmIChuYnl0ZXMgPD0gc2l6ZSkgewpAQCAtMTcwOSw3ICsxNzUyLDcgQEAKIAogI2VuZGlmIC8qIFdJVEhfUFlNQUxMT0MgKi8KIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogLyogQSB4LXBsYXRmb3JtIGRlYnVnZ2luZyBhbGxvY2F0b3IuICBUaGlzIGRvZXNuJ3QgbWFuYWdlIG1lbW9yeSBkaXJlY3RseSwKICAqIGl0IHdyYXBzIGEgcmVhbCBhbGxvY2F0b3IsIGFkZGluZyBleHRyYSBkZWJ1Z2dpbmcgaW5mbyB0byB0aGUgbWVtb3J5IGJsb2Nrcy4KQEAgLTE3NDMsNyArMTc4Niw3IEBACiBzdGF0aWMgc2l6ZV90CiByZWFkX3NpemVfdChjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOwogICAgIHNpemVfdCByZXN1bHQgPSAqcSsrOwogICAgIGludCBpOwogCkBAIC0xNzU4LDQwICsxODAxLDE1IEBACiBzdGF0aWMgdm9pZAogd3JpdGVfc2l6ZV90KHZvaWQgKnAsIHNpemVfdCBuKQogewotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCArIFNTVCAtIDE7CisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCArIFNTVCAtIDE7CiAgICAgaW50IGk7CiAKICAgICBmb3IgKGkgPSBTU1Q7IC0taSA+PSAwOyAtLXEpIHsKLSAgICAgICAgKnEgPSAodWNoYXIpKG4gJiAweGZmKTsKKyAgICAgICAgKnEgPSAodWludDhfdCkobiAmIDB4ZmYpOwogICAgICAgICBuID4+PSA4OwogICAgIH0KIH0KIAotI2lmZGVmIFB5X0RFQlVHCi0vKiBJcyB0YXJnZXQgaW4gdGhlIGxpc3Q/ICBUaGUgbGlzdCBpcyB0cmF2ZXJzZWQgdmlhIHRoZSBuZXh0cG9vbCBwb2ludGVycy4KLSAqIFRoZSBsaXN0IG1heSBiZSBOVUxMLXRlcm1pbmF0ZWQsIG9yIGNpcmN1bGFyLiAgUmV0dXJuIDEgaWYgdGFyZ2V0IGlzIGluCi0gKiBsaXN0LCBlbHNlIDAuCi0gKi8KLXN0YXRpYyBpbnQKLXBvb2xfaXNfaW5fbGlzdChjb25zdCBwb29scCB0YXJnZXQsIHBvb2xwIGxpc3QpCi17Ci0gICAgcG9vbHAgb3JpZ2xpc3QgPSBsaXN0OwotICAgIGFzc2VydCh0YXJnZXQgIT0gTlVMTCk7Ci0gICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZG8gewotICAgICAgICBpZiAodGFyZ2V0ID09IGxpc3QpCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgbGlzdCA9IGxpc3QtPm5leHRwb29sOwotICAgIH0gd2hpbGUgKGxpc3QgIT0gTlVMTCAmJiBsaXN0ICE9IG9yaWdsaXN0KTsKLSAgICByZXR1cm4gMDsKLX0KLQotI2Vsc2UKLSNkZWZpbmUgcG9vbF9pc19pbl9saXN0KFgsIFkpIDEKLQotI2VuZGlmICAvKiBQeV9ERUJVRyAqLwotCiAvKiBMZXQgUyA9IHNpemVvZihzaXplX3QpLiAgVGhlIGRlYnVnIG1hbGxvYyBhc2tzIGZvciA0KlMgZXh0cmEgYnl0ZXMgYW5kCiAgICBmaWxscyB0aGVtIHdpdGggdXNlZnVsIHN0dWZmLCBoZXJlIGNhbGxpbmcgdGhlIHVuZGVybHlpbmcgbWFsbG9jJ3MgcmVzdWx0IHA6CiAKQEAgLTE4MTksMTEgKzE4MzcsMTEgQEAKICovCiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdBbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnA7ICAgICAgICAgICAvKiBiYXNlIGFkZHJlc3Mgb2YgbWFsbG9jJ2VkIGJsb2NrICovCi0gICAgdWNoYXIgKnRhaWw7ICAgICAgICAvKiBwICsgMipTU1QgKyBuYnl0ZXMgPT0gcG9pbnRlciB0byB0YWlsIHBhZCBieXRlcyAqLworICAgIHVpbnQ4X3QgKnA7ICAgICAgICAgICAvKiBiYXNlIGFkZHJlc3Mgb2YgbWFsbG9jJ2VkIGJsb2NrICovCisgICAgdWludDhfdCAqdGFpbDsgICAgICAgIC8qIHAgKyAyKlNTVCArIG5ieXRlcyA9PSBwb2ludGVyIHRvIHRhaWwgcGFkIGJ5dGVzICovCiAgICAgc2l6ZV90IHRvdGFsOyAgICAgICAvKiBuYnl0ZXMgKyA0KlNTVCAqLwogCiAgICAgYnVtcHNlcmlhbG5vKCk7CkBAIC0xODMzLDE1ICsxODUxLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZV9jYWxsb2MpCi0gICAgICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLmNhbGxvYyhhcGktPmFsbG9jLmN0eCwgMSwgdG90YWwpOworICAgICAgICBwID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLmNhbGxvYyhhcGktPmFsbG9jLmN0eCwgMSwgdG90YWwpOwogICAgIGVsc2UKLSAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MubWFsbG9jKGFwaS0+YWxsb2MuY3R4LCB0b3RhbCk7CisgICAgICAgIHAgPSAodWludDhfdCAqKWFwaS0+YWxsb2MubWFsbG9jKGFwaS0+YWxsb2MuY3R4LCB0b3RhbCk7CiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBhdCBwLCB3cml0ZSBzaXplIChTU1QgYnl0ZXMpLCBpZCAoMSBieXRlKSwgcGFkIChTU1QtMSBieXRlcykgKi8KICAgICB3cml0ZV9zaXplX3QocCwgbmJ5dGVzKTsKLSAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CisgICAgcFtTU1RdID0gKHVpbnQ4X3QpYXBpLT5hcGlfaWQ7CiAgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKICAgICBpZiAobmJ5dGVzID4gMCAmJiAhdXNlX2NhbGxvYykKQEAgLTE4NTYsMTggKzE4NzQsMTggQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMCwgY3R4LCBuYnl0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCitfUHlNZW1fRGVidWdSYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgc2l6ZV90IG5ieXRlczsKICAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOwogICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOwotICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKIH0KIAogLyogVGhlIGRlYnVnIGZyZWUgZmlyc3QgY2hlY2tzIHRoZSAyKlNTVCBieXRlcyBvbiBlYWNoIGVuZCBmb3Igc2FuaXR5IChpbgpAQCAtMTg3NiwxMCArMTg5NCwxMCBAQAogICAgVGhlbiBjYWxscyB0aGUgdW5kZXJseWluZyBmcmVlLgogKi8KIHN0YXRpYyB2b2lkCi1fUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKK19QeU1lbV9EZWJ1Z1Jhd0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwIC0gMipTU1Q7ICAvKiBhZGRyZXNzIHJldHVybmVkIGZyb20gbWFsbG9jICovCisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCAtIDIqU1NUOyAgLyogYWRkcmVzcyByZXR1cm5lZCBmcm9tIG1hbGxvYyAqLwogICAgIHNpemVfdCBuYnl0ZXM7CiAKICAgICBpZiAocCA9PSBOVUxMKQpAQCAtMTg5MywxNyArMTkxMSwxNyBAQAogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwLCAqb2xkcTsKLSAgICB1Y2hhciAqdGFpbDsKKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwLCAqb2xkcTsKKyAgICB1aW50OF90ICp0YWlsOwogICAgIHNpemVfdCB0b3RhbDsgICAgICAgLyogbmJ5dGVzICsgNCpTU1QgKi8KICAgICBzaXplX3Qgb3JpZ2luYWxfbmJ5dGVzOwogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIAogICAgIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhhcGktPmFwaV9pZCwgcCk7CiAgICAgYnVtcHNlcmlhbG5vKCk7CkBAIC0xOTE4LDcgKzE5MzYsNyBAQAogICAgICAqIGJ1dCB3ZSBsaXZlIHdpdGggdGhhdC4KICAgICAgKi8KICAgICBvbGRxID0gcTsKLSAgICBxID0gKHVjaGFyICopYXBpLT5hbGxvYy5yZWFsbG9jKGFwaS0+YWxsb2MuY3R4LCBxIC0gMipTU1QsIHRvdGFsKTsKKyAgICBxID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLnJlYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHEgLSAyKlNTVCwgdG90YWwpOwogICAgIGlmIChxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xOTI4LDcgKzE5NDYsNyBAQAogICAgIH0KIAogICAgIHdyaXRlX3NpemVfdChxLCBuYnl0ZXMpOwotICAgIGFzc2VydChxW1NTVF0gPT0gKHVjaGFyKWFwaS0+YXBpX2lkKTsKKyAgICBhc3NlcnQocVtTU1RdID09ICh1aW50OF90KWFwaS0+YXBpX2lkKTsKICAgICBmb3IgKGkgPSAxOyBpIDwgU1NUOyArK2kpCiAgICAgICAgIGFzc2VydChxW1NTVCArIGldID09IEZPUkJJRERFTkJZVEUpOwogICAgIHEgKz0gMipTU1Q7CkBAIC0xOTQ2LDYgKzE5NjQsNDQgQEAKICAgICByZXR1cm4gcTsKIH0KIAorc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0NoZWNrR0lMKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoIVB5R0lMU3RhdGVfQ2hlY2soKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBob2xkaW5nIHRoZSBHSUwiKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYyhjdHgsIG5ieXRlcyk7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdDYWxsb2MoY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICBfUHlNZW1fRGVidWdSYXdGcmVlKGN0eCwgcHRyKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdSZWFsbG9jKGN0eCwgcHRyLCBuYnl0ZXMpOworfQorCiAvKiBDaGVjayB0aGUgZm9yYmlkZGVuIGJ5dGVzIG9uIGJvdGggZW5kcyBvZiB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgcC4KICAqIElmIGFueXRoaW5nIGlzIHdyb25nLCBwcmludCBpbmZvIHRvIHN0ZGVyciB2aWEgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MsCiAgKiBhbmQgY2FsbCBQeV9GYXRhbEVycm9yIHRvIGtpbGwgdGhlIHByb2dyYW0uCkBAIC0xOTU0LDExICsyMDEwLDExIEBACiBzdGF0aWMgdm9pZAogX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGNoYXIgYXBpLCBjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOwogICAgIGNoYXIgbXNnYnVmWzY0XTsKICAgICBjaGFyICptc2c7CiAgICAgc2l6ZV90IG5ieXRlczsKLSAgICBjb25zdCB1Y2hhciAqdGFpbDsKKyAgICBjb25zdCB1aW50OF90ICp0YWlsOwogICAgIGludCBpOwogICAgIGNoYXIgaWQ7CiAKQEAgLTIwMDcsOCArMjA2Myw4IEBACiBzdGF0aWMgdm9pZAogX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7Ci0gICAgY29uc3QgdWNoYXIgKnRhaWw7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKKyAgICBjb25zdCB1aW50OF90ICp0YWlsOwogICAgIHNpemVfdCBuYnl0ZXMsIHNlcmlhbDsKICAgICBpbnQgaTsKICAgICBpbnQgb2s7CkBAIC0yMDQxLDcgKzIwOTcsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5vdCBhbGwgRk9SQklEREVOQllURSAoMHglMDJ4KTpcbiIsCiAgICAgICAgICAgICBGT1JCSURERU5CWVRFKTsKICAgICAgICAgZm9yIChpID0gU1NULTE7IGkgPj0gMTsgLS1pKSB7Ci0gICAgICAgICAgICBjb25zdCB1Y2hhciBieXRlID0gKihxLWkpOworICAgICAgICAgICAgY29uc3QgdWludDhfdCBieXRlID0gKihxLWkpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgIGF0IHAtJWQ6IDB4JTAyeCIsIGksIGJ5dGUpOwogICAgICAgICAgICAgaWYgKGJ5dGUgIT0gRk9SQklEREVOQllURSkKICAgICAgICAgICAgICAgICBmcHV0cygiICoqKiBPVUNIIiwgc3RkZXJyKTsKQEAgLTIwNjksNyArMjEyNSw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibm90IGFsbCBGT1JCSURERU5CWVRFICgweCUwMngpOlxuIiwKICAgICAgICAgICAgICAgICBGT1JCSURERU5CWVRFKTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFNTVDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCB1Y2hhciBieXRlID0gdGFpbFtpXTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9IHRhaWxbaV07CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgYXQgdGFpbCslZDogMHglMDJ4IiwKICAgICAgICAgICAgICAgICAgICAgaSwgYnl0ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZSAhPSBGT1JCSURERU5CWVRFKQpAQCAtMjEwNCw5ICsyMTYwLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICB9CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGZpbGVubyhzdGRlcnIpLCBwKTsKIH0KIAotI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLwogCiBzdGF0aWMgc2l6ZV90CiBwcmludG9uZShGSUxFICpvdXQsIGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQpAQCAtMjE1OCw4ICsyMjE3LDMwIEBACiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYyLCBudW1fYmxvY2tzICogc2l6ZW9mX2Jsb2NrKTsKIH0KIAorCiAjaWZkZWYgV0lUSF9QWU1BTExPQwogCisjaWZkZWYgUHlfREVCVUcKKy8qIElzIHRhcmdldCBpbiB0aGUgbGlzdD8gIFRoZSBsaXN0IGlzIHRyYXZlcnNlZCB2aWEgdGhlIG5leHRwb29sIHBvaW50ZXJzLgorICogVGhlIGxpc3QgbWF5IGJlIE5VTEwtdGVybWluYXRlZCwgb3IgY2lyY3VsYXIuICBSZXR1cm4gMSBpZiB0YXJnZXQgaXMgaW4KKyAqIGxpc3QsIGVsc2UgMC4KKyAqLworc3RhdGljIGludAorcG9vbF9pc19pbl9saXN0KGNvbnN0IHBvb2xwIHRhcmdldCwgcG9vbHAgbGlzdCkKK3sKKyAgICBwb29scCBvcmlnbGlzdCA9IGxpc3Q7CisgICAgYXNzZXJ0KHRhcmdldCAhPSBOVUxMKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICBkbyB7CisgICAgICAgIGlmICh0YXJnZXQgPT0gbGlzdCkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBsaXN0ID0gbGlzdC0+bmV4dHBvb2w7CisgICAgfSB3aGlsZSAobGlzdCAhPSBOVUxMICYmIGxpc3QgIT0gb3JpZ2xpc3QpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIC8qIFByaW50IHN1bW1hcnkgaW5mbyB0byAib3V0IiBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgogICogSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5CiAgKiBjaGVja3MuCkBAIC0yMjA2LDM0ICsyMjg3LDM1IEBACiAgICAgICovCiAgICAgZm9yIChpID0gMDsgaSA8IG1heGFyZW5hczsgKytpKSB7CiAgICAgICAgIHVpbnQgajsKLSAgICAgICAgdXB0ciBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CisgICAgICAgIHVpbnRwdHJfdCBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CiAKICAgICAgICAgLyogU2tpcCBhcmVuYXMgd2hpY2ggYXJlIG5vdCBhbGxvY2F0ZWQuICovCi0gICAgICAgIGlmIChhcmVuYXNbaV0uYWRkcmVzcyA9PSAodXB0cilOVUxMKQorICAgICAgICBpZiAoYXJlbmFzW2ldLmFkZHJlc3MgPT0gKHVpbnRwdHJfdClOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG5hcmVuYXMgKz0gMTsKIAogICAgICAgICBudW1mcmVlcG9vbHMgKz0gYXJlbmFzW2ldLm5mcmVlcG9vbHM7CiAKICAgICAgICAgLyogcm91bmQgdXAgdG8gcG9vbCBhbGlnbm1lbnQgKi8KLSAgICAgICAgaWYgKGJhc2UgJiAodXB0cilQT09MX1NJWkVfTUFTSykgeworICAgICAgICBpZiAoYmFzZSAmICh1aW50cHRyX3QpUE9PTF9TSVpFX01BU0spIHsKICAgICAgICAgICAgIGFyZW5hX2FsaWdubWVudCArPSBQT09MX1NJWkU7Ci0gICAgICAgICAgICBiYXNlICY9IH4odXB0cilQT09MX1NJWkVfTUFTSzsKKyAgICAgICAgICAgIGJhc2UgJj0gfih1aW50cHRyX3QpUE9PTF9TSVpFX01BU0s7CiAgICAgICAgICAgICBiYXNlICs9IFBPT0xfU0laRTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIHZpc2l0IGV2ZXJ5IHBvb2wgaW4gdGhlIGFyZW5hICovCi0gICAgICAgIGFzc2VydChiYXNlIDw9ICh1cHRyKSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzKTsKLSAgICAgICAgZm9yIChqID0gMDsKLSAgICAgICAgICAgICAgICAgICAgYmFzZSA8ICh1cHRyKSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzOwotICAgICAgICAgICAgICAgICAgICArK2osIGJhc2UgKz0gUE9PTF9TSVpFKSB7CisgICAgICAgIGFzc2VydChiYXNlIDw9ICh1aW50cHRyX3QpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3MpOworICAgICAgICBmb3IgKGogPSAwOyBiYXNlIDwgKHVpbnRwdHJfdCkgYXJlbmFzW2ldLnBvb2xfYWRkcmVzczsKKyAgICAgICAgICAgICArK2osIGJhc2UgKz0gUE9PTF9TSVpFKSB7CiAgICAgICAgICAgICBwb29scCBwID0gKHBvb2xwKWJhc2U7CiAgICAgICAgICAgICBjb25zdCB1aW50IHN6ID0gcC0+c3ppZHg7CiAgICAgICAgICAgICB1aW50IGZyZWVibG9ja3M7CiAKICAgICAgICAgICAgIGlmIChwLT5yZWYuY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIGN1cnJlbnRseSB1bnVzZWQgKi8KKyNpZmRlZiBQeV9ERUJVRwogICAgICAgICAgICAgICAgIGFzc2VydChwb29sX2lzX2luX2xpc3QocCwgYXJlbmFzW2ldLmZyZWVwb29scykpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICArK251bXBvb2xzW3N6XTsKQEAgLTIyNzMsOSArMjM1NSw4IEBACiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KICAgICBmcHV0YygnXG4nLCBvdXQpOwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKLSNlbmRpZgorICAgIGlmIChfUHlNZW1fRGVidWdFbmFibGVkKCkpCisgICAgICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwpAQCAtMjMwMiwxOCArMjM4MywzIEBACiB9CiAKICNlbmRpZiAvKiAjaWZkZWYgV0lUSF9QWU1BTExPQyAqLwotCi0jaWZkZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0vKiBNYWtlIHRoaXMgZnVuY3Rpb24gbGFzdCBzbyBnY2Mgd29uJ3QgaW5saW5lIGl0IHNpbmNlIHRoZSBkZWZpbml0aW9uIGlzCi0gKiBhZnRlciB0aGUgcmVmZXJlbmNlLgotICovCi1pbnQKLVB5X0FERFJFU1NfSU5fUkFOR0Uodm9pZCAqUCwgcG9vbHAgcG9vbCkKLXsKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcCA9IHBvb2wtPmFyZW5haW5kZXg7Ci0KLSAgICByZXR1cm4gYXJlbmFpbmRleF90ZW1wIDwgbWF4YXJlbmFzICYmCi0gICAgICAgICAgICh1cHRyKVAgLSBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzIDwgKHVwdHIpQVJFTkFfU0laRSAmJgotICAgICAgICAgICBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzICE9IDA7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvb2RpY3RvYmplY3QuYyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwppbmRleCBhNjk2M2Q3Li4yMmIxZjFkIDEwMDY0NAotLS0gYS9PYmplY3RzL29kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCkBAIC0zOSw3ICszOSw3IEBACiAgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KIAogVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAotbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCittaXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50cmllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCiBXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCiBhcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKIHdvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKQEAgLTUzNiwxNCArNTM2LDE3IEBACiBfb2RpY3RfZ2V0X2luZGV4X3JhdyhQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworICAgIFB5X3NzaXplX3QgaXg7CiAKLSAgICBlcCA9IChrZXlzLT5ka19sb29rdXApKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBrZXlzLT5ka19uZW50cmllczsgIC8qIGluZGV4IG9mIG5ldyBlbnRyeSAqLworICAgIH0KKyAgICBpZiAoaXggPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCi0gICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKKyAgICByZXR1cm4gaXg7CiB9CiAKIC8qIFJlcGxhY2Ugb2QtPm9kX2Zhc3Rfbm9kZXMgd2l0aCBhIG5ldyB0YWJsZSBtYXRjaGluZyB0aGUgc2l6ZSBvZiBkaWN0J3MuICovCkBAIC01NjUsNyArNTY4LDcgQEAKICAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLwogICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CiAgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X3JhdyhvZCwgX29kaWN0bm9kZV9LRVkobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CiAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0MjQsMTQgKzE0MjcsMTMgQEAKICAqIE9yZGVyZWREaWN0IG1lbWJlcnMKICAqLwogCi0vKiB0cF9tZW1iZXJzICovCisvKiB0cF9nZXRzZXQgKi8KIAotc3RhdGljIFB5TWVtYmVyRGVmIG9kaWN0X21lbWJlcnNbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksIFJFQURPTkxZfSwKLSAgICB7MH0KK3N0YXRpYyBQeUdldFNldERlZiBvZGljdF9nZXRzZXRbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KIH07CiAKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogT3JkZXJlZERpY3QgdHlwZSBzbG90IG1ldGhvZHMKICAqLwpAQCAtMTQ2Myw3ICsxNDY1LDcgQEAKICAgICArK3RzdGF0ZS0+dHJhc2hfZGVsZXRlX25lc3Rpbmc7CiAKICAgICBQeV9UUkFTSENBTl9TQUZFX0VORChzZWxmKQotfTsKK30KIAogLyogdHBfcmVwciAqLwogCkBAIC0xNTQwLDcgKzE1NDIsNyBAQAogICAgIFB5X1hERUNSRUYocGllY2VzKTsKICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgcmV0dXJuIHJlc3VsdDsKLX07Cit9CiAKIC8qIHRwX2RvYyAqLwogCkBAIC0xNjEyLDcgKzE2MTQsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9Ci19OworfQogCiAvKiB0cF9pdGVyICovCiAKQEAgLTE2MjAsNyArMTYyMiw3IEBACiBvZGljdF9pdGVyKFB5T0RpY3RPYmplY3QgKm9kKQogewogICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KG9kLCBfb2RpY3RfSVRFUl9LRVlTKTsKLX07Cit9CiAKIC8qIHRwX2luaXQgKi8KIApAQCAtMTY0NiwyNyArMTY0OCwxOSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotfTsKK30KIAogLyogdHBfbmV3ICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvZGljdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPRGljdE9iamVjdCAqb2Q7CiAKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgb2QgPSAoUHlPRGljdE9iamVjdCAqKVB5RGljdF9UeXBlLnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgaWYgKG9kID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIG9kLT5vZF9pbnN0X2RpY3QgPSBkaWN0OwogICAgIC8qIHR5cGUgY29uc3RydWN0b3IgZmlsbHMgdGhlIG1lbW9yeSB3aXRoIHplcm9zIChzZWUKICAgICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jKCkpLCB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB0aGVtIHRvIHplcm8gYWdhaW4gKi8KICAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKSB7CkBAIC0xNzA4LDggKzE3MDIsOCBAQAogICAgIChnZXRpdGVyZnVuYylvZGljdF9pdGVyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBvZGljdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBvZGljdF9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG9kaWN0X2dldHNldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KQEAgLTE3MjksNyArMTcyMyw3IEBACiBQeU9iamVjdCAqCiBQeU9EaWN0X05ldyh2b2lkKSB7CiAgICAgcmV0dXJuIG9kaWN0X25ldygmUHlPRGljdF9UeXBlLCBOVUxMLCBOVUxMKTsKLX07Cit9CiAKIHN0YXRpYyBpbnQKIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLApAQCAtMTc0Nyw3ICsxNzQxLDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzOwotfTsKK30KIAogaW50CiBQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCkBAIC0xNzU2LDcgKzE3NTAsNyBAQAogICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIHZhbHVlLCBoYXNoKTsKLX07Cit9CiAKIGludAogUHlPRGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKQEAgLTE3NjksNyArMTc2Myw3IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChvZCwga2V5LCBoYXNoKTsKLX07Cit9CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM2Miw4ICsyMzU2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsgIC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwogICAgICAgICBhc3NlcnQob3RoZXIgIT0gTlVMTCk7CiAgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikgfHwKLSAgICAgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQob3RoZXIsICZQeUlkX2l0ZW1zKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgaWYgUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpCiAgICAgICAgICAgICAgICAgaXRlbXMgPSBQeURpY3RfSXRlbXMob3RoZXIpOwpAQCAtMjQwNiw2ICsyMzk5LDIwIEBACiAgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3RoZXIsICZQeUlkX2l0ZW1zLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IDg5OTY5N2EuLjg0NDlmYzcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTYsNyArNiw3IEBACiAvKiBTdXBwb3J0IG9iamVjdHMgd2hvc2UgbGVuZ3RoIGlzID4gUFlfU1NJWkVfVF9NQVguCiAKICAgIFRoaXMgY291bGQgYmUgc3BlZCB1cCBmb3Igc21hbGwgUHlMb25ncyBpZiB0aGV5IGZpdCBpbiBhIFB5X3NzaXplX3QuCi0gICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgUFlfTE9OR19MT05HIHdoaWNoCisgICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgbG9uZyBsb25nIHdoaWNoCiAgICB3b3VsZCBwcmVzdW1hYmx5IGhlbHAgcGVyZi4KICovCiAKQEAgLTI5LDE3ICsyOSwxMCBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDEpOwogCiAgICAgc3RlcCA9IFB5TnVtYmVyX0luZGV4KHN0ZXApOwotICAgIGlmIChzdGVwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaXN0ZXAgPSBQeU51bWJlcl9Bc1NzaXplX3Qoc3RlcCwgTlVMTCk7Ci0gICAgICAgIGlmIChpc3RlcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAvKiBJZ25vcmUgT3ZlcmZsb3dFcnJvciwgd2Uga25vdyB0aGUgdmFsdWUgaXNuJ3QgMC4gKi8KLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXN0ZXAgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybyIpOwotICAgICAgICAgICAgUHlfQ0xFQVIoc3RlcCk7Ci0gICAgICAgIH0KKyAgICBpZiAoc3RlcCAmJiBfUHlMb25nX1NpZ24oc3RlcCkgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSgpIGFyZyAzIG11c3Qgbm90IGJlIHplcm8iKTsKKyAgICAgICAgUHlfQ0xFQVIoc3RlcCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0ZXA7CkBAIC0xMjksOSArMTIyLDkgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvYmo7CiAKICAgICAvKiBGYWlsZWQgdG8gY3JlYXRlIG9iamVjdCwgcmVsZWFzZSBhdHRyaWJ1dGVzICovCi0gICAgUHlfWERFQ1JFRihzdGFydCk7Ci0gICAgUHlfWERFQ1JFRihzdG9wKTsKLSAgICBQeV9YREVDUkVGKHN0ZXApOworICAgIFB5X0RFQ1JFRihzdGFydCk7CisgICAgUHlfREVDUkVGKHN0b3ApOworICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTk2LDcgKzE4OSw3IEBACiAgICAgLyogaWYgKGxvID49IGhpKSwgcmV0dXJuIGxlbmd0aCBvZiAwLiAqLwogICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wobG8sIGhpLCBQeV9HRSk7CiAgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0ZXApOworICAgICAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgICAgIGlmIChjbXBfcmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtMjI1LDkgKzIxOCw5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBGYWlsOgorICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDIpOwogICAgIFB5X1hERUNSRUYoZGlmZik7Ci0gICAgUHlfWERFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDEpOwogICAgIFB5X1hERUNSRUYob25lKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTkzNyw2ICs5MzAsMTMgQEAKIHsKICAgICBsb25nIHN0YXJ0LCBzdG9wLCBzdGVwOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAicmFuZ2VfaXRlcmF0b3IoKTogY3JlYXRpbmcgaW5zdGFuY2VzIG9mIHJhbmdlX2l0ZXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJieSBjYWxsaW5nIHJhbmdlX2l0ZXJhdG9yIHR5cGUgaXMgZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJyYW5nZV9pdGVyYXRvcigpIiwga3cpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IDRlZjY5MmQuLmZkYjlkMzYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKIC8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcyAqLwogc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7CkBAIC00OCwxOSArNDcsMjAgQEAKIHN0YXRpYyBzZXRlbnRyeSAqCiBzZXRfbG9va2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKLSAgICBzZXRlbnRyeSAqZnJlZXNsb3QgPSBOVUxMOworICAgIHNldGVudHJ5ICp0YWJsZTsKICAgICBzZXRlbnRyeSAqZW50cnk7Ci0gICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOworICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CiAgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOyAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvciAqLwogICAgIHNpemVfdCBqOwogICAgIGludCBjbXA7CiAKLSAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGVudHJ5OwogCisgICAgcGVydHVyYiA9IGhhc2g7CisKICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKQEAgLTcwLDggKzcwLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCiAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKQEAgLTgzLDE0ICs4NCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLwogICAgICAgICB9Ci0gICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKIAogICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgewogICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CiAgICAgICAgICAgICAgICAgZW50cnkrKzsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IDAgJiYgZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKQEAgLTk4LDggKzk3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwpAQCAtMTExLDcgKzExMSwxMDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOworCisgICAgICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgc2V0X3RhYmxlX3Jlc2l6ZShQeVNldE9iamVjdCAqLCBQeV9zc2l6ZV90KTsKKworc3RhdGljIGludAorc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIHNldGVudHJ5ICp0YWJsZTsKKyAgICBzZXRlbnRyeSAqZnJlZXNsb3Q7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBtYXNrOworICAgIHNpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KKyAgICBzaXplX3QgajsKKyAgICBpbnQgY21wOworCisgICAgLyogUHJlLWluY3JlbWVudCBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBhcmJpdHJhcnkgY29kZSBpbiB0aGUgcmljaAorICAgICAgIGNvbXBhcmlzb24gZnJvbSBkZWFsbG9jYXRpbmcgdGhlIGtleSBqdXN0IGJlZm9yZSB0aGUgaW5zZXJ0aW9uLiAqLworICAgIFB5X0lOQ1JFRihrZXkpOworCisgIHJlc3RhcnQ6CisKKyAgICBtYXNrID0gc28tPm1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisKKyAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgcGVydHVyYiA9IGhhc2g7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKKyAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CisgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaWtlbHkgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgIC8qIENvbnRpbnVpbmcgdGhlIHNlYXJjaCBmcm9tIHRoZSBjdXJyZW50IGVudHJ5IG9ubHkgbWFrZXMKKyAgICAgICAgICAgICAgIHNlbnNlIGlmIHRoZSB0YWJsZSBhbmQgZW50cnkgYXJlIHVuY2hhbmdlZDsgb3RoZXJ3aXNlLAorICAgICAgICAgICAgICAgd2UgaGF2ZSB0byByZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyAqLworICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OworCisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwIDsgaiA8IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKKyAgICAgICAgICAgICAgICBlbnRyeSsrOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAwICYmIGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF91bnVzZWRfb3JfZHVtbXk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSwyOSArMjE2LDUxIEBACiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CiAgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogCi0gICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOworICAgICAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICBnb3RvIGZvdW5kX3VudXNlZF9vcl9kdW1teTsKICAgICB9Ci0gIGZvdW5kX251bGw6Ci0gICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlbnRyeSA6IGZyZWVzbG90OworCisgIGZvdW5kX3VudXNlZF9vcl9kdW1teToKKyAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisgICAgc28tPnVzZWQrKzsKKyAgICBmcmVlc2xvdC0+a2V5ID0ga2V5OworICAgIGZyZWVzbG90LT5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gMDsKKworICBmb3VuZF91bnVzZWQ6CisgICAgc28tPmZpbGwrKzsKKyAgICBzby0+dXNlZCsrOworICAgIGVudHJ5LT5rZXkgPSBrZXk7CisgICAgZW50cnktPmhhc2ggPSBoYXNoOworICAgIGlmICgoc2l6ZV90KXNvLT5maWxsKjMgPCBtYXNrKjIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CisKKyAgZm91bmRfYWN0aXZlOgorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiAwOworCisgIGNvbXBhcmlzb25fZXJyb3I6CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIC0xOwogfQogCiAvKgogSW50ZXJuYWwgcm91dGluZSB1c2VkIGJ5IHNldF90YWJsZV9yZXNpemUoKSB0byBpbnNlcnQgYW4gaXRlbSB3aGljaCBpcwoga25vd24gdG8gYmUgYWJzZW50IGZyb20gdGhlIHNldC4gIFRoaXMgcm91dGluZSBhbHNvIGFzc3VtZXMgdGhhdAogdGhlIHNldCBjb250YWlucyBubyBkZWxldGVkIGVudHJpZXMuICBCZXNpZGVzIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0LAotdXNpbmcgc2V0X2luc2VydF9jbGVhbigpIGluIHNldF90YWJsZV9yZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCi1Ob3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCi1pcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YC4KK3RoZXJlIGlzIGFsc28gc2FmZXR5IGJlbmVmaXQgc2luY2UgdXNpbmcgc2V0X2FkZF9lbnRyeSgpIHJpc2tzIG1ha2luZworYSBjYWxsYmFjayBpbiB0aGUgbWlkZGxlIG9mIGEgc2V0X3RhYmxlX3Jlc2l6ZSgpLCBzZWUgaXNzdWUgMTQ1NjIwOS4KK1RoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBrZXkncyByZWZlcmVuY2UgY291bnQgYW5kCit0aGUgc2V0b2JqZWN0J3MgZmlsbCBhbmQgdXNlZCBmaWVsZHMuCiAqLwogc3RhdGljIHZvaWQKLXNldF9pbnNlcnRfY2xlYW4oUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKK3NldF9pbnNlcnRfY2xlYW4oc2V0ZW50cnkgKnRhYmxlLCBzaXplX3QgbWFzaywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBzaXplX3QgcGVydHVyYiA9IGhhc2g7Ci0gICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBzaXplX3QgajsKIApAQCAtMTYyLDQ1ICsyODEsMTEgQEAKICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwogICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICBzby0+ZmlsbCsrOwotICAgIHNvLT51c2VkKys7CiB9CiAKIC8qID09PT09PT09IEVuZCBsb2dpYyBmb3IgcHJvYmluZyB0aGUgaGFzaCB0YWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLQotLyoKLUludGVybmFsIHJvdXRpbmUgdG8gaW5zZXJ0IGEgbmV3IGtleSBpbnRvIHRoZSB0YWJsZS4KLVVzZWQgYnkgdGhlIHB1YmxpYyBpbnNlcnQgcm91dGluZS4KLUVhdHMgYSByZWZlcmVuY2UgdG8ga2V5LgotKi8KLXN0YXRpYyBpbnQKLXNldF9pbnNlcnRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotCi0gICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKLSAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7Ci0gICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICAgICAgc28tPmZpbGwrKzsKLSAgICAgICAgc28tPnVzZWQrKzsKLSAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKLSAgICAgICAgLyogRFVNTVkgKi8KLSAgICAgICAgZW50cnktPmtleSA9IGtleTsKLSAgICAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgICAgICBzby0+dXNlZCsrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIEFDVElWRSAqLwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIC8qCiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgYnkgYWxsb2NhdGluZyBhIG5ldyB0YWJsZSBhbmQgcmVpbnNlcnRpbmcgYWxsCiBrZXlzIGFnYWluLiAgV2hlbiBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLCB0aGUgbmV3IHRhYmxlIG1heQpAQCAtMjEzLDEwICsyOTgsMTMgQEAKICAgICBzZXRlbnRyeSAqb2xkdGFibGUsICpuZXd0YWJsZSwgKmVudHJ5OwogICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOwogICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOworICAgIFB5X3NzaXplX3Qgb2xkbWFzayA9IHNvLT5tYXNrOworICAgIHNpemVfdCBuZXdtYXNrOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CisgICAgbWludXNlZCA9IChtaW51c2VkID4gNTAwMDApID8gbWludXNlZCAqIDIgOiBtaW51c2VkICogNDsKIAogICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwogICAgIC8qIFhYWCBzcGVlZC11cCB3aXRoIGludHJpbnNpY3MgKi8KQEAgLTI2NCwyNSArMzUyLDI0IEBACiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7CiAgICAgbWVtc2V0KG5ld3RhYmxlLCAwLCBzaXplb2Yoc2V0ZW50cnkpICogbmV3c2l6ZSk7Ci0gICAgc28tPmZpbGwgPSAwOwotICAgIHNvLT51c2VkID0gMDsKKyAgICBzby0+ZmlsbCA9IG9sZHVzZWQ7CisgICAgc28tPnVzZWQgPSBvbGR1c2VkOwogICAgIHNvLT5tYXNrID0gbmV3c2l6ZSAtIDE7CiAgICAgc28tPnRhYmxlID0gbmV3dGFibGU7CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIG92ZXI7IHRoaXMgaXMgcmVmY291bnQtbmV1dHJhbCBmb3IgYWN0aXZlIGVudHJpZXM7CiAgICAgICAgZHVtbXkgZW50cmllcyBhcmVuJ3QgY29waWVkIG92ZXIsIG9mIGNvdXJzZSAqLworICAgIG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIGlmIChvbGRmaWxsID09IG9sZHVzZWQpIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG9sZHVzZWQtLTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgb2xkdXNlZC0tOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTIsNTcgKzM3OSwzMCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBDQVVUSU9OOiBzZXRfYWRkX2tleS9lbnRyeSgpIG11c3QgZ3VhcmFudGVlIGl0IHdvbid0IHJlc2l6ZSB0aGUgdGFibGUgKi8KLQogc3RhdGljIGludAotc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIFB5X3NzaXplX3Qgbl91c2VkOwotICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+a2V5OwotICAgIFB5X2hhc2hfdCBoYXNoID0gZW50cnktPmhhc2g7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCi0gICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCi0gICAgbl91c2VkID0gc28tPnVzZWQ7Ci0gICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghKHNvLT51c2VkID4gbl91c2VkICYmIHNvLT5maWxsKjMgPj0gKHNvLT5tYXNrKzEpKjIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQ+NTAwMDAgPyBzby0+dXNlZCoyIDogc28tPnVzZWQqNCk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKLXsKLSAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfYWRkX2VudHJ5KHNvLCAmZW50cnkpOworICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CisgICAgaWYgKGVudHJ5ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBlbnRyeS0+a2V5ICE9IE5VTEw7CisgICAgcmV0dXJuIC0xOwogfQogCiAjZGVmaW5lIERJU0NBUkRfTk9URk9VTkQgMAogI2RlZmluZSBESVNDQVJEX0ZPVU5EIDEKIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqb2xkZW50cnkpCitzZXRfZGlzY2FyZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeU9iamVjdCAqb2xkX2tleTsKIAotICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwogICAgIGlmIChlbnRyeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCAgfHwgIGVudHJ5LT5rZXkgPT0gZHVtbXkpCisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OwpAQCAtMzUzLDIyICs0MTMsNDUgQEAKIH0KIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3NldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBzZXRlbnRyeSBlbnRyeTsKICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKTsKK30KKworc3RhdGljIGludAorc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7Cit9CisKK3N0YXRpYyBpbnQKK3NldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ0OSwyMCArNTMyLDIyIEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgbWFzazsKLSAgICBzZXRlbnRyeSAqdGFibGU7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogICAgIGkgPSAqcG9zX3B0cjsKICAgICBhc3NlcnQoaSA+PSAwKTsKLSAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICBtYXNrID0gc28tPm1hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAodGFibGVbaV0ua2V5ID09IE5VTEwgfHwgdGFibGVbaV0ua2V5ID09IGR1bW15KSkKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAoZW50cnktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgPT0gZHVtbXkpKSB7CiAgICAgICAgIGkrKzsKKyAgICAgICAgZW50cnkrKzsKKyAgICB9CiAgICAgKnBvc19wdHIgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICByZXR1cm4gMDsKLSAgICBhc3NlcnQodGFibGVbaV0ua2V5ICE9IE5VTEwpOwotICAgICplbnRyeV9wdHIgPSAmdGFibGVbaV07CisgICAgYXNzZXJ0KGVudHJ5ICE9IE5VTEwpOworICAgICplbnRyeV9wdHIgPSBlbnRyeTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNTYwLDggKzY0NSw4IEBACiAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGtleXMuICBFeHBlY3QKICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgKi8KLSAgICBpZiAoKHNvLT5maWxsICsgb3RoZXItPnVzZWQpKjMgPj0gKHNvLT5tYXNrKzEpKjIpIHsKLSAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgKHNvLT51c2VkICsgb3RoZXItPnVzZWQpKjIpICE9IDApCisgICAgaWYgKChzby0+ZmlsbCArIG90aGVyLT51c2VkKSozID49IHNvLT5tYXNrKjIpIHsKKyAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQgKyBvdGhlci0+dXNlZCkgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKQEAgLTU4NiwxMSArNjcxLDE1IEBACiAKICAgICAvKiBJZiBvdXIgdGFibGUgaXMgZW1wdHksIHdlIGNhbiB1c2Ugc2V0X2luc2VydF9jbGVhbigpICovCiAgICAgaWYgKHNvLT5maWxsID09IDApIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgIHNldGVudHJ5ICpuZXd0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgc2l6ZV90IG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOworICAgICAgICBzby0+ZmlsbCA9IG90aGVyLT51c2VkOworICAgICAgICBzby0+dXNlZCA9IG90aGVyLT51c2VkOworICAgICAgICBmb3IgKGkgPSBvdGhlci0+bWFzayArIDE7IGkgPiAwIDsgaS0tLCBvdGhlcl9lbnRyeSsrKSB7CiAgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjAxLDQ2ICs2OTAsMTMgQEAKICAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOwogICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKLSAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7Ci0gICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKLX0KLQotc3RhdGljIGludAotc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3BvcChQeVNldE9iamVjdCAqc28pCiB7CkBAIC02ODIsNDMgKzczOCw2NCBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaCB2YWx1ZXMuCisgICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueSBjb21iaW5hdGlvbnMgb2YgYQorICAgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggbmVhcmJ5IGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QKKyAgIGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5IGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KKworc3RhdGljIFB5X3VoYXNoX3QKK19zaHVmZmxlX2JpdHMoUHlfdWhhc2hfdCBoKQoreworICAgIHJldHVybiAoKGggXiA4OTg2OTc0N1VMKSBeIChoIDw8IDE2KSkgKiAzNjQ0Nzk4MTY3VUw7Cit9CisKKy8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9zZW4KKyAgIGxhcmdlIHByaW1lcyB3aXRoICJpbnRlcmVzdGluZyBiaXQgcGF0dGVybnMiIGFuZCB0aGF0IHBhc3NlZCB0ZXN0cworICAgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljIGRhdGFzZXRzCisgICBpbmNsdWRpbmcgcG93ZXJzZXRzIGFuZCBncmFwaCBzdHJ1Y3R1cmVzIChzdWNoIGFzIERhdmlkIEVwcHN0ZWluJ3MKKyAgIGdyYXBoIHJlY2lwZXMgaW4gTGliL3Rlc3QvdGVzdF9zZXQucHkpICovCisKIHN0YXRpYyBQeV9oYXNoX3QKIGZyb3plbnNldF9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIC8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9vc2VuCi0gICAgICAgbGFyZ2UgcHJpbWVzIHdpdGggImludGVyZXN0aW5nIGJpdCBwYXR0ZXJucyIgYW5kIHRoYXQgcGFzc2VkCi0gICAgICAgdGVzdHMgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljCi0gICAgICAgZGF0YXNldHMgc3VjaCBhczoKLQotICAgICAgICAgIHBzID0gW10KLSAgICAgICAgICBmb3IgciBpbiByYW5nZSgyMSk6Ci0gICAgICAgICAgICAgIHBzICs9IGl0ZXJ0b29scy5jb21iaW5hdGlvbnMocmFuZ2UoMjApLCByKQotICAgICAgICAgIG51bV9kaXN0aW5jdF9oYXNoZXMgPSBsZW4oe2hhc2goZnJvemVuc2V0KHMpKSBmb3IgcyBpbiBwc30pCi0KLSAgICAqLwogICAgIFB5U2V0T2JqZWN0ICpzbyA9IChQeVNldE9iamVjdCAqKXNlbGY7Ci0gICAgUHlfdWhhc2hfdCBoLCBoYXNoID0gMTkyNzg2ODIzN1VMOworICAgIFB5X3VoYXNoX3QgaGFzaCA9IDA7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgIGlmIChzby0+aGFzaCAhPSAtMSkKICAgICAgICAgcmV0dXJuIHNvLT5oYXNoOwogCi0gICAgaGFzaCAqPSAoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDE7Ci0gICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIC8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoCi0gICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55Ci0gICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQotICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5Ci0gICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KLSAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICBoYXNoIF49ICgoaCBeIDg5ODY5NzQ3VUwpIF4gKGggPDwgMTYpKSAqIDM2NDQ3OTgxNjdVTDsKLSAgICB9Ci0gICAgLyogTWFrZSB0aGUgZmluYWwgcmVzdWx0IHNwcmVhZC1vdXQgaW4gYSBkaWZmZXJlbnQgcGF0dGVybgotICAgICAgIHRoYW4gdGhlIGFsZ29yaXRobSBmb3IgdHVwbGVzIG9yIG90aGVyIHB5dGhvbiBvYmplY3RzLiAqLworICAgIC8qIFhvci1pbiBzaHVmZmxlZCBiaXRzIGZyb20gZXZlcnkgZW50cnkncyBoYXNoIGZpZWxkIGJlY2F1c2UgeG9yIGlzCisgICAgICAgY29tbXV0YXRpdmUgYW5kIGEgZnJvemVuc2V0IGhhc2ggc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIG9yZGVyLgorCisgICAgICAgRm9yIHNwZWVkLCBpbmNsdWRlIG51bGwgZW50cmllcyBhbmQgZHVtbXkgZW50cmllcyBhbmQgdGhlbgorICAgICAgIHN1YnRyYWN0IG91dCB0aGVpciBlZmZlY3QgYWZ0ZXJ3YXJkcyBzbyB0aGF0IHRoZSBmaW5hbCBoYXNoCisgICAgICAgZGVwZW5kcyBvbmx5IG9uIGFjdGl2ZSBlbnRyaWVzLiAgVGhpcyBhbGxvd3MgdGhlIGNvZGUgdG8gYmUKKyAgICAgICB2ZWN0b3JpemVkIGJ5IHRoZSBjb21waWxlciBhbmQgaXQgc2F2ZXMgdGhlIHVucHJlZGljdGFibGUKKyAgICAgICBicmFuY2hlcyB0aGF0IHdvdWxkIGFyaXNlIHdoZW4gdHJ5aW5nIHRvIGV4Y2x1ZGUgbnVsbCBhbmQgZHVtbXkKKyAgICAgICBlbnRyaWVzIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4gKi8KKworICAgIGZvciAoZW50cnkgPSBzby0+dGFibGU7IGVudHJ5IDw9ICZzby0+dGFibGVbc28tPm1hc2tdOyBlbnRyeSsrKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoZW50cnktPmhhc2gpOworCisgICAgLyogUmVtb3ZlIHRoZSBlZmZlY3Qgb2YgYW4gb2RkIG51bWJlciBvZiBOVUxMIGVudHJpZXMgKi8KKyAgICBpZiAoKHNvLT5tYXNrICsgMSAtIHNvLT5maWxsKSAmIDEpCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cygwKTsKKworICAgIC8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIGFuIG9kZCBudW1iZXIgb2YgZHVtbXkgZW50cmllcyAqLworICAgIGlmICgoc28tPmZpbGwgLSBzby0+dXNlZCkgJiAxKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoLTEpOworCisgICAgLyogRmFjdG9yIGluIHRoZSBudW1iZXIgb2YgYWN0aXZlIGVudHJpZXMgKi8KKyAgICBoYXNoIF49ICgoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDEpICogMTkyNzg2ODIzN1VMOworCisgICAgLyogRGlzcGVyc2UgcGF0dGVybnMgYXJpc2luZyBpbiBuZXN0ZWQgZnJvemVuc2V0cyAqLwogICAgIGhhc2ggPSBoYXNoICogNjkwNjlVICsgOTA3MTMzOTIzVUw7CisKKyAgICAvKiAtMSBpcyByZXNlcnZlZCBhcyBhbiBlcnJvciBjb2RlICovCiAgICAgaWYgKGhhc2ggPT0gKFB5X3VoYXNoX3QpLTEpCiAgICAgICAgIGhhc2ggPSA1OTA5MjM3MTNVTDsKKwogICAgIHNvLT5oYXNoID0gaGFzaDsKICAgICByZXR1cm4gaGFzaDsKIH0KQEAgLTg2NSw3ICs5NDIsNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXNldGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtOTEwLDE4ICs5ODcsMTQgQEAKICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcga2V5cy4gIEV4cGVjdAogICAgICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAgICAqLwotICAgICAgICBpZiAoZGljdHNpemUgPT0gLTEpCisgICAgICAgIGlmIChkaWN0c2l6ZSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmICgoc28tPmZpbGwgKyBkaWN0c2l6ZSkqMyA+PSAoc28tPm1hc2srMSkqMikgewotICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIChzby0+dXNlZCArIGRpY3RzaXplKSoyKSAhPSAwKQorICAgICAgICBpZiAoKHNvLT5maWxsICsgZGljdHNpemUpKjMgPj0gc28tPm1hc2sqMikgeworICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkICsgZGljdHNpemUpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQotICAgICAgICAgICAgYW5fZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICBhbl9lbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTk3MCw5ICsxMDQzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7Ci0gICAgUHlTZXRPYmplY3QgKnNvID0gTlVMTDsKKyAgICBQeVNldE9iamVjdCAqc287CiAKLSAgICAvKiBjcmVhdGUgUHlTZXRPYmplY3Qgc3RydWN0dXJlICovCiAgICAgc28gPSAoUHlTZXRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDE1LDcgKzEwODcsOCBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEwsICpyZXN1bHQ7CiAKLSAgICBpZiAodHlwZSA9PSAmUHlGcm96ZW5TZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoImZyb3plbnNldCgpIiwga3dkcykpCisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiB0eXBlID09ICZQeUZyb3plblNldF9UeXBlCisgICAgICAgICYmICFfUHlBcmdfTm9LZXl3b3JkcygiZnJvemVuc2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIHR5cGUtPnRwX25hbWUsIDAsIDEsICZpdGVyYWJsZSkpCkBAIC0xMDQyLDI0ICsxMTE1LDkgQEAKICAgICByZXR1cm4gZW1wdHlmcm96ZW5zZXQ7CiB9CiAKLWludAotUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCi17Ci0gICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAodHlwZSA9PSAmUHlTZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIG1ha2VfbmV3X3NldCh0eXBlLCBOVUxMKTsKIH0KIApAQCAtMTIwMSw2ICsxMjU5LDggQEAKIHsKICAgICBQeVNldE9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICprZXksICppdCwgKnRtcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY29weShzbyk7CkBAIC0xMjIwLDEzICsxMjgwLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTI0MiwzMiArMTMwNCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotCi0gICAgICAgIGlmIChoYXNoID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgIH0KQEAgLTEyNzcsNiArMTMyMiwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNjMsNiArMTQxMyw3IEBACiBzZXRfaXNkaXNqb2ludChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqaXQsICp0bXA7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKSB7CiAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkKQEAgLTEzODEsOCArMTQzMiw4IEBACiAgICAgICAgICAgICBvdGhlciA9IHRtcDsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocnYpCiAgICAgICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMTM5NSw4ICsxNDQ2LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIHNldGVudHJ5IGVudHJ5OwogICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKIAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtMTQwNCwxMSArMTQ1Myw5IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTQyOSw2ICsxNDc2LDEwIEBACiBzdGF0aWMgaW50CiBzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CisgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jbGVhcl9pbnRlcm5hbChzbyk7CiAKQEAgLTE0MzcsNyArMTQ4OCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpCi0gICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5KSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmtleSwgKml0OwpAQCAtMTQ0Niw3ICsxNDk3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0NTcsMTAgKzE1MDgsMTAgQEAKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIC8qIElmIG1vcmUgdGhhbiAxLzUgYXJlIGR1bW1pZXMsIHRoZW4gcmVzaXplIHRoZW0gYXdheS4gKi8KLSAgICBpZiAoKHNvLT5maWxsIC0gc28tPnVzZWQpICogNSA8IHNvLT5tYXNrKQorICAgIC8qIElmIG1vcmUgdGhhbiAxLzR0aCBhcmUgZHVtbWllcywgdGhlbiByZXNpemUgdGhlbSBhd2F5LiAqLworICAgIGlmICgoc2l6ZV90KShzby0+ZmlsbCAtIHNvLT51c2VkKSA8PSAoc2l6ZV90KXNvLT5tYXNrIC8gNCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDg3LDcgKzE1MzgsNyBAQAogICAgIHJlc3VsdCA9IHNldF9jb3B5KHNvKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpICE9IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpID09IDApCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDk3LDggKzE1NDgsMTUgQEAKIHNldF9kaWZmZXJlbmNlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIGludCBydjsKKworICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkgeworICAgICAgICByZXR1cm4gc2V0X2NvcHkoc28pOworICAgIH0KIAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICAmJiAhUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIHJldHVybiBzZXRfY29weV9hbmRfZGlmZmVyZW5jZShzbywgb3RoZXIpOwpAQCAtMTUxNiwxNyArMTU3NCwxNSBAQAogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGVudHJ5Y29weTsKLSAgICAgICAgICAgIGludCBydjsKLSAgICAgICAgICAgIGVudHJ5Y29weS5oYXNoID0gZW50cnktPmhhc2g7Ci0gICAgICAgICAgICBlbnRyeWNvcHkua2V5ID0gZW50cnktPmtleTsKLSAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwga2V5LCBoYXNoKTsKICAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTM3LDEzICsxNTkzLDE1IEBACiAKICAgICAvKiBJdGVyYXRlIG92ZXIgc28sIGNoZWNraW5nIGZvciBjb21tb24gZWxlbWVudHMgaW4gb3RoZXIuICovCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNjA1LDI5ICsxNjYzLDI0IEBACiAgICAgUHlTZXRPYmplY3QgKm90aGVyc2V0OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIHNldGVudHJ5ICplbnRyeTsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY2xlYXIoc28pOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLQotICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmFuX2VudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY0NywxMyArMTcwMCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlIChzZXRfbmV4dChvdGhlcnNldCwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE3MTUsNiArMTc3MCw3IEBACiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdG1wLCAqcmVzdWx0OwpAQCAtMTcyOSw4ICsxNzg1LDggQEAKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCFydikKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTE4MjEsNyArMTg3Nyw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfY29udGFpbnNfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODQwLDcgKzE4OTYsNyBAQAogICAgIGxvbmcgcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gc2V0X2NvbnRhaW5zKHNvLCBrZXkpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KQEAgLTE4NTQsNyArMTkxMCw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg2Myw3ICsxOTE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywgdG1wa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHRtcGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTg4Niw3ICsxOTQyLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODk1LDcgKzE5NTEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCB0bXBrZXkpOwogICAgICAgICBQeV9ERUNSRUYodG1wa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTk0OSwxMyArMjAwNSwxMiBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNlbGYpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5U2V0X0NoZWNrKHNlbGYpICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgMCwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHNldF9jbGVhcl9pbnRlcm5hbChzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZmlsbCkKKyAgICAgICAgc2V0X2NsZWFyX2ludGVybmFsKHNlbGYpOwogICAgIHNlbGYtPmhhc2ggPSAtMTsKICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTIyLDcgKzIxNzcsNyBAQAogICAgICBjb3B5X2RvY30sCiAgICAgeyJkaWZmZXJlbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2RpZmZlcmVuY2VfbXVsdGksICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBkaWZmZXJlbmNlX2RvY30sCi0gICAgeyJpbnRlcnNlY3Rpb24iLChQeUNGdW5jdGlvbilzZXRfaW50ZXJzZWN0aW9uX211bHRpLCAgICAgICAgTUVUSF9WQVJBUkdTLAorICAgIHsiaW50ZXJzZWN0aW9uIiwgICAgKFB5Q0Z1bmN0aW9uKXNldF9pbnRlcnNlY3Rpb25fbXVsdGksICAgIE1FVEhfVkFSQVJHUywKICAgICAgaW50ZXJzZWN0aW9uX2RvY30sCiAgICAgeyJpc2Rpc2pvaW50IiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2lzZGlzam9pbnQsICAgIE1FVEhfTywKICAgICAgaXNkaXNqb2ludF9kb2N9LApAQCAtMjE5Myw3ICsyMjQ4LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXNldF90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXNldF9jbGVhcl9pbnRlcm5hbCwgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgKHJpY2hjbXBmdW5jKXNldF9yaWNoY29tcGFyZSwgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQeVNldE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlTZXRPYmplY3QsIHdlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAoZ2V0aXRlcmZ1bmMpc2V0X2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBmcm96ZW5zZXRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC0yMjc3LDYgKzIzMzIsMTggQEAKIH0KIAogaW50CitQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK1B5U2V0X0Zpbmkodm9pZCkKK3sKKyAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7Cit9CisKK2ludAogX1B5U2V0X05leHRFbnRyeShQeU9iamVjdCAqc2V0LCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeV9oYXNoX3QgKmhhc2gpCiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwpAQCAtMjM5OSw3ICsyNDY2LDcgQEAKICAgICAvKiBFeGVyY2lzZSBkaXJlY3QgaXRlcmF0aW9uICovCiAgICAgaSA9IDAsIGNvdW50ID0gMDsKICAgICB3aGlsZSAoX1B5U2V0X05leHRFbnRyeSgoUHlPYmplY3QgKilkdXAsICZpLCAmeCwgJmhhc2gpKSB7Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHgpOworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOCh4KTsKICAgICAgICAgYXNzZXJ0KHMgJiYgKHNbMF0gPT0gJ2EnIHx8IHNbMF0gPT0gJ2InIHx8IHNbMF0gPT0gJ2MnKSk7CiAgICAgICAgIGNvdW50Kys7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAppbmRleCAwZmM2YjU4Li40M2YyZjMyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtMSw2ICsxLDggQEAKIC8qIHN0cmluZ2xpYjogY29kZWMgaW1wbGVtZW50YXRpb25zICovCiAKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiY29kZWNzLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCkBAIC0yNjAsNTIgKzI2MiwzNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCi0KLSAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gcyBvZiBuZXh0IGlucHV0IGJ5dGUgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgIC8qIHJlc3VsdCBzdHJpbmcgb2JqZWN0ICovCisgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIGRhdGEgb2YgbmV4dCBpbnB1dCBjaGFyYWN0ZXIgKi8KICAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KLSAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAjZW5kaWYKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDI7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAyXTsKICNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCiAgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMzsKLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDNdOwogI2Vsc2UgLyogIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0ICovCiAgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gNDsKLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOwogI2VuZGlmCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAotICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgewotICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCi0gICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0Ci0gICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgotICAgICAgICAgKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLwotICAgICAgICBwID0gc3RhY2tidWY7CisgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7Ci0gICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLwotICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIG1heF9jaGFyX3NpemU7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICB9CisKKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSAqIG1heF9jaGFyX3NpemUpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7KSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBkYXRhW2krK107CkBAIC0zMjYsNzIgKzMxMCwxMTcgQEAKICAgICAgICAgfQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKICAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgaywgc3RhcnRwb3M7Ci0gICAgICAgICAgICBzdGFydHBvcyA9IGktMTsKLSAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAotICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgc3RhcnRwb3MrMSwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICBpZiAoIXJlcCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7Ci0KLSAgICAgICAgICAgIGlmIChyZXBzaXplID4gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0OwotCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIG1heF9jaGFyX3NpemU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbmFsbG9jYXRlZCkgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgc3RhY2tidWYsIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OworICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgZW5kcG9zLCBuZXdwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikgeworICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7Ci0gICAgICAgICAgICAgICAgZm9yKGsgPSByZXBzaXplOyBrID4gMDsgay0tKQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKLSAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCByZXBraW5kOwotICAgICAgICAgICAgICAgIHZvaWQgKnJlcGRhdGE7CisgICAgICAgICAgICBzdGFydHBvcyA9IGktMTsKKyAgICAgICAgICAgIGVuZHBvcyA9IHN0YXJ0cG9zKzE7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQorICAgICAgICAgICAgd2hpbGUgKChlbmRwb3MgPCBzaXplKSAmJiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShkYXRhW2VuZHBvc10pKQorICAgICAgICAgICAgICAgIGVuZHBvcysrOworCisgICAgICAgICAgICAvKiBPbmx5IG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGl0J3Mgbm90IHRoZSBsYXN0IHdyaXRlICovCisgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gKGVuZHBvcyA8IHNpemUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgICAgIG1lbXNldChwLCAnPycsIGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwICs9IChlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIHRoZSBpZ25vcmUgaGFuZGxlciAqLworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M6CisgICAgICAgICAgICAgICAgZm9yIChrPXN0YXJ0cG9zOyBrPGVuZHBvczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gZGF0YVtrXTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZSAqIChlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCA9IGJhY2tzbGFzaHJlcGxhY2UoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIHJlcGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOwotICAgICAgICAgICAgICAgIHJlcGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBmb3Ioaz0wOyBrPHJlcHNpemU7IGsrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChyZXBraW5kLCByZXBkYXRhLCBrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgewotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAidXRmLTgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZSAqIChlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCA9IHhtbGNoYXJyZWZyZXBsYWNlKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MpOworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgICAgIGZvciAoaz1zdGFydHBvczsgazxlbmRwb3M7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGRhdGFba107CisgICAgICAgICAgICAgICAgICAgIGlmICghKDB4REM4MCA8PSBjaCAmJiBjaCA8PSAweERDRkYpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoY2ggJiAweGZmKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGsgPj0gZW5kcG9zKSB7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydHBvcyA9IGs7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0cG9zIDwgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggdGhlIGRlZmF1bHQgaGFuZGxlciAqLworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsIHN0YXJ0cG9zLCBlbmRwb3MsICZuZXdwb3MpOworICAgICAgICAgICAgICAgIGlmICghcmVwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAobmV3cG9zIC0gc3RhcnRwb3MpOworCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgICAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlcCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogcmVwIGlzIHVuaWNvZGUgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAidXRmLTgiLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHBvcywgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpYzsKKworICAgICAgICAgICAgICAgICAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApKTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisKKyAgICAgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKworICAgICAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IGkgPT0gc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIKQEAgLTQxNiwzNSArNDQ1LDIwIEBACiAjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMSAqLwogICAgIH0KIAotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7Ci0gICAgfQotCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAjZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CiAKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCiAgZXJyb3I6CiAgICAgUHlfWERFQ1JFRihyZXApOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKLQotI3VuZGVmIE1BWF9TSE9SVF9VTklDSEFSUwogfQogCiAvKiBUaGUgcGF0dGVybiBmb3IgY29uc3RydWN0aW5nIFVDUzItcmVwZWF0ZWQgbWFza3MuICovCkBAIC04MDYsNSArODIwLDMgQEAKICN1bmRlZiBTV0FCNAogCiAjZW5kaWYKLQotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaAppbmRleCA3MzljZjNkLi5mMDU0NjI1IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKQEAgLTEsNSArMSw2IEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImN0eXBlLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MiCisjZW5kaWYKIAogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGNkYTY4ZTcuLjk4MTY1YWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTMyLDUyICszMiw5OCBAQAogI2RlZmluZSBTVFJJTkdMSUJfQkxPT00obWFzaywgY2gpICAgICBcCiAgICAgKChtYXNrICYgICgxVUwgPDwgKChjaCkgJiAoU1RSSU5HTElCX0JMT09NX1dJRFRIIC0xKSkpKSkKIAorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitTVFJJTkdMSUIoZmluZF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLCBTVFJJTkdMSUJfQ0hBUiBjaCkKK3sKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcCwgKmU7CisKKyAgICBwID0gczsKKyAgICBlID0gcyArIG47CisgICAgaWYgKG4gPiAxMCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgIHAgPSBtZW1jaHIocywgY2gsIG4pOworICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKHAsIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUgLSBwKSAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHAgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIHdoaWxlIChwIDwgZSkgeworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcCsrOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlKQorU1RSSU5HTElCKHJmaW5kX2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sIFNUUklOR0xJQl9DSEFSIGNoKQogewotICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOwotICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZSA9IHMgKyBuOwotICAgICAgICB3aGlsZSAocHRyIDwgZSkgewotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIHB0ciwgbmVlZGxlLCAoZSAtIHB0cikgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBwdHIgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKnB0ciA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gKHB0ciAtIHMpOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnA7CiAjaWZkZWYgSEFWRV9NRU1SQ0hSCiAgICAgLyogbWVtcmNocigpIGlzIGEgR05VIGV4dGVuc2lvbiwgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMS45MS4KICAgICAgICBpdCBkb2Vzbid0IHNlZW0gYXMgb3B0aW1pemVkIGFzIG1lbWNocigpLCBidXQgaXMgc3RpbGwgcXVpdGUKLSAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgaW4gRkFTVFNFQVJDSCBiZWxvdyAqLwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKSB7Ci0gICAgICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmZvdW5kOwotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocigoY29uc3Qgdm9pZCAqKSBzLCBuZWVkbGUsIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgbiA9IGZvdW5kIC0gczsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydCgwKTsgLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgYmVsb3cgKi8KIAotI3VuZGVmIERPX01FTUNIUgorICAgIGlmIChuID4gMTApIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICBwID0gbWVtcmNocihzLCBjaCwgbik7CisgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICAgICAgLyogdXNlIG1lbXJjaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocihzLCBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBuID0gcCAtIHM7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisjZW5kaWYgIC8qIEhBVkVfTUVNUkNIUiAqLworICAgIHAgPSBzICsgbjsKKyAgICB3aGlsZSAocCA+IHMpIHsKKyAgICAgICAgcC0tOworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKQEAgLTk5LDI1ICsxNDUsMTEgQEAKICAgICAgICAgaWYgKG0gPD0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyogdXNlIHNwZWNpYWwgY2FzZSBmb3IgMS1jaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgICAgICBpZiAobiA+IDEwICYmIChtb2RlID09IEZBU1RfU0VBUkNICi0jaWZkZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAgICAgICAgIHx8IG1vZGUgPT0gRkFTVF9SU0VBUkNICi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKSkgewotICAgICAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5Ci0gICAgICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlOwotICAgICAgICAgICAgbmVlZGxlID0gcFswXSAmIDB4ZmY7Ci0jaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgICAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KLSAgICAgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgotICAgICAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLwotICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgeworICAgICAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkKKyAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmluZF9jaGFyKShzLCBuLCBwWzBdKTsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpCisgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kX2NoYXIpKHMsIG4sIHBbMF0pOworICAgICAgICBlbHNlIHsgIC8qIEZBU1RfQ09VTlQgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkgewogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtMTI1LDE0ICsxNTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heGNvdW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9IGVsc2UgeyAgICAvKiBGQVNUX1JTRUFSQ0ggKi8KLSAgICAgICAgICAgIGZvciAoaSA9IG4gLSAxOyBpID4gLTE7IGktLSkKLSAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IDE0ODE1ZjYuLjUwOWI5MjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTExNyw4NSArMTE3LDMgQEAKIH0KIAogI3VuZGVmIEZPUk1BVF9CVUZGRVJfU0laRQotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLQotLyoKLVdyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCi1maXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgotCi1Ob3RlIHRoYXQgd2UgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgb2YgdGhlIHN1YnN0cmluZyBvYmplY3QsCi1zbyB3aGVuIHdlIGNyZWF0ZSB0aGF0IG9iamVjdCBpbiB0aGlzIGZ1bmN0aW9uIHdlIGRvbid0IERFQ1JFRiBpdCwKLWJlY2F1c2UgaXQgY29udGludWVzIGxpdmluZyBpbiB0aGUgY2FsbGVyIGZ1bmN0aW9ucyAodGhvc2UgZnVuY3Rpb25zLAotYWZ0ZXIgZmluaXNoaW5nIHVzaW5nIHRoZSBzdWJzdHJpbmcsIG11c3QgREVDUkVGIGl0KS4KLSovCi0KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1TVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc191bmljb2RlKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vic3RyaW5nOwotCi0gICAgaWYoU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7Ci0gICAgICAgIHRtcF9zdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCh0bXBfc3Vic3RyaW5nKTsKLSAgICAgICAgaWYgKCF0bXBfc3Vic3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpzdWJzdHJpbmcgPSB0bXBfc3Vic3RyaW5nOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlIC8qICFTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwotCi0vKgotV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQotZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgotCi1JZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCi1hbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKLWFuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgotKi8KLQotUHlfTE9DQUxfSU5MSU5FKGludCkKLVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX2J5dGUpKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOwotICAgIFB5X3NzaXplX3QgaXZhbDsKLSAgICBQeU9iamVjdCAqZXJyOwotCi0gICAgaWYoIVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKLSAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEpIHsKLSAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKLSAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAqc3Vib2JqID0gTlVMTDsKLSAgICAqYnl0ZSA9IChjaGFyKWl2YWw7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCmluZGV4IGViM2ZlODguLjhjY2JjMzAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKQEAgLTEsNiArMSw4IEBACiAvKiBGaW5kaW5nIHRoZSBvcHRpbWFsIHdpZHRoIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBhIGJ1ZmZlciAqLwogCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImZpbmRfbWF4X2NoYXIuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KQEAgLTEyOSw1ICsxMzEsNCBAQAogI3VuZGVmIE1BWF9DSEFSX1VDUzQKIAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxICovCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCmluZGV4IGNiZjgxYmUuLjZmMzE0ZTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKQEAgLTEsNiArMSw2IEBACiAvKiBzdHJpbmdsaWI6IGJ5dGVzIGpvaW5pbmcgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAhPSAxCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKICNlcnJvciBqb2luLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MKICNlbmRpZgogCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICAgICAgY2hhciAqcSA9IGJ1ZmZlcnNbaV0uYnVmOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICAgICAgcCArPSBuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTExNiwxMiArMTE2LDEyIEBACiAgICAgICAgIFB5X3NzaXplX3QgbjsKICAgICAgICAgY2hhciAqcTsKICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBzZXBzdHIsIHNlcGxlbik7CisgICAgICAgICAgICBtZW1jcHkocCwgc2Vwc3RyLCBzZXBsZW4pOwogICAgICAgICAgICAgcCArPSBzZXBsZW47CiAgICAgICAgIH0KICAgICAgICAgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICBxID0gYnVmZmVyc1tpXS5idWY7Ci0gICAgICAgIFB5X01FTUNQWShwLCBxLCBuKTsKKyAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICBwICs9IG47CiAgICAgfQogICAgIGdvdG8gZG9uZTsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAppbmRleCA2ZTJmMDczLi5kZjUwMWVkIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCkBAIC0yLDggKzIsOCBAQAogCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKLSNpZm5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSMgICBlcnJvciAibG9jYWxldXRpbCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyAgIGVycm9yICJsb2NhbGV1dGlsLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCmluZGV4IGI1NTliNTMuLmEzMTQ1NzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCkBAIC0xLDE0ICsxLDIxIEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgInRyYW5zbW9ncmlmeS5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzIgorI2VuZGlmCiAKIC8qIHRoZSBtb3JlIGNvbXBsaWNhdGVkIG1ldGhvZHMuICBwYXJ0cyBvZiB0aGVzZSBzaG91bGQgYmUgcHVsbGVkIG91dCBpbnRvIHRoZQogICAgc2hhcmVkIGNvZGUgaW4gYnl0ZXNfbWV0aG9kcy5jIHRvIGN1dCBkb3duIG9uIGR1cGxpY2F0ZSBjb2RlIGJsb2F0LiAgKi8KIAotUHlEb2NfU1RSVkFSKGV4cGFuZHRhYnNfX2RvY19fLAotIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCi1JZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgorcmV0dXJuX3NlbGYoUHlPYmplY3QgKnNlbGYpCit7CisjaWYgIVNUUklOR0xJQl9NVVRBQkxFCisgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBzZWxmOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOworfQogCiBzdGF0aWMgUHlPYmplY3QqCiBzdHJpbmdsaWJfZXhwYW5kdGFicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtODMsNyArOTAsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogcGFkKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxlZnQsIFB5X3NzaXplX3QgcmlnaHQsIGNoYXIgZmlsbCkKIHsKICAgICBQeU9iamVjdCAqdTsKQEAgLTkzLDM5ICsxMDAsMjUgQEAKICAgICBpZiAocmlnaHQgPCAwKQogICAgICAgICByaWdodCA9IDA7CiAKLSAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDAgJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci0jZW5kaWYgLyogU1RSSU5HTElCX01VVEFCTEUgKi8KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAotICAgIHUgPSBTVFJJTkdMSUJfTkVXKE5VTEwsCi0JCQkJICAgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CisgICAgdSA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CiAgICAgaWYgKHUpIHsKICAgICAgICAgaWYgKGxlZnQpCiAgICAgICAgICAgICBtZW1zZXQoU1RSSU5HTElCX1NUUih1KSwgZmlsbCwgbGVmdCk7Ci0gICAgICAgIFB5X01FTUNQWShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKLQkgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLQkgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgICAgIG1lbWNweShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKKyAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCisgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKICAgICAgICAgaWYgKHJpZ2h0KQogICAgICAgICAgICAgbWVtc2V0KFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSwKLQkJICAgZmlsbCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgIGZpbGwsIHJpZ2h0KTsKICAgICB9CiAKICAgICByZXR1cm4gdTsKIH0KIAotUHlEb2NfU1RSVkFSKGxqdXN0X19kb2NfXywKLSJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfbGp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTM1LDI3ICsxMjgsMTQgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpsanVzdCIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFkKHNlbGYsIDAsIHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKSwgZmlsbGNoYXIpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyanVzdF9fZG9jX18sCi0iQi5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX3JqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE2NSwyNyArMTQ1LDE0IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6cmp1c3QiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhZChzZWxmLCB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY2VudGVyX19kb2NfXywKLSJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9jZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTk2LDE1ICsxNjMsOCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOmNlbnRlciIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBtYXJnID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjEzLDEyICsxNzMsNiBAQAogICAgIHJldHVybiBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKIH0KIAotUHlEb2NfU1RSVkFSKHpmaWxsX19kb2NfXywKLSJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgotIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl96ZmlsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMzEsMjEgKzE4NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVygKLSAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikKLSAgICAgICAgICAgICk7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBmaWxsID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjYyLDUgKzIwMiw1MDAgQEAKICAgICAgICAgcFtmaWxsXSA9ICcwJzsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgczsKKyAgICByZXR1cm4gczsKIH0KKworCisvKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCisKKyNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKKworCitzdGF0aWMgUHlfc3NpemVfdAorY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsCisgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICBjb25zdCBjaGFyICpzdGFydCA9IHRhcmdldDsKKyAgICBjb25zdCBjaGFyICplbmQgPSB0YXJnZXQgKyB0YXJnZXRfbGVuOworCisgICAgd2hpbGUgKChzdGFydCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgYykpICE9IE5VTEwpIHsKKyAgICAgICAgY291bnQrKzsKKyAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKworCisvKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCisKKy8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9pbnRlcmxlYXZlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3M7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKKyAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLworICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikgeworICAgICAgICBjb3VudCA9IG1heGNvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KKyAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCisgICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBieXRlcyBhcmUgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBpZiAodG9fbGVuID4gMSkgeworICAgICAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIGNvdW50IC09IDE7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHRfc1swXSA9IHRvX3NbMF07CisgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgY291bnQgLT0gMTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgcmVzdWx0X3NbMF0gPSB0b19zWzBdOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuIC0gaSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisKKyAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCisgICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgfQorICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworCisgICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKKyAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIGZyb21fbGVuOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKm5leHQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKKworICAgIGlmIChuZXh0ID09IE5VTEwpIHsKKyAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBzZWxmX2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOworCisgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KKyAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0IC0gc2VsZl9zKTsKKyAgICAqc3RhcnQgPSB0b19jOworICAgIHN0YXJ0Kys7CisgICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKKworICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICpuZXh0ID0gdG9fYzsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgaWYgKG9mZnNldCA9PSAtMSkgeworICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNlbGZfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7CisKKyAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLworICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OworICAgIG1lbWNweShzdGFydCwgdG9fcywgZnJvbV9sZW4pOworICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47CisKKyAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHN0YXJ0ICsgb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7CisgICAgICAgIHN0YXJ0ICs9IG9mZnNldCArIGZyb21fbGVuOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KKyAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7CisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCA9IG5leHQgKyBmcm9tX2xlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGlmIChtYXhjb3VudCA8IDApIHsKKyAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgU1RSSU5HTElCX0xFTihzZWxmKSA9PSAwKSB7CisgICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCisgICAgaWYgKGZyb21fbGVuID09IDApIHsKKyAgICAgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgICovCisgICAgICAgIC8qICAgID4+PiBiIlB5dGhvbiIucmVwbGFjZShiIiIsIGIiLiIpICAqLworICAgICAgICAvKiAgICBiJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfQorCisgICAgLyogRXhjZXB0IGZvciBiIiIucmVwbGFjZShiIiIsIGIiQSIpID09IGIiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCisgICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KKyAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIGJ5dGVzICovCisgICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3N1YnN0cmluZygKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KKworICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKKyAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgdG9fc1swXSwgbWF4Y291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCisgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZygKKyAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0KK30KKworI3VuZGVmIGZpbmRjaGFyCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAppbmRleCBiZTA5YjVmLi4xNGZhMjhlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKQEAgLTY3LDcgKzY3LDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzdHItPnN0ciwgc3RyLT5zdGFydCwgc3RyLT5lbmQpOwogfQogCi0vKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KKy8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gYSBuZXcgZW1wdHkgc3RyaW5nICovCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKIFN1YlN0cmluZ19uZXdfb2JqZWN0X29yX2VtcHR5KFN1YlN0cmluZyAqc3RyKQogewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYyBiL09iamVjdHMvc3RydWN0c2VxLmMKaW5kZXggNjY0MzQ0Yi4uNTQ4OWFlZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYworKysgYi9PYmplY3RzL3N0cnVjdHNlcS5jCkBAIC00LDkgKzQsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCi1zdGF0aWMgY2hhciB2aXNpYmxlX2xlbmd0aF9rZXlbXSA9ICJuX3NlcXVlbmNlX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciByZWFsX2xlbmd0aF9rZXlbXSA9ICJuX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciB1bm5hbWVkX2ZpZWxkc19rZXlbXSA9ICJuX3VubmFtZWRfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHZpc2libGVfbGVuZ3RoX2tleVtdID0gIm5fc2VxdWVuY2VfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHJlYWxfbGVuZ3RoX2tleVtdID0gIm5fZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVubmFtZWRfZmllbGRzX2tleVtdID0gIm5fdW5uYW1lZF9maWVsZHMiOwogCiAvKiBGaWVsZHMgd2l0aCB0aGlzIG5hbWUgaGF2ZSBvbmx5IGEgZmllbGQgaW5kZXgsIG5vdCBhIGZpZWxkIG5hbWUuCiAgICBUaGV5IGFyZSBvbmx5IGFsbG93ZWQgZm9yIGluZGljZXMgPCBuX3Zpc2libGVfZmllbGRzLiAqLwpAQCAtMTYsMTQgKzE2LDE0IEBACiBfUHlfSURFTlRJRklFUihuX3VubmFtZWRfZmllbGRzKTsKIAogI2RlZmluZSBWSVNJQkxFX1NJWkUob3ApIFB5X1NJWkUob3ApCi0jZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBWSVNJQkxFX1NJWkVfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3NlcXVlbmNlX2ZpZWxkcykpCiAKLSNkZWZpbmUgUkVBTF9TSVpFX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fZmllbGRzKSkKICNkZWZpbmUgUkVBTF9TSVpFKG9wKSBSRUFMX1NJWkVfVFAoUHlfVFlQRShvcCkpCiAKLSNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3VubmFtZWRfZmllbGRzKSkKICNkZWZpbmUgVU5OQU1FRF9GSUVMRFMob3ApIFVOTkFNRURfRklFTERTX1RQKFB5X1RZUEUob3ApKQogCkBAIC0xNjQsNyArMTY0LDggQEAKICNkZWZpbmUgVFlQRV9NQVhTSVpFIDEwMAogCiAgICAgUHlUeXBlT2JqZWN0ICp0eXAgPSBQeV9UWVBFKG9iaik7Ci0gICAgaW50IGksIHJlbW92ZWxhc3QgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgcmVtb3ZlbGFzdCA9IDA7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgY2hhciBidWZbUkVQUl9CVUZGRVJfU0laRV07CiAgICAgY2hhciAqZW5kb2ZidWYsICpwYnVmID0gYnVmOwpAQCAtMTkzLDcgKzE5NCw3IEBACiAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9SZXByKHZhbCk7CiAgICAgICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgY3JlcHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHJlcHIpOworICAgICAgICBjcmVwciA9IFB5VW5pY29kZV9Bc1VURjgocmVwcik7CiAgICAgICAgIGlmIChjcmVwciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzNiw4ICsyMzcsNyBAQAogICAgIFB5T2JqZWN0KiB0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0KiBkaWN0ID0gTlVMTDsKICAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIFB5X3NzaXplX3Qgbl9maWVsZHMsIG5fdmlzaWJsZV9maWVsZHMsIG5fdW5uYW1lZF9maWVsZHM7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBuX2ZpZWxkcywgbl92aXNpYmxlX2ZpZWxkcywgbl91bm5hbWVkX2ZpZWxkcywgaTsKIAogICAgIG5fZmllbGRzID0gUkVBTF9TSVpFKHNlbGYpOwogICAgIG5fdmlzaWJsZV9maWVsZHMgPSBWSVNJQkxFX1NJWkUoc2VsZik7CkBAIC0zMjUsNyArMzI1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU1lbWJlckRlZiogbWVtYmVyczsKLSAgICBpbnQgbl9tZW1iZXJzLCBuX3VubmFtZWRfbWVtYmVycywgaSwgazsKKyAgICBQeV9zc2l6ZV90IG5fbWVtYmVycywgbl91bm5hbWVkX21lbWJlcnMsIGksIGs7CiAgICAgUHlPYmplY3QgKnY7CiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCkBAIC0zNzMsOSArMzczLDkgQEAKICAgICBQeV9JTkNSRUYodHlwZSk7CiAKICAgICBkaWN0ID0gdHlwZS0+dHBfZGljdDsKLSNkZWZpbmUgU0VUX0RJQ1RfRlJPTV9JTlQoa2V5LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFNFVF9ESUNUX0ZST01fU0laRShrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHYgPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAodiA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBrZXksIHYpIDwgMCkgeyAgICAgICAgICAgXApAQCAtMzg1LDkgKzM4NSw5IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLSAgICBTRVRfRElDVF9GUk9NX0lOVCh2aXNpYmxlX2xlbmd0aF9rZXksIGRlc2MtPm5faW5fc2VxdWVuY2UpOwotICAgIFNFVF9ESUNUX0ZST01fSU5UKHJlYWxfbGVuZ3RoX2tleSwgbl9tZW1iZXJzKTsKLSAgICBTRVRfRElDVF9GUk9NX0lOVCh1bm5hbWVkX2ZpZWxkc19rZXksIG5fdW5uYW1lZF9tZW1iZXJzKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUocmVhbF9sZW5ndGhfa2V5LCBuX21lbWJlcnMpOworICAgIFNFVF9ESUNUX0ZST01fU0laRSh1bm5hbWVkX2ZpZWxkc19rZXksIG5fdW5uYW1lZF9tZW1iZXJzKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IDc5MjBmZWMuLmMwZmY0OTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTM2LDYgKzM2LDE2IEBACiBzdGF0aWMgdm9pZAogc2hvd190cmFjayh2b2lkKQogeworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZnByaW50ZihzdGRlcnIsICJUdXBsZXMgY3JlYXRlZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKICAgICAgICAgY291bnRfdHJhY2tlZCArIGNvdW50X3VudHJhY2tlZCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJUdXBsZXMgdHJhY2tlZCBieSB0aGUgR0M6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKQEAgLTE0OSw3ICsxNTksNiBAQAogaW50CiBQeVR1cGxlX1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICpuZXdpdGVtKQogewotICAgIFB5T2JqZWN0ICpvbGRpdGVtOwogICAgIFB5T2JqZWN0ICoqcDsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2sob3ApIHx8IG9wLT5vYl9yZWZjbnQgIT0gMSkgewogICAgICAgICBQeV9YREVDUkVGKG5ld2l0ZW0pOwpAQCAtMTYzLDkgKzE3Miw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgcCA9ICgoUHlUdXBsZU9iamVjdCAqKW9wKSAtPiBvYl9pdGVtICsgaTsKLSAgICBvbGRpdGVtID0gKnA7Ci0gICAgKnAgPSBuZXdpdGVtOwotICAgIFB5X1hERUNSRUYob2xkaXRlbSk7CisgICAgUHlfWFNFVFJFRigqcCwgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQ0Niw5ICs0NTMsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZGVmaW5lIGIgKChQeVR1cGxlT2JqZWN0ICopYmIpCi0gICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwotICAgIGlmIChzaXplIDwgMCkKKyAgICBpZiAoUHlfU0laRShhKSA+IFBZX1NTSVpFX1RfTUFYIC0gUHlfU0laRShiKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwogICAgIG5wID0gKFB5VHVwbGVPYmplY3QgKikgUHlUdXBsZV9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVvYmplY3QuYyBiL09iamVjdHMvdHlwZW9iamVjdC5jCmluZGV4IDdiNzZlNWMuLjMyOTI2MWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHlwZW9iamVjdC5jCkBAIC01MywxMCArNTMsMTIgQEAKIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cmlidXRlX18pOwogX1B5X0lERU5USUZJRVIoX19nZXRpdGVtX18pOwogX1B5X0lERU5USUZJRVIoX19oYXNoX18pOworX1B5X0lERU5USUZJRVIoX19pbml0X3N1YmNsYXNzX18pOwogX1B5X0lERU5USUZJRVIoX19sZW5fXyk7CiBfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworX1B5X0lERU5USUZJRVIoX19zZXRfbmFtZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKGJ1aWx0aW5zKTsKIApAQCAtNDUyLDI3ICs0NTQsMzAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgY2hhciAqczsKKyAgICBQeU9iamVjdCAqbW9kOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBQeU9iamVjdCAqbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7Ci0gICAgICAgIGlmICghbW9kKSB7CisgICAgICAgIG1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOworICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfWElOQ1JFRihtb2QpOwotICAgICAgICByZXR1cm4gbW9kOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lOwotICAgICAgICBzID0gc3RycmNocih0eXBlLT50cF9uYW1lLCAnLicpOwotICAgICAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKKyAgICAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICAgICAgbW9kID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsIChQeV9zc2l6ZV90KShzIC0gdHlwZS0+dHBfbmFtZSkpOwotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfYnVpbHRpbnMpOwotICAgICAgICBQeV9YSU5DUkVGKG5hbWUpOwotICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgICAgIGlmIChtb2QgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmbW9kKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vZCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobW9kKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gbW9kOwogfQogCiBzdGF0aWMgaW50CkBAIC01MDAsNyArNTA1LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgcmV0dXJuIG1vZDsKIH0KIApAQCAtNTQ3LDggKzU1Miw4IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmJlc3RfYmFzZShQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgbXJvX2ludGVybmFsKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKik7Ci1QeV9MT0NBTF9JTkxJTkUoaW50KSB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwotc3RhdGljIGludCBjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgaW50IGFkZF9zdWJjbGFzcyhQeVR5cGVPYmplY3QqLCBQeVR5cGVPYmplY3QqKTsKIHN0YXRpYyBpbnQgYWRkX2FsbF9zdWJjbGFzc2VzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmJhc2VzKTsKIHN0YXRpYyB2b2lkIHJlbW92ZV9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwpAQCAtODg4LDI1ICs4OTMsMzMgQEAKICNlbmRpZgogCiAgICAgb2JqID0gdHlwZS0+dHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmIChvYmogIT0gTlVMTCkgewotICAgICAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAotICAgICAgICAgICBkb24ndCBjYWxsIHRwX2luaXQgb24gdGhlIHJlc3VsdC4gKi8KLSAgICAgICAgaWYgKHR5cGUgPT0gJlB5VHlwZV9UeXBlICYmCi0gICAgICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgotICAgICAgICAgICAgKGt3ZHMgPT0gTlVMTCB8fAotICAgICAgICAgICAgIChQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgPT0gMCkpKQotICAgICAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgICAgLyogSWYgdGhlIHJldHVybmVkIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSwKLSAgICAgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCi0gICAgICAgIGlmICghUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKG9iaiksIHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKLSAgICAgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgICAgICAgICAgb2JqID0gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICBvYmogPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdCgoUHlPYmplY3QqKXR5cGUsIG9iaiwgTlVMTCk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFVnbHkgZXhjZXB0aW9uOiB3aGVuIHRoZSBjYWxsIHdhcyB0eXBlKHNvbWV0aGluZyksCisgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCisgICAgaWYgKHR5cGUgPT0gJlB5VHlwZV9UeXBlICYmCisgICAgICAgIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCisgICAgICAgIChrd2RzID09IE5VTEwgfHwKKyAgICAgICAgIChQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgPT0gMCkpKQorICAgICAgICByZXR1cm4gb2JqOworCisgICAgLyogSWYgdGhlIHJldHVybmVkIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSwKKyAgICAgICBpdCB3b24ndCBiZSBpbml0aWFsaXplZC4gKi8KKyAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7CisgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gTlVMTCkgeworICAgICAgICBpbnQgcmVzID0gdHlwZS0+dHBfaW5pdChvYmosIGFyZ3MsIGt3ZHMpOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgICAgICBvYmogPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gb2JqOwpAQCAtMTMyNCw3ICsxMzM3LDcgQEAKIAogLyogdHlwZSB0ZXN0IHdpdGggc3ViY2xhc3Npbmcgc3VwcG9ydCAqLwogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGludAogdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICphLCBQeVR5cGVPYmplY3QgKmIpCiB7CiAgICAgZG8gewpAQCAtMTQxMiwzNiArMTQyNSwzOCBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKLSAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEwsICpyZXR2YWw7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWVpZC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTQ1MCwzNiArMTQ2NSwzOCBAQAogLyogQ2xvbmUgb2YgY2FsbF9tZXRob2QoKSB0aGF0IHJldHVybnMgTm90SW1wbGVtZW50ZWQgd2hlbiB0aGUgbG9va3VwIGZhaWxzLiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpCisgICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7CisgICAgICAgIFB5T2JqZWN0ICphcmdzOworCisgICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICB2YV9lbmQodmEpOwogCi0gICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KIAotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC0xNTMxLDcgKzE1NDgsNiBAQAogICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5X1hERUNSRUYobmFtZSk7CiAgICAgICAgIG5hbWUgPSBQeU9iamVjdF9SZXByKGNscyk7CiAgICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpCkBAIC0xNjEwLDcgKzE2MjYsNyBAQAogICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNsYXNzX25hbWUoayk7CiAgICAgICAgIGNoYXIgKm5hbWVfc3RyOwogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBuYW1lX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CisgICAgICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgobmFtZSk7CiAgICAgICAgICAgICBpZiAobmFtZV9zdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBuYW1lX3N0ciA9ICI/IjsKICAgICAgICAgfSBlbHNlCkBAIC0yMDI1LDYgKzIwNDEsOCBAQAogc3RhdGljIGludCBvYmplY3RfaW5pdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgdXBkYXRlX3Nsb3QoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZml4dXBfc2xvdF9kaXNwYXRjaGVycyhQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IHNldF9uYW1lcyhQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGluaXRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAvKgogICogSGVscGVycyBmb3IgIF9fZGljdF9fIGRlc2NyaXB0b3IuICBXZSBkb24ndCB3YW50IHRvIGV4cG9zZSB0aGUgZGljdHMKQEAgLTIwODksNyArMjEwNyw3IEBACiBzdGF0aWMgaW50CiBzdWJ0eXBlX3NldGRpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHI7CisgICAgUHlPYmplY3QgKipkaWN0cHRyOwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMjEyMCwxMCArMjEzOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgICpkaWN0cHRyID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9YU0VUUkVGKCpkaWN0cHRyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIyMDIsNyArMjIxOCw4IEBACiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKLSAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUuX19pbml0X18oKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0yMjY5LDggKzIyODYsNyBAQAogdHlwZV9uZXcoUHlUeXBlT2JqZWN0ICptZXRhdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpuYW1lLCAqYmFzZXMgPSBOVUxMLCAqb3JpZ19kaWN0LCAqZGljdCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJuYW1lIiwgImJhc2VzIiwgImRpY3QiLCAwfTsKLSAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpzbG90cyA9IE5VTEwsICp0bXAsICpuZXdzbG90czsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpzbG90cyA9IE5VTEwsICp0bXAsICpuZXdzbG90cywgKmNlbGw7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gTlVMTCwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOwogICAgIFB5SGVhcFR5cGVPYmplY3QgKmV0OwogICAgIFB5TWVtYmVyRGVmICptcDsKQEAgLTIyNzgsMTYgKzIyOTQsMTkgQEAKICAgICBpbnQgaiwgbWF5X2FkZF9kaWN0LCBtYXlfYWRkX3dlYWssIGFkZF9kaWN0LCBhZGRfd2VhazsKICAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc2NlbGxfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZTogdHlwZSh4KSBzaG91bGQgcmV0dXJuIHgtPm9iX3R5cGUgKi8KLSAgICB7CisgICAgLyogV2Ugb25seSB3YW50IHR5cGUgaXRzZWxmIHRvIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0gKCMyNzE1NykKKyAgICAgICBOb3RlOiBXZSBkb24ndCBjYWxsIFB5VHlwZV9DaGVja0V4YWN0IGFzIHRoYXQgYWxzbyBhbGxvd3Mgc3ViY2xhc3NlcyAqLworICAgIGlmIChtZXRhdHlwZSA9PSAmUHlUeXBlX1R5cGUpIHsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3Qgbmt3ZHMgPSBrd2RzID09IE5VTEwgPyAwIDogUHlEaWN0X1NpemUoa3dkcyk7CiAKLSAgICAgICAgaWYgKFB5VHlwZV9DaGVja0V4YWN0KG1ldGF0eXBlKSAmJiBuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKKyAgICAgICAgaWYgKG5hcmdzID09IDEgJiYgbmt3ZHMgPT0gMCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnggPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgICAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUoeCkpOwogICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBQeV9UWVBFKHgpOwpAQCAtMjI5Niw3ICsyMzE1LDcgQEAKICAgICAgICAgLyogU0YgYnVnIDQ3NTMyNyAtLSBpZiB0aGF0IGRpZG4ndCB0cmlnZ2VyLCB3ZSBuZWVkIDMKICAgICAgICAgICAgYXJndW1lbnRzLiBidXQgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGJlbG93IG1heSBnaXZlCiAgICAgICAgICAgIGEgbXNnIHNheWluZyB0eXBlKCkgbmVlZHMgZXhhY3RseSAzLiAqLwotICAgICAgICBpZiAobmFyZ3MgKyBua3dkcyAhPSAzKSB7CisgICAgICAgIGlmIChuYXJncyAhPSAzKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlKCkgdGFrZXMgMSBvciAzIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzA0LDEwICsyMzIzLDggQEAKICAgICB9CiAKICAgICAvKiBDaGVjayBhcmd1bWVudHM6IChuYW1lLCBiYXNlcywgZGljdCkgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiVU8hTyE6dHlwZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmYmFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmb3JpZ19kaWN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPIU8hOnR5cGUuX19uZXdfXyIsICZuYW1lLCAmUHlUdXBsZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFzZXMsICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yNTQ0LDcgKzI1NjEsNyBAQAogICAgIH0KICAgICBldC0+aHRfcXVhbG5hbWUgPSBxdWFsbmFtZSA/IHF1YWxuYW1lIDogZXQtPmh0X25hbWU7CiAgICAgUHlfSU5DUkVGKGV0LT5odF9xdWFsbmFtZSk7Ci0gICAgaWYgKHF1YWxuYW1lICE9IE5VTEwgJiYgUHlEaWN0X0RlbEl0ZW0oZGljdCwgUHlJZF9fX3F1YWxuYW1lX18ub2JqZWN0KSA8IDApCisgICAgaWYgKHF1YWxuYW1lICE9IE5VTEwgJiYgX1B5RGljdF9EZWxJdGVtSWQoZGljdCwgJlB5SWRfX19xdWFsbmFtZV9fKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBTZXQgdHBfZG9jIHRvIGEgY29weSBvZiBkaWN0WydfX2RvY19fJ10sIGlmIHRoZSBsYXR0ZXIgaXMgdGhlcmUKQEAgLTI1NTgsNyArMjU3NSw3IEBACiAgICAgICAgICAgICBjaGFyICpkb2Nfc3RyOwogICAgICAgICAgICAgY2hhciAqdHBfZG9jOwogCi0gICAgICAgICAgICBkb2Nfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhkb2MpOworICAgICAgICAgICAgZG9jX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgoZG9jKTsKICAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIC8qIFNpbGVudGx5IHRydW5jYXRlIHRoZSBkb2NzdHJpbmcgaWYgaXQgY29udGFpbnMgbnVsbCBieXRlcy4gKi8KQEAgLTI1ODcsMTIgKzI2MDQsMjYgQEAKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCisgICAgLyogU3BlY2lhbC1jYXNlIF9faW5pdF9zdWJjbGFzc19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCisgICAgICAgbWFrZSBpdCBhIGNsYXNzbWV0aG9kICovCisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIGlmICh0bXAgIT0gTlVMTCAmJiBQeUZ1bmN0aW9uX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgdG1wID0gUHlDbGFzc01ldGhvZF9OZXcodG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fLCB0bXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKwogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7CiAgICAgaWYgKGV0LT5odF9zbG90cyAhPSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuc2xvdHM7IGkrKywgbXArKykgewotICAgICAgICAgICAgbXAtPm5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKAorICAgICAgICAgICAgbXAtPm5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KAogICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oZXQtPmh0X3Nsb3RzLCBpKSk7CiAgICAgICAgICAgICBpZiAobXAtPm5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY1Niw2ICsyNjg3LDIxIEBACiAgICAgZWxzZQogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCisgICAgLyogc3RvcmUgdHlwZSBpbiBjbGFzcycgY2VsbCBpZiBvbmUgaXMgc3VwcGxpZWQgKi8KKyAgICBjZWxsID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19jbGFzc2NlbGxfXyk7CisgICAgaWYgKGNlbGwgIT0gTlVMTCkgeworICAgICAgICAvKiBBdCBsZWFzdCBvbmUgbWV0aG9kIHJlcXVpcmVzIGEgcmVmZXJlbmNlIHRvIGl0cyBkZWZpbmluZyBjbGFzcyAqLworICAgICAgICBpZiAoIVB5Q2VsbF9DaGVjayhjZWxsKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiX19jbGFzc2NlbGxfXyBtdXN0IGJlIGEgbm9ubG9jYWwgY2VsbCwgbm90ICUuMjAwUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShjZWxsKSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgKFB5T2JqZWN0ICopIHR5cGUpOworICAgICAgICBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjY3LDYgKzI3MTMsMTIgQEAKICAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKICAgICB9CiAKKyAgICBpZiAoc2V0X25hbWVzKHR5cGUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChpbml0X3N1YmNsYXNzKHR5cGUsIGt3ZHMpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdHlwZTsKIApAQCAtMjY3OCw3ICsyNzMwLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CitzdGF0aWMgY29uc3Qgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKICAgICAtMSwgLyogaW52YWxpZCBzbG90ICovCiAjaW5jbHVkZSAidHlwZXNsb3RzLmluYyIKIH07CkBAIC0yODAzLDEzICsyODU1LDE2IEBACiAgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLwogICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CiAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICBpbnQgZXJyOwogICAgICAgICBtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpOwogICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CisgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgImJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlIiwKQEAgLTM2MTEsNyArMzY2Niw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY2hhciogYXR0cikKK2NvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY29uc3QgY2hhciogYXR0cikKIHsKICAgICBQeVR5cGVPYmplY3QgKm5ld2Jhc2UsICpvbGRiYXNlOwogCkBAIC0zNzg3LDcgKzM4NDIsNyBAQAogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVR5cGVfR2V0U2xvdE5hbWVzKFB5VHlwZU9iamVjdCAqY2xzKQogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtMzg0MCw3ICszODk1LDcgQEAKICAgICByZXR1cm4gc2xvdG5hbWVzOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9HZXRTdGF0ZShQeU9iamVjdCAqb2JqLCBpbnQgcmVxdWlyZWQpCiB7CiAgICAgUHlPYmplY3QgKnN0YXRlOwpAQCAtMzg4Nyw2ICszOTQyLDI0IEBACiAgICAgICAgIH0KIAogICAgICAgICBhc3NlcnQoc2xvdG5hbWVzID09IFB5X05vbmUgfHwgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpOworICAgICAgICBpZiAocmVxdWlyZWQpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYmFzaWNzaXplID0gUHlCYXNlT2JqZWN0X1R5cGUudHBfYmFzaWNzaXplOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfZGljdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopICogUHlfU0laRShzbG90bmFtZXMpOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfYmFzaWNzaXplID4gYmFzaWNzaXplKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RuYW1lcyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSAmJiBQeV9TSVpFKHNsb3RuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2xvdHM7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHNsb3RuYW1lc19zaXplLCBpOwpAQCAtMzk0MSw3ICs0MDE0LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogSWYgd2UgZm91bmQgc29tZSBzbG90IGF0dHJpYnV0ZXMsIHBhY2sgdGhlbSBpbiBhIHR1cGxlIGFsb25nCi0gICAgICAgICAgICAgICB0aGUgb3JnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KICAgICAgICAgICAgIGlmIChQeURpY3RfU2l6ZShzbG90cykgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlMjsKIApAQCAtMzk2OCw3ICs0MDQxLDcgQEAKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKiphcmdzLCBQeU9iamVjdCAqKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqZ2V0bmV3YXJncywgKmdldG5ld2FyZ3NfZXg7CkBAIC00MDY0LDcgKzQxMzcsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBfUHlPYmplY3RfR2V0SXRlbXNJdGVyKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICoqbGlzdGl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmRpY3RpdGVtcykKIHsKQEAgLTQxMTAsNyArNDE4Myw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1yZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtNDE2Myw3ICs0MjM2LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgZWxzZSBpZiAoYXJncyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwogCiAgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CkBAIC00MTgyLDEzICs0MjU1LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCB1c2UgcHJvdG9jb2wgNCBvciBncmVhdGVyIHRvIGNvcHkgdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudHMuIik7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgLyogYXJncyA9PSBOVUxMICovCiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQyMzYsNyArNDMwNSw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcsICpyZXM7CiAKICAgICBpZiAocHJvdG8gPj0gMikKLSAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZiwgcHJvdG8pOworICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQzMTksNiArNDM4OCwxOCBAQAogIm92ZXJyaWRlcyB0aGUgbm9ybWFsIGFsZ29yaXRobSAoYW5kIHRoZSBvdXRjb21lIGlzIGNhY2hlZCkuXG4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9pbml0X3N1YmNsYXNzKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihvYmplY3RfaW5pdF9zdWJjbGFzc19kb2MsCisiVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBjbGFzcyBpcyBzdWJjbGFzc2VkLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4gSXQgbWF5IGJlXG4iCisib3ZlcnJpZGRlbiB0byBleHRlbmQgc3ViY2xhc3Nlcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X2Zvcm1hdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOwpAQCAtNDQxMiw2ICs0NDkzLDggQEAKICAgICAgUHlEb2NfU1RSKCJoZWxwZXIgZm9yIHBpY2tsZSIpfSwKICAgICB7Il9fc3ViY2xhc3Nob29rX18iLCBvYmplY3Rfc3ViY2xhc3Nob29rLCBNRVRIX0NMQVNTIHwgTUVUSF9WQVJBUkdTLAogICAgICBvYmplY3Rfc3ViY2xhc3Nob29rX2RvY30sCisgICAgeyJfX2luaXRfc3ViY2xhc3NfXyIsIG9iamVjdF9pbml0X3N1YmNsYXNzLCBNRVRIX0NMQVNTIHwgTUVUSF9OT0FSR1MsCisgICAgIG9iamVjdF9pbml0X3N1YmNsYXNzX2RvY30sCiAgICAgeyJfX2Zvcm1hdF9fIiwgb2JqZWN0X2Zvcm1hdCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKQEAgLTUzNjMsNyArNTQ0Niw3IEBACiAvKiBIZWxwZXIgdG8gY2hlY2sgZm9yIG9iamVjdC5fX3NldGF0dHJfXyBvciBfX2RlbGF0dHJfXyBhcHBsaWVkIHRvIGEgdHlwZS4KICAgIFRoaXMgaXMgY2FsbGVkIHRoZSBDYXJsbyBWZXJyZSBoYWNrIGFmdGVyIGl0cyBkaXNjb3ZlcmVyLiAqLwogc3RhdGljIGludAotaGFja2NoZWNrKFB5T2JqZWN0ICpzZWxmLCBzZXRhdHRyb2Z1bmMgZnVuYywgY2hhciAqd2hhdCkKK2hhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNvbnN0IGNoYXIgKndoYXQpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKICAgICB3aGlsZSAodHlwZSAmJiB0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCkBAIC01NjUwLDcgKzU3MzMsNyBAQAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYpIFwKIHsgXAogICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCkiKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsIE5VTEwpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKQEAgLTU3NDMsNyArNTgyNiw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbGVuX18sICIoKSIpOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCBOVUxMKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTU3NjQsMzggKzU4NDcsMzkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCiAgICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgJlB5SWRfX19nZXRpdGVtX18pOwotICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKChmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmMgPSBmKGZ1bmMsIHNlbGYsIChQeU9iamVjdCAqKShQeV9UWVBFKHNlbGYpKSk7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgaWYgKGl2YWwgIT0gTlVMTCkgewotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgaXZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoaXZhbCk7Ci0gICAgUHlfWERFQ1JFRihmdW5jKTsKKworICAgIGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQ7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7CisgICAgaWYgKGl2YWwgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBpdmFsKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgUHlfREVDUkVGKGl2YWwpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNTgxNywxOSArNTkwMSwyMCBAQAogc3RhdGljIGludAogc2xvdF9zcV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzLCAqYXJnczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIoX19jb250YWluc19fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKKyAgICBpZiAoZnVuYyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXMgPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtNTkwMCw0NCArNTk4NSw1NCBAQAogc3RhdGljIGludAogc2xvdF9uYl9ib29sKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnczsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKmZ1bmMsICp2YWx1ZTsKKyAgICBpbnQgcmVzdWx0OwogICAgIGludCB1c2luZ19sZW4gPSAwOwogICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19ib29sX18pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwotICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICAgICAgdXNpbmdfbGVuID0gMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICh1c2luZ19sZW4pIHsKLSAgICAgICAgICAgICAgICAvKiBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh0ZW1wKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Jvb2xfXyBzaG91bGQgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKworICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworICAgIGlmICh1c2luZ19sZW4pIHsKKyAgICAgICAgLyogYm9vbCB0eXBlIGVuZm9yY2VkIGJ5IHNsb3RfbmJfbGVuICovCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCisgICAgICAgICAgICAgICAgICAgICAiYm9vbCwgcmV0dXJuZWQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgcmV0dXJuIC0xOwogfQogCiAKQEAgLTU5NDUsNyArNjA0MCw3IEBACiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewogICAgIF9QeV9JREVOVElGSUVSKF9faW5kZXhfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgTlVMTCk7CiB9CiAKIApAQCAtNjE4MiwyMCArNjI3NywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgb3RoZXIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJlcyA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG90aGVyKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTYyMDcsMTYgKzYyOTYsMjAgQEAKICAgICBfUHlfSURFTlRJRklFUihfX2l0ZXJfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJnczsKLSAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CisKICAgICBQeUVycl9DbGVhcigpOwogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC02MjMzLDcgKzYzMjYsNyBAQAogc2xvdF90cF9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19uZXh0X18sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjMwMiwyOSArNjM5NSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jOwotICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXN1bHQ7CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9fX25ld19fKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih0eXBlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKXR5cGUpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpKzEsIHgpOwogICAgIH0KLSAgICB4ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIChQeU9iamVjdCAqKXR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICByZXR1cm4geDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjkyNyw2ICs3MDA3LDcyIEBACiAgICAgfQogfQogCisvKiBDYWxsIF9fc2V0X25hbWVfXyBvbiBhbGwgZGVzY3JpcHRvcnMgaW4gYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAorc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZXNfdG9fc2V0LCAqa2V5LCAqdmFsdWUsICpzZXRfbmFtZSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgbmFtZXNfdG9fc2V0ID0gUHlEaWN0X0NvcHkodHlwZS0+dHBfZGljdCk7CisgICAgaWYgKG5hbWVzX3RvX3NldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB3aGlsZSAoUHlEaWN0X05leHQobmFtZXNfdG9fc2V0LCAmaSwgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBzZXRfbmFtZSA9IGxvb2t1cF9tYXliZSh2YWx1ZSwgJlB5SWRfX19zZXRfbmFtZV9fKTsKKyAgICAgICAgaWYgKHNldF9uYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2V0X25hbWUsIHR5cGUsIGtleSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2V0X25hbWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJFcnJvciBjYWxsaW5nIF9fc2V0X25hbWVfXyBvbiAnJS4xMDBzJyBpbnN0YW5jZSAlUiAiCisgICAgICAgICAgICAgICAgICAgICJpbiAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5vYl90eXBlLT50cF9uYW1lLCBrZXksIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lc190b19zZXQpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXNfdG9fc2V0KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0RFQ1JFRihuYW1lc190b19zZXQpOworICAgIHJldHVybiAwOworfQorCisvKiBDYWxsIF9faW5pdF9zdWJjbGFzc19fIG9uIHRoZSBwYXJlbnQgb2YgYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAoraW5pdF9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpzdXBlciwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmFyZ3NbMl0gPSB7KFB5T2JqZWN0ICopdHlwZSwgKFB5T2JqZWN0ICopdHlwZX07CisKKyAgICBzdXBlciA9IF9QeU9iamVjdF9GYXN0Q2FsbCgoUHlPYmplY3QgKikmUHlTdXBlcl9UeXBlLCBhcmdzLCAyKTsKKyAgICBpZiAoc3VwZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3VwZXIsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBQeV9ERUNSRUYoc3VwZXIpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2RzKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogcmVjdXJzZV9kb3duX3N1YmNsYXNzZXMoKSBhbmQgdXBkYXRlX3N1YmNsYXNzZXMoKSBhcmUgbXV0dWFsbHkKICAgIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdG8gY2FsbCBhIGNhbGxiYWNrIGZvciBhbGwgc3ViY2xhc3NlcywKICAgIGJ1dCByZWZyYWluaW5nIGZyb20gcmVjdXJzaW5nIGludG8gc3ViY2xhc3NlcyB0aGF0IGRlZmluZSAnbmFtZScuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IDU3ODc4MzAuLmIwYzQxMGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0xNjIsNiArMTYzLDE0IEBACiAgICAgICAgICAgICAqX3RvKysgPSAodG9fdHlwZSkgKl9pdGVyKys7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCisjaWZkZWYgTVNfV0lORE9XUworICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKKyNlbHNlCisgICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKKyNlbmRpZgorCiAvKiBUaGlzIGRpY3Rpb25hcnkgaG9sZHMgYWxsIGludGVybmVkIHVuaWNvZGUgc3RyaW5ncy4gIE5vdGUgdGhhdCByZWZlcmVuY2VzCiAgICB0byBzdHJpbmdzIGluIHRoaXMgZGljdGlvbmFyeSBhcmUgKm5vdCogY291bnRlZCBpbiB0aGUgc3RyaW5nJ3Mgb2JfcmVmY250LgogICAgV2hlbiB0aGUgaW50ZXJuZWQgc3RyaW5nIHJlYWNoZXMgYSByZWZjbnQgb2YgMCB0aGUgc3RyaW5nIGRlYWxsb2NhdGlvbgpAQCAtMTk1LDcgKzIwNCw3IEBACiAgICAgfSB3aGlsZSAoMCkKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpOwogCiAvKiBMaXN0IG9mIHN0YXRpYyBzdHJpbmdzLiAqLwpAQCAtMjYzLDcgKzI3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKIC8qIFNhbWUgZm9yIGxpbmVicmVha3MgKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKIC8qICAgICAgICAgMHgwMDBBLCAqIExJTkUgRkVFRCAqLwogLyogICAgICAgICAweDAwMEIsICogTElORSBUQUJVTEFUSU9OICovCkBAIC0yOTIsNiArMzAxLDQ1IEBACiAKICNpbmNsdWRlICJjbGluaWMvdW5pY29kZW9iamVjdC5jLmgiCiAKK3R5cGVkZWYgZW51bSB7CisgICAgX1B5X0VSUk9SX1VOS05PV049MCwKKyAgICBfUHlfRVJST1JfU1RSSUNULAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEUsCisgICAgX1B5X0VSUk9SX1JFUExBQ0UsCisgICAgX1B5X0VSUk9SX0lHTk9SRSwKKyAgICBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfU1VSUk9HQVRFUEFTUywKKyAgICBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0UsCisgICAgX1B5X0VSUk9SX09USEVSCit9IF9QeV9lcnJvcl9oYW5kbGVyOworCitzdGF0aWMgX1B5X2Vycm9yX2hhbmRsZXIKK2dldF9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVFJJQ1Q7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1JFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0lHTk9SRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJiYWNrc2xhc2hyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlcGFzcyIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOworICAgIH0KKyAgICByZXR1cm4gX1B5X0VSUk9SX09USEVSOworfQorCiAvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KICAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQpAQCAtNTIxLDYgKzU2OSwxMjkgQEAKICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCitiYWNrc2xhc2hyZXBsYWNlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDB4MTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMjsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgaW5jciA9IDIrODsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgKnN0cisrID0gJ1xcJzsKKyAgICAgICAgaWYgKGNoID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICdVJzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjI4KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjQpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yMCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjE2KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTIpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwKSB7CisgICAgICAgICAgICAqc3RyKysgPSAndSc7CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnN0cisrID0gJ3gnOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj40KSYweGZdOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbY2gmMHhmXTsKKyAgICB9CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJ4bWxjaGFycmVmcmVwbGFjZSIgZXJyb3IgaGFuZGxlciBmb3IgOC1iaXQgZW5jb2RpbmdzOgorICAgQVNDSUksIExhdGluMSwgVVRGLTgsIGV0Yy4gKi8KK3N0YXRpYyBjaGFyKgoreG1sY2hhcnJlZnJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDEwKQorICAgICAgICAgICAgaW5jciA9IDIrMSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrMysxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNCsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNisxOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis3KzE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplICs9IGluY3I7CisgICAgfQorCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtNTQ5LDcgKzcyMCw3IEBACiAgICAgKChjaCkgPCAxMjhVID8gYXNjaWlfbGluZWJyZWFrWyhjaCldIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChCTE9PTShibG9vbV9saW5lYnJlYWssIChjaCkpICYmIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoY2gpKSkKIAotUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spCitzdGF0aWMgaW5saW5lIEJMT09NX01BU0sKIG1ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKICNkZWZpbmUgQkxPT01fVVBEQVRFKFRZUEUsIE1BU0ssIFBUUiwgTEVOKSAgICAgICAgICAgICBcCkBAIC01ODcsNiArNzU4LDE4IEBACiAjdW5kZWYgQkxPT01fVVBEQVRFCiB9CiAKK3N0YXRpYyBpbnQKK2Vuc3VyZV91bmljb2RlKFB5T2JqZWN0ICpvYmopCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEWShvYmopOworfQorCiAvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIAogI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgpAQCAtNjQzLDMxICs4MjYsMzEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CitmaW5kY2hhcihjb25zdCB2b2lkICpzLCBpbnQga2luZCwKKyAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKKyAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaW50IG1vZGUgPSAoZGlyZWN0aW9uID09IDEpID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0KICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgotICAgICAgICB7Ci0gICAgICAgICAgICBQeV9VQ1MxIGNoMSA9IChQeV9VQ1MxKSBjaDsKLSAgICAgICAgICAgIGlmIChjaDEgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMSAqKSBzLCBzaXplLCAmY2gxLCAxLCAwLCBtb2RlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKChQeV9VQ1MxKSBjaCAhPSBjaCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kX2NoYXIoKFB5X1VDUzEgKikgcywgc2l6ZSwgKFB5X1VDUzEpIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfcmZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOwogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gKFB5X1VDUzIpIGNoOwotICAgICAgICAgICAgaWYgKGNoMiA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9mYXN0c2VhcmNoKChQeV9VQ1MyICopIHMsIHNpemUsICZjaDIsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzIpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2ZpbmRfY2hhcigoUHlfVUNTMiAqKSBzLCBzaXplLCAoUHlfVUNTMikgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9yZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKLSAgICAgICAgcmV0dXJuIHVjczRsaWJfZmFzdHNlYXJjaCgoUHlfVUNTNCAqKSBzLCBzaXplLCAmY2gsIDEsIDAsIG1vZGUpOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3JmaW5kX2NoYXIoKFB5X1VDUzQgKikgcywgc2l6ZSwgY2gpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtODY1LDcgKzEwNDgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNvcHlfbGVuZ3RoID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKICAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4oY29weV9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKKyAgICAgICAgbWVtY3B5KF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gdzsKICAgICB9CkBAIC0xMjUyLDcgKzE0MzUsNyBAQAogICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgUHlfTUVNQ1BZKChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAorICAgICAgICBtZW1jcHkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCiAgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKICAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CiAgICAgfQpAQCAtMTg0NSw3ICsyMDI4LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKICNpZiBQeV9VTklDT0RFX1NJWkUgPT0gMgotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CiAjZWxzZQogICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKQEAgLTE4NTgsNyArMjA0MSw3IEBACiAgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KHUsIHUgKyBzaXplLCB1bmljb2RlKTsKICNlbHNlCiAgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKLSAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xOTYwLDcgKzIxNDMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitzdGF0aWMgaW5saW5lIFB5X1VDUzQKIGFsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQogewogICAgIGlmIChtYXhjaGFyIDw9IDEyNykKQEAgLTIxNjksNyArMjM1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChjb3B5KSA9PSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CiAKLSAgICBQeV9NRU1DUFkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKICAgICByZXR1cm4gY29weTsKQEAgLTIyNzUsNyArMjQ1OCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFB5X01FTUNQWSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIG1lbWNweSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CiAgICAgfQogICAgIGlmIChjb3B5X251bGwpCiAgICAgICAgIHRhcmdldFtsZW5dID0gMDsKQEAgLTI0NTgsMTMgKzI2NDEsMTEgQEAKICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKICAgICAgICAgICAgICsrZjsKICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCiAgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JyB8fCBmWzJdID09ICdpJykpIHsKICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7CiAgICAgICAgICAgICBmICs9IDI7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH0KICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwogICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpKSB7CkBAIC0yNTAyLDExICsyNjgzLDkgQEAKICAgICAgICAgICAgIGlmIChsb25nZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgInUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgbG9uZyBsb25nKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKQEAgLTI1MjEsMTEgKzI3MDAsOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsaSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFB5X3NzaXplX3QpKTsKQEAgLTI3MDEsOSArMjg3OCw4IEBACiAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzdHJsZW4oZm9ybWF0KSArIDEwMDsKICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIC8qIHZhX2xpc3QgbWF5IGJlIGFuIGFycmF5IChvZiAxIGl0ZW0pIG9uIHNvbWUgcGxhdGZvcm1zIChleDogQU1ENjQpLgotICAgICAgIENvcHkgaXQgdG8gYmUgYWJsZSB0byBwYXNzIGEgcmVmZXJlbmNlIHRvIGEgc3ViZnVuY3Rpb24uICovCi0gICAgUHlfVkFfQ09QWSh2YXJnczIsIHZhcmdzKTsKKyAgICAvLyBDb3B5IHZhcmFncyB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4KKyAgICB2YV9jb3B5KHZhcmdzMiwgdmFyZ3MpOwogCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKQEAgLTI3MzksOSArMjkxNSwxMSBAQAogICAgICAgICAgICAgZiA9IHA7CiAgICAgICAgIH0KICAgICB9CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIGZhaWw6CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMjc5MCw3ICsyOTY4LDcgQEAKICAgICAgICAgICAgIHNpemUgPSByZXMgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBzaXplOwotICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIG1lbWNweSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQpAQCAtMjkwNyw3ICszMDg1LDcgQEAKICAgICAvKiBSZXRyaWV2ZSBhIGJ5dGVzIGJ1ZmZlciB2aWV3IHRocm91Z2ggdGhlIFBFUCAzMTE4IGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJmJ1ZmZlciwgUHlCVUZfU0lNUExFKSA8IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb2VyY2luZyB0byBzdHI6IG5lZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yOTIyLDkgKzMxMDAsOSBAQAogICAgIHJldHVybiB2OwogfQogCi0vKiBDb252ZXJ0IGVuY29kaW5nIHRvIGxvd2VyIGNhc2UgYW5kIHJlcGxhY2UgJ18nIHdpdGggJy0nIGluIG9yZGVyIHRvCi0gICBjYXRjaCBlLmcuIFVURl84LiBSZXR1cm4gMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLAotICAgMSBvbiBzdWNjZXNzLiAqLworLyogTm9ybWFsaXplIGFuIGVuY29kaW5nIG5hbWU6IHNpbWlsYXIgdG8gZW5jb2RpbmdzLm5vcm1hbGl6ZV9lbmNvZGluZygpLCBidXQKKyAgIGFsc28gY29udmVydCB0byBsb3dlcmNhc2UuIFJldHVybiAxIG9uIHN1Y2Nlc3MsIG9yIDAgb24gZXJyb3IgKGVuY29kaW5nIGlzCisgICBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSkuICovCiBpbnQKIF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmxvd2VyLApAQCAtMjkzMywzMCArMzExMSwzOSBAQAogICAgIGNvbnN0IGNoYXIgKmU7CiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKKyAgICBpbnQgcHVuY3Q7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiA2ID09IHN0cmxlbigidXRmLTgiKSArIDEgKi8KLSAgICAgICAgaWYgKGxvd2VyX2xlbiA8IDYpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgc3RyY3B5KGxvd2VyLCAidXRmLTgiKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGFzc2VydChlbmNvZGluZyAhPSBOVUxMKTsKKwogICAgIGUgPSBlbmNvZGluZzsKICAgICBsID0gbG93ZXI7CiAgICAgbF9lbmQgPSAmbG93ZXJbbG93ZXJfbGVuIC0gMV07Ci0gICAgd2hpbGUgKCplKSB7Ci0gICAgICAgIGlmIChsID09IGxfZW5kKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKCplKSkgewotICAgICAgICAgICAgKmwrKyA9IFB5X1RPTE9XRVIoKmUrKyk7CisgICAgcHVuY3QgPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGNoYXIgYyA9ICplOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqZSA9PSAnXycpIHsKLSAgICAgICAgICAgICpsKysgPSAnLSc7Ci0gICAgICAgICAgICBlKys7CisKKyAgICAgICAgaWYgKFB5X0lTQUxOVU0oYykgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChwdW5jdCAmJiBsICE9IGxvd2VyKSB7CisgICAgICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpsKysgPSAnXyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdW5jdCA9IDA7CisKKyAgICAgICAgICAgIGlmIChsID09IGxfZW5kKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUihjKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICpsKysgPSAqZSsrOworICAgICAgICAgICAgcHVuY3QgPSAxOwogICAgICAgICB9CisKKyAgICAgICAgZSsrOwogICAgIH0KICAgICAqbCA9ICdcMCc7CiAgICAgcmV0dXJuIDE7CkBAIC0yOTcwLDI4ICszMTU3LDUxIEBACiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEwsICp1bmljb2RlOwogICAgIFB5X2J1ZmZlciBpbmZvOwotICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KKyAgICBjaGFyIGJ1Zmxvd2VyWzExXTsgICAvKiBzdHJsZW4oImlzby04ODU5LTFcMCIpID09IDExLCBsb25nZXN0IHNob3J0Y3V0ICovCisKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwotICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc284ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7Ci0jZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVBU0NJSShzLCBzaXplLCBlcnJvcnMpOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMTYiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMzIiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBidWZsb3dlciwgc2l6ZW9mKGJ1Zmxvd2VyKSkpIHsKKyAgICAgICAgY2hhciAqbG93ZXIgPSBidWZsb3dlcjsKKworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChsb3dlclswXSA9PSAndScgJiYgbG93ZXJbMV0gPT0gJ3QnICYmIGxvd2VyWzJdID09ICdmJykgeworICAgICAgICAgICAgbG93ZXIgKz0gMzsKKyAgICAgICAgICAgIGlmICgqbG93ZXIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgLyogTWF0Y2ggInV0ZjgiIGFuZCAidXRmXzgiICovCisgICAgICAgICAgICAgICAgbG93ZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd2VyWzBdID09ICc4JyAmJiBsb3dlclsxXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2VuZGlmCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRGVjb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTMwMzEsNiArMzI0MSwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KCkgaXMgZGVwcmVjYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgInVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSBmcm9tIHN0ciIsIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKQEAgLTMwNTAsNiArMzI2NSwxMSBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5Q29kZWNfRGVjb2RlKCkgdG8gZGVjb2RlIGZyb20gc3RyIHRvIHN0ciIsIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKQEAgLTMxMDAsNiArMzMyMCwxMiBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCgpIGlzIGRlcHJlY2F0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ1c2UgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIHRvIGVuY29kZSBmcm9tIHN0ciB0byBieXRlcyAiCisgICAgICAgICAgICAgICAgICAgICAib3IgUHlDb2RlY19FbmNvZGUoKSBmb3IgZ2VuZXJpYyBlbmNvZGluZyIsIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKQEAgLTMxNjMsMjQgKzMzODksMjIgQEAKIHN0YXRpYyBpbnQKIGxvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCiB7Ci0gICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOwogICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKLSAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAxOwogICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCisgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKLSAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKLSAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICByZXR1cm4gLTE7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTMyOTYsMTAgKzM1MjAsOCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzMxNCwxMCArMzUzNiwxMCBAQAogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzMyOCwzNCArMzU1MCw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvXzg4NTlfMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgIH0KKwogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMycgJiYgbG93ZXJbMV0gPT0gJzInICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih1bmljb2RlLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwCisgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAidXNfYXNjaWkiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAibGF0aW5fMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzb184ODU5XzEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJpc284ODU5XzEiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCkBAIC0zNDA3LDYgKzM2NTEsMTEgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKCkgaXMgZGVwcmVjYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgInVzZSBQeUNvZGVjX0VuY29kZSgpIHRvIGVuY29kZSBmcm9tIHN0ciB0byBzdHIiLCAxKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogCkBAIC0zNTgwLDEwICszODI5LDggQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiLCBOVUxMKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycywgTlVMTCk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzU5OCwxMCArMzg0NSwxMCBAQAogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShzLCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zNjEwLDYgKzM4NTcsNyBAQAogaW50CiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIHZvaWQgKmRhdGE7CkBAIC0zNjE4LDI0ICszODY2LDIyIEBACiAgICAgICAgICooUHlPYmplY3QqKilhZGRyID0gTlVMTDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICBwYXRoID0gUHlPU19GU1BhdGgoYXJnKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXJnID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgaWYgKCFhcmcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG91dHB1dCkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgeyAgLy8gUHlPU19GU1BhdGgoKSBndWFyYW50ZWVzIGl0cyByZXR1cm5lZCB2YWx1ZSBpcyBieXRlcyBvciBzdHIuCisgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG91dHB1dCkpOwogICAgIH0KKwogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG91dHB1dCk7CiAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG91dHB1dCk7CiAgICAgaWYgKChzaXplX3Qpc2l6ZSAhPSBzdHJsZW4oZGF0YSkpIHsKQEAgLTM2NTEsMzYgKzM4OTcsNjAgQEAKIGludAogUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIGludCBpc19idWZmZXIgPSAwOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKCooUHlPYmplY3QqKilhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisKKyAgICBpc19idWZmZXIgPSBQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpOworICAgIGlmICghaXNfYnVmZmVyKSB7CisgICAgICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpKSB7Ci0gICAgICAgIGFyZyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aCA9IGFyZzsKKyAgICAgICAgUHlfSU5DUkVGKGFyZyk7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcoYXJnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShhcmcpKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICB9CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkgfHwgaXNfYnVmZmVyKSB7CisgICAgICAgIFB5T2JqZWN0ICpwYXRoX2J5dGVzID0gTlVMTDsKKworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socGF0aCkgJiYKKyAgICAgICAgICAgIFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZGVjb2RlciBmYWlsZWQgdG8gcmV0dXJuIHVuaWNvZGUiKTsKKyAgICAgICAgfQorICAgICAgICBwYXRoX2J5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KHBhdGgpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIGlmICghcGF0aF9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcocGF0aF9ieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocGF0aF9ieXRlcykpOworICAgICAgICBQeV9ERUNSRUYocGF0aF9ieXRlcyk7CisgICAgICAgIGlmICghb3V0cHV0KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcgb3IgYnl0ZXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkgewpAQCAtMzcxMiw3ICszOTgyLDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CiAgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOwotICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdHJpY3QiKTsKKyAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpICsgMSk7CkBAIC0zNzIyLDcgKzM5OTIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSArIDEpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtMzk2Miw3ICs0MjMyLDcgQEAKICAgICBQeV9DTEVBUigqZXhjZXB0aW9uT2JqZWN0KTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrIGhlbHBlcjoKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBpZiBubyBleGNlcHRpb24gb2NjdXJyZWQsIGNvcHkgdGhlIHJlcGxhY2VtZW50IHRvIHRoZSBvdXRwdXQKQEAgLTM5NzgsNyArNDI0OCw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7CkBAIC00MDc2LDcgKzQzNDYsNyBAQAogICAgIFB5X1hERUNSRUYocmVzdHVwbGUpOwogICAgIHJldHVybiAtMTsKIH0KLSNlbmRpZiAgIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgaW50CiB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCkBAIC00MDg2LDcgKzQzNTYsNyBAQAogICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAogICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciAvKiBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zICovKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQ2OTIsOCArNDk2Miw5IEBACiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKQEAgLTQ3MTgsNiArNDk4OSw3IEBACiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGtpbmQgPSB3cml0ZXIua2luZDsKKwogICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh3cml0ZXIuYnVmZmVyKSkKICAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsIHdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcyk7CkBAIC00NzU2LDMzICs1MDI4LDY1IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgMHhmZmZkKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgmd3JpdGVyLCBQeVVuaWNvZGVfMkJZVEVfS0lORCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGZvciAoaT1zdGFydGlucG9zOyBpPGVuZGlucG9zOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IChQeV9VQ1M0KSh1bnNpZ25lZCBjaGFyKShzdGFydHNbaV0pOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoICsgMHhkYzAwKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCisgICAgICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogICAgIH0KIAogRW5kOgogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gcyAtIHN0YXJ0czsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCi0jaWZkZWYgX19BUFBMRV9fCisjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19BTkRST0lEX18pCiAKIC8qIFNpbXBsaWZpZWQgVVRGLTggZGVjb2RlciB1c2luZyBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwKLSAgIHVzZWQgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIE1hYyBPUyBYLgorICAgdXNlZCB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gTWFjIE9TIFggYW5kIEFuZHJvaWQuCiAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKICAgIFB5TWVtX1Jhd0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpLCBvciBOVUxMIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiAqLwpAQCAtNDgzMyw3ICs1MTM3LDcgQEAKICAgICByZXR1cm4gdW5pY29kZTsKIH0KIAotI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworI2VuZGlmIC8qIF9fQVBQTEVfXyBvciBfX0FORFJPSURfXyAqLwogCiAvKiBQcmltYXJ5IGludGVybmFsIGZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgdXRmOCBlbmNvZGVkIGJ5dGVzIG9iamVjdHMuCiAKQEAgLTUwNjUsNyArNTM2OSw3IEBACiAgICAgY29uc3Qgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICBQWV9VSU5UMzJfVCAqb3V0OworICAgIHVpbnQzMl90ICpvdXQ7CiAjaWYgUFlfTElUVExFX0VORElBTgogICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPD0gMDsKICNlbHNlCkBAIC01MDk2LDcgKzU0MDAsNyBAQAogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyA0LWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDQpKTsKLSAgICBvdXQgPSAoUFlfVUlOVDMyX1QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICBvdXQgPSAodWludDMyX3QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAoYnl0ZW9yZGVyID09IDApCiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKICAgICBpZiAobGVuID09IDApCkBAIC01MTYyLDcgKzU0NjYsNyBAQAogCiAgICAgICAgIC8qIGZvdXIgYnl0ZXMgYXJlIHJlc2VydmVkIGZvciBlYWNoIHN1cnJvZ2F0ZSAqLwogICAgICAgICBpZiAobW9yZXVuaXRzID4gMSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBvdXQgLSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKHVpbnQzMl90KikgUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG1vcmVieXRlcyA9IDQgKiAobW9yZXVuaXRzIC0gMSk7CiAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2KSA+IFBZX1NTSVpFX1RfTUFYIC0gbW9yZWJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtNTE3MSwxMSArNTQ3NSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgUHlCeXRlc19HRVRfU0laRSh2KSArIG1vcmVieXRlcykgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBvdXQgPSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKKyAgICAgICAgICAgIG91dCA9ICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKICAgICAgICAgICAgIG91dCArPSBtb3JldW5pdHM7CiAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CkBAIC01NDI2LDM2ICs1NzMwLDQ1IEBACiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKICAgICAgICAgY29uc3QgUHlfVUNTNCAqaW4gPSAoY29uc3QgUHlfVUNTNCAqKWRhdGE7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmVuZCA9IGluICsgbGVuOwotICAgICAgICB3aGlsZSAoaW4gPCBlbmQpCi0gICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIHBhaXJzKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KICAgICBuc2l6ZSA9IGxlbiArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuc2l6ZSAqIDIpOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDItYnl0ZXMgYWxpZ25lZCAqLwogICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgMikpOwogICAgIG91dCA9ICh1bnNpZ25lZCBzaG9ydCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGlmIChieXRlb3JkZXIgPT0gMCkKKyAgICBpZiAoYnl0ZW9yZGVyID09IDApIHsKICAgICAgICAgKm91dCsrID0gMHhGRUZGOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICB1Y3MxbGliX3V0ZjE2X2VuY29kZSgoY29uc3QgUHlfVUNTMSAqKWRhdGEsIGxlbiwgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIAotICAgIGlmIChieXRlb3JkZXIgPCAwKQorICAgIGlmIChieXRlb3JkZXIgPCAwKSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNi1sZSI7Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID4gMCkKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZW9yZGVyID4gMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtYmUiOwotICAgIGVsc2UKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNiI7CisgICAgfQogCiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAocG9zIDwgbGVuKSB7CkBAIC01NTE4LDcgKzU4MzEsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKICAgICAgICAgICAgIG91dCArPSBtb3JldW5pdHM7CiAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CkBAIC01NTcxLDI4MSArNTg4NCwyMjggQEAKIAogLyogLS0tIFVuaWNvZGUgRXNjYXBlIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUsIGRldGVybWluZXMKLSAgIGlmIGFsbCB0aGUgZXNjYXBlcyBpbiB0aGUgc3RyaW5nIG1ha2UgaXQgc3RpbGwgYSB2YWxpZCBBU0NJSSBzdHJpbmcuCi0gICBSZXR1cm5zIC0xIGlmIGFueSBlc2NhcGVzIHdlcmUgZm91bmQgd2hpY2ggY2F1c2UgdGhlIHN0cmluZyB0bwotICAgcG9wIG91dCBvZiBBU0NJSSByYW5nZS4gIE90aGVyd2lzZSByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlCi0gICByZXF1aXJlZCBidWZmZXIgdG8gaG9sZCB0aGUgc3RyaW5nLgotICAgKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1sZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXM7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW5kID0gcCArIHNpemU7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOwotCi0gICAgaWYgKHNpemUgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBmb3IgKDsgcCA8IGVuZDsgKytwKSB7Ci0gICAgICAgIGlmICgqcCA+IDEyNykgewotICAgICAgICAgICAgLyogTm9uLUFTQ0lJICovCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKnAgIT0gJ1xcJykgewotICAgICAgICAgICAgLyogTm9ybWFsIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBCYWNrc2xhc2gtZXNjYXBlLCBjaGVjayBuZXh0IGNoYXIgKi8KLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIC8qIEVzY2FwZSBzZXF1ZW5jZSByZWFjaGVzIHRpbGwgZW5kIG9mIHN0cmluZyBvcgotICAgICAgICAgICAgICAgbm9uLUFTQ0lJIGZvbGxvdy11cC4gKi8KLSAgICAgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCA+IDEyNykKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpwKSB7Ci0gICAgICAgICAgICBjYXNlICdcbic6Ci0gICAgICAgICAgICAgICAgLyogYmFja3NsYXNoICsgXG4gcmVzdWx0IGluIHplcm8gY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcJyc6IGNhc2UgJ1wiJzoKLSAgICAgICAgICAgIGNhc2UgJ2InOiBjYXNlICdmJzogY2FzZSAndCc6Ci0gICAgICAgICAgICBjYXNlICduJzogY2FzZSAncic6IGNhc2UgJ3YnOiBjYXNlICdhJzoKLSAgICAgICAgICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgotICAgICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6Ci0gICAgICAgICAgICBjYXNlICd4JzogY2FzZSAndSc6IGNhc2UgJ1UnOiBjYXNlICdOJzoKLSAgICAgICAgICAgICAgICAvKiB0aGVzZSBkbyBub3QgZ3VhcmFudGVlIEFTQ0lJIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8qIGNvdW50IHRoZSBiYWNrc2xhc2ggKyB0aGUgb3RoZXIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAgICAgbGVuZ3RoICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogc3RhdGljIF9QeVVuaWNvZGVfTmFtZV9DQVBJICp1Y25oYXNoX0NBUEkgPSBOVUxMOwogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZmlyc3RfaW52YWxpZF9lc2NhcGUpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY2hhciogbWVzc2FnZTsKLSAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgbGVuID0gbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKHMsIHNpemUpOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICAvLyBzbyB3ZSBjYW4gcmVtZW1iZXIgaWYgd2UndmUgc2VlbiBhbiBpbnZhbGlkIGVzY2FwZSBjaGFyIG9yIG5vdAorICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9IE5VTEw7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwotCi0gICAgLyogQWZ0ZXIgbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKCkgdGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZXMsCi0gICAgICAgZWl0aGVyIHRoZSBzdHJpbmcgaXMgcHVyZSBBU0NJSSB3aXRoIG5hbWVkIGVzY2FwZXMgbGlrZSBcbiwgZXRjLgotICAgICAgIGFuZCB3ZSBkZXRlcm1pbmVkIGl0J3MgZXhhY3Qgc2l6ZSAoY29tbW9uIGNhc2UpCi0gICAgICAgb3IgaXQgY29udGFpbnMgXHgsIFx1LCAuLi4gZXNjYXBlIHNlcXVlbmNlcy4gIHRoZW4gd2UgY3JlYXRlIGEKLSAgICAgICBsZWdhY3kgd2NoYXIgc3RyaW5nIGFuZCByZXNpemUgaXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLiAqLworICAgIH0KKyAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZworICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCisgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCisgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICBpZiAobGVuID4gMCkgewotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCi0gICAgICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgotICAgICAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKICAgICBlbmQgPSBzICsgc2l6ZTsKLQogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgZGlnaXRzOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgaW50IGNvdW50OworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CisgICAgICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CisgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CisKKyNkZWZpbmUgV1JJVEVfQVNDSUlfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gMTI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChjICE9ICdcXCcpIHsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHMgLSAxOwogICAgICAgICAvKiBcIC0gRXNjYXBlcyAqLwotICAgICAgICBzKys7Ci0gICAgICAgIGMgPSAqcysrOwotICAgICAgICBpZiAocyA+IGVuZCkKLSAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KKyAgICAgICAgaWYgKHMgPj0gZW5kKSB7CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CiAKKyAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCi0jZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIChjaCkpIDwgMCkgICAgXAotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSB3aGlsZSgwKQotCi0gICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzogV1JJVEVDSEFSKCdcXCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiBXUklURUNIQVIoJ1wnJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdcIic6IFdSSVRFQ0hBUignXCInKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiBXUklURUNIQVIoJ1xiJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcbic6IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcXCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wnJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcIic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wiJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdiJzogV1JJVEVfQVNDSUlfQ0hBUignXGInKTsgY29udGludWU7CiAgICAgICAgIC8qIEZGICovCi0gICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKLSAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2YnOiBXUklURV9BU0NJSV9DSEFSKCdcMDE0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICd0JzogV1JJVEVfQVNDSUlfQ0hBUignXHQnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ24nOiBXUklURV9BU0NJSV9DSEFSKCdcbicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xyJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBWVCAqLwotICAgICAgICBjYXNlICd2JzogV1JJVEVDSEFSKCdcMDEzJyk7IGJyZWFrOworICAgICAgICBjYXNlICd2JzogV1JJVEVfQVNDSUlfQ0hBUignXDAxMycpOyBjb250aW51ZTsKICAgICAgICAgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCi0gICAgICAgIGNhc2UgJ2EnOiBXUklURUNIQVIoJ1wwMDcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2EnOiBXUklURV9BU0NJSV9DSEFSKCdcMDA3Jyk7IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6Ci0gICAgICAgICAgICB4ID0gc1stMV0gLSAnMCc7CisgICAgICAgICAgICBjaCA9IGMgLSAnMCc7CiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7Ci0gICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKLSAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgY2ggPSAoY2g8PDMpICsgKnMrKyAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgV1JJVEVDSEFSKHgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwogICAgICAgICAgICAgLyogXHhYWCAqLwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDI7CisgICAgICAgICAgICBjb3VudCA9IDI7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFx1WFhYWCAqLwogICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDQ7CisgICAgICAgICAgICBjb3VudCA9IDQ7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHVYWFhYIGVzY2FwZSI7CiAgICAgICAgICAgICBnb3RvIGhleGVzY2FwZTsKIAogICAgICAgICAgICAgLyogXFVYWFhYWFhYWCAqLwogICAgICAgICBjYXNlICdVJzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDg7CisgICAgICAgICAgICBjb3VudCA9IDg7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICBoZXhlc2NhcGU6Ci0gICAgICAgICAgICBjaHIgPSAwOwotICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCBkaWdpdHMpIHsKLSAgICAgICAgICAgICAgICAvKiBjb3VudCBvbmx5IGhleCBkaWdpdHMgKi8KLSAgICAgICAgICAgICAgICBmb3IgKDsgcyA8IGVuZDsgKytzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKDsgZGlnaXRzLS07ICsrcykgeworICAgICAgICAgICAgZm9yIChjaCA9IDA7IGNvdW50ICYmIHMgPCBlbmQ7ICsrcywgLS1jb3VudCkgewogICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGNociA9IChjaHI8PDQpICYgfjB4RjsKLSAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgICAgIGNociArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdBJzsKKyAgICAgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNociA9PSAweGZmZmZmZmZmICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgLyogX2RlY29kaW5nX2Vycm9yIHdpbGwgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdG9yZToKLSAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKLSAgICAgICAgICAgIGlmIChjaHIgPiBNQVhfVU5JQ09ERSkKKyAgICAgICAgICAgIGlmIChjb3VudCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBXUklURUNIQVIoY2hyKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaCBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgaWYgKGNoID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIFxOe25hbWV9ICovCiAgICAgICAgIGNhc2UgJ04nOgotICAgICAgICAgICAgbWVzc2FnZSA9ICJtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiOwogICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLwogICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHVjbmhhc2hFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICgqcyA9PSAneycpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9IHMrMTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9ICsrczsKKyAgICAgICAgICAgICAgICBzaXplX3QgbmFtZWxlbjsKICAgICAgICAgICAgICAgICAvKiBsb29rIGZvciB0aGUgY2xvc2luZyBicmFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyAhPSAnfScgJiYgcyA8IGVuZCkKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGVuZCAmJiAqcyAhPSAnfScpCiAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAocyA+IHN0YXJ0ICYmIHMgPCBlbmQgJiYgKnMgPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgbmFtZWxlbiA9IHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiAmJiBzIDwgZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgbmFtZS4gIGxvb2sgaXQgdXAgaW4gdGhlIHVuaWNvZGUgZGF0YWJhc2UgKi8KLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJ1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUiOwogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzIC0gc3RhcnQgLSAxIDw9IElOVF9NQVggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CisgICAgICAgICAgICAgICAgICAgIGNoID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lbGVuIDw9IElOVF9NQVggJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCluYW1lbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAocyA+IGVuZCkgewotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7Ci0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoKmZpcnN0X2ludmFsaWRfZXNjYXBlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUgPSBzLTE7IC8qIEJhY2sgdXAgb25lIGNoYXIsIHNpbmNlIHdlJ3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGluY3JlbWVudGVkIHMuICovCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBXUklURUNIQVIoJ1xcJyk7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCh1bnNpZ25lZCBjaGFyKXNbLTFdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgV1JJVEVfQVNDSUlfQ0hBUignXFwnKTsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjb250aW51ZTsKIAogICAgICAgZXJyb3I6CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gZW5kIC0gcyArIHdyaXRlci5wb3M7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9BU0NJSV9DSEFSCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KLSN1bmRlZiBXUklURUNIQVIKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCi0gIHVjbmhhc2hFcnJvcjoKLSAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKLSAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKLSAgICAgICAgKTsKLSAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gTlVMTDsKLQogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC01ODUzLDEyICs2MTEzLDI4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLS8qIFJldHVybiBhIFVuaWNvZGUtRXNjYXBlIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIG9iamVjdC4KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgY29uc3QgY2hhciAqZmlyc3RfaW52YWxpZF9lc2NhcGU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBzaXplLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGZpcnN0X2ludmFsaWRfZXNjYXBlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJ1xcJWMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICAgSWYgcXVvdGVzIGlzIHRydWUsIHRoZSBzdHJpbmcgaXMgZW5jbG9zZWQgaW4gdSIiIG9yIHUnJyBxdW90ZXMgYXMKLSAgIGFwcHJvcHJpYXRlLgotCi0qLworLyogUmV0dXJuIGEgVW5pY29kZS1Fc2NhcGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgb2JqZWN0LiAqLwogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQpAQCAtNTg2Niw5ICs2MTQyLDkgQEAKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGludCBraW5kOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplOwogCiAgICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIGNoYXJhY3RlcgogICAgICAgIGVzY2FwZS4KQEAgLTU4ODIsNjAgKzYxNTgsNzAgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKLSAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKICAgICB9CiAKLSAgICBpZiAobGVuID09IDApCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KIAotICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICB9CisgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIGxlbik7CisgICAgaWYgKHJlcHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCi0gICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwotICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZSAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgaWYgKGNoID49ICcgJyAmJiBjaCA8IDEyNykgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgcHJpbnRhYmxlIFVTIEFTQ0lJIGFzLWlzICovCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSBhbmQgOC1iaXQgY2hhcmFjdGVycyB0byAnXHhISCcgKi8KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIFUrMDEwMC1VK2ZmZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CkBAIC01OTQzLDM3ICs2MjI5LDI4IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQorICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKIAotICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBhcmUgemVybyAqLworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwMDAwMEZdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAncic7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KIAogICAgIGFzc2VydChwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTU5ODMsOCArNjI2MCwxMCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKLSAgICBpZiAodG1wID09IE5VTEwpCisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTk5OCw5NSArNjI3NywxMDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKLSAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICB9CiAKICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCiAgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOwotICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIGVuZCA9IHMgKyBzaXplOwogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgaTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGNoIDw9IHdyaXRlci5tYXhjaGFyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgY2gpOyBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCiAKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnIHx8IHMgPj0gZW5kKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogCi0gICAgICAgIC8qIFx1LWVzY2FwZXMgYXJlIG9ubHkgaW50ZXJwcmV0ZWQgaWZmIHRoZSBudW1iZXIgb2YgbGVhZGluZwotICAgICAgICAgICBiYWNrc2xhc2hlcyBpZiBvZGQgKi8KLSAgICAgICAgYnMgPSBzOwotICAgICAgICBmb3IgKDtzIDwgZW5kOykgewotICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIGlmIChjID09ICd1JykgeworICAgICAgICAgICAgY291bnQgPSA0OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8Ci0gICAgICAgICAgICBzID49IGVuZCB8fAotICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB3cml0ZXIucG9zLS07Ci0gICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwotICAgICAgICBzKys7Ci0KLSAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewotICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICh4PDw0KSAmIH4weEY7Ci0gICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBlbHNlIGlmIChjID09ICdVJykgeworICAgICAgICAgICAgY291bnQgPSA4OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgIG5leHRCeXRlOgotICAgICAgICA7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMjsKKworICAgICAgICAvKiBcdUhISEggd2l0aCA0IGhleCBkaWdpdHMsIFxVMDBISEhISEggd2l0aCA4ICovCisgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKKyAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKKyAgICAgICAgICAgIGNoIDw8PSA0OworICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjb3VudCkgeworICAgICAgICAgICAgaWYgKGNoIDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSI7CisgICAgICAgIH0KKworICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOworICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9DSEFSCiAgICAgfQogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CkBAIC02MDk3LDYgKzYzODgsNyBAQAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CisKIH0KIAogCkBAIC02MTA1LDcgKzYzOTcsNiBAQAogewogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKICAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUsIHBvczsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtNjExNSw0MyArNjQwNiw0MSBAQAogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIGxlbik7CisgICAgfQorCiAgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKICAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCiAgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQorICAgIH0KICAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIH0KKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgfQogCi0gICAgcCA9IHEgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKKyAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwotICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOworCisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IENvcHkgOC1iaXQgY2hhcmFjdGVycyBhcy1pcyAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICAgICAgfQotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC02MTU5LDE0ICs2NDQ4LDI2IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgIC8qIFUrMDEwMDAwLVUrMTBmZmZmIHJhbmdlOiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDBISEhISEgnICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKKyAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgKnArKyA9ICdVJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGFzc2VydChwID4gcSk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKKyAgICBhc3NlcnQocCA+IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTYzNDQsNyArNjY0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKnJlc3VuaWNvZGU7CkBAIC02Mzk4LDI1ICs2Njk5LDIyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VDUzQgbGltaXQpCiB7CiAgICAgLyogaW5wdXQgc3RhdGUgKi8KICAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOwogICAgIGludCBraW5kOwogICAgIHZvaWQgKmRhdGE7Ci0gICAgLyogb3V0cHV0IG9iamVjdCAqLwotICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KICAgICBjaGFyICpzdHI7Ci0gICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICBQeV9zc2l6ZV90IHJlc3NpemU7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAobGltaXQgPT0gMjU2KSA/ICJsYXRpbi0xIiA6ICJhc2NpaSI7CiAgICAgY29uc3QgY2hhciAqcmVhc29uID0gKGxpbWl0ID09IDI1NikgPyAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMjU2KSIgOiAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4KSI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKKyAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyAgICAvKiBvdXRwdXQgb2JqZWN0ICovCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDI3LDE4NiArNjcyNSwxNTcgQEAKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzID09IE5VTEwpCisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICByZXNzaXplID0gc2l6ZTsKIAogICAgIHdoaWxlIChwb3MgPCBzaXplKSB7Ci0gICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogCiAgICAgICAgIC8qIGNhbiB3ZSBlbmNvZGUgdGhpcz8gKi8KLSAgICAgICAgaWYgKGM8bGltaXQpIHsKKyAgICAgICAgaWYgKGNoIDwgbGltaXQpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqc3RyKysgPSAoY2hhciljOworICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpY2g7CiAgICAgICAgICAgICArK3BvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3MsIGk7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBjb2xsc3RhcnQgKyAxOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCisKICAgICAgICAgICAgIHdoaWxlICgoY29sbGVuZCA8IHNpemUpICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKSA+PSBsaW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOworCisgICAgICAgICAgICAvKiBPbmx5IG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGl0J3Mgbm90IHRoZSBsYXN0IHdyaXRlICovCisgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gKGNvbGxlbmQgPCBzaXplKTsKKwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNvbGxzdGFydCsrIDwgY29sbGVuZCkKLSAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICAgICAgbWVtc2V0KHN0ciwgJz8nLCBjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgKz0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBpZ25vcmUgZXJyb3IgaGFuZGxlciAqLworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluY3I7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaCA8IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNCsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis3KzE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBpbmNyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMIHx8IChQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpKQorCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0gYmFja3NsYXNocmVwbGFjZSgmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfU2l6ZShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcHNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWtlIHJvb20gZm9yIGFsbCBhZGRpdGlvbmFsIGJ5dGVzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplIC0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXNzaXplK3JlcHNpemUtMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gcmVwc2l6ZS0xOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAweGRjODAgfHwgMHhkY2ZmIDwgY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBhIFVURi04YiBzdXJyb2dhdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweShzdHIsIFB5Qnl0ZXNfQXNTdHJpbmcocmVwdW5pY29kZSksIHJlcHNpemUpOwotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKShjaCAtIDB4ZGMwMCk7CisgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBjb2xsZW5kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgICAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgc28KLSAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlIGZvciBlbmNvZGFibGUgY2hhcmFjdGVycykgKi8KLSAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgICAgIGFzc2VydChjb2xsc3RhcnQgIT0gY29sbGVuZCk7CisgICAgICAgICAgICAgICAgLyogZmFsbGJhY2sgdG8gZ2VuZXJhbCBlcnJvciBoYW5kbGluZyAqLworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAxOworCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCisgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgPSByZXF1aXJlZHNpemU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gbGltaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVwKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aDogYWxsIGNoYXJhY3RlcnMgYXJlIHNtYWxsZXIgdGhhbiBsaW1pdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGxpbWl0ID49IDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzdHIsIHJlcHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcgdW5lbmNvZGFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXAsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWNoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IHBvcyA9PSBzaXplKTsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICBzaXplID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICBpZiAoc2l6ZSA8IHJlc3NpemUpIHsgLyogSWYgdGhpcyBmYWxscyByZXMgd2lsbCBiZSBOVUxMICovCi0gICAgICAgIGFzc2VydChzaXplID49IDApOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHNpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CiAKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiByZXM7Ci0KLSAgb3ZlcmZsb3c6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihyZXMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKHJlcCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NjY2LDggKzY5MzUsOSBAQAogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwpAQCAtNjY5NiwxMiArNjk2Niw0MiBAQAogICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIGMpOwogICAgICAgICAgICAgd3JpdGVyLnBvcysrOwogICAgICAgICAgICAgKytzOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisKKyAgICAgICAgLyogYnl0ZSBvdXRzaXplIHJhbmdlIDB4MDAuLjB4N2Y6IGNhbGwgdGhlIGVycm9yIGhhbmRsZXIgKi8KKworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICAgICAgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAvKiBGYXN0LXBhdGg6IHRoZSBlcnJvciBoYW5kbGVyIG9ubHkgd3JpdGVzIG9uZSBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICBidXQgd2UgbWF5IHN3aXRjaCB0byBVQ1MyIGF0IHRoZSBmaXJzdCB3cml0ZSAqLworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoJndyaXRlciwgUHlVbmljb2RlXzJCWVRFX0tJTkQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gd3JpdGVyLmtpbmQ7CisgICAgICAgICAgICBkYXRhID0gd3JpdGVyLmRhdGE7CisKKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9SRVBMQUNFKQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCAweGZmZmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjICsgMHhkYzAwKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCiAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQpAQCAtNjcxMCwxMyArNzAxMCwxMyBAQAogICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NzU5LDcgKzcwNTksNyBAQAogICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02NzcxLDcgKzcwNzEsNyBAQAogIyAgZGVmaW5lIFdDX0VSUl9JTlZBTElEX0NIQVJTIDB4MDA4MAogI2VuZGlmCiAKLXN0YXRpYyBjaGFyKgorc3RhdGljIGNvbnN0IGNoYXIqCiBjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCiB7CiAgICAgKm9iaiA9IE5VTEw7CkBAIC02ODc5LDcgKzcxNzksNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIERXT1JEIGVycjsKICAgICBpbnQgcmV0ID0gLTE7CiAKQEAgLTcxMTUsNyArNzQxNSw2IEBACiAgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRTsKICAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBpbnQgb3V0c2l6ZTsKLSAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICB3Y2hhcl90ICpwOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKQEAgLTcyMjQsNyArNzUyMyw3IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2Rpbmc7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CiAgICAgUHlPYmplY3QgKnJlcDsKICAgICBpbnQgcmV0ID0gLTE7CkBAIC03NDc5LDcgKzc3NzgsNyBAQAogCiAjdW5kZWYgTkVFRF9SRVRSWQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtODA4Miw3ICs4MzgxLDcgQEAKIGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKICAgICBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICBpbnQgKmtub3duX2Vycm9ySGFuZGxlciwgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICBfUHlfZXJyb3JfaGFuZGxlciAqZXJyb3JfaGFuZGxlciwgUHlPYmplY3QgKiplcnJvcl9oYW5kbGVyX29iaiwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTgxMjksMjMgKzg0MjgsMTUgQEAKICAgICB9CiAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAKICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgIGlmICgqa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgIH0KLSAgICBzd2l0Y2ggKCprbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICBjYXNlIDE6IC8qIHN0cmljdCAqLworICAgIGlmICgqZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgKmVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgc3dpdGNoICgqZXJyb3JfaGFuZGxlcikgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiAtMTsKLSAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgnPycsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSB7CkBAIC04MTU3LDEwICs4NDQ4LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KKyAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CiAgICAgICAgICppbnBvcyA9IGNvbGxlbmRwb3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvcyA8IGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgY2hhciBidWZmZXJbMisyOSsxKzFdOwpAQCAtODE3OCw4ICs4NDcwLDkgQEAKICAgICAgICAgfQogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9ySGFuZGxlciwKKyAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCBleGNlcHRpb25PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsICZuZXdwb3MpOwogICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQpAQCAtODI0MiwxMiArODUzNSw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCiAgICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLAotICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKICAgICB2b2lkICpkYXRhOwogICAgIGludCBraW5kOwogCkBAIC04Mjc4LDcgKzg1NjgsNyBAQAogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JfaGFuZGxlciwgJmVycm9yX2hhbmRsZXJfb2JqLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTgyOTQsMTMgKzg1ODQsMTMgQEAKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC04MzY3LDcgKzg2NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5X3NzaXplX3QgaV9uZXdwb3M7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwpAQCAtODYyNCw3ICs4OTE0LDcgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeU9iamVjdCAqCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5T2JqZWN0ICppbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCkBAIC04NjUzLDEwICs4OTQzLDggQEAKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7Ci0gICAgICAgIHJldHVybiBpbnB1dDsKLSAgICB9CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KGlucHV0KTsKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCkBAIC04NzY3LDE0ICs5MDU1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiB9CiAKIHN0YXRpYyBQeV9VQ1M0CkBAIC04OTU2LDkgKzkyMzksMTAgQEAKICAgICB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hbnlfZmluZF9zbGljZShpbnQgZGlyZWN0aW9uLCBQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKK2FueV9maW5kX3NsaWNlKFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CkBAIC05MTI3LDU0ICs5NDExLDM1IEBACiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHN1Yl9vYmo7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoIXN1Yl9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cik7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKLSAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHIpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZDEpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKLSAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3ViX29iaikpCisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3Vic3RyKSkKICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAogICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCiAgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKQEAgLTkyMDEsMTYgKzk0NjYsMTEgQEAKICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIC0xOwpAQCAtOTIxOCwzNSArOTQ3OCwxNSBAQAogCiBQeV9zc2l6ZV90CiBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAotICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWIpOwotICAgIGlmICghc3ViKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShkaXJlY3Rpb24sCi0gICAgICAgIHN0ciwgc3ViLCBzdGFydCwgZW5kCi0gICAgICAgICk7Ci0KLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3ViKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFueV9maW5kX3NsaWNlKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiBQeV9zc2l6ZV90CkBAIC05MzQ5LDIyICs5NTg5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3Vic3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoc3Vic3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1YnN0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQpAQCAtOTY2NiwyMCArOTg5NCwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbjsKLSAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5T2JqZWN0ICpmc2VxOyAgICAgICAgICAvKiBQeVNlcXVlbmNlX0Zhc3Qoc2VxKSAqLwotICAgIFB5X3NzaXplX3Qgc2VxbGVuOyAgICAgICAvKiBsZW4oZnNlcSkgLS0gbnVtYmVyIG9mIGl0ZW1zIGluIHNlcXVlbmNlICovCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZnNlcTsKKyAgICBQeV9zc2l6ZV90IHNlcWxlbjsKICAgICBQeU9iamVjdCAqKml0ZW1zOwotICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7Ci0gICAgUHlfVUNTNCBtYXhjaGFyOwotICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOwotICAgIGludCB1c2VfbWVtY3B5OwotICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGFzdF9vYmo7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOwogCiAgICAgZnNlcSA9IFB5U2VxdWVuY2VfRmFzdChzZXEsICJjYW4gb25seSBqb2luIGFuIGl0ZXJhYmxlIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtOTY5MCwyMSArOTkwOCwzOSBAQAogICAgICAqIHNvIHdlIGFyZSBzdXJlIHRoYXQgZnNlcSB3b24ndCBiZSBtdXRhdGVkLgogICAgICAqLwogCisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgc2VxbGVuID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZzZXEpOworICAgIHJlcyA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KHNlcGFyYXRvciwgaXRlbXMsIHNlcWxlbik7CisgICAgUHlfREVDUkVGKGZzZXEpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfSm9pbkFycmF5KFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICoqaXRlbXMsIFB5X3NzaXplX3Qgc2VxbGVuKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CisKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICB9CiAKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KICAgICBsYXN0X29iaiA9IE5VTEw7Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChpdGVtc1swXSkpIHsKICAgICAgICAgICAgIHJlcyA9IGl0ZW1zWzBdOwogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CiAgICAgICAgIHNlcGxlbiA9IDA7CkBAIC05ODAyLDcgKzEwMDM4LDcgQEAKIAogICAgICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KICAgICAgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgIG1lbWNweShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CkBAIC05ODEwLDcgKzEwMDQ2LDcgQEAKIAogICAgICAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGl0ZW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogaXRlbWxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIGl0ZW1sZW47CkBAIC05ODM5LDEzICsxMDA3NSwxMSBAQAogICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtOTk3MCwxMyArMTAyMDQsOCBAQAogewogICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyaW5nKTsKLSAgICBpZiAoc3RyaW5nID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cmluZykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMDAwMyw3ICsxMDIzMiw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgbGlzdCA9IDA7CiAgICAgfQotICAgIFB5X0RFQ1JFRihzdHJpbmcpOwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0xMDU2NCwyOCArMTA3OTIsMjcgQEAKIH0KIAogCi0vKiBBcmd1bWVudCBjb252ZXJ0ZXIuICBDb2VyY2VzIHRvIGEgc2luZ2xlIHVuaWNvZGUgY2hhcmFjdGVyICovCisvKiBBcmd1bWVudCBjb252ZXJ0ZXIuIEFjY2VwdHMgYSBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXIuICovCiAKIHN0YXRpYyBpbnQKIGNvbnZlcnRfdWMoUHlPYmplY3QgKm9iaiwgdm9pZCAqYWRkcikKIHsKICAgICBQeV9VQ1M0ICpmaWxsY2hhcmxvYyA9IChQeV9VQ1M0ICopYWRkcjsKLSAgICBQeU9iamVjdCAqdW5pb2JqOwogCi0gICAgdW5pb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAodW5pb2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlIik7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGEgdW5pY29kZSBjaGFyYWN0ZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmlvYmopICE9IDEpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSAhPSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaW9iaiwgMCk7Ci0gICAgUHlfREVDUkVGKHVuaW9iaik7CisgICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xMDczNSw3ICsxMDk2Miw3IEBACiAjdW5kZWYgQ09NUEFSRQogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiB1bmljb2RlX2NvbXBhcmVfZXEoUHlPYmplY3QgKnN0cjEsIFB5T2JqZWN0ICpzdHIyKQogewogICAgIGludCBraW5kOwpAQCAtMTA3NzksMTUgKzExMDA2LDYgQEAKIH0KIAogaW50Ci1fUHlVbmljb2RlX0NvbXBhcmVXaXRoSWQoUHlPYmplY3QgKmxlZnQsIF9QeV9JZGVudGlmaWVyICpyaWdodCkKLXsKLSAgICBQeU9iamVjdCAqcmlnaHRfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQocmlnaHQpOyAgIC8qIGJvcnJvd2VkICovCi0gICAgaWYgKHJpZ2h0X3N0ciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Db21wYXJlKGxlZnQsIHJpZ2h0X3N0cik7Ci19Ci0KLWludAogUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoUHlPYmplY3QqIHVuaSwgY29uc3QgY2hhciogc3RyKQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTEwODcxLDYgKzExMDg5LDEyIEBACiB7CiAgICAgc2l6ZV90IGxlbjsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0cik7CisjaWZuZGVmIE5ERUJVRworICAgIGZvciAoY29uc3QgY2hhciAqcCA9IHN0cjsgKnA7IHArKykgeworICAgICAgICBhc3NlcnQoKHVuc2lnbmVkIGNoYXIpKnAgPCAxMjgpOworICAgIH0KKyNlbmRpZgogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgLyogTWVtb3J5IGVycm9yIG9yIGJhZCBkYXRhICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xMDg5MSw2ICsxMTExNSwxMSBAQAogCiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sobGVmdCkpOwogICAgIGFzc2VydChyaWdodC0+c3RyaW5nKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgZm9yIChjb25zdCBjaGFyICpwID0gcmlnaHQtPnN0cmluZzsgKnA7IHArKykgeworICAgICAgICBhc3NlcnQoKHVuc2lnbmVkIGNoYXIpKnAgPCAxMjgpOworICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSkgewogICAgICAgICAvKiBtZW1vcnkgZXJyb3Igb3IgYmFkIGRhdGEgKi8KQEAgLTEwOTg4LDU5ICsxMTIxNyw0OSBAQAogfQogCiBpbnQKLVB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKK19QeVVuaWNvZGVfRVEoUHlPYmplY3QgKmFhLCBQeU9iamVjdCAqYmIpCiB7Ci0gICAgUHlPYmplY3QgKnN0ciwgKnN1YjsKKyAgICByZXR1cm4gdW5pY29kZV9lcShhYSwgYmIpOworfQorCitpbnQKK1B5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyKQorewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIGludCByZXN1bHQ7CiAKLSAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChlbGVtZW50KTsKLSAgICBpZiAoIXN1YikgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHIpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGNvbnRhaW5lcik7Ci0gICAgaWYgKCFzdHIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHIpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwotICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7Ci0gICAgaWYgKGxlbjEgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyKTsKKyAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAobGVuMiA9PSAxKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgYnVmMiwgMCk7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRjaGFyKChjb25zdCBjaGFyICopYnVmMSwga2luZDEsIGxlbjEsIGNoLCAxKSAhPSAtMTsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOwotICAgICAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHIsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTEwNTgsOSArMTEyNzcsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKQEAgLTExMDcyLDU2ICsxMTI4OCw0MCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7Ci0gICAgUHlfc3NpemVfdCB1X2xlbiwgdl9sZW4sIG5ld19sZW47CisgICAgUHlfc3NpemVfdCBsZWZ0X2xlbiwgcmlnaHRfbGVuLCBuZXdfbGVuOwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgdSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwotICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB2ID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUobGVmdCkgPCAwIHx8IGVuc3VyZV91bmljb2RlKHJpZ2h0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogU2hvcnRjdXRzICovCi0gICAgaWYgKHYgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiB1OwotICAgIH0KLSAgICBpZiAodSA9PSB1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQorICAgIGlmIChsZWZ0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CisgICAgaWYgKHJpZ2h0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKIAotICAgIHVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7Ci0gICAgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKLSAgICBpZiAodV9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZfbGVuKSB7CisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdfbGVuID0gdV9sZW4gKyB2X2xlbjsKKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CiAKLSAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpOwotICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmlnaHQpOwogICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgbWF4Y2hhcjIpOwogCiAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCi0gICAgdyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7Ci0gICAgaWYgKHcgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIDAsIHUsIDAsIHVfbGVuKTsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCB1X2xlbiwgdiwgMCwgdl9sZW4pOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICBQeV9ERUNSRUYodik7Ci0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3LCAxKSk7Ci0gICAgcmV0dXJuIHc7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHUpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgbGVmdCwgMCwgbGVmdF9sZW4pOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTEyMTIsNiArMTE0MTIsMjUgQEAKICAgICBQeV9YREVDUkVGKHJpZ2h0KTsKIH0KIAorLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgorKi8KKworc3RhdGljIGlubGluZSBpbnQKK3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBpZihzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCBzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKKyAgICAgICAgaWYgKGVuc3VyZV91bmljb2RlKCpzdWJzdHJpbmcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCiBcblwKQEAgLTExMjMwLDMxICsxMTQ0OSwyNiBAQAogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaXJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICB9CisKICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMTI4NCw4ICsxMTQ5OCw2IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTQxOSwyMiArMTE2MzEsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTUwNywyMiArMTE3MTAsMTMgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMDM2LDcgKzEyMjMwLDcgQEAKICNkZWZpbmUgQk9USFNUUklQIDIKIAogLyogQXJyYXlzIGluZGV4ZWQgYnkgYWJvdmUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKIAogI2RlZmluZSBTVFJJUE5BTUUoaSkgKHN0cmlwZm9ybWF0W2ldKzMpCiAKQEAgLTEyMzE3LDExICsxMjUxMSwxMSBAQAogICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7Ci0gICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgbWVtY3B5KHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAogICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIGNoYXJfc2l6ZSk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmNoYXJzKSB7CiAgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKICAgICAgICAgICAgIGRvbmUgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMzMxLDQwICsxMjUyNSwxNSBAQAogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsb2JqLAorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwKICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGY7Ci0gICAgUHlPYmplY3QgKnN0cjE7Ci0gICAgUHlPYmplY3QgKnN0cjI7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgIGlmIChzZWxmID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwIHx8CisgICAgICAgICAgICBlbnN1cmVfdW5pY29kZShyZXBsc3RyKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdHIxID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJlcGxvYmopOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8Ci0gICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLSAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHN0ciwgc3Vic3RyLCByZXBsc3RyLCBtYXhjb3VudCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyZXBsYWNlX19kb2NfXywKQEAgLTEyMzgwLDI4ICsxMjU0OSwxMiBAQAogICAgIFB5T2JqZWN0ICpzdHIxOwogICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVXxuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIxKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMik7Ci0gICAgaWYgKHN0cjIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwotCi0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNTg2LDIyICsxMjczOSwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjYyMywyMiArMTI3NjcsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjY3OCwyNCArMTI4MTMsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgcyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHMpOwotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHMpIDwgMCB8fCAoc2VwICE9IE5VTEwgJiYgZW5zdXJlX3VuaWNvZGUoc2VwKSA8IDApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKQEAgLTEyNzIwLDM1ICsxMjg0MSwyNiBAQAogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfaW4sIFB5T2JqZWN0ICpzZXBfaW4pCitQeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyNzYyLDggKzEyODc0LDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCBzdHJfb2JqLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI3NzEsNyArMTI4ODEsNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjc5MiwzOSArMTI5MDIsMjMgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUlBhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9vYmosIFB5T2JqZWN0ICpzZXBfb2JqKQogewotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cl9vYmopIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzZXBfb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcF9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXBfaW4pOwotICAgIGlmICghc2VwX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyODM4LDggKzEyOTMyLDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5LCBzdHJfb2JqKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI4NDcsNyArMTI5MzksNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjg2OCwxOCArMTI5NjAsMTAgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHBhcnRpdGlvbl9fZG9jX18sCkBAIC0xMjkxMSwyNCArMTI5OTUsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7Ci0KLSAgICBQeV9ERUNSRUYocyk7Ci0gICAgUHlfWERFQ1JFRihzZXApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCkBAIC0xMjk1MywxMCArMTMwMjMsMTQgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtMTMyMzcsMTEgKzEzMzExLDE1IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKLSAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVwbGUgZm9yIHN0YXJ0c3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMjUxLDE1ICsxMzMyOSwxMyBAQAogICAgICAgICAvKiBub3RoaW5nIG1hdGNoZWQgKi8KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKQEAgLTEzMjg5LDEyICsxMzM2NSwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBlbmRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMTMzMDMsNjEgKzEzMzgyLDY3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJS4xMDBzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewotICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkKKyAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiAgICAgICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQ7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworCiAgICAgICAgIC8qIENvcHktb24td3JpdGUgbW9kZTogc2V0IGJ1ZmZlciBzaXplIHRvIDAgc28KICAgICAgICAgICogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkgd2lsbCBjb3B5IChhbmQgZW5sYXJnZSkgdGhlIGJ1ZmZlciBvbgogICAgICAgICAgKiBuZXh0IHdyaXRlLiAqLwogICAgICAgICB3cml0ZXItPnNpemUgPSAwOwogICAgIH0KLSAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOwotICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiB9CiAKIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgbWVtc2V0KHdyaXRlciwgMCwgc2l6ZW9mKCp3cml0ZXIpKTsKLSNpZmRlZiBQeV9ERUJVRwotICAgIHdyaXRlci0+a2luZCA9IDU7ICAgIC8qIGludmFsaWQga2luZCAqLwotI2VuZGlmCisKKyAgICAvKiBBU0NJSSBpcyB0aGUgYmFyZSBtaW5pbXVtICovCiAgICAgd3JpdGVyLT5taW5fY2hhciA9IDEyNzsKKworICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpIHdpbGwgY29weSB0aGUgYnVmZmVyLiAqLworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwogfQogCiBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKLSNlbHNlCi0gICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKLSNlbmRpZgogICAgIFB5X3NzaXplX3QgbmV3bGVuOwogICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CiAKLSAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisgICAgYXNzZXJ0KG1heGNoYXIgPD0gTUFYX1VOSUNPREUpOworCisgICAgLyogZW5zdXJlIHRoYXQgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCgobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciAmJiBsZW5ndGggPj0gMCkKKyAgICAgICAgICAgfHwgbGVuZ3RoID4gMCk7CiAKICAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTM0MjMsOSArMTM1MDgsMzIgQEAKICN1bmRlZiBPVkVSQUxMT0NBVEVfRkFDVE9SCiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kKQoreworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kIG1hY3JvIHdhcyB1c2VkICovCisgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8IGtpbmQpOworCisgICAgc3dpdGNoIChraW5kKQorICAgIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBtYXhjaGFyID0gMHhmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmZmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogbWF4Y2hhciA9IDB4MTBmZmZmOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiaW52YWxpZCBraW5kIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCAwLCBtYXhjaGFyKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCkKIHsKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCAxLCBjaCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcywgY2gpOwpAQCAtMTM1MzgsNyArMTM2NDYsNyBAQAogICAgICAgICBjb25zdCBQeV9VQ1MxICpzdHIgPSAoY29uc3QgUHlfVUNTMSAqKWFzY2lpOwogICAgICAgICBQeV9VQ1MxICpkYXRhID0gd3JpdGVyLT5kYXRhOwogCi0gICAgICAgIFB5X01FTUNQWShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKKyAgICAgICAgbWVtY3B5KGRhdGEgKyB3cml0ZXItPnBvcywgc3RyLCBsZW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKQEAgLTEzNTgzLDI3ICsxMzY5MSwzMCBAQAogX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIFB5T2JqZWN0ICpzdHI7CisKICAgICBpZiAod3JpdGVyLT5wb3MgPT0gMCkgewogICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KKworICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOworICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKwogICAgIGlmICh3cml0ZXItPnJlYWRvbmx5KSB7Ci0gICAgICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOwotICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IHdyaXRlci0+cG9zKTsKICAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgewotICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwotICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOwotICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICE9IHdyaXRlci0+cG9zKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHIyOworICAgICAgICBzdHIyID0gcmVzaXplX2NvbXBhY3Qoc3RyLCB3cml0ZXItPnBvcyk7CisgICAgICAgIGlmIChzdHIyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgICAgIHN0ciA9IHN0cjI7CiAgICAgfQotICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOwotICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CiAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHN0cik7CiB9CkBAIC0xNDc0NSwxMyArMTQ4NTYsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgY3R4LmZtdHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGZvcm1hdCk7Ci0gICAgaWYgKGN0eC5mbXRzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoZm9ybWF0KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoY3R4LmZtdHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKKyAgICBjdHguZm10c3RyID0gZm9ybWF0OwogICAgIGN0eC5mbXRkYXRhID0gUHlVbmljb2RlX0RBVEEoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORChjdHguZm10c3RyKTsKICAgICBjdHguZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3R4LmZtdHN0cik7CkBAIC0xNDgxMSwxMSArMTQ5MTksOSBAQAogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwogICAgIH0KLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZjdHgud3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJmN0eC53cml0ZXIpOwogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwpAQCAtMTQ5MzIsNyArMTUwMzgsNyBAQAogICAgICAgICBfUHlVbmljb2RlX1dTVFIoc2VsZikgPSAod2NoYXJfdCAqKWRhdGE7CiAgICAgfQogCi0gICAgUHlfTUVNQ1BZKGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CiAjaWZkZWYgUHlfREVCVUcKQEAgLTE1MDkzLDI2ICsxNTE5OSwxOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIEl0IG1pZ2h0IGJlIHRoYXQgdGhlIEdldEl0ZW0gY2FsbCBmYWlscyBldmVuCi0gICAgICAgdGhvdWdoIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwKLSAgICAgICBuYW1lbHkgd2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgUHlfQUxMT1dfUkVDVVJTSU9OCi0gICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCBzKTsKKyAgICB0ID0gUHlEaWN0X1NldERlZmF1bHQoaW50ZXJuZWQsIHMsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KLQotICAgIGlmICh0KSB7CisgICAgaWYgKHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0ICE9IHMpIHsKICAgICAgICAgUHlfSU5DUkVGKHQpOwogICAgICAgICBQeV9TRVRSRUYoKnAsIHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7CiAgICAgLyogVGhlIHR3byByZWZlcmVuY2VzIGluIGludGVybmVkIGFyZSBub3QgY291bnRlZCBieSByZWZjbnQuCiAgICAgICAgVGhlIGRlYWxsb2NhdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgKi8KICAgICBQeV9SRUZDTlQocykgLT0gMjsKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCA3Yzc4MGI2Li4zOWFmOTIwIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC0yNDQsMTA5ICsyNDQsMTE5IEBACiAgICAgezE2Nzc3NTYyLCAxNzgyNjEzNiwgMTY3Nzc1NjIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3Nzc1NjUsIDE3ODI2MTM5LCAxNjc3NzU2NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzODQwfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OH0sCisgICAgezE2Nzc3NTY4LCAxNzgyNjE0MiwgMTY3Nzc1NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzEsIDE3ODI2MTQ1LCAxNjc3NzU3MSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NCwgMTc4MjYxNDgsIDE2Nzc3NTc0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTc3LCAxNzgyNjE1MSwgMTY3Nzc1NzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODAsIDE3ODI2MTU0LCAxNjc3NzU4MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4MywgMTc4MjYxNTcsIDE2Nzc3NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg2LCAxNzgyNjE2MCwgMTY3Nzc1ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODksIDE3ODI2MTYzLCAxNjc3NzU4OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU5MiwgMTc4MjYxNjYsIDE2Nzc3NTkyLCAwLCAwLCAyNjM3N30sCiAgICAgezM1MzMyLCAwLCAzNTMzMiwgMCwgMCwgOTk5M30sCiAgICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDc4NSwgMTg4NzQ3MTgsIDMzNTU0Nzg1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzkwLCAxODg3NDcyMywgMzM1NTQ3OTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAzMzU1NDc5NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwMCwgMTg4NzQ3MzMsIDMzNTU0ODAwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODA1LCAxODg3NDczOCwgMzM1NTQ4MDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTMsIDE3ODI2MTY3LCAxNjc3NzU5MywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzU5NywgMTg4NzQ3NDYsIDE2Nzc3NTk3LCAwLCAwLCAyNjQ5N30sCisgICAgezMzNTU0ODEyLCAxODg3NDc0NSwgMzM1NTQ4MTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MTcsIDE4ODc0NzUwLCAzMzU1NDgxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyMiwgMTg4NzQ3NTUsIDMzNTU0ODIyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODI3LCAxODg3NDc2MCwgMzM1NTQ4MjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MzIsIDE4ODc0NzY1LCAzMzU1NDgzMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyMCwgMTc4MjYxOTQsIDE2Nzc3NjIwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NjI0LCAxODg3NDc3MywgMTY3Nzc2MjQsIDAsIDAsIDI2NDk3fSwKICAgICB7OCwgMCwgOCwgMCwgMCwgOTk5M30sCiAgICAgezAsIC04LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwMzksIDE5OTIzMzMxLCA1MDMzMjAzOSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA0NiwgMTk5MjMzMzgsIDUwMzMyMDQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDUzLCAxOTkyMzM0NSwgNTAzMzIwNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDQsIDE4ODc0Nzc3LCAzMzU1NDg0NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA2NiwgMTk5MjMzNTgsIDUwMzMyMDY2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDczLCAxOTkyMzM2NSwgNTAzMzIwNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwODAsIDE5OTIzMzcyLCA1MDMzMjA4MCwgMCwgMCwgMjYzNzd9LAogICAgIHs3NCwgMCwgNzQsIDAsIDAsIDk5OTN9LAogICAgIHs4NiwgMCwgODYsIDAsIDAsIDk5OTN9LAogICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgOTk5M30sCiAgICAgezEyOCwgMCwgMTI4LCAwLCAwLCA5OTkzfSwKICAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDk5OTN9LAogICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDE2Nzc3NjQxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODYxLCAxODg3NDc5NCwgMTY3Nzc2NDcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjcsIDE4ODc0ODAwLCAxNjc3NzY1MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3MywgMTg4NzQ4MDYsIDE2Nzc3NjU5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODc5LCAxODg3NDgxMiwgMTY3Nzc2NjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4ODUsIDE4ODc0ODE4LCAxNjc3NzY3MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg5MSwgMTg4NzQ4MjQsIDE2Nzc3Njc3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODk3LCAxODg3NDgzMCwgMTY3Nzc2ODMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDMsIDE4ODc0ODM2LCAxNjc3NzY4OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkwOSwgMTg4NzQ4NDIsIDE2Nzc3Njk1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTE1LCAxODg3NDg0OCwgMTY3Nzc3MDEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjEsIDE4ODc0ODU0LCAxNjc3NzcwNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkyNywgMTg4NzQ4NjAsIDE2Nzc3NzEzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTMzLCAxODg3NDg2NiwgMTY3Nzc3MTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MzksIDE4ODc0ODcyLCAxNjc3NzcyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk0NSwgMTg4NzQ4NzgsIDE2Nzc3NzMxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTUxLCAxODg3NDg4NCwgMTY3Nzc3MzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NTcsIDE4ODc0ODkwLCAxNjc3Nzc0MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2MywgMTg4NzQ4OTYsIDE2Nzc3NzQ5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTY5LCAxODg3NDkwMiwgMTY3Nzc3NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NzUsIDE4ODc0OTA4LCAxNjc3Nzc2MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4MSwgMTg4NzQ5MTQsIDE2Nzc3NzY3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTg3LCAxODg3NDkyMCwgMTY3Nzc3NzMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTMsIDE4ODc0OTI2LCAxNjc3Nzc3OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDk5OSwgMTg4NzQ5MzIsIDE2Nzc3Nzg1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDA1LCAxODg3NDkzOCwgMTY3Nzc3OTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTEsIDE4ODc0OTQ0LCAxNjc3Nzc5NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDE2Nzc3ODAzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDIzLCAxODg3NDk1NiwgMTY3Nzc4MDksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMjksIDE4ODc0OTYyLCAxNjc3NzgxNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAzNSwgMTg4NzQ5NjgsIDE2Nzc3ODIxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQxLCAxODg3NDk3NCwgMTY3Nzc4MjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDcsIDE4ODc0OTgwLCAxNjc3NzgzMywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1MywgMTg4NzQ5ODYsIDE2Nzc3ODM5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDU5LCAxODg3NDk5MiwgMTY3Nzc4NDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNjUsIDE4ODc0OTk4LCAxNjc3Nzg1MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3MSwgMTg4NzUwMDQsIDE2Nzc3ODU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDc3LCAxODg3NTAxMCwgMTY3Nzc4NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwODMsIDE4ODc1MDE2LCAxNjc3Nzg2OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA4OSwgMTg4NzUwMjIsIDE2Nzc3ODc1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDk1LCAxODg3NTAyOCwgMTY3Nzc4ODEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDEsIDE4ODc1MDM0LCAxNjc3Nzg4NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEwNywgMTg4NzUwNDAsIDE2Nzc3ODkzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTEzLCAxODg3NTA0NiwgMTY3Nzc4OTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMTksIDE4ODc1MDUyLCAxNjc3NzkwNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEyNSwgMTg4NzUwNTgsIDE2Nzc3OTExLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTMxLCAxODg3NTA2NCwgMzM1NTUxMzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMzgsIDE4ODc1MDcxLCAxNjc3NzkyNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE0NCwgMTg4NzUwNzcsIDMzNTU1MTQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTUxLCAxODg3NTA4NCwgMzM1NTUxNTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIzNzMsIDE5OTIzNjY1LCA1MDMzMjM3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3MCwgMTg4NzQ4MDMsIDE2Nzc3NjU2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc2LCAxODg3NDgwOSwgMTY3Nzc2NjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODIsIDE4ODc0ODE1LCAxNjc3NzY2OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4OCwgMTg4NzQ4MjEsIDE2Nzc3Njc0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODk0LCAxODg3NDgyNywgMTY3Nzc2ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDAsIDE4ODc0ODMzLCAxNjc3NzY4NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMTY3Nzc2OTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTgsIDE4ODc0ODUxLCAxNjc3NzcwNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyNCwgMTg4NzQ4NTcsIDE2Nzc3NzEwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTMwLCAxODg3NDg2MywgMTY3Nzc3MTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzYsIDE4ODc0ODY5LCAxNjc3NzcyMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0MiwgMTg4NzQ4NzUsIDE2Nzc3NzI4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTQ4LCAxODg3NDg4MSwgMTY3Nzc3MzQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NTQsIDE4ODc0ODg3LCAxNjc3Nzc0MCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2MCwgMTg4NzQ4OTMsIDE2Nzc3NzQ2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTY2LCAxODg3NDg5OSwgMTY3Nzc3NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzIsIDE4ODc0OTA1LCAxNjc3Nzc1OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3OCwgMTg4NzQ5MTEsIDE2Nzc3NzY0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTg0LCAxODg3NDkxNywgMTY3Nzc3NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTAsIDE4ODc0OTIzLCAxNjc3Nzc3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk5NiwgMTg4NzQ5MjksIDE2Nzc3NzgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDAyLCAxODg3NDkzNSwgMTY3Nzc3ODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDgsIDE4ODc0OTQxLCAxNjc3Nzc5NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxNCwgMTg4NzQ5NDcsIDE2Nzc3ODAwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDIwLCAxODg3NDk1MywgMTY3Nzc4MDYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjYsIDE4ODc0OTU5LCAxNjc3NzgxMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzMiwgMTg4NzQ5NjUsIDE2Nzc3ODE4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMTY3Nzc4MjQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNDQsIDE4ODc0OTc3LCAxNjc3NzgzMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1MCwgMTg4NzQ5ODMsIDE2Nzc3ODM2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDU2LCAxODg3NDk4OSwgMTY3Nzc4NDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNjIsIDE4ODc0OTk1LCAxNjc3Nzg0OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA2OCwgMTg4NzUwMDEsIDE2Nzc3ODU0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc0LCAxODg3NTAwNywgMTY3Nzc4NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODAsIDE4ODc1MDEzLCAxNjc3Nzg2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4NiwgMTg4NzUwMTksIDE2Nzc3ODcyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDkyLCAxODg3NTAyNSwgMTY3Nzc4NzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTgsIDE4ODc1MDMxLCAxNjc3Nzg4NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwNCwgMTg4NzUwMzcsIDE2Nzc3ODkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTEwLCAxODg3NTA0MywgMTY3Nzc4OTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTYsIDE4ODc1MDQ5LCAxNjc3NzkwMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyMiwgMTg4NzUwNTUsIDE2Nzc3OTA4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTI4LCAxODg3NTA2MSwgMTY3Nzc5MTQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMzQsIDE4ODc1MDY3LCAxNjc3NzkyMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0MCwgMTg4NzUwNzMsIDE2Nzc3OTI2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTQ2LCAxODg3NTA3OSwgMTY3Nzc5MzIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTIsIDE4ODc1MDg1LCAxNjc3NzkzOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE1OCwgMTg4NzUwOTEsIDMzNTU1MTYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTY1LCAxODg3NTA5OCwgMTY3Nzc5NTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzEsIDE4ODc1MTA0LCAzMzU1NTE3MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3OCwgMTg4NzUxMTEsIDMzNTU1MTc4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDAwLCAxOTkyMzY5MiwgNTAzMzI0MDMsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTc0LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MTY2LCAxODg3NTA5OSwgMTY3Nzc5NTIsIDAsIDAsIDI2NDMzfSwKLSAgICB7MTY3Nzc5NTUsIDE3ODI2NTI5LCAxNjc3Nzk1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE3NSwgMTg4NzUxMDgsIDMzNTU1MTc3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTgyLCAxODg3NTExNSwgMTY3Nzc5NjgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxODgsIDE4ODc1MTIxLCAzMzU1NTE5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE5NSwgMTg4NzUxMjgsIDMzNTU1MTk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDE3LCAxOTkyMzcwOSwgNTAzMzI0MjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxOTMsIDE4ODc1MTI2LCAxNjc3Nzk3OSwgMCwgMCwgMjY0MzN9LAorICAgIHsxNjc3Nzk4MiwgMTc4MjY1NTYsIDE2Nzc3OTgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjAyLCAxODg3NTEzNSwgMzM1NTUyMDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMDksIDE4ODc1MTQyLCAxNjc3Nzk5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIxNSwgMTg4NzUxNDgsIDMzNTU1MjE3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjIyLCAxODg3NTE1NSwgMzM1NTUyMjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NDQsIDE5OTIzNzM2LCA1MDMzMjQ0NywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtODYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyMTAsIDE4ODc1MTQzLCAxNjc3Nzk5NiwgMCwgMCwgMjY0MzN9LAotICAgIHs1MDMzMjQzMywgMTk5MjM3MjUsIDUwMzMyNDMzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDQwLCAxOTkyMzczMiwgNTAzMzI0NDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyMzAsIDE4ODc1MTYzLCAzMzU1NTIzMCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ1MiwgMTk5MjM3NDQsIDUwMzMyNDUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjM3LCAxODg3NTE3MCwgMTY3NzgwMjMsIDAsIDAsIDI2NDMzfSwKKyAgICB7NTAzMzI0NjAsIDE5OTIzNzUyLCA1MDMzMjQ2MCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ2NywgMTk5MjM3NTksIDUwMzMyNDY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjU3LCAxODg3NTE5MCwgMzM1NTUyNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NzksIDE5OTIzNzcxLCA1MDMzMjQ3OSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTAwLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezUwMzMyNDU5LCAxOTkyMzc1MSwgNTAzMzI0NTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NjYsIDE5OTIzNzU4LCA1MDMzMjQ2NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI1NiwgMTg4NzUxODksIDMzNTU1MjU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjYxLCAxODg3NTE5NCwgMzM1NTUyNjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0ODMsIDE5OTIzNzc1LCA1MDMzMjQ4MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ4NiwgMTk5MjM3NzgsIDUwMzMyNDg2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDkzLCAxOTkyMzc4NSwgNTAzMzI0OTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODMsIDE4ODc1MjE2LCAzMzU1NTI4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4OCwgMTg4NzUyMjEsIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTEwLCAxOTkyMzgwMiwgNTAzMzI1MTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTExMiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTI3MywgMTg4NzUyMDYsIDMzNTU1Mjc1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjgwLCAxODg3NTIxMywgMTY3NzgwNjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyODYsIDE4ODc1MjE5LCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI5MywgMTg4NzUyMjYsIDMzNTU1MjkzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNTE1LCAxOTkyMzgwNywgNTAzMzI1MTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDAsIDE4ODc1MjMzLCAzMzU1NTMwMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMwNywgMTg4NzUyNDAsIDE2Nzc4MDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzEzLCAxODg3NTI0NiwgMzM1NTUzMTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMjAsIDE4ODc1MjUzLCAzMzU1NTMyMCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjU0MiwgMTk5MjM4MzQsIDUwMzMyNTQ1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgLTEyNiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTMwOCwgMTg4NzUyNDEsIDE2Nzc4MDk0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MzM1LCAxODg3NTI2OCwgMTY3NzgxMjEsIDAsIDAsIDI2NDMzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDQsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA1LCAzMDc2fSwKQEAgLTM4OCwxNSArMzk4LDYgQEAKICAgICB7MCwgLTQyMjYxLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDkyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstOTI4LCAwLCAtOTI4LCAwLCAwLCA5OTkzfSwKLSAgICB7MTY3NzgwOTcsIDE3ODI2NjcxLCAxNjc3ODA5NywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMCwgMTc4MjY2NzQsIDE2Nzc4MTAwLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTAzLCAxNzgyNjY3NywgMTY3NzgxMDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDYsIDE3ODI2NjgwLCAxNjc3ODEwNiwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwOSwgMTc4MjY2ODMsIDE2Nzc4MTA5LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTEyLCAxNzgyNjY4NiwgMTY3NzgxMTIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTUsIDE3ODI2Njg5LCAxNjc3ODExNSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExOCwgMTc4MjY2OTIsIDE2Nzc4MTE4LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTIxLCAxNzgyNjY5NSwgMTY3NzgxMjEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjQsIDE3ODI2Njk4LCAxNjc3ODEyNCwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEyNywgMTc4MjY3MDEsIDE2Nzc4MTI3LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTMwLCAxNzgyNjcwNCwgMTY3NzgxMzAsIDAsIDAsIDI2Mzc3fSwKQEAgLTQ2OCwyMiArNDY5LDMzIEBACiAgICAgezE2Nzc4MzI4LCAxNzgyNjkwMiwgMTY3NzgzMjgsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzEsIDE3ODI2OTA1LCAxNjc3ODMzMSwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODMzNCwgMTc4MjY5MDgsIDE2Nzc4MzM0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTU0LCAxODg3NTQ4NywgMzM1NTU1NTYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjEsIDE4ODc1NDk0LCAzMzU1NTU2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU2OCwgMTg4NzU1MDEsIDMzNTU1NTcwLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNzkyLCAxOTkyNDA4NCwgNTAzMzI3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI4MDIsIDE5OTI0MDk0LCA1MDMzMjgwNSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzNywgMTc4MjY5MTEsIDE2Nzc4MzM3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQwLCAxNzgyNjkxNCwgMTY3NzgzNDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDMsIDE3ODI2OTE3LCAxNjc3ODM0MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0NiwgMTc4MjY5MjAsIDE2Nzc4MzQ2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQ5LCAxNzgyNjkyMywgMTY3NzgzNDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTIsIDE3ODI2OTI2LCAxNjc3ODM1MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1NSwgMTc4MjY5MjksIDE2Nzc4MzU1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzU4LCAxNzgyNjkzMiwgMTY3NzgzNTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNjEsIDE3ODI2OTM1LCAxNjc3ODM2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4MSwgMTg4NzU1MTQsIDMzNTU1NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTg4LCAxODg3NTUyMSwgMzM1NTU1OTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MzM1NTU1OTUsIDE4ODc1NTI4LCAzMzU1NTU5NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwMiwgMTg4NzU1MzUsIDMzNTU1NjA0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjA5LCAxODg3NTU0MiwgMzM1NTU2MTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MTYsIDE4ODc1NTQ5LCAzMzU1NTYxOCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYyMywgMTg4NzU1NTYsIDMzNTU1NjI1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjMwLCAxODg3NTU2MywgMzM1NTU2MzIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MzcsIDE4ODc1NTcwLCAzMzU1NTYzOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgxOSwgMTk5MjQxMTEsIDUwMzMyODIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyODI5LCAxOTkyNDEyMSwgNTAzMzI4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjIsIDE4ODc1NTU1LCAzMzU1NTYyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYyOSwgMTg4NzU1NjIsIDMzNTU1NjMxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjM2LCAxODg3NTU2OSwgMzM1NTU2MzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NDMsIDE4ODc1NTc2LCAzMzU1NTY0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1MCwgMTg4NzU1ODMsIDMzNTU1NjUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjU3LCAxODg3NTU5MCwgMzM1NTU2NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NjQsIDE4ODc1NTk3LCAzMzU1NTY2NiwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTYzM30sCiAgICAgezAsIDQwLCAwLCAwLCAwLCAxMDExM30sCiAgICAgey00MCwgMCwgLTQwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMzQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTM0LCAwLCAtMzQsIDAsIDAsIDk5OTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCA5MzQ0fSwKIH07CiAKQEAgLTg0MCw2ICs4NTIsMzMgQEAKICAgICA1MTE3LAogICAgIDUxMDksCiAgICAgNTEwOSwKKyAgICA3Mjk2LAorICAgIDEwNzQsCisgICAgMTA0MiwKKyAgICA3Mjk3LAorICAgIDEwNzYsCisgICAgMTA0NCwKKyAgICA3Mjk4LAorICAgIDEwODYsCisgICAgMTA1NCwKKyAgICA3Mjk5LAorICAgIDEwODksCisgICAgMTA1NywKKyAgICA3MzAwLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAxLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAyLAorICAgIDEwOTgsCisgICAgMTA2NiwKKyAgICA3MzAzLAorICAgIDExMjMsCisgICAgMTEyMiwKKyAgICA3MzA0LAorICAgIDQyNTcxLAorICAgIDQyNTcwLAogICAgIDc4MzAsCiAgICAgMTA0LAogICAgIDgxNywKQEAgLTE3MzYsNjkgKzE3NzUsNjggQEAKICAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAogICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKICAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE0NSwgMTQ1LCAxNjMsIDE0NSwgMTQ1LCAxNDUsIDE2NCwgCi0gICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNDUsIDE3MSwgMTQ1LCAxNzIsIDE3MywgMTc0LCAxNzUsIAotICAgIDE0NSwgMTQ1LCAxNzYsIDE0NSwgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc4LCAxNzksIDM0LCAxODAsIDE0NSwgMTQ1LCAKKyAgICAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNDUsIDE3MSwgMTcyLCAxNDUsIDE3MywgMTc0LCAxNzUsIDE3NiwgCisgICAgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTc4LCAxNDUsIDE0NSwgMTc5LCAxODAsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE4MiwgMzQsIDE4MywgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODQsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODMsIDE4NCwgMTg1LCAxODYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE4NywgMTg4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODYsIDE4NywgMTg4LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE5MCwgMTkxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5MiwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxOTMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxOTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxOTUsIDE5NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxOTAsIDE5MSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDY0LCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE0NSwgMTk2LCAxNDUsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCA2NCwgCi0gICAgNjQsIDY0LCA2NCwgMjA1LCAyMDYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMjA3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIwOCwgCi0gICAgMjA5LCAxNDUsIDE0NSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDE0NSwgNjQsIDIxNSwgNjQsIDY0LCAyMTYsIDIxNywgCi0gICAgNjQsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjI1LCAyMjYsIDIyNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyOCwgMzQsIDIyOSwgMjMwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgNjQsIDE5NywgMTk4LCAxOTksIDIwMCwgMTQ1LCAyMDEsIDE0NSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgCisgICAgMjA4LCAyMDksIDY0LCA2NCwgNjQsIDY0LCAyMTAsIDIxMSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAyMTIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMTMsIDIxNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMjE1LCAyMTYsIDE0NSwgMTQ1LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMTQ1LCA2NCwgMjIyLCA2NCwgCisgICAgNjQsIDY0LCA2NCwgNjQsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjMwLCAyMzEsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIzMywgMzQsIDIzNCwgMjM1LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzMSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDIzMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMjM4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAyMzcsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAyNDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMjQxLCAzNCwgMjQyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzMSwgMzQsIDM0LCAyMzksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzNiwgMzQsIDM0LCAyNDQsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIwMSw4ICsyMjM5LDggQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDAsIDE0NSwgMjQxLCAyNDIsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0NSwgMTQ1LCAKKyAgICAyNDYsIDI0NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCkBAIC0yMjM4LDcgKzIyNzYsNyBAQAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMjc0LDcgKzIzMTIsNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMzExLDcgKzIzNDksNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0yMzQ3LDcgKzIzODUsNyBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNjUsIAogICAgIDMwLCAzMSwgNjYsIDY3LCA2OCwgNjgsIDMwLCAzMSwgNjksIDcwLCA3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDgwLCAyMCwgMjAsIAotICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgMjAsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAorICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgODQsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAogICAgIDg5LCA5MCwgMjAsIDIwLCA5MSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDkyLCAyMCwgMjAsIDkzLCAyMCwgMjAsIAogICAgIDkzLCAyMCwgMjAsIDIwLCA5NCwgOTMsIDk1LCA5NiwgOTYsIDk3LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk4LCAyMCwgNTUsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTksIDEwMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKQEAgLTI0MzUsMTUyICsyNDczLDE1MiBAQAogICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCAxMDIsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAKLSAgICAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAotICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAKLSAgICAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAyNSwgMTgsIDE4LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIAorICAgIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNSwgNTUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIAorICAgIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgCi0gICAgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgMTgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgCi0gICAgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIAotICAgIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgCi0gICAgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAKLSAgICAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgCisgICAgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIAorICAgIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAKKyAgICAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgCisgICAgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIAorICAgIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAKKyAgICAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yNTkzLDEwOSArMjYzMSwxMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAorICAgIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjQyLCAyNDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAyNDMsIDI0NCwgCisgICAgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI0MiwgMjAsIAotICAgIDIwLCAyMCwgMjQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI1MiwgMjAsIDIwLCAyMCwgMjUzLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKQEAgLTI3MDQsNDkgKzI3NDMsNDkgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyMCwgMjAsIDI1MCwgMjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyMCwgMjAsIDI2MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAwLCAyNTIsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgCi0gICAgMCwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUzLCAyNTEsIDI1NCwgMjUxLCAyNTUsIDI1MSwgMjU2LCAKLSAgICAyNTEsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTcsIDI1NywgMjU4LCAyNTgsIDI1OCwgCi0gICAgMjU4LCAyNTksIDI1OSwgMjYwLCAyNjAsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMjY2LCAKLSAgICAyNjcsIDI2OCwgMjY5LCAyNzAsIDI3MSwgMjcyLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAyNzksIDI4MCwgCi0gICAgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgMjkzLCAyOTQsIAotICAgIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMDYsIDMwNywgMzA4LCAKLSAgICAzMDksIDMxMCwgMjUxLCAyNTEsIDMxMSwgMzEyLCAzMTMsIDAsIDMxNCwgMzE1LCAyNTIsIDI1MiwgMzE2LCAzMTYsIDMxNywgCi0gICAgNiwgMzE4LCA2LCA2LCA2LCAzMTksIDMyMCwgMzIxLCAwLCAzMjIsIDMyMywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDYsIAotICAgIDYsIDYsIDI1MSwgMjUxLCAzMjYsIDMyNywgMCwgMCwgMzI4LCAzMjksIDI1MiwgMjUyLCAzMzAsIDMzMCwgMCwgNiwgNiwgNiwgCi0gICAgMjUxLCAyNTEsIDMzMSwgMzMyLCAzMzMsIDEyNiwgMzM0LCAzMzUsIDI1MiwgMjUyLCAzMzYsIDMzNiwgMTMwLCA2LCA2LCA2LCAKLSAgICAwLCAwLCAzMzcsIDMzOCwgMzM5LCAwLCAzNDAsIDM0MSwgMzQyLCAzNDIsIDM0MywgMzQzLCAzNDQsIDYsIDYsIDAsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCi0gICAgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNDUsIDEwMSwgCi0gICAgMCwgMCwgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNDUsIDI2LCAyMiwgMjMsIAotICAgIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAzMSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjEsIDI2NCwgMjYxLCAyNjUsIDI2MSwgMjY2LCAyNjEsIDAsIAorICAgIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDAsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MSwgMjcxLCAyNzIsIDI3MiwgMCwgMCwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgCisgICAgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIAorICAgIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAKKyAgICAzMDcsIDMwOCwgMzA5LCAzMTAsIDMxMSwgMzEyLCAzMTMsIDMxNCwgMzE1LCAzMTYsIDMxNywgMzE4LCAzMTksIDMyMCwgCisgICAgMjYxLCAyNjEsIDMyMSwgMzIyLCAzMjMsIDAsIDMyNCwgMzI1LCAyNjIsIDI2MiwgMzI2LCAzMjYsIDMyNywgNiwgMzI4LCA2LCAKKyAgICA2LCA2LCAzMjksIDMzMCwgMzMxLCAwLCAzMzIsIDMzMywgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzUsIDYsIDYsIDYsIDI2MSwgCisgICAgMjYxLCAzMzYsIDMzNywgMCwgMCwgMzM4LCAzMzksIDI2MiwgMjYyLCAzNDAsIDM0MCwgMCwgNiwgNiwgNiwgMjYxLCAyNjEsIAorICAgIDM0MSwgMzQyLCAzNDMsIDEyNiwgMzQ0LCAzNDUsIDI2MiwgMjYyLCAzNDYsIDM0NiwgMTMwLCA2LCA2LCA2LCAwLCAwLCAKKyAgICAzNDcsIDM0OCwgMzQ5LCAwLCAzNTAsIDM1MSwgMzUyLCAzNTIsIDM1MywgMzUzLCAzNTQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNTUsIDEwMSwgMCwgCisgICAgMCwgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNTUsIDI2LCAyMiwgMjMsIAorICAgIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1LCA1LCAxMjAsIDUsIDUsIDUsIDUsIDEyMCwgNSwgNSwgMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzUyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMTIwLCA1LCAzNTMsIDUsIDEyMCwgNSwgMzU0LCAzNTUsIDEyMCwgMTIwLCAzNTIsIDIwLCAxMjAsIDEyMCwgMzU2LCAxMjAsIAorICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzYyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMTIwLCA1LCAzNjMsIDUsIDEyMCwgNSwgMzY0LCAzNjUsIDEyMCwgMTIwLCAzNjIsIDIwLCAxMjAsIDEyMCwgMzY2LCAxMjAsIAogICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgMjAsIDUsIDUsIDIwLCAyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDEyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDM1NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgCi0gICAgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIAotICAgIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAyNDEsIDI0MSwgMjQxLCAzMCwgMzEsIDI0MSwgMjQxLCAKKyAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNjcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIAorICAgIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAKKyAgICAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI3NjIsMjggKzI4MDEsMjggQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIAotICAgIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKLSAgICAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAKKyAgICAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCisgICAgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKLSAgICAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAotICAgIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAKLSAgICAzNDksIDM1MCwgMzUxLCAyNywgMzQ1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIAorICAgIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgCisgICAgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAzNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIAotICAgIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAKLSAgICAzNTAsIDM1MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAKKyAgICAzNjAsIDM2MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjgwNSwxOCArMjg0NCwxOCBAQAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDAsIAotICAgIDMwLCAzMSwgMzYyLCAzNjMsIDM2NCwgMzY1LCAzNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2NywgMzY4LCAzNjksIAotICAgIDM3MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzcxLCAzNzEsIDMwLCAKKyAgICAzMCwgMzEsIDM3MiwgMzczLCAzNzQsIDM3NSwgMzc2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAKKyAgICAzODAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM4MSwgMzgxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4MjksOCArMjg2OCw4IEBACiAgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MywgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzgzLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4ODIsMTQgKzI5MjEsMTQgQEAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4OTgsNyArMjkzNyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MDgsNyArMjk0Nyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MTYsNDcgKzI5NTUsNDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzQsIAotICAgIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzg0LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk2NCw3ICszMDAzLDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk3MywxNCArMzAxMiwxNCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk4OCw4ICszMDI3LDggQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCAzNzQsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgMzg0LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAwMiwxMSArMzA0MSwxMSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMTQsMTAgKzMwNTMsMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDI1LDcgKzMwNjQsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDMzLDQwICszMDcyLDQwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTA2LDI2ICszMTQ1LDI2IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzNzUsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzc2LCAyMCwgNTUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM4NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzODYsIDIwLCA1NSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAzODAsIDAsIDAsIDM4MSwgMzgyLCAzODMsIDM4NCwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzODcsIDM4OCwgMzg5LCAzOTAsIDM4NywgMCwgMzkxLCAzOTIsIDM5MywgCisgICAgMzk0LCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDEwMSwgMTAxLCAKLSAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICAxMDEsIDEwMSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCA1LCA1NSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKICAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAKQEAgLTMxNTgsMTQgKzMxOTcsMTQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMzg1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDM4NywgMzg4LCAzODksIDM5MCwgCi0gICAgMzkxLCAzOTIsIDM5MywgMzk0LCAzOTUsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIAotICAgIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgNDE1LCA0MTYsIDQxNywgNDE4LCAKLSAgICA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIDQyOSwgNDMwLCA0MzEsIDQzMiwgCi0gICAgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCA0NDMsIDQ0NCwgNDQ1LCA0NDYsIAotICAgIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgNDU3LCA0NTgsIDQ1OSwgNDYwLCAKLSAgICA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjAsIDIwLCAzOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCAKKyAgICA0MDEsIDQwMiwgNDAzLCA0MDQsIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgCisgICAgNDE1LCA0MTYsIDQxNywgNDE4LCA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIAorICAgIDQyOSwgNDMwLCA0MzEsIDQzMiwgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCAKKyAgICA0NDMsIDQ0NCwgNDQ1LCA0NDYsIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgCisgICAgNDU3LCA0NTgsIDQ1OSwgNDYwLCA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNDY2LCA0NjcsIDQ2OCwgNDY5LCA0NzAsIAorICAgIDQ3MSwgNDcyLCA0NzMsIDQ3NCwgNDc1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCAKICAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMxODYsMTUgKzMyMjUsMTUgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIwOCw5ICszMjQ3LDkgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDQ2NywgNDY4LCA0NjksIAotICAgIDQ3MCwgNDcxLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNDc0LCA0NzUsIDQ3NiwgCi0gICAgNDc3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgNDc4LCA0NzksIAorICAgIDQ4MCwgNDgxLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgNDg0LCA0ODUsIDQ4NiwgCisgICAgNDg3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIyNyw3ICszMjY2LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjQyLDEzICszMjgxLDEzIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDAsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIAorICAgIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgMCwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjY0LDcgKzMzMDMsNyBAQAogICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDQ3OSwgNDc5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNDg5LCA0ODksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAwLCA1LCAKQEAgLTMyOTAsNyArMzMyOSw3IEBACiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMzMyMCwyOTcgKzMzNTksMzMyIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDAsIDAsIDAsIDAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgCi0gICAgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1LCAKLSAgICA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM1NiwgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNTUsIDUsIDU1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAKKyAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgNSwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCA1NSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCiAgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0zNzAwLDIxOCArMzc3NCwyMjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQ1LCAzNDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU1LCAzNTUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAKKyAgICAzNjEsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCAwLCAwLCAwLCAwLCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA1LCA1LCAwLCAwLCAwLCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzc0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCkBAIC0zOTI0LDEzICs0MDAxLDEzIEBACiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCiB9OwogCiAvKiBSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzIGRvdWJsZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzCkBAIC0zOTk2LDExICs0MDczLDEzIEBACiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKICAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNDUwOgogICAgIGNhc2UgMHgxMTREMDoKICAgICBjYXNlIDB4MTE2NTA6CiAgICAgY2FzZSAweDExNkMwOgogICAgIGNhc2UgMHgxMTczMDoKICAgICBjYXNlIDB4MTE4RTA6CisgICAgY2FzZSAweDExQzUwOgogICAgIGNhc2UgMHgxNkE2MDoKICAgICBjYXNlIDB4MTZCNTA6CiAgICAgY2FzZSAweDFEN0NFOgpAQCAtNDAwOCw2ICs0MDg3LDcgQEAKICAgICBjYXNlIDB4MUQ3RTI6CiAgICAgY2FzZSAweDFEN0VDOgogICAgIGNhc2UgMHgxRDdGNjoKKyAgICBjYXNlIDB4MUU5NTA6CiAgICAgY2FzZSAweDFGMTAwOgogICAgIGNhc2UgMHgxRjEwMToKICAgICBjYXNlIDB4MUYxMEI6CkBAIC00MTA4LDExICs0MTg4LDE0IEBACiAgICAgY2FzZSAweDExMUQxOgogICAgIGNhc2UgMHgxMTFFMToKICAgICBjYXNlIDB4MTEyRjE6CisgICAgY2FzZSAweDExNDUxOgogICAgIGNhc2UgMHgxMTREMToKICAgICBjYXNlIDB4MTE2NTE6CiAgICAgY2FzZSAweDExNkMxOgogICAgIGNhc2UgMHgxMTczMToKICAgICBjYXNlIDB4MTE4RTE6CisgICAgY2FzZSAweDExQzUxOgorICAgIGNhc2UgMHgxMUM1QToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKQEAgLTQxMjgsMTcgKzQyMTEsMjIgQEAKICAgICBjYXNlIDB4MUQ3RUQ6CiAgICAgY2FzZSAweDFEN0Y3OgogICAgIGNhc2UgMHgxRThDNzoKKyAgICBjYXNlIDB4MUU5NTE6CiAgICAgY2FzZSAweDFGMTAyOgogICAgIGNhc2UgMHgyMDkyQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMDsKKyAgICBjYXNlIDB4MEQ1QzoKICAgICBjYXNlIDB4MjE1MjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMC4wOwogICAgIGNhc2UgMHgxMDlGNjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY0OgogICAgIGNhc2UgMHgwQjc1OgorICAgIGNhc2UgMHgwRDc2OgogICAgIGNhc2UgMHhBODMzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2LjA7CisgICAgY2FzZSAweDBENTg6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTYwLjA7CiAgICAgY2FzZSAweDAwQkQ6CiAgICAgY2FzZSAweDBCNzM6CiAgICAgY2FzZSAweDBENzQ6CkBAIC00MTUyLDYgKzQyNDAsOCBAQAogICAgIGNhc2UgMHgxMEU3QjoKICAgICBjYXNlIDB4MTI0NjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMi4wOworICAgIGNhc2UgMHgwRDVCOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIwLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKQEAgLTQxNzAsNiArNDI2MCw5IEBACiAgICAgY2FzZSAweDEyNDYyOgogICAgIGNhc2UgMHgxMjQ2MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80LjA7CisgICAgY2FzZSAweDBENTk6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNDAuMDsKKyAgICBjYXNlIDB4MEQ1RToKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CiAgICAgY2FzZSAweDIxNTk6CkBAIC00MTc5LDYgKzQyNzIsNyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzcuMDsKICAgICBjYXNlIDB4MDlGNToKICAgICBjYXNlIDB4MEI3NjoKKyAgICBjYXNlIDB4MEQ3NzoKICAgICBjYXNlIDB4MjE1QjoKICAgICBjYXNlIDB4QTgzNDoKICAgICBjYXNlIDB4MTI0NUY6CkBAIC00MjM2LDYgKzQzMzAsNyBAQAogICAgIGNhc2UgMHgxMTFFQToKICAgICBjYXNlIDB4MTE3M0E6CiAgICAgY2FzZSAweDExOEVBOgorICAgIGNhc2UgMHgxMUM2MzoKICAgICBjYXNlIDB4MTZCNUI6CiAgICAgY2FzZSAweDFEMzY5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMDsKQEAgLTQyNjksNiArNDM2NCw3IEBACiAgICAgY2FzZSAweDEwRTcyOgogICAgIGNhc2UgMHgxMTA2NDoKICAgICBjYXNlIDB4MTExRjM6CisgICAgY2FzZSAweDExQzZDOgogICAgIGNhc2UgMHgxNkI1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMC4wOwogICAgIGNhc2UgMHgwQkYyOgpAQCAtNDQ3MCwxMSArNDU2NiwxNCBAQAogICAgIGNhc2UgMHgxMTFEMjoKICAgICBjYXNlIDB4MTExRTI6CiAgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTQ1MjoKICAgICBjYXNlIDB4MTE0RDI6CiAgICAgY2FzZSAweDExNjUyOgogICAgIGNhc2UgMHgxMTZDMjoKICAgICBjYXNlIDB4MTE3MzI6CiAgICAgY2FzZSAweDExOEUyOgorICAgIGNhc2UgMHgxMUM1MjoKKyAgICBjYXNlIDB4MTFDNUI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC00NDk0LDYgKzQ1OTMsNyBAQAogICAgIGNhc2UgMHgxRDdFRToKICAgICBjYXNlIDB4MUQ3Rjg6CiAgICAgY2FzZSAweDFFOEM4OgorICAgIGNhc2UgMHgxRTk1MjoKICAgICBjYXNlIDB4MUYxMDM6CiAgICAgY2FzZSAweDIyMzkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wOwpAQCAtNDUzNyw2ICs0NjM3LDcgQEAKICAgICBjYXNlIDB4MTExRUI6CiAgICAgY2FzZSAweDExNzNCOgogICAgIGNhc2UgMHgxMThFQjoKKyAgICBjYXNlIDB4MTFDNjQ6CiAgICAgY2FzZSAweDFEMzZBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAuMDsKICAgICBjYXNlIDB4MTAxMUE6CkBAIC00NjU3LDExICs0NzU4LDE0IEBACiAgICAgY2FzZSAweDExMUQzOgogICAgIGNhc2UgMHgxMTFFMzoKICAgICBjYXNlIDB4MTEyRjM6CisgICAgY2FzZSAweDExNDUzOgogICAgIGNhc2UgMHgxMTREMzoKICAgICBjYXNlIDB4MTE2NTM6CiAgICAgY2FzZSAweDExNkMzOgogICAgIGNhc2UgMHgxMTczMzoKICAgICBjYXNlIDB4MTE4RTM6CisgICAgY2FzZSAweDExQzUzOgorICAgIGNhc2UgMHgxMUM1QzoKICAgICBjYXNlIDB4MTI0MDE6CiAgICAgY2FzZSAweDEyNDA4OgogICAgIGNhc2UgMHgxMjQxNzoKQEAgLTQ2ODYsNiArNDc5MCw3IEBACiAgICAgY2FzZSAweDFEN0VGOgogICAgIGNhc2UgMHgxRDdGOToKICAgICBjYXNlIDB4MUU4Qzk6CisgICAgY2FzZSAweDFFOTUzOgogICAgIGNhc2UgMHgxRjEwNDoKICAgICBjYXNlIDB4MjBBRkQ6CiAgICAgY2FzZSAweDIwQjE5OgpAQCAtNDY5NiwxMCArNDgwMSwxMyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjY6CiAgICAgY2FzZSAweDBCNzc6CisgICAgY2FzZSAweDBENzg6CiAgICAgY2FzZSAweEE4MzU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMTYuMDsKICAgICBjYXNlIDB4MEYyQjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8yLjA7CisgICAgY2FzZSAweDBENUQ6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMjAuMDsKICAgICBjYXNlIDB4MDBCRToKICAgICBjYXNlIDB4MDlGODoKICAgICBjYXNlIDB4MEI3NDoKQEAgLTQ3MTEsNiArNDgxOSw4IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvNS4wOwogICAgIGNhc2UgMHgyMTVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzguMDsKKyAgICBjYXNlIDB4MEQ1QToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84MC4wOwogICAgIGNhc2UgMHgxMzc0OgogICAgIGNhc2UgMHgzMDNBOgogICAgIGNhc2UgMHgzMjRBOgpAQCAtNDcyNCw2ICs0ODM0LDcgQEAKICAgICBjYXNlIDB4MTEwNUQ6CiAgICAgY2FzZSAweDExMUVDOgogICAgIGNhc2UgMHgxMThFQzoKKyAgICBjYXNlIDB4MTFDNjU6CiAgICAgY2FzZSAweDFEMzZCOgogICAgIGNhc2UgMHgyMDk4MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwLjA7CkBAIC00ODM2LDExICs0OTQ3LDE0IEBACiAgICAgY2FzZSAweDExMUQ0OgogICAgIGNhc2UgMHgxMTFFNDoKICAgICBjYXNlIDB4MTEyRjQ6CisgICAgY2FzZSAweDExNDU0OgogICAgIGNhc2UgMHgxMTRENDoKICAgICBjYXNlIDB4MTE2NTQ6CiAgICAgY2FzZSAweDExNkM0OgogICAgIGNhc2UgMHgxMTczNDoKICAgICBjYXNlIDB4MTE4RTQ6CisgICAgY2FzZSAweDExQzU0OgorICAgIGNhc2UgMHgxMUM1RDoKICAgICBjYXNlIDB4MTI0MDI6CiAgICAgY2FzZSAweDEyNDA5OgogICAgIGNhc2UgMHgxMjQwRjoKQEAgLTQ4NjYsNiArNDk4MCw3IEBACiAgICAgY2FzZSAweDFEN0YwOgogICAgIGNhc2UgMHgxRDdGQToKICAgICBjYXNlIDB4MUU4Q0E6CisgICAgY2FzZSAweDFFOTU0OgogICAgIGNhc2UgMHgxRjEwNToKICAgICBjYXNlIDB4MjAwNjQ6CiAgICAgY2FzZSAweDIwMEUyOgpAQCAtNDg4Niw2ICs1MDAxLDcgQEAKICAgICBjYXNlIDB4MTEwNUU6CiAgICAgY2FzZSAweDExMUVEOgogICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTFDNjY6CiAgICAgY2FzZSAweDEyNDY3OgogICAgIGNhc2UgMHgxRDM2QzoKICAgICBjYXNlIDB4MjA5OEM6CkBAIC01MDA1LDExICs1MTIxLDE0IEBACiAgICAgY2FzZSAweDExMUQ1OgogICAgIGNhc2UgMHgxMTFFNToKICAgICBjYXNlIDB4MTEyRjU6CisgICAgY2FzZSAweDExNDU1OgogICAgIGNhc2UgMHgxMTRENToKICAgICBjYXNlIDB4MTE2NTU6CiAgICAgY2FzZSAweDExNkM1OgogICAgIGNhc2UgMHgxMTczNToKICAgICBjYXNlIDB4MTE4RTU6CisgICAgY2FzZSAweDExQzU1OgorICAgIGNhc2UgMHgxMUM1RToKICAgICBjYXNlIDB4MTI0MDM6CiAgICAgY2FzZSAweDEyNDBBOgogICAgIGNhc2UgMHgxMjQxMDoKQEAgLTUwMzEsNiArNTE1MCw3IEBACiAgICAgY2FzZSAweDFEN0YxOgogICAgIGNhc2UgMHgxRDdGQjoKICAgICBjYXNlIDB4MUU4Q0I6CisgICAgY2FzZSAweDFFOTU1OgogICAgIGNhc2UgMHgxRjEwNjoKICAgICBjYXNlIDB4MjAxMjE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1LjA7CkBAIC01MDY3LDYgKzUxODcsNyBAQAogICAgIGNhc2UgMHgxMTA1RjoKICAgICBjYXNlIDB4MTExRUU6CiAgICAgY2FzZSAweDExOEVFOgorICAgIGNhc2UgMHgxMUM2NzoKICAgICBjYXNlIDB4MTI0Njg6CiAgICAgY2FzZSAweDFEMzZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAuMDsKQEAgLTUxNzIsMTEgKzUyOTMsMTQgQEAKICAgICBjYXNlIDB4MTExRDY6CiAgICAgY2FzZSAweDExMUU2OgogICAgIGNhc2UgMHgxMTJGNjoKKyAgICBjYXNlIDB4MTE0NTY6CiAgICAgY2FzZSAweDExNEQ2OgogICAgIGNhc2UgMHgxMTY1NjoKICAgICBjYXNlIDB4MTE2QzY6CiAgICAgY2FzZSAweDExNzM2OgogICAgIGNhc2UgMHgxMThFNjoKKyAgICBjYXNlIDB4MTFDNTY6CisgICAgY2FzZSAweDExQzVGOgogICAgIGNhc2UgMHgxMjQwNDoKICAgICBjYXNlIDB4MTI0MEI6CiAgICAgY2FzZSAweDEyNDExOgpAQCAtNTE5NCw2ICs1MzE4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjI6CiAgICAgY2FzZSAweDFEN0ZDOgogICAgIGNhc2UgMHgxRThDQzoKKyAgICBjYXNlIDB4MUU5NTY6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKQEAgLTUyMDgsNiArNTMzMyw3IEBACiAgICAgY2FzZSAweDExMDYwOgogICAgIGNhc2UgMHgxMTFFRjoKICAgICBjYXNlIDB4MTE4RUY6CisgICAgY2FzZSAweDExQzY4OgogICAgIGNhc2UgMHgxRDM2RToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwLjA7CiAgICAgY2FzZSAweDEwMTFFOgpAQCAtNTI5MywxMSArNTQxOSwxNCBAQAogICAgIGNhc2UgMHgxMTFENzoKICAgICBjYXNlIDB4MTExRTc6CiAgICAgY2FzZSAweDExMkY3OgorICAgIGNhc2UgMHgxMTQ1NzoKICAgICBjYXNlIDB4MTE0RDc6CiAgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKICAgICBjYXNlIDB4MTE3Mzc6CiAgICAgY2FzZSAweDExOEU3OgorICAgIGNhc2UgMHgxMUM1NzoKKyAgICBjYXNlIDB4MTFDNjA6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC01MzE2LDYgKzU0NDUsNyBAQAogICAgIGNhc2UgMHgxRDdGMzoKICAgICBjYXNlIDB4MUQ3RkQ6CiAgICAgY2FzZSAweDFFOENEOgorICAgIGNhc2UgMHgxRTk1NzoKICAgICBjYXNlIDB4MUYxMDg6CiAgICAgY2FzZSAweDIwMDAxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wOwpAQCAtNTMzNCw2ICs1NDY0LDcgQEAKICAgICBjYXNlIDB4MTEwNjE6CiAgICAgY2FzZSAweDExMUYwOgogICAgIGNhc2UgMHgxMThGMDoKKyAgICBjYXNlIDB4MTFDNjk6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CkBAIC01NDE3LDExICs1NTQ4LDE0IEBACiAgICAgY2FzZSAweDExMUQ4OgogICAgIGNhc2UgMHgxMTFFODoKICAgICBjYXNlIDB4MTEyRjg6CisgICAgY2FzZSAweDExNDU4OgogICAgIGNhc2UgMHgxMTREODoKICAgICBjYXNlIDB4MTE2NTg6CiAgICAgY2FzZSAweDExNkM4OgogICAgIGNhc2UgMHgxMTczODoKICAgICBjYXNlIDB4MTE4RTg6CisgICAgY2FzZSAweDExQzU4OgorICAgIGNhc2UgMHgxMUM2MToKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTU0MzksNiArNTU3Myw3IEBACiAgICAgY2FzZSAweDFEN0Y0OgogICAgIGNhc2UgMHgxRDdGRToKICAgICBjYXNlIDB4MUU4Q0U6CisgICAgY2FzZSAweDFFOTU4OgogICAgIGNhc2UgMHgxRjEwOToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDguMDsKICAgICBjYXNlIDB4MTA5RkQ6CkBAIC01NDUxLDYgKzU1ODYsNyBAQAogICAgIGNhc2UgMHgxMTA2MjoKICAgICBjYXNlIDB4MTExRjE6CiAgICAgY2FzZSAweDExOEYxOgorICAgIGNhc2UgMHgxMUM2QToKICAgICBjYXNlIDB4MUQzNzA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MC4wOwogICAgIGNhc2UgMHgxMDEyMDoKQEAgLTU1MzUsMTEgKzU2NzEsMTQgQEAKICAgICBjYXNlIDB4MTExRDk6CiAgICAgY2FzZSAweDExMUU5OgogICAgIGNhc2UgMHgxMTJGOToKKyAgICBjYXNlIDB4MTE0NTk6CiAgICAgY2FzZSAweDExNEQ5OgogICAgIGNhc2UgMHgxMTY1OToKICAgICBjYXNlIDB4MTE2Qzk6CiAgICAgY2FzZSAweDExNzM5OgogICAgIGNhc2UgMHgxMThFOToKKyAgICBjYXNlIDB4MTFDNTk6CisgICAgY2FzZSAweDExQzYyOgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNTU1OSw2ICs1Njk4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgogICAgIGNhc2UgMHgxRThDRjoKKyAgICBjYXNlIDB4MUU5NTk6CiAgICAgY2FzZSAweDFGMTBBOgogICAgIGNhc2UgMHgyRjg5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMDsKQEAgLTU1NzQsNiArNTcxNCw3IEBACiAgICAgY2FzZSAweDExMDYzOgogICAgIGNhc2UgMHgxMTFGMjoKICAgICBjYXNlIDB4MTE4RjI6CisgICAgY2FzZSAweDExQzZCOgogICAgIGNhc2UgMHgxRDM3MToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwLjA7CiAgICAgY2FzZSAweDEwMTIxOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCA3ZTZmMzY0Li5hYjZiMjM1IDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMjY1LDcgKzI2NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKK3BhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb2JwLCBQeU9iamVjdCAqKmNhbGxiYWNrcCkKIHsKICAgICByZXR1cm4gUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgZnVuY25hbWUsIDEsIDIsIG9icCwgY2FsbGJhY2twKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQAogICAgIG1ldGhvZChQeU9iamVjdCAqcHJveHkpIHsgXAogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3BlY2lhbCk7IFwKICAgICAgICAgICAgIFVOV1JBUChwcm94eSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCAiIik7IFwKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCBOVUxMKTsgXAogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvUEMvX21zaS5jIGIvUEMvX21zaS5jCmluZGV4IDllN2UzNmQuLjc4OWIwNGYgMTAwNjQ0Ci0tLSBhL1BDL19tc2kuYworKysgYi9QQy9fbXNpLmMKQEAgLTEwNDYsMTIgKzEwNDYsMTIgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGludClNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChpbnQpTVNJREJPUEVOX0NSRUFURSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9ESVJFQ1QiLCAoaW50KU1TSURCT1BFTl9ESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAoaW50KU1TSURCT1BFTl9SRUFET05MWSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChpbnQpTVNJREJPUEVOX1RSQU5TQUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChpbnQpTVNJREJPUEVOX1BBVENIRklMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEVESVJFQ1QiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChsb25nKU1TSURCT1BFTl9DUkVBVEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0RJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9SRUFET05MWSIsIChsb25nKU1TSURCT1BFTl9SRUFET05MWSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChsb25nKU1TSURCT1BFTl9UUkFOU0FDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAobG9uZylNU0lEQk9QRU5fUEFUQ0hGSUxFKTsKIAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fTkFNRVMpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fVFlQRVMpOwpkaWZmIC0tZ2l0IGEvUEMvX3Rlc3Rjb25zb2xlLmMgYi9QQy9fdGVzdGNvbnNvbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzkzNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvX3Rlc3Rjb25zb2xlLmMKQEAgLTAsMCArMSwxMzEgQEAKKworLyogVGVzdGluZyBtb2R1bGUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBtb2R1bGVzIChQRVAgNDg5KQorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgIi4uXG1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworIC8qIFRoZSBmdWxsIGRlZmluaXRpb24gaXMgaW4gaW9tb2R1bGUuIFdlIHJlcHJvZHVjZQorIGVub3VnaCBoZXJlIHRvIGdldCB0aGUgaGFuZGxlLCB3aGljaCBpcyBhbGwgd2Ugd2FudC4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgSEFORExFIGhhbmRsZTsKK30gd2luY29uc29sZWlvOworCisKK3N0YXRpYyBpbnQgZXhlY2Z1bmMoUHlPYmplY3QgKm0pCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5TW9kdWxlRGVmX1Nsb3QgdGVzdGNvbnNvbGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3Rlc3Rjb25zb2xlCisKK190ZXN0Y29uc29sZS53cml0ZV9pbnB1dAorICAgIGZpbGU6IG9iamVjdAorICAgIHM6IFB5Qnl0ZXNPYmplY3QKKworV3JpdGVzIFVURi0xNi1MRSBlbmNvZGVkIGJ5dGVzIHRvIHRoZSBjb25zb2xlIGFzIGlmIHR5cGVkIGJ5IGEgdXNlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OGY5NTYzZGIzNGFlZGIzIGlucHV0PTRjNzc0ZjJkMDU3NzBiYzZdKi8KK3sKKyAgICBJTlBVVF9SRUNPUkQgKnJlYyA9IE5VTEw7CisgICAgCisgICAgaWYgKCFQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2soZmlsZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIHJhdyBjb25zb2xlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjb25zdCB3Y2hhcl90ICpwID0gKGNvbnN0IHdjaGFyX3QgKilQeUJ5dGVzX0FTX1NUUklORyhzKTsKKyAgICBEV09SRCBzaXplID0gKERXT1JEKVB5Qnl0ZXNfR0VUX1NJWkUocykgLyBzaXplb2Yod2NoYXJfdCk7CisKKyAgICByZWMgPSAoSU5QVVRfUkVDT1JEKilQeU1lbV9NYWxsb2Moc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICBpZiAoIXJlYykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtZW1zZXQocmVjLCAwLCBzaXplb2YoSU5QVVRfUkVDT1JEKSAqIHNpemUpOworICAgIAorICAgIElOUFVUX1JFQ09SRCAqcHJlYyA9IHJlYzsKKyAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3AsICsrcHJlYykgeworICAgICAgICBwcmVjLT5FdmVudFR5cGUgPSBLRVlfRVZFTlQ7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LmJLZXlEb3duID0gVFJVRTsKKyAgICAgICAgcHJlYy0+RXZlbnQuS2V5RXZlbnQud1JlcGVhdENvdW50ID0gMTA7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LnVDaGFyLlVuaWNvZGVDaGFyID0gKnA7CisgICAgfQorCisgICAgSEFORExFIGhJbnB1dCA9ICgod2luY29uc29sZWlvKilmaWxlKS0+aGFuZGxlOworICAgIERXT1JEIHRvdGFsID0gMDsKKyAgICB3aGlsZSAodG90YWwgPCBzaXplKSB7CisgICAgICAgIERXT1JEIHdyb3RlOworICAgICAgICBpZiAoIVdyaXRlQ29uc29sZUlucHV0VyhoSW5wdXQsICZyZWNbdG90YWxdLCAoc2l6ZSAtIHRvdGFsKSwgJndyb3RlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHRvdGFsICs9IHdyb3RlOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoKHZvaWQqKXJlYyk7CisgICAgCisgICAgUHlfUkVUVVJOX05PTkU7CitlcnJvcjoKKyAgICBpZiAocmVjKQorICAgICAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfdGVzdGNvbnNvbGUucmVhZF9vdXRwdXQKKyAgICBmaWxlOiBvYmplY3QKKworUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NjMxMGQ4MWE3M2U2ZDIgaW5wdXQ9YjM1MjFmNjRiMWI1NThlM10qLworeworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaW5jbHVkZSAiY2xpbmljXF90ZXN0Y29uc29sZS5jLmgiCisKK1B5TWV0aG9kRGVmIHRlc3Rjb25zb2xlX21ldGhvZHNbXSA9IHsKKyAgICBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGCisgICAgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIHRlc3Rjb25zb2xlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJfdGVzdGNvbnNvbGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJUZXN0IG1vZHVsZSBmb3IgdGhlIFdpbmRvd3MgY29uc29sZSIpLCAvKiBtX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgdGVzdGNvbnNvbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICB0ZXN0Y29uc29sZV9zbG90cywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdGNvbnNvbGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJnRlc3Rjb25zb2xlX2RlZik7Cit9CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IGFkYmI3MzMuLjE3Y2MzMGQgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC03MTgsNyArNzE4LDcgQEAKICAqIDEgaWYgdGhlIFB5dGhvbi1kbGwgZG9lcyBub3QgZXhwb3J0IHRoZSBmdW5jdGlvbnMgd2UgbmVlZAogICogMiBpZiBubyBpbnN0YWxsLXNjcmlwdCBpcyBzcGVjaWZpZWQgaW4gcGF0aG5hbWUKICAqIDMgaWYgdGhlIGluc3RhbGwtc2NyaXB0IGZpbGUgY291bGQgbm90IGJlIG9wZW5lZAotICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvdGhlcndpc2UsCisgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIFB5UnVuX1NpbXBsZVN0cmluZygpIG9yIFB5X0ZpbmFsaXplRXgoKSBvdGhlcndpc2UsCiAgKiB3aGljaCBpcyAwIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIC0xIGlmIGFuIGV4Y2VwdGlvbiBoYWQgb2NjdXJyZWQKICAqIGluIHRoZSBpbnN0YWxsLXNjcmlwdC4KICAqLwpAQCAtNzMxLDcgKzczMSw3IEBACiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfSW5pdGlhbGl6ZSwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5U3lzX1NldEFyZ3YsIChpbnQsIHdjaGFyX3QgKiopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5UnVuX1NpbXBsZVN0cmluZywgKGNoYXIgKikpOwotICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0ZpbmFsaXplLCAodm9pZCkpOworICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlfRmluYWxpemVFeCwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeV9CdWlsZFZhbHVlLCAoY2hhciAqLCAuLi4pKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUNGdW5jdGlvbl9OZXcsCiAgICAgICAgICAgICAgKFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICopKTsKQEAgLTczOSw3ICs3MzksNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5RXJyX0Zvcm1hdCwgKFB5T2JqZWN0ICosIGNoYXIgKikpOwogCiAgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeVN5c19TZXRBcmd2Ci0gICAgICAgIHx8ICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5X0ZpbmFsaXplKQorICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZUV4KQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGlmICghUHlfQnVpbGRWYWx1ZSB8fCAhUHlBcmdfUGFyc2VUdXBsZSB8fCAhUHlFcnJfRm9ybWF0KQpAQCAtNzg2LDcgKzc4Niw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CiAKICAgICBjbG9zZShmaCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg0OCwxMSArODUwLDExIEBACiAgICAgaW50IHJjOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfU2V0UHJvZ3JhbU5hbWUsICh3Y2hhcl90ICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeUVycl9QcmludCwgKHZvaWQpKTsKIAotICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplIHx8CisgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeV9TZXRQcm9ncmFtTmFtZSB8fCAhUHlfRmluYWxpemVFeCB8fAogICAgICAgICAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeUVycl9QcmludCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04NjIsNyArODY0LDkgQEAKICAgICByYyA9IFB5UnVuX1NpbXBsZVN0cmluZyhzY3JpcHQpOwogICAgIGlmIChyYykKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJjID0gLTE7CisgICAgfQogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmggYi9QQy9jbGluaWMvX3Rlc3Rjb25zb2xlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg2MGNmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKQEAgLTAsMCArMSw4MiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX18sCisid3JpdGVfaW5wdXQoJG1vZHVsZSwgLywgZmlsZSwgcylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuIik7CisKKyNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9pbnB1dCIsIChQeUNGdW5jdGlvbilfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQsIE1FVEhfRkFTVENBTEwsIF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzT2JqZWN0ICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9TOndyaXRlX2lucHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBQeUJ5dGVzT2JqZWN0ICpzOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmcykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChtb2R1bGUsIGZpbGUsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19fLAorInJlYWRfb3V0cHV0KCRtb2R1bGUsIC8sIGZpbGUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkcyBhIHN0ciBmcm9tIHRoZSBjb25zb2xlIGFzIHdyaXR0ZW4gdG8gc3Rkb3V0LiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZF9vdXRwdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnJlYWRfb3V0cHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChtb2R1bGUsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E4ZGMwYzQyMTgwN2M0MSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCmluZGV4IGU3YTcyYzQuLjY5MzVjYWQgMTAwNjQ0Ci0tLSBhL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCisrKyBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCkBAIC01MSw4ICs1MSw5IEBACiAgICAgbG9uZyBuYnl0ZXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwKLSAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpCisgICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2xvY2tpbmdfaW1wbChtb2R1bGUsIGZkLCBtb2RlLCBuYnl0ZXMpOwogCiBleGl0OgpAQCAtODUsMTEgKzg2LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRtb2RlIiwKLSAgICAgICAgJmZkLCAmZmxhZ3MpKQorICAgICAgICAmZmQsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldG1vZGVfaW1wbChtb2R1bGUsIGZkLCBmbGFncyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExMCwyMiArMTEzLDI0IEBACiAgICAgeyJvcGVuX29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgbXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCi1tc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7Cittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgZmxhZ3M7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiX1B5X1BBUlNFX0lOVFBUUiJpOm9wZW5fb3NmaGFuZGxlIiwKLSAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKKyAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNDMsNyArMTQ4LDcgQEAKICNkZWZpbmUgTVNWQ1JUX0dFVF9PU0ZIQU5ETEVfTUVUSE9EREVGICAgIFwKICAgICB7ImdldF9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldF9vc2ZoYW5kbGUsIE1FVEhfTywgbXN2Y3J0X2dldF9vc2ZoYW5kbGVfX2RvY19ffSwKIAotc3RhdGljIFB5X2ludHB0cl90CitzdGF0aWMgaW50cHRyX3QKIG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1MSwxMyArMTU2LDE1IEBACiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZkOwotICAgIFB5X2ludHB0cl90IF9yZXR1cm5fdmFsdWU7CisgICAgaW50cHRyX3QgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkICopX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xODMsOCArMTkwLDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2tiaGl0X2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzExLDggKzMxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnB1dGNoIiwgJmNoYXJfdmFsdWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC0zNjcsOCArMzc3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjaGFyIGNoYXJfdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Myw4ICs0MDQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB1bmljb2RlX2NoYXI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKIAogZXhpdDoKQEAgLTQyNiwxMSArNDM4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRGaWxlIiwKLSAgICAgICAgJnR5cGUsICZmaWxlKSkKKyAgICAgICAgJnR5cGUsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKG1vZHVsZSwgdHlwZSwgZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NCwxMSArNDc4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwKLSAgICAgICAgJnR5cGUsICZtb2RlKSkKKyAgICAgICAgJnR5cGUsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKG1vZHVsZSwgdHlwZSwgbW9kZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwxMSArNTE2LDEzIEBACiAgICAgaW50IG1vZGU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MzEsOCArNTQ5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9TZXRFcnJvck1vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwogCiBleGl0OgpAQCAtNTUwLDQgKzU2OSw0IEBACiAjaWZuZGVmIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhNzk0YzUyMGQ2YWU4ODcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlMDRlMmI1MGVlZjhiNjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnJlZy5jLmggYi9QQy9jbGluaWMvd2lucmVnLmMuaAppbmRleCBmNmFlMmMwLi5jN2Q1YjllIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2lucmVnLmMuaAorKysgYi9QQy9jbGluaWMvd2lucmVnLmMuaApAQCAtNzcsMjQgKzc3LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmV4Y190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV4Y192YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjayk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmV4Y190eXBlOwogICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgUHlPYmplY3QgKnRyYWNlYmFjazsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk7CiAKIGV4aXQ6CkBAIC0xNDcsMTEgKzE0OSwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWk8mOkNvbm5lY3RSZWdpc3RyeSIsCi0gICAgICAgICZjb21wdXRlcl9uYW1lLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwobW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE5MiwxMSArMTk2LDEzIEBACiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6Q3JlYXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjI5LDI5ICsyMzUsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAorICAgIHsiQ3JlYXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XUklURTsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6Q3JlYXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0NyZWF0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI5MCw4ICsyOTksOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpEZWxldGVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtMzI0LDI1ICszMzQsMjcgQEAKICJPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfREVMRVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19EZWxldGVLZXlFeF9fZG9jX199LAorICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV09XNjRfNjRLRVk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKIAogZXhpdDoKQEAgLTM3NCw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6RGVsZXRlVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTEsOCArNDI0LDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bUtleV9pbXBsKG1vZHVsZSwga2V5LCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00NTcsOCArNDcxLDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfVU5JQ09ERSAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC01MjIsOCArNTM4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0ZsdXNoS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtNTc0LDggKzU5MSw5IEBACiAgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnV1OkxvYWRLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfTG9hZEtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpOwogCiBleGl0OgpAQCAtNjAyLDI5ICs2MjAsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCisgICAgeyJPcGVuS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTY1MSwyOSArNjcyLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlFWF9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCisgICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNzA3LDggKzczMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTc0OSw4ICs3NzQsOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CiAKIGV4aXQ6CkBAIC03ODcsOCArODEzLDkgQEAKICAgICBQeV9VTklDT0RFICpuYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCBuYW1lKTsKIAogZXhpdDoKQEAgLTgzMCw4ICs4NTcsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OlNhdmVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NhdmVLZXlfaW1wbChtb2R1bGUsIGtleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTg4Myw4ICs5MTEsOSBAQAogICAgIFB5X3NzaXplX2NsZWFuX3QgdmFsdWVfbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlprdSM6U2V0VmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIHZhbHVlX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC05MDcsNyArOTM2LDcgQEAKICIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOlxuIgogIiAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgogIiAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLlxuIgotIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkRcbiIKICIgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LlxuIgogIiAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWRcbiIKICIgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsXG4iCkBAIC05MTcsNiArOTQ2LDggQEAKICIgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXNcbiIKICIgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS5cbiIKICIgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgorIiAgICBSRUdfUVdPUkQgLS0gQSA2NC1iaXQgbnVtYmVyLlxuIgorIiAgICBSRUdfUVdPUkRfTElUVExFX0VORElBTiAtLSBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX1FXT1JELlxuIgogIiAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKICIgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy5cbiIKICIgIHZhbHVlXG4iCkBAIC05NTAsOCArOTgxLDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWk9rTzpTZXRWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIHZhbHVlX25hbWUsIHJlc2VydmVkLCB0eXBlLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC05ODUsOCArMTAxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwMTgsOCArMTA1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RW5hYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwNDksMTEgKzEwODMsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2I4OTQwYTIzZjYwNWRkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTZkZDA2YmU2ZTE0Yjg2ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2luc291bmQuYy5oIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAppbmRleCBiMDBiNDQyLi41MmQyNWIyIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2luc291bmQuYy5oCisrKyBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKQEAgLTMsNyArMyw3IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih3aW5zb3VuZF9QbGF5U291bmRfX2RvY19fLAotIlBsYXlTb3VuZCgkbW9kdWxlLCBzb3VuZCwgZmxhZ3MsIC8pXG4iCisiUGxheVNvdW5kKCRtb2R1bGUsIC8sIHNvdW5kLCBmbGFncylcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS5cbiIKQEAgLTE0LDIxICsxNCwyNCBAQAogIiAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKIAogI2RlZmluZSBXSU5TT1VORF9QTEFZU09VTkRfTUVUSE9EREVGICAgIFwKLSAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfVkFSQVJHUywgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCisgICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX0ZBU1RDQUxMLCB3aW5zb3VuZF9QbGF5U291bmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnNvdW5kLCBpbnQgZmxhZ3MpOword2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdW5kLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqc291bmQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291bmQiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaTpQbGF5U291bmQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpzb3VuZDsKICAgICBpbnQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsCi0gICAgICAgICZzb3VuZCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdW5kLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfUGxheVNvdW5kX2ltcGwobW9kdWxlLCBzb3VuZCwgZmxhZ3MpOwogCiBleGl0OgpAQCAtMzYsNyArMzksNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfQmVlcF9fZG9jX18sCi0iQmVlcCgkbW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uLCAvKVxuIgorIkJlZXAoJG1vZHVsZSwgLywgZnJlcXVlbmN5LCBkdXJhdGlvbilcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuXG4iCkBAIC00OCwyMSArNTEsMjQgQEAKICIgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuIik7CiAKICNkZWZpbmUgV0lOU09VTkRfQkVFUF9NRVRIT0RERUYgICAgXAotICAgIHsiQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9CZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKKyAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfQmVlcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9CZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZyZXF1ZW5jeSIsICJkdXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOkJlZXAiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmcmVxdWVuY3k7CiAgICAgaW50IGR1cmF0aW9uOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpCZWVwIiwKLSAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX0JlZXBfaW1wbChtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24pOwogCiBleGl0OgpAQCAtNzAsNyArNzYsNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19fLAotIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIHg9TUJfT0ssIC8pXG4iCisiTWVzc2FnZUJlZXAoJG1vZHVsZSwgLywgdHlwZT1NQl9PSylcbiIKICItLVxuIgogIlxuIgogIkNhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS5cbiIKQEAgLTc4LDIzICs4NCwyNiBAQAogInggZGVmYXVsdHMgdG8gTUJfT0suIik7CiAKICNkZWZpbmUgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCisgICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpOword2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgdHlwZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX01lc3NhZ2VCZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IHggPSBNQl9PSzsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0eXBlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6TWVzc2FnZUJlZXAiLCBfa2V5d29yZHMsIDB9OworICAgIGludCB0eXBlID0gTUJfT0s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwKLSAgICAgICAgJngpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHlwZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB4KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHR5cGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzBiMjkwZGFmMjMzMGRjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmZlMTZiMmI4YjQ5MGNiMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDY2YmY0NTguLjQzZDllMjAgMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0yMyw2ICsyMyw4IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEyNTYodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhNTEyKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTModm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fYmxha2UyKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfdGltZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X190aHJlYWQodm9pZCk7CiAjaWZkZWYgV0lOMzIKQEAgLTk2LDYgKzk4LDggQEAKICAgICB7Il9zaGExIiwgUHlJbml0X19zaGExfSwKICAgICB7Il9zaGEyNTYiLCBQeUluaXRfX3NoYTI1Nn0sCiAgICAgeyJfc2hhNTEyIiwgUHlJbml0X19zaGE1MTJ9LAorICAgIHsiX3NoYTMiLCBQeUluaXRfX3NoYTN9LAorICAgIHsiX2JsYWtlMiIsIFB5SW5pdF9fYmxha2UyfSwKICAgICB7InRpbWUiLCBQeUluaXRfdGltZX0sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7Il90aHJlYWQiLCBQeUluaXRfX3RocmVhZH0sCmRpZmYgLS1naXQgYS9QQy9nZXRwYXRocC5jIGIvUEMvZ2V0cGF0aHAuYwppbmRleCBjN2RkZjFlLi4wYjBhZTQ5IDEwMDY0NAotLS0gYS9QQy9nZXRwYXRocC5jCisrKyBiL1BDL2dldHBhdGhwLmMKQEAgLTYsNyArNiw5IEBACiAgICBQQVRIIFJVTEVTIEZPUiBXSU5ET1dTOgogICAgVGhpcyBkZXNjcmliZXMgaG93IHN5cy5wYXRoIGlzIGZvcm1lZCBvbiBXaW5kb3dzLiAgSXQgZGVzY3JpYmVzIHRoZQogICAgZnVuY3Rpb25hbGl0eSwgbm90IHRoZSBpbXBsZW1lbnRhdGlvbiAoaWUsIHRoZSBvcmRlciBpbiB3aGljaCB0aGVzZQotICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KQorICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KS4gVGhlIHByZXNlbmNlIG9mIGEgcHl0aG9uLl9wdGggb3IKKyAgIHB5dGhvblhZLl9wdGggZmlsZSBhbG9uZ3NpZGUgdGhlIHByb2dyYW0gb3ZlcnJpZGVzIHRoZXNlIHJ1bGVzIC0gc2VlCisgICBiZWxvdy4KIAogICAgKiBQeXRob24gYWx3YXlzIGFkZHMgYW4gZW1wdHkgZW50cnkgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcwogICAgICB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCkBAIC0yMyw5ICsyNSw5IEBACiAKICAgICogV2UgYXR0ZW1wdCB0byBsb2NhdGUgdGhlICJQeXRob24gSG9tZSIgLSBpZiB0aGUgUFlUSE9OSE9NRSBlbnYgdmFyCiAgICAgIGlzIHNldCwgd2UgYmVsaWV2ZSBpdC4gIE90aGVyd2lzZSwgd2UgdXNlIHRoZSBwYXRoIG9mIG91ciBob3N0IC5FWEUncwotICAgICB0byB0cnkgYW5kIGxvY2F0ZSBvdXIgImxhbmRtYXJrIiAobGliXFxvcy5weSkgYW5kIGRlZHVjZSBvdXIgaG9tZS4KKyAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb25lIG9mIG91ciAibGFuZG1hcmtzIiBhbmQgZGVkdWNlIG91ciBob21lLgogICAgICAtIElmIHdlIERPIGhhdmUgYSBQeXRob24gSG9tZTogVGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyAoTGliLAotICAgICAgIHBsYXQtd2luLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKKyAgICAgICBETExzLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKICAgICAgLSBJZiB3ZSBETyBOT1QgaGF2ZSBhIFB5dGhvbiBIb21lLCB0aGUgY29yZSBQeXRob24gUGF0aCBpcwogICAgICAgIGxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS4gIFRoaXMgaXMgdGhlIG1haW4gUHl0aG9uUGF0aCBrZXksCiAgICAgICAgYW5kIGJvdGggSEtMTSBhbmQgSEtDVSBhcmUgY29tYmluZWQgdG8gZm9ybSB0aGUgcGF0aCkKQEAgLTMzLDcgKzM1LDIzIEBACiAgICAqIElmZiAtIHdlIGNhbiBub3QgbG9jYXRlIHRoZSBQeXRob24gSG9tZSwgaGF2ZSBub3QgaGFkIGEgUFlUSE9OUEFUSAogICAgICBzcGVjaWZpZWQsIGFuZCBjYW4ndCBsb2NhdGUgYW55IFJlZ2lzdHJ5IGVudHJpZXMgKGllLCB3ZSBoYXZlIF9ub3RoaW5nXwogICAgICB3ZSBjYW4gYXNzdW1lIGlzIGEgZ29vZCBwYXRoKSwgYSBkZWZhdWx0IHBhdGggd2l0aCByZWxhdGl2ZSBlbnRyaWVzIGlzCi0gICAgIHVzZWQgKGVnLiAuXExpYjsuXHBsYXQtd2luLCBldGMpCisgICAgIHVzZWQgKGVnLiAuXExpYjsuXERMTHMsIGV0YykKKworCisgICBJZiBhICcuX3B0aCcgZmlsZSBleGlzdHMgYWRqYWNlbnQgdG8gdGhlIGV4ZWN1dGFibGUgd2l0aCB0aGUgc2FtZSBiYXNlIG5hbWUKKyAgIChlLmcuIHB5dGhvbi5fcHRoIGFkamFjZW50IHRvIHB5dGhvbi5leGUpIG9yIGFkamFjZW50IHRvIHRoZSBzaGFyZWQgbGlicmFyeQorICAgKGUuZy4gcHl0aG9uMzYuX3B0aCBhZGphY2VudCB0byBweXRob24zNi5kbGwpLCBpdCBpcyB1c2VkIGluIHByZWZlcmVuY2UgdG8KKyAgIHRoZSBhYm92ZSBwcm9jZXNzLiBUaGUgc2hhcmVkIGxpYnJhcnkgZmlsZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlCisgICBleGVjdXRhYmxlLiBUaGUgcGF0aCBmaWxlIG11c3QgY29udGFpbiBhIGxpc3Qgb2YgcGF0aHMgdG8gYWRkIHRvIHN5cy5wYXRoLAorICAgb25lIHBlciBsaW5lLiBFYWNoIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgQmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgcGVybWl0dGVkLgorCisgICBJbiB0aGUgcHJlc2VuY2Ugb2YgdGhpcyAuX3B0aCBmaWxlLCBubyBvdGhlciBwYXRocyBhcmUgYWRkZWQgdG8gdGhlIHNlYXJjaAorICAgcGF0aCwgdGhlIHJlZ2lzdHJ5IGZpbmRlciBpcyBub3QgZW5hYmxlZCwgc2l0ZS5weSBpcyBub3QgaW1wb3J0ZWQgYW5kCisgICBpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQuIFRoZSBzaXRlIHBhY2thZ2UgY2FuIGJlIGVuYWJsZWQgYnkgaW5jbHVkaW5nIGEKKyAgIGxpbmUgcmVhZGluZyAiaW1wb3J0IHNpdGUiOyBubyBvdGhlciBpbXBvcnRzIGFyZSByZWNvZ25pemVkLiBBbnkgaW52YWxpZAorICAgZW50cnkgKG90aGVyIHRoYW4gZGlyZWN0b3JpZXMgdGhhdCBkbyBub3QgZXhpc3QpIHdpbGwgcmVzdWx0IGluIGltbWVkaWF0ZQorICAgdGVybWluYXRpb24gb2YgdGhlIHByb2dyYW0uCiAKIAogICBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKQEAgLTUyLDcgKzcwLDExIEBACiAgICAgc29tZSBkZWZhdWx0LCBidXQgcmVsYXRpdmUsIHBhdGhzLgogCiAgICogQW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIGNhbiB1c2UgUHlfU2V0UGF0aCgpIHRvIG92ZXJyaWRlIGFsbCBvZgotICAgIHRoZXNlIGF1dGhvbWF0aWMgcGF0aCBjb21wdXRhdGlvbnMuCisgICAgdGhlc2UgYXV0b21hdGljIHBhdGggY29tcHV0YXRpb25zLgorCisgICogQW4gaW5zdGFsbCBvZiBQeXRob24gY2FuIGZ1bGx5IHNwZWNpZnkgdGhlIGNvbnRlbnRzIG9mIHN5cy5wYXRoIHVzaW5nCisgICAgZWl0aGVyIGEgJ0VYRU5BTUUuX3B0aCcgb3IgJ0RMTE5BTUUuX3B0aCcgZmlsZSwgb3B0aW9uYWxseSBpbmNsdWRpbmcKKyAgICAiaW1wb3J0IHNpdGUiIHRvIGVuYWJsZSB0aGUgc2l0ZSBtb2R1bGUuCiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjEsMTAgKzgzLDEzIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSA8d2NoYXIuaD4KIAotI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaWZuZGVmIE1TX1dJTkRPV1MKKyNlcnJvciBnZXRwYXRocC5jIHNob3VsZCBvbmx5IGJlIGJ1aWx0IG9uIFdpbmRvd3MKICNlbmRpZgogCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPFNobHdhcGkuaD4KKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCkBAIC0xMjIsNiArMTQ3LDMzIEBACiAgICAgZGlyW2ldID0gJ1wwJzsKIH0KIAorc3RhdGljIGludAorY2hhbmdlX2V4dCh3Y2hhcl90ICpkZXN0LCBjb25zdCB3Y2hhcl90ICpzcmMsIGNvbnN0IHdjaGFyX3QgKmV4dCkKK3sKKyAgICBzaXplX3Qgc3JjX2xlbiA9IHdjc25sZW5fcyhzcmMsIE1BWFBBVEhMRU4rMSk7CisgICAgc2l6ZV90IGkgPSBzcmNfbGVuOworICAgIGlmIChpID49IE1BWFBBVEhMRU4rMSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyByZWR1Y2UoKSIpOworCisgICAgd2hpbGUgKGkgPiAwICYmIHNyY1tpXSAhPSAnLicgJiYgIWlzX3NlcChzcmNbaV0pKQorICAgICAgICAtLWk7CisKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGlzX3NlcChzcmNbaV0pKQorICAgICAgICBpID0gc3JjX2xlbjsKKworICAgIGlmICh3Y3NuY3B5X3MoZGVzdCwgTUFYUEFUSExFTisxLCBzcmMsIGkpIHx8CisgICAgICAgIHdjc2NhdF9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgZXh0KSkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgaW50CiBleGlzdHMod2NoYXJfdCAqZmlsZW5hbWUpCkBAIC0xMzUsNyArMTg3LDcgQEAKIHN0YXRpYyBpbnQKIGlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lLCBpbnQgdXBkYXRlX2ZpbGVuYW1lKSAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMvLnB5byB0b28gKi8KIHsKLSAgICBpbnQgbjsKKyAgICBzaXplX3QgbjsKIAogICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gMTsKQEAgLTE2MywyNCArMjE1LDMwIEBACiAgICB0aGFuIE1BWFBBVEhMRU4gY2hhcmFjdGVycyBhdCBleGl0LiAgSWYgc3R1ZmYgaXMgdG9vIGxvbmcsIG9ubHkgYXMgbXVjaCBvZgogICAgc3R1ZmYgYXMgZml0cyB3aWxsIGJlIGFwcGVuZGVkLgogKi8KKworc3RhdGljIGludCBfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9IDA7Cit0eXBlZGVmIEhSRVNVTFQoX19zdGRjYWxsICpQUGF0aENjaENvbWJpbmVFeCkoUFdTVFIgcHN6UGF0aE91dCwgc2l6ZV90IGNjaFBhdGhPdXQsIFBDV1NUUiBwc3pQYXRoSW4sIFBDV1NUUiBwc3pNb3JlLCB1bnNpZ25lZCBsb25nIGR3RmxhZ3MpOworc3RhdGljIFBQYXRoQ2NoQ29tYmluZUV4IF9QYXRoQ2NoQ29tYmluZUV4OworCiBzdGF0aWMgdm9pZAogam9pbih3Y2hhcl90ICpidWZmZXIsIGNvbnN0IHdjaGFyX3QgKnN0dWZmKQogewotICAgIHNpemVfdCBuOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pIHx8Ci0gICAgICAgICh3Y3NubGVuX3Moc3R1ZmYsIDQpID49IDMgJiYgc3R1ZmZbMV0gPT0gJzonICYmIGlzX3NlcChzdHVmZlsyXSkpKSB7Ci0gICAgICAgIGlmICh3Y3NjcHlfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID09IDApIHsKKyAgICAgICAgSE1PRFVMRSBwYXRoYXBpID0gTG9hZExpYnJhcnlXKEwiYXBpLW1zLXdpbi1jb3JlLXBhdGgtbDEtMS0wLmRsbCIpOworICAgICAgICBpZiAocGF0aGFwaSkKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gKFBQYXRoQ2NoQ29tYmluZUV4KUdldFByb2NBZGRyZXNzKHBhdGhhcGksICJQYXRoQ2NoQ29tYmluZUV4Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gTlVMTDsKKyAgICAgICAgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAxOwogICAgIH0KIAotICAgIG4gPSB3Y3NubGVuX3MoYnVmZmVyLCBNQVhQQVRITEVOKzEpOwotICAgIGlmIChuID4gMCAmJiAhaXNfc2VwKGJ1ZmZlcltuIC0gMV0pICYmIG4gPCBNQVhQQVRITEVOKSB7Ci0gICAgICAgIGJ1ZmZlcltuXSA9IFNFUDsKLSAgICAgICAgYnVmZmVyW24gKyAxXSA9ICdcMCc7CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4KSB7CisgICAgICAgIGlmIChGQUlMRUQoX1BhdGhDY2hDb21iaW5lRXgoYnVmZmVyLCBNQVhQQVRITEVOKzEsIGJ1ZmZlciwgc3R1ZmYsIDApKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQYXRoQ29tYmluZVcoYnVmZmVyLCBidWZmZXIsIHN0dWZmKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiAgICAgfQotICAgIGlmICh3Y3NjYXRfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiB9CiAKIC8qIGdvdGxhbmRtYXJrIG9ubHkgY2FsbGVkIGJ5IHNlYXJjaF9mb3JfcHJlZml4LCB3aGljaCBlbnN1cmVzCkBAIC0xODgsNyArMjQ2LDcgQEAKICAgICdsYW5kbWFyaycgY2FuIG5vdCBvdmVyZmxvdyBwcmVmaXggaWYgdG9vIGxvbmcuCiAqLwogc3RhdGljIGludAotZ290bGFuZG1hcmsod2NoYXJfdCAqbGFuZG1hcmspCitnb3RsYW5kbWFyayhjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICBpbnQgb2s7CiAgICAgUHlfc3NpemVfdCBuID0gd2Nzbmxlbl9zKHByZWZpeCwgTUFYUEFUSExFTik7CkBAIC0yMDIsNyArMjYwLDcgQEAKIC8qIGFzc3VtZXMgYXJndjBfcGF0aCBpcyBNQVhQQVRITEVOKzEgYnl0ZXMgbG9uZywgYWxyZWFkeSBcMCB0ZXJtJ2QuCiAgICBhc3N1bXB0aW9uIHByb3ZpZGVkIGJ5IG9ubHkgY2FsbGVyLCBjYWxjdWxhdGVfcGF0aCgpICovCiBzdGF0aWMgaW50Ci1zZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCB3Y2hhcl90ICpsYW5kbWFyaykKK3NlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIGNvbnN0IHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIGxhbmRtYXJrIGlzIGZvdW5kICovCiAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOICsgMSwgYXJndjBfcGF0aCk7CkBAIC0yMTQsNyArMjcyLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIE1TX1dJTkRPV1MKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKIC8qIGEgc3RyaW5nIGxvYWRlZCBmcm9tIHRoZSBETEwgYXQgc3RhcnR1cC4qLwpAQCAtMzY5LDcgKzQyNiw2IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KICNlbmRpZiAvKiBQeV9FTkFCTEVfU0hBUkVEICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgdm9pZAogZ2V0X3Byb2dwYXRoKHZvaWQpCkBAIC0zNzgsNyArNDM0LDYgQEAKICAgICB3Y2hhcl90ICpwYXRoID0gX3dnZXRlbnYoTCJQQVRIIik7CiAgICAgd2NoYXJfdCAqcHJvZyA9IFB5X0dldFByb2dyYW1OYW1lKCk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogICAgIGV4dGVybiBIQU5ETEUgUHlXaW5fRExMaE1vZHVsZTsKICAgICAvKiBzdGF0aWMgaW5pdCBvZiBwcm9ncGF0aCBlbnN1cmVzIGZpbmFsIGNoYXIgcmVtYWlucyBcMCAqLwpAQCAtMzkwLDcgKzQ0NSw2IEBACiAjZW5kaWYKICAgICBpZiAoR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHByb2dwYXRoLCBNQVhQQVRITEVOKSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgaWYgKHByb2cgPT0gTlVMTCB8fCAqcHJvZyA9PSAnXDAnKQogICAgICAgICBwcm9nID0gTCJweXRob24iOwogCkBAIC00ODMsNiArNTM3LDkyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGludAorcmVhZF9wdGhfZmlsZShjb25zdCB3Y2hhcl90ICpwYXRoLCB3Y2hhcl90ICpwcmVmaXgsIGludCAqaXNvbGF0ZWQsIGludCAqbm9zaXRlKQoreworICAgIEZJTEUgKnNwX2ZpbGUgPSBfUHlfd2ZvcGVuKHBhdGgsIEwiciIpOworICAgIGlmIChzcF9maWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCBwYXRoKTsKKyAgICByZWR1Y2UocHJlZml4KTsKKyAgICAqaXNvbGF0ZWQgPSAxOworICAgICpub3NpdGUgPSAxOworCisgICAgc2l6ZV90IGJ1ZnNpeiA9IE1BWFBBVEhMRU47CisgICAgc2l6ZV90IHByZWZpeGxlbiA9IHdjc2xlbihwcmVmaXgpOworCisgICAgd2NoYXJfdCAqYnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyhidWZzaXogKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGJ1ZlswXSA9ICdcMCc7CisKKyAgICB3aGlsZSAoIWZlb2Yoc3BfZmlsZSkpIHsKKyAgICAgICAgY2hhciBsaW5lW01BWFBBVEhMRU4gKyAxXTsKKyAgICAgICAgY2hhciAqcCA9IGZnZXRzKGxpbmUsIE1BWFBBVEhMRU4gKyAxLCBzcF9maWxlKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcjJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB3aGlsZSAoKisrcCkgeworICAgICAgICAgICAgaWYgKCpwID09ICdccicgfHwgKnAgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJjbXAobGluZSwgImltcG9ydCBzaXRlIikgPT0gMCkgeworICAgICAgICAgICAgKm5vc2l0ZSA9IDA7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGxpbmUsICJpbXBvcnQgIiwgNykgPT0gMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigib25seSAnaW1wb3J0IHNpdGUnIGlzIHN1cHBvcnRlZCBpbiAuX3B0aCBmaWxlIik7CisgICAgICAgIH0KKworICAgICAgICBEV09SRCB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIE5VTEwsIDApOworICAgICAgICB3Y2hhcl90ICp3bGluZSA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoKHduICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIHdsaW5lLCB3biArIDEpOworICAgICAgICB3bGluZVt3bl0gPSAnXDAnOworCisgICAgICAgIHNpemVfdCB1c2Vkc2l6ID0gd2NzbGVuKGJ1Zik7CisgICAgICAgIHdoaWxlICh1c2Vkc2l6ICsgd24gKyBwcmVmaXhsZW4gKyA0ID4gYnVmc2l6KSB7CisgICAgICAgICAgICBidWZzaXogKz0gTUFYUEFUSExFTjsKKyAgICAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgKGJ1ZnNpeiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh1c2Vkc2l6KSB7CisgICAgICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgTCI7Iik7CisgICAgICAgICAgICB1c2Vkc2l6ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBlcnJub190IHJlc3VsdDsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICByZXN1bHQgPSB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgcHJlZml4KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImludmFsaWQgYXJndW1lbnQgZHVyaW5nIC5fcHRoIHByb2Nlc3NpbmciKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gRVJBTkdFKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgZHVyaW5nIC5fcHRoIHByb2Nlc3NpbmciKTsKKyAgICAgICAgfQorICAgICAgICB3Y2hhcl90ICpiID0gJmJ1Zlt1c2Vkc2l6XTsKKyAgICAgICAgam9pbihiLCB3bGluZSk7CisKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgfQorCisgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOworCisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAtMTsKK30KKworCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ5MiwzMiArNjMyLDMzIEBACiAgICAgd2NoYXJfdCAqcHl0aG9uaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICB3Y2hhcl90ICplbnZwYXRoID0gTlVMTDsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgc2tpcGhvbWUsIHNraXBkZWZhdWx0OwogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CiAgICAgfQotI2Vsc2UKLSAgICBjaGFyICpfZW52cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwotICAgIHdjaGFyX3Qgd2VudnBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpZiAoX2VudnBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyh3ZW52cGF0aCwgX2VudnBhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGVudnBhdGggPSB3ZW52cGF0aDsKLSAgICAgICAgaWYgKHIgPT0gKHNpemVfdCktMSB8fCByID49IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCisgICAgLyogU2VhcmNoIGZvciBhIHN5cy5wYXRoIGZpbGUgKi8KKyAgICB7CisgICAgICAgIHdjaGFyX3Qgc3BidWZmZXJbTUFYUEFUSExFTisxXTsKKworICAgICAgICBpZiAoKGRsbHBhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIGRsbHBhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSB8fAorICAgICAgICAgICAgKHByb2dwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBwcm9ncGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpKSB7CisKKyAgICAgICAgICAgIGlmICghcmVhZF9wdGhfZmlsZShzcGJ1ZmZlciwgcHJlZml4LCAmUHlfSXNvbGF0ZWRGbGFnLCAmUHlfTm9TaXRlRmxhZykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCiAgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KQEAgLTU0MywxNyArNjg0LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKLSAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocwotICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcwotICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCi0gICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKLSAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKQEAgLTU2Myw4ICs2OTMsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgY2hhbmdlX2V4dCh6aXBfcGF0aCwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCwgTCIuemlwIik7CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKLSAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKKyAgICAgICAgaWYgKHppcF9wYXRoWzBdICYmIGV4aXN0cyh6aXBfcGF0aCkpIHsKKyAgICAgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCB6aXBfcGF0aCk7CisgICAgICAgICAgICByZWR1Y2UocHJlZml4KTsKKyAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CisgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CkBAIC01NzYsMzAgKzcxMywxNSBAQAogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCi0gICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQotICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKLSAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKLSAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7Ci0gICAgfQotCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIGlmICghYXBwbG9jYWwpIHsKLSAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKLSAgICB9CisgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwogICAgIHNraXBkZWZhdWx0ID0gZW52cGF0aCE9TlVMTCB8fCBweXRob25ob21lIT1OVUxMIHx8IFwKICAgICAgICAgICAgICAgICAgIG1hY2hpbmVwYXRoIT1OVUxMIHx8IHVzZXJwYXRoIT1OVUxMOwotI2VuZGlmCiAKICAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzLgogICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwpAQCAtNjEyLDcgKzczNCw2IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCi0gICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYyOSwxMyArNzUwLDExIEBACiAgICAgICAgIGJ1ZnN6ID0gMDsKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCisgICAgaWYgKHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQorICAgIGlmIChtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7Ci0jZW5kaWYKICAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4oZW52cGF0aCkgKyAxOwogCkBAIC02NTEsMTAgKzc3MCw4IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGRlZmF1bHQgc3RhdGljIHBhdGguXG4iKTsKICAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2NCw3ICs3ODEsNiBAQAogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7CiAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwpAQCAtNjkyLDE1ICs4MDgsNyBAQAogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICB3Y2hhcl90ICpwID0gUFlUSE9OUEFUSDsKICAgICAgICAgd2NoYXJfdCAqcTsKICAgICAgICAgc2l6ZV90IG47CmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY25zIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWE5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY28gYi9QQy9pY29ucy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5zdmcgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5MGIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6IzAwNzhkN30uc3Qxe2ZpbGw6I2ZmZn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDVWM2gyNXYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5Ljk3MiAyNi45NzJINS4wMjlWNWguOTQydjIxLjAyOGgyMy4wNTdWNWguOTQzdjIxLjk3MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yOSA1djIxSDZWNWgyM3oiLz48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSA0bC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDMuNGgtMS4ydjEuMmgxLjJWMy40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iZ3JhcGgtbGlnaHRncmV5IiBkPSJNNiA1aDIzdjJINnoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTQuNSAyM3Y2Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExLjQyOSAxMy4wMTlhMTkuODggMTkuODggMCAwIDAgLjA3MS0xLjY0NWMwLTQuMjIzLTEuMzI5LTguMTY1LTMuNTU2LTEwLjU0NUw3LjE3IDBINS44M2wtLjc3NC44MjlDMi44MjkgMy4yMDkgMS41IDcuMTUxIDEuNSAxMS4zNzRjMCAuNDUzLjAyMy45LjA1MyAxLjM0NUMuODg3IDEzLjQ3Mi4zNTcgMTQuNDM4IDAgMTUuNTMzdjYuNjAzTC4yMjkgMjNIM3Y3aDJ2Mmgzdi0xaDJ2LThoMi43NzJsLjM5NC0xLjQ4OGMuMjIyLS44NDIuMzM1LTEuNzE0LjMzNS0yLjU5Mi0uMDAxLTIuNDE5LS44MDMtNC41MzQtMi4wNzItNS45MDF6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTYuNSAyMnY5TTguNSAyM3Y3Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTUgMjlINHYtNmgxdjZ6bTItNkg2djhoMXYtOHptMiAwSDh2N2gxdi03eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTEwLjM4MSAxMy4zOGMuMDctLjY1OC4xMTktMS4zMjUuMTE5LTIuMDA2IDAtMy45NzUtMS4yMjktNy42NjItMy4yODYtOS44NjJMNi41Ljc0OGwtLjcxNC43NjNDMy43MjkgMy43MTIgMi41IDcuMzk5IDIuNSAxMS4zNzRjMCAuNjgxLjA0OSAxLjM0OC4xMTkgMi4wMDZDMS4zMzkgMTQuNTIxLjUgMTYuNTUyLjUgMTguOTJjMCAuNzkzLjEwMiAxLjU3OC4zMDIgMi4zMzZMLjk5OSAyMmgxLjk2NmwuMDcyLS45MjJjLjA4MS0xLjA0Ni40NzEtMS45NjYuOTkzLTIuNTAzLjQ4NyAxLjAxOSAxLjA3IDEuOTI5IDEuNzU2IDIuNjYyTDYuNSAyMmwuNzE0LS43NjNjLjY4Ni0uNzMzIDEuMjY5LTEuNjQzIDEuNzU2LTIuNjYyLjUyMi41MzcuOTEyIDEuNDU3Ljk5MyAyLjUwM2wuMDcyLjkyMmgxLjk2NmwuMTk3LS43NDRjLjItLjc1OC4zMDItMS41NDMuMzAyLTIuMzM2IDAtMi4zNjgtLjgzOS00LjM5OS0yLjExOS01LjU0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTMuNjE5IDE3LjYxNWMtLjg1NC42NzItMS40NjQgMS45MTMtMS41NzkgMy4zODVoLS4yNzJhOC4xODQgOC4xODQgMCAwIDEtLjI2OC0yLjA4YzAtMS43MjIuNTA1LTMuMjU5IDEuMjk3LTQuMjcyLjE4NyAxLjA1LjQ2NSAyLjA0NS44MjIgMi45Njd6bTYuNTg1LTIuOTY3YTE2LjE0NSAxNi4xNDUgMCAwIDEtLjgyMiAyLjk2N2MuODU0LjY3MSAxLjQ2NCAxLjkxMyAxLjU3OSAzLjM4NWguMjcyYTguMTg0IDguMTg0IDAgMCAwIC4yNjgtMi4wOGMtLjAwMS0xLjcyMi0uNTA2LTMuMjU5LTEuMjk3LTQuMjcyek0zLjUgMTEuMzc0YzAgMy44MzcgMS4xOTggNy4yIDMgOS4xMjggMS44MDItMS45MjcgMy01LjI5MSAzLTkuMTI4cy0xLjE5OC03LjItMy05LjEyOGMtMS44MDIgMS45MjgtMyA1LjI5MS0zIDkuMTI4eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik03LjUgN2ExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDIzLjk2MWMtLjM1IDEuMDUzLTEuMDAxIDMuMDE1LTMuMjQ3IDMuMDE1aC0xLjN2MS4zMzdjMCAuOTA1LS4zOTIgMi41MzctMy4wMjEgMy4yOThhOS4yMTMgOS4yMTMgMCAwIDEtMi41OS4zOWMtLjgzIDAtMS42NjgtLjEyOC0yLjU2NC0uMzkyLTEuOTE4LS41NjMtMy4wMTctMS43NjUtMy4wMTctMy4yOTZ2LTEuMzM3aC0xLjE1NWMtMS42OTggMC0yLjk0My0xLjEyOS0zLjQxNi0zLjA5OC0uNDY5LTEuOTQ2LS40NjktMy4xOTUgMC01LjE0MS40NTEtMS44ODEgMS45Ni0zLjA5OCAzLjg0NS0zLjA5OGguNzI2di0xLjMzN2MwLTIuMDA1LjkwNS0yLjk4MiAzLjEyNi0zLjM3NC43MjktLjEzIDEuNTQ5LS4yIDIuMzY3LS4yMDNoLjAwNGMuOTI1IDAgMS43NjEuMDY3IDIuNTYuMjAxIDEuODE2LjMwMyAzLjEzNCAxLjcyMyAzLjEzNCAzLjM3NnYxLjMzN2gxLjNjMS4xNDIgMCAyLjYzNi41MzYgMy4yNyAzLjA5Mi41MTYgMi4wNzMuNTEgMy42MzctLjAyMiA1LjIzeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfN18iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzdfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY25zIGIvUEMvaWNvbnMvcHkuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGM0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY28gYi9QQy9pY29ucy9weS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4YTc5YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5zdmcgYi9QQy9pY29ucy9weS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyNGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzby1saWdodGdyZXl7ZmlsbDojYmZiZmJmfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI2IDguMDA5VjI5SDdWM2gxNC4wNTNMMjYgOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48cGF0aCBjbGFzcz0iaWNvbi12c28tbGlnaHRncmV5IiBkPSJNMTcgN0g5VjZoOHYxem0wIDJIOXYxaDhWOXptNyAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTktLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfMl8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8yXyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNucyBiL1BDL2ljb25zL3B5Yy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNvIGIvUEMvaWNvbnMvcHljLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGRkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuc3ZnIGIvUEMvaWNvbnMvcHljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNlOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTAgMTZIOXYtMWgxdjF6bTEuMDExIDVIOXYxaDIuMDMyYTguMzY4IDguMzY4IDAgMCAxLS4wMjEtMXpNMTQgMTBoMlY5aC0ydjF6bS0zLTRIOXYxaDJWNnptMCA2SDl2MWgydi0xem0yLTNIOXYxaDRWOXptNC0zdjFoMVY2aC0xem0tMyA2aC0ydjFoMnYtMXptMS02aC0ydjFoMlY2em0tNCAxMGgxdi0xaC0xdjF6bTQtNHYxaDJ2LTFoLTJ6bS0yIDRoM3YtMWgtM3Yxem0tNCAydjFoM3YtMUg5em0wIDZ2MWgzdi0xSDl6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzRfIiBjbGFzcz0ic3QwIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNF8iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbnMgYi9QQy9pY29ucy9weWQuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNkMjRlCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbyBiL1BDL2ljb25zL3B5ZC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2Y2I2MAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLnN2ZyBiL1BDL2ljb25zL3B5ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZmY2YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi1mMTItaG92ZXItYmd7ZmlsbDojZDllYmY3fS5pY29uLWYxMi1sdGdyZXktZGlzYWJsZWR7ZmlsbDojYWJhYmFjfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6IzljYTJhN30uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MntmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTIxLjA1MyAzSDd2MjZoMTlWOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMuNzg0IDE3LjcwNWMtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXptMC00LjVjLTEuMTg2IDAtMi4xNS45NjQtMi4xNSAyLjE1cy45NjQgMi4xNTEgMi4xNSAyLjE1MSAyLjE1LS45NjUgMi4xNS0yLjE1MS0uOTY0LTIuMTUtMi4xNS0yLjE1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1ob3Zlci1iZyIgZD0iTTE4LjA1IDE2LjEyMmMuMDE2LS4wNjkuMDMxLS4xMzkuMDQzLS4yMDlsMS4zNzYtLjYxOC0uMTAzLTEuMDE1LTEuNDctLjMzYy0uMDI1LS4wNjgtLjA1Ni0uMTM0LS4wODYtLjE5OWwtLjAyNi0uMDU2Ljg5Mi0xLjIzNi0uNTk1LS44MjctMS40NS40NTNjLS4wNjktLjA2MS0uMTQxLS4xMTgtLjIxMy0uMTc1bC4xNTEtMS41MTEtLjkyOS0uNDE4LTEuMDMyIDEuMTIxLS4wNTYtLjAxM2EzLjA4OSAzLjA4OSAwIDAgMC0uMjE3LS4wNDVsLS42MTgtMS4zNzQtMS4wMTUuMTA0LS4zMjkgMS40NzJjLS4wNDkuMDE5LS4wOTYuMDQtLjE0My4wNjNsLS4wNTYuMDI1LTEuMjI1LS45MDctLjgzNS41ODYuNDM1IDEuNDU3Yy0uMDYuMDY3LS4xMjMuMTM4LS4xODIuMjEybC0xLjUwNi0uMTcyLS40MjkuOTI1TDkuNTQgMTQuNDhsLS4wMDUuMDI0YTQuMTI3IDQuMTI3IDAgMCAwLS4wNTEuMjQ2bC0xLjM4Ny42MDYuMDkyIDEuMDE1IDEuNDYzLjM0NmMuMDI0LjA2Ny4wNTUuMTMyLjA4NC4xOTRsLjAzLjA2Ny0uODYgMS4xNy0uMDQyLjA1OS41ODguODMyIDEuNDU2LS40NGMuMDcuMDYzLjEzOC4xMjIuMjA5LjE3OGwtLjE2NyAxLjUwOC45MjYuNDI3TDEyLjkyIDE5LjZsLjA0OC4wMWMuMDc0LjAxNy4xNDkuMDM0LjIyNi4wNDZsLjYwOSAxLjM4NSAxLjAxNS0uMDk1LjM0Mi0xLjQ2NmMuMDc1LS4wMjcuMTQ3LS4wNjEuMjE2LS4wOTNsLjA2Ny0uMDMxIDEuMjM1Ljg5Mi44MjctLjU5NS0uNDUyLTEuNDVjLjA2Mi0uMDcxLjEyLS4xNDIuMTc2LS4yMTVsMS41MTIuMTUxLjQxOC0uOTI5LTEuMTIyLTEuMDMzLjAxMy0uMDU1em0tNC4yNjYgMS41ODNjLTEuMjk2IDAtMi4zNS0xLjA1NC0yLjM1LTIuMzVzMS4wNTQtMi4zNSAyLjM1LTIuMzUgMi4zNSAxLjA1NCAyLjM1IDIuMzUtMS4wNTQgMi4zNS0yLjM1IDIuMzV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWx0Z3JleS1kaXNhYmxlZCIgZD0iTTEzLjgwMyAyMS4wNGwtLjYwOS0xLjM4NGEzLjA4IDMuMDggMCAwIDEtLjIzNi0uMDQ4bC0uMDM4LS4wMDgtMS4wNDMgMS4xMTEtLjkyNS0uNDI3LjE2Ny0xLjUwN2E0LjAxMyA0LjAxMyAwIDAgMS0uMjA5LS4xNzlsLTEuNDU2LjQzOS0uNTg4LS44MzIuOTAyLTEuMjI4LS4wMzMtLjA3MmMtLjAyOC0uMDYxLS4wNTgtLjEyNC0uMDgyLS4xOWwtMS40NjMtLjM0NC0uMDkxLTEuMDE1IDEuMzg3LS42MDVjLjAxMi0uMDc4LjAzLS4xNTQuMDQ3LS4yMzFsLjAwOS0uMDM5LTEuMTA5LTEuMDQ1LjQyOC0uOTI1IDEuNTA3LjE3Yy4wNTgtLjA3Mi4xMTgtLjE0LjE4My0uMjExbC0uNDM1LTEuNDU4LjgzNC0uNTg1IDEuMjI1LjkwNy4wNTItLjAyNGMuMDQ4LS4wMjIuMDk3LS4wNDQuMTQ3LS4wNjNsLjMyOS0xLjQ3MyAxLjAxNC0uMTA0LjYyIDEuMzc1YTIuMzg5IDIuMzg5IDAgMCAxIC4yNzEuMDU4bDEuMDMyLTEuMTIyLjkzLjQxOC0uMTUzIDEuNTExYy4wNzMuMDU1LjE0My4xMTMuMjE0LjE3NGwxLjQ1LS40NTMuNTk1LjgyNy0uODkyIDEuMjM2YS44LjggMCAwIDEgLjAyNC4wNTNjLjAzLjA2NC4wNjIuMTMxLjA4Ny4yMDFsMS40NzEuMzMyLjEwMyAxLjAxNC0xLjM3Ni42MThjLS4wMTIuMDcxLS4wMjcuMTQtLjA0My4yMDhsLS4wMTQuMDU4IDEuMTIyIDEuMDMzLS40MTkuOTI5LTEuNTExLS4xNTJhMy44NTEgMy44NTEgMCAwIDEtLjE3Ni4yMTVsLjQ1MiAxLjQ1LS44MjcuNTk1LTEuMjM2LS44OTItLjA3LjAzMmEyLjk0IDIuOTQgMCAwIDEtLjIxMi4wOTJsLS4zNDEgMS40NjUtMS4wMTUuMDk1em0tLjk1MS0xLjY2bC4xNTEuMDMzYy4wODkuMDIxLjE3OS4wNDIuMjcyLjA1M2wuMDU2LjAwNy41OTcgMS4zNTQuNzI4LS4wNjcuMzMzLTEuNDM1LjA1NC0uMDE4Yy4wODMtLjAyNS4xNjEtLjA2Mi4yNDQtLjEwMS4wNDItLjAyLjA4NC0uMDM5LjEyNy0uMDU3bC4wNTItLjAyMiAxLjIxMS44NzQuNTkzLS40MjctLjQ0Mi0xLjQyMS4wMzgtLjA0M2MuMDg1LS4wOTQuMTYzLS4xODguMjM2LS4yODhsLjAzMy0uMDQ2IDEuNDguMTUuMy0uNjY3LTEuMDk5LTEuMDEyLjAxMi0uMDU1LjAyNS0uMTE3Yy4wMTktLjA4LjAzNy0uMTYuMDQ3LS4yNDRsLjAwNy0uMDU2IDEuMzQ4LS42MDUtLjA3My0uNzI4LTEuNDQxLS4zMjQtLjAxOC0uMDU1Yy0uMDI1LS4wODEtLjA2MS0uMTU3LS4wOTYtLjIzM2EyLjE0NSAyLjE0NSAwIDAgMS0uMDUtLjEwOWwtLjAyMi0uMDUyLjg3NC0xLjIxMi0uNDI3LS41OTMtMS40Mi40NDMtLjA0Mi0uMDM4YTMuODk2IDMuODk2IDAgMCAwLS4yODgtLjIzNUwxNi4yMDcgMTJsLjE0OS0xLjQ4LS42NjctLjMtMS4wMTIgMS4xLS4wNTYtLjAxMWMtLjA0LS4wMDgtLjA4LS4wMTgtLjExOS0uMDI3LS4wODItLjAxOS0uMTYyLS4wMzgtLjI0Ni0uMDQ4bC0uMDU2LS4wMDUtLjYwNy0xLjM0Ni0uNzI3LjA3NC0uMzIzIDEuNDQxLS4wNTQuMDE4Yy0uMDYzLjAyLS4xMjEuMDQ3LS4xOC4wNzQtLjAzNy4wMTctLjA3My4wMzQtLjExMS4wNDlsLS4wNTIuMDIyLTEuMi0uODktLjU5OS40Mi40MjYgMS40MjktLjAzOC4wNDJhNC4wNyA0LjA3IDAgMCAwLS4yNDQuMjg0bC0uMDM0LjA0NS0xLjQ3Ni0uMTY3LS4zMDcuNjYzIDEuMDg2IDEuMDI0LS4wMzQuMTUxYy0uMDIuMDg5LS4wNDEuMTc3LS4wNTIuMjY5bC0uMDA3LjA1Ni0xLjM1OC41OTMuMDY2LjcyOCAxLjQzMS4zMzcuMDE3LjA1NWMuMDI0LjA3Ny4wNTguMTQ4LjA5MS4yMi4wMjEuMDQzLjA0MS4wODYuMDU5LjEzMWwuMDIyLjA1Mi0uODg1IDEuMjAzLjQyMi41OTggMS40MjYtLjQzMi4wNDIuMDM4Yy4wODMuMDc1LjE3OS4xNjMuMjgyLjI0bC4wNDUuMDM1LS4xNjMgMS40NzYuNjY0LjMwNiAxLjAyNC0xLjA4N3pNMjAuOTE4IDIyLjk3MmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjY5OSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjY5OXptMC0yLjVjLS42MzQgMC0xLjE1LjUxNy0xLjE1IDEuMTVzLjUxNyAxLjE1IDEuMTUgMS4xNSAxLjE1LS41MTcgMS4xNS0xLjE1LS41MTYtMS4xNS0xLjE1LTEuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMjQuOTAxIDIyLjAyOHYtLjgxMmwtMS4yNjktLjQyM2EyLjc0NyAyLjc0NyAwIDAgMC0uMjEtLjUwNWwuNTk5LTEuMTk2LS41NzQtLjU3NC0xLjE5Ni41OTlhMi44MSAyLjgxIDAgMCAwLS41MDUtLjIwOWwtLjQyMy0xLjI2OGgtLjgxMWwtLjQyMyAxLjI2OGEyLjgxIDIuODEgMCAwIDAtLjUwNS4yMDlsLTEuMTk3LS41OTktLjU3My41NzQuNTk5IDEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS41MDVsLTEuMjY4LjQyM3YuODEybDEuMjY4LjQyMmMuMDU0LjE3NS4xMjQuMzQ1LjIxLjUwNmwtLjU5OSAxLjE5Ni41NzMuNTc0IDEuMTk3LS42Yy4xNjEuMDg3LjMzMS4xNTcuNTA1LjIxbC40MjMgMS4yNjloLjgxMWwuNDIzLTEuMjY5Yy4xNzQtLjA1My4zNDMtLjEyMy41MDUtLjIxbDEuMTk2LjYuNTc0LS41NzQtLjU5OS0xLjE5NmMuMDg2LS4xNjEuMTU2LS4zMzEuMjEtLjUwNmwxLjI2OS0uNDIyem0tMy45ODMuOTQzYy0uNzQ0IDAtMS4zNS0uNjA2LTEuMzUtMS4zNSAwLS43NDQuNjA1LTEuMzUgMS4zNS0xLjM1Ljc0NCAwIDEuMzUuNjA1IDEuMzUgMS4zNSAwIC43NDUtLjYwNiAxLjM1LTEuMzUgMS4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMjEuMzIzIDI1LjYwNGgtLjgxMWwtLjQyMy0xLjI2OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LS4yMDlsLTEuMTk3LjU5OS0uNTczLS41NzQuNTk5LTEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAxLS4yMS0uNTA1bC0xLjI2OS0uNDIzdi0uODEybDEuMjY5LS40MjJjLjA1NC0uMTc1LjEyNC0uMzQ1LjIxLS41MDZsLS41OTktMS4xOTYuNTczLS41NzMgMS4xOTcuNTk5Yy4xNjEtLjA4Ny4zMzEtLjE1Ny41MDUtLjIxbC40MjMtMS4yNjloLjgxMWwuNDIzIDEuMjY5Yy4xNzQuMDUzLjM0NC4xMjMuNTA1LjIxbDEuMTk2LS41OTkuNTc0LjU3My0uNTk5IDEuMTk2Yy4wODYuMTYxLjE1Ni4zMzEuMjEuNTA2bDEuMjY5LjQyMnYuODEybC0xLjI2OS40MjNhMi43NDcgMi43NDcgMCAwIDEtLjIxLjUwNWwuNTk5IDEuMTk2LS41NzQuNTc0LTEuMTk2LS41OTlhMi44MTQgMi44MTQgMCAwIDEtLjUwNS4yMDlsLS40MjMgMS4yNjl6bS0uNjY2LS4xOTloLjUyMWwuNDExLTEuMjMyLjA1MS0uMDE1Yy4xOTMtLjA1NC4zODItLjEzMi41Ni0uMjMxbC4wNDYtLjAyNiAxLjE2Mi41ODEuMzY5LS4zNjktLjU4LTEuMTYyLjAyNi0uMDQ2Yy4wOTktLjE3OC4xNzctLjM2Ni4yMzItLjU2bC4wMTQtLjA1MSAxLjIzMi0uNDExdi0uNTIzbC0xLjIzMi0uNDEtLjAxNC0uMDUxYTIuODEgMi44MSAwIDAgMC0uMjMyLS41NjFsLS4wMjYtLjA0Ni41OC0xLjE2Mi0uMzY5LS4zNjgtMS4xNjIuNTgtLjA0Ni0uMDI2YTIuNjI3IDIuNjI3IDAgMCAwLS41Ni0uMjMybC0uMDUtLjAxNC0uNDExLTEuMjMyaC0uNTIxbC0uNDExIDEuMjMyLS4wNTEuMDE0YTIuNzU4IDIuNzU4IDAgMCAwLS41Ni4yMzJsLS4wNDYuMDI2LTEuMTYzLS41OC0uMzY4LjM2OC41OCAxLjE2Mi0uMDI2LjA0NmEyLjY3NSAyLjY3NSAwIDAgMC0uMjMyLjU2MWwtLjAxNC4wNTEtMS4yMzIuNDF2LjUyMmwxLjIzMi40MTEuMDE0LjA1MWMuMDU2LjE5My4xMzQuMzgyLjIzMi41NmwuMDI2LjA0Ni0uNTggMS4xNjIuMzY4LjM2OSAxLjE2My0uNTgxLjA0Ni4wMjZjLjE3OC4xLjM2Ni4xNzguNTYuMjMxbC4wNTEuMDE1LjQxIDEuMjMzeiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNV8iIGNsYXNzPSJzdDEiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF81XyIgY2xhc3M9InN0MiIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNucyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNTNlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNvIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGEzOGVmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uc3ZnIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tdnMtYmd7ZmlsbDojNDI0MjQyfS5pY29uLXZzLWdyZWVue2ZpbGw6IzM5M30uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA0SDJWMmgyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5IDR2MjFIM1Y0SDJ2MjJoMjhWNHoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1iZyIgZD0iTTEwIDRIM3YyMWgyNlY0eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSAzbC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDIuNGgtMS4ydjEuMmgxLjJWMi40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1ncmVlbiIgZD0iTTE2IDE0SDV2LTFoMTEuMDMxYy0uMDE0LjA0NC0uMDMxIDEtLjAzMSAxem0tNC01SDV2MWg3Vjl6bS03IDh2MWg4di0xSDV6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTYgMy4yOTgtLjkwNC4yNjEtMS43MjguMzg5LTIuNTY2LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkyLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5N2MtMS42OTggMC0yLjk0My0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8zXyIgY2xhc3M9InN0MCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfM18iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY25zIGIvUEMvaWNvbnMvcHl0aG9udy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY28gYi9QQy9pY29ucy9weXRob253LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk1ZDQzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5zdmcgYi9QQy9pY29ucy9weXRob253LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2IyNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6I2Y2ZjZmNn0uc3Qxe2ZpbGw6IzY1NjU2NX0uc3Qye2ZpbGw6I2JmYmZiZn0uc3Qze2ZpbGw6I2ZmZn0uc3Q0e2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0NXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik0yOSA3SDNWNWgyNnYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDJWM2gyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDdoMjZ2MTlIM3oiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjkgNXYyMUgzVjVIMnYyMmgyOFY1eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00IDUuNzVoMnYuNUg0eiIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTIgMTFINXYtMWg3djF6bS03IDd2MWgxMXYtMUg1em0wLTR2MWgxMXYtMUg1eiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0zMS42MTggMTguOTEyQzMwLjk4NCAxNi4zNTYgMjkuNDkgMTYgMjguMzQ5IDE2SDI3di0xLjY5N2MwLTEuNjU0LTEuMjk0LTIuOTM3LTMuMTEtMy4yNC0uODAyLS4xMzMtMS42MTctLjA2My0yLjUzNy0uMDYzaC0uMDAzYy0uODIxIDAtMS41NjgtLjA2My0yLjI5NS4wNjUtMi4yMjEuMzkzLTMuMDU1IDEuMjMzLTMuMDU1IDMuMjM4VjE2aC0uODY4Yy0xLjg4NSAwLTMuMzk0IDEuMDQyLTMuODQ1IDIuOTI0LS40NjkgMS45NDYtLjQ2OSAzLjAyMiAwIDQuOTY3QzExLjc2IDI1Ljg1OSAxMy4wMDUgMjcgMTQuNzAzIDI3SDE2djEuMzEzYzAgMS41MzEgMS4wMjkgMi43MzIgMi45NDYgMy4yOTYuODk2LjI2MyAxLjY2Mi4zOTEgMi40OTIuMzkxLjgzOCAwIDEuNjYxLS4xMjggMi41NjUtLjM5QzI2LjYzMiAzMC44NSAyNyAyOS4yMTggMjcgMjguMzEzVjI3aDEuMzQ5YzIuMjQ2IDAgMi44OTctMS44ODQgMy4yNDctMi45MzcuNTMyLTEuNTkyLjUzOC0zLjA3OS4wMjItNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF82XyIgY2xhc3M9InN0NCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNl8iIGNsYXNzPSJzdDUiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNucyBiL1BDL2ljb25zL3NldHVwLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwZTZiMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNvIGIvUEMvaWNvbnMvc2V0dXAuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDM2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuc3ZnIGIvUEMvaWNvbnMvc2V0dXAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5pY29uLWRpc2FibGVkLWdyZXl7ZmlsbDojODQ4NDg0fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6I2YwZWZmMX0uc3Qxe2ZpbGw6IzQyNDI0Mn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOCA4djEwSDFWOGgxN3ptLTEuMTkxIDE1LjU3MmExLjAwNCAxLjAwNCAwIDAgMC0uOTAzLS41NzJIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDguNzQ4IDAgMCAwIC42NzctMS4wNzJsLTEuMTE4LTIuMzU2eiIvPjxwYXRoIGNsYXNzPSJpY29uLWRpc2FibGVkLWdyZXkiIGQ9Ik0xNy45MjcgMjUuOTI5bC0xLjExOC0yLjM1NmExLjAwMyAxLjAwMyAwIDAgMC0uOTAzLS41NzNIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDcuNzQ3IDAgMCAwIC42MzMtLjM0OS43NDYuNzQ2IDAgMCAwIC4wNDQtLjcyMnpNMS45NTkgMjZsLjk0OS0yaDEyLjk5OGwuOTQ5IDJIMS45NTl6TTYgMjJ2LTFoM3YtMmgxdjJoM3YxSDZ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTAgN3YxMmgxOVY3SDB6bTE4IDExSDFWOGgxN3YxMHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0xMiA2VjBIN3Y2SDIuNzU1TDkuNSAxMy40OTUgMTYuMjQ1IDZ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTggNGgzdjNoM2wtNC41IDVMNSA3aDNWNHptMy0ySDh2MWgzVjJ6bTAtMkg4djFoM1YweiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyNC4wNjNDMzEuMjQ2IDI1LjExNiAzMC41OTUgMjcgMjguMzQ5IDI3SDI3djEuMzEzYzAgLjkwNS0uMzY4IDIuNTM3LTIuOTk3IDMuMjk4LS45MDMuMjYxLTEuNzI3LjM4OS0yLjU2NS4zODktLjgzIDAtMS41OTctLjEyOC0yLjQ5My0uMzkyQzE3LjAyOSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yOTZjLTEuNjk4IDAtMi45NDQtMS4xNDEtMy40MTctMy4xMS0uNDY5LTEuOTQ0LS40NjktMy4wMiAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2MS0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44MzQtMi44NDUgMy4wNTQtMy4yMzguNzI4LS4xMjggMS40NzQtLjA2NSAyLjI5Ni0uMDY1aC4wMDNjLjkyMSAwIDEuNzM1LS4wNyAyLjUzNy4wNjQgMS44MTYuMzAzIDMuMTEgMS41ODUgMy4xMSAzLjI0VjE2aDEuMzQ5YzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzlfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCA0MGQ0Y2I1Li5kMTFkZjQzIDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksCiAgICAgICAgICAgICAgICBNQl9PSyk7CiAjZW5kaWYKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIC8qCkBAIC00NjUsNyArNDY1LDcgQEAKIH0KIAogc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgotbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK2xvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIsIEJPT0wgZnJvbV9zaGViYW5nKQogewogICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ19rZXkgW10gPSB7IEwicHl0aG9uWCIgfTsKICAgICBzdGF0aWMgd2NoYXJfdCAqIGxhc3RfY2hhciA9ICZjb25maWdfa2V5W3NpemVvZihjb25maWdfa2V5KSAvCkBAIC00OTcsMTAgKzQ5NywxNyBAQAogICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CiAgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlKQogICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICAgICAgLyogTm90IGZvdW5kIGEgdmFsdWUgeWV0IC0gdHJ5IGJ5IG1ham9yIHZlcnNpb24uCisgICAgICAgICAqIElmIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGludGVycHJldGVyIHNwZWNpZmllZCBpbiBhIHNoZWJhbmcgbGluZSwKKyAgICAgICAgICogd2Ugd2FudCB0byB0cnkgUHl0aG9uIDIgZmlyc3QsIHRoZW4gUHl0aG9uIDMgKGZvciBVbml4IGFuZCBiYWNrd2FyZAorICAgICAgICAgKiBjb21wYXRpYmlsaXR5KS4gSWYgd2UncmUgYmVpbmcgY2FsbGVkIGludGVyYWN0aXZlbHksIGFzc3VtZSB0aGUgdXNlcgorICAgICAgICAgKiB3YW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLCBzbyB0cnkgUHl0aG9uIDMgZmlyc3QsIHRoZW4KKyAgICAgICAgICogUHl0aG9uIDIuCisgICAgICAgICAqLwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMiIpOworICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihmcm9tX3NoZWJhbmcgPyBMIjIiIDogTCIzIik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMyIgOiBMIjIiKTsKICAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIGRlZmF1bHQgUHl0aG9uIGZvdW5kICIpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJWxzIGF0ICclbHMnXG4iLApAQCAtNjU1LDcgKzY2Miw3IEBACiAgICAgaWYgKCFvaykKICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOwogICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7Ci0gICAgRXhpdFByb2Nlc3MocmMpOworICAgIGV4aXQocmMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTA4Miw3ICsxMDg5LDcgQEAKICAgICB7IDMxOTAsIDMyMzAsIEwiMy4zIiB9LAogICAgIHsgMzI1MCwgMzMxMCwgTCIzLjQiIH0sCiAgICAgeyAzMzIwLCAzMzUxLCBMIjMuNSIgfSwKLSAgICB7IDMzNjAsIDMzNjEsIEwiMy42IiB9LAorICAgIHsgMzM2MCwgMzM3OSwgTCIzLjYiIH0sCiAgICAgeyAwIH0KIH07CiAKQEAgLTEwOTQsNyArMTEwMSw3IEBACiAKICAgICBmb3IgKG1wID0gbWFnaWNfdmFsdWVzOyBtcC0+bWluOyBtcCsrKSB7CiAgICAgICAgIGlmICgobWFnaWMgPj0gbXAtPm1pbikgJiYgKG1hZ2ljIDw9IG1wLT5tYXgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24sIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTExNCw3ICsxMTIxLDcgQEAKICAqLwogICAgIEZJTEUgKiBmcDsKICAgICBlcnJub190IHJjID0gX3dmb3Blbl9zKCZmcCwgKmFyZ3YsIEwicmIiKTsKLSAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKICAgICB3Y2hhcl90IHNoZWJhbmdfbGluZVtCVUZTSVpFICsgMV07CiAgICAgc2l6ZV90IHJlYWQ7CiAgICAgY2hhciAqcDsKQEAgLTExMzYsNyArMTE0Myw4IEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAKICAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgewotICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKCgoKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzFdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJWxzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKQEAgLTEyNzgsNyArMTI4Niw3IEBACiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQsIFRSVUUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKICglbHMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKQEAgLTEzNjIsNiArMTM3MCw3IEBACiAgICAgd2NoYXJfdCAqIGF2WzJdOwogI2VuZGlmCiAKKyAgICBzZXR2YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMLCBfSU9OQkYsIDApOwogICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CiAgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKICAgICAgICAgbG9nX2ZwID0gc3RkZXJyOwpAQCAtMTQ4Myw3ICsxNDkyLDcgQEAKICAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKICAgICAgICAgdmFsaWQgPSAoKnAgPT0gTCctJykgJiYgdmFsaWRhdGVfdmVyc2lvbigmcFsxXSk7CiAgICAgICAgIGlmICh2YWxpZCkgewotICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJWxzKSBub3QgXAogaW5zdGFsbGVkIiwgJnBbMV0pOwpAQCAtMTUxMCw3ICsxNTE5LDcgQEAKIAogICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLwogICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIsIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZDdkNTcuLjAwMDAwMDAKLS0tIGEvUEMvbGF1bmNoZXIuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCBiMDczOWQwLi5jOWQxZTZjIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzMsMTIgKzMzLDEyIEBACiAjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKIGNsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGNhc3QgPSAnKHZvaWQgKiknCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVZvaWRQdHInCiAKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWI1OWYxNjYzZGJhMTE5OTddKi8KIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIG1zdmNydApAQCAtMTQ4LDcgKzE0OCw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUgLT4gbG9uZwogCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICBmbGFnczogaW50CiAgICAgLwogCkBAIC0xNjAsOCArMTYwLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGxvbmcKLW1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmNjVlNDIyMjQzYTM5ZjkgaW5wdXQ9NGQ4NTE2ZWQzMmRiOGY2NV0qLworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VkZTg3MWJmOTM5ZDZlMyBpbnB1dD1jYjIxMDhiYmVhODQ1MTRlXSovCiB7CiAgICAgaW50IGZkOwogCkBAIC0xODMsMjIgKzE4MywxNyBAQAogUmFpc2VzIElPRXJyb3IgaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYWM0NzY0MzMzOGMwYmFhIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2U3NjFkZDBkZTJiNTAzIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGUgPSAtMTsKKyAgICBpbnRwdHJfdCBoYW5kbGUgPSAtMTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQotICAgIGVsc2UgewogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0KKyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICByZXR1cm4gaGFuZGxlOwogfQpAQCAtNTQwLDcgKzUzNSw2IEBACiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIGNydCB2ZXJzaW9ucyAqLwotICAgICh2b2lkKXN0OwogI2lmZGVmIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTgogICAgIHN0ID0gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIlZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTik7CkBAIC01NjYsNiArNTYwLDggQEAKICAgICBzdCA9IFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ1JUX0FTU0VNQkxZX1ZFUlNJT04iLCB2ZXJzaW9uKTsKICAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKICNlbmRpZgorICAgIC8qIG1ha2UgY29tcGlsZXIgd2FybmluZyBxdWlldCBpZiBzdCBpcyB1bnVzZWQgKi8KKyAgICAodm9pZClzdDsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvUEMvcHkuaWNvIGIvUEMvcHkuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzU3YWVmLi4wMDAwMDAwCi0tLSBhL1BDL3B5LmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Yy5pY28gYi9QQy9weWMuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2JkMmIxLi4wMDAwMDAwCi0tLSBhL1BDL3B5Yy5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbi5pY28gYi9QQy9weWNvbi5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvUEMvcHljb24uaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggYWM0ZjhmMi4uNjRlN2FlYyAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNCw3ICsxNCw2IEBACiBNU19XSU42NCAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjY0IEFQSQogTVNfV0lOMzIgLSBDb2RlIHNwZWNpZmljIHRvIHRoZSBNUyBXaW4zMiAoYW5kIFdpbjY0KSBBUEkgKG9ic29sZXRlLCB0aGlzIGNvdmVycyBhbGwgc3VwcG9ydGVkIEFQSXMpCiBNU19XSU5ET1dTIC0gQ29kZSBzcGVjaWZpYyB0byBXaW5kb3dzLCBidXQgYWxsIHZlcnNpb25zLgotTVNfV0lOQ0UgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MgQ0UKIFB5X0VOQUJMRV9TSEFSRUQgLSBDb2RlIGlmIHRoZSBQeXRob24gY29yZSBpcyBidWlsdCBhcyBhIERMTC4KIAogQWxzbyBub3RlIHRoYXQgbmVpdGhlciAiX01fSVg4NiIgb3IgIl9NU0NfVkVSIiBzaG91bGQgYmUgdXNlZCBmb3IKQEAgLTMwLDEwICsyOSw2IEBACiAKICovCiAKLSNpZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIE1TX1dJTkNFCi0jZW5kaWYKLQogLyogRGVwcmVjYXRlZCBVU0VfRExfRVhQT1JUIG1hY3JvIC0gcGxlYXNlIHVzZSBQeV9CVUlMRF9DT1JFICovCiAjaWZkZWYgVVNFX0RMX0VYUE9SVAogIwlkZWZpbmUgUHlfQlVJTERfQ09SRQpAQCAtNTMsOCArNDgsNiBAQAogI2RlZmluZSBfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIDEKICNlbmRpZgogCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgdGhlc2UgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9JT19ICiAjZGVmaW5lIEhBVkVfU1lTX1VUSU1FX0gKICNkZWZpbmUgSEFWRV9URU1QTkFNCkBAIC02MiwxMSArNTUsOCBAQAogI2RlZmluZSBIQVZFX1RNUE5BTQogI2RlZmluZSBIQVZFX0NMT0NLCiAjZGVmaW5lIEhBVkVfU1RSRVJST1IKLSNlbmRpZgogCi0jaWZkZWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgogCiAjZGVmaW5lIEhBVkVfSFlQT1QKICNkZWZpbmUgSEFWRV9TVFJGVElNRQpAQCAtODYsMTcgKzc2LDYgQEAKICNkZWZpbmUgVVNFX1NPQ0tFVAogI2VuZGlmCiAKLS8qIENFNiBkb2Vzbid0IGhhdmUgc3RyZHVwKCkgYnV0IF9zdHJkdXAoKS4gQXNzdW1lIHRoZSBzYW1lIGZvciBlYXJsaWVyIHZlcnNpb25zLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGRlZmluZSBzdHJkdXAgX3N0cmR1cAotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5DRQotLyogV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotI2RlZmluZSBnZXRlbnYodikgKE5VTEwpCi0jZGVmaW5lIGVudmlyb24gKE5VTEwpCi0jZW5kaWYKIAogLyogQ29tcGlsZXIgc3BlY2lmaWMgZGVmaW5lcyAqLwogCkBAIC0yODYsNyArMjY1LDYgQEAKICNlbmRpZgogCiAvKiA2NCBiaXQgaW50cyBhcmUgdXN1YWxseSBzcGVsdCBfX2ludDY0IHVubGVzcyBjb21waWxlciBoYXMgb3ZlcnJpZGRlbiAqLwotI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogIwlkZWZpbmUgUFlfTE9OR19MT05HIF9faW50NjQKICMJZGVmaW5lIFBZX0xMT05HX01BWCBfSTY0X01BWApAQCAtMzEyLDExICsyOTAsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNl9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzUubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNi5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtMzg3LDM5ICszNjUsMTAgQEAKIAogLyogZGVmaW5lIHNpZ25lZCBhbmQgdW5zaWduZWQgZXhhY3Qtd2lkdGggMzItYml0IGFuZCA2NC1iaXQgdHlwZXMsIHVzZWQgaW4gdGhlCiAgICBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaW50ZWdlcnMuICovCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQotI2RlZmluZSBQWV9VSU5UMzJfVCB1bnNpZ25lZCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfVUlOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZGVmaW5lIFBZX1VJTlQ2NF9UIHVuc2lnbmVkIFBZX0xPTkdfTE9ORwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgaW50Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZGVmaW5lIFBZX0lOVDY0X1QgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAorI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAorI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKKyNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90CiAKIC8qIEZhaXJseSBzdGFuZGFyZCBmcm9tIGhlcmUhICovCiAKQEAgLTQ0OCwxNCArMzk3LDEwIEBACiAvKiAjZGVmaW5lIGNvbnN0ICAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbmlvLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0NPTklPX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0RJUkVDVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZGlyZW50LmguICAqLwogLyogI2RlZmluZSBESVJFTlQgMSAqLwpAQCAtNTI4LDkgKzQ3Myw3IEBACiAvKiAjZGVmaW5lIEhBVkVfQUxUWk9ORSAqLwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHB1dGVudiBmdW5jdGlvbi4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFVURU5WCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogI2RlZmluZSBIQVZFX1BST1RPVFlQRVMKQEAgLTU1OCw5ICs1MDEsNyBAQAogI2RlZmluZSBIQVZFX0RZTkFNSUNfTE9BRElORwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZnRpbWUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0ZUSU1FCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBlZXJuYW1lLiAgKi8KICNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRQpAQCAtNTY5LDkgKzUxMCw3IEBACiAvKiAjdW5kZWYgSEFWRV9HRVRQR1JQICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXRwaWQuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0dFVFBJRAotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXR0aW1lb2ZkYXkuICAqLwogLyogI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZICovCkBAIC02MzMsMTQgKzU3MiwxMCBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzY29sbCcgZnVuY3Rpb24uICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfV0NTQ09MTCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3N4ZnJtJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NYRlJNIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgdGhlIHpsaWIgbGlicmFyeSBoYXMgaW5mbGF0ZUNvcHkgKi8KICNkZWZpbmUgSEFWRV9aTElCX0NPUFkgMQpAQCAtNjQ5LDI0ICs1ODQsMTYgQEAKIC8qICN1bmRlZiBIQVZFX0RMRkNOX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1BST0NFU1NfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBwcm90b3R5cGVzLiAgKi8KICNkZWZpbmUgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtNjg0LDkgKzYxMSw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1NFTEVDVF9IIDEgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMSAqLwpAQCAtNjk1LDkgKzYyMCw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1VOX0ggMSAqLwpAQCAtNzIwLDYgKzY0Myw5IEBACiAvKiBUaGUgc2l6ZSBvZiBgd2NoYXJfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1dDSEFSX1QgMgogCisvKiBUaGUgc2l6ZSBvZiBgX0Jvb2wnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9fQk9PTCAxCisKIC8qIFRoZSBzaXplIG9mIGBwaWRfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1BJRF9UIFNJWkVPRl9JTlQKIApkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggYThkYjBhOC4uM2RhMzQ0NSAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC03LDkgKzcsMTMgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAibGF1bmNoZXIuaWNvIiAKLTIgSUNPTiBESVNDQVJEQUJMRSAicHkuaWNvIiAKLTMgSUNPTiBESVNDQVJEQUJMRSAicHljLmljbyIgCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXGxhdW5jaGVyLmljbyIgCisyIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5LmljbyIgCiszIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5Yy5pY28iIAorNCBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweWQuaWNvIiAKKzUgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIKKzYgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9udy5pY28iCis3IElDT04gRElTQ0FSREFCTEUgImljb25zXHNldHVwLmljbyIgCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uLm1hbmlmZXN0IGIvUEMvcHl0aG9uLm1hbmlmZXN0CmluZGV4IGQ2ZTRiYmEuLjRlNzNkNjAgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbi5tYW5pZmVzdAorKysgYi9QQy9weXRob24ubWFuaWZlc3QKQEAgLTE2LDEwICsxNiwxNSBAQAogICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7OGUwZjdhMTItYmZiMy00ZmU4LWI5YTUtNDhmZDUwYTE1YTlhfSIvPgogICAgIDwvYXBwbGljYXRpb24+IAogICA8L2NvbXBhdGliaWxpdHk+CisgIDxhcHBsaWNhdGlvbiB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPgorICAgIDx3aW5kb3dzU2V0dGluZ3M+CisgICAgICA8bG9uZ1BhdGhBd2FyZSB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9TTUkvMjAxNi9XaW5kb3dzU2V0dGluZ3MiPnRydWU8L2xvbmdQYXRoQXdhcmU+CisgICAgPC93aW5kb3dzU2V0dGluZ3M+CisgIDwvYXBwbGljYXRpb24+CiAgIDxkZXBlbmRlbmN5PgogICAgIDxkZXBlbmRlbnRBc3NlbWJseT4KICAgICAgIDxhc3NlbWJseUlkZW50aXR5IHR5cGU9IndpbjMyIiBuYW1lPSJNaWNyb3NvZnQuV2luZG93cy5Db21tb24tQ29udHJvbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSI2LjAuMC4wIiBwcm9jZXNzb3JBcmNoaXRlY3R1cmU9IioiIHB1YmxpY0tleVRva2VuPSI2NTk1YjY0MTQ0Y2NmMWRmIiBsYW5ndWFnZT0iKiIgLz4KICAgICA8L2RlcGVuZGVudEFzc2VtYmx5PgogICA8L2RlcGVuZGVuY3k+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvYXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IGQ3NTMwNDkuLjNjNDVlZTkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0yLDc4MSArMiw3ODcgQEAKIDsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyCi0gIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLSAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVJlYWRlcgotICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVdyaXRlcgotICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNS5QeUNvZGVjX1N0cmljdEVycm9ycwotICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLSAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM1LlB5Q29tcGxleF9Gcm9tRG91YmxlcwotICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi0gIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM1LlB5Q29tcGxleF9UeXBlIERBVEEKLSAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld0NsYXNzTWV0aG9kCi0gIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM1LlB5RGVzY3JfTmV3R2V0U2V0Ci0gIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWVtYmVyCi0gIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWV0aG9kCi0gIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNS5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQotICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNS5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCi0gIFB5RGljdEtleXNfVHlwZT1weXRob24zNS5QeURpY3RLZXlzX1R5cGUgREFUQQotICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzUuUHlEaWN0UHJveHlfTmV3Ci0gIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzUuUHlEaWN0UHJveHlfVHlwZSBEQVRBCi0gIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5RGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlEaWN0X0NsZWFyPXB5dGhvbjM1LlB5RGljdF9DbGVhcgotICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzUuUHlEaWN0X0NvbnRhaW5zCi0gIFB5RGljdF9Db3B5PXB5dGhvbjM1LlB5RGljdF9Db3B5Ci0gIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtCi0gIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtCi0gIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi0gIFB5RGljdF9JdGVtcz1weXRob24zNS5QeURpY3RfSXRlbXMKLSAgUHlEaWN0X0tleXM9cHl0aG9uMzUuUHlEaWN0X0tleXMKLSAgUHlEaWN0X01lcmdlPXB5dGhvbjM1LlB5RGljdF9NZXJnZQotICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNS5QeURpY3RfTWVyZ2VGcm9tU2VxMgotICBQeURpY3RfTmV3PXB5dGhvbjM1LlB5RGljdF9OZXcKLSAgUHlEaWN0X05leHQ9cHl0aG9uMzUuUHlEaWN0X05leHQKLSAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW0KLSAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X1NpemU9cHl0aG9uMzUuUHlEaWN0X1NpemUKLSAgUHlEaWN0X1R5cGU9cHl0aG9uMzUuUHlEaWN0X1R5cGUgREFUQQotICBQeURpY3RfVXBkYXRlPXB5dGhvbjM1LlB5RGljdF9VcGRhdGUKLSAgUHlEaWN0X1ZhbHVlcz1weXRob24zNS5QeURpY3RfVmFsdWVzCi0gIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNS5QeUVsbGlwc2lzX1R5cGUgREFUQQotICBQeUVudW1fVHlwZT1weXRob24zNS5QeUVudW1fVHlwZSBEQVRBCi0gIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM1LlB5RXJyX0JhZEFyZ3VtZW50Ci0gIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM1LlB5RXJyX0NoZWNrU2lnbmFscwotICBQeUVycl9DbGVhcj1weXRob24zNS5QeUVycl9DbGVhcgotICBQeUVycl9EaXNwbGF5PXB5dGhvbjM1LlB5RXJyX0Rpc3BsYXkKLSAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNS5QeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX0ZldGNoPXB5dGhvbjM1LlB5RXJyX0ZldGNoCi0gIFB5RXJyX0Zvcm1hdD1weXRob24zNS5QeUVycl9Gb3JtYXQKLSAgUHlFcnJfRm9ybWF0Vj1weXRob24zNS5QeUVycl9Gb3JtYXRWCi0gIFB5RXJyX0dldEV4Y0luZm89cHl0aG9uMzUuUHlFcnJfR2V0RXhjSW5mbwotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM1LlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNS5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzUuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzUuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zNS5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM1LlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzUuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0Vycj1weXRob24zNS5QeUVycl9TZXRFeGNGcm9tV2luZG93c0VycgotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZT1weXRob24zNS5QeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZQotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHM9cHl0aG9uMzUuUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3RzCi0gIFB5RXJyX1NldEV4Y0luZm89cHl0aG9uMzUuUHlFcnJfU2V0RXhjSW5mbwotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3RzPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdHMKLSAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnI9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIKLSAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0SW1wb3J0RXJyb3I9cHl0aG9uMzUuUHlFcnJfU2V0SW1wb3J0RXJyb3IKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uRXg9cHl0aG9uMzUuUHlFcnJfU3ludGF4TG9jYXRpb25FeAotICBQeUVycl9XYXJuRXg9cHl0aG9uMzUuUHlFcnJfV2FybkV4Ci0gIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNS5QeUVycl9XYXJuRXhwbGljaXQKLSAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNS5QeUVycl9XYXJuRm9ybWF0Ci0gIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNS5QeUVycl9Xcml0ZVVucmFpc2FibGUKLSAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlTG9jawotICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNS5QeUV2YWxfQWNxdWlyZVRocmVhZAotICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5RXZhbF9DYWxsRnVuY3Rpb24KLSAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlFdmFsX0NhbGxNZXRob2QKLSAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzUuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLSAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZQotICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNS5QeUV2YWxfRXZhbENvZGVFeAotICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWUKLSAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWVFeAotICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzUuUHlFdmFsX0dldEJ1aWx0aW5zCi0gIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzUuUHlFdmFsX0dldENhbGxTdGF0cwotICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZyYW1lCi0gIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNS5QeUV2YWxfR2V0RnVuY0Rlc2MKLSAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jTmFtZQotICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNS5QeUV2YWxfR2V0R2xvYmFscwotICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRMb2NhbHMKLSAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9Jbml0VGhyZWFkcwotICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfUmVJbml0VGhyZWFkcwotICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VMb2NrCi0gIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlVGhyZWFkCi0gIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9TYXZlVGhyZWFkCi0gIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKLSAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQotICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNS5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCi0gIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Jsb2NraW5nSU9FcnJvcj1weXRob24zNS5QeUV4Y19CbG9ja2luZ0lPRXJyb3IgREFUQQotICBQeUV4Y19Ccm9rZW5QaXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnJva2VuUGlwZUVycm9yIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3I9cHl0aG9uMzUuUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3IgREFUQQotICBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3IgREFUQQotICBQeUV4Y19Db25uZWN0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfQ29ubmVjdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcj1weXRob24zNS5QeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yIERBVEEKLSAgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3I9cHl0aG9uMzUuUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3IgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzUuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM1LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmlsZUV4aXN0c0Vycm9yPXB5dGhvbjM1LlB5RXhjX0ZpbGVFeGlzdHNFcnJvciBEQVRBCi0gIFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yPXB5dGhvbjM1LlB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM1LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzUuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzUuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM1LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNS5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNS5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNS5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcj1weXRob24zNS5QeUV4Y19JbnRlcnJ1cHRlZEVycm9yIERBVEEKLSAgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3I9cHl0aG9uMzUuUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3IgREFUQQotICBQeUV4Y19LZXlFcnJvcj1weXRob24zNS5QeUV4Y19LZXlFcnJvciBEQVRBCi0gIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM1LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKLSAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlFeGNfTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNS5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3I9cHl0aG9uMzUuUHlFeGNfTm90QURpcmVjdG9yeUVycm9yIERBVEEKLSAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNS5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKLSAgUHlFeGNfT1NFcnJvcj1weXRob24zNS5QeUV4Y19PU0Vycm9yIERBVEEKLSAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNS5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKLSAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNS5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfUGVybWlzc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1Blcm1pc3Npb25FcnJvciBEQVRBCi0gIFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvcj1weXRob24zNS5QeUV4Y19SZWN1cnNpb25FcnJvciBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNS5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNS5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1Jlc291cmNlV2FybmluZz1weXRob24zNS5QeUV4Y19SZXNvdXJjZVdhcm5pbmcgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb249cHl0aG9uMzUuUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNS5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzUuUHlFeGNfU3ludGF4RXJyb3IgREFUQQotICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQotICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNS5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCi0gIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCi0gIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM1LlB5RXhjX1RhYkVycm9yIERBVEEKLSAgUHlFeGNfVGltZW91dEVycm9yPXB5dGhvbjM1LlB5RXhjX1RpbWVvdXRFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNS5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNS5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNS5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNS5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zNS5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfV2luZG93c0Vycm9yPXB5dGhvbjM1LlB5RXhjX1dpbmRvd3NFcnJvciBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdD1weXRob24zNS5QeUltcG9ydF9BZGRNb2R1bGVPYmplY3QKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNS5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzUuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3Q9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNS5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM1LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdD1weXRob24zNS5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdD1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLSAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQotICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLSAgUHlJdGVyX05leHQ9cHl0aG9uMzUuUHlJdGVyX05leHQKLSAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQotICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM1LlB5TGlzdF9BcHBlbmQKLSAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzUuUHlMaXN0X0FzVHVwbGUKLSAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzUuUHlMaXN0X0dldEl0ZW0KLSAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9HZXRTbGljZQotICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM1LlB5TGlzdF9JbnNlcnQKLSAgUHlMaXN0X05ldz1weXRob24zNS5QeUxpc3RfTmV3Ci0gIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM1LlB5TGlzdF9SZXZlcnNlCi0gIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9TZXRJdGVtCi0gIFB5TGlzdF9TZXRTbGljZT1weXRob24zNS5QeUxpc3RfU2V0U2xpY2UKLSAgUHlMaXN0X1NpemU9cHl0aG9uMzUuUHlMaXN0X1NpemUKLSAgUHlMaXN0X1NvcnQ9cHl0aG9uMzUuUHlMaXN0X1NvcnQKLSAgUHlMaXN0X1R5cGU9cHl0aG9uMzUuUHlMaXN0X1R5cGUgREFUQQotICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNS5QeUxvbmdfQXNEb3VibGUKLSAgUHlMb25nX0FzTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmcKLSAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTaXplX3QKLSAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTc2l6ZV90Ci0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Bc1ZvaWRQdHIKLSAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlMb25nX0Zyb21Eb3VibGUKLSAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZwotICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21TaXplX3QKLSAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3NpemVfdAotICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNS5QeUxvbmdfRnJvbVN0cmluZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNS5QeUxvbmdfRnJvbVZvaWRQdHIKLSAgUHlMb25nX0dldEluZm89cHl0aG9uMzUuUHlMb25nX0dldEluZm8KLSAgUHlMb25nX1R5cGU9cHl0aG9uMzUuUHlMb25nX1R5cGUgREFUQQotICBQeU1hcF9UeXBlPXB5dGhvbjM1LlB5TWFwX1R5cGUgREFUQQotICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzUuUHlNYXBwaW5nX0NoZWNrCi0gIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleQotICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLSAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM1LlB5TWFwcGluZ19JdGVtcwotICBQeU1hcHBpbmdfS2V5cz1weXRob24zNS5QeU1hcHBpbmdfS2V5cwotICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM1LlB5TWFwcGluZ19MZW5ndGgKLSAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzUuUHlNYXBwaW5nX1NpemUKLSAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNS5QeU1hcHBpbmdfVmFsdWVzCi0gIFB5TWVtX0NhbGxvYz1weXRob24zNS5QeU1lbV9DYWxsb2MKLSAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeT1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU1lbW9yeQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKLSAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKLSAgUHlNb2R1bGVfQWRkRnVuY3Rpb25zPXB5dGhvbjM1LlB5TW9kdWxlX0FkZEZ1bmN0aW9ucwotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9FeGVjRGVmPXB5dGhvbjM1LlB5TW9kdWxlX0V4ZWNEZWYKLSAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyPXB5dGhvbjM1LlB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0TmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXROYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM1LlB5TW9kdWxlX0dldFN0YXRlCi0gIFB5TW9kdWxlX05ldz1weXRob24zNS5QeU1vZHVsZV9OZXcKLSAgUHlNb2R1bGVfTmV3T2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX05ld09iamVjdAotICBQeU1vZHVsZV9TZXREb2NTdHJpbmc9cHl0aG9uMzUuUHlNb2R1bGVfU2V0RG9jU3RyaW5nCi0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzUuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCi0gIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM1LlB5TnVtYmVyX0Fic29sdXRlCi0gIFB5TnVtYmVyX0FkZD1weXRob24zNS5QeU51bWJlcl9BZGQKLSAgUHlOdW1iZXJfQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0FuZAotICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzUuUHlOdW1iZXJfQXNTc2l6ZV90Ci0gIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM1LlB5TnVtYmVyX0NoZWNrCi0gIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNS5QeU51bWJlcl9EaXZtb2QKLSAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzUuUHlOdW1iZXJfRmxvYXQKLSAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQWRkCi0gIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFuZAotICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotICBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHk9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NYXRyaXhNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NYXRyaXhNdWx0aXBseQotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgotICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCi0gIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlPRGljdEtleXNfVHlwZSBEQVRBCi0gIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCi0gIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3Ci0gIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KLSAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM1LlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfQ2hlY2tTdGFjaz1weXRob24zNS5QeU9TX0NoZWNrU3RhY2sKLSAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNS5QeU9TX0luaXRJbnRlcnJ1cHRzCi0gIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM1LlB5T1NfSW5wdXRIb29rIERBVEEKLSAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNS5QeU9TX0ludGVycnVwdE9jY3VycmVkCi0gIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzUuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCi0gIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNS5QeU9TX2RvdWJsZV90b19zdHJpbmcKLSAgUHlPU19nZXRzaWc9cHl0aG9uMzUuUHlPU19nZXRzaWcKLSAgUHlPU19teXN0cmljbXA9cHl0aG9uMzUuUHlPU19teXN0cmljbXAKLSAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJuaWNtcAotICBQeU9TX3NldHNpZz1weXRob24zNS5QeU9TX3NldHNpZwotICBQeU9TX3NucHJpbnRmPXB5dGhvbjM1LlB5T1Nfc25wcmludGYKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM1LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotICBQeU9TX3N0cnRvbD1weXRob24zNS5QeU9TX3N0cnRvbAotICBQeU9TX3N0cnRvdWw9cHl0aG9uMzUuUHlPU19zdHJ0b3VsCi0gIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM1LlB5T1NfdnNucHJpbnRmCi0gIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM1LlB5T2JqZWN0X0FTQ0lJCi0gIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLSAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNS5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi0gIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi0gIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM1LlB5T2JqZWN0X0J5dGVzCi0gIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbAotICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2QKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNS5QeU9iamVjdF9DYWxsT2JqZWN0Ci0gIFB5T2JqZWN0X0NhbGxvYz1weXRob24zNS5QeU9iamVjdF9DYWxsb2MKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0PXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXREaWN0Ci0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZT1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUKLSAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM1LlB5UHJvcGVydHlfVHlwZSBEQVRBCi0gIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5UmFuZ2VfVHlwZT1weXRob24zNS5QeVJhbmdlX1R5cGUgREFUQQotICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzUuUHlSZXZlcnNlZF9UeXBlIERBVEEKLSAgUHlTZXFJdGVyX05ldz1weXRob24zNS5QeVNlcUl0ZXJfTmV3Ci0gIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM1LlB5U2VxSXRlcl9UeXBlIERBVEEKLSAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNS5QeVNlcXVlbmNlX0NoZWNrCi0gIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29uY2F0Ci0gIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db250YWlucwotICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ291bnQKLSAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsSXRlbQotICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsU2xpY2UKLSAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfRmFzdAotICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRTbGljZQotICBQeVNlcXVlbmNlX0luPXB5dGhvbjM1LlB5U2VxdWVuY2VfSW4KLSAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci0gIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbmRleAotICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNS5QeVNlcXVlbmNlX0xlbmd0aAotICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MaXN0Ci0gIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfUmVwZWF0Ci0gIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX1NldFNsaWNlCi0gIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNS5QeVNlcXVlbmNlX1NpemUKLSAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNS5QeVNlcXVlbmNlX1R1cGxlCi0gIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM1LlB5U2V0SXRlcl9UeXBlIERBVEEKLSAgUHlTZXRfQWRkPXB5dGhvbjM1LlB5U2V0X0FkZAotICBQeVNldF9DbGVhcj1weXRob24zNS5QeVNldF9DbGVhcgotICBQeVNldF9Db250YWlucz1weXRob24zNS5QeVNldF9Db250YWlucwotICBQeVNldF9EaXNjYXJkPXB5dGhvbjM1LlB5U2V0X0Rpc2NhcmQKLSAgUHlTZXRfTmV3PXB5dGhvbjM1LlB5U2V0X05ldwotICBQeVNldF9Qb3A9cHl0aG9uMzUuUHlTZXRfUG9wCi0gIFB5U2V0X1NpemU9cHl0aG9uMzUuUHlTZXRfU2l6ZQotICBQeVNldF9UeXBlPXB5dGhvbjM1LlB5U2V0X1R5cGUgREFUQQotICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzCi0gIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlc0V4Ci0gIFB5U2xpY2VfTmV3PXB5dGhvbjM1LlB5U2xpY2VfTmV3Ci0gIFB5U2xpY2VfVHlwZT1weXRob24zNS5QeVNsaWNlX1R5cGUgREFUQQotICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzUuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKLSAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9BZGRNb2R1bGUKLSAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfRmluZE1vZHVsZQotICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNS5QeVN0YXRlX1JlbW92ZU1vZHVsZQotICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3Ci0gIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotICBQeVN1cGVyX1R5cGU9cHl0aG9uMzUuUHlTdXBlcl9UeXBlIERBVEEKLSAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uCi0gIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi0gIFB5U3lzX0FkZFhPcHRpb249cHl0aG9uMzUuUHlTeXNfQWRkWE9wdGlvbgotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX0dldE9iamVjdAotICBQeVN5c19HZXRYT3B0aW9ucz1weXRob24zNS5QeVN5c19HZXRYT3B0aW9ucwotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zNS5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNS5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjM1LlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNS5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNS5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzUuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNS5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNS5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzUuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zNS5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzUuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNS5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjM1LlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzUuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzUuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNS5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzUuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM1LlB5VHlwZV9HZXRTbG90Ci0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzUuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzUuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zNS5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzUuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzTUJDU1N0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVUNTND1weXRob24zNS5QeVVuaWNvZGVfQXNVQ1M0Ci0gIFB5VW5pY29kZV9Bc1VDUzRDb3B5PXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VDUzRDb3B5Ci0gIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGOFN0cmluZwotICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0FzV2lkZUNoYXIKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QKLSAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNS5QeVVuaWNvZGVfQ29uY2F0Ci0gIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNS5QeVVuaWNvZGVfQ29udGFpbnMKLSAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM1LlB5VW5pY29kZV9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGUKLSAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVBU0NJSQotICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVMb2NhbGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUxvY2FsZQotICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTUJDUz1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlTUJDUwotICBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlPXB5dGhvbjM1LlB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZQotICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0VuY29kZUxvY2FsZT1weXRob24zNS5QeVVuaWNvZGVfRW5jb2RlTG9jYWxlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNS5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNS5QeVVuaWNvZGVfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM1LlB5VW5pY29kZV9GaW5kCi0gIFB5VW5pY29kZV9GaW5kQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfRmluZENoYXIKLSAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9iamVjdAotICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PcmRpbmFsCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCi0gIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0TGVuZ3RoPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRMZW5ndGgKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0dldFNpemUKLSAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLSAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQotICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM1LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKLSAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzUuUHlVbmljb2RlX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9SUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1JTcGxpdAotICBQeVVuaWNvZGVfUmVhZENoYXI9cHl0aG9uMzUuUHlVbmljb2RlX1JlYWRDaGFyCi0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zNS5QeVVuaWNvZGVfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1N1YnN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfU3Vic3RyaW5nCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVVuaWNvZGVfV3JpdGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Xcml0ZUNoYXIKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0Ci0gIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNS5QeVdlYWtyZWZfTmV3UHJveHkKLSAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNS5QeVdlYWtyZWZfTmV3UmVmCi0gIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzUuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzUuUHlXcmFwcGVyX05ldwotICBQeVppcF9UeXBlPXB5dGhvbjM1LlB5WmlwX1R5cGUgREFUQQotICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNS5QeV9BZGRQZW5kaW5nQ2FsbAotICBQeV9BdEV4aXQ9cHl0aG9uMzUuUHlfQXRFeGl0Ci0gIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzUuUHlfQnVpbGRWYWx1ZQotICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM1LlB5X0NvbXBpbGVTdHJpbmcKLSAgUHlfRGVjUmVmPXB5dGhvbjM1LlB5X0RlY1JlZgotICBQeV9EZWNvZGVMb2NhbGU9cHl0aG9uMzUuUHlfRGVjb2RlTG9jYWxlCi0gIFB5X0VuY29kZUxvY2FsZT1weXRob24zNS5QeV9FbmNvZGVMb2NhbGUKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zNS5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzUuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zNS5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzUuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjM1LlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zNS5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNS5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzUuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNS5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzUuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNS5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzUuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzUuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjM1LlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNS5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM1LlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zNS5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjM1LlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQYXRoPXB5dGhvbjM1LlB5X1NldFBhdGgKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM1Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzUuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzUuX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX3RocmVhZF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX3RocmVhZF9kZXN0cm95X2NoYWluCi0gIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCi0gIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKLSAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi0gIF9QeV9EZWFsbG9jPXB5dGhvbjM1Ll9QeV9EZWFsbG9jCi0gIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNS5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQotICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzUuX1B5X0ZhbHNlU3RydWN0IERBVEEKLSAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vbmVTdHJ1Y3QgREFUQQotICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKLSAgX1B5X1N3YXBwZWRPcD1weXRob24zNS5fUHlfU3dhcHBlZE9wIERBVEEKLSAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X1RydWVTdHJ1Y3QgREFUQQotICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzYuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzYuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zNi5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM2LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNi5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzYuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzYuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjM2LlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzYuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzYuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzYuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzYuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zNi5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzYuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNi5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNi5QeUNGdW5jdGlvbl9OZXcKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNi5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzYuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM2LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzYuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzYuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zNi5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM2LlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM2LlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzYuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNi5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzYuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNi5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM2LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM2LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM2LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNi5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzYuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzYuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM2LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzYuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM2LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNi5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzYuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM2LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNi5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM2LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzYuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzYuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzYuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM2LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNi5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNi5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNi5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM2LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM2LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNi5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM2LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM2LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNi5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNi5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dldEV4Y0luZm89cHl0aG9uMzYuUHlFcnJfR2V0RXhjSW5mbworICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzYuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNi5QeUVycl9OZXdFeGNlcHRpb24KKyAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNi5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCisgIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM2LlB5RXJyX05vTWVtb3J5CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNi5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KKyAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzYuUHlFcnJfT2NjdXJyZWQKKyAgUHlFcnJfUHJpbnQ9cHl0aG9uMzYuUHlFcnJfUHJpbnQKKyAgUHlFcnJfUHJpbnRFeD1weXRob24zNi5QeUVycl9QcmludEV4CisgIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM2LlB5RXJyX1Byb2dyYW1UZXh0CisgIFB5RXJyX1Jlc291cmNlV2FybmluZz1weXRob24zNi5QeUVycl9SZXNvdXJjZVdhcm5pbmcKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNi5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyPXB5dGhvbjM2LlB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyCisgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM2LlB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0cz1weXRob24zNi5QeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHMKKyAgUHlFcnJfU2V0RXhjSW5mbz1weXRob24zNi5QeUVycl9TZXRFeGNJbmZvCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdHM9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cworICBQeUVycl9TZXRGcm9tV2luZG93c0Vycj1weXRob24zNi5QeUVycl9TZXRGcm9tV2luZG93c0VycgorICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZT1weXRob24zNi5QeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZQorICBQeUVycl9TZXRJbXBvcnRFcnJvcj1weXRob24zNi5QeUVycl9TZXRJbXBvcnRFcnJvcgorICBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzPXB5dGhvbjM2LlB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM2LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM2LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM2LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzYuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM2LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1N5bnRheExvY2F0aW9uRXg9cHl0aG9uMzYuUHlFcnJfU3ludGF4TG9jYXRpb25FeAorICBQeUVycl9XYXJuRXg9cHl0aG9uMzYuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNi5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNi5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNi5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNi5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzYuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNi5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzYuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzYuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNi5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNi5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Jsb2NraW5nSU9FcnJvcj1weXRob24zNi5QeUV4Y19CbG9ja2luZ0lPRXJyb3IgREFUQQorICBQeUV4Y19Ccm9rZW5QaXBlRXJyb3I9cHl0aG9uMzYuUHlFeGNfQnJva2VuUGlwZUVycm9yIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzYuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzYuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3I9cHl0aG9uMzYuUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3IgREFUQQorICBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yPXB5dGhvbjM2LlB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3IgREFUQQorICBQeUV4Y19Db25uZWN0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQ29ubmVjdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcj1weXRob24zNi5QeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yIERBVEEKKyAgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3I9cHl0aG9uMzYuUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3IgREFUQQorICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzYuUHlFeGNfRU9GRXJyb3IgREFUQQorICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM2LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQorICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfRmlsZUV4aXN0c0Vycm9yPXB5dGhvbjM2LlB5RXhjX0ZpbGVFeGlzdHNFcnJvciBEQVRBCisgIFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yPXB5dGhvbjM2LlB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yIERBVEEKKyAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM2LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCisgIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCisgIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzYuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCisgIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzYuUHlFeGNfSU9FcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM2LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNi5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKKyAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNi5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNi5QeUV4Y19JbmRleEVycm9yIERBVEEKKyAgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcj1weXRob24zNi5QeUV4Y19JbnRlcnJ1cHRlZEVycm9yIERBVEEKKyAgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3I9cHl0aG9uMzYuUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNi5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM2LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01vZHVsZU5vdEZvdW5kRXJyb3I9cHl0aG9uMzYuUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvciBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNi5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3I9cHl0aG9uMzYuUHlFeGNfTm90QURpcmVjdG9yeUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNi5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUGVybWlzc2lvbkVycm9yPXB5dGhvbjM2LlB5RXhjX1Blcm1pc3Npb25FcnJvciBEQVRBCisgIFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcj1weXRob24zNi5QeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvcj1weXRob24zNi5QeUV4Y19SZWN1cnNpb25FcnJvciBEQVRBCisgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNi5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQorICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNi5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCisgIFB5RXhjX1Jlc291cmNlV2FybmluZz1weXRob24zNi5QeUV4Y19SZXNvdXJjZVdhcm5pbmcgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb249cHl0aG9uMzYuUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzYuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM2LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVGltZW91dEVycm9yPXB5dGhvbjM2LlB5RXhjX1RpbWVvdXRFcnJvciBEQVRBCisgIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNi5QeUV4Y19UeXBlRXJyb3IgREFUQQorICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNi5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNi5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCisgIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKKyAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNi5QeUV4Y19WYWx1ZUVycm9yIERBVEEKKyAgUHlFeGNfV2FybmluZz1weXRob24zNi5QeUV4Y19XYXJuaW5nIERBVEEKKyAgUHlFeGNfV2luZG93c0Vycm9yPXB5dGhvbjM2LlB5RXhjX1dpbmRvd3NFcnJvciBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM2LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNi5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM2LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNi5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM2LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM2LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNi5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzYuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzYuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM2LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNi5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNi5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM2LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNi5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNi5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzYuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNi5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdD1weXRob24zNi5QeUltcG9ydF9BZGRNb2R1bGVPYmplY3QKKyAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNi5QeUltcG9ydF9BcHBlbmRJbml0dGFiCisgIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzYuUHlJbXBvcnRfQ2xlYW51cAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3Q9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcworICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNi5QeUltcG9ydF9HZXRJbXBvcnRlcgorICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNi5QeUltcG9ydF9HZXRNYWdpY051bWJlcgorICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNi5QeUltcG9ydF9HZXRNYWdpY1RhZworICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM2LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKKyAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydAorICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzYuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM2LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzYuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzYuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM2LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNi5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM2LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNi5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzYuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzYuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzYuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNi5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNi5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNi5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzYuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzYuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM2LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzYuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM2LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNi5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM2LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzYuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNi5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0NhbGxvYz1weXRob24zNi5QeU1lbV9DYWxsb2MKKyAgUHlNZW1fRnJlZT1weXRob24zNi5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNi5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNi5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNi5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeT1weXRob24zNi5QeU1lbW9yeVZpZXdfRnJvbU1lbW9yeQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNi5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNi5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNi5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNi5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM2LlB5TW9kdWxlRGVmX0luaXQKKyAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNi5QeU1vZHVsZURlZl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkRnVuY3Rpb25zPXB5dGhvbjM2LlB5TW9kdWxlX0FkZEZ1bmN0aW9ucworICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM2LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzYuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9FeGVjRGVmPXB5dGhvbjM2LlB5TW9kdWxlX0V4ZWNEZWYKKyAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyPXB5dGhvbjM2LlB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM2LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0TmFtZU9iamVjdD1weXRob24zNi5QeU1vZHVsZV9HZXROYW1lT2JqZWN0CisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM2LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNi5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfTmV3T2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX05ld09iamVjdAorICBQeU1vZHVsZV9TZXREb2NTdHJpbmc9cHl0aG9uMzYuUHlNb2R1bGVfU2V0RG9jU3RyaW5nCisgIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzYuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM2LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNi5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzYuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM2LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNi5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzYuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzYuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM2LlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjM2LlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NYXRyaXhNdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9NYXRyaXhNdWx0aXBseQorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNi5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zNi5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNi5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zNi5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNi5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzYuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM2LlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjM2LlB5TnVtYmVyX1hvcgorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPRGljdF9EZWxJdGVtCisgIFB5T0RpY3RfTmV3PXB5dGhvbjM2LlB5T0RpY3RfTmV3CisgIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNi5QeU9EaWN0X1NldEl0ZW0KKyAgUHlPRGljdF9UeXBlPXB5dGhvbjM2LlB5T0RpY3RfVHlwZSBEQVRBCisgIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM2LlB5T1NfQWZ0ZXJGb3JrCisgIFB5T1NfQ2hlY2tTdGFjaz1weXRob24zNi5QeU9TX0NoZWNrU3RhY2sKKyAgUHlPU19GU1BhdGg9cHl0aG9uMzYuUHlPU19GU1BhdGgKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNi5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM2LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNi5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzYuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNi5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzYuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzYuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNi5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM2LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM2LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNi5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzYuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM2LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM2LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM2LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNi5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NhbGxvYz1weXRob24zNi5QeU9iamVjdF9DYWxsb2MKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM2LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNi5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzYuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNi5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zNi5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNi5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNi5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0PXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNTZXREaWN0CisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNi5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzYuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzYuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzYuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM2LlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNi5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzYuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzYuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNi5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzYuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzYuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjM2LlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNi5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjM2LlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjM2LlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5T2JqZWN0X1R5cGUKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzYuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZT1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM2LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNi5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzYuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNi5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM2LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNi5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM2LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNi5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNi5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNi5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM2LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM2LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNi5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNi5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM2LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM2LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzYuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzYuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM2LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM2LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNi5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzYuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzYuUHlTdGF0ZV9BZGRNb2R1bGUKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNi5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzYuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0FkZFhPcHRpb249cHl0aG9uMzYuUHlTeXNfQWRkWE9wdGlvbgorICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzYuUHlTeXNfRm9ybWF0U3RkZXJyCisgIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRvdXQKKyAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM2LlB5U3lzX0dldE9iamVjdAorICBQeVN5c19HZXRYT3B0aW9ucz1weXRob24zNi5QeVN5c19HZXRYT3B0aW9ucworICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNi5QeVN5c19IYXNXYXJuT3B0aW9ucworICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKKyAgUHlTeXNfU2V0QXJndj1weXRob24zNi5QeVN5c19TZXRBcmd2CisgIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNi5QeVN5c19TZXRBcmd2RXgKKyAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM2LlB5U3lzX1NldE9iamVjdAorICBQeVN5c19TZXRQYXRoPXB5dGhvbjM2LlB5U3lzX1NldFBhdGgKKyAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzYuUHlTeXNfV3JpdGVTdGRlcnIKKyAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzYuUHlTeXNfV3JpdGVTdGRvdXQKKyAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNi5QeVRocmVhZFN0YXRlX0NsZWFyCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNi5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKKyAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXQKKyAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfR2V0RGljdAorICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNi5QeVRocmVhZFN0YXRlX05ldworICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKKyAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfU3dhcAorICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX0hlcmUKKyAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzYuUHlUcmFjZUJhY2tfUHJpbnQKKyAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNi5QeVRyYWNlQmFja19UeXBlIERBVEEKKyAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNi5QeVR1cGxlSXRlcl9UeXBlIERBVEEKKyAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM2LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAorICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzYuUHlUdXBsZV9HZXRJdGVtCisgIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzYuUHlUdXBsZV9HZXRTbGljZQorICBQeVR1cGxlX05ldz1weXRob24zNi5QeVR1cGxlX05ldworICBQeVR1cGxlX1BhY2s9cHl0aG9uMzYuUHlUdXBsZV9QYWNrCisgIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNi5QeVR1cGxlX1NldEl0ZW0KKyAgUHlUdXBsZV9TaXplPXB5dGhvbjM2LlB5VHVwbGVfU2l6ZQorICBQeVR1cGxlX1R5cGU9cHl0aG9uMzYuUHlUdXBsZV9UeXBlIERBVEEKKyAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzYuUHlUeXBlX0NsZWFyQ2FjaGUKKyAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM2LlB5VHlwZV9Gcm9tU3BlYworICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCisgIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzYuUHlUeXBlX0dlbmVyaWNBbGxvYworICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNi5QeVR5cGVfR2VuZXJpY05ldworICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzYuUHlUeXBlX0dldEZsYWdzCisgIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM2LlB5VHlwZV9HZXRTbG90CisgIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzYuUHlUeXBlX0lzU3VidHlwZQorICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzYuUHlUeXBlX01vZGlmaWVkCisgIFB5VHlwZV9SZWFkeT1weXRob24zNi5QeVR5cGVfUmVhZHkKKyAgUHlUeXBlX1R5cGU9cHl0aG9uMzYuUHlUeXBlX1R5cGUgREFUQQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmQKKyAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNi5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCisgIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZworICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZworICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCisgIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzTUJDU1N0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVUNTND1weXRob24zNi5QeVVuaWNvZGVfQXNVQ1M0CisgIFB5VW5pY29kZV9Bc1VDUzRDb3B5PXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VDUzRDb3B5CisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzYuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNi5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNi5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM2LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUxvY2FsZQorICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTUJDUz1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTUJDUworICBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlPXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZQorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0VuY29kZUxvY2FsZT1weXRob24zNi5QeVVuaWNvZGVfRW5jb2RlTG9jYWxlCisgIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNi5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKKyAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNi5QeVVuaWNvZGVfRlNEZWNvZGVyCisgIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM2LlB5VW5pY29kZV9GaW5kCisgIFB5VW5pY29kZV9GaW5kQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRmluZENoYXIKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0TGVuZ3RoPXB5dGhvbjM2LlB5VW5pY29kZV9HZXRMZW5ndGgKKyAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0dldFNpemUKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM2LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzYuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVhZENoYXI9cHl0aG9uMzYuUHlVbmljb2RlX1JlYWRDaGFyCisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM2LlB5VW5pY29kZV9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzYuUHlVbmljb2RlX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TcGxpdD1weXRob24zNi5QeVVuaWNvZGVfU3BsaXQKKyAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzYuUHlVbmljb2RlX1NwbGl0bGluZXMKKyAgUHlVbmljb2RlX1N1YnN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfU3Vic3RyaW5nCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzYuUHlVbmljb2RlX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM2LlB5VW5pY29kZV9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlX1R5cGUgREFUQQorICBQeVVuaWNvZGVfV3JpdGVDaGFyPXB5dGhvbjM2LlB5VW5pY29kZV9Xcml0ZUNoYXIKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNi5QeVdlYWtyZWZfR2V0T2JqZWN0CisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNi5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNi5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzYuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM2LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNi5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzYuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzYuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM2LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM2LlB5X0RlY1JlZgorICBQeV9EZWNvZGVMb2NhbGU9cHl0aG9uMzYuUHlfRGVjb2RlTG9jYWxlCisgIFB5X0VuY29kZUxvY2FsZT1weXRob24zNi5QeV9FbmNvZGVMb2NhbGUKKyAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzYuUHlfRW5kSW50ZXJwcmV0ZXIKKyAgUHlfRXhpdD1weXRob24zNi5QeV9FeGl0CisgIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzYuUHlfRmF0YWxFcnJvcgorICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycz1weXRob24zNi5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyBEQVRBCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM2LlB5X0ZpbmFsaXplCisgIFB5X0ZpbmFsaXplRXg9cHl0aG9uMzYuUHlfRmluYWxpemVFeAorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzYuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM2LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNi5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNi5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzYuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNi5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzYuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzYuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzYuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM2LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNi5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM2LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNi5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM2LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQYXRoPXB5dGhvbjM2LlB5X1NldFBhdGgKKyAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfU2V0UHJvZ3JhbU5hbWUKKyAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9TZXRQeXRob25Ib21lCisgIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X1NldFJlY3Vyc2lvbkxpbWl0CisgIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM2LlB5X1N5bXRhYmxlU3RyaW5nCisgIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNi5QeV9WYUJ1aWxkVmFsdWUKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZV9TaXplVAorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM2Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzYuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzYuX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX3RocmVhZF9kZXN0cm95X2NoYWluPXB5dGhvbjM2Ll9QeVRyYXNoX3RocmVhZF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzYuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjM2Ll9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNi5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzYuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zNi5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDkxNzg1YTEuLmFlMGIwMjkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIgCiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbndfZXhlLnJjIGIvUEMvcHl0aG9ud19leGUucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjM1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbndfZXhlLnJjCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQXBwbGljYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9udyIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggNGVmM2Q0Zi4uNzA5ZjM1YyAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMjYsNSArMjYsNSBAQAogICAgICAgICAgICAgIyBBZGQgdGhlICJ0ZXN0IiBkaXJlY3RvcnkgdG8gUFlUSE9OUEFUSC4KICAgICAgICAgICAgIHN5cy5wYXRoID0gc3lzLnBhdGggKyBbdGVzdF0KIAotaW1wb3J0IHJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KLXJlZ3J0ZXN0Lm1haW4oKQoraW1wb3J0IGxpYnJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KK2xpYnJlZ3J0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBmMDhkOWE0Li41ZWZkYzVlIDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAxKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICB9CkBAIC01NjMsNiArNTYzLDI0IEBACiAgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JEKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRDY0LCAxKTsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemVvZihEV09SRDY0KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCB6ZXJvID0gMDsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZ6ZXJvLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCBkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewpAQCAtNjE5LDcgKzYzNyw3IEBACiAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZSArIDI7CiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2NSw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsIHZpZXcubGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTY5MCwxOSArNzA4LDI0IEBACiAgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPT0gMCkKICAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygwKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygqKGludCAqKXJldERhdGFCdWYpOworICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCooRFdPUkQgKilyZXREYXRhQnVmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFR19RV09SRDoKKyAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA9PSAwKQorICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygwKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKihEV09SRDY0ICopcmV0RGF0YUJ1Zik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSRUdfU1o6CiAgICAgICAgIGNhc2UgUkVHX0VYUEFORF9TWjoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKiB0aGUgYnVmZmVyIG1heSBvciBtYXkgbm90IGhhdmUgYSB0cmFpbGluZyBOVUxMICovCisgICAgICAgICAgICAgICAgLyogUkVHX1NaIHNob3VsZCBiZSBhIE5VTCB0ZXJtaW5hdGVkIHN0cmluZywgYnV0IG9ubHkgYnkKKyAgICAgICAgICAgICAgICAgKiBjb252ZW50aW9uLiBUaGUgYnVmZmVyIG1heSBoYXZlIGJlZW4gc2F2ZWQgd2l0aG91dCBhIE5VTAorICAgICAgICAgICAgICAgICAqIG9yIHdpdGggZW1iZWRkZWQgTlVMcy4gVG8gYmUgY29uc2lzdGVudCB3aXRoIHJlZy5leGUgYW5kCisgICAgICAgICAgICAgICAgICogcmVnZWRpdC5leGUsIGNvbnN1bWUgb25seSB1cCB0byB0aGUgZmlyc3QgTlVMLiAqLwogICAgICAgICAgICAgICAgIHdjaGFyX3QgKmRhdGEgPSAod2NoYXJfdCAqKXJldERhdGFCdWY7Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IHJldERhdGFTaXplIC8gMjsKLSAgICAgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgJiYgZGF0YVtsZW4tMV0gPT0gJ1wwJykKLSAgICAgICAgICAgICAgICAgICAgcmV0RGF0YVNpemUgLT0gMjsKLSAgICAgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPD0gMCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEwiIjsKLSAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRhdGEsIHJldERhdGFTaXplLzIpOworICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSB3Y3NubGVuKGRhdGEsIHJldERhdGFTaXplIC8gc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRhdGEsIGxlbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVHX01VTFRJX1NaOgpAQCAtMTU5OSw3ICsxNjIyLDcgQEAKICAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOgogICAgICAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLgogICAgICAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLgotICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkQKICAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgogICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCkBAIC0xNjA5LDYgKzE2MzIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgogICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuCisgICAgICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuCiAgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgogICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgogICAgIHZhbHVlOiBvYmplY3QKQEAgLTE2MzEsNyArMTY1Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD1mMWIxNmNiY2MzZWQ0MTAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD05MDBhOWUzOTkwYmZiMTk2XSovCiB7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47CkBAIC0xOTE4LDYgKzE5NDMsOCBAQAogICAgIEFERF9JTlQoUkVHX0RXT1JEKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9CSUdfRU5ESUFOKTsKKyAgICBBRERfSU5UKFJFR19RV09SRCk7CisgICAgQUREX0lOVChSRUdfUVdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfTElOSyk7CiAgICAgQUREX0lOVChSRUdfTVVMVElfU1opOwogICAgIEFERF9JTlQoUkVHX1JFU09VUkNFX0xJU1QpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggNmI3OWQyMy4uN2ZlZWJjYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC01Miw3ICs1Miw3IEBACiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCiAiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCi0iTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisiTWVzc2FnZUJlZXAodHlwZSkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSB3aW5zb3VuZApAQCAtNjQsMzIgKzY0LDU4IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5QbGF5U291bmQKIAotICAgIHNvdW5kOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc291bmQ6IG9iamVjdAogICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KICAgICBmbGFnczogaW50CiAgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzI0YjNhMmI0MzY4Mzc4IGlucHV0PTM0MTFiMWI3YzFmMzZkOTNdKi8KK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5YTBmZDE2YTM3MmViZWIgaW5wdXQ9YzYzZTFmMmQ4NDhkYTJmMl0qLwogewogICAgIGludCBvazsKKyAgICB3Y2hhcl90ICp3c291bmQ7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KLSAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvdW5kID09IFB5X05vbmUpIHsKKyAgICAgICAgd3NvdW5kID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGZsYWdzICYgU05EX01FTU9SWSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMpIHsKKyAgICAgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc291bmQsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gKHdjaGFyX3QgKil2aWV3LmJ1ZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzb3VuZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIidzb3VuZCcgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc291bmQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHNvdW5kLCBOVUxMKTsKKyAgICAgICAgaWYgKHdzb3VuZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh2aWV3Lm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9IGVsc2UgaWYgKHNvdW5kICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c291bmQpOworICAgIH0KICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArMTMxLDEzIEBACiAgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgogICAgIGR1cmF0aW9uOiBpbnQKICAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTQwZTM2MGNmYTAwYTVjZjBdKi8KIHsKICAgICBCT09MIG9rOwogCkBAIC0xMzYsOCArMTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLk1lc3NhZ2VCZWVwCiAKLSAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKLSAgICAvCisgICAgdHlwZTogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCiAKIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KIApAQCAtMTQ1LDEwICsxNjksMjAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWFkODllNGQ4ZDMwYTk1NyBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMDg3NTQ1NTEyMTEyMWYgaW5wdXQ9ZGIxODVmNzQxYWUyMTQwMV0qLwogewotICAgIE1lc3NhZ2VCZWVwKHgpOworICAgIEJPT0wgb2s7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBNZXNzYWdlQmVlcCh0eXBlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19SdW50aW1lRXJyb3IsIDApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2EwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2oKQEAgLTAsMCArMSw3NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezM4NEMyMjRBLTc0NzQtNDc2RS1BMDFCLTc1MEVBN0RFOTE4Q308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9hc3luY2lvPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGExODZjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezI0MjIyNzhlLWVlZWItNDI0MS04MTgyLTQzM2UyYmM1YTdmY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagppbmRleCBmNzcxNGMwLi5jNzMyNjYzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCkBAIC03NiwzMSArNzYsNDQgQEAKICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSIgLz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiPgorICAgICAgPEludEZpbGU+JChJbnREaXIpaW1wb3J0bGliLmcuaDwvSW50RmlsZT4KKyAgICAgIDxPdXRGaWxlPiQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaDwvT3V0RmlsZT4KKyAgICA8L05vbmU+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwX2V4dGVybmFsLnB5Ij4KKyAgICAgIDxJbnRGaWxlPiQoSW50RGlyKWltcG9ydGxpYl9leHRlcm5hbC5nLmg8L0ludEZpbGU+CisgICAgICA8T3V0RmlsZT4kKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliX2V4dGVybmFsLmg8L091dEZpbGU+CisgICAgPC9Ob25lPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPFRhcmdldCBOYW1lPSJSZWJ1aWxkSW1wb3J0TGliIiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIj4KLSAgICA8RXhlYyBDb21tYW5kPSciJChUYXJnZXRQYXRoKSIgIiQoUHlTb3VyY2VQYXRoKUxpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSIgIiQoSW50RGlyKWltcG9ydGxpYi5nLmgiJyAvPgorICA8VGFyZ2V0IE5hbWU9Il9SZWJ1aWxkSW1wb3J0TGliIj4KKyAgICA8RXhlYyBDb21tYW5kPSciJChUYXJnZXRQYXRoKSIgIiUoTm9uZS5GdWxsUGF0aCkiICIlKE5vbmUuSW50RmlsZSkiJyAvPgogICAgIAogICAgIDxQcm9wZXJ0eUdyb3VwPgotICAgICAgPF9PbGRDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCckKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliLmgnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYi5oJykuUmVwbGFjZShgJiN4MEQ7JiN4MEE7YCwgYCYjeDBBO2ApKTwvX09sZENvbnRlbnQ+Ci0gICAgICA8X05ld0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpLlJlcGxhY2UoYCYjeDBEOyYjeDBBO2AsIGAmI3gwQTtgKSk8L19OZXdDb250ZW50PgorICAgICAgPF9PbGRDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCQoT3V0VGFyZ2V0UGF0aCkpIj48L19PbGRDb250ZW50PgorICAgICAgPF9OZXdDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCQoSW50VGFyZ2V0UGF0aCkpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCQoSW50VGFyZ2V0UGF0aCkpLlJlcGxhY2UoYCYjeDBEOyYjeDBBO2AsIGAmI3gwQTtgKSk8L19OZXdDb250ZW50PgogICAgIDwvUHJvcGVydHlHcm91cD4KICAgICAKLSAgICA8Q29weSBTb3VyY2VGaWxlcz0iJChJbnREaXIpaW1wb3J0bGliLmcuaCIKLSAgICAgICAgICBEZXN0aW5hdGlvbkZpbGVzPSIkKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliLmgiCi0gICAgICAgICAgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKSBhbmQgJyQoX09sZENvbnRlbnQpJyAhPSAnJChfTmV3Q29udGVudCknIiAvPgorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIlKE5vbmUuSW50RmlsZSkiCisgICAgICAgICAgRGVzdGluYXRpb25GaWxlcz0iJShOb25lLk91dEZpbGUpIgorICAgICAgICAgIENvbmRpdGlvbj0iIUV4aXN0cyglKE5vbmUuT3V0RmlsZSkpIG9yIChFeGlzdHMoJShOb25lLkludEZpbGUpKSBhbmQgJyQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShOb25lLk91dEZpbGUpKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpJyAhPSAnJChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCglKE5vbmUuSW50RmlsZSkpLlJlcGxhY2UoYCYjeDBEOyYjeDBBO2AsIGAmI3gwQTtgKSknKSI+CisgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IkNvcGllZEZpbGVzIiBJdGVtTmFtZT0iX1VwZGF0ZWQiIC8+CisgICAgPC9Db3B5PgogICAgIAotICAgIDxXYXJuaW5nIFRleHQ9ImltcG9ydGxpYi5oIGhhcyBiZWVuIHVwZGF0ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVidWlsZCBweXRob25jb3JlIHRvIHNlZSB0aGUgY2hhbmdlcy4iCi0gICAgICAgICAgICAgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKSBhbmQgJyQoX09sZENvbnRlbnQpJyAhPSAnJChfTmV3Q29udGVudCknIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciIC8+Ci0gICAgPEVycm9yIFRleHQ9ImltcG9ydGxpYi5oIGhhcyBiZWVuIHVwZGF0ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVidWlsZCBweXRob25jb3JlIHRvIHNlZSB0aGUgY2hhbmdlcy4iCi0gICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykgYW5kICckKF9PbGRDb250ZW50KScgIT0gJyQoX05ld0NvbnRlbnQpJyBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnUmVsZWFzZSciIC8+CisgICAgPFdhcm5pbmcgVGV4dD0iQChfVXBkYXRlZC0+JyUoRmlsZW5hbWUpJShFeHRlbnNpb24pJywnLCAnKSB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iJ0AoX1VwZGF0ZWQpJyAhPSAnJyBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIiAvPgorICAgIDxFcnJvciBUZXh0PSJAKF9VcGRhdGVkLT4nJShGaWxlbmFtZSklKEV4dGVuc2lvbiknLCcsICcpIHVwZGF0ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVidWlsZCBweXRob25jb3JlIHRvIHNlZSB0aGUgY2hhbmdlcy4iCisgICAgICAgICAgIENvbmRpdGlvbj0iJ0AoX1VwZGF0ZWQpJyAhPSAnJyBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnUmVsZWFzZSciIC8+CisgIDwvVGFyZ2V0PgorICA8VGFyZ2V0IE5hbWU9IlJlYnVpbGRJbXBvcnRMaWIiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1Zycgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUmVsZWFzZSciCisgICAgICAgICAgRGVwZW5kc09uVGFyZ2V0cz0iX1JlYnVpbGRJbXBvcnRMaWIiPgogICA8L1RhcmdldD4KICAgPFRhcmdldCBOYW1lPSJfQ2xlYW5JbXBvcnRMaWIiIEJlZm9yZVRhcmdldHM9IkNvcmVDbGVhbiI+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgIDxDbGVhbiBJbmNsdWRlPSIkKEludERpcilpbXBvcnRsaWIuZy5oIiAvPgorICAgICAgPENsZWFuIEluY2x1ZGU9IiQoSW50RGlyKWltcG9ydGxpYl9leHRlcm5hbC5nLmgiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgIDwvVGFyZ2V0PgogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCmluZGV4IDFmMDY5NmRhLi43ZWMyNjkyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19sem1hLnZjeHByb2oKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC02MSwxMyArNjEsMTEgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilzcmMvbGlibHptYS9hcGk7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKE91dERpcikvbGlibHptYSQoUHlEZWJ1Z0V4dCkubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtODEsOCArNzksMTIgQEAKICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGlibHptYS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMjcyODI1MC0xNmVDLTRkYzYtOTRkNy1lMjFkZDg4OTQ3Zjh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNTFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCkBAIC0wLDAgKzEsODMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3Rjb25zb2xlPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF90ZXN0Y29uc29sZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI1MTAxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkLmJhdCBiL1BDYnVpbGQvYnVpbGQuYmF0CmluZGV4IDllNjNhODQuLjcwYWIzNDAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGQuYmF0CisrKyBiL1BDYnVpbGQvYnVpbGQuYmF0CkBAIC0xMjQsOSArMTI0LDkgQEAKICAgICBAZWNobyBvZmYNCiAgICAgY2FsbCA6S2lsbA0KICAgICBzZXQgY29uZj1QR1VwZGF0ZQ0KKyAgICBzZXQgdGFyZ2V0PUJ1aWxkDQogKQ0KIGdvdG8gQnVpbGQNCi0NCiA6S2lsbA0KIGVjaG8gb24NCiBtc2J1aWxkICIlZGlyJVxweXRob25jb3JlLnZjeHByb2oiIC90OktpbGxQeXRob24gJXZlcmJvc2UlXg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdCBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyYzM4Mi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUBlY2hvIG9mZg0KLWVjaG8uRGVwcmVjYXRpb25XYXJuaW5nOg0KLWVjaG8uICAgIFRoaXMgc2NyaXB0IGlzIGRlcHJlY2F0ZWQsIHVzZSBgYnVpbGQuYmF0IC0tcGdvYCBpbnN0ZWFkLg0KLWVjaG8uDQotDQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC0tcGdvICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggMWMzY2RlZS4uYTUxODViZSAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01NSwxMSArNTUsMTEgQEAKIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmoNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy4xNC4yLjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjYuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNi4wDQogaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRpeC04LjQuMy42DQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMC41DQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMi4yDQogDQogZm9yICUlZSBpbiAoJWxpYnJhcmllcyUpIGRvICgNCiAgICAgaWYgZXhpc3QgJSVlICgNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvaiBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMWY5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpAQCAtMCwwICsxLDIxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEyNzI4MjUwLTE2RUMtNERDNi05NEQ3LUUyMUREODg5NDdGOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmx6bWE8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+dHJ1ZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtIQVZFX0NPTkZJR19IO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpd2luZG93czskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY29tbW9uOyQobHptYURpcilzcmMvY29tbW9uOyQobHptYURpcilzcmMvbGlibHptYS9hcGk7JChsem1hRGlyKXNyYy9saWJsem1hL2NoZWNrOyQobHptYURpcilzcmMvbGlibHptYS9kZWx0YTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHo7JChsem1hRGlyKXNyYy9saWJsem1hL2x6bWE7JChsem1hRGlyKXNyYy9saWJsem1hL3JhbmdlY29kZXI7JChsem1hRGlyKXNyYy9saWJsem1hL3NpbXBsZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcc2hhMjU2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhdXRvX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX3V0aWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9kZWNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX2NwdXRocmVhZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyX210LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX3NpemUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvc190YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX25vcm1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByZXNldHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfbWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm10aHVtYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxpYTY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHBvd2VycGMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNwYXJjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHg4Ni5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXG15dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxzeXNkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9pbnRlZ2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJjai5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJsb2NrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjb250YWluZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxkZWx0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGhhcmR3YXJlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleF9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcbHptYTEyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcc3RyZWFtX2ZsYWdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmVyc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZsaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmNfbWFjcm9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cbWVtY21wbGVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaF90YWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcil3aW5kb3dzXGNvbmZpZy5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwppbmRleCBlMzVjMGQ5Li4wZGU0ZTQzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMKKysrIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfVEhSRUFEUyIgLz4KICAgICA8IS0tIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+IC0tPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0lBMzJfU1NFMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CkBAIC0zOCw3ICszOSw2IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Ci0gICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQucHJvaiBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCmluZGV4IGMzMjA0MzQuLmM2Yjg0ODcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5wcm9qCisrKyBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICA8QnVpbGRUYXJnZXQ+QnVpbGQ8L0J1aWxkVGFyZ2V0PgogICAgICAgPENsZWFuVGFyZ2V0PkNsZWFuPC9DbGVhblRhcmdldD4KICAgICAgIDxDbGVhbkFsbFRhcmdldD5DbGVhbkFsbDwvQ2xlYW5BbGxUYXJnZXQ+Ci0gICAgICA8QnVpbGRJblBhcmFsbGVsPnRydWU8L0J1aWxkSW5QYXJhbGxlbD4KKyAgICAgIDxCdWlsZEluUGFyYWxsZWw+ZmFsc2U8L0J1aWxkSW5QYXJhbGxlbD4KICAgICA8L1Byb2plY3RzMj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtNDgsMTAgKzQ4LDggQEAKICAgICA8UHJvamVjdHMgSW5jbHVkZT0icHlsYXVuY2hlci52Y3hwcm9qO3B5d2xhdW5jaGVyLnZjeHByb2oiIC8+CiAgICAgPCEtLSBweXNoZWxsZXh0LmRsbCAtLT4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0icHlzaGVsbGV4dC52Y3hwcm9qIiAvPgotICAgIDwhLS0gX2ZyZWV6ZV9pbXBvcnRsaWIgLS0+Ci0gICAgPFByb2plY3RzIEluY2x1ZGU9Il9mcmVlemVfaW1wb3J0bGliLnZjeHByb2oiIC8+CiAgICAgPCEtLSBFeHRlbnNpb24gbW9kdWxlcyAtLT4KLSAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzO19kZWNpbWFsO19lbGVtZW50dHJlZTtfbXNpO19tdWx0aXByb2Nlc3Npbmc7X292ZXJsYXBwZWQ7cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQiIC8+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2FzeW5jaW87X2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgogICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCByZXF1aXJlIGV4dGVybmFsIHNvdXJjZXMgLS0+CiAgICAgPEV4dGVybmFsTW9kdWxlcyBJbmNsdWRlPSJfYnoyO19sem1hO19zcWxpdGUzIiAvPgogICAgIDwhLS0gX3NzbCB3aWxsIGJ1aWxkIF9zb2NrZXQgYXMgd2VsbCwgd2hpY2ggbWF5IGNhdXNlIGNvbmZsaWN0cyBpbiBwYXJhbGxlbCBidWlsZHMgLS0+CkBAIC02MSwxNyArNTksMTcgQEAKICAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJAKEV4dGVybmFsTW9kdWxlcy0+JyUoSWRlbnRpdHkpJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChFeHRlbnNpb25Nb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVuc2lvbnMpIiAvPgogICAgIDwhLS0gVGVzdCBtb2R1bGVzIC0tPgotICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2UiIC8+CisgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZTtfdGVzdGNvbnNvbGUiIC8+CiAgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Inh4bGltaXRlZCIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ1JlbGVhc2UnIiAvPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKFRlc3RNb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZVRlc3RzKSI+CiAgICAgICA8IS0tIERpc2FibGUgcGFyYWxsZWwgYnVpbGQgZm9yIHRlc3QgbW9kdWxlcyAtLT4KICAgICAgIDxCdWlsZEluUGFyYWxsZWw+ZmFsc2U8L0J1aWxkSW5QYXJhbGxlbD4KICAgICA8L1Byb2plY3RzPgogICAgIAorICAgIDwhLS0gX2ZyZWV6ZV9pbXBvcnRsaWIgLS0+CisgICAgPFByb2plY3RzMiBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgogICAgIDwhLS0gcHl0aG9uW3ddLmV4ZSAtLT4KLSAgICA8UHJvamVjdHMyIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qO3B5dGhvbncudmN4cHJvaiI+Ci0gICAgICA8QnVpbGRJblBhcmFsbGVsPmZhbHNlPC9CdWlsZEluUGFyYWxsZWw+Ci0gICAgPC9Qcm9qZWN0czI+CisgICAgPFByb2plY3RzMiBJbmNsdWRlPSJweXRob24udmN4cHJvajtweXRob253LnZjeHByb2oiIC8+CiAgIDwvSXRlbUdyb3VwPgogCiAgIDxUYXJnZXQgTmFtZT0iQnVpbGQiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggNDJhNGQyYi4uMGU2NTgxMSAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC05Miw2ICs5MiwxMCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlzaGVsbGV4dCIsICJweXNoZWxsZXh0LnZjeHByb2oiLCAiezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0iDQogRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3Rjb25zb2xlIiwgIl90ZXN0Y29uc29sZS52Y3hwcm9qIiwgIntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9hc3luY2lvIiwgIl9hc3luY2lvLnZjeHByb2oiLCAiezM4NEMyMjRBLTc0NzQtNDc2RS1BMDFCLTc1MEVBN0RFOTE4Q30iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KIAkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KQEAgLTcwOCw2ICs3MTIsMjIgQEAKIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAppbmRleCAxYmU3M2U2Li4yZjQxYWU4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApAQCAtMywxMCArMywxMCBAQAogICBpZiAiJTEiIEVRVSAiRGVidWciICgNCiAgICAgc2hpZnQNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNl9kLmRsbCBleGl0IDENCiAgICkgRUxTRSAoDQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNS5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNi5kbGwgZXhpdCAxDQogICApDQogKQ0KICVIT1NUX1BZVEhPTiUgIiV+ZHAwcHJlcGFyZV9zc2wucHkiICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCBkMWFjOTk4Li43MDEyMTcwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtNyw3ICs3LDYgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXREaXIpKSI+JChPdXREaXIpXDwvT3V0RGlyPgogICAgIDxQeV9JbnREaXIgQ29uZGl0aW9uPSInJChQeV9JbnREaXIpJyA9PSAnJyI+JChNU0J1aWxkVGhpc0ZpbGVEaXJlY3Rvcnkpb2JqXDwvUHlfSW50RGlyPgogICAgIDxJbnREaXI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpXyQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfUEdPXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoVGFyZ2V0TmFtZSknID09ICcnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZT4kKFRhcmdldE5hbWUpJChQeURlYnVnRXh0KTwvVGFyZ2V0TmFtZT4KICAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KQEAgLTE0OCwxMSArMTQ3LDEzIEBACiAgICAgICAgICAgICAgVGFyZ2V0cz0iQ2xlYW5BbGwiIC8+CiAgIDwvVGFyZ2V0PgogCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iJyQoU2lnblRvb2xQYXRoKScgPT0gJycgb3IgIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290KVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxNaWNyb3NvZnQgU0RLc1xXaW5kb3dzXHY3LjFBQEluc3RhbGxhdGlvbkZvbGRlcilcQmluXHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxfU2lnbkNvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+IiQoU2lnblRvb2xQYXRoKSIgc2lnbiAvcSAvbiAiJChTaWduaW5nQ2VydGlmaWNhdGUpIiAvZmQgc2hhMjU2IC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iJyQoU2RrQmluUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290MTApXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblw8L1Nka0JpblBhdGg+CisgICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNka0JpblBhdGgpKSBhbmQgJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4iJChTZGtCaW5QYXRoKVxzaWdudG9vbC5leGUiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL2ZkIHNoYTI1NiAvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgL2QgIlB5dGhvbiAkKFB5dGhvblZlcnNpb24pIjwvX1NpZ25Db21tYW5kPgorICAgIDxfTWFrZUNhdENvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiIkKFNka0JpblBhdGgpXG1ha2VjYXQuZXhlIjwvX01ha2VDYXRDb21tYW5kPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIAogICA8VGFyZ2V0IE5hbWU9Il9TaWduQnVpbGQiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24ucHJvcHMgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwppbmRleCAxNTUzNzMxLi5kZGU5NGY3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcworKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMjUsNyArMjUsNiBAQAogICAgIC0tPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CiAgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgotICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgogICAgIAogICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CiAgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgpAQCAtNDMsOSArNDIsOSBAQAogICAgIAogICAgIDwhLS0gRGlyZWN0b3JpZXMgb2YgZXh0ZXJuYWwgcHJvamVjdHMuIHRjbHRrIGlzIGhhbmRsZWQgaW4gdGNsdGsucHJvcHMgLS0+CiAgICAgPEV4dGVybmFsc0Rpcj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKGAkKFB5U291cmNlUGF0aClleHRlcm5hbHNcYCkpPC9FeHRlcm5hbHNEaXI+Ci0gICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuOC4xMS4wXDwvc3FsaXRlM0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy4xNC4yLjBcPC9zcWxpdGUzRGlyPgogICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+Ci0gICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMi4yXDwvbHptYURpcj4KICAgICA8b3BlbnNzbERpcj4kKEV4dGVybmFsc0RpcilvcGVuc3NsLTEuMC4yalw8L29wZW5zc2xEaXI+CiAgICAgPG9wZW5zc2xJbmNsdWRlRGlyPiQob3BlbnNzbERpcilpbmNsdWRlMzI8L29wZW5zc2xJbmNsdWRlRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpciBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJ2FtZDY0JyI+JChvcGVuc3NsRGlyKWluY2x1ZGU2NDwvb3BlbnNzbEluY2x1ZGVEaXI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IDk3MDM0NGYuLjZiMjNkOGUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgpAQCAtNjksNyArNjksNyBAQAogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO01TX0RMTF9JRD0iJChTeXNXaW5WZXIpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjtzaGx3YXBpLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CkBAIC0xMjQsNiArMTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2RpY3RvYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc21vZHVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCIgLz4KQEAgLTIwOSw5ICsyMTAsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx3b3JkY29kZV9oZWxwZXJzLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyIgLz4KQEAgLTIyMyw2ICsyMjgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcGlja2xlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdGF0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyIgLz4KQEAgLTI2NCw2ICsyNzAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHdpbmNvbnNvbGVpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiIC8+CkBAIC00MTQsNiArNDIxLDcgQEAKICAgICAgIDxIZ1ZlcnNpb24gQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhndmVyc2lvbi50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaGd2ZXJzaW9uLnR4dCcpLlRyaW0oKSk8L0hnVmVyc2lvbj4KICAgICAgIDxIZ1RhZyBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGd0YWcudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhndGFnLnR4dCcpLlRyaW0oKSk8L0hnVGFnPgogICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8TWVzc2FnZSBUZXh0PSJCdWlsZGluZyAkKEhnVGFnKTokKEhnVmVyc2lvbikgJChIZ0JyYW5jaCkiIEltcG9ydGFuY2U9ImhpZ2giIC8+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyI+CiAgICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5IR1ZFUlNJT049IiQoSGdWZXJzaW9uKSI7SEdUQUc9IiQoSGdUYWcpIjtIR0JSQU5DSD0iJChIZ0JyYW5jaCkiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTQyMyw0ICs0MzEsNCBAQAogICA8VGFyZ2V0IE5hbWU9Il9XYXJuQWJvdXRUb29sc2V0IiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpICE9ICd2MTQwJyI+CiAgICAgPFdhcm5pbmcgVGV4dD0iVG9vbHNldCAkKFBsYXRmb3JtVG9vbHNldCkgaXMgbm90IHVzZWQgZm9yIG9mZmljaWFsIGJ1aWxkcy4gWW91ciBidWlsZCBtYXkgaGF2ZSBlcnJvcnMgb3IgaW5jb21wYXRpYmlsaXRpZXMuIiAvPgogICA8L1RhcmdldD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4MzdiNzM2Li43NjIyMTBkIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cD4KICAgICA8RmlsdGVyIEluY2x1ZGU9IkluY2x1ZGUiPgpAQCAtMTc3LDYgKzE3Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc21vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDIwLDYgKzQyMyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx3b3JkY29kZV9oZWxwZXJzLmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQ0MCw5ICs0NDYsMjEgQEAKICAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9hc3luY2lvbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJiX2ltcGwuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJzX2ltcGwuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDc2LDYgKzQ5NCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01ODcsNiArNjA4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHdpbmNvbnNvbGVpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTk4MCw0ICsxMDA0LDQgQEAKICAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagppbmRleCBjYWVkMWU4Li5lNDBmNjZjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbndfZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVhZG1lLnR4dCBiL1BDYnVpbGQvcmVhZG1lLnR4dAppbmRleCAyNDYyMDEyLi5jMDRiYTRlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3JlYWRtZS50eHQKKysrIGIvUENidWlsZC9yZWFkbWUudHh0CkBAIC00OCw3ICs0OCw3IEBACiAgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50DQogICAgIHRvIHVzaW5nIC4vY29uZmlndXJlIC0td2l0aC1weWRlYnVnIG9uIFVOSVguICBBbGwgYmluYXJpZXMgYnVpbHQNCiAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIGhhdmUgIl9kIiBhZGRlZCB0byB0aGVpciBuYW1lOg0KLSAgICBweXRob24zNV9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQorICAgIHB5dGhvbjM2X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCiAgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCiAgICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCiAgICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCkBAIC0yMDQsMTEgKzIwNCwxMSBAQAogICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQNCiAgICAgd2l0aCB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgQ2xlYW5BbGwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCiBfc3FsaXRlMw0KLSAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCisgICAgV3JhcHMgU1FMaXRlIDMuMTQuMi4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy5zcWxpdGUub3JnLw0KIF90a2ludGVyDQotICAgIFdyYXBzIHZlcnNpb24gOC42LjQgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQorICAgIFdyYXBzIHZlcnNpb24gOC42LjYgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy50Y2wudGsvDQogDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCAyZDkzYjgwLi4zNTgyNjcyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtNDIsMTIgKzQyLDE1IEBACiBpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdGFyZ3M9JXJlZ3J0ZXN0YXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIHNldCBleGU9JXByZWZpeCVweXRob24lc3VmZml4JS5leGUNCi1zZXQgY21kPSIlZXhlJSIgJWRhc2hPJSAtV2QgLUUgLWJiICIlcGNidWlsZCUuLlxsaWJcdGVzdFxyZWdydGVzdC5weSIgJXJlZ3J0ZXN0YXJncyUNCitzZXQgY21kPSIlZXhlJSIgJWRhc2hPJSAtV2QgLUUgLWJiIC1tIHRlc3QgJXJlZ3J0ZXN0YXJncyUNCiBpZiBkZWZpbmVkIHFtb2RlIGdvdG8gUW1vZGUNCiANCiBlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4NCiAiJWV4ZSUiICIlcGNidWlsZCVybXB5Yy5weSINCiANCitlY2hvIENsZWFuaW5nIF9wdGggZmlsZXMgLi4uDQoraWYgZXhpc3QgJXByZWZpeCUqLl9wdGggZGVsICVwcmVmaXglKi5fcHRoIA0KKw0KIGVjaG8gb24NCiAlY21kJQ0KIEBlY2hvIG9mZg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKaW5kZXggYzg0MWM1YS4uNGY1YjE5NiAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTY2LDcgKzY2LDcgQEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0VOQUJMRV9GVFM0O1NRTElURV9FTkFCTEVfRlRTNTtTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04Niw0ICs4Niw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKaW5kZXggMTFkYmZmYi4uNTdiYjk4YSAxMDA2NDQKLS0tIGEvUENidWlsZC90Y2x0ay5wcm9wcworKysgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCkBAIC00LDggKzQsOCBAQAogICA8UHJvcGVydHlHcm91cD4KICAgICA8VGNsTWFqb3JWZXJzaW9uPjg8L1RjbE1ham9yVmVyc2lvbj4KICAgICA8VGNsTWlub3JWZXJzaW9uPjY8L1RjbE1pbm9yVmVyc2lvbj4KLSAgICA8VGNsUGF0Y2hMZXZlbD40PC9UY2xQYXRjaExldmVsPgotICAgIDxUY2xSZXZpc2lvbj4yPC9UY2xSZXZpc2lvbj4KKyAgICA8VGNsUGF0Y2hMZXZlbD42PC9UY2xQYXRjaExldmVsPgorICAgIDxUY2xSZXZpc2lvbj4wPC9UY2xSZXZpc2lvbj4KICAgICA8VGtNYWpvclZlcnNpb24+JChUY2xNYWpvclZlcnNpb24pPC9Ua01ham9yVmVyc2lvbj4KICAgICA8VGtNaW5vclZlcnNpb24+JChUY2xNaW5vclZlcnNpb24pPC9Ua01pbm9yVmVyc2lvbj4KICAgICA8VGtQYXRjaExldmVsPiQoVGNsUGF0Y2hMZXZlbCk8L1RrUGF0Y2hMZXZlbD4KQEAgLTQyLDQgKzQyLDQgQEAKICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMTAnIj4kKEJ1aWxkRGlyVG9wKV9WQzExPC9CdWlsZERpclRvcD4KICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMDAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEwPC9CdWlsZERpclRvcD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCmluZGV4IDAxNDRmYTkuLjlkYmRjNzcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA1MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA2MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IGNkMDgzMmQuLmY0NzBhZDEgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTEsNCArMSw4IEBACi0tLSBBU0RMJ3Mgc2l4IGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24KKy0tIEFTREwncyA3IGJ1aWx0aW4gdHlwZXMgYXJlOgorLS0gaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbiwgY29uc3RhbnQKKy0tCistLSBzaW5nbGV0b246IE5vbmUsIFRydWUgb3IgRmFsc2UKKy0tIGNvbnN0YW50IGNhbiBiZSBOb25lLCB3aGVyZWFzIE5vbmUgbWVhbnMgIm5vIHZhbHVlIiBmb3Igb2JqZWN0LgogCiBtb2R1bGUgUHl0aG9uCiB7CkBAIC0yNCw2ICsyOCw4IEBACiAgICAgICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKICAgICAgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQogICAgICAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKKyAgICAgICAgICAtLSAnc2ltcGxlJyBpbmRpY2F0ZXMgdGhhdCB3ZSBhbm5vdGF0ZSBzaW1wbGUgbmFtZSB3aXRob3V0IHBhcmVucworICAgICAgICAgIHwgQW5uQXNzaWduKGV4cHIgdGFyZ2V0LCBleHByIGFubm90YXRpb24sIGV4cHI/IHZhbHVlLCBpbnQgc2ltcGxlKQogCiAgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwogICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKQEAgLTcxLDkgKzc3LDEyIEBACiAgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcykKICAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgogICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KKyAgICAgICAgIHwgRm9ybWF0dGVkVmFsdWUoZXhwciB2YWx1ZSwgaW50PyBjb252ZXJzaW9uLCBleHByPyBmb3JtYXRfc3BlYykKKyAgICAgICAgIHwgSm9pbmVkU3RyKGV4cHIqIHZhbHVlcykKICAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKICAgICAgICAgIHwgTmFtZUNvbnN0YW50KHNpbmdsZXRvbiB2YWx1ZSkKICAgICAgICAgIHwgRWxsaXBzaXMKKyAgICAgICAgIHwgQ29uc3RhbnQoY29uc3RhbnQgdmFsdWUpCiAKICAgICAgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAogICAgICAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQpAQCAtMTAxLDcgKzExMCw3IEBACiAKICAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzLCBpbnQgaXNfYXN5bmMpCiAKICAgICBleGNlcHRoYW5kbGVyID0gRXhjZXB0SGFuZGxlcihleHByPyB0eXBlLCBpZGVudGlmaWVyPyBuYW1lLCBzdG10KiBib2R5KQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggMTIxY2RhYi4uNjJmNWMxOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTMzLDcgKzMzLDggQEAKICMgU2VlIHRoZSBFQk5GIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWNhbCBjb25uZWN0aW9uCiAjIGJldHdlZW4gdGhlIHZhcmlvdXMgbm9kZSB0eXBlcy4KIAotYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nfQorYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nLAorICAgICAgICAgICAgICAgICAnY29uc3RhbnQnfQogCiBjbGFzcyBBU1Q6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGxfYy5weSBiL1BhcnNlci9hc2RsX2MucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBhYzlkMmI2Li43MjVkNzNiCi0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtODQxLDYgKzg0MSw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtODc4LDYgKzg3OSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtOTEzLDcgKzkyNyw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL2dyYW1tYXIuYyBiL1BhcnNlci9ncmFtbWFyLmMKaW5kZXggYjU5ODI5NC4uNzVmZDViOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2dyYW1tYXIuYworKysgYi9QYXJzZXIvZ3JhbW1hci5jCkBAIC0yOCw2ICsyOCwyMyBAQAogICAgIHJldHVybiBnOwogfQogCit2b2lkCitmcmVlZ3JhbW1hcihncmFtbWFyICpnKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBnLT5nX25kZmFzOyBpKyspIHsKKyAgICAgICAgZnJlZShnLT5nX2RmYVtpXS5kX25hbWUpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGctPmdfZGZhW2ldLmRfbnN0YXRlczsgaisrKQorICAgICAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlW2pdLnNfYXJjKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlKTsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYSk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbGwubGxfbmxhYmVsczsgaSsrKQorICAgICAgICBmcmVlKGctPmdfbGwubGxfbGFiZWxbaV0ubGJfc3RyKTsKKyAgICBQeU9iamVjdF9GUkVFKGctPmdfbGwubGxfbGFiZWwpOworICAgIFB5T2JqZWN0X0ZSRUUoZyk7Cit9CisKIGRmYSAqCiBhZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC02Myw3ICs4MCw3IEBACiAgICAgcy0+c191cHBlciA9IDA7CiAgICAgcy0+c19hY2NlbCA9IE5VTEw7CiAgICAgcy0+c19hY2NlcHQgPSAwOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChzIC0gZC0+ZF9zdGF0ZSwgaW50cHRyX3QsIGludCk7CiB9CiAKIHZvaWQKQEAgLTEwNSw3ICsxMjIsNyBAQAogICAgIGlmIChQeV9EZWJ1Z0ZsYWcpCiAgICAgICAgIHByaW50ZigiTGFiZWwgQCAlOHAsICVkOiAlc1xuIiwgbGwsIGxsLT5sbF9ubGFiZWxzLAogICAgICAgICAgICAgICAgUHlHcmFtbWFyX0xhYmVsUmVwcihsYikpOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsYiAtIGxsLT5sbF9sYWJlbCwgaW50cHRyX3QsIGludCk7CiB9CiAKIC8qIFNhbWUsIGJ1dCByYXRoZXIgZGllcyB0aGFuIGFkZHMgKi8KQEAgLTEyMiw3ICsxMzksMTMgQEAKICAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJMYWJlbCAlZC8nJXMnIG5vdCBmb3VuZFxuIiwgdHlwZSwgc3RyKTsKICAgICBQeV9GYXRhbEVycm9yKCJncmFtbWFyLmM6ZmluZGxhYmVsKCkiKTsKKworICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBpcyBkZWNsYXJlZCB3aXRoIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpLgorICAgICAgIEdDQyBlbWl0cyBhIHdhcm5pbmcgd2l0aG91dCAicmV0dXJuIDA7IiAoY29tcGlsZXIgYnVnISksIGJ1dCBDbGFuZyBpcworICAgICAgIHNtYXJ0ZXIgYW5kIGVtaXRzIGEgd2FybmluZyBvbiB0aGUgcmV0dXJuLi4uICovCisjaWZuZGVmIF9fY2xhbmdfXwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLworI2VuZGlmCiB9CiAKIC8qIEZvcndhcmQgKi8KZGlmZiAtLWdpdCBhL1BhcnNlci9teXJlYWRsaW5lLmMgYi9QYXJzZXIvbXlyZWFkbGluZS5jCmluZGV4IDI4YzdiNmQuLjlmM2MyZTMgMTAwNjQ0Ci0tLSBhL1BhcnNlci9teXJlYWRsaW5lLmMKKysrIGIvUGFyc2VyL215cmVhZGxpbmUuYwpAQCAtNDEsMTAgKzQxLDcgQEAKICAgICAgICAgICAgICh2b2lkKShQeU9TX0lucHV0SG9vaykoKTsKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICBjbGVhcmVycihmcCk7Ci0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKGZwKSkpCi0gICAgICAgICAgICBwID0gZmdldHMoYnVmLCBsZW4sIGZwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcCA9IE5VTEw7CisgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwogICAgICAgICBpZiAocCAhPSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIDA7IC8qIE5vIGVycm9yICovCiAgICAgICAgIGVyciA9IGVycm5vOwpAQCAtMTAxLDYgKzk4LDEwMCBAQAogICAgIC8qIE5PVFJFQUNIRUQgKi8KIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKy8qIFJlYWRsaW5lIGltcGxlbWVudGF0aW9uIHVzaW5nIFJlYWRDb25zb2xlVyAqLworCitleHRlcm4gY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKTsKKworY2hhciAqCitfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKEhBTkRMRSBoU3RkSW4pCit7CisgICAgc3RhdGljIHdjaGFyX3Qgd2J1Zl9sb2NhbFsxMDI0ICogMTZdOworICAgIGNvbnN0IERXT1JEIGNodW5rX3NpemUgPSAxMDI0OworCisgICAgRFdPUkQgbl9yZWFkLCB0b3RhbF9yZWFkLCB3YnVmbGVuLCB1OGxlbjsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBuX3JlYWQgPSAwOworICAgIHRvdGFsX3JlYWQgPSAwOworICAgIHdidWYgPSB3YnVmX2xvY2FsOworICAgIHdidWZsZW4gPSBzaXplb2Yod2J1Zl9sb2NhbCkgLyBzaXplb2Yod2J1Zl9sb2NhbFswXSkgLSAxOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICghUmVhZENvbnNvbGVXKGhTdGRJbiwgJndidWZbdG90YWxfcmVhZF0sIHdidWZsZW4gLSB0b3RhbF9yZWFkLCAmbl9yZWFkLCBOVUxMKSkgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5fcmVhZCA9PSAwKSB7CisgICAgICAgICAgICBpbnQgczsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBlcnIgPSAwOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgMTAwLCBGQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCkgeworICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkKF9QeU9TX1JlYWRsaW5lVFN0YXRlKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHMgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9TYXZlVGhyZWFkKCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAocyA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG90YWxfcmVhZCArPSBuX3JlYWQ7CisgICAgICAgIGlmICh0b3RhbF9yZWFkID09IDAgfHwgd2J1Zlt0b3RhbF9yZWFkIC0gMV0gPT0gTCdcbicpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdidWZsZW4gKz0gY2h1bmtfc2l6ZTsKKyAgICAgICAgaWYgKHdidWYgPT0gd2J1Zl9sb2NhbCkgeworICAgICAgICAgICAgd2J1Zlt0b3RhbF9yZWFkXSA9ICdcMCc7CisgICAgICAgICAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyh3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICh3YnVmKQorICAgICAgICAgICAgICAgIHdjc2NweV9zKHdidWYsIHdidWZsZW4sIHdidWZfbG9jYWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3UmVhbGxvYyh3YnVmLCB3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICB9CisKKyAgICBpZiAod2J1ZlswXSA9PSAnXHgxYScpIHsKKyAgICAgICAgYnVmID0gUHlNZW1fUmF3TWFsbG9jKDEpOworICAgICAgICBpZiAoYnVmKQorICAgICAgICAgICAgYnVmWzBdID0gJ1wwJzsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2ModThsZW4gKyAxKTsKKyAgICB1OGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgdG90YWxfcmVhZCwgYnVmLCB1OGxlbiwgTlVMTCwgTlVMTCk7CisgICAgYnVmW3U4bGVuXSA9ICdcMCc7CisKK2V4aXQ6CisgICAgaWYgKHdidWYgIT0gd2J1Zl9sb2NhbCkKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKworICAgIGlmIChlcnIpIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKworI2VuZGlmCisKIAogLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgZmdldHMoKSAqLwogCkBAIC0xMTAsNiArMjAxLDQ2IEBACiAgICAgc2l6ZV90IG47CiAgICAgY2hhciAqcCwgKnByOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBzeXNfc3RkaW4gPT0gc3RkaW4pIHsKKyAgICAgICAgSEFORExFIGhTdGRJbiwgaFN0ZEVycjsKKworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhTdGRJbiA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHN5c19zdGRpbikpOworICAgICAgICBoU3RkRXJyID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8oc3RkZXJyKSk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICAgICAgaWYgKF9nZXRfY29uc29sZV90eXBlKGhTdGRJbikgPT0gJ3InKSB7CisgICAgICAgICAgICBmZmx1c2goc3lzX3N0ZG91dCk7CisgICAgICAgICAgICBpZiAocHJvbXB0KSB7CisgICAgICAgICAgICAgICAgaWYgKF9nZXRfY29uc29sZV90eXBlKGhTdGRFcnIpID09ICd3JykgeworICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3YnVmOworICAgICAgICAgICAgICAgICAgICBpbnQgd2xlbjsKKyAgICAgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgcHJvbXB0LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdsZW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICh3YnVmID0gUHlNZW1fUmF3TWFsbG9jKHdsZW4gKiBzaXplb2Yod2NoYXJfdCkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgcHJvbXB0LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2J1Ziwgd2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2xlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2xlbiBpbmNsdWRlcyBudWxsIHRlcm1pbmF0b3IsIHNvIHN1YnRyYWN0IDEgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbnNvbGVXKGhTdGRFcnIsIHdidWYsIHdsZW4gLSAxLCAmbiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdidWYpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHByb21wdCk7CisgICAgICAgICAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsZWFyZXJyKHN5c19zdGRpbik7CisgICAgICAgICAgICByZXR1cm4gX1B5T1NfV2luZG93c0NvbnNvbGVSZWFkbGluZShoU3RkSW4pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBuID0gMTAwOwogICAgIHAgPSAoY2hhciAqKVB5TWVtX1Jhd01hbGxvYyhuKTsKICAgICBpZiAocCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL25vZGUuYyBiL1BhcnNlci9ub2RlLmMKaW5kZXggMDAxMDMyNC4uMjQwZDI5MCAxMDA2NDQKLS0tIGEvUGFyc2VyL25vZGUuYworKysgYi9QYXJzZXIvbm9kZS5jCkBAIC05MSw3ICs5MSw3IEBACiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCAwIHx8IHJlcXVpcmVkX2NhcGFjaXR5IDwgMCkKICAgICAgICAgcmV0dXJuIEVfT1ZFUkZMT1c7CiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCByZXF1aXJlZF9jYXBhY2l0eSkgewotICAgICAgICBpZiAoKHNpemVfdClyZXF1aXJlZF9jYXBhY2l0eSA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKG5vZGUpKSB7CisgICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKICAgICAgICAgICAgIHJldHVybiBFX05PTUVNOwogICAgICAgICB9CiAgICAgICAgIG4gPSBuMS0+bl9jaGlsZDsKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXIuYyBiL1BhcnNlci9wYXJzZXIuYwppbmRleCA1NmVjNTE0Li40MTA3MmM0IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2VyLmMKKysrIGIvUGFyc2VyL3BhcnNlci5jCkBAIC0xNDAsMjEgKzE0MCwyMCBAQAogICAgIGludCBuID0gZy0+Z19sbC5sbF9ubGFiZWxzOwogCiAgICAgaWYgKHR5cGUgPT0gTkFNRSkgewotICAgICAgICBjb25zdCBjaGFyICpzID0gc3RyOwogICAgICAgICBsYWJlbCAqbCA9IGctPmdfbGwubGxfbGFiZWw7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSBuOyBpID4gMDsgaS0tLCBsKyspIHsKICAgICAgICAgICAgIGlmIChsLT5sYl90eXBlICE9IE5BTUUgfHwgbC0+bGJfc3RyID09IE5VTEwgfHwKLSAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc1swXSB8fAotICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHMpICE9IDApCisgICAgICAgICAgICAgICAgbC0+bGJfc3RyWzBdICE9IHN0clswXSB8fAorICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHN0cikgIT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCiAgICAgICAgICAgICAvKiBMZWF2aW5nIHRoaXMgaW4gYXMgYW4gZXhhbXBsZSAqLwogICAgICAgICAgICAgaWYgKCEocHMtPnBfZmxhZ3MgJiBDT19GVVRVUkVfV0lUSF9TVEFURU1FTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ3cnICYmIHN0cmNtcChzLCAid2l0aCIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKHN0clswXSA9PSAndycgJiYgc3RyY21wKHN0ciwgIndpdGgiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm90IGEga2V5d29yZCB5ZXQgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzBdID09ICdhJyAmJiBzdHJjbXAocywgImFzIikgPT0gMCkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJbMF0gPT0gJ2EnICYmIHN0cmNtcChzdHIsICJhcyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwogICAgICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2suYyBiL1BhcnNlci9wYXJzZXRvay5jCmluZGV4IDYyOWRlZTUuLjFmNDY3ZDYgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXRvay5jCisrKyBiL1BhcnNlci9wYXJzZXRvay5jCkBAIC0xNjEsMTAgKzE2MSwxMCBAQAogCiAjaWZkZWYgUFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JECiAjaWYgMAotc3RhdGljIGNoYXIgd2l0aF9tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciB3aXRoX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ3dpdGgnIHdpbGwgYmVjb21lIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBQeXRob24gMi42XG4iOwogCi1zdGF0aWMgY2hhciBhc19tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhc19tc2dbXSA9CiAiJXM6JWQ6IFdhcm5pbmc6ICdhcycgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTUsNyArMjU1LDcgQEAKICNlbmRpZgogICAgICAgICBpZiAoYSA+PSB0b2stPmxpbmVfc3RhcnQpCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlfU0FGRV9ET1dOQ0FTVChhIC0gdG9rLT5saW5lX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaW50cHRyX3QsIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCwgaW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sX29mZnNldCA9IC0xOwogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbi5jIGIvUGFyc2VyL3BnZW4uYwppbmRleCBmMzAzMWFlLi42NDUxYTFkIDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbi5jCisrKyBiL1BhcnNlci9wZ2VuLmMKQEAgLTExNyw2ICsxMTcsMTYgQEAKICAgICByZXR1cm4gZ3I7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlbmZhZ3JhbW1hcihuZmFncmFtbWFyICpncikKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyLT5ncl9ubmZhczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYVtpXS0+bmZfc3RhdGUpOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGdyLT5ncl9uZmEpOworICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworfQorCiBzdGF0aWMgbmZhICoKIGFkZG5mYShuZmFncmFtbWFyICpnciwgY2hhciAqbmFtZSkKIHsKQEAgLTEzNCw3ICsxNDQsNyBAQAogCiAjaWZkZWYgUHlfREVCVUcKIAotc3RhdGljIGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CitzdGF0aWMgY29uc3QgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKIAogI2RlZmluZSBSRVFOKGksIGNvdW50KSBkbyB7IFwKICAgICBpZiAoaSA8IGNvdW50KSB7IFwKQEAgLTM3OSw3ICszODksNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgdm9pZCBwcmludHNzZGZhKGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUsIGludCBuYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY2hhciAqbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKTsKIHN0YXRpYyB2b2lkIHNpbXBsaWZ5KGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogc3RhdGljIHZvaWQgY29udmVydChkZmEgKmQsIGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogCkBAIC00ODgsMTMgKzQ5OCwxNyBAQAogCiAgICAgY29udmVydChkLCB4eF9uc3RhdGVzLCB4eF9zdGF0ZSk7CiAKLSAgICAvKiBYWFggY2xlYW51cCAqLworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeHhfbnN0YXRlczsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgeHhfc3RhdGVbaV0uc3NfbmFyY3M7IGorKykKKyAgICAgICAgICAgIGRlbGJpdHNldCh4eF9zdGF0ZVtpXS5zc19hcmNbal0uc2FfYml0c2V0KTsKKyAgICAgICAgUHlPYmplY3RfRlJFRSh4eF9zdGF0ZVtpXS5zc19hcmMpOworICAgIH0KICAgICBQeU9iamVjdF9GUkVFKHh4X3N0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQKIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpCisgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBpbnQgaSwgaWJpdCwgaWFyYzsKICAgICBzc19zdGF0ZSAqeXk7CkBAIC02NjksNyArNjgzLDcgQEAKICAgICBnID0gbWFrZXRhYmxlcyhncik7CiAgICAgdHJhbnNsYXRlbGFiZWxzKGcpOwogICAgIGFkZGZpcnN0c2V0cyhnKTsKLSAgICBQeU9iamVjdF9GUkVFKGdyKTsKKyAgICBmcmVlbmZhZ3JhbW1hcihncik7CiAgICAgcmV0dXJuIGc7CiB9CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggMGYwNTVkNi4uZTM4NjI0OCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTI3LDcgKzI3LDcgQEAKIGludCBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7CiAKIC8qIEZvcndhcmQgKi8KLWdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpOworZ3JhbW1hciAqZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSk7CiAKIHZvaWQgUHlfRXhpdChpbnQpIF9QeV9OT19SRVRVUk47CiAKQEAgLTM3LDYgKzM3LDE1IEBACiAgICAgZXhpdChzdHMpOwogfQogCisjaWZkZWYgV0lUSF9USFJFQUQKKy8qIE5lZWRlZCBieSBvYm1hbGxvYy5jICovCitpbnQgUHlHSUxTdGF0ZV9DaGVjayh2b2lkKQoreyByZXR1cm4gMTsgfQorI2VuZGlmCisKK3ZvaWQgX1B5TWVtX0R1bXBUcmFjZWJhY2soaW50IGZkLCBjb25zdCB2b2lkICpwdHIpCit7fQorCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewpAQCAtNzEsMTIgKzgwLDEzIEBACiAgICAgICAgIHByaW50ZigiV3JpdGluZyAlcyAuLi5cbiIsIGdyYW1pbml0X2gpOwogICAgIHByaW50bm9udGVybWluYWxzKGcsIGZwKTsKICAgICBmY2xvc2UoZnApOworICAgIGZyZWVncmFtbWFyKGcpOwogICAgIFB5X0V4aXQoMCk7CiAgICAgcmV0dXJuIDA7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKIGdyYW1tYXIgKgotZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK2dldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgRklMRSAqZnA7CiAgICAgbm9kZSAqbjsKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA2MTJjYjIzLi4wZmEzYWViIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC0yMDIsOCArMjAyLDggQEAKIH0KIAogCi1zdGF0aWMgY2hhciAqCi1nZXRfbm9ybWFsX25hbWUoY2hhciAqcykgICAgICAgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X25vcm1hbF9uYW1lKGNvbnN0IGNoYXIgKnMpICAvKiBmb3IgdXRmLTggYW5kIGxhdGluLTEgKi8KIHsKICAgICBjaGFyIGJ1ZlsxM107CiAgICAgaW50IGk7CkBAIC0yNjQsNyArMjY0LDcgQEAKIAogICAgICAgICAgICAgaWYgKGJlZ2luIDwgdCkgewogICAgICAgICAgICAgICAgIGNoYXIqIHIgPSBuZXdfc3RyaW5nKGJlZ2luLCB0IC0gYmVnaW4sIHRvayk7Ci0gICAgICAgICAgICAgICAgY2hhciogcTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBxOwogICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgcSA9IGdldF9ub3JtYWxfbmFtZShyKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQAogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoYnVmb2JqKSkKICAgICB7Ci0gICAgICAgIGJ1ZiA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKGJ1Zm9iaiwgJmJ1Zmxlbik7CisgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGJ1Zm9iaiwgJmJ1Zmxlbik7CiAgICAgICAgIGlmIChidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQpAQCAtMTMzNSw2ICsxMzM1LDI4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIGludAordG9rX2RlY2ltYWxfdGFpbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCit7CisgICAgaW50IGM7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICBpZiAoYyAhPSAnXycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGM7Cit9CisKIC8qIEdldCBuZXh0IHRva2VuLCBhZnRlciBzcGFjZSBzdHJpcHBpbmcgZXRjLiAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzU1LDE3ICsxMzc3LDIwIEBACiAgICAgICAgIHRvay0+YXRib2wgPSAwOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnICcpCisgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBjb2wrKywgYWx0Y29sKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpIHsKICAgICAgICAgICAgICAgICBjb2wgPSAoY29sL3Rvay0+dGFic2l6ZSArIDEpICogdG9rLT50YWJzaXplOwogICAgICAgICAgICAgICAgIGFsdGNvbCA9IChhbHRjb2wvdG9rLT5hbHR0YWJzaXplICsgMSkKICAgICAgICAgICAgICAgICAgICAgKiB0b2stPmFsdHRhYnNpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgLyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAgey8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCiAgICAgICAgICAgICAgICAgY29sID0gYWx0Y29sID0gMDsgLyogRm9yIEVtYWNzIHVzZXJzICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIGlmIChjID09ICcjJyB8fCBjID09ICdcbicpIHsKQEAgLTEzNzQsMTAgKzEzOTksMTIgQEAKICAgICAgICAgICAgICAgIG5vdCBwYXNzZWQgdG8gdGhlIHBhcnNlciBhcyBORVdMSU5FIHRva2VucywKICAgICAgICAgICAgICAgIGV4Y2VwdCAqdG90YWxseSogZW1wdHkgbGluZXMgaW4gaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIG1vZGUsIHdoaWNoIHNpZ25hbCB0aGUgZW5kIG9mIGEgY29tbWFuZCBncm91cC4gKi8KLSAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDA7IC8qIExldCBpdCB0aHJvdWdoICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAxOyAvKiBJZ25vcmUgY29tcGxldGVseSAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogV2UgY2FuJ3QganVtcCBiYWNrIHJpZ2h0IGhlcmUgc2luY2Ugd2Ugc3RpbGwKICAgICAgICAgICAgICAgIG1heSBuZWVkIHRvIHNraXAgdG8gdGhlIGVuZCBvZiBhIGNvbW1lbnQgKi8KICAgICAgICAgfQpAQCAtMTM4NSw4ICsxNDEyLDkgQEAKICAgICAgICAgICAgIGlmIChjb2wgPT0gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKICAgICAgICAgICAgICAgICAvKiBObyBjaGFuZ2UgKi8KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2wgPiB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewpAQCAtMTM5Nyw4ICsxNDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgPD0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPnBlbmRpbisrOwogICAgICAgICAgICAgICAgIHRvay0+aW5kc3RhY2tbKyt0b2stPmluZGVudF0gPSBjb2w7CkBAIC0xNDE3LDggKzE0NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDY0LDkgKzE0OTQsMTEgQEAKICAgICB0b2stPnN0YXJ0ID0gdG9rLT5jdXIgLSAxOwogCiAgICAgLyogU2tpcCBjb21tZW50ICovCi0gICAgaWYgKGMgPT0gJyMnKQotICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorICAgIGlmIChjID09ICcjJykgeworICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3IgRU9GIGFuZCBlcnJvcnMgbm93ICovCiAgICAgaWYgKGMgPT0gRU9GKSB7CkBAIC0xNDc3LDMxICsxNTA5LDQxIEBACiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewogICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KLSAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwLCBzYXdfZiA9IDA7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19mKSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQogICAgICAgICAgICAgICAgIHNhd19iID0gMTsKICAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKICAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IgfHwgc2F3X2YpCisgICAgICAgICAgICAgICAgICAgICAmJiAoYyA9PSAndSd8fCBjID09ICdVJykpIHsKICAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkgewogICAgICAgICAgICAgICAgIHNhd19yID0gMTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2YgfHwgc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdmJyB8fCBjID09ICdGJykpIHsKKyAgICAgICAgICAgICAgICBzYXdfZiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCisgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX2NoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID49IDEyOCkKKyAgICAgICAgICAgIGlmIChjID49IDEyOCkgewogICAgICAgICAgICAgICAgIG5vbmFzY2lpID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkKKyAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogCkBAIC0xNTEwLDEwICsxNTUyLDEyIEBACiAgICAgICAgICAgICAvKiBDdXJyZW50IHRva2VuIGxlbmd0aCBpcyA1LiAqLwogICAgICAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLiAqLwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCkBAIC0xNTQ2LDggKzE1OTAsOSBAQAogICAgIC8qIE5ld2xpbmUgKi8KICAgICBpZiAoYyA9PSAnXG4nKSB7CiAgICAgICAgIHRvay0+YXRib2wgPSAxOwotICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKQorICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICBnb3RvIG5leHRsaW5lOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKQEAgLTE1NzAsMTEgKzE2MTUsMTMgQEAKICAgICAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVMTElQU0lTOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCAnLicpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKQEAgLTE1ODcsNjQgKzE2MzQsOTQgQEAKICAgICAgICAgaWYgKGMgPT0gJzAnKSB7CiAgICAgICAgICAgICAvKiBIZXgsIG9jdGFsIG9yIGJpbmFyeSAtLSBtYXliZS4gKi8KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQotICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OwogICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7Ci0KICAgICAgICAgICAgICAgICAvKiBIZXggKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdvJyB8fCBjID09ICdPJykgewogICAgICAgICAgICAgICAgIC8qIE9jdGFsICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKICAgICAgICAgICAgICAgICAvKiBCaW5hcnkgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG5vbnplcm8gPSAwOwogICAgICAgICAgICAgICAgIC8qIG1heWJlIG9sZC1zdHlsZSBvY3RhbDsgYyBpcyBmaXJzdCBjaGFyIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgLyogaW4gYW55IGNhc2UsIGFsbG93ICcwJyBhcyBhIGxpdGVyYWwgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhwb25lbnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChub256ZXJvKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZC1zdHlsZSBvY3RhbDogbm93IGRpc2FsbG93ZWQuICovCiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CiAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CkBAIC0xNjUzLDE3ICsxNzMwLDIyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBEZWNpbWFsICovCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgfQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIEFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqLwogICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGZyYWN0aW9uOgogICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGU7CkBAIC0xNjg1LDE0ICsxNzY3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICAvKiBJbWFnaW5hcnkgcGFydCAqLwogICAgICAgICBpbWFnaW5hcnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwpAQCAtMTcxMiwyMiArMTc5NiwyNyBAQAogICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgcXVvdGVfc2l6ZSA9IDM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDE7ICAgICAvKiBlbXB0eSBzdHJpbmcgZm91bmQgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoYyAhPSBxdW90ZSkKKyAgICAgICAgaWYgKGMgIT0gcXVvdGUpIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIEdldCByZXN0IG9mIHN0cmluZyAqLwogICAgICAgICB3aGlsZSAoZW5kX3F1b3RlX3NpemUgIT0gcXVvdGVfc2l6ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykKKyAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9GUzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPTFM7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9CkBAIC0xNzM2LDEyICsxODI1LDE0IEBACiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSArPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTc3MSw3ICsxODYyLDggQEAKICAgICAgICAgICAgIGludCB0b2tlbjMgPSBQeVRva2VuX1RocmVlQ2hhcnMoYywgYzIsIGMzKTsKICAgICAgICAgICAgIGlmICh0b2tlbjMgIT0gT1ApIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuMzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYzMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggMDc5Mzk4NC4uMTA2OTk2NiAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0YXR1cy5zdF9zaXplOworICAgIHRleHRfc2l6ZSA9IChzaXplX3Qpc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYWI2YThjNy4uMzk2ODM5OSAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2VuZGlmCiAgICAgaW50IGksIGo7CiAKLSAgICBmb3IgKGk9MDsgaTwzOyBpKyspIHsKKyAgICBmb3IgKGk9MDsgaTwxNTsgaSsrKSB7CiAgICAgICAgIHByaW50ZigiLS0tIFBhc3MgJWQgLS0tXG4iLCBpKTsKICAgICAgICAgX3Rlc3RlbWJlZF9QeV9Jbml0aWFsaXplKCk7CiAgICAgICAgIG1haW5zdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9weXRob24uYyBiL1Byb2dyYW1zL3B5dGhvbi5jCmluZGV4IDM3YjEwYjguLmE3YWZiYzcgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC0yNCw2ICsyNCw5IEBACiAgICAgaW50IGksIHJlczsKICAgICBjaGFyICpvbGRsb2M7CiAKKyAgICAvKiBGb3JjZSBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gYm9vdHN0cmFwIFB5dGhvbiAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CkBAIC02Miw3ICs2NSwxMyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKICAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CisKICAgICByZXMgPSBQeV9NYWluKGFyZ2MsIGFyZ3ZfY29weSk7CisKKyAgICAvKiBGb3JjZSBhZ2FpbiBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gcmVsZWFzZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgIGJlZm9yZSBQeV9NYWluKCkgKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBhZDUzYmEzNS4uZTA2MDdiYSAxMDA2NDQKLS0tIGEvUHl0aG9uL1B5dGhvbi1hc3QuYworKysgYi9QeXRob24vUHl0aG9uLWFzdC5jCkBAIC04Niw2ICs4NiwxNSBAQAogICAgICJvcCIsCiAgICAgInZhbHVlIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBbm5Bc3NpZ25fdHlwZTsKK19QeV9JREVOVElGSUVSKGFubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoc2ltcGxlKTsKK3N0YXRpYyBjaGFyICpBbm5Bc3NpZ25fZmllbGRzW109eworICAgICJ0YXJnZXQiLAorICAgICJhbm5vdGF0aW9uIiwKKyAgICAidmFsdWUiLAorICAgICJzaW1wbGUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkZvcl90eXBlOwogX1B5X0lERU5USUZJRVIoaXRlcik7CiBfUHlfSURFTlRJRklFUihvcmVsc2UpOwpAQCAtMjg1LDYgKzI5NCwxOCBAQAogc3RhdGljIGNoYXIgKlN0cl9maWVsZHNbXT17CiAgICAgInMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkZvcm1hdHRlZFZhbHVlX3R5cGU7CitfUHlfSURFTlRJRklFUihjb252ZXJzaW9uKTsKK19QeV9JREVOVElGSUVSKGZvcm1hdF9zcGVjKTsKK3N0YXRpYyBjaGFyICpGb3JtYXR0ZWRWYWx1ZV9maWVsZHNbXT17CisgICAgInZhbHVlIiwKKyAgICAiY29udmVyc2lvbiIsCisgICAgImZvcm1hdF9zcGVjIiwKK307CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpKb2luZWRTdHJfdHlwZTsKK3N0YXRpYyBjaGFyICpKb2luZWRTdHJfZmllbGRzW109eworICAgICJ2YWx1ZXMiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJ5dGVzX3R5cGU7CiBzdGF0aWMgY2hhciAqQnl0ZXNfZmllbGRzW109ewogICAgICJzIiwKQEAgLTI5NCw2ICszMTUsMTAgQEAKICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkVsbGlwc2lzX3R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpDb25zdGFudF90eXBlOworc3RhdGljIGNoYXIgKkNvbnN0YW50X2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF0dHJpYnV0ZV90eXBlOwogX1B5X0lERU5USUZJRVIoYXR0cik7CiBfUHlfSURFTlRJRklFUihjdHgpOwpAQCAtNDEwLDEwICs0MzUsMTIgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmNvbXByZWhlbnNpb25fdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9jb21wcmVoZW5zaW9uKHZvaWQqKTsKIF9QeV9JREVOVElGSUVSKGlmcyk7CitfUHlfSURFTlRJRklFUihpc19hc3luYyk7CiBzdGF0aWMgY2hhciAqY29tcHJlaGVuc2lvbl9maWVsZHNbXT17CiAgICAgInRhcmdldCIsCiAgICAgIml0ZXIiLAogICAgICJpZnMiLAorICAgICJpc19hc3luYyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqZXhjZXB0aGFuZGxlcl90eXBlOwogc3RhdGljIGNoYXIgKmV4Y2VwdGhhbmRsZXJfYXR0cmlidXRlc1tdID0gewpAQCAtNDUwLDcgKzQ3Nyw2IEBACiAgICAgImNvbF9vZmZzZXQiLAogfTsKIF9QeV9JREVOVElGSUVSKGFyZyk7Ci1fUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKIHN0YXRpYyBjaGFyICphcmdfZmllbGRzW109ewogICAgICJhcmciLAogICAgICJhbm5vdGF0aW9uIiwKQEAgLTY5Nyw2ICs3MjMsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CiAjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfY29uc3RhbnQgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKQEAgLTczNCw2ICs3NjEsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2NvbnN0YW50KFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqKSB7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBvYmopIDwgMCkgeworICAgICAgICAgICAgKm91dCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pZGVudGlmaWVyKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikgJiYgb2JqICE9IFB5X05vbmUpIHsKQEAgLTc2OSw3ICs4MDksNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpID0gKGludClQeUxvbmdfQXNMb25nKG9iaik7CisgICAgaSA9IF9QeUxvbmdfQXNJbnQob2JqKTsKICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMTsKICAgICAqb3V0ID0gaTsKQEAgLTg0Myw2ICs4ODMsOCBAQAogICAgIGlmICghQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEF1Z0Fzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBdWdBc3NpZ24iLCBzdG10X3R5cGUsIEF1Z0Fzc2lnbl9maWVsZHMsIDMpOwogICAgIGlmICghQXVnQXNzaWduX3R5cGUpIHJldHVybiAwOworICAgIEFubkFzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBbm5Bc3NpZ24iLCBzdG10X3R5cGUsIEFubkFzc2lnbl9maWVsZHMsIDQpOworICAgIGlmICghQW5uQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEZvcl90eXBlID0gbWFrZV90eXBlKCJGb3IiLCBzdG10X3R5cGUsIEZvcl9maWVsZHMsIDQpOwogICAgIGlmICghRm9yX3R5cGUpIHJldHVybiAwOwogICAgIEFzeW5jRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jRm9yIiwgc3RtdF90eXBlLCBBc3luY0Zvcl9maWVsZHMsIDQpOwpAQCAtOTE3LDYgKzk1OSwxMSBAQAogICAgIGlmICghTnVtX3R5cGUpIHJldHVybiAwOwogICAgIFN0cl90eXBlID0gbWFrZV90eXBlKCJTdHIiLCBleHByX3R5cGUsIFN0cl9maWVsZHMsIDEpOwogICAgIGlmICghU3RyX3R5cGUpIHJldHVybiAwOworICAgIEZvcm1hdHRlZFZhbHVlX3R5cGUgPSBtYWtlX3R5cGUoIkZvcm1hdHRlZFZhbHVlIiwgZXhwcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfZmllbGRzLCAzKTsKKyAgICBpZiAoIUZvcm1hdHRlZFZhbHVlX3R5cGUpIHJldHVybiAwOworICAgIEpvaW5lZFN0cl90eXBlID0gbWFrZV90eXBlKCJKb2luZWRTdHIiLCBleHByX3R5cGUsIEpvaW5lZFN0cl9maWVsZHMsIDEpOworICAgIGlmICghSm9pbmVkU3RyX3R5cGUpIHJldHVybiAwOwogICAgIEJ5dGVzX3R5cGUgPSBtYWtlX3R5cGUoIkJ5dGVzIiwgZXhwcl90eXBlLCBCeXRlc19maWVsZHMsIDEpOwogICAgIGlmICghQnl0ZXNfdHlwZSkgcmV0dXJuIDA7CiAgICAgTmFtZUNvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIk5hbWVDb25zdGFudCIsIGV4cHJfdHlwZSwKQEAgLTkyNCw2ICs5NzEsOCBAQAogICAgIGlmICghTmFtZUNvbnN0YW50X3R5cGUpIHJldHVybiAwOwogICAgIEVsbGlwc2lzX3R5cGUgPSBtYWtlX3R5cGUoIkVsbGlwc2lzIiwgZXhwcl90eXBlLCBOVUxMLCAwKTsKICAgICBpZiAoIUVsbGlwc2lzX3R5cGUpIHJldHVybiAwOworICAgIENvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIkNvbnN0YW50IiwgZXhwcl90eXBlLCBDb25zdGFudF9maWVsZHMsIDEpOworICAgIGlmICghQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXR0cmlidXRlX3R5cGUgPSBtYWtlX3R5cGUoIkF0dHJpYnV0ZSIsIGV4cHJfdHlwZSwgQXR0cmlidXRlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdHRyaWJ1dGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgU3Vic2NyaXB0X3R5cGUgPSBtYWtlX3R5cGUoIlN1YnNjcmlwdCIsIGV4cHJfdHlwZSwgU3Vic2NyaXB0X2ZpZWxkcywgMyk7CkBAIC0xMTAxLDcgKzExNTAsNyBAQAogICAgIE5vdEluX3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE5vdEluX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgIGlmICghTm90SW5fc2luZ2xldG9uKSByZXR1cm4gMDsKICAgICBjb21wcmVoZW5zaW9uX3R5cGUgPSBtYWtlX3R5cGUoImNvbXByZWhlbnNpb24iLCAmQVNUX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fZmllbGRzLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDQpOwogICAgIGlmICghY29tcHJlaGVuc2lvbl90eXBlKSByZXR1cm4gMDsKICAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKGNvbXByZWhlbnNpb25fdHlwZSwgTlVMTCwgMCkpIHJldHVybiAwOwogICAgIGV4Y2VwdGhhbmRsZXJfdHlwZSA9IG1ha2VfdHlwZSgiZXhjZXB0aGFuZGxlciIsICZBU1RfdHlwZSwgTlVMTCwgMCk7CkBAIC0xMzcwLDYgKzE0MTksMzQgQEAKIH0KIAogc3RtdF90eQorQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludCBzaW1wbGUsIGludAorICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB0YXJnZXQgaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFhbm5vdGF0aW9uKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFubm90YXRpb24gaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBbm5Bc3NpZ25fa2luZDsKKyAgICBwLT52LkFubkFzc2lnbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiA9IGFubm90YXRpb247CisgICAgcC0+di5Bbm5Bc3NpZ24udmFsdWUgPSB2YWx1ZTsKKyAgICBwLT52LkFubkFzc2lnbi5zaW1wbGUgPSBzaW1wbGU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CiBGb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50CiAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMDYzLDYgKzIxNDAsNDIgQEAKIH0KIAogZXhwcl90eQorRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIEZvcm1hdHRlZFZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEZvcm1hdHRlZFZhbHVlX2tpbmQ7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyA9IGZvcm1hdF9zcGVjOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQorSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gSm9pbmVkU3RyX2tpbmQ7CisgICAgcC0+di5Kb2luZWRTdHIudmFsdWVzID0gdmFsdWVzOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGV4cHJfdHkgcDsKQEAgLTIxMTQsNiArMjIyNywyNSBAQAogfQogCiBleHByX3R5CitDb25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBDb25zdGFudCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBDb25zdGFudF9raW5kOworICAgIHAtPnYuQ29uc3RhbnQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEF0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludCBsaW5lbm8sIGludAogICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMjMxNSw3ICsyNDQ3LDggQEAKIH0KIAogY29tcHJlaGVuc2lvbl90eQotY29tcHJlaGVuc2lvbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGlmcywgUHlBcmVuYSAqYXJlbmEpCitjb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBpbnQgaXNfYXN5bmMsCisgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGNvbXByZWhlbnNpb25fdHkgcDsKICAgICBpZiAoIXRhcmdldCkgewpAQCAtMjMzNCw2ICsyNDY3LDcgQEAKICAgICBwLT50YXJnZXQgPSB0YXJnZXQ7CiAgICAgcC0+aXRlciA9IGl0ZXI7CiAgICAgcC0+aWZzID0gaWZzOworICAgIHAtPmlzX2FzeW5jID0gaXNfYXN5bmM7CiAgICAgcmV0dXJuIHA7CiB9CiAKQEAgLTI2NDgsNiArMjc4MiwzMCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFubkFzc2lnbl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuQW5uQXNzaWduLnNpbXBsZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3NpbXBsZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzE2NCw2ICszMzIyLDM0IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhGb3JtYXR0ZWRWYWx1ZV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbnZlcnNpb24sIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZm9ybWF0X3NwZWMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhKb2luZWRTdHJfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Kb2luZWRTdHIudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEJ5dGVzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTg2LDYgKzMzNzIsMTUgQEAKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRWxsaXBzaXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhDb25zdGFudF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfY29uc3RhbnQoby0+di5Db25zdGFudC52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXR0cmlidXRlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zNTMxLDYgKzM3MjYsMTEgQEAKICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lmcywgdmFsdWUpID09IC0xKQogICAgICAgICBnb3RvIGZhaWxlZDsKICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+aXNfYXN5bmMpOworICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXNfYXN5bmMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogZmFpbGVkOgogICAgIFB5X1hERUNSRUYodmFsdWUpOwpAQCAtNDQ1OCw2ICs0NjU4LDY0IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IHNpbXBsZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmFubm90YXRpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYW5ub3RhdGlvblwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zaW1wbGUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3NpbXBsZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmc2ltcGxlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInNpbXBsZVwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBbm5Bc3NpZ24odGFyZ2V0LCBhbm5vdGF0aW9uLCB2YWx1ZSwgc2ltcGxlLCBsaW5lbm8sIGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjA1LDYgKzY0NjMsOTAgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICBleHByX3R5IGZvcm1hdF9zcGVjOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9jb252ZXJzaW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb252ZXJzaW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb252ZXJzaW9uLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnZlcnNpb24gPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9mb3JtYXRfc3BlYykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZm9ybWF0X3NwZWMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZmb3JtYXRfc3BlYywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3JtYXRfc3BlYyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEZvcm1hdHRlZFZhbHVlKHZhbHVlLCBjb252ZXJzaW9uLCBmb3JtYXRfc3BlYywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGFzZGxfc2VxKiB2YWx1ZXM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICB2YWx1ZXMgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVzXCIgbWlzc2luZyBmcm9tIEpvaW5lZFN0ciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEpvaW5lZFN0cih2YWx1ZXMsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilCeXRlc190eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYyNTksNiArNjYwMSwyOCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgY29uc3RhbnQgdmFsdWU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfY29uc3RhbnQodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQ29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBDb25zdGFudCh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTY5ODcsNiArNzM1MSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxKiBpZnM7CisgICAgaW50IGlzX2FzeW5jOwogCiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgIGludCByZXM7CkBAIC03MDM4LDcgKzc0MDMsMTggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaWZzXCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgICpvdXQgPSBjb21wcmVoZW5zaW9uKHRhcmdldCwgaXRlciwgaWZzLCBhcmVuYSk7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYykpIHsKKyAgICAgICAgaW50IHJlczsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lzX2FzeW5jKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmaXNfYXN5bmMsIGFyZW5hKTsKKyAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpc19hc3luY1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgaXNfYXN5bmMsIGFyZW5hKTsKICAgICByZXR1cm4gMDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHRtcCk7CkBAIC03NTAyLDYgKzc4NzgsOCBAQAogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXVnQXNzaWduIiwgKFB5T2JqZWN0KilBdWdBc3NpZ25fdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFubkFzc2lnbiIsIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3IiLCAoUHlPYmplY3QqKUZvcl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGb3IiLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NTYyLDEyICs3OTQwLDE4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDYWxsIiwgKFB5T2JqZWN0KilDYWxsX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJOdW0iLCAoUHlPYmplY3QqKU51bV90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3RyIiwgKFB5T2JqZWN0KilTdHJfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZvcm1hdHRlZFZhbHVlIiwKKyAgICAgICAgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSm9pbmVkU3RyIiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkJ5dGVzIiwgKFB5T2JqZWN0KilCeXRlc190eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTmFtZUNvbnN0YW50IiwgKFB5T2JqZWN0KilOYW1lQ29uc3RhbnRfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVsbGlwc2lzIiwgKFB5T2JqZWN0KilFbGxpcHNpc190eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ29uc3RhbnQiLCAoUHlPYmplY3QqKUNvbnN0YW50X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdHRyaWJ1dGUiLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3Vic2NyaXB0IiwgKFB5T2JqZWN0KilTdWJzY3JpcHRfdHlwZSkgPCAwKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IDM5MjgxNTMuLjZjZmFlNzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTQwLDEyICs0MCwxMSBAQAogICAgQSBOVUxMIHJldHVybiB2YWx1ZSBjYW4gbWVhbiBmYWxzZSBvciBhbiBlcnJvci4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X3dhcm5pbmdzX2F0dHIoY29uc3QgY2hhciAqYXR0cikKK2dldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIsIGludCB0cnlfaW1wb3J0KQogewogICAgIHN0YXRpYyBQeU9iamVjdCAqd2FybmluZ3Nfc3RyID0gTlVMTDsKICAgICBQeU9iamVjdCAqYWxsX21vZHVsZXM7Ci0gICAgUHlPYmplY3QgKndhcm5pbmdzX21vZHVsZTsKLSAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUsICpvYmo7CiAKICAgICBpZiAod2FybmluZ3Nfc3RyID09IE5VTEwpIHsKICAgICAgICAgd2FybmluZ3Nfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIndhcm5pbmdzIik7CkBAIC01MywxNSArNTIsMzQgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIHJlc3VsdCA9IFB5RGljdF9Db250YWlucyhhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAocmVzdWx0ID09IC0xIHx8IHJlc3VsdCA9PSAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOwotICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpKQorICAgIC8qIGRvbid0IHRyeSB0byBpbXBvcnQgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBQeXRob24gZmluYWxsaXphdGlvbiAqLworICAgIGlmICh0cnlfaW1wb3J0ICYmIF9QeV9GaW5hbGl6aW5nID09IE5VTEwpIHsKKyAgICAgICAgd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHdhcm5pbmdzX3N0cik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24gaWYgd2UgY2Fubm90IGdldAorICAgICAgICAgICAgICAgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworCisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9JTkNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICB9CisKKyAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkgeworICAgICAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgIFB5X0RFQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgIHJldHVybiBvYmo7CiB9CiAKIApAQCAtNzAsNyArODgsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZWdpc3RyeTsKIAotICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIpOworICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIsIDApOwogICAgIGlmIChyZWdpc3RyeSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04Nyw3ICsxMDUsNyBAQAogewogICAgIFB5T2JqZWN0ICpkZWZhdWx0X2FjdGlvbjsKIAotICAgIGRlZmF1bHRfYWN0aW9uID0gZ2V0X3dhcm5pbmdzX2F0dHIoImRlZmF1bHRhY3Rpb24iKTsKKyAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIiwgMCk7CiAgICAgaWYgKGRlZmF1bHRfYWN0aW9uID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEwLDcgKzEyOCw3IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nc19maWx0ZXJzOwogCi0gICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIik7CisgICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIiwgMCk7CiAgICAgaWYgKHdhcm5pbmdzX2ZpbHRlcnMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg3LDggKzMwNSw4IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1zaG93X3dhcm5pbmcoUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqdGV4dCwgUHlPYmplY3QKLSAgICAgICAgICAgICAgICAqY2F0ZWdvcnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsCisgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKIHsKICAgICBQeU9iamVjdCAqZl9zdGRlcnI7CiAgICAgUHlPYmplY3QgKm5hbWU7CkBAIC0zNTksMTAgKzM3Nyw2NCBAQAogICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKK3N0YXRpYyBpbnQKK2NhbGxfc2hvd193YXJuaW5nKFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0ICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqbGluZW5vX29iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2VsaW5lLCBQeU9iamVjdCAqc291cmNlKQoreworICAgIFB5T2JqZWN0ICpzaG93X2ZuLCAqbXNnLCAqcmVzLCAqd2Fybm1zZ19jbHMgPSBOVUxMOworCisgICAgLyogSWYgdGhlIHNvdXJjZSBwYXJhbWV0ZXIgaXMgc2V0LCB0cnkgdG8gZ2V0IHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCisgICAgICAgVGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBhYmxlIHRvIGxvZyB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBzb3VyY2UKKyAgICAgICB3YXMgYWxsb2NhdGVkLCB3aGVyZWFzIHRoZSBDIGltcGxlbWVudGF0aW9uIGRvZXNudC4gKi8KKyAgICBzaG93X2ZuID0gZ2V0X3dhcm5pbmdzX2F0dHIoIl9zaG93d2Fybm1zZyIsIHNvdXJjZSAhPSBOVUxMKTsKKyAgICBpZiAoc2hvd19mbiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19mbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAid2FybmluZ3MuX3Nob3d3YXJubXNnKCkgbXVzdCBiZSBzZXQgdG8gYSBjYWxsYWJsZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHdhcm5tc2dfY2xzID0gZ2V0X3dhcm5pbmdzX2F0dHIoIldhcm5pbmdNZXNzYWdlIiwgMCk7CisgICAgaWYgKHdhcm5tc2dfY2xzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mod2Fybm1zZ19jbHMsIG1lc3NhZ2UsIGNhdGVnb3J5LAorICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosIFB5X05vbmUsIFB5X05vbmUsIHNvdXJjZSwKKyAgICAgICAgICAgIE5VTEwpOworICAgIFB5X0RFQ1JFRih3YXJubXNnX2Nscyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2ZuLCBtc2csIE5VTEwpOworICAgIFB5X0RFQ1JFRihzaG93X2ZuKTsKKyAgICBQeV9ERUNSRUYobXNnKTsKKworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoc2hvd19mbik7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogd2Fybl9leHBsaWNpdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAogICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCisgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmtleSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJlc3VsdCA9IE5VTEwsICpsaW5lbm9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqaXRlbSA9IE5VTEw7CkBAIC00NzAsMzEgKzU0Miw5IEBACiAgICAgaWYgKHJjID09IDEpICAvKiBBbHJlYWR5IHdhcm5lZCBmb3IgdGhpcyBtb2R1bGUuICovCiAgICAgICAgIGdvdG8gcmV0dXJuX25vbmU7CiAgICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnNob3dfZnhuID0gZ2V0X3dhcm5pbmdzX2F0dHIoInNob3d3YXJuaW5nIik7Ci0gICAgICAgIGlmIChzaG93X2Z4biA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLQotICAgICAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZnhuKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2hvd19meG4pOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2Z4biwgbWVzc2FnZSwgY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxfc2hvd193YXJuaW5nKGNhdGVnb3J5LCB0ZXh0LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vX29iaiwgc291cmNlbGluZSwgc291cmNlKSA8IDApCisgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogICAgIGVsc2UgLyogaWYgKHJjID09IC0xKSAqLwogICAgICAgICBnb3RvIGNsZWFudXA7CkBAIC03MzgsNyArNzg4LDggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKK2RvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICAgICAgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqZmlsZW5hbWUsICptb2R1bGUsICpyZWdpc3RyeSwgKnJlczsKICAgICBpbnQgbGluZW5vOwpAQCAtNzQ3LDcgKzc5OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLCByZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgc291cmNlKTsKICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihyZWdpc3RyeSk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CkBAIC03NTcsMjUgKzgwOCwyNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyAibWVzc2FnZSIsICJjYXRlZ29yeSIsICJzdGFja2xldmVsIiwgMCB9OwotICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd19saXN0W10gPSB7Im1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lc3NhZ2UsICpjYXRlZ29yeSA9IE5VTEwsICpzb3VyY2UgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T246d2FybiIsIGt3X2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPbk86d2FybiIsIGt3X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsLCAmc291cmNlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjYXRlZ29yeSA9IGdldF9jYXRlZ29yeShtZXNzYWdlLCBjYXRlZ29yeSk7CiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmV0dXJuIGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogd2FybmluZ3Nfd2Fybl9leHBsaWNpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIHN0YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgImZpbGVuYW1lIiwgImxpbmVubyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLCAwfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsICJyZWdpc3RyeSIsICJtb2R1bGVfZ2xvYmFscyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiLCAwfTsKICAgICBQeU9iamVjdCAqbWVzc2FnZTsKICAgICBQeU9iamVjdCAqY2F0ZWdvcnk7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwpAQCAtNzgzLDEwICs4MzYsMTEgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVnaXN0cnkgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVfZ2xvYmFscyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNvdXJjZW9iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT09VaXxPT086d2Fybl9leHBsaWNpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09PTzp3YXJuX2V4cGxpY2l0IiwKICAgICAgICAgICAgICAgICBrd2RfbGlzdCwgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJmZpbGVuYW1lLCAmbGluZW5vLCAmbW9kdWxlLAotICAgICAgICAgICAgICAgICZyZWdpc3RyeSwgJm1vZHVsZV9nbG9iYWxzKSkKKyAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscywgJnNvdXJjZW9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZV9nbG9iYWxzKSB7CkBAIC04NDIsMTQgKzg5NiwxNCBAQAogCiAgICAgICAgIC8qIEhhbmRsZSB0aGUgd2FybmluZy4gKi8KICAgICAgICAgcmV0dXJuZWQgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgc291cmNlX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lLCBzb3VyY2VvYmopOwogICAgICAgICBQeV9ERUNSRUYoc291cmNlX2xpc3QpOwogICAgICAgICByZXR1cm4gcmV0dXJuZWQ7CiAgICAgfQogCiAgc3RhbmRhcmRfY2FsbDoKICAgICByZXR1cm4gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCwgc291cmNlb2JqKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg2NCwxNCArOTE4LDE0IEBACiAKIHN0YXRpYyBpbnQKIHdhcm5fdW5pY29kZShQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAotICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCisgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAKLSAgICByZXMgPSBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC04NzksMTIgKzkzMywyOCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitfUHlFcnJfV2FybkZvcm1hdFYoUHlPYmplY3QgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGZvcm1hdCwgdmFyZ3MpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJlcyA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CisgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgIHJldHVybiByZXM7Cit9CisKIGludAogUHlFcnJfV2FybkZvcm1hdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewotICAgIGludCByZXQ7Ci0gICAgUHlPYmplY3QgKm1lc3NhZ2U7CisgICAgaW50IHJlczsKICAgICB2YV9saXN0IHZhcmdzOwogCiAjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtODkyLDI1ICs5NjIsMzggQEAKICNlbHNlCiAgICAgdmFfc3RhcnQodmFyZ3MpOwogI2VuZGlmCi0gICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKLSAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOwotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0ID0gLTE7CisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKE5VTEwsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXM7CiB9CiAKIGludAorUHlFcnJfUmVzb3VyY2VXYXJuaW5nKFB5T2JqZWN0ICpzb3VyY2UsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgaW50IHJlczsKKyAgICB2YV9saXN0IHZhcmdzOworCisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICByZXMgPSBfUHlFcnJfV2FybkZvcm1hdFYoc291cmNlLCBQeUV4Y19SZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX2xldmVsLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiByZXM7Cit9CisKKworaW50CiBQeUVycl9XYXJuRXgoUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQogewogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0ZXh0KTsKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCk7CisgICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC05MjEsNyArMTAwNCw3IEBACiAjdW5kZWYgUHlFcnJfV2FybgogCiBQeUFQSV9GVU5DKGludCkKLVB5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjaGFyICp0ZXh0KQorUHlFcnJfV2FybihQeU9iamVjdCAqY2F0ZWdvcnksIGNvbnN0IGNoYXIgKnRleHQpCiB7CiAgICAgcmV0dXJuIFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgdGV4dCwgMSk7CiB9CkBAIC05MzYsNyArMTAxOSw3IEBACiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0xMDAwLDcgKzEwODMsNyBAQAogICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggZGYzODdiMi4uYzIxMTA3OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC05LDE0ICs5LDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDAsMTQgKzQwLDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCi0gICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKKyAgICBpZiAobiA+IFNJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggZDM2YTliNy4uMjE3ZWExNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMTMyLDYgKzEzMiw1MiBAQAogfQogCiBzdGF0aWMgaW50Cit2YWxpZGF0ZV9jb25zdGFudChQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IFB5X05vbmUgfHwgdmFsdWUgPT0gUHlfRWxsaXBzaXMpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlDb21wbGV4X0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJvb2xfQ2hlY2sodmFsdWUpCisgICAgICAgICAgICB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Qnl0ZXNfQ2hlY2tFeGFjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2YWx1ZSkgfHwgUHlGcm96ZW5TZXRfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKml0OworCisgICAgICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2YWx1ZSk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlJdGVyX05leHQoaXQpOworICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChpdGVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIHZhbGlkYXRlX2V4cHIoZXhwcl90eSBleHAsIGV4cHJfY29udGV4dF90eSBjdHgpCiB7CiAgICAgaW50IGNoZWNrX2N0eCA9IDE7CkBAIC0yNDAsNiArMjg2LDE0IEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChleHAtPnYuQ29uc3RhbnQudmFsdWUpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYW4gaW52YWxpZCB0eXBlIGluIENvbnN0YW50OiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShleHAtPnYuQ29uc3RhbnQudmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOwogICAgIGNhc2UgTnVtX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKm4gPSBleHAtPnYuTnVtLm47CiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrRXhhY3QobikgJiYgIVB5RmxvYXRfQ2hlY2tFeGFjdChuKSAmJgpAQCAtMjU3LDYgKzMxMSwxNCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkpvaW5lZFN0ci52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlLCBMb2FkKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMsIExvYWQpOworICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKmIgPSBleHAtPnYuQnl0ZXMuczsKICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKQEAgLTMzNSw2ICszOTcsMTcgQEAKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi50YXJnZXQsIFN0b3JlKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldC0+a2luZCAhPSBOYW1lX2tpbmQgJiYKKyAgICAgICAgICAgIHN0bXQtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW5uQXNzaWduIHdpdGggc2ltcGxlIG5vbi1OYW1lIHRhcmdldCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgICAgICghc3RtdC0+di5Bbm5Bc3NpZ24udmFsdWUgfHwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnZhbHVlLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiwgTG9hZCk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IudGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IuaXRlciwgTG9hZCkgJiYKQEAgLTQxMyw4ICs0ODYsOCBAQAogICAgIGNhc2UgSW1wb3J0X2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnQubmFtZXMsICJuYW1lcyIsICJJbXBvcnQiKTsKICAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKLSAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkltcG9ydEZyb20gbGV2ZWwgbGVzcyB0aGFuIC0xIik7CisgICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIk5lZ2F0aXZlIEltcG9ydEZyb20gbGV2ZWwiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnRGcm9tLm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0RnJvbSIpOwpAQCAtNTEyLDggKzU4NSw3IEBACiAKIC8qIERhdGEgc3RydWN0dXJlIHVzZWQgaW50ZXJuYWxseSAqLwogc3RydWN0IGNvbXBpbGluZyB7Ci0gICAgY2hhciAqY19lbmNvZGluZzsgLyogc291cmNlIGVuY29kaW5nICovCi0gICAgUHlBcmVuYSAqY19hcmVuYTsgLyogYXJlbmEgZm9yIGFsbG9jYXRpbmcgbWVtZW9yeSAqLworICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIEFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbW9yeS4gKi8KICAgICBQeU9iamVjdCAqY19maWxlbmFtZTsgLyogZmlsZW5hbWUgKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemU7IC8qIE5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZnJvbSB1bmljb2RlZGF0YS4gKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemVfYXJnczsgLyogTm9ybWFsaXphdGlvbiBhcmd1bWVudCB0dXBsZS4gKi8KQEAgLTUzNSw5ICs2MDcsNyBAQAogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBleHByX3R5KTsKIAogc3RhdGljIFB5T2JqZWN0ICpwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpieXRlc21vZGUpOworc3RhdGljIGV4cHJfdHkgcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbik7CiAKICNkZWZpbmUgQ09NUF9HRU5FWFAgICAwCiAjZGVmaW5lIENPTVBfTElTVENPTVAgMQpAQCAtNzAxLDIzICs3NzEsMTEgQEAKICAgICBjLmNfYXJlbmEgPSBhcmVuYTsKICAgICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICBjLmNfbm9ybWFsaXplID0gYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKLSAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0jaWYgMAotICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBvdXQ7Ci0jZW5kaWYKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0gICAgICAgIGMuY19lbmNvZGluZyA9IFNUUihuKTsKKyAgICBjLmNfbm9ybWFsaXplID0gTlVMTDsKKyAgICBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOworCisgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkKICAgICAgICAgbiA9IENISUxEKG4sIDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFBFUCAzMTIwICovCi0gICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7Ci0gICAgfQogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CkBAIC04NjQsNyArOTIyLDcgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBGT1JCSURERU5bXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgRk9SQklEREVOW10gPSB7CiAgICAgIk5vbmUiLAogICAgICJUcnVlIiwKICAgICAiRmFsc2UiLApAQCAtODgwLDggKzkzOCwzMCBAQAogICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKG5hbWUsICJhc3luYyIpIHx8CisgICAgICAgIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKG5hbWUsICJhd2FpdCIpKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICInYXN5bmMnIGFuZCAnYXdhaXQnIHdpbGwgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzIgorICAgICAgICAgICAgIiBpbiBQeXRob24gMy43Iik7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIHJldCA9IFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoZnVsbF9jaGVja3MpIHsKLSAgICAgICAgY29uc3QgY2hhciAqKnA7CisgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKICAgICAgICAgZm9yIChwID0gRk9SQklEREVOOyAqcDsgcCsrKSB7CiAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcobmFtZSwgKnApKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKQEAgLTk0MywxMyArMTAyMyw4IEBACiAgICAgICAgICAgICBzID0gZS0+di5MaXN0LmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgotICAgICAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpKSAgewotICAgICAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByX25hbWUgPSAiKCkiOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7CisgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGFtYmRhX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGFtYmRhIjsKQEAgLTk4Niw2ICsxMDYxLDggQEAKICAgICAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKQEAgLTEyNTksMTYgKzEzMzYsMjAgQEAKICAgICAgICBhbmQgdmFyYXJnc2xpc3QgKGxhbWJkYSBkZWZpbml0aW9uKS4KIAogICAgICAgIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi0gICAgICAgdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXQotICAgICAgICAgICB8ICcqKicgdGZwZGVmKQotICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXSkKICAgICAgICB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICAgICAgIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgICB8ICcqKicgdmZwZGVmKQotICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB2YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKyAgICAgICApCiAgICAgICAgdmZwZGVmOiBOQU1FCisKICAgICAqLwogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CkBAIC0xMzcwLDcgKzE0NTEsOCBAQAogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgotICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGkrMiA9PSBOQ0gobikgJiYgVFlQRShDSElMRChuLCBpKzEpKSA9PSBDT01NQSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjg3LDE0ICsxNzY5LDIxIEBACiBjb3VudF9jb21wX2ZvcnMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBpbnQgbl9mb3JzID0gMDsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgY291bnRfY29tcF9mb3I6CisgICAgaXNfYXN5bmMgPSAwOwogICAgIG5fZm9ycysrOwogICAgIFJFUShuLCBjb21wX2Zvcik7Ci0gICAgaWYgKE5DSChuKSA9PSA1KQotICAgICAgICBuID0gQ0hJTEQobiwgNCk7Ci0gICAgZWxzZQorICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICBpc19hc3luYyA9IDE7CisgICAgfQorICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKKyAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gbl9mb3JzOworICAgIH0KICAgY291bnRfY29tcF9pdGVyOgogICAgIFJFUShuLCBjb21wX2l0ZXIpOwogICAgIG4gPSBDSElMRChuLCAwKTsKQEAgLTE3NTcsMTQgKzE4NDYsMTkgQEAKICAgICAgICAgYXNkbF9zZXEgKnQ7CiAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiwgZmlyc3Q7CiAgICAgICAgIG5vZGUgKmZvcl9jaDsKKyAgICAgICAgaW50IGlzX2FzeW5jID0gMDsKIAogICAgICAgICBSRVEobiwgY29tcF9mb3IpOwogCi0gICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEpOworICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEgKyBpc19hc3luYyk7CiAgICAgICAgIHQgPSBhc3RfZm9yX2V4cHJsaXN0KGMsIGZvcl9jaCwgU3RvcmUpOwogICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzKSk7CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMyArIGlzX2FzeW5jKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzcyLDE5ICsxODY2LDIwIEBACiAgICAgICAgICAgICh4IGZvciB4LCBpbiAuLi4pIGhhcyAxIGVsZW1lbnQgaW4gdCwgYnV0IHN0aWxsIHJlcXVpcmVzIGEgVHVwbGUuICovCiAgICAgICAgIGZpcnN0ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHQsIDApOwogICAgICAgICBpZiAoTkNIKGZvcl9jaCkgPT0gMSkKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywgZmlyc3QtPmNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFjb21wKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKE5DSChuKSA9PSA1KSB7CisgICAgICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKICAgICAgICAgICAgIGludCBqLCBuX2lmczsKICAgICAgICAgICAgIGFzZGxfc2VxICppZnM7CiAKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCA0KTsKKyAgICAgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOwogICAgICAgICAgICAgbl9pZnMgPSBjb3VudF9jb21wX2lmcyhjLCBuKTsKICAgICAgICAgICAgIGlmIChuX2lmcyA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5OTMsNyArMjA4OCw2IEBACiAgICAgICAgfCAnLi4uJyB8ICdOb25lJyB8ICdUcnVlJyB8ICdGYWxzZScKICAgICAqLwogICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7Ci0gICAgaW50IGJ5dGVzbW9kZSA9IDA7CiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7CkBAIC0yMDE1LDcgKzIxMDksNyBAQAogICAgICAgICByZXR1cm4gTmFtZShuYW1lLCBMb2FkLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdHIgPSBwYXJzZXN0cnBsdXMoYywgbiwgJmJ5dGVzbW9kZSk7CisgICAgICAgIGV4cHJfdHkgc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4pOwogICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZXJydHlwZSA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRXJyb3IpKQpAQCAtMjAzMyw2ICsyMTI3LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpICVzIiwgZXJydHlwZSwgcyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSB1bmtub3duIGVycm9yIiwgZXJydHlwZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXJyc3RyKTsKQEAgLTIwNDMsMTQgKzIxMzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgc3RyKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzbW9kZSkKLSAgICAgICAgICAgIHJldHVybiBCeXRlcyhzdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFN0cihzdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgUHlPYmplY3QgKnB5bnVtID0gcGFyc2VudW1iZXIoYywgU1RSKGNoKSk7CkBAIC0yODA3LDggKzI4OTUsOSBAQAogYXN0X2Zvcl9leHByX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBSRVEobiwgZXhwcl9zdG10KTsKLSAgICAvKiBleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KQotICAgICAgICAgICAgICAgIHwgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdCkpKikKKyAgICAvKiBleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCisgICAgICAgYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiAgICAgICAgdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgdGVzdHxzdGFyX2V4cHIpKiBbJywnXQogICAgICAgIGF1Z2Fzc2lnbjogJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nCiAgICAgICAgICAgICAgICAgfCAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JwpAQCAtMjg2MCw2ICsyOTQ5LDc2IEBACiAKICAgICAgICAgcmV0dXJuIEF1Z0Fzc2lnbihleHByMSwgbmV3b3BlcmF0b3IsIGV4cHIyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQorICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGFubmFzc2lnbikgeworICAgICAgICBleHByX3R5IGV4cHIxLCBleHByMiwgZXhwcjM7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7CisgICAgICAgIG5vZGUgKmRlZXAsICphbm4gPSBDSElMRChuLCAxKTsKKyAgICAgICAgaW50IHNpbXBsZSA9IDE7CisKKyAgICAgICAgLyogd2Uga2VlcCB0cmFjayBvZiBwYXJlbnMgdG8gcXVhbGlmeSAoeCkgYXMgZXhwcmVzc2lvbiBub3QgbmFtZSAqLworICAgICAgICBkZWVwID0gY2g7CisgICAgICAgIHdoaWxlIChOQ0goZGVlcCkgPT0gMSkgeworICAgICAgICAgICAgZGVlcCA9IENISUxEKGRlZXAsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goZGVlcCkgPiAwICYmIFRZUEUoQ0hJTEQoZGVlcCwgMCkpID09IExQQVIpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZXhwcjEgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGNoKTsKKyAgICAgICAgaWYgKCFleHByMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChleHByMS0+a2luZCkgeworICAgICAgICAgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52Lk5hbWUuaWQsIG4sIDApKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHByMS0+di5OYW1lLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZXhwcjEtPnYuQXR0cmlidXRlLmF0dHIsIG4sIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHByMS0+di5BdHRyaWJ1dGUuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICAgICAgICAgIGV4cHIxLT52LlN1YnNjcmlwdC5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTGlzdF9raW5kOgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgc2luZ2xlIHRhcmdldCAobm90IGxpc3QpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCB0dXBsZSkgY2FuIGJlIGFubm90YXRlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHRhcmdldCBmb3IgYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4cHIxLT5raW5kICE9IE5hbWVfa2luZCkgeworICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgfQorICAgICAgICBjaCA9IENISUxEKGFubiwgMSk7CisgICAgICAgIGV4cHIyID0gYXN0X2Zvcl9leHByKGMsIGNoKTsKKyAgICAgICAgaWYgKCFleHByMikgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5DSChhbm4pID09IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBBbm5Bc3NpZ24oZXhwcjEsIGV4cHIyLCBOVUxMLCBzaW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoID0gQ0hJTEQoYW5uLCAzKTsKKyAgICAgICAgICAgIGV4cHIzID0gYXN0X2Zvcl9leHByKGMsIGNoKTsKKyAgICAgICAgICAgIGlmICghZXhwcjMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBBbm5Bc3NpZ24oZXhwcjEsIGV4cHIyLCBleHByMywgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGludCBpOwogICAgICAgICBhc2RsX3NlcSAqdGFyZ2V0czsKQEAgLTI5OTQsOSArMzE1Myw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgZmxvd19zdG10OiAlZCIsIFRZUEUoY2gpKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVuaGFuZGxlZCBmbG93IHN0YXRlbWVudCIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgYWxpYXNfdHkKQEAgLTMyMTAsMTQgKzMzNjYsMTQgQEAKICAgICAgICAgICAgIGFsaWFzX3R5IGltcG9ydF9hbGlhcyA9IGFsaWFzX2Zvcl9pbXBvcnRfbmFtZShjLCBuLCAxKTsKICAgICAgICAgICAgIGlmICghaW1wb3J0X2FsaWFzKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOworICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIDAsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpICs9IDIpIHsKICAgICAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgQ0hJTEQobiwgaSksIDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1wb3J0X2FsaWFzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIGkgLyAyLCBpbXBvcnRfYWxpYXMpOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobW9kICE9IE5VTEwpCkBAIC0zODgzLDcgKzQwMzksNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKK3BhcnNlbnVtYmVyX3JhdyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQogewogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBsb25nIHg7CkBAIC0zOTI2LDYgKzQwODIsMzEgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK3BhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCit7CisgICAgY2hhciAqZHVwLCAqZW5kOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgYXNzZXJ0KHMgIT0gTlVMTCk7CisKKyAgICBpZiAoc3RyY2hyKHMsICdfJykgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gcGFyc2VudW1iZXJfcmF3KGMsIHMpOworICAgIH0KKyAgICAvKiBDcmVhdGUgYSBkdXBsaWNhdGUgd2l0aG91dCB1bmRlcnNjb3Jlcy4gKi8KKyAgICBkdXAgPSBQeU1lbV9NYWxsb2Moc3RybGVuKHMpICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIGZvciAoOyAqczsgcysrKSB7CisgICAgICAgIGlmICgqcyAhPSAnXycpIHsKKyAgICAgICAgICAgICplbmQrKyA9ICpzOworICAgICAgICB9CisgICAgfQorICAgICplbmQgPSAnXDAnOworICAgIHJlcyA9IHBhcnNlbnVtYmVyX3JhdyhjLCBkdXApOworICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKICAgICBjb25zdCBjaGFyICpzLCAqdDsKQEAgLTM5MzYsODUgKzQxMTcsOTI0IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKIH0KIAorc3RhdGljIGludAord2Fybl9pbnZhbGlkX2VzY2FwZV9zZXF1ZW5jZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZpcnN0X2ludmFsaWRfZXNjYXBlX2NoYXIpCit7CisgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcXCVjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfaW52YWxpZF9lc2NhcGVfY2hhcik7CisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19maWxlbmFtZSwgTElORU5PKG4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKSA8IDAgJiYKKyAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcpKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqczsKKworICAgICAgICAvKiBSZXBsYWNlIHRoZSBEZXByZWNhdGlvbldhcm5pbmcgZXhjZXB0aW9uIHdpdGggYSBTeW50YXhFcnJvcgorICAgICAgICAgICB0byBnZXQgYSBtb3JlIGFjY3VyYXRlIGVycm9yIHJlcG9ydCAqLworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4KG1zZyk7CisgICAgICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCBzKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobXNnKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYobXNnKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKLWRlY29kZV91bmljb2RlKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIGludCByYXdtb2RlLCBjb25zdCBjaGFyICplbmNvZGluZykKK2RlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCiB7CiAgICAgUHlPYmplY3QgKnYsICp1OwogICAgIGNoYXIgKmJ1ZjsKICAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIHUgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChsZW4gPiBQWV9TSVpFX01BWCAvIDYpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1Ci0gICAgICAgICAgICJcw6QiICgzIGJ5dGVzKSBtYXkgYmVjb21lICJcdTAwNWNcVTAwMDAwMEU0IiAoMTYgYnl0ZXMpLCBvciB+MTo2ICovCi0gICAgICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7Ci0gICAgICAgIGVuZCA9IHMgKyBsZW47Ci0gICAgICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnMgPT0gJ1xcJykgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwotICAgICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBpbnQga2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKLSAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgIGFzc2VydChwIC0gYnVmIDw9IFB5X1NJWkUodSkpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAobGVuID4gU0laRV9NQVggLyA2KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiAiw6QiICgyIGJ5dGVzKSBtYXkgYmVjb21lICJcVTAwMDAwMEU0IiAoMTAgYnl0ZXMpLCBvciAxOjUKKyAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLworICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7CisgICAgZW5kID0gcyArIGxlbjsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBpZiAoKnMgPT0gJ1xcJykgeworICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOworICAgICAgICAgICAgICAgIHAgKz0gNTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBsZW4gPSBwIC0gYnVmOwotICAgICAgICBzID0gYnVmOworICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnc7CisgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7CisgICAgICAgICAgICAgICAgcCArPSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCisgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChyYXdtb2RlKQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOworICAgIGxlbiA9IHAgLSBidWY7CisgICAgcyA9IGJ1ZjsKKworICAgIGNvbnN0IGNoYXIgKmZpcnN0X2ludmFsaWRfZXNjYXBlOworICAgIHYgPSBfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMLCAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworCisgICAgaWYgKHYgIT0gTlVMTCAmJiBmaXJzdF9pbnZhbGlkX2VzY2FwZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICh3YXJuX2ludmFsaWRfZXNjYXBlX3NlcXVlbmNlKGMsIG4sICpmaXJzdF9pbnZhbGlkX2VzY2FwZSkgPCAwKSB7CisgICAgICAgICAgICAvKiBXZSBoYXZlIG5vdCBkZWNyZWYgdSBiZWZvcmUgYmVjYXVzZSBmaXJzdF9pbnZhbGlkX2VzY2FwZSBwb2ludHMKKyAgICAgICAgICAgICAgIGluc2lkZSB1LiAqLworICAgICAgICAgICAgUHlfWERFQ1JFRih1KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQogICAgIFB5X1hERUNSRUYodSk7CiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIHMgaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAotICogYW5kIHIgJi9vciBiIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4KLSAqIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHJldHVybnMgdGhlIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuCi0gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKK2RlY29kZV9ieXRlc193aXRoX2VzY2FwZXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKK3sKKyAgICBjb25zdCBjaGFyICpmaXJzdF9pbnZhbGlkX2VzY2FwZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdF9pbnZhbGlkX2VzY2FwZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmaXJzdF9pbnZhbGlkX2VzY2FwZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICh3YXJuX2ludmFsaWRfZXNjYXBlX3NlcXVlbmNlKGMsIG4sICpmaXJzdF9pbnZhbGlkX2VzY2FwZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIENvbXBpbGUgdGhpcyBleHByZXNzaW9uIGluIHRvIGFuIGV4cHJfdHkuICBBZGQgcGFyZW5zIGFyb3VuZCB0aGUKKyAgIGV4cHJlc3Npb24sIGluIG9yZGVyIHRvIGFsbG93IGxlYWRpbmcgc3BhY2VzIGluIHRoZSBleHByZXNzaW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfY29tcGlsZV9leHByKGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQsIGNvbnN0IGNoYXIgKmV4cHJfZW5kLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKKworeworICAgIGludCBhbGxfd2hpdGVzcGFjZSA9IDE7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgbW9kX3R5IG1vZDsKKyAgICBjaGFyICpzdHI7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KGV4cHJfZW5kID49IGV4cHJfc3RhcnQpOworICAgIGFzc2VydCgqKGV4cHJfc3RhcnQtMSkgPT0gJ3snKTsKKyAgICBhc3NlcnQoKmV4cHJfZW5kID09ICd9JyB8fCAqZXhwcl9lbmQgPT0gJyEnIHx8ICpleHByX2VuZCA9PSAnOicpOworCisgICAgLyogV2Uga25vdyB0aGVyZSBhcmUgbm8gZXNjYXBlcyBoZXJlLCBiZWNhdXNlIGJhY2tzbGFzaGVzIGFyZSBub3QgYWxsb3dlZCwKKyAgICAgICBhbmQgd2Uga25vdyBpdCdzIHV0Zi04IGVuY29kZWQgKHBlciBQRVAgMjYzKS4gIEJ1dCwgaW4gb3JkZXIgdG8gY2hlY2sKKyAgICAgICB0aGF0IGVhY2ggY2hhciBpcyBub3Qgd2hpdGVzcGFjZSwgd2UgbmVlZCB0byBkZWNvZGUgaXQgdG8gdW5pY29kZS4KKyAgICAgICBXaGljaCBpcyB1bmZvcnR1bmF0ZSwgYnV0IHN1Y2ggaXMgbGlmZS4gKi8KKworICAgIC8qIElmIHRoZSBzdWJzdHJpbmcgaXMgYWxsIHdoaXRlc3BhY2UsIGl0J3MgYW4gZXJyb3IuICBXZSBuZWVkIHRvIGNhdGNoCisgICAgICAgdGhpcyBoZXJlLCBhbmQgbm90IHdoZW4gd2UgY2FsbCBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nLCBiZWNhdXNlIHR1cm5pbmcKKyAgICAgICB0aGUgZXhwcmVzc2lvbiAnJyBpbiB0byAnKCknIHdvdWxkIGdvIGZyb20gYmVpbmcgaW52YWxpZCB0byB2YWxpZC4gKi8KKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBjb2RlIHNheXMgYW4gZW1wdHkgc3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLiAgVGhhdCdzCisgICAgICAgaW1wb3J0YW50LiAgVGhlcmUncyBhIHRlc3QgZm9yIGl0OiBmJ3t9Jy4gKi8KKyAgICBvID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXhwcl9zdGFydCwgZXhwcl9lbmQtZXhwcl9zdGFydCwgTlVMTCk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG8pOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CisgICAgICAgICAgICBhbGxfd2hpdGVzcGFjZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobyk7CisgICAgaWYgKGFsbF93aGl0ZXNwYWNlKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogUmV1c2UgbGVuIHRvIGJlIHRoZSBsZW5ndGggb2YgdGhlIHV0Zi04IGlucHV0IHN0cmluZy4gKi8KKyAgICBsZW4gPSBleHByX2VuZCAtIGV4cHJfc3RhcnQ7CisgICAgLyogQWxsb2NhdGUgMyBleHRyYSBieXRlczogb3BlbiBwYXJlbiwgY2xvc2UgcGFyZW4sIG51bGwgYnl0ZS4gKi8KKyAgICBzdHIgPSBQeU1lbV9SYXdNYWxsb2MobGVuICsgMyk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0clswXSA9ICcoJzsKKyAgICBtZW1jcHkoc3RyKzEsIGV4cHJfc3RhcnQsIGxlbik7CisgICAgc3RyW2xlbisxXSA9ICcpJzsKKyAgICBzdHJbbGVuKzJdID0gMDsKKworICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9PTkxZX0FTVDsKKyAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nKHN0ciwgIjxmc3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ldmFsX2lucHV0LCAmY2YsIGMtPmNfYXJlbmEpOworICAgIFB5TWVtX1Jhd0ZyZWUoc3RyKTsKKyAgICBpZiAoIW1vZCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG1vZC0+di5FeHByZXNzaW9uLmJvZHk7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXRlcmFsLgorCisgICBSZXR1cm4gMSBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbCwgYnV0IHdlIHdhbnQKKyAgIHRoZSBjYWxsZXIgdG8gcHJvY2VzcyB0aGUgbGl0ZXJhbCB1cCB0byB0aGlzIHBvaW50LiBVc2VkIGZvcgorICAgZG91YmxlZCBicmFjZXMuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWwoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipsaXRlcmFsLCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIEdldCBhbnkgbGl0ZXJhbCBzdHJpbmcuIEl0IGVuZHMgd2hlbiB3ZSBoaXQgYW4gdW4tZG91YmxlZCBsZWZ0CisgICAgICAgYnJhY2UgKHdoaWNoIGlzbid0IHBhcnQgb2YgYSB1bmljb2RlIG5hbWUgZXNjYXBlIHN1Y2ggYXMKKyAgICAgICAiXE57RVVMRVIgQ09OU1RBTlR9IiksIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfc3RhcnQgPSAqc3RyOworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfZW5kOworICAgIGludCBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgIGludCByZXN1bHQgPSAwOworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwpOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoID0gKipzdHI7CisgICAgICAgIGlmICghaW5fbmFtZWRfZXNjYXBlICYmIGNoID09ICd7JyAmJiAoKnN0ciktbGl0ZXJhbF9zdGFydCA+PSAyICYmCisgICAgICAgICAgICAqKCpzdHItMikgPT0gJ1xcJyAmJiAqKCpzdHItMSkgPT0gJ04nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAxOworICAgICAgICB9IGVsc2UgaWYgKGluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIGluX25hbWVkX2VzY2FwZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ3snIHx8IGNoID09ICd9JykgeworICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGRvdWJsZWQgYnJhY2VzLCBidXQgb25seSBhdCB0aGUgdG9wIGxldmVsLiBJZgorICAgICAgICAgICAgICAgd2UgY2hlY2tlZCBhdCBldmVyeSBsZXZlbCwgdGhlbiBmJ3swOnszfX0nIHdvdWxkIGZhaWwKKyAgICAgICAgICAgICAgIHdpdGggdGhlIHR3byBjbG9zaW5nIGJyYWNlcy4gKi8KKyAgICAgICAgICAgIGlmIChyZWN1cnNlX2x2bCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIrMSA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgZ29pbmcgdG8gdGVsbCB0aGUgY2FsbGVyIHRoYXQgdGhlIGxpdGVyYWwgZW5kcworICAgICAgICAgICAgICAgICAgICAgICBoZXJlLCBidXQgdGhhdCB0aGV5IHNob3VsZCBjb250aW51ZSBzY2FubmluZy4gQnV0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyIHRoZSBzZWNvbmQgYnJhY2Ugd2hlbiB3ZSByZXN1bWUgc2Nhbm5pbmcuICovCisgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kID0gKnN0cisxOworICAgICAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBXaGVyZSBhIHNpbmdsZSAneycgaXMgdGhlIHN0YXJ0IG9mIGEgbmV3IGV4cHJlc3Npb24sIGEKKyAgICAgICAgICAgICAgICAgICBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnfScpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UncmUgZWl0aGVyIGF0IGEgJ3snLCB3aGljaCBtZWFucyB3ZSdyZSBzdGFydGluZyBhbm90aGVyCisgICAgICAgICAgICAgICBleHByZXNzaW9uOyBvciBhICd9Jywgd2hpY2ggbWVhbnMgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGlzCisgICAgICAgICAgICAgICBmLXN0cmluZyAoZm9yIGEgbmVzdGVkIGZvcm1hdF9zcGVjKS4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpdGVyYWxfZW5kID0gKnN0cjsKKyAgICBhc3NlcnQoKnN0ciA8PSBlbmQpOworICAgIGFzc2VydCgqc3RyID09IGVuZCB8fCAqKnN0ciA9PSAneycgfHwgKipzdHIgPT0gJ30nKTsKK2RvbmU6CisgICAgaWYgKGxpdGVyYWxfc3RhcnQgIT0gbGl0ZXJhbF9lbmQpIHsKKyAgICAgICAgaWYgKHJhdykKKyAgICAgICAgICAgICpsaXRlcmFsID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kLWxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpsaXRlcmFsID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIG4sIGxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0KTsKKyAgICAgICAgaWYgKCEqbGl0ZXJhbCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBiZWNhdXNlIHBhcnNpbmcgaXMgcmVjdXJzaXZlLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pOworCisvKiBQYXJzZSB0aGUgZi1zdHJpbmcgYXQgKnN0ciwgZW5kaW5nIGF0IGVuZC4gIFdlIGtub3cgKnN0ciBzdGFydHMgYW4KKyAgIGV4cHJlc3Npb24gKHNvIGl0IG11c3QgYmUgYSAneycpLiBSZXR1cm5zIHRoZSBGb3JtYXR0ZWRWYWx1ZSBub2RlLAorICAgd2hpY2ggaW5jbHVkZXMgdGhlIGV4cHJlc3Npb24sIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBhbmQKKyAgIGZvcm1hdF9zcGVjIGV4cHJlc3Npb24uCisKKyAgIE5vdGUgdGhhdCBJIGRvbid0IGRvIGEgcGVyZmVjdCBqb2IgaGVyZTogSSBkb24ndCBtYWtlIHN1cmUgdGhhdCBhCisgICBjbG9zaW5nIGJyYWNlIGRvZXNuJ3QgbWF0Y2ggYW4gb3BlbmluZyBwYXJlbiwgZm9yIGV4YW1wbGUuIEl0CisgICBkb2Vzbid0IG5lZWQgdG8gZXJyb3Igb24gYWxsIGludmFsaWQgZXhwcmVzc2lvbnMsIGp1c3QgY29ycmVjdGx5CisgICBmaW5kIHRoZSBlbmQgb2YgYWxsIHZhbGlkIG9uZXMuIEFueSBlcnJvcnMgaW5zaWRlIHRoZSBleHByZXNzaW9uCisgICB3aWxsIGJlIGNhdWdodCB3aGVuIHdlIHBhcnNlIGl0IGxhdGVyLiAqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIFJldHVybiAtMSBvbiBlcnJvciwgZWxzZSAwLiAqLworCisgICAgY29uc3QgY2hhciAqZXhwcl9zdGFydDsKKyAgICBjb25zdCBjaGFyICpleHByX2VuZDsKKyAgICBleHByX3R5IHNpbXBsZV9leHByZXNzaW9uOworICAgIGV4cHJfdHkgZm9ybWF0X3NwZWMgPSBOVUxMOyAvKiBPcHRpb25hbCBmb3JtYXQgc3BlY2lmaWVyLiAqLworICAgIGludCBjb252ZXJzaW9uID0gLTE7IC8qIFRoZSBjb252ZXJzaW9uIGNoYXIuIC0xIGlmIG5vdCBzcGVjaWZpZWQuICovCisKKyAgICAvKiAwIGlmIHdlJ3JlIG5vdCBpbiBhIHN0cmluZywgZWxzZSB0aGUgcXVvdGUgY2hhciB3ZSdyZSB0cnlpbmcgdG8KKyAgICAgICBtYXRjaCAoc2luZ2xlIG9yIGRvdWJsZSBxdW90ZSkuICovCisgICAgY2hhciBxdW90ZV9jaGFyID0gMDsKKworICAgIC8qIElmIHdlJ3JlIGluc2lkZSBhIHN0cmluZywgMT1ub3JtYWwsIDM9dHJpcGxlLXF1b3RlZC4gKi8KKyAgICBpbnQgc3RyaW5nX3R5cGUgPSAwOworCisgICAgLyogS2VlcCB0cmFjayBvZiBuZXN0aW5nIGxldmVsIGZvciBicmFjZXMvcGFyZW5zL2JyYWNrZXRzIGluCisgICAgICAgZXhwcmVzc2lvbnMuICovCisgICAgUHlfc3NpemVfdCBuZXN0ZWRfZGVwdGggPSAwOworCisgICAgLyogQ2FuIG9ubHkgbmVzdCBvbmUgbGV2ZWwgZGVlcC4gKi8KKyAgICBpZiAocmVjdXJzZV9sdmwgPj0gMikgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogVGhlIGZpcnN0IGNoYXIgbXVzdCBiZSBhIGxlZnQgYnJhY2UsIG9yIHdlIHdvdWxkbid0IGhhdmUgZ290dGVuCisgICAgICAgaGVyZS4gU2tpcCBvdmVyIGl0LiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworICAgICpzdHIgKz0gMTsKKworICAgIGV4cHJfc3RhcnQgPSAqc3RyOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoOworCisgICAgICAgIC8qIExvb3AgaW52YXJpYW50cy4gKi8KKyAgICAgICAgYXNzZXJ0KG5lc3RlZF9kZXB0aCA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KCpzdHIgPj0gZXhwcl9zdGFydCAmJiAqc3RyIDwgZW5kKTsKKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpCisgICAgICAgICAgICBhc3NlcnQoc3RyaW5nX3R5cGUgPT0gMSB8fCBzdHJpbmdfdHlwZSA9PSAzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDApOworCisgICAgICAgIGNoID0gKipzdHI7CisgICAgICAgIC8qIE5vd2hlcmUgaW5zaWRlIGFuIGV4cHJlc3Npb24gaXMgYSBiYWNrc2xhc2ggYWxsb3dlZC4gKi8KKyAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIEVycm9yOiBjYW4ndCBpbmNsdWRlIGEgYmFja3NsYXNoIGNoYXJhY3RlciwgaW5zaWRlCisgICAgICAgICAgICAgICBwYXJlbnMgb3Igc3RyaW5ncyBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhIHN0cmluZy4gU2VlIGlmIHdlJ3JlIGF0IHRoZSBlbmQuICovCisgICAgICAgICAgICAvKiBUaGlzIGNvZGUgbmVlZHMgdG8gaW1wbGVtZW50IHRoZSBzYW1lIG5vbi1lcnJvciBsb2dpYworICAgICAgICAgICAgICAgYXMgdG9rX2dldCBmcm9tIHRva2VuaXplci5jLCBhdCB0aGUgbGV0dGVyX3F1b3RlCisgICAgICAgICAgICAgICBsYWJlbC4gVG8gYWN0dWFsbHkgc2hhcmUgdGhhdCBjb2RlIHdvdWxkIGJlIGEKKyAgICAgICAgICAgICAgIG5pZ2h0bWFyZS4gQnV0LCBpdCdzIHVubGlrZWx5IHRvIGNoYW5nZSBhbmQgaXMgc21hbGwsCisgICAgICAgICAgICAgICBzbyBkdXBsaWNhdGUgaXQgaGVyZS4gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIGNhdGNoIGFsbAorICAgICAgICAgICAgICAgb2YgdGhlIGVycm9ycywgc2luY2UgdGhleSdsbCBiZSBjYXVnaHQgd2hlbiBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgZXhwcmVzc2lvbi4gV2UganVzdCBuZWVkIHRvIG1hdGNoIHRoZSBub24tZXJyb3IKKyAgICAgICAgICAgICAgIGNhc2VzLiBUaHVzIHdlIGNhbiBpZ25vcmUgXG4gaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmdzLAorICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUuIE9yIG5vbi10ZXJtaW5hdGVkIHN0cmluZ3MuICovCisgICAgICAgICAgICBpZiAoY2ggPT0gcXVvdGVfY2hhcikgeworICAgICAgICAgICAgICAgIC8qIERvZXMgdGhpcyBtYXRjaCB0aGUgc3RyaW5nX3R5cGUgKHNpbmdsZSBvciB0cmlwbGUKKyAgICAgICAgICAgICAgICAgICBxdW90ZWQpPyAqLworICAgICAgICAgICAgICAgIGlmIChzdHJpbmdfdHlwZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiBhIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSBub3JtYWwgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpIHsKKyAgICAgICAgICAgIC8qIElzIHRoaXMgYSB0cmlwbGUgcXVvdGVkIHN0cmluZz8gKi8KKyAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMzsKKyAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFN0YXJ0IG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTdGFydCBsb29raW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisgICAgICAgICAgICBxdW90ZV9jaGFyID0gY2g7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1snIHx8IGNoID09ICd7JyB8fCBjaCA9PSAnKCcpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aCsrOworICAgICAgICB9IGVsc2UgaWYgKG5lc3RlZF9kZXB0aCAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgKGNoID09ICddJyB8fCBjaCA9PSAnfScgfHwgY2ggPT0gJyknKSkgeworICAgICAgICAgICAgbmVzdGVkX2RlcHRoLS07CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyMnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGNvbW1lbnQgY2hhcmFjdGVyLCBpbnNpZGUgcGFyZW5zCisgICAgICAgICAgICAgICBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggPT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnIScgfHwgY2ggPT0gJzonIHx8IGNoID09ICd9JykpIHsKKyAgICAgICAgICAgIC8qIEZpcnN0LCB0ZXN0IGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mICIhPSIuIFNpbmNlICc9JyBpcworICAgICAgICAgICAgICAgbm90IGFuIGFsbG93ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIsIG5vdGhpbmcgaXMgbG9zdCBpbgorICAgICAgICAgICAgICAgdGhpcyB0ZXN0LiAqLworICAgICAgICAgICAgaWYgKGNoID09ICchJyAmJiAqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09ICc9JykgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBjb252ZXJzaW9uIGNoYXJhY3RlciwganVzdCBjb250aW51ZS4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIE5vcm1hbCB3YXkgb3V0IG9mIHRoaXMgbG9vcC4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCBjb25zdW1lIHRoaXMgY2hhciBhbmQgbG9vcCBhcm91bmQuICovCisgICAgICAgIH0KKyAgICB9CisgICAgZXhwcl9lbmQgPSAqc3RyOworICAgIC8qIElmIHdlIGxlYXZlIHRoaXMgbG9vcCBpbiBhIHN0cmluZyBvciB3aXRoIG1pc21hdGNoZWQgcGFyZW5zLCB3ZQorICAgICAgIGRvbid0IGNhcmUuIFdlJ2xsIGdldCBhIHN5bnRheCBlcnJvciB3aGVuIGNvbXBpbGluZyB0aGUKKyAgICAgICBleHByZXNzaW9uLiBCdXQsIHdlIGNhbiBwcm9kdWNlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UsIHNvCisgICAgICAgbGV0J3MganVzdCBkbyB0aGF0LiovCisgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuZXN0ZWRfZGVwdGgpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogbWlzbWF0Y2hlZCAnKCcsICd7Jywgb3IgJ1snIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogQ29tcGlsZSB0aGUgZXhwcmVzc2lvbiBhcyBzb29uIGFzIHBvc3NpYmxlLCBzbyB3ZSBzaG93IGVycm9ycworICAgICAgIHJlbGF0ZWQgdG8gdGhlIGV4cHJlc3Npb24gYmVmb3JlIGVycm9ycyByZWxhdGVkIHRvIHRoZQorICAgICAgIGNvbnZlcnNpb24gb3IgZm9ybWF0X3NwZWMuICovCisgICAgc2ltcGxlX2V4cHJlc3Npb24gPSBmc3RyaW5nX2NvbXBpbGVfZXhwcihleHByX3N0YXJ0LCBleHByX2VuZCwgYywgbik7CisgICAgaWYgKCFzaW1wbGVfZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQ2hlY2sgZm9yIGEgY29udmVyc2lvbiBjaGFyLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqKnN0ciA9PSAnIScpIHsKKyAgICAgICAgKnN0ciArPSAxOworICAgICAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgICAgICBjb252ZXJzaW9uID0gKipzdHI7CisgICAgICAgICpzdHIgKz0gMTsKKworICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbi4gKi8KKyAgICAgICAgaWYgKCEoY29udmVyc2lvbiA9PSAncycgfHwgY29udmVyc2lvbiA9PSAncicKKyAgICAgICAgICAgICAgfHwgY29udmVyc2lvbiA9PSAnYScpKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICdzJywgJ3InLCBvciAnYSciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGZvciB0aGUgZm9ybWF0IHNwZWMsIGlmIHByZXNlbnQuICovCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKyAgICBpZiAoKipzdHIgPT0gJzonKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgLyogUGFyc2UgdGhlIGZvcm1hdCBzcGVjLiAqLworICAgICAgICBmb3JtYXRfc3BlYyA9IGZzdHJpbmdfcGFyc2Uoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwrMSwgYywgbik7CisgICAgICAgIGlmICghZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyICE9ICd9JykKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAvKiBXZSdyZSBhdCBhIHJpZ2h0IGJyYWNlLiBDb25zdW1lIGl0LiAqLworICAgIGFzc2VydCgqc3RyIDwgZW5kKTsKKyAgICBhc3NlcnQoKipzdHIgPT0gJ30nKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICAvKiBBbmQgbm93IGNyZWF0ZSB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhpcworICAgICAgIGVudGlyZSBleHByZXNzaW9uIHdpdGggdGhlIGNvbnZlcnNpb24gYW5kIGZvcm1hdCBzcGVjLiAqLworICAgICpleHByZXNzaW9uID0gRm9ybWF0dGVkVmFsdWUoc2ltcGxlX2V4cHJlc3Npb24sIGNvbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBpZiAoISpleHByZXNzaW9uKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKKwordW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOgorICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgaGF2ZSBhIGxpdGVyYWwgKHBvc3NpYmxlIHplcm8gbGVuZ3RoKSBhbmQgYW4KKyAgIGV4cHJlc3Npb24gKHplcm8gbGVuZ3RoIGlmIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZSBhIGxpdGVyYWwsIGJ1dCBubyBleHByZXNzaW9uLCBhbmQgd2Ugd2FudCB0aGUKKyAgIGNhbGxlciB0byBjYWxsIHVzIGFnYWluLiBUaGlzIGlzIHVzZWQgdG8gZGVhbCB3aXRoIGRvdWJsZWQKKyAgIGJyYWNlcy4KKworICAgV2hlbiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHN0cmluZyAnYXt7YnswfWMnLCB0aGlzIGZ1bmN0aW9uCisgICB3aWxsIHJldHVybjoKKworICAgMS4gdGhlIGxpdGVyYWwgJ2F7JyB3aXRoIG5vIGV4cHJlc3Npb24sIGFuZCBhIHJldHVybiB2YWx1ZQorICAgICAgb2YgMS4gRGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gZXhwcmVzc2lvbiwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgMSBtZWFucyB3ZSdyZSBub3QgZmluaXNoZWQgeWV0LgorCisgICAyLiB0aGUgbGl0ZXJhbCAnYicgYW5kIHRoZSBleHByZXNzaW9uICcwJywgd2l0aCBhIHJldHVybiB2YWx1ZSBvZgorICAgICAgMC4gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIGFuIGV4cHJlc3Npb24gbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkLgorCisgICAzLiBsaXRlcmFsICdjJyB3aXRoIG5vIGV4cHJlc3Npb24gYW5kIGEgcmV0dXJuIHZhbHVlIG9mIDAuIFRoZQorICAgICAgY29tYmluYXRpb24gb2YgdGhlIHJldHVybiB2YWx1ZSBvZiAwIHdpdGggbm8gZXhwcmVzc2lvbiBtZWFucworICAgICAgd2UncmUgZmluaXNoZWQuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlY3Vyc2VfbHZsLCBQeU9iamVjdCAqKmxpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwgJiYgKmV4cHJlc3Npb24gPT0gTlVMTCk7CisKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiAqLworICAgIHJlc3VsdCA9IGZzdHJpbmdfZmluZF9saXRlcmFsKHN0ciwgZW5kLCByYXcsIGxpdGVyYWwsIHJlY3Vyc2VfbHZsLCBjLCBuKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChyZXN1bHQgPT0gMCB8fCByZXN1bHQgPT0gMSk7CisKKyAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBidXQgZG9uJ3QgbG9vayBhdCB0aGUgZXhwcmVzc2lvbi4gKi8KKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoKnN0ciA+PSBlbmQgfHwgKipzdHIgPT0gJ30nKQorICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIGVuZCBvZiBhIG5lc3RlZAorICAgICAgICAgICBmLXN0cmluZzogbm8gZXhwcmVzc2lvbi4gVGhlIHRvcC1sZXZlbCBlcnJvciBjYXNlIHdoZXJlIHdlCisgICAgICAgICAgIGV4cGVjdCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYnV0IHdlJ3JlIGF0IGEgJ30nIGlzCisgICAgICAgICAgIGhhbmRsZWQgbGF0ZXIuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogV2UgbXVzdCBub3cgYmUgdGhlIHN0YXJ0IG9mIGFuIGV4cHJlc3Npb24sIG9uIGEgJ3snLiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworCisgICAgaWYgKGZzdHJpbmdfZmluZF9leHByKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLCBleHByZXNzaW9uLCBjLCBuKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKmxpdGVyYWwpOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBFWFBSTElTVF9OX0NBQ0hFRCAgNjQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIEluY3JlbWVudGFsbHkgYnVpbGQgYW4gYXJyYXkgb2YgZXhwcl90eSwgc28gYmUgdXNlZCBpbiBhbgorICAgICAgIGFzZGxfc2VxLiBDYWNoZSBzb21lIHNtYWxsIGJ1dCByZWFzb25hYmx5IHNpemVkIG51bWJlciBvZgorICAgICAgIGV4cHJfdHkncywgYW5kIHRoZW4gYWZ0ZXIgdGhhdCBzdGFydCBkeW5hbWljYWxseSBhbGxvY2F0aW5nLAorICAgICAgIGRvdWJsaW5nIHRoZSBudW1iZXIgYWxsb2NhdGVkIGVhY2ggdGltZS4gTm90ZSB0aGF0IHRoZSBmLXN0cmluZworICAgICAgIGYnezB9YXsxfScgY29udGFpbnMgMyBleHByX3R5J3M6IDIgRm9ybWF0dGVkVmFsdWUncywgYW5kIG9uZQorICAgICAgIFN0ciBmb3IgdGhlIGxpdGVyYWwgJ2EnLiBTbyB5b3UgYWRkIGV4cHJfdHkncyBhYm91dCB0d2ljZSBhcworICAgICAgIGZhc3QgYXMgeW91IGFkZCBleHJlc3Npb25zIGluIGFuIGYtc3RyaW5nLiAqLworCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBOdW1iZXIgd2UndmUgYWxsb2NhdGVkLiAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgICAgICAgLyogTnVtYmVyIHdlJ3ZlIHVzZWQuICovCisgICAgZXhwcl90eSAgICAqcDsgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBtZW1vcnkgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nLiBXaWxsIHBvaW50IHRvICdkYXRhJyB1bnRpbCB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZy4gKi8KKyAgICBleHByX3R5ICAgIGRhdGFbRVhQUkxJU1RfTl9DQUNIRURdOworfSBFeHByTGlzdDsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpCisjZWxzZQorc3RhdGljIHZvaWQKK0V4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoRXhwckxpc3QgKmwpCit7CisgICAgLyogQ2hlY2sgb3VyIGludmFyaWFudHMuIE1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyAibGl2ZSIsIGFuZAorICAgICAgIGhhc24ndCBiZWVuIGRlYWxsb2NhdGVkLiAqLworICAgIGFzc2VydChsLT5zaXplID49IDApOworICAgIGFzc2VydChsLT5wICE9IE5VTEwpOworICAgIGlmIChsLT5zaXplIDw9IEVYUFJMSVNUX05fQ0FDSEVEKQorICAgICAgICBhc3NlcnQobC0+ZGF0YSA9PSBsLT5wKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfSW5pdChFeHByTGlzdCAqbCkKK3sKKyAgICBsLT5hbGxvY2F0ZWQgPSBFWFBSTElTVF9OX0NBQ0hFRDsKKyAgICBsLT5zaXplID0gMDsKKworICAgIC8qIFVudGlsIHdlIHN0YXJ0IGFsbG9jYXRpbmcgZHluYW1pY2FsbHksIHAgcG9pbnRzIHRvIGRhdGEuICovCisgICAgbC0+cCA9IGwtPmRhdGE7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworfQorCitzdGF0aWMgaW50CitFeHByTGlzdF9BcHBlbmQoRXhwckxpc3QgKmwsIGV4cHJfdHkgZXhwKQoreworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisgICAgaWYgKGwtPnNpemUgPj0gbC0+YWxsb2NhdGVkKSB7CisgICAgICAgIC8qIFdlIG5lZWQgdG8gYWxsb2MgKG9yIHJlYWxsb2MpIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBsLT5hbGxvY2F0ZWQgKiAyOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSd2ZSBldmVyIGFsbG9jYXRlZCBhbnl0aGluZyBkeW5hbWljYWxseS4gKi8KKyAgICAgICAgaWYgKGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgLyogV2UncmUgc3RpbGwgdXNpbmcgdGhlIGNhY2hlZCBkYXRhLiBTd2l0Y2ggdG8KKyAgICAgICAgICAgICAgIGFsbG9jLWluZy4gKi8KKyAgICAgICAgICAgIGwtPnAgPSBQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCFsLT5wKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIENvcHkgdGhlIGNhY2hlZCBkYXRhIGludG8gdGhlIG5ldyBidWZmZXIuICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGwtPnBbaV0gPSBsLT5kYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCByZWFsbG9jLiAqLworICAgICAgICAgICAgZXhwcl90eSAqdG1wID0gUHlNZW1fUmF3UmVhbGxvYyhsLT5wLCBzaXplb2YoZXhwcl90eSkgKiBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAoIXRtcCkgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgICAgICAgICAgICAgbC0+cCA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbC0+cCA9IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIGwtPmFsbG9jYXRlZCA9IG5ld19zaXplOworICAgICAgICBhc3NlcnQobC0+YWxsb2NhdGVkID09IDIgKiBsLT5zaXplKTsKKyAgICB9CisKKyAgICBsLT5wW2wtPnNpemUrK10gPSBleHA7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfRGVhbGxvYyhFeHByTGlzdCAqbCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworCisgICAgLyogSWYgdGhlcmUncyBiZWVuIGFuIGVycm9yLCBvciB3ZSd2ZSBuZXZlciBkeW5hbWljYWxseSBhbGxvY2F0ZWQsCisgICAgICAgZG8gbm90aGluZy4gKi8KKyAgICBpZiAoIWwtPnAgfHwgbC0+cCA9PSBsLT5kYXRhKSB7CisgICAgICAgIC8qIERvIG5vdGhpbmcuICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQuIEZyZWUgdGhlIG1lbW9yeS4gKi8KKyAgICAgICAgUHlNZW1fUmF3RnJlZShsLT5wKTsKKyAgICB9CisgICAgbC0+cCA9IE5VTEw7CisgICAgbC0+c2l6ZSA9IC0xOworfQorCitzdGF0aWMgYXNkbF9zZXEgKgorRXhwckxpc3RfRmluaXNoKEV4cHJMaXN0ICpsLCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBhc2RsX3NlcSBhbmQgY29weSB0aGUgZXhwcmVzc2lvbnMgaW4gdG8gaXQuICovCisgICAgc2VxID0gX1B5X2FzZGxfc2VxX25ldyhsLT5zaXplLCBhcmVuYSk7CisgICAgaWYgKHNlcSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsLT5zaXplOyBpKyspCisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc2VxLCBpLCBsLT5wW2ldKTsKKyAgICB9CisgICAgRXhwckxpc3RfRGVhbGxvYyhsKTsKKyAgICByZXR1cm4gc2VxOworfQorCisvKiBUaGUgRnN0cmluZ1BhcnNlciBpcyBkZXNpZ25lZCB0byBhZGQgYSBtaXggb2Ygc3RyaW5ncyBhbmQKKyAgIGYtc3RyaW5ncywgYW5kIGNvbmNhdCB0aGVtIHRvZ2V0aGVyIGFzIG5lZWRlZC4gVWx0aW1hdGVseSwgaXQKKyAgIGdlbmVyYXRlcyBhbiBleHByX3R5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpsYXN0X3N0cjsKKyAgICBFeHByTGlzdCBleHByX2xpc3Q7CisgICAgaW50IGZtb2RlOworfSBGc3RyaW5nUGFyc2VyOworCisjaWZkZWYgTkRFQlVHCisjZGVmaW5lIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSkKKyNlbHNlCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIGlmIChzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGF0ZS0+bGFzdF9zdHIpKTsKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKCZzdGF0ZS0+ZXhwcl9saXN0KTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9Jbml0KEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIHN0YXRlLT5sYXN0X3N0ciA9IE5VTEw7CisgICAgc3RhdGUtPmZtb2RlID0gMDsKKyAgICBFeHByTGlzdF9Jbml0KCZzdGF0ZS0+ZXhwcl9saXN0KTsKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9EZWFsbG9jKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICBQeV9YREVDUkVGKHN0YXRlLT5sYXN0X3N0cik7CisgICAgRXhwckxpc3RfRGVhbGxvYygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisKKy8qIE1ha2UgYSBTdHIgbm9kZSwgYnV0IGRlY3JlZiB0aGUgUHlVbmljb2RlIG9iamVjdCBiZWluZyBhZGRlZC4gKi8KK3N0YXRpYyBleHByX3R5CittYWtlX3N0cl9ub2RlX2FuZF9kZWwoUHlPYmplY3QgKipzdHIsIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUqIG4pCit7CisgICAgUHlPYmplY3QgKnMgPSAqc3RyOworICAgICpzdHIgPSBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgcykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBTdHIocywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCisvKiBBZGQgYSBub24tZi1zdHJpbmcgKHRoYXQgaXMsIGEgcmVndWxhciBsaXRlcmFsIHN0cmluZykuIHN0ciBpcworICAgZGVjcmVmJ2QuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChGc3RyaW5nUGFyc2VyICpzdGF0ZSwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgLyogV2UgZGlkbid0IGhhdmUgYSBzdHJpbmcgYmVmb3JlLCBzbyBqdXN0IHJlbWVtYmVyIHRoaXMgb25lLiAqLworICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBzdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhpcyB3aXRoIHRoZSBwcmV2aW91cyBzdHJpbmcuICovCisgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnN0YXRlLT5sYXN0X3N0ciwgc3RyKTsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFBhcnNlIGFuIGYtc3RyaW5nLiBUaGUgZi1zdHJpbmcgaXMgaW4gKnN0ciB0byBlbmQsIHdpdGggbm8KKyAgICdmJyBvciBxdW90ZXMuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoRnN0cmluZ1BhcnNlciAqc3RhdGUsIGNvbnN0IGNoYXIgKipzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHN0YXRlLT5mbW9kZSA9IDE7CisKKyAgICAvKiBQYXJzZSB0aGUgZi1zdHJpbmcuICovCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmxpdGVyYWwgPSBOVUxMOworICAgICAgICBleHByX3R5IGV4cHJlc3Npb24gPSBOVUxMOworCisgICAgICAgIC8qIElmIHRoZXJlJ3MgYSB6ZXJvIGxlbmd0aCBsaXRlcmFsIGluIGZyb250IG9mIHRoZQorICAgICAgICAgICBleHByZXNzaW9uLCBsaXRlcmFsIHdpbGwgYmUgTlVMTC4gSWYgd2UncmUgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICB0aGUgZi1zdHJpbmcsIGV4cHJlc3Npb24gd2lsbCBiZSBOVUxMICh1bmxlc3MgcmVzdWx0ID09IDEsCisgICAgICAgICAgIHNlZSBiZWxvdykuICovCisgICAgICAgIGludCByZXN1bHQgPSBmc3RyaW5nX2ZpbmRfbGl0ZXJhbF9hbmRfZXhwcihzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaXRlcmFsLCAmZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMsIG4pOworICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAvKiBBZGQgdGhlIGxpdGVyYWwsIGlmIGFueS4gKi8KKyAgICAgICAgaWYgKCFsaXRlcmFsKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBKdXN0IGxlYXZlIGxhc3Rfc3RyIGFsb25lIChhbmQgcG9zc2libHkKKyAgICAgICAgICAgICAgIE5VTEwpLiAqLworICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIHN0YXRlLT5sYXN0X3N0ciA9IGxpdGVyYWw7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChsaXRlcmFsKSAhPSAwKTsKKyAgICAgICAgICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChzdGF0ZSwgbGl0ZXJhbCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGxpdGVyYWwgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydCghc3RhdGUtPmxhc3Rfc3RyIHx8CisgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdGF0ZS0+bGFzdF9zdHIpICE9IDApOworCisgICAgICAgIC8qIFdlJ3ZlIGRlYWx0IHdpdGggdGhlIGxpdGVyYWwgbm93LiBJdCBjYW4ndCBiZSBsZWFrZWQgb24gZnVydGhlcgorICAgICAgICAgICBlcnJvcnMuICovCisgICAgICAgIGFzc2VydChsaXRlcmFsID09IE5VTEwpOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSBzaG91bGQganVzdCBsb29wIGFyb3VuZCB0byBnZXQgdGhlIG5leHQgbGl0ZXJhbAorICAgICAgICAgICBhbmQgZXhwcmVzc2lvbiwgd2hpbGUgaWdub3JpbmcgdGhlIGV4cHJlc3Npb24gdGhpcworICAgICAgICAgICB0aW1lLiBUaGlzIGlzIHVzZWQgZm9yIHVuLWRvdWJsaW5nIGJyYWNlcywgYXMgYW4KKyAgICAgICAgICAgb3B0aW1pemF0aW9uLiAqLworICAgICAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhpcyBmLXN0cmluZy4gKi8KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIFdlIGtub3cgd2UgaGF2ZSBhbiBleHByZXNzaW9uLiBDb252ZXJ0IGFueSBleGlzdGluZyBzdHJpbmcKKyAgICAgICAgICAgdG8gYSBTdHIgbm9kZS4gKi8KKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIC8qIERvIG5vdGhpbmcuIE5vIHByZXZpb3VzIGxpdGVyYWwuICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBDb252ZXJ0IHRoZSBleGlzdGluZyBsYXN0X3N0ciBsaXRlcmFsIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgICAgICBleHByX3R5IHN0ciA9IG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8IEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgc3RyKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgZXhwcmVzc2lvbikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIElmIHJlY3Vyc2VfbHZsIGlzIHplcm8sIHRoZW4gd2UgbXVzdCBiZSBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgIHN0cmluZy4gT3RoZXJ3aXNlLCB3ZSBtdXN0IGJlIGF0IGEgcmlnaHQgYnJhY2UuICovCisKKyAgICBpZiAocmVjdXJzZV9sdmwgPT0gMCAmJiAqc3RyIDwgZW5kLTEpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHJlY3Vyc2VfbHZsICE9IDAgJiYgKipzdHIgIT0gJ30nKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvbnZlcnQgdGhlIHBhcnRpYWwgc3RhdGUgcmVmbGVjdGVkIGluIGxhc3Rfc3RyIGFuZCBleHByX2xpc3QgdG8gYW4KKyAgIGV4cHJfdHkuIFRoZSBleHByX3R5IGNhbiBiZSBhIFN0ciwgb3IgYSBKb2luZWRTdHIuICovCitzdGF0aWMgZXhwcl90eQorRnN0cmluZ1BhcnNlcl9GaW5pc2goRnN0cmluZ1BhcnNlciAqc3RhdGUsIHN0cnVjdCBjb21waWxpbmcgKmMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlICpuKQoreworICAgIGFzZGxfc2VxICpzZXE7CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgLyogSWYgd2UncmUganVzdCBhIGNvbnN0YW50IHN0cmluZyB3aXRoIG5vIGV4cHJlc3Npb25zLCByZXR1cm4KKyAgICAgICB0aGF0LiAqLworICAgIGlmICghc3RhdGUtPmZtb2RlKSB7CisgICAgICAgIGFzc2VydCghc3RhdGUtPmV4cHJfbGlzdC5zaXplKTsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIC8qIENyZWF0ZSBhIHplcm8gbGVuZ3RoIHN0cmluZy4gKi8KKyAgICAgICAgICAgIHN0YXRlLT5sYXN0X3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgYSBTdHIgbm9kZSBvdXQgb2YgbGFzdF9zdHIsIGlmIG5lZWRlZC4gSXQgd2lsbCBiZSB0aGUKKyAgICAgICBsYXN0IG5vZGUgaW4gb3VyIGV4cHJlc3Npb24gbGlzdC4gKi8KKyAgICBpZiAoc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgIGV4cHJfdHkgc3RyID0gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgLyogVGhpcyBoYXMgYWxyZWFkeSBiZWVuIGZyZWVkLiAqLworICAgIGFzc2VydChzdGF0ZS0+bGFzdF9zdHIgPT0gTlVMTCk7CisKKyAgICBzZXEgPSBFeHByTGlzdF9GaW5pc2goJnN0YXRlLT5leHByX2xpc3QsIGMtPmNfYXJlbmEpOworICAgIGlmICghc2VxKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIEpvaW5lZFN0cihzZXEsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKworZXJyb3I6CisgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKHN0YXRlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogR2l2ZW4gYW4gZi1zdHJpbmcgKHdpdGggbm8gJ2YnIG9yIHF1b3RlcykgdGhhdCdzIGluICpzdHIgYW5kIGVuZHMKKyAgIGF0IGVuZCwgcGFyc2UgaXQgaW50byBhbiBleHByX3R5LiAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICBBZGp1c3QKKyAgIHN0ciB0byBwb2ludCBwYXN0IHRoZSBwYXJzZWQgcG9ydGlvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKyAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKSA8IDApIHsKKyAgICAgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBGc3RyaW5nUGFyc2VyX0ZpbmlzaCgmc3RhdGUsIGMsIG4pOworfQorCisvKiBuIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUKKyAgIGNoYXJhY3RlcnMsIGFuZCByLCBiLCB1LCAmL29yIGYgcHJlZml4ZXMgKGlmIGFueSksIGFuZCBlbWJlZGRlZAorICAgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4gcGFyc2VzdHIgcGFyc2VzIGl0LCBhbmQgc2V0cyAqcmVzdWx0IHRvCisgICBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgSWYgdGhlIHN0cmluZyBpcyBhbiBmLXN0cmluZywgc2V0CisgICAqZnN0ciBhbmQgKmZzdHJsZW4gdG8gdGhlIHVucGFyc2VkIHN0cmluZyBvYmplY3QuICBSZXR1cm4gMCBpZiBubworICAgZXJyb3JzIG9jY3VycmVkLgorKi8KK3N0YXRpYyBpbnQKK3BhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlLCBpbnQgKnJhd21vZGUsCisgICAgICAgICBQeU9iamVjdCAqKnJlc3VsdCwgY29uc3QgY2hhciAqKmZzdHIsIFB5X3NzaXplX3QgKmZzdHJsZW4pCiB7CiAgICAgc2l6ZV90IGxlbjsKICAgICBjb25zdCBjaGFyICpzID0gU1RSKG4pOwogICAgIGludCBxdW90ZSA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICBpbnQgcmF3bW9kZSA9IDA7Ci0gICAgaW50IG5lZWRfZW5jb2Rpbmc7CisgICAgaW50IGZtb2RlID0gMDsKKyAgICAqYnl0ZXNtb2RlID0gMDsKKyAgICAqcmF3bW9kZSA9IDA7CisgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgKmZzdHIgPSBOVUxMOwogICAgIGlmIChQeV9JU0FMUEhBKHF1b3RlKSkgewotICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgIXJhd21vZGUpIHsKKyAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICEqcmF3bW9kZSkgewogICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CiAgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CkBAIC00MDI0LDExNCArNTA0NCwxNzAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdyJyB8fCBxdW90ZSA9PSAnUicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgICAgICAgICAgKnJhd21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ2YnIHx8IHF1b3RlID09ICdGJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICBmbW9kZSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoZm1vZGUgJiYgKmJ5dGVzbW9kZSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAocXVvdGUgIT0gJ1wnJyAmJiBxdW90ZSAhPSAnXCInKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICAvKiBTa2lwIHRoZSBsZWFkaW5nIHF1b3RlIGNoYXIuICovCiAgICAgcysrOwogICAgIGxlbiA9IHN0cmxlbihzKTsKICAgICBpZiAobGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG8gcGFyc2UgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlKSB7CisgICAgICAgIC8qIExhc3QgcXVvdGUgY2hhciBtdXN0IG1hdGNoIHRoZSBmaXJzdC4gKi8KICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChsZW4gPj0gNCAmJiBzWzBdID09IHF1b3RlICYmIHNbMV0gPT0gcXVvdGUpIHsKKyAgICAgICAgLyogQSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gV2UndmUgYWxyZWFkeSBza2lwcGVkIG9uZSBxdW90ZSBhdAorICAgICAgICAgICB0aGUgc3RhcnQgYW5kIG9uZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIE5vdyBza2lwIHRoZQorICAgICAgICAgICB0d28gYXQgdGhlIHN0YXJ0LiAqLwogICAgICAgICBzICs9IDI7CiAgICAgICAgIGxlbiAtPSAyOworICAgICAgICAvKiBBbmQgY2hlY2sgdGhhdCB0aGUgbGFzdCB0d28gbWF0Y2guICovCiAgICAgICAgIGlmIChzWy0tbGVuXSAhPSBxdW90ZSB8fCBzWy0tbGVuXSAhPSBxdW90ZSkgewogICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoISpieXRlc21vZGUgJiYgIXJhd21vZGUpIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZV91bmljb2RlKGMsIHMsIGxlbiwgcmF3bW9kZSwgYy0+Y19lbmNvZGluZyk7CisKKyAgICBpZiAoZm1vZGUpIHsKKyAgICAgICAgLyogSnVzdCByZXR1cm4gdGhlIGJ5dGVzLiBUaGUgY2FsbGVyIHdpbGwgcGFyc2UgdGhlIHJlc3VsdGluZworICAgICAgICAgICBzdHJpbmcuICovCisgICAgICAgICpmc3RyID0gczsKKyAgICAgICAgKmZzdHJsZW4gPSBsZW47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIC8qIE5vdCBhbiBmLXN0cmluZy4gKi8KKyAgICAvKiBBdm9pZCBpbnZva2luZyBlc2NhcGUgZGVjb2Rpbmcgcm91dGluZXMgaWYgcG9zc2libGUuICovCisgICAgKnJhd21vZGUgPSAqcmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTDsKICAgICBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAvKiBEaXNhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyAoYnV0IG5vdCBlc2NhcGVzKSAqLworICAgICAgICAvKiBEaXNhbGxvdyBub24tQVNDSUkgY2hhcmFjdGVycy4gKi8KICAgICAgICAgY29uc3QgY2hhciAqY2g7CiAgICAgICAgIGZvciAoY2ggPSBzOyAqY2g7IGNoKyspIHsKICAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqY2gpID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibGl0ZXJhbCBjaGFyYWN0ZXJzLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoKnJhd21vZGUpCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2RlX2J5dGVzX3dpdGhfZXNjYXBlcyhjLCBuLCBzLCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIGxlbiwgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoYywgbiwgcywgbGVuKTsKICAgICB9Ci0gICAgbmVlZF9lbmNvZGluZyA9ICghKmJ5dGVzbW9kZSAmJiBjLT5jX2VuY29kaW5nICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChjLT5jX2VuY29kaW5nLCAidXRmLTgiKSAhPSAwKTsKLSAgICBpZiAocmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTCkgewotICAgICAgICBpZiAobmVlZF9lbmNvZGluZykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYsICp1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgbGVuLCBOVUxMKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwgfHwgISpieXRlc21vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHU7Ci0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBjLT5jX2VuY29kaW5nLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9IGVsc2UgaWYgKCpieXRlc21vZGUpIHsKLSAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIGxlbiwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfZW5jb2RpbmcgPyBjLT5jX2VuY29kaW5nIDogTlVMTCk7CisgICAgcmV0dXJuICpyZXN1bHQgPT0gTlVMTCA/IC0xIDogMDsKIH0KIAotLyogQnVpbGQgYSBQeXRob24gc3RyaW5nIG9iamVjdCBvdXQgb2YgYSBTVFJJTkcrIGF0b20uICBUaGlzIHRha2VzIGNhcmUgb2YKLSAqIGNvbXBpbGUtdGltZSBsaXRlcmFsIGNhdGVuYXRpb24sIGNhbGxpbmcgcGFyc2VzdHIoKSBvbiBlYWNoIHBpZWNlLCBhbmQKLSAqIHBhc3RpbmcgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzIHRvZ2V0aGVyLgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKQorLyogQWNjZXB0cyBhIFNUUklORysgYXRvbSwgYW5kIHByb2R1Y2VzIGFuIGV4cHJfdHkgbm9kZS4gUnVuIHRocm91Z2gKKyAgIGVhY2ggU1RSSU5HIGF0b20sIGFuZCBwcm9jZXNzIGl0IGFzIG5lZWRlZC4gRm9yIGJ5dGVzLCBqdXN0CisgICBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGJlIGEgQnl0ZXMgbm9kZS4gRm9yCisgICBub3JtYWwgc3RyaW5ncyBhbmQgZi1zdHJpbmdzLCBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLiBUaGUgcmVzdWx0CisgICB3aWxsIGJlIGEgU3RyIG5vZGUgaWYgdGhlcmUgd2VyZSBubyBmLXN0cmluZ3M7IGEgRm9ybWF0dGVkVmFsdWUKKyAgIG5vZGUgaWYgdGhlcmUncyBqdXN0IGFuIGYtc3RyaW5nICh3aXRoIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcKKyAgIGxpdGVyYWxzKSwgb3IgYSBKb2luZWRTdHIgbm9kZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZi1zdHJpbmdzIG9yCisgICBhbnkgbGl0ZXJhbHMgaW52b2x2ZWQuICovCitzdGF0aWMgZXhwcl90eQorcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgaW50IGJ5dGVzbW9kZSA9IDA7CisgICAgUHlPYmplY3QgKmJ5dGVzX3N0ciA9IE5VTEw7CiAgICAgaW50IGk7Ci0gICAgUkVRKENISUxEKG4sIDApLCBTVFJJTkcpOwotICAgIHYgPSBwYXJzZXN0cihjLCBDSElMRChuLCAwKSwgYnl0ZXNtb2RlKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFN0cmluZyBsaXRlcmFsIGNvbmNhdGVuYXRpb24gKi8KLSAgICAgICAgZm9yIChpID0gMTsgaSA8IE5DSChuKTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqczsKLSAgICAgICAgICAgIGludCBzdWJibSA9IDA7Ci0gICAgICAgICAgICBzID0gcGFyc2VzdHIoYywgQ0hJTEQobiwgaSksICZzdWJibSk7Ci0gICAgICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGlmICgqYnl0ZXNtb2RlICE9IHN1YmJtKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayh2KSAmJiBQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlCeXRlc19Db25jYXRBbmREZWwoJnYsIHMpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlVbmljb2RlX0NvbmNhdCh2LCBzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSB0ZW1wOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisgICAgRnN0cmluZ1BhcnNlcl9Jbml0KCZzdGF0ZSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKKyAgICAgICAgaW50IHRoaXNfYnl0ZXNtb2RlOworICAgICAgICBpbnQgdGhpc19yYXdtb2RlOworICAgICAgICBQeU9iamVjdCAqczsKKyAgICAgICAgY29uc3QgY2hhciAqZnN0cjsKKyAgICAgICAgUHlfc3NpemVfdCBmc3RybGVuID0gLTE7ICAvKiBTaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZy4gKi8KKworICAgICAgICBSRVEoQ0hJTEQobiwgaSksIFNUUklORyk7CisgICAgICAgIGlmIChwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnRoaXNfYnl0ZXNtb2RlLCAmdGhpc19yYXdtb2RlLCAmcywKKyAgICAgICAgICAgICAgICAgICAgICZmc3RyLCAmZnN0cmxlbikgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSdyZSBub3QgbWl4aW5nIGJ5dGVzIHdpdGggdW5pY29kZS4gKi8KKyAgICAgICAgaWYgKGkgIT0gMCAmJiBieXRlc21vZGUgIT0gdGhpc19ieXRlc21vZGUpIHsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKKyAgICAgICAgICAgIC8qIHMgaXMgTlVMTCBpZiB0aGUgY3VycmVudCBzdHJpbmcgcGFydCBpcyBhbiBmLXN0cmluZy4gKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYocyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGJ5dGVzbW9kZSA9IHRoaXNfYnl0ZXNtb2RlOworCisgICAgICAgIGlmIChmc3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQocyA9PSBOVUxMICYmICFieXRlc21vZGUpOworICAgICAgICAgICAgLyogVGhpcyBpcyBhbiBmLXN0cmluZy4gUGFyc2UgYW5kIGNvbmNhdGVuYXRlIGl0LiAqLworICAgICAgICAgICAgcmVzdWx0ID0gRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgJmZzdHIsIGZzdHIrZnN0cmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX3Jhd21vZGUsIDAsIGMsIG4pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEEgc3RyaW5nIG9yIGJ5dGUgc3RyaW5nLiAqLworICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworCisgICAgICAgICAgICBhc3NlcnQoYnl0ZXNtb2RlID8gUHlCeXRlc19DaGVja0V4YWN0KHMpIDoKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisKKyAgICAgICAgICAgIGlmIChieXRlc21vZGUpIHsKKyAgICAgICAgICAgICAgICAvKiBGb3IgYnl0ZXMsIGNvbmNhdCBhcyB3ZSBnby4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGp1c3QgcmVtZW1iZXIgdGhpcyB2YWx1ZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfc3RyID0gczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmYnl0ZXNfc3RyLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFieXRlc19zdHIpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHJlZ3VsYXIgc3RyaW5nLiBDb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoJnN0YXRlLCBzKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IGFuZCB3ZSdyZSBkb25lLiAqLworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBieXRlc19zdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBCeXRlcyhieXRlc19zdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CiAKLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIC8qIFdlJ3JlIG5vdCBhIGJ5dGVzIHN0cmluZywgYnl0ZXNfc3RyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gc2V0LiAqLworICAgIGFzc2VydChieXRlc19zdHIgPT0gTlVMTCk7CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihieXRlc19zdHIpOworICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCA5ZjVkYjJhLi42OWU1ZjA4IDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtMjEsMTYgKzIxLDE4IEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZmRlZiBIQVZFX01CQ1MKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorLyogbWF5IGJlIGNoYW5nZWQgYnkgaW5pdGZzZW5jb2RpbmcoKSwgYnV0IHNob3VsZCBuZXZlciBiZSBmcmVlKClkICovCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICNlbmRpZgorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlZXNjYXBlIjsKIAogX1B5X0lERU5USUZJRVIoX19idWlsdGluc19fKTsKIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKQEAgLTUyLDggKzU0LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKmNlbGw7Ci0gICAgUHlPYmplY3QgKmNscyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zOworICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMLCAqY2VsbCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuYXJnczsKICAgICBpbnQgaXNjbGFzcyA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAKQEAgLTE1NSwxNiArMTU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIGJhc2VzKTsKLSAgICAgICAgaWYgKHBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBucyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKHByZXAsIHBhcmdzLCBta3cpOwotICAgICAgICBQeV9ERUNSRUYocGFyZ3MpOworICAgICAgICBQeU9iamVjdCAqcGFyZ3NbMl0gPSB7bmFtZSwgYmFzZXN9OworICAgICAgICBucyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHJlcCwgcGFyZ3MsIDIsIG1rdyk7CiAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKICAgICB9CiAgICAgaWYgKG5zID09IE5VTEwpIHsKQEAgLTE3NywxNiArMTcxLDQwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYykpOwogICAgIGlmIChjZWxsICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1hcmdzOwotICAgICAgICBtYXJncyA9IFB5VHVwbGVfUGFjaygzLCBuYW1lLCBiYXNlcywgbnMpOwotICAgICAgICBpZiAobWFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgY2xzID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMobWV0YSwgbWFyZ3MsIG1rdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWFyZ3MpOworICAgICAgICBQeU9iamVjdCAqbWFyZ3NbM10gPSB7bmFtZSwgYmFzZXMsIG5zfTsKKyAgICAgICAgY2xzID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChtZXRhLCBtYXJncywgMywgbWt3KTsKKyAgICAgICAgaWYgKGNscyAhPSBOVUxMICYmIFB5VHlwZV9DaGVjayhjbHMpICYmIFB5Q2VsbF9DaGVjayhjZWxsKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNlbGxfY2xzID0gUHlDZWxsX0dFVChjZWxsKTsKKyAgICAgICAgICAgIGlmIChjZWxsX2NscyAhPSBjbHMpIHsKKyAgICAgICAgICAgICAgICAvKiBUT0RPOiBJbiAzLjcsIERlcHJlY2F0aW9uV2FybmluZyB3aWxsIGJlY29tZSBSdW50aW1lRXJyb3IuCisgICAgICAgICAgICAgICAgICogICAgICAgQXQgdGhhdCBwb2ludCwgY2VsbF9lcnJvciB3b24ndCBiZSBuZWVkZWQuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaW50IGNlbGxfZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKGNlbGxfY2xzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0KKyAgICAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gbm90IHNldCBkZWZpbmluZyAlLjIwMFIgYXMgJS4yMDBSLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiV2FzIF9fY2xhc3NjZWxsX18gcHJvcGFnYXRlZCB0byB0eXBlLl9fbmV3X18/IjsKKyAgICAgICAgICAgICAgICAgICAgY2VsbF9lcnJvciA9IFB5RXJyX1dhcm5Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsIG1zZywgbmFtZSwgY2xzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2cgPQorICAgICAgICAgICAgICAgICAgICAgICAgIl9fY2xhc3NfXyBzZXQgdG8gJS4yMDBSIGRlZmluaW5nICUuMjAwUiBhcyAlLjIwMFIiOworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBtc2csIGNlbGxfY2xzLCBuYW1lLCBjbHMpOworICAgICAgICAgICAgICAgICAgICBjZWxsX2Vycm9yID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNlbGxfZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNscyk7CisgICAgICAgICAgICAgICAgICAgIGNscyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmlsbCBpbiB0aGUgY2VsbCwgc2luY2UgdHlwZS5fX25ld19fIGRpZG4ndCBkbyBpdCAqLworICAgICAgICAgICAgICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIGNscyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChjbHMgIT0gTlVMTCAmJiBQeUNlbGxfQ2hlY2soY2VsbCkpCi0gICAgICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIGNscyk7Ci0gICAgICAgIFB5X0RFQ1JFRihjZWxsKTsKICAgICB9CitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGNlbGwpOwogICAgIFB5X0RFQ1JFRihucyk7CiAgICAgUHlfREVDUkVGKG1ldGEpOwogICAgIFB5X1hERUNSRUYobWt3KTsKQEAgLTMzMSw3ICszNDksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMSkgeworICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICB9CkBAIC00NjksNiArNDg3LDcgQEAKICAgICBQeU9iamVjdCAqaXQgPSBsei0+aXQ7CiAgICAgbG9uZyBvazsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgaW50IGNoZWNrdHJ1ZSA9IGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlOwogCiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwogICAgIGZvciAoOzspIHsKQEAgLTQ3NiwxMiArNDk1LDExIEBACiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAobHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGUpIHsKKyAgICAgICAgaWYgKGNoZWNrdHJ1ZSkgewogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2OCwyNiArMTE4Niw0MyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hcF9uZXh0KG1hcG9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbDsKLSAgICBQeU9iamVjdCAqYXJndHVwbGU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG51bWFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuaXRlcnMsIG5hcmdzLCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgbnVtYXJncyA9IFB5VHVwbGVfU2l6ZShsei0+aXRlcnMpOwotICAgIGFyZ3R1cGxlID0gUHlUdXBsZV9OZXcobnVtYXJncyk7Ci0gICAgaWYgKGFyZ3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpPTAgOyBpPG51bWFyZ3MgOyBpKyspIHsKLSAgICAgICAgdmFsID0gUHlJdGVyX05leHQoUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpKTsKLSAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworICAgIG5pdGVycyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBpZiAobml0ZXJzIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG5pdGVycyAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJndHVwbGUsIGksIHZhbCk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwobHotPmZ1bmMsIGFyZ3R1cGxlLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworCisgICAgbmFyZ3MgPSAwOworICAgIGZvciAoaT0wOyBpIDwgbml0ZXJzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0KGl0KTsKKyAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tbaV0gPSB2YWw7CisgICAgICAgIG5hcmdzKys7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGx6LT5mdW5jLCBzdGFjaywgbmFyZ3MpOworCitleGl0OgorICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9ERUNSRUYoc3RhY2tbaV0pOworICAgIH0KKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3NzksNyArMTgxNCw3IEBACiAgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgewotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlCkBAIC0xODQ1LDcgKzE4ODAsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODU0LDcgKzE4ODksNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTg2Nyw3ICsxOTAyLDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdHR5ID0gMDsKQEAgLTE4OTgsMTEgKzE5MzMsMTEgQEAKICAgICAgICAgICAgIC8qIHN0ZGluIGlzIGEgdGV4dCBzdHJlYW0sIHNvIGl0IG11c3QgaGF2ZSBhbgogICAgICAgICAgICAgICAgZW5jb2RpbmcuICovCiAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7Ci0gICAgICAgIHN0ZGluX2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3RkaW5fZW5jb2RpbmcpOwotICAgICAgICBzdGRpbl9lcnJvcnNfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRpbl9lcnJvcnMpOworICAgICAgICBzdGRpbl9lbmNvZGluZ19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHN0ZGluX2VuY29kaW5nKTsKKyAgICAgICAgc3RkaW5fZXJyb3JzX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgoc3RkaW5fZXJyb3JzKTsKICAgICAgICAgaWYgKCFzdGRpbl9lbmNvZGluZ19zdHIgfHwgIXN0ZGluX2Vycm9yc19zdHIpCiAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKQEAgLTE5MTUsOCArMTk1MCw4IEBACiAgICAgICAgICAgICBzdGRvdXRfZXJyb3JzID0gX1B5T2JqZWN0X0dldEF0dHJJZChmb3V0LCAmUHlJZF9lcnJvcnMpOwogICAgICAgICAgICAgaWYgKCFzdGRvdXRfZW5jb2RpbmcgfHwgIXN0ZG91dF9lcnJvcnMpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKLSAgICAgICAgICAgIHN0ZG91dF9lcnJvcnNfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZXJyb3JzKTsKKyAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZ19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHN0ZG91dF9lbmNvZGluZyk7CisgICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgoc3Rkb3V0X2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZ19zdHIgfHwgIXN0ZG91dF9lcnJvcnNfc3RyKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKICAgICAgICAgICAgIHN0cmluZ3BvID0gUHlPYmplY3RfU3RyKHByb21wdCk7CkBAIC0xOTI5LDkgKzE5NjQsOCBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0c3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOworICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socG8pKTsKKyAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBvKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvID0gTlVMTDsKQEAgLTE5ODMsNyArMjAxNyw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0LCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0yMDg3LDEwICsyMTIxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9zb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICpuZXdhcmdzOworICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKipuZXdhcmdzOwogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0yMTA3LDE1ICsyMTQyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmV3YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgNCk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHYgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgbmV3YXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSAtIDE7CisgICAgdiA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoY2FsbGFibGUsIG5ld2FyZ3MsIG5hcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwpAQCAtMjcxMCwxMCArMjczOSwxMCBAQAogICAgIFNFVEJVSUxUSU4oInppcCIsICAgICAgICAgICAgICAgICAgICZQeVppcF9UeXBlKTsKICAgICBkZWJ1ZyA9IFB5Qm9vbF9Gcm9tTG9uZyhQeV9PcHRpbWl6ZUZsYWcgPT0gMCk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RlYnVnX18iLCBkZWJ1ZykgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgICAgICBQeV9ERUNSRUYoZGVidWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgUHlfREVDUkVGKGRlYnVnKTsKIAogICAgIHJldHVybiBtb2Q7CiAjdW5kZWYgQUREX1RPX0FMTApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA3YjQwNTE4Li5kNTE3MmI5IDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTUsODcgKzE1LDEyIEBACiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLSNpZm5kZWYgV0lUSF9UU0MKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpCi0KLSNlbHNlCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NDsKLQotLyogUG93ZXJQQyBzdXBwb3J0LgotICAgIl9fcHBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIHByZXByb2Nlc3NvciBkZWZpbml0aW9uIHRvIGRldGVjdCBvbiBPUyBYLCB3aGVyZWFzCi0gICAiX19wb3dlcnBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQwotKi8KLSNpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKQotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikgcHBjX2dldGNvdW50ZXIoJnZhcikKLQotc3RhdGljIHZvaWQKLXBwY19nZXRjb3VudGVyKHVpbnQ2NCAqdikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRidSwgdGIsIHRidTI7Ci0KLSAgbG9vcDoKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUpICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YiAgJTAiIDogIj1yIiAodGIpICApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidTIpKTsKLSAgICBpZiAoX19idWlsdGluX2V4cGVjdCh0YnUgIT0gdGJ1MiwgMCkpIGdvdG8gbG9vcDsKLQotICAgIC8qIFRoZSBzbGlnaHRseSBwZWN1bGlhciB3YXkgb2Ygd3JpdGluZyB0aGUgbmV4dCBsaW5lcyBpcwotICAgICAgIGNvbXBpbGVkIGJldHRlciBieSBHQ0MgdGhhbiBhbnkgb3RoZXIgd2F5IEkgdHJpZWQuICovCi0gICAgKChsb25nKikodikpWzBdID0gdGJ1OwotICAgICgobG9uZyopKHYpKVsxXSA9IHRiOwotfQotCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotCi0vKiB0aGlzIGlzIGZvciBsaW51eC94ODYgKGFuZCBwcm9iYWJseSBhbnkgb3RoZXIgR0NDL3g4NiBjb21ibykgKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0KLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLQotLyogZm9yIGdjYy94ODZfNjQsIHRoZSAiQSIgY29uc3RyYWludCBpbiBESSBtb2RlIG1lYW5zICplaXRoZXIqIHJheCAqb3IqIHJkeDsKLSAgIG5vdCBlZHg6ZWF4IGFzIGl0IGRvZXMgZm9yIGkzODYuICBTaW5jZSByZHRzYyBwdXRzIGl0cyByZXN1bHQgaW4gZWR4OmVheAotICAgZXZlbiBpbiA2NC1iaXQgbW9kZSwgd2UgbmVlZCB0byB1c2UgImEiIGFuZCAiZCIgZm9yIHRoZSBsb3dlciBhbmQgdXBwZXIKLSAgIDMyLWJpdCBwaWVjZXMgb2YgdGhlIHJlc3VsdC4gKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IGgsIGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1hIiAobCksICI9ZCIgKGgpKTsgXAotICAgICh2YWwpID0gKCh1aW50NjQpbCkgfCAoKCh1aW50NjQpaCkgPDwgMzIpOyAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0KLSNlbHNlCi0KLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gaW1wbGVtZW50IHRpbWVzdGFtcCBjb3VudGVyIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKLQotI2VuZGlmCi0KLXZvaWQgZHVtcF90c2MoaW50IG9wY29kZSwgaW50IHRpY2tlZCwgdWludDY0IGluc3QwLCB1aW50NjQgaW5zdDEsCi0gICAgICAgICAgICAgIHVpbnQ2NCBsb29wMCwgdWludDY0IGxvb3AxLCB1aW50NjQgaW50cjAsIHVpbnQ2NCBpbnRyMSkKLXsKLSAgICB1aW50NjQgaW50ciwgaW5zdCwgbG9vcDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotICAgIGlmICghdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXApCi0gICAgICAgIHJldHVybjsKLSAgICBpbnRyID0gaW50cjEgLSBpbnRyMDsKLSAgICBpbnN0ID0gaW5zdDEgLSBpbnN0MCAtIGludHI7Ci0gICAgbG9vcCA9IGxvb3AxIC0gbG9vcDAgLSBpbnRyOwotICAgIGZwcmludGYoc3RkZXJyLCAib3Bjb2RlPSUwM2QgdD0lZCBpbnN0PSUwNmxsZCBsb29wPSUwNmxsZFxuIiwKLSAgICAgICAgICAgIG9wY29kZSwgdGlja2VkLCBpbnN0LCBsb29wKTsKLX0KLQotI2VuZGlmCi0KIC8qIFR1cm4gdGhpcyBvbiBpZiB5b3VyIGNvbXBpbGVyIGNob2tlcyBvbiB0aGUgYmlnIHN3aXRjaDogKi8KIC8qICNkZWZpbmUgQ0FTRV9UT09fQklHIDEgKi8KIApAQCAtMTA4LDI0ICszMywxMyBAQAogdHlwZWRlZiBQeU9iamVjdCAqKCpjYWxscHJvYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQsIHVpbnQ2NCosIHVpbnQ2NCopOwotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQpOwotI2VuZGlmCi1zdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZXh0X2RvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKiwgaW50LCBQeU9iamVjdCAqKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX3N0YXJfYXJncyhpbnQsIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKioqKTsKLXN0YXRpYyBQeU9iamVjdCAqIGxvYWRfYXJncyhQeU9iamVjdCAqKiosIGludCk7Ci0jZGVmaW5lIENBTExfRkxBR19WQVIgMQotI2RlZmluZSBDQUxMX0ZMQUdfS1cgMgorc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsX2NvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50IGxsdHJhY2U7Ci1zdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogI2VuZGlmCiBzdGF0aWMgaW50IGNhbGxfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLApAQCAtMTM3LDE0ICs1MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGludCBtYXliZV9jYWxsX2xpbmVfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKiBjbXBfb3V0Y29tZShpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCBjb25zdCBfUHlfQ09ERVVOSVQgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCkBAIC03OTYsMTEgKzcxNCwxOCBAQAogUHlPYmplY3QgKgogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5pbnRlcnAtPmV2YWxfZnJhbWUoZiwgdGhyb3dmbGFnKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCit7CiAjaWZkZWYgRFhQQUlSUwogICAgIGludCBsYXN0b3Bjb2RlID0gMDsKICNlbmRpZgogICAgIFB5T2JqZWN0ICoqc3RhY2tfcG9pbnRlcjsgIC8qIE5leHQgZnJlZSBzbG90IGluIHZhbHVlIHN0YWNrICovCi0gICAgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHI7CiAgICAgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KQEAgLTgxOCw3ICs3NDMsNyBAQAogICAgICAgIHRpbWUgaXQgaXMgdGVzdGVkLiAqLwogICAgIGludCBpbnN0cl91YiA9IC0xLCBpbnN0cl9sYiA9IDAsIGluc3RyX3ByZXYgPSAtMTsKIAotICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7CiAKQEAgLTg4NiwyNCArODExLDEwIEBACiAvKiBJbXBvcnQgdGhlIHN0YXRpYyBqdW1wIHRhYmxlICovCiAjaW5jbHVkZSAib3Bjb2RlX3RhcmdldHMuaCIKIAotLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW4gc2V2ZXJhbCBvcGNvZGVzIGRlZmVyIHRvIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCi0gICAoZS5nLiBTRVRVUF9MT09QLCBTRVRVUF9GSU5BTExZKSAqLwotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAotICAgIGNhc2Ugb3A6IFwKLSAgICAgICAgZ290byBpbXBsOyBcCi0KICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAogICAgIGNhc2Ugb3A6CiAKLQogI2RlZmluZSBESVNQQVRDSCgpIFwKICAgICB7IFwKICAgICAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgeyAgICAgIFwKQEAgLTkxNSwxOCArODI2LDIwIEBACiAjaWZkZWYgTExUUkFDRQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CiAjZWxzZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CkBAIC05MzUsMTAgKzg0OCw3IEBACiAjZWxzZQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBjYXNlIG9wOgotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBgaW1wbGAgdW51c2VkICovIFwKLSAgICBpZiAoMCkgZ290byBpbXBsOyBcCi0gICAgY2FzZSBvcDoKKwogI2RlZmluZSBESVNQQVRDSCgpIGNvbnRpbnVlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBnb3RvIGZhc3RfbmV4dF9vcGNvZGUKICNlbmRpZgpAQCAtOTUyLDcwICs4NjIsMzMgQEAKICNkZWZpbmUgR0VUSVRFTSh2LCBpKSBQeVR1cGxlX0dldEl0ZW0oKHYpLCAoaSkpCiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfVFNDCi0vKiBVc2UgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciB0byBtYXJrIGNlcnRhaW4gZXZlbnRzOgotICAgaW5zdDAgLS0gYmVnaW5uaW5nIG9mIHN3aXRjaCBzdGF0ZW1lbnQgZm9yIG9wY29kZSBkaXNwYXRjaAotICAgaW5zdDEgLS0gZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnQgKG1heSBiZSBza2lwcGVkKQotICAgbG9vcDAgLS0gdGhlIHRvcCBvZiB0aGUgbWFpbmxvb3AKLSAgIGxvb3AxIC0tIHBsYWNlIHdoZXJlIGNvbnRyb2wgcmV0dXJucyBhZ2FpbiB0byB0b3Agb2YgbWFpbmxvb3AKLSAgICAgICAgICAgIChtYXkgYmUgc2tpcHBlZCkKLSAgIGludHIxIC0tIGJlZ2lubmluZyBvZiBsb25nIGludGVycnVwdGlvbgotICAgaW50cjIgLS0gZW5kIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0KLSAgIE1hbnkgb3Bjb2RlcyBjYWxsIG91dCB0byBoZWxwZXIgQyBmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCB0aGUKLSAgIHRpbWUgaW4gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlIHRpbWUgZm9yIHRoZQotICAgb3Bjb2RlLCBidXQgbm90IGluIGFsbCBjYXNlcy4gIEZvciBleGFtcGxlLCBhIENBTExfRlVOQ1RJT04gb3Bjb2RlCi0gICBjYWxscyBhbm90aGVyIFB5dGhvbiBmdW5jdGlvbjsgdGhlcmUncyBubyBwb2ludCBpbiBjaGFyZ2UgYWxsIHRoZQotICAgYnl0ZWNvZGUgZXhlY3V0ZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB0aGUgY2FsbGVyLgotCi0gICBJdCdzIGhhcmQgdG8gbWFrZSBhIHVzZWZ1bCBqdWRnZW1lbnQgc3RhdGljYWxseS4gIEluIHRoZSBwcmVzZW5jZQotICAgb2Ygb3BlcmF0b3Igb3ZlcmxvYWRpbmcsIGl0J3MgaW1wb3NzaWJsZSB0byB0ZWxsIGlmIGEgY2FsbCB3aWxsCi0gICBleGVjdXRlIG5ldyBQeXRob24gY29kZSBvciBub3QuCi0KLSAgIEl0J3MgYSBjYXNlLWJ5LWNhc2UganVkZ2VtZW50LiAgSSdsbCB1c2UgaW50cjEgZm9yIHRoZSBmb2xsb3dpbmcKLSAgIGNhc2VzOgotCi0gICBJTVBPUlRfU1RBUgotICAgSU1QT1JUX0ZST00KLSAgIENBTExfRlVOQ1RJT04gKGFuZCBmcmllbmRzKQotCi0gKi8KLSAgICB1aW50NjQgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsIGludHIwID0gMCwgaW50cjEgPSAwOwotICAgIGludCB0aWNrZWQgPSAwOwotCi0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwotCi0gICAgLyogc2h1dCB1cCB0aGUgY29tcGlsZXIgKi8KLSAgICBvcGNvZGUgPSAwOwotI2VuZGlmCi0KIC8qIENvZGUgYWNjZXNzIG1hY3JvcyAqLwogCi0jZGVmaW5lIElOU1RSX09GRlNFVCgpICAoKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKLSNkZWZpbmUgTkVYVE9QKCkgICAgICAgICgqbmV4dF9pbnN0cisrKQotI2RlZmluZSBORVhUQVJHKCkgICAgICAgKG5leHRfaW5zdHIgKz0gMiwgKG5leHRfaW5zdHJbLTFdPDw4KSArIG5leHRfaW5zdHJbLTJdKQotI2RlZmluZSBQRUVLQVJHKCkgICAgICAgKChuZXh0X2luc3RyWzJdPDw4KSArIG5leHRfaW5zdHJbMV0pCi0jZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpKQotI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpKQorLyogVGhlIGludGVnZXIgb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBhbiBhc3NlcnRpb24gYmVsb3cuICovCisjZGVmaW5lIElOU1RSX09GRlNFVCgpICAoc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKiAoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQorI2RlZmluZSBORVhUT1BBUkcoKSAgZG8geyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQorI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCiAKIC8qIE9wQ29kZSBwcmVkaWN0aW9uIG1hY3JvcwogICAgIFNvbWUgb3Bjb2RlcyB0ZW5kIHRvIGNvbWUgaW4gcGFpcnMgdGh1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8KICAgICBwcmVkaWN0IHRoZSBzZWNvbmQgY29kZSB3aGVuIHRoZSBmaXJzdCBpcyBydW4uICBGb3IgZXhhbXBsZSwKLSAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IEpVTVBfSUZfRkFMU0Ugb3IgSlVNUF9JRl9UUlVFLiAgQW5kLAotICAgIHRob3NlIG9wY29kZXMgYXJlIG9mdGVuIGZvbGxvd2VkIGJ5IGEgUE9QX1RPUC4KKyAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IFBPUF9KVU1QX0lGX0ZBTFNFIG9yIFBPUF9KVU1QX0lGX1RSVUUuCiAKICAgICBWZXJpZnlpbmcgdGhlIHByZWRpY3Rpb24gY29zdHMgYSBzaW5nbGUgaGlnaC1zcGVlZCB0ZXN0IG9mIGEgcmVnaXN0ZXIKICAgICB2YXJpYWJsZSBhZ2FpbnN0IGEgY29uc3RhbnQuICBJZiB0aGUgcGFpcmluZyB3YXMgZ29vZCwgdGhlbiB0aGUKICAgICBwcm9jZXNzb3IncyBvd24gaW50ZXJuYWwgYnJhbmNoIHByZWRpY2F0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZgogICAgIHN1Y2Nlc3MsIHJlc3VsdGluZyBpbiBhIG5lYXJseSB6ZXJvLW92ZXJoZWFkIHRyYW5zaXRpb24gdG8gdGhlCiAgICAgbmV4dCBvcGNvZGUuICBBIHN1Y2Nlc3NmdWwgcHJlZGljdGlvbiBzYXZlcyBhIHRyaXAgdGhyb3VnaCB0aGUgZXZhbC1sb29wCi0gICAgaW5jbHVkaW5nIGl0cyB0d28gdW5wcmVkaWN0YWJsZSBicmFuY2hlcywgdGhlIEhBU19BUkcgdGVzdCBhbmQgdGhlCi0gICAgc3dpdGNoLWNhc2UuICBDb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwKLSAgICBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZgotICAgIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KKyAgICBpbmNsdWRpbmcgaXRzIHVucHJlZGljdGFibGUgc3dpdGNoLWNhc2UgYnJhbmNoLiAgQ29tYmluZWQgd2l0aCB0aGUKKyAgICBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZQorICAgIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZQorICAgIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KIAogICAgIElmIGNvbGxlY3Rpbmcgb3Bjb2RlIHN0YXRpc3RpY3MsIHlvdXIgY2hvaWNlcyBhcmUgdG8gZWl0aGVyIGtlZXAgdGhlCiAgICAgcHJlZGljdGlvbnMgdHVybmVkLW9uIGFuZCBpbnRlcnByZXQgdGhlIHJlc3VsdHMgYXMgaWYgc29tZSBvcGNvZGVzCkBAIC0xMDMwLDEzICs5MDMsMTkgQEAKIAogI2lmIGRlZmluZWQoRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRSkgfHwgVVNFX0NPTVBVVEVEX0dPVE9TCiAjZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgwKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6Ci0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDoKICNlbHNlCi0jZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBvcCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOiBuZXh0X2luc3RyKysKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOiBvcGFyZyA9IFBFRUtBUkcoKTsgbmV4dF9pbnN0ciArPSAzCisjZGVmaW5lIFBSRURJQ1Qob3ApIFwKKyAgICBkb3sgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgaWYgKG9wY29kZSA9PSBvcCl7IFwKKyAgICAgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICAgICAgICAgIGdvdG8gUFJFRF8jI29wOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCkKICNlbmRpZgorI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6CiAKIAogLyogU3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyAqLwpAQCAtMTEwMCw3ICs5NzksNyBAQAogICAgIH0KIAogI2RlZmluZSBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYikgXAotICAgIHsgXAorICAgIGRvIHsgXAogICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpID49IChiKS0+Yl9sZXZlbCArIDMpOyBcCiAgICAgICAgIHdoaWxlIChTVEFDS19MRVZFTCgpID4gKGIpLT5iX2xldmVsICsgMykgeyBcCkBAIC0xMTE2LDcgKzk5NSw3IEBACiAgICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQorICAgIH0gd2hpbGUoMCkKIAogLyogU3RhcnQgb2YgY29kZSAqLwogCkBAIC0xMTYwLDIxICsxMDM5LDI0IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkoZik7CisKICAgICBjbyA9IGYtPmZfY29kZTsKICAgICBuYW1lcyA9IGNvLT5jb19uYW1lczsKICAgICBjb25zdHMgPSBjby0+Y29fY29uc3RzOwogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKLSAgICBmaXJzdF9pbnN0ciA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOwotICAgIC8qIEFuIGV4cGxhbmF0aW9uIGlzIGluIG9yZGVyIGZvciB0aGUgbmV4dCBsaW5lLgorICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvLT5jb19jb2RlKSk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpIDw9IElOVF9NQVgpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSksIHNpemVvZihfUHlfQ09ERVVOSVQpKSk7CisgICAgZmlyc3RfaW5zdHIgPSAoX1B5X0NPREVVTklUICopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKKyAgICAvKgorICAgICAgIGYtPmZfbGFzdGkgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiwKKyAgICAgICB1bmxlc3MgaXQncyAtMSBpbiB3aGljaCBjYXNlIG5leHRfaW5zdHIgc2hvdWxkIGJlIGZpcnN0X2luc3RyLgogCi0gICAgICAgZi0+Zl9sYXN0aSBub3cgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbgotICAgICAgIGV4ZWN1dGVkLiAgWW91IG1pZ2h0IHRoaW5rIHRoaXMgd2FzIG9idmlvdXMgZnJvbSB0aGUgbmFtZSwgYnV0Ci0gICAgICAgdGhpcyB3YXNuJ3QgYWx3YXlzIHRydWUgYmVmb3JlIDIuMyEgIFB5RnJhbWVfTmV3IG5vdyBzZXRzCi0gICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQotICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCi0gICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KLSAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZGx5IHlpZWxkCiAgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCkBAIC0xMTgzLDE1ICsxMDY1LDIwIEBACiAgICAgICAgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlOyBhY2NvcmRpbmdseSxmLT5mX2xhc3RpIHdpbGwgcG9pbnQgdG8KICAgICAgICB0aGUgZmlyc3QgY29kZSBpbiB0aGUgcGFpciAoZm9yIGluc3RhbmNlLCBHRVRfSVRFUiBmb2xsb3dlZCBieQogICAgICAgIEZPUl9JVEVSIGlzIGVmZmVjdGl2ZWx5IGEgc2luZ2xlIG9wY29kZSBhbmQgZi0+Zl9sYXN0aSB3aWxsIHBvaW50Ci0gICAgICAgYXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCisgICAgICAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCiAgICAgKi8KLSAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyBmLT5mX2xhc3RpICsgMTsKKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSA+PSAtMSk7CisgICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyOworICAgIGlmIChmLT5mX2xhc3RpID49IDApIHsKKyAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV4dF9pbnN0ciArPSBmLT5mX2xhc3RpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyAxOworICAgIH0KICAgICBzdGFja19wb2ludGVyID0gZi0+Zl9zdGFja3RvcDsKICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsKICAgICBmLT5mX3N0YWNrdG9wID0gTlVMTDsgICAgICAgLyogcmVtYWlucyBOVUxMIHVubGVzcyB5aWVsZCBzdXNwZW5kcyBmcmFtZSAqLwogICAgIGYtPmZfZXhlY3V0aW5nID0gMTsKIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xMjE5LDIzICsxMTA2LDYgQEAKICNlbmRpZgogCiAgICAgZm9yICg7OykgewotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGlmIChpbnN0MSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBBbG1vc3Qgc3VyZWx5LCB0aGUgb3Bjb2RlIGV4ZWN1dGVkIGEgYnJlYWsKLSAgICAgICAgICAgICAgIG9yIGEgY29udGludWUsIHByZXZlbnRpbmcgaW5zdDEgZnJvbSBiZWluZyBzZXQKLSAgICAgICAgICAgICAgIG9uIHRoZSB3YXkgb3V0IG9mIHRoZSBsb29wLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICAgICAgICAgIGxvb3AxID0gaW5zdDE7Ci0gICAgICAgIH0KLSAgICAgICAgZHVtcF90c2Mob3Bjb2RlLCB0aWNrZWQsIGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLAotICAgICAgICAgICAgICAgICBpbnRyMCwgaW50cjEpOwotICAgICAgICB0aWNrZWQgPSAwOwotICAgICAgICBpbnN0MSA9IDA7Ci0gICAgICAgIGludHIwID0gMDsKLSAgICAgICAgaW50cjEgPSAwOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0jZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CkBAIC0xMjQ5LDE0ICsxMTE5LDExIEBACiAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMoKSBhYm92ZS4gKi8KIAogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsKLSAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBTRVRVUF9GSU5BTExZKSB7CisgICAgICAgICAgICBpZiAoX1B5X09QQ09ERSgqbmV4dF9pbnN0cikgPT0gU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGxhc3Qgb3Bjb2RlIGJlZm9yZQogICAgICAgICAgICAgICAgICAgIGEgdHJ5OiBmaW5hbGx5OiBibG9jayB1bmludGVycnVwdGlibGUuICovCiAgICAgICAgICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOwogICAgICAgICAgICAgfQotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB0aWNrZWQgPSAxOwotI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEyOTYsNiArMTE2Myw5IEBACiAgICAgZmFzdF9uZXh0X29wY29kZToKICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOwogCisgICAgICAgIGlmIChQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkKKyAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lKGYsICZpbnN0cl9sYiwgJmluc3RyX3ViLCAmaW5zdHJfcHJldik7CisKICAgICAgICAgLyogbGluZS1ieS1saW5lIHRyYWNpbmcgc3VwcG9ydCAqLwogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCkBAIC0xMzIyLDExICsxMTkyLDcgQEAKIAogICAgICAgICAvKiBFeHRyYWN0IG9wY29kZSBhbmQgYXJndW1lbnQgKi8KIAotICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgb3BhcmcgPSAwOyAgIC8qIGFsbG93cyBvcGFyZyB0byBiZSBzdG9yZWQgaW4gYSByZWdpc3RlciBiZWNhdXNlCi0gICAgICAgICAgICBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVtZW1iZXJlZCBhY3Jvc3MgYSBmdWxsIGxvb3AgKi8KLSAgICAgICAgaWYgKEhBU19BUkcob3Bjb2RlKSkKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOworICAgICAgICBORVhUT1BBUkcoKTsKICAgICBkaXNwYXRjaF9vcGNvZGU6CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQogI2lmZGVmIERYUEFJUlMKQEAgLTEzNTEsOSArMTIxNyw2IEBACiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIC8qIE1haW4gc3dpdGNoIG9uIG9wY29kZSAqLwotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0KICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKIAogICAgICAgICAvKiBCRVdBUkUhCkBAIC0xMzc3LDYgKzEyNDAsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKExPQURfQ09OU1QpOwogICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzg0LDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFNUT1JFX0ZBU1QpOworICAgICAgICBQUkVESUNURUQoU1RPUkVfRkFTVCk7CiAgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CkBAIC0xODYzLDYgKzE3MjcsNjEgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoU1RPUkVfQU5OT1RBVElPTikgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm4gPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGZpcnN0IHRyeSB0byBnZXQgX19hbm5vdGF0aW9uc19fIGZyb20gbG9jYWxzLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogLi4uaWYgc3VjY2VlZGVkLCBfX2Fubm90YXRpb25zX19bbmFtZV0gPSBhbm4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhbm5fZGljdCkpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChERUxFVEVfU1VCU0NSKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3ViID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29udGFpbmVyID0gU0VDT05EKCk7CkBAIC0xOTkyLDcgKzE5MTEsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKIAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBpbXBsZW1lbnRzIGxlZ2FjeSBfX2FpdGVyX18gcHJvdG9jb2w7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJfX2FpdGVyX18gc2hvdWxkIHJldHVybiBhbiBhc3luY2hyb25vdXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdG9yLCBub3QgYXdhaXRhYmxlIiwKQEAgLTIwMDYsNiArMTkyNSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNFVF9UT1AoYXdhaXRhYmxlKTsKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTIwMTYsNDEgKzE5MzYsNTIgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOwogICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CiAKLSAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKLQotICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoYWl0ZXIpKSB7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0KGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCi0gICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKXsKKyAgICAgICAgICAgICAgICAgICAgZ2V0dGVyID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7Ci0gICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKLSAgICAgICAgICAgICAgICAgICAgImZyb20gX19hbmV4dF9fOiAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0X2l0ZXIgPSAoKmdldHRlcikoYWl0ZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX2FuZXh0X18gbWV0aG9kLCBnb3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdGFibGUgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV4dF9pdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBQVVNIKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgVEFSR0VUKEdFVF9BV0FJVEFCTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIoaXRlcmFibGUpOwpAQCAtMjA3OCwyMSArMjAwOSwyMiBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFlJRUxEX0ZST00pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVjaWV2ZXIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNlaXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdChyZWNpZXZlcikpIHsKLSAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKilyZWNpZXZlciwgdik7CisgICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNlaXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjZWl2ZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjZWl2ZXIsIHYpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzZW5kKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2lldmVyKS0+dHBfaXRlcm5leHQocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2VpdmVyKS0+dHBfaXRlcm5leHQocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjaWV2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhyZWNlaXZlciwgJlB5SWRfc2VuZCwgdiwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKQEAgLTIxMDMsNyArMjAzNSw3IEBACiAgICAgICAgICAgICAgICAgZXJyID0gX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNpZXZlcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBTRVRfVE9QKHZhbCk7CiAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KQEAgLTIxMTEsMTIgKzIwNDMsMjQgQEAKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwogICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOwogICAgICAgICAgICAgLyogYW5kIHJlcGVhdC4uLiAqLwotICAgICAgICAgICAgZi0+Zl9sYXN0aS0tOworICAgICAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgPj0gKGludClzaXplb2YoX1B5X0NPREVVTklUKSk7CisgICAgICAgICAgICBmLT5mX2xhc3RpIC09IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFlJRUxEX1ZBTFVFKSB7CiAgICAgICAgICAgICByZXR2YWwgPSBQT1AoKTsKKworICAgICAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3ID0gX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHZhbCA9IHc7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwogICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOwogICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOwpAQCAtMjEzMyw2ICsyMDc3LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoUE9QX0JMT0NLKTsKICAgICAgICAgVEFSR0VUKFBPUF9CTE9DSykgewogICAgICAgICAgICAgUHlUcnlCbG9jayAqYiA9IFB5RnJhbWVfQmxvY2tQb3AoZik7CiAgICAgICAgICAgICBVTldJTkRfQkxPQ0soYik7CkBAIC0yMjQ5LDcgKzIxOTQsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhVTlBBQ0tfU0VRVUVOQ0UpOworICAgICAgICBQUkVESUNURUQoVU5QQUNLX1NFUVVFTkNFKTsKICAgICAgICAgVEFSR0VUKFVOUEFDS19TRVFVRU5DRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnNlcSA9IFBPUCgpLCAqaXRlbSwgKippdGVtczsKICAgICAgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3Qoc2VxKSAmJgpAQCAtMjM1OCw3ICsyMzAzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGxvY2FscywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCAmJiBfUHlFcnJfT0NDVVJSRUQoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yMzk4LDI2ICsyMzQzLDMzIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfZ2xvYmFscykKLSAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHYgPSBfUHlEaWN0X0xvYWRHbG9iYWwoKFB5RGljdE9iamVjdCAqKWYtPmZfZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURpY3RPYmplY3QgKilmLT5mX2J1aWx0aW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIV9QeUVycl9PQ0NVUlJFRCgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIV9QeUVycl9PQ0NVUlJFRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBfUHlEaWN0X0xvYWRHbG9iYWwoKSByZXR1cm5zIE5VTEwgd2l0aG91dCByYWlzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbiBleGNlcHRpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeUV4Y19OYW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogU2xvdy1wYXRoIGlmIGdsb2JhbHMgb3IgYnVpbHRpbnMgaXMgbm90IGEgZGljdCAqLworCisgICAgICAgICAgICAgICAgLyogbmFtZXNwYWNlIDE6IGdsb2JhbHMgKi8KICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKKyAgICAgICAgICAgICAgICAgICAgLyogbmFtZXNwYWNlIDI6IGJ1aWx0aW5zICovCiAgICAgICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0yNDc3LDcgKzI0MjksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRJdGVtKGxvY2FscywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjUxMSw4ICsyNDYzLDI3IEBACiAgICAgICAgIFRBUkdFVChTVE9SRV9ERVJFRikgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gZnJlZXZhcnNbb3BhcmddOwotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCB2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGRvYmogPSBQeUNlbGxfR0VUKGNlbGwpOworICAgICAgICAgICAgUHlDZWxsX1NFVChjZWxsLCB2KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob2xkb2JqKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfU1RSSU5HKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyOworICAgICAgICAgICAgUHlPYmplY3QgKmVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICAgICAgICAgIGlmIChlbXB0eSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ciA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KGVtcHR5LCBzdGFja19wb2ludGVyIC0gb3BhcmcsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHdoaWxlICgtLW9wYXJnID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFBPUCgpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0goc3RyKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjU0MCwxMyArMjUxMSwxNCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQlVJTERfVFVQTEVfVU5QQUNLLCBfYnVpbGRfbGlzdF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9MSVNUX1VOUEFDSykKLSAgICAgICAgX2J1aWxkX2xpc3RfdW5wYWNrOiB7Ci0gICAgICAgICAgICBpbnQgY29udmVydF90b190dXBsZSA9IG9wY29kZSA9PSBCVUlMRF9UVVBMRV9VTlBBQ0s7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwpCisgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRV9VTlBBQ0spCisgICAgICAgIFRBUkdFVChCVUlMRF9MSVNUX1VOUEFDSykgeworICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgIT0gQlVJTERfTElTVF9VTlBBQ0s7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlMaXN0X05ldygwKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yNTU1LDYgKzI1MjcsMTYgQEAKIAogICAgICAgICAgICAgICAgIG5vbmVfdmFsID0gX1B5TGlzdF9FeHRlbmQoKFB5TGlzdE9iamVjdCAqKXN1bSwgUEVFSyhpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vbmVfdmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSygxICsgb3BhcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhpKS0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU5OSw3ICsyNTgxLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChCVUlMRF9TRVRfVU5QQUNLKSB7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeVNldF9OZXcoTlVMTCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2MTgsNyArMjYwMCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfTUFQKSB7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKICAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY0MSw4NyArMjYyMywxNjIgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBfYnVpbGRfbWFwX3VucGFjaykKLSAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spCi0gICAgICAgIF9idWlsZF9tYXBfdW5wYWNrOiB7Ci0gICAgICAgICAgICBpbnQgd2l0aF9jYWxsID0gb3Bjb2RlID09IEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOwotICAgICAgICAgICAgaW50IG51bV9tYXBzOwotICAgICAgICAgICAgaW50IGk7CisgICAgICAgIFRBUkdFVChTRVRVUF9BTk5PVEFUSU9OUykgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uX2RpY3Q7CisgICAgICAgICAgICBpZiAoZi0+Zl9sb2NhbHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHNldHRpbmcgdXAgYW5ub3RhdGlvbnMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogY2hlY2sgaWYgX19hbm5vdGF0aW9uc19fIGluIGxvY2FscygpLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogLi4uaWYgbm90LCBjcmVhdGUgYSBuZXcgb25lICovCisgICAgICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlcnIgPSBfUHlEaWN0X1NldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19hbm5vdGF0aW9uc19fLCBhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIGRvIHRoZSBzYW1lIGlmIGxvY2FscygpIGlzIG5vdCBhIGRpY3QgKi8KKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5uX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIpOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIsIGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfQ09OU1RfS0VZX01BUCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKm1hcDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChrZXlzKSB8fAorICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoa2V5cykgIT0gKFB5X3NzaXplX3Qpb3BhcmcpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgQlVJTERfQ09OU1RfS0VZX01BUCBrZXlzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOworICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrZXlzLCBvcGFyZyAtIGkpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFBFRUsoaSArIDEpOworICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKG1hcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0gobWFwKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDSykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbnVtX21hcHMgPSBvcGFyZzsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChpID0gbnVtX21hcHM7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFBFRUsoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJzZWN0aW9uID0gX1B5RGljdFZpZXdfSW50ZXJzZWN0KHN1bSwgYXJnKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFQeU1hcHBpbmdfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUoaW50ZXJzZWN0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpZHggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfUHlTZXRfTmV4dEVudHJ5KGludGVyc2VjdGlvbiwgJmlkeCwgJmtleSwgJmhhc2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYykpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShzdW0sIGFyZykgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgbWFwcGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChzdW0pOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X01lcmdlRXgoc3VtLCBhcmcsIDIpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMiArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsICYmIFB5VHVwbGVfQ2hlY2sodmFsKSAmJiBQeVR1cGxlX0dFVF9TSVpFKHZhbCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHZhbCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CkBAIC0yNzI5LDcgKzI3ODYsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOwogICAgICAgICAgICAgUFVTSChzdW0pOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKQEAgLTI3NzgsNDUgKzI4MzUsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfTkFNRSkgewotICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgKmxldmVsLCAqYXJncywgKnJlczsKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICBmcm9tID0gUE9QKCk7Ci0gICAgICAgICAgICBsZXZlbCA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKFB5TG9uZ19Bc0xvbmcobGV2ZWwpICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20pOworICAgICAgICAgICAgUHlPYmplY3QgKmZyb21saXN0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGV2ZWwgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgICAgICByZXMgPSBpbXBvcnRfbmFtZShmLCBuYW1lLCBmcm9tbGlzdCwgbGV2ZWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxldmVsKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgU1RBQ0tBREooLTEpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBhcmdzKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tbGlzdCk7CiAgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4MzUsOSArMjg2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgZHVyaW5nICdpbXBvcnQgKiciKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgZXJyID0gaW1wb3J0X2FsbF9mcm9tKGxvY2FscywgZnJvbSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmLCAwKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKQEAgLTI4NDksOSArMjg3Miw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgcmVzID0gaW1wb3J0X2Zyb20oZnJvbSwgbmFtZSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4NjMsNyArMjg4NCw3IEBACiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfRkFMU0UpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfRkFMU0UpOwogICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfRkFMU0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjg4Nyw3ICsyOTA4LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfVFJVRSk7CisgICAgICAgIFBSRURJQ1RFRChQT1BfSlVNUF9JRl9UUlVFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX1RSVUUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjk2NCw3ICsyOTg1LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoSlVNUF9BQlNPTFVURSk7CisgICAgICAgIFBSRURJQ1RFRChKVU1QX0FCU09MVVRFKTsKICAgICAgICAgVEFSR0VUKEpVTVBfQUJTT0xVVEUpIHsKICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAjaWYgRkFTVF9MT09QUwpAQCAtMjk5MCw2ICszMDExLDcgQEAKICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBSRURJQ1QoRk9SX0lURVIpOworICAgICAgICAgICAgUFJFRElDVChDQUxMX0ZVTkNUSU9OKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzAxOCwxMCArMzA0MCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CisgICAgICAgIFBSRURJQ1RFRChGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IFRPUCgpOwpAQCAtMzA0Myw2ICszMDY2LDcgQEAKICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIEpVTVBCWShvcGFyZyk7CisgICAgICAgICAgICBQUkVESUNUKFBPUF9CTE9DSyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwNTksMTAgKzMwODMsOSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfTE9PUCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfRVhDRVBULCBfc2V0dXBfZmluYWxseSkKLSAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpCi0gICAgICAgIF9zZXR1cF9maW5hbGx5OiB7CisgICAgICAgIFRBUkdFVChTRVRVUF9MT09QKQorICAgICAgICBUQVJHRVQoU0VUVVBfRVhDRVBUKQorICAgICAgICBUQVJHRVQoU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgLyogTk9URTogSWYgeW91IGFkZCBhbnkgbmV3IGJsb2NrLXNldHVwIG9wY29kZXMgdGhhdAogICAgICAgICAgICAgICAgYXJlIG5vdCB0cnkvZXhjZXB0L2ZpbmFsbHkgaGFuZGxlcnMsIHlvdSBtYXkgbmVlZAogICAgICAgICAgICAgICAgdG8gdXBkYXRlIHRoZSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoKSBmdW5jdGlvbi4KQEAgLTMwOTMsNiArMzExNiw3IEBACiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBVU0gocmVzKTsKKyAgICAgICAgICAgIFBSRURJQ1QoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMxMTAsMTUgKzMxMzQsMTcgQEAKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZXhpdF9fKTsKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZW50ZXJfXyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWdyID0gVE9QKCk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhpdCA9IHNwZWNpYWxfbG9va3VwKG1nciwgJlB5SWRfX19leGl0X18pLCAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqZW50ZXIgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fZW50ZXJfXyksICpleGl0OwogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgICAgIGlmIChleGl0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFNFVF9UT1AoZXhpdCk7Ci0gICAgICAgICAgICBlbnRlciA9IHNwZWNpYWxfbG9va3VwKG1nciwgJlB5SWRfX19lbnRlcl9fKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOwogICAgICAgICAgICAgaWYgKGVudGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fZXhpdF9fKTsKKyAgICAgICAgICAgIGlmIChleGl0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW50ZXIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTRVRfVE9QKGV4aXQpOworICAgICAgICAgICAgUHlfREVDUkVGKG1ncik7CiAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGVudGVyLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihlbnRlcik7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCkBAIC0zMjQxLDE3OCArMzI2NywxMzUgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzOwogICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCAmaW50cjAsICZpbnRyMSk7Ci0jZWxzZQotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnKTsKLSNlbmRpZgorICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBOVUxMKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX1ZBUiwgX2NhbGxfZnVuY3Rpb25fdmFyX2t3KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKENBTExfRlVOQ1RJT05fS1csIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fVkFSX0tXKQotICAgICAgICBfY2FsbF9mdW5jdGlvbl92YXJfa3c6IHsKLSAgICAgICAgICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgaW50IGZsYWdzID0gKG9wY29kZSAtIENBTExfRlVOQ1RJT04pICYgMzsKLSAgICAgICAgICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgICAgICAgICBQeU9iamVjdCAqKnBmdW5jLCAqZnVuYywgKipzcCwgKnJlczsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fS1cpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXMsICpuYW1lczsKKworICAgICAgICAgICAgbmFtZXMgPSBQT1AoKTsKKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QobmFtZXMpICYmIFB5VHVwbGVfR0VUX1NJWkUobmFtZXMpIDw9IG9wYXJnKTsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBwZnVuYyA9IHN0YWNrX3BvaW50ZXIgLSBuIC0gMTsKLSAgICAgICAgICAgIGZ1bmMgPSAqcGZ1bmM7Ci0KLSAgICAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKQotICAgICAgICAgICAgICAgICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9TRVRSRUYoKnBmdW5jLCBzZWxmKTsKLSAgICAgICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgICAgIC8qIG4rKzsgKi8KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHJlcyA9IGV4dF9kb19jYWxsKGZ1bmMsICZzcCwgZmxhZ3MsIG5hLCBuayk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsIG5hbWVzKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLQotICAgICAgICAgICAgd2hpbGUgKHN0YWNrX3BvaW50ZXIgPiBwZnVuYykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKE1BS0VfQ0xPU1VSRSwgX21ha2VfZnVuY3Rpb24pCi0gICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKQotICAgICAgICBfbWFrZV9mdW5jdGlvbjogewotICAgICAgICAgICAgaW50IHBvc2RlZmF1bHRzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgaW50IGt3ZGVmYXVsdHMgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBudW1fYW5ub3RhdGlvbnMgPSAob3BhcmcgPj4gMTYpICYgMHg3ZmZmOworICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9FWCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMsICpjYWxsYXJncywgKmt3YXJncyA9IE5VTEwsICpyZXN1bHQ7CisgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGt3YXJncyA9IFBPUCgpOworICAgICAgICAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGQsIGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcnJvciAocGVyY29sYXRlZCBmcm9tIGFuIGF0dGVtcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgbm90IGEgbWFwcGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IFNFQ09ORCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGFyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgIGZ1bmMgPSBUT1AoKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KGNhbGxhcmdzKSkgeworICAgICAgICAgICAgICAgIGlmIChQeV9UWVBFKGNhbGxhcmdzKS0+dHBfaXRlciA9PSBOVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihjYWxsYXJncywgUHlTZXF1ZW5jZV9UdXBsZShjYWxsYXJncykpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpOwogCi0gICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlID0gUE9QKCk7IC8qIGNvZGUgb2JqZWN0ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGUsIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGNvZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvX2NhbGxfY29yZShmdW5jLCBjYWxsYXJncywga3dhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGt3YXJncyk7CiAKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpCisgICAgICAgICAgICBTRVRfVE9QKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAob3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbG9zdXJlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0Q2xvc3VyZShmdW5jLCBjbG9zdXJlKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MgYnl0ZWNvZGUgaXMgY29ycnVwdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjbG9zdXJlKTsKKyAgICAgICAgVEFSR0VUKE1BS0VfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVvYmogPSBQT1AoKTsKKyAgICAgICAgICAgIFB5RnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlGdW5jdGlvbk9iamVjdCAqKQorICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGVvYmosIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOworCisgICAgICAgICAgICBQeV9ERUNSRUYoY29kZW9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOworICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChudW1fYW5ub3RhdGlvbnMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYW1lX2l4OwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IFBPUCgpOyAvKiBuYW1lcyBvZiBhcmdzIHdpdGggYW5ub3RhdGlvbnMgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5ucyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoYW5ucyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZV9peCA9IFB5VHVwbGVfU2l6ZShuYW1lcyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bV9hbm5vdGF0aW9ucyA9PSBuYW1lX2l4KzEpOwotICAgICAgICAgICAgICAgIHdoaWxlIChuYW1lX2l4ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgKnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgICAgICAtLW5hbWVfaXg7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKG5hbWVzLCBuYW1lX2l4KTsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5ucywgbmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhmdW5jLCBhbm5zKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwOCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jIC0+ZnVuY19jbG9zdXJlID0gUE9QKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDA0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19hbm5vdGF0aW9ucyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMikgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfa3dkZWZhdWx0cyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2RlZmF1bHRzID0gUE9QKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8qIFhYWCBNYXliZSB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG9wY29kZT8gKi8KLSAgICAgICAgICAgIGlmIChrd2RlZmF1bHRzID4gMCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZzID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChkZWZzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aGlsZSAoLS1rd2RlZmF1bHRzID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsgLyogZGVmYXVsdCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUE9QKCk7IC8qIGt3IG9ubHkgYXJnIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgaW50IGVyciA9IFB5RGljdF9TZXRJdGVtKGRlZnMsIGtleSwgdik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldEt3RGVmYXVsdHMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwb3NkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5VHVwbGVfTmV3KHBvc2RlZmF1bHRzKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0tcG9zZGVmYXVsdHMgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShkZWZzLCBwb3NkZWZhdWx0cywgUE9QKCkpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldERlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldERlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQVVNIKGZ1bmMpOworICAgICAgICAgICAgUFVTSCgoUHlPYmplY3QgKilmdW5jKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzQzNCw5ICszNDE3LDY4IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEZPUk1BVF9WQUxVRSkgeworICAgICAgICAgICAgLyogSGFuZGxlcyBmLXN0cmluZyB2YWx1ZSBmb3JtYXR0aW5nLiAqLworICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmbXRfc3BlYzsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICooKmNvbnZfZm4pKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaW50IHdoaWNoX2NvbnZlcnNpb24gPSBvcGFyZyAmIEZWQ19NQVNLOworICAgICAgICAgICAgaW50IGhhdmVfZm10X3NwZWMgPSAob3BhcmcgJiBGVlNfTUFTSykgPT0gRlZTX0hBVkVfU1BFQzsKKworICAgICAgICAgICAgZm10X3NwZWMgPSBoYXZlX2ZtdF9zcGVjID8gUE9QKCkgOiBOVUxMOworICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKKworICAgICAgICAgICAgLyogU2VlIGlmIGFueSBjb252ZXJzaW9uIGlzIHNwZWNpZmllZC4gKi8KKyAgICAgICAgICAgIHN3aXRjaCAod2hpY2hfY29udmVyc2lvbikgeworICAgICAgICAgICAgY2FzZSBGVkNfU1RSOiAgIGNvbnZfZm4gPSBQeU9iamVjdF9TdHI7ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19SRVBSOiAgY29udl9mbiA9IFB5T2JqZWN0X1JlcHI7ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRlZDX0FTQ0lJOiBjb252X2ZuID0gUHlPYmplY3RfQVNDSUk7IGJyZWFrOworCisgICAgICAgICAgICAvKiBNdXN0IGJlIDAgKG1lYW5pbmcgbm8gY29udmVyc2lvbiksIHNpbmNlIG9ubHkgZm91cgorICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBhbGxvd2VkIGJ5IChvcGFyZyAmIEZWQ19NQVNLKS4gKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICBjb252X2ZuID0gTlVMTDsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIGEgY29udmVyc2lvbiBmdW5jdGlvbiwgY2FsbCBpdCBhbmQgcmVwbGFjZQorICAgICAgICAgICAgICAgdmFsdWUgd2l0aCB0aGF0IHJlc3VsdC4gT3RoZXJ3aXNlLCBqdXN0IHVzZSB2YWx1ZSwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgY29udmVyc2lvbi4gKi8KKyAgICAgICAgICAgIGlmIChjb252X2ZuICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb252X2ZuKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFsdWUgPSByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHZhbHVlIGlzIGEgdW5pY29kZSBvYmplY3QsIGFuZCB0aGVyZSdzIG5vIGZtdF9zcGVjLAorICAgICAgICAgICAgICAgdGhlbiB3ZSBrbm93IHRoZSByZXN1bHQgb2YgZm9ybWF0KHZhbHVlKSBpcyB2YWx1ZQorICAgICAgICAgICAgICAgaXRzZWxmLiBJbiB0aGF0IGNhc2UsIHNraXAgY2FsbGluZyBmb3JtYXQoKS4gSSBwbGFuIHRvCisgICAgICAgICAgICAgICBtb3ZlIHRoaXMgb3B0aW1pemF0aW9uIGluIHRvIFB5T2JqZWN0X0Zvcm1hdCgpCisgICAgICAgICAgICAgICBpdHNlbGYuICovCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpICYmIGZtdF9zcGVjID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBEbyBub3RoaW5nLCBqdXN0IHRyYW5zZmVyIG93bmVyc2hpcCB0byByZXN1bHQuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEFjdHVhbGx5IGNhbGwgZm9ybWF0KCkuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfRm9ybWF0KHZhbHVlLCBmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBVU0gocmVzdWx0KTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoRVhURU5ERURfQVJHKSB7Ci0gICAgICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgICAgIG9wYXJnID0gb3Bhcmc8PDE2IHwgTkVYVEFSRygpOworICAgICAgICAgICAgaW50IG9sZG9wYXJnID0gb3Bhcmc7CisgICAgICAgICAgICBORVhUT1BBUkcoKTsKKyAgICAgICAgICAgIG9wYXJnIHw9IG9sZG9wYXJnIDw8IDg7CiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCkBAIC0zNDYzLDcgKzM1MDUsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAKIGVycm9yOgotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7CiAKICAgICAgICAgYXNzZXJ0KHdoeSA9PSBXSFlfTk9UKTsKICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKQEAgLTM1NjcsNyArMzYwOCw2IEBACiAKICAgICAgICAgaWYgKHdoeSAhPSBXSFlfTk9UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKGxvb3AxKTsKIAogICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCkBAIC0zNTg2LDcgKzM2MjYsNyBAQAogICAgIGFzc2VydCgocmV0dmFsICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOwogCiBmYXN0X3lpZWxkOgotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTM1OTcsOSArMzYzNywxMSBAQAogICAgICAgICAgICBzdGF0ZSBjYW1lIGludG8gZXhpc3RlbmNlIGluIHRoaXMgZnJhbWUuIChBbiB1bmNhdWdodCBleGNlcHRpb24KICAgICAgICAgICAgd291bGQgaGF2ZSB3aHkgPT0gV0hZX0VYQ0VQVElPTiwgYW5kIHdlIHdvdWxkbid0IGJlIGhlcmUpLiAqLwogICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspCi0gICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmLT5mX2Jsb2Nrc3RhY2tbaV0uYl90eXBlID09IEVYQ0VQVF9IQU5ETEVSKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGkgPT0gZi0+Zl9pYmxvY2spCiAgICAgICAgICAgICAvKiBXZSBkaWQgbm90IGNyZWF0ZSB0aGlzIGV4Y2VwdGlvbi4gKi8KICAgICAgICAgICAgIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwpAQCAtMzY0MCw2ICszNjgyLDggQEAKIAogICAgIC8qIHBvcCBmcmFtZSAqLwogZXhpdF9ldmFsX2ZyYW1lOgorICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9SRVRVUk5fRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKGYpOwogICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgIGYtPmZfZXhlY3V0aW5nID0gMDsKICAgICB0c3RhdGUtPmZyYW1lID0gZi0+Zl9iYWNrOwpAQCAtMzcxMCwxMiArMzc1NCwxMiBAQAogfQogCiBzdGF0aWMgdm9pZAotbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgaW50IG1pc3NpbmcsIGludCBkZWZjb3VudCwKK21pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgbWlzc2luZywgUHlfc3NpemVfdCBkZWZjb3VudCwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKIHsKLSAgICBpbnQgaSwgaiA9IDA7Ci0gICAgaW50IHN0YXJ0LCBlbmQ7Ci0gICAgaW50IHBvc2l0aW9uYWwgPSBkZWZjb3VudCAhPSAtMTsKKyAgICBQeV9zc2l6ZV90IGksIGogPSAwOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKKyAgICBpbnQgcG9zaXRpb25hbCA9IChkZWZjb3VudCAhPSAtMSk7CiAgICAgY29uc3QgY2hhciAqa2luZCA9IHBvc2l0aW9uYWwgPyAicG9zaXRpb25hbCIgOiAia2V5d29yZC1vbmx5IjsKICAgICBQeU9iamVjdCAqbWlzc2luZ19uYW1lczsKIApAQCAtMzc0OCwzMyArMzc5MiwzOSBAQAogfQogCiBzdGF0aWMgdm9pZAotdG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBpbnQgZ2l2ZW4sIGludCBkZWZjb3VudCwgUHlPYmplY3QgKipmYXN0bG9jYWxzKQordG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGdpdmVuLCBQeV9zc2l6ZV90IGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7CiAgICAgaW50IHBsdXJhbDsKLSAgICBpbnQga3dvbmx5X2dpdmVuID0gMDsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGt3b25seV9naXZlbiA9IDA7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICpzaWcsICprd29ubHlfc2lnOworICAgIFB5X3NzaXplX3QgY29fYXJnY291bnQgPSBjby0+Y29fYXJnY291bnQ7CiAKICAgICBhc3NlcnQoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpID09IDApOwogICAgIC8qIENvdW50IG1pc3Npbmcga2V5d29yZC1vbmx5IGFyZ3MuICovCi0gICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspCi0gICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgIGZvciAoaSA9IGNvX2FyZ2NvdW50OyBpIDwgY29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykgeworICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkgewogICAgICAgICAgICAga3dvbmx5X2dpdmVuKys7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGRlZmNvdW50KSB7Ci0gICAgICAgIGludCBhdGxlYXN0ID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgYXRsZWFzdCA9IGNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CiAgICAgICAgIHBsdXJhbCA9IDE7Ci0gICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICVkIHRvICVkIiwgYXRsZWFzdCwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJXpkIHRvICV6ZCIsIGF0bGVhc3QsIGNvX2FyZ2NvdW50KTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHBsdXJhbCA9IGNvLT5jb19hcmdjb3VudCAhPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJWQiLCBjby0+Y29fYXJnY291bnQpOworICAgICAgICBwbHVyYWwgPSAoY29fYXJnY291bnQgIT0gMSk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlemQiLCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGlmIChzaWcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChrd29ubHlfZ2l2ZW4pIHsKLSAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOwotICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCBnaXZlbiAhPSAxID8gInMiIDogIiIsIGt3b25seV9naXZlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKKyAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlemQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuICE9IDEgPyAicyIgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOwogICAgICAgICBpZiAoa3dvbmx5X3NpZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2lnKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3ODYsNyArMzgzNiw3IEBACiAgICAgICAgIGFzc2VydChrd29ubHlfc2lnICE9IE5VTEwpOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJVUgJXMgZ2l2ZW4iLAorICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICV6ZCVVICVzIGdpdmVuIiwKICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgIHNpZywKICAgICAgICAgICAgICAgICAgcGx1cmFsID8gInMiIDogIiIsCkBAIC0zODAzLDIwICszODUzLDIyIEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoUHlPYmplY3QgKl9jbywgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgaW50IGFyZ2NvdW50LCBQeU9iamVjdCAqKmt3cywgaW50IGt3Y291bnQsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSwKKyAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IGFyZ2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsIFB5T2JqZWN0ICoqa3dhcmdzLAorICAgICAgICAgICBQeV9zc2l6ZV90IGt3Y291bnQsIGludCBrd3N0ZXAsCisgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCiAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipmcmVldmFyczsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqeCwgKnU7Ci0gICAgaW50IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7Ci0gICAgaW50IGk7Ci0gICAgaW50IG4gPSBhcmdjb3VudDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICprd2RpY3Q7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTM4MjQsMzYgKzM4NzYsNTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgLyogQ3JlYXRlIHRoZSBmcmFtZSAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgYXNzZXJ0KHRzdGF0ZSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgbG9jYWxzKTsKLSAgICBpZiAoZiA9PSBOVUxMKQorICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICB9CiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwogCi0gICAgLyogUGFyc2UgYXJndW1lbnRzLiAqLworICAgIC8qIENyZWF0ZSBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgcGFyYW1ldGVycyAoKiprd2FncykgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKICAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGkgPSB0b3RhbF9hcmdzOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKKyAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpCisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgLyogQ29weSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGxvY2FsIHZhcmlhYmxlcyAqLworICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkgewogICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbiA9IGFyZ2NvdW50OworICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIHggPSBhcmdzW2ldOwogICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgIFNFVExPQ0FMKGksIHgpOwogICAgIH0KKworICAgIC8qIFBhY2sgb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byB0aGUgKmFyZ3MgYXJndW1lbnQgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewogICAgICAgICB1ID0gUHlUdXBsZV9OZXcoYXJnY291bnQgLSBuKTsKLSAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CiAgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOwogICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewogICAgICAgICAgICAgeCA9IGFyZ3NbaV07CkBAIC0zODYxLDY5ICszOTI3LDgyIEBACiAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgeworCisgICAgLyogSGFuZGxlIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBhcyB0d28gc3RyaWRlZCBhcnJheXMgKi8KKyAgICBrd2NvdW50ICo9IGt3c3RlcDsKKyAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSArPSBrd3N0ZXApIHsKICAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKLSAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dzWzIqaSArIDFdOwotICAgICAgICBpbnQgajsKKyAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd25hbWVzW2ldOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd2FyZ3NbaV07CisgICAgICAgIFB5X3NzaXplX3QgajsKKwogICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCiAgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLwogICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpZiAobmFtZSA9PSBrZXl3b3JkKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLwogICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woIGtleXdvcmQsIG5hbWUsIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwga2V5d29yZCk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKKwogICAgICAga3dfZm91bmQ6CiAgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKICAgICB9CisKKyAgICAvKiBDaGVjayB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCiAgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50ICYmICEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKICAgICAgICAgdG9vX21hbnlfcG9zaXRpb25hbChjbywgYXJnY291bnQsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKworICAgIC8qIEFkZCBtaXNzaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzIChjb3B5IGRlZmF1bHQgdmFsdWVzIGZyb20gZGVmcykgKi8KICAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOwotICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykKLSAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKQorICAgICAgICBQeV9zc2l6ZV90IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbWlzc2luZysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChtaXNzaW5nKSB7CiAgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgZGVmY291bnQsIGZhc3Rsb2NhbHMpOwogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMzk0MCw4ICs0MDE5LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBrZXl3b3JkIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGt3ZGVmcykgKi8KICAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgewotICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CiAgICAgICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IHRvdGFsX2FyZ3M7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKQEAgLTM5ODIsMTMgKzQwNjMsMTYgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKICAgICB9CisKKyAgICAvKiBDb3B5IGNsb3N1cmUgdmFyaWFibGVzIHRvIGZyZWUgdmFyaWFibGVzICovCiAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKG8pOwogICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CiAgICAgfQogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgLyogSGFuZGxlIGdlbmVyYXRvci9jb3JvdXRpbmUvYXN5bmNocm9ub3VzIGdlbmVyYXRvciAqLworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBQeU9iamVjdCAqZ2VuOwogICAgICAgICBQeU9iamVjdCAqY29yb193cmFwcGVyID0gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKICAgICAgICAgaW50IGlzX2Nvcm8gPSBjby0+Y29fZmxhZ3MgJiBDT19DT1JPVVRJTkU7CkBAIC00MDEzLDYgKzQwOTcsOCBAQAogICAgICAgICAgKiBhbmQgcmV0dXJuIHRoYXQgYXMgdGhlIHZhbHVlLiAqLwogICAgICAgICBpZiAoaXNfY29ybykgewogICAgICAgICAgICAgZ2VuID0gUHlDb3JvX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICBnZW4gPSBQeUFzeW5jR2VuX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBnZW4gPSBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9CkBAIC00MDUyLDggKzQxMzgsMTAgQEAKICAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQogewogICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoX2NvLCBnbG9iYWxzLCBsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwga3dzLCBrd2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsIGt3ZGVmcywgY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzLCBrd3MgKyAxLCBrd2NvdW50LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RlZnMsIGNsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIApAQCAtNDMxMiw3ICs0NDAwLDcgQEAKIAogI2lmZGVmIExMVFJBQ0UKIHN0YXRpYyBpbnQKLXBydHJhY2UoUHlPYmplY3QgKnYsIGNoYXIgKnN0cikKK3BydHJhY2UoUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBwcmludGYoIiVzICIsIHN0cik7CiAgICAgaWYgKFB5T2JqZWN0X1ByaW50KHYsIHN0ZG91dCwgMCkgIT0gMCkKQEAgLTQ0ODksNiArNDU3NywzOCBAQAogICAgIHJldHVybiB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOwogfQogCit2b2lkCitfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKFB5T2JqZWN0ICpmaXJzdGl0ZXIpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIFB5X1hJTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeV9YU0VUUkVGKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciwgZmlyc3RpdGVyKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlcjsKK30KKwordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihQeU9iamVjdCAqZmluYWxpemVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpbmFsaXplcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIsIGZpbmFsaXplcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXI7Cit9CisKIFB5T2JqZWN0ICoKIFB5RXZhbF9HZXRCdWlsdGlucyh2b2lkKQogewpAQCAtNDU2MSwxMCArNDY4MSw4IEBACiAgICBUaGUgYXJnIG11c3QgYmUgYSB0dXBsZSBvciBOVUxMLiAgVGhlIGt3IG11c3QgYmUgYSBkaWN0IG9yIE5VTEwuICovCiAKIFB5T2JqZWN0ICoKLVB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQogI2lmZGVmIFB5X0RFQlVHCiAgICAgLyogUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KICAgICAgICBzZXQuIEl0IHJhaXNlcyBhIG5ldyBleGNlcHRpb24gaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCBvciBpZgpAQCAtNDU3MiwzMCArNDY5MCwyMyBAQAogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIAotICAgIGlmIChhcmcgPT0gTlVMTCkgewotICAgICAgICBhcmcgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2FyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpKSB7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBsaXN0IG11c3QgYmUgYSB0dXBsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYoYXJnKTsKIAotICAgIGlmIChrdyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3cpKSB7CisgICAgaWYgKGt3YXJncyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3dhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgbGlzdCBtdXN0IGJlIGEgZGljdGlvbmFyeSIpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmcsIGt3KTsKLSAgICBQeV9ERUNSRUYoYXJnKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywga3dhcmdzKTsKIH0KIAogY29uc3QgY2hhciAqCkBAIC00NjA0LDcgKzQ3MTUsNyBAQAogICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSkKICAgICAgICAgcmV0dXJuIFB5RXZhbF9HZXRGdW5jTmFtZShQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYykpOwogICAgIGVsc2UgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKCgoUHlGdW5jdGlvbk9iamVjdCopZnVuYyktPmZ1bmNfbmFtZSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfQXNVVEY4KCgoUHlGdW5jdGlvbk9iamVjdCopZnVuYyktPmZ1bmNfbmFtZSk7CiAgICAgZWxzZSBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpCiAgICAgICAgIHJldHVybiAoKFB5Q0Z1bmN0aW9uT2JqZWN0KilmdW5jKS0+bV9tbC0+bWxfbmFtZTsKICAgICBlbHNlCkBAIC00NjI0LDIxICs0NzM1LDYgQEAKICAgICAgICAgcmV0dXJuICIgb2JqZWN0IjsKIH0KIAotc3RhdGljIHZvaWQKLWVycl9hcmdzKFB5T2JqZWN0ICpmdW5jLCBpbnQgZmxhZ3MsIGludCBuYXJncykKLXsKLSAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUykKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYyktPm1fbWwtPm1sX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBuYXJncyk7Ci0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotfQotCiAjZGVmaW5lIENfVFJBQ0UoeCwgY2FsbCkgXAogaWYgKHRzdGF0ZS0+dXNlX3RyYWNpbmcgJiYgdHN0YXRlLT5jX3Byb2ZpbGVmdW5jKSB7IFwKICAgICBpZiAoY2FsbF90cmFjZSh0c3RhdGUtPmNfcHJvZmlsZWZ1bmMsIHRzdGF0ZS0+Y19wcm9maWxlb2JqLCBcCkBAIC00NjcxLDYwICs0NzY3LDI1IEBACiAgICAgfQogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG9wYXJnCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgICAgICAsIHVpbnQ2NCogcGludHIwLCB1aW50NjQqIHBpbnRyMQotI2VuZGlmCi0gICAgICAgICAgICAgICAgKQorY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgUHlfc3NpemVfdCBvcGFyZywgUHlPYmplY3QgKmt3bmFtZXMpCiB7Ci0gICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwotICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gbiAtIDE7CisgICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gb3BhcmcgLSAxOwogICAgIFB5T2JqZWN0ICpmdW5jID0gKnBmdW5jOwogICAgIFB5T2JqZWN0ICp4LCAqdzsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmFyZ3MgPSBvcGFyZyAtIG5rd2FyZ3M7CisgICAgUHlPYmplY3QgKipzdGFjazsKIAogICAgIC8qIEFsd2F5cyBkaXNwYXRjaCBQeUNGdW5jdGlvbiBmaXJzdCwgYmVjYXVzZSB0aGVzZSBhcmUKICAgICAgICBwcmVzdW1lZCB0byBiZSB0aGUgbW9zdCBmcmVxdWVudCBjYWxsYWJsZSBvYmplY3QuCiAgICAgKi8KLSAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykgJiYgbmsgPT0gMCkgewotICAgICAgICBpbnQgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYyk7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAKICAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICAgICAgaWYgKGZsYWdzICYgKE1FVEhfTk9BUkdTIHwgTUVUSF9PKSkgewotICAgICAgICAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYoZnVuYyk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUyAmJiBuYSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsTlVMTCkpOwogCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBNRVRIX08gJiYgbmEgPT0gMSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsYXJnKSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJfYXJncyhmdW5jLCBmbGFncywgbmEpOwotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKmNhbGxhcmdzOwotICAgICAgICAgICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICAgICAgICAgIGlmIChjYWxsYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMCk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsY2FsbGFyZ3MsTlVMTCkpOwotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKyAgICAgICAgQ19UUkFDRSh4LCBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CkBAIC00NzM2LDIxICs0Nzk3LDI2IEBACiAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgbisrOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5hcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHBwX3N0YWNrLCBuLCBuYSwgbmspOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB4ID0gZG9fY2FsbChmdW5jLCBwcF9zdGFjaywgbmEsIG5rKTsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgfQogCi0gICAgICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKworICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICAgICAgeCA9IGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHggPSBfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIH0KIAorICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKwogICAgIC8qIENsZWFyIHRoZSBzdGFjayBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgQWxzbyByZW1vdmVzCiAgICAgICAgdGhlIGFyZ3VtZW50cyBpbiBjYXNlIHRoZXkgd2VyZW4ndCBjb25zdW1lZCBhbHJlYWR5CiAgICAgICAgKGZhc3RfZnVuY3Rpb24oKSBhbmQgZXJyX2FyZ3MoKSBsZWF2ZSB0aGVtIG9uIHRoZSBzdGFjaykuCkBAIC00NzYxLDcgKzQ4MjcsNiBAQAogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KIAotICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDc3NCwxNTkgKzQ4MzksMTk3IEBACiAgICBkb25lIGJlZm9yZSBldmFsdWF0aW5nIHRoZSBmcmFtZS4KICovCiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxzKQoreworICAgIFB5RnJhbWVPYmplY3QgKmY7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHM7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOworICAgIGFzc2VydChnbG9iYWxzICE9IE5VTEwpOworICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAorICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcworICAgICAgIHRha2UgYnVpbHRpbnMgd2l0aG91dCBzYW5pdHkgY2hlY2tpbmcgdGhlbS4KKyAgICAgICAqLworICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7CisgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIE5VTEwpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRigqYXJncyk7CisgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqYXJncysrOworICAgIH0KKyAgICByZXN1bHQgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKKworICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisgICAgUHlfREVDUkVGKGYpOworICAgIC0tdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QgKgotZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBuLCBpbnQgbmEsIGludCBuaykKK2Zhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSAoUHlDb2RlT2JqZWN0ICopUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKTsKICAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKLSAgICBQeU9iamVjdCAqa3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKLSAgICBQeU9iamVjdCAqKmQgPSBOVUxMOwotICAgIGludCBuZCA9IDA7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlfc3NpemVfdCBuZDsKKworICAgIGFzc2VydChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KIAogICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKICAgICBQQ0FMTChQQ0FMTF9GQVNUX0ZVTkNUSU9OKTsKLSAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuICYmCi0gICAgICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmIG5rPT0wICYmCi0gICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkgewotICAgICAgICBQeUZyYW1lT2JqZWN0ICpmOwotICAgICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzLCAqKnN0YWNrOwotICAgICAgICBpbnQgaTsKIAotICAgICAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOwotICAgICAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKLSAgICAgICAgLyogWFhYIFBlcmhhcHMgd2Ugc2hvdWxkIGNyZWF0ZSBhIHNwZWNpYWxpemVkCi0gICAgICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcwotICAgICAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCi0gICAgICAgICovCi0gICAgICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKLSAgICAgICAgaWYgKGYgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7Ci0gICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRigqc3RhY2spOwotICAgICAgICAgICAgZmFzdGxvY2Fsc1tpXSA9ICpzdGFjaysrOworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBua3dhcmdzID09IDAgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIG5hcmdzLCBnbG9iYWxzKTsKICAgICAgICAgfQotICAgICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKLSAgICAgICAgKyt0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgUHlfREVDUkVGKGYpOwotICAgICAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOwotICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICBlbHNlIGlmIChuYXJncyA9PSAwICYmIGFyZ2RlZnMgIT0gTlVMTAorICAgICAgICAgICAgICAgICAmJiBjby0+Y29fYXJnY291bnQgPT0gUHlfU0laRShhcmdkZWZzKSkgeworICAgICAgICAgICAgLyogZnVuY3Rpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLCBidXQgYWxsIHBhcmFtZXRlcnMgaGF2ZQorICAgICAgICAgICAgICAgYSBkZWZhdWx0IHZhbHVlOiB1c2UgZGVmYXVsdCB2YWx1ZXMgYXMgYXJndW1lbnRzIC4qLworICAgICAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CiAgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKICAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CiAgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKICAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOwogICAgIH0KLSAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHF1YWxuYW1lKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKm9yaWdfa3dkaWN0LCBpbnQgbmssIFB5T2JqZWN0ICoqKnBwX3N0YWNrLAotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKLXsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBpZiAob3JpZ19rd2RpY3QgPT0gTlVMTCkKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgIGVsc2UgewotICAgICAgICBrd2RpY3QgPSBQeURpY3RfQ29weShvcmlnX2t3ZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcmlnX2t3ZGljdCk7CisgICAgICAgIGQgPSBOVUxMOworICAgICAgICBuZCA9IDA7CiAgICAgfQotICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmsgPj0gMCkgewotICAgICAgICBpbnQgZXJyOwotICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5T2JqZWN0ICprZXkgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgZ290IG11bHRpcGxlIHZhbHVlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MgPyAmUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCAwKSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayArIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmt3YXJncywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIChpbnQpbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUsIG5hbWUsIHF1YWxuYW1lKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgcmV0dXJuIGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOworICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKmt3dHVwbGUsICoqazsKKyAgICBQeU9iamVjdCAqKmQ7CisgICAgUHlfc3NpemVfdCBuZCwgbms7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CisgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7CisKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYKKyAgICAgICAgKGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3YXJncykgPT0gMCkgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuYXJncykgeworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBhcmdzLCBuYXJncywgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIGFyZ3MgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgUHlfU0laRShhcmdkZWZzKSwgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa3dhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgICAgIG5rID0gUHlEaWN0X1NpemUoa3dhcmdzKTsKKworICAgICAgICBrd3R1cGxlID0gUHlUdXBsZV9OZXcoMiAqIG5rKTsKKyAgICAgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgayA9ICZQeVR1cGxlX0dFVF9JVEVNKGt3dHVwbGUsIDApOworICAgICAgICBwb3MgPSBpID0gMDsKKyAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtbaV0sICZrW2krMV0pKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpXSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpKzFdKTsKKyAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgfQorICAgICAgICBuayA9IGkgLyAyOwogICAgIH0KLSAgICByZXR1cm4ga3dkaWN0OworICAgIGVsc2UgeworICAgICAgICBrd3R1cGxlID0gTlVMTDsKKyAgICAgICAgayA9IE5VTEw7CisgICAgICAgIG5rID0gMDsKKyAgICB9CisKKyAgICBrd2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9LV19ERUZBVUxUUyhmdW5jKTsKKyAgICBjbG9zdXJlID0gUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKTsKKyAgICBuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIHF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKKworICAgIGlmIChhcmdkZWZzICE9IE5VTEwpIHsKKyAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOworICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLCAoUHlPYmplY3QgKilOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaywgayArIDEsIG5rLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBuZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgUHlfWERFQ1JFRihrd3R1cGxlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdXBkYXRlX3N0YXJfYXJncyhpbnQgbnN0YWNrLCBpbnQgbnN0YXIsIFB5T2JqZWN0ICpzdGFyYXJnLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKipwcF9zdGFjaykKK2RvX2NhbGxfY29yZShQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmNhbGxhcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewotICAgIFB5T2JqZWN0ICpjYWxsYXJncywgKnc7Ci0KLSAgICBjYWxsYXJncyA9IFB5VHVwbGVfTmV3KG5zdGFjayArIG5zdGFyKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKG5zdGFyKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnN0YXI7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKmEgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXJhcmcsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrICsgaSwgYSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKC0tbnN0YWNrID49IDApIHsKLSAgICAgICAgdyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGNhbGxhcmdzOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9hcmdzKFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEpCi17Ci0gICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhuYSk7Ci0gICAgUHlPYmplY3QgKnc7Ci0KLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3aGlsZSAoLS1uYSA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgbmEsIHcpOwotICAgIH0KLSAgICByZXR1cm4gYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRvX2NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKE5VTEwsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gY2FsbF9mYWlsOwotICAgIH0KLSAgICBjYWxsYXJncyA9IGxvYWRfYXJncyhwcF9zdGFjaywgbmEpOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGNhbGxfZmFpbDsKICNpZmRlZiBDQUxMX1BST0ZJTEUKICAgICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHRvIGxvb2sgYXQgdGhlIHR5cGUgb2YgZnVuYyB0bwogICAgICAgIHVwZGF0ZSB0aGUgY2FsbCBzdGF0cyBwcm9wZXJseS4gIERvIGl0IGhlcmUgc28gYXMgdG8gYXZvaWQKQEAgLTQ5NDMsMTE1ICs1MDQ2LDE2IEBACiAgICAgZWxzZQogICAgICAgICBQQ0FMTChQQ0FMTF9PVEhFUik7CiAjZW5kaWYKKwogICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWNhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWV4dF9kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IGZsYWdzLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBpbnQgbnN0YXIgPSAwOwotICAgIFB5T2JqZWN0ICpjYWxsYXJncyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnN0YXJhcmcgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX0tXKSB7Ci0gICAgICAgIGt3ZGljdCA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soa3dkaWN0KSkgewotICAgICAgICAgICAgUHlPYmplY3QgKmQ7Ci0gICAgICAgICAgICBkID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2RpY3QpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0Ci0gICAgICAgICAgICAgICAgICogdG8gZ2V0ICdrZXlzJyBhdHRyaWJ1dGUpIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAotICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RpY3QtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIGt3ZGljdCA9IGQ7Ci0gICAgICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7CiAgICAgfQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhrd2RpY3QsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKSB7Ci0gICAgICAgIHN0YXJhcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnQgPSBOVUxMOwotICAgICAgICAgICAgaWYgKFB5X1RZUEUoc3RhcmFyZyktPnRwX2l0ZXIgPT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHQgPSBQeVNlcXVlbmNlX1R1cGxlKHN0YXJhcmcpOwotICAgICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFyYXJnKTsKLSAgICAgICAgICAgIHN0YXJhcmcgPSB0OwotICAgICAgICB9Ci0gICAgICAgIG5zdGFyID0gUHlUdXBsZV9HRVRfU0laRShzdGFyYXJnKTsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSB1cGRhdGVfc3Rhcl9hcmdzKG5hLCBuc3Rhciwgc3RhcmFyZywgcHBfc3RhY2spOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0jaWZkZWYgQ0FMTF9QUk9GSUxFCi0gICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KLSAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCi0gICAgICAgZXhwb3NpbmcgdGhlIGNhbGwgc3RhdHMgbWFjaGluZXJ5IG91dHNpZGUgY2V2YWwuYwotICAgICovCi0gICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKLSAgICBlbHNlIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfTUVUSE9EKTsKLSAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX1RZUEUpOwotICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9DRlVOQ1RJT04pOwotICAgIGVsc2UKLSAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwotI2VuZGlmCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIENfVFJBQ0UocmVzdWx0LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwotZXh0X2NhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKQEAgLTUxNDEsNiArNTE0NSw0NiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgoraW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpmcm9tbGlzdCwgUHlPYmplY3QgKmxldmVsKQoreworICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOworICAgIFB5T2JqZWN0ICppbXBvcnRfZnVuYywgKnJlczsKKyAgICBQeU9iamVjdCogc3RhY2tbNV07CisKKyAgICBpbXBvcnRfZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOworICAgIGlmIChpbXBvcnRfZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEZhc3QgcGF0aCBmb3Igbm90IG92ZXJsb2FkZWQgX19pbXBvcnRfXy4gKi8KKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5pbXBvcnRfZnVuYykgeworICAgICAgICBpbnQgaWxldmVsID0gX1B5TG9uZ19Bc0ludChsZXZlbCk7CisgICAgICAgIGlmIChpbGV2ZWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgaWxldmVsKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoaW1wb3J0X2Z1bmMpOworCisgICAgc3RhY2tbMF0gPSBuYW1lOworICAgIHN0YWNrWzFdID0gZi0+Zl9nbG9iYWxzOworICAgIHN0YWNrWzJdID0gZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FsczsKKyAgICBzdGFja1szXSA9IGZyb21saXN0OworICAgIHN0YWNrWzRdID0gbGV2ZWw7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGltcG9ydF9mdW5jLCBzdGFjaywgNSk7CisgICAgUHlfREVDUkVGKGltcG9ydF9mdW5jKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogaW1wb3J0X2Zyb20oUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICp4OwpAQCAtNTI0NSw3ICs1Mjg5LDcgQEAKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuOwogCi0gICAgb2JqX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2JqKTsKKyAgICBvYmpfc3RyID0gUHlVbmljb2RlX0FzVVRGOChvYmopOwogICAgIGlmICghb2JqX3N0cikKICAgICAgICAgcmV0dXJuOwogCkBAIC01Mjc2LDcgKzUzMjAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsCi0gICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCisgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIGNvbnN0IF9QeV9DT0RFVU5JVCAqbmV4dF9pbnN0cikKIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeV9SRUZDTlQodikgPT0gMikgewpAQCAtNTI4NiwxMCArNTMzMCwxMSBAQAogICAgICAgICAgKiAndmFyaWFibGUnLiAgV2UgdHJ5IHRvIGRlbGV0ZSB0aGUgdmFyaWFibGUgbm93IHRvIHJlZHVjZQogICAgICAgICAgKiB0aGUgcmVmY250IHRvIDEuCiAgICAgICAgICAqLwotICAgICAgICBzd2l0Y2ggKCpuZXh0X2luc3RyKSB7CisgICAgICAgIGludCBvcGNvZGUsIG9wYXJnOworICAgICAgICBORVhUT1BBUkcoKTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBTVE9SRV9GQVNUOgogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgb3BhcmcgPSBQRUVLQVJHKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgICAgICAgICBpZiAoR0VUTE9DQUwob3BhcmcpID09IHYpCiAgICAgICAgICAgICAgICAgU0VUTE9DQUwob3BhcmcsIE5VTEwpOwpAQCAtNTI5OSw3ICs1MzQ0LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKipmcmVldmFycyA9IChmLT5mX2xvY2Fsc3BsdXMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2NvZGUtPmNvX25sb2NhbHMpOwotICAgICAgICAgICAgUHlPYmplY3QgKmMgPSBmcmVldmFyc1tQRUVLQVJHKCldOworICAgICAgICAgICAgUHlPYmplY3QgKmMgPSBmcmVldmFyc1tvcGFyZ107CiAgICAgICAgICAgICBpZiAoUHlDZWxsX0dFVChjKSA9PSB2KQogICAgICAgICAgICAgICAgIFB5Q2VsbF9TZXQoYywgTlVMTCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUzMDcsNyArNTM1Miw3IEBACiAgICAgICAgIGNhc2UgU1RPUkVfTkFNRToKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzID0gZi0+Zl9jb2RlLT5jb19uYW1lczsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgUEVFS0FSRygpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscyA9IGYtPmZfbG9jYWxzOwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGxvY2FscykgJiYKICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpID09IHYpIHsKQEAgLTUzNjcsMyArNTQxMiw3OSBAQAogfQogCiAjZW5kaWYKKworUHlfc3NpemVfdAorX1B5RXZhbF9SZXF1ZXN0Q29kZUV4dHJhSW5kZXgoZnJlZWZ1bmMgZnJlZSkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgIFB5X3NzaXplX3QgbmV3X2luZGV4OworCisgICAgaWYgKHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9PSBNQVhfQ09fRVhUUkFfVVNFUlMgLSAxKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbmV3X2luZGV4ID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50Kys7CisgICAgdHN0YXRlLT5jb19leHRyYV9mcmVlZnVuY3NbbmV3X2luZGV4XSA9IGZyZWU7CisgICAgcmV0dXJuIG5ld19pbmRleDsKK30KKworc3RhdGljIHZvaWQKK2R0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIGNoYXIqIGZpbGVuYW1lOworICAgIGNoYXIqIGZ1bmNuYW1lOworICAgIGludCBsaW5lbm87CisKKyAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgZnVuY25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShmLT5mX2NvZGUsIGYtPmZfbGFzdGkpOworCisgICAgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm8pOworfQorCitzdGF0aWMgdm9pZAorZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIGNoYXIqIGZpbGVuYW1lOworICAgIGNoYXIqIGZ1bmNuYW1lOworICAgIGludCBsaW5lbm87CisKKyAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgZnVuY25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShmLT5mX2NvZGUsIGYtPmZfbGFzdGkpOworCisgICAgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOKGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKK30KKworLyogRFRyYWNlIGVxdWl2YWxlbnQgb2YgbWF5YmVfY2FsbF9saW5lX3RyYWNlLiAqLworc3RhdGljIHZvaWQKK21heWJlX2R0cmFjZV9saW5lKFB5RnJhbWVPYmplY3QgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgaW50ICppbnN0cl9sYiwgaW50ICppbnN0cl91YiwgaW50ICppbnN0cl9wcmV2KQoreworICAgIGludCBsaW5lID0gZnJhbWUtPmZfbGluZW5vOworICAgIGNoYXIgKmNvX2ZpbGVuYW1lLCAqY29fbmFtZTsKKworICAgIC8qIElmIHRoZSBsYXN0IGluc3RydWN0aW9uIGV4ZWN1dGVkIGlzbid0IGluIHRoZSBjdXJyZW50CisgICAgICAgaW5zdHJ1Y3Rpb24gd2luZG93LCByZXNldCB0aGUgd2luZG93LgorICAgICovCisgICAgaWYgKGZyYW1lLT5mX2xhc3RpIDwgKmluc3RyX2xiIHx8IGZyYW1lLT5mX2xhc3RpID49ICppbnN0cl91YikgeworICAgICAgICBQeUFkZHJQYWlyIGJvdW5kczsKKyAgICAgICAgbGluZSA9IF9QeUNvZGVfQ2hlY2tMaW5lTnVtYmVyKGZyYW1lLT5mX2NvZGUsIGZyYW1lLT5mX2xhc3RpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvdW5kcyk7CisgICAgICAgICppbnN0cl9sYiA9IGJvdW5kcy5hcF9sb3dlcjsKKyAgICAgICAgKmluc3RyX3ViID0gYm91bmRzLmFwX3VwcGVyOworICAgIH0KKyAgICAvKiBJZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBmYWxscyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIG9yIGlmCisgICAgICAgaXQgcmVwcmVzZW50cyBhIGp1bXAgYmFja3dhcmRzLCB1cGRhdGUgdGhlIGZyYW1lJ3MgbGluZQorICAgICAgIG51bWJlciBhbmQgY2FsbCB0aGUgdHJhY2UgZnVuY3Rpb24uICovCisgICAgaWYgKGZyYW1lLT5mX2xhc3RpID09ICppbnN0cl9sYiB8fCBmcmFtZS0+Zl9sYXN0aSA8ICppbnN0cl9wcmV2KSB7CisgICAgICAgIGZyYW1lLT5mX2xpbmVubyA9IGxpbmU7CisgICAgICAgIGNvX2ZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgICAgIGlmICghY29fZmlsZW5hbWUpCisgICAgICAgICAgICBjb19maWxlbmFtZSA9ICI/IjsKKyAgICAgICAgY29fbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgIGlmICghY29fbmFtZSkKKyAgICAgICAgICAgIGNvX25hbWUgPSAiPyI7CisgICAgICAgIFB5RFRyYWNlX0xJTkUoY29fZmlsZW5hbWUsIGNvX25hbWUsIGxpbmUpOworICAgIH0KKyAgICAqaW5zdHJfcHJldiA9IGZyYW1lLT5mX2xhc3RpOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsX2dpbC5oIGIvUHl0aG9uL2NldmFsX2dpbC5oCmluZGV4IDhkMzhlZTkuLmEzYjQ1MGIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbF9naWwuaAorKysgYi9QeXRob24vY2V2YWxfZ2lsLmgKQEAgLTE3OCw3ICsxNzgsNyBAQAogICAgICAgICAvKiBTdWItaW50ZXJwcmV0ZXIgc3VwcG9ydDogdGhyZWFkcyBtaWdodCBoYXZlIGJlZW4gc3dpdGNoZWQKICAgICAgICAgICAgdW5kZXIgb3VyIGZlZXQgdXNpbmcgUHlUaHJlYWRTdGF0ZV9Td2FwKCkuIEZpeCB0aGUgR0lMIGxhc3QKICAgICAgICAgICAgaG9sZGVyIHZhcmlhYmxlIHNvIHRoYXQgb3VyIGhldXJpc3RpY3Mgd29yay4gKi8KLSAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIChQeV91aW50cHRyX3QpdHN0YXRlKTsKKyAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsICh1aW50cHRyX3QpdHN0YXRlKTsKICAgICB9CiAKICAgICBNVVRFWF9MT0NLKGdpbF9tdXRleCk7CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICBfUHlfQU5OT1RBVEVfUldMT0NLX0FDUVVJUkVEKCZnaWxfbG9ja2VkLCAvKmlzX3dyaXRlPSovMSk7CiAKICAgICBpZiAodHN0YXRlICE9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSkgewotICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKFB5X3VpbnRwdHJfdCl0c3RhdGUpOworICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKHVpbnRwdHJfdCl0c3RhdGUpOwogICAgICAgICArK2dpbF9zd2l0Y2hfbnVtYmVyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmggYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaAppbmRleCA0ZTJiMWYxLi5jODhkZWVmIDEwMDY0NAotLS0gYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaAorKysgYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaApAQCAtOTMsOCArOTMsOSBAQAogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLAotICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpCisgICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZm9ybWF0X2ltcGwobW9kdWxlLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOwogCiBleGl0OgpAQCAtMTE5LDggKzEyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Nocl9pbXBsKG1vZHVsZSwgaSk7CiAKIGV4aXQ6CkBAIC0xNDYsNyArMTQ4LDcgQEAKICJpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuIik7CiAKICNkZWZpbmUgQlVJTFRJTl9DT01QSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fY29tcGlsZV9fZG9jX199LAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfRkFTVENBTEwsIGJ1aWx0aW5fY29tcGlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9jb21waWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmZpbGVuYW1lLApAQCAtMTU0LDEwICsxNTYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgIGludCBvcHRpbWl6ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitidWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzb3VyY2U7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIGNvbnN0IGNoYXIgKm1vZGU7CkBAIC0xNjUsOSArMTY4LDEwIEBACiAgICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7CiAgICAgaW50IG9wdGltaXplID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY29tcGlsZV9pbXBsKG1vZHVsZSwgc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCwgb3B0aW1pemUpOwogCiBleGl0OgpAQCAtMTk1LDggKzE5OSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkaXZtb2QiLAogICAgICAgICAyLCAyLAotICAgICAgICAmeCwgJnkpKQorICAgICAgICAmeCwgJnkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kaXZtb2RfaW1wbChtb2R1bGUsIHgsIHkpOwogCiBleGl0OgpAQCAtMjMyLDggKzIzNyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJldmFsIiwKICAgICAgICAgMSwgMywKLSAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V2YWxfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKIAogZXhpdDoKQEAgLTI2OSw4ICsyNzUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXhlYyIsCiAgICAgICAgIDEsIDMsCi0gICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9leGVjX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAKIGV4aXQ6CkBAIC0zMjEsOCArMzI4LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImhhc2F0dHIiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgICZvYmosICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faGFzYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKIAogZXhpdDoKQEAgLTM2Niw4ICszNzQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0YXR0ciIsCiAgICAgICAgIDMsIDMsCi0gICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKQorICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc2V0YXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTcsOCArNDA2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRlbGF0dHIiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgICZvYmosICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGVsYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKIAogZXhpdDoKQEAgLTUwNiw4ICs1MTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwKICAgICAgICAgMiwgMywKLSAgICAgICAgJngsICZ5LCAmeikpCisgICAgICAgICZ4LCAmeSwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9wb3dfaW1wbChtb2R1bGUsIHgsIHksIHopOwogCiBleGl0OgpAQCAtNTQwLDggKzU1MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwcm9tcHQpKQorICAgICAgICAmcHJvbXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faW5wdXRfaW1wbChtb2R1bGUsIHByb21wdCk7CiAKIGV4aXQ6CkBAIC01ODQsOCArNTk2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN1bSIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkKKyAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zdW1faW1wbChtb2R1bGUsIGl0ZXJhYmxlLCBzdGFydCk7CiAKIGV4aXQ6CkBAIC02MTgsOCArNjMxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzaW5zdGFuY2UiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICAmb2JqLCAmY2xhc3Nfb3JfdHVwbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc2luc3RhbmNlX2ltcGwobW9kdWxlLCBvYmosIGNsYXNzX29yX3R1cGxlKTsKIAogZXhpdDoKQEAgLTY1MiwxMSArNjY2LDEyIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJmNscywgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgJmNscywgJmNsYXNzX29yX3R1cGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNzdWJjbGFzc19pbXBsKG1vZHVsZSwgY2xzLCBjbGFzc19vcl90dXBsZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MDMxMjcwYjY0Yzc5NGI4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzQ4M2RlYjc1ODA1ZjdjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaCBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaAppbmRleCAwNWQ3OWFjLi5iMzQ2MGIwIDEwMDY0NAotLS0gYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKKysrIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCkBAIC04OSw4ICs4OSw5IEBACiAgICAgUHlPYmplY3QgKnBhdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hVTpfZml4X2NvX2ZpbGVuYW1lIiwKLSAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKQorICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOwogCiBleGl0OgpAQCAtMTQyLDggKzE0Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xNjgsOCArMTcwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTE5NCw4ICsxOTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjIwLDggKzIyNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yNDYsOCArMjUxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTI3Nyw4ICsyODMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiY3JlYXRlX2R5bmFtaWMiLAogICAgICAgICAxLCAyLAotICAgICAgICAmc3BlYywgJmZpbGUpKQorICAgICAgICAmc3BlYywgJmZpbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKG1vZHVsZSwgc3BlYywgZmlsZSk7CiAKIGV4aXQ6CkBAIC0zMDgsOCArMzE1LDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfZHluYW1pY19pbXBsKG1vZHVsZSwgbW9kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0NSw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2J1aWx0aW5faW1wbChtb2R1bGUsIG1vZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1Miw0ICszNjEsNCBAQAogI2lmbmRlZiBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKICAgICAjZGVmaW5lIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGFkNmU1ODMzZTYxNzBkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMjRkN2Y3MzcwMmE5MDdmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IGFkYzMzYWMuLjBlMTYwNzUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgIndvcmRjb2RlX2hlbHBlcnMuaCIKIAogI2RlZmluZSBERUZBVUxUX0JMT0NLX1NJWkUgMTYKICNkZWZpbmUgREVGQVVMVF9CTE9DS1MgOApAQCAtNDMsNyArNDQsNiBAQAogc3RydWN0IGluc3RyIHsKICAgICB1bnNpZ25lZCBpX2phYnMgOiAxOwogICAgIHVuc2lnbmVkIGlfanJlbCA6IDE7Ci0gICAgdW5zaWduZWQgaV9oYXNhcmcgOiAxOwogICAgIHVuc2lnbmVkIGNoYXIgaV9vcGNvZGU7CiAgICAgaW50IGlfb3Bhcmc7CiAgICAgc3RydWN0IGJhc2ljYmxvY2tfICppX3RhcmdldDsgLyogdGFyZ2V0IGJsb2NrIChpZiBqdW1wIGluc3RydWN0aW9uKSAqLwpAQCAtMTcxLDcgKzE3MSw2IEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX28oc3RydWN0IGNvbXBpbGVyICosIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX2koc3RydWN0IGNvbXBpbGVyICosIGludCwgUHlfc3NpemVfdCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX2ooc3RydWN0IGNvbXBpbGVyICosIGludCwgYmFzaWNibG9jayAqLCBpbnQpOwotc3RhdGljIGJhc2ljYmxvY2sgKmNvbXBpbGVyX3VzZV9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGludCBjb21waWxlcl9lcnJvcihzdHJ1Y3QgY29tcGlsZXIgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfbmFtZW9wKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCBleHByX2NvbnRleHRfdHkpOwogCkBAIC0xODAsNiArMTc5LDcgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfa2V5d29yZChzdHJ1Y3QgY29tcGlsZXIgKiwga2V5d29yZF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X2V4cHIoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9hdWdhc3NpZ24oc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOworc3RhdGljIGludCBjb21waWxlcl9hbm5hc3NpZ24oc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9zbGljZShzdHJ1Y3QgY29tcGlsZXIgKiwgc2xpY2VfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSk7CiAKQEAgLTE5NiwxMiArMTk2LDIyIEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7Ci1zdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgUHlfc3NpemVfdCBuLAorc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdHJ5X2V4Y2VwdChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3NldF9xdWFsbmFtZShzdHJ1Y3QgY29tcGlsZXIgKik7CiAKK3N0YXRpYyBpbnQgY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSk7CisKK3N0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpOworCiBzdGF0aWMgUHlDb2RlT2JqZWN0ICphc3NlbWJsZShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50IGFkZE5vbmUpOwogc3RhdGljIFB5T2JqZWN0ICpfX2RvY19fOwogCkBAIC00NzcsOSArNDg3LDkgQEAKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jazsKICAgICBmb3IgKGJsb2NrID0gdS0+dV9ibG9ja3M7IGJsb2NrICE9IE5VTEw7IGJsb2NrID0gYmxvY2stPmJfbGlzdCkgewotICAgICAgICBhc3NlcnQoKHZvaWQgKilibG9jayAhPSAodm9pZCAqKTB4Y2JjYmNiY2IpOwotICAgICAgICBhc3NlcnQoKHZvaWQgKilibG9jayAhPSAodm9pZCAqKTB4ZmJmYmZiZmIpOwotICAgICAgICBhc3NlcnQoKHZvaWQgKilibG9jayAhPSAodm9pZCAqKTB4ZGJkYmRiZGIpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGNiY2JjYmNiVSk7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4ZmJmYmZiZmJVKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhkYmRiZGJkYlUpOwogICAgICAgICBpZiAoYmxvY2stPmJfaW5zdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgYXNzZXJ0KGJsb2NrLT5iX2lhbGxvYyA+IDApOwogICAgICAgICAgICAgYXNzZXJ0KGJsb2NrLT5iX2l1c2VkID4gMCk7CkBAIC01MjMsNiArNTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGludCBzY29wZV90eXBlLCB2b2lkICprZXksIGludCBsaW5lbm8pCiB7CiAgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQgKnU7CisgICAgYmFzaWNibG9jayAqYmxvY2s7CiAKICAgICB1ID0gKHN0cnVjdCBjb21waWxlcl91bml0ICopUHlPYmplY3RfTWFsbG9jKHNpemVvZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQpKTsKQEAgLTYyMCw4ICs2MzEsMTEgQEAKICAgICBjLT51ID0gdTsKIAogICAgIGMtPmNfbmVzdGxldmVsKys7Ci0gICAgaWYgKGNvbXBpbGVyX3VzZV9uZXdfYmxvY2soYykgPT0gTlVMTCkKKworICAgIGJsb2NrID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmIChibG9jayA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKKyAgICBjLT51LT51X2N1cmJsb2NrID0gYmxvY2s7CiAKICAgICBpZiAodS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX01PRFVMRSkgewogICAgICAgICBpZiAoIWNvbXBpbGVyX3NldF9xdWFsbmFtZShjKSkKQEAgLTczMSw2ICs3NDUsNyBAQAogICAgIHJldHVybiAxOwogfQogCisKIC8qIEFsbG9jYXRlIGEgbmV3IGJsb2NrIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIGl0LgogICAgUmV0dXJucyBOVUxMIG9uIGVycm9yLgogKi8KQEAgLTc1NSwxNiArNzcwLDYgQEAKIH0KIAogc3RhdGljIGJhc2ljYmxvY2sgKgotY29tcGlsZXJfdXNlX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMpCi17Ci0gICAgYmFzaWNibG9jayAqYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7Ci0gICAgaWYgKGJsb2NrID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMtPnUtPnVfY3VyYmxvY2sgPSBibG9jazsKLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0KLXN0YXRpYyBiYXNpY2Jsb2NrICoKIGNvbXBpbGVyX25leHRfYmxvY2soc3RydWN0IGNvbXBpbGVyICpjKQogewogICAgIGJhc2ljYmxvY2sgKmJsb2NrID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOwpAQCAtODEwLDcgKzgxNSw3IEBACiAgICAgICAgIG9sZHNpemUgPSBiLT5iX2lhbGxvYyAqIHNpemVvZihzdHJ1Y3QgaW5zdHIpOwogICAgICAgICBuZXdzaXplID0gb2xkc2l6ZSA8PCAxOwogCi0gICAgICAgIGlmIChvbGRzaXplID4gKFBZX1NJWkVfTUFYID4+IDEpKSB7CisgICAgICAgIGlmIChvbGRzaXplID4gKFNJWkVfTUFYID4+IDEpKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC05MzksNiArOTQ0LDggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBJTVBPUlRfU1RBUjoKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgY2FzZSBTRVRVUF9BTk5PVEFUSU9OUzoKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFlJRUxEX1ZBTFVFOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgWUlFTERfRlJPTToKQEAgLTk3NiwxNiArOTgzLDE5IEBACiAgICAgICAgIGNhc2UgQlVJTERfVFVQTEU6CiAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CisgICAgICAgIGNhc2UgQlVJTERfU1RSSU5HOgogICAgICAgICAgICAgcmV0dXJuIDEtb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTElTVF9VTlBBQ0s6CiAgICAgICAgIGNhc2UgQlVJTERfVFVQTEVfVU5QQUNLOgorICAgICAgICBjYXNlIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEw6CiAgICAgICAgIGNhc2UgQlVJTERfU0VUX1VOUEFDSzoKICAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLOgotICAgICAgICAgICAgcmV0dXJuIDEgLSBvcGFyZzsKICAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDoKLSAgICAgICAgICAgIHJldHVybiAxIC0gKG9wYXJnICYgMHhGRik7CisgICAgICAgICAgICByZXR1cm4gMSAtIG9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX01BUDoKICAgICAgICAgICAgIHJldHVybiAxIC0gMipvcGFyZzsKKyAgICAgICAgY2FzZSBCVUlMRF9DT05TVF9LRVlfTUFQOgorICAgICAgICAgICAgcmV0dXJuIC1vcGFyZzsKICAgICAgICAgY2FzZSBMT0FEX0FUVFI6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBDT01QQVJFX09QOgpAQCAtMTAyMywyMiArMTAzMywyMCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIERFTEVURV9GQVNUOgogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgU1RPUkVfQU5OT1RBVElPTjoKKyAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICBjYXNlIFJBSVNFX1ZBUkFSR1M6CiAgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwotI2RlZmluZSBOQVJHUyhvKSAoKChvKSAlIDI1NikgKyAyKigoKG8pIC8gMjU2KSAlIDI1NikpCiAgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTjoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpOwotICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fVkFSOgorICAgICAgICAgICAgcmV0dXJuIC1vcGFyZzsKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX0tXOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyktMTsKLSAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVzoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpLTI7CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnLTE7CisgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9FWDoKKyAgICAgICAgICAgIHJldHVybiAtICgob3BhcmcgJiAweDAxKSAhPSAwKSAtICgob3BhcmcgJiAweDAyKSAhPSAwKTsKICAgICAgICAgY2FzZSBNQUtFX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIC0xIC1OQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7Ci0gICAgICAgIGNhc2UgTUFLRV9DTE9TVVJFOgotICAgICAgICAgICAgcmV0dXJuIC0yIC0gTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwotI3VuZGVmIE5BUkdTCisgICAgICAgICAgICByZXR1cm4gLTEgLSAoKG9wYXJnICYgMHgwMSkgIT0gMCkgLSAoKG9wYXJnICYgMHgwMikgIT0gMCkgLQorICAgICAgICAgICAgICAgICgob3BhcmcgJiAweDA0KSAhPSAwKSAtICgob3BhcmcgJiAweDA4KSAhPSAwKTsKICAgICAgICAgY2FzZSBCVUlMRF9TTElDRToKICAgICAgICAgICAgIGlmIChvcGFyZyA9PSAzKQogICAgICAgICAgICAgICAgIHJldHVybiAtMjsKQEAgLTEwNjYsNiArMTA3NCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIGNhc2UgR0VUX1lJRUxEX0ZST01fSVRFUjoKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIEZPUk1BVF9WQUxVRToKKyAgICAgICAgICAgIC8qIElmIHRoZXJlJ3MgYSBmbXRfc3BlYyBvbiB0aGUgc3RhY2ssIHdlIGdvIGZyb20gMi0+MSwKKyAgICAgICAgICAgICAgIGVsc2UgMS0+MS4gKi8KKyAgICAgICAgICAgIHJldHVybiAob3BhcmcgJiBGVlNfTUFTSykgPT0gRlZTX0hBVkVfU1BFQyA/IC0xIDogMDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBQWV9JTlZBTElEX1NUQUNLX0VGRkVDVDsKICAgICB9CkBAIC0xMDgyLDEzICsxMDk0LDE0IEBACiAgICAgYmFzaWNibG9jayAqYjsKICAgICBzdHJ1Y3QgaW5zdHIgKmk7CiAgICAgaW50IG9mZjsKKyAgICBhc3NlcnQoIUhBU19BUkcob3Bjb2RlKSk7CiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYiA9IGMtPnUtPnVfY3VyYmxvY2s7CiAgICAgaSA9ICZiLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7Ci0gICAgaS0+aV9oYXNhcmcgPSAwOworICAgIGktPmlfb3BhcmcgPSAwOwogICAgIGlmIChvcGNvZGUgPT0gUkVUVVJOX1ZBTFVFKQogICAgICAgICBiLT5iX3JldHVybiA9IDE7CiAgICAgY29tcGlsZXJfc2V0X2xpbmVubyhjLCBvZmYpOwpAQCAtMTE2NSwxMCArMTE3OCwxNSBAQAogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOwogCi0gICAgLyogSW50ZWdlciBhcmd1bWVudHMgYXJlIGxpbWl0IHRvIDE2LWJpdC4gVGhlcmUgaXMgYW4gZXh0ZW5zaW9uIGZvciAzMi1iaXQKLSAgICAgICBpbnRlZ2VyIGFyZ3VtZW50cy4gKi8KLSAgICBhc3NlcnQoKC0yMTQ3NDgzNjQ3LTEpIDw9IG9wYXJnKTsKLSAgICBhc3NlcnQob3BhcmcgPD0gMjE0NzQ4MzY0Nyk7CisgICAgLyogb3BhcmcgdmFsdWUgaXMgdW5zaWduZWQsIGJ1dCBhIHNpZ25lZCBDIGludCBpcyB1c3VhbGx5IHVzZWQgdG8gc3RvcmUKKyAgICAgICBpdCBpbiB0aGUgQyBjb2RlIChsaWtlIFB5dGhvbi9jZXZhbC5jKS4KKworICAgICAgIExpbWl0IHRvIDMyLWJpdCBzaWduZWQgQyBpbnQgKHJhdGhlciB0aGFuIElOVF9NQVgpIGZvciBwb3J0YWJpbGl0eS4KKworICAgICAgIFRoZSBhcmd1bWVudCBvZiBhIGNvbmNyZXRlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGlzIGxpbWl0ZWQgdG8gOC1iaXQuCisgICAgICAgRVhURU5ERURfQVJHIGlzIHVzZWQgZm9yIDE2LCAyNCwgYW5kIDMyLWJpdCBhcmd1bWVudHMuICovCisgICAgYXNzZXJ0KEhBU19BUkcob3Bjb2RlKSk7CisgICAgYXNzZXJ0KDAgPD0gb3BhcmcgJiYgb3BhcmcgPD0gMjE0NzQ4MzY0Nyk7CiAKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQpAQCAtMTE3Niw3ICsxMTk0LDYgQEAKICAgICBpID0gJmMtPnUtPnVfY3VyYmxvY2stPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKICAgICBpLT5pX29wYXJnID0gUHlfU0FGRV9ET1dOQ0FTVChvcGFyZywgUHlfc3NpemVfdCwgaW50KTsKLSAgICBpLT5pX2hhc2FyZyA9IDE7CiAgICAgY29tcGlsZXJfc2V0X2xpbmVubyhjLCBvZmYpOwogICAgIHJldHVybiAxOwogfQpAQCAtMTE4Nyw2ICsxMjA0LDcgQEAKICAgICBzdHJ1Y3QgaW5zdHIgKmk7CiAgICAgaW50IG9mZjsKIAorICAgIGFzc2VydChIQVNfQVJHKG9wY29kZSkpOwogICAgIGFzc2VydChiICE9IE5VTEwpOwogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCkBAIC0xMTk0LDcgKzEyMTIsNiBAQAogICAgIGkgPSAmYy0+dS0+dV9jdXJibG9jay0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwogICAgIGktPmlfdGFyZ2V0ID0gYjsKLSAgICBpLT5pX2hhc2FyZyA9IDE7CiAgICAgaWYgKGFic29sdXRlKQogICAgICAgICBpLT5pX2phYnMgPSAxOwogICAgIGVsc2UKQEAgLTEyMDMsMjIgKzEyMjAsMTIgQEAKICAgICByZXR1cm4gMTsKIH0KIAotLyogVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gTkVXX0JMT0NLIGFuZCBORVhUX0JMT0NLIGlzIHN1YnRsZS4gIChJJ2QKLSAgIGxpa2UgdG8gZmluZCBiZXR0ZXIgbmFtZXMuKSAgTkVXX0JMT0NLKCkgY3JlYXRlcyBhIG5ldyBibG9jayBhbmQgc2V0cwotICAgaXQgYXMgdGhlIGN1cnJlbnQgYmxvY2suICBORVhUX0JMT0NLKCkgYWxzbyBjcmVhdGVzIGFuIGltcGxpY2l0IGp1bXAKLSAgIGZyb20gdGhlIGN1cnJlbnQgYmxvY2sgdG8gdGhlIG5ldyBibG9jay4KKy8qIE5FWFRfQkxPQ0soKSBjcmVhdGVzIGFuIGltcGxpY2l0IGp1bXAgZnJvbSB0aGUgY3VycmVudCBibG9jaworICAgdG8gdGhlIG5ldyBibG9jay4KKworICAgVGhlIHJldHVybnMgaW5zaWRlIHRoaXMgbWFjcm8gbWFrZSBpdCBpbXBvc3NpYmxlIHRvIGRlY3JlZiBvYmplY3RzCisgICBjcmVhdGVkIGluIHRoZSBsb2NhbCBmdW5jdGlvbi4gTG9jYWwgb2JqZWN0cyBzaG91bGQgdXNlIHRoZSBhcmVuYS4KICovCi0KLS8qIFRoZSByZXR1cm5zIGluc2lkZSB0aGVzZSBtYWNyb3MgbWFrZSBpdCBpbXBvc3NpYmxlIHRvIGRlY3JlZiBvYmplY3RzCi0gICBjcmVhdGVkIGluIHRoZSBsb2NhbCBmdW5jdGlvbi4gIExvY2FsIG9iamVjdHMgc2hvdWxkIHVzZSB0aGUgYXJlbmEuCi0qLwotCi0KLSNkZWZpbmUgTkVXX0JMT0NLKEMpIHsgXAotICAgIGlmIChjb21waWxlcl91c2VfbmV3X2Jsb2NrKChDKSkgPT0gTlVMTCkgXAotICAgICAgICByZXR1cm4gMDsgXAotfQotCiAjZGVmaW5lIE5FWFRfQkxPQ0soQykgeyBcCiAgICAgaWYgKGNvbXBpbGVyX25leHRfYmxvY2soKEMpKSA9PSBOVUxMKSBcCiAgICAgICAgIHJldHVybiAwOyBcCkBAIC0xMjQxLDYgKzEyNDgsMTUgQEAKICAgICAgICAgcmV0dXJuIDA7IFwKIH0KIAorLyogU2FtZSBhcyBBRERPUF9PLCBidXQgc3RlYWxzIGEgcmVmZXJlbmNlLiAqLworI2RlZmluZSBBRERPUF9OKEMsIE9QLCBPLCBUWVBFKSB7IFwKKyAgICBpZiAoIWNvbXBpbGVyX2FkZG9wX28oKEMpLCAoT1ApLCAoQyktPnUtPnVfICMjIFRZUEUsIChPKSkpIHsgXAorICAgICAgICBQeV9ERUNSRUYoKE8pKTsgXAorICAgICAgICByZXR1cm4gMDsgXAorICAgIH0gXAorICAgIFB5X0RFQ1JFRigoTykpOyBcCit9CisKICNkZWZpbmUgQURET1BfTkFNRShDLCBPUCwgTywgVFlQRSkgeyBcCiAgICAgaWYgKCFjb21waWxlcl9hZGRvcF9uYW1lKChDKSwgKE9QKSwgKEMpLT51LT51XyAjIyBUWVBFLCAoTykpKSBcCiAgICAgICAgIHJldHVybiAwOyBcCkBAIC0xMzA5LDEwICsxMzI1LDExMCBAQAogewogICAgIGlmIChzLT5raW5kICE9IEV4cHJfa2luZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHMtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZDsKKyAgICBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kID09IENvbnN0YW50X2tpbmQpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzLT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWUpOworICAgIHJldHVybiAwOwogfQogCi0vKiBDb21waWxlIGEgc2VxdWVuY2Ugb2Ygc3RhdGVtZW50cywgY2hlY2tpbmcgZm9yIGEgZG9jc3RyaW5nLiAqLworc3RhdGljIGludAoraXNfY29uc3QoZXhwcl90eSBlKQoreworICAgIHN3aXRjaCAoZS0+a2luZCkgeworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICBjYXNlIE51bV9raW5kOgorICAgIGNhc2UgU3RyX2tpbmQ6CisgICAgY2FzZSBCeXRlc19raW5kOgorICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKKyAgICBjYXNlIE5hbWVDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY29uc3RfdmFsdWUoZXhwcl90eSBlKQoreworICAgIHN3aXRjaCAoZS0+a2luZCkgeworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuQ29uc3RhbnQudmFsdWU7CisgICAgY2FzZSBOdW1fa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuTnVtLm47CisgICAgY2FzZSBTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuU3RyLnM7CisgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICByZXR1cm4gZS0+di5CeXRlcy5zOworICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKKyAgICAgICAgcmV0dXJuIFB5X0VsbGlwc2lzOworICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52Lk5hbWVDb25zdGFudC52YWx1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoIWlzX2NvbnN0KGUpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisvKiBTZWFyY2ggaWYgdmFyaWFibGUgYW5ub3RhdGlvbnMgYXJlIHByZXNlbnQgc3RhdGljYWxseSBpbiBhIGJsb2NrLiAqLworCitzdGF0aWMgaW50CitmaW5kX2Fubihhc2RsX3NlcSAqc3RtdHMpCit7CisgICAgaW50IGksIGosIHJlcyA9IDA7CisgICAgc3RtdF90eSBzdDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc3RtdHMpOyBpKyspIHsKKyAgICAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoc3RtdHMsIGkpOworICAgICAgICBzd2l0Y2ggKHN0LT5raW5kKSB7CisgICAgICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBGb3Jfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkZvci5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuRm9yLm9yZWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuQXN5bmNGb3IuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LkFzeW5jRm9yLm9yZWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaGlsZV9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuV2hpbGUuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LldoaWxlLm9yZWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJZl9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuSWYuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LklmLm9yZWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaXRoX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5XaXRoLmJvZHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Bc3luY1dpdGguYm9keSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhc2RsX3NlcV9MRU4oc3QtPnYuVHJ5LmhhbmRsZXJzKTsgaisrKSB7CisgICAgICAgICAgICAgICAgZXhjZXB0aGFuZGxlcl90eSBoYW5kbGVyID0gKGV4Y2VwdGhhbmRsZXJfdHkpYXNkbF9zZXFfR0VUKAorICAgICAgICAgICAgICAgICAgICBzdC0+di5UcnkuaGFuZGxlcnMsIGopOworICAgICAgICAgICAgICAgIGlmIChmaW5kX2FubihoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIuYm9keSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuVHJ5LmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5UcnkuZmluYWxib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuVHJ5Lm9yZWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlcyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyogQ29tcGlsZSBhIHNlcXVlbmNlIG9mIHN0YXRlbWVudHMsIGNoZWNraW5nIGZvciBhIGRvY3N0cmluZworICAgYW5kIGZvciBhbm5vdGF0aW9ucy4gKi8KIAogc3RhdGljIGludAogY29tcGlsZXJfYm9keShzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICpzdG10cykKQEAgLTEzMjAsNiArMTQzNiwxOSBAQAogICAgIGludCBpID0gMDsKICAgICBzdG10X3R5IHN0OwogCisgICAgLyogU2V0IGN1cnJlbnQgbGluZSBudW1iZXIgdG8gdGhlIGxpbmUgbnVtYmVyIG9mIGZpcnN0IHN0YXRlbWVudC4KKyAgICAgICBUaGlzIHdheSBsaW5lIG51bWJlciBmb3IgU0VUVVBfQU5OT1RBVElPTlMgd2lsbCBhbHdheXMKKyAgICAgICBjb2luY2lkZSB3aXRoIHRoZSBsaW5lIG51bWJlciBvZiBmaXJzdCAicmVhbCIgc3RhdGVtZW50IGluIG1vZHVsZS4KKyAgICAgICBJZiBib2R5IGlzIGVtcHksIHRoZW4gbGluZW5vIHdpbGwgYmUgc2V0IGxhdGVyIGluIGFzc2VtYmxlLiAqLworICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFICYmCisgICAgICAgICFjLT51LT51X2xpbmVubyAmJiBhc2RsX3NlcV9MRU4oc3RtdHMpKSB7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHN0bXRzLCAwKTsKKyAgICAgICAgYy0+dS0+dV9saW5lbm8gPSBzdC0+bGluZW5vOworICAgIH0KKyAgICAvKiBFdmVyeSBhbm5vdGF0ZWQgY2xhc3MgYW5kIG1vZHVsZSBzaG91bGQgaGF2ZSBfX2Fubm90YXRpb25zX18uICovCisgICAgaWYgKGZpbmRfYW5uKHN0bXRzKSkgeworICAgICAgICBBRERPUChjLCBTRVRVUF9BTk5PVEFUSU9OUyk7CisgICAgfQogICAgIGlmICghYXNkbF9zZXFfTEVOKHN0bXRzKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoc3RtdHMsIDApOwpAQCAtMTM1Nyw2ICsxNDg2LDkgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEludGVyYWN0aXZlX2tpbmQ6CisgICAgICAgIGlmIChmaW5kX2Fubihtb2QtPnYuSW50ZXJhY3RpdmUuYm9keSkpIHsKKyAgICAgICAgICAgIEFERE9QKGMsIFNFVFVQX0FOTk9UQVRJT05TKTsKKyAgICAgICAgfQogICAgICAgICBjLT5jX2ludGVyYWN0aXZlID0gMTsKICAgICAgICAgVklTSVRfU0VRX0lOX1NDT1BFKGMsIHN0bXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KTsKQEAgLTE0MjYsNTMgKzE1NTgsNTAgQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBhcmdzLCBQeU9iamVjdCAqcXVhbG5hbWUpCitjb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGZsYWdzLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBmcmVlID0gUHlDb2RlX0dldE51bUZyZWUoY28pOwogICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMKQogICAgICAgICBxdWFsbmFtZSA9IGNvLT5jb19uYW1lOwogCi0gICAgaWYgKGZyZWUgPT0gMCkgewotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7Ci0gICAgICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgYXJncyk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgZnJlZTsgKytpKSB7Ci0gICAgICAgIC8qIEJ5cGFzcyBjb21fYWRkb3BfdmFybmFtZSBiZWNhdXNlIGl0IHdpbGwgZ2VuZXJhdGUKLSAgICAgICAgICAgTE9BRF9ERVJFRiBidXQgTE9BRF9DTE9TVVJFIGlzIG5lZWRlZC4KLSAgICAgICAgKi8KLSAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb19mcmVldmFycywgaSk7Ci0gICAgICAgIGludCBhcmcsIHJlZnR5cGU7CisgICAgaWYgKGZyZWUpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGZyZWU7ICsraSkgeworICAgICAgICAgICAgLyogQnlwYXNzIGNvbV9hZGRvcF92YXJuYW1lIGJlY2F1c2UgaXQgd2lsbCBnZW5lcmF0ZQorICAgICAgICAgICAgICAgTE9BRF9ERVJFRiBidXQgTE9BRF9DTE9TVVJFIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2ZyZWV2YXJzLCBpKTsKKyAgICAgICAgICAgIGludCBhcmcsIHJlZnR5cGU7CiAKLSAgICAgICAgLyogU3BlY2lhbCBjYXNlOiBJZiBhIGNsYXNzIGNvbnRhaW5zIGEgbWV0aG9kIHdpdGggYQotICAgICAgICAgICBmcmVlIHZhcmlhYmxlIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBtZXRob2QsCi0gICAgICAgICAgIHRoZSBuYW1lIHdpbGwgYmUgY29uc2lkZXJlZCBmcmVlICphbmQqIGxvY2FsIGluIHRoZQotICAgICAgICAgICBjbGFzcy4gIEl0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBjbG9zdXJlLCBhcwotICAgICAgICAgICB3ZWxsIGFzIGJ5IHRoZSBub3JtYWwgbmFtZSBsb29va3VwIGxvZ2ljLgotICAgICAgICAqLwotICAgICAgICByZWZ0eXBlID0gZ2V0X3JlZl90eXBlKGMsIG5hbWUpOwotICAgICAgICBpZiAocmVmdHlwZSA9PSBDRUxMKQotICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2NlbGx2YXJzLCBuYW1lKTsKLSAgICAgICAgZWxzZSAvKiAocmVmdHlwZSA9PSBGUkVFKSAqLwotICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2ZyZWV2YXJzLCBuYW1lKTsKLSAgICAgICAgaWYgKGFyZyA9PSAtMSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgImxvb2t1cCAlcyBpbiAlcyAlZCAlZFxuIgotICAgICAgICAgICAgICAgICJmcmVldmFycyBvZiAlczogJXNcbiIsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKG5hbWUpKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGMtPnUtPnVfbmFtZSksCi0gICAgICAgICAgICAgICAgcmVmdHlwZSwgYXJnLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoY28tPmNvX25hbWUpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihjby0+Y29fZnJlZXZhcnMpKSk7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjb21waWxlcl9tYWtlX2Nsb3N1cmUoKSIpOworICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiBJZiBhIGNsYXNzIGNvbnRhaW5zIGEgbWV0aG9kIHdpdGggYQorICAgICAgICAgICAgICAgZnJlZSB2YXJpYWJsZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbWV0aG9kLAorICAgICAgICAgICAgICAgdGhlIG5hbWUgd2lsbCBiZSBjb25zaWRlcmVkIGZyZWUgKmFuZCogbG9jYWwgaW4gdGhlCisgICAgICAgICAgICAgICBjbGFzcy4gIEl0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBjbG9zdXJlLCBhcworICAgICAgICAgICAgICAgd2VsbCBhcyBieSB0aGUgbm9ybWFsIG5hbWUgbG9vb2t1cCBsb2dpYy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICByZWZ0eXBlID0gZ2V0X3JlZl90eXBlKGMsIG5hbWUpOworICAgICAgICAgICAgaWYgKHJlZnR5cGUgPT0gQ0VMTCkKKyAgICAgICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfY2VsbHZhcnMsIG5hbWUpOworICAgICAgICAgICAgZWxzZSAvKiAocmVmdHlwZSA9PSBGUkVFKSAqLworICAgICAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9mcmVldmFycywgbmFtZSk7CisgICAgICAgICAgICBpZiAoYXJnID09IC0xKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICJsb29rdXAgJXMgaW4gJXMgJWQgJWRcbiIKKyAgICAgICAgICAgICAgICAgICAgImZyZWV2YXJzIG9mICVzOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKG5hbWUpKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjLT51LT51X25hbWUpLAorICAgICAgICAgICAgICAgICAgICByZWZ0eXBlLCBhcmcsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoY28tPmNvX25hbWUpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIoY28tPmNvX2ZyZWV2YXJzKSkpOworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNvbXBpbGVyX21ha2VfY2xvc3VyZSgpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBRERPUF9JKGMsIExPQURfQ0xPU1VSRSwgYXJnKTsKICAgICAgICAgfQotICAgICAgICBBRERPUF9JKGMsIExPQURfQ0xPU1VSRSwgYXJnKTsKKyAgICAgICAgZmxhZ3MgfD0gMHgwODsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgZnJlZSk7CiAgICAgfQotICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGZyZWUpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwotICAgIEFERE9QX0koYywgTUFLRV9DTE9TVVJFLCBhcmdzKTsKKyAgICBBRERPUF9JKGMsIE1BS0VfRlVOQ1RJT04sIGZsYWdzKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTQ5NCwyNiArMTYyMyw2MCBAQAogY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqa3dvbmx5YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprd19kZWZhdWx0cykKIHsKLSAgICAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkZWZhdWx0cyArIDEuCi0gICAgICAgUmV0dXJucyAwIG9uIGVycm9yLgotICAgICAqLwotICAgIGludCBpLCBkZWZhdWx0X2NvdW50ID0gMDsKKyAgICAvKiBQdXNoIGEgZGljdCBvZiBrZXl3b3JkLW9ubHkgZGVmYXVsdCB2YWx1ZXMuCisKKyAgICAgICBSZXR1cm4gMCBvbiBlcnJvciwgLTEgaWYgbm8gZGljdCBwdXNoZWQsIDEgaWYgYSBkaWN0IGlzIHB1c2hlZC4KKyAgICAgICAqLworICAgIGludCBpOworICAgIFB5T2JqZWN0ICprZXlzID0gTlVMTDsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oa3dvbmx5YXJncyk7IGkrKykgewogICAgICAgICBhcmdfdHkgYXJnID0gYXNkbF9zZXFfR0VUKGt3b25seWFyZ3MsIGkpOwogICAgICAgICBleHByX3R5IGRlZmF1bHRfID0gYXNkbF9zZXFfR0VUKGt3X2RlZmF1bHRzLCBpKTsKICAgICAgICAgaWYgKGRlZmF1bHRfKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWFuZ2xlZCA9IF9QeV9NYW5nbGUoYy0+dS0+dV9wcml2YXRlLCBhcmctPmFyZyk7Ci0gICAgICAgICAgICBpZiAoIW1hbmdsZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIG1hbmdsZWQsIGNvbnN0cyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7Ci0gICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2V4cHIoYywgZGVmYXVsdF8pKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoIW1hbmdsZWQpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdF9jb3VudCsrOworICAgICAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGtleXMgPSBQeUxpc3RfTmV3KDEpOworICAgICAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGtleXMsIDAsIG1hbmdsZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IHJlcyA9IFB5TGlzdF9BcHBlbmQoa2V5cywgbWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2V4cHIoYywgZGVmYXVsdF8pKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdF9jb3VudCArIDE7CisgICAgaWYgKGtleXMgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IGRlZmF1bHRfY291bnQgPSBQeUxpc3RfR0VUX1NJWkUoa2V5cyk7CisgICAgICAgIFB5T2JqZWN0ICprZXlzX3R1cGxlID0gUHlMaXN0X0FzVHVwbGUoa2V5cyk7CisgICAgICAgIFB5X0RFQ1JFRihrZXlzKTsKKyAgICAgICAgaWYgKGtleXNfdHVwbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXlzX3R1cGxlLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0NPTlNUX0tFWV9NQVAsIGRlZmF1bHRfY291bnQpOworICAgICAgICBhc3NlcnQoZGVmYXVsdF9jb3VudCA+IDApOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE1NTYsMTEgKzE3MTksMTAgQEAKIGNvbXBpbGVyX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBjb21waWxlciAqYywgYXJndW1lbnRzX3R5IGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHJldHVybnMpCiB7Ci0gICAgLyogUHVzaCBhcmcgYW5ub3RhdGlvbnMgYW5kIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMuIFJldHVybiB0aGUgIwotICAgICAgIG9mIGl0ZW1zIHB1c2hlZCArIDEuIFRoZSBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlciB3cnQgdGhlCi0gICAgICAgc291cmNlIGNvZGUuCisgICAgLyogUHVzaCBhcmcgYW5ub3RhdGlvbiBkaWN0LgorICAgICAgIFRoZSBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlciB3cnQgdGhlIHNvdXJjZSBjb2RlLgogCi0gICAgICAgTW9yZSB0aGFuIDJeMTYtMSBhbm5vdGF0aW9ucyBpcyBhIFN5bnRheEVycm9yLiBSZXR1cm5zIDAgb24gZXJyb3IuCisgICAgICAgUmV0dXJuIDAgb24gZXJyb3IsIC0xIGlmIG5vIGRpY3QgcHVzaGVkLCAxIGlmIGEgZGljdCBpcyBwdXNoZWQuCiAgICAgICAgKi8KICAgICBzdGF0aWMgaWRlbnRpZmllciByZXR1cm5fc3RyOwogICAgIFB5T2JqZWN0ICpuYW1lczsKQEAgLTE1OTIsMzIgKzE3NTQsMjAgQEAKICAgICB9CiAKICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUobmFtZXMpOwotICAgIGlmIChsZW4gPiA2NTUzNCkgewotICAgICAgICAvKiBsZW4gbXVzdCBmaXQgaW4gMTYgYml0cywgYW5kIGxlbiBpcyBpbmNyZW1lbnRlZCBiZWxvdyAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgYW5ub3RhdGlvbnMiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9CiAgICAgaWYgKGxlbikgewotICAgICAgICAvKiBjb252ZXJ0IG5hbWVzIHRvIGEgdHVwbGUgYW5kIHBsYWNlIG9uIHN0YWNrICovCi0gICAgICAgIFB5T2JqZWN0ICplbHQ7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgUHlPYmplY3QgKnMgPSBQeVR1cGxlX05ldyhsZW4pOwotICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIGVsdCA9IFB5TGlzdF9HRVRfSVRFTShuYW1lcywgaSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZWx0KTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocywgaSwgZWx0KTsKKyAgICAgICAgUHlPYmplY3QgKmtleXR1cGxlID0gUHlMaXN0X0FzVHVwbGUobmFtZXMpOworICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworICAgICAgICBpZiAoa2V5dHVwbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBzLCBjb25zdHMpOwotICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgIGxlbisrOyAvKiBpbmNsdWRlIHRoZSBqdXN0LXB1c2hlZCB0dXBsZSAqLworICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXR1cGxlLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0NPTlNUX0tFWV9NQVAsIGxlbik7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBQeV9ERUNSRUYobmFtZXMpOwotCi0gICAgLyogV2UganVzdCBjaGVja2VkIHRoYXQgbGVuIDw9IDY1NTM1LCBzZWUgYWJvdmUgKi8KLSAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsZW4gKyAxLCBQeV9zc2l6ZV90LCBpbnQpOworICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiBlcnJvcjoKICAgICBQeV9ERUNSRUYobmFtZXMpOwpAQCAtMTYyNSw2ICsxNzc1LDM2IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX3Zpc2l0X2RlZmF1bHRzKHN0cnVjdCBjb21waWxlciAqYywgYXJndW1lbnRzX3R5IGFyZ3MpCit7CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKKyAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2NvbXBpbGVyX2RlZmF1bHRfYXJndW1lbnRzKHN0cnVjdCBjb21waWxlciAqYywgYXJndW1lbnRzX3R5IGFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBmdW5jZmxhZ3MgPSAwOworICAgIGlmIChhcmdzLT5kZWZhdWx0cyAmJiBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpID4gMCkgeworICAgICAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2RlZmF1bHRzKGMsIGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBmdW5jZmxhZ3MgfD0gMHgwMTsKKyAgICB9CisgICAgaWYgKGFyZ3MtPmt3b25seWFyZ3MpIHsKKyAgICAgICAgaW50IHJlcyA9IGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKGMsIGFyZ3MtPmt3b25seWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJlcyA+IDApIHsKKyAgICAgICAgICAgIGZ1bmNmbGFncyB8PSAweDAyOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmdW5jZmxhZ3M7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2Z1bmN0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKQEAgLTE2MzUsMTIgKzE4MTUsMTEgQEAKICAgICBhc2RsX3NlcSogZGVjb3M7CiAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgc3RtdF90eSBzdDsKLSAgICBQeV9zc2l6ZV90IGksIG4sIGFyZ2xlbmd0aDsKLSAgICBpbnQgZG9jc3RyaW5nLCBrd19kZWZhdWx0X2NvdW50ID0gMDsKLSAgICBpbnQgbnVtX2Fubm90YXRpb25zOworICAgIFB5X3NzaXplX3QgaSwgbiwgZnVuY2ZsYWdzOworICAgIGludCBkb2NzdHJpbmc7CisgICAgaW50IGFubm90YXRpb25zOwogICAgIGludCBzY29wZV90eXBlOwogCi0KICAgICBpZiAoaXNfYXN5bmMpIHsKICAgICAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQXN5bmNGdW5jdGlvbkRlZl9raW5kKTsKIApAQCAtMTY2NSwzMCArMTg0NCwzMiBAQAogCiAgICAgaWYgKCFjb21waWxlcl9kZWNvcmF0b3JzKGMsIGRlY29zKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7Ci0gICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAocmVzID09IDApCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAga3dfZGVmYXVsdF9jb3VudCA9IHJlcyAtIDE7Ci0gICAgfQotICAgIG51bV9hbm5vdGF0aW9ucyA9IGNvbXBpbGVyX3Zpc2l0X2Fubm90YXRpb25zKGMsIGFyZ3MsIHJldHVybnMpOwotICAgIGlmIChudW1fYW5ub3RhdGlvbnMgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbnVtX2Fubm90YXRpb25zLS07Ci0gICAgYXNzZXJ0KChudW1fYW5ub3RhdGlvbnMgJiAweEZGRkYpID09IG51bV9hbm5vdGF0aW9ucyk7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZV90eXBlLCAodm9pZCAqKXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQorICAgIGZ1bmNmbGFncyA9IGNvbXBpbGVyX2RlZmF1bHRfYXJndW1lbnRzKGMsIGFyZ3MpOworICAgIGlmIChmdW5jZmxhZ3MgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgYW5ub3RhdGlvbnMgPSBjb21waWxlcl92aXNpdF9hbm5vdGF0aW9ucyhjLCBhcmdzLCByZXR1cm5zKTsKKyAgICBpZiAoYW5ub3RhdGlvbnMgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoYW5ub3RhdGlvbnMgPiAwKSB7CisgICAgICAgIGZ1bmNmbGFncyB8PSAweDA0OworICAgIH0KKworICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgc2NvcGVfdHlwZSwgKHZvaWQgKilzLCBzLT5saW5lbm8pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKGJvZHksIDApOwogICAgIGRvY3N0cmluZyA9IGNvbXBpbGVyX2lzZG9jc3RyaW5nKHN0KTsKLSAgICBpZiAoZG9jc3RyaW5nICYmIGMtPmNfb3B0aW1pemUgPCAyKQotICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuU3RyLnM7CisgICAgaWYgKGRvY3N0cmluZyAmJiBjLT5jX29wdGltaXplIDwgMikgeworICAgICAgICBpZiAoc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kKQorICAgICAgICAgICAgZmlyc3RfY29uc3QgPSBzdC0+di5FeHByLnZhbHVlLT52LkNvbnN0YW50LnZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuU3RyLnM7CisgICAgfQogICAgIGlmIChjb21waWxlcl9hZGRfbyhjLCBjLT51LT51X2NvbnN0cywgZmlyc3RfY29uc3QpIDwgMCkgICAgICB7CiAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTcxMiwxMiArMTg5Myw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7Ci0gICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKLSAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OwotICAgIGlmIChpc19hc3luYykKLSAgICAgICAgY28tPmNvX2ZsYWdzIHw9IENPX0NPUk9VVElORTsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgZnVuY2ZsYWdzLCBxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCkBAIC0xNzkxLDggKzE5NjcsOSBAQAogICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIC8qIFJldHVybiBfX2NsYXNzY2VsbF9fIGlmIGl0IGlzIHJlZmVyZW5jZWQsIG90aGVyd2lzZSByZXR1cm4gTm9uZSAqLwogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9uZWVkc19jbGFzc19jbG9zdXJlKSB7Ci0gICAgICAgICAgICAvKiByZXR1cm4gdGhlIChlbXB0eSkgX19jbGFzc19fIGNlbGwgKi8KKyAgICAgICAgICAgIC8qIFN0b3JlIF9fY2xhc3NjZWxsX18gaW50byBjbGFzcyBuYW1lc3BhY2UgJiByZXR1cm4gaXQgKi8KICAgICAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0xODA1LDEyICsxOTgyLDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3NlcnQoaSA9PSAwKTsKLSAgICAgICAgICAgIC8qIFJldHVybiB0aGUgY2VsbCB3aGVyZSB0byBzdG9yZSBfX2NsYXNzX18gKi8KKwogICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGkpOworICAgICAgICAgICAgQURET1AoYywgRFVQX1RPUCk7CisgICAgICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc2NlbGxfXyIpOworICAgICAgICAgICAgaWYgKCFzdHIgfHwgIWNvbXBpbGVyX25hbWVvcChjLCBzdHIsIFN0b3JlKSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBObyBtZXRob2RzIHJlZmVyZW5jZWQgX19jbGFzc19fLCBzbyBqdXN0IHJldHVybiBOb25lICovCiAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X1NpemUoYy0+dS0+dV9jZWxsdmFycykgPT0gMCk7Ci0gICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gUmV0dXJuIE5vbmUuICovCiAgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIH0KICAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKQEAgLTE4NzcsOCArMjA2Miw3IEBACiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWU7CiAgICAgc3RhdGljIGlkZW50aWZpZXIgbmFtZTsKLSAgICBpbnQga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgUHlfc3NpemVfdCBhcmdsZW5ndGg7CisgICAgUHlfc3NpemVfdCBmdW5jZmxhZ3M7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwogICAgIGFzc2VydChlLT5raW5kID09IExhbWJkYV9raW5kKTsKIApAQCAtMTg4OCwxNCArMjA3MiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7Ci0gICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAocmVzID09IDApIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfTEFNQkRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5MjEsOSArMjEwMiw3IEBACiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTIwMDIsMTQgKzIxODEsMTQgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnN0b3BpdGVyX2Vycm9yID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCiAgICAgYmFzaWNibG9jayAqdHJ5LCAqZXhjZXB0LCAqZW5kLCAqYWZ0ZXJfdHJ5LCAqdHJ5X2NsZWFudXAsCiAgICAgICAgICAgICAgICAqYWZ0ZXJfbG9vcCwgKmFmdGVyX2xvb3BfZWxzZTsKIAotICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKSB7Ci0gICAgICAgIHN0b3BpdGVyX2Vycm9yID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIlN0b3BBc3luY0l0ZXJhdGlvbiIpOwotICAgICAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTIwNTEsNyArMjIzMCw3IEBACiAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIEFERE9QKGMsIERVUF9UT1ApOwotICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOwogICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CiAKQEAgLTI1OTksNiArMjc3OCwyNSBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9zdG10X2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IHZhbHVlKQoreworICAgIGlmIChjLT5jX2ludGVyYWN0aXZlICYmIGMtPmNfbmVzdGxldmVsIDw9IDEpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOworICAgICAgICBBRERPUChjLCBQUklOVF9FWFBSKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKGlzX2NvbnN0KHZhbHVlKSkgeworICAgICAgICAvKiBpZ25vcmUgY29uc3RhbnQgc3RhdGVtZW50ICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfc3RtdChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeV9zc2l6ZV90IGksIG47CkBAIC0yNjE3LDYgKzI4MTUsOSBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidyZXR1cm4nIG91dHNpZGUgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmUgJiYgYy0+dS0+dV9zdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBjLCAiJ3JldHVybicgd2l0aCB2YWx1ZSBpbiBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0yNjM4LDYgKzI4MzksOCBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXVnYXNzaWduKGMsIHMpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hbm5hc3NpZ24oYywgcyk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2ZvcihjLCBzKTsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CkBAIC0yNjY4LDE2ICsyODcxLDcgQEAKICAgICBjYXNlIE5vbmxvY2FsX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXhwcl9raW5kOgotICAgICAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkV4cHIudmFsdWUpOwotICAgICAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kICE9IFN0cl9raW5kICYmCi0gICAgICAgICAgICAgICAgIHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBOdW1fa2luZCkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKGMsIHMtPnYuRXhwci52YWx1ZSk7CiAgICAgY2FzZSBQYXNzX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnJlYWtfa2luZDoKQEAgLTMwNzksOSArMzI3Myw1MyBAQAogfQogCiBzdGF0aWMgaW50CithcmVfYWxsX2l0ZW1zX2NvbnN0KGFzZGxfc2VxICpzZXEsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkga2V5ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCB8fCAhaXNfY29uc3Qoa2V5KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3ViZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgaWYgKG4gPiAxICYmIGFyZV9hbGxfaXRlbXNfY29uc3QoZS0+di5EaWN0LmtleXMsIGJlZ2luLCBlbmQpKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBnZXRfY29uc3RfdmFsdWUoKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9kaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgaSwgbiwgY29udGFpbmVycywgZWxlbWVudHM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBlbGVtZW50czsKKyAgICBpbnQgY29udGFpbmVyczsKICAgICBpbnQgaXNfdW5wYWNraW5nID0gMDsKICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwogICAgIGNvbnRhaW5lcnMgPSAwOwpAQCAtMzA4OSw3ICszMzI3LDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGlzX3VucGFja2luZyA9IChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkgPT0gTlVMTDsKICAgICAgICAgaWYgKGVsZW1lbnRzID09IDB4RkZGRiB8fCAoZWxlbWVudHMgJiYgaXNfdW5wYWNraW5nKSkgewotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBpIC0gZWxlbWVudHMsIGkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9CkBAIC0zMDk4LDEzICszMzM3LDEyIEBACiAgICAgICAgICAgICBjb250YWluZXJzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CiAgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgaWYgKCFjb21waWxlcl9zdWJkaWN0KGMsIGUsIG4gLSBlbGVtZW50cywgbikpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29udGFpbmVycysrOwogICAgIH0KICAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldwpAQCAtMzE3MywyOCArMzQxMSwxMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAorc3RhdGljIGludAorY29tcGlsZXJfam9pbmVkX3N0cihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICBpZiAoYXNkbF9zZXFfTEVOKGUtPnYuSm9pbmVkU3RyLnZhbHVlcykgIT0gMSkKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9TVFJJTkcsIGFzZGxfc2VxX0xFTihlLT52LkpvaW5lZFN0ci52YWx1ZXMpKTsKKyAgICByZXR1cm4gMTsKK30KKworLyogVXNlZCB0byBpbXBsZW1lbnQgZi1zdHJpbmdzLiBGb3JtYXQgYSBzaW5nbGUgdmFsdWUuICovCitzdGF0aWMgaW50Citjb21waWxlcl9mb3JtYXR0ZWRfdmFsdWUoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgLyogT3VyIG9wYXJnIGVuY29kZXMgMiBwaWVjZXMgb2YgaW5mb3JtYXRpb246IHRoZSBjb252ZXJzaW9uCisgICAgICAgY2hhcmFjdGVyLCBhbmQgd2hldGhlciBvciBub3QgYSBmb3JtYXRfc3BlYyB3YXMgcHJvdmlkZWQuCisKKyAgICAgICBDb252ZXJ0IHRoZSBjb252ZXJzaW9uIGNoYXIgdG8gMiBiaXRzOgorICAgICAgIE5vbmU6IDAwMCAgMHgwICBGVkNfTk9ORQorICAgICAgICFzICA6IDAwMSAgMHgxICBGVkNfU1RSCisgICAgICAgIXIgIDogMDEwICAweDIgIEZWQ19SRVBSCisgICAgICAgIWEgIDogMDExICAweDMgIEZWQ19BU0NJSQorCisgICAgICAgbmV4dCBiaXQgaXMgd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhIGZvcm1hdCBzcGVjOgorICAgICAgIHllcyA6IDEwMCAgMHg0CisgICAgICAgbm8gIDogMDAwICAweDAKKyAgICAqLworCisgICAgaW50IG9wYXJnOworCisgICAgLyogRXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gdG8gYmUgZm9ybWF0dGVkLiAqLworICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUpOworCisgICAgc3dpdGNoIChlLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24pIHsKKyAgICBjYXNlICdzJzogb3BhcmcgPSBGVkNfU1RSOyAgIGJyZWFrOworICAgIGNhc2UgJ3InOiBvcGFyZyA9IEZWQ19SRVBSOyAgYnJlYWs7CisgICAgY2FzZSAnYSc6IG9wYXJnID0gRlZDX0FTQ0lJOyBicmVhazsKKyAgICBjYXNlIC0xOiAgb3BhcmcgPSBGVkNfTk9ORTsgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKSB7CisgICAgICAgIC8qIEV2YWx1YXRlIHRoZSBmb3JtYXQgc3BlYywgYW5kIHVwZGF0ZSBvdXIgb3Bjb2RlIGFyZy4gKi8KKyAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIG9wYXJnIHw9IEZWU19IQVZFX1NQRUM7CisgICAgfQorCisgICAgLyogQW5kIHB1c2ggb3VyIG9wY29kZSBhbmQgb3BhcmcgKi8KKyAgICBBRERPUF9JKGMsIEZPUk1BVF9WQUxVRSwgb3BhcmcpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zdWJrd2FyZ3Moc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqa2V5d29yZHMsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaSwgbiA9IGVuZCAtIGJlZ2luOworICAgIGtleXdvcmRfdHkga3c7CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgYXNzZXJ0KG4gPiAwKTsKKyAgICBpZiAobiA+IDEpIHsKKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBrZXlzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9ICgoa2V5d29yZF90eSkgYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKSktPmFyZzsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXlzLCBpIC0gYmVnaW4sIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXlzLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0NPTlNUX0tFWV9NQVAsIG4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogYSBmb3IgbG9vcCBvbmx5IGV4ZWN1dGVzIG9uY2UgKi8KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrdy0+YXJnLCBjb25zdHMpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiAvKiBzaGFyZWQgY29kZSBiZXR3ZWVuIGNvbXBpbGVyX2NhbGwgYW5kIGNvbXBpbGVyX2NsYXNzICovCiBzdGF0aWMgaW50CiBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4sIC8qIEFyZ3MgYWxyZWFkeSBwdXNoZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgIGludCBuLCAvKiBBcmdzIGFscmVhZHkgcHVzaGVkICovCiAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcykKIHsKLSAgICBpbnQgY29kZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBuZWx0cywgaSwgbnNlZW4sIG5rdzsKKyAgICBQeV9zc2l6ZV90IGksIG5zZWVuLCBuZWx0cywgbmt3ZWx0czsKKyAgICBpbnQgbXVzdGRpY3R1bnBhY2sgPSAwOwogCiAgICAgLyogdGhlIG51bWJlciBvZiB0dXBsZXMgYW5kIGRpY3Rpb25hcmllcyBvbiB0aGUgc3RhY2sgKi8KICAgICBQeV9zc2l6ZV90IG5zdWJhcmdzID0gMCwgbnN1Ymt3YXJncyA9IDA7CiAKLSAgICBua3cgPSAwOwotICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgb24gdGhlIHN0YWNrICovCiAgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oYXJncyk7CisgICAgbmt3ZWx0cyA9IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBtdXN0ZGljdHVucGFjayA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5zZWVuID0gbjsgIC8qIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgb24gdGhlIHN0YWNrICovCiAgICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoYXJncywgaSk7CiAgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CiAgICAgICAgICAgICAvKiBBIHN0YXItYXJnLiBJZiB3ZSd2ZSBzZWVuIHBvc2l0aW9uYWwgYXJndW1lbnRzLAotICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhCi0gICAgICAgICAgICAgICB0dXBsZS4gKi8KKyAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYSB0dXBsZS4gKi8KICAgICAgICAgICAgIGlmIChuc2VlbikgewogICAgICAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKICAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CkBAIC0zMjAzLDkyICszNTM4LDc4IEBACiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CiAgICAgICAgICAgICBuc3ViYXJncysrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzKSB7Ci0gICAgICAgICAgICAvKiBXZSd2ZSBzZWVuIHN0YXItYXJncyBhbHJlYWR5LCBzbyB3ZQotICAgICAgICAgICAgICAgY291bnQgdG93YXJkcyBpdGVtcy10by1wYWNrLWludG8tdHVwbGUuICovCisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKICAgICAgICAgICAgIG5zZWVuKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBiZWZvcmUgc3Rhci1hcmd1bWVudHMKLSAgICAgICAgICAgICAgIGFyZSBsZWZ0IG9uIHRoZSBzdGFjay4gKi8KLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7Ci0gICAgICAgICAgICBuKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAqLwotICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7Ci0gICAgICAgIG5zdWJhcmdzKys7Ci0gICAgfQotICAgIGlmIChuc3ViYXJncykgewotICAgICAgICBjb2RlIHw9IDE7Ci0gICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKLSAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCi0gICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCi0gICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0xJU1RfVU5QQUNLLCBuc3ViYXJncyk7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBTYW1lIGRhbmNlIGFnYWluIGZvciBrZXl3b3JkIGFyZ3VtZW50cyAqLwotICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyAqLwotICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykgewotICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKLSAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZy4gKi8KLSAgICAgICAgICAgIGlmIChuc2VlbikgewotICAgICAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuc2Vlbik7Ci0gICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgIGlmIChuc3ViYXJncyB8fCBtdXN0ZGljdHVucGFjaykgeworICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOworICAgICAgICAgICAgbnN1YmFyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAorICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLCBuc3ViYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MgPT0gMCkgeworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmcuICovCisgICAgICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3Via3dhcmdzKGMsIGtleXdvcmRzLCBpIC0gbnNlZW4sIGkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICAgICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOwogICAgICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBuc2VlbisrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcga2V5d29yZCBhcmd1bWVudHMuICovCisgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1Ymt3YXJncyhjLCBrZXl3b3Jkcywgbmt3ZWx0cyAtIG5zZWVuLCBua3dlbHRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuc3Via3dhcmdzKSB7Ci0gICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGRpY3QuICovCi0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOwotICAgICAgICAgICAgbnNlZW4rKzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIGtleXdvcmQgYXJndW1lbnQgKi8KLSAgICAgICAgICAgIFZJU0lUKGMsIGtleXdvcmQsIGt3KQotICAgICAgICAgICAgbmt3Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLwotICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOwotICAgICAgICBuc3Via3dhcmdzKys7Ci0gICAgfQotICAgIGlmIChuc3Via3dhcmdzKSB7Ci0gICAgICAgIGNvZGUgfD0gMjsKICAgICAgICAgaWYgKG5zdWJrd2FyZ3MgPiAxKSB7CiAgICAgICAgICAgICAvKiBQYWNrIGl0IGFsbCB1cCAqLwotICAgICAgICAgICAgaW50IGZ1bmN0aW9uX3BvcyA9IG4gKyAoY29kZSAmIDEpICsgMiAqIG5rdyArIDE7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBuc3Via3dhcmdzIHwgKGZ1bmN0aW9uX3BvcyA8PCA4KSk7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBuc3Via3dhcmdzKTsKICAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fRVgsIG5zdWJrd2FyZ3MgPiAwKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGFzc2VydChuIDwgMTw8OCk7Ci0gICAgYXNzZXJ0KG5rdyA8IDE8PDI0KTsKLSAgICBuIHw9IG5rdyA8PCA4OwotCi0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9WQVIsIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9LVywgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX1ZBUl9LVywgbik7Ci0gICAgICAgIGJyZWFrOworICAgIGVsc2UgaWYgKG5rd2VsdHMpIHsKKyAgICAgICAgUHlPYmplY3QgKm5hbWVzOworICAgICAgICBWSVNJVF9TRVEoYywga2V5d29yZCwga2V5d29yZHMpOworICAgICAgICBuYW1lcyA9IFB5VHVwbGVfTmV3KG5rd2VsdHMpOworICAgICAgICBpZiAobmFtZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa3ctPmFyZyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5hbWVzLCBpLCBrdy0+YXJnKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIG5hbWVzLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fS1csIG4gKyBuZWx0cyArIG5rd2VsdHMpOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgZWxzZSB7CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgbiArIG5lbHRzKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogfQogCiAKQEAgLTMzMDcsMTEgKzM2MjgsMjggQEAKICAgICAtIGl0ZXJhdGUgb3ZlciB0aGUgZ2VuZXJhdG9yIHNlcXVlbmNlIGluc3RlYWQgb2YgdXNpbmcgcmVjdXJzaW9uCiAqLwogCisKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKIHsKKyAgICBjb21wcmVoZW5zaW9uX3R5IGdlbjsKKyAgICBnZW4gPSAoY29tcHJlaGVuc2lvbl90eSlhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgZ2VuX2luZGV4KTsKKyAgICBpZiAoZ2VuLT5pc19hc3luYykgeworICAgICAgICByZXR1cm4gY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICBjLCBnZW5lcmF0b3JzLCBnZW5faW5kZXgsIGVsdCwgdmFsLCB0eXBlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgIGMsIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwgZWx0LCB2YWwsIHR5cGUpOworICAgIH0KK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQorewogICAgIC8qIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBpdGVyYXRvciwgdGhlbiBlYWNoIG9mIHRoZSBpZnMsCiAgICAgICAgYW5kIHRoZW4gd3JpdGUgdG8gdGhlIGVsZW1lbnQgKi8KIApAQCAtMzM5OCwyMCArMzczNiwxNjcgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKK3sKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCisgICAgY29tcHJlaGVuc2lvbl90eSBnZW47CisgICAgYmFzaWNibG9jayAqYW5jaG9yLCAqc2tpcCwgKmlmX2NsZWFudXAsICp0cnksCisgICAgICAgICAgICAgICAqYWZ0ZXJfdHJ5LCAqZXhjZXB0LCAqdHJ5X2NsZWFudXA7CisgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgUHlPYmplY3QgKnN0b3BfYWl0ZXJfZXJyb3IgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9TdG9wQXN5bmNJdGVyYXRpb24pOworICAgIGlmIChzdG9wX2FpdGVyX2Vycm9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdHJ5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFmdGVyX3RyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICB0cnlfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBleGNlcHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgc2tpcCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBpZl9jbGVhbnVwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFuY2hvciA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKworICAgIGlmIChza2lwID09IE5VTEwgfHwgaWZfY2xlYW51cCA9PSBOVUxMIHx8IGFuY2hvciA9PSBOVUxMIHx8CisgICAgICAgICAgICB0cnkgPT0gTlVMTCB8fCBhZnRlcl90cnkgPT0gTlVMTCB8fAorICAgICAgICAgICAgZXhjZXB0ID09IE5VTEwgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZ2VuID0gKGNvbXByZWhlbnNpb25fdHkpYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIGdlbl9pbmRleCk7CisKKyAgICBpZiAoZ2VuX2luZGV4ID09IDApIHsKKyAgICAgICAgLyogUmVjZWl2ZSBvdXRlcm1vc3QgaXRlciBhcyBhbiBpbXBsaWNpdCBhcmd1bWVudCAqLworICAgICAgICBjLT51LT51X2FyZ2NvdW50ID0gMTsKKyAgICAgICAgQURET1BfSShjLCBMT0FEX0ZBU1QsIDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU3ViLWl0ZXIgLSBjYWxjdWxhdGUgb24gdGhlIGZseSAqLworICAgICAgICBWSVNJVChjLCBleHByLCBnZW4tPml0ZXIpOworICAgICAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0KKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeSk7CisKKworICAgIEFERE9QX0pSRUwoYywgU0VUVVBfRVhDRVBULCBleGNlcHQpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCB0cnkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFERE9QKGMsIEdFVF9BTkVYVCk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIFZJU0lUKGMsIGV4cHIsIGdlbi0+dGFyZ2V0KTsKKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCB0cnkpOworICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBhZnRlcl90cnkpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOworICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BfYWl0ZXJfZXJyb3IsIG5hbWVzKTsKKyAgICBBRERPUF9JKGMsIENPTVBBUkVfT1AsIFB5Q21wX0VYQ19NQVRDSCk7CisgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgdHJ5X2NsZWFudXApOworCisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX0VYQ0VQVCk7IC8qIGZvciBTRVRVUF9FWENFUFQgKi8KKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGFuY2hvcik7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeV9jbGVhbnVwKTsKKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl90cnkpOworCisgICAgbiA9IGFzZGxfc2VxX0xFTihnZW4tPmlmcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBleHByX3R5IGUgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZ2VuLT5pZnMsIGkpOworICAgICAgICBWSVNJVChjLCBleHByLCBlKTsKKyAgICAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgaWZfY2xlYW51cCk7CisgICAgICAgIE5FWFRfQkxPQ0soYyk7CisgICAgfQorCisgICAgaWYgKCsrZ2VuX2luZGV4IDwgYXNkbF9zZXFfTEVOKGdlbmVyYXRvcnMpKQorICAgICAgICBpZiAoIWNvbXBpbGVyX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCwgdmFsLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBvbmx5IGFwcGVuZCBhZnRlciB0aGUgbGFzdCBmb3IgZ2VuZXJhdG9yICovCisgICAgaWYgKGdlbl9pbmRleCA+PSBhc2RsX3NlcV9MRU4oZ2VuZXJhdG9ycykpIHsKKyAgICAgICAgLyogY29tcHJlaGVuc2lvbiBzcGVjaWZpYyBjb2RlICovCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENPTVBfR0VORVhQOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QKGMsIFlJRUxEX1ZBTFVFKTsKKyAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9MSVNUQ09NUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIExJU1RfQVBQRU5ELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfU0VUQ09NUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIFNFVF9BREQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9ESUNUQ09NUDoKKyAgICAgICAgICAgIC8qIFdpdGggJ2Rba10gPSB2JywgdiBpcyBldmFsdWF0ZWQgYmVmb3JlIGssIHNvIHdlIGRvCisgICAgICAgICAgICAgICB0aGUgc2FtZS4gKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHZhbCk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBNQVBfQURELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBza2lwKTsKKyAgICB9CisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgaWZfY2xlYW51cCk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCB0cnkpOworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGFuY2hvcik7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfY29tcHJlaGVuc2lvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGV4cHJfdHkgZWx0LAogICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbCkKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBleHByX3R5IG91dGVybW9zdF9pdGVyOworICAgIGNvbXByZWhlbnNpb25fdHkgb3V0ZXJtb3N0OwogICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IE5VTEw7CisgICAgaW50IGlzX2FzeW5jX2Z1bmN0aW9uID0gYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmU7CisgICAgaW50IGlzX2FzeW5jX2dlbmVyYXRvciA9IDA7CiAKLSAgICBvdXRlcm1vc3RfaXRlciA9ICgoY29tcHJlaGVuc2lvbl90eSkKLSAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCkpLT5pdGVyOworICAgIG91dGVybW9zdCA9IChjb21wcmVoZW5zaW9uX3R5KSBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCk7CiAKICAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCisgICAgewogICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlzX2FzeW5jX2dlbmVyYXRvciA9IGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lOworCisgICAgaWYgKGlzX2FzeW5jX2dlbmVyYXRvciAmJiAhaXNfYXN5bmNfZnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGUtPmxpbmVubyA+IGMtPnUtPnVfbGluZW5vKSB7CisgICAgICAgICAgICBjLT51LT51X2xpbmVubyA9IGUtPmxpbmVubzsKKyAgICAgICAgICAgIGMtPnUtPnVfbGluZW5vX3NldCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZXJfZXJyb3IoYywgImFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9uIG91dHNpZGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIik7CisgICAgICAgIGdvdG8gZXJyb3JfaW5fc2NvcGU7CisgICAgfQogCiAgICAgaWYgKHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKICAgICAgICAgaW50IG9wOwpAQCAtMzQ1NCw5ICszOTM5LDI0IEBACiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCi0gICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0X2l0ZXIpOwotICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3QtPml0ZXIpOworCisgICAgaWYgKG91dGVybW9zdC0+aXNfYXN5bmMpIHsKKyAgICAgICAgQURET1AoYywgR0VUX0FJVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgfQorCiAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCAxKTsKKworICAgIGlmIChpc19hc3luY19nZW5lcmF0b3IgJiYgdHlwZSAhPSBDT01QX0dFTkVYUCkgeworICAgICAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9CisKICAgICByZXR1cm4gMTsKIGVycm9yX2luX3Njb3BlOgogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0zNTMxLDcgKzQwMzEsNiBAQAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfa2V5d29yZChzdHJ1Y3QgY29tcGlsZXIgKmMsIGtleXdvcmRfdHkgaykKIHsKLSAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGstPmFyZywgY29uc3RzKTsKICAgICBWSVNJVChjLCBleHByLCBrLT52YWx1ZSk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0zNTQ5LDYgKzQwNDgsOCBAQAogICAgIHN3aXRjaCAoZS0+a2luZCkgewogICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKICAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuQ29uc3RhbnQudmFsdWUpOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5OdW0ubik7CiAgICAgY2FzZSBTdHJfa2luZDoKQEAgLTM1OTIsOSArNDA5Myw5IEBACiAgICAgICAgQkxPQ0sKICAgIGZpbmFsbHk6CiAgICAgICAgaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQ6Ci0gICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQorICAgICAgICAgICBleGMgPSBjb3B5IG9mIChleGNlcHRpb24sIGluc3RhbmNlLCB0cmFjZWJhY2spCiAgICAgICAgZWxzZToKLSAgICAgICBleGMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgaWYgbm90IChhd2FpdCBleGl0KCpleGMpKToKICAgICAgICAgICAgcmFpc2UKICAqLwpAQCAtMzc5NCw4ICs0Mjk1LDYgQEAKICAgICBjYXNlIFlpZWxkX2tpbmQ6CiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uIik7Ci0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCi0gICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik7CiAgICAgICAgIGlmIChlLT52LllpZWxkLnZhbHVlKSB7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkLnZhbHVlKTsKICAgICAgICAgfQpAQCAtMzgyMCwxMSArNDMxOSw4IEBACiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ2F3YWl0JyBvdXRzaWRlIGZ1bmN0aW9uIik7CiAKLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAotICAgICAgICAgICAgICAgIGMsICInYXdhaXQnIGV4cHJlc3Npb25zIGluIGNvbXByZWhlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7Ci0KLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTiAmJgorICAgICAgICAgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKIAogICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKQEAgLTM4MzYsMTIgKzQzMzIsMTkgQEAKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbXBhcmUoYywgZSk7CiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jYWxsKGMsIGUpOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LkNvbnN0YW50LnZhbHVlLCBjb25zdHMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuTnVtLm4sIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5TdHIucywgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2pvaW5lZF9zdHIoYywgZSk7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfZm9ybWF0dGVkX3ZhbHVlKGMsIGUpOwogICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LkJ5dGVzLnMsIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzk3Niw2ICs0NDc5LDE0NCBAQAogfQogCiBzdGF0aWMgaW50CitjaGVja19hbm5fZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVChjLCBleHByLCBlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5ub3RhdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK3sKKyAgICAvKiBBbm5vdGF0aW9ucyBhcmUgb25seSBldmFsdWF0ZWQgaW4gYSBtb2R1bGUgb3IgY2xhc3MuICovCisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgfHwKKyAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSB7CisgICAgICAgIHJldHVybiBjaGVja19hbm5fZXhwcihjLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubl9zbGljZShzdHJ1Y3QgY29tcGlsZXIgKmMsIHNsaWNlX3R5IHNsKQoreworICAgIHN3aXRjaChzbC0+a2luZCkgeworICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgcmV0dXJuIGNoZWNrX2Fubl9leHByKGMsIHNsLT52LkluZGV4LnZhbHVlKTsKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIGlmIChzbC0+di5TbGljZS5sb3dlciAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2UubG93ZXIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2wtPnYuU2xpY2UudXBwZXIgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLnVwcGVyKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLnN0ZXAgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLnN0ZXApKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBzbGljZSBraW5kIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5uX3N1YnNjcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHNsaWNlX3R5IHNsKQoreworICAgIC8qIFdlIGNoZWNrIHRoYXQgZXZlcnl0aGluZyBpbiBhIHN1YnNjcmlwdCBpcyBkZWZpbmVkIGF0IHJ1bnRpbWUuICovCisgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgc3dpdGNoIChzbC0+a2luZCkgeworICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIGlmICghY2hlY2tfYW5uX3NsaWNlKGMsIHNsKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRTbGljZV9raW5kOgorICAgICAgICBuID0gYXNkbF9zZXFfTEVOKHNsLT52LkV4dFNsaWNlLmRpbXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBzbGljZV90eSBzdWJzbCA9IChzbGljZV90eSlhc2RsX3NlcV9HRVQoc2wtPnYuRXh0U2xpY2UuZGltcywgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKHN1YnNsLT5raW5kKSB7CisgICAgICAgICAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgICAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKCFjaGVja19hbm5fc2xpY2UoYywgc3Vic2wpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0U2xpY2Vfa2luZDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0ZW5kZWQgc2xpY2UgaW52YWxpZCBpbiBuZXN0ZWQgc2xpY2UiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBzdWJzY3JpcHQga2luZCAlZCIsIHNsLT5raW5kKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9hbm5hc3NpZ24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgZXhwcl90eSB0YXJnID0gcy0+di5Bbm5Bc3NpZ24udGFyZ2V0OworICAgIFB5T2JqZWN0KiBtYW5nbGVkOworCisgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQW5uQXNzaWduX2tpbmQpOworCisgICAgLyogV2UgcGVyZm9ybSB0aGUgYWN0dWFsIGFzc2lnbm1lbnQgZmlyc3QuICovCisgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdGFyZyk7CisgICAgfQorICAgIHN3aXRjaCAodGFyZy0+a2luZCkgeworICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAvKiBJZiB3ZSBoYXZlIGEgc2ltcGxlIG5hbWUgaW4gYSBtb2R1bGUgb3IgY2xhc3MsIHN0b3JlIGFubm90YXRpb24uICovCisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFIHx8CisgICAgICAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSkgeworICAgICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUoYy0+dS0+dV9wcml2YXRlLCB0YXJnLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKCFtYW5nbGVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgICAgIC8qIEFERE9QX04gZGVjcmVmcyBpdHMgYXJndW1lbnQgKi8KKyAgICAgICAgICAgIEFERE9QX04oYywgU1RPUkVfQU5OT1RBVElPTiwgbWFuZ2xlZCwgbmFtZXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgIGlmICghcy0+di5Bbm5Bc3NpZ24udmFsdWUgJiYKKyAgICAgICAgICAgICFjaGVja19hbm5fZXhwcihjLCB0YXJnLT52LkF0dHJpYnV0ZS52YWx1ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIGlmICghcy0+di5Bbm5Bc3NpZ24udmFsdWUgJiYKKyAgICAgICAgICAgICghY2hlY2tfYW5uX2V4cHIoYywgdGFyZy0+di5TdWJzY3JpcHQudmFsdWUpIHx8CisgICAgICAgICAgICAgIWNoZWNrX2Fubl9zdWJzY3IoYywgdGFyZy0+di5TdWJzY3JpcHQuc2xpY2UpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG5vZGUgdHlwZSAoJWQpIGZvciBhbm5vdGF0ZWQgYXNzaWdubWVudCIsCisgICAgICAgICAgICAgICAgICAgICB0YXJnLT5raW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvKiBBbm5vdGF0aW9uIGlzIGV2YWx1YXRlZCBsYXN0LiAqLworICAgIGlmICghcy0+di5Bbm5Bc3NpZ24uc2ltcGxlICYmICFjaGVja19hbm5vdGF0aW9uKGMsIHMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfcHVzaF9mYmxvY2soc3RydWN0IGNvbXBpbGVyICpjLCBlbnVtIGZibG9ja3R5cGUgdCwgYmFzaWNibG9jayAqYikKIHsKICAgICBzdHJ1Y3QgZmJsb2NraW5mbyAqZjsKQEAgLTQyNzMsNyArNDkxNCw3IEBACiAgICAgYS0+YV9sbm90YWIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIERFRkFVTFRfTE5PVEFCX1NJWkUpOwogICAgIGlmICghYS0+YV9sbm90YWIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICgoc2l6ZV90KW5ibG9ja3MgPiBQWV9TSVpFX01BWCAvIHNpemVvZihiYXNpY2Jsb2NrICopKSB7CisgICAgaWYgKChzaXplX3QpbmJsb2NrcyA+IFNJWkVfTUFYIC8gc2l6ZW9mKGJhc2ljYmxvY2sgKikpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDI5NSwxOCArNDkzNiw2IEBACiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoYS0+YV9wb3N0b3JkZXIpOwogfQogCi0vKiBSZXR1cm4gdGhlIHNpemUgb2YgYSBiYXNpYyBibG9jayBpbiBieXRlcy4gKi8KLQotc3RhdGljIGludAotaW5zdHJzaXplKHN0cnVjdCBpbnN0ciAqaW5zdHIpCi17Ci0gICAgaWYgKCFpbnN0ci0+aV9oYXNhcmcpCi0gICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgIC8qIDEgYnl0ZSBmb3IgdGhlIG9wY29kZSovCi0gICAgaWYgKGluc3RyLT5pX29wYXJnID4gMHhmZmZmKQotICAgICAgICByZXR1cm4gNjsgICAgICAgICAgICAgICAvKiAxIChvcGNvZGUpICsgMSAoRVhURU5ERURfQVJHIG9wY29kZSkgKyAyIChvcGFyZykgKyAyKG9wYXJnIGV4dGVuZGVkKSAqLwotICAgIHJldHVybiAzOyAgICAgICAgICAgICAgICAgICAvKiAxIChvcGNvZGUpICsgMiAob3BhcmcpICovCi19Ci0KIHN0YXRpYyBpbnQKIGJsb2Nrc2l6ZShiYXNpY2Jsb2NrICpiKQogewpAQCAtNDMxNCw3ICs0OTQzLDcgQEAKICAgICBpbnQgc2l6ZSA9IDA7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgYi0+Yl9pdXNlZDsgaSsrKQotICAgICAgICBzaXplICs9IGluc3Ryc2l6ZSgmYi0+Yl9pbnN0cltpXSk7CisgICAgICAgIHNpemUgKz0gaW5zdHJzaXplKGItPmJfaW5zdHJbaV0uaV9vcGFyZyk7CiAgICAgcmV0dXJuIHNpemU7CiB9CiAKQEAgLTQzMjksMTEgKzQ5NTgsMTAgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CiAKLSAgICBkX2J5dGVjb2RlID0gYS0+YV9vZmZzZXQgLSBhLT5hX2xpbmVub19vZmY7CisgICAgZF9ieXRlY29kZSA9IChhLT5hX29mZnNldCAtIGEtPmFfbGluZW5vX29mZikgKiBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICBkX2xpbmVubyA9IGktPmlfbGluZW5vIC0gYS0+YV9saW5lbm87CiAKICAgICBhc3NlcnQoZF9ieXRlY29kZSA+PSAwKTsKLSAgICBhc3NlcnQoZF9saW5lbm8gPj0gMCk7CiAKICAgICBpZihkX2J5dGVjb2RlID09IDAgJiYgZF9saW5lbm8gPT0gMCkKICAgICAgICAgcmV0dXJuIDE7CkBAIC00MzYzLDkgKzQ5OTEsMjEgQEAKICAgICAgICAgZF9ieXRlY29kZSAtPSBuY29kZXMgKiAyNTU7CiAgICAgICAgIGEtPmFfbG5vdGFiX29mZiArPSBuY29kZXMgKiAyOwogICAgIH0KLSAgICBhc3NlcnQoZF9ieXRlY29kZSA8PSAyNTUpOwotICAgIGlmIChkX2xpbmVubyA+IDI1NSkgewotICAgICAgICBpbnQgaiwgbmJ5dGVzLCBuY29kZXMgPSBkX2xpbmVubyAvIDI1NTsKKyAgICBhc3NlcnQoMCA8PSBkX2J5dGVjb2RlICYmIGRfYnl0ZWNvZGUgPD0gMjU1KTsKKworICAgIGlmIChkX2xpbmVubyA8IC0xMjggfHwgMTI3IDwgZF9saW5lbm8pIHsKKyAgICAgICAgaW50IGosIG5ieXRlcywgbmNvZGVzLCBrOworICAgICAgICBpZiAoZF9saW5lbm8gPCAwKSB7CisgICAgICAgICAgICBrID0gLTEyODsKKyAgICAgICAgICAgIC8qIHVzZSBkaXZpc2lvbiBvbiBwb3NpdGl2ZSBudW1iZXJzICovCisgICAgICAgICAgICBuY29kZXMgPSAoLWRfbGluZW5vKSAvIDEyODsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGsgPSAxMjc7CisgICAgICAgICAgICBuY29kZXMgPSBkX2xpbmVubyAvIDEyNzsKKyAgICAgICAgfQorICAgICAgICBkX2xpbmVubyAtPSBuY29kZXMgKiBrOworICAgICAgICBhc3NlcnQobmNvZGVzID49IDEpOwogICAgICAgICBuYnl0ZXMgPSBhLT5hX2xub3RhYl9vZmYgKyAyICogbmNvZGVzOwogICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfbG5vdGFiKTsKICAgICAgICAgaWYgKG5ieXRlcyA+PSBsZW4pIHsKQEAgLTQzODMsMTUgKzUwMjMsMTUgQEAKICAgICAgICAgbG5vdGFiID0gKHVuc2lnbmVkIGNoYXIgKikKICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2xub3RhYikgKyBhLT5hX2xub3RhYl9vZmY7CiAgICAgICAgICpsbm90YWIrKyA9IGRfYnl0ZWNvZGU7Ci0gICAgICAgICpsbm90YWIrKyA9IDI1NTsKKyAgICAgICAgKmxub3RhYisrID0gazsKICAgICAgICAgZF9ieXRlY29kZSA9IDA7CiAgICAgICAgIGZvciAoaiA9IDE7IGogPCBuY29kZXM7IGorKykgewogICAgICAgICAgICAgKmxub3RhYisrID0gMDsKLSAgICAgICAgICAgICpsbm90YWIrKyA9IDI1NTsKKyAgICAgICAgICAgICpsbm90YWIrKyA9IGs7CiAgICAgICAgIH0KLSAgICAgICAgZF9saW5lbm8gLT0gbmNvZGVzICogMjU1OwogICAgICAgICBhLT5hX2xub3RhYl9vZmYgKz0gbmNvZGVzICogMjsKICAgICB9CisgICAgYXNzZXJ0KC0xMjggPD0gZF9saW5lbm8gJiYgZF9saW5lbm8gPD0gMTI3KTsKIAogICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9sbm90YWIpOwogICAgIGlmIChhLT5hX2xub3RhYl9vZmYgKyAyID49IGxlbikgewpAQCAtNDQyMywzOCArNTA2MywyMyBAQAogc3RhdGljIGludAogYXNzZW1ibGVfZW1pdChzdHJ1Y3QgYXNzZW1ibGVyICphLCBzdHJ1Y3QgaW5zdHIgKmkpCiB7Ci0gICAgaW50IHNpemUsIGFyZyA9IDAsIGV4dCA9IDA7CisgICAgaW50IHNpemUsIGFyZyA9IDA7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfYnl0ZWNvZGUpOwotICAgIGNoYXIgKmNvZGU7CisgICAgX1B5X0NPREVVTklUICpjb2RlOwogCi0gICAgc2l6ZSA9IGluc3Ryc2l6ZShpKTsKLSAgICBpZiAoaS0+aV9oYXNhcmcpIHsKLSAgICAgICAgYXJnID0gaS0+aV9vcGFyZzsKLSAgICAgICAgZXh0ID0gYXJnID4+IDE2OwotICAgIH0KKyAgICBhcmcgPSBpLT5pX29wYXJnOworICAgIHNpemUgPSBpbnN0cnNpemUoYXJnKTsKICAgICBpZiAoaS0+aV9saW5lbm8gJiYgIWFzc2VtYmxlX2xub3RhYihhLCBpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPmFfb2Zmc2V0ICsgc2l6ZSA+PSBsZW4pIHsKKyAgICBpZiAoYS0+YV9vZmZzZXQgKyBzaXplID49IGxlbiAvIChpbnQpc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLT5hX2J5dGVjb2RlLCBsZW4gKiAyKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgY29kZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfYnl0ZWNvZGUpICsgYS0+YV9vZmZzZXQ7CisgICAgY29kZSA9IChfUHlfQ09ERVVOSVQgKilQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2J5dGVjb2RlKSArIGEtPmFfb2Zmc2V0OwogICAgIGEtPmFfb2Zmc2V0ICs9IHNpemU7Ci0gICAgaWYgKHNpemUgPT0gNikgewotICAgICAgICBhc3NlcnQoaS0+aV9oYXNhcmcpOwotICAgICAgICAqY29kZSsrID0gKGNoYXIpRVhURU5ERURfQVJHOwotICAgICAgICAqY29kZSsrID0gZXh0ICYgMHhmZjsKLSAgICAgICAgKmNvZGUrKyA9IGV4dCA+PiA4OwotICAgICAgICBhcmcgJj0gMHhmZmZmOwotICAgIH0KLSAgICAqY29kZSsrID0gaS0+aV9vcGNvZGU7Ci0gICAgaWYgKGktPmlfaGFzYXJnKSB7Ci0gICAgICAgIGFzc2VydChzaXplID09IDMgfHwgc2l6ZSA9PSA2KTsKLSAgICAgICAgKmNvZGUrKyA9IGFyZyAmIDB4ZmY7Ci0gICAgICAgICpjb2RlKysgPSBhcmcgPj4gODsKLSAgICB9CisgICAgd3JpdGVfb3BfYXJnKGNvZGUsIGktPmlfb3Bjb2RlLCBhcmcsIHNpemUpOwogICAgIHJldHVybiAxOwogfQogCkBAIC00NDYyLDcgKzUwODcsNyBAQAogYXNzZW1ibGVfanVtcF9vZmZzZXRzKHN0cnVjdCBhc3NlbWJsZXIgKmEsIHN0cnVjdCBjb21waWxlciAqYykKIHsKICAgICBiYXNpY2Jsb2NrICpiOwotICAgIGludCBic2l6ZSwgdG90c2l6ZSwgZXh0ZW5kZWRfYXJnX2NvdW50ID0gMCwgbGFzdF9leHRlbmRlZF9hcmdfY291bnQ7CisgICAgaW50IGJzaXplLCB0b3RzaXplLCBleHRlbmRlZF9hcmdfcmVjb21waWxlOwogICAgIGludCBpOwogCiAgICAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiBlYWNoIGJsb2NrIGFuZCBmaXh1cCBqdW1wIGFyZ3MuCkBAIC00NDc1LDI3ICs1MTAwLDI3IEBACiAgICAgICAgICAgICBiLT5iX29mZnNldCA9IHRvdHNpemU7CiAgICAgICAgICAgICB0b3RzaXplICs9IGJzaXplOwogICAgICAgICB9Ci0gICAgICAgIGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50ID0gZXh0ZW5kZWRfYXJnX2NvdW50OwotICAgICAgICBleHRlbmRlZF9hcmdfY291bnQgPSAwOworICAgICAgICBleHRlbmRlZF9hcmdfcmVjb21waWxlID0gMDsKICAgICAgICAgZm9yIChiID0gYy0+dS0+dV9ibG9ja3M7IGIgIT0gTlVMTDsgYiA9IGItPmJfbGlzdCkgewogICAgICAgICAgICAgYnNpemUgPSBiLT5iX29mZnNldDsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiLT5iX2l1c2VkOyBpKyspIHsKICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5zdHIgKmluc3RyID0gJmItPmJfaW5zdHJbaV07CisgICAgICAgICAgICAgICAgaW50IGlzaXplID0gaW5zdHJzaXplKGluc3RyLT5pX29wYXJnKTsKICAgICAgICAgICAgICAgICAvKiBSZWxhdGl2ZSBqdW1wcyBhcmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8KICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhZnRlciBmZXRjaGluZwogICAgICAgICAgICAgICAgICAgIHRoZSBqdW1wIGluc3RydWN0aW9uLgogICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgYnNpemUgKz0gaW5zdHJzaXplKGluc3RyKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfamFicykKKyAgICAgICAgICAgICAgICBic2l6ZSArPSBpc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfamFicyB8fCBpbnN0ci0+aV9qcmVsKSB7CiAgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnID0gaW5zdHItPmlfdGFyZ2V0LT5iX29mZnNldDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnN0ci0+aV9qcmVsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBkZWx0YSA9IGluc3RyLT5pX3RhcmdldC0+Yl9vZmZzZXQgLSBic2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgPSBkZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2pyZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnIC09IGJzaXplOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHJzaXplKGluc3RyLT5pX29wYXJnKSAhPSBpc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfb3BhcmcgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZ19jb3VudCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQ1MDUsNyArNTEzMCw3IEBACiAKICAgICAgICAgVGhlIGlzc3VlIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGxvb3AgYmxvY2tzaXplKCkgaXMgY2FsbGVkCiAgICAgICAgIHdoaWNoIGNhbGxzIGluc3Ryc2l6ZSgpIHdoaWNoIHJlcXVpcmVzIGlfb3BhcmcgYmUgc2V0Ci0gICAgICAgIGFwcHJvcHJpYXRlbHkuICAgICAgICAgIFRoZXJlIGlzIGEgYm9vdHN0cmFwIHByb2JsZW0gYmVjYXVzZQorICAgICAgICBhcHByb3ByaWF0ZWx5LiBUaGVyZSBpcyBhIGJvb3RzdHJhcCBwcm9ibGVtIGJlY2F1c2UKICAgICAgICAgaV9vcGFyZyBpcyBjYWxjdWxhdGVkIGluIHRoZSBzZWNvbmQgbG9vcCBhYm92ZS4KIAogICAgICAgICBTbyB3ZSBsb29wIHVudGlsIHdlIHN0b3Agc2VlaW5nIG5ldyBFWFRFTkRFRF9BUkdzLgpAQCAtNDUxMyw3ICs1MTM4LDcgQEAKICAgICAgICAgb25lcyBpbiBqdW1wIGluc3RydWN0aW9ucy4gIFNvIHRoaXMgc2hvdWxkIGNvbnZlcmdlCiAgICAgICAgIGZhaXJseSBxdWlja2x5LgogICAgICovCi0gICAgfSB3aGlsZSAobGFzdF9leHRlbmRlZF9hcmdfY291bnQgIT0gZXh0ZW5kZWRfYXJnX2NvdW50KTsKKyAgICB9IHdoaWxlIChleHRlbmRlZF9hcmdfcmVjb21waWxlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1NDksOCArNTE3NCwxMiBAQAogICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFMgfCBDT19PUFRJTUlaRUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9uZXN0ZWQpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19ORVNURUQ7Ci0gICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgIXN0ZS0+c3RlX2Nvcm91dGluZSkKICAgICAgICAgICAgIGZsYWdzIHw9IENPX0dFTkVSQVRPUjsKKyAgICAgICAgaWYgKCFzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgc3RlLT5zdGVfY29yb3V0aW5lKQorICAgICAgICAgICAgZmxhZ3MgfD0gQ09fQ09ST1VUSU5FOworICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yICYmIHN0ZS0+c3RlX2Nvcm91dGluZSkKKyAgICAgICAgICAgIGZsYWdzIHw9IENPX0FTWU5DX0dFTkVSQVRPUjsKICAgICAgICAgaWYgKHN0ZS0+c3RlX3ZhcmFyZ3MpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19WQVJBUkdTOwogICAgICAgICBpZiAoc3RlLT5zdGVfdmFya2V5d29yZHMpCkBAIC00NjU5LDkgKzUyODgsOSBAQAogICAgIGNoYXIgYXJnWzEyOF07CiAKICAgICAqYXJnID0gJ1wwJzsKLSAgICBpZiAoaS0+aV9oYXNhcmcpCisgICAgaWYgKEhBU19BUkcoaS0+aV9vcGNvZGUpKSB7CiAgICAgICAgIHNwcmludGYoYXJnLCAiYXJnOiAlZCAiLCBpLT5pX29wYXJnKTsKLQorICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgImxpbmU6ICVkLCBvcGNvZGU6ICVkICVzJXMlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaS0+aV9saW5lbm8sIGktPmlfb3Bjb2RlLCBhcmcsIGphYnMsIGpyZWwpOwogfQpAQCAtNDcxMSw3ICs1MzQwLDcgQEAKIAogICAgIC8qIFNldCBmaXJzdGxpbmVubyBpZiBpdCB3YXNuJ3QgZXhwbGljaXRseSBzZXQuICovCiAgICAgaWYgKCFjLT51LT51X2ZpcnN0bGluZW5vKSB7Ci0gICAgICAgIGlmIChlbnRyeWJsb2NrICYmIGVudHJ5YmxvY2stPmJfaW5zdHIpCisgICAgICAgIGlmIChlbnRyeWJsb2NrICYmIGVudHJ5YmxvY2stPmJfaW5zdHIgJiYgZW50cnlibG9jay0+Yl9pbnN0ci0+aV9saW5lbm8pCiAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vID0gZW50cnlibG9jay0+Yl9pbnN0ci0+aV9saW5lbm87CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8gPSAxOwpAQCAtNDczMyw3ICs1MzYyLDcgQEAKIAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9sbm90YWIsIGEuYV9sbm90YWJfb2ZmKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2J5dGVjb2RlLCBhLmFfb2Zmc2V0KSA8IDApCisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2J5dGVjb2RlLCBhLmFfb2Zmc2V0ICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGNvID0gbWFrZWNvZGUoYywgJmEpOwpAQCAtNDc0OSw0ICs1Mzc4LDMgQEAKIHsKICAgICByZXR1cm4gUHlBU1RfQ29tcGlsZUV4KG1vZCwgZmlsZW5hbWUsIGZsYWdzLCAtMSwgYXJlbmEpOwogfQotCmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaAppbmRleCBjZWQ5MTBmLi45YTcxYjE3IDEwMDY0NAotLS0gYS9QeXRob24vY29uZHZhci5oCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTg5LDcgKzg5LDcgQEAKIAogLyogcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIDEgb24gdGltZW91dCwgLTEgb24gZXJyb3IgKi8KIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjb25kLCBQeU1VVEVYX1QgKm11dCwgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIGxvbmcgbG9uZyB1cykKIHsKICAgICBpbnQgcjsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CkBAIC0yNzAsNyArMjcwLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyBsb25nIHVzKQogewogICAgIHJldHVybiBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCAoRFdPUkQpKHVzLzEwMDApKTsKIH0KQEAgLTM2Myw3ICszNjMsNyBAQAogICogMiB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IGtub3cuCiAgKi8KIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgbG9uZyB1cykKIHsKICAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIChEV09SRCkodXMvMTAwMCksIDApID8gMiA6IC0xOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggM2RhNTQ2ZS4uZWZjYWRjMyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0xNTEsMTggKzE1MSw5IEBACiAjZW5kaWYKIAogCi0jaWYgZGVmaW5lZChIQVZFX1VJTlQzMl9UKSAmJiBkZWZpbmVkKEhBVkVfSU5UMzJfVCkKLXR5cGVkZWYgUFlfVUlOVDMyX1QgVUxvbmc7Ci10eXBlZGVmIFBZX0lOVDMyX1QgTG9uZzsKLSNlbHNlCi0jZXJyb3IgIkZhaWxlZCB0byBmaW5kIGFuIGV4YWN0LXdpZHRoIDMyLWJpdCBpbnRlZ2VyIHR5cGUiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoSEFWRV9VSU5UNjRfVCkKLSNkZWZpbmUgVUxMb25nIFBZX1VJTlQ2NF9UCi0jZWxzZQotI3VuZGVmIFVMTG9uZwotI2VuZGlmCit0eXBlZGVmIHVpbnQzMl90IFVMb25nOwordHlwZWRlZiBpbnQzMl90IExvbmc7Cit0eXBlZGVmIHVpbnQ2NF90IFVMTG9uZzsKIAogI3VuZGVmIERFQlVHCiAjaWZkZWYgUHlfREVCVUcKQEAgLTQ1NywxMyArNDQ4LDggQEAKIG11bHRhZGQoQmlnaW50ICpiLCBpbnQgbSwgaW50IGEpICAgICAgIC8qIG11bHRpcGx5IGJ5IG0gYW5kIGFkZCBhICovCiB7CiAgICAgaW50IGksIHdkczsKLSNpZmRlZiBVTExvbmcKICAgICBVTG9uZyAqeDsKICAgICBVTExvbmcgY2FycnksIHk7Ci0jZWxzZQotICAgIFVMb25nIGNhcnJ5LCAqeCwgeTsKLSAgICBVTG9uZyB4aSwgejsKLSNlbmRpZgogICAgIEJpZ2ludCAqYjE7CiAKICAgICB3ZHMgPSBiLT53ZHM7CkBAIC00NzEsMTcgKzQ1Nyw5IEBACiAgICAgaSA9IDA7CiAgICAgY2FycnkgPSBhOwogICAgIGRvIHsKLSNpZmRlZiBVTExvbmcKICAgICAgICAgeSA9ICp4ICogKFVMTG9uZyltICsgY2Fycnk7CiAgICAgICAgIGNhcnJ5ID0geSA+PiAzMjsKICAgICAgICAgKngrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKLSNlbHNlCi0gICAgICAgIHhpID0gKng7Ci0gICAgICAgIHkgPSAoeGkgJiAweGZmZmYpICogbSArIGNhcnJ5OwotICAgICAgICB6ID0gKHhpID4+IDE2KSAqIG0gKyAoeSA+PiAxNik7Ci0gICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgKngrKyA9ICh6IDw8IDE2KSArICh5ICYgMHhmZmZmKTsKLSNlbmRpZgogICAgIH0KICAgICB3aGlsZSgrK2kgPCB3ZHMpOwogICAgIGlmIChjYXJyeSkgewpAQCAtNjQyLDEyICs2MjAsNyBAQAogICAgIGludCBrLCB3YSwgd2IsIHdjOwogICAgIFVMb25nICp4LCAqeGEsICp4YWUsICp4YiwgKnhiZSwgKnhjLCAqeGMwOwogICAgIFVMb25nIHk7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxMb25nIGNhcnJ5LCB6OwotI2Vsc2UKLSAgICBVTG9uZyBjYXJyeSwgejsKLSAgICBVTG9uZyB6MjsKLSNlbmRpZgogCiAgICAgaWYgKCghYS0+eFswXSAmJiBhLT53ZHMgPT0gMSkgfHwgKCFiLT54WzBdICYmIGItPndkcyA9PSAxKSkgewogICAgICAgICBjID0gQmFsbG9jKDApOwpAQCAtNjc5LDcgKzY1Miw2IEBACiAgICAgeGIgPSBiLT54OwogICAgIHhiZSA9IHhiICsgd2I7CiAgICAgeGMwID0gYy0+eDsKLSNpZmRlZiBVTExvbmcKICAgICBmb3IoOyB4YiA8IHhiZTsgeGMwKyspIHsKICAgICAgICAgaWYgKCh5ID0gKnhiKyspKSB7CiAgICAgICAgICAgICB4ID0geGE7CkBAIC02OTQsMzkgKzY2Niw2IEBACiAgICAgICAgICAgICAqeGMgPSAoVUxvbmcpY2Fycnk7CiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotICAgIGZvcig7IHhiIDwgeGJlOyB4YisrLCB4YzArKykgewotICAgICAgICBpZiAoeSA9ICp4YiAmIDB4ZmZmZikgewotICAgICAgICAgICAgeCA9IHhhOwotICAgICAgICAgICAgeGMgPSB4YzA7Ci0gICAgICAgICAgICBjYXJyeSA9IDA7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgeiA9ICgqeCAmIDB4ZmZmZikgKiB5ICsgKCp4YyAmIDB4ZmZmZikgKyBjYXJyeTsKLSAgICAgICAgICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICAgICAgICAgejIgPSAoKngrKyA+PiAxNikgKiB5ICsgKCp4YyA+PiAxNikgKyBjYXJyeTsKLSAgICAgICAgICAgICAgICBjYXJyeSA9IHoyID4+IDE2OwotICAgICAgICAgICAgICAgIFN0b3JlaW5jKHhjLCB6Miwgeik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSh4IDwgeGFlKTsKLSAgICAgICAgICAgICp4YyA9IGNhcnJ5OwotICAgICAgICB9Ci0gICAgICAgIGlmICh5ID0gKnhiID4+IDE2KSB7Ci0gICAgICAgICAgICB4ID0geGE7Ci0gICAgICAgICAgICB4YyA9IHhjMDsKLSAgICAgICAgICAgIGNhcnJ5ID0gMDsKLSAgICAgICAgICAgIHoyID0gKnhjOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHogPSAoKnggJiAweGZmZmYpICogeSArICgqeGMgPj4gMTYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAgICAgICAgIFN0b3JlaW5jKHhjLCB6LCB6Mik7Ci0gICAgICAgICAgICAgICAgejIgPSAoKngrKyA+PiAxNikgKiB5ICsgKCp4YyAmIDB4ZmZmZikgKyBjYXJyeTsKLSAgICAgICAgICAgICAgICBjYXJyeSA9IHoyID4+IDE2OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUoeCA8IHhhZSk7Ci0gICAgICAgICAgICAqeGMgPSB6MjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgogICAgIGZvcih4YzAgPSBjLT54LCB4YyA9IHhjMCArIHdjOyB3YyA+IDAgJiYgISotLXhjOyAtLXdjKSA7CiAgICAgYy0+d2RzID0gd2M7CiAgICAgcmV0dXJuIGM7CkBAIC03NDcsNyArNjg2LDcgQEAKIHsKICAgICBCaWdpbnQgKmIxLCAqcDUsICpwNTE7CiAgICAgaW50IGk7Ci0gICAgc3RhdGljIGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OwogCiAgICAgaWYgKChpID0gayAmIDMpKSB7CiAgICAgICAgIGIgPSBtdWx0YWRkKGIsIHAwNVtpLTFdLCAwKTsKQEAgLTgwMyw3ICs3NDIsNyBAQAogewogICAgIEJpZ2ludCAqYjEsICpwNSwgKnA1MTsKICAgICBpbnQgaTsKLSAgICBzdGF0aWMgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CiAKICAgICBpZiAoKGkgPSBrICYgMykpIHsKICAgICAgICAgYiA9IG11bHRhZGQoYiwgcDA1W2ktMV0sIDApOwpAQCAtOTM1LDEyICs4NzQsNyBAQAogICAgIEJpZ2ludCAqYzsKICAgICBpbnQgaSwgd2EsIHdiOwogICAgIFVMb25nICp4YSwgKnhhZSwgKnhiLCAqeGJlLCAqeGM7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxMb25nIGJvcnJvdywgeTsKLSNlbHNlCi0gICAgVUxvbmcgYm9ycm93LCB5OwotICAgIFVMb25nIHo7Ci0jZW5kaWYKIAogICAgIGkgPSBjbXAoYSxiKTsKICAgICBpZiAoIWkpIHsKQEAgLTk3MSw3ICs5MDUsNiBAQAogICAgIHhiZSA9IHhiICsgd2I7CiAgICAgeGMgPSBjLT54OwogICAgIGJvcnJvdyA9IDA7Ci0jaWZkZWYgVUxMb25nCiAgICAgZG8gewogICAgICAgICB5ID0gKFVMTG9uZykqeGErKyAtICp4YisrIC0gYm9ycm93OwogICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CkBAIC05ODMsMjMgKzkxNiw2IEBACiAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgKnhjKysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7CiAgICAgfQotI2Vsc2UKLSAgICBkbyB7Ci0gICAgICAgIHkgPSAoKnhhICYgMHhmZmZmKSAtICgqeGIgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICB6ID0gKCp4YSsrID4+IDE2KSAtICgqeGIrKyA+PiAxNikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIFN0b3JlaW5jKHhjLCB6LCB5KTsKLSAgICB9Ci0gICAgd2hpbGUoeGIgPCB4YmUpOwotICAgIHdoaWxlKHhhIDwgeGFlKSB7Ci0gICAgICAgIHkgPSAoKnhhICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgeiA9ICgqeGErKyA+PiAxNikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIFN0b3JlaW5jKHhjLCB6LCB5KTsKLSAgICB9Ci0jZW5kaWYKICAgICB3aGlsZSghKi0teGMpCiAgICAgICAgIHdhLS07CiAgICAgYy0+d2RzID0gd2E7CkBAIC0xMjQ0LDEyICsxMTYwLDcgQEAKIHsKICAgICBpbnQgbjsKICAgICBVTG9uZyAqYngsICpieGUsIHEsICpzeCwgKnN4ZTsKLSNpZmRlZiBVTExvbmcKICAgICBVTExvbmcgYm9ycm93LCBjYXJyeSwgeSwgeXM7Ci0jZWxzZQotICAgIFVMb25nIGJvcnJvdywgY2FycnksIHksIHlzOwotICAgIFVMb25nIHNpLCB6LCB6czsKLSNlbmRpZgogCiAgICAgbiA9IFMtPndkczsKICNpZmRlZiBERUJVRwpAQCAtMTI3MSwyMyArMTE4MiwxMSBAQAogICAgICAgICBib3Jyb3cgPSAwOwogICAgICAgICBjYXJyeSA9IDA7CiAgICAgICAgIGRvIHsKLSNpZmRlZiBVTExvbmcKICAgICAgICAgICAgIHlzID0gKnN4KysgKiAoVUxMb25nKXEgKyBjYXJyeTsKICAgICAgICAgICAgIGNhcnJ5ID0geXMgPj4gMzI7CiAgICAgICAgICAgICB5ID0gKmJ4IC0gKHlzICYgRkZGRkZGRkYpIC0gYm9ycm93OwogICAgICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwogICAgICAgICAgICAgKmJ4KysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7Ci0jZWxzZQotICAgICAgICAgICAgc2kgPSAqc3grKzsKLSAgICAgICAgICAgIHlzID0gKHNpICYgMHhmZmZmKSAqIHEgKyBjYXJyeTsKLSAgICAgICAgICAgIHpzID0gKHNpID4+IDE2KSAqIHEgKyAoeXMgPj4gMTYpOwotICAgICAgICAgICAgY2FycnkgPSB6cyA+PiAxNjsKLSAgICAgICAgICAgIHkgPSAoKmJ4ICYgMHhmZmZmKSAtICh5cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgeiA9ICgqYnggPj4gMTYpIC0gKHpzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICBTdG9yZWluYyhieCwgeiwgeSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgICAgICB3aGlsZShzeCA8PSBzeGUpOwogICAgICAgICBpZiAoISpieGUpIHsKQEAgLTEzMDQsMjMgKzEyMDMsMTEgQEAKICAgICAgICAgYnggPSBiLT54OwogICAgICAgICBzeCA9IFMtPng7CiAgICAgICAgIGRvIHsKLSNpZmRlZiBVTExvbmcKICAgICAgICAgICAgIHlzID0gKnN4KysgKyBjYXJyeTsKICAgICAgICAgICAgIGNhcnJ5ID0geXMgPj4gMzI7CiAgICAgICAgICAgICB5ID0gKmJ4IC0gKHlzICYgRkZGRkZGRkYpIC0gYm9ycm93OwogICAgICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwogICAgICAgICAgICAgKmJ4KysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7Ci0jZWxzZQotICAgICAgICAgICAgc2kgPSAqc3grKzsKLSAgICAgICAgICAgIHlzID0gKHNpICYgMHhmZmZmKSArIGNhcnJ5OwotICAgICAgICAgICAgenMgPSAoc2kgPj4gMTYpICsgKHlzID4+IDE2KTsKLSAgICAgICAgICAgIGNhcnJ5ID0genMgPj4gMTY7Ci0gICAgICAgICAgICB5ID0gKCpieCAmIDB4ZmZmZikgLSAoeXMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIHogPSAoKmJ4ID4+IDE2KSAtICh6cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgU3RvcmVpbmMoYngsIHosIHkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoc3ggPD0gc3hlKTsKICAgICAgICAgYnggPSBiLT54OwpAQCAtMjMxNSw3ICsyMjAyLDcgQEAKIH0KIAogc3RhdGljIGNoYXIgKgotbnJ2X2FsbG9jKGNoYXIgKnMsIGNoYXIgKipydmUsIGludCBuKQorbnJ2X2FsbG9jKGNvbnN0IGNoYXIgKnMsIGNoYXIgKipydmUsIGludCBuKQogewogICAgIGNoYXIgKnJ2LCAqdDsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfd2luLmMgYi9QeXRob24vZHlubG9hZF93aW4uYwppbmRleCBmMmM3OTZlLi4wNTA1MGNmIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF93aW4uYworKysgYi9QeXRob24vZHlubG9hZF93aW4uYwpAQCAtMjQsMTIgKzI0LDEwIEBACiAjZGVmaW5lIFBZRF9ERUJVR19TVUZGSVggIiIKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0laRTIoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRTIoeCkKICNpZmRlZiBQWURfUExBVEZPUk1fVEFHCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgogI2Vsc2UKLSNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKSBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCiAjZW5kaWYKIAogI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCkBAIC00Myw3ICs0MSw3IEBACiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCi1zdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIpCitzdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCiB7CiAgICAgaW50IGZpcnN0LCBzZWNvbmQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCBiODIwNzIyLi42MDk1ODQzIDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC01Miw2ICs1MiwyMCBAQAogICAgIFB5X1hERUNSRUYob2xkdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhleGNlcHRpb24pOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChleGNlcHRpb24sIHZhbHVlLCBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbEFyZzEoZXhjZXB0aW9uLCB2YWx1ZSk7CisgICAgfQorfQorCiB2b2lkCiBQeUVycl9TZXRPYmplY3QoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQogewpAQCAtNjYsNiArODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgIGV4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOwogICAgIGlmIChleGNfdmFsdWUgIT0gTlVMTCAmJiBleGNfdmFsdWUgIT0gUHlfTm9uZSkgewpAQCAtNzMsMjggKzg4LDIxIEBACiAgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsdWUpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8qIFdlIG11c3Qgbm9ybWFsaXplIHRoZSB2YWx1ZSByaWdodCBub3cgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqZml4ZWRfdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogUHlFdmFsX0NhbGxPYmplY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgorICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBmdW5jdGlvbnMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gYXJncyA/Ci0gICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxPYmplY3QoZXhjZXB0aW9uLCBhcmdzKSA6IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKGV4Y2VwdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YWx1ZSA9IGZpeGVkX3ZhbHVlOwogICAgICAgICB9CisKICAgICAgICAgLyogQXZvaWQgcmVmZXJlbmNlIGN5Y2xlcyB0aHJvdWdoIHRoZSBjb250ZXh0IGNoYWluLgogICAgICAgICAgICBUaGlzIGlzIE8oY2hhaW4gbGVuZ3RoKSBidXQgY29udGV4dCBjaGFpbnMgYXJlCiAgICAgICAgICAgIHVzdWFsbHkgdmVyeSBzaG9ydC4gU2Vuc2l0aXZlIHJlYWRlcnMgbWF5IHRyeQpAQCAtMTEwLDcgKzExOCw4IEBACiAgICAgICAgICAgICAgICAgbyA9IGNvbnRleHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbHVlLCBleGNfdmFsdWUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfREVDUkVGKGV4Y192YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTgsMjUgKzI2NywxNSBAQAogICAgICAgICAgICBjbGFzcy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKCFpbmNsYXNzIHx8ICFpc19zdWJjbGFzcykgewotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXM7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7CisgICAgICAgICAgICBmaXhlZF92YWx1ZSA9IF9QeUVycl9DcmVhdGVFeGNlcHRpb24odHlwZSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QodHlwZSwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHZhbHVlID0gcmVzOworICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQogICAgICAgICAvKiBpZiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUKICAgICAgICAgICAgY2xhc3Mgb2YgdGhlIHR5cGUsIGJlbGlldmUgdGhlIGluc3RhbmNlCkBAIC00MDIsNiArNDAxLDQ3IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX1B5RXJyX0Zvcm1hdFZGcm9tQ2F1c2UoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp2YWwyLCAqdGI7CisKKyAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKKyAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7CisgICAgICAgIFB5X0RFQ1JFRih0Yik7CisgICAgfQorICAgIFB5X0RFQ1JFRihleGMpOworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBQeUVycl9Gb3JtYXRWKGV4Y2VwdGlvbiwgZm9ybWF0LCB2YXJncyk7CisKKyAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKKyAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7CisgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmFyZ3M7CisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICBfUHlFcnJfRm9ybWF0VkZyb21DYXVzZShleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBzZXQgYSB0eXBlIGVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIDAgKi8KIAogaW50CkBAIC03MDEsNTEgKzc0MSw2MSBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlPYmplY3QgKgotUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqbXNnLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworICAgIGludCBpc3N1YmNsYXNzOworICAgIFB5T2JqZWN0ICprd2FyZ3MsICplcnJvcjsKIAotICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICBpc3N1YmNsYXNzID0gUHlPYmplY3RfSXNTdWJjbGFzcyhleGNlcHRpb24sIFB5RXhjX0ltcG9ydEVycm9yKTsKKyAgICBpZiAoaXNzdWJjbGFzcyA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzc3ViY2xhc3MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIGEgc3ViY2xhc3Mgb2YgSW1wb3J0RXJyb3IiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAga3dhcmdzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIG1lc3NhZ2UgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBuYW1lID0gUHlfTm9uZTsKICAgICB9Ci0KICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIHBhdGggPSBQeV9Ob25lOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihtc2cpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKLQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKQorICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpIDwgMCkKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKKyAgICBlcnJvciA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZXhjZXB0aW9uLCAmbXNnLCAxLCBrd2FyZ3MpOwogICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOwogICAgIH0KIAogZG9uZToKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGt3YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICByZXR1cm4gUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19JbXBvcnRFcnJvciwgbXNnLCBuYW1lLCBwYXRoKTsKK30KKwogdm9pZAogX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9maWxldXRpbHMuYyBiL1B5dGhvbi9maWxldXRpbHMuYwppbmRleCAyM2VlZDcxLi5lODRkNjZlIDEwMDY0NAotLS0gYS9QeXRob24vZmlsZXV0aWxzLmMKKysrIGIvUHl0aG9uL2ZpbGV1dGlscy5jCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNlbmRpZiAvKiBIQVZFX0ZDTlRMX0ggKi8KIAotI2lmZGVmIF9fQVBQTEVfXworI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQogZXh0ZXJuIHdjaGFyX3QqIF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpOwogI2VuZGlmCiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNlbmRpZgogICAgIGludCB2YWxpZDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgdmFsaWQgPSBfUHlWZXJpZnlfZmQoZmQpICYmIGlzYXR0eShmZCk7CisgICAgdmFsaWQgPSBpc2F0dHkoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKCF2YWxpZCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMDQsMjMgKzEwNCwyNCBAQAogICAgIGNoYXIgKmxvYzsKICNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogICAgIGNoYXIgKmNvZGVzZXQsICoqYWxpYXM7Ci0gICAgY2hhciBlbmNvZGluZ1sxMDBdOworICAgIGNoYXIgZW5jb2RpbmdbMjBdOyAgIC8qIGxvbmdlc3QgbmFtZTogImlzb182NDYuaXJ2XzE5OTFcMCIgKi8KICAgICBpbnQgaXNfYXNjaWk7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY2hhciogYXNjaWlfYWxpYXNlc1tdID0gewogICAgICAgICAiYXNjaWkiLAorICAgICAgICAvKiBBbGlhc2VzIGZyb20gTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5ICovCiAgICAgICAgICI2NDYiLAotICAgICAgICAiYW5zaS14My40LTE5NjgiLAotICAgICAgICAiYW5zaS14My00LTE5NjgiLAotICAgICAgICAiYW5zaS14My40LTE5ODYiLAorICAgICAgICAiYW5zaV94My40XzE5NjgiLAorICAgICAgICAiYW5zaV94My40XzE5ODYiLAorICAgICAgICAiYW5zaV94M180XzE5NjgiLAogICAgICAgICAiY3AzNjciLAogICAgICAgICAiY3Nhc2NpaSIsCiAgICAgICAgICJpYm0zNjciLAotICAgICAgICAiaXNvNjQ2LXVzIiwKLSAgICAgICAgImlzby02NDYuaXJ2LTE5OTEiLAotICAgICAgICAiaXNvLWlyLTYiLAorICAgICAgICAiaXNvNjQ2X3VzIiwKKyAgICAgICAgImlzb182NDYuaXJ2XzE5OTEiLAorICAgICAgICAiaXNvX2lyXzYiLAogICAgICAgICAidXMiLAotICAgICAgICAidXMtYXNjaWkiLAorICAgICAgICAidXNfYXNjaWkiLAogICAgICAgICBOVUxMCiAgICAgfTsKICNlbmRpZgpAQCAtMjcyLDcgKzI3Myw3IEBACiB3Y2hhcl90KgogUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQogewotI2lmZGVmIF9fQVBQTEVfXworI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIHdjaGFyX3QgKndzdHI7CiAgICAgd3N0ciA9IF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShhcmcsIHN0cmxlbihhcmcpKTsKICAgICBpZiAoc2l6ZSAhPSBOVUxMKSB7CkBAIC00MDUsNyArNDA2LDcgQEAKICAgICBpZiAoc2l6ZSAhPSBOVUxMKQogICAgICAgICAqc2l6ZSA9IChzaXplX3QpLTE7CiAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYgICAvKiBfX0FQUExFX18gKi8KKyNlbmRpZiAgIC8qIF9fQVBQTEVfXyBvciBfX0FORFJPSURfXyAqLwogfQogCiAvKiBFbmNvZGUgYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcgdG8gdGhlIGxvY2FsZSBlbmNvZGluZyB3aXRoIHRoZQpAQCAtNDIzLDcgKzQyNCw3IEBACiBjaGFyKgogUHlfRW5jb2RlTG9jYWxlKGNvbnN0IHdjaGFyX3QgKnRleHQsIHNpemVfdCAqZXJyb3JfcG9zKQogewotI2lmZGVmIF9fQVBQTEVfXworI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqYnl0ZXMgPSBOVUxMOwogICAgIGNoYXIgKmNwYXRoOwpAQCAtNTIxLDcgKzUyMiw3IEBACiAgICAgICAgIGJ5dGVzID0gcmVzdWx0OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlmICAgLyogX19BUFBMRV9fICovCisjZW5kaWYgICAvKiBfX0FQUExFX18gb3IgX19BTkRST0lEX18gKi8KIH0KIAogCkBAIC02MTMsMTMgKzYxNCw5IEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICBlbHNlIHsKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7Ci0gICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgfQorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIC8qIGVycm5vIGlzIGFscmVhZHkgc2V0IGJ5IF9nZXRfb3NmaGFuZGxlLCBidXQgd2UgYWxzbyBzZXQKQEAgLTY4Myw2ICs2ODAsMTAgQEAKIHsKICAgICBpbnQgcmVzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IF9QeV9mc3RhdF9ub3JhaXNlKGZkLCBzdGF0dXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC03MzgsMTIgKzczOSw2IEBACiAgICAgSEFORExFIGhhbmRsZTsKICAgICBEV09SRCBmbGFnczsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTc5NCw3ICs3ODksNyBAQAogICAgIGludCByZXF1ZXN0OwogICAgIGludCBlcnI7CiAjZW5kaWYKLSAgICBpbnQgZmxhZ3M7CisgICAgaW50IGZsYWdzLCBuZXdfZmxhZ3M7CiAgICAgaW50IHJlczsKICNlbmRpZgogCkBAIC04MTUsMTIgKzgxMCw2IEBACiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg4NSwxMSArODc0LDE5IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGFibGUpCi0gICAgICAgIGZsYWdzICY9IH5GRF9DTE9FWEVDOwotICAgIGVsc2UKLSAgICAgICAgZmxhZ3MgfD0gRkRfQ0xPRVhFQzsKLSAgICByZXMgPSBmY250bChmZCwgRl9TRVRGRCwgZmxhZ3MpOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAgICBuZXdfZmxhZ3MgPSBmbGFncyAmIH5GRF9DTE9FWEVDOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgfCBGRF9DTE9FWEVDOworICAgIH0KKworICAgIGlmIChuZXdfZmxhZ3MgPT0gZmxhZ3MpIHsKKyAgICAgICAgLyogRkRfQ0xPRVhFQyBmbGFnIGFscmVhZHkgc2V0L2NsZWFyZWQ6IG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmVzID0gZmNudGwoZmQsIEZfU0VURkQsIG5ld19mbGFncyk7CiAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTE2OSwxOSArMTE2NiwxNSBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfcmVhZCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKICAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgZXJyID0gZXJybm87Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gSU5UX01BWCkgewogICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgY291bnQgcGFyYW1ldGVyIG9mIHJlYWQoKSBpcyBhbiBpbnQgKi8KQEAgLTEyMzUsMTYgKzEyMjgsNiBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKGdpbF9oZWxkKSB7Ci0gICAgICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCi0gICAgICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChjb3VudCA+IDMyNzY3ICYmIGlzYXR0eShmZCkpIHsKQEAgLTEzMjQsNiArMTMwNywxMCBAQAogUHlfc3NpemVfdAogX1B5X3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCiB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgLyogX1B5X3dyaXRlKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCB3cml0ZSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KQEAgLTE0NzMsMTAgKzE0NjAsOSBAQAogICAgIERXT1JEIGZ0eXBlOwogI2VuZGlmCiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xNjAwLDg0ICsxNTg2LDMgQEAKICAgICByZXR1cm4gLTE7CiB9CiAjZW5kaWYKLQotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmQgd2hpbGUgdHJhbnNpdGlvbmluZyB0bwotICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQotICovCi0KLS8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKLSAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCi0gKiBOb3JtYWxseSwgYW4gaW52YWxpZCBmZCBpcyBsaWtlbHkgdG8gYmUgYSBDIHByb2dyYW0gZXJyb3IgYW5kIHRoZXJlZm9yZQotICogYW4gYXNzZXJ0aW9uIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBkb2VzIGNvbnRyYWRpY3QgdGhlIFBPU0lYIHN0YW5kYXJkCi0gKiB3aGljaCBmb3Igd3JpdGUoMikgc3RhdGVzOgotICogICAgIk90aGVyd2lzZSwgLTEgc2hhbGwgYmUgcmV0dXJuZWQgYW5kIGVycm5vIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuIgotICogICAgIltFQkFERl0gVGhlIGZpbGRlcyBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3Igb3BlbiBmb3IKLSAqICAgICB3cml0aW5nLiIKLSAqIEZ1cnRoZXJtb3JlLCBweXRob24gYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFueSBvbGQgaW50ZWdlcgotICogYXMgYSBmZCBhbmQgc2hvdWxkIG1lcmVseSByYWlzZSBhIHB5dGhvbiBleGNlcHRpb24gb24gZXJyb3IuCi0gKiBUaGUgTWljcm9zb2Z0IENSVCBkb2Vzbid0IHByb3ZpZGUgYW4gb2ZmaWNpYWwgd2F5IHRvIGNoZWNrIGZvciB0aGUKLSAqIHZhbGlkaXR5IG9mIGEgZmlsZSBkZXNjcmlwdG9yLCBidXQgd2UgY2FuIGVtdWxhdGUgaXRzIGludGVybmFsIGJlaGF2aW91cgotICogYnkgdXNpbmcgdGhlIGV4cG9ydGVkIF9fcGluZm8gZGF0YSBtZW1iZXIgYW5kIGtub3dsZWRnZSBvZiB0aGUKLSAqIGludGVybmFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuCi0gKiBUaGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIHVwZGF0ZWQgZm9yIGVhY2ggdmVyc2lvbiBvZiB2aXN1YWwgc3R1ZGlvCi0gKiBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgaW50ZXJuYWwuaCBpbiB0aGUgQ1JUIHNvdXJjZSwgdW50aWwgTVMgY29tZXMKLSAqIHVwIHdpdGggYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgotICogKGFsbCBvZiB0aGlzIGlzIHRvIGF2b2lkIGdsb2JhbGx5IG1vZGlmeWluZyB0aGUgQ1JUIGJlaGF2aW91ciB1c2luZwotICogX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCkgYW5kIF9DcnRTZXRSZXBvcnRNb2RlKCkpCi0gKi8KLS8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIGRldGVybWluZWQgYXQgcnVudGltZS4KLSAqIE9ubHkgdGhlIGZpcnN0IGl0ZW1zIG11c3QgYmUgcHJlc2VudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludHB0cl90IG9zZmhuZDsKLSAgICBjaGFyIG9zZmlsZTsKLX0gbXlfaW9pbmZvOwotCi1leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgKiBfX3Bpb2luZm9bXTsKLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIEZPUEVOIDB4MDEKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHdoYXQgdGhlIHdpbmRvd3MgQ1JUIGRvZXMgdG8gdmFsaWRhdGUgZmlsZSBoYW5kbGVzICovCi1pbnQKLV9QeVZlcmlmeV9mZChpbnQgZmQpCi17Ci0gICAgY29uc3QgaW50IGkxID0gZmQgPj4gSU9JTkZPX0wyRTsKLSAgICBjb25zdCBpbnQgaTIgPSBmZCAmICgoMSA8PCBJT0lORk9fTDJFKSAtIDEpOwotCi0gICAgc3RhdGljIHNpemVfdCBzaXplb2ZfaW9pbmZvID0gMDsKLQotICAgIC8qIERldGVybWluZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGlvaW5mbyBzdHJ1Y3R1cmUsCi0gICAgICogYXMgdXNlZCBieSB0aGUgQ1JUIGxvYWRlZCBpbiBtZW1vcnkKLSAgICAgKi8KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwICYmIF9fcGlvaW5mb1swXSAhPSBOVUxMKSB7Ci0gICAgICAgIHNpemVvZl9pb2luZm8gPSBfbXNpemUoX19waW9pbmZvWzBdKSAvIElPSU5GT19BUlJBWV9FTFRTOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwKSB7Ci0gICAgICAgIC8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIC8qIFNlZSB0aGF0IGl0IGlzbid0IGEgc3BlY2lhbCBDTEVBUiBmaWxlbm8gKi8KLSAgICBpZiAoZmQgIT0gX05PX0NPTlNPTEVfRklMRU5PKSB7Ci0gICAgICAgIC8qIE1pY3Jvc29mdCBDUlQgd291bGQgY2hlY2sgdGhhdCAwPD1mZDxfbmhhbmRsZSBidXQgd2UgY2FuJ3QgZG8gdGhhdC4gIEluc3RlYWQKLSAgICAgICAgICogd2UgY2hlY2sgcG9pbnRlciB2YWxpZGl0eSBhbmQgb3RoZXIgaW5mbwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPD0gaTEgJiYgaTEgPCBJT0lORk9fQVJSQVlTICYmIF9fcGlvaW5mb1tpMV0gIT0gTlVMTCkgewotICAgICAgICAgICAgLyogZmluYWxseSwgY2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBvcGVuICovCi0gICAgICAgICAgICBteV9pb2luZm8qIGluZm8gPSAobXlfaW9pbmZvKikoX19waW9pbmZvW2kxXSArIGkyICogc2l6ZW9mX2lvaW5mbyk7Ci0gICAgICAgICAgICBpZiAoaW5mby0+b3NmaWxlICYgRk9QRU4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgZmFpbDoKLSAgICBlcnJubyA9IEVCQURGOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCA2MTdkNThiLi5hMmMyYjM2IDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMzIsMTQgKzMyLDIwIEBACiB7CiAgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgb3IgJ18nIHdpdGggJyVjJy4iLAogICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOwogICAgIGVsc2UKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyBvciAnXycgd2l0aCAnXFx4JXgnLiIsCiAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKIH0KIAorc3RhdGljIHZvaWQKK2ludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUodm9pZCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBzcGVjaWZ5IGJvdGggJywnIGFuZCAnXycuIik7Cit9CisKIC8qCiAgICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCiAgICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQpAQCAtNDgsMTYgKzU0LDE3IEBACiAgICAgcmV0dXJucyAtMSBvbiBlcnJvci4KICovCiBzdGF0aWMgaW50Ci1nZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwb3MsIFB5X3NzaXplX3QgZW5kLAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcHBvcywgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCiB7Ci0gICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWw7CisgICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWwsIHBvcyA9ICpwcG9zOwogICAgIGludCBudW1kaWdpdHM7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworCiAgICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOwotICAgIGZvciAoOzsoKnBvcykrKywgbnVtZGlnaXRzKyspIHsKLSAgICAgICAgaWYgKCpwb3MgPj0gZW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsICpwb3MpKTsKKyAgICBmb3IgKDsgcG9zIDwgZW5kOyBwb3MrKywgbnVtZGlnaXRzKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpKTsKICAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvKgpAQCAtNjksMTAgKzc2LDEyIEBACiAgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgKnBwb3MgPSBwb3M7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CiAgICAgfQorICAgICpwcG9zID0gcG9zOwogICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKICAgICByZXR1cm4gbnVtZGlnaXRzOwogfQpAQCAtMTA1LDYgKzExNCwxNCBAQAogICAgIH0KIH0KIAorLyogTG9jYWxlIHR5cGUgY29kZXMuIExUX05PX0xPQ0FMRSBtdXN0IGJlIHplcm8uICovCitlbnVtIExvY2FsZVR5cGUgeworICAgIExUX05PX0xPQ0FMRSA9IDAsCisgICAgTFRfREVGQVVMVF9MT0NBTEUsCisgICAgTFRfVU5ERVJTQ09SRV9MT0NBTEUsCisgICAgTFRfVU5ERVJfRk9VUl9MT0NBTEUsCisgICAgTFRfQ1VSUkVOVF9MT0NBTEUKK307CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV9VQ1M0IGZpbGxfY2hhcjsKQEAgLTExMiw3ICsxMjksNyBAQAogICAgIGludCBhbHRlcm5hdGU7CiAgICAgUHlfVUNTNCBzaWduOwogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOworICAgIGVudW0gTG9jYWxlVHlwZSB0aG91c2FuZHNfc2VwYXJhdG9yczsKICAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKICAgICBQeV9VQ1M0IHR5cGU7CiB9IEludGVybmFsRm9ybWF0U3BlYzsKQEAgLTE1MCw5ICsxNjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCiB7CiAgICAgUHlfc3NpemVfdCBwb3MgPSBzdGFydDsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKGZvcm1hdF9zcGVjKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoZm9ybWF0X3NwZWMpOwogICAgIC8qIGVuZC1wb3MgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKICAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCi0jZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYywgaW5kZXgpCisjZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpCiAKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwogICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOwpAQCAtMTYzLDcgKzE4Miw3IEBACiAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAwOwogICAgIGZvcm1hdC0+c2lnbiA9ICdcMCc7CiAgICAgZm9ybWF0LT53aWR0aCA9IC0xOwotICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAwOworICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9OT19MT0NBTEU7CiAgICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKICAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7CiAKQEAgLTIxOCw5ICsyMzcsMjIgQEAKIAogICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KICAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKLSAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9ERUZBVUxUX0xPQ0FMRTsKICAgICAgICAgKytwb3M7CiAgICAgfQorICAgIC8qIFVuZGVyc2NvcmUgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICdfJykgeworICAgICAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyAhPSBMVF9OT19MT0NBTEUpIHsKKyAgICAgICAgICAgIGludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9VTkRFUlNDT1JFX0xPQ0FMRTsKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgeworICAgICAgICBpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLwogICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcuJykgewpAQCAtMjcwLDYgKzMwMiwxNiBAQAogICAgICAgICBjYXNlICdcMCc6CiAgICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGluIGJpbi9vY3QvaGV4LiBTZWUgUEVQIDUxNS4gKi8KKyAgICAgICAgICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID09IExUX1VOREVSU0NPUkVfTE9DQUxFKSB7CisgICAgICAgICAgICAgICAgLyogRXZlcnkgZm91ciBkaWdpdHMsIG5vdCBldmVyeSB0aHJlZSwgaW4gYmluL29jdC9oZXguICovCisgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX1VOREVSX0ZPVVJfTE9DQUxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM0NiwxMyArMzg4LDYgQEAKIC8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KLWVudW0gTG9jYWxlVHlwZSB7Ci0gICAgTFRfQ1VSUkVOVF9MT0NBTEUsCi0gICAgTFRfREVGQVVMVF9MT0NBTEUsCi0gICAgTFRfTk9fTE9DQUxFCi19OwotCiAvKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cwogICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAogICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwpAQCAtNDA0LDEzICs0MzksMTUgQEAKICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKIHsKICAgICBQeV9zc2l6ZV90IHJlbWFpbmRlcjsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHMpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzKTsKIAotICAgIHdoaWxlIChwb3M8ZW5kICYmIFB5X0lTRElHSVQoUHlVbmljb2RlX1JFQURfQ0hBUihzLCBwb3MpKSkKKyAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcykpKQogICAgICAgICArK3BvczsKICAgICByZW1haW5kZXIgPSBwb3M7CiAKICAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KLSAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocywgcmVtYWluZGVyKSA9PSAnLic7CisgICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCByZW1haW5kZXIpID09ICcuJzsKIAogICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCiAgICAgaWYgKCpoYXNfZGVjaW1hbCkKQEAgLTY1OCwxMiArNjk1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKK3N0YXRpYyBjb25zdCBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKIAogLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCiAgICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcwotICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCi0gICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KKyAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFIG9yCisgICBMVF9VTkRFUlNDT1JFX0xPQ0FMRS9MVF9VTkRFUl9GT1VSX0xPQ0FMRSwgb3Igbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCiBzdGF0aWMgaW50CiBnZXRfbG9jYWxlX2luZm8oZW51bSBMb2NhbGVUeXBlIHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQogewpAQCAtNjg0LDEzICs3MjEsMTkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6CisgICAgY2FzZSBMVF9VTkRFUlNDT1JFX0xPQ0FMRToKKyAgICBjYXNlIExUX1VOREVSX0ZPVVJfTE9DQUxFOgogICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLCcpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgKKyAgICAgICAgICAgIHR5cGUgPT0gTFRfREVGQVVMVF9MT0NBTEUgPyAnLCcgOiAnXycpOwogICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCisgICAgICAgIGlmICh0eXBlICE9IExUX1VOREVSX0ZPVVJfTE9DQUxFKQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWNpdCkgdHJhaWxpbmcgMCBtZWFucyByZXBlYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVseS4gKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlw0IjsgLyogQmluL29jdC9oZXggZ3JvdXAgZXZlcnkgZm91ci4gKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMVF9OT19MT0NBTEU6CiAgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CkBAIC05MzcsOSArOTgwLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTA4NCw5ICsxMTI1LDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTI2Miw5ICsxMzAxLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IDY3NmYzOTUuLjdlMDRmM2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTE0LDE3ICsxNCwxNSBAQAogICAgdGhlIGFwcHJvcHJpYXRlIGJ5dGVzIGZyb20gTV9fX21haW5fXy5jLiAqLwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBNX19faGVsbG9fX1tdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwLDAsMCwwLDEwMCwyLDAsOTAsMSwwLAotICAgIDEwMSwyLDAsMTAwLDAsMCwxMzEsMSwwLDEsMTAwLDEsMCw4Myw0MCwzLAotICAgIDAsMCwwLDExNywxMiwwLDAsMCw3MiwxMDEsMTA4LDEwOCwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA4LDEwMCwzMyw3OCw4NCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLAotICAgIDg0LDExNCwxMTcsMTAxLDExNywxMSwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwxMDAsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLDExNiw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsNywwLAotICAgIDAsMCwxMDIsMTA4LDk3LDEwMyw0NiwxMTIsMTIxLDExNyw4LDAsMCwwLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDEsMCwwLDAsMTE1LDIsMCwwLDAsNiwKLSAgICAxLAorICAgIDIyNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMCw5MCwwLDEwMSwxLAorICAgIDEwMCwxLDEzMSwxLDEsMCwxMDAsMiw4MywwLDQxLDMsODQsMTIyLDEyLDcyLAorICAgIDEwMSwxMDgsMTA4LDExMSwzMiwxMTksMTExLDExNCwxMDgsMTAwLDMzLDc4LDQxLDIsMjE4LDExLAorICAgIDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwyMTgsNSwxMTIsMTE0LDEwNSwKKyAgICAxMTAsMTE2LDE2OSwwLDExNCwzLDAsMCwwLDExNCwzLDAsMCwwLDI1MCwyMiwKKyAgICA0Niw0Nyw4NCwxMTEsMTExLDEwOCwxMTUsNDcsMTAyLDExNCwxMDEsMTAxLDEyMiwxMDEsNDcsMTAyLAorICAgIDEwOCw5NywxMDMsNDYsMTEyLDEyMSwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICAxLDAsMCwwLDExNSwyLDAsMCwwLDQsMSwKIH07CiAKICNkZWZpbmUgU0laRSAoaW50KXNpemVvZihNX19faGVsbG9fXykKZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW5tYWluLmMgYi9QeXRob24vZnJvemVubWFpbi5jCmluZGV4IGRlOGJkMzUuLjc2OWIzM2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW5tYWluLmMKKysrIGIvUHl0aG9uL2Zyb3plbm1haW4uYwpAQCAtOTksNyArOTksOSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeVdpbkZyZWV6ZV9FeGVUZXJtKCk7CiAjZW5kaWYKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5KTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9mdXR1cmUuYyBiL1B5dGhvbi9mdXR1cmUuYwppbmRleCA0ZGU4MDFiLi45YzFmNDMwIDEwMDY0NAotLS0gYS9QeXRob24vZnV0dXJlLmMKKysrIGIvUHl0aG9uL2Z1dHVyZS5jCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgbmFtZXMgPSBzLT52LkltcG9ydEZyb20ubmFtZXM7CiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihuYW1lcyk7IGkrKykgewogICAgICAgICBhbGlhc190eSBuYW1lID0gKGFsaWFzX3R5KWFzZGxfc2VxX0dFVChuYW1lcywgaSk7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZlYXR1cmUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUtPm5hbWUpOworICAgICAgICBjb25zdCBjaGFyICpmZWF0dXJlID0gUHlVbmljb2RlX0FzVVRGOChuYW1lLT5uYW1lKTsKICAgICAgICAgaWYgKCFmZWF0dXJlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChzdHJjbXAoZmVhdHVyZSwgRlVUVVJFX05FU1RFRF9TQ09QRVMpID09IDApIHsKQEAgLTc5LDcgKzc5LDEwIEBACiAKICAgICBpID0gMDsKICAgICBmaXJzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChtb2QtPnYuTW9kdWxlLmJvZHksIGkpOwotICAgIGlmIChmaXJzdC0+a2luZCA9PSBFeHByX2tpbmQgJiYgZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZCkKKyAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kCisgICAgICAgICYmIChmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kCisgICAgICAgICAgICB8fCAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kCisgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZmlyc3QtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSkpKSkKICAgICAgICAgaSsrOwogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRhcmdzLmMgYi9QeXRob24vZ2V0YXJncy5jCmluZGV4IGIxMGU3NzYuLjYxNmM2ZWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRhcmdzLmMKKysrIGIvUHl0aG9uL2dldGFyZ3MuYwpAQCAtMTgsMTYgKzE4LDI4IEBACiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKIAoraW50IF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitpbnQgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKKwogI2lmZGVmIEhBVkVfREVDTFNQRUNfRExMCiAvKiBFeHBvcnQgZnVuY3Rpb25zICovCi1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VTdGFja19TaXplVChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCB2YV9saXN0KTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CiAjZW5kaWYKIAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCkBAIC01NiwxOCArNjgsMjQgQEAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBpbnQgdmdldGFyZ3MxKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCAqLCBpbnQpOwogc3RhdGljIHZvaWQgc2V0ZXJyb3IoUHlfc3NpemVfdCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNoYXIgKiopOwotc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNoYXIqKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydGl0ZW0oUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGludCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKik7CitzdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY29uc3QgY2hhcioqKTsKIAogc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0ICosIGludCk7Ci1zdGF0aWMgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOworc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzZmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkcywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncyk7CitzdGF0aWMgY29uc3QgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwogCiBpbnQKIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKQEAgLTgyLDcgKzEwMCw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgaW50IHJldHZhbDsKICAgICB2YV9saXN0IHZhOwpAQCAtMTA3LDcgKzEyNSw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEyMywyMCArMTQxLDI2IEBACiBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKIH0KIAogaW50Ci1fUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKIHsKICAgICB2YV9saXN0IGx2YTsKKyAgICBpbnQgcmV0dmFsOwogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAotICAgIHJldHVybiB2Z2V0YXJnczEoYXJncywgZm9ybWF0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIApAQCAtMjA4LDcgKzIzMiw3IEBACiAgICAgaW50IGVuZGZtdCA9IDA7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0c2F2ZSA9IGZvcm1hdDsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CiAgICAgZnJlZWxpc3RfdCBmcmVlbGlzdDsKQEAgLTM5NCw3ICs0MTgsMTIgQEAKICAgICAgICAgUHlPU19zbnByaW50ZihwLCBzaXplb2YoYnVmKSAtIChwIC0gYnVmKSwgIiAlLjI1NnMiLCBtc2cpOwogICAgICAgICBtZXNzYWdlID0gYnVmOwogICAgIH0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICBpZiAobXNnWzBdID09ICcoJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgfQogfQogCiAKQEAgLTQxNiw3ICs0NDUsNyBAQAogICAgICAgYW5kIG1zZ2J1ZiBpcyByZXR1cm5lZC4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnR0dXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IHRvcGxldmVsLAogICAgICAgICAgICAgIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQpAQCAtNDc0LDcgKzUwMyw3IEBACiAKICAgICBmb3JtYXQgPSAqcF9mb3JtYXQ7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBjaGFyICptc2c7CisgICAgICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJnLCBpKTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewpAQCAtNTAxLDExICs1MzAsMTEgQEAKIAogLyogQ29udmVydCBhIHNpbmdsZSBpdGVtLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKIAogICAgIGlmICgqZm9ybWF0ID09ICcoJyAvKiAnKScgKi8pIHsKQEAgLTUzMCw3ICs1NTksNyBAQAogCiAvKiBGb3JtYXQgYW4gZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29udmVydHNpbXBsZSgpLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0ZXJyKGNvbnN0IGNoYXIgKmV4cGVjdGVkLCBQeU9iamVjdCAqYXJnLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplKQogewogICAgIGFzc2VydChleHBlY3RlZCAhPSBOVUxMKTsKQEAgLTU3Miw3ICs2MDEsNyBAQAogICAgV2hlbiB5b3UgYWRkIG5ldyBmb3JtYXQgY29kZXMsIHBsZWFzZSBkb24ndCBmb3JnZXQgcG9vciBza2lwaXRlbSgpIGJlbG93LgogKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydHNpbXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CkBAIC03NTIsMTQgKzc4MSwxMyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ0wnOiB7LyogUFlfTE9OR19MT05HICovCi0gICAgICAgIFBZX0xPTkdfTE9ORyAqcCA9IHZhX2FyZyggKnBfdmEsIFBZX0xPTkdfTE9ORyAqICk7Ci0gICAgICAgIFBZX0xPTkdfTE9ORyBpdmFsOworICAgIGNhc2UgJ0wnOiB7LyogbG9uZyBsb25nICovCisgICAgICAgIGxvbmcgbG9uZyAqcCA9IHZhX2FyZyggKnBfdmEsIGxvbmcgbG9uZyAqICk7CisgICAgICAgIGxvbmcgbG9uZyBpdmFsOwogICAgICAgICBpZiAoZmxvYXRfYXJndW1lbnRfZXJyb3IoYXJnKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOwotICAgICAgICBpZiAoaXZhbCA9PSAoUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChpdmFsID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwID0gaXZhbDsKQEAgLTc2Nyw4ICs3OTUsOCBAQAogICAgIH0KIAogICAgIGNhc2UgJ0snOiB7IC8qIGxvbmcgbG9uZyBzaXplZCBiaXRmaWVsZCAqLwotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKTsKLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGl2YWw7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCA9IHZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nICopOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKQogICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGFyZyk7CiAgICAgICAgIGVsc2UKQEAgLTc3Niw3ICs4MDQsNiBAQAogICAgICAgICAqcCA9IGl2YWw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2FzZSAnZic6IHsvKiBmbG9hdCAqLwogICAgICAgICBmbG9hdCAqcCA9IHZhX2FyZygqcF92YSwgZmxvYXQgKik7CkBAIC04NTcsNyArODg0LDcgQEAKIAogICAgIGNhc2UgJ3knOiB7LyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgIHZvaWQgKipwID0gKHZvaWQgKiopdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKLSAgICAgICAgY2hhciAqYnVmOworICAgICAgICBjb25zdCBjaGFyICpidWY7CiAgICAgICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcqJykgewogICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIChQeV9idWZmZXIqKXAsICZidWYpIDwgMCkKQEAgLTkwNCw3ICs5MzEsNyBAQAogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywgc2FyZywgbGVuLCAxLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnl0ZXMtbGlrZSBvYmplY3QgKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCBwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfQpAQCAtOTM0LDcgKzk2MSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogcmVhZC1vbmx5IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQgPSBjb252ZXJ0YnVmZmVyKGFyZywgcCwgJmJ1Zik7CiAgICAgICAgICAgICAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC0xMDUxLDM1ICsxMDc4LDI1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihBc0NoYXJCdWZmZXIgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnU7Ci0KLSAgICAgICAgICAgIC8qIENvbnZlcnQgb2JqZWN0IHRvIFVuaWNvZGUgKi8KLSAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgInN0cmluZyBvciB1bmljb2RlIG9yIHRleHQgYnVmZmVyIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotCisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CiAgICAgICAgICAgICAvKiBFbmNvZGUgb2JqZWN0OyB1c2UgZGVmYXVsdCBlcnJvciBoYW5kbGluZyAqLwotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoZW5jb2RpbmcgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAiKGVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcykiLAotICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhzKSk7CiAgICAgICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShzKTsKICAgICAgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHMpOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHB0ciA9ICIiOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCisgICAgICAgICAgICAgICAgcmVjb2RlX3N0cmluZ3MgPyAic3RyIiA6ICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSIsCisgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICB9CiAKICAgICAgICAgLyogV3JpdGUgb3V0cHV0OyBvdXRwdXQgaXMgZ3VhcmFudGVlZCB0byBiZSAwLXRlcm1pbmF0ZWQgKi8KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7CkBAIC0xMTI5LDcgKzExNDYsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoc2l6ZSArIDEgPiBCVUZGRVJfTEVOKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCBzdHJpbmcgdG9vIGxvbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglemQsIG1heGltdW0gbGVuZ3RoICV6ZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3Qpc2l6ZSwgKFB5X3NzaXplX3QpKEJVRkZFUl9MRU4tMSkpOwpAQCAtMTI4Myw3ICsxMzAwLDcgQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLWNvbnZlcnRidWZmZXIoUHlPYmplY3QgKmFyZywgdm9pZCAqKnAsIGNoYXIgKiplcnJtc2cpCitjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIFB5QnVmZmVyUHJvY3MgKnBiID0gUHlfVFlQRShhcmcpLT50cF9hc19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBjb3VudDsKQEAgLTEzMDUsNyArMTMyMiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWdldGJ1ZmZlcihQeU9iamVjdCAqYXJnLCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgKiplcnJtc2cpCitnZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKICAgICAgICAgKmVycm1zZyA9ICJieXRlcy1saWtlIG9iamVjdCI7CkBAIC0xMzkxLDkgKzE0MDgsMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwga3dsaXN0LCAmbHZhLCAwKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDE1LDEwICsxNDMzLDEzOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCiAgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3JkcyhhcmdzLCBrZXl3b3JkcywgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGt3bmFtZXMgIT0gTlVMTCAmJiAhUHlUdXBsZV9DaGVjayhrd25hbWVzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChhcmdzLCBuYXJncywgTlVMTCwga3duYW1lcywgcGFyc2VyLCAmdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTE0NDgsNyArMTU5NCw4IEBACiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKICAgICBpbnQgbWF4ID0gSU5UX01BWDsKLSAgICBpbnQgaSwgbGVuOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBpbnQgc2tpcCA9IDA7CiAgICAgUHlfc3NpemVfdCBuYXJncywgbmtleXdvcmRzOwogICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwpAQCAtMTQ3Niw5ICsxNjIzLDE3IEBACiAgICAgICAgICAgICBjdXN0b21fbXNnKys7CiAgICAgfQogCisgICAgLyogc2NhbiBrd2xpc3QgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgKi8KKyAgICBmb3IgKHBvcyA9IDA7IGt3bGlzdFtwb3NdICYmICEqa3dsaXN0W3Bvc107IHBvcysrKSB7CisgICAgfQogICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KLSAgICBmb3IgKGxlbj0wOyBrd2xpc3RbbGVuXTsgbGVuKyspCi0gICAgICAgIGNvbnRpbnVlOworICAgIGZvciAobGVuID0gcG9zOyBrd2xpc3RbbGVuXTsgbGVuKyspIHsKKyAgICAgICAgaWYgKCEqa3dsaXN0W2xlbl0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKICAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CkBAIC0xNTA3LDcgKzE2NjIsNyBAQAogICAgICAgICBrZXl3b3JkID0ga3dsaXN0W2ldOwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKICAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MTYsMTQgKzE2NzEsMTQgQEAKICAgICAgICAgICAgIGZvcm1hdCsrOwogCiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKICAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MzEsNiArMTY4NiwxNyBAQAogICAgICAgICAgICAgbWF4ID0gaTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogCisgICAgICAgICAgICBpZiAobWF4IDwgcG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgJCIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNraXApIHsKKyAgICAgICAgICAgICAgICAvKiBOb3cgd2Uga25vdyB0aGUgbWluaW1hbCBhbmQgdGhlIG1heGltYWwgbnVtYmVycyBvZgorICAgICAgICAgICAgICAgICAqIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGgKKyAgICAgICAgICAgICAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIChzZWUgYmVsb3cpLiAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1heCA8IG5hcmdzKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgpAQCAtMTU0MSw2NiArMTcwNyw5MCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwotICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGtleXdvcmRzLCBrZXl3b3JkKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIC0tbmtleXdvcmRzOwotICAgICAgICAgICAgaWYgKGkgPCBuYXJncykgewotICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclcycpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgaWYgKCFza2lwKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CisgICAgICAgICAgICBpZiAobmtleXdvcmRzICYmIGkgPj0gcG9zKSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X2FyZyAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIC0tbmtleXdvcmRzOworICAgICAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYXJnIHByZXNlbnQgaW4gdHVwbGUgYW5kIGluIGRpY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oY3VycmVudF9hcmcsICZmb3JtYXQsIHBfdmEsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGkgPCBtaW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHBvcykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKG1pbiA9PSBJTlRfTUFYKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtYXggPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxOworICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGF0IG1vbWVudCB3ZSBzdGlsbCBkb24ndCBrbm93IHRoZSBtaW5pbWFsIGFuZAorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbWF4aW1hbCBudW1iZXJzIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgUmFpc2luZworICAgICAgICAgICAgICAgICAgICAgKiBhbiBleGNlcHRpb24gaXMgZGVmZXJyZWQgdW50aWwgd2UgZW5jb3VudGVyIHwgYW5kICQKKyAgICAgICAgICAgICAgICAgICAgICogb3IgdGhlIGVuZCBvZiB0aGUgZm9ybWF0LiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCisgICAgICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKKyAgICAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIW5rZXl3b3JkcyAmJiAhc2tpcCkgeworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5rZXl3b3JkcyAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKLSAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKLSAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7Ci0gICAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaSA8IG1pbikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyAocG9zICVkKSBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgfQotICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKLSAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCi0gICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIAogICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZwogICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KICAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgcF92YSwgZmxhZ3MpOwogICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLCAiJXM6ICclcyciLCBtc2csCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoc2tpcCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBtaW4pIDwgaSkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgUHlfTUlOKHBvcywgbWluKSwgbmFyZ3MpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisKICAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCiAgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOwogICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKQEAgLTE2MTgsNyArMTgwOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoa2V5LCBrd2xpc3RbaV0pKSB7CisgICAgICAgICAgICAgICAgaWYgKCprd2xpc3RbaV0gJiYgX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoa2V5LCBrd2xpc3RbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYzNyw3ICsxODI3LDM4OCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKKy8qIExpc3Qgb2Ygc3RhdGljIHBhcnNlcnMuICovCitzdGF0aWMgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7CisKK3N0YXRpYyBpbnQKK3BhcnNlcl9pbml0KHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIpCit7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICprZXl3b3JkczsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICptc2c7CisgICAgaW50IGksIGxlbiwgbWluLCBtYXgsIG5rdzsKKyAgICBQeU9iamVjdCAqa3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPmZvcm1hdCAhPSBOVUxMKTsKKyAgICBhc3NlcnQocGFyc2VyLT5rZXl3b3JkcyAhPSBOVUxMKTsKKyAgICBpZiAocGFyc2VyLT5rd3R1cGxlICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZ3JhYiB0aGUgZnVuY3Rpb24gbmFtZSBvciBjdXN0b20gZXJyb3IgbXNnIGZpcnN0IChtdXR1YWxseSBleGNsdXNpdmUpICovCisgICAgcGFyc2VyLT5mbmFtZSA9IHN0cmNocihwYXJzZXItPmZvcm1hdCwgJzonKTsKKyAgICBpZiAocGFyc2VyLT5mbmFtZSkgeworICAgICAgICBwYXJzZXItPmZuYW1lKys7CisgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2cgPSBzdHJjaHIocGFyc2VyLT5mb3JtYXQsJzsnKTsKKyAgICAgICAgaWYgKHBhcnNlci0+Y3VzdG9tX21zZykKKyAgICAgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZysrOworICAgIH0KKworICAgIGtleXdvcmRzID0gcGFyc2VyLT5rZXl3b3JkczsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChpID0gMDsga2V5d29yZHNbaV0gJiYgISprZXl3b3Jkc1tpXTsgaSsrKSB7CisgICAgfQorICAgIHBhcnNlci0+cG9zID0gaTsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KKyAgICBmb3IgKDsga2V5d29yZHNbaV07IGkrKykgeworICAgICAgICBpZiAoISprZXl3b3Jkc1tpXSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBrZXl3b3JkIHBhcmFtZXRlciBuYW1lIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZW4gPSBpOworCisgICAgbWluID0gbWF4ID0gSU5UX01BWDsKKyAgICBmb3JtYXQgPSBwYXJzZXItPmZvcm1hdDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKHwgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIGJlZm9yZSB8KSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWluID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpIDwgcGFyc2VyLT5wb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBwYXJhbWV0ZXIgbmFtZSBhZnRlciAkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgTlVMTCwgMCk7CisgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwYXJzZXItPm1pbiA9IFB5X01JTihtaW4sIGxlbik7CisgICAgcGFyc2VyLT5tYXggPSBQeV9NSU4obWF4LCBsZW4pOworCisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgorICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbmt3ID0gbGVuIC0gcGFyc2VyLT5wb3M7CisgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KG5rdyk7CisgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAga2V5d29yZHMgPSBwYXJzZXItPmtleXdvcmRzICsgcGFyc2VyLT5wb3M7CisgICAgZm9yIChpID0gMDsgaSA8IG5rdzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXl3b3Jkc1tpXSk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGt3dHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJnN0cik7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa3d0dXBsZSwgaSwgc3RyKTsKKyAgICB9CisgICAgcGFyc2VyLT5rd3R1cGxlID0ga3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPm5leHQgPT0gTlVMTCk7CisgICAgcGFyc2VyLT5uZXh0ID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IHBhcnNlcjsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlcl9jbGVhcihzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyKQoreworICAgIFB5X0NMRUFSKHBhcnNlci0+a3d0dXBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZpbmRfa2V5d29yZChQeU9iamVjdCAqa3duYW1lcywgUHlPYmplY3QgKiprd3N0YWNrLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaSwgbmt3YXJnczsKKworICAgIG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIGZvciAoaT0wOyBpIDwgbmt3YXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGkpOworCisgICAgICAgIC8qIHB0cj09cHRyIHNob3VsZCBtYXRjaCBpbiBtb3N0IGNhc2VzIHNpbmNlIGtleXdvcmQga2V5cworICAgICAgICAgICBzaG91bGQgYmUgaW50ZXJuZWQgc3RyaW5ncyAqLworICAgICAgICBpZiAoa3duYW1lID09IGtleSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa3duYW1lKSkgeworICAgICAgICAgICAgLyogaWdub3JlIG5vbi1zdHJpbmcga2V5d29yZCBrZXlzOgorICAgICAgICAgICAgICAgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlX0VRKGt3bmFtZSwga2V5KSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK3ZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmt3dHVwbGU7CisgICAgY2hhciBtc2didWZbNTEyXTsKKyAgICBpbnQgbGV2ZWxzWzMyXTsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQ7CisgICAgY29uc3QgY2hhciAqbXNnOworICAgIFB5T2JqZWN0ICprZXl3b3JkOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBQeV9zc2l6ZV90IG5rZXl3b3JkczsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0OworICAgIFB5T2JqZWN0ICoqa3dzdGFjayA9IE5VTEw7CisKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gc3RhdGljX2VudHJpZXM7CisgICAgZnJlZWxpc3QuZmlyc3RfYXZhaWxhYmxlID0gMDsKKyAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMDsKKworICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVjayhrd25hbWVzKSk7CisgICAgYXNzZXJ0KChrZXl3b3JkcyAhPSBOVUxMIHx8IGt3bmFtZXMgIT0gTlVMTCkKKyAgICAgICAgICAgfHwgKGtleXdvcmRzID09IE5VTEwgJiYga3duYW1lcyA9PSBOVUxMKSk7CisgICAgYXNzZXJ0KHBhcnNlciAhPSBOVUxMKTsKKyAgICBhc3NlcnQocF92YSAhPSBOVUxMKTsKKworICAgIGlmICghcGFyc2VyX2luaXQocGFyc2VyKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBrd3R1cGxlID0gcGFyc2VyLT5rd3R1cGxlOworICAgIHBvcyA9IHBhcnNlci0+cG9zOworICAgIGxlbiA9IHBvcyArIFB5VHVwbGVfR0VUX1NJWkUoa3d0dXBsZSk7CisKKyAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKKyAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CisgICAgICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMTsKKyAgICB9CisKKyAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CisgICAgfQorICAgIGVsc2UgaWYgKGt3bmFtZXMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgICAgICBrd3N0YWNrID0gYXJncyArIG5hcmdzOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmtleXdvcmRzID0gMDsKKyAgICB9CisgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+Zm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogcGFyc2VyLT5mbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPmZuYW1lID09IE5VTEwpID8gIiIgOiAiKCkiLAorICAgICAgICAgICAgICAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICAgICAgKGxlbiA9PSAxKSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICAgICAgbmFyZ3MgKyBua2V5d29yZHMpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisgICAgaWYgKHBhcnNlci0+bWF4IDwgbmFyZ3MpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPm1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bWF4LCBuYXJncyk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgIH0KKworICAgIGZvcm1hdCA9IHBhcnNlci0+Zm9ybWF0OworICAgIC8qIGNvbnZlcnQgdHVwbGUgYXJncyBhbmQga2V5d29yZCBhcmdzIGluIHNhbWUgbG9vcCwgdXNpbmcga3d0dXBsZSB0byBkcml2ZSBwcm9jZXNzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGtleXdvcmQgPSAoaSA+PSBwb3MpID8gUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCBpIC0gcG9zKSA6IE5VTEw7CisgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpOworCisgICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKKyAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtKGtleXdvcmRzLCBrZXl3b3JkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRfYXJnICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBmaW5kX2tleXdvcmQoa3duYW1lcywga3dzdGFjaywga2V5d29yZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJVUnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IGFyZ3NbaV07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgcGFyc2VyLT5mbmFtZSwgcGFyc2VyLT5jdXN0b21fbXNnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGkgPCBwYXJzZXItPm1pbikgeworICAgICAgICAgICAgLyogTGVzcyBhcmd1bWVudHMgdGhhbiByZXF1aXJlZCAqLworICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBwYXJzZXItPm1pbikgPCBwYXJzZXItPm1heCkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9NSU4ocG9zLCBwYXJzZXItPm1pbiksIG5hcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgfQorICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKKyAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFua2V5d29yZHMpIHsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKKyAgICAgICAgICoga2V5d29yZCBhcmdzICovCisgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKKyAgICAgICAgYXNzZXJ0KG1zZyA9PSBOVUxMKTsKKyAgICB9CisKKyAgICBhc3NlcnQoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSB8fCAoKmZvcm1hdCA9PSAnfCcpIHx8ICgqZm9ybWF0ID09ICckJykpOworCisgICAgLyogbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBleHRyYW5lb3VzIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgaWYgKG5rZXl3b3JkcyA+IDApIHsKKyAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrZXl3b3JkcywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXRjaCA9IFB5U2VxdWVuY2VfQ29udGFpbnMoa3d0dXBsZSwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgaiwgbmt3YXJnczsKKworICAgICAgICAgICAgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IG5rd2FyZ3M7IGorKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGopOworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBQeVNlcXVlbmNlX0NvbnRhaW5zKGt3dHVwbGUsIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKK30KKworc3RhdGljIGludAordmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisKKyAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOworCisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgcmV0dXJuIHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoc3RhY2ssIG5hcmdzLCBrZXl3b3JkcywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIsIHBfdmEsIGZsYWdzKTsKK30KKworCitzdGF0aWMgY29uc3QgY2hhciAqCiBza2lwaXRlbShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKIHsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC0xNjU4LDEwICsyMjI5LDggQEAKICAgICBjYXNlICdJJzogLyogaW50IHNpemVkIGJpdGZpZWxkICovCiAgICAgY2FzZSAnbCc6IC8qIGxvbmcgaW50ICovCiAgICAgY2FzZSAnayc6IC8qIGxvbmcgaW50IHNpemVkIGJpdGZpZWxkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCi0gICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwotI2VuZGlmCisgICAgY2FzZSAnTCc6IC8qIGxvbmcgbG9uZyAqLworICAgIGNhc2UgJ0snOiAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KICAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwogICAgIGNhc2UgJ2YnOiAvKiBmbG9hdCAqLwogICAgIGNhc2UgJ2QnOiAvKiBkb3VibGUgKi8KQEAgLTE2NzMsNyArMjI0Miw5IEBACiAgICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KICAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE2ODEsNyArMjI1Miw5IEBACiAKICAgICBjYXNlICdlJzogLyogc3RyaW5nIHdpdGggZW5jb2RpbmcgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29uc3QgY2hhciAqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoKmZvcm1hdCA9PSAncycgfHwgKmZvcm1hdCA9PSAndCcpKQogICAgICAgICAgICAgICAgIC8qIGFmdGVyICdlJywgb25seSAncycgYW5kICd0JyBpcyBhbGxvd2VkICovCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0xNjk2LDEyICsyMjY5LDE2IEBACiAgICAgY2FzZSAnWic6IC8qIHVuaWNvZGUgc3RyaW5nIG9yIE5vbmUgKi8KICAgICBjYXNlICd3JzogLyogYnVmZmVyLCByZWFkLXdyaXRlICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19TSVpFX1QpCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NJWkVfVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChjID09ICdzJyB8fCBjID09ICd6JyB8fCBjID09ICd5JykgJiYgKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKQEAgLTE3MTMsMjQgKzIyOTAsMzAgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyEnKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICgqZm9ybWF0ID09ICcmJykgewogICAgICAgICAgICAgICAgIHR5cGVkZWYgaW50ICgqY29udmVydGVyKShQeU9iamVjdCAqLCB2b2lkICopOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICBjYXNlICcoJzogICAgICAgICAgIC8qIGJ5cGFzcyB0dXBsZSwgbm90IGhhbmRsZWQgYXQgYWxsIHByZXZpb3VzbHkgKi8KICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqbXNnOworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnOwogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIGlmICgqZm9ybWF0PT0nKScpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc2NiwxNiArMjM0OSw5IEBACiAgICAgUHlPYmplY3QgKipvOwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0gICAgdmFfc3RhcnQodmFyZ3MsIG1heCk7Ci0jZWxzZQotICAgIHZhX3N0YXJ0KHZhcmdzKTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0KG1pbiA+PSAwKTsKICAgICBhc3NlcnQobWluIDw9IG1heCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJQeUFyZ19VbnBhY2tUdXBsZSgpIGFyZ3VtZW50IGxpc3QgaXMgbm90IGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzkzLDkgKzIzNjksMTAgQEAKICAgICAgICAgICAgICAgICAidW5wYWNrZWQgdHVwbGUgc2hvdWxkIGhhdmUgJXMlemQgZWxlbWVudHMsIgogICAgICAgICAgICAgICAgICIgYnV0IGhhcyAlemQiLAogICAgICAgICAgICAgICAgIChtaW4gPT0gbWF4ID8gIiIgOiAiYXQgbGVhc3QgIiksIG1pbiwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpZiAobCA9PSAwKQorICAgICAgICByZXR1cm4gMTsKICAgICBpZiAobCA+IG1heCkgewogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTgwOCw5ICsyMzg1LDE0IEBACiAgICAgICAgICAgICAgICAgInVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnRzLCIKICAgICAgICAgICAgICAgICAiIGJ1dCBoYXMgJXpkIiwKICAgICAgICAgICAgICAgICAobWluID09IG1heCA/ICIiIDogImF0IG1vc3QgIiksIG1heCwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgbWF4KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCiAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICBvID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKik7CiAgICAgICAgICpvID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKQEAgLTE4NjAsNiArMjQ0MiwxOSBAQAogICAgIHJldHVybiAwOwogfQogCit2b2lkCitfUHlBcmdfRmluaSh2b2lkKQoreworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICp0bXAsICpzID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHdoaWxlIChzKSB7CisgICAgICAgIHRtcCA9IHMtPm5leHQ7CisgICAgICAgIHMtPm5leHQgPSBOVUxMOworICAgICAgICBwYXJzZXJfY2xlYXIocyk7CisgICAgICAgIHMgPSB0bXA7CisgICAgfQorICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7Cit9CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCA4MjEyYjJhLi5mMjU4NGUwIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtMjA0LDExICsyMDQsMTMgQEAKICAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzlfN1szXSA9IHsKICAgICB7MzAsIDEyfSwKICAgICB7MzQsIDN9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfOVsyXSA9IHsKQEAgLTIyMSwzNSArMjIzLDM5IEBACiAgICAgezAsIDEwfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xMVszXSA9IHsKLSAgICB7MzAsIDEzfSwKLSAgICB7MzIsIDE0fSwKKyAgICB7MzAsIDE0fSwKKyAgICB7MzIsIDE1fSwKICAgICB7MCwgMTF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xM1syXSA9IHsKLSAgICB7MzIsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc185XzEzWzFdID0gewogICAgIHswLCAxM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTRbMl0gPSB7Ci0gICAgezMwLCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE1WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfMTVbM10gPSB7CisgICAgezMwLCAxN30sCisgICAgezM0LCAzfSwKKyAgICB7MCwgMTV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc185XzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTZbM10gPSB7Ci0gICAgezMyLCAxNH0sCi0gICAgezMxLCAxN30sCi0gICAgezAsIDE2fSwKK3N0YXRpYyBhcmMgYXJjc185XzE3WzNdID0geworICAgIHszMiwgMTV9LAorICAgIHszMSwgMTh9LAorICAgIHswLCAxN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfOV8xOFsxXSA9IHsKKyAgICB7MjYsIDE0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzlbMThdID0geworc3RhdGljIHN0YXRlIHN0YXRlc185WzE5XSA9IHsKICAgICB7MywgYXJjc185XzB9LAogICAgIHszLCBhcmNzXzlfMX0sCiAgICAgezMsIGFyY3NfOV8yfSwKQEAgLTI1NywxNyArMjYzLDE4IEBACiAgICAgezEsIGFyY3NfOV80fSwKICAgICB7NCwgYXJjc185XzV9LAogICAgIHsyLCBhcmNzXzlfNn0sCi0gICAgezIsIGFyY3NfOV83fSwKLSAgICB7MSwgYXJjc185Xzh9LAorICAgIHszLCBhcmNzXzlfN30sCisgICAgezIsIGFyY3NfOV84fSwKICAgICB7MiwgYXJjc185Xzl9LAogICAgIHszLCBhcmNzXzlfMTB9LAogICAgIHszLCBhcmNzXzlfMTF9LAogICAgIHszLCBhcmNzXzlfMTJ9LAotICAgIHsyLCBhcmNzXzlfMTN9LAorICAgIHsxLCBhcmNzXzlfMTN9LAogICAgIHsyLCBhcmNzXzlfMTR9LAotICAgIHsxLCBhcmNzXzlfMTV9LAotICAgIHszLCBhcmNzXzlfMTZ9LAotICAgIHsxLCBhcmNzXzlfMTd9LAorICAgIHszLCBhcmNzXzlfMTV9LAorICAgIHsxLCBhcmNzXzlfMTZ9LAorICAgIHszLCBhcmNzXzlfMTd9LAorICAgIHsxLCBhcmNzXzlfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMF8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC0zMTksMTEgKzMyNiwxMyBAQAogICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzExXzdbM10gPSB7CiAgICAgezM2LCAxMn0sCiAgICAgezM0LCAzfSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzlbMl0gPSB7CkBAIC0zMzYsMzUgKzM0NSwzOSBAQAogICAgIHswLCAxMH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzExWzNdID0gewotICAgIHszNiwgMTN9LAotICAgIHszMiwgMTR9LAorICAgIHszNiwgMTR9LAorICAgIHszMiwgMTV9LAogICAgIHswLCAxMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTNbMl0gPSB7Ci0gICAgezMyLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTNbMV0gPSB7CiAgICAgezAsIDEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTRbMl0gPSB7Ci0gICAgezM2LCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNVszXSA9IHsKKyAgICB7MzYsIDE3fSwKKyAgICB7MzQsIDN9LAorICAgIHswLCAxNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE2WzNdID0gewotICAgIHszMiwgMTR9LAotICAgIHszMSwgMTd9LAotICAgIHswLCAxNn0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTdbM10gPSB7CisgICAgezMyLCAxNX0sCisgICAgezMxLCAxOH0sCisgICAgezAsIDE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfMTFfMThbMV0gPSB7CisgICAgezI2LCAxNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMVsxOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE5XSA9IHsKICAgICB7MywgYXJjc18xMV8wfSwKICAgICB7MywgYXJjc18xMV8xfSwKICAgICB7MywgYXJjc18xMV8yfSwKQEAgLTM3MiwxNyArMzg1LDE4IEBACiAgICAgezEsIGFyY3NfMTFfNH0sCiAgICAgezQsIGFyY3NfMTFfNX0sCiAgICAgezIsIGFyY3NfMTFfNn0sCi0gICAgezIsIGFyY3NfMTFfN30sCi0gICAgezEsIGFyY3NfMTFfOH0sCisgICAgezMsIGFyY3NfMTFfN30sCisgICAgezIsIGFyY3NfMTFfOH0sCiAgICAgezIsIGFyY3NfMTFfOX0sCiAgICAgezMsIGFyY3NfMTFfMTB9LAogICAgIHszLCBhcmNzXzExXzExfSwKICAgICB7MywgYXJjc18xMV8xMn0sCi0gICAgezIsIGFyY3NfMTFfMTN9LAorICAgIHsxLCBhcmNzXzExXzEzfSwKICAgICB7MiwgYXJjc18xMV8xNH0sCi0gICAgezEsIGFyY3NfMTFfMTV9LAotICAgIHszLCBhcmNzXzExXzE2fSwKLSAgICB7MSwgYXJjc18xMV8xN30sCisgICAgezMsIGFyY3NfMTFfMTV9LAorICAgIHsxLCBhcmNzXzExXzE2fSwKKyAgICB7MywgYXJjc18xMV8xN30sCisgICAgezEsIGFyY3NfMTFfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMl8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC00NDUsNTQgKzQ1OSw3NyBAQAogc3RhdGljIGFyYyBhcmNzXzE2XzBbMV0gPSB7CiAgICAgezQ3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xNl8xWzRdID0gewogICAgIHs0OCwgMn0sCi0gICAgezMxLCAzfSwKKyAgICB7NDksIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8yWzJdID0gewotICAgIHs0OSwgNH0sCi0gICAgezksIDR9LAorc3RhdGljIGFyYyBhcmNzXzE2XzJbMV0gPSB7CisgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xNl8zWzJdID0gewotICAgIHs0OSwgNX0sCisgICAgezUwLCAyfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzRbMl0gPSB7CisgICAgezUwLCA1fSwKICAgICB7NDcsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl80WzFdID0gewotICAgIHswLCA0fSwKLX07CiBzdGF0aWMgYXJjIGFyY3NfMTZfNVsyXSA9IHsKLSAgICB7MzEsIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDV9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbNl0gPSB7CiAgICAgezEsIGFyY3NfMTZfMH0sCi0gICAgezMsIGFyY3NfMTZfMX0sCi0gICAgezIsIGFyY3NfMTZfMn0sCisgICAgezQsIGFyY3NfMTZfMX0sCisgICAgezEsIGFyY3NfMTZfMn0sCiAgICAgezIsIGFyY3NfMTZfM30sCi0gICAgezEsIGFyY3NfMTZfNH0sCisgICAgezIsIGFyY3NfMTZfNH0sCiAgICAgezIsIGFyY3NfMTZfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzBbMl0gPSB7Ci0gICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzBbMV0gPSB7CisgICAgezI3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xN18xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzJbMl0gPSB7CisgICAgezMxLCAzfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18xN1s1XSA9IHsKKyAgICB7MSwgYXJjc18xN18wfSwKKyAgICB7MSwgYXJjc18xN18xfSwKKyAgICB7MiwgYXJjc18xN18yfSwKKyAgICB7MSwgYXJjc18xN18zfSwKKyAgICB7MSwgYXJjc18xN180fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMThfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzJbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfMThfMlszXSA9IHsKICAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCisgICAgezUxLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xN1szXSA9IHsKLSAgICB7MiwgYXJjc18xN18wfSwKLSAgICB7MiwgYXJjc18xN18xfSwKLSAgICB7MywgYXJjc18xN18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbM10gPSB7CisgICAgezIsIGFyY3NfMThfMH0sCisgICAgezIsIGFyY3NfMThfMX0sCisgICAgezMsIGFyY3NfMThfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE4XzBbMTNdID0gewotICAgIHs1MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTlfMFsxM10gPSB7CiAgICAgezUyLCAxfSwKICAgICB7NTMsIDF9LAogICAgIHs1NCwgMX0sCkBAIC01MDUsNjAgKzU0Miw1MSBAQAogICAgIHs2MSwgMX0sCiAgICAgezYyLCAxfSwKICAgICB7NjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzJdID0gewotICAgIHsxMywgYXJjc18xOF8wfSwKLSAgICB7MSwgYXJjc18xOF8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMFsxXSA9IHsKICAgICB7NjQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0gewotICAgIHs2NSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbM10gPSB7Ci0gICAgezEsIGFyY3NfMTlfMH0sCi0gICAgezEsIGFyY3NfMTlfMX0sCi0gICAgezEsIGFyY3NfMTlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7Ci0gICAgezY2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjBfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yMFsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbMl0gPSB7CisgICAgezEzLCBhcmNzXzE5XzB9LAorICAgIHsxLCBhcmNzXzE5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0geworICAgIHs2NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CisgICAgezY2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yMFszXSA9IHsKICAgICB7MSwgYXJjc18yMF8wfSwKICAgICB7MSwgYXJjc18yMF8xfSwKKyAgICB7MSwgYXJjc18yMF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjFfMFs1XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMV8wWzFdID0gewogICAgIHs2NywgMX0sCi0gICAgezY4LCAxfSwKLSAgICB7NjksIDF9LAotICAgIHs3MCwgMX0sCi0gICAgezcxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjFfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMVsyXSA9IHsKLSAgICB7NSwgYXJjc18yMV8wfSwKKyAgICB7MSwgYXJjc18yMV8wfSwKICAgICB7MSwgYXJjc18yMV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjJfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMl8wWzVdID0geworICAgIHs2OCwgMX0sCisgICAgezY5LCAxfSwKKyAgICB7NzAsIDF9LAorICAgIHs3MSwgMX0sCiAgICAgezcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjJfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMlsyXSA9IHsKLSAgICB7MSwgYXJjc18yMl8wfSwKKyAgICB7NSwgYXJjc18yMl8wfSwKICAgICB7MSwgYXJjc18yMl8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjNfMFsxXSA9IHsKQEAgLTU3NCwxNDIgKzYwMiwxMzMgQEAKIHN0YXRpYyBhcmMgYXJjc18yNF8wWzFdID0gewogICAgIHs3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjRfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNFsyXSA9IHsKKyAgICB7MSwgYXJjc18yNF8wfSwKKyAgICB7MSwgYXJjc18yNF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKKyAgICB7NzUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNV8xWzJdID0gewogICAgIHs5LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjVfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNFszXSA9IHsKLSAgICB7MSwgYXJjc18yNF8wfSwKLSAgICB7MiwgYXJjc18yNF8xfSwKLSAgICB7MSwgYXJjc18yNF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKLSAgICB7NDksIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNVszXSA9IHsKICAgICB7MSwgYXJjc18yNV8wfSwKLSAgICB7MSwgYXJjc18yNV8xfSwKKyAgICB7MiwgYXJjc18yNV8xfSwKKyAgICB7MSwgYXJjc18yNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjZfMFsxXSA9IHsKLSAgICB7NzUsIDF9LAorICAgIHs1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjZfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNlsyXSA9IHsKKyAgICB7MSwgYXJjc18yNl8wfSwKKyAgICB7MSwgYXJjc18yNl8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjdfMFsxXSA9IHsKKyAgICB7NzYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yN18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8yWzJdID0gewotICAgIHs3NiwgM30sCitzdGF0aWMgYXJjIGFyY3NfMjdfMlsyXSA9IHsKKyAgICB7NzcsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yN18zWzFdID0gewogICAgIHsyNiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNls1XSA9IHsKLSAgICB7MSwgYXJjc18yNl8wfSwKLSAgICB7MiwgYXJjc18yNl8xfSwKLSAgICB7MiwgYXJjc18yNl8yfSwKLSAgICB7MSwgYXJjc18yNl8zfSwKLSAgICB7MSwgYXJjc18yNl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbNV0gPSB7CisgICAgezEsIGFyY3NfMjdfMH0sCisgICAgezIsIGFyY3NfMjdfMX0sCisgICAgezIsIGFyY3NfMjdfMn0sCisgICAgezEsIGFyY3NfMjdfM30sCisgICAgezEsIGFyY3NfMjdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI3XzBbMl0gPSB7Ci0gICAgezc3LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yOF8wWzJdID0gewogICAgIHs3OCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbMl0gPSB7Ci0gICAgezIsIGFyY3NfMjdfMH0sCi0gICAgezEsIGFyY3NfMjdfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7CiAgICAgezc5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjhfMVsxXSA9IHsKLSAgICB7ODAsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzNdID0gewotICAgIHsxLCBhcmNzXzI4XzB9LAotICAgIHsxLCBhcmNzXzI4XzF9LAotICAgIHsxLCBhcmNzXzI4XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0gewotICAgIHs3NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzFbM10gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzJbNF0gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi0gICAgezc5LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfM1sxXSA9IHsKLSAgICB7NzksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV80WzNdID0gewotICAgIHszMywgNX0sCi0gICAgezEzLCA2fSwKLSAgICB7ODMsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNlsxXSA9IHsKLSAgICB7ODMsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV83WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOVs4XSA9IHsKLSAgICB7MSwgYXJjc18yOV8wfSwKLSAgICB7MywgYXJjc18yOV8xfSwKLSAgICB7NCwgYXJjc18yOV8yfSwKLSAgICB7MSwgYXJjc18yOV8zfSwKLSAgICB7MywgYXJjc18yOV80fSwKLSAgICB7MSwgYXJjc18yOV81fSwKLSAgICB7MSwgYXJjc18yOV82fSwKLSAgICB7MSwgYXJjc18yOV83fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8xWzJdID0gewotICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8yWzFdID0gewotICAgIHsyMywgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzJdID0geworICAgIHsyLCBhcmNzXzI4XzB9LAorICAgIHsxLCBhcmNzXzI4XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0geworICAgIHs4MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzFbMV0gPSB7CisgICAgezgxLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOVszXSA9IHsKKyAgICB7MSwgYXJjc18yOV8wfSwKKyAgICB7MSwgYXJjc18yOV8xfSwKKyAgICB7MSwgYXJjc18yOV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKKyAgICB7NzcsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8xWzNdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8yWzRdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorICAgIHs4MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHs4MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMFs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMF80WzNdID0geworICAgIHszMywgNX0sCisgICAgezEzLCA2fSwKKyAgICB7ODQsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfNlsxXSA9IHsKKyAgICB7ODQsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF83WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zMFs4XSA9IHsKICAgICB7MSwgYXJjc18zMF8wfSwKLSAgICB7MiwgYXJjc18zMF8xfSwKLSAgICB7MSwgYXJjc18zMF8yfSwKKyAgICB7MywgYXJjc18zMF8xfSwKKyAgICB7NCwgYXJjc18zMF8yfSwKICAgICB7MSwgYXJjc18zMF8zfSwKKyAgICB7MywgYXJjc18zMF80fSwKKyAgICB7MSwgYXJjc18zMF81fSwKKyAgICB7MSwgYXJjc18zMF82fSwKKyAgICB7MSwgYXJjc18zMF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMFsxXSA9IHsKLSAgICB7MTIsIDF9LAorICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKKyAgICB7ODYsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMlsxXSA9IHsKQEAgLTcyNSwzNyArNzQ0LDQ1IEBACiAgICAgezEsIGFyY3NfMzFfM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzBbMV0gPSB7Ci0gICAgezg0LCAxfSwKKyAgICB7MTIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMl8yWzFdID0geworICAgIHsyMywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMyXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbNF0gPSB7CisgICAgezEsIGFyY3NfMzJfMH0sCisgICAgezIsIGFyY3NfMzJfMX0sCisgICAgezEsIGFyY3NfMzJfMn0sCisgICAgezEsIGFyY3NfMzJfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7CisgICAgezg1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzJfMlsyXSA9IHsKLSAgICB7ODQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzMzXzJbMl0gPSB7CisgICAgezg1LCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMlszXSA9IHsKLSAgICB7MSwgYXJjc18zMl8wfSwKLSAgICB7MiwgYXJjc18zMl8xfSwKLSAgICB7MiwgYXJjc18zMl8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzNfMFsxXSA9IHsKLSAgICB7ODYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewotICAgIHszMiwgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMzWzNdID0gewogICAgIHsxLCBhcmNzXzMzXzB9LAogICAgIHsyLCBhcmNzXzMzXzF9LAorICAgIHsyLCBhcmNzXzMzXzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8wWzFdID0gewotICAgIHsyMywgMX0sCisgICAgezg3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzRfMVsyXSA9IHsKLSAgICB7ODEsIDB9LAorICAgIHszMiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzRbMl0gPSB7CkBAIC03NjMsMTkgKzc5MCwxNSBAQAogICAgIHsyLCBhcmNzXzM0XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8wWzFdID0gewotICAgIHs4NywgMX0sCisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzVfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM1XzFbMl0gPSB7CisgICAgezgyLCAwfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM1XzJbMl0gPSB7Ci0gICAgezMyLCAxfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNVszXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbMl0gPSB7CiAgICAgezEsIGFyY3NfMzVfMH0sCi0gICAgezEsIGFyY3NfMzVfMX0sCi0gICAgezIsIGFyY3NfMzVfMn0sCisgICAgezIsIGFyY3NfMzVfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzBbMV0gPSB7CiAgICAgezg4LCAxfSwKQEAgLTc5Niw5NyArODE5LDc2IEBACiAgICAgezg5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorICAgIHsyMywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM3XzJbMl0gPSB7Ci0gICAgezMyLCAzfSwKKyAgICB7MzIsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zN180WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzVdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zN1szXSA9IHsKICAgICB7MSwgYXJjc18zN18wfSwKICAgICB7MSwgYXJjc18zN18xfSwKICAgICB7MiwgYXJjc18zN18yfSwKLSAgICB7MSwgYXJjc18zN18zfSwKLSAgICB7MSwgYXJjc18zN180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMFs5XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zOF8wWzFdID0gewogICAgIHs5MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfMlsyXSA9IHsKKyAgICB7MzIsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzVdID0geworICAgIHsxLCBhcmNzXzM4XzB9LAorICAgIHsxLCBhcmNzXzM4XzF9LAorICAgIHsyLCBhcmNzXzM4XzJ9LAorICAgIHsxLCBhcmNzXzM4XzN9LAorICAgIHsxLCBhcmNzXzM4XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOV8wWzldID0gewogICAgIHs5MSwgMX0sCiAgICAgezkyLCAxfSwKICAgICB7OTMsIDF9LAogICAgIHs5NCwgMX0sCisgICAgezk1LCAxfSwKICAgICB7MTksIDF9LAogICAgIHsxOCwgMX0sCiAgICAgezE3LCAxfSwKLSAgICB7OTUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzJdID0gewotICAgIHs5LCBhcmNzXzM4XzB9LAotICAgIHsxLCBhcmNzXzM4XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0gewotICAgIHsyMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzFbM10gPSB7Ci0gICAgezE5LCAyfSwKLSAgICB7OTQsIDJ9LAotICAgIHs5MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbM10gPSB7Ci0gICAgezEsIGFyY3NfMzlfMH0sCi0gICAgezMsIGFyY3NfMzlfMX0sCi0gICAgezEsIGFyY3NfMzlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CiAgICAgezk2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM5XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbMl0gPSB7CisgICAgezksIGFyY3NfMzlfMH0sCisgICAgezEsIGFyY3NfMzlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CisgICAgezIxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDBfMVszXSA9IHsKKyAgICB7MTksIDJ9LAorICAgIHs5NSwgMn0sCisgICAgezkzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfMlsxXSA9IHsKLSAgICB7MjcsIDN9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfM1sxXSA9IHsKLSAgICB7MjgsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF80WzNdID0gewotICAgIHs5NywgMX0sCi0gICAgezk4LCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzVbMV0gPSB7Ci0gICAgezI3LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNlsxXSA9IHsKLSAgICB7MjgsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzhdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MFszXSA9IHsKICAgICB7MSwgYXJjc180MF8wfSwKLSAgICB7MSwgYXJjc180MF8xfSwKKyAgICB7MywgYXJjc180MF8xfSwKICAgICB7MSwgYXJjc180MF8yfSwKLSAgICB7MSwgYXJjc180MF8zfSwKLSAgICB7MywgYXJjc180MF80fSwKLSAgICB7MSwgYXJjc180MF81fSwKLSAgICB7MSwgYXJjc180MF82fSwKLSAgICB7MSwgYXJjc180MF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMFsxXSA9IHsKLSAgICB7OTksIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzFbMV0gPSB7CiAgICAgezI2LCAyfSwKQEAgLTg5Nyw4ICs4OTksOSBAQAogc3RhdGljIGFyYyBhcmNzXzQxXzNbMV0gPSB7CiAgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfNFsyXSA9IHsKLSAgICB7OTgsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQxXzRbM10gPSB7CisgICAgezk4LCAxfSwKKyAgICB7OTksIDV9LAogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfNVsxXSA9IHsKQEAgLTkxNSw3ICs5MTgsNyBAQAogICAgIHsxLCBhcmNzXzQxXzF9LAogICAgIHsxLCBhcmNzXzQxXzJ9LAogICAgIHsxLCBhcmNzXzQxXzN9LAotICAgIHsyLCBhcmNzXzQxXzR9LAorICAgIHszLCBhcmNzXzQxXzR9LAogICAgIHsxLCBhcmNzXzQxXzV9LAogICAgIHsxLCBhcmNzXzQxXzZ9LAogICAgIHsxLCBhcmNzXzQxXzd9LApAQCAtOTI0LDI1OCArOTI3LDI3MCBAQAogICAgIHsxMDAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezI2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMlsxXSA9IHsKLSAgICB7MTAxLCAzfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8zWzFdID0gewotICAgIHs5LCA0fSwKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml80WzFdID0gewotICAgIHsyNywgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNFsyXSA9IHsKKyAgICB7OTksIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfNVsxXSA9IHsKLSAgICB7MjgsIDZ9LAorICAgIHsyNywgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzZbMl0gPSB7Ci0gICAgezk4LCA3fSwKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNlsxXSA9IHsKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml83WzFdID0gewotICAgIHsyNywgOH0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml84WzFdID0gewotICAgIHsyOCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQyXzlbMV0gPSB7Ci0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbMTBdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180Mls4XSA9IHsKICAgICB7MSwgYXJjc180Ml8wfSwKICAgICB7MSwgYXJjc180Ml8xfSwKICAgICB7MSwgYXJjc180Ml8yfSwKICAgICB7MSwgYXJjc180Ml8zfSwKLSAgICB7MSwgYXJjc180Ml80fSwKKyAgICB7MiwgYXJjc180Ml80fSwKICAgICB7MSwgYXJjc180Ml81fSwKLSAgICB7MiwgYXJjc180Ml82fSwKKyAgICB7MSwgYXJjc180Ml82fSwKICAgICB7MSwgYXJjc180Ml83fSwKLSAgICB7MSwgYXJjc180Ml84fSwKLSAgICB7MSwgYXJjc180Ml85fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMFsxXSA9IHsKLSAgICB7MTAyLCAxfSwKKyAgICB7MTAxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMVsxXSA9IHsKLSAgICB7MjcsIDJ9LAorICAgIHs2NiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzJbMV0gPSB7Ci0gICAgezI4LCAzfSwKKyAgICB7MTAyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfM1syXSA9IHsKLSAgICB7MTAzLCA0fSwKLSAgICB7MTA0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180M18zWzFdID0geworICAgIHs5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfNFsxXSA9IHsKLSAgICB7MjcsIDZ9LAorICAgIHsyNywgNX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzVbMV0gPSB7Ci0gICAgezI3LCA3fSwKKyAgICB7MjgsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M182WzFdID0gewotICAgIHsyOCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfNDNfNlsyXSA9IHsKKyAgICB7OTksIDd9LAorICAgIHswLCA2fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfN1sxXSA9IHsKLSAgICB7MjgsIDl9LAorICAgIHsyNywgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzhbNF0gPSB7Ci0gICAgezEwMywgNH0sCi0gICAgezk4LCAxMH0sCi0gICAgezEwNCwgNX0sCi0gICAgezAsIDh9LAorc3RhdGljIGFyYyBhcmNzXzQzXzhbMV0gPSB7CisgICAgezI4LCA5fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfOVsxXSA9IHsKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzEwWzFdID0gewotICAgIHsyNywgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMVsxXSA9IHsKLSAgICB7MjgsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTJbMl0gPSB7Ci0gICAgezEwNCwgNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzEzXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTBdID0gewogICAgIHsxLCBhcmNzXzQzXzB9LAogICAgIHsxLCBhcmNzXzQzXzF9LAogICAgIHsxLCBhcmNzXzQzXzJ9LAotICAgIHsyLCBhcmNzXzQzXzN9LAorICAgIHsxLCBhcmNzXzQzXzN9LAogICAgIHsxLCBhcmNzXzQzXzR9LAogICAgIHsxLCBhcmNzXzQzXzV9LAotICAgIHsxLCBhcmNzXzQzXzZ9LAorICAgIHsyLCBhcmNzXzQzXzZ9LAogICAgIHsxLCBhcmNzXzQzXzd9LAotICAgIHs0LCBhcmNzXzQzXzh9LAorICAgIHsxLCBhcmNzXzQzXzh9LAogICAgIHsxLCBhcmNzXzQzXzl9LAotICAgIHsxLCBhcmNzXzQzXzEwfSwKLSAgICB7MSwgYXJjc180M18xMX0sCi0gICAgezIsIGFyY3NfNDNfMTJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8wWzFdID0gewotICAgIHsxMDUsIDF9LAorICAgIHsxMDMsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8xWzFdID0gewotICAgIHsxMDYsIDJ9LAorICAgIHsyNywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDRfMlsxXSA9IHsKKyAgICB7MjgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8zWzJdID0geworICAgIHsxMDQsIDR9LAorICAgIHsxMDUsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF80WzFdID0geworICAgIHsyNywgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzVbMV0gPSB7CisgICAgezI3LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNlsxXSA9IHsKKyAgICB7MjgsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF83WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzhbNF0gPSB7CisgICAgezEwNCwgNH0sCisgICAgezk5LCAxMH0sCisgICAgezEwNSwgNX0sCisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF85WzFdID0geworICAgIHswLCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTBbMV0gPSB7CisgICAgezI3LCAxMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzExWzFdID0geworICAgIHsyOCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMlsyXSA9IHsKKyAgICB7MTA1LCA1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDRbMTNdID0geworICAgIHsxLCBhcmNzXzQ0XzB9LAorICAgIHsxLCBhcmNzXzQ0XzF9LAorICAgIHsxLCBhcmNzXzQ0XzJ9LAorICAgIHsyLCBhcmNzXzQ0XzN9LAorICAgIHsxLCBhcmNzXzQ0XzR9LAorICAgIHsxLCBhcmNzXzQ0XzV9LAorICAgIHsxLCBhcmNzXzQ0XzZ9LAorICAgIHsxLCBhcmNzXzQ0Xzd9LAorICAgIHs0LCBhcmNzXzQ0Xzh9LAorICAgIHsxLCBhcmNzXzQ0Xzl9LAorICAgIHsxLCBhcmNzXzQ0XzEwfSwKKyAgICB7MSwgYXJjc180NF8xMX0sCisgICAgezIsIGFyY3NfNDRfMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8wWzFdID0geworICAgIHsxMDYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8xWzFdID0geworICAgIHsxMDcsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8yWzJdID0gewogICAgIHszMiwgMX0sCiAgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewogICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDVfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180NFs1XSA9IHsKLSAgICB7MSwgYXJjc180NF8wfSwKLSAgICB7MSwgYXJjc180NF8xfSwKLSAgICB7MiwgYXJjc180NF8yfSwKLSAgICB7MSwgYXJjc180NF8zfSwKLSAgICB7MSwgYXJjc180NF80fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKLSAgICB7MjYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8xWzJdID0gewotICAgIHs4NSwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8yWzFdID0gewotICAgIHsxMDcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzRdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180NVs1XSA9IHsKICAgICB7MSwgYXJjc180NV8wfSwKLSAgICB7MiwgYXJjc180NV8xfSwKLSAgICB7MSwgYXJjc180NV8yfSwKKyAgICB7MSwgYXJjc180NV8xfSwKKyAgICB7MiwgYXJjc180NV8yfSwKICAgICB7MSwgYXJjc180NV8zfSwKKyAgICB7MSwgYXJjc180NV80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMFsxXSA9IHsKLSAgICB7MTA4LCAxfSwKKyAgICB7MjYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8yWzFdID0geworICAgIHsxMDgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzRdID0geworICAgIHsxLCBhcmNzXzQ2XzB9LAorICAgIHsyLCBhcmNzXzQ2XzF9LAorICAgIHsxLCBhcmNzXzQ2XzJ9LAorICAgIHsxLCBhcmNzXzQ2XzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18wWzFdID0geworICAgIHsxMDksIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8yWzJdID0gewotICAgIHs4NSwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDdfMlsyXSA9IHsKKyAgICB7ODYsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180N18zWzFdID0gewogICAgIHsyMywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180Nls1XSA9IHsKLSAgICB7MSwgYXJjc180Nl8wfSwKLSAgICB7MiwgYXJjc180Nl8xfSwKLSAgICB7MiwgYXJjc180Nl8yfSwKLSAgICB7MSwgYXJjc180Nl8zfSwKLSAgICB7MSwgYXJjc180Nl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7CisgICAgezEsIGFyY3NfNDdfMH0sCisgICAgezIsIGFyY3NfNDdfMX0sCisgICAgezIsIGFyY3NfNDdfMn0sCisgICAgezEsIGFyY3NfNDdfM30sCisgICAgezEsIGFyY3NfNDdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ3XzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKICAgICB7MywgMX0sCiAgICAgezIsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180N18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMlsxXSA9IHsKLSAgICB7MTA5LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKLSAgICB7NiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzRbMl0gPSB7Ci0gICAgezYsIDR9LAotICAgIHsxMTAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7Ci0gICAgezIsIGFyY3NfNDdfMH0sCi0gICAgezEsIGFyY3NfNDdfMX0sCi0gICAgezEsIGFyY3NfNDdfMn0sCi0gICAgezEsIGFyY3NfNDdfM30sCi0gICAgezIsIGFyY3NfNDdfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7Ci0gICAgezExMSwgMX0sCi0gICAgezExMiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzFbMl0gPSB7Ci0gICAgezk2LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180OF8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezExMCwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzNbMV0gPSB7Ci0gICAgezExMSwgNH0sCisgICAgezYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF80WzFdID0gewotICAgIHs5OCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDhfNFsyXSA9IHsKKyAgICB7NiwgNH0sCisgICAgezExMSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzVbMV0gPSB7Ci0gICAgezI2LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzZdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180OFs1XSA9IHsKICAgICB7MiwgYXJjc180OF8wfSwKLSAgICB7MiwgYXJjc180OF8xfSwKKyAgICB7MSwgYXJjc180OF8xfSwKICAgICB7MSwgYXJjc180OF8yfSwKICAgICB7MSwgYXJjc180OF8zfSwKLSAgICB7MSwgYXJjc180OF80fSwKLSAgICB7MSwgYXJjc180OF81fSwKKyAgICB7MiwgYXJjc180OF80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDlfMFsyXSA9IHsKLSAgICB7MTExLCAxfSwKLSAgICB7MTE0LCAxfSwKKyAgICB7MTEyLCAxfSwKKyAgICB7MTEzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8xWzJdID0geworICAgIHs5NywgM30sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbMl0gPSB7Ci0gICAgezIsIGFyY3NfNDlfMH0sCi0gICAgezEsIGFyY3NfNDlfMX0sCitzdGF0aWMgYXJjIGFyY3NfNDlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDlfM1sxXSA9IHsKKyAgICB7MTEyLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDlfNFsxXSA9IHsKKyAgICB7OTksIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180OV81WzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180OVs2XSA9IHsKKyAgICB7MiwgYXJjc180OV8wfSwKKyAgICB7MiwgYXJjc180OV8xfSwKKyAgICB7MSwgYXJjc180OV8yfSwKKyAgICB7MSwgYXJjc180OV8zfSwKKyAgICB7MSwgYXJjc180OV80fSwKKyAgICB7MSwgYXJjc180OV81fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfMFsyXSA9IHsKKyAgICB7MTEyLCAxfSwKICAgICB7MTE1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMVsyXSA9IHsKLSAgICB7MzUsIDJ9LAotICAgIHsyNywgM30sCitzdGF0aWMgYXJjIGFyY3NfNTBfMVsxXSA9IHsKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzJbMV0gPSB7Ci0gICAgezI3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzVdID0gewotICAgIHsxLCBhcmNzXzUwXzB9LAotICAgIHsyLCBhcmNzXzUwXzF9LAotICAgIHsxLCBhcmNzXzUwXzJ9LAotICAgIHsxLCBhcmNzXzUwXzN9LAotICAgIHsxLCBhcmNzXzUwXzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc181MFsyXSA9IHsKKyAgICB7MiwgYXJjc181MF8wfSwKKyAgICB7MSwgYXJjc181MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMFsxXSA9IHsKLSAgICB7MTE1LCAxfSwKKyAgICB7MTE2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMVsyXSA9IHsKICAgICB7MzUsIDJ9LApAQCAtMTE4NSw3ICsxMjAwLDcgQEAKICAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8zWzFdID0gewotICAgIHsxMTMsIDR9LAorICAgIHsyNiwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzRbMV0gPSB7CiAgICAgezAsIDR9LApAQCAtMTIwMSwxMDggKzEyMTYsMTIwIEBACiAgICAgezExNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUyXzFbMl0gPSB7Ci0gICAgezExNywgMH0sCi0gICAgezAsIDF9LAorICAgIHszNSwgMn0sCisgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzJdID0geworc3RhdGljIGFyYyBhcmNzXzUyXzJbMV0gPSB7CisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfM1sxXSA9IHsKKyAgICB7MTE0LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181Mls1XSA9IHsKICAgICB7MSwgYXJjc181Ml8wfSwKICAgICB7MiwgYXJjc181Ml8xfSwKKyAgICB7MSwgYXJjc181Ml8yfSwKKyAgICB7MSwgYXJjc181Ml8zfSwKKyAgICB7MSwgYXJjc181Ml80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMFsxXSA9IHsKLSAgICB7MTE4LCAxfSwKKyAgICB7MTE3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMVsyXSA9IHsKLSAgICB7MTE5LCAwfSwKKyAgICB7MTE4LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181M1syXSA9IHsKICAgICB7MSwgYXJjc181M18wfSwKICAgICB7MiwgYXJjc181M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMFsyXSA9IHsKLSAgICB7MTIwLCAxfSwKLSAgICB7MTIxLCAyfSwKK3N0YXRpYyBhcmMgYXJjc181NF8wWzFdID0geworICAgIHsxMTksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8xWzFdID0gewotICAgIHsxMTgsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzNdID0gewotICAgIHsyLCBhcmNzXzU0XzB9LAotICAgIHsxLCBhcmNzXzU0XzF9LAotICAgIHsxLCBhcmNzXzU0XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8wWzFdID0gewotICAgIHsxMDcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8xWzJdID0gewotICAgIHsxMjIsIDB9LAorc3RhdGljIGFyYyBhcmNzXzU0XzFbMl0gPSB7CisgICAgezEyMCwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTVfMH0sCi0gICAgezIsIGFyY3NfNTVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzJdID0geworICAgIHsxLCBhcmNzXzU0XzB9LAorICAgIHsyLCBhcmNzXzU0XzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8wWzEwXSA9IHsKLSAgICB7MTIzLCAxfSwKK3N0YXRpYyBhcmMgYXJjc181NV8wWzJdID0geworICAgIHsxMjEsIDF9LAorICAgIHsxMjIsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8xWzFdID0geworICAgIHsxMTksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU1WzNdID0geworICAgIHsyLCBhcmNzXzU1XzB9LAorICAgIHsxLCBhcmNzXzU1XzF9LAorICAgIHsxLCBhcmNzXzU1XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8wWzFdID0geworICAgIHsxMDgsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8xWzJdID0geworICAgIHsxMjMsIDB9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzJdID0geworICAgIHsxLCBhcmNzXzU2XzB9LAorICAgIHsyLCBhcmNzXzU2XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181N18wWzEwXSA9IHsKICAgICB7MTI0LCAxfSwKICAgICB7MTI1LCAxfSwKICAgICB7MTI2LCAxfSwKICAgICB7MTI3LCAxfSwKICAgICB7MTI4LCAxfSwKICAgICB7MTI5LCAxfSwKLSAgICB7MTAxLCAxfSwKLSAgICB7MTIwLCAyfSwKLSAgICB7MTMwLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzJbMV0gPSB7Ci0gICAgezEwMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzNbMl0gPSB7Ci0gICAgezEyMCwgMX0sCi0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbNF0gPSB7Ci0gICAgezEwLCBhcmNzXzU2XzB9LAotICAgIHsxLCBhcmNzXzU2XzF9LAotICAgIHsxLCBhcmNzXzU2XzJ9LAotICAgIHsyLCBhcmNzXzU2XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181N18wWzFdID0gewotICAgIHszMywgMX0sCisgICAgezEzMCwgMX0sCisgICAgezEwMiwgMX0sCisgICAgezEyMSwgMn0sCisgICAgezEzMSwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU3XzFbMV0gPSB7Ci0gICAgezEwNywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU3XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbM10gPSB7Ci0gICAgezEsIGFyY3NfNTdfMH0sCi0gICAgezEsIGFyY3NfNTdfMX0sCi0gICAgezEsIGFyY3NfNTdfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7Ci0gICAgezEzMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzFbMl0gPSB7Ci0gICAgezEzMiwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNThbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKKyAgICB7MTAyLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTdfM1syXSA9IHsKKyAgICB7MTIxLCAxfSwKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181N1s0XSA9IHsKKyAgICB7MTAsIGFyY3NfNTdfMH0sCisgICAgezEsIGFyY3NfNTdfMX0sCisgICAgezEsIGFyY3NfNTdfMn0sCisgICAgezIsIGFyY3NfNTdfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7CisgICAgezMzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMVsxXSA9IHsKKyAgICB7MTA4LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181OFszXSA9IHsKICAgICB7MSwgYXJjc181OF8wfSwKLSAgICB7MiwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMFsxXSA9IHsKLSAgICB7MTMzLCAxfSwKKyAgICB7MTMyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMVsyXSA9IHsKLSAgICB7MTM0LCAwfSwKKyAgICB7MTMzLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181OVsyXSA9IHsKQEAgLTEzMTAsMTAgKzEzMzcsMTAgQEAKICAgICB7MiwgYXJjc181OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMFsxXSA9IHsKLSAgICB7MTM1LCAxfSwKKyAgICB7MTM0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMVsyXSA9IHsKLSAgICB7MTM2LCAwfSwKKyAgICB7MTM1LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MFsyXSA9IHsKQEAgLTEzMjEsMjMgKzEzNDgsMjIgQEAKICAgICB7MiwgYXJjc182MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjFfMFsxXSA9IHsKLSAgICB7MTM3LCAxfSwKKyAgICB7MTM2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjFfMVszXSA9IHsKLSAgICB7MTM4LCAwfSwKLSAgICB7MTM5LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MV8xWzJdID0geworICAgIHsxMzcsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYxWzJdID0gewogICAgIHsxLCBhcmNzXzYxXzB9LAotICAgIHszLCBhcmNzXzYxXzF9LAorICAgIHsyLCBhcmNzXzYxXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8wWzFdID0gewotICAgIHsxNDAsIDF9LAorICAgIHsxMzgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8xWzNdID0gewotICAgIHsxNDEsIDB9LAotICAgIHsxNDIsIDB9LAorICAgIHsxMzksIDB9LAorICAgIHsxNDAsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzJdID0gewpAQCAtMTM0NSw1MjggKzEzNzEsNTQ1IEBACiAgICAgezMsIGFyY3NfNjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7Ci0gICAgezE0MywgMX0sCisgICAgezE0MSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzFbNl0gPSB7Ci0gICAgezMzLCAwfSwKLSAgICB7MTEsIDB9LAotICAgIHsxNDQsIDB9LAotICAgIHsxNDUsIDB9LAotICAgIHsxNDYsIDB9LAorc3RhdGljIGFyYyBhcmNzXzYzXzFbM10gPSB7CisgICAgezE0MiwgMH0sCisgICAgezE0MywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbMl0gPSB7CiAgICAgezEsIGFyY3NfNjNfMH0sCi0gICAgezYsIGFyY3NfNjNfMX0sCisgICAgezMsIGFyY3NfNjNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzBbNF0gPSB7Ci0gICAgezE0MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMFsxXSA9IHsKKyAgICB7MTQ0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjRfMVs2XSA9IHsKKyAgICB7MzMsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezE0NSwgMH0sCisgICAgezE0NiwgMH0sCisgICAgezE0NywgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbMl0gPSB7CisgICAgezEsIGFyY3NfNjRfMH0sCisgICAgezYsIGFyY3NfNjRfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY1XzBbNF0gPSB7CiAgICAgezE0MiwgMX0sCi0gICAgezE0NywgMX0sCi0gICAgezE0OCwgMn0sCisgICAgezE0MywgMX0sCisgICAgezE0OCwgMX0sCisgICAgezE0OSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzFbMV0gPSB7Ci0gICAgezE0MywgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjVfMVsxXSA9IHsKKyAgICB7MTQ0LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182NV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzNdID0gewotICAgIHs0LCBhcmNzXzY0XzB9LAotICAgIHsxLCBhcmNzXzY0XzF9LAotICAgIHsxLCBhcmNzXzY0XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc182NVszXSA9IHsKKyAgICB7NCwgYXJjc182NV8wfSwKKyAgICB7MSwgYXJjc182NV8xfSwKKyAgICB7MSwgYXJjc182NV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMFsxXSA9IHsKLSAgICB7MTQ5LCAxfSwKK3N0YXRpYyBhcmMgYXJjc182Nl8wWzFdID0geworICAgIHsxNTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzFbMl0gPSB7CiAgICAgezM0LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7Ci0gICAgezE0MywgM30sCitzdGF0aWMgYXJjIGFyY3NfNjZfMlsxXSA9IHsKKyAgICB7MTQ0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzRdID0gewotICAgIHsxLCBhcmNzXzY1XzB9LAotICAgIHsyLCBhcmNzXzY1XzF9LAotICAgIHsxLCBhcmNzXzY1XzJ9LAotICAgIHsxLCBhcmNzXzY1XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc182Nls0XSA9IHsKKyAgICB7MSwgYXJjc182Nl8wfSwKKyAgICB7MiwgYXJjc182Nl8xfSwKKyAgICB7MSwgYXJjc182Nl8yfSwKKyAgICB7MSwgYXJjc182Nl8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMFsyXSA9IHsKLSAgICB7MTUwLCAxfSwKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMVsxXSA9IHsKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182N18wWzJdID0geworICAgIHsxNTEsIDF9LAogICAgIHsxNTIsIDJ9LAotICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzNdID0gewotICAgIHsyLCBhcmNzXzY2XzB9LAotICAgIHsxLCBhcmNzXzY2XzF9LAotICAgIHsyLCBhcmNzXzY2XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N18wWzEwXSA9IHsKLSAgICB7MTMsIDF9LAotICAgIHsxNTQsIDJ9LAotICAgIHsxNTYsIDN9LAotICAgIHsyMywgNH0sCi0gICAgezE1OSwgNH0sCi0gICAgezE2MCwgNX0sCi0gICAgezgyLCA0fSwKLSAgICB7MTYxLCA0fSwKLSAgICB7MTYyLCA0fSwKLSAgICB7MTYzLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMVszXSA9IHsKLSAgICB7NDksIDZ9LAotICAgIHsxNTMsIDZ9LAotICAgIHsxNSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjdfMVsxXSA9IHsKKyAgICB7MTUyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjdfMlsyXSA9IHsKLSAgICB7MTUzLCA3fSwKLSAgICB7MTU1LCA0fSwKKyAgICB7MTUzLCAyfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY3XzNbMl0gPSB7Ci0gICAgezE1NywgOH0sCi0gICAgezE1OCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N181WzJdID0gewotICAgIHsxNjAsIDV9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNlsxXSA9IHsKLSAgICB7MTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N183WzFdID0gewotICAgIHsxNTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N184WzFdID0gewotICAgIHsxNTgsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbOV0gPSB7Ci0gICAgezEwLCBhcmNzXzY3XzB9LAotICAgIHszLCBhcmNzXzY3XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc182N1szXSA9IHsKKyAgICB7MiwgYXJjc182N18wfSwKKyAgICB7MSwgYXJjc182N18xfSwKICAgICB7MiwgYXJjc182N18yfSwKLSAgICB7MiwgYXJjc182N18zfSwKLSAgICB7MSwgYXJjc182N180fSwKLSAgICB7MiwgYXJjc182N181fSwKLSAgICB7MSwgYXJjc182N182fSwKLSAgICB7MSwgYXJjc182N183fSwKLSAgICB7MSwgYXJjc182N184fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMFsyXSA9IHsKLSAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjhfMFsxMF0gPSB7CisgICAgezEzLCAxfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7MTU3LCAzfSwKKyAgICB7MjMsIDR9LAorICAgIHsxNjAsIDR9LAorICAgIHsxNjEsIDV9LAorICAgIHs4MywgNH0sCisgICAgezE2MiwgNH0sCisgICAgezE2MywgNH0sCisgICAgezE2NCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY4XzFbM10gPSB7Ci0gICAgezE2NCwgMn0sCisgICAgezUwLCA2fSwKKyAgICB7MTU0LCA2fSwKKyAgICB7MTUsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8yWzJdID0geworICAgIHsxNTQsIDd9LAorICAgIHsxNTYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8zWzJdID0geworICAgIHsxNTgsIDh9LAorICAgIHsxNTksIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNVsyXSA9IHsKKyAgICB7MTYxLCA1fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzZbMV0gPSB7CisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfN1sxXSA9IHsKKyAgICB7MTU2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfOFsxXSA9IHsKKyAgICB7MTU5LCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzldID0geworICAgIHsxMCwgYXJjc182OF8wfSwKKyAgICB7MywgYXJjc182OF8xfSwKKyAgICB7MiwgYXJjc182OF8yfSwKKyAgICB7MiwgYXJjc182OF8zfSwKKyAgICB7MSwgYXJjc182OF80fSwKKyAgICB7MiwgYXJjc182OF81fSwKKyAgICB7MSwgYXJjc182OF82fSwKKyAgICB7MSwgYXJjc182OF83fSwKKyAgICB7MSwgYXJjc182OF84fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzFbM10gPSB7CisgICAgezE2NSwgMn0sCiAgICAgezMyLCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfM1szXSA9IHsKICAgICB7MjYsIDR9LAotICAgIHs1MCwgNH0sCisgICAgezUxLCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzRbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfNFsyXSA9IHsKICAgICB7MzIsIDN9LAogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzVdID0gewotICAgIHsyLCBhcmNzXzY4XzB9LAotICAgIHszLCBhcmNzXzY4XzF9LAotICAgIHsxLCBhcmNzXzY4XzJ9LAotICAgIHszLCBhcmNzXzY4XzN9LAotICAgIHsyLCBhcmNzXzY4XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc182OVs1XSA9IHsKKyAgICB7MiwgYXJjc182OV8wfSwKKyAgICB7MywgYXJjc182OV8xfSwKKyAgICB7MSwgYXJjc182OV8yfSwKKyAgICB7MywgYXJjc182OV8zfSwKKyAgICB7MiwgYXJjc182OV80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8wWzNdID0gewogICAgIHsxMywgMX0sCi0gICAgezE1NCwgMn0sCi0gICAgezgxLCAzfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7ODIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CiAgICAgezE0LCA0fSwKICAgICB7MTUsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewotICAgIHsxNjUsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzcwXzJbMV0gPSB7CisgICAgezE2NiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfM1sxXSA9IHsKICAgICB7MjMsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzRbMV0gPSB7CiAgICAgezE1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNlsxXSA9IHsKLSAgICB7MTU1LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183MF82WzFdID0geworICAgIHsxNTYsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbN10gPSB7Ci0gICAgezMsIGFyY3NfNjlfMH0sCi0gICAgezIsIGFyY3NfNjlfMX0sCi0gICAgezEsIGFyY3NfNjlfMn0sCi0gICAgezEsIGFyY3NfNjlfM30sCi0gICAgezEsIGFyY3NfNjlfNH0sCi0gICAgezEsIGFyY3NfNjlfNX0sCi0gICAgezEsIGFyY3NfNjlfNn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzddID0geworICAgIHszLCBhcmNzXzcwXzB9LAorICAgIHsyLCBhcmNzXzcwXzF9LAorICAgIHsxLCBhcmNzXzcwXzJ9LAorICAgIHsxLCBhcmNzXzcwXzN9LAorICAgIHsxLCBhcmNzXzcwXzR9LAorICAgIHsxLCBhcmNzXzcwXzV9LAorICAgIHsxLCBhcmNzXzcwXzZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8wWzFdID0gewotICAgIHsxNjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzBbMV0gPSB7CisgICAgezE2NywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMlsyXSA9IHsKLSAgICB7MTY2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8yWzJdID0geworICAgIHsxNjcsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzNdID0gewotICAgIHsxLCBhcmNzXzcwXzB9LAotICAgIHsyLCBhcmNzXzcwXzF9LAotICAgIHsyLCBhcmNzXzcwXzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183MVszXSA9IHsKKyAgICB7MSwgYXJjc183MV8wfSwKKyAgICB7MiwgYXJjc183MV8xfSwKKyAgICB7MiwgYXJjc183MV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8wWzJdID0gewogICAgIHsyNiwgMX0sCiAgICAgezI3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0gewogICAgIHsyNywgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8yWzNdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzJbM10gPSB7CiAgICAgezI2LCAzfSwKLSAgICB7MTY3LCA0fSwKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzNbMl0gPSB7Ci0gICAgezE2NywgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzJfM1syXSA9IHsKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MVs1XSA9IHsKLSAgICB7MiwgYXJjc183MV8wfSwKLSAgICB7MiwgYXJjc183MV8xfSwKLSAgICB7MywgYXJjc183MV8yfSwKLSAgICB7MiwgYXJjc183MV8zfSwKLSAgICB7MSwgYXJjc183MV80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbNV0gPSB7CisgICAgezIsIGFyY3NfNzJfMH0sCisgICAgezIsIGFyY3NfNzJfMX0sCisgICAgezMsIGFyY3NfNzJfMn0sCisgICAgezIsIGFyY3NfNzJfM30sCisgICAgezEsIGFyY3NfNzJfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzNfMFsxXSA9IHsKICAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbM10gPSB7Ci0gICAgezEsIGFyY3NfNzJfMH0sCi0gICAgezIsIGFyY3NfNzJfMX0sCi0gICAgezEsIGFyY3NfNzJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzBbMl0gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezUwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKLSAgICB7MzIsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMlszXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzczXzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbM10gPSB7Ci0gICAgezIsIGFyY3NfNzNfMH0sCisgICAgezEsIGFyY3NfNzNfMH0sCiAgICAgezIsIGFyY3NfNzNfMX0sCi0gICAgezMsIGFyY3NfNzNfMn0sCisgICAgezEsIGFyY3NfNzNfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzBbMV0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8wWzJdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc0XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzJbMl0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8yWzNdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzRbM10gPSB7Ci0gICAgezEsIGFyY3NfNzRfMH0sCisgICAgezIsIGFyY3NfNzRfMH0sCiAgICAgezIsIGFyY3NfNzRfMX0sCi0gICAgezIsIGFyY3NfNzRfMn0sCisgICAgezMsIGFyY3NfNzRfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzVfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xWzJdID0geworICAgIHszMiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8yWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbM10gPSB7CisgICAgezEsIGFyY3NfNzVfMH0sCisgICAgezIsIGFyY3NfNzVfMX0sCisgICAgezIsIGFyY3NfNzVfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzBbM10gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MzQsIDJ9LAotICAgIHs1MCwgM30sCisgICAgezUxLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMVs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xWzRdID0gewogICAgIHsyNywgNH0sCi0gICAgezE2NCwgNX0sCisgICAgezE2NSwgNX0sCiAgICAgezMyLCA2fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzJbMV0gPSB7Ci0gICAgezEwNywgN30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMlsxXSA9IHsKKyAgICB7MTA4LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfM1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl8zWzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgNn0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7CiAgICAgezI2LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl82WzNdID0gewogICAgIHsyNiwgOH0sCi0gICAgezUwLCA4fSwKKyAgICB7NTEsIDh9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfN1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl83WzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgOX0sCiAgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV84WzJdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzhbMl0gPSB7CiAgICAgezMyLCA2fSwKICAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzlbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfOVszXSA9IHsKICAgICB7MjYsIDEwfSwKICAgICB7MzQsIDExfSwKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEwWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEwWzFdID0gewogICAgIHsyNywgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMVsxXSA9IHsKLSAgICB7MTA3LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMTFbMV0gPSB7CisgICAgezEwOCwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xMlsxXSA9IHsKICAgICB7MjYsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTNbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTNbMl0gPSB7CiAgICAgezMyLCA5fSwKICAgICB7MCwgMTN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbMTRdID0gewotICAgIHszLCBhcmNzXzc1XzB9LAotICAgIHs0LCBhcmNzXzc1XzF9LAotICAgIHsxLCBhcmNzXzc1XzJ9LAotICAgIHszLCBhcmNzXzc1XzN9LAotICAgIHsxLCBhcmNzXzc1XzR9LAotICAgIHsxLCBhcmNzXzc1XzV9LAotICAgIHszLCBhcmNzXzc1XzZ9LAotICAgIHszLCBhcmNzXzc1Xzd9LAotICAgIHsyLCBhcmNzXzc1Xzh9LAotICAgIHszLCBhcmNzXzc1Xzl9LAotICAgIHsxLCBhcmNzXzc1XzEwfSwKLSAgICB7MSwgYXJjc183NV8xMX0sCi0gICAgezEsIGFyY3NfNzVfMTJ9LAotICAgIHsyLCBhcmNzXzc1XzEzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMFsxXSA9IHsKLSAgICB7MTY4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8yWzJdID0gewotICAgIHsxMywgM30sCi0gICAgezI3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfM1syXSA9IHsKLSAgICB7MTQsIDV9LAotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7Ci0gICAgezI4LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl82WzFdID0gewotICAgIHsyNywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbOF0gPSB7Ci0gICAgezEsIGFyY3NfNzZfMH0sCi0gICAgezEsIGFyY3NfNzZfMX0sCi0gICAgezIsIGFyY3NfNzZfMn0sCi0gICAgezIsIGFyY3NfNzZfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzE0XSA9IHsKKyAgICB7MywgYXJjc183Nl8wfSwKKyAgICB7NCwgYXJjc183Nl8xfSwKKyAgICB7MSwgYXJjc183Nl8yfSwKKyAgICB7MywgYXJjc183Nl8zfSwKICAgICB7MSwgYXJjc183Nl80fSwKICAgICB7MSwgYXJjc183Nl81fSwKLSAgICB7MSwgYXJjc183Nl82fSwKLSAgICB7MSwgYXJjc183Nl83fSwKKyAgICB7MywgYXJjc183Nl82fSwKKyAgICB7MywgYXJjc183Nl83fSwKKyAgICB7MiwgYXJjc183Nl84fSwKKyAgICB7MywgYXJjc183Nl85fSwKKyAgICB7MSwgYXJjc183Nl8xMH0sCisgICAgezEsIGFyY3NfNzZfMTF9LAorICAgIHsxLCBhcmNzXzc2XzEyfSwKKyAgICB7MiwgYXJjc183Nl8xM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc3XzBbMV0gPSB7CiAgICAgezE2OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzdfMVsxXSA9IHsKKyAgICB7MjMsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N18yWzJdID0geworICAgIHsxMywgM30sCisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfM1syXSA9IHsKKyAgICB7MTQsIDV9LAorICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzRbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNVsxXSA9IHsKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N182WzFdID0geworICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbOF0gPSB7CisgICAgezEsIGFyY3NfNzdfMH0sCisgICAgezEsIGFyY3NfNzdfMX0sCisgICAgezIsIGFyY3NfNzdfMn0sCisgICAgezIsIGFyY3NfNzdfM30sCisgICAgezEsIGFyY3NfNzdfNH0sCisgICAgezEsIGFyY3NfNzdfNX0sCisgICAgezEsIGFyY3NfNzdfNn0sCisgICAgezEsIGFyY3NfNzdfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzBbMV0gPSB7CisgICAgezE3MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7Ci0gICAgezE2OSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzhfMlsyXSA9IHsKKyAgICB7MTcwLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183N1szXSA9IHsKLSAgICB7MSwgYXJjc183N18wfSwKLSAgICB7MiwgYXJjc183N18xfSwKLSAgICB7MiwgYXJjc183N18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzhbM10gPSB7CisgICAgezEsIGFyY3NfNzhfMH0sCisgICAgezIsIGFyY3NfNzhfMX0sCisgICAgezIsIGFyY3NfNzhfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfMFszXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHszNCwgMn0sCiAgICAgezMzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMVszXSA9IHsKLSAgICB7MTY0LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183OV8xWzNdID0geworICAgIHsxNjUsIDN9LAogICAgIHszMSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzJbMV0gPSB7CiAgICAgezI2LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzRdID0gewotICAgIHszLCBhcmNzXzc4XzB9LAotICAgIHszLCBhcmNzXzc4XzF9LAotICAgIHsxLCBhcmNzXzc4XzJ9LAotICAgIHsxLCBhcmNzXzc4XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc183OVs0XSA9IHsKKyAgICB7MywgYXJjc183OV8wfSwKKyAgICB7MywgYXJjc183OV8xfSwKKyAgICB7MSwgYXJjc183OV8yfSwKKyAgICB7MSwgYXJjc183OV8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMFsyXSA9IHsKLSAgICB7MTY0LCAxfSwKLSAgICB7MTcxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183OVsyXSA9IHsKLSAgICB7MiwgYXJjc183OV8wfSwKLSAgICB7MSwgYXJjc183OV8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMFsxXSA9IHsKLSAgICB7MTAwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MF8wWzJdID0geworICAgIHsxNjUsIDF9LAorICAgIHsxNzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewotICAgIHsxMDEsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF8zWzFdID0gewotICAgIHsxMTEsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF80WzJdID0gewotICAgIHsxNzAsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc184MFs2XSA9IHsKLSAgICB7MSwgYXJjc184MF8wfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODBbMl0gPSB7CisgICAgezIsIGFyY3NfODBfMH0sCiAgICAgezEsIGFyY3NfODBfMX0sCi0gICAgezEsIGFyY3NfODBfMn0sCi0gICAgezEsIGFyY3NfODBfM30sCi0gICAgezIsIGFyY3NfODBfNH0sCi0gICAgezEsIGFyY3NfODBfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzBbMV0gPSB7Ci0gICAgezk2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzJdID0geworICAgIHsyMSwgMX0sCisgICAgezEwMSwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7Ci0gICAgezExMywgMn0sCisgICAgezEwMSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzJbMl0gPSB7Ci0gICAgezE3MCwgM30sCi0gICAgezAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzJbMV0gPSB7CisgICAgezY2LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezEwMiwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MVs0XSA9IHsKLSAgICB7MSwgYXJjc184MV8wfSwKK3N0YXRpYyBhcmMgYXJjc184MV80WzFdID0geworICAgIHsxMTIsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV81WzJdID0geworICAgIHsxNzEsIDZ9LAorICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfNlsxXSA9IHsKKyAgICB7MCwgNn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MVs3XSA9IHsKKyAgICB7MiwgYXJjc184MV8wfSwKICAgICB7MSwgYXJjc184MV8xfSwKLSAgICB7MiwgYXJjc184MV8yfSwKKyAgICB7MSwgYXJjc184MV8yfSwKICAgICB7MSwgYXJjc184MV8zfSwKKyAgICB7MSwgYXJjc184MV80fSwKKyAgICB7MiwgYXJjc184MV81fSwKKyAgICB7MSwgYXJjc184MV82fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODJfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgyXzFbMV0gPSB7Ci0gICAgezAsIDF9LAorICAgIHsxMTQsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbMl0gPSB7Ci0gICAgezEsIGFyY3NfODJfMH0sCi0gICAgezEsIGFyY3NfODJfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7Ci0gICAgezE3MywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzFbMl0gPSB7Ci0gICAgezE3NCwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzgyXzJbMl0gPSB7CisgICAgezE3MSwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfODJfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184Mls0XSA9IHsKKyAgICB7MSwgYXJjc184Ml8wfSwKKyAgICB7MSwgYXJjc184Ml8xfSwKKyAgICB7MiwgYXJjc184Ml8yfSwKKyAgICB7MSwgYXJjc184Ml8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKKyAgICB7MjMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzJdID0gewogICAgIHsxLCBhcmNzXzgzXzB9LAotICAgIHsyLCBhcmNzXzgzXzF9LAotICAgIHsxLCBhcmNzXzgzXzJ9LAorICAgIHsxLCBhcmNzXzgzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184NF8wWzJdID0gewotICAgIHs3NiwgMX0sCi0gICAgezksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzg0XzBbMV0gPSB7CisgICAgezE3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzg0XzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184NF8xWzJdID0geworICAgIHsxNzUsIDJ9LAorICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODRfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc184NFszXSA9IHsKLSAgICB7MiwgYXJjc184NF8wfSwKLSAgICB7MSwgYXJjc184NF8xfSwKKyAgICB7MSwgYXJjc184NF8wfSwKKyAgICB7MiwgYXJjc184NF8xfSwKICAgICB7MSwgYXJjc184NF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODVdID0geworc3RhdGljIGFyYyBhcmNzXzg1XzBbMl0gPSB7CisgICAgezc3LCAxfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg1XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODVfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184NVszXSA9IHsKKyAgICB7MiwgYXJjc184NV8wfSwKKyAgICB7MSwgYXJjc184NV8xfSwKKyAgICB7MSwgYXJjc184NV8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODZdID0gewogICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCiAgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCkBAIC0xODc5LDE3OSArMTkyMiwxODEgQEAKICAgICAgIlwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY0LCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc184LAogICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc185LAorICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTksIHN0YXRlc185LAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjYsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfMTAsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMSwKKyAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOSwgc3RhdGVzXzExLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjgsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTIsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2OSwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI3MCwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzE0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzEsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzIsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezI3MywgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7Mjc0LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3MFwzNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzcsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezI3OCwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OSwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODEsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHsyODIsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OCwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMiwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTQsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEzMVwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAotICAgIHsyOTUsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzQwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTcsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAwLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwMiwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMywgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ3LAotICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAotICAgIHszMDQsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDUsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA2LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA3LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwOCwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwOSwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTAsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzExLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzEyLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwzNzFcMDA3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzEzLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTQsICJleHByIiwgMCwgMiwgc3RhdGVzXzU4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTUsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE2LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNywgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOCwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOSwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIxLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMiwgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIzLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI0LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI1LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDAifSwKLSAgICB7MzI2LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI3LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjgsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHsyNzMsICJhbm5hc3NpZ24iLCAwLCA1LCBzdGF0ZXNfMTcsCiAgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyOSwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzczLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzAsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMxLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzIsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKLSAgICB7MzMzLCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzM0LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzNSwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfODAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNywgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzOCwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODIsCisgICAgezI3NCwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7Mjc1LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM2MFwzNzdcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18yMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc3LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzgsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDM2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezI3OSwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHsyODMsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODQsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg1LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NiwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzMwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODcsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM5LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7MzQwLCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzg0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkzLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk0LCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NSwgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzksCisgICAgICJcMDAwXDAxMFwxNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjYyXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyIn0sCisgICAgezI5NiwgImFzeW5jX3N0bXQiLCAwLCAzLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OCwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAwLCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMiwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzAzLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA0LCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDgsCisgICAgICJcMDA0XDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCisgICAgezMwNSwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwNiwgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzUwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDcsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDgsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA5LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEwLCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMSwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTIsICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTMsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDM2MlwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTQsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxNSwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxNiwgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTcsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc182MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE4LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE5LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIwLCAidGVybSIsIDAsIDIsIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIxLCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjIsICJwb3dlciIsIDAsIDQsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIzLCAiYXRvbV9leHByIiwgMCwgMywgc3RhdGVzXzY3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjQsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjUsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjYsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzcwLAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMCJ9LAorICAgIHszMjcsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjgsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyOSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzMCwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzEsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMyLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzMsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDIifSwKKyAgICB7MzM0LCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzM1LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzNiwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM3LCAiY29tcF9mb3IiLCAwLCA3LCBzdGF0ZXNfODEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODMsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezM0MCwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezM0MSwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE3NV0gPSB7CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE3Nl0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKICAgICB7MjcwLCAwfSwKLSAgICB7Mjk0LCAwfSwKKyAgICB7Mjk1LCAwfSwKICAgICB7MjU3LCAwfSwKICAgICB7MjY5LCAwfSwKICAgICB7MCwgMH0sCiAgICAgezI1OCwgMH0sCi0gICAgezMzMCwgMH0sCisgICAgezMzMSwgMH0sCiAgICAgezI1OSwgMH0sCiAgICAgezQ5LCAwfSwKLSAgICB7MjkwLCAwfSwKKyAgICB7MjkxLCAwfSwKICAgICB7NywgMH0sCi0gICAgezMzMywgMH0sCisgICAgezMzNCwgMH0sCiAgICAgezgsIDB9LAogICAgIHsyNjAsIDB9LAogICAgIHsyNjEsIDB9LAotICAgIHszMzIsIDB9LAorICAgIHszMzMsIDB9LAogICAgIHsyNjMsIDB9LAogICAgIHsyNjIsIDB9LAogICAgIHs1NSwgMH0sCkBAIC0yMDU5LDkgKzIxMDQsOSBAQAogICAgIHsxLCAwfSwKICAgICB7MjY0LCAwfSwKICAgICB7NTEsIDB9LAotICAgIHszMDQsIDB9LAorICAgIHszMDUsIDB9LAogICAgIHsxMSwgMH0sCi0gICAgezMwMywgMH0sCisgICAgezMwNCwgMH0sCiAgICAgezI2NSwgMH0sCiAgICAgezI2NiwgMH0sCiAgICAgezIyLCAwfSwKQEAgLTIwNzMsMTcgKzIxMTgsMTggQEAKICAgICB7MjcxLCAwfSwKICAgICB7MTMsIDB9LAogICAgIHsyNzIsIDB9LAotICAgIHsyNzUsIDB9LAogICAgIHsyNzYsIDB9LAogICAgIHsyNzcsIDB9LAotICAgIHsyODMsIDB9LAotICAgIHsyOTEsIDB9LAorICAgIHsyNzgsIDB9LAorICAgIHsyODQsIDB9LAogICAgIHsyOTIsIDB9LAogICAgIHsyOTMsIDB9LAotICAgIHsyNzMsIDB9LAorICAgIHsyOTQsIDB9LAogICAgIHsyNzQsIDB9LAotICAgIHszMzksIDB9LAotICAgIHszMTMsIDB9LAorICAgIHsyNzMsIDB9LAorICAgIHsyNzUsIDB9LAorICAgIHszNDAsIDB9LAorICAgIHszMTQsIDB9LAogICAgIHszNiwgMH0sCiAgICAgezM3LCAwfSwKICAgICB7MzgsIDB9LApAQCAtMjA5OCwzNyArMjE0NCwzNyBAQAogICAgIHs0NiwgMH0sCiAgICAgezQ4LCAwfSwKICAgICB7MSwgImRlbCJ9LAotICAgIHszMjksIDB9LAorICAgIHszMzAsIDB9LAogICAgIHsxLCAicGFzcyJ9LAotICAgIHsyNzgsIDB9LAogICAgIHsyNzksIDB9LAogICAgIHsyODAsIDB9LAotICAgIHsyODIsIDB9LAogICAgIHsyODEsIDB9LAorICAgIHsyODMsIDB9LAorICAgIHsyODIsIDB9LAogICAgIHsxLCAiYnJlYWsifSwKICAgICB7MSwgImNvbnRpbnVlIn0sCiAgICAgezEsICJyZXR1cm4ifSwKICAgICB7MSwgInJhaXNlIn0sCiAgICAgezEsICJmcm9tIn0sCi0gICAgezI4NCwgMH0sCiAgICAgezI4NSwgMH0sCisgICAgezI4NiwgMH0sCiAgICAgezEsICJpbXBvcnQifSwKLSAgICB7Mjg5LCAwfSwKKyAgICB7MjkwLCAwfSwKICAgICB7MjMsIDB9LAogICAgIHs1MiwgMH0sCi0gICAgezI4OCwgMH0sCi0gICAgezI4NiwgMH0sCi0gICAgezEsICJhcyJ9LAorICAgIHsyODksIDB9LAogICAgIHsyODcsIDB9LAorICAgIHsxLCAiYXMifSwKKyAgICB7Mjg4LCAwfSwKICAgICB7MSwgImdsb2JhbCJ9LAogICAgIHsxLCAibm9ubG9jYWwifSwKICAgICB7MSwgImFzc2VydCJ9LAotICAgIHsyOTYsIDB9LAogICAgIHsyOTcsIDB9LAogICAgIHsyOTgsIDB9LAogICAgIHsyOTksIDB9LAogICAgIHszMDAsIDB9LAotICAgIHsyOTUsIDB9LAorICAgIHszMDEsIDB9LAorICAgIHsyOTYsIDB9LAogICAgIHsxLCAiaWYifSwKICAgICB7MSwgImVsaWYifSwKICAgICB7MSwgImVsc2UifSwKQEAgLTIxMzYsMjYgKzIxODIsMjYgQEAKICAgICB7MSwgImZvciJ9LAogICAgIHsxLCAiaW4ifSwKICAgICB7MSwgInRyeSJ9LAotICAgIHszMDIsIDB9LAorICAgIHszMDMsIDB9LAogICAgIHsxLCAiZmluYWxseSJ9LAogICAgIHsxLCAid2l0aCJ9LAotICAgIHszMDEsIDB9LAotICAgIHszMTQsIDB9LAorICAgIHszMDIsIDB9LAorICAgIHszMTUsIDB9LAogICAgIHsxLCAiZXhjZXB0In0sCiAgICAgezUsIDB9LAogICAgIHs2LCAwfSwKLSAgICB7MzA4LCAwfSwKLSAgICB7MzA2LCAwfSwKLSAgICB7MzA1LCAwfSwKLSAgICB7MzA3LCAwfSwKLSAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMDksIDB9LAotICAgIHsxLCAib3IifSwKKyAgICB7MzA3LCAwfSwKKyAgICB7MzA2LCAwfSwKKyAgICB7MzA4LCAwfSwKKyAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMTAsIDB9LAorICAgIHsxLCAib3IifSwKKyAgICB7MzExLCAwfSwKICAgICB7MSwgImFuZCJ9LAogICAgIHsxLCAibm90In0sCi0gICAgezMxMSwgMH0sCiAgICAgezMxMiwgMH0sCisgICAgezMxMywgMH0sCiAgICAgezIwLCAwfSwKICAgICB7MjEsIDB9LAogICAgIHsyNywgMH0sCkBAIC0yMTY0LDU0ICsyMjEwLDU0IEBACiAgICAgezI4LCAwfSwKICAgICB7MjgsIDB9LAogICAgIHsxLCAiaXMifSwKLSAgICB7MzE1LCAwfSwKLSAgICB7MTgsIDB9LAogICAgIHszMTYsIDB9LAotICAgIHszMiwgMH0sCisgICAgezE4LCAwfSwKICAgICB7MzE3LCAwfSwKLSAgICB7MTksIDB9LAorICAgIHszMiwgMH0sCiAgICAgezMxOCwgMH0sCisgICAgezE5LCAwfSwKKyAgICB7MzE5LCAwfSwKICAgICB7MzMsIDB9LAogICAgIHszNCwgMH0sCi0gICAgezMxOSwgMH0sCisgICAgezMyMCwgMH0sCiAgICAgezE0LCAwfSwKICAgICB7MTUsIDB9LAotICAgIHszMjAsIDB9LAorICAgIHszMjEsIDB9LAogICAgIHsxNywgMH0sCiAgICAgezI0LCAwfSwKICAgICB7NDcsIDB9LAogICAgIHszMSwgMH0sCi0gICAgezMyMSwgMH0sCiAgICAgezMyMiwgMH0sCi0gICAgezU0LCAwfSwKICAgICB7MzIzLCAwfSwKLSAgICB7MzI1LCAwfSwKKyAgICB7NTQsIDB9LAogICAgIHszMjQsIDB9LAorICAgIHszMjYsIDB9LAorICAgIHszMjUsIDB9LAogICAgIHs5LCAwfSwKICAgICB7MTAsIDB9LAogICAgIHsyNSwgMH0sCi0gICAgezMzMSwgMH0sCisgICAgezMzMiwgMH0sCiAgICAgezI2LCAwfSwKICAgICB7MiwgMH0sCiAgICAgezMsIDB9LAogICAgIHsxLCAiTm9uZSJ9LAogICAgIHsxLCAiVHJ1ZSJ9LAogICAgIHsxLCAiRmFsc2UifSwKLSAgICB7MzM2LCAwfSwKLSAgICB7MzI2LCAwfSwKKyAgICB7MzM3LCAwfSwKICAgICB7MzI3LCAwfSwKICAgICB7MzI4LCAwfSwKKyAgICB7MzI5LCAwfSwKICAgICB7MSwgImNsYXNzIn0sCi0gICAgezMzNCwgMH0sCiAgICAgezMzNSwgMH0sCi0gICAgezMzNywgMH0sCisgICAgezMzNiwgMH0sCiAgICAgezMzOCwgMH0sCisgICAgezMzOSwgMH0sCiAgICAgezEsICJ5aWVsZCJ9LAotICAgIHszNDAsIDB9LAorICAgIHszNDEsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODUsCisgICAgODYsCiAgICAgZGZhcywKLSAgICB7MTc1LCBsYWJlbHN9LAorICAgIHsxNzYsIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IDM1NzkyNzMuLmNkODY1YTUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTM4LDE0ICszOCw2IEBACiAKICNpbmNsdWRlICJjbGluaWMvaW1wb3J0LmMuaCIKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZnNfdW5pY29kZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeU9iamVjdCAqJwotICAgIGNvbnZlcnRlciA9ICdQeVVuaWNvZGVfRlNEZWNvZGVyJwotCi1bcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05ZDY3ODYyMzAxNjYwMDZlXSovCi0KIC8qIEluaXRpYWxpemUgdGhpbmdzICovCiAKIHZvaWQKQEAgLTMyMCw3ICszMTIsNyBAQAogCiAKIC8qIExpc3Qgb2YgbmFtZXMgdG8gY2xlYXIgaW4gc3lzICovCi1zdGF0aWMgY2hhciogc3lzX2RlbGV0ZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3lzX2RlbGV0ZXNbXSA9IHsKICAgICAicGF0aCIsICJhcmd2IiwgInBzMSIsICJwczIiLAogICAgICJsYXN0X3R5cGUiLCAibGFzdF92YWx1ZSIsICJsYXN0X3RyYWNlYmFjayIsCiAgICAgInBhdGhfaG9va3MiLCAicGF0aF9pbXBvcnRlcl9jYWNoZSIsICJtZXRhX3BhdGgiLApAQCAtMzMwLDcgKzMyMiw3IEBACiAgICAgTlVMTAogfTsKIAotc3RhdGljIGNoYXIqIHN5c19maWxlc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzeXNfZmlsZXNbXSA9IHsKICAgICAic3RkaW4iLCAiX19zdGRpbl9fIiwKICAgICAic3Rkb3V0IiwgIl9fc3Rkb3V0X18iLAogICAgICJzdGRlcnIiLCAiX19zdGRlcnJfXyIsCkBAIC0zNDcsNyArMzM5LDcgQEAKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKICAgICBQeU9iamVjdCAqd2Vha2xpc3QgPSBOVUxMOwotICAgIGNoYXIgKipwOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKIAogICAgIGlmIChtb2R1bGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybjsgLyogQWxyZWFkeSBkb25lICovCkBAIC04ODMsMTAgKzg3NSw4IEBACiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgb2xkbmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRtcCA9IGNvLT5jb19maWxlbmFtZTsKLSAgICBjby0+Y29fZmlsZW5hbWUgPSBuZXduYW1lOwotICAgIFB5X0lOQ1JFRihjby0+Y29fZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihuZXduYW1lKTsKKyAgICBQeV9YU0VUUkVGKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSk7CiAKICAgICBjb25zdGFudHMgPSBjby0+Y29fY29uc3RzOwogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGNvbnN0YW50cyk7CkBAIC0xMDg2LDYgKzEwNzYsMTAgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KICAgICAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcC0+aW5pdGZ1bmM7CiAgICAgICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CkBAIC0xMzI2LDEwICsxMzIwLDggQEAKICAgICAgICAgaWYgKGluX2ltcG9ydGxpYiAmJgogICAgICAgICAgICAgKGFsd2F5c190cmltIHx8CiAgICAgICAgICAgICAgX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoY29kZS0+Y29fbmFtZSwgcmVtb3ZlX2ZyYW1lcykpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gKm91dGVyX2xpbms7Ci0gICAgICAgICAgICAqb3V0ZXJfbGluayA9IG5leHQ7CiAgICAgICAgICAgICBQeV9YSU5DUkVGKG5leHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBQeV9YU0VUUkVGKCpvdXRlcl9saW5rLCBuZXh0KTsKICAgICAgICAgICAgIHByZXZfbGluayA9IG91dGVyX2xpbms7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xMzQyLDYxICsxMzM0LDE3MCBAQAogfQogCiAKLVB5T2JqZWN0ICoKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2l2ZW5fZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpnaXZlbl9mcm9tbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkKK3N0YXRpYyBQeU9iamVjdCAqCityZXNvbHZlX25hbWUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBpbnQgbGV2ZWwpCiB7Ci0gICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19zcGVjX18pOwotICAgIF9QeV9JREVOVElGSUVSKF9pbml0aWFsaXppbmcpOwogICAgIF9QeV9JREVOVElGSUVSKF9fcGFja2FnZV9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3BhdGhfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKHBhcmVudCk7CisgICAgUHlPYmplY3QgKmFic19uYW1lOworICAgIFB5T2JqZWN0ICpwYWNrYWdlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3BlYzsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBQeV9zc2l6ZV90IGxhc3RfZG90OworICAgIFB5T2JqZWN0ICpiYXNlOworICAgIGludCBsZXZlbF91cDsKKworICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiJ19fbmFtZV9fJyBub3QgaW4gZ2xvYmFscyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoIVB5RGljdF9DaGVjayhnbG9iYWxzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYWNrYWdlX18pOworICAgIGlmIChwYWNrYWdlID09IFB5X05vbmUpIHsKKyAgICAgICAgcGFja2FnZSA9IE5VTEw7CisgICAgfQorICAgIHNwZWMgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3NwZWNfXyk7CisKKyAgICBpZiAocGFja2FnZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3BlYyAhPSBOVUxMICYmIHNwZWMgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgaW50IGVxdWFsOworICAgICAgICAgICAgUHlPYmplY3QgKnBhcmVudCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3BlYywgJlB5SWRfcGFyZW50KTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVxdWFsID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHBhY2thZ2UsIHBhcmVudCwgUHlfRVEpOworICAgICAgICAgICAgUHlfREVDUkVGKHBhcmVudCk7CisgICAgICAgICAgICBpZiAoZXF1YWwgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0ltcG9ydFdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAiX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50IiwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHNwZWMgIT0gTlVMTCAmJiBzcGVjICE9IFB5X05vbmUpIHsKKyAgICAgICAgcGFja2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3BlYywgJlB5SWRfcGFyZW50KTsKKyAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiX19zcGVjX18ucGFyZW50IG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfSW1wb3J0V2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgImNhbid0IHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLCAiCisgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgb24gX19uYW1lX18gYW5kIF9fcGF0aF9fIiwgMSkgPCAwKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiJ19fbmFtZV9fJyBub3QgaW4gZ2xvYmFscyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGF0aF9fKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdDsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYWNrYWdlKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpLCAtMSk7CisgICAgICAgICAgICBpZiAoZG90ID09IC0yKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRvdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgZG90KTsKKyAgICAgICAgICAgICAgICBpZiAoc3Vic3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHBhY2thZ2UsIHN1YnN0cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOworICAgIGlmIChsYXN0X2RvdCA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCB3aXRoIG5vIGtub3duIHBhcmVudCBwYWNrYWdlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgcGFja2FnZSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICJpbXBvcnQiLCBwYWNrYWdlKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBmb3IgKGxldmVsX3VwID0gMTsgbGV2ZWxfdXAgPCBsZXZlbDsgbGV2ZWxfdXAgKz0gMSkgeworICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7CisgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBiYXNlID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBsYXN0X2RvdCk7CisgICAgUHlfREVDUkVGKHBhY2thZ2UpOworICAgIGlmIChiYXNlID09IE5VTEwgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgeworICAgICAgICByZXR1cm4gYmFzZTsKKyAgICB9CisKKyAgICBhYnNfbmFtZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVS4lVSIsIGJhc2UsIG5hbWUpOworICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICByZXR1cm4gYWJzX25hbWU7CisKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKQorewogICAgIF9QeV9JREVOVElGSUVSKF9maW5kX2FuZF9sb2FkKTsKICAgICBfUHlfSURFTlRJRklFUihfaGFuZGxlX2Zyb21saXN0KTsKLSAgICBfUHlfSURFTlRJRklFUihfbG9ja191bmxvY2tfbW9kdWxlKTsKLSAgICBfUHlfc3RhdGljX3N0cmluZyhzaW5nbGVfZG90LCAiLiIpOwogICAgIFB5T2JqZWN0ICphYnNfbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmJ1aWx0aW5zX2ltcG9ydCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZpbmFsX21vZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhY2thZ2UgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBOVUxMOwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIGludCBoYXNfZnJvbTsKIAotICAgIC8qIE1ha2Ugc3VyZSB0byB1c2UgZGVmYXVsdCB2YWx1ZXMgc28gYXMgdG8gbm90IGhhdmUKLSAgICAgICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygpIHRydW5jYXRlIHRoZSBwYXJhbWV0ZXIgbGlzdCBiZWNhdXNlIG9mIGEKLSAgICAgICBOVUxMIGFyZ3VtZW50LiAqLwotICAgIGlmIChnaXZlbl9nbG9iYWxzID09IE5VTEwpIHsKLSAgICAgICAgZ2xvYmFscyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogT25seSBoYXZlIHRvIGNhcmUgd2hhdCBnaXZlbl9nbG9iYWxzIGlzIGlmIGl0IHdpbGwgYmUgdXNlZAotICAgICAgICAgICBmb3Igc29tZXRoaW5nLiAqLwotICAgICAgICBpZiAobGV2ZWwgPiAwICYmICFQeURpY3RfQ2hlY2soZ2l2ZW5fZ2xvYmFscykpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnbG9iYWxzIG11c3QgYmUgYSBkaWN0Iik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGdsb2JhbHMgPSBnaXZlbl9nbG9iYWxzOwotICAgICAgICBQeV9JTkNSRUYoZ2xvYmFscyk7Ci0gICAgfQotCi0gICAgaWYgKGdpdmVuX2Zyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgZnJvbWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnJvbWxpc3QgPSBnaXZlbl9mcm9tbGlzdDsKLSAgICAgICAgUHlfSU5DUkVGKGZyb21saXN0KTsKLSAgICB9CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkVtcHR5IG1vZHVsZSBuYW1lIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNDA5LDE0MCArMTUxMCw0NCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibW9kdWxlIG5hbWUgbXVzdCBiZSBhIHN0cmluZyIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgaWYgKGxldmVsIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxldmVsIG11c3QgYmUgPj0gMCIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBlbHNlIGlmIChsZXZlbCA+IDApIHsKLSAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKLSAgICAgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCAmJiBwYWNrYWdlICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOwotICAgICAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKIAotICAgICAgICAgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGF0aF9fKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKLSAgICAgICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFydGl0aW9uID0gUHlVbmljb2RlX1JQYXJ0aXRpb24ocGFja2FnZSwgYm9ycm93ZWRfZG90KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnRpdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMCk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgcGFja2FnZSkgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAlUiBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgICJpbXBvcnQiLCBwYWNrYWdlKTsKKyAgICBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgIGFic19uYW1lID0gcmVzb2x2ZV9uYW1lKG5hbWUsIGdsb2JhbHMsIGxldmVsKTsKKyAgICAgICAgaWYgKGFic19uYW1lID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeyAgLyogbGV2ZWwgPT0gMCAqLwogICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBwYWNrYWdlID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwotICAgIH0KLQotICAgIGlmIChsZXZlbCA+IDApIHsKLSAgICAgICAgUHlfc3NpemVfdCBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOwotICAgICAgICBQeU9iamVjdCAqYmFzZSA9IE5VTEw7Ci0gICAgICAgIGludCBsZXZlbF91cCA9IDE7Ci0KLSAgICAgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKLSAgICAgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKLSAgICAgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYmFzZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgbGFzdF9kb3QpOwotICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90LCAqc2VxID0gTlVMTDsKLQotICAgICAgICAgICAgYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwotICAgICAgICAgICAgc2VxID0gUHlUdXBsZV9QYWNrKDIsIGJhc2UsIG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwotICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMIHx8IHNlcSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYWJzX25hbWUgPSBQeVVuaWNvZGVfSm9pbihib3Jyb3dlZF9kb3QsIHNlcSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKLSAgICAgICAgICAgIGlmIChhYnNfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFic19uYW1lID0gYmFzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKICAgICAgICAgYWJzX25hbWUgPSBuYW1lOwogICAgICAgICBQeV9JTkNSRUYoYWJzX25hbWUpOwogICAgIH0KIAotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7Ci0jZW5kaWYKLSAgIC8qIEZyb20gdGhpcyBwb2ludCBmb3J3YXJkLCBnb3RvIGVycm9yX3dpdGhfdW5sb2NrISAqLwotICAgIC8qIFhYWCBpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgaXMgTlVMTCBpbiBzdWJpbnRlcnByZXRlciEgKi8KLSAgICBidWlsdGluc19pbXBvcnQgPSBfUHlEaWN0X0dldEl0ZW1JZChpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+YnVpbHRpbnNfY29weSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7Ci0gICAgaWYgKGJ1aWx0aW5zX2ltcG9ydCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgIl9faW1wb3J0X18gbm90IGZvdW5kIik7Ci0gICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihidWlsdGluc19pbXBvcnQpOwotCiAgICAgbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBhYnNfbmFtZSk7CiAgICAgaWYgKG1vZCA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW1wb3J0IG9mICVSIGhhbHRlZDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLCBhYnNfbmFtZSk7CiAgICAgICAgIGlmIChtc2cgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBhYnNfbmFtZSwgTlVMTCk7CisgICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5RXhjX01vZHVsZU5vdEZvdW5kRXJyb3IsIG1zZywKKyAgICAgICAgICAgICAgICAgICAgYWJzX25hbWUsIE5VTEwpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1zZyk7CiAgICAgICAgIH0KICAgICAgICAgbW9kID0gTlVMTDsKLSAgICAgICAgZ290byBlcnJvcl93aXRoX3VubG9jazsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZSBpZiAobW9kICE9IE5VTEwpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19zcGVjX18pOworICAgICAgICBfUHlfSURFTlRJRklFUihfaW5pdGlhbGl6aW5nKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2xvY2tfdW5sb2NrX21vZHVsZSk7CiAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpzcGVjOwogICAgICAgICBpbnQgaW5pdGlhbGl6aW5nID0gMDsKQEAgLTE1NjUsOTEgKzE1NzAsODMgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID09IC0xKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKLSAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLwotICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID4gMCkgewogI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgICAgICAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7CiAjZW5kaWYKKyAgICAgICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOworI2VuZGlmCiAgICAgICAgIC8qIF9ib290c3RyYXAuX2ZpbmRfYW5kX2xvYWQoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KICAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5pbXBvcnRfZnVuYywgTlVMTCk7CiAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBGcm9tIG5vdyBvbiB3ZSBkb24ndCBob2xkIHRoZSBpbXBvcnQgbG9jayBhbnltb3JlLiAqLwogCi0gICAgaGFzX2Zyb20gPSBQeU9iamVjdF9Jc1RydWUoZnJvbWxpc3QpOwotICAgIGlmIChoYXNfZnJvbSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7CisgICAgaGFzX2Zyb20gPSAwOworICAgIGlmIChmcm9tbGlzdCAhPSBOVUxMICYmIGZyb21saXN0ICE9IFB5X05vbmUpIHsKKyAgICAgICAgaGFzX2Zyb20gPSBQeU9iamVjdF9Jc1RydWUoZnJvbWxpc3QpOworICAgICAgICBpZiAoaGFzX2Zyb20gPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAgICAgaWYgKCFoYXNfZnJvbSkgewotICAgICAgICBpZiAobGV2ZWwgPT0gMCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA+IDApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9udCA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcGFydGl0aW9uID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSk7CisgICAgICAgIGlmIChsZXZlbCA9PSAwIHx8IGxlbiA+IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgZG90OwogCi0gICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsIGxlbiwgMSk7CisgICAgICAgICAgICBpZiAoZG90ID09IC0yKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcGFydGl0aW9uID0gUHlVbmljb2RlX1BhcnRpdGlvbihuYW1lLCBib3Jyb3dlZF9kb3QpOwotICAgICAgICAgICAgaWYgKHBhcnRpdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAxKSkgPT0gMCkgeworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMSkgewogICAgICAgICAgICAgICAgIC8qIE5vIGRvdCBpbiBtb2R1bGUgbmFtZSwgc2ltcGxlIGV4aXQgKi8KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKICAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBtb2Q7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnJvbnQgPSBQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZnJvbnQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7Ci0KICAgICAgICAgICAgIGlmIChsZXZlbCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhidWlsdGluc19pbXBvcnQsIGZyb250LCBOVUxMKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKGZyb250ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChmcm9udCwgTlVMTCwgTlVMTCwgTlVMTCwgMCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9udCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjdXRfb2ZmID0gbGVuIC0gZG90OwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYWJzX25hbWVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYWJzX25hbWUpOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0b19yZXR1cm4gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGFic19uYW1lLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfbmFtZV9sZW4gLSBjdXRfb2ZmKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbnQpOwogICAgICAgICAgICAgICAgIGlmICh0b19yZXR1cm4gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG9fcmV0dXJuKTsKICAgICAgICAgICAgICAgICBpZiAoZmluYWxfbW9kID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0tleUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIG5vdCBpbiBzeXMubW9kdWxlcyBhcyBleHBlY3RlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZpbmFsX21vZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmaW5hbF9tb2QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTY2MCwyNCArMTY1NywxNCBAQAogICAgIGVsc2UgewogICAgICAgICBmaW5hbF9tb2QgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2hhbmRsZV9mcm9tbGlzdCwgbW9kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgYnVpbHRpbnNfaW1wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgaW50ZXJwLT5pbXBvcnRfZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgfQotICAgIGdvdG8gZXJyb3I7CiAKLSAgZXJyb3Jfd2l0aF91bmxvY2s6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKLSAgICB9Ci0jZW5kaWYKICAgZXJyb3I6CiAgICAgUHlfWERFQ1JFRihhYnNfbmFtZSk7Ci0gICAgUHlfWERFQ1JFRihidWlsdGluc19pbXBvcnQpOwogICAgIFB5X1hERUNSRUYobW9kKTsKICAgICBQeV9YREVDUkVGKHBhY2thZ2UpOwotICAgIFB5X1hERUNSRUYoZ2xvYmFscyk7Ci0gICAgUHlfWERFQ1JFRihmcm9tbGlzdCk7CiAgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKQogICAgICAgICByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcygpOwogICAgIHJldHVybiBmaW5hbF9tb2Q7CkBAIC0xOTUzLDE5ICsxOTQwLDE1IEBACiAKICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKICAgICBpZiAoZGVmID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICBzdGF0ZSA9IFB5TW9kdWxlX0dldFN0YXRlKG1vZCk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgLyogQWxyZWFkeSBpbml0aWFsaXplZDsgc2tpcCByZWxvYWQgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgcmV0dXJuIFB5TW9kdWxlX0V4ZWNEZWYobW9kLCBkZWYpOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0ZGwuYyBiL1B5dGhvbi9pbXBvcnRkbC5jCmluZGV4IGVhNGYwZTcuLmY1NmZhOTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRkbC5jCisrKyBiL1B5dGhvbi9pbXBvcnRkbC5jCkBAIC0yMyw4ICsyMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKICNlbmRpZgogCi1zdGF0aWMgY29uc3QgY2hhciAqYXNjaWlfb25seV9wcmVmaXggPSAiUHlJbml0IjsKLXN0YXRpYyBjb25zdCBjaGFyICpub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG5vbmFzY2lpX3ByZWZpeCA9ICJQeUluaXRVIjsKIAogLyogR2V0IHRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgbW9kdWxlJ3MgZXhwb3J0IHN5bWJvbCBuYW1lLgogICogUmV0dXJucyBhIGJ5dGVzIGluc3RhbmNlLiBGb3Igbm9uLUFTQ0lJLW5hbWVkIG1vZHVsZXMsIHRoZSBuYW1lIGlzCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliLmggYi9QeXRob24vaW1wb3J0bGliLmgKaW5kZXggYTVmYzkzNi4uMTk1ZmJmZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYi5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWIuaApAQCAtMSwxMjI2ICsxLDEyMTkgQEAKIC8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE2OSwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKLSAgICAxMDAsMSwwLDk3LDEsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICAyLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsMywwLDcxLDEwMCwKLSAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDEwMCw3LDAsMTMxLDIsMCw5MCw0LAotICAgIDAsMTA1LDAsMCw5MCw1LDAsMTA1LDAsMCw5MCw2LDAsNzEsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsMTAwLDksMCwxMDEsNywwLDEzMSwzLDAsCi0gICAgOTAsOCwwLDcxLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTAwLDExLDAsCi0gICAgMTMxLDIsMCw5MCw5LDAsNzEsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwKLSAgICAxMDAsMTMsMCwxMzEsMiwwLDkwLDEwLDAsNzEsMTAwLDE0LDAsMTAwLDE1LDAsCi0gICAgMTMyLDAsMCwxMDAsMTUsMCwxMzEsMiwwLDkwLDExLDAsMTAwLDE2LDAsMTAwLAotICAgIDE3LDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLAotICAgIDAsOTAsMTMsMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLDE0LDAsCi0gICAgMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTAwLDI1LDAsMTMyLDAsMSw5MCwKLSAgICAxNSwwLDEwMCwyNiwwLDEwMCwyNywwLDEzMiwwLDAsOTAsMTYsMCwxMDAsMjgsCi0gICAgMCwxMDAsMjksMCwxMzIsMCwwLDkwLDE3LDAsMTAwLDMwLDAsMTAwLDMxLDAsCi0gICAgMTMyLDAsMCw5MCwxOCwwLDEwMCwzMiwwLDEwMCwzMywwLDEzMiwwLDAsOTAsCi0gICAgMTksMCw3MSwxMDAsMzQsMCwxMDAsMzUsMCwxMzIsMCwwLDEwMCwzNSwwLDEzMSwKLSAgICAyLDAsOTAsMjAsMCw3MSwxMDAsMzYsMCwxMDAsMzcsMCwxMzIsMCwwLDEwMCwKLSAgICAzNywwLDEzMSwyLDAsOTAsMjEsMCwxMDAsMzgsMCwxMDAsMSwwLDEwMCwzOSwKLSAgICAwLDEwMCwxLDAsMTAwLDQwLDAsMTAwLDQxLDAsMTMyLDAsMiw5MCwyMiwwLAotICAgIDEwMSwyMywwLDEzMSwwLDAsOTAsMjQsMCwxMDAsMSwwLDEwMCwxLDAsMTAwLAotICAgIDQyLDAsMTAwLDQzLDAsMTMyLDIsMCw5MCwyNSwwLDEwMCw0NCwwLDEwMCw0NSwKLSAgICAwLDEwMCw0NiwwLDEwMCw0NywwLDEzMiwwLDEsOTAsMjYsMCwxMDAsNDgsMCwKLSAgICAxMDAsNDksMCwxMzIsMCwwLDkwLDI3LDAsMTAwLDUwLDAsMTAwLDUxLDAsMTMyLAotICAgIDAsMCw5MCwyOCwwLDEwMCw1MiwwLDEwMCw1MywwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsNTQsMCwxMDAsNTUsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDU2LDAsCi0gICAgMTAwLDU3LDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw1OCwwLDEwMCw1OSwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCw3MSwxMDAsNjAsMCwxMDAsNjEsMCwxMzIsMCwwLDEwMCwKLSAgICA2MSwwLDEzMSwyLDAsOTAsMzMsMCw3MSwxMDAsNjIsMCwxMDAsNjMsMCwxMzIsCi0gICAgMCwwLDEwMCw2MywwLDEzMSwyLDAsOTAsMzQsMCw3MSwxMDAsNjQsMCwxMDAsCi0gICAgNjUsMCwxMzIsMCwwLDEwMCw2NSwwLDEzMSwyLDAsOTAsMzUsMCwxMDAsNjYsCi0gICAgMCwxMDAsNjcsMCwxMzIsMCwwLDkwLDM2LDAsMTAwLDY4LDAsMTAwLDY5LDAsCi0gICAgMTMyLDAsMCw5MCwzNywwLDEwMCwxLDAsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLAotICAgIDEsMCw5MCwzOCwwLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwwLDAsOTAsMzksCi0gICAgMCwxMDAsNzQsMCw5MCw0MCwwLDEwMSw0MCwwLDEwMCw3NSwwLDIzLDkwLDQxLAotICAgIDAsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCw5MCw0MiwwLDEwMCw3OCwwLAotICAgIDEwMCw3OSwwLDEzMiwwLDAsOTAsNDMsMCwxMDAsMSwwLDEwMCw4MCwwLDEwMCwKLSAgICA4MSwwLDEwMCw4MiwwLDEzMiwyLDAsOTAsNDQsMCwxMDAsODMsMCwxMDAsODQsCi0gICAgMCwxMzIsMCwwLDkwLDQ1LDAsMTAwLDg1LDAsMTAwLDg2LDAsMTMyLDAsMCwKLSAgICA5MCw0NiwwLDEwMCwxLDAsMTAwLDEsMCwxMDIsMCwwLDEwMCw4MCwwLDEwMCwKLSAgICA4NywwLDEwMCw4OCwwLDEzMiw0LDAsOTAsNDcsMCwxMDAsODksMCwxMDAsOTAsCi0gICAgMCwxMzIsMCwwLDkwLDQ4LDAsMTAwLDkxLDAsMTAwLDkyLDAsMTMyLDAsMCwKLSAgICA5MCw0OSwwLDEwMCw5MywwLDEwMCw5NCwwLDEzMiwwLDAsOTAsNTAsMCwxMDAsCi0gICAgMSwwLDgzLDQxLDk1LDk3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywKLSAgICAxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LAotICAgIDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsCi0gICAgOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsCi0gICAgMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywKLSAgICAxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLAotICAgIDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsCi0gICAgMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwKLSAgICAxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwKLSAgICAzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LAotICAgIDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCw3OCw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw5MiwwLDAsMCwxMjAsNjYsMCwxMDAsMSwwLDEwMCwyLAotICAgIDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LDAsNjgsOTMsNDYsMCwxMjUsMiwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE0LDE5LDAsCi0gICAgMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMzEsMywwLDEsMTEzLDE5LDAsODcsMTI0LDAsMCwKLSAgICAxMDYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMSwKLSAgICAxMDAsNSwwLDgzLDQxLDYsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsMTE1LAotICAgIDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNywKLSAgICAxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsOTUsCi0gICAgOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsMTAwLAotICAgIDExMSw5OSw5NSw5NSw3OCw0MSw1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsCi0gICAgMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LAotICAgIDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwKLSAgICAxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwKLSAgICAyMTgsNywxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDE2OSwwLDExNCwxMCwwLDAsMCwKLSAgICAyNTAsMjksNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMjE4LAotICAgIDUsOTUsMTE5LDExNCw5NywxMTIsMjcsMCwwLDAsMTE1LDgsMCwwLDAsMCwKLSAgICAyLDI1LDEsMTUsMSwyOSwxLDExNCwxMiwwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDExNiwxMjEsMTEyLAotICAgIDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksMTAxLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMSw5NSwKLSAgICAxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDU4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsODMsNDEsOSwKLSAgICAyMTgsMTMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDEyMiwKLSAgICA2Myw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExMSwxMTUsCi0gICAgMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDk5LDEwOCwxMDEsOTcsMTEwLDQ1LDExNywxMTIsMzIsMTExLAotICAgIDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsNDYsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMSwyMTgsNSw5NSwxMTAsCi0gICAgOTcsMTA5LDEwMSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQzLDAsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwKLSAgICAxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMDYsCi0gICAgMiwwLDEwNyw2LDAsMTI0LDAsMCw5NSwzLDAsMTAwLDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDQsMTE0LDE4LDAsMCwwLDExNCwxNCwwLDAsMCwyMTgsNywKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMjE4LDEwLDk1LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOSw5NSw5NSwxMDEsMTEwLDExNiwKLSAgICAxMDEsMTE0LDk1LDk1LDQ2LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMjMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LAotICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMTEsMCwwLDAsNzEsMCwwLDAsMTE1LDc3LDAsCi0gICAgMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsCi0gICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE0LDczLDAsMTI0LDAsMCwxMDYsMSwKLSAgICAwLDEyLDExNCw3MywwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwKLSAgICAwLDEwNiw0LDAsNjEsODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLAotICAgIDExNCw3MiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwKLSAgICAzLDc4LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCi0gICAgMCwwLDAsMTE1LDAsMCwwLDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLAotICAgIDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDksMCw4NiwxLAotICAgIDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDExNCwxMCwwLDAsMCw0MSwKLSAgICAyLDIxOCwyLDQ2LDQ4LDIxOCwzLDk3LDExNCwxMDMsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLAotICAgIDEyMCwxMTIsMTE0LDYyLDUwLDAsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsCi0gICAgNDEsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LAotICAgIDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCi0gICAgNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDYsMjE4LDMsOTcsMTEwLAotICAgIDEyMSwxMTQsMjIsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKLSAgICAxMTQsMTgsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsOTUsMTAxLAotICAgIDEyMCwxMDUsMTE2LDk1LDk1LDQ5LDAsMCwwLDExNSwxMCwwLDAsMCwwLDEsCi0gICAgMzUsMSwzLDEsMTcsMSwxMywxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLAotICAgIDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAotICAgIDc4LDQxLDcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKLSAgICAwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLDAsCi0gICAgMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwzOSwKLSAgICAwLDAsMCwxMTUsOCwwLDAsMCwxMiwyLDYsMiwxMiwzLDEyLDMsCi0gICAgMTE0LDE3LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsNjQsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMSwKLSAgICAwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDEsCi0gICAgMiwyMTgsMTQsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsNzgsNDEsMywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMxLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSwyLDAsMCwwLDEyLDEsMTE0LDMxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDgyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKLSAgICAwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsCi0gICAgMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLAotICAgIDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwKLSAgICAwLDkwLDgsMCwxMDAsMTIsMCw4Myw0MSwxMywyMTgsMTEsOTUsNzcsMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwxNjksNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LAotICAgIDExNSwxMDUsMTE4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsCi0gICAgMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLAotICAgIDEwMSw0NiwxMDMsNDYsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LAotICAgIDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwKLSAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsMTE1LDMyLDY2LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwKLSAgICAzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MCwwLDAsMCwxMTYsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDAsMCwxMjQsMCwwLDk1LDIsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgOTUsNCwwLDEwMCwwLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDEsMCwxMjQsCi0gICAgMCwwLDk1LDYsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNywwLDEwMCwwLAotICAgIDAsODMsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LDIxOCw3LDk1LDExNiwKLSAgICAxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSw5NSwKLSAgICAxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwxMTksOTcsMTA3LDEwMSwKLSAgICAxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwxMDEsMTE0LDIxOCw1LAotICAgIDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSw0MSwyLAotICAgIDExNCwxOSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDc0LDAsCi0gICAgMCwwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwxNSwxLDksMSw5LAotICAgIDEsOSwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEyNSwyLDAsMTIwLDYwLDAsMTE2LDMsMCwxMDYsNCwKLSAgICAwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDAsMCwKLSAgICAxMDcsOCwwLDExNCw1NSwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDI0LDAsMTAwLAotICAgIDIsMCw4MywxMTMsMjQsMCw4NywxMDAsMCwwLDgzLDQxLDMsNzgsNzAsODQsCi0gICAgNDEsNSwxMTQsMzQsMCwwLDAsMjE4LDksMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsCi0gICAgMTEwLDExNiwxMTQsMzcsMCwwLDAsMjE4LDEyLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwKLSAgICAxMTAsMTAzLDk1LDExMSwxMTAsMjE4LDMsMTAzLDEwMSwxMTYsNDEsNCwxMTQsMTksMCwwLAotICAgIDAsOTAsMiwxMDksMTAxLDIxOCwzLDExNiwxMDUsMTAwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTIsCi0gICAgMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw4MiwwLDAsMCwKLSAgICAxMTUsMTgsMCwwLDAsMCwyLDEyLDEsOSwxLDMsMSwxNSwxLDEyLAotICAgIDEsNCwxLDksMSwxMiwxLDEyMiwyNCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc2LDExMSw5OSwxMDcsNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LAotICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxNiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMjEwLDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwxLDAsCi0gICAgNjAsMTIyLDE3MywwLDEyMCwxNjYsMCwxMjQsMCwwLDEwNiwzLDAsMTQzLDEyNCwwLAotICAgIDEsMTI0LDAsMCwxMDYsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTUsNjgsMCwKLSAgICAxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSw1LDAsMTI0LDAsMCw0LDEwNiw0LDAsMTAwLAotICAgIDIsMCw1NSwyLDk1LDQsMCwxMDAsMywwLDgzLDEyNCwwLDAsMTA2LDYsCi0gICAgMCwxMzEsMCwwLDExNCwxMjQsMCwxMTYsNywwLDEwMCw0LDAsMTI0LDAsMCwKLSAgICAyMiwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsCi0gICAgMTAwLDUsMCwxMzEsMSwwLDExNCwxNTcsMCwxMjQsMCwwLDQsMTA2LDEwLDAsCi0gICAgMTAwLDIsMCw1NSwyLDk1LDEwLDAsODcsMTAwLDYsMCw4MSw4Miw4OCwxMjQsCi0gICAgMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsMTI0LDAsMCwxMDYsCi0gICAgOCwwLDEwNiwxMSwwLDEzMSwwLDAsMSwxMTMsMjgsMCw4Nyw4NywxMDAsNiwKLSAgICAwLDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsNiwwLDgzLDQxLDcsMTIyLAotICAgIDE4NSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsCi0gICAgOTcsMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLAotICAgIDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywKLSAgICAxMjEsMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsCi0gICAgODQsMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLAotICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwyMzMsCi0gICAgMSwwLDAsMCw4NCwxMjIsMjMsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsCi0gICAgMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwzNywxMTQsNzAsNzgsCi0gICAgNDEsMTIsMTE0LDM0LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMTE0LDQ0LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzYsMCwwLDAsMjE4LAotICAgIDcsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTQsMzksMCwwLDAsMjE4LDcsMTE0LAotICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDQzLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCw0NiwwLDAsMCw5NCwwLDAsMCwxMTUsMzIsMCwwLDAsMCwKLSAgICA2LDEyLDEsMTAsMSwzLDEsMywxLDEwLDEsMzAsMSw5LDEsMTUsCi0gICAgMSw0LDEsMTIsMSwxNiwxLDE4LDEsMjIsMiwxMywxLDIxLDIsMTIyLAotICAgIDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNTcsMCwwLDAsMTE2LDAsCi0gICAgMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsCi0gICAgMTQzLDEyOSwwLDEsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTA3LDMsMCwKLSAgICAxMTQsNDksMCwxMTYsNCwwLDEwMCwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNyw0LDAsMTE1LDcwLDAsMTE2LDYsCi0gICAgMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsNSwwLDEwMCwzLDAsNTYsMiwKLSAgICA5NSw1LDAsMTI0LDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsCi0gICAgMTQ2LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMCwwLDEwNiw3LAotICAgIDAsMTE0LDE0NiwwLDEyNCwwLDAsNCwxMDYsNywwLDEwMCwzLDAsNTYsMiwKLSAgICA5NSw3LDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLAotICAgIDg3LDEwMCwwLDAsODEsODIsODgsMTAwLDAsMCw4Myw0MSw0LDc4LDEyMiwzMSwKLSAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LAotICAgIDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsCi0gICAgMzMsMCwwLDAsMTE0LDQ1LDAsMCwwLDQxLDEwLDExNCwzNCwwLDAsMCwKLSAgICAxMTQsNDAsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsCi0gICAgMTIsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLAotICAgIDAsMCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLDExMCw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMTE0LDM5LDAsMCwwLDExNCwzNiwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDQzLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0NywwLDAsCi0gICAgMCwxMTksMCwwLDAsMTE1LDIyLDAsMCwwLDAsMSwxMiwxLDEwLDEsCi0gICAgMTUsMSwxMiwxLDIxLDEsMTUsMSwxNSwxLDksMSw5LDEsMTUsMSwKLSAgICAxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsCi0gICAgMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsCi0gICAgMTE2LDMyLDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwKLSAgICAwLDAsMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LAotICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwxMzIsMCwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCi0gICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsCi0gICAgMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LAotICAgIDIwLDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ3LAotICAgIDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMyLDAsMCwKLSAgICAwLDY4LDAsMCwwLDExNSwxMiwwLDAsMCwxMiw0LDYsMiwxMiw4LAotICAgIDEyLDEyLDEyLDI1LDEyLDEzLDExNCwzMiwwLDAsMCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsCi0gICAgMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwKLSAgICA5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwKLSAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LAotICAgIDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsNDEsMTEsMjE4LDE2LDk1LAotICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLAotICAgIDg2LDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwKLSAgICAzMiwxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LAotICAgIDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwKLSAgICAxMTcsMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsCi0gICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMSwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTUsMCwwLDAsMTE0LDM4LDAsMCwwLDQxLDIsMTE0LDE5LDAsCi0gICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTQwLDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSw5LDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyMDIsMSwwLDAsMTAwLDAsOTAsMCwxMDAsMSwKKyAgICA5NywxLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDIsMTAwLDQsMTAwLDUsMTMyLDAsCisgICAgOTAsMywxMDUsMCw5MCw0LDEwNSwwLDkwLDUsNzEsMCwxMDAsNiwxMDAsNywKKyAgICAxMzIsMCwxMDAsNywxMDEsNiwxMzEsMyw5MCw3LDcxLDAsMTAwLDgsMTAwLDksCisgICAgMTMyLDAsMTAwLDksMTMxLDIsOTAsOCw3MSwwLDEwMCwxMCwxMDAsMTEsMTMyLDAsCisgICAgMTAwLDExLDEzMSwyLDkwLDksNzEsMCwxMDAsMTIsMTAwLDEzLDEzMiwwLDEwMCwxMywKKyAgICAxMzEsMiw5MCwxMCwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDExLDEwMCwxNiwxMDAsMTcsCisgICAgMTMyLDAsOTAsMTIsMTAwLDE4LDEwMCwxOSwxMzIsMCw5MCwxMywxMDAsMjAsMTAwLDIxLAorICAgIDE1NiwxLDEwMCwyMiwxMDAsMjMsMTMyLDIsOTAsMTQsMTAwLDI0LDEwMCwyNSwxMzIsMCwKKyAgICA5MCwxNSwxMDAsMjYsMTAwLDI3LDEzMiwwLDkwLDE2LDEwMCwyOCwxMDAsMjksMTMyLDAsCisgICAgOTAsMTcsMTAwLDMwLDEwMCwzMSwxMzIsMCw5MCwxOCw3MSwwLDEwMCwzMiwxMDAsMzMsCisgICAgMTMyLDAsMTAwLDMzLDEzMSwyLDkwLDE5LDcxLDAsMTAwLDM0LDEwMCwzNSwxMzIsMCwKKyAgICAxMDAsMzUsMTMxLDIsOTAsMjAsMTAwLDEsMTAwLDEsMTAwLDM2LDE1NiwyLDEwMCwzNywKKyAgICAxMDAsMzgsMTMyLDIsOTAsMjEsMTAxLDIyLDEzMSwwLDkwLDIzLDEwMCw5MiwxMDAsMzksCisgICAgMTAwLDQwLDEzMiwxLDkwLDI0LDEwMCw0MSwxMDAsNDIsMTU2LDEsMTAwLDQzLDEwMCw0NCwKKyAgICAxMzIsMiw5MCwyNSwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDI2LDEwMCw0NywxMDAsNDgsCisgICAgMTMyLDAsOTAsMjcsMTAwLDQ5LDEwMCw1MCwxMzIsMCw5MCwyOCwxMDAsNTEsMTAwLDUyLAorICAgIDEzMiwwLDkwLDI5LDEwMCw1MywxMDAsNTQsMTMyLDAsOTAsMzAsMTAwLDU1LDEwMCw1NiwKKyAgICAxMzIsMCw5MCwzMSw3MSwwLDEwMCw1NywxMDAsNTgsMTMyLDAsMTAwLDU4LDEzMSwyLAorICAgIDkwLDMyLDcxLDAsMTAwLDU5LDEwMCw2MCwxMzIsMCwxMDAsNjAsMTMxLDIsOTAsMzMsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCwzNCwxMDAsNjMsCisgICAgMTAwLDY0LDEzMiwwLDkwLDM1LDEwMCw2NSwxMDAsNjYsMTMyLDAsOTAsMzYsMTAwLDkzLAorICAgIDEwMCw2NywxMDAsNjgsMTMyLDEsOTAsMzcsMTAwLDY5LDEwMCw3MCwxMzIsMCw5MCwzOCwKKyAgICAxMDAsNzEsOTAsMzksMTAxLDM5LDEwMCw3MiwyMywwLDkwLDQwLDEwMCw3MywxMDAsNzQsCisgICAgMTMyLDAsOTAsNDEsMTAwLDc1LDEwMCw3NiwxMzIsMCw5MCw0MiwxMDAsOTQsMTAwLDc4LAorICAgIDEwMCw3OSwxMzIsMSw5MCw0MywxMDAsODAsMTAwLDgxLDEzMiwwLDkwLDQ0LDEwMCw4MiwKKyAgICAxMDAsODMsMTMyLDAsOTAsNDUsMTAwLDEsMTAwLDEsMTAyLDAsMTAwLDc3LDEwMiw0LAorICAgIDEwMCw4NCwxMDAsODUsMTMyLDEsOTAsNDYsMTAwLDg2LDEwMCw4NywxMzIsMCw5MCw0NywKKyAgICAxMDAsODgsMTAwLDg5LDEzMiwwLDkwLDQ4LDEwMCw5MCwxMDAsOTEsMTMyLDAsOTAsNDksCisgICAgMTAwLDEsODMsMCw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLAorICAgIDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsCisgICAgOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LAorICAgIDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsCisgICAgMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsCisgICAgMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksCisgICAgOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLAorICAgIDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLAorICAgIDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKKyAgICAxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsCisgICAgMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwKKyAgICAxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwKKyAgICA5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5NywKKyAgICA5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNjAsMCwwLDAsMTIwLDQwLDEwMCw2LDY4LDAsOTMsCisgICAgMzIsMTI1LDIsMTE2LDAsMTI0LDEsMTI0LDIsMTMxLDIsMTE0LDYsMTE2LDEsMTI0LAorICAgIDAsMTI0LDIsMTE2LDIsMTI0LDEsMTI0LDIsMTMxLDIsMTMxLDMsMSwwLDExMywKKyAgICA2LDg3LDAsMTI0LDAsMTA2LDMsMTA2LDQsMTI0LDEsMTA2LDMsMTMxLDEsMSwKKyAgICAwLDEwMCw1LDgzLDAsNDEsNywxMjIsNDcsODMsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiwKKyAgICAxMTUsMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDIsCisgICAgMTE3LDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMjE4LDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwxMiwKKyAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwKKyAgICAxMDAsMTExLDk5LDk1LDk1LDc4LDQxLDQsMTE0LDAsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsNDEsNSwyMTgsNywKKyAgICAxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LAorICAgIDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksCisgICAgMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwKKyAgICAxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwKKyAgICAxNjksMCwxMTQsMTAsMCwwLDAsMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMiwxMCwxLDEwLDEsMjIsMSwxMTQsMTIsCisgICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTE2LAorICAgIDEsMTMxLDEsMTI0LDAsMTMxLDEsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsCisgICAgMTE2LDEyMSwxMTIsMTAxLDIxOCwzLDExNSwxMjEsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDExLDk1LDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM1LDAsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMSwxMTQsMTYsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsMTIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwyMTgsMTQsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNzgsNDEsMywxMTQsMSwwLDAsMCwxMTQsMCwwLAorICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE3LDAsMCwwLAorICAgIDQ3LDAsMCwwLDExNSwyLDAsMCwwLDgsMSwxMTQsMTcsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsNTYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCwKKyAgICA5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDgsMTAwLDEyLAorICAgIDgzLDAsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAorICAgIDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsCisgICAgMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwKKyAgICAxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LAorICAgIDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNDgsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMiwKKyAgICAxMTYsMCwxMDYsMSwxMzEsMCwxMjQsMCw5NSwzLDEyNCwxLDEyNCwwLDk1LDQsCisgICAgMTAwLDAsMTI0LDAsOTUsNSwxMDAsMSwxMjQsMCw5NSw2LDEwMCwxLDEyNCwwLAorICAgIDk1LDcsMTAwLDAsODMsMCw0MSwyLDc4LDIzMywwLDAsMCwwLDQxLDgsCisgICAgMjE4LDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5MCwxMyw5NywxMDgsMTA4LDExMSw5OSwKKyAgICA5NywxMTYsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDIxOCw0LDEwOCwxMTEsOTksMTA3LDIxOCw2LAorICAgIDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE0LDE1LDAsMCwwLDIxOCw1LDExMSwxMTksMTEwLAorICAgIDEwMSwxMTQsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDIxOCw3LDExOSw5NywxMDUsMTE2LDEwMSwKKyAgICAxMTQsMTE1LDQxLDIsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxNSwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNTcsMCwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsMSwxMCwxLDEwLDEsNiwxLDYsMSw2LDEsMTIyLDIwLDk1LAogICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LDAsMCwKLSAgICA0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsMCwxMDAsMiwwLDgzLAotICAgIDQxLDMsNzgsMTE0LDQ1LDAsMCwwLDg0LDQxLDEsMTE0LDM4LDAsMCwwLAotICAgIDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCw0NiwwLDAsMCwxNDQsMCwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDE1LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSwKLSAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsCi0gICAgMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwxLDAsMTAwLDIsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDMsCi0gICAgMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDQsNzgsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LAotICAgIDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsCi0gICAgMTExLDk5LDEwNywxMTQsNDUsMCwwLDAsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LAotICAgIDQ4LDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0NywwLDAsMCwxNDgsCi0gICAgMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTIsMSwxMjIsMjQsCisgICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDY0LDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEzMSwwLDEyNSwxLDEyNCwwLDEwNiwyLDEyNSwyLDEyMCw0NCwxMTYsMywxMDYsCisgICAgNCwxMjQsMiwxMzEsMSwxMjUsMywxMjQsMywxMDAsMCwxMDcsOCwxMTQsMzgsMTAwLAorICAgIDEsODMsMCwxMjQsMywxMDYsMiwxMjUsMiwxMjQsMiwxMjQsMSwxMDcsMiwxMTQsCisgICAgMTYsMTAwLDIsODMsMCwxMTMsMTYsODcsMCwxMDAsMCw4MywwLDQxLDMsNzgsCisgICAgNzAsODQsNDEsNSwxMTQsMjAsMCwwLDAsMjE4LDksMTAzLDEwMSwxMTYsOTUsMTA1LAorICAgIDEwMCwxMDEsMTEwLDExNiwxMTQsMjMsMCwwLDAsMjE4LDEyLDk1LDk4LDEwOCwxMTEsOTksCisgICAgMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMjE4LDMsMTAzLDEwMSwxMTYsNDEsNCwxMTQsMjYsCisgICAgMCwwLDAsOTAsMiwxMDksMTAxLDIxOCwzLDExNiwxMDUsMTAwLDExNCwyMSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTIsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2NSwwLAorICAgIDAsMCwxMTUsMTgsMCwwLDAsMCwyLDgsMSw2LDEsMiwxLDEwLAorICAgIDEsOCwxLDQsMSw2LDEsOCwxLDEyMiwyNCw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTY4LDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEzMSwwLDEyNSwxLDEyNCwwLDExNiwyLDEyNCwxLDYwLDAsMTIyLDEzOCwxMjAsCisgICAgMTMyLDEyNCwwLDEwNiwzLDE0Myw5NiwxLDAsMTI0LDAsMTA2LDQsMTAwLDEsMTA3LAorICAgIDIsMTE1LDQ4LDEyNCwwLDEwNiw1LDEyNCwxLDEwNywyLDExNCw3MiwxMjQsMSwxMjQsCisgICAgMCw5NSw1LDEyNCwwLDQsMCwxMDYsNCwxMDAsMiw1NSwwLDIsMCw5NSwKKyAgICA0LDEwMCwzLDgzLDAsMTI0LDAsMTA2LDYsMTMxLDAsMTE0LDkyLDExNiw3LDEwMCwKKyAgICA0LDEyNCwwLDIyLDAsMTMxLDEsMTMwLDEsMTI0LDAsMTA2LDgsMTA2LDksMTAwLAorICAgIDUsMTMxLDEsMTE0LDExOCwxMjQsMCw0LDAsMTA2LDEwLDEwMCwyLDU1LDAsMiwKKyAgICAwLDk1LDEwLDg3LDAsMTAwLDYsODEsMCw4MiwwLDg4LDAsMTI0LDAsMTA2LAorICAgIDgsMTA2LDksMTMxLDAsMSwwLDEyNCwwLDEwNiw4LDEwNiwxMSwxMzEsMCwxLAorICAgIDAsMTEzLDIwLDg3LDAsODcsMCwxMDAsNiwxMTYsMiwxMjQsMSw2MSwwLDg4LAorICAgIDAsMTAwLDYsODMsMCw0MSw3LDEyMiwxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsCisgICAgMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLAorICAgIDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsCisgICAgMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwKKyAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywKKyAgICAzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTQsMTksMCwwLDAsMjMzLDEsMCwwLDAsODQsMTIyLDIzLDEwMCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LDQxLDEyLDExNCwyMCwwLDAsMCwxMTQsCisgICAgMjgsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMjQsCisgICAgMCwwLDAsMTE0LDIzLDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsMTcsMCwKKyAgICAwLDAsMTE0LDIyLDAsMCwwLDIxOCw3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE0LDI1LDAsMCwwLDIxOCw3LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsCisgICAgMTE0LDI2LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsNzcsMCwKKyAgICAwLDAsMTE1LDMyLDAsMCwwLDAsNiw4LDEsOCwxLDIsMSwyLAorICAgIDEsOCwxLDIwLDEsNiwxLDE0LDEsNCwxLDgsMSwxMiwxLDEyLAorICAgIDEsMjQsMiwxMCwxLDE4LDIsMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMjIsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLDAsMTI1LDEsMTI0LDAsCisgICAgMTA2LDIsMTQzLDk4LDEsMCwxMjQsMCwxMDYsMywxMjQsMSwxMDcsMywxMTQsMzQsCisgICAgMTE2LDQsMTAwLDEsMTMxLDEsMTMwLDEsMTI0LDAsMTA2LDUsMTAwLDIsMTA3LDQsCisgICAgMTE1LDQ4LDExNiw2LDEzMCwxLDEyNCwwLDQsMCwxMDYsNSwxMDAsMyw1NiwwLAorICAgIDIsMCw5NSw1LDEyNCwwLDEwNiw1LDEwMCwyLDEwNywyLDExNCwxMDgsMTAwLDAsCisgICAgMTI0LDAsOTUsMywxMjQsMCwxMDYsNywxMTQsMTA4LDEyNCwwLDQsMCwxMDYsNywKKyAgICAxMDAsMyw1NiwwLDIsMCw5NSw3LDEyNCwwLDEwNiw4LDEwNiw5LDEzMSwwLAorICAgIDEsMCw4NywwLDEwMCwwLDgxLDAsODIsMCw4OCwwLDEwMCwwLDgzLDAsCisgICAgNDEsNCw3OCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMTE0LDE5LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxMCwKKyAgICAxMTQsMjAsMCwwLDAsMTE0LDI4LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsCisgICAgMjMsMCwwLDAsMjE4LDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTQsMjQsMCwwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LAorICAgIDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwyNSwwLDAsMCwxMTQsMjIsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDI2LDAsMCwwLDExNCwzMSwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTAyLDAsMCwwLDExNSwyMiwwLDAsMCwwLAorICAgIDEsOCwxLDgsMSwxMCwxLDgsMSwxNCwxLDE0LDEsMTAsMSw2LAorICAgIDEsNiwxLDE0LDEsMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxOCwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMTYsMiwxMjQsMCwKKyAgICAxMzEsMSwxMzEsMiw4MywwLDQxLDIsNzgsMTIyLDIzLDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsCisgICAgMTIzLDEyNSw0MSwzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE0LDE1LDAsMCwKKyAgICAwLDIxOCwyLDEwNSwxMDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDk1LDk1LDExNSwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOSwxMTQsMSwwLDAsMCwxMTQsMCwKKyAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjcsMCwKKyAgICAwLDAsMTE0LDMyLDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsMzUsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTgsMCwwLDAsNTEsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDgsNCw0LDIsOCw4LDgsMTIsCisgICAgOCwyNSw4LDEzLDExNCwxOCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0OCwKKyAgICAwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsCisgICAgMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLAorICAgIDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwKKyAgICAxMCw4MywwLDQxLDExLDIxOCwxNiw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiw4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywKKyAgICAxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwKKyAgICAxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsCisgICAgMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LAorICAgIDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLAorICAgIDEsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDIsNzgsMTE0LDE5LDAsMCwKKyAgICAwLDQxLDIsMTE0LDE1LDAsMCwwLDExNCwyNCwwLDAsMCw0MSwyLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDI3LDAsMCwwLDEyMywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwwLDEsNiwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LAorICAgIDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMjQsCisgICAgMCw0LDAsMTA2LDAsMTAwLDEsNTUsMCwyLDAsOTUsMCwxMDAsMiw4MywKKyAgICAwLDQxLDMsNzgsMTE0LDMzLDAsMCwwLDg0LDQxLDEsMTE0LDI0LDAsMCwKKyAgICAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzNCwwLDAsMCwxMjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDE0LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LAorICAgIDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDAsMSwxMDcsMiwxMTQsMTgsMTE2LDEsMTAwLDIsMTMxLDEsMTMwLDEsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwzLDU2LDAsMiwwLDk1LDAsMTAwLDAsODMsCisgICAgMCw0MSw0LDc4LDExNCwxOSwwLDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsCisgICAgMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LDMzLDAsMCwwLDQxLAorICAgIDIsMTE0LDI0LDAsMCwwLDExNCwzNiwwLDAsMCw0MSwxLDExNCwyNiwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTMxLDAsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMSwxMCwxLDgsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsCisgICAgMSwxMTYsMiwxMjQsMCwxMzEsMSwxMzEsMiw4MywwLDQxLDIsNzgsMTIyLDI4LAogICAgIDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCi0gICAgNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwKLSAgICAwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLDIsNzgsMTIyLDI4LAotICAgIDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCi0gICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsNTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw1MSwwLDAsMCw0MSwxLDExNCwKLSAgICAxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTUzLDAsMCwwLDExNSwyLDAsMCwKKyAgICA0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsMTIzLDEyNSw0MSwzLDExNCwzOCwKKyAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDM5LDAsMCwwLDQxLDEsMTE0LAorICAgIDI2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMzYsMCwwLDAsMTE1LDIsMCwwLAogICAgIDAsMCwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAogICAgIDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSwKICAgICA4LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAotICAgIDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAotICAgIDQ3LDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUzLDAsCi0gICAgMCwwLDEzNiwwLDAsMCwxMTUsMTAsMCwwLDAsMTIsMiw2LDIsMTIsCi0gICAgNCwxMiw0LDEyLDUsMTE0LDUzLDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAxMTQsMywwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwKKyAgICAzNSwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0MSwwLAorICAgIDAsMCwxMTksMCwwLDAsMTE1LDEwLDAsMCwwLDgsMiw0LDIsOCwKKyAgICA0LDgsNCw4LDUsMTE0LDQxLDAsMCwwLDk5LDAsMCwwLDAsMCwKICAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDUyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywwLDEwMCwKLSAgICA0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMCw3LDAsODMsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKKyAgICAzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsMTAwLDIsCisgICAgMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCw0LDEwMCw1LDEwMCw2LAorICAgIDEzMiwwLDkwLDUsMTAwLDcsODMsMCw0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLAogICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLAotICAgIDAsMTAwLDAsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMTgsMCwwLDAsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNTksCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjcsOTUsNzcsCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCwKLSAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLAotICAgIDAsMCwwLDEyMiwyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTI0LDAsMCw5NSwyLDAsODcsMTAwLDAsMCwxMTYsMywwLDEwNiwKLSAgICA0LDAsMTMxLDAsMCwxLDg4LDEyNCwwLDAsMTA2LDIsMCwxMDYsNSwwLAotICAgIDEzMSwwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDE4LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsCi0gICAgMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDQ2LDAsCi0gICAgMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCwxNjMsMCwwLAotICAgIDAsMTE1LDgsMCwwLDAsMCwxLDMsMSwyMiwyLDExLDEsMTIyLDI4LAotICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLAotICAgIDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDc5LDAsMCwKLSAgICAwLDExNSwxNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDU1LDAsMCwKLSAgICAwLDExNCw0NywwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwxMTQsMjksMCwKLSAgICAwLDAsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCwxNzAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LAotICAgIDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLAotICAgIDAsMCwwLDExNCwyLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwKLSAgICAwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTQsMCwwLDAsCi0gICAgMTU3LDAsMCwwLDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwKLSAgICA1NCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwxMSwwLDAsMCwzLDAsMCwwLDExNSwxMzksMCwwLDAsMTAwLDEsCi0gICAgMCwxMjUsMSwwLDEyMSwxNywwLDExNiwwLDAsMTM2LDAsMCwyNSwxMzEsMCwKLSAgICAwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwKLSAgICA0MywwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDEzNSwwLDExNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKLSAgICA4MywwLDExNiwzLDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLAotICAgIDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMzUsMCwwLAotICAgIDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTI1LDIsMCwxMTYsCi0gICAgNSwwLDEwNiw2LDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE2LDAsCi0gICAgMCwxMzYsMCwwLDYwLDEyNCwxLDAsODMsNDEsNCwxMjIsMTA5LDcxLDEwMSwxMTYsCi0gICAgMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsCi0gICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwKLSAgICAxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsCi0gICAgMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwxOSwwLDAsMCwKLSAgICAxMTUsMTEsMCwwLDAsMTE2LDAsMCwxMzYsMCwwLDYxLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCw0MSwxLDIxOCwxMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDEwNywxMTUsNDEsMSwyMTgsMSw5NSw0MSwxLDExNCwxNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyLDk5LDk4LDE5MCwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksCi0gICAgOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw0MSw3LDExNCw1OSwwLDAsMCwxMTQsMjgsCi0gICAgMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMzIsMCwKLSAgICAwLDAsMjE4LDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLAotICAgIDEwMiw0MSwzLDExNCwxNSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDYxLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDE3NiwwLDAsMCwxMTUsMjQsMCwwLAotICAgIDAsMCw0LDYsMSwzLDEsMTcsMSwxMywxLDUsMSwxMiwxLDEyLAotICAgIDEsMTUsMiwxMiwxLDE4LDIsMjIsMSwxMTQsNTYsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcxLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMSwxMjEsMTQsCi0gICAgMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDAsMCwxLDg3LDExMCwxOCwwLDQsCi0gICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsNTYsMCwxLDEsMSw4OSwxMTAsMTEsMCwKLSAgICA4OCwxMjQsMSwwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsCi0gICAgMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCisgICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDAsCisgICAgMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwyMTgsNSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSwyMTgsNSw5NSwxMDgsMTExLDk5LDEwNyw0MSwyLDExNCwyNiwwLAorICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDI3LDAsMCwwLDE0MiwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsNiwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTIyLAorICAgIDE2LDExNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDEyNCwwLDk1LDIsODcsMCwxMDAsCisgICAgMCwxMTYsMywxMDYsNCwxMzEsMCwxLDAsODgsMCwxMjQsMCwxMDYsMiwxMDYsCisgICAgNSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDYsMjE4LDE2LAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LAorICAgIDExNCw0MywwLDAsMCwxMTQsNDQsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsCisgICAgMjE4LDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwzNCwKKyAgICAwLDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOSw5NSw5NSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTE0LDk1LDk1LDE0NiwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMiwKKyAgICAxLDE2LDIsMTAsMSwxMjIsMjgsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDEsMCwwLDAsNzksMCwwLDAsMTE1LDE0LDAsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDEwNiwxLDEzMSwwLDEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwKKyAgICAxMTQsNDQsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDMsMTE0LDI2LDAsMCwKKyAgICAwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCwKKyAgICA5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsMTUzLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsCisgICAgNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLAorICAgIDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCw1MCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDQyLDAsMCwwLDE0MCwwLDAsMCwxMTUsNiwKKyAgICAwLDAsMCw4LDIsOCw0LDgsNywxMTQsNDIsMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsMywKKyAgICAwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMCwxLDEyNSwxLDEyMSwxNCwxMTYsMCwKKyAgICAxMzYsMCwyNSwwLDEzMSwwLDEyNSwxLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDM4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMSwxMDAsMSwxMDcsOCwxMTQsMTAyLDExNiwyLDEwMCwxLDEwNyw4LDExNCw2NiwKKyAgICAxMTYsMywxMzYsMCwxMzEsMSwxMjUsMSwxMTAsOCwxMTYsNCwxMzYsMCwxMzEsMSwKKyAgICAxMjUsMSwxMzUsMCwxMDIsMSwxMDAsMiwxMDAsMywxMzIsOCwxMjUsMiwxMTYsNSwKKyAgICAxMDYsNiwxMjQsMSwxMjQsMiwxMzEsMiwxMTYsMCwxMzYsMCw2MCwwLDEyNCwxLAorICAgIDgzLDAsNDEsNCwxMjIsMTA5LDcxLDEwMSwxMTYsMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAogICAgIDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwMSwxMTAsMTE1LDExNywxMTQsMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLDEwOCwxMjEsMzIsMTA1LAotICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLDEwNSwxMTAsMzIsMTE2LAotICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTAxLDExOCwxMDEsMTEwLDExNiwzMiwxMDUsMTE2LDMyLAotICAgIDEwNSwxMTUsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTE0LAotICAgIDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwKLSAgICAzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwKLSAgICAxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDQxLDYsMTE0LDU2LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQ2LDAsCi0gICAgMCwwLDExNCwzMSwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsMiwxMTQsMTUsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxOSw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsCi0gICAgMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5NSwwLDAsMCwKLSAgICAxMTUsMTQsMCwwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywKLSAgICAzLDUsMiwxMTQsNjMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsMCwxMTUsMTMsMCwKLSAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTQyLDAsMCw4Myw0MSwKLSAgICAxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywKLSAgICAxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsCi0gICAgMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LAotICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwKLSAgICAxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5NywKLSAgICA5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAotICAgIDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsCi0gICAgMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLAotICAgIDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAotICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLAotICAgIDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsMjksCi0gICAgMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLAotICAgIDExOCwxMDEsMTAwLDIxNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LDY1LAotICAgIDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsMTE0LDQ1LAotICAgIDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAotICAgIDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsNzEsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywwLDEwMCwzLAotICAgIDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwKLSAgICAwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwKLSAgICAxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwKLSAgICAxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwKLSAgICAzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSwKLSAgICA4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsOTAsNCwxMDIsMTA1LDEwOCwxMDEsNzgsCi0gICAgNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDY4LDAsMCwwLDQxLDcsMTE0LDE0LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwKKyAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsCisgICAgMTAxLDExMCw0Niw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwKKyAgICAxMzYsMCw2MSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwxLDIxOCwxMyw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsNDEsMSwyMTgsMSwKKyAgICA5NSw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwyLDk5LDk4LDE3MywwLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw0MSwKKyAgICA3LDExNCw1MSwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsMjAsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCwxOCwwLDAsMCwyMTgsCisgICAgOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCwzLDExNCwxMDEsMTAyLDQxLDMsCisgICAgMTE0LDE1LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDQxLDEsMTE0LDE1LDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsNDUsMCwwLDAsMTU5LDAsMCwwLDExNSwyNCwwLDAsMCwwLDQsCisgICAgNCwxLDIsMSwxNCwxLDE0LDEsNiwxLDgsMSw4LDEsMTAsMiwKKyAgICA4LDEsMTIsMiwxNiwxLDExNCw0NSwwLDAsMCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNjIsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTI1LDEsMTE2LDEsMTA2LAorICAgIDIsMTMxLDAsMSwwLDEyMSwxMiwxMjQsMSwxMDYsMywxMzEsMCwxLDAsODcsCisgICAgMCwxMTAsMjAsNCwwLDExNiw0LDEwNywxMCwxMTQsNDgsMSwwLDEsMCwxLAorICAgIDAsODksMCwxMTAsMTAsODgsMCwxMjQsMSwxMDYsNSwxMzEsMCwxLDAsMTAwLAorICAgIDEsODMsMCw0MSwyLDk3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsCisgICAgMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwKKyAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsCisgICAgMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwKKyAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCwKKyAgICA0MSw2LDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ3LDAsMCwKKyAgICAwLDExNCwzNCwwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDQxLDIsMTE0LDE1LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSwKKyAgICA5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxNzgsMCwwLDAsMTE1LDE0LDAsMCwwLDAsNyw4LDEsOCwxLDIsCisgICAgMSwxMiwxLDE0LDMsNiwyLDExNCw1NiwwLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwxMjQsMCwxMjQsMSwxMjQsMiwxNDIsMSw4MywwLAorICAgIDQxLDEsOTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LDMyLAorICAgIDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsMTAxLAorICAgIDExMywxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLAorICAgIDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywzMiwKKyAgICA5OSw5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwNSwKKyAgICAxMTYsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwxMTAsCisgICAgMTExLDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsMTA4LAorICAgIDk3LDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsCisgICAgMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLAorICAgIDExNiwxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LDEwMSwKKyAgICAxMDAsMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsNDYsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEwLDAsMCwwLDQxLDMsMjE4LDEsMTAyLDExNCwKKyAgICA0OSwwLDAsMCw5MCw0LDEwNywxMTksMTAwLDExNSwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsMTk3LDAsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsCisgICAgNTgsMCwwLDAsMTE0LDMzLDAsMCwwLDQxLDEsMjE4LDksMTE4LDEwMSwxMTQsCisgICAgOTgsMTExLDExNSwxMDUsMTE2LDEyMSw5OSwxLDAsMCwwLDEsMCwwLDAsMywKKyAgICAwLDAsMCw1LDAsMCwwLDcxLDAsMCwwLDExNSw1NCwwLDAsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDYsMiwxMjQsMSwxMDcsNSwxMTQsNTAsMTI0LDAsMTA2LDMsCisgICAgMTAwLDYsMTMxLDEsMTE1LDMwLDEwMCwzLDEyNCwwLDIzLDAsMTI1LDAsMTE2LDQsCisgICAgMTI0LDAsMTA2LDUsMTI0LDIsMTQyLDAsMTE2LDAsMTA2LDYsMTAwLDQsMTQxLDIsCisgICAgMSwwLDEwMCw1LDgzLDAsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsMTE2LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsMzIsMTE1LAorICAgIDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksODQsNzIsCisgICAgNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDQxLDEsOTAsNCwxMDIsMTA1LDEwOCwxMDEsNzgsCisgICAgNDEsMiwxMTQsNjAsMCwwLDAsMTE0LDYxLDAsMCwwLDQxLDcsMTE0LDE0LAogICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsNywxMTgsMTAxLDExNCw5OCwKICAgICAxMTEsMTE1LDEwMSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNTAsMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsCi0gICAgMTAxLDExNCwxMTQsNDEsMywyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTQsNjYsCi0gICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDM4LDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAorICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDU5LAorICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCiAgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKLSAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMjI1LDAsMCwwLDExNSw4LDAsCi0gICAgMCwwLDAsMiwxOCwxLDE1LDEsMTAsMSwxMTQsNzUsMCwwLDAsOTksCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIwOCwwLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDIsMTIsMSwxMCwxLDgsMSwxMTQsNjgsMCwwLDAsOTksCiAgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKLSAgICAzLDAsMCwwLDExNSwzNSwwLDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLAotICAgIDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLAotICAgIDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4Myw0MSwzLDEyMiw0OSwKLSAgICA2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LAotICAgIDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAotICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwKLSAgICAwLDAsMTksMCwwLDAsMTE1LDU1LDAsMCwwLDEyNCwxLDAsMTE2LDAsCi0gICAgMCwxMDYsMSwwLDEwNyw3LDAsMTE0LDQyLDAsMTE2LDIsMCwxMDAsMSwwLAotICAgIDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsCi0gICAgMCw4Myw0MSwzLDc4LDEyMiwyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwxNCwwLDAsMCwKLSAgICAyMTgsMjAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LAotICAgIDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQxLDEsMjE4LDMsMTAyLDEyMCwxMTAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTE0LDEwMSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LAotICAgIDk3LDExMiwxMTIsMTAxLDExNCwyMzUsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLAotICAgIDE1LDEsMTgsMSw5LDEsMTIyLDUyLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsCi0gICAgMCwwLDAsNDEsMiwxMTQsNzksMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCw0MSwxLDExNCw3OSwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDE3LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsMjMzLDAsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw1LAotICAgIDEzLDEsMTE0LDgxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLAotICAgIDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLAotICAgIDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLAotICAgIDEyNCwxLDAsODMsNDEsMywxMjIsNDcsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKLSAgICAxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwKLSAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsCi0gICAgMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0MiwwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwKLSAgICAxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsCi0gICAgNTcsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsCi0gICAgNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLAotICAgIDExNCw3OCwwLDAsMCw0MSwxLDExNCw3OSwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ5LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwKKyAgICAwLDAsMTI0LDEsMTE2LDAsMTA2LDEsMTA3LDcsMTE0LDI4LDExNiwyLDEwMCwxLAorICAgIDEwNiwzLDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLAorICAgIDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwKKyAgICAxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsCisgICAgMCw0MSw0LDExNCwxNCwwLDAsMCwyMTgsMjAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDIxOCwxMSwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwwLDAsCisgICAgNDEsMiwxMTQsMjYsMCwwLDAsMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDQxLDEsMjE4LDMsMTAyLDEyMCwxMTAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMjUsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyMTgsMCwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LDEsMTIyLDUyLAorICAgIDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywKKyAgICAxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzIsMCwKKyAgICAwLDAsMTE0LDczLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMjE2LDAsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMiwxMiw1LDEwLDEsMTE0LDc0LDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMjYsMCwwLDAsMTM1LDAsMTAyLDEsMTAwLDEsMTAwLAorICAgIDIsMTMyLDgsMTI1LDEsMTE2LDAsMTI0LDEsMTM2LDAsMTMxLDIsMSwwLDEyNCwKKyAgICAxLDgzLDAsNDEsMywxMjIsNDcsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsCisgICAgMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSwzOCwwLDAsMCwKKyAgICAxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMTUsMjgsMTE2LDIsMTAwLDEsMTA2LDMsCisgICAgMTI0LDEsMTMxLDEsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTM2LDAsMTI0LDAsCisgICAgMTI0LDEsMTMxLDIsODMsMCw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAorICAgIDQ2LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAorICAgIDcwLDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwKKyAgICAxMTQsNzEsMCwwLDAsNDEsMSwxMTQsNzIsMCwwLDAsMTE0LDEwLDAsMCwKICAgICAwLDExNCwxMSwwLDAsMCwyMTgsMjQsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAogICAgIDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKLSAgICAyNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTgsMSw5LAorICAgIDIyOSwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTAsMSwxMCwxLDgsCiAgICAgMSwxMjIsNTAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwKICAgICAxMjIsMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwKICAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LAotICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3OSwKLSAgICAwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAotICAgIDc5LDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAotICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyNDQsMCwwLDAsMTE1LAotICAgIDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTQsODQsMCwwLDAsOTksCisgICAgOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLAorICAgIDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsCisgICAgNzIsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDIyNywwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NywwLDAsMCw5OSwKICAgICAyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw4MSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LAotICAgIDAsMCwxMzEsMiwwLDEyNSwyLDAsMTI0LDEsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsNjcsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAyNSwxMjUsMywwLDExNiwzLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwyNSw4MywxMTYsNCwwLDEyNCwKLSAgICAyLDAsMTMxLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEyOCw3NiwxMTEsCi0gICAgOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKLSAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCi0gICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwKLSAgICA1LDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCw1LDk1LAotICAgIDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDE5LDAsCi0gICAgMCwwLDExNCw3OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDAsMSwwLDAsMTE1LDEyLDAsMCwwLAotICAgIDAsNiwxNSwxLDE1LDEsMTMsMSwxMywxLDExLDIsMTE0LDkwLDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw2LDEsMCwwLDExNiwwLDAsMTI0LDAsCi0gICAgMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMjUsMSwwLDExNiwxLDAsCi0gICAgMTI0LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDcxLDAsMTIxLDE3LDAsMTI0LAotICAgIDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMTAsMTgsMCwKLSAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDcwLDAsMSwxLDEsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTAsCi0gICAgMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LAotICAgIDExMCwyMywwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMjcsMCwKLSAgICAxMTYsNiwwLDEyNCwyLDAsMTMxLDEsMCw4MywxMjEsMTMsMCwxMjQsMCwwLAotICAgIDEwNiw3LDAsMTI1LDMsMCw4NywxMTAsMjQsMCw0LDExNiw1LDAsMTA3LDEwLAotICAgIDAsMTE0LDE2NiwwLDEsMSwxLDEwMCwzLDAsMTI1LDMsMCw4OSwxMTAsMSwKLSAgICAwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTA2LDgsMCwxMjUsNCwwLDg3LDExMCwKLSAgICA1OSwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMjQxLDAsMSwxLDEsMTI0LAotICAgIDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEwMCw0LDAsMTA2LDksCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsMTAwLDUsMCwxMDYsOSwwLDEyNCwzLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg5LDExMCwxNywwLDg4LDEwMCw2LDAsCi0gICAgMTA2LDksMCwxMjQsMywwLDEyNCw0LDAsMTMxLDIsMCw4MywxMDAsMCwwLAotICAgIDgzLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCi0gICAgMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyNTAsMSw2MywKLSAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAotICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsNDEsMTAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDkyLDAsMCwwLDIxOCwKLSAgICA5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwyMTgsOCw5NSw5NSwxMTUsMTEyLAotICAgIDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwyMTgsMjIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSwxMTQsMSwwLDAsCi0gICAgMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDUwLDAsMCwwLAotICAgIDQxLDUsMTE0LDg5LDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKLSAgICAwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICAxNiwxLDAsMCwxMTUsNDYsMCwwLDAsMCwyLDE4LDEsMTUsNCwzLAotICAgIDEsMTcsMSwxMywxLDUsMSwzLDEsMTMsMSwxMywxLDUsMiwxMiwKLSAgICAxLDEwLDQsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxMywxLDEzLAotICAgIDEsMTIsMSwxMywyLDIxLDIsMTE0LDEwMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsCi0gICAgMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwKLSAgICAxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE3LDk1LDEwNSwKLSAgICAxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgMCwwLDEyNCwxLDAsMTA2LDEsMCwxMjQsMCwwLDk1LDIsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMywyMTgsNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTQsOTUsMCwwLDAsMjE4LDUsOTUsMTE1LDExMiwxMDEsOTksNDEsMiwxMTQsMTksCi0gICAgMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw1NCwxLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMCwwLDk1LDEsMCwxMjQsMCwwLDEwNiwyLAotICAgIDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNSwwLAotICAgIDYwLDEwMCwwLDAsODMsNDEsMiw3OCw4NCw0MSw2LDExNCwxMDQsMCwwLDAsCi0gICAgMjE4LDEzLDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LAotICAgIDEwMywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwxNSwKLSAgICAwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsNTgsMSwKLSAgICAwLDAsMTE1LDQsMCwwLDAsMCw0LDEyLDEsMTIyLDI3LDk1LDEwNSwxMTAsCi0gICAgMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwxMjEsMCwKLSAgICAwLDAsMTIyLDEwMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLAotICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsMCw2OCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsMTE0LDc4LDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLAotICAgIDEyNCwyLDAsMTA2LDQsMCw2MSw4NywxMTMsMTAwLDAsNCwxMTYsNSwwLDEwNywKLSAgICAxMCwwLDExNCw3NCwwLDEsMSwxLDg5LDExMywxMDAsMCw4OCwxMTAsMjIsMCwKLSAgICAxMTYsNiwwLDEwMCwzLDAsMTI0LDIsMCwxMDYsNCwwLDEyNCwyLDAsMTA2LAotICAgIDcsMCwxMzEsMywwLDEsODcsMTAwLDAsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCw5NSw4LDAsODgsMTAwLDAsMCw4Myw0MSw1LDc4LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LAotICAgIDAsMCwwLDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDksMCw4NiwxLDExMywzLDAsMTAwLAotICAgIDAsMCw4Myw0MSwxLDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwyNCwwLAotICAgIDAsMCwxMTQsMjUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDI2LDAsMCwwLDY4LDEsMCwwLDExNSwKLSAgICAyLDAsMCwwLDYsMCwxMjIsNDUsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCi0gICAgMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiwKLSAgICA5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCi0gICAgMTAxLDEyMCwxMTIsMTE0LDYyLDEyMiwxOCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwzNSwzMiwxMjMsMzMsMTE0LDEyNSw3MCw0MSw5LDExNCwxMDQsMCwwLAotICAgIDAsMTE0LDI3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE1LDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LAotICAgIDk5LDAsMCwwLDExNCwxMDUsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsCi0gICAgMTE0LDI5LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsNjUsMSwKLSAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMSwzLDEsOSwxLDI1LDEsMywKLSAgICAxLDE3LDEsMTMsMSw4LDIsMjYsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsCi0gICAgMCwwLDExNCwyLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDUyLAotICAgIDEsMCwwLDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwxMDIsCi0gICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgOCwwLDAsMCw2NCwwLDAsMCwxMTUsMTcyLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMCwzLDAsMTAwLDUsMCwxMDAsMywKLSAgICAwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwzLDkwLDQsMCwxMDAsOCwwLAotICAgIDEwMCw5LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLAotICAgIDAsMCw5MCw2LDAsMTAxLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwKLSAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw4LDAsMTA2LDksMCwxMDAsMTQsMCwKLSAgICAxMDAsMTMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLAotICAgIDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsCi0gICAgMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwKLSAgICAxMDEsMTEsMCwxMDYsOSwwLDEwMCwxOSwwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCwxMSwwLDEwMCwzLDAsODMsNDEsMjAsMjE4LDEwLDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5NywyMDgsNSwwLDAsODQsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMTAwLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLAotICAgIDEwMSw5OSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDk3LDk4LDExMSwxMTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDMyLDMyLDcwLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTAwLDk3LDExNiw5NywKLSAgICAzMiw5NywxMTUsMTE1LDExMSw5OSwxMDUsOTcsMTE2LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMTAsOTksCi0gICAgMTA4LDExNywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NCwzMiwxMTcsCi0gICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwKLSAgICAxMTAsOTcsMTA5LDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDk3LDk4LDExNSwKLSAgICAxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTksMTA0LDEwMSwKLSAgICAxMTAsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NiwzMiwKLSAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LAotICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA1LDExMCw0NiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwKLSAgICAxMDAsMTAxLDExNCwxMDUsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDEwNSwxMTUsOTUsCi0gICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk2LDMyLDEwMCwxMDEsMTE2LDEwMSwxMTQsMTA5LDEwNSwKLSAgICAxMTAsMTAxLDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsCi0gICAgOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMSwxMTQsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTEwLDExMSwxMTYsNDYsMzIsMzIsNzksMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LAotICAgIDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsOTYsMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsOTgsMTIxLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAotICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsCi0gICAgMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NiwzMiwKLSAgICAzMiw4NywxMDQsMTAxLDExMCwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA1LAotICAgIDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDExNiw0NCwzMiwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTA5LDk3LDExNiw5OSwxMDQsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsOTYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA5NiwzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDM0LDExMSwxMTQsMTA1LDEwMywxMDUsCi0gICAgMTEwLDM0LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDExNSwzMiw5NywzMiwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwzMiwzMiwzMiwzMiw4NywxMDQsMTAxLDExMCwKLSAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiw4NCwxMTQsMTE3LDEwMSw0NCwzMiw5NiwKLSAgICA5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LAotICAgIDExNywxMTYsMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsMzIsOTcsMTEwLDEyMSw0NiwzMiwzMiw3MywxMTYsCi0gICAgMTAsMzIsMzIsMzIsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMTE1LAotICAgIDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICAxMDAsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCi0gICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwKLSAgICA5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LAotICAgIDEwMSwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLAotICAgIDExNSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDExNSwKLSAgICAxMDEsMTE2LDQ0LDMyLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNSwKLSAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiw4NCwxMTQsMTE3LAotICAgIDEwMSw0NSw0NSw5NywxMTAsMTAwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExMSwxMTYsMTA0LAotICAgIDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgwLDk3LDk5LAotICAgIDEwNyw5NywxMDMsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw0MCwxMDksCi0gICAgOTcsMTIxLDQxLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDExMCwxMTEsMTEwLDQ1LDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDk2LDExNSwxMTcsOTgsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsCi0gICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5Niw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwKLSAgICAxMTksMTA1LDEwOCwxMDgsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLAotICAgIDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTAsMTA4LAotICAgIDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMzIsNDAsMTE1LDEwMSwxMDEsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw3NywxMDEsMTE2LAotICAgIDk3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLAotICAgIDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsCi0gICAgOTksNDYsODAsOTcsMTE2LDEwNCw2OSwxMTAsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCw0MSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwKLSAgICAzMiw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksMzIsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDExMCw5OSwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDIxOCw2LDExMSwxMTQsCi0gICAgMTA1LDEwMywxMDUsMTEwLDc4LDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExNSwxMTYsCi0gICAgOTcsMTE2LDEwMSwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksCi0gICAgMywwLDAsMCwzLDAsMCwwLDYsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNzksMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDEyNCwzLDAsMTI0LDAsCi0gICAgMCw5NSwyLDAsMTI0LDQsMCwxMjQsMCwwLDk1LDMsMCwxMjQsNSwwLAotICAgIDExNCw0OCwwLDEwMywwLDAsMTEwLDMsMCwxMDAsMCwwLDEyNCwwLDAsOTUsCi0gICAgNCwwLDEwMCwxLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwxMjQsMCwKLSAgICAwLDk1LDYsMCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTUsCi0gICAgMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLAotICAgIDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLAotICAgIDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwxMywKLSAgICA5NSwxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDcsOTUsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsNiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLAotICAgIDAsMTE0LDEwOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTE2LDEsMCwwLDExNSwxNCwKLSAgICAwLDAsMCwwLDIsOSwxLDksMSw5LDEsOSwxLDIxLDMsOSwKLSAgICAxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTUsOTUsCi0gICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE0NywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEwMywyLAotICAgIDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDAsMCwxMDcsOSwwLAotICAgIDExNCw3NiwwLDEyNCwxLDAsMTA2LDQsMCwxMDAsMywwLDEwNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwwLDAsMTA2LAotICAgIDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDExNiwwLDEyNCwxLDAsMTA2LDQsCi0gICAgMCwxMDAsNCwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDEwMCw1LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw2LDAsCi0gICAgMTA2LDcsMCwxMDAsNiwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwxMjMsMzMsMTE0LAotICAgIDEyNSwxMjIsMTEsMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMTEsCi0gICAgMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LDExNSwxMTcsOTgsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsCi0gICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywxMjUsNDAsMTIzLAotICAgIDEyNSw0MSwxMjIsMiw0NCwzMiw0MSw5LDExNCw1MCwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMjE4LDYsOTcsMTEyLAotICAgIDExMiwxMDEsMTEwLDEwMCwxMTQsMTEwLDAsMCwwLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywKLSAgICAxMTUsMTE1LDk1LDk1LDExNCwxLDAsMCwwLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwKLSAgICAyLDExNCwxOSwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUyLDAsMCwwLDEyOCwKLSAgICAxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDE1LDEsMjEsMSwxNSwxLAotICAgIDI1LDEsMTUsMSwxMiwxLDEzLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE0NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwKLSAgICAxMjEsMTA3LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsCi0gICAgMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMDYsMiwKLSAgICAwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLAotICAgIDEwNiwzLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsMTA2LDQsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw1LDAsCi0gICAgMTI0LDEsMCwxMDYsNSwwLDEwNywyLDAsODMsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgNiwwLDEwNywxMCwwLDExNCwxNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LAotICAgIDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwKLSAgICAwLDAsMjE4LDYsOTksOTcsOTksMTA0LDEwMSwxMDAsMjE4LDEyLDEwNCw5NywxMTUsOTUsCi0gICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDk2LDAsMCwwLDQxLDMsMTE0LAotICAgIDE5LDAsMCwwLDkwLDUsMTExLDExNiwxMDQsMTAxLDExNCw5MCw0LDExNSwxMDksMTE1LAotICAgIDEwOCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDEzOCwxLDAsMCwxMTUsMjAsMCwwLAotICAgIDAsMCwxLDksMSwzLDEsMTgsMSwxOCwxLDE4LDEsMTUsMSwxOCwKLSAgICAxLDIwLDEsMTMsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLAotICAgIDk5LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsODUsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNzgsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw3OCwwLAotICAgIDEyNCwwLDAsMTA2LDIsMCwxMTQsNzgsMCwxMTYsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsNTcsMCwxMTYsNCwwLDEzMCwxLDAsMTE2LDMsMCwxMDYsNSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMCwwLAotICAgIDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDc4LDQxLDYsMTE0LDExMiwwLDAsCi0gICAgMCwxMTQsMTA3LDAsMCwwLDExNCwxMTEsMCwwLDAsMjE4LDE5LDk1LDk4LDExMSwKLSAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsCi0gICAgMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLAotICAgIDY5LDExNCwxMTQsMTExLDExNCw5MCwxMSw5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTE2LDAsMCwwLDE1MCwxLDAsCi0gICAgMCwxMTUsMTIsMCwwLDAsMCwyLDE1LDEsMjQsMSwxMiwxLDYsMSwKLSAgICAyMSwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMDAsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LAotICAgIDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMSwxMTQsMTEyLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwxMTYsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxNTksMSwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM1LDAsMTI0LDAsMCwxMDYsMSwwLAotICAgIDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwzLDAsMjUsODMsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsNCwxMjIsMzIsODQsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDc4LDIxOCwxLAotICAgIDQ2LDExNCwzMywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MSwxLAotICAgIDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE2MywxLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwwLDMsMTUsMSwyMCwyLDEyMiwxNyw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDEsMTE0LDExMSwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNjIsMCwwLDAsMTE2LDAsMTI0LDEsMTI0LDAsMTMxLAorICAgIDIsMTI1LDIsMTI0LDEsMTE2LDEsMTA2LDIsMTA3LDYsMTE0LDUwLDExNiwxLDEwNiwKKyAgICAyLDEyNCwxLDI1LDAsMTI1LDMsMTE2LDMsMTI0LDIsMTI0LDMsMTMxLDIsMSwKKyAgICAwLDExNiwxLDEwNiwyLDEyNCwxLDI1LDAsODMsMCwxMTYsNCwxMjQsMiwxMzEsCisgICAgMSw4MywwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTI4LDc2LDExMSw5NywxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsMTA1LDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCisgICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMjE4LDE2LAorICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDExNCwxNCwwLDAsMCwyMTgsNywxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMjE4LDUsCisgICAgOTUsMTAxLDEyMCwxMDEsOTksMjE4LDUsOTUsMTA4LDExMSw5NywxMDAsNDEsNCwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDcxLDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCw2LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMjM5LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDYsMTAsMSwxMCwxLDEwLDEsMTAsMSwxMCwyLDExNCw4NCwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjE2LDAsMCwwLDExNiwwLDEyNCwwLAorICAgIDEwMCwxLDEwMCwwLDEzMSwzLDEyNSwxLDExNiwxLDEyNCwxLDEwMCwyLDEzMSwyLAorICAgIDExNCw1NCwxMjEsMTAsMTI0LDEsMTA2LDIsMTI0LDAsMTMxLDEsODMsMCw0LDAsCisgICAgMTE2LDMsMTA3LDEwLDExNCw1MiwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLAorICAgIDg4LDAsMTIxLDEwLDEyNCwwLDEwNiw0LDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwKKyAgICAxMTYsNSwxMDcsMTAsMTE0LDg0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDE4LAorICAgIDg4LDAsMTI0LDIsMTAwLDAsMTA3LDksMTE0LDEwMiwxMTYsNiwxMjQsMiwxMzEsMSwKKyAgICA4MywwLDEyMSwxMCwxMjQsMCwxMDYsNywxMjUsMyw4NywwLDExMCwyNCw0LDAsCisgICAgMTE2LDUsMTA3LDEwLDExNCwxMzYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDMsCisgICAgODksMCwxMTAsMiw4OCwwLDEyMSwxMCwxMjQsMCwxMDYsOCwxMjUsNCw4NywwLAorICAgIDExMCw1MCw0LDAsMTE2LDUsMTA3LDEwLDExNCwxOTgsMSwwLDEsMCwxLDAsCisgICAgMTI0LDEsMTAwLDAsMTA3LDgsMTE0LDE4MiwxMDAsNCwxMDYsOSwxMjQsMywxMzEsMSwKKyAgICA4MywwLDEwMCw1LDEwNiw5LDEyNCwzLDEyNCwxLDEzMSwyLDgzLDAsODksMCwKKyAgICAxMTAsMTQsODgsMCwxMDAsNiwxMDYsOSwxMjQsMywxMjQsNCwxMzEsMiw4MywwLAorICAgIDEwMCwwLDgzLDAsNDEsNyw3OCwyMTgsMTAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSw5NSwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDI1MCwxLDYzLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICA2Miw0MSwxMCwxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsODYsMCwKKyAgICAwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDIxOCw4LDk1LAorICAgIDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAorICAgIDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDExNCwKKyAgICAxLDAsMCwwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTQsMzgsCisgICAgMCwwLDAsNDEsNSwxMTQsODMsMCwwLDAsMjE4LDYsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCw4LDEwMiwxMDUsCisgICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDI1NSwwLDAsMCwxMTUsNDYsMCwwLDAsMCwyLDEyLDEsCisgICAgMTAsNCwyLDEsMTAsMSwxNCwxLDYsMSwyLDEsMTAsMSwxNCwxLAorICAgIDYsMiw4LDEsOCw0LDIsMSwxMCwxLDE0LDEsMTAsMSwyLDEsCisgICAgMTAsMSwxNCwxLDgsMSwxMCwyLDE4LDIsMTE0LDk1LDAsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgNjQsMCwwLDAsMTE1LDM2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsCisgICAgMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCw0LDEzMiwwLDkwLAorICAgIDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNyw4MywwLDQxLDgsMjE4LAorICAgIDE3LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsCisgICAgMTA4LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMjQsMSwxMjQsMCwKKyAgICA5NSwwLDEyNCwxLDEwNiwxLDEyNCwwLDk1LDIsMTAwLDAsODMsMCw0MSwxLAorICAgIDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDg5LDAsMCwKKyAgICAwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDI2LDAsMCwwLDExNCwKKyAgICA4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMjcsMCwwLDAsMzcsMSwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDYsMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLAorICAgIDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKKyAgICA5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyOCwwLDAsMCwxMDAsMSwxMjQsMCwxMDYsCisgICAgMCw5NSwxLDEyNCwwLDEwNiwyLDExNiwzLDEwNiw0LDEyNCwwLDEwNiwwLDEwNiwKKyAgICA1LDYwLDAsMTAwLDAsODMsMCw0MSwyLDc4LDg0LDQxLDYsMTE0LDk4LDAsCisgICAgMCwwLDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsCisgICAgMTAzLDExNCw5NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLAorICAgIDExNCwxNSwwLDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDgsMCwwLDAsCisgICAgNDEsMSwwLDAsMTE1LDQsMCwwLDAsMCw0LDgsMSwxMjIsMjcsOTUsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLAorICAgIDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMTcsMCwwLDAsNzEsMCwwLDAsMTE1LAorICAgIDk4LDAsMCwwLDEyMiw4MiwxMjQsMCwxMDYsMCwxMjUsMiwxMTYsMSwxMDAsMSwKKyAgICAxMDAsMiwxMzIsMCwxMjQsMSw2OCwwLDEzMSwxLDEzMSwxLDExNCw2NCwxMjEsMTQsCisgICAgMTE2LDIsMTA2LDMsMTI0LDIsMTA2LDQsNjEsMCw4NywwLDExMyw4MCw0LDAsCisgICAgMTE2LDUsMTA3LDEwLDExNCw2MCwxLDAsMSwwLDEsMCw4OSwwLDExMyw4MCwKKyAgICA4OCwwLDExMCwxNiwxMTYsNiwxMDAsMywxMjQsMiwxMDYsNCwxMjQsMiwxMDYsNywKKyAgICAxMzEsMywxLDAsODcsMCwxMDAsMCwxMDAsNCwxMjQsMCwxMDYsMCw5NSw4LAorICAgIDg4LDAsMTAwLDAsODMsMCw0MSw1LDc4LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwyMiwKKyAgICAwLDAsMCwxMjQsMCw5MywxNCwxMjUsMSwxMjQsMSwxMDAsMCwxMDcsOSw4NiwKKyAgICAwLDEsMCwxMTMsMiwxMDAsMCw4MywwLDQxLDEsNzgsMTE0LDEwLDAsMCwKKyAgICAwLDQxLDIsOTAsMiw0Niw0OCw5MCwzLDk3LDExNCwxMDMsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwKKyAgICAxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDUxLDEsMCwwLDExNSwyLDAsMCwwLDQsCisgICAgMCwxMjIsNDUsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsCisgICAgMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsCisgICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLAorICAgIDEyMiwxOCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsMTE0LDEyNSwzMiwzNSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw3MCw0MSw5LDExNCw5OCwwLDAsMCwyMTgsMyw5NywxMTAsCisgICAgMTIxLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDExNCw1NCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICA5OSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsMCwxMTQsNDksMCwwLDAsCisgICAgMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCw1MCwwLDAsMCw0OCwxLDAsMCwxMTUsMTgsMCwKKyAgICAwLDAsMCwxLDIsMSw2LDEsMTgsMSwyLDEsMTQsMSwxNCwxLAorICAgIDgsMiwyMCwyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLAorICAgIDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw5NiwwLDAsMCwzNSwxLDAsMCwxMTUsNiwKKyAgICAwLDAsMCw4LDIsOCw0LDgsNywxMTQsOTYsMCwwLDAsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwKKyAgICAwLDAsMCwxMTUsMTE0LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwKKyAgICAxMDAsMSw5MCwzLDEwMCwyLDEwMCwyLDEwMCwyLDEwMCwzLDE1NiwzLDEwMCw0LAorICAgIDEwMCw1LDEzMiwyLDkwLDQsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNSwxMDAsOCwKKyAgICAxMDAsOSwxMzIsMCw5MCw2LDEwMSw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsMTMxLDEsCisgICAgOTAsOCwxMDEsOCwxMDYsOSwxMDAsMTIsMTAwLDExLDEzMiwwLDEzMSwxLDkwLDgsCisgICAgMTAxLDcsMTAwLDEzLDEwMCwxNCwxMzIsMCwxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsCisgICAgMTAwLDE2LDEzMiwwLDEzMSwxLDkwLDExLDEwMSwxMSwxMDYsOSwxMDAsMTcsMTAwLDE2LAorICAgIDEzMiwwLDEzMSwxLDkwLDExLDEwMCwyLDgzLDAsNDEsMTgsMjE4LDEwLDc3LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5NywyMDgsNSwwLDAsODQsMTA0LDEwMSwKKyAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDY1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsCisgICAgMTEyLDEwMSw5OSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDk3LDk4LDExMSwxMTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQ2LDMyLDMyLDcwLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiw5NywxMTUsMTE1LDExMSw5OSwxMDUsOTcsMTE2LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsCisgICAgMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMTAsCisgICAgOTksMTA4LDExNywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NCwzMiwKKyAgICAxMTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA5NiwxMTAsOTcsMTA5LDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDk3LDk4LAorICAgIDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTksMTA0LAorICAgIDEwMSwxMTAsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NiwKKyAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA1LDExMCwKKyAgICA0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA1LDExNSwKKyAgICAzMiwxMDAsMTAxLDExNCwxMDUsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk2LDMyLDEwMCwxMDEsMTE2LDEwMSwxMTQsMTA5LAorICAgIDEwNSwxMTAsMTAxLDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsCisgICAgMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMSwxMTQsMTAsMzIsMzIsCisgICAgMzIsMzIsMTEwLDExMSwxMTYsNDYsMzIsMzIsNzksMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLAorICAgIDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsOTYsMzIsCisgICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwKKyAgICAxMDIsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NiwKKyAgICAzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsCisgICAgMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDExNiw0NCwzMiwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTA5LDk3LDExNiw5OSwxMDQsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsOTYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCw5NiwzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywKKyAgICAxMTYsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDM0LDExMSwxMTQsMTA1LDEwMywKKyAgICAxMDUsMTEwLDM0LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDExNSwzMiw5NywzMiwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwzMiwzMiwzMiwzMiw4NywxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiw4NCwxMTQsMTE3LDEwMSw0NCwzMiwKKyAgICA5Niw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LAorICAgIDk4LDExNywxMTYsMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA5Niw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsMzIsOTcsMTEwLDEyMSw0NiwzMiwzMiw3MywKKyAgICAxMTYsMTAsMzIsMzIsMzIsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsCisgICAgMTE1LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMDAsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLAorICAgIDk5LDEwMSwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsCisgICAgMTAxLDExNSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLAorICAgIDExNSwxMDEsMTE2LDQ0LDMyLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAorICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiw4NCwxMTQsCisgICAgMTE3LDEwMSw0NSw0NSw5NywxMTAsMTAwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExMSwxMTYsCisgICAgMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgwLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMDUsMTA5LDExMiwxMDgsCisgICAgMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw0MCwKKyAgICAxMDksOTcsMTIxLDQxLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTcsOTgsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDExMCwxMTEsMTEwLDQ1LDc4LAorICAgIDExMSwxMTAsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDk2LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5Niw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICAzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTAsCisgICAgMTA4LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMzIsNDAsMTE1LDEwMSwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw3NywxMDEsCisgICAgMTE2LDk3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLAorICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsCisgICAgOTgsOTksNDYsODAsOTcsMTE2LDEwNCw2OSwxMTAsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0MSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLAorICAgIDEyMSwzMiw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksMzIsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDExMCw5OSwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDMsCisgICAgMjE4LDYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTUsMTE1LDExNiw5NywxMTYsMTAxLDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5OSwzLDAsMCwwLDMsMCwwLDAsNiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw1NCwwLDAsMCwxMjQsMSwxMjQsMCwKKyAgICA5NSwwLDEyNCwyLDEyNCwwLDk1LDEsMTI0LDMsMTI0LDAsOTUsMiwxMjQsNCwKKyAgICAxMjQsMCw5NSwzLDEyNCw1LDExNCwzMiwxMDMsMCwxMTAsMiwxMDAsMCwxMjQsMCwKKyAgICA5NSw0LDEwMCwxLDEyNCwwLDk1LDUsMTAwLDAsMTI0LDAsOTUsNiwxMDAsMCwKKyAgICA4MywwLDQxLDIsNzgsNzAsNDEsNywxMTQsMTUsMCwwLDAsMTE0LDkzLDAsCisgICAgMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNCwwLDAsMCwyMTgsMjYsMTE1LDExNywKKyAgICA5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwxMyw5NSwxMTUsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDcsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsCisgICAgNDEsNiwxMTQsMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywwLDAsCisgICAgMCwxMTQsMTAzLDAsMCwwLDExNCwxMDQsMCwwLDAsMTE0LDEwNSwwLDAsMCwKICAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMTE3LDAsMCwwLDE3MSwxLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAotICAgIDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LAotICAgIDExNCwxMTEsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LDUsMTE4LDk3LAotICAgIDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDExNCwxMTcsMCwwLDAsMTc1LDEsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKLSAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDUyLDAsCi0gICAgMCwwLDExNCwxMTgsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LAotICAgIDEyMSwxMTQsMTE2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMjMsCi0gICAgMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw3OSwxLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LDEsCi0gICAgMTUsMTEsMTIsMTAsMTIsMTIsMTgsOSwyMSw0LDE4LDgsMTgsNCwxMTQsMTA2LAotICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNiwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjE3LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEzMSwyLDAsMTE0LDExMCwwLDExNiwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwKLSAgICAzMywwLDExNiwyLDAsMTMwLDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzAsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwxLDEsODMsMTI0LDMsMCwKLSAgICAxMTQsODIsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDIsMCwxMjUsNSwwLDEyNCwKLSAgICA0LDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsNSwKLSAgICAwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE5MiwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLDEzMSwyLDAsMTE0LDE4NiwwLAotICAgIDEyMSwxOSwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAotICAgIDMsMCw4NywxMTMsMTkyLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxODIsMCwKLSAgICAxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksMTEzLDE5MiwwLDg4LDExMCw2LAotICAgIDAsMTAwLDYsMCwxMjUsMywwLDExNiw2LDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEwMCw3LDAsMTI0LDIsMCwxMDAsNSwwLDEyNCwzLDAsMTMxLDIsMiw4MywKLSAgICA0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKLSAgICAxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwxMDksMCwwLDAsNzAsMTE0LDEwNywwLDAsMCw0MSw3LDExNCwKLSAgICA0LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwyMTgsMjMsCi0gICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA5LDAsMCwwLDExNCw3NywwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDQxLDYsMTE0LDE1LDAsMCwwLDExNCw5OSwwLAotICAgIDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyOCwwLDAsCi0gICAgMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODUsMCwwLDAsMTgwLDEsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxMiwxLDYsMSw5LDIsCi0gICAgMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwxNSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTQsMyw2LDIsMTE0LDg1LDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDUzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKLSAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwNSwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEwLDEsMCw4OCwKLSAgICAxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwKLSAgICAwLDExNCwyMTgsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDAsCi0gICAgMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDIxOCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjA4LDAsMSwxLDEsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDg5LDExMywyMTgsMCw4OCwxMTAsNiwwLDEyNCw1LDAsMTI1LDIsCi0gICAgMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsMTI1LDYsMCw4NywxMTAsMjQsCi0gICAgMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDEsMSwxLDEsMSwxMDAsMCwKLSAgICAwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsMTksMCwxMTYsNywwLDEyNCwKLSAgICAwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMSwwLDEwNywxMCwwLDExNCw0NywxLDEsMSwxLDEwMCwwLDAsMTI1LAotICAgIDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDQsMCwxMjQsMSwwLAotICAgIDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwzLDAsMTI0LDUsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDg3LDEsMTAwLDIsMCwxMTAsMywwLDEwMCwzLAotICAgIDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsMTI0LDMsMCw5NSwxMSwwLAotICAgIDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwzLDAsODMsNDEsNCw3OCwKLSAgICAxMTQsMTA3LDAsMCwwLDcwLDg0LDQxLDEzLDExNCw5NSwwLDAsMCwxMTQsOTYsCi0gICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5OCwwLAotICAgIDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDEwNiwwLDAsMCwxMTQsMTExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCw0MSw4LDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsODgsMCwwLAotICAgIDAsMTE0LDE1LDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjA5LDEsMCwwLAotICAgIDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw1LDEsMywKLSAgICAxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwxMywKLSAgICAxLDE0LDIsNiwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTksCi0gICAgMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDEzMiwwLAotICAgIDAsMCwyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDcwLDk5LDIsMCwKLSAgICAwLDAsMSwwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NCwyLDAsMCwxMjQsMiwwLDExNSwzMCwwLDExNiwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDY3LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsOTUsMiwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk3LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE4NywwLDEyNCwwLDAsCi0gICAgMTA2LDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE4NywwLDExNiw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwxNTEsMCwxMTYsNywwLDEzMCwxLDAsMTE2LDYsCi0gICAgMCwxMDYsOCwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsOSwwLDEyNCw0LDAsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMywwLDk1LAotICAgIDEwLDAsMTIxLDEzLDAsMTI0LDMsMCwxMjQsMSwwLDk1LDExLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjAsMCwxLDEsMSw4OSwKLSAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1MSwwLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDMyLDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDk1LDEzLAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwzMSwxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDk1LDE0LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2NSwKLSAgICAxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTYsMSwxMTYsCi0gICAgMCwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwxNDgsMSwxMjQsMCwwLDEwNiw1LDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCwxNDgsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LAotICAgIDEsMCw5NSwxNSwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ3LDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDExNCw1MCwyLDEyNCwyLDAsMTE1LDE4NywxLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDIyNCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE3LDAsMTI0LDEsMCw5NSwxOCwKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIzLDEsMSwKLSAgICAxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTQsMSwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1MCwyLDEyNCwwLDAsMTA2LDE5LDAsMTAwLDAsMCwxMDcsOSwKLSAgICAwLDExNCw1MCwyLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE5LDAsMTI0LDEsMCwKLSAgICA5NSwyMCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDksCi0gICAgMiwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKLSAgICAxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTMxLDAsMCwwLDExNCw5OCwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsMSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk5LDAsMCwKLSAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLAotICAgIDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDExNCw5MSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxMzQsMCwwLAotICAgIDAsMTE0LDk1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTA3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsNDEsNSwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDExNCwxMzMsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LAotICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LAotICAgIDExNCwxMTUsMjU0LDEsMCwwLDExNSw5MiwwLDAsMCwwLDQsMzAsMSwzLAotICAgIDEsMTYsMSwxMywxLDUsMiwzMCwxLDksMSwxMiwyLDE1LDEsMTIsCi0gICAgMSw2LDEsOSwyLDE1LDEsMTIsMSwzLDEsMTMsMSwxMywxLDUsCi0gICAgMiwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMsMSwxMywxLDEzLAotICAgIDEsNSwyLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDUsMiw5LAotICAgIDEsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzMCwxLDE1LDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDEsMTE0LDEzNywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMjksMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNDUsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMTAsNDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsMTE0LDg1LDAsMTE2LDMsMCwxMDYsNCwwLDEwMCw0LDAsMTE2LDUsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwxMTIsMCwxMTYsNiwwLDEyNCwwLDAsMTA2LDcsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTE2LDgsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAotICAgIDIsMCwxLDEyNCwxLDAsODMsNDEsNywxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMjIsODcsMTE1LDExNiw5NywxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTAsCi0gICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw1MSw0Niw1NCw0NCwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsOTAsMTAsMTE1LDExNiwKLSAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwyMzMsMiwwLDAsMCw0MSw5LDExNCwKLSAgICA0LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM4LDAsMCwwLDIxOCw5LAotICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsCi0gICAgMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLAotICAgIDEwNSwxMTAsMTAzLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNywwLAotICAgIDAsMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw1OCwKLSAgICAyLDAsMCwxMTUsMjAsMCwwLDAsMCwzLDYsMSwxOCwzLDIxLDEsCi0gICAgMTgsMSw5LDIsMTMsMSwxMiwxLDE1LDEsMTMsMSwxMTQsMTQ0LDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDEwMCwyLDAsMTEwLDYsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCw5NSwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDczLDAsMTAwLDMsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4MywxMDAsNCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDIsMCw4MywxMTAsNTAsMCwxMjQsMCwwLDEwNiw0LDAsCi0gICAgMTE0LDEyMywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMiwwLDgzLDEwMCw2LDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsODMsMTAwLDEsMCw4MywKLSAgICA0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwKLSAgICAxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw5MywwLDAsMCwKLSAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAotICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LAotICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsCi0gICAgNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTksCi0gICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTcsMCwwLDAsNDEsMiwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5NywwLDAsMCw3NiwyLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMCwzLDMwLDEsMTUsMSwxNSwxLDEzLDIsCi0gICAgMjIsMiw5LDEsMTksMiwxMTQsOTcsMCwwLDAsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDExNiwzLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDE0MywyMDgsMCwxLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjQsMSwwLDEwNyw5LDAsMTE0LDg5LDAsMTAwLDEsMCwKLSAgICAxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiw4LDAsMTI0LAotICAgIDMsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsMSwxMzAsMSwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE2MywwLDEyNCwwLDAsCi0gICAgMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNDAsMCwxMTYsOCwwLDEwMCwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDEsMSwxMzAsMSwKLSAgICAwLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDIsMSwxLDEyNCwxLDAsODMsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTE2LDEyLDAsMTI0LDAsCi0gICAgMCwxMDYsOSwwLDEwMCw3LDAsMTMxLDIsMCwxMTUsMjE5LDAsMTI0LDAsMCwKLSAgICAxMDYsOSwwLDEwNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxNiwwLAotICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTQsMCwxMjQsMSwwLDEzMSwxLDAsMSwKLSAgICA4NywxMDAsMywwLDgxLDgyLDg4LDExNiw0LDAsMTA2LDUsMCwxMjQsMiwwLAotICAgIDI1LDgzLDQxLDgsMTIyLDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCwxNSwwLDAsMCw3OCwxMjIsCi0gICAgMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAotICAgIDEzMywwLDAsMCw4NCwxMTQsMTM5LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDU0LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCi0gICAgMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsMCw0MSw0LDExNCw4OCwwLDAsMCwxMTQsCi0gICAgODksMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCwzLDEwOSwxMTUsMTAzLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NiwwLAotICAgIDAsMCw5MywyLDAsMCwxMTUsMzIsMCwwLDAsMCwyLDksMSwxMCwKLSAgICAxLDEzLDEsMjQsMSwxNSwxLDE4LDEsMTUsMSwxNSwxLDIxLDIsMTksCi0gICAgMSw0LDEsMTksMSwxOCw0LDE5LDIsMjMsMSwxMTQsODYsMCwwLDAsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDMsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMSwxMTYsMywwLAotICAgIDEwNiw0LDAsMTI0LDAsMCwxMDYsMiwwLDI1LDEyNSwxLDAsMTE2LDUsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsOTYsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCi0gICAgMCw5NSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKLSAgICA5NSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LDUsMCwxMjQsMSwwLAotICAgIDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMTk3LDAsMTIxLDU2LDAsMTI0LDEsMCwxMDYsOCwwLDEyNCwxLDAsOTUsOSwKLSAgICAwLDExNiwxMCwwLDEyNCwxLDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxNzUsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTA2LDExLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwKLSAgICA1LDAsMjUsMTI0LDEsMCw5NSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA1LDAsMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDI1NSwwLDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxMiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMjU0LAotICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDkxLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCi0gICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsMTMsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKLSAgICAxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDkxLAotICAgIDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTM0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LAotICAgIDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksCi0gICAgMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMTgsMiwwLDAsMTE1LDQwLDAsMCwwLAotICAgIDAsNCwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDUsMSwKLSAgICAyNCwxLDMsNCwxMiwxLDE1LDEsMjksMSwxMywxLDUsMSwyNCwxLAotICAgIDMsMSwxMywxLDEzLDEsNSwxLDExNCwxNDgsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKLSAgICAxLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDExNiw0LAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDE0Myw3NSwwLDEsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTIyLDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDYsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTI0LDAsMCwxMDYsNywwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMTYsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMSw4NywxMDAsMCwwLDgxLDgyLDg4LDExNiw5LDAsMTA2LDEwLDAsMTI0LDAsCi0gICAgMCwxMDYsNywwLDI1LDgzLDQxLDQsNzgsMTE0LDEzOSwwLDAsMCwxMjIsMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDE1LAotICAgIDAsMCwwLDQxLDExLDExNCw5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgMTQ4LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzOSwwLAotICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDQxLDIsMTE0LDg4LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE0NywyLDAsMCwxMTUsMjAsMCwwLDAsCi0gICAgMCwyLDE1LDIsMTgsMSwxMCwyLDEyLDEsMTMsMSwxNSwxLDE1LDEsCi0gICAgMjQsMywyMyw1LDExNCwxNDksMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsNDcsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMTYsMiwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMSwwLDE0MywxNSwwLDEsMTE2LDQsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE5MSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwKLSAgICAxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICA0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAotICAgIDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywKLSAgICAxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwKLSAgICAwLDAsMTE0LDU0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQ5LDAsMCwKLSAgICAwLDQxLDEsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw4NywwLDAsMCwxNzAsMiwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw5LDEwLDEsMTYsMSwxMTQsODcsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjA1LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsCi0gICAgMCwxMDAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsCi0gICAgMTMxLDEsMCw5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLAotICAgIDgsMCwxMzIsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksCi0gICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw2LDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE1LDAsCi0gICAgMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsCi0gICAgNiwwLDEwMSwxMSwwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwxMDEsMTUsMCwxMzEsMSwwLAotICAgIDkwLDE2LDAsMTAwLDQsMCw4Myw0MSwxOSwyMTgsMTUsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsMTAxLDExNiw5NywKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAyNywwLDAsMCw5OSwxLDAsMCwxMTUsMTQsMCwwLDAsMCwyLDYsCisgICAgMSw2LDEsNiwxLDYsMSwxNCwzLDYsMSwxMjIsMTksNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsCisgICAgMTA2LDEsMTMxLDEsMTAwLDIsMTA2LDAsMTI0LDAsMTA2LDIsMTMxLDEsMTAzLDIsCisgICAgMTI1LDEsMTI0LDAsMTA2LDMsMTAwLDAsMTA3LDksMTE0LDUyLDEyNCwxLDEwNiw0LAorICAgIDEwMCwzLDEwNiwwLDEyNCwwLDEwNiwzLDEzMSwxLDEzMSwxLDEsMCwxMjQsMCwKKyAgICAxMDYsNSwxMDAsMCwxMDcsOSwxMTQsODAsMTI0LDEsMTA2LDQsMTAwLDQsMTA2LDAsCisgICAgMTI0LDAsMTA2LDUsMTMxLDEsMTMxLDEsMSwwLDEwMCw1LDEwNiwwLDEyNCwwLAorICAgIDEwNiw2LDEwNiw3LDEwMCw2LDEwNiw4LDEyNCwxLDEzMSwxLDEzMSwyLDgzLDAsCisgICAgNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMTEsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMTEsMTExLDExNCwxMDUsCisgICAgMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywxMjUsNDAsMTIzLDEyNSw0MSwxMjIsCisgICAgMiw0NCwzMiw0MSw5LDExNCwzOCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCwxMTQsMTA2LDAsMCwwLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LAorICAgIDk1LDExNCwxLDAsMCwwLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwyLDExNCwyNiwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQwLDAsMCwwLDExMSwxLDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsMCwxLDEwLDEsMTQsMSwxMCwxLDE4LDEsMTAsCisgICAgMSw4LDEsMTAsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLAorICAgIDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTAyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNSwyLDEyMSw3MCwxMjQsMCwxMDYsMSwKKyAgICAxMjQsMSwxMDYsMSwxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDIsMTI0LDEsMTA2LDIsCisgICAgMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwzLDEyNCwxLDEwNiwzLDEwNywyLDExMSw3NiwKKyAgICAxMjQsMiwxMjQsMSwxMDYsMCwxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDQsMTI0LDEsCisgICAgMTA2LDQsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw1LDEyNCwxLDEwNiw1LDEwNywyLAorICAgIDgzLDAsNCwwLDExNiw2LDEwNywxMCwxMTQsOTYsMSwwLDEsMCwxLDAsCisgICAgMTAwLDEsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMiw3OCw3MCw0MSw3LAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgMTAzLDAsMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsCisgICAgMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5MCwwLDAsMCw0MSwKKyAgICAzLDExNCwyNiwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsCisgICAgMTA5LDExNSwxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMjEsMSwwLDAsMTE1LDIwLAorICAgIDAsMCwwLDAsMSw2LDEsMiwxLDEyLDEsMTIsMSwxMiwxLDEwLAorICAgIDEsMTIsMSwxMiwxLDE0LDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsCisgICAgMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDU4LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwwLDEwNyw4LDExNCw1MiwxMjQsMCwKKyAgICAxMDYsMSwxMDAsMCwxMDcsOSwxMTQsNTIsMTI0LDAsMTA2LDIsMTE0LDUyLDExNiwzLAorICAgIDEwMCwwLDEwNyw4LDExNCwzOCwxMTYsNCwxMzAsMSwxMTYsMywxMDYsNSwxMjQsMCwKKyAgICAxMDYsMSwxMzEsMSwxMjQsMCw5NSwwLDEyNCwwLDEwNiwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSw2LDExNCwxMDgsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA3LDAsCisgICAgMCwwLDIxOCwxOSw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLAorICAgIDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsMSwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDExMiwwLDAsMCwxMzMsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMCwKKyAgICAxLDE2LDEsOCwxLDQsMSwxNCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDgzLDExMiwxMDEsOTksNDYsOTksOTcsOTksMTA0LDEwMSwxMDAsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMDAsMCw4MywwLAorICAgIDQxLDEsNzgsNDEsMSwxMTQsMTA4LDAsMCwwLDQxLDIsMTE0LDI2LDAsMCwKKyAgICAwLDExNCwxMTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxNDIsMSwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDEwMCwxLDEwNyw4LDExNCwyNiwxMjQsMCwxMDYsMSwxMDYsMiwxMDAsCisgICAgMiwxMzEsMSwxMDAsMywyNSwwLDgzLDAsMTI0LDAsMTA2LDEsODMsMCwxMDAsCisgICAgMSw4MywwLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCisgICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSw0NiwxMTQsMTksMCwwLDAsCisgICAgNDEsMywxMTQsMTA2LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMTAsMTE0LDExMiwKKyAgICA5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDYsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxNDYsMSwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAzLDEwLDEsMTYsMiwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLAorICAgIDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNiwwLAorICAgIDAsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMTA3LDAsCisgICAgMCwwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTU0LDEsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjMsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA4MywxMTIsMTAxLDk5LDQ2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLAorICAgIDEsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwyMTgsNCwKKyAgICA5OCwxMTEsMTExLDEwOCwxMTQsMTA3LDAsMCwwLDQxLDIsMTE0LDI2LDAsMCwwLAorICAgIDIxOCw1LDExOCw5NywxMDgsMTE3LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDE1OCwxLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDIsNDEsMTIsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLAorICAgIDExMiwxMDEsMTE0LDExNiwxMjEsMTE0LDExMiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsCisgICAgMTAxLDExNCwxMTQsMTE5LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxMDIsMCwwLDAsNjIsMSwwLDAsMTE1LDIwLDAsMCwwLDgsMzUsCisgICAgNCwyLDQsMSwxNCwxMSw4LDEwLDgsMTIsMTIsOSwxNCw0LDEyLDgsCisgICAgMTIsNCwxMTQsMTAyLDAsMCwwLDQxLDIsMTE0LDEwMywwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDk5LDIsMCwwLDAsMiwwLDAsMCw2LDAsMCwwLAorICAgIDE0LDAsMCwwLDY3LDAsMCwwLDExNSwxNTQsMCwwLDAsMTE2LDAsMTI0LAorICAgIDEsMTAwLDEsMTMxLDIsMTE0LDc0LDExNiwxLDEwMCwyLDEwNyw4LDExNCwyMiwxMTYsCisgICAgMiwxMzAsMSwxMTYsMSwxMDYsMywxMjUsNCwxMjQsMywxMDAsMiwxMDcsOCwxMTQsCisgICAgNDgsMTI0LDQsMTI0LDAsMTI0LDEsMTAwLDMsMTQxLDIsODMsMCwxMjQsMywxMTQsCisgICAgNTYsMTAzLDAsMTEwLDIsMTAwLDIsMTI1LDUsMTI0LDQsMTI0LDAsMTI0LDEsMTI0LAorICAgIDUsMTAwLDQsMTQxLDMsODMsMCwxMjQsMywxMDAsMiwxMDcsOCwxMTQsMTM4LDExNiwKKyAgICAwLDEyNCwxLDEwMCw1LDEzMSwyLDExNCwxMzQsMTIxLDE0LDEyNCwxLDEwNiw0LDEyNCwKKyAgICAwLDEzMSwxLDEyNSwzLDg3LDAsMTEzLDEzOCw0LDAsMTE2LDUsMTA3LDEwLDExNCwKKyAgICAxMzAsMSwwLDEsMCwxLDAsMTAwLDIsMTI1LDMsODksMCwxMTMsMTM4LDg4LAorICAgIDAsMTEwLDQsMTAwLDYsMTI1LDMsMTE2LDYsMTI0LDAsMTI0LDEsMTI0LDIsMTI0LAorICAgIDMsMTAwLDcsMTQxLDQsODMsMCw0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLAorICAgIDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsCisgICAgOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLAorICAgIDEsMTE0LDkzLDAsMCwwLDQxLDIsMTE0LDkzLDAsMCwwLDExNCwxMDYsMCwKKyAgICAwLDAsMTE0LDEwNSwwLDAsMCw3MCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LAorICAgIDEwNSwwLDAsMCw0MSw3LDExNCw0LDAsMCwwLDExNCwxMTUsMCwwLDAsCisgICAgMTE0LDExNiwwLDAsMCwyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTAyLDAsMCwwLDQxLDYsMTE0LAorICAgIDE1LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDUsCisgICAgMCwwLDAsMTE0LDEyNCwwLDAsMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgNzgsMCwwLDAsMTYzLDEsMCwwLDExNSwzNCwwLDAsMCwwLDIsMTAsCisgICAgMSw4LDEsNCwxLDYsMiw4LDEsMTIsMSwxMiwxLDYsMSw4LAorICAgIDIsOCwxLDEwLDEsMiwxLDE0LDEsMTQsMSwxMiwzLDQsMiwxMTQsCisgICAgNzgsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDgsMCwwLAorICAgIDAsNTMsMCwwLDAsNjcsMCwwLDAsMTE1LDU2LDEsMCwwLDEyMSwxMCwKKyAgICAxMjQsMCwxMDYsMCwxMjUsMyw4NywwLDExMCwyMCw0LDAsMTE2LDEsMTA3LDEwLAorICAgIDExNCwzMCwxLDAsMSwwLDEsMCw4OSwwLDExMCwxNCw4OCwwLDEyNCwzLAorICAgIDEwMCwwLDEwNyw5LDExNCw0NCwxMjQsMyw4MywwLDEyNCwwLDEwNiwyLDEyNSw0LAorICAgIDEyNCwxLDEwMCwwLDEwNyw4LDExNCw5MCwxMjEsMTAsMTI0LDAsMTA2LDMsMTI1LDEsCisgICAgODcsMCwxMTAsMjAsNCwwLDExNiwxLDEwNywxMCwxMTQsODgsMSwwLDEsMCwKKyAgICAxLDAsODksMCwxMTAsMiw4OCwwLDEyMSwxMCwxMjQsMCwxMDYsNCwxMjUsNSwKKyAgICA4NywwLDExMCwyNCw0LDAsMTE2LDEsMTA3LDEwLDExNCwxMjQsMSwwLDEsMCwKKyAgICAxLDAsMTAwLDAsMTI1LDUsODksMCwxMTAsMiw4OCwwLDEyNCwyLDEwMCwwLAorICAgIDEwNyw4LDExNCwxODQsMTI0LDUsMTAwLDAsMTA3LDgsMTE0LDE4MCwxMjEsMTAsMTI0LDEsCisgICAgMTA2LDUsMTI1LDIsODcsMCwxMTMsMTg0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDE3NiwKKyAgICAxLDAsMSwwLDEsMCwxMDAsMCwxMjUsMiw4OSwwLDExMywxODQsODgsMCwKKyAgICAxMTAsNCwxMjQsNSwxMjUsMiwxMjEsMTAsMTI0LDAsMTA2LDYsMTI1LDYsODcsMCwKKyAgICAxMTAsMjQsNCwwLDExNiwxLDEwNywxMCwxMTQsMjE4LDEsMCwxLDAsMSwwLAorICAgIDEwMCwwLDEyNSw2LDg5LDAsMTEwLDIsODgsMCwxMjEsMTQsMTE2LDcsMTI0LDAsCisgICAgMTA2LDgsMTMxLDEsMTI1LDcsODcsMCwxMTAsMjYsNCwwLDExNiwxLDEwNywxMCwKKyAgICAxNDQsMSwxMTQsNCwxLDAsMSwwLDEsMCwxMDAsMCwxMjUsNyw4OSwwLAorICAgIDExMCwyLDg4LDAsMTE2LDksMTI0LDQsMTI0LDEsMTI0LDIsMTAwLDEsMTQxLDMsCisgICAgMTI1LDMsMTI0LDUsMTAwLDAsMTA3LDgsMTQ0LDEsMTE0LDM0LDEwMCwyLDExMCwyLAorICAgIDEwMCwzLDEyNCwzLDk1LDEwLDEyNCw2LDEyNCwzLDk1LDExLDEyNCw3LDEyNCwzLAorICAgIDk1LDEyLDEyNCwzLDgzLDAsNDEsNCw3OCw0MSwxLDExNCwxMDMsMCwwLDAsCisgICAgNzAsODQsNDEsMTMsMTE0LDg5LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMSwKKyAgICAwLDAsMCwxMTQsODUsMCwwLDAsMTE0LDkyLDAsMCwwLDkwLDcsOTUsCisgICAgNzksODIsNzMsNzEsNzMsNzgsMjE4LDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDk1LDk1LDIxOCw0LDEwOCwxMDUsMTE1LDExNiwyMTgsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NSwxMTQsMTAyLDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDExMiwwLDAsCisgICAgMCwxMTQsMTA2LDAsMCwwLDQxLDgsMTE0LDgzLDAsMCwwLDExNCw5MywwLAorICAgIDAsMCwxMTQsMTAzLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTUsMCwwLAorICAgIDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTEyLDAsMCwwLAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTIsMSwwLDAsMTE1LDcyLDAsMCwwLAorICAgIDAsMiwyLDEsMTAsMSwxNCwxLDYsMiw4LDEsNCwyLDYsMSwKKyAgICA4LDEsMiwxLDEwLDEsMTQsMiw2LDEsMiwxLDEwLDEsMTQsMSwKKyAgICAxMCwxLDgsMSw4LDEsMiwxLDEwLDEsMTQsMSwxMiwyLDQsMSwKKyAgICAyLDEsMTAsMSwxNCwxLDEwLDEsMiwxLDE0LDEsMTYsMSwxMCwyLAorICAgIDE0LDEsMjAsMSw2LDEsNiwxLDExNCwxMjgsMCwwLDAsNzAsNDEsMSwKKyAgICAyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDk5LDIsMCwwLDAsMSwKKyAgICAwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyMTIsMSwwLDAsMTI0LDIsMTE1LDIwLDExNiwwLDEyNCwxLDEwMCwxLDEwMCwwLAorICAgIDEzMSwzLDEwMCwwLDEwNyw4LDExNCw1NCwxMjEsMTIsMTI0LDAsMTA2LDEsMTI0LDEsCisgICAgOTUsMiw4NywwLDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCw1MiwxLDAsCisgICAgMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTE1LDc0LDExNiwwLAorICAgIDEyNCwxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwxNjYsMTI0LDAsCisgICAgMTA2LDQsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDEzNCwxMjQsMCwxMDYsNSwKKyAgICAxMDAsMCwxMDcsOSwxMTQsMTM0LDExNiw2LDEwMCwwLDEwNyw4LDExNCwxMTAsMTE2LDcsCisgICAgMTMwLDEsMTE2LDYsMTA2LDgsMTI1LDQsMTI0LDQsMTA2LDksMTI0LDQsMTMxLDEsCisgICAgMTI1LDMsMTI0LDAsMTA2LDUsMTI0LDMsOTUsMTAsMTIxLDEwLDEyNCwzLDEyNCwxLAorICAgIDk1LDExLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywxMDcsMTAsMTE0LDE2NCwxLDAsCisgICAgMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTE1LDE4NiwxMTYsMCwKKyAgICAxMjQsMSwxMDAsMywxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsMjIwLDEyMSwxMiwKKyAgICAxMjQsMCwxMDYsMTIsMTI0LDEsOTUsMTMsODcsMCwxMTAsMjAsNCwwLDExNiwzLAorICAgIDEwNywxMCwxMTQsMjE4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjEsMTAsMTI0LDAsMTI0LDEsOTUsMTQsODcsMCwxMTAsMjAsNCwwLDExNiwzLAorICAgIDEwNywxMCwxMTQsMjUwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiwxNDQsMSwxMTUsMjAsMTE2LDAsMTI0LDEsMTAwLDQsMTAwLDAsMTMxLDMsCisgICAgMTAwLDAsMTA3LDgsMTQ0LDEsMTE0LDY4LDEyNCwwLDEwNiw1LDEwMCwwLDEwNyw5LAorICAgIDE0NCwxLDExNCw2OCwxMjEsMTIsMTI0LDAsMTA2LDUsMTI0LDEsOTUsMTUsODcsMCwKKyAgICAxMTAsMjIsNCwwLDExNiwzLDEwNywxMCwxNDQsMSwxMTQsNjYsMSwwLDEsMCwKKyAgICAxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwwLDEwNiwxNiwxNDQsMSwxMTQsMjA4LAorICAgIDEyNCwyLDE0NCwxLDExNSwxMDAsMTE2LDAsMTI0LDEsMTAwLDUsMTAwLDAsMTMxLDMsCisgICAgMTAwLDAsMTA3LDgsMTQ0LDEsMTE0LDEzNiwxMjEsMTIsMTI0LDAsMTA2LDE3LDEyNCwxLAorICAgIDk1LDE4LDg3LDAsMTEwLDIyLDQsMCwxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDEzNCwKKyAgICAxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTQ0LDEsCisgICAgMTE1LDE2MCwxMTYsMCwxMjQsMSwxMDAsNiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwKKyAgICAxNDQsMSwxMTQsMjA4LDEyNCwwLDEwNiwxOSwxMDAsMCwxMDcsOSwxNDQsMSwxMTQsMjA4LAorICAgIDEyMSwxMiwxMjQsMCwxMDYsMTksMTI0LDEsOTUsMjAsODcsMCwxMTAsMjIsNCwwLAorICAgIDExNiwzLDEwNywxMCwxNDQsMSwxMTQsMjA2LDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMjQsMSw4MywwLDQxLDcsNzgsMTE0LDEsMCwwLDAsCisgICAgMTE0LDg1LDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMTE0LDEyNywwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDEyNSwwLDAsCisgICAgMCw0MSwyMSwxMTQsNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsMTE0LDkwLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsMCwKKyAgICAwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwyMTgsMTYsOTUsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDcsOTUsCisgICAgOTUsMTEwLDEwMSwxMTksOTUsOTUsOTAsNSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsODUsMCwKKyAgICAwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCw4OSwwLDAsCisgICAgMCwxMTQsMTI3LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDEwMywwLDAsMCwKKyAgICAxMTQsOTIsMCwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTI1LDAsMCwwLDQxLAorICAgIDUsMTE0LDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTI5LDAsMCwwLAorICAgIDExNCw5MywwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwxMTQsMTE1LDIzNywxLDAsCisgICAgMCwxMTUsOTIsMCwwLDAsMCw0LDIwLDEsMiwxLDEyLDEsMTQsMSwKKyAgICA2LDIsMjAsMSw2LDEsOCwyLDEwLDEsOCwxLDQsMSw2LDIsCisgICAgMTAsMSw4LDEsMiwxLDEwLDEsMTQsMSw2LDIsMjAsMSwyLDEsCisgICAgMTIsMSwxNCwxLDYsMiwyLDEsMTAsMSwxNCwxLDYsMiwyNCwxLAorICAgIDEyLDEsMiwxLDEyLDEsMTYsMSw2LDIsOCwxLDI0LDEsMiwxLAorICAgIDEyLDEsMTYsMSw2LDIsMjQsMSwxMiwxLDIsMSwxMiwxLDE2LDEsCisgICAgNiwxLDExNCwxMzMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODIsMCwwLAorICAgIDAsMTAwLDEsMTI1LDEsMTE2LDAsMTI0LDAsMTA2LDEsMTAwLDIsMTMxLDIsMTE0LAorICAgIDMwLDEyNCwwLDEwNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEyNSwxLDExMCwyMCwxMTYsCisgICAgMCwxMjQsMCwxMDYsMSwxMDAsMywxMzEsMiwxMTQsNTAsMTE2LDMsMTAwLDQsMTMxLAorICAgIDEsMTMwLDEsMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDY4LDExNiw0LDEyNCwwLDEwNiwKKyAgICA1LDEzMSwxLDEyNSwxLDExNiw2LDEyNCwwLDEyNCwxLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDUsMTIyLDQzLDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMDAsMzIsMTE1LDExMiwxMDEsCisgICAgOTksNDYsNzgsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLAorICAgIDY2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMCwxMDEsCisgICAgMTAyLDEwNSwxMTAsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsNDEsNDEsNywxMTQsNCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDEzNCwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwxNSwKKyAgICAwLDAsMCwxMTQsMTMzLDAsMCwwLDQxLDIsMTE0LDgyLDAsMCwwLDExNCwKKyAgICA4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwyMTgsMTYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LAorICAgIDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMCwwLDExNSwxOCwwLDAsMCwwLDMsCisgICAgNCwxLDEyLDMsMTQsMSwxMiwxLDgsMiw4LDEsMTAsMSwxMCwxLAorICAgIDExNCwxMzYsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTA2LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDEwMCwxLDEwNyw4LDExNCwxNCwxMDAsMiwxMTAsNCwxMjQsMCwxMDYsCisgICAgMCwxMjUsMSwxMjQsMCwxMDYsMSwxMDAsMSwxMDcsOCwxMTQsNjYsMTI0LDAsMTA2LAorICAgIDIsMTAwLDEsMTA3LDgsMTE0LDUwLDEwMCwzLDEwNiwzLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsMTAwLDQsMTA2LDMsMTI0LDEsMTI0LDAsMTA2LDIsMTMxLDIsODMsMCwxMTAsCisgICAgMzYsMTI0LDAsMTA2LDQsMTE0LDg2LDEwMCw1LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwyLDgzLDAsMTAwLDYsMTA2LDMsMTI0LDAsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTMxLDIsODMsMCwxMDAsMSw4MywwLDQxLDcsMTIyLDM4LDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgMTE3LDExNSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsNzgsMTE0LDg3LDAsMCwwLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLAorICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMTgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDEyNSw0MSw2Miw0MSw1LDExNCwxNSwwLAorICAgIDAsMCwxMTQsMTAzLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMzgsMCwwLAorICAgIDAsMTE0LDExMywwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDkxLDAsMCwwLDU4LDIsMCwwLDExNSwxNiwwLDAsMCwwLAorICAgIDMsMjAsMSwxMCwxLDEwLDEsMTAsMiwxNiwyLDYsMSwxNCwyLDExNCwKKyAgICA5MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTg2LDAsMCwwLDEyNCwwLAorICAgIDEwNiwwLDEyNSwyLDExNiwxLDEwNiwyLDEzMSwwLDEsMCwxMTYsMywxMjQsMiwKKyAgICAxMzEsMSwxNDMsMTQ4LDEsMCwxMTYsNCwxMDYsNSwxMDYsNiwxMjQsMiwxMzEsMSwKKyAgICAxMjQsMSwxMDcsOSwxMTQsNjIsMTAwLDEsMTA2LDcsMTI0LDIsMTMxLDEsMTI1LDMsCisgICAgMTE2LDgsMTI0LDMsMTI0LDIsMTAwLDIsMTQxLDIsMTMwLDEsMTI0LDAsMTA2LDksCisgICAgMTAwLDMsMTA3LDgsMTE0LDExNCwxMjQsMCwxMDYsMTAsMTAwLDMsMTA3LDgsMTE0LDk2LAorICAgIDExNiw4LDEwMCw0LDEyNCwwLDEwNiwwLDEwMCwyLDE0MSwyLDEzMCwxLDExNiwxMSwKKyAgICAxMjQsMCwxMjQsMSwxMDAsNSwxMDAsNiwxNDEsMywxLDAsMTI0LDEsODMsMCwKKyAgICAxMTYsMTEsMTI0LDAsMTI0LDEsMTAwLDUsMTAwLDYsMTQxLDMsMSwwLDExNiwxMiwKKyAgICAxMjQsMCwxMDYsOSwxMDAsNywxMzEsMiwxMTUsMTU0LDEyNCwwLDEwNiw5LDEwNiwxMywKKyAgICAxMjQsMiwxMzEsMSwxLDAsMTEwLDEyLDEyNCwwLDEwNiw5LDEwNiwxNCwxMjQsMSwKKyAgICAxMzEsMSwxLDAsODcsMCwxMDAsMyw4MSwwLDgyLDAsODgsMCwxMTYsNCwKKyAgICAxMDYsNSwxMjQsMiwyNSwwLDgzLDAsNDEsOCwxMjIsNzAsNjksMTIwLDEwMSw5OSwKKyAgICAxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsNDEsMSwxMTQsMTUsMCwwLDAsNzgsMTIyLDE0LDEwOSwxMDUsMTE1LDExNSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDg0LDQxLDEsMTE0LDEyOSwwLAorICAgIDAsMCwxMTQsMTM1LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsMCwxMTQsNDYsCisgICAgMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsMTA4LDExMSw5OSwKKyAgICAxMDcsMTE0LDQyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsCisgICAgMTE0LDMwLDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LAorICAgIDkzLDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDEzNSwwLDAsMCw0MSw0LDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLAorICAgIDAsMTE0LDE1LDAsMCwwLDIxOCwzLDEwOSwxMTUsMTAzLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4MCwwLDAsMCw3NSwKKyAgICAyLDAsMCwxMTUsMzIsMCwwLDAsMCwyLDYsMSw4LDEsMTAsMSwKKyAgICAxNiwxLDEwLDEsMTIsMSwxMCwxLDEwLDEsMTQsMiwxNCwxLDQsMSwKKyAgICAxNCwxLDEyLDQsMTQsMiwyMiwxLDExNCw4MCwwLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjA2LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNCwwLDEwNiwKKyAgICAyLDEzMSwxLDEsMCwxMTYsMywxMDYsNCwxMjQsMCwxMDYsMiwyNSwwLDEyNSwKKyAgICAxLDExNiw1LDEyNCwxLDEwMCwxLDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwKKyAgICA3NiwxMjEsMTIsMTI0LDAsMTA2LDAsMTI0LDEsOTUsNiw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDcsMTA3LDEwLDExNCw3NCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAyLDg4LDAsMTE2LDUsMTI0LDEsMTAwLDIsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LAorICAgIDgsMTE0LDE1NCwxMjEsNDAsMTI0LDEsMTA2LDgsMTI0LDEsOTUsOSwxMTYsMTAsMTI0LAorICAgIDEsMTAwLDMsMTMxLDIsMTE1LDEzMCwxMjQsMCwxMDYsMiwxMDYsMTEsMTAwLDQsMTMxLAorICAgIDEsMTAwLDUsMjUsMCwxMjQsMSw5NSw5LDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgNywxMDcsMTAsMTE0LDE1MiwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTE2LDUsMTI0LDEsMTAwLDYsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LAorICAgIDIwMiwxMjEsMTAsMTI0LDAsMTI0LDEsOTUsMTIsODcsMCwxMTAsMjAsNCwwLDExNiwKKyAgICA3LDEwNywxMCwxMTQsMjAwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsCisgICAgMCwxMjQsMSw4MywwLDQxLDcsNzgsMTE0LDg1LDAsMCwwLDExNCwxMzAsMCwKKyAgICAwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTE3LDAsMCwwLDExNCwxOSwwLDAsCisgICAgMCwxMTQsODksMCwwLDAsNDEsMTMsMTE0LDkzLDAsMCwwLDExNCwxMzgsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MCwwLDAsMCwKKyAgICAxMTQsMSwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICAxMTgsMCwwLDAsMTE0LDg5LDAsMCwwLDQxLDIsMTE0LDgyLDAsMCwwLAorICAgIDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LAorICAgIDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMDAsCisgICAgMiwwLDAsMTE1LDQwLDAsMCwwLDAsNCwxNCwyLDEyLDEsMTYsMSwKKyAgICAyLDEsMTIsMSwxNCwxLDYsMSwxNiwxLDIsNCw4LDEsMTAsMSwKKyAgICAyMiwxLDE0LDEsNiwxLDE2LDEsMiwxLDEwLDEsMTQsMSw2LDEsCisgICAgMTE0LDE0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDEwMCwwLDEwNyw5LDExNCwzMCwxMTYsMSwxMjQsMCwxMDYsMCwxMDAsCisgICAgMSwxMzEsMiwxMTUsMzAsMTE2LDIsMTI0LDAsMTMxLDEsODMsMCwxMTYsMywxMjQsCisgICAgMCwxMzEsMSwxMjUsMSwxMTYsNCwxMjQsMSwxMzEsMSwxNDMsNTQsMSwwLDEyNCwKKyAgICAwLDEwNiwwLDEwMCwwLDEwNyw4LDExNCw4NCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsCisgICAgOCwxMTQsOTYsMTE2LDYsMTAwLDIsMTI0LDAsMTA2LDcsMTAwLDMsMTQxLDIsMTMwLAorICAgIDEsMTEwLDEyLDEyNCwwLDEwNiwwLDEwNiw4LDEyNCwxLDEzMSwxLDEsMCw4NywKKyAgICAwLDEwMCwwLDgxLDAsODIsMCw4OCwwLDExNiw5LDEwNiwxMCwxMjQsMCwxMDYsCisgICAgNywyNSwwLDgzLDAsNDEsNCw3OCwxMTQsMTM1LDAsMCwwLDEyMiwxNCwxMDksCisgICAgMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwxLDExNCwKKyAgICAxNSwwLDAsMCw0MSwxMSwxMTQsOTMsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDE0MCwwLDAsMCwxMTQsMTM2LDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsCisgICAgMTA2LDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNSwKKyAgICAwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDQxLDIsMTE0LAorICAgIDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsCisgICAgMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDEyOSwyLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsMCwyLDEwLDIsMTIsMSw4LDIsOCwxLDEwLDEsMTAsMSwxMCwKKyAgICAxLDE2LDMsMjIsNSwxMTQsMTQxLDAsMCwwLDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDM4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEsMCwxMTYsMiwxMjQsMCwKKyAgICAxMDYsMywxMzEsMSwxNDMsMTAsMSwwLDExNiw0LDEyNCwwLDEzMSwxLDgzLDAsCisgICAgODEsMCw4MiwwLDg4LDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxOTEsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwMCwKKyAgICAxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsCisgICAgMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsCisgICAgMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLAorICAgIDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LAorICAgIDExNCw0NiwwLDAsMCwxMTQsMTM3LDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDE0MSwwLDAsMCw0MSwxLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTUyLDIsMCwwLDExNSw2LDAsMCwwLDAsOSw4LAorICAgIDEsMTIsMSwxMTQsODEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsMTM2LDAsCisgICAgMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMSw0LAorICAgIDEwMCwyLDEwMCwzLDEzMiwwLDEzMSwxLDkwLDUsMTAxLDYsMTAwLDE5LDEwMCw1LAorICAgIDEwMCw2LDEzMiwxLDEzMSwxLDkwLDcsMTAxLDYsMTAwLDIwLDEwMCw3LDEwMCw4LAorICAgIDEzMiwxLDEzMSwxLDkwLDgsMTAxLDYsMTAwLDksMTAwLDEwLDEzMiwwLDEzMSwxLAorICAgIDkwLDksMTAxLDYsMTAwLDExLDEwMCwxMiwxMzIsMCwxMzEsMSw5MCwxMCwxMDEsNiwKKyAgICAxMDEsMTEsMTAwLDEzLDEwMCwxNCwxMzIsMCwxMzEsMSwxMzEsMSw5MCwxMiwxMDEsNiwKKyAgICAxMDEsMTEsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSwxMzEsMSw5MCwxMywxMDEsNiwKKyAgICAxMDEsMTEsMTAwLDE3LDEwMCwxOCwxMzIsMCwxMzEsMSwxMzEsMSw5MCwxNCwxMDEsNiwKKyAgICAxMDEsMTUsMTMxLDEsOTAsMTYsMTAwLDQsODMsMCw0MSwyMSwyMTgsMTUsNjYsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsCisgICAgMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLAorICAgIDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSwKKyAgICA5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLAorICAgIDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTMxLDEsODMsMCw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKKyAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDI0LDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDk4LDExNywxMDUsMTA4LAorICAgIDExNiw0NSwxMDUsMTEwLDQxLDYyLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDQxLDEsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NiwwLDAsMCwxNzcsMiwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDQ0LDAsMCwwLAorICAgIDEyNCwyLDEwMCwwLDEwNyw5LDExNCwxMiwxMDAsMCw4MywwLDExNiwwLDEwNiwxLAorICAgIDEyNCwxLDEzMSwxLDExNCwzNiwxMTYsMiwxMjQsMSwxMjQsMCwxMDAsMSwxMDAsMiwKKyAgICAxNDEsMyw4MywwLDEwMCwwLDgzLDAsMTAwLDAsODMsMCw0MSwzLDc4LDEyMiwKKyAgICA4LDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQxLDEsMTE0LDEwMywwLDAsMCwKKyAgICA0MSwzLDExNCw0NiwwLDAsMCw5MCwxMCwxMDUsMTE1LDk1LDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDExNCw3OCwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwxMTUsMTE0LAorICAgIDcxLDAsMCwwLDIxOCw0LDExMiw5NywxMTYsMTA0LDIxOCw2LDExNiw5NywxMTQsMTAzLAorICAgIDEwMSwxMTYsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDE4NiwyLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDgsMSw0LDEsMTAsMSwxNCwyLDEyMiwKKyAgICAyNSw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDMwLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDEyNSwzLAorICAgIDEyNCwzLDEwMCwxLDEwNyw5LDExNCwyNiwxMjQsMywxMDYsMSw4MywwLDEwMCwxLAorICAgIDgzLDAsNDEsMiwxMjIsMTc1LDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LAorICAgIDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsCisgICAgMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLAorICAgIDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsCisgICAgMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsCisgICAgNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCisgICAgNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQ2LDAsMCwwLDExNCw5MywwLAorICAgIDAsMCw0MSw0LDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxNDQsCisgICAgMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTk1LDIsMCwwLDExNSw0LDAsMCwwLDAsOSwxMiwKKyAgICAxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwxLDEwNiwwLDExNiwxLDEwNiwyLAorICAgIDEwNyw3LDExNCwzNCwxMTYsMywxMDAsMSwxMDYsNCwxMjQsMSwxMDYsMCwxMzEsMSwKKyAgICAxMjQsMSwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsNSwxMTYsNiwxMDYsNywKKyAgICAxMjQsMSwxMzEsMiw4MywwLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICAzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwKKyAgICA5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsCisgICAgMTQsMCwwLDAsMTE0LDY5LDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMzgsCisgICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLDAsMCw5MCwxNCw5OSwKKyAgICAxMTQsMTAxLDk3LDExNiwxMDEsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzQsMCwwLDAsMjA3LDIsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMywxMiwxLDEyLDEsMTAsMSwxMjIsMjksCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwxMDYsMiwxMjQsMSwxMzEsCisgICAgMiwxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLAorICAgIDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc4LDQxLDMsMTE0LDU4LDAsMCwwLDExNCw0NiwwLDAsMCw5MCwxMiwKKyAgICAxMDEsMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwyNiwKKyAgICAwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEzNSwwLDAsMCwyMTUsMiwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsCisgICAgMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsCisgICAgMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjIwLDIsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwKKyAgICA1Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwKKyAgICAyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDIyNiwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDQsMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Miw4MiwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCisgICAgOTcsMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwKKyAgICAxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMTE0LDEwNSwwLDAsMCwyMzIsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgNDEsMiw3OCw3OCw0MSwxLDc4LDQxLDE3LDExNCwxLDAsMCwwLDExNCwwLAorICAgIDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsCisgICAgMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDg2LDAsMCwwLAorICAgIDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTQ2LDAsCisgICAgMCwwLDExNCwxNDcsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwKKyAgICAwLDExNCw3NCwwLDAsMCwxMTQsMTQ4LDAsMCwwLDExNCwxNDksMCwwLDAsCisgICAgMTE0LDEwNSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDEzOCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDE0MiwwLDAsMCwxNjgsMiwwLDAsMTE1LDMwLDAsMCwKKyAgICAwLDgsNyw0LDIsMTIsOSwyLDEsMTIsOCwyLDEsMTIsMTEsMTIsCisgICAgOCwxMiw1LDIsMSwxNCw1LDIsMSwxNCw1LDIsMSwxNCw1LDExNCwKKyAgICAxNDIsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsMTQwLDAsMCwwLDEwMSwwLAorICAgIDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMSw0LDEwMCwyLDEwMCwzLAorICAgIDEzMiwwLDEzMSwxLDkwLDUsMTAxLDYsMTAwLDIxLDEwMCw1LDEwMCw2LDEzMiwxLAorICAgIDEzMSwxLDkwLDcsMTAxLDYsMTAwLDIyLDEwMCw3LDEwMCw4LDEzMiwxLDEzMSwxLAorICAgIDkwLDgsMTAxLDYsMTAwLDksMTAwLDEwLDEzMiwwLDEzMSwxLDkwLDksMTAxLDQsCisgICAgMTAwLDExLDEwMCwxMiwxMzIsMCwxMzEsMSw5MCwxMCwxMDEsNiwxMDAsMTMsMTAwLDE0LAorICAgIDEzMiwwLDEzMSwxLDkwLDExLDEwMSw2LDEwMSwxMiwxMDAsMTUsMTAwLDE2LDEzMiwwLAorICAgIDEzMSwxLDEzMSwxLDkwLDEzLDEwMSw2LDEwMSwxMiwxMDAsMTcsMTAwLDE4LDEzMiwwLAorICAgIDEzMSwxLDEzMSwxLDkwLDE0LDEwMSw2LDEwMSwxMiwxMDAsMTksMTAwLDIwLDEzMiwwLAorICAgIDEzMSwxLDEzMSwxLDkwLDE1LDEwMCw0LDgzLDAsNDEsMjMsMjE4LDE0LDcwLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDIsNzcsMTAxLAorICAgIDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCiAgICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKICAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCkBAIC0xMjI5LDc2MCArMTIyMiw2MDEgQEAKICAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICA5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwKICAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwKLSAgICAxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwKLSAgICAxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwKLSAgICAxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LAotICAgIDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwKLSAgICAwLDAsMCw0MSwxLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTk1LDIsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsCi0gICAgMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTYsMCwxMDAsMCwwLAotICAgIDgzLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDUwLDAsCi0gICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwKLSAgICAyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDMsNzgsMTE0LDEwNywKLSAgICAwLDAsMCwxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwzLDExNCwKLSAgICA1NywwLDAsMCw5MCwxMCwxMDUsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAotICAgIDExNCw4NSwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwxMTUsMTE0LDc4LDAsMCwKLSAgICAwLDIxOCw0LDExMiw5NywxMTYsMTA0LDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwxMTYsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDIwNCwyLDAsMCwxMTUsMTAsMCwKLSAgICAwLDAsMCwyLDEyLDEsNCwxLDE1LDEsMTksMiwxMjIsMjUsNjYsMTE3LAotICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsCi0gICAgMywwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzUsNzAsMTA1LAotICAgIDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTAyLDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwKLSAgICAxMDEsMTE0LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLAotICAgIDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsCi0gICAgMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKLSAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAotICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLAotICAgIDExNCwxNTQsMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsCi0gICAgMCwxMTQsNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsODgsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTMsMiwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNywwLDExNCwKLSAgICA1MSwwLDExNiwzLDAsMTAwLDEsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDAsCi0gICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwxLDEsCi0gICAgMTMwLDEsMCwxMTYsNSwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAotICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKLSAgICAyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwKLSAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMzgsMCwwLDAsMjI1LDIsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMywxOCwxLDIxLDEsMTIsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAotICAgIDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsOTcsCi0gICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzgsNDEsMywxMTQsNjUsMCwwLDAsMTE0LDU3LDAsMCwwLDkwLDEyLDEwMSwKLSAgICAxMjAsMTAxLDk5LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsCi0gICAgMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwwLDIzMywyLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDMsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsCi0gICAgODMsNDEsMiwxMjIsNTcsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICAzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsCi0gICAgMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwyMzgsMiwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw0LDEyMiwyNCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDU2LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICAxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDEwLDAsMCwwLDQxLDIsCi0gICAgMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMjQ0LDIsMCwwLDExNSwyLDAsMCwwLDAsNCwKLSAgICAxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDUyLDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywKLSAgICAxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywKLSAgICAxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAotICAgIDExNSw0Niw3MCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCwKLSAgICA3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsMTA5LDAsMCwwLDI1MCwyLDAsMCwxMTUsMiwwLDAsCi0gICAgMCwwLDQsMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwyMTgsMTIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDExNCw5MiwwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwKLSAgICAxMzgsMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDE1NiwKLSAgICAwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDkwLDAsCi0gICAgMCwwLDExNCwxNDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTAsMCwwLDAsCi0gICAgMTg2LDIsMCwwLDExNSwzMCwwLDAsMCwxMiw3LDYsMiwxOCw5LDMsCi0gICAgMSwyMSw4LDMsMSwxOCwxMSwxOCw4LDE4LDUsMywxLDIxLDUsMywKLSAgICAxLDIxLDUsMywxLDIxLDUsMTE0LDE1MCwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSwyMTEsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwwLDEwMCw0LDAsCi0gICAgMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDIsMCwxMzEsMSwwLDkwLAotICAgIDcsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwxLAotICAgIDAsMTMxLDEsMCw5MCw4LDAsMTAxLDYsMCwxMDAsOSwwLDEwMCwxMCwwLAotICAgIDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTEsMCwxMDAsCi0gICAgMTIsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNiwwLDEwMCwxMywKLSAgICAwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw2LDAsCi0gICAgMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsOTAsMTMsMCwxMDEsNiwwLDEwMSwxMiwwLDEwMCwxNywwLDEwMCwxOCwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwKLSAgICAxMDEsMTIsMCwxMDAsMTksMCwxMDAsMjAsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxNSwwLDEwMCw0LDAsODMsNDEsMjEsMjE4LDE0LDcwLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDIsNzcsMTAxLDExNiwKLSAgICA5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLAotICAgIDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsCi0gICAgOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLAotICAgIDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LAotICAgIDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAotICAgIDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LAotICAgIDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsMCwwLDAsCi0gICAgNDEsMSwyMTgsMSwxMDksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDEyLDMsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LAotICAgIDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDUsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDM0LDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwyLDEsODMsMTAwLDAsMCwKLSAgICA4MywxMDAsMCwwLDgzLDQxLDMsNzgsMTE0LDEwNywwLDAsMCw5MCw2LDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDMsMTE0LDU3LDAsMCwwLDExNCw4MiwwLDAsCi0gICAgMCwxMTQsODUsMCwwLDAsNDEsNCwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLAotICAgIDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NCwwLDAsMCwKLSAgICAyMSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTUsMSwxOSwyLDEyMiwKLSAgICAyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjMsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTQsCi0gICAgMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsOTMsNzAsMTA1LAorICAgIDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLAorICAgIDgzLDAsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsCisgICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSwKKyAgICA2Miw0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsMCw0MSwxLDIxOCwKKyAgICAxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsODYsMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLAorICAgIDExNCwyNCwxMTYsMiwxMjQsMSwxMjQsMCwxMDAsMSwxMDAsMiwxNDEsMyw4MywwLAorICAgIDEwMCwwLDgzLDAsMTAwLDAsODMsMCw0MSwzLDc4LDkwLDYsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsNDEsMSwxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDQ2LDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwxMTQsMTQzLDAsCisgICAgMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxNDUsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE0NiwwLDAsMCwzLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwKKyAgICAxMCwxLDE0LDIsMTIyLDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxOCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwKKyAgICAxMTQsMTQsMTI0LDAsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDkzLDcwLDEwNSwKICAgICAxMTAsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKICAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCiAgICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAogICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLAogICAgIDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw1NywKLSAgICAwLDAsMCwxMTQsODIsMCwwLDAsNDEsMywxMTQsMTUxLDAsMCwwLDExNCwKLSAgICA3OCwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTUsMCwwLDAsMjgsMywwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDQ2LAorICAgIDAsMCwwLDExNCw3NSwwLDAsMCw0MSwzLDExNCwxNDMsMCwwLDAsMTE0LAorICAgIDcxLDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NywwLDAsMCwxMCwzLDAsCiAgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCiAgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCiAgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LAorICAgIDgzLDAsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LAogICAgIDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsCiAgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsODgsMCwKKyAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw4MiwwLAogICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMTM4LDAsMCwwLDM3LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKKyAgICAwLDExNCwxMzQsMCwwLDAsMTksMywwLDAsMTE1LDAsMCwwLDAsMTIyLAogICAgIDI4LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAogICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsCiAgICAgMCwwLDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwKLSAgICAxMjUsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LAotICAgIDU0LDAsMTE2LDQsMCwxMDAsMSwwLDEwNiw1LDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTE2LDYsMCwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLDAsMTE2LAotICAgIDgsMCwxMjQsMiwwLDEyNCwwLDAsMTA2LDksMCwxMzEsMiwwLDEsMTAwLAotICAgIDAsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLAotICAgIDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSwxMCwxMTQsOTUsMCwwLDAsMTE0LAotICAgIDE1LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDc3LAotICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNjUsMCwwLDAsMjE4LDE3LDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsNywwLDAsMCw0MSwzLDExNCw4OSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsCi0gICAgMCw0MSwzLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEyLDEsMTUsMSwKLSAgICAxOCwxLDksMSwxOCwxLDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDEsMTIyLDk1LDc2LDExMSw5NywKLSAgICAxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAotICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsOTAsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ2LAotICAgIDAsMCwwLDUwLDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsCi0gICAgNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LAotICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICA4Myw0MSwxLDEyMiw0NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDAsMCwxMTUsNjQsMCwwLDAsMTI0LDAsMTA2LDAsMTA2LDEsMTI1LDEsMTE2LAorICAgIDIsMTA2LDMsMTI0LDEsMTMxLDEsMTE1LDM2LDExNiw0LDEwMCwxLDEwNiw1LDEyNCwKKyAgICAxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDExNiw2LDExNiwyLDEwNiwKKyAgICA3LDEyNCwxLDEzMSwyLDEyNSwyLDExNiw4LDEyNCwyLDEyNCwwLDEwNiw5LDEzMSwKKyAgICAyLDEsMCwxMDAsMCw4MywwLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LAorICAgIDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLDAsNDEsMTAsCisgICAgMTE0LDg5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDc1LDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDU4LAorICAgIDAsMCwwLDIxOCwxNywxMDMsMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLAorICAgIDAsNDEsMywxMTQsODMsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LAorICAgIDExMSwxMDAsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwxMzUsMCwwLDAsMjMsMywwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsMiw4LDEsMTAsMSwxMCwxLDgsMSwxMiwxLDEyMiwyNiw3MCwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSwKKyAgICA5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAorICAgIDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDEsMTIyLDk1LAorICAgIDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLAorICAgIDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsCisgICAgMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsCisgICAgMSwxMTQsODQsMCwwLDAsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTM4LDAsMCwwLDMyLDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsODMsCisgICAgMCw0MSwxLDEyMiw0NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0Niw0MSwyLDExNCw1NywwLDAsMCwxMTQsMTYyLDAsMCwwLDQxLDIsCi0gICAgMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NiwwLDAsMCw1OSwzLAorICAgIDEwMSw0Niw0MSwyLDExNCw0NiwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDIsCisgICAgMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0OCwwLDAsMCw0MSwzLAogICAgIDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDIzLDcwLDExNCwxMTEsMTIyLDEwMSwKICAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKICAgICAxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAogICAgIDQxLDIsMTIyLDU0LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCiAgICAgOTcsMTE1LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAogICAgIDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsCiAgICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDEwLDAsMCwwLAotICAgIDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NywwLDAsMCwKLSAgICA2NSwzLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsCisgICAgNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ5LDAsMCwwLAorICAgIDQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKICAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCiAgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAotICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKLSAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCi0gICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCi0gICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAotICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwKKyAgICAxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSw4MywwLDQxLDEsMTIyLDQ2LDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwyLDExNCw0NiwKKyAgICAwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsCiAgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwyMywwLDAsMCw4NCwzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDIsMTIyLDI4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsCi0gICAgMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LAotICAgIDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiw2MCw4MiwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCi0gICAgOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLDExMSwxMDIsCi0gICAgMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsOTksMTAxLAotICAgIDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCw0MSw0LDExNCwxOSwwLDAsMCw5MCw4LDEwMSwxMjAsOTksCi0gICAgOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsCi0gICAgOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLAotICAgIDAsMCwwLDg4LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsCi0gICAgOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwKLSAgICAxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLAotICAgIDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsCi0gICAgMCwwLDExNCwyMywwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDExNCwxNjUsMCwwLDAsODAsMywwLDAsMTE1LDYsMCwwLDAsMTIsMiwKLSAgICA2LDIsMTIsNCwxMTQsMTY1LDAsMCwwLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LAotICAgIDAsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLAotICAgIDIsMCwyNCwxMzEsMiwwLDEyNSwzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwKLSAgICAxLDAsMTI0LDIsMCwxMDcsMCwwLDExNCw1MiwwLDExNiwyLDAsMTAwLDMsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LAotICAgIDAsMTI0LDAsMCwxMTQsODQsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwKLSAgICAxMjQsMCwwLDEzMSwyLDAsODMsMTI0LDQsMCw4Myw0MSw2LDEyMiw1MCw4MiwKLSAgICAxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsCi0gICAgNDYsMTE0LDEyMSwwLDAsMCwxMTQsNDUsMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwKLSAgICAxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LAotICAgIDMzLDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDIxOCw2LDExNCwKLSAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwzLDEwOCwxMDEsMTEwLDIxOCwxMCw4Niw5NywxMDgsMTE3LAotICAgIDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDUsMTE0LDE1LDAsCi0gICAgMCwwLDIxOCw3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMTgsNSwxMDgsMTAxLDExOCwKLSAgICAxMDEsMTA4LDkwLDQsOTgsMTA1LDExNiwxMTUsOTAsNCw5OCw5NywxMTUsMTAxLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwKLSAgICAxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTMsMywwLDAsCi0gICAgMTE1LDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTIsMSwxMCwxLDExNCwKLSAgICAxNzEsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsCi0gICAgMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDAsMCw4MywKLSAgICAxMTYsMSwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsNzgsCi0gICAgNDEsMiwxMTQsMTU1LDAsMCwwLDExNCw4NSwwLDAsMCw0MSw0LDIxOCw2LAotICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLAotICAgIDExNCw5OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSwxMDIsMywwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCwzLDE4LDEsMTIsMSw0LDEsMTE0LDE3MywwLDAsMCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsOSwwLDAsMCwyNywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNDIsMSwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsCi0gICAgMTI0LDAsMCwxMTYsMCwwLDEwNiw1LDAsMTA3LDYsMCwxMjUsMywwLDEyMCwKLSAgICAyMzUsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsMjIwLDAsMTI1LDQsMCwxMTYsCi0gICAgNiwwLDEzMSwwLDAsMTQzLDkwLDAsMSwxMjEsMTMsMCwxMjQsNCwwLDEwNiwKLSAgICA3LDAsMTI1LDUsMCw4NywxMTAsNTEsMCw0LDExNiw4LDAsMTA3LDEwLDAsCi0gICAgMTE0LDE0OCwwLDEsMSwxLDExNiw5LDAsMTI0LDQsMCwxMjQsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDMsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDEsMCwxMDcsOCwKLSAgICAwLDExNCwxNDQsMCwxMTksNjYsMCw4OSwxMTAsMTksMCw4OCwxMjQsNSwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDYsMCw4NywxMDAsCi0gICAgMSwwLDgxLDgyLDg4LDEyNCw2LDAsMTAwLDEsMCwxMDcsOSwwLDExNCw2NiwKLSAgICAwLDEyNCwzLDAsMTIsMTE0LDI2LDEsMTI0LDAsMCwxMTYsMCwwLDEwNiw1LAotICAgIDAsMTA3LDYsMCwxMTQsMjYsMSwxMTYsMCwwLDEwNiw1LDAsMTI0LDAsMCwKLSAgICAyNSwxMjUsNywwLDEyMSwxMywwLDEyNCw3LDAsMTA2LDEwLDAsMTI1LDgsMCwKLSAgICA4NywxMTAsMjIsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIsMSwxLDEsCi0gICAgMSwxMjQsNiwwLDgzLDg5LDExMywzMCwxLDg4LDEyNCw4LDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxOSwxLDEyNCw2LDAsODMsMTI0LDgsMCw4MywxMTMsNjYsCi0gICAgMCwxMjQsNiwwLDgzLDExMyw2NiwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKLSAgICA4Myw0MSwzLDEyMiwyMyw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0Niw3OCwxMjIsMjIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDQxLDExLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLAotICAgIDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTQxLDAsMCwwLDExNCwxNDIsMCwwLAotICAgIDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKLSAgICAxMTQsMjEsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwKLSAgICA5NiwwLDAsMCwxMTQsMTczLDAsMCwwLDExNCw5NSwwLDAsMCw0MSw5LAotICAgIDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTMsMCwwLDAsOTAsCi0gICAgOSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTU0LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDk1LAorICAgIDAsMTE0LDEwNSwwLDAsMCw1MywzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDQsMTIyLDI1LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsNzgsNzgsCisgICAgNDEsMSw3OCw0MSwxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsCisgICAgMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCw4NiwKKyAgICAwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE0NywwLAorICAgIDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDEzOCwwLDAsCisgICAgMCwxMTQsNzcsMCwwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLAorICAgIDExNCwxMDUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTIsMCwwLDAsMjQxLDIsCisgICAgMCwwLDExNSwzMCwwLDAsMCw4LDcsNCwyLDEyLDksMiwxLDEyLAorICAgIDYsMiwxLDEyLDgsMTIsNCwxMiw5LDEyLDksMiwxLDE0LDUsMiwKKyAgICAxLDE0LDUsMiwxLDExNCwxNTIsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgMzIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsCisgICAgMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LAorICAgIDEwMCw2LDgzLDAsNDEsNywyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwKKyAgICAxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwKKyAgICAxMDEsMTIwLDExNiwzMiwxMDksOTcsMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDI0LDY1LDk5LDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsNDYsNzgsNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCw0MSwKKyAgICAxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsNDgsMCwwLDAsNjYsMywwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwyLDEyMiwyOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSwKKyAgICA5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw2MCw4MiwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLAorICAgIDExMSwxMDIsMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsCisgICAgOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwKKyAgICAwLDExNCw0NywwLDAsMCw0MSw0LDExNCwyNiwwLDAsMCw5MCw4LDEwMSwKKyAgICAxMjAsOTksOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LAorICAgIDExNywxMDEsOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwKKyAgICAxMDcsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDcwLDMsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMjIsMjcsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LAorICAgIDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwKKyAgICAzLDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDEwLAogICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTExLDMsCi0gICAgMCwwLDExNSw0OCwwLDAsMCwwLDIsMjUsMSwxNiw0LDE1LDEsMTYsCi0gICAgMSwxMCwxLDMsMSwxMywxLDEzLDEsMTgsMSwxMiwxLDgsMiwyNSwKLSAgICAxLDEyLDIsMjIsMSwxMywxLDMsMSwxMywxLDEzLDQsOSwyLDEyLAotICAgIDEsNCwyLDcsMiw4LDIsMTE0LDE3NiwwLDAsMCw5OSwzLDAsMCwKLSAgICAwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxODUsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDExNiwxLDAsMTMxLAotICAgIDIsMCwxMTUsNDIsMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMjQsMiwwLDEwMCwyLDAsMTA3LDAsMCwxMTQsNjYsMCwxMTYsNSwwLDEwMCwKLSAgICAzLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsNCwKLSAgICAwLDExNCwxNTAsMCwxMTYsMCwwLDEyNCwxLDAsMTE2LDEsMCwxMzEsMiwwLAotICAgIDExNSwxMDgsMCwxMTYsMiwwLDEwMCw0LDAsMTMxLDEsMCwxMzAsMSwwLDExMCwKLSAgICA0MiwwLDEyNCwxLDAsMTE2LDYsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDE1MCwKLSAgICAwLDEwMCw1LDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwzLDAsMTA2LDMsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTIsCi0gICAgMTE0LDE4MSwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCwxODEsMCwxMTYsCi0gICAgNSwwLDEwMCw2LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw3LDAsODMsNDEsCi0gICAgOCwxMjIsMjgsODYsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLAotICAgIDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMzQsMTE1LDk3LDExMCwxMDEsMzQsNDYsMTIyLAotICAgIDMxLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsMTE1LDExNiwxMTQsNDQsMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwKLSAgICAxMTQsMzMsMCwwLDAsMTIyLDE4LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExNywxMTUsCi0gICAgMTE2LDMyLDk4LDEwMSwzMiw2Miw2MSwzMiw0OCwxMjIsMzEsOTUsOTUsMTEyLDk3LDk5LAotICAgIDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMDEsMTE2LDMyLDExNiwKLSAgICAxMTEsMzIsOTcsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTIyLDYxLDgwLDk3LDExNCwxMDEsCi0gICAgMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDQ0LDMyLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKLSAgICAxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEyMiwxNyw2OSwxMDksMTEyLDExNiwxMjEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNzgsNDEsOSwyMTgsCi0gICAgMTAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwKLSAgICAyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLAotICAgIDExNCwxMywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsCi0gICAgMjEsMCwwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDQxLDQsMTE0LDE1LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LAotICAgIDk5LDEwNCwxMDEsOTksMTA3LDE1MSwzLDAsMCwxMTUsMjQsMCwwLDAsMCwyLAotICAgIDE1LDEsMjcsMSwxMiwxLDEyLDEsMTIsMSwxNSwxLDE1LDEsMTUsMSwKLSAgICA2LDIsMjEsMSwxOSwxLDExNCwxODEsMCwwLDAsMTIyLDE2LDc4LDExMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLAotICAgIDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDQwLDEsMCwwLDEwMCwwLDAsCi0gICAgMTI1LDIsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMjUsMTI1LDMsMCwxMjQsMywwLDExNCwxNzUsMCwxMjQsMywwLDExNiwKLSAgICAxLDAsMTA2LDIsMCwxMDcsNywwLDExNCw1OSwwLDExNiwzLDAsMTI0LDEsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsMSwxMjQsMCwwLDExNiwxLDAsMTA2LDIsCi0gICAgMCwxMDcsNiwwLDExNCw4NSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMCwwLAotICAgIDI1LDgzLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTIxLAotICAgIDEzLDAsMTI0LDQsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLDYxLDAsNCwKLSAgICAxMTYsNSwwLDEwNywxMCwwLDExNCwxNzQsMCwxLDEsMSwxMTYsNiwwLDEwMCwKLSAgICAzLDAsMjMsMTA2LDcsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsCi0gICAgNSwwLDExNiw4LDAsMTI0LDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMSwxMDAsMCwwLDEzMCwyLDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCwKLSAgICAwLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDIzMiwwLDExNiw4LDAsMTE2LDYsMCwxMDYsNywwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsCi0gICAgMSwwLDExMCwxMiwwLDExNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywKLSAgICAwLDEyNCwzLDAsMTE0LDM2LDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsCi0gICAgMjUsMTI1LDQsMCwxMTYsMTEsMCwxMjQsNCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMDAsMSwwLDEzMSwxLDAsMTAwLDUsMCwyNSwxMjQsNywwLDEzMSwzLDAsCi0gICAgMSwxMjQsNywwLDgzLDQxLDYsNzgsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwKLSAgICAwLDAsMTIyLDIzLDU5LDMyLDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwxNSwwLDAsMCwKLSAgICAxMTQsMTQwLDAsMCwwLDQxLDEyLDExNCwxMjIsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDEzMSwwLDAsMCwKLSAgICAxMTQsOTYsMCwwLDAsMjE4LDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LAotICAgIDUwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxNDksCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LAotICAgIDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE0LDE1MiwwLDAsMCwxMTQsMTIzLDAsCi0gICAgMCwwLDkwLDEzLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTE0LDE0NywwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwKLSAgICAxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTcxLDMsMCwwLDExNSw0MiwwLDAsCi0gICAgMCwwLDEsNiwxLDE5LDEsNiwxLDE1LDEsMTMsMiwxNSwxLDExLAotICAgIDEsMTMsMSwzLDEsMTMsMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLAotICAgIDEsMzAsMiwxMiwxLDYsMiwxMywxLDI5LDEsMTE0LDE4NCwwLDAsMCwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMzcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMTQzLDE4LDAsMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1NCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwxMTQsNTQsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMTgzLDAsCisgICAgMCwwLDExNCwxNTcsMCwwLDAsNjIsMywwLDAsMTE1LDYsMCwwLDAsCisgICAgOCwyLDQsMiw4LDQsMTE0LDE1NywwLDAsMCw5OSwzLDAsMCwwLAorICAgIDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw2NCwwLDAsMCwxMjQsMSwxMDYsMCwxMDAsMSwxMjQsMiwxMDAsMiwyNCwKKyAgICAwLDEzMSwyLDEyNSwzLDExNiwxLDEyNCwzLDEzMSwxLDEyNCwyLDEwNywwLDExNCwKKyAgICAzNiwxMTYsMiwxMDAsMywxMzEsMSwxMzAsMSwxMjQsMywxMDAsNCwyNSwwLDEyNSwKKyAgICA0LDEyNCwwLDExNCw2MCwxMDAsNSwxMDYsMywxMjQsNCwxMjQsMCwxMzEsMiw4MywKKyAgICAwLDEyNCw0LDgzLDAsNDEsNiwxMjIsNTAsODIsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsCisgICAgMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLDk3LDk4LAorICAgIDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLDQ2LDExNCwxMTcsMCwwLDAsCisgICAgMTE0LDMzLDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLAorICAgIDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwKKyAgICAxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwxOSwwLDAsMCwxMjIsNSwKKyAgICAxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsCisgICAgMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCwzOCwwLDAsMCw0MSw1LDExNCwxNSwwLDAsMCwyMTgsNywxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCw0LDk4LDEwNSwKKyAgICAxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsCisgICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDc1LDMsMCwwLDExNSwxMCwwLDAsMCwwLAorICAgIDIsMTYsMSwxMiwxLDgsMSw4LDEsMTE0LDE2MywwLDAsMCw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwKKyAgICAxMzEsMiwxMjUsMywxMjQsMywxMDAsMCwxMDcsOCwxMTQsMjQsMTAwLDAsODMsMCwKKyAgICAxMTYsMSwxMjQsMSwxMjQsMywxMzEsMiw4MywwLDQxLDEsNzgsNDEsMiwxMTQsCisgICAgMTQ3LDAsMCwwLDExNCw3OCwwLDAsMCw0MSw0LDIxOCw2LDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDExNCwxNSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCw5MywwLAogICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwyMTgsMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywKLSAgICAxMDAsMTk4LDMsMCwwLDExNSw0LDAsMCwwLDAsMiwxMywxLDExNCwxODUsCi0gICAgMCwwLDAsMTE0LDMzLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsCi0gICAgMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE2NiwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLAotICAgIDAsMSwxMjQsMiwwLDEwMCwxLDAsMTA3LDQsMCwxMTQsNDYsMCwxMTYsMSwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDAsMCwKLSAgICAxMTYsMiwwLDEwNiwzLDAsMTMxLDAsMCwxLDEyNCwwLDAsMTE2LDQsMCwKLSAgICAxMDYsNSwwLDEwNyw3LDAsMTE0LDg0LDAsMTE2LDYsMCwxMjQsMCwwLDExNiwKLSAgICA3LDAsMTMxLDIsMCw4MywxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwyNSwKLSAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxNTIsMCwxMTYsCi0gICAgMiwwLDEwNiw4LDAsMTMxLDAsMCwxLDEwMCwzLDAsMTA2LDksMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEwMCw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTE2LDExLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEsMTI0LDMsMCw4Myw0MSw1LDk3LDUwLDEsMCwwLDczLAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLAotICAgIDEwMCwzMiwxMTEsMTEwLDMyLDEwNSwxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICA5NywxMDgsMTA4LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLAotICAgIDMyLDEwOSw5NywxMDAsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwKLSAgICAxMDksMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsCi0gICAgMzIsOTksMTExLDEwOSwxMDksMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsCi0gICAgMTE2LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsCi0gICAgMTA4LDEwNSwxMTYsMTIxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LAotICAgIDExMCwxMDAsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LAotICAgIDExNiwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsCi0gICAgMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDEwMCwxMDUsMTAwLDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNCwzMywwLDAsMCw3OCwxMjIsNDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTExLDEwMiwzMiwxMjMsMTI1LDMyLDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLAotICAgIDExMCwxMDEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMTE0LDE1LDAsMCwwLDQxLDEyLDExNCwxODEsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsNTcsMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQsMCwwLAotICAgIDAsMTE0LDIxLDAsMCwwLDExNCwxODUsMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwKLSAgICAxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE0LDU4LDAsMCwwLDExNCw1MCwwLAotICAgIDAsMCwxMTQsNzcsMCwwLDAsMTE0LDYzLDAsMCwwLDQxLDUsMTE0LDE1LAotICAgIDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsODksMCwKLSAgICAwLDAsMTE0LDc0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwxODYsMCwwLDAsMjA0LDMsMCwwLDExNSwKLSAgICAyOCwwLDAsMCwwLDksMTYsMSwxMiwxLDE4LDEsMTAsMSwxNSwxLAotICAgIDEzLDEsMTMsMSwxMiwxLDEwLDEsNiwxLDksMSwxOCwxLDEwLDEsCi0gICAgMTE0LDE4NiwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLAotICAgIDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsMjM5LDAsMCwwLDExNiwKLSAgICAwLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDIzNSwwLDEwMCwyLAotICAgIDAsMTI0LDEsMCwxMDcsNiwwLDExNCw4MywwLDExNiwxLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLAotICAgIDEsMCwxLDExNiwwLDAsMTI0LDAsMCwxMDAsMywwLDEzMSwyLDAsMTE0LAotICAgIDgzLDAsMTI0LDEsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwKLSAgICAwLDEsMTIwLDE0OSwwLDEyNCwxLDAsNjgsOTMsMTQxLDAsMTI1LDMsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDExNSw5MCwwLDEwMCw0LAotICAgIDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEyNSw0LDAsMTIxLDE3LDAsMTE2LDcsMCwxMjQsMiwwLDEyNCw0LDAsMTMxLAotICAgIDIsMCwxLDg3LDExMyw5MCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjMwLAotICAgIDAsMSwxMjUsNSwwLDEsMTIyLDQ3LDAsMTE2LDksMCwxMjQsNSwwLDEzMSwKLSAgICAxLDAsMTA2LDEwLDAsMTE2LDExLDAsMTMxLDEsMCwxMTQsMjA5LDAsMTI0LDUsCi0gICAgMCwxMDYsMTIsMCwxMjQsNCwwLDEwNywyLDAsMTE0LDIwOSwwLDExOSw5MCwwLAotICAgIDEzMCwwLDAsODcsODksMTAwLDUsMCwxMDAsNSwwLDEyNSw1LDAsMTI2LDUsCi0gICAgMCw4OCwxMTMsOTAsMCw4OCwxMTMsOTAsMCw4NywxMjQsMCwwLDgzLDQxLDYsCi0gICAgMTIyLDIzOCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsCi0gICAgMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLAotICAgIDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCwKLSAgICA5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwKLSAgICA5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICA5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNCwxMzEsMCwwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSwKLSAgICA5NSwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTMsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDEzMCwwLDAsMCwyMTgsNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsCi0gICAgMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsMTg4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsCi0gICAgMSwwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNzgsCi0gICAgMCwwLDAsMTE0LDcxLDAsMCwwLDIxOCwxNSw5NSw2OSw4Miw4Miw5NSw3NywKLSAgICA4Myw3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwxMTQsMTUsMCwwLDAsNDEsNiwKLSAgICAxMTQsODksMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsCi0gICAgMTgzLDAsMCwwLDIxOCwxLDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSw5MCwzLDEwMSwxMjAsOTksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsCi0gICAgMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMjgsMywwLDAsMTE1LDM0LDAsMCwKLSAgICAwLDAsMTAsMTUsMSwxMiwxLDEyLDEsMTMsMSwxNSwxLDE2LDEsMTMsCi0gICAgMSwxNSwxLDIxLDEsMywxLDE3LDEsMTgsNCwyMSwxLDE1LDEsMywKLSAgICAxLDI2LDEsMTE0LDE5NCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDY4LDAsMTI0LDAsMCwKLSAgICAxMDAsMywwLDI1LDEyNSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEwNyw3LDAsCi0gICAgMTE0LDY4LDAsMTI0LDEsMCwxMDYsMSwwLDEwMCw1LDAsMTMxLDEsMCwxMDAsCi0gICAgNiwwLDI1LDEyNSwxLDAsMTI0LDEsMCw4Myw0MSw3LDEyMiwxNjcsNjcsOTcsCi0gICAgMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgOTgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LAotICAgIDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsCi0gICAgMTA1LDExMCwxMDEsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwKLSAgICAzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNiwxMTEsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCwKLSAgICA5NywxMTYsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LAotICAgIDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMzQsMCwwLDAsNzgsMTE0LDEsMCwwLDAsCi0gICAgMTE0LDEzMSwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwzMywwLDAsMCw0MSwKLSAgICAyLDExNCw0MiwwLDAsMCwxMTQsMTIyLDAsMCwwLDQxLDIsMjE4LDcsMTAzLAotICAgIDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTQsMTY5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSw5OSw5NywxMDgsCi0gICAgOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDQsNCwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsNywxNSwxLDEyLDEsMTAsMSwxMiwxLAotICAgIDE5LDEsMTE0LDE5NiwwLDAsMCw5OSw1LDAsMCwwLDAsMCwwLDAsCi0gICAgOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLAotICAgIDAsMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDAsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDUsMCwxMTAsNTQsMCwxMjQsMSwwLDEwMCwKLSAgICAyLDAsMTA3LDksMCwxMTQsNDUsMCwxMjQsMSwwLDExMCwzLDAsMTA1LDAsCi0gICAgMCwxMjUsNiwwLDExNiwxLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LDAsCi0gICAgMTE2LDAsMCwxMjQsMCwwLDEyNCw3LDAsMTI0LDQsMCwxMzEsMywwLDEyNSwKLSAgICA1LDAsMTI0LDMsMCwxMTUsMjA3LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywyLAotICAgIDAsMTE0LDEyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLDAsCi0gICAgMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsODMsMTI0LDAsMCwxMTUsMTMyLAotICAgIDAsMTI0LDUsMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMTYsMywKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLDEzMSwxLDAsMTAwLDEsMCwKLSAgICAyNSwxMzEsMSwwLDI0LDEyNSw4LDAsMTE2LDQsMCwxMDYsNSwwLDEyNCw1LAotICAgIDAsMTA2LDYsMCwxMDAsMiwwLDExNiwzLDAsMTI0LDUsMCwxMDYsNiwwLAotICAgIDEzMSwxLDAsMTI0LDgsMCwyNCwxMzMsMiwwLDI1LDI1LDgzLDExMCwxNiwwLAotICAgIDExNiw3LDAsMTI0LDUsMCwxMjQsMywwLDExNiwwLDAsMTMxLDMsMCw4MywKLSAgICAxMDAsMiwwLDgzLDQxLDQsOTcsMjE1LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LAotICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwKLSAgICAxMTcsMTE0LDExNCwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMzIsODQsMTA0LDEwMSwzMiwKLSAgICAzOSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDMyLDEwNSwxMTUsMzIsMTA1LDEwMywxMTAsMTExLDExNCwxMDEsMTAwLDQ2LDMyLDg0LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzksMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwzOSwKLSAgICAzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsMTAxLDExNSwzMiwxMTksMTA0LDk3LDExNiwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMDEsMTIwLDEwNSwxMTUsMTE2LDMyLDk3LDExNSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAotICAgIDExNiwxMDEsMTE1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgNjAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw2Miw5Niw5Niw0MSw0NiwzMiwzMiwKLSAgICA4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMTAsMzIsMzIsMzIsMzIsCi0gICAgOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCi0gICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LDExMCwzMiw5NywzMiwxMTQsMTAxLDEwOCwKLSAgICA5NywxMTYsMTA1LDExOCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwxMDIsMTE0LDExMSwxMDksMzIsNDYsNDYsCi0gICAgMTEyLDEwNywxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDExMSwxMDAsOTYsOTYsCi0gICAgMzIsMTE5LDExMSwxMTcsMTA4LDEwMCwzMiwxMDQsOTcsMTE4LDEwMSwzMiw5NywzMiwzOSwxMDgsCi0gICAgMTAxLDExOCwxMDEsMTA4LDM5LDMyLDExMSwxMDIsMzIsNTAsNDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTE0LDMzLDAsMCwwLDc4LDExNCwxMjEsMCwwLDAsNDEsOCwxMTQsCi0gICAgMTg2LDAsMCwwLDExNCwxOTYsMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LAotICAgIDExNiwxMDUsMTExLDExMCwxMTQsMTY3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCi0gICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDE5NCwwLDAsMCw0MSw5LDExNCwKLSAgICAxNSwwLDAsMCwxMTQsMTk1LDAsMCwwLDIxOCw2LDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSwxMTQsMTkyLDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDkwLDgsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwxMTQsMTY5LDAsMCwwLDkwLAotICAgIDcsOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsOTUsOTUsMTksNCwwLDAsMTE1LDI2LDAsMCwwLDAsMTEsMTIsMSwKLSAgICAxNSwyLDI0LDEsMTIsMSwxOCwxLDYsMywxMiwxLDIzLDEsNiwxLAotICAgIDQsNCwzNSwzLDQwLDIsMTE0LDE5OSwwLDAsMCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw1MywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDQzLDAsCi0gICAgMTE2LDIsMCwxMDAsMSwwLDEyNCwwLDAsMjMsMTMxLDEsMCwxMzAsMSwwLAotICAgIDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDI1LDExMCwKLSAgICAxMTEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDQxLDQsMTE0LDE1MCwwLDAsMCwxMTQsCi0gICAgMTU0LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTQ5LDAsMCwwLDQxLDIsCi0gICAgMTE0LDE1LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsOTUsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDU0LDQsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTYsMSwxMTQsMjAwLAotICAgIDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwKLSAgICAxMiwwLDAsMCw2NywwLDAsMCwxMTUsNzQsMSwwLDAsMTI0LDEsMCwKLSAgICA5NywwLDAsMTI0LDAsMCw5NywxLDAsMTE2LDIsMCwxMTYsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMjAsMTIzLDAsMTE2LDEsMCwxMDYsMywwLDEwNiw0LAotICAgIDAsMTMxLDAsMCw2OCw5MywxMDYsMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwKLSAgICAwLDExNiw1LDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwyLDAsMTE0LDQwLDAsCi0gICAgMTI0LDMsMCwxMTYsMSwwLDEwNiw2LDAsMTA3LDYsMCwxMTQsOTEsMCwxMTYsCi0gICAgNywwLDEyNSw1LDAsMTEwLDI3LDAsMTE2LDAsMCwxMDYsOCwwLDEyNCwzLAotICAgIDAsMTMxLDEsMCwxMTQsNDAsMCwxMTYsOSwwLDEyNSw1LDAsMTEwLDMsMCwKLSAgICAxMTMsNDAsMCwxMTYsMTAsMCwxMjQsNCwwLDEyNCw1LDAsMTMxLDIsMCwxMjUsCi0gICAgNiwwLDExNiwxMSwwLDEyNCw2LDAsMTI0LDQsMCwxMzEsMiwwLDEsMTEzLAotICAgIDQwLDAsODcsMTE2LDEsMCwxMDYsMywwLDExNiwxMiwwLDI1LDEyNSw3LDAsCi0gICAgMTIwLDczLDAsMTAwLDUsMCw2OCw5Myw2NSwwLDEyNSw4LDAsMTI0LDgsMCwKLSAgICAxMTYsMSwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsMjA2LDAsMTE2LDEzLDAsMTI0LAotICAgIDgsMCwxMzEsMSwwLDEyNSw5LDAsMTEwLDEzLDAsMTE2LDEsMCwxMDYsMywKLSAgICAwLDEyNCw4LDAsMjUsMTI1LDksMCwxMTYsMTQsMCwxMjQsNywwLDEyNCw4LAotICAgIDAsMTI0LDksMCwxMzEsMywwLDEsMTEzLDE3MCwwLDg3LDEyMSwxNiwwLDExNiwKLSAgICAxMywwLDEwMCwyLDAsMTMxLDEsMCwxMjUsMTAsMCw4NywxMTAsMjQsMCw0LAotICAgIDExNiwxNSwwLDEwNywxMCwwLDExNCwyNSwxLDEsMSwxLDEwMCwzLDAsMTI1LAotICAgIDEwLDAsODksMTEwLDEsMCw4OCwxMTYsMTQsMCwxMjQsNywwLDEwMCwyLDAsCi0gICAgMTI0LDEwLDAsMTMxLDMsMCwxLDExNiwxMywwLDEwMCw0LDAsMTMxLDEsMCwKLSAgICAxMjUsMTEsMCwxMTYsMTQsMCwxMjQsNywwLDEwMCw0LDAsMTI0LDExLDAsMTMxLAotICAgIDMsMCwxLDEwMCwzLDAsODMsNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LDExMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsMTE1LAotICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKLSAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCi0gICAgMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsCi0gICAgMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LDk5LAotICAgIDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE0LDE0MSwwLDAsMCwxMTQsMzQsMCwwLDAsNzgsCi0gICAgMTE0LDYyLDAsMCwwLDQxLDEsMTE0LDE0MSwwLDAsMCw0MSwxNiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMjEsMCwKLSAgICAwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTc3LDAsMCwwLDExNCw3NiwKLSAgICAwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTYwLDAsCi0gICAgMCwwLDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsMSwwLDAsCi0gICAgMCwxMTQsMjAwLDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NywwLDAsMCwKLSAgICA0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLAotICAgIDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsODgsMCwwLDAsOTAsMTEsMTE1LDEwMSwKLSAgICAxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2MSw0LDAsCi0gICAgMCwxMTUsNTAsMCwwLDAsMCw5LDYsMSw2LDMsMTIsMSwyOCwxLAotICAgIDE1LDEsMTUsMSw5LDEsMTUsMSw5LDIsMywxLDE1LDEsMTcsMywKLSAgICAxMywxLDEzLDEsMTUsMSwxNSwyLDEzLDEsMjAsMywzLDEsMTYsMSwKLSAgICAxMywyLDExLDEsMTYsMywxMiwxLDExNCwyMDQsMCwwLDAsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsODcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw0LDAsCi0gICAgMTMxLDEsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw1LDAsCi0gICAgMTMxLDEsMCwxLDEwMCwxLDAsMTAwLDIsMCwxMDgsNiwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCw5Nyw3LDAsMTI0LDIsMCwxMDYsOCwwLDExNiwxLDAsMTA2LAotICAgIDksMCwxMTYsMTAsMCwyNSwxMzEsMSwwLDEsMTAwLDIsMCw4Myw0MSwzLAotICAgIDEyMiw1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDQ2LDExNCwzMywwLDAsMCw3OCw0MSwxMSwxMTQsMjA0LDAsMCwKLSAgICAwLDExNCwxNCwwLDAsMCwxMTQsMTc0LDAsMCwwLDExNCwxMTMsMCwwLDAsCi0gICAgMTE0LDE1MCwwLDAsMCwxMTQsMTYwLDAsMCwwLDIxOCwyNiw5NSwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwxMTQsMTE5LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsCi0gICAgMTE1LDExNiw5NywxMDgsMTA4LDExNCwyMSwwLDAsMCwxMTQsMSwwLDAsMCw0MSwKLSAgICAzLDExNCwyMDIsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMjA1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKLSAgICAyMDYsMCwwLDAsMTA4LDQsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTMsCi0gICAgMiwxNiwxLDE2LDMsMTIsMSw2LDEsMTE0LDIwNiwwLDAsMCw0MSw1MSwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMiwwLDAsMCwxMTQsCi0gICAgMTYsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNDEsCi0gICAgMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzIsMCwKLSAgICAwLDAsMTE0LDUzLDAsMCwwLDExNCw1NCwwLDAsMCwxMTQsNTYsMCwwLAotICAgIDAsMTE0LDYzLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNzUsMCwwLDAsCi0gICAgMTE0LDgxLDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LAotICAgIDEwMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDg1LAotICAgIDAsMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LDExNiw5MCw5LDk1LDgwLDc5LAotICAgIDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwKLSAgICAxMTQsMTQ0LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsODYsMCwwLDAsMTE0LAotICAgIDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw4NywwLDAsMCwxMTQsMTUwLAotICAgIDAsMCwwLDExNCwxNjAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcxLDAsCi0gICAgMCwwLDExNCwxNzMsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTgxLDAsMCwKLSAgICAwLDExNCwxOTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTg0LDAsMCwwLAotICAgIDExNCwxODUsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwKLSAgICAxOTYsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwyMDQsCi0gICAgMCwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsNjAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsOTYsMCwwLDAsNiwKLSAgICAxNyw2LDIsMTIsOCwxMiw0LDE5LDIwLDYsMiw2LDMsMjIsNCwxOSwKLSAgICA2OCwxOSwyMSwxOSwxOSwxMiwxOSwxMiwxOSwxMiwxMSwxOCw4LDEyLDExLDEyLAotICAgIDEyLDEyLDE2LDEyLDM2LDE5LDI3LDE5LDEwMSwyNCwyNiw5LDMsMTgsNDUsMTgsCi0gICAgNjAsMTIsMTgsMTIsMTcsMTIsMjUsMTIsMjksMTIsMjMsMTIsMTYsMTksNzMsMTksCi0gICAgNzcsMTksMTMsMTIsOSwxMiw5LDE1LDQwLDEyLDE3LDYsMSwxMCwyLDEyLAotICAgIDI3LDEyLDYsMTgsMjQsMTIsMzIsMTIsMTUsMjQsMzUsMTIsNywxMiw0NywKKyAgICAwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTUsMTA4LDEwMSwKKyAgICAxMDMsOTcsOTksMTIxLDg0LDMsMCwwLDExNSw4LDAsMCwwLDAsMywxMiwKKyAgICAxLDgsMSw0LDEsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsMTAsMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI0MiwwLDAsMCwxMTYsMCwxMDYsMSwxMjUsMywxMjQsMywxMDAsMSwxMDcsOCwKKyAgICAxMTQsMjIsMTE2LDIsMTAwLDIsMTMxLDEsMTMwLDEsMTI0LDMsMTE1LDM4LDExNiwzLAorICAgIDEwNiw0LDEwMCwzLDExNiw1LDEzMSwyLDEsMCwxMjQsMCwxMTYsMCwxMDYsNiwKKyAgICAxMDcsNiwxMjUsNCwxMjAsMTg4LDEyNCwzLDY4LDAsOTMsMTc2LDEyNSw1LDExNiw3LAorICAgIDEzMSwwLDE0Myw3MiwxLDAsMTIxLDEwLDEyNCw1LDEwNiw4LDEyNSw2LDg3LDAsCisgICAgMTEwLDQyLDQsMCwxMTYsOSwxMDcsMTAsMTE0LDExOCwxLDAsMSwwLDEsMCwKKyAgICAxMTYsMTAsMTI0LDUsMTI0LDAsMTI0LDEsMTMxLDMsMTI1LDcsMTI0LDcsMTAwLDEsCisgICAgMTA3LDgsMTE0LDExNCwxMTksNTQsODksMCwxMTAsMTQsODgsMCwxMjQsNiwxMjQsMCwKKyAgICAxMjQsMSwxMjQsMiwxMzEsMywxMjUsNyw4NywwLDEwMCwxLDgxLDAsODIsMCwKKyAgICA4OCwwLDEyNCw3LDEwMCwxLDEwNyw5LDExNCw1NCwxMjQsNCwxMiwwLDExNCwyMjYsCisgICAgMTI0LDAsMTE2LDAsMTA2LDYsMTA3LDYsMTE0LDIyNiwxMTYsMCwxMDYsNiwxMjQsMCwKKyAgICAyNSwwLDEyNSw4LDEyMSwxMCwxMjQsOCwxMDYsMTEsMTI1LDksODcsMCwxMTAsMjAsCisgICAgNCwwLDExNiw5LDEwNywxMCwxMTQsMjA2LDEsMCwxLDAsMSwwLDEyNCw3LAorICAgIDgzLDAsODgsMCwxMjQsOSwxMDAsMSwxMDcsOCwxMTQsMjIwLDEyNCw3LDgzLDAsCisgICAgMTI0LDksODMsMCwxMTMsNTQsMTI0LDcsODMsMCwxMTMsNTQsODcsMCwxMDAsMSwKKyAgICA4MywwLDEwMCwxLDgzLDAsNDEsNCwxMjIsMjEsNzAsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LAorICAgIDEyMiw1MywxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsCisgICAgMTA1LDExNSwzMiwxMDgsMTA1LDEwNywxMDEsMTA4LDEyMSwzMiwxMTUsMTA0LDExNywxMTYsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDEwMCwxMTEsMTE5LDExMCwxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsCisgICAgOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLAorICAgIDEyLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTQsNzAsMCwwLDAsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCisgICAgMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LAorICAgIDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE0LDc5LDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDE0NiwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsCisgICAgODksMCwwLDAsNDEsMTAsMTE0LDE1LDAsMCwwLDExNCwxNDQsMCwwLDAsCisgICAgMTE0LDE0NSwwLDAsMCwxMTQsMTY2LDAsMCwwLDkwLDksMTA1LDExNSw5NSwxMTQsCisgICAgMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNjQsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDkzLDMsMCwwLDExNSw1NCwwLAorICAgIDAsMCwwLDIsNiwxLDgsMiw4LDMsNCwxLDEyLDUsMTAsMSwKKyAgICAxMCwxLDgsMSwyLDEsMTAsMSwxNCwxLDEyLDEsOCwxLDgsMiwKKyAgICAyMiwxLDgsMiwxNiwxLDEwLDEsMiwxLDEwLDEsMTQsNCw2LDIsCisgICAgOCwxLDQsMiw2LDIsOCwyLDExNCwxNzAsMCwwLDAsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQwLDAsMCwwLDExNiwwLDEyNCwwLDExNiwxLDEzMSwyLDExNSwKKyAgICAyOCwxMTYsMiwxMDAsMSwxMDYsMywxMTYsNCwxMjQsMCwxMzEsMSwxMzEsMSwxMzEsCisgICAgMSwxMzAsMSwxMjQsMiwxMDAsMiwxMDcsMCwxMTQsNDQsMTE2LDUsMTAwLDMsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDQsMTE0LDExNCwxMTYsMCwxMjQsMSwxMTYsCisgICAgMSwxMzEsMiwxMTUsNzIsMTE2LDIsMTAwLDQsMTMxLDEsMTMwLDEsMTEwLDQyLDEyNCwKKyAgICAxLDExNSw4NiwxMTYsNiwxMDAsNSwxMzEsMSwxMzAsMSwxMTAsMjgsMTI0LDEsMTE2LAorICAgIDcsMTA2LDgsMTA3LDcsMTE0LDExNCwxMDAsNiwxMjUsMywxMTYsOSwxMjQsMywxMDYsCisgICAgMywxMjQsMSwxMzEsMSwxMzEsMSwxMzAsMSwxMjQsMCwxMiwwLDExNCwxMzYsMTI0LAorICAgIDIsMTAwLDIsMTA3LDIsMTE0LDEzNiwxMTYsNSwxMDAsNywxMzEsMSwxMzAsMSwxMDAsCisgICAgOCw4MywwLDQxLDksMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LAorICAgIDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsCisgICAgMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEyMywxMjUsMTE0LDE5LDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LAorICAgIDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsCisgICAgMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw1NCwKKyAgICA5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCisgICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEwLAorICAgIDExMSwzMiwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDEyMiw2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwKKyAgICAxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDEwLDIxOCwxMCwxMDUsMTE1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw5LDg0LDEyMSwKKyAgICAxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwwLDAsMTE0LDEzLDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNCwwLDAsMCwKKyAgICAxMTQsNzksMCwwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDQxLDQsMTE0LDE1LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDE2MiwKKyAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDE0MCwzLDAsMCwxMTUsMjgsMCwwLDAsMCwKKyAgICAyLDEwLDEsMTgsMSw4LDEsOCwxLDgsMSwxMCwxLDEwLDEsNCwKKyAgICAxLDEwLDIsMTAsMSw0LDIsMTQsMSwxNCwxLDExNCwxNzUsMCwwLDAsCisgICAgMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDgsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyMCwwLAorICAgIDAsMCwxMDAsMCwxMjUsMiwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMDAsMiwKKyAgICAyNSwwLDEyNSwzLDEyNCwzLDExNCwxMzQsMTI0LDMsMTE2LDEsMTA2LDIsMTA3LDcsCisgICAgMTE0LDQyLDExNiwzLDEyNCwxLDEyNCwzLDEzMSwyLDEsMCwxMjQsMCwxMTYsMSwKKyAgICAxMDYsMiwxMDcsNiwxMTQsNjIsMTE2LDEsMTA2LDIsMTI0LDAsMjUsMCw4MywwLAorICAgIDExNiwxLDEwNiwyLDEyNCwzLDI1LDAsMTI1LDQsMTIxLDEwLDEyNCw0LDEwNiw0LAorICAgIDEyNSwyLDg3LDAsMTEwLDUwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDEzMiwxLDAsCisgICAgMSwwLDEsMCwxMTYsNiwxMDAsMywyMywwLDEwNiw3LDEyNCwwLDEyNCwzLAorICAgIDEzMSwyLDEyNSw1LDExNiw4LDEyNCw1LDEyNCwwLDEwMCw0LDE0MSwyLDEwMCwwLAorICAgIDEzMCwyLDg5LDAsMTEwLDIsODgsMCwxMTYsOSwxMjQsMCwxMjQsMiwxMzEsMiwKKyAgICAxMjUsNiwxMjQsNiwxMDAsMCwxMDcsOCwxMTQsMTcyLDExNiw4LDExNiw2LDEwNiw3LAorICAgIDEyNCwwLDEzMSwxLDEyNCwwLDEwMCw0LDE0MSwyLDEzMCwxLDExMCw4LDExNiwxMCwKKyAgICAxMjQsNiwxMzEsMSwxMjUsNywxMjQsMywxMTQsMjE2LDExNiwxLDEwNiwyLDEyNCwzLAorICAgIDI1LDAsMTI1LDQsMTE2LDExLDEyNCw0LDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLAorICAgIDEwMCw1LDI1LDAsMTI0LDcsMTMxLDMsMSwwLDEyNCw3LDgzLDAsNDEsNiwKKyAgICA3OCwxMTQsMTE3LDAsMCwwLDExNCwxOSwwLDAsMCwxMjIsMjMsNTksMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsNDEsMSwxMTQsMTUsMCwwLDAsMjMzLDIsMCwwLDAsCisgICAgNDEsMTIsMTE0LDExOCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw1OCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCw5MCwwLDAsMCwKKyAgICAyMTgsOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsMzgsMCwwLDAsMjE4LAorICAgIDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCwxNzAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwyMTgsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw5NSwxMTQsMTQ0LDAsMCwwLDExNCwxMTksMCwwLDAsOTAsMTMsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwKKyAgICAwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwKKyAgICAxMDcsMTAxLDEwMCwxNjMsMywwLDAsMTE1LDQyLDAsMCwwLDAsMSw0LDEsCisgICAgMTQsMSw0LDEsMTAsMSwxMCwyLDEwLDEsMTAsMSwxMCwxLDIsMSwKKyAgICAxMCwxLDE0LDEsMTYsMSwyMCwxLDEwLDEsOCwxLDIwLDIsOCwxLAorICAgIDQsMiwxMCwxLDIyLDEsMTE0LDE4MCwwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMzAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTQzLDEyLDEsMCwxMTYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDgxLDAsODIsMCw4OCwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsCisgICAgMTE0LDQyLDAsMCwwLDExNCwxODAsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDE3OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTkwLDMsMCwwLDExNSw0LDAsMCwwLDAsMiwKKyAgICAxMCwxLDExNCwxODEsMCwwLDAsMTE0LDE5LDAsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyMCwwLDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMjQsMiwxMzEsMywKKyAgICAxLDAsMTI0LDIsMTAwLDEsMTA3LDQsMTE0LDMyLDExNiwxLDEyNCwwLDEyNCwxLAorICAgIDEyNCwyLDEzMSwzLDEyNSwwLDExNiwyLDEwNiwzLDEzMSwwLDEsMCwxMjQsMCwKKyAgICAxMTYsNCwxMDYsNSwxMDcsNywxMTQsNjAsMTE2LDYsMTI0LDAsMTE2LDcsMTMxLDIsCisgICAgODMsMCwxMTYsNCwxMDYsNSwxMjQsMCwyNSwwLDEyNSwzLDEyNCwzLDEwMCwyLAorICAgIDEwNyw4LDExNCwxMDgsMTE2LDIsMTA2LDgsMTMxLDAsMSwwLDEwMCwzLDEwNiw5LAorICAgIDEyNCwwLDEzMSwxLDEyNSw0LDExNiwxMCwxMjQsNCwxMjQsMCwxMDAsNCwxNDEsMiwKKyAgICAxMzAsMSwxMTYsMTEsMTI0LDAsMTMxLDEsMSwwLDEyNCwzLDgzLDAsNDEsNSwKKyAgICA5Nyw1MCwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAorICAgIDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksCisgICAgNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAorICAgIDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwKKyAgICAxMTAsMTExLDEwOSwxMDUsMTEwLDk3LDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsCisgICAgOTksMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDk1LDQ2LDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCisgICAgMTAxLDExNSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTIyLDQwLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwKKyAgICAxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEyLAorICAgIDExNCwxNzUsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDEzNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTE0LDQ3LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKKyAgICA1NiwwLDAsMCw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLAorICAgIDExNCwxNjIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTgyLAorICAgIDAsMCwwLDE5NiwzLDAsMCwxMTUsMjgsMCwwLDAsMCw5LDEyLDEsCisgICAgOCwxLDEyLDEsOCwxLDEwLDEsMTAsMSwxMCwxLDgsMSw4LDEsCisgICAgNCwxLDYsMSwxMiwxLDgsMSwxMTQsMTgyLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMTI0LDAsMTAwLDEsMTMxLDIsMTE0LAorICAgIDE2MCwxMDAsMiwxMjQsMSwxMDcsNiwxMTQsNTgsMTE2LDEsMTI0LDEsMTMxLDEsMTI1LAorICAgIDEsMTI0LDEsMTA2LDIsMTAwLDIsMTMxLDEsMSwwLDExNiwwLDEyNCwwLDEwMCwKKyAgICAzLDEzMSwyLDExNCw1OCwxMjQsMSwxMDYsMywxMjQsMCwxMDYsNCwxMzEsMSwxLAorICAgIDAsMTIwLDEwMCwxMjQsMSw2OCwwLDkzLDkyLDEyNSwzLDExNiwwLDEyNCwwLDEyNCwKKyAgICAzLDEzMSwyLDExNSw2NCwxMDAsNCwxMDYsNSwxMjQsMCwxMDYsNiwxMjQsMywxMzEsCisgICAgMiwxMjUsNCwxMjEsMTQsMTE2LDcsMTI0LDIsMTI0LDQsMTMxLDIsMSwwLDg3LAorICAgIDAsMTEzLDY0LDQsMCwxMTYsOCwxMDcsMTAsMTE0LDE1NCwxLDAsMTI1LDUsMSwKKyAgICAwLDEyMiwyMCwxMjQsNSwxMDYsOSwxMjQsNCwxMDcsMiwxMTQsMTM2LDExOSw2NCwxMzAsCisgICAgMCw4NywwLDg5LDAsMTAwLDUsMTAwLDUsMTI1LDUsMTI2LDUsODgsMCwxMTMsCisgICAgNjQsODgsMCwxMTMsNjQsODcsMCwxMjQsMCw4MywwLDQxLDYsMTIyLDIzOCw3MCwKKyAgICAxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAorICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLAorICAgIDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LAorICAgIDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLAorICAgIDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMjcsMCwKKyAgICAwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwKKyAgICAxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTAsMTE0LDQsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwyMTgsNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDEwMCwxMTQsMTg0LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgNDEsNiwxMTQsODMsMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAorICAgIDExNiwxMTQsMTc5LDAsMCwwLDIxOCwxLDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwxMjAsOTksMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMjEsMywwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsMTAsMTAsMSw4LDEsOCwxLDEwLDEsMTAsMSwxMiwKKyAgICAxLDEwLDEsMTAsMSwxNCwxLDIsMSwxNCwxLDE2LDQsMTAsMSwyLAorICAgIDEsMjQsMSwxMTQsMTg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE0NiwwLAorICAgIDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMjUsMSwxMjQsMCwxMDYsMCwKKyAgICAxMDAsMiwxMzEsMSwxMjUsMiwxMjQsMSwxMDAsMywxMDcsOSwxMTQsODIsMTI0LDIsCisgICAgMTAwLDMsMTA3LDksMTE0LDc4LDEyNCwxLDEyNCwyLDEwNiwxLDEwNywzLDExNCw3OCwKKyAgICAxMTYsMiwxMDYsMywxMDAsNCwxMjQsMSwxNTUsMiwxMDAsNSwxMjQsMiwxMDYsMSwKKyAgICAxNTUsMiwxMDAsNiwxNTcsNSwxMTYsNCwxMDAsNywxMDAsOCwxNDEsMywxLDAsCisgICAgMTI0LDEsODMsMCwxMjQsMiwxMDAsMywxMDcsOSwxMTQsOTYsMTI0LDIsMTA2LDEsCisgICAgODMsMCwxMTYsMiwxMDYsMywxMDAsOSwxMTYsNCwxMDAsNywxMDAsOCwxNDEsMywKKyAgICAxLDAsMTI0LDAsMTAwLDEwLDI1LDAsMTI1LDEsMTAwLDExLDEyNCwwLDEwNyw3LAorICAgIDExNCwxNDIsMTI0LDEsMTA2LDUsMTAwLDEyLDEzMSwxLDEwMCwxMywyNSwwLDEyNSwxLAorICAgIDEyNCwxLDgzLDAsNDEsMTQsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsCisgICAgMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLAorICAgIDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwKKyAgICAxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLAorICAgIDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwKKyAgICAzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDEzMCwwLDAsMCwxMTQsODksMCwwLDAsNzgsMTIyLDMyLDk1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwzMyw2MSwzMiw5NSw5NSwxMTUsMTEyLDEwMSwKKyAgICA5OSw5NSw5NSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDQwLDEyMiw0LDMyLDMzLAorICAgIDYxLDMyLDI1MCwxLDQxLDIzMywzLDAsMCwwLDQxLDEsOTAsMTAsMTE1LDExNiwKKyAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMjIsODksOTksOTcsMTEwLDM5LDExNiwzMiwKKyAgICAxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwzMiw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwzMiwxMTEsMTE0LAorICAgIDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0NCwzMiwxMDIsOTcsCisgICAgMTA4LDEwOCwxMDUsMTEwLDEwMywzMiw5OCw5Nyw5OSwxMDcsMzIsMTExLDExMCwzMiw5NSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDk1LDExNCwxLDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLAorICAgIDAsMCwxMTQsMTksMCwwLDAsNDEsNiwxMTQsMzAsMCwwLDAsMTE0LDExOSwKKyAgICAwLDAsMCwxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE2OSwwLAorICAgIDAsMCwxMTQsMTE4LDAsMCwwLDQxLDMsMjE4LDcsMTAzLDEwOCwxMTEsOTgsOTcsCisgICAgMTA4LDExNSwxMTQsMTYxLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsCisgICAgMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwyNTIsMywKKyAgICAwLDAsMTE1LDMwLDAsMCwwLDAsNywxMCwxLDEwLDEsOCwxLDE4LAorICAgIDEsMjIsMiwxMCwxLDQsMSw4LDEsNiwyLDYsMiwxMCwxLDgsCisgICAgMSw4LDEsMTQsMSwxMTQsMTkzLDAsMCwwLDk5LDUsMCwwLDAsMCwKKyAgICAwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE2NiwwLDAsMCwxMjQsNCwxMDAsMSwxMDcsMiwxMTQsMTgsMTE2LDAsMTI0LDAsCisgICAgMTMxLDEsMTI1LDUsMTEwLDM2LDEyNCwxLDEwMCwyLDEwNyw5LDExNCwzMCwxMjQsMSwKKyAgICAxMTAsMiwxMDUsMCwxMjUsNiwxMTYsMSwxMjQsNiwxMzEsMSwxMjUsNywxMTYsMCwKKyAgICAxMjQsMCwxMjQsNywxMjQsNCwxMzEsMywxMjUsNSwxMjQsMywxMTUsMTUwLDEyNCw0LAorICAgIDEwMCwxLDEwNywyLDExNCw4NCwxMTYsMCwxMjQsMCwxMDYsMiwxMDAsMywxMzEsMSwKKyAgICAxMDAsMSwyNSwwLDEzMSwxLDgzLDAsMTI0LDAsMTE1LDkyLDEyNCw1LDgzLDAsCisgICAgMTE2LDMsMTI0LDAsMTMxLDEsMTE2LDMsMTI0LDAsMTA2LDIsMTAwLDMsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMzEsMSwyNCwwLDEyNSw4LDExNiw0LDEwNiw1LDEyNCw1LAorICAgIDEwNiw2LDEwMCwyLDExNiwzLDEyNCw1LDEwNiw2LDEzMSwxLDEyNCw4LDI0LDAsCisgICAgMTMzLDIsMjUsMCwyNSwwLDgzLDAsMTEwLDEyLDExNiw3LDEyNCw1LDEyNCwzLAorICAgIDExNiwwLDEzMSwzLDgzLDAsMTAwLDIsODMsMCw0MSw0LDk3LDIxNSwxLDAsCisgICAgMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsCisgICAgOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwKKyAgICAxMDQsMTAxLDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTA1LDExNSwzMiwxMTEsOTksOTksMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwKKyAgICAxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LAorICAgIDQ2LDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LAorICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsCisgICAgMTAxLDEwMCw0NiwzMiw4NCwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLAorICAgIDEwOSwxMDgsMTA1LDExNSwxMTYsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LAorICAgIDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsCisgICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLAorICAgIDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsCisgICAgMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsCisgICAgOTYsOTYsNDEsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LAorICAgIDM5LDEwLDMyLDMyLDMyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwKKyAgICAxMTEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsCisgICAgMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLAorICAgIDExNCwxMTEsMTA5LDMyLDQ2LDQ2LDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwOSwxMTEsMTAwLDk2LDk2LDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwKKyAgICAxMDEsMzIsOTcsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLAorICAgIDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxOSwwLDAsMCw3OCwxMTQsMTE3LAorICAgIDAsMCwwLDQxLDgsMTE0LDE4MiwwLDAsMCwxMTQsMTkzLDAsMCwwLDIxOCwKKyAgICA5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDE1OSwwLDAsMCwxMTQsCisgICAgMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxLDAsMCwwLDExNCwxODksCisgICAgMCwwLDAsNDEsOSwxMTQsMTUsMCwwLDAsMTE0LDE5MiwwLDAsMCwyMTgsCisgICAgNiwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMTE0LDE4NywwLDAsMCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCw4MywwLDAsMCw5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsCisgICAgMTE0LDE2MSwwLDAsMCw5MCw3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDIzLDQsMCwwLDExNSwyNiwwLAorICAgIDAsMCwwLDExLDgsMSwxMCwyLDE2LDEsOCwxLDEyLDEsNCwzLAorICAgIDgsMSwxOCwxLDQsMSw0LDQsMjYsMywzMiwyLDExNCwxOTYsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LAorICAgIDAsMTMxLDEsMTI1LDEsMTI0LDEsMTAwLDAsMTA3LDgsMTE0LDMwLDExNiwyLDEwMCwKKyAgICAxLDEyNCwwLDIzLDAsMTMxLDEsMTMwLDEsMTE2LDMsMTI0LDEsMTMxLDEsODMsCisgICAgMCw0MSwyLDc4LDEyMiwyNSwxMTAsMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSwKKyAgICA0LDExNCwxNDIsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsNzAsMCwwLDAsCisgICAgMTE0LDE0MSwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsODIsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw1OCw0LDAsMCwxMTUsOCwwLDAsMCwwLDEsMTAsCisgICAgMSw4LDEsMTIsMSwxMTQsMTk3LDAsMCwwLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwxMiwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjQ0LDAsMCwwLDEyNCwxLDk3LDAsMTI0LDAsOTcsMSwxMTYsMiwxMTYsMSwKKyAgICAxMzEsMSwxMjUsMiwxMjAsODYsMTE2LDEsMTA2LDMsMTA2LDQsMTMxLDAsNjgsMCwKKyAgICA5Myw3Miw5MiwyLDEyNSwzLDEyNSw0LDExNiw1LDEyNCw0LDEyNCwyLDEzMSwyLAorICAgIDExNCwyOCwxMjQsMywxMTYsMSwxMDYsNiwxMDcsNiwxMTQsNjIsMTE2LDcsMTI1LDUsCisgICAgMTEwLDE4LDExNiwwLDEwNiw4LDEyNCwzLDEzMSwxLDExNCwyOCwxMTYsOSwxMjUsNSwKKyAgICAxMTAsMiwxMTMsMjgsMTE2LDEwLDEyNCw0LDEyNCw1LDEzMSwyLDEyNSw2LDExNiwxMSwKKyAgICAxMjQsNiwxMjQsNCwxMzEsMiwxLDAsMTEzLDI4LDg3LDAsMTE2LDEsMTA2LDMsCisgICAgMTE2LDEyLDI1LDAsMTI1LDcsMTIwLDU0LDEwMCw1LDY4LDAsOTMsNDYsMTI1LDgsCisgICAgMTI0LDgsMTE2LDEsMTA2LDMsMTA3LDcsMTE0LDE0NCwxMTYsMTMsMTI0LDgsMTMxLDEsCisgICAgMTI1LDksMTEwLDEwLDExNiwxLDEwNiwzLDEyNCw4LDI1LDAsMTI1LDksMTE2LDE0LAorICAgIDEyNCw3LDEyNCw4LDEyNCw5LDEzMSwzLDEsMCwxMTMsMTIwLDg3LDAsMTIxLDEyLAorICAgIDExNiwxMywxMDAsMiwxMzEsMSwxMjUsMTAsODcsMCwxMTAsMjQsNCwwLDExNiwxNSwKKyAgICAxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMDAsMywxMjUsMTAsODksMCwKKyAgICAxMTAsMiw4OCwwLDExNiwxNCwxMjQsNywxMDAsMiwxMjQsMTAsMTMxLDMsMSwwLAorICAgIDExNiwxMywxMDAsNCwxMzEsMSwxMjUsMTEsMTE2LDE0LDEyNCw3LDEwMCw0LDEyNCwxMSwKKyAgICAxMzEsMywxLDAsMTAwLDMsODMsMCw0MSw2LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsCisgICAgMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsCisgICAgMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwKKyAgICAzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsCisgICAgOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTY3LDAsMCwwLDExNCwyMCwwLDAsMCwKKyAgICA3OCwxMTQsNTUsMCwwLDAsNDEsMSwxMTQsMTY3LDAsMCwwLDQxLDE2LDExNCwKKyAgICA0NiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCw3OSwKKyAgICAwLDAsMCwyMTgsNSwxMDUsMTE2LDEwMSwxMDksMTE1LDExNCwxNzEsMCwwLDAsMTE0LAorICAgIDY5LDAsMCwwLDExNCwxNDIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNTIsCisgICAgMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwxOTcsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDcwLDAsMCwKKyAgICAwLDQxLDEyLDIxOCwxMCwxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsCisgICAgMTEsOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxNSwwLDAsMCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw4MiwwLDAsMCw5MCwxMSwxMTUsCisgICAgMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDY1LDQsCisgICAgMCwwLDExNSw1MCwwLDAsMCwwLDksNCwxLDQsMyw4LDEsMjAsCisgICAgMSwxMCwxLDEwLDEsNiwxLDEwLDEsNiwyLDIsMSwxMCwxLDE0LAorICAgIDMsMTAsMSwxMCwxLDEwLDEsMTAsMiwxMCwxLDE2LDMsMiwxLDEyLAorICAgIDEsMTQsMiwxMCwxLDEyLDMsOCwxLDExNCwyMDEsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNjYsMCwwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTMxLDIsCisgICAgMSwwLDExNiwxLDEwNiwyLDEwNiwzLDExNiw0LDEzMSwxLDEsMCwxMTYsMSwKKyAgICAxMDYsMiwxMDYsMywxMTYsNSwxMzEsMSwxLDAsMTAwLDEsMTAwLDIsMTA4LDYsCisgICAgMTI1LDIsMTI0LDIsOTcsNywxMjQsMiwxMDYsOCwxMTYsMSwxMDYsOSwxMTYsMTAsCisgICAgMjUsMCwxMzEsMSwxLDAsMTAwLDIsODMsMCw0MSwzLDEyMiw1MCw3MywxMTAsCisgICAgMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LAorICAgIDExNCwxOSwwLDAsMCw3OCw0MSwxMSwxMTQsMjAxLDAsMCwwLDExNCwxNCwwLAorICAgIDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE0MiwwLDAsCisgICAgMCwxMTQsMTUyLDAsMCwwLDIxOCwyNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLAorICAgIDk3LDEwOCwxMTQsMTE1LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsCisgICAgMTA4LDExNCw3OSwwLDAsMCwxMTQsMSwwLDAsMCw0MSwzLDExNCwxOTksMCwKKyAgICAwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMDMsMCwwLDAsCisgICAgMTEyLDQsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTAsMiwxMiwxLDEyLAorICAgIDMsOCwxLDQsMSwxMTQsMjAzLDAsMCwwLDQxLDIsNzgsNzgsNDEsMSwKKyAgICA3OCw0MSwyLDc4LDExNCwxOSwwLDAsMCw0MSw1MCwxMTQsMywwLDAsMCwKKyAgICAxMTQsMTE1LDAsMCwwLDExNCwxMiwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LAorICAgIDUxLDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDE3LAorICAgIDAsMCwwLDExNCwxOCwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDQyLDAsCisgICAgMCwwLDExNCw0NSwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwKKyAgICAwLDExNCw2OCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDc3LDAsMCwwLAorICAgIDExNCw4NCwwLDAsMCwxMTQsOTUsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCwKKyAgICAxMDIsMCwwLDAsMTE0LDc4LDAsMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LAorICAgIDExNiw5MCw5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxMjgsMCwwLAorICAgIDAsMTE0LDEzMywwLDAsMCwxMTQsMTM2LDAsMCwwLDExNCw5MSwwLDAsMCwKKyAgICAxMTQsODAsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCwKKyAgICA4MSwwLDAsMCwxMTQsMTQyLDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1NywKKyAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MCwwLAorICAgIDAsMCwxMTQsMTc1LDAsMCwwLDkwLDE1LDk1LDY5LDgyLDgyLDk1LDc3LDgzLAorICAgIDcxLDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCwxNzcsMCwwLDAsMTE0LDE4MCwwLAorICAgIDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4OSwwLDAsCisgICAgMCwxMTQsMTkzLDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE5NywwLDAsMCwKKyAgICAxMTQsMjAxLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LAorICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk0LDAsMCwKKyAgICAwLDQsMTcsNCwyLDgsOCw4LDcsNCwyLDQsMywxNiw0LDE0LAorICAgIDY4LDE0LDIxLDE0LDE5LDgsMTksOCwxOSw4LDExLDE0LDgsOCwxMSw4LAorICAgIDEyLDgsMTYsOCwzNiwxNCwyNywxNCwxMDEsMTYsMjYsNiwzLDEwLDQ1LDE0LAorICAgIDYwLDgsMTcsOCwxNyw4LDI1LDgsMjksOCwyMyw4LDE2LDE0LDczLDE0LAorICAgIDc3LDE0LDEzLDgsOSw4LDksMTAsNDcsOCwyMCw0LDEsOCwyLDgsCisgICAgMjcsOCw2LDEwLDI1LDgsMzEsOCwyNywxOCwzNSw4LDcsOCw0NywKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmggYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKaW5kZXggNWVlODQzYS4uMmY0MDk3OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApAQCAtMSw3OTEgKzEsNzE3IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWxbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyNDQsMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDk2LDAsOTAsMSwwLDEwMCw5NywwLDkwLDIsMCwxMDEsMiwwLDEwMSwKLSAgICAxLDAsMjMsOTAsMywwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNiwwLDEwMCwxMCwwLDEwMCwxMSwwLAotICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCi0gICAgOCwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxNiwKLSAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTgsMCwxMDAsMTksMCwKLSAgICAxMzIsMCwwLDkwLDExLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwKLSAgICAxMiwwLDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEzMiwxLDAsOTAsMTMsCi0gICAgMCwxMDEsMTQsMCwxMDEsMTMsMCwxMDYsMTUsMCwxMzEsMSwwLDkwLDE2LDAsCi0gICAgMTAwLDI1LDAsMTA2LDE3LDAsMTAwLDI2LDAsMTAwLDI3LDAsMTMxLDIsMCwxMDAsCi0gICAgMjgsMCwyMyw5MCwxOCwwLDEwMSwxOSwwLDEwNiwyMCwwLDEwMSwxOCwwLDEwMCwKLSAgICAyNywwLDEzMSwyLDAsOTAsMjEsMCwxMDAsMjksMCw5MCwyMiwwLDEwMCwzMCwKLSAgICAwLDkwLDIzLDAsMTAwLDMxLDAsMTAzLDEsMCw5MCwyNCwwLDEwMCwzMiwwLAotICAgIDEwMywxLDAsOTAsMjUsMCwxMDEsMjUsMCw0LDkwLDI2LDAsOTAsMjcsMCwKLSAgICAxMDAsMzMsMCwxMDAsMzQsMCwxMDAsMzMsMCwxMDAsMzUsMCwxMDAsMzYsMCwxMzIsCi0gICAgMSwxLDkwLDI4LDAsMTAwLDM3LDAsMTAwLDM4LDAsMTMyLDAsMCw5MCwyOSwKLSAgICAwLDEwMCwzOSwwLDEwMCw0MCwwLDEzMiwwLDAsOTAsMzAsMCwxMDAsNDEsMCwKLSAgICAxMDAsNDIsMCwxMzIsMCwwLDkwLDMxLDAsMTAwLDQzLDAsMTAwLDQ0LDAsMTMyLAotICAgIDAsMCw5MCwzMiwwLDEwMCw0NSwwLDEwMCw0NiwwLDEwMCw0NywwLDEwMCw0OCwKLSAgICAwLDEzMiwwLDEsOTAsMzMsMCwxMDAsNDksMCwxMDAsNTAsMCwxMzIsMCwwLAotICAgIDkwLDM0LDAsMTAwLDUxLDAsMTAwLDUyLDAsMTMyLDAsMCw5MCwzNSwwLDEwMCwKLSAgICAzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1MywwLDEwMCw1NCwwLDEzMiwzLAotICAgIDAsOTAsMzYsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTUsMCwKLSAgICAxMDAsNTYsMCwxMzIsMywwLDkwLDM3LDAsMTAwLDU3LDAsMTAwLDU3LDAsMTAwLAotICAgIDU4LDAsMTAwLDU5LDAsMTMyLDIsMCw5MCwzOCwwLDEwMCw2MCwwLDEwMCw2MSwKLSAgICAwLDEzMiwwLDAsOTAsMzksMCwxMDEsNDAsMCwxMzEsMCwwLDkwLDQxLDAsCi0gICAgMTAwLDMzLDAsMTAwLDYyLDAsMTAwLDMzLDAsMTAwLDYzLDAsMTAxLDQxLDAsMTAwLAotICAgIDY0LDAsMTAwLDY1LDAsMTMyLDEsMiw5MCw0MiwwLDcxLDEwMCw2NiwwLDEwMCwKLSAgICA2NywwLDEzMiwwLDAsMTAwLDY3LDAsMTMxLDIsMCw5MCw0MywwLDcxLDEwMCwKLSAgICA2OCwwLDEwMCw2OSwwLDEzMiwwLDAsMTAwLDY5LDAsMTMxLDIsMCw5MCw0NCwKLSAgICAwLDcxLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwwLDAsMTAwLDcxLDAsMTAxLDQ0LAotICAgIDAsMTMxLDMsMCw5MCw0NSwwLDcxLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwwLAotICAgIDAsMTAwLDczLDAsMTMxLDIsMCw5MCw0NiwwLDcxLDEwMCw3NCwwLDEwMCw3NSwKLSAgICAwLDEzMiwwLDAsMTAwLDc1LDAsMTAxLDQ2LDAsMTAxLDQ1LDAsMTMxLDQsMCwKLSAgICA5MCw0NywwLDcxLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsMTAwLDc3LDAsCi0gICAgMTAxLDQ2LDAsMTAxLDQ0LDAsMTMxLDQsMCw5MCw0OCwwLDEwMywwLDAsOTAsCi0gICAgNDksMCw3MSwxMDAsNzgsMCwxMDAsNzksMCwxMzIsMCwwLDEwMCw3OSwwLDEwMSwKLSAgICA0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNTAsMCw3MSwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMzIsMCwwLDEwMCw4MSwwLDEzMSwyLDAsOTAsNTEsMCw3MSwxMDAsCi0gICAgODIsMCwxMDAsODMsMCwxMzIsMCwwLDEwMCw4MywwLDEzMSwyLDAsOTAsNTIsCi0gICAgMCw3MSwxMDAsODQsMCwxMDAsODUsMCwxMzIsMCwwLDEwMCw4NSwwLDEzMSwyLAotICAgIDAsOTAsNTMsMCw3MSwxMDAsODYsMCwxMDAsODcsMCwxMzIsMCwwLDEwMCw4NywKLSAgICAwLDEzMSwyLDAsOTAsNTQsMCwxMDAsMzMsMCwxMDAsODgsMCwxMDAsODksMCwKLSAgICAxMzIsMSwwLDkwLDU1LDAsMTAwLDkwLDAsMTAwLDkxLDAsMTMyLDAsMCw5MCwKLSAgICA1NiwwLDEwMCw5MiwwLDEwMCw5MywwLDEzMiwwLDAsOTAsNTcsMCwxMDAsOTQsCi0gICAgMCwxMDAsOTUsMCwxMzIsMCwwLDkwLDU4LDAsMTAwLDMzLDAsODMsNDEsOTgsCi0gICAgOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsCi0gICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsCi0gICAgODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCwKLSAgICA3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLAotICAgIDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCi0gICAgMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwKLSAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwKLSAgICAzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LAotICAgIDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LAotICAgIDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LAotICAgIDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywKLSAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsCi0gICAgMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLAotICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LAotICAgIDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwxMDMsMTE5LDEwNSwxMTAsCi0gICAgMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwwLDAsMCwwLAotICAgIDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDg4LDAsCi0gICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDExNiwzLDAsMTMxLDEsCi0gICAgMCwxMTQsNzIsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMTE0LDQ1LDAsMTAwLDEsMCwxMzcsMCwwLDExMCw2LDAsMTAwLAotICAgIDIsMCwxMzcsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMywwLDEwMCw0LAotICAgIDAsMTM0LDAsMCwxMjUsMCwwLDExMCwxMiwwLDEwMCw1LDAsMTAwLDQsMCwKLSAgICAxMzIsMCwwLDEyNSwwLDAsMTI0LDAsMCw4Myw0MSw2LDc4LDkwLDEyLDgwLAotICAgIDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLDY5LDc5LDc1LDExNSwxMiwwLDAsMCwKLSAgICA4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDE5LDAsMCwKLSAgICAwLDExNSwxMywwLDAsMCwxMzYsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDcsCi0gICAgNiwwLDgzLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLAotICAgIDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLAotICAgIDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNDEsMiwyMTgsMywKLSAgICA5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDE2OSwwLDQxLDEsCi0gICAgMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLDM4LDYwLDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCi0gICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LAotICAgIDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzcsCi0gICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwzNyw5NSwxMDksOTcsMTA3LAotICAgIDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSw0Niw2MCwxMDgsMTExLAotICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwKLSAgICAxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsCi0gICAgOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsMTEyLDEwOCw5NywxMTYsMTAyLAotICAgIDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwyMTgsCi0gICAgMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsCi0gICAgODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsMjE4LDM1LDk1LDY3LAotICAgIDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LAotICAgIDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLDg0LDgyLDk1LDc1LDY5LAotICAgIDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsCi0gICAgNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTA5LDk3LDEwNywxMDEsCi0gICAgOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzAsMCwwLDAsMTE1LAotICAgIDE0LDAsMCwwLDAsMSwxOCwxLDE4LDEsOSwyLDYsMiwyMSw0LAotICAgIDEyLDMsMTE0LDEzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwKLSAgICAwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsNjQsMTA2LDEsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMxLDIsMCw4Myw0MSw0LDEyMiw0Miw2NywKLSAgICAxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLAotICAgIDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsCi0gICAgMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywKLSAgICAyNTUsMTI3LDMsMCwyMzMsNCwwLDAsMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0MSwyLDIxOCwzLDEwNSwxMTAsMTE2LDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsMTE1LDQxLDEsMjE4LDEsMTIwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDcsCi0gICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwxOSwwLDAsMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAotICAgIDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwKLSAgICAxMTgsMTAxLDExNCwxMTYsMzIsNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsCi0gICAgMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLAotICAgIDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE2LDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQxLDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwKLSAgICAxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDcsOTUsMTE0LDk1LDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDIsMTE0LDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCwxMjQsMCwwLDY4LDEzMSwxLDAsMTMxLDEsMCw4Myw0MSwzLDEyMiwKLSAgICAzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsODMsMCwwLDAsMTE1LDM3LDAsMCwwLDEwMywwLDAsMTI0LDAsMCwKLSAgICA5MywyNywwLDEyNSwxLDAsMTI0LDEsMCwxMTQsNiwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMTYsMSwwLDEzMSwxLDAsMTQ1LDIsMCwxMTMsNiwwLDgzLDExNCwKLSAgICA0LDAsMCwwLDQxLDIsMjE4LDYsMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsNCwxMTIsOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsCi0gICAgMTE2LDk5LDExMSwxMDksMTEyLDYyLDU5LDAsMCwwLDExNSwyLDAsMCwwLDksCi0gICAgMSwxMjIsMzAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwKLSAgICAxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsCi0gICAgNjIsNDEsMiwyMTgsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsCi0gICAgMTExLDEwNSwxMTAsNDEsMSwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNTcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwyLDE1LDEsMTE0LDMwLDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDEzNCwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE0LDUyLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDExNiwzLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwKLSAgICAzLDAsMTI0LDEsMCwxMjQsMywwLDEwMiwyLDAsODMsMTIwLDY5LDAsMTE2LAotICAgIDQsMCwxMjQsMCwwLDEzMSwxLDAsNjgsOTMsNTUsMCwxMjUsNCwwLDEyNCwKLSAgICA0LDAsMTE2LDEsMCwxMDcsNiwwLDExNCw2NSwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsNCwwLDEwMCwyLDAsMTAwLDEsMCwxMzEsMSwxLDkyLDIsMCwKLSAgICAxMjUsMSwwLDEyNSwzLDAsMTI0LDEsMCwxMjQsMywwLDEwMiwyLDAsODMsCi0gICAgMTEzLDY1LDAsODcsMTAwLDMsMCwxMjQsMCwwLDEwMiwyLDAsODMsNDEsNCwKLSAgICAxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsCi0gICAgNDEsNDYsMjMzLDEsMCwwLDAsOTAsOCwxMDksOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwKLSAgICAxMTYsMjE4LDAsNDEsNiwyMTgsMywxMDgsMTAxLDExMCwxMTQsMjMsMCwwLDAsMjE4LAotICAgIDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyNywwLDAsMCwKLSAgICAyMTgsOCwxMTQsMTAxLDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLDIxOCw2LDExNCwxMTUsMTEyLDEwOCwKLSAgICAxMDUsMTE2LDQxLDUsMjE4LDQsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDIsMTE0LDExMSwxMTAsCi0gICAgMTE2LDIxOCwxLDk1LDIxOCw0LDExNiw5NywxMDUsMTA4LDExNCwxOCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiw2MywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMCwyLDE4LDEsMjQsMSwxMCwxLDE5LDEsMTIsMSwKLSAgICAyNywxLDE0LDEsMTE0LDQwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsCi0gICAgNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiw5NywzMiwxMTUsCi0gICAgMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsCi0gICAgMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSw5NywxMTUsMTA1LAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwKLSAgICAxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTE1LDExNiwKLSAgICA5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LDk3LDExNiw0MSwKLSAgICAxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywKLSAgICAxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCw0MSwwLDAsCi0gICAgMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLDAsMTIxLDE2LDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDY0LDEyNCwxLAotICAgIDAsMTA3LDIsMCw4Myw0MSwzLDEyMiw0OSw4NCwxMDEsMTE1LDExNiwzMiwxMTksMTA0LAotICAgIDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLAotICAgIDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLDExMiwxMDEsNDYsNzAsMTA1LDAsMjQwLDAsMCwKLSAgICA0MSwzLDExNCw0MSwwLDAsMCwyMTgsNyw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMjE4LDcsMTE1LDExNiw5NSwxMDksMTExLDEwMCwxMDEsNDEsMywxMTQsMzcsMCwwLDAsCi0gICAgMjE4LDQsMTA5LDExMSwxMDAsMTAxLDkwLDksMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDIsCi0gICAgMTExLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwxOCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwKLSAgICAxMTYsMTIxLDExMiwxMDEsODUsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLAotICAgIDEsMTYsMSwxMywxLDksMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjQ4LDEsMCwwLDEwMCwwLDkwLDAsMTAwLDkxLAorICAgIDkwLDEsMTAwLDkyLDkwLDIsMTAxLDIsMTAxLDEsMjMsMCw5MCwzLDEwMCw0LAorICAgIDEwMCw1LDEzMiwwLDkwLDQsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNSwxMDAsOCwKKyAgICAxMDAsOSwxMzIsMCw5MCw2LDEwMCwxMCwxMDAsMTEsMTMyLDAsOTAsNywxMDAsMTIsCisgICAgMTAwLDEzLDEzMiwwLDkwLDgsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCw5LDEwMCwxNiwKKyAgICAxMDAsMTcsMTMyLDAsOTAsMTAsMTAwLDE4LDEwMCwxOSwxMzIsMCw5MCwxMSwxMDAsMjAsCisgICAgMTAwLDIxLDEzMiwwLDkwLDEyLDEwMCw5MywxMDAsMjMsMTAwLDI0LDEzMiwxLDkwLDEzLAorICAgIDEwMSwxNCwxMDEsMTMsMTA2LDE1LDEzMSwxLDkwLDE2LDEwMCwyNSwxMDYsMTcsMTAwLDI2LAorICAgIDEwMCwyNywxMzEsMiwxMDAsMjgsMjMsMCw5MCwxOCwxMDEsMTksMTA2LDIwLDEwMSwxOCwKKyAgICAxMDAsMjcsMTMxLDIsOTAsMjEsMTAwLDI5LDkwLDIyLDEwMCwzMCw5MCwyMywxMDAsMzEsCisgICAgMTAzLDEsOTAsMjQsMTAwLDMyLDEwMywxLDkwLDI1LDEwMSwyNSw0LDAsOTAsMjYsCisgICAgOTAsMjcsMTAwLDk0LDEwMCwzMywxMDAsMzQsMTU2LDEsMTAwLDM1LDEwMCwzNiwxMzIsMywKKyAgICA5MCwyOCwxMDAsMzcsMTAwLDM4LDEzMiwwLDkwLDI5LDEwMCwzOSwxMDAsNDAsMTMyLDAsCisgICAgOTAsMzAsMTAwLDQxLDEwMCw0MiwxMzIsMCw5MCwzMSwxMDAsNDMsMTAwLDQ0LDEzMiwwLAorICAgIDkwLDMyLDEwMCw0NSwxMDAsNDYsMTMyLDAsOTAsMzMsMTAwLDQ3LDEwMCw0OCwxMzIsMCwKKyAgICA5MCwzNCwxMDAsOTUsMTAwLDQ5LDEwMCw1MCwxMzIsMSw5MCwzNSwxMDAsOTYsMTAwLDUxLAorICAgIDEwMCw1MiwxMzIsMSw5MCwzNiwxMDAsOTcsMTAwLDU0LDEwMCw1NSwxMzIsMSw5MCwzNywKKyAgICAxMDAsNTYsMTAwLDU3LDEzMiwwLDkwLDM4LDEwMSwzOSwxMzEsMCw5MCw0MCwxMDAsOTgsCisgICAgMTAwLDMzLDEwMSw0MCwxMDAsNTgsMTU2LDIsMTAwLDU5LDEwMCw2MCwxMzIsMyw5MCw0MSwKKyAgICA3MSwwLDEwMCw2MSwxMDAsNjIsMTMyLDAsMTAwLDYyLDEzMSwyLDkwLDQyLDcxLDAsCisgICAgMTAwLDYzLDEwMCw2NCwxMzIsMCwxMDAsNjQsMTMxLDIsOTAsNDMsNzEsMCwxMDAsNjUsCisgICAgMTAwLDY2LDEzMiwwLDEwMCw2NiwxMDEsNDMsMTMxLDMsOTAsNDQsNzEsMCwxMDAsNjcsCisgICAgMTAwLDY4LDEzMiwwLDEwMCw2OCwxMzEsMiw5MCw0NSw3MSwwLDEwMCw2OSwxMDAsNzAsCisgICAgMTMyLDAsMTAwLDcwLDEwMSw0NSwxMDEsNDQsMTMxLDQsOTAsNDYsNzEsMCwxMDAsNzEsCisgICAgMTAwLDcyLDEzMiwwLDEwMCw3MiwxMDEsNDUsMTAxLDQzLDEzMSw0LDkwLDQ3LDEwMywwLAorICAgIDkwLDQ4LDcxLDAsMTAwLDczLDEwMCw3NCwxMzIsMCwxMDAsNzQsMTAxLDQ1LDEwMSw0MywKKyAgICAxMzEsNCw5MCw0OSw3MSwwLDEwMCw3NSwxMDAsNzYsMTMyLDAsMTAwLDc2LDEzMSwyLAorICAgIDkwLDUwLDcxLDAsMTAwLDc3LDEwMCw3OCwxMzIsMCwxMDAsNzgsMTMxLDIsOTAsNTEsCisgICAgNzEsMCwxMDAsNzksMTAwLDgwLDEzMiwwLDEwMCw4MCwxMzEsMiw5MCw1Miw3MSwwLAorICAgIDEwMCw4MSwxMDAsODIsMTMyLDAsMTAwLDgyLDEzMSwyLDkwLDUzLDEwMCw5OSwxMDAsODMsCisgICAgMTAwLDg0LDEzMiwxLDkwLDU0LDEwMCw4NSwxMDAsODYsMTMyLDAsOTAsNTUsMTAwLDg3LAorICAgIDEwMCw4OCwxMzIsMCw5MCw1NiwxMDAsODksMTAwLDkwLDEzMiwwLDkwLDU3LDEwMCwzMywKKyAgICA4MywwLDQxLDEwMCw5Nyw5NCwxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLAorICAgIDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLAorICAgIDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLAorICAgIDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLAorICAgIDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwKKyAgICAzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsCisgICAgMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLAorICAgIDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLAorICAgIDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksMTIxLAorICAgIDEwMywxMTksMTA1LDExMCwyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsMywwLDAsCisgICAgMCwxMTUsNjAsMCwwLDAsMTE2LDAsMTA2LDEsMTA2LDIsMTE2LDMsMTMxLDEsCisgICAgMTE0LDQ4LDExNiwwLDEwNiwxLDEwNiwyLDExNiw0LDEzMSwxLDExNCwzMCwxMDAsMSwKKyAgICAxMzcsMCwxMTAsNCwxMDAsMiwxMzcsMCwxMzUsMCwxMDIsMSwxMDAsMywxMDAsNCwKKyAgICAxMzIsOCwxMjUsMCwxMTAsOCwxMDAsNSwxMDAsNCwxMzIsMCwxMjUsMCwxMjQsMCwKKyAgICA4MywwLDQxLDYsNzgsOTAsMTIsODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsCisgICAgNjksNzksNzUsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LAorICAgIDgzLDY5LDc5LDc1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDEwLDAsMCwwLDEzNiwwLAorICAgIDExNiwwLDEwNiwxLDEwNyw2LDgzLDAsNDEsMSwxMjIsNTMsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw0MSwyLDIxOCwzLDk1LDExMSwxMTUsOTAsNywxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwKKyAgICAxMTAsMTY5LDAsNDEsMSwyMTgsMywxMDcsMTAxLDEyMSwxMTQsNCwwLDAsMCwyNTAsCisgICAgMzgsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwKKyAgICAxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDYyLDIxOCwxMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSwzNywwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAorICAgIDM3LDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCisgICAgMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywKKyAgICAxMjAsOTUsOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLAorICAgIDEwMCwxLDgzLDAsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwKKyAgICAxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwKKyAgICAxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw3MCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsNywwLDAsMCw0MSwwLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsNDEsNSwyMTgsMywxMTUsMTIxLDExNSwyMTgsOCwKKyAgICAxMTIsMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsCisgICAgMTE5LDEwNSwxMTYsMTA0LDIxOCwyNyw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSwKKyAgICA3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3NywKKyAgICA4MywyMTgsMzUsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsCisgICAgODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsODMsCisgICAgODQsODIsOTUsNzUsNjksODksNDEsMSwxMTQsNywwLDAsMCwxMTQsNCwwLAorICAgIDAsMCw0MSwxLDExNCw1LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiwKKyAgICA5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwKKyAgICAzMCwwLDAsMCwxMTUsMTQsMCwwLDAsMCwxLDEyLDEsMTIsMSw2LAorICAgIDIsNCwyLDE0LDQsOCwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwKICAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDIsMTIyLDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsCi0gICAgMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwxMjgsMCwwLDQxLDEsMTE0LDQ1LDAsCi0gICAgMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw5NCwwLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDIsMTE0LDQ2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLAotICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDMxLDAsMCwwLAotICAgIDEyNCwwLDAsMTE1LDE4LDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LAotICAgIDAsMCwxMTYsMiwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLAotICAgIDIsMTIyLDMwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LAotICAgIDQ2LDEwNSwwLDY0LDAsMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywKLSAgICAxMDEsMTE2LDk5LDExOSwxMDAsMTE0LDQ1LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDk5LDAsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiw2LDEsMTIsMSwxMTQsNDgsMCwwLAotICAgIDAsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwKLSAgICAwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsMTkzLDAsMCwwLAotICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDEzMSwyLDAsMTI1LDMsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsCi0gICAgMCwxMTYsMiwwLDEwNiw0LDAsMTE2LDIsMCwxMDYsNSwwLDY2LDExNiwyLAotICAgIDAsMTA2LDYsMCw2NiwxMjQsMiwwLDEwMCwyLDAsNjQsMTMxLDMsMCwxMjUsCi0gICAgNCwwLDEyMSw2MSwwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCwzLAotICAgIDAsMTMxLDIsMCwxNDMsMjAsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDksMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMSw4NywxMDAsNCwwLDgxLDgyLDg4LDExNiwyLAotICAgIDAsMTA2LDEwLDAsMTI0LDMsMCwxMjQsMCwwLDEzMSwyLDAsMSw4NywxMTAsCi0gICAgNTksMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODgsMCwxLDEsMSwxMjEsCi0gICAgMTcsMCwxMTYsMiwwLDEwNiwxMiwwLDEyNCwzLDAsMTMxLDEsMCwxLDg3LAotICAgIDExMCwxOCwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4MCwwLDEsMSwxLAotICAgIDg5LDExMCwxLDAsODgsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LDAsCi0gICAgODMsNDEsNSwxMjIsMTYyLDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LAotICAgIDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LAotICAgIDExNiwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDMyLDk3LDExNiwxMTEsMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwKLSAgICAzMiwzMiw2NiwxMDEsMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsCi0gICAgMTA1LDExNSwxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsCi0gICAgOTksMTE3LDExNCwxMTQsMTAxLDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLAotICAgIDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwKLSAgICAxMTQsOTcsMTE0LDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLAotICAgIDEsMCwwLDkwLDIsMTE5LDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSwKLSAgICA5NywxMTYsMjE4LDIsMTA1LDEwMCwxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLAotICAgIDExMCw5MCw2LDc5LDk1LDY5LDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksCi0gICAgNjUsODQsOTAsOCw3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsCi0gICAgMTExLDIxOCw2LDcwLDEwNSwxMDgsMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDIsMCwwLDAsOTAsNiwKLSAgICAxMTcsMTEwLDEwOCwxMDUsMTEwLDEwNyw0MSw2LDExNCwzNywwLDAsMCwyMTgsNCwxMDAsCi0gICAgOTcsMTE2LDk3LDExNCw0NCwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwKLSAgICAxMDksMTEyLDkwLDIsMTAyLDEwMCwyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsCi0gICAgMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDEwNiwwLDAsMCwxMTUsMjYsCi0gICAgMCwwLDAsMCw1LDI0LDEsOSwxLDMzLDEsMywzLDIxLDEsMjAsCi0gICAgMSwyMCwxLDEzLDEsMywxLDE3LDEsMTMsMSw1LDEsMTE0LDU3LDAsCi0gICAgMCwwLDEwNSwyMywxMywwLDAsMjMzLDIsMCwwLDAsMTE0LDE1LDAsMCwKLSAgICAwLDExNSwyLDAsMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSw5NSwxMjIsNCwxMTEsMTEyLDExNiw0NSwxMjIsMyw0NiwxMTIsMTIxLAotICAgIDEyMiw0LDQ2LDExMiwxMjEsOTksNzgsMjE4LDEyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICAwLDExNSwyMCwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwxMDAsMSw2NCwwLAorICAgIDEwNiwxLDEwMCwyLDEwMCwzLDEzMSwyLDgzLDAsNDEsNCwxMjIsNDIsNjcsMTExLAorICAgIDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSwKKyAgICA0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LAorICAgIDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LDAsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTAwLDEsCisgICAgMTMxLDIsODMsMCw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiwKKyAgICA1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAorICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLDEwNSwKKyAgICAxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMTQsMTUsMCwwLDAsNDEsMiwxMTQsMTYsCisgICAgMCwwLDAsMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsCisgICAgMSw5MCw5LDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTQsOTUsCisgICAgMTA4LDExMSwxMTAsMTAzLDUyLDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsCisgICAgMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw3MSwwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsCisgICAgMTA2LDEsMTAwLDEsMTAwLDIsMTMyLDAsMTI0LDAsNjgsMCwxMzEsMSwxMzEsMSwKKyAgICA4MywwLDQxLDMsMTIyLDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLAorICAgIDEwNSwxMTAsNDAsNDEsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNCwwLDAsMCw4MywwLDAsMCwxMTUsMjYsMCwwLDAsMTAzLAorICAgIDAsMTI0LDAsOTMsMTgsMTI1LDEsMTI0LDEsMTE0LDQsMTI0LDEsMTA2LDAsMTE2LAorICAgIDEsMTMxLDEsMTQ1LDIsMTEzLDQsODMsMCwxMTQsNCwwLDAsMCw0MSwyLAorICAgIDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsCisgICAgMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLDIsMjE4LDIsNDYsNDgsMjE4LAorICAgIDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2MiwKKyAgICA1OSwwLDAsMCwxMTUsMiwwLDAsMCw2LDEsMTIyLDMwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCisgICAgNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLDQxLDIsMjE4LDgsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLDEsMjE4LAorICAgIDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLDExNSw0LDAsMCwwLDAsCisgICAgMiwxMCwxLDExNCwzMCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw5NiwwLAorICAgIDAsMCwxMTYsMCwxMTYsMSwxMzEsMSwxMDAsMSwxMDcsMiwxMTQsMzYsMTI0LDAsCisgICAgMTA2LDIsMTE2LDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDEyMCw1MCwxMTYsNCwxMjQsMCwxMzEsMSw2OCwwLAorICAgIDkzLDM4LDEyNSw0LDEyNCw0LDExNiwxLDEwNyw2LDExNCw0NiwxMjQsMCwxMDYsNSwKKyAgICAxMjQsNCwxMDAsMSwxMDAsMiwxNDEsMiw5MiwyLDEyNSwxLDEyNSwzLDEyNCwxLAorICAgIDEyNCwzLDEwMiwyLDgzLDAsMTEzLDQ2LDg3LDAsMTAwLDMsMTI0LDAsMTAyLDIsCisgICAgODMsMCw0MSw0LDEyMiwzMiw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwKKyAgICAxMDgsMTA1LDExNiw0MCw0MSw0NiwyMzMsMSwwLDAsMCw0MSwxLDkwLDgsMTA5LAorICAgIDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsCisgICAgMTE0LDIzLDAsMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLAorICAgIDExMCwxMTQsMjcsMCwwLDAsMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwKKyAgICAyMTgsNiwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LAorICAgIDkwLDUsMTAyLDExNCwxMTEsMTEwLDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwKKyAgICAxMTQsMTgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwKKyAgICAxMTYsNjMsMCwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMiwxLDE2LDEsCisgICAgOCwxLDE0LDEsOCwxLDE4LDEsMTIsMSwxMTQsNDAsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTMxLAorICAgIDEsODMsMCw0MSwxLDEyMiwxMjYsODMsMTE2LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3Nyw5NywxMDAsMTAxLDMyLAorICAgIDk3LDMyLDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwKKyAgICAxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwOSw5NywxMDcsMTAxLDMyLDEwNSwxMTYsMzIsMTAxLAorICAgIDk3LDExNSwxMDUsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTA1LDExMCwzMiwxMDEsMTIwLDExMiwxMDEsMTE0LDEwNSwxMDksMTAxLDExMCwxMTYsMTE1LAorICAgIDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTksOTcsOTksMTA0LDEwMSwKKyAgICAzMiwxMTUsMTE2LDk3LDExNiwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiwxMTUsNDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsNDEsMiwxMTQsMywwLDAsMCw5MCw0LDExNSwxMTYsCisgICAgOTcsMTE2LDQxLDEsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTE2LDk3LDExNiw3NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTE0LAorICAgIDQxLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw0OCwwLDAsMCwxMjEsMTIsCisgICAgMTE2LDAsMTI0LDAsMTMxLDEsMTI1LDIsODcsMCwxMTAsMjAsNCwwLDExNiwxLAorICAgIDEwNywxMCwxMTQsMzIsMSwwLDEsMCwxLDAsMTAwLDEsODMsMCw4OCwwLAorICAgIDEyNCwyLDEwNiwyLDEwMCwyLDY0LDAsMTI0LDEsMTA3LDIsODMsMCw0MSwzLAorICAgIDEyMiw0OSw4NCwxMDEsMTE1LDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCisgICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLAorICAgIDExMiwxMDEsNDYsNzAsMTA1LDAsMjQwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwKKyAgICAyMTgsNyw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDcsMTE1LDExNiw5NSwxMDksMTExLAorICAgIDEwMCwxMDEsNDEsMywxMTQsMzcsMCwwLDAsMjE4LDQsMTA5LDExMSwxMDAsMTAxLDkwLAorICAgIDksMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDIsMTExLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxOCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsODUsMCwwLAorICAgIDAsMTE1LDEwLDAsMCwwLDAsMiwyLDEsMTIsMSwxNCwxLDYsMSwKKyAgICAxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTAwLDEsMTMxLDIsODMsMCw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsCisgICAgMCw0MSwxLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyMiwwLDAsMCwxMjQsMCwxMTUsMTIsMTE2LDAsMTA2LDEsMTMxLDAsCisgICAgMTI1LDAsMTE2LDIsMTI0LDAsMTAwLDEsMTMxLDIsODMsMCw0MSwyLDEyMiwzMCwKKyAgICA4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCwKKyAgICA2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsMTAxLDExNiw5OSwKKyAgICAxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDIsNCwxLDgsMSwxMTQsNDgsMCwwLDAsMjMzLDE4MiwKKyAgICAxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwKKyAgICAxNywwLDAsMCw2NywwLDAsMCwxMTUsMTYyLDAsMCwwLDEwMCwxLDEwNiwKKyAgICAwLDEyNCwwLDExNiwxLDEyNCwwLDEzMSwxLDEzMSwyLDEyNSwzLDExNiwyLDEwNiwKKyAgICAzLDEyNCwzLDExNiwyLDEwNiw0LDExNiwyLDEwNiw1LDY2LDAsMTE2LDIsMTA2LAorICAgIDYsNjYsMCwxMjQsMiwxMDAsMiw2NCwwLDEzMSwzLDEyNSw0LDEyMSw1MCwxMTYsCisgICAgNywxMDYsOCwxMjQsNCwxMDAsMywxMzEsMiwxNDMsMTYsMTI1LDUsMTI0LDUsMTA2LAorICAgIDksMTI0LDEsMTMxLDEsMSwwLDg3LDAsMTAwLDQsODEsMCw4MiwwLDg4LAorICAgIDAsMTE2LDIsMTA2LDEwLDEyNCwzLDEyNCwwLDEzMSwyLDEsMCw4NywwLDExMCwKKyAgICA1OCw0LDAsMTE2LDExLDEwNywxMCwxMTQsMTU2LDEsMCwxLDAsMSwwLDEyMSwKKyAgICAxNCwxMTYsMiwxMDYsMTIsMTI0LDMsMTMxLDEsMSwwLDg3LDAsMTEwLDIwLDQsCisgICAgMCwxMTYsMTEsMTA3LDEwLDExNCwxNDgsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMiw4OCwwLDEzMCwwLDg5LDAsMTEwLDIsODgsMCwxMDAsNCw4MywwLDQxLAorICAgIDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsCisgICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLAorICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICA5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsCisgICAgNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCwKKyAgICA5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsCisgICAgMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywKKyAgICAxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLAorICAgIDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LAorICAgIDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LAorICAgIDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsCisgICAgMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwxMTAsOTAsCisgICAgNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LDY1LDg0LAorICAgIDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LDExMSwyMTgsCisgICAgNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLDIxOCw3LAorICAgIDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsMTE3LDExMCwKKyAgICAxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLDk3LDExNiwKKyAgICA5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsMTA5LDExMiwKKyAgICA5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LDEwNSwxMTYsCisgICAgMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LDAsMCwKKyAgICAwLDAsNSwxNiwxLDYsMSwyNiwxLDIsMywxNCwxLDIwLDEsMTYsCisgICAgMSwxNCwxLDIsMSwxNCwxLDE0LDEsNiwxLDExNCw1OCwwLDAsMCwKKyAgICAxMDUsNTEsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsMCwxMTUsCisgICAgMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwxMjIsNCwKKyAgICA0NiwxMTIsMTIxLDk5LDc4LDQxLDEsMjE4LDEyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKICAgICA5NywxMTYsMTA1LDExMSwxMTAsOTksMiwwLDAsMCwxLDAsMCwwLDExLDAsCi0gICAgMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDg3LDEsMCwwLDEyNCwKLSAgICAxLDAsMTAwLDEsMCwxMDcsOSwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMDAsMiwwLDExNiwyLDAsMTMxLDIsMCwxLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOSwwLDExNCw1OCwwLDEwMCwzLDAsMTI1LDMsMCwxMTYsMywwLAotICAgIDEyNCwzLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwxLDAsMTE0LDcwLDAsMTAwLAotICAgIDQsMCwxMTAsMywwLDEwMCw1LDAsMTI1LDIsMCwxMTYsNCwwLDEyNCwwLAotICAgIDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCw1LDAsCi0gICAgMTA2LDUsMCwxMDAsNiwwLDEzMSwxLDAsOTIsMywwLDEyNSw2LDAsMTI1LAotICAgIDcsMCwxMjUsOCwwLDExNiw2LDAsMTA2LDcsMCwxMDYsOCwwLDEyNSw5LAotICAgIDAsMTI0LDksMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE1NCwwLDExNiw5LDAsCi0gICAgMTAwLDcsMCwxMzEsMSwwLDEzMCwxLDAsMTAwLDQsMCwxMDYsMTAsMCwxMjQsCi0gICAgNiwwLDExNCwxNzIsMCwxMjQsNiwwLDExMCwzLDAsMTI0LDgsMCwxMjQsNywKLSAgICAwLDEyNCw5LDAsMTAzLDMsMCwxMzEsMSwwLDEyNSwxMCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMDcsOCwwLDExNCwyNDEsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwKLSAgICAxMiwwLDEwMCw4LDAsMTA3LDIsMCwxMTQsMjI5LDAsMTAwLDQsMCwxMjUsMiwKLSAgICAwLDExMCwxMiwwLDExNiw2LDAsMTA2LDExLDAsMTA2LDEyLDAsMTI1LDIsMCwKLSAgICAxMTYsMTMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwKLSAgICA0LDAsMTA3LDMsMCwxMTQsNjMsMSwxMjQsMiwwLDEwNiwxNCwwLDEzMSwwLAotICAgIDAsMTE1LDQyLDEsMTE2LDE1LDAsMTAwLDksMCwxMDYsMTYsMCwxMjQsMiwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEwMCwxMCwwLDEwNiwxNiwwLDEyNCwKLSAgICAxMCwwLDExNiwxNywwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMTAsMCwxMTYsMTgsCi0gICAgMCwxMjQsNCwwLDExNiwxOSwwLDEyNCwxMCwwLDExNiwyMCwwLDEwMCw4LDAsCi0gICAgMjUsMjMsMTMxLDMsMCw4Myw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwKLSAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LAotICAgIDExNSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwKLSAgICAxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwKLSAgICAxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsCi0gICAgMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwKLSAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywKLSAgICAxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsCi0gICAgMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LAotICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsCi0gICAgMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwKLSAgICAzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLAotICAgIDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLAotICAgIDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgMTE0LDEwNSwxMTAsMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LAotICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwKLSAgICAzMiw5NywxMTAsMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksCi0gICAgMzIsNDAsMTAxLDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLAotICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsCi0gICAgOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsCi0gICAgMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsCi0gICAgMTAwLDQ2LDMyLDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LAotICAgIDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDQ0LDEwLDMyLDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsCi0gICAgMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LAotICAgIDExNSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwKLSAgICAxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsCi0gICAgMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsCi0gICAgMzksNDksMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0NiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsCi0gICAgMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKLSAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsCi0gICAgMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LAotICAgIDExNiwxMDEsOTcsMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LAotICAgIDExNCwxMDUsMTAwLDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwKLSAgICAzMiwxMTYsMTExLDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwKLSAgICAwLDAsMjE4LDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LAotICAgIDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwKLSAgICAxMjIsMjQsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsCi0gICAgMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywKLSAgICAxMjUsMTIzLDEyNSw0MSwyMSwyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsCi0gICAgMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQwLDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCi0gICAgOCwwLDAsMCwyMTgsMTQsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDIxOCw5LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyMTgsCi0gICAgMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDExNCwyOCwwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsCi0gICAgMjE4LDgsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsCi0gICAgNywxMDUsMTE1LDk3LDEwOCwxMTAsMTE3LDEwOSwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDExNCw0OSwwLDAsMCwyMTgsNCw5NSw3OSw4MCw4NCwxMTQsCi0gICAgMzAsMCwwLDAsMjE4LDgsOTUsODAsODksNjcsNjUsNjcsNzIsNjksMjE4LDE3LAotICAgIDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LAotICAgIDgzLDQxLDExLDExNCwzNywwLDAsMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsCi0gICAgMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwxMTQsNTksMCwwLDAsMjE4LDcsMTA5LAotICAgIDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM5LDAsMCwKLSAgICAwLDkwLDQsOTgsOTcsMTE1LDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLAotICAgIDExNSwxMTYsOTAsMywxMTYsOTcsMTAzLDkwLDE1LDk3LDEwOCwxMDksMTExLDExNSwxMTYsOTUsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwKLSAgICAxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1NCwwLDAsMCwxMTUsNDYsCi0gICAgMCwwLDAsMCwxOCwxMiwxLDksMSw3LDEsMTIsMSw2LDEsMTIsCi0gICAgMSwxOCwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTIsMSwzNiwxLDEyLAotICAgIDEsMTgsMSw5LDIsMTIsMSwxMiwxLDEyLDEsMTIsMSwyMSwxLDIxLAotICAgIDEsMTE0LDgxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LAotICAgIDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDEsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgMzAsMCwxMTYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsCi0gICAgMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LAotICAgIDMsMCwxMjQsMywwLDExNiw1LDAsMTA3LDMsMCwxMTQsMTAyLDAsMTE2LDYsCi0gICAgMCwxMDAsMywwLDEwNiw3LDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwyLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDEyNCwyLDAsMTA2LDgsMCwxMDAsNCwwLDEzMSwKLSAgICAxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwxMSwwLDEwNyw3LDAsMTE0LDE1MywKLSAgICAwLDExNiw2LDAsMTAwLDcsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTEwLDEyNSwwLDEyNCw0LDAsMTAwLDYsMCwxMDcsCi0gICAgMiwwLDExNCwyMiwxLDEyNCwyLDAsMTA2LDksMCwxMDAsNCwwLDEwMCw1LAotICAgIDAsMTMxLDIsMCwxMDAsMTIsMCwyNSwxMjUsNSwwLDEyNCw1LDAsMTA2LDEwLAotICAgIDAsMTE2LDExLDAsMTMxLDEsMCwxMTUsMjIzLDAsMTE2LDYsMCwxMDAsOCwwLAotICAgIDEwNiw3LDAsMTE2LDExLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LAotICAgIDUsMCwxMTYsMTIsMCwxMTYsMTEsMCwxMzEsMSwwLDEwMCwxLDAsMTMzLDIsCi0gICAgMCwyNSwxMjUsNiwwLDEyNCw2LDAsMTA2LDEzLDAsMTMxLDAsMCwxMTUsMjIsCi0gICAgMSwxMTYsNiwwLDEwMCw5LDAsMTA2LDcsMCwxMjQsNSwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDEyNCwyLDAsMTA2LDE0LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEwMCwxMCwwLDI1LDEyNSw3LDAsMTE2LDE1LDAsMTI0LDEsMCwxMjQsCi0gICAgNywwLDExNiwxNiwwLDEwMCwxMCwwLDI1LDIzLDEzMSwyLDAsODMsNDEsMTMsCi0gICAgOTcsMTEwLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsOTksNDYsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwKLSAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwKLSAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwKLSAgICA5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDMyLDczLDEwMiwKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwzMiw4MCw2OSwKLSAgICA4MCwzMiw1MSw0OSw1Miw1NSw0Nyw1Miw1Niw1NiwzMiwxMDIsMTExLDExNCwxMDksOTcsCi0gICAgMTE2LDQ0LDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LAotICAgIDEwOCwxMDgsMzIsOTgsMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywKLSAgICAxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsCi0gICAgMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3OCwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LAotICAgIDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywxMjMsMTI1LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk4LDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwKLSAgICAxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMTE0LDYwLDAsMCwwLDExNCw1OCwwLDAsMCwyMzMsMywwLDAsMCwKLSAgICAxMjIsMzMsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiwKLSAgICA1MCwzMiwxMTEsMTE0LDMyLDUxLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwxMDUsMTEwLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDEyMiw1NywxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LAotICAgIDExNiw5NywxMTQsMTE2LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNTIsCi0gICAgMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwKLSAgICAxMDEsMTA4LDMyLDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsCi0gICAgMTEwLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExOCwKLSAgICA5NywxMDgsMTE3LDEwMSwxMTQsNjEsMCwwLDAsNjIsMiwwLDAsMCwxMTQsNTgsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDIzMywyNTQsMjU1LDI1NSwyNTUsNDEsMTcsMTE0LAotICAgIDgsMCwwLDAsMTE0LDY2LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsNjgsCi0gICAgMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNzMsMCwKLSAgICAwLDAsMTE0LDQ5LDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCw3NCwwLDAsMCwxMTQsMzMsMCwKLSAgICAwLDAsMTE0LDcyLDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LAotICAgIDExMSwxMTAsMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSwKLSAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCwKLSAgICA5LDEwMCwxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNTksMCwwLDAsOTAsCi0gICAgOSwxMTEsMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsCi0gICAgOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQyLDEsMCwwLDExNSwKLSAgICA0NCwwLDAsMCwwLDksMTgsMSwxMiwxLDE4LDEsMTgsMSwxMiwxLAotICAgIDksMSwxNSwxLDE1LDEsMTIsMSw5LDEsMTUsMSwxMiwxLDIyLDEsCi0gICAgMTUsMSw5LDEsMTIsMSwyMiwxLDEyLDEsOSwxLDEyLDEsMTksMSwKLSAgICAxMTQsODcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwKLSAgICAwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2NCwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDIyLAotICAgIDAsMTAwLDIsMCw4MywxMjQsMCwwLDEwNiwxLDAsMTAwLDMsMCwxMzEsMSwKLSAgICAwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwwLAotICAgIDEyLDExNSw4MSwwLDEyNCwzLDAsMTA2LDIsMCwxMzEsMCwwLDEwMCw3LDAsCi0gICAgMTAwLDgsMCwxMzMsMiwwLDI1LDEwMCw2LDAsMTA3LDMsMCwxMTQsODUsMCwKLSAgICAxMjQsMCwwLDgzLDEyMSwxNiwwLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLAotICAgIDEyNSw0LDAsODcsMTEwLDQwLDAsNCwxMTYsNCwwLDExNiw1LDAsMTAyLDIsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTQzLDAsMSwxLDEsMTI0LDAsMCwxMDAsMiwwLAotICAgIDEwMCw5LDAsMTMzLDIsMCwyNSwxMjUsNCwwLDg5LDExMCwxLDAsODgsMTE2LAotICAgIDYsMCwxMjQsNCwwLDEzMSwxLDAsMTE0LDE2MCwwLDEyNCw0LDAsODMsMTI0LAotICAgIDAsMCw4Myw0MSwxMCwxMjIsMTg4LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsNDAsMTA1LDEwMiwzMiwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwKLSAgICAxMDEsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywKLSAgICAxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMiwxMTcsCi0gICAgMTE0LDEwMSwxMDgsMTIxLDMyLDEwMiwxMTEsMTE0LDMyLDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LAotICAgIDEwMCwxMTUsNDUsOTksMTExLDEwOSwxMTIsOTcsMTE2LDEwNSw5OCwxMDUsMTA4LDEwNSwxMTYsMTIxLAotICAgIDMyLDEwMiwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDgwLDEyMSw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDY5LDEyMCwxMDEsOTksNjcsMTExLDEwMCwxMDEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4NywxMDUsMTE2LDEwNCw3MCwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsNDAsNDEsMzIsCi0gICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw2NywzMiw2NSw4MCw3Myw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTQsNjEsMCwwLDAsNzgsMTE0LDYwLDAsMCwwLDExNCw4MiwKLSAgICAwLDAsMCwxMTQsMzEsMCwwLDAsOTAsMiwxMTIsMTIxLDIzMywyNTMsMjU1LDI1NSwKLSAgICAyNTUsMjMzLDI1NSwyNTUsMjU1LDI1NSwxMTQsODksMCwwLDAsNDEsNywxMTQsMzMsMCwKLSAgICAwLDAsMTE0LDM0LDAsMCwwLDIxOCw1LDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE0LDg3LAotICAgIDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDQ2LDAsCi0gICAgMCwwLDQxLDUsMjE4LDEzLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiwKLSAgICA5NywxMTYsMTA0LDExNCw4MCwwLDAsMCwxMTQsMzgsMCwwLDAsOTAsOSwxMDEsCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwyMTgsMTUsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwxMDIsMTA1LDEwOCwxMDEsNzUsMSwwLDAsMTE1LDIwLDAsMCwwLDAsNywKLSAgICAxOCwxLDQsMSwyNCwxLDM1LDEsNCwxLDMsMSwxNiwxLDE5LDEsCi0gICAgMjEsMSwxMTQsOTMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDkyLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwwLDExNiwyLDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDExNCw1OSwwLDEyMSwxNCwwLDExNiwzLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDgzLDg3LDExMyw4OCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsNTUsCi0gICAgMCwxLDEsMSw4OSwxMTMsODgsMCw4OCwxMTAsMjksMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMTYsNSwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsODQsCi0gICAgMCwxMjQsMCwwLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDYsMjE4LDgsMTAxLDExMCwxMDAsMTE1LDExOSwxMDUsMTE2LDEwNCwyMTgsNSwxMTYsMTE3LAotICAgIDExMiwxMDgsMTAxLDExNCw4NiwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDY4LDAsCi0gICAgMCwwLDExNCw3NiwwLDAsMCw0MSwxLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTQsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwyMSwxLDMsMSwxNCwxLAotICAgIDEzLDEsOCwxLDIxLDEsNCwyLDExNCw5NywwLDAsMCw5OSwxLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNjAsMCwwLDAsMTIxLDE5LDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMTA2LDEsMCwxMjUsMSwwLDg3LDExMCwyNCwwLDQsMTE2LDIsCi0gICAgMCwxMDcsMTAsMCwxMTQsNDUsMCwxLDEsMSwxMDAsMSwwLDEyNSwxLDAsCi0gICAgODksMTEwLDEsMCw4OCwxMjQsMSwwLDEwMCwyLDAsNzksMTI1LDEsMCwxMjQsCi0gICAgMSwwLDgzLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCisgICAgMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDI0NCwwLDAsMCwxMjQsCisgICAgMSwxMDAsMSwxMDcsOSwxMTQsNTIsMTE2LDAsMTA2LDEsMTAwLDIsMTE2LDIsMTMxLAorICAgIDIsMSwwLDEyNCwyLDEwMCwxLDEwNyw5LDExNCw0MCwxMDAsMywxMjUsMywxMTYsCisgICAgMywxMjQsMywxMzEsMSwxMzAsMSwxMjQsMSwxMTQsNDgsMTAwLDQsMTEwLDIsMTAwLAorICAgIDUsMTI1LDIsMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LAorICAgIDAsMTMxLDEsOTIsMiwxMjUsNCwxMjUsNSwxMjQsNSwxMDYsNywxMDAsNiwxMzEsCisgICAgMSw5MiwzLDEyNSw2LDEyNSw3LDEyNSw4LDExNiw4LDEwNiw5LDEwNiwxMCwxMjUsCisgICAgOSwxMjQsOSwxMDAsMSwxMDcsOCwxMTQsMTE0LDExNiwxMSwxMDAsNywxMzEsMSwxMzAsCisgICAgMSwxMDAsNCwxMDYsMTIsMTI0LDYsMTE0LDEyNiwxMjQsNiwxMTAsMiwxMjQsOCwxMjQsCisgICAgNywxMjQsOSwxMDMsMywxMzEsMSwxMjUsMTAsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LAorICAgIDE3MiwxMTYsOCwxMDYsMTMsMTA2LDE0LDEwMCw4LDEwNywyLDExNCwxNjQsMTAwLDQsMTI1LAorICAgIDIsMTEwLDgsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMjUsMiwxMTYsMTUsMTI0LDIsMTMxLAorICAgIDEsMTI1LDIsMTI0LDIsMTAwLDQsMTA3LDMsMTE0LDIyNCwxMjQsMiwxMDYsMTYsMTMxLAorICAgIDAsMTE1LDIxMCwxMTYsMTcsMTAwLDksMTA2LDE4LDEyNCwyLDEzMSwxLDEzMSwxLDEzMCwKKyAgICAxLDEwMCwxMCwxMDYsMTgsMTI0LDEwLDExNiwxOSwxMjQsMiwxMzEsMywxMjUsMTAsMTE2LAorICAgIDIwLDEyNCw0LDExNiwyMSwxMjQsMTAsMTE2LDIyLDEwMCw4LDI1LDAsMjMsMCwxMzEsCisgICAgMyw4MywwLDQxLDExLDk3LDI1NCwyLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsCisgICAgMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LAorICAgIDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LAorICAgIDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LAorICAgIDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LDExMiwxMjEsOTksCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLAorICAgIDMyLDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTExLDExMiwxMTYsCisgICAgMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwKKyAgICAxMDEsMTE2LDEwMSwxMTQsMzIsOTksMTExLDExMCwxMTYsMTE0LDExMSwxMDgsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMiwxMTQsMTAxLDExNSwxMTcsMTA5LDEwMSwxMDAsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwKKyAgICAxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMSwxMDIsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDczLDEwMiwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwKKyAgICAxMDMsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTE0LDEwMywxMTcsCisgICAgMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDMyLDk3LDExMCwKKyAgICAxMDAsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwKKyAgICAzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiw0MCwxMDEsCisgICAgMTA4LDExNSwxMDEsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LAorICAgIDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCisgICAgNzMsMTAyLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMTAsMzIsCisgICAgMzIsMzIsMzIsOTcsMzIsODQsMTE0LDExNywxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsOTcsMTE1LDMyLDExNSwKKyAgICAxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEwOSwxMTIsCisgICAgMTE2LDEyMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTksMTA0LAorICAgIDEwNSwxMDgsMTAxLDMyLDk3LDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExOCw5NywxMDgsMTE3LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLAorICAgIDExNiwxMTEsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwzOSw0OSwzOSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw3MCwxMTYsMTA0LDEwMSwzMiwxMDAsCisgICAgMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsCisgICAgMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAorICAgIDk5LDk3LDExNiwxMDEsMTAwLDU5LDMyLDExNywxMTUsMTAxLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKKyAgICAxMDAsMTIyLDUwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDExMSwxMTQsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsCisgICAgMzIsNzgsMTExLDExMCwxMDEsMTE0LDMyLDAsMCwwLDExNCwzMSwwLDAsMCwyMTgsCisgICAgMSw0NiwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywKKyAgICAzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDIzMywwLDAsMCwwLDEyMiwyNCwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMTIsMTA0LDk3LAorICAgIDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDEyMiw3LDEyMywxMjUsNDYsMTIzLDEyNSwxMjMsMTI1LAorICAgIDQxLDIzLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksCisgICAgOTcsMTE0LDExMCwyMTgsMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTQsMywwLDAsMCwyMTgsNiwxMDIsMTE1LDExMiw5NywxMTYsMTA0LDExNCwKKyAgICA0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDE0LAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwyMTgsOSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjgsCisgICAgMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LDIxOCw4LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDcsMTA1LDExNSw5NywxMDgsMTEwLAorICAgIDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsCisgICAgMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LDMwLDAsMCwwLDIxOCw4LAorICAgIDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNyw2Niw4OSw4NCw2OSw2Nyw3OSwKKyAgICA2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwxMSwxMTQsMzcsMCwKKyAgICAwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LAorICAgIDEwMCwxMDEsMTE0LDYwLDAsMCwwLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLAorICAgIDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsMCw5MCw0LDk4LDk3LDExNSwKKyAgICAxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwxMTUsMTE2LDkwLDMsMTE2LDk3LAorICAgIDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw3LDEsMCwwLDExNSw0OCwwLDAsMCwwLDE4LDgsCisgICAgMSw2LDEsNiwxLDgsMSw0LDEsOCwxLDEyLDEsMTAsMSwxMiwKKyAgICAxLDE2LDEsOCwxLDgsMSw4LDEsMjQsMSw4LDEsMTIsMSw2LAorICAgIDIsOCwxLDgsMSw4LDEsOCwxLDE0LDEsMTQsMSwxMTQsODMsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjMwLDAsMCwwLDExNiwwLDEwNiwxLAorICAgIDEwNiwyLDEwMCwxLDEwNyw4LDExNCwyMCwxMTYsMywxMDAsMiwxMzEsMSwxMzAsMSwKKyAgICAxMTYsNCwxMDYsNSwxMjQsMCwxMzEsMSwxMjUsMCwxMTYsNiwxMjQsMCwxMzEsMSwKKyAgICA5MiwyLDEyNSwxLDEyNSwyLDExNiw2LDEyNCwxLDEzMSwxLDkyLDIsMTI1LDEsCisgICAgMTI1LDMsMTI0LDMsMTE2LDcsMTA3LDMsMTE0LDc4LDExNiw4LDEwMCwzLDEwNiw5LAorICAgIDExNiw3LDEyNCwwLDEzMSwyLDEzMSwxLDEzMCwxLDEyNCwyLDEwNiwxMCwxMDAsNCwKKyAgICAxMzEsMSwxMjUsNCwxMjQsNCwxMDAsMTEsMTA3LDcsMTE0LDExMiwxMTYsOCwxMDAsNywKKyAgICAxMDYsOSwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsMSwxMTAsODYsMTI0LDQsMTAwLDYsCisgICAgMTA3LDIsMTE0LDE5OCwxMjQsMiwxMDYsMTEsMTAwLDQsMTAwLDUsMTMxLDIsMTAwLDEyLAorICAgIDI1LDAsMTI1LDUsMTI0LDUsMTA2LDEyLDExNiwxMywxMzEsMSwxMTUsMTYwLDExNiw4LAorICAgIDEwMCw4LDEwNiw5LDExNiwxMywxMzEsMSwxMzEsMSwxMzAsMSwxMjQsNSwxMTYsMTQsCisgICAgMTE2LDEzLDEzMSwxLDEwMCwxLDEzMywyLDI1LDAsMTI1LDYsMTI0LDYsMTA2LDE1LAorICAgIDEzMSwwLDExNSwxOTgsMTE2LDgsMTAwLDksMTA2LDksMTI0LDUsMTMxLDEsMTMxLDEsCisgICAgMTMwLDEsMTI0LDIsMTA2LDE2LDEwMCw0LDEzMSwxLDEwMCwxMCwyNSwwLDEyNSw3LAorICAgIDExNiwxNywxMjQsMSwxMjQsNywxMTYsMTgsMTAwLDEwLDI1LDAsMjMsMCwxMzEsMiwKKyAgICA4MywwLDQxLDEzLDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLAorICAgIDk5LDQ2LDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLAorICAgIDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsCisgICAgMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLAorICAgIDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwKKyAgICAzMiwzMiw3MywxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwKKyAgICAxMTEsMzIsODAsNjksODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLAorICAgIDExMSwxMTQsMTA5LDk3LDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDMyLDczLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsCisgICAgMTIzLDEyNSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsCisgICAgMTE4LDEwMSwxMDgsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDExNCw2MSwwLDAsMCwxMTQsNTksMCwwLDAsMjMzLAorICAgIDMsMCwwLDAsMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsCisgICAgMTEwLDEwOCwxMjEsMzIsNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsCisgICAgMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDExNSwxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLAorICAgIDExNCwxMjUsMTIyLDUyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDk3LDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LAorICAgIDEwNSw5OSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE0LDYyLDAsMCwwLDYyLDIsMCwKKyAgICAwLDAsMTE0LDU5LDAsMCwwLDExNCw4NCwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsCisgICAgMjU1LDQxLDE5LDExNCw4LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNjksMCwKKyAgICAwLDAsMTE0LDcwLDAsMCwwLDExNCwzLDAsMCwwLDExNCw2NywwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCw3NSwwLDAsMCwKKyAgICAxMTQsNTAsMCwwLDAsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDExNCwzNiwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCwzMywwLDAsMCwKKyAgICAxMTQsNzQsMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTQsMzAsMCwwLDAsMjE4LDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LAorICAgIDcwLDcwLDczLDg4LDY5LDgzLDQxLDgsMTE0LDM3LDAsMCwwLDExNCw4MCwwLAorICAgIDAsMCw5MCwxNiwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDkwLDcsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDksMTAwLAorICAgIDExMSwxMTYsOTUsOTksMTExLDExNywxMTAsMTE2LDExNCw2MCwwLDAsMCw5MCw5LDExMSwKKyAgICAxMTIsMTE2LDk1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsMTMsOTgsOTcsMTE1LDEwMSw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLAorICAgIDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsNTIsMSwwLDAsMTE1LDQ2LDAsCisgICAgMCwwLDAsOSwxMiwxLDgsMSwxMCwxLDEyLDEsMTIsMSw4LDEsCisgICAgNiwxLDEwLDEsMTAsMSw4LDEsNiwxLDEwLDEsOCwxLDE2LDEsCisgICAgMTAsMSw2LDEsOCwxLDE2LDEsOCwxLDYsMSw4LDEsMTQsMSwKKyAgICAxMTQsODksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwKKyAgICAwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyOCwwLDAsMCwxMTYsCisgICAgMCwxMjQsMCwxMzEsMSwxMDAsMSwxMDcsMiwxMTQsMTYsMTAwLDIsODMsMCwxMjQsCisgICAgMCwxMDYsMSwxMDAsMywxMzEsMSw5MiwzLDEyNSwxLDEyNSwyLDEyNSwzLDEyNCwKKyAgICAxLDEyLDAsMTE1LDU4LDEyNCwzLDEwNiwyLDEzMSwwLDEwMCw3LDEwMCw4LDEzMywKKyAgICAyLDI1LDAsMTAwLDYsMTA3LDMsMTE0LDYyLDEyNCwwLDgzLDAsMTIxLDEyLDExNiwKKyAgICAzLDEyNCwwLDEzMSwxLDEyNSw0LDg3LDAsMTEwLDM2LDQsMCwxMTYsNCwxMTYsCisgICAgNSwxMDIsMiwxMDcsMTAsMTE0LDExMCwxLDAsMSwwLDEsMCwxMjQsMCwxMDAsCisgICAgMiwxMDAsOSwxMzMsMiwyNSwwLDEyNSw0LDg5LDAsMTEwLDIsODgsMCwxMTYsCisgICAgNiwxMjQsNCwxMzEsMSwxMTQsMTI0LDEyNCw0LDgzLDAsMTI0LDAsODMsMCw0MSwKKyAgICAxMCwxMjIsMTg4LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDk3LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsNDAsMTA1LDEwMiwzMiwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsNDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMiwxMTcsMTE0LDEwMSwxMDgsMTIxLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCwxMTUsNDUsOTksCisgICAgMTExLDEwOSwxMTIsOTcsMTE2LDEwNSw5OCwxMDUsMTA4LDEwNSwxMTYsMTIxLDMyLDEwMiwxMTEsMTE0LAorICAgIDEwLDMyLDMyLDMyLDMyLDgwLDEyMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDk1LDY5LDEyMCwKKyAgICAxMDEsOTksNjcsMTExLDEwMCwxMDEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4NywxMDUsMTE2LDEwNCwKKyAgICA3MCwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsNDAsNDEsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiw2NywzMiw2NSw4MCw3Myw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCisgICAgNjIsMCwwLDAsNzgsMTE0LDYxLDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsCisgICAgMzEsMCwwLDAsOTAsMiwxMTIsMTIxLDIzMywyNTMsMjU1LDI1NSwyNTUsMjMzLDI1NSwyNTUsCisgICAgMjU1LDI1NSwxMTQsOTEsMCwwLDAsNDEsNywxMTQsMzMsMCwwLDAsMTE0LDM0LAorICAgIDAsMCwwLDIxOCw1LDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE0LDg5LDAsMCwwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDQ2LDAsMCwwLDQxLDUsCisgICAgMjE4LDEzLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwKKyAgICA4MiwwLDAsMCwxMTQsMzgsMCwwLDAsOTAsOSwxMDEsMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsMTUsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsODYsMSwwLDAsMTE1LDIwLDAsMCwwLDAsNywxMiwxLDQsMSwKKyAgICAxNiwxLDI2LDEsNCwxLDIsMSwxMiwxLDE4LDEsMTgsMSwxMTQsOTUsCisgICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDExNiwxLDExNiwyLDEzMSwxLDEzMSwxLDExNCw0NiwxMjEsOCwxMTYsMywxMjQsCisgICAgMCwxMzEsMSw4MywwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQyLDEsMCwxLAorICAgIDAsMSwwLDg5LDAsMTEzLDY4LDg4LDAsMTEwLDIyLDEyNCwwLDEwNiwwLDExNiwKKyAgICAxLDExNiw1LDEzMSwxLDEzMSwxLDExNCw2NCwxMjQsMCw4MywwLDEwMCwwLDgzLAorICAgIDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDYsMjE4LDgsMTAxLDExMCwxMDAsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsNSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNCw4OCwwLDAsMCwKKyAgICAxMTQsODMsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCw3OCwwLDAsMCw0MSwKKyAgICAxLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsMTAzLDEwMSwxMTYsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsMTA1LDEsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAwLDEsMTQsMSwyLDEsOCwxLDE0LDEsOCwxLDE0LDEsNCwyLAorICAgIDExNCw5OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTIxLAorICAgIDE0LDExNiwwLDEyNCwwLDEzMSwxLDEwNiwxLDEyNSwxLDg3LDAsMTEwLDI0LDQsCisgICAgMCwxMTYsMiwxMDcsMTAsMTE0LDM4LDEsMCwxLDAsMSwwLDEwMCwxLDEyNSwKKyAgICAxLDg5LDAsMTEwLDIsODgsMCwxMjQsMSwxMDAsMiw3OSwwLDEyNSwxLDEyNCwKKyAgICAxLDgzLDAsNDEsMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKICAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsCiAgICAgMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSwKICAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLDAsMCwyMzMsCiAgICAgMTI4LDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLDExNCw0MywwLDAsMCwKICAgICAxMTQsNDIsMCwwLDAsNDEsMiwxMTQsMzcsMCwwLDAsMTE0LDQ0LDAsMCwKICAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwxMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDEwNiwxLDAsMCwKLSAgICAxMTUsMTIsMCwwLDAsMCwyLDMsMSwxOSwxLDEzLDEsMTEsMywxMCwKLSAgICAxLDExNCw5OSwwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsCi0gICAgMTIxLDExNCwzMSwwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LAotICAgIDcxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsCi0gICAgMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLAotICAgIDAsMTA2LDUsMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLAotICAgIDEwNiw2LDAsMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsCi0gICAgMTE0LDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLAotICAgIDMyLDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsCi0gICAgNDcsODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDExNCw1NiwwLDAsCi0gICAgMCw3OCw0MSwyLDExNCwxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw3LAotICAgIDExNCw4LDAsMCwwLDExNCw2OSwwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwKLSAgICAxMTEsMTE1LDEwMSwxMTQsMTAsMCwwLDAsMjE4LDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsCi0gICAgNDksMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDEsMywxMTQsNzcsCi0gICAgMCwwLDAsMTE0LDEwMCwwLDAsMCwyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE4LAotICAgIDEsMCwwLDExNSw4LDAsMCwwLDAsMiwxOCwxLDE1LDEsMTAsMSwKLSAgICAxMTQsMTA3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDg0LDAsMCwwLDEwMCwKLSAgICAxLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMSwKLSAgICAwLDEyNSwxLDAsMTIxLDEzLDAsMTE2LDAsMCwxMDYsMSwwLDEyNSwyLDAsCi0gICAgODcsMTEwLDMwLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2NiwwLDEsMSwKLSAgICAxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNSwyLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjQsMiwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LAotICAgIDEsMCw4Myw0MSw2LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsCi0gICAgMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwzMiwxMDQsOTcsCi0gICAgMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsNDAsMTE1LAotICAgIDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwKLSAgICAzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCi0gICAgMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTAxLDEwMCwKLSAgICAzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiw5NywxMDUsMTA4LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDUsMCwwLDAsMzEsMCwwLDAsMTE1LDg5LDAsMCwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMjUsMSwwLDExMCw0NiwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNywKLSAgICAzLDAsMTE0LDcwLDAsMTE2LDEsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMjQsMSwwLDEwMiwyLDAsMjIsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLAotICAgIDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTQyLDIsMCw4Myw0MSwzLDc4LDEyMiwzMCwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwzNywxMTUsMjE4LDQsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDEsMiwxMTQsMTA4LDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAotICAgIDExNCwxMTQsMTExLDExNCw0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDQxLDEsCi0gICAgMjE4LDYsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDE5LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LAotICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDEzNCwxLDAsMCwxMTUsMTIsMCwwLDAsCi0gICAgMCwxLDEyLDEsMTIsMSwxNSwxLDYsMSwyNSwxLDEyMiw0MCw5NSw5OSwKLSAgICAxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsNjIsNDYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LAotICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsNywwLDAsMCw4MywwLDAsMCwxMTUsOTIsMCwwLDAsCi0gICAgMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDMsCi0gICAgNCwwLDY4LDkzLDQ2LDAsMTI1LDIsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDExNCwxOSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMiwKLSAgICAwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTMxLDMsMCwKLSAgICAxLDExMywxOSwwLDg3LDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsMTA2LDMsMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MSw1LDc4LDIxOCwKLSAgICAxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsCi0gICAgOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTUsOTUsMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw1LDIxOCw3LAotICAgIDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsCi0gICAgMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwKLSAgICAxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLAotICAgIDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwxMTQsNTQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDUsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTQ1LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwyNSwxLDE1LAotICAgIDEsMjksMSwxMjIsMjYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExOSwxMTQsOTcsMTEyLDQxLAotICAgIDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTQsMTIyLDAsCi0gICAgMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDQxLDMsMTE0LAotICAgIDExMSwwLDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTExLDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKLSAgICAxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMjYsMSwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsOCwyMSw3LDMsMSwxMywxLDEzLDIsMTcsCi0gICAgNSwxMywxLDExNCwxMjUsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODQsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLAotICAgIDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLAotICAgIDExNCw4MCwwLDExNiwxLDAsMTI0LDMsMCwxMzEsMSwwLDExNCw4MCwwLDEwMCwKLSAgICAyLDAsMTI1LDQsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDQsMCwxMDYsNCwKLSAgICAwLDEyNCwzLDAsMTAwLDMsMCwyNSwxMzEsMSwwLDExNiw1LDAsMTMxLDIsCi0gICAgMCwxLDEyNCwyLDAsODMsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwKLSAgICAzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLAotICAgIDk3LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LAotICAgIDEwMiw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLAotICAgIDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwKLSAgICAxMjMsMTI1LDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYxLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAotICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjIsMCwKLSAgICAwLDAsMTE0LDYzLDAsMCwwLDExNCw0OSwwLDAsMCwyMTgsMTMsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAotICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDE1NCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwKLSAgICAyMSwxLDI0LDEsNiwxLDI5LDEsMTE0LDEzMiwwLDAsMCw5OSw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTEsMCwwLDAsMTksMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDUsMCwwLDEyNSw0LDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDMxLDAsMTI0LDIsMCwxMjQsNCwwLDEwMCwKLSAgICAyLDAsNjAsMTEwLDYsMCwxMDAsMywwLDEyNSwyLDAsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDU5LDAsMTI0LDMsMCwxMjQsNCwwLDEwMCw0LAotICAgIDAsNjAsMTI0LDAsMCwxMDAsMSwwLDEwMCw1LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNSwwLDEyNCwwLDAsMTAwLDUsMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LAotICAgIDYsMCwxMjQsMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA3LDAsMTI0LDUsMCwxMTYsMCwwLDEwNywzLDAsMTE0LDE2OCwwLDEwMCw4LAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCw1LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLAotICAgIDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDExOSwwLDExNiwKLSAgICA0LDAsMTI0LDYsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjI5LAotICAgIDAsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwKLSAgICAxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsNCwwLDEyNCwKLSAgICA3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDMxLDEsMTAwLDExLAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLAotICAgIDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCi0gICAgMjI2LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMiwwLDI1LDEzMSwKLSAgICAxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsCi0gICAgMTE0LDgzLDEsMSwxLDEsODksMTEwLDYyLDAsODgsMTE2LDgsMCwxMjQsNiwKLSAgICAwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxNDUsMSwxMDAsMTMsMCwKLSAgICAxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTAwLAotICAgIDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LAotICAgIDQsMCwxNDEsMSwwLDEzMCwxLDAsMTIxLDE4LDAsMTI0LDEsMCwxMDAsMTQsCi0gICAgMCwyNSwxMDAsMTUsMCw2NCwxMjUsMTAsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE4MywxLDEsMSwxLDg5LDExMCw0MywwLDg4LDExNiwKLSAgICA4LDAsMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDIyNiwKLSAgICAxLDExNiwzLDAsMTAwLDEzLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDAsNywwLDEwMCwKLSAgICAxLDAsMTMzLDIsMCwyNSw4Myw0MSwxNiw5NywxMjIsMSwwLDAsODYsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDQsMTAxLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCw0NSwKLSAgICAxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDEwMyw5NywxMDUsCi0gICAgMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsCi0gICAgMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDQxLDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsMTAxLDExNCwzMiw5NywxMTQsMTAzLAotICAgIDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMTUsMTE2LDk3LAotICAgIDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCwxMDgsMCwwLDAsMTIyLDEwLAotICAgIDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLDExNCwzNywwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLDEyLDAsMCwwLDEyMiwzMCwKLSAgICA5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwKLSAgICAzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDEyMiwyLAotICAgIDEyMywxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsCi0gICAgMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAotICAgIDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwKLSAgICAxMjcsMjU1LDEyNywzLDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCi0gICAgODUsNzcsNjYsNjksODIsMTE0LDQ5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LAotICAgIDEwOSwwLDAsMCwxMTQsMzMsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsMTEsMTE0LDU1LDAsMCwwLDIxOCwxMiwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMTE0LDc3LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MSwxLDAsCi0gICAgMCwxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwKLSAgICAxMiwxLDEwLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEzLDEsCi0gICAgMTgsMSwxOCwxLDE1LDEsMTMsMSwxNSwxLDE4LDEsMTUsMSwxMywxLAotICAgIDEyLDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgMTMsMSwxNSwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwKLSAgICA5LDEsMTE0LDE0MywwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LAotICAgIDQsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsCi0gICAgMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsCi0gICAgODMsNDEsNiwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsCi0gICAgNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsCi0gICAgMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsOSwyMTgsNywKLSAgICAxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwKLSAgICAxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDEwNywwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LAotICAgIDExMiw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMDksMCwwLDAsMTE0LDQ5LDAsMCwwLDQxLDUsMTE0LAotICAgIDU1LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5MiwKLSAgICAwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI2LDEsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLAotICAgIDQsMiwxOCwxLDExNCwxNDksMCwwLDAsMTE0LDYxLDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwKLSAgICAxMjQsMywwLDgzLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLAotICAgIDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLAotICAgIDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLAotICAgIDk3LDExNCwxMTQsOTcsMTIxLDExNCwxMzcsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDQsMCwwLDAsOTAsNSwxMDAsMTE3LAotICAgIDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE0OCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKLSAgICAxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIzOCwxLDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MiwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLAotICAgIDEwMCwyLDAsMTA4LDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsCi0gICAgMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKLSAgICA2LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMTcsMSwwLDAsCisgICAgMTE1LDEyLDAsMCwwLDAsMiwyLDEsMTQsMSwxNCwxLDEwLDMsOCwKKyAgICAxLDExNCwxMDEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsNjgsMCwwLDAsCisgICAgMTAwLDYsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDksMTI1LDEsMTIxLDEwLAorICAgIDExNiwwLDEwNiwxLDEyNSwyLDg3LDAsMTEwLDI4LDQsMCwxMTYsMiwxMDcsMTAsCisgICAgMTE0LDUyLDEsMCwxLDAsMSwwLDEwMCw0LDEwMCw1LDEzMiwwLDEyNSwyLAorICAgIDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsCisgICAgMTI0LDEsODMsMCw0MSw3LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKKyAgICAxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsMTA1LDExMCwKKyAgICAxMDMsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwKKyAgICAxMDQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsNDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLAorICAgIDEwMSwzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTAxLAorICAgIDEwMCwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiw5NywxMDUsCisgICAgMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsCisgICAgMCwwLDQsMCwwLDAsMzEsMCwwLDAsMTE1LDY2LDAsMCwwLDEyNCwKKyAgICAxLDEwMCwwLDEwNyw4LDExNCwxNiwxMjQsMCwxMDYsMCwxMjUsMSwxMTAsMzIsMTI0LAorICAgIDAsMTA2LDAsMTI0LDEsMTA3LDMsMTE0LDQ4LDExNiwxLDEwMCwxLDEyNCwwLDEwNiwKKyAgICAwLDEyNCwxLDEwMiwyLDIyLDAsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTM2LAorICAgIDAsMTI0LDAsMTI0LDEsMTAyLDIsMTI0LDIsMTU4LDIsMTI0LDMsMTQyLDEsODMsCisgICAgMCw0MSwzLDc4LDEyMiwzMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwxMDAsMTA4LAorICAgIDEwMSwzMiwzNywxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSw0MSwyLDExNCwxMDIsCisgICAgMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDIsMCwwLDAsMjE4LDQsOTcsCisgICAgMTE0LDEwMywxMTUsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDQxLDEsMjE4LDYsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDE5LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDEzNywxLDAsMCwxMTUsMTIsMCwwLDAsMCwxLDgsCisgICAgMSw4LDEsMTAsMSw0LDEsMTgsMSwxMjIsNDAsOTUsOTksMTA0LDEwMSw5OSwKKyAgICAxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDcsMCwwLDAsODMsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsCisgICAgNSw2OCwwLDkzLDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCwKKyAgICA2LDExNiwxLDEyNCwwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwKKyAgICAzLDEsMCwxMTMsNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwKKyAgICAzLDEzMSwxLDEsMCwxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLDk1LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDQsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTA5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCw0MSwKKyAgICA1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsCisgICAgMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsCisgICAgMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLAorICAgIDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwxMTQsNTUsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDUsCisgICAgOTUsMTE5LDExNCw5NywxMTIsMTQ4LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwKKyAgICAxMCwxLDEwLDEsMjIsMSwxMjIsMjYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDQxLDEsNzgsNDEsMywyMTgsMTAsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDExNCwxMTcsMCwwLDAsMjE4LDksNzgsOTcsMTA5LDEwMSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsNDEsMywxMTQsMTA2LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LAorICAgIDExNywwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwxMDYsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDEyOSwxLDAsMCwxMTUsMTQsMCwwLDAsMCw4LDE0LDcsMiwKKyAgICAxLDEwLDEsMTQsMiwxNCw1LDEwLDEsMTE0LDEyMCwwLDAsMCw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw2MCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwKKyAgICA5MiwyLDEyNSwyLDEyNSwzLDEyNCwyLDEwMCwxLDEwNyw4LDExNCw1NiwxMTYsMSwKKyAgICAxMjQsMywxMzEsMSwxMTQsNTYsMTAwLDIsMTI1LDQsMTE2LDIsMTA2LDMsMTI0LDQsCisgICAgMTA2LDQsMTI0LDMsMTAwLDMsMjUsMCwxMzEsMSwxMTYsNSwxMzEsMiwxLDAsCisgICAgMTI0LDIsODMsMCw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLAorICAgIDMyLDEwMiw5NywxMTgsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMjIsNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsCisgICAgNTgsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSw5NSwxMTQsNjIsMCwwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDMzLDAsMCwwLDExNCw2MywwLDAsMCwKKyAgICAxMTQsNjQsMCwwLDAsMTE0LDUwLDAsMCwwLDIxOCwxMyw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDEsNSwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDIxOCw4LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsMTA5LDExNSwKKyAgICAxMDMsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsCisgICAgMTA0LDEwNSwxMDksMTU3LDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLDE0LDEsCisgICAgMTYsMSw0LDEsMjIsMSwxMTQsMTI3LDAsMCwwLDk5LDQsMCwwLDAsCisgICAgMCwwLDAsMCwxMSwwLDAsMCwyMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTM2LDEsMCwwLDEwNSwwLDEyNSw0LDEyNCwyLDEwMCwxLDEwNyw5LDExNCwKKyAgICAyMiwxMjQsMiwxMjQsNCwxMDAsMiw2MCwwLDExMCw0LDEwMCwzLDEyNSwyLDEyNCwKKyAgICAzLDEwMCwxLDEwNyw5LDExNCw0MiwxMjQsMywxMjQsNCwxMDAsNCw2MCwwLDEyNCwKKyAgICAwLDEwMCwxLDEwMCw1LDEzMywyLDI1LDAsMTI1LDUsMTI0LDAsMTAwLDUsMTAwLAorICAgIDYsMTMzLDIsMjUsMCwxMjUsNiwxMjQsMCwxMDAsNiwxMDAsNywxMzMsMiwyNSwKKyAgICAwLDEyNSw3LDEyNCw1LDExNiwwLDEwNywzLDExNCwxMjQsMTAwLDgsMTA2LDEsMTI0LAorICAgIDIsMTI0LDUsMTMxLDIsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLAorICAgIDIsMSwwLDExNiw0LDEyNCw4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwxLDExMCwKKyAgICA4NiwxMTYsNSwxMjQsNiwxMzEsMSwxMDAsNSwxMDcsMywxMTQsMTY4LDEwMCwxMCwxMDYsCisgICAgMSwxMjQsMiwxMzEsMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsCisgICAgMiwxLDAsMTE2LDYsMTI0LDgsMTMxLDEsMTMwLDEsMTEwLDQyLDExNiw1LDEyNCwKKyAgICA3LDEzMSwxLDEwMCw1LDEwNywzLDExNCwyMTAsMTAwLDExLDEwNiwxLDEyNCwyLDEzMSwKKyAgICAxLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwyLDEsMCwxMTYsCisgICAgNiwxMjQsOCwxMzEsMSwxMzAsMSwxMjQsMSwxMDAsMSwxMDcsOSwxNDQsMSwxMTQsCisgICAgMTI0LDEyMSwxNiwxMTYsNywxMjQsMSwxMDAsMTIsMjUsMCwxMzEsMSwxMjUsOSw4NywKKyAgICAwLDExMCwyMiw0LDAsMTE2LDgsMTA3LDEwLDE0NCwxLDExNCwyLDEsMCwxLAorICAgIDAsMSwwLDg5LDAsMTEwLDUwLDg4LDAsMTE2LDksMTI0LDYsMTMxLDEsMTI0LAorICAgIDksMTA3LDMsMTQ0LDEsMTE0LDUyLDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsMSwxMjUsCisgICAgOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LDQsMTI0LAorICAgIDgsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLDEsMTIxLDE2LDEyNCwxLDEwMCwxNCwyNSwKKyAgICAwLDEwMCwxNSw2NCwwLDEyNSwxMCw4NywwLDExMCwyMiw0LDAsMTE2LDgsMTA3LAorICAgIDEwLDE0NCwxLDExNCw5MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwzNCw4OCwKKyAgICAwLDExNiw5LDEyNCw3LDEzMSwxLDEyNCwxMCwxMDcsMywxNDQsMSwxMTQsMTI0LDExNiwKKyAgICA0LDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsMSwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsCisgICAgMSwxMjQsMCwxMDAsNywxMDAsMSwxMzMsMiwyNSwwLDgzLDAsNDEsMTYsOTcsCisgICAgMTIyLDEsMCwwLDg2LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTUsMTE1LDEwMSwxMDAsNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLAorICAgIDEwNSwxMTgsMTAxLDExMCw0MSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwKKyAgICA0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LAorICAgIDEwMSwxMTQsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLAorICAgIDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsCisgICAgMzIsMTAxLDExNCwxMTQsMTExLDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCisgICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LAorICAgIDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsCisgICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTE1LDExNiw5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLAorICAgIDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsCisgICAgMTE3LDExMCw5OSw5NywxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsCisgICAgMTAyLDAsMCwwLDEyMiwxMCw2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDIzMyw4LDAsMCwwLDIzMywKKyAgICAxMiwwLDAsMCwxMjIsMzAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLAorICAgIDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSwxMjIsMiwxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsCisgICAgMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDEyMiw0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LAorICAgIDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsCisgICAgMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsCisgICAgMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwKKyAgICAxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQxLDEwLDIxOCwxMiw3NywKKyAgICA2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNTAsMCwwLDAsCisgICAgMTE0LDExOCwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsCisgICAgMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDEwMywwLDAsMCwxMTQsMzMsMCwwLAorICAgIDAsMjE4LDgsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwKKyAgICAyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsCisgICAgMTEsMTE0LDU2LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwKKyAgICAxMTYsOTcsMTE2LDExNSwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw5MCwxMSwKKyAgICAxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywKKyAgICAxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksCisgICAgMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LDc5LDAsMCwwLAorICAgIDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LAorICAgIDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsCisgICAgMTAxLDk3LDEwMCwxMDEsMTE0LDE3NCwxLDAsMCwxMTUsNzYsMCwwLDAsMCwxMSwKKyAgICA0LDEsOCwxLDEwLDMsNCwxLDgsMSw4LDEsMTIsMSwxMiwxLAorICAgIDEyLDEsOCwxLDEyLDEsMTIsMSwxNCwxLDEyLDEsMTAsMSwxMiwxLAorICAgIDEwLDEsMTIsMSwxMCwxLDEyLDEsOCwxLDEwLDEsMiwxLDE2LDEsCisgICAgMTYsMSw2LDIsMTQsMSwxMCwxLDEyLDEsMTIsMSwyLDEsMTYsMSwKKyAgICAxNiwxLDYsMiwxNCwxLDEyLDEsNiwxLDExNCwxMzksMCwwLDAsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsODAsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTMxLAorICAgIDEsMTI1LDQsMTE2LDIsMTI0LDQsMTE2LDMsMTMxLDIsMTE0LDU2LDExNiw0LDEwNiwKKyAgICA1LDEwMCwxLDEyNCwyLDEzMSwyLDEsMCwxMjQsMywxMDAsMiwxMDcsOSwxMTQsCisgICAgNTIsMTE2LDYsMTA2LDcsMTI0LDQsMTI0LDMsMTMxLDIsMSwwLDEyNCw0LDgzLAorICAgIDAsMTE2LDgsMTAwLDMsMTA2LDksMTI0LDIsMTMxLDEsMTI0LDEsMTI0LDIsMTAwLAorICAgIDQsMTQxLDMsMTMwLDEsMTAwLDIsODMsMCw0MSw1LDEyMiw2MCw2NywxMTEsMTA5LAorICAgIDExMiwxMDUsMTA4LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTUsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTUsMTE4LDk3LAorICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsCisgICAgMTA0LDEwMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMjIsMjEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICA3OCwxMjIsMjMsNzgsMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwyLDExNCwxMDIsMCwwLAorICAgIDAsMTE0LDM3LDAsMCwwLDQxLDEwLDIxOCw3LDEwOSw5NywxMTQsMTE1LDEwNCw5NywKKyAgICAxMDgsOTAsNSwxMDgsMTExLDk3LDEwMCwxMTUsMjE4LDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDk3LDExMCw5OSwxMDEsMjE4LDEwLDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwKKyAgICAxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsCisgICAgOTAsMTYsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsMTAzLDAsMCwwLDExNCw1MCwwLDAsMCw0MSw1LDExNCw1NiwKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsCisgICAgMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyOSwxLDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMCwyLDEwLDEsMTAsMSwxMiwxLDgsMSwxMiwxLDQsCisgICAgMiwxMCwxLDExNCwxNDUsMCwwLDAsMTE0LDYyLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDU2LDAsMCwwLDExNiwwLDExNiwxLDEzMSwxLDEyNSwzLDEyNCwKKyAgICAzLDEwNiwyLDExNiwzLDEyNCwxLDEzMSwxLDEzMSwxLDEsMCwxMjQsMywxMDYsCisgICAgMiwxMTYsMywxMjQsMiwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsMTA2LDIsMTE2LAorICAgIDQsMTA2LDUsMTI0LDAsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDgzLDAsNDEsCisgICAgMSwxMjIsODAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMTE2LDExMSwzMiw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDExNywxMTYsMzIsMTE2LDExMSwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSwKKyAgICA0NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDQ2LDQxLDYsMjE4LDksOTgsMTIxLDExNiwxMDEsOTcsMTE0LDExNCw5NywxMjEsCisgICAgMTE0LDEzMiwwLDAsMCwyMTgsNiwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDE0MCwwLDAsMCw5MCw1LDEwMCwxMTcsMTA5LDExMiwxMTUsNDEsNCwKKyAgICAxMTQsMTQ0LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDEzOCwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMTEsOTUsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjQxLDEsMCwwLDExNSwxMCwwLDAsMCwwLAorICAgIDMsOCwxLDE0LDEsMTQsMSwxNiwxLDExNCwxNDgsMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNjIsMCwwLDAsMTAwLDEsMTAwLDIsMTA4LDAsMTI1LDEsCisgICAgMTE2LDEsMTA2LDIsMTI0LDAsMTMxLDEsMTA2LDMsMTI1LDIsMTI0LDEsMTA2LDQsCisgICAgMTI0LDIsMTMxLDEsMTI1LDMsMTE2LDEsMTA2LDUsMTAwLDIsMTAwLDMsMTMxLDIsCisgICAgMTI1LDQsMTI0LDQsMTA2LDYsMTI0LDAsMTA2LDYsMTI0LDMsMTAwLDEsMjUsMCwKKyAgICAxMzEsMSwxMzEsMSw4MywwLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsCiAgICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LAogICAgIDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsCiAgICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCkBAIC03OTMsOTggKzcxOSw5MiBAQAogICAgIDEwMSwxMTQsMTE1LDk3LDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywKICAgICAxMTIsMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsCiAgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsCi0gICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDUxLDAsMCwwLDkwLDcsNjYsMTIxLDExNiwKKyAgICAzMiwzMiwzMiwxMTQsNjIsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsMTExLAorICAgIDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw1MiwwLDAsMCw5MCw3LDY2LDEyMSwxMTYsCiAgICAgMTAxLDExNSw3Myw3OSw5MCw4LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSw5MCwxNSwKICAgICAxMDAsMTAxLDExNiwxMDEsOTksMTE2LDk1LDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwKICAgICAyNSw3MywxMTAsOTksMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwxMTksMTA4LAogICAgIDEwNSwxMTAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjE4LDYsMTAwLDEwMSw5OSwxMTEsCiAgICAgMTAwLDEwMSw0MSw1LDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSwxMTQsMTUzLDAsMCwwLDkwLDIxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCisgICAgMTAxLDExNSwxMTQsMTQ5LDAsMCwwLDkwLDIxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCiAgICAgOTgsMTIxLDExNiwxMDEsMTE1LDk1LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwyMTgsOCwKICAgICAxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsMTUsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsCiAgICAgMTAxLDk1LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LAogICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMywxMDAsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjQ4LDEsMCwwLDExNSwxMCwwLDAsMCwKLSAgICAwLDUsMTIsMSwxOCwxLDE1LDEsMTgsMSwxMTQsMTU3LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCi0gICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwKLSAgICA5OSwyLDAsMCwwLDIsMCwwLDAsOSwwLDAsMCwxOSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsODksMSwwLDAsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDczLDAsMTAwLDIsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDIsMCwxMDAsMywwLDEzMSwyLDAsMTE0LDczLDAsMTIxLDE5LDAsMTI0LDIsCi0gICAgMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDg3LDExMCwxOCwKLSAgICAwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNzIsMCwxLDEsMSw4OSwxMTAsCi0gICAgMSwwLDg4LDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEyNCwyLDAsMTAwLAotICAgIDQsMCwxMjQsMSwwLDEzMSwyLDEsMTI1LDQsMCwxMDAsNSwwLDEyNCw0LAotICAgIDAsOTUsNSwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxOTQsMCwKLSAgICAxMjAsNzMsMCwxMTYsNiwwLDEzMSwwLDAsNjgsOTMsNTgsMCw5MiwyLDAsCi0gICAgMTI1LDUsMCwxMjUsNiwwLDEyNCwxLDAsMTA2LDcsMCwxMTYsOCwwLDEyNCwKLSAgICA2LDAsMTMxLDEsMCwxMzEsMSwwLDExNCwxMjgsMCwxMjQsNSwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsNCwwLAotICAgIDk1LDksMCw4MCwxMTMsMTI4LDAsODcsMTAwLDEsMCw4MywxMjQsMywwLDExNiwKLSAgICAxMCwwLDEwNyw4LDAsMTE0LDIzLDEsMTE2LDAsMCwxMjQsMiwwLDEwMCw2LAotICAgIDAsMTMxLDIsMCwxMTQsMzIsMSwxMjEsMTksMCwxMjQsMiwwLDEwNiwxMSwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwxOCwwLDQsMTE2LDIsCi0gICAgMCwxMDcsMTAsMCwxMTQsNCwxLDEsMSwxLDg5LDExMywzMiwxLDg4LDEyNCwKLSAgICA3LDAsMTE0LDMyLDEsMTAzLDAsMCwxMjQsNCwwLDk1LDEyLDAsMTEwLDksCi0gICAgMCwxMjQsMywwLDEyNCw0LDAsOTUsMTIsMCwxMjQsNCwwLDEwNiwxMiwwLAotICAgIDEwMywwLDAsMTA3LDIsMCwxMTQsODUsMSwxMjQsMSwwLDExNCw4NSwxLDExNiwKLSAgICAxMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsNywwLDI1LDEyNSw4LDAsMTI0LAotICAgIDQsMCwxMDYsMTIsMCwxMDYsMTQsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMjQsCi0gICAgNCwwLDgzLDQxLDgsOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKLSAgICAzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCwKLSAgICA5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsCi0gICAgMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsCi0gICAgMTA4LDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LAotICAgIDEyMSwzMiwxMTIsOTcsMTE2LDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LAotICAgIDExNywxMDIsMTAyLDEwNSw5OSwxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywKLSAgICAxMDQsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksCi0gICAgMTA1LDExNSwxMDEsMzIsMTE3LDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LAotICAgIDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwKLSAgICAxMjEsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwKLSAgICAxMTksMTEwLDYyLDIxOCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKLSAgICAxMDEsMjE4LDYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsODQsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCw2MSwwLDAsMCw0MSwxNSwxMTQsMTE3LDAsCi0gICAgMCwwLDExNCwxNTksMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTIzLDAsMCwKLSAgICAwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTAsMTMsOTUsCi0gICAgMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsCi0gICAgMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDk0LDAsMCwwLDExNCw5NSwKLSAgICAwLDAsMCwxMTQsMTI5LDAsMCwwLDIxOCw5LDk1LDgwLDc5LDgwLDg1LDc2LAotICAgIDY1LDg0LDY5LDExNCwxNjEsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsNDAsMCwKLSAgICAwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MSw5LDExNCwxMDgsMCwwLAotICAgIDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTI5LDAsMCwwLAotICAgIDExNCwxNTgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwKLSAgICAxMjAsMTAxLDExNSwxMTQsMTYxLDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOSwyLDAsMCwxMTUsNjAsMCwKLSAgICAwLDAsMCwxMiwxMiw0LDYsMSwxNSwyLDMsMSwxOSwxLDEzLDEsCi0gICAgNSw4LDI0LDEsOSwzLDEyLDEsMjIsMSwyMSwxLDE1LDEsOSwxLAotICAgIDUsMiw0LDMsMTIsMiwxNSwxLDMsMSwxOSwxLDEzLDEsNSwyLAotICAgIDYsMSwxMiwyLDksMSwxNSwxLDYsMSwxNiwxLDE2LDIsMTE0LDE2OSwKLSAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICA1LDAsMCwwLDY0LDAsMCwwLDExNSwxMjEsMCwwLDAsMTAxLDAsMCwKLSAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAotICAgIDIsMCw5MCw0LDAsMTAwLDMsMCw5MCw1LDAsMTAwLDQsMCw5MCw2LAotICAgIDAsMTAxLDcsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCwxMzEsMSwwLAotICAgIDkwLDgsMCwxMDEsNywwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsOSwwLDEwMSw3LDAsMTAwLDksMCwxMDAsOSwwLDEwMCwxMCwKLSAgICAwLDEwMCwxMSwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LDAsCi0gICAgMTAwLDksMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMSwwLDEzMSwxLDAsOTAsCi0gICAgMTEsMCwxMDAsOSwwLDgzLDQxLDE0LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjUxLDEsMCwwLDExNSwxMCwwLDAsMCwKKyAgICAwLDUsOCwxLDEyLDEsMTAsMSwxMiwxLDExNCwxNTMsMCwwLDAsNDEsCisgICAgMiwxMTQsMTI0LDAsMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwxMTUsOTksMiwwLDAsMCwyLDAsMCwwLDksMCwwLDAsMTksCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE4LDEsMCwwLDEyNCwxLDEwMCwxLAorICAgIDEwNyw4LDExNCw2MCwxMDAsMiwxMjUsMSwxMTYsMCwxMjQsMiwxMDAsMywxMzEsMiwKKyAgICAxMTQsNzAsMTIxLDE0LDEyNCwyLDEwNiwxLDEyNCwwLDEzMSwxLDEyNSwxLDg3LDAsCisgICAgMTEzLDcwLDQsMCwxMTYsMiwxMDcsMTAsMTE0LDU2LDEsMCwxLDAsMSwwLAorICAgIDg5LDAsMTEzLDcwLDg4LDAsMTEwLDEwLDExNiwzLDEwNiw0LDEyNCwxLDEzMSwxLAorICAgIDEyNSwxLDExNiw1LDEwNiw2LDEyNCwwLDEyNCwyLDEyNCwxLDEwMCw0LDE0MSwzLAorICAgIDEyNSw0LDEwMCw1LDEyNCw0LDk1LDcsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDE1NiwKKyAgICAxMjAsNTQsMTE2LDgsMTMxLDAsNjgsMCw5Myw0MCw5MiwyLDEyNSw1LDEyNSw2LAorICAgIDEyNCwxLDEwNiw5LDExNiwxMCwxMjQsNiwxMzEsMSwxMzEsMSwxMTQsMTA4LDEyNCw1LAorICAgIDEyNCwwLDEyNCwxLDEzMSwyLDEyNSwyLDEyNCwyLDEyNCw0LDk1LDExLDgwLDAsCisgICAgMTEzLDEwOCw4NywwLDEwMCwxLDgzLDAsMTI0LDMsMTE2LDEyLDEwNyw4LDExNCwyMjIsCisgICAgMTE2LDAsMTI0LDIsMTAwLDYsMTMxLDIsMTE0LDIyOCwxMjEsMTQsMTI0LDIsMTA2LDEzLAorICAgIDEyNCwwLDEzMSwxLDEyNSw3LDg3LDAsMTEwLDIwLDQsMCwxMTYsMiwxMDcsMTAsCisgICAgMTE0LDIwOCwxLDAsMSwwLDEsMCw4OSwwLDExMywyMjgsODgsMCwxMjQsNywKKyAgICAxMTQsMjI4LDEwMywwLDEyNCw0LDk1LDE0LDExMCw2LDEyNCwzLDEyNCw0LDk1LDE0LAorICAgIDEyNCw0LDEwNiwxNCwxMDMsMCwxMDcsMiwxNDQsMSwxMTQsMTQsMTI0LDEsMTQ0LDEsCisgICAgMTE0LDE0LDExNiwxNSwxMjQsMSwxMzEsMSwxMDAsNywyNSwwLDEyNSw4LDEyNCw0LAorICAgIDEwNiwxNCwxMDYsMTYsMTI0LDgsMTMxLDEsMSwwLDEyNCw0LDgzLDAsNDEsOCwKKyAgICA5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLAorICAgIDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwzMiwxMDUsMTEwLDEwMCwxMDUsCisgICAgOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LAorICAgIDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsCisgICAgMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsMzIsMTAxLDEwOSwxMTIsMTE2LAorICAgIDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDk5LAorICAgIDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSwzMiwxMTcsCisgICAgMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMyw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNjIsMjE4LDEyLAorICAgIDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCw2LAorICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDg0LDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTQsNjIsMCwwLDAsNDEsMTcsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTU1LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDY3LAorICAgIDAsMCwwLDExNCwxMTgsMCwwLDAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsCisgICAgMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKKyAgICAxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMjQsMCwwLDAsMjE4LAorICAgIDksOTUsODAsNzksODAsODUsNzYsNjUsODQsNjksMTE0LDE1NywwLDAsMCwxMTQsCisgICAgMTU0LDAsMCwwLDExNCw0MCwwLDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDQxLDksMTE0LDEwMiwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCwyMTgsNCwxMTUsMTEyLAorICAgIDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwKKyAgICAyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwxNTcsMCwwLDAsOTAsCisgICAgNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwKKyAgICAxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMiwyLDAsMCwxMTUsNjIsMCwwLDAsMCwxMiw4LDQsNCwxLDEwLAorICAgIDIsMiwxLDE0LDEsMTQsMSw4LDIsMTAsOCwxNiwxLDYsMyw4LAorICAgIDEsMTYsMSwxNCwxLDEwLDEsNiwxLDYsMiw0LDMsOCwyLDEwLAorICAgIDEsMiwxLDE0LDEsMTQsMSw2LDIsNCwxLDgsMiw2LDEsMTIsCisgICAgMSw2LDEsMTIsMSwxMiwyLDExNCwxNjUsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLAorICAgIDkwLDMsMTAwLDIsOTAsNCwxMDAsMyw5MCw1LDEwMCw0LDkwLDYsMTAxLDcsCisgICAgMTAwLDUsMTAwLDYsMTMyLDAsMTMxLDEsOTAsOCwxMDEsNywxMDAsNywxMDAsOCwKKyAgICAxMzIsMCwxMzEsMSw5MCw5LDEwMSw3LDEwMCwxNCwxMDAsMTAsMTAwLDExLDEzMiwxLAorICAgIDEzMSwxLDkwLDEwLDEwMSw3LDEwMCwxNSwxMDAsMTIsMTAwLDEzLDEzMiwxLDEzMSwxLAorICAgIDkwLDExLDEwMCw5LDgzLDAsNDEsMTYsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCiAgICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwKICAgICA2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCiAgICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLApAQCAtODk5LDEwNiArODE5LDEwMCBAQAogICAgIDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywKICAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLAogICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4NywxMTAsMzcsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLAotICAgIDEsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsNSwyMTgsNyw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsCi0gICAgMTEwLDc1LDEwMSwxMjEsOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksCi0gICAgNzgsODQsOTUsODUsODMsNjksODIsMTE0LDQyLDAsMCwwLDkwLDE4LDcyLDc1LAotICAgIDY5LDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LAotICAgIDQxLDIsMjE4LDMsOTksMTA4LDExNSwxMTQsNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwKLSAgICAxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsODcsMiwwLDAsMTE1LAotICAgIDgsMCwwLDAsMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwKKyAgICAwLDY3LDAsMCwwLDExNSw1MCwwLDAsMCwxMjEsMTQsMTE2LDAsMTA2LDEsCisgICAgMTE2LDAsMTA2LDIsMTI0LDEsMTMxLDIsODMsMCw0LDAsMTE2LDMsMTA3LDEwLAorICAgIDExNCw0NCwxLDAsMSwwLDEsMCwxMTYsMCwxMDYsMSwxMTYsMCwxMDYsNCwKKyAgICAxMjQsMSwxMzEsMiw4MywwLDg4LDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLAorICAgIDUsMjE4LDcsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTAsNyw3OSwxMTIsMTAxLDExMCwKKyAgICA3NSwxMDEsMTIxLDkwLDE3LDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LDc4LAorICAgIDg0LDk1LDg1LDgzLDY5LDgyLDExNCw0MiwwLDAsMCw5MCwxOCw3Miw3NSw2OSwKKyAgICA4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSw0MSwKKyAgICAyLDIxOCwzLDk5LDEwOCwxMTUsMTE0LDUsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsMTAxLAorICAgIDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDkyLDIsMCwwLDExNSw4LAorICAgIDAsMCwwLDAsMiwyLDEsMTQsMSwxNCwxLDEyMiwzNiw4NywxMDUsMTEwLAorICAgIDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0Niw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTEyLDAsMCwwLDEyNCwwLDEwNiwwLDExNCwKKyAgICAxNCwxMjQsMCwxMDYsMSwxMjUsMiwxMTAsNiwxMjQsMCwxMDYsMiwxMjUsMiwxMjQsCisgICAgMiwxMDYsMywxMjQsMSwxMDAsMSwxMTYsNCwxMDYsNSwxMDAsMCwxMDAsMiwxMzMsCisgICAgMiwyNSwwLDIyLDAsMTAwLDMsMTQxLDIsMTI1LDMsMTIxLDM4LDEyNCwwLDEwNiwKKyAgICA2LDEyNCwzLDEzMSwxLDE0MywxOCwxMjUsNCwxMTYsNywxMDYsOCwxMjQsNCwxMDAsCisgICAgNCwxMzEsMiwxMjUsNSw4NywwLDEwMCwwLDgxLDAsODIsMCw4OCwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsOSwxMDcsMTAsMTE0LDEwNiwxLDAsMSwwLDEsCisgICAgMCwxMDAsMCw4MywwLDg4LDAsMTI0LDUsODMsMCw0MSw1LDc4LDEyMiw1LAorICAgIDM3LDEwMCw0NiwzNywxMDAsMTE0LDU5LDAsMCwwLDQxLDIsMTE0LDEyMywwLDAsCisgICAgMCw5MCwxMSwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDMyLAorICAgIDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4NSw3MywKKyAgICA3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsNjksODksCisgICAgOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LAorICAgIDk1LDc1LDY5LDg5LDExNCw1MCwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTIsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsMTY5LDAsMCwKKyAgICAwLDExNCwxNjcsMCwwLDAsOTAsMTAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LDk3LDEwOCwKKyAgICAxMTcsMTAxLDExNCw0MiwwLDAsMCw0MSw2LDExNCwxNjgsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCw5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LDEwNywxMDEsCisgICAgMTIxLDExNCw1LDAsMCwwLDkwLDQsMTA0LDEwNywxMDEsMTIxLDIxOCw4LDEwMiwxMDUsCisgICAgMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwwLDAsMTE1LDIyLDAsMCwwLAorICAgIDAsMiw2LDEsOCwyLDYsMSw2LDEsMjIsMSwyLDEsMTIsMSwKKyAgICAyNiwxLDE0LDEsNiwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTUsCisgICAgMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3OCw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTIwLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwKKyAgICAxLDEyNSw0LDEyNCw0LDEwMCwwLDEwNyw4LDExNCwyMiwxMDAsMCw4MywwLDEyMSwKKyAgICAxMiwxMTYsMSwxMjQsNCwxMzEsMSwxLDAsODcsMCwxMTAsMjAsNCwwLDExNiwKKyAgICAyLDEwNywxMCwxMTQsNTQsMSwwLDEsMCwxLDAsMTAwLDAsODMsMCw4OCwKKyAgICAwLDEyMCw1OCwxMTYsMywxMzEsMCw2OCwwLDkzLDQ4LDkyLDIsMTI1LDUsMTI1LAorICAgIDYsMTI0LDQsMTA2LDQsMTE2LDUsMTI0LDYsMTMxLDEsMTMxLDEsMTE0LDY0LDExNiwKKyAgICA2LDEwNiw3LDEyNCwxLDEyNCw1LDEyNCwxLDEyNCw0LDEzMSwyLDEyNCw0LDEwMCwKKyAgICAxLDE0MSwzLDEyNSw3LDEyNCw3LDgzLDAsMTEzLDY0LDg3LDAsMTAwLDAsODMsCisgICAgMCw0MSwyLDc4LDQxLDEsMTE0LDE1NiwwLDAsMCw0MSw4LDExNCwxNzUsMCwKKyAgICAwLDAsMTE0LDQxLDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsMTU5LDAsMCwKKyAgICAwLDExNCw5NiwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDExOCwwLDAsMCwKKyAgICAyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDEsOCwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwxMTYsMTE0LDE3NCwwLDAsMCwKKyAgICAxMTQsMTI0LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTE0LDIsMCwwLDExNSwyNiwwLAorICAgIDAsMCwwLDIsMTAsMSw4LDEsNCwxLDIsMSwxMiwxLDE0LDEsCisgICAgNiwxLDE2LDEsMTQsMSw2LDEsOCwxLDgsMSwxMjIsMzEsODcsMTA1LAogICAgIDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LAotICAgIDExNCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE0MywwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTE0LDIxLDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsCi0gICAgMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwKLSAgICAwLDAsMTAwLDMsMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsCi0gICAgNDcsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwKLSAgICAwLDEyNSw0LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwKLSAgICAxMzEsMiwwLDEyNSw1LDAsODcsMTAwLDAsMCw4MSw4Miw4OCw4NywxMTAsMjIsCi0gICAgMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDEzOCwwLDEsMSwxLDEwMCwwLAotICAgIDAsODMsODksMTEwLDEsMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDEyOCwKLSAgICAwLDAsMCw5MCwxMSwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMTE0LDgyLDAsMCwwLDExNCwzMiwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksCi0gICAgNjYsODUsNzEsOTUsNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLAotICAgIDg0LDgyLDg5LDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4MiwKLSAgICA2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNDksMCwwLDAsCi0gICAgMTE0LDgsMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxNzMsCi0gICAgMCwwLDAsMTE0LDE3MSwwLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDQyLDAsMCwwLDQxLDYsMTE0LDE3MiwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDkwLDEyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsCi0gICAgMTA3LDEwMSwxMjEsMTE0LDUsMCwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NCwyLDAsMCwxMTUsMjIsMCwKLSAgICAwLDAsMCwyLDksMSwxMiwyLDksMSwxNSwxLDIyLDEsMywxLAotICAgIDE4LDEsMjksMSwxMywxLDksMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwKLSAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsCi0gICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE1OCwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMCwwLAotICAgIDEwNyw4LDAsMTE0LDMxLDAsMTAwLDAsMCw4MywxMjEsMTQsMCwxMTYsMSwwLAotICAgIDEyNCw0LDAsMTMxLDEsMCwxLDg3LDExMCwyMiwwLDQsMTE2LDIsMCwxMDcsCi0gICAgMTAsMCwxMTQsNjksMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsCi0gICAgODgsMTIwLDgxLDAsMTE2LDMsMCwxMzEsMCwwLDY4LDkzLDcwLDAsOTIsMiwKLSAgICAwLDEyNSw1LDAsMTI1LDYsMCwxMjQsNCwwLDEwNiw0LDAsMTE2LDUsMCwKLSAgICAxMjQsNiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsODAsMCwxMTYsNiwwLDEwNiwKLSAgICA3LDAsMTI0LDEsMCwxMjQsNSwwLDEyNCwxLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAwLDEwMCwxLDAsMTI0LDQsMCwxMzEsMiwxLDEyNSw3LDAsMTI0LDcsMCwKLSAgICA4MywxMTMsODAsMCw4NywxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDE2MCwwLDAsCi0gICAgMCw0MSw4LDExNCwxNzksMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MiwwLAotICAgIDAsMCwxMTQsMTYzLDAsMCwwLDExNCw5NCwwLDAsMCwxMTQsOTUsMCwwLAotICAgIDAsMTE0LDEyMywwLDAsMCwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsCi0gICAgMTA5LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsOCwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwKLSAgICAxMTYsMTE0LDE3OCwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwxNjgsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTA5LAotICAgIDIsMCwwLDExNSwyNiwwLDAsMCwwLDIsMTUsMSwxMiwxLDQsMSwKLSAgICAzLDEsMTQsMSwxMywxLDksMSwyMiwxLDIxLDEsOSwxLDE1LDEsCi0gICAgOSwxLDEyMiwzMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsCi0gICAgMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LAotICAgIDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsNDUsMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LAotICAgIDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDEwMCwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMDgsNzAsMTA1LAotICAgIDExMCwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCi0gICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxODIsMCwKLSAgICAwLDAsMTE0LDEyOSwwLDAsMCw0MSw0LDExNCwxNzIsMCwwLDAsMTE0LDEyOCwKLSAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyNSwyLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDcsMTgsMSwxMiwxLDcsMiwxMjIsMzMsODcsMTA1LDExMCwxMDAsCi0gICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCwKLSAgICAxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsCi0gICAgMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwxNzQsMCwKLSAgICAwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwKLSAgICAxNzMsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE3MCwwLDAsMCw3NSwyLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsMiw2LDMsNiwzLDYsMiw2LDIsMTgsCi0gICAgNywxOCwxNSwzLDEsMjEsMTUsMywxLDExNCwxNzAsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsCi0gICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAotICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsCisgICAgMiwxMjUsMywxMjQsMywxMDAsMSwxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsCisgICAgMCwxMDAsMSw4MywwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwKKyAgICAxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTc4LDAsMCwKKyAgICAwLDExNCwxMjQsMCwwLDAsNDEsNCwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMzAsMiwwLDAsMTE1LDgsMCwwLAorICAgIDAsMCw3LDEyLDEsOCwxLDYsMiwxMjIsMzMsODcsMTA1LDExMCwxMDAsMTExLAorICAgIDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDIsNzgsNzgsCisgICAgNDEsMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxNzIsMCwwLDAsMTE0LDE3MSwKKyAgICAwLDAsMCwxMTQsMTcwLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTY5LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LAorICAgIDE3OCwwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjYsMCwKKyAgICAwLDAsODAsMiwwLDAsMTE1LDIwLDAsMCwwLDgsMiw0LDMsNCwKKyAgICAzLDQsMiw0LDIsMTIsNywxMiwxNSwyLDEsMTIsMTUsMiwxLDExNCwKKyAgICAxNjYsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsMCwwLDAsMTAxLDAsCisgICAgOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsCisgICAgOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLAorICAgIDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsODMsMCw0MSwxMSwKICAgICAyMTgsMTMsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDEyMiwKICAgICA4Myw2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksCiAgICAgMTExLDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLApAQCAtMTAwNiwxMTAgKzkyMCwxMDYgQEAKICAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiw4MywKICAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKICAgICAxMDAsMTAxLDExNCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwKLSAgICAxMDAsMSwwLDI1LDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsCi0gICAgMTAwLDEsMCwxMzEsMiwwLDEwMCwzLDAsMjUsMTI1LDMsMCwxMjQsMSwwLAotICAgIDEwNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCw0LDAsMjUsMTI1LDQsMCwKLSAgICAxMjQsMywwLDEwMCw1LDAsMTA3LDIsMCwxMTEsODcsMCwxMjQsNCwwLDEwMCwKLSAgICA1LDAsMTA3LDMsMCw4Myw0MSw2LDEyMiwxNDEsNjcsMTExLDExMCw5OSwxMTQsMTAxLAotICAgIDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTgsMTIxLAotICAgIDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE0LDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMzksOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDQ2LDExMiwxMjEsMzksNDYsMTE0LDMxLDAsMCwwLDExNCw2MCwwLDAsCi0gICAgMCwxMTQsNjEsMCwwLDAsMTE0LDU4LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw0MSw0LDExNCw0MCwwLDAsMCwxMTQsMTU5LDAsMCwKLSAgICAwLDExNCwzNiwwLDAsMCwxMTQsMzQsMCwwLDAsNDEsNSwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwxMjgsMCwwLDAsMTE0LDk2LDAsMCwwLDkwLDEzLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDkwLDksMTE2LDk3LDEwNSwKLSAgICAxMDgsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDE2MSwwLDAsMCwxNDQsMiwwLDAsMTE1LDgsCi0gICAgMCwwLDAsMCwzLDI1LDEsMjIsMSwxOSwxLDEyMiwyNCw5NSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LDExNSw5NSwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsCi0gICAgMSwwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LAotICAgIDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTY2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTUyLDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyNyw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDgwLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw1NCwwLDExNiwKLSAgICAyLDAsMTAwLDIsMCwxMDYsMywwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwwLDEwNiw1LDAsMTE2LDYsMCwKLSAgICAxMjQsMiwwLDEyNCwxLDAsMTA2LDcsMCwxMzEsMywwLDEsMTAwLDEsMCwKLSAgICA4Myw0MSwzLDEyMiwxOSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNjQsMCwwLDAsMTE2LDAsCisgICAgMTI0LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTMxLDEsMTAwLDEsMjUsMCwxMjUsMiwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiwxMDAsMSwxMzEsMiwxMDAsMywyNSwwLDEyNSwzLAorICAgIDEyNCwxLDEwNiwzLDEwMCwyLDEzMSwxLDEwMCw0LDI1LDAsMTI1LDQsMTI0LDMsCisgICAgMTAwLDUsMTA3LDIsMTExLDYyLDEyNCw0LDEwMCw1LDEwNywzLDgzLDAsNDEsNiwKKyAgICAxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsCisgICAgMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLAorICAgIDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsCisgICAgMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsCisgICAgOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLAorICAgIDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwKKyAgICAzMSwwLDAsMCwxMTQsNjEsMCwwLDAsMTE0LDYyLDAsMCwwLDExNCw1OSwKKyAgICAwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDM0LAorICAgIDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKKyAgICA5OCwwLDAsMCw5MCwxMywxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsCisgICAgOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTcsMCwKKyAgICAwLDAsMTQ5LDIsMCwwLDExNSw4LDAsMCwwLDAsMywxOCwxLDE2LAorICAgIDEsMTQsMSwxMjIsMjQsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsCisgICAgOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw0Miw4NSwKKyAgICAxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwKKyAgICAxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwKKyAgICAyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTksMTE0LDEwMSw5NywKKyAgICAxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1NywyLDAsMCwxMTUsMCwwLAorICAgIDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksCisgICAgMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1NiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsCisgICAgMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsMzYsMTE2LDIsMTAwLAorICAgIDIsMTA2LDMsMTI0LDEsMTA2LDEsMTMxLDEsMTMxLDEsMTMwLDEsMTE2LDQsMTA2LAorICAgIDUsMTE2LDYsMTI0LDIsMTI0LDEsMTA2LDcsMTMxLDMsMSwwLDEwMCwxLDgzLAorICAgIDAsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKICAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsNTIsOTksOTcsMTEwLDExMCwxMTEsCiAgICAgMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKICAgICAxMTQsMTI1LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKICAgICA0MCw0MSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNzgsMTExLDExMCwxMDEsNDEsCi0gICAgOCwyMTgsOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDAsMCwwLAotICAgIDExNCwxMDksMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMjMsMCwwLDAsMjE4LAorICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDEwOSwwLDAsMCwKKyAgICAxMTQsMTAzLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwKICAgICAyNSw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwKICAgICAxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwKLSAgICAxMTQsMTIwLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwyMTgsNiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDExNCwxMTUsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDIxOCw2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNCwxNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCiAgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDE1NSwyLDAsMCwxMTUsMTAsMCwwLDAsMCwyLAotICAgIDE4LDEsMTIsMSw5LDEsMTUsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNjAsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKKyAgICAxMiwxLDgsMSw2LDEsMTAsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsCiAgICAgMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAogICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDEyMywwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDQxLDIsMTE0LDExMCwwLDAsCi0gICAgMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwxNjMsMiwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA4LDExMSw5NywKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsOCwxMTQsMTE0LDAsMCwwLAotICAgIDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKLSAgICAxNjEsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsMTkyLDAsMCwwLDExNCwxOTQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMzksMiwwLDAsCi0gICAgMTE1LDEwLDAsMCwwLDEyLDMsNiwyLDEyLDgsMTIsMywxMiw4LDExNCwKLSAgICAxODUsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLAotICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwKLSAgICAxMzIsMCwwLDkwLDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LAotICAgIDAsMTAwLDgsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOSwwLDEwMCwxMCwwLAotICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMSwwLDEwMCwxOCwwLDEwMCwxMywwLDEwMCwKLSAgICAxNCwwLDEzMiwwLDEsOTAsOCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLAotICAgIDAsOTAsOSwwLDEwMCwxNywwLDgzLDQxLDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDE3OCwKLSAgICA3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICAxMTYsMTA0LDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsCi0gICAgMTA5LDEwMSwzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksCi0gICAgMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsMTA1LDExNSwxMDEsMTE1LAotICAgIDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw3OCw0MSwxLDIxOCw3LDczLDc5LDY5LDExNCwxMTQsMTExLDExNCw0MSwyLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDksMTE2LDEwNSwxMDksMTAxLDE2OSwyLDAsMCwxMTUsMiwwLDAsMCwwLDYsCi0gICAgMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwKLSAgICAwLDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTA1LDEsMCw4Myw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMSwxMjIsMjYsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDQxLDIsMTE0LDExOCwwLDAsMCwyMTgsMTcsCisgICAgOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsCisgICAgMTA5LDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNjgsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwyLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LAorICAgIDEwNSw5OSwxMTUsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsCisgICAgNDEsOCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsCisgICAgMCwxMTQsMTExLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE4MywwLDAsMCwKKyAgICAxMTQsMTg4LDAsMCwwLDExNCwxOTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MSwKKyAgICAwLDAsMCwxNDQsMiwwLDAsMTE1LDEwLDAsMCwwLDgsMyw0LDIsCisgICAgOCw4LDgsMyw4LDgsMTE0LDE4MSwwLDAsMCw5OSwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLAorICAgIDExNSw3NCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsMTAwLAorICAgIDIsMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCw0LDEwMCw1LDEwMCwKKyAgICA2LDEzMiwwLDkwLDUsMTAwLDcsMTAwLDgsMTMyLDAsOTAsNiwxMDAsOSwxMDAsCisgICAgMTAsMTMyLDAsOTAsNywxMDAsMTgsMTAwLDEyLDE1NiwxLDEwMCwxMywxMDAsMTQsMTMyLAorICAgIDIsOTAsOCwxMDAsMTUsMTAwLDE2LDEzMiwwLDkwLDksMTAwLDE3LDgzLDAsNDEsCisgICAgMTksMjE4LDEyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsOCwwLDAsMCwxMTYsMCwxMzAsMSwxMDAsMSw4MywKKyAgICAwLDQxLDIsMTIyLDE3OCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExNiwxMDUsMTA5LDEwMSwzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsCisgICAgMzIsMTE1LDExNiwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsCisgICAgOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LAorICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwKKyAgICAxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwxLDIxOCw3LDczLDc5LDY5LDExNCwKKyAgICAxMTQsMTExLDExNCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDE3NSwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDYsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNCwwLDAsMCwxMDAsMSwxMjQsMCwxMDYsMCwxMjQsMSwKKyAgICAxMzEsMSwxMDUsMSw4MywwLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsCiAgICAgMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LAogICAgIDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsCiAgICAgOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LApAQCAtMTEzNiwxMDE3ICsxMDQ2LDk2OCBAQAogICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKICAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCiAgICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzNSwwLDAsMCw0MSwxLDExNCwxOTcsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzMCwwLDAsMCw0MSwxLDExNCwxOTMsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCiAgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3NywyLDAsMCwxMTUsMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTgzLDIsMCwwLDExNSwyLAogICAgIDAsMCwwLDAsMTEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCiAgICAgMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsCiAgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsCi0gICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksCi0gICAgMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LAotICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLAotICAgIDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LAotICAgIDEwOCwxMjEsMzIsMTE2LDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNDEsMSwyMTgsOCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsOTIsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsNTUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTkwLDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsOCwxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiwxNTAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLAotICAgIDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLAotICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwKLSAgICAxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDIwMCwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiwKLSAgICA5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDE2LDAsMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwKLSAgICA4NywxMTAsNTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsCi0gICAgNCwwLDEsMTIyLDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LAotICAgIDEsMCwxMzEsMSwxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLAotICAgIDEwMCwzLDAsMTI1LDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwKLSAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwKLSAgICAxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsCi0gICAgMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNCwxMDgsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMTU5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQyLDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1NywwLDAsMCw0MSwKLSAgICA1LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMTE0LDE1NSwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIwNywyLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAotICAgIDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsCi0gICAgMTE0LDMxLDAsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsCi0gICAgMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEyNCwzLDAsMTMxLDQsMiwKLSAgICA4Myw0MSw1LDEyMiwxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsCi0gICAgMTA1LDEwOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTAwLDk3LDExNiw5NywzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksCi0gICAgOTcsMTEwLDMyLDk4LDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsNDAsNDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTkwLDAsMCwwLDIxOCwxMiwxMDAsMTExLAotICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDg0LDExNCw3MCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwyMTgsNyw5OSwxMTEsCi0gICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjE3LDIsMCwwLDExNSw0LAotICAgIDAsMCwwLDAsNSwyMSwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLAotICAgIDAsNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NCwxLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwKLSAgICAxMjUsMywwLDEyMSwxNiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2MywwLAotICAgIDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMjAyLDAsODgsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLAotICAgIDEsODksMTEwLDE2MiwwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMiwwLDI1LAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDQsMCwxMzEsMSwwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAotICAgIDEwNywxMCwwLDExNCwxNTksMCwxLDEsMSw4OSwxMTAsMTA2LDAsODgsMTIxLDM0LAotICAgIDAsMTE2LDgsMCwxMjQsNiwwLDEwMCwzLDAsMTI0LDUsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMjQsNCwwLDEzMSwxLDMsMTI1LDcsMCw4NywKLSAgICAxMTAsMjQsMCw0LDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwKLSAgICAxMTQsMjIwLDAsMSwxLDEsODksMTEwLDQ1LDAsODgsMTE2LDExLDAsMTAwLDYsCi0gICAgMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEyNCw3LAotICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDQsMCwxMDAsOCwwLAotICAgIDEyNCwyLDAsMTMxLDEsMyw4MywxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSw4LDAsMTI0LDAsMCwxMDYsMTMsMCwxMjQsOCwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMjUsOSwwLDExNiwxMSwwLDEwMCw5LDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDE0LDAsMTA2LDE1LDAsMTIsMTE0LDE3MCwxLDEyNCwKLSAgICA0LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNzAsMSwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTE2LDE2LDAsMTI0LDksMCwxMjQsMywwLAotICAgIDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMywwLDEyNSw2LDAsMTIxLAotICAgIDM2LDAsMTI0LDAsMCwxMDYsMTgsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsCi0gICAgMCwxMzEsMywwLDEsMTE2LDExLDAsMTAwLDEwLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAwLDEsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksMSwKLSAgICAxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCw5LDAsODMsNDEsMTEsMTIyLDE5MCwKLSAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCi0gICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKLSAgICA5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsCi0gICAgMTM1LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICAxMjMsMTI1LDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIyLDE5LDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAxLDAsCi0gICAgMCwwLDExNCw0MiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsCi0gICAgMTE0LDIwNywwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LAotICAgIDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDIwMCwwLDAsMCw0MSwxMCwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU1LDAsCi0gICAgMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTU1LAotICAgIDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDIyNSwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDE1LAotICAgIDEsNiwxLDMsMSwxNiwxLDEzLDEsMTEsMiwzLDEsMTksMSwxMywKLSAgICAxLDUsMiwxNiwxLDMsMSwxOSwxLDEzLDEsNSwyLDMsMSw5LAotICAgIDEsMTIsMSwxMywxLDE5LDEsNSwyLDksMSw3LDEsMTUsMSw2LAotICAgIDEsNywxLDE1LDEsMTgsMSwxMywxLDIyLDEsMTIsMSw5LDEsMTUsCi0gICAgMSwzLDEsMTksMSwxNywxLDEzLDEsNSwxLDEyMiwyMSw4MywxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDc4LDExNCw4OSwwLDAsMCw0MSwxMCwxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDMsMCwKLSAgICAwLDAsMTE0LDIwNywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxOTUsMCwwLDAsMTY3LDIsMCwwLDExNSwxNCwwLDAsMCwxMiwyLAotICAgIDEyLDgsMTIsMTMsMTIsMTAsMTIsNywxMiwxMCwxOCw4LDExNCwxOTUsMCwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLAotICAgIDAsMCwwLDAsMCwwLDExNSwxMTIsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAxLDcsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzNCwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywKLSAgICAwLDEzMiwwLDAsOTAsMTAsMCwxMzUsMCwwLDgzLDQxLDE0LDIxOCwxMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsCi0gICAgMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LAotICAgIDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwKLSAgICAxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsCi0gICAgMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0Niw3OCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LAotICAgIDAsMCwwLDI2LDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsCi0gICAgMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwwLDExMSwzMywKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LDIsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsCi0gICAgOTUsMTE0LDEyMCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMjE4LDUsMTExLAotICAgIDExNiwxMDQsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDMyLDMsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxOCwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwKLSAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsCi0gICAgMSw3OCw0MSwzLDIxOCw0LDEwNCw5NywxMTUsMTA0LDExNCwxMDgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSwzNiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLAotICAgIDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCi0gICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCw1LAotICAgIDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDIxMSwwLDAsMCwxMTQsMTk0LDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDQxLDEsMTE0LDIxMiwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwKLSAgICAwLDM5LDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMiwxMjQsMywKKyAgICAxMzEsMiw4MywwLDQxLDEsMTIyLDIyOCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsCisgICAgMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLAorICAgIDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMTYsCisgICAgMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwxLDIxOCw4LAorICAgIDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICA5NCwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExMiw5NywxMTYsMTA0LAorICAgIDExNCw1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxOTYsMiwwLDAsMTE1LDIsMCwwLDAsMCw4LAorICAgIDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDE1MCwKKyAgICA3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsMCwwLDQxLDMsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTUsMCwwLAorICAgIDAsMjA2LDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwKKyAgICAxLDEzMSwxLDEyNSwyLDEyMSwxNCwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsCisgICAgMyw4NywwLDExMCw0OCw0LDAsMTE2LDIsMTA3LDEwLDExNCw3MiwxLDAsMTI1LAorICAgIDQsMSwwLDEyMiwyMCwxMTYsMywxMDAsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMjQsCisgICAgNCwxMzAsMiw4NywwLDg5LDAsMTAwLDMsMTAwLDMsMTI1LDQsMTI2LDQsODgsCisgICAgMCwxMTAsMiw4OCwwLDExNiw0LDEyNCwzLDEzMSwxLDgzLDAsNDEsNCwxMjIsCisgICAgNTIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsCisgICAgMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw0NiwxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLAorICAgIDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwKKyAgICAxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDQxLDEsCisgICAgMTE0LDEwMiwwLDAsMCw3OCw0MSw1LDExNCwxNTUsMCwwLDAsMjE4LDgsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsMTUzLDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsMTUxLDAsMCwwLDIxOCwzLDEwMSwxMjAsCisgICAgOTksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjEzLDIsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDIsMTAsMSwyLDEsMTQsMSwxNiwxLDQsCisgICAgMSwyOCwxLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE0LDMxLDAsMCwKKyAgICAwLDQxLDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSw5OSwzLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw4LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwxMDYsMSwxMTYsMiwxMjQsMSwKKyAgICAxMjQsMiwxMDAsMSwxMDAsMiwxMjQsMywxMDAsMywxNDEsNiw4MywwLDQxLDQsCisgICAgMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDAsOTcsMTE2LAorICAgIDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw5OSw5NywxMTAsMzIsCisgICAgOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMjEsCisgICAgMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCwKKyAgICA0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDExNCwxODYsMCwwLDAsODQsNDEsMiwyMTgsMTIsMTAwLDExMSwKKyAgICAxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwxMTQsNzIsMCwwLDAsNDEsCisgICAgMywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLDAsMjE4LDcsOTksMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCw1NiwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIyMywyLDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDUsMTIsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsOTksCisgICAgMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwwLAorICAgIDQzLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwxLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMzEsMSwxMjUsMiwxMDAsMSwxMjUsMywxMjEsMTIsMTE2LDEsMTI0LAorICAgIDIsMTMxLDEsMTI1LDQsODcsMCwxMTAsMjQsNCwwLDExNiwyLDEwNywxMCwxMTQsCisgICAgNTAsMSwwLDEsMCwxLDAsMTAwLDEsMTI1LDQsODksMCwxMTAsMTYyLDg4LAorICAgIDAsMTIxLDE0LDEyNCwwLDEwNiwzLDEyNCwyLDEzMSwxLDEyNSw1LDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDg2LDEsMCwxLDAsMSwwLDg5LAorICAgIDAsMTEwLDEyNiw4OCwwLDExNiw1LDEyNCw1LDEwMCwyLDI1LDAsMTMxLDEsMTI1LAorICAgIDMsMTIxLDE0LDEyNCwwLDEwNiw2LDEyNCw0LDEzMSwxLDEyNSw2LDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDEzNCwxLDAsMSwwLDEsMCw4OSwKKyAgICAwLDExMCw3OCw4OCwwLDEyMSwyMCwxMTYsOCwxMjQsNiwxMjQsNSwxMjQsMSwxMjQsCisgICAgNCwxMDAsMywxNDEsNCwxMjUsNyw4NywwLDExMCwyNCw0LDAsMTE2LDksMTE2LAorICAgIDEwLDEwMiwyLDEwNywxMCwxMTQsMTgwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDMyLDg4LDAsMTE2LDExLDEwNiwxMiwxMDAsNCwxMjQsNCwxMjQsMiwxMzEsMywxLAorICAgIDAsMTE2LDEzLDEyNCw3LDEyNCwxLDEyNCw0LDEyNCwyLDEwMCw1LDE0MSw0LDgzLAorICAgIDAsMTI0LDAsMTA2LDYsMTI0LDIsMTMxLDEsMTI1LDgsMTI0LDAsMTA2LDE0LDEyNCwKKyAgICA4LDEyNCwyLDEzMSwyLDEyNSw5LDExNiwxMSwxMDYsMTIsMTAwLDYsMTI0LDIsMTMxLAorICAgIDIsMSwwLDExNiwxNSwxMDYsMTYsMTIsMCwxNDQsMSwxMTQsOTAsMTI0LDQsMTAwLAorICAgIDEsMTA3LDksMTQ0LDEsMTE0LDkwLDEyNCwzLDEwMCwxLDEwNyw5LDE0NCwxLDExNCwKKyAgICA5MCwxMTYsMTcsMTI0LDksMTI0LDMsMTE2LDE4LDEyNCw4LDEzMSwxLDEzMSwzLDEyNSwKKyAgICA2LDEyMSwzMCwxMjQsMCwxMDYsMTksMTI0LDIsMTI0LDQsMTI0LDYsMTMxLDMsMSwKKyAgICAwLDExNiwxMSwxMDYsMTIsMTAwLDcsMTI0LDQsMTMxLDIsMSwwLDg3LDAsMTEwLAorICAgIDIyLDQsMCwxMTYsMiwxMDcsMTAsMTQ0LDEsMTE0LDg4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjQsOSw4MywwLDQxLDgsMTIyLDE5MCw2NywKKyAgICAxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksCisgICAgMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE0LAorICAgIDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LAorICAgIDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwKKyAgICAzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywKKyAgICAxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsMTMwLAorICAgIDAsMCwwLDQxLDMsMTE0LDEzNiwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwKKyAgICAzNywwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LAorICAgIDMyLDEyMywxMjUsNDEsMywxMTQsMTAyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgOTQsMCwwLDAsMTIyLDE5LDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LAorICAgIDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSw0MSwyMCwxMTQsMTU1LDAsMCwwLDExNCw4MywwLDAsCisgICAgMCwxMTQsNzAsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsMTkyLDAsMCwwLAorICAgIDExNCwxNiwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsCisgICAgMTM5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTE4LAorICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMjAzLDAsCisgICAgMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTQ4LDAsMCwKKyAgICAwLDExNCwzMywwLDAsMCwxMTQsMTk2LDAsMCwwLDQxLDEwLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDEyMywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDEzNywwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMjE4LDIsMTE1LDExNiwxMTQsNTYsMCwwLDAsMjE4LAorICAgIDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNCwxNTEsMCwwLDAsCisgICAgOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLAorICAgIDAsMjMxLDIsMCwwLDExNSw3OCwwLDAsMCwwLDcsMTAsMSw0LDEsCisgICAgMiwxLDEyLDEsMTQsMSwxMCwyLDIsMSwxNCwxLDE0LDEsNiwyLAorICAgIDEyLDEsMiwxLDE0LDEsMTQsMSw2LDIsMiwxLDQsMSw0LDEsCisgICAgMTIsMSwxOCwxLDYsMiw4LDEsNiwxLDYsMSwyLDEsOCwxLAorICAgIDEwLDEsMTIsMSwxMiwxLDIwLDEsMTAsMSw2LDEsMTAsMSwyLDEsCisgICAgMTQsMSwxNiwxLDE2LDEsNiwxLDEyMiwyMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDc4LAorICAgIDExNCw5MSwwLDAsMCw0MSwxMCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTkzLDAsMCwwLDExNCwxOTQsMCwwLDAsCisgICAgMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LAorICAgIDIwMywwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTEsMCwKKyAgICAwLDAsMTczLDIsMCwwLDExNSwxNCwwLDAsMCw4LDIsOCw4LDgsCisgICAgMTMsOCwxMCw4LDcsOCwxMCwxNCw4LDExNCwxOTEsMCwwLDAsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwwLAorICAgIDAsMCwwLDExNSw4MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsCisgICAgMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LAorICAgIDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDEsNywxMzUsMCwKKyAgICAxMDIsMSwxMDAsOCwxMDAsOSwxMzIsOCwxMzEsMSw5MCw4LDEwMSw3LDEwMCwxMCwKKyAgICAxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOSwxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDEwLAorICAgIDEzNSwwLDQsMCw5MCwxMSw4MywwLDQxLDE0LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLAorICAgIDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LAorICAgIDIsMTI0LDAsOTUsMSwxMDAsMSw4MywwLDQxLDIsMTIyLDc1LDY3LDk3LDk5LAorICAgIDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsCisgICAgMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwyLDExNCwxMDIsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDMyLDMsMCwwLDExNSw0LAorICAgIDAsMCwwLDAsMyw2LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LDAsMTA3LDIsCisgICAgMTExLDIyLDEyNCwwLDEwNiwxLDEyNCwxLDEwNiwxLDEwNywyLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNCwxMTUsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDIxOCw1LDExMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzOCwzLDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDEsMTIsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTE2LDAsMTI0LDAsMTA2LDIsCisgICAgMTMxLDEsNjUsMCw4MywwLDQxLDEsNzgsNDEsMywyMTgsNCwxMDQsOTcsMTE1LAorICAgIDEwNCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsNDIsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwxMjQsMCwxMzEsMiwxMDYsMiwxMjQsCisgICAgMSwxMzEsMSw4MywwLDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsCisgICAgOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsCisgICAgNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMDcsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICA0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCw0MSwxLDExNCwyMDgsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MCwwLAorICAgIDAsMCw0NSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLAogICAgIDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwKLSAgICAwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCw1MSwzLDAsMCwxMTUsMiwKKyAgICAxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxNTUsMCwwLDAsNTcsMywwLDAsMTE1LDIsCiAgICAgMCwwLDAsMCwzLDEyMiwyMyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQyLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsCi0gICAgMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLDAsODEsODIsODgsMTAwLDIsCi0gICAgMCw4Myw0MSwzLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsCi0gICAgNzgsNDEsMywxMTQsNTEsMCwwLDAsMTE0LDUyLDAsMCwwLDkwLDQsMTE0LAotICAgIDEwMSw5NywxMDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDIwMSwwLDAsMCw1NiwzLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwwLDIsMjEsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsMTEsMTE0LDExNCwwLDAsCi0gICAgMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwKLSAgICAxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwxMTQsCi0gICAgMTI1LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMjAxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDIxMiwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjExLDAsMCwwLDIxLDMsCi0gICAgMCwwLDExNSwxNCwwLDAsMCwxMiwzLDYsMiwxMiw2LDEyLDQsMTIsCi0gICAgMywyNCwxMiwxOCw1LDExNCwyMTEsMCwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNjQsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAotICAgIDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsCi0gICAgMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsCi0gICAgMCwxMjQsMiwwLDEwNiwxLDAsMTAwLDIsMCwxMjQsMiwwLDEwNiwyLDAsCi0gICAgMTA1LDIsMCw4Myw0MSwzLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTE0LDEzNSwwLDAsMCwxMTQsMTM2LAotICAgIDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LAotICAgIDExNiwxMDUsMTA5LDEwMSw5MCw3LDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk4LDAsCi0gICAgMCwwLDY2LDMsMCwwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwKLSAgICAyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsCi0gICAgNCwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMjQsNCwwLDEzMSwyLDEsODMsNDEsMiw3OCwyMTgsNSw5NSwxMDksMTExLAotICAgIDEwMCwxMDEsNDEsMiwxMTQsOTksMCwwLDAsMTE0LDE5OSwwLDAsMCw0MSw1LAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMDAsMCwwLDAsNzEsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjIxLDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDksCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSwKLSAgICA1LDAsMTAzLDAsMCwxMjUsNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLAotICAgIDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsCi0gICAgMCwxMjQsNCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDEwNiwyLDAsMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsCi0gICAgODcsMTIwLDEzMiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwKLSAgICAwLDEyNSw3LDAsMTE2LDQsMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwKLSAgICAxLDAsMSw4NywxMTMsOTQsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwKLSAgICAwLDEsMSwxLDExOSw5NCwwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsCi0gICAgMTAsMCwxMTQsMjExLDAsMSwxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwKLSAgICAxMDAsMSwwLDEyNCw0LDAsMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCwKLSAgICA4Myw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LAotICAgIDExMyw5NCwwLDg4LDExMyw5NCwwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLAotICAgIDEwNywxMCwwLDExNCw0OCwxLDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LAotICAgIDAsMTAwLDEsMCwxMjQsMSwwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LAotICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCwKLSAgICA4OCwxMDAsMiwwLDgzLDQxLDQsMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NiwxMjIsMjcsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLAotICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCwxMjIsMTIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSwKLSAgICA0MSwxMSwxMTQsNDAsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMywwLDAsMCwKLSAgICA5MCw1LDEwOSwxMDcsMTAwLDEwNSwxMTQsMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MiwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCw0MSw5LDExNCwxMTAsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsMjIxLDAsMCwwLDIxOCw2LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsMTE0LDk2LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsCi0gICAgMjUsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk5LDAsMCwwLDc2LDMsMCwKLSAgICAwLDExNSwzOCwwLDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLAotICAgIDE3LDIsMTksMSwxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsCi0gICAgMTYsMSwyNywxLDMsMSwxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMjE5LDAsMCwwLDYyLDMsMCwwLDExNSw4LDAsMCwwLDEyLAotICAgIDIsNiwyLDEyLDUsMTIsNSwxMTQsMjE5LDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKLSAgICAwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsCi0gICAgMTAwLDYsMCw4Myw0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKLSAgICAxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNDUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsCi0gICAgMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDc2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNSwzLDAsMTE2LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEyNCwyLDAsMTMxLDEsMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsCi0gICAgODMsNDEsNCw3OCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsOTEsCi0gICAgMCwwLDAsNDEsNCwxMTQsMTU5LDAsMCwwLDExNCwyMDEsMCwwLDAsMTE0LAotICAgIDE0MywwLDAsMCwxMTQsMTQ5LDAsMCwwLDQxLDUsMTE0LDExMCwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LAotICAgIDIxMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTg4LDAsMCwwLDEwOSwzLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDEsMTUsMSwxNSwxLDI0LDEsMTIyLDI5LDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMDAsMSwKKyAgICAxMzEsMiwxNDMsMTAsMTI1LDIsMTI0LDIsMTA2LDIsMTMxLDAsODMsMCw4MSwwLAorICAgIDgyLDAsODgsMCwxMDAsMiw4MywwLDQxLDMsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LDExMSwxMDksCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDQ2LDIxOCwxLDExNCw3OCw0MSwzLDExNCw1MiwwLDAsMCwxMTQsNTMsCisgICAgMCwwLDAsOTAsNCwxMTQsMTAxLDk3LDEwMCw0MSwzLDExNCwxMDQsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk3LDAsMCwwLDYyLDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiwxNCwxLDEyMiwxOSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKKyAgICA0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsCisgICAgMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDIxMCwwLDAsMCwKKyAgICAxMTQsMjEyLDAsMCwwLDExNCwxMjAsMCwwLDAsMTE0LDE5MCwwLDAsMCwxMTQsCisgICAgMTU1LDAsMCwwLDExNCwxOTcsMCwwLDAsOTAsMTMsOTUsOTUsOTksMTA4LDk3LAorICAgIDExNSwxMTUsOTksMTAxLDEwOCwxMDgsOTUsOTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsMjA4LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMDcsCisgICAgMCwwLDAsMjcsMywwLDAsMTE1LDE0LDAsMCwwLDgsMyw0LDIsCisgICAgOCw2LDgsNCw4LDMsMTYsMTIsMTIsNSwxMTQsMjA3LDAsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsCisgICAgMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLAorICAgIDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxNTYsMSwxMDAsOCwxMDAsOSwxMzIsCisgICAgMiw5MCw2LDEwMCwxMCw4MywwLDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLAorICAgIDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDIyLDAsMCwwLDExNiwwLDEyNCwxLDEzMSwxLDEyNSwyLDEyNCwyLDEwNiwKKyAgICAxLDEyNCwyLDEwNiwyLDEwMCwxLDE1NiwyLDgzLDAsNDEsMiwxMjIsMzMsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsCisgICAgMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LAorICAgIDQxLDIsMTE0LDEzMCwwLDAsMCwxMTQsMTMxLDAsMCwwLDQxLDMsMTE0LDQxLAorICAgIDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5MCw3LDExNSwKKyAgICAxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwwLDcyLDMsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMiw4LDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0LDAsMCwwLDExNiwKKyAgICAwLDEyNCwxLDEzMSwxLDEyNSw0LDEyNCwwLDEwNiwxLDEyNCwyLDEyNCwzLDEyNCwKKyAgICA0LDEwMCwxLDE0MSwzLDgzLDAsNDEsMiw3OCw0MSwxLDIxOCw1LDk1LDEwOSwKKyAgICAxMTEsMTAwLDEwMSw0MSwyLDExNCwxMDEsMCwwLDAsMTE0LDE5NSwwLDAsMCw0MSwKKyAgICA1LDExNCwxMDQsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5MywwLDAsMCwKKyAgICAxMTQsNTYsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTYsMCwwLDAsNzcsMywKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwyLDgsMSwxMjIsMzIsODMsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDEwNSwxODIsMSwKKyAgICAwLDAsNDEsMSwxMTQsMjE3LDAsMCwwLDk5LDMsMCwwLDAsMSwwLAorICAgIDAsMCw5LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwyNTAsCisgICAgMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsOTIsMiwxMjUsNCwxMjUsNSwxMDMsCisgICAgMCwxMjUsNiwxMjAsNDAsMTI0LDQsMTE0LDU2LDExNiwxLDEyNCw0LDEzMSwxLDEyLAorICAgIDAsMTE0LDU2LDExNiwwLDEyNCw0LDEzMSwxLDkyLDIsMTI1LDQsMTI1LDcsMTI0LAorICAgIDYsMTA2LDIsMTI0LDcsMTMxLDEsMSwwLDExMywxOCw4NywwLDEyMCwxMDgsMTE2LAorICAgIDMsMTI0LDYsMTMxLDEsNjgsMCw5Myw5NiwxMjUsNywxMTYsNCwxMjQsNCwxMjQsCisgICAgNywxMzEsMiwxMjUsNCwxMjEsMTQsMTE2LDUsMTA2LDYsMTI0LDQsMTMxLDEsMSwKKyAgICAwLDg3LDAsMTEzLDY4LDQsMCwxMTYsNywxMDcsMTAsMTE0LDExOCwxLDAsMSwKKyAgICAwLDEsMCwxMTksNjgsODksMCwxMTMsNjgsNCwwLDExNiw4LDEwNywxMCwxMTQsCisgICAgMTYyLDEsMCwxMjUsOCwxLDAsMTIyLDE4LDExNiw5LDEwNiwxMCwxMDAsMSwxMjQsCisgICAgNCwxMjQsOCwxMzEsMywxLDAsMTAwLDIsODMsMCwxMDAsMiwxMjUsOCwxMjYsCisgICAgOCw4OCwwLDExMyw2OCw4OCwwLDExMyw2OCw4NywwLDEyMSwyOCwxMTYsMTEsMTI0LAorICAgIDEsMTI0LDIsMTI0LDMsMTMxLDMsMSwwLDExNiw5LDEwNiwxMCwxMDAsMywxMjQsCisgICAgMSwxMzEsMiwxLDAsODcsMCwxMTAsNDgsNCwwLDExNiw4LDEwNywxMCwxMTQsCisgICAgMjQ0LDEsMCwxMjUsOCwxLDAsMTIyLDIwLDExNiw5LDEwNiwxMCwxMDAsMSwxMjQsCisgICAgMSwxMjQsOCwxMzEsMywxLDAsODcsMCw4OSwwLDEwMCwyLDEwMCwyLDEyNSwKKyAgICA4LDEyNiw4LDg4LDAsMTEwLDIsODgsMCwxMDAsMiw4MywwLDQxLDQsMTIyLAorICAgIDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMjIsMjcsOTksMTExLAorICAgIDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMTIsOTksMTE0LDEwMSw5NywKKyAgICAxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxMiwxMTQsNDAsMCwwLDAsMTE0LAorICAgIDQ4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwzMCwKKyAgICAwLDAsMCwxMTQsMywwLDAsMCw5MCw1LDEwOSwxMDcsMTAwLDEwNSwxMTQsMjE4LAorICAgIDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LAorICAgIDU4LDAsMCwwLDQxLDksMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsCisgICAgMTE0LDU2LDAsMCwwLDExNCwyMTcsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiwxMTQsOTgsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwyNSwwLDAsCisgICAgMCwxMTQsMTk4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxOTUsMCwwLDAsODIsMywwLDAsMTE1LDQyLAorICAgIDAsMCwwLDAsMiwxMiwxLDQsMiwxNiwxLDEyLDEsMTQsMiwxNCwKKyAgICAxLDEwLDEsMiwxLDE0LDEsMTQsMiw2LDEsMTYsMyw2LDEsOCwKKyAgICAxLDIwLDEsMiwxLDEyLDEsMTYsMSwxNiwyLDgsMSwxMjIsMjUsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDEwOSwwLDAsMCwKKyAgICAxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsCisgICAgMTk0LDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMjE1LDAsMCwwLDY4LDMsMCwwLDExNSw4LDAsMCwwLAorICAgIDgsMiw0LDIsOCw1LDgsNSwxMTQsMjE1LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDMyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLAorICAgIDAsOTAsNSwxMDAsNiw4MywwLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwKKyAgICA0NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywKKyAgICAxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNDgsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsCisgICAgMTI1LDIsMTI0LDAsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LDMsMTE2LDIsMTI0LDMsCisgICAgMTI0LDEsMTI0LDIsMTAwLDEsMTQxLDMsMTI1LDQsMTE2LDMsMTI0LDQsMTI0LDEsCisgICAgMTI0LDIsMTAwLDIsMTQxLDMsODMsMCw0MSwzLDc4LDQxLDIsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCw5MywKKyAgICAwLDAsMCw0MSw0LDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsCisgICAgMTM5LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsNSwxMTQsMTA0LDAsMCwwLAorICAgIDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCisgICAgMjA2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxODQsMCwwLDAsMTE3LDMsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMSwxMCwxLDEwLDEsMTQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksCiAgICAgMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCiAgICAgMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKICAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAotICAgIDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwKICAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsCiAgICAgMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwKKyAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKICAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjAzLDAsMCwwLDExNSwzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDAsMTE0LDE5OSwwLDAsMCwxMjMsMywwLDAsMTE1LDIsMCwwLDAsCiAgICAgMCwyLDEyMiwzMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKICAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwKLSAgICAyMDMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMDUsMywwLAotICAgIDAsMTE1LDYsMCwwLDAsMTIsMiw2LDIsMTIsNiwxMTQsMjI0LDAsMCwKKyAgICAxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLAorICAgIDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwKKyAgICAxOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTMsMywwLAorICAgIDAsMTE1LDYsMCwwLDAsOCwyLDQsMiw4LDYsMTE0LDIyMCwwLDAsCiAgICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCi0gICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsCi0gICAgMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLAotICAgIDIwLDAsODMsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMzIsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsCi0gICAgMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDIxMywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE0LAotICAgIDAsMCwwLDEzNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwKLSAgICAxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsCi0gICAgNDEsMSw3OCw0MSwzLDExNCwyMTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTYsMCwwLDAsMTQwLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LAotICAgIDE0NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsCi0gICAgOTcsMTA5LDEwNSw5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxNDMsMywwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQ1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDQsMCwxMDAsMSwKLSAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTMxLDMsMCwKLSAgICAxLDEwMCwyLDAsODMsNDEsMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMSwKLSAgICAxMjAsMTAxLDk5LDExNywxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsNzgsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LDE0NywKLSAgICAwLDAsMCw5MCwxMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LAotICAgIDk5LDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MiwwLDAsMCwKLSAgICAxNTEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsNiwxLDEyMiwKLSAgICAzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsMTE1LDQ4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMSwwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsCi0gICAgMTM1LDAsMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwKLSAgICAzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDQ5LDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsCi0gICAgMzEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsCi0gICAgMCw5MywyMSwwLDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsCi0gICAgMjMsMTA3LDIsMCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwKLSAgICAxODYsMCwwLDAsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLAotICAgIDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE2MCwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsCi0gICAgMTE0LDM3LDAsMCwwLDIxOCwzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LAotICAgIDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDQxLAotICAgIDEsMTE0LDIyNywwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLAotICAgIDE1NywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSwxOCwxLDEyMiwKLSAgICAzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCi0gICAgNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCi0gICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LAotICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwxODgsMCwwLDAsMTYzLDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLAorICAgIDAsMCw2NCwwLDAsMCwxMTUsOTIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsCisgICAgMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsCisgICAgNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLAorICAgIDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDgsMTAwLAorICAgIDEyLDEwMCwxMywxMzIsMCw5MCw5LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsMTAsMTAwLAorICAgIDE2LDEwMCwxNywxMzIsMCw5MCwxMSwxMDEsMTIsMTAwLDE4LDEwMCwxOSwxMzIsMCwxMzEsCisgICAgMSw5MCwxMywxMDAsMjAsODMsMCw0MSwyMSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsCisgICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMTksMTExLDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMjQsMiwxMjQsCisgICAgMCw5NSwxLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwxMDIsMCwwLAorICAgIDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMTAyLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDE0MCwzLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsNiwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjQsMCwwLDAsCisgICAgMTI0LDAsMTA2LDAsMTI0LDEsMTA2LDAsMTA3LDIsMTExLDIyLDEyNCwwLDEwNiwxLAorICAgIDEyNCwxLDEwNiwxLDEwNywyLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwyMDgsMCwKKyAgICAwLDAsMTE0LDExNSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDIwOSwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMjEwLDAsMCwwLDE0NCwzLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAwLDEsMTIsMSwxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMCwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwKKyAgICAxMzEsMSwxMTYsMCwxMjQsMCwxMDYsMiwxMzEsMSw2NSwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwzLDExNCwyMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTIsMCwwLDAsMTQ4LDMsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTE2LDIsMTA2LDMsMTI0LDEsMTMxLDIsMTI1LDIsMTE2LDAsCisgICAgMTA2LDQsMTAwLDEsMTI0LDEsMTA2LDUsMTI0LDAsMTA2LDYsMTMxLDMsMSwwLAorICAgIDEyNCwyLDgzLDAsNDEsMiwxMjIsMzgsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LAorICAgIDExMCwzMiwxMTcsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LAogICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLAotICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMywwLDAsMCwxNjcsMywwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCwxNzEsMywwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsCi0gICAgMCwxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwKLSAgICAxMTQsMTg3LDAsMCwwLDExNCwxOTIsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsMTU5LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMjUsMCwwLDAsMTI0LDMsMCwwLAotICAgIDExNSwyMCwwLDAsMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxMiwKLSAgICA4LDEyLDYsMTIsNiwxMiw0LDEyLDQsMTE0LDIyNSwwLDAsMCw5OSwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LAotICAgIDAsMCwwLDExNSwxMzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsCi0gICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAotICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLAotICAgIDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCi0gICAgOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMiwwLDEwMCwyMCwwLDgzLDQxLDIxLDIxOCwxNCw5NSw3OCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLAotICAgIDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LAotICAgIDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LAotICAgIDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsCi0gICAgMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsCi0gICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCwKLSAgICA5NSwxLDAsMTE2LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LAotICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDk1LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwKLSAgICAxNyw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLAotICAgIDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwKLSAgICAwLDAsMTg0LDMsMCwwLDExNSw4LDAsMCwwLDAsMSw5LDEsOSwKLSAgICAxLDIxLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCi0gICAgOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsCi0gICAgMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsNDMsMCwxMDAsNiwwLAotICAgIDgzLDEyNCwxLDAsMTAwLDUsMCwxMDIsMiwwLDgzLDQxLDcsMTIyLDYyLDgyLAotICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLAotICAgIDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LAotICAgIDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDYwLDAsCi0gICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMzcsMCwwLAotICAgIDAsOTAsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MSwyLDExNCw4LDAsCi0gICAgMCwwLDExNCwzNywwLDAsMCw0MSwyLDExNCwyMzIsMCwwLDAsMTE0LDM0LAotICAgIDAsMCwwLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsMjIzLDAsMCwwLDIxOCwKLSAgICAzLDEwMCwxMTEsMTE2LDkwLDIsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDE5MCwzLDAsMCwxMTUsOCwwLDAsMCwwLDIsMjcsMSwxMiwyLDQsCi0gICAgMywxMjIsMzgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCi0gICAgMTA0LDQ2LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCw5MiwyLDAsMTI1LAotICAgIDEsMCwxMjUsMiwwLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLAotICAgIDAsMjUsMTI0LDIsMCwxMzEsMiwwLDgzLDQxLDEsNzgsNDEsNCwxMTQsMjM5LAotICAgIDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDcsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDMsMTE0LDExMCwwLDAsMCw5MCwxOCwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksCi0gICAgMTAxLDkwLDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwyMzQsMCwwLDAsMjAwLDMsMCwwLDExNSw0LDAsMCwwLDAsMSwKLSAgICAxOCwxLDEyMiwzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxMTgsMCwwLDAsMTE2LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LAotICAgIDEsMCwxMjQsMCwwLDEwNiwyLDAsMTA3LDMsMCwxMTQsMTExLDAsMTI0LDAsCi0gICAgMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsCi0gICAgMTI1LDIsMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTAyLDAsMTI0LAotICAgIDIsMCwxMDYsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTAyLDAsMTI0LDIsCi0gICAgMCwxMDYsNiwwLDExNCwxMDIsMCwxMjQsMiwwLDEwNiw2LDAsMTI0LDAsMCwKLSAgICA5NSw3LDAsMTI0LDEsMCwxMjQsMCwwLDk1LDIsMCwxMjQsMCwwLDEwNiwKLSAgICA3LDAsODMsNDEsMSw3OCw0MSw4LDExNCw5NSwwLDAsMCwxMTQsMjM0LDAsCi0gICAgMCwwLDExNCwyMzUsMCwwLDAsMTE0LDIzNiwwLDAsMCwxMTQsMjMyLDAsMCwKLSAgICAwLDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMjMzLDAsMCwwLAotICAgIDQxLDMsMTE0LDExMCwwLDAsMCw5MCwxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LAotICAgIDExMiw5NywxMTYsMTA0LDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LAotICAgIDk5LDExNywxMDgsOTcsMTE2LDEwMSwyMDQsMywwLDAsMTE1LDE2LDAsMCwwLDAsCi0gICAgMiwxOCwxLDE1LDEsMjEsMywyNywxLDksMSwxMiwxLDksMSwxMjIsCi0gICAgMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAotICAgIDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMCwwLDEzMSwxLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDEwNSwxMTYsMTAxLAotICAgIDExNCwxMTQsMjQxLDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSw5NSwKLSAgICAxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMjE3LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCi0gICAgMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLAotICAgIDEzMSwxLDAsODMsNDEsMSw3OCw0MSwyLDExNCwzMywwLDAsMCwxMTQsMjQxLAotICAgIDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCwKLSAgICA5NSw5NSwyMjAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsCi0gICAgMTA4LDEwMSwxMTAsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLAotICAgIDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLAotICAgIDIsNzgsMTIyLDIwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCi0gICAgMTE2LDEwNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw0OSwwLDAsMCwxMTQsCi0gICAgMjMzLDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsOTUsOTUsMjIzLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLAotICAgIDAsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDEwNyw2LAotICAgIDAsODMsNDEsMSw3OCw0MSwxLDExNCwyNDEsMCwwLDAsNDEsMiwxMTQsMTEwLAotICAgIDAsMCwwLDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsCi0gICAgOTcsMTA1LDExMCwxMTUsOTUsOTUsMjI2LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCi0gICAgMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDExNCwyMzMsMCwwLDAsMTE0LDE2NSwwLDAsMCw0MSwyLDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDI0NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwxMTQsMTY1LDAsMCwwLDIyOSwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDEzLAotICAgIDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwKLSAgICAxMTYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDQsMCwKLSAgICAwLDAsMTE0LDI0NSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDIzMSwwLDAsMCwxNzcsMywwLDAsMTE1LDIwLAotICAgIDAsMCwwLDEyLDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMywxMiwKLSAgICAzLDEyLDMsMTIsMywxMiwzLDExNCwyMzEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMTE4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwKLSAgICAwLDkwLDgsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwKLSAgICAxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsMTAwLAotICAgIDE2LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxNywwLDgzLDQxLDE4LDIxOCwxNiwKLSAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLAotICAgIDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIzMSwwLDAsMCwxMTQsMjMzLDAsCi0gICAgMCwwLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMjM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwwLDAsMjM1LDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwKLSAgICAxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsCi0gICAgOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsCi0gICAgMTE0LDQ5LDAsMCwwLDExNCwxMTQsMCwwLDAsNDEsMiwxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCwyMzgsMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsODQsMTE0LDQsMCwKLSAgICAwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLAotICAgIDAsMCwyNDcsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsMzIsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDEyMywzMywxMTQsMTI1LDQxLDcsMTE0LDExOCwwLDAsMCwxMTQsMTg1LDAsCisgICAgMCwwLDExNCwxNDMsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAorICAgIDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEzMywwLDAsMCwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwwLAorICAgIDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwxODMsMCwwLDAsMTUxLDMsMCwwLDExNSwKKyAgICAxMCwwLDAsMCwwLDIsNCwxLDEwLDEsNiwxLDEyLDEsMTIyLDMzLAorICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMTYsMCwxMDYsMSwxMTYsCisgICAgMiwxMDYsMywxMjQsMSwxMzEsMiwxLDAsMTE2LDAsMTA2LDQsMTAwLDEsMTI0LAorICAgIDAsMTA2LDUsMTI0LDAsMTA2LDYsMTMxLDMsMSwwLDEwMCwyLDgzLDAsNDEsCisgICAgMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiw5NywxMTAsCisgICAgMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLAorICAgIDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsNDEsNywxMTQsMTE4LAorICAgIDAsMCwwLDExNCwxODUsMCwwLDAsMTE0LDE0MywwLDAsMCw5MCwxMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwxMzMsMCwwLDAsCisgICAgMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxNTksMywwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDE0LDEsNiwxLDEyMiwzMSw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LAorICAgIDM2LDAsMCwwLDExNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDEwMCwxLDI1LDAsCisgICAgMTM3LDAsMTE2LDIsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTE2LDMsCisgICAgNjgsMCwxMzEsMSwxMzEsMSw4MywwLDQxLDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsMzEsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwKKyAgICAwLDAsMCw1MSwwLDAsMCwxMTUsMjYsMCwwLDAsMTI0LDAsOTMsMTgsCisgICAgMTI1LDEsMTM2LDAsMTAwLDAsMTI0LDEsMjMsMCwxMDcsMiw4NiwwLDEsMCwKKyAgICAxMTMsMiwxMDAsMSw4MywwLDQxLDIsMTE0LDE4MiwwLDAsMCw3OCwxMTQsNCwKKyAgICAwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTY4LDMsMCwwLDExNSwyLDAsMCwwLDQsMSwxMjIsCisgICAgNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsCisgICAgNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLAorICAgIDExNCw2Miw0MSw0LDExNCw0MCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDMsCisgICAgOTcsMTEwLDEyMSwyMTgsMTgsNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsCisgICAgODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMjIzLDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxNTcsMCwwLDAsMTY1LDMsMCwwLDExNSw2LDAsCisgICAgMCwwLDAsMiwxNCwxLDEyLDEsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLAorICAgIDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxNzEsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsCisgICAgMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNCw5NywxMTgsMTAxLDMyLAorICAgIDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwKKyAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjAzLDAsMCwwLDI1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsCi0gICAgMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMxLDMsMSw4Myw0MSw2LDc4LAotICAgIDExNCwzMiwwLDAsMCwxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw2MiwxMTQsCi0gICAgMTkwLDAsMCwwLDExNCwyMDUsMCwwLDAsODQsNDEsMSwxMTQsMjA2LDAsMCwKLSAgICAwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODgsMCwwLAotICAgIDAsMjUzLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLAotICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsCi0gICAgOTcsMTE3LDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwKLSAgICAxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDExNCwxODcsMCwwLDAsMCw0LDAsMCwxMTUsMCwwLAotICAgIDAsMCwxMjIsMzAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsCi0gICAgMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxOTIsMCwwLDAsMyw0LDAsMCwxMTUsMiwwLDAsCi0gICAgMCwwLDEsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDAsMTAwLDEsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCwxLDExNiwyLDAsMTA2LDMsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw5OCw3NiwKLSAgICAxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLAotICAgIDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDEyMiwzOCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSw0MSw0LDExNCwxMDcsMCwwLDAsCi0gICAgMTE0LDIzMywwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxOTMsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsMCw2LAotICAgIDQsMCwwLDExNSw0LDAsMCwwLDAsNywxNiwxLDEyMiwyOCw5NSw3OCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMiwxMTQsMTE0LDAsCi0gICAgMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTg2LDAsMCwKLSAgICAwLDExNCwxODQsMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMTYxLDAsMCwwLAotICAgIDExNCwyMDMsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCwKLSAgICAxOTIsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ4LDAsCi0gICAgMCwwLDIzNCwzLDAsMCwxMTUsMTYsMCwwLDAsMTIsMSwxMiwzLDE4LAotICAgIDksMTIsMywxMiwzLDEyLDMsMTIsMywxMiwzLDExNCwyNDgsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMTYwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsCi0gICAgMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDYsMCwKLSAgICAxMDEsNCwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsCi0gICAgNywwLDEwMSw0LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCw5MCw4LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMDAsMTIsMCwKLSAgICAxMzIsMSwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLAotICAgIDEwLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLAotICAgIDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMSwwLAotICAgIDEzMSwxLDAsOTAsMTEsMCwxMDAsMTAsMCw4Myw0MSwxNywyMTgsMTAsODAsOTcsCi0gICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsMTE2LDk3LDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNywKLSAgICA5NywxMDMsMTAxLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDMyLDk3LDExNiwxMTYsCi0gICAgMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNTUsMCwKLSAgICAwLDAsMTIwLDQ4LDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTMxLDAsCi0gICAgMCw2OCw5MywzMSwwLDEyNSwxLDAsMTE2LDMsMCwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTMxLDIsMCwxMTQsMTYsMCwxMjQsMSwwLDEwNiw0LDAsMTMxLDAsMCwKLSAgICAxLDExMywxNiwwLDg3LDEwMCwyLDAsODMsNDEsMywxMjIsMTI1LDY3LDk3LDEwOCwKLSAgICAxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKLSAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsCi0gICAgMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSw0NiwyMTgsMTcsMTA1LDExMCwxMTgsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw3OCw0MSw1LAotICAgIDExNCw4LDAsMCwwLDIxOCwxOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDYsMTE4LDk3LDEwOCwxMTcsCi0gICAgMTAxLDExNSwxMTQsMTE3LDAsMCwwLDExNCwyNTEsMCwwLDAsNDEsMiwxMTQsMTcyLAotICAgIDAsMCwwLDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNTEsMCwwLDAsMjMsCi0gICAgNCwwLDAsMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMjIsMjgsCi0gICAgODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwKLSAgICAxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDEwNywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDcsCi0gICAgOSwwLDExNCw0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwxMTYsCi0gICAgMiwwLDEwNiwzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMjAsCi0gICAgNTksMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsNDQsMCwxMjUsMiwwLDEyMSwKLSAgICAxNCwwLDEyNCwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDg3LDExMyw1MSwwLAotICAgIDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEsMSwxMTksNTEsMCwKLSAgICA4OSwxMTMsNTEsMCw4OCwxMTMsNTEsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMTEzLDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywKLSAgICAxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTAyLDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsOTcsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksCi0gICAgMTEyLDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDM5LDEwNCwxMTEsMTExLDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsCi0gICAgMTA4LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLAotICAgIDQxLDYsMTE0LDgsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNywxMTUsMTE0LDYyLDAsMCwwLDExNCw2MywwLDAsMCwxMTQsMTI3LDAsCi0gICAgMCwwLDExNCwxMDksMCwwLDAsNDEsMywxMTQsMTcyLDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCw5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA0LDExMSwxMTEsMTA3LDExNSwzMSw0LDAsMCwxMTUsMTYsMCwwLDAsMCw3LAotICAgIDI1LDEsMTYsMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsMiwxMjIsMjIsCi0gICAgODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsMTksMCwwLDAsNjcsMCwwLDAsMTE1LDEyMywwLDAsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsNTMsMCwxMjEsMTYsMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDg3LDExMCwyMiwwLDQsCi0gICAgMTE2LDIsMCwxMDcsMTAsMCwxMTQsNTIsMCwxLDEsMSwxMDAsMiwwLDgzLAotICAgIDg5LDExMCwxLDAsODgsMTIxLDE3LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsMjUsMTI1LDIsMCw4NywxMTAsNDYsMCw0LDExNiw1LDAsMTA3LDEwLDAsCi0gICAgMTE0LDExOCwwLDEsMSwxLDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMjQsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDYwLDg5LDExMCwxLDAsODgsMTI0LDIsMCw4Myw0MSwzLDEyMiwyMTAsNzEsCi0gICAgMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLAotICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKLSAgICAzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsNDQsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSwKLSAgICA5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LAotICAgIDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsCi0gICAgMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NCwzMiwxMTUsMTE2LDExMSwxMTQsCi0gICAgMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDExNCwzMiwwLDAsMCw3OCw0MSw3LDExNCwzLDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwyMTgsMTcsNzAsMTA1LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwKLSAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCw4LDAsMCwwLDExNCwyNTIsMCwwLDAsCi0gICAgMTE0LDEzOSwwLDAsMCwxMTQsMCwxLDAsMCw0MSwzLDExNCwxNzIsMCwwLAotICAgIDAsMTE0LDM3LDAsMCwwLDExNCwyNTQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA0OCw0LDAsMCwxMTUsMjIsMCwwLDAsMCw4LDEyLDEsMywxLDE2LAotICAgIDEsMTMsMyw5LDEsMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTIyLAotICAgIDMxLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMTE5LDAsMCwwLDExNiwwLDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEzMSwyLDAsMTE0LDM5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwwLDExMCwyMSwKLSAgICAwLDEyNCwyLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwKLSAgICAxMDMsMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LAotICAgIDg4LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwKLSAgICAwLDgzLDExNiwzLDAsMTA2LDUsMCwxMjQsMSwwLDEwMCwwLDAsMTMxLDIsCi0gICAgMCwxMjUsNSwwLDEyNCw0LDAsMTI0LDUsMCw5NSw2LDAsMTI0LDUsMCwKLSAgICA4Myw0MSwyLDc4LDExNCwxMjYsMCwwLDAsNDEsNywxMTQsMTE3LDAsMCwwLAotICAgIDExNCwxMjYsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKLSAgICAxODAsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLDYsCi0gICAgMTE0LDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwyNTQsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LAotICAgIDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3MCwKLSAgICA0LDAsMCwxMTUsMTgsMCwwLDAsMCw0LDE1LDEsMjQsMiwxNSwxLAotICAgIDYsMSwxMiwxLDE2LDEsMTgsMSw5LDEsMTIyLDI3LDgwLDk3LDExNiwxMDQsCi0gICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLAotICAgIDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsMCwKLSAgICAwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjQzLDAsCi0gICAgMCwwLDEwMywwLDAsMTI1LDQsMCwxMjAsMjMwLDAsMTI0LDIsMCw2OCw5MywKLSAgICAxOTEsMCwxMjUsNSwwLDExNiwwLDAsMTI0LDUsMCwxMTYsMSwwLDExNiwyLAotICAgIDAsMTAyLDIsMCwxMzEsMiwwLDExNSw0MywwLDExMywxMywwLDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwKLSAgICAxLDAsMTA3LDksMCwxMTQsMTMsMCwxMTYsNCwwLDEyNCw2LDAsMTAwLDIsCi0gICAgMCwxMzEsMiwwLDExNCwxMDYsMCwxMjQsNiwwLDEwNiw1LDAsMTI0LDEsMCwKLSAgICAxMjQsMywwLDEzMSwyLDAsMTI1LDcsMCwxMTAsMTgsMCwxMjQsMCwwLDEwNiwKLSAgICA2LDAsMTI0LDEsMCwxMjQsNiwwLDEzMSwyLDAsMTI1LDcsMCwxMjQsNywKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTM5LDAsMTEzLDEzLDAsMTI0LDcsMCwKLSAgICAxMDYsNywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTU4LDAsMTI0LDcsMCw4MywKLSAgICAxMjQsNywwLDEwNiw4LDAsMTI1LDgsMCwxMjQsOCwwLDEwMCwxLDAsMTA3LAotICAgIDgsMCwxMTQsMTkxLDAsMTE2LDksMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMjQsNCwwLDEwNiwxMCwwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMywKLSAgICAwLDg3LDExNiwxMSwwLDEwNiwxMiwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwKLSAgICAwLDEyNSw3LDAsMTI0LDQsMCwxMjQsNywwLDk1LDgsMCwxMjQsNywwLAotICAgIDgzLDEwMCwxLDAsODMsNDEsNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsNzgsMTE0LDE4MiwwLDAsMCwxMjIsMTksCi0gICAgMTE1LDExMiwxMDEsOTksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDEsMTMsMTE0LDE0NSwwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LAotICAgIDUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCwyLDEsMCwwLDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDE4MiwwLDAsMCwxMTQsMywxLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwKLSAgICAxNTgsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwxMjMsCi0gICAgMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSw5LDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE4MSwwLDAsMCwyMTgsMTQsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsOTAsNSwKLSAgICAxMDEsMTEwLDExNiwxMTQsMTIxLDExNCwyNTQsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsCi0gICAgMTMwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDIxOCw5LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDg1LDQsCi0gICAgMCwwLDExNSw0MCwwLDAsMCwwLDUsNiwxLDEzLDEsMjEsMSwzLAotICAgIDEsMTUsMSwxMiwxLDE1LDEsMjEsMiwxOCwxLDEyLDEsMywxLDE1LAotICAgIDEsNCwxLDksMSwxMiwxLDEyLDUsMTcsMiwxOCwxLDksMSwxMjIsCi0gICAgMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTIsMTAxLDk5LDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsCi0gICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMjQsCi0gICAgMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTMxLDMsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCw1OCwwLDEwMCwxLDAsODMsMTI0LDQsMCwxMDYsMywwLDEwMCwKLSAgICAxLDAsMTA3LDgsMCwxMTQsMTMyLDAsMTI0LDQsMCwxMDYsNCwwLDEyNSw1LAotICAgIDAsMTI0LDUsMCwxMTQsMTI1LDAsMTAwLDIsMCwxMjQsNCwwLDk1LDUsMCwKLSAgICAxMTYsNiwwLDEyNCwxLDAsMTI0LDUsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLAotICAgIDMsMCwxMjQsNCwwLDk1LDQsMCwxMjQsNCwwLDgzLDEwMCwxLDAsODMsCi0gICAgMTEwLDQsMCwxMjQsNCwwLDgzLDEwMCwxLDAsODMsNDEsMywxMjIsOTgsMTAyLAotICAgIDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwKLSAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsCi0gICAgOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDYsNzgsOTAsOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCwKLSAgICA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTI5LAotICAgIDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMjMxLDAsCi0gICAgMCwwLDQxLDYsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDUsMSwKKyAgICAxMTQsMTk5LDAsMCwwLDE3NSwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNiwwLDAsMCwxMjQsMCwxMDYsMCw4MywwLAorICAgIDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwKKyAgICA5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwKKyAgICAxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDE1NSwwLDAsMCwxNzksMywwLDAsMTE1LDIsMCwwLDAsMCwzLAorICAgIDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsNzgsNDEsMTQsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwyMTAsCisgICAgMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwKKyAgICAwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwxOTksMCwwLAorICAgIDAsMTE0LDEyMCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAyMjEsMCwwLDAsMTMyLDMsMCwwLDExNSwyMCwwLDAsMCw4LDYsNCwKKyAgICAyLDgsNCw4LDQsOCwzLDgsOCw4LDYsOCw2LDgsNCw4LAorICAgIDQsMTE0LDIyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw5NiwwLDAsMCwKKyAgICAxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywKKyAgICAxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCwxMDAsMTEsCisgICAgMTMyLDAsOTAsOCwxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDksMTAwLDE0LDEwMCwxNSwKKyAgICAxMzIsMCw5MCwxMCwxMDAsMTYsMTAwLDE3LDEzMiwwLDkwLDExLDEwMCwxOCwxMDAsMTksCisgICAgMTMyLDAsOTAsMTIsMTAwLDIwLDEwMCwyMSwxMzIsMCw5MCwxMywxMDAsMjIsODMsMCwKKyAgICA0MSwyMywyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKKyAgICAxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCisgICAgMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsCisgICAgMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsCisgICAgMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwKKyAgICAxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsCisgICAgMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLAorICAgIDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMjQsMiwxMjQsCisgICAgMCw5NSwxLDExNiwyLDEyNCwwLDEwNiwzLDEzMSwwLDEzMSwxLDEyNCwwLDk1LAorICAgIDQsMTI0LDMsMTI0LDAsOTUsNSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsNiwKKyAgICAyMTgsNSw5NSwxMTAsOTcsMTA5LDEwMSwyMTgsNSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsOTcsCisgICAgMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsCisgICAgMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsMTAyLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwyMTgsMTEsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE4MiwwLDAsMCwxOTIsMywwLDAsMTE1LDgsMCwwLAorICAgIDAsMCwxLDYsMSw2LDEsMTQsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsMCwxMDYsMCwKKyAgICAxMDYsMSwxMDAsMSwxMzEsMSw5MiwzLDEyNSwxLDEyNSwyLDEyNSwzLDEyNCwyLAorICAgIDEwMCwyLDEwNywyLDExNCwzMCwxMDAsNiw4MywwLDEyNCwxLDEwMCw1LDEwMiwyLAorICAgIDgzLDAsNDEsNywxMjIsNjIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsCisgICAgMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LAorICAgIDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsCisgICAgOTcsMTA5LDEwMSw0MSwxMTQsNjEsMCwwLDAsMTE0LDMyLDAsMCwwLDExNCw4LAorICAgIDAsMCwwLDExNCwzNywwLDAsMCw5MCw4LDk1LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDk1LDQxLDIsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDIsCisgICAgMTE0LDIyOCwwLDAsMCwxMTQsMzQsMCwwLDAsNDEsNCwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwyMTksMCwwLDAsMjE4LDMsMTAwLDExMSwxMTYsOTAsMiwxMDksMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMywKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTk4LDMsMCwwLDExNSw4LDAsMCwwLAorICAgIDAsMiwxOCwxLDgsMiw0LDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMjgsMCwwLDAsMTI0LDAsMTA2LDAsMTMxLDAsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsMSwxMTYsMiwxMDYsMywxMjQsMSwyNSwwLAorICAgIDEyNCwyLDEzMSwyLDgzLDAsNDEsMSw3OCw0MSw0LDExNCwyMzUsMCwwLDAsCisgICAgMTE0LDExNCwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsNywxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsNDEsMywxMTQsMTA0LDAsMCwwLDkwLDE4LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIzMCwwLAorICAgIDAsMCwyMDgsMywwLDAsMTE1LDQsMCwwLDAsMCwxLDEyLDEsMTIyLAorICAgIDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDgwLDAsMCwwLDExNiwwLDEyNCwwLDEwNiwxLAorICAgIDEzMSwwLDEzMSwxLDEyNSwxLDEyNCwxLDEyNCwwLDEwNiwyLDEwNywzLDExNCw3NCwKKyAgICAxMjQsMCwxMDYsMywxMjQsMCwxMDYsNCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwKKyAgICAxMDAsMCwxMDcsOSwxMTQsNjgsMTI0LDIsMTA2LDUsMTAwLDAsMTA3LDgsMTE0LDY4LAorICAgIDEyNCwyLDEwNiw2LDExNCw2OCwxMjQsMiwxMDYsNiwxMjQsMCw5NSw3LDEyNCwxLAorICAgIDEyNCwwLDk1LDIsMTI0LDAsMTA2LDcsODMsMCw0MSwxLDc4LDQxLDgsMTE0LAorICAgIDk3LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMjMyLAorICAgIDAsMCwwLDExNCwyMjgsMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsCisgICAgMCwwLDExNCwyMjksMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDkwLDExLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2MiwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDIxMiwzLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMCwyLDEyLDEsMTAsMSwxNCwzLDE4LDEsCisgICAgNiwxLDgsMSw2LDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LAorICAgIDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTI0LAorICAgIDAsMTA2LDEsMTMxLDAsMTMxLDEsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsCisgICAgMTA1LDExNiwxMDEsMTE0LDExNCwyMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICA4LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwyMjUsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0LDAsMCwwLDEyNCwyLDEyNCwwLDEwNiwwLDEyNCwxLDYwLAorICAgIDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDIyOSwwLDAsMCw0MSwKKyAgICAzLDExNCwxMDQsMCwwLDAsMjE4LDUsMTA1LDExMCwxMDAsMTAxLDEyMCwxMTQsMzcsMCwKICAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4MiwwLDAsMCwxMTcsNCwwLDAsMTE1LDI2LDAsMCwwLDAsCi0gICAgNCwxMiwxLDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsCi0gICAgMyw5LDEsMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LAotICAgIDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzgsNDEsMiwxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsCi0gICAgMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDE4MywwLDAsMCwxMzksNCwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCw4LDE4LDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDEsMTIsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyNTEsMCwwLDAsCi0gICAgMTE0LDAsMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDMsMSwwLDAsMTE0LAotICAgIDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyNTAsMCwwLDAsMTksNCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyLDIsNiwyLDE4LDgsMTgsMTcsMTgsMjIsMTgsMTUsMywxLDE4LDMxLAotICAgIDMsMSwyMSwyMSwzLDEsMTE0LDI1MCwwLDAsMCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSwxMzMsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsCi0gICAgNiwwLDkwLDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsCi0gICAgMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LAotICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwKLSAgICAxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsCi0gICAgMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsCi0gICAgMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsCi0gICAgMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCwKLSAgICA5MiwyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsCi0gICAgMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsCi0gICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLAotICAgIDEyNCwwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LAotICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsCi0gICAgMTI0LDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLAorICAgIDAsMjE4LDExLDk1LDk1LDExNSwxMDEsMTE2LDEwNSwxMTYsMTAxLDEwOSw5NSw5NSwyMjgsMywKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNiw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTE1LDEwMSwxMTYsMTA1LAorICAgIDExNiwxMDEsMTA5LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwNiwxLDEzMSwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLAorICAgIDExNCwzMywwLDAsMCwxMTQsMjM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwyMzEsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDEyMiwyMiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTMxLDEsCisgICAgODMsMCw0MSwyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDgwLDk3LDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNTAsMCwKKyAgICAwLDAsMTE0LDIyOSwwLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDIzNCwzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTIsMCwwLDAsMTI0LDEsMTI0LDAsMTA2LDAsMTMxLDAsMTA3LDYsODMsCisgICAgMCw0MSwxLDc4LDQxLDEsMTE0LDIzNywwLDAsMCw0MSwyLDExNCwxMDQsMCwKKyAgICAwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywKKyAgICAxMDUsMTEwLDExNSw5NSw5NSwyMzcsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCisgICAgNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMTA2LDAsMTA2LDEsMTI0LDEsMTMxLAorICAgIDEsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwyMjksMCwwLAorICAgIDAsMTE0LDE2MSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDI0NCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTYxLDAsMCwwLDI0MCwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAorICAgIDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDE0LDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LAorICAgIDE4MiwwLDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDIzNywKKyAgICAwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MiwwLAorICAgIDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDUsMCwwLDAsMTE0LDE2MSwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMjI3LDAsMCwwLDE4NSwzLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsOCw1LDQsMiw4LDYsOCwxMCw4LDQsOCwxMyw4LAorICAgIDMsOCwzLDgsMyw4LDMsOCwzLDExNCwyMjcsMCwwLDAsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwKKyAgICAwLDAsMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLAorICAgIDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAxLDQsMTAwLDMsMTAwLDQsMTMyLDAsCisgICAgMTMxLDEsOTAsNSwxMDAsNSwxMDAsNiwxMzIsMCw5MCw2LDEwMCw3LDEwMCw4LAorICAgIDEzMiwwLDkwLDcsMTAwLDksMTAwLDEwLDEzMiwwLDkwLDgsMTAwLDExLDEwMCwxMiwKKyAgICAxMzIsMCw5MCw5LDEwMCwxMywxMDAsMTQsMTMyLDAsOTAsMTAsMTAwLDE1LDEwMCwxNiwKKyAgICAxMzIsMCw5MCwxMSwxMDAsMTcsODMsMCw0MSwxOCwyMTgsMTYsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTI0LDEsMTI0LDIsMTI0LDMsMTMxLDMsCisgICAgMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjI3LDAsCisgICAgMCwwLDExNCwyMjksMCwwLDAsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwxMDIsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwyMzMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsCisgICAgMCwyNDYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMTAwLDEsMTA2LDAsMTI0LDEsMTA2LDEsMTMxLDEsODMsMCw0MSwyLDEyMiwKKyAgICAxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCisgICAgMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LAorICAgIDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwKKyAgICAxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLAorICAgIDIsMTE0LDUwLDAsMCwwLDExNCwxMDksMCwwLDAsNDEsMiwxMTQsMTY4LDAsCisgICAgMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwyNDksMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsNzgsODQsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NywKKyAgICAwLDAsMCwyLDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsNzgsMTE0LDMyLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxOTksMCwwLDAsNSw0LDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMTAwLDEsMTAwLDIsMTAwLDMsCisgICAgMTAwLDQsMTAwLDUsMTQxLDQsODMsMCw0MSw2LDc4LDExNCwzMiwwLDAsMCwKKyAgICAxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw2MiwxMTQsMTg2LDAsMCwwLDg0LAorICAgIDQxLDEsMTE0LDIwMSwwLDAsMCw0MSwxLDExNCwyMDIsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsMCw4LDQsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKKyAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTYyLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxODMsMCwwLDAsMTEsNCwwLDAsMTE1LDAsMCwwLDAsMTIyLAorICAgIDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDgzLDAsNDEsMSw3OCwKKyAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE4NywwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMTg4LDAsMCwwLDE0LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMTA2LDEsMTAwLDEsMTI0LDAsCisgICAgMTA2LDIsMTMxLDIsMSwwLDExNiwwLDEwNiwzLDEyNCwwLDEyNCwxLDEzMSwyLAorICAgIDgzLDAsNDEsMiwxMjIsOTgsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwKKyAgICAxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNDEsNCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDIyOSwwLDAsCisgICAgMCwxMTQsMTg5LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxOTAsMCwwLDAsMTcsNCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICA3LDYsMSw4LDEsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTEwLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsCisgICAgMjQ3LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMTg0LAorICAgIDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsMTkwLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwyNDYsMCwwLDAsMjQ1LDMsMCwwLDExNSwKKyAgICAxNiwwLDAsMCw4LDEsOCwzLDEyLDksOCwzLDgsMyw4LDMsCisgICAgOCwzLDgsMywxMTQsMjQ2LDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwKKyAgICAwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsCisgICAgNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSw5MCw1LDEwMSw0LDEwMCw0LDEwMCwKKyAgICA1LDEzMiwwLDEzMSwxLDkwLDYsMTAxLDQsMTAwLDYsMTAwLDcsMTMyLDAsMTMxLAorICAgIDEsOTAsNywxMDEsNCwxMDAsOCwxMDAsOSwxMzIsMCwxMzEsMSw5MCw4LDEwMSwKKyAgICA0LDEwMCwxNywxMDAsMTEsMTAwLDEyLDEzMiwxLDEzMSwxLDkwLDksMTAxLDQsMTAwLAorICAgIDE4LDEwMCwxMywxMDAsMTQsMTMyLDEsMTMxLDEsOTAsMTAsMTAxLDQsMTAwLDE5LDEwMCwKKyAgICAxNSwxMDAsMTYsMTMyLDEsMTMxLDEsOTAsMTEsMTAwLDEwLDgzLDAsNDEsMjAsMjE4LAorICAgIDEwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiwKKyAgICA5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiwKKyAgICA5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQyLDAsMCwwLDEyMCwzNiwxMTYsMCwxMDYsMSwxMDYsMiwxMzEsMCw2OCwKKyAgICAwLDkzLDIyLDEyNSwxLDExNiwzLDEyNCwxLDEwMCwxLDEzMSwyLDExNCwxMiwxMjQsCisgICAgMSwxMDYsNCwxMzEsMCwxLDAsMTEzLDEyLDg3LDAsMTAwLDIsODMsMCw0MSwKKyAgICAzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwKKyAgICAxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsCisgICAgMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LAorICAgIDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDgsMCwwLDAsMjE4LDE5LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwxMTIsMCwwLDAsMTE0LDI0OSwwLAorICAgIDAsMCw0MSwyLDExNCwxNjgsMCwwLDAsMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDI0OSwwLDAsMCwzNSw0LDAsMCwxMTUsNiwwLDAsMCwwLDQsCisgICAgMTYsMSwxMCwxLDEyMiwyOCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsODYsMCwwLDAsMTE2LDAsMTA2LDEsCisgICAgMTAwLDEsMTA3LDksMTE0LDMwLDExNiwwLDEwNiwxLDEyLDAsMTE0LDMwLDExNiwyLAorICAgIDEwNiwzLDEwMCwyLDExNiw0LDEzMSwyLDEsMCwxMjAsNTAsMTE2LDAsMTA2LDEsCisgICAgNjgsMCw5MywzNiwxMjUsMiwxMjEsOCwxMjQsMiwxMjQsMSwxMzEsMSw4MywwLAorICAgIDQsMCwxMTYsNSwxMDcsMTAsMTE0LDcyLDEsMCwxLDAsMSwwLDExOSwzOCwKKyAgICA4OSwwLDExMywzOCw4OCwwLDExMywzOCw4NywwLDEwMCwxLDgzLDAsMTAwLDEsCisgICAgODMsMCw0MSwzLDEyMiw0Niw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywKKyAgICAxMTYsMTA0LDM5LDQ2LDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSw2LAorICAgIDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsCisgICAgMTE1LDExNCw2MywwLDAsMCwxMTQsNjQsMCwwLDAsMTE0LDEyMiwwLDAsMCwKKyAgICAxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDE2OCwwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNywxMTUsNDMsNCwwLDAsMTE1LDE2LDAsMCwwLDAsMywxOCwxLAorICAgIDEyLDEsMTIsMSwyLDEsOCwxLDE0LDEsMTIsMiwxMjIsMjIsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMTksMCwwLDAsNjcsMCwwLDAsMTE1LDEwMiwwLDAsMCwxMjQsMSwKKyAgICAxMDAsMSwxMDcsMiwxMTQsNDIsMTIxLDEyLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLAorICAgIDg3LDAsMTEwLDIwLDQsMCwxMTYsMiwxMDcsMTAsMTE0LDQwLDEsMCwxLDAsCisgICAgMSwwLDEwMCwyLDgzLDAsODgsMCwxMjEsMTQsMTE2LDMsMTA2LDQsMTI0LDEsCisgICAgMjUsMCwxMjUsMiw4NywwLDExMCw0MCw0LDAsMTE2LDUsMTA3LDEwLDExNCw5NiwKKyAgICAxLDAsMSwwLDEsMCwxMjQsMCwxMDYsNiwxMjQsMSwxMzEsMSwxMjUsMiwKKyAgICAxMjQsMiwxMTYsMywxMDYsNCwxMjQsMSw2MCwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiw4MywwLDQxLDMsMTIyLDIxMCw3MSwxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsCisgICAgMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExMCwxMTEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5NywKKyAgICA5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwxMDEsMzIsNzgsMTExLDExMCwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDMyLDAsMCwwLDc4LAorICAgIDQxLDcsMTE0LDMsMCwwLDAsMTE0LDQ3LDAsMCwwLDIxOCwxNyw3MCwxMDUsCisgICAgMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LAorICAgIDgsMCwwLDAsMTE0LDI1MCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwyNTQsCisgICAgMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgMjUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNTYsNCwwLDAsMTE1LDIyLDAsCisgICAgMCwwLDAsOCw4LDEsMiwxLDEyLDEsMTQsMyw2LDEsMiwxLAorICAgIDE0LDEsMTQsMSwxMCwxLDE2LDEsMTIyLDMxLDgwLDk3LDExNiwxMDQsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODIsCisgICAgMCwwLDAsMTE2LDAsMTI0LDIsMTAwLDEsMTMxLDIsMTE0LDI2LDEyNCwyLDEwNiwKKyAgICAxLDEyNCwxLDEzMSwxLDkyLDIsMTI1LDMsMTI1LDQsMTEwLDE0LDEyNCwyLDEwNiwKKyAgICAyLDEyNCwxLDEzMSwxLDEyNSwzLDEwMywwLDEyNSw0LDEyNCwzLDEwMCwwLDEwNywKKyAgICA5LDExNCw2MCwxMTYsMywxMDYsNCwxMjQsMSwxMjQsMywxMzEsMiw4MywwLDExNiwKKyAgICAzLDEwNiw1LDEyNCwxLDEwMCwwLDEzMSwyLDEyNSw1LDEyNCw0LDEyNCw1LDk1LAorICAgIDYsMTI0LDUsODMsMCw0MSwyLDc4LDExNCwxMjEsMCwwLDAsNDEsNywxMTQsCisgICAgMTEyLDAsMCwwLDExNCwxMjEsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTE4LAorICAgIDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMTU0LDAsCisgICAgMCwwLDQxLDYsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwyNTIsCisgICAgMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTI1LDAsMCwwLDExNCwxNjIsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsCisgICAgMTEyLDEwMSw5OSw3OCw0LDAsMCwxMTUsMTgsMCwwLDAsMCw0LDEwLDEsCisgICAgMTYsMiwxMCwxLDQsMSw4LDEsMTIsMSwxMiwxLDYsMSwxMjIsMjcsCisgICAgODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LAorICAgIDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwKKyAgICAwLDAsMCwwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNzAsMCwwLDAsMTAzLDAsMTI1LDQsMTIwLDE2MCwxMjQsMiw2OCwwLAorICAgIDkzLDEzMCwxMjUsNSwxMTYsMCwxMjQsNSwxMTYsMSwxMTYsMiwxMDIsMiwxMzEsMiwKKyAgICAxMTUsMzAsMTEzLDEwLDEyNCwwLDEwNiwzLDEyNCw1LDEzMSwxLDEyNSw2LDEyNCw2LAorICAgIDEwMCwxLDEwNyw5LDExNCwxMCwxMTYsNCwxMjQsNiwxMDAsMiwxMzEsMiwxMTQsNzIsCisgICAgMTI0LDYsMTA2LDUsMTI0LDEsMTI0LDMsMTMxLDIsMTI1LDcsMTEwLDEyLDEyNCwwLAorICAgIDEwNiw2LDEyNCwxLDEyNCw2LDEzMSwyLDEyNSw3LDEyNCw3LDEwMCwxLDEwNyw4LAorICAgIDExNCw5NCwxMTMsMTAsMTI0LDcsMTA2LDcsMTAwLDEsMTA3LDksMTE0LDEwOCwxMjQsNywKKyAgICA4MywwLDEyNCw3LDEwNiw4LDEyNSw4LDEyNCw4LDEwMCwxLDEwNyw4LDExNCwxMzAsCisgICAgMTE2LDksMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDQsMTA2LDEwLDEyNCw4LDEzMSwxLAorICAgIDEsMCwxMTMsMTAsODcsMCwxMTYsMTEsMTA2LDEyLDEyNCwxLDEwMCwxLDEzMSwyLAorICAgIDEyNSw3LDEyNCw0LDEyNCw3LDk1LDgsMTI0LDcsODMsMCwxMDAsMSw4MywwLAorICAgIDQxLDQsMTIyLDYzLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDQ2LDc4LDExNCwxNzgsMCwwLDAsMTIyLDE5LDExNSwxMTIsMTAxLDk5LDMyLAorICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDEzLAorICAgIDExNCwxNDEsMCwwLDAsMTE0LDczLDAsMCwwLDIxOCw1LDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSwxMTQsMCwxLDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxNzgsMCwwLDAsCisgICAgMTE0LDEsMSwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxNTgsCisgICAgMCwwLDAsNDEsOSwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAorICAgIDM3LDAsMCwwLDExNCwxNzcsMCwwLDAsMjE4LDE0LDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDkwLDUsMTAxLDExMCwxMTYsMTE0LDEyMSwKKyAgICAxMTQsMjUyLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOSwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw5Myw0LDAsMCwxMTUsNDAsMCwKKyAgICAwLDAsMCw1LDQsMSwxMCwxLDE0LDEsMiwxLDEwLDEsOCwxLAorICAgIDEwLDEsMTQsMiwxMiwxLDgsMSwyLDEsMTAsMSw0LDEsNiwxLAorICAgIDgsMSw4LDUsMTQsMiwxMiwxLDYsMSwxMjIsMjAsODAsOTcsMTE2LDEwNCwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEwMCwwLDAsMCwxMjQsMiwxMDAsMSwxMDcsOCwKKyAgICAxMTQsMTQsMTE2LDAsMTA2LDEsMTI1LDIsMTI0LDAsMTA2LDIsMTI0LDEsMTI0LDIsCisgICAgMTI0LDMsMTMxLDMsMTI1LDQsMTI0LDQsMTAwLDEsMTA3LDgsMTE0LDQwLDEwMCwxLAorICAgIDgzLDAsMTI0LDQsMTA2LDMsMTAwLDEsMTA3LDgsMTE0LDkyLDEyNCw0LDEwNiw0LAorICAgIDEyNSw1LDEyNCw1LDExNCw4NiwxMDAsMiwxMjQsNCw5NSw1LDExNiw2LDEyNCwxLAorICAgIDEyNCw1LDEyNCwwLDEwNiwyLDEzMSwzLDEyNCw0LDk1LDQsMTI0LDQsODMsMCwKKyAgICAxMDAsMSw4MywwLDExMCw0LDEyNCw0LDgzLDAsMTAwLDEsODMsMCw0MSwzLAorICAgIDEyMiwxNDEsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwzMiwxMDIsMTExLDExNCwzMiwzOSwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsMzksMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE1LDEyMSwKKyAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LAorICAgIDkwLDksMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsOCwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDEyNCwwLDAsCisgICAgMCwxMTQsMTU0LDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDIyNywwLDAsMCwKKyAgICA0MSw2LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsMTE0LDE3NywwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwzLDEsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAxNzgsMCwwLDAsMTI1LDQsMCwwLDExNSwyNiwwLDAsMCwwLDYsOCwKKyAgICAxLDYsMSwxNCwxLDgsMSw0LDEsMTAsMSw2LDEsNCwzLDYsCisgICAgMSwxNiwxLDQsMiw2LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLAorICAgIDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsMTE0LDI0LDEwMCwxLDgzLDAsMTI0LAorICAgIDMsMTA2LDEsODMsMCw0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCwKKyAgICA5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLAorICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLAorICAgIDQxLDQsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsCisgICAgMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxNzksMCwwLDAsMTQ5LDQsMCwwLDExNSw4LAorICAgIDAsMCwwLDAsOCwxMiwxLDgsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDEsMSw3OCw0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMTIsMTE0LAorICAgIDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwKKyAgICAwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDI1NCwwLAorICAgIDAsMCwxMTQsMCwxLDAsMCwxMTQsMSwxLDAsMCwxMTQsNCwxLDAsCisgICAgMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDI0OCwwLDAsMCwzMSw0LDAsMCwxMTUsMjIsMCwwLDAsOCwyLDQsCisgICAgMiwxMiw4LDEyLDEzLDEyLDIyLDEyLDE1LDIsMSwxMiwzMSwyLDEsMTIsCisgICAgMjMsMiwxLDExNCwyNDgsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsOTAsMCwKKyAgICAwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsCisgICAgMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMSw2LAorICAgIDkwLDcsMTAwLDYsMTAwLDcsMTMyLDAsOTAsOCwxMDAsOCwxMDAsOSwxMzIsMCwKKyAgICA5MCw5LDEwMCwxOSwxMDAsMTEsMTAwLDEyLDEzMiwxLDkwLDEwLDEwMCwxMywxMDAsMTQsCisgICAgMTMyLDAsOTAsMTEsMTAxLDEyLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTMsCisgICAgMTAwLDE3LDEwMCwxOCwxMzIsMCw5MCwxNCwxMDAsMTAsODMsMCw0MSwyMCwyMTgsMTAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLAorICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDczLDExMCwxMTYsMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LAorICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LAorICAgIDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTcsMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LDEwMSwKKyAgICA0NCwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsMTE0LAorICAgIDEwMSwxMTUsMTA0LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwKKyAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsCisgICAgMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCw1LDAsMCwwLDUsMCwwLDAsNywwLDAsMCwxMTUsODgsMCwKKyAgICAwLDAsMTAzLDAsMTI1LDMsMTIwLDQwLDEyNCwyLDY4LDAsOTMsMzIsOTIsMiwKKyAgICAxMzcsMCwxMjUsNCwxMjQsMywxMDYsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsMiwKKyAgICAxMzIsOCwxMjQsNCw2OCwwLDEzMSwxLDEzMSwxLDEsMCwxMTMsMTAsODcsMCwKKyAgICAxMjQsMywxMjQsMCw5NSwxLDEyNCwxLDExMiw1OCwxMDAsMywxMjQsMCw5NSwyLAorICAgIDEwMCw2LDEyNCwwLDk1LDMsMTE2LDQsMTMxLDAsMTI0LDAsOTUsNSwxMTYsNCwKKyAgICAxMzEsMCwxMjQsMCw5NSw2LDEwMCw1LDgzLDAsNDEsNywxMjIsMTU0LDczLDExMCwKICAgICAxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsCiAgICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAogICAgIDMyLDExMSwxMTAsMzIsOTcsMTEwLDEwMCwzMiw5NywzMiwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwKQEAgLTIxNTcsMzc3ICsyMDE4LDM0OCBAQAogICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKICAgICA5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTAxLDk5LAogICAgIDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywwLAotICAgIDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwwLAotICAgIDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjYsMCwwLAotICAgIDAsNDEsMSwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMjgsMCwwLDAsMTY4LDQsMCwwLDExNSwyLDAsMCwwLAotICAgIDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDc4LDExNCw4OSwwLDAsMCw0MSw3LDExNCwxNTEsMCwwLAotICAgIDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwKLSAgICAxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwKLSAgICAxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsCi0gICAgOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg2LDAsMCwwLDE2Miw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsCi0gICAgMSwxOSwxLDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTIyLDE5LDcwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyMiwwLAorICAgIDAsMCwxMjQsMCw5MywxNCwxMjUsMSwxMjQsMSwxMzYsMCwxMDIsMiw4NiwwLAorICAgIDEsMCwxMTMsMiwxMDAsMCw4MywwLDQxLDEsNzgsMTE0LDQsMCwwLDAsCisgICAgNDEsMiwxMTQsMjQsMCwwLDAsMTE0LDIyMiwwLDAsMCw0MSwxLDExNCwxMjQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLAorICAgIDAsMCwxNzgsNCwwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwzOCw3MCwKICAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LDEwMSw0NiwxMTQsMzEsMCwwLAotICAgIDAsNzgsMTE0LDg5LDAsMCwwLDQxLDEsMTE0LDksMSwwLDAsNDEsMSwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDExNCwyNTEsMCwwLDAsMTc2LDQsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU5LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzcsMCwxMDAsMSwwLDEwMywwLDAsMTAyLDIsMCwKLSAgICA4MywxMjQsMiwwLDEwNiwxLDAsMTI0LDIsMCwxMDYsMiwwLDExMiw1NSwwLAotICAgIDEwMywwLDAsMTAyLDIsMCw4Myw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDMsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwKLSAgICAwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTI2LDAsMCwwLDE4Miw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDcsMTUsMSwxMiwxLDEwLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNiwwLDAsMCwwLDAsMCwwLDcsMCwwLDAsNywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNDAsMCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwwLDExNiwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDYsMCwxMDAsMiwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMiw4Myw0MSwzLDc4LDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSwKLSAgICAxLDExNCwxNjksMCwwLDAsNDEsNywxMTQsMTEwLDAsMCwwLDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LAotICAgIDExNSwxMDgsMTE0LDE4MSwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCw2LDEsMCwwLAotICAgIDE5NCw0LDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwKLSAgICAwLDAsMCwxNSwwLDAsMCw2NywwLDAsMCwxMTUsMjM0LDEsMCwwLAotICAgIDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwxMjEsMzQsMCwxMTYsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsCi0gICAgMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsMCw4NywxMTAsMjQsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwxLDEsMTAwLDEwLDAsMTI1LDUsCi0gICAgMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsMTI0LDAsMCwxMDYsNywwLDEwNywKLSAgICAzLDAsMTE0LDEyMCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LAotICAgIDUsMCwxMjQsMCwwLDk1LDcsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1MywKLSAgICAwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEzMSwwLDAsMTI1LDcsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMjUsNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwKLSAgICAwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLAotICAgIDEzMSwyLDAsMTI1LDgsMCwxMjAsMTAwLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCwKLSAgICA5Myw3NywwLDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LAotICAgIDksMCwyMywxMjUsMTEsMCwxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwKLSAgICAyLDAsMTI1LDEyLDAsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjA4LAotICAgIDAsMTI0LDAsMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLAotICAgIDEyNCw4LDAsMTAzLDEsMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIwOCwwLAotICAgIDg3LDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsMywwLDEyMCwxMjMsMCwKLSAgICAxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDExMiwwLDkyLDIsMCwxMjUsOSwwLAotICAgIDEyNSwxMCwwLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA5LDAsMjMsMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTgsMCwxMDAsNiwwLDEwNiwKLSAgICAxOSwwLDEyNCwxMiwwLDEzMSwxLDAsMTAwLDcsMCwxMDAsMywwLDEzMSwxLAotICAgIDEsMSwxMjQsNywwLDEyNCw5LDAsMjMsMTI0LDYsMCwxMDcsNiwwLDExNCwKLSAgICA1NSwxLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDU1LDEsMTI0LDAsCi0gICAgMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsNSwwLDgzLDExMyw1NSwxLDg3LDEyNCwzLDAsMTE0LDIzMCwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMDYsMjEsMCwxMjQsMSwwLDEwMCw4LDAsCi0gICAgMTMxLDIsMCwxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsCi0gICAgMjIsMCwxMjQsMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMDIsODQsMTE0LAotICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwKLSAgICAxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LDQ0LDMyLDExMSwKLSAgICAxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwzMiwxMDIsMTExLAotICAgIDExNywxMTAsMTAwLDQ2LDcwLDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDExNCwxODYsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwKLSAgICAxMDMsMzIsMTIzLDEyNSwxMTQsMTAwLDAsMCwwLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsCi0gICAgMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsODksMCwwLDAsNDEsMjMsMTE0LDM0LDAsMCwKLSAgICAwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgMTE0LDQ3LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKLSAgICA5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTQsNywwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDExNCwxMSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LAotICAgIDQ2LDAsMCwwLDExNCw2LDEsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTA3LAotICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwKLSAgICAwLDAsMTE0LDE1OCwwLDAsMCw0MSwxNCwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDEyLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCwKLSAgICA5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjYsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjYsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE4MiwwLDAsMCwxOTksNCwwLDAsMTE1LDY4LDAsMCwwLDAsMywKLSAgICA2LDEsMTksMSwzLDEsMzQsMSwxMywxLDExLDEsMTUsMSwxMCwxLAotICAgIDksMiw5LDEsOSwxLDE1LDIsOSwxLDYsMiwxMiwxLDE4LDEsCi0gICAgMjIsMSwxMCwxLDE1LDEsMTIsMSwzMiw0LDEyLDIsMjIsMSwyMiwxLAotICAgIDI1LDEsMTYsMSwxMiwxLDI5LDEsNiwxLDE5LDEsMTgsMSwxMiwxLAotICAgIDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDksMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDExLDEsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyMSwzMSwwLDExNiwxLAotICAgIDAsMTA2LDIsMCwxMjQsMSwwLDExMiwzMywwLDExNiwxLDAsMTA2LDMsMCwKLSAgICAxMzEsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMzMsMCw0LDExNiw0LAotICAgIDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwzLDAsMTA3LDEwLDAsMTE0LDc1LDAsCi0gICAgMSwxLDEsMTAzLDAsMCwxMjUsMiwwLDg5LDExMCwxLDAsODgsMTE2LDcsCi0gICAgMCwxMDYsOCwwLDEwNiw5LDAsMTAwLDEsMCwxMzEsMSwwLDExNSwxMTIsMCwKLSAgICAxMTYsMTAsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxMSwwLDExMCwKLSAgICAxMTEsMCwxMTYsMTAsMCwxMzEsMCwwLDEyNSwzLDAsMTIwLDkwLDAsMTI0LDIsCi0gICAgMCw2OCw5Myw4MiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsMTIsMCwxMDAsMiwKLSAgICAwLDEzMSwxLDAsOTIsMywwLDEyNSw1LDAsMTI1LDYsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTE0LDE5MSwwLDEwMCwzLDAsMTA2LDEzLDAsMTI0LDUsMCwxMjQsCi0gICAgNywwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDIsMCwxMjUsOCwwLDExMCw2LAotICAgIDAsMTI0LDUsMCwxMjUsOCwwLDEyNCwzLDAsMTA2LDE1LDAsMTI0LDgsMCwKLSAgICAxMzEsMSwwLDEsMTEzLDEyOCwwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwxMSwKLSAgICAwLDExNiw3LDAsMTA2LDgsMCwxMDYsOSwwLDExNiwxNiwwLDEzMSwxLDAsCi0gICAgMTE0LDcsMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjQsMiwwLDY4LAotICAgIDEzMSwxLDAsMTI0LDAsMCw5NSwxNywwLDEwMCw2LDAsODMsNDEsNywxMjIsCi0gICAgNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwKLSAgICAxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAotICAgIDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAotICAgIDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwwLDAsMCwxMTQsNjAsMCwwLDAsMTIyLAotICAgIDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDI4LDAsMCwwLAotICAgIDEwNCwwLDAsMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEzMSwwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwKLSAgICAwLDQxLDEsMTE0LDkwLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDkwLAorICAgIDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwKKyAgICAxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYxLDAsMCwwLDExNCwzMSwwLDAsMCw3OCwKKyAgICAxMTQsOTEsMCwwLDAsNDEsNywxMTQsMTQ3LDAsMCwwLDIxOCw4LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsMTAxLDExNiwyMTgsMTEsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsMTksOTUsMTE0LDEwMSwxMDgsCisgICAgOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSw0MSwKKyAgICA1LDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwxNCwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDcsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTUsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLAorICAgIDExNCwxMjQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxNzIsCisgICAgNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw0LDEsMTQsMSwyOCwxLAorICAgIDYsMiwxMCwxLDYsMSw4LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDEwMCwzLDEyNCwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDQ2LDExNCwzMSwwLDAsMCw3OCwxMTQsOTEsMCwwLDAsNDEsCisgICAgMSwxMTQsNywxLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OSwwLDAsCisgICAgMCwxODYsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAorICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNDIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsMTI1LDIsMTI0LDIsCisgICAgMTAwLDEsMTA3LDgsMTE0LDI2LDEwMCwxLDEwMywwLDEwMiwyLDgzLDAsMTI0LDIsCisgICAgMTA2LDEsMTI0LDIsMTA2LDIsMTEyLDM4LDEwMywwLDEwMiwyLDgzLDAsNDEsMiwKKyAgICAxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCisgICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LAorICAgIDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwKKyAgICAxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLAorICAgIDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLDExNCwxNzgsMCwwLDAsMTE0LAorICAgIDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDEyMSwwLDAsMCwxOTIsNCwKKyAgICAwLDAsMTE1LDgsMCwwLDAsMCw3LDEwLDEsOCwxLDgsMSwxMjIsCisgICAgMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSw2LDAsMCwwLDAsMCwwLDAsCisgICAgNywwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwxMjQsMSwxMjQsMiwxMjQsMywxMzEsMiwxMjUsNiwxMTYsMCwxMjQsMiwxMjQsCisgICAgMywxMjQsNiwxMjQsNCwxMDAsMSwxNDEsNCw4MywwLDQxLDIsNzgsNDEsMiwKKyAgICAxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsNDEsMSwxMTQsMTY1LDAsMCwKKyAgICAwLDQxLDcsMTE0LDEwNCwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDkwLDQsMTE1LDEwOSwxMTUsMTA4LDExNCwxNzcsMCwKKyAgICAwLDAsMTE0LDEyNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsNCwxLDAsMCwyMDQsNCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwxLDEwLDEsOCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwwLDAsMCwxNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsOTgsMSwwLDAsMTAwLDEsMTI1LDMsMTI0LAorICAgIDEsMTA2LDAsMTAwLDIsMTMxLDEsMTAwLDMsMjUsMCwxMjUsNCwxMjEsMjQsMTE2LAorICAgIDEsMTI0LDAsMTA2LDIsMTEyLDM0LDExNiwzLDEwNiw0LDEzMSwwLDEzMSwxLDEwNiwKKyAgICA1LDEyNSw1LDg3LDAsMTEwLDI0LDQsMCwxMTYsNiwxMDcsMTAsMTE0LDY2LDEsCisgICAgMCwxLDAsMSwwLDEwMCwxMCwxMjUsNSw4OSwwLDExMCwyLDg4LDAsMTI0LAorICAgIDUsMTI0LDAsMTA2LDcsMTA3LDMsMTE0LDkyLDEyNCwwLDEwNiw4LDEzMSwwLDEsCisgICAgMCwxMjQsNSwxMjQsMCw5NSw3LDExNiw5LDEzMSwwLDExNCwxMTQsMTI0LDAsMTA2LAorICAgIDEwLDEyNSw2LDEyNCw0LDEwNiwxMSwxMzEsMCwxMjUsNywxMTAsMTAsMTI0LDAsMTA2LAorICAgIDEyLDEyNSw2LDEyNCw0LDEyNSw3LDEyNCw3LDEyNCw2LDEwNyw2LDExNCwyMTgsMTE2LAorICAgIDEzLDEyNCwwLDEwNiwyLDEyNCw0LDEzMSwyLDEyNSw4LDEyMCw3MiwxMjQsMCwxMDYsCisgICAgMTQsNjgsMCw5Myw1NCw5MiwyLDEyNSw5LDEyNSwxMCwxMDAsNSwxMjQsOSwyMywKKyAgICAwLDEyNSwxMSwxMTYsMTMsMTI0LDgsMTI0LDExLDEzMSwyLDEyNSwxMiwxMTYsMTUsMTI0LAorICAgIDEyLDEzMSwxLDExNCwxNTIsMTI0LDAsMTA2LDE2LDEyNCwxMCwxMjQsMSwxMjQsMTIsMTI0LAorICAgIDgsMTAzLDEsMTI0LDIsMTMxLDUsODMsMCwxMTMsMTUyLDg3LDAsMTE2LDE3LDEyNCwKKyAgICA4LDEzMSwxLDEyNSwzLDEyMCw4OCwxMjQsMCwxMDYsMTQsNjgsMCw5Myw3OCw5MiwKKyAgICAyLDEyNSw5LDEyNSwxMCwxMTYsMTMsMTI0LDAsMTA2LDIsMTI0LDQsMTI0LDksMjMsCisgICAgMCwxMzEsMiwxMjUsMTIsMTE2LDE4LDEwNiwxOSwxMDAsNiwxMjQsMTIsMTAwLDMsMTAwLAorICAgIDcsMTQxLDMsMSwwLDEyNCw3LDEyNCw5LDIzLDAsMTI0LDYsMTA3LDYsMTE0LAorICAgIDIyNiwxMTYsMTUsMTI0LDEyLDEzMSwxLDExNCwyMjYsMTI0LDAsMTA2LDE2LDEyNCwxMCwxMjQsCisgICAgMSwxMjQsMTIsMTAwLDgsMTI0LDIsMTMxLDUsODMsMCwxMTMsMjI2LDg3LDAsMTI0LAorICAgIDMsMTQ0LDEsMTE0LDk0LDExNiwxOCwxMDYsMTksMTAwLDksMTI0LDgsMTMxLDIsMSwKKyAgICAwLDExNiwxOCwxMDYsMjAsMTI0LDEsMTAwLDgsMTMxLDIsMTI1LDEzLDEyNCw4LDEwMywKKyAgICAxLDEyNCwxMyw5NSwyMSwxMjQsMTMsODMsMCwxMDAsOCw4MywwLDQxLDExLDEyMiwKKyAgICAxMTEsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsCisgICAgMTEyLDEwMSw5OSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDQ0LDMyLDExMSwxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwKKyAgICAzMiwxMDIsMTExLDExNywxMTAsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDcwLDExNCw2MSwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDMxLDAsMCwwLAorICAgIDExNCwxODIsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwKKyAgICA0MSwxLDkwLDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSw3OCwxMjIsMjUsCisgICAgMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywxMjUsMTE0LDkxLDAsMCwwLDQxLDIyLAorICAgIDExNCwzNCwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICAzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjE2LDAsMCwwLDExNCw0MiwKKyAgICAwLDAsMCwxMTQsNywxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE0LDcsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwKKyAgICA5MiwwLDAsMCwxMTQsOSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDYsCisgICAgMSwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0LDEsMCwwLDExNCw0OCwwLAorICAgIDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE1OCwwLDAsCisgICAgMCwxMTQsMTU0LDAsMCwwLDQxLDE0LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsMTc3LDAsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE0LDEzMCwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsMTIsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LDk3LAorICAgIDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyMiwwLDAsMCwxMTQsMTYzLDAsMCwKKyAgICAwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2MiwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCisgICAgMTc4LDAsMCwwLDIwOSw0LDAsMCwxMTUsNzAsMCwwLDAsMCw1LDQsCisgICAgMSwxNCwxLDIsMSwyNCwxLDE0LDEsMTAsMSwxMCwxLDgsMSw2LAorICAgIDIsNiwxLDYsMSwxMCwyLDYsMSw0LDIsOCwxLDEyLDEsMTYsCisgICAgMSw4LDEsMTAsMSw4LDEsMjQsNCw4LDIsMTYsMSwxNiwxLDE2LAorICAgIDEsMTIsMSw4LDEsMTAsMSwxMiwxLDYsMSwxMiwxLDEyLDEsOCwKKyAgICAxLDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDksMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5NCwKKyAgICAwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMSwxMjEsMjIsMTE2LDEsMTA2LDIsMTI0LAorICAgIDEsMTEyLDIyLDExNiwxLDEwNiwzLDEzMSwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLAorICAgIDMwLDQsMCwxMTYsNCwxMTYsNSwxMTYsNiwxMDIsMywxMDcsMTAsMTE0LDU4LDEsCisgICAgMCwxLDAsMSwwLDEwMywwLDEyNSwyLDg5LDAsMTEwLDIsODgsMCwxMTYsCisgICAgNywxMDYsOCwxMDYsOSwxMDAsMSwxMzEsMSwxMTUsODQsMTE2LDEwLDEyNCwyLDEzMSwKKyAgICAxLDEyNCwwLDk1LDExLDExMCw3OCwxMTYsMTAsMTMxLDAsMTI1LDMsMTIwLDY0LDEyNCwKKyAgICAyLDY4LDAsOTMsNTYsMTI1LDQsMTI0LDQsMTA2LDEyLDEwMCwyLDEzMSwxLDkyLAorICAgIDMsMTI1LDUsMTI1LDYsMTI1LDcsMTI0LDYsMTE0LDEzOCwxMDAsMywxMDYsMTMsMTI0LAorICAgIDUsMTI0LDcsMTA2LDE0LDEzMSwwLDEzMSwyLDEyNSw4LDExMCw0LDEyNCw1LDEyNSwKKyAgICA4LDEyNCwzLDEwNiwxNSwxMjQsOCwxMzEsMSwxLDAsMTEzLDk2LDg3LDAsMTI0LAorICAgIDMsMTI0LDAsOTUsMTEsMTE2LDcsMTA2LDgsMTA2LDksMTE2LDE2LDEzMSwxLDExNCwKKyAgICAxOTAsMTAwLDQsMTAwLDUsMTMyLDAsMTI0LDIsNjgsMCwxMzEsMSwxMjQsMCw5NSwKKyAgICAxNywxMDAsNiw4MywwLDQxLDcsMTIyLDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLAorICAgIDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDYxLDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDgzLAorICAgIDAsMCwwLDExNSwyMCwwLDAsMCwxMDQsMCwxMjQsMCw5MywxMiwxMjUsMSwKKyAgICAxMjQsMSwxMDYsMCwxMzEsMCwxNDYsMiwxMTMsNCw4MywwLDExNCw0LDAsMCwKKyAgICAwLDQxLDEsMTE0LDkyLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDkwLAogICAgIDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2MiwxNyw1LDAsCi0gICAgMCwxMTUsMiwwLDAsMCw5LDAsMTIyLDQxLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKKyAgICAwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsMzAsNSwwLAorICAgIDAsMTE1LDIsMCwwLDAsNiwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCiAgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAogICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsMTAxLDExNiw5OSwxMTEsCiAgICAgMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ3LDAsMCwwLDExNCwxLAotICAgIDEsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwKKyAgICA5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDcsMCwwLDAsMTE0LDI1NSwKKyAgICAwLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCiAgICAgMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwKICAgICAxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsMTEsMSwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsOTAsMCwwLDAsCi0gICAgMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEyLDEsMCwwLDQxLAotICAgIDksMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LDksMSwwLAorICAgIDAsMTE0LDg3LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsOTIsMCwwLDAsCisgICAgMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEwLDEsMCwwLDQxLAorICAgIDksMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAogICAgIDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwKLSAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NiwwLDAsCi0gICAgMCwxMTQsMTA4LDAsMCwwLDExNCwyMzgsMCwwLDAsMTE0LDIyNiwwLDAsMCwKKyAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NCwwLDAsCisgICAgMCwxMTQsMTAyLDAsMCwwLDExNCwyMzQsMCwwLDAsMTE0LDIyMiwwLDAsMCwKICAgICA5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNCwxLDAsMCwyNDQsNCwKLSAgICAwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywxLDMxLDEsMjIsCi0gICAgMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwxLDYsMSwyNywKLSAgICAyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxMiwxLDAsMCwxLDUsCisgICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsNiwxLDIsMSwyMiwxLDIwLAorICAgIDMsMTAsMywxMiwxLDEyLDcsNiwxLDEwLDEsMTYsMSw0LDEsMTgsCisgICAgMiw0LDEsMTQsMSw2LDEsMTIsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCiAgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAogICAgIDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsCi0gICAgMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCw4Myw0MSwzLDk3LDIwLDEsMCwwLDY1LDMyLDk5LDEwOCw5NywKLSAgICAxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKLSAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwKLSAgICAxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwzMiwKLSAgICAxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTA4LAotICAgIDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LAotICAgIDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAotICAgIDE5LDAsMCwwLDExNSw0MywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMTUsMzAsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsMCwKLSAgICAxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsCisgICAgMCwwLDcsMCwwLDAsMTE1LDE4LDAsMCwwLDEzNSwwLDEzNSwxLDEwMiwKKyAgICAyLDEwMCwxLDEwMCwyLDEzMiw4LDEyNSwyLDEyNCwyLDgzLDAsNDEsMyw5NywKKyAgICAyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LAorICAgIDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwKKyAgICAxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLAorICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzQsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTE1LDIwLDExNiwxLDEwMCwxLDEyNCwwLAorICAgIDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLDEwMiwxLDEzNiwxLDE1OCwyLAorICAgIDE0MiwwLDgzLDAsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwKICAgICAxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKICAgICAxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAogICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSwKICAgICA5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNywwLDAsMCw0MSwyLDExNCw0OCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCi0gICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDI5LDUsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsMTIyLDU0LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEzLDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxOSw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwxNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LAotICAgIDQ5LDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDI0NSwwLDAsMCwzNyw1LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDQxLDE1LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsCi0gICAgMjUxLDAsMCwwLDExNCwxMzIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTI2LAotICAgIDAsMCwwLDExNCw2LDEsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE0LDEsCi0gICAgMCwwLDExNCwxODQsMCwwLDAsMTE0LDIwLDEsMCwwLDExNCwyNDUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDcsMSwwLDAsMTUzLDQsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw3LDYsMiwxMiwxNCwxMiw0LDYsMiwxMiwxMiwxMiwKLSAgICA1LDE1LDQ1LDEyLDMxLDE4LDE4LDExNCw3LDEsMCwwLDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw2LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxOTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwxLAotICAgIDAsMTI1LDUsMCwxMjQsNCwwLDExNSw5OSwwLDEyNCw1LDAsMTE0LDU0LDAsCi0gICAgMTI0LDUsMCwxMDYsMSwwLDEyNSw0LDAsMTEwLDQ1LDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwNywyLDAsMTE0LDg0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMjUsNCwwLDExMCwxNSwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNSwwLDExNSwxMjYsMCwxMTYsCi0gICAgNCwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMywwLDEyNCw0LDAsMTMxLDIsCi0gICAgMSwxMjUsNSwwLDEyMSw0NCwwLDEyNCw1LDAsMTI0LDAsMCwxMDAsMiwwLAotICAgIDYwLDEyNCw0LDAsMTI0LDAsMCwxMDAsMSwwLDYwLDEyNCwyLDAsMTI0LDAsCi0gICAgMCwxMDAsNCwwLDYwLDEyNCwzLDAsMTI0LDAsMCwxMDAsNSwwLDYwLDg3LAotICAgIDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTkwLDAsMSwxLDEsCi0gICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDYsNzgsMjE4LDEwLDk1LDk1LAorICAgIDExMSwxMTQsMTE2LDEwMSwxMDAsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsCisgICAgMCwwLDAsMTE0LDEwMywwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwKKyAgICAyLDExNCwxNjgsMCwwLDAsMTE0LDExLDEsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsCisgICAgOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MiwKKyAgICA1LDAsMCwxMTUsNiwwLDAsMCwwLDIsOCwxLDEyLDEsMTIyLDU0LAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNjgsMCwKKyAgICAwLDAsMTE0LDExLDEsMCwwLDExNCwxNywxLDAsMCwxMTQsNCwwLDAsCisgICAgMCw0MSwyLDExNCwxNjgsMCwwLDAsMTE0LDExLDEsMCwwLDExNCw2LDAsCisgICAgMCwwLDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywzMiw1LDAsCisgICAgMCwxMTUsNCwwLDAsMCwwLDEwLDE0LDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLAorICAgIDEwNiwxLDEzMSwxLDgzLDAsNDEsMiw3OCwxMjIsMTYsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw1MCwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDMsMCwKKyAgICAwLDAsNTAsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5NSw5NSw0MSwxLDc4LDQxLDE1LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwKKyAgICAxMTQsMjQ5LDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsCisgICAgMTIxLDAsMCwwLDExNCw0LDEsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDEyLAorICAgIDEsMCwwLDExNCwxODAsMCwwLDAsMTE0LDE4LDEsMCwwLDExNCwyNDMsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDUsMSwwLDAsMTYzLDQsMCwwLDExNSwKKyAgICAyMCwwLDAsMCw4LDcsNCwyLDgsMTQsOCw0LDQsMiw4LDEyLAorICAgIDgsNSwxMCw0OCw4LDMxLDEyLDE4LDExNCw1LDEsMCwwLDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDYsMCwwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LAorICAgIDQsMTI0LDAsMTA2LDAsMTAwLDIsMTMxLDEsMTI1LDUsMTI0LDQsMTE1LDY2LDEyNCwKKyAgICA1LDExNCwzNiwxMjQsNSwxMDYsMSwxMjUsNCwxMTAsMzAsMTI0LDIsMTI0LDMsMTA3LAorICAgIDIsMTE0LDU2LDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEyNSw0LDExMCwxMCwxMTYsCisgICAgMywxMjQsMSwxMjQsMiwxMzEsMiwxMjUsNCwxMjQsNSwxMTUsODQsMTE2LDQsMTI0LAorICAgIDEsMTI0LDIsMTI0LDQsMTAwLDMsMTQxLDMsMTI1LDUsMTIxLDM2LDEyNCw1LDEyNCwKKyAgICAwLDEwMCwyLDYwLDAsMTI0LDQsMTI0LDAsMTAwLDEsNjAsMCwxMjQsMiwxMjQsCisgICAgMCwxMDAsNCw2MCwwLDEyNCwzLDEyNCwwLDEwMCw1LDYwLDAsODcsMCwxMTAsCisgICAgMjAsNCwwLDExNiw1LDEwNywxMCwxMTQsMTQwLDEsMCwxLDAsMSwwLDg5LAorICAgIDAsMTEwLDIsODgsMCwxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLDk1LDk1LAogICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsOTUsMTE0LDEyOSwwLDAsMCw5MCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwKLSAgICA5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSw0MSw2LDIxOCwKLSAgICAzLDEwMywxMDEsMTE2LDExNCwxMjksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjE5LAotICAgIDAsMCwwLDExNCwxNjksMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDgsMCwwLDAsOTAsOCwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywxMTYsMTA0LDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMjksMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTAyLAotICAgIDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Myw1LDAsMCwKLSAgICAxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTUsMSw2LDEsNiwxLDEyLAotICAgIDEsMTIsMSwxOCwyLDE1LDEsNiwxLDIxLDEsMywxLDEwLDEsMTAsCi0gICAgMSwxMCwxLDE0LDEsMTMsMiwxMTQsMjUsMSwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLAotICAgIDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwxMTYsNCwwLDEwMiwyLAotICAgIDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDIsMCwxMjUsMiwwLAotICAgIDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLDAsODMsNDEsMSwxMjIsCi0gICAgOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwzMiwKLSAgICA5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsCi0gICAgMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwzMiwKLSAgICA0MSw3LDExNCwyMjUsMCwwLDAsMTE0LDE0NywwLDAsMCwyMTgsMTgsMTAxLDEyMCwKLSAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwKLSAgICAxMTQsMjE5LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDY2LDUsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsNSwxOCwxLDEyLDEsMTIsMSwxMTQsMTYzLDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNzAsMiwwLDAsMTI0LDAsMCw5NywwLDAsMTE2LDAsCi0gICAgMCwxMDYsMSwwLDk3LDEsMCwxMTYsMCwwLDEwNiwyLDAsOTcsMiwwLAotICAgIDExNiwxLDAsMTA2LDMsMCwxMTYsNCwwLDI1LDEyNSwxLDAsMTIwLDc2LDAsCi0gICAgMTAwLDI2LDAsNjgsOTMsNjgsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDEsMCwKLSAgICAxMDYsMywwLDEwNyw3LDAsMTE0LDgzLDAsMTE2LDAsMCwxMDYsNSwwLDEyNCwKLSAgICAyLDAsMTMxLDEsMCwxMjUsMywwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsMiwwLDI1LDEyNSwzLDAsMTE2LDYsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMywwLDEsMTEzLDQ0LDAsODcsMTAwLDUsMCwxMDAsCi0gICAgNiwwLDEwMywxLDAsMTAyLDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDYsCi0gICAgMCwxMDMsMiwwLDEwMiwyLDAsMTAyLDIsMCwxMjUsNCwwLDEyMCwxNDksMCwKLSAgICAxMjQsNCwwLDY4LDkzLDEyOSwwLDkyLDIsMCwxMjUsNSwwLDEyNSw2LDAsCi0gICAgMTE2LDcsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsMTI0LDYsMCw2OCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE1LDE5OSwwLDExNiw4LDAsMTMwLDEsMCwxMjQsCi0gICAgNiwwLDEwMCwxMSwwLDI1LDEyNSw3LDAsMTI0LDUsMCwxMTYsMSwwLDEwNiwKLSAgICAzLDAsMTA3LDYsMCwxMTQsMjQxLDAsMTE2LDEsMCwxMDYsMywwLDEyNCw1LAotICAgIDAsMjUsMTI1LDgsMCw4MCwxMTMsMTU2LDAsMTIxLDIwLDAsMTE2LDAsMCwxMDYsCi0gICAgNSwwLDEyNCw1LDAsMTMxLDEsMCwxMjUsOCwwLDgwLDg3LDExMywxNTYsMCwKLSAgICA0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDI4LDEsMSwxLDEsMTE5LDE1NiwwLAotICAgIDg5LDExMywxNTYsMCw4OCwxMTMsMTU2LDAsODcsMTE2LDksMCwxMDAsMTIsMCwxMzEsCi0gICAgMSwwLDEzMCwxLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMywwLDEyNCw4LAotICAgIDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMTQsMCwxMjQsNywKLSAgICAwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTA2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEzMSwzLDAsMSwxMjEsMTksCi0gICAgMCwxMTYsMCwwLDEwNiw1LDAsMTAwLDE3LDAsMTMxLDEsMCwxMjUsOSwwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTQ3LDEsMSwxLAotICAgIDEsMTAwLDE4LDAsMTI1LDksMCw4OSwxMTAsMSwwLDg4LDExNiw2LDAsMTI0LAotICAgIDEsMCwxMDAsMTcsMCwxMjQsOSwwLDEzMSwzLDAsMSwxMTYsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDE5LDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsNiwwLDEyNCwxLAotICAgIDAsMTAwLDE5LDAsMTI0LDEwLDAsMTMxLDMsMCwxLDEyNCw1LDAsMTAwLDcsCi0gICAgMCwxMDcsMiwwLDExNCwyMzgsMSwxMTYsMCwwLDEwNiw1LDAsMTAwLDIwLDAsCi0gICAgMTMxLDEsMCwxMjUsMTEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDIxLDAsMTI0LAotICAgIDExLDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMjIsMCwxMTYsCi0gICAgMTEsMCwxMzEsMCwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMDYsMTMsMCwxMTYsCi0gICAgMiwwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDEsMCwxLDEyNCw1LDAsMTAwLAotICAgIDcsMCwxMDcsMiwwLDExNCw2NiwyLDExNiwxNSwwLDEwNiwxNiwwLDEwMCwyMywKLSAgICAwLDEzMSwxLDAsMSwxMDAsMjQsMCwxMTYsMTIsMCwxMDcsNiwwLDExNCw2NiwKLSAgICAyLDEwMCwyNSwwLDExNiwxNywwLDk1LDE4LDAsMTAwLDE4LDAsODMsNDEsMjcsCi0gICAgMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCi0gICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTUsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLAotICAgIDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLAotICAgIDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMzIsMTA1LDExMCwxMTYsMTExLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsCi0gICAgMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwKLSAgICAxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAotICAgIDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCi0gICAgNTEsMCwwLDAsMTE0LDYyLDAsMCwwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDExNSwxMTQsMTQ0LDAsMCwwLDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsCi0gICAgMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLDkyLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwzMywKLSAgICAwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsMSwxMTMsMywwLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMTQsMzEsMCwwLDAsNzgsNDEsMSwxMTQsMzMsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjgsCi0gICAgMCwwLDAsMTAyLDUsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMjUsCisgICAgOTUsOTUsNDEsMSwxMTQsMTI0LDAsMCwwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDk1LDk1LDkwLDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLAorICAgIDYsMjE4LDMsMTAzLDEwMSwxMTYsMTE0LDEyNCwwLDAsMCwxMTQsMjIwLDAsMCwwLAorICAgIDExNCwyMTUsMCwwLDAsMTE0LDE2NSwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLAorICAgIDExMiwxMTYsMTA1LDExMSwxMTAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwMiwwLDAsMCwKKyAgICA5MCw4LDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwKKyAgICAxMDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEyNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwKKyAgICA5NSwxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDU2LDUsCisgICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsMTAsMSwxMCwxLDQsMSw0LAorICAgIDEsOCwxLDgsMSwxMiwyLDEwLDEsNCwxLDE0LDEsMiwxLDgsCisgICAgMSw4LDEsOCwxLDEyLDEsMTQsMiwxMTQsMjMsMSwwLDAsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzgsMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTMxLDAsCisgICAgMTAyLDIsMTI1LDAsMTE2LDMsMTE2LDQsMTAyLDIsMTI1LDEsMTE2LDUsMTE2LDYsCisgICAgMTAyLDIsMTI1LDIsMTI0LDAsMTI0LDEsMTI0LDIsMTAzLDMsODMsMCw0MSwxLAorICAgIDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsCisgICAgMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LAorICAgIDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDQxLDcsMTE0LDIyMSwwLDAsMCwxMTQsMTQzLDAsMCwwLDIxOCwxOCwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCisgICAgMTE1LDExNCwyMTUsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwyMjAsMCwwLDAsCisgICAgMTE0LDc4LDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxNTksMCwwLDAsNzksNSwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCw1LDEyLDEsOCwxLDgsMSwxMTQsMTU5LDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTg4LDEsMCwwLDEyNCwwLDk3LDAsMTE2LDAsMTA2LAorICAgIDEsOTcsMSwxMTYsMCwxMDYsMiw5NywyLDExNiwxLDEwNiwzLDExNiw0LDI1LAorICAgIDAsMTI1LDEsMTIwLDU2LDEwMCwyNiw2OCwwLDkzLDQ4LDEyNSwyLDEyNCwyLDExNiwKKyAgICAxLDEwNiwzLDEwNyw3LDExNCw1OCwxMTYsMCwxMDYsNSwxMjQsMiwxMzEsMSwxMjUsCisgICAgMywxMTAsMTAsMTE2LDEsMTA2LDMsMTI0LDIsMjUsMCwxMjUsMywxMTYsNiwxMjQsCisgICAgMSwxMjQsMiwxMjQsMywxMzEsMywxLDAsMTEzLDMyLDg3LDAsMTAwLDUsMTAwLAorICAgIDYsMTAzLDEsMTAyLDIsMTAwLDcsMTAwLDgsMTAwLDYsMTAzLDIsMTAyLDIsMTAyLAorICAgIDIsMTI1LDQsMTIwLDExOCwxMjQsNCw2OCwwLDkzLDEwMiw5MiwyLDEyNSw1LDEyNSwKKyAgICA2LDExNiw3LDEwMCw5LDEwMCwxMCwxMzIsMCwxMjQsNiw2OCwwLDEzMSwxLDEzMSwKKyAgICAxLDExNSwxNDIsMTE2LDgsMTMwLDEsMTI0LDYsMTAwLDExLDI1LDAsMTI1LDcsMTI0LAorICAgIDUsMTE2LDEsMTA2LDMsMTA3LDYsMTE0LDE3NCwxMTYsMSwxMDYsMywxMjQsNSwyNSwKKyAgICAwLDEyNSw4LDgwLDAsMTEzLDExMiwxMjEsMTYsMTE2LDAsMTA2LDUsMTI0LDUsMTMxLAorICAgIDEsMTI1LDgsODAsMCw4NywwLDExMywxMTIsNCwwLDExNiw5LDEwNywxMCwxMTQsCisgICAgMjEyLDEsMCwxLDAsMSwwLDExOSwxMTIsODksMCwxMTMsMTEyLDg4LDAsMTEzLAorICAgIDExMiw4NywwLDExNiw5LDEwMCwxMiwxMzEsMSwxMzAsMSwxMTYsNiwxMjQsMSwxMDAsCisgICAgMTMsMTI0LDgsMTMxLDMsMSwwLDExNiw2LDEyNCwxLDEwMCwxNCwxMjQsNywxMzEsCisgICAgMywxLDAsMTE2LDYsMTI0LDEsMTAwLDE1LDEwMCwxNiwxMDYsMTAsMTI0LDYsMTMxLAorICAgIDEsMTMxLDMsMSwwLDEyMSwxNCwxMTYsMCwxMDYsNSwxMDAsMTcsMTMxLDEsMTI1LAorICAgIDksODcsMCwxMTAsMjYsNCwwLDExNiw5LDEwNywxMCwxNDQsMSwxMTQsNTIsMSwKKyAgICAwLDEsMCwxLDAsMTAwLDE4LDEyNSw5LDg5LDAsMTEwLDIsODgsMCwxMTYsCisgICAgNiwxMjQsMSwxMDAsMTcsMTI0LDksMTMxLDMsMSwwLDExNiwwLDEwNiw1LDEwMCwKKyAgICAxOSwxMzEsMSwxMjUsMTAsMTE2LDYsMTI0LDEsMTAwLDE5LDEyNCwxMCwxMzEsMywxLAorICAgIDAsMTI0LDUsMTAwLDcsMTA3LDIsMTQ0LDEsMTE0LDEyMCwxMTYsMCwxMDYsNSwxMDAsCisgICAgMjAsMTMxLDEsMTI1LDExLDExNiw2LDEyNCwxLDEwMCwyMSwxMjQsMTEsMTMxLDMsMSwKKyAgICAwLDExNiw2LDEyNCwxLDEwMCwyMiwxMTYsMTEsMTMxLDAsMTMxLDMsMSwwLDExNiwKKyAgICAxMiwxMDYsMTMsMTE2LDIsMTA2LDE0LDEzMSwwLDEzMSwxLDEsMCwxMjQsNSwxMDAsCisgICAgNywxMDcsMiwxNDQsMSwxMTQsMTg0LDExNiwxNSwxMDYsMTYsMTAwLDIzLDEzMSwxLDEsCisgICAgMCwxMDAsMjQsMTE2LDEyLDEwNyw2LDE0NCwxLDExNCwxODQsMTAwLDI1LDExNiwxNyw5NSwKKyAgICAxOCwxMDAsMTgsODMsMCw0MSwyNywxMjIsMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLAorICAgIDEwOSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsCisgICAgMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsCisgICAgMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDExNCw1MiwwLDAsMCwxMTQsNjMsMCwwLDAsCisgICAgMjE4LDgsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNCwxNDAsMCwwLDAsOTAsCisgICAgNSwxMTIsMTExLDExNSwxMDUsMTIwLDI1MCwxLDQ3LDkwLDIsMTEwLDExNiwyNTAsMSw5MiwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwKKyAgICAwLDExNSwwLDAsMCwxMTUsMjYsMCwwLDAsMTI0LDAsOTMsMTgsMTI1LDEsCisgICAgMTE2LDAsMTI0LDEsMTMxLDEsMTAwLDAsMTA3LDIsODYsMCwxLDAsMTEzLDIsCisgICAgMTAwLDEsODMsMCw0MSwyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwzMywKKyAgICAwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwKKyAgICAwLDAsMCwxMTUsNSwwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwyNSwKICAgICA5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYxLDAsMCwwLDEyMiwzMCwKKyAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYyLDAsMCwwLDEyMiwzMCwKICAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAogICAgIDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDMsCiAgICAgMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwKICAgICAwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsMTE5LAotICAgIDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTcxLAorICAgIDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTY3LAogICAgIDAsMCwwLDExNCw3LDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LAotICAgIDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MSwwLDAsMCwxMTQsNjIsCi0gICAgMCwwLDAsMTE0LDI3LDEsMCwwLDExNCwxNDQsMCwwLDAsNDEsMTksMTE0LAotICAgIDEyMywwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNDAsCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExOCwwLDAsCisgICAgOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTE0LDUyLDAsMCwwLDExNCw2MywKKyAgICAwLDAsMCwxMTQsMjUsMSwwLDAsMTE0LDE0MCwwLDAsMCw0MSwxOSwxMTQsCisgICAgMTE4LDAsMCwwLDExNCw4LDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDIzNiwKKyAgICAwLDAsMCwxMTQsMTA5LDAsMCwwLDkwLDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsMTEzLDAsMCwKICAgICAwLDIxOCwzLDk3LDEwOCwxMDgsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwKLSAgICAxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDksMCwwLDAsMTE0LDI4LDAsMCwwLAotICAgIDExNCwxMywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDI2LDEsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDE3NCwwLDAsMCw0MSwxMiwyMTgsMTcsOTUsOTgsMTExLDExMSwKKyAgICAxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDMsMCwwLDAsMTE0LDI4LDAsMCwwLAorICAgIDExNCwxMywwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LAorICAgIDI0LDEsMCwwLDExNCw4OCwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwxNjYsCisgICAgMCwwLDAsMTE0LDE3MCwwLDAsMCw0MSwxMiwyMTgsMTcsOTUsOTgsMTExLDExMSwKICAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDExNSwKICAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKICAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LApAQCAtMjUzOCw2OCArMjM3MCw2NCBAQAogICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDc3LDUsMCwwLDExNSw4MiwKLSAgICAwLDAsMCwwLDgsNiwxLDksMSw5LDMsMTMsMSwxMywxLDE1LAotICAgIDEsMTgsMiwxMywxLDIwLDMsMzMsMSwxOSwyLDMxLDEsMTAsMSwxNSwKLSAgICAxLDEzLDEsNCwyLDMsMSwxNSwxLDUsMSwxMywxLDEyLDIsMTIsCi0gICAgMSwxNiwxLDE2LDEsMjUsMywzLDEsMTksMSwxMywyLDExLDEsMTYsCi0gICAgMywxNSwxLDE2LDMsMTIsMSwxNSwxLDE2LDMsMTksMSwxOSwxLDEyLAotICAgIDEsMTMsMSwxMiwxLDExNCwzNCwxLDAsMCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsOTAsNSwwLDAsMTE1LDgyLAorICAgIDAsMCwwLDAsOCw0LDEsNiwxLDYsMywxMCwxLDEwLDEsMTAsCisgICAgMSwxMiwyLDEwLDEsMTYsMywyMiwxLDE0LDIsMjIsMSw4LDEsMTAsCisgICAgMSwxMCwxLDQsMiwyLDEsMTAsMSw2LDEsMTQsMSwxMiwyLDgsCisgICAgMSwxMiwxLDEyLDEsMTgsMywyLDEsMTQsMSwxNiwyLDEwLDEsMTIsCisgICAgMywxMCwxLDEyLDMsMTAsMSwxMCwxLDEyLDMsMTQsMSwxNCwxLDEwLAorICAgIDEsMTAsMSwxMCwxLDExNCwzMSwxLDAsMCw5OSwxLDAsMCwwLDAsCiAgICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMTYsMSwKLSAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwKLSAgICAxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwxNDAsMCwwLDEwMywxLDAsMTMxLAotICAgIDEsMCwxLDExNiw3LDAsMTA2LDgsMCwxMDAsMSwwLDEwNywyLDAsMTE0LAotICAgIDc4LDAsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLAotICAgIDAsMSwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDEyLDAsMTMxLDEsCi0gICAgMCwxLDExNiw1LDAsMTI0LDAsMCw5NSw1LDAsMTE2LDEzLDAsMTI0LDAsCi0gICAgMCw5NSwxMywwLDEwMCwyLDAsODMsNDEsMywxMjIsNDEsNzMsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsCi0gICAgMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLAotICAgIDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjksMSwwLDAsNzgsNDEsMTQsMTE0LDM0LDEsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsMTUxLDAsMCwwLDExNCw3LDEsMCwwLDExNCwyMCwxLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjUsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsCi0gICAgMjUwLDAsMCwwLDExNCwyMTksMCwwLDAsNDEsMiwxMTQsMzMsMSwwLDAsCi0gICAgOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTQ1LDUsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDIsMTAsMSw5LDEsMjgsMSwxNSwxLDE2LAotICAgIDEsMTYsNCw5LDEsMTE0LDM2LDEsMCwwLDQxLDEsMTE0LDAsMCwwLAotICAgIDAsNDEsMiwxMTQsMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSw1OSwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxMiwwLDAsMCw5MCwzNyw5NSw2Nyw2NSw4Myw2OSwKLSAgICA5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSwKLSAgICA4NCw3MCw3OSw4Miw3Nyw4Myw5NSw2Niw4OSw4NCw2OSw4Myw5NSw3NSw2OSw4OSwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCwxOSwwLDAsMCwxMTQsCi0gICAgMjEsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsCi0gICAgMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDgsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwyMTgsOCw5NSwKLSAgICA5NSw5OSwxMTEsMTAwLDEwMSw5NSw5NSwxMTQsMTQ2LDAsMCwwLDExNCwxNywwLDAsCi0gICAgMCwxMTQsMTM3LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAsMCwwLDAsCi0gICAgOTAsMTcsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsCi0gICAgNjYsNjksODIsMTE0LDc1LDAsMCwwLDExNCw3NCwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsMTE0LDc2LDAsMCwwLDkwLDIzLDY4LDY5LDY2LDg1LDcxLDk1LDY2LAorICAgIDUwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEsMCwxMTYsMSwxMzEsMCwKKyAgICAxMjUsMSwxMTYsMiwxMDYsMywxMDYsNCwxMTYsNSwxMDYsNiwxMjQsMSwxNDIsMCwKKyAgICAxMDMsMSwxMzEsMSwxLDAsMTE2LDIsMTA2LDcsMTA2LDgsMTE2LDksMTMxLDEsCisgICAgMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNDEsNzMsMTEwLDExNSwxMTYsOTcsMTA4LAorICAgIDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsCisgICAgMTE2LDExNSw0Niw3OCw0MSwxMCwxMTQsMzEsMSwwLDAsMTE0LDE1OSwwLDAsMCwKKyAgICAxMTQsOCwwLDAsMCwxMTQsMjUzLDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LAorICAgIDUsMSwwLDAsMTE0LDE4LDEsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNCwxNjEsMCwwLDAsMTE0LDI0OCwwLDAsMCw0MSwyLAorICAgIDExNCwzMCwxLDAsMCw5MCwxNywxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LAorICAgIDEwOCwxNTgsNSwwLDAsMTE1LDgsMCwwLDAsMCwyLDgsMSw2LDEsCisgICAgMjAsMSwxMTQsMzMsMSwwLDAsNDEsMSwxMTQsMCwwLDAsMCw0MSwyLAorICAgIDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDEsMTE0LDQ5LDAsMCwKKyAgICAwLDQxLDEsNzgsNDEsMyw3OCw3OCw3OCw0MSwzLDc4LDc4LDc4LDQxLDIsCisgICAgMTE0LDYyLDAsMCwwLDExNCw2MiwwLDAsMCw0MSwxLDc4LDQxLDEsNzgsCisgICAgNDEsNTgsMTE0LDExMSwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsCisgICAgNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsCisgICAgODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsCisgICAgNzUsNjksODksMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLAorICAgIDAsMTE0LDQxLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsCisgICAgMTE0LDQ4LDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsCisgICAgMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0MiwwLDAsMCwxMTQsCisgICAgMTcsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLAorICAgIDAsMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LAorICAgIDc4LDg1LDc3LDY2LDY5LDgyLDExNCw3NywwLDAsMCwxMTQsNzYsMCwwLDAsCisgICAgMTE0LDg4LDAsMCwwLDExNCw3OCwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSwKKyAgICA3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3MywKKyAgICA4OCw2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2NiwKICAgICA4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKLSAgICA5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSwKLSAgICA2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsODEsMCwKLSAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsOTcsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEyNSwwLDAsMCwKLSAgICAxMTQsMTMyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDExNCwxNjQsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwxODUsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMjExLDAsMCwwLDExNCwKLSAgICAyMTksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMjUsCi0gICAgMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwyNTAsMCwKLSAgICAwLDAsMTE0LDcsMSwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNjMsMCwwLAotICAgIDAsMTE0LDM0LDEsMCwwLDExNCwzNiwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDYsMCwKLSAgICAwLDAsNiwxNiw2LDEsNiwxLDMsMSw3LDMsMTIsMTcsMTIsNSwKLSAgICAxMiw1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsCi0gICAgMTUsMTE0LDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwKLSAgICAyMSw0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LAotICAgIDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LAotICAgIDE5LDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsCi0gICAgMTksNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKKyAgICAxMTQsODMsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxMjcsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNDgsMCwKKyAgICAwLDAsMTE0LDE1MywwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LAorICAgIDE2MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDE4MSwKKyAgICAwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwyMDcsMCwwLDAsMTE0LDIxNSwwLAorICAgIDAsMCwxMTQsMjIwLDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDIyMSwwLDAsCisgICAgMCwxMTQsMjI3LDAsMCwwLDExNCwyNDYsMCwwLDAsMTE0LDI0OCwwLDAsMCwKKyAgICAxMTQsNSwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsCisgICAgMzEsMSwwLDAsMTE0LDMzLDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDYwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEwOCwwLDAsMCwKKyAgICA0LDE2LDQsMSw0LDEsMiwxLDYsMyw4LDE3LDgsNSw4LDUsCisgICAgOCw2LDgsMTIsOCwxMCw4LDksOCw1LDgsNywxMCwyMiwxMCwxMjMsCisgICAgMTYsMSwxMiwyLDQsMSw0LDIsNiwyLDYsMiw4LDIsMTYsNDUsCisgICAgOCwzNCw4LDE5LDgsMTIsOCwxMiw4LDI4LDgsMTcsMTAsNTUsMTAsMTIsCisgICAgMTAsMTAsOCwxNCw2LDMsNCwxLDE0LDY3LDE0LDY0LDE0LDI5LDE2LDExMCwKKyAgICAxNCw0MSwxOCw0NSwxOCwxNiw0LDMsMTgsNTMsMTQsNjAsMTQsNDIsMTQsMTI3LAorICAgIDAsNSwxNCwxMjcsMCwyMiwxMCwyMyw4LDExLDgsNjgsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IGQ5YTA4NTUuLjAyM2M5ZTYgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTMsMjQgKzMsMzQgQEAKIChmb3IgY29tcGlsZXJzIHN1cHBvcnRpbmcgY29tcHV0ZWQgZ290b3Mgb3IgImxhYmVscy1hcy12YWx1ZXMiLCBzdWNoIGFzIGdjYykuCiAiIiIKIAotIyBUaGlzIGNvZGUgc2hvdWxkIHN0YXkgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLjMsIGF0IGxlYXN0IHdoaWxlCi0jIHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBoYXZlIFB5dGhvbiAyLjMgYXMgdGhlaXIgc3lzdGVtIFB5dGhvbi4KLQotaW1wb3J0IGltcAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAotZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgotICAgICIiIkZpbmRzIGFuZCByZXR1cm5zIGEgbW9kdWxlIGluIHRoZSBsb2NhbCBkaXN0L2NoZWNrb3V0LgotICAgICIiIgotICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgIkxpYiIpCi0gICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCit0cnk6CisgICAgZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGltcAorCisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQorICAgICAgICByZXR1cm4gaW1wLmxvYWRfbW9kdWxlKG1vZG5hbWUsICppbXAuZmluZF9tb2R1bGUobW9kbmFtZSwgW21vZHBhdGhdKSkKK2Vsc2U6CisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiLCBtb2RuYW1lICsgIi5weSIpCisgICAgICAgIHJldHVybiBTb3VyY2VGaWxlTG9hZGVyKG1vZG5hbWUsIG1vZHBhdGgpLmxvYWRfbW9kdWxlKCkKKwogCiBkZWYgd3JpdGVfY29udGVudHMoZik6CiAgICAgIiIiV3JpdGUgQyBjb2RlIGNvbnRlbnRzIHRvIHRoZSB0YXJnZXQgZmlsZSBvYmplY3QuCiAgICAgIiIiCi0gICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCisgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoJ29wY29kZScpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQpAQCAtMjksMTUgKzM5LDE3IEBACiAgICAgZi53cml0ZSgiXG59O1xuIikKIAogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKLSAgICBhc3NlcnQgbGVuKHN5cy5hcmd2KSA8IDMsICJUb28gbWFueSBhcmd1bWVudHMiCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPj0gMzoKKyAgICAgICAgc3lzLmV4aXQoIlRvbyBtYW55IGFyZ3VtZW50cyIpCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgogICAgICAgICB0YXJnZXQgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIHRhcmdldCA9ICJQeXRob24vb3Bjb2RlX3RhcmdldHMuaCIKLSAgICBmID0gb3Blbih0YXJnZXQsICJ3IikKLSAgICB0cnk6CisgICAgd2l0aCBvcGVuKHRhcmdldCwgInciKSBhcyBmOgogICAgICAgICB3cml0ZV9jb250ZW50cyhmKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQorICAgIHByaW50KCJKdW1wIHRhYmxlIHdyaXR0ZW4gaW50byAlcyIgJSB0YXJnZXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDViOGRlOTkuLjg3YTRiMjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgbSA9IHAtPmVuZCAtIHAtPnB0cjsKICAgICBpZiAocC0+ZnAgIT0gTlVMTCkgewogICAgICAgICBpZiAobiA8PSBtKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocC0+cHRyLCBzLCBuKTsKKyAgICAgICAgICAgIG1lbWNweShwLT5wdHIsIHMsIG4pOwogICAgICAgICAgICAgcC0+cHRyICs9IG47CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChuIDw9IG0gfHwgd19yZXNlcnZlKHAsIG4gLSBtKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjYzLDEwICsyNjMsMTAgQEAKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShwLT5oYXNodGFibGUsIHYpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkocC0+aGFzaHRhYmxlLCB2KTsKICAgICBpZiAoZW50cnkgIT0gTlVMTCkgewogICAgICAgICAvKiB3cml0ZSB0aGUgcmVmZXJlbmNlIGluZGV4IHRvIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEocC0+aGFzaHRhYmxlLCAmdywgc2l6ZW9mKHcpLCBlbnRyeSk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgZW50cnksIHcpOwogICAgICAgICAvKiB3ZSBkb24ndCBzdG9yZSAibG9uZyIgaW5kaWNlcyBpbiB0aGUgZGljdCAqLwogICAgICAgICBhc3NlcnQoMCA8PSB3ICYmIHcgPD0gMHg3ZmZmZmZmZik7CiAgICAgICAgIHdfYnl0ZShUWVBFX1JFRiwgcCk7CkBAIC01NzEsNyArNTcxLDggQEAKIHdfaW5pdF9yZWZzKFdGSUxFICp3ZiwgaW50IHZlcnNpb24pCiB7CiAgICAgaWYgKHZlcnNpb24gPj0gMykgewotICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKGludCksIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCisgICAgICAgIHdmLT5oYXNodGFibGUgPSBfUHlfaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksIHNpemVvZihpbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOwogICAgICAgICBpZiAod2YtPmhhc2h0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTgyLDkgKzU4MywxMyBAQAogfQogCiBzdGF0aWMgaW50Ci13X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICpQeV9VTlVTRUQoZGF0YSkpCit3X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQogewotICAgIFB5X1hERUNSRUYoZW50cnktPmtleSk7CisgICAgUHlPYmplY3QgKmVudHJ5X2tleTsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBlbnRyeV9rZXkpOworICAgIFB5X1hERUNSRUYoZW50cnlfa2V5KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjQzLDcgKzY0OCw3IEBACiAgICAgUHlPYmplY3QgKnJlZnM7ICAvKiBhIGxpc3QgKi8KIH0gUkZJTEU7CiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIHJfc3RyaW5nKFB5X3NzaXplX3QgbiwgUkZJTEUgKnApCiB7CiAgICAgUHlfc3NpemVfdCByZWFkID0gLTE7CkBAIC03MjksNyArNzM0LDcgQEAKICAgICAgICAgYyA9IGdldGMocC0+ZnApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqcHRyID0gcl9zdHJpbmcoMSwgcCk7CisgICAgICAgIGNvbnN0IGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOwogICAgICAgICBpZiAocHRyICE9IE5VTEwpCiAgICAgICAgICAgICBjID0gKih1bnNpZ25lZCBjaGFyICopIHB0cjsKICAgICB9CkBAIC03NDAsOSArNzQ1LDkgQEAKIHJfc2hvcnQoUkZJTEUgKnApCiB7CiAgICAgc2hvcnQgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSBidWZmZXJbMV0gPDwgODsKQEAgLTc1Niw5ICs3NjEsOSBAQAogcl9sb25nKFJGSUxFICpwKQogewogICAgIGxvbmcgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSAobG9uZylidWZmZXJbMV0gPDwgODsKQEAgLTk3OCw3ICs5ODMsOCBAQAogCiAgICAgY2FzZSBUWVBFX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIGRvdWJsZSBkeDsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwMDEsOSArMTAwNyw5IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWY7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWY7CiAgICAgICAgICAgICBkb3VibGUgeDsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB4ID0gX1B5RmxvYXRfVW5wYWNrOChidWYsIDEpOwpAQCAtMTAxNiw3ICsxMDIyLDggQEAKIAogICAgIGNhc2UgVFlQRV9DT01QTEVYOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwNTMsMTUgKzEwNjAsMTUgQEAKIAogICAgIGNhc2UgVFlQRV9CSU5BUllfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgUHlfY29tcGxleCBjOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMucmVhbCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKICAgICAgICAgICAgIGlmIChjLnJlYWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMuaW1hZyA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwNzQsNyArMTA4MSw3IEBACiAKICAgICBjYXNlIFRZUEVfU1RSSU5HOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTE5LDcgKzExMjYsNyBAQAogICAgICAgICB9CiAgICAgX3JlYWRfYXNjaWk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIHB0ciA9IHJfc3RyaW5nKG4sIHApOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzNyw3ICsxMTQ0LDcgQEAKICAgICAgICAgaXNfaW50ZXJuZWQgPSAxOwogICAgIGNhc2UgVFlQRV9VTklDT0RFOgogICAgICAgICB7Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmZmVyOwogCiAgICAgICAgIG4gPSByX2xvbmcocCk7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTI2NCw0MSArMTI3MSw1MiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgbWFyc2hhbCBkYXRhIChzZXQgc2l6ZSBvdXQgb2YgcmFuZ2UpIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOwotICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgewotICAgICAgICAgICAgUl9SRUYodik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0Ci0gICAgICAgICAgICAgKiBiZSBpbml0IHdpdGggYSByZWZjb3VudCBvZiAxCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7Ci0gICAgICAgICAgICBpZiAoaWR4IDwgMCkKLSAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIHYyID0gcl9vYmplY3QocCk7Ci0gICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICBpZiAobiA9PSAwICYmIHR5cGUgPT0gVFlQRV9GUk9aRU5TRVQpIHsKKyAgICAgICAgICAgIC8qIGNhbGwgZnJvemVuc2V0KCkgdG8gZ2V0IHRoZSBlbXB0eSBmcm96ZW5zZXQgc2luZ2xldG9uICovCisgICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopJlB5RnJvemVuU2V0X1R5cGUsIE5VTEwpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7Ci0gICAgICAgICAgICAgICAgdiA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgUl9SRUYodik7CisgICAgICAgICAgICByZXR2YWwgPSB2OwogICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQotICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOwotICAgICAgICByZXR2YWwgPSB2OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHYgPSAodHlwZSA9PSBUWVBFX1NFVCkgPyBQeVNldF9OZXcoTlVMTCkgOiBQeUZyb3plblNldF9OZXcoTlVMTCk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgeworICAgICAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0CisgICAgICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCA8IDApCisgICAgICAgICAgICAgICAgICAgIFB5X0NMRUFSKHYpOyAvKiBzaWduYWwgZXJyb3IgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOworICAgICAgICAgICAgICAgIGlmICggdjIgPT0gTlVMTCApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBvYmplY3QgaW4gbWFyc2hhbCBkYXRhIGZvciBzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgIT0gVFlQRV9TRVQpCisgICAgICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOworICAgICAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFOgpkaWZmIC0tZ2l0IGEvUHl0aG9uL21vZHN1cHBvcnQuYyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKaW5kZXggMGQwOTM3MS4uYWFiZWU4ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL21vZHN1cHBvcnQuYworKysgYi9QeXRob24vbW9kc3VwcG9ydC5jCkBAIC0yNjAsMTMgKzI2MCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG4pOwogICAgICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICBjYXNlICdMJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCBQWV9MT05HX0xPTkcpKTsKKyAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCBsb25nIGxvbmcpKTsKIAogICAgICAgICBjYXNlICdLJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKKwogICAgICAgICBjYXNlICd1JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7CkBAIC0zMTgsNyArMzE3LDcgQEAKICAgICAgICAgY2FzZSAnVSc6ICAgLyogWFhYIGRlcHJlY2F0ZWQgYWxpYXMgKi8KICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTM1MSw3ICszNTAsNyBAQAogICAgICAgICBjYXNlICd5JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTQ2OCw4ICs0NjcsNyBAQAogICAgIGNvbnN0IGNoYXIgKmYgPSBmb3JtYXQ7CiAgICAgaW50IG4gPSBjb3VudGZvcm1hdChmLCAnXDAnKTsKICAgICB2YV9saXN0IGx2YTsKLQotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobiA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDc3LDkgKzQ3NSwxNCBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAobiA9PSAxKQotICAgICAgICByZXR1cm4gZG9fbWt2YWx1ZSgmZiwgJmx2YSwgZmxhZ3MpOwotICAgIHJldHVybiBkb19ta3R1cGxlKCZmLCAmbHZhLCAnXDAnLCBuLCBmbGFncyk7CisgICAgdmFfY29weShsdmEsIHZhKTsKKyAgICBpZiAobiA9PSAxKSB7CisgICAgICAgIHJldHZhbCA9IGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR2YWwgPSBkb19ta3R1cGxlKCZmLCAmbHZhLCAnXDAnLCBuLCBmbGFncyk7CisgICAgfQorICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL215c3RydG91bC5jIGIvUHl0aG9uL215c3RydG91bC5jCmluZGV4IDk4NDI5ZDQuLmE4NTc5MGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9teXN0cnRvdWwuYworKysgYi9QeXRob24vbXlzdHJ0b3VsLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAqIHNtYWxsbWF4W2Jhc2VdIGlzIHRoZSBsYXJnZXN0IHVuc2lnbmVkIGxvbmcgaSBzdWNoIHRoYXQKICAqIGkgKiBiYXNlIGRvZXNuJ3Qgb3ZlcmZsb3cgdW5zaWduZWQgbG9uZy4KICAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgc21hbGxtYXhbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CiAgICAgMCwgLyogYmFzZXMgMCBhbmQgMSBhcmUgaW52YWxpZCAqLwogICAgIDAsCiAgICAgVUxPTkdfTUFYIC8gMiwKQEAgLTYyLDE0ICs2MiwxNCBAQAogICogTm90ZSB0aGF0IHRoaXMgaXMgcGVzc2ltaXN0aWMgaWYgc2l6ZW9mKGxvbmcpID4gNC4KICAqLwogI2lmIFNJWkVPRl9MT05HID09IDQKLXN0YXRpYyBpbnQgZGlnaXRsaW1pdFtdID0geworc3RhdGljIGNvbnN0IGludCBkaWdpdGxpbWl0W10gPSB7CiAgICAgMCwgIDAsIDMyLCAyMCwgMTYsIDEzLCAxMiwgMTEsIDEwLCAxMCwgIC8qICAwIC0gIDkgKi8KICAgICA5LCAgOSwgIDgsICA4LCAgOCwgIDgsICA4LCAgNywgIDcsICA3LCAgLyogMTAgLSAxOSAqLwogICAgIDcsICA3LCAgNywgIDcsICA2LCAgNiwgIDYsICA2LCAgNiwgIDYsICAvKiAyMCAtIDI5ICovCiAgICAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgNn07ICAgICAgICAgICAgIC8qIDMwIC0gMzYgKi8KICNlbGlmIFNJWkVPRl9MT05HID09IDgKIC8qIFtpbnQobWF0aC5mbG9vcihtYXRoLmxvZygyKio2NCwgaSkpKSBmb3IgaSBpbiByYW5nZSgyLCAzNyldICovCi1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgICAgICAgMCwgICAwLCA2NCwgNDAsIDMyLCAyNywgMjQsIDIyLCAyMSwgMjAsICAvKiAgMCAtICA5ICovCiAgICAgMTksICAxOCwgMTcsIDE3LCAxNiwgMTYsIDE2LCAxNSwgMTUsIDE1LCAgLyogMTAgLSAxOSAqLwogICAgIDE0LCAgMTQsIDE0LCAxNCwgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgIC8qIDIwIC0gMjkgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggMTkyNTllMS4uNzJkMjQwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTg0LDcgKzg0LDcgQEAKICAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVBfRklOSVNILAogICAgICYmVEFSR0VUX1JFVFVSTl9WQUxVRSwKICAgICAmJlRBUkdFVF9JTVBPUlRfU1RBUiwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TRVRVUF9BTk5PVEFUSU9OUywKICAgICAmJlRBUkdFVF9ZSUVMRF9WQUxVRSwKICAgICAmJlRBUkdFVF9QT1BfQkxPQ0ssCiAgICAgJiZUQVJHRVRfRU5EX0ZJTkFMTFksCkBAIC0xMjYsMjIgKzEyNiwyMiBAQAogICAgICYmVEFSR0VUX0xPQURfRkFTVCwKICAgICAmJlRBUkdFVF9TVE9SRV9GQVNULAogICAgICYmVEFSR0VUX0RFTEVURV9GQVNULAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1NUT1JFX0FOTk9UQVRJT04sCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfUkFJU0VfVkFSQVJHUywKICAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX01BS0VfRlVOQ1RJT04sCiAgICAgJiZUQVJHRVRfQlVJTERfU0xJQ0UsCi0gICAgJiZUQVJHRVRfTUFLRV9DTE9TVVJFLAorICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0xPQURfQ0xPU1VSRSwKICAgICAmJlRBUkdFVF9MT0FEX0RFUkVGLAogICAgICYmVEFSR0VUX1NUT1JFX0RFUkVGLAogICAgICYmVEFSR0VUX0RFTEVURV9ERVJFRiwKICAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUiwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0tXLAotICAgICYmVEFSR0VUX0NBTExfRlVOQ1RJT05fVkFSX0tXLAorICAgICYmVEFSR0VUX0NBTExfRlVOQ1RJT05fRVgsCiAgICAgJiZUQVJHRVRfU0VUVVBfV0lUSCwKICAgICAmJlRBUkdFVF9FWFRFTkRFRF9BUkcsCiAgICAgJiZUQVJHRVRfTElTVF9BUFBFTkQsCkBAIC0xNTQsMTAgKzE1NCwxMCBAQAogICAgICYmVEFSR0VUX0JVSUxEX1RVUExFX1VOUEFDSywKICAgICAmJlRBUkdFVF9CVUlMRF9TRVRfVU5QQUNLLAogICAgICYmVEFSR0VUX1NFVFVQX0FTWU5DX1dJVEgsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfRk9STUFUX1ZBTFVFLAorICAgICYmVEFSR0VUX0JVSUxEX0NPTlNUX0tFWV9NQVAsCisgICAgJiZUQVJHRVRfQlVJTERfU1RSSU5HLAorICAgICYmVEFSR0VUX0JVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDRlNjU3ZmEuLmRkOGYzZTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC04LDggKzgsOCBAQAogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgIndvcmRjb2RlX2hlbHBlcnMuaCIKIAotI2RlZmluZSBHRVRBUkcoYXJyLCBpKSAoKGludCkoKGFycltpKzJdPDw4KSArIGFycltpKzFdKSkKICNkZWZpbmUgVU5DT05ESVRJT05BTF9KVU1QKG9wKSAgKG9wPT1KVU1QX0FCU09MVVRFIHx8IG9wPT1KVU1QX0ZPUldBUkQpCiAjZGVmaW5lIENPTkRJVElPTkFMX0pVTVAob3ApIChvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKQEAgLTE3LDIyICsxNywxNiBAQAogICAgIHx8IG9wPT1QT1BfSlVNUF9JRl9GQUxTRSB8fCBvcD09UE9QX0pVTVBfSUZfVFJVRSBcCiAgICAgfHwgb3A9PUpVTVBfSUZfRkFMU0VfT1JfUE9QIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQogI2RlZmluZSBKVU1QU19PTl9UUlVFKG9wKSAob3A9PVBPUF9KVU1QX0lGX1RSVUUgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCi0jZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoR0VUQVJHKGFycixpKSArIChBQlNPTFVURV9KVU1QKGFycltpXSkgPyAwIDogaSszKSkKLSNkZWZpbmUgU0VUQVJHKGFyciwgaSwgdmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhc3NlcnQoMCA8PSB2YWwgJiYgdmFsIDw9IDB4ZmZmZik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhcnJbaSsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpPj44KTsgICAgIFwKLSAgICBhcnJbaSsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpICYgMjU1KTsgIFwKLX0gd2hpbGUoMCkKLSNkZWZpbmUgQ09ERVNJWkUob3ApICAoSEFTX0FSRyhvcCkgPyAzIDogMSkKLSNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGJ5dGVzKSBcCi0gICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tzdGFydCtieXRlcy0xXSkKKyNkZWZpbmUgR0VUSlVNUFRHVChhcnIsIGkpIChnZXRfYXJnKGFyciwgaSkgLyBzaXplb2YoX1B5X0NPREVVTklUKSArIFwKKyAgICAgICAgKEFCU09MVVRFX0pVTVAoX1B5X09QQ09ERShhcnJbaV0pKSA/IDAgOiBpKzEpKQorI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgZW5kKSBcCisgICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tlbmRdKQogCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCiAgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAogICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgIGlmICghY29uc3Rfc3RhY2spIHsgXAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgfSBcCkBAIC00MSwyNyArMzUsMjMgQEAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfREVMRVRFKCkgZG8geyBcCiAgICAgaWYgKGNvbnN0X3N0YWNrKSBcCiAgICAgICAgIFB5TWVtX0ZyZWUoY29uc3Rfc3RhY2spOyBcCi0gICAgaWYgKGxvYWRfY29uc3Rfc3RhY2spIFwKLSAgICAgICAgUHlNZW1fRnJlZShsb2FkX2NvbnN0X3N0YWNrKTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19MRU4oKSAoY29uc3Rfc3RhY2tfdG9wICsgMSkKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKCh1bnNpZ25lZCkoY29uc3Rfc3RhY2tfdG9wICsgMSkpCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKICAgICBQeU9iamVjdCAqX3g7IFwKLSAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAotICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKLSAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IChQeV9zc2l6ZV90KWdldF9hcmcoY29kZXN0ciwgaSkpOyBcCisgICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAogICAgIGlmICgrK2NvbnN0X3N0YWNrX3RvcCA+PSBjb25zdF9zdGFja19zaXplKSB7IFwKICAgICAgICAgY29uc3Rfc3RhY2tfc2l6ZSAqPSAyOyBcCiAgICAgICAgIFB5TWVtX1Jlc2l6ZShjb25zdF9zdGFjaywgUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICAgICAgUHlNZW1fUmVzaXplKGxvYWRfY29uc3Rfc3RhY2ssIFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKICAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgICAgIH0gXAogICAgIH0gXAotICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKICAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKICAgICBpbl9jb25zdHMgPSAxOyBcCiAgICAgfSB3aGlsZSgwKQpAQCAtNzAsMjIgKzYwLDExNCBAQAogICAgIGNvbnN0X3N0YWNrX3RvcCA9IC0xOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX1RPUCgpIFwKLSAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdCi0KICNkZWZpbmUgQ09OU1RfU1RBQ0tfTEFTVE4oaSkgXAotICAgICZjb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0KKyAgICAmY29uc3Rfc3RhY2tbQ09OU1RfU1RBQ0tfTEVOKCkgLSBpXQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKLSAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGFzc2VydChDT05TVF9TVEFDS19MRU4oKSA+PSBpKTsgXAogICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKLSAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorLyogU2NhbnMgYmFjayBOIGNvbnNlY3V0aXZlIExPQURfQ09OU1QgaW5zdHJ1Y3Rpb25zLCBza2lwcGluZyBOT1BzLAorICAgcmV0dXJucyBpbmRleCBvZiB0aGUgTnRoIGxhc3QncyBMT0FEX0NPTlNUJ3MgRVhURU5ERURfQVJHIHByZWZpeC4KKyAgIENhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIHRvIGNoZWNrIENPTlNUX1NUQUNLX0xFTiBiZWZvcmVoYW5kLgorKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitsYXN0bl9jb25zdF9zdGFydChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBuKQoreworICAgIGFzc2VydChuID4gMCk7CisgICAgZm9yICg7OykgeworICAgICAgICBpLS07CisgICAgICAgIGFzc2VydChpID49IDApOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKSB7CisgICAgICAgICAgICBpZiAoIS0tbikgeworICAgICAgICAgICAgICAgIHdoaWxlIChpID4gMCAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1AgfHwKKyAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRyk7CisgICAgICAgIH0KKyAgICB9Cit9CiAKKy8qIFNjYW5zIHRocm91Z2ggRVhURU5ERUQgQVJHcywgc2Vla2luZyB0aGUgaW5kZXggb2YgdGhlIGVmZmVjdGl2ZSBvcGNvZGUgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitmaW5kX29wKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICBpKys7CisgICAgfQorICAgIHJldHVybiBpOworfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24gQlVJTERfVFVQTEUgbgorLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgc2NhbiBiYWNrIHRvIGNvbnN0cnVjdCB0aGUgb3Bhcmcgd2l0aCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2dldF9hcmcoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGkpCit7CisgICAgX1B5X0NPREVVTklUIHdvcmQ7CisgICAgdW5zaWduZWQgaW50IG9wYXJnID0gX1B5X09QQVJHKGNvZGVzdHJbaV0pOworICAgIGlmIChpID49IDEgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDg7CisgICAgICAgIGlmIChpID49IDIgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTJdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCAxNjsKKyAgICAgICAgICAgIGlmIChpID49IDMgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTNdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9wYXJnOworfQorCisvKiBGaWxsIHRoZSByZWdpb24gd2l0aCBOT1BzLiAqLworc3RhdGljIHZvaWQKK2ZpbGxfbm9wcyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIG1lbXNldChjb2Rlc3RyICsgc3RhcnQsIE5PUCwgKGVuZCAtIHN0YXJ0KSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKK30KKworLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgYXR0ZW1wdCB0byByZXBsYWNlIHRoZSBhcmd1bWVudCwgdGFraW5nIGludG8gYWNjb3VudCBFWFRFTkRFRF9BUkcuCisgICBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIG9yIHRoZSBuZXcgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK3NldF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGludCBvcGFyZykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyYXJnID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICBpbnQgY3VyaWxlbiwgbmV3aWxlbjsKKyAgICBpZiAoY3VyYXJnID09IG9wYXJnKQorICAgICAgICByZXR1cm4gaTsKKyAgICBjdXJpbGVuID0gaW5zdHJzaXplKGN1cmFyZyk7CisgICAgbmV3aWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGN1cmlsZW4gPCBuZXdpbGVuKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGkgKyAxIC0gY3VyaWxlbiwgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSwgb3BhcmcsIG5ld2lsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSAtIGN1cmlsZW4gKyBuZXdpbGVuLCBpICsgMSk7CisgICAgcmV0dXJuIGktY3VyaWxlbituZXdpbGVuOworfQorCisvKiBBdHRlbXB0IHRvIHdyaXRlIG9wL2FyZyBhdCBlbmQgb2Ygc3BlY2lmaWVkIHJlZ2lvbiBvZiBtZW1vcnkuCisgICBQcmVjZWRpbmcgbWVtb3J5IGluIHRoZSByZWdpb24gaXMgb3ZlcndyaXR0ZW4gd2l0aCBOT1BzLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvcCBpbmRleCBvbiBzdWNjZXNzICovCitzdGF0aWMgUHlfc3NpemVfdAorY29weV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGNoYXIgb3AsCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIFB5X3NzaXplX3QgbWF4aSkKK3sKKyAgICBpbnQgaWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGkgKyBpbGVuID4gbWF4aSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgbWF4aSAtIGlsZW4sIG9wLCBvcGFyZywgaWxlbik7CisgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGksIG1heGkgLSBpbGVuKTsKKyAgICByZXR1cm4gbWF4aSAtIDE7Cit9CisKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiwgQlVJTERfVFVQTEUgbgogICAgd2l0aCAgICBMT0FEX0NPTlNUIChjMSwgYzIsIC4uLiBjbikuCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgKGMxLCBjMiwgLi4uIGNuKSBjYW4gYmUgYXBwZW5kZWQuCkBAIC05NCw5ICsxNzYsMTAgQEAKICAgIEFsc28gd29ya3MgZm9yIEJVSUxEX0xJU1QgYW5kIEJVSUxUX1NFVCB3aGVuIGZvbGxvd2VkIGJ5IGFuICJpbiIgb3IgIm5vdCBpbiIKICAgIHRlc3Q7IGZvciBCVUlMRF9TRVQgaXQgYXNzZW1ibGVzIGEgZnJvemVuc2V0IHJhdGhlciB0aGFuIGEgdHVwbGUuCiAqLwotc3RhdGljIGludAotdHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF90dXBsZV9vbl9jb25zdGFudHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGNfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzLCBpbnQgbikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICpjb25zdGFudDsKICAgICBQeV9zc2l6ZV90IGksIGxlbl9jb25zdHM7CkBAIC0xMDYsOSArMTg5LDkgQEAKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKKyAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CiAgICAgICAgIGNvbnN0YW50ID0gb2Jqc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKGNvbnN0YW50KTsKQEAgLTExNiwzMCArMTk5LDI2IEBACiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKLSAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbMF0gPT0gQlVJTERfU0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0dXBsZSA9IG5ld2NvbnN0OwotICAgICAgICBuZXdjb25zdCA9IFB5RnJvemVuU2V0X05ldyh0dXBsZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7Ci0gICAgICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgUHlGcm96ZW5TZXQsIGFuZCB1c2UgdGhhdCBhcyB0aGUgY29uc3RhbnQgaW5zdGVhZDogKi8KKyAgICBpZiAob3Bjb2RlID09IEJVSUxEX1NFVCkgeworICAgICAgICBQeV9TRVRSRUYobmV3Y29uc3QsIFB5RnJvemVuU2V0X05ldyhuZXdjb25zdCkpOworICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBvbnRvIGNvbnN0cyAqLworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QcyBvdmVyIG9sZCBMT0FEX0NPTlNUUyBhbmQKLSAgICAgICBhZGQgYSBuZXcgTE9BRF9DT05TVCBuZXdjb25zdCBvbiB0b3Agb2YgdGhlIEJVSUxEX1RVUExFIG4gKi8KLSAgICBjb2Rlc3RyWzBdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMCwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgQklOT1AKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiwgQklOT1AKICAgIHdpdGggICAgTE9BRF9DT05TVCBiaW5vcChjMSxjMikKICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKICAgIG5ldyBjb25zdGFudCBjYW4gYmUgYXBwZW5kZWQuCkBAIC0xNDksMjAgKzIyOCwyMSBAQAogICAgaXMgYmVsb3cgYSB0aHJlc2hvbGQgdmFsdWUuICBUaGF0IGtlZXBzIHB5YyBmaWxlcyBmcm9tCiAgICBiZWNvbWluZyBsYXJnZSBpbiB0aGUgcHJlc2VuY2Ugb2YgY29kZSBsaWtlOiAgKE5vbmUsKSoxMDAwLgogKi8KLXN0YXRpYyBpbnQKLWZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdCwgKnYsICp3OwogICAgIFB5X3NzaXplX3QgbGVuX2NvbnN0cywgc2l6ZTsKLSAgICBpbnQgb3Bjb2RlOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7CisgICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwogICAgIHYgPSBvYmpzWzBdOwogICAgIHcgPSBvYmpzWzFdOwotICAgIG9wY29kZSA9IGNvZGVzdHJbMF07CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1Bvd2VyKHYsIHcsIFB5X05vbmUpOwpAQCAtMjA4LDUwICsyODgsNDggQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgYmluYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZSA9IFB5T2JqZWN0X1NpemUobmV3Y29uc3QpOwogICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0gZWxzZSBpZiAoc2l6ZSA+IDIwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBpbnRvIGNvbnN0cyB0YWJsZSAqLwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QIE5PUCBOT1AgTk9QIExPQURfQ09OU1QgbmV3Y29uc3QgKi8KLSAgICBjb2Rlc3RyWy0yXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIC0yLCBsZW5fY29uc3RzKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gY29weV9vcF9hcmcoY29kZXN0ciwgY19zdGFydCwgTE9BRF9DT05TVCwgbGVuX2NvbnN0cywgb3Bjb2RlX2VuZCk7CiB9CiAKLXN0YXRpYyBpbnQKLWZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOwpAQCAtMjY3LDM1ICszNDUsMzEgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgdW5hcnkgb3BlcmF0aW9uICVkIG9uIGEgY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgewotICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCisgICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clswXSA9IE5PUDsKLSAgICBjb2Rlc3RyWzFdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMSwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50ICoKLW1hcmtibG9ja3ModW5zaWduZWQgY2hhciAqY29kZSwgUHlfc3NpemVfdCBsZW4pCittYXJrYmxvY2tzKF9QeV9DT0RFVU5JVCAqY29kZSwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBQeU1lbV9OZXcodW5zaWduZWQgaW50LCBsZW4pOwotICAgIGludCBpLGosIG9wY29kZSwgYmxvY2tjbnQgPSAwOworICAgIGludCBpLCBqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKIAogICAgIGlmIChibG9ja3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMzA0LDggKzM3OCw4IEBACiAgICAgbWVtc2V0KGJsb2NrcywgMCwgbGVuKnNpemVvZihpbnQpKTsKIAogICAgIC8qIE1hcmsgbGFiZWxzIGluIHRoZSBmaXJzdCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrPUNPREVTSVpFKG9wY29kZSkpIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZVtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2RlW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CiAgICAgICAgICAgICBjYXNlIEpVTVBfRk9SV0FSRDoKQEAgLTMyMSwxMiArMzk1LDEzIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEpVTVBUR1QoY29kZSwgaSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGogPCBsZW4pOwogICAgICAgICAgICAgICAgIGJsb2Nrc1tqXSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogQnVpbGQgYmxvY2sgbnVtYmVycyBpbiB0aGUgc2Vjb25kIHBhc3MgKi8KLSAgICBmb3IgKGk9MCA7IGk8bGVuIDsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGJsb2NrY250ICs9IGJsb2Nrc1tpXTsgICAgICAgICAgLyogaW5jcmVtZW50IGJsb2NrY250IG92ZXIgbGFiZWxzICovCiAgICAgICAgIGJsb2Nrc1tpXSA9IGJsb2NrY250OwogICAgIH0KQEAgLTMzNywzMyArNDEyLDI3IEBACiAgICBUaGUgY29uc3RzIG9iamVjdCBzaG91bGQgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHRvIGFsbG93IG5ldyBjb25zdGFudHMKICAgIHRvIGJlIGFwcGVuZGVkLgogCi0gICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyBvdXQgKGRvZXMgbm90aGluZykgZm9yIGNvZGUgdGhhdAotICAgaGFzIGEgbGVuZ3RoIG92ZXIgMzIsNzAwLCBhbmQgZG9lcyBub3QgY2FsY3VsYXRlIGV4dGVuZGVkIGFyZ3VtZW50cy4KLSAgIFRoYXQgYWxsb3dzIHVzIHRvIGF2b2lkIG92ZXJmbG93IGFuZCBzaWduIGlzc3Vlcy4gTGlrZXdpc2UsIGl0IGJhaWxzIHdoZW4KLSAgIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXggZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LiBFWFRFTkRFRF9BUkcgY2FuCi0gICBhcHBlYXIgYmVmb3JlIE1BS0VfRlVOQ1RJT047IGluIHRoaXMgY2FzZSBib3RoIG9wY29kZXMgYXJlIHNraXBwZWQuCi0gICBFWFRFTkRFRF9BUkcgcHJlY2VkaW5nIGFueSBvdGhlciBvcGNvZGUgY2F1c2VzIHRoZSBvcHRpbWl6ZXIgdG8gYmFpbC4KKyAgIFRvIGtlZXAgdGhlIG9wdGltaXplciBzaW1wbGUsIGl0IGJhaWxzIHdoZW4gdGhlIGxpbmVubyB0YWJsZSBoYXMgY29tcGxleAorICAgZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LgogCiAgICBPcHRpbWl6YXRpb25zIGFyZSByZXN0cmljdGVkIHRvIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbnMgb2NjdXJyaW5nIHdpdGhpbiBhCiAgICBzaW5nbGUgYmFzaWMgYmxvY2suICBBbGwgdHJhbnNmb3JtYXRpb25zIGtlZXAgdGhlIGNvZGUgc2l6ZSB0aGUgc2FtZSBvcgogICAgc21hbGxlci4gIEZvciB0aG9zZSB0aGF0IHJlZHVjZSBzaXplLCB0aGUgZ2FwcyBhcmUgaW5pdGlhbGx5IGZpbGxlZCB3aXRoCiAgICBOT1BzLiAgTGF0ZXIgdGhvc2UgTk9QcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIGp1bXAgYWRkcmVzc2VzIHJldGFyZ2V0ZWQgaW4KLSAgIGEgc2luZ2xlIHBhc3MuICBMaW5lIG51bWJlcmluZyBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4gKi8KKyAgIGEgc2luZ2xlIHBhc3MuICovCiAKIFB5T2JqZWN0ICoKIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywgUHlPYmplY3QgKm5hbWVzLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsaW5lbm9fb2JqKQorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsbm90YWJfb2JqKQogewotICAgIFB5X3NzaXplX3QgaSwgaiwgY29kZWxlbjsKLSAgICBpbnQgbm9wcywgaCwgYWRqOwotICAgIGludCB0Z3QsIHRndHRndCwgb3Bjb2RlOwotICAgIHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIgPSBOVUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmxpbmVubzsKLSAgICBpbnQgKmFkZHJtYXAgPSBOVUxMOwotICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lOworICAgIFB5X3NzaXplX3QgaCwgaSwgbmV4dGksIG9wX3N0YXJ0LCBjb2RlbGVuLCB0Z3Q7CisgICAgdW5zaWduZWQgaW50IGosIG5vcHM7CisgICAgdW5zaWduZWQgY2hhciBvcGNvZGUsIG5leHRvcDsKKyAgICBfUHlfQ09ERVVOSVQgKmNvZGVzdHIgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmxub3RhYjsKKyAgICB1bnNpZ25lZCBpbnQgY3VtX29yaWdfb2Zmc2V0LCBsYXN0X29mZnNldDsKICAgICBQeV9zc2l6ZV90IHRhYnNpejsKICAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOwogICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfc2l6ZSA9IDA7CiAgICAgaW50IGluX2NvbnN0cyA9IDA7ICAvKiB3aGV0aGVyIHdlIGFyZSBpbiBhIExPQURfQ09OU1Qgc2VxdWVuY2UgKi8KQEAgLTM3Myw0MiArNDQyLDMwIEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogCi0gICAgLyogQnlwYXNzIG9wdGltaXphdGlvbiB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaXMgdG9vIGNvbXBsZXggKi8KLSAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhsaW5lbm9fb2JqKSk7Ci0gICAgbGluZW5vID0gKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGxpbmVub19vYmopOwotICAgIHRhYnNpeiA9IFB5Qnl0ZXNfR0VUX1NJWkUobGluZW5vX29iaik7Ci0gICAgaWYgKG1lbWNocihsaW5lbm8sIDI1NSwgdGFic2l6KSAhPSBOVUxMKQorICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbG5vdGFiIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobG5vdGFiX29iaikpOworICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsbm90YWJfb2JqKTsKKyAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxub3RhYl9vYmopOworICAgIGFzc2VydCh0YWJzaXogPT0gMCB8fCBQeV9SRUZDTlQobG5vdGFiX29iaikgPT0gMSk7CisgICAgaWYgKG1lbWNocihsbm90YWIsIDI1NSwgdGFic2l6KSAhPSBOVUxMKSB7CisgICAgICAgIC8qIDI1NSB2YWx1ZSBhcmUgdXNlZCBmb3IgbXVsdGlieXRlIGJ5dGVjb2RlIGluc3RydWN0aW9ucyAqLwogICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgfQorICAgIC8qIE5vdGU6IC0xMjggYW5kIDEyNyBzcGVjaWFsIHZhbHVlcyBmb3IgbGluZSBudW1iZXIgZGVsdGEgYXJlIG9rLAorICAgICAgIHRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgZG9lc24ndCBtb2RpZnkgbGluZSBudW1iZXJzLiAqLwogCi0gICAgLyogQXZvaWQgc2l0dWF0aW9ucyB3aGVyZSBqdW1wIHJldGFyZ2V0aW5nIGNvdWxkIG92ZXJmbG93ICovCiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soY29kZSkpOwogICAgIGNvZGVsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGNvZGUpOwotICAgIGlmIChjb2RlbGVuID4gMzI3MDApCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKKyAgICBhc3NlcnQoY29kZWxlbiAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOwogCiAgICAgLyogTWFrZSBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgY29kZSBzdHJpbmcgKi8KLSAgICBjb2Rlc3RyID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CisgICAgY29kZXN0ciA9IChfUHlfQ09ERVVOSVQgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CiAgICAgaWYgKGNvZGVzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICB9Ci0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopbWVtY3B5KGNvZGVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvZGUpLCBjb2RlbGVuKTsKLQotICAgIC8qIFZlcmlmeSB0aGF0IFJFVFVSTl9WQUxVRSB0ZXJtaW5hdGVzIHRoZSBjb2Rlc3RyaW5nLiAgICAgIFRoaXMgYWxsb3dzCi0gICAgICAgdGhlIHZhcmlvdXMgdHJhbnNmb3JtYXRpb24gcGF0dGVybnMgdG8gbG9vayBhaGVhZCBzZXZlcmFsCi0gICAgICAgaW5zdHJ1Y3Rpb25zIHdpdGhvdXQgYWRkaXRpb25hbCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdAotICAgICAgIGxvb2tpbmcgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGNvZGUgc3RyaW5nLgotICAgICovCi0gICAgaWYgKGNvZGVzdHJbY29kZWxlbi0xXSAhPSBSRVRVUk5fVkFMVUUpCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKLQotICAgIC8qIE1hcHBpbmcgdG8gbmV3IGp1bXAgdGFyZ2V0cyBhZnRlciBOT1BzIGFyZSByZW1vdmVkICovCi0gICAgYWRkcm1hcCA9IFB5TWVtX05ldyhpbnQsIGNvZGVsZW4pOwotICAgIGlmIChhZGRybWFwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBleGl0RXJyb3I7Ci0gICAgfQorICAgIG1lbWNweShjb2Rlc3RyLCBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7CisgICAgY29kZWxlbiAvPSBzaXplb2YoX1B5X0NPREVVTklUKTsKIAogICAgIGJsb2NrcyA9IG1hcmtibG9ja3MoY29kZXN0ciwgY29kZWxlbik7CiAgICAgaWYgKGJsb2NrcyA9PSBOVUxMKQpAQCAtNDE3LDkgKzQ3NCwxNyBAQAogCiAgICAgQ09OU1RfU1RBQ0tfQ1JFQVRFKCk7CiAKLSAgICBmb3IgKGk9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKLSAgICAgIHJlb3B0aW1pemVfY3VycmVudDoKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKGk9ZmluZF9vcChjb2Rlc3RyLCAwKSA7IGk8Y29kZWxlbiA7IGk9bmV4dGkpIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKKyAgICAgICAgb3Bfc3RhcnQgPSBpOworICAgICAgICB3aGlsZSAob3Bfc3RhcnQgPj0gMSAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbb3Bfc3RhcnQtMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgb3Bfc3RhcnQtLTsKKyAgICAgICAgfQorCisgICAgICAgIG5leHRpID0gaSArIDE7CisgICAgICAgIHdoaWxlIChuZXh0aSA8IGNvZGVsZW4gJiYgX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgPT0gRVhURU5ERURfQVJHKQorICAgICAgICAgICAgbmV4dGkrKzsKKyAgICAgICAgbmV4dG9wID0gbmV4dGkgPCBjb2RlbGVuID8gX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgOiAwOwogCiAgICAgICAgIGlmICghaW5fY29uc3RzKSB7CiAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwpAQCAtNDMwLDE0ICs0OTUsMTIgQEAKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCiAgICAgICAgICAgICAgICB3aXRoICAgIFBPUF9KVU1QX0lGX1RSVUUgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTk9UOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krMV0gIT0gUE9QX0pVTVBfSUZfRkFMU0UKLSAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKzEpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7Ci0gICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRQorICAgICAgICAgICAgICAgICAgICB8fCAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0LCBpICsgMSk7CisgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoUE9QX0pVTVBfSUZfVFJVRSwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBub3QgYSBpcyBiIC0tPiAgYSBpcyBub3QgYgogICAgICAgICAgICAgICAgICAgIG5vdCBhIGluIGIgLS0+ICBhIG5vdCBpbiBiCkBAIC00NDUsNzggKzUwOCw3NiBAQAogICAgICAgICAgICAgICAgICAgIG5vdCBhIG5vdCBpbiBiIC0tPiAgYSBpbiBiCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChqIDwgNiAgfHwgIGogPiA5ICB8fAotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gIT0gVU5BUllfTk9UICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDQpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgKGpeMSkpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXSA9IE5PUDsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IDYgfHwgaiA+IDkgfHwKKyAgICAgICAgICAgICAgICAgICAgbmV4dG9wICE9IFVOQVJZX05PVCB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBBQ0tPUEFSRyhvcGNvZGUsIGpeMSk7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGkgKyAxLCBuZXh0aSArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0Ci0gICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKLSAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCisgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguICBUaGlzIGltcHJvdmVzCisgICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAgKi8KICAgICAgICAgICAgIGNhc2UgTE9BRF9DT05TVDoKICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw2KSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7Ci0gICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzIGFuZCBzZXRzCi0gICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgorICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMKKyAgICAgICAgICAgICAgICAgICBhbmQgc2V0cyB3aGljaCBhcmUgb25seSB1c2VkIGZvciAiaW4iIGFuZCAibm90IGluIiB0ZXN0cykuCiAgICAgICAgICAgICAgICAgICAgU2tpcCBvdmVyIEJVSUxEX1NFUU4gMSBVTlBBQ0tfU0VRTiAxLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAyIFVOUEFDS19TRVFOIDIgd2l0aCBST1QyLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAzIFVOUEFDS19TRVFOIDMgd2l0aCBST1QzIFJPVDIuICovCiAgICAgICAgICAgICBjYXNlIEJVSUxEX1RVUExFOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCBqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJiBqID4gMCAmJiBqIDw9IENPTlNUX1NUQUNLX0xFTigpICYmCi0gICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX1RVUExFICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzMpKSB8fAotICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXT09Q09NUEFSRV9PUCAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCs2KSAmJgotICAgICAgICAgICAgICAgICAgICAgIChHRVRBUkcoY29kZXN0cixpKzMpPT02IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgIEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTcpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBqLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopKSkgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjb2Rlc3RyW2hdLCBOT1AsIGkgLSBoKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKGopOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaikgeworICAgICAgICAgICAgICAgICAgICBoID0gbGFzdG5fY29uc3Rfc3RhcnQoY29kZXN0ciwgb3Bfc3RhcnQsIGopOworICAgICAgICAgICAgICAgICAgICBpZiAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBvcF9zdGFydCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRvcD09Q09NUEFSRV9PUCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9JTiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9OT1RfSU4pKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0b3AgPT0gR0VUX0lURVIpICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGkgKyAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3R1cGxlX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaiksIGopOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBVTlBBQ0tfU0VRVUVOQ0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgfHwKLSAgICAgICAgICAgICAgICAgICAgaiAhPSBHRVRBUkcoY29kZXN0ciwgaSszKSB8fAorICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gVU5QQUNLX1NFUVVFTkNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSB8fAorICAgICAgICAgICAgICAgICAgICBqICE9IGdldF9hcmcoY29kZXN0ciwgbmV4dGkpIHx8CiAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBCVUlMRF9TRVQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChqID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGogPCAyKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMykgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RIUkVFOwotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krMV0gPSBST1RfVFdPOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzIsIE5PUCwgNCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJPVF9USFJFRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnQgKyAxXSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMiwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIGJpbmFyeSBvcHMgb24gY29uc3RhbnRzLgotICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gIExPQURfQ09OU1QgYmlub3AoYzEsYzIpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSBMT0FEX0NPTlNUIGMyIEJJTk9QIC0tPiBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLwogICAgICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9NVUxUSVBMWToKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1RSVUVfRElWSURFOgpAQCAtNTMwLDM1ICs1OTEsMzQgQEAKICAgICAgICAgICAgIGNhc2UgQklOQVJZX0FORDoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1hPUjoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX09SOgotICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZwotICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLwotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMik7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIEZvbGQgdW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxICBVTkFSWV9PUCAtLT4gICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+IExPQURfQ09OU1QgdW5hcnlfb3AoYykgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX0lOVkVSVDoKICAgICAgICAgICAgIGNhc2UgVU5BUllfUE9TSVRJVkU6Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKDEpOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgMSkpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzEpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMsIENPTlNUX1NUQUNLX1RPUCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCAqQ09OU1RfU1RBQ0tfTEFTVE4oMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01NzMsMzkgKzYzMywzNiBAQAogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB6CiAgICAgICAgICAgICAgICAgICAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB5ICAgeTpKVU1QX0lGX1RSVUVfT1JfUE9QIHoKLSAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSszCi0gICAgICAgICAgICAgICAgICAgd2hlcmUgeSszIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgorICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpQT1BfSlVNUF9JRl9GQUxTRSB5KzEKKyAgICAgICAgICAgICAgICAgICB3aGVyZSB5KzEgaXMgdGhlIGluc3RydWN0aW9uIGZvbGxvd2luZyB0aGUgc2Vjb25kIHRlc3QuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgdGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBqID0gY29kZXN0clt0Z3RdOworICAgICAgICAgICAgICAgIGggPSBnZXRfYXJnKGNvZGVzdHIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKworICAgICAgICAgICAgICAgIGogPSBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSk7CiAgICAgICAgICAgICAgICAgaWYgKENPTkRJVElPTkFMX0pVTVAoaikpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlISAqLworICAgICAgICAgICAgICAgICAgICAvKiBOT1RFOiBhbGwgcG9zc2libGUganVtcHMgaGVyZSBhcmUgYWJzb2x1dGUuICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKGopID09IEpVTVBTX09OX1RSVUUob3Bjb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuICovCi0gICAgICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB0YXJnZXQncyBzdGFjayBiZWhhdmlvdXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMgaXRzIHRhcmdldCdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBlZmZlY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksIGdldF9hcmcoY29kZXN0ciwgdGd0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlyc3QgaXMgKHNvIGp1bXAgcGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQpLCBhbmQgYWxsIGNvbmRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wcyBwb3AgdGhlaXIgYXJndW1lbnQgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGp1bXAgdG8gcG9wIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX1RSVUU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX0ZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksICh0Z3QgKyAzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCBpcyBub3QgdGFrZW4gaWYgdGhlIGZpcnN0IGlzIChzbworICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCBwYXN0IGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbCBqdW1wcyBwb3AgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGp1bXAgdG8gcG9wIGl0cyBhcmd1bWVudCB3aGVuIGl0J3MgdGFrZW4pLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHNldF9hcmcoY29kZXN0ciwgaSwgKHRndCArIDEpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG9wY29kZSA9PSBKVU1QX0lGX1RSVUVfT1JfUE9QID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1BfSlVNUF9JRl9UUlVFIDogUE9QX0pVTVBfSUZfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGg7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW25leHRpXSA9IFBBQ0tPUEFSRyhqLCBfUHlfT1BBUkcoY29kZXN0cltuZXh0aV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIEludGVudGlvbmFsIGZhbGx0aHJvdWdoICovCkBAIC02MjIsNzMgKzY3OSw3NCBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKICAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIEpVTVBfKiB0byBhIFJFVFVSTiBpbnRvIGp1c3QgYSBSRVRVUk4gKi8KICAgICAgICAgICAgICAgICBpZiAoVU5DT05ESVRJT05BTF9KVU1QKG9wY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0clt0Z3RdID09IFJFVFVSTl9WQUxVRSkgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUkVUVVJOX1ZBTFVFOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgMik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkgPT0gUkVUVVJOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJFVFVSTl9WQUxVRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIGkgKyAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gSlVNUF9GT1JXQVJEKSB7IC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gSlVNUF9BQlNPTFVURTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFB5X3NzaXplX3QpaiA8IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAvKiBObyBiYWNrd2FyZCByZWxhdGl2ZSBqdW1wcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaiAtPSBpICsgMTsgICAgICAgICAgLyogQ2FsYyByZWxhdGl2ZSBqdW1wIGFkZHIgKi8KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgICAgICBjb3B5X29wX2FyZyhjb2Rlc3RyLCBvcF9zdGFydCwgb3Bjb2RlLCBqLCBpICsgMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbdGd0XSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRndHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgdGd0KTsKLSAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgLyogSk1QX0FCUyBjYW4gZ28gYmFja3dhcmRzICovCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7Ci0gICAgICAgICAgICAgICAgaWYgKCFBQlNPTFVURV9KVU1QKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgIHRndHRndCAtPSBpICsgMzsgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCi0gICAgICAgICAgICAgICAgaWYgKHRndHRndCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IG9wY29kZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgdGd0dGd0KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBFWFRFTkRFRF9BUkc6Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBNQUtFX0ZVTkNUSU9OKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0gICAgICAgICAgICAgICAgLyogZG9uJ3QgdmlzaXQgTUFLRV9GVU5DVElPTiBhcyBHRVRBUkcgd2lsbCBiZSB3cm9uZyAqLwotICAgICAgICAgICAgICAgIGkgKz0gMzsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8qIFJlcGxhY2UgUkVUVVJOIExPQURfQ09OU1QgTm9uZSBSRVRVUk4gd2l0aCBqdXN0IFJFVFVSTiAqLwotICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB1bnJlYWNoYWJsZSBKVU1QcyBhZnRlciBSRVRVUk4gKi8KKyAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgb3BzIGFmdGVyIFJFVFVSTiAqLwogICAgICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6Ci0gICAgICAgICAgICAgICAgaWYgKGkrNCA+PSBjb2RlbGVuKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzRdID09IFJFVFVSTl9WQUxVRSAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNSkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA0KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoY29kZXN0cltpKzFdKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDMpOworICAgICAgICAgICAgICAgIGggPSBpICsgMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaCA8IGNvZGVsZW4gJiYgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaSwgaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgaCk7CisgICAgICAgICAgICAgICAgICAgIG5leHRpID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBGaXh1cCBsaW5lbm90YWIgKi8KLSAgICBmb3IgKGk9MCwgbm9wcz0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgeworICAgIC8qIEZpeHVwIGxub3RhYiAqLworICAgIGZvciAoaSA9IDAsIG5vcHMgPSAwOyBpIDwgY29kZWxlbjsgaSsrKSB7CiAgICAgICAgIGFzc2VydChpIC0gbm9wcyA8PSBJTlRfTUFYKTsKLSAgICAgICAgYWRkcm1hcFtpXSA9IChpbnQpKGkgLSBub3BzKTsKLSAgICAgICAgaWYgKGNvZGVzdHJbaV0gPT0gTk9QKQorICAgICAgICAvKiBvcmlnaW5hbCBjb2RlIG9mZnNldCA9PiBuZXcgY29kZSBvZmZzZXQgKi8KKyAgICAgICAgYmxvY2tzW2ldID0gaSAtIG5vcHM7CisgICAgICAgIGlmIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IE5PUCkKICAgICAgICAgICAgIG5vcHMrKzsKICAgICB9Ci0gICAgY3VtX29yaWdfbGluZSA9IDA7Ci0gICAgbGFzdF9saW5lID0gMDsKKyAgICBjdW1fb3JpZ19vZmZzZXQgPSAwOworICAgIGxhc3Rfb2Zmc2V0ID0gMDsKICAgICBmb3IgKGk9MCA7IGkgPCB0YWJzaXogOyBpKz0yKSB7Ci0gICAgICAgIGN1bV9vcmlnX2xpbmUgKz0gbGluZW5vW2ldOwotICAgICAgICBuZXdfbGluZSA9IGFkZHJtYXBbY3VtX29yaWdfbGluZV07Ci0gICAgICAgIGFzc2VydCAobmV3X2xpbmUgLSBsYXN0X2xpbmUgPCAyNTUpOwotICAgICAgICBsaW5lbm9baV0gPSgodW5zaWduZWQgY2hhcikobmV3X2xpbmUgLSBsYXN0X2xpbmUpKTsKLSAgICAgICAgbGFzdF9saW5lID0gbmV3X2xpbmU7CisgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXRfZGVsdGEsIG5ld19vZmZzZXQ7CisgICAgICAgIGN1bV9vcmlnX29mZnNldCArPSBsbm90YWJbaV07CisgICAgICAgIGFzc2VydChjdW1fb3JpZ19vZmZzZXQgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV3X29mZnNldCA9IGJsb2Nrc1tjdW1fb3JpZ19vZmZzZXQgLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKgorICAgICAgICAgICAgICAgIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICBvZmZzZXRfZGVsdGEgPSBuZXdfb2Zmc2V0IC0gbGFzdF9vZmZzZXQ7CisgICAgICAgIGFzc2VydChvZmZzZXRfZGVsdGEgPD0gMjU1KTsKKyAgICAgICAgbG5vdGFiW2ldID0gKHVuc2lnbmVkIGNoYXIpb2Zmc2V0X2RlbHRhOworICAgICAgICBsYXN0X29mZnNldCA9IG5ld19vZmZzZXQ7CiAgICAgfQogCiAgICAgLyogUmVtb3ZlIE5PUHMgYW5kIGZpeHVwIGp1bXAgdGFyZ2V0cyAqLwotICAgIGZvciAoaT0wLCBoPTAgOyBpPGNvZGVsZW4gOyApIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKG9wX3N0YXJ0ID0gaSA9IGggPSAwOyBpIDwgY29kZWxlbjsgaSsrLCBvcF9zdGFydCA9IGkpIHsKKyAgICAgICAgaiA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgd2hpbGUgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICBqID0gajw8OCB8IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgfQorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pOwogICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgICAgICAgICAgY2FzZSBOT1A6Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2FzZSBOT1A6Y29udGludWU7CiAKICAgICAgICAgICAgIGNhc2UgSlVNUF9BQlNPTFVURToKICAgICAgICAgICAgIGNhc2UgQ09OVElOVUVfTE9PUDoKQEAgLTY5Niw4ICs3NTQsNyBAQAogICAgICAgICAgICAgY2FzZSBQT1BfSlVNUF9JRl9UUlVFOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX0ZBTFNFX09SX1BPUDoKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9UUlVFX09SX1BPUDoKLSAgICAgICAgICAgICAgICBqID0gYWRkcm1hcFtHRVRBUkcoY29kZXN0ciwgaSldOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKiBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBGT1JfSVRFUjoKQEAgLTcwNywzNCArNzY0LDMyIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpICsgaSArIDNdIC0gYWRkcm1hcFtpXSAtIDM7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIGopOworICAgICAgICAgICAgICAgIGogPSBibG9ja3NbaiAvIHNpemVvZihfUHlfQ09ERVVOSVQpICsgaSArIDFdIC0gYmxvY2tzW2ldIC0gMTsKKyAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGFkaiA9IENPREVTSVpFKG9wY29kZSk7Ci0gICAgICAgIHdoaWxlIChhZGotLSkKLSAgICAgICAgICAgIGNvZGVzdHJbaCsrXSA9IGNvZGVzdHJbaSsrXTsKKyAgICAgICAgbmV4dGkgPSBpIC0gb3Bfc3RhcnQgKyAxOworICAgICAgICBpZiAoaW5zdHJzaXplKGopID4gbmV4dGkpCisgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgICAgIC8qIElmIGluc3Ryc2l6ZShqKSA8IG5leHRpLCB3ZSdsbCBlbWl0IEVYVEVOREVEX0FSRyAwICovCisgICAgICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgaCwgb3Bjb2RlLCBqLCBuZXh0aSk7CisgICAgICAgIGggKz0gbmV4dGk7CiAgICAgfQotICAgIGFzc2VydChoICsgbm9wcyA9PSBjb2RlbGVuKTsKKyAgICBhc3NlcnQoaCArIChQeV9zc2l6ZV90KW5vcHMgPT0gY29kZWxlbik7CiAKLSAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOwogICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgcmV0dXJuIGNvZGU7CiAKICBleGl0RXJyb3I6CiAgICAgY29kZSA9IE5VTEw7CiAKICBleGl0VW5jaGFuZ2VkOgotICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIGlmIChibG9ja3MgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShibG9ja3MpOwotICAgIGlmIChhZGRybWFwICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgaWYgKGNvZGVzdHIgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeV9YSU5DUkVGKGNvZGUpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOworICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5aGFzaC5jIGIvUHl0aG9uL3B5aGFzaC5jCmluZGV4IDk3Y2I1NDcuLjU3YTJkYTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWhhc2guYworKysgYi9QeXRob24vcHloYXNoLmMKQEAgLTMxOCw0MCArMzE4LDM3IEBACiAKICBNb2RpZmllZCBmb3IgUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXM6CiAgICAgLSBDODkgLyBNU1ZDIGNvbXBhdGliaWxpdHkKLSAgICAtIFBZX1VJTlQ2NF9ULCBQWV9VSU5UMzJfVCBhbmQgUFlfVUlOVDhfVAogICAgIC0gX3JvdGw2NCgpIG9uIFdpbmRvd3MKICAgICAtIGxldG9oNjQoKSBmYWxsYmFjawogKi8KIAotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFBZX1VJTlQ4X1Q7Ci0KIC8qIGJ5dGUgc3dhcCBsaXR0bGUgZW5kaWFuIHRvIGhvc3QgZW5kaWFuCiAgKiBFbmRpYW4gY29udmVyc2lvbiBub3Qgb25seSBlbnN1cmVzIHRoYXQgdGhlIGhhc2ggZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZQogICogdmFsdWUgb24gYWxsIHBsYXRmb3Jtcy4gSXQgaXMgYWxzbyByZXF1aXJlZCB0byBmb3IgYSBnb29kIGRpc3BlcnNpb24gb2YKICAqIHRoZSBoYXNoIHZhbHVlcycgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cy4KICAqLwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKFBZX1VJTlQ2NF9UKSh4KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKHVpbnQ2NF90KSh4KSkKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogIyAgZGVmaW5lIF9sZTY0dG9oKHgpIE9TU3dhcExpdHRsZVRvSG9zdEludDY0KHgpCiAjZWxpZiBkZWZpbmVkKEhBVkVfTEVUT0g2NCkKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBsZTY0dG9oKHgpCiAjZWxzZQotIyAgZGVmaW5lIF9sZTY0dG9oKHgpICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA1NikgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDQwKSAmIDB4ZmYwMDAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCAyNCkgJiAweGZmMDAwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDgpICAmIDB4ZmYwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDgpICAmIDB4ZmYwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiAyNCkgJiAweGZmMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDQwKSAmIDB4ZmYwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKChQWV9VSU5UNjRfVCkoeCkgID4+IDU2KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKCh1aW50NjRfdCkoeCkgPDwgNTYpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgodWludDY0X3QpKHgpICA+PiA1NikpCiAjZW5kaWYKIAogCiAjaWZkZWYgX01TQ19WRVIKICMgIGRlZmluZSBST1RBVEUoeCwgYikgIF9yb3RsNjQoeCwgYikKICNlbHNlCi0jICBkZWZpbmUgUk9UQVRFKHgsIGIpIChQWV9VSU5UNjRfVCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKKyMgIGRlZmluZSBST1RBVEUoeCwgYikgKHVpbnQ2NF90KSggKCh4KSA8PCAoYikpIHwgKCAoeCkgPj4gKDY0IC0gKGIpKSkgKQogI2VuZGlmCiAKICNkZWZpbmUgSEFMRl9ST1VORChhLGIsYyxkLHMsdCkgICAgICAgICBcCkBAIC0zNjksMjIgKzM2NiwyMiBAQAogCiBzdGF0aWMgUHlfaGFzaF90CiBzaXBoYXNoMjQoY29uc3Qgdm9pZCAqc3JjLCBQeV9zc2l6ZV90IHNyY19zeikgewotICAgIFBZX1VJTlQ2NF9UIGswID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMCk7Ci0gICAgUFlfVUlOVDY0X1QgazEgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmsxKTsKLSAgICBQWV9VSU5UNjRfVCBiID0gKFBZX1VJTlQ2NF9UKXNyY19zeiA8PCA1NjsKLSAgICBjb25zdCBQWV9VSU5UNjRfVCAqaW4gPSAoUFlfVUlOVDY0X1QqKXNyYzsKKyAgICB1aW50NjRfdCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOworICAgIHVpbnQ2NF90IGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7CisgICAgdWludDY0X3QgYiA9ICh1aW50NjRfdClzcmNfc3ogPDwgNTY7CisgICAgY29uc3QgdWludDY0X3QgKmluID0gKHVpbnQ2NF90KilzcmM7CiAKLSAgICBQWV9VSU5UNjRfVCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOwotICAgIFBZX1VJTlQ2NF9UIHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOworICAgIHVpbnQ2NF90IHYwID0gazAgXiAweDczNmY2ZDY1NzA3MzY1NzVVTEw7CisgICAgdWludDY0X3QgdjEgPSBrMSBeIDB4NjQ2ZjcyNjE2ZTY0NmY2ZFVMTDsKKyAgICB1aW50NjRfdCB2MiA9IGswIF4gMHg2Yzc5Njc2NTZlNjU3MjYxVUxMOworICAgIHVpbnQ2NF90IHYzID0gazEgXiAweDc0NjU2NDYyNzk3NDY1NzNVTEw7CiAKLSAgICBQWV9VSU5UNjRfVCB0OwotICAgIFBZX1VJTlQ4X1QgKnB0OwotICAgIFBZX1VJTlQ4X1QgKm07CisgICAgdWludDY0X3QgdDsKKyAgICB1aW50OF90ICpwdDsKKyAgICB1aW50OF90ICptOwogCiAgICAgd2hpbGUgKHNyY19zeiA+PSA4KSB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIG1pID0gX2xlNjR0b2goKmluKTsKKyAgICAgICAgdWludDY0X3QgbWkgPSBfbGU2NHRvaCgqaW4pOwogICAgICAgICBpbiArPSAxOwogICAgICAgICBzcmNfc3ogLT0gODsKICAgICAgICAgdjMgXj0gbWk7CkBAIC0zOTMsMTMgKzM5MCwxMyBAQAogICAgIH0KIAogICAgIHQgPSAwOwotICAgIHB0ID0gKFBZX1VJTlQ4X1QgKikmdDsKLSAgICBtID0gKFBZX1VJTlQ4X1QgKilpbjsKKyAgICBwdCA9ICh1aW50OF90ICopJnQ7CisgICAgbSA9ICh1aW50OF90ICopaW47CiAgICAgc3dpdGNoIChzcmNfc3opIHsKICAgICAgICAgY2FzZSA3OiBwdFs2XSA9IG1bNl07CiAgICAgICAgIGNhc2UgNjogcHRbNV0gPSBtWzVdOwogICAgICAgICBjYXNlIDU6IHB0WzRdID0gbVs0XTsKLSAgICAgICAgY2FzZSA0OiBQeV9NRU1DUFkocHQsIG0sIHNpemVvZihQWV9VSU5UMzJfVCkpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBtZW1jcHkocHQsIG0sIHNpemVvZih1aW50MzJfdCkpOyBicmVhazsKICAgICAgICAgY2FzZSAzOiBwdFsyXSA9IG1bMl07CiAgICAgICAgIGNhc2UgMjogcHRbMV0gPSBtWzFdOwogICAgICAgICBjYXNlIDE6IHB0WzBdID0gbVswXTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWxpZmVjeWNsZS5jIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKaW5kZXggY2U1Mjk5MC4uYTRmN2Y4MiAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjdW5kZWYgQllURQogI2luY2x1ZGUgIndpbmRvd3MuaCIKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksICZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoZmx1c2gpOwpAQCAtOTAsNiArOTMsMTAgQEAKIGludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCiBpbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLwogaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KKyNpZmRlZiBNU19XSU5ET1dTCitpbnQgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gMDsgLyogVXNlcyBtYmNzIGluc3RlYWQgb2YgdXRmLTggKi8KK2ludCBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gMDsgLyogVXNlcyBGaWxlSU8gaW5zdGVhZCBvZiBXaW5kb3dzQ29uc29sZUlPICovCisjZW5kaWYKIAogUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwogCkBAIC0xNTEsMTEgKzE1OCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0zOwogICAgICAgICB9CiAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgLyogT3ZlcnJpZGluZyB0aGUgc3RyZWFtIGVuY29kaW5nIGltcGxpZXMgbGVnYWN5IHN0cmVhbXMgKi8KKyAgICAgICAgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDE7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemVFeCgpLiAgRG9uJ3QKKyAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplRXgoKSBjYWxsLiAgV2hlbgogICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwogICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQogICAgYmVlbiBjcmVhdGVkLgpAQCAtMTkyLDcgKzIwNSw3IEBACiAgICAgaWYgKCFuYW1lKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKKyAgICBuYW1lX3V0ZjggPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWUpOwogICAgIGlmIChuYW1lX3V0ZjggPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBuYW1lX3N0ciA9IF9QeU1lbV9SYXdTdHJkdXAobmFtZV91dGY4KTsKQEAgLTIyMyw2ICsyMzYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOworI2VsaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoIlVURi04Iik7CiAjZWxzZQogICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTIsNiArMjY3LDExIEBACiAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CiAgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKIAorICAgIGludGVycC0+aW1wb3J0X2Z1bmMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhpbnRlcnAtPmJ1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgIGlmIChpbnRlcnAtPmltcG9ydF9mdW5jID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IF9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0X2Z1bmMpOworCiAgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLwogICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKICAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKQEAgLTI5NSw3ICszMTUsNyBAQAogICAgIGluaXRpYWxpemVkID0gMTsKICAgICBfUHlfRmluYWxpemluZyA9IE5VTEw7CiAKLSNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChIQVZFX1NFVExPQ0FMRSkKKyNpZmRlZiBIQVZFX1NFVExPQ0FMRQogICAgIC8qIFNldCB1cCB0aGUgTENfQ1RZUEUgbG9jYWxlLCBzbyB3ZSBjYW4gb2J0YWluCiAgICAgICAgdGhlIGxvY2FsZSdzIGNoYXJzZXQgd2l0aG91dCBoYXZpbmcgdG8gc3dpdGNoCiAgICAgICAgbG9jYWxlcy4gKi8KQEAgLTMxNCw2ICszMzQsMTIgQEAKICAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCiAgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkciKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkxFR0FDWVdJTkRPV1NTVERJTyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZywgcCk7CisjZW5kaWYKIAogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKQEAgLTMyNywxMSArMzUzLDExIEBACiAgICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCisgICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemVFeCBiZWNhdXNlCiAgICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KICAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgogICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCisgICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemVFeCBtdWx0aXBsZSB0aW1lcy4gKi8KICAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CiAKICAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KQEAgLTQ3NywyOCArNTAzLDM1IEBACiAgICAgcmV0dXJuIHIgPiAwOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKICAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qIFVuZG8gdGhlIGVmZmVjdCBvZiBQeV9Jbml0aWFsaXplKCkuCkBAIC01MTUsMTQgKzU0OCwxNSBAQAogCiAqLwogCi12b2lkCi1QeV9GaW5hbGl6ZSh2b2lkKQoraW50CitQeV9GaW5hbGl6ZUV4KHZvaWQpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RhdHVzOwogCiAgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CiAKQEAgLTU0Nyw3ICs1ODEsOSBAQAogICAgIGluaXRpYWxpemVkID0gMDsKIAogICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCiAgICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwpAQCAtNTY0LDE5ICs2MDAsMjEgQEAKICAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKICAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KICAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKKyAgICBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCk7CiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgLyogV2l0aCBDT1VOVF9BTExPQ1MsIGl0IGhlbHBzIHRvIHJ1biBHQyBtdWx0aXBsZSB0aW1lczoKICAgICAgICBlYWNoIGNvbGxlY3Rpb24gbWlnaHQgcmVsZWFzZSBzb21lIHR5cGVzIGZyb20gdGhlIHR5cGUKICAgICAgICBsaXN0LCBzbyB0aGV5IGJlY29tZSBnYXJiYWdlLiAqLwotICAgIHdoaWxlIChQeUdDX0NvbGxlY3QoKSA+IDApCisgICAgd2hpbGUgKF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKSA+IDApCiAgICAgICAgIC8qIG5vdGhpbmcgKi87CiAjZW5kaWYKICAgICAvKiBEZXN0cm95IGFsbCBtb2R1bGVzICovCiAgICAgUHlJbXBvcnRfQ2xlYW51cCgpOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAoYWdhaW4sIGluIGNhc2UgbW9yZSB3YXMgcHJpbnRlZCkgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKICAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCkBAIC01OTQsNyArNjMyLDcgQEAKICAgICAgKiBYWFggUHl0aG9uIGNvZGUgZ2V0dGluZyBjYWxsZWQuCiAgICAgICovCiAjaWYgMAotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNlbmRpZgogCiAgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKQEAgLTYxMiw3ICs2NTAsNyBAQAogCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKKyAgICBkdW1wX2NvdW50cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgLyogZHVtcCBoYXNoIHN0YXRzICovCiAgICAgX1B5SGFzaF9GaW5pKCk7CkBAIC02NTUsNiArNjkzLDggQEAKICAgICBQeVNsaWNlX0ZpbmkoKTsKICAgICBfUHlHQ19GaW5pKCk7CiAgICAgX1B5UmFuZG9tX0ZpbmkoKTsKKyAgICBfUHlBcmdfRmluaSgpOworICAgIFB5QXN5bmNHZW5fRmluaSgpOwogCiAgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAgICAgX1B5VW5pY29kZV9GaW5pKCk7CkBAIC02ODAsNiArNzIwLDcgQEAKIAogICAgIC8qIERlbGV0ZSBjdXJyZW50IHRocmVhZC4gQWZ0ZXIgdGhpcywgbWFueSBDIEFQSSBjYWxscyBiZWNvbWUgY3Jhc2h5LiAqLwogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTY5MCwxMiArNzMxLDIyIEBACiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKICAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGlmIChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpCisgICAgICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIH0KICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5X0ZpbmFsaXplRXgoKTsKIH0KIAogLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCkBAIC03MjEsNiArNzcyLDEyIEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfTmV3SW50ZXJwcmV0ZXI6IGNhbGwgUHlfSW5pdGlhbGl6ZSBmaXJzdCIpOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBJc3N1ZSAjMTA5MTUsICMxNTc1MTogVGhlIEdJTCBBUEkgZG9lc24ndCB3b3JrIHdpdGggbXVsdGlwbGUKKyAgICAgICBpbnRlcnByZXRlcnM6IGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLiAqLworICAgIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAwOworI2VuZGlmCisKICAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CiAgICAgaWYgKGludGVycCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Nyw3ICs4MzQsNyBAQAogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwogICAgICAgICBpbml0bWFpbihpbnRlcnApOwogICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCiAgICAgICAgICAgICBpbml0c2l0ZSgpOwpAQCAtODAzLDcgKzg2MCw3IEBACiAgICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KICAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KIAotICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKKyAgIChQeV9GaW5hbGl6ZUV4KCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKICAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQogCiAgICBMb2NraW5nOiBhcyBhYm92ZS4KQEAgLTg4MSwxMSArOTM4LDE3IEBACiBzdGF0aWMgdm9pZAogaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlciwgKmFubl9kaWN0OwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmICgoYW5uX2RpY3QgPT0gTlVMTCkgfHwKKyAgICAgICAgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2Fubm90YXRpb25zX18iLCBhbm5fZGljdCkgPCAwKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2Fubm90YXRpb25zX18iKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwogICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgewpAQCAtOTIxLDYgKzk4NCwxOCBAQAogewogICAgIFB5T2JqZWN0ICpjb2RlYzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJzdXJyb2dhdGVwYXNzIjsKKyAgICB9CisjZWxzZQogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgewogICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwpAQCAtOTMxLDYgKzEwMDYsNyBAQAogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisjZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtOTY5LDkgKzEwNDUsMTIgQEAKIGlzX3ZhbGlkX2ZkKGludCBmZCkKIHsKICAgICBpbnQgZmQyOwotICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIC8qIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0IHdoZXJlYXMKKyAgICAgICBkdXAoKSBkb2Vzbid0LCB0aGVyZSBpcyBhIGxvdyByaXNrIG9mIEVNRklMRS9FTkZJTEUgYXQgUHl0aG9uCisgICAgICAgc3RhcnR1cC4gKi8KICAgICBmZDIgPSBkdXAoZmQpOwogICAgIGlmIChmZDIgPj0gMCkKICAgICAgICAgY2xvc2UoZmQyKTsKQEAgLTk4Miw4ICsxMDYxLDggQEAKIC8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCiBzdGF0aWMgUHlPYmplY3QqCiBjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKKyAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyYXcgPSBOVUxMLCAqcmVzOwogICAgIGNvbnN0IGNoYXIqIG1vZGU7CkBAIC0xMDEzLDcgKzEwOTIsOCBAQAogICAgICAgICBtb2RlID0gInJiIjsKICAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCAvKiBlbmNvZGluZywgZXJyb3JzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCAwKTsgLyogbmV3bGluZSwgY2xvc2VmZCAqLwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTAyOCwxMCArMTEwOCwxNiBAQAogICAgICAgICBQeV9JTkNSRUYocmF3KTsKICAgICB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93cyBjb25zb2xlIElPIGlzIGFsd2F5cyBVVEYtOCBlbmNvZGVkICovCisgICAgaWYgKFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhyYXcpKQorICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisjZW5kaWYKKwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKICAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTExOTksNyArMTI4NSw3IEBACiAgICAgZW5jb2RpbmdfYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RkLCAiZW5jb2RpbmciKTsKICAgICBpZiAoZW5jb2RpbmdfYXR0ciAhPSBOVUxMKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGRfZW5jb2Rpbmc7Ci0gICAgICAgIHN0ZF9lbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmdfYXR0cik7CisgICAgICAgIHN0ZF9lbmNvZGluZyA9IFB5VW5pY29kZV9Bc1VURjgoZW5jb2RpbmdfYXR0cik7CiAgICAgICAgIGlmIChzdGRfZW5jb2RpbmcgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVjX2luZm8gPSBfUHlDb2RlY19Mb29rdXAoc3RkX2VuY29kaW5nKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYoY29kZWNfaW5mbyk7CkBAIC0xMjQzLDI1ICsxMzI5LDExIEBACiBzdGF0aWMgdm9pZAogX1B5X0ZhdGFsRXJyb3JfRHVtcFRyYWNlYmFja3MoaW50IGZkKQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSB3b3JrcyBldmVuIGlmIHRoZSBHSUwgd2FzIHJlbGVhc2VkICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSNlbmRpZgotICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgewotICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSByZXF1aXJlcyB0aGUgdGhyZWFkIHN0YXRlIHRvIGRpc3BsYXkKLSAgICAgICAgICogZnJhbWVzICovCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwogICAgIGZmbHVzaChzdGRlcnIpOwogCiAgICAgLyogZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2sgKi8KLSAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgTlVMTCk7CiB9CiAKIC8qIFByaW50IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiAoaWYgYW4gZXhjZXB0aW9uIGlzIHNldCkgd2l0aCBpdHMgdHJhY2ViYWNrLApAQCAtMTMxNiw3ICsxMzg4LDcgQEAKICAgICBQeV9YREVDUkVGKHRiKTsKIAogICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLwotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTM4OCw3ICsxNDYwLDcgQEAKIC8qIENsZWFuIHVwIGFuZCBleGl0ICovCiAKICNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjICBpbmNsdWRlICJweXRocmVhZC5oIgogI2VuZGlmCiAKIHN0YXRpYyB2b2lkICgqcHlleGl0ZnVuYykodm9pZCkgPSBOVUxMOwpAQCAtMTQyNiw3ICsxNDk4LDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIH0KQEAgLTE0NjIsNyArMTUzNCw5IEBACiB2b2lkCiBQeV9FeGl0KGludCBzdHMpCiB7Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiAgICAgZXhpdChzdHMpOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RhdGUuYyBiL1B5dGhvbi9weXN0YXRlLmMKaW5kZXggMjRlMjBjMy4uNjVjMjQ0ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RhdGUuYworKysgYi9QeXRob24vcHlzdGF0ZS5jCkBAIC02LDcgKzYsNyBAQAogI2RlZmluZSBHRVRfVFNUQVRFKCkgXAogICAgICgoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQogI2RlZmluZSBTRVRfVFNUQVRFKHZhbHVlKSBcCi0gICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50LCAoUHlfdWludHB0cl90KSh2YWx1ZSkpCisgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50LCAodWludHB0cl90KSh2YWx1ZSkpCiAjZGVmaW5lIEdFVF9JTlRFUlBfU1RBVEUoKSBcCiAgICAgKEdFVF9UU1RBVEUoKS0+aW50ZXJwKQogCkBAIC0yNSw3ICsyNSw3IEBACiAjaWZkZWYgSEFWRV9ETEZDTl9ICiAjaW5jbHVkZSA8ZGxmY24uaD4KICNlbmRpZgotI2lmbmRlZiBSVExEX0xBWlkKKyNpZiAhSEFWRV9ERUNMX1JUTERfTEFaWQogI2RlZmluZSBSVExEX0xBWlkgMQogI2VuZGlmCiAjZW5kaWYKQEAgLTM0LDYgKzM0LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK2ludCBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkID0gMTsKKwogI2lmZGVmIFdJVEhfVEhSRUFECiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIHN0YXRpYyBQeVRocmVhZF90eXBlX2xvY2sgaGVhZF9tdXRleCA9IE5VTEw7IC8qIFByb3RlY3RzIGludGVycC0+dHN0YXRlX2hlYWQgKi8KQEAgLTQ1LDcgKzQ3LDcgQEAKICAgIEdJTFN0YXRlIGltcGxlbWVudGF0aW9uCiAqLwogc3RhdGljIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqYXV0b0ludGVycHJldGVyU3RhdGUgPSBOVUxMOwotc3RhdGljIGludCBhdXRvVExTa2V5ID0gMDsKK3N0YXRpYyBpbnQgYXV0b1RMU2tleSA9IC0xOwogI2Vsc2UKICNkZWZpbmUgSEVBRF9JTklUKCkgLyogTm90aGluZyAqLwogI2RlZmluZSBIRUFEX0xPQ0soKSAvKiBOb3RoaW5nICovCkBAIC04OCwxNiArOTAsMTUgQEAKICAgICAgICAgaW50ZXJwLT5jb2RlY3NfaW5pdGlhbGl6ZWQgPSAwOwogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAwOwogICAgICAgICBpbnRlcnAtPmltcG9ydGxpYiA9IE5VTEw7CisgICAgICAgIGludGVycC0+aW1wb3J0X2Z1bmMgPSBOVUxMOworICAgICAgICBpbnRlcnAtPmV2YWxfZnJhbWUgPSBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQ7CiAjaWZkZWYgSEFWRV9ETE9QRU4KLSNpZmRlZiBSVExEX05PVworI2lmIEhBVkVfREVDTF9SVExEX05PVwogICAgICAgICBpbnRlcnAtPmRsb3BlbmZsYWdzID0gUlRMRF9OT1c7CiAjZWxzZQogICAgICAgICBpbnRlcnAtPmRsb3BlbmZsYWdzID0gUlRMRF9MQVpZOwogI2VuZGlmCiAjZW5kaWYKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICBpbnRlcnAtPnRzY2R1bXAgPSAwOwotI2VuZGlmCiAKICAgICAgICAgSEVBRF9MT0NLKCk7CiAgICAgICAgIGludGVycC0+bmV4dCA9IGludGVycF9oZWFkOwpAQCAtMTI2LDYgKzEyNyw3IEBACiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5idWlsdGlucyk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5idWlsdGluc19jb3B5KTsKICAgICBQeV9DTEVBUihpbnRlcnAtPmltcG9ydGxpYik7CisgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRfZnVuYyk7CiB9CiAKIApAQCAtMjIyLDYgKzIyNCwxMCBAQAogCiAgICAgICAgIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXIgPSBOVUxMOwogICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMDsKKyAgICAgICAgdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ID0gMDsKKworICAgICAgICB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIgPSBOVUxMOworICAgICAgICB0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIgPSBOVUxMOwogCiAgICAgICAgIGlmIChpbml0KQogICAgICAgICAgICAgX1B5VGhyZWFkU3RhdGVfSW5pdCh0c3RhdGUpOwpAQCAtNDAyLDYgKzQwOCw4IEBACiAgICAgUHlfQ0xFQVIodHN0YXRlLT5jX3RyYWNlb2JqKTsKIAogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXIpOworICAgIFB5X0NMRUFSKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlcik7CisgICAgUHlfQ0xFQVIodHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyKTsKIH0KIAogCkBAIC00NTEsMTAgKzQ1OSwxMCBAQAogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ6IG5vIGN1cnJlbnQgdHN0YXRlIik7Ci0gICAgU0VUX1RTVEFURShOVUxMKTsKKyAgICB0c3RhdGVfZGVsZXRlX2NvbW1vbih0c3RhdGUpOwogICAgIGlmIChhdXRvSW50ZXJwcmV0ZXJTdGF0ZSAmJiBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpID09IHRzdGF0ZSkKICAgICAgICAgUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZShhdXRvVExTa2V5KTsKLSAgICB0c3RhdGVfZGVsZXRlX2NvbW1vbih0c3RhdGUpOworICAgIFNFVF9UU1RBVEUoTlVMTCk7CiAgICAgUHlFdmFsX1JlbGVhc2VMb2NrKCk7CiB9CiAjZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KQEAgLTY5OCw3ICs3MDYsNyBAQAogfQogCiAvKiBJbnRlcm5hbCBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24gZnVuY3Rpb25zIGNhbGxlZCBieQotICAgUHlfSW5pdGlhbGl6ZS9QeV9GaW5hbGl6ZQorICAgUHlfSW5pdGlhbGl6ZS9QeV9GaW5hbGl6ZUV4CiAqLwogdm9pZAogX1B5R0lMU3RhdGVfSW5pdChQeUludGVycHJldGVyU3RhdGUgKmksIFB5VGhyZWFkU3RhdGUgKnQpCkBAIC03MTQsMTAgKzcyMiwxNyBAQAogICAgIF9QeUdJTFN0YXRlX05vdGVUaHJlYWRTdGF0ZSh0KTsKIH0KIAorUHlJbnRlcnByZXRlclN0YXRlICoKK19QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUodm9pZCkKK3sKKyAgICByZXR1cm4gYXV0b0ludGVycHJldGVyU3RhdGU7Cit9CisKIHZvaWQKIF9QeUdJTFN0YXRlX0Zpbmkodm9pZCkKIHsKICAgICBQeVRocmVhZF9kZWxldGVfa2V5KGF1dG9UTFNrZXkpOworICAgIGF1dG9UTFNrZXkgPSAtMTsKICAgICBhdXRvSW50ZXJwcmV0ZXJTdGF0ZSA9IE5VTEw7CiB9CiAKQEAgLTc4Niw4ICs4MDEsMTkgQEAKIGludAogUHlHSUxTdGF0ZV9DaGVjayh2b2lkKQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IEdFVF9UU1RBVEUoKTsKLSAgICByZXR1cm4gdHN0YXRlICYmICh0c3RhdGUgPT0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChhdXRvVExTa2V5ID09IC0xKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHRzdGF0ZSA9IEdFVF9UU1RBVEUoKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuICh0c3RhdGUgPT0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSk7CiB9CiAKIFB5R0lMU3RhdGVfU1RBVEUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0cnRvZC5jIGIvUHl0aG9uL3B5c3RydG9kLmMKaW5kZXggMjA5YzkwOC4uNjRkMGM1MiAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RydG9kLmMKKysrIGIvUHl0aG9uL3B5c3RydG9kLmMKQEAgLTM3MCw2ICszNzAsNzIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBSZW1vdmUgdW5kZXJzY29yZXMgdGhhdCBmb2xsb3cgdGhlIHVuZGVyc2NvcmUgcGxhY2VtZW50IHJ1bGUgZnJvbQorICAgdGhlIHN0cmluZyBhbmQgdGhlbiBjYWxsIHRoZSBgaW5uZXJmdW5jYCBmdW5jdGlvbiBvbiB0aGUgcmVzdWx0LgorICAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBvYmplY3Qgb3IgTlVMTCBvbiBleGNlcHRpb24uCisKKyAgIGB3aGF0YCBpcyB1c2VkIGZvciB0aGUgZXJyb3IgbWVzc2FnZSBlbWl0dGVkIHdoZW4gdW5kZXJzY29yZXMgYXJlIGRldGVjdGVkCisgICB0aGF0IGRvbid0IGZvbGxvdyB0aGUgcnVsZS4gYGFyZ2AgaXMgYW4gb3BhcXVlIHBvaW50ZXIgcGFzc2VkIHRvIHRoZSBpbm5lcgorICAgZnVuY3Rpb24uCisKKyAgIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1lbnQgdW5kZXJzY29yZS1hZ25vc3RpYyBjb252ZXJzaW9uIGZvciBmbG9hdHMKKyAgIGFuZCBjb21wbGV4IG51bWJlcnMuCisqLworUHlPYmplY3QgKgorX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcygKKyAgICBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IG9yaWdfbGVuLCBjb25zdCBjaGFyICp3aGF0LCBQeU9iamVjdCAqb2JqLCB2b2lkICphcmcsCisgICAgUHlPYmplY3QgKigqaW5uZXJmdW5jKShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsIHZvaWQgKikpCit7CisgICAgY2hhciBwcmV2OworICAgIGNvbnN0IGNoYXIgKnAsICpsYXN0OworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGlubmVyZnVuYyhzLCBvcmlnX2xlbiwgYXJnKTsKKyAgICB9CisKKyAgICBkdXAgPSBQeU1lbV9NYWxsb2Mob3JpZ19sZW4gKyAxKTsKKyAgICBlbmQgPSBkdXA7CisgICAgcHJldiA9ICdcMCc7CisgICAgbGFzdCA9IHMgKyBvcmlnX2xlbjsKKyAgICBmb3IgKHAgPSBzOyAqcDsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBvbmx5IGFsbG93ZWQgYWZ0ZXIgZGlnaXRzLiAqLworICAgICAgICAgICAgaWYgKCEocHJldiA+PSAnMCcgJiYgcHJldiA8PSAnOScpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICplbmQrKyA9ICpwOworICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIG9ubHkgYWxsb3dlZCBiZWZvcmUgZGlnaXRzLiAqLworICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nICYmICEoKnAgPj0gJzAnICYmICpwIDw9ICc5JykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByZXYgPSAqcDsKKyAgICB9CisgICAgLyogVW5kZXJzY29yZXMgYXJlIG5vdCBhbGxvd2VkIGF0IHRoZSBlbmQuICovCisgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIC8qIE5vIGVtYmVkZGVkIE5VTHMgYWxsb3dlZC4gKi8KKyAgICBpZiAocCAhPSBsYXN0KSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgICplbmQgPSAnXDAnOworICAgIHJlc3VsdCA9IGlubmVyZnVuYyhkdXAsIGVuZCAtIGR1cCwgYXJnKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworICBlcnJvcjoKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisJCSAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvICVzOiAiCisJCSAiJVIiLCB3aGF0LCBvYmopOworICAgIHJldHVybiBOVUxMOworfQorCiAjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgogCiAvKiBHaXZlbiBhIHN0cmluZyB0aGF0IG1heSBoYXZlIGEgZGVjaW1hbCBwb2ludCBpbiB0aGUgY3VycmVudApAQCAtODgxLDEyICs5NDcsMTIgQEAKICNkZWZpbmUgT0ZTX0UgMgogCiAvKiBUaGUgbGVuZ3RocyBvZiB0aGVzZSBhcmUga25vd24gdG8gdGhlIGNvZGUgYmVsb3csIHNvIGRvbid0IGNoYW5nZSB0aGVtICovCi1zdGF0aWMgY2hhciAqbGNfZmxvYXRfc3RyaW5nc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsY19mbG9hdF9zdHJpbmdzW10gPSB7CiAgICAgImluZiIsCiAgICAgIm5hbiIsCiAgICAgImUiLAogfTsKLXN0YXRpYyBjaGFyICp1Y19mbG9hdF9zdHJpbmdzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHVjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKICAgICAiSU5GIiwKICAgICAiTkFOIiwKICAgICAiRSIsCkBAIC05MjUsNyArOTkxLDggQEAKIGZvcm1hdF9mbG9hdF9zaG9ydChkb3VibGUgZCwgY2hhciBmb3JtYXRfY29kZSwKICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSwgaW50IHByZWNpc2lvbiwKICAgICAgICAgICAgICAgICAgICBpbnQgYWx3YXlzX2FkZF9zaWduLCBpbnQgYWRkX2RvdF8wX2lmX2ludGVnZXIsCi0gICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY2hhciAqKmZsb2F0X3N0cmluZ3MsIGludCAqdHlwZSkKKyAgICAgICAgICAgICAgICAgICBpbnQgdXNlX2FsdF9mb3JtYXR0aW5nLCBjb25zdCBjaGFyICogY29uc3QgKmZsb2F0X3N0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKQogewogICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CiAgICAgY2hhciAqcCA9IE5VTEw7CkBAIC0xMTc2LDcgKzEyNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSkKIHsKLSAgICBjaGFyICoqZmxvYXRfc3RyaW5ncyA9IGxjX2Zsb2F0X3N0cmluZ3M7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICpmbG9hdF9zdHJpbmdzID0gbGNfZmxvYXRfc3RyaW5nczsKICAgICBpbnQgbW9kZTsKIAogICAgIC8qIFZhbGlkYXRlIGZvcm1hdF9jb2RlLCBhbmQgbWFwIHVwcGVyIGFuZCBsb3dlciBjYXNlLiBDb21wdXRlIHRoZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDkwY2IyZGUuLjhiZWZhNTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICBpZiAodiAmJiB2ICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgIG9lbmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX2VuY29kaW5nKTsKICAgICAgICAgICAgIGlmIChvZW5jKQotICAgICAgICAgICAgICAgIGVuYyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2VuYyk7CisgICAgICAgICAgICAgICAgZW5jID0gUHlVbmljb2RlX0FzVVRGOChvZW5jKTsKICAgICAgICAgICAgIGlmICghZW5jKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KQEAgLTE4Miw3ICsxODIsNyBAQAogICAgICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgICAgICBwczEgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHYpOworICAgICAgICAgICAgcHMxID0gUHlVbmljb2RlX0FzVVRGOCh2KTsKICAgICAgICAgICAgIGlmIChwczEgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgcHMxID0gIiI7CkBAIC0xOTUsNyArMTk1LDcgQEAKICAgICAgICAgaWYgKHcgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh3KSkgewotICAgICAgICAgICAgcHMyID0gX1B5VW5pY29kZV9Bc1N0cmluZyh3KTsKKyAgICAgICAgICAgIHBzMiA9IFB5VW5pY29kZV9Bc1VURjgodyk7CiAgICAgICAgICAgICBpZiAocHMyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIHBzMiA9ICIiOwpAQCAtNDMxLDcgKzQzMSw3IEBACiBwYXJzZV9zeW50YXhfZXJyb3IoUHlPYmplY3QgKmVyciwgUHlPYmplY3QgKiptZXNzYWdlLCBQeU9iamVjdCAqKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIGludCAqbGluZW5vLCBpbnQgKm9mZnNldCwgUHlPYmplY3QgKip0ZXh0KQogewotICAgIGxvbmcgaG9sZDsKKyAgICBpbnQgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKICAgICBfUHlfSURFTlRJRklFUihtc2cpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBACiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOworICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgIFB5X0RFQ1JFRih2KTsKICAgICBpZiAoaG9sZCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CisgICAgKmxpbmVubyA9IGhvbGQ7CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQpAQCAtNDc3LDExICs0NzcsMTEgQEAKICAgICAgICAgKm9mZnNldCA9IC0xOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAqb2Zmc2V0ID0gKGludClob2xkOworICAgICAgICAqb2Zmc2V0ID0gaG9sZDsKICAgICB9CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX3RleHQpOwpAQCAtNTE0LDcgKzUxNCw3IEBACiAgICAgY2hhciAqdGV4dDsKICAgICBjaGFyICpubDsKIAotICAgIHRleHQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHRleHRfb2JqKTsKKyAgICB0ZXh0ID0gUHlVbmljb2RlX0FzVVRGOCh0ZXh0X29iaik7CiAgICAgaWYgKHRleHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MzAsOCArNjMwLDEzIEBACiAgICAgfQogICAgIGhvb2sgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfZXhjZXB0aG9vayk7CiAgICAgaWYgKGhvb2spIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX1BhY2soMywgZXhjZXB0aW9uLCB2LCB0Yik7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChob29rLCBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QqIHN0YWNrWzNdOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN0YWNrWzBdID0gZXhjZXB0aW9uOworICAgICAgICBzdGFja1sxXSA9IHY7CisgICAgICAgIHN0YWNrWzJdID0gdGI7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChob29rLCBzdGFjaywgMyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmV4Y2VwdGlvbjIsICp2MiwgKnRiMjsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC02NjAsNyArNjY1LDYgQEAKICAgICAgICAgICAgIFB5X1hERUNSRUYodGIyKTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoInN5cy5leGNlcHRob29rIGlzIG1pc3NpbmdcbiIpOwogICAgICAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOwpAQCAtNzkxLDExICs3OTUsMTEgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmNhdXNlX21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY2F1c2VfbWVzc2FnZVtdID0KICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjb250ZXh0X21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY29udGV4dF9tZXNzYWdlW10gPQogICAgICJcbkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAiCiAgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iOwogCkBAIC05NDYsNyArOTUwLDcgQEAKIAogICAgIGYgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTk1NCw3ICs5NTgsNyBAQAogICAgIH0KICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xMTQ0LDggKzExNDgsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlT2JqZWN0KEZJTEUgKmZwLCBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKQEAgLTExNzcsOCArMTE4MSw4IEBACiAKIG1vZF90eQogUHlQYXJzZXJfQVNURnJvbUZpbGUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3N0ciwgY29uc3QgY2hhciogZW5jLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjaGFyICpwczEsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY29uc3QgY2hhciAqcHMxLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBtb2RfdHkgbW9kOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDdmNjU4MjQuLjMwMTVhNmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTcsNiArNywxMSBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+ICAgLyogbWFjaF9hYnNvbHV0ZV90aW1lKCksIG1hY2hfdGltZWJhc2VfaW5mbygpICovCiAjZW5kaWYKIAorI2RlZmluZSBfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhhLCBiKSBcCisgICAgKGFzc2VydChiID4gMCksIFwKKyAgICAgKF9QeVRpbWVfdCkoYSkgPCBfUHlUaW1lX01JTiAvIChfUHlUaW1lX3QpKGIpIFwKKyAgICAgfHwgX1B5VGltZV9NQVggLyAoX1B5VGltZV90KShiKSA8IChfUHlUaW1lX3QpKGEpKQorCiAvKiBUbyBtaWxsaXNlY29uZCAoMTBeLTMpICovCiAjZGVmaW5lIFNFQ19UT19NUyAxMDAwCiAKQEAgLTMzLDEyICszOCwxMiBAQAogdGltZV90CiBfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbDsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CiAjZWxzZQogICAgIGxvbmcgdmFsOwotICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKICNlbmRpZgogICAgIGlmICh2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNTIsNTggKzU3LDkxIEBACiBQeU9iamVjdCAqCiBfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwogI2VuZGlmCiB9CiAKKy8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyCisgICAoX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pICovCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCit7CisgICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKKyAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKKyAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCisgICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOworICAgIHJldHVybiByb3VuZGVkOworfQorCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kKGRvdWJsZSB4LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgZCA9IHg7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBkID0gX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGQpOworICAgIGVsc2UgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgZWxzZQorICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgcmV0dXJuIGQ7Cit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkb3VibGUgZCwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisKKyAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgZmxvYXRwYXJ0ID0gX1B5VGltZV9Sb3VuZChmbG9hdHBhcnQsIHJvdW5kKTsKKyAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgIGZsb2F0cGFydCAtPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCArPSAxLjA7CisgICAgfQorICAgIGVsc2UgaWYgKGZsb2F0cGFydCA8IDApIHsKKyAgICAgICAgZmxvYXRwYXJ0ICs9IGRlbm9taW5hdG9yOworICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICB9CisgICAgYXNzZXJ0KDAuMCA8PSBmbG9hdHBhcnQgJiYgZmxvYXRwYXJ0IDwgZGVub21pbmF0b3IpOworCisgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAqbnVtZXJhdG9yID0gKGxvbmcpZmxvYXRwYXJ0OworCisgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludAogX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gKGRvdWJsZSlMT05HX01BWCk7CisKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OwotCi0gICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOwotICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OwotICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKLSAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSAwLjA7Ci0gICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBmbG9vcihmbG9hdHBhcnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKLSAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKLSAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKLSAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRvdWJsZSBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICByZXR1cm4gX1B5VGltZV9Eb3VibGVUb0Rlbm9taW5hdG9yKGQsIHNlYywgbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yLCByb3VuZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQpAQCAtMTEyLDEzICsxNTAsMTIgQEAKIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIGRvdWJsZSBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQ7CiAKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKICAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CiAKICAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKQEAgLTE0MSwxNCArMTc4LDIwIEBACiBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm5zZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSwgcm91bmQpOworICAgIGludCByZXM7CisgICAgcmVzID0gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBhc3NlcnQoMCA8PSAqbnNlYyAmJiAqbnNlYyA8IFNFQ19UT19OUyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogaW50CiBfUHlUaW1lX09iamVjdFRvVGltZXZhbChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqdXNlYywKICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCB1c2VjLCAxZTYsIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKnVzZWMgJiYgKnVzZWMgPCBTRUNfVE9fVVMpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjIsMjEgKzIwNSwyNCBAQAogX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcykKIHsKICAgICBfUHlUaW1lX3QgdDsKKyAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzOwogICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKICAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKICAgICAgICBiaXRzKS4gKi8KLSAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQotICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOwotICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgUHlfQlVJTERfQVNTRVJUKElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICBhc3NlcnQoKHQgPj0gMCAmJiB0IDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAodCA8IDAgJiYgdCA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgKj0gU0VDX1RPX05TOwogICAgIHJldHVybiB0OwogfQogCiBfUHlUaW1lX3QKLV9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucykKK19QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucykKIHsKICAgICBfUHlUaW1lX3QgdDsKLSAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotICAgIHQgPSBQeV9TQUZFX0RPV05DQVNUKG5zLCBQWV9MT05HX0xPTkcsIF9QeVRpbWVfdCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgbG9uZyBsb25nLCBfUHlUaW1lX3QpOwogICAgIHJldHVybiB0OwogfQogCkBAIC0xODcsMTIgKzIzMywxNSBAQAogICAgIF9QeVRpbWVfdCB0OwogICAgIGludCByZXMgPSAwOwogCi0gICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKLSAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0cy0+dHZfc2VjKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYzsKKworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBTRUNfVE9fTlMpKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgcmVzID0gLTE7CiAgICAgfQorICAgIHQgPSB0ICogU0VDX1RPX05TOwogCiAgICAgdCArPSB0cy0+dHZfbnNlYzsKIApAQCAtMjA2LDEyICsyNTUsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHYtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHYtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gKF9QeVRpbWVfdCl0di0+dHZfdXNlYyAqIFVTX1RPX05TOwogCkBAIC0yMjEsNTAgKzI3Myw1MiBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKK19QeVRpbWVfRnJvbUZsb2F0T2JqZWN0KF9QeVRpbWVfdCAqdCwgZG91YmxlIHZhbHVlLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVuaXRfdG9fbnMpCit7CisgICAgZG91YmxlIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgZCA9IHZhbHVlOworICAgIGQgKj0gKGRvdWJsZSl1bml0X3RvX25zOworICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKKworICAgICp0ID0gKF9QeVRpbWVfdClkOworICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAotICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCisgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQogewogICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKLSAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCi0gICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkLCBlcnI7Ci0KLSAgICAgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgZCAqPSB0b19uYW5vc2Vjb25kczsKLQotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQotICAgICAgICAgICAgZCA9IGNlaWwoZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKLQotICAgICAgICAqdCA9IChfUHlUaW1lX3QpZDsKLSAgICAgICAgZXJyID0gZCAtIChkb3VibGUpKnQ7Ci0gICAgICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7Ci0gICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBfUHlUaW1lX0Zyb21GbG9hdE9iamVjdCh0LCBkLCByb3VuZCwgdW5pdF90b19ucyk7CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBzZWM7CisgICAgICAgIGxvbmcgbG9uZyBzZWM7CisgICAgICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisKICAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKLSAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSNlbHNlCi0gICAgICAgIGxvbmcgc2VjOwotICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZW5kaWYKICAgICAgICAgaWYgKHNlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgKnQgPSBzZWMgKiB0b19uYW5vc2Vjb25kczsKLSAgICAgICAgaWYgKCp0IC8gdG9fbmFub3NlY29uZHMgIT0gc2VjKSB7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHNlYywgdW5pdF90b19ucykpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHVuaXRfdG9fbnM7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTI4NCwyNCArMzM4LDI4IEBACiBkb3VibGUKIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQogewotICAgIF9QeVRpbWVfdCBzZWMsIG5zOwotICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KLSAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KLSAgICBzZWMgPSB0IC8gU0VDX1RPX05TOwotICAgIG5zID0gdCAlIFNFQ19UT19OUzsKLSAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICBpZiAodCAlIFNFQ19UT19OUyA9PSAwKSB7CisgICAgICAgIF9QeVRpbWVfdCBzZWNzOworICAgICAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCisgICAgICAgICAgIDFlLTkgY2Fubm90IGJlIHN0b3JlZCBleGFjdGx5IGluIElFRUUgNjQtYml0LiAqLworICAgICAgICBzZWNzID0gdCAvIFNFQ19UT19OUzsKKyAgICAgICAgZCA9IChkb3VibGUpc2VjczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQgPSAoZG91YmxlKXQ7CisgICAgICAgIGQgLz0gMWU5OworICAgIH0KKyAgICByZXR1cm4gZDsKIH0KIAogUHlPYmplY3QgKgogX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOwotI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwotI2VuZGlmCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogfQogCiBzdGF0aWMgX1B5VGltZV90CkBAIC0zMDksNyArMzY3LDIwIEBACiAgICAgICAgICAgICAgICBjb25zdCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgYXNzZXJ0KGsgPiAxKTsKLSAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CisgICAgICAgIF9QeVRpbWVfdCB4LCByLCBhYnNfcjsKKyAgICAgICAgeCA9IHQgLyBrOworICAgICAgICByID0gdCAlIGs7CisgICAgICAgIGFic19yID0gUHlfQUJTKHIpOworICAgICAgICBpZiAoYWJzX3IgPiBrIC8gMiB8fCAoYWJzX3IgPT0gayAvIDIgJiYgKFB5X0FCUyh4KSAmIDEpKSkgeworICAgICAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgICAgICB4Kys7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeC0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgaWYgKHQgPj0gMCkKICAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CiAgICAgICAgIGVsc2UKQEAgLTM3Myw3ICs0NDQsNyBAQAogX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBfUHlUaW1lX3Qgc2Vjcywgc2VjczI7CiAgICAgaW50IHVzOwogICAgIGludCByZXM7CiAKQEAgLTM4Niw3ICs0NTcsOCBAQAogI2VuZGlmCiAgICAgdHYtPnR2X3VzZWMgPSB1czsKIAotICAgIGlmIChyZXMgPCAwIHx8IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgc2VjczIgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisgICAgaWYgKHJlcyA8IDAgfHwgc2VjczIgIT0gc2VjcykgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDI0LDYgKzQ5Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfS1FVRVVFKQogaW50CiBfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCkBAIC00MzcsMTMgKzUxMCwxMyBAQAogICAgICAgICBzZWNzIC09IDE7CiAgICAgfQogICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7Ci0gICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7Ci0gICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBhc3NlcnQoMCA8PSBuc2VjICYmIG5zZWMgPCBTRUNfVE9fTlMpOwogICAgIHRzLT50dl9uc2VjID0gbnNlYzsKIAotICAgIGFzc2VydCgwIDw9IHRzLT50dl9uc2VjICYmIHRzLT50dl9uc2VjIDw9IDk5OTk5OTk5OSk7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogI2VuZGlmCkBAIC01NTcsMTkgKzYzMCwyMCBAQAogICAgIHJldHVybiBweWdldHRpbWVvZmRheSh0LCBpbmZvLCAxKTsKIH0KIAotCiBzdGF0aWMgaW50CiBweW1vbm90b25pYyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvLCBpbnQgcmFpc2UpCiB7CiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFVMT05HTE9ORyByZXN1bHQ7CisgICAgVUxPTkdMT05HIHRpY2tzOworICAgIF9QeVRpbWVfdCB0OwogCiAgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CiAKLSAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworICAgIHRpY2tzID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpY2tzKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdGlja3M7CiAKLSAgICAqdHAgPSByZXN1bHQgKiBNU19UT19OUzsKLSAgICBpZiAoKnRwIC8gTVNfVE9fTlMgIT0gcmVzdWx0KSB7CisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIE1TX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3Nyw2ICs2NTEsNyBAQAogICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KKyAgICAqdHAgPSB0ICogTVNfVE9fTlM7CiAKICAgICBpZiAoaW5mbykgewogICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKQEAgLTY4OSw4ICs3NjQsNTcgQEAKICAgICBpZiAoX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKCZ0LCBOVUxMKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIC8qIGNoZWNrIHRoYXQgX1B5VGltZV9Gcm9tU2Vjb25kcygpIGNhbm5vdCBvdmVyZmxvdyAqLwotICAgIGFzc2VydChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKLSAgICBhc3NlcnQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorX1B5VGltZV9sb2NhbHRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gbG9jYWx0aW1lX3ModG0sICZ0KTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZWxzZSAvKiAhTVNfV0lORE9XUyAqLworICAgIGlmIChsb2NhbHRpbWVfcigmdCwgdG0pID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCitpbnQKK19QeVRpbWVfZ210aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGdtdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAoZ210aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCBkMjAzOTM5Li5jOTdkNWU3IDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDYgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2lmZGVmIE1TX1dJTkRPV1MKICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0CisgKiByZXF1aXJlZCB3aXRoIE1pbiBHVy4gKi8KKyMgIGluY2x1ZGUgPHdpbmNyeXB0Lmg+CiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4KICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSApAQCAtMzcsMTAgKzQwLDkgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgaWYgKHJhaXNlKQorICAgIGlmIChyYWlzZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICBlbHNlCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdpbmRvd3MgcmFuZG9tIEFQSSAoQ3J5cHRvR2VuKSIpOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTUzLDggKzU1LDkgQEAKIAogICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgewotICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkKKyAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHdoaWxlIChzaXplID4gMCkKQEAgLTYzLDExICs2Niw5IEBACiAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwotICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCB1c2luZyBDcnlwdG9HZW4pIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyICs9IGNodW5rOwpAQCAtNzYsODIgKzc3LDQ1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIElzc3VlICMyNTAwMzogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLSAqIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suICovCi0jZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKQotI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLQotLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgotCi0gICBJZiBmYXRhbCBpcyBub256ZXJvLCBjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICBvbiBlcnJvci4gKi8KLXN0YXRpYyBpbnQKLXB5X2dldGVudHJvcHkodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBmYXRhbCkKLXsKLSAgICB3aGlsZSAoc2l6ZSA+IDApIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKLSAgICAgICAgaW50IHJlczsKLQotICAgICAgICBpZiAoIWZhdGFsKSB7Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IGxlbjsKLSAgICAgICAgc2l6ZSAtPSBsZW47Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0jZWxzZQorI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KIAogI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKICNkZWZpbmUgUFlfR0VUUkFORE9NIDEKIAotLyogQ2FsbCBnZXRyYW5kb20oKQorLyogQ2FsbCBnZXRyYW5kb20oKSB0byBnZXQgcmFuZG9tIGJ5dGVzOgorCiAgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLSAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKLSAgICAgRVBFUk0pIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlsZWQgd2l0aCBFQUdBSU4gKHN5c3RlbSB1cmFuZG9tCi0gICAgIG5vdCBpbml0aWFsaXplZCB5ZXQpIGFuZCByYWlzZT0wLgorICAgLSBSZXR1cm4gMCBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0pLAorICAgICBvciBpZiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbGVkIHdpdGggRUFHQUlOIChzeXN0ZW0gdXJhbmRvbSBub3QKKyAgICAgaW5pdGlhbGl6ZWQgeWV0KSBhbmQgcmFpc2U9MC4KICAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKLSAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCi0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCisgICAgIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVJTlRSLCByYWlzZSBpcyBub24temVybyBhbmQgdGhlIFB5dGhvbiBzaWduYWwKKyAgICAgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLCBvciBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudAorICAgICBlcnJvci4KKworICAgZ2V0cmFuZG9tKCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuICovCiBzdGF0aWMgaW50Ci1weV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKICAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKICAgICAgICAxMS4zIG9yIG5ld2VyICovCiAgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOwotCi0gICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi0gICAgICogaW5pdGlhbGl6ZWQgdGhlIHVyYW5kb20gZW50cm9weSBwb29sLiBUaGlzIHdpbGwgY2F1c2UgUHl0aG9uCi0gICAgICogdG8gaGFuZyBvbiBzdGFydHVwIGlmIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MgLQotICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwotICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRlc3Q7CiAgICAgbG9uZyBuOwogCiAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgZmxhZ3MgPSBibG9ja2luZyA/IDAgOiBHUk5EX05PTkJMT0NLOworICAgIGRlc3QgPSBidWZmZXI7CiAgICAgd2hpbGUgKDAgPCBzaXplKSB7CiAjaWZkZWYgc3VuCiAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKLSAgICAgICAgICAgdG8gMTAyNCBieXRlcyAqLworICAgICAgICAgICB0byAxMDI0IGJ5dGVzLiBDYWxsIGl0IG11bHRpcGxlIHRpbWVzIGlmIG1vcmUgYnl0ZXMgYXJlCisgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KICAgICAgICAgbiA9IFB5X01JTihzaXplLCAxMDI0KTsKICNlbHNlCiAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgTE9OR19NQVgpOwpAQCAtMTYxLDczICsxMjUsMTQwIEBACiAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAotICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgICAgIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgICAgICAvKiBFTk9TWVM6IGdldHJhbmRvbSgpIHN5c2NhbGwgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsIChidXQKLSAgICAgICAgICAgICAqIG1heWJlIHN1cHBvcnRlZCBieSB0aGUgaG9zdCB3aGljaCBidWlsdCBQeXRob24pLiBFUEVSTToKLSAgICAgICAgICAgICAqIGdldHJhbmRvbSgpIHN5c2NhbGwgYmxvY2tlZCBieSBTRUNDT01QIG9yIHNvbWV0aGluZyBlbHNlLiAqLworICAgICAgICAgICAgLyogRU5PU1lTOiB0aGUgc3lzY2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCisgICAgICAgICAgICAgICBvciBzb21ldGhpbmcgZWxzZS4gKi8KICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gSW4gdGhpcyBjYXNlLCBmYWxsIGJhY2sgb24KLSAgICAgICAgICAgICAgICAgICByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLgogCi0gICAgICAgICAgICAgICAgICAgTm90ZTogSW4gdGhpcyBjYXNlIHRoZSBkYXRhIHJlYWQgd2lsbCBub3QgYmUgcmFuZG9tIHNvCi0gICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLiBSZXRhaW5pbmcKLSAgICAgICAgICAgICAgICAgICB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0gICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKKyAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtIHVyYW5kb20KKyAgICAgICAgICAgICAgIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBGb3IgX1B5UmFuZG9tX0luaXQoKSwgd2UgaWdub3JlIHRoZQorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0OgorICAgICAgICAgICAgICAgc2VlIHRoZSBQRVAgNTI0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgZGVzdCArPSBuOwogICAgICAgICBzaXplIC09IG47CiAgICAgfQogICAgIHJldHVybiAxOwogfQotI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKQorI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKKworLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKToKKworICAgLSBSZXR1cm4gMSBvbiBzdWNjZXNzCisgICAtIFJldHVybiAwIGlmIGdldGVudHJvcHkoKSBzeXNjYWxsIGlzIG5vdCBhdmFpbGFibGUgKGZhaWxlZCB3aXRoIEVOT1NZUyBvcgorICAgICBFUEVSTSkuCisgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6CisgICAgIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCisgICAgIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgb3IgaWYgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50CisgICAgIGVycm9yLgorCisgICBnZXRlbnRyb3B5KCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuICovCitzdGF0aWMgaW50CitweV9nZXRlbnRyb3B5KGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCit7CisgICAgLyogSXMgZ2V0ZW50cm9weSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmCisgICAgICAgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTS4gKi8KKyAgICBzdGF0aWMgaW50IGdldGVudHJvcHlfd29ya3MgPSAxOworCisgICAgaWYgKCFnZXRlbnRyb3B5X3dvcmtzKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHdoaWxlIChzaXplID4gMCkgeworICAgICAgICAvKiBnZXRlbnRyb3B5KCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAgdG8gMjU2IGJ5dGVzLiBDYWxsIGl0CisgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGlmIG1vcmUgYnl0ZXMgYXJlIHJlcXVlc3RlZC4gKi8KKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwuCisgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCisgICAgICAgICAgICAgICBvciBzb21ldGhpbmcgZWxzZS4gKi8KKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKKyAgICAgICAgICAgICAgICBnZXRlbnRyb3B5X3dvcmtzID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0ZW50cm9weSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBidWZmZXIgKz0gbGVuOworICAgICAgICBzaXplIC09IGxlbjsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikgKi8KKwogCiBzdGF0aWMgc3RydWN0IHsKICAgICBpbnQgZmQ7CkBAIC0yMzUsMTM2ICsyNjYsMTIzIEBACiAgICAgaW5vX3Qgc3RfaW5vOwogfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogCisvKiBSZWFkIHJhbmRvbSBieXRlcyBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlOgogCi0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCisgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcgogCi0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLXN0YXRpYyB2b2lkCi1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotewotICAgIGludCBmZDsKLSAgICBQeV9zc2l6ZV90IG47CisgICBQb3NzaWJsZSBjYXVzZXMgb2YgZXJyb3JzOgogCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7CisgICAtIG9wZW4oKSBmYWlsZWQgd2l0aCBFTk9FTlQsIEVOWElPLCBFTk9ERVYsIEVBQ0NFUzogdGhlIC9kZXYvdXJhbmRvbSBkZXZpY2UKKyAgICAgd2FzIG5vdCBmb3VuZC4gRm9yIGV4YW1wbGUsIGl0IHdhcyByZW1vdmVkIG1hbnVhbGx5IG9yIG5vdCBleHBvc2VkIGluIGEKKyAgICAgY2hyb290IG9yIGNvbnRhaW5lci4KKyAgIC0gb3BlbigpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50IGVycm9yCisgICAtIGZzdGF0KCkgZmFpbGVkCisgICAtIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMAogCi0jaWZkZWYgUFlfR0VUUkFORE9NCi0gICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCi0jZW5kaWYKKyAgIHJlYWQoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KIAotICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIG9wZW4gL2Rldi91cmFuZG9tIik7Ci0gICAgfQorICAgVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZGV2aWNlIGlzIGtlcHQgb3BlbiBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIHVzaW5nCisgICBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4gcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzOgorICAgc2VlIHRoZSBpc3N1ZSAjMTg3NTYuCiAKLSAgICB3aGlsZSAoMCA8IHNpemUpCi0gICAgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisgICBzdF9kZXYgYW5kIHN0X2lubyBmaWVsZHMgb2YgdGhlIGZpbGUgZGVzY3JpcHRvciAoZnJvbSBmc3RhdCgpKSBhcmUgY2FjaGVkIHRvCisgICBjaGVjayBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyByZXBsYWNlZCBieSBhIGRpZmZlcmVudCBmaWxlICh3aGljaCBpcworICAgbGlrZWx5IGEgYnVnIGluIHRoZSBhcHBsaWNhdGlvbik6IHNlZSB0aGUgaXNzdWUgIzIxMjA3LgogCi0gICAgICAgIGlmIChuIDw9IDApIHsKLSAgICAgICAgICAgIC8qIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMCBieXRlcyAqLwotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJlYWQgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlciArPSBuOwotICAgICAgICBzaXplIC09IG47Ci0gICAgfQotICAgIGNsb3NlKGZkKTsKLX0KLQotLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLSAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgotCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIElmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2FzIGNsb3NlZCBvciByZXBsYWNlZCwgb3BlbiBhIG5ldyBmaWxlIGRlc2NyaXB0b3IKKyAgIGJ1dCBkb24ndCBjbG9zZSB0aGUgb2xkIGZpbGUgZGVzY3JpcHRvcjogaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZworICAgaW1wb3J0YW50IGZvciBzb21lIHRoaXJkLXBhcnR5IGNvZGUuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogewogICAgIGludCBmZDsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpbnQgcmVzOwotI2VuZGlmCiAKLSAgICBpZiAoc2l6ZSA8PSAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKIAotI2lmZGVmIFBZX0dFVFJBTkRPTQotICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHJlcyA9PSAxKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCi0jZW5kaWYKLQotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwotICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQotICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0gICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKLSAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAotICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLwotICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOworICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCisgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQorICAgICAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgorICAgICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgeworICAgICAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAorICAgICAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCisgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCisgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCisgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBvdGhlcndpc2UsIGtlZXAgdGhlIE9TRXJyb3IgZXhjZXB0aW9uIHJhaXNlZCBieSBfUHlfb3BlbigpICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgeworICAgICAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKKyAgICAgICAgICAgICAgICAgICBub3QgaG9sZGluZyB0aGUgR0lMLCBrZWVwIGl0LiAqLworICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9pbm8gPSBzdC5zdF9pbm87CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7CisgICAgICAgICAgICBpZiAobiA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgICAgIHNpemUgLT0gbjsKKyAgICAgICAgfSB3aGlsZSAoMCA8IHNpemUpOwogICAgIH0KLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyAgICAgICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CiAgICAgICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKLSAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi91cmFuZG9tIChvciBlcXVpdmFsZW50KSBub3QgZm91bmQiKTsKLSAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgICAgICAvKiB1cmFuZG9tX2ZkIHdhcyBpbml0aWFsaXplZCBieSBhbm90aGVyIHRocmVhZCB3aGlsZSB3ZSB3ZXJlCi0gICAgICAgICAgICAgICBub3QgaG9sZGluZyB0aGUgR0lMLCBrZWVwIGl0LiAqLwotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgeworCisgICAgICAgIHdoaWxlICgwIDwgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7CisgICAgICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisKKyAgICAgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBzdG9wIG9uIGVycm9yIG9yIGlmIHJlYWQoc2l6ZSkgcmV0dXJuZWQgMCAqLwogICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9pbm8gPSBzdC5zdF9pbm87Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOwogICAgICAgICB9CisgICAgICAgIGNsb3NlKGZkKTsKICAgICB9Ci0KLSAgICBkbyB7Ci0gICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICBpZiAobiA9PSAtMSkgewotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotICAgICAgICAgICAgICAgICAgICBzaXplKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1ZmZlciArPSBuOwotICAgICAgICBzaXplIC09IG47Ci0gICAgfSB3aGlsZSAoMCA8IHNpemUpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3Niw4ICszOTQsOCBAQAogICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAKLSNlbmRpZgogCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGEgbGluZWFyIGNvbmdydWVudAogICAgZ2VuZXJhdG9yIChMQ0cpOgpAQCAtNDAwLDI5ICs0MTgsMTE5IEBACiAgICAgfQogfQogCisvKiBSZWFkIHJhbmRvbSBieXRlczoKKworICAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzCisgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKKworICAgVXNlZCBzb3VyY2VzIG9mIGVudHJvcHkgb3JkZXJlZCBieSBwcmVmZXJlbmNlLCBwcmVmZXJyZWQgc291cmNlIGZpcnN0OgorCisgICAtIENyeXB0R2VuUmFuZG9tKCkgb24gV2luZG93cworICAgLSBnZXRyYW5kb20oKSBmdW5jdGlvbiAoZXg6IExpbnV4IGFuZCBTb2xhcmlzKTogY2FsbCBweV9nZXRyYW5kb20oKQorICAgLSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gKGV4OiBPcGVuQlNEKTogY2FsbCBweV9nZXRlbnRyb3B5KCkKKyAgIC0gL2Rldi91cmFuZG9tIGRldmljZQorCisgICBSZWFkIGZyb20gdGhlIC9kZXYvdXJhbmRvbSBkZXZpY2UgaWYgZ2V0cmFuZG9tKCkgb3IgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uCisgICBpcyBub3QgYXZhaWxhYmxlIG9yIGRvZXMgbm90IHdvcmsuCisKKyAgIFByZWZlciBnZXRyYW5kb20oKSBvdmVyIGdldGVudHJvcHkoKSBiZWNhdXNlIGdldHJhbmRvbSgpIHN1cHBvcnRzIGJsb2NraW5nCisgICBhbmQgbm9uLWJsb2NraW5nIG1vZGU6IHNlZSB0aGUgUEVQIDUyNC4gUHl0aG9uIHJlcXVpcmVzIG5vbi1ibG9ja2luZyBSTkcgYXQKKyAgIHN0YXJ0dXAgdG8gaW5pdGlhbGl6ZSBpdHMgaGFzaCBzZWNyZXQsIGJ1dCBvcy51cmFuZG9tKCkgbXVzdCBibG9jayB1bnRpbCB0aGUKKyAgIHN5c3RlbSB1cmFuZG9tIGlzIGluaXRpYWxpemVkIChhdCBsZWFzdCBvbiBMaW51eCAzLjE3IGFuZCBuZXdlcikuCisKKyAgIFByZWZlciBnZXRyYW5kb20oKSBhbmQgZ2V0ZW50cm9weSgpIG92ZXIgcmVhZGluZyBkaXJlY3RseSAvZGV2L3VyYW5kb20KKyAgIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgZmlsZSBkZXNjcmlwdG9ycyBhbmQgc28gYXZvaWQgRU5GSUxFIG9yCisgICBFTUZJTEUgZXJyb3JzICh0b28gbWFueSBvcGVuIGZpbGVzKTogc2VlIHRoZSBpc3N1ZSAjMTg3NTYuCisKKyAgIE9ubHkgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIHN1cHBvcnRzIG5vbi1ibG9ja2luZyBtb2RlLgorCisgICBPbmx5IHVzZSBSTkcgcnVubmluZyBpbiB0aGUga2VybmVsLiBUaGV5IGFyZSBtb3JlIHNlY3VyZSBiZWNhdXNlIGl0IGlzCisgICBoYXJkZXIgdG8gZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBhIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwgbGFuZCB0aGFuIGEKKyAgIFJORyBydW5uaW5nIGluIHRoZSB1c2VyIGxhbmQuIFRoZSBrZXJuZWwgaGFzIGEgZGlyZWN0IGFjY2VzcyB0byB0aGUgaGFyZHdhcmUKKyAgIGFuZCBoYXMgYWNjZXNzIHRvIGhhcmR3YXJlIFJORywgdGhleSBhcmUgdXNlZCBhcyBlbnRyb3B5IHNvdXJjZXMuCisKKyAgIE5vdGU6IHRoZSBPcGVuU1NMIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb24gZG9lcyBub3QgYXV0b21hdGljYWxseSByZXNlZWQKKyAgIGl0cyBSTkcgb24gZm9yaygpLCB0d28gY2hpbGQgcHJvY2Vzc2VzICh3aXRoIHRoZSBzYW1lIHBpZCkgZ2VuZXJhdGUgdGhlIHNhbWUKKyAgIHJhbmRvbSBudW1iZXJzOiBzZWUgaXNzdWUgIzE4NzQ3LiBLZXJuZWwgUk5HcyBkb24ndCBoYXZlIHRoaXMgaXNzdWUsCisgICB0aGV5IGhhdmUgYWNjZXNzIHRvIGdvb2QgcXVhbGl0eSBlbnRyb3B5IHNvdXJjZXMuCisKKyAgIElmIHJhaXNlIGlzIHplcm86CisKKyAgIC0gRG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yCisgICAtIERvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciAoZG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSkgaWYKKyAgICAgYSBmdW5jdGlvbiBmYWlscyB3aXRoIEVJTlRSOiByZXRyeSBkaXJlY3RseSB0aGUgaW50ZXJydXB0ZWQgZnVuY3Rpb24KKyAgIC0gRG9uJ3QgcmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgZnVuY3Rpb25zLgorKi8KK3N0YXRpYyBpbnQKK3B5dXJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCit7CisjaWYgZGVmaW5lZChQWV9HRVRSQU5ET00pIHx8IGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICBpbnQgcmVzOworI2VuZGlmCisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisKKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQorI2lmZGVmIFBZX0dFVFJBTkRPTQorICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIGJsb2NraW5nLCByYWlzZSk7CisjZWxzZQorICAgIHJlcyA9IHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCByYWlzZSk7CisjZW5kaWYKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZXMgPT0gMSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogZ2V0cmFuZG9tKCkgb3IgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGU6IGZhaWxlZCB3aXRoCisgICAgICAgRU5PU1lTIG9yIEVQRVJNLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tIC9kZXYvdXJhbmRvbS4gKi8KKyNlbmRpZgorCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOworI2VuZGlmCit9CisKIC8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCiAgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCiAgICBleGNlcHQgbG9uZyBsaXZpbmcgcHJpdmF0ZSBrZXlzIGZvciBhc3ltbWV0cmljIGVuY3J5cHRpb24uCiAKLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIHVzZWQgaW4gYmxvY2tpbmcgbW9kZToKKyAgIGJsb2NrIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKDEyOCBiaXRzIGFyZQorICAgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIGludAogX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSwgMSk7Cit9CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotICAgIHJldHVybiBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgMCk7Ci0jZWxzZQotICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCisgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBub3Qgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KKworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIgKHdoZW4gZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkKSwgaWYgdGhlIHN5c3RlbQorICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LCB0aGUgZnVuY3Rpb24gcmV0dXJucyAid2VhayIgZW50cm9weSByZWFkCisgICBmcm9tIC9kZXYvdXJhbmRvbS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCwgMSk7CiB9CiAKIHZvaWQKQEAgLTQzMSw3ICs1MzksNyBAQAogICAgIGNoYXIgKmVudjsKICAgICB1bnNpZ25lZCBjaGFyICpzZWNyZXQgPSAodW5zaWduZWQgY2hhciAqKSZfUHlfSGFzaFNlY3JldC51YzsKICAgICBQeV9zc2l6ZV90IHNlY3JldF9zaXplID0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpOwotICAgIGFzc2VydChzZWNyZXRfc2l6ZSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpID09IHNpemVvZihfUHlfSGFzaFNlY3JldC51YykpOwogCiAgICAgaWYgKF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CkBAIC00NjMsMTMgKzU3MSwxNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICAgICAgKHZvaWQpcHlfZ2V0ZW50cm9weShzZWNyZXQsIHNlY3JldF9zaXplLCAxKTsKLSNlbHNlCi0gICAgICAgIGRldl91cmFuZG9tX25vcmFpc2Uoc2VjcmV0LCBzZWNyZXRfc2l6ZSk7Ci0jZW5kaWYKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICAvKiBfUHlSYW5kb21fSW5pdCgpIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBQeXRob24gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4KKworICAgICAgICAgICBfUHlSYW5kb21fSW5pdCgpIG11c3Qgbm90IGJsb2NrIFB5dGhvbiBpbml0aWFsaXphdGlvbjogY2FsbAorICAgICAgICAgICBweXVyYW5kb20oKSBpcyBub24tYmxvY2tpbmcgbW9kZSAoYmxvY2tpbmc9MCk6IHNlZSB0aGUgUEVQIDUyNC4gKi8KKyAgICAgICAgcmVzID0gcHl1cmFuZG9tKHNlY3JldCwgc2VjcmV0X3NpemUsIDAsIDApOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC00ODEsOCArNTkzLDYgQEAKICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKICAgICAgICAgaENyeXB0UHJvdiA9IDA7CiAgICAgfQotI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotICAgIC8qIG5vdGhpbmcgdG8gY2xlYW4gKi8KICNlbHNlCiAgICAgZGV2X3VyYW5kb21fY2xvc2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLmJlMjczN2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjU0LDcgKzI1Miw3IEBACiAgICAgICAgIGNoYXIgKnN0cmluZzsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICAgICAgc3RyaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUodiwgJmxlbik7CisgICAgICAgIHN0cmluZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHYsICZsZW4pOwogICAgICAgICBpZiAoc3RyaW5nID09IE5VTEwgfHwgbGVuICE9IDEpIHsKICAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yNjYsMjcgKzI2NCwyNSBAQAogICAgIGNhc2UgVF9TVFJJTkdfSU5QTEFDRToKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRvbmx5IGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gLTE7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6ewotICAgICAgICBQWV9MT05HX0xPTkcgdmFsdWU7Ci0gICAgICAgICooUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZyh2KTsKKyAgICAgICAgbG9uZyBsb25nIHZhbHVlOworICAgICAgICAqKGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgICAgIGlmICgodmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBUX1VMT05HTE9ORzp7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgICAgICAvKiA/Pz8gUHlMb25nX0FzTG9uZ0xvbmcgYWNjZXB0cyBhbiBpbnQsIGJ1dCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCiAgICAgICAgICAgICBkb2Vzbid0ID8/PyAqLwogICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmcodik7Ci0gICAgICAgIGlmICgodmFsdWUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1lbWJlcmRlc2NyIHR5cGUgZm9yICVzIiwgbC0+bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IGFkY2EyZGEuLjYxNjVjZmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC02LDE2ICs2LDIyIEBACiAKIC8qIGVycm9yIHN0cmluZ3MgdXNlZCBmb3Igd2FybmluZ3MgKi8KICNkZWZpbmUgR0xPQkFMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgogCiAjZGVmaW5lIE5PTkxPQ0FMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBHTE9CQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9VU0UgXAotIm5hbWUgJyUuNDAwcycgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKworI2RlZmluZSBHTE9CQUxfQU5OT1QgXAorImFubm90YXRlZCBuYW1lICclVScgY2FuJ3QgYmUgZ2xvYmFsIgorCisjZGVmaW5lIE5PTkxPQ0FMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIG5vbmxvY2FsIgogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKQEAgLTYzLDYgKzY5LDcgQEAKICAgICAgICAgc3RlLT5zdGVfbmVzdGVkID0gMTsKICAgICBzdGUtPnN0ZV9jaGlsZF9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV9nZW5lcmF0b3IgPSAwOworICAgIHN0ZS0+c3RlX2Nvcm91dGluZSA9IDA7CiAgICAgc3RlLT5zdGVfcmV0dXJuc192YWx1ZSA9IDA7CiAgICAgc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSA9IDA7CiAKQEAgLTE2MCw3ICsxNjcsNiBAQAogfTsKIAogc3RhdGljIGludCBzeW10YWJsZV9hbmFseXplKHN0cnVjdCBzeW10YWJsZSAqc3QpOwotc3RhdGljIGludCBzeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2Jsb2NrX3R5IGJsb2NrLCB2b2lkICphc3QsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0KTsKQEAgLTM3OCw3ICszODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDIpKSk7CiAKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9ICAgCisgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIkJVRzogaW50ZXJuYWwgZGlyZWN0aXZlIGJvb2trZWVwaW5nIGJyb2tlbiIpOwpAQCAtNjUyLDcgKzY1OCw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAvKiBIYW5kbGUgZ2xvYmFsIHN5bWJvbCAqLwotICAgICAgICBpZiAoIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgeworICAgICAgICBpZiAoYm91bmQgJiYgIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgY29udGludWU7ICAgICAgIC8qIGl0J3MgYSBnbG9iYWwgKi8KICAgICAgICAgfQpAQCAtOTA2LDI3ICs5MTIsNiBAQAogICAgIHJldHVybiByOwogfQogCi0KLXN0YXRpYyBpbnQKLXN5bXRhYmxlX3dhcm4oc3RydWN0IHN5bXRhYmxlICpzdCwgY2hhciAqbXNnLCBpbnQgbGluZW5vKQotewotICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobXNnKTsKLSAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5RXhjX1N5bnRheFdhcm5pbmcsIG1lc3NhZ2UsIHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgTlVMTCwgTlVMTCkgPCAwKSAgICAgewotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5bnRheFdhcm5pbmcpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsIHN0LT5zdF9jdXItPnN0ZV9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29sX29mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKLSAgICByZXR1cm4gMTsKLX0KLQogLyogc3ltdGFibGVfZW50ZXJfYmxvY2soKSBnZXRzIGEgcmVmZXJlbmNlIHZpYSBzdGVfbmV3LgogICAgVGhpcyByZWZlcmVuY2UgaXMgcmVsZWFzZWQgd2hlbiB0aGUgYmxvY2sgaXMgZXhpdGVkLCB2aWEgdGhlIERFQ1JFRgogICAgaW4gc3ltdGFibGVfZXhpdF9ibG9jaygpLgpAQCAtMTIwMSw2ICsxMTg2LDQzIEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5Bc3NpZ24udGFyZ2V0cyk7CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzc2lnbi52YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgPT0gTmFtZV9raW5kKSB7CisgICAgICAgICAgICBleHByX3R5IGVfbmFtZSA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICBpZiAoY3VyIDwgMCkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjdXIgJiAoREVGX0dMT0JBTCB8IERFRl9OT05MT0NBTCkpCisgICAgICAgICAgICAgICAgJiYgcy0+di5Bbm5Bc3NpZ24uc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgJiBERUZfR0xPQkFMID8gR0xPQkFMX0FOTk9UIDogTk9OTE9DQUxfQU5OT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfbmFtZS0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJgorICAgICAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfQU5OT1QgfCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udmFsdWUKKyAgICAgICAgICAgICAgICAgICAgJiYgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIGVfbmFtZS0+di5OYW1lLmlkLCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICB9CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlKSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkF1Z0Fzc2lnbi50YXJnZXQpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udmFsdWUpOwpAQCAtMTI1OCwyMSArMTI4MCwyMSBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX1VTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgYnVmLCBzLT5saW5lbm8pKQotICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIGlmIChjdXIgJiAoREVGX0xPQ0FMIHwgVVNFIHwgREVGX0FOTk9UKSkgeworICAgICAgICAgICAgICAgIGNoYXIqIG1zZzsKKyAgICAgICAgICAgICAgICBpZiAoY3VyICYgVVNFKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FGVEVSX0FTU0lHTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2csIG5hbWUpOworICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uT2JqZWN0KHN0LT5zdF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9HTE9CQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTI4OSwyMSArMTMxMSwyMCBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9BU1NJR04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQU5OT1Q7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgIC8qIERFRl9MT0NBTCAqLworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfTk9OTE9DQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTM0MSw2ICsxMzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKICAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKQEAgLTE0MzYsNyArMTQ1OCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXdhaXRfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOwotICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwpAQCAtMTQ0Nyw2ICsxNDY5LDE1IEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5DYWxsLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVFfV0lUSF9OVUxMKHN0LCBrZXl3b3JkLCBlLT52LkNhbGwua2V5d29yZHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgY2FzZSBTdHJfa2luZDoKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CkBAIC0xNjQ3LDYgKzE2NzgsOSBAQAogICAgIFZJU0lUKHN0LCBleHByLCBsYy0+dGFyZ2V0KTsKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPml0ZXIpOwogICAgIFZJU0lUX1NFUShzdCwgZXhwciwgbGMtPmlmcyk7CisgICAgaWYgKGxjLT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE2OTksNiArMTczMyw5IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gaXNfZ2VuZXJhdG9yOworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOworICAgIH0KICAgICAvKiBPdXRlcm1vc3QgaXRlciBpcyByZWNlaXZlZCBhcyBhbiBhcmd1bWVudCAqLwogICAgIGlmICghc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0LCAwKSkgewogICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IDFkYzdkN2MuLjUyMDM0ZmYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KQEAgLTMzLDcgKzM0LDYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dGYsICZQeUlkX2VuY29kaW5nKTsKICAgICBpZiAoc3Rkb3V0X2VuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKKyAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gUHlVbmljb2RlX0FzVVRGOChzdGRvdXRfZW5jb2RpbmcpOwogICAgIGlmIChzdGRvdXRfZW5jb2Rpbmdfc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTMxMSw2ICszMTEsMjMgQEAKICk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgImZpbGVzeXN0ZW0gZW5jb2RpbmcgaXMgbm90IGluaXRpYWxpemVkIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzX2RvYywKKyAgICAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpIC0+IHN0cmluZ1xuXAorXG5cCitSZXR1cm4gdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUgZmlsZW5hbWVzIGluXG5cCitvcGVyYXRpbmcgc3lzdGVtIGZpbGVuYW1lcy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgogc3lzX2ludGVybihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnM7CkBAIC0zNDYsOCArMzYzLDEwIEBACiBzdGF0aWMgaW50CiB0cmFjZV9pbml0KHZvaWQpCiB7Ci0gICAgc3RhdGljIGNoYXIgKndoYXRuYW1lc1s3XSA9IHsiY2FsbCIsICJleGNlcHRpb24iLCAibGluZSIsICJyZXR1cm4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNfY2FsbCIsICJjX2V4Y2VwdGlvbiIsICJjX3JldHVybiJ9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgd2hhdG5hbWVzWzddID0geworICAgICAgICAiY2FsbCIsICJleGNlcHRpb24iLCAibGluZSIsICJyZXR1cm4iLAorICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIgorICAgIH07CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkgewpAQCAtMzY2LDM0ICszODUsMjUgQEAKIGNhbGxfdHJhbXBvbGluZShQeU9iamVjdCogY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUsIGludCB3aGF0LCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICphcmdzOwotICAgIFB5T2JqZWN0ICp3aGF0c3RyOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnN0YWNrWzNdOwogCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDMpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgaWYgKFB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yKGZyYW1lKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yKGZyYW1lKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIFB5X0lOQ1JFRihmcmFtZSk7Ci0gICAgd2hhdHN0ciA9IHdoYXRzdHJpbmdzW3doYXRdOwotICAgIFB5X0lOQ1JFRih3aGF0c3RyKTsKLSAgICBpZiAoYXJnID09IE5VTEwpCi0gICAgICAgIGFyZyA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKGFyZyk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QgKilmcmFtZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB3aGF0c3RyKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGFyZyk7CisgICAgc3RhY2tbMF0gPSAoUHlPYmplY3QgKilmcmFtZTsKKyAgICBzdGFja1sxXSA9IHdoYXRzdHJpbmdzW3doYXRdOworICAgIHN0YWNrWzJdID0gKGFyZyAhPSBOVUxMKSA/IGFyZyA6IFB5X05vbmU7CiAKICAgICAvKiBjYWxsIHRoZSBQeXRob24tbGV2ZWwgZnVuY3Rpb24gKi8KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChjYWxsYmFjaywgYXJncyk7Ci0gICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgUHlUcmFjZUJhY2tfSGVyZShmcmFtZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxiYWNrLCBzdGFjaywgMyk7CiAKLSAgICAvKiBjbGVhbnVwICovCi0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGZyYW1lLCAxKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlUcmFjZUJhY2tfSGVyZShmcmFtZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM0LDEwICs0NDQsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChyZXN1bHQgIT0gUHlfTm9uZSkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IGZyYW1lLT5mX3RyYWNlOwotICAgICAgICBmcmFtZS0+Zl90cmFjZSA9IE5VTEw7Ci0gICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gcmVzdWx0OworICAgICAgICBQeV9YU0VUUkVGKGZyYW1lLT5mX3RyYWNlLCByZXN1bHQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC02MDIsMzMgKzYwOSw2IEBACiAKICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwogCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqCi1zeXNfc2V0dHNjZHVtcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IGJvb2w7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpzZXR0c2NkdW1wIiwgJmJvb2wpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYm9vbCkKLSAgICAgICAgdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXAgPSAxOwotICAgIGVsc2UKLSAgICAgICAgdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXAgPSAwOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLQotfQotCi1QeURvY19TVFJWQVIoc2V0dHNjZHVtcF9kb2MsCi0ic2V0dHNjZHVtcChib29sKVxuXAotXG5cCi1JZiB0cnVlLCB0ZWxsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gZHVtcCBWTSBtZWFzdXJlbWVudHMgdG9cblwKLXN0ZGVyci4gIElmIGZhbHNlLCB0dXJuIG9mZiBkdW1wLiAgVGhlIG1lYXN1cmVtZW50cyBhcmUgYmFzZWQgb24gdGhlXG5cCi1wcm9jZXNzb3IncyB0aW1lLXN0YW1wIGNvdW50ZXIuIgotKTsKLSNlbmRpZiAvKiBUU0MgKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19zZXRyZWN1cnNpb25saW1pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MTAsNiArNjkwLDExMyBAQAogKTsKIAogCitzdGF0aWMgUHlUeXBlT2JqZWN0IEFzeW5jR2VuSG9va3NUeXBlOworCitQeURvY19TVFJWQVIoYXN5bmNnZW5faG9va3NfZG9jLAorImFzeW5jZ2VuX2hvb2tzXG5cCitcblwKK0Egc3RydWN0IHNlcXVlbmNlIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhc3luaHJvbm91c1xuXAorZ2VuZXJhdG9ycyBob29rcy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkc1tdID0geworICAgIHsiZmlyc3RpdGVyIiwgIkhvb2sgdG8gaW50ZXJjZXB0IGZpcnN0IGl0ZXJhdGlvbiJ9LAorICAgIHsiZmluYWxpemVyIiwgIkhvb2sgdG8gaW50ZXJjZXB0IGZpbmFsaXphdGlvbiJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBhc3luY2dlbl9ob29rc19kZXNjID0geworICAgICJhc3luY2dlbl9ob29rcyIsICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICBhc3luY2dlbl9ob29rc19kb2MsICAgICAgICAvKiBkb2MgKi8KKyAgICBhc3luY2dlbl9ob29rc19maWVsZHMgLCAgICAvKiBmaWVsZHMgKi8KKyAgICAyCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmaXJzdGl0ZXIiLCAiZmluYWxpemVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpcnN0aXRlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKKyAgICAgICAgICAgIGFyZ3MsIGt3LCAifE9PIiwga2V5d29yZHMsCisgICAgICAgICAgICAmZmlyc3RpdGVyLCAmZmluYWxpemVyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyICYmIGZpbmFsaXplciAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmaW5hbGl6ZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBmaW5hbGl6ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmaW5hbGl6ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoZmluYWxpemVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZmluYWxpemVyID09IFB5X05vbmUpIHsKKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihOVUxMKTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyICYmIGZpcnN0aXRlciAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmaXJzdGl0ZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBmaXJzdGl0ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmaXJzdGl0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoZmlyc3RpdGVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZmlyc3RpdGVyID09IFB5X05vbmUpIHsKKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihOVUxMKTsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldF9hc3luY2dlbl9ob29rc19kb2MsCisic2V0X2FzeW5jZ2VuX2hvb2tzKCosIGZpcnN0aXRlcj1Ob25lLCBmaW5hbGl6ZXI9Tm9uZSlcblwKK1xuXAorU2V0IGEgZmluYWxpemVyIGZvciBhc3luYyBnZW5lcmF0b3JzIG9iamVjdHMuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmZpcnN0aXRlciA9IF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIoKTsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpbmFsaXplcigpOworCisgICAgcmVzID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJkFzeW5jR2VuSG9va3NUeXBlKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZpcnN0aXRlciA9PSBOVUxMKSB7CisgICAgICAgIGZpcnN0aXRlciA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKGZpbmFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIGZpbmFsaXplciA9IFB5X05vbmU7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIGZpcnN0aXRlcik7CisKKyAgICBQeV9JTkNSRUYoZmluYWxpemVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMSwgZmluYWxpemVyKTsKKworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRfYXN5bmNnZW5faG9va3NfZG9jLAorImdldF9hc3luY2dlbl9ob29rcygpXG5cCitcblwKK1JldHVybiBhIG5hbWVkdHVwbGUgb2YgaW5zdGFsbGVkIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzIGhvb2tzIFwKKyhmaXJzdGl0ZXIsIGZpbmFsaXplcikuIgorKTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEhhc2hfSW5mb1R5cGU7CiAKIFB5RG9jX1NUUlZBUihoYXNoX2luZm9fZG9jLApAQCAtODA3LDEwICs4OTQsMTEgQEAKIFRoZSBtZW1iZXJzIGFyZSBuYW1lZDogbWFqb3IsIG1pbm9yLCBidWlsZCwgcGxhdGZvcm0sIHNlcnZpY2VfcGFjayxcblwKIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQgcHJvZHVjdF90eXBlLiBGb3JcblwKIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIG9ubHkgdGhlIGZpcnN0IDUgaXRlbXMgYXJlIGF2YWlsYWJsZSBieSBpbmRleGluZy5cblwKLUFsbCBlbGVtZW50cyBhcmUgbnVtYmVycywgZXhjZXB0IHNlcnZpY2VfcGFjayB3aGljaCBpcyBhIHN0cmluZy4gUGxhdGZvcm1cblwKLW1heSBiZSAwIGZvciB3aW4zMnMsIDEgZm9yIFdpbmRvd3MgOXgvTUUsIDIgZm9yIFdpbmRvd3MgTlQvMjAwMC9YUC9WaXN0YS83LFxuXAotMyBmb3IgV2luZG93cyBDRS4gUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpblxuXAotY29udHJvbGxlciwgMyBmb3IgYSBzZXJ2ZXIuIgorQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIGFuZCBwbGF0Zm9ybV90eXBlIHdoaWNoIGFyZVxuXAorc3RyaW5ncywgYW5kIHBsYXRmb3JtX3ZlcnNpb24gd2hpY2ggaXMgYSAzLXR1cGxlLiBQbGF0Zm9ybSBpcyBhbHdheXMgMi5cblwKK1Byb2R1Y3RfdHlwZSBtYXkgYmUgMSBmb3IgYSB3b3Jrc3RhdGlvbiwgMiBmb3IgYSBkb21haW4gY29udHJvbGxlciwgMyBmb3IgYVxuXAorc2VydmVyLiBQbGF0Zm9ybV92ZXJzaW9uIGlzIGEgMy10dXBsZSBjb250YWluaW5nIGEgdmVyc2lvbiBudW1iZXIgdGhhdCBpc1xuXAoraW50ZW5kZWQgZm9yIGlkZW50aWZ5aW5nIHRoZSBPUyByYXRoZXIgdGhhbiBmZWF0dXJlIGRldGVjdGlvbi4iCiApOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFdpbmRvd3NWZXJzaW9uVHlwZSA9IHswLCAwLCAwLCAwLCAwLCAwfTsKQEAgLTgyNSw3ICs5MTMsNyBAQAogICAgIHsic2VydmljZV9wYWNrX21pbm9yIiwgIlNlcnZpY2UgUGFjayBtaW5vciB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHsic3VpdGVfbWFzayIsICJCaXQgbWFzayBpZGVudGlmeWluZyBhdmFpbGFibGUgcHJvZHVjdCBzdWl0ZXMifSwKICAgICB7InByb2R1Y3RfdHlwZSIsICJTeXN0ZW0gcHJvZHVjdCB0eXBlIn0sCi0gICAgeyJfcGxhdGZvcm1fdmVyc2lvbiIsICJEaWFnbm9zdGljIHZlcnNpb24gbnVtYmVyIn0sCisgICAgeyJwbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKICAgICB7MH0KIH07CiAKQEAgLTkxMyw2ICsxMDAxLDI0IEBACiAKICNwcmFnbWEgd2FybmluZyhwb3ApCiAKK1B5RG9jX1NUUlZBUihlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MsCisiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKClcblwKK1xuXAorQ2hhbmdlcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIG1iY3M6cmVwbGFjZSBmb3IgY29uc2lzdGVuY3lcblwKK3dpdGggZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uIFNlZSBQRVAgNTI5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXAorXG5cCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGVmaW5pbmcgdGhlIFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HIFxuXAorZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIGxhdW5jaGluZyBQeXRob24uIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInJlcGxhY2UiOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAjaWZkZWYgSEFWRV9ETE9QRU4KQEAgLTExODksOCArMTI5NSwxMCBAQAogc3lzX2RlYnVnbWFsbG9jc3RhdHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogI2lmZGVmIFdJVEhfUFlNQUxMT0MKLSAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIH0KICNlbmRpZgogICAgIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhzdGRlcnIpOwogCkBAIC0xMjcwLDYgKzEzNzgsOCBAQAogI2VuZGlmCiAgICAgeyJnZXRmaWxlc3lzdGVtZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGluZywKICAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGluZ19kb2N9LAorICAgIHsgImdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMiLCAoUHlDRnVuY3Rpb24pc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMsCisgICAgIE1FVEhfTk9BUkdTLCBnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzX2RvYyB9LAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKICAgICB7ImdldG9iamVjdHMiLCAgICAgIF9QeV9HZXRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCkBAIC0xMjg1LDYgKzEzOTUsOCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7ImdldHdpbmRvd3N2ZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXR3aW5kb3dzdmVyc2lvbiwgTUVUSF9OT0FSR1MsCiAgICAgIGdldHdpbmRvd3N2ZXJzaW9uX2RvY30sCisgICAgeyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nLAorICAgICBNRVRIX05PQVJHUywgZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdfZG9jIH0sCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIHsiaW50ZXJuIiwgICAgICAgICAgc3lzX2ludGVybiwgICAgIE1FVEhfVkFSQVJHUywgaW50ZXJuX2RvY30sCiAgICAgeyJpc19maW5hbGl6aW5nIiwgICBzeXNfaXNfZmluYWxpemluZywgTUVUSF9OT0FSR1MsIGlzX2ZpbmFsaXppbmdfZG9jfSwKQEAgLTEzMDksOSArMTQyMSw2IEBACiAgICAgeyJnZXRwcm9maWxlIiwgICAgICBzeXNfZ2V0cHJvZmlsZSwgTUVUSF9OT0FSR1MsIGdldHByb2ZpbGVfZG9jfSwKICAgICB7InNldHJlY3Vyc2lvbmxpbWl0Iiwgc3lzX3NldHJlY3Vyc2lvbmxpbWl0LCBNRVRIX1ZBUkFSR1MsCiAgICAgIHNldHJlY3Vyc2lvbmxpbWl0X2RvY30sCi0jaWZkZWYgV0lUSF9UU0MKLSAgICB7InNldHRzY2R1bXAiLCBzeXNfc2V0dHNjZHVtcCwgTUVUSF9WQVJBUkdTLCBzZXR0c2NkdW1wX2RvY30sCi0jZW5kaWYKICAgICB7InNldHRyYWNlIiwgICAgICAgIHN5c19zZXR0cmFjZSwgTUVUSF9PLCBzZXR0cmFjZV9kb2N9LAogICAgIHsiZ2V0dHJhY2UiLCAgICAgICAgc3lzX2dldHRyYWNlLCBNRVRIX05PQVJHUywgZ2V0dHJhY2VfZG9jfSwKICAgICB7ImNhbGxfdHJhY2luZyIsIHN5c19jYWxsX3RyYWNpbmcsIE1FVEhfVkFSQVJHUywgY2FsbF90cmFjaW5nX2RvY30sCkBAIC0xMzIxLDYgKzE0MzAsMTAgQEAKICAgICAgc2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCiAgICAgeyJnZXRfY29yb3V0aW5lX3dyYXBwZXIiLCBzeXNfZ2V0X2Nvcm91dGluZV93cmFwcGVyLCBNRVRIX05PQVJHUywKICAgICAgZ2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCisgICAgeyJzZXRfYXN5bmNnZW5faG9va3MiLCAoUHlDRnVuY3Rpb24pc3lzX3NldF9hc3luY2dlbl9ob29rcywKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc2V0X2FzeW5jZ2VuX2hvb2tzX2RvY30sCisgICAgeyJnZXRfYXN5bmNnZW5faG9va3MiLCBzeXNfZ2V0X2FzeW5jZ2VuX2hvb2tzLCBNRVRIX05PQVJHUywKKyAgICAgZ2V0X2FzeW5jZ2VuX2hvb2tzX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE1MDEsMTQgKzE2MTQsMjEgQEAKIHZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGVcblwKICIKICkKLSNpZmRlZiBNU19XSU5ET1dTCisjaWZkZWYgTVNfQ09SRURMTAogLyogY29uY2F0ZW5hdGluZyBzdHJpbmcgaGVyZSAqLwogUHlEb2NfU1RSKAogImRsbGhhbmRsZSAtLSBbV2luZG93cyBvbmx5XSBpbnRlZ2VyIGhhbmRsZSBvZiB0aGUgUHl0aG9uIERMTFxuXAogd2ludmVyIC0tIFtXaW5kb3dzIG9ubHldIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBQeXRob24gRExMXG5cCiAiCiApCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIE1TX0NPUkVETEwgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCitQeURvY19TVFIoCisiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nIC0tIFtXaW5kb3dzIG9ubHldIFxuXAorIgorKQorI2VuZGlmCiBQeURvY19TVFIoCiAiX19zdGRpbl9fIC0tIHRoZSBvcmlnaW5hbCBzdGRpbjsgZG9uJ3QgdG91Y2ghXG5cCiBfX3N0ZG91dF9fIC0tIHRoZSBvcmlnaW5hbCBzdGRvdXQ7IGRvbid0IHRvdWNoIVxuXApAQCAtMTY4MCwxNSArMTgwMCwxMSBAQAogLyogc3lzLmltcGxlbWVudGF0aW9uIHZhbHVlcyAqLwogI2RlZmluZSBOQU1FICJjcHl0aG9uIgogY29uc3QgY2hhciAqX1B5U3lzX0ltcGxOYW1lID0gTkFNRTsKLSNkZWZpbmUgUVVPVEUoYXJnKSAjYXJnCi0jZGVmaW5lIFNUUklGWShuYW1lKSBRVU9URShuYW1lKQotI2RlZmluZSBNQUpPUiBTVFJJRlkoUFlfTUFKT1JfVkVSU0lPTikKLSNkZWZpbmUgTUlOT1IgU1RSSUZZKFBZX01JTk9SX1ZFUlNJT04pCisjZGVmaW5lIE1BSk9SIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKQorI2RlZmluZSBNSU5PUiBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikKICNkZWZpbmUgVEFHIE5BTUUgIi0iIE1BSk9SIE1JTk9SCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbENhY2hlVGFnID0gVEFHOwogI3VuZGVmIE5BTUUKLSN1bmRlZiBRVU9URQotI3VuZGVmIFNUUklGWQogI3VuZGVmIE1BSk9SCiAjdW5kZWYgTUlOT1IKICN1bmRlZiBUQUcKQEAgLTE3MzMsNiArMTg0OSwxNiBAQAogICAgIGlmIChyZXMgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCisjaWZkZWYgTVVMVElBUkNICisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhNVUxUSUFSQ0gpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgIl9tdWx0aWFyY2giLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbmRpZgorCiAgICAgLyogZGljdCByZWFkeSAqLwogCiAgICAgbnMgPSBfUHlOYW1lc3BhY2VfTmV3KGltcGxfaW5mbyk7CkBAIC0xOTQzLDYgKzIwNjksMTQgQEAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ0aHJlYWRfaW5mbyIsIFB5VGhyZWFkX0dldEluZm8oKSk7CiAjZW5kaWYKIAorICAgIC8qIGluaXRpYWxpemUgYXN5bmNnZW5faG9va3MgKi8KKyAgICBpZiAoQXN5bmNHZW5Ib29rc1R5cGUudHBfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigKKyAgICAgICAgICAgICAgICAmQXN5bmNHZW5Ib29rc1R5cGUsICZhc3luY2dlbl9ob29rc19kZXNjKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklORwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkdfQk9SUk9XCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCkBAIC0yMDM5LDcgKzIxNzMsNyBAQAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1JFQUxQQVRIKQogICAgIHdjaGFyX3QgZnVsbHBhdGhbTUFYUEFUSExFTl07Ci0jZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKE1TX1dJTkNFKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHdjaGFyX3QgZnVsbHBhdGhbTUFYX1BBVEhdOwogI2VuZGlmCiAKQEAgLTIwNzgsMTAgKzIyMTIsOCBAQAogI2lmIFNFUCA9PSAnXFwnIC8qIFNwZWNpYWwgY2FzZSBmb3IgTVMgZmlsZW5hbWUgc3ludGF4ICovCiAgICAgaWYgKF9IQVZFX1NDUklQVF9BUkdVTUVOVChhcmdjLCBhcmd2KSkgewogICAgICAgICB3Y2hhcl90ICpxOwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCi0gICAgICAgIC8qIFRoaXMgY29kZSBoZXJlIHJlcGxhY2VzIHRoZSBmaXJzdCBlbGVtZW50IGluIGFyZ3Ygd2l0aCB0aGUgZnVsbAotICAgICAgICBwYXRoIHRoYXQgaXQgcmVwcmVzZW50cy4gVW5kZXIgQ0UsIHRoZXJlIGFyZSBubyByZWxhdGl2ZSBwYXRocyBzbwotICAgICAgICB0aGUgYXJndW1lbnQgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIGFueXdheS4gKi8KKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgICAgIC8qIFJlcGxhY2UgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsIHBhdGguICovCiAgICAgICAgIHdjaGFyX3QgKnB0ZW1wOwogICAgICAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhhcmd2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSChmdWxscGF0aCksCkBAIC0yMTUxLDcgKzIyODMsNyBAQAogc3RhdGljIGludAogc3lzX3B5ZmlsZV93cml0ZV91bmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqZmlsZSkKIHsKLSAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKmFyZ3MgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IGVycjsKIAogICAgIGlmIChmaWxlID09IE5VTEwpCkBAIC0yMTYxLDExICsyMjkzLDcgQEAKICAgICBpZiAod3JpdGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHVuaWNvZGUpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh3cml0ZXIsIGFyZ3MpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMSh3cml0ZXIsIHVuaWNvZGUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0gZWxzZSB7CkBAIC0yMTc3LDcgKzIzMDUsNiBAQAogICAgIGVyciA9IC0xOwogZmluYWxseToKICAgICBQeV9YREVDUkVGKHdyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTIyODQsNyArMjQxMSw3IEBACiAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewogICAgICAgICBpZiAoc3lzX3B5ZmlsZV93cml0ZV91bmljb2RlKG1lc3NhZ2UsIGZpbGUpICE9IDApIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICB1dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtZXNzYWdlKTsKKyAgICAgICAgICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNVVEY4KG1lc3NhZ2UpOwogICAgICAgICAgICAgaWYgKHV0ZjggIT0gTlVMTCkKICAgICAgICAgICAgICAgICBmcHV0cyh1dGY4LCBmcCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCBiMjliMWI2Li43NGE2ZWU4IDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgIC8qIHdhaXQgYXQgbGVhc3QgdW50aWwgdGhlIHRhcmdldCAqLwogICAgICAgICBEV09SRCBub3csIHRhcmdldCA9IEdldFRpY2tDb3VudCgpICsgbWlsbGlzZWNvbmRzOwogICAgICAgICB3aGlsZSAobXV0ZXgtPmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKFB5Q09ORF9USU1FRFdBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcywgKFBZX0xPTkdfTE9ORyltaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAobG9uZyBsb25nKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE2MSwxMSArMTYxLDcgQEAKIAogLyogdGh1bmtlciB0byBjYWxsIGFkYXB0IGJldHdlZW4gdGhlIGZ1bmN0aW9uIHR5cGUgdXNlZCBieSB0aGUgc3lzdGVtJ3MKIHRocmVhZCBzdGFydCBmdW5jdGlvbiBhbmQgdGhlIGludGVybmFsbHkgdXNlZCBvbmUuICovCi0jaWYgZGVmaW5lZChNU19XSU5DRSkKLXN0YXRpYyBEV09SRCBXSU5BUEkKLSNlbHNlCiBzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxsCi0jZW5kaWYKIGJvb3RzdHJhcCh2b2lkICpjYWxsKQogewogICAgIGNhbGxvYmogKm9iaiA9IChjYWxsb2JqKiljYWxsOwpAQCAtMTkzLDMyICsxODksMTggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG9iai0+ZnVuYyA9IGZ1bmM7CiAgICAgb2JqLT5hcmcgPSBhcmc7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICBoVGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKF9weXRocmVhZF9zdGFja3NpemUsIFB5X3NzaXplX3QsIFNJWkVfVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXAsIG9iaiwgMCwgJnRocmVhZElEKTsKLSNlbHNlCiAgICAgaFRocmVhZCA9IChIQU5ETEUpX2JlZ2ludGhyZWFkZXgoMCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKF9weXRocmVhZF9zdGFja3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90LCB1bnNpZ25lZCBpbnQpLAogICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLAogICAgICAgICAgICAgICAgICAgICAgIDAsICZ0aHJlYWRJRCk7Ci0jZW5kaWYKICAgICBpZiAoaFRocmVhZCA9PSAwKSB7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogU2F2ZSBlcnJvciBpbiB2YXJpYWJsZSwgdG8gcHJldmVudCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50Ci0gICAgICAgICAgIGZyb20gY2xvYmJlcmluZyBpdC4gKi8KLSAgICAgICAgdW5zaWduZWQgZSA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGZhaWxlZCwgd2luMzIgZXJyb3IgY29kZSAldVxuIiwKLSAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZWxzZQogICAgICAgICAvKiBJJ3ZlIHNlZW4gZXJybm8gPT0gRUFHQUlOIGhlcmUsIHdoaWNoIG1lYW5zICJ0aGVyZSBhcmUKICAgICAgICAgICogdG9vIG1hbnkgdGhyZWFkcyIuCiAgICAgICAgICAqLwogICAgICAgICBpbnQgZSA9IGVycm5vOwogICAgICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGZhaWxlZCwgZXJybm8gJWRcbiIsCiAgICAgICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgZSkpOwotI2VuZGlmCiAgICAgICAgIHRocmVhZElEID0gKHVuc2lnbmVkKS0xOwogICAgICAgICBIZWFwRnJlZShHZXRQcm9jZXNzSGVhcCgpLCAwLCBvYmopOwogICAgIH0KQEAgLTI0OSwxMSArMjMxLDcgQEAKICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIGV4aXQoMCk7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICBFeGl0VGhyZWFkKDApOwotI2Vsc2UKICAgICBfZW5kdGhyZWFkZXgoMCk7Ci0jZW5kaWYKIH0KIAogLyoKZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCA5ZTdmZTNiLi45ZjhjNTY4IDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0zMjAsNyArMzIwLDcgQEAKICAgICBpZiAoZm9iID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChiaW5hcnksICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGJpbmFyeSk7CiAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICBpZiAocmVzKQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICBlbHNlCkBAIC00MTgsNiArNDE4LDExIEBACiB7CiAgICAgaW50IGVyciA9IDA7CiAgICAgbG9uZyBkZXB0aCA9IDA7CisgICAgUHlPYmplY3QgKmxhc3RfZmlsZSA9IE5VTEw7CisgICAgaW50IGxhc3RfbGluZSA9IC0xOworICAgIFB5T2JqZWN0ICpsYXN0X25hbWUgPSBOVUxMOworICAgIGxvbmcgY250ID0gMDsKKyAgICBQeU9iamVjdCAqbGluZTsKICAgICBQeVRyYWNlYmFja09iamVjdCAqdGIxID0gdGI7CiAgICAgd2hpbGUgKHRiMSAhPSBOVUxMKSB7CiAgICAgICAgIGRlcHRoKys7CkBAIC00MjUsMTYgKzQzMCw0MSBAQAogICAgIH0KICAgICB3aGlsZSAodGIgIT0gTlVMTCAmJiBlcnIgPT0gMCkgewogICAgICAgICBpZiAoZGVwdGggPD0gbGltaXQpIHsKLSAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOworICAgICAgICAgICAgaWYgKGxhc3RfZmlsZSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lID09IGxhc3RfZmlsZSAmJgorICAgICAgICAgICAgICAgIGxhc3RfbGluZSAhPSAtMSAmJiB0Yi0+dGJfbGluZW5vID09IGxhc3RfbGluZSAmJgorICAgICAgICAgICAgICAgIGxhc3RfbmFtZSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUgPT0gbGFzdF9uYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNudCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbnQgPiAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAiICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCAlZCBtb3JlIHRpbWVzXVxuIiwgY250LTMpOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlT2JqZWN0KGxpbmUsIGYsIFB5X1BSSU5UX1JBVyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9maWxlID0gdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lOworICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmUgPSB0Yi0+dGJfbGluZW5vOworICAgICAgICAgICAgICAgICAgICBsYXN0X25hbWUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgY250ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY250IDwgMykKKyAgICAgICAgICAgICAgICBlcnIgPSB0Yl9kaXNwbGF5bGluZShmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKICAgICAgICAgfQogICAgICAgICBkZXB0aC0tOwogICAgICAgICB0YiA9IHRiLT50Yl9uZXh0OwogICAgICAgICBpZiAoZXJyID09IDApCiAgICAgICAgICAgICBlcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKICAgICB9CisgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCAlZCBtb3JlIHRpbWVzXVxuIiwgY250LTMpOworICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgUHlfREVDUkVGKGxpbmUpOworICAgIH0KICAgICByZXR1cm4gZXJyOwogfQogCkBAIC00ODUsNDAgKzUxNSwyNiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotcmV2ZXJzZV9zdHJpbmcoY2hhciAqdGV4dCwgY29uc3Qgc2l6ZV90IGxlbikKK3ZvaWQKK19QeV9EdW1wRGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCiB7Ci0gICAgY2hhciB0bXA7Ci0gICAgc2l6ZV90IGksIGo7Ci0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChpPTAsIGo9bGVuLTE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICB0bXAgPSB0ZXh0W2ldOwotICAgICAgICB0ZXh0W2ldID0gdGV4dFtqXTsKLSAgICAgICAgdGV4dFtqXSA9IHRtcDsKLSAgICB9Ci19CisgICAgLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsbGQgb3IgJXAuCisgICAgICAgV2UgbmVlZCBhdCBtb3N0IGNlaWwobG9nMTAoMjU2KSpTSVpFT0ZfTE9OR19MT05HKSBkaWdpdHMsCisgICAgICAgcGx1cyAxIGZvciB0aGUgbnVsbCBieXRlLiAgNTMvMjIgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZzEwKDI1NikuICovCisgICAgY2hhciBidWZmZXJbMSArIChzaXplb2YodW5zaWduZWQgbG9uZykqNTMtMSkgLyAyMiArIDFdOworICAgIGNoYXIgKnB0ciwgKmVuZDsKIAotLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDk5OTk5OV0gdG8gZGVjaW1hbCwKLSAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9kZWNpbWFsKGludCBmZCwgaW50IHZhbHVlKQotewotICAgIGNoYXIgYnVmZmVyWzddOwotICAgIGludCBsZW47Ci0gICAgaWYgKHZhbHVlIDwgMCB8fCA5OTk5OTkgPCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGxlbiA9IDA7CisgICAgZW5kID0gJmJ1ZmZlcltQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSAtIDFdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gJzAnICsgKHZhbHVlICUgMTApOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gJzAnICsgKHZhbHVlICUgMTApOwogICAgICAgICB2YWx1ZSAvPSAxMDsKLSAgICAgICAgbGVuKys7CiAgICAgfSB3aGlsZSAodmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAogLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGFkZWNpbWFsIG9mICd3aWR0aCcgZGlnaXRzLApAQCAtNTI2LDI3ICs1NDIsMzEgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAotc3RhdGljIHZvaWQKLWR1bXBfaGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgd2lkdGgpCit2b2lkCitfUHlfRHVtcEhleGFkZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgUHlfc3NpemVfdCB3aWR0aCkKIHsKLSAgICBpbnQgbGVuOwotICAgIGNoYXIgYnVmZmVyW3NpemVvZih1bnNpZ25lZCBsb25nKSAqIDIgKyAxXTsKLSAgICBsZW4gPSAwOworICAgIGNoYXIgYnVmZmVyW3NpemVvZih1bnNpZ25lZCBsb25nKSAqIDIgKyAxXSwgKnB0ciwgKmVuZDsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSAtIDE7CisKKyAgICBpZiAod2lkdGggPiBzaXplKQorICAgICAgICB3aWR0aCA9IHNpemU7CisgICAgLyogaXQncyBvayBpZiB3aWR0aCBpcyBuZWdhdGl2ZSAqLworCisgICAgZW5kID0gJmJ1ZmZlcltzaXplXTsKKyAgICBwdHIgPSBlbmQ7CisgICAgKnB0ciA9ICdcMCc7CiAgICAgZG8gewotICAgICAgICBidWZmZXJbbGVuXSA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKKyAgICAgICAgLS1wdHI7CisgICAgICAgIGFzc2VydChwdHIgPj0gYnVmZmVyKTsKKyAgICAgICAgKnB0ciA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKICAgICAgICAgdmFsdWUgPj49IDQ7Ci0gICAgICAgIGxlbisrOwotICAgIH0gd2hpbGUgKGxlbiA8IHdpZHRoIHx8IHZhbHVlKTsKLSAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKKyAgICB9IHdoaWxlICgoZW5kIC0gcHRyKSA8IHdpZHRoIHx8IHZhbHVlKTsKKworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBwdHIsIGVuZCAtIHB0cik7CiB9CiAKLS8qIFdyaXRlIGFuIHVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZmQgdXNpbmcgYXNjaWkrYmFja3NsYXNocmVwbGFjZS4KLQotICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KLQotc3RhdGljIHZvaWQKLWR1bXBfYXNjaWkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCkKK3ZvaWQKK19QeV9EdW1wQVNDSUkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCkKIHsKICAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdGV4dDsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7CkBAIC01NTYsMzIgKzU3NiwzNiBAQAogICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOwogICAgIFB5X1VDUzQgY2g7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2l6ZSA9IGFzY2lpLT5sZW5ndGg7CiAgICAga2luZCA9IGFzY2lpLT5zdGF0ZS5raW5kOwotICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgeworICAgIGlmIChraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKKyAgICB9CisgICAgZWxzZSBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKICAgICAgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKXRleHQpICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopdGV4dCkgKyAxOwogICAgIH0KLSAgICBlbHNlIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgZWxzZSB7CiAgICAgICAgIGRhdGEgPSAoKFB5VW5pY29kZU9iamVjdCAqKXRleHQpLT5kYXRhLmFueTsKICAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKLSAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKLSAgICB9CiAKICAgICBpZiAoTUFYX1NUUklOR19MRU5HVEggPCBzaXplKSB7CiAgICAgICAgIHNpemUgPSBNQVhfU1RSSU5HX0xFTkdUSDsKICAgICAgICAgdHJ1bmNhdGVkID0gMTsKICAgICB9Ci0gICAgZWxzZQorICAgIGVsc2UgewogICAgICAgICB0cnVuY2F0ZWQgPSAwOworICAgIH0KIAogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQpAQCAtNTk1LDE5ICs2MTksMjAgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx4Iik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgMik7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgMik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgNCk7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgNCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFxVIik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgOCk7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgOCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHRydW5jYXRlZCkKKyAgICBpZiAodHJ1bmNhdGVkKSB7CiAgICAgICAgIFBVVFMoZmQsICIuLi4iKTsKKyAgICB9CiB9CiAKIC8qIFdyaXRlIGEgZnJhbWUgaW50byB0aGUgZmlsZSBmZDogIkZpbGUgInh4eCIsIGxpbmUgeHh4IGluIHh4eCIuCkBAIC02MjYsNyArNjUxLDcgQEAKICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKICAgICB7CiAgICAgICAgIFBVVFMoZmQsICJcIiIpOwotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOwpAQCAtNjM1LDE0ICs2NjAsMjEgQEAKICAgICAvKiBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi43LjAgYW5kIDMuMi4wICovCiAgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShjb2RlLCBmcmFtZS0+Zl9sYXN0aSk7CiAgICAgUFVUUyhmZCwgIiwgbGluZSAiKTsKLSAgICBkdW1wX2RlY2ltYWwoZmQsIGxpbmVubyk7CisgICAgaWYgKGxpbmVubyA+PSAwKSB7CisgICAgICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpbGluZW5vKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CiAgICAgUFVUUyhmZCwgIiBpbiAiKTsKIAogICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fbmFtZSAhPSBOVUxMCi0gICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkKLSAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fbmFtZSk7Ci0gICAgZWxzZQorICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkgeworICAgICAgICBfUHlfRHVtcEFTQ0lJKGZkLCBjb2RlLT5jb19uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CiAKICAgICBQVVRTKGZkLCAiXG4iKTsKIH0KQEAgLTY5OCw3ICs3MzAsOSBAQAogICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKICAgICBlbHNlCiAgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKLSAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIpOworICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDIpOwogICAgIFBVVFMoZmQsICIgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CiB9CiAKQEAgLTcxMCwxMSArNzQ0LDU2IEBACiAgICBoYW5kbGVycyBpZiBzaWduYWxzIHdlcmUgcmVjZWl2ZWQuICovCiBjb25zdCBjaGFyKgogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90c3RhdGUpCiB7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIHVuc2lnbmVkIGludCBudGhyZWFkczsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRsZXJzIGJ5CisgICAgICAgICAgIGZhdWx0aGFuZGxlci4KKworICAgICAgICAgICBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzCisgICAgICAgICAgIGFuZCBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUKKyAgICAgICAgICAgUHl0aG9uIHRocmVhZCBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQKKyAgICAgICAgICAgdGhlIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICAgY2Fubm90IGJlIHVzZWQuIFJlYWQgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGluc3RlYWQ6IGNhbGwKKyAgICAgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICAgICAgY3VycmVudF90c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworICAgIH0KKworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgaW50ZXJwID0gX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogV2UgbmVlZCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgdG8gZ2V0IFB5dGhvbiB0aHJlYWRzICovCisgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnRlcnAgPSBjdXJyZW50X3RzdGF0ZS0+aW50ZXJwOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpIGluc3RlYWQgb2YgUHlUaHJlYWRTdGF0ZV9HZXQoKQorICAgICAgICAgICB0byBub3QgZmFpbCB3aXRoIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHRocmVhZCBzdGF0ZSBpcyBOVUxMLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpOworICAgIH0KKworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2UgbmVlZCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgdG8gZ2V0IFB5dGhvbiB0aHJlYWRzICovCisgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnAgPSBjdXJyZW50X3RzdGF0ZS0+aW50ZXJwOworICAgIH0KKyNlbmRpZgorICAgIGFzc2VydChpbnRlcnAgIT0gTlVMTCk7CisKICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQgKi8KICAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOwogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKQEAgLTczMiw3ICs4MTEsNyBAQAogICAgICAgICAgICAgUFVUUyhmZCwgIi4uLlxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdGhyZWFkKTsKKyAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RzdGF0ZSk7CiAgICAgICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDApOwogICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKICAgICAgICAgbnRocmVhZHMrKzsKZGlmZiAtLWdpdCBhL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmggYi9QeXRob24vd29yZGNvZGVfaGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTNhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vd29yZGNvZGVfaGVscGVycy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qIFRoaXMgZmlsZSBjb250YWlucyBjb2RlIHNoYXJlZCBieSB0aGUgY29tcGlsZXIgYW5kIHRoZSBwZWVwaG9sZQorICAgb3B0aW1pemVyLgorICovCisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZykgKChfUHlfQ09ERVVOSVQpKCgob3Bjb2RlKSA8PCA4KSB8IChvcGFyZykpKQorI2Vsc2UKKyMgIGRlZmluZSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZykgKChfUHlfQ09ERVVOSVQpKCgob3BhcmcpIDw8IDgpIHwgKG9wY29kZSkpKQorI2VuZGlmCisKKy8qIE1pbmltdW0gbnVtYmVyIG9mIGNvZGUgdW5pdHMgbmVjZXNzYXJ5IHRvIGVuY29kZSBpbnN0cnVjdGlvbiB3aXRoCisgICBFWFRFTkRFRF9BUkdzICovCitzdGF0aWMgaW50CitpbnN0cnNpemUodW5zaWduZWQgaW50IG9wYXJnKQoreworICAgIHJldHVybiBvcGFyZyA8PSAweGZmID8gMSA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZiA/IDIgOgorICAgICAgICBvcGFyZyA8PSAweGZmZmZmZiA/IDMgOgorICAgICAgICA0OworfQorCisvKiBTcGl0cyBvdXQgb3Avb3BhcmcgcGFpciB1c2luZyBpbGVuIGJ5dGVzLiBjb2Rlc3RyIHNob3VsZCBiZSBwb2ludGVkIGF0IHRoZQorICAgZGVzaXJlZCBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgRVhURU5ERURfQVJHICovCitzdGF0aWMgdm9pZAord3JpdGVfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgdW5zaWduZWQgaW50IG9wYXJnLCBpbnQgaWxlbikKK3sKKyAgICBzd2l0Y2ggKGlsZW4pIHsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiAyNCkgJiAweGZmKTsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiAxNikgJiAweGZmKTsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiA4KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKG9wY29kZSwgb3BhcmcgJiAweGZmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCA5ODU2ZWMxLi40ZmM5N2U2IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xLDQgKzEsNCBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjUuMyByZWxlYXNlIGNhbmRpZGF0ZSAxCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNi4xIHJlbGVhc2UgY2FuZGlkYXRlIDEKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsCkBAIC0yOSw5ICsyOSw5IEBACiBlbHNld2hlcmUgaXQncyBqdXN0IHB5dGhvbi4KIAogT24gTWFjIE9TIFgsIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgUHl0aG9uIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrLCB5b3Ugc2hvdWxkCi11c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzCi10aGUgUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkKLXdhbnQgdG8gc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KK3VzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCitQeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCitzZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgogCiBPbiBXaW5kb3dzLCBzZWUgUENidWlsZC9yZWFkbWUudHh0LgogCkBAIC05MCw5ICs5MCw5IEBACiAtLS0tLS0tLS0tCiAKIFdlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy42IiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L3doYXRzbmV3LzMuNi5odG1sCiAKIEZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKIGlzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CkBAIC0xMDUsOSArMTA1LDkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CitEb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy42IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41LworICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC0xMTcsNyArMTE3LDcgQEAKIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50IG9mIFB5dGhvbiwgcmVsZXZhbnQKIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KIAogRm9yIGluZm9ybWF0aW9uIGFib3V0IGJ1aWxkaW5nIFB5dGhvbidzIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIERvYy9SRUFETUUudHh0LgogCkBAIC0xMzIsNyArMTMyLDcgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwpAQCAtMTYyLDE3ICsxNjIsMTcgQEAKIAogT24gVW5peCBhbmQgTWFjIHN5c3RlbXMgaWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbgogdXNpbmcgdGhlIHNhbWUgaW5zdGFsbGF0aW9uIHByZWZpeCAoLS1wcmVmaXggYXJndW1lbnQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQpCi15b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5Ci10aGUgaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZAotdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKLXNpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzCi10byAke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZwotdGhlIHNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiCi12ZXJzaW9uLiAgSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlcgotdmVyc2lvbnMgdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIuCit5b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZQoraW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZCB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKK3NpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzIHRvCiske3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZyB0aGUKK3NhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiIHZlcnNpb24uCitJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCisibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCi1wcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNywgMy41LCBhbmQgMy42IHdpdGggMy42IGJlaW5nIHRoZQorcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDMuNiBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCiAKQEAgLTE4Miw3ICsxODIsNyBAQAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwogd2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAotICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCisgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvCiAKIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIHlvdSdyZSBkZWFsaW5nIHdpdGggYSBidWcgb3IgYSBmZWF0dXJlLCB1c2UgdGhlCiBtYWlsaW5nIGxpc3Q6CkBAIC0xOTEsMjMgKzE5MSwyMyBAQAogCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHVzZSB0aGUgbWFpbG1hbiBmb3JtOgogCi0gICAgaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCisgICAgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tZGV2LwogCiAKIFByb3Bvc2FscyBmb3IgZW5oYW5jZW1lbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IGhhdmUgYSBwcm9wb3NhbCB0byBjaGFuZ2UgUHl0aG9uLCB5b3UgbWF5IHdhbnQgdG8gc2VuZCBhbiBlbWFpbCB0byB0aGUKLWNvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRhbCBmZWVkYmFjay4gIEEgUHl0aG9uCitjb21wLmxhbmcucHl0aG9uIG9yIHB5dGhvbi1pZGVhcyBtYWlsaW5nIGxpc3RzIGZvciBpbml0aWFsIGZlZWRiYWNrLiAgQSBQeXRob24KIEVuaGFuY2VtZW50IFByb3Bvc2FsIChQRVApIG1heSBiZSBzdWJtaXR0ZWQgaWYgeW91ciBpZGVhIGdhaW5zIGdyb3VuZC4gIEFsbAogY3VycmVudCBQRVBzLCBhcyB3ZWxsIGFzIGd1aWRlbGluZXMgZm9yIHN1Ym1pdHRpbmcgYSBuZXcgUEVQLCBhcmUgbGlzdGVkIGF0Ci1odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCiAKIAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCitTZWUgUEVQIDQ5NCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk0LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMjMxLDMgKzIzMSw0IEBACiBjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3NDA3Yi4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1M2M3YzEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UgYGNsZWFuLmJhdGAgZnJvbSB0aGlzDQotQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuDQotY2FsbCAiJX5kcDBjbGVhbi5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwZmM2OGZkLi4xM2U2Njc5IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xNCwzICsxNCw0IEBACiANCiBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KIHJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorZGVsIC9zICIlcGNidWlsZCVccHl0aG9uKi56aXAiDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4MzI5Yy4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXDQotQGVjaG8gb3IgdXNlIGB0ZXN0LmJhdGAgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHBhc3MgYC14NjRgIGFzIGFuIGFyZ3VtZW50Lg0KLWNhbGwgIiV+ZHAwdGVzdC5iYXQiIC14NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGZmN2QxNjcuLmEzMmQzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC00LDcgKzQsNyBAQAogDQogc2V0IGhlcmU9JX5kcDANCiBzZXQgcnRfb3B0cz0tcSAtZA0KLXNldCByZWdydGVzdF9hcmdzPQ0KK3NldCByZWdydGVzdF9hcmdzPS1qMQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMTYsNCArMTYsNCBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIGVjaG8gb24NCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tc2xvd2VzdCAtLXRpbWVvdXQ9MTIwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBmNjE1ZWQ5Li43NWFjNjczIDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgICAgICBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIgPSAobm90IGYucmV0dXJuX2NvbnZlcnRlciBvcgogICAgICAgICAgICAgZi5yZXR1cm5fY29udmVydGVyLnR5cGUgPT0gJ1B5T2JqZWN0IConKQogCi0gICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCAocGFyYW1ldGVyc1stMV0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCBwYXJhbWV0ZXJzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBhbGxfYm9yaW5nX29iamVjdHMgPSBGYWxzZSAjIHllcywgdGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGFyZSAwIHBhcmFtZXRlcnMsIGl0J3MgZmluZQogICAgICAgICBmaXJzdF9vcHRpb25hbCA9IGxlbihwYXJhbWV0ZXJzKQogICAgICAgICBmb3IgaSwgcCBpbiBlbnVtZXJhdGUocGFyYW1ldGVycyk6CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgbmV3X29yX2luaXQgPSBmLmtpbmQgaW4gKE1FVEhPRF9ORVcsIE1FVEhPRF9JTklUKQogCiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKKyAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCkBAIC03MDUsNiArNzA1LDExIEBACiAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiAgICAgICAgICAgICAiIiIpCiAKKyAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbCA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQorICAgICAgICAgICAgIiIiKQorCiAgICAgICAgIHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncyA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncykKQEAgLTc0Myw3ICs3NDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQoKQogCiAgICAgICAgIGRlZiBpbnNlcnRfa2V5d29yZHMocyk6Ci0gICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9InN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHt7e2tleXdvcmRzfSwgTlVMTH19O1xue2RlY2xhcmF0aW9uc30iKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVhcl9mb3JtYXQocywgZGVjbGFyYXRpb25zPQorICAgICAgICAgICAgICAgICdzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG4nCisgICAgICAgICAgICAgICAgJ3N0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7eyJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsIDB9fTtcbicKKyAgICAgICAgICAgICAgICAne2RlY2xhcmF0aW9uc30nKQogCiAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIyBubyBwYXJhbWV0ZXJzLCBNRVRIX05PQVJHUwpAQCAtNzk3LDggKzgwNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCiAKICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKQEAgLTgyMiw4ICs4MzEsOSBAQAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7dW5wYWNrX21pbn0sIHt1bnBhY2tfbWF4fSwKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgcG9zaXRpb25hbDoKQEAgLTgzNSwxMCArODQ1LDI0IEBACiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKKyAgICAgICAgZWxpZiBub3QgbmV3X29yX2luaXQ6CisgICAgICAgICAgICBmbGFncyA9ICJNRVRIX0ZBU1RDQUxMIgorCisgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbAorCisgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsLW9yLWtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyIKQEAgLTg0NiwxNSArODcwLDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCisgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIGJvZHkpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IGluc2VydF9rZXl3b3JkcyhwYXJzZXJfZGVmaW5pdGlvbikKIAogCkBAIC04NzgsMTMgKzg5OSwxNSBAQAogCiAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX2tleXdvcmRzOgogICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9LZXl3b3Jkcygie25hbWV9Iiwga3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX3Bvc2l0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsICpmaWVsZHMpCkBAIC0xMDMyLDggKzEwNTUsOSBAQAogCiAgICAgICAgICAgICBzID0gIiIiCiAgICAgY2FzZSB7Y291bnR9OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH19CiAgICAgICAgIHtncm91cF9ib29sZWFuc30KICAgICAgICAgYnJlYWs7CiAiIiJbMTpdCkBAIC0xMDY3LDcgKzEwOTEsNyBAQAogCiAgICAgICAgIGxhc3RfZ3JvdXAgPSAwCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHNlbGZsZXNzKQotICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCkBAIC0xMjE2LDcgKzEyNDAsNyBAQAogCiBkZWYgY3JlYXRlX3JlZ2V4KGJlZm9yZSwgYWZ0ZXIsIHdvcmQ9VHJ1ZSwgd2hvbGVfbGluZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW4gcmUgb2JqZWN0IGZvciBtYXRjaGluZyBtYXJrZXIgbGluZXMuIiIiCi0gICAgZ3JvdXBfcmUgPSAiXHcrIiBpZiB3b3JkIGVsc2UgIi4rIgorICAgIGdyb3VwX3JlID0gciJcdysiIGlmIHdvcmQgZWxzZSAiLisiCiAgICAgcGF0dGVybiA9IHIne30oe30pe30nCiAgICAgaWYgd2hvbGVfbGluZToKICAgICAgICAgcGF0dGVybiA9ICdeJyArIHBhdHRlcm4gKyAnJCcKQEAgLTIzNTksNyArMjM4MywxMCBAQAogICAgICAgICAgICAgZGF0YS5tb2RpZmljYXRpb25zLmFwcGVuZCgnLyogbW9kaWZpY2F0aW9ucyBmb3IgJyArIG5hbWUgKyAnICovXG4nICsgbW9kaWZpY2F0aW9ucy5yc3RyaXAoKSkKIAogICAgICAgICAjIGtleXdvcmRzCi0gICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQorICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICBkYXRhLmtleXdvcmRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQogCiAgICAgICAgICMgZm9ybWF0X3VuaXRzCiAgICAgICAgIGlmIHNlbGYuaXNfb3B0aW9uYWwoKSBhbmQgJ3wnIG5vdCBpbiBkYXRhLmZvcm1hdF91bml0czoKQEAgLTI1NzIsMjEgKzI1OTksMjEgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25ncyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLWNsYXNzIFBZX0xPTkdfTE9OR19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQWV9MT05HX0xPTkcnCitjbGFzcyBsb25nX2xvbmdfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnbG9uZyBsb25nJwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ0wnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotY2xhc3MgdW5zaWduZWRfUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ3Vuc2lnbmVkIFBZX0xPTkdfTE9ORycKK2NsYXNzIHVuc2lnbmVkX2xvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnSycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGJpdHdpc2U9RmFsc2UpOgogICAgICAgICBpZiBub3QgYml0d2lzZToKLSAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIFBZX0xPTkdfTE9OR3MgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQorICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgbG9uZyBsb25nIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAogY2xhc3MgUHlfc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjY3Niw3ICsyNzAzLDcgQEAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKICAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKSB7XG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xufVxuIl0pCiAKICMKICMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQpAQCAtMjc4Niw3ICsyODEzLDcgQEAKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCi0gICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIub2JqKVxuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopIHtcbiAgIFB5QnVmZmVyX1JlbGVhc2UoJiIsIG5hbWUsICIpO1xufVxuIl0pCiAKIAogZGVmIGNvcnJlY3RfbmFtZV9mb3Jfc2VsZihmKToKQEAgLTI5NTksMTAgKzI5ODYsMTAgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSBuYW1lCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmKHNlbGYsIGV4cHIsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSlcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdChleHByKSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoJ2lmICgoe30pICYmIFB5RXJyX09jY3VycmVkKCkpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KGV4cHIpKQogCiAgICAgZGVmIGVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoc2VsZiwgdmFyaWFibGUsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpXG4gICAgZ290byBleGl0O1xuJy5mb3JtYXQodmFyaWFibGUpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KHZhcmlhYmxlKSkKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICAiIiIKQEAgLTI5NzcsOCArMzAwNCw5IEBACiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnJycKLWlmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpCitpZiAoX3JldHVybl92YWx1ZSAhPSBQeV9Ob25lKSB7CiAgICAgZ290byBleGl0OworfQogcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKIFB5X0lOQ1JFRihQeV9Ob25lKTsKICcnJy5zdHJpcCgpKQpAQCAtMzE4Myw2ICszMjExLDcgQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYuc3RhdGVfZHNsX3N0YXJ0CiAgICAgICAgIHNlbGYucGFyYW1ldGVyX2luZGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXl3b3JkX29ubHkgPSBGYWxzZQorICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuZ3JvdXAgPSAwCiAgICAgICAgIHNlbGYucGFyYW1ldGVyX3N0YXRlID0gc2VsZi5wc19zdGFydAogICAgICAgICBzZWxmLnNlZW5fcG9zaXRpb25hbF93aXRoX2RlZmF1bHQgPSBGYWxzZQpAQCAtMzU2MSw4ICszNTkwLDggQEAKICAgICAjICJwYXJhbWV0ZXJfc3RhdGUiLiAgKFByZXZpb3VzbHkgdGhlIGNvZGUgd2FzIGEgbWlhc21hIG9mIGlmcyBhbmQKICAgICAjIHNlcGFyYXRlIGJvb2xlYW4gc3RhdGUgdmFyaWFibGVzLikgIFRoZSBzdGF0ZXMgYXJlOgogICAgICMKLSAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdIC8gICA8LSBsaW5lCi0gICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICA3ICAgPC0gc3RhdGUgdHJhbnNpdGlvbnMKKyAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdICAgPC0gbGluZQorICAgICMgMDEgICAyICAgICAgICAgIDMgICAgICAgNCAgICA1ICAgICAgICAgICA2ICAgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucwogICAgICMKICAgICAjIDA6IHBzX3N0YXJ0LiAgYmVmb3JlIHdlJ3ZlIHNlZW4gYW55dGhpbmcuICBsZWdhbCB0cmFuc2l0aW9ucyBhcmUgdG8gMSBvciAzLgogICAgICMgMTogcHNfbGVmdF9zcXVhcmVfYmVmb3JlLiAgbGVmdCBzcXVhcmUgYnJhY2tldHMgYmVmb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCkBAIC0zNTczLDkgKzM2MDIsOCBAQAogICAgICMgICAgbm93IG11c3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KICAgICAjIDU6IHBzX2dyb3VwX2FmdGVyLiAgaW4gYSBncm91cCwgYWZ0ZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAjIDY6IHBzX3JpZ2h0X3NxdWFyZV9hZnRlci4gIHJpZ2h0IHNxdWFyZSBicmFja2V0cyBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgotICAgICMgNzogcHNfc2Vlbl9zbGFzaC4gIHNlZW4gc2xhc2guCiAgICAgcHNfc3RhcnQsIHBzX2xlZnRfc3F1YXJlX2JlZm9yZSwgcHNfZ3JvdXBfYmVmb3JlLCBwc19yZXF1aXJlZCwgXAotICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBwc19zZWVuX3NsYXNoID0gcmFuZ2UoOCkKKyAgICBwc19vcHRpb25hbCwgcHNfZ3JvdXBfYWZ0ZXIsIHBzX3JpZ2h0X3NxdWFyZV9hZnRlciA9IHJhbmdlKDcpCiAKICAgICBkZWYgc3RhdGVfcGFyYW1ldGVyc19zdGFydChzZWxmLCBsaW5lKToKICAgICAgICAgaWYgc2VsZi5pZ25vcmVfbGluZShsaW5lKToKQEAgLTM4NTQsOSArMzg4Miw2IEBACiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKLSAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPT0gc2VsZi5wc19zZWVuX3NsYXNoOgotICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgc3BlY2lmaWVzICIgKyBzeW1ib2wgKyAiIGFmdGVyIC8sIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0KICAgICAgICAgaWYgc3ltYm9sID09ICcqJzoKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJyonIG1vcmUgdGhhbiBvbmNlLiIpCkBAIC0zODgzLDEzICszOTA4LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiB1bnN1cHBvcnRlZCBncm91cCBjb25maWd1cmF0aW9uLiAoVW5leHBlY3RlZCBzdGF0ZSAiICsgc3RyKHNlbGYucGFyYW1ldGVyX3N0YXRlKSArICIuYykiKQogICAgICAgICBlbGlmIHN5bWJvbCA9PSAnLyc6CisgICAgICAgICAgICBpZiBzZWxmLnBvc2l0aW9uYWxfb25seToKKyAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiB1c2VzICcvJyBtb3JlIHRoYW4gb25jZS4iKQorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbmFsX29ubHkgPSBUcnVlCiAgICAgICAgICAgICAjIHBzX3JlcXVpcmVkIGFuZCBwc19vcHRpb25hbCBhcmUgYWxsb3dlZCBoZXJlLCB0aGF0IGFsbG93cyBwb3NpdGlvbmFsLW9ubHkgd2l0aG91dCBvcHRpb24gZ3JvdXBzCiAgICAgICAgICAgICAjIHRvIHdvcmsgKGFuZCBoYXZlIGRlZmF1bHQgdmFsdWVzISkKICAgICAgICAgICAgIGlmIChzZWxmLnBhcmFtZXRlcl9zdGF0ZSBub3QgaW4gKHNlbGYucHNfcmVxdWlyZWQsIHNlbGYucHNfb3B0aW9uYWwsIHNlbGYucHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBzZWxmLnBzX2dyb3VwX2JlZm9yZSkpIG9yIHNlbGYuZ3JvdXA6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5kKSIpCiAgICAgICAgICAgICBpZiBzZWxmLmtleXdvcmRfb25seToKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBtaXhlcyBrZXl3b3JkLW9ubHkgYW5kIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCB3aGljaCBpcyB1bnN1cHBvcnRlZC4iKQotICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3NlZW5fc2xhc2gKICAgICAgICAgICAgICMgZml4dXAgcHJlY2VkaW5nIHBhcmFtZXRlcnMKICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuZnVuY3Rpb24ucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiAocC5raW5kICE9IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBhbmQgbm90IGlzaW5zdGFuY2UocC5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKSk6CkBAIC0zOTc3LDIzICs0MDA0LDIwIEBACiAgICAgICAgICMgcG9wdWxhdGUgInJpZ2h0X2JyYWNrZXRfY291bnQiIGZpZWxkIGZvciBldmVyeSBwYXJhbWV0ZXIKICAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMsICJXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzZWxmIHBhcmFtZXRlci4gIiArIHJlcHIoZikKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyc1swXS5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKQorICAgICAgICAjIHNlbGYgaXMgYWx3YXlzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnNbMF0uaXNfcG9zaXRpb25hbF9vbmx5KCkKICAgICAgICAgcGFyYW1ldGVyc1swXS5yaWdodF9icmFja2V0X2NvdW50ID0gMAotICAgICAgICBwYXJhbWV0ZXJzX2FmdGVyX3NlbGYgPSBwYXJhbWV0ZXJzWzE6XQotICAgICAgICBpZiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAjIGZvciBub3csIHRoZSBvbmx5IHdheSBDbGluaWMgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICMgaXMgaWYgYWxsIG9mIHRoZW0gYXJlIHBvc2l0aW9uYWwtb25seS4uLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAuLi4gZXhjZXB0IGZvciBzZWxmISAgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgotCi0gICAgICAgICAgICBwb3NpdGlvbmFsX29ubHlfcGFyYW1ldGVycyA9IFtwLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZl0KLSAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZlswXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQorICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBUcnVlCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNbMTpdOgorICAgICAgICAgICAgaWYgbm90IHAuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICAgICAgcG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHBvc2l0aW9uYWxfb25seQorICAgICAgICAgICAgaWYgcG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGRvbid0IHB1dCBhbnkgcmlnaHQgYnJhY2tldHMgYXJvdW5kIG5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgZXZlci4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBwLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCiAKICAgICAgICAgcmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCBjNTFmMDQxLi5iZjg4ODIwIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtNDEzLDcgKzQxMyw3IEBACiAKICAgICBkZWYgcmVudW1iZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIGR4LCBkeSk6CiAgICAgICAgIG91dCA9IFtdCi0gICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KCcoXHcrKScsIHNlbGYuZm9ybXVsYSk6CisgICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KHInKFx3KyknLCBzZWxmLmZvcm11bGEpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdeKFtBLVpdKykoWzEtOV1bMC05XSopJCcsIHBhcnQpCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN4LCBzeSA9IG0uZ3JvdXBzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IDQ0ZWRkNTcuLmQ2MDJmNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI0LDkgKzEyNCw3IEBACiAKICAgICAjIGRlZmF1bHQgdGhlIGV4Y2x1ZGUgbGlzdCBmb3IgZWFjaCBwbGF0Zm9ybQogICAgIGlmIHdpbjogZXhjbHVkZSA9IGV4Y2x1ZGUgKyBbCi0gICAgICAgICdkb3MnLCAnZG9zcGF0aCcsICdtYWMnLCAnbWFjcGF0aCcsICdtYWNmcycsICdNQUNGUycsICdwb3NpeCcsCi0gICAgICAgICdjZScsCi0gICAgICAgIF0KKyAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCiAKQEAgLTIxOCw3ICsyMTYsNyBAQAogICAgIGlzaG9tZSA9IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwcmVmaXgsICdQeXRob24nLCAnY2V2YWwuYycpKQogCiAgICAgIyBsb2NhdGlvbnMgZGVyaXZlZCBmcm9tIG9wdGlvbnMKLSAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCisgICAgdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgIGZsYWdnZWRfdmVyc2lvbiA9IHZlcnNpb24gKyBzeXMuYWJpZmxhZ3MKICAgICBpZiB3aW46CiAgICAgICAgIGV4dGVuc2lvbnNfYyA9ICdmcm96ZW5fZXh0ZW5zaW9ucy5jJwpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKaW5kZXggMzkwZDhhYy4uOWJiM2U2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcHJpbnQoKQogCiAgICAgcHJpbnQoJyQodGVtcF9kaXIpOicpCi0gICAgcHJpbnQoJyAgaWYgbm90IGV4aXN0ICQodGVtcF9kaXIpXC4gbWtkaXIgJCh0ZW1wX2RpciknKQorICAgIHByaW50KHInICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCiAgICAgcHJpbnQoKQogCiAgICAgb2JqZWN0cyA9IFtdCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpCiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChiYXNlICsgIi5vYmoiKQotICAgICAgICAgICAgcHJpbnQoJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCisgICAgICAgICAgICBwcmludChyJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCiAgICAgICAgICAgICBwcmludCgiXHRAJChDQykgLWMgLW5vbG9nbyAvRm8kKiAkKGNkbCkgJChjX2RlYnVnKSAvRCBCVUlMRF9GUkVFWkUiLCBlbmQ9JyAnKQogICAgICAgICAgICAgcHJpbnQoJyItSSQocHl0aG9uaG9tZSkvSW5jbHVkZSIgICItSSQocHl0aG9uaG9tZSkvUEMiIFxcJykKICAgICAgICAgICAgIHByaW50KCJcdFx0JChjZmxhZ3MpICQoY2RlYnVnKSAkKGNpbmNsdWRlKSBcXCIpCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICBwcmludCgpIDsgcHJpbnQoKQogCiAgICAgcHJpbnQoIk9CSlM9IiwgZW5kPScgJykKLSAgICBmb3Igb2JqIGluIG9iamVjdHM6IHByaW50KCciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQorICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQociciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiTElCUz0iLCBlbmQ9JyAnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggZWQ1MTVjMC4uY2MxYWZiZSAxMDA3NTUKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00NCw3ICs0NCw3IEBACiAjIE5PVEU6IHNvbWUgZ2RicyBhcmUgbGlua2VkIHdpdGggUHl0aG9uIDMsIHNvIHRoaXMgZmlsZSBzaG91bGQgYmUgZHVhbC1zeW50YXgKICMgY29tcGF0aWJsZSAoMi42KyBhbmQgMy4wKykuICBTZWUgIzE5MzA4LgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB3aXRoX3N0YXRlbWVudAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGdkYgogaW1wb3J0IG9zCiBpbXBvcnQgbG9jYWxlCkBAIC02NjYsOCArNjY2LDkgQEAKICAgICAgICAgJycnCiAgICAgICAgIGtleXMgPSBzZWxmLmZpZWxkKCdtYV9rZXlzJykKICAgICAgICAgdmFsdWVzID0gc2VsZi5maWVsZCgnbWFfdmFsdWVzJykKLSAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShrZXlzWydka19zaXplJ10pOgotICAgICAgICAgICAgZXAgPSBrZXlzWydka19lbnRyaWVzJ10uYWRkcmVzcyArIGkKKyAgICAgICAgZW50cmllcywgbmVudHJpZXMgPSBzZWxmLl9nZXRfZW50cmllcyhrZXlzKQorICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKG5lbnRyaWVzKToKKyAgICAgICAgICAgIGVwID0gZW50cmllc1tpXQogICAgICAgICAgICAgaWYgbG9uZyh2YWx1ZXMpOgogICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cih2YWx1ZXNbaV0pCiAgICAgICAgICAgICBlbHNlOgpAQCAtNzA3LDYgKzcwOCwzMyBAQAogICAgICAgICAgICAgcHlvcF92YWx1ZS53cml0ZV9yZXByKG91dCwgdmlzaXRlZCkKICAgICAgICAgb3V0LndyaXRlKCd9JykKIAorICAgIGRlZiBfZ2V0X2VudHJpZXMoc2VsZiwga2V5cyk6CisgICAgICAgIGRrX25lbnRyaWVzID0gaW50KGtleXNbJ2RrX25lbnRyaWVzJ10pCisgICAgICAgIGRrX3NpemUgPSBpbnQoa2V5c1snZGtfc2l6ZSddKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIDw9IFB5dGhvbiAzLjUKKyAgICAgICAgICAgIHJldHVybiBrZXlzWydka19lbnRyaWVzJ10sIGRrX3NpemUKKyAgICAgICAgZXhjZXB0IGdkYi5lcnJvcjoKKyAgICAgICAgICAgICMgPj0gUHl0aG9uIDMuNgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIGRrX3NpemUgPD0gMHhGRjoKKyAgICAgICAgICAgIG9mZnNldCA9IGRrX3NpemUKKyAgICAgICAgZWxpZiBka19zaXplIDw9IDB4RkZGRjoKKyAgICAgICAgICAgIG9mZnNldCA9IDIgKiBka19zaXplCisgICAgICAgIGVsaWYgZGtfc2l6ZSA8PSAweEZGRkZGRkZGOgorICAgICAgICAgICAgb2Zmc2V0ID0gNCAqIGRrX3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCA9IDggKiBka19zaXplCisKKyAgICAgICAgZW50X2FkZHIgPSBrZXlzWydka19pbmRpY2VzJ11bJ2FzXzEnXS5hZGRyZXNzCisgICAgICAgIGVudF9hZGRyID0gZW50X2FkZHIuY2FzdChfdHlwZV91bnNpZ25lZF9jaGFyX3B0cigpKSArIG9mZnNldAorICAgICAgICBlbnRfcHRyX3QgPSBnZGIubG9va3VwX3R5cGUoJ1B5RGljdEtleUVudHJ5JykucG9pbnRlcigpCisgICAgICAgIGVudF9hZGRyID0gZW50X2FkZHIuY2FzdChlbnRfcHRyX3QpCisKKyAgICAgICAgcmV0dXJuIGVudF9hZGRyLCBka19uZW50cmllcworCisKIGNsYXNzIFB5TGlzdE9iamVjdFB0cihQeU9iamVjdFB0cik6CiAgICAgX3R5cGVuYW1lID0gJ1B5TGlzdE9iamVjdCcKIApAQCAtMTQ2NCwyMyArMTQ5MiwzOCBAQAogICAgICAgICAgJycnCiAgICAgICAgIGlmIHNlbGYuaXNfd2FpdGluZ19mb3JfZ2lsKCk6CiAgICAgICAgICAgICByZXR1cm4gJ1dhaXRpbmcgZm9yIHRoZSBHSUwnCi0gICAgICAgIGVsaWYgc2VsZi5pc19nY19jb2xsZWN0KCk6CisKKyAgICAgICAgaWYgc2VsZi5pc19nY19jb2xsZWN0KCk6CiAgICAgICAgICAgICByZXR1cm4gJ0dhcmJhZ2UtY29sbGVjdGluZycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgRGV0ZWN0IGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlczoKLSAgICAgICAgICAgIG9sZGVyID0gc2VsZi5vbGRlcigpCi0gICAgICAgICAgICBpZiBvbGRlciBhbmQgb2xkZXIuX2dkYmZyYW1lLm5hbWUoKSA9PSAnUHlDRnVuY3Rpb25fQ2FsbCc6Ci0gICAgICAgICAgICAgICAgIyBXaXRoaW4gdGhhdCBmcmFtZToKLSAgICAgICAgICAgICAgICAjICAgImZ1bmMiIGlzIHRoZSBsb2NhbCBjb250YWluaW5nIHRoZSBQeU9iamVjdCogb2YgdGhlCi0gICAgICAgICAgICAgICAgIyBQeUNGdW5jdGlvbk9iamVjdCBpbnN0YW5jZQotICAgICAgICAgICAgICAgICMgICAiZiIgaXMgdGhlIHNhbWUgdmFsdWUsIGJ1dCBjYXN0IHRvIChQeUNGdW5jdGlvbk9iamVjdCopCi0gICAgICAgICAgICAgICAgIyAgICJzZWxmIiBpcyB0aGUgKFB5T2JqZWN0Kikgb2YgdGhlICdzZWxmJwotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXR0eXByaW50ZXIgZm9yIHRoZSBmdW5jOgotICAgICAgICAgICAgICAgICAgICBmdW5jID0gb2xkZXIuX2dkYmZyYW1lLnJlYWRfdmFyKCdmdW5jJykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihmdW5jKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUHlDRnVuY3Rpb24gaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgImZ1bmMiKScKKworICAgICAgICAjIERldGVjdCBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXM6CisgICAgICAgIG9sZGVyID0gc2VsZi5vbGRlcigpCisgICAgICAgIGlmIG5vdCBvbGRlcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGNhbGxlciA9IG9sZGVyLl9nZGJmcmFtZS5uYW1lKCkKKyAgICAgICAgaWYgbm90IGNhbGxlcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIGNhbGxlciA9PSAnUHlDRnVuY3Rpb25fQ2FsbCc6CisgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgIyAgICJmdW5jIiBpcyB0aGUgbG9jYWwgY29udGFpbmluZyB0aGUgUHlPYmplY3QqIG9mIHRoZQorICAgICAgICAgICAgIyBQeUNGdW5jdGlvbk9iamVjdCBpbnN0YW5jZQorICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICMgICAic2VsZiIgaXMgdGhlIChQeU9iamVjdCopIG9mIHRoZSAnc2VsZicKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgZnVuYyA9IG9sZGVyLl9nZGJmcmFtZS5yZWFkX3ZhcignZnVuYycpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihmdW5jKQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1B5Q0Z1bmN0aW9uIGludm9jYXRpb24gKHVuYWJsZSB0byByZWFkICJmdW5jIiknCisKKyAgICAgICAgZWxpZiBjYWxsZXIgPT0gJ19QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmNfb2JqJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAnUHlDRnVuY3Rpb24gaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgImZ1bmNfb2JqIiknCiAKICAgICAgICAgIyBUaGlzIGZyYW1lIGlzbid0IHdvcnRoIHJlcG9ydGluZzoKICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQppbmRleCAxMTlkODEyLi5mYmNhNDY5IDEwMDY0NAotLS0gYS9Ub29scy9oZy9oZ3RvdWNoLnB5CisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTcsNyArNyw2IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggZGE0MjQzOC4uOGVmNWZmOCAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE1Niw3ICsxNTYsOCBAQAogIiIiKQogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGltZQpAQCAtMjYzLDggKzI2NCw3IEBACiAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCiAgICAgaWYgJ19weV9leHQnIG5vdCBpbiBnbG9iYWxzKCk6CiAgICAgICAgIGdsb2JhbCBfcHlfZXh0Ci0gICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICAgICAgICAgaWYgdHJpcGxlWzJdID09IGltcC5QWV9TT1VSQ0VdWzBdCisgICAgICAgIF9weV9leHQgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1swXQogCiAgICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCiAgICAgaWYgJ0NWUycgaW4gbmFtZXM6CkBAIC0yNzcsNDUgKzI3Nyw2IEBACiAgICAgICAgICkKIAogCi1kZWYgX2dldF9tb2Rwa2dfcGF0aChkb3R0ZWRfbmFtZSwgcGF0aGxpc3Q9Tm9uZSk6Ci0gICAgIiIiR2V0IHRoZSBmaWxlc3lzdGVtIHBhdGggZm9yIGEgbW9kdWxlIG9yIGEgcGFja2FnZS4KLQotICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIGZpbGUgZm9yIGEgbW9kdWxlLCBhbmQgdG8gYSBkaXJlY3RvcnkgZm9yCi0gICAgYSBwYWNrYWdlLiBSZXR1cm4gTm9uZSBpZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIG9yIGlzIGEgYnVpbHRpbiBvcgotICAgIGV4dGVuc2lvbiBtb2R1bGUuCi0gICAgIiIiCi0gICAgIyBzcGxpdCBvZmYgdG9wLW1vc3QgbmFtZQotICAgIHBhcnRzID0gZG90dGVkX25hbWUuc3BsaXQoJy4nLCAxKQotCi0gICAgaWYgbGVuKHBhcnRzKSA+IDE6Ci0gICAgICAgICMgd2UgaGF2ZSBhIGRvdHRlZCBwYXRoLCBpbXBvcnQgdG9wLWxldmVsIHBhY2thZ2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKHBhcnRzWzBdLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6IGZpbGUuY2xvc2UoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgY2hlY2sgaWYgaXQncyBpbmRlZWQgYSBwYWNrYWdlCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgIyByZWN1cnNpdmVseSBoYW5kbGUgdGhlIHJlbWFpbmluZyBuYW1lIHBhcnRzCi0gICAgICAgICAgICBwYXRobmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgocGFydHNbMV0sIFtwYXRobmFtZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICAjIHBsYWluIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKAotICAgICAgICAgICAgICAgIGRvdHRlZF9uYW1lLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvblsyXSBub3QgaW4gW2ltcC5QWV9TT1VSQ0UsIGltcC5QS0dfRElSRUNUT1JZXToKLSAgICAgICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGF0aG5hbWUgPSBOb25lCi0KLSAgICByZXR1cm4gcGF0aG5hbWUKLQotCiBkZWYgZ2V0RmlsZXNGb3JOYW1lKG5hbWUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgbW9kdWxlIGZpbGVzIGZvciBhIGZpbGVuYW1lLCBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsCiAgICAgb3IgYSBkaXJlY3RvcnkuCkBAIC0zMzAsNyArMjkxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gbGlzdAogCiAgICAgICAgICMgdHJ5IHRvIGZpbmQgbW9kdWxlIG9yIHBhY2thZ2UKLSAgICAgICAgbmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgobmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICAgICAgbmFtZSA9IHNwZWMub3JpZ2luCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKaW5kZXggZjI5NmU2MS4uNDY1OWEzMiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTM1LDcgKzM1LDcgQEAKIHNldCBCVUlMRFg2ND0NCiBzZXQgVEFSR0VUPVJlYnVpbGQNCiBzZXQgVEVTVFRBUkdFVERJUj0NCi1zZXQgUEdPPQ0KK3NldCBQR089LW0gdGVzdCAtcSAtLXBnbw0KIHNldCBCVUlMRE5VR0VUPTENCiBzZXQgQlVJTERaSVA9MQ0KIA0KQEAgLTU3LDYgKzU3LDcgQEAKIGlmICIlMSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLS1wZ28iIChzZXQgUEdPPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1za2lwLXBnbyIgKHNldCBQR089KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICItLXNraXAtbnVnZXQiIChzZXQgQlVJTEROVUdFVD0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tc2tpcC16aXAiIChzZXQgQlVJTERaSVA9KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIA0KQEAgLTEwOSwyMSArMTEwLDE0IEBACiBAZWNobyBvZmYNCiANCiBpZiAiJTEiIEVRVSAieDg2IiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKyAgICBzZXQgUEdPPQ0KICAgICBzZXQgQlVJTEQ9JVBDQlVJTEQld2luMzJcDQogICAgIHNldCBCVUlMRF9QTEFUPVdpbjMyDQogICAgIHNldCBPVVRESVJfUExBVD13aW4zMg0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDg2DQotKSBlbHNlIGlmICIlfjIiIE5FUSAiIiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQotICAgIHNldCBQR089JX4yDQotICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NC1wZ29cDQotICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KLSAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCi0gICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KICkgZWxzZSAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IFBHTz0lfjINCiAgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQogICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQpAQCAtMTM1LDYgKzEyOSwxMiBAQAogICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQogKQ0KIA0KK2lmIGV4aXN0ICIlRCVvYmpcRGVidWdfJU9CSkRJUl9QTEFUJSIgKA0KKyAgICBlY2hvIERlbGV0aW5nICIlRCVvYmpcRGVidWdfJU9CSkRJUl9QTEFUJSINCisgICAgcm1kaXIgL3EvcyAiJUQlb2JqXERlYnVnXyVPQkpESVJfUExBVCUiDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKQ0KKw0KIGlmIGV4aXN0ICIlRCVvYmpcUmVsZWFzZV8lT0JKRElSX1BMQVQlIiAoDQogICAgIGVjaG8gRGVsZXRpbmcgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiDQogICAgIHJtZGlyIC9xL3MgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiDQpAQCAtMTQ2LDQ1ICsxNDYsMzggQEAKICkgZWxzZSAoDQogICAgIHNldCBDRVJUT1BUUz0NCiApDQotDQoraWYgbm90ICIlUEdPJSIgRVFVICIiICgNCisgICAgc2V0IFBHT09QVFM9LS1wZ28tam9iICIlUEdPJSINCispIGVsc2UgKA0KKyAgICBzZXQgUEdPT1BUUz0NCispDQogaWYgbm90ICIlU0tJUEJVSUxEJSIgRVFVICIxIiAoDQotICAgIEBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtZCAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQorICAgIEBlY2hvIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC10ICVUQVJHRVQlICVQR09PUFRTJSAlQ0VSVE9QVFMlDQorICAgIEBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtdCAlVEFSR0VUJSAlUEdPT1BUUyUgJUNFUlRPUFRTJQ0KICAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCiAgICAgQHJlbSBidWlsZC5iYXQgdHVybnMgZWNobyBiYWNrIG9uLCBzbyB3ZSBkaXNhYmxlIGl0IGFnYWluDQogICAgIEBlY2hvIG9mZg0KLSAgICANCi0gICAgaWYgIiVQR08lIiBFUVUgIiIgKA0KLSAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCi0gICAgKSBlbHNlICgNCi0gICAgICAgIEBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtYyBQR0luc3RydW1lbnQgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KLSAgICAgICAgQGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQotICAgICAgICANCi0gICAgICAgIEBkZWwgIiVCVUlMRCUqLnBnYyINCi0gICAgICAgIGlmICIlUEdPJSIgRVFVICJkZWZhdWx0IiAoDQotICAgICAgICAgICAgIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1xIC0tcGdvDQotICAgICAgICApIGVsc2UgaWYgIiVQR08lIiBFUVUgImRlZmF1bHQyIiAoDQotICAgICAgICAgICAgIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1yIC1xIC0tcGdvDQotICAgICAgICAgICAgIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1yIC1xIC0tcGdvDQotICAgICAgICApIGVsc2UgaWYgIiVQR08lIiBFUVUgImRlZmF1bHQxMCIgKA0KLSAgICAgICAgICAgIGZvciAvTCAlJWkgaW4gKDAsIDEsIDkpIGRvICIlQlVJTEQlcHl0aG9uLmV4ZSIgLW0gdGVzdCAtcSAtciAtLXBnbw0KLSAgICAgICAgKSBlbHNlIGlmICIlUEdPJSIgRVFVICJweWJlbmNoIiAoDQotICAgICAgICAgICAgIiVCVUlMRCVweXRob24uZXhlIiAiJVBDQlVJTEQlLi5cVG9vbHNccHliZW5jaFxweWJlbmNoLnB5Ig0KLSAgICAgICAgKSBlbHNlICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiICVQR08lDQotICAgICAgICApDQotICAgICAgICANCi0gICAgICAgIEBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtYyBQR1VwZGF0ZSAtdCBCdWlsZCAlQ0VSVE9QVFMlDQotICAgICkNCisNCisgICAgQGVjaG8gY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZCAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUNCisgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWQgLWUgLXAgJUJVSUxEX1BMQVQlIC10ICVUQVJHRVQlDQogICAgIEBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCiAgICAgQGVjaG8gb2ZmDQogKQ0KIA0KLXNldCBCVUlMRE9QVFM9L3A6QnVpbGRGb3JSZWxlYXNlPXRydWUgL3A6RG93bmxvYWRVcmw9JURPV05MT0FEX1VSTCUgL3A6RG93bmxvYWRVcmxCYXNlPSVET1dOTE9BRF9VUkxfQkFTRSUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQotaWYgIiVQR08lIiBORVEgIiIgc2V0IEJVSUxET1BUUz0lQlVJTERPUFRTJSAvcDpQR09CdWlsZFBhdGg9JUJVSUxEJQ0KLW1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KLW1zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiDQoraWYgIiVPVVRESVJfUExBVCUiIEVRVSAid2luMzIiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQld2luMzJcZW4tdXNcbGF1bmNoZXIubXNpIiAoDQorICAgIG1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitzZXQgQlVJTERPUFRTPS9wOlBsYXRmb3JtPSUxIC9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQogDQogaWYgZGVmaW5lZCBCVUlMRFpJUCAoDQpAQCAtMjEwLDcgKzIwMyw3IEBACiANCiA6SGVscA0KIGVjaG8gYnVpbGRyZWxlYXNlLmJhdCBbLS1vdXQgRElSXSBbLXg4Nl0gWy14NjRdIFstLWNlcnRpZmljYXRlIENFUlROQU1FXSBbLS1idWlsZF0gWy0tcGdvIENPTU1BTkRdDQotZWNobyAgICAgICAgICAgICAgICAgIFstLXNraXAtYnVpbGRdIFstLXNraXAtZG9jXSBbLS1za2lwLW51Z2V0XSBbLS1za2lwLXppcF0NCitlY2hvICAgICAgICAgICAgICAgICAgWy0tc2tpcC1idWlsZF0gWy0tc2tpcC1kb2NdIFstLXNraXAtbnVnZXRdIFstLXNraXAtemlwXSBbLS1za2lwLXBnb10NCiBlY2hvICAgICAgICAgICAgICAgICAgWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCiBlY2hvICAgICAgICAgICAgICAgICAgWy1oXQ0KIGVjaG8uDQpAQCAtMjIwLDkgKzIxMywxMCBAQAogZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCiBlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCiBlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgU3BlY2lmeSBQR08gY29tbWFuZCBmb3IgeDY0IGluc3RhbGxlcnMNCitlY2hvICAgIC0tc2tpcC1wZ28gICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgd2l0aG91dCB1c2luZyBQR08NCiBlY2hvICAgIC0tc2tpcC1udWdldCAgICAgICAgRG8gbm90IGJ1aWxkIE51Z2V0IHBhY2thZ2VzDQogZWNobyAgICAtLXNraXAtemlwICAgICAgICAgIERvIG5vdCBidWlsZCBlbWJlZGRhYmxlIHBhY2thZ2UNCi1lY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQogZWNobyAgICAtLWRvd25sb2FkICAgICAgICAgIFNwZWNpZnkgdGhlIGZ1bGwgZG93bmxvYWQgVVJMIGZvciBNU0lzDQogZWNobyAgICAtLXRlc3QgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIHRlc3QgZGlyZWN0b3J5IHRvIHJ1biB0aGUgaW5zdGFsbGVyIHRlc3RzDQogZWNobyAgICAtaCAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQpAQCAtMjMwLDEzICsyMjQsOCBAQAogZWNobyBJZiBubyBhcmNoaXRlY3R1cmUgaXMgc3BlY2lmaWVkLCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGJlIGJ1aWx0Lg0KIGVjaG8gSWYgLS10ZXN0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBpbnN0YWxsZXIgdGVzdHMgYXJlIG5vdCBydW4uDQogZWNoby4NCi1lY2hvIEZvciB0aGUgLS1wZ28gb3B0aW9uLCBhbnkgUHl0aG9uIGNvbW1hbmQgbGluZSBjYW4gYmUgdXNlZCBhcyB3ZWxsIGFzIHRoZQ0KLWVjaG8gZm9sbG93aW5nIHNob3J0Y3V0czoNCi1lY2hvICAgICBTaG9ydGN1dCAgICAgICAgRGVzY3JpcHRpb24NCi1lY2hvICAgICBkZWZhdWx0ICAgICAgICAgVGVzdCBzdWl0ZSB3aXRoIC0tcGdvDQotZWNobyAgICAgZGVmYXVsdDIgICAgICAgIDJ4IHRlc3Qgc3VpdGUgd2l0aCAtLXBnbyBhbmQgcmFuZG9taXplZCB0ZXN0IG9yZGVyDQotZWNobyAgICAgZGVmYXVsdDEwICAgICAgIDEweCB0ZXN0IHN1aXRlIHdpdGggLS1wZ28gYW5kIHJhbmRvbWl6ZWQgdGVzdCBvcmRlcg0KLWVjaG8gICAgIHB5YmVuY2ggICAgICAgICBweWJlbmNoIHNjcmlwdA0KK2VjaG8gRm9yIHRoZSAtLXBnbyBvcHRpb24sIGFueSBQeXRob24gY29tbWFuZCBsaW5lIGNhbiBiZSB1c2VkLCBvciAnZGVmYXVsdCcgdG8NCitlY2hvIHVzZSB0aGUgZGVmYXVsdCB0YXNrICgtbSB0ZXN0IC0tcGdvKS4NCiBlY2hvLg0KIGVjaG8gVGhlIGZvbGxvd2luZyBzdWJzdGl0dXRpb25zIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZG93bmxvYWQgVVJMOg0KIGVjaG8gICAgIFZhcmlhYmxlICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgIEV4YW1wbGUNCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQppbmRleCA0ZDljOTdhLi4xYzBiZDA4IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTExNiwxMCArMTE2LDExIEBACiAgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzSGVhZGVyKTwvVGV4dD4KICAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CiAKLSAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0zMSIgSGVpZ2h0PSIxMDAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii03MSIgSGVpZ2h0PSIxNTAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KIAotICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTEwMCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KLSAgICAgICAgPEJ1dHRvbiBOYW1lPSJMYXVuY2hCdXR0b24iIFg9IjE4NSIgWT0iLTUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RiIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTGF1bmNoQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiBYPSIxODUiIFk9Ii03MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI4MSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc01heFBhdGhCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii00MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KICAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KICAgICA8L1BhZ2U+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bAppbmRleCBlZDc5MjQ2Li40MzUwNmQ2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTE0Miw0ICsxNDIsNyBAQAogICA8U3RyaW5nIElkPSJGYWlsdXJlV1MySzNPckVhcmxpZXIiPldpbmRvd3MgU2VydmVyIDIwMDggU1AyIG9yIGxhdGVyIGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgYW5kIHVzZSBbV2l4QnVuZGxlTmFtZV0uCiAKIFZpc2l0ICZsdDthIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIiZndDtweXRob24ub3JnJmx0Oy9hJmd0OyB0byBkb3dubG9hZCBQeXRob24gMy40LjwvU3RyaW5nPgorCisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIj5EaXNhYmxlIHBhdGggbGVuZ3RoIGxpbWl0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uTm90ZSI+Q2hhbmdlcyB5b3VyIG1hY2hpbmUgY29uZmlndXJhdGlvbiB0byBhbGxvdyBwcm9ncmFtcywgaW5jbHVkaW5nIFB5dGhvbiwgdG8gYnlwYXNzIHRoZSAyNjAgY2hhcmFjdGVyICJNQVhfUEFUSCIgbGltaXRhdGlvbi48L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCmluZGV4IDZhNjdlZTIuLmU4ODk4MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTExLDEwICsxMSw2IEBACiAjaW5jbHVkZSAicGNoLmgiCiAKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfV0lORE9XX0NMQVNTID0gTCJQeXRob25CQSI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCA9IEwiTGF1bmNoVGFyZ2V0IjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCA9IEwiTGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMgPSBMIkxhdW5jaEFyZ3VtZW50cyI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4gPSBMIkxhdW5jaEhpZGRlbiI7CiBzdGF0aWMgY29uc3QgRFdPUkQgUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgPSAzMDsKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiA9IEwiV2l4QnVuZGxlRmlsZVZlcnNpb24iOwogCkBAIC0xMjksMTEgKzEyNSwxMSBAQAogICAgIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sCiAKICAgICAvLyBTdWNjZXNzIHBhZ2UKLSAgICBJRF9MQVVOQ0hfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwKIAogICAgIC8vIEZhaWx1cmUgcGFnZQogICAgIElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLApAQCAtMTg4LDExICsxODQsMTEgQEAKICAgICB7IElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwgTCJPdmVyYWxsUHJvZ3Jlc3NUZXh0IiB9LAogICAgIHsgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJQcm9ncmVzc0NhbmNlbEJ1dHRvbiIgfSwKIAotICAgIHsgSURfTEFVTkNIX0JVVFRPTiwgTCJMYXVuY2hCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX1RFWFQsIEwiU3VjY2Vzc1RleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgTCJTdWNjZXNzUmVzdGFydFRleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBMIlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiB9LAogICAgIHsgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLCBMIlN1Y2Nlc3NDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgTCJTdWNjZXNzTWF4UGF0aEJ1dHRvbiIgfSwKIAogICAgIHsgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIEwiRmFpbHVyZUxvZ0ZpbGVMaW5rIiB9LAogICAgIHsgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIEwiRmFpbHVyZU1lc3NhZ2VUZXh0IiB9LApAQCAtNDM2LDYgKzQzMiwxMSBAQAogICAgICAgICBjYXNlIElEX1VOSU5TVEFMTF9CVVRUT046CiAgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwpOwogICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTjoKKyAgICAgICAgICAgIEVuYWJsZU1heFBhdGhTdXBwb3J0KCk7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgIExFeGl0OgpAQCAtNTMzLDkgKzUzNCw4IEBACiAgICAgfQogCiAgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgewotICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgogICAgICAgICBCT09MIHNob3dSZXN0YXJ0QnV0dG9uID0gRkFMU0U7Ci0gICAgICAgIEJPT0wgbGF1bmNoVGFyZ2V0RXhpc3RzID0gRkFMU0U7CiAgICAgICAgIExPQ19TVFJJTkcgKnN1Y2Nlc3NUZXh0ID0gbnVsbHB0cjsKICAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAgICAgICAgIApAQCAtNTQzLDggKzU0Myw2IEBACiAgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKICAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKLSAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKQEAgLTU3MSw5ICs1NjksNDEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0xBVU5DSF9CVVRUT04sIGxhdW5jaFRhcmdldEV4aXN0cyAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA8IF9wbGFubmVkQWN0aW9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgc2hvd1Jlc3RhcnRCdXR0b24pOworCisgICAgICAgIGlmIChfY29tbWFuZC5hY3Rpb24gIT0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMIHx8CisgICAgICAgICAgICAhSXNXaW5kb3dzVmVyc2lvbk9yR3JlYXRlcigxMCwgMCwgMCkpIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBEV09SRCBkYXRhVHlwZSA9IDAsIGJ1ZmZlciA9IDAsIGJ1ZmZlckxlbiA9IHNpemVvZihidWZmZXIpOworICAgICAgICAgICAgSEtFWSBoS2V5OworICAgICAgICAgICAgTFJFU1VMVCByZXMgPSBSZWdPcGVuS2V5RXhXKAorICAgICAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgICAgICAgICBMIlNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0iLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgS0VZX1JFQUQsCisgICAgICAgICAgICAgICAgJmhLZXkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIEwiTG9uZ1BhdGhzRW5hYmxlZCIsIG51bGxwdHIsICZkYXRhVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgKExQQllURSkmYnVmZmVyLCAmYnVmZmVyTGVuKTsKKyAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIG9wZW4gU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MgJiYgZGF0YVR5cGUgPT0gUkVHX0RXT1JEICYmIGJ1ZmZlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgVFJVRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIHJlYWQgTG9uZ1BhdGhzRW5hYmxlZCB2YWx1ZTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkhpZGluZyBNQVhfUEFUSCBidXR0b24gYmVjYXVzZSBpdCBpcyBhbHJlYWR5IGVuYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgewpAQCAtNjI2LDYgKzY1NiwzNCBAQAogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKSB7CisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyLCBkZWZhdWx0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gZ2V0IFRhcmdldERpciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBXU1RSIHB5dGhvbncgPSBudWxscHRyOworICAgICAgICBTdHJBbGxvY0Zvcm1hdHRlZCgmcHl0aG9udywgTCIlbHNcXHB5dGhvbncuZXhlIiwgdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKCFweXRob253IHx8ICFweXRob253WzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcHl0aG9udy5leGUgcGF0aCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBDV1NUUiBhcmd1bWVudHMgPSBMIi1jIFwiaW1wb3J0IHdpbnJlZzsgIgorICAgICAgICAgICAgIndpbnJlZy5TZXRWYWx1ZUV4KCIKKyAgICAgICAgICAgICAgICAid2lucmVnLkNyZWF0ZUtleSh3aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCAiCisgICAgICAgICAgICAgICAgICAgICJyJ1NZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0nKSwgIgorICAgICAgICAgICAgICAgICInTG9uZ1BhdGhzRW5hYmxlZCcsICIKKyAgICAgICAgICAgICAgICAiTm9uZSwgIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuUkVHX0RXT1JELCAiCisgICAgICAgICAgICAgICAgIjEiCisgICAgICAgICAgICAiKVwiIjsKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJFeGVjdXRpbmcgJWxzICVscyIsIHB5dGhvbncsIGFyZ3VtZW50cyk7CisgICAgICAgIEhJTlNUQU5DRSByZXMgPSBTaGVsbEV4ZWN1dGVXKDAsIEwicnVuYXMiLCBweXRob253LCBhcmd1bWVudHMsIE5VTEwsIFNXX0hJREUpOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgInJldHVybiBjb2RlIDB4JTA4eCIsIHJlcyk7CisgICAgfQogCiBwdWJsaWM6IC8vIElCb290c3RyYXBwZXJBcHBsaWNhdGlvbgogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QIE9uU3RhcnR1cCgpIHsKQEAgLTEyMTYsMTIgKzEyNzQsNiBAQAogICAgIH0KIAogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkxhdW5jaEFwcHJvdmVkRXhlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIERXT1JEIC8qcHJvY2Vzc0lkKi8pIHsKLSAgICAgICAgaWYgKEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9BQ0NFU1NfREVOSUVEKSA9PSBoclN0YXR1cykgewotICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAKIApAQCAtMTg2NywxMCArMTkxOSw2IEBACiAgICAgICAgICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgICAgICAvLyBDdXN0b21pemUgY29tbWFuZHMKICAgICAgICAgICAgIC8vIFN1Y2Nlc3MvZmFpbHVyZSBjb21tYW5kcwotICAgICAgICAgICAgY2FzZSBJRF9MQVVOQ0hfQlVUVE9OOgotICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotCiAgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT046IF9fZmFsbHRocm91Z2g7CiAgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT046CiAgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrUmVzdGFydEJ1dHRvbigpOwpAQCAtMjM3Miw2OSArMjQyMCw2IEBACiAgICAgfQogCiAKLSAgICAvLwotICAgIC8vIE9uQ2xpY2tMYXVuY2hCdXR0b24gLSBsYXVuY2ggdGhlIGFwcCBmcm9tIHRoZSBzdWNjZXNzIHBhZ2UuCi0gICAgLy8KLSAgICB2b2lkIE9uQ2xpY2tMYXVuY2hCdXR0b24oKSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6QXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICAgICAgaW50IG5DbWRTaG93ID0gU1dfU0hPV05PUk1BTDsKLQotICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRILCAmc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZSAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7Ci0KLSAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQsICZzY3pMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCwgJnNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgZWxldmF0ZWQgaWQgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUywgJnNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggYXJndW1lbnRzICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOKSkgewotICAgICAgICAgICAgbkNtZFNob3cgPSBTV19ISURFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgJiYgIV90cmllZFRvTGF1bmNoRWxldmF0ZWQpIHsKLSAgICAgICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBUUlVFOwotICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5MYXVuY2hBcHByb3ZlZEV4ZShfaFduZCwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsIDApOwotICAgICAgICAgICAgaWYgKEZBSUxFRChocikpIHsKLSAgICAgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBsYXVuY2ggZWxldmF0ZWQgdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLQotICAgICAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCi0gICAgICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsICZzY3pBcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggYXJndW1lbnRzIHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhyID0gU2hlbEV4ZWMoc2N6TGF1bmNoVGFyZ2V0LCBzY3pBcmd1bWVudHMsIEwib3BlbiIsIG51bGxwdHIsIG5DbWRTaG93LCBfaFduZCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOwotICAgICAgICB9Ci0KLSAgICBMRXhpdDoKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6QXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KIAogICAgIC8vCiAgICAgLy8gT25DbGlja1Jlc3RhcnRCdXR0b24gLSBhbGxvd3MgdGhlIHJlc3RhcnQgYW5kIGNsb3NlcyB0aGUgYXBwLgpAQCAtMzE1Nyw3ICszMTQyLDYgQEAKICAgICAgICAgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSA9IFVJTlRfTUFYOwogICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CiAgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gRkFMU0U7Ci0gICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBGQUxTRTsKIAogICAgICAgICBfc3VwcHJlc3NQYWludCA9IEZBTFNFOwogCkBAIC0zMjQyLDcgKzMyMjYsNiBAQAogICAgIFVJTlQgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZTsKICAgICBCT09MIF90YXNrYmFyQnV0dG9uT0s7CiAgICAgQk9PTCBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZTsKLSAgICBCT09MIF90cmllZFRvTGF1bmNoRWxldmF0ZWQ7CiAKICAgICBCT09MIF9zdXBwcmVzc1BhaW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28gYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCmluZGV4IGVkYTA4ODQuLjAyYTQ1NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cworKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKQEAgLTUsNyArNSw3IEBACiAgIDxCdW5kbGUgTmFtZT0iIShsb2MuRnVsbFByb2R1Y3ROYW1lKSIKICAgICAgICAgICBVcGdyYWRlQ29kZT0iJCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSIKICAgICAgICAgICBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIKLSAgICAgICAgICBJY29uU291cmNlRmlsZT0iYnVuZGxlLmljbyIKKyAgICAgICAgICBJY29uU291cmNlRmlsZT0iLi5cLi5cLi5cUENcaWNvbnNcc2V0dXAuaWNvIgogICAgICAgICAgIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIKICAgICAgICAgICBBYm91dFVybD0iaHR0cDovL3d3dy5weXRob24ub3JnLyIKICAgICAgICAgICBEaXNhYmxlTW9kaWZ5PSJidXR0b24iCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uLnd4cyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCmluZGV4IDRlZmFkNjUuLjM5OGQ5NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb24ud3hzCisrKyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCkBAIC0xLDYgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KICAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUk9PVFJFR0lTVFJZS0VZIiBWYWx1ZT0iU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmUiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwkKHZhci5TaG9ydFZlcnNpb24pJCh2YXIuUHlBcmNoRXh0KSQodmFyLlB5VGVzdEV4dCkiIC8+CiAgICAgPC9GcmFnbWVudD4KICAgICAKQEAgLTE2LDEwICsyMCwxMiBAQAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPFByb3BlcnR5IElkPSJVcGdyYWRlVGFibGUiIFZhbHVlPSIxIiAvPgogICAgICAgICAKKyAgICAgICAgPD9pZm5kZWYgU3VwcHJlc3NVcGdyYWRlVGFibGUgPz4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IkRPV05HUkFERSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJubyIgT25seURldGVjdD0ieWVzIiAvPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJVUEdSQURFIiBNaW5pbXVtPSIkKHZhci5VcGdyYWRlTWluaW11bVZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09Im5vIiAvPgogICAgICAgICA8L1VwZ3JhZGU+CisgICAgICAgIDw/ZW5kaWYgPz4KICAgICAgICAgCiAgICAgICAgIDw/aWZkZWYgQ29yZVVwZ3JhZGVDb2RlID8+CiAgICAgICAgIDw/aWYgJCh2YXIuVXBncmFkZUNvZGUpIT0kKHZhci5Db3JlVXBncmFkZUNvZGUpID8+CkBAIC00MCw3ICs0Niw3IEBACiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8IS0tIEluY2x1ZGUgYW4gaWNvbiBmb3IgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBkaWFsb2cgLS0+Ci0gICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbi5pY28iIC8+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweXRob24uaWNvIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgpAQCAtNTcsNyArNjMsOSBAQAogICAgIDwhLS0gVG9wLWxldmVsIGRpcmVjdG9yaWVzIC0tPgogICAgIDxGcmFnbWVudD4KICAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+Ci0gICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJETExzIiBOYW1lPSJETExzIiAvPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyI+CisgICAgICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iQ2F0YWxvZ3MiIC8+CisgICAgICAgICAgICA8L0RpcmVjdG9yeT4KICAgICAgICAgPC9EaXJlY3RvcnlSZWY+CiAgICAgPC9GcmFnbWVudD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQppbmRleCA4ZDAzNTI2Li5jOTVjMjcxIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQorKysgYi9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMTQsNCArMTQsNSBAQAogICAgIDxTdHJpbmcgSWQ9Ik5vRG93bmdyYWRlIj5BIG5ld2VyIHZlcnNpb24gb2YgIShsb2MuUHJvZHVjdE5hbWUpIGlzIGFscmVhZHkgaW5zdGFsbGVkLjwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IkluY29ycmVjdENvcmUiPkFuIGluY29ycmVjdCB2ZXJzaW9uIG9mIGEgcHJlcmVxdWlzaXRlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiBQbGVhc2UgdW5pbnN0YWxsIGFueSBvdGhlciB2ZXJzaW9ucyBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgYW5kIHRyeSBpbnN0YWxsaW5nIHRoaXMgYWdhaW4uPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iTm9UYXJnZXREaXIiPlRoZSBUQVJHRVRESVIgdmFyaWFibGUgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGludm9raW5nIHRoaXMgaW5zdGFsbGVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik1hbnVmYWN0dXJlclN1cHBvcnRVcmwiPmh0dHA6Ly93d3cucHl0aG9uLm9yZy88L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKaW5kZXggZDI2YTYwMy4uMjRkZjBmNSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCkBAIC0xNCw2ICsxNCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZS53eHMKaW5kZXggMTU0Y2VlNS4uMDNkNDNjNiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGUud3hzCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpAQCAtOSw2ICs5LDcgQEAKICAgICAgICAgCiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbiIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcmVnIiBQcmltYXJ5PSJ5ZXMiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV90eHQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9pY29ucyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KQEAgLTI0LDcgKzI1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgLz4KICAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfTWVudURpciIgRGlyZWN0b3J5PSJNZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgotICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoXEluc3RhbGxHcm91cCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuUHJvZHVjdE5hbWUpIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbGVkRmVhdHVyZXMiIE5hbWU9IlNob3J0Y3V0cyIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCmluZGV4IDI3NTQ1Y2EuLmNmMDg1YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKQEAgLTEwLDYgKzEwLDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZC53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCmluZGV4IDU3N2ZiZTUuLjFmOWUyOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTQsNCArNCw1IEBACiAgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5leGVjdXRhYmxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+TGF1bmNoZXMgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBpbnRlcnByZXRlci48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTdXBwb3J0VXJsIj5odHRwOi8vd3d3LnB5dGhvbi5vcmcvPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwppbmRleCA5ZTQ3YjVkLi4wMTM4NTg3IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCkBAIC0yOCw2ICsyOCw5IEBACiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbncuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvbndFeGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9udy5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aCIgTmFtZT0iV2luZG93ZWRFeGVjdXRhYmxlUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob253LmV4ZV0iIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InZjcnVudGltZTE0MC5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CiAgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0idmNydW50aW1lMTQwLmRsbCIgU291cmNlPSIhKGJpbmRwYXRoLnJlZGlzdCl2Y3J1bnRpbWUxNDAuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CkBAIC02NiwxMCArNjksMTMgQEAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX2ljb25zIj4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5LmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHkuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5LmljbyIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweWMuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5Yy5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHljLmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5Yy5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHljLmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweWQuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5ZC5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHlkLmljbyIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKaW5kZXggNGY0Yzg2OS4uYmYxMjEzZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKQEAgLTEwLDYgKzEwLDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcGRiLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDQzYzIxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cwpAQCAtMCwwICsxLDI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJPT1RSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3JlZyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJDb21tb25QeXRob25SZWdpc3RyYXRpb24iIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuQ29tbW9uUHl0aG9uUmVnQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltST09UUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLk1hbnVmYWN0dXJlcikiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3VwcG9ydFVybCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuTWFudWZhY3R1cmVyU3VwcG9ydFVybCkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlB5dGhvblJlZ2lzdHJhdGlvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob25SZWdDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5TaG9ydGN1dE5hbWUpIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN1cHBvcnRVcmwiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlN1cHBvcnRVcmwpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iVmVyc2lvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuTG9uZ1ZlcnNpb24pIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3lzVmVyc2lvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuU2hvcnRWZXJzaW9uKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN5c0FyY2hpdGVjdHVyZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuUGxhdGZvcm1BcmNoaXRlY3R1cmUpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2ogYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagppbmRleCAwMWE5ZGNiLi44OTM1Y2U4IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagpAQCAtNSw3ICs1LDcgQEAKICAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgogICAgICAgICA8T3V0cHV0TmFtZT5sYXVuY2hlcjwvT3V0cHV0TmFtZT4KICAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KLSAgICAgICAgPERlZmluZUNvbnN0YW50cz5VcGdyYWRlQ29kZT0xQjY4QTBFQy00REQzLTUxMzQtODQwRS03Mzg1NEIwODYzRjE7JChEZWZpbmVDb25zdGFudHMpPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+VXBncmFkZUNvZGU9MUI2OEEwRUMtNEREMy01MTM0LTg0MEUtNzM4NTRCMDg2M0YxO1N1cHByZXNzVXBncmFkZVRhYmxlPTE7JChEZWZpbmVDb25zdGFudHMpPC9EZWZpbmVDb25zdGFudHM+CiAgICAgICAgIDxJZ25vcmVDb21tb25XeGxUZW1wbGF0ZXM+dHJ1ZTwvSWdub3JlQ29tbW9uV3hsVGVtcGxhdGVzPgogICAgICAgICA8U3VwcHJlc3NJQ0VzPklDRTgwPC9TdXBwcmVzc0lDRXM+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKaW5kZXggZWJkODc1Yy4uN2RlMTMxYSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cworKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCkBAIC01LDcgKzUsMTAgQEAKICAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KICAgICAgICAgCiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iU3VwcHJlc3NfVEFSR0VURElSX0NoZWNrIiBWYWx1ZT0iMSIgLz4KLSAgICAgICAgPFByb3BlcnR5UmVmIElkPSJBUlBQUk9EVUNUSUNPTiIgLz4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXGxhdW5jaGVyLmljbyIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBQUk9EVUNUSUNPTiIgVmFsdWU9IkFSUEljb24iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQTk9NT0RJRlkiIFZhbHVlPSIxIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkRJU0FCTEVBRFZUU0hPUlRDVVRTIiBWYWx1ZT0iMSIgLz4KIAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX2V4ZSIgUHJpbWFyeT0ieWVzIiAvPgpAQCAtMjYsMTggKzI5LDIxIEBACiAgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5Q1UiPk5PVCBJbnN0YWxsZWQgQU5EIE5PVCBBTExVU0VSUz0xPC9DdXN0b20+CiAgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iQ29zdEZpbmFsaXplIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIj5OT1QgSW5zdGFsbGVkIEFORCBBTExVU0VSUz0xPC9DdXN0b20+CiAKLSAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsVmFsaWRhdGUiPlVQR1JBREUgb3IgUkVNT1ZFXzM1MF9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KKyAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsVmFsaWRhdGUiPlVQR1JBREUgb3IgUkVNT1ZFXzM1MF9MQVVOQ0hFUiBvciBSRU1PVkVfMzYwQTFfTEFVTkNIRVI8L1JlbW92ZUV4aXN0aW5nUHJvZHVjdHM+CiAgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KIAorICAgICAgICA8IS0tIFVwZ3JhZGUgYWxsIHZlcnNpb25zIG9mIHRoZSBsYXVuY2hlciAtLT4KKyAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IkRPV05HUkFERSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJubyIgT25seURldGVjdD0ieWVzIiAvPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJVUEdSQURFIiBNaW5pbXVtPSIwLjAuMC4wIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09Im5vIiAvPgorICAgICAgICA8L1VwZ3JhZGU+CiAgICAgICAgIDwhLS0gUHl0aG9uIDMuNS4wIHNoaXBwZWQgd2l0aCBhIGRpZmZlcmVudCBVcGdyYWRlQ29kZSAtLT4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IkE3MTUzMEI5LUU4OUQtNTNEQi05QzJELUM2RDc1NTE4NzZEOCI+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iMC4wLjAuMCIgUHJvcGVydHk9IlJFTU9WRV8zNTBfTEFVTkNIRVIiIC8+CiAgICAgICAgIDwvVXBncmFkZT4KICAgICAgICAgPCEtLSBQeXRob24gMy42LjBhMSBzaGlwcGVkIHdpdGggYSBkaWZmZXJlbnQgVXBncmFkZUNvZGUgLS0+CiAgICAgICAgIDxVcGdyYWRlIElkPSIzOTQ3NTBDMC03ODgwLTVBOEYtOTk5Ri05MzM5NjVGQkNGQjQiPgotICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBQcm9wZXJ0eT0iUkVNT1ZFXzM2MEExX0xBVU5DSEVSIiAvPgotICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBQcm9wZXJ0eT0iQkxPQ0tfMzYwQTFfTEFVTkNIRVIiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iMC4wLjAuMCIgUHJvcGVydHk9IlJFTU9WRV8zNjBBMV9MQVVOQ0hFUiIgLz4KICAgICAgICAgPC9VcGdyYWRlPgotICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vRG93bmdyYWRlKSI+SW5zdGFsbGVkIE9SIE5PVCBCTE9DS18zNjBBMV9MQVVOQ0hFUjwvQ29uZGl0aW9uPgogICAgIDwvUHJvZHVjdD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKaW5kZXggZTRjMWFhYS4uYTdlMzgyNyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgPFN0cmluZyBJZD0iUHl0aG9uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Db21waWxlZEZpbGVEZXNjcmlwdGlvbiI+Q29tcGlsZWQgUHl0aG9uIEZpbGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25FeHRlbnNpb25EZXNjcmlwdGlvbiI+UHl0aG9uIEV4dGVuc2lvbiBNb2R1bGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwppbmRleCA5ODE5NjFhLi5kYWNlOTdlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cworKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwpAQCAtMjcsMTQgKzI3LDE4IEBACiAgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uQ29tcGlsZWRGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7QkVBMjE4RDItNjk1MC00OTdCLTk0MzQtNjE2ODNFQzA2NUZFfSIgVHlwZT0ic3RyaW5nIiAvPgogCi0gICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uRXh0ZW5zaW9uIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uRXh0ZW5zaW9uRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMyI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5ZCIgLz4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKworICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iNSI+CiAgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5eiIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgogICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KICAgICAgICAgICAgICAgICA8L1Byb2dJZD4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5BcmNoaXZlRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0ie0JFQTIxOEQyLTY5NTAtNDk3Qi05NDM0LTYxNjgzRUMwNjVGRX0iIFR5cGU9InN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSI1Ij4KICAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6dyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KICAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qIGIvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvagppbmRleCA2NGU1ODc4Li4yNjMxMWVhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKQEAgLTI3LDYgKzI3LDcgQEAKICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKUxpYjwvVGFyZ2V0QmFzZT4KICAgICAgICAgICAgIDxUYXJnZXRfPkxpYlw8L1RhcmdldF8+CiAgICAgICAgICAgICA8R3JvdXA+bGliX3B5PC9Hcm91cD4KKyAgICAgICAgICAgIDxJbmNsdWRlSW5DYXQ+dHJ1ZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwppbmRleCAyYjA0YmNiLi4yYTNiOWVjIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYi53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9weSIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2ZpbGVzIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwppbmRleCBhOTkyNzg0Li5hODNmNTQ0IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCkBAIC0xLDYgKzEsNiBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgotICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzID8+CisgICAgPD9kZWZpbmUgZXh0cz1weWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZDtfYnoyO19lbGVtZW50dHJlZTtfc29ja2V0O19zc2w7X21zaTtfY3R5cGVzO19oYXNobGliO19tdWx0aXByb2Nlc3Npbmc7X2x6bWE7X2RlY2ltYWw7X292ZXJsYXBwZWQ7X3NxbGl0ZTM7X2FzeW5jaW8gPz4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2V4dGVuc2lvbnMiPgogICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CkBAIC02MywxNiArNjMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJQeXRob25QYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbTGliXTtbRExMc10iIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBEaXJlY3Rvcnk9IkxpYl9zaXRlX3BhY2thZ2VzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBOYW1lPSJSRUFETUUudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRSIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmUiIERpcmVjdG9yeT0iTGliX2xpYjJ0bzMiIEd1aWQ9IiQodmFyLlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9maWxlcyIgTmFtZT0iKi5waWNrbGUiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgotICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJMaWIiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliX3NpdGVfcGFja2FnZXMiIE5hbWU9InNpdGUtcGFja2FnZXMiIC8+Ci0gICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9jYXQiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGliX2NhdCIgRGlyZWN0b3J5PSJDYXRhbG9ncyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX2xpYi5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qIGIvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKaW5kZXggMWFmNmRkMi4uZjc4ZTZmZiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgPFRhcmdldFBhdGg+JChPdXRwdXRQYXRoKVwkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9UYXJnZXRQYXRoPgogICAgICAgICA8Q2xlYW5Db21tYW5kPnJtZGlyIC9xL3MgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIjwvQ2xlYW5Db21tYW5kPgogICAgICAgICA8QXJndW1lbnRzPiIkKFB5dGhvbkV4ZSkiICIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcbWFrZV96aXAucHkiPC9Bcmd1bWVudHM+Ci0gICAgICAgIDxBcmd1bWVudHM+JChBcmd1bWVudHMpIC1lIC1vICIkKFRhcmdldFBhdGgpIiAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiIC1iICIkKEJ1aWxkUGF0aC5UcmltRW5kKCdcJykpIjwvQXJndW1lbnRzPgorICAgICAgICA8QXJndW1lbnRzPiQoQXJndW1lbnRzKSAtZSAtbyAiJChUYXJnZXRQYXRoKSIgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIiAtYSAkKEFyY2hOYW1lKTwvQXJndW1lbnRzPgogICAgICAgICA8RW52aXJvbm1lbnQ+c2V0IERPQ19GSUxFTkFNRT1weXRob24kKFB5dGhvblZlcnNpb24pLmNobQogc2V0IFZDUkVESVNUX1BBVEg9JChWUzE0MENPTU5UT09MUylcLi5cLi5cVkNccmVkaXN0XCQoUGxhdGZvcm0pXE1pY3Jvc29mdC5WQzE0MC5DUlQ8L0Vudmlyb25tZW50PgogICAgIDwvUHJvcGVydHlHcm91cD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQppbmRleCA5ZGI5NmNiLi44ZGJlODNlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHkKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0yMCw2ICsyMCw3IEBACiAgICAgJ19jdHlwZXNfdGVzdCcsCiAgICAgJ190ZXN0YnVmZmVyJywKICAgICAnX3Rlc3RjYXBpJywKKyAgICAnX3Rlc3Rjb25zb2xlJywKICAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZScsCiAgICAgJ190ZXN0bXVsdGlwaGFzZScsCiAgICAgJ3h4bGltaXRlZCcsCkBAIC00MiwxMSArNDMsMTYgQEAKIH0KIAogRVhDTFVERV9GSUxFX0ZST01fTElCUyA9IHsKKyAgICAnbGlibHptYScsCiAgICAgJ3NzbGVheScsCiAgICAgJ2xpYmVheScsCiAgICAgJ3B5dGhvbjNzdHViJywKIH0KIAorRVhDTFVERURfRklMRVMgPSB7CisgICAgJ3B5c2hlbGxleHQnLAorfQorCiBkZWYgaXNfbm90X2RlYnVnKHApOgogICAgIGlmIERFQlVHX1JFLnNlYXJjaChwLm5hbWUpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTU0LDcgKzYwLDcgQEAKICAgICBpZiBUS1RDTF9SRS5zZWFyY2gocC5uYW1lKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICByZXR1cm4gcC5zdGVtLmxvd2VyKCkgbm90IGluIERFQlVHX0ZJTEVTCisgICAgcmV0dXJuIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBERUJVR19GSUxFUyBhbmQgcC5zdGVtLmxvd2VyKCkgbm90IGluIEVYQ0xVREVEX0ZJTEVTCiAKIGRlZiBpc19ub3RfZGVidWdfb3JfcHl0aG9uKHApOgogICAgIHJldHVybiBpc19ub3RfZGVidWcocCkgYW5kIG5vdCBQWVRIT05fRExMX1JFLnNlYXJjaChwLm5hbWUpCkBAIC02NCw4ICs3MCw2IEBACiAgICAgaWYgcC5pc19kaXIoKToKICAgICAgICAgaWYgbmFtZSBpbiBFWENMVURFX0ZST01fTElCUkFSWToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ3BsYXQtJyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbmFtZSA9PSAndGVzdCcgYW5kIHAucGFydHNbLTJdLmxvd2VyKCkgPT0gJ2xpYic6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbmFtZSBpbiB7J3Rlc3QnLCAndGVzdHMnfSBhbmQgcC5wYXJ0c1stM10ubG93ZXIoKSA9PSAnbGliJzoKQEAgLTkwLDI1ICs5NCwyNyBAQAogCiAgICAgcmV0dXJuIHAuc3VmZml4Lmxvd2VyKCkgaW4geycucHknLCAnLnB5dycsICcudHh0J30KIAorQkFTRV9OQU1FID0gJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pCisKIEZVTExfTEFZT1VUID0gWwotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uLmV4ZScsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob253LmV4ZScsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob257MC5tYWpvcn0uZGxsJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbyksIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob257MC5tYWpvcn17MC5taW5vcn0uZGxsJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbyksIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdETExzLycsICckYnVpbGQnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAotICAgICgnRExMcy8nLCAnJGJ1aWxkJywgJyouZGxsJywgaXNfbm90X2RlYnVnX29yX3B5dGhvbiksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9udy5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbnt9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8ubWFqb3IpLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3t9LmRsbCcuZm9ybWF0KEJBU0VfTkFNRSksIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWdfb3JfcHl0aG9uKSwKICAgICAoJ2luY2x1ZGUvJywgJ2luY2x1ZGUnLCAnKi5oJywgTm9uZSksCiAgICAgKCdpbmNsdWRlLycsICdQQycsICdweWNvbmZpZy5oJywgTm9uZSksCiAgICAgKCdMaWIvJywgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAotICAgICgnbGlicy8nLCAnJGJ1aWxkJywgJyoubGliJywgaW5jbHVkZV9pbl9saWJzKSwKKyAgICAoJ2xpYnMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5saWInLCBpbmNsdWRlX2luX2xpYnMpLAogICAgICgnVG9vbHMvJywgJ1Rvb2xzJywgJyoqLyonLCBpbmNsdWRlX2luX3Rvb2xzKSwKIF0KIAogRU1CRURfTEFZT1VUID0gWwotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uKi5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAotICAgICgncHl0aG9uezAubWFqb3J9ezAubWlub3J9LnppcCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCAnTGliJywgJyoqLyonLCBpbmNsdWRlX2luX2xpYiksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uKi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCd7fS56aXAnLmZvcm1hdChCQVNFX05BTUUpLCAnTGliJywgJyoqLyonLCBpbmNsdWRlX2luX2xpYiksCiBdCiAKIGlmIG9zLmdldGVudignRE9DX0ZJTEVOQU1FJyk6CkBAIC0xNzIsMTUgKzE3OCwxNSBAQAogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsZCcsIGhlbHA9J1NwZWNpZnkgdGhlIGJ1aWxkIGRpcmVjdG9yeScsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQogICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudC5wYXJlbnQpCiAgICAgb3V0ID0gbnMub3V0Ci0gICAgYnVpbGQgPSBucy5idWlsZAorICAgIGFyY2ggPSBucy5hcmNoCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKQogICAgIGFzc2VydCBub3Qgb3V0IG9yIGlzaW5zdGFuY2Uob3V0LCBQYXRoKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkLCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKIAogICAgIGlmIG5zLnRlbXA6CiAgICAgICAgIHRlbXAgPSBucy50ZW1wCkBAIC0yMDMsMTAgKzIwOSw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIGZvciB0LCBzLCBwLCBjIGluIGxheW91dDoKLSAgICAgICAgICAgIGlmIHMgPT0gJyRidWlsZCc6Ci0gICAgICAgICAgICAgICAgZnMgPSBidWlsZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmcyA9IHNvdXJjZSAvIHMKKyAgICAgICAgICAgIGZzID0gc291cmNlIC8gcy5yZXBsYWNlKCIkYXJjaCIsIGFyY2gpCiAgICAgICAgICAgICBmaWxlcyA9IHJnbG9iKGZzLCBwLCBjKQogICAgICAgICAgICAgZXh0cmFfZmlsZXMgPSBbXQogICAgICAgICAgICAgaWYgcyA9PSAnTGliJyBhbmQgcCA9PSAnKiovKic6CkBAIC0yMTcsOCArMjIwLDEzIEBACiAgICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgY2hhaW4oZmlsZXMsIGV4dHJhX2ZpbGVzKSkKICAgICAgICAgICAgIHByaW50KCdDb3BpZWQge30gZmlsZXMnLmZvcm1hdChjb3BpZWQpKQogCi0gICAgICAgIHdpdGggb3BlbihzdHIodGVtcCAvICdweXZlbnYuY2ZnJyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIHByaW50KCdhcHBsb2NhbCA9IHRydWUnLCBmaWxlPWYpCisgICAgICAgIGlmIG5zLmVtYmVkOgorICAgICAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gKEJBU0VfTkFNRSArICcuX3B0aCcpKSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHByaW50KEJBU0VfTkFNRSArICcuemlwJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcuJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyMgVW5jb21tZW50IHRvIHJ1biBzaXRlLm1haW4oKSBhdXRvbWF0aWNhbGx5JywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcjaW1wb3J0IHNpdGUnLCBmaWxlPWYpCiAKICAgICAgICAgaWYgb3V0OgogICAgICAgICAgICAgdG90YWwgPSBjb3B5X3RvX2xheW91dChvdXQsIHJnbG9iKHRlbXAsICcqKi8qJywgTm9uZSkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwppbmRleCAwY2Y3Yzc3Li42MGFiYmExIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpLnByb3BzCisrKyBiL1Rvb2xzL21zaS9tc2kucHJvcHMKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CiAgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICAgICAgPF9NYWtlQ2F0Q29tbWFuZCBDb25kaXRpb249IickKF9NYWtlQ2F0Q29tbWFuZCknID09ICcnIj5tYWtlY2F0PC9fTWFrZUNhdENvbW1hbmQ+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgogCiAgICAgPEltcG9ydCBQcm9qZWN0PSJ3aXgucHJvcHMiIC8+CkBAIC02OSw2ICs3MCw4IEBACiAgICAgPFByb3BlcnR5R3JvdXA+CiAgICAgICAgIDxCaXRuZXNzPjMyLWJpdDwvQml0bmVzcz4KICAgICAgICAgPEJpdG5lc3MgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjQtYml0PC9CaXRuZXNzPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmU+MzJiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjRiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgogICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgogICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOwogICAgICAgICAgICAgVmVyc2lvbj0kKEluc3RhbGxlclZlcnNpb24pOwpAQCAtNzksNiArODIsNyBAQAogICAgICAgICAgICAgVXBncmFkZU1pbmltdW1WZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuMC4wOwogICAgICAgICAgICAgTmV4dE1ham9yVmVyc2lvbk51bWJlcj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChbbXNidWlsZF06OkFkZCgkKE1pbm9yVmVyc2lvbk51bWJlciksIDEpKS4wLjA7CiAgICAgICAgICAgICBCaXRuZXNzPSQoQml0bmVzcyk7CisgICAgICAgICAgICBQbGF0Zm9ybUFyY2hpdGVjdHVyZT0kKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKTsKICAgICAgICAgICAgIFB5RGVidWdFeHQ9JChQeURlYnVnRXh0KTsKICAgICAgICAgICAgIFB5QXJjaEV4dD0kKFB5QXJjaEV4dCk7CiAgICAgICAgICAgICBQeVRlc3RFeHQ9JChQeVRlc3RFeHQpOwpAQCAtMTAwLDYgKzEwNCw3IEBACiAgICAgICAgICAgICA8R3JvdXA+Z2VuZXJhdGVkX2ZpbGVsaXN0PC9Hcm91cD4KICAgICAgICAgICAgIDxDb25kaXRpb24+PC9Db25kaXRpb24+CiAgICAgICAgICAgICA8RGlza0lkPjwvRGlza0lkPgorICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD5mYWxzZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzPgogICAgICAgICAgICAgPFZpc2libGU+ZmFsc2U8L1Zpc2libGU+CkBAIC0xNTUsNiArMTYwLDEyIEBACiAgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJSZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCI+CiAgICAgICAgICAgICA8VXJpPmxpYjJ0bzMvcGlja2xlczwvVXJpPgogICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iQ29tbW9uUHl0aG9uUmVnQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPnJlZ2lzdHJ5PC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnkvJChPdXRwdXROYW1lKTwvVXJpPgorICAgICAgICA8L19VdWlkPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxUYXJnZXQgTmFtZT0iX0dlbmVyYXRlR3VpZHMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoVGFyZ2V0TmFtZSkgIT0gJ2xhdW5jaGVyJyI+CiAgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS50YXJnZXRzIGIvVG9vbHMvbXNpL21zaS50YXJnZXRzCmluZGV4IDg2YmUzNWIuLjkyODNhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kudGFyZ2V0cworKysgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKQEAgLTEyLDggKzEyLDEwIEBACiAgICAgICAgICAgICAgICAgPF9Tb3VyY2U+JShTb3VyY2UpJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFNvdXJjZUJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fU291cmNlPgogICAgICAgICAgICAgICAgIDxfVGFyZ2V0PiUoVGFyZ2V0XykkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoVGFyZ2V0QmFzZSksICUoRnVsbFBhdGgpKSk8L19UYXJnZXQ+CiAgICAgICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPF9DYXRhbG9nRmlsZXMgSW5jbHVkZT0iQChJbnN0YWxsRmlsZXMpIiBDb25kaXRpb249IiUoSW5zdGFsbEZpbGVzLkluY2x1ZGVJbkNhdCkgYW5kICcnIT0kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoSW5zdGFsbEZpbGVzLkZ1bGxQYXRoKSkpIiAvPgogICAgICAgICA8L0l0ZW1Hcm91cD4KLSAgICAgICAgCisKICAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfRmlsZUxpc3RUYXJnZXQpIiBMaW5lcz0iQChJbnN0YWxsRmlsZXMtPicmcXVvdDslKF9Tb3VyY2UpJnF1b3Q7LCZxdW90OyUoX1RhcmdldCkmcXVvdDssJnF1b3Q7JShHcm91cCkmcXVvdDssJnF1b3Q7JShEaXNrSWQpJnF1b3Q7LCZxdW90OyUoQ29uZGl0aW9uKSZxdW90OycpIiBPdmVyd3JpdGU9InRydWUiIC8+CiAgICAgICAgIDxFeGVjIENvbW1hbmQ9JyIkKFB5dGhvbkV4ZSkiIGNzdl90b193eHMucHkgIiQoX0ZpbGVMaXN0VGFyZ2V0KSIgIiQoX0luc3RhbGxGaWxlc1RhcmdldCkiJwogICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CkBAIC0yNCw2ICsyNiwzNSBAQAogICAgICAgICA8L0l0ZW1Hcm91cD4KICAgICA8L1RhcmdldD4KIAorICAgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVDYXRhbG9nIiBBZnRlclRhcmdldHM9IlByb2Nlc3NJbnN0YWxsRmlsZXMiIENvbmRpdGlvbj0iJ0AoX0NhdGFsb2dGaWxlcyknICE9ICcnIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0NhdEZpbGVTb3VyY2VUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5jZGY8L19DYXRGaWxlU291cmNlVGFyZ2V0PgorICAgICAgICAgICAgPF9DYXRGaWxlVGFyZ2V0PiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClweXRob25fJChNU0J1aWxkUHJvamVjdE5hbWUpLmNhdDwvX0NhdEZpbGVUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGU+W0NhdGFsb2dIZWFkZXJdCitOYW1lPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RmlsZU5hbWUoJChfQ2F0RmlsZVRhcmdldCkpKQorUmVzdWx0RGlyPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RGlyZWN0b3J5TmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitQdWJsaWNWZXJzaW9uPTEKK0NhdGFsb2dWZXJzaW9uPTIKK0hhc2hBbGdvcml0aG1zPVNIQTI1NgorUGFnZUhhc2hlcz1mYWxzZQorRW5jb2RpbmdUeXBlPQorCitbQ2F0YWxvZ0ZpbGVzXQorQChfQ2F0YWxvZ0ZpbGVzLT4nJmx0O0hBU0gmZ3Q7JShGaWxlbmFtZSklKEV4dGVuc2lvbik9JShGdWxsUGF0aCknLCcKKycpCis8L19DYXRGaWxlPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiIExpbmVzPSIkKF9DYXRGaWxlKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9NYWtlQ2F0Q29tbWFuZCkgIiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9TaWduQ29tbWFuZCkgIiQoX0NhdEZpbGVUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIgorICAgICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygkKF9DYXRGaWxlVGFyZ2V0KSkgYW5kICckKF9TaWduQ29tbWFuZCknICE9ICcnIiAvPgorCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KTskKF9DYXRGaWxlVGFyZ2V0KSIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisKICAgICA8VGFyZ2V0IE5hbWU9Il9UcmFuc2Zvcm1XeGxUZW1wbGF0ZXMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBJbnB1dHM9IkAoV3hsVGVtcGxhdGUpOyQoUHlTb3VyY2VQYXRoKWluY2x1ZGVccGF0Y2hsZXZlbC5oIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShGaWxlbmFtZSkud3hsIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInQChXeGxUZW1wbGF0ZSknICE9ICcnIj4KICAgICAgICAgICAgIDxfQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoV3hsVGVtcGxhdGUuRnVsbFBhdGgpKS5SZXBsYWNlKGB7e1Nob3J0VmVyc2lvbn19YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikkKFB5VGVzdEV4dClgKS5SZXBsYWNlKGB7e0xvbmdWZXJzaW9ufX1gLCBgJChQeXRob25WZXJzaW9uKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7Qml0bmVzc319YCwgYCQoQml0bmVzcylgKSk8L19Db250ZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9maWxlcy53eHMgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwppbmRleCBlODAzYWEwLi44MmE5MTE1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwpAQCAtMSw3NyArMSw0MiBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDw/ZGVmaW5lIGV4dHM9X3Rlc3RjYXBpO19jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZTtfdGVzdGNvbnNvbGUgPz4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5weWQiIE5hbWU9Il90ZXN0Y2FwaS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIE5hbWU9Il9jdHlwZXNfdGVzdC5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5weWQiIE5hbWU9Il90ZXN0YnVmZmVyLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2VuZGZvcmVhY2ggPz4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogICAgIAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnNfc3ltYm9scyI+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGkucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGkucGRiIiBOYW1lPSJfdGVzdGNhcGkucGRiIiAvPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfY3R5cGVzX3Rlc3QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXIucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucHlkIiBOYW1lPSJfdGVzdGNhcGlfZC5weWQiIC8+CisgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucHlkIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0X2QucHlkIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5weWQiIE5hbWU9Il90ZXN0YnVmZmVyX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgTmFtZT0iX3Rlc3RjYXBpX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0X2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKaW5kZXggZjQzY2YzMy4uYjdmYzQxZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aCk8L1RhcmdldEJhc2U+CiAgICAgICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgogICAgICAgICAgICAgICAgIDxHcm91cD50b29sc19weTwvR3JvdXA+CisgICAgICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD50cnVlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgIDwvSXRlbUdyb3VwPgogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cyBiL1Rvb2xzL21zaS90b29scy90b29scy53eHMKaW5kZXggOGY4NDE4YS4uN2E4MDVkMCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cworKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCkBAIC05LDYgKzksNyBAQAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3B5IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19zY3JpcHRzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19jYXQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CiAgICAgICAgIDwvRmVhdHVyZT4KICAgICA8L1Byb2R1Y3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cwppbmRleCAzYWUwZGIyLi45Yzc2YjFiIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKQEAgLTEzLDQgKzEzLDExIEBACiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0b29sc19jYXQiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idG9vbHNfY2F0IiBEaXJlY3Rvcnk9IkNhdGFsb2dzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob25fdG9vbHMuY2F0IiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagppbmRleCA4MWI4NGY5Li5kN2U5MzJjIDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCisrKyBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKQEAgLTIzLDcgKzIzLDcgQEAKICAgICAgICAgPENsZWFuQ29tbWFuZD5ybWRpciAvcS9zICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpIjwvQ2xlYW5Db21tYW5kPgogICAgICAgICAKICAgICAgICAgPFB5dGhvbkFyZ3VtZW50cz4iJChQeXRob25FeGUpIiAiJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXC4uXG1zaVxtYWtlX3ppcC5weSI8L1B5dGhvbkFyZ3VtZW50cz4KLSAgICAgICAgPFB5dGhvbkFyZ3VtZW50cz4kKFB5dGhvbkFyZ3VtZW50cykgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkiIC1iICIkKEJ1aWxkUGF0aC5UcmltRW5kKCdcJykpIjwvUHl0aG9uQXJndW1lbnRzPgorICAgICAgICA8UHl0aG9uQXJndW1lbnRzPiQoUHl0aG9uQXJndW1lbnRzKSAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSIgLWEgJChBcmNoTmFtZSk8L1B5dGhvbkFyZ3VtZW50cz4KICAgICAgICAgCiAgICAgICAgIDxQaXBBcmd1bWVudHM+IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClccHl0aG9uLmV4ZSIgLUIgLWMgImltcG9ydCBzeXM7IHN5cy5wYXRoLmFwcGVuZChyJyQoUHlTb3VyY2VQYXRoKVxMaWInKTsgaW1wb3J0IGVuc3VyZXBpcDsgZW5zdXJlcGlwLl9tYWluKCkiPC9QaXBBcmd1bWVudHM+CiAgICAgICAgIDxQYWNrYWdlQXJndW1lbnRzIENvbmRpdGlvbj0iJChQYWNrYWdlcykgIT0gJyciPiIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHB5dGhvbi5leGUiIC1CIC1tIHBpcCBpbnN0YWxsIC1VICQoUGFja2FnZXMpPC9QYWNrYWdlQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCAyODUwMzBlLi43ZTFjYzRlIDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTA0LDYgKzEwNCwxOSBAQAogICAgICAgICBzZWxmLndyaXRlKCIgIitzZWxmLmJpbm9wW3Qub3AuX19jbGFzc19fLl9fbmFtZV9fXSsiPSAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCiAKKyAgICBkZWYgX0FubkFzc2lnbihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5maWxsKCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcoJykKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcpJykKKyAgICAgICAgc2VsZi53cml0ZSgiOiAiKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYW5ub3RhdGlvbikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiA9ICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisKICAgICBkZWYgX1JldHVybihzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJyZXR1cm4iKQogICAgICAgICBpZiB0LnZhbHVlOgpAQCAtMzIyLDkgKzMzNSw3MiBAQAogICAgIGRlZiBfU3RyKHNlbGYsIHRyZWUpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodHJlZS5zKSkKIAorICAgIGRlZiBfSm9pbmVkU3RyKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0pvaW5lZFN0cih0LCBzdHJpbmcud3JpdGUpCisgICAgICAgIHNlbGYud3JpdGUocmVwcihzdHJpbmcuZ2V0dmFsdWUoKSkpCisKKyAgICBkZWYgX0Zvcm1hdHRlZFZhbHVlKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0Zvcm1hdHRlZFZhbHVlKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfZnN0cmluZ19Kb2luZWRTdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICBmb3IgdmFsdWUgaW4gdC52YWx1ZXM6CisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCAiX2ZzdHJpbmdfIiArIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh2YWx1ZSwgd3JpdGUpCisKKyAgICBkZWYgX2ZzdHJpbmdfU3RyKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgdmFsdWUgPSB0LnMucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Db25zdGFudChzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHQudmFsdWUsIHN0cikKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlLnJlcGxhY2UoInsiLCAie3siKS5yZXBsYWNlKCJ9IiwgIn19IikKKyAgICAgICAgd3JpdGUodmFsdWUpCisKKyAgICBkZWYgX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB3cml0ZSgieyIpCisgICAgICAgIGV4cHIgPSBpby5TdHJpbmdJTygpCisgICAgICAgIFVucGFyc2VyKHQudmFsdWUsIGV4cHIpCisgICAgICAgIGV4cHIgPSBleHByLmdldHZhbHVlKCkucnN0cmlwKCJcbiIpCisgICAgICAgIGlmIGV4cHIuc3RhcnRzd2l0aCgieyIpOgorICAgICAgICAgICAgd3JpdGUoIiAiKSAgIyBTZXBhcmF0ZSBwYWlyIG9mIG9wZW5pbmcgYnJhY2tldHMgYXMgInsgeyIKKyAgICAgICAgd3JpdGUoZXhwcikKKyAgICAgICAgaWYgdC5jb252ZXJzaW9uICE9IC0xOgorICAgICAgICAgICAgY29udmVyc2lvbiA9IGNocih0LmNvbnZlcnNpb24pCisgICAgICAgICAgICBhc3NlcnQgY29udmVyc2lvbiBpbiAic3JhIgorICAgICAgICAgICAgd3JpdGUoZiIhe2NvbnZlcnNpb259IikKKyAgICAgICAgaWYgdC5mb3JtYXRfc3BlYzoKKyAgICAgICAgICAgIHdyaXRlKCI6IikKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh0LmZvcm1hdF9zcGVjKS5fX25hbWVfXykKKyAgICAgICAgICAgIG1ldGgodC5mb3JtYXRfc3BlYywgd3JpdGUpCisgICAgICAgIHdyaXRlKCJ9IikKKwogICAgIGRlZiBfTmFtZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSh0LmlkKQogCisgICAgZGVmIF93cml0ZV9jb25zdGFudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChmbG9hdCwgY29tcGxleCkpOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKS5yZXBsYWNlKCJpbmYiLCBJTkZTVFIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKSkKKworICAgIGRlZiBfQ29uc3RhbnQoc2VsZiwgdCk6CisgICAgICAgIHZhbHVlID0gdC52YWx1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh2YWx1ZVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuX3dyaXRlX2NvbnN0YW50LCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIikiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQodC52YWx1ZSkKKwogICAgIGRlZiBfTmFtZUNvbnN0YW50KHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC52YWx1ZSkpCiAKQEAgLTM2OCw3ICs0NDQsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZSgifSIpCiAKICAgICBkZWYgX2NvbXByZWhlbnNpb24oc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKKyAgICAgICAgaWYgdC5pc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhc3luYyBmb3IgIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKICAgICAgICAgc2VsZi53cml0ZSgiIGluICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5pdGVyKQpAQCAtNDEzLDcgKzQ5Miw3IEBACiAgICAgZGVmIF9UdXBsZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSgiKCIpCiAgICAgICAgIGlmIGxlbih0LmVsdHMpID09IDE6Ci0gICAgICAgICAgICAoZWx0LCkgPSB0LmVsdHMKKyAgICAgICAgICAgIGVsdCA9IHQuZWx0c1swXQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlbHQpCiAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKICAgICAgICAgZWxzZToKQEAgLTQ2MCw3ICs1MzksOCBAQAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogMy5fX2Fic19fKCkgaXMgYSBzeW50YXggZXJyb3IsIHNvIGlmIHQudmFsdWUKICAgICAgICAgIyBpcyBhbiBpbnRlZ2VyIGxpdGVyYWwgdGhlbiB3ZSBuZWVkIHRvIGVpdGhlciBwYXJlbnRoZXNpemUKICAgICAgICAgIyBpdCBvciBhZGQgYW4gZXh0cmEgc3BhY2UgdG8gZ2V0IDMgLl9fYWJzX18oKS4KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCk6CisgICAgICAgIGlmICgoaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCkpCisgICAgICAgICAgIG9yIChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5Db25zdGFudCkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS52YWx1ZSwgaW50KSkpOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgIHNlbGYud3JpdGUoIi4iKQogICAgICAgICBzZWxmLndyaXRlKHQuYXR0cikKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CmluZGV4IDA3M2NjYTAuLjU0YThiYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKKysrIGIvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQpAQCAtOTksOCArOTksOCBAQAogIyBBbGlhcwogZ2V0cGFzc3dkID0gaW52aXNpYmxlX2lucHV0CiAKLV9pbnRlZ2VyUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqJCcpCi1faW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqLVxzKigtP1xkKylccyokJykKK19pbnRlZ2VyUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSYW5nZVJFID0gcmUuY29tcGlsZShyJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQogCiBkZWYgc3JhbmdlKHMsCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weSBiL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQppbmRleCA1ZjU5ZThjLi4zMGNkM2MyIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1dpdGgucHkKKysrIGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAogZnJvbSBweWJlbmNoIGltcG9ydCBUZXN0CiAKIGNsYXNzIFdpdGhGaW5hbGx5KFRlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL0NvbG9yREIucHkgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQppbmRleCA1Y2VkMGU3Li4wMzQ4MTQ4IDEwMDY0NAotLS0gYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weQorKysgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQpAQCAtMTM0LDE3ICsxMzQsMTcgQEAKIAwKIGNsYXNzIFJHQkNvbG9yREIoQ29sb3JEQik6CiAgICAgX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgJ1xzKig/UDxyZWQ+XGQrKVxzKyg/UDxncmVlbj5cZCspXHMrKD9QPGJsdWU+XGQrKVxzKyg/UDxuYW1lPi4qKScpCisgICAgICAgIHInXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKIAogCiBjbGFzcyBIVE1MNDBEQihDb2xvckRCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKKyAgICBfcmUgPSByZS5jb21waWxlKHInKD9QPG5hbWU+XFMrKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RyZ2Ioc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gcnJnZ2JiX3RvX3RyaXBsZXQobW8uZ3JvdXAoJ2hleHJnYicpKQogCiBjbGFzcyBMaWdodGxpbmtEQihIVE1MNDBEQik6Ci0gICAgX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+KC4rKSlccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RuYW1lKHNlbGYsIG1vKToKICAgICAgICAgcmV0dXJuIG1vLmdyb3VwKCduYW1lJykuc3RyaXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weSBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKaW5kZXggZTEwZTQ5YS4uN2NhOTUyNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQorKysgYi9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CkBAIC02LDcgKzYsNyBAQAogQSBoZWxwZXIgZm9yIGFuYWx5emluZyBQWVRIT05EVU1QUkVGUyBvdXRwdXQuCiAKIFdoZW4gdGhlIFBZVEhPTkRVTVBSRUZTIGVudmFyIGlzIHNldCBpbiBhIGRlYnVnIGJ1aWxkLCBhdCBQeXRob24gc2h1dGRvd24KLXRpbWUgUHlfRmluYWxpemUoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0Cit0aW1lIFB5X0ZpbmFsaXplRXgoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0CiBwcmludHMgdGhlIHJlcHIoKSBvZiBlYWNoIG9iamVjdCB3aGlsZSB0aGUgaW50ZXJwcmV0ZXIgaXMgc3RpbGwgZnVsbHkgaW50YWN0LgogQWZ0ZXIgY2xlYW5pbmcgdXAgZXZlcnl0aGluZyBpdCBjYW4sIGl0IHByaW50cyBhbGwgcmVtYWluaW5nIGxpdmUgb2JqZWN0cwogYWdhaW4sIGJ1dCB0aGUgc2Vjb25kIHRpbWUganVzdCBwcmludHMgdGhlaXIgYWRkcmVzc2VzLCByZWZjb3VudHMsIGFuZCB0eXBlCkBAIC00MSw3ICs0MSw3IEBACiBvYmplY3RzIHNob3duIGluIHRoZSByZXByOiAgdGhlIHJlcHIgd2FzIGNhcHR1cmVkIGZyb20gdGhlIGZpcnN0IG91dHB1dCBibG9jaywKIGFuZCBzb21lIG9mIHRoZSBjb250YWluZWVzIG1heSBoYXZlIGJlZW4gcmVsZWFzZWQgc2luY2UgdGhlbi4gIEZvciBleGFtcGxlLAogaXQncyBjb21tb24gZm9yIHRoZSBsaW5lIHNob3dpbmcgdGhlIGRpY3Qgb2YgaW50ZXJuZWQgc3RyaW5ncyB0byBkaXNwbGF5Ci1zdHJpbmdzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGF0IHRoZSBlbmQgb2YgUHlfRmluYWxpemU7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKK3N0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZUV4OyB0aGlzIGNhbiBiZSByZWNvZ25pemVkCiAoYWxiZWl0IHBhaW5mdWxseSkgYmVjYXVzZSBzdWNoIGNvbnRhaW5lZXMgZG9uJ3QgaGF2ZSBhIGxpbmUgb2YgdGhlaXIgb3duLgogCiBUaGUgb2JqZWN0cyBhcmUgbGlzdGVkIGluIGFsbG9jYXRpb24gb3JkZXIsIHdpdGggbW9zdC1yZWNlbnRseSBhbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weSBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQppbmRleCA5NzIwYTQzLi45NjE5OWI4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2RpZmYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CkBAIC04LDcgKzgsNyBAQAogCiAiIiIKIAotaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIGFyZ3BhcnNlCitpbXBvcnQgc3lzLCBvcywgZGlmZmxpYiwgYXJncGFyc2UKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZQogCiBkZWYgZmlsZV9tdGltZShwYXRoKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5IGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKaW5kZXggMjBmMzM4Ni4uMTIxM2E0ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKQEAgLTE3NCw4ICsxNzQsOCBAQAogICAgIHN5cy5zdGRlcnIud3JpdGUoIlVzYWdlOiAlcyBbLW1dIHdhcm5pbmdzXG4iICUgc3lzLmFyZ3ZbMF0pCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5IGAlcyAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iICUgc3lzLmFyZ3ZbMF0pCiAKLVBBVFRFUk4gPSAoIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCi0gICAgICAgICAgICJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQorUEFUVEVSTiA9IChyIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCisgICAgICAgICAgIHIiY2xhc3NpYyAoaW50fGxvbmd8ZmxvYXR8Y29tcGxleCkgZGl2aXNpb24kIikKIAogZGVmIHJlYWR3YXJuaW5ncyh3YXJuaW5nc2ZpbGUpOgogICAgIHByb2cgPSByZS5jb21waWxlKFBBVFRFUk4pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQppbmRleCBjNjJmOWE1Li45NDhiNTZmIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKQEAgLTEsNyArMSw1IEBACiAjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLwogI2lmbmRlZiBQeV9PUENPREVfSApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5IGIvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CmluZGV4IDA5NjdmYzIuLjQzNjNjMGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaDJweS5weQorKysgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKQEAgLTIzLDEzICsyMywxMyBAQAogCiBpbXBvcnQgc3lzLCByZSwgZ2V0b3B0LCBvcwogCi1wX2RlZmluZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKK3BfZGVmaW5lID0gcmUuY29tcGlsZShyJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKIAogcF9tYWNybyA9IHJlLmNvbXBpbGUoCi0gICdeW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKycKLSAgJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQorICByJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJworICByJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQogCi1wX2luY2x1ZGUgPSByZS5jb21waWxlKCdeW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCitwX2luY2x1ZGUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSppbmNsdWRlW1x0IF0rPChbXj5cbl0rKT4nKQogCiBwX2NvbW1lbnQgPSByZS5jb21waWxlKHInL1wqKFteKl0rfFwqK1teL10pKihcKisvKT8nKQogcF9jcHBfY29tbWVudCA9IHJlLmNvbXBpbGUoJy8vLionKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQppbmRleCA2NmFkODY4Li45MjcyZmVlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAKICMjIyMgTGFUZVggT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWZhdWx0X2xhdGV4X2NvbW1hbmRzID0gewotICAgICdjb21tZW50JzogJ3tcY29sb3J7cmVkfSMxfScsCi0gICAgJ3N0cmluZyc6ICd7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCi0gICAgJ2RvY3N0cmluZyc6ICd7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAotICAgICdrZXl3b3JkJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2J1aWx0aW4nOiAne1xjb2xvcntwdXJwbGV9IzF9JywKLSAgICAnZGVmaW5pdGlvbic6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAotICAgICdkZWZuYW1lJzogJ3tcY29sb3J7Ymx1ZX0jMX0nLAotICAgICdvcGVyYXRvcic6ICd7XGNvbG9ye2Jyb3dufSMxfScsCisgICAgJ2NvbW1lbnQnOiByJ3tcY29sb3J7cmVkfSMxfScsCisgICAgJ3N0cmluZyc6IHIne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiByJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCisgICAgJ2tleXdvcmQnOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2J1aWx0aW4nOiByJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2RlZm5hbWUnOiByJ3tcY29sb3J7Ymx1ZX0jMX0nLAorICAgICdvcGVyYXRvcic6IHIne1xjb2xvcnticm93bn0jMX0nLAogfQogCiBkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJwpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9pZGxlMyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKaW5kZXggOGVlOTJjMi4uZDczMzJiYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9pZGxlMworKysgYi9Ub29scy9zY3JpcHRzL2lkbGUzCkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQppbmRleCBhZWI0NTFlLi42MzVlNTQ4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQorKysgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQpAQCAtODgsNyArODgsNyBAQAogIyBubyBtb3JlIGV4cHJlc3Npb25zIGFyZSBzZWFyY2hlZCBmb3IuICBTbywgb3JkZXIgaXMgaW1wb3J0YW50LgogZW1wYXJzZV9saXN0X3JlYXNvbiA9IFsKICAgICByJ141XGR7Mn0gPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAotICAgICc8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCisgICAgcic8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCiAgICAgcmUuY29tcGlsZShyJ148PDwgNVxkezJ9ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKICAgICByZS5jb21waWxlKCc9PT09PSBzdGRlcnIgd2FzID09PT09XG5ybWFpbDogKD9QPHJlYXNvbj4uKiknKSwKICAgICByZS5jb21waWxlKCdeRGlhZ25vc3RpYy1Db2RlOiAoP1A8cmVhc29uPi4qKScsIHJlLk1VTFRJTElORSksCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL25tMmRlZi5weSBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CmluZGV4IDhmMDc1NTkuLjgzYmJjZDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CkBAIC0zNiw4ICszNiw4IEBACiAiIiIKIGltcG9ydCBvcywgc3lzCiAKLVBZVEhPTkxJQiA9ICdsaWJweXRob24nK3N5cy52ZXJzaW9uWzozXSsnLmEnCi1QQ19QWVRIT05MSUIgPSAnUHl0aG9uJytzeXMudmVyc2lvblswXStzeXMudmVyc2lvblsyXSsnLmRsbCcKK1BZVEhPTkxJQiA9ICdsaWJweXRob24lZC4lZC5hJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitQQ19QWVRIT05MSUIgPSAnUHl0aG9uJWQlZC5kbGwnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIE5NID0gJ25tIC1wIC1nICVzJyAgICAgICAgICAgICAgICAgICAgICAjIEZvciBMaW51eCwgdXNlICJubSAtZyAlcyIKIAogZGVmIHN5bWJvbHMobGliPVBZVEhPTkxJQix0eXBlcz0oJ1QnLCdDJywnRCcpKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weSBiL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQppbmRleCBhMDQyZDFjLi5jNjg2YjAyIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAiIiIKIGltcG9ydCByZSxzeXMKIAotZW50aXR5UkUgPSByZS5jb21waWxlKCc8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCitlbnRpdHlSRSA9IHJlLmNvbXBpbGUocic8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCiAKIGRlZiBwYXJzZSh0ZXh0LHBvcz0wLGVuZHBvcz1Ob25lKToKIApAQCAtMzksNyArMzksNyBAQAogICAgICAgICBpZiBjaGFyY29kZVs6Ml0gPT0gJyYjJzoKICAgICAgICAgICAgIGNvZGUgPSBpbnQoY2hhcmNvZGVbMjotMV0pCiAgICAgICAgICAgICBpZiBjb2RlIDwgMjU2OgotICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gIidcJW8nIiAlIGNvZGUKKyAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHIiJ1wlbyciICUgY29kZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHJlcHIoY2hhcmNvZGUpCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKaW5kZXggMjI0MzJkMS4uNTYyYmJjNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAgICAgaWYgZml4KGFyZyk6IGJhZCA9IDEKICAgICBzeXMuZXhpdChiYWQpCiAKLWlzcHl0aG9ucHJvZyA9IHJlLmNvbXBpbGUoJ15bYS16QS1aMC05X10rXC5weSQnKQoraXNweXRob25wcm9nID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05X10rXC5weSQnKQogZGVmIGlzcHl0aG9uKG5hbWUpOgogICAgIHJldHVybiBib29sKGlzcHl0aG9ucHJvZy5tYXRjaChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weSBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKaW5kZXggY2E2NDNiMy4uMzk2Y2JkMCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weQorKysgYi9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICAgIGZvciBzIGluIHRhZ3M6IGZwLndyaXRlKHMpCiAKIAotZXhwciA9ICdeWyBcdF0qKGRlZnxjbGFzcylbIFx0XSsoW2EtekEtWjAtOV9dKylbIFx0XSpbOlwoXScKK2V4cHIgPSByJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJwogbWF0Y2hlciA9IHJlLmNvbXBpbGUoZXhwcikKIAogZGVmIHRyZWF0X2ZpbGUoZmlsZW5hbWUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXZlbnYgYi9Ub29scy9zY3JpcHRzL3B5dmVudgppbmRleCA5NzhkNjkxLi4xZmI0MmM2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B5dmVudgorKysgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpAQCAtMSw2ICsxLDEyIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMKKyAgICBpbXBvcnQgcGF0aGxpYgorCisgICAgZXhlY3V0YWJsZSA9IHBhdGhsaWIuUGF0aChzeXMuZXhlY3V0YWJsZSBvciAncHl0aG9uMycpLm5hbWUKKyAgICBwcmludCgnV0FSTklORzogdGhlIHB5ZW52IHNjcmlwdCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiAnCisgICAgICAgICAgZidge2V4ZWN1dGFibGV9IC1tIHZlbnZgJywgZmlsZT1zeXMuc3RkZXJyKQorCiAgICAgcmMgPSAxCiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgdmVudgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQppbmRleCA4YWJkZDAxLi42YzcwZGE5IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQpAQCAtMSw2ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLSIiIgorciIiIgogU1ZOIGhlbHBlciBzY3JpcHQuCiAKIFRyeSB0byBzZXQgdGhlIHN2bjplb2wtc3R5bGUgcHJvcGVydHkgdG8gIm5hdGl2ZSIgb24gZXZlcnkgLnB5LCAudHh0LCAuYyBhbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5IGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKaW5kZXggOTk4MzUyOC4uOWMxZTlmZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKKysrIGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKQEAgLTc4LDExICs3OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bm5pbmcgdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWVudSBpdGVtIChZdWNrISkKLW1pcHJvZyA9IHJlLmNvbXBpbGUoJ15cKiAoW146XSopOig6fFsgXHRdKihbXlx0LFxuLl0rKShbXiBcdFxuXSopKVsgXHRcbl0qJykKLSMgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAotIyAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittaXByb2cgPSByZS5jb21waWxlKHInXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQorIyAgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gICAgICAgICAgICAtLS0tLS0tLS0tICAtLS0tLS0tLS0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAogCmRpZmYgLS1naXQgYS9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weSBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CmluZGV4IGRkNTdkY2YuLjMwZDVmY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CisrKyBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CkBAIC0xMDUsMTEgKzEwNSwxMSBAQAogCiAgICAgZGVmIF9zdWJwcm9jZXNzX2NhbGwoc2VsZiwgY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLCBlbnY9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIHN0ZG91dD1zdGRvdXQsIGVudj1lbnYsICoqa3dhcmdzKQogCiAgICAgZGVmIF9zdWJwcm9jZXNzX291dHB1dChzZWxmLCBjbWQsIGVudj1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52KQogICAgICAgICByZXR1cm4gb3V0LnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCiAKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuaGFzX3NyYzoKICAgICAgICAgICAgICAgICBzZWxmLl9kb3dubG9hZF9vcGVuc3NsKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMge30iLmZvcm1hdChzZWxmLnNyY19maWxlKSkKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyAlcyIsIHNlbGYuc3JjX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLl91bnBhY2tfb3BlbnNzbCgpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfb3BlbnNzbCgpCmRpZmYgLS1naXQgYS9Ub29scy90ei96ZHVtcC5weSBiL1Rvb2xzL3R6L3pkdW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NGI0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy90ei96ZHVtcC5weQpAQCAtMCwwICsxLDgxIEBACitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCisKK3R0aW5mbyA9IG5hbWVkdHVwbGUoJ3R0aW5mbycsIFsndHRfZ210b2ZmJywgJ3R0X2lzZHN0JywgJ3R0X2FiYnJpbmQnXSkKKworY2xhc3MgVFpJbmZvOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc2l0aW9ucywgdHlwZV9pbmRpY2VzLCB0dGlzLCBhYmJycyk6CisgICAgICAgIHNlbGYudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucworICAgICAgICBzZWxmLnR5cGVfaW5kaWNlcyA9IHR5cGVfaW5kaWNlcworICAgICAgICBzZWxmLnR0aXMgPSB0dGlzCisgICAgICAgIHNlbGYuYWJicnMgPSBhYmJycworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDIwKQorICAgICAgICBoZWFkZXIgPSBmaWxlb2JqLnJlYWQoMjQpCisgICAgICAgIHR6aCA9ICh0emhfdHRpc2dtdGNudCwgdHpoX3R0aXNzdGRjbnQsIHR6aF9sZWFwY250LAorICAgICAgICAgICAgICAgdHpoX3RpbWVjbnQsIHR6aF90eXBlY250LCB0emhfY2hhcmNudCkgPSBzdHJ1Y3QudW5wYWNrKCI+NmwiLCBoZWFkZXIpCisgICAgICAgIHRyYW5zaXRpb25zID0gYXJyYXkoJ2knKQorICAgICAgICB0cmFuc2l0aW9ucy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKyAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciAhPSAnYmlnJzoKKyAgICAgICAgICAgIHRyYW5zaXRpb25zLmJ5dGVzd2FwKCkKKworICAgICAgICB0eXBlX2luZGljZXMgPSBhcnJheSgnQicpCisgICAgICAgIHR5cGVfaW5kaWNlcy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UodHpoX3R5cGVjbnQpOgorICAgICAgICAgICAgdHRpcy5hcHBlbmQodHRpbmZvLl9tYWtlKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKSkKKworICAgICAgICBhYmJycyA9IGZpbGVvYmoucmVhZCh0emhfY2hhcmNudCkKKworICAgICAgICBzZWxmID0gY2xzKHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKQorICAgICAgICBzZWxmLnR6aCA9IHR6aAorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZHVtcChzZWxmLCBzdHJlYW0sIHN0YXJ0PU5vbmUsIGVuZD1Ob25lKToKKyAgICAgICAgZm9yIGosICh0cmFucywgaSkgaW4gZW51bWVyYXRlKHppcChzZWxmLnRyYW5zaXRpb25zLCBzZWxmLnR5cGVfaW5kaWNlcykpOgorICAgICAgICAgICAgdXRjID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucykKKyAgICAgICAgICAgIHR0aSA9IHNlbGYudHRpc1tpXQorICAgICAgICAgICAgbG10ID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucyArIHR0aS50dF9nbXRvZmYpCisgICAgICAgICAgICBhYmJyaW5kID0gdHRpLnR0X2FiYnJpbmQKKyAgICAgICAgICAgIGFiYnIgPSBzZWxmLmFiYnJzW2FiYnJpbmQ6c2VsZi5hYmJycy5maW5kKDAsIGFiYnJpbmQpXS5kZWNvZGUoKQorICAgICAgICAgICAgaWYgaiA+IDA6CisgICAgICAgICAgICAgICAgcHJldl90dGkgPSBzZWxmLnR0aXNbc2VsZi50eXBlX2luZGljZXNbaiAtIDFdXQorICAgICAgICAgICAgICAgIHNoaWZ0ID0gIiAlK2ciICUgKCh0dGkudHRfZ210b2ZmIC0gcHJldl90dGkudHRfZ210b2ZmKSAvIDM2MDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNoaWZ0ID0gJycKKyAgICAgICAgICAgIHByaW50KCIlcyBVVEMgPSAlcyAlLTVzIGlzZHN0PSVkIiAlICh1dGMsIGxtdCwgYWJiciwgdHRpWzFdKSArIHNoaWZ0LCBmaWxlPXN0cmVhbSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbGlzdChjbHMsIHpvbmVkaXI9Jy91c3Ivc2hhcmUvem9uZWluZm8nKToKKyAgICAgICAgem9uZXMgPSBbXQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2Fsayh6b25lZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocCwgJ3JiJykgYXMgbzoKKyAgICAgICAgICAgICAgICAgICAgbWFnaWMgPSAgby5yZWFkKDQpCisgICAgICAgICAgICAgICAgaWYgbWFnaWMgPT0gYidUWmlmJzoKKyAgICAgICAgICAgICAgICAgICAgem9uZXMuYXBwZW5kKHBbbGVuKHpvbmVkaXIpICsgMTpdKQorICAgICAgICByZXR1cm4gem9uZXMKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICAgICAgem9uZXMgPSBUWkluZm8uem9uZWxpc3QoKQorICAgICAgICBmb3IgeiBpbiB6b25lczoKKyAgICAgICAgICAgIHByaW50KHopCisgICAgICAgIHN5cy5leGl0KCkKKyAgICBmaWxlcGF0aCA9IHN5cy5hcmd2WzFdCisgICAgaWYgbm90IGZpbGVwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oJy91c3Ivc2hhcmUvem9uZWluZm8nLCBmaWxlcGF0aCkKKyAgICB3aXRoIG9wZW4oZmlsZXBhdGgsICdyYicpIGFzIGZpbGVvYmo6CisgICAgICAgIHR6aSA9IFRaSW5mby5mcm9tZmlsZShmaWxlb2JqKQorICAgIHR6aS5kdW1wKHN5cy5zdGRvdXQpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5IGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQppbmRleCA0YzIxNDY5Li4zMWYwMTEyIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKQEAgLTM3LDExICszNywxMSBAQAogIyBQbGFjZWhvbGRlciBmb3IgYSBtaXNzaW5nIGNvZGUgcG9pbnQKIE1JU1NJTkdfQ09ERSA9IC0xCiAKLW1hcFJFID0gcmUuY29tcGlsZSgnKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJwotICAgICAgICAgICAgICAgICAgICdccysnCi0gICAgICAgICAgICAgICAgICAgJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCi0gICAgICAgICAgICAgICAgICAgJ1xzKicKLSAgICAgICAgICAgICAgICAgICAnKCMuKyk/JykKK21hcFJFID0gcmUuY29tcGlsZShyJygoPzoweFswLTlhLWZBLUZdK1wrPykrKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKycKKyAgICAgICAgICAgICAgICAgICByJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCisgICAgICAgICAgICAgICAgICAgcidccyonCisgICAgICAgICAgICAgICAgICAgcicoIy4rKT8nKQogCiBkZWYgcGFyc2Vjb2Rlcyhjb2RlcywgbGVuPWxlbiwgcmFuZ2U9cmFuZ2UpOgogCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IDcxM2UxNzUuLjVkODAxNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC00Miw3ICs0Miw3IEBACiAjICAgKiBEb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QsIGFuZAogIyAgICogRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CiAjICAgKiBEb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0ICh0d28gb2NjdXJyZW5jZXMpCi1VTklEQVRBX1ZFUlNJT04gPSAiOC4wLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiOS4wLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTc5Niw2ICs3OTYsNyBAQAogICAgIGNhdGVnb3J5X2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBkZWNpbWFsX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBtaXJyb3JlZF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCisgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgIyBJbiBudW1lcmljIGRhdGEsIDAgbWVhbnMgIm5vIGNoYW5nZSIsCiAgICAgIyAtMSBtZWFucyAiZGlkIG5vdCBoYXZlIGEgbnVtZXJpYyB2YWx1ZQogICAgIG51bWVyaWNfY2hhbmdlcyA9IFswXSAqIDB4MTEwMDAwCkBAIC04NjIsNiArODYzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE0OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gc2ltcGxlIHRpdGxlY2FzZSBtYXBwaW5nOyBpZ25vcmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE1OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gZWFzdCBhc2lhbiB3aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzW2ldID0gRUFTVEFTSUFOV0lEVEhfTkFNRVMuaW5kZXgodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVyaXZlZCBwcm9wZXJ0eSBjaGFuZ2VzOyBub3QgeWV0CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCkBAIC04NzMsOCArODc3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIERpZmZlcmVuY2UoRXhjZXB0aW9uKTpwYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBEaWZmZXJlbmNlKGhleChpKSwgaywgb2xkLnRhYmxlW2ldLCBuZXcudGFibGVbaV0pCiAgICAgbmV3LmNoYW5nZWQuYXBwZW5kKCh2ZXJzaW9uLCBsaXN0KHppcChiaWRpcl9jaGFuZ2VzLCBjYXRlZ29yeV9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2NoYW5nZXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAogICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbl9jaGFuZ2VzKSkKIAogZGVmIG9wZW5fZGF0YSh0ZW1wbGF0ZSwgdmVyc2lvbik6CmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCAyYTc0NWU1Li45YTljYzU1IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTEzLDcgKzEzLDcgQEAKIAogbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1bihbX0FNX0NPTkZJR19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW19BTV9DT05GSUdfTUFDUk9fRElSUygkQCldKV0pCiBkbmwgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgIC0qLSBBdXRvY29uZiAtKi0KLWRubCBzZXJpYWwgMTEgKHBrZy1jb25maWctMC4yOS4xKQorZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5KQogZG5sCiBkbmwgQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KIGRubCBDb3B5cmlnaHQgwqkgMjAxMi0yMDE1IERhbiBOaWNob2xzb24gPGRibi5saXN0c0BnbWFpbC5jb20+CkBAIC01NSw3ICs1NSw3IEBACiBkbmwgU2VlIHRoZSAiU2luY2UiIGNvbW1lbnQgZm9yIGVhY2ggbWFjcm8geW91IHVzZSB0byBzZWUgd2hhdCB2ZXJzaW9uCiBkbmwgb2YgdGhlIG1hY3JvcyB5b3UgcmVxdWlyZS4KIG00X2RlZnVuKFtQS0dfUFJFUkVRXSwKLVttNF9kZWZpbmUoW1BLR19NQUNST1NfVkVSU0lPTl0sIFswLjI5LjFdKQorW200X2RlZmluZShbUEtHX01BQ1JPU19WRVJTSU9OXSwgWzAuMjldKQogbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKFBLR19NQUNST1NfVkVSU0lPTiwgWyQxXSksIC0xLAogICAgIFttNF9mYXRhbChbcGtnLm00IHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGJ1dCBdUEtHX01BQ1JPU19WRVJTSU9OWyBmb3VuZF0pXSkKIF0pZG5sIFBLR19QUkVSRVEKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwppbmRleCAyZTlhZDdmLi4xZjVjNTBjIDEwMDc1NQotLS0gYS9jb25maWcuZ3Vlc3MKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0xLDggKzEsOCBAQAogIyEgL2Jpbi9zaAogIyBBdHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgotIyAgIENvcHlyaWdodCAxOTkyLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IDE5OTItMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDE2LTEwLTAyJwordGltZXN0YW1wPScyMDE0LTAzLTIzJwogCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yNCwxMiArMjQsMTIgQEAKICMgcHJvZ3JhbS4gIFRoaXMgRXhjZXB0aW9uIGlzIGFuIGFkZGl0aW9uYWwgcGVybWlzc2lvbiB1bmRlciBzZWN0aW9uIDcKICMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDMgKCJHUEx2MyIpLgogIwotIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXI7IG1haW50YWluZWQgc2luY2UgMjAwMCBieSBCZW4gRWxsaXN0b24uCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KICMKICMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206Ci0jIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3MKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECiAjCi0jIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LgorIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHdpdGggYSBDaGFuZ2VMb2cgZW50cnkgdG8gY29uZmlnLXBhdGNoZXNAZ251Lm9yZy4KIAogCiBtZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKQEAgLTUwLDcgKzUwLDcgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAxOTkyLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgMTk5Mi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTY4LDI5ICsxNjgsMTkgQEAKIAkjIE5vdGU6IE5ldEJTRCBkb2Vzbid0IHBhcnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKIAkjIHBvcnRpb24gb2YgdGhlIG5hbWUuICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KIAlzeXNjdGw9InN5c2N0bCAtbiBody5tYWNoaW5lX2FyY2giCi0JVU5BTUVfTUFDSElORV9BUkNIPWAodW5hbWUgLXAgMj4vZGV2L251bGwgfHwgXAotCSAgICAvc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgL3Vzci9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAotCSAgICBlY2hvIHVua25vd24pYAorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24pYAogCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KIAkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OwogCSAgICBhcm0qKSBtYWNoaW5lPWFybS11bmtub3duIDs7CiAJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CiAJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKIAkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUtdW5rbm93biA7OwotCSAgICBlYXJtdiopCi0JCWFyY2g9YGVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9IHwgc2VkIC1lICdzLF5lXChhcm12WzAtOV1cKS4qJCxcMSwnYAotCQllbmRpYW49YGVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9IHwgc2VkIC1uZSAncyxeLipcKGViXCkkLFwxLHAnYAotCQltYWNoaW5lPSR7YXJjaH0ke2VuZGlhbn0tdW5rbm93bgotCQk7OwogCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duIDs7CiAJZXNhYwogCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3JtYXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAotCSMgdG8gRUxGIHJlY2VudGx5IChvciB3aWxsIGluIHRoZSBmdXR1cmUpIGFuZCBBQkkuCisJIyB0byBFTEYgcmVjZW50bHksIG9yIHdpbGwgaW4gdGhlIGZ1dHVyZS4KIAljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCi0JICAgIGVhcm0qKQotCQlvcz1uZXRic2RlbGYKLQkJOzsKIAkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCiAJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKQEAgLTIwNywxMyArMTk3LDYgQEAKIAkJb3M9bmV0YnNkCiAJCTs7CiAJZXNhYwotCSMgRGV0ZXJtaW5lIEFCSSB0YWdzLgotCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KLQkgICAgZWFybSopCi0JCWV4cHI9J3MvXmVhcm12WzAtOV0vLWVhYmkvO3MvZWIkLy8nCi0JCWFiaT1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLWUgIiRleHByImAKLQkJOzsKLQllc2FjCiAJIyBUaGUgT1MgcmVsZWFzZQogCSMgRGViaWFuIEdOVS9OZXRCU0QgbWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCiAJIyB0aHVzLCBuZWVkIGEgZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZApAQCAtMjI0LDEzICsyMDcsMTMgQEAKIAkJcmVsZWFzZT0nLWdudScKIAkJOzsKIAkgICAgKikKLQkJcmVsZWFzZT1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1stX10uKi8vJyB8IGN1dCAtZC4gLWYxLDJgCisJCXJlbGVhc2U9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy1fXS4qL1wuLydgCiAJCTs7CiAJZXNhYwogCSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgogCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgogCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KLQllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSR7YWJpfSIKKwllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKIAlleGl0IDs7CiAgICAgKjpCaXRyaWc6KjoqKQogCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9CaXRyaWcuLy8nYApAQCAtMjQwLDEwICsyMjMsNiBAQAogCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKIAllY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgICo6TGliZXJ0eUJTRDoqOiopCi0JVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL14uKkJTRFwuLy8nYAotCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tbGliZXJ0eWJzZCR7VU5BTUVfUkVMRUFTRX0KLQlleGl0IDs7CiAgICAgKjpla2tvQlNEOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTI1Niw5ICsyMzUsNiBAQAogICAgICo6TWlyQlNEOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgICo6U29ydGl4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb3J0aXgKLQlleGl0IDs7CiAgICAgYWxwaGE6T1NGMToqOiopCiAJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgogCSo0LjApCkBAIC0yNzUsNDIgKzI1MSw0MiBAQAogCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8IGhlYWQgLW4gMWAKIAljYXNlICIkQUxQSEFfQ1BVX1RZUEUiIGluCiAJICAgICJFVjQgKDIxMDY0KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGEgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CiAJICAgICJFVjQuNSAoMjEwNjQpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKIAkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGEgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CiAJICAgICJFVjUgKDIxMTY0KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjUiIDs7CiAJICAgICJFVjUuNiAoMjExNjRBKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjU2IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1NiIgOzsKIAkgICAgIkVWNS42ICgyMTE2NFBDKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU2IiA7OwogCSAgICAiRVY1LjcgKDIxMTY0UEMpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYXBjYTU3IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTciIDs7CiAJICAgICJFVjYgKDIxMjY0KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjYiIDs7CiAJICAgICJFVjYuNyAoMjEyNjRBKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2NyIgOzsKIAkgICAgIkVWNi44Q0IgKDIxMjY0QykiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CiAJICAgICJFVjYuOEFMICgyMTI2NEIpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OwogCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKIAkgICAgIkVWNi45QSAoMjEyNjQvRVY2OUEpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NjkgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY5IiA7OwogCSAgICAiRVY3ICgyMTM2NCkiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhZXY3IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3IiA7OwogCSAgICAiRVY3LjkgKDIxMzY0QSkiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhZXY3OSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7CiAJZXNhYwogCSMgQSBQbi5uIHZlcnNpb24gaXMgYSBwYXRjaGVkIHZlcnNpb24uCiAJIyBBIFZuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCiAJIyBBIFRuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIGZpZWxkIHRlc3QgdmVyc2lvbi4KIAkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFzZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KLQllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YAorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAogCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KIAlleGl0Y29kZT0kPwogCXRyYXAgJycgMApAQCAtMzgzLDE2ICszNTksMTYgQEAKIAlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCVNVTl9BUkNIPWkzODYKKwlTVU5fQVJDSD0iaTM4NiIKIAkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KIAkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCiAJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgotCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9IG5vX2NvbXBpbGVyX2ZvdW5kIF07IHRoZW4KKwlpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KIAkgICAgaWYgKGVjaG8gJyNpZmRlZiBfX2FtZDY0JzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKLQkJKENDT1BUUz0iIiAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAogCQlncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAogCSAgICB0aGVuCi0JCVNVTl9BUkNIPXg4Nl82NAorCQlTVU5fQVJDSD0ieDg2XzY0IgogCSAgICBmaQogCWZpCiAJZWNobyAke1NVTl9BUkNIfS1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYApAQCAtNDE3LDcgKzM5Myw3IEBACiAJZXhpdCA7OwogICAgIHN1bio6Kjo0LjJCU0Q6KikKIAlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAotCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9IHggJiYgVU5BTUVfUkVMRUFTRT0zCisJdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0iID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MwogCWNhc2UgImAvYmluL2FyY2hgIiBpbgogCSAgICBzdW4zKQogCQllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQpAQCAtNjAzLDkgKzU3OSw4IEBACiAJZWxzZQogCQlJQk1fQVJDSD1wb3dlcnBjCiAJZmkKLQlpZiBbIC14IC91c3IvYmluL2xzbHBwIF0gOyB0aGVuCi0JCUlCTV9SRVY9YC91c3IvYmluL2xzbHBwIC1McWMgYm9zLnJ0ZS5saWJjIHwKLQkJCSAgIGF3ayAtRjogJ3sgcHJpbnQgJDMgfScgfCBzZWQgcy9bMC05XSokLzAvYAorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAogCWVsc2UKIAkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KIAlmaQpAQCAtNjQyLDEzICs2MTcsMTMgQEAKIAkJICAgIHNjX2NwdV92ZXJzaW9uPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAogCQkgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCiAJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KLQkJICAgICAgNTIzKSBIUF9BUkNIPWhwcGExLjAgOzsgIyBDUFVfUEFfUklTQzFfMAotCQkgICAgICA1MjgpIEhQX0FSQ0g9aHBwYTEuMSA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKIAkJICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCiAJCQljYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KLQkJCSAgMzIpIEhQX0FSQ0g9aHBwYTIuMG4gOzsKLQkJCSAgNjQpIEhQX0FSQ0g9aHBwYTIuMHcgOzsKLQkJCSAgJycpIEhQX0FSQ0g9aHBwYTIuMCA7OyAgICMgSFAtVVggMTAuMjAKKwkJCSAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OworCQkJICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CisJCQkgICcnKSBIUF9BUkNIPSJocHBhMi4wIiA7OyAgICMgSFAtVVggMTAuMjAKIAkJCWVzYWMgOzsKIAkJICAgIGVzYWMKIAkJZmkKQEAgLTY4NywxMSArNjYyLDExIEBACiAJCSAgICBleGl0ICgwKTsKIAkJfQogRU9GCi0JCSAgICAoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAogCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQogCQlmaSA7OwogCWVzYWMKLQlpZiBbICR7SFBfQVJDSH0gPSBocHBhMi4wdyBdCisJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCiAJdGhlbgogCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCiAKQEAgLTcwNCwxMiArNjc5LDEyIEBACiAJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCiAJICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMwogCi0JICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfAorCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8CiAJCWdyZXAgLXEgX19MUDY0X18KIAkgICAgdGhlbgotCQlIUF9BUkNIPWhwcGEyLjB3CisJCUhQX0FSQ0g9ImhwcGEyLjB3IgogCSAgICBlbHNlCi0JCUhQX0FSQ0g9aHBwYTY0CisJCUhQX0FSQ0g9ImhwcGE2NCIKIAkgICAgZmkKIAlmaQogCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KQEAgLTgxNCwxNCArNzg5LDE0IEBACiAJZWNobyBjcmF5bnYtY3JheS11bmljb3NtcCR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJwogCWV4aXQgOzsKICAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKLQlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpgCi0JRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCiAJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKIAllY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgogCWV4aXQgOzsKICAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCi0JRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQgLWUgJ3MvXC8vLydgCi0JRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IHwgc2VkIC1lICdzLyAvXy8nYAorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAogCWVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKIAlleGl0IDs7CiAgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCkBAIC05MDMsNyArODc4LDcgQEAKIAlleGl0IDs7CiAgICAgKjpHTlUvKjoqOiopCiAJIyBvdGhlciBzeXN0ZW1zIHdpdGggR05VIGxpYmMgYW5kIHVzZXJsYW5kCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFNRV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAiWzp1cHBlcjpdIiAiWzpsb3dlcjpdImBgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLSR7TElCQ30KKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLSR7TElCQ30KIAlleGl0IDs7CiAgICAgaSo4NjpNaW5peDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CkBAIC05MjYsNyArOTAxLDcgQEAKIAkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OwogCWVzYWMKIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKLQlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPWdudWxpYmMxIDsgZmkKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJnbnVsaWJjMSIgOyBmaQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7CiAgICAgYXJjOkxpbnV4Oio6KiB8IGFyY2ViOkxpbnV4Oio6KikKQEAgLTk1Nyw5ICs5MzIsNiBAQAogICAgIGNyaXN2MzI6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7Ci0gICAgZTJrOkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0JZXhpdCA7OwogICAgIGZydjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKQEAgLTk3Miw5ICs5NDQsNiBAQAogICAgIGlhNjQ6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7Ci0gICAgazFvbTpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotCWV4aXQgOzsKICAgICBtMzJyKjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKQEAgLTEwMDAsOSArOTY5LDYgQEAKIAlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkNQVSdgCiAJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LSR7TElCQ30iOyBleGl0OyB9CiAJOzsKLSAgICBtaXBzNjRlbDpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotCWV4aXQgOzsKICAgICBvcGVucmlzYyo6TGludXg6KjoqKQogCWVjaG8gb3Ixay11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7CkBAIC0xMDM1LDkgKzEwMDEsNiBAQAogICAgIHBwY2xlOkxpbnV4Oio6KikKIAllY2hvIHBvd2VycGNsZS11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7Ci0gICAgcmlzY3YzMjpMaW51eDoqOiogfCByaXNjdjY0OkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0JZXhpdCA7OwogICAgIHMzOTA6TGludXg6KjoqIHwgczM5MHg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKQEAgLTEwNTcsNyArMTAyMCw3IEBACiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHg4Nl82NDpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30KKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHh0ZW5zYSo6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KQEAgLTExMzYsNyArMTA5OSw3IEBACiAJIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKIAkjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgogCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKLQkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJlIHdpbGwgZGVjaWRlIHRoYXQKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKIAkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KIAllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAogCWV4aXQgOzsKQEAgLTEyODUsOSArMTI0OCw2IEBACiAgICAgU1gtOFI6U1VQRVItVVg6KjoqKQogCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7Ci0gICAgU1gtQUNFOlNVUEVSLVVYOio6KikKLQllY2hvIHN4YWNlLW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQotCWV4aXQgOzsKICAgICBQb3dlcio6UmhhcHNvZHk6KjoqKQogCWVjaG8gcG93ZXJwYy1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMzAxLDkgKzEyNjEsOSBAQAogCSAgICBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYwogCWZpCiAJaWYgdGVzdCBgZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1wuLiovLydgIC1sZSAxMCA7IHRoZW4KLQkgICAgaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gbm9fY29tcGlsZXJfZm91bmQgXTsgdGhlbgorCSAgICBpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KIAkJaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCi0JCSAgICAoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAogCQkgICAgZ3JlcCBJU182NEJJVF9BUkNIID4vZGV2L251bGwKIAkJdGhlbgogCQkgICAgY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCkBAIC0xMzI1LDcgKzEyODUsNyBAQAogCWV4aXQgOzsKICAgICAqOnByb2NudG8qOio6KiB8ICo6UU5YOlswMTIzNDU2Nzg5XSo6KikKIAlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYAotCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0geDg2OyB0aGVuCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgogCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgogCQlVTkFNRV9NQUNISU5FPXBjCiAJZmkKQEAgLTEzNTYsNyArMTMxNiw3IEBACiAJIyAidW5hbWUgLW0iIGlzIG5vdCBjb25zaXN0ZW50LCBzbyB1c2UgJGNwdXR5cGUgaW5zdGVhZC4gMzg2CiAJIyBpcyBjb252ZXJ0ZWQgdG8gaTM4NiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciB4ODYKIAkjIG9wZXJhdGluZyBzeXN0ZW1zLgotCWlmIHRlc3QgIiRjcHV0eXBlIiA9IDM4NjsgdGhlbgorCWlmIHRlc3QgIiRjcHV0eXBlIiA9ICIzODYiOyB0aGVuCiAJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgogCWVsc2UKIAkgICAgVU5BTUVfTUFDSElORT0iJGNwdXR5cGUiCkBAIC0xMzk4LDcgKzEzNTgsNyBAQAogCWVjaG8gaTM4Ni1wYy14ZW5peAogCWV4aXQgOzsKICAgICBpKjg2OnNreW9zOio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2t5b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAuKiQvLydgCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4qJC8vJwogCWV4aXQgOzsKICAgICBpKjg2OnJkb3M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCkBAIC0xNDA5LDI1ICsxMzY5LDIzIEBACiAgICAgeDg2XzY0OlZNa2VybmVsOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1lc3gKIAlleGl0IDs7Ci0gICAgYW1kNjQ6SXNpbG9uXCBPbmVGUzoqOiopCi0JZWNobyB4ODZfNjQtdW5rbm93bi1vbmVmcwotCWV4aXQgOzsKIGVzYWMKIAogY2F0ID4mMiA8PEVPRgogJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQogCi1UaGlzIHNjcmlwdCAodmVyc2lvbiAkdGltZXN0YW1wKSwgaGFzIGZhaWxlZCB0byByZWNvZ25pemUgdGhlCi1vcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIElmIHlvdXIgc2NyaXB0IGlzIG9sZCwgb3ZlcndyaXRlCi1jb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb25zIGZyb206CitUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZQordGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQorZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCiAKLSAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcworICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKIGFuZAotICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YgorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECiAKLUlmICQwIGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZCwgc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueQotaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlIHBlcnRpbmVudCB0byBjb25maWctcGF0Y2hlc0BnbnUub3JnIHRvCi1wcm92aWRlIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwgcGxlYXNlCitzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorcGVydGluZW50IHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBuZWVkZWQKK2luZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5c3RlbS4KIAogY29uZmlnLmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKIApkaWZmIC0tZ2l0IGEvY29uZmlnLnN1YiBiL2NvbmZpZy5zdWIKaW5kZXggMzQ3OGMxZi4uZDY1NGQwMyAxMDA3NTUKLS0tIGEvY29uZmlnLnN1YgorKysgYi9jb25maWcuc3ViCkBAIC0xLDggKzEsOCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCi0jICAgQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgMTk5Mi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMTYtMTEtMTknCit0aW1lc3RhbXA9JzIwMTQtMDUtMDEnCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTI1LDcgKzI1LDcgQEAKICMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDMgKCJHUEx2MyIpLgogCiAKLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgd2l0aCBhIENoYW5nZUxvZyBlbnRyeSB0byBjb25maWctcGF0Y2hlc0BnbnUub3JnLgogIwogIyBDb25maWd1cmF0aW9uIHN1YnJvdXRpbmUgdG8gdmFsaWRhdGUgYW5kIGNhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gdHlwZS4KICMgU3VwcGx5IHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiB0eXBlIGFzIGFuIGFyZ3VtZW50LgpAQCAtMzMsNyArMzMsNyBAQAogIyBPdGhlcndpc2UsIHdlIHByaW50IHRoZSBjYW5vbmljYWwgY29uZmlnIHR5cGUgb24gc3Rkb3V0IGFuZCBzdWNjZWVkLgogCiAjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgotIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECiAKICMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCiAjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcwpAQCAtNTMsNyArNTMsOCBAQAogbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCiAKIHVzYWdlPSJcCi1Vc2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUyBvciBBTElBUworVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMKKyAgICAgICAkMCBbT1BUSU9OXSBBTElBUwogCiBDYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIG5hbWUuCiAKQEAgLTY3LDcgKzY4LDcgQEAKIHZlcnNpb249IlwKIEdOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQogCi1Db3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IDE5OTItMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTExNiw4ICsxMTcsOCBAQAogY2FzZSAkbWF5YmVfb3MgaW4KICAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBcCiAgIGxpbnV4LW11c2wqIHwgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAotICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1lYWJpKiB8IFwKLSAga29wZW5zb2xhcmlzKi1nbnUqIHwgY2xvdWRhYmkqLWVhYmkqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKQEAgLTI1NCwxMyArMjU1LDEyIEBACiAJfCBhcmMgfCBhcmNlYiBcCiAJfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyLThdIHwgYXJtdlszLThdW2xiXSB8IGFybXY3W2FybV0gXAogCXwgYXZyIHwgYXZyMzIgXAotCXwgYmEgXAogCXwgYmUzMiB8IGJlNjQgXAogCXwgYmZpbiBcCiAJfCBjNHggfCBjODA1MSB8IGNsaXBwZXIgXAogCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKLQl8IGUyayB8IGVwaXBoYW55IFwKLQl8IGZpZG8gfCBmcjMwIHwgZnJ2IHwgZnQzMiBcCisJfCBlcGlwaGFueSBcCisJfCBmaWRvIHwgZnIzMCB8IGZydiBcCiAJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAogCXwgaGV4YWdvbiBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKQEAgLTMwMSwxMiArMzAxLDEwIEBACiAJfCBvcGVuOCB8IG9yMWsgfCBvcjFrbmQgfCBvcjMyIFwKIAl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCiAJfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgXAotCXwgcHJ1IFwKIAl8IHB5cmFtaWQgXAotCXwgcmlzY3YzMiB8IHJpc2N2NjQgXAogCXwgcmw3OCB8IHJ4IFwKIAl8IHNjb3JlIFwKLQl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzIzNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKQEAgLTMxNCw3ICszMTIsNiBAQAogCXwgdGFob2UgfCB0aWM0eCB8IHRpYzU0eCB8IHRpYzU1eCB8IHRpYzZ4IHwgdGljODAgfCB0cm9uIFwKIAl8IHViaWNvbTMyIFwKIAl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKLQl8IHZpc2l1bSBcCiAJfCB3ZTMyayBcCiAJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCiAJfCB6OGsgfCB6ODApCkBAIC0zMjksOSArMzI2LDYgQEAKIAljNngpCiAJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgogCQk7OwotCWxlb258bGVvblszLTldKQotCQliYXNpY19tYWNoaW5lPXNwYXJjLSRiYXNpY19tYWNoaW5lCi0JCTs7CiAJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgbTY4aGNzMTJ4IHwgbnZwdHggfCBwaWNvY2hpcCkKIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1ub25lCkBAIC0zNzcsMTMgKzM3MSwxMiBAQAogCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiB8IGFyY2ViLSogXAogCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCiAJfCBhdnItKiB8IGF2cjMyLSogXAotCXwgYmEtKiBcCiAJfCBiZTMyLSogfCBiZTY0LSogXAogCXwgYmZpbi0qIHwgYnMyMDAwLSogXAogCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAogCXwgYzgwNTEtKiB8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCiAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCi0JfCBlMmstKiB8IGVseHNpLSogXAorCXwgZWx4c2ktKiBcCiAJfCBmMzBbMDFdLSogfCBmNzAwLSogfCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCiAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCiAJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXApAQCAtNDI5LDE1ICs0MjIsMTMgQEAKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCiAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiBcCi0JfCBwcnUtKiBcCiAJfCBweXJhbWlkLSogXAotCXwgcmlzY3YzMi0qIHwgcmlzY3Y2NC0qIFwKIAl8IHJsNzgtKiB8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCiAJfCBzaC0qIHwgc2hbMTIzNF0tKiB8IHNoWzI0XWEtKiB8IHNoWzI0XWFlYi0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCiAJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKIAl8IHNwYXJjLSogfCBzcGFyYzY0LSogfCBzcGFyYzY0Yi0qIHwgc3BhcmM2NHYtKiB8IHNwYXJjODZ4LSogfCBzcGFyY2xldC0qIFwKIAl8IHNwYXJjbGl0ZS0qIFwKLQl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3YxLSogfCBzeCotKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAogCXwgdGFob2UtKiBcCiAJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCiAJfCB0aWxlKi0qIFwKQEAgLTQ0NSw3ICs0MzYsNiBAQAogCXwgdWJpY29tMzItKiBcCiAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCiAJfCB2YXgtKiBcCi0JfCB2aXNpdW0tKiBcCiAJfCB3ZTMyay0qIFwKIAl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogXAogCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXApAQCAtNTIyLDkgKzUxMiw2IEBACiAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYwogCQlvcz0tYXJvcwogCQk7OwotCWFzbWpzKQotCQliYXNpY19tYWNoaW5lPWFzbWpzLXVua25vd24KLQkJOzsKIAlhdXgpCiAJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQogCQlvcz0tYXV4CkBAIC02NDUsMTQgKzYzMiw2IEBACiAJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCiAJCW9zPS1zeXN2MwogCQk7OwotCWU1MDB2WzEyXSkKLQkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KLQkJb3M9JG9zInNwZSIKLQkJOzsKLQllNTAwdlsxMl0tKikKLQkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCi0JCW9zPSRvcyJzcGUiCi0JCTs7CiAJZWJtb24yOWspCiAJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKIAkJb3M9LWVibW9uCkBAIC03OTQsOSArNzczLDYgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWlzaQogCQlvcz0tc3lzdgogCQk7OwotCWxlb24tKnxsZW9uWzMtOV0tKikKLQkJYmFzaWNfbWFjaGluZT1zcGFyYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy8tLiovLydgCi0JCTs7CiAJbTY4a25vbW11KQogCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgogCQlvcz0tbGludXgKQEAgLTg1MiwxMCArODI4LDYgQEAKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KIAkJb3M9LW1vcnBob3MKIAkJOzsKLQltb3hpZWJveCkKLQkJYmFzaWNfbWFjaGluZT1tb3hpZS11bmtub3duCi0JCW9zPS1tb3hpZWJveAotCQk7OwogCW1zZG9zKQogCQliYXNpY19tYWNoaW5lPWkzODYtcGMKIAkJb3M9LW1zZG9zCkBAIC0xMDMyLDcgKzEwMDQsNyBAQAogCXBwYy0qIHwgcHBjYmUtKikKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCTs7Ci0JcHBjbGUgfCBwb3dlcnBjbGl0dGxlKQorCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQogCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCiAJCTs7CiAJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKQEAgLTEwNDIsNyArMTAxNCw3IEBACiAJCTs7CiAJcHBjNjQtKikgYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKIAkJOzsKLQlwcGM2NGxlIHwgcG93ZXJwYzY0bGl0dGxlKQorCXBwYzY0bGUgfCBwb3dlcnBjNjRsaXR0bGUgfCBwcGM2NC1sZSB8IHBvd2VycGM2NC1saXR0bGUpCiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtdW5rbm93bgogCQk7OwogCXBwYzY0bGUtKiB8IHBvd2VycGM2NGxpdHRsZS0qKQpAQCAtMTM4OCwyOCArMTM2MCwyNyBAQAogCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKIAkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogfCAtcGxhbjkqIFwKIAkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAtdW5pY29zKiB8IC1hb2YqIFwKLQkgICAgICB8IC1hb3MqIHwgLWFyb3MqIHwgLWNsb3VkYWJpKiB8IC1zb3J0aXgqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKIAkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAogCSAgICAgIHwgLWNsaXgqIHwgLXJpc2NvcyogfCAtdW5pcGx1cyogfCAtaXJpcyogfCAtcnR1KiB8IC14ZW5peCogXAogCSAgICAgIHwgLWhpdXgqIHwgLTM4NmJzZCogfCAta25ldGJzZCogfCAtbWlyYnNkKiB8IC1uZXRic2QqIFwKLQkgICAgICB8IC1iaXRyaWcqIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiB8IC1saWJlcnR5YnNkKiBcCisJICAgICAgfCAtYml0cmlnKiB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCogXAogCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAogCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKIAkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCiAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCi0JICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIHwgLWdsaWRpeCogXAorCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIHwgLWNlZ2NjKiBcCiAJICAgICAgfCAtY3lnd2luKiB8IC1tc3lzKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotCSAgICAgIHwgLW1pZGlwaXgqIHwgLW1pbmd3MzIqIHwgLW1pbmd3NjQqIHwgLWxpbnV4LWdudSogfCAtbGludXgtYW5kcm9pZCogXAorCSAgICAgIHwgLW1pbmd3MzIqIHwgLW1pbmd3NjQqIHwgLWxpbnV4LWdudSogfCAtbGludXgtYW5kcm9pZCogXAogCSAgICAgIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtbXVzbCogfCAtbGludXgtdWNsaWJjKiBcCi0JICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogfCAtbW94aWVib3gqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKIAkgICAgICB8IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKIAkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCiAJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCiAJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKLQkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyogXAotCSAgICAgIHwgLW9uZWZzKiB8IC10aXJ0b3MqIHwgLXBob2VuaXgqIHwgLWZ1Y2hzaWEqKQorCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqIHwgLWVzKiB8IC10aXJ0b3MqKQogCSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkJOzsKIAktcW54KikKQEAgLTE1NDEsOCArMTUxMiw2IEBACiAJCTs7CiAJLW5hY2wqKQogCQk7OwotCS1pb3MpCi0JCTs7CiAJLW5vbmUpCiAJCTs7CiAJKikKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxZjg0NjQ3Li4xNTAwY2VhIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjUuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNi4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHBzOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01ODAsOCArNTgwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy41JwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCitQQUNLQUdFX1ZFUlNJT049JzMuNicKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy42JwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHBzOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0MiwxMSArNjQyLDEzIEBACiBNQUNIREVQX09CSlMKIERZTkxPQURGSUxFCiBETElOQ0xESVIKK0RUUkFDRV9PQkpTCitEVFJBQ0VfSEVBREVSUworREZMQUdTCitEVFJBQ0UKIFRIUkVBRE9CSgogTERMQVNUCiBVU0VfVEhSRUFEX01PRFVMRQotU0lHTkFMX09CSlMKLVVTRV9TSUdOQUxfTU9EVUxFCiBUQ0xUS19MSUJTCiBUQ0xUS19JTkNMVURFUwogTElCRkZJX0lOQ0xVREVESVIKQEAgLTcwOCwxMiArNzEwLDEzIEBACiBCVUlMREVYRUVYVAogRUdSRVAKIE5PX0FTX05FRURFRAorTVVMVElBUkNIX0NQUEZMQUdTCiBQTEFURk9STV9UUklQTEVUCi1QTEFURElSCiBNVUxUSUFSQ0gKIGFjX2N0X0NYWAogTUFJTkNDCiBDWFgKK1NFRAogR1JFUAogQ1BQCiBPQkpFWFQKQEAgLTc4MSw3ICs3ODQsNiBAQAogZG9jZGlyCiBvbGRpbmNsdWRlZGlyCiBpbmNsdWRlZGlyCi1ydW5zdGF0ZWRpcgogbG9jYWxzdGF0ZWRpcgogc2hhcmVkc3RhdGVkaXIKIHN5c2NvbmZkaXIKQEAgLTgyNywxNCArODI5LDEzIEBACiB3aXRoX3RjbHRrX2luY2x1ZGVzCiB3aXRoX3RjbHRrX2xpYnMKIHdpdGhfZGJtbGlib3JkZXIKLXdpdGhfc2lnbmFsX21vZHVsZQogd2l0aF90aHJlYWRzCiB3aXRoX3RocmVhZAogZW5hYmxlX2lwdjYKIHdpdGhfZG9jX3N0cmluZ3MKLXdpdGhfdHNjCiB3aXRoX3B5bWFsbG9jCiB3aXRoX3ZhbGdyaW5kCit3aXRoX2R0cmFjZQogd2l0aF9mcGVjdGwKIHdpdGhfbGlibQogd2l0aF9saWJjCkBAIC04OTMsNyArODk0LDYgQEAKIHN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCiBzaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKIGxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXInCi1ydW5zdGF0ZWRpcj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4nCiBpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKIG9sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScKIGRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKQEAgLTExNDYsMTUgKzExNDYsNiBAQAogICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKICAgICBzaWxlbnQ9eWVzIDs7CiAKLSAgLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaSB8IC0tcnVuc3RhdGVkIFwKLSAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEgfCAtLXJ1bnN0IHwgLS1ydW5zIFwKLSAgfCAtLXJ1biB8IC0tcnUgfCAtLXIpCi0gICAgYWNfcHJldj1ydW5zdGF0ZWRpciA7OwotICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCi0gIHwgLS1ydW5zdGF0ZT0qIHwgLS1ydW5zdGF0PSogfCAtLXJ1bnN0YT0qIHwgLS1ydW5zdD0qIHwgLS1ydW5zPSogXAotICB8IC0tcnVuPSogfCAtLXJ1PSogfCAtLXI9KikKLSAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Ci0KICAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCiAgICAgYWNfcHJldj1zYmluZGlyIDs7CiAgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCkBAIC0xMjkyLDcgKzEyODMsNyBAQAogZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCiAJCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAogCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCi0JCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyIHJ1bnN0YXRlZGlyCisJCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyCiBkbwogICBldmFsIGFjX3ZhbD1cJCRhY192YXIKICAgIyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4KQEAgLTE0MDUsNyArMTM5Niw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy42IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE0NDUsNyArMTQzNiw2IEBACiAgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQogICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQogICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCi0gIC0tcnVuc3RhdGVkaXI9RElSICAgICAgIG1vZGlmaWFibGUgcGVyLXByb2Nlc3MgZGF0YSBbTE9DQUxTVEFURURJUi9ydW5dCiAgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCiAgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KICAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KQEAgLTE0NzIsNyArMTQ2Miw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNToiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjY6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTQ4Niw4ICsxNDc2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgKE1hY09TWHxEYXJ3aW4pIGZyYW1ld29yawogICAtLWVuYWJsZS1zaGFyZWQgICAgICAgICBkaXNhYmxlL2VuYWJsZSBidWlsZGluZyBzaGFyZWQgcHl0aG9uIGxpYnJhcnkKICAgLS1lbmFibGUtcHJvZmlsaW5nICAgICAgZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmcKLSAgLS1lbmFibGUtb3B0aW1pemF0aW9ucyAgRW5hYmxlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIChQR08sIG1heWJlIExUTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXRjKS4gRGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgLS1lbmFibGUtb3B0aW1pemF0aW9ucyAgRW5hYmxlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIChQR08sIGV0YykuIERpc2FibGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQuCiAgIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgbG9hZGFibGUgZXh0ZW5zaW9ucyBpbiBfc3FsaXRlIG1vZHVsZQogICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICBFbmFibGUgaXB2NiAod2l0aCBpcHY0KSBzdXBwb3J0CkBAIC0xNTMxLDE1ICsxNTIxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGNoZWNrIGRiIGJhY2tlbmRzIGZvciBkYm0uIFZhbGlkIHZhbHVlIGlzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb24gc2VwYXJhdGVkIHN0cmluZyB3aXRoIHRoZSBiYWNrZW5kIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBuZGJtJywgYGdkYm0nIGFuZCBgYmRiJy4KLSAgLS13aXRoLXNpZ25hbC1tb2R1bGUgICAgZGlzYWJsZS9lbmFibGUgc2lnbmFsIG1vZHVsZQogICAtLXdpdGgob3V0KS10aHJlYWRzWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUvZW5hYmxlIHRocmVhZCBzdXBwb3J0CiAgIC0td2l0aChvdXQpLXRocmVhZFs9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXByZWNhdGVkOyB1c2UgLS13aXRoKG91dCktdGhyZWFkcwogICAtLXdpdGgob3V0KS1kb2Mtc3RyaW5ncyBkaXNhYmxlL2VuYWJsZSBkb2N1bWVudGF0aW9uIHN0cmluZ3MKLSAgLS13aXRoKG91dCktdHNjICAgICAgICAgZW5hYmxlL2Rpc2FibGUgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsZQogICAtLXdpdGgob3V0KS1weW1hbGxvYyAgICBkaXNhYmxlL2VuYWJsZSBzcGVjaWFsaXplZCBtYWxsb2NzCiAgIC0td2l0aC12YWxncmluZCAgICAgICAgIEVuYWJsZSBWYWxncmluZCBzdXBwb3J0CisgIC0td2l0aChvdXQpLWR0cmFjZSAgICAgIGRpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0CiAgIC0td2l0aC1mcGVjdGwgICAgICAgICAgIGVuYWJsZSBTSUdGUEUgY2F0Y2hpbmcKICAgLS13aXRoLWxpYm09U1RSSU5HICAgICAgbWF0aCBsaWJyYXJ5CiAgIC0td2l0aC1saWJjPVNUUklORyAgICAgIEMgbGlicmFyeQpAQCAtMTYzMSw3ICsxNjIwLDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1weXRob24gY29uZmlndXJlIDMuNQorcHl0aG9uIGNvbmZpZ3VyZSAzLjYKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQogCiBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xOTg0LDEzNiArMTk3Myw2IEBACiAKIH0gIyBhY19mbl9jX2NoZWNrX3R5cGUKIAotIyBhY19mbl9jX2ZpbmRfdWludFhfdCBMSU5FTk8gQklUUyBWQVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpbmRzIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCi0jIGFjY29yZGluZ2x5LgotYWNfZm5fY19maW5kX3VpbnRYX3QgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1aW50JDJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgdWludCQyX3QuLi4gIiA+JjY7IH0KLWlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBldmFsICIkMz1ubyIKLSAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCi0gICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCi0gICAgIGZvciBhY190eXBlIGluIHVpbnQkMl90ICd1bnNpZ25lZCBpbnQnICd1bnNpZ25lZCBsb25nIGludCcgXAotCSAndW5zaWduZWQgbG9uZyBsb25nIGludCcgJ3Vuc2lnbmVkIHNob3J0IGludCcgJ3Vuc2lnbmVkIGNoYXInOyBkbwotICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgoJGFjX3R5cGUpIC0xID4+ICgkMiAvIDIgLSAxKSkgPj4gKCQyIC8gMiAtIDEpID09IDMpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGNhc2UgJGFjX3R5cGUgaW4gIygKLSAgdWludCQyX3QpIDoKLSAgICBldmFsICIkMz15ZXMiIDs7ICMoCi0gICopIDoKLSAgICBldmFsICIkMz1cJGFjX3R5cGUiIDs7Ci1lc2FjCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgICAgaWYgZXZhbCB0ZXN0IFwieFwkIiQzIlwiID0geCJubyI7IHRoZW4gOgotCi1lbHNlCi0gIGJyZWFrCi1maQotICAgICBkb25lCi1maQotZXZhbCBhY19yZXM9XCQkMwotCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Ci0kYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwotCi19ICMgYWNfZm5fY19maW5kX3VpbnRYX3QKLQotIyBhY19mbl9jX2ZpbmRfaW50WF90IExJTkVOTyBCSVRTIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaW5kcyBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2NfZmluZF9pbnRYX3QgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbnQkMl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBpbnQkMl90Li4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgZXZhbCAiJDM9bm8iCi0gICAgICMgT3JkZXIgaXMgaW1wb3J0YW50IC0gbmV2ZXIgY2hlY2sgYSB0eXBlIHRoYXQgaXMgcG90ZW50aWFsbHkgc21hbGxlcgotICAgICAjIHRoYW4gaGFsZiBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHdpZHRoLgotICAgICBmb3IgYWNfdHlwZSBpbiBpbnQkMl90ICdpbnQnICdsb25nIGludCcgXAotCSAnbG9uZyBsb25nIGludCcgJ3Nob3J0IGludCcgJ3NpZ25lZCBjaGFyJzsgZG8KLSAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotCSAgICAgZW51bSB7IE4gPSAkMiAvIDIgLSAxIH07Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKDAgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikgPDwgTikgLSAxKSAqIDIgKyAxKSldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLQkgICAgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OwotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikgPDwgTikgLSAxKSAqIDIgKyAxKQotCQkgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikgPDwgTikgLSAxKSAqIDIgKyAyKSldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICBjYXNlICRhY190eXBlIGluICMoCi0gIGludCQyX3QpIDoKLSAgICBldmFsICIkMz15ZXMiIDs7ICMoCi0gICopIDoKLSAgICBldmFsICIkMz1cJGFjX3R5cGUiIDs7Ci1lc2FjCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgICAgaWYgZXZhbCB0ZXN0IFwieFwkIiQzIlwiID0geCJubyI7IHRoZW4gOgotCi1lbHNlCi0gIGJyZWFrCi1maQotICAgICBkb25lCi1maQotZXZhbCBhY19yZXM9XCQkMwotCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Ci0kYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwotCi19ICMgYWNfZm5fY19maW5kX2ludFhfdAotCiAjIGFjX2ZuX2NfY29tcHV0ZV9pbnQgTElORU5PIEVYUFIgVkFSIElOQ0xVREVTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyaWVzIHRvIGZpbmQgdGhlIGNvbXBpbGUtdGltZSB2YWx1ZSBvZiBFWFBSIGluIGEgcHJvZ3JhbSB0aGF0IGluY2x1ZGVzCkBAIC0yNDcwLDcgKzIzMjksNyBAQAogVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKLUl0IHdhcyBjcmVhdGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK0l0IHdhcyBjcmVhdGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy42LCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgICQgJDAgJEAKQEAgLTMwNTksNyArMjkxOCw3IEBACiAgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCiAgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KIAkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKLQkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsMykpJzsgdGhlbgorCSAgICBpZiAkaW50ZXJwIC1jICJpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCAnLicuam9pbihzdHIobikgZm9yIG4gaW4gc3lzLnZlcnNpb25faW5mb1s6Ml0pID09ICckUEFDS0FHRV9WRVJTSU9OJykiOyB0aGVuCiAJICAgICAgICBicmVhawogCSAgICBmaQogICAgICAgICAgICAgaW50ZXJwPQpAQCAtMzA2OSw3ICsyOTI4LDcgQEAKIAlmaQogICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGludGVycCIgPiY1CiAkYXNfZWNobyAiJGludGVycCIgPiY2OyB9Ci0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWIgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUU9X3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkgJyRpbnRlcnAKICAgICBmaQogICAgICMgVXNlZCB0byBjb21tZW50IG91dCBzdHVmZiBmb3IgcmVidWlsZGluZyBnZW5lcmF0ZWQgZmlsZXMKICAgICBHRU5FUkFURURfQ09NTUVOVD0nIycKQEAgLTMwOTcsNyArMjk1Niw3IEBACiBtdiBjb25mZGVmcy5oLm5ldyBjb25mZGVmcy5oCiAKIAotVkVSU0lPTj0zLjUKK1ZFUlNJT049My42CiAKICMgVmVyc2lvbiBudW1iZXIgb2YgUHl0aG9uJ3Mgb3duIHNoYXJlZCBsaWJyYXJ5IGZpbGUuCiAKQEAgLTMzODgsNiArMzI0Nyw5IEBACiAgICAgICAgIyBhIGxvdCBvZiBkaWZmZXJlbnQgdGhpbmdzIGluY2x1ZGluZyAnZGVmaW5lX3hvcGVuX3NvdXJjZScKICAgICAgICAjIGluIHRoZSBjYXNlIHN0YXRlbWVudCBiZWxvdy4KIAljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgtYW5kcm9pZCopCisJCWFjX3N5c19zeXN0ZW09TGludXgtYW5kcm9pZAorCQk7OwogCSotKi1saW51eCopCiAJCWFjX3N5c19zeXN0ZW09TGludXgKIAkJOzsKQEAgLTQ3MTYsNiArNDU3OCw3NSBAQAogIEdSRVA9IiRhY19jdl9wYXRoX0dSRVAiCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfU0VEKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICAgICAgIGFjX3NjcmlwdD1zL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhL2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYi8KKyAgICAgZm9yIGFjX2kgaW4gMSAyIDMgNCA1IDYgNzsgZG8KKyAgICAgICBhY19zY3JpcHQ9IiRhY19zY3JpcHQkYXNfbmwkYWNfc2NyaXB0IgorICAgICBkb25lCisgICAgIGVjaG8gIiRhY19zY3JpcHQiIDI+L2Rldi9udWxsIHwgc2VkIDk5cSA+Y29uZnRlc3Quc2VkCisgICAgIHsgYWNfc2NyaXB0PTsgdW5zZXQgYWNfc2NyaXB0O30KKyAgICAgaWYgdGVzdCAteiAiJFNFRCI7IHRoZW4KKyAgYWNfcGF0aF9TRURfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIHNlZCBnc2VkOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9TRUQ9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX1NFRCIgfHwgY29udGludWUKKyMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX1NFRCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfU0VECitjYXNlIGAiJGFjX3BhdGhfU0VEIiAtLXZlcnNpb24gMj4mMWAgaW4KKypHTlUqKQorICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIiBhY19wYXRoX1NFRF9mb3VuZD06OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3QuaW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKKyAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKyAgICAkYXNfZWNobyAnJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX1NFRCIgLWYgY29uZnRlc3Quc2VkIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9TRURfbWF4LTB9OyB0aGVuCisgICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiCisgICAgICBhY19wYXRoX1NFRF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX1NFRF9mb3VuZCAmJiBicmVhayAzCisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfU0VEIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfU0VEPSRTRUQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfU0VEIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9TRUQiID4mNjsgfQorIFNFRD0iJGFjX2N2X3BhdGhfU0VEIgorICBybSAtZiBjb25mdGVzdC5zZWQKKwogCiAKIApAQCAtNTI4OSw3ICs1MjIwLDkgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICAjIEFuZHJvaWQgaXMgbm90IGEgbXVsdGlhcmNoIHN5c3RlbS4KKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtNTQwNSwxMCArNTMzOCwxMyBAQAogICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4JE1VTFRJQVJDSDsgdGhlbgogICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQiICIkTElORU5PIiA1CiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCiAKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKIAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQiID4mNQpAQCAtNTcwMiw2ICs1NjM4LDQzIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBBbmRyb2lkIEFQSSBsZXZlbC4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CithbmRyb2lkX2FwaSA9IF9fQU5EUk9JRF9BUElfXworYXJtX2FyY2ggPSBfX0FSTV9BUkNICisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YHNlZCAtbiAtZSAnL19fQU5EUk9JRF9BUElfXy9kJyAtZSAncy9eYW5kcm9pZF9hcGkgPSAvL3AnIGNvbmZ0ZXN0Lm91dGAKKyAgX2FybV9hcmNoPWBzZWQgLW4gLWUgJy9fX0FSTV9BUkNIL2QnIC1lICdzL15hcm1fYXJjaCA9IC8vcCcgY29uZnRlc3Qub3V0YAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFORFJPSURfQVBJX0xFVkVMIiA+JjUKKyRhc19lY2hvICIkQU5EUk9JRF9BUElfTEVWRUwiID4mNjsgfQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEFORFJPSURfQVBJX0xFVkVMICRBTkRST0lEX0FQSV9MRVZFTAorX0FDRU9GCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBhcm0gQUJJIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBhcm0gQUJJLi4uICIgPiY2OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkX2FybV9hcmNoIiA+JjUKKyRhc19lY2hvICIkX2FybV9hcmNoIiA+JjY7IH0KKyAgaWYgdGVzdCAiJF9hcm1fYXJjaCIgPSA3OyB0aGVuCisgICAgQkFTRUNGTEFHUz0iJHtCQVNFQ0ZMQUdTfSAtbWZsb2F0LWFiaT1zb2Z0ZnAgLW1mcHU9dmZwdjMtZDE2IgorICAgIExERkxBR1M9IiR7TERGTEFHU30gLW1hcmNoPWFybXY3LWEgLVdsLC0tZml4LWNvcnRleC1hOCIKKyAgZmkKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBBbmRyb2lkIiA+JjUKKyRhc19lY2hvICJub3QgQW5kcm9pZCIgPiY2OyB9CitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtNjU2Niw3ICs2NTM5LDcgQEAKIGlmIHRlc3QgIiRQeV9PUFQiID0gJ3RydWUnIDsgdGhlbgogICAjIEludGVudGlvbmFsbHkgbm90IGZvcmNpbmcgUHlfTFRPPSd0cnVlJyBoZXJlLiAgVG9vIG1hbnkgdG9vbGNoYWlucyBkbyBub3QKICAgIyBjb21waWxlIHdvcmtpbmcgY29kZSB1c2luZyBpdCBhbmQgYm90aCB0ZXN0X2Rpc3R1dGlscyBhbmQgdGVzdF9nZGIgYXJlCi0gICMgYnJva2VuIHdoZW4geW91IGRvIG1hbmFnZWQgdG8gZ2V0IGEgdG9vbGNoYWluIHRoYXQgd29ya3Mgd2l0aCBpdC4gIFBlb3BsZQorICAjIGJyb2tlbiB3aGVuIHlvdSBkbyBtYW5hZ2UgdG8gZ2V0IGEgdG9vbGNoYWluIHRoYXQgd29ya3Mgd2l0aCBpdC4gIFBlb3BsZQogICAjIHdobyB3YW50IExUTyBuZWVkIHRvIHVzZSAtLXdpdGgtbHRvIHRoZW1zZWx2ZXMuCiAgIERFRl9NQUtFX0FMTF9SVUxFPSJwcm9maWxlLW9wdCIKICAgUkVRVUlSRV9QR089InllcyIKQEAgLTY2MDMsMTMgKzY1NzYsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTY5MTcsNiArNjg5Nyw0OSBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2V4dHJhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2V4dHJhLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZXh0cmFfd2FybmluZ3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4dHJhX3dhcm5pbmdzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZXh0cmFfd2FybmluZ3MgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2V4dHJhIgorICAgIGZpCisKICAgICAjIFB5dGhvbiBkb2Vzbid0IHZpb2xhdGUgQzk5IGFsaWFzaW5nIHJ1bGVzLCBidXQgb2xkZXIgdmVyc2lvbnMgb2YKICAgICAjIEdDQyBwcm9kdWNlIHdhcm5pbmdzIGZvciBsZWdhbCBQeXRob24gY29kZS4gIEVuYWJsZQogICAgICMgLWZuby1zdHJpY3QtYWxpYXNpbmcgb24gdmVyc2lvbnMgb2YgR0NDIHRoYXQgc3VwcG9ydCBidXQgcHJvZHVjZQpAQCAtNzAzNywxNCArNzA2MCwxNCBAQAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcmVzdWx0IgogICAgIGZpCiAKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLi4uICIgPiY2OyB9CiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIGlmICR7YWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAgICBDQz0iJENDIC1XdW51c2VkLXBhcmFtZXRlciAtV2Vycm9yIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzA2MiwyNCArNzA4NSw2NCBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcwogCiBlbHNlCiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9bm8KIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIAotICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmciID4mNQotJGFzX2VjaG8gIiRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzIiA+JjY7IH0KKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgogICAgIGZpCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CkBAIC03NzA5LDcgKzc3NzIsNyBAQAogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTc3MTgsNyArNzc4MSw3IEBACiBzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCiBzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKIGxpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKK2xpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCiBzeXMvZW5kaWFuLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNzk0MSw2ICs4MDA0LDI0IEBACiBmaQogCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorZm9yIGFjX2hlYWRlciBpbiBibHVldG9vdGgvYmx1ZXRvb3RoLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImJsdWV0b290aC9ibHVldG9vdGguaCIgImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0JMVUVUT09USF9CTFVFVE9PVEhfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBmb3IgYWNfaGVhZGVyIGluIG5ldC9pZi5oCiBkbyA6CkBAIC04MTQ2LDYgKzgyMjcsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTgyNTIsOTUgKzgzMzgsNiBAQAogZmkKIAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJ1aW50MzJfdCIgImFjX2N2X3R5cGVfdWludDMyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfdWludDMyX3QiCi1jYXNlICRhY19jdl9jX3VpbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgdWludDMyX3QgJGFjX2N2X2NfdWludDMyX3QKLV9BQ0VPRgotOzsKLSAgZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQ2NF90IiAiYWNfY3ZfdHlwZV91aW50NjRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjY0IiAiYWNfY3ZfY191aW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfdWludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50NjRfdCAkYWNfY3ZfY191aW50NjRfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiaW50MzJfdCIgImFjX2N2X3R5cGVfaW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX2ludDMyX3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX2ludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY19pbnQzMl90IgotY2FzZSAkYWNfY3ZfY19pbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBpbnQzMl90ICRhY19jdl9jX2ludDMyX3QKLV9BQ0VPRgotOzsKLWVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQ2NF90IiAiYWNfY3ZfdHlwZV9pbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50NjRfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCi1jYXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAotX0FDRU9GCi07OwotZXNhYwotCi0KIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNzaXplX3QiICJhY19jdl90eXBlX3NzaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKIGlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgogCkBAIC04NDI4LDYgKzg0MjUsMzkgQEAKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKICMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK19BQ0VPRgorCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygdm9pZCAqIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2Ygdm9pZCAqLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3NpemVvZl92b2lkX3ArOn0gZmFsc2U7IHRoZW4gOgpAQCAtODY1NSw2NyArODY4NSwzOSBAQAogX0FDRU9GCiAKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBsb25nIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWhhdmVfbG9uZ19sb25nPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGhhdmVfbG9uZ19sb25nIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKIAogZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3VpbnRwdHJfdCIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh1aW50cHRyX3QpCiBTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQotICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCiAgICBmaQogZmkKIAogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY2OyB9CiAKIAogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKKyNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAogX0FDRU9GCiAKIAotZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydC4uLiAiID4mNjsgfQpAQCAtODc3OCwzMyArODc4MCw2IEBACiAKIGZpCiAKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9jOTlfYm9vbD1ubwotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLV9Cb29sIHg7IHggPSAoX0Jvb2wpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQzk5X0JPT0wgMSIgPj5jb25mZGVmcy5oCi0KLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2M5OV9ib29sIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9jOTlfYm9vbCIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCkBAIC04ODM4LDU2ICs4ODEzLDYgQEAKIF9BQ0VPRgogCiAKLWZpCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnRwdHJfdCIgImFjX2N2X3R5cGVfdWludHB0cl90IiAiI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmCi0iCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHh5ZXM7IHRoZW4gOgotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVfVUlOVFBUUl9UIDEKLV9BQ0VPRgotCi0jIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgotIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwotIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCi0jIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAodWludHB0cl90KSkiICJhY19jdl9zaXplb2ZfdWludHB0cl90IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6Ci0KLWVsc2UKLSAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgotICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl91aW50cHRyX3Q9MAotICAgZmkKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KLQotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAotX0FDRU9GCi0KLQotZmkKLQogCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwpAQCAtODkzMCw4ICs4ODU1LDYgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogCkBAIC04OTQzLDEwICs4ODY2LDYgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC05Mzc2LDYgKzkyOTUsNyBAQAogCQkgdGhlbiBDQ1NIQVJFRD0iLWZQSUMiOwogCQkgZWxzZSBDQ1NIQVJFRD0iK3oiOwogCQkgZmk7OworCUxpbnV4LWFuZHJvaWQqKSA7OwogCUxpbnV4KnxHTlUqKSBDQ1NIQVJFRD0iLWZQSUMiOzsKIAlCU0QvT1MqLzQqKSBDQ1NIQVJFRD0iLWZwaWMiOzsKIAlGcmVlQlNEKnxOZXRCU0QqfE9wZW5CU0QqfERyYWdvbkZseSopIENDU0hBUkVEPSItZlBJQyI7OwpAQCAtOTQwOSw2ICs5MzI5LDcgQEAKIAkgICAgTElOS0ZPUlNIQVJFRD0iLVdsLC1FIC1XbCwrcyI7OwogIwkgICAgTElOS0ZPUlNIQVJFRD0iLVdsLC1FIC1XbCwrcyAtV2wsK2JcJChCSU5MSUJERVNUKS9saWItZHlubG9hZCI7OwogCUJTRC9PUy80KikgTElOS0ZPUlNIQVJFRD0iLVhsaW5rZXIgLWV4cG9ydC1keW5hbWljIjs7CisJTGludXgtYW5kcm9pZCopIExJTktGT1JTSEFSRUQ9Ii1waWUgLVhsaW5rZXIgLWV4cG9ydC1keW5hbWljIjs7CiAJTGludXgqfEdOVSopIExJTktGT1JTSEFSRUQ9Ii1YbGlua2VyIC1leHBvcnQtZHluYW1pYyI7OwogCSMgLXUgbGlic3lzX3MgcHVsbHMgaW4gYWxsIHN5bWJvbHMgaW4gbGlic3lzCiAJRGFyd2luLyopCkBAIC0xMDEwNCwxMSArMTAwMjUsMjcgQEAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2ZmaSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2ZmaStzZXR9IiA9IHNldDsgdGhlbiA6CiAgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2ZmaTsKLWVsc2UKLSAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKIGZpCiAKIAorY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBhc19mbl9lcnJvciAkPyAiLS13aXRoLXN5c3RlbS1mZmkgYWNjZXB0cyBubyBhcmd1bWVudHMiICIkTElORU5PIiA1CisgICAgICAgIDs7Citlc2FjCisKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgogZWxzZQpAQCAtMTAyMTEsMzIgKzEwMTQ4LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kYm1saWJvcmRlciIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZGJtbGlib3JkZXIiID4mNjsgfQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2lnbmFsLW1vZHVsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc2lnbmFsX21vZHVsZTsKLWZpCi0KLQotaWYgdGVzdCAteiAiJHdpdGhfc2lnbmFsX21vZHVsZSIKLXRoZW4gd2l0aF9zaWduYWxfbW9kdWxlPSJ5ZXMiCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNQotJGFzX2VjaG8gIiR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNjsgfQotCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZX0iID0gInllcyI7IHRoZW4KLQlVU0VfU0lHTkFMX01PRFVMRT0iIgotCVNJR05BTF9PQkpTPSIiCi1lbHNlCi0JVVNFX1NJR05BTF9NT0RVTEU9IiMiCi0JU0lHTkFMX09CSlM9IlBhcnNlci9pbnRyY2hlY2subyBQeXRob24vc2lnY2hlY2subyIKLWZpCi0KICMgVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIFNldHVwLmNvbmZpZwogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgpAQCAtMTEwNTMsMzcgKzEwOTY0LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotaW50Ci1tYWluICgpCi17Ci1GU0lPUmVmTnVtIGZSZWYgPSAwCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfT1NYMTA1X1NESyAxIiA+PmNvbmZkZWZzLmgKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCi1lbHNlCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQogIyBDaGVjayBmb3IgLS13aXRoLWRvYy1zdHJpbmdzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncy4uLiAiID4mNjsgfQpAQCAtMTExMDYsMjkgKzEwOTg2LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kb2Nfc3RyaW5ncyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZG9jX3N0cmluZ3MiID4mNjsgfQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRzYyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRzYy4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRzYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfdHNjK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF90c2M7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9UU0MgMSIgPj5jb25mZGVmcy5oCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotZWxzZSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1weW1hbGxvYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jLi4uICIgPiY2OyB9CkBAIC0xMTE4MSw2ICsxMTAzOCwxMDIgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZHRyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kdHJhY2Urc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2R0cmFjZTsKK2Vsc2UKKyAgd2l0aF9kdHJhY2U9bm8KK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kdHJhY2UiID4mNQorJGFzX2VjaG8gIiR3aXRoX2R0cmFjZSIgPiY2OyB9CisKKworCisKKworRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkdHJhY2UiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGR0cmFjZTsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRFRSQUNFKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkRFRSQUNFIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0RUUkFDRT0iJERUUkFDRSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfRFRSQUNFPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0RUUkFDRSIgJiYgYWNfY3ZfcGF0aF9EVFJBQ0U9Im5vdCBmb3VuZCIKKyAgOzsKK2VzYWMKK2ZpCitEVFJBQ0U9JGFjX2N2X3BhdGhfRFRSQUNFCitpZiB0ZXN0IC1uICIkRFRSQUNFIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERUUkFDRSIgPiY1CiskYXNfZWNobyAiJERUUkFDRSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCAiJERUUkFDRSIgPSAibm90IGZvdW5kIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBXSVRIX0RUUkFDRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIERUUkFDRV9IRUFERVJTPSJJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oIgorCisgICAgIyBPbiBPUyBYLCBEVHJhY2UgcHJvdmlkZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29tcGlsZWQgYW5kCisgICAgIyBsaW5rZWQgaW50byB0aGUgYmluYXJ5LiBDb3JyZXNwb25kaW5nbHksIGR0cmFjZSgxKSBpcyBtaXNzaW5nIHRoZSBFTEYKKyAgICAjIGdlbmVyYXRpb24gZmxhZyAnLUcnLiBXZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgdGhpcyBmbGFnLCByYXRoZXIgdGhhbgorICAgICMgaGFyZGNvZGluZyBzdXBwb3J0IGJ5IE9TLCBpbiB0aGUgaW50ZXJlc3Qgb2Ygcm9idXN0bmVzcy4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9kdHJhY2VfbGluays6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPW5vCisgICAgICAgICAgICBlY2hvICdCRUdJTicgPiBjb25mdGVzdC5kCisgICAgICAgICAgICAiJERUUkFDRSIgLUcgLXMgY29uZnRlc3QuZCAtbyBjb25mdGVzdC5vID4gL2Rldi9udWxsIDI+JjEgJiYgXAorICAgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPXllcworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kdHJhY2VfbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2R0cmFjZV9saW5rIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZHRyYWNlX2xpbmsiID0gInllcyI7IHRoZW4KKyAgICAgICAgRFRSQUNFX09CSlM9IlB5dGhvbi9weWR0cmFjZS5vIgorICAgIGZpCitmaQorCiAjIC1JJHtETElOQ0xESVJ9IGlzIGFkZGVkIHRvIHRoZSBjb21waWxlIHJ1bGUgZm9yIGltcG9ydGRsLm8KIAogRExJTkNMRElSPS4KQEAgLTExMjYxLDggKzExMjE0LDcgQEAKICBmdXRpbWVucyBmdXRpbWVzIGdhaV9zdHJlcnJvciBnZXRlbnRyb3B5IFwKICBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpZl9uYW1laW5kZXggXAotIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbGlua2F0IGxzdGF0IGx1dGltZXMgbW1hcCBcCiAgbWVtcmNociBtYnJ0b3djIG1rZGlyYXQgbWtmaWZvIFwKICBta2ZpZm9hdCBta25vZCBta25vZGF0IG1rdGltZSBtcmVtYXAgbmljZSBvcGVuYXQgcGF0aGNvbmYgcGF1c2UgcGlwZTIgcGxvY2sgcG9sbCBcCiAgcG9zaXhfZmFsbG9jYXRlIHBvc2l4X2ZhZHZpc2UgcHJlYWQgXApAQCAtMTI2MTEsNiArMTI1NjMsNjQgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19zZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX3NldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfc2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfc2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX3NldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTI2NTEsNiArMTI2NjEsODAgQEAKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAKKyMgT24gQW5kcm9pZCBBUEkgbGV2ZWwgMjQgd2l0aCBhbmRyb2lkLW5kay1yMTMsIGlmX25hbWVpbmRleCgpIGlzIGF2YWlsYWJsZSwKKyMgYnV0IHRoZSBpZl9uYW1laW5kZXggc3RydWN0dXJlIGlzIG5vdCBkZWZpbmVkLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaWZfbmFtZWluZGV4IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpZl9uYW1laW5kZXguLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgU1REQ19IRUFERVJTCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1RETElCX0gKKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorIyBpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3N0cnVjdCBpZl9uYW1laW5kZXggKm5pID0gaWZfbmFtZWluZGV4KCk7IGludCB4ID0gbmlbMF0uaWZfaW5kZXg7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JRl9OQU1FSU5ERVggMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworIyBJc3N1ZSAjMjg3NjI6IGxvY2tmKCkgaXMgYXZhaWxhYmxlIG9uIEFuZHJvaWQgQVBJIGxldmVsIDI0LCBidXQgdGhlIEZfTE9DSworIyBtYWNybyBpcyBub3QgZGVmaW5lZCBpbiBhbmRyb2lkLW5kay1yMTMuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb2NrZiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9ja2YuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4KK2ludAorbWFpbiAoKQoreworbG9ja2YoMCwgRl9MT0NLLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0xPQ0tGIDEiID4+Y29uZmRlZnMuaAorCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKICMgT24gT1NGLzEgVjUuMSwgZ2V0YWRkcmluZm8gaXMgYXZhaWxhYmxlLCBidXQgYSBkZWZpbmUKICMgZm9yIFtub11nZXRhZGRyaW5mbyBpbiBuZXRkYi5oLgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2V0YWRkcmluZm8iID4mNQpAQCAtMTMwMjgsNiArMTMxMTIsMzMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgcGFzc3dkIiAicHdfZ2Vjb3MiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MgMQorX0FDRU9GCisKKworZmkKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X3Bhc3N3ZCIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfcGFzc3dkX3B3X3Bhc3N3ZCIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCAxCitfQUNFT0YKKworCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lLi4uICIgPiY2OyB9CkBAIC0xMzE1OSw2ICsxMzI3MCw0MSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNvY2thZGRyX2FsZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc29ja2FkZHJfYWxnIHMKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllcworZWxzZQorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0NLQUREUl9BTEcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNoYXIgaXMgdW5zaWduZWQiID4mNQpAQCAtMTM0NDcsNDAgKzEzNTkzLDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAotdmFfbGlzdF9pc19hcnJheT1ubwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHZhX2xpc3QgaXMgYW4gYXJyYXkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5Li4uICIgPiY2OyB9Ci1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLXZhX2xpc3QgbGlzdDEsIGxpc3QyOyBsaXN0MSA9IGxpc3QyOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLQotCi0kYXNfZWNobyAiI2RlZmluZSBWQV9MSVNUX0lTX0FSUkFZIDEiID4+Y29uZmRlZnMuaAotCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR2YV9saXN0X2lzX2FycmF5IiA+JjUKLSRhc19lY2hvICIkdmFfbGlzdF9pc19hcnJheSIgPiY2OyB9Ci0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogCiAKQEAgLTE0MzM4LDYgKzE0NDUwLDg1IEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTEFaWSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTEFaWSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTEFaWSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9XIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9XIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9XICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xPQ0FMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xPQ0FMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9OT0RFTEVURSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9MT0FEIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9MT0FEIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9MT0FEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9ERUVQQklORCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncy4uLiAiID4mNjsgfQpAQCAtMTQ3NzEsNyArMTQ5NjIsMTEgQEAKICRhc19lY2hvICIkTERWRVJTSU9OIiA+JjY7IH0KIAogCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtMTU1ODQsNyArMTU3NzksOSBAQAogCiAjIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitmaQogCiBmb3IgYWNfaGVhZGVyIGluIGN1cnNlcy5oIG5jdXJzZXMuaAogZG8gOgpAQCAtMTU4NDQsMTAyICsxNjA0MSw2IEBACiAKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydC4uLiAiID4mNjsgfQotICBpZiAke2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi1pbnQKLW1haW4gKCkKLXsKLQotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotZWxzZQotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNjsgfQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyBcImxsXCIiID4+Y29uZmRlZnMuaAotCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTE3MDEzLDcgKzE3MTE0LDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTcwNzUsNyArMTcxNzYsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuNQorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy42CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC0xNzgyNyw3ICsxNzkyOCw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JjYKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0tZW5hYmxlLW9wdGltaXphdGlvbnMiID4mNgogICAgIGVjaG8gIiIgPiY2CiAgICAgZWNobyAiIiA+JjYKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0OWQxYTM3Li42NGYxMmYyIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDcgKzMsNyBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjUpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNikKIAogQUNfUFJFUkVRKDIuNjUpCiAKQEAgLTY5LDcgKzY5LDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvQDw6QDoyQDo+QCA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvQDw6QDoyQDo+QCkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC03OCw3ICs3OCw3IEBACiAJICAgIEFDX01TR19FUlJPUihbcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBpbnRlcnByZXRlciBub3QgZm91bmRdKQogCWZpCiAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtMzc5LDYgKzM3OSw5IEBACiAgICAgICAgIyBhIGxvdCBvZiBkaWZmZXJlbnQgdGhpbmdzIGluY2x1ZGluZyAnZGVmaW5lX3hvcGVuX3NvdXJjZScKICAgICAgICAjIGluIHRoZSBjYXNlIHN0YXRlbWVudCBiZWxvdy4KIAljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgtYW5kcm9pZCopCisJCWFjX3N5c19zeXN0ZW09TGludXgtYW5kcm9pZAorCQk7OwogCSotKi1saW51eCopCiAJCWFjX3N5c19zeXN0ZW09TGludXgKIAkJOzsKQEAgLTY5NCw2ICs2OTcsNyBAQAogQUNfUFJPR19DQwogQUNfUFJPR19DUFAKIEFDX1BST0dfR1JFUAorQUNfUFJPR19TRUQKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzY4LDcgKzc3Miw5IEBACiAjdW5kZWYgcG93ZXJwYwogI3VuZGVmIHNwYXJjCiAjdW5kZWYgdW5peAotI2lmIGRlZmluZWQoX19saW51eF9fKQorI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisgICAgIyBBbmRyb2lkIGlzIG5vdCBhIG11bHRpYXJjaCBzeXN0ZW0uCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTg4MiwxMSArODg4LDE0IEBACiAgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCiAgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAotQUNfU1VCU1QoUExBVERJUikKIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCitBQ19TVUJTVChNVUxUSUFSQ0hfQ1BQRkxBR1MpCiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtOTAzLDYgKzkxMiwzNCBAQAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCiBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKIAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsXSkKK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorYW5kcm9pZF9hcGkgPSBfX0FORFJPSURfQVBJX18KK2FybV9hcmNoID0gX19BUk1fQVJDSAorI2Vsc2UKKyNlcnJvciBub3QgQW5kcm9pZAorI2VuZGlmCitFT0YKKworaWYgJENQUCAkQ1BQRkxBR1MgY29uZnRlc3QuYyA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIEFORFJPSURfQVBJX0xFVkVMPWBzZWQgLW4gLWUgJy9fX0FORFJPSURfQVBJX18vZCcgLWUgJ3MvXmFuZHJvaWRfYXBpID0gLy9wJyBjb25mdGVzdC5vdXRgCisgIF9hcm1fYXJjaD1gc2VkIC1uIC1lICcvX19BUk1fQVJDSC9kJyAtZSAncy9eYXJtX2FyY2ggPSAvL3AnIGNvbmZ0ZXN0Lm91dGAKKyAgQUNfTVNHX1JFU1VMVChbJEFORFJPSURfQVBJX0xFVkVMXSkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKEFORFJPSURfQVBJX0xFVkVMLCAkQU5EUk9JRF9BUElfTEVWRUwsIFtUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuXSkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgQW5kcm9pZCBhcm0gQUJJXSkKKyAgQUNfTVNHX1JFU1VMVChbJF9hcm1fYXJjaF0pCisgIGlmIHRlc3QgIiRfYXJtX2FyY2giID0gNzsgdGhlbgorICAgIEJBU0VDRkxBR1M9IiR7QkFTRUNGTEFHU30gLW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PXZmcHYzLWQxNiIKKyAgICBMREZMQUdTPSIke0xERkxBR1N9IC1tYXJjaD1hcm12Ny1hIC1XbCwtLWZpeC1jb3J0ZXgtYTgiCisgIGZpCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vdCBBbmRyb2lkXSkKK2ZpCitybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Lm91dAorCiAjIENoZWNrIGZvciB1bnN1cHBvcnRlZCBzeXN0ZW1zCiBjYXNlICRhY19zeXNfc3lzdGVtLyRhY19zeXNfcmVsZWFzZSBpbgogYXRoZW9zKnxMaW51eCovMSopCkBAIC0xMjM1LDcgKzEyNzIsNyBAQAogQUNfU1VCU1QoREVGX01BS0VfUlVMRSkKIFB5X09QVD0nZmFsc2UnCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0tZW5hYmxlLW9wdGltaXphdGlvbnMpCi1BQ19BUkdfRU5BQkxFKG9wdGltaXphdGlvbnMsIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1vcHRpbWl6YXRpb25zXSwgW0VuYWJsZSBleHBlbnNpdmUgb3B0aW1pemF0aW9ucyAoUEdPLCBtYXliZSBMVE8sIGV0YykuICBEaXNhYmxlZCBieSBkZWZhdWx0Ll0pLAorQUNfQVJHX0VOQUJMRShvcHRpbWl6YXRpb25zLCBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb3B0aW1pemF0aW9uc10sIFtFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgZXRjKS4gIERpc2FibGVkIGJ5IGRlZmF1bHQuXSksCiBbCiBpZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KIHRoZW4KQEAgLTEyNDksNyArMTI4Niw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICd0cnVlJyA7IHRoZW4KICAgIyBJbnRlbnRpb25hbGx5IG5vdCBmb3JjaW5nIFB5X0xUTz0ndHJ1ZScgaGVyZS4gIFRvbyBtYW55IHRvb2xjaGFpbnMgZG8gbm90CiAgICMgY29tcGlsZSB3b3JraW5nIGNvZGUgdXNpbmcgaXQgYW5kIGJvdGggdGVzdF9kaXN0dXRpbHMgYW5kIHRlc3RfZ2RiIGFyZQotICAjIGJyb2tlbiB3aGVuIHlvdSBkbyBtYW5hZ2VkIHRvIGdldCBhIHRvb2xjaGFpbiB0aGF0IHdvcmtzIHdpdGggaXQuICBQZW9wbGUKKyAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlIHRvIGdldCBhIHRvb2xjaGFpbiB0aGF0IHdvcmtzIHdpdGggaXQuICBQZW9wbGUKICAgIyB3aG8gd2FudCBMVE8gbmVlZCB0byB1c2UgLS13aXRoLWx0byB0aGVtc2VsdmVzLgogICBERUZfTUFLRV9BTExfUlVMRT0icHJvZmlsZS1vcHQiCiAgIFJFUVVJUkVfUEdPPSJ5ZXMiCkBAIC0xMjc3LDEzICsxMzE0LDIwIEBACiBpZiB0ZXN0ICIkUHlfTFRPIiA9ICd0cnVlJyA7IHRoZW4KICAgY2FzZSAkQ0MgaW4KICAgICAqY2xhbmcqKQotICAgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93Ci0gICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICAgIERhcndpbiopCisgICAgICAgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93CisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAgICAgKmdjYyopCiAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCiAgICAgICAgIERhcndpbiopCi0gICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgogICAgICAgICAgIDs7CiAgICAgICAgICopCiAgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1mdXNlLWxpbmtlci1wbHVnaW4gLWZmYXQtbHRvLW9iamVjdHMgLWZsdG8tcGFydGl0aW9uPW5vbmUiCkBAIC0xNDYxLDYgKzE1MDUsMjggQEAKICMgdHdlYWsgQkFTRUNGTEFHUyBiYXNlZCBvbiBjb21waWxlciBhbmQgcGxhdGZvcm0KIGNhc2UgJEdDQyBpbgogeWVzKQorICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1zdGQ9Yzk5IgorCisgICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2V4dHJhKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdleHRyYSAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZXh0cmFfd2FybmluZ3MsCisgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICBbCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2V4dHJhX3dhcm5pbmdzPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2V4dHJhX3dhcm5pbmdzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2V4dHJhX3dhcm5pbmdzKQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZXh0cmFfd2FybmluZ3MgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2V4dHJhIgorICAgIGZpCisKICAgICAjIFB5dGhvbiBkb2Vzbid0IHZpb2xhdGUgQzk5IGFsaWFzaW5nIHJ1bGVzLCBidXQgb2xkZXIgdmVyc2lvbnMgb2YKICAgICAjIEdDQyBwcm9kdWNlIHdhcm5pbmdzIGZvciBsZWdhbCBQeXRob24gY29kZS4gIEVuYWJsZQogICAgICMgLWZuby1zdHJpY3QtYWxpYXNpbmcgb24gdmVyc2lvbnMgb2YgR0NDIHRoYXQgc3VwcG9ydCBidXQgcHJvZHVjZQpAQCAtMTUyNSwyOCArMTU5MSw0NyBAQAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcmVzdWx0IgogICAgIGZpCiAKLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50KQorICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCBwYXJhbWV0ZXIgd2FybmluZykKICAgICAgYWNfc2F2ZV9jYz0iJENDIgotICAgICBDQz0iJENDIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgotICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nLAorICAgICBDQz0iJENDIC1XdW51c2VkLXBhcmFtZXRlciAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcsCiAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCiAgICAgICAgICBbCi0JICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz15ZXMKLQkgXSxbCi0gICAgICAgICAgIGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nPW5vCi0JIF0pKQotICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9eWVzCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9bm8KKyAgICAgICAgIF0pKQogICAgICBDQz0iJGFjX3NhdmVfY2MiCi0gICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcpCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcpCiAKLSAgICBpZiB0ZXN0ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyA9IHllcworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nID0geWVzCiAgICAgdGhlbgotICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1wYXJhbWV0ZXIiCisgICAgZmkKKworICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmcpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XZXJyb3IiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9bm8KKyAgICAgICAgIF0pKQorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycykKKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgogICAgIGZpCiAKICAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nKQpAQCAtMTk0MSw3ICsyMDI2LDcgQEAKIEFDX0NIRUNLX0hFQURFUlMoYXNtL3R5cGVzLmggY29uaW8uaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCiBpZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAotc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKK3NjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCiB1bmlzdGQuaCB1dGltZS5oIFwKIHBvbGwuaCBzeXMvZGV2cG9sbC5oIHN5cy9lcG9sbC5oIHN5cy9wb2xsLmggXAogc3lzL2F1ZGlvaW8uaCBzeXMveGF0dHIuaCBzeXMvYnNkdHR5Lmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBcCkBAIC0xOTUwLDExICsyMDM1LDE4IEBACiBzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCiBzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKIGxpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKK2xpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCiBzeXMvZW5kaWFuLmgpCiBBQ19IRUFERVJfRElSRU5UCiBBQ19IRUFERVJfTUFKT1IKIAorIyBibHVldG9vdGgvYmx1ZXRvb3RoLmggaGFzIGJlZW4ga25vd24gdG8gbm90IGNvbXBpbGUgd2l0aCAtc3RkPWM5OS4KKyMgaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUubGludXguYmx1ZXoua2VybmVsLzIyMjk0CitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1zdGQ9Yzk5ICRDRkxBR1MiCitBQ19DSEVDS19IRUFERVJTKGJsdWV0b290aC9ibHVldG9vdGguaCkKK0NGTEFHUz0kU0FWRV9DRkxBR1MKKwogIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KIEFDX0NIRUNLX0hFQURFUlMoW25ldC9pZi5oXSwgW10sIFtdLAogWyNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjA0OCw2ICsyMTQwLDExIEBACiAgIHVzZV9sZnM9bm8KIGZpCiAKKyMgRG9uJ3QgdXNlIGxhcmdlZmlsZSBzdXBwb3J0IGZvciBHTlUvSHVyZAorY2FzZSAkYWNfc3lzX3N5c3RlbSBpbiBHTlUqKQorICB1c2VfbGZzPW5vCitlc2FjCisKIGlmIHRlc3QgIiR1c2VfbGZzIiA9ICJ5ZXMiOyB0aGVuCiAjIFR3byBkZWZpbmVzIG5lZWRlZCB0byBlbmFibGUgbGFyZ2VmaWxlIHN1cHBvcnQgb24gdmFyaW91cyBwbGF0Zm9ybXMKICMgVGhlc2UgbWF5IGFmZmVjdCBzb21lIHR5cGVkZWZzCkBAIC0yMDc4LDI5ICsyMTc1LDYgQEAKIEFDX1RZUEVfU0laRV9UCiBBQ19UWVBFX1VJRF9UCiAKLSMgVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBjaGVja3MgZm9yIGVhY2ggb2YgdGhlIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMgd2UKLSMgbmVlZC4gIEZpcnN0IHdlIGNoZWNrIHdoZXRoZXIgdGhlIHR5cGUgaXMgYXZhaWxhYmxlIHVzaW5nIHRoZSB1c3VhbAotIyBBQ19DSEVDS19UWVBFIG1hY3JvIHdpdGggdGhlIGRlZmF1bHQgaW5jbHVkZXMgKHdoaWNoIGluY2x1ZGVzIDxpbnR0eXBlcy5oPgotIyBhbmQgPHN0ZGludC5oPiB3aGVyZSBhdmFpbGFibGUpLiAgV2UgdGhlbiBhbHNvIHVzZSB0aGUgc3BlY2lhbCB0eXBlIGNoZWNrcyBvZgotIyB0aGUgZm9ybSBBQ19UWVBFX1VJTlQzMl9ULCB3aGljaCBpbiB0aGUgY2FzZSB0aGF0IHVpbnQzMl90IGlzIG5vdCBhdmFpbGFibGUKLSMgZGlyZWN0bHksICNkZWZpbmUncyB1aW50MzJfdCB0byBiZSBhIHN1aXRhYmxlIHR5cGUuCi0KLUFDX0NIRUNLX1RZUEUodWludDMyX3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDMyX3QuXSksLCkKLUFDX1RZUEVfVUlOVDMyX1QKLQotQUNfQ0hFQ0tfVFlQRSh1aW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfVUlOVDY0X1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50NjRfdC5dKSwsKQotQUNfVFlQRV9VSU5UNjRfVAotCi1BQ19DSEVDS19UWVBFKGludDMyX3QsCi0gIEFDX0RFRklORShIQVZFX0lOVDMyX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX0lOVDMyX1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQ2NF90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50NjRfdC5dKSwsKQotQUNfVFlQRV9JTlQ2NF9UCi0KIEFDX0NIRUNLX1RZUEUoc3NpemVfdCwKICAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHNzaXplX3RdKSwsKQogQUNfQ0hFQ0tfVFlQRShfX3VpbnQxMjhfdCwKQEAgLTIxMTAsNiArMjE4NCw3IEBACiAjIEFOU0kgQyByZXF1aXJlcyBzaXplb2YoY2hhcikgPT0gMSwgc28gbm8gbmVlZCB0byBjaGVjayBpdAogQUNfQ0hFQ0tfU0laRU9GKGludCwgNCkKIEFDX0NIRUNLX1NJWkVPRihsb25nLCA0KQorQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZywgOCkKIEFDX0NIRUNLX1NJWkVPRih2b2lkICosIDQpCiBBQ19DSEVDS19TSVpFT0Yoc2hvcnQsIDIpCiBBQ19DSEVDS19TSVpFT0YoZmxvYXQsIDQpCkBAIC0yMTE3LDE3ICsyMTkyLDcgQEAKIEFDX0NIRUNLX1NJWkVPRihmcG9zX3QsIDQpCiBBQ19DSEVDS19TSVpFT0Yoc2l6ZV90LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHBpZF90LCA0KQotCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIGxvbmcgbG9uZyBzdXBwb3J0KQotaGF2ZV9sb25nX2xvbmc9bm8KLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tsb25nIGxvbmcgeDsgeCA9IChsb25nIGxvbmcpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfTE9OR19MT05HLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLl0pCi0gIGhhdmVfbG9uZ19sb25nPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfbG9uZ19sb25nKQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcyA7IHRoZW4KLUFDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCi1maQorQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGRvdWJsZSBzdXBwb3J0KQogaGF2ZV9sb25nX2RvdWJsZT1ubwpAQCAtMjE0MCwyNiArMjIwNSw3IEBACiBBQ19DSEVDS19TSVpFT0YobG9uZyBkb3VibGUsIDE2KQogZmkKIAotCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIF9Cb29sIHN1cHBvcnQpCi1oYXZlX2M5OV9ib29sPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbX0Jvb2wgeDsgeCA9IChfQm9vbCkwO11dKV0sWwotICBBQ19ERUZJTkUoSEFWRV9DOTlfQk9PTCwgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLl0pCi0gIGhhdmVfYzk5X2Jvb2w9eWVzCi1dLFtdKQotQUNfTVNHX1JFU1VMVCgkaGF2ZV9jOTlfYm9vbCkKLWlmIHRlc3QgIiRoYXZlX2M5OV9ib29sIiA9IHllcyA7IHRoZW4KIEFDX0NIRUNLX1NJWkVPRihfQm9vbCwgMSkKLWZpCi0KLUFDX0NIRUNLX1RZUEVTKHVpbnRwdHJfdCwKLSAgIFtBQ19DSEVDS19TSVpFT0YodWludHB0cl90LCA0KV0sCi0gICBbXSwgWyNpZmRlZiBIQVZFX1NURElOVF9ICi0gICAgICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAgICAgICAgI2VuZGlmCi0gICAgICAgICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKLSAgICAgICAgI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gICAgICAgICNlbmRpZl0pCiAKIEFDX0NIRUNLX1NJWkVPRihvZmZfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yMTY4LDggKzIyMTQsNiBAQAogXSkKIAogQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdG8gZW5hYmxlIGxhcmdlIGZpbGUgc3VwcG9ydCkKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KIGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfb2ZmX3QiIC1ndCAiJGFjX2N2X3NpemVvZl9sb25nIiAtYSBcCiAJIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAtZ2UgIiRhY19jdl9zaXplb2Zfb2ZmX3QiOyB0aGVuCiAgIEFDX0RFRklORShIQVZFX0xBUkdFRklMRV9TVVBQT1JULCAxLApAQCAtMjE4MSw5ICsyMjI1LDYgQEAKIGVsc2UKICAgQUNfTVNHX1JFU1VMVChubykKIGZpCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCi1maQogCiBBQ19DSEVDS19TSVpFT0YodGltZV90LCBbXSwgWwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKQEAgLTI1MDYsNiArMjU0Nyw3IEBACiAJCSB0aGVuIENDU0hBUkVEPSItZlBJQyI7CiAJCSBlbHNlIENDU0hBUkVEPSIreiI7CiAJCSBmaTs7CisJTGludXgtYW5kcm9pZCopIDs7CiAJTGludXgqfEdOVSopIENDU0hBUkVEPSItZlBJQyI7OwogCUJTRC9PUyovNCopIENDU0hBUkVEPSItZnBpYyI7OwogCUZyZWVCU0QqfE5ldEJTRCp8T3BlbkJTRCp8RHJhZ29uRmx5KikgQ0NTSEFSRUQ9Ii1mUElDIjs7CkBAIC0yNTM3LDYgKzI1NzksNyBAQAogCSAgICBMSU5LRk9SU0hBUkVEPSItV2wsLUUgLVdsLCtzIjs7CiAjCSAgICBMSU5LRk9SU0hBUkVEPSItV2wsLUUgLVdsLCtzIC1XbCwrYlwkKEJJTkxJQkRFU1QpL2xpYi1keW5sb2FkIjs7CiAJQlNEL09TLzQqKSBMSU5LRk9SU0hBUkVEPSItWGxpbmtlciAtZXhwb3J0LWR5bmFtaWMiOzsKKwlMaW51eC1hbmRyb2lkKikgTElOS0ZPUlNIQVJFRD0iLXBpZSAtWGxpbmtlciAtZXhwb3J0LWR5bmFtaWMiOzsKIAlMaW51eCp8R05VKikgTElOS0ZPUlNIQVJFRD0iLVhsaW5rZXIgLWV4cG9ydC1keW5hbWljIjs7CiAJIyAtdSBsaWJzeXNfcyBwdWxscyBpbiBhbGwgc3ltYm9scyBpbiBsaWJzeXMKIAlEYXJ3aW4vKikKQEAgLTI3NDIsOSArMjc4NSwyNSBAQAogIyBDaGVjayBmb3IgdXNlIG9mIHRoZSBzeXN0ZW0gbGliZmZpIGxpYnJhcnkKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXN5c3RlbS1mZmkpCiBBQ19BUkdfV0lUSChzeXN0ZW1fZmZpLAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXN0ZW0tZmZpXSwgW2J1aWxkIF9jdHlwZXMgbW9kdWxlIHVzaW5nIGFuIGluc3RhbGxlZCBmZmkgbGlicmFyeV0pLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbd2l0aF9zeXN0ZW1fZmZpPSJubyJdKQorICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXN0ZW0tZmZpXSwgW2J1aWxkIF9jdHlwZXMgbW9kdWxlIHVzaW5nIGFuIGluc3RhbGxlZCBmZmkgbGlicmFyeV0pLCwsKQorCitjYXNlICIkd2l0aF9zeXN0ZW1fZmZpIiBpbgorICAgICIiKQorICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICAgICAgICBEYXJ3aW4pCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9InllcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgeWVzfG5vKQorICAgICAgICA7OworICAgICopCisgICAgICAgIEFDX01TR19FUlJPUihbLS13aXRoLXN5c3RlbS1mZmkgYWNjZXB0cyBubyBhcmd1bWVudHNdKQorICAgICAgICA7OworZXNhYwogCiBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fZmZpIiA9ICJ5ZXMiICYmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgogICAgIExJQkZGSV9JTkNMVURFRElSPSJgIiRQS0dfQ09ORklHIiBsaWJmZmkgLS1jZmxhZ3Mtb25seS1JIDI+L2Rldi9udWxsIHwgc2VkIC1lICdzL14tSS8vO3MvICokLy8nYCIKQEAgLTI4MTksMjYgKzI4NzgsNiBAQAogZmldKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9kYm1saWJvcmRlcikKIAotIyBEZXRlcm1pbmUgaWYgc2lnbmFsbW9kdWxlIHNob3VsZCBiZSB1c2VkLgotQUNfU1VCU1QoVVNFX1NJR05BTF9NT0RVTEUpCi1BQ19TVUJTVChTSUdOQUxfT0JKUykKLUFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUpCi1BQ19BUkdfV0lUSChzaWduYWwtbW9kdWxlLAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zaWduYWwtbW9kdWxlXSwgW2Rpc2FibGUvZW5hYmxlIHNpZ25hbCBtb2R1bGVdKSkKLQotaWYgdGVzdCAteiAiJHdpdGhfc2lnbmFsX21vZHVsZSIKLXRoZW4gd2l0aF9zaWduYWxfbW9kdWxlPSJ5ZXMiCi1maQotQUNfTVNHX1JFU1VMVCgkd2l0aF9zaWduYWxfbW9kdWxlKQotCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZX0iID0gInllcyI7IHRoZW4KLQlVU0VfU0lHTkFMX01PRFVMRT0iIgotCVNJR05BTF9PQkpTPSIiCi1lbHNlCi0JVVNFX1NJR05BTF9NT0RVTEU9IiMiCi0JU0lHTkFMX09CSlM9IlBhcnNlci9pbnRyY2hlY2subyBQeXRob24vc2lnY2hlY2subyIKLWZpCi0KICMgVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIFNldHVwLmNvbmZpZwogQUNfU1VCU1QoVVNFX1RIUkVBRF9NT0RVTEUpCiBVU0VfVEhSRUFEX01PRFVMRT0iIgpAQCAtMzIwOCwxNiArMzI0Nyw2IEBACiAgIEFDX01TR19SRVNVTFQobm8pCiBdKQogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIE9TWCAxMC41IFNESyBvciBsYXRlcikKLUFDX0NPTVBJTEVfSUZFTFNFKFsKLSAgQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD5dXSwgW1tGU0lPUmVmTnVtIGZSZWYgPSAwXV0pCi1dLFsKLSAgQUNfREVGSU5FKEhBVkVfT1NYMTA1X1NESywgMSwgW0RlZmluZSBpZiBjb21waWxpbmcgdXNpbmcgTWFjT1MgWCAxMC41IFNESyBvciBsYXRlci5dKQotICBBQ19NU0dfUkVTVUxUKHllcykKLV0sWwotICBBQ19NU0dfUkVTVUxUKG5vKQotXSkKLQogIyBDaGVjayBmb3IgLS13aXRoLWRvYy1zdHJpbmdzCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kb2Mtc3RyaW5ncykKIEFDX0FSR19XSVRIKGRvYy1zdHJpbmdzLApAQCAtMzIzMywxOSArMzI2Miw2IEBACiBmaQogQUNfTVNHX1JFU1VMVCgkd2l0aF9kb2Nfc3RyaW5ncykKIAotIyBDaGVjayBpZiBldmFsIGxvb3Agc2hvdWxkIHVzZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxpbmcKLUFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXRzYykKLUFDX0FSR19XSVRIKHRzYywKLQkgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aChvdXQpLXRzY10sW2VuYWJsZS9kaXNhYmxlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGVdKSxbCi1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4KLSAgQUNfREVGSU5FKFdJVEhfVFNDLCAxLAotICAgIFtEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyXSkKLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLWVsc2UgQUNfTVNHX1JFU1VMVChubykKLWZpXSwKLVtBQ19NU0dfUkVTVUxUKG5vKV0pCi0KICMgQ2hlY2sgZm9yIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2Mgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtcHltYWxsb2MpCiBBQ19BUkdfV0lUSChweW1hbGxvYywKQEAgLTMyNzcsNiArMzI5Myw0NyBAQAogICAgIE9QVD0iLUREWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQ9MSAkT1BUIgogZmkKIAorIyBDaGVjayBmb3IgRFRyYWNlIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWR0cmFjZSkKK0FDX0FSR19XSVRIKGR0cmFjZSwKKyAgQUNfSEVMUF9TVFJJTkcoLS13aXRoKG91dCktZHRyYWNlLCBbZGlzYWJsZS9lbmFibGUgRFRyYWNlIHN1cHBvcnRdKSwsCisgIHdpdGhfZHRyYWNlPW5vKQorQUNfTVNHX1JFU1VMVCgkd2l0aF9kdHJhY2UpCisKK0FDX1NVQlNUKERUUkFDRSkKK0FDX1NVQlNUKERGTEFHUykKK0FDX1NVQlNUKERUUkFDRV9IRUFERVJTKQorQUNfU1VCU1QoRFRSQUNFX09CSlMpCitEVFJBQ0U9CitERkxBR1M9CitEVFJBQ0VfSEVBREVSUz0KK0RUUkFDRV9PQkpTPQorCitpZiB0ZXN0ICIkd2l0aF9kdHJhY2UiID0gInllcyIKK3RoZW4KKyAgICBBQ19QQVRIX1BST0coRFRSQUNFLCBbZHRyYWNlXSwgW25vdCBmb3VuZF0pCisgICAgaWYgdGVzdCAiJERUUkFDRSIgPSAibm90IGZvdW5kIjsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoW2R0cmFjZSBjb21tYW5kIG5vdCBmb3VuZCBvbiBcJFBBVEhdKQorICAgIGZpCisgICAgQUNfREVGSU5FKFdJVEhfRFRSQUNFLCAxLCBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnRdKQorICAgIERUUkFDRV9IRUFERVJTPSJJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oIgorCisgICAgIyBPbiBPUyBYLCBEVHJhY2UgcHJvdmlkZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29tcGlsZWQgYW5kCisgICAgIyBsaW5rZWQgaW50byB0aGUgYmluYXJ5LiBDb3JyZXNwb25kaW5nbHksIGR0cmFjZSgxKSBpcyBtaXNzaW5nIHRoZSBFTEYKKyAgICAjIGdlbmVyYXRpb24gZmxhZyAnLUcnLiBXZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgdGhpcyBmbGFnLCByYXRoZXIgdGhhbgorICAgICMgaGFyZGNvZGluZyBzdXBwb3J0IGJ5IE9TLCBpbiB0aGUgaW50ZXJlc3Qgb2Ygcm9idXN0bmVzcy4KKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZ10sCisgICAgICAgIFthY19jdl9kdHJhY2VfbGlua10sIFtkbmwKKyAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPW5vCisgICAgICAgICAgICBlY2hvICdCRUdJTicgPiBjb25mdGVzdC5kCisgICAgICAgICAgICAiJERUUkFDRSIgLUcgLXMgY29uZnRlc3QuZCAtbyBjb25mdGVzdC5vID4gL2Rldi9udWxsIDI+JjEgJiYgXAorICAgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPXllcworICAgICAgXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZHRyYWNlX2xpbmsiID0gInllcyI7IHRoZW4KKyAgICAgICAgRFRSQUNFX09CSlM9IlB5dGhvbi9weWR0cmFjZS5vIgorICAgIGZpCitmaQorCiAjIC1JJHtETElOQ0xESVJ9IGlzIGFkZGVkIHRvIHRoZSBjb21waWxlIHJ1bGUgZm9yIGltcG9ydGRsLm8KIEFDX1NVQlNUKERMSU5DTERJUikKIERMSU5DTERJUj0uCkBAIC0zMzQxLDggKzMzOTgsNyBAQAogIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIGdldGVudHJvcHkgXAogIGdldGdyb3VwbGlzdCBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCiAgZ2V0cHJpb3JpdHkgZ2V0cmVzdWlkIGdldHJlc2dpZCBnZXRwd2VudCBnZXRzcG5hbSBnZXRzcGVudCBnZXRzaWQgZ2V0d2QgXAotIGlmX25hbWVpbmRleCBcCi0gaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxvY2tmIGxpbmthdCBsc3RhdCBsdXRpbWVzIG1tYXAgXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKICBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAogIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKICBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCkBAIC0zNjY5LDYgKzM3MjUsMTIgQEAKICAgICBdKQogXSkKIAorQUNfQ0hFQ0tfRlVOQ1MoY2xvY2tfc2V0dGltZSwgW10sIFsKKyAgICBBQ19DSEVDS19MSUIocnQsIGNsb2NrX3NldHRpbWUsIFsKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfU0VUVElNRSwgMSkKKyAgICBdKQorXSkKKwogQUNfTVNHX0NIRUNLSU5HKGZvciBtYWpvciwgbWlub3IsIGFuZCBtYWtlZGV2KQogQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwogI2lmIGRlZmluZWQoTUFKT1JfSU5fTUtERVYpCkBAIC0zNjg4LDYgKzM3NTAsNDAgQEAKICAgQUNfTVNHX1JFU1VMVChubykKIF0pCiAKKyMgT24gQW5kcm9pZCBBUEkgbGV2ZWwgMjQgd2l0aCBhbmRyb2lkLW5kay1yMTMsIGlmX25hbWVpbmRleCgpIGlzIGF2YWlsYWJsZSwKKyMgYnV0IHRoZSBpZl9uYW1laW5kZXggc3RydWN0dXJlIGlzIG5vdCBkZWZpbmVkLgorQUNfTVNHX0NIRUNLSU5HKGZvciBpZl9uYW1laW5kZXgpCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjIGluY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCitdXSwgW1tzdHJ1Y3QgaWZfbmFtZWluZGV4ICpuaSA9IGlmX25hbWVpbmRleCgpOyBpbnQgeCA9IG5pWzBdLmlmX2luZGV4O11dKV0sCisgIFtBQ19ERUZJTkUoSEFWRV9JRl9OQU1FSU5ERVgsIDEsIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAnaWZfbmFtZWluZGV4JyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubykKK10pCisKKyMgSXNzdWUgIzI4NzYyOiBsb2NrZigpIGlzIGF2YWlsYWJsZSBvbiBBbmRyb2lkIEFQSSBsZXZlbCAyNCwgYnV0IHRoZSBGX0xPQ0sKKyMgbWFjcm8gaXMgbm90IGRlZmluZWQgaW4gYW5kcm9pZC1uZGstcjEzLgorQUNfTVNHX0NIRUNLSU5HKGZvciBsb2NrZikKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8dW5pc3RkLmg+IF1dLFtbbG9ja2YoMCwgRl9MT0NLLCAwKTtdXSldLAorICBbQUNfREVGSU5FKEhBVkVfTE9DS0YsIDEsIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAnbG9ja2YnIGZ1bmN0aW9uIGFuZCB0aGUgRl9MT0NLIG1hY3JvLikKKyAgIEFDX01TR19SRVNVTFQoeWVzKV0sCisgIFtBQ19NU0dfUkVTVUxUKG5vKQorXSkKKwogIyBPbiBPU0YvMSBWNS4xLCBnZXRhZGRyaW5mbyBpcyBhdmFpbGFibGUsIGJ1dCBhIGRlZmluZQogIyBmb3IgW25vXWdldGFkZHJpbmZvIGluIG5ldGRiLmguCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGdldGFkZHJpbmZvKQpAQCAtMzgzMCw2ICszOTI2LDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5NzgsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC0zOTUwLDIwICs0MDYzLDYgQEAKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQogCi12YV9saXN0X2lzX2FycmF5PW5vCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5KQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi1dXSwgW1t2YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjtdXSldLFtdLFsKLSBBQ19ERUZJTkUoVkFfTElTVF9JU19BUlJBWSwgMSwgW0RlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kXSkKLSB2YV9saXN0X2lzX2FycmF5PXllcwotXSkKLUFDX01TR19SRVNVTFQoJHZhX2xpc3RfaXNfYXJyYXkpCi0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogQUhfVEVNUExBVEUoSEFWRV9HRVRIT1NUQllOQU1FX1IsCiAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBzb21lIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCldKQpAQCAtNDQwNiw2ICs0NTA1LDggQEAKICAgW2RlZmluZSB0byAxIGlmIHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi5dKQogZmkKIAorQUNfQ0hFQ0tfREVDTFMoW1JUTERfTEFaWSwgUlRMRF9OT1csIFJUTERfR0xPQkFMLCBSVExEX0xPQ0FMLCBSVExEX05PREVMRVRFLCBSVExEX05PTE9BRCwgUlRMRF9ERUVQQklORF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8ZGxmY24uaD5dXSkKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIEFDX01TR19DSEVDS0lORyhbZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3NdKQogQUNfQVJHX0VOQUJMRShiaWctZGlnaXRzLApAQCAtNDUyNCw3ICs0NjI1LDExIEBACiAKIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgogQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKLUxJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgoraWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorZWxzZQorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorZmkKIEFDX1NVQlNUKExJQlBMKQogCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CkBAIC00ODI3LDcgKzQ5MzIsOSBAQAogCiAjIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitmaQogCiBBQ19DSEVDS19IRUFERVJTKGN1cnNlcy5oIG5jdXJzZXMuaCkKIApAQCAtNDkyMiw3MCArNTAyOSw2IEBACiAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKGZvciAlbGxkIGFuZCAlbGx1IHByaW50ZigpIGZvcm1hdCBzdXBwb3J0KQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0LAotICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW1sKLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0gIF1dXSldLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgICAgIF1dLCBbWwotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLSAgICAgIF1dKV0sCi0gICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0gICAgKQotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpXSkKLSAgKQotICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQpCi1maQotCi1pZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA9IHllcwotdGhlbgotICBBQ19ERUZJTkUoUFlfRk9STUFUX0xPTkdfTE9ORywgImxsIiwKLSAgW0RlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBsb25nIGxvbmcgdHlwZV0pCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTUzNzgsNyArNTQyMSw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0tZW5hYmxlLW9wdGltaXphdGlvbnMiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDM5Y2NmNTMuLmIxMGM1N2YgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsNiArMTIsOSBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKKy8qIFRoZSBBbmRyb2lkIEFQSSBsZXZlbC4gKi8KKyN1bmRlZiBBTkRST0lEX0FQSV9MRVZFTAorCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTEwNCw5ICsxMDcsNiBAQAogLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLwogI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCi0jdW5kZWYgSEFWRV9DOTlfQk9PTAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2NoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0hGTEFHUwogCkBAIC0xMjUsNiArMTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfc2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19TRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2Nyw2ICsxNzAsMzQgQEAKICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTTkFOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9ERUVQQklORCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dMT0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MQVpZJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MT0NBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PREVMRVRFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTk9MT0FEJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PVycsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9XCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LgogICAgKi8KICN1bmRlZiBIQVZFX0RFQ0xfVFpOQU1FCkBAIC00NDEsNyArNDcyLDcgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aWVlZWZwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSUVFRUZQX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpZl9uYW1laW5kZXgnIGZ1bmN0aW9uLiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdpZl9uYW1laW5kZXgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSUZfTkFNRUlOREVYCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2luZXRfYXRvbicgZnVuY3Rpb24uICovCkBAIC00NTMsMTIgKzQ4NCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCkBAIC01NDksNyArNTc0LDcgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGlwYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX1RJUENfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2tmJyBmdW5jdGlvbi4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAnbG9ja2YnIGZ1bmN0aW9uIGFuZCB0aGUgRl9MT0NLIG1hY3JvLiAqLwogI3VuZGVmIEhBVkVfTE9DS0YKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2cxcCcgZnVuY3Rpb24uICovCkBAIC01NjEsOSArNTg2LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLiAqLwotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIApAQCAtNjMwLDkgKzY1Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfT1BFTlBUWQogCi0vKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuICovCi0jdW5kZWYgSEFWRV9PU1gxMDVfU0RLCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUEFUSENPTkYKIApAQCAtODYxLDYgKzg4MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKKy8qIHN0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKSAqLworI3VuZGVmIEhBVkVfU09DS0FERFJfQUxHCisKIC8qIERlZmluZSBpZiBzb2NrYWRkciBoYXMgc2FfbGVuIG1lbWJlciAqLwogI3VuZGVmIEhBVkVfU09DS0FERFJfU0FfTEVOCiAKQEAgLTkxNiw2ICs5MzgsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3Ryb3B0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NUUk9QVFNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiBgcHdfZ2Vjb3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHB3X3Bhc3N3ZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBwYXNzd2QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QKKwogLyogRGVmaW5lIHRvIDEgaWYgYHN0X2JpcnRodGltZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogCkBAIC0xMTA2LDE1ICsxMTM0LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8KICN1bmRlZiBIQVZFX1VDUzRfVENMCiAKLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludHB0cl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOQU1FCiAKQEAgLTEyMjUsOSArMTI0NCw2IEBACiAvKiBEZWZpbmUgYXMgdGhlIHByZWZlcnJlZCBzaXplIGluIGJpdHMgb2YgbG9uZyBkaWdpdHMgKi8KICN1bmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAogCi0vKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGUgKi8KLSN1bmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCkBAIC0xMzQ4LDkgKzEzNjQsNiBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBzb21lIGtpbmQgKi8KLSN1bmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovCiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUgogCkBAIC0xMzYwLDYgKzEzNzMsOSBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IGRvY3VtZW50YXRpb24gc3RyaW5ncyBpbiBleHRlbnNpb24gbW9kdWxlcyAqLwogI3VuZGVmIFdJVEhfRE9DX1NUUklOR1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnQgKi8KKyN1bmRlZiBXSVRIX0RUUkFDRQorCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBuZXctc3R5bGUgKE9wZW5zdGVwLCBSaGFwc29keSwgTWFjT1MpIGR5bmFtaWMKICAgIGxpbmtlciAoZHlsZCkgaW5zdGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuCiAgICBEeWxkIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGZyYW1ld29ya3MuICovCkBAIC0xMzc4LDkgKzEzOTQsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gcnVkaW1lbnRhcnkgdGhyZWFkIHN1cHBvcnQgKi8KICN1bmRlZiBXSVRIX1RIUkVBRAogCi0vKiBEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyICovCi0jdW5kZWYgV0lUSF9UU0MKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHB5bWFsbG9jIHRvIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCAqLwogI3VuZGVmIFdJVEhfVkFMR1JJTkQKIApAQCAtMTQ0NSwxNiArMTQ1OCw2IEBACiAvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovCiAjdW5kZWYgX1JFRU5UUkFOVAogCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UMzJfVAotCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzICovCiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogCkBAIC0xNDg0LDE0ICsxNDg3LDYgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIGludDY0X3QKLQogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG1vZGVfdAogCkBAIC0xNTEzLDE0ICsxNTA4LDYgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLwogI3VuZGVmIHVpZF90CiAKLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAqLwogI3VuZGVmIHZvbGF0aWxlCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNDBmOGJmMi4uZDIxODcyMiAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgIGlmIG5vdCBsaXN0OgogICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgaWYgbGVuKGxpc3QpID4gMToKLSAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIlbW9kdWxlKQorICAgICAgICBsb2cuaW5mbygiV0FSTklORzogbXVsdGlwbGUgY29waWVzIG9mICVzIGZvdW5kIiwgbW9kdWxlKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGlzdFswXSwgbW9kdWxlKQogCiBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CkBAIC01MzIsOCArNTMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiByZXZlcnNlZChvcHRpb25zLmRpcnMpOgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KGRpcl9saXN0LCBkaXJlY3RvcnkpCiAKLSAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgorICAgICAgICBpZiAobm90IGNyb3NzX2NvbXBpbGluZyBhbmQKKyAgICAgICAgICAgICAgICBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkgIT0gJy91c3InIGFuZAorICAgICAgICAgICAgICAgIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpKToKICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCiAgICAgICAgICAgICAjIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgdGhhbgpAQCAtNjUxLDkgKzY1MiwxMiBAQAogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndW5pY29kZWRhdGEnLCBbJ3VuaWNvZGVkYXRhLmMnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Wyd1bmljb2RlZGF0YV9kYi5oJywgJ3VuaWNvZGVuYW1lX2RiLmgnXSkgKQogICAgICAgICAjIF9vcGNvZGUgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19vcGNvZGUnLCBbJ19vcGNvZGUuYyddKSApCisgICAgICAgICMgYXN5bmNpbyBzcGVlZHVwcworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfYXN5bmNpbyIsIFsiX2FzeW5jaW9tb2R1bGUuYyJdKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHdpdGggc29tZSBVTklYIGRlcGVuZGVuY2llcyAtLSBvbiBieSBkZWZhdWx0OgogICAgICAgICAjIChJZiB5b3UgaGF2ZSBhIHJlYWxseSBiYWNrd2FyZCBVTklYLCBzZWxlY3QgYW5kIHNvY2tldCBtYXkgbm90IGJlCkBAIC04MzcsNyArODQxLDcgQEAKICAgICAgICAgIyBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIE9wZW5TU0wgd2UgaGF2ZQogICAgICAgICBvcGVuc3NsX3ZlciA9IDAKICAgICAgICAgb3BlbnNzbF92ZXJfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKKyAgICAgICAgICAgIHInXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQogCiAgICAgICAgICMgbG9vayBmb3IgdGhlIG9wZW5zc2wgdmVyc2lvbiBoZWFkZXIgb24gdGhlIGNvbXBpbGVyIHNlYXJjaCBwYXRoLgogICAgICAgICBvcGVuc3Nsdl9oID0gZmluZF9maWxlKCdvcGVuc3NsL29wZW5zc2x2LmgnLCBbXSwKQEAgLTg4OCw2ICs4OTIsMjkgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTEnLCBbJ3NoYTFtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQogCisgICAgICAgIGJsYWtlMl9kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2ltcGwvKicpKQorICAgICAgICBibGFrZTJfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisKKyAgICAgICAgYmxha2UyX21hY3JvcyA9IFtdCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmcgYW5kIG9zLnVuYW1lKCkubWFjaGluZSA9PSAieDg2XzY0IjoKKyAgICAgICAgICAgICMgRXZlcnkgeDg2XzY0IG1hY2hpbmUgaGFzIGF0IGxlYXN0IFNTRTIuCisgICAgICAgICAgICBibGFrZTJfbWFjcm9zLmFwcGVuZCgoJ0JMQUtFMl9VU0VfU1NFJywgJzEnKSkKKworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYmxha2UyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19ibGFrZTIvYmxha2UybW9kdWxlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJiX2ltcGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMnNfaW1wbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1ibGFrZTJfbWFjcm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Ymxha2UyX2RlcHMpICkKKworICAgICAgICBzaGEzX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fc2hhMy9rY3AvKicpKQorICAgICAgICBzaGEzX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfc2hhMy9zaGEzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTMyMyw3ICsxMzUwLDggQEAKICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbCcKICAgICAgICAgaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXN3JzoKICAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ0hBVkVfTkNVUlNFU1cnLCAnMScpKQotICAgICAgICAgICAgY3Vyc2VzX2luY2x1ZGVzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL25jdXJzZXN3JykKKyAgICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgY3Vyc2VzX2luY2x1ZGVzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL25jdXJzZXN3JykKICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCiAgICAgICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsdycKQEAgLTE2MDQsNyArMTYzMiw3IEBACiAjIyAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigneHgnLCBbJ3h4bW9kdWxlLmMnXSkKICMjICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCiAKLSAgICAgICAgaWYgJ2QnIG5vdCBpbiBzeXMuYWJpZmxhZ3M6CisgICAgICAgIGlmICdkJyBub3QgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdBQklGTEFHUycpOgogICAgICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eGxpbWl0ZWQnLCBbJ3h4bGltaXRlZC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDUwMDAwJyldKQogICAgICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCkBAIC0xNzAwLDcgKzE3MjgsNyBAQAogICAgICAgICAjIEFsbCBleGlzdGluZyBmcmFtZXdvcmsgYnVpbGRzIG9mIFRjbC9UayBkb24ndCBzdXBwb3J0IDY0LWJpdAogICAgICAgICAjIGFyY2hpdGVjdHVyZXMuCiAgICAgICAgIGNmbGFncyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0NGTEFHUycpWzBdCi0gICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXHcrKScsIGNmbGFncykKKyAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXHcrKScsIGNmbGFncykKIAogICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3RrLmFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKQEAgLTE4ODcsNiArMTkxNSw5IEBACiAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAorICAgICAgICAgICAgcHJpbnQoJ3dhcm5pbmc6IGJ1aWxkaW5nIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgaXMnCisgICAgICAgICAgICAgICAgICAnIGRlcHJlY2F0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gIEl0IHdpbGwgbm90IGJlJworICAgICAgICAgICAgICAgICAgJyBkaXN0cmlidXRlZCB3aXRoIFB5dGhvbiAzLjcnKQogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQogICAgICAgICAgICAgZmZpX2J1aWxkZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2xpYmZmaScpCiAgICAgICAgICAgICBmZmlfc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmNkaXIsICdNb2R1bGVzJywKQEAgLTE5ODMsMTMgKzIwMTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoW2V4dCwgZXh0X3Rlc3RdKQogCi0gICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1mZmknIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIE9TIFggMTAuNSBjb21lcyB3aXRoIGxpYmZmaS5keWxpYjsgdGhlIGluY2x1ZGUgZmlsZXMgYXJlCiAgICAgICAgICAgICAjIGluIC91c3IvaW5jbHVkZS9mZmkKICAgICAgICAgICAgIGluY19kaXJzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL2ZmaScpCisgICAgICAgIGVsaWYgJy0td2l0aG91dC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBmZmlfaW5jID0gW3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRkZJX0lOQ0xVREVESVIiKV0KICAgICAgICAgaWYgbm90IGZmaV9pbmMgb3IgZmZpX2luY1swXSA9PSAnJzoKQEAgLTIwMDgsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZmlfd3JhcHBlcl9oJy5mb3JtYXQoZmZpX2gpKQogICAgICAgICBmZmlfbGliID0gTm9uZQogICAgICAgICBpZiBmZmlfaW5jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpX2NvbnZlbmllbmNlJywgJ2ZmaV9waWMnLCAnZmZpJyk6CisgICAgICAgICAgICBmb3IgbGliX25hbWUgaW4gKCdmZmknLCAnZmZpX3BpYycpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBsaWJfbmFtZSkpOgogICAgICAgICAgICAgICAgICAgICBmZmlfbGliID0gbGliX25hbWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNjEsNyArMjA5Myw3IEBACiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mbnQuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2lvLmgnLAotICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaCcsCkBAIC0yMTI3LDE1ICsyMTU5LDYgQEAKICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgnV0lUSE9VVF9USFJFQURTJywgMSkpCiAKLSAgICAgICAgIyBJbmNyZWFzZSB3YXJuaW5nIGxldmVsIGZvciBnY2M6Ci0gICAgICAgIGlmICdnY2MnIGluIGNjOgotICAgICAgICAgICAgY21kID0gKCJlY2hvICcnIHwgJXMgLVdleHRyYSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1FIC0gIgotICAgICAgICAgICAgICAgICAgICI+IC9kZXYvbnVsbCAyPiYxIiAlIGNjKQotICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6Ci0gICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmV4dGVuZChbJy1XZXh0cmEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzJ10pCi0KICAgICAgICAgIyBVbmNvbW1lbnQgZm9yIGV4dHJhIGZ1bmN0aW9uYWxpdHk6CiAgICAgICAgICNkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ0VYVFJBX0ZVTkNUSU9OQUxJVFknLCAxKSkKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uICgKQEAgLTIyMTQsNyArMjIzNyw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIGZ1bGx2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBtaW5vcm9ubHkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdyZW5hbWluZyB7fSB0byB7fScuZm9ybWF0KGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkpCisgICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcgJXMgdG8gJXMnLCBmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgbmV3b3V0ZmlsZXMuYXBwZW5kKG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgaWYgZmlsZW5hbWUgaW4gdXBkYXRlZF9maWxlczoKQEAgLTIyNTYsNyArMjI3OSw3IEBACiAgICAgc2V0dXAoIyBQeVBJIE1ldGFkYXRhIChQRVAgMzAxKQogICAgICAgICAgIG5hbWUgPSAiUHl0aG9uIiwKICAgICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXSwKLSAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVzIiAlIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgIG1haW50YWluZXIgPSAiR3VpZG8gdmFuIFJvc3N1bSBhbmQgdGhlIFB5dGhvbiBjb21tdW5pdHkiLAogICAgICAgICAgIG1haW50YWluZXJfZW1haWwgPSAicHl0aG9uLWRldkBweXRob24ub3JnIiwKICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJBIGhpZ2gtbGV2ZWwgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIiwK